ZGlmZiAtLWdpdCBhL2NsaS9MSUNFTlNFIGIvY2xpL0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDk3MDJiYzAuLjAwMDAwMDAKLS0tIGEvY2xpL0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwyNjYgKzAsMCBAQAotVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgdGhlIGZvbGxvd2luZyBsaWNlbnNlIGFwcGxpZXMgdG8gdGhlCi1maWxlcyB3aXRoaW4gdGhpcyBwcm9qZWN0IHJlcG9zaXRvcnkuCi0KLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLQotTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLXdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotCi0gICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLQotVGhlIHRleHQgb2YgdGhlIExpY2Vuc2UgaXMgcmVwcm9kdWNlZCBiZWxvdy4KLQotVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELAotZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMKLWxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlCi1MaWNlbnNlLgotCi0rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0KLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSB2IDEuMAotCi1USEUgQUNDT01QQU5ZSU5HIFBST0dSQU0gSVMgUFJPVklERUQgVU5ERVIgVEhFIFRFUk1TIE9GIFRISVMKLUVDTElQU0UgUFVCTElDIExJQ0VOU0UgKCJBR1JFRU1FTlQiKS4gQU5ZIFVTRSwgUkVQUk9EVUNUSU9OIE9SCi1ESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gQ09OU1RJVFVURVMgUkVDSVBJRU5UJ1MgQUNDRVBUQU5DRSBPRgotVEhJUyBBR1JFRU1FTlQuCi0KLTEuIERFRklOSVRJT05TCi0KLSJDb250cmlidXRpb24iIG1lYW5zOgotCi1hKSBpbiB0aGUgY2FzZSBvZiB0aGUgaW5pdGlhbCBDb250cmlidXRvciwgdGhlIGluaXRpYWwgY29kZSBhbmQKLWRvY3VtZW50YXRpb24gZGlzdHJpYnV0ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGFuZAotCi1iKSBpbiB0aGUgY2FzZSBvZiBlYWNoIHN1YnNlcXVlbnQgQ29udHJpYnV0b3I6Ci0KLWkpIGNoYW5nZXMgdG8gdGhlIFByb2dyYW0sIGFuZAotCi1paSkgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtOwotd2hlcmUgc3VjaCBjaGFuZ2VzIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gb3JpZ2luYXRlIGZyb20KLWFuZCBhcmUgZGlzdHJpYnV0ZWQgYnkgdGhhdCBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLiBBCi1Db250cmlidXRpb24gJ29yaWdpbmF0ZXMnIGZyb20gYSBDb250cmlidXRvciBpZiBpdCB3YXMgYWRkZWQgdG8KLXRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IgaXRzZWxmIG9yIGFueW9uZSBhY3Rpbmcgb24gc3VjaAotQ29udHJpYnV0b3IncyBiZWhhbGYuIENvbnRyaWJ1dGlvbnMgZG8gbm90IGluY2x1ZGUgYWRkaXRpb25zIHRvCi10aGUgUHJvZ3JhbSB3aGljaDogKGkpIGFyZSBzZXBhcmF0ZSBtb2R1bGVzIG9mIHNvZnR3YXJlCi1kaXN0cmlidXRlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBQcm9ncmFtIHVuZGVyIHRoZWlyIG93bgotbGljZW5zZSBhZ3JlZW1lbnQsIGFuZCAoaWkpIGFyZSBub3QgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUKLVByb2dyYW0uCi0KLSJDb250cmlidXRvciIgbWVhbnMgYW55IHBlcnNvbiBvciBlbnRpdHkgdGhhdCBkaXN0cmlidXRlcyB0aGUgUHJvZ3JhbS4KLQotIkxpY2Vuc2VkIFBhdGVudHMiIG1lYW4gcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgQ29udHJpYnV0b3IKLXdoaWNoIGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlIHVzZSBvciBzYWxlIG9mIGl0cwotQ29udHJpYnV0aW9uIGFsb25lIG9yIHdoZW4gY29tYmluZWQgd2l0aCB0aGUgUHJvZ3JhbS4KLQotIlByb2dyYW0iIG1lYW5zIHRoZSBDb250cmlidXRpb25zIGRpc3RyaWJ1dGVkIGluIGFjY29yZGFuY2Ugd2l0aAotdGhpcyBBZ3JlZW1lbnQuCi0KLSJSZWNpcGllbnQiIG1lYW5zIGFueW9uZSB3aG8gcmVjZWl2ZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcwotQWdyZWVtZW50LCBpbmNsdWRpbmcgYWxsIENvbnRyaWJ1dG9ycy4KLQotMi4gR1JBTlQgT0YgUklHSFRTCi0KLWEpIFN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yCi1oZXJlYnkgZ3JhbnRzIFJlY2lwaWVudCBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlCi1jb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiwKLXB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIGRpc3RyaWJ1dGUgYW5kIHN1YmxpY2Vuc2UgdGhlCi1Db250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCBhbmQgc3VjaCBkZXJpdmF0aXZlCi13b3JrcywgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlIGZvcm0uCi0KLWIpIFN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yCi1oZXJlYnkgZ3JhbnRzIFJlY2lwaWVudCBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlCi1wYXRlbnQgbGljZW5zZSB1bmRlciBMaWNlbnNlZCBQYXRlbnRzIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIKLXRvIHNlbGwsIGltcG9ydCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaAotQ29udHJpYnV0b3IsIGlmIGFueSwgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlIGZvcm0uIFRoaXMKLXBhdGVudCBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uCi1hbmQgdGhlIFByb2dyYW0gaWYsIGF0IHRoZSB0aW1lIHRoZSBDb250cmlidXRpb24gaXMgYWRkZWQgYnkgdGhlCi1Db250cmlidXRvciwgc3VjaCBhZGRpdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGNhdXNlcyBzdWNoCi1jb21iaW5hdGlvbiB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50Ci1saWNlbnNlIHNoYWxsIG5vdCBhcHBseSB0byBhbnkgb3RoZXIgY29tYmluYXRpb25zIHdoaWNoIGluY2x1ZGUKLXRoZSBDb250cmlidXRpb24uIE5vIGhhcmR3YXJlIHBlciBzZSBpcyBsaWNlbnNlZCBoZXJldW5kZXIuCi0KLWMpIFJlY2lwaWVudCB1bmRlcnN0YW5kcyB0aGF0IGFsdGhvdWdoIGVhY2ggQ29udHJpYnV0b3IgZ3JhbnRzCi10aGUgbGljZW5zZXMgdG8gaXRzIENvbnRyaWJ1dGlvbnMgc2V0IGZvcnRoIGhlcmVpbiwgbm8gYXNzdXJhbmNlcwotYXJlIHByb3ZpZGVkIGJ5IGFueSBDb250cmlidXRvciB0aGF0IHRoZSBQcm9ncmFtIGRvZXMgbm90Ci1pbmZyaW5nZSB0aGUgcGF0ZW50IG9yIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb2YgYW55Ci1vdGhlciBlbnRpdHkuIEVhY2ggQ29udHJpYnV0b3IgZGlzY2xhaW1zIGFueSBsaWFiaWxpdHkgdG8KLVJlY2lwaWVudCBmb3IgY2xhaW1zIGJyb3VnaHQgYnkgYW55IG90aGVyIGVudGl0eSBiYXNlZCBvbgotaW5mcmluZ2VtZW50IG9mIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb3Igb3RoZXJ3aXNlLiBBcyBhCi1jb25kaXRpb24gdG8gZXhlcmNpc2luZyB0aGUgcmlnaHRzIGFuZCBsaWNlbnNlcyBncmFudGVkCi1oZXJldW5kZXIsIGVhY2ggUmVjaXBpZW50IGhlcmVieSBhc3N1bWVzIHNvbGUgcmVzcG9uc2liaWxpdHkgdG8KLXNlY3VyZSBhbnkgb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBuZWVkZWQsIGlmIGFueS4gRm9yCi1leGFtcGxlLCBpZiBhIHRoaXJkIHBhcnR5IHBhdGVudCBsaWNlbnNlIGlzIHJlcXVpcmVkIHRvIGFsbG93Ci1SZWNpcGllbnQgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSwgaXQgaXMgUmVjaXBpZW50J3MKLXJlc3BvbnNpYmlsaXR5IHRvIGFjcXVpcmUgdGhhdCBsaWNlbnNlIGJlZm9yZSBkaXN0cmlidXRpbmcgdGhlCi1Qcm9ncmFtLgotCi1kKSBFYWNoIENvbnRyaWJ1dG9yIHJlcHJlc2VudHMgdGhhdCB0byBpdHMga25vd2xlZGdlIGl0IGhhcwotc3VmZmljaWVudCBjb3B5cmlnaHQgcmlnaHRzIGluIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgdG8gZ3JhbnQKLXRoZSBjb3B5cmlnaHQgbGljZW5zZSBzZXQgZm9ydGggaW4gdGhpcyBBZ3JlZW1lbnQuCi0KLTMuIFJFUVVJUkVNRU5UUwotCi1BIENvbnRyaWJ1dG9yIG1heSBjaG9vc2UgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBpbiBvYmplY3QgY29kZQotZm9ybSB1bmRlciBpdHMgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBwcm92aWRlZCB0aGF0OgotCi1hKSBpdCBjb21wbGllcyB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudDsKLWFuZAotCi1iKSBpdHMgbGljZW5zZSBhZ3JlZW1lbnQ6Ci0KLWkpIGVmZmVjdGl2ZWx5IGRpc2NsYWltcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwKLXdhcnJhbnRpZXMgYW5kIGNvbmRpdGlvbnMsIGV4cHJlc3MgYW5kIGltcGxpZWQsIGluY2x1ZGluZwotd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIHRpdGxlIGFuZCBub24taW5mcmluZ2VtZW50LCBhbmQKLWltcGxpZWQgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIG1lcmNoYW50YWJpbGl0eSBhbmQgZml0bmVzcwotZm9yIGEgcGFydGljdWxhciBwdXJwb3NlOwotCi1paSkgZWZmZWN0aXZlbHkgZXhjbHVkZXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsCi1saWFiaWxpdHkgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLAotaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoIGFzIGxvc3QgcHJvZml0czsKLQotaWlpKSBzdGF0ZXMgdGhhdCBhbnkgcHJvdmlzaW9ucyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIEFncmVlbWVudAotYXJlIG9mZmVyZWQgYnkgdGhhdCBDb250cmlidXRvciBhbG9uZSBhbmQgbm90IGJ5IGFueSBvdGhlciBwYXJ0eTsKLWFuZAotCi1pdikgc3RhdGVzIHRoYXQgc291cmNlIGNvZGUgZm9yIHRoZSBQcm9ncmFtIGlzIGF2YWlsYWJsZSBmcm9tCi1zdWNoIENvbnRyaWJ1dG9yLCBhbmQgaW5mb3JtcyBsaWNlbnNlZXMgaG93IHRvIG9idGFpbiBpdCBpbiBhCi1yZWFzb25hYmxlIG1hbm5lciBvbiBvciB0aHJvdWdoIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yCi1zb2Z0d2FyZSBleGNoYW5nZS4KLQotV2hlbiB0aGUgUHJvZ3JhbSBpcyBtYWRlIGF2YWlsYWJsZSBpbiBzb3VyY2UgY29kZSBmb3JtOgotCi1hKSBpdCBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoaXMgQWdyZWVtZW50OyBhbmQKLQotYikgYSBjb3B5IG9mIHRoaXMgQWdyZWVtZW50IG11c3QgYmUgaW5jbHVkZWQgd2l0aCBlYWNoIGNvcHkgb2YKLXRoZSBQcm9ncmFtLgotCi1Db250cmlidXRvcnMgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55IGNvcHlyaWdodCBub3RpY2VzCi1jb250YWluZWQgd2l0aGluIHRoZSBQcm9ncmFtLgotCi1FYWNoIENvbnRyaWJ1dG9yIG11c3QgaWRlbnRpZnkgaXRzZWxmIGFzIHRoZSBvcmlnaW5hdG9yIG9mIGl0cwotQ29udHJpYnV0aW9uLCBpZiBhbnksIGluIGEgbWFubmVyIHRoYXQgcmVhc29uYWJseSBhbGxvd3MKLXN1YnNlcXVlbnQgUmVjaXBpZW50cyB0byBpZGVudGlmeSB0aGUgb3JpZ2luYXRvciBvZiB0aGUKLUNvbnRyaWJ1dGlvbi4KLQotNC4gQ09NTUVSQ0lBTCBESVNUUklCVVRJT04KLQotQ29tbWVyY2lhbCBkaXN0cmlidXRvcnMgb2Ygc29mdHdhcmUgbWF5IGFjY2VwdCBjZXJ0YWluCi1yZXNwb25zaWJpbGl0aWVzIHdpdGggcmVzcGVjdCB0byBlbmQgdXNlcnMsIGJ1c2luZXNzIHBhcnRuZXJzIGFuZAotdGhlIGxpa2UuIFdoaWxlIHRoaXMgbGljZW5zZSBpcyBpbnRlbmRlZCB0byBmYWNpbGl0YXRlIHRoZQotY29tbWVyY2lhbCB1c2Ugb2YgdGhlIFByb2dyYW0sIHRoZSBDb250cmlidXRvciB3aG8gaW5jbHVkZXMgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nIHNob3VsZCBkbyBzbyBpbiBhIG1hbm5lcgotd2hpY2ggZG9lcyBub3QgY3JlYXRlIHBvdGVudGlhbCBsaWFiaWxpdHkgZm9yIG90aGVyCi1Db250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbgotYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIHN1Y2ggQ29udHJpYnV0b3IgKCJDb21tZXJjaWFsCi1Db250cmlidXRvciIpIGhlcmVieSBhZ3JlZXMgdG8gZGVmZW5kIGFuZCBpbmRlbW5pZnkgZXZlcnkgb3RoZXIKLUNvbnRyaWJ1dG9yICgiSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IiKSBhZ2FpbnN0IGFueSBsb3NzZXMsCi1kYW1hZ2VzIGFuZCBjb3N0cyAoY29sbGVjdGl2ZWx5ICJMb3NzZXMiKSBhcmlzaW5nIGZyb20gY2xhaW1zLAotbGF3c3VpdHMgYW5kIG90aGVyIGxlZ2FsIGFjdGlvbnMgYnJvdWdodCBieSBhIHRoaXJkIHBhcnR5IGFnYWluc3QKLXRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciB0byB0aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUgYWN0cyBvcgotb21pc3Npb25zIG9mIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiBjb25uZWN0aW9uIHdpdGggaXRzCi1kaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcuIFRoZQotb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSB0byBhbnkgY2xhaW1zIG9yIExvc3NlcwotcmVsYXRpbmcgdG8gYW55IGFjdHVhbCBvciBhbGxlZ2VkIGludGVsbGVjdHVhbCBwcm9wZXJ0eQotaW5mcmluZ2VtZW50LiBJbiBvcmRlciB0byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvcgotbXVzdDogYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2YKLXN1Y2ggY2xhaW0sIGFuZCBiKSBhbGxvdyB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB0byBjb250cm9sLAotYW5kIGNvb3BlcmF0ZSB3aXRoIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQKLWFueSByZWxhdGVkIHNldHRsZW1lbnQgbmVnb3RpYXRpb25zLiBUaGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IKLW1heSBwYXJ0aWNpcGF0ZSBpbiBhbnkgc3VjaCBjbGFpbSBhdCBpdHMgb3duIGV4cGVuc2UuCi0KLUZvciBleGFtcGxlLCBhIENvbnRyaWJ1dG9yIG1pZ2h0IGluY2x1ZGUgdGhlIFByb2dyYW0gaW4gYQotY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbgotYSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yLiBJZiB0aGF0IENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdGhlbgotbWFrZXMgcGVyZm9ybWFuY2UgY2xhaW1zLCBvciBvZmZlcnMgd2FycmFudGllcyByZWxhdGVkIHRvIFByb2R1Y3QKLVgsIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcyBhcmUgc3VjaCBDb21tZXJjaWFsCi1Db250cmlidXRvcidzIHJlc3BvbnNpYmlsaXR5IGFsb25lLiBVbmRlciB0aGlzIHNlY3Rpb24sIHRoZQotQ29tbWVyY2lhbCBDb250cmlidXRvciB3b3VsZCBoYXZlIHRvIGRlZmVuZCBjbGFpbXMgYWdhaW5zdCB0aGUKLW90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQKLXdhcnJhbnRpZXMsIGFuZCBpZiBhIGNvdXJ0IHJlcXVpcmVzIGFueSBvdGhlciBDb250cmlidXRvciB0byBwYXkKLWFueSBkYW1hZ2VzIGFzIGEgcmVzdWx0LCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciBtdXN0IHBheQotdGhvc2UgZGFtYWdlcy4KLQotNS4gTk8gV0FSUkFOVFkKLQotRVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUyBBR1JFRU1FTlQsIFRIRSBQUk9HUkFNIElTCi1QUk9WSURFRCBPTiBBTiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRgotQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQgSU5DTFVESU5HLCBXSVRIT1VUCi1MSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLAotTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotUFVSUE9TRS4gRWFjaCBSZWNpcGllbnQgaXMgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUKLWFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBhbmQgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIGFuZCBhc3N1bWVzCi1hbGwgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGl0cyBleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcwotQWdyZWVtZW50ICwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgcmlza3MgYW5kIGNvc3RzIG9mCi1wcm9ncmFtIGVycm9ycywgY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlIHRvIG9yCi1sb3NzIG9mIGRhdGEsIHByb2dyYW1zIG9yIGVxdWlwbWVudCwgYW5kIHVuYXZhaWxhYmlsaXR5IG9yCi1pbnRlcnJ1cHRpb24gb2Ygb3BlcmF0aW9ucy4KLQotNi4gRElTQ0xBSU1FUiBPRiBMSUFCSUxJVFkKLQotRVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUyBBR1JFRU1FTlQsIE5FSVRIRVIKLVJFQ0lQSUVOVCBOT1IgQU5ZIENPTlRSSUJVVE9SUyBTSEFMTCBIQVZFIEFOWSBMSUFCSUxJVFkgRk9SIEFOWQotRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIExPU1QKLVBST0ZJVFMpLCBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIKLUlOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUgotT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GCi1USEUgUFJPR1JBTSBPUiBUSEUgRVhFUkNJU0UgT0YgQU5ZIFJJR0hUUyBHUkFOVEVEIEhFUkVVTkRFUiwgRVZFTgotSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgotCi03LiBHRU5FUkFMCi0KLUlmIGFueSBwcm92aXNpb24gb2YgdGhpcyBBZ3JlZW1lbnQgaXMgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlCi11bmRlciBhcHBsaWNhYmxlIGxhdywgaXQgc2hhbGwgbm90IGFmZmVjdCB0aGUgdmFsaWRpdHkgb3IKLWVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LAotYW5kIHdpdGhvdXQgZnVydGhlciBhY3Rpb24gYnkgdGhlIHBhcnRpZXMgaGVyZXRvLCBzdWNoIHByb3Zpc2lvbgotc2hhbGwgYmUgcmVmb3JtZWQgdG8gdGhlIG1pbmltdW0gZXh0ZW50IG5lY2Vzc2FyeSB0byBtYWtlIHN1Y2gKLXByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuCi0KLUlmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eQotKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nCi10aGF0IHRoZSBQcm9ncmFtIGl0c2VsZiAoZXhjbHVkaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgUHJvZ3JhbQotd2l0aCBvdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSkgaW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50J3MKLXBhdGVudChzKSwgdGhlbiBzdWNoIFJlY2lwaWVudCdzIHJpZ2h0cyBncmFudGVkIHVuZGVyIFNlY3Rpb24KLTIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KLQotQWxsIFJlY2lwaWVudCdzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCBzaGFsbCB0ZXJtaW5hdGUgaWYgaXQKLWZhaWxzIHRvIGNvbXBseSB3aXRoIGFueSBvZiB0aGUgbWF0ZXJpYWwgdGVybXMgb3IgY29uZGl0aW9ucyBvZgotdGhpcyBBZ3JlZW1lbnQgYW5kIGRvZXMgbm90IGN1cmUgc3VjaCBmYWlsdXJlIGluIGEgcmVhc29uYWJsZQotcGVyaW9kIG9mIHRpbWUgYWZ0ZXIgYmVjb21pbmcgYXdhcmUgb2Ygc3VjaCBub25jb21wbGlhbmNlLiBJZiBhbGwKLVJlY2lwaWVudCdzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCB0ZXJtaW5hdGUsIFJlY2lwaWVudAotYWdyZWVzIHRvIGNlYXNlIHVzZSBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGFzIHNvb24gYXMKLXJlYXNvbmFibHkgcHJhY3RpY2FibGUuIEhvd2V2ZXIsIFJlY2lwaWVudCdzIG9ibGlnYXRpb25zIHVuZGVyCi10aGlzIEFncmVlbWVudCBhbmQgYW55IGxpY2Vuc2VzIGdyYW50ZWQgYnkgUmVjaXBpZW50IHJlbGF0aW5nIHRvCi10aGUgUHJvZ3JhbSBzaGFsbCBjb250aW51ZSBhbmQgc3Vydml2ZS4KLQotRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoaXMKLUFncmVlbWVudCwgYnV0IGluIG9yZGVyIHRvIGF2b2lkIGluY29uc2lzdGVuY3kgdGhlIEFncmVlbWVudCBpcwotY29weXJpZ2h0ZWQgYW5kIG1heSBvbmx5IGJlIG1vZGlmaWVkIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyLiBUaGUKLUFncmVlbWVudCBTdGV3YXJkIHJlc2VydmVzIHRoZSByaWdodCB0byBwdWJsaXNoIG5ldyB2ZXJzaW9ucwotKGluY2x1ZGluZyByZXZpc2lvbnMpIG9mIHRoaXMgQWdyZWVtZW50IGZyb20gdGltZSB0byB0aW1lLiBObyBvbmUKLW90aGVyIHRoYW4gdGhlIEFncmVlbWVudCBTdGV3YXJkIGhhcyB0aGUgcmlnaHQgdG8gbW9kaWZ5IHRoaXMKLUFncmVlbWVudC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyB0aGUgaW5pdGlhbCBBZ3JlZW1lbnQKLVN0ZXdhcmQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWF5IGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgdG8KLXNlcnZlIGFzIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCB0byBhIHN1aXRhYmxlIHNlcGFyYXRlCi1lbnRpdHkuIEVhY2ggbmV3IHZlcnNpb24gb2YgdGhlIEFncmVlbWVudCB3aWxsIGJlIGdpdmVuIGEKLWRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBUaGUgUHJvZ3JhbSAoaW5jbHVkaW5nCi1Db250cmlidXRpb25zKSBtYXkgYWx3YXlzIGJlIGRpc3RyaWJ1dGVkIHN1YmplY3QgdG8gdGhlIHZlcnNpb24KLW9mIHRoZSBBZ3JlZW1lbnQgdW5kZXIgd2hpY2ggaXQgd2FzIHJlY2VpdmVkLiBJbiBhZGRpdGlvbiwgYWZ0ZXIKLWEgbmV3IHZlcnNpb24gb2YgdGhlIEFncmVlbWVudCBpcyBwdWJsaXNoZWQsIENvbnRyaWJ1dG9yIG1heQotZWxlY3QgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAoaW5jbHVkaW5nIGl0cyBDb250cmlidXRpb25zKQotdW5kZXIgdGhlIG5ldyB2ZXJzaW9uLiBFeGNlcHQgYXMgZXhwcmVzc2x5IHN0YXRlZCBpbiBTZWN0aW9ucwotMihhKSBhbmQgMihiKSBhYm92ZSwgUmVjaXBpZW50IHJlY2VpdmVzIG5vIHJpZ2h0cyBvciBsaWNlbnNlcyB0bwotdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvZiBhbnkgQ29udHJpYnV0b3IgdW5kZXIgdGhpcwotQWdyZWVtZW50LCB3aGV0aGVyIGV4cHJlc3NseSwgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIG9yCi1vdGhlcndpc2UuIEFsbCByaWdodHMgaW4gdGhlIFByb2dyYW0gbm90IGV4cHJlc3NseSBncmFudGVkIHVuZGVyCi10aGlzIEFncmVlbWVudCBhcmUgcmVzZXJ2ZWQuCi0KLVRoaXMgQWdyZWVtZW50IGlzIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIHRoZSBTdGF0ZSBvZiBOZXcgWW9yawotYW5kIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgbGF3cyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBvZgotQW1lcmljYS4gTm8gcGFydHkgdG8gdGhpcyBBZ3JlZW1lbnQgd2lsbCBicmluZyBhIGxlZ2FsIGFjdGlvbgotdW5kZXIgdGhpcyBBZ3JlZW1lbnQgbW9yZSB0aGFuIG9uZSB5ZWFyIGFmdGVyIHRoZSBjYXVzZSBvZiBhY3Rpb24KLWFyb3NlLiBFYWNoIHBhcnR5IHdhaXZlcyBpdHMgcmlnaHRzIHRvIGEganVyeSB0cmlhbCBpbiBhbnkKLXJlc3VsdGluZyBsaXRpZ2F0aW9uLgpkaWZmIC0tZ2l0IGEvY2xpL01ha2VmaWxlIGIvY2xpL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxOGRkYzQ3Li4wMDAwMDAwCi0tLSBhL2NsaS9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi1TT1VSQ0UgPSAkKHNoZWxsIHB3ZCkKLVdPUktTUEFDRSA9ICQoU09VUkNFKS93b3Jrc3BhY2UKLVZJUlRVQUxFTlYgPSAkKFdPUktTUEFDRSkvdmUKLVRPT0xTID0gJChXT1JLU1BBQ0UpL3Rvb2xzCi1CVUlMRF9ESVIgPSAkKFNPVVJDRSkvYnVpbGQKLSNGTF9ESVIgPSAkKFNPVVJDRSkvc2RucGxhdGZvcm0KLQotYWxsOiBidWlsZC1zZG5wbGF0Zm9ybQotCi1jbGVhbi1weXRob246Ci0jCXByaW50ZiAnaW1wb3J0IHNldHVwdG9vbHNcbnNldHVwdG9vbHMuc2V0dXAobmFtZT0iZGphbmdvX2Nhc3NhbmRyYSIsIHZlcnNpb249IjAuMSIsIHBhY2thZ2VzPVsiZGphbmdvX2Nhc3NhbmRyYSIsICJkamFuZ29fY2Fzc2FuZHJhLmRiIl0pJyA+JChTT1VSQ0UpL2RqYW5nb19jYXNzYW5kcmFfYmFja2VuZC9zZXR1cC5weQotCWVjaG8gJyQoU09VUkNFKScgPiQkKHB5dGhvbiAtYyAnaW1wb3J0IGRpc3R1dGlsczsgcHJpbnQgZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigpJykvc2RucGxhdGZvcm0ucHRoCi0Jc2V0IC1lOyBcCi0JY2QgJChTT1VSQ0UpOyBcCi0jCWZvciBwIGluIGRqYW5nb19jYXNzYW5kcmFfYmFja2VuZC9zZXR1cC5weSBzZG5jb24vc2V0dXAucHkgY2xpL3NldHVwLnB5OyBkbwotCWZvciBwIGluIHNkbmNvbi9zZXR1cC5weSBjbGkvc2V0dXAucHk7IGRvIFwKLQkgIGVjaG8gIisrKyBQcmVwYXJpbmcgUHl0aG9uIHZpcnR1YWxlbnYgZm9yICQkcCI7IFwKLQkgICggY2QgJCQoZGlybmFtZSAkJHApOyBybSAtcmYgKi5lZ2ctaW5mbzsgQVJDSEZMQUdTPSItYXJjaCBpMzg2IC1hcmNoIHg4Nl82NCIgcHl0aG9uICQkKGJhc2VuYW1lICQkcCkgZGV2ZWxvcCApOyBcCi0JZG9uZQotCSggY2QgJChTT1VSQ0UpL2NsaSA7IHRvb2xzL3JlYnVpbGRfbW9kZWwuc2ggKQotCi1jbGVhbi1zZG5wbGF0Zm9ybToKLSMJY2QgJChGTF9ESVIpOyBhbnQgY2xlYW4KLQotY2xlYW46IHJlc2V0LWNhc3NhbmRyYSBjbGVhbi1zZG5wbGF0Zm9ybSBjbGVhbi1weXRob24KLQotc3RvcC1jYXNzYW5kcmE6Ci0jCSQoQlVJTERfRElSKS9raWxsLXBvcnQtd2FpdC5zaCAtcCA5MTYwCi0jCUBlY2hvICIrKysgQ2Fzc2FuZHJhIHN0b3BwZWQiCi0KLXJlc2V0LWNhc3NhbmRyYTogc3RvcC1jYXNzYW5kcmEKLSMJcm0gLXJmICQoVklSVFVBTEVOVikvY2Fzc2FuZHJhCi0jCUBlY2hvICIrKysgQ2Fzc2FuZHJhIGRiIGRlbGV0ZWQiCi0KLWNhc3NhbmRyYTogc3RhcnQtY2Fzc2FuZHJhCi1zdGFydC1jYXNzYW5kcmE6Ci0jCSQoQlVJTERfRElSKS9zdGFydC1hbmQtd2FpdC1mb3ItcG9ydC5zaCAtcCA5MTYwIC1sICQoVklSVFVBTEVOVikvbG9nL2Nhc3NhbmRyYS5sb2cgJChUT09MUykvY2Fzc2FuZHJhL2Jpbi9jYXNzYW5kcmEKLSMJQGVjaG8gIisrKyBDYXNzYW5kcmEgcnVubmluZyIKLQotc3RvcC1zZG5jb246Ci0JJChCVUlMRF9ESVIpL2tpbGwtcG9ydC13YWl0LnNoIC1wIDgwMDAKLQlAZWNobyAiKysrIHNkbmNvbiBzdG9wcGVkIgotCi1yZXNldC1zZG5jb246IHN0b3Atc2RuY29uIHJlc2V0LWNhc3NhbmRyYSBzdGFydC1jYXNzYW5kcmEKLQotc3RhcnQtc2RuY29uOiBzdGFydC1jYXNzYW5kcmEKLQlpZiAhIGxzb2YgLWlUQ1A6ODAwMCAtc1RDUDpMSVNURU4gPi9kZXYvbnVsbDsgdGhlbiBcCi0JKCBcCi0JICBjZCAkKFNPVVJDRSkvc2RuY29uOyBcCi0JICBbIC1kICQoVklSVFVBTEVOVikvY2Fzc2FuZHJhL2RhdGEvc2RuY29uIF0gfHwgcHl0aG9uIG1hbmFnZS5weSBzeW5jZGIgLS1ub2lucHV0OyBcCi0JICAkKEJVSUxEX0RJUikvc3RhcnQtYW5kLXdhaXQtZm9yLXBvcnQuc2ggLXAgODAwMCAtbCAkKFZJUlRVQUxFTlYpL2xvZy9zZG5jb24ubG9nIHB5dGhvbiBtYW5hZ2UucHkgcnVuc2VydmVyIDAuMC4wLjA6ODAwMDsgXAotCSk7IFwKLQlmaQotCUBlY2hvICIrKysgc2RuY29uIHJ1bm5pbmciCi0KLXN0b3Atc2RucGxhdGZvcm06Ci0jCXdoaWxlIHBpZD0kJChsc29mIC10IC1pVENQOjY2MzMgLXNUQ1A6TElTVEVOKTsgZG8ga2lsbCAkJHtwaWR9OyBzbGVlcCAxOyBkb25lCi0jCUBlY2hvICIrKysgU0ROIFBsYXRmb3JtIHN0b3BwZWQiCi0KLXN0YXJ0LXNkbnBsYXRmb3JtOiBzdGFydC1jYXNzYW5kcmEKLSMJaWYgISBsc29mIC1pVENQOjY2MzMgLXNUQ1A6TElTVEVOID4vZGV2L251bGw7IHRoZW4gXAotIwkgICggY2QgJChTT1VSQ0UpL3NkbnBsYXRmb3JtOyBhbnQgcnVuICY+JChWSVJUVUFMRU5WKS9sb2cvc2RucGxhdGZvcm0ubG9nICYgKTsgXAotIwlmaQotIwl3aGlsZSAhIG5jIC16IGxvY2FsaG9zdCA2NjMzOyBkbyBzbGVlcCAxOyBkb25lCi0jCUBlY2hvICIrKysgU0ROIFBsYXRmb3JtIHJ1bm5pbmciCi0KLWVjbGlwc2U6Ci0jCWNkICQoRkxfRElSKTsgYW50IGVjbGlwc2UKLQotYnVpbGQtc2RucGxhdGZvcm06Ci0jCWNkICQoRkxfRElSKTsgYW50IGRpc3QKLWNsZWFuLXNyZGI6IHN0b3Atc2RuY29uCi0Jcm0gLWZyIHNkbmNvbi9zZG5jb24KLQltYWtlIGNsZWFuCi0JbWFrZSBzdGFydC1zZG5jb24KZGlmZiAtLWdpdCBhL2NsaS9OT1RJQ0UgYi9jbGkvTk9USUNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ODk0NWNiLi4wMDAwMDAwCi0tLSBhL2NsaS9OT1RJQ0UKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1JTkRFTU5JVFkgQU5EIERJU0NMQUlNRVIgT0YgV0FSUkFOVElFUwotCi1TT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywKLUJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIAotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCi1DT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgCi1FWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIAotUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IAotT1IgMjc5NzMvMDAxMDAvU0YvNTMzOTA0NS4xIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSAKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwotTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCAKLUVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9jbGkvUkVBRE1FLm1kIGIvY2xpL1JFQURNRS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzI1MmVkYi4uMDAwMDAwMAotLS0gYS9jbGkvUkVBRE1FLm1kCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLVNETiBQbGF0Zm9ybQotPT09PT09PT09PT09Ci0KLVRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBhbiBhZHZhbmNlZCBTRE4gY29udHJvbGxlciBhbmQgcGxhdGZvcm0gZm9yCi1uZXR3b3JrIHZpcnR1YWxpemF0aW9uLgotCi0jIEJ1aWxkaW5nICMKLUluc3RhbGwgcHJlcmVxdWlzaXRlcy4gIFlvdSdsbCBqdXN0IG5lZWQgYSBiYXNpYyBmdW5jdGlvbmluZyBidWlsZAotZW52aXJvbm1lbnQgcGx1cyBhIGZldyBidWlsZC10aW1lIGRlcGVuZGVuY2llcy4gIE9uIFVidW50dSwgeW91IGNhbgotcnVuOgotCi0gICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgdW56aXAgcHl0aG9uLWRldiBweXRob24tdmlydHVhbGVudiBcCi0gICAgCSBnaXQgb3Blbmpkay03LWpkayBhbnQgYnVpbGQtZXNzZW50aWFsCi0KLU5vdGUgdGhhdCBvbiBVYnVudHUgMTIuMDQsIHlvdSBtYXkgd2FudCB0byByZW1vdmUgamF2YTY6Ci0KLSAgICBzdWRvIGFwdC1nZXQgcmVtb3ZlIG9wZW5qZGstNi1qcmUtbGliIG9wZW5qZGstNi1qcmUtaGVhZGxlc3MKLQotVG8gYnVpbGQgdGhlIGNvbnRyb2xsZXI6Ci0KLTEuIENsb25lIGZyb20gcmVwb3NpdG9yeQotMi4gYC4vc2V0dXAuc2hgCi0zLiBgbWFrZWAKLQotIyBSdW5uaW5nICMKLQotIyMgU2RuY29uICMjCi1UbyBydW4gdGhlIGNvbnRyb2xsZXIgYW5kIHRoZSBjbGksIHlvdSBuZWVkIHRvIGJlIHJ1bm5pbmcgYSB3b3JraW5nCi1pbnN0YW5jZSBvZiBjYXNzYW5kcmEgYW5kIHNkbmNvbi4gIFRoZSBzZXR1cCBzY3JpcHQgd2lsbCBoYXZlIGNyZWF0ZWQKLWEgcHl0aG9uIHZpcnR1YWxlbnYgZm9yIHlvdSB0byBtYWtlIGl0IGVhc3kgdG8gcnVuIHRoZSBweXRob24KLWNvbXBvbmVudHMuICBZb3UgbXVzdCBmaXJzdCBhY3RpdmF0ZSB0aGUgdmlydHVhbGVudiBpbiB5b3VyIGN1cnJlbnQKLXNoZWxsIGJ5IHJ1bm5pbmcKLQotICAgIHNvdXJjZSAuL3dvcmtzcGFjZS92ZS9iaW4vYWN0aXZhdGUKLQotTm93IHlvdSBjYW4gZWFzaWx5IHJ1biBhbnkgb2YgdGhlIHB5dGhvbiBjb21tYW5kcy4KLQotVGhlIG1ha2UgdGFyZ2V0cyBgc3RhcnQtY2Fzc2FuZHJhYCBhbmQgYHN0YXJ0LXNkbmNvbmAgd2lsbAotYXV0b21hdGljYWxseSBzdGFydCBhIGxvY2FsIGNvcHkgb2YgY2Fzc2FuZHJhIGFuZCBzZG5jb24uICBUaGVyZSBhcmUKLWNvcnJlc3BvbmRpbmcgc3RvcCBjb21tYW5kcyBhcyB3ZWxsLiAgVGhlc2UgY29tbWFuZHMgcmVxdWlyZSBhbgotYWN0aXZhdGVkIHZpcnR1YWxlbnYuICBJZiB5b3UgcnVuCi0KLSAgICBtYWtlIHN0b3Atc2RuY29uIHJlc2V0LWNhc3NhbmRyYSBzdGFydC1zZG5jb24KLQotVGhpcyB3aWxsIHN0b3AgYW55IGV4aXN0aW5nIHNkbmNvbiBhbmQgY2Fzc2FuZHJhLCByZXNldCB0aGVpcgotZGF0YWJhc2VzIHRvIHplcm8sIGFuZCBzdGFydCBhIG5ldyBzZG5jb24gd2l0aCBhIGZyZXNoIGRhdGFiYXNlLiAgVGhlCi1vdXRwdXQgZnJvbSB0aGVzZSBjb21tYW5kcyB3aWxsIGdvIHRvIGEgbG9nIGZpbGUgaW4geW91cgotYHdvcmtzcGFjZS92ZS9sb2dzYCBkaXJlY3RvcnkuCi0KLSMjIENvbnRyb2xsZXIgIyMKLQotTm93IHlvdSdyZSByZWFkeSB0byBydW4gYSBjb3B5IG9mIHNkbnBsYXRmb3JtLiAgVGhlIGVhc2llc3Qgd2F5IGlzIHRvCi1ydW4KLQotICAgIG1ha2Ugc3RhcnQtc2RucGxhdGZvcm0KLQotb3IgeW91IGNhbiBkbyB0aGlzIG1hbnVhbGx5IHdpdGggb3V0cHV0IHRvIHN0YW5kYXJkIG91dCBieSBydW5uaW5nCi1mcm9tIHRoZSBgc2RucGxhdGZvcm1gIGRpcmVjdG9yeQotCi0gICAgamF2YSAtamFyIHRhcmdldC9zZG5wbGF0Zm9ybS5qYXIKLQotWW91IGNhbiBzcGVjaWZ5IHlvdXIgb3duIGNvbmZpZ3VyYXRpb24gZmlsZSB3aXRoIGAtY2YgW3BhdGhdYCBvciB1c2UKLXRoZSBkZWZhdWx0LgotCi0jIyBDTEkgIyMKLQotVGhlIENMSSBkZXBlbmRzIG9uIGEgcnVubmluZyBpbnN0YW5jZSBvZiBzZG5jb24uICBUbyBydW4gdGhlIENMSSwganVzdAotcnVuIGl0IGZyb20gdGhlIGNvbW1hbmQgbGluZSBmcm9tIHRoZSBDTEkgZGlyZWN0b3J5OgotCi0gICAgLi9jbGkucHkKLQotVGhlIENMSSBoYXMgb25saW5lIGhlbHAgYW5kIHRhYiBjb21wbGV0aW9uIG9uIGl0cyBjb21tYW5kcy4KLQotIyMgV2ViLURhc2hib2FyZCAjIwotCi1UaGUgZXhhbXBsZSB3ZWItZGFzaGJvYXJkIGFwcGxpY2F0aW9uIGRlcGVuZHMgb24gYSBydW5uaW5nIGluc3RhbmNlIG9mIHNkbmNvbiBhbmQgYSB3ZWIgc2VydmVyIHRvIHNlcnZlIGNvbnRlbnQuIFRoZSB3ZWItZGFzaGJvYXJkIGZpbGVzIGFyZSBkaXZpZGVkIGludG8gdHdvIHBhcnRzOgotCi0gICAgZG9jdW1lbnQtcm9vdDogU3RhdGljIEhUTUwsIGphdmFzY3JpcHQsIGFuZCBjc3MgZmlsZXMuCi0gICAgY2dpLWJpbi1yb290IDogUHl0aG9uIGJhc2VkIENHSSBzY3JpcHRzLgotCi1UbyBydW4gdGhlIHdlYi1kYXNoYm9hcmQsIGNvcHkgdGhlIGZpbGVzIGludG8gdGhlIGFuIGFwcm9wcmlhdGUgd2Vic2VydmVyIGRpcmVjdG9yeSBmb3IgdGhlIGNvbnRlbnQgdHlwZS4KLQotT24gVWJ1bnR1IDEyLjA0IHdpdGggYSBkZWZhdWx0IEFwYWNoZTIgaW5zdGFsbDoKLQotMS4gTW92ZSBgZG9jdW1lbnQtcm9vdGAgY29udGVudHMgaW50byAvdmFyL3d3dwotMi4gTW92ZSBgY2dpLWJpbi1yb290YCBjb250ZW50cyBpbnRvIC91c3IvbGliL2NnaS1iaW4KLQotSWYgdGhlIHdlYnNlcnZlciBkb2VzIG5vdCB1c2UgYC9jZ2ktYmluYCBmb3IgQ0dJIGZpbGUgYWNjZXNzLCBtb2RpZnkgdGhlIGBDR0lfUEFUSGAgdmFyaWFibGUgaW4gdGhlIGRhc2hib2FyZC5odG1sIGZpbGUgdG8gdGhlIGFwcm9wcmlhdGUgcGF0aC4KLQotIyBFY2xpcHNlIGVudmlyb25tZW50ICMKLQotMSkgQXQgdGhlIHNoZWxsLCBjcmVhdGUgdGhlIC5wcm9qZWN0IGZpbGVzIHdpdGggYG1ha2UgZWNsaXBzZWAKLSUgbWFrZSBlY2xpcHNlCi0KLTIpIEluIEVjbGlwc2UsIGNyZWF0ZSBhIG5ldyB3b3Jrc3BhY2U6Ci1DbGljayBGaWxlIC0+IFN3aXRjaCBXb3JrU3BhY2UgLT4gT3RoZXIgYW5kIHRoZW4gZW50ZXIgdGhlIG5hbWUgb2YKLXRoZSBuZXcgd29ya3NwYWNlLCBlLmcuICJXb3Jrc3BhY2UubmV0LXZpcnQtcGxhdGZvcm0iCi0KLTMpIE9uY2UgaW4gdGhlIG5ldyB3b3Jrc3BhY2UsIGltcG9ydCBhbGwgb2YgdGhlIGVjbGlwc2UgcHJvamVjdHMKLUNsaWNrIEZpbGUgLT4gSW1wb3J0IC0+IEdlbmVyYWwgLT4gRXhpc3RpbmcgUHJvamVjdHMgaW50byBXb3Jrc3BhY2UKLS0+IE5leHQgaW4gdGhlICJTZWxlY3QgUm9vdCBEaXJlY3RvcnkiIGRpYWxvZywgdHlwZSBpbiBvciBuYXZpZ2F0ZQotdG8geW91ciBjaGVja291dCBvZiB0aGUgbmV0LXZpcnQtcGxhdGZvcm0gYmFzZSBkaXJlY3RvcnksIGUuZy4sCi1+L2dpdC9uZXQtdmlydC1wbGF0Zm9ybSAuCi0KLUVjbGlwc2Ugc2hvdWxkIGF1dG9tYXRpY2FsbHkgZmluZCBmb3VyIGVjbGlwc2UgcHJvamVjdHM6IAotKiBjbGkKLSogZGphbmdvX2Nhc3NhbmRyYV9iYWNrZW5kCi0qIHNkbmNvbgotKiBzZG5wbGF0Zm9ybQotTWFrZSBzdXJlIHRoZXkgYXJlIGFsbCBjaGVja2VkICh0aGUgZGVmYXVsdCkgYW5kIGNsaWNrICJGaW5pc2giCi0KLUlmIHlvdSBhcmUgbG9va2luZyB0byBkbyBweXRob24gZGV2ZWxvcG1lbnQsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQKLXlvdSBpbnN0YWxsIHRoZSBFY2xpcHNlICJweWRldiIgbW9kdWxlcywgYXMgZG9jdW1lbnRlZCBhdCBodHRwOi8vcHlkZXYub3JnLgpkaWZmIC0tZ2l0IGEvY2xpL2J1aWxkL2RqYW5nby1hdXRvcmVsb2FkLW5vdHR5LnBhdGNoIGIvY2xpL2J1aWxkL2RqYW5nby1hdXRvcmVsb2FkLW5vdHR5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhMTg3ZTkzLi4wMDAwMDAwCi0tLSBhL2NsaS9idWlsZC9kamFuZ28tYXV0b3JlbG9hZC1ub3R0eS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLWh0dHBzOi8vY29kZS5kamFuZ29wcm9qZWN0LmNvbS9jaGFuZ2VzZXQvMTU5MTEKLQotSW5kZXg6IC9kamFuZ28vdHJ1bmsvZGphbmdvL3V0aWxzL2F1dG9yZWxvYWQucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGphbmdvL3RydW5rL2RqYW5nby91dGlscy9hdXRvcmVsb2FkLnB5CShyZXZpc2lvbiAxNTg4MykKLSsrKyAvZGphbmdvL3RydW5rL2RqYW5nby91dGlscy9hdXRvcmVsb2FkLnB5CShyZXZpc2lvbiAxNTkxMSkKLUBAIC03NCw5ICs3NCwxMCBAQAotIGRlZiBlbnN1cmVfZWNob19vbigpOgotICAgICBpZiB0ZXJtaW9zOgotLSAgICAgICAgZmQgPSBzeXMuc3RkaW4uZmlsZW5vKCkKLS0gICAgICAgIGF0dHJfbGlzdCA9IHRlcm1pb3MudGNnZXRhdHRyKGZkKQotLSAgICAgICAgaWYgbm90IGF0dHJfbGlzdFszXSAmIHRlcm1pb3MuRUNITzoKLS0gICAgICAgICAgICBhdHRyX2xpc3RbM10gfD0gdGVybWlvcy5FQ0hPCi0tICAgICAgICAgICAgdGVybWlvcy50Y3NldGF0dHIoZmQsIHRlcm1pb3MuVENTQU5PVywgYXR0cl9saXN0KQotKyAgICAgICAgZmQgPSBzeXMuc3RkaW4KLSsgICAgICAgIGlmIGZkLmlzYXR0eSgpOgotKyAgICAgICAgICAgIGF0dHJfbGlzdCA9IHRlcm1pb3MudGNnZXRhdHRyKGZkKQotKyAgICAgICAgICAgIGlmIG5vdCBhdHRyX2xpc3RbM10gJiB0ZXJtaW9zLkVDSE86Ci0rICAgICAgICAgICAgICAgIGF0dHJfbGlzdFszXSB8PSB0ZXJtaW9zLkVDSE8KLSsgICAgICAgICAgICAgICAgdGVybWlvcy50Y3NldGF0dHIoZmQsIHRlcm1pb3MuVENTQU5PVywgYXR0cl9saXN0KQotIAotIGRlZiByZWxvYWRlcl90aHJlYWQoKToKZGlmZiAtLWdpdCBhL2NsaS9idWlsZC9raWxsLXBvcnQtd2FpdC5zaCBiL2NsaS9idWlsZC9raWxsLXBvcnQtd2FpdC5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGMyZGNkYy4uMDAwMDAwMAotLS0gYS9jbGkvYnVpbGQva2lsbC1wb3J0LXdhaXQuc2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0jIS9iaW4vYmFzaAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLXVzYWdlKCkgewotICAgIGNhdCA8PEVPRiA+JjIKLQotJDAgLSBraWxsIHByb2Nlc3MgbGlzdGVuaW5nIG9uIGEgcG9ydCwgd2FpdCBmb3IgaXQgdG8gdGVybWluYXRlCi0KLUNhbGwgc3ludGF4OgotCi0gJDAgLXAgPHBvcnQ+IFtPUFRTXQotCi1PUFRJT05TOgotICAgLXAgPHBvcnQ+ICAgICB3YWl0IGZvciBwb3J0IDxwb3J0PiB0byBsaXN0ZW4gb24KLSAgIC10IDx0aW1lPiAgICAgd2FpdCA8dD4gc2Vjb25kcyBmb3IgcG9ydCB0byBzaG93IHVwCi0KLSAgIC1oICAgICAgICAgICAgdGhpcyBoZWxwCi0KLUVPRgotfQotCi1QUk9HTkFNRT0iJDAiCi1TSE9SVE9QVFM9ImhwOnQ6IgotCi1BUkdTPSQoZ2V0b3B0ICRTSE9SVE9QVFMgIiRAIiApCi0KLWlmIFsgJD8gLWd0IDAgXTsgdGhlbgotICAgIGVjaG8gIkVycm9yIGdldHRpbmcgb3B0aW9ucyIgPiYyCi0gICAgZXhpdCAyCi1maQotCi10aW1lb3V0PTE1Ci0KLWV2YWwgc2V0IC0tICIkQVJHUyIgCi0KLXdoaWxlIHRydWU7IGRvIAotICAgIGNhc2UgJDEgaW4gCi0gICAgICAgIC1oKQotICAgICAgICAgICAgdXNhZ2UgCi0gICAgICAgICAgICBleGl0IDAgCi0gICAgICAgICAgICA7OyAKLSAgICAgICAgLXApCi0gICAgICAgICAgICBwb3J0PSIkMiIKLSAgICAgICAgICAgIHNoaWZ0Ci0gICAgICAgICAgICA7OwotICAgICAgICAtdCkKLSAgICAgICAgICAgIHRpbWVvdXQ9IiQyIgotICAgICAgICAgICAgc2hpZnQKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIC0tKSAKLSAgICAgICAgICAgIHNoaWZ0Ci0gICAgICAgICAgICBicmVhawotICAgICAgICAgICAgOzsKLSAgICAgICAgLSopIAotICAgICAgICAgICAgZWNobyAiJDA6IGVycm9yIC0gdW5yZWNvZ25pemVkIG9wdGlvbiAkMSIgMT4mMgotICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgICAgICA7OwotICAgICAgICAqKSAKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICA7OwotICAgIGVzYWMKLSAgICBzaGlmdAotZG9uZQotCi1pZiBbICEgIiRwb3J0IiBdOyB0aGVuCi0gICAgdXNhZ2UKLSAgICBleGl0IDEKLWZpCi0KLWZvcigoaT0wOyBpIDwgMTU7IGkrKyApKTsgZG8KLSAgICBpZiAhIHBpZD0kKGxzb2YgLXQgLWlUQ1A6JHBvcnQgLXNUQ1A6TElTVEVOKTsgdGhlbgotICAgICAgICBleGl0IDAKLSAgICBmaQotICAgIGtpbGwgJHtwaWR9Ci0gICAgc2xlZXAgMQotZG9uZQotCi1lY2hvICJFcnJvcjogUHJvZ3JhbSBvbiBwb3J0ICRwaWQgZmFpbGVkIHRvIGV4aXQiID4mMgotZXhpdCAxMApkaWZmIC0tZ2l0IGEvY2xpL2J1aWxkL3N0YXJ0LWFuZC13YWl0LWZvci1wb3J0LnNoIGIvY2xpL2J1aWxkL3N0YXJ0LWFuZC13YWl0LWZvci1wb3J0LnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxNWY0ZTRhLi4wMDAwMDAwCi0tLSBhL2NsaS9idWlsZC9zdGFydC1hbmQtd2FpdC1mb3ItcG9ydC5zaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0jIS9iaW4vYmFzaAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLXVzYWdlKCkgewotICAgIGNhdCA8PEVPRiA+JjIKLQotJDAgLSBzdGFydCBwcm9jZXNzIGluIHRoZSBiYWNrZ3JvdW5kLCB3YWl0IDE1IHNlY3MgZm9yIHBvcnQgdG8gY29tZSB1cAotCi1DYWxsIHN5bnRheDoKLQotICQwIC1wIDxwb3J0PiBbT1BUU10gPGNtZD4gW2FyZzFdIFthcmcyLi4uXQotCi1PUFRJT05TOgotICAgLXAgIDxwb3J0PiAgICAgd2FpdCBmb3IgcG9ydCA8cG9ydD4gdG8gbGlzdGVuIG9uCi0gICAtbCAgPGxvZ2ZpbGU+ICBsb2dmaWxlIHRvIHVzZSBmb3Igbm9odXAgb3V0cHV0Ci0gICAtdCAgPHRpbWU+ICAgICB3YWl0IDx0aW1lPiBzZWNvbmRzIGZvciBwb3J0IHRvIHNob3cgdXAKLQotICAgLWggICAgICAgICAgICB0aGlzIGhlbHAKLQotRU9GCi19Ci0KLQotUFJPR05BTUU9IiQwIgotU0hPUlRPUFRTPSJocDpsOnQ6IiAKLQotQVJHUz0kKGdldG9wdCAkU0hPUlRPUFRTICAiJEAiICkKLQotaWYgWyAkPyAtZ3QgMCBdOyB0aGVuCi0gICAgZWNobyAiRXJyb3IgcGFyc2luZyBvcHRpb25zIiA+JjIKLSAgICBleGl0IDEKLWZpCi10aW1lb3V0PTE1Ci0KLWV2YWwgc2V0IC0tICIkQVJHUyIgCi0KLXdoaWxlIHRydWU7IGRvIAotICAgIGNhc2UgJDEgaW4gCi0gICAgICAgIC1oKQotICAgICAgICAgICAgdXNhZ2UgCi0gICAgICAgICAgICBleGl0IDAgCi0gICAgICAgICAgICA7OyAKLSAgICAgICAgLXApCi0gICAgICAgICAgICBwb3J0PSIkMiIKLSAgICAgICAgICAgIHNoaWZ0Ci0gICAgICAgICAgICA7OwotICAgICAgICAtbCkKLSAgICAgICAgICAgIGxvZz0iJDIiCi0gICAgICAgICAgICBzaGlmdAotICAgICAgICAgICAgOzsKLSAgICAgICAgLXQpCi0gICAgICAgICAgICB0aW1lb3V0PSIkMiIKLSAgICAgICAgICAgIHNoaWZ0Ci0gICAgICAgICAgICA7OwotICAgICAgICAtLSkgCi0gICAgICAgICAgICBzaGlmdAotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIC0qKSAKLSAgICAgICAgICAgIGVjaG8gIiQwOiBlcnJvciAtIHVucmVjb2duaXplZCBvcHRpb24gJDEiIDE+JjIKLSAgICAgICAgICAgIGV4aXQgMQotICAgICAgICAgICAgOzsKLSAgICAgICAgKikgCi0gICAgICAgICAgICBicmVhawotICAgICAgICAgICAgOzsKLSAgICBlc2FjCi0gICAgc2hpZnQKLWRvbmUKLQotaWYgWyAhICIkcG9ydCIgLW8gISAiJCoiIF07IHRoZW4KLSAgICB1c2FnZQotICAgIGV4aXQgMQotZmkKLQotaWYgWyAhICIkbG9nIiBdOyB0aGVuCi0gICAgaWYgWyAiJFZJUlRVQUxFTlYiIF07IHRoZW4KLSAgICAgICAgbG9nZGlyPSIkVklSVFVBTEVOVi9sb2ciCi0gICAgZWxzZQotICAgICAgICBsb2dkaXI9Ii90bXAiCi0gICAgZmkKLSAgICBsb2c9IiRsb2dkaXIvJChiYXNlbmFtZSAkMSkubG9nIgotZmkKLQotaWYgcGlkPSQobHNvZiAtdCAtaVRDUDokcG9ydCAtc1RDUDpMSVNURU4pOyB0aGVuCi0gICAgZWNobyAiJCogYWxyZWFkeSBydW5uaW5nIG9uIHBvcnQgJHBvcnQiID4mMQotICAgIGV4aXQgMAotZmkKLQotZWNobyAiTGF1bmNoaW5nICQqIChsb2c6ICRsb2cpIiA+JjIKLQotbm9odXAgIiRAIiA+JGxvZyAyPiYxICYKLWlmIFsgJD8gLWd0IDAgXTsgdGhlbiAKLSAgICBlY2hvICJFcnJvcjogTGF1bmNoIG9mICRAIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAkPyIgPiYyIAotICAgIGV4aXQgMTEKLWZpCi0KLWVjaG8gLW4gIldhaXRpbmcgZm9yIHBvcnQgJHBvcnQuLi4iID4mMgotZm9yKChpPTA7IGkgPCAkdGltZW91dDsgaSsrICkpOyBkbwotICAgIGlmIHBpZD0kKGxzb2YgLXQgLWlUQ1A6JHBvcnQgLXNUQ1A6TElTVEVOKTsgdGhlbgotICAgICAgICBlY2hvICIgT0siCi0gICAgICAgIGV4aXQgMAotICAgIGZpCi0gICAgc2xlZXAgMQotICAgIGVjaG8gLW4gIi4iCi1kb25lCi0KLWVjaG8gIiBGQUlMOiBMYXVuY2hlZCBwcm9ncmFtICRAIGZhaWxlZCB0byBicmluZyB1cCBwb3J0IHdpdGhpbiAkdGltZW91dCBzZWNvbmRzIiA+JjIKLWV4aXQgMTAKZGlmZiAtLWdpdCBhL2NsaS9jbGkvLmdpdGlnbm9yZSBiL2NsaS9jbGkvLmdpdGlnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjFlN2ViOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpLy5naXRpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLW1vZGVsX2luZm9fbGlzdC5weQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL01BTklGRVNULmluIGIvY2xpL2NsaS9NQU5JRkVTVC5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZWU0ZTEyYi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL01BTklGRVNULmluCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmNsdWRlIGRhdGEvb3VpLnR4dAotcmVjdXJzaXZlLWluY2x1ZGUgZG9jdW1lbnRhdGlvbiAqCmRpZmYgLS1naXQgYS9jbGkvY2xpL1JFU1BJTiBiL2NsaS9jbGkvUkVTUElOCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5OGI2MmNkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvUkVTUElOCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIzgvMjkvMjAxMi4xCmRpZmYgLS1naXQgYS9jbGkvY2xpL19faW5pdF9fLnB5IGIvY2xpL2NsaS9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWFiMjc4My4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvY19hY3Rpb25zLnB5IGIvY2xpL2NsaS9jX2FjdGlvbnMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDIyNzM3MDkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9jX2FjdGlvbnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MTQ2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDExLDIwMTIsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IHJlCi1pbXBvcnQgbnVtYmVycwotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdHlwZXMKLWltcG9ydCBqc29uCi1pbXBvcnQgdGltZQotaW1wb3J0IHN5cwotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgb3MKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgdXJsbGliMiAjIGV4Y2VwdGlvbiwgZHVtcF9sb2coKQotCi1pbXBvcnQgbW9kaQotaW1wb3J0IGVycm9yCi1pbXBvcnQgY29tbWFuZAotaW1wb3J0IHJ1bl9jb25maWcKLWltcG9ydCByZXN0X3RvX21vZGVsCi1pbXBvcnQgdXJsX2NhY2hlCi0KLWZyb20gbWlkdyBpbXBvcnQgKgotZnJvbSB2bnN3IGltcG9ydCAqCi0jZnJvbSBodG1sNWxpYi5jb25zdGFudHMgaW1wb3J0IERhdGFMb3NzV2FybmluZwotCi1vbm9zPTEKLSMKLSMgQUNUSU9OIFBST0NTCi0jRm9ybWF0IGFjdGlvbnMgZm9yIHN0YXRzIHBlciB0YWJsZQotZGVmIHJlbW92ZV91bmljb2RlcyhhY3Rpb25zKToKLSAgIAotICAgIGlmIGFjdGlvbnM6Ci0gICAgICAgICNUT0RPOiBDaGVjazotIFdoeSBJIGhhdmUgdG8gcmVtb3ZlIGxhc3QgdHdvIGNoYXJhY3RlciBmcm9tIHN0cmluZwotICAgICAgICAjaW5zdGVhZCBvZiAxIGNoYXJhY3RlciB0byBnZXQgcmlkIG9mIGNvbW1hIGZyb20gbGFzdCBhY2l0b24KLSAgICAgICAgYT0nJwotICAgICAgICBiPScnCi0gICAgICAgIG5ld0FjdGlvbnM9JycKLSAgICAgICAgaXNSZW1vdmVkX3UgPSBGYWxzZQotICAgICAgICBmb3IgY2ggaW4gYWN0aW9uczoKLSAgICAgICAgICAgIGlmIGNoID09J3UnOgotICAgICAgICAgICAgICAgIGE9ICd1JwotICAgICAgICAgICAgaWYgY2ggPT0nXCcnOgotICAgICAgICAgICAgICAgIGI9ICdcJycKLSAgICAgICAgICAgICAgICBpZiBpc1JlbW92ZWRfdToKLSAgICAgICAgICAgICAgICAgICAgaXNSZW1vdmVkX3U9RmFsc2UKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiAoYStiKSA9PSAndVwnJzoKLSAgICAgICAgICAgICAgICAgICAgbmV3QWN0aW9ucyA9IG5ld0FjdGlvbnNbOi0xXQotICAgICAgICAgICAgICAgICAgICBhPSAnJwotICAgICAgICAgICAgICAgICAgICBpc1JlbW92ZWRfdSA9IFRydWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmV3QWN0aW9ucyArPSBjaAotICAgICAgICByZXR1cm4gbmV3QWN0aW9ucwotICAgIGVsc2U6Ci0gICAgICAgICcnCi1kZWYgcmVuYW1lQWN0aW9ucyhhY3Rpb25zKToKLSAgIAotICAgIGFjdGlvbnMgPSBhY3Rpb25zLnJlcGxhY2UoJ0dPVE9fVEFCTEUnLCdHT1RPJykKLSAgICBhY3Rpb25zID0gYWN0aW9ucy5yZXBsYWNlKCdXUklURV9BQ1RJT05TJywnV1JJVEUnKQotICAgIGFjdGlvbnMgPSBhY3Rpb25zLnJlcGxhY2UoJ0FQUExZX0FDVElPTlMnLCdBUFBMWScpCi0gICAgYWN0aW9ucyA9IGFjdGlvbnMucmVwbGFjZSgnREVDX05XX1RUTDogVHJ1ZScsJ0RFQ19OV19UVEwnKQotICAgIGFjdGlvbnMgPSBhY3Rpb25zLnJlcGxhY2UoJ1BPUF9NUExTOiBUcnVlJywnUE9QX01QTFMnKQotICAgIGFjdGlvbnMgPSBhY3Rpb25zLnJlcGxhY2UoJ0NPUFlfVFRMX0lOOiBUcnVlJywnQ09QWV9UVExfSU4nKQotICAgIGFjdGlvbnMgPSBhY3Rpb25zLnJlcGxhY2UoJ0NPUFlfVFRMX09VVDogVHJ1ZScsJ0NPUFlfVFRMX09VVCcpCi0gICAgYWN0aW9ucyA9IGFjdGlvbnMucmVwbGFjZSgnREVDX01QTFNfVFRMOiBUcnVlJywnREVDX01QTFNfVFRMJykKLSAgICBhY3Rpb25zID0gYWN0aW9ucy5yZXBsYWNlKCdTRVRfRExfU1JDJywnU1JDX01BQycpCi0gICAgYWN0aW9ucyA9IGFjdGlvbnMucmVwbGFjZSgnU0VUX0RMX0RTVCcsJ0RTVF9NQUMnKQotICAgIGFjdGlvbnMgPSBhY3Rpb25zLnJlcGxhY2UoJ1NFVF9OV19TUkMnLCdTUkNfSVAnKQotICAgIGFjdGlvbnMgPSBhY3Rpb25zLnJlcGxhY2UoJ1NFVF9OV19EU1QnLCdEU1RfSVAnKQotICAgIGFjdGlvbnMgPSBhY3Rpb25zLnJlcGxhY2UoJ0NMRUFSX0FDVElPTlM6IHtDTEVBUl9BQ1RJT05TOiBUcnVlfScsJ0NMRUFSX0FDVElPTlMnKQotICAgIAotICAgIHJldHVybiBhY3Rpb25zCi0KLWRlZiBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQsIG1lc3NhZ2U9Tm9uZSk6Ci0gICAgaWYgaXNpbnN0YW5jZShyZXN1bHQsIGNvbGxlY3Rpb25zLk1hcHBpbmcpOgotICAgICAgICBlcnJvcl90eXBlID0gcmVzdWx0LmdldCgnZXJyb3JfdHlwZScpCi0gICAgICAgIGlmIGVycm9yX3R5cGU6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kUmVzdEVycm9yKHJlc3VsdCwgbWVzc2FnZSkKLQotdHVubmVsX2lkPU5vbmUKLXR1bm5lbF9kaWN0PXt9Ci1kZWYgdHVubmVsX2NyZWF0ZShkYXRhPU5vbmUpOgotICAgIGdsb2JhbCB0dW5uZWxfaWQsdHVubmVsX2RpY3QKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAidHVubmVsX2NyZWF0ZToiICwgZGF0YQotICAgIGlmIGRhdGEuaGFzX2tleSgndHVubmVsLWlkJyk6Ci0gICAgICAgIGlmICh0dW5uZWxfaWQgIT0gTm9uZSk6Ci0gICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgIHByaW50ICJ0dW5uZWxfY3JlYXRlOiBwcmV2aW91cyBkYXRhIGlzIG5vdCBjbGVhbmVkIHVwIgotICAgICAgICAgICAgdHVubmVsX2lkPU5vbmUKLSAgICAgICAgICAgIHR1bm5lbF9kaWN0PXt9Ci0gICAgICAgIHR1bm5lbF9pZD1kYXRhWyd0dW5uZWwtaWQnXQotICAgICAgICB0dW5uZWxfZGljdFt0dW5uZWxfaWRdPVtdCi0gICAgaWYgZGF0YS5oYXNfa2V5KCdub2RlLWxhYmVsJyk6ICAgIAotICAgICAgICB0dW5uZWxfZGljdFt0dW5uZWxfaWRdLmFwcGVuZChkYXRhWydub2RlLWxhYmVsJ10pCi0gICAgaWYgZGF0YS5oYXNfa2V5KCdhZGphY2VuY3ktbGFiZWwnKTogICAgCi0gICAgICAgIHR1bm5lbF9kaWN0W3R1bm5lbF9pZF0uYXBwZW5kKGRhdGFbJ2FkamFjZW5jeS1sYWJlbCddKQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJ0dW5uZWxfY3JlYXRlOiIgLCB0dW5uZWxfaWQsIHR1bm5lbF9kaWN0Ci0KLWRlZiB0dW5uZWxfY29uZmlnX2V4aXQoKToKLSAgICBnbG9iYWwgdHVubmVsX2lkLHR1bm5lbF9kaWN0Ci0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgInR1bm5lbF9jb25maWdfZXhpdCBlbnRlcmVkIiwgdHVubmVsX2RpY3QKLSAgICBpZiB0dW5uZWxfZGljdDoKLSAgICAgICAgdXJsX3N0ciA9ICIiCi0gICAgICAgIGVudHJpZXMgPSB0dW5uZWxfZGljdFt0dW5uZWxfaWRdCi0gICAgICAgIHVybF9zdHIgPSAiaHR0cDovLyVzL3Jlc3QvdjEvdHVubmVsLyIgJSAoc2Ruc2guY29udHJvbGxlcikKLSAgICAgICAgb2JqX2RhdGEgPSB7fQotICAgICAgICBvYmpfZGF0YVsndHVubmVsX2lkJ109dHVubmVsX2lkCi0gICAgICAgIG9ial9kYXRhWydsYWJlbF9wYXRoJ109ZW50cmllcwotICAgICAgICByZXN1bHQgPSAiZmFpbCIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9wb3N0X3JlcXVlc3QodXJsX3N0cixvYmpfZGF0YSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGVycm9ycyA9IHNkbnNoLnJlc3RfZXJyb3JfdG9fZGljdChlKQotICAgICAgICAgICAgcHJpbnQgc2Ruc2gucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotICAgICAgICAjIExPT0shIHN1Y2Nlc3NmdWwgc3R1ZmYgc2hvdWxkIGJlIHJldHVybmVkIGluIGpzb24gdG9vLgotICAgICAgICB0dW5uZWxfZGljdCA9IHt9Ci0gICAgICAgIHR1bm5lbF9pZCA9IE5vbmUKLSAgICAgICAgaWYgcmVzdWx0ICE9ICJzdWNjZXNzIjoKLSAgICAgICAgICAgIHByaW50ICJjb21tYW5kIGZhaWxlZCIKLSAgICBlbHNlOgotICAgICAgICBwcmludCAiZW1wdHkgY29tbWFuZCIKLSAgICAjQ2xlYXIgdGhlIHRyYW5zaXQgaW5mb3JtYXRpb24gICAgCi0gICAgICAgICAgICAKLWRlZiB0dW5uZWxfcmVtb3ZlKGRhdGE9Tm9uZSk6Ci0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgInR1bm5lbF9yZW1vdmU6IiAsIGRhdGEKLSAgICB0dW5uZWxfaWQ9ZGF0YVsndHVubmVsLWlkJ10KLSAgICB1cmxfc3RyID0gImh0dHA6Ly8lcy9yZXN0L3YxL3R1bm5lbC8iICUgKHNkbnNoLmNvbnRyb2xsZXIpCi0gICAgb2JqX2RhdGEgPSB7fQotICAgIG9ial9kYXRhWyd0dW5uZWxfaWQnXT1kYXRhWyd0dW5uZWwtaWQnXQotICAgIHJlc3VsdCA9ICJmYWlsIgotICAgIHRyeToKLSAgICAgICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9wb3N0X3JlcXVlc3QodXJsX3N0cixvYmpfZGF0YSwnREVMRVRFJykKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICBlcnJvcnMgPSBzZG5zaC5yZXN0X2Vycm9yX3RvX2RpY3QoZSkKLSAgICAgICAgcHJpbnQgc2Ruc2gucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotICAgIGlmIG5vdCByZXN1bHQuc3RhcnRzd2l0aCgiU1VDQ0VTUyIpOgotICAgICAgICBwcmludCByZXN1bHQKLQotcG9saWN5X29ial9kYXRhID0ge30KLWRlZiBwb2xpY3lfY3JlYXRlKGRhdGE9Tm9uZSk6Ci0gICAgZ2xvYmFsIHBvbGljeV9vYmpfZGF0YQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJwb2xpY3lfY3JlYXRlOiIgLCBkYXRhCi0gICAgaWYgZGF0YS5oYXNfa2V5KCdwb2xpY3ktaWQnKToKLSAgICAgICAgaWYgcG9saWN5X29ial9kYXRhOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAicG9saWN5X2NyZWF0ZTogcHJldmlvdXMgZGF0YSBpcyBub3QgY2xlYW5lZCB1cCIKLSAgICAgICAgICAgIHBvbGljeV9vYmpfZGF0YSA9IHt9Ci0gICAgICAgIHBvbGljeV9vYmpfZGF0YVsncG9saWN5X2lkJ10gPSBkYXRhWydwb2xpY3ktaWQnXQotICAgICAgICBwb2xpY3lfb2JqX2RhdGFbJ3BvbGljeV90eXBlJ10gPSBkYXRhWydwb2xpY3ktdHlwZSddCi0gICAgaWYgZGF0YS5oYXNfa2V5KCdzcmNfaXAnKToKLSAgICAgICAgZm9yIGtleSBpbiBkYXRhOgotICAgICAgICAgICAgcG9saWN5X29ial9kYXRhW2tleV0gPSBkYXRhW2tleV0KLSAgICBpZiBkYXRhLmhhc19rZXkoJ3ByaW9yaXR5Jyk6Ci0gICAgICAgIHBvbGljeV9vYmpfZGF0YVsncHJpb3JpdHknXSA9IGRhdGFbJ3ByaW9yaXR5J10KLSAgICBpZiBkYXRhLmhhc19rZXkoJ3R1bm5lbC1pZCcpOgotICAgICAgICBwb2xpY3lfb2JqX2RhdGFbJ3R1bm5lbF9pZCddID0gZGF0YVsndHVubmVsLWlkJ10KLSAgICAKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCBwb2xpY3lfb2JqX2RhdGEKLSAgICAgIAotZGVmIHBvbGljeV9jb25maWdfZXhpdCgpOgotICAgIGdsb2JhbCBwb2xpY3lfb2JqX2RhdGEKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAicG9saWN5X2NvbmZpZ19leGl0IGVudGVyZWQiLCBwb2xpY3lfb2JqX2RhdGEKLSAgICBpZiBwb2xpY3lfb2JqX2RhdGE6Ci0gICAgICAgIHVybF9zdHIgPSAiaHR0cDovLyVzL3Jlc3QvdjEvcG9saWN5LyIgJSAoc2Ruc2guY29udHJvbGxlcikKLSAgICAgICAgcmVzdWx0ID0gImZhaWwiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdCA9IHNkbnNoLnN0b3JlLnJlc3RfcG9zdF9yZXF1ZXN0KHVybF9zdHIscG9saWN5X29ial9kYXRhKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgZXJyb3JzID0gc2Ruc2gucmVzdF9lcnJvcl90b19kaWN0KGUpCi0gICAgICAgICAgICBwcmludCBzZG5zaC5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgIGlmIHJlc3VsdCAhPSAic3VjY2VzcyI6Ci0gICAgICAgICAgICBwcmludCAiY29tbWFuZCBmYWlsZWQiCi0gICAgICAgIHBvbGljeV9vYmpfZGF0YSA9IHt9Ci0gICAgZWxzZToKLSAgICAgICAgcHJpbnQgImVtcHR5IGNvbW1hbmQiCi0gICAgI0NsZWFyIHRoZSB0cmFuc2l0IGluZm9ybWF0aW9uICAgIAotICAgICAgICAgICAgCi1kZWYgcG9saWN5X3JlbW92ZShkYXRhPU5vbmUpOgotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJwb2xpY3lfcmVtb3ZlOiIgLCBkYXRhCi0gICAgcG9saWN5X2lkPWRhdGFbJ3BvbGljeS1pZCddCi0gICAgdXJsX3N0ciA9ICJodHRwOi8vJXMvcmVzdC92MS9wb2xpY3kvIiAlIChzZG5zaC5jb250cm9sbGVyKQotICAgIG9ial9kYXRhID0ge30KLSAgICBvYmpfZGF0YVsncG9saWN5X2lkJ109ZGF0YVsncG9saWN5LWlkJ10KLSAgICByZXN1bHQgPSAiZmFpbCIKLSAgICB0cnk6Ci0gICAgICAgIHJlc3VsdCA9IHNkbnNoLnN0b3JlLnJlc3RfcG9zdF9yZXF1ZXN0KHVybF9zdHIsb2JqX2RhdGEsJ0RFTEVURScpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgZXJyb3JzID0gc2Ruc2gucmVzdF9lcnJvcl90b19kaWN0KGUpCi0gICAgICAgIHByaW50IHNkbnNoLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykKLSAgICBpZiByZXN1bHQgIT0gImRlbGV0ZWQiOgotICAgICAgICBwcmludCAiY29tbWFuZCBmYWlsZWQiCi0gIAotICAgIAotCi1kZWYgd3JpdGVfZmllbGRzKG9ial90eXBlLCBvYmpfaWQsIGRhdGEpOgotICAgICIiIgotICAgIFR5cGljYWwgYWN0aW9uIHRvIHVwZGF0ZSBmaWVsZHMgb2YgYSByb3cgaW4gdGhlIG1vZGVsCi0KLSAgICBAcGFyYW0gb2JqX3R5cGUgYSBzdHJpbmcsIHRoZSBuYW1lIG9mIHRoZSBkYiB0YWJsZSB0byB1cGRhdGUKLSAgICBAcGFyYW0gb2JqX2lkIGEgc3RyaW5nLCB0aGUgdmFsdWUgb2YgdGhlIHByaW1hcnkga2V5IGluIGZvciB0aGUgdGFibGUKLSAgICBAcGFyYW0gZGF0YSBhIGRpY3QsIHRoZSBuYW1lOnZhbHVlIHBhaXJzIG9mIGRhdGEgdG8gdXBkYXRlIGluIHRoZSB0YWJsZQotICAgICIiIgotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJ3cml0ZV9maWVsZHM6Iiwgb2JqX3R5cGUsIG9ial9pZCwgZGF0YQotCi0gICAgcGtfbmFtZSA9IG1pLnBrKG9ial90eXBlKQotICAgIGlmIG5vdCBwa19uYW1lOgotICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcigiQ2FuJ3QgZmluZCBwcmltYXJ5IGtleSBuYW1lIGZvciB0eXBlOiAlcyIgJSBvYmpfdHlwZSkKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAid3JpdGVfZmllbGRzOiIsIG9ial90eXBlLCBwa19uYW1lLCBvYmpfaWQsIGRhdGEKLSAgICBmb3IgZmsgaW4gbWkub2JqX3R5cGVfZm9yZWlnbl9rZXlzKG9ial90eXBlKToKLSAgICAgICAgaWYgZmsgaW4gZGF0YSBhbmQgbWkuaXNfbnVsbF9hbGxvd2VkKG9ial90eXBlLCBmayk6Ci0gICAgICAgICAgICBpZiBkYXRhW2ZrXSA9PSAnZGVmYXVsdCc6ICMgWFhYIG11Y2ggdG9vIG1hZ2ljLCBzZWVtcyBhbiBvcHRpb24gaGVyZSB3b3VsZCBiZSBnb29kCi0gICAgICAgICAgICAgICAgZGF0YVtma10gPSBOb25lCi0gICAgICAgICAgICAKLSAgICByZXN1bHQgPSBzZG5zaC5yZXN0X3VwZGF0ZV9vYmplY3Qob2JqX3R5cGUsIHBrX25hbWUsIG9ial9pZCwgZGF0YSkKLSAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0KLQotZGVmIHZlcmlmeV9yb3dfaW5jbHVkZXMob2JqX3R5cGUsIHBrX3ZhbHVlLCBkYXRhLCB2ZXJpZnkpOgotICAgICIiIgotICAgIEludGVuZGVkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIGEgdXNlciBlbnRlcnMgJ25vIGZpZWxkIHZhbHVlJywKLSAgICBhbmQgdGhlIGZpZWxkIGlzbid0IGN1cnJlbnRseSBzZXQgdG8gdmFsdWUsICBmb3IgZXhhbXBsZToKLSAgICAnYWRkcmVzcy1zcGFjZSBhczEgOyBubyBhZGRyZXNzLXNwYWNlIGFzMicsIHNob3VsZCBjb21wbGFpbgotICAgIHRoYXQgdGhlICdhZGRyZXNzLXNwYWNlJyBmaWVsZCBpc24ndCBjdXJyZW50bHkgc2V0IHRvICdhczInLgotCi0gICAgQHBhcmFtIG9ial90eXBlIGEgc3RyaW5nLCBpZGVudGlmaWVzIHRoZSBkYiB0YWJsZQotICAgIEBwYXJhbSBwa192YWx1ZSBhIHN0cmluZywgaWRlbnRpZmllcyB0aGUgdmFsdWUgZm9yIHRoZSBwcmltYXJ5IGtleQotICAgIEBwYXJhbSBkYXRhIGlzIGEgZGljdCwgY29sbGVjdGluZyB0aGUgbmFtZTp2YWx1ZSBwYWlycyBmcm9tIHRoZSBkZXNjcmlwdGlvbgotICAgIEB2ZXJpZnkgdGhlIHN0cmluZyBvciBsaXN0IG9mIGZpZWxkIG5hbWVzIHRvIGJlIHZlcmlmaWVkCi0gICAgIiIiCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgInZhbGlkYXRlX3Jvd19pbmNsdWRlczoiLCBvYmpfdHlwZSwgcGtfdmFsdWUsIGRhdGEsIHZlcmlmeQotCi0gICAgaWYgdHlwZSh2ZXJpZnkpID09IHN0cjoKLSAgICAgICAgdmVyaWZ5ID0gW3ZlcmlmeV0gIyBpZiBub3QgYSBsaXN0LCBtYWtlIGl0IGEgbGlzdAotCi0gICAgdHJ5OgotICAgICAgICByb3cgPSBzZG5zaC5nZXRfb2JqZWN0X2Zyb21fc3RvcmUob2JqX3R5cGUsIHBrX3ZhbHVlKQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgIGlmIHNkbnNoLmRlYnVnIG9yIHNkbnNoLmRlYnVnX2JhY2t0cmFjZToKLSAgICAgICAgICAgIHByaW50ICdGYWlsZWQgbG9va3VwIG9mICVzOiVzOiVzJywgKG9ial90eXBlLCBwa192YWx1ZSwgZSkKLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICByYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcigiJXM6ICclcycgZG9lc24ndCBleGlzdCIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqX3R5cGUsIHBrX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuCi0gICAgCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgInZhbGlkYXRlX2luY2x1ZGVzOiAiLCByb3cKLSAgICBmb3IgZmllbGQgaW4gW3ggZm9yIHggaW4gdmVyaWZ5IGlmIHggaW4gZGF0YSBhbmQgeCBpbiByb3ddOgotICAgICAgICBpZiByb3dbZmllbGRdICE9IGRhdGFbZmllbGRdOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoIiVzOiAlcyBmb3VuZCAnJXMnIGN1cnJlbnQgdmFsdWUgJyVzJyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9ial90eXBlLCBmaWVsZCwgZGF0YVtmaWVsZF0sIHJvd1tmaWVsZF0pKQotCi0KLWRlZiByZXNldF9maWVsZHMob2JqX3R5cGUsIGFyZ19kYXRhLAotICAgICAgICAgICAgICAgICBvYmpfaWQgPSBOb25lLCBmaWVsZHMgPSBOb25lLCBtYXRjaF9mb3Jfbm8gPSBOb25lKToKLSAgICAiIiIKLSAgICBGb3IgYW4gb2JqX3R5cGUsIHJldmVydCBmaWVsZHMgYmFjayB0byB0aGVpciBkZWZhdWx0IHZhbHVlLgotICAgIFRoaXMgaXMgdGhlIHR5cGljYWwgYWN0aW9uIGZvciAnbm8nIGNvbW1hbmRzLgotCi0gICAgV2hlbiB2ZXJpZnkgaXMgc2V0LCB0aGlzIGlzIGEgc3RyaW5nIG9yIGxpc3Qgb2YgZmllbGRzIHdobydzIHZhbHVlcwotICAgIG11c3QgbWF0Y2ggaW4gdGhlIHRhYmxlIGZvciB0aGUgcHJpbWFyeSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXNldC4KLSAgICBUaGlzIGFsbG93cyBjb21tYW5kIGRlc2NyaXB0aW9ucyB0byBpZGVudGlmeSBhbnkgZmllbGRzIHdoaWNoIG5lZWQgdG8KLSAgICBiZSBjaGVja2VkIGFnYWluc3QsIHdoZW4gdGhleSBhcmUgZXhwbGljaWRseSBuYW1lZCBpbiB0aGUgJ25vJyBjb21tYW5kLAotICAgIHNvIHRoYXQgJ25vIFhYWCB2YWx1ZScgd2lsbCB2ZXJpZnkgdGhhdCAndmFsdWUnIG1hdGNoZXMgdGhlIGN1cnJlbnQgCi0gICAgcm93J3MgdmFsdWUgYmVmb3JlIGFsbG93aW5nIHRoZSByZXNldCB0byBjb250aW51ZQotCi0gICAgQHBhcmFtIG9ial90eXBlIGEgc3RyaW5nLCBpZGVudGlmaWVzIHRoZSBkYiB0YWJsZQotICAgIEBwYXJhbSBvYmpfaWQgYSBzdHJpbmcsIGlkZW50aWZpZXMgdGhlIHZhbHVlIGZvciB0aGUgcHJpbWFyeSBrZXkgb2YgdGhlIHJvdyBpbiB0aGUgdGFibGUsCi0gICAgICAgICAgICBwb3NzaWJseSB1bnNldCwgdGhlIGtleSBpcyBsb29rZWQgZm9yIGluIHRoZSBhcmdfZGF0YSBpbiB0aGF0IGNhc2UuCi0gICAgQHBhcmFtIGFyZ19kYXRhIGEgZGljdCwgY29sbGVjdGlvbiBvZiBuYW1lOnZhbHVlIHBhaXJzIGZyb20gdGhlIGRlc2NyaXB0aW9uCi0gICAgQHBhcmFtIGZpZWxkcyBhIGxpc3QsIGNvbGxlY3Rpb24gb2YgZmllbGRzIHRvIHVwZGF0ZSBpbiB0aGUgdGFibGUKLSAgICBAcGFyYW0gbWF0Y2hfZm9yX25vIGEgc3RyaW5nIG9yIGxpc3QsIGxpc3Qgb2YgZmllbGRzIHRvIGNoZWNrIGZvciBtYXRjaGVkIHZhbHVlcyBpbiBhcmdfZGF0YQotICAgICIiIgotCi0gICAgaWYgb2JqX3R5cGUgPT0gTm9uZToKLSAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoIk5vIG9iamVjdCB0byByZXNldCAobWlzc2luZyBvYmotdHlwZSkiKQotICAgICAgICAKLSAgICBwa19uYW1lID0gbWkucGsob2JqX3R5cGUpCi0gICAgIyBJZiB0aGUgZmllbGRzIGFyZW4ndCBzcGVjaWZpZWQgZXhwbGljaXRseSwgdGhlbiBkZXJpdmUgZnJvbSB0aGUgYXJnX2RhdGEKLSAgICBpZiBmaWVsZHMgaXMgTm9uZToKLSAgICAgICAgZmllbGRzID0gW10KLSAgICAgICAgZm9yIGZpZWxkIGluIGFyZ19kYXRhLmtleXMoKToKLSAgICAgICAgICAgICMgT25seSBhZGQgYXJndW1lbnRzIHRoYXQgY29ycmVzcG9uZCB0byB2YWxpZCBmaWVsZHMgaW4gdGhlIG9iamVjdAotICAgICAgICAgICAgaWYgbWkub2JqX3R5cGVfaGFzX2ZpZWxkKG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICAgICAgICAgaWYgZmllbGQgIT0gcGtfbmFtZTogIyBkb24ndCByZXNldCBwcmltYXJ5IGtleXMKLSAgICAgICAgICAgICAgICAgICAgZmllbGRzLmFwcGVuZChmaWVsZCkKLQotICAgIGlmIGxlbihmaWVsZHMpID09IDA6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJObyBmaWVsZHMgdG8gcmVzZXQ6IHR5cGU6ICVzIiAlIG9ial90eXBlKQotIAotICAgICMgR2V0IHRoZSBwcmltYXJ5IGtleSBuYW1lCi0gICAgaWYgbm90IHBrX25hbWU6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJDYW4ndCBmaW5kIHByaW1hcnkga2V5IG5hbWUgZm9yIHR5cGU6ICVzIiAlIG9ial90eXBlKQotICAgIGlmIG9ial9pZCA9PSBOb25lOgotICAgICAgICBpZiBwa19uYW1lIGluIGFyZ19kYXRhOgotICAgICAgICAgICAgb2JqX2lkID0gYXJnX2RhdGFbcGtfbmFtZV0KLSAgICAgICAgZWxpZiBtaS5maWVsZF9kZWZhdWx0X3ZhbHVlKG9ial90eXBlLCBwa19uYW1lKToKLSAgICAgICAgICAgICMgdW51c3VhbCwgYnV0IG5vdCBpbXBvc3NpYmxlIGZvciBzaW5nbGV0b25zCi0gICAgICAgICAgICBvYmpfaWQgPSBtaS5maWVsZF9kZWZhdWx0X3ZhbHVlKG9ial90eXBlLCBwa19uYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoIkNhbid0IGZpbmQgaWQgdmFsdWUgbmFtZSBmb3IgdHlwZTogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZpZWxkICVzIiAlIChvYmpfdHlwZSwgcGtfbmFtZSkpCi0gICAgCi0gICAgaWYgbWF0Y2hfZm9yX25vOgotICAgICAgICB2ZXJpZnlfcm93X2luY2x1ZGVzKG9ial90eXBlLCBvYmpfaWQsIGFyZ19kYXRhLCBtYXRjaF9mb3Jfbm8pCi0KLSAgICAjIEdldCB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIHNwZWNpZmllZCBmaWVsZCBmcm9tIENMSSBtb2RlbCBpbmZvCi0gICAgZGF0YSA9IHt9Ci0gICAgZm9yIGZpZWxkIGluIGZpZWxkczoKLSAgICAgICAgaWYgZmllbGQgPT0gcGtfbmFtZToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIHR5cGVfaW5mbyA9IG1pLmNsaV9tb2RlbF9pbmZvLmdldF9maWVsZF9pbmZvKG9ial90eXBlLCBmaWVsZCkKLSAgICAgICAgaWYgdHlwZV9pbmZvID09IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcigiQ2FuJ3QgZmluZCBmaWVsZCBkZXRhaWxzIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgJXMgaW4gdHlwZSAlcyIgJSAoZmllbGQsIG9ial90eXBlKSkKLSAgICAgICAgZGF0YVtmaWVsZF0gPSB0eXBlX2luZm8uZ2V0KCdkZWZhdWx0JykKLSAgICAgICAgaWYgZGF0YVtmaWVsZF0gPT0gTm9uZSBhbmQgdHlwZV9pbmZvLmdldCgndHlwZScpID09ICdCb29sZWFuRmllbGQnOgotICAgICAgICAgICAgZGF0YVtmaWVsZF0gPSBGYWxzZQotICAgICAgICAjIHdoeSBkb2VzIGJvb2xlYW4gbm90IHJlc3BlY3QgdGhlIGRlZmF1bHQgaW4gdGhlIG1vZGVsPyE/Ci0gICAgICAgICMgZGF0YVtmaWVsZF0gPSB0eXBlX2luZm8uZ2V0KCdkZWZhdWx0JykgaWYgdHlwZV9pbmZvLmdldCgndHlwZScpICE9ICdCb29sZWFuRmllbGQnIGVsc2UgRmFsc2UKLSAgICAKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAicmVzZXRfZmllbGRzOiIsIG9ial90eXBlLCBwa19uYW1lLCBvYmpfaWQsIGRhdGEsIG1hdGNoX2Zvcl9ubwotCi0gICAgIyBJbnZva2UgdGhlIFJFU1QgQVBJIHRvIHNldCB0aGUgZGVmYXVsdCB2YWx1ZXMKLSAgICB0cnk6Ci0gICAgICAgIHJlc3VsdCA9IHNkbnNoLnJlc3RfdXBkYXRlX29iamVjdChvYmpfdHlwZSwgcGtfbmFtZSwgb2JqX2lkLCBkYXRhKQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgIGVycm9ycyA9IHNkbnNoLnJlc3RfZXJyb3JfdG9fZGljdChlLCBvYmpfdHlwZSkKLSAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZEVycm9yKCdSRVNUJywgc2Ruc2gucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKSkKLQotCi1kZWYgb2JqX3R5cGVfZmllbGRzX2hhdmVfZGVmYXVsdF92YWx1ZShvYmpfdHlwZSwgcm93LCBkYXRhKToKLSAgICAiIiIKLSAgICBSZXR1cm4gVHJ1ZSB3aGVuIGFsbCB0aGUgZmllbGRzIGhhdmUgYSBkZWZhdWx0IHZhbHVlLAotICAgIHJvdyBpcyB0aGUgcXVlcmllZCBkYXRhIGZyb20gdGhlIHN0b3JlLCAKLSAgICBkYXRhIGlzIHRoZSBkYXRhIHRvIGJlIHVwZGF0ZWQuCi0KLSAgICBUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgd2hldGhlciB0byBkZWxldGUgb3IgdXBkYXRlCi0gICAgdGhlIHJvdyBpbiB0aGUgc3RvcmUuCi0KLSAgICAiIiIKLQotICAgIGNrZiA9IFtdCi0gICAgaWYgbWkuaXNfY29tcG91bmRfa2V5KG9ial90eXBlLCBtaS5wayhvYmpfdHlwZSkpOgotICAgICAgICAjIFhYWCBwcmltaXRpdmUgY29tcG91bmQga2V5cycgdG9vPwotICAgICAgICBja2YgPSBtaS5jb21wb3VuZF9rZXlfZmllbGRzKG9ial90eXBlLCBtaS5wayhvYmpfdHlwZSkpCi0KLSAgICBmb3IgZmllbGQgaW4gbWkub2JqX3R5cGVfZmllbGRzKG9ial90eXBlKToKLSAgICAgICAgaWYgbWkuaXNfcHJpbWFyeV9rZXkob2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIG1pLmlzX2ZvcmVpZ25fa2V5KG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICAgICAjIHBlcmhhcHMgb25seSBhbGxvdyBhIHNpbmdsZSBmb3JlaWduIGtleT8KLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICMgYWxzbyBhbnkgZmllbGRzIHdoaWNoIGFyZSB1c2VkIHRvIGNvbXBvdW5kIHRoZSBpZGVudC4KLSAgICAgICAgaWYgZmllbGQgaW4gY2tmOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgIyBOZWVkcyBhIGJldHRlciB3YXkgdG8gaWRlbnRpZnkgbm9uLW1vZGVsLWZpZWxkcwotICAgICAgICBpZiBmaWVsZCA9PSAnSWR4JzoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIG1pLmlzX251bGxfYWxsb3dlZChvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAgICAgIyBkb2VzIHRoaXMgbmVlZCB0byBiZSBtb3JlIGNvbXBsZXg/Ci0gICAgICAgICAgICBpZiBmaWVsZCBpbiBkYXRhIGFuZCBkYXRhW2ZpZWxkXSAhPSBOb25lOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgY29udGludWUgIyBuZXh0IGZpZWxkCi0gICAgICAgIGRlZmF1bHRfdmFsdWUgPSBtaS5maWVsZF9kZWZhdWx0X3ZhbHVlKG9ial90eXBlLCBmaWVsZCkKLSAgICAgICAgaWYgZGVmYXVsdF92YWx1ZSA9PSBOb25lOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAnZGVmYXVsdF92YWx1ZTogbm8gZGVmYXVsdDogJXMgJXMnICUgKG9ial90eXBlLCBmaWVsZCkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAjIGNoZWNrIHRvIHNlZSBpZiB0aGUgdXBkYXRlZCB2YWx1ZSB3b3VsZCBiZSB0aGUgZGVmYXVsdAotICAgICAgICBpZiBmaWVsZCBpbiBkYXRhIGFuZCBkYXRhW2ZpZWxkXSAhPSBkZWZhdWx0X3ZhbHVlOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAnZGVmYXVsdF92YWx1ZTogbm90IGRlZmF1bHQgJXMgJXMgJXMnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkLCBkYXRhW2ZpZWxkXSwgZGVmYXVsdF92YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBlbGlmIHJvdy5nZXQoZmllbGQsIGRlZmF1bHRfdmFsdWUpICE9IGRlZmF1bHRfdmFsdWU6Ci0gICAgICAgICAgICBpZiBmaWVsZCBpbiBkYXRhIGFuZCBkYXRhW2ZpZWxkXSA9PSBkZWZhdWx0X3ZhbHVlOgotICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgICAgIHByaW50ICdkZWZhdWx0X3ZhbHVlOiBkYiBub3QgZGVmYXVsdCAlcyAlcyAlcycgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAnIG5ldyB2YWx1ZSBpbiBkYXRhICVzIGlzIGRlZmF1bHQnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCwgcm93W2ZpZWxkXSwgZGVmYXVsdF92YWx1ZSwgZGF0YVtmaWVsZF0pCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgcHJpbnQgJ2RlZmF1bHRfdmFsdWU6IGRiIG5vdCBkZWZhdWx0ICVzICVzICVzJyAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCwgcm93W2ZpZWxkXSwgZGVmYXVsdF92YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIHVwZGF0ZV9jb25maWcob2JqX3R5cGUsIG9ial9pZCwgZGF0YSwgbm9fY29tbWFuZCk6Ci0gICAgIiIiCi0gICAgdXBkYXRlX2NvbmZpZyBpcyBpbnRlbmRlZCB0byB3cml0ZSBhIHJvdyB3aGVuIHRoZSBkZXNjcmliZWQgZGF0YQotICAgIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgZmllbGRzIG9mICB0aGUgcm93LgotCi0gICAgV2hlbiB0aGUgZGF0YSBkZXNjcmliZWQgaW4gdGhlIGNhbGwgdXBkYXRlcyB0aGUgZmllbGQncyB2YWx1ZXMKLSAgICB0byBhbGwgZGVmYXVsdCB2YWx1ZXMsIHRoZSByb3cgYXNzb2NpYXRlZCB3aXRoIHRoZSBvYmpfaWQgaXMKLSAgICBkZWxldGVkLiAKLQotICAgIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbW9kZWxzIHdoaWNoIGNvbnRhaW4gY29uZmlndXJhdGlvbgotICAgIHJvdyBkYXRhLCBhbmQgdGhhdCBldmVyeSBmaWVsZCBoYXMgYSBkZWZhdWx0IHZhbHVlLAotICAgIHNvIHRoYXQgd2hlbiB0aGUgY29uZmlnIGRhdGEgaXMgdHJhbnNpdGlvbmVkIHRvIHRoZSBkZWZhdWx0Ci0gICAgc3RhdGUsIHRoZSByb3cgaXMgaW50ZW5kZWQgdG8gYmUgcmVtb3ZlZC4gIEZvciB0aGVzZSBzb3J0cyBvZgotICAgIGNvbW1hbmQgZGVzY3JpcHRpb25zLCB1cGRhdGluZyBhIGZpZWxkIHRvIHNvbWUgZGVmYXVsdCB2YWx1ZQotICAgIG1heSByZXN1bHQgaW4gdGhlIHJvdyBnZXR0aW5nIGRlbGV0ZWQuCi0gICAgIiIiCi0KLSAgICBjX2RhdGEgPSBkaWN0KGRhdGEpICAjIG1ha2UgYSBsb2NhbCBjb3B5Ci0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgInVwZGF0ZV9jb25maWc6ICIsIG9ial90eXBlLCBvYmpfaWQsIGNfZGF0YSwgbm9fY29tbWFuZAotICAgIAotICAgIGlmIG5vdCBtaS5vYmpfdHlwZV9leGlzdHMob2JqX3R5cGUpOgotICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcigiVW5rbm93biBvYmotdHlwZTogJXMiICUgb2JqX3R5cGUpCi0gICAgICAgIAotICAgICMgY29sbGVjdCBhbnkgZGljdC5rZXkgbmFtZXMgd2hpY2ggYXJlbid0IGZpZWxkcyBpbiB0aGUgb2JqZWN0Ci0gICAgZm9yIHVua25vd25fZmllbGQgaW4gW3ggZm9yIHggaW4gY19kYXRhLmtleXMoKSBpZiBub3QgbWkub2JqX3R5cGVfaGFzX2ZpZWxkKG9ial90eXBlLCB4KV06Ci0gICAgICAgIGRlbCBjX2RhdGFbdW5rbm93bl9maWVsZF0KLQotICAgICMgaWYgaXRzIGEgbm8gY29tbWFuZCwgc2V0IHRoZSB2YWx1ZSB0byAnTm9uZScgaWYgaXQncyBhbGxvd2VkLAotICAgICMgb2YgdG8gaXRzIGRlZmF1bHQgdmFsdWUgb3RoZXJ3aXNlCi0gICAgaWYgbm9fY29tbWFuZDoKLSAgICAgICAgZm9yIGZpZWxkIGluIGNfZGF0YS5rZXlzKCk6Ci0gICAgICAgICAgICBpZiBtaS5pc19udWxsX2FsbG93ZWQob2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgICAgICAgICBjX2RhdGFbZmllbGRdID0gTm9uZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIHJlcXVpcmVkIHRvIGhhdmUgYSBkZWZhdWx0IHZhbHVlCi0gICAgICAgICAgICAgICAgY19kYXRhW2ZpZWxkXSA9IG1pLmZpZWxkX2RlZmF1bHRfdmFsdWUob2JqX3R5cGUsIGZpZWxkKQotICAgICAgICAgICAgCi0gICAgIyBHZXQgdGhlIHByaW1hcnkga2V5IG5hbWUKLSAgICBwa19uYW1lID0gbWkucGsob2JqX3R5cGUpCi0gICAgaWYgbm90IHBrX25hbWU6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJDYW4ndCBmaW5kIHByaW1hcnkga2V5IG5hbWUgZm9yIHR5cGU6ICVzIiAlIG9ial90eXBlKQotICAgIHBrX3ZhbHVlID0gb2JqX2lkCi0gICAgaWYgcGtfbmFtZSBpbiBkYXRhOgotICAgICAgICBwa192YWx1ZSA9IGRhdGFbcGtfbmFtZV0KLSAgICBpZiBwa19uYW1lIGluIGNfZGF0YToKLSAgICAgICAgZGVsIGNfZGF0YVtwa19uYW1lXQotICAgIAotICAgICMgUXVlcnkgZm9yIHRoZSByb3csIGlmIGl0IGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSB0aGUgaXRlbSBpZiBhbnkgaXRlbSBpc24ndCBkZWZhdWx0Ci0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgInVwZGF0ZV9jb25maWc6IHF1ZXJ5OiIsIG9ial90eXBlLCBwa192YWx1ZQotCi0gICAgcmVzdWx0ID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKG9ial90eXBlLCB7IHBrX25hbWUgOiBwa192YWx1ZSB9KQotICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLSAgICBpZiBsZW4ocmVzdWx0KSA9PSAwOgotICAgICAgICAjIHJlc3VsdFswXSAtPiBkaWN0aW9uYXJ5IG9mIGZpZWxkOnZhbHVlIHBhaXJzCi0gICAgICAgICMgY2hlY2sgdG8gZW5zdXJlIGNfZGF0YSBpc24ndCBqdXN0IGRlZmF1bHQgcm93IHZhbHVlcwotICAgICAgICBpZiBub3Qgb2JqX3R5cGVfZmllbGRzX2hhdmVfZGVmYXVsdF92YWx1ZShvYmpfdHlwZSwge30sIGNfZGF0YSk6Ci0gICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgIHByaW50ICJ1cGRhdGVfY29uZmlnOiBjcmVhdGU6Iiwgb2JqX3R5cGUsIGNfZGF0YQotICAgICAgICAgICAgIyBwb3B1bGF0ZSB0aGUgY3JlYXRlIGRpY3Rpb25hcnkKLSAgICAgICAgICAgIGNyZWF0ZV9kaWN0ID0gZGljdChjX2RhdGEpCi0gICAgICAgICAgICBjcmVhdGVfZGljdFtwa19uYW1lXSA9IHBrX3ZhbHVlCi0gICAgICAgICAgICByZXN1bHQgPSBzZG5zaC5yZXN0X2NyZWF0ZV9vYmplY3Qob2JqX3R5cGUsIGNyZWF0ZV9kaWN0KQotICAgICAgICAgICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAidXBkYXRlX2NvbmZpZzogbm8gY3VycmVudCByb3ciCi0gICAgICAgIHJldHVybgotICAgIGVsc2U6Ci0gICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICBwcmludCAidXBkYXRlX2NvbmZpZzogZm91bmQgcm93IiwgcmVzdWx0WzBdCi0KLSAgICBpZiBsZW4ocmVzdWx0KSA+IDE6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRJbnRlcm5hbEVycm9yKCJNdWx0aXBsZSByb3dzIGZvciBvYmotdHlwZTogJXM6IHBrICVzIiAlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmpfdHlwZSwgcGtfdmFsdWUpKQotCi0gICAgIyBTZWUgaWYgdGhlIGNvbXBsZXRlIHJvdyBuZWVkcyB0byBiZSBkZWxldGVkLgotICAgICMgRm9yIGVhY2ggb2YgdGhlIGN1cnJlbnQgZmllbGRzLCBpZiBhIGZpZWxkJ3MgZGVmYXVsdCBkb2Vzbid0IGV4aXN0LAotICAgICMgc2tpcCB0aGUgcm93IGRlbGV0ZSwgb3IgaWYgYW55IGZpZWxkIGhhcyBhIG5vbi1kZWZhdWx0IHZhbHVlLCB1cGRhdGUKLSAgICAjIHRoZSByZXF1ZXN0ZWQgZmllbGRzIGluc3RlYWQgb2YgZGVsZXRpbmcgdGhlIHJvdy4KLSAgICBpZiBvYmpfdHlwZV9maWVsZHNfaGF2ZV9kZWZhdWx0X3ZhbHVlKG9ial90eXBlLCByZXN1bHRbMF0sIGNfZGF0YSk6Ci0gICAgICAgICMgaWYgdGhlIHRhYmxlIGhhcyBmb3JlaWduIGtleXMsIGNoZWNrIG5vIGNoaWxkcmVuIHJlZmVyIHRvIHRoaXMgdGFibGUuCi0gICAgICAgIG5vX2ZvcmVpZ25fa2V5c19hY3RpdmUgPSBUcnVlCi0gICAgICAgIGlmIG9ial90eXBlIGluIG1pLmZvcmVpZ25fa2V5X3hyZWY6Ci0gICAgICAgICAgICBmb3IgKGZrX29ial90eXBlLCBma19mbikgaW4gbWkuZm9yZWlnbl9rZXlfeHJlZltvYmpfdHlwZV1bbWkucGsob2JqX3R5cGUpXToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJvd3MgPSBzZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZShma19vYmpfdHlwZSwgZmtfZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa192YWx1ZSwgImV4YWN0IikKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgICAgICByb3dzID0gW10KLSAgICAgICAgICAgICAgICBpZiBsZW4ocm93cyk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAidXBkYXRlX2NvbmZpZzogZm9yZWlnbiBrZXkgYWN0aXZlOiIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBma19vYmpfdHlwZSwgZmtfZm4sIHBrX3ZhbHVlCi0gICAgICAgICAgICAgICAgICAgIG5vX2ZvcmVpZ25fa2V5c19hY3RpdmUgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIG5vX2ZvcmVpZ25fa2V5c19hY3RpdmU6Ci0gICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgIHByaW50ICJ1cGRhdGVfY29uZmlnOiBkZWxldGU6Iiwgb2JqX3R5cGUsIHBrX3ZhbHVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGVsZXRlX3Jlc3VsdCA9IHNkbnNoLnJlc3RfZGVsZXRlX29iamVjdHMob2JqX3R5cGUsIHsgcGtfbmFtZSA6IHBrX3ZhbHVlIH0pCi0gICAgICAgICAgICAgICAgY2hlY2tfcmVzdF9yZXN1bHQoZGVsZXRlX3Jlc3VsdCkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgZXJyb3JzID0gc2Ruc2gucmVzdF9lcnJvcl90b19kaWN0KGUpCi0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZEludm9jYXRpb25FcnJvcihzZG5zaC5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgWFhYIGlmIGEgcm93IGZyb20gc29tZSB0YWJsZSBpcyByZW1vdmVkLCBhbmQgdGhhdCB0YWJsZSBpcyB1c2luZwotICAgICAgICAjIGZvcmVpZ24ga2V5cywgdGhlbiB0aGUgdGFibGUgd2hpY2ggaXMgcmVmZXJlZCB0byBvdWdodCB0byBiZQotICAgICAgICAjIHJldmlld2VkLCB0byBzZWUgaWYgYWxsIHRoZSBlbnRyaWVzIG9mIHRoZSByb3cgd2hpY2ggdGhpcyB0YWJsZQotICAgICAgICAjIHJlZmVyJ3MgdG8gYXJlIGRlZmF1bHQsIGFuZCBpZiB0aGF0IHBhcmVudCB0YWJsZSBpcyBhIGNvbmZpZy1zdHlsZQotICAgICAgICAjIHRhYmxlLCB3aXRoIGFsbCBkZWZhdWx0IHZhbHVlcyBmb3IgZXZlcnkgZmllbGQsIHRoZXJlJ3MgYSBnb29kCi0gICAgICAgICMgYXJndW1lbnQgdGhhdCB0aGUgcm93IG91Z2h0IHRvIGJlIHJlbW92ZWQuCi0gICAgICAgIAotICAgICMgU2VlIGlmIGFueSBvZiB0aGUgY19kYXRhIGl0ZW1zIGluIHRoZSBtYXRjaGluZyByb3cgYXJlIGRpZmZlcmVudAotICAgICMgKGllOiBpcyB0aGlzIHVwZGF0ZSByZWFsbHkgbmVjZXNzYXJ5PykKLSAgICB1cGRhdGVfbmVjZXNzYXJ5ID0gRmFsc2UKLSAgICBmb3IgKG5hbWUsIHZhbHVlKSBpbiBjX2RhdGEuaXRlbXMoKToKLSAgICAgICAgaWYgbmFtZSBpbiByZXN1bHRbMF06Ci0gICAgICAgICAgICBpZiB2YWx1ZSAhPSByZXN1bHRbMF1bbmFtZV06Ci0gICAgICAgICAgICAgICAgdXBkYXRlX25lY2Vzc2FyeSA9IFRydWUKLSAgICAgICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgICAgICBwcmludCAidXBkYXRlX2NvbmZpZzogdXBkYXRlIG5lY2Vzc2FyeToiLCBuYW1lLCByZXN1bHRbMF1bbmFtZV0sIHZhbHVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1cGRhdGVfbmVjZXNzYXJ5ID0gVHJ1ZQotCi0gICAgaWYgbm90IHVwZGF0ZV9uZWNlc3Nhcnk6Ci0gICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICBwcmludCAidXBkYXRlX2NvbmZpZzogbm8gdXBkYXRlIG5lZWRlZCIsIG9ial90eXBlLCBwa19uYW1lLCBwa192YWx1ZQotICAgICAgICByZXR1cm4KLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJ1cGRhdGVfY29uZmlnOiB1cGRhdGU6Iiwgb2JqX3R5cGUsIHBrX25hbWUsIHBrX3ZhbHVlLCBjX2RhdGEKLSAgICAjIEludm9rZSB0aGUgUkVTVCBBUEkgdG8gc2V0IHRoZSBkZWZhdWx0IHZhbHVlcwotICAgIHJlc3VsdCA9IHNkbnNoLnJlc3RfdXBkYXRlX29iamVjdChvYmpfdHlwZSwgcGtfbmFtZSwgcGtfdmFsdWUsIGNfZGF0YSkKLSAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0KLQotZGVmIGRlbGV0ZV9vYmplY3RzKG9ial90eXBlLCBkYXRhLCBwYXJlbnRfZmllbGQ9Tm9uZSwgcGFyZW50X2lkPU5vbmUpOgotICAgICIiIgotICAgIERlbGV0ZSBhIHJvdyBpbiB0aGUgdGFibGUuCi0KLSAgICBAcGFyYW0gb2JqX3R5cGUgYSBzdHJpbmcsIHRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byB1cGRhdGUKLSAgICBAcGFyYW0gZGF0YSBhIGRpY3Rpb25hcnksIG5hbWU6dmFsdWUgcGFpcnMgdG8gZGVzY3JpYmUgdGhlIGRlbGV0ZQotICAgIEBwYXJhbSBwYXJlbnRfZmllbGQgYSBzdHJpbmcsIHRoZSBuYW1lIG9mIGEgZmllbGQgaW4gdGhlIG9ial90eXBlLAotICAgICAgICAgICAgaWRlbnRpZnlpbmcgYSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIHRhYmxlLCBhbmQgYW5vdGhlciB0YWJsZQotICAgIEBwYXJhbSBwYXJlbnRfaWQgYSBzdHJpbmcsIHRoZSB2YWx1ZSBvZiB0aGUgcGFyZW50X2ZpZWxkLCB0byBpZGVudGlmeQotICAgICAgICAgICAgYW5vdGhlciByb3cgaW4gdGhlIG90aGVyIHRhYmxlIGlkZW50aWZpZWQgYnkgYSBmaWVsZCBpbiB0aGlzIHRhYmxlCi0gICAgIiIiCi0KLSAgICBwa19uYW1lID0gbWkucGsob2JqX3R5cGUpCi0gICAgaWYgbm90IHBrX25hbWU6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJDYW4ndCBmaW5kIHByaW1hcnkga2V5IG5hbWUgZm9yIHR5cGU6ICVzIiAlIG9ial90eXBlKQotCi0gICAgcXVlcnlfZGF0YSA9IGRpY3QoZGF0YSkKLSAgICBpZiBwYXJlbnRfZmllbGQ6Ci0gICAgICAgIHF1ZXJ5X2RhdGFbcGFyZW50X2ZpZWxkXSA9IHBhcmVudF9pZAotCi0gICAgIyBjYXNlIGNvbnZlcnNpb24KLSAgICBmb3IgZmllbGQgaW4gZGF0YToKLSAgICAgICAgaWYgbWkub2JqX3R5cGVfaGFzX2ZpZWxkKG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICAgICBjYXNlID0gbWkuZ2V0X29ial90eXBlX2ZpZWxkX2Nhc2Vfc2Vuc2l0aXZlKG9ial90eXBlLCBmaWVsZCkKLSAgICAgICAgICAgIGlmIGNhc2U6Ci0gICAgICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ2RlbGV0ZV9vYmplY3RzOiBjYXNlIGNvbnZlcnQgJXM6JXMgdG8gJXMnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqX3R5cGUsIGZpZWxkLCBjYXNlKQotICAgICAgICAgICAgICAgIGRhdGFbZmllbGRdID0gdXRpZi5jb252ZXJ0X2Nhc2UoY2FzZSwgZGF0YVtmaWVsZF0pCi0KLSAgICBxdWVyeV9yZXN1bHQgPSBzZG5zaC5yZXN0X3F1ZXJ5X29iamVjdHMob2JqX3R5cGUsIHF1ZXJ5X2RhdGEpCi0gICAgY2hlY2tfcmVzdF9yZXN1bHQocXVlcnlfcmVzdWx0KQotICAgICMKLSAgICAjIGlmIHRoZXJlIHdlcmUgbm8gcmVzdWx0cywgdHJ5IHRvIGRlbGV0ZSBieSByZW1vdmluZyBhbnkKLSAgICAjIGl0ZW1zIHdoaWNoIGhhdmUgIk5vbmUiIHZhbHVlcwotICAgIGlmIGxlbihxdWVyeV9yZXN1bHQpID09IDA6Ci0gICAgICAgIGZvciBrZXkgaW4gcXVlcnlfZGF0YS5rZXlzKCk6Ci0gICAgICAgICAgICBpZiBxdWVyeV9kYXRhW2tleV0gPT0gTm9uZToKLSAgICAgICAgICAgICAgICBkZWwgcXVlcnlfZGF0YVtrZXldCi0gICAgICAgIHF1ZXJ5X3Jlc3VsdCA9IHNkbnNoLnJlc3RfcXVlcnlfb2JqZWN0cyhvYmpfdHlwZSwgcXVlcnlfZGF0YSkKLSAgICAgICAgY2hlY2tfcmVzdF9yZXN1bHQocXVlcnlfcmVzdWx0KQotCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImRlbGV0ZV9vYmplY3RzOiIsIG9ial90eXBlLCBxdWVyeV9kYXRhCi0gICAgZGVsZXRlX3Jlc3VsdCA9IHNkbnNoLnJlc3RfZGVsZXRlX29iamVjdHMob2JqX3R5cGUsIHF1ZXJ5X2RhdGEpCi0gICAgY2hlY2tfcmVzdF9yZXN1bHQoZGVsZXRlX3Jlc3VsdCkKLQotICAgIGZvciBpdGVtIGluIHF1ZXJ5X3Jlc3VsdDoKLSAgICAgICAga2V5ID0gaXRlbVtwa19uYW1lXQotICAgICAgICBzZG5zaC5jYXNjYWRlX2RlbGV0ZShvYmpfdHlwZSwga2V5KQotCi0KLWRlZiBzZXRfZGF0YShkYXRhLCBrZXksIHZhbHVlKToKLSAgICAiIiIKLSAgICBBY3Rpb24gdG8gYXNzb2NpYXRlIGEgbmV3IG5hbWU6dmFsdWUgcGFpciB3aXRoICdkYXRhJywgdGhlIGRpY3Rpb25hcnkgdXNlZCAKLSAgICB0byBwYXNzIHRvIFJFU1QgQVBJJ3MuICAgQWxsb3dzIHRoZSBhY3Rpb24gdG8gZGVzY3JpYmUgYSB2YWx1ZSBmb3IgYSBmaWVsZAotICAgIHdoaWNoIHdhc24ndCBkaXJlY3RseSBuYW1lZCBpbiB0aGUgZGVzY3JpcHRpb24uCi0KLSAgICAiIiIKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAic2V0X2RhdGE6IiwgZGF0YSwga2V5LCB2YWx1ZQotICAgIGRhdGFba2V5XSA9IHZhbHVlCi0KLQotZGVmIHdyaXRlX29iamVjdChvYmpfdHlwZSwgZGF0YSwgcGFyZW50X2ZpZWxkPU5vbmUsIHBhcmVudF9pZD1Ob25lKToKLSAgICAiIiIKLSAgICBXcml0ZSBhIG5ldyByb3cgaW50byBhIHNwZWNpZmljIHRhYmxlLgotCi0gICAgIiIiCi0gICAgIyBJZiB3ZSdyZSBwdXNoaW5nIGEgY29uZmlnIHN1Ym1vZGUgd2l0aCBhbiBvYmplY3QsIHRoZW4gd2UgbmVlZCB0byBleHRlbmQgdGhlCi0gICAgIyBhcmd1bWVudCBkYXRhIHRoYXQgd2FzIGVudGVyZWQgZXhwbGljaXRseSBpbiB0aGUgY29tbWFuZCB3aXRoIHRoZSBpbmZvcm1hdGlvbgotICAgICMgYWJvdXQgdGhlIHBhcmVudCBvYmplY3QgKGJ5IGRlZmF1bHQgb2J0YWluZWQgYnkgbG9va2luZyBhdCB0aGUgb2JqIGluZm8gb24KLSAgICAjIHRoZSBtb2RlIHN0YWNrIC0tIHNlZSBkZWZhdWx0IGFyZ3VtZW50cyBmb3IgdGhpcyBhY3Rpb24gd2hlbiBpdCBpcyBhZGRlZCkuCi0KLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAnd3JpdGVfb2JqZWN0OiBwYXJhbXMgJywgb2JqX3R5cGUsIGRhdGEsIHBhcmVudF9maWVsZCwgcGFyZW50X2lkCi0gICAgZGF0YSA9IGRpY3QoZGF0YSkgIyBkYXRhIGlzIG92ZXJ3cml0ZW4gaW4gdmFyaW91cyBzaXR1YXRpb25zIGJlbG93Ci0gICAgaWYgcGFyZW50X2ZpZWxkOgotICAgICAgICBpZiBub3QgcGFyZW50X2lkOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoJ0ludmFsaWQgY29tbWFuZCBkZXNjcmlwdGlvbjsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcHJvcGVybHkgY29uZmlndXJlZCBwYXJlbnQgaW5mbyBmb3IgY3JlYXRlLW9iamVjdCcpCi0gICAgICAgIGRhdGFbcGFyZW50X2ZpZWxkXSA9IHBhcmVudF9pZAotCi0gICAgcGtfbmFtZSA9IG1pLnBrKG9ial90eXBlKQotICAgIGlmIG5vdCBwa19uYW1lOgotICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcigiQ2FuJ3QgZmluZCBwcmltYXJ5IGtleSBuYW1lIGZvciB0eXBlOiAlcyIgJSBvYmpfdHlwZSkKLQotICAgICMgbG9vayBmb3IgdW5wb3B1bGF0ZWQgZm9yZWlnbiBrZXlzLgotICAgIGZrcyA9IG1pLm9ial90eXBlX2ZvcmVpZ25fa2V5cyhvYmpfdHlwZSkKLSAgICBpZiBma3M6Ci0gICAgICAgIGZvciBmayBpbiBma3M6Ci0gICAgICAgICAgICAoZmtfb2JqLCBma19ubSkgPSBtaS5mb3JlaWduX2tleV9yZWZlcmVuY2VzKG9ial90eXBlLCBmaykKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIG5vdCBmayBpbiBkYXRhIG9yIFwKLSAgICAgICAgICAgICAgIChtaS5pc19jb21wb3VuZF9rZXkoZmtfb2JqLCBma19ubSkgYW5kIGRhdGFbZmtdLmZpbmQoJ3wnKSA9PSAtMSk6Ci0gICAgICAgICAgICAgICAgIyB1c2UgdmFyaW91cyB0ZWNobmlxdWVzIHRvIHBvcHVsYXRlIHRoZSBmb3JlaWduIGtleQotICAgICAgICAgICAgICAgICMgLSBpZiB0aGUgZm9yZWlnbiBrZXkgaXMgZm9yIGNsYXNzIHdoaWNoIGhhcyBhIGNvbXBvdW5kIGtleSwgc2VlIGlmIGFsbCB0aGUKLSAgICAgICAgICAgICAgICAjICAgcGFydHMgb2YgdGhlIGNvbXBvdW5kIGtleSBhcmUgcHJlc2VudAotCi0gICAgICAgICAgICAgICAgaWYgbWkuaXNfY29tcG91bmRfa2V5KGZrX29iaiwgZmtfbm0pOgotICAgICAgICAgICAgICAgICAgICBrZnMgPSBtaS5kZWVwX2NvbXBvdW5kX2tleV9maWVsZHMoZmtfb2JqLCBma19ubSkKLSAgICAgICAgICAgICAgICAgICAgbWlzc2luZyA9IFt4IGZvciB4IGluIGtmcyBpZiBub3QgeCBpbiBkYXRhXQotICAgICAgICAgICAgICAgICAgICBpZiBsZW4obWlzc2luZykgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBlbnRyaWVzLCBidWlsZCB0aGUgY29tcG91bmQga2V5IGZvciB0aGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfdmFsdWUgPSBtaS5jb21wb3VuZF9rZXlfc2VwYXJhdG9yKGZrX29iaiwgZmtfbm0pLlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW4oW2RhdGFbeF0gZm9yIHggaW4ga2ZzXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdmVyaWZ5IHRoZSBmb3JlaWduIGtleSBleGlzdHMsIGlmIG5vdCBjb21wbGFpbiBhbmQgcmV0dXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmV2ZW50aW5nIGEgZXJyb3IgZHVyaW5nIHRoZSBjcmVhdGUgcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfcmVzdWx0ID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKCBma19vYmosIHsgZmtfbm0gOiBuZXdfdmFsdWUgfSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHF1ZXJ5X3Jlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihxdWVyeV9yZXN1bHQpID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbmFibGVfbmFtZSA9IFsiJXM6ICVzIiAlICh4LCBkYXRhW3hdKSBmb3IgeCBpbiBrZnNdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZFNlbWFudGljRXJyb3IoIlJlZmVyZW5jZSB0byBub24tZXhpc3RhbnQgb2JqZWN0OiAlcyAiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihqb2luYWJsZV9uYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciByZm4gaW4ga2ZzOiAjIHJlbW92ZSBmaWVsZCBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGRhdGFbcmZuXQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtma10gPSBuZXdfdmFsdWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBxciA9IHNkbnNoLnJlc3RfcXVlcnlfb2JqZWN0cyhma19vYmosIGRhdGEpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihxcikgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbZmtdID0gcXJbMF1bbWkucGsoZmtfb2JqKV0KLQotICAgIGlmIHBrX25hbWUgaW4gZGF0YToKLSAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgIHByaW50IGNvbW1hbmQuX2xpbmUoKSwgJ3dyaXRlX29iamVjdDogcXVlcnkgcGtfbmFtZSAnLCBvYmpfdHlwZSwgcGtfbmFtZSwgZGF0YQotICAgICAgICBjYXNlID0gIG1pLmdldF9vYmpfdHlwZV9maWVsZF9jYXNlX3NlbnNpdGl2ZShvYmpfdHlwZSwgcGtfbmFtZSkKLSAgICAgICAgaWYgY2FzZToKLSAgICAgICAgICAgIGRhdGFbcGtfbmFtZV0gPSB1dGlmLmNvbnZlcnRfY2FzZShjYXNlLCBkYXRhW3BrX25hbWVdKQotICAgICAgICBxdWVyeV9yZXN1bHQgPSBzZG5zaC5yZXN0X3F1ZXJ5X29iamVjdHMob2JqX3R5cGUsIHsgcGtfbmFtZSA6IGRhdGFbcGtfbmFtZV19KQotICAgIGVsc2U6Ci0gICAgICAgIHF1ZXJ5X2RhdGEgPSBkaWN0KFtbbix2XSBmb3IgKG4sdikgaW4gZGF0YS5pdGVtcygpIGlmIHYgIT0gTm9uZV0pCi0gICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICBwcmludCBjb21tYW5kLl9saW5lKCksICd3cml0ZV9vYmplY3Q6IHF1ZXJ5ICcsIG9ial90eXBlLCBxdWVyeV9kYXRhCi0gICAgICAgIHF1ZXJ5X3Jlc3VsdCA9IHNkbnNoLnJlc3RfcXVlcnlfb2JqZWN0cyhvYmpfdHlwZSwgcXVlcnlfZGF0YSkKLSAgICBjaGVja19yZXN0X3Jlc3VsdChxdWVyeV9yZXN1bHQpCi0gCi0gICAgIyBDb25zaWRlciBjaGVja2luZyB0byBzZWUgaWYgYWxsIHRoZSBmaWVsZHMgbGlzdGVkIGhlcmUKLSAgICAjIGFscmVhZHkgbWF0Y2ggYSBxdWVyaWVkIHJlc3VsdCwgaWYgc28sIG5vIHdyaXRlIGlzIG5lZWRlZAotCi0gICAgaWYgKGxlbihxdWVyeV9yZXN1bHQpID4gMCkgYW5kIChwa19uYW1lIGluIGRhdGEpOgotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgcHJpbnQgIndyaXRlX29iamVjdDogdXBkYXRlIG9iamVjdCIsIG9ial90eXBlLCBwa19uYW1lLCBkYXRhCi0gICAgICAgIHJlc3VsdCA9IHNkbnNoLnJlc3RfdXBkYXRlX29iamVjdChvYmpfdHlwZSwgcGtfbmFtZSwgZGF0YVtwa19uYW1lXSwgZGF0YSkKLSAgICBlbHNlOgotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgcHJpbnQgIndyaXRlX29iamVjdDogY3JlYXRlX29iamVjdCIsIG9ial90eXBlLCBkYXRhCi0gICAgICAgIHJlc3VsdCA9IHNkbnNoLnJlc3RfY3JlYXRlX29iamVjdChvYmpfdHlwZSwgZGF0YSkKLSAgICAgICAgCi0gICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotCi0gICAgZm9yIGl0ZW0gaW4gcXVlcnlfcmVzdWx0OgotICAgICAgICBrZXkgPSBpdGVtW3BrX25hbWVdCi0gICAgICAgIHNkbnNoLmNhc2NhZGVfZGVsZXRlKG9ial90eXBlLCBrZXkpCi0KLQotZGVmIGRlbGV0ZV9vYmplY3Qob2JqX3R5cGUsIGRhdGEsIHBhcmVudF9maWVsZD1Ob25lLCBwYXJlbnRfaWQ9Tm9uZSk6Ci0gICAgZ2xvYmFsIHNkbnNoCi0KLSAgICBkYXRhID0gZGljdChkYXRhKQotICAgIGlmIHBhcmVudF9maWVsZDoKLSAgICAgICAgaWYgbm90IHBhcmVudF9pZDoKLSAgICAgICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCdJbnZhbGlkIGNvbW1hbmQgZGVzY3JpcHRpb247JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXByb3Blcmx5IGNvbmZpZ3VyZWQgcGFyZW50IGluZm8gZm9yIGRlbGV0ZS1vYmplY3QnKQotICAgICAgICBkYXRhW3BhcmVudF9maWVsZF0gPSBwYXJlbnRfaWQKLQotICAgICMgY2FzZSBjb252ZXJzaW9uCi0gICAgZm9yIGZpZWxkIGluIGRhdGE6Ci0gICAgICAgIGlmIG1pLm9ial90eXBlX2hhc19maWVsZChvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAgICAgY2FzZSA9IG1pLmdldF9vYmpfdHlwZV9maWVsZF9jYXNlX3NlbnNpdGl2ZShvYmpfdHlwZSwgZmllbGQpCi0gICAgICAgICAgICBpZiBjYXNlOgotICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgICAgIHByaW50ICdkZWxldGVfb2JqZWN0OiBjYXNlIGNvbnZlcnQgJXM6JXMgdG8gJXMnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqX3R5cGUsIGZpZWxkLCBjYXNlKQotICAgICAgICAgICAgICAgIGRhdGFbZmllbGRdID0gdXRpZi5jb252ZXJ0X2Nhc2UoY2FzZSwgZGF0YVtmaWVsZF0pCi0KLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiZGVsZXRlX29iamVjdDogIiwgb2JqX3R5cGUsIGRhdGEKLSAgICByZXN1bHQgPSBzZG5zaC5yZXN0X2RlbGV0ZV9vYmplY3RzKG9ial90eXBlLCBkYXRhKQotICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLQotCi1kZWYgcHVzaF9tb2RlX3N0YWNrKG1vZGVfbmFtZSwgb2JqX3R5cGUsIGRhdGEsIHBhcmVudF9maWVsZCA9IE5vbmUsIHBhcmVudF9pZCA9IE5vbmUsIGNyZWF0ZT1UcnVlKToKLSAgICAiIiIKLSAgICBQdXNoIGEgc3VibW9kZSBvbiB0aGUgY29uZmlnIHN0YWNrLgotICAgICIiIgotICAgIGdsb2JhbCBzZG5zaCwgbW9kaQotCi0gICAgIyBTb21lIGZldyBtaW5vciB2YWxpZGF0aW9uczogZW5hYmxlIG9ubHkgaW4gbG9naW4sIGNvbmZpZyBvbmx5IGluIGVuYWJsZSwKLSAgICAjIGFuZCBhZGRpdGlvbmFsIGNvbmZpZyBtb2RlcyBtdXN0IGFsc28gaGF2ZSB0aGUgc2FtZSBwcmVmaXggYXMgdGhlCi0gICAgIyBjdXJyZW50IG1vZGUuCi0gICAgY3VycmVudF9tb2RlID0gc2Ruc2guY3VycmVudF9tb2RlKCkKLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJwdXNoX21vZGU6ICIsIG1vZGVfbmFtZSwgb2JqX3R5cGUsIGRhdGEsIHBhcmVudF9maWVsZCwgcGFyZW50X2lkCi0KLSAgICAjIFNlZSBpZiB0aGlzIGlzIGEgbmVzdGVkIHN1Ym1vZGUsIG9yIHdoZXRoZXIgc29tZSBjdXJyZW50IG1vZGVzCi0gICAgIyBuZWVkIHRvIGJlIHBvcHBlZC4KLSAgICBpZiAobW9kZV9uYW1lLnN0YXJ0c3dpdGgoJ2NvbmZpZy0nKSBhbmQgCi0gICAgICAobm90IG1vZGVfbmFtZS5zdGFydHN3aXRoKGN1cnJlbnRfbW9kZSkgb3IgKG1vZGVfbmFtZSA9PSBjdXJyZW50X21vZGUpKSk6Ci0KLSAgICAgICAgc2Ruc2gucG9wX21vZGUoKQotICAgICAgICBjdXJyZW50X21vZGUgPSBzZG5zaC5jdXJyZW50X21vZGUoKQotICAgICAgICAjIHBvcCB1bnRpbCBpdCBpdCBtYXRjaGVzCi0gICAgICAgIHdoaWxlIG5vdCBtb2RlX25hbWUuc3RhcnRzd2l0aChjdXJyZW50X21vZGUpOgotICAgICAgICAgICAgaWYgbGVuKHNkbnNoLm1vZGVfc3RhY2spID09IDA6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZFNlbWFudGljRXJyb3IoJyVzIG5vdCB2YWxpZCB3aXRoaW4gJXMgbW9kZScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlX25hbWUsIGN1cnJlbnRfbW9kZSkpCi0gICAgICAgICAgICBzZG5zaC5wb3BfbW9kZSgpCi0gICAgICAgICAgICBjdXJyZW50X21vZGUgPSBzZG5zaC5jdXJyZW50X21vZGUoKQotCi0gICAgICAgICMgaWYgdGhlcmUncyBhIHBhcmVudCBpZCwgaXQgaXMgdHlwaWNhbGx5IHRoZSBwYXJlbnQsIGFuZCBhdWRpdAotICAgICAgICAjIG91Z2h0IHRvIGJlIGRvbmUgdG8gdmVyaWZ5IHRoaXMKLSAgICAgICAgaWYgcGFyZW50X2ZpZWxkOgotICAgICAgICAgICAgZGF0YSA9IGRpY3QoZGF0YSkKLSAgICAgICAgICAgIGRhdGFbcGFyZW50X2ZpZWxkXSA9IHNkbnNoLmdldF9jdXJyZW50X21vZGVfb2JqKCkKLQotICAgIGVsaWYgbW9kZV9uYW1lIGluIFsnY29uZmlnJywgJ2VuYWJsZScsICdsb2dpbiddOgotICAgICAgICAjIHNlZSBpZiB0aGUgbW9kZSBpcyBpbiB0aGUgc3RhY2sKLSAgICAgICAgaWYgbW9kZV9uYW1lIGluIFt4Wydtb2RlX25hbWUnXSBmb3IgeCBpbiBzZG5zaC5tb2RlX3N0YWNrXToKLSAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgcHJpbnQgJ3B1c2hfbW9kZTogcG9wcGluZyBzdGFjayBmb3InLCBtb2RlX25hbWUKLSAgICAgICAgICAgIGN1cnJlbnRfbW9kZSA9IHNkbnNoLmN1cnJlbnRfbW9kZSgpCi0gICAgICAgICAgICB3aGlsZSBjdXJyZW50X21vZGUgIT0gbW9kZV9uYW1lOgotICAgICAgICAgICAgICAgIHNkbnNoLnBvcF9tb2RlKCkKLSAgICAgICAgICAgICAgICBjdXJyZW50X21vZGUgPSBzZG5zaC5jdXJyZW50X21vZGUoKQotICAgICAgICAgICAgcmV0dXJuCi0KLQotICAgICMgSWYgd2UncmUgcHVzaGluZyBhIGNvbmZpZyBzdWJtb2RlIHdpdGggYW4gb2JqZWN0LCB0aGVuIHdlIG5lZWQgdG8gZXh0ZW5kIHRoZQotICAgICMgYXJndW1lbnQgZGF0YSB0aGF0IHdhcyBlbnRlcmVkIGV4cGxpY2l0bHkgaW4gdGhlIGNvbW1hbmQgd2l0aCB0aGUgaW5mb3JtYXRpb24KLSAgICAjIGFib3V0IHRoZSBwYXJlbnQgb2JqZWN0IChieSBkZWZhdWx0IG9idGFpbmVkIGJ5IGxvb2tpbmcgYXQgdGhlIG9iaiBpbmZvIG9uCi0gICAgIyB0aGUgbW9kZSBzdGFjayAtLSBzZWUgZGVmYXVsdCBhcmd1bWVudHMgZm9yIHRoaXMgYWN0aW9uIHdoZW4gaXQgaXMgYWRkZWQpLgotICAgIGVsaWYgcGFyZW50X2ZpZWxkOgotICAgICAgICBpZiBub3QgcGFyZW50X2lkOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoJ0ludmFsaWQgY29tbWFuZCBkZXNjcmlwdGlvbjsgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcHJvcGVybHkgY29uZmlndXJlZCBwYXJlbnQgaW5mbyBmb3IgcHVzaC1tb2RlLXN0YWNrJykKLSAgICAgICAgZGF0YSA9IGRpY3QoZGF0YSkKLSAgICAgICAgZGF0YVtwYXJlbnRfZmllbGRdID0gcGFyZW50X2lkCi0gICAgICAgIAotICAgIGtleSA9IE5vbmUKLSAgICBpZiBvYmpfdHlwZToKLSAgICAgICAgZm9yIGZpZWxkIGluIGRhdGE6Ci0gICAgICAgICAgICBpZiBtaS5vYmpfdHlwZV9oYXNfZmllbGQob2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgICAgICAgICBjYXNlID0gbWkuZ2V0X29ial90eXBlX2ZpZWxkX2Nhc2Vfc2Vuc2l0aXZlKG9ial90eXBlLCBmaWVsZCkKLSAgICAgICAgICAgICAgICBpZiBjYXNlOgotICAgICAgICAgICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ3B1c2hfbW9kZTogY2FzZSBjb252ZXJ0ICVzOiVzIHRvICVzJyAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmpfdHlwZSwgZmllbGQsIGNhc2UpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFbZmllbGRdID0gdXRpZi5jb252ZXJ0X2Nhc2UoY2FzZSwgZGF0YVtmaWVsZF0pCi0KLQotICAgICAgICAjIFF1ZXJ5IGZvciB0aGUgb2JqZWN0IGJvdGggdG8gc2VlIGlmIGl0IGV4aXN0cyBhbmQgYWxzbyB0byBkZXRlcm1pbmUKLSAgICAgICAgIyB0aGUgcGsgdmFsdWUgd2UncmUgZ29pbmcgdG8gcHVzaCBvbiB0aGUgc3RhY2suIFdlIG5lZWQgdG8gZG8KLSAgICAgICAgIyB0aGUgcXVlcnkgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIG1vZGVsIHVzZXMgY29tcG91bmQga2V5cyBhbmQgd2UncmUKLSAgICAgICAgIyBzcGVjaWZ5aW5nIHRoZSBpbmRpdmlkdWFsIGZpZWxkcyB0aGF0IGNvbXBvc2UgdGhlIGNvbXBvdW5kIGtleS4KLSAgICAgICAgcmVzdWx0ID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKG9ial90eXBlLCBkYXRhKQotICAgICAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgICAgIGlmIGxlbihyZXN1bHQpID09IDAgYW5kIGNyZWF0ZToKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgRm9yIHZucy1pbnRlcmZhY2UsIHRoZSBhc3NvY2lhdGlvbiBvZiAncnVsZScgd2l0aCB0aGUgZGF0YSBkaWN0Ci0gICAgICAgICAgICAjIGlzIGRpZmZpY3VsdCB0byBleHBsYWluIHZpYSB0aGUgY29tbWFuZCBkZXNjcmlwdGlvbi4gIFRoaXMgaXMKLSAgICAgICAgICAgICMgb2J2aW91c2x5IGEgcG9vciBtZXRob2Qgb2YgZGVhbGluZyB3aXRoIHRoZSBpc3N1ZSwgYnV0IHVudGlsCi0gICAgICAgICAgICAjIGEgYmV0dGVyIG9uZSBhcmlzZXMgKHBvc3NpYmx5IFJFU1QgYXBpIGNyZWF0ZT8gIHBvc3NpYmx5Ci0gICAgICAgICAgICAjIG1vZGVsIHZhbGlkYXRpb24gY29kZT8pLCB0aGlzIHNvbHV0aW9uIHdvcmtzLgotICAgICAgICAgICAgaWYgb2JqX3R5cGUgPT0gJ3Zucy1pbnRlcmZhY2UnOgotICAgICAgICAgICAgICAgIGRhdGEgPSBhc3NvY2lhdGVfZm9yZWlnbl9rZXlfZm9yX3Zuc19pbnRlcmZhY2UoZGF0YSkKLQotICAgICAgICAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBhbmQgcmUtcXVlcnkgdG8gZ2V0IHRoZSBpZC9wayB2YWx1ZQotICAgICAgICAgICAgIyBGSVhNRTogQ291bGQgcHJvYmFibHkgb3B0aW1pemUgaGVyZSBpZiB0aGUgZGF0YSBhbHJlYWR5Ci0gICAgICAgICAgICAjIGNvbnRhaW5zIHRoZSBwayB2YWx1ZS4KLSAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgcHJpbnQgInB1c2hfbW9kZTogY3JlYXRlICIsIG9ial90eXBlLCBkYXRhCi0gICAgICAgICAgICByZXN1bHQgPSBzZG5zaC5yZXN0X2NyZWF0ZV9vYmplY3Qob2JqX3R5cGUsIGRhdGEpCi0gICAgICAgICAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQgPSBzZG5zaC5yZXN0X3F1ZXJ5X29iamVjdHMob2JqX3R5cGUsIGRhdGEpCi0gICAgICAgICAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgIHByaW50ICJwdXNoX21vZGU6IG9iamVjdCBmb3VuZCIsIG9ial90eXBlLCByZXN1bHQKLSAgICAgICAgCi0gICAgICAgICMgQ2hlY2sgKGFnYWluKSB0byBtYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIGFuIG9iamVjdAotICAgICAgICBpZiBsZW4ocmVzdWx0KSA9PSAwOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZFNlbWFudGljRXJyb3IoJ09iamVjdCBub3QgZm91bmQ7IHR5cGUgPSAlcycgJSBvYmpfdHlwZSkKLSAgICAgICAgCi0gICAgICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBtdWx0aXBsZSBtYXRjaGluZyBvYmplY3RzLiBJZiB0aGVyZQotICAgICAgICAjIGFyZSB0aGF0IHdvdWxkIGluZGljYXRlIGEgcHJvYmxlbSBpbiB0aGUgY29tbWFuZCBkZXNjcmlwdGlvbi4KLSAgICAgICAgaWYgbGVuKHJlc3VsdCkgPiAxOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoJ1B1c2ggbW9kZSBpbmZvIG11c3QgaWRlbnRpZnkgYSBzaW5nbGUgb2JqZWN0OycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlID0gJXM7IGRhdGEgPSAlcycgICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmpfdHlwZSwgc3RyKGRhdGEpKSkKLSAgICAgICAgCi0gICAgICAgICMgR2V0IHRoZSBpZC9wayB2YWx1ZSBmcm9tIHRoZSBvYmplY3QgaW5mbwotICAgICAgICBwa19uYW1lID0gbWkucGsob2JqX3R5cGUpCi0gICAgICAgIGlmIG5vdCBwa19uYW1lOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoIkNhbid0IGZpbmQgcHJpbWFyeSBrZXkgbmFtZSBmb3IgdHlwZTogJXMiICUgb2JqX3R5cGUpCi0gICAgICAgIGtleSA9IHJlc3VsdFswXVtwa19uYW1lXQotICAgIGVsc2U6Ci0gICAgICAgIHBrX25hbWUgPSAnPG5vbmU+JwotICAgIAotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJwdXNoX21vZGU6ICIsIG1vZGVfbmFtZSwgb2JqX3R5cGUsIHBrX25hbWUsIGtleQotICAgIGV4aXRDYWxsYmFjayA9IE5vbmUKLSAgICBpZiAobW9kZV9uYW1lID09ICdjb25maWctdHVubmVsJyk6Ci0gICAgICAgIGV4aXRDYWxsYmFjayA9IHR1bm5lbF9jb25maWdfZXhpdAotICAgIGlmIChtb2RlX25hbWUgPT0gJ2NvbmZpZy1wb2xpY3knKToKLSAgICAgICAgZXhpdENhbGxiYWNrID0gcG9saWN5X2NvbmZpZ19leGl0Ci0gICAgc2Ruc2gucHVzaF9tb2RlKG1vZGVfbmFtZSwgb2JqX3R5cGUsIGtleSwgZXhpdENhbGxiYWNrKQotCi0gICAgCi1kZWYgcG9wX21vZGVfc3RhY2soKToKLSAgICBnbG9iYWwgc2Ruc2gKLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJwb3BfbW9kZTogIgotICAgIHNkbnNoLnBvcF9tb2RlKCkKLQotZGVmIGNvbmZpcm1fcmVxdWVzdChwcm9tcHQpOgotICAgIGdsb2JhbCBzZG5zaAotCi0gICAgaWYgc2Ruc2guYmF0Y2g6Ci0gICAgICAgIHJldHVybgotICAgIHJlc3VsdCA9IHJhd19pbnB1dChwcm9tcHQpCi0gICAgaWYgcmVzdWx0Lmxvd2VyKCkgPT0gJ3knIG9yIHJlc3VsdC5sb3dlcigpID09ICd5ZXMnOgotICAgICAgICByZXR1cm4KLSAgICByYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgeSBvciB5ZXMsIGNvbW1hbmQ6ICIpCi0KLWltcG9ydCBjX2RhdGFfaGFuZGxlcnMKLQotZGVmIGNvbnZlcnRfdm5zX2FjY2Vzc19saXN0KG9ial90eXBlLCBrZXksIGRhdGEpOgotICAgICIiIgotICAgIEZvciB2bnMtYWNjZXNzLWdyb3VwJ3MsIHRoZSBhY2Nlc3MgbGlzdCB3aGljaCBpcyB0aGUgZmlyc3QgcGFyYW1ldGVyCi0gICAgbmVlZHMgdG8gYmUgY29udmVydGVkIGludG8gYSB2bnMtYWNjZXNzLWxpc3QgZm9yZWlnbiBrZXkuICBUaGlzIGlzCi0gICAgcG9zc2libGUgc2luY2UgdGhlIHZucyBuYW1lIGlzIHBhcnQgb2YgdGhlIGN1cnJlbnQgb2JqZWN0IGlkLgotICAgICIiIgotICAgIGdsb2JhbCBzZG5zaCwgbW9kaQotCi0gICAga2V5X3BhcnRzID0ga2V5LnNwbGl0KCd8JykKLSAgICBpZiBsZW4oa2V5X3BhcnRzKSAhPSAzOgotICAgICAgICByYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcigiaW52YWxpZCBpZCIpCi0gICAgaWYgbm90ICd2bnMtYWNjZXNzLWxpc3QnIGluIGRhdGE6Ci0gICAgICAgIHJhaXNlIGVycm9yLkFyZ3VtZW50VmFsaWRhdGlvbkVycm9yKCJtaXNzaW5nIHZucy1hY2Nlc3MtbGlzdCIpCi0gICAgdHJ5OgotICAgICAgICBrZXlfcGFydHMucG9wKCkKLSAgICAgICAgdm5za2V5PSd8Jy5qb2luKGtleV9wYXJ0cykKLSAgICAgICAgZW50cnkgPSBzZG5zaC5yZXN0X3F1ZXJ5X29iamVjdHMoJ3Zucy1hY2Nlc3MtbGlzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAndm5zJyA6IHZuc2tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJyA6IGRhdGFbJ3Zucy1hY2Nlc3MtbGlzdCddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBfZToKLSAgICAgICAgZW50cnkgPSBbXQotCi0gICAgaWYgbGVuKGVudHJ5KSAhPSAxOgotICAgICAgICByYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcigidW5rbm93biBhY2wgJXMiICUgZGF0YVsndm5zLWFjY2Vzcy1saXN0J10pCi0gICAgZGF0YVsndm5zLWFjY2Vzcy1saXN0J10gPSBlbnRyeVswXVsnaWQnXQotICAgICAgICAgIAotZGVmIGNvbW1hbmRfcXVlcnlfb2JqZWN0KG9ial90eXBlLCBkYXRhLCBzY29wZWQsIHNvcnQpOgotICAgICIiIgotICAgIFJldHVybiBtb2RlbCBlbnRyaWVzIChkYiByb3dzKSB2aWEgdGhlIFJFU1QgQVBJLiAgVHJ5IHRvIGJlCi0gICAgdmVyeSBzbWFydCBhYm91dCB1c2luZyBwYXJhbWV0ZXJzIGFuZCB0aGUgbW9kZWwgZGVmaW5pdGlvbiB0bwotICAgIGZpZ3VyZSBvdXQgaG93IHRvIHF1ZXJ5IGZvciB0aGUgZW50cmllcy4KLSAgICAiIiIKLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICBwcmludCAnY29tbWFuZF9xdWVyeV9vYmplY3Q6ICcsIG9ial90eXBlLCBkYXRhLCBzY29wZWQsIHNvcnQKLSAgICAgICAgCi0gICAgc2tpcGZvcmVpZ25zZWFyY2g9RmFsc2UKLSAgICBpZiAob2JqX3R5cGU9PSd2aXJ0dWFscm91dGVyLXJvdXRpbmdydWxlJyBvciBvYmpfdHlwZT09J3ZpcnR1YWxyb3V0ZXItaW50ZXJmYWNlJyk6Ci0gICAgICAgIHNraXBmb3JlaWduc2VhcmNoPVRydWUKLSAgICAjIGJpZ19zZWFyY2ggZGVzY3JpYmVzIGEgcmVsYXRlZCBzZWFyY2ggd2hpY2ggbXVzdCBiZSBkb25lIHRvCi0gICAgIyBzYXRpc2Z5IHRoaXMgcmVxdWVzdCwgc2VlIHRoZSByZWxhdGlvbnNoaXAgb2YgdGFnLW1hcHBpbmcgdG8gdGFnCi0gICAgIyBhcyBhbiBleGFtcGxlLgotICAgIGJpZ19zZWFyY2ggPSBbXQotCi0gICAga2V5ID0gbWkucGsob2JqX3R5cGUpCi0gICAgIwotICAgIGlmIG1pLmlzX2NvbXBvdW5kX2tleShvYmpfdHlwZSwga2V5KToKLSAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgIHByaW50ICJjb21tYW5kX3F1ZXJ5X29iamVjdDogJXMgY29tcG91bmQgJXMiICUgKG9ial90eXBlLCBrZXkpCi0gICAgICAgICMKLSAgICAgICAgIyBjb2xsZWN0IGNvbXBvdW5kIGtleSBuYW1lcywgbG9vayBmb3IgdGhlc2UgaW4gdGhlIGRhdGEsCi0gICAgICAgICMgaWYgYW55IG9mIHRoZSB2YWx1ZXMgYXJlICdhbGwnLCByZW1vdmUgdGhlIGl0ZW0gZnJvbQotICAgICAgICAjIHRoZSBncm91cCBvZiBkYXRhLgotICAgICAgICAjCi0gICAgICAgICMgWFhYIG5lZWRzIHdvcms6IHdlIG91Z2h0IHRvIGNoZWNrIHRvIHNlZSBpZiB0aGUKLSAgICAgICAgIyBjb21wb3VuZCBrZXkgaXMgcGFydCBvZiBzb21lIG90aGVyIGtleS4KLSAgICAgICAgIwotICAgICAgICBpZiBzY29wZWQ6Ci0gICAgICAgICAgICBvYmpfZCA9IHsga2V5IDogc2Ruc2guZ2V0X2N1cnJlbnRfbW9kZV9vYmooKSB9Ci0gICAgICAgICAgICBtaS5zcGxpdF9jb21wb3VuZF9pbnRvX2RpY3Qob2JqX3R5cGUsIGtleSwgb2JqX2QsIGlzX3ByZWZpeCA9IFRydWUpCi0gICAgICAgICAgICBmb3IgKGssdikgaW4gb2JqX2QuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBrICE9IGtleSBhbmQgbm90IGsgaW4gZGF0YToKLSAgICAgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKLQotICAgICAgICBuZXdfZGF0YSA9IHt9Ci0gICAgICAgIGRja2ZzID0gbWkuZGVlcF9jb21wb3VuZF9rZXlfZmllbGRzKG9ial90eXBlLCBrZXkpCi0gICAgICAgIGlmIGtleSBpbiBkYXRhOgotICAgICAgICAgICAgbWkuc3BsaXRfY29tcG91bmRfaW50b19kaWN0KG9ial90eXBlLCBrZXksIGRhdGEsIGlzX3ByZWZpeCA9IFRydWUpCi0gICAgICAgIGZvcmVpZ25fb2JqX3R5cGVfc2VhcmNoID0ge30KLSAgICAgICAgCi0gICAgICAgIGZvciBrZiBpbiBkY2tmczoKLSAgICAgICAgICAgIGlmIG1pLm9ial90eXBlX2hhc19maWVsZChvYmpfdHlwZSwga2YpIGFuZCBrZiBpbiBkYXRhIGFuZCBkYXRhW2tmXSAhPSAnYWxsJzoKLSAgICAgICAgICAgICAgICBuZXdfZGF0YVtrZl0gPSBkYXRhW2tmXQotICAgICAgICAgICAgZWxpZiBub3QgbWkub2JqX3R5cGVfaGFzX2ZpZWxkKG9ial90eXBlLCBrZik6Ci0gICAgICAgICAgICAgICAgIyBkZWVwX2NvbXBvdW5kX2tleXMgcmV0dXJucyByZWZlcmVuY2VzIHZpYSBmb3JlaWduIGtleXMuCi0gICAgICAgICAgICAgICAgIyBpZiB0aGUgZmllbGQgaXMgbWlzc2luZyBpbiBvYmpfdHlwZSwgaXRzIGxpa2VseSBmcm9tCi0gICAgICAgICAgICAgICAgIyBzb21lIHJlbGF0ZWQgZmsuCi0gICAgICAgICAgICAgICAgZm9yIGZrIGluIG1pLm9ial90eXBlX2ZvcmVpZ25fa2V5cyhvYmpfdHlwZSk6Ci0gICAgICAgICAgICAgICAgICAgIChfZmtfb2JqX3R5cGUsIGZrX25hbWUpID0gbWkuZm9yZWlnbl9rZXlfcmVmZXJlbmNlcyhvYmpfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZrKQotICAgICAgICAgICAgICAgICAgICBpZiBrZiA9PSBma19uYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmludCAiRk9VTkQgTUFUQ0ggIiwga2YsIF9ma19vYmpfdHlwZSwgZmtfbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBub3QgbWkuaXNfY29tcG91bmRfa2V5KCBfZmtfb2JqX3R5cGUsIGZrX25hbWUpOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgZm9yIGZrY2YgaW4gbWkuY29tcG91bmRfa2V5X2ZpZWxkcyhfZmtfb2JqX3R5cGUsIGZrX25hbWUpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmtjZiBpbiBkYXRhIGFuZCBkYXRhW2ZrY2ZdICE9ICdhbGwnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXNzdW1lIGFsbCBtb2RlbHMgdXNlIENPTVBPVU5EX0tFWV9GSUVMRFMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBfZmtfb2JqX3R5cGUgbm90IGluIGZvcmVpZ25fb2JqX3R5cGVfc2VhcmNoOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlaWduX29ial90eXBlX3NlYXJjaFtfZmtfb2JqX3R5cGVdID0ge30KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlaWduX29ial90eXBlX3NlYXJjaFtfZmtfb2JqX3R5cGVdW2ZrY2ZdID0gZGF0YVtma2NmXQotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICMgc2VlIGlmIGZvcmVpZ24ga2V5IGZpZWxkcyBhcmUgaW5kaXJlY3RseSBuYW1lZAotICAgICAgICAgICAgZWxpZiBtaS5pc19mb3JlaWduX2tleShvYmpfdHlwZSwga2YpOgotICAgICAgICAgICAgICAgIChfZmtfb2JqX3R5cGUsIGZrX25hbWUpID0gbWkuZm9yZWlnbl9rZXlfcmVmZXJlbmNlcyhvYmpfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2YpCi0gICAgICAgICAgICAgICAgaWYgZmtfbmFtZSBpbiBkYXRhIGFuZCBkYXRhW2ZrX25hbWVdICE9ICdhbGwnOgotICAgICAgICAgICAgICAgICAgICBuZXdfZGF0YVtrZl0gPSBkYXRhW2ZrX25hbWVdCi0gICAgICAgIGlmIChub3Qgc2tpcGZvcmVpZ25zZWFyY2gpOiAjc2tpcCBmb3JlaWduIGtleSBzZWFyY2ggZm9yIHJvdXRpbmdydWxlIHR5cGUKLSAgICAgICAgICAgIGlmIGxlbihmb3JlaWduX29ial90eXBlX3NlYXJjaCk6Ci0gICAgICAgICAgICAgICAgIyBUaGlzIG1lYW5zIHRvIGNvbGxlY3QgdGhlIGVudHJpZXMsIGEgc2VhcmNoIHRob3VnaCBhCi0gICAgICAgICAgICAgICAgIyByZWxhdGVkIG9ial90eXBlICh0aHJvdWdoIGZvcmVpZ24ga2V5KSB3aWxsIG5lZWQgdG8gYmUgZG9uZQotICAgICAgICAgICAgICAgICMgYSBzaW5nbGUgcXVlcnkgaXNuJ3QgZW5vdWdoLCB1bmxlc3MgYWxsIGVudHJpZXMgYXJlIGNvbGxlY3RlZAotICAgICAgICAgICAgICAgICMgY29uc2lkZXIgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRhZy1tYXBwaW5nIGFuZCB0YWdzCi0gICAgICAgICAgICAgICAgIyAKLSAgICAgICAgICAgICAgICAjIFRoaXMgY29kZSBzZWVtcyB0byBoYW5kbGUgc2luZ2xlIGluZGlyZWN0ZWQgZm9yZWlnbiBrZXkKLSAgICAgICAgICAgICAgICAjIGxvb2t1cCwgYnV0IGlmIGRlZXBfY29tcG91bmRfa2V5X2ZpZWxkcygpIGZvdW5kIG1vcmUgdGhhbgotICAgICAgICAgICAgICAgICMgdGhyZWUgbGF5ZXJzIGRlZXAgKHRoZSBvYmotdHlwZSBoYXMgYSBmayByZWZlcmVuY2UgdG8gYQotICAgICAgICAgICAgICAgICMgdGFibGUsIHdoaWNoIGhhZCBhIGZrIHJlZmVyZW5jZSB0byBhbm90aGVyIHRhYmxlLCB3aGljaAotICAgICAgICAgICAgICAgICMgaGFkIGEgdmFsdWUgdG8gc2VhcmNoIHdpdGgpLCB0aGlzIHdvbid0IGRvIHRoZSB0cmljay4KLSAgICAgICAgICAgICAgICAjIGF0IHRoYXQgcG9pbnQgc29tZSBzb3J0IG9mIHJlY3Vyc2l2ZSBidWlsZGluZyBvZiB0aGUKLSAgICAgICAgICAgICAgICAjIGZvcmVpZ24ga2V5cyB3b3VsZCBiZSBuZWVkZWQgdG8gY29sbGVjdCB1cCB0aGUgcmVxdWlyZWQKLSAgICAgICAgICAgICAgICAjIGZpbmFsIHNlcmFjaGVzCi0gICAgICAgICAgICAgICAgZm9yIChfZmtfb2JqX3R5cGUsIHNlYXJjaCkgaW4gZm9yZWlnbl9vYmpfdHlwZV9zZWFyY2guaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgZmtfZW50cmllcyA9IHNkbnNoLnJlc3RfcXVlcnlfb2JqZWN0cyhfZmtfb2JqX3R5cGUsIHNlYXJjaCkKLSAgICAgICAgICAgICAgICAgICAgIyBuZWVkIHRvIGlkZW50aWZ5IHRoZSBuYW1lIGFzc29jaWF0ZWQgZm9yZWlnbiBrZXkgaW4gdGhpcyBtb2RlbAotICAgICAgICAgICAgICAgICAgICBmb3IgZmsgaW4gbWkub2JqX3R5cGVfZm9yZWlnbl9rZXlzKG9ial90eXBlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIChma19vYmosIGZrX25hbWUpID0gbWkuZm9yZWlnbl9rZXlfcmVmZXJlbmNlcyhvYmpfdHlwZSwgZmspCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBma19vYmogPT0gX2ZrX29ial90eXBlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ial90eXBlX2ZpZWxkID0gZmsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZFNlbWFudGljRXJyb3IoImJpZ3NlYXJjaDogY2FuJ3QgZmluZCBmayByZWZlcmVuY2UiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yICVzIGZvciBvYmotdHlwZSAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZrLCBvYmpfdHlwZSkpCi0gICAgICAgICAgICAgICAgICAgIGJpZ19zZWFyY2ggKz0gW3tvYmpfdHlwZV9maWVsZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhbbWkucGsoX2ZrX29ial90eXBlKV19IGZvciB4IGluIGZrX2VudHJpZXNdCi0gICAgICAgICAgICAgICAgIyBiaWdfc2VhcmNoIHdvdWxkIHJldHVybiBpZCdzIGZvciB0aGUgX2ZrX29ial90eXBlLAotICAgICAgICAgICAgICAgICMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2VhcmNoIHRoaXMgb2JqX3R5cGUKLSAgICAgICAgIyBsb29rIGZvciBmaWVsZHMgd2hpY2ggYXJlIHNldCBpbiBuZXdfZGF0YSwgd2hpY2ggYXJlbid0IGluIGRhdGEuCi0gICAgICAgIGZvciAoZmllbGQsIHZhbHVlKSBpbiBkYXRhLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBmaWVsZCBub3QgaW4gbmV3X2RhdGE6Ci0gICAgICAgICAgICAgICAgaWYgbWkuaXNfbWFya2VkX3NlYXJjaGFibGUob2JqX3R5cGUsIGZpZWxkKSBhbmQgdmFsdWUhPSdhbGwnOgotICAgICAgICAgICAgICAgICAgICBuZXdfZGF0YVtmaWVsZF0gPSB2YWx1ZQotCi0gICAgICAgIGRhdGEgPSBuZXdfZGF0YQotICAgIGVsc2U6Ci0gICAgICAgICMgT25seSBhbGxvdyBmaWVsZHMgd2hpY2ggYXJlIHNlYXJjaGFibGUgKFhYWCBuZWVkIGEgcHJlZGlhdGUpCi0gICAgICAgICMgb25seSBzYXZlIHByaW1hcnkga2V5J3MgYW5kIGZvcmVpZ2gga2V5cy4KLSAgICAgICAgbmV3X2RhdGEgPSB7fQotICAgICAgICBpZiBrZXkgaW4gZGF0YSBhbmQgbWkuaXNfcHJpbWFyeV9rZXkob2JqX3R5cGUsIGtleSk6Ci0gICAgICAgICAgICBuZXdfZGF0YVtrZXldID0gZGF0YVtrZXldCi0gICAgICAgIGZvciBmayBpbiBtaS5vYmpfdHlwZV9mb3JlaWduX2tleXMob2JqX3R5cGUpOgotICAgICAgICAgICAgaWYgZmsgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBuZXdfZGF0YVtma10gPSBkYXRhW2ZrXQotICAgICAgICAgICAgKF9ma19vYmosIGZrX2ZuKSA9IG1pLmZvcmVpZ25fa2V5X3JlZmVyZW5jZXMob2JqX3R5cGUsIGZrKQotICAgICAgICAgICAgaWYgZmtfZm4gaW4gZGF0YToKLSAgICAgICAgICAgICAgICBuZXdfZGF0YVtma19mbl0gPSBkYXRhW2ZrX2ZuXQotICAgICAgICBmb3IgZiBpbiBtaS5vYmpfdHlwZV9maWVsZHMob2JqX3R5cGUpOgotICAgICAgICAgICAgaWYgZiBpbiBkYXRhIGFuZCBmIG5vdCBpbiBuZXdfZGF0YToKLSAgICAgICAgICAgICAgICBuZXdfZGF0YVtmXSA9IGRhdGFbZl0KLSAgICAgICAgICAgIAotICAgICAgICBkYXRhID0gbmV3X2RhdGEKLQotICAgICAgICBpZiBzY29wZWQ6Ci0gICAgICAgICAgICBkYXRhW2tleV0gPSBzZG5zaC5nZXRfY3VycmVudF9tb2RlX29iaigpCi0gICAgICAgIAotICAgIGlmIGtleSBpbiBkYXRhIGFuZCAoZGF0YVtrZXldPT0nYWxsJyBvciBkYXRhW2tleV09PU5vbmUpOgotICAgICAgICBkZWwgZGF0YVtrZXldCi0gICAgIwotICAgICMgTm93IHRoYXQgdGhlIGZpZWxkcyBoYXZlIGJlZW4gZGlzYXNzZW1ibGVkIGFzIG11Y2ggYXMgcG9zc2libGUsIHNlZQotICAgICMgaWYgc29tZSBvZiB0aGUgZW50cmllcyBuZWVkIHRvIGJlIGNvYmJsZWQgYmFjayB0b2dldGhlci4KLSAgICBma3MgPSBtaS5vYmpfdHlwZV9mb3JlaWduX2tleXMob2JqX3R5cGUpCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfcXVlcnlfb2JqZWN0OiAlcyBmb3JlaWduLWtleSAlcyIgJSAob2JqX3R5cGUsIGZrcykKLSAgICBpZiBma3M6Ci0gICAgICAgIGZvciBmayBpbiBma3M6Ci0gICAgICAgICAgICAoZmtfb2JqLCBma19ubSkgPSBtaS5mb3JlaWduX2tleV9yZWZlcmVuY2VzKG9ial90eXBlLCBmaykKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIG5vdCBmayBpbiBkYXRhIG9yIFwKLSAgICAgICAgICAgICAgIChtaS5pc19jb21wb3VuZF9rZXkoZmtfb2JqLCBma19ubSkgYW5kIGRhdGFbZmtdLmZpbmQoJ3wnKSA9PSAtMSk6Ci0KLSAgICAgICAgICAgICAgICAjIHVzZSB2YXJpb3VzIHRlY2huaXF1ZXMgdG8gcG9wdWxhdGUgdGhlIGZvcmVpZ24ga2V5Ci0gICAgICAgICAgICAgICAgIyAtIGlmIHRoZSBmb3JlaWduIGtleSBpcyBmb3IgY2xhc3Mgd2hpY2ggaGFzIGEgY29tcG91bmQga2V5LCBzZWUgaWYgYWxsIHRoZQotICAgICAgICAgICAgICAgICMgICBwYXJ0cyBvZiB0aGUgY29tcG91bmQga2V5IGFyZSBwcmVzZW50Ci0gICAgICAgICAgICAgICAgaWYgbWkuaXNfY29tcG91bmRfa2V5KGZrX29iaiwgZmtfbm0pOgotICAgICAgICAgICAgICAgICAgICBrZnMgPSBtaS5kZWVwX2NvbXBvdW5kX2tleV9maWVsZHMoZmtfb2JqLCBma19ubSkKLSAgICAgICAgICAgICAgICAgICAgbWlzc2luZyA9IFt4IGZvciB4IGluIGtmcyBpZiBub3QgeCBpbiBkYXRhXQotICAgICAgICAgICAgICAgICAgICBpZiBsZW4obWlzc2luZykgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBlbnRyaWVzLCBidWlsZCB0aGUgY29tcG91bmQga2V5IGZvciB0aGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfdmFsdWUgPSBtaS5jb21wb3VuZF9rZXlfc2VwYXJhdG9yKGZrX29iaiwgZmtfbm0pLlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW4oW2RhdGFbeF0gZm9yIHggaW4ga2ZzXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdmVyaWZ5IHRoZSBmb3JlaWduIGtleSBleGlzdHMsIGlmIG5vdCBjb21wbGFpbiBhbmQgcmV0dXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmV2ZW50aW5nIGEgZXJyb3IgZHVyaW5nIHRoZSBjcmVhdGUgcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfcmVzdWx0ID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKCBma19vYmosIHsgZmtfbm0gOiBuZXdfdmFsdWUgfSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHF1ZXJ5X3Jlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihxdWVyeV9yZXN1bHQpID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbmFibGVfbmFtZSA9IFsiJXM6ICVzIiAlICh4LCBkYXRhW3hdKSBmb3IgeCBpbiBrZnNdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZFNlbWFudGljRXJyb3IoIlJlZmVyZW5jZSB0byBub24tZXhpc3RhbnQgb2JqZWN0OiAlcyAiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihqb2luYWJsZV9uYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciByZm4gaW4ga2ZzOiAjIHJlbW92ZSBmaWVsZCBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGRhdGFbcmZuXQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtma10gPSBuZXdfdmFsdWUKLSAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgIHByaW50ICJjb21tYW5kX3F1ZXJ5X29iamVjdDogJXMgZm9yZWlnbiBrZXkgY29uc3RydWN0aW9uICIgJSBvYmpfdHlwZSwgZGF0YQotICAgICMKLSAgICAjIERvIHNvbWV0aGluZyBmb3IgYWxpYXMgZGlzcGxheXMsIGZvciBvYmpfdHlwZXMgd2hpY2ggc2Ruc2ggc2F5cwotICAgICMgYXJlIGFsaWFzZXMsIGZpbmQgdGhlIGZvcmVpZ24gcmVmZXJlbmNlIGluIHRoZSBhbGlhcyBvYmpfdHlwZSwKLSAgICAjIGFuZCB1c2UgdGhhdCB0byBkZXRlcm1pbmUgdGhlIGZpZWxkIG5hbWUgKGZrX2ZuKSBpbiB0aGUgcGFyZW50LgotICAgICMgRG8gbG9va3VwcyBiYXNlZCBvbiBlaXRoZXIgdGhlIGFsaWFzIGZpZWxkIG5hbWUsIG9yIHRoZSBwYXJlbnQncwotICAgICMgZmtfZm4gd2hlbiBzZXQgaW4gZGF0YXt9Ci0gICAgaWYgb2JqX3R5cGUgaW4gbWkuYWxpYXNfb2JqX3R5cGVzOgotICAgICAgICBmaWVsZCA9IG1pLmFsaWFzX29ial90eXBlX2ZpZWxkKG9ial90eXBlKQotICAgICAgICAoX2ZrX29iaiwgZmtfZm4pID0gbWkuZm9yZWlnbl9rZXlfcmVmZXJlbmNlcyhvYmpfdHlwZSwgZmllbGQpCi0gICAgICAgIG5ld19kYXRhID0ge30KLSAgICAgICAgaWYgZmtfZm4gaW4gZGF0YSBhbmQgZGF0YVtma19mbl0gIT0gJ2FsbCc6Ci0gICAgICAgICAgICBuZXdfZGF0YVtmaWVsZF0gPSBkYXRhW2ZrX2ZuXQotICAgICAgICBlbGlmIGZpZWxkIGluIGRhdGEgYW5kIGRhdGFbZmllbGRdICE9ICdhbGwnOgotICAgICAgICAgICAgbmV3X2RhdGFbZmllbGRdID0gZGF0YVtmaWVsZF0KLSAgICAgICAgZGF0YSA9IG5ld19kYXRhCi0KLSAgICAjCi0gICAgIyBUaGUgc29ydCB2YWx1ZSBvdWdodCB0byBiZSBhIGNvbW1hbmQgc2VwYXJhdGVkIGxpc3Qgb2YgZmllbGRzIHdpdGhpbiB0aGUgbW9kZWwKLSAgICAjCi0gICAgaWYgc29ydDoKLSAgICAgICAgZGF0YVsnb3JkZXJieSddID0gc29ydAotCi0gICAgaWYgbm90IG1pLm9ial90eXBlX2hhc19tb2RlbChvYmpfdHlwZSk6Ci0gICAgICAgIHJldHVybiByZXN0X3RvX21vZGVsLmdldF9tb2RlbF9mcm9tX3VybChvYmpfdHlwZSwgZGF0YSkKLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJjb21tYW5kX3F1ZXJ5X29iamVjdDogIiwgb2JqX3R5cGUsIGRhdGEKLQotICAgIGlmIGxlbihiaWdfc2VhcmNoKToKLSAgICAgICAgZW50cmllcyA9IFtdCi0gICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICBwcmludCAiY29tbWFuZF9xdWVyeV9vYmplY3Q6IGJpZyBzZWFyY2giLCBiaWdfc2VhcmNoCi0gICAgICAgIGZvciBicyBpbiBiaWdfc2VhcmNoOgotICAgICAgICAgICAgc2VhcmNoID0gZGljdChsaXN0KGJzLml0ZW1zKCkpICsgbGlzdChkYXRhLml0ZW1zKCkpKQotICAgICAgICAgICAgZW50cmllcyArPSBzZG5zaC5yZXN0X3F1ZXJ5X29iamVjdHMob2JqX3R5cGUsIHNlYXJjaCkKLSAgICAgICAgIyBYWFggbmVlZHMgdG8gYmUgcmUtc29ydGVkCi0gICAgICAgIHJldHVybiBlbnRyaWVzCi0gICAgICAgIAotICAgIHJldHVybiBzZG5zaC5yZXN0X3F1ZXJ5X29iamVjdHMob2JqX3R5cGUsIGRhdGEpCi0KLQotZGVmIGNvbW1hbmRfZGlzcGxheV90YWJsZV9qb2luX2VudHJpZXMob2JqX3R5cGUsIGRhdGEsIGVudHJpZXMsIGRldGFpbCk6Ci0gICAgIiIiCi0gICAgIiIiCi0gICAgaWYgb2JqX3R5cGUgPT0gJ3RhZy1tYXBwaW5nJzoKLSAgICAgICAgIyBsaWZ0IHBlcnNpc3QgZnJvbSB0aGUgcGFyZW50IHRhZwotICAgICAgICBpZiBsZW4oZW50cmllcykgPT0gMToKLSAgICAgICAgICAgIGVudHJ5ID0gZW50cmllc1swXQotICAgICAgICAgICAgdGFnID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKCd0YWcnLCB7IG1pLnBrKCd0YWcnKSA6IGVudHJ5Wyd0YWcnXX0pCi0gICAgICAgICAgICBlbnRyeVsncGVyc2lzdCddID0gdGFnWzBdWydwZXJzaXN0J10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMga2V5PyB2YWx1ZT8gZm9yIHRoZSBfZGljdD8KLSAgICAgICAgICAgIHRhZ3MgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgndGFnJywgbWkucGsoJ3RhZycpKQotICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgICAgICAgICAgZW50cnlbJ3BlcnNpc3QnXSA9IHRhZ3NbZW50cnlbJ3RhZyddXVswXVsncGVyc2lzdCddCi0KLSAgICBpZiBvYmpfdHlwZSA9PSAnY29udHJvbGxlci1ub2RlJzoKLSAgICAgICAgIyBUaGlzIGlzIGEgYmlnIG9kZCwgc2luY2UgdGhlIGN1cnJlbnQgbm9kZSBuZWVkcyB0byBiZSBhc2tlZAotICAgICAgICAjIHdoaWNoIGNvbnRyb2xsZXIgbm9kZSBpdCBpcwotICAgICAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL2NvbnRyb2xsZXIiICUgc2Ruc2guY29udHJvbGxlcgotCi0gICAgICAgIHJlc3VsdCA9IHNkbnNoLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsKQotICAgICAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgICAgIGlhbSA9IGpzb24ubG9hZHMocmVzdWx0KQotCi0gICAgICAgIGNsdXN0ZXJfdXJsID0gKCJodHRwOi8vJXMvcmVzdC92MS9zeXN0ZW0vaGEvY2x1c3Rlcm5hbWUiCi0gICAgICAgICAgICAgICAgICAgICAgICUgc2Ruc2guY29udHJvbGxlcikKLSAgICAgICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdChjbHVzdGVyX3VybCkKLSAgICAgICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgICAgICAjIHBlcmhhcHMgb3VnaHQgdG8gYXNzZXJ0IG9uIGxlbnJlc3VsdCkgPT0gMQotICAgICAgICBjbHVzdGVybmFtZSA9IGpzb24ubG9hZHMocmVzdWx0KVswXVsnY2x1c3Rlcm5hbWUnXQotCi0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgY29udHJvbGxlciA9IE5vbmUKLSAgICAgICAgICAgIGlmIGVudHJ5WydpZCddID09IGlhbVsnaWQnXToKLSAgICAgICAgICAgICAgICBjb250cm9sbGVyID0gc2Ruc2guY29udHJvbGxlcgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIGZpbmQgaW50ZXJmYWNlcyB3aGljaCBoYWN2ZSBhIGZpcmV3YWxsIHJ1bGUgb3BlbiBmb3IKLSAgICAgICAgICAgICAgICAjIHRjcC84MC4gIGllOiBpcCBmb3IgdGhlIGludGVyZmFjZSB3aXRoIHJlc3QtYXBpIHJvbGUKLSAgICAgICAgICAgICAgICBpcHMgPSBsb2NhbF9pbnRlcmZhY2VzX2ZpcmV3YWxsX29wZW4oInRjcCIsIDgwLCBlbnRyeSkKLQotICAgICAgICAgICAgICAgICMgY29udHJvbGxlci1pbnRlcmZhY2VzIG5lZWRzIHRvIGJlIGV4YW1pbmVkIHRvIGRldGVybWluZQotICAgICAgICAgICAgICAgICMgaWYgdGhlcmUncyBhbiBpcCBhZGRyZXNzIHRvIHVzZSB0byBkaXNjb3ZlciB0aGUgaGEtcm9sZQotICAgICAgICAgICAgICAgIGlmIGxlbihpcHMpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgICMgTm90IGV2ZW4gY2VydGFpbiBpZiB0aGlzIGlzIHJlYWNoYWJsZQotICAgICAgICAgICAgICAgICAgICBpZiBpcHNbMF1bJ2Rpc2NvdmVyZWQtaXAnXSAhPSAnJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBpcHNbMF1bJ2Rpc2NvdmVyZWQtaXAnXQotICAgICAgICAgICAgICAgICAgICBlbGlmIGlwc1swXVsnaXAnXSAhPSAnJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBpcHNbMF1bJ2lwJ10KLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5WydoYS1yb2xlJ10gPSAnbm8taXAnCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeVsnZXJyb3JzJ10gPSAnTm8gSVAgQWRkcmVzcycKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBlbnRyeVsnZXJyb3JzJ10gPSAnTm8gSVAgQWRkcmVzcycKLQotICAgICAgICAgICAgaWYgY29udHJvbGxlciA9PSBOb25lOgotICAgICAgICAgICAgICAgIGVudHJ5WydlcnJvcnMnXSA9ICdObyBpcCBhZGRyZXNzIGNvbmZpZ3VyZWQnCi0gICAgICAgICAgICAgICAgZW50cnlbJ2hhLXJvbGUnXSA9ICd1bmtub3duJwotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL2hhL3JvbGUiICUgY29udHJvbGxlcgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNkbnNoLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsLCB0aW1lb3V0ID0gMikKLSAgICAgICAgICAgICAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgICAgICAgICAgICAgaGFfcm9sZSA9IGpzb24ubG9hZHMocmVzdWx0KQotICAgICAgICAgICAgICAgIGVudHJ5WydoYS1yb2xlJ10gPSBoYV9yb2xlWydyb2xlJ10KLSAgICAgICAgICAgICAgICBpZiBub3QgJ2NsdXN0ZXJuYW1lJyBpbiBoYV9yb2xlOgotICAgICAgICAgICAgICAgICAgICBlbnRyeVsnZXJyb3JzJ10gPSAnbm8gY2x1c3Rlcm5hbWUgaW4gaGEtcm9sZSByZXN0IGFwaScKLSAgICAgICAgICAgICAgICAgICAgZW50cnlbJ2hhLXJvbGUnXSA9ICdVbnRydXN0ZWQ6ICVzJyAlIGhhX3JvbGVbJ3JvbGUnXQotICAgICAgICAgICAgICAgIGVsaWYgaGFfcm9sZVsnY2x1c3Rlcm5hbWUnXSAhPSBjbHVzdGVybmFtZToKLSAgICAgICAgICAgICAgICAgICAgZW50cnlbJ2Vycm9ycyddID0gJ05vdCBpbiBIQSBDbHVzdGVyLCByZXF1aXJlcyBkZWNvbWlzc2lvbicKLSAgICAgICAgICAgICAgICAgICAgZW50cnlbJ2hhLXJvbGUnXSA9ICdFeHRlcm5hbCBDbHVzdGVyOiAlcycgJSBoYV9yb2xlWydyb2xlJ10KLSAgICAgICAgICAgICAgICBpZiAnY2hhbmdlLWRhdGUtdGltZScgaW4gaGFfcm9sZToKLSAgICAgICAgICAgICAgICAgICAgZW50cnlbJ2NoYW5nZS1kYXRlLXRpbWUnXSA9IGhhX3JvbGVbJ2NoYW5nZS1kYXRlLXRpbWUnXQotICAgICAgICAgICAgICAgIGlmICdjaGFuZ2UtZGVzY3JpcHRpb24nIGluIGhhX3JvbGU6Ci0gICAgICAgICAgICAgICAgICAgIGVudHJ5WydjaGFuZ2UtZGVzY3JpcHRpb24nXSA9IGhhX3JvbGVbJ2NoYW5nZS1kZXNjcmlwdGlvbiddCi0gICAgICAgICAgICBleGNlcHQgdXJsbGliMi5IVFRQRXJyb3IsIGU6ICMgdGltZW91dD8KLSAgICAgICAgICAgICAgICBlbnRyeVsnZXJyb3JzJ10gPSBlLnJlYXNvbgotICAgICAgICAgICAgICAgIGVudHJ5WydoYS1yb2xlJ10gPSAndW5rbm93bicKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZXhjZXB0IHVybGxpYjIuVVJMRXJyb3IsIGU6ICMgdGltZW91dD8KLSAgICAgICAgICAgICAgICBlbnRyeVsnZXJyb3JzJ10gPSAnJXM6ICVzJyAlIChjb250cm9sbGVyLCBlLnJlYXNvbikKLSAgICAgICAgICAgICAgICBlbnRyeVsnaGEtcm9sZSddID0gJ3Vua25vd24nCi0gICAgICAgICAgICAgICAgY29udGludWUgIyBkb250dCB0cnkgdGhlIHVwdGltZSwgaXQgd2lsbCBmYWlsIHRvbwotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBlbnRyeVsnZXJyb3JzJ10gPSBzdHIoZSkKLSAgICAgICAgICAgICAgICBlbnRyeVsnaGEtcm9sZSddID0gJ3Vua25vd24nCi0KLSAgICAgICAgICAgIHVybCA9ICJodHRwOi8vJXMvcmVzdC92MS9zeXN0ZW0vdXB0aW1lIiAlIGNvbnRyb2xsZXIKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBzZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHVybCkKLSAgICAgICAgICAgICAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgICAgICAgICAgICAgdXB0aW1lID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgZW50cnlbJ3VwdGltZSddID0gdXB0aW1lWydzeXN0ZW1VcHRpbWVNc2VjJ10KLQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICByZXR1cm4gZGV0YWlsCi0KLQotZGVmIGNvbW1hbmRfZGlzcGxheV90YWJsZShvYmpfdHlwZSwgZGF0YSwgZGV0YWlsID0gJ2RlZmF1bHQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9mb3JtYXQgPSBOb25lLCB0aXRsZSA9IE5vbmUsIHNjb3BlZCA9IE5vbmUsIHNvcnQgPSBOb25lKToKLQotICAgICIiIgotICAgIERpc3BsYXkgZW50cmllcyBmcm9tIGEgb2JqX3R5cGUsIHdpdGggc29tZSBmaWx0ZXJpbmcgZG9uZSB2aWEgZGF0YSwKLSAgICBhbmQgdGhlIG91dHB1dCBmb3JtYXQgZGVzY3JpYmVkIGJ5IHRhYmxlX2Zvcm1hdCwgd2l0aCB0aGUgZGV2ZWwgb2YgZGV0YWlsIGluIGRldGFpbAotCi0gICAgQHBhcmFtIG9ial90eXBlIHN0cmluZyBuYW1lIG9mIHRoZSBvYmplY3QgdHlwZQotICAgIEBwYXJhbSBkYXRhIGRpY3Rpb25hcnkgb2YgY29uZmlndXJlZCBkYXRhIGl0ZW1zIGZyb20gdGhlIGRlc2NyaXB0aW9uCi0gICAgQHBhcmFtIHRhYmxlX2Zvcm1hdCBzdHJpbmcgZGVzY3JpYmluZyB0YWJsZSBmb3JtYXQgdG8gdXNlIGZvciBvdXRwdXQKLSAgICBAcGFyYW0gZGV0YWlsIHN0cmluZyBkZXNjcmliaW5nIHRoZSBkZXRhaWwtZmxhdm9yIGZvciBmb3JtYXQKLSAgICBAcGFyYW0gc2NvcGVkIHN0cmluZywgd2hlbiBub3QgbnVsbCwgaW5kaWNhdGVzIHRoZSBzdWJtb2RlIGxldmVsIGlzIHVzZWQgdG8gZmlsdGVyIHF1ZXJ5IHJlcXVlc3QKLSAgICBAcGFyYW0gc29ydCBzdHJpbmcsIGRlc2NyaWJlcyBzb3J0IHRvIGFwcGVuZCB0byB0aGUgcXVlcnkgcmVxdWVzdAotICAgICIiIgotCi0gICAgaWYgbm90IG1pLm9ial90eXBlX2V4aXN0cyhvYmpfdHlwZSk6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJVbmtub3duIG9iai10eXBlOiAlcyIgJSBvYmpfdHlwZSkKLSAgICAgICAgCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfZGlzcGxheV90YWJsZToiLCBvYmpfdHlwZSwgZGF0YSwgdGFibGVfZm9ybWF0LCBkZXRhaWwsIHNjb3BlZCwgc29ydAotCi0gICAgaWYgJ2RldGFpbCcgaW4gZGF0YToKLSAgICAgICAgZGV0YWlsID0gZGF0YVsnZGV0YWlsJ10KLQotICAgIGlmIG5vdCB0YWJsZV9mb3JtYXQ6Ci0gICAgICAgIGlmICdmb3JtYXQnIGluIGRhdGE6Ci0gICAgICAgICAgICB0YWJsZV9mb3JtYXQgPSBkYXRhWydmb3JtYXQnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGFibGVfZm9ybWF0ID0gb2JqX3R5cGUKLSAgICBpZiAnc2NvcGVkJyBpbiBkYXRhOgotICAgICAgICBzY29wZWQ9ZGF0YVsnc2NvcGVkJ10KLSAgICAgICAgZGVsIGRhdGFbJ3Njb3BlZCddCi0gICAgZW50cmllcyA9IGNvbW1hbmRfcXVlcnlfb2JqZWN0KG9ial90eXBlLCBkYXRhLCBzY29wZWQsIHNvcnQpCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfZGlzcGxheV90YWJsZTogJWQgZW50cmllcyBmb3VuZCwgdXNpbmcgJXMiICUgKGxlbihlbnRyaWVzKSwgZGF0YSkKLQotICAgICMgdXBkYXRlIGFueSBvZiB0aGUgcHJldHR5LXByaW50ZXIgdGFibGVzIGJhc2VkIG9uIHRoZSBvYmpfdHlwZQotICAgIG9ial90eXBlX3Nob3dfYWxpYXNfdXBkYXRlKG9ial90eXBlKQotCi0gICAgIyB3aXRoX2tleSBtYW5hZ2VzIHdoZXRoZXIgYSAnZGV0YWlsJyBvciB0YWJsZSBpcyBkaXNwbGF5ZWQuCi0gICAgd2l0aF9rZXkgPSAnPHdpdGhfa2V5PicgaWYgZGV0YWlsID09ICdkZXRhaWxzJyBhbmQgbGVuKGVudHJpZXMpID4gMCBlbHNlICc8bm9fa2V5PicKLQotICAgICMgcGljayBmb3JlaWduIGtleXMgd2hpY2ggYXJlIGNvbXBvdW5kIGtleXMsIGV4cGxvZGUgdGhlc2UgaW50byBmaWVsZHMKLSAgICBma3MgPSBbeCBmb3IgeCBpbiBtaS5vYmpfdHlwZV9mb3JlaWduX2tleXMob2JqX3R5cGUpIGlmIG1pLmlzX2NvbXBvdW5kX2tleShvYmpfdHlwZSx4KV0KLSAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgZm9yIGZrIGluIGZrczoKLSAgICAgICAgICAgIGlmIGZrIGluIGVudHJ5OiAjIGZrIG1heSBiZSBudWxsLWFibGUKLSAgICAgICAgICAgICAgICBtaS5zcGxpdF9jb21wb3VuZF9pbnRvX2RpY3Qob2JqX3R5cGUsIGZrLCBlbnRyeSwgVHJ1ZSkKLSAgICAjCi0gICAgZGV0YWlsID0gY29tbWFuZF9kaXNwbGF5X3RhYmxlX2pvaW5fZW50cmllcyhvYmpfdHlwZSwgZGF0YSwgZW50cmllcywgZGV0YWlsKQotCi0gICAgIyB1c2UgZGlzcGxheV9vYmpfdHlwZV9yb3dzIHNpbmNlIGl0IChjdXJyZW50bHkpIGpvaW5zIGZpZWxkcyBmb3Igb2JqX3R5cGVzLgotICAgIGRpc3BsYXkgPSBzZG5zaC5kaXNwbGF5X29ial90eXBlX3Jvd3ModGFibGVfZm9ybWF0LCBlbnRyaWVzLCB3aXRoX2tleSwgZGV0YWlsKQotICAgIGlmIHRpdGxlOgotICAgICAgICByZXR1cm4gdGl0bGUgKyBkaXNwbGF5Ci0gICAgcmV0dXJuIGRpc3BsYXkKLQotCi1kZWYgY29tbWFuZF9kaXNwbGF5X3Jlc3Rfam9pbl9lbnRyaWVzKHRhYmxlX2Zvcm1hdCwgZGF0YSwgZW50cmllcywgZGV0YWlsKToKLSAgICAiIiIKLSAgICBAcGFyYW0gdGFibGVfZm9ybWF0IHN0cmluZywgaWRlbnRpZnlpbmcgdGhlIGZpbmFsIHRhYmxlIG91dHB1dAotICAgIEBwYXJhbSBkYXRhICAgZGljdCwgdXNlZCB0byBxdWVyeSB0aGUgcmVzdCBhcGkgb3V0cHV0Ci0gICAgQHBhcmFtIGVudHJpZXMgbGlzdCBvZiBkaWN0cywgcmVhZHkgdG8gYmUgZGlzcGxheWVkCi0gICAgQHJldHVybiBzdHJpbmcgcmVwbGFjaW5nIGRldGFpbAotCi0gICAgIiIiCi0KLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiY29tbWFuZF9kaXNwbGF5X3Jlc3Rfam9pbl9lbnRyaWVzOiAiLCB0YWJsZV9mb3JtYXQsIGRhdGEsIGRldGFpbAotICAgICAgICAKLSAgICBpZiB0YWJsZV9mb3JtYXQgPT0gJ2NvbnRyb2xsZXItaW50ZXJmYWNlJzoKLSAgICAgICAgIyBqb2luIGZpcmV3YWxsIHJ1bGVzIGZvciB0aGVzZSBpbnRlcmZhY2VzCi0gICAgICAgIGZvciBpbnRmIGluIGVudHJpZXM6Ci0gICAgICAgICAgICBydWxlcyA9IFt4WydydWxlJ10gZm9yIHggaW4gc2Ruc2guZ2V0X2ZpcmV3YWxsX3J1bGVzKGludGZbJ2lkJ10pXQotICAgICAgICAgICAgaW50ZlsnZmlyZXdhbGwnXSA9ICcsICcuam9pbihydWxlcykKLQotICAgIGlmIHRhYmxlX2Zvcm1hdCA9PSAnc3lzdGVtLWNsb2NrJzoKLSAgICAgICAgIyBqb2luIHRoZSAndGltZScgc3RyaW5nLCBwb3NzaWJseSByZW1vdmUgJ3R6JyBmcm9tIGVudHJpZXNbMF0KLSAgICAgICAgZW50cmllc1swXVsndGltZSddID0gc2Ruc2guZ2V0X2Nsb2NrX3N0cmluZyhlbnRyaWVzWzBdLCBkYXRhLmdldCgnZGV0YWlsJykpCi0gICAgICAgIHJldHVybiAnZGV0YWlscycgIyBmb3JjZSB0YWJsZSBmb3JtYXQKLQotICAgIHJldHVybiBkZXRhaWwKLQotCi1kZWYgY29tbWFuZF9kaXNwbGF5X3Jlc3RfdHlwZV9jb252ZXJ0ZXIodGFibGVfZm9ybWF0LCByZXN0X3R5cGUsIGRhdGEsIGVudHJpZXMpOgotICAgICIiIgotICAgIHRoZSBleHBlY3RlZCBkaXNwbGF5IHRhYmxlX2Zvcm1hdCBpcyBhIGxpc3Qgb2YgZGljdGlvbmFyaWVzCi0gICAgZWFjaCBkaWN0aW9uYXJ5IGhhcyB0aGUgZmllbGQgOiB2YWx1ZSBwYWlycy4gIE1hbnkgcmVzdCBhcGkncwotICAgIHJldHVybiBhIGRpY3Rpb25hcnkgb2YgZGlmZmVyZW50IGxheWVycywgdGhlIGRlc2NyaXB0aW9uCi0gICAgcHJvdmlkZXMgYSByZXN0LXR5cGUsIHdoaWNoIGlzIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGZvcm0KLSAgICBvZiB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSB0aGUgcmVzdCBhcGkuCi0gICAgIiIiCi0KLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiY29tbWFuZF9kaXNwbGF5X3Jlc3RfdHlwZV9jb252ZXJ0ZXI6ICIsIHRhYmxlX2Zvcm1hdCwgcmVzdF90eXBlCi0gICAgICAgIAotICAgIGlmIHJlc3RfdHlwZS5zdGFydHN3aXRoKCdkaWN0LW9mLWxpc3Qtb2YtJyk6Ci0gICAgICAgICMgZW50cmllcyBsb29rIGxpa2UgeyByb3dfbmFtZSA6IFt2YWx1ZSwgLi4uXSwgLi4uIG1vcmUtcm93LXZhbHVlLXBhaXJzIH0KLSAgICAgICAgIwotICAgICAgICAjIGRpY3Qtb2YtbGlzdC1vZjogYSBkaWN0IHdpdGgga2V5J3Mgd2hpY2ggYXJlIGdpdmVuCi0gICAgICAgICMgdGhlIG5hbWUgb2YgdGhlIGZpcnN0IHRva2VuLCB0aGVuIHRoZSBkaWN0J3MgdmFsdWUgaXMKLSAgICAgICAgIyBhIGxpc3Qgd2hpY2ggY2FuIGJlIGdpdmVuIGFuIGFzc29jaWF0ZWQgbmFtZS4KLSAgICAgICAgIyBmb3IgZXhhbXBsZSAnZGljdC1vZi1saXN0LW9mLWNsdXN0ZXItaWR8W3N3aXRjaGVzXScKLSAgICAgICAgIwotICAgICAgICAjICdkaWN0LW9mLWxpc3Qtb2Ytc3dpdGNoJyBpcyBhIGRpY3Qgd2l0aCBrZXkgOiB2YWx1ZSdzCi0gICAgICAgICMgd2hlcmUgdGhlIHZhbHVlIGlzIGEgbGlzdC4gIFRoZSBtZW1iZXIncyBvZiB0aGUgbGlzdAotICAgICAgICAjIGFyZSBkaWN0aW9uYXJpZXMuICB0aGUga2V5IG9mIHRoZSBvdXRlciBkaWN0IGlzIGFkZGVkIHRvCi0gICAgICAgICMgZWFjaCBvZiB0aGUgZGljdHMsIGFuZCB0aGlzIGludGVyaW9yIGRpY3QgaXMgYWRkZWQgdG8KLSAgICAgICAgIyB0aGUgZmluYWwgb3V0cHV0IGxpc3QuCi0KLSAgICAgICAgIyBpZGVudGlmeSB0aGUgYWRkZWQga2V5IGZyb20gdGhlIHJlc3RfdHlwZQotICAgICAgICBrZXkgPSByZXN0X3R5cGUucmVwbGFjZSgnZGljdC1vZi1saXN0LW9mLScsJycpCi0gICAgICAgIHBhcnRzID0ga2V5LnNwbGl0KCd8JykKLSAgICAgICAgbmFtZXMgPSBOb25lCi0gICAgICAgIGJ1aWxkX2xpc3QgPSBGYWxzZQotICAgICAgICBpZiBsZW4ocGFydHMpID4gMDoKLSAgICAgICAgICAgIGtleSA9IHBhcnRzWzBdCi0gICAgICAgICAgICBuYW1lcyA9IHBhcnRzWzE6XSAjIHNob3VsZCBvbmx5IGJlIG9uZSBuYW1lCi0gICAgICAgICAgICBpZiBsZW4obmFtZXMpID4gMCBhbmQgbmFtZXNbMF1bMF0gPT0gJ1snOgotICAgICAgICAgICAgICAgIGJ1aWxkX2xpc3QgPSBUcnVlCi0gICAgICAgIGZvcm1hdHRlZF9saXN0ID0gW10KLSAgICAgICAgZm9yIChyb3dfbmFtZSwgcm93cykgaW4gZW50cmllcy5pdGVtcygpOgotICAgICAgICAgICAgaWYgbm90IHJvd3M6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICMgdXNlIHRoZSBuYW1lcyBhcyB3YXlzIG9mIGRlc2NyaWJpbmcgZWFjaCBvZiB0aGUgbGlzdCdzIGl0ZW1zCi0gICAgICAgICAgICBpZiB0eXBlKHJvd3MpID09IGxpc3QgYW5kIGJ1aWxkX2xpc3Q6Ci0gICAgICAgICAgICAgICAgIyBuYW1lWzBdIGxvb2tzIGxpa2UgJ1tzd2l0Y2hlc10nLCByZXF1ZXN0aW5nIHRoYXQgdGhpcwotICAgICAgICAgICAgICAgICMgbGlzdCBiZWNvbWUgc3dpdGNoZXMgOiBbcm93c10gCi0gICAgICAgICAgICAgICAgZm9ybWF0dGVkX2xpc3QuYXBwZW5kKHtrZXkgOiByb3dfbmFtZSwgbmFtZXNbMF1bMTotMV0gOiByb3dzfSkKLSAgICAgICAgICAgIGVsaWYgdHlwZShyb3dzKSA9PSBsaXN0OgotICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcm93czoKLSAgICAgICAgICAgICAgICAgICAgYWRkX2RpY3QgPSB7a2V5IDogcm93X25hbWV9Ci0gICAgICAgICAgICAgICAgICAgIGlmIHR5cGUocm93KSA9PSBzdHIgb3IgdHlwZShyb3cpID09IHVuaWNvZGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGljdFtuYW1lc1swXV0gPSByb3cKLSAgICAgICAgICAgICAgICAgICAgZWxpZiB0eXBlKHJvdykgPT0gZGljdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkaXRpb24gbmFtZXMgbWFrZSBubyBkaWZmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGljdC51cGRhdGUocm93KQotICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfbGlzdC5hcHBlbmQoYWRkX2RpY3QpCi0gICAgICAgICAgICBlbGlmIHR5cGUocm93cykgPT0gZGljdDoKLSAgICAgICAgICAgICAgICBkb19hcHBlbmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgbmV3X3JvdyA9IHsga2V5IDogcm93X25hbWUgfQotICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIFt4IGZvciB4IGluIG5hbWVzLmtleXMoKSBpZiB4IGluIHJvd106Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSByb3dbbmFtZV0KLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShpdGVtKSA9PSBzdHIgb3IgdHlwZShpdGVtKSA9PSB1bmljb2RlOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jvd1tuYW1lXSA9IGl0ZW0KLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShpdGVtKSA9PSBkaWN0OgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jvd1tuYW1lXS51cGRhdGUoaXRlbSkKLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShpdGVtKSA9PSBsaXN0OgotICAgICAgICAgICAgICAgICAgICAgICAgZG9fYXBwZW5kID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpX3JvdyBpbiBpdGVtOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yb3cudXBkYXRlKGlfcm93KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9saXN0LmFwcGVuZChuZXdfcm93KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yb3cgPSB7IGtleSA6IHJvd19uYW1lIH0KLSAgICAgICAgICAgICAgICBpZiBkb19hcHBlbmQ6Ci0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9saXN0LmFwcGVuZChuZXdfcm93KQotCi0gICAgICAgIGVudHJpZXMgPSBmb3JtYXR0ZWRfbGlzdAotICAgIGVsaWYgcmVzdF90eXBlLnN0YXJ0c3dpdGgoJ2RpY3Qtb2YtZGljdC1vZi0nKToKLSAgICAgICAgIyBlbnRyaWVzIGxvb2tzIGxpa2UgeyByb3dfbmFtZSA6IHsgWyB7IH0sIC4uLiBdIH0gIH0KLSAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdGhpcyB8Ci0gICAgICAgICMgaWU6IGRpY3Qgd2l0aCBhIHZhbHVlIHdoaWNoIGlzIGEgZGljdCwgd2hvc2UKLSAgICAgICAgIyAnZGljdC1vZi1kaWN0LW9mLXN3aXRjaHxwb3J0cycgIFRoZSBkaWN0IGhhcyBrZXkgOiB2YWx1ZXMKLSAgICAgICAgIyB3aGVyZSB0aGUgdmFsdWUgaXMgYSBkaWN0LiAgVGhhdCBkaWN0IGhhcyB0aGUgJ3N3aXRjaCcgOiBrZXkKLSAgICAgICAgIyBhZGRlZCwgYW5kIGl0IGJlY29tZXMgdGhlIGZpbmFsIG91dHB1dCBkaWN0LgotICAgICAgICAjCi0gICAgICAgICMgaWYgYSBzZWNvbmQgbmFtZSBpcyBpbmNsdWRlZCwgdGhlbiB0aGUgb3V0ZXIgZGljdCBpcyAKLSAgICAgICAgIyBleGFtaW5lZCB0byBmaW5kIHRoZXNlIHZhbHVlcyAoaWU6IHZhbHVlc1tuYW1lc10pLCBhbmQgdGhlc2UKLSAgICAgICAgIyBnZXQgYWRkZWQgdG8gdGhlIGZpbmFsIG91dHB1dCBkaWN0LgotICAgICAgICAjIAotICAgICAgICAjIGlkZW50aWZ5IHRoZSBhZGRlZCBrZXkgZnJvbSB0aGUgcmVzdF90eXBlCi0gICAgICAgIGtleSA9IHJlc3RfdHlwZS5yZXBsYWNlKCdkaWN0LW9mLWRpY3Qtb2YtJywnJykKLSAgICAgICAgcGFydHMgPSBrZXkuc3BsaXQoJ3wnKQotICAgICAgICBuYW1lID0gTm9uZQotICAgICAgICBpZiBsZW4ocGFydHMpID4gMDoKLSAgICAgICAgICAgIG5hbWVzID0gcGFydHNbMTpdCi0gICAgICAgICAgICBrZXkgPSBwYXJ0c1swXQotICAgICAgICBmb3JtYXR0ZWRfbGlzdCA9IFtdCi0gICAgICAgIGZvciAocm93X25hbWUsIHJvdykgaW4gZW50cmllcy5pdGVtcygpOgotICAgICAgICAgICAgcm93W2tleV0gPSByb3dfbmFtZQotICAgICAgICAgICAgZG9fYXBwZW5kID0gRmFsc2UKLSAgICAgICAgICAgIGlmIG5hbWVzOgotICAgICAgICAgICAgICAgIG5ld19yb3cgPSB7fQotICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIGluIHJvdzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSByb3dbbmFtZV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoaXRlbSkgPT0gc3RyIG9yIHR5cGUoaXRlbSkgPT0gdW5pY29kZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcm93W25hbWVdID0gaXRlbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2FwcGVuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgdHlwZShpdGVtKSA9PSBkaWN0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gcm93X25hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2FwcGVuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgdHlwZShpdGVtKSA9PSBsaXN0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpX3JvdyBpbiBpdGVtOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dfaXRlbXMgPSB7fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dfaXRlbXNba2V5XSA9IHJvd19uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd19pdGVtcy51cGRhdGUoaV9yb3cpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9saXN0LmFwcGVuZChyb3dfaXRlbXMpCi0gICAgICAgICAgICAgICAgaWYgZG9fYXBwZW5kOgotICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfbGlzdC5hcHBlbmQocm93KQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkX2xpc3QuYXBwZW5kKHJvdykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIGVudHJpZXMgPSBmb3JtYXR0ZWRfbGlzdAotICAgIGVsaWYgcmVzdF90eXBlLnN0YXJ0c3dpdGgoJ2RpY3Qtd2l0aC0nKToKLSAgICAgICAgIyByZXN0IHJlc3VsdCBsb29rcyBsaWtlOiB7IGsgOiB2LCBrIDogeyB9IH0KLSAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLSAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudCB0aGlzIHwKLSAgICAgICAgIyBkaWN0LXdpdGg6IHR5cGljYWxseSB1c2VkIGZvciBkaWN0IHJldHVybnMgd2hpY2ggaGF2ZQotICAgICAgICAjIG5lc3RlZCBkaWN0J3Mgd2hvJ3MgdmFsdWVzIGFyZSBwcm9tb3RlZCB0byBhIHNpbmdsZQotICAgICAgICAjIGxpc3Qgd2l0aCBhIGRpY3Qgd2l0aCB0aGVzZSB2YWx1ZXMuCi0gICAgICAgICMKLSAgICAgICAgIyBpZGVudGlmeSB0aGUgYWRkZWQga2V5IGZyb20gdGhlIHJlc3RfdHlwZQotICAgICAgICBrZXkgPSByZXN0X3R5cGUucmVwbGFjZSgnZGljdC13aXRoLScsJycpCi0gICAgICAgIG5hbWVzID0ga2V5LnNwbGl0KCd8JykKLSAgICAgICAgY29sbGVjdF9yb3cgPSB7fQotICAgICAgICBmb3JtYXR0ZWRfbGlzdCA9IFtdCi0gICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICAgICAgaWYgbmFtZSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgICAgIGl0ZW0gPSBlbnRyaWVzW25hbWVdCi0gICAgICAgICAgICAgICAgaWYgdHlwZShpdGVtKSA9PSBzdHIgb3IgdHlwZShpdGVtKSA9PSB1bmljb2RlIG9yIFwKLSAgICAgICAgICAgICAgICAgIHR5cGUoaXRlbSkgPT0gaW50IG9yIHR5cGUoaXRlbSkgPT0gbG9uZzogIyBYWFggZmxvYXQ/Ci0gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rfcm93W25hbWVdID0gaXRlbQotICAgICAgICAgICAgICAgIGVsaWYgdHlwZShpdGVtKSA9PSBsaXN0OgotICAgICAgICAgICAgICAgICAgICBmb3IgaV9yb3cgaW4gaXRlbToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvd19pdGVtcyA9IHt9Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfbGlzdC5hcHBlbmQoaV9yb3cpCi0gICAgICAgICAgICAgICAgZWxpZiB0eXBlKGl0ZW0pID09IGRpY3Q6Ci0gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rfcm93LnVwZGF0ZShpdGVtKQotCi0gICAgICAgIGlmIGxlbihjb2xsZWN0X3JvdykgPT0gMDoKLSAgICAgICAgICAgIGVudHJpZXMgPSBmb3JtYXR0ZWRfbGlzdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZW50cmllcyA9IFtjb2xsZWN0X3Jvd10gKyBmb3JtYXR0ZWRfbGlzdAotCi0gICAgZWxpZiByZXN0X3R5cGUgPT0gJ2RpY3QnOgotICAgICAgICBlbnRyaWVzID0gW2VudHJpZXNdCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoIlVua25vd24gcmVzdC10eXBlOiAlcyIgJSByZXN0X3R5cGUpCi0gICAgcmV0dXJuIGVudHJpZXMKLQotCi1kZWYgbWlzc2luZ19wYXJ0KGtleV9wYXJ0cywgZW50cnksIGtleV9jYXNlID0gRmFsc2UpOgotICAgICIiIgotICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbWlzc2luZyBmaWVsZCBvZiBvbmUgb2YgdGhlIHN0cmluZ3MKLSAgICBpbiB0aGUga2V5X3BhcnRzIGxpc3Qgd2hlbiBpdCAgZG9lc24ndCBhcHBlYXIgaW4gdGhlICdlbnRyeScgZGljdGlvbmFyeS4KLQotICAgIFJldHVybiBOb25lIG90aGVyd2lzZS4KLQotICAgIFRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSByb3dzIHdoaWNoIGRvbid0IGhhdmUgYWxsIHRoZQotICAgIHBhcnRzIG5lZWRlZCB0byBjb25zdHJjdXQgYSBqb2luIGtleSwgb3IgYSBkYi10YWJsZSBvcgotICAgIHF1ZXJ5ICJrZXkiIHRvIHN1cHBvcnQgYWRkaXRpb24gb2YgdHdvIGRpZmZlcmVudCB0YWJsZXMuCi0KLSAgICBAa2V5X3BhcnRzIGxpc3Qgb2Ygc3RyaW5ncywgCi0gICAgQGVudHJ5IGRpY3Rpb25hcnksIG5lZWRzIHRvIGNvbnRhaW5zIGVhY2ggc3RyaW5nIGluIGtleV9wYXJ0cwotICAgIEBrZXlfY2FzZSBUcnVlIHdoZW4gYWxsIGtleV9wYXJ0cyBtYXkgY29udGFpbiBhIGxlYWRpbmcgJ34nIHRvCi0gICAgICAgIGRlbm90ZSB0aGUgZmllbGQgbmVlZHMgdG8gYmUgbG93ZXIgY2FzZWQgZm9yIGpvaW5pbmcKLSAgICAiIiIKLSAgICBmb3Iga24gaW4ga2V5X3BhcnRzOgotICAgICAgICBpZiBub3Qga24gaW4gZW50cnk6Ci0gICAgICAgICAgICBpZiBrZXlfY2FzZSA9PSBGYWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4ga24KLSAgICAgICAgICAgIGlmIGtuWzBdICE9ICd+JzoKLSAgICAgICAgICAgICAgICByZXR1cm4ga24KLSAgICAgICAgICAgIGlmIGtuWzE6XSBub3QgaW4gZW50cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGtuWzE6XQotCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgY2FzZV9jdnQoZm4sIGZfZGljdCk6Ci0gICAgIiIiCi0gICAgRm9yIGpvaW4gb3BlcmF0aW9ucywgdGhlIGZpZWxkcyBpbiB0aGUgcGFydGlhbCByZXN1bHQgY2FuIG5vIGxvbmdlcgotICAgIGJlIGFzc29jaWF0ZWQgd2l0aCBhbnkgb2JqLXR5cGUsIHdoaWNoIG1lYW5zIGl0cyBpbXBvc3NpYmxlIHRvIGRldGVybWluZQotICAgIHdoZXRoZXIgdGhlIGFzc29jaWF0ZWQgZmllbGQgaXMgY2FzZSBzZW5zaXRpdmUuCi0KLSAgICBPbmUgYXBwcm9hY2ggdG8gdGhpcyBwcm9ibGVtIGlzIHRvIGNhc2Utbm9ybWFsaXplIHRoZSBvYmotdHlwZSdzCi0gICAgZmllbGQgdmFsdWVzIHdoZW4gdGhleSdyZSBmaXJzdCBhZGRlZCB0byB0aGUgcm93LiAgIFRoYXQgZG9lc24ndAotICAgIGhlbHAgZm9yIHJlc3QtYXBpJ3MsIHdoaWNoIG1lYW5zIGl0IGNhbiBvbmx5IGJlIGEgcGFydGlhbCBzb2x1dGlvbi4KLSAgICBJbiBhZGRpdGlvbiwgaXQgbWFrZXMgc2Vuc2UgdG8gcHJlc2VydmUgdGhlc2UgdmFsdWVzIHdoZW4gcG9zc2libGUsCi0gICAgYnV0IHN0aWxsIGpvaW4gYmFzZWQgb24gY2FzZS1ub3JtYWxpemF0aW9uLgotICAgICIiIgotICAgIGlmIGZuWzBdID09ICd+JzoKLSAgICAgICAgcmV0dXJuIHN0cihmX2RpY3QuZ2V0KGZuWzE6XSwgJycpLmxvd2VyKCkpCi0gICAgcmV0dXJuIHN0cihmX2RpY3QuZ2V0KGZuLCAnJykpCi0KLQotZGVmIG9ial90eXBlX2ZpZWxkX2Nhc2UoZGF0YSwgb2JqX3R5cGUsIGZpZWxkKToKLSAgICAiIiIKLSAgICBGb3Igb2JqZWN0cyB3aGVyZSB0aGUgY2FzZS1ub3JtYWxpemF0aW9uIGlzIGlkZW50aWZlZCwKLSAgICBtYW5hZ2UgY29udmVyc2lvbiBvZiB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZAotICAgICIiIgotICAgIGNhc2UgPSBtaS5nZXRfb2JqX3R5cGVfZmllbGRfY2FzZV9zZW5zaXRpdmUob2JqX3R5cGUsIGZpZWxkKQotICAgIHJldHVybiBzdHIoZGF0YVtmaWVsZF0pIGlmIG5vdCBjYXNlIGVsc2Ugc3RyKHV0aWYuY29udmVydF9jYXNlKGNhc2UsIGRhdGFbZmllbGRdKSkKLQotCi1kZWYgYWRkX2ZpZWxkcyhkZXN0LCBzcmMpOgotICAgICIiIgotICAgIFRoZXNlIHNob3VsZCBib3RoIGJlIGRpY3Rpb25hcmllcywgbGVhdmUgdGhlIG9yaWdpbmFsIGVudHJpZXMgaW4gcGxhY2UKLSAgICB3aGVuIHRoZSAnZGVzdCcgZW50cmllcyBhcmUgcG9wdWxhdGVkIGZyb20gJ3NyYycuICAgVGhpcyBvcGVyYXRpb24gaXMKLSAgICBoYW5keSBzaW5jZSB0aGUgb3JpZ2luYWwgJ2Rlc3QnIGVudHJpZXMgbWF5IGRpZmZlciBmcm9tIHRoZSAnc3JjJyBkdWUKLSAgICB0byBjYXNlIG5vcm1hbGl6YXRpb24uICAgU2luY2UgaGF2aW5nIGNvbnNpc3RlbnQgbmFtZXMgaXMgYSBwbHVzLCBieQotICAgIG5vdCB1cGRhdGluZyB0aGUgdmFsdWUgd2l0aCB0aGUgJ3NyYycgZW50cmllcywgJ2Rlc3QnIHJldGFpbnMgaXRzIG9yaWdpbmFsCi0gICAgdmFsdWVzLgotICAgICIiIgotICAgIGZvciAobix2KSBpbiBzcmMuaXRlbXMoKToKLSAgICAgICAgaWYgbiBub3QgaW4gZGVzdDoKLSAgICAgICAgICAgIGRlc3Rbbl0gPSB2Ci0gICAgICAgIGVsaWYgc3RyKGRlc3Rbbl0pLmxvd2VyKCkgPT0gc3RyKHYpLmxvd2VyOgotICAgICAgICAgICAgIyBzaG91bGQgaGF2ZSBiZXR0ZXIgY29udHJvbHMgZm9yIHdoZW4gdGhlIGNhc2UgbWF0dGVycwotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ0FERCAlcyBza2lwcGluZyB1cGRhdGluZyAlcyA8LT4gJXMnICUgKG4sIGRlc3Rbbl0sIHYpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkZXN0W25dID0gdgotCi0KLWRlZiBjb21tYW5kX3F1ZXJ5X3RhYmxlKG9ial90eXBlLCBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXIgPSBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gTm9uZSwgYXBwZW5kID0gTm9uZSwgc2NvcGVkID0gTm9uZSwgc29ydCA9IE5vbmUsIGNyYWNrID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgTGVhdmUgdGhlIHJlc3VsdCBpbiBjb21tYW5kJ3MgZ2xvYmFsIHF1ZXJ5X3Jlc3VsdCwgd2hpY2ggY2FuCi0gICAgYmUgdXNlZCBieSBvdGhlciBjX2FjdGlvbiBzdGVwcwotCi0gICAgJ2tleScgaXMgb25lIG9yIG1vcmUgZmllbGRzIHdoaWNoIGFyZSBjb25jYXRlbmF0ZWQgdG9nZXRoZXIgdG8gZm9ybQotICAgIHRoZSBkaXNwbGF5LXBpcGVsaW5lJ3MgdmVyc2lvbiBvZiBhIHByaW1hcnkga2V5LiAgIEl0IGNvdWxkIGJlIHRoZQotICAgIGFjdHVhbCBwcmltYXJ5IGtleSBvZiB0aGUgdGFibGUsIG9yIGl0IGNvdWxkIGJlIHNvbWUgZmllbGRzIHdoaWNoCi0gICAgYXBwZWFyIGluIGFsbCB0aGUgcm93cy4gICBPbmNlIHRoZSAna2V5JyBpcyBjb25zdHJ1Y3RlZCwgaXQgdXNlZCB0bwotICAgIGRldGVybWluZSBob3cgcmVzdWx0cyBhcmUgYWRkZWQgdG8gdGhlIGNvbW1hbmQucXVlcnlfcmVzdWx0LgotCi0gICAgSWYgdGhlIGV4aXN0aW5nIGVudHJpZXMgYXJlIHRvIGJlICdjbGVhcmVkJywgdGhlbiB0ZSBwcmltYXJ5IGtleSdzCi0gICAgYXJlIHNpbXBseSBhZGRlZCB0byB0aGUgdGFibGUuICBXaGVuIHRoZSBlbnRyaWVzIGFyZW4ndCBjbGVhcmVkLCB0aGVuCi0gICAgdGhlIGNvbXB1dGVkIHByaW1hcnkga2V5IGlzIHVzZWQgdG8gam9pbiBhZ2FpbnN0IGV4aXN0aW5nIGl0ZW1zLgotCi0gICAgRmluYWxseSwgdGhlIGRpY3QgZmllbGQgbmFtZSBmb3IgdGhlIHByaW1hcnkga2V5IGlzIGEgc2luZ2xlIGNoYXJhY3RlcjogJ0AnCi0gICAgVGhpcyBuYW1lIHdhcyBwaWNrZWQgc2luY2UgaXRzIG5vdCBwb3NzaWJsZSBmb3IgdGhlIGRhdGFiYXNlIHRvIGV2ZXIKLSAgICB1c2UgdGhhdCBuYW1lLgotICAgICIiIgotCi0gICAgaWYgbm90IG1pLm9ial90eXBlX2V4aXN0cyhvYmpfdHlwZSk6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJVbmtub3duIG9iai10eXBlOiAlcyIgJSBvYmpfdHlwZSkKLSAgICAgICAgCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfcXVlcnlfdGFibGU6Iiwgb2JqX3R5cGUsIGRhdGEsIGNsZWFyLCBrZXksIGFwcGVuZCwgc2NvcGVkLCBzb3J0LCBjcmFjawotCi0gICAgaWYgJ3Njb3BlZCcgaW4gZGF0YToKLSAgICAgICAgc2NvcGVkPWRhdGFbJ3Njb3BlZCddCi0gICAgICAgIGRlbCBkYXRhWydzY29wZWQnXQotCi0gICAgcmVzdWx0ID0gY29tbWFuZF9xdWVyeV9vYmplY3Qob2JqX3R5cGUsIGRhdGEsIHNjb3BlZCwgc29ydCkKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiY29tbWFuZF9xdWVyeV90YWJsZTogJWQgZW50cmllcyBmb3VuZCwgdXNpbmcgJXMiICUgXAotICAgICAgICAgICAgICAgIChsZW4ocmVzdWx0KSwgZGF0YSkKLQotICAgIGlmIGNyYWNrOgotICAgICAgICBpZiBjcmFjayA9PSBUcnVlOgotICAgICAgICAgICAgY3JhY2sgPSBtaS5wayhvYmpfdHlwZSkKLSAgICAgICAgZm9yIGVudHJ5IGluIHJlc3VsdDoKLSAgICAgICAgICAgIG1pLnNwbGl0X2NvbXBvdW5kX2ludG9fZGljdChvYmpfdHlwZSwgY3JhY2ssIGVudHJ5LCBUcnVlKQotCi0gICAgaWYgYXBwZW5kOgotICAgICAgICBmb3IgZW50cnkgaW4gcmVzdWx0OgotICAgICAgICAgICAgaWYgdHlwZShhcHBlbmQpID09IGRpY3Q6Ci0gICAgICAgICAgICAgICAgZW50cnkudXBkYXRlKGFwcGVuZCkKLSAgICAgICAgICAgIGVsaWYgdHlwZShhcHBlbmQpID09IGxpc3Q6Ci0gICAgICAgICAgICAgICAgZW50cnkudXBkYXRlKGRpY3QoYXBwZW5kKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW50cnlbYXBwZW5kXSA9IFRydWUKLQotICAgICMgYWxsIHRoZSBmaWVsZCBmcm9tIGFsbCB0aGUgcm93cyBuZWVkIHRvIGJlIHByZXNlbnQuCi0gICAgaWYga2V5OgotICAgICAgICBmaWVsZHMgPSBrZXkuc3BsaXQoJ3wnKQotCi0gICAgaWYgY2xlYXI6Ci0gICAgICAgIGNvbW1hbmQucXVlcnlfcmVzdWx0ID0gcmVzdWx0Ci0gICAgICAgIGlmIGtleToKLSAgICAgICAgICAgIGZvciByIGluIHJlc3VsdDoKLSAgICAgICAgICAgICAgICBtaXNzaW5nID0gIG1pc3NpbmdfcGFydChmaWVsZHMsIHIpCi0gICAgICAgICAgICAgICAgaWYgbWlzc2luZzoKLSAgICAgICAgICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiY29tbWFuZF9xdWVyeV90YWJsZTogJyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIG1pc3NpbmcgZmllbGQgaW4gcm93ICVzICglcykgIiAlIChtaXNzaW5nLCBvYmpfdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICByWydAJ10gPSAnfCcuam9pbihbb2JqX3R5cGVfZmllbGRfY2FzZShyLCBvYmpfdHlwZSwgZikgZm9yIGYgaW4gZmllbGRzXSkKLSAgICBlbHNlOgotICAgICAgICBpZiBrZXkgPT0gTm9uZToKLSAgICAgICAgICAgIGlmIGNvbW1hbmQucXVlcnlfcmVzdWxzICE9IE5vbmU6Ci0gICAgICAgICAgICAgICAgY29tbWFuZC5xdWVyeV9yZXN1bHQgKz0gcmVzdWx0Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbW1hbmQucXVlcnlfcmVzdWx0ID0gcmVzdWx0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByX2RpY3QgPSB7fQotICAgICAgICAgICAgZm9yIHIgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgIG1pc3NpbmcgPSAgbWlzc2luZ19wYXJ0KGZpZWxkcywgcikKLSAgICAgICAgICAgICAgICBpZiBtaXNzaW5nOgotICAgICAgICAgICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJjb21tYW5kX3F1ZXJ5X3RhYmxlOiAnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgbWlzc2luZyBmaWVsZCBpbiByb3cgJXMgKCVzKSAiICUgKG1pc3NpbmcsIG9ial90eXBlKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHBrID0gJ3wnLmpvaW4oW3JbZl0gZm9yIGYgaW4gZmllbGRzXSkKLSAgICAgICAgICAgICAgICByX2RpY3RbcGtdID0gcgotICAgICAgICAgICAgaWYgaGFzYXR0cihjb21tYW5kLCAncXVlcnlfcmVzdWx0JykgYW5kIGNvbW1hbmQucXVlcnlfcmVzdWx0OiAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGZvciBxciBpbiBjb21tYW5kLnF1ZXJ5X3Jlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgaWYgJ0AnIGluIHFyIGFuZCBxclsnQCddIGluIHJfZGljdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWVsZHMocXIsIHJfZGljdFtxclsnQCddXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbCByX2RpY3RbcXJbJ0AnXV0KLSAgICAgICAgICAgICAgICBjb21tYW5kLnF1ZXJ5X3Jlc3VsdCArPSByX2RpY3QudmFsdWVzKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZm9yIChyLCB2YWx1ZSkgaW4gcl9kaWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlWydAJ10gPSAnfCcuam9pbihbdmFsdWVbZl0gZm9yIGYgaW4gZmllbGRzXSkKLSAgICAgICAgICAgICAgICBjb21tYW5kLnF1ZXJ5X3Jlc3VsdCA9IHJfZGljdC52YWx1ZXMoKQotCi0KLWRlZiBjb21tYW5kX3F1ZXJ5X3Jlc3QoZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gTm9uZSwgcGF0aCA9IE5vbmUsIGNsZWFyID0gVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gTm9uZSwgcmVzdF90eXBlID0gTm9uZSwgc2NvcGVkID0gTm9uZSwgc29ydCA9IE5vbmUsIGFwcGVuZCA9IE5vbmUpOgotICAgICIiIgotICAgIExlYXZlIHRoZSByZXN1bHQgaW4gY29tbWFuZCdzIGdsb2JhbCBxdWVyeV9yZXN1bHQsIHdoaWNoIGNhbgotICAgIGJlIHVzZWQgYnkgb3RoZXIgY19hY3Rpb24gc3RlcHMgKHF1ZXJ5LXRhYmxlLCBqb2luLXRhYmxlLCBqb2luLXJlc3QsIGRpc3BsYXkpCi0KLSAgICAna2V5JyBpcyBvbmUgb3IgbW9yZSBmaWVsZHMgd2hpY2ggYXJlIGNvbmNhdGVuYXRlZCB0b2dldGhlciB0byBmb3JtCi0gICAgdGhlIGRpc3BsYXktcGlwZWxpbmUncyB2ZXJzaW9uIG9mIGEgcHJpbWFyeSBrZXkuICAgSXQgY291bGQgYmUgdGhlCi0gICAgYWN0dWFsIHByaW1hcnkga2V5IG9mIHRoZSB0YWJsZSwgb3IgaXQgY291bGQgYmUgc29tZSBmaWVsZHMgd2hpY2gKLSAgICBhcHBlYXIgaW4gYWxsIHRoZSByb3dzLiAgIE9uY2UgdGhlICdrZXknIGlzIGNvbnN0cnVjdGVkLCBpdCB1c2VkIHRvCi0gICAgZGV0ZXJtaW5lIGhvdyByZXN1bHRzIGFyZSBhZGRlZCB0byB0aGUgY29tbWFuZC5xdWVyeV9yZXN1bHQuCi0KLSAgICBJZiB0aGUgZXhpc3RpbmcgZW50cmllcyBhcmUgdG8gYmUgJ2NsZWFyZWQnLCB0aGVuIHRlIHByaW1hcnkga2V5J3MKLSAgICBhcmUgc2ltcGx5IGFkZGVkIHRvIHRoZSB0YWJsZS4gIFdoZW4gdGhlIGVudHJpZXMgYXJlbid0IGNsZWFyZWQsIHRoZW4KLSAgICB0aGUgY29tcHV0ZWQgcHJpbWFyeSBrZXkgaXMgdXNlZCB0byBqb2luIGFnYWluc3QgZXhpc3RpbmcgaXRlbXMuCi0KLSAgICBGaW5hbGx5LCB0aGUgZGljdCBmaWVsZCBuYW1lIGZvciB0aGUgcHJpbWFyeSBrZXkgaXMgYSBzaW5nbGUgY2hhcmFjdGVyOiAnQCcKLSAgICBUaGlzIG5hbWUgd2FzIHBpY2tlZCBzaW5jZSBpdHMgbm90IHBvc3NpYmxlIGZvciB0aGUgZGF0YWJhc2UgdG8gZXZlcgotICAgIHVzZSB0aGF0IG5hbWUuCi0KLSAgICAiIiIKLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJjb21tYW5kX3F1ZXJ5X3Jlc3Q6IiwgdXJsLCBwYXRoLCByZXN0X3R5cGUsIGRhdGEsIHNjb3BlZCwgc29ydCwgYXBwZW5kCi0KLSAgICBpZiB1cmwgPT0gTm9uZSBhbmQgcGF0aCA9PSBOb25lOgotICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcigibWlzc2luZyB1cmwgb3IgcGF0aCIpCi0gICAgICAgIAotICAgIGlmIHBhdGg6Ci0gICAgICAgIHNjaGVtYSA9IHNkbnNoLnNkbmRiLnNjaGVtYV9kZXRhaWwocGF0aCkKLSAgICAgICAgaWYgc2NoZW1hOgotICAgICAgICAgICAgcmVzdWx0ID0gc2Ruc2guc2RuZGIuZGF0YV9yZXN0X3JlcXVlc3QocGF0aCkKLSAgICAgICAgaWYga2V5OgotICAgICAgICAgICAgIyBjcmVhdGUgYSBrZXkgZGljdGlvbmFyeSwgd2l0aCB0aGUga2V5IHZhbHVlcywgcG9pbnRpbmcgdG8KLSAgICAgICAgICAgICMgYSBwc3RoIGluIHRoZSBzY2hlbWEuCi0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHByaW50ICdQQVRIJywgcGF0aCwgcmVzdWx0Ci0gICAgZWxzZToKLSAgICAgICAgIyBpZiB1cmwgaXMgYSBsaXN0LCBwaWNrIHRoZSBmaXJzdCBvbmUgd2hpY2ggY2FuIGJlIGJ1aWxkIGZyb20gdGhlIGRhdGEKLSAgICAgICAgaWYgdHlwZSh1cmwpID09IGxpc3Q6Ci0gICAgICAgICAgICBzZWxlY3RfdXJsID0gdXJsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxlY3RfdXJsID0gW3VybF0KLQotICAgICAgICB1c2VfdXJsID0gTm9uZQotICAgICAgICBmb3IgdSBpbiBzZWxlY3RfdXJsOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHVzZV91cmwgPSAodSAlIGRhdGEpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgaWYgdXNlX3VybCA9PSBOb25lOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAiY29tbWFuZF9xdWVyeV9yZXN0OiBubyB1cmwgZm91bmQiCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBxdWVyeV91cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvIiAlIHNkbnNoLmNvbnRyb2xsZXIgKyB1c2VfdXJsCi0KLSAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgIHByaW50ICJjb21tYW5kX3F1ZXJ5X3Jlc3Q6IHF1ZXJ5ICIsIHF1ZXJ5X3VybAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXN1bHQgPSBzZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHF1ZXJ5X3VybCkKLSAgICAgICAgICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLSAgICAgICAgICAgIGVudHJpZXMgPSBqc29uLmxvYWRzKHJlc3VsdCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uIG9yIHNkbnNoLmRlYnVnOgotICAgICAgICAgICAgICAgIHByaW50ICdjb21tYW5kX3F1ZXJ5X3Jlc3Q6IEVSUk9SIHVybCAlcyAlcycgJSAodXJsLCBlKQotICAgICAgICAgICAgZW50cmllcyA9IFtdCi0KLSAgICAgICAgaWYgZW50cmllcyA9PSBOb25lIG9yIGxlbihlbnRyaWVzKSA9PSAwOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAiY29tbWFuZF9xdWVyeV9yZXN0OiBubyBuZXcgZW50cmllcyAiLCBxdWVyeV91cmwKLSAgICAgICAgICAgIGlmIGNsZWFyOgotICAgICAgICAgICAgICAgIGNvbW1hbmQucXVlcnlfcmVzdWx0ID0gTm9uZQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBJdCBjZXJ0YWlubHkgc2VlbXMgcG9zc2libGUgdG8gbWFwIGZyb20gdXJsJ3MgdG8gdGhlIHR5cGUgYXNzb2NpYXRlZCwKLSAgICAgICAgIyB3aXRoIHRoZSByZXN1bHQsIGJ1dCBpdCBhbHNvIG1ha2VzIHNlbnNlIHRvIGVuY29kZSB0aGF0IHR5cGUgaW5mb3JtYXRpb24KLSAgICAgICAgIyBpbnRvIHRoZSBkZXNjcmlwdGlvbgotICAgICAgICBpZiByZXN0X3R5cGU6Ci0gICAgICAgICAgICByZXN1bHQgPSBjb21tYW5kX2Rpc3BsYXlfcmVzdF90eXBlX2NvbnZlcnRlcihOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXMpCi0gICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgIHByaW50ICJjb21tYW5kX3F1ZXJ5X3Jlc3Q6ICVzICNlbnRyaWVzICVkICIgJSAodXJsLCBsZW4oZW50cmllcykpCi0gICAgICAgICAgICAgICAgcHJpbnQgcmVzdWx0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICAgICAgaW1wb3J0IGZtdGNudgotICAgICAgICAgICAgaWYgKG9ub3MgPT0gMSkgYW5kICh1cmwgPT0gJ2xpbmtzJyk6Ci0gICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgICAgICAgICAgICAgIHNyYyA9IGVudHJ5LmdldCgnc3JjJykKLSAgICAgICAgICAgICAgICAgICAgZHN0ID0gZW50cnkuZ2V0KCdkc3QnKQotICAgICAgICAgICAgICAgICAgICBmb3IgdGVtcEVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjbXAoc3JjLCB0ZW1wRW50cnkuZ2V0KCdkc3QnKSkgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjbXAoZHN0LCB0ZW1wRW50cnkuZ2V0KCdzcmMnKSkgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cmllcy5yZW1vdmUodGVtcEVudHJ5KQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsKLSAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy1zd2l0Y2gnICAgICAgICAgIDogZm10Y252LnByaW50X3N3aXRjaF9hbmRfYWxpYXMoZW50cnlbJ3NyYyddWydkcGlkJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAnc3JjLXBvcnQnICAgICAgICAgICAgOiBlbnRyeVsnc3JjJ11bJ3BvcnROdW1iZXInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy1wb3J0LXN0YXRlJyAgICAgIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2RzdC1zd2l0Y2gnICAgICAgICAgIDogZm10Y252LnByaW50X3N3aXRjaF9hbmRfYWxpYXMoZW50cnlbJ2RzdCddWydkcGlkJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAnZHN0LXBvcnQnICAgICAgICAgICAgOiBlbnRyeVsnZHN0J11bJ3BvcnROdW1iZXInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2RzdC1wb3J0LXN0YXRlJyAgICAgIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgICAgIDogZW50cnlbJ3R5cGUnXSwKLSAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZW50cmllcwotICAgICAgICAKLSAgICBpZiBhcHBlbmQ6Ci0gICAgICAgIGZvciBlbnRyeSBpbiByZXN1bHQ6Ci0gICAgICAgICAgICBpZiB0eXBlKGFwcGVuZCkgPT0gZGljdDoKLSAgICAgICAgICAgICAgICBlbnRyeS51cGRhdGUoYXBwZW5kKQotICAgICAgICAgICAgZWxpZiB0eXBlKGFwcGVuZCkgPT0gbGlzdDoKLSAgICAgICAgICAgICAgICBlbnRyeS51cGRhdGUoZGljdChhcHBlbmQpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbnRyeVthcHBlbmRdID0gVHJ1ZQotICAgIAotICAgIGlmIGtleToKLSAgICAgICAgZmllbGRzID0ga2V5LnNwbGl0KCd8JykKLQotICAgIGlmIGNsZWFyOgotICAgICAgICBjb21tYW5kLnF1ZXJ5X3Jlc3VsdCA9IHJlc3VsdAotICAgICAgICBpZiBrZXk6Ci0gICAgICAgICAgICBmb3IgciBpbiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgclsnQCddID0gJ3wnLmpvaW4oW3JbZl0gZm9yIGYgaW4gZmllbGRzXSkKLSAgICBlbHNlOgotICAgICAgICBpZiBrZXkgPT0gTm9uZToKLSAgICAgICAgICAgIGlmIGNvbW1hbmQucXVlcnlfcmVzdWx0ICE9IE5vbmU6Ci0gICAgICAgICAgICAgICAgY29tbWFuZC5xdWVyeV9yZXN1bHQgKz0gcmVzdWx0Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbW1hbmQucXVlcnlfcmVzdWx0ID0gcmVzdWx0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByX2RpY3QgPSB7fQotICAgICAgICAgICAgZm9yIHIgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgIG1pc3NpbmcgPSAgbWlzc2luZ19wYXJ0KGZpZWxkcywgciwga2V5X2Nhc2UgPSBUcnVlKQotICAgICAgICAgICAgICAgIGlmIG1pc3Npbmc6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgImNvbW1hbmRfcXVlcnlfcmVzdDogbWlzc2luZyBmaWVsZCAlcyBpbiByb3cgJXMiICUgKG1pc3NpbmcsIHIpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgcGsgPSAnfCcuam9pbihbY2FzZV9jdnQoZiwgcikgZm9yIGYgaW4gZmllbGRzXSkKLSAgICAgICAgICAgICAgICByX2RpY3RbcGtdID0gcgotICAgICAgICAgICAgZm9yIHFyIGluIGNvbW1hbmQucXVlcnlfcmVzdWx0OgotICAgICAgICAgICAgICAgIGlmICdAJyBpbiBxciBhbmQgcXJbJ0AnXSBpbiByX2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgIGFkZF9maWVsZHMocXIsIHJfZGljdFtxclsnQCddXSkKLQotCi1kZWYgY29tbWFuZF9qb2luX3Jlc3QodXJsLCBkYXRhLCBrZXksIGpvaW5fZmllbGQsCi0gICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpZWxkID0gTm9uZSwgcmVzdF90eXBlID0gTm9uZSwgY3JhY2sgPSBOb25lLCB1cmxfa2V5ID0gTm9uZSk6Ci0gICAgCi0gICAgIiIiCi0gICAgdXJsLWtleSBhbGxvd3Mgc2luZ2xlIHJvdyByZXN1bHRzIHRvIGhhdmUgYSBuYW1lOnZhbHVlIGFkZGVkIHRvIHRoZQotICAgIGVudHJ5IGluIHNpdHVhdGlvbnMgd2hlcmUgYSBzaW5nbGUgZGljdGlvbmFyeSBpcyBjb21wdXRlZCBhZnRlciB0aGUKLSAgICByZXN0LXR5cGUgY29udmVyc2lvbi4gICB0aGlzIGFsbG93cyBzaW1wbGUgcmVzdWx0cyBmcm9tIHRoZSB1cmwgdG8KLSAgICBoYXZlIGEga2V5d29yZCBhZGRlZCB0byBhbGxvdyBqb2lucy4KLSAgICAiIiIKLSAgICBpZiBub3QgaGFzYXR0cihjb21tYW5kLCAncXVlcnlfcmVzdWx0Jyk6Ci0gICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICBwcmludCAiY29tbWFuZF9qb2luX3Jlc3Q6IG5vIGVudHJpZXMgZm91bmQiCi0gICAgICAgIHJldHVybgotICAgICAgICAKLSAgICBpZiBjb21tYW5kLnF1ZXJ5X3Jlc3VsdCA9PSBOb25lOgotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgcHJpbnQgImNvbW1hbmRfam9pbl9yZXN0OiBxdWVyeV9yZXN1bHQ6IE5vbmUiCi0gICAgICAgIHJldHVybgotCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfam9pbl9yZXN0OiAlZCBlbnRyaWVzIGZvdW5kLCB1c2luZyAlcywgdXJsICVzIiAlIFwKLSAgICAgICAgICAgICAgICAobGVuKGNvbW1hbmQucXVlcnlfcmVzdWx0KSwgZGF0YSwgdXJsKQotICAgICAgICBwcmludCAiY29tbWFuZF9qb2luX3Jlc3Q6IiwgZGF0YSwga2V5LCBqb2luX2ZpZWxkCi0KLSAgICBpZiB1cmwgPT0gTm9uZToKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgam9pbl9maWVsZCA9PSBOb25lOgotICAgICAgICByZXR1cm4KLSAgICBpZiBrZXkgPT0gTm9uZToKLSAgICAgICAgcmV0dXJuCi0KLQotICAgICMgQ29sbGVjdCBhbGwgdGhlIHF1ZXJpZXMsIHJlbW92aW5nIGFueSBkdXBsaWNhdGVzCi0gICAgcXVlcmllcyA9IHt9Ci0gICAgZm9yIGVudHJ5IGluIGNvbW1hbmQucXVlcnlfcmVzdWx0OgotICAgICAgICAjIGlmIHVybCBpcyBhIGxpc3QsIHBpY2sgdGhlIGZpcnN0IG9uZSB3aGljaCBjYW4gYmUgYnVpbGQgZnJvbSB0aGUgZGF0YQotICAgICAgICBpZiB0eXBlKHVybCkgPT0gbGlzdDoKLSAgICAgICAgICAgIHNlbGVjdF91cmwgPSB1cmwKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGVjdF91cmwgPSBbdXJsXQotCi0gICAgICAgIHVzZV91cmwgPSBOb25lCi0gICAgICAgIGZvciB1IGluIHNlbGVjdF91cmw6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdXNlX3VybCA9ICh1ICUgZW50cnkpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgaWYgdXNlX3VybCA9PSBOb25lOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAiY29tbWFuZF9qb2luX3Jlc3Q6IG5vIHVybCBmb3VuZCIsIHVybAotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcXVlcnlfdXJsID0gImh0dHA6Ly8lcy9yZXN0L3YxLyIgJSBzZG5zaC5jb250cm9sbGVyICsgdXNlX3VybAotCi0gICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICBwcmludCAiY29tbWFuZF9qb2luX3Jlc3Q6IHF1ZXJ5ICIsIHF1ZXJ5X3VybCwgZW50cnkKLSAgICAgICAgaWYgcXVlcnlfdXJsIGluIHF1ZXJpZXM6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdChxdWVyeV91cmwpCi0gICAgICAgICAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgICAgICAgICBlbnRyaWVzID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlbnRyaWVzID0gW10KLQotICAgICAgICBpZiBlbnRyaWVzID09IE5vbmUgb3IgbGVuKGVudHJpZXMpID09IDA6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICMgSXQgY2VydGFpbmx5IHNlZW1zIHBvc3NpYmxlIHRvIG1hcCBmcm9tIHVybCdzIHRvIHRoZSB0eXBlIGFzc29jaWF0ZWQsCi0gICAgICAgICMgd2l0aCB0aGUgcmVzdWx0LCBidXQgaXQgYWxzbyBtYWtlcyBzZW5zZSB0byBlbmNvZGUgdGhhdCB0eXBlIGluZm9ybWF0aW9uCi0gICAgICAgICMgaW50byB0aGUgZGVzY3JpcHRpb24KLSAgICAgICAgaWYgcmVzdF90eXBlOgotICAgICAgICAgICAgcXVlcmllc1txdWVyeV91cmxdID0gY29tbWFuZF9kaXNwbGF5X3Jlc3RfdHlwZV9jb252ZXJ0ZXIoTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzKQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyB1cmxfa2V5IGFsbG93cyB0aGUgYWRkaXRpb24gb2YgYSBrZXkgZm9yIGpvaW5pbmcgZm9yIHNpbmdsZSByZXN1bHRzCi0gICAgICAgICAgICBpZiB1cmxfa2V5IGFuZCBsZW4ocXVlcmllc1txdWVyeV91cmxdKSA9PSAxOgotICAgICAgICAgICAgICAgIHF1ZXJpZXNbcXVlcnlfdXJsXVswXVt1cmxfa2V5XSA9IGVudHJ5LmdldCh1cmxfa2V5KQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAiY29tbWFuZF9qb2luX3Jlc3Q6ICVzICNlbnRyaWVzICVkICNyZXN1bHQgJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgKHVybCwgbGVuKGVudHJpZXMpLCBsZW4ocXVlcmllc1txdWVyeV91cmxdKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHF1ZXJpZXNbcXVlcnlfdXJsXSA9IGVudHJpZXMKLSAgICAgICAgICAgIAotICAgICMgRnJvbSB0aGUgcXVlcnkgcmVzdWx0cywgZ2VuZXJhdGUgdGhlIGRpY3Rpb25hcnkgdG8gam9pbiB0aHJvdWdoCi0KLSAgICBrZXlfcGFydHMgPSBrZXkuc3BsaXQoJ3wnKSAgICAgICMgYWxsIHRoZSBmaWVsZHMgbmVlZGVkIHRvIG1ha2UgYSBrZXkKLSAgICBrZXlfZGljdCA9IHt9ICAgICAgICAgICAgICAgICAgICMgcmVzdWx0aW5nIGtleSBkaWN0aW9uYXJ5Ci0gICAgZm9yICh1cmwsIHZhbHVlKSBpbiBxdWVyaWVzLml0ZW1zKCk6Ci0gICAgICAgIGZvciBlbnRyeSBpbiB2YWx1ZToKLSAgICAgICAgICAgICMgc2VlIGlmIGFsbCB0aGUga2V5IHBhcnRzIGFyZSBpbiB0aGUgZW50cnkKLSAgICAgICAgICAgIG1pc3NpbmcgPSAgbWlzc2luZ19wYXJ0KGtleV9wYXJ0cywgZW50cnkpCi0gICAgICAgICAgICBpZiBtaXNzaW5nOgotICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgICAgICBwcmludCAnY29tbWFuZF9qb2luX3Jlc3Q6IG1pc3NpbmcgZmllbGQgJXMgaW4gJXMnICUgKG1pc3NpbmcsIGVudHJ5KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBuZXdfa2V5ID0gJ3wnLmpvaW4oW3N0cihlbnRyeVtrbl0pIGZvciBrbiBpbiBrZXlfcGFydHNdKQotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAnY29tbWFuZF9qb2luX3Jlc3Q6IG5ldy1rZXknLCBuZXdfa2V5Ci0gICAgICAgICAgICBrZXlfZGljdFtuZXdfa2V5XSA9IGVudHJ5Ci0KLSAgICAjIFVzaW5nIHRoZSBrZXktZGljdGlub2FyeSwgbG9vayBmb3IgbWF0Y2hlcyBmcm9tIHRoZSBvcmlnaW5hbCBlbnRyaWVzCi0KLSAgICBpZiBhZGRfZmllbGQ6Ci0gICAgICAgIHBhcnRzID0gYWRkX2ZpZWxkLnNwbGl0KCd8JykKLSAgICAgICAgZnJvbV9maWVsZHMgPSBOb25lCi0gICAgICAgIGlmIGxlbihwYXJ0cyk6Ci0gICAgICAgICAgICBhZGRfZmllbGQgPSBwYXJ0c1swXQotICAgICAgICAgICAgZnJvbV9maWVsZHMgPSBwYXJ0c1sxOl0KLQotICAgIGpvaW5fcGFydHMgPSBqb2luX2ZpZWxkLnNwbGl0KCd8JykKLSAgICBmb3IgZW50cnkgaW4gY29tbWFuZC5xdWVyeV9yZXN1bHQ6Ci0gICAgICAgIGlmIGxlbihqb2luX3BhcnRzKToKLSAgICAgICAgICAgIG1pc3NpbmcgPSBtaXNzaW5nX3BhcnQoam9pbl9wYXJ0cywgZW50cnksIGtleV9jYXNlID0gVHJ1ZSkKLSAgICAgICAgICAgIGlmIG1pc3Npbmc6Ci0gICAgICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgImNvbW1hbmRfam9pbl9yZXN0OiBtaXNzaW5nIGZpZWxkICVzIGluICVzIiAlIChtaXNzaW5nLCBlbnRyeSkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgam9pbmVyID0gJ3wnLmpvaW4oW2Nhc2VfY3Z0KGtuLCBlbnRyeSkgZm9yIGtuIGluIGpvaW5fcGFydHNdKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAiY29tbWFuZF9qb2luX3Jlc3Q6IGpvaW5pbmcgIiwgIGVudHJ5LCBqb2luX2ZpZWxkLCBlbnRyeS5nZXQoam9pbl9maWVsZCkKLSAgICAgICAgICAgIGlmIG5vdCBqb2luX2ZpZWxkIGluIGVudHJ5OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBqb2luZXIgPSBjYXNlX2N2dChqb2luX2ZpZWxkLCBlbnRyeSkKLQotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgcHJpbnQgImNvbW1hbmRfam9pbl9yZXN0OiBqb2luaW5nICIsICBlbnRyeSwgam9pbmVyLCBrZXlfZGljdC5nZXQoam9pbmVyKQotCi0gICAgICAgIGlmIGpvaW5lciBpbiBrZXlfZGljdDoKLSAgICAgICAgICAgICMgYWRkIGFsbCB0aGUgZW50cmllcyBmcm9tIHRoZSBrZXlfZGljdCAKLSAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgcHJpbnQgJ2NvbW1hbmRfam9pbl9yZXN0OiBBREQnLCBrZXlfZGljdFtqb2luZXJdCi0gICAgICAgICAgICBpZiBhZGRfZmllbGQgPT0gTm9uZToKLSAgICAgICAgICAgICAgICBhZGRfZmllbGRzKGVudHJ5LCBrZXlfZGljdFtqb2luZXJdKQotICAgICAgICAgICAgZWxpZiBmcm9tX2ZpZWxkczoKLSAgICAgICAgICAgICAgICBpZiBsZW4oZnJvbV9maWVsZHMpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgICMgYWRkIGEgc2luZ2xlIGZpZWxkCi0gICAgICAgICAgICAgICAgICAgIGlmIGZyb21fZmllbGRzWzBdIGluIGtleV9kaWN0W2pvaW5lcl06Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeVthZGRfZmllbGRdID0ga2V5X2RpY3Rbam9pbmVyXVtmcm9tX2ZpZWxkc1swXV0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIGFkZCBhIGRpY3Rpb25hcnkKLSAgICAgICAgICAgICAgICAgICAgZW50cnlbYWRkX2ZpZWxkXSA9IGRpY3QoW1tmZiwga2V5X2RpY3Rbam9pbmVyXVtmZl1dCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZmIGluIGZyb21fZmllbGRzXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW50cnlbYWRkX2ZpZWxkXSA9IGtleV9kaWN0W2pvaW5lcl0KLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJjb21tYW5kX2pvaW5fcmVzdDogIiwgY29tbWFuZC5xdWVyeV9yZXN1bHQKLQotCi1kZWYgY29tbWFuZF9qb2luX3RhYmxlKG9ial90eXBlLCBkYXRhLCBrZXksIGpvaW5fZmllbGQsCi0gICAgICAgICAgICAgICAgICAgICAgIGtleV92YWx1ZSA9IE5vbmUsIGFkZF9maWVsZCA9IE5vbmUsIGNyYWNrID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgQWRkIGZpZWRzIHRvIHRoZSBjdXJyZW50IGNvbW1hbmQucXVlcnlfcmVzdWx0IGJ5IGxvb2tpbmcgdXAgdGhlIGVudHJ5IGluCi0gICAgdGhlIGRiL3N0b3JlLiAgIGtleSByZXByZXNlbnRzIHRoZSB2YWx1ZSBvZiB0aGUgaW5kZXggdG8gdXNlIGZyb20KLSAgICB0aGUgZW50cmllcyByZWFkIGZyb20gdGhlIGRhdGFiYXNlLiAgVGhlIGtleSBjYW4gYmUgY29tcG9zZWQgb2YKLSAgICBtdWx0aXBsZSBmaWVsZHMgd2l0aGluIHRoZSBlbnRyeS4gICBUaGUgam9pbl9maWVsZCBpcyB0aGUgbmFtZQotICAgIG9mIHRoZSBmaWVsZCB3aXRoaW4gdGhlIGNvbW1hbmQucXVlcnlfcmVzdWx0IHRvIHVzZSBhcyB0aGUgdmFsdWUgdG8gbWF0Y2gKLSAgICBhZ2FpbnN0IHRoZSBrZXkgZmllbGQuCi0KLSAgICBXaGVuIGtleV92YWx1ZSBpcyBOb25lLCB0aGUgbWF0Y2hlZCBlbnRyeSBmcm9tIHRoZSBqb2luX2ZpZWxkJ3MgaXMKLSAgICB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeSwgYW5kIGFsbCB0aGUgcGFpciBvZiBuYW1lOnZhbHVlcyBhcmUgYWRkZWQKLSAgICBkaXJlY3RseSB0byB0aGUgbmV3IGVudHJ5LiAgIAotCi0gICAgV2hlbiBrZXlfdmFsdWUgaXMgYSBmaWVsZCBuYW1lLCB0aGUgam9pbmVkIGVudHJpZXMgYXJlIGNvbGxlY3RlZCAKLSAgICBhcyBhIGxpc3QsIGFuZCBhZGRlZCB0byB0aGUgbmV3IGVudHJ5IGEgdGhlIGtleV92YWx1ZSBuYW1lLgotICAgIChzZWUgdGhlIHVzZSBvZiB0YWctbWFwcGluZyBhcyBhbiBleGFtcGxlKQotICAgICIiIgotICAgIGlmIG5vdCBoYXNhdHRyKGNvbW1hbmQsICdxdWVyeV9yZXN1bHQnKToKLSAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgIHByaW50ICJjb21tYW5kX2pvaW5fdGFibGU6IG5vIGVudHJpZXMgZm91bmQiCi0gICAgICAgIHJldHVybgotCi0gICAgaWYgY29tbWFuZC5xdWVyeV9yZXN1bHQgPT0gTm9uZToKLSAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgIHByaW50ICJjb21tYW5kX2pvaW5fdGFibGU6IHF1ZXJ5X3Jlc3VsdDogTm9uZSIKLSAgICAgICAgcmV0dXJuCi0gICAgCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfam9pbl90YWJsZTogJWQgZW50cmllcyBmb3VuZCwgdXNpbmcgJXMsIG9ial90eXBlICVzICVzICVzIiAlIFwKLSAgICAgICAgICAgICAgICAobGVuKGNvbW1hbmQucXVlcnlfcmVzdWx0KSwgZGF0YSwgb2JqX3R5cGUsIGtleSwgam9pbl9maWVsZCkKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfam9pbl90YWJsZToiLCBkYXRhLCBrZXksIGpvaW5fZmllbGQKLQotICAgIGlmIGpvaW5fZmllbGQgPT0gTm9uZToKLSAgICAgICAgcmV0dXJuCi0gICAgaWYga2V5ID09IE5vbmU6Ci0gICAgICAgIHJldHVybgotCi0gICAgaWYgbm90IG1pLm9ial90eXBlX2V4aXN0cyhvYmpfdHlwZSk6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJVbmtub3duIG9iai10eXBlOiAlcyIgJSBvYmpfdHlwZSkKLQotICAgICMgYnVpbGQgdGhlIGpvaW5fZGljdCwgd2hpY2ggd2lsbCBoYXZlIGtleXMgZm9yIHRoZSBpdGVtcyB0bwotICAgICMgYWRkIGludG8gdGhlIGVudHJpZXMKLSAgICBpZiBub3QgbWkub2JqX3R5cGVfaGFzX21vZGVsKG9ial90eXBlKToKLSAgICAgICAgZW50cmllcyA9IHJlc3RfdG9fbW9kZWwuZ2V0X21vZGVsX2Zyb21fdXJsKG9ial90eXBlLCBkYXRhKQotICAgIGVsc2U6Ci0gICAgICAgIGVudHJpZXMgPSBzZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZShvYmpfdHlwZSkKLQotICAgICMgZGV0ZXJtaW5lIHdoZXRoZXIgc3BlY2lmaWMgZmllbGQgbmFtZXMgYXJlIGFkZGVkCi0gICAgaWYgYWRkX2ZpZWxkOgotICAgICAgICBwYXJ0cyA9IGFkZF9maWVsZC5zcGxpdCgnfCcpCi0gICAgICAgIGZyb21fZmllbGRzID0gTm9uZQotICAgICAgICBpZiBsZW4ocGFydHMpOgotICAgICAgICAgICAgYWRkX2ZpZWxkID0gcGFydHNbMF0KLSAgICAgICAgICAgIGZyb21fZmllbGRzID0gcGFydHNbMTpdCi0KLSAgICAjIGNvbnN0dWN0IHRoZSBqb2luIGtleSBmb3IgZWFjaCByb3cgZnJvbSB0aGUgZGIgdGFibGUKLSAgICBrZXlfcGFydHMgPSBrZXkuc3BsaXQoJ3wnKSAgICAgICMgYWxsIHRoZSBmaWVsZHMgbmVlZGVkIHRvIG1ha2UgYSBrZXkKLSAgICBrZXlfZGljdCA9IHt9ICAgICAgICAgICAgICAgICAgICMgcmVzdWx0aW5nIGtleSBkaWN0aW9uYXJ5Ci0gICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgICMgc2VlIGlmIGFsbCB0aGUga2V5IHBhcnRzIGFyZSBpbiB0aGUgZW50cnkKLSAgICAgICAgbWlzc2luZyA9IG1pc3NpbmdfcGFydChrZXlfcGFydHMsIGVudHJ5KQotICAgICAgICBpZiBtaXNzaW5nOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAiY29tbWFuZF9qb2luX3RhYmxlOiBtaXNzaW5nIGZpZWxkICVzIGluICVzIiAlIChtaXNzaW5nLCBlbnRyeSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgbmV3X2tleSA9ICd8Jy5qb2luKFtvYmpfdHlwZV9maWVsZF9jYXNlKGVudHJ5LCBvYmpfdHlwZSwga24pIGZvciBrbiBpbiBrZXlfcGFydHNdKQotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgcHJpbnQgJ2NvbW1hbmRfam9pbl90YWJsZTogbmV3LWtleScsIG5ld19rZXksIGtleV92YWx1ZQotICAgICAgICBpZiBrZXlfdmFsdWU6Ci0gICAgICAgICAgICBpZiBub3QgbmV3X2tleSBpbiBrZXlfZGljdDoKLSAgICAgICAgICAgICAgICBrZXlfZGljdFtuZXdfa2V5XSA9IFtlbnRyeV0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAga2V5X2RpY3RbbmV3X2tleV0uYXBwZW5kKGVudHJ5KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAga2V5X2RpY3RbbmV3X2tleV0gPSBlbnRyeQotCi0KLSAgICAjIGxldCAnY3JhY2snIGNvbnRhaW4gdGhlIGZpZWxkJ3MgbmFtZSwgbm90IGEgYm9vbGVhbi4KLSAgICBpZiBjcmFjayBhbmQgY3JhY2sgPT0gVHJ1ZToKLSAgICAgICAgY3JhY2sgPSBtaS5wayhvYmpfdHlwZSkKLQotICAgICMgVXNpbmcgdGhlIGtleS1kaWN0aW5vYXJ5LCBsb29rIGZvciBtYXRjaGVzIGZyb20gdGhlIG9yaWdpbmFsIGVudHJpZXMKLQotICAgIGpvaW5fcGFydHMgPSBqb2luX2ZpZWxkLnNwbGl0KCd8JykKLSAgICBmb3IgZW50cnkgaW4gY29tbWFuZC5xdWVyeV9yZXN1bHQ6Ci0gICAgICAgIGlmIGxlbihqb2luX3BhcnRzKToKLSAgICAgICAgICAgIG1pc3NpbmcgPSAgbWlzc2luZ19wYXJ0KGpvaW5fcGFydHMsIGVudHJ5LCBrZXlfY2FzZSA9IFRydWUpCi0gICAgICAgICAgICBpZiBtaXNzaW5nOgotICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgICAgIHByaW50ICJjb21tYW5kX2pvaW5fdGFibGU6IG1pc3NpbmcgZmllbGQgJXMgaW4gJXMiICUgKG1pc3NpbmcsIGVudHJ5KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBqb2luZXIgPSAnfCcuam9pbihbY2FzZV9jdnQoa24sIGVudHJ5KSBmb3Iga24gaW4gam9pbl9wYXJ0c10pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgIHByaW50ICJjb21tYW5kX2pvaW5fdGFibGU6IGpvaW5pbmcgIiwgIGVudHJ5LCBqb2luX2ZpZWxkLCBlbnRyeS5nZXQoam9pbl9maWVsZCkKLSAgICAgICAgICAgIGlmIG5vdCBqb2luX2ZpZWxkIGluIGVudHJ5OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBqb2luZXIgPSBjYXNlX2N2dChqb2luX2ZpZWxkLCBlbnRyeSkKLQotICAgICAgICBpZiBqb2luZXIgaW4ga2V5X2RpY3Q6Ci0gICAgICAgICAgICBpZiBjcmFjazoKLSAgICAgICAgICAgICAgICBpZiBub3QgY3JhY2sgaW4ga2V5X2RpY3RbZW50cnlbam9pbmVyXV06Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiY29tbWFuZF9qb2luX3RhYmxlOiBmaWVsZCAlcyBub3QgaW4gZW50cnkiICUgY3JhY2ssIGtleV9kaWN0W2pvaW5lcl0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBtaS5zcGxpdF9jb21wb3VuZF9pbnRvX2RpY3Qob2JqX3R5cGUsIGNyYWNrLCBrZXlfZGljdFtqb2luZXJdLCBUcnVlKQotCi0gICAgICAgICAgICAjIGFkZCBhbGwgdGhlIGVudHJpZXMgZnJvbSB0aGUga2V5X2RpY3QgCi0gICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgIHByaW50ICdjb21tYW5kX2pvaW5fdGFibGU6IEFERCAlcyBhcyAlcyAnICUgKGtleV9kaWN0W2pvaW5lcl0sIGFkZF9maWVsZCkKLSAgICAgICAgICAgIGlmIGFkZF9maWVsZCA9PSBOb25lOgotICAgICAgICAgICAgICAgIGlmIGtleV92YWx1ZToKLSAgICAgICAgICAgICAgICAgICAgZW50cnlba2V5X3ZhbHVlXSA9IGtleV9kaWN0W2pvaW5lcl0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBhZGRfZmllbGRzKGVudHJ5LCBrZXlfZGljdFtqb2luZXJdKQotICAgICAgICAgICAgZWxpZiBmcm9tX2ZpZWxkczoKLSAgICAgICAgICAgICAgICBpZiBsZW4oZnJvbV9maWVsZHMpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgICMgYWRkIGEgc2luZ2xlIGZpZWxkCi0gICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoa2V5X2RpY3Rbam9pbmVyXSkgPT0gbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5W2FkZF9maWVsZF0gPSBbeFtmcm9tX2ZpZWxkc1swXV0gZm9yIHggaW4ga2V5X2RpY3Rbam9pbmVyXV0KLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5W2FkZF9maWVsZF0gPSBrZXlfZGljdFtqb2luZXJdW2Zyb21fZmllbGRzWzBdXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgYWRkIGEgZGljdGlvbmFyeSB3aXRoIG5hbWVkIGZpZWxkcwotICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKGtleV9kaWN0W2pvaW5lcl0pID09IGxpc3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBrZXlfZGljdFtqb2luZXJdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5W2FkZF9maWVsZF0gPSBkaWN0KFtbZmYsIGl0ZW1bZmZdXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZmIGluIGZyb21fZmllbGRzXSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5W2FkZF9maWVsZF0gPSBkaWN0KFtbZmYsIGtleV9kaWN0W2pvaW5lcl1bZmZdXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmYgaW4gZnJvbV9maWVsZHNdKQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW50cnlbYWRkX2ZpZWxkXSA9IGtleV9kaWN0W2pvaW5lcl0KLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJjb21tYW5kX2pvaW5fdGFibGU6ICIsIGNvbW1hbmQucXVlcnlfcmVzdWx0Ci0KLQotZGVmIGNvbW1hbmRfZGlzcGxheV9yZXN0KGRhdGEsIHVybCA9IE5vbmUsIHNvcnQgPSBOb25lLCByZXN0X3R5cGUgPSBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2Zvcm1hdCA9IE5vbmUsIHRpdGxlID0gTm9uZSwgZGV0YWlsID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgUGVyZm9ybSBhIGNhbGwgdG8gdGhlIHJlc3QgYXBpLCBhbmQgZm9ybWF0IHRoZSByZXN1bHQuCi0KLSAgICBXaGVuIHNvcnQgaXNuJ3QgTm9uZSwgaXQgbmFtZXMgYSBmaWVsZCB3aG9zZSdzIHZhbHVlIGFyZSBzb3J0ZWQgb24uCi0gICAgIiIiCi0gICAgI2p1c3QgYSBoYWNrIGNoZWNrIHRvIGltcGxlbWVudCBkZWNlbmRpbmcgc29ydGluZwotICAgIGRlc2NlbmRpbmcgPSBGYWxzZQotICAgICNyYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcignXG5cblxuICVzJyAlIChkZXNjZW5kaW5nKSkKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiY29tbWFuZF9kaXNwbGF5X3Jlc3Q6ICIsIGRhdGEsIHVybCwgcmVzdF90eXBlLCB0YWJsZV9mb3JtYXQsIGRldGFpbAotCi0gICAgaWYgbm90IHVybDoKLSAgICAgICAgdXJsID0gZGF0YS5nZXQoJ3VybCcpCi0gICAgaWYgbm90IHRhYmxlX2Zvcm1hdDoKLSAgICAgICAgdGFibGVfZm9ybWF0ID0gZGF0YS5nZXQoJ2Zvcm1hdCcpCi0KLSAgICBjaGVja19zaW5nbGVfZW50cnkgPSBUcnVlCi0KLSAgICAjIGlmIHVybCBpcyBhIGxpc3QsIHBpY2sgdGhlIGZpcnN0IG9uZSB3aGljaCBjYW4gYmUgYnVpbGQgZnJvbSB0aGUgZGF0YQotICAgIHNlbGVjdF91cmwgPSB1cmwKLSAgICBpZiB1cmwgYW5kIHR5cGUodXJsKSA9PSBsaXN0OgotICAgICAgICBmb3IgdSBpbiB1cmw6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZWN0X3VybCA9ICh1ICUgZGF0YSkKLSAgICAgICAgICAgICAgICBzZWxlY3RfdXJsID0gdSAjIHNlbGVjdCB0aGlzIHVybCBmcm9tIHRoZSBsaXN0Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICBpZiBub3QgZGV0YWlsOgotICAgICAgICBkZXRhaWwgPSBkYXRhLmdldCgnZGV0YWlsJywgJ2RlZmF1bHQnKQotICAgIHVybCA9ICJodHRwOi8vJXMvcmVzdC92MS8iICUgc2Ruc2guY29udHJvbGxlciArIChzZWxlY3RfdXJsICUgZGF0YSkKLQotICAgIHJlc3VsdCA9IHNkbnNoLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsKQotICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiY29tbWFuZF9kaXNwbGF5X3Jlc3Q6IHJlc3VsdCAiLCByZXN1bHQKLSAgICBlbnRyaWVzID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgICAgICNyZXN0X3R5cGUgPSBOb25lCi0gICAgICAgICNyYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcignXG5cblxuICVzJyAlIChhdHRyaWJ1dGVzKSkKLSAgICAjaWYgJ3JlYWx0aW1lc3RhdHMnIGluIGRhdGEgYW5kIGRhdGFbJ3JlYWx0aW1lc3RhdHMnXSA9PSAnZ3JvdXAnOgotCi0gICAgZW50cmllczIgPSBOb25lCi0KLQotICAgIGlmICdyZWFsdGltZXN0YXRzJyBpbiBkYXRhIGFuZCBkYXRhWydyZWFsdGltZXN0YXRzJ10gPT0gJ2dyb3VwJzoKLSAgICAgICAgdXJsMiA9ICJodHRwOi8vJXMvcmVzdC92MS8iICUgc2Ruc2guY29udHJvbGxlciArICgicmVhbHRpbWVzdGF0cy9ncm91cGRlc2MvJShkcGlkKXMvIiAlIGRhdGEpCi0gICAgICAgIHJlc3VsdDIgPSBzZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHVybDIpCi0gICAgICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdDIpCi0gICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICBwcmludCAiY29tbWFuZF9kaXNwbGF5X3Jlc3Q6IGdyb3VwZGVzYyByZXN1bHQgIiwgcmVzdWx0MgotICAgICAgICBlbnRyaWVzMiA9IGpzb24ubG9hZHMocmVzdWx0MikKLSAgICAgICAgCi0gICAgIyBJdCBjZXJ0YWlubHkgc2VlbXMgcG9zc2libGUgdG8gbWFwIGZyb20gdXJsJ3MgdG8gdGhlIHR5cGUgYXNzb2NpYXRlZCwKLSAgICAjIHdpdGggdGhlIHJlc3VsdCwgYnV0IGl0IGFsc28gbWFrZXMgc2Vuc2UgdG8gZW5jb2RlIHRoYXQgdHlwZSBpbmZvcm1hdGlvbgotICAgICMgaW50byB0aGUgZGVzY3JpcHRpb24KLSAgICBpZiAncm91dGVycmVhbHRpbWVzdGF0cycgaW4gZGF0YSAgYW5kIGRhdGFbJ3JvdXRlcnJlYWx0aW1lc3RhdHMnXSA9PSAnYWRqYWNlbmN5JzoKLSAgICAgICAgcmVzdF90eXBlID1GYWxzZQotICAgIGlmIHJlc3RfdHlwZToKLSAgICAgICAgZW50cmllcyA9IGNvbW1hbmRfZGlzcGxheV9yZXN0X3R5cGVfY29udmVydGVyKHRhYmxlX2Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzKQotICAgICAgICBpZiAncmVhbHRpbWVzdGF0cycgaW4gZGF0YSBhbmQgZGF0YVsncmVhbHRpbWVzdGF0cyddID09ICdncm91cCc6Ci0gICAgICAgICAgICBpZiBlbnRyaWVzMiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBlbnRyaWVzMiA9IGNvbW1hbmRfZGlzcGxheV9yZXN0X3R5cGVfY29udmVydGVyKHRhYmxlX2Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzMikKLQotICAgIGlmICdyb3V0ZXInIGluIGRhdGEgIGFuZCBkYXRhWydyb3V0ZXInXSA9PSAncm91dGVyJzoKLSAgICAgICAgY29tYlJlc3VsdCA9IFtdCi0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgYXR0cmlidXRlcyA9IGVudHJ5LmdldCgnc3RyaW5nQXR0cmlidXRlcycpCi0gICAgICAgICAgICAjcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoJ1xuXG5cbiAlcycgJSAoYXR0cmlidXRlcykpCi0gICAgICAgICAgICBjb21iUmVzdWx0LmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICdkcGlkJyAgICAgICAgICAgOiBlbnRyeS5nZXQoJ2RwaWQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3JvdXRlcklQJyAgICAgICA6IGF0dHJpYnV0ZXNbJ3JvdXRlcklwJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICduYW1lJyAgICAgICAgICAgOiBhdHRyaWJ1dGVzWyduYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICdpc0VkZ2VSb3V0ZXInICAgOiBhdHRyaWJ1dGVzWydpc0VkZ2VSb3V0ZXInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3JvdXRlck1hYycgICAgICA6IGF0dHJpYnV0ZXNbJ3JvdXRlck1hYyddLAotICAgICAgICAgICAgICAgICAgICAgICAnbm9kZVNJZCcgICAgICAgIDogYXR0cmlidXRlc1snbm9kZVNpZCddLAotICAgICAgICAgICAgICAgICAgICAgICB9LCkKLSAgICAgICAgZW50cmllcyA9IGNvbWJSZXN1bHQKLSAgICAjcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoJ1xuXG5cbiAlcycgJSAoZW50cmllcykpCi0gICAgaWYgJ3JvdXRlcnJlYWx0aW1lc3RhdHMnIGluIGRhdGEgIGFuZCBkYXRhWydyb3V0ZXJyZWFsdGltZXN0YXRzJ10gPT0gJ3BvcnQnOgotICAgICAgICAjcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoJ1xuXG5cbiAlcycgJSAoZGF0YSkpCi0gICAgICAgIGNvbWJSZXN1bHQgPSBbXQotICAgICAgICBwb3J0TGlzdCA9IGVudHJpZXMKLSAgICAgICAgZm9yIHBvcnQgaW4gcG9ydExpc3Q6Ci0gICAgICAgICAgICBwb3J0RGF0YSA9IHBvcnQuZ2V0KCJwb3J0IikKLSAgICAgICAgICAgIG5hbWUgPSBwb3J0RGF0YS5nZXQoInN0cmluZ0F0dHJpYnV0ZXMiKS5nZXQoJ25hbWUnKQotICAgICAgICAgICAgcG9ydE5vID0gcG9ydERhdGEuZ2V0KCJwb3J0TnVtYmVyIikgJiAweEZGRkYgIyBjb252ZXJ0aW5nIHRvIHVuc2lnbmVkMTZpbnQKLSAgICAgICAgICAgIHN1Ym5ldElwID0gcG9ydC5nZXQoInN1Ym5ldElwIikKLSAgICAgICAgICAgIGFkamFjZW5jeSA9IHN0cihwb3J0LmdldCgnYWRqYWNlbmN5JykpCi0gICAgICAgICAgICBjb21iUmVzdWx0LmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnICAgICAgICAgICAgOm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcnRObycgICAgICAgICAgIDogcG9ydE5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJuZXRJcCcgICAgICAgICA6IHN1Ym5ldElwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGphY2VuY3knICAgICAgICA6IGFkamFjZW5jeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICBlbnRyaWVzID0gY29tYlJlc3VsdAotICAgIGlmICdyb3V0ZXJyZWFsdGltZXN0YXRzJyBpbiBkYXRhICBhbmQgZGF0YVsncm91dGVycmVhbHRpbWVzdGF0cyddID09ICdhZGphY2VuY3knOgotICAgICAgICAjcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoJ1xuXG5cbiAlcycgJSAoZW50cmllcykpCi0gICAgICAgICNyYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcignXG5cblxuICVzJyAlIChlbnRyaWVzKSkKLSAgICAgICAgY29tYlJlc3VsdCA9IFtdCi0gICAgICAgIGFkamFjZW5jeVBhaXJMaXN0ID0gZW50cmllcwotICAgICAgICBmb3IgYWRqYWNlbmN5UGFpciBpbiBhZGphY2VuY3lQYWlyTGlzdDoKLSAgICAgICAgICAgIGFkamFjZW5jeVNpZCA9IGFkamFjZW5jeVBhaXIuZ2V0KCJhZGphY2VuY3lTaWQiKQotICAgICAgICAgICAgcG9ydHMgPSBhZGphY2VuY3lQYWlyLmdldCgicG9ydHMiKQotICAgICAgICAgICAgY29tYlJlc3VsdC5hcHBlbmQoewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGphY2VuY3lTaWQnICAgIDogYWRqYWNlbmN5U2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3J0cycgICAgICAgICAgIDogcG9ydHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgZW50cmllcyA9IGNvbWJSZXN1bHQKLSAgICAjcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoJ1xuXG5cbiAlcycgJSAoZGF0YSkpCi0KLSAgICBpZiAnc2hvd3R1bm5lbCcgaW4gZGF0YSAgYW5kIChkYXRhWydzaG93dHVubmVsJ10gPT0gJ3R1bm5lbCcgb3IgZGF0YVsnZGV0YWlsJ10gPT0gJ2RldGFpbHMnKToKLSAgICAgICAgI2VyYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcignXG5cblxuICVzJyAlIChlbnRyaWVzKSkKLSAgICAgICAgY29tYlJlc3VsdCA9IFtdCi0gICAgICAgIHR1bm5lbExpc3QgPSBlbnRyaWVzCi0gICAgICAgIGZvciB0dW5uZWwgaW4gdHVubmVsTGlzdDoKLSAgICAgICAgICAgIGxhYmVsU3RhY2tMaXN0ID0gKHR1bm5lbC5nZXQoJ2xhYmVsU3RhY2snKSkKLSAgICAgICAgICAgIGxhYmVsU3RhY2tTdHJpbmcgPSBzdHIobGFiZWxTdGFja0xpc3QpCi0gICAgICAgICAgICBsYWJlbFN0YWNrU3RyaW5nID0gcmVtb3ZlX3VuaWNvZGVzKGxhYmVsU3RhY2tTdHJpbmcpCi0gICAgICAgICAgICAjbGFiZWxTdGFja0xpc3QgPSAodHVubmVsLmdldCgnbGFiZWxTdGFjaycpKQotICAgICAgICAgICAgI2xhYmVsU3RhY2tTdHJpbmcgPSdbJwotICAgICAgICAgICAgI2ZvciBsYWJlbFNhY2sgaW4gbGFiZWxTdGFja0xpc3Q6Ci0gICAgICAgICAgICAjICAgIGZvciBsYWJlbCBpbiBsYWJlbFNhY2s6Ci0gICAgICAgICAgICAjICAgICAgICBsYWJlbFN0YWNrU3RyaW5nICs9IChsYWJlbCArICcsJykKLSAgICAgICAgICAgICNpZiBsYWJlbFN0YWNrU3RyaW5nID09ICdbJzoKLSAgICAgICAgICAgICMgICAgbGFiZWxTdGFja1N0cmluZyA9ICcnCi0gICAgICAgICAgICAjZWxzZToKLSAgICAgICAgICAgICMgICAgbGFiZWxTdGFja1N0cmluZyA9IGxhYmVsU3RhY2tTdHJpbmdbOi0xXQotICAgICAgICAgICAgIyAgICBsYWJlbFN0YWNrU3RyaW5nICs9ICddJwotICAgICAgICAgICAgdHVubmVsSWQgPSB0dW5uZWwuZ2V0KCd0dW5uZWxJZCcpCi0gICAgICAgICAgICB0dW5uZWxQYXRoID0gdHVubmVsLmdldCgndHVubmVsUGF0aCcpCi0gICAgICAgICAgICBkcGlkR3JvdXAgPSBzdHIodHVubmVsLmdldCgnZHBpZEdyb3VwJykpCi0gICAgICAgICAgICBkcGlkR3JvdXA9IHJlbW92ZV91bmljb2RlcyhkcGlkR3JvdXApCi0gICAgICAgICAgICBwb2xpY2llcyA9IHR1bm5lbC5nZXQoJ3BvbGljaWVzJykKLSAgICAgICAgICAgIGNvbWJSZXN1bHQuYXBwZW5kKHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHVubmVsSWQnICAgICAgIDogdHVubmVsSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xhYmVsU3RhY2snICAgICA6IGxhYmVsU3RhY2tTdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RwaWRHcm91cCcgICAgICA6IGRwaWRHcm91cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHVubmVsUGF0aCcgICAgIDogdHVubmVsUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9saWNpZXMnICAgICAgIDogcG9saWNpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgZW50cmllcyA9IGNvbWJSZXN1bHQKLQotICAgIGlmICdzaG93cG9saWN5JyBpbiBkYXRhICBhbmQgZGF0YVsnc2hvd3BvbGljeSddID09ICdwb2xpY3knOgotICAgICAgICAjcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoJ1xuXG5cbiAlcycgJSAoZGF0YSkpCi0gICAgICAgIGNvbWJSZXN1bHQgPSBbXQotICAgICAgICBwb3J0TGlzdCA9IGVudHJpZXMKLSAgICAgICAgZm9yIHBvbGljeSBpbiBwb3J0TGlzdDoKLSAgICAgICAgICAgIHBvbGljeUlkID0gcG9saWN5LmdldCgicG9saWN5SWQiKQotICAgICAgICAgICAgcG9saWN5VHlwZSA9IHBvbGljeS5nZXQoInBvbGljeVR5cGUiKQotICAgICAgICAgICAgcHJpb3JpdHkgPSBwb2xpY3kuZ2V0KCJwcmlvcml0eSIpCi0gICAgICAgICAgICB0dW5uZWxJZCA9IHBvbGljeS5nZXQoJ3R1bm5lbElkJykKLSAgICAgICAgICAgIG1hdGNoID0gcG9saWN5LmdldCgibWF0Y2giKQotICAgICAgICAgICAgZHN0SXBBZGRyZXNzID0gbWF0Y2guZ2V0KCdkc3RJcEFkZHJlc3MnKVsndmFsdWUnXSBpZiBtYXRjaC5nZXQoJ2RzdElwQWRkcmVzcycpIGVsc2UgJyonCi0gICAgICAgICAgICBkc3RNYWNBZGRyZXNzID0gbWF0Y2guZ2V0KCdkc3RNYWNBZGRyZXNzJylbJ3ZhbHVlJ10gaWYgbWF0Y2guZ2V0KCdkc3RNYWNBZGRyZXNzJykgZWxzZSAnKicKLSAgICAgICAgICAgIGRzdFRjcFBvcnROdW1iZXIgPSBtYXRjaC5nZXQoJ2RzdFRjcFBvcnROdW1iZXInKSBpZiBtYXRjaC5nZXQoJ2RzdFRjcFBvcnROdW1iZXInKSBlbHNlICcqJwotICAgICAgICAgICAgZXRoZXJUeXBlID0gKCcweCcrIHN0cihtYXRjaC5nZXQoJ2V0aGVyVHlwZScpKSkgaWYgbWF0Y2guZ2V0KCdldGhlclR5cGUnKSBlbHNlICcqJwotICAgICAgICAgICAgaXBQcm90b2NvbE51bWJlciA9IG1hdGNoLmdldCgnaXBQcm90b2NvbE51bWJlcicpIGlmIG1hdGNoLmdldCgnaXBQcm90b2NvbE51bWJlcicpIGVsc2UgJyonCi0gICAgICAgICAgICBzcmNJcEFkZHJlc3MgPSBtYXRjaC5nZXQoJ3NyY0lwQWRkcmVzcycpWyd2YWx1ZSddIGlmIG1hdGNoLmdldCgnc3JjSXBBZGRyZXNzJykgZWxzZSAnKicKLSAgICAgICAgICAgIHNyY01hY0FkZHJlc3MgPSBtYXRjaC5nZXQoJ3NyY01hY0FkZHJlc3MnKVsndmFsdWUnXSBpZiBtYXRjaC5nZXQoJ3NyY01hY0FkZHJlc3MnKSBlbHNlICcqJwotICAgICAgICAgICAgc3JjVGNwUG9ydE51bWJlciA9IG1hdGNoLmdldCgnc3JjVGNwUG9ydE51bWJlcicpIGlmIG1hdGNoLmdldCgnc3JjVGNwUG9ydE51bWJlcicpIGVsc2UgJyonCi0gICAgICAgICAgICBjb21iUmVzdWx0LmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvbGljeUlkJyAgICAgICAgOiBwb2xpY3lJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9saWN5VHlwZScgICAgICA6IHBvbGljeVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R1bm5lbElkJyAgICAgICAgOiB0dW5uZWxJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpb3JpdHknICAgICAgICA6IHByaW9yaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkc3RJcEFkZHJlc3MnICAgIDogZHN0SXBBZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkc3RNYWNBZGRyZXNzJyAgIDogZHN0TWFjQWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHN0VGNwUG9ydE51bWJlcic6IGRzdFRjcFBvcnROdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V0aGVyVHlwZScgICAgICAgOiBldGhlclR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lwUHJvdG9jb2xOdW1iZXInOiBpcFByb3RvY29sTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmNJcEFkZHJlc3MnICAgIDogc3JjSXBBZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmNNYWNBZGRyZXNzJyAgIDogc3JjTWFjQWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjVGNwUG9ydE51bWJlcic6IHNyY1RjcFBvcnROdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgZW50cmllcyA9IGNvbWJSZXN1bHQKLQotICAgIGlmICdyZWFsdGltZXN0YXRzJyBpbiBkYXRhIGFuZCAndGFibGV0eXBlJyBpbiBkYXRhIGFuZCBkYXRhWydyZWFsdGltZXN0YXRzJ10gPT0gJ3RhYmxlJzoKLSAgICAgICAgY29tYlJlc3VsdCA9IFtdCi0gICAgICAgIGlmIGRhdGFbJ3RhYmxldHlwZSddID09ICdpcCc6Ci0gICAgICAgICAgICAjZm9yIGRlY2VuZGluZyBzb3J0aW5nCi0gICAgICAgICAgICBkZXNjZW5kaW5nID0gVHJ1ZQotICAgICAgICAgICAgZm9yIGlwVGFibGVFbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgICAgIG1hdGNoID0gaXBUYWJsZUVudHJ5WydtYXRjaCddCi0gICAgICAgICAgICAgICAgbmV0d29ya0Rlc3RpbmF0aW9uID0gJyonCi0gICAgICAgICAgICAgICAgaWYgbWF0Y2ggOgotICAgICAgICAgICAgICAgICAgICBuZXR3b3JrRGVzdGluYXRpb24gPSBtYXRjaC5nZXQoJ25ldHdvcmtEZXN0aW5hdGlvbicpIGlmIG1hdGNoLmdldCgnbmV0d29ya0Rlc3RpbmF0aW9uJykgZWxzZSAnKicKLSAgICAgICAgICAgICAgICAgICAgI3JhaXNlIGVycm9yLkFyZ3VtZW50VmFsaWRhdGlvbkVycm9yKCdcblxuXG4gJXMnICUganNvbi50b29sKGVudHJpZXMpKQotICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucyA9IGlwVGFibGVFbnRyeVsnaW5zdHJ1Y3Rpb25zJ10KLSAgICAgICAgICAgICAgICBhY3Rpb25zID0gc3RyKGluc3RydWN0aW9uc1swXSkgaWYgaW5zdHJ1Y3Rpb25zWzBdIGVsc2UgTm9uZQotICAgICAgICAgICAgICAgIGlmIGFjdGlvbnMgIT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9IHJlbW92ZV91bmljb2RlcyhhY3Rpb25zKQotICAgICAgICAgICAgICAgICAgICBhY3Rpb25zID0gcmVuYW1lQWN0aW9ucyhhY3Rpb25zKQotICAgICAgICAgICAgICAgICAgICBhY3Rpb25zID0gYWN0aW9ucy5sb3dlcigpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9JycKLSAgICAgICAgICAgICAgICBjb21iUmVzdWx0LmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICdzd2l0Y2gnICAgICAgICA6IGlwVGFibGVFbnRyeVsnc3dpdGNoJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICdieXRlQ291bnQnICAgICA6IGlwVGFibGVFbnRyeVsnYnl0ZUNvdW50J10sCi0gICAgICAgICAgICAgICAgICAgICAgICdwYWNrZXRDb3VudCcgICA6IGlwVGFibGVFbnRyeVsncGFja2V0Q291bnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5JyAgICAgIDogaXBUYWJsZUVudHJ5Wydwcmlvcml0eSddLAotICAgICAgICAgICAgICAgICAgICAgICAnY29va2llJyAgICAgICAgOiBpcFRhYmxlRW50cnlbJ2Nvb2tpZSddLAotICAgICAgICAgICAgICAgICAgICAgICAnZHVyYXRpb25TZWNvbmRzJyAgICAgICAgIDogaXBUYWJsZUVudHJ5WydkdXJhdGlvblNlYyddLAotICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29ya0Rlc3RpbmF0aW9uJyAgICAgIDogbmV0d29ya0Rlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucycgICAgICAgICAgICAgICAgIDogYWN0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgZWxpZiBkYXRhWyd0YWJsZXR5cGUnXSA9PSAnbXBscyc6Ci0gICAgICAgICAgICBmb3IgaXBUYWJsZUVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgICAgICAgICAgbWF0Y2ggPSBpcFRhYmxlRW50cnlbJ21hdGNoJ10KLSAgICAgICAgICAgICAgICBtcGxzVGMgPSAgJyonCi0gICAgICAgICAgICAgICAgbXBsc0xhYmVsID0gJyonCi0gICAgICAgICAgICAgICAgbXBsc0JvcyA9ICcqJwotICAgICAgICAgICAgICAgIGlmIG1hdGNoIDoKLSAgICAgICAgICAgICAgICAgICAgbXBsc1RjID0gbWF0Y2guZ2V0KCdtcGxzVGMnKSBpZiBtYXRjaC5nZXQoJ21wbHNUYycpIGVsc2UgJyonCi0gICAgICAgICAgICAgICAgICAgIG1wbHNMYWJlbCA9IG1hdGNoLmdldCgnbXBsc0xhYmVsJykgaWYgbWF0Y2guZ2V0KCdtcGxzTGFiZWwnKSBlbHNlICcqJwotICAgICAgICAgICAgICAgICAgICBtcGxzQm9zID0gbWF0Y2guZ2V0KCdtcGxzQm9zJykgaWYgbWF0Y2guZ2V0KCdtcGxzQm9zJykgZWxzZSAnKicKLSAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMgPSBpcFRhYmxlRW50cnlbJ2luc3RydWN0aW9ucyddCi0gICAgICAgICAgICAgICAgI3JhaXNlIGVycm9yLkFyZ3VtZW50VmFsaWRhdGlvbkVycm9yKCdcblxuXG4gJXMnICVsZW4oYWN0aW9ucykpCi0gICAgICAgICAgICAgICAgYWN0aW9ucyA9IHN0cihpbnN0cnVjdGlvbnNbMF0paWYgaW5zdHJ1Y3Rpb25zWzBdIGVsc2UgTm9uZQotICAgICAgICAgICAgICAgIGlmIGFjdGlvbnMgIT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9IHJlbW92ZV91bmljb2RlcyhhY3Rpb25zKQotICAgICAgICAgICAgICAgICAgICBhY3Rpb25zID0gcmVuYW1lQWN0aW9ucyhhY3Rpb25zKQotICAgICAgICAgICAgICAgICAgICBhY3Rpb25zID0gYWN0aW9ucy5sb3dlcigpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9JycKLSAgICAgICAgICAgICAgICBjb21iUmVzdWx0LmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICdzd2l0Y2gnICAgICAgICA6IGlwVGFibGVFbnRyeVsnc3dpdGNoJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICdieXRlQ291bnQnICAgICA6IGlwVGFibGVFbnRyeVsnYnl0ZUNvdW50J10sCi0gICAgICAgICAgICAgICAgICAgICAgICdwYWNrZXRDb3VudCcgICA6IGlwVGFibGVFbnRyeVsncGFja2V0Q291bnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2Nvb2tpZScgICAgICAgIDogaXBUYWJsZUVudHJ5Wydjb29raWUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5JyAgICAgIDogaXBUYWJsZUVudHJ5Wydwcmlvcml0eSddLAotICAgICAgICAgICAgICAgICAgICAgICAnbXBsc1RjJyAgICAgICAgIDogbXBsc1RjLAotICAgICAgICAgICAgICAgICAgICAgICAnbXBsc0xhYmVsJyAgICAgIDogbXBsc0xhYmVsLAotICAgICAgICAgICAgICAgICAgICAgICAnbXBsc0JvcycgICAgICAgIDogbXBsc0JvcywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2R1cmF0aW9uU2Vjb25kcycgICAgICAgIDogaXBUYWJsZUVudHJ5WydkdXJhdGlvblNlYyddLAotICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucycgICAgICAgIDogYWN0aW9ucwotICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICBlbGlmIGRhdGFbJ3RhYmxldHlwZSddID09ICdhY2wnOgotICAgICAgICAgICAgZGVzY2VuZGluZyA9IFRydWUKLSAgICAgICAgICAgIGZvciBpcFRhYmxlRW50cnkgaW4gZW50cmllczoKLSAgICAgICAgICAgICAgICBtYXRjaCA9IGlwVGFibGVFbnRyeVsnbWF0Y2gnXQotICAgICAgICAgICAgICAgIG5ldHdvcmtEZXN0aW5hdGlvbiA9JyonCi0gICAgICAgICAgICAgICAgbmV0d29ya1Byb3RvY29sID0gJyonCi0gICAgICAgICAgICAgICAgbmV0d29ya1NvdXJjZSA9ICcqJwotICAgICAgICAgICAgICAgIG1wbHNUYyA9ICcqJwotICAgICAgICAgICAgICAgIG1wbHNMYWJlbCA9ICcqJwotICAgICAgICAgICAgICAgIG1wbHNCb3MgPSAnKicKLSAgICAgICAgICAgICAgICB0cmFuc3BvcnREZXN0aW5hdGlvbiA9ICcqJwotICAgICAgICAgICAgICAgIGlucHV0UG9ydCA9ICcqJwotICAgICAgICAgICAgICAgIHRyYW5zcG9ydFNvdXJjZSA9ICcqJwotICAgICAgICAgICAgICAgIGRhdGFMYXllclNvdXJjZSA9ICcqJwotICAgICAgICAgICAgICAgIGRhdGFMYXllckRlc3RpbmF0aW9uID0gJyonCi0gICAgICAgICAgICAgICAgZGF0YUxheWVyVHlwZSA9ICcqJwotICAgICAgICAgICAgICAgIGlmIG1hdGNoIDoKLSAgICAgICAgICAgICAgICAgICAgbmV0d29ya0Rlc3RpbmF0aW9uID0gbWF0Y2guZ2V0KCduZXR3b3JrRGVzdGluYXRpb24nKSBpZiBtYXRjaC5nZXQoJ25ldHdvcmtEZXN0aW5hdGlvbicpIGVsc2UgJyonCi0gICAgICAgICAgICAgICAgICAgIG5ldHdvcmtQcm90b2NvbCA9IG1hdGNoLmdldCgnbmV0d29ya1Byb3RvY29sJykgaWYgbWF0Y2guZ2V0KCduZXR3b3JrUHJvdG9jb2wnKSBlbHNlICcqJwotICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU291cmNlID0gbWF0Y2guZ2V0KCduZXR3b3JrU291cmNlJykgaWYgbWF0Y2guZ2V0KCduZXR3b3JrU291cmNlJykgZWxzZSAnKicKLSAgICAgICAgICAgICAgICAgICAgbXBsc1RjID0gbWF0Y2guZ2V0KCdtcGxzVGMnKSBpZiBtYXRjaC5nZXQoJ21wbHNUYycpIGVsc2UgJyonCi0gICAgICAgICAgICAgICAgICAgIG1wbHNMYWJlbCA9IG1hdGNoLmdldCgnbXBsc0xhYmVsJylpZiBtYXRjaC5nZXQoJ21wbHNMYWJlbCcpIGVsc2UgJyonCi0gICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydERlc3RpbmF0aW9uID0gbWF0Y2guZ2V0KCd0cmFuc3BvcnREZXN0aW5hdGlvbicpIGlmIG1hdGNoLmdldCgndHJhbnNwb3J0RGVzdGluYXRpb24nKSBlbHNlICcqJwotICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRTb3VyY2UgPSBtYXRjaC5nZXQoJ3RyYW5zcG9ydFNvdXJjZScpIGlmIG1hdGNoLmdldCgndHJhbnNwb3J0U291cmNlJykgZWxzZSAnKicKLSAgICAgICAgICAgICAgICAgICAgaW5wdXRQb3J0ID0gbWF0Y2guZ2V0KCdpbnB1dFBvcnQnKSBpZiBtYXRjaC5nZXQoJ2lucHV0UG9ydCcpIGVsc2UgJyonCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMYXllclNvdXJjZSA9IG1hdGNoLmdldCgnZGF0YUxheWVyU291cmNlJykgaWYgbWF0Y2guZ2V0KCdkYXRhTGF5ZXJTb3VyY2UnKSBlbHNlICcqJwotICAgICAgICAgICAgICAgICAgICBkYXRhTGF5ZXJEZXN0aW5hdGlvbiA9IG1hdGNoLmdldCgnZGF0YUxheWVyRGVzdGluYXRpb24nKSBpZiBtYXRjaC5nZXQoJ2RhdGFMYXllckRlc3RpbmF0aW9uJykgZWxzZSAnKicKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxheWVyVHlwZT0gbWF0Y2guZ2V0KCdkYXRhTGF5ZXJUeXBlJykgaWYgbWF0Y2guZ2V0KCdkYXRhTGF5ZXJUeXBlJykgZWxzZSAnKicKLSAgICAgICAgICAgICAgICAgICAgbXBsc0JvcyA9IG1hdGNoLmdldCgnbXBsc0JvcycpIGlmIG1hdGNoLmdldCgnbXBsc0JvcycpIGVsc2UgJyonCi0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zID0gaXBUYWJsZUVudHJ5WydpbnN0cnVjdGlvbnMnXQotICAgICAgICAgICAgICAgIGFjdGlvbnMgPSBzdHIoaW5zdHJ1Y3Rpb25zWzBdKWlmIGluc3RydWN0aW9uc1swXSBlbHNlIE5vbmUKLSAgICAgICAgICAgICAgICBpZiBhY3Rpb25zICE9IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbnMgPSByZW1vdmVfdW5pY29kZXMoYWN0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9IHJlbmFtZUFjdGlvbnMoYWN0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9IGFjdGlvbnMubG93ZXIoKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbnMgPSAnJwotICAgICAgICAgICAgICAgIGNvbWJSZXN1bHQuYXBwZW5kKHsKLSAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgIDogaXBUYWJsZUVudHJ5Wydzd2l0Y2gnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2J5dGVDb3VudCcgICAgIDogaXBUYWJsZUVudHJ5WydieXRlQ291bnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3BhY2tldENvdW50JyAgIDogaXBUYWJsZUVudHJ5WydwYWNrZXRDb3VudCddLAotICAgICAgICAgICAgICAgICAgICAgICAnY29va2llJyAgICAgICAgOiBpcFRhYmxlRW50cnlbJ2Nvb2tpZSddLAotICAgICAgICAgICAgICAgICAgICAgICAncHJpb3JpdHknICAgICAgOiBpcFRhYmxlRW50cnlbJ3ByaW9yaXR5J10sCi0gICAgICAgICAgICAgICAgICAgICAgICdpbnB1dFBvcnQnICAgICAgICAgICAgICAgOiBpbnB1dFBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICdkdXJhdGlvblNlY29uZHMnICAgICAgICAgOiBpcFRhYmxlRW50cnlbJ2R1cmF0aW9uU2VjJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrU291cmNlJyAgICAgICAgICAgOiBuZXR3b3JrU291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29ya0Rlc3RpbmF0aW9uJyAgICAgIDogbmV0d29ya0Rlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29ya1Byb3RvY29sJyAgICAgICAgIDogbmV0d29ya1Byb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAnZGF0YUxheWVyVHlwZScgICAgICAgICAgIDogZGF0YUxheWVyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGFMYXllclNvdXJjZScgICAgICAgICA6IGRhdGFMYXllclNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGFMYXllckRlc3RpbmF0aW9uJyAgICA6IGRhdGFMYXllckRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAnbXBsc1RjJyAgICAgICAgICAgICAgICAgIDogbXBsc1RjLAotICAgICAgICAgICAgICAgICAgICAgICAnbXBsc0xhYmVsJyAgICAgICAgICAgICAgIDogbXBsc0xhYmVsLAotICAgICAgICAgICAgICAgICAgICAgICAnbXBsc0JvcycgICAgICAgICAgICAgICAgIDogbXBsc0JvcywKLSAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zcG9ydERlc3RpbmF0aW9uJyAgICA6IHRyYW5zcG9ydERlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNwb3J0U291cmNlJyAgICAgICAgIDogdHJhbnNwb3J0U291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucycgICAgICAgICAgICAgICAgIDogYWN0aW9ucwotICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICBlbnRyaWVzID0gY29tYlJlc3VsdAotCi0gICAgaWYgJ3JlYWx0aW1lc3RhdHMnIGluIGRhdGEgYW5kIGRhdGFbJ3JlYWx0aW1lc3RhdHMnXSA9PSAnZ3JvdXAnOgotICAgICAgICBjb21iUmVzdWx0ID0gW10KLSAgICAgICAgZm9yIGdyb3VwU3RhdEVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgICAgICBncm91cElkID0gZ3JvdXBTdGF0RW50cnlbImdyb3VwSWQiXQotICAgICAgICAgICAgZ3JvdXBEZXNjRW50cnkgPSBOb25lCi0gICAgICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczI6Ci0gICAgICAgICAgICAgICAgaWYgZ3JvdXBJZCA9PSBlbnRyeVsiZ3JvdXBJZCJdOgotICAgICAgICAgICAgICAgICAgICBncm91cERlc2NFbnRyeSA9IGVudHJ5Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBncm91cERlc2NFbnRyeSBpcyAnJzoKLSAgICAgICAgICAgICAgICBwcmludCAiY29tbWFuZF9kaXNwbGF5X3Jlc3Q6IG1pc3NpbmcgZ3JvdXAgZGVzYyBmb3IgZ3JvdXAgaWQgJXMiICUgKGdyb3VwSWQpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGxlbihncm91cFN0YXRFbnRyeVsnYnVja2V0U3RhdHMnXSkgPiAwKToKLSAgICAgICAgICAgICAgICBmb3IgYnVja2V0SWQgaW4gcmFuZ2UobGVuKGdyb3VwU3RhdEVudHJ5WydidWNrZXRTdGF0cyddKSk6Ci0gICAgICAgICAgICAgICAgICAgIHNldHNyY21hYyA9ICcnCi0gICAgICAgICAgICAgICAgICAgIGlmICdTRVRfRExfU1JDJyBpbiBncm91cERlc2NFbnRyeVsnYnVja2V0c0FjdGlvbnMnXVtidWNrZXRJZF06Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXRzcmNtYWMgPSBncm91cERlc2NFbnRyeVsnYnVja2V0c0FjdGlvbnMnXVtidWNrZXRJZF1bJ1NFVF9ETF9TUkMnXQotICAgICAgICAgICAgICAgICAgICBzZXRkc3RtYWMgPSAnJwotICAgICAgICAgICAgICAgICAgICBpZiAnU0VUX0RMX0RTVCcgaW4gZ3JvdXBEZXNjRW50cnlbJ2J1Y2tldHNBY3Rpb25zJ11bYnVja2V0SWRdOgotICAgICAgICAgICAgICAgICAgICAgICAgc2V0ZHN0bWFjID0gZ3JvdXBEZXNjRW50cnlbJ2J1Y2tldHNBY3Rpb25zJ11bYnVja2V0SWRdWydTRVRfRExfRFNUJ10KLSAgICAgICAgICAgICAgICAgICAgcHVzaG1wbHMgPSAnJwotICAgICAgICAgICAgICAgICAgICBpZiAnUFVTSF9NUExTX0xBQkVMJyBpbiBncm91cERlc2NFbnRyeVsnYnVja2V0c0FjdGlvbnMnXVtidWNrZXRJZF06Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNobXBscyA9IGdyb3VwRGVzY0VudHJ5WydidWNrZXRzQWN0aW9ucyddW2J1Y2tldElkXVsnUFVTSF9NUExTX0xBQkVMJ10KLSAgICAgICAgICAgICAgICAgICAgcG9wbXBscyA9ICcnCi0gICAgICAgICAgICAgICAgICAgIGlmICdQT1BfTVBMUycgaW4gZ3JvdXBEZXNjRW50cnlbJ2J1Y2tldHNBY3Rpb25zJ11bYnVja2V0SWRdOgotICAgICAgICAgICAgICAgICAgICAgICAgcG9wbXBscyA9IGdyb3VwRGVzY0VudHJ5WydidWNrZXRzQWN0aW9ucyddW2J1Y2tldElkXVsnUE9QX01QTFMnXQotICAgICAgICAgICAgICAgICAgICBvdXRwb3J0ID0gJycKLSAgICAgICAgICAgICAgICAgICAgaWYgJ09VVFBVVCcgaW4gZ3JvdXBEZXNjRW50cnlbJ2J1Y2tldHNBY3Rpb25zJ11bYnVja2V0SWRdOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cG9ydCA9IGdyb3VwRGVzY0VudHJ5WydidWNrZXRzQWN0aW9ucyddW2J1Y2tldElkXVsnT1VUUFVUJ10KLSAgICAgICAgICAgICAgICAgICAgZ29Ub0dyb3VwID0gJycKLSAgICAgICAgICAgICAgICAgICAgaWYgJ2dvVG9Hcm91cCcgaW4gZ3JvdXBEZXNjRW50cnlbJ2J1Y2tldHNBY3Rpb25zJ11bYnVja2V0SWRdOgotICAgICAgICAgICAgICAgICAgICAgICAgZ29Ub0dyb3VwID0gZ3JvdXBEZXNjRW50cnlbJ2J1Y2tldHNBY3Rpb25zJ11bYnVja2V0SWRdWydnb1RvR3JvdXAnXQotICAgICAgICAgICAgICAgICAgICBzZXRCb3M9ICcnCi0gICAgICAgICAgICAgICAgICAgIGlmICdQVVNIX01QTFNfQk9TJyBpbiBncm91cERlc2NFbnRyeVsnYnVja2V0c0FjdGlvbnMnXVtidWNrZXRJZF06Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXRCb3MgPSBncm91cERlc2NFbnRyeVsnYnVja2V0c0FjdGlvbnMnXVtidWNrZXRJZF1bJ1BVU0hfTVBMU19CT1MnXQotICAgICAgICAgICAgICAgICAgICBDT1BZX1RUTF9JTj0gJycKLSAgICAgICAgICAgICAgICAgICAgaWYgJ0NPUFlfVFRMX0lOJyBpbiBncm91cERlc2NFbnRyeVsnYnVja2V0c0FjdGlvbnMnXVtidWNrZXRJZF06Ci0gICAgICAgICAgICAgICAgICAgICAgICBDT1BZX1RUTF9JTiA9IGdyb3VwRGVzY0VudHJ5WydidWNrZXRzQWN0aW9ucyddW2J1Y2tldElkXVsnQ09QWV9UVExfSU4nXQotICAgICAgICAgICAgICAgICAgICBDT1BZX1RUTF9PVVQ9ICcnCi0gICAgICAgICAgICAgICAgICAgIGlmICdDT1BZX1RUTF9PVVQnIGluIGdyb3VwRGVzY0VudHJ5WydidWNrZXRzQWN0aW9ucyddW2J1Y2tldElkXToKLSAgICAgICAgICAgICAgICAgICAgICAgIENPUFlfVFRMX09VVCA9IGdyb3VwRGVzY0VudHJ5WydidWNrZXRzQWN0aW9ucyddW2J1Y2tldElkXVsnQ09QWV9UVExfT1VUJ10KLSAgICAgICAgICAgICAgICAgICAgREVDX01QTFNfVFRMPSAnJwotICAgICAgICAgICAgICAgICAgICBpZiAnREVDX01QTFNfVFRMJyBpbiBncm91cERlc2NFbnRyeVsnYnVja2V0c0FjdGlvbnMnXVtidWNrZXRJZF06Ci0gICAgICAgICAgICAgICAgICAgICAgICBERUNfTVBMU19UVEwgPSBncm91cERlc2NFbnRyeVsnYnVja2V0c0FjdGlvbnMnXVtidWNrZXRJZF1bJ0RFQ19NUExTX1RUTCddCi0gICAgICAgICAgICAgICAgICAgIERFQ19OV19UVEw9ICcnCi0gICAgICAgICAgICAgICAgICAgIGlmICdERUNfTldfVFRMJyBpbiBncm91cERlc2NFbnRyeVsnYnVja2V0c0FjdGlvbnMnXVtidWNrZXRJZF06Ci0gICAgICAgICAgICAgICAgICAgICAgICBERUNfTldfVFRMID0gZ3JvdXBEZXNjRW50cnlbJ2J1Y2tldHNBY3Rpb25zJ11bYnVja2V0SWRdWydERUNfTldfVFRMJ10KLSAgICAKLSAgICAgICAgICAgICAgICAgICAgY29tYlJlc3VsdC5hcHBlbmQoewotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwaWQnICAgICAgIDogZ3JvdXBJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cHR5cGUnICAgICA6IGdyb3VwRGVzY0VudHJ5Wydncm91cFR5cGUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b3RhbHBrdGNudCcgICA6IGdyb3VwU3RhdEVudHJ5WydwYWNrZXRDb3VudCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvdGFsYnl0ZWNudCcgIDogZ3JvdXBTdGF0RW50cnlbJ2J5dGVDb3VudCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1Y2tldHBrdGNudCcgIDogZ3JvdXBTdGF0RW50cnlbJ2J1Y2tldFN0YXRzJ11bYnVja2V0SWRdWydwa3RDb3VudCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1Y2tldGJ5dGVjbnQnIDogZ3JvdXBTdGF0RW50cnlbJ2J1Y2tldFN0YXRzJ11bYnVja2V0SWRdWydieXRlQ291bnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXRzcmNtYWMnICAgICA6IHNldHNyY21hYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXRkc3RtYWMnICAgICA6IHNldGRzdG1hYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwdXNoTXBsc0xhYmVsJyA6IHB1c2htcGxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcG1wbHMnICAgICAgIDogcG9wbXBscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdXRwb3J0JyAgICAgICA6IG91dHBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnZ29Ub0dyb3VwJyAgICAgOiBnb1RvR3JvdXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnc2V0Qm9zJyAgICAgICAgOiBzZXRCb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnQ09QWV9UVExfSU4nICAgOiBDT1BZX1RUTF9JTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdDT1BZX1RUTF9PVVQnICA6IENPUFlfVFRMX09VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdERUNfTVBMU19UVEwnICA6IERFQ19NUExTX1RUTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdERUNfTldfVFRMJyAgICA6IERFQ19OV19UVEwsCi0gICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb21iUmVzdWx0LmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JvdXBpZCcgICAgICAgOiBncm91cElkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwdHlwZScgICAgIDogZ3JvdXBEZXNjRW50cnlbJ2dyb3VwVHlwZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvdGFscGt0Y250JyAgIDogZ3JvdXBTdGF0RW50cnlbJ3BhY2tldENvdW50J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAndG90YWxieXRlY250JyAgOiBncm91cFN0YXRFbnRyeVsnYnl0ZUNvdW50J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnYnVja2V0cGt0Y250JyAgOiAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdidWNrZXRieXRlY250JyA6ICcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NldHNyY21hYycgICAgIDogJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnc2V0ZHN0bWFjJyAgICAgOiAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwdXNoTXBsc0xhYmVsJyA6ICcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcG1wbHMnICAgICAgIDogJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0cG9ydCcgICAgICAgOiAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb1RvR3JvdXAnICAgICA6ICcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NldEJvcycgICAgICAgIDogJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnQ09QWV9UVExfSU4nICAgOiAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdDT1BZX1RUTF9PVVQnICA6ICcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RFQ19NUExTX1RUTCcgIDogJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnREVDX05XX1RUTCcgICAgOiAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgIGVudHJpZXMgPSBjb21iUmVzdWx0Ci0gICAgIwotICAgIGlmIGZvcm1hdDoKLSAgICAgICAgIwotICAgICAgICBkZXRhaWwgPSBjb21tYW5kX2Rpc3BsYXlfcmVzdF9qb2luX2VudHJpZXModGFibGVfZm9ybWF0LCBkYXRhLCBlbnRyaWVzLCBkZXRhaWwpCi0gICAgICAgICNpZiAncmVhbHRpbWVzdGF0cycgaW4gZGF0YSBhbmQgZGF0YVsncmVhbHRpbWVzdGF0cyddID09ICdmbG93JzoKLSAgICAgICAgIyAgICBlbnRyaWVzID0gc2Ruc2guZml4X3JlYWx0aW1lX2Zsb3dzKGVudHJpZXMpCi0gICAgICAgICMgICAgY2hlY2tfc2luZ2xlX2VudHJ5ID0gRmFsc2UKLQotICAgICAgICBpZiAncmVhbHRpbWVzdGF0cycgaW4gZGF0YSBhbmQgZGF0YVsncmVhbHRpbWVzdGF0cyddID09ICdmZWF0dXJlcyc6Ci0gICAgICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgICAgICAgICBlbnRyeVsnc3RwLXN0YXRlJ10gPSBlbnRyeVsnc3RhdGUnXQotCi0gICAgICAgICMgdXBkYXRlIGFueSBvZiB0aGUgcHJldHR5LXByaW50ZXIgdGFibGVzIGJhc2VkIG9uIHRoZSB0YWJsZV9mb3JtYXQgKG9ial90eXBlKQotICAgICAgICBvYmpfdHlwZV9zaG93X2FsaWFzX3VwZGF0ZSh0YWJsZV9mb3JtYXQgJSBkYXRhKQotCi0gICAgICAgIGlmIGNoZWNrX3NpbmdsZV9lbnRyeSBhbmQgZW50cmllcyBhbmQgbGVuKGVudHJpZXMpID09IDEgYW5kIGRldGFpbCA9PSAnZGV0YWlscyc6Ci0gICAgICAgICAgICByZXR1cm4gc2Ruc2gucHAuZm9ybWF0X2VudHJ5KGVudHJpZXNbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZm9ybWF0ICUgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Ruc2guZGVidWcpCi0gICAgICAgIGlmIHNvcnQ6Ci0gICAgICAgICAgICBpZiBkZXNjZW5kaW5nOgotICAgICAgICAgICAgICAgIHJldmVyc2UgPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldmVyc2UgPSBGYWxzZQotICAgICAgICAgICAgZGVmIHNvcnRfY21wKHgseSk6Ci0gICAgICAgICAgICAgICAgZm9yIGYgaW4gc29ydDoKLSAgICAgICAgICAgICAgICAgICAgaWYgZiBpbiB4OgotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGNtcCh4LmdldChmKSwgeS5nZXQoZikpIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgYyAhPSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjCi0gICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgIGVudHJpZXMgPSBzb3J0ZWQoZW50cmllcywgIGNtcD1zb3J0X2NtcCwgcmV2ZXJzZT1yZXZlcnNlICkKLSAgICAgICAgaWYgJ3JlYWx0aW1lc3RhdHMnIGluIGRhdGEgYW5kIGRhdGFbJ3JlYWx0aW1lc3RhdHMnXSA9PSAnZ3JvdXAnOgotICAgICAgICAgICAgcmVwZWF0R3JvdXBJZCA9IC0xCi0gICAgICAgICAgICBsZW5ndGggPSBsZW4oZW50cmllcykKLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbmd0aCk6Ci0gICAgICAgICAgICAgICAgZW50cnkgPSBlbnRyaWVzW2ldCi0gICAgICAgICAgICAgICAgZ3JvdXBJZCA9IGVudHJ5LmdldCgnZ3JvdXBpZCcpCi0gICAgICAgICAgICAgICAgaWYgZ3JvdXBJZCA9PSByZXBlYXRHcm91cElkOgotICAgICAgICAgICAgICAgICAgICBlbnRyaWVzW2ldWydncm91cGlkJ10gPSAnJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJlcGVhdEdyb3VwSWQgPSBncm91cElkCi0KLSAgICAgICAgZGlzcGxheSA9IHNkbnNoLnBwLmZvcm1hdF90YWJsZShlbnRyaWVzLCB0YWJsZV9mb3JtYXQgJSBkYXRhLCBkZXRhaWwpCi0gICAgZWxzZToKLSAgICAgICAgZGlzcGxheSA9IGVudHJpZXMKLQotICAgIGlmIHRpdGxlOgotICAgICAgICByZXR1cm4gdGl0bGUgKyBkaXNwbGF5Ci0gICAgcmV0dXJuIGRpc3BsYXkKLQotCi1kZWYgY29tbWFuZF9jcmFjayhmaWVsZCk6Ci0gICAgIiIiCi0gICAgUGFydCBvZiB0aGUgc2hvdyBwaXBlbGluZSwgc3BsaXQgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCByZXN0IGFwaSdzCi0gICAgbm90IGFzc29jaWF0ZWQgd2l0aCB0aGUgbW9kZWwgKGRhdGFiYXNlKSwgc2luY2UgdGhlIGNsaSBoYXMgZW5vdWdoCi0gICAgZGV0YWlscyBvZiB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIG1vZGVsIGZpZWxkcyB0byB1bmRlcnN0YW5kIAotICAgIHdoaWNoIG9mIHRoZSBmaWVsZHMgaGFzIGEgY29tcG91bmQga2V5IHZhbHVlLCBhbmQgaGFzIG9wdGlvbnMgdG8KLSAgICBjcmFjayB0aG9zZSBpbnRvIGNvbXBvbmVudCBwYXJ0cy4KLQotICAgIFRoZSBvcGVyYXRpb24gaXMgY2FsbGVkICdjcmFjaycgKG5vdCBzcGxpdCksIHNpbmNlIHRoZSBvdGhlcgotICAgIG9wdGlvbnMgZm9yIHNvbWUgb2YgdGhlIGFjdGlvbnMgaXMgY2FsbGVkICdjcmFjaycKLQotICAgIFRoZSBmaWVsZCBpZGVudGlmaWVzIHRoZSBuYW1lIG9mIHRoZSBmaWVsZCBpbiB0aGUgZW50cnkgdG8KLSAgICBzcGxpdCBpbnRvIHBhcnRzLCBhbmQgdGhlIHJlbWFpbmluZyAnfCcgc2VwYXJhdGVkIGZpZWxkcyBsaXN0Ci0gICAgdGhlIGxhYmVscyB0byBhc3NvY2lhdGUgaW4gdGhlIHJlc3VsdCBmcm9tIGVhY2ggb2YgdGhlIAotICAgIHNwbGl0IGNvbXBvbmVudHMuICAgQ3VycmVudGx5LCB0aGUgJ2NyYWNrJyBjaGFyYWN0ZXIgaXMgJ3wnLAotICAgIGFsdGhvdWdoIHRoaXMgY291bGQgYmUgcGFyYW1ldGVyaXplZC4KLSAgICAiIiIKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiY29tbWFuZF9zcGxpdDogIiwgZmllbGQKLQotICAgIGlmIGhhc2F0dHIoY29tbWFuZCwgJ3F1ZXJ5X3Jlc3VsdCcpOgotICAgICAgICBlbnRyaWVzID0gY29tbWFuZC5xdWVyeV9yZXN1bHQKLSAgICAgICAgaWYgY29tbWFuZC5xdWVyeV9yZXN1bHQgPT0gTm9uZToKLSAgICAgICAgICAgIGVudHJpZXMgPSBbXQotICAgIGVsc2U6Ci0gICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICBwcmludCAiY29tbWFuZF9qb2luX3RhYmxlOiBubyBlbnRyaWVzIGZvdW5kIgotICAgICAgICBlbnRyaWVzID0gW10KLSAgICAKLSAgICBwYXJ0cyA9IGZpZWxkLnNwbGl0KCd8JykKLSAgICBpZiBsZW4ocGFydHMpID09IDA6Ci0gICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICBwcmludCAiY29tbWFuZF9qb2luX3RhYmxlOiBmaWVsZCBkb2Vzbid0IGNvbnRhaW4gbGFiZWxzIiBcCi0gICAgICAgICAgICAgICAgICAgIiB1c2UgZmllbGR8bGFiZWwxfGxhYmVsMnwuLi4iCi0gICAgICAgIHJldHVybgotCi0gICAgZmllbGQgPSBwYXJ0c1swXQotICAgIGxhYmVsID0gcGFydHNbMTpdCi0gICAgbWFueSA9IGxlbihsYWJlbCkKLQotICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICBpZiBmaWVsZCBpbiBlbnRyeToKLSAgICAgICAgICAgIHBhcnRzID0gZW50cnlbZmllbGRdLnNwbGl0KCd8JykKLSAgICAgICAgICAgIGlmIGxlbihwYXJ0cykgYW5kIG1hbnkgPj0gbGVuKHBhcnRzKSA6Ci0gICAgICAgICAgICAgICAgIyB1c2UgZW51bWVyYXRlIHRvIGNyZWF0ZSBhIHR1cGxlIGZvciBlYWNoIGl0ZW0gaW4gcGFydHMsCi0gICAgICAgICAgICAgICAgIyBhc3NvY2FpdGluZyBhbiBpbmRleCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlCi0gICAgICAgICAgICAgICAgIyBsYWJlbCB0byB1c2UgZm9yIGVhY2ggb2YgdGhlIGVsZW1lbnRzOyBmcm9tIHRoYXQgY3JlYXRlCi0gICAgICAgICAgICAgICAgIyBhIGRpY3Rpb25heSwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIHVwZGF0ZSB0aGUgZW50cnkKLSAgICAgICAgICAgICAgICBlbnRyeS51cGRhdGUoZGljdChbW2xhYmVsW25dLHBdIGZvciAobixwKSBpbiBlbnVtZXJhdGUocGFydHMpXSkpCi0KLQotZGVmIGNvbW1hbmRfZGlzcGxheShkYXRhLCB0YWJsZV9mb3JtYXQsIGRldGFpbCA9ICdkZWZhdWx0Jywgc29ydCA9IE5vbmUsIHRpdGxlID0gTm9uZSk6Ci0gICAgCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfZGlzcGxheTogIiwgZGF0YSwgdGFibGVfZm9ybWF0LCBkZXRhaWwKLQotICAgIGlmICdkZXRhaWwnIGluIGRhdGE6Ci0gICAgICAgIGRldGFpbCA9IGRhdGFbJ2RldGFpbCddCi0KLSAgICBpZiBoYXNhdHRyKGNvbW1hbmQsICdxdWVyeV9yZXN1bHQnKToKLSAgICAgICAgZW50cmllcyA9IGNvbW1hbmQucXVlcnlfcmVzdWx0Ci0gICAgICAgIGlmIGNvbW1hbmQucXVlcnlfcmVzdWx0ID09IE5vbmU6Ci0gICAgICAgICAgICBlbnRyaWVzID0gW10KLSAgICBlbHNlOgotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgcHJpbnQgImNvbW1hbmRfam9pbl90YWJsZTogbm8gZW50cmllcyBmb3VuZCIKLSAgICAgICAgZW50cmllcyA9IFtdCi0gICAgCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfZGlzcGxheTogI2VudHJpZXMgIiwgbGVuKGVudHJpZXMpCi0KLSAgICAjIFhYWCBjb250cm9sbGVyLW5vZGUgaGFzIGFuIG9kZCB1cmwsIGpvaW4tcmVzdCBuZWVkcyB0byBiZSBhYmxlIHRvCi0gICAgIyBiZSBoYW5kZWQgYSBjb21wbGV0ZSB1cmwsIGFuZCByZXBsYWNlIHRoZSBpcCBhZGRyZXNzIHdpdGggdGhlIGNvbnRyb2xsZXIncwotICAgICMgaXAgYWRkcmVzcy4KLSAgICBkZXRhaWwgPSBjb21tYW5kX2Rpc3BsYXlfdGFibGVfam9pbl9lbnRyaWVzKHRhYmxlX2Zvcm1hdCwgZGF0YSwgZW50cmllcywgZGV0YWlsKQotCi0gICAgIyB1cGRhdGUgYW55IG9mIHRoZSBwcmV0dHktcHJpbnRlciB0YWJsZXMgYmFzZWQgb24gdGhlIHRhYmxlX2Zvcm1hdCAob2JqX3R5cGUpCi0gICAgb2JqX3R5cGVfc2hvd19hbGlhc191cGRhdGUodGFibGVfZm9ybWF0KQotCi0gICAgIyB3aXRoX2tleSBtYW5hZ2VzIHdoZXRoZXIgYSAnZGV0YWlsJyBvciB0YWJsZSBpcyBkaXNwbGF5ZWQuCi0gICAgd2l0aF9rZXkgPSAnPHdpdGhfa2V5PicgaWYgZGV0YWlsID09ICdkZXRhaWxzJyBhbmQgbGVuKGVudHJpZXMpID4gMCBlbHNlICc8bm9fa2V5PicKLQotICAgICMgCi0gICAgaWYgc29ydDoKLSAgICAgICAgZGVmIHNvcnRfY21wKHgseSk6Ci0gICAgICAgICAgICBmb3IgZiBpbiBzb3J0OgotICAgICAgICAgICAgICAgIGlmIGYgaW4geDoKLSAgICAgICAgICAgICAgICAgICAgYyA9IHV0aWYudHJhaWxpbmdfaW50ZWdlcl9jbXAoeC5nZXQoZikseS5nZXQoZikpCi0gICAgICAgICAgICAgICAgICAgIGlmIGM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYwotICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgZW50cmllcyA9IHNvcnRlZChlbnRyaWVzLCBjbXA9c29ydF9jbXApCi0KLSAgICAjIHVzZSBkaXNwbGF5X29ial90eXBlX3Jvd3Mgc2luY2UgaXQgKGN1cnJlbnRseSkgam9pbnMgZmllbGRzIGZvciBvYmpfdHlwZXMuCi0gICAgZGlzcGxheSA9IHNkbnNoLmRpc3BsYXlfb2JqX3R5cGVfcm93cyh0YWJsZV9mb3JtYXQsIGVudHJpZXMsIHdpdGhfa2V5LCBkZXRhaWwpCi0KLSAgICBpZiB0aXRsZToKLSAgICAgICAgcmV0dXJuIHRpdGxlICsgZGlzcGxheQotICAgIHJldHVybiBkaXNwbGF5Ci0KLQotZGVmIGNvbW1hbmRfbGVnYWN5X2NsaShvYmpfdHlwZSwgZGF0YSwgZGV0YWlsID0gJ2RlZmF1bHQnLCBzY29wZWQgPSBOb25lLCBzb3J0ID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgVW5mb3J0dW5hdGx5LCB0aGUgY29tbWFuZCBkZXNjcmlwdGlvbnMgZG9uJ3QgaGF2ZSBlbm91Z2ggZGlmZmVyZW50Ci0gICAgZGV0YWlsIHRvIGRlc2NyaWJlIGhvdyB0byBqb2luIHNwZWNpZmljIGRpc3RpbmN0IGZpZWxkcy4gIEluIHRoZSBmdXR1cmUsCi0gICAgdGhlcmUgd2lsbCBiZSByZXN0IGFwaSdzIGZvciBlYWNoIG9mIHRoZSBjbGkgcmVxdWVzdHM7IHRoYXQgc2hvdWxkIGNhdXNlCi0gICAgdGhpcyB0cmFtcG9saW5lIGNvZGUgdG8gYmVjb21lIG9ic29sZXRlLgotICAgICIiIgotCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfbGVnYWN5X2NsaTogIiwgb2JqX3R5cGUsIGRhdGEsIGRldGFpbCwgc2NvcGVkLCBzb3J0Ci0KLSAgICAjIHVwZGF0ZSBhbnkgb2YgdGhlIHByZXR0eS1wcmludGVyIHRhYmxlcyBiYXNlZCBvbiB0aGUgb2JqX3R5cGUKLSAgICBvYmpfdHlwZV9zaG93X2FsaWFzX3VwZGF0ZShvYmpfdHlwZSkKLQotICAgICMKLSAgICAjCi0gICAgIyBWYXJpb3VzIHNob3cgY29tbWFuZCAnam9pbicgZGF0YSB0byBjcmVhdGUgYSB0YWJsZSBub3QKLSAgICAjIGRpcmVjdGx5IGF2YWlsYWJsZSBpbiB0aGUgUkVTVCBBUEksIHNvbWVkYXkgaW4gdGhlIGZ1dHVyZSwKLSAgICAjIHRoZXNlIGpvaW5zIHdpbGwgYmUgZGlyZWN0bHkgaW1wbGVtZW50ZWQgaW4gdGhlIFJFU1QgQVBJLAotICAgICMgYnV0IHRoZXNlIHNwZWNpYWwgY2FzZXMgc3RpbGwgZXhpc3Q6Ci0gICAgIwotICAgIGlmICdydW5uaW5nLWNvbmZpZycgaW4gZGF0YToKLSAgICAgICAgcmVzdWx0ID0gc2Ruc2guZXJyb3JfbXNnKCJObyBydW5uaW5nLWNvbmZpZyBjaG9pY2UiKQotICAgICAgICB3b3JkcyA9IFtdCi0gICAgICAgIGlmICd3b3JkJyBpbiBkYXRhIGFuZCBkYXRhWyd3b3JkJ10gIT0gJ2FsbCc6Ci0gICAgICAgICAgICB3b3JkcyA9IFtkYXRhWyd3b3JkJ11dCi0KLSAgICAgICAgaWYgZGF0YVsncnVubmluZy1jb25maWcnXSA9PSAncnVubmluZy1jb25maWcnOgotICAgICAgICAgICAgIyAnc2hvdyB2bnMgWFhYIHJ1bm5pbmctY29uZmlnJwotICAgICAgICAgICAgaWYgJ3Zuc25hbWUnIGluIGRhdGEgYW5kIGRhdGFbJ3Zuc25hbWUnXSAhPSAnYWxsJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2Ruc2guc2hvd192bnNfcnVubmluZ19jb25maWcoZGF0YVsndm5zbmFtZSddLGRhdGFbJ3RlbmFudCddKQotICAgICAgICAgICAgZWxpZiAndm5zJyBpbiBkYXRhIGFuZCBkYXRhWyd2bnMnXT09J2FsbCc6Ci0gICAgICAgICAgICAgICAgZGF0YVsncnVubmluZy1jb25maWcnXSA9ICd2bnMnCi0gICAgICAgICAgICBlbGlmICd0ZW5hbnQnIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgZGF0YVsncnVubmluZy1jb25maWcnXT0ndGVuYW50JwotICAgICAgICAgICAgICAgIHdvcmRzPVtkYXRhWyd0ZW5hbnQnXV0KLSAgICAgICAgaWYgZGF0YVsncnVubmluZy1jb25maWcnXSBpbiBydW5fY29uZmlnLnJlZ2lzdHJ5X2l0ZW1zX2VuYWJsZWQoKToKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bl9jb25maWcucGVyZm9ybV9ydW5uaW5nX2NvbmZpZyhkYXRhWydydW5uaW5nLWNvbmZpZyddLCBzZG5zaCwgY29uZmlnLCB3b3JkcykKLQotICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgIHJldHVybiAnJy5qb2luKGNvbmZpZykKLQotICAgIGlmIG9ial90eXBlID09ICdydW5uaW5nLWNvbmZpZyc6Ci0gICAgICAgIHJldHVybiBydW5fY29uZmlnLmltcGxlbWVudF9zaG93X3J1bm5pbmdfY29uZmlnKFtdKQotICAgICAgICAgICAgCi0gICAgaWYgb2JqX3R5cGUgPT0gJ3Zucy1pbnRlcmZhY2UnOgotICAgICAgICBpZiBzY29wZWQ6Ci0gICAgICAgICAgICAjIHNob3VsZCBjaGVjayBmb3IgbWlzc2luZyAnaWQnIGluIGRhdGEKLSAgICAgICAgICAgIGRhdGFbJ3ZucyddID0gc2Ruc2guZ2V0X2N1cnJlbnRfbW9kZV9vYmooKQotCi0gICAgICAgIGlmICd2bnMnIGluIGRhdGE6Ci0gICAgICAgICAgICBpZiBkYXRhWyd2bnMnXSA9PSAnYWxsJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2Ruc2guZGlzcGxheV92bnNfaW50ZXJmYWNlKE5vbmUsIHt9LCAnPG5vX2tleT4nKQotICAgICAgICAgICAgdm5zX25hbWU9ZGF0YVsndm5zJ10KLSAgICAgICAgICAgIHJldHVybiBzZG5zaC5kaXNwbGF5X3Zuc19pbnRlcmZhY2Uodm5zX25hbWUsIHsndm5zJzogdm5zX25hbWUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPG5vX2tleT4nLCBkZXRhaWwgPSAnc2NvcGVkJykKLSAgICAgICAgCi0gICAgaWYgb2JqX3R5cGUgPT0gJ3Zucy1zd2l0Y2gtcG9ydHMnOgotICAgICAgICBpZiAndm5zJyBpbiBkYXRhOgotICAgICAgICAgICAgcmV0dXJuIHNkbnNoLnNob3dfdm5zX3N3aXRjaF9wb3J0cyhbZGF0YVsndm5zJ11dKQotICAgICAgICByZXR1cm4gc2Ruc2guc2hvd192bnNfc3dpdGNoX3BvcnRzKFtdKQotCi0gICAgaWYgb2JqX3R5cGUgPT0gJ3N3aXRjaC1wb3J0cy12bnMnOgotICAgICAgICBpZiAnZHBpZCcgaW4gZGF0YToKLSAgICAgICAgICAgIHJldHVybiBzZG5zaC5zaG93X3N3aXRjaF9wb3J0c192bnMoW2RhdGFbJ2RwaWQnXV0pCi0gICAgICAgIHJldHVybiBzZG5zaC5zaG93X3N3aXRjaF9wb3J0c192bnMoW10pCi0KLSAgICBpZiBvYmpfdHlwZSA9PSAnc3dpdGNoLWludGVyZmFjZXMnOgotICAgICAgICBrZXkgPSBtaS5wayhvYmpfdHlwZSkKLSAgICAgICAgaWYgc2NvcGVkOgotICAgICAgICAgICAgZGF0YVsnZHBpZCddID0gc2Ruc2guZ2V0X2N1cnJlbnRfbW9kZV9vYmooKQotCi0gICAgICAgICMgaW4gbGVnYWN5X2NsaSB0byBqb2luIHRoZSBzd2l0Y2gtaW50ZXJmYWNlcyB3aXRoIHBvcnQgc3RhdHMKLSAgICAgICAgcG9ydF9vYmogPSAncG9ydCcKLSAgICAgICAgZW50cmllcyA9IHNkbnNoLnNob3dfc29ydF9vYmpfdHlwZShvYmpfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9xdWVyeV9vYmplY3QocG9ydF9vYmosIGRhdGEsIHNjb3BlZCwgc29ydCkpCi0KLSAgICAgICAgIyBzd2l0Y2gtaW50ZXJmYWNlcyBpcyByZWFsbHkgY2xhc3MgUG9ydCwgYW5kIHRoZSBwcmltYXJ5IGtleQotICAgICAgICAjIGlzICcjfHN3aXRjaHxudW1iZXIsIG5vdCBuYW1lLgotCi0gICAgICAgIGVudHJpZXNfZGljdCA9IGRpY3QoW1snJXN8JXMnICUgKHhbJ3N3aXRjaCddLCB4WyduYW1lJ10pLCB4XSBmb3IgeCBpbiBlbnRyaWVzXSkKLSAgICAgICAgIyBjb2xsZWN0IHN3aXRjaC1pbnRlcmZhY2UtY29uZmlnCi0gICAgICAgIHNpYyA9ICdzd2l0Y2gtaW50ZXJmYWNlLWNvbmZpZycKLSAgICAgICAgaWYgJ2RwaWQnIGluIGRhdGEgYW5kIGRhdGFbJ2RwaWQnXSAhPSAnYWxsJzoKLSAgICAgICAgICAgIHNpY19kaWN0ID0gY3JlYXRlX29ial90eXBlX2RpY3Qoc2ljLCBtaS5wayhzaWMpLCBtaS5wayhzaWMpLCBkYXRhWydkcGlkJ10pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzaWNfZGljdCA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KHNpYywgbWkucGsoc2ljKSkKLQotICAgICAgICAjIGFkZCBzd2l0Y2gtaW50ZXJmYWNlLWNvbmZpZyBuYW1lcyB3aGVuIG1pc3NpbmcKLSAgICAgICAgZm9yIChzaWNfaWQsIHNpY192YWx1ZSkgaW4gc2ljX2RpY3QuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIG5vdCBzaWNfaWQgaW4gZW50cmllc19kaWN0OgotICAgICAgICAgICAgICAgICMgYWRkICdzdGF0ZScgdG8gdGhpcyBpdGVtIGZvciBwcmV0dHlwcmludGluZyBjb2x1bW4gd2lkdGggY29tcHV0YXRpb24KLSAgICAgICAgICAgICAgICBmb3Igc3YgaW4gc2ljX3ZhbHVlOgotICAgICAgICAgICAgICAgICAgICBzdlsnc3RhdGUnXSA9ICcnCi0gICAgICAgICAgICAgICAgZW50cmllcyArPSBzaWNfdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICMgY29sbGVjdCB0aGUgc3RhdHMgZm9yIHRoZSBpbnRlcmZhY2VzCi0gICAgICAgIHN0YXRzX3VybCA9ICdyZWFsdGltZXN0YXRzL3BvcnQvJShkcGlkKXMvJyAlIGRhdGEKLSAgICAgICAgdXJsID0gImh0dHA6Ly8lcy9yZXN0L3YxLyIgJSBzZG5zaC5jb250cm9sbGVyICsgc3RhdHNfdXJsCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdCA9IHNkbnNoLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsKQotICAgICAgICAgICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgICAgICAgICAgc3RhdHMgPSBqc29uLmxvYWRzKHJlc3VsdCkKLQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc3RhdHMgPSB7fQotCi0gICAgICAgICMgam9pbiByZWFsdGltZXN0YXRzCi0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgaWYgJ3N0YXRlJyBpbiBlbnRyeToKLSAgICAgICAgICAgICAgICBlbnRyeVsnc3RwLXN0YXRlJ10gPSBlbnRyeVsnc3RhdGUnXQotICAgICAgICAgICAgc3RhdHNfbGlzdCA9IHN0YXRzLmdldChlbnRyeVsnc3dpdGNoJ10pCi0gICAgICAgICAgICAjIE5vdGUsICdudW1iZXInIG1heSBiZSBtaXNzaW5nIGZyb20gZW50cnkgaWYgdGhlIHN3aXRjaAotICAgICAgICAgICAgIyBtYXRjaGVzIGZvciBzd2l0Y2gtaW50ZXJmYWNlLWNvbmZpZyBidXQgdGhlIGludGVyZmFjZSBuYW1lCi0gICAgICAgICAgICAjIGRvZXNuJ3Qgc2hvdyB1cC4KLSAgICAgICAgICAgIGlmIHN0YXRzX2xpc3QgYW5kICdudW1iZXInIGluIGVudHJ5OgotICAgICAgICAgICAgICAgIGlmbiA9IGVudHJ5WydudW1iZXInXQotICAgICAgICAgICAgICAgICMgTm90aWNlIHRoYXQgdGhlIHJlYWx0aW1lIHN0YXQncyB1c2UgYSBpbnQgZm9yIHRoZSAyXjE2IHZhbHVlIGhlcmUKLSAgICAgICAgICAgICAgICAjIFRoZSAmIDB4ZmZmZiBjb252ZXJ0cyB0aGUgIi14IiB0byBhIHBvc2l0aXZlIDJeMTYgdmFsdWUKLSAgICAgICAgICAgICAgICBpdGVtID0gW3ggZm9yIHggaW4gc3RhdHNfbGlzdCBpZiAoeFsncG9ydE51bWJlciddICYgMHhmZmZmKSA9PSBpZm5dCi0gICAgICAgICAgICAgICAgaWYgbGVuKGl0ZW0pID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIGVudHJ5LnVwZGF0ZShpdGVtWzBdKQotICAgICAgICAgICAgaWYgZW50cnlbJ2lkJ10gaW4gc2ljX2RpY3Q6Ci0gICAgICAgICAgICAgICAgZW50cnkudXBkYXRlKHNpY19kaWN0W2VudHJ5WydpZCddXVswXSkKLQotICAgICAgICAjIFVwZGF0ZSB0aGUgYWxpYXMgbWFwcGluZ3MgZm9yIGRpc3BsYXkKLSAgICAgICAgb2JqX3R5cGVfc2hvd19hbGlhc191cGRhdGUob2JqX3R5cGUpCi0KLSAgICAgICAgcmV0dXJuIHNkbnNoLnBwLmZvcm1hdF90YWJsZShlbnRyaWVzLCBvYmpfdHlwZSwgZGV0YWlsKQotCi0gICAgaWYgb2JqX3R5cGUgPT0gJ3R1bm5lbC1pbnRlcmZhY2VzJzoKLSAgICAgICAgIyBVc2UgdGhlIGFjdGl2ZSB0dW5uZWxzIHRvIGlkZW50aWZ5IHRoZSBpbnRlcmZhY2VzIG9uIHRoZQotICAgICAgICAjIHN3aXRjaGVzIHdoaWNoIGFyZSB0aGUgdHVubmVsaW5nIGludGVyZmFjZXMsIHdpdGggdGhhdAotICAgICAgICAjIGNvbGxlY3QgdG8gcG9ydCAtPiBpZl9uYW1lIG1hcHBpbmdzIGZyb20gJ3BvcnQnLCB0aGVuCi0gICAgICAgICMgZmluZCBhbGwgdGhlIHN3aXRjaGVzIGludGVyZmFjZXMsIGNvbnZlcnQgdGhvc2UgcG9ydCBudW1iZXJzIHRvCi0gICAgICAgICMgaWYgbmFtZXMsIHRvIGNvbGxlY3Qgb25seSB0dW5uZWxpbmcgaW50ZXJmYWNlcy4gIE5vdyBjb2xsZWN0Ci0gICAgICAgICMgcmVhbHRpbWVzdGF0cyBmb3IgdGhlIHN3aXRjaCdzIHBvcnRzLCBhbmQgYXNzb2NpYXRlIHRob3NlCi0gICAgICAgICMgc3RhdHMgd2l0aCBhbnkgZmlsdGVyZWQgaW50ZXJmYWNlcywgZmluYWxseSBkaXNwbGF5IHRoZSByZXN1bHQKLSAgICAgICAgdHVubmVsX3VybCA9ICJ0dW5uZWwtbWFuYWdlci8lKGRwaWQpcyIgJSBkYXRhCi0gICAgICAgIHVybCA9ICJodHRwOi8vJXMvcmVzdC92MS8iICUgc2Ruc2guY29udHJvbGxlciArIHR1bm5lbF91cmwKLSAgICAgICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdCh1cmwpCi0gICAgICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLSAgICAgICAgdHVubmVscyA9IGpzb24ubG9hZHMocmVzdWx0KQotCi0gICAgICAgICMgdXNlIHRoZSBhY3RpdmUgdHVubmVscyB0bwotICAgICAgICAjIGNvbGxlY3QgZHBpZCdzLCBjb252ZXJ0IHRoZSByZW1vdGUgaXAncyB0byBpbnRlcmZhY2UgbmFtZXMuCi0gICAgICAgIHR1bm5lbF9wb3J0cyA9IHt9Ci0gICAgICAgIGZvciB0IGluIHR1bm5lbHM6Ci0gICAgICAgICAgICBxdWFkID0gdFsndHVubmVsUG9ydHMnXS5zcGxpdCgnLicpCi0gICAgICAgICAgICBpZl9uYW1lID0gInZ0YSUwM2QlMDNkJTAzZCUwM2QiICUgKGludChxdWFkWzBdKSwgaW50KHF1YWRbMV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQocXVhZFsyXSksIGludChxdWFkWzNdKSkKLSAgICAgICAgICAgIGtleSA9ICIlc3wlcyIgJSAodFsnZHBpZCddLCBpZl9uYW1lKQotICAgICAgICAgICAgaWYgbm90IGtleSBpbiB0dW5uZWxfcG9ydHM6Ci0gICAgICAgICAgICAgICAgdHVubmVsX3BvcnRzW2tleV0gPSB7dFsnZHBpZCddOiB0Wyd0dW5uZWxQb3J0cyddfQotCi0gICAgICAgICMgQ29sbGVjdCBpbnRlcmZhY2VzIG9uIGFzc29jaWF0ZWQgc3dpdGNoCi0gICAgICAgIHBvcnRfb2JqID0gJ3BvcnQnCi0gICAgICAgIGVudHJpZXMgPSBzZG5zaC5zaG93X3NvcnRfb2JqX3R5cGUocG9ydF9vYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9xdWVyeV9vYmplY3QocG9ydF9vYmosIGRhdGEsIHNjb3BlZCwgc29ydCkpCi0gICAgICAgICMgQXNzb2NpYXRlIHBvcnQgbmFtZXMgd2l0aCBpbnRlcmZhY2UgbmFtZXMKLSAgICAgICAgcG9ydF90b19pZl9uYW1lID0ge30KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwb3J0cyA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKCJwb3J0IikKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHBvcnQgPSBbXQotCi0gICAgICAgIGZvciBwb3J0IGluIHBvcnRzOgotICAgICAgICAgICAga2V5X3N0cmluZyA9ICclc3wlcycgJSAocG9ydFsnc3dpdGNoJ10sIHBvcnRbJ251bWJlciddKQotICAgICAgICAgICAgcG9ydF90b19pZl9uYW1lW2tleV9zdHJpbmddID0gcG9ydFsnbmFtZSddCi0KLSAgICAgICAgIyBGaWx0ZXIgZWxlbWVudHMsICdmaWx0ZXJlZCcgb25seSBjb250YWlucyBhY3RpdmUgdHVubmVsIGludGVyZmFjZXMKLSAgICAgICAgZmlsdGVyZWQgPSBbXQotICAgICAgICBmb3IgZSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgZVsnaWZuYW1lJ10gPSBwb3J0X3RvX2lmX25hbWVbZVsnaWQnXV0KLSAgICAgICAgICAgIGtleSA9ICclc3wlcycgJSAoZVsnc3dpdGNoJ10sIGVbJ2lmbmFtZSddKQotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCBjb21tYW5kLl9saW5lKCksIGtleQotICAgICAgICAgICAgaWYga2V5IGluIHR1bm5lbF9wb3J0czoKLSAgICAgICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgICAgICBwcmludCBjb21tYW5kLl9saW5lKCksICJGb3VuZCAiLCBlWydpZCddCi0gICAgICAgICAgICAgICAgZmlsdGVyZWQuYXBwZW5kKGUpCi0gICAgICAgIGVudHJpZXMgPSBmaWx0ZXJlZAotCi0gICAgICAgICMgY29sbGVjdCBzd2l0Y2gtaW50ZXJmYWNlLWNvbmZpZwotICAgICAgICBzaWMgPSAnc3dpdGNoLWludGVyZmFjZS1jb25maWcnCi0gICAgICAgIGlmICdkcGlkJyBpbiBkYXRhOgotICAgICAgICAgICAgc2ljX2RpY3QgPSBjcmVhdGVfb2JqX3R5cGVfZGljdChzaWMsIG1pLnBrKHNpYyksIG1pLnBrKHNpYyksIGRhdGFbJ2RwaWQnXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNpY19kaWN0ID0gY3JlYXRlX29ial90eXBlX2RpY3Qoc2ljLCBtaS5wayhzaWMpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgIyBjb2xsZWN0IHRoZSBzdGF0cyBmb3IgdGhlIGludGVyZmFjZXMKLSAgICAgICAgc3RhdHNfdXJsID0gJ3JlYWx0aW1lc3RhdHMvcG9ydC8lKGRwaWQpcy8nICUgZGF0YQotICAgICAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvIiAlIHNkbnNoLmNvbnRyb2xsZXIgKyBzdGF0c191cmwKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdCh1cmwpCi0gICAgICAgICAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgICAgICAgICBzdGF0cyA9IGpzb24ubG9hZHMocmVzdWx0KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc3RhdHMgPSB7fQotCi0gICAgICAgICMgam9pbiByZWFsdGltZXN0YXRzCi0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgaWYgJ3N0YXRlJyBpbiBlbnRyeToKLSAgICAgICAgICAgICAgICBlbnRyeVsnc3RwLXN0YXRlJ10gPSBlbnRyeVsnc3RhdGUnXQotICAgICAgICAgICAgc3RhdHNfbGlzdCA9IHN0YXRzLmdldChlbnRyeVsnc3dpdGNoJ10pCi0gICAgICAgICAgICBpZiBzdGF0c19saXN0IGFuZCAnbnVtYmVyJyBpbiBlbnRyeToKLSAgICAgICAgICAgICAgICBpZm4gPSBlbnRyeVsnbnVtYmVyJ10KLSAgICAgICAgICAgICAgICAjIE5vdGljZSB0aGF0IHRoZSByZWFsdGltZSBzdGF0J3MgdXNlIGEgaW50IGZvciB0aGUgMl4xNiB2YWx1ZSBoZXJlCi0gICAgICAgICAgICAgICAgIyBUaGUgJiAweGZmZmYgY29udmVydHMgdGhlICIteCIgdG8gYSBwb3NpdGl2ZSAyXjE2IHZhbHVlCi0gICAgICAgICAgICAgICAgaXRlbSA9IFt4IGZvciB4IGluIHN0YXRzX2xpc3QgaWYgKHhbJ3BvcnROdW1iZXInXSAmIDB4ZmZmZikgPT0gaWZuXQotICAgICAgICAgICAgICAgIGlmIGxlbihpdGVtKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICBlbnRyeS51cGRhdGUoaXRlbVswXSkKLSAgICAgICAgICAgIGlmIGVudHJ5WydpZCddIGluIHNpY19kaWN0OgotICAgICAgICAgICAgICAgIGVudHJ5LnVwZGF0ZShzaWNfZGljdFtlbnRyeVsnaWQnXV1bMF0pCi0KLSAgICAgICAgb2JqX3R5cGVfc2hvd19hbGlhc191cGRhdGUoJ3N3aXRjaC1pbnRlcmZhY2VzJykKLQotICAgICAgICByZXR1cm4gc2Ruc2gucHAuZm9ybWF0X3RhYmxlKGVudHJpZXMsICdzd2l0Y2gtaW50ZXJmYWNlcycsIGRldGFpbCkKLSAgICAgICAgCi0gICAgaWYgb2JqX3R5cGUgPT0gJ2hvc3Qtdm5zLWludGVyZmFjZS12bnMnOgotICAgICAgICB3b3JkcyA9IFtdCi0gICAgICAgIGZvciB3IGluIFtdOiAjIGxpc3Qgb2Ygb3B0aW9ucyB0byBkaXNwbGF5X3Zuc19tYWNfYWRkcmVzc190YWJsZQotICAgICAgICAgICAgaWYgdyBpbiBkYXRhOgotICAgICAgICAgICAgICAgIHdvcmRzW3ddID0gZGF0YVt3XQotCi0gICAgICAgIHJldHVybiBzZG5zaC5kaXNwbGF5X3Zuc19tYWNfYWRkcmVzc190YWJsZShkYXRhWyd2bnMnXSwgd29yZHMpCi0KLSAgICBpZiBvYmpfdHlwZSA9PSAnY29uZmlnJzoKLSAgICAgICAgaWYgJ2NvbmZpZycgaW4gZGF0YToKLSAgICAgICAgICAgIGlmICd2ZXJzaW9uJyBpbiBkYXRhOgotICAgICAgICAgICAgICAgIHJldHVybiBzZG5zaC5pbXBsZW1lbnRfc2hvd19jb25maWcoW2RhdGFbJ2NvbmZpZyddLGRhdGFbJ3ZlcnNpb24nXV0pCi0gICAgICAgICAgICByZXR1cm4gc2Ruc2guaW1wbGVtZW50X3Nob3dfY29uZmlnKFtkYXRhWydjb25maWcnXV0pCi0KLSAgICAgICAgaWYgJ2NvbmZpZy1kaWZmJyBpbiBkYXRhOgotICAgICAgICAgICAgaWYgJ3ZlcnNpb24nIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNkbnNoLmltcGxlbWVudF9zaG93X2NvbmZpZyhbIGRhdGFbJ2ZpcnN0J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaWZmJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3NlY29uZCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsndmVyc2lvbiddXSkKLSAgICAgICAgICAgIHJldHVybiBzZG5zaC5pbXBsZW1lbnRfc2hvd19jb25maWcoW2RhdGFbJ2ZpcnN0J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlmZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydzZWNvbmQnXSwgXSkKLSAgICAgICAgcmV0dXJuIHNkbnNoLmltcGxlbWVudF9zaG93X2NvbmZpZyhbXSkKLQotICAgIGlmIG9ial90eXBlID09ICd2bnMtZmxvdyc6Ci0gICAgICAgIGlmICdkZXRhaWwnIGluIGRhdGE6Ci0gICAgICAgICAgICByZXR1cm4gc2Ruc2guc2hvd192bnNfZmxvd19hbm5vdGF0ZWQoW2RhdGFbJ3ZucyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmxvdycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2RldGFpbCddXSkKLSAgICAgICAgcmV0dXJuIHNkbnNoLnNob3dfdm5zX2Zsb3dfYW5ub3RhdGVkKFtkYXRhWyd2bnMnXSwgJ2Zsb3cnXSkKLQotICAgIGlmIG9ial90eXBlID09ICd0ZWNoLXN1cHBvcnQnOgotICAgICAgICByZXR1cm4gc2Ruc2guZG9fc2hvd190ZWNoX3N1cHBvcnQoW10pCi0KLSAgICBpZiBvYmpfdHlwZSA9PSAnY29uZmlnLWZpbGUnOgotICAgICAgICBpZiAnZmlsZScgaW4gZGF0YToKLSAgICAgICAgICAgIHJldHVybiBzZG5zaC5pbXBsZW1lbnRfc2hvd19jb25maWdfZmlsZShbJ2NvbmZpZy1maWxlJywgZGF0YVsnY29uZmlnJ11dKQotICAgICAgICByZXR1cm4gc2Ruc2guaW1wbGVtZW50X3Nob3dfY29uZmlnX2ZpbGUoWydjb25maWctZmlsZScsIF0pCi0KLSAgICBpZiBvYmpfdHlwZSA9PSAnbG9nZ2luZyc6Ci0gICAgICAgIGlmICdsb2ctbmFtZScgaW4gZGF0YToKLSAgICAgICAgICAgIHJldHVybiBzZG5zaC5pbXBsZW1lbnRfc2hvd19sb2dnaW5nKFtkYXRhWydsb2ctbmFtZSddXSkKLSAgICAgICAgcmV0dXJuIHNkbnNoLmltcGxlbWVudF9zaG93X2xvZ2dpbmcoW10pCi0KLSAgICBpZiBvYmpfdHlwZSA9PSAnZXZlbnQtaGlzdG9yeSc6Ci0gICAgICAgIGlmICdjb3VudCcgaW4gZGF0YToKLSAgICAgICAgICAgIHJldHVybiBzZG5zaC5kb19zaG93X2V2ZW50X2hpc3RvcnkoW2RhdGFbJ2V2ZW50J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGFzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZGF0YVsnY291bnQnXSldKQotICAgICAgICByZXR1cm4gc2Ruc2guZG9fc2hvd19ldmVudF9oaXN0b3J5KFtkYXRhWydldmVudCddXSkKLQotICAgIGlmIG9ial90eXBlID09ICdmbG93LWNhY2hlJzoKLSAgICAgICAgd29yZHMgPSBbXQotICAgICAgICBpZiAnY291bnRlcnMnIGluIGRhdGE6Ci0gICAgICAgICAgICB3b3Jkcy5hcHBlbmQoJ2NvdW50ZXJzJykKLSAgICAgICAgZWxpZiAnYXBwbGljYXRpb24nIGluIGRhdGE6Ci0gICAgICAgICAgICB3b3Jkcy5hcHBlbmQoJ2FwcCcpCi0gICAgICAgICAgICB3b3Jkcy5hcHBlbmQoZGF0YVsnYXBwbGljYXRpb24nXSkKLSAgICAgICAgICAgIHdvcmRzLmFwcGVuZCgnYXBwLWluc3RhbmNlJykKLSAgICAgICAgICAgIHdvcmRzLmFwcGVuZChkYXRhWydpbnN0YW5jZSddKQotCi0gICAgICAgIHJldHVybiBzZG5zaC5kb19zaG93X2Zsb3dfY2FjaGUod29yZHMpCi0KLSAgICBpZiBvYmpfdHlwZSBpbiBbJ2NvbnRyb2xsZXItc3RhdHMnLCAnc3dpdGNoLXN0YXRzJ106Ci0gICAgICAgICMKLSAgICAgICAgIyBkYXRhWydpZCddIGlzIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sbGVyCi0gICAgICAgIGhlbHBlcl9pdGVtID0gb2JqX3R5cGUucmVwbGFjZSgnLXN0YXRzJywnJykKLSAgICAgICAgaWYgaGVscGVyX2l0ZW0gPT0gJ2NvbnRyb2xsZXInOgotICAgICAgICAgICAgaGVscGVyX2l0ZW0gPSAnY29udHJvbGxlci1ub2RlJwotICAgICAgICBrZXkgPSBtaS5wayhoZWxwZXJfaXRlbSkKLSAgICAgICAgd29yZHMgPSBbaGVscGVyX2l0ZW0sIGRhdGFba2V5XSwgJ3N0YXRzJ10KLSAgICAgICAgaWYgJ3N0YXRzLXR5cGUnIGluIGRhdGE6Ci0gICAgICAgICAgICB3b3Jkcy5hcHBlbmQoZGF0YVsnc3RhdHMtdHlwZSddKQotICAgICAgICBmb3IgKG4sdikgaW4gZGF0YS5pdGVtcygpOgotICAgICAgICAgICAgaWYgbm90IG4gaW4gW2tleSwgJ3N0YXRzJywgJ3N0YXRzLXR5cGUnXToKLSAgICAgICAgICAgICAgICB3b3Jkcy5hcHBlbmQobikKLSAgICAgICAgICAgICAgICB3b3Jkcy5hcHBlbmQodikKLSAgICAgICAgcmV0dXJuIHNkbnNoLmhlbHBlcl9zaG93X29iamVjdF9zdGF0cyh3b3JkcykKLQotICAgIGlmIG9ial90eXBlID09ICdzd2l0Y2gtdGNwZHVtcCc6Ci0gICAgICAgIHdvcmRzID0gWyd0cmFjZScsIGRhdGFbJ2RwaWQnXV0KLSAgICAgICAgZm9yIChuLHYpIGluIGRhdGEuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIG5vdCBuIGluIFsndGNwZHVtcCcsICdkcGlkJ106Ci0gICAgICAgICAgICAgICAgd29yZHMuYXBwZW5kKG4pCi0gICAgICAgIHJldHVybiBzZG5zaC5kb190cmFjZSh3b3JkcykKLQotICAgIGlmIG9ial90eXBlID09ICdjb3B5JzoKLSAgICAgICAgd29yZHMgPSBbZGF0YVsnc291cmNlJ11dCi0gICAgICAgIGlmICdkZXN0JyBpbiBkYXRhOgotICAgICAgICAgICAgd29yZHMuYXBwZW5kKGRhdGFbJ2Rlc3QnXSkKLSAgICAgICAgcmV0dXJuIHNkbnNoLmltcGxlbWVudF9jb3B5KHdvcmRzKQotCi0gICAgaWYgb2JqX3R5cGUgPT0gJ3dyaXRlJzoKLSAgICAgICAgcmV0dXJuIHNkbnNoLmltcGxlbWVudF93cml0ZShbZGF0YVsndGFyZ2V0J11dKQotCi0gICAgaWYgb2JqX3R5cGUgPT0gJ3RoaXMnOgotICAgICAgICBvYmpfdHlwZSA9IHNkbnNoLmdldF9jdXJyZW50X21vZGVfb2JqX3R5cGUoKQotICAgICAgICBzaG93X3RoaXMgPSBtaS5vYmpfdHlwZV9zaG93X3RoaXMob2JqX3R5cGUpCi0gICAgICAgIGlmIG5vdCBzaG93X3RoaXM6Ci0gICAgICAgICAgICByZXR1cm4gc2Ruc2guZG9fc2hvd19vYmplY3QoWyd0aGlzJ10pCi0gICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgIGZvciBzaG93IGluIHNob3dfdGhpczoKLSAgICAgICAgICAgIGlmIHR5cGUoc2hvdykgaXMgbGlzdCBhbmQgbGVuKHNob3cpID49IDM6Ci0gICAgICAgICAgICAgICAgIyBbIG9iamVjdCwgZm9ybWF0LCBkZXRhaWwgXQotICAgICAgICAgICAgICAgIGlmIGxlbihyZXN1bHQpID4gMDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtaS5vYmpfdHlwZV9zaG93X3RpdGxlKHNob3dbMF0pKQotICAgICAgICAgICAgICAgIHNvcnQgPSBOb25lCi0gICAgICAgICAgICAgICAgaWYgbGVuKHNob3cpID4gMzoKLSAgICAgICAgICAgICAgICAgICAgc29ydCA9IHNob3dbM10KLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNvbW1hbmRfZGlzcGxheV90YWJsZShzaG93WzBdLCB7fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9mb3JtYXQgPSBzaG93WzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbCA9IHNob3dbMl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IHNvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVkID0gVHJ1ZSkpCi0gICAgICAgICAgICBlbGlmIHR5cGUoc2hvdykgaXMgbGlzdCBhbmQgbGVuKHNob3cpID09IDI6Ci0gICAgICAgICAgICAgICAgIyBbIG9iamVjdCwgZGV0YWlsIF0KLSAgICAgICAgICAgICAgICBpZiBsZW4ocmVzdWx0KSA+IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobWkub2JqX3R5cGVfc2hvd190aXRsZShzaG93WzBdKSkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNvbW1hbmRfZGlzcGxheV90YWJsZShzaG93WzBdLCB7fSwgZGV0YWlsID0gc2hvd1sxXSwgc2NvcGVkID0gVHJ1ZSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc2Ruc2guZG9fc2hvd19vYmplY3QoW3Nob3ddKSkKLSAgICAgICAgcmV0dXJuICdcbicuam9pbihyZXN1bHQpCi0KLSAgICBpZiBvYmpfdHlwZSA9PSAndmVyc2lvbic6Ci0gICAgICAgIHJldHVybiBzZG5zaC5kb19zaG93X3ZlcnNpb24oW10pCi0KLSAgICBpZiBvYmpfdHlwZSA9PSAncmVsb2FkJzoKLSAgICAgICAgcmV0dXJuIHNkbnNoLmltcGxlbWVudF9yZWxvYWQoKQotCi0gICAgaWYgb2JqX3R5cGUgPT0gJ3Rlc3QtY29tbWFuZCc6Ci0gICAgICAgIGlmIGRhdGFbJ3Rlc3QtdHlwZSddID09ICdwYWNrZXQtaW4nOgotICAgICAgICAgICAgcmV0dXJuIHNkbnNoLmltcGxlbWVudF90ZXN0X3BhY2tldF9pbihkYXRhKQotICAgICAgICBpZiBkYXRhWyd0ZXN0LXR5cGUnXSA9PSAncGF0aCc6Ci0gICAgICAgICAgICByZXR1cm4gc2Ruc2guaW1wbGVtZW50X3Rlc3RfcGF0aChkYXRhKQotCi0gICAgcHJpbnQgJ2NvbW1hbmRfbGVnYWN5X2NsaTogb2JqLXR5cGUgdW5rbm93bjogJywgb2JqX3R5cGUKLQotCi1kZWYgY29tbWFuZF9sZWdhY3lfY2xpX25vKG9ial90eXBlLCBkYXRhLCBkZXRhaWwgPSAnZGVmYXVsdCcsIHNjb3BlZCA9IE5vbmUsIHNvcnQgPSBOb25lKToKLSAgICAiIiIKLSAgICBJbXBsZW1lbnQgbm8gY29tbWFuZCBmb3IgdHJhbXBvbGluZSBjb2RlIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNvZGUKLSAgICAiIiIKLSAgICBpZiBvYmpfdHlwZSA9PSAndGFnLW1hcHBpbmcnOgotICAgICAgICByZXR1cm4gc2Ruc2guaW1wbGVtZW50X25vX3RhZyhbJ3RhZycsIGRhdGFbJ3RhZyddXSkKLQotCi1kZWYgY29tbWFuZF92ZXJzaW9uKGRhdGEpOgotICAgICIiIgotICAgIFRoZSB2ZXJzaW9uIGNvbW1hbmQgd2lsbCBsYXRlciBtYW5hZ2UgY2hhbmdpbmcgdGhlIHN5bnRheCB0byBtYXRjaAotICAgIHRoZSByZXF1ZXN0ZWQgdmVyc2lvbi4KLSAgICAiIiIKLSAgICBuZXdfdmVyc2lvbiA9IGRhdGEuZ2V0KCd2ZXJzaW9uJykKLSAgICBpZiBuZXdfdmVyc2lvbiA9PSBOb25lOgotICAgICAgICByZXR1cm4KLQotICAgIHZlcnNpb24gPSBuZXdfdmVyc2lvbiAjIHNhdmUgZm9yIGVycm9yIG1lc3NhZ2UKLSAgICBuZXdfdmVyc2lvbiA9IHNkbnNoLmRlc2NfdmVyc2lvbl90b19wYXRoX2VsZW0obmV3X3ZlcnNpb24pCi0KLSAgICAjIHNraXAgdmVyc2lvbiBjaGFuZ2UgaXMgdGhpcyBpcyB0aGUgY3VycmVudCB2ZXJzaW9uLgotICAgIGlmIHNkbnNoLmRlc2NfdmVyc2lvbiA9PSBuZXdfdmVyc2lvbjoKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIHNlZSBpZiB0aGUgcmVxdWVzdGVkIHZlcnNpb24gZXhpc3RzCi0gICAgaWYgbm90IHNkbnNoLmNvbW1hbmRfcGFja2FnZXNfZXhpc3RzKG5ld192ZXJzaW9uKToKLSAgICAgICAgcHJpbnQgJ05vIGNvbW1hbmQgZGVzY3JpcHRpb24gZ3JvdXAgZm9yIHZlcnNpb24gJXMnICUgdmVyc2lvbgotICAgICAgICByZXR1cm4KLQotICAgICMgcnVuICdlbnYgW2VudnJpcm9uX3ZhcnNdIC4uLiBjbGkucHknCi0gICAgY29tbWFuZCA9IFsnZW52J10KLSAgICBjb21tYW5kLmFwcGVuZCgnQ0xJX0NPTU1BTkRfVkVSU0lPTj0lcycgJSB2ZXJzaW9uKQotICAgIGNvbW1hbmQuYXBwZW5kKCdDTElfU1RBUlRJTkdfTU9ERT1jb25maWcnKQotICAgIGlmIG9zLnBhdGguZXhpc3RzKCcvb3B0L3NkbnBsYXRmb3JtL2NsaS9iaW4vY2xpJyk6Ci0gICAgICAgICMgY29udHJvbGxlciBWTQotICAgICAgICBjb21tYW5kLmFwcGVuZCgnL29wdC9zZG5wbGF0Zm9ybS9jbGkvYmluL2NsaSAtLWluaXQnKQotICAgIGVsc2U6Ci0gICAgICAgICMgZGV2ZWxvcGVyIHNldHVwCi0gICAgICAgIGJhc2UgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgICAgIGNvbW1hbmQuYXBwZW5kKG9zLnBhdGguam9pbihiYXNlLCAnY2xpLnB5JykpCi0gICAgICAgIGNvbW1hbmQuYXBwZW5kKCctLWluaXQnKQotCi0gICAgIyBkdW1wIHRoZSBjb21tYW5kIGRlc2NyaXB0aW9ucywgYW5kIHJlYWQgYSBuZXcgc2V0LgotICAgICMgb3BlbiBhIHN1YnNoZWxsIHdpdGggYSBuZXcgY29tbWFuZCB2ZXJzaW9uCi0gICAgc3VicHJvY2Vzcy5jYWxsKGNvbW1hbmQsIGN3ZD1vcy5lbnZpcm9uLmdldCgiSE9NRSIpKQotCi0gICAgcmV0dXJuCi0KLQotZGVmIGNvbW1hbmRfY2xlYXJ0ZXJtKCk6Ci0gICAgIiIiCi0gICAgUHJpbnQgcmVzZXQgY2hhcmFjdGVycyB0byB0aGUgc2NyZWVuIHRvIGNsZWFyIHRoZSBjb25zb2xlCi0gICAgIiIiCi0gICAgc3VicHJvY2Vzcy5jYWxsKCJyZXNldCIpCi0KLWRlZiBjb21tYW5kX2Rpc3BsYXlfY2xpKGRhdGEpOgotICAgICIiIgotICAgIERpc3BsYXkgdmFyaW91cyBjbGkgZGV0YWlscwotICAgICh0aGlzIG1heSBuZWVkIHRvIGJlIHJlLWZhY3RvcmVkIGludG8gc29tZSBnZW5lcmFsICJpbnRlcm5hbCIgc3RhdGUgc2hvdwotICAgICIiIgotICAgIGRlYnVnID0gW10KLSAgICBpZiBzZG5zaC5kZWJ1ZzoKLSAgICAgICAgZGVidWcuYXBwZW5kKCdkZWJ1ZycpCi0gICAgaWYgc2Ruc2guZGVidWdfYmFja3RyYWNlOgotICAgICAgICBkZWJ1Zy5hcHBlbmQoJ2JhY2t0cmFjZScpCi0KLSAgICBtb2RlcyA9IHNkbnNoLmNvbW1hbmRfZGljdC5rZXlzKCkgKyBzZG5zaC5jb21tYW5kX25lc3RlZF9kaWN0LmtleXMoKQotCi0gICAgZW50cnkgPSB7Ci0gICAgICAgICAgICAgICAndmVyc2lvbicgOiAnLCAnLmpvaW4oY29tbWFuZC5jb21tYW5kX3N5bnRheF92ZXJzaW9uLmtleXMoKSksCi0gICAgICAgICAgICAgICAnZGVzYycgICAgOiAnLCAnLmpvaW4oc29ydGVkKGNvbW1hbmQuY29tbWFuZF9hZGRlZF9tb2R1bGVzLmtleXMoKSkpLAotICAgICAgICAgICAgICAgJ2Zvcm1hdCcgIDogJywgJy5qb2luKHNvcnRlZChzZG5zaC5wcC5mb3JtYXRfYWRkZWRfbW9kdWxlcy5rZXlzKCkpKSwKLSAgICAgICAgICAgICAgICdtb2RlcycgICA6ICcsICcuam9pbihzb3J0ZWQodXRpZi51bmlxdWVfbGlzdF9mcm9tX2xpc3QobW9kZXMpKSksCi0gICAgICAgICAgICAgICAnZGVidWcnICAgOiAnLCAnLmpvaW4oZGVidWcpLAotICAgICAgICAgICAgfQotICAgIGJhc2ljID0gc2Ruc2gucHAuZm9ybWF0X2VudHJ5KGVudHJ5LCAnY2xpJykKLQotICAgIG1vZGVfZW50cmllcyA9IGNvbW1hbmQuY29tbWFuZF9zdWJtb2RlX2RpY3Rpb25hcnkobW9kZXMpCi0gICAgbW9kZV90YWJsZSA9IHNkbnNoLnBwLmZvcm1hdF90YWJsZShtb2RlX2VudHJpZXMsICdjbGktbW9kZXMnKQotCi0gICAgcmV0dXJuIGJhc2ljICsgJ1xuXG5Db21tYW5kIFN1Ym1vZGUgVHJhbnNpdGlvblxuJyArIG1vZGVfdGFibGUKLQotICAgIHJldHVybgotCi0KLWRlZiBkZWxldGVfYWxpYXNfYnlfaWQoYWxpYXNfb2JqX3R5cGUsIGFsaWFzX3ZhbHVlKToKLSAgICAiIiIKLSAgICBDb21tb24gZGVsZXRlIG9wZXJhdGlvbiBmb3IgYWxpYXMsIGJhc2VkIG9uIHByaW1hcnkga2V5Ci0KLSAgICBAcGFyYW0gYWxpYXNfb2JqX3R5cGUgc3RyaW5nLCBuYW1lIG9mIHRhYmxlIHdoZXJlIHNpbmdsZSBlbnRyeSBpcyByZW1vdmVkCi0gICAgQHBhcmFtIGFsaWFzX3ZhbHVlIHN0cmluZywgdmFsdWUgb2YgcHJpbWFyeSBrZXkgdG8gZGVsZXRlCi0gICAgIiIiCi0gICAgeHJlZiA9IG1pLmZvcmVpZ25fa2V5X3hyZWYuZ2V0KGFsaWFzX29ial90eXBlKQotICAgIGlmIHhyZWY6Ci0gICAgICAgICMgbG9vayBmb3IgYW55IHJlZmVyZWNuZXMgdG8gdGhpcyBhbGlhc192YWx1ZS4gIFNpbmNlIHRoaXMKLSAgICAgICAgIyBpcyBhbiBhbGlhcyB0YWJsZSwgb25seSB0aGUgcGsgb3VnaHQgdG8gZXhpc3QgaW4gdGhlIHhyZWYuCi0gICAgICAgICMgV2hlbiB0aGUgYWxpYXMgaXMgZ2V0dGluZyByZW1vdmVkLCBhbnkgcmVmZXJlbmNlcyB0byBpdAotICAgICAgICAjIHZpYSBmb3JlaWduIGtleXMgbXVzdCBhbHNvIGdldCByZW1vdmVkLgotICAgICAgICBpZiBsZW4oeHJlZikgPiAxIG9yIG5vdCBtaS5wayhhbGlhc19vYmpfdHlwZSkgaW4geHJlZjoKLSAgICAgICAgICAgIHByaW50ICdJbnRlcm5hbCBJbmNvbnNpc3RlbmN5JwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm9yIChma19vYmpfdHlwZSwgZmtfZmllbGQpIGluIHhyZWZbbWkucGsoYWxpYXNfb2JqX3R5cGUpXToKLSAgICAgICAgICAgICAgICByb3dzID0gc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoZmtfb2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZrX2ZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhc192YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YWN0JykKLSAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJvd3M6Ci0gICAgICAgICAgICAgICAgICAgIHNkbnNoLnJlc3RfZGVsZXRlX29iamVjdChma19vYmpfdHlwZSwgcm93W21pLnBrKGZrX29ial90eXBlKV0pCi0gICAgc2Ruc2gucmVzdF9kZWxldGVfb2JqZWN0KGFsaWFzX29ial90eXBlLCBhbGlhc192YWx1ZSkKLQotCi1kZWYgZGVsZXRlX2FsaWFzX2J5X2ZrKGFsaWFzX29ial90eXBlLCBmb3JlaWduX2tleSk6Ci0gICAgIiIiCi0gICAgQ29tbW9uIGRlbGV0ZSBvcGVyYXRpb24gZm9yIGFsaWFzLCBieSBmb3JlaWduIGtleQotCi0gICAgQHBhcmFtIGFsaWFzX29ial90eXBlIHN0cmluZywgbmFtZSBvZiB0YWJsZSB3aGVyZSBzaW5nbGUgZW50cnkgaXMgcmVtb3ZlZAotICAgIEBwYXJhbSBhbGlhc192YWx1ZSBzdHJpbmcsIHZhbHVlIG9mIHByaW1hcnkga2V5IHRvIGRlbGV0ZQotICAgICIiIgotICAgICMgZmluZCBhbGwgdGhlIGlkJ3MgYmFzZWQgb24gdGhlIGZvcmVpZ24ga2V5LCB0aGVuIGRlbGV0ZSB0aGVtIGFsbC4KLSAgICAjIG5vdGU6IHNlZSBzaW1pbGFyIG1pZHcgYWxpYXNfbG9va3VwX3dpdGhfZm9yZWlnbl9rZXkoKQotCi0gICAgZm9yZWlnbl9maWVsZCA9IG1pLmFsaWFzX29ial90eXBlX2ZpZWxkKGFsaWFzX29ial90eXBlKQotICAgIHRyeToKLSAgICAgICAgcm93cyA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKGFsaWFzX29ial90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWlnbl9maWVsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVpZ25fa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4YWN0IikKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kSW50ZXJuYWxFcnJvcigiQ2FuJ3QgZmV0Y2ggJXM6JXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yZWlnbl9maWVsZCwgZm9yZWlnbl9rZXkpKQotICAgIHBrID0gbWkucGsoYWxpYXNfb2JqX3R5cGUpCi0gICAgZm9yIHJvdyBpbiByb3dzOgotICAgICAgICBkZWxldGVfYWxpYXNfYnlfaWQoYWxpYXNfb2JqX3R5cGUsIHJvd1twa10pCi0KLQotZGVmIGNvbW1hbmRfZGVsZXRlX2FsaWFzKG9ial90eXBlLCBkYXRhKToKLSAgICAiIiIKLSAgICBBY3Rpb24gZm9yIGRlbGV0ZS1hbGlhcwotCi0gICAgQSBzaW5nbGUgcm93IGlzIGRlbGV0ZWQgZnJvbSBhbiBhbGlhcyB0YWJsZS4KLSAgICBDdXJyZW50IGFsaWFzIHRhYmxlcyBpbmNsdWRlIGhvc3QtYWxpYXMsIHN3aXRjaC1hbGlhcywgcG9ydC1hbGlhcwotCi0gICAgQHBhcmFtIG9ial90eXBlIHN0cmluZywgbmFtZSBvZiBhbGlhcyB0YWJsZSB0byBtYW5hZ2UKLSAgICBAcGFyYW0gZGF0YSBkaWN0LCBjb2xsZWN0aW9uIG9mIGZpZWxkOnZhbHVlJ3MgZnJvbSBjb21tYW5kIGRlc2NyaXB0aW9uCi0gICAgIiIiCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfZGVsZXRlX2FsaWFzOiAiLCBvYmpfdHlwZSwgZGF0YQotCi0gICAgcGFyZW50X2lkID0gc2Ruc2guZ2V0X2N1cnJlbnRfbW9kZV9vYmooKQotCi0gICAga2V5ID0gbWkucGsob2JqX3R5cGUpCi0gICAgaWYga2V5IG5vdCBpbiBkYXRhOgotICAgICAgICBkZWxldGVfYWxpYXNfYnlfZmsob2JqX3R5cGUsIHBhcmVudF9pZCkKLSAgICBlbHNlOgotICAgICAgICBkZWxldGVfYWxpYXNfYnlfaWQob2JqX3R5cGUsIGRhdGFba2V5XSkKLQotCi1kZWYgY29tbWFuZF9jcmVhdGVfYWxpYXMob2JqX3R5cGUsIGRhdGEsIHJlc2VydmVkID0gTm9uZSwgZmFpbF9pZl9leGlzdHMgPSBGYWxzZSk6Ci0gICAgIiIiCi0gICAgQWN0aW9uIGZvciBjcmVhdGUtYWxpYXMKLQotICAgIEN1cnJlbnQgYWxpYXMgdGFibGVzIGluY2x1ZGUgaG9zdC1hbGlhcywgc3dpdGNoLWFsaWFzLCBwb3J0LWFsaWFzCi0KLSAgICBAcGFyYW0gb2JqX3R5cGUgc3RyaW5nLCBuYW1lIG9mIGFsaWFzIHRhYmxlIHRvIG1hbmFnZQotICAgIEBwYXJhbSBkYXRhIGRpY3QsIGNvbGxlY3Rpb24gb2YgZmllbGQ6dmFsdWUncyBmcm9tIHRoZSBjb21tYW5kIGRlc2NyaXB0aW9uCi0gICAgIiIiCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbW1hbmRfY3JlYXRlX2FsaWFzOiAiLCBvYmpfdHlwZSwgZGF0YSwgcmVzZXJ2ZWQsIGZhaWxfaWZfZXhpc3RzCi0KLSAgICBwYXJlbnRfb2JqX3R5cGUgPSBzZG5zaC5nZXRfY3VycmVudF9tb2RlX29ial90eXBlKCkKLSAgICBwYXJlbnRfaWQgPSBzZG5zaC5nZXRfY3VycmVudF9tb2RlX29iaigpCi0KLSAgICBrZXkgPSBtaS5wayhvYmpfdHlwZSkKLSAgICBpZiBrZXkgbm90IGluIGRhdGE6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRJbnRlcm5hbEVycm9yKCJBbGlhcyB0YWJsZSAnJXMnOiBkZXNjcmlwdGlvbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXNuJ3QgcG9wdWxhdGUgY29ycmVjdCAnJXMnIGZpZWxkIGFzIGRhdGEiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqX3R5cGUsIGtleSkpCi0gICAgYWxpYXNfdmFsdWUgPSBkYXRhW2tleV0KLSAgICAjCi0gICAgIyBEZXRlcm1pbmUgaWYgdGhlIGFsaWFzIG5hbWUgaXMgYWxsb3dlZC4KLSAgICBpZiBhbGlhc192YWx1ZSBpbiBzZG5zaC5yZXNlcnZlZF93b3JkczoKLSAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoJ3Jlc2VydmVkIG5hbWUgIiVzIiBpbiAiJXMiJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGFsaWFzX3ZhbHVlLCAnLCcuam9pbihzZG5zaC5yZXNlcnZlZF93b3JkcykpKQotICAgIGlmIHJlc2VydmVkIGFuZCB0eXBlKHJlc2VydmVkKSAhPSBsaXN0OgotICAgICAgICByZXNlcnZlZCA9IFtyZXNlcnZlZF0KLQotICAgIGlmIHJlc2VydmVkIGFuZCBhbGlhc192YWx1ZSBpbiByZXNlcnZlZDoKLSAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoJ3Jlc2VydmVkIG5hbWUgIiVzIiBpbiAiJXMiJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGFsaWFzX3ZhbHVlLCAnLCcuam9pbihyZXNlcnZlZCkpKQotCi0gICAgIyBXYWxrIHRoZSBmb3JlaWduIGtleSdzIGluIHRoZSAoYWxpYXMpIG9iai10eXBlLCBsb29raW5nCi0gICAgIyBmb3IgdGhlIHBhcmVudCByZWZlcmVuY2UuCi0KLSAgICBhbGlhc19mayA9IE5vbmUKLSAgICBvYmpfdHlwZV9mb3JlaWduX2tleXMgPSBtaS5vYmpfdHlwZV9mb3JlaWduX2tleXMob2JqX3R5cGUpCi0gICAgaWYgbGVuKG9ial90eXBlX2ZvcmVpZ25fa2V5cykgPT0gMToKLSAgICAgICAgYWxpYXNfZmsgPSBvYmpfdHlwZV9mb3JlaWduX2tleXNbMF0KLSAgICBlbHNlOgotICAgICAgICBmb3IgYWxpYXNfZm4gaW4gb2JqX3R5cGVfZm9yZWlnbl9rZXlzOgotICAgICAgICAgICAgKGZrX290LCBma19mbikgPSBtaS5mb3JlaWduX2tleV9yZWZlcmVuY2VzKG9ial90eXBlLCBhbGlhc19mbikKLSAgICAgICAgICAgIGlmIGZrX290ID09IHBhcmVudF9vYmpfdHlwZToKLSAgICAgICAgICAgICAgICBhbGlhc19mayA9IGFsaWFzX2ZuCi0KLSAgICBpZiBub3QgYWxpYXNfZms6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRJbnRlcm5hbEVycm9yKCJBbGlhcyB0YWJsZSAnJXMnIGhhcyBubyBmb3JlaWduIGtleSB0byAnJXMnIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9ial90eXBlLCBwYXJlbnRfb2JqX3R5cGUpKQotCi0gICAgdHJ5OgotICAgICAgICBzZG5zaC5nZXRfb2JqZWN0X2Zyb21fc3RvcmUob2JqX3R5cGUsIGFsaWFzX3ZhbHVlKQotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgcHJpbnQgImNvbW1hbmRfY3JlYXRlX2FsaWFzOiBkZWxldGUgIiwgb2JqX3R5cGUsIGFsaWFzX3ZhbHVlCi0gICAgICAgIGlmIGZhaWxfaWZfZXhpc3RzOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoIkludGVyZmFjZSBuYW1lICclcycgYWxyZWFkeSBpbiB1c2UgLSBjYW5ub3QgcmVhc3NpZ24iICUoYWxpYXNfdmFsdWUpKQotICAgICAgICBkZWxldGVfYWxpYXNfYnlfaWQob2JqX3R5cGUsIGFsaWFzX3ZhbHVlKQotICAgIGV4Y2VwdDoKLSAgICAgICAgcGFzcwotCi0gICAgIyBSZW1vdmUgb3RoZXIgZXhpc3RpbmcgYWxpYXMgZm9yIHRoZSBzYW1lIGZvcmVpZ24ga2V5Ci0gICAgIyAoaWU6IG9ubHkgb25lIGFsaWFzIHBlciBlYWNoIGl0ZW0sIHRoaXMgY291bGQgYmUgcmVsYXhlZCkKLSAgICAjIFhYWCBpbXByb3ZlIG1ldGhvZCBvZiBtYW5hZ2luZyBlcnJvcnMgaGVyZQotICAgIHRyeToKLSAgICAgICAgcm93cyA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKG9ial90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNfZmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhhY3QiKQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgIGVycm9ycyA9IHNkbnNoLnJlc3RfZXJyb3JfdG9fZGljdChlKQotICAgICAgICBwcmludCBzZG5zaC5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgIHJvd3MgPSBbXQotCi0gICAgZm9yIHJvdyBpbiByb3dzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWxldGVfYWxpYXNfYnlfaWQob2JqX3R5cGUsIHJvd1trZXldKQotICAgICAgICAgICAgaWYgcm93W2FsaWFzX2ZrXSAhPSBwYXJlbnRfaWQ6Ci0gICAgICAgICAgICAgICAgc2Ruc2gud2FybmluZygiUmVtb3ZlZCBhZGRpdGlvbmFsIGFsaWFzICclcyciCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBhbHNvIHJlZmVycyB0byAlcyAnJXMnIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocm93W2tleV0sIHBhcmVudF9vYmpfdHlwZSwgcGFyZW50X2lkKSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgaWYgc2Ruc2guZGVidWcgb3Igc2Ruc2guZGVidWdfYmFja3RyYWNlOgotICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotCi0gICAgIyBUaGlzIHNldCdzIHRoZSBmb3JlaWduIGtleSB0byBhbGxvdyB0aGUgY3JlYXRlIHRvIHN1Y2NlZWQKLSAgICBjX2RpY3QgPSB7Ci0gICAgICAgICAgICAgICAga2V5ICAgICAgOiBhbGlhc192YWx1ZSwKLSAgICAgICAgICAgICAgICBhbGlhc19mayA6IHBhcmVudF9pZCwKLSAgICAgICAgICAgICB9Ci0KLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiY29tbWFuZF9jcmVhdGVfYWxpYXM6IGNyZWF0ZSAiLCBvYmpfdHlwZSwgY19kaWN0Ci0gICAgcmVzdWx0ID0gc2Ruc2gucmVzdF9jcmVhdGVfb2JqZWN0KG9ial90eXBlLCBjX2RpY3QpCi0gICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgIHJlc3VsdCA9IHNkbnNoLnJlc3RfcXVlcnlfb2JqZWN0cyhvYmpfdHlwZSwgY19kaWN0KQotICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLQotICAgIHJldHVybiBOb25lCi0KLQotZGVmIGNvbW1hbmRfY3JlYXRlX3RhZyhvYmpfdHlwZSwgZGF0YSk6Ci0gICAgIiIiCi0gICAgb2JqX3R5cGUgbmVlZHMgdG8gYmUgb25lIG9mIHRoZSBvYmplY3RzIHdoaWNoIGltcGxlbWVudHMKLSAgICBhIHJlbGF0aW9uc2hpcCB0byAndGFnJywgZm9yIGV4YW1wbGU6ICB0YWctbWFjLW1hcHBpbmcKLSAgICAiIiIKLQotICAgIGl0ZW0gPSBzZG5zaC5nZXRfY3VycmVudF9tb2RlX29ial90eXBlKCkKLSAgICBma3MgPSBtaS5vYmpfdHlwZV9mb3JlaWduX2tleXMob2JqX3R5cGUpCi0gICAgZm9yIGZrIGluIGZrczoKLSAgICAgICAgKGZrX29iaiwgZmtfbmFtZSkgPSBtaS5mb3JlaWduX2tleV9yZWZlcmVuY2VzKG9ial90eXBlLCBmaykKLSAgICAgICAgaWYgZmtfb2JqID09IGl0ZW06Ci0gICAgICAgICAgICBicmVhawotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRTZW1hbnRpY0Vycm9yKCAidHlwZSBtYXBwaW5nICVzIGRvZXNuJ3QgaGF2ZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVsYXRpb25zaGlwIHRvIHRoZSBjdXJyZW50IG9iamVjdCAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKG9ial90eXBlLCBpdGVtKSkKLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJjb21tYW5kX2NyZWF0ZV90YWc6IGNyZWF0ZSAiLCBvYmpfdHlwZSwgZGF0YQotCi0gICAgdGFnX2FuZF92YWx1ZSA9IGRhdGFbJ3RhZyddLnNwbGl0KCc9JykKLSAgICBpZiBsZW4odGFnX2FuZF92YWx1ZSkgIT0gMjoKLSAgICAgICAgIyBkZWFsIHdpdGggdGFnX2FuZF92YWx1ZSdzICd2YT12Yj12Yy4uLicKLSAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZFNlbWFudGljRXJyb3IoInRhZyA8W3RhZy1uYW1lc3BhY2UuXW5hbWU+PTx2YWx1ZT4gIiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXNzb2NpYXRlIHRhZyB3aXRoIGhvc3QiKQotCi0gICAgdGFnX3BhcnRzID0gdGFnX2FuZF92YWx1ZVswXS5zcGxpdCgnLicpCi0gICAgaWYgbGVuKHRhZ19wYXJ0cykgPT0gMDoKLSAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZFNlbWFudGljRXJyb3IoInRhZyA8W3RhZy1uYW1lc3BhY2UuXW5hbWU+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBtdXN0IGhhdmUgYSBuYW1lIikKLSAgICBlbGlmIGxlbih0YWdfcGFydHMpID09IDE6Ci0gICAgICAgIHRhZ19uYW1lc3BhY2UgPSAiZGVmYXVsdCIKLSAgICAgICAgdGFnX25hbWUgPSB0YWdfcGFydHNbMF0KLSAgICBlbGlmIGxlbih0YWdfcGFydHMpID49IDI6Ci0gICAgICAgICMgdGhlIHRhZ19uYW1lIGlzIG5vdCBhbGxvd2VkIHRvIGhhdmUgJy4nIAotICAgICAgICAjIGNvbGxlY3QgYWxsIHRoZSAnLidzIHRvZ2V0aGVyIGludG8gdGhlIG5hbWVzcGFjZQotICAgICAgICB0YWdfbmFtZXNwYWNlID0gJy4nLmpvaW4odGFnX3BhcnRzWzotMV0pCi0gICAgICAgIHRhZ19uYW1lID0gdGFnX3BhcnRzWy0xXQotCi0gICAgdGFnX3ZhbHVlID0gdGFnX2FuZF92YWx1ZVsxXQotCi0gICAgIyBmaXJzdCBtYW5hZ2UgdGhlIHRhZyAuLi4gCi0gICAgdGFnX2RpY3QgPSB7IAotICAgICAgICAgICAgICAgJ25hbWVzcGFjZScgOiB0YWdfbmFtZXNwYWNlLAotICAgICAgICAgICAgICAgJ25hbWUnICAgICAgOiB0YWdfbmFtZSwKLSAgICAgICAgICAgICAgICd2YWx1ZScgICAgIDogdGFnX3ZhbHVlLAotICAgICAgICAgICAgICAgfSAgIAotCi0gICAgcXVlcnkgPSBzZG5zaC5yZXN0X3F1ZXJ5X29iamVjdHMoJ3RhZycsIHRhZ19kaWN0KQotICAgIHNkbnNoLmNoZWNrX3Jlc3RfcmVzdWx0KHF1ZXJ5KQotICAgIHRhZ19kaWN0WydwZXJzaXN0J10gPSBUcnVlCi0gICAgaWYgbGVuKHF1ZXJ5KSA9PSAwOgotICAgICAgICByZXN1bHQgPSBzZG5zaC5yZXN0X2NyZWF0ZV9vYmplY3QoJ3RhZycsIHRhZ19kaWN0KQotICAgICAgICBzZG5zaC5jaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgZWxpZiBsZW4ocXVlcnkpID09IDE6Ci0gICAgICAgIHVwZGF0ZSA9IHNkbnNoLnJlc3RfdXBkYXRlX29iamVjdCgndGFnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pLnBrKCd0YWcnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5WzBdW21pLnBrKCd0YWcnKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdfZGljdCkKLSAgICAgICAgc2Ruc2guY2hlY2tfcmVzdF9yZXN1bHQodXBkYXRlKQotCi0gICAgZGVsIHRhZ19kaWN0WydwZXJzaXN0J10KLSAgICBxdWVyeSA9IHNkbnNoLnJlc3RfcXVlcnlfb2JqZWN0cygndGFnJywgdGFnX2RpY3QpCi0gICAgc2Ruc2guY2hlY2tfcmVzdF9yZXN1bHQocXVlcnkpCi0gICAgdGFnX2lkID0gcXVlcnlbMF1bbWkucGsoJ3RhZycpXQotCi0gICAgIyBub3cgY3JlYXRlIHRoZSB0YWctbWFwcGluZwotICAgIHRhZ19kaWN0ID0geyAKLSAgICAgICAgICAgICAgIGZrICAgIDogc2Ruc2guZ2V0X2N1cnJlbnRfbW9kZV9vYmooKSwgIyBmayBmcm9tIGVhcmx5IGZvciBsb29wCi0gICAgICAgICAgICAgICAndGFnJyA6IHRhZ19pZCwKLSAgICAgICAgICAgICAgIH0gICAKLQotICAgIHF1ZXJ5ID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKG9ial90eXBlLCB0YWdfZGljdCkKLSAgICBzZG5zaC5jaGVja19yZXN0X3Jlc3VsdChxdWVyeSkKLSAgICBpZiBsZW4ocXVlcnkpID09IDA6Ci0gICAgICAgIHJlc3VsdCA9IHNkbnNoLnJlc3RfY3JlYXRlX29iamVjdChvYmpfdHlwZSwgdGFnX2RpY3QpCi0gICAgICAgIHNkbnNoLmNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLQotCi1kZWYgY29tbWFuZF9kZWxldGVfdGFnKG9ial90eXBlLCBkYXRhKToKLSAgICAiIiIKLSAgICBvYmpfdHlwZSBkZXNjcmliZXMgdGhlIHRhZy1YWFgtbWFwcGluZyB3aGljaCBpcyBnZXR0aW5nCi0gICAgbWFuYWdlZCwgZGF0YSBoYXMgdGhlIHRhZyAnc3RyaW5nJyB0byBkZWxldGUuCi0gICAgIiIiCi0gICAgaXRlbSA9IHNkbnNoLmdldF9jdXJyZW50X21vZGVfb2JqX3R5cGUoKQotICAgIGZrcyA9IG1pLm9ial90eXBlX2ZvcmVpZ25fa2V5cyhvYmpfdHlwZSkKLSAgICBmb3IgZmsgaW4gZmtzOgotICAgICAgICAoZmtfb2JqLCBma19uYW1lKSA9IG1pLmZvcmVpZ25fa2V5X3JlZmVyZW5jZXMob2JqX3R5cGUsIGZrKQotICAgICAgICBpZiBma19vYmogPT0gaXRlbToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZFNlbWFudGljRXJyb3IoICJ0eXBlIG1hcHBpbmcgJXMgZG9lc24ndCBoYXZlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZWxhdGlvbnNoaXAgdG8gdGhlIGN1cnJlbnQgb2JqZWN0ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAob2JqX3R5cGUsIGl0ZW0pKQotCi0gICAgaWYgJ3RhZycgbm90IGluIGRhdGE6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRTZW1hbnRpY0Vycm9yKCdUYWcgdmFsdWUgbWlzc2luZycpCi0KLSAgICB0YWcgPSBkYXRhWyd0YWcnXQotICAgIG5hbWVfYW5kX3ZhbHVlID0gdGFnLnNwbGl0KCc9JykKLQotICAgIG5hbWVfcGFydCA9IG5hbWVfYW5kX3ZhbHVlWzBdLnNwbGl0KCcuJykKLSAgICBpZiBsZW4obmFtZV9wYXJ0KSA9PSAxOgotICAgICAgICBuYW1lc3BhY2UgPSAnZGVmYXVsdCcKLSAgICAgICAgbmFtZSA9IG5hbWVfcGFydFswXQotICAgIGVsaWYgbGVuKG5hbWVfcGFydCkgPj0gMjoKLSAgICAgICAgbmFtZXNwYWNlID0gJy4nLmpvaW4obmFtZV9wYXJ0WzotMV0pCi0gICAgICAgIG5hbWUgPSBuYW1lX3BhcnRbLTFdCi0KLSAgICB2YWx1ZSA9IG5hbWVfYW5kX3ZhbHVlWzFdCi0gICAgcGtfdmFsdWUgPSBzZG5zaC51bmlxdWVfa2V5X2Zyb21fbm9uX3VuaXF1ZShbbmFtZXNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Ruc2guZ2V0X2N1cnJlbnRfbW9kZV9vYmooKV0pCi0gICAgdHJ5OgotICAgICAgICBzZG5zaC5nZXRfb2JqZWN0X2Zyb21fc3RvcmUob2JqX3R5cGUsIHBrX3ZhbHVlKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRTZW1hbnRpY0Vycm9yKCclcyBObyBzdWNoIHRhZyAlcycgJSAob2JqX3R5cGUsIHRhZykpCi0KLSAgICBzZG5zaC5yZXN0X2RlbGV0ZV9vYmplY3Qob2JqX3R5cGUsIHBrX3ZhbHVlKQotCi0gICAgIyB3aXRoIHRoYXQgZW50cnkgcmVtb3ZlZCwgY2hlY2sgdG8gc2VlIGlmIGFueSBvdGhlcgotICAgICMgZm9yZWlnbiBrZXlzIGFzc29jYWl0ZWQgd2l0aCBjbGFzcyBUYWcgZXhpc3QuCi0KLSAgICBma192YWx1ZSA9IHNkbnNoLnVuaXF1ZV9rZXlfZnJvbV9ub25fdW5pcXVlKFtuYW1lc3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV0pCi0KLSAgICBmb3IgdGFnX2ZpZWxkcyBpbiBtaS5mb3JlaWduX2tleV94cmVmWyd0YWcnXToKLSAgICAgICAgZm9yIChma19vYmpfdHlwZSwgZmtfbmFtZSkgaW4gbWkuZm9yZWlnbl9rZXlfeHJlZlsndGFnJ11bdGFnX2ZpZWxkc106Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoZmtfb2JqX3R5cGUsIGZrX25hbWUsIGZrX3ZhbHVlKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2Ruc2gucmVzdF9kZWxldGVfb2JqZWN0KCd0YWcnLCBma192YWx1ZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRTZW1hbnRpY0Vycm9yKCdiYXNlIHRhZyBtaXNzaW5nJyAlIGZrX3ZhbHVlKQotCi0KLWRlZiBjb21tYW5kX3Jlc3RfcG9zdF9kYXRhKHBhdGgsIGRhdGE9Tm9uZSwgdmVyYj0nUFVUJyk6Ci0gICAgIiIiCi0gICAgIiIiCi0gICAgdXJsID0gJ2h0dHA6Ly8lcy9yZXN0L3YxLyVzJyAlIChzZG5zaC5jb250cm9sbGVyLCBwYXRoKQotICAgIHJlc3VsdCA9IHNkbnNoLnJlc3RfcG9zdF9yZXF1ZXN0KHVybCwgZGF0YSwgdmVyYikKLSAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgY29tbWFuZF9jbGlfdmFyaWFibGVzX3NldCh2YXJpYWJsZSwgdmFsdWUsIGRhdGEpOgotICAgIGdsb2JhbCBzZG5zaAotCi0gICAgaWYgdmFyaWFibGUgPT0gJ2RlYnVnJzoKLSAgICAgICAgcHJpbnQgJyoqKioqICVzIGNsaSBkZWJ1ZyAqKioqKicgJSBcCi0gICAgICAgICAgICAgICAgKCdFbmFibGVkJyBpZiB2YWx1ZSBlbHNlICdEaXNhYmxlZCcpCi0gICAgICAgIHNkbnNoLmRlYnVnID0gdmFsdWUKLSAgICBlbGlmIHZhcmlhYmxlID09ICdjbGktYmFja3RyYWNlJzoKLSAgICAgICAgcHJpbnQgJyoqKioqICVzIGNsaSBkZWJ1ZyBiYWNrdHJhY2UgKioqKionICUgXAotICAgICAgICAgICAgICAgICgnRW5hYmxlZCcgaWYgdmFsdWUgZWxzZSAnRGlzYWJsZWQnKQotICAgICAgICBzZG5zaC5kZWJ1Z19iYWNrdHJhY2UgPSB2YWx1ZQotICAgIGVsaWYgdmFyaWFibGUgPT0gJ2NsaS1iYXRjaCc6Ci0gICAgICAgIHByaW50ICcqKioqKiAlcyBjbGkgYmF0Y2ggbW9kZSAqKioqKicgJSBcCi0gICAgICAgICAgICAgICAgKCdFbmFibGVkJyBpZiB2YWx1ZSBlbHNlICdEaXNhYmxlZCcpCi0gICAgICAgIHNkbnNoLmJhdGNoID0gdmFsdWUKLSAgICBlbGlmIHZhcmlhYmxlID09ICdkZXNjcmlwdGlvbic6Ci0gICAgICAgIHByaW50ICcqKioqKiAlcyBjb21tYW5kIGRlc2NyaXB0aW9uIG1vZGUgKioqKionICUgXAotICAgICAgICAgICAgICAgICgnRW5hYmxlZCcgaWYgdmFsdWUgZWxzZSAnRGlzYWJsZWQnKQotICAgICAgICBzZG5zaC5kZXNjcmlwdGlvbiA9IHZhbHVlCi0gICAgZWxpZiB2YXJpYWJsZSA9PSAncmVzdCc6Ci0gICAgICAgIGlmICdyZWNvcmQnIGluIGRhdGEgYW5kIHZhbHVlOgotICAgICAgICAgICAgcHJpbnQgJyoqKioqIEVhbmJsZWQgcmVzdCByZWNvcmQgbW9kZSAlcyAqKioqKicgJSBcCi0gICAgICAgICAgICAgICAgKGRhdGFbJ3JlY29yZCddKQotICAgICAgICAgICAgdXJsX2NhY2hlLnJlY29yZChkYXRhWydyZWNvcmQnXSkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBwcmludCAnKioqKiogJXMgZGlzcGxheSByZXN0IG1vZGUgKioqKionICUgXAotICAgICAgICAgICAgICAgICgnRW5hYmxlZCcgaWYgdmFsdWUgZWxzZSAnRGlzYWJsZWQnKQotICAgICAgICBpZiAnZGV0YWlsJyBpbiBkYXRhIGFuZCBkYXRhWydkZXRhaWwnXSA9PSAnZGV0YWlscyc6Ci0gICAgICAgICAgICBpZiB2YWx1ZSA9PSBUcnVlOgotICAgICAgICAgICAgICAgIHNkbnNoLmRpc3BseV9yZXN0X2RldGFpbCA9IHZhbHVlCi0gICAgICAgICAgICAgICAgc2Ruc2guc3RvcmUuZGlzcGxheV9yZXBseV9tb2RlKHZhbHVlKQotICAgICAgICBzZG5zaC5kaXNwbGF5X3Jlc3QgPSB2YWx1ZQotICAgICAgICBzZG5zaC5zdG9yZS5kaXNwbGF5X21vZGUodmFsdWUpCi0gICAgICAgIGlmIHZhbHVlID09IEZhbHNlOgotICAgICAgICAgICAgc2Ruc2guZGlzcGx5X3Jlc3RfZGV0YWlsID0gdmFsdWUKLSAgICAgICAgICAgIHNkbnNoLnN0b3JlLmRpc3BsYXlfcmVwbHlfbW9kZSh2YWx1ZSkKLSAgICAgICAgICAgIHVybF9jYWNoZS5yZWNvcmQoTm9uZSkKLSAgICBlbGlmIHZhcmlhYmxlID09ICdzZXQnOgotICAgICAgICBpZiAnbGVuZ3RoJyBpbiBkYXRhOgotICAgICAgICAgICAgc2Ruc2gubGVuZ3RoID0gdXRpZi50cnlfaW50KGRhdGFbJ2xlbmd0aCddKQotCi0KLWRlZiBjb21tYW5kX2NsaV9zZXQodmFyaWFibGUsIGRhdGEpOgotICAgIGNvbW1hbmRfY2xpX3ZhcmlhYmxlc19zZXQodmFyaWFibGUsIFRydWUsIGRhdGEpCi0KLWRlZiBjb21tYW5kX2NsaV91bnNldCh2YXJpYWJsZSwgZGF0YSk6Ci0gICAgY29tbWFuZF9jbGlfdmFyaWFibGVzX3NldCh2YXJpYWJsZSwgRmFsc2UsIGRhdGEpCi0KLQotZGVmIGNvbW1hbmRfc2hlbGxfY29tbWFuZChzY3JpcHQpOgotCi0gICAgZGVmIHNoZWxsKGFyZ3MpOgotICAgICAgICBzdWJwcm9jZXNzLmNhbGwoWyJlbnYiLCAiU0hFTEw9L2Jpbi9iYXNoIiwgIi9iaW4vYmFzaCJdICsgbGlzdChhcmdzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1vcy5lbnZpcm9uLmdldCgiSE9NRSIpKQotICAgICAgICBwcmludAotCi0gICAgcHJpbnQgIlxuKioqKiogV2FybmluZzogdGhpcyBpcyBhIGRlYnVnIGNvbW1hbmQgLSB1c2UgY2F1dGlvbiEgKioqKioiCi0gICAgaWYgc2NyaXB0ID09ICdiYXNoJzoKLSAgICAgICAgcHJpbnQgJyoqKioqIFR5cGUgImV4aXQiIG9yIEN0cmwtRCB0byByZXR1cm4gdG8gdGhlIENMSSAqKioqKlxuJwotICAgICAgICBzaGVsbChbIi1sIiwgIi1pIl0pCi0gICAgZWxpZiBzY3JpcHQgPT0gJ3B5dGhvbic6Ci0gICAgICAgIHByaW50ICcqKioqKiBUeXBlICJleGl0KCkiIG9yIEN0cmwtRCB0byByZXR1cm4gdG8gdGhlIENMSSAqKioqKlxuJwotICAgICAgICBzaGVsbChbIi1sIiwgIi1jIiwgInB5dGhvbiJdKQotICAgIGVsaWYgc2NyaXB0ID09ICdjYXNzYW5kcmEtY2xpJzoKLSAgICAgICAgcHJpbnQgJyoqKioqIFR5cGUgImV4aXQiIG9yIEN0cmwtRCB0byByZXR1cm4gdG8gdGhlIENMSSAqKioqKlxuJwotICAgICAgICBzaGVsbChbIi1sIiwgIi1jIiwgIi9vcHQvc2RucGxhdGZvcm0vZGIvYmluL2Nhc3NhbmRyYS1jbGkgLS1ob3N0IGxvY2FsaG9zdCJdKQotICAgIGVsaWYgc2NyaXB0ID09ICduZXRjb25maWcnOgotICAgICAgICBpZiBub3QgcmUubWF0Y2goIi9kZXYvdHR5Uz9bXGRdKyQiLCBvcy50dHluYW1lKDApKToKLSAgICAgICAgICAgIHByaW50ICcqKioqKiBZb3Ugc2VlbSB0byBiZSBjb25uZWN0ZWQgdmlhIFNTSCBvciBhbm90aGVyIHJlbW90ZSBwcm90b2NvbDsnCi0gICAgICAgICAgICBwcmludCAnKioqKiogcmVjb25maWd1cmluZyB0aGUgbmV0d29yayBpbnRlcmZhY2UgbWF5IGRpc3J1cHQgdGhlIGNvbm5lY3Rpb24hJwotICAgICAgICBwcmludCAnXG4oUHJlc3MgQ29udHJvbC1DIG5vdyB0byBsZWF2ZSB0aGUgbmV0d29yayBjb25maWd1cmF0aW9uIHVuY2hhbmdlZClcbicKLSAgICAgICAgc3VicHJvY2Vzcy5jYWxsKFsic3VkbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImVudiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlNIRUxMPS9iaW4vYmFzaCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi9vcHQvc2RucGxhdGZvcm0vc3lzL2Jpbi9ic2NuZXRjb25maWciLAotICAgICAgICAgICAgICAgICAgICAgICAgICJldGgwIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3dkPW9zLmVudmlyb24uZ2V0KCJIT01FIikpCi0gICAgZWxzZToKLSAgICAgICAgIyBYWFggcG9zc2libHkgcnVuIHRoZSBzY3JpcHQgZGlyZWN0bHk/Ci0gICAgICAgIHByaW50ICJVbmtub3duIGRlYnVnIGNob2ljZSAlcyIgJSBzY3JpcHQKLQotCi1kZWYgY29tbWFuZF9wcm9tcHRfdXBkYXRlKCk6Ci0gICAgIiIiCi0gICAgQWN0aW9uIHRvIHJlY29tcHV0ZSB0aGUgcHJvbXB0LCB1c2VkIHdoZW4gdGhlcmUncyBzb21lIHBvc3NpYmlsaXR5Ci0gICAgdGhlIHByb21wdCBoYXMgY2hhbmdlcyBhZnRlciBzb21lIG90aGVyIGFjdGlvbiAoaG9zdG5hbWUgdXBkYXRlLCBmb3IgZXhhbXBsZSkKLSAgICAiIiIKLSAgICBzZG5zaC5zZXRfY29udHJvbGxlcl9mb3JfcHJvbXB0KCkKLSAgICBzZG5zaC51cGRhdGVfcHJvbXB0KCkKLQotZGVmIGNvbW1hbmRfY29udHJvbGxlcl9kZWNvbW1pc3Npb24oZGF0YSk6Ci0gICAgIiIiCi0gICAgRGVjb21taXNzaW9uIHRoZSBjb250cm9sbGVyIHVzaW5nIHRoZSBSRVNUIEFQSQotICAgICIiIgotICAgIGlkID0gZGF0YS5nZXQoJ2lkJykKLSAgICBjb25maXJtX3JlcXVlc3QoIkRlY29tbWlzc2lvbiBjb250cm9sbGVyICclcyc/XG4oeWVzIHRvIGNvbnRpbnVlKSAiICUgaWQpCi0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICB1cmwgPSAnaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL2hhL2RlY29tbWlzc2lvbicgJSAoc2Ruc2guY29udHJvbGxlcikKLSAgICAgICAgcmVzdWx0ID0gc2Ruc2gucmVzdF9wb3N0X3JlcXVlc3QodXJsLCB7ImlkIjogaWR9LCAnUFVUJykKLSAgICAgICAgc3RhdHVzID0ganNvbi5sb2FkcyhyZXN1bHQpCi0KLSAgICAgICAgaWYgKHN0YXR1c1snc3RhdHVzJ10gPT0gJ09LJykgYW5kIHN0YXR1c1snZGVzY3JpcHRpb24nXS5lbmRzd2l0aCgnaXMgYWxyZWFkeSBkZWNvbW1pc3Npb25lZCcpID09IFRydWU6Ci0gICAgICAgICAgICBwcmludCAnRGVjb21taXNzaW9uIGZpbmlzaGVkJwotICAgICAgICAgICAgcHJpbnQKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCAnRGVjb21taXNzaW9uIGluIHByb2dyZXNzJwotICAgICAgICAgICAgCi0gICAgICAgIHRpbWUuc2xlZXAoMTApCi0KLWRlZiBjb21tYW5kX2NvbnRyb2xsZXJfdXBncmFkZShkYXRhID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgVXBncmFkZSB0aGUgY29udHJvbGxlciB1c2luZyB0aGUgUkVTVCBBUEkKLSAgICAiIiIKLQotICAgIGZvcmNlID0gJ2ZvcmNlJyBpbiBkYXRhCi0gICAgZGV0YWlscyA9ICdkZXRhaWxzJyBpbiBkYXRhCi0KLSAgICBpZiBmb3JjZToKLSAgICAgICAgcHJpbnQgIldBUk5JTkc6IElnbm9yaW5nIGFueSB2YWxpZGF0aW9uIGVycm9ycyBkdXJpbmcgdXBncmFkZSIKLSAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL3VwZ3JhZGUvaW1hZ2UtbmFtZSIgJSBzZG5zaC5jb250cm9sbGVyCi0gICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdCh1cmwpCi0gICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgIGluYW1lID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgaWYgKGluYW1lWydmaWxlJ10gaXMgTm9uZSBvciBpbmFtZVsnZmlsZSddID09ICIiKToKLSAgICAgICAgcHJpbnQgIkVycm9yOiBObyB1cGdyYWRlIGltYWdlIHByZXNlbnQuIgotICAgICAgICBwcmludCAiIgotICAgICAgICBwcmludCAiIiJUbyBwZXJmb3JtIHVwZ3JhZGUsIGFuIHVwZ3JhZGUgaW1hZ2UgcGFja2FnZSBuZWVkcyB0byBiZSB1cGxvYWRlZCAod2l0aCBzY3ApIHRvIHRoZSBjb250cm9sbGVyJ3MgXCJpbWFnZXNcIiB1c2VyLiIiIgotICAgICAgICBwcmludCAiIiJVcGdyYWRlIGltYWdlIHBhY2thZ2UgaXMgYSBmaWxlIHdpdGggbmFtZSBvZiBmb3JtYXQgXCJ1cGdyYWRlLVlZWVkuTU0uREQuWFhYWC5wa2dcIi4iIiIKLSAgICAgICAgcHJpbnQgIiIKLSAgICAgICAgcHJpbnQgIkZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRvIHByZXBhcmUgdXBncmFkZSBmb3IgY29udHJvbGxlciB3aXRoIElQIGFkZHJlc3MgMTkyLjE2OC42Ny4xNDE6IgotICAgICAgICBwcmludCAic2NwICRwYXRoL3VwZ3JhZGUtMjAxMy4wMi4xMy4wOTIxLnBrZyBpbWFnZXNAMTkyLjE2OC42Ny4xNDE6IgotICAgICAgICBwcmludCAiIgotICAgICAgICByZXR1cm4KLQotICAgIGNvbmZpcm1fcmVxdWVzdCgiVXBncmFkZSBjb250cm9sbGVyIGZyb20gaW1hZ2UgJyVzJz9cbih5ZXMgdG8gY29udGludWUpICIKLSAgICAgICAgICAgICAgICAgICAgJSBpbmFtZVsnZmlsZSddKQotICAgIAotICAgIHVybCA9ICJodHRwOi8vJXMvcmVzdC92MS9zeXN0ZW0vdXBncmFkZS9leHRyYWN0LWltYWdlLW1hbmlmZXN0IiAlIHNkbnNoLmNvbnRyb2xsZXIKLSAgICByZXN1bHQgPSBzZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHVybCkKLSAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgbWFuaWZlc3QgPSBqc29uLmxvYWRzKHJlc3VsdCkKLQotICAgIHByaW50ICJFeGVjdXRpbmcgdXBncmFkZS4uLiIKLSAgICBmb3Igc3RlcCBpbiBtYW5pZmVzdDoKLSAgICAgICAgcHJpbnQgIiVzIC0gJXMiICUgKHN0ZXBbJ3N0ZXAnXSwgc3RlcFsnZGVzY3JpcHRpb24nXSkKLSAgICAgICAgdXJsID0gJ2h0dHA6Ly8lcy9yZXN0L3YxL3N5c3RlbS91cGdyYWRlL2V4ZWN1dGUtdXBncmFkZS1zdGVwJyAlIFwKLSAgICAgICAgICAgIChzZG5zaC5jb250cm9sbGVyKQotICAgICAgICByZXN1bHQgPSBzZG5zaC5yZXN0X3Bvc3RfcmVxdWVzdCh1cmwsIHsic3RlcCI6IHN0ZXBbJ3N0ZXAnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltYWdlTmFtZSI6IGluYW1lWydmaWxlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JjZSI6IGZvcmNlfSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQVVQnKQotICAgICAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgICAgIHN0YXR1cyA9IGpzb24ubG9hZHMocmVzdWx0KQotICAgICAgICAKLSAgICAgICAgaWYgKHN0YXR1c1snc3RhdHVzJ10gPT0gIk9LIik6Ci0gICAgICAgICAgICBwcmludCAiICBTdWNjZWVkZWQiCi0gICAgICAgICAgICBpZiBkZXRhaWxzOgotICAgICAgICAgICAgICAgIHByaW50ICJcbkRldGFpbGVkIG91dHB1dDoiCi0gICAgICAgICAgICAgICAgcHJpbnQgc3RhdHVzWydkZXNjcmlwdGlvbiddCi0gICAgICAgICAgICAgICAgcHJpbnQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50ICIgIEZhaWxlZCB0byBleGVjdXRlIHVwZ3JhZGUgc3RlcCAlZCIgJSBzdGVwWydzdGVwJ10KLSAgICAgICAgICAgIHByaW50ICJcbkRldGFpbGVkIG91dHB1dDoiCi0gICAgICAgICAgICBwcmludCBzdGF0dXNbJ2Rlc2NyaXB0aW9uJ10KLSAgICAgICAgICAgIHByaW50Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgIHByaW50ICIiIkNvbnRyb2xsZXIgbm9kZSB1cGdyYWRlIGNvbXBsZXRlLgotVXBncmFkZSB3aWxsIG5vdCB0YWtlIGVmZmVjdCB1bnRpbCBzeXN0ZW0gaXMgcmVib290ZWQuIFVzZSAncmVsb2FkJyB0bwotcmVib290IHRoaXMgY29udHJvbGxlciBub2RlLiBUbyByZXZlcnQsIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgaW1hZ2UgCi1mcm9tIHRoZSBib290IG1lbnUiIiIKLQotZGVmIGNvbW1hbmRfY2x1c3Rlcl9jb25maWdfcm9sbGJhY2soZGF0YSk6Ci0gICAgcGF0aCA9ICcnCi0gICAgaWYgZGF0YS5nZXQoJ2RpcicpID09ICdpbWFnZXM6Ly8nOgotICAgICAgICBwYXRoICs9ICcvaG9tZS9pbWFnZXMvJwotICAgIGVsaWYgZGF0YS5nZXQoJ2RpcicpID09ICdzYXZlZC1jb25maWdzOi8vJzoKLSAgICAgICAgcGF0aCArPSAnL29wdC9zZG5wbGF0Zm9ybS9ydW4vc2F2ZWQtY29uZmlncy8nCi0gICAgcGF0aCArPSBkYXRhLmdldCgnZmlsZScpCi0KLSAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL2hhL3JvbGUiICUgc2Ruc2guY29udHJvbGxlcgotICAgIHJlc3VsdCA9IHNkbnNoLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsLCB1c2VfY2FjaGUgPSBGYWxzZSkKLSAgICBoYV9yb2xlID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgaWYgaGFfcm9sZVsncm9sZSddICE9ICdNQVNURVInOgotICAgICAgICBwcmludCAiQ29tbWFuZCBjYW4gb25seSBiZSBydW4gb24gTWFzdGVyIgotICAgICAgICByZXR1cm4KLSAgIAotICAgIGNvbW1hbmRfbGVnYWN5X2NsaSgnY29weScsIHsnZGVzdCc6ICdmaWxlOi8vcnVubmluZy1jb25maWctY29weScsICdzb3VyY2UnOiAncnVubmluZy1jb25maWcnfSkKLSAgICBwcmludCAiSU5GTzogQ2hlY2tpbmcgY29uZmlnICclcyciICUgcGF0aAotICAgIHVybCA9ICJodHRwOi8vJXMvcmVzdC92MS9zeXN0ZW0vcm9sbGJhY2svZGlmZmNvbmZpZyIgJSBzZG5zaC5jb250cm9sbGVyCi0gICAgcmVzdWx0ID0gc2Ruc2gucmVzdF9wb3N0X3JlcXVlc3QodXJsLCB7ImNvbmZpZy0xIjogIi9vcHQvc2RucGxhdGZvcm0vcnVuL3NhdmVkLWNvbmZpZ3MvcnVubmluZy1jb25maWctY29weSIsICJjb25maWctMiI6IHBhdGh9LCAnUFVUJykKLSAgICBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgaWYganNvbi5sb2FkcyhyZXN1bHQpWydvdXQnXS5zdGFydHN3aXRoKCdGb3VuZCBkaWZmZXJlbmNlcycpOgotICAgICAgICBwcmludCBqc29uLmxvYWRzKHJlc3VsdClbJ291dCddCi0gICAgICAgIHByaW50ICJSb2xsYmFjayBhYm9ydGVkIgotICAgICAgICByZXR1cm4KLSAgICAgICAgCi0gICAgdXJsID0gImh0dHA6Ly8lcy9yZXN0L3YxL3N5c3RlbS9jb250cm9sbGVyIiAlIHNkbnNoLmNvbnRyb2xsZXIKLSAgICByZXN1bHQgPSBzZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHVybCwgdXNlX2NhY2hlID0gRmFsc2UpCi0gICAgY29udHJvbGxlcl9pZCA9IGpzb24ubG9hZHMocmVzdWx0KVsnaWQnXQotCi0gICAgdXJsID0gImh0dHA6Ly8lcy9yZXN0L3YxL21vZGVsL2NvbnRyb2xsZXItaW50ZXJmYWNlP2NvbnRyb2xsZXI9JXMiICUgKHNkbnNoLmNvbnRyb2xsZXIsIGNvbnRyb2xsZXJfaWQpCi0gICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdCh1cmwpCi0gICAgbG9jYWxfaWZhY2UgPSBqc29uLmxvYWRzKHJlc3VsdClbMF1bJ2Rpc2NvdmVyZWQtaXAnXQotICAgIAotICAgIHVybCA9ICJodHRwOi8vJXMvcmVzdC92MS9tb2RlbC9jb250cm9sbGVyLWludGVyZmFjZSIgJSBzZG5zaC5jb250cm9sbGVyCi0gICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdCh1cmwpCi0gICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgIGlmYWNlcyA9IGpzb24ubG9hZHMocmVzdWx0KQotCi0gICAgbm9kZUNvdW50ID0gbGVuKGlmYWNlcykKLSAgICBjdXRvdmVyID0gbm9kZUNvdW50LzIKLSAgICBpZiBub2RlQ291bnQlMiA9PSAxOgotICAgICAgICBjdXRvdmVyID0gY3V0b3ZlciArIDEKLSAgICAKLSAgICByb2xsYmFja2VkTm9kZXMgPSBbXQotCi0gICAgIyByZW1vdmUgYW5kIGFkZCBvYmplY3QgZm9yIGxvY2FsIG5vZGUgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdAotICAgIGZvciBpbmRleCwgaWZhY2UgaW4gZW51bWVyYXRlKGlmYWNlcyk6Ci0gICAgICAgIGlmIGlmYWNlWydkaXNjb3ZlcmVkLWlwJ10gPT0gbG9jYWxfaWZhY2U6Ci0gICAgICAgICAgICBicmVhawotICAgIGRlbCBpZmFjZXNbaW5kZXhdCi0gICAgaWZhY2VzLmFwcGVuZChpZmFjZSkKLQotICAgIGNvbmZpZz1vcGVuKHBhdGgsICdyJykucmVhZCgpCi0gICAgdXJsID0gJ2h0dHA6Ly8lcy9yZXN0L3YxL3N5c3RlbS91cGxvYWQtZGF0YScgJSBpZmFjZXNbMF1bJ2Rpc2NvdmVyZWQtaXAnXQotICAgIHJlc3VsdCA9IHNkbnNoLnJlc3RfcG9zdF9yZXF1ZXN0KHVybCwgeyJkYXRhIjogY29uZmlnLCAiZHN0IiA6ICIvdG1wL3JvbGxiYWNrLmNvbmYifSwgJ1BVVCcpCi0gICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgIAotICAgIHdoaWxlIGxlbihpZmFjZXMpID4gMDoKLSAgICAgICAgaWYgc2Ruc2guYmF0Y2ggPT0gRmFsc2U6Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGNvbmZpcm0gPSByYXdfaW5wdXQoIlJvbGxiYWNrIGNvbnRyb2xsZXIgYXQgJyVzJy4gW3llcy9ub10gPyIgJSBpZmFjZXNbMF1bJ2Rpc2NvdmVyZWQtaXAnXSkKLSAgICAgICAgICAgICAgICBpZiBjb25maXJtLmxvd2VyKCkgPT0gJ24nIG9yIGNvbmZpcm0ubG93ZXIoKSA9PSAnbm8nOgotICAgICAgICAgICAgICAgICAgICBpZiBsZW4ocm9sbGJhY2tlZE5vZGVzKSA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIklORk86IFJvbGxiYWNrIGFib3J0ZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBwcmludCAiSU5GTzogVW5kb2luZyBSb2xsYmFjayBvbiBwcmV2aW91c2x5IHJvbGxiYWNrZWQgbm9kZXMiCi0gICAgICAgICAgICAgICAgICAgIGZvciBub2RlIGluIHJvbGxiYWNrZWROb2RlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJJTkZPOiBSZXNldHRpbmcgZGF0YWJhc2Ugb24gJyVzJyIgJSBub2RlWydkaXNjb3ZlcmVkLWlwJ10KLSAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICdodHRwOi8vJXMvcmVzdC92MS9zeXN0ZW0vcmVzZXRic2MnICUgKG5vZGVbJ2Rpc2NvdmVyZWQtaXAnXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNkbnNoLnJlc3RfcG9zdF9yZXF1ZXN0KHVybCwge30sICdQVVQnKQotICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIklORk86IFJlYm9vdGluZyAnJXMnIiAlIG5vZGVbJ2Rpc2NvdmVyZWQtaXAnXQotICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gJ2h0dHA6Ly8lcy9yZXN0L3YxL3N5c3RlbS9yZWxvYWQnICUgKG5vZGVbJ2Rpc2NvdmVyZWQtaXAnXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNkbnNoLnJlc3RfcG9zdF9yZXF1ZXN0KHVybCwge30sICdHRVQnKQotICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHJvbGxiYWNrZWROb2RlcykgPj0gY3V0b3ZlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZGVsZXRlIHRoZSBSRUpFQ1QgcnVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHVybD0iaHR0cDovL2xvY2FsaG9zdC9yZXN0L3YxL21vZGVsL2ZpcmV3YWxsLXJ1bGU/cG9ydD02NjMzIgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2Ruc2gucmVzdF9wb3N0X3JlcXVlc3QodXJsLCB7fSwgJ0RFTEVURScpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGVuYWJsZSBhbGxvdyBvcGVuZmxvdyBvbiBhbGwgY29udHJvbGxlcnMgbm90IHJvbGxiYWNrZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly9sb2NhbGhvc3QvcmVzdC92MS9tb2RlbC9maXJld2FsbC1ydWxlIgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGlmYWNlIGluIGlmYWNlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa19pZCA9ICclc3xFdGhlcm5ldHwwJyAlIGlmYWNlWydjb250cm9sbGVyJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogJ2FsbG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSc6IHBrX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjLWlwJzogJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3J0JzogJzY2MzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvdG8nOiAndGNwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZycnAtaXAnOiAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIklORk86IHJlLWFsbG93IG9wZW5mbG93IG9uICVzIiAlIGlmYWNlWydkaXNjb3ZlcmVkLWlwJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZG5zaC5yZXN0X3Bvc3RfcmVxdWVzdCh1cmwsIGRhdGEsICdQVVQnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIHByaW50ICJSb2xsYmFjayBhYm9ydGVkIgotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBlbGlmIGNvbmZpcm0ubG93ZXIoKSA9PSAneScgb3IgY29uZmlybS5sb3dlcigpID09ICd5ZXMnOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAKLSAgICAgICAgdXJsID0gJ2h0dHA6Ly8lcy9yZXN0L3YxL3N5c3RlbS9yb2xsYmFjay9jb25maWcnICUgKGlmYWNlc1swXVsnZGlzY292ZXJlZC1pcCddKQotICAgICAgICByZXN1bHQgPSBzZG5zaC5yZXN0X3Bvc3RfcmVxdWVzdCh1cmwsIHsicGF0aCI6ICIvdG1wL3JvbGxiYWNrLmNvbmYifSwgJ1BVVCcpCi0gICAgICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLSAgICAgICAgdGltZS5zbGVlcCgxMCkKLSAgICAgICAKLSAgICAgICAgcHJpbnQgIklORk86IFJlYm9vdGluZyAiLCBpZmFjZXNbMF1bJ2Rpc2NvdmVyZWQtaXAnXQotICAgICAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL3JlbG9hZCIgJSBpZmFjZXNbMF1bJ2Rpc2NvdmVyZWQtaXAnXQotICAgICAgICByZXN1bHQgPSBzZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHVybCkKLSAgICAgICAgCi0gICAgICAgIGlmIGlmYWNlc1swXVsnZGlzY292ZXJlZC1pcCddID09IGxvY2FsX2lmYWNlOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgCi0gICAgICAgIHByaW50ICJJTkZPOiBXYWl0aW5nIGZvciAlcyB0byBjb21lIGJhY2sgdXAiICUgaWZhY2VzWzBdWydkaXNjb3ZlcmVkLWlwJ10KLSAgICAgICAgdXJsID0gImh0dHA6Ly8lcy9yZXN0L3YxL3N5c3RlbS9oYS9yb2xlIiAlIGlmYWNlc1swXVsnZGlzY292ZXJlZC1pcCddCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKDMwKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNkbnNoLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsLCB1c2VfY2FjaGUgPSBGYWxzZSkKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBqc29uLmxvYWRzKHJlc3VsdCkKLSAgICAgICAgICAgICAgICBpZiBzdGF0dXNbJ3JvbGUnXSA9PSAnU0xBVkUnIG9yIHN0YXR1c1sncm9sZSddID09ICdNQVNURVInOgotICAgICAgICAgICAgICAgICAgICBwcmludCAiSU5GTzogUm9sbGJhY2sgY29tcGxldGUgb24gJyVzJyIgJSBpZmFjZXNbMF1bJ2Rpc2NvdmVyZWQtaXAnXQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHByaW50ICJJTkZPOiBXYWl0aW5nIGZvciAzMCBzZWNvbmRzIiAKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBwcmludCAiSU5GTzogV2FpdGluZyBmb3IgMzAgc2Vjb25kcyIgCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAKLSAgICAgICAgaWZhY2UgPSBpZmFjZXMucG9wKDApCi0gICAgICAgIHJvbGxiYWNrZWROb2Rlcy5hcHBlbmQoaWZhY2UpCi0KLSAgICBwcmludCAiUm9sbGJhY2sgY29tcGxldGVkIgotCi1kZWYgY29tbWFuZF93YWl0X2Zvcl9jb250cm9sbGVyKGRlbGF5ID0gTm9uZSwgc2RucGxhdGZvcm1fY2hlY2sgPSBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluX2NvbW1hbmQgPSBGYWxzZSk6Ci0gICAgIiIiCi0gICAgRm9yIHZhcmlvdXMgY29tbWFuZHMsIGl0IG1ha2VzIHNlbnNlIGZvciB0aGUgY29tbWFuZCB0byB2ZXJpZnkgdGhhdAotICAgIHRoZSBjb250cm9sbGVyIHJlc3RhcnQgaGFzIGJlZW4gY29tcGxldGVkLiAgIEluIHRoZSBzaXR1YXRpb24gd2hlcmUKLSAgICBhIHNpbmdsZSBjb250cm9sbGVyIGlzIGNvbmZpZ3VyZWQsIGl0IGFsc28gbWFrZXMgc2Vuc2UgdG8gdmVyaWZ5IHRoZQotICAgIGNvbnRyb2xsZXIgaXMgbm93IGNvbmZpZ3VyZWQgYXMgTUFTVEVSLgotCi0gICAgVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgZm9yIGNvbW1hbmQgd2hpY2ggYXJlIGtub3duIHRvIGNhdXNlIHRoZQotICAgIGNvbnRyb2xsZXIgdG8gcmVzdGFydCwgZm9yIGV4YW1wZSB0aGUgJ2ZlYXR1cmUnIGNvbW1hbmQuCi0KLSAgICBUaGUgcHJvY2VkdXJlIGlzIGFsc28gdXNlZCBkdXJpbmcgQ0xJIHN0YXJ0dXAgKHNlZSBjbGkucHkpCi0gICAgdG8gdmVyaWZ5IHRoYXQgdGhlIGNvbnRyb2xsZXIgaXMgaW4gTUFTVEVSIG1vZGUuICBJdHMgbm9ybWFsCi0gICAgZm9yIHRoZSBIQSByb2xlIHRvIHRyYW5zaXRpb24gZnJvbSBTTEFWRSB0byBtYXN0ZXIgZHVyaW5nIAotICAgIHN5c3RlbSBzdGFydHVwLgotICAgICIiIgotCi0gICAgIyBpZiB0aGUgQ0xJIHdhcyBzdGFydGVkIHdpdGggLS1pbml0LCBza2lwIHRoZSB3YWl0LCB0aGUKLSAgICAjIGNvbnRyb2xsZXIgaXNuJ3QgcnVubmluZy4KLSAgICBpZiBzZG5zaC5vcHRpb25zLmluaXQ6Ci0gICAgICAgIHJldHVybgotICAgIAotICAgIGRlZiBpc19yZWFkeShzZG5zaCwgdmVyYm9zZSwgZHVyYXRpb24pOgotICAgICAgICAiIiIKLSAgICAgICAgQmUgbG91ZC1hcy1fZWFuIHdoZW4gdGhlIGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhlbiAxNSBzZWNvbmRzLgotICAgICAgICBEaXNwbGF5IHRoZSBnb3J5IGRldGFpbHMgZm9yIGFsbCB0byBrbm93LgotICAgICAgICAiIiIKLSAgICAgICAgdG9vX2xvbmcgPSA5MAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL2hhL3JvbGUiICUgc2Ruc2guY29udHJvbGxlcgotICAgICAgICAgICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdCh1cmwsIHVzZV9jYWNoZSA9IEZhbHNlKQotICAgICAgICAgICAgaGFfcm9sZSA9IGpzb24ubG9hZHMocmVzdWx0KQotICAgICAgICAgICAgaWYgZHVyYXRpb24gPiB0b29fbG9uZzoKLSAgICAgICAgICAgICAgICBwcmludCAnTG9uZyBkZWxheTogcmVhc29uJywgXAotICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oWyclczogJXMnICUgKG4sdikgZm9yIChuLHYpIGluIGhhX3JvbGUuaXRlbXMoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHYgIT0gJyddKQotICAgICAgICAgICAgaWYgKGhhX3JvbGVbJ3JvbGUnXSA9PSAnTUFTVEVSJyBvcgotICAgICAgICAgICAgICAgIHNkbnNoLmZpbmRfbWFzdGVyKClbJ21hc3RlciddIGlzIG5vdCBOb25lKToKLSAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICBwcmludCAnQ3VycmVudCByb2xlIGlzIE1BU1RFUicKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGV4Y2VwdCBlcnJvci5Db21tYW5kUmVzdEVycm9yLGU6Ci0gICAgICAgICAgICBwcmludCAiUkVTVCBlcnJvciB3aGlsZVVuYWJsZSB0byBkZXRlcm1pbmUgY29udHJvbGxlciBIQSByb2xlLiIKLSAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsIG9ial90eXBlKQotICAgICAgICAgICAgcHJpbnQgc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgaWYgZHVyYXRpb24gPiB0b29fbG9uZzoKLSAgICAgICAgICAgICAgICBwcmludCAnTUFTVEVSIFRyYW5zaXRpb24gRmFpbHVyZTogJywgZQotICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMgaWYgdGhpcyBpc24ndCBhIHR5cGljYWwgZW52aXJvbm1lbnQgKGllOiBydW5uaW5nIHJlbW90ZWx5KQotICAgICMgZG9uJ3QgYm90aGVyIHRyeWluZyB0byBkZXRlcm1pbmUgdGhlIHJvbGUKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoJy9vcHQvc2RucGxhdGZvcm0vY3VycmVudF9yb2xlJyk6Ci0gICAgICAgIHJldHVybgotICAgIAotICAgICMgbm93IHZhZGFsaWRhdGUgdGhlIHJlc3QgYXBpIHBvcnQgaXMgd29ya2luZyAKLSAgICBpcF9hbmRfcG9ydCA9IHNkbnNoLmNvbnRyb2xsZXIuc3BsaXQoJzonKQotICAgIGlmIGxlbihpcF9hbmRfcG9ydCkgPT0gMjoKLSAgICAgICAgIyBmaXJzdCBlbnN1cmUgdGhlIFJFU1QgQVBJIGlzIGFuc3dlcmluZwotICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzLmNvbm5lY3QoKGlwX2FuZF9wb3J0WzBdLCBpbnQoaXBfYW5kX3BvcnRbMV0pKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcHJpbnQgJ1JFU1QgQVBJIG5vdCBydW5uaW5nLCBlbWVyZ2VuY3kgQ0xJIGFjY2VzcycKLSAgICAgICAgICAgIGlmIHNkbnNoLmRlYnVnOiAjIGVuYWJsZSBkZWJ1ZyB0byBzZWUgbWVzc2FnZXMKLSAgICAgICAgICAgICAgICBwcmludCAnRXhjZXB0aW9uOicsIGUKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgIyBpc3N1ZSBhIFJFU1QgQVBJIHJlcXVlc3QgZGlyZWN0ZWQgYXQgdGhlIG1vZGVsLgotICAgIHRyeToKLSAgICAgICAgZW50cnkgPSBzZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZSgnZmVhdHVyZScpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgcHJpbnQgJ1JFU1QgQVBJL0RhdGFiYXNlIG5vdCByZXNwb25kaW5nLCBlbWVyZ2VuY3kgQ0xJIGFjY2VzcycKLSAgICAgICAgaWYgc2Ruc2guZGVidWc6ICMgZW5hYmxlIGRlYnVnIHRvIHNlZSBtZXNzYWdlcwotICAgICAgICAgICAgcHJpbnQgJ0V4Y2VwdGlvbjonLCBlCi0gICAgICAgIHJldHVybiAKLSAgICAKLSAgICBpZiBzZG5wbGF0Zm9ybV9jaGVjazoKLSAgICAgICAgIyB0aGUgUkVTVCBBUEkgcmVxdWVzdCBmb3IgaGEtcm9sZSB3aWxsIHJldHVybiBVTkFWQUlMQUJMRQotICAgICAgICAjIHdoZW4gc2RucGxhdGZvcm0gaXNuJ3QgcnVubmluZy4KLSAgICAgICAgdXJsID0gImh0dHA6Ly8lcy9yZXN0L3YxL3N5c3RlbS9oYS9yb2xlIiAlIHNkbnNoLmNvbnRyb2xsZXIKLSAgICAgICAgcmVzdWx0ID0gc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdCh1cmwsIHVzZV9jYWNoZSA9IEZhbHNlKQotICAgICAgICBoYV9yb2xlID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgICAgIGlmIGhhX3JvbGVbJ3JvbGUnXSA9PSAnVU5BVkFJTEFCTEUnOgotICAgICAgICAgICAgcHJpbnQgJ1JFU1QgQVBJL1NETiBwbGF0Zm9ybSBub3QgcmVzcG9uZGluZywgZW1lcmdlbmN5IENMSSBhY2Nlc3MnCi0gICAgICAgICAgICByZXR1cm4gCi0KLQotICAgIGlmIGRlbGF5ID09IE5vbmU6Ci0gICAgICAgIGRlbGF5ID0gMQotICAgIGRlbGF5X3N0ciA9ICdhIHNlYycgaWYgZGVsYXkgPT0gMSBlbHNlICclZCBzZWNvbmRzJyAlIGRlbGF5Ci0KLSAgICBkdXJhdGlvbiA9IDAKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB2ZXJib3NlID0gRmFsc2UKLSAgICAgICAgICAgIHdoaWxlIG5vdCBpc19yZWFkeShzZG5zaCwgdmVyYm9zZSwgZHVyYXRpb24pOgotICAgICAgICAgICAgICAgIGlmIHdpdGhpbl9jb21tYW5kOgotICAgICAgICAgICAgICAgICAgICBwcmludCAnV2FpdGluZyAlcyB0byBjb21wbGV0ZSBjb21tYW5kIGV4ZWN1dGlvbiwgJyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdIaXQgQ3RybC1DIHRvIGV4aXQgZWFybHknICUgZGVsYXlfc3RyCi0gICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBGYWxzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdXYWl0aW5nICVzIHdoaWxlIGN1cnJlbnQgcm9sZSBpcyBTTEFWRSBtb2RlLCAnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0hpdCBDdHJsLUMgdG8gZXhpdCBlYXJseScgJSBkZWxheV9zdHIKLSAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSA9IFRydWUKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKGRlbGF5KQotICAgICAgICAgICAgICAgIGR1cmF0aW9uICs9IGRlbGF5Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgaWYgaXNfcmVhZHkoc2Ruc2gsIFRydWUsIGR1cmF0aW9uKToKLSAgICAgICAgICAgICAgICBpZiBkdXJhdGlvbiA+IDE1OgotICAgICAgICAgICAgICAgICAgICBwcmludCAnTUFTVEVSIFRyYW5zaXRpb246ICVzIHNlYycgJSBkdXJhdGlvbgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJlc3AgPSByYXdfaW5wdXQoJ0NvbnRyb2xsZXIgaXMgbm90IHlldCByZWFkeS4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRG8geW91IHN0aWxsIHdhbnQgdG8gY29udGludWUgdG8gdGhlIENMST8gW25dJykKLSAgICAgICAgICAgICAgICBpZiByZXNwIGFuZCAieWVzIi5zdGFydHN3aXRoKHJlc3AubG93ZXIoKSk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdDb250aW51aW5nIHdpdGggQ0xJIGRlc3BpdGUgaW5pdGlhbGl6YXRpb24gZXJyb3IgLi4uJwotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotCi1kZWYgY29tbWFuZF9mYWN0b3J5X2RlZmF1bHQoKToKLSAgICBwcmludCAiUmUtc2V0dGluZyBjb250cm9sbGVyIHRvIGZhY3RvcnkgZGVmYXVsdHMgLi4uIgotICAgIG9zLnN5c3RlbSgic3VkbyAvb3B0L3NkbnBsYXRmb3JtL3N5cy9iaW4vcmVzZXRic2MiKQotICAgIHJldHVybgotCi0KLWRlZiBjb21tYW5kX2R1bXBfbG9nKGRhdGEpOgotICAgIGNvbnRyb2xsZXIgPSBkYXRhLmdldCgnY29udHJvbGxlci1ub2RlJykgIyBjYW4gYmUgTm9uZS4KLSAgICBjb250cm9sbGVyX2RpY3QgPSB7ICdpZCcgOiBjb250cm9sbGVyIH0KLSAgICBmb3IgaXBfcG9ydCBpbiBjb250cm9sbGVyX2lwX2FuZF9wb3J0KGNvbnRyb2xsZXJfZGljdCk6Ci0gICAgICAgIGxvZ19uYW1lID0gZGF0YVsnbG9nLW5hbWUnXQotICAgICAgICBpZiBsb2dfbmFtZSA9PSAnYWxsJzoKLSAgICAgICAgICAgIHVybCA9IGxvZ191cmwoaXBfYW5kX3BvcnQgPSBpcF9wb3J0KQotICAgICAgICAgICAgbG9nX25hbWVzID0gY29tbWFuZC5zZG5zaC5yZXN0X3NpbXBsZV9yZXF1ZXN0X3RvX2RpY3QodXJsKQotICAgICAgICAgICAgZm9yIGxvZyBpbiBsb2dfbmFtZXM6Ci0gICAgICAgICAgICAgICAgeWllbGQgJyonICogNDAgKyBpcF9wb3J0ICsgJyAnICsgbG9nWydsb2cnXSArICdcbicKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBjb21tYW5kX2R1bXBfbG9nKHsgJ2xvZy1uYW1lJyA6IGxvZ1snbG9nJ10gfSk6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW0KLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgdXNlIGEgc3RyZWFtaW5nIG1ldGhvZCBzbyB0aGUgY29tcGxldGUgbG9nIGlzIG5vdCBpbiBtZW1vcnkKLSAgICAgICAgdXJsID0gbG9nX3VybChpcF9hbmRfcG9ydCA9IGlwX3BvcnQsIGxvZyA9IGxvZ19uYW1lKQotICAgICAgICByZXF1ZXN0ID0gdXJsbGliMi51cmxvcGVuKHVybCkKLSAgICAgICAgZm9yIGxpbmUgaW4gcmVxdWVzdDoKLSAgICAgICAgICAgIHlpZWxkIGxpbmUKLSAgICAgICAgcmVxdWVzdC5jbG9zZSgpCi0KLQotIwotIyBJbml0aWFsaXplIGFjdGlvbiBmdW5jdGlvbnMgCi0jCi0jCi0KLWRlZiBpbml0X2FjdGlvbnMoYnMsIG1vZGkpOgotICAgIGdsb2JhbCBzZG5zaCwgbWkKLSAgICBzZG5zaCA9IGJzCi0gICAgbWkgPSBtb2RpCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ2NyZWF0ZS10dW5uZWwnLAotICAgICAgICAgICAgICAgICAgICAgICB0dW5uZWxfY3JlYXRlLAotICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnZGF0YScgOiAnJGRhdGEnLH19KQotCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdyZW1vdmUtdHVubmVsJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHVubmVsX3JlbW92ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J2RhdGEnIDogJyRkYXRhJyx9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignY3JlYXRlLXBvbGljeScsCi0gICAgICAgICAgICAgICAgICAgICAgIHBvbGljeV9jcmVhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyA6ICckZGF0YScsfX0pCi0gICAgCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdyZW1vdmUtcG9saWN5JywKLSAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5X3JlbW92ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J2RhdGEnIDogJyRkYXRhJyx9fSkKLSAgICAKLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ3dyaXRlLWZpZWxkcycsIHdyaXRlX2ZpZWxkcywKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J29ial90eXBlJzogJyRjdXJyZW50LW1vZGUtb2JqLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2JqX2lkJzogJyRjdXJyZW50LW1vZGUtb2JqLWlkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiAnJGRhdGEnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ3Jlc2V0LWZpZWxkcycsIHJlc2V0X2ZpZWxkcywKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J29ial90eXBlJyAgICAgOiAnJGN1cnJlbnQtbW9kZS1vYmotdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmpfaWQnICAgICAgIDogJyRjdXJyZW50LW1vZGUtb2JqLWlkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyZ19kYXRhJyAgICAgOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF0Y2hfZm9yX25vJyA6ICckbWF0Y2gtZm9yLW5vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkcycgICAgICAgOiAnJGZpZWxkcyd9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignd3JpdGUtZmllbGRzLWV4cGxpY2l0Jywgd3JpdGVfZmllbGRzLAotICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnb2JqX3R5cGUnIDogJyRvYmotdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmpfaWQnICAgOiAnJG9iai1pZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgOiAnJGRhdGEnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ3Jlc2V0LWZpZWxkcy1leHBsaWNpdCcsIHJlc2V0X2ZpZWxkcywKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J29ial90eXBlJyAgICAgOiAnJG9iai10eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ial9pZCcgICAgICAgOiAnJG9iai1pZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmdfZGF0YScgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hdGNoX2Zvcl9ubycgOiAnJG1hdGNoLWZvci1ubycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZHMnICAgICAgIDogJyRmaWVsZHMnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ3VwZGF0ZS1jb25maWcnLCB1cGRhdGVfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnb2JqX3R5cGUnICAgICAgOiAnJG9iai10eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ial9pZCcgICAgICAgIDogJyRjdXJyZW50LW1vZGUtb2JqLWlkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vX2NvbW1hbmQnICAgIDogJyRpcy1uby1jb21tYW5kJywgfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ2RlbGV0ZS1vYmplY3RzJywgZGVsZXRlX29iamVjdHMsCi0gICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydvYmpfdHlwZSc6ICckb2JqLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YSc6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRfZmllbGQnOiAnJHBhcmVudC1maWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRfaWQnOiAnJGN1cnJlbnQtbW9kZS1vYmotaWQnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ3dyaXRlLW9iamVjdCcsIHdyaXRlX29iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J29ial90eXBlJzogJyRvYmotdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJzogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudF9maWVsZCc6ICckcGFyZW50LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudF9pZCc6ICckY3VycmVudC1tb2RlLW9iai1pZCd9fSkKLSAgICAgICAgCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdzZXQtZGF0YScsIHNldF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnZGF0YSc6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrZXknOiAnJGtleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6ICckdmFsdWUnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ3B1c2gtbW9kZS1zdGFjaycsIHB1c2hfbW9kZV9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J21vZGVfbmFtZSc6ICckc3VibW9kZS1uYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ial90eXBlJzogJyRvYmotdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRfZmllbGQnOiAnJHBhcmVudC1maWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRfaWQnOiAnJGN1cnJlbnQtbW9kZS1vYmotaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YSc6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUnOiAnJGNyZWF0ZSd9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbigncG9wLW1vZGUtc3RhY2snLCBwb3BfbW9kZV9zdGFjaykKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignY29uZmlybScsIGNvbmZpcm1fcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydwcm9tcHQnOiAnJHByb21wdCd9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignY29udmVydC12bnMtYWNjZXNzLWxpc3QnLCBjb252ZXJ0X3Zuc19hY2Nlc3NfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydvYmpfdHlwZSc6ICckb2JqLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2tleScgOiAnJGN1cnJlbnQtbW9kZS1vYmotaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnIDogJyRkYXRhJ319KQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignZGlzcGxheS10YWJsZScsIGNvbW1hbmRfZGlzcGxheV90YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydvYmpfdHlwZScgICAgICA6ICckb2JqLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YWJsZV9mb3JtYXQnICA6ICckZm9ybWF0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZScgICAgICAgICA6ICckdGl0bGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldGFpbCcgICAgICAgIDogJyRkZXRhaWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgICAgICAgIDogJyRzY29wZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnQnICAgICAgICAgIDogJyRzb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ2Rpc3BsYXktcmVzdCcsIGNvbW1hbmRfZGlzcGxheV9yZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7ICdkYXRhJyAgICAgICAgICA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCcgICAgICAgICAgIDogJyR1cmwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRoJyAgICAgICAgICA6ICckcGF0aCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3RfdHlwZScgICAgIDogJyRyZXN0LXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3J0JyAgICAgICAgICA6ICckc29ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJyAgICAgICAgIDogJyR0aXRsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhYmxlX2Zvcm1hdCcgIDogJyRmb3JtYXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXRhaWwnICAgICAgICA6ICckZGV0YWlsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ3F1ZXJ5LXRhYmxlJywgY29tbWFuZF9xdWVyeV90YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydvYmpfdHlwZScgICAgICA6ICckb2JqLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrZXknICAgICAgICAgICA6ICcka2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICAgICA6ICckc2NvcGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3J0JyAgICAgICAgICA6ICckc29ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JhY2snICAgICAgICAgOiAnJGNyYWNrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBlbmQnICAgICAgICA6ICckYXBwZW5kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGVhcicgICAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQotCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdxdWVyeS10YWJsZS1hcHBlbmQnLCBjb21tYW5kX3F1ZXJ5X3RhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J29ial90eXBlJyAgICAgIDogJyRvYmotdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICAgICAgICAgOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2tleScgICAgICAgICAgIDogJyRrZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgICAgICAgIDogJyRzY29wZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnQnICAgICAgICAgIDogJyRzb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmFjaycgICAgICAgICA6ICckY3JhY2snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcGVuZCcgICAgICAgIDogJyRhcHBlbmQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsZWFyJyAgICAgICAgIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQotCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ3F1ZXJ5LXJlc3QnLCBjb21tYW5kX3F1ZXJ5X3Jlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsndXJsJyAgICAgICAgICAgOiAnJHVybCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGF0aCcgICAgICAgICAgOiAnJHBhdGgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3RfdHlwZScgICAgIDogJyRyZXN0LXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrZXknICAgICAgICAgICA6ICcka2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICAgICA6ICckc2NvcGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3J0JyAgICAgICAgICA6ICckc29ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwZW5kJyAgICAgICAgOiAnJGFwcGVuZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xlYXInICAgICAgICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbigncXVlcnktcmVzdC1hcHBlbmQnLCBjb21tYW5kX3F1ZXJ5X3Jlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsndXJsJyAgICAgICAgICAgOiAnJHVybCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGF0aCcgICAgICAgICAgOiAnJHBhdGgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3RfdHlwZScgICAgIDogJyRyZXN0LXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrZXknICAgICAgICAgICA6ICcka2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICAgICA6ICckc2NvcGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3J0JyAgICAgICAgICA6ICckc29ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JhY2snICAgICAgICAgOiAnJGNyYWNrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBlbmQnICAgICAgICA6ICckYXBwZW5kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGVhcicgICAgICAgICA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignam9pbi1yZXN0JywgY29tbWFuZF9qb2luX3Jlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsndXJsJyAgICAgICAgICAgOiAnJHVybCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2V5JyAgICAgICAgICAgOiAnJGtleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnam9pbl9maWVsZCcgICAgOiAnJGpvaW4tZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3RfdHlwZScgICAgIDogJyRyZXN0LXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZF9maWVsZCcgICAgIDogJyRhZGQtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmFjaycgICAgICAgICA6ICckY3JhY2snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybF9rZXknICAgICAgIDogJyR1cmwta2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ2pvaW4tdGFibGUnLCBjb21tYW5kX2pvaW5fdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnb2JqX3R5cGUnICAgICAgOiAnJG9iai10eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgICAgICA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2V5JyAgICAgICAgICAgOiAnJGtleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2V5X3ZhbHVlJyAgICAgOiAnJGtleS12YWx1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkX2ZpZWxkJyAgICAgOiAnJGFkZC1maWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnam9pbl9maWVsZCcgICAgOiAnJGpvaW4tZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyYWNrJyAgICAgICAgIDogJyRjcmFjaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQotCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdjcmFjaycsIGNvbW1hbmRfY3JhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICA6ICckZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignZGlzcGxheScsIGNvbW1hbmRfZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyAgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YWJsZV9mb3JtYXQnIDogJyRmb3JtYXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnQnICAgICAgICAgOiAnJHNvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldGFpbCcgICAgICAgOiAnJGRldGFpbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnICAgICAgICA6ICckdGl0bGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignbGVnYWN5LWNsaScsIGNvbW1hbmRfbGVnYWN5X2NsaSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydvYmpfdHlwZScgOiAnJG9iai10eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldGFpbCcgICA6ICckZGV0YWlsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3J0JyAgICAgOiAnJHNvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgICA6ICckc2NvcGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ2xlZ2FjeS1jbGktbm8nLCBjb21tYW5kX2xlZ2FjeV9jbGlfbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnb2JqX3R5cGUnIDogJyRvYmotdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXRhaWwnICAgOiAnJGRldGFpbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc29ydCcgICAgIDogJyRzb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgOiAnJHNjb3BlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQotCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCd2ZXJzaW9uJywgIGNvbW1hbmRfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQotCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdjbGVhcnRlcm0nLCAgY29tbWFuZF9jbGVhcnRlcm0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ2Rpc3BsYXktY2xpJywgIGNvbW1hbmRfZGlzcGxheV9jbGksCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnZGF0YScgICA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV0YWlsJyA6ICckZGV0YWlsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ2NyZWF0ZS1hbGlhcycsIGNvbW1hbmRfY3JlYXRlX2FsaWFzLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J29ial90eXBlJyA6ICckb2JqLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzZXJ2ZWQnIDogJyRyZXNlcnZlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbF9pZl9leGlzdHMnIDogJyRmYWlsLWlmLWV4aXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQotCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdkZWxldGUtYWxpYXMnLCBjb21tYW5kX2RlbGV0ZV9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydvYmpfdHlwZScgOiAnJG9iai10eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ2NyZWF0ZS10YWcnLCBjb21tYW5kX2NyZWF0ZV90YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnb2JqX3R5cGUnIDogJyRvYmotdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQotCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdkZWxldGUtdGFnJywgY29tbWFuZF9kZWxldGVfdGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J29ial90eXBlJyA6ICckb2JqLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLSAKLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ2NsaS1zZXQnLCBjb21tYW5kX2NsaV9zZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsndmFyaWFibGUnIDogJyR2YXJpYWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ2NsaS11bnNldCcsIGNvbW1hbmRfY2xpX3Vuc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3ZhcmlhYmxlJyA6ICckdmFyaWFibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQotCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdzaGVsbC1jb21tYW5kJywgY29tbWFuZF9zaGVsbF9jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3NjcmlwdCcgOiAnJGNvbW1hbmQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLSAgICAKLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ3Jlc3QtcG9zdC1kYXRhJywgY29tbWFuZF9yZXN0X3Bvc3RfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydwYXRoJzogJyRwYXRoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJzogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJiJzogJyR2ZXJiJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hY3Rpb24oJ3Byb21wdC11cGRhdGUnLCBjb21tYW5kX3Byb21wdF91cGRhdGUsKQotCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdjb250cm9sbGVyLXVwZ3JhZGUnLCBjb21tYW5kX2NvbnRyb2xsZXJfdXBncmFkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J2RhdGEnOiAnJGRhdGEnfX0pCi0gICAgCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdjb250cm9sbGVyLWNvbmZpZy1yb2xsYmFjaycsIGNvbW1hbmRfY2x1c3Rlcl9jb25maWdfcm9sbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJzogJyRkYXRhJ319KQotICAgIAotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignY29udHJvbGxlci1kZWNvbW1pc3Npb24nLCBjb21tYW5kX2NvbnRyb2xsZXJfZGVjb21taXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnZGF0YSc6ICckZGF0YSd9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignd2FpdC1mb3ItY29udHJvbGxlcicsIGNvbW1hbmRfd2FpdF9mb3JfY29udHJvbGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3dpdGhpbl9jb21tYW5kJzogVHJ1ZX19KQotCi0gICAgY29tbWFuZC5hZGRfYWN0aW9uKCdmYWN0b3J5LWRlZmF1bHQnLCBjb21tYW5kX2ZhY3RvcnlfZGVmYXVsdCkKLQotICAgIGNvbW1hbmQuYWRkX2FjdGlvbignZHVtcC1sb2cnLCBjb21tYW5kX2R1bXBfbG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnIDogeyAnZGF0YScgOiAnJGRhdGEnLCB9fSkKZGlmZiAtLWdpdCBhL2NsaS9jbGkvY19jb21wbGV0aW9ucy5weSBiL2NsaS9jbGkvY19jb21wbGV0aW9ucy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYWM2NmE3OS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2NfY29tcGxldGlvbnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NTIgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTEsMjAxMiwyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IG1vZGkKLWltcG9ydCBlcnJvcgotaW1wb3J0IGNvbW1hbmQKLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IHV0aWYKLQotZnJvbSBtaWR3IGltcG9ydCAqCi0KLWRlZiBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQsIG1lc3NhZ2U9Tm9uZSk6Ci0gICAgaWYgaXNpbnN0YW5jZShyZXN1bHQsIGNvbGxlY3Rpb25zLk1hcHBpbmcpOgotICAgICAgICBlcnJvcl90eXBlID0gcmVzdWx0LmdldCgnZXJyb3JfdHlwZScpCi0gICAgICAgIGlmIGVycm9yX3R5cGU6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kUmVzdEVycm9yKHJlc3VsdCwgbWVzc2FnZSkKLQotCi1kZWYgcHJldHR5KHRleHQpOgotICAgICIiIgotICAgIEZvciBvYmplY3QtdHlwZSdzLCByZW1vdmUgZGFzaGVzLCBjYXBpdGFsaXplIGZpcnN0IGNoYXJhY3RlcgotICAgICIiIgotICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoJy0nLCAnICcpLmNhcGl0YWxpemUoKQotCi0KLSMKLSMgQ09NUExFVElPTiBQUk9DUwotIwotIyAnY29tcGxldGlvbnMnIGlzIGEgZGljdGlvbmFyeSwgd2hlcmUgdGhlIGtleXMgYXJlIHRoZSBhY3R1YWwgdGV4dAotIyBvZiB0aGUgY29tcGxldGlvbiwgd2hpbGUgdGhlIHZhbHVlIGlzIHRoZSByZWFzb24gd2h5IHRoaXMgdGV4dCAKLSMgd2FzIGFkZGVkLiAgVGhlICdyZWFzb24nIHByb3ZpZGVzIHRoZSB0ZXh0IGZvciB0aGUgdHdvLWNvbHVtbgotIyBoZWxwIHByaW50ZWQgZm9yIHRoZSAnPycgY2hhcmFjdGVyLgotIwotCi1kZWYgY29sbGVjdF9vYmplY3RfZmllbGRzKG9ial90eXBlLCBmaWVsZCwgZGF0YSwgbW9kZSwgY29tcGxldGlvbnMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBOb25lLCBvdGhlciA9IE5vbmUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfZmllbGQgPSBOb25lLCBwYXJlbnRfaWQgPSBOb25lLCBzY29wZWQgPSBOb25lKToKLSAgICAiIiIKLSAgICBSZXR1cm5zIHRoZSBsaXN0IG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zIGZvciBhIHBhcnRpY3VsYXIgb2JqLXR5cGUuCi0gICAgIiIiCi0KLSAgICBkYXRhID0gZGljdChkYXRhKQotICAgIGlmIHBhcmVudF9maWVsZDoKLSAgICAgICAgZGF0YVtwYXJlbnRfZmllbGRdID0gcGFyZW50X2lkCi0gICAgaWYgcHJlZml4OgotICAgICAgICBkYXRhW2ZpZWxkICsgJ19fc3RhcnRzd2l0aCddID0gcHJlZml4Ci0KLSAgICBrZXkgPSBtaS5wayhvYmpfdHlwZSkKLSAgICBpZiBzY29wZWQ6Ci0gICAgICAgIG9ial9pZCA9IHNkbnNoLmdldF9jdXJyZW50X21vZGVfb2JqKCkKLSAgICAgICAgaWYgc2Ruc2guY3VycmVudF9tb2RlKCkgIT0gbW9kZToKLSAgICAgICAgICAgICMgWFhYIG5lZWRzIHRvIGJlIGNvdmVyZWQsIHNob3VsZG4ndCByZWFjaCBpbiBsaWtlIHRoaXMKLSAgICAgICAgICAgIGZvciB4IGluIHNkbnNoLm1vZGVfc3RhY2s6Ci0gICAgICAgICAgICAgICAgaWYgeFsnbW9kZV9uYW1lJ10gPT0gbW9kZToKLSAgICAgICAgICAgICAgICAgICAgb2JqX2lkID0geFsnb2JqJ10KLSAgICAgICAgb2JqX2QgPSB7IGtleSA6IG9ial9pZCB9Ci0KLSAgICAgICAgaWYgb2JqX3R5cGUgaW4gbWkuYWxpYXNfb2JqX3R5cGVzOgotICAgICAgICAgICAgIyB0aGUgc3VibW9kZSBvdWdodCB0byBpZGVudGlmeSB0aGUgZm9yZWlnbiBrZXkKLSAgICAgICAgICAgIGRhdGFbbWkuYWxpYXNfb2JqX3R5cGVfZmllbGQob2JqX3R5cGUpXSA9IG9ial9pZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWkuc3BsaXRfY29tcG91bmRfaW50b19kaWN0KG9ial90eXBlLCBrZXksIG9ial9kLCBpc19wcmVmaXggPSBUcnVlKQotICAgICAgICAgICAgZm9yIChrLHYpIGluIG9ial9kLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgaWYgayAhPSBrZXkgYW5kIG5vdCBrIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSB2Ci0gCi0KLSAgICAjIGlmIHRoaXMgaXMgb25lIG9mIHRoZSBvYmpfdHlwZSdzIGFzc29jaWF0ZWQgd2l0aCBhbGlhc2VzLCBzaG91bGQKLSAgICAjIHRoZSBsaXN0IG9mIHZhbHVlcyBiZSBiYWNrLXRyYW5zZm9ybWVkIGludG8gYWxpYXMgbmFtZXM/Ci0gICAgIyB5ZXMsIGJlY2F1c2UgaWYgdGhlIGN1cnJlbnQgdmFsdWUgaGFzIGFuIGludmVyc2UgYWxpYXMsIHRoZSBleGlzdGluZwotICAgICMgaW52ZXJzZSBmb3IgdGhlIHR5cGUgaW1wbGllcyB0aGF0IGR1cmluZyBhIHByZXZpb3VzIGluc2VydCBvZiB0aGlzCi0gICAgIyB2YWx1ZSwgaXQgd2FzIGNvbnZlcnRlZCBmcm9tIGl0cyBhbGlhcyBuYW1lIHRvIHRoZSBjdXJyZW50IG5hbWUuCi0gICAgIwotICAgICMgY29sbGVjdCB0aGUgY29tcGxldGUgY29sbGVjdGlvbiBvZiBhbGlhc2VzLCBzaW5jZSBpdHMgbGlrZWx5Ci0gICAgIyBtb3JlIHRoYW4gb25lIGJhY2stdG8tYWxpYXMgY29udmVyc2lvbiB3aWxsIGJlIHJlcXVpcmVkLCBhbmQgcXVlcnkKLSAgICAjIGl0cyB2YWx1ZSBiZWZvcmUgb2JqX3R5cGUgaW4gdGhlIGhvcGUgdGhhdCBpdCB3YXMgcmVjZW50bHkgY2FjaGVkLgotICAgICMKLSAgICBhbGlhc19vYmpfdHlwZSA9IG1pLm9ial90eXBlX3JlbGF0ZWRfY29uZmlnX29ial90eXBlKG9ial90eXBlKQotICAgIGlmIG90aGVyIGFuZCBvdGhlciBpbiBtaS5hbGlhc19vYmpfdHlwZV94cmVmOgotICAgICAgICBhbGlhc19vYmpfdHlwZSA9IG1pLmFsaWFzX29ial90eXBlX3hyZWZbb3RoZXJdWzBdCi0gICAgZWxpZiBmaWVsZCAhPSBtaS5wayhvYmpfdHlwZSk6Ci0gICAgICAgIGlmIG1pLmlzX2ZvcmVpZ25fa2V5KG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICAgICAoYWxpYXNfb2JqX3R5cGUsIGZrX25hbWUpID0gbWkuZm9yZWlnbl9rZXlfcmVmZXJlbmNlcyhvYmpfdHlwZSwgZmllbGQpCi0gICAgICAgICAgICBhbGlhc19vYmpfdHlwZSA9IG1pLm9ial90eXBlX3JlbGF0ZWRfY29uZmlnX29ial90eXBlKGFsaWFzX29ial90eXBlKQotICAgICAgICAgICAgaWYgYWxpYXNfb2JqX3R5cGUgaW4gbWkuYWxpYXNfb2JqX3R5cGVfeHJlZjoKLSAgICAgICAgICAgICAgICBhbGlhc19vYmpfdHlwZSA9IG1pLmFsaWFzX29ial90eXBlX3hyZWZbYWxpYXNfb2JqX3R5cGVdWzBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFsaWFzX29ial90eXBlID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAnY29sbGVjdF9vYmplY3RfZmllbGRzOiBubyBhbGlhcyBmb3IgJXMgJyBcCi0gICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkICVzIG5vdCBwaywgYW5kIG5vdCBmaycgJSAob2JqX3R5cGUsIGZpZWxkKQotICAgICAgICAgICAgYWxpYXNfb2JqX3R5cGUgPSBOb25lCi0gICAgZWxpZiBvYmpfdHlwZSBpbiBtaS5hbGlhc19vYmpfdHlwZV94cmVmOgotICAgICAgICBhbGlhc19vYmpfdHlwZSA9IG1pLmFsaWFzX29ial90eXBlX3hyZWZbb2JqX3R5cGVdWzBdCi0gICAgZWxzZToKLSAgICAgICAgYWxpYXNfb2JqX3R5cGUgPSBOb25lCi0KLSAgICBhbGlhc19kaWN0ID0ge30KLSAgICBpZiBhbGlhc19vYmpfdHlwZToKLSAgICAgICAgZm9yZWlnbl9maWVsZCA9IG1pLmFsaWFzX29ial90eXBlX2ZpZWxkKGFsaWFzX29ial90eXBlKQotICAgICAgICBhbGlhc19kaWN0ID0gY3JlYXRlX29ial90eXBlX2RpY3QoYWxpYXNfb2JqX3R5cGUsIGZvcmVpZ25fZmllbGQpCi0gICAgICAgIGFsaWFzX2tleSA9IG1pLnBrKGFsaWFzX29ial90eXBlKQotCi0gICAgIyBSZW1vdmUgYW55IGRhdGEgZmllbGRzIHdoaWNoIGhhdmUgdmFsdWVzIG9mIE5vbmUsIHRoZXNlIGFyZSBmaWVsZHMKLSAgICAjIHdoaWNoIGFyZSBnZXR0aW5nIHJlc2V0LgotICAgIGZvciByZXNldF9maWVsZHMgaW4gW3ggZm9yIHggaW4gZGF0YS5rZXlzKCkgaWYgZGF0YVt4XSA9PSBOb25lXToKLSAgICAgICAgZGVsIGRhdGFbcmVzZXRfZmllbGRzXQotICAgICAgICAKLSAgICAjIGNvbGxlY3QgY29tcGxldGUgb2JqX3R5cGUKLSAgICBpZiBub3QgbWkub2JqX3R5cGVfaGFzX21vZGVsKG9ial90eXBlKToKLSAgICAgICAgcmVzdWx0ID0gcmVzdF90b19tb2RlbC5nZXRfbW9kZWxfZnJvbV91cmwob2JqX3R5cGUsIGRhdGEpCi0gICAgZWxzZToKLSAgICAgICAgcmVzdWx0ID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKG9ial90eXBlLCBkYXRhKQotICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiY29sbGVjdF9vYmplY3RfZmllbGRzOiIsIG9ial90eXBlLCBmaWVsZCwgZGF0YSwgcmVzdWx0Ci0KLSAgICBpc19jb21wb3VuZCA9IG1pLmlzX2NvbXBvdW5kX2tleShvYmpfdHlwZSwga2V5KQotICAgIGQgPSB7fQotICAgIGZvciBpdGVtIGluIHJlc3VsdDoKLSAgICAgICAgaWYgaXNfY29tcG91bmQ6Ci0gICAgICAgICAgICBtaS5zcGxpdF9jb21wb3VuZF9pbnRvX2RpY3Qob2JqX3R5cGUsIGtleSwgaXRlbSkKLSAgICAgICAgdmFsdWUgPSBpdGVtLmdldChmaWVsZCkKLSAgICAgICAgIyBYWFggaGFjayB0byBjb3JyZWN0bHkgZm9ybWF0IHRhZyBjb21wbGV0aW9ucwotICAgICAgICBpZiBvYmpfdHlwZSA9PSAndGFnJyBhbmQgZmllbGQgPT0gJ2lkJzoKLSAgICAgICAgICAgIHZhbHVlID0gJyVzLiVzPSVzJyAlIHR1cGxlKHZhbHVlLnNwbGl0KCd8JykpCi0gICAgICAgICMgcmVtZW1iZXIgdG8gb25seSBhZGQgbmV3IGl0ZW1zCi0gICAgICAgIGlmIHZhbHVlOgotICAgICAgICAgICAgaWYgdHlwZSh2YWx1ZSkgPT0gbGlzdDoKLSAgICAgICAgICAgICAgICAjIE5lZWQgYSBtZWNoYW5pc20gdG8gc2VsZWN0IHZhbHVlcyBmcm9tIHRoZSBsaXN0LCBmaWVsZCdzIG5vdCBlbm91Z2gKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICAgICAgaWYgdXRpZi5xdW90ZV9zdHJpbmcoc3RyKGl0ZW0pKSBub3QgaW4gY29tcGxldGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzdHIoaXRlbSkgaW4gYWxpYXNfZGljdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhc19pdGVtID0gYWxpYXNfZGljdFtzdHIoaXRlbSldWzBdW2FsaWFzX2tleV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhbGlhc19pdGVtLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9IGFsaWFzX2l0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIGRbdXRpZi5xdW90ZV9zdHJpbmcoc3RyKGl0ZW0pKV0gPSBOb25lCi0gICAgICAgICAgICBlbGlmIHV0aWYucXVvdGVfc3RyaW5nKHN0cih2YWx1ZSkpIG5vdCBpbiBjb21wbGV0aW9uczoKLSAgICAgICAgICAgICAgICBpZiBzdHIodmFsdWUpIGluIGFsaWFzX2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWFzX3ZhbHVlID0gYWxpYXNfZGljdFtzdHIodmFsdWUpXVswXVthbGlhc19rZXldCi0gICAgICAgICAgICAgICAgICAgIGlmIGFsaWFzX3ZhbHVlLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYWxpYXNfdmFsdWUKLSAgICAgICAgICAgICAgICBkW3V0aWYucXVvdGVfc3RyaW5nKHN0cih2YWx1ZSkpXSA9IE5vbmUKLQotICAgICMgaWYgdGhlcmUncyBhbiBhbGlhcyBmb3IgdGhpcyBvYmplY3QsIGFuZCBhIHByZWZpeCBpcyBpbmNsdWRlZCwKLSAgICAjIHRoZW4gdGhlIGFsaWFzJ2VzIHdoaWNoIG1hdGNoIGFsc28gbmVlZCB0byBiZSBkaXJlY3RseSBpbmNsdWRlZCwKLSAgICAjIHNpbmNlIGl0cyBub3QgY2xlYXIgd2hldGhlciB0aGUgcHJlZml4IGFwcGxpZXMgdG8gdGhlIGFjdHVhbAotICAgICMgaWQgb3IgdGhlIGFsaWFzLiAgc2luY2UgYWxpYXNfZGljdCBpcyBhbHJlYWR5IHRoZSBjb21wbGV0ZQotICAgICMgY29sbGVjdGlvbiBvZiBhbGlhc2VzIGZvciB0aGlzIG9iai10eXBlLCB1c2UgaXQgZm9yIG1hdGNoaW5nIG5hbWVzCi0gICAgaWYgYWxpYXNfb2JqX3R5cGUgYW5kIHByZWZpeCBhbmQgcHJlZml4ICE9ICcnOgotICAgICAgICBhbGlhc19wayA9IG1pLnBrKGFsaWFzX29ial90eXBlKQotICAgICAgICBmb3IgKG4sdikgaW4gYWxpYXNfZGljdC5pdGVtcygpOgotICAgICAgICAgICAgIyAnbicgaGVyZSBpcyB0aGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNlIHRvIHRoaXMgb2JqLXR5cGUKLSAgICAgICAgICAgIGZvciBpdGVtIGluIFt4W2FsaWFzX3BrXSBmb3IgeCBpbiB2IGlmIHhbYWxpYXNfcGtdLnN0YXJ0c3dpdGgocHJlZml4KV06Ci0gICAgICAgICAgICAgICAgaWYgdXRpZi5xdW90ZV9zdHJpbmcoc3RyKGl0ZW0pKSBub3QgaW4gY29tcGxldGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgIGRbdXRpZi5xdW90ZV9zdHJpbmcoc3RyKGl0ZW0pKV0gPSBOb25lCi0KLSAgICByZXR1cm4gdXRpZi5hZGRfZGVsaW0obGlzdChkKSwgJyAnKQotCi0KLWRlZiBjb21wbGV0ZV9vYmplY3RfZmllbGQob2JqX3R5cGUsIGZpZWxkLCBkYXRhLCBjb21wbGV0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IE5vbmUsIG90aGVyID0gTm9uZSwgcGFyZW50X2ZpZWxkID0gTm9uZSwgcGFyZW50X2lkID0gTm9uZSwgc2NvcGVkID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgUG9wdWxhdGUgJ2NvbXBsZXRpb25zJyB3aXRoICB0aGUgdmFsdWVzIG9mIHRoZSBwcmltYXJ5IGtleSBmb3IKLSAgICB0aGUgcGFydGljdWxhciBvYmpfdHlwZQotICAgICIiIgotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJjb21wbGV0ZV9vYmplY3RfZmllbGQ6ICIsIG9ial90eXBlLCBtb2RlLCBmaWVsZCwgZGF0YSwgc2NvcGVkLCBvdGhlcgotCi0gICAgaWYgbm90IG1pLm9ial90eXBlX2V4aXN0cyhvYmpfdHlwZSk6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJVbmtub3duIG9iai10eXBlOiAlcyIgJSBvYmpfdHlwZSkKLSAgICByZXN1bHQgPSBjb2xsZWN0X29iamVjdF9maWVsZHMob2JqX3R5cGUsIGZpZWxkLCBkYXRhLCBtb2RlLCBjb21wbGV0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgb3RoZXIsIHBhcmVudF9maWVsZCwgcGFyZW50X2lkLCBzY29wZWQpCi0gICAgY29tcGxldGlvbnMudXBkYXRlKGRpY3QoW1t4LCAiJXMgc2VsZWN0aW9uIiAlIHByZXR0eShvYmpfdHlwZSldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiByZXN1bHRdKSkKLQotCi1kZWYgY29tcGxldGVfdGFnX21hcHBpbmcob2JqX3R5cGUsIGZpZWxkLCBkYXRhLCBjb21wbGV0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBOb25lLCBvdGhlciA9IE5vbmUsIG1vZGUgPSBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF9maWVsZCA9IE5vbmUsIHBhcmVudF9pZCA9IE5vbmUsIHNjb3BlZCA9IE5vbmUpOgotICAgICIiIgotICAgIFRyYW5zbGF0ZSB0aGUgY29tcGxldGlvbiByZXN1bHRzIGZyb20gY29tcGxldGVfb2JqZWN0X2ZpZWxkIGludG8KLSAgICB0YWcgdmFsdWVzIG9mIHN5bnRheCA8bmFtZXNwYWNlLm5hbWU+PTx2YWx1ZQotICAgICIiIgotICAgIGlmIG5vdCBtaS5vYmpfdHlwZV9leGlzdHMob2JqX3R5cGUpOgotICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcigiVW5rbm93biBvYmotdHlwZTogJXMiICUgb2JqX3R5cGUpCi0KLSAgICAjIHNpbmNlIHRoZSBwcmVmaXggY2FuIGNvbnRyaWN0IHRoZSBzZWFyY2gsIGFuZCBpdHMgbm90IGNsZWFyCi0gICAgIyB3aGF0IHRoZSBwcmVmaXggYXBwbGllcyB0bywgY29sbGVjdCBhbGwgdGhlIHBvc3NpYmxlIHZhbHVlcywKLSAgICAjIGNvbXB1dGUgd2h0IHRoZSBpdGVtIHdvdWxkIGxvb2sgbGlrZSB0aGVuIG1hdGNoIHRoZSBwcmVmaXguCi0gICAgY29sbGVjdGlvbiA9IGNvbGxlY3Rfb2JqZWN0X2ZpZWxkcyhvYmpfdHlwZSwgZmllbGQsIGRhdGEsIG1vZGUsIGNvbXBsZXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIG90aGVyLCBwYXJlbnRfZmllbGQsIHBhcmVudF9pZCwgc2NvcGVkKQotICAgIGlmIHByZWZpeCAhPSAiIjoKLSAgICAgICAgY29sbGVjdGlvbiA9IFt4IGZvciB4IGluIGNvbGxlY3Rpb24gaWYgeC5zdGFydHN3aXRoKHByZWZpeCldCi0gICAgY29tcGxldGlvbnMudXBkYXRlKGRpY3QoW1t4LCAidGFnIHNlbGVjdGlvbiJdIGZvciB4IGluIGNvbGxlY3Rpb25dKSkKLQotCi1kZWYgY29tcGxldGVfZnJvbV9hbm90aGVyKG90aGVyLCBvYmpfdHlwZSwgZmllbGQsIGRhdGEsIGNvbXBsZXRpb25zLCBub19jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfZmllbGQgPSBOb25lLCBwYXJlbnRfaWQgPSBOb25lLCBzY29wZWQgPSBOb25lLGV4cGxpY2l0PU5vbmUpOgotICAgICIiIgotICAgIENvbXBsZXRpb24gZnVuY3Rpb24gdXNlZCB3aGVuIGFub3RoZXIgb2JqX3R5cGUgaXMgdXNlZCB0byBwb3B1bGF0ZQotICAgIHZhbHVlcyBmb3IgdGhlIGN1cnJlbnQgb2JqX3R5cGUKLQotICAgIHRoZSAnb3RoZXInIGZpZWxkIGlkZW50aWZpZXMgdGhlIG9ial90eXBlIHRvIHVzZSB0byBjb2xsZWN0IGNob2ljZXMgZnJvbSwKLSAgICBpdCBjYW4gY29uc2lzdCBvZiB0d28gcGFydHMgIG90aGVyfGZpZWxkLiAgV2hlbiBmaWVsZCBpc24ndCBkZXNjcmliZWQgaGVyZSwKLSAgICBpdCBjb21lcyBmcm9tIHRoZSBkZXNjcmlwdGlvbiBwYXJhbWV0ZXIsIGhvd2V2ZXIsIHRoZSAnZmllbGQnIHZhbHVlIHRoZXJlIG1heQotICAgIGJlIGluIHVzZSB0byBkZXNjcmliZSB0aGUgdmFsdWUgb2YgdGhlIGFzc29jaWF0ZWQgYWN0aW9uLgotCi0gICAgIiIiCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImNvbXBsZXRlX2Zyb21fYW5vdGhlcjoiLCBvdGhlciwgZmllbGQsIGRhdGEsIHBhcmVudF9maWVsZCwgcGFyZW50X2lkLCBzY29wZWQKLQotICAgICMgY29tcGxldGVfZnJvbV9hbm90aGVyIGlzIGludGVuZGVkIHRvIGluY2x1ZGUgb3RoZXIgZmllbGRzLCB3aGljaAotICAgICMgc2hvdWxkbid0IGFwcGx5IGZvciBhIG5vIGNvbW1hbmQuCi0gICAgaWYgbm9fY29tbWFuZDoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZiBvdGhlci5maW5kKCd8JykgPj0gMDoKLSAgICAgICAgcGFydHMgPSBvdGhlci5zcGxpdCgnfCcpCi0gICAgICAgIG90aGVyID0gcGFydHNbMF0KLSAgICAgICAgZmllbGQgPSBwYXJ0c1sxXQotCi0gICAgaWYgbm90IG1pLm9ial90eXBlX2V4aXN0cyhvdGhlcik6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJVbmtub3duIG9iai10eXBlL290aGVyOiAlcyIgJSBvdGhlcikKLQotICAgIGlkID0gbWkucGsob3RoZXIpCi0gICAgZGF0YSA9IGRpY3QoZGF0YSkKLSAgICBpZiBwYXJlbnRfZmllbGQgYW5kIHBhcmVudF9pZDoKLSAgICAgICAgZGF0YVtwYXJlbnRfZmllbGRdID0gcGFyZW50X2lkCi0gICAgaWYgcHJlZml4OgotICAgICAgICBkYXRhW2ZpZWxkICsgJ19fc3RhcnRzd2l0aCddID0gcHJlZml4Ci0gICAga2V5ID0gbWkucGsob3RoZXIpCi0gICAgaWYgc2NvcGVkOgotICAgICAgICBrZXkgPSBtaS5wayhvdGhlcikKLSAgICAgICAgaWYgdHlwZShzY29wZWQpID09IHN0ciBhbmQgc2NvcGVkIGluIGRhdGE6Ci0gICAgICAgICAgICBvYmpfZCA9IHsga2V5IDogZGF0YVtzY29wZWRdIH0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9ial9kID0geyBrZXkgOiBzZG5zaC5nZXRfY3VycmVudF9tb2RlX29iaigpIH0KLSAgICAgICAgbWkuc3BsaXRfY29tcG91bmRfaW50b19kaWN0KG90aGVyLCBrZXksIG9ial9kLCBpc19wcmVmaXggPSBUcnVlKQotICAgICAgICBmb3IgKGssdikgaW4gb2JqX2QuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIGsgIT0ga2V5IGFuZCBub3QgayBpbiBkYXRhOgotICAgICAgICAgICAgICAgIGRhdGFba10gPSB2Ci0gICAgaWYgbWkuaXNfcHJpbWl0aXZlX2NvbXBvdW5kX2tleShvdGhlciwga2V5KToKLSAgICAgICAgIyB0cnkgdG8gdXNlIHRoZSBmaWVsZCB2YWx1ZXMgdG8gcG9wdWxhdGUgdGhlIHByaW1hcnkga2V5Li4uCi0gICAgICAgIHZhbHVlID0gIiIKLSAgICAgICAgcyA9IG1pLmNvbXBvdW5kX2tleV9zZXBhcmF0b3Iob3RoZXIsIGtleSkKLSAgICAgICAgbWlzc2luZyA9IE5vbmUKLSAgICAgICAgZm9yIGtmIGluIG1pLmRlZXBfY29tcG91bmRfa2V5X2ZpZWxkcyhvdGhlciwga2V5KToKLSAgICAgICAgICAgIGlmIGtmIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgdmFsdWUgKz0gZGF0YVtrZl0gKyBzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgdGhlIGZpZWxkcyBtdXN0IGFwcGVhciBpbiBvcmRlcgotICAgICAgICAgICAgICAgIG1pc3NpbmcgPSBrZgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICMgRm9yIHByZWZpeCBleHRlbnRpb24gdG8gd29yayBoZXJlLCB0aGUgb3RoZXIgZmllbGQgbXVzdCBoYXZlCi0gICAgICAgICMgbmFtZWQgdGhlIGZpZWxkLCBmb3IgZXhhbXBsZSBzd2l0Y2gncyBpbnRlcmZhY2UgY29tcGxldGlvbiwKLSAgICAgICAgIyB1c2VzICJvdGhlciA6ICdwb3J0fG51bWJlciciCi0gICAgICAgIHBvc3RfcHJlZml4X21hdGNoID0gRmFsc2UKLSAgICAgICAgaWYgcHJlZml4OgotICAgICAgICAgICAgcG9zdF9wcmVmaXhfbWF0Y2ggPSBUcnVlCi0gICAgICAgICAgICBpZiBtaXNzaW5nID09IGZpZWxkOgotICAgICAgICAgICAgICAgIHZhbHVlICs9IHByZWZpeAotICAgICAgICAgICAgICAgIHBvc3RfcHJlZml4X21hdGNoID0gRmFsc2UKLSAgICAgICAgaWYgbWkub2JqX3R5cGVfaGFzX21vZGVsKG90aGVyKToKLSAgICAgICAgICAgIHJlc3VsdCA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKG90aGVyLCBrZXksIHZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdF90b19tb2RlbC5nZXRfbW9kZWxfZnJvbV91cmwob3RoZXIsIHsga2V5IDogdmFsdWUgfSApCi0gICAgICAgIAotICAgICAgICBpZiBwb3N0X3ByZWZpeF9tYXRjaDoKLSAgICAgICAgICAgICMgdHJ5IHRvIG1hdGNoIHRoZSBtaXNzaW5nIGZpZWxkLCBtb3JlIHdvcmsgb3VnaHQgdG8gYmUgZG9uZQotICAgICAgICAgICAgIyB0byBpZGVudGlmeSB3aGV0aGVyIHRoZSAnbWlzc2luZycgZmllbGQgaXMgdGhlIGNvcnJlZWN0IHRvIG1hdGNoIGFnYWluc3QKLSAgICAgICAgICAgICMgCi0gICAgICAgICAgICByZXN1bHQgPSBbeCBmb3IgeCBpbiByZXN1bHQKLSAgICAgICAgICAgICAgICAgICAgICBpZiBmaWVsZCBpbiB4IGFuZCBzdHIoeFtmaWVsZF0pLnN0YXJ0c3dpdGgocHJlZml4KV0KLSAgICBlbGlmIG1pLmlzX2NvbXBvdW5kX2tleShvdGhlciwga2V5KToKLSAgICAgICAgc2VhcmNoID0ge30KLSAgICAgICAgaWYgcGFyZW50X2lkOgotICAgICAgICAgICAgZnJvbV9pZCA9IHttaS5wayhvYmpfdHlwZSkgOiBwYXJlbnRfaWR9Ci0gICAgICAgICAgICBtaS5zcGxpdF9jb21wb3VuZF9pbnRvX2RpY3Qob2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWkucGsob2JqX3R5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcHJlZml4ID0gVHJ1ZSkKLSAgICAgICAgICAgICMgdGhlIGZpZWxkIG5hbWUgdXNlZCB0byBjb2xsYXBzZSB0aGUgcmVzdWx0IGlzIHRoZSBsYXN0Ci0gICAgICAgICAgICAjIGZpZWxkIGluIHRoZSBjb21wb3VuZCBrZXkgKGlkIG9mICdvdGhlcicpLCAgdGhpcyBtYXkgbmVlZAotICAgICAgICAgICAgIyBpbXByb3ZlbWVudCBmb3Igb3RoZXIgY29tbWFuZHMKLSAgICAgICAgICAgIGZvciBkZWVwX2ZpZWxkIGluIG1pLmRlZXBfY29tcG91bmRfa2V5X2ZpZWxkcyhvdGhlciwga2V5KToKLSAgICAgICAgICAgICAgICBpZiBkZWVwX2ZpZWxkIGluIGZyb21faWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlYXJjaFtkZWVwX2ZpZWxkXSA9IGZyb21faWRbZGVlcF9maWVsZF0KLSAgICAgICAgICAgICAgICBpZiBkZWVwX2ZpZWxkIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIHNlYXJjaFtkZWVwX2ZpZWxkXSA9IGRhdGFbZGVlcF9maWVsZF0KLSAgICAgICAgaWYgc2NvcGVkOgotICAgICAgICAgICAgIyBtb3ZlIGtub3duIGNvbXBvdW5kIGZpZWxkcyBmcm9tIG9ial9kIGludG8gc2VhcmNoLgotICAgICAgICAgICAgZm9yIGRlZXBfZmllbGQgaW4gbWkuZGVlcF9jb21wb3VuZF9rZXlfZmllbGRzKG90aGVyLCBrZXkpOgotICAgICAgICAgICAgICAgIGlmIGRlZXBfZmllbGQgaW4gb2JqX2Q6Ci0gICAgICAgICAgICAgICAgICAgIHNlYXJjaFtkZWVwX2ZpZWxkXSA9IG9ial9kW2RlZXBfZmllbGRdCi0gICAgICAgICMKLSAgICAgICAgIyBwb3NzaWJseSBvdGhlciBzZWFyY2gga2V5cz8KLSAgICAgICAgaWYgcHJlZml4OgotICAgICAgICAgICAgc2VhcmNoW2ZpZWxkICsgJ19fc3RhcnRzd2l0aCddID0gcHJlZml4Ci0gICAgICAgIGlmIGV4cGxpY2l0OgotICAgICAgICAgICAgc2VhcmNoLmNsZWFyKCkKLSAgICAgICAgICAgIHNlYXJjaFtzY29wZWRdPWRhdGFbc2NvcGVkXQotICAgICAgICAgICAgaWYgcHJlZml4OgotICAgICAgICAgICAgICAgIHNlYXJjaFtmaWVsZCArICdfX3N0YXJ0c3dpdGgnXSA9IHByZWZpeAotICAgICAgICBpZiBtaS5vYmpfdHlwZV9oYXNfbW9kZWwob3RoZXIpOgotICAgICAgICAgICAgcmVzdWx0ID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKG90aGVyLCBzZWFyY2gpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQgPSByZXN0X3RvX21vZGVsLmdldF9tb2RlbF9mcm9tX3VybChvdGhlciwgc2VhcmNoICkKLSAgICBlbGlmIG1pLm9ial90eXBlX2hhc19maWVsZChvdGhlciwgZmllbGQpIGFuZCBtaS5pc19wcmltYXJ5X2tleShvdGhlciwgZmllbGQpOgotICAgICAgICByZXN1bHQgPSB1dGlmLmFkZF9kZWxpbShvYmplY3RzX3N0YXJ0aW5nX3dpdGgob3RoZXIsIHByZWZpeCksICcgJykKLSAgICAgICAgY29tcGxldGlvbnMudXBkYXRlKGRpY3QoW1t4LCAiJXMgc2VsZWN0aW9uIiAlIHByZXR0eShvdGhlcildCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcmVzdWx0XSkpCi0gICAgICAgIHJldHVybgotICAgIGVsaWYgbWkub2JqX3R5cGVfaGFzX2ZpZWxkKG9ial90eXBlLCBmaWVsZCkgYW5kIFwKLSAgICAgIG1pLmlzX2ZvcmVpZ25fa2V5KG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICMgbG9vayB1cCB0aGUgdmFsdWVzIG9mIHRoZSBmb3JlaWduIGtleSdzIGZyb20gdGhlIG90aGVyIHRhYmxlCi0gICAgICAgIChma19vYmpfdHlwZSwgZmtfZm4pID0gbWkuZm9yZWlnbl9rZXlfcmVmZXJlbmNlcyhvYmpfdHlwZSwgZmllbGQpCi0gICAgICAgIHJlc3VsdCA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKGZrX29ial90eXBlLCBma19mbiwgcHJlZml4KQotICAgICAgICBmaWVsZCA9IGZrX2ZuCi0gICAgZWxpZiBtaS5vYmpfdHlwZV9oYXNfZmllbGQob2JqX3R5cGUsIGZpZWxkKSBhbmQgZmllbGQgPT0gb3RoZXI6Ci0gICAgICAgICMgSW4gdGhpcyBzaXR1YXRpb24sIHRoaXMgb2JqX3R5cGUgaGFzIGEgZmllbGQsIHdoaWNoIHNlZW1zIHRvIGJlIG5hbWVkCi0gICAgICAgICMgYmFzZWQgb24gdGhlIG90aGVyIG1vZGVsJ3MgbmFtZSwgd2hpY2ggc2VlbXMgdG8gYmUgcmVxdWVzdGluZyB0bwotICAgICAgICAjIHNlYXJjaCB0aGUgb3RoZXIgbW9kZWwuCi0gICAgICAgIGZpZWxkID0gbWkucGsob3RoZXIpCi0gICAgICAgIHJlc3VsdCArPSB1dGlmLmFkZF9kZWxpbShvYmplY3RzX3N0YXJ0aW5nX3dpdGgob3RoZXIsIHByZWZpeCksICcgJykKLSAgICAgICAgY29tcGxldGlvbnMudXBkYXRlKGRpY3QoW1t4LCAiJXMgc2VsZWN0aW9uIiAlIHByZXR0eShvdGhlcildCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcmVzdWx0XSkpCi0gICAgICAgIHJldHVybgotICAgIGVsc2U6Ci0gICAgICAgIGlmIG1pLm9ial90eXBlX2hhc19tb2RlbChvdGhlcik6Ci0gICAgICAgICAgICByZXN1bHQgPSBzZG5zaC5yZXN0X3F1ZXJ5X29iamVjdHMob3RoZXIsIGRhdGEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQgPSByZXN0X3RvX21vZGVsLmdldF9tb2RlbF9mcm9tX3VybChvdGhlciwgZGF0YSkKLQotICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCkKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiY29tcGxldGVfZnJvbV9hbm90aGVyOiIsIG90aGVyLCBmaWVsZCwgZGF0YSwgbGVuKHJlc3VsdCkKLQotICAgIGQgPSB7fQotICAgIGZvciBpdGVtIGluIHJlc3VsdDoKLSAgICAgICAgdmFsdWUgPSBpdGVtLmdldChmaWVsZCkKLSAgICAgICAgIyBYWFggaGFjayB0byBjb3JyZWN0bHkgZm9ybWF0IHRhZyBjb21wbGV0aW9ucwotICAgICAgICBpZiBvdGhlciA9PSAndGFnJzoKLSAgICAgICAgICAgIHZhbHVlID0gJyVzLiVzPSVzJyAlIHR1cGxlKHZhbHVlLnNwbGl0KCd8JykpCi0gICAgICAgICMgYXNzdW1lIHRoYXQgJ3ZhbHVlcycgYXJlICd1bmlxdWUnIHdpdGhpbiByZXN1bHRzCi0gICAgICAgIGlmIHZhbHVlIGFuZCB1dGlmLnF1b3RlX3N0cmluZyh2YWx1ZSkgbm90IGluIGNvbXBsZXRpb25zOgotICAgICAgICAgICAgZFt1dGlmLnF1b3RlX3N0cmluZyhzdHIodmFsdWUpKV0gPSBOb25lCi0KLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICBwcmludCAiY29tcGxldGVfZnJvbV9hbm90aGVyOiBmaW5hbCIsIG90aGVyLCBmaWVsZCwgZGF0YSwgZC5rZXlzKCkKLQotICAgIHJlc3VsdCA9IHV0aWYuYWRkX2RlbGltKGxpc3QoZCksICcgJykKLSAgICBjb21wbGV0aW9ucy51cGRhdGUoZGljdChbW3gsICIlcyBzZWxlY3Rpb24iICUgcHJldHR5KG90aGVyKV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHJlc3VsdF0pKQotCi0KLWRlZiBjb21wbGV0ZV9hbGlhc19jaG9pY2Uob2JqX3R5cGUsIGZpZWxkLCBkYXRhLCBwcmVmaXgsIGNvbXBsZXRpb25zLCBub19jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciA9IE5vbmUsIHNjb3BlZCA9IE5vbmUpOgotICAgICIiIgotICAgIENvbXBsZXRlIHNlbGVjdGlvbnMgZnJvbSBhbiBleHRlcm5hbCBvYmplY3QgKHVubHJlYXRlZCB0byB0aGlzCi0gICAgb2JqZWN0IHN0YWNrJ3MgZGV0YWlscyksIG9ubHkgcmV0dXJuaW5nIHVuaXF1ZSBrZXlzLCBlaXRoZXIKLSAgICBhbGlhc2VzIGZvciB0aGUgb2JqX3R5cGUsIG9yIHByaW1hcnkga2V5cy4KLQotICAgIFRoaXMgb3VnaHQgdG8gYmUgaW1wcm92ZWQsIG9iamVjdHNfc3RhcnRpbmdfd2l0aCgpIGluCi0gICAgdGhlIGNsaS5weSwgaXMgcHJpbWFyaWx5IGludGVuZGVkIHRvIGJlIHVzZSB3aXRoaW4gY2xpLnB5Ci0gICAgIiIiCi0gICAgaWYgbm90IG1pLm9ial90eXBlX2V4aXN0cyhvYmpfdHlwZSk6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJVbmtub3duIG9iai10eXBlOiAlcyIgJSBvYmpfdHlwZSkKLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJjb21wbGV0ZV9hbGlhc19jaG9pY2U6Iiwgb2JqX3R5cGUsIGZpZWxkLCBvdGhlciwgZGF0YSwgcHJlZml4LCBzY29wZWQKLQotICAgIGlmIG90aGVyIGFuZCBub19jb21tYW5kID09IEZhbHNlOgotICAgICAgICBwYXJ0cyA9IG90aGVyLnNwbGl0KCd8JykKLSAgICAgICAgb2JqX3R5cGUgPSBwYXJ0c1swXQotICAgICAgICBpZiBsZW4ocGFydHMpID4gMToKLSAgICAgICAgICAgICMgd2hhdCB0byBkbyB3aXRoIG1vcmUgcGFydHM/Ci0gICAgICAgICAgICBmaWVsZCA9IHBhcnRzWzFdCi0KLSAgICBpZiBub3QgbWkub2JqX3R5cGVfaGFzX2ZpZWxkKG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCJVbmtub3duIGZpZWxkICVzIGZvciBvYmotdHlwZTogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChmaWVsZCwgb2JqX3R5cGUpKQotCi0KLSAgICAjIHF1b3RlIHN0cmluZz8gIGFsaWFzIGNob2ljZXMgb3VnaHQgdG8gbmV2ZXIgaGF2ZSBzcGVjaWFsIGNoYXJhY3RlcnMKLSAgICByZXN1bHQgPSB1dGlmLmFkZF9kZWxpbShvYmplY3RzX3N0YXJ0aW5nX3dpdGgob2JqX3R5cGUsIHByZWZpeCwgZmllbGQpLCAnICcpCi0gICAgY29tcGxldGlvbnMudXBkYXRlKGRpY3QoW1t4LCAiJXMgYWxpYXMgc2VsZWN0aW9uIiAlIHByZXR0eShvYmpfdHlwZSldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiByZXN1bHRdKSkKLQotCi1kZWYgY29tcGxldGVfY29uZmlnKHByZWZpeCwgZGF0YSwgY29tcGxldGlvbnMsIGNvcHkgPSBGYWxzZSk6Ci0gICAgIiIiCi0gICAgQ29tcGxldGUgc2VsZWN0aW9ucyBmb3IgdGhlICdjb3B5JyBjb21tYW5kLgotICAgICIiIgotCi0gICAgY29uZmlncyA9IHNkbnNoLnN0b3JlLmdldF91c2VyX2RhdGFfdGFibGUoJycsICJsYXRlc3QiKQotCi0gICAgIyBleGNsdWRlIHNvdXJjZSBpZiBpdHMgaW4gdGhlIGRhdGEKLSAgICBzb3VyY2UgPSBkYXRhLmdldCgnc291cmNlJywnJykKLSAgICBzcmNfZHN0ID0gJ3NvdXJjZScgaWYgc291cmNlID09ICcnIGVsc2UgJ2Rlc3RpbmF0aW9uJwotCi0gICAgYW55ID0gRmFsc2UKLSAgICBhbnlfY29uZmlnID0gRmFsc2UKLQotICAgIGlmIGNvcHk6Ci0gICAgICAgIGlmICdydW5uaW5nLWNvbmZpZycuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgaWYgc291cmNlICE9ICdydW5uaW5nLWNvbmZpZyc6Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbnNbJ3J1bm5pbmctY29uZmlnICddID0gJ3J1bm5pbmctY29uZmlnICVzJyAlIHNyY19kc3QKLQotICAgIGZvciBjIGluIGNvbmZpZ3M6Ci0gICAgICAgIGlmICgnY29uZmlnOi8vJyArIGNbJ25hbWUnXSkuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgaWYgc291cmNlICE9ICJjb25maWc6Ly8iICsgY1snbmFtZSddOgotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zWyJjb25maWc6Ly8iICsgY1snbmFtZSddICsgJyAnXSA9IFwKLSAgICAgICAgICAgICAgICAgICAgJ1NhdmVkIENvbmZpZ3VyYXRpb24gJXMnICUgc3JjX2RzdAotICAgICAgICAgICAgYW55X2NvbmZpZyA9IFRydWUKLQotICAgIGlmIHNvdXJjZSAhPSAnJyBhbmQgJ2NvbmZpZzovLycuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICBjb21wbGV0aW9uc1snY29uZmlnOi8vJ10gPSAnY29uZmlnIHByZWZpeCAlcycgJSBzcmNfZHN0Ci0KLSAgICBpZiBjb3B5OgotICAgICAgICBmb3IgYWRkaXRpb25zIGluIFsiaHR0cDovLyIsICJmaWxlOi8vIiwgImZ0cDovLyIsICJ0ZnRwOi8vIiwgJ2NvbmZpZzovLycgXToKLSAgICAgICAgICAgIGlmIGFkZGl0aW9ucy5zdGFydHN3aXRoKHByZWZpeCk6Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbnNbYWRkaXRpb25zXSA9ICdvdGhlciAlcycgJSBzcmNfZHN0Ci0KLQotZGVmIGNvbXBsZXRlX2ludGVyZmFjZV9saXN0KHByZWZpeCwgZGF0YSwgY29tcGxldGlvbnMpOgotICAgICIiIgotICAgIEludGVyZmFjZSBsaXN0cyBhcmUgY29tbWEgc2VwYXJhdGVkIGludGVyZmFjZXMgb3IgcmFuZ2UKLSAgICBvZiBpbnRlcmZhY2VzLiAgCi0KLSAgICBUaGUgcHJlZml4IGhlcmUgcGxheXMgYW4gaW1wb3J0YW50IHJvbGUgaW4gZGV0ZXJtaW5pbmcgd2hhdAotICAgIG91Z2h0IHRvIGFwcGVhciBuZXN0LgotICAgICIiIgotICAgIGlmIG5vdCAnc3dpdGNoJyBpbiBkYXRhOgotICAgICAgICByZXR1cm4KLQotICAgIGRlZiBzd2l0Y2hfaW50ZXJmYWNlc19zdGFydGluZ3dpdGgoaW50ZXJmYWNlcywgaW50ZiwgcHJlZml4LCBjb21wbGV0aW9ucyk6Ci0gICAgICAgIHJlc3VsdCA9IFtwcmVmaXggKyB4IGZvciB4IGluIGludGVyZmFjZXMua2V5cygpIGlmIHguc3RhcnRzd2l0aChpbnRmKV0KLSAgICAgICAgY29tcGxldGlvbnMudXBkYXRlKGRpY3QoW1t4LCAia25vd24gaW50ZXJmYWNlIl0gZm9yIHggaW4gcmVzdWx0XSkpCi0gICAgICAgIHJldHVybgotCi0gICAgZGVmIGhpZ2hlcl9pbnRlcmZhY2VzKGludGVyZmFjZXMsIGludGYsIHByZWZpeCwgY29tcGxldGlvbnMpOgotICAgICAgICAjIGRlcGVuZCBvbiBoYXZpbmcgYW4gaW50ZWdlciBhcyB0aGUgbGFzdCBjb21wb25lbnQKLSAgICAgICAgbGFzdF9kaWdpdHMgPSByZS5jb21waWxlKHInKC4qKShcZCspJCcpCi0gICAgICAgIG1hdGNoID0gbGFzdF9kaWdpdHMuc2VhcmNoKGludGYpCi0gICAgICAgIGlmIG1hdGNoOiAKLSAgICAgICAgICAgIGlmX25hbWUgPSBtYXRjaC5ncm91cCgxKQotICAgICAgICAgICAgZmlyc3QgPSBpbnQobWF0Y2guZ3JvdXAoMikpCi0gICAgICAgICAgICBmb3IgaSBpbiBpbnRlcmZhY2VzOgotICAgICAgICAgICAgICAgIG1hdGNoID0gbGFzdF9kaWdpdHMuc2VhcmNoKGkpCi0gICAgICAgICAgICAgICAgaWYgbWF0Y2ggYW5kIG1hdGNoLmdyb3VwKDEpID09IGlmX25hbWUgYW5kIGludChtYXRjaC5ncm91cCgyKSkgPiBmaXJzdDoKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbnNbcHJlZml4ICsgbWF0Y2guZ3JvdXAoMildID0gJ2ludGVmYWNlIGNob2ljZS4nCi0KLSAKLSAgICBwb3J0cyA9IHJlc3RfdG9fbW9kZWwuZ2V0X21vZGVsX2Zyb21fdXJsKCdpbnRlcmZhY2VzJywgZGF0YSkKLSAgICBpbnRlcmZhY2VzID0gZGljdChbW3hbJ25hbWUnXSwgeF0gZm9yIHggaW4gcG9ydHNdKQotICAgIHNpYyA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKCdzd2l0Y2gtaW50ZXJmYWNlLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcsIGRhdGFbJ3N3aXRjaCddKQotICAgIGludGVyZmFjZXMudXBkYXRlKGRpY3QoW1t4WyduYW1lJ10sIHhdIGZvciB4IGluIHNpY10pKQotCi0gICAgIyBwZWVrIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgcHJlZml4OgotICAgICMgIGlmIGl0J3MgYSBkYXNoLCB0aGVuIGNob29zZSBpbnRlcmZhY2VzIHdpdGggdGhlIHNhbWUgcHJlZml4LAotICAgICMgIGlmIGl0cyBhIGNvbW1hLCB0aGVuIGNob3NlIGFub3RoZXIgaW50ZXJmYWNlCi0gICAgCi0gICAgZnJvbnRfaXRlbSA9ICcnCi0gICAgaWYgbGVuKHByZWZpeCkgPiAwOgotICAgICAgICBpZiBwcmVmaXhbLTFdID09ICctJzoKLSAgICAgICAgICAgICMgY29tcGxldGUgbW9yZSBjaG9pY2VzCi0gICAgICAgICAgICBwcmV2aW91cyA9IHByZWZpeFs6LTFdCi0gICAgICAgICAgICBpZiBsZW4ocHJldmlvdXMpOgotICAgICAgICAgICAgICAgIGxhc3RfaXRlbSA9IHByZXZpb3VzLnNwbGl0KCcsJylbLTFdCi0gICAgICAgICAgICAgICAgaWYgbGFzdF9pdGVtIGluIGludGVyZmFjZXM6Ci0gICAgICAgICAgICAgICAgICAgIGhpZ2hlcl9pbnRlcmZhY2VzKGludGVyZmFjZXMsIGxhc3RfaXRlbSwgcHJlZml4LCBjb21wbGV0aW9ucykKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIAotICAgICAgICBpZiBwcmVmaXhbLTFdICE9ICcsJzoKLSAgICAgICAgICAgIGlmIGxlbihwcmVmaXgpID4gMjoKLSAgICAgICAgICAgICAgICBwYXJ0cyA9IHByZWZpeC5zcGxpdCgnLCcpCi0gICAgICAgICAgICAgICAgbGFzdF9pdGVtID0gcGFydHNbLTFdCi0gICAgICAgICAgICAgICAgIyBzZWUgaWYgdGhlIGxhc3RfaXRlbSBvZiBwcmVmaXggaXMgYSBrbm93biBpbnRlcmZhY2UuCi0gICAgICAgICAgICAgICAgaWYgbGFzdF9pdGVtIGluIGludGVyZmFjZXM6Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zW3ByZWZpeCArICcsJ10gICAgID0gJ0xpc3Qgb2YgaW50ZXJmYWNlcycKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbnNbcHJlZml4ICsgJy0nXSAgICAgPSAnUmFuZ2Ugb2YgaW50ZXJmYWNlcycKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbnNbcHJlZml4ICsgJyA8Y3I+J10gPSAnQ3VycmVudCBpbnRlcmZhY2VzIHNlbGVjdGlvbicKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgIyBzZWUgaWYgdGhlIGxhc3QgaXRlbSBpcyBhIHJhbmdlIChpbnRmIGluIGZyb250LCB0aGVuIGEgZGFzaCkKLSAgICAgICAgICAgICAgICBjID0gW3kgZm9yIHkgaW4gW3ggZm9yIHggaW4gaW50ZXJmYWNlcyBpZiBsYXN0X2l0ZW0uc3RhcnRzd2l0aCh4KV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGxhc3RfaXRlbSkgPiBsZW4oeSkgYW5kIGxhc3RfaXRlbVtsZW4oeSldID09ICctJ10KLSAgICAgICAgICAgICAgICBpZiBsZW4oYyk6Ci0gICAgICAgICAgICAgICAgICAgICMgZm91bmQgaW50ZXJmYWNlIHdpdGggYSBkYXNoIGFmdGVyd2FyZHMKLSAgICAgICAgICAgICAgICAgICAgIyBjb3VsZCBhY3R1YWxseSBjaGVjayB0aGF0IGV2ZXJ5dGhpbmcgYWZ0ZXIgJy0nIGlzIGRpZ2l0cwotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uc1twcmVmaXggKyAnLCddICAgICA9ICdMaXN0IG9mIGludGVyZmFjZXMnCi0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zW3ByZWZpeCArICcgPGNyPiddID0gJ0N1cnJlbnQgaW50ZXJmYWNlcyBzZWxlY3Rpb24nCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICAgICAgZmlyc3RfaXRlbXMgPSAnJy5qb2luKFsnJXMsJyAlIHggZm9yIHggaW4gcGFydHNbOi0xXV0pCi0gICAgICAgICAgICAgICAgc3dpdGNoX2ludGVyZmFjZXNfc3RhcnRpbmd3aXRoKGludGVyZmFjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfaXRlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfaXRlbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zKQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICAjIHNpbmdsZSB0b2tlbiBwcmVmaXgKLSAgICAgICAgICAgIHN3aXRjaF9pbnRlcmZhY2VzX3N0YXJ0aW5nd2l0aChpbnRlcmZhY2VzLCBwcmVmaXgsICcnLCBjb21wbGV0aW9ucykKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICAjIGxhc3QgY2hhcmFjdGVyIGlzIGEgY29tbWEKLSAgICAgICAgaWYgbGVuKHByZWZpeCkgPT0gMToKLSAgICAgICAgICAgIHJldHVybiAjIGp1c3QgYSBjb21tYQotCi0gICAgICAgICMgY3JhY2sgaW50byBwYXJ0cywgc2VlIGlmIHRoZSBsYXN0IGlzIGEgcmFuZ2UsIGlmIHNvLCB0aGVuCi0gICAgICAgICMgdGhlIGNob2ljZXMgYXJlIGEgY29tbWEgb3IgYSA8Y3I+Ci0gICAgICAgIHBhcnRzID0gcHJlZml4LnNwbGl0KCcsJykKLSAgICAgICAgZnJvbnRfaXRlbSA9ICcsJy5qb2luKHBhcnRzWzotMV0pICsgJywnCi0gICAgICAgIHByZWZpeCA9IHBhcnRzWy0xXQotICAgICAgICAjIGZhbGwgdGhyb3VnaAotCi0gICAgc3dpdGNoX2ludGVyZmFjZXNfc3RhcnRpbmd3aXRoKGludGVyZmFjZXMsIHByZWZpeCwgZnJvbnRfaXRlbSwgY29tcGxldGlvbnMpCi0gICAgcmV0dXJuCi0KLQotZGVmIGNvbXBsZXRlX3N0YXRpY2Zsb3dfYWN0aW9ucyhwcmVmaXgsIGRhdGEsIGNvbXBsZXRpb25zKToKLSAgICAjIHBlZWsgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBwcmVmaXg6Ci0gICAgIyAgaWYgaXQncyBhIGNvbW1hLCB0aGVuIGNob29zZSBhbGwgdGhlIHBvc3NpYmxlIGFjdGlvbnMKLSAgICAjICBpZiBpdHMgYSBlcXVhbCwgdGhlbiBkaXNwbGF5IHRoZSBjaG9pY2VzIGZvciB0aGlzIG9wdGlvbgotICAgIAotICAgIHByZWZpeF9wYXJ0cyA9IFtdCi0KLSAgICBhY3Rpb25zID0gewotICAgICAgICAnb3V0cHV0PScgICAgICAgICAgICA6ICdEZXNjcmliZSBwYWNrZXQgZm9yd2FyZGluZycsCi0gICAgICAgICdlbnF1ZXVlPScgICAgICAgICAgIDogJ0VucXVldWUgcGFja2V0JywKLSAgICAgICAgJ3N0cmlwLXZsYW49JyAgICAgICAgOiAnU3RyaXAgVmxhbicsCi0gICAgICAgICdzZXQtdmxhbi1pZD0nICAgICAgIDogJ1NldCBWbGFuJywKLSAgICAgICAgJ3NldC12bGFuLXByaW9yaXR5PScgOiAnU2V0IFByaW9yaXR5JywKLSAgICAgICAgJ3NldC1zcmMtbWFjPScgICAgICAgOiAnU2V0IFNyYyBNYWMnLAotICAgICAgICAnc2V0LWRzdC1tYWM9JyAgICAgICA6ICdTZXQgRHN0IE1hYycsCi0gICAgICAgICdzZXQtdG9zLWJpdHM9JyAgICAgIDogJ1NldCBUT1MgQml0cycsCi0gICAgICAgICdzZXQtc3JjLWlwPScgICAgICAgIDogJ1NldCBJUCBTcmMnLAotICAgICAgICAnc2V0LWRzdC1pcD0nICAgICAgICA6ICdTZXQgSVAgRHN0JywKLSAgICAgICAgJ3NldC1zcmMtcG9ydD0nICAgICAgOiAnU2V0IFNyYyBJUCBQb3J0JywKLSAgICAgICAgJ3NldC1kc3QtcG9ydD0nICAgICAgOiAnU2V0IGRzdCBJUCBQb3J0JywKLSAgICB9Ci0KLSAgICBhY3Rpb25fY2hvaWNlcyA9IHsKLSAgICAgICAgKCdvdXRwdXQ9JywgJ2FsbCcpICAgICAgICAgIDogJ0ZvcndhcmQgdG8gYWxsIHBvcnRzJywKLSAgICAgICAgKCdvdXRwdXQ9JywgJ2NvbnRyb2xsZXInKSAgIDogJ0ZvcndhcmQgdG8gY29udHJvbGxlcicsCi0gICAgICAgICgnb3V0cHV0PScsICdsb2NhbCcpICAgICAgICA6ICdGb3J3YXJkIHRvIGxvY2FsJywKLSAgICAgICAgKCdvdXRwdXQ9JywgJ2luZ3Jlc3MtcG9ydCcpIDogJ0ZvcndhcmQgdG8gaW5ncmVzcyBwb3J0JywKLSAgICAgICAgKCdvdXRwdXQ9JywgJ25vcm1hbCcpICAgICAgIDogJ0ZvcndhcmQgdG8gaW5ncmVzcyBwb3J0JywKLSAgICAgICAgKCdvdXRwdXQ9JywgJ2Zsb29kJykgICAgICAgIDogJ0ZvcndhcmQsIGZsb29kIHBvcnRzJywKLSAgICAgICAgKCdvdXRwdXQ9JywgKCc8bnVtYmVyPicsICc8bnVtYmVyPicpKSAgOiAnRm9yd2FyZCwgdG8gYSBzcGVjaWZpYyBwb3J0JywKLQotICAgICAgICAoJ2VucXVldWU9JywgKCc8cG9ydE51bWJlcj4uPHF1ZXVlSUQ+JywgJzxwb3J0TnVtYmVyPi48cXVldWVJRD4nKSkgOiAnRW5xdWV1ZSB0byBwb3J0LCBxdWV1ZSBpZCcsCi0KLSAgICAgICAgKCdzZXQtdmxhbi1pZD0nLCgnPHZsYW4gbnVtYmVyPicsJzx2bGFuIG51bWJlcj4nKSkgOiAnU2V0IHZsYW4gdG8gPHZsYW4gbnVtYmVyPicsCi0gICAgICAgIAotICAgICAgICAoJ3NldC12bGFuLXByaW9yaXR5PScsKCc8dmxhbiBwcmlvPicsJzx2bGFuIHByaW8+JykpIDogJ1NldCB2bGFuIHByaW9yaXR5IHRvIDxwcmlvPicsCi0KLSAgICAgICAgKCdzZXQtdG9zLWJpdHM9JywoJzxudW1iZXI+JywpKSA6ICdTZXQgVE9TIGJpdHMnLAotICAgICAgICAoJ3NldC1zcmMtbWFjPScsKCc8c3JjLW1hYy1hZGRyZXNzPicsKSkgOiAnU2V0IHNyYyBtYWMgYWRkcmVzcycsCi0KLSAgICAgICAgKCdzZXQtZHN0LW1hYz0nLCgnPGRzdC1tYWMtYWRkcmVzcz4nLCkpIDogJ1NldCBkc3QgbWFjIGFkZHJlc3MnLAotICAgICAgICAKLSAgICAgICAgKCdzZXQtc3JjLWlwPScsKCc8c3JjLWlwLWFkZHJlc3M+JywpKSA6ICdTZXQgc3JjIG1hYyBhZGRyZXNzJywKLSAgICAgICAgCi0gICAgICAgICgnc2V0LWRzdC1pcD0nLCgnPHNyYy1pcC1hZGRyZXNzPicsKSkgOiAnU2V0IGRzdCBpcCBhZGRyZXNzJywKLSAgICB9Ci0KLSAgICBmb3IgcHMgaW4gcHJlZml4LnNwbGl0KCcsJyk6Ci0gICAgICAgIHBzX3BhcnRzID0gcHMuc3BsaXQoJz0nKQotICAgICAgICBpZiBsZW4ocHNfcGFydHMpID09IDEgYW5kIHBzX3BhcnRzWzBdICE9ICcnOgotICAgICAgICAgICAgIyBwb3NzaWJseSBpbmNvbXBsZXRlIGl0ZW0gYmVmb3JlIHRoZSAnPScKLSAgICAgICAgICAgIGZvciBjaG9pY2UgaW4gW3ggZm9yIHggaW4gYWN0aW9ucy5rZXlzKCkgaWYgeC5zdGFydHN3aXRoKHBzX3BhcnRzWzBdKV06Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbnNbY2hvaWNlXSA9IGFjdGlvbnNbY2hvaWNlXQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGVsaWYgbGVuKHBzX3BhcnRzKSA9PSAyOgotICAgICAgICAgICAgaWYgbGVuKHBzX3BhcnRzWzBdKSBhbmQgbGVuKHBzX3BhcnRzWzFdKToKLSAgICAgICAgICAgICAgICBwcmVmaXhfcGFydHMuYXBwZW5kKChwc19wYXJ0c1swXSwgcHNfcGFydHNbMV0pKQotICAgICAgICAgICAgZWxpZiBsZW4ocHNfcGFydHNbMF0pIGFuZCBsZW4ocHNfcGFydHNbMV0pID09IDA6Ci0gICAgICAgICAgICAgICAgcHJlZml4X3BhcnRzLmFwcGVuZCgocHNfcGFydHNbMF0sICkpCi0KLSAgICBpZiBwcmVmaXggPT0gJycgb3IgcHJlZml4LmVuZHN3aXRoKCcsJyk6Ci0gICAgICAgIGNvbXBsZXRpb25zLnVwZGF0ZShhY3Rpb25zKQotICAgIGVsaWYgcHJlZml4LmVuZHN3aXRoKCc9Jyk6Ci0gICAgICAgIGxhc3QgPSBwcmVmaXhfcGFydHNbLTFdCi0gICAgICAgIGZvciAoKG1hdGNoLCBuZXh0KSwgZGVzYykgaW4gYWN0aW9uX2Nob2ljZXMuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIG1hdGNoWzotMV0gIT0gbGFzdFswXToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgdHlwZShuZXh0KSA9PSBzdHI6Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbnNbbWF0Y2ggKyBuZXh0XSA9IGRlc2MKLSAgICAgICAgICAgIGVsaWYgdHlwZShuZXh0KSA9PSB0dXBsZToKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uc1sobWF0Y2ggKyBuZXh0WzBdLCBtYXRjaCArIG5leHRbMF0pXSA9IGRlc2MKLSAgICAgICAgICAgICMgZWxzZT8gIGRpc3BsYXkgZXJyb3I/Ci0gICAgZWxpZiBsZW4ocHJlZml4X3BhcnRzKToKLSAgICAgICAgbGFzdCA9IHByZWZpeF9wYXJ0c1stMV0KLSAgICAgICAgaWYgbGVuKGxhc3QpID09IDE6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsaWYgbGVuKGxhc3QpID09IDI6Ci0gICAgICAgICAgICAjIHRyeSB0byBmaW5kIHRoZSBsZWZ0IGl0ZW0KLSAgICAgICAgICAgIGZvciAoKG1hdGNoLCBuZXh0KSwgZGVzYykgaW4gYWN0aW9uX2Nob2ljZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBtYXRjaFs6LTFdICE9IGxhc3RbMF06Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgdHlwZShuZXh0KSA9PSBzdHIgYW5kIG5leHQgPT0gbGFzdFsxXToKLSAgICAgICAgICAgICAgICAgICAgZW9sID0gcHJlZml4ICsgJyA8Y3I+JwotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uc1soZW9sLCBlb2wpXSA9ICdDb21wbGV0ZSBDaG9pY2UnCi0gICAgICAgICAgICAgICAgICAgIGFub3RoZXIgPSBwcmVmaXggKyAnLCcKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbnNbKGFub3RoZXIsIGFub3RoZXIpXSA9ICdBZGQgYW5vdGhlciBhY3Rpb24nCi0gICAgICAgICAgICAgICAgZWxpZiB0eXBlKG5leHQpID09IHN0ciBhbmQgbmV4dC5zdGFydHN3aXRoKGxhc3RbMV0pOgotICAgICAgICAgICAgICAgICAgICBiYXNlX3BhcnQgPSAnJy5qb2luKHByZWZpeC5ycGFydGl0aW9uKCcsJylbOi0xXSkKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbnNbYmFzZV9wYXJ0ICsgbGFzdFswXSArICc9JyArIG5leHRdID0gJ0NvbXBsZXRlIHNlbGVjdGlvbicKLSAgICAgICAgICAgICAgICBlbGlmIGxlbihsYXN0WzFdKToKLSAgICAgICAgICAgICAgICAgICAgIyBoYXJkIHRvIHNheSB3aGF0IGNob2ljZXMgY2FuIGJlIGFkZGVkIGhlcmUsCi0gICAgICAgICAgICAgICAgICAgICMgdGhlcmUgYXJlIHNvbWUgY2hhcmFjdGVycyBhZnRlciAnPScsIGJ1dCBub25lCi0gICAgICAgICAgICAgICAgICAgICMgd2hpY2ggbWF0Y2ggc29tZSBwcmVmaXguCi0gICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAgICAgICAgICMgaG93IHRvIG1hdGNoIHRoZSB2YWx1ZXM/Ci0KLQotZGVmIGNvbXBsZXRlX2Rlc2NyaXB0aW9uX3ZlcnNpb25zKHByZWZpeCwgY29tcGxldGlvbnMpOgotICAgIGZvciBlbGVtZW50IGluIG9zLmxpc3RkaXIoc2Ruc2guY29tbWFuZF9wYWNrYWdlc19wYXRoKCkpOgotICAgICAgICBpZiBlbGVtZW50ID09ICdfX2luaXRfXy5weSc6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsaWYgZWxlbWVudC5zdGFydHN3aXRoKCd2ZXJzaW9uJyk6Ci0gICAgICAgICAgICAjIGxlbignZWxlbWVudCcpIC0+IDcKLSAgICAgICAgICAgIHZlcnNpb24gPSAiJTIuMmYiICUgKGZsb2F0KGVsZW1lbnRbNzpdKSAvIDEwMCkKLSAgICAgICAgICAgIGlmIHZlcnNpb25bLTI6XSA9PSAnMDAnOgotICAgICAgICAgICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uWzoyXSArICcwJwotICAgICAgICAgICAgaWYgdmVyc2lvbi5zdGFydHN3aXRoKHByZWZpeCk6Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbnNbdmVyc2lvbl0gPSAnVkVSU0lPTicKLSAgICAgICAgICAgIGlmIHZlcnNpb24gPT0gJzIuMCc6ICAgICMgY3VycmVudGx5IGlmIDIuMCBleGlzdHMsIHNvIGRvZXMgMS4wCi0gICAgICAgICAgICAgICAgaWYgJzEuMCcuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uc1snMS4wJ10gPSAnVkVSU0lPTicKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGVsZW1lbnQuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zW2VsZW1lbnRdID0gJ1ZFUlNJT04nCi0KLQotZGVmIGNvbXBsZXRlX2xvZ19uYW1lcyhwcmVmaXgsIGRhdGEsIGNvbXBsZXRpb25zKToKLSAgICAiIiIKLSAgICBFbnVtZXJhdGUgYWxsIHRoZSBsb2cgZmlsZSBjaG9pY2VzIGJhc2VkIG9uIHJlcGxpZXMgZnJvbSB0aGUgUkVTVCBBUEkuCi0gICAgIiIiCi0gICAgY29udHJvbGxlciA9IGRhdGEuZ2V0KCdjb250cm9sbGVyJykKLSAgICBmb3IgaXBfcG9ydCBpbiBjb250cm9sbGVyX2lwX2FuZF9wb3J0KGNvbnRyb2xsZXIpOgotICAgICAgICB1cmwgPSBsb2dfdXJsKGlwX2FuZF9wb3J0ID0gaXBfcG9ydCkKLSAgICAgICAgbG9nX25hbWVzID0gY29tbWFuZC5zZG5zaC5yZXN0X3NpbXBsZV9yZXF1ZXN0X3RvX2RpY3QodXJsKQotICAgICAgICBmb3IgbG9nIGluIGxvZ19uYW1lczoKLSAgICAgICAgICAgIGxvZ19uYW1lID0gbG9nWydsb2cnXQotICAgICAgICAgICAgaWYgbG9nX25hbWUuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zW2xvZ19uYW1lICsgJyAnXSA9ICdMb2cgU2VsZWN0aW9uJwotCi0KLQotZGVmIGluaXRfY29tcGxldGlvbnMoYnMsIG1vZGkpOgotICAgIGdsb2JhbCBzZG5zaCwgbWkKLSAgICBzZG5zaCA9IGJzCi0gICAgbWkgPSBtb2RpCi0KLSAgICBjb21tYW5kLmFkZF9jb21wbGV0aW9uKCdjb21wbGV0ZS1vYmplY3QtZmllbGQnLCBjb21wbGV0ZV9vYmplY3RfZmllbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnb2JqX3R5cGUnICAgICA6ICckb2JqLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudF9maWVsZCcgOiAnJHBhcmVudC1maWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyZW50X2lkJyAgICA6ICckY3VycmVudC1tb2RlLW9iai1pZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICckZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByZWZpeCcgICAgICAgOiAnJHRleHQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgICAgICAgOiAnJHNjb3BlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICckb3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZGUnICAgICAgICAgOiAnJG1vZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb25zJyAgOiAnJGNvbXBsZXRpb25zJ319KQotCi0gICAgY29tbWFuZC5hZGRfY29tcGxldGlvbignY29tcGxldGUtdGFnLW1hcHBpbmcnLCBjb21wbGV0ZV90YWdfbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydvYmpfdHlwZScgICAgIDogJyRvYmotdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyZW50X2ZpZWxkJyA6ICckcGFyZW50LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRfaWQnICAgIDogJyRjdXJyZW50LW1vZGUtb2JqLWlkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJyRmaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJlZml4JyAgICAgICA6ICckdGV4dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICAgICAgICA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NvcGVkJyAgICAgICA6ICckc2NvcGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJyRvdGhlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kZScgICAgICAgICA6ICckbW9kZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbnMnICA6ICckY29tcGxldGlvbnMnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9jb21wbGV0aW9uKCdjb21wbGV0ZS1mcm9tLWFub3RoZXInLCBjb21wbGV0ZV9mcm9tX2Fub3RoZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnb3RoZXInICAgICAgICA6ICckb3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ial90eXBlJyAgICAgOiAnJG9iai10eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRfZmllbGQnIDogJyRwYXJlbnQtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudF9pZCcgICAgOiAnJGN1cnJlbnQtbW9kZS1vYmotaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnJGZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmVmaXgnICAgICAgIDogJyR0ZXh0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICAgIDogJyRzY29wZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb25zJyAgOiAnJGNvbXBsZXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub19jb21tYW5kJyAgIDogJyRpcy1uby1jb21tYW5kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHBsaWNpdCcgICAgIDogJyRleHBsaWNpdCcsIH19KQotCi0gICAgY29tbWFuZC5hZGRfY29tcGxldGlvbignY29tcGxldGUtYWxpYXMtY2hvaWNlJywgY29tcGxldGVfYWxpYXNfY2hvaWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J29ial90eXBlJyAgICA6ICckb2JqLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICA6ICckZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ290aGVyJyAgICAgICA6ICckb3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByZWZpeCcgICAgICA6ICckdGV4dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICAgOiAnJHNjb3BlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbnMnIDogJyRjb21wbGV0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9fY29tbWFuZCcgIDogJyRpcy1uby1jb21tYW5kJywgfX0pCi0KLSAgICBjb21tYW5kLmFkZF9jb21wbGV0aW9uKCdjb21wbGV0ZS1jb25maWcnLCBjb21wbGV0ZV9jb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsncHJlZml4JzogJyR0ZXh0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJzogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9ucyc6ICckY29tcGxldGlvbnMnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9jb21wbGV0aW9uKCdjb21wbGV0ZS1jb25maWctY29weScsIGNvbXBsZXRlX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydwcmVmaXgnOiAnJHRleHQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb25zJzogJyRjb21wbGV0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29weScgOiBUcnVlIH19KQotCi0gICAgY29tbWFuZC5hZGRfY29tcGxldGlvbignY29tcGxldGUtaW50ZXJmYWNlLWxpc3QnLCBjb21wbGV0ZV9pbnRlcmZhY2VfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydwcmVmaXgnOiAnJHRleHQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb25zJzogJyRjb21wbGV0aW9ucyd9fSkKLQotICAgIGNvbW1hbmQuYWRkX2NvbXBsZXRpb24oJ2NvbXBsZXRlLXN0YXRpY2Zsb3ctYWN0aW9ucycsIGNvbXBsZXRlX3N0YXRpY2Zsb3dfYWN0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydwcmVmaXgnOiAnJHRleHQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb25zJzogJyRjb21wbGV0aW9ucyd9fSkKLQotICAgIGNvbW1hbmQuYWRkX2NvbXBsZXRpb24oJ2Rlc2NyaXB0aW9uLXZlcnNpb25zJywgY29tcGxldGVfZGVzY3JpcHRpb25fdmVyc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsncHJlZml4JzogJyR0ZXh0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9ucyc6ICckY29tcGxldGlvbnMnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9jb21wbGV0aW9uKCdjb21wbGV0ZS1sb2ctbmFtZXMnLCBjb21wbGV0ZV9sb2dfbmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsncHJlZml4JyAgICAgOiAnJHRleHQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9ucyc6ICckY29tcGxldGlvbnMnfX0pCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvY19kYXRhX2hhbmRsZXJzLnB5IGIvY2xpL2NsaS9jX2RhdGFfaGFuZGxlcnMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA0YzY0ODEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9jX2RhdGFfaGFuZGxlcnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0ODIgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTEsMjAxMiwyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jCi0jIERBVEEgSEFORExFUlMKLSMKLQotaW1wb3J0IHJlCi1pbXBvcnQgbW9kaQotaW1wb3J0IHV0aWYKLWltcG9ydCBlcnJvcgotaW1wb3J0IGNvbW1hbmQKLWltcG9ydCB0aW1lCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCByZXN0X3RvX21vZGVsCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWZyb20gbWlkdyBpbXBvcnQgKgotCi1DT01NQU5EX0NJRFJfUkUgPSByZS5jb21waWxlKHInXigoXGR7MSwzfVwuKXszfVxkezEsM30pLyhcZHsxLDJ9PykkJykKLQotCi1kZWYgc3BsaXRfY2lkcl9kYXRhX2hhbmRsZXIodmFsdWUsIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9pcD0naXAnLCBkZXN0X25ldG1hc2s9J25ldG1hc2snLCBuZWcgPSBGYWxzZSk6Ci0gICAgIiIiCi0gICAgU3BsaXQgYSBjaWRyIGFkZHJlc3MgKGUuZy4gMTkyLjE2OC4xLjEvMjQpIGludG8gc2VwYXJhdGUgSVAgYWRkcmVzcwotICAgIGFuZCBuZXRtYXNrIHZhbHVlLiBUaGUgbmFtZXMgb2YgdGhlIGlwIGFuZCBuZXRtYXNrIGZpZWxkcyBhcmUKLSAgICBzcGVjaWZpZWQgKHR5cGljYWxseSBkaXJlY3RseSBpbiB0aGUgc2FtZSBibG9jay9kaWN0aW9uYXJ5IHdoZXJlCi0gICAgdGhlIGFyZ3VtZW50IGRhdGEgaGFuZGxlciBpcyBzcGVjaWZlZCkgd2l0aCBhICdkZXN0LWlwJyBhbmQgYQotICAgICdkZXN0LW5ldG1hc2snIHZhbHVlcy4KLSAgICAiIiIKLSAgICBnbG9iYWwgc2Ruc2gKLQotICAgIG0gPSBDT01NQU5EX0NJRFJfUkUubWF0Y2godmFsdWUpCi0gICAgaWYgbToKLSAgICAgICAgYml0cyA9IGludChtLmdyb3VwKDMpKQotICAgICAgICBpZiBiaXRzID4gMzI6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcigibWF4IGNpZHIgYmxvY2sgaXMgMzIiKQotCi0gICAgICAgIGRhdGFbZGVzdF9pcF0gPSBtLmdyb3VwKDEpCi0gICAgICAgIGlmIG5lZzoKLSAgICAgICAgICAgIGRhdGFbZGVzdF9uZXRtYXNrXSA9IHV0aWYuaW5ldF9udG9hKH4oMHhmZmZmZmZmZiA8PCAoMzIgLSBiaXRzKSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhW2Rlc3RfbmV0bWFza10gPSB1dGlmLmluZXRfbnRvYSgoMHhmZmZmZmZmZiA8PCAoMzIgLSBiaXRzKSkpCi0KLQotZGVmIGFsaWFzX3RvX3ZhbHVlX2hhbmRsZXIodmFsdWUsIG9ial90eXBlLCBkYXRhLCBmaWVsZCwgb3RoZXIgPSBOb25lKToKLSAgICAiIiIKLSAgICBDb21wdXRlIHRoZSBhbGlhcyB2YWx1ZSBmb3IgdGhlIG5hbWVkIGZpZWxkIGZvciB0aGUgb2JqX3R5cGUuCi0gICAgUGxhY2UgdGhlIHJlc3VsdGluZyBjb252ZXJ0ZWQgZmllbGQgaW50byB0aGUgZGF0YSBkaWN0aW9uYXJ5LgotCi0gICAgU2luY2UgdGhpcyBpcyBhIGRhdGEtaGFuZGxlciwgdGhlIGRhdGEgZGljdCBtdXN0IGJlIHVwZGF0ZWQKLSAgICBldmVuIGlmIHRoaXMgaXNuJ3QgYW4gYWxpYXMsIG90aGVyd2lzZSB0aGUgZmllbGQgdmFsdWUgaXMgbG9zdC4KLSAgICAiIiIKLSAgICBnbG9iYWwgc2Ruc2gKLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgcHJpbnQgJ2FsaWFzX3RvX3ZhbHVlX2hhbmRsZXI6ICcsIHZhbHVlLCBvYmpfdHlwZSwgZGF0YSwgZmllbGQKLQotICAgIGlmIGZpZWxkICE9IG1pLnBrKG9ial90eXBlKToKLSAgICAgICAgIyBpZiB0aGlzIGlzIGEgZm9yZ2VpZ24ga2V5LCB1c2UgdGhlIG9ial90eXBlIG9mIHRoZSBmay4KLSAgICAgICAgaWYgbWkuaXNfZm9yZWlnbl9rZXkob2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgICAgIChvYmpfdHlwZSwgZmtfbmFtZSkgPSBtaS5mb3JlaWduX2tleV9yZWZlcmVuY2VzKG9ial90eXBlLCBmaWVsZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgWFhYIHBvc3NpYmx5IG90aGVyIGNob2ljZXMgdG8gZGV0ZXJtaW5lIGFsaWFzX29ial90eXBlPwotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ2FsaWFzX3RvX3ZhbHVlX2hhbmRsZXI6IGZpZWxkICVzIG5vIG9iai10eXBlIHJlZiAlcyAnICUgXAotICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCwgb2JqX3R5cGUpCi0gICAgICAgIAotICAgIGlmIG90aGVyOgotICAgICAgICBwYXJ0cyA9IG90aGVyLnNwbGl0KCd8JykKLSAgICAgICAga2V5ID0gbWkucGsocGFydHNbMF0pICMgcGFydHNbMF0gPC0gZmlyc3QgcGFydCBvZiBvdGhlcgotICAgICAgICBpZiBsZW4ocGFydHMpID4gMDoKLSAgICAgICAgICAgIG90aGVyID0gcGFydHNbMF0KLSAgICAgICAgICAgIGtleSA9IGZpZWxkCi0gICAgICAgICAgICAjIG5vdCBjbGVhciB3aGV0aGVyIHRoZSBwYXJ0WzFdIGlzIHVzZWZ1bCwgdHdvIHBhcnRzIHVzZWQKLSAgICAgICAgICAgICMgaW4gb3RoZXIgZnVuY3Rpb25zLCBleGFtcGxlIGNvbXBsZXRlLWZyb20tYW5vdGhlcigpCi0gICAgICAgIG90aGVyID0gbWkub2JqX3R5cGVfcmVsYXRlZF9jb25maWdfb2JqX3R5cGUob3RoZXIpCi0gICAgICAgIGNvbnZlcnRlZF92YWx1ZSA9IGNvbnZlcnRfYWxpYXNfdG9fb2JqZWN0X2tleShvdGhlciwgdmFsdWUpCi0KLSAgICAgICAgcGsgPSBtaS5wayhvdGhlcikKLSAgICAgICAgaWYgbWkuaXNfY29tcG91bmRfa2V5KG90aGVyLCBwaykgYW5kIGNvbnZlcnRlZF92YWx1ZSAhPSB2YWx1ZToKLSAgICAgICAgICAgIHBrX2RpY3QgPSB7IHBrIDogY29udmVydGVkX3ZhbHVlIH0KLSAgICAgICAgICAgIG1pLnNwbGl0X2NvbXBvdW5kX2ludG9fZGljdChvdGhlciwgcGssIHBrX2RpY3QsIGlzX3ByZWZpeCA9IFRydWUpCi0gICAgICAgICAgICBmb3IgKGssdikgaW4gcGtfZGljdC5pdGVtcygpOgotICAgICAgICAgICAgICAgIGlmIGsgIT0gcGs6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSB2Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgImFsaWFzX3RvX3ZhbHVlX2hhbmRsZXI6IGNvbXBvdW5kIChvdGhlcikgJXM6JXMgPC0gJXM6JXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrLCBkYXRhW2tdLCBvdGhlciwgY29udmVydGVkX3ZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY2FzZSA9IG1pLmdldF9vYmpfdHlwZV9maWVsZF9jYXNlX3NlbnNpdGl2ZShvdGhlciwgZmllbGQpCi0gICAgICAgICAgICBkYXRhW2ZpZWxkXSA9IHV0aWYuY29udmVydF9jYXNlKGNhc2UsIGNvbnZlcnRlZF92YWx1ZSkKLQotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgICAgIHByaW50ICJhbGlhc190b192YWx1ZV9oYW5kbGVyOiAob3RoZXIpICVzOiVzIDwtICVzOiVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAoa2V5LCBkYXRhW2tleV0sIG90aGVyLCB2YWx1ZSkKLSAgICBlbHNlOgotICAgICAgICAjIFNvbWUgb2JqX3R5cGVzLCBmb3IgZXhhbXBsZSwgaG9zdCwgaGF2ZSBubyBjYXNzYW5kcmEgZGF0YSwKLSAgICAgICAgIyBidXQgZG8gaGF2ZSBhIHJlbGF0ZWQgb2JqX3R5cGUgd2hpY2ggaXMgaW4gdGhlIHN0b3JlCi0gICAgICAgIG9ial90eXBlID0gbWkub2JqX3R5cGVfcmVsYXRlZF9jb25maWdfb2JqX3R5cGUob2JqX3R5cGUpCi0gICAgICAgIGNvbnZlcnRlZF92YWx1ZSA9IGNvbnZlcnRfYWxpYXNfdG9fb2JqZWN0X2tleShvYmpfdHlwZSwgdmFsdWUpCi0KLSAgICAgICAgcGsgPSBtaS5wayhvYmpfdHlwZSkKLSAgICAgICAgaWYgbWkuaXNfY29tcG91bmRfa2V5KG9ial90eXBlLCBwaykgYW5kIGNvbnZlcnRlZF92YWx1ZSAhPSB2YWx1ZToKLSAgICAgICAgICAgIHBrX2RpY3QgPSB7IHBrIDogY29udmVydGVkX3ZhbHVlIH0KLSAgICAgICAgICAgIHNwbGl0X29ial90eXBlID0gb3RoZXIgaWYgb3RoZXIgIT0gTm9uZSBlbHNlIG9ial90eXBlIAotICAgICAgICAgICAgbWkuc3BsaXRfY29tcG91bmRfaW50b19kaWN0KHNwbGl0X29ial90eXBlLCBwaywgcGtfZGljdCwgaXNfcHJlZml4ID0gVHJ1ZSkKLSAgICAgICAgICAgIGZvciAoayx2KSBpbiBwa19kaWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgaWYgayAhPSBwazoKLSAgICAgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKLSAgICAgICAgICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiYWxpYXNfdG9fdmFsdWVfaGFuZGxlcjogY29tcG91bmQgJXM6JXMgPC0gJXM6JXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrLCBkYXRhW2tdLCBvYmpfdHlwZSwgY29udmVydGVkX3ZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY2FzZSA9IG1pLmdldF9vYmpfdHlwZV9maWVsZF9jYXNlX3NlbnNpdGl2ZShvYmpfdHlwZSwgZmllbGQpCi0gICAgICAgICAgICBkYXRhW2ZpZWxkXSA9IHV0aWYuY29udmVydF9jYXNlKGNhc2UsIGNvbnZlcnRlZF92YWx1ZSkKLQotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgcHJpbnQgImFsaWFzX3RvX3ZhbHVlX2hhbmRsZXI6ICAlczolcyA8LSAlczolcyIgJSAoZmllbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2ZpZWxkXSwgb2JqX3R5cGUsIHZhbHVlKQotCi0KLWRlZiByZXBsYWNlX3ZhbHVlX2hhbmRsZXIodmFsdWUsIG9ial90eXBlLCBkYXRhLCBmaWVsZCwgb3RoZXIgPSBOb25lKToKLSAgICAiIiIKLSAgICBVc2UgdGhlIG90aGVyIGZpZWxkIHdoZW4gaXRzIHByZXNlbnQgdG8gZmluZCBhIHJlbGF0ZWQgb2JqX3R5cGUsCi0gICAgbG9vayBmb3IgdGhlIGZpZWxkIGluIHRoYXQgc3RydWN0dXJlIHRvIHBvcHVsYXRlIGRhdGEuCi0gICAgIiIiCi0gICAgZ2xvYmFsIHNkbnNoCi0KLSAgICB0YWJsZSA9IG9ial90eXBlCi0KLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgcHJpbnQgInJlcGxhY2VfdmFsdWVfaGFuZGxlcjogb2JqX3R5cGU6ICVzIHZhbHVlOiAlcyBkYXRhOiAlcyBmaWVsZCAlcyBvdGhlciAlcyIgJSBcCi0gICAgICAgICAgICAgICAgKG9ial90eXBlLCB2YWx1ZSwgZGF0YSwgZmllbGQsIG90aGVyKQotICAgIGZpZWxkcyA9IFtmaWVsZF0KLSAgICBpZiBvdGhlcjoKLSAgICAgICAgcGFydHMgPSBvdGhlci5zcGxpdCgnfCcpCi0gICAgICAgIHRhYmxlID0gcGFydHNbMF0KLSAgICAgICAgZmllbGRzID0gcGFydHNbMTpdCi0KLSAgICB0cnk6Ci0gICAgICAgIHJvdyA9IHNkbnNoLmdldF9vYmplY3RfZnJvbV9zdG9yZSh0YWJsZSwgdmFsdWUpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoIlVua25vd24gdmFsdWUgJXMgKCVzKSIgJSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUsIG9ial90eXBlKSkKLSAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAgICBpZiBmaWVsZCBub3QgaW4gcm93OgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoIlVua25vd24gZmllbGQgJXMgKCVzKSIgJSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCwgb2JqX3R5cGUpKQotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgICAgIHByaW50ICdyZXBsYWNlX3ZhbHVlX2hhbmRsZXI6IHNldCAlcyA8LSAlcyBmcm9tIG9iai10eXBlICVzJyAlXAotICAgICAgICAgICAgICAgICAgKGZpZWxkLCByb3dbZmllbGRdLCB0YWJsZSkKLSAgICAgICAgZGF0YVtmaWVsZF0gPSByb3dbZmllbGRdCi0KLQotZGVmIGVuYWJsZV9kaXNhYmxlX3RvX2Jvb2xlYW5faGFuZGxlcih2YWx1ZSwgZGF0YSwgZmllbGQpOgotICAgIGlmIHZhbHVlID09ICdlbmFibGUnOgotICAgICAgICBkYXRhW2ZpZWxkXSA9IFRydWUKLSAgICBpZiB2YWx1ZSA9PSAnZGlzYWJsZSc6Ci0gICAgICAgIGRhdGFbZmllbGRdID0gRmFsc2UKLQotCi1kZWYgZGF0ZV90b19pbnRlZ2VyX2hhbmRsZXIodmFsdWUsIGRhdGEsIGZpZWxkKToKLSAgICBpZiAodmFsdWUgPT0gJ25vdycgb3IgdmFsdWUgPT0gJ2N1cnJlbnQnKToKLSAgICAgICAgZGF0YVtmaWVsZF0gPSBpbnQodGltZS50aW1lKCkqMTAwMCkKLQotICAgIHRyeToKLSAgICAgICAgZGF0YVtmaWVsZF0gPSBpbnQodmFsdWUpCi0gICAgZXhjZXB0OgotICAgICAgICBwYXNzCi0KLSAgICBmb3IgZixwcmUgaW4gWygnJVktJW0tJWRUJUg6JU06JVMnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICgnJVktJW0tJWQgJUg6JU06JVMnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICgnJVktJW0tJWRUJUg6JU06JVMleicsIE5vbmUpLAotICAgICAgICAgICAgICAgICAgKCclWS0lbS0lZCAlSDolTTolUyV6JywgTm9uZSksCi0gICAgICAgICAgICAgICAgICAoJyVZLSVtLSVkJywgTm9uZSksCi0gICAgICAgICAgICAgICAgICAoJyVtLSVkJywgJyVZLScpLAotICAgICAgICAgICAgICAgICAgKCclSDolTScsICclWS0lbS0lZFQnKV06Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHQgPSB2YWx1ZQotICAgICAgICAgICAgaWYgcHJlOgotICAgICAgICAgICAgICAgIHByZWYgPSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZShwcmUpCi0gICAgICAgICAgICAgICAgZiA9IHByZSArIGYKLSAgICAgICAgICAgICAgICB0ID0gcHJlZiArIHQKLQotICAgICAgICAgICAgdGhldGltZSA9IGRhdGV0aW1lLmRhdGV0aW1lLnN0cnB0aW1lKHQsIGYpCi0gICAgICAgICAgICBkYXRhW2ZpZWxkXSA9IGludCh0aW1lLm1rdGltZSh0aGV0aW1lLnRpbWV0dXBsZSgpKSoxMDAwKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KLQotSEVYX1JFID0gcmUuY29tcGlsZShyJ14weFswLTlhLWZBLUZdKyQnKQotCi1kZWYgaGV4X3RvX2ludGVnZXJfaGFuZGxlcih2YWx1ZSwgZGF0YSwgZmllbGQpOgotICAgIGlmIEhFWF9SRS5tYXRjaChzdHIodmFsdWUpKToKLSAgICAgICAgX3ZhbHVlID0gc3RyKGludCh2YWx1ZSwgMTYpKQotICAgIGVsc2U6Ci0gICAgICAgIF92YWx1ZSA9IHN0cihpbnQodmFsdWUpKQotICAgIGRhdGFbZmllbGRdID0gX3ZhbHVlCi0KLQotZGVmIF9pbnZlcnRfbmV0bWFzayh2YWx1ZSk6Ci0gICAgc3BsaXRfYnl0ZXMgPSB2YWx1ZS5zcGxpdCgnLicpCi0gICAgcmV0dXJuICIlcy4lcy4lcy4lcyIgJSAoMjU1LWludChzcGxpdF9ieXRlc1swXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LWludChzcGxpdF9ieXRlc1sxXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LWludChzcGxpdF9ieXRlc1syXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LWludChzcGxpdF9ieXRlc1szXSkpCi0KLQotZGVmIGNvbnZlcnRfaW52ZXJzZV9uZXRtYXNrX2hhbmRsZXIodmFsdWUsIGRhdGEsIGZpZWxkKToKLSAgICBkYXRhW2ZpZWxkXSA9IF9pbnZlcnRfbmV0bWFzayh2YWx1ZSkKLQotCi1kZWYgaW50ZXJmYWNlX3JhbmdlcyhuYW1lcyk6Ci0gICAgIiIiCi0gICAgR2l2ZW4gYSBsaXN0IG9mIGludGVyZmFjZXMgKHN0cmluZ3MpLCBpbiBhbnkgb3JkZXIsIHdpdGggYSBudW1lcmljIHN1ZmZpeCwKLSAgICBjb2xsZWN0IHRvZ2V0aGVyIHRoZSBwcmVmaXggY29tcG9uZW50cywgYW5kIGNyZWF0ZSByYW5nZXMgd2l0aAotICAgIGFkamFjZW50IG51bWVyaWMgaW50ZXJmYWNlcywgc28gdGhhdCBhIGxhcmdlIGNvbGxlY3Rpb24gb2YgbmFtZXMKLSAgICBiZWNvbWVzIGVhc2llciB0byByZWFkLiAgQXQgdGhlIHdvcnN0LCB0aGUgbGlzdCB3aWxsIGJlIGFzCi0gICAgY29tcGxpY2F0ZWQgYXMgdGhlIG9yaWdpbmFsICh3aGljaCB3b3VsZCB0eXBpY2FsbHkgYmUgdmVyeSB1bmxpa2VseSkKLQotICAgIEV4YW1wbGU6IG5hbWVzIDwtIFsnRXRoMCcsICdFdGgxJywgJ0V0aDInLCAgJ0V0aDQnLCAnRXRoNScsICdFdGg4J10KLSAgICAgICAgICAgICByZXN1bHQgPC0gWydFdGgwLTInLCAnRXRoNC01JywgJ0V0aDgnXQotCi0gICAgICAgICAgICAgbmFtZXMgPC0gWycxJywnMicsJzMnXQotICAgICAgICAgICAgIHJlc3VsdCA8LSBbJzEtMyddCi0KLSAgICAiIiIKLSAgICAjIGNvbGxlY3QgdGhlIGludGVyZmFjZXMgaW50byBkaWN0aW9uYXJpZXMgYmFzZWQgb24gcHJlZml4ZXMKLSAgICAjIGFoZWFkIG9mIGdyb3VwcyBvZiBkaWdpdHMuCi0gICAgZ3JvdXBzID0ge30KLQotICAgIGRlZiBpc19kaWdpdChjKToKLSAgICAgICAgY19vcmQgPSBvcmQoYykKLSAgICAgICAgaWYgY19vcmQgPj0gb3JkKCcwJykgYW5kIGNfb3JkIDw9IG9yZCgnOScpOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBmb3IgbmFtZSBpbiBuYW1lczoKLSAgICAgICAgaWYgaXNfZGlnaXQobmFtZVstMV0pOgotICAgICAgICAgICAgZm9yIGluZGV4IGluIHJhbmdlKC0yLCAtbGVuKG5hbWUpLTEsIC0xKToKLSAgICAgICAgICAgICAgICBpZiBub3QgaXNfZGlnaXQobmFtZVtpbmRleF0pOgotICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAxCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpbmRleCA9IC1sZW4obmFtZSkKLQotICAgICAgICAgICAgcHJlZml4ID0gbmFtZVs6aW5kZXhdCi0gICAgICAgICAgICBudW1iZXIgPSBpbnQobmFtZVtpbmRleDpdKQotICAgICAgICAgICAgaWYgbm90IHByZWZpeCBpbiBncm91cHM6Ci0gICAgICAgICAgICAgICAgZ3JvdXBzW3ByZWZpeF0gPSBbXQotICAgICAgICAgICAgZ3JvdXBzW3ByZWZpeF0uYXBwZW5kKG51bWJlcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGdyb3Vwc1tuYW1lXSA9IFtdCi0KLSAgICBmb3IgcHJlZml4IGluIGdyb3VwczoKLSAgICAgICAgZ3JvdXBzW3ByZWZpeF0gPSBzb3J0ZWQodXRpZi51bmlxdWVfbGlzdF9mcm9tX2xpc3QoZ3JvdXBzW3ByZWZpeF0pKQotICAgIAotICAgIHJhbmdlcyA9IFtdCi0gICAgZm9yIChwcmVmaXgsIHZhbHVlKSBpbiBncm91cHMuaXRlbXMoKToKLSAgICAgICAgaWYgbGVuKHZhbHVlKSA9PSAwOgotICAgICAgICAgICAgcmFuZ2VzLmFwcGVuZChwcmVmaXgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb3cgPSB2YWx1ZVswXQotICAgICAgICAgICAgcHJldiA9IGxvdwotICAgICAgICAgICAgZm9yIG5leHQgaW4gdmFsdWVbMTpdICsgW3ZhbHVlWy0xXSArIDJdOiAjICtbXSBmbHVzaGVzIGxhc3QgaXRlbQotICAgICAgICAgICAgICAgIGlmIG5leHQgPiBwcmV2ICsgMToKLSAgICAgICAgICAgICAgICAgICAgaWYgcHJldiA9PSBsb3c6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZXMuYXBwZW5kKCclcyVzJyAlIChwcmVmaXgsIGxvdykpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZXMuYXBwZW5kKCclcyVzLSVzJyAlIChwcmVmaXgsIGxvdywgcHJldikpCi0gICAgICAgICAgICAgICAgICAgIGxvdyA9IG5leHQKLSAgICAgICAgICAgICAgICBwcmV2ID0gbmV4dAotIAotICAgIHJldHVybiByYW5nZXMKLQotCi0jcHJpbnQgaW50ZXJmYWNlX3JhbmdlcyhbJzEnLCcyJywnMycsICdvZSddKQotI3ByaW50IGludGVyZmFjZV9yYW5nZXMoWydFdGgxJywnRXRoMicsJ0V0aDMnLCAnRXRoNCcsICdvNScsICdvNiddKQotCi0KLWRlZiBjaGVja19taXNzaW5nX2ludGVyZmFjZShzd2l0Y2gsIGludGVyZmFjZSk6Ci0gICAgIwotICAgICMgVGhlIHN3aXRjaCB2YWx1ZSBjb3VsZCBiZSBhIGNvbXBvdW5kIGtleSByZWZlcmVuY2UgdG8gYQotICAgICMgc3dpdGNoLCBpZiB0aGVyZSdzIGEgJ3wnIGluIHRoZSBzd2l0Y2ggdmFsdWQsIHRyeSB0byBndWVzcwotICAgICMgd2hpY2ggZW50cnkgaXMgdGhlIHN3aXRjaAotCi0gICAgcGFydHMgPSBzd2l0Y2guc3BsaXQoJ3wnKQotICAgIGlmIGxlbihwYXJ0cykgPiAxOgotICAgICAgICBmb3IgcGFydCBpbiBwYXJ0czoKLSAgICAgICAgICAgIGlmIHV0aWYuQ09NTUFORF9EUElEX1JFLm1hdGNoKHBhcnQpOgotICAgICAgICAgICAgICAgIHN3aXRjaCA9IHBhcnQKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3dpdGNoID0gcGFydFswXQotCi0gICAgdHJ5OgotICAgICAgICByb3cgPSByZXN0X3RvX21vZGVsLmdldF9tb2RlbF9mcm9tX3VybCgnc3dpdGNoZXMnLCB7J2RwaWQnIDogc3dpdGNoIH0pCi0gICAgZXhjZXB0OgotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbiBvciBzZG5zaC5kZWJ1Z19iYWNrdHJhY2U6Ci0gICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgcm93ID0gW10KLQotICAgIGlmIGxlbihyb3cpID09IDAgb3Igcm93WzBdLmdldCgnaXAtYWRkcmVzcycsICcnKSA9PSAnJzoKLSAgICAgICAgc2Ruc2gud2FybmluZygnc3dpdGNoICVzIGN1cnJlbnRseSBub3QgYWN0aXZlLCAnCi0gICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAlcyBtYXkgbm90IGV4aXN0JyAlCi0gICAgICAgICAgICAgICAgICAgICAgKHN3aXRjaCwgaW50ZXJmYWNlKSkKLSAgICAgICAgcmV0dXJuCi0KLSAgICB0cnk6Ci0gICAgICAgIHBvcnRzID0gcmVzdF90b19tb2RlbC5nZXRfbW9kZWxfZnJvbV91cmwoJ2ludGVyZmFjZXMnLCB7J2RwaWQnIDogc3dpdGNoIH0pCi0gICAgZXhjZXB0OgotICAgICAgICAjIGNhbid0IHZhbGlkYXRlIGN1cnJlbnQgbGlzdCBvZiBpbnRlcmZhY2UgbmFtZXMKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZl9uYW1lcyA9IFt4Wydwb3J0TmFtZSddLmxvd2VyKCkgZm9yIHggaW4gcG9ydHNdCi0gICAgaWYgbm90IGludGVyZmFjZS5sb3dlcigpIGluIGlmX25hbWVzOgotICAgICAgICAjIHByZS1zZXJ2Y2UgY2FzZSwgdHJ5IHRvIGlkZW50aWZ5IHVuaXF1ZSByYW5nZXMKLSAgICAgICAgcmFuZ2VzID0gaW50ZXJmYWNlX3JhbmdlcyhbeFsncG9ydE5hbWUnXSBmb3IgeCBpbiBwb3J0c10pCi0KLSAgICAgICAgc2Ruc2gud2FybmluZyggJ2FjdGl2ZSBzd2l0Y2ggaGFzIG5vIGludGVyZmFjZSAiJXMiLCAnIAotICAgICAgICAgICAgICAgICAgJ2tub3duOiAlcycgJSAoaW50ZXJmYWNlLCAnLCAnLmpvaW4ocmFuZ2VzKSkgKyAKLSAgICAgICAgICAgICAgICAgICdcblVzZSBcImV4aXQ7IG5vIGludGVyZmFjZSAlc1wiIHRvIHJlbW92ZScgJSBpbnRlcmZhY2UpCi0KLQotZGVmIHdhcm5fbWlzc2luZ19pbnRlcmZhY2UodmFsdWUsIGRhdGEsIGZpZWxkLCBpc19ubywgb2JqX3R5cGUsIG9ial92YWx1ZSApOgotICAgIGlmIG5vdCBpc19ubzoKLSAgICAgICAgIyBuZWVkIHN3aXRjaCwgaWZfbmFtZSAKLSAgICAgICAgcGtfZGF0YSA9IHsgbWkucGsob2JqX3R5cGUpIDogb2JqX3ZhbHVlIH0KLSAgICAgICAgbWkuc3BsaXRfY29tcG91bmRfaW50b19kaWN0KG9ial90eXBlLCBtaS5wayhvYmpfdHlwZSksIHBrX2RhdGEsIFRydWUpCi0gICAgICAgIHN3aXRjaCA9IHBrX2RhdGEuZ2V0KCdzd2l0Y2gnKQotICAgICAgICBpZiBzd2l0Y2ggPT0gTm9uZToKLSAgICAgICAgICAgIHN3aXRjaCA9IHBrX2RhdGEuZ2V0KCdkcGlkJykKLSAgICAgICAgaWYgc3dpdGNoID09IE5vbmU6Ci0gICAgICAgICAgICBzd2l0Y2ggPSBkYXRhLmdldCgnc3dpdGNoJykKLSAgICAgICAgaWYgc3dpdGNoID09IE5vbmU6Ci0gICAgICAgICAgICBzd2l0Y2ggPSBkYXRhLmdldCgnZHBpZCcpCi0gICAgICAgIGlmIHN3aXRjaCA9PSBOb25lOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoIkNhbid0IGlkZW50aWZ5IHN3aXRjaCBmb3IgdmFsaWRhdGlvbiIpCi0gICAgICAgIGZvcmNlID0gVHJ1ZSBpZiBkYXRhLmdldCgnZm9yY2UnLCAnJykgIT0gJycgZWxzZSBGYWxzZQotICAgICAgICBjaGVja19taXNzaW5nX2ludGVyZmFjZShzd2l0Y2gsIHZhbHVlKQotICAgIGRhdGFbZmllbGRdID0gdmFsdWUKLQotZGVmIGNvbnZlcnRfaW50ZXJmYWNlX3RvX3BvcnQodmFsdWUsIGRhdGEsIGZpZWxkLCBvdGhlciA9IE5vbmUsIHNjb3BlZCA9IE5vbmUpOgotICAgICMgbG9vayBmb3IgdGhlIHN3aXRjaCBuYW1lIGluIGRhdGEKLSAgICBpZiBzY29wZWQ6Ci0gICAgICAgIGRwaWQgPSBkYXRhLmdldChzY29wZWQpCi0gICAgZWxpZiAnZHBpZCcgaW4gZGF0YToKLSAgICAgICAgZHBpZCA9IGRhdGFbJ2RwaWQnXQotICAgIGVsc2U6Ci0gICAgICAgIGRwaWQgPSBkYXRhLmdldCgnc3dpdGNoJywgJycpICMgcG9zc2libHkgb3RoZXIgY2hvaWNlcwotCi0gICAgIyBpZiBpdHMgbm90IGEgc3BlY2lmaWMgc3dpdGNoLCBubyBjb252ZXJzaW9uIGlzIHBvc3NpYmxlCi0gICAgIyBzaG91bGQgdGhlIHZhbHVlIGJlIHBhc3NlZCB0aHJvdWdoPwotICAgIGlmIGRwaWQgPT0gJyc6Ci0gICAgICAgIGRhdGFbZmllbGRdID0gdmFsdWUKLSAgICAgICAgcmV0dXJuCi0KLSAgICBwb3J0cyA9IHJlc3RfdG9fbW9kZWwuZ2V0X21vZGVsX2Zyb21fdXJsKCdpbnRlcmZhY2VzJywgeydkcGlkJyA6IGRwaWR9KQotICAgIGZvciBwb3J0IGluIHBvcnRzOgotICAgICAgICBpZiBwb3J0Wydwb3J0TmFtZSddID09IHZhbHVlOgotICAgICAgICAgICAgZGF0YVtmaWVsZF0gPSBwb3J0Wydwb3J0TnVtYmVyJ10gIyBzaG91bGQgdGhpcyBiZSBhIHN0cmluZz8KLSAgICAgICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoIkNhbid0IGZpbmQgcG9ydCAlcyBvbiBzd2l0Y2ggJXMiICUKLSAgICAgICAgICAgICAgICAodmFsdWUsIGRwaWQpKQotCi0KLWRlZiBjb252ZXJ0X3RhZ190b19wYXJ0cyh2YWx1ZSwgZGF0YSwgbmFtZXNwYWNlX2tleSwgbmFtZV9rZXksIHZhbHVlX2tleSk6Ci0gICAgIiIiCi0gICAgU3BsaXQgYSB0YWcgb2YgdGhlIGZvcm0gW25zXS5uYW1lPXZhbHVlIGludG8gdGhlIHRocmVlCi0gICAgY29tcG9uZW50IHBhcnRzCi0gICAgIiIiCi0KLSAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgcHJpbnQgImNvbnZlcnRfdGFnX3RvX3BhcnRzOiAlcyAlcyAlcyAlcyAlcyIgJSAoCi0gICAgICAgICAgICAgICAgdmFsdWUsIGRhdGEsIG5hbWVzcGFjZV9rZXksIG5hbWVfa2V5LCB2YWx1ZV9rZXkpCi0KLSAgICB0YWdfYW5kX3ZhbHVlID0gdmFsdWUuc3BsaXQoJz0nKQotICAgIGlmIGxlbih0YWdfYW5kX3ZhbHVlKSAhPSAyOgotICAgICAgICByYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcigidGFnIDxbdGFnLW5hbWVzcGFjZS5dbmFtZT49PHZhbHVlPiIpCi0KLSAgICB0YWdfcGFydHMgPSB0YWdfYW5kX3ZhbHVlWzBdLnNwbGl0KCcuJykKLSAgICBpZiBsZW4odGFnX3BhcnRzKSA9PSAxOgotICAgICAgICB0YWdfbmFtZXNwYWNlID0gImRlZmF1bHQiCi0gICAgICAgIHRhZ19uYW1lID0gdGFnX3BhcnRzWzBdCi0gICAgZWxpZiBsZW4odGFnX3BhcnRzKSA+PSAyOgotICAgICAgICB0YWdfbmFtZXNwYWNlID0gJy4nLmpvaW4odGFnX3BhcnRzWzotMV0pCi0gICAgICAgIHRhZ19uYW1lID0gdGFnX3BhcnRzWy0xXQotCi0gICAgIyBzaG91bGQgdGhlIG5hbWVzIGhhdmUgc29tZSBzcGVjaWZpYyB2YWxpZGF0aW9uPwotICAgIGRhdGFbbmFtZXNwYWNlX2tleV0gPSB0YWdfbmFtZXNwYWNlCi0gICAgZGF0YVtuYW1lX2tleV0gICAgICA9IHRhZ19uYW1lCi0gICAgZGF0YVt2YWx1ZV9rZXldICAgICA9IHRhZ19hbmRfdmFsdWVbMV0KLQotCi1kZWYgaW5pdF9kYXRhX2hhbmRsZXJzKGJzLCBtb2RpKToKLSAgICBnbG9iYWwgc2Ruc2gsIG1pCi0gICAgc2Ruc2ggPSBicwotICAgIG1pID0gbW9kaQotCi0gICAgY29tbWFuZC5hZGRfYXJndW1lbnRfZGF0YV9oYW5kbGVyKCdzcGxpdC1jaWRyLWRhdGEnLCBzcGxpdF9jaWRyX2RhdGFfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeyd2YWx1ZSc6ICckdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rlc3RfaXAnOiAnJGRlc3QtaXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rlc3RfbmV0bWFzayc6ICckZGVzdC1uZXRtYXNrJ319KQotCi0gICAgY29tbWFuZC5hZGRfYXJndW1lbnRfZGF0YV9oYW5kbGVyKCdzcGxpdC1jaWRyLWRhdGEtaW52ZXJzZScsIHNwbGl0X2NpZHJfZGF0YV9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3ZhbHVlJzogJyR2YWx1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YSc6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVzdF9pcCc6ICckZGVzdC1pcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVzdF9uZXRtYXNrJzogJyRkZXN0LW5ldG1hc2snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZycgOiBUcnVlfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hcmd1bWVudF9kYXRhX2hhbmRsZXIoJ2FsaWFzLXRvLXZhbHVlJywgYWxpYXNfdG9fdmFsdWVfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeyd2YWx1ZSc6ICckdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJzogJyRmaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3RoZXInOiAnJG90aGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmpfdHlwZScgOiAnJG9iai10eXBlJ319KQotCi0gICAgY29tbWFuZC5hZGRfYXJndW1lbnRfZGF0YV9oYW5kbGVyKCdyZXBsYWNlLXZhbHVlJywgcmVwbGFjZV92YWx1ZV9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3ZhbHVlJzogJyR2YWx1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YSc6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnOiAnJGZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcic6ICckb3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ial90eXBlJyA6ICckb2JqLXR5cGUnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hcmd1bWVudF9kYXRhX2hhbmRsZXIoJ2VuYWJsZS1kaXNhYmxlLXRvLWJvb2xlYW4nLCBlbmFibGVfZGlzYWJsZV90b19ib29sZWFuX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsndmFsdWUnOiAnJHZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJzogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCc6ICckZmllbGQnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hcmd1bWVudF9kYXRhX2hhbmRsZXIoJ2RhdGUtdG8taW50ZWdlcicsIGRhdGVfdG9faW50ZWdlcl9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3ZhbHVlJyA6ICckdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnIDogJyRmaWVsZCd9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FyZ3VtZW50X2RhdGFfaGFuZGxlcignaGV4LXRvLWludGVnZXInLCBoZXhfdG9faW50ZWdlcl9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3ZhbHVlJyA6ICckdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnIDogJyRmaWVsZCd9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FyZ3VtZW50X2RhdGFfaGFuZGxlcignY29udmVydC1pbnZlcnNlLW5ldG1hc2snLCBjb252ZXJ0X2ludmVyc2VfbmV0bWFza19oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3ZhbHVlJyA6ICckdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICA6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnIDogJyRmaWVsZCd9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FyZ3VtZW50X2RhdGFfaGFuZGxlcignd2Fybi1taXNzaW5nLWludGVyZmFjZScsIHdhcm5fbWlzc2luZ19pbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsndmFsdWUnICAgICA6ICckdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnJGZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19ubycgICAgIDogJyRpcy1uby1jb21tYW5kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmpfdHlwZScgIDogJyRjdXJyZW50LW1vZGUtb2JqLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ial92YWx1ZScgOiAnJGN1cnJlbnQtbW9kZS1vYmotaWQnfX0pCi0KLSAgICBjb21tYW5kLmFkZF9hcmd1bWVudF9kYXRhX2hhbmRsZXIoJ2NvbnZlcnQtaW50ZXJmYWNlLXRvLXBvcnQnLCBjb252ZXJ0X2ludGVyZmFjZV90b19wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3ZhbHVlJyAgICAgOiAnJHZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgIDogJyRmaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICA6ICckb3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgICAgOiAnJHNjb3BlZCd9fSkKLQotICAgIGNvbW1hbmQuYWRkX2FyZ3VtZW50X2RhdGFfaGFuZGxlcignY29udmVydC10YWctdG8tcGFydHMnLCBjb252ZXJ0X3RhZ190b19wYXJ0cywKLSAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeyd2YWx1ZScgICAgICAgICAgOiAnJHZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgICAgICAgOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZV9rZXknICA6ICckbmFtZXNwYWNlLWtleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZV9rZXknICAgICAgIDogJyRuYW1lLWtleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVfa2V5JyAgICAgIDogJyR2YWx1ZS1rZXknfX0pCmRpZmYgLS1naXQgYS9jbGkvY2xpL2NfdmFsaWRhdGlvbnMucHkgYi9jbGkvY2xpL2NfdmFsaWRhdGlvbnMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGMwODM4MTIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9jX3ZhbGlkYXRpb25zLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDk3ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDExLDIwMTIsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGVycm9yCi1pbXBvcnQgY29tbWFuZAotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgbnVtYmVycwotaW1wb3J0IHJlCi1pbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdXRpZgotaW1wb3J0IHJlc3RfdG9fbW9kZWwKLWltcG9ydCBkYXRldGltZQotaW1wb3J0IHNvY2tldAotCi1mcm9tIG1pZHcgaW1wb3J0ICoKLQotZGVmIHZhbGlkYXRlX3N0cmluZyh0eXBlZGVmLCB2YWx1ZSk6Ci0gICAgIiIiCi0gICAgVmFsaWRhdGUgYSBzdHJpbmcsIGNoZWNrIGxlbmd0aC4KLSAgICAiIiIKLQotICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSB0eXBlZGVmIGhhcyBhbnkgcGF0dGVybiByZXN0cmljdGlvbnMuIElmIGl0IGRvZXMsCi0gICAgIyB0aGVuIG1hdGNoIGFnYWluc3QgYWxsIG9mIHRoZSBwYXR0ZXJucy4gSWYgaXQgbWF0Y2hlcyBhbnkKLSAgICAjIG9mIHRoZSBwYXR0ZXJucyAoaS5lLiBub3QgYWxsIG9mIHRoZSBwYXR0ZXJucyksIHRoZW4gdGhlIGFyZ3VtZW50Ci0gICAgIyB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIHZhbGlkLgotICAgIHBhdHRlcm5zID0gdHlwZWRlZi5nZXQoJ3BhdHRlcm4nKQotICAgIGlmIHBhdHRlcm5zOgotICAgICAgICAjIElmIGl0J3MgYSBzaW5nbGUgcGF0dGVybiBjb252ZXJ0IGl0IHRvIGEgdHVwbGUsIHNvIHdlIGNhbiBoYW5kbGUKLSAgICAgICAgIyBpdCBpbiBhIGNvbW1vbiB3YXkgYmVsb3cuIE5vdGUgdGhhdCB3ZSBkb24ndCB1c2UgY29sbGVjdGlvbi5TZXF1ZW5jZQotICAgICAgICAjIGluIHRoZSBpc2luc3RhbmNlIGNhbGwgYmVjYXVzZSBzdHJpbmdzIGFyZSBzZXF1ZW5jZXMKLSAgICAgICAgaWYgY29tbWFuZC5faXNfc3RyaW5nKHBhdHRlcm5zKToKLSAgICAgICAgICAgIHBhdHRlcm5zID0gKHBhdHRlcm5zLCkKLQotICAgICAgICBmb3IgcGF0dGVybiBpbiBwYXR0ZXJuczoKLSAgICAgICAgICAgIGlmIHJlLm1hdGNoKHBhdHRlcm4sIHN0cih2YWx1ZSkpOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21tYW5kLl9yYWlzZV9hcmd1bWVudF92YWxpZGF0aW9uX2V4Y2VwdGlvbih0eXBlZGVmLCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgc3RyaW5nIHBhdHRlcm4nKQotCi0gICAgIyBDaGVjayBmb3IgYW55IGxlbmd0aCByZXN0cmljdGlvbnMuIFRoaXMgY2FuIGJlIGEgc2luZ2xlIHNjYWxhciBsZW5ndGggb3IKLSAgICAjIGEgc2luZ2xlIGxlbmd0aCByYW5nZSBvciBhIHNlcXVlbmNlIG9mIGVpdGhlciBvZiB0aG9zZS4gRm9yIHNjYWxhciBsZW5ndGhzCi0gICAgIyB0aGUgbGVuZ3RoIG11c3QgbWF0Y2ggaXQgZXhhY3RseS4gRm9yIGxlbmd0aCByYW5nZXMgdGhlIGxlbmd0aCBvZiB0aGUgYXJndW1lbnQKLSAgICAjIG11c3QgYmUgYmV0d2VlbiB0aGUgdHdvIHZhbHVlcyAoaW5jbHVzaXZlKS4gRm9yIGEgbGlzdCBvZiBsZW5ndGggc3BlY3MsIHRoZQotICAgICMgbGVuZ3RoIG11c3QgbWF0Y2ggYW55IG9mIHRoZSBsZW5ndGhzIChlaXRoZXIgc2NhbGFyIG9yIHJhbmdlKSBpbiB0aGUgbGlzdC4KLSAgICBsZW5ndGhzID0gdHlwZWRlZi5nZXQoJ2xlbmd0aCcpCi0gICAgaWYgbGVuZ3RoczoKLSAgICAgICAgaWYgY29tbWFuZC5faXNfc2luZ2xlX3JhbmdlKGxlbmd0aHMpOgotICAgICAgICAgICAgbGVuZ3RocyA9IChsZW5ndGhzLCkKLSAgICAgICAgZm9yIGxlbmd0aCBpbiBsZW5ndGhzOgotICAgICAgICAgICAgY29tbWFuZC5fY2hlY2tfb25lX3JhbmdlKGxlbmd0aCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGVuZ3RoLCBudW1iZXJzLkludGVncmFsKToKLSAgICAgICAgICAgICAgICBpZiBsZW4odmFsdWUpID09IGxlbmd0aDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIGxlbih2YWx1ZSkgPj0gbGVuZ3RoWzBdIGFuZCBsZW4odmFsdWUpIDw9IGxlbmd0aFsxXToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIHN0cmluZyBsZW5ndGgnKQotCi0gICAgcmV0dXJuIHZhbHVlCi0KLWRlZiB2YWxpZGF0ZV9pbnRlZ2VyX3JhbmdlKHR5cGVkZWYsIHZhbHVlLCByYW5nZXMpOgotICAgICMgQ2hlY2sgZm9yIGFueSByYW5nZSByZXN0cmljdGlvbnMuIFRoaXMgY2FuIGJlIGEgc2luZ2xlIHNjYWxhciB2YWx1ZSBvcgotICAgICMgYSBzaW5nbGUgcmFuZ2Ugb3IgYSBsaXN0L3R1cGxlIG9mIGEgY29tYmluYXRpb24gb2YgdGhvc2UuIEZvciBzY2FsYXIgcmFuZ2VzCi0gICAgIyB0aGUgYXJnIG11c3QgbWF0Y2ggaXQgZXhhY3RseS4gRm9yIHJhbmdlcyB0aGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50Ci0gICAgIyBtdXN0IGJlIGJldHdlZW4gdGhlIHR3byB2YWx1ZXMgKGluY2x1c2l2ZSkuIEZvciBhIGxpc3Qgb2YgcmFuZ2Ugc3BlY3MsIHRoZQotICAgICMgdmFsdWUgbXVzdCBtYXRjaCBhbnkgb2YgdGhlIGxlbmd0aHMgKGVpdGhlciBzY2FsYXIgb3IgcmFuZ2UpIGluIHRoZSBsaXN0LgotICAgIGlmIHJhbmdlczoKLSAgICAgICAgaWYgY29tbWFuZC5faXNfc2luZ2xlX3JhbmdlKHJhbmdlcyk6Ci0gICAgICAgICAgICByYW5nZXMgPSAocmFuZ2VzLCkKLSAgICAgICAgZm9yIHIgaW4gcmFuZ2VzOgotICAgICAgICAgICAgY29tbWFuZC5fY2hlY2tfb25lX3JhbmdlKHIpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHIsIG51bWJlcnMuSW50ZWdyYWwpOgotICAgICAgICAgICAgICAgIGlmIHZhbHVlID09IHI6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvd2VyX2JvdW5kYXJ5ID0gY29tbWFuZC5fY29udmVydF9yYW5nZV9ib3VuZGFyeShyWzBdLCB2YWx1ZSkKLSAgICAgICAgICAgICAgICB1cHBlcl9ib3VuZGFyeSA9IGNvbW1hbmQuX2NvbnZlcnRfcmFuZ2VfYm91bmRhcnkoclsxXSwgdmFsdWUpCi0gICAgICAgICAgICAgICAgaWYgdmFsdWUgPj0gbG93ZXJfYm91bmRhcnkgYW5kIHZhbHVlIDw9IHVwcGVyX2JvdW5kYXJ5OgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBpcyBvdXRzaWRlIHNwZWNpZmllZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZTogKCVkLSVkKScgJSAoclswXSwgclsxXSkpCi0KLWRlZiB2YWxpZGF0ZV9pbnRlZ2VyKHR5cGVkZWYsIHZhbHVlKToKLSAgICAjIENoZWNrIHRoYXQgdGhlIHZhbHVlIGlzIGFjdHVhbGx5IGFuIGludGVnZXIKLSAgICB0cnk6Ci0gICAgICAgIHZhbHVlID0gaW50KHZhbHVlKQotICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKToKLSAgICAgICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlIGlzIG5vdCBhbiBpbnRlZ2VyJykKLSAgICB2YWxpZGF0ZV9pbnRlZ2VyX3JhbmdlKHR5cGVkZWYsIHZhbHVlLCB0eXBlZGVmLmdldCgncmFuZ2UnKSkKLQotICAgIHJldHVybiB2YWx1ZQotCi1IRVhfUkUgPSByZS5jb21waWxlKHInXjB4WzAtOWEtZkEtRl0rJCcpCi0KLWRlZiB2YWxpZGF0ZV9oZXhfb3JfZGVjX2ludGVnZXIodHlwZWRlZiwgdmFsdWUpOgotICAgICMgQ2hlY2sgdGhhdCB0aGUgdmFsdWUgaXMgYWN0dWFsbHkgYW4gaGV4IG9yIGRlY2ltYWwgaW50ZWdlcgotICAgIGlmIEhFWF9SRS5tYXRjaCh2YWx1ZSk6Ci0gICAgICAgICMgaWYgaXQgbWF0Y2hlcywgaXQgb3VnaHQgdG8gc3VjY2VlZCBjb252ZXJzaW9uLCBiZWxvdydzIHJlYWxseSBub3QgbmVlZGVkCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIF92YWx1ZSA9IGludCh2YWx1ZSwgMTYpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKToKLSAgICAgICAgICAgIGNvbW1hbmQuX3JhaXNlX2FyZ3VtZW50X3ZhbGlkYXRpb25fZXhjZXB0aW9uKHR5cGVkZWYsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUgaXMgbm90IGEgaGV4IGludGVnZXInKQotICAgIGVsc2U6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIF92YWx1ZSA9IGludCh2YWx1ZSkKLSAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IpOgotICAgICAgICAgICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBpcyBub3QgYW4gaW50ZWdlcicpCi0gICAgdmFsaWRhdGVfaW50ZWdlcl9yYW5nZSh0eXBlZGVmLCBfdmFsdWUsIHR5cGVkZWYuZ2V0KCdyYW5nZScpKQotCi0gICAgcmV0dXJuIHZhbHVlCi0KLQotSVBfQUREUl9SRSA9IHJlLmNvbXBpbGUocideKFxkezEsM31cLil7M31cZHsxLDN9JCcpCi0KLWRlZiBpc19uZXRtYXNrKHZhbHVlKToKLSAgICAiIiIKLSAgICByZXR1cm4gVHJ1ZSBvciBGYWxzZSwgVHJ1ZSBmb3IgYSBkb3R0ZWQtcXVhZCB3aGljaCBjYW4KLSAgICBiZSBpbnRlcnByZXRlZCBhcyBhIG5ldG1hc2ssIEZhbHNlIG90aGVyd2lzZQotICAgICIiIgotICAgIGlmIG5vdCBJUF9BRERSX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAjIGNvbnZlcnQgdGhlIG5ldG1hc2sgc3RyaW5nIHRvIGFuIGludGVnZXIKLSAgICBzcGxpdF9ieXRlcyA9IHZhbHVlLnNwbGl0KCcuJykKLSAgICBuZXRtYXNrX2ludCA9IDAKLSAgICBmb3IgYiBpbiBzcGxpdF9ieXRlczoKLSAgICAgICAgbmV0bWFza19pbnQgPSAobmV0bWFza19pbnQgPDwgOCkgKyBpbnQoYikKLQotICAgICMgQ2hlY2sgdGhhdCB0aGUgdmFsdWUgaXMgY29tcG9zZWQgb2YgbGVhZGluZyAxIGJpdHMgZm9sbG93ZWQgYnkKLSAgICAjIHRyYWlsaW5nIDAgYml0cy4KLSAgICB2YWxpZF9uZXRtYXNrcyA9IFsweGZmZmZmZmZmIC0gKCgxIDw8IGkpIC0gMSkgZm9yIGkgaW4gcmFuZ2UoMCwzMyldCi0gICAgaWYgbmV0bWFza19pbnQgaW4gdmFsaWRfbmV0bWFza3M6Ci0gICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLWRlZiB2YWxpZGF0ZV9uZXRtYXNrKHR5cGVkZWYsIHZhbHVlKToKLSAgICBpZiBub3QgaXNfbmV0bWFzayh2YWx1ZSk6Ci0gICAgICAgIGNvbW1hbmQuX3JhaXNlX2FyZ3VtZW50X3ZhbGlkYXRpb25fZXhjZXB0aW9uKHR5cGVkZWYsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIG5ldG1hc2snKQotCi0gICAgcmV0dXJuIHZhbHVlCi0KLWRlZiBpc19pbnZlcnNlX25ldG1hc2sodmFsdWUpOgotICAgICIiIgotICAgIHJldHVybiBUcnVlIG9yIEZhbHNlLCBUcnVlIGZvciBhIGRvdHRlZC1xdWFkIHdoaWNoCi0gICAgY2FuIGJlIGludGVycHJldGVkIGFzIGludmVyc2UgbmV0bWFza3MgKGxpa2UgMC4wLjAuMjU1KSwKLSAgICBGYWxzZSBvdGhlcndpc2UuIFRoZSBmdWxsIG1hc2sgb2YgKDI1NS4yNTUuMjU1LjI1NSkgaXMgbm90Ci0gICAgdHJlYXRlZCBhcyBpbnZlcnNlX25ldG1hc2ssIGJ1dCBhIHZhbGlkIG5ldG1hc2suIFRoaXMgaGVscHMKLSAgICBkaXNhbWJpZ3VhdGUgaW52ZXJzZV9uZXRtYXNrIGZyb20gcmVndWxhciBuZXRtYXNrCi0gICAgIiIiCi0gICAgaWYgbm90IElQX0FERFJfUkUubWF0Y2godmFsdWUpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMgRmlyc3QgY29udmVydCB0aGUgbmV0bWFzayBzdHJpbmcgdG8gYW4gaW50ZWdlcgotICAgIHNwbGl0X2J5dGVzID0gdmFsdWUuc3BsaXQoJy4nKQotICAgIG5ldG1hc2tfaW50ID0gMAotICAgIGZvciBiIGluIHNwbGl0X2J5dGVzOgotICAgICAgICBuZXRtYXNrX2ludCA9IChuZXRtYXNrX2ludCA8PCA4KSArIGludChiKQotCi0gICAgIyBDaGVjayB0aGF0IHRoZSB2YWx1ZSBpcyBjb21wb3NlZCBvZiBsZWFkaW5nIDAgYml0cyBmb2xsb3dlZCBieQotICAgICMgdHJhaWxpbmcgMSBiaXRzLiBUbyBkaXNhbWJpZ3VhdGUgaW52ZXJzZSBmcm9tIHJlZ3VsYXIgbmV0bWFzaywKLSAgICAjIHdlIG1hbmRhdGUgYSBsZWFkaW5nIHplcm8gYml0IGluIHRoZSBuZXRtYXNrCi0gICAgdmFsaWRfbmV0bWFza3MgPSBbKCgxIDw8IGkpIC0gMSkgZm9yIGkgaW4gcmFuZ2UoMCwzMildCi0gICAgaWYgbmV0bWFza19pbnQgaW4gdmFsaWRfbmV0bWFza3M6Ci0gICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLWRlZiB2YWxpZGF0ZV9pbnZlcnNlX25ldG1hc2sodHlwZWRlZiwgdmFsdWUpOgotICAgICIiIgotICAgIFRoZXNlIGxvb2sgbGlrZSAwLjAuMC4yNTUsIGFuZCBhcmUgaW50ZW5kZWQgdG8gb25seSBtYXRjaAotICAgIHdoZW4gdGhlIHRoZXJlIGlzIG9uZSBncm91cCBvZiAxJ3MgYW5kIG9uZSBncm91cCBvZiB6ZXJvJ3MuCi0gICAgIiIiCi0gICAgaWYgaXNfaW52ZXJzZV9uZXRtYXNrKHZhbHVlKToKLSAgICAgICAgcmV0dXJuIHZhbHVlCi0gICAgICAgIAotICAgIGNvbW1hbmQuX3JhaXNlX2FyZ3VtZW50X3ZhbGlkYXRpb25fZXhjZXB0aW9uKHR5cGVkZWYsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgbmV0bWFzaycpCi0KLWRlZiB2YWxpZGF0ZV9pcF9hZGRyZXNzX25vdF9uZXRtYXNrKHR5cGVkZWYsIHZhbHVlKToKLSAgICAiIiIKLSAgICBGb3IgaXAgYWRkcmVzc2VzIGFzc29jaWF0ZWQgd2l0aCBpbnRlcmZhY2VzLCB0aGUgY29uZmlndXJlZCB2YWx1ZQotICAgIG11c3Qgbm90IGJlIG9uZSBvZiB0aGUgbWFueSBtYXNrcy4KLSAgICAiIiIKLSAgICAjIGlmIGl0cyBub3QgYW4gaXAgYWRkcmVzcywgdGhlbiBpdHMgbm90IGEgbmV0bWFzaywgcmVxdWlyaW5nCi0gICAgIyBhIHRlc3QgZm9yIGlwIGFkZHJlc3MgbWF0Y2guCi0gICAgaWYgbm90IElQX0FERFJfUkUubWF0Y2godmFsdWUpOgotICAgICAgICBjb21tYW5kLl9yYWlzZV9hcmd1bWVudF92YWxpZGF0aW9uX2V4Y2VwdGlvbih0eXBlZGVmLCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90IGFuIGlwLWFkZHJlc3MnKQotCi0gICAgIyBtdXN0IGJlIGZvdXIgZG90dGVkIHF1YWQncywgdmFsaWRhdGUgZWFjaCBpcyB3aXRoaW4gMl44IHJhbmdlCi0gICAgaWYgbGVuKFt4IGZvciB4IGluIHZhbHVlLnNwbGl0KCcuJykgaWYgaW50KHgpIDwgMjU2XSkgIT0gNDoKLSAgICAgICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBhbiBpcC1hZGRyZXNzJykKLQotICAgIGlmIChub3QgaXNfaW52ZXJzZV9uZXRtYXNrKHZhbHVlKSkgYW5kIChub3QgaXNfbmV0bWFzayh2YWx1ZSkpOgotICAgICAgICByZXR1cm4gdmFsdWUKLQotICAgIGNvbW1hbmQuX3JhaXNlX2FyZ3VtZW50X3ZhbGlkYXRpb25fZXhjZXB0aW9uKHR5cGVkZWYsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211c3Qgbm90IGJlIGEgbWFzaycpCi0KLQotQ0lEUl9SRSA9IHJlLmNvbXBpbGUocideKChcZHsxLDN9XC4pezN9XGR7MSwzfSkvKFxkezEsMn0/KSQnKQotCi1kZWYgdmFsaWRhdGVfY2lkcl9yYW5nZSh0eXBlZGVmLCB2YWx1ZSk6Ci0gICAgbWF0Y2ggPSBDSURSX1JFLm1hdGNoKHZhbHVlKQotICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBjaWRyIHN5bnRheDogaXAvbicpCi0gICAgaWYgaW50KG1hdGNoLmdyb3VwKDMpKSA+IDMyOgotICAgICAgICBjb21tYW5kLl9yYWlzZV9hcmd1bWVudF92YWxpZGF0aW9uX2V4Y2VwdGlvbih0eXBlZGVmLCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2lkciByYW5nZSBhYm92ZSAzMicpCi0KLSAgICBpZiBsZW4oW3ggZm9yIHggaW4gbWF0Y2guZ3JvdXAoMSkuc3BsaXQoJy4nKSBpZiBpbnQoeCkgPCAyNTZdKSAhPSA0OgotICAgICAgICBjb21tYW5kLl9yYWlzZV9hcmd1bWVudF92YWxpZGF0aW9uX2V4Y2VwdGlvbih0eXBlZGVmLCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2lkciByYW5nZSBhYm92ZSAzMicpCi0KLSAgICByZXR1cm4gdmFsdWUKLQotCi1kZWYgdmFsaWRhdGVfcmVzb2x2YWJsZV9pcF9hZGRyZXNzKHR5cGVkZWYsIHZhbHVlKToKLSAgICAjIHNlZSBpZiB0aGlzIGlzIGFuIG9iamVjdCB3ZSBrbm93IGFib3V0LCBmb3IgZXhhbWVwbGUgYSBzd2l0Y2guCi0gICAgZHBpZCA9IGNvbnZlcnRfYWxpYXNfdG9fb2JqZWN0X2tleSgnc3dpdGNoLWNvbmZpZycsIHZhbHVlKQotICAgIHRyeToKLSAgICAgICAgdmFsaWRhdGVfZHBpZCh0eXBlZGVmLCBkcGlkKQotICAgIGV4Y2VwdDoKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzb2NrZXQuZ2V0aG9zdGJ5bmFtZSh2YWx1ZSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgbXNnID0gJ3VucmVzb2x2YWJsZSBuYW1lJwotICAgICAgICAgICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0KLQotZGVmIHZhbGlkYXRlX2lkZW50aWZpZXIodHlwZWRlZiwgdmFsdWUsIHJlc2VydmVkID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgV2hlbiBpZGVudGlmaWVyIGlzIHVzZWQgYXMgYSAndHlwZScgaW4gdGhlIGRlc2NyaXB0aW9uLCBpdCB3aWxsCi0gICAgdmFsaWRhdGUgYWdhaW5zdCB0aGUgc2Ruc2ggcmVzZXJ2ZWRfd29yZHMuCi0KLSAgICBXaGVuIGlkZW50aWZpZXIgaXMgdXNlZCBhcyBhICdiYXNlLXR5cGUnIGluIHRoZSBkZXNjcmlwdGlvbiwgaXQKLSAgICB3aWxsIGFsc28gdXNlIGFueSAncmVzZXJ2ZWQnIGF0dHJpYnV0ZXMgaW4gdGhlIGRlc2NyaXB0aW9uLgotCi0gICAgVGhpcyBhbGxvd3Mgc29tZSBjb250cm9sIG92ZXIgd2hldGhlciB0aGUgJ3Jlc2VydmVkJyBhdHRyaWJ1dGUKLSAgICB0YWtlcyBlZmZlY3QgYXQgdGhlIHN5bnRheC1sYXllciBvciBhdCB0aGUgYWN0aW9uLWxheWVyCi0gICAgIiIiCi0gICAgaWYgbm90IHJlLm1hdGNoKHInXlthLXpBLVowLTlfLV0rJCcsIHN0cih2YWx1ZSkpOgotICAgICAgICBtc2cgPSAnSW52YWxpZCBjaGFyYWN0ZXJzIGluIGlkZW50aWZpZXInCi0gICAgICAgIGNvbW1hbmQuX3JhaXNlX2FyZ3VtZW50X3ZhbGlkYXRpb25fZXhjZXB0aW9uKHR5cGVkZWYsIHZhbHVlLCBtc2cpCi0gICAgaWYgdmFsdWUgaW4gc2Ruc2gucmVzZXJ2ZWRfd29yZHM6Ci0gICAgICAgIG1zZyA9ICdyZXNlcnZlZCB3b3JkICIlcyIgaW4gIiVzIicgJSAodmFsdWUsICcsICcuam9pbihzZG5zaC5yZXNlcnZlZF93b3JkcykpCi0gICAgICAgIGNvbW1hbmQuX3JhaXNlX2FyZ3VtZW50X3ZhbGlkYXRpb25fZXhjZXB0aW9uKHR5cGVkZWYsIHZhbHVlLCBtc2cpCi0gICAgaWYgcmVzZXJ2ZWQgYW5kIHZhbHVlIGluIHJlc2VydmVkOgotICAgICAgICBtc2cgPSAncmVzZXJ2ZWQgd29yZCAiJXMiIGluICIlcyInICUgKHZhbHVlLCAnLCAnLmpvaW4ocmVzZXJ2ZWQpKQotICAgICAgICBjb21tYW5kLl9yYWlzZV9hcmd1bWVudF92YWxpZGF0aW9uX2V4Y2VwdGlvbih0eXBlZGVmLCB2YWx1ZSwgbXNnKQotICAgIHJldHVybiB2YWx1ZSAKLQotCi1kZWYgdmFsaWRhdGVfZGF0ZSh0eXBlZGVmLCB2YWx1ZSk6Ci0gICAgaWYgKHZhbHVlID09ICdub3cnIG9yIHZhbHVlID09ICdjdXJyZW50Jyk6Ci0gICAgICAgIHJldHVybiB2YWx1ZQotCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gc3RyKGludCh2YWx1ZSkpCi0gICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IpOgotICAgICAgICBwYXNzCi0KLSAgICBmb3IgZixwcmUgaW4gWygnJVktJW0tJWRUJUg6JU06JVMnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICgnJVktJW0tJWQgJUg6JU06JVMnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICgnJVktJW0tJWRUJUg6JU06JVMleicsIE5vbmUpLAotICAgICAgICAgICAgICAgICAgKCclWS0lbS0lZCAlSDolTTolUyV6JywgTm9uZSksCi0gICAgICAgICAgICAgICAgICAoJyVZLSVtLSVkJywgTm9uZSksCi0gICAgICAgICAgICAgICAgICAoJyVtLSVkJywgJyVZLScpLAotICAgICAgICAgICAgICAgICAgKCclSDolTScsICclWS0lbS0lZFQnKV06Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHQgPSB2YWx1ZQotICAgICAgICAgICAgaWYgcHJlOgotICAgICAgICAgICAgICAgIHByZWYgPSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZShwcmUpCi0gICAgICAgICAgICAgICAgZiA9IHByZSArIGYKLSAgICAgICAgICAgICAgICB0ID0gcHJlZiArIHQKLQotICAgICAgICAgICAgcmV0dXJuIHZhbHVlCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGNvbW1hbmQuX3JhaXNlX2FyZ3VtZW50X3ZhbGlkYXRpb25fZXhjZXB0aW9uKHR5cGVkZWYsIHZhbHVlLCAnaW52YWxpZCBkYXRlJykKLQotCi1kZWYgdmFsaWRhdGVfZHVyYXRpb24odHlwZWRlZiwgdmFsdWUpOgotICAgIGZvciBzIGluIFsnd2Vla3MnLCAnZGF5cycsICdob3VycycsICdtaW5zJywgJ3NlY3MnLCAnbXMnXToKLSAgICAgICAgaWYgdmFsdWUuZW5kc3dpdGgocyk6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUKLSAgICBjb21tYW5kLl9yYWlzZV9hcmd1bWVudF92YWxpZGF0aW9uX2V4Y2VwdGlvbih0eXBlZGVmLCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGR1cmF0aW9uJykKLSAgCi0KLWRlZiB2YWxpZGF0ZV9lbnVtKHR5cGVkZWYsIHZhbHVlKToKLSAgICAjIEZJWE1FOiBTb3J0IG9mIGEgaGFjay4gVGhlIGJhc2UgZW51bSBjbGFzcyBkb2Vzbid0IGhhdmUgYSB2YWx1ZXMKLSAgICAjIGZpZWxkLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gY2hlY2sgYWdhaW5zdC4gV2UgcmVhbGx5IGp1c3QgdXNlIGl0Ci0gICAgIyBhcyBhIGJhc2UgdHlwZSB0byBpbmRpY2F0ZSB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbiAoaS5lLiB0aGlzIGZ1bmN0aW9uKQotICAgICMgdG8gdXNlLgotICAgIG5hbWUgPSB0eXBlZGVmLmdldCgnbmFtZScpCi0gICAgaWYgbmFtZSA9PSAnZW51bSc6Ci0gICAgICAgIHJldHVybgotCi0gICAgZW51bV92YWx1ZXMgPSB0eXBlZGVmLmdldCgndmFsdWVzJykKLSAgICBpZiBub3QgZW51bV92YWx1ZXM6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCdVbnNwZWNpZmllZCBlbnVtIHZhbHVlcycpCi0KLSAgICBpZiBub3QgaXNpbnN0YW5jZShlbnVtX3ZhbHVlcywgY29sbGVjdGlvbnMuTWFwcGluZyk6Ci0gICAgICAgICMgSWYgaXQncyBub3QgYSBkaWN0aW9uYXJ5IHRoZW4gaXQgc2hvdWxkIGJlIGFuIGFycmF5Ci0gICAgICAgICMgb3IgdHVwbGUgd2hlcmUgdGhlIChzdHJpbmcpIGVsZW1lbnRzIGFyZSBib3RoIHRoZSBrZXkKLSAgICAgICAgIyBhbmQgdGhlIHZhbHVlIGZvciB0aGUgZW51bSBpdGVtcy4gU28gaGVyZSB3ZSBjb252ZXJ0Ci0gICAgICAgICMgdG8gYSBkaWN0aW9uYXJ5IHNvIHdlIGNhbiB1c2UgdGhlIHNhbWUgbG9naWMgZm9yIGJvdGgKLSAgICAgICAgIyBjYXNlcyBiZWxvdy4KLSAgICAgICAgaWYgY29tbWFuZC5faXNfc3RyaW5nKGVudW1fdmFsdWVzKToKLSAgICAgICAgICAgIGVudW1fdmFsdWVzID0gKGVudW1fdmFsdWVzLCkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShlbnVtX3ZhbHVlcywgY29sbGVjdGlvbnMuU2VxdWVuY2UpOgotICAgICAgICAgICAgZW51bV92YWx1ZXMgPSBkaWN0KCh2LHYpIGZvciB2IGluIGVudW1fdmFsdWVzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdFbnVtIHZhbHVlcyBtdXN0IGJlIGVpdGhlciBhIHN0cmluZywgZGljdCwgdHVwbGUsIG9yIGxpc3QnKQotCi0gICAgcHJlZml4X21hdGNoZXMgPSBbXQotICAgIGxvd2VyX3ZhbHVlID0gdmFsdWUubG93ZXIoKQotICAgIGZvciBlbnVtX3ZhbHVlLCByZXR1cm5fdmFsdWUgaW4gZW51bV92YWx1ZXMuaXRlbXMoKToKLSAgICAgICAgbG93ZXJfZW51bV92YWx1ZSA9IGVudW1fdmFsdWUubG93ZXIoKQotICAgICAgICBpZiBsb3dlcl9lbnVtX3ZhbHVlID09IGxvd2VyX3ZhbHVlOgotICAgICAgICAgICAgcmV0dXJuIChyZXR1cm5fdmFsdWUsIGVudW1fdmFsdWUpCi0gICAgICAgIGlmIGxvd2VyX2VudW1fdmFsdWUuc3RhcnRzd2l0aChsb3dlcl92YWx1ZSk6Ci0gICAgICAgICAgICBwcmVmaXhfbWF0Y2hlcy5hcHBlbmQoKHJldHVybl92YWx1ZSwgZW51bV92YWx1ZSkpCi0KLSAgICBpZiBsZW4ocHJlZml4X21hdGNoZXMpID09IDA6Ci0gICAgICAgIGNvbW1hbmQuX3JhaXNlX2FyZ3VtZW50X3ZhbGlkYXRpb25fZXhjZXB0aW9uKHR5cGVkZWYsIHZhbHVlLAotICAgICAgICAgICAgICAgICd1bmV4cGVjdGVkIHZhbHVlIGZvciBlbnVtJywgZW51bV92YWx1ZXMua2V5cygpKQotCi0gICAgcmV0dXJuIHByZWZpeF9tYXRjaGVzCi0KLQotQ09NTUFORF9NQUNfQUREUkVTU19SRSA9IHJlLmNvbXBpbGUocideKChbQS1GYS1mXGRdKXsyfTo/KXs1fVtBLUZhLWZcZF17Mn0kJykKLUNPTU1BTkRfTUFDX0FMVF9SRSA9IHJlLmNvbXBpbGUocideKChbQS1GYS1mXGRdKXs0fVwuPyl7Mn1bQS1GYS1mXGRdezR9JCcpCi0KLWRlZiBfaXNfbWFjX2FkZHJlc3ModmFsdWUpOgotICAgIGlmIENPTU1BTkRfTUFDX0FMVF9SRS5tYXRjaCh2YWx1ZSk6Ci0gICAgICAgICMKLSAgICAgICAgIyBDb252ZXJ0IDEyMzQuNTY3OC45MDEyIGludG8gMDE6MzQ6NTY6Nzg6OTA6MTIKLSAgICAgICAgX21hYyA9ICclczolczolczolczolczolcycgJSAoCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlWzA6Ml0sICAgdmFsdWVbMjo0XSwKLSAgICAgICAgICAgICAgICAgICAgdmFsdWVbNTo3XSwgICB2YWx1ZVs3OjldLAotICAgICAgICAgICAgICAgICAgICB2YWx1ZVsxMDoxMl0sIHZhbHVlWzEyOjE0XSkKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBlbGlmIENPTU1BTkRfTUFDX0FERFJFU1NfUkUubWF0Y2godmFsdWUpOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi1kZWYgdmFsaWRhdGVfbWFjX2FkZHJlc3ModHlwZWRlZiwgdmFsdWUpOgotICAgIGlmIF9pc19tYWNfYWRkcmVzcyh2YWx1ZSk6Ci0gICAgICAgIHJldHVybiB2YWx1ZQotICAgIGNvbW1hbmQuX3JhaXNlX2FyZ3VtZW50X3ZhbGlkYXRpb25fZXhjZXB0aW9uKHR5cGVkZWYsIHZhbHVlLCAnbWFjIGFkZHJlc3MnKQotCi1kZWYgdmFsaWRhdGVfaG9zdCh0eXBlZGVmLCB2YWx1ZSk6Ci0gICAgIiIiCi0gICAgIiIiCi0KLSAgICBpZiBfaXNfbWFjX2FkZHJlc3ModmFsdWUpOgotICAgICAgICByZXR1cm4gdmFsdWUKLQotICAgIHBrID0gbWkucGsoJ2hvc3QtY29uZmlnJykKLSAgICBrZXkgPSBjb252ZXJ0X2FsaWFzX3RvX29iamVjdF9rZXkoJ2hvc3QtY29uZmlnJywgdmFsdWUpCi0gICAga2V5X2RpY3QgPSB7IHBrIDoga2V5IH0KLSAgICBtaS5zcGxpdF9jb21wb3VuZF9pbnRvX2RpY3QoJ2hvc3QtY29uZmlnJywgcGssIGtleV9kaWN0LCBpc19wcmVmaXggPSBUcnVlKQotICAgIGlmICdtYWMnIGluIGtleV9kaWN0IGFuZCBfaXNfbWFjX2FkZHJlc3Moa2V5X2RpY3RbJ21hYyddKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgX2V4aXN0cyA9IHJlc3RfdG9fbW9kZWwuZ2V0X21vZGVsX2Zyb21fdXJsKCdob3N0Jywga2V5X2RpY3QpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWUKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdob3N0ICIlcyI6IGRvZXNuXCd0IGV4aXN0JyAlIHZhbHVlKQotCi0gICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3QgaG9zdCBhbGlhcyBub3IgbWFjIGFkZHJlc3MnKQotCi1kZWYgdmFsaWRhdGVfZHBpZCh0eXBlZGVmLCB2YWx1ZSk6Ci0gICAgaWYgbm90IHV0aWYuQ09NTUFORF9EUElEX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsICdzd2l0Y2ggZHBpZCcpCi0gICAgcmV0dXJuIHZhbHVlCi0KLQotZGVmIHZhbGlkYXRlX3N3aXRjaF9kcGlkKHR5cGVkZWYsIHZhbHVlKToKLSAgICAiIiIKLSAgICBFaXRoZXIgdGhlIHZhbHVlIG11c3QgYmUgYSBzeW50YWN0aWMgZHBpZCAoZWlnaHQtaGV4LWJ5dGVzKSwKLSAgICBPciB0aGUgdmFsdWUgbXVzdCBiZSBhIHN3aXRjaCBhbGlhcywgYW5kIHRoZSB1bmRlcmx5aW5nIGRwaWQKLSAgICBtdXN0IGV4aXN0LgotICAgICIiIgotCi0gICAgdHJ5OgotICAgICAgICB2YWxpZGF0ZV9kcGlkKHR5cGVkZWYsIHZhbHVlKQotICAgICAgICByZXR1cm4gdmFsdWUKLSAgICBleGNlcHQgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IsIGU6Ci0gICAgICAgIGRwaWQgPSBjb252ZXJ0X2FsaWFzX3RvX29iamVjdF9rZXkoJ3N3aXRjaC1jb25maWcnLCB2YWx1ZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdmFsaWRhdGVfZHBpZCh0eXBlZGVmLCBkcGlkKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIF9leGlzdHMgPSBzZG5zaC5nZXRfb2JqZWN0X2Zyb21fc3RvcmUoJ3N3aXRjaC1jb25maWcnLCBkcGlkKQotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQotICAgICAgICAgICAgZXhjZXB0IGU6Ci0gICAgICAgICAgICAgICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzd2l0Y2ggIiVzIiBkb2VzblwndCBleGlzdCcgJSB2YWx1ZSkKLSAgICAgICAgZXhjZXB0IGVycm9yLkFyZ3VtZW50VmFsaWRhdGlvbkVycm9yLCBlOgotICAgICAgICAgICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBzd2l0Y2ggYWxpYXMgbm9yIGRwaWQnKQotCi1kZWYgdmFsaWRhdGVfZXhpc3Rpbmdfb2JqKHR5cGVkZWYsIHZhbHVlLCBvYmpfdHlwZSk6Ci0gICAgIiIiCi0gICAgTG9va3VwIHRoZSBzcGVjaWZpYyBvYmpfdHlwZSdzIHByaW1hcnkga2V5IHZhbHVlIGZvciB2YWxpZGF0aW9uLgotICAgICIiIgotCi0gICAgbG9va3VwX3ZhbHVlID0gY29udmVydF9hbGlhc190b19vYmplY3Rfa2V5KG9ial90eXBlLCB2YWx1ZSkKLQotICAgIHRyeToKLSAgICAgICAgc2Ruc2guZ2V0X29iamVjdF9mcm9tX3N0b3JlKG9ial90eXBlLCBsb29rdXBfdmFsdWUpCi0gICAgICAgIHJldHVybiB2YWx1ZQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIF9lOgotICAgICAgICBjb21tYW5kLl9yYWlzZV9hcmd1bWVudF92YWxpZGF0aW9uX2V4Y2VwdGlvbih0eXBlZGVmLCB2YWx1ZSwgImRvZXNuJ3QgZXhpc3QgIikKLQotCi1kZWYgdmFsaWRhdGVfY29uZmlnKHR5cGVkZWYsIHZhbHVlKToKLSAgICBpZiB2YWx1ZS5zdGFydHN3aXRoKCdjb25maWc6Ly8nKToKLSAgICAgICAgcmV0dXJuIHZhbHVlCi0gICAgZWxpZiB1dGlmLmZ1bGxfd29yZF9mcm9tX2Nob2ljZXModmFsdWUsIFsncnVubmluZy1jb25maWcnLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cGdyYWRlLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhc2gnIF0pOgotICAgICAgICByZXR1cm4gdmFsdWUKLSAgICBlbHNlOgotICAgICAgICBmb3IgcHJlZml4ZXMgaW4gWydodHRwOi8vJywgJ2Z0cDovLycsICd0ZnRwOi8vJywgJ2ZpbGU6Ly8nXToKLSAgICAgICAgICAgIGlmIHZhbHVlLnN0YXJ0c3dpdGgocHJlZml4ZXMpOgotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQotICAgICAgICBkYXRhID0gc2Ruc2guc3RvcmUuZ2V0X3VzZXJfZGF0YV90YWJsZSh2YWx1ZSwgJ2xhdGVzdCcpCi0gICAgICAgIGlmIGxlbihkYXRhKToKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZQotICAgICAgICAKLSAgICBtc2cgPSAnbm90IGEgdmFsaWQgY29weSwgbXVzdCBiZSAocnVubmluZy1jb25maWcsIHVwZ3JhZGUtY29uZmlnICcgXAotICAgICAgICAgICdvciBtdXN0IHN0YXJ0IHdpdGggY29uZmlnOi8vLCBodHRwOi8vLCBmdHA6Ly8sIG9yIHRmdHA6Ly8nCi0gICAgY29tbWFuZC5fcmFpc2VfYXJndW1lbnRfdmFsaWRhdGlvbl9leGNlcHRpb24odHlwZWRlZiwgdmFsdWUsIG1zZykKLQotCi1kZWYgaW5pdF92YWxpZGF0aW9ucyhicywgbW9kaSk6Ci0gICAgZ2xvYmFsIHNkbnNoLCBtaQotICAgIHNkbnNoID0gYnMKLSAgICBtaSA9IG1vZGkKLQotICAgICMgSW5pdGlhbGl6ZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucwotICAgIGNvbW1hbmQuYWRkX3ZhbGlkYXRpb24oJ3ZhbGlkYXRlLXN0cmluZycsIHZhbGlkYXRlX3N0cmluZykKLSAgICBjb21tYW5kLmFkZF92YWxpZGF0aW9uKCd2YWxpZGF0ZS1pbnRlZ2VyJywgdmFsaWRhdGVfaW50ZWdlcikKLSAgICBjb21tYW5kLmFkZF92YWxpZGF0aW9uKCd2YWxpZGF0ZS1oZXgtb3ItZGVjLWludGVnZXInLCB2YWxpZGF0ZV9oZXhfb3JfZGVjX2ludGVnZXIpCi0gICAgY29tbWFuZC5hZGRfdmFsaWRhdGlvbigndmFsaWRhdGUtbmV0bWFzaycsIHZhbGlkYXRlX25ldG1hc2spCi0gICAgY29tbWFuZC5hZGRfdmFsaWRhdGlvbigndmFsaWRhdGUtaW52ZXJzZS1uZXRtYXNrJywgdmFsaWRhdGVfaW52ZXJzZV9uZXRtYXNrKQotICAgIGNvbW1hbmQuYWRkX3ZhbGlkYXRpb24oJ3ZhbGlkYXRlLWlwLWFkZHJlc3Mtbm90LW1hc2snLCB2YWxpZGF0ZV9pcF9hZGRyZXNzX25vdF9uZXRtYXNrKQotICAgIGNvbW1hbmQuYWRkX3ZhbGlkYXRpb24oJ3ZhbGlkYXRlLWNpZHItcmFuZ2UnLCB2YWxpZGF0ZV9jaWRyX3JhbmdlKQotICAgIGNvbW1hbmQuYWRkX3ZhbGlkYXRpb24oJ3ZhbGlkYXRlLXJlc29sdmFibGUtaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfcmVzb2x2YWJsZV9pcF9hZGRyZXNzKQotICAgIGNvbW1hbmQuYWRkX3ZhbGlkYXRpb24oJ3ZhbGlkYXRlLWlkZW50aWZpZXInLCB2YWxpZGF0ZV9pZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3R5cGVkZWYnICAgOiAnJHR5cGVkZWYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJyAgICA6ICckdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc2VydmVkJyA6ICckcmVzZXJ2ZWQnfX0pCi0gICAgY29tbWFuZC5hZGRfdmFsaWRhdGlvbigndmFsaWRhdGUtZGF0ZScsIHZhbGlkYXRlX2RhdGUpCi0gICAgY29tbWFuZC5hZGRfdmFsaWRhdGlvbigndmFsaWRhdGUtZHVyYXRpb24nLCB2YWxpZGF0ZV9kdXJhdGlvbikKLSAgICBjb21tYW5kLmFkZF92YWxpZGF0aW9uKCd2YWxpZGF0ZS1lbnVtJywgdmFsaWRhdGVfZW51bSkKLSAgICBjb21tYW5kLmFkZF92YWxpZGF0aW9uKCd2YWxpZGF0ZS1tYWMtYWRkcmVzcycsIHZhbGlkYXRlX21hY19hZGRyZXNzKQotICAgIGNvbW1hbmQuYWRkX3ZhbGlkYXRpb24oJ3ZhbGlkYXRlLWhvc3QnLCB2YWxpZGF0ZV9ob3N0KQotICAgIGNvbW1hbmQuYWRkX3ZhbGlkYXRpb24oJ3ZhbGlkYXRlLXN3aXRjaC1kcGlkJywgdmFsaWRhdGVfc3dpdGNoX2RwaWQpCi0gICAgY29tbWFuZC5hZGRfdmFsaWRhdGlvbigndmFsaWRhdGUtZXhpc3Rpbmctb2JqJywgdmFsaWRhdGVfZXhpc3Rpbmdfb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J3R5cGVkZWYnICAgOiAnJHR5cGVkZWYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJyAgICA6ICckdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ial90eXBlJyA6ICckb2JqX3R5cGUnfX0pCi0gICAgY29tbWFuZC5hZGRfdmFsaWRhdGlvbigndmFsaWRhdGUtY29uZmlnJywgdmFsaWRhdGVfY29uZmlnKQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2NsaS5weSBiL2NsaS9jbGkvY2xpLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlNjk4N2FmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvY2xpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzg3OSArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTAsMjAxMSwyMDEyLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgIHNkbnNoIC0gVGhlIENvbnRyb2xsZXIgU2hlbGwKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgTE9PSyEgVE9ETyAtLQotIwotIyBjcmVhdGUgdG9rZW5zIGZvciBtb2RpZnkgYWN0aW9ucyBpbiBTdGF0aWNGbG93RW50cnlQdXNoZXIgYW5kIGhlcmUKLSMKLSMgZXh0ZW5kIGNvbXBsZXRpb24gdG8gc2hvdyBoZWxwIHRleHQKLSMKLSMgbmVlZCB0byB2ZXJpZnkgd2UgY2FuIHRhbGsgdG8gdGhlIGNvbnRyb2xsZXIKLSMKLSMgZmxvdy1lbnRyeSBuYW1pbmcgLSB1bmlxdWUgYWNyb3NzIGFsbCBzd2l0Y2hlcz8KLSMKLSMgam9pbnMgb24gc2hvdyBjb21tYW5kcyAocG9ydCBuYW1lcywgaWRzLCBldGMuKQotIwotIyBhY2NlcHQgZW51bXMgaW4gYWRkaXRpb24gdG8gbnVtYmVycyAtICJldGhlci10eXBlIGFycCIgb3IgImV0aGVyLXR5cGUgaXAiCi0jCi0jIGNsaSBjb21tYW5kcyBub3QgbWFwcGluZyB0byBkYXRhYmFzZSBtb2RlbCAodGhpcyBpcyBhbiAtdW5kby0pCi0jCi0jIHNpbXBsZSBvcHRpb25zL3NpbmdsZXRvbnMgaW4gdGhlIENMSSAoImxvZ2dpbmcgbGV2ZWwgNSIgInR3aXR0ZXIgdXNlcm5hbWUgYmxhaCIpCi0jCi0jIGNzdiwgbGVmdC9yaWdodCBqdXN0aWZpY2F0aW9uIGluIGNvbHVtbnMsIHNvcnRzCi0jCi0jIGNvbXBsZXRpb24gd2l0aCBtdWx0aSBjb21tYW5kIGxpbmVzCi0jCi0jIGRpc2FsbG93ICdzd2l0Y2gnIGZpZWxkIGFuZCBuYW1lIGFzIG9wdGlvbnMgZmxvdy1lbnRyeSAoJ2tleScgZmllbGRzIGluIGdlbmVyYWwpCi0jCi0jIGRlbGF5ZWQgY29tbWl0IHNlbWFudGljcyAoZGVwZW5kcyBvbiAxPykKLSMKLSMgZGVsZXRlIGNvbmZpZyBmaWxlcz8KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgTm90ZXM6Ci0jCi0jICBzdXBwb3J0IGZ1bmN0aW9ucyBmb3IgYSBjb21tYW5kLCBjb25zaWRlciwgZm9yIGV4YW1wbGUsICd2bnMtZGVmaW5pdGlvbicKLSMKLSMgICBGb3IgYSBuZXcgY29tbWFuZCwgZm9yIGV4YW1wbGUgJ3Zucy1kZWZpbml0aW9uJywgdGhlcmUgd2lsbCBiZSBhIHZhcmlldHkKLSMgICBvZiBkaWZmZXJlbnQgc3VwcG9ydCBmdW5jdGlvbnMgdG8gbWFuYWdlIGRpZmZlcmVudCByZXF1aXJlZCBmdW5jdGlvbmFseS4KLSMgICBkb192bnNfZGVmaW5pdGlvbigpIGRlc2NyaWJlcyB3aGF0IHRvIGRvIHRvIGV4ZWN1dGUgdGhlIGFjdHVhbCBjb21tYW5kLgotIyAgIGNwX3Zuc19kZWZpbml0aW9uKCkgZGVzY3JpYmVzIGhvdyB0byBwZXJmb3JtIGNvbW1hbmQgY29tcGxldGlvbiBmb3IgdGhlIHNhbWUuCi0jICAgZG9fc2hvd192bnNfZGVmaW5pdGlvbigpIHdvdWxkIGRlc2NyaWJlIGhvdyB0byBzaG93IHRoZSB2bnMtZGVmaW5pdGlvbnMKLSMgICAgICh0aGlzIHByb2NlZHVyZSBkb2Vzbid0IGV4aXN0LCBidXQgaXMgaW1wbGVtZW50ZWQgYnkgJ3Nob3cgdm5zJyB2aWEKLSMgICAgIGRvX3Nob3dfdm5zKSwgd2hpbGUKLSMgICBjcF9zaG93X3Zuc19kZWZpbml0aW9uKCkgd291bGQgZGVzY3JpYmUgaG93IHRvIGNvbXBsZXRlIHRoZSBzaG93IGNvbW1hbmQgZm9yCi0jICAgdGhpcyBwYXJ0aWN1bGFyIGNvbW1hbmQuICBPdGhlciBmdW5jdGlvbnMgbWF5IGFsc28gYmUgbmVlZGVkLCBmb3IgZXhhbXBsZQotIyAgIHNwZWNpYWxpemVkIGNoYW5nZXMgdG8gdGhlICdubycgY29tbWFuZCBmb3IgdGhlIHNhbWUgY29tbWFuZC4KLSMKLSMgIGNvbW1hbmQgY29tcGxldGlvbgotIwotIyAgIGN1cnJlbnRseSBpbiBtYW55IGNhc2VzLCB0aGVyZSdzIGEgc3BlY2lhbGl6ZWQgY29tcGxldGlvbiBoYW5kbGVyCi0jICAgaXQgd291bGQgbWFrZSBzZW5zZSB0byBtYW5hZ2UgJ25vJyBjb21wbGV0aW9uIGJ5IG92ZXJsb2FkaW5nIHRoZQotIyAgIHNhbWUgY29tcGxldGlvbiBoYW5kbGVyLgotIwotIwotIyAgZXJyb3IgcHJvY2Vzc2luZzoKLSMKLSMgICBLZWVwIGluIG1vbmQgdGhhdCBhbCBlcnJvcnMgb3VnaHQgdG8gdXNlIGEgc2ltaWxhciBwcmVmaXggc28gdGhhdAotIyAgIGFsbCB0aGUgZXJyb3IgY29uZGl0aW9ucyBhY2FuIGJlIGlkZW50aWZ5ZWQgYnkgdGhlIGF1dG9tYXRlZCB0ZXN0Ci0jICAgcHJvY2VkdXJlcy4gIHRoZXNlIHByZWZpeGVzIGFyZSByZWd1bGFyIGV4cHJlc3Npb25zIGluIGJpZ3Rlc3QvY2xpLnB5Ci0jICAgVGhlIHByZWZpeGVkIGN1cnJlbnRseSByZWNvZ25pemVkIGFzIGVycm9ycyBhcmUgJ0Vycm9yOiBOb3QgRm91bmQiLAotIyAgICdFcnJvciBydW5uaW5nIGNvbW1hbmQgJywgJ1N5bnRheCBlcnJvcjonLCBhbmQgJ1N5bnRheDogJyB0aGUgbGFzdAotIyAgIG9mIHdoaWNoIGlzIHVzZWQgdG8gZGlzcGxheSBib3RoIHVzYWdlIGZvciBzb21lIGNvbW1hbmRzLCBhbmQgCi0jICAgdmFyaW91cyBzcGVjaWZpYyBzeW50YXggZXJyb3JzCi0jCi0jICBhbGlhcyBtYW5hZ2VtZW50OgotIwotIyAgIEFsaWFzZXMgYXJlIG1hbmFnZWQgYnkgaGF2aW5nIGEgc2VwYXJhdGUgdGFibGUvbW9kZWwgZm9yIGVhY2gKLSMgICBvZiB0aGUgYWxpYXNlcywgZm9yIGV4YW1wbGUgdGhlIGhvc3QgdGFibGUgaGFzIGFuIGFzc29jaWF0ZWQgYWxpYXMKLSMgICB0YWJsZSBjYWxsZWQgJ2hvc3QtYWxpYXMnLiAgVGhlc2UgYWxpYXMgbW9kZWxzIGFyZSBub3RoaW5nIG1vcmUKLSMgICB0aGFuIGFuIGlkLCB3aGljaCBpcyB0aGUgYWxpYXMgbmFtZSBhbmQgYSBmb3JlaWduIGtleSBmb3IgdGhlIG90aGVyCi0jICAgdGFibGUsIGluIHRoZSAnaG9zdC1hbGlhcycgbW9kZWwsIHRoZSBhc3NvY2lhdGVkIGZvcmVpZ24ga2V5IHdvdWxkIAotIyAgIHBvaW50IHRvIHRoZSBob3N0LgotIyAgIAotIyAgIEFsaWFzIHRhYmxlcyBvciBtb2RlbHMgYXJlIG5vdCBkaXJlY3RseSBjb25maWd1cmVkIGFzIGFsaWFzIHRhYmxlcywKLSMgICB0aGUgY2xpIGNhbiBmaW5kIHRoZXNlIHRhYmxlcyBieSBub3RpY2luZyB0aGUgb25seSBmaWVsZHMgd2l0aGluCi0jICAgdGhlIG1vZGVsIGlzIGEgZm9yZWlnbiBrZXkgZm9yIGFub3RoZXIgdGFibGUuICAgVGhlIGNsaSBidWlsZHMgdGhlCi0jICAgYWxpYXNfb2JqX3R5cGVfeHJlZiBkaWN0aW9uYXJ5IGR1cmluZyBpbml0aWFsaXphdGlvbiwgYW5kIGxhdGVyIHVzZXMKLSMgICB0aGF0IGFzc29jaWF0aW9uIHRvIG1hbmFnZSBhbGlhc2VzLiAgIEtub3dpbmcgd2hpY2ggb2YgdGhlIHRhYmxlcwotIyAgIGFyZSBhbGlhcyB0YWJsZXMgYWxzbyBhbGxvd3MgdGhlIGNsaSB0byBleGNsdWRlIHRoZXNlIHRhYmxlcyBmcm9tCi0jICAgbW9kaWZpY2F0aW9uIGluIHR5cGljYWwgY29uZmlnIG1vZGUuCi0jCi0jICAgQWxpYXMgYXJlIGNyZWF0ZWQgd2hlbiB3aXRoaW4gdGhlIHN1Ym1vZGUgZm9yIGEgcGFydGljdWxhciBvYmpfdHlwZSwKLSMgICBmb3IgZXhhbXBsZSwgdGhlIGhvc3QtYWxpYXMgdGFibGUgaXMgYXZhaWxhYmxlIHdpdGhpbiB0aGUgaG9zdAotIyAgIGNvbmZpZyBzdWJtb2RlLCBhbmQgaXQgYXBwZWFycyBhcyB0aGUgJ2hvc3QtYWxpYXMnIHRhYmxlIHRoZXJlLgotIyAgIEhvd2V2ZXIgbm8gZnVydGhlciBzdWJtb2RlIGZvciB0aGUgaG9zdC1hbGlhcyBpcyBtYW5hZ2VkOyBpdCBpcwotIyAgIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBhIGZpZWxkIGluIHRoZSBzdWJtb2RlIGNvbmZpZyBvYmplY3QuCi0jICAgU28gaWYgJ2hvc3QtYWxpYXMgeHh4JyB3ZXJlIGVudGVyZWQgd2hpbGUgaW4gaG9zdCBjb25maWcgc3VibW9kZSwKLSMgICB0aGUgY2xpIGNvbnZlcnRzIHRoZSByZXF1ZXN0IGludG8gYSBob3N0LWFsaWFzIHRhYmxlIGVudHJ5LgotIwotIyAgIEZlYXR1cmUgbWFuYWdlbWVudC4gIFRoZSBjbGkgaXMgaW50ZW5kZWQgdG8gbWFuYWdlIHRoZSBhdmFpbGFiaWxpdHkKLSMgICBvZiBzcGVjaWZpYyBmZWF0dXJlIGdyb3Vwcy4gIFRoaXMgaXNuJ3QgbWVhbnQgdG8gcHJldmVudCBhIHVzZXIgZnJvbQotIyAgIGdldHRpbmcgYXQgc3BlY2lmaWMgc2t1IGZlYXR1cmVzIChpZTogbGljZW5zaW5nKSwgYnV0IGluc3RlYWQgbWVhbnQKLSMgICB0byBhbGxvdyBhIHVzZXIgdG8gZGlzYWJsZSBzcGVjaWZpYyBzdWItZ3JvdXBzIG9mIGNvbW1hbmRzIHRvIAotIyAgIHByZXZlbnQgdW5pbnRlbmRlZCBlbmFibGluZyBvZiBmZWF0dXJlcy4gIEZvciBleGFtcGxlLAotIyAgIHRvIHByZXZlbnQgYSAnc3RhdGljLWZsb3cnIGNsaSBjb25maWd1cmVkIGNvbnRyb2xsZXIgZnJvbSBlbmFibGluZwotIyAgIHZucyBmZWF0dXJlcyBsaWtlbHkgcmVzdWx0aW5nIGluIGEgbWlzY29uZmlndXJlZCBlbnZpcm9ubWVudC4KLSMKLSMgIGNoYW5nZXM6Ci0jCi0jICAgLS0gbmV3IHNvdXJjZSBmaWVsZCBmb3Igb2JqX3R5cGVzIGluIG1vZGVscywgb2JqX3R5cGVzIHdoaWNoIGFyZQotIyAgICAgIHdyaXR0ZW4gYmFzZWQgb24gZGlzY292ZXJlZCBkZXRhaWxzIGFyZSB0eXBpY2FsbHkgbm90IGVkaXRhYmxlLgotIyAgICAgIGRvbid0IGFsbG93IGEgY29uZmlnIHN1Ym1vZGUgZW50cnkuIGFuZCBkb24ndAotIyAgICAgIGFkdmVydGlzZSBzdWNoIGFuIGVudHJ5IGlzIHBvc3NpYmxlCi0jCi0jICAgLS0gaW50ZWdyYXRlZCBhbGlhcyBzdXBwb3J0LCBubyBzcGVjaWFsIGNhc2VzIHRocm91Z2ggdGhlIHVzZQotIyAgICAgIG9mIGEgc2VwYXJhdGVkIGFsaWFzIHRhYmxlcy4gIHRoaXMgYWxsb3dzIG1vcmUgaW50ZWdyYXRlZAotIyAgICAgIGNsaSBzdXBwb3J0IGZvciB0YWJsZXMgc3BlY2lmaWNhbGx5IGNvbnN0cnVjdGVkIHRvIG1hbmFnZQotIyAgICAgIGFsaWFzIG5hbWVzIGZvciBvdGhlciBmaWVsZHMuICAgQ3VycmVudGx5IGNvZGUgaW4gdGhlIGNsaQotIyAgICAgIHByZXZlbnRzIG11bHRpcGxlIGFsaWFzIGZvciBhIHNpbmdsZSBmb3JlaWduIGtleSwgYnV0IHRoaXMKLSMgICAgICBiZWhhdmlvciBjYW4gYmUgcmVsYXhlZCAocGVyaGFwcyBpdCBvdWdodCB0byBiZSBjb25maWd1cmFibGU/KQotIwotIyAgIC0tIHBlcmZvcm0gYWxpYXMgc3Vic3RpdHV0aW9uIGZvciAnbm8nIGNvbW1hbmRzIG9ial90eXBlJ3MKLSMKLSMgICAtLSBzdXBwb3J0IGZvciBwcmltYXJ5IGtleS9pZCBjaGFuZ2VzIHdpdGhpbiBhIHJvdy4KLSMgICAgICBpZiBhbiB1cGRhdGUgb2NjdXJzIHdoaWNoIG1vZGlmaWVzIHRoZSBwcmltYXJ5IGtleSBvZiBhIHJvdywKLSMgICAgICB0aGUgY2xpIG5vdyBpZGVudGlmaWVzIHdoZXRoZXIgYW55IGZvcmVpZ24ga2V5cyBwb2ludCBhdAotIyAgICAgIHRoZSBleGlzdGluZyBlbnRyeSwgYW5kIHVwZGF0ZXMgdGhlIGZvcmVpZ24ga2V5IHRvIHJlZmVyZW5jZQotIyAgICAgIHRoZSB1cGRhdGVkIHByaW1hcnkga2V5LgotIwotIyAgIC0tIHN1cHBvcnQgZm9yIGNhc2NhZGVkIGRlbGV0ZS4KLSMgICAgICB3aGVuIGEgcm93IGlzIGRlbGV0ZWQsIGlmIHRoZXJlIGFyZSBmb3JlaWduIGtleXMgYXNzb2NpYXRlZAotIyAgICAgIHdpdGggdGhlIHJvdywgdGhlIGNsaSB3aWxsIHJlbW92ZSB0aGVtLiAgdGhlIGNsaW1vZGVsaW5mbwotIyAgICAgIGNvbmZpZ3VyZXMgd2hpY2ggb2JqX3R5cGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgY2FzY2FkZSBkZWxldGVzLgotIwotIyAgIC0tIHZucyBpbnRlcmZhY2UgY3JlYXRpb24uCi0jICAgICAgdm5zIGludGVyZmFjZXMgYXJlIHJlcXVpcmVkIHRvIGhhdmUgYSB2bnMtaW50ZXJmYWNlLXJ1bGUgYXNzb2NpYXRlZC4KLSMgICAgICBzZG5wbGF0Zm9ybSB3cml0ZXMgYm90aCB0aGUgaW50ZXJmYWNlIG5hbWUgYW5kIHRoZSBydWxlLCBidXQgdGhlIGNsaSBuZWVkZWQKLSMgICAgICB0byBoYXZlIGNvZGUgYWRkZWQgdG8gZGV0ZXJtaW5lIGFuZCB2YWxpZGF0ZSB0aGUgYXNzb2NpYXRlZCBydWxlLgotIyAgICAgIFRoZSB2YWxpZGF0aW9uIGF0dGVtcHRzIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBydWxlIGlzIGFzc29jaWF0ZWQgd2l0aAotIyAgICAgIHRoZSB1c2Ugb2YgdGhlIGludGVyZmFjZSBuYW1lIChpZCkuCi0jCi0KLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgb3MsIGF0ZXhpdCwgc3RhdAotaW1wb3J0IHN5cywgdHJhY2ViYWNrICAgICAgICAgICAgICAgICAgICMgdHJhY2ViYWNrLnByaW50X2V4YygpCi1mcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLWZyb20gdHlwZXMgaW1wb3J0IFN0cmluZ1R5cGUKLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQganNvbgotaW1wb3J0IHJlCi1pbXBvcnQgdGltZQotaW1wb3J0IHVybGxpYjIKLWltcG9ydCBodHRwbGliICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByb3ZpZGVzIGVycm9yIHByb2Nlc3NpbmcgZm9yIGlzaW5zdGFuY2UKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzZWxlY3QKLWltcG9ydCBmY250bAotaW1wb3J0IHBvc2l4cGF0aAotaW1wb3J0IHJhbmRvbQotaW1wb3J0IGNvcHkKLWltcG9ydCB1dGlmCi1pbXBvcnQgZm10Y252Ci1pbXBvcnQgcnVuX2NvbmZpZwotaW1wb3J0IGltcAotaW1wb3J0IGxvY2FsZQotCi1mcm9tIHBrZ19yZXNvdXJjZXMgaW1wb3J0IHJlc291cmNlX2ZpbGVuYW1lCi1mcm9tIG1vZGkgaW1wb3J0IE1vZGkKLWZyb20gbWlkdyBpbXBvcnQgKgotZnJvbSB2bnN3IGltcG9ydCAqCi1mcm9tIHByZXR0eXByaW50IGltcG9ydCBQcmV0dHlQcmludGVyCi1mcm9tIHN0b3JlY2xpZW50IGltcG9ydCBTdG9yZUNsaWVudAotZnJvbSBjbGltb2RlbGluZm8gaW1wb3J0IENsaU1vZGVsSW5mbwotZnJvbSB2ZW5kb3IgaW1wb3J0IFZlbmRvckRCCi1pbXBvcnQgZXJyb3IKLWltcG9ydCBjb21tYW5kCi1pbXBvcnQgcmVzdF90b19tb2RlbAotaW1wb3J0IHRlY2hfc3VwcG9ydAotaW1wb3J0IHVybF9jYWNoZQotaW1wb3J0IGRvYwotaW1wb3J0IHNkbmRiCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgCi0KLWNsYXNzIFBhcmFtRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKLSAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiByZXByKHNlbGYudmFsdWUpCi0KLWNsYXNzIFRvb01hbnlWTlNFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHJlcHIoc2VsZi52YWx1ZSkKLQotVElNRVNUQU1QX0hFTFAgPSBcCi0gICAgKCdFbnRlciBhbiBpbnRlZ2VyIHRpbWVzdGFtcCBpbiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIG9yIGZvcm1hdHRlZFxuJyArCi0gICAgICdhcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBvcHRpb25zIGluIHlvdXIgbG9jYWwgdGltZXpvbmU6XG4nCi0gICAgICciWVlZWS1NTS1ERCBISDpNTTpTUyIgICAgICBZWVlZLU1NLUREVEhIOk1NOlNTXG4nICsgCi0gICAgICciWVlZWS1NTS1ERCBISDpNTTpTUytUVFQiICBZWVlZLU1NLUREVEhIOk1NOlNTK1RUVFxuJyArCi0gICAgICdZWVlZLU1NLUREICAgICAgICAgICAgICAgICBNTS1ERFxuJyArIAotICAgICAnSEg6TU0gICAgICAgICAgICAgICAgICAgICAgbm93JykKLQotCi0jIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrLiBUaGUgY29tcGxldGlvbiBhbmQgdmFsaWRhdGlvbiBmdW5jdGlvbnMgZm9yIHRpbWUgem9uZXMKLSMgYXJlIHN0YXRpYyBtZXRob2RzLCBidXQgdGhleSBuZWVkIHRvIGFjY2VzcyB0aGUgU0ROU2ggb2JqZWN0IHRvIGdldCBhdCB0aGUKLSMgY29udHJvbGxlciBmaWVsZCB0byBiZSBhYmxlIHRvIGRvIGEgUkVTVCBjYWxsIHRvIGxvYWQgdGhlIGxpc3Qgb2YgdGltZSB6b25lCi0jIHN0cmluZ3MuIFNvIHdlIHNldCB1cCBhIGdsb2JhbCBmb3IgdGhlIHNpbmdsZSBTRE5TaCBpbnN0YW5jZSB3ZSBoYXZlLiBBbgotIyBhbHRlcm5hdGl2ZSB3b3VsZCBoYXZlIGJlZW4gdG8gaGF2ZSBhIGdsb2JhbCB2YXJpYWJsZSBmb3IgdGhlIGxpc3Qgb2YgdGltZQotIyB6b25lIHN0cmluZ3MgdGhhdCdzIGluaXRpYWxpemVkIHdoZW4gdGhlIENMSSBpcyBpbml0aWFsaXplZCwgYnV0IGl0IHNlZW1zCi0jIG5pY2VyIHRvIG9ubHkgbG9hZCBpdCBvbiBkZW1hbmQsIGVzcGVjaWFsbHkgc2luY2Ugc2V0dGluZyB0aGUgdGltZSB6b25lCi0jIHdpbGwgYmUgYSBwcmV0dHkgaW5mcmVxdWVudGx5IGludm9rZWQgY29tbWFuZC4KLWNsaSA9IE5vbmUKLQotIwotIyBDb25zdGFudHMgZm9yIHBhY2tldCB0cmFjaW5nCi0jCi1TRVNTSU9OSUQgPSAnc2Vzc2lvbklkJwotRlRfVk5TID0gJ3ZucycKLUZUX1BPUlQgPSAncG9ydCcKLUZUX1BPUlRfRFBJRCA9ICdkcGlkJwotRlRfUE9SVF9QT1JUID0gJ3BvcnQnCi1GVF9PVVRQVVQgPSAnb3V0cHV0JwotRlRfRElSRUNUSU9OID0gJ2RpcmVjdGlvbicKLUZUX1BFUklPRCA9ICdwZXJpb2QnCi1GVF9USU1FT1VUID0gIkZpbHRlclRpbWVvdXQiCi1GVF9QRVJJT0RfREVGQVVMVCA9IDMwMAotCi1vbm9zPTEKLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgCi1jbGFzcyBOb3RGb3VuZChFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmpfdHlwZSwgbmFtZSk6Ci0gICAgICAgIHNlbGYub2JqX3R5cGUgPSBvYmpfdHlwZQotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiTm90IEZvdW5kOiAlcyAlcyIgJSAoc2VsZi5vYmpfdHlwZSwgc2VsZi5uYW1lKQotCi0KLSMgTE9PSyE6IFRoZSBuZXh0IHR3byBmdW5jdGlvbnMgYXJlIGNvcGllZCBmcm9tIHRoZSBzZG5jb24gY29kZS4KLSMgU2hvdWxkIGlkZWFsbHkgZmlndXJlIG91dCBhIHdheSB0byBzaGFyZSB0aGUgY29kZSBmb3IgdXRpbGl0eQotIyBmdW5jdGlvbnMgbGlrZSB0aGlzLgotCi1kZWYgZG90dGVkX2RlY2ltYWxfdG9faW50KGlwKToKLSAgICAiIiIKLSAgICBDb252ZXJ0cyBhIGRvdHRlZCBkZWNpbWFsIElQIGFkZHJlc3Mgc3RyaW5nIHRvIGEgMzIgYml0IGludGVnZXIKLSAgICAiIiIKLSAgICBieXRlcyA9IGlwLnNwbGl0KCcuJykKLSAgICBpcF9pbnQgPSAwCi0gICAgZm9yIGIgaW4gYnl0ZXM6Ci0gICAgICAgIGlwX2ludCA9IChpcF9pbnQgPDwgOCkgKyBpbnQoYikKLSAgICByZXR1cm4gaXBfaW50Ci0gICAgCi0KLWRlZiBzYW1lX3N1Ym5ldChpcDEsIGlwMiwgbmV0bWFzayk6Ci0gICAgIiIiCi0gICAgQ2hlY2tzIHdoZXRoZXIgdGhlIHR3byBpcCBhZGRyZXNzZXMgYXJlIG9uIHRoZSBzYW1lIHN1Ym5ldCBhcwotICAgIGRldGVybWluZWQgYnkgdGhlIG5ldG1hc2sgYXJndW1lbnQuIEFsbCBvZiB0aGUgYXJndW1lbnRzIGFyZQotICAgIGRvdHRlZCBkZWNpbWFsIElQIGFkZHJlc3Mgc3RyaW5ncy4KLSAgICAiIiIKLSAgICBpcDFfaW50ID0gZG90dGVkX2RlY2ltYWxfdG9faW50KGlwMSkKLSAgICBpcDJfaW50ID0gZG90dGVkX2RlY2ltYWxfdG9faW50KGlwMikKLSAgICBuZXRtYXNrX2ludCA9IGRvdHRlZF9kZWNpbWFsX3RvX2ludChuZXRtYXNrKQotICAgIHJldHVybiAoaXAxX2ludCAmIG5ldG1hc2tfaW50KSA9PSAoaXAyX2ludCAmIG5ldG1hc2tfaW50KQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIAotCi1jbGFzcyBTRE5TaCgpOgotCi0gICAgZGVidWcgPSBGYWxzZSAgICAgICAgICAgICAgICMgZ2VuZXJhbCBjbGkgZGVidWdnaW5nCi0gICAgZGVidWdfYmFja3RyYWNlID0gRmFsc2UgICAgICMgYmFja3RyYWNlIG9uIGZhaWx1cmVzCi0gICAgZGVzY3JpcHRpb24gPSBGYWxzZSAgICAgICAgICMgaGVscCBkZWJ1ZyBjb21tYW5kIGRlc2NyaXB0aW9ucwotICAgIGRpc3BsYXlfcmVzdCA9IEZhbHNlICAgICAgICAjIGRpc3BsYXkgcmVzdCBjYWxsIGRldGFpbHMKLSAgICBkaXNwbGF5X3JlcGx5X3Jlc3QgPSBGYWxzZSAgIyBkaXNwbGF5IHJlc3QgY2FsbCByZXBsaWVzIGRldGFpbHMKLQotICAgIGNvbW1hbmRfZGljdCA9IHt9Ci0gICAgbW9kZV9zdGFjayA9IFtdCi0gICAgcmVzZXJ2ZWRfd29yZHMgPSBbJ3Vua25vd24nLCAnYWxsJ10KLQotICAgIGtub3duX2NvbnRyb2xsZXJzID0gWyIxMjcuMC4wLjE6ODAwMCJdCi0gICAgY29udHJvbGxlciA9IE5vbmUKLSAgICAjIExPT0shIG1hbmFnZSB0aGlzIHNlcGFyYXRlbHkgdW50aWwgd2UgY2FuIGNldGFpbmx5Ci0gICAgIyAgICAgICB0YWxrIHRvIGV0aDAgYWRkciBpbnN0ZWFkIG9mIDEyNy4wLjAuMQotICAgIGNvbnRyb2xsZXJfZm9yX3Byb21wdCA9ICIxMjcuMC4wLjE6ODAwMCIKLSAgICBjbHVzdGVyID0gImRlZmF1bHQiCi0KLSAgICBydW4gPSBUcnVlCi0KLSAgICAjIEFyZSB3ZSBydW5uaW5nIGluIGJhdGNoIG1vZGUsIGkuZS4gImNhdCBjb21tYW5kcyB8IGNsaSIKLSAgICBiYXRjaCA9IEZhbHNlCi0KLSAgICAjIHVzZWQgZm9yIHBhcnNpbmcgYXMgYW4gYXJnCi0gICAgbG9jYWxfbmFtZV9wYXR0ZXJuID0gImNvbmZpZzovLyhbQS1aYS16MC05XzpAXC1cLlwvXSskKSIKLQotICAgICMgbmFtZSBvZiBib290L3N0YXJ0dXAtY29uZmlnCi0gICAgYm9vdF9jb25maWdfZmlsZW5hbWUgPSAnL29wdC9zZG5wbGF0Zm9ybS9ydW4vYm9vdC1jb25maWcnCi0gICAgc2F2ZWRfY29uZmlnc19kaXJuYW1lID0gJy9vcHQvc2RucGxhdGZvcm0vcnVuL3NhdmVkLWNvbmZpZ3MvJwotICAgIGZlYXR1cmVfYWxsb3dfZXhwZXJpbWVudGFsID0gJy9vcHQvc2RucGxhdGZvcm0vZmVhdHVyZS9leHBlcmltZW50YWwnCi0KLSAgICAjIGNvbnRhaW5lZCBvYmplY3RzCi0gICAgcHAgPSBOb25lCi0gICAgc3RvcmUgPSBOb25lCi0gICAgbW9kZWxfaGFuZGxlciA9IE5vbmUKLQotICAgICMgY2FjaGVkIG1ldGFkYXRhCi0gICAgc3RhdHNfbWV0YWRhdGEgPSBOb25lCi0gICAgc3RhdHNfdHlwZV9tZXRhZGF0YSA9IE5vbmUKLSAgICBzdGF0c19yZXN0YXBpX21hcCA9IHsnY29udHJvbGxlci1ub2RlJzogJ2NvbnRyb2xsZXInfQotCi0gICAgc3RhdHNfb3B0aW9uYWxfcGFyYW1zID0gewotICAgICAgICAnc3RhcnQtdGltZSc6IHsndHlwZSc6ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAnc3ludGF4X2hlbHAnOiBUSU1FU1RBTVBfSEVMUH0sCi0gICAgICAgICdlbmQtdGltZSc6IHsndHlwZSc6ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgJ3N5bnRheF9oZWxwJzogVElNRVNUQU1QX0hFTFB9LAotICAgICAgICAnZHVyYXRpb24nOiB7J3R5cGUnOiAnc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICdzeW50YXhfaGVscCc6IAotICAgICAgICAgICAgICAgICAgICAgIkVudGVyIGFuIGludGVnZXIgZm9sbG93ZWQgYnkgYSB0aW1lIHVuaXRcbiIgKwotICAgICAgICAgICAgICAgICAgICAgIltpbnRlZ2VyXXdlZWtzICBbaW50ZWdlcl1kYXlzICBbaW50ZWdlcl1ob3Vyc1xuIiArCi0gICAgICAgICAgICAgICAgICAgICAiW2ludGVnZXJdbWlucyAgIFtpbnRlZ2VyXXNlY3MgIFtpbnRlZ2VyXW1zIn0sCi0gICAgICAgICdzYW1wbGUtaW50ZXJ2YWwnOiB7J3R5cGUnOiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ludGF4X2hlbHAnOiAnRW50ZXIgYW4gaW50ZWdlciBudW1iZXIgb2YgbWlsbGlzZWNvbmRzJ30sCi0gICAgICAgICdzYW1wbGUtY291bnQnOiB7J3R5cGUnOiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnc3ludGF4X2hlbHAnOiAnRW50ZXIgYW4gaW50ZWdlciB0YXJnZXQgc2FtcGxlIGNvdW50J30sCi0gICAgICAgICdzYW1wbGUtd2luZG93Jzogeyd0eXBlJzogJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzeW50YXhfaGVscCc6ICdFbnRlciBhbiBpbnRlZ2VyIG51bWJlciBvZiBtaWxsaXNlY29uZHMgZm9yIHNhbXBsaW5nIHdpbmRvdyd9LAotICAgICAgICAnZGF0YS1mb3JtYXQnOiB7J3R5cGUnOiAnZW51bScsICd2YWx1ZXMnOiBbJ3ZhbHVlJywgJ3JhdGUnXX0sCi0gICAgICAgICdkaXNwbGF5Jzogeyd0eXBlJzogJ2VudW0nLCAndmFsdWVzJzogWydsYXRlc3QtdmFsdWUnLCAnZ3JhcGgnLCAndGFibGUnXX0sCi0gICAgICAgICMnbGltaXQnOiB7J3R5cGUnOiAnaW50J30KLSAgICAgICAgfQotCi0gICAgbmV0dmlydF9mZWF0dXJlX2VuYWJsZWRfY2FjaGVkID0gRmFsc2UKLSAgICB3YXJuaW5nX3N1cHByZXNzID0gRmFsc2UgICAgICAgICAgICAjCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgd2FybmluZwotICAgICMgIFdoZW4gYSBjb25maWcgaXMgZ2V0dGluZyByZXBsYXllZCwgd2FybmluZ3MgYXJlIHN1cG9yZXNzZWQuICBPdGhlciBzaXR1YXRpb25zCi0gICAgIyAgbWF5IGFsc28gcmVxdWlyZSBzdXByZXNzaW9uIG9mIHdhcm5pbmdzLgotICAgICMKLSAgICBkZWYgd2FybmluZyhzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgaWYgbm90IHNlbGYud2FybmluZ19zdXBwcmVzczoKLSAgICAgICAgICAgIHByaW50ICJXYXJuaW5nOiAlcyIgJSBtZXNzYWdlCi0gICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHN1cHJlc3Nfd2FybmluZ3Moc2VsZikKLSAgICAjCi0gICAgZGVmIHN1cHByZXNzX3dhcm5pbmdzKHNlbGYpOgotICAgICAgICBzZWxmLndhcm5pbmdfc3VwcHJlc3MgPSBUcnVlCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZW5hYmxlX3dhcm5pbmdzKHNlbGYpCi0gICAgIwotICAgIGRlZiBlbmFibGVfd2FybmluZ3Moc2VsZik6Ci0gICAgICAgIHNlbGYud2FybmluZ19zdXBwcmVzcyA9IEZhbHNlCi0KLQotICAgIGNvbmZpZ19yZXBsYXkgPSBGYWxzZSAgICAgICAgICAgICAgICMgb25seSB0cnVlIHdoaWxlIHJlcGxheWluZyBjb25maWcgZmlsZXMKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY29uZmlnX3JlcGxheV9zdGFydAotICAgICMgIEJlaGF2aW9yIGlzIGRpZmZlcmVudCBkdXJpbmcgY29uZmlnIHJlcGxheS4gIFdhcm5pbmdzIGFyZQotICAgICMgIHN1cHByZXNzZWQsIGFuZCBvdGhlciBlcnJvciBjb25kaXRpb25zIG1heSBiZSByZWxheGVkLCBmb3IgZXhhbXBsZQotICAgICMgIHRoZSBzd2l0Y2ggc3VibW9kZSBpbnRlcmZhY2UgY29tbWFuZCByZXF1aXJlcyB0aGF0IHRoZSBpbnRlcmZhY2UgZXhpc3QsCi0gICAgIyAgYW5kIHRoZSBpbnRlcmZhY2UgbmFtZXMgYXJlIGRpc2NvdmVyZWQgYnkgc2RucGxhdGZvcm0sIHdoaWNoIG1lYW5zIHRoYXQgZHVyaW5nCi0gICAgIyAgY29uZmlnIHJlcGxheSBmb3Igc3RhdHVwLCBhbiB1bmtub3duLW5hbWVkLWludGVyZmFjZSBtYXkgbmVlZCB0byBiZSBhY2NlcHRlZAotICAgICMgIHNpbmNlIHRoYXQgaW50ZXJmYWNlIG1heSBhcHBlYXIgb25jZSB0aGUgc3dpdGNoIGNvbm5lY3RlZCB0byBzZG5wbGF0Zm9ybSwgYW5kCi0gICAgIyAgc2RucGxhdGZvcm0gd3JpdGVzIHRoZSBwb3J0cyBmb3IgdGhpcyBzd2l0Y2guCi0gICAgIwotICAgIGRlZiBjb25maWdfcmVwbGF5X3N0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLnN1cHByZXNzX3dhcm5pbmdzKCkKLSAgICAgICAgc2VsZi5jb25maWdfcmVwbGF5ID0gVHJ1ZQotICAgIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjb25maWdfcmVwbGF5X2RvbmUKLSAgICAjCi0gICAgZGVmIGNvbmZpZ19yZXBsYXlfZG9uZShzZWxmKToKLSAgICAgICAgc2VsZi5lbmFibGVfd2FybmluZ3MoKQotICAgICAgICBzZWxmLmNvbmZpZ19yZXBsYXkgPSBGYWxzZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNvbmZpZ19yZXBsYXlfYWN0aXZlCi0gICAgIyAgUmV0dXJucyB0cnVlIHdoZW4gYSBjb25maWd1cmF0aW9uIGlzIGdldHRpbmcgcmVwbGF5ZWQKLSAgICAjCi0gICAgZGVmIGNvbmZpZ19yZXBsYXlfYWN0aXZlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5jb25maWdfcmVwbGF5Ci0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgbm90ZQotICAgICMgIFdoZW4gYSBjb25maWcgaXMgZ2V0dGluZyByZXBsYXllZCwgd2FybmluZ3Mvbm90ZXMgYXJlIHN1cG9yZXNzZWQuICBPdGhlciBzaXR1YXRpb25zCi0gICAgIyAgbWF5IGFsc28gcmVxdWlyZSBzdXByZXNzaW9uIG9mIHdhcm5pbmdzLgotICAgICMKLSAgICBkZWYgbm90ZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgaWYgbm90IHNlbGYud2FybmluZ19zdXBwcmVzczoKLSAgICAgICAgICAgIHByaW50ICJOb3RlOiAlcyIgJSBtZXNzYWdlCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZGVidWdfbXNnCi0gICAgIyAgRGVidWdnaW5nIG1lc3NhZ2UgY292ZXIuICBPbmx5IGVuYWJsZWQgZm9yIGRpc3BsYXkgb25jZSAnZGVidWcgY2xpJyBpcyBwZXJmb3JtZWQuCi0gICAgIwotICAgIGRlZiBkZWJ1Z19tc2coc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIGlmIHNlbGYuZGVidWc6Ci0gICAgICAgICAgICBwcmludCAiZGVidWdfbXNnOiAlcyIgJSBtZXNzYWdlCi0gICAgICAgICAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZXJyb3JfbXNnCi0gICAgIyAgRXJyb3IgbWVzc2FnZSBjb3ZlciwgdG8gZW5zdXJlIGNvbnNpc3RlbnQgZXJyb3IgbWVzc2FnZXMKLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBlcnJvcl9tc2cobWVzc2FnZSk6Ci0gICAgICAgIHJldHVybiAiRXJyb3I6ICVzIiAlIG1lc3NhZ2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBzeW50YXhfbXNnCi0gICAgIyAgU3ludGF4IGVycm9yIG1lc3NhZ2UgY292ZXIsIHRvIGVuc3VyZSBjb25zaXN0ZW50IGVycm9yIG1lc3NhZ2VzCi0gICAgIwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgc3ludGF4X21zZyhtZXNzYWdlKToKLSAgICAgICAgcmV0dXJuICJTeW50YXg6ICVzIiAlIG1lc3NhZ2UgCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY29tcGxldGlvbl9lcnJvcl9tc2cKLSAgICAjICBFcnJvciBtZXNzYWdlIGNvdmVyIGR1cmluZyBjb21wbGV0aW9uLCB0byBlbnN1cmUgY29uc2lzdGVudCBlcnJvciBtZXNzYWdlcwotICAgICMKLSAgICBkZWYgY29tcGxldGlvbl9lcnJvcl9tc2coc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKCJFcnJvcjogJXMiICUgbWVzc2FnZSkKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjb21wbGV0aW9uX3N5bnRheF9tc2cKLSAgICAjICBTeW50YXggZXJyb3IgbWVzc2FnZSBjb3ZlciBkdXJpbmcgY29tcGxldGlvbiwgdG8gZW5zdXJlIGNvbnNpc3RlbnQgZXJyb3IgbWVzc2FnZXMKLSAgICAjCi0gICAgZGVmIGNvbXBsZXRpb25fc3ludGF4X21zZyhzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgc2VsZi5wcmludF9jb21wbGV0aW9uX2hlbHAoIlN5bnRheDogJXMiICUgbWVzc2FnZSkKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbml0X2hpc3RvcnlfZmlsZQotICAgICMKLSAgICBkZWYgaW5pdF9oaXN0b3J5X2ZpbGUoc2VsZik6Ci0gICAgICAgIGhpc3RvcnlfZmlsZSA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWyJIT01FIl0sICIuc2Ruc2hfaGlzdG9yeSIpCi0gICAgICAgICMgY3JlYXRlIHRoZSBpbml0aWFsIGhpc3RvcnkgZmlsZSBncm91cC13cml0YWJsZSwKLSAgICAgICAgIyBzbyB0aGF0IHRoZSB0YWNhY3MgdXNlcnMgY2FuIHdyaXRlIHRvIGl0Ci0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGhpc3RvcnlfZmlsZSk6Ci0gICAgICAgICAgICBzdCA9IG9zLnN0YXQoaGlzdG9yeV9maWxlKQotICAgICAgICAgICAgaWYgbm90IChzdFtzdGF0LlNUX01PREVdICYgc3RhdC5TX0lXR1JQKToKLSAgICAgICAgICAgICAgICBidWYgPSBvcGVuKGhpc3RvcnlfZmlsZSkucmVhZCgpCi0gICAgICAgICAgICAgICAgb3MucmVuYW1lKGhpc3RvcnlfZmlsZSwgaGlzdG9yeV9maWxlICsgIn4iKQotICAgICAgICAgICAgICAgIG1hc2sgPSBvcy51bWFzaygwMDcpCi0gICAgICAgICAgICAgICAgZm5vID0gb3Mub3BlbihoaXN0b3J5X2ZpbGUsIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCwgMDY2MCkKLSAgICAgICAgICAgICAgICBvcy51bWFzayhtYXNrKQotICAgICAgICAgICAgICAgIG9zLndyaXRlKGZubywgYnVmKQotICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZubykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1hc2sgPSBvcy51bWFzaygwMDcpCi0gICAgICAgICAgICBmbm8gPSBvcy5vcGVuKGhpc3RvcnlfZmlsZSwgb3MuT19XUk9OTFkgfCBvcy5PX0NSRUFULCAwNjYwKQotICAgICAgICAgICAgb3MudW1hc2sobWFzaykKLSAgICAgICAgICAgIG9zLmNsb3NlKGZubykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGlzdG9yeV9maWxlKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgYXRleGl0LnJlZ2lzdGVyKHJlYWRsaW5lLndyaXRlX2hpc3RvcnlfZmlsZSwgaGlzdG9yeV9maWxlKQotICAgIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbml0X2NvbW1hbmRfZGljdAotICAgICMKLSAgICBkZWYgaW5pdF9jb21tYW5kX2RpY3Qoc2VsZik6Ci0KLSAgICAgICAgIwotICAgICAgICAjIGNvbW1hbmRfc3VibW9kZV9kaWN0IHNhdmVzIGEgbGl0dGxlIGluZm9ybWF0aW9uIGFib3V0Ci0gICAgICAgICMgc3VibW9kZSBjb21tYW5kcy4gIFRoZSBpbmRleCBpcyAnbW9kZScsIGFuZCB0aGUgcmVzdWx0aW5nCi0gICAgICAgICMgbGlzdCBjb250YWlucyBzdHJpbmdzLCBlYWNoIG9mIHdoaWNoIGlzIGEgc3VibW9kZSBjb21tYW5kCi0gICAgICAgICMgYXZhaWxhYmxlIGluIHRoYXQgbW9kZS4KLSAgICAgICAgc2VsZi5jb21tYW5kX3N1Ym1vZGVfZGljdCA9IHt9Ci0KLSAgICAgICAgIwotICAgICAgICAjIGFzc29jaWF0ZSBjb21tYW5kIG5hbWVzIHdpdGggZmVhdHVyZXMsIHNvIHRoYXQgd2hlbgotICAgICAgICAjIGhlbHAgaXMgcHJvdmlkZWQsIGNvbW1hbmQgbmFtZXMgd2hpY2ggaGF2ZSBhc3NvY2lhdGVkCi0gICAgICAgICMgZmVhdHVyZXMgYXJlIHZhbGlkYXRlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZmVhdHVyZQotICAgICAgICAjIGlzIGVuYWJsZWQgb3Igbm90LgotICAgICAgICBzZWxmLmNvbW1hbmRfbmFtZV9mZWF0dXJlID0ge30KLQotICAgICAgICAjCi0gICAgICAgICMgY29tbWFuZF9uZXN0ZWRfZGljdCBpcyBpbmRleGVkIGJ5IG1vZGUsIGFuZCBjb250YWlucwotICAgICAgICAjIGNvbW1hbmQgY29uZmlndXJlZCB3aXRoIGEgdHJhaWxpbmcgJyonLCBmb3IgZXhhbXBsZQotICAgICAgICAjICdtb2RlJyA6ICdjb25maWctKicsIGludGVuZGVkIHRvIG1lYW4gImFsbCBuZXN0ZWQKLSAgICAgICAgIyBzdWJtb2RlcyBhZnRlciBjb25maWctJy4gIFRoaXMgY2FuJ3QgYmUgY29tcHV0ZWQgdW50aWwKLSAgICAgICAgIyBhbGwgc3VibW9kZXMgYXJlIGtub3duLCB3aGljaCBtZWFucyBhbGwgdGhlIGNvbW1hbmQKLSAgICAgICAgIyBkZXNjcmlicHRpb24gbXVzdCBiZSBjb25maWd1cmVkLiwgZm9yIHRoZXNlIHRvIG1ha2Ugc2Vuc2UuCi0gICAgICAgIHNlbGYuY29tbWFuZF9uZXN0ZWRfZGljdCA9IHt9Ci0KLSAgICAgICAgIwotICAgICAgICAjIGNvbmZpZyBtb2RlIGNvbW1hbmRzCi0gICAgICAgICMKLSAgICAgICAgI3NlbGYuY29tbWFuZF9kaWN0Wydjb25maWcnXSA9IFsgImJvb3QiIF0KLQotICAgICAgICAjCi0gICAgICAgICMgY29tbWFuZHMgd2hpY2ggc3RhcnQgYXQgJ2xvZ2luJwotICAgICAgICAjCi0gICAgICAgIGlmIG9ub3MgPT0gMDoKLSAgICAgICAgICAgIHNlbGYuY29tbWFuZF9uZXN0ZWRfZGljdFsnbG9naW4nXSA9IFsgJ3Nob3cnLCAnbG9nb3V0JywgJ2V4aXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaXN0b3J5JywgJ2hlbHAnLCAnZWNobycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGUnLCAndHJhY2UnLCAndHJhY2Vyb3V0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpbmcnLCAndGVzdCcsICd2ZXJzaW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29ubmVjdCcsICd3YXRjaCcsICdubycgXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5jb21tYW5kX25lc3RlZF9kaWN0Wydsb2dpbiddID0gWyAnc2hvdycsICdsb2dvdXQnLCAnZXhpdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hpc3RvcnknLCAnaGVscCcsICdlY2hvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0ZScsICd0cmFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpbmcnLCAndGVzdCcsICd2ZXJzaW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29ubmVjdCcsICd3YXRjaCcsICdubycgXQotCi0gICAgICAgIHNlbGYuY29tbWFuZF9uZXN0ZWRfZGljdFsnZW5hYmxlJ10gPSBbICdjbGVhcicsICdlbmQnIF0KLQotICAgICAgICAjc2VsZi5jb21tYW5kX2RpY3RbJ2NvbmZpZy1pbnRlcm5hbCddID0gWydsaW50JywgJ3Blcm11dGUnXQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIG1ha2VfdW5pdF9mb3JtYXR0ZXIKLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBtYWtlX3VuaXRfZm9ybWF0dGVyKHVuaXRzKToKLSAgICAgICAgcmV0dXJuIGxhbWJkYSB4LCB5OiAnJXMgJXMnICUgKHgsIHVuaXRzKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGluaXRfc3RhdHNfbWV0YWRhdGEKLSAgICAjCi0gICAgZGVmIGluaXRfc3RhdHNfbWV0YWRhdGEoc2VsZik6Ci0gICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgc3RhdHMgbWV0YWRhdGEgYnkgcHVsbGluZyBpdCBmcm9tIHRoZSByZXN0IGFwaQotICAgICAgICBqc29uX2RhdGEgPSBzZWxmLnJlc3Rfc2ltcGxlX3JlcXVlc3RfdG9fZGljdCgnaHR0cDovLyVzL3Jlc3QvdjEvc3RhdHMvbWV0YWRhdGEvJXMvJyAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY29udHJvbGxlciwgc2VsZi5jbHVzdGVyKSkKLSAgICAgICAgbWV0YWRhdGEgPSB7fQotICAgICAgICBmaWVsZHMgPSB7fQotICAgICAgICBmb3IgaXRlbSBpbiBqc29uX2RhdGE6Ci0gICAgICAgICAgICAjIFhYWCBSZXF1ZXN0aW5nIHRoaXMgc3RhdCBjYXVzZXMgYSBsb25nIGRlbGF5IGluIHJlYWRpbmc7IGJ1ZyBpbiBzZG5jb24KLSAgICAgICAgICAgICMgb25jZSB0aGlzIGlzIGZpeGVkIHdlIGNhbiBhZGQgYmFjayBpbjsgYWxzbyBhZGQgdG8gZmllbGRfb3JkZXJpbmdzIGJlbG93Ci0gICAgICAgICAgICAjaWYganNvbl9kYXRhW2l0ZW1dWyduYW1lJ10gPT0gJ09GQWN0aXZlRmxvdyc6Ci0gICAgICAgICAgICAjICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGlmIGpzb25fZGF0YVtpdGVtXVsndGFyZ2V0X3R5cGUnXSBpbiBtZXRhZGF0YToKLSAgICAgICAgICAgICAgICBtZXRhZGF0YVtqc29uX2RhdGFbaXRlbV1bJ3RhcmdldF90eXBlJ11dLmFwcGVuZChqc29uX2RhdGFbaXRlbV0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1ldGFkYXRhW2pzb25fZGF0YVtpdGVtXVsndGFyZ2V0X3R5cGUnXV0gPSBbanNvbl9kYXRhW2l0ZW1dXQotICAgICAgICAgICAgICAgIGZpZWxkc1tqc29uX2RhdGFbaXRlbV1bJ3RhcmdldF90eXBlJ11dID0ge30KLQotICAgICAgICAgICAgZm9ybWF0dGVyID0gc2VsZi5tYWtlX3VuaXRfZm9ybWF0dGVyKGpzb25fZGF0YVtpdGVtXVsndW5pdHMnXSkKLSAgICAgICAgICAgIGZpZWxkc1tqc29uX2RhdGFbaXRlbV1bJ3RhcmdldF90eXBlJ11dW2pzb25fZGF0YVtpdGVtXVsnbmFtZSddXSA9IFwKLSAgICAgICAgICAgICAgICB7J3ZlcmJvc2UtbmFtZSc6IGpzb25fZGF0YVtpdGVtXVsndmVyYm9zZV9uYW1lJ10sCi0gICAgICAgICAgICAgICAgICd1bml0cyc6IGpzb25fZGF0YVtpdGVtXVsndW5pdHMnXSwKLSAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcic6IGZvcm1hdHRlcn0KLQotICAgICAgICBzZWxmLnN0YXRzX21ldGFkYXRhID0ganNvbl9kYXRhCi0gICAgICAgIHNlbGYuc3RhdHNfdHlwZV9tZXRhZGF0YSA9IG1ldGFkYXRhCi0KLSAgICAgICAgc2VsZi5wcC5hZGRfZm9ybWF0KCdTVEFUUy1DT05UUk9MTEVSJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGkuaW5pdF9zdGF0c19tZXRhZGF0YSgpJywgIyBvcmlnaW5hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7J3N0YXRzLWNvbnRyb2xsZXInIDogewotICAgICAgICAgICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogeydkZWZhdWx0JzogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydjcHUtdXNlcicsICdjcHUtbmljZScsICdjcHUtc3lzdGVtJywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcHUtaWRsZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lbS1mcmVlJywgJ21lbS11c2VkJywgJ3N3YXAtdXNlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNrLXJvb3QnLCAnZGlzay1sb2cnLCAnZGlzay1ib290JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NkbnBsYXRmb3JtLWNwdScsICdkYXRhYmFzZS1jcHUnLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwYWNoZS1jcHUnLCAnY2xpLWNwdScsICdzdGF0ZC1jcHUnXX0sCi0gICAgICAgICAgICAgICAgJ2ZpZWxkcycgOiBmaWVsZHNbJ2NvbnRyb2xsZXInXQotICAgICAgICAgICAgICAgIH19KQotCi0gICAgICAgIHNlbGYucHAuYWRkX2Zvcm1hdCgnU1RBVFMtU1dJVENIJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGkuaW5pdF9zdGF0c19tZXRhZGF0YSgpJywgIyBvcmlnaW5hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7ICdzdGF0cy1zd2l0Y2gnIDogewotICAgICAgICAgICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogeydkZWZhdWx0JzogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydPRlBhY2tldEluJywgJ09GRmxvd01vZCcsICdPRkFjdGl2ZUZsb3cnXX0sCi0gICAgICAgICAgICAgICAgJ2ZpZWxkcycgOiBmaWVsZHNbJ3N3aXRjaCddCi0gICAgICAgICAgICAgICAgfX0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgZm9yIG9ial90eXBlIGluIGZpZWxkczoKLSAgICAgICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZHNbb2JqX3R5cGVdOgotICAgICAgICAgICAgICAgIGZvciBkYXRhX2Zvcm1hdCBpbiBbJ3JhdGUnLCAndmFsdWUnXToKLSAgICAgICAgICAgICAgICAgICAgdW5pdHMgPSBmaWVsZHNbb2JqX3R5cGVdW2ZpZWxkXVsndW5pdHMnXQotICAgICAgICAgICAgICAgICAgICBpZiBkYXRhX2Zvcm1hdCA9PSAncmF0ZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bml0cyArPSAnL3MnCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucHAuYWRkX2Zvcm1hdCgnU1RBVFMtJXMtJXMtJXMnICUgKG9ial90eXBlLGZpZWxkLGRhdGFfZm9ybWF0KSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xpLmluaXRfc3RhdHNfbWV0YWRhdGEoKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAnc3RhdHMtJXMtJXMtJXMnICUgKG9ial90eXBlLGZpZWxkLGRhdGFfZm9ybWF0KSA6IHsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogeydkZWZhdWx0JzogWyd2YWx1ZScsICd0aW1lc3RhbXAnXX0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkcycgOiB7J3RpbWVzdGFtcCc6IHsndmVyYm9zZS1uYW1lJzogJ1RpbWVzdGFtcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJzogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgeCx5OiB0aW1lLmN0aW1lKHgvMTAwMCl9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IHsndW5pdHMnOiB1bml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZSc6IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXMgKCVzKScgJSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkc1tvYmpfdHlwZV1bZmllbGRdWyd2ZXJib3NlLW5hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzKX19Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMKLSAgICBkZWYgY29tbWFuZF9wYWNrYWdlc19wYXRoKHNlbGYpOgotICAgICAgICBjb21tYW5kX2Rlc2NyaXB0aW9ucyA9ICdkZXNjJwotICAgICAgICBkZXNjX3BhdGggPSByZXNvdXJjZV9maWxlbmFtZShfX25hbWVfXywgY29tbWFuZF9kZXNjcmlwdGlvbnMpCi0gICAgICAgIGlmIGRlc2NfcGF0aDoKLSAgICAgICAgICAgICMgcHJpbnQgImRlc2NfcGF0aCAlcyIgJSBkZXNjX3BhdGgKLSAgICAgICAgICAgIHJldHVybiBkZXNjX3BhdGgKLSAgICAgICAgZGVzY19wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksIGNvbW1hbmRfZGVzY3JpcHRpb25zKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXNjX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuIGRlc2NfcGF0aAotICAgICAgICByZXR1cm4gTm9uZQotCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMKLSAgICBkZWYgY29tbWFuZF9wYWNrYWdlc19leGlzdHMoc2VsZiwgdmVyc2lvbik6Ci0gICAgICAgIGRlc2NfcGF0aCA9IHNlbGYuY29tbWFuZF9wYWNrYWdlc19wYXRoKCkKLSAgICAgICAgaWYgZGVzY19wYXRoID09IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICB2ZXJzaW9uX3BhdGggPSBvcy5wYXRoLmpvaW4oZGVzY19wYXRoLCB2ZXJzaW9uKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh2ZXJzaW9uX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuIHZlcnNpb25fcGF0aAotICAgICAgICByZXR1cm4gTm9uZQotCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMKLSAgICBkZWYgYWRkX2NvbW1hbmRfcGFja2FnZXMoc2VsZiwgdmVyc2lvbik6Ci0gICAgICAgICIiIgotICAgICAgICBBZGQgYWxsIGNvbW1hbmQgYW5kIG91dHB1dCBmb3JtYXQgY29tcG9uZW50cwotCi0gICAgICAgICIiIgotICAgICAgICBkZXNjX3BhdGggPSBzZWxmLmNvbW1hbmRfcGFja2FnZXNfcGF0aCgpCi0gICAgICAgIGlmIGRlc2NfcGF0aCA9PSBOb25lOgotICAgICAgICAgICAgcHJpbnQgJ05vIENvbW1hbmQgRGVzY3JpcHRpb25zIHN1YmRpcmVjdG9yeScKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGZvciBwYXRoX3ZlcnNpb24gaW4gW3ggZm9yIHggaW4gb3MubGlzdGRpcihkZXNjX3BhdGgpIGlmIHguc3RhcnRzd2l0aCh2ZXJzaW9uKV06Ci0gICAgICAgICAgICBwcmludCBwYXRoX3ZlcnNpb24KLSAgICAgICAgICAgIHJlc3VsdF90dXBsZSA9IGltcC5maW5kX21vZHVsZShwYXRoX3ZlcnNpb24sIFtkZXNjX3BhdGhdKQotICAgICAgICAgICAgaW1wLmxvYWRfbW9kdWxlKHZlcnNpb24sIHJlc3VsdF90dXBsZVswXSwgcmVzdWx0X3R1cGxlWzFdLCByZXN1bHRfdHVwbGVbMl0pCi0gICAgICAgICAgICBuZXdfcGF0aCA9IHJlc3VsdF90dXBsZVsxXQotICAgICAgICAgICAgY21kc19pbXBvcnRlZCA9IFtdCi0gICAgICAgICAgICBmb3IgY21kcyBpbiBvcy5saXN0ZGlyKG5ld19wYXRoKToKLSAgICAgICAgICAgICAgICAocHJlZml4LCBzdWZmaXgpID0gb3MucGF0aC5zcGxpdGV4dChjbWRzKQotICAgICAgICAgICAgICAgIGlmIChzdWZmaXggPT0gJy5weScgb3Igc3VmZml4ID09ICcucHljJykgYW5kIHByZWZpeCBub3QgaW4gY21kc19pbXBvcnRlZCBhbmQgcHJlZml4ICE9ICdfX2luaXRfXyc6Ci0gICAgICAgICAgICAgICAgICAgIGNtZHNfaW1wb3J0ZWQuYXBwZW5kKHByZWZpeCkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3R1cGxlID0gaW1wLmZpbmRfbW9kdWxlKHByZWZpeCwgW25ld19wYXRoXSkKLSAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wLmxvYWRfbW9kdWxlKHByZWZpeCwgcmVzdWx0X3R1cGxlWzBdLCByZXN1bHRfdHVwbGVbMV0sIHJlc3VsdF90dXBsZVsyXSkKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZC5hZGRfY29tbWFuZHNfZnJvbV9tb2R1bGUodmVyc2lvbiwgbW9kdWxlLCBzZWxmLmR1bXBfc3ludGF4KQotICAgICAgICAgICAgICAgICAgICBzZWxmLnBwLmFkZF9mb3JtYXRzX2Zyb21fbW9kdWxlKHZlcnNpb24sIG1vZHVsZSkKLSAgICAgICAgICAgICMgcHJpbnQgY21kc19pbXBvcnRlZAotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjCi0gICAgZGVmIGNob2ljZXNfdGV4dF9idWlsZGVyKHNlbGYsIG1hdGNoZXMsIG1heF9sZW4gPSBOb25lLCBjb2xfd2lkdGggPSBOb25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIEBwYXJhbSBtYXhfbGVuIGludGVnZXIsIGRlc2NyaWJlcyBtYXggd2lkdGggb2YgYW55IGVudHJ5IGluIG1hdGNoZXMKLSAgICAgICAgQHBhcmFtIGNvbF93aWR0aCBpbnRlZ2VyLCBjb2x1biB3aWR0aAotICAgICAgICAiIiIKLSAgICAgICAgIyBTb3J0IHRoZSBjaG9pY2VzIGFscGhhYmV0aWNhbGx5LCBidXQgaWYgdGhlIHRva2VuIGVuZHMKLSAgICAgICAgIyBpbiBhIG51bWJlciwgc29ydCB0aGF0IG51bWJlciBudW1lcmljYWxseS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZW50cmllcyA9IHNvcnRlZChtYXRjaGVzLCB1dGlmLmNvbXBsZXRpb25fdHJhaWxpbmdfaW50ZWdlcl9jbXApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLQotICAgICAgICBpZiBjb2xfd2lkdGggPT0gTm9uZToKLSAgICAgICAgICAgICMgcmVxdWVzdCB0byBsb29rIGl0IHVwCi0gICAgICAgICAgICAoY29sX3dpZHRoLCBsaW5lX2xlbmd0aCkgPSBzZWxmLnBwLmdldF90ZXJtaW5hbF9zaXplKCkKLSAgICAgICAgICAgIGNvbF93aWR0aCA9IG1pbigxMjAsIGNvbF93aWR0aCkKLQotICAgICAgICBpZiBtYXhfbGVuID09IE5vbmU6Ci0gICAgICAgICAgICAjIHJlcXVlc3QgdG8gY29tcHV0ZSB0aGUgbWF4IGxlbmd0aAotICAgICAgICAgICAgbWF4X2xlbiA9IGxlbihtYXgobWF0Y2hlcywga2V5PWxlbikpCi0KLSAgICAgICAgY291bnQgPSBsZW4obWF0Y2hlcykKLSAgICAgICAgbWF4X2xlbiArPSAxICMgc3BhY2UgYWZ0ZXIgZWFjaCBjaG9pY2UKLSAgICAgICAgaWYgbWF4X2xlbiA+IGNvbF93aWR0aDoKLSAgICAgICAgICAgICMgb25lIHBlciBsaW5lPwotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGVyX2xpbmUgPSBjb2xfd2lkdGggLyBtYXhfbGVuCi0gICAgICAgICAgICBsaW5lcyA9IChjb3VudCArIChwZXJfbGluZSAtIDEpKSAvIHBlcl9saW5lCi0gICAgICAgICAgICBpZiBsaW5lcyA9PSAxOgotICAgICAgICAgICAgICAgIHJldHVybiAnJy5qb2luKFsnJS0qcycgJSAobWF4X2xlbiwgbSkgZm9yIG0gaW4gZW50cmllc10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgZmlsbCB0aGUgY29sdW1ucywgd2hpY2ggbWVhbnMgc2tpcHBpbmcgYXJvdW5kIHRoZSBlbnRyaWVzCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgICAgICAgICBmb3IgbCBpbiByYW5nZShsaW5lcyk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoWyclLSpzJyAlIChtYXhfbGVuLCBlbnRyaWVzW2ldKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsLCBjb3VudCwgbGluZXMpXSkKLSAgICAgICAgICAgICAgICBsaW5lcyA9IFsnJy5qb2luKHgpIGZvciB4IGluIHJlc3VsdF0KLSAgICAgICAgICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQotCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMKLSAgICBkZWYgbWF0Y2hlc19ob29rKHNlbGYsIHN1YnMsIG1hdGNoZXMsIG1heF9sZW4pOgotCi0gICAgICAgICMgb25lIHNob3QgZGlzYWJsZXIsIHVzZWQgdG8gZGlzYWJsZSBwcmludGluZyBvZiBjb21wbGV0aW9uCi0gICAgICAgICMgaGVscCBmb3IgdHdvLWNvbHVtbiBoZWxwIGRpc3BsYXkgKGZvciAnPycgY2hhcmFjdGVyKS4gCi0gICAgICAgICMgY29tcGxldGlvbiBwcmludGluZyBoZXJlIGNhbiBvbmx5IGRpc3BsYXkgdGhlIHBvc3NpYmxlIHNlbGVjdGlvbnMsCi0gICAgICAgICMgZm9yIHR3by1jb2x1bW4gbW9kZSwgdGhlIHJlYXNvbiB3aHkgZWFjaCBrZXl3b3JkIHdhcyBhZGRlZAotICAgICAgICAjIG5lZWRzIHRvIGJlIGRpc3BsYXllZCwgd2hpY2ggaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZSBoZXJlLgotICAgICAgICBpZiBzZWxmLmNvbXBsZXRpb25fcHJpbnQgPT0gRmFsc2U6Ci0gICAgICAgICAgICBzZWxmLmNvbXBsZXRpb25fcHJpbnQgPSBUcnVlCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgCi0gICAgICAgIGNob2ljZXNfdGV4dCA9IHNlbGYuY2hvaWNlc190ZXh0X2J1aWxkZXIobWF0Y2hlcywgbWF4X2xlbikKLSAgICAgICAgc2VsZi5wcmludF9jb21wbGV0aW9uX2hlbHAoY2hvaWNlc190ZXh0KQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjCi0gICAgZGVmIHByZV9pbnB1dF9ob29rKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgIiIiCi0gICAgICAgIHBhc3MKLQotICAgIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyAKLSAgICBkZWYgZGVzY192ZXJzaW9uX3RvX3BhdGhfZWxlbShzZWxmLCB2ZXJzaW9uKToKLSAgICAgICAgIiIiCi0gICAgICAgIFZlcnNpb24gbnVtYmVycyBsaWtlIDEuMCBuZWVkIHRvIGJlIGNvbnZlcnRlZCB0byB0aGUgcGF0aAotICAgICAgICBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgbnVtYmVyLCBsaWtlIHZlcnNpb24xMDAKLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHZlcnNpb25fbnVtYmVyID0gZmxvYXQodmVyc2lvbikKLSAgICAgICAgICAgIHZlcnNpb24gPSAndmVyc2lvbiVzJyAlIGludCh2ZXJzaW9uX251bWJlciAqIDEwMCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICMgdGVtcG9yYXJ5LCB1c2UgdW50aWwgdmVyc2lvbjEwMCBleGlzdHMuCi0gICAgICAgIGlmIHZlcnNpb24gPT0gJ3ZlcnNpb24xMDAnIGFuZCBub3Qgc2VsZi5jb21tYW5kX3BhY2thZ2VzX2V4aXN0cyh2ZXJzaW9uKToKLSAgICAgICAgICAgIHZlcnNpb24gPSAndmVyc2lvbjIwMCcKLQotICAgICAgICByZXR1cm4gdmVyc2lvbgotICAgICAgICAKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbml0Ci0gICAgIwotICAgIGRlZiBpbml0KHNlbGYpOgotICAgICAgICBnbG9iYWwgbWkKLSAgICAgICAgCi0gICAgICAgIHNlbGYuY29tcGxldGlvbl9wcmludCA9IFRydWUKLSAgICAgICAgc2VsZi52ZW5kb3JkYiA9IFZlbmRvckRCKCkKLSAgICAgICAgc2VsZi52ZW5kb3JkYi5pbml0KCkKLQotICAgICAgICBwYXJzZXIgPSBPcHRpb25QYXJzZXIoKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWMiLCAiLS1jb250cm9sbGVyIiwgZGVzdD0iY29udHJvbGxlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InNldCBkZWZhdWx0IGNvbnRyb2xsZXIgdG8gQ09OVFJPTExFUiIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSJDT05UUk9MTEVSIiwgZGVmYXVsdD1zZWxmLmNvbnRyb2xsZXIpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItUyIsICItLXN5bnRheCIsIGRlc3Q9J2R1bXBfc3ludGF4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZGlzcGxheSBzeW50YXggb2YgbG9hZGVkIGNvbW1hbmRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSkKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1pIiwgIi0taW5pdCIsIGRlc3Q9J2luaXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkbyBub3QgcGVyZm9ybSBpbml0aWFsaXphdGlvbiBjaGVja3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWQiLCAiLS1kZWJ1ZyIsIGRlc3Q9J2RlYnVnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZW5hYmxlIGRlYnVnIGZvciBjbGkgKGRlYnVnIGNsaSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLXYiLCAiLS12ZXJzaW9uIiwgZGVzdD0nZGVzY192ZXJzaW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VsZWN0IGNvbW1hbmQgdmVyc2lvbnMgKGRlc2NyaXB0aW9uIGdyb3VwKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSkKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1tJywgIi0tbW9kZSIsIGRlc3Q9J3N0YXJ0aW5nX21vZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdvbmNlIHRoZSBjbGkgc3RhcnRzLCBuZXN0IGludG8gdGhpcyBtb2RlJykKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1xJywgIi0tcXVpZXQiLCBkZXN0PSdxdWlldCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3N1cHByZXNzIHdhcm5pbmcgbWVzc2FnZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlKQotICAgICAgICAoc2VsZi5vcHRpb25zLCBzZWxmLmFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotICAgICAgICBzZWxmLmNvbnRyb2xsZXIgPSBzZWxmLm9wdGlvbnMuY29udHJvbGxlcgotICAgICAgICBpZiBub3Qgc2VsZi5jb250cm9sbGVyOgotICAgICAgICAgICAgc2VsZi5jb250cm9sbGVyID0gIjEyNy4wLjAuMTo4MDAwIgotICAgICAgICBzZWxmLmR1bXBfc3ludGF4ID0gc2VsZi5vcHRpb25zLmR1bXBfc3ludGF4Ci0gICAgICAgIGlmIG5vdCBzZWxmLmR1bXBfc3ludGF4OgotICAgICAgICAgICAgc2VsZi5kdW1wX3N5bnRheCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGVidWcgPSBzZWxmLm9wdGlvbnMuZGVidWcKLQotICAgICAgICAjIGNvbW1hbmQgb3B0aW9uLCB0aGVuIGVudiwgdGhlbiBkZWZhdWx0Ci0gICAgICAgIHNlbGYuZGVzY192ZXJzaW9uID0gc2VsZi5vcHRpb25zLmRlc2NfdmVyc2lvbgotICAgICAgICBpZiBzZWxmLmRlc2NfdmVyc2lvbiA9PSBOb25lOgotICAgICAgICAgICAgc2VsZi5kZXNjX3ZlcnNpb24gPSBvcy5nZXRlbnYoJ0NMSV9DT01NQU5EX1ZFUlNJT04nKQotICAgICAgICBpZiBzZWxmLmRlc2NfdmVyc2lvbiA9PSBOb25lOgotICAgICAgICAgICAgc2VsZi5kZXNjX3ZlcnNpb24gPSAnMi4wJyAgICMgJ3ZlcnNpb24yMDAnCi0KLSAgICAgICAgaWYgc2VsZi5kZXNjX3ZlcnNpb246Ci0gICAgICAgICAgICBzZWxmLmRlc2NfdmVyc2lvbiA9IHNlbGYuZGVzY192ZXJzaW9uX3RvX3BhdGhfZWxlbShzZWxmLmRlc2NfdmVyc2lvbikKLQotICAgICAgICBzZWxmLmxlbmd0aCA9IDAgIyBzY3JlZW4gbGVuZ3RoLgotCi0gICAgICAgIHNlbGYuc2V0X2NvbnRyb2xsZXJfZm9yX3Byb21wdCgpCi0KLSAgICAgICAgaWYgbm90IHN5cy5zdGRpbi5pc2F0dHkoKToKLSAgICAgICAgICAgIHNlbGYuYmF0Y2ggPSBUcnVlCi0KLSAgICAgICAgc2VsZi5zdG9yZSA9IFN0b3JlQ2xpZW50KCkKLSAgICAgICAgc2VsZi5zdG9yZS5zZXRfY29udHJvbGxlcihzZWxmLmNvbnRyb2xsZXIpCi0KLSAgICAgICAgbWkgPSBNb2RpKHNlbGYsIENsaU1vZGVsSW5mbygpKQotICAgICAgICBzZWxmLm1pID0gbWkKLSAgICAgICAgc2VsZi5pbml0X2NvbW1hbmRfZGljdCgpCi0KLSAgICAgICAgc2VsZi5jb21wbGV0aW9uX3Jlc2V0KCkKLSAgICAgICAgc2VsZi5jb21wbGV0aW9uX3NraXAgPSBGYWxzZQotICAgICAgICBzZWxmLmNvbXBsZXRpb25fY2FjaGUgPSBUcnVlCi0gICAgICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXIoc2VsZi5jb21wbGV0ZXIpCi0gICAgICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCJcdCAiKQotICAgICAgICAjIHJlYWRsaW5lLnNldF9wcmVfaW5wdXRfaG9vayhzZWxmLnByZV9pbnB1dF9ob29rKQotICAgICAgICByZWFkbGluZS5zZXRfY29tcGxldGlvbl9kaXNwbGF5X21hdGNoZXNfaG9vayhzZWxmLm1hdGNoZXNfaG9vaykKLSAgICAgICAgaWYgbm90IHNlbGYuYmF0Y2g6Ci0gICAgICAgICAgICBzZWxmLmluaXRfaGlzdG9yeV9maWxlKCkKLSAgICAgICAgc2VsZi5wdXNoX21vZGUoImxvZ2luIikKLQotICAgICAgICAjIHN0YXJ0aW5nIG1vZGUsIAotICAgICAgICBzdGFydGluZ19tb2RlID0gc2VsZi5vcHRpb25zLnN0YXJ0aW5nX21vZGUKLSAgICAgICAgaWYgc3RhcnRpbmdfbW9kZSA9PSBOb25lOgotICAgICAgICAgICAgc3RhcnRpbmdfbW9kZSA9IG9zLmdldGVudignQ0xJX1NUQVJUSU5HX01PREUnKQotCi0gICAgICAgIGlmIHN0YXJ0aW5nX21vZGU6Ci0gICAgICAgICAgICBpZiBzdGFydGluZ19tb2RlID09ICdsb2dpbic6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxpZiBzdGFydGluZ19tb2RlID09ICdlbmFibGUnOgotICAgICAgICAgICAgICAgIHNlbGYucHVzaF9tb2RlKCJlbmFibGUiKQotICAgICAgICAgICAgZWxpZiBzdGFydGluZ19tb2RlID09ICdjb25maWcnOgotICAgICAgICAgICAgICAgIHNlbGYucHVzaF9tb2RlKCJlbmFibGUiKQotICAgICAgICAgICAgICAgIHNlbGYucHVzaF9tb2RlKCJjb25maWciKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCAnT25seSBsb2dpbiwgZW5hYmxlIG9yIGNvbmZpZyBhbGxvd2VkIGFzIHN0YXJ0aW5nIG1vZGVzJwotCi0gICAgICAgICMgcHJvY2VzcyBxdWlldCBvcHRpb24KLSAgICAgICAgcXVpZXQgPSBzZWxmLm9wdGlvbnMucXVpZXQKLSAgICAgICAgaWYgcXVpZXQgPT0gTm9uZToKLSAgICAgICAgICAgIHF1aWV0ID0gb3MuZ2V0ZW52KCdDTElfU1VQUFJFU1NfV0FSTklORycpCi0KLSAgICAgICAgaWYgcXVpZXQ6Ci0gICAgICAgICAgICBzZWxmLnN1cHJlc3Nfd2FybmluZ3MoKQotCi0gICAgICAgICMKLSAgICAgICAgc2VsZi5wcCA9IFByZXR0eVByaW50ZXIoc2VsZikKLQotICAgICAgICAjCi0gICAgICAgICMgcGF0dGVybiBtYXRjaGVzCi0gICAgICAgICMKLSAgICAgICAgc2VsZi5JUF9BRERSX1JFID0gcmUuY29tcGlsZShyJ14oXGR7MSwzfVwuKXszfVxkezEsM30kJykKLSAgICAgICAgc2VsZi5DSURSX1JFID0gcmUuY29tcGlsZShyJ14oKFxkezEsM31cLil7M31cZHsxLDN9KS8oXGR7MSwyfT8pJCcpCi0gICAgICAgIHNlbGYuTUFDX1JFID0gcmUuY29tcGlsZShyJ14oKFtBLUZhLWZcZF0pezJ9Oj8pezV9W0EtRmEtZlxkXXsyfSQnKQotICAgICAgICBzZWxmLkRQSURfUkUgPSByZS5jb21waWxlKHInXigoW0EtRmEtZlxkXSl7Mn06Pyl7N31bQS1GYS1mXGRdezJ9JCcpCi0gICAgICAgIHNlbGYuQUNMX1JFID0gcmUuY29tcGlsZShyJ15cZCskJykgICMganVzdCB0aGUgbGVhZGluZyBkaWdpdHMKLSAgICAgICAgc2VsZi5ESUdJVFNfUkUgPSByZS5jb21waWxlKHInXlxkKyQnKQotICAgICAgICBzZWxmLkhFWF9SRSA9IHJlLmNvbXBpbGUocideMHhbMC05YS1mQS1GXSskJykKLQotICAgICAgICAjIEluaXRpYWxpemUgYW55IG1pZGRsZXdhcmUgbGF5ZXJzCi0gICAgICAgIGluaXRfbWlkd2FyZShzZWxmLCBtaSkKLSAgICAgICAgaW5pdF92bnN3KHNlbGYsIG1pKQotICAgICAgICByZXN0X3RvX21vZGVsLnJlc3RfdG9fbW9kZWxfaW5pdChzZWxmLCBtaSkKLSAgICAgICAgcnVuX2NvbmZpZy5pbml0X3J1bm5pbmdfY29uZmlnKHNlbGYsIG1pKQotCi0gICAgICAgICMgSW5pdGlhbGl6ZSBhbGwgZG9jIHRhZ3MsIHVzZSBhIHN1YmRpcmVjdG9yeSBiYXNlZCBvbgotICAgICAgICAjIHRoZSBsb2NhbGUuICAgVGhpcyBtYXkgYmUgaW5jb3JlY3QgaWYgdGhlcmUncyBub3RoaW5nCi0gICAgICAgICMgaW4gdGhlIGNvbmZpZ3VyZWQgbG9jYWxlIGZvciB0aGUgcmV0dXJuZWQgbG9jYWxlIHZhbHVlLgotICAgICAgICBsYyA9IGxvY2FsZS5nZXRkZWZhdWx0bG9jYWxlKCkKLSAgICAgICAgaWYgbGMgPT0gTm9uZSBvciBsY1swXSA9PSBOb25lOgotICAgICAgICAgICAgcHJpbnQgJ0xvY2FsZSBub3QgY29uZmlndXJlZCAnLCBsYwotICAgICAgICAgICAgbGMgPSAoJ2VuX1VTJywgJ1VURjgnKQotICAgICAgICBkb2NfZGlyID0gcmVzb3VyY2VfZmlsZW5hbWUoX19uYW1lX18sICdkb2N1bWVudGF0aW9uLyVzJyAlIGxjWzBdKQotICAgICAgICBpZiBkb2NfZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBkb2NfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICdkb2N1bWVudGF0aW9uJywgbGNbMF0pCi0gICAgICAgICMgcHJpbnQgImRvY19kaXIgJXMiICUgZG9jX2RpcgotICAgICAgICBkb2MuYWRkX2RvY190YWdzKGRvY19kaXIpCi0KLSAgICAgICAgIyBJbml0aWFsaXplIHRoZSBjb21tYW5kIG1vZHVsZSwgdGhhbiBhZGQgY29tbWFuZCBwYWNrYWdlcwotICAgICAgICBjb21tYW5kLmluaXRfY29tbWFuZChzZWxmLCBtaSkKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF9wYWNrYWdlcyhzZWxmLmRlc2NfdmVyc2lvbikKLQotICAgICAgICAjIHNhdmUgZm9yIHBvc3NpYmxlIGxhdGVyIHVzZQotICAgICAgICAjcHJpbnQgc2VsZi5wcC5mb3JtYXRfdGFibGUoc2VsZi5wcC5mb3JtYXRfZGV0YWlscygpKQotICAgICAgICAKLSAgICAgICAgIwotICAgICAgICBpZiBzZWxmLmRlYnVnOgotICAgICAgICAgICAgZm9yIChuLHYpIGluIHNlbGYuY29tbWFuZF9zdWJtb2RlX2RpY3QuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBwcmludCAiU1VCTU9ERSAlcyAlcyIgJSAobix2KQotICAgICAgICAgICAgZm9yIChuLHYpIGluIHNlbGYuY29tbWFuZF9kaWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgIk1PREUgJXMgJXMiICUgKG4sdikKLQotCi0gICAgICAgIHNlbGYudGltZV96b25lX2xpc3QgPSBOb25lCi0gICAgICAgIGNvbW1hbmQuYWRkX2NvbXBsZXRpb24oJ3RpbWUtem9uZS1jb21wbGV0aW9uJywgU0ROU2gudGltZV96b25lX2NvbXBsZXRpb24pCi0gICAgICAgIGNvbW1hbmQuYWRkX3ZhbGlkYXRpb24oJ3RpbWUtem9uZS12YWxpZGF0aW9uJywgU0ROU2gudGltZV96b25lX3ZhbGlkYXRpb24pCi0gICAgICAgIGNvbW1hbmQuYWRkX2FjdGlvbignc2V0LWNsb2NrJywgU0ROU2guc2V0X2Nsb2NrX2FjdGlvbiwgeydrd2FyZ3MnOiB7J2RhdGEnOiAnJGRhdGEnfX0pCi0gICAgICAgIGNvbW1hbmQuYWRkX2FjdGlvbignYmVnaW4tZGVmYXVsdC1nYXRld2F5LWNoZWNrJywgU0ROU2guYmVnaW5fZGVmYXVsdF9nYXRld2F5X2NoZWNrX2FjdGlvbikKLSAgICAgICAgY29tbWFuZC5hZGRfYWN0aW9uKCdlbmQtZGVmYXVsdC1nYXRld2F5LWNoZWNrJywgU0ROU2guZW5kX2RlZmF1bHRfZ2F0ZXdheV9jaGVja19hY3Rpb24pCi0gICAgCi0gICAgICAgIGNvbW1hbmQuYWRkX2NvbW1hbmRfdHlwZSgnY29uZmlnLXdpdGgtZGVmYXVsdC1nYXRld2F5LWNoZWNrJywgewotICAgICAgICAgICAgJ2FjdGlvbic6ICgnYmVnaW4tZGVmYXVsdC1nYXRld2F5LWNoZWNrJywgJ3dyaXRlLWZpZWxkcycsICdlbmQtZGVmYXVsdC1nYXRld2F5LWNoZWNrJyksCi0gICAgICAgICAgICAnbm8tYWN0aW9uJzogKCdiZWdpbi1kZWZhdWx0LWdhdGV3YXktY2hlY2snLCAncmVzZXQtZmllbGRzJywgJ2VuZC1kZWZhdWx0LWdhdGV3YXktY2hlY2snKQotICAgICAgICB9KQotCi0gICAgICAgICMKLSAgICAgICAgaWYgc2VsZi5mZWF0dXJlX2VuYWJsZWQoJ2V4cGVyaW1lbnRhbCcpOgotICAgICAgICAgICAgcHJpbnQgJyoqKldhcm5pbmc6IGV4cGVyaW1lbnRhbCBmZWF0dXJlcyBlbmFibGVkKioqJwotICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgICAgICBzZWxmLnNkbmRiID0gc2RuZGIuU0ROREIoc2VsZiwgc2VsZiwgc2VsZi5wcCkKLSAgICAgICAgICAgICAgICBwcmludCAnLS1CRUdJTi0tJwotICAgICAgICAgICAgICAgIHNlbGYuc2RuZGIuZGlzcGxheSgnY29yZS9zd2l0Y2gnLCBzdHlsZT0ndGFibGUnKQotICAgICAgICAgICAgICAgIHNlbGYuc2RuZGIuZGlzcGxheSgnY29yZS9jb250cm9sbGVyJywgc3R5bGU9J3RhYmxlJykKLSAgICAgICAgICAgICAgICBzZWxmLnNkbmRiLmRpc3BsYXkoJ2NvcmUvY29udHJvbGxlcicsIHN0eWxlPSdsaXN0JykKLSAgICAgICAgICAgICAgICBwcmludCAnLS1MSU5LLS0nLCBzZWxmLnBwLnRhYmxlX2luZm9bJ2xpbmsnXVsnZmllbGQtb3JkZXJpbmdzJ10KLSAgICAgICAgICAgICAgICBzZWxmLnNkbmRiLmRpc3BsYXkoJ3RvcG9sb2d5L2xpbmsnKQotICAgICAgICAgICAgICAgIHNlbGYuc2RuZGIuZGlzcGxheSgndG9wb2xvZ3kvc3dpdGNoLWNsdXN0ZXInKQotICAgICAgICAgICAgICAgIHNlbGYuc2RuZGIuZGlzcGxheSgndG9wb2xvZ3kvc3dpdGNoLWNsdXN0ZXInLCBzdHlsZT0nbGlzdCcpCi0gICAgICAgICAgICAgICAgc2VsZi5zZG5kYi5kaXNwbGF5KCd0b3BvbG9neS9lbmFibGVkLXBvcnQnKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNoZWNrX3Jlc3RfcmVzdWx0Ci0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjaGVja19yZXN0X3Jlc3VsdChyZXN1bHQsIG1lc3NhZ2U9Tm9uZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBjb2xsZWN0aW9ucy5NYXBwaW5nKToKLSAgICAgICAgICAgIGVycm9yX3R5cGUgPSByZXN1bHQuZ2V0KCdlcnJvcl90eXBlJykKLSAgICAgICAgICAgIGlmIGVycm9yX3R5cGU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZFJlc3RFcnJvcihyZXN1bHQsIG1lc3NhZ2UpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZ2V0X3RhYmxlX2Zyb21fc3RvcmUKLSAgICAjICBDYWNoZXMgdGhlIGxhc3QgcmVzdWx0IHRvIHRyeSB0byBjdXQgZG93biBvbiB0aGUgbnVtYmVyIG9mIHRpbWVzIGxhcmdlIHRhYmxlcwotICAgICMgIGFyZSBsb2FkZWQgZnJvbSB0aGUgUkVTVCBBUEkKLSAgICAjCi0gICAgZGVmIGdldF90YWJsZV9mcm9tX3N0b3JlKHNlbGYsIG9ial90eXBlLCBrZXkgPSBOb25lLCB2YWwgPSBOb25lLCBtYXRjaCA9IE5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5zdG9yZS5nZXRfdGFibGVfZnJvbV9zdG9yZShvYmpfdHlwZSwga2V5LCB2YWwsIG1hdGNoKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGdldF9vYmplY3RfZnJvbV9zdG9yZQotICAgICMgICBjb3ZlciBmb3IgY2FsbCB0byBnZXQgYSBzcGVjaWZpYyBvYmplY3QgZnJvbSBhIHRhYmxlLCBvbmx5IGEgY29udmVuaWVuY2UuCi0gICAgIwotICAgIGRlZiBnZXRfb2JqZWN0X2Zyb21fc3RvcmUoc2VsZiwgb2JqX3R5cGUsIG9ial9uYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc3RvcmUuZ2V0X29iamVjdF9mcm9tX3N0b3JlKG9ial90eXBlLCBvYmpfbmFtZSkKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyByZXN0X3F1ZXJ5X29iamVjdHMKLSAgICAjICAgY292ZXIgZm9yIGNhbGwgdG8gcXVlcnkgb2JqZWN0cyBmcm9tIHRoZSBkYXRhYmFzZSwgb25seSBhIGNvbnZlbmllbmNlLgotICAgICMKLSAgICBkZWYgcmVzdF9xdWVyeV9vYmplY3RzKHNlbGYsIG9ial90eXBlLCBxdWVyeV9wYXJhbXM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLnN0b3JlLnJlc3RfcXVlcnlfb2JqZWN0cyhvYmpfdHlwZSwgcXVlcnlfcGFyYW1zKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHJlc3RfY3JlYXRlX29iamVjdAotICAgICMgIFJFU1QgQVBJIGNhbGwgdG8gY3JlYXRlIGFuIG9iamVjdCwgaWYgdGhpcyBpcyB0aGUgbGFzdCB0YWJsZSB3aGljaAotICAgICMgIHdhcyBmZXRjaGVkLCB0aGVuIGRpc2NhcmQgdGhhdCB0YWJsZS4KLSAgICAjCi0gICAgZGVmIHJlc3RfY3JlYXRlX29iamVjdChzZWxmLCBvYmpfdHlwZSwgaWRlbnQpOgotICAgICAgICByZXR1cm4gc2VsZi5zdG9yZS5yZXN0X2NyZWF0ZV9vYmplY3Qob2JqX3R5cGUsIGlkZW50KQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHJlc3RfZGVsZXRlX29iamVjdHMKLSAgICAjCi0gICAgZGVmIHJlc3RfZGVsZXRlX29iamVjdHMoc2VsZiwgb2JqX3R5cGUsIGRlbGV0ZV9wYXJhbXMpOgotICAgICAgICByZXR1cm4gc2VsZi5zdG9yZS5yZXN0X2RlbGV0ZV9vYmplY3RzKG9ial90eXBlLCBkZWxldGVfcGFyYW1zKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHJlc3RfZGVsZXRlX29iamVjdAotICAgICMKLSAgICBkZWYgcmVzdF9kZWxldGVfb2JqZWN0KHNlbGYsIG9ial90eXBlLCBuYW1lKToKLSAgICAgICAgaWYgdHlwZShuYW1lKSA9PSBkaWN0OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RvcmUucmVzdF9kZWxldGVfb2JqZWN0KG9ial90eXBlLCBuYW1lKQotCi0gICAgICAgIHJldHVybiBzZWxmLnN0b3JlLnJlc3RfZGVsZXRlX29iamVjdChvYmpfdHlwZSwgbWkucGsob2JqX3R5cGUpLCBuYW1lKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHJlc3RfdXBkYXRlX29iamVjdAotICAgICMKLSAgICBkZWYgcmVzdF91cGRhdGVfb2JqZWN0KHNlbGYsIG9ial90eXBlLCBuYW1lLCBvYmpfa2V5X3ZhbCwgb2JqX2tleV9kYXRhKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc3RvcmUucmVzdF91cGRhdGVfb2JqZWN0KG9ial90eXBlLCBuYW1lLCBvYmpfa2V5X3ZhbCwgb2JqX2tleV9kYXRhKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHJlc3Rfc2ltcGxlX3Jlc3F1ZXN0X3RvX2RpY3QKLSAgICAjICBJc3N1ZSBhIHN0b3JlX3NpbXBsZV9yZXF1ZXN0IGFuZCBjb3ZlcnQgdGhlIHJlc3VsdCBpbnRvIGEgZGljdCB1c2luZyBqc29uLmxvYWQKLSAgICAjICBQZXJmb3JtcyBubyBleGNlcHRpb24gaGFuZGxpbmcKLSAgICAjCi0gICAgZGVmIHJlc3Rfc2ltcGxlX3JlcXVlc3RfdG9fZGljdChzZWxmLCB1cmwpOgotICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhzZWxmLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsKSkKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyByZXN0X3Bvc3RfcmVxdWVzdAotICAgICMgIEZvcndhcmQgYSBsb3ctbGV2ZWwgUkVTVCByZXF1ZXN0IHRvIHRoZSBzdG9yZQotICAgICMKLSAgICBkZWYgcmVzdF9wb3N0X3JlcXVlc3Qoc2VsZiwgdXJsLCBvYmosIHZlcmI9J1BVVCcpOgotICAgICAgICByZXR1cm4gc2VsZi5zdG9yZS5yZXN0X3Bvc3RfcmVxdWVzdCh1cmwsIG9iaiwgdmVyYikKLSAgICAKLSAgICAjICAKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjcmVhdGVfb2JqZWN0Ci0gICAgIyAgSGVscGVyIGZ1bmN0aW9uIHRvIGhlbHAgaWRlbnRpZnkgY2FsbCBzaXRlcyB3aGljaCBjcmVhdGUgb2JqZWN0cwotICAgICMgIEVycm9ycyByZXN1bHQgaW4gcHJpbnRpbmcgYW4gZXJyb3IgbWVzc2FnZSwgdGhlbiByZXR1cm5pbmcgVHJ1ZQotICAgICMKLSAgICBkZWYgY3JlYXRlX29iamVjdChzZWxmLCBvYmpfdHlwZSwgZmllbGRfZGljdCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYucmVzdF9jcmVhdGVfb2JqZWN0KG9ial90eXBlLCBmaWVsZF9kaWN0KQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCBvYmpfdHlwZSkKLSAgICAgICAgICAgCi0gICAgICAgIGlmIGVycm9ycyAhPSBOb25lOgotICAgICAgICAgICAgcHJpbnQgc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAKLSAgICAjICAKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjcmVhdGVfcm93Ci0gICAgIyAgSGVscGVyIGZ1bmN0aW9uIHRvIGhlbHAgaWRlbnRpZnkgY2FsbCBzaXRlcyB3aGljaCBjcmVhdGUgbmV3IHJvd3MKLSAgICAjCi0gICAgIyAgUmV0dXJuIGEgcGFpciBvZiBib29sJ3MsIHRoZSBmaXJzdCBpcyBhbiBlcnJvciBpbmRpY2F0aW9uLCB3aGlsZSB0aGUgc2Vjb25kCi0gICAgIyAgaXMgVHJ1ZSB3aGVuIHRoZSByb3cgbmVlZGVkIHRvIGJlIGNyZWF0ZWQuCi0gICAgIwotICAgICMKLSAgICBkZWYgY3JlYXRlX3JvdyhzZWxmLCBvYmpfdHlwZSwgbmFtZSwgcm93X2RpY3QgPSBOb25lKToKLSAgICAgICAgIyBjcmVhdGUgdGhlIHJvdyB3aXRoIGEgZGljdGlvbmFyeSB3aGljaCBpbmNsdWRlcyBhbGwgdGhlCi0gICAgICAgICMgcG9wdWxhdGVkIHZhbHVlcyBmb3IgdGhlIGZvcmVpZ24ga2V5cwotICAgICAgICAjIHRoZSByb3cgaXMgY3JlYXRlZC4KLSAgICAgICAgaWYgcm93X2RpY3QgPT0gTm9uZToKLSAgICAgICAgICAgIHVwZGF0ZWRfZGljdCA9IHt9Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1cGRhdGVkX2RpY3QgPSByb3dfZGljdAotCi0gICAgICAgICMKLSAgICAgICAgIyBPbmx5IHNldCB0aGUgcHJpbWFyeSBrZXkgZm9yIG9ial9rZXlzIHdoaWNoIGFyZW4ndCBtYW5hZ2VkCi0gICAgICAgICMgYnkgdGhlIENhc3NhbmRyYVNldHRpbmcvQ09NUE9VTkRfS0VZX0ZJRUxEUyAodGhpcyBpcyBjdXJyZW50bHkKLSAgICAgICAgIyBhIHNsaWdodGx5IGRpZmZlcmVudCBwcmVkaWNhdGUgdGhhbiBpc19jb21wb3VuZF9rZXkpCi0gICAgICAgICMKLSAgICAgICAga2V5ID0gbWkucGsob2JqX3R5cGUpCi0gICAgICAgIHR5cGVfaW5mbyA9IG1pLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddW2tleV1bJ3R5cGUnXQotICAgICAgICBpZiB0eXBlX2luZm8gIT0gJ2NvbXBvdW5kLWtleSc6Ci0gICAgICAgICAgICB1cGRhdGVkX2RpY3RbbWkucGsob2JqX3R5cGUpXSA9IG5hbWUKLSAgICAgICAgdXBkYXRlZF9kaWN0ID0gc2VsZi5hc3NvY2lhdGVfZm9yZWlnbl9rZXlzX3dpdGhfZGljdChvYmpfdHlwZSwgdXBkYXRlZF9kaWN0KQotCi0gICAgICAgIGlmIHNlbGYuY3JlYXRlX29iamVjdChvYmpfdHlwZSwgdXBkYXRlZF9kaWN0KToKLSAgICAgICAgICAgIHJldHVybiBbVHJ1ZSwgRmFsc2VdCi0gICAgICAgIHJldHVybiBbRmFsc2UsIFRydWVdCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZmluZF9vcl9jcmVhdGVfcm93Ci0gICAgIyAgUmV0dXJuIGEgcGFpciBvZiBib29sJ3MsIHRoZSBmaXJzdCBpcyBhbiBlcnJvciBpbmRpY2F0aW9uLCB3aGlsZSB0aGUgc2Vjb25kCi0gICAgIyAgaXMgVHJ1ZSB3aGVuIHRoZSByb3cgbmVlZGVkIHRvIGJlIGNyZWF0ZWQuCi0gICAgIwotICAgICMgIFdoZW4gYSBuZXcgcm93IGlzIGNyZWF0ZWQsIGlmIHRoZSBvYmpfdHlwZSBoYXMgYSBwcml2YXRlX2tleSwgYW4gYXR0ZW1wdAotICAgICMgIGlzIG1hZGUgdG8gaWRlbnRpZnkgYWxsIHRoZSBwcml2YXRlIGtleXMsIGFuZCBwb3B1bGF0ZSB2YWx1ZXMgZm9yIGVhY2gKLSAgICAjICBvZiB0aGVtLgotICAgICMKLSAgICBkZWYgZmluZF9vcl9jcmVhdGVfcm93KHNlbGYsIG9ial90eXBlLCBuYW1lLCByb3dfZGljdCA9IE5vbmUpOgotICAgICAgICBpZiByb3dfZGljdCA9PSBOb25lOgotICAgICAgICAgICAgcm93X2RpY3QgPSB7fQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLmdldF9vYmplY3RfZnJvbV9zdG9yZShvYmpfdHlwZSwgbmFtZSkKLSAgICAgICAgICAgIGlmIHJlc3VsdFttaS5wayhvYmpfdHlwZSldID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtGYWxzZSwgRmFsc2VdCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlX3JvdyhvYmpfdHlwZSwgbmFtZSwgcm93X2RpY3QpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgYXNzb2NpYXRlX2ZvcmVpZ25fa2V5c193aXRoX2RpY3QKLSAgICAjICBQYXNzZWQgYW4gb2JqX3R5cGUsIGFuZCBhIGRpY3Rpb25hcnksIHJldHVybnMgYSBkaWN0aW9uYXJ5IHdpdGggdXBkYXRlZAotICAgICMgIGtleTp2YWx1ZSBwYWlycyBmb3IgYWxsIHRoZSBrbm93biBwcml2YXRlIGtleXMuCi0gICAgIyAgCi0gICAgIwotICAgIGRlZiBhc3NvY2lhdGVfZm9yZWlnbl9rZXlzX3dpdGhfZGljdChzZWxmLCBvYmpfdHlwZSwgY3JlYXRlX2RpY3QpOgotICAgICAgICAjCi0gICAgICAgICMgUHJpdmF0ZSBrZXkgbmFtZXMgYXJlICd3ZWxsIGtub3duJywgc28gdGhlIG5hbWVzIGFyZSB1c2VkIGhlcmUgdG8KLSAgICAgICAgIyBpZGVuaWZ5IGhvdyB0aGUgZmllbGQgb3VnaHQgdG8gYmUgcG9wdWxhdGVkLgotICAgICAgICAjCi0gICAgICAgIGZvciBmb3JlaWduX2tleV9pZCBpbiBtaS5vYmpfdHlwZV9mb3JlaWduX2tleXMob2JqX3R5cGUpOgotICAgICAgICAgICAgaWYgZm9yZWlnbl9rZXlfaWQgaW4gY3JlYXRlX2RpY3Q6Ci0gICAgICAgICAgICAgICAgIyBhbHJlYWR5IHNldCBpbiB0aGUgZGljdGlvbmFyeQotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsaWYgbWkuaXNfbnVsbF9hbGxvd2VkKG9ial90eXBlLCBmb3JlaWduX2tleV9pZCk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsaWYgZm9yZWlnbl9rZXlfaWQgPT0gJ3Zucyc6Ci0gICAgICAgICAgICAgICAgY3JlYXRlX2RpY3RbZm9yZWlnbl9rZXlfaWRdID0gc2VsZi52bnNfbmFtZSgpCi0gICAgICAgICAgICBlbGlmIGZvcmVpZ25fa2V5X2lkID09ICd2bnMtYWNjZXNzLWxpc3QnIGFuZCBcCi0gICAgICAgICAgICAgIHNlbGYuZ2V0X2N1cnJlbnRfbW9kZV9vYmpfdHlwZSgpID09ICd2bnMtYWNjZXNzLWxpc3QnOgotICAgICAgICAgICAgICAgIGNyZWF0ZV9kaWN0W2ZvcmVpZ25fa2V5X2lkXSA9IHNlbGYuZ2V0X2N1cnJlbnRfbW9kZV9vYmooKQotICAgICAgICAgICAgZWxpZiBmb3JlaWduX2tleV9pZCA9PSAncnVsZSc6Ci0gICAgICAgICAgICAgICAgIyBMT09LISB0aGlzIHNlZW1zIHRvIG5lZWQgbW9yZSB3b3JrLCB3aGF0J3MgdGhlIHJ1bGUgcmVsYXRpb25zaGlwPwotICAgICAgICAgICAgICAgIGlmIG9ial90eXBlID09ICd2bnMtaW50ZXJmYWNlJzoKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2RpY3QgPSBhc3NvY2lhdGVfZm9yZWlnbl9rZXlfZm9yX3Zuc19pbnRlcmZhY2UoZGljdCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X3N0YWNrKCkKLSAgICAgICAgICAgICAgICBwcmludCBzZWxmLmVycm9yX21zZygiSW50ZXJuYWw6ICVzIGNhbid0IGRldGVybWluZSB2YWx1ZSAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGZvcmVpZ24ga2V5ICVzIiAlIChvYmpfdHlwZSwgZm9yZWlnbl9rZXlfaWQpKQotIAotICAgICAgICByZXR1cm4gY3JlYXRlX2RpY3QKLQotICAgICMKLSAgICAjIG1ldGhvZHMgdG8gbWFuYWdlIHRoZSBtb2RlX3N0YWNrLCBwcm9tcHRzLCBhbmQgbW9kZV9vYmovbW9kZV9vYmpfdHlwZQotICAgICMKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBzZXRfY29udG9sbGVyX2Zvcl9wcm9tcHQKLSAgICAjCi0gICAgZGVmIHNldF9jb250cm9sbGVyX2Zvcl9wcm9tcHQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY29udHJvbGxlciA9PSAiMTI3LjAuMC4xOjgwMDAiOgotICAgICAgICAgICAgc2VsZi5jb250cm9sbGVyX2Zvcl9wcm9tcHQgPSBzb2NrZXQuZ2V0aG9zdG5hbWUoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5jb250cm9sbGVyX2Zvcl9wcm9tcHQgPSBzZWxmLmNvbnRyb2xsZXIKLSAgICAgICAgICAgIHNlbGYudXBkYXRlX3Byb21wdCgpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgdXBkYXRlX3Byb21wdAotICAgICMgIFRoZXJlIGFyZSBzZXZlcmFsIGRpZmZlcmVudCBwcm9tcHRzIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBtb2RlOgotICAgICMgICdob3N0Jz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gbG9naW4gbW9kZQotICAgICMgICdob3N0JyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gZW5hYmxlIG1vZGUKLSAgICAjICAnaG9zdCcoY29uZmlnKSMgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGNvbmZpZyBtb2RlCi0gICAgIyAgJ2hvc3QnKGNvbmZpZy12bnMtZGVmaW5pdGlvbi1uYW1lKSMgICAgICAtLSB2bnMtZGVmaW5pdGlvbiBtb2RlCi0gICAgIyAgJ2hvc3QnKGNvbmZpZy12bnMtZGVmaW5pdGlvbi1pbnRlcmZhY2UtcnVsZS1uYW1lKSMgLS0gdm5zLWRlZm4sCi0gICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UtcnVsZSBtb2RlCi0gICAgIwotICAgIGRlZiB1cGRhdGVfcHJvbXB0KHNlbGYpOgotICAgICAgICBpZiBzZWxmLmN1cnJlbnRfbW9kZSgpLnN0YXJ0c3dpdGgoImNvbmZpZyIpOgotICAgICAgICAgICAgY3VycmVudF9tb2RlID0gIigiICsgc2VsZi5jdXJyZW50X21vZGUoKQotICAgICAgICAgICAgaWYgc2VsZi5nZXRfY3VycmVudF9tb2RlX29iaigpICE9IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5pbl9jb25maWdfc3VibW9kZSgiY29uZmlnLXZucyIpOgotICAgICAgICAgICAgICAgICAgICAjIHN1YnN0aXR1dGUgJ3wnIHdpdGggJy0nCi0gICAgICAgICAgICAgICAgICAgIHBhcnRzID0gc2VsZi5nZXRfY3VycmVudF9tb2RlX29iaigpLnNwbGl0KCd8JykKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudF9tb2RlICs9ICItIiArICctJy5qb2luKHBhcnRzKQotICAgICAgICAgICAgc2VsZi5wcm9tcHQgPSBzdHIoc2VsZi5jb250cm9sbGVyX2Zvcl9wcm9tcHQpICsgY3VycmVudF9tb2RlICsgIikjICIKLSAgICAgICAgZWxpZiBzZWxmLmN1cnJlbnRfbW9kZSgpID09ICJlbmFibGUiOgotICAgICAgICAgICAgc2VsZi5wcm9tcHQgPSBzdHIoc2VsZi5jb250cm9sbGVyX2Zvcl9wcm9tcHQpICsgIiMgIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5wcm9tcHQgPSBzdHIoc2VsZi5jb250cm9sbGVyX2Zvcl9wcm9tcHQpICsgIj4gIgotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHB1c2hfbW9kZQotICAgICMgIEV2ZXJ5IHB1c2hlZCBtb2RlIGlzIGEgcXVhZDogPG1vZGVOYW1lLCB0YWJsZU5hbWUsIHNwZWNpZmljUm93LCBleGl0Q2FsbGJhY2s+Ci0gICAgIwotICAgICMgIG9ial90eXBlIGlzIHRoZSBuYW1lIG9mIGFuIGFzc29jaWF0ZWQgdGFibGUvbW9kZWwgKHRhYmxlTmFtZSkKLSAgICAjICBvYmogaXMgdGhlIGtleSdzIHZhbHVlIGZvciB0aGUgdGFibGUvbW9kZWwncyBrZXkgKHNwZWNpZmljUm93KQotICAgICMgCi0gICAgIyAgVGhlIGNsaSBjdXJyZW50bHkgc3VwcG9ydHMgYSBtb2RlIG9mIHRhYmxlL21vZGVsIHJvdyBlZGl0LCB3aGVyZSB0aGUKLSAgICAjICBuYW1lIG9mIHRoZSB0YWJsZS9tb2RlIGlzIGVudGVyZWQsIGFsb25nIHdpdGggYW4gYXNzb2NpYXRlZCB2YWx1ZSBmb3IKLSAgICAjICBrZXktY29sdW1uIG9mIHRoZSB0YWJsZS4gICBPbmNlIGluIHRoYXQgbW9kZSwgb3RoZXIgZmllbGRzIG9mIHRoZSB0YWJsZQotICAgICMgIGNhbiBiZSBlZGl0ZWQgYnkgZW50ZXJpbmcgdGhlIG5hbWUgb2YgdGhlIGZpZWxkLCBhbG9uZyB3aXRoIGEgbmV3IHZhbHVlLgotICAgICMKLSAgICAjICBUaGUgZXhpdENhbGxiYWNrIGlzIHRoZSBuYW5lIG9mIGEgbWV0aG9kIHRvIGNhbGwgd2hlbiB0aGUgY3VycmVudCBwdXNoZWQKLSAgICAjICBsZXZlbCBpcyBnZXR0aW5nIHBvcCdkLgotICAgICMKLSAgICBkZWYgcHVzaF9tb2RlKHNlbGYsIG1vZGVfbmFtZSwgb2JqX3R5cGU9Tm9uZSwgb2JqPU5vbmUsIGV4aXRDYWxsYmFjaz1Ob25lKToKLSAgICAgICAgc2VsZi5tb2RlX3N0YWNrLmFwcGVuZCggeyAnbW9kZV9uYW1lJyA6IG1vZGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2JqX3R5cGUnIDogb2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29iaicgOiBvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXQnIDogZXhpdENhbGxiYWNrfSApCi0gICAgICAgIHNlbGYudXBkYXRlX3Byb21wdCgpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgcG9wX21vZGUKLSAgICAjICBQb3AgdGhlIHRvcCBvZiB0aGUgc3RhY2sgb2YgbW9kZSdzLgotICAgICMKLSAgICBkZWYgcG9wX21vZGUoc2VsZik6IAotICAgICAgICBtID0gc2VsZi5tb2RlX3N0YWNrLnBvcCgpCi0gICAgICAgIGlmIGxlbihzZWxmLm1vZGVfc3RhY2spID09IDA6Ci0gICAgICAgICAgICBzZWxmLnJ1biA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnVwZGF0ZV9wcm9tcHQoKQotICAgICAgICByZXR1cm4gbQotICAgIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBtb2RlX3N0YWNrX3RvX3Jlc3RfZGljdAotICAgICMgIENvbnZlcnQgdGhlIHN0YWNrIG9mIHB1c2hlZCBtb2RlcyBpbnRvIGEgY29sbGVjdGlvbiBvZiBrZXlzLgotICAgICMgIENhbiBiZSB1c2VkIHRvIGJ1aWxkIHRoZSByZXN0IGFwaSBkaWN0aW9uYXJ5IHVzZWQgZm9yIHJvdyBjcmVhdGVzCi0gICAgIwotICAgIGRlZiBtb2RlX3N0YWNrX3RvX3Jlc3RfZGljdChzZWxmLCByZXN0X2RpY3QpOgotICAgICAgICAjCi0gICAgICAgIGZvciB4IGluIHNlbGYubW9kZV9zdGFjazoKLSAgICAgICAgICAgIGlmIHhbJ21vZGVfbmFtZSddLnN0YXJ0c3dpdGgoJ2NvbmZpZy0nKToKLSAgICAgICAgICAgICAgICByZXN0X2RpY3RbeFsnb2JqX3R5cGUnXV0gPSB4WydvYmonXQotCi0gICAgICAgIHJldHVybiByZXN0X2RpY3QKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjdXJyZW50X21vZGUKLSAgICAjICBSZXR1cm4gdGhlIHN0cmluZyBkZXNjcmliaW5nIHRoZSBjdXJyZW50ICh0b3ApIG1vZGUuCi0gICAgIwotICAgIGRlZiBjdXJyZW50X21vZGUoc2VsZik6IAotICAgICAgICBpZiBsZW4oc2VsZi5tb2RlX3N0YWNrKSA8IDE6Ci0gICAgICAgICAgICByZXR1cm4gIiIKLSAgICAgICAgcmV0dXJuIHNlbGYubW9kZV9zdGFja1stMV1bJ21vZGVfbmFtZSddCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW5fY29uZmlnX3N1Ym1vZGUKLSAgICAjICBSZXR1cm4gdHJ1ZSB3aGVuIHRoZSBjdXJyZW50IG1vZGUgaXMgZWRpdGluZyB0aGUgY29udGVudHMgb2Ygb25lIG9mIHRoZQotICAgICMgIHJvd3Mgb2YgdGhlIHRhYmxlL21vZGVsIHN0b3JlLgotICAgICMKLSAgICBkZWYgaW5fY29uZmlnX3N1Ym1vZGUoc2VsZiwgcHJlZml4ID0gImNvbmZpZy0iKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9tb2RlKCkuc3RhcnRzd2l0aChwcmVmaXgpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW5fY29uZmlnX21vZGUKLSAgICAjICBSZXR1cm5zIHRydWUgZm9yIGFueSBjb25maWcgbW9kZTsgdGhpcyBpcyBhbnkgbmVzdGVkIGVkaXQgbW9kZSwKLSAgICAjICBhbG9uZyB3aXRoIHRoZSBiYXNlIGNvbmZpZyBtb2RlCi0gICAgIwotICAgIGRlZiBpbl9jb25maWdfbW9kZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9tb2RlKCkuc3RhcnRzd2l0aCgiY29uZmlnIikKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW5fY29uZmlnX3N3aXRjaF9tb2RlCi0gICAgIyAgUmV0dXJucyB0cnVlIHdoZW4gdGhlIHN3aXRjaCBtb2RlIGhhcyBiZWVuIGVudGVyZWQgdmlhIHRoZSAnc3dpdGNoIDxkcGlkPicgY29tbWFuZC4KLSAgICAjCi0gICAgZGVmIGluX2NvbmZpZ19zd2l0Y2hfbW9kZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9tb2RlKCkgPT0gImNvbmZpZy1zd2l0Y2giCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGluX2NvbmZpZ19zd2l0Y2hfaWZfbW9kZQotICAgICMgIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSBzd2l0Y2gtaW50ZXJmYWNlIG1vZGUgaGFzIGJlZW4gZW50ZXJlZCB2aWEgdGhlCi0gICAgIyAnc3dpdGNoIDxkcGlkPicgY29tbWFuZCwgdGhlbiB0aGUgaW50ZXJmYWNlIDxuYW1lPiBjb21tYW5kCi0gICAgIwotICAgIGRlZiBpbl9jb25maWdfc3dpdGNoX2lmX21vZGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRfbW9kZSgpID09ICJjb25maWctc3dpdGNoLWlmIgotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHZuc19uYW1lCi0gICAgIwotICAgIGRlZiB2bnNfbmFtZShzZWxmKToKLSAgICAgICAgbW9kZV9kaWN0ID0gc2VsZi5tb2RlX3N0YWNrX3RvX3Jlc3RfZGljdCh7fSkKLSAgICAgICAgaWYgJ3ZucycgaW4gbW9kZV9kaWN0OgotICAgICAgICAgICAgcmV0dXJuIG1vZGVfZGljdFsndm5zJ10KLSAgICAgICAgaWYgJ3Zucy1kZWZpbml0aW9uJyBpbiBtb2RlX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gbW9kZV9kaWN0Wyd2bnMtZGVmaW5pdGlvbiddCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW5fY29uZmlnX3Zuc19tb2RlCi0gICAgIyAgUmV0dXJucyB0cnVlIHdoZW4gdGhlIHZucyBtb2RlIGhhcyBiZWVuIGVudGVyZWQgdmlhIHRoZSAndm5zIDx2bnNJZD4nIGNvbW1hbmQuCi0gICAgIwotICAgIGRlZiBpbl9jb25maWdfdm5zX21vZGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRfbW9kZSgpID09ICJjb25maWctdm5zIgotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbl9jb25maWdfdm5zX2RlZl9tb2RlCi0gICAgIyAgUmV0dXJucyB0cnVlIHdoZW4gdGhlIHZucyBtb2RlIGhhcyBiZWVuIGVudGVyZWQgdmlhIHRoZQotICAgICMgICd2bnMtZGVmaW5pdGlvbiA8dm5zSWQ+JyBjb21tYW5kLgotICAgICMKLSAgICBkZWYgaW5fY29uZmlnX3Zuc19kZWZfbW9kZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9tb2RlKCkgPT0gImNvbmZpZy12bnMtZGVmIgotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbl9jb25maWdfdm5zX2RlZl9pZl9ydWxlX21vZGUKLSAgICAjICBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdm5zIG1vZGUgaGFzIGJlZW4gZW50ZXJlZCB2aWEgdGhlCi0gICAgIyAgJ3Zucy1kZWZpbml0aW9uIDx2bnNJZD4nIGNvbW1hbmQsIHRoZW4gaW50byBpbnRlcmZhY2UtcnVsZSBtb2RlLgotICAgICMKLSAgICBkZWYgaW5fY29uZmlnX3Zuc19kZWZfaWZfcnVsZV9tb2RlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50X21vZGUoKSA9PSAiY29uZmlnLXZucy1kZWYtaWYtcnVsZSIKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbl9jb25maWdfdm5zX2FjbF9tb2RlCi0gICAgIyAgUmV0dXJucyB0cnVlIHdoZW4gdGhlIHZucyBtb2RlIGhhcyBiZWVuIGVudGVyZWQgdmlhIHRoZQotICAgICMgICd2bnMgPHZuc0lkPicgY29tbWFuZCwgdGhlbiBpbnRvIGFjbCBtb2RlLgotICAgICMKLSAgICBkZWYgaW5fY29uZmlnX3Zuc19hY2xfbW9kZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9tb2RlKCkgPT0gImNvbmZpZy12bnMtYWNsIgotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGluX2NvbmZpZ192bnNfaWZfbW9kZQotICAgICMgIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2bnMgbW9kZSBoYXMgYmVlbiBlbnRlcmVkIHZpYSB0aGUKLSAgICAjICAndm5zIDx2bnNJZD4nIGNvbW1hbmQsIHRoZW4gaW50byBpbnRlcmZhY2UgbW9kZS4KLSAgICAjCi0gICAgZGVmIGluX2NvbmZpZ192bnNfaWZfbW9kZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9tb2RlKCkgPT0gImNvbmZpZy12bnMtaWYiCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW5fY29uZmlnX2hvc3RfbW9kZQotICAgICMgIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2bnMgbW9kZSBoYXMgYmVlbiBlbnRlcmVkIHZpYSB0aGUKLSAgICAjICAnaG9zdCA8aG9zdC1pZD4nIGNvbW1hbmQKLSAgICAjCi0gICAgZGVmIGluX2NvbmZpZ19ob3N0X21vZGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRfbW9kZSgpID09ICJjb25maWctaG9zdCIKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbl9jb25maWdfY29udHJvbGxlcl9ub2RlX21vZGUKLSAgICAjICBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdm5zIG1vZGUgaGFzIGJlZW4gZW50ZXJlZCB2aWEgdGhlCi0gICAgIyAgJ2NvbnRyb2xsZXItbm9kZSA8Y29udHJvbGxlci1ub2RlLWlkPicgY29tbWFuZAotICAgICMKLSAgICBkZWYgaW5fY29uZmlnX2NvbnRyb2xsZXJfbm9kZV9tb2RlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50X21vZGUoKSA9PSAiY29uZmlnLWNvbnRyb2xsZXItbm9kZSIKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbl9jb25maWdfY29udHJvbGxlcl9pbnRlcmZhY2VfbW9kZQotICAgICMgIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSBjb250cm9sbGVyIGludGVyZmFjZSBtb2RlIGhhcyBiZWVuIGVudGVyZWQgdmlhIHRoZQotICAgICMgICdpbnRlcmZhY2UgRXRoZXJuZXQgPCM+JyBjb21tYW5kIGZyb20gdGhlIGNvbnRyb2xsZXItbm9kZSBjb25maWcgbW9kZQotICAgICMKLSAgICBkZWYgaW5fY29uZmlnX2NvbnRyb2xsZXJfaW50ZXJmYWNlX21vZGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRfbW9kZSgpID09ICJjb25maWctY29udHJvbGxlci1pZiIKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbl9jb25maWdfcG9ydF9jaGFubmVsX21vZGUKLSAgICAjCi0gICAgZGVmIGluX2NvbmZpZ19wb3J0X2NoYW5uZWxfbW9kZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9tb2RlKCkgPT0gImNvbmZpZy1wb3J0LWNoYW5uZWwiCi0KLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBzZXRfY3VycmVudF9tb2RlX29iagotICAgICMgIFNldHMgdGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIHJvdyAoa2V5J3MgdmFsdWUpCi0gICAgIwotICAgIGRlZiBzZXRfY3VycmVudF9tb2RlX29iaihzZWxmLCBvYmopOgotICAgICAgICBzZWxmLm1vZGVfc3RhY2tbLTFdWydvYmonXSA9IG9iagotICAgICAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZ2V0X2N1cnJlbnRfbW9kZV9vYmoKLSAgICAjICBHZXRzIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IG1vZGUncyBzZWxlY3RlZCByb3cgdmFsdWUgKGtleSdzIHZhbHVlKQotICAgICMgIFRoaXMgY2FuIHJldHVybiBOb25lLgotICAgICMKLSAgICBkZWYgZ2V0X2N1cnJlbnRfbW9kZV9vYmooc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLm1vZGVfc3RhY2tbLTFdWydvYmonXQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHNldF9jdXJyZW50X21vZGVfb2JqX3R5cGUKLSAgICAjICBTZXQgdGhlIHRhYmxlL21vZGVsIG5hbWUgZm9yIHRoaXMgY3VycmVudCBtb2RlLgotICAgICMKLSAgICBkZWYgc2V0X2N1cnJlbnRfbW9kZV9vYmpfdHlwZShzZWxmLCBvYmpfdHlwZSk6Ci0gICAgICAgIHNlbGYubW9kZV9zdGFja1stMV1bJ29ial90eXBlJ10gPSBvYmpfdHlwZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGdldF9jdXJyZW50X21vZGVfb2JqX3R5cGUKLSAgICAjICBHZXQgdGhlIHRhYmxlL21vZGVsIG5hbWUgZm9yIHRoaXMgY3VycmVudCBtb2RlLgotICAgICMKLSAgICBkZWYgZ2V0X2N1cnJlbnRfbW9kZV9vYmpfdHlwZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYubW9kZV9zdGFja1stMV1bJ29ial90eXBlJ10KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBnZXRfbmVzdGVkX21vZGVfb2JqCi0gICAgIyAgR2V0IHRoZSBpZCBvZiB0aGUgb2JqZWN0IHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gb2JqZWN0IHR5cGUKLSAgICAjICBzdGFydGluZyBmcm9tIHRoZSBjdXJyZW50IG1vZGUgYW5kIHdvcmtpbmcgYmFja3dhcmRzIHRvIHRoZQotICAgICMgIHRvcC1sZXZlbCBtb2RlLiBJZiB0aGVyZSdzIG5vIG1vZGUgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbgotICAgICMgIG9iamVjdCB0eXBlLCB0aGVuIHJldHVybiBOb25lIChtYXliZSBzaG91bGQgaGFuZGxlIGFzIGV4Y2VwdGlvbj8pLgotICAgICMKLSAgICBkZWYgZ2V0X25lc3RlZF9tb2RlX29iaihzZWxmLCBvYmpfdHlwZSk6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbihzZWxmLm1vZGVfc3RhY2spKzEpOgotICAgICAgICAgICAgIyBVc2UgbmVnYXRpdmUgaW5kZXggc28gd2Ugc2VhcmNoIGZyb20gdGhlIHRvcC9lbmQgb2YgdGhlIHN0YWNrCi0gICAgICAgICAgICBtb2RlID0gc2VsZi5tb2RlX3N0YWNrWy1pXQotICAgICAgICAgICAgaWYgbW9kZVsnb2JqX3R5cGUnXSA9PSBvYmpfdHlwZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbW9kZVsnb2JqJ10KLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAKLSAgICAjCi0gICAgIyBoZWxwZXIgZnVuY3Rpb25zIHRvIGFjY2VzcyBjb21tYW5kcywgb2JqX3R5cGVzLCBhbmQgZmllbGRzCi0gICAgIwotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGFsbF9vYmpfdHlwZXNfc3RhcnRpbmdfd2l0aAotICAgICMgIFJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUgY3VycmVudCBvYmplY3QgdHlwZXMgc3RhcnRpbmcgd2l0aCB0aGUgdGV4dAotICAgICMgIHBhcmFtZXRlci4KLSAgICAjCi0gICAgIwotICAgIGRlZiBhbGxfb2JqX3R5cGVzX3N0YXJ0aW5nX3dpdGgoc2VsZiwgdGV4dD0iIik6Ci0gICAgICAgIGlmIG9ub3MgPT0gMDoKLSAgICAgICAgICAgIG5ldHZpcnRfZmVhdHVyZSA9IHNlbGYubmV0dmlydF9mZWF0dXJlX2VuYWJsZWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmV0dmlydF9mZWF0dXJlID0gRmFsc2UKLQotICAgICAgICBtYXRjaGVkX29ial90eXBlcyA9IFt4IGZvciB4IGluIG1pLm9ial90eXBlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgodGV4dCkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVidWdfb2JqX3R5cGUoeCkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXR2aXJ0X2ZlYXR1cmUgb3IgKHggIT0gJ3Zucy1kZWZpbml0aW9uJykpIF0KLSAgICAgICAgIyBzeW50aGV0aWMgb2JqZWN0IHR5cGUgYmFzZWQgb24gdGhlIHZucyBjb25maWcgc3VibW9kZS4KLSAgICAgICAgaWYgc2VsZi5pbl9jb25maWdfdm5zX2RlZl9tb2RlKCkgYW5kICJpbnRlcmZhY2UtcnVsZSIuc3RhcnRzd2l0aCh0ZXh0KToKLSAgICAgICAgICAgIG1hdGNoZWRfb2JqX3R5cGVzLmFwcGVuZCgiaW50ZXJmYWNlLXJ1bGUiKQotICAgICAgICBpZiBzZWxmLmluX2NvbmZpZ192bnNfbW9kZSgpIGFuZCAiYWNjZXNzLWxpc3QiLnN0YXJ0c3dpdGgodGV4dCk6Ci0gICAgICAgICAgICBtYXRjaGVkX29ial90eXBlcy5hcHBlbmQoImFjY2Vzcy1saXN0IikKLSAgICAgICAgaWYgc2VsZi5pbl9jb25maWdfdm5zX21vZGUoKSBhbmQgImludGVyZmFjZXMiLnN0YXJ0c3dpdGgodGV4dCk6Ci0gICAgICAgICAgICBtYXRjaGVkX29ial90eXBlcy5hcHBlbmQoImludGVyZmFjZXMiKQotICAgICAgICByZXR1cm4gbWF0Y2hlZF9vYmpfdHlwZXMKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZmVhdHVyZV9lbmFibGVkCi0gICAgIyAgUmV0dXJuIFRydWUgd2hlbiBhIHBhcnRpY3VsYXIgZmVhdHVyZSBpcyBlbmFibGVkLgotICAgICMKLSAgICBkZWYgZmVhdHVyZV9lbmFibGVkKHNlbGYsIGZlYXR1cmUpOgotICAgICAgICAjIGZlYXR1cmVzIG5vdCBtYW5hZ2VkIHZpYSBzdG9yZQotICAgICAgICAjCi0gICAgICAgIGlmIGZlYXR1cmUgPT0gJ2V4cGVyaW1lbnRhbCc6Ci0gICAgICAgICAgICByZXR1cm4gb3MucGF0aC5leGlzdHMoc2VsZi5mZWF0dXJlX2FsbG93X2V4cGVyaW1lbnRhbCkKLQotICAgICAgICBpZiBmZWF0dXJlID09ICdoYSc6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuYm9vdF9jb25maWdfZmlsZW5hbWUsICJyIikgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnaGEtY29uZmlnPScpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgnPScpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHBhcnRzKSA+IDAgYW5kIHBhcnRzWzFdID09ICdlbmFibGVkXG4nOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICMgb25seSBjdXJyZW50IGZlYXR1cmVzIHdoaWNoIGNhbiBiZSBlbmFibGVkIGRpc2FibGVkCi0gICAgICAgIGlmIGZlYXR1cmUgbm90IGluIFsKLSAgICAgICAgICAgICAgICAndm5zJywgJ3N0YXRpYy1mbG93LXB1c2hlcicsICdwZXJmb3JtYW5jZS1tb25pdG9yJ106Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICAjCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGVudHJ5ID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgnZmVhdHVyZScpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCAnZmVhdHVyZScpCi0gICAgICAgICAgICBwcmludCBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgZmVhdHVyZV90b19maWVsZF9kaWN0ID0gewotICAgICAgICAgICAgJ3ZucycgICAgICAgICAgICAgICAgIDogJ25ldHZpcnQtZmVhdHVyZScsCi0gICAgICAgICAgICAnc3RhdGljLWZsb3ctcHVzaGVyJyAgOiAnc3RhdGljLWZsb3ctcHVzaGVyLWZlYXR1cmUnLAotICAgICAgICAgICAgJ3BlcmZvcm1hbmNlLW1vbml0b3InIDogJ3BlcmZvcm1hbmNlLW1vbml0b3ItZmVhdHVyZScsCi0gICAgICAgIH0KLQotICAgICAgICBpZiBsZW4oZW50cnkpID09IDA6Ci0gICAgICAgICAgICBpZiBmZWF0dXJlIGluIGZlYXR1cmVfdG9fZmllbGRfZGljdDoKLSAgICAgICAgICAgICAgICBmaWVsZCA9IGZlYXR1cmVfdG9fZmllbGRfZGljdFtmZWF0dXJlXQotICAgICAgICAgICAgICAgIHJldHVybiBtaS5maWVsZF9kZWZhdWx0X3ZhbHVlKCdmZWF0dXJlJywgZmllbGQpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgIGlmIGxlbihlbnRyeSkgIT0gMToKLSAgICAgICAgICAgICMgbmVlZCBhIG1lY2hhbmlzbSB0byBzZWxlY3Qgb25lIGZyb20gdGhlIGxpc3QKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgaWYgZmVhdHVyZSBpbiBmZWF0dXJlX3RvX2ZpZWxkX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gZW50cnlbMF1bZmVhdHVyZV90b19maWVsZF9kaWN0W2ZlYXR1cmVdXQotCi0gICAgICAgICMgdXNlIHRoZSBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIG1vZGVsIChldmVyeSBmZWF0dXJlIG5lZWRzIGEgZGVmYXVsdCB2YWx1ZSkKLSAgICAgICAgZGVmYXVpbHRfdmFsdWUgPSBtaS5maWVsZF9kZWZhdWx0X3ZhbHVlKCdmZWF0dXJlJywgZmVhdHVyZV90b19maWVsZF9kaWN0W2ZlYXR1cmVdKQotICAgICAgICBpZiBkZWZhdWx0X3ZhbHVlID09IE5vbmU6Ci0gICAgICAgICAgICBwcmludCBzZWxmLmVycm9yX21zZygnRmVhdHVyZSAlcyBtaXNzaW5nIGRlZmF1bHQgdmFsdWUnICUgZmVhdHVyZSkKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlCi0KLSAgICAnJycKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgYWRkcmVzc19zcGFjZV9kZWZhdWx0X2NyZWF0ZQotICAgICMKLSAgICAjICBDcmVhdGUgYSBkZWZhdWx0IGFkZHJlc3Mgc3BhY2UgaWYgaXQgZG9lc24ndCBleGlzdCwgd2hpY2ggZW5hYmxlcwotICAgICMgICdhZGRyZXNzLXNwYWNlIGRlZmF1bHQnLAotICAgICMKLSAgICBkZWYgYWRkcmVzc19zcGFjZV9kZWZhdWx0X2NyZWF0ZShzZWxmKToKLSAgICAgICAga2V5ID0gbWkucGsoJ2FkZHJlc3Mtc3BhY2UnKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgnYWRkcmVzcy1zcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksICdkZWZhdWx0JywgJ2V4YWN0JykKLSAgICAgICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsICdhZGRyZXNzLXNwYWNlJykKLSAgICAgICAgICAgIGlmIG5vdCAnc2VlX290aGVyJyBpbiBlcnJvcnM6Ci0gICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBsZW4oZW50cmllcykgPT0gMDoKLSAgICAgICAgICAgIHNlbGYuY3JlYXRlX3JvdygnYWRkcmVzcy1zcGFjZScsICdkZWZhdWx0JykKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB0ZW5hbnRfZGVmYXVsdF9jcmVhdGUKLSAgICAjCi0gICAgIyAgQ3JlYXRlIGRlZmF1bHQgdGVuYW50IGFuZCBzeXN0ZW0gdGVuYW50IGlmIGl0IGRvZXNuJ3QgZXhpc3QsIHdoaWNoIGVuYWJsZXMKLSAgICAjICAndGVuYW50IGRlZmF1bHQnIGFuZCB0ZW5hbnQgc3lzdGVtLCByb3V0ZXIgdnJzeXN0ZW0sCi0gICAgIwotICAgIGRlZiB0ZW5hbnRfZGVmYXVsdF9jcmVhdGUoc2VsZik6Ci0gICAgICAgIGtleSA9IG1pLnBrKCd0ZW5hbnQnKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndGVuYW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgJ2RlZmF1bHQnLCAnZXhhY3QnKQotICAgICAgICAgICAgZXJyb3JzID0gTm9uZQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSwgJ3RlbmFudCcpCi0gICAgICAgICAgICBpZiBub3QgJ3NlZV9vdGhlcicgaW4gZXJyb3JzOgotICAgICAgICAgICAgICAgIHByaW50IHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbGVuKGVudHJpZXMpID09IDA6Ci0gICAgICAgICAgICBzZWxmLmNyZWF0ZV9yb3coJ3RlbmFudCcsICdkZWZhdWx0JykKLSAgICAgICAgI2V4dGVybmFsIHRlbmFudAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndGVuYW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgJ2V4dGVybmFsJywgJ2V4YWN0JykKLSAgICAgICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsICd0ZW5hbnQnKQotICAgICAgICAgICAgaWYgbm90ICdzZWVfb3RoZXInIGluIGVycm9yczoKLSAgICAgICAgICAgICAgICBwcmludCBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIGxlbihlbnRyaWVzKSA9PSAwOgotICAgICAgICAgICAgc2VsZi5jcmVhdGVfcm93KCd0ZW5hbnQnLCAnZXh0ZXJuYWwnKQotCi0gICAgICAgICNzeXN0ZW0gdGVuYW50IGFuZCBzeXN0ZW0gcm91dGVyOiB2cnN5c3RlbQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndGVuYW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgJ3N5c3RlbScsICdleGFjdCcpCi0gICAgICAgICAgICBlcnJvcnMgPSBOb25lCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCAndGVuYW50JykKLSAgICAgICAgICAgIGlmIG5vdCAnc2VlX290aGVyJyBpbiBlcnJvcnM6Ci0gICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBsZW4oZW50cmllcykgPT0gMDoKLSAgICAgICAgICAgIHNlbGYuY3JlYXRlX3JvdygndGVuYW50JywgJ3N5c3RlbScpCi0gICAgICAgIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndmlydHVhbHJvdXRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksICd2cnN5c3RlbScsICdleGFjdCcpCi0gICAgICAgICAgICBlcnJvcnMgPSBOb25lCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCAndmlydHVhbHJvdXRlcicpCi0gICAgICAgICAgICBpZiBub3QgJ3NlZV9vdGhlcicgaW4gZXJyb3JzOgotICAgICAgICAgICAgICAgIHByaW50IHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbGVuKGVudHJpZXMpID09IDA6Ci0gICAgICAgICAgICBzZWxmLmNyZWF0ZV9yb3coJ3ZpcnR1YWxyb3V0ZXInLCAndnJzeXN0ZW0nLHsidGVuYW50Ijoic3lzdGVtIiwidnJuYW1lIjoidnJzeXN0ZW0ifSkKLSAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgbmV0dmlydF9mZWF0dXJlX2luaXQKLSAgICAjICBwZXJmb3JtIHZucyBmZWF0cnVlIGVuYWJsZW1lbnQ6Ci0gICAgIyAgQ3JlYXRlIGEgZGVmYXVsdCB2bnMgaWYgaXQgZG9lc24ndCBleGlzdCwgd2hpY2ggZW5hYmxlcyAndm5zIGRlZmF1bHQnLAotICAgICMKLSAgICBkZWYgbmV0dmlydF9mZWF0dXJlX2luaXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYWRkcmVzc19zcGFjZV9kZWZhdWx0X2NyZWF0ZSgpCi0gICAgICAgIHNlbGYudGVuYW50X2RlZmF1bHRfY3JlYXRlKCkKLSAgICAgICAga2V5ID0gbWkucGsoJ3Zucy1kZWZpbml0aW9uJykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZW50cmllcyA9IHNlbGYuZ2V0X3RhYmxlX2Zyb21fc3RvcmUoJ3Zucy1kZWZpbml0aW9uJywga2V5LCAnZGVmYXVsdHxkZWZhdWx0JywgJ2V4YWN0JykKLSAgICAgICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsICd2bnMtZGVmaW5pdGlvbicpCi0gICAgICAgICAgICBpZiBub3QgJ3NlZV9vdGhlcicgaW4gZXJyb3JzOgotICAgICAgICAgICAgICAgIHByaW50IHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbGVuKGVudHJpZXMpID09IDA6Ci0gICAgICAgICAgICBzZWxmLmNyZWF0ZV9yb3coJ3Zucy1kZWZpbml0aW9uJywgJ2RlZmF1bHQnLCB7InRlbmFudCI6ImRlZmF1bHQiLCJ2bnNuYW1lIjoiZGVmYXVsdCJ9KQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIG5ldHZpcnRfZmVhdHVyZV9lbmFibGVkCi0gICAgIyAgUmV0dXJuIFRydWUgd2hlbiB0aGUgdm5zIGZlYXR1cmUgaXMgZW5hYmxlZAotICAgICMgIAotICAgICMgIFdoZW4gdm5zIGlzIGRpc2FibGVkLCBwYXJ0aWN1bGFyIHZucyBjb21tYW5kcyBhcmUgbm8gbG9uZ2VyCi0gICAgIyAgYXZhaWxhYmxlLCBhbG9uZyB3aXRoIGEgZmV3IHNwZWNpZmljIG9iamVjdHMuICBQYXJ0aWN1bGFyCi0gICAgIyAgY29kZSBzaXRlcyB3aGljaCBhcmUgc3BlY2lmaWNhbGx5IGNvbmNlcm5lZCB3aXRoIHRoZXNlIGlzc3VlcwotICAgICMgIGRpc2FibGUgdGhlc2UgaXRlbXMuICBBbm90aGVyIHBvc3NpYmxlIGFwcHJvYWNoIHdvdWxkIGJlIHRvCi0gICAgIyAgbW9kaWZ5IHRoZSBiYXNlIGluZm9ybWF0aW9uIHNvdXJjZXMgIHdoZW4gYSBmZWF0dXJlIGlzCi0gICAgIyAgZW5hYmxlZCBvciBkaXNhYmxlZCwgaWU6IG1pLm9ial90eXBlcyBhbmQgY29tbWFuZF9kaWN0LgotICAgICMgIFRoaXMgbW9yZSBhY3RpdmUgYXBwcm9hY2ggaXNuJ3QgdGFrZW4gc2luY2UgZHVyaW5nCi0gICAgIyAgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIGEgdmFyaWV0eSBvZiBkaWZmZXJlbnQgb2JqZWN0Ci0gICAgIyAgcmVsYXRpb25zaGlwcyBhcmUgY29uc3RydWN0ZWQ7IGZvcmVpZ24ga2V5IHhyZWYncywgIGFsaWFzCi0gICAgIyAga2V5IHhyZWYncywgIG9iamVjdCBrZXkgZGljdGlvbmFyaWVzLCBldGMuICBJZiB0aGUgZmVhdHVyZQotICAgICMgIGVuYWJsZWQgd2VyZSBtb3JlIGFjdGl2ZSwgdGhlbiBhbGwgdGhlc2UgcmVsYXRpb25zaGlwcyB3b3VsZCBhbHNvCi0gICAgIyAgbmVlZCB0byBiZSByZWNvbXB1dGVkLgotICAgICMKLSAgICBkZWYgbmV0dmlydF9mZWF0dXJlX2VuYWJsZWQoc2VsZik6Ci0gICAgICAgIGNvbnRyb2xsZXJfbmV0dmlydF9mZWF0dXJlID0gc2VsZi5mZWF0dXJlX2VuYWJsZWQoInZucyIpCi0gICAgICAgIGlmIHNlbGYubmV0dmlydF9mZWF0dXJlX2VuYWJsZWRfY2FjaGVkICE9IGNvbnRyb2xsZXJfbmV0dmlydF9mZWF0dXJlOgotICAgICAgICAgICAgc2VsZi5uZXR2aXJ0X2ZlYXR1cmVfZW5hYmxlZF9jYWNoZWQgPSBjb250cm9sbGVyX25ldHZpcnRfZmVhdHVyZQotICAgICAgICAgICAgaWYgc2VsZi5uZXR2aXJ0X2ZlYXR1cmVfZW5hYmxlZF9jYWNoZWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5uZXR2aXJ0X2ZlYXR1cmVfaW5pdCgpCi0gICAgICAgIGlmIGNvbnRyb2xsZXJfbmV0dmlydF9mZWF0dXJlID09IEZhbHNlOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCi0gICAgJycnCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZ2V0X29ial9vZl90eXBlCi0gICAgIyAgUmV0dXJuIGEgc2luZ2xlIHJvdywgb3IgTm9uZSwgb2YgdGhlIHRhYmxlIHdobydzIG5hbWUgaXMgcGFzc2VkIGFzIG9ial90eXBlCi0gICAgIyAgUmV0dXJucyBOb25lIHdoZW4gd2hlbiB0aGVyZSdzIG11bHRpcGxlIG1hdGNoZXMgb2YgdGhlIG5hbmUgaW4gdGhlIHRhYmxlL21vZGVsCi0gICAgIyAgUGVyZm9ybXMgbm8gZXJyb3IgcHJvY2Vzc2luZwotICAgICMKLSAgICBkZWYgZ2V0X29ial9vZl90eXBlKHNlbGYsIG9ial90eXBlLCBuYW1lKToKLSAgICAgICAga2V5ID0gbWkucGsob2JqX3R5cGUpCi0gICAgICAgIGlmIGtleToKLSAgICAgICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZShvYmpfdHlwZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSwgb2JqX3R5cGUpCi0KLSAgICAgICAgICAgIGlmIGVycm9yczoKLSAgICAgICAgICAgICAgICBwcmludCBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICBlbnRyaWVzID0gW3ggZm9yIHggaW4gZW50cmllcyBpZiB4LmdldChrZXksICdOb25lJykgPT0gbmFtZV0KLSAgICAgICAgICAgIGlmIGxlbihlbnRyaWVzKSAhPSAxOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICByZXR1cm4gZW50cmllc1swXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGZpZWxkc19mb3JfY3VycmVudF9zdWJtb2RlX3N0YXJ0aW5nX3dpdGgKLSAgICAjICBSZXR1cm4gYSBsaXN0IG9mIGNob2ljZXMgd2hpY2ggYXJlIGZpZWxkcyBuYW1lcyBvZiBtb2RlbC9zdG9yZSBvYmplY3RzCi0gICAgIyAgQW55IGZpZWxkcyB3aGljaCBhcmUgcHJpbWFyeSBrZXlzIGFyZSBleGNsdWRlZCBmcm9tIGVkaXQsIGFzIGFyZSBhbnkKLSAgICAjICBmb3JlaWduIGtleXMsIHRoaXMgaXMgbWFuYWdlZCB0aHJvdWdoIGlzX2VkaXRhYmxlKCkKLSAgICAjCi0gICAgZGVmIGZpZWxkc19mb3JfY3VycmVudF9zdWJtb2RlX3N0YXJ0aW5nX3dpdGgoc2VsZiwgc3RhcnRfdGV4dD0iIik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmluX2NvbmZpZ19zdWJtb2RlKCk6Ci0gICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgaWYgc2VsZi5pbl9jb25maWdfdm5zX21vZGUoKToKLSAgICAgICAgICAgIHJldHVybiBbXQotICAgICAgICBvYmpfdHlwZSA9IHNlbGYuZ2V0X2N1cnJlbnRfbW9kZV9vYmpfdHlwZSgpCi0gICAgICAgIGlmIG5vdCBvYmpfdHlwZSBpbiBtaS5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgZmllbGRzID0gW3ggZm9yIHggaW4gbWkub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ10ua2V5cygpIFwKLSAgICAgICAgICAgICAgICAgIGlmIG1pLmlzX2VkaXRhYmxlKG9ial90eXBlLCB4KV0KLQotICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gZmllbGRzIGlmIHguc3RhcnRzd2l0aChzdGFydF90ZXh0KV0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBvYmpfdHlwZXNfZm9yX2NvbmZpZ19tb2RlX3N0YXJ0aW5nX3dpdGgKLSAgICAjCi0gICAgIyB3aGF0IG9iaiB0eXBlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSBnaXZlbiBzdWJtb2RlCi0gICAgIyBlLmcuLCB0b3AtbGV2ZWwgY29uZmlnIG1vZGUgaGFzIHN3aXRjaCBhbmQgY29uZmlnLXN3aXRjaCBoYXMKLSAgICAjIGZsb3ctZW50cnkgYnV0IGZsb3ctZW50cnkgc2hvdWxkIG5vdCBiZSBhdmFpbGFibGUgaW4gdG9wLWxldmVsCi0gICAgIyBjb25maWcgbm9yIHNob3VsZCBzd2l0Y2ggYmUgYXZhaWxhYmxlIGluIGNvbmZpZy1zd2l0Y2ggc3VibW9kZSEKLSAgICAjIExPT0shIGhhcmR3aXJlZCBmb3Igbm93IHRvIHRlc3QgcGFyc2luZyAtIG5lZWQgdG8gbWVyZ2Ugd2l0aCBtb2RlbAotICAgICMKLSAgICBkZWYgb2JqX3R5cGVzX2Zvcl9jb25maWdfbW9kZV9zdGFydGluZ193aXRoKHNlbGYsIHN0YXJ0X3RleHQ9IiIpOgotICAgICAgICBpZiBub3Qgc2VsZi5pbl9jb25maWdfbW9kZSgpOgotICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgICMKLSAgICAgICAgIyB2bnMgZmVhdHVyZXMKLSAgICAgICAgaWYgb25vcyA9PSAwOgotICAgICAgICAgICAgbmV0dmlydF9mZWF0dXJlcyA9IHNlbGYubmV0dmlydF9mZWF0dXJlX2VuYWJsZWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmV0dmlydF9mZWF0dXJlcyA9IEZhbHNlCi0gICAgICAgIHZuc19vYmplY3RzID0gWyAndm5zLWRlZmluaXRpb24nIF0KLQotICAgICAgICByZXRfbGlzdCA9IFt4IGZvciB4IGluIG1pLm9ial90eXBlcwotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnX29ial90eXBlKHgpIGFuZCAKLSAgICAgICAgICAgICAgICAgICAgICAgbm90IG1pLmlzX29ial90eXBlX3NvdXJjZV9ub3RfdXNlcl9jb25maWcoeCldCi0gICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiByZXRfbGlzdCBpZiB4LnN0YXJ0c3dpdGgoc3RhcnRfdGV4dCkgYW5kCi0gICAgICAgICAgICAgICAgICAgIChuZXR2aXJ0X2ZlYXR1cmVzIG9yIG5vdCB4IGluIHZuc19vYmplY3RzKSBdCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHRpdGxlX29mKGNvbW1hbmQpOgotICAgICAgICByZXR1cm4gY29tbWFuZFsndGl0bGUnXSBpZiB0eXBlKGNvbW1hbmQpIGlzIGRpY3QgZWxzZSBjb21tYW5kCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY29tbWFuZHNfZmVhdHVyZV9lbmFibGVkCi0gICAgIwotICAgIGRlZiBjb21tYW5kc19mZWF0dXJlX2VuYWJsZWQoc2VsZiwgY29tbWFuZHMpOgotICAgICAgICByZXR1cm4gW3NlbGYudGl0bGVfb2YoeCkgZm9yIHggaW4gY29tbWFuZHMKLSAgICAgICAgICAgICAgICBpZiAobm90IHNlbGYudGl0bGVfb2YoeCkgaW4gc2VsZi5jb21tYW5kX25hbWVfZmVhdHVyZSkgb3IKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZC5pc0NvbW1hbmRGZWF0dXJlQWN0aXZlKHNlbGYudGl0bGVfb2YoeCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmRfbmFtZV9mZWF0dXJlW3NlbGYudGl0bGVfb2YoeCldKV0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjb21tYW5kc19mb3JfbW9kZQotICAgICMKLSAgICBkZWYgY29tbWFuZHNfZm9yX21vZGUoc2VsZiwgbW9kZSk6Ci0gICAgICAgICIiIgotICAgICAgICBXYWxrIHRoZSBjb21tYW5kIGRpY3QsIHVzaW5nIGludGVyaW9yIHN1Ym1vZGVzIGFuZCBjb21waWxpbmcKLSAgICAgICAgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzIChjb3VsZCByZWJ1aWxkIGNvbW1hbmRfZGljdCgpCi0gICAgICAgIHRvIGNvbnRhaW4gYWxsIHRoZSBwb3NzaWJsZSBjb21tYW5kcywgYnV0IGl0cyBnb29kIHRvIGtub3cKLSAgICAgICAgZXhhY3RseSB3aGljaCBjb21tYW5kcyBhcHBseSB0byB0aGlzIHN1Ym1vZGUpCi0gICAgICAgICIiIgotCi0gICAgICAgICMgbWFrZSBhIG5ldyBsaXN0LCBzbyB0aGF0IGl0ZW1zIGRvbid0IGdldCBhZGRlZCB0byB0aGUgc291cmNlCi0gICAgICAgIHJldF9saXN0ID0gbGlzdChzZWxmLmNvbW1hbmRfbmVzdGVkX2RpY3QuZ2V0KCdsb2dpbicsIFtdKSkKLSAgICAgICAgaWYgbW9kZSA9PSAnbG9naW4nOgotICAgICAgICAgICAgcmV0X2xpc3QgKz0gc2VsZi5jb21tYW5kX2RpY3QuZ2V0KCdsb2dpbicsIFtdKQotICAgICAgICAgICAgcmV0dXJuIHJldF9saXN0Ci0gICAgICAgIHJldF9saXN0ICs9IHNlbGYuY29tbWFuZF9uZXN0ZWRfZGljdC5nZXQoJ2VuYWJsZScsIFtdKQotICAgICAgICBpZiBtb2RlID09ICdlbmFibGUnOgotICAgICAgICAgICAgcmV0X2xpc3QgKz0gc2VsZi5jb21tYW5kX2RpY3QuZ2V0KCdlbmFibGUnLCBbXSkKLSAgICAgICAgICAgIHJldHVybiByZXRfbGlzdAotCi0gICAgICAgIGlmIG1vZGUgPT0gJ2NvbmZpZyc6Ci0gICAgICAgICAgICByZXRfbGlzdCArPSBzZWxmLmNvbW1hbmRfbmVzdGVkX2RpY3QuZ2V0KCdjb25maWcnLCBbXSkKLSAgICAgICAgICAgIHJldF9saXN0ICs9IHNlbGYuY29tbWFuZF9kaWN0LmdldCgnY29uZmlnJywgW10pCi0gICAgICAgICAgICByZXR1cm4gcmV0X2xpc3QKLSAgICAgICAgCi0gICAgICAgIGZvciBpZHggaW4gW3ggZm9yIHggaW4gc2VsZi5jb21tYW5kX25lc3RlZF9kaWN0LmtleXMoKSBpZiBtb2RlLnN0YXJ0c3dpdGgoeCldOgotICAgICAgICAgICAgcmV0X2xpc3QgKz0gc2VsZi5jb21tYW5kX25lc3RlZF9kaWN0LmdldChpZHgsIFtdKQotCi0gICAgICAgIHJldF9saXN0ICs9IHNlbGYuY29tbWFuZF9kaWN0LmdldChtb2RlLCBbXSkKLQotICAgICAgICAjIG1hbmFnZSBjb21tYW5kIHdobydzIG5hbWVzIGFyZSByZWd1bGFyIGV4cHJlc3Npb25zCi0gICAgICAgIHJlc3VsdCA9IFt4WydyZSddIGlmIHR5cGUoeCkgPT0gZGljdCBlbHNlIHggIGZvciB4IGluIHJldF9saXN0XQotCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjb21tYW5kc19mb3JfY3VycmVudF9tb2RlX3N0YXJ0aW5nX3dpdGgKLSAgICAjCi0gICAgZGVmIGNvbW1hbmRzX2Zvcl9jdXJyZW50X21vZGVfc3RhcnRpbmdfd2l0aChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfdGV4dCA9ICIiLCBjb21wbGV0aW9uID0gTm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBPbmUgb2YgdGhlIGRpZmZpY3VsdCBpc3N1ZXMgaGVyZSBpcyB3aGVuIHRoZSBmaXJzdCBpdGVtCi0gICAgICAgIGlzbid0IGEgdG9rZW4sIGJ1dCByYXRoZXIgYSByZWd1bGFyIGV4cHJlc3Npb24uICBUaGlzIGN1cnJlbnRseSBvY2N1cgotICAgICAgICBpbiBhIGZldyBwbGFjZXMgaW4gdGhlIGNvbW1hbmQgZGVzY3JpcHRpb24sIGFuZCB0aGUgbWVjaGFuaXNtIGZvcgotICAgICAgICBkZWFsaW5nIHdpdGggdGhlIGlzc3VlIGhlcmUgaXMgLi4uIHVobSAuLi4gcG9vci4gIFRoZSBjb2RlIGhlcmUgaXMKLSAgICAgICAgYSBzdG9wZ2FwLCBhbmQgYXNzdW1lcyB0aGUgb25seSByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydGVkCi0gICAgICAgIGlzIHRoZSA8ZGlnaXRzPiBvbmUuICBUaGlzIGNvdWxkIGJlIG1ha2UgYSBiaXQgYmV0dGVyIGJhc2VkIG9uCi0gICAgICAgIHRoZSBzdWJtb2RlLCBidXQgcmVhbGx5LCB0aGlzIGVudGlyZSBmaXJzdC10b2tlbiBtYW5hZ2VtZW50IHNob3VsZAotICAgICAgICBiZSBpbXByb3ZlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGNvbXBsZXRpb24gPT0gTm9uZToKLSAgICAgICAgICAgIGNvbXBsZXRpb24gPSBGYWxzZQotICAgICAgICAjCi0gICAgICAgICMgdm5zIGZlYXR1cmVzIGNvbW1hbmRzIGluY2x1ZGU6Ci0gICAgICAgIG5ldHZpcnRfZmVhdHVyZV9jb21tYW5kcyA9IFsndm5zJywgJ3Zucy1kZWZpbml0aW9uJ10KLSAgICAgICAgaWYgb25vcyA9PSAwOgotICAgICAgICAgICAgbmV0dmlydF9mZWF0dXJlID0gc2VsZi5uZXR2aXJ0X2ZlYXR1cmVfZW5hYmxlZCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuZXR2aXJ0X2ZlYXR1cmUgPSBGYWxzZQotCi0gICAgICAgIG1vZGVfbGlzdCA9IHNlbGYuY29tbWFuZHNfZm9yX21vZGUoc2VsZi5jdXJyZW50X21vZGUoKSkKLSAgICAgICAgcmV0X2xpc3QgPSBzZWxmLmNvbW1hbmRzX2ZlYXR1cmVfZW5hYmxlZCh1dGlmLnVuaXF1ZV9saXN0X2Zyb21fbGlzdChtb2RlX2xpc3QpKQotCi0gICAgICAgIGRlZiBwcmVmaXgoeCwgc3RhcnRfdGV4dCwgY29tcGxldGlvbik6Ci0gICAgICAgICAgICBpZiB0eXBlKHgpID09IHN0ciBhbmQgeC5sb3dlcigpLnN0YXJ0c3dpdGgoc3RhcnRfdGV4dC5sb3dlcigpKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgaWYgbm90IGNvbXBsZXRpb24gYW5kIHR5cGUoeCkgPT0gcmUuX3BhdHRlcm5fdHlwZToKLSAgICAgICAgICAgICAgICByZXR1cm4geC5tYXRjaChzdGFydF90ZXh0KQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgZGVmIHBhdHRlcm5faXRlbXMocmV0X2xpc3QsIHByZWZpeCk6Ci0gICAgICAgICAgICBtYXRjaGVzID0gW10KLSAgICAgICAgICAgIGZvciBwIGluIFt4IGZvciB4IGluIHJldF9saXN0IGlmIHR5cGUoeCkgPT0gcmUuX3BhdHRlcm5fdHlwZV06Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29tbWFuZC5jb21tYW5kX3JlZ2lzdHJ5OgotICAgICAgICAgICAgICAgICAgICBpZiBjWydtb2RlJ10gIT0gc2VsZi5jdXJyZW50X21vZGUoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoY1snbmFtZSddKSAhPSBkaWN0OgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgZmlyc3Rfd29yZCA9IGNbJ25hbWUnXQotICAgICAgICAgICAgICAgICAgICBpZiAnY29tcGxldGlvbicgbm90IGluIGZpcnN0X3dvcmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uID0gZmlyc3Rfd29yZFsnY29tcGxldGlvbiddCi0gICAgICAgICAgICAgICAgICAgIGlmIGZpcnN0X3dvcmRbJ3BhdHRlcm4nXSA9PSBwLnBhdHRlcm46Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB7fQotICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVzID0gWyBmaXJzdF93b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbnMnIDogcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICA6IHt9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnICAgICAgICA6IHByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuX2NhbGxfcHJvYyhjb21wbGV0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuY29tcGxldGlvbl9yZWdpc3RyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZXMsIGMpCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzID0gcmVzdWx0LmtleXMoKQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMKLQotICAgICAgICBtYXRjaGVzID0gW3ggZm9yIHggaW4gcmV0X2xpc3QgaWYgcHJlZml4KHgsIHN0YXJ0X3RleHQsIGNvbXBsZXRpb24pXQotICAgICAgICBpZiBjb21wbGV0aW9uOgotICAgICAgICAgICAgICAgbWF0Y2hlcyArPSBwYXR0ZXJuX2l0ZW1zKHJldF9saXN0LCBzdGFydF90ZXh0KQotICAgICAgICByZXR1cm4gbWF0Y2hlcwotCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY29tcGxldGVfb3B0aW9uYWxfcGFyYW1ldGVycwotICAgICMKLSAgICAjIFBhcnNlIG9wdGlvbmFsIHBhcmFtZXRlcnMuICBUaGVzZSBjYW4gb2NjdXIgaW4gYW55IG9yZGVyLgotICAgICMgUGFyYW1zIGFyZ3VtZW50IGlzIGEgaGFzaCBtYXBwaW5nIGEgcGFyYW1ldGVyIG5hbWUgdG8gdHlwZQotICAgICMgaW5mb3JtYXRpb24uCi0gICAgIyB3b3JkcyBhcmd1bWVudCBhcmUgcmVtYWluaW5nIHdvcmRzIGluIHRoZSBjb21tYW5kCi0gICAgIyBsaW5lIHRoYXQgYXJlbid0IHlldCBwYXJzZWQKLSAgICAjCi0gICAgZGVmIGNvbXBsZXRlX29wdGlvbmFsX3BhcmFtZXRlcnMoc2VsZiwgcGFyYW1zLCB3b3JkcywgdGV4dCk6Ci0gICAgICAgIGkgPSAwCi0gICAgICAgIHdoaWxlIGkgPCBsZW4od29yZHMpOgotICAgICAgICAgICAgZmluYWwgPSBpKzEgPj0gbGVuKHdvcmRzKQotICAgICAgICAgICAgd29yZCA9IHdvcmRzW2ldCi0gICAgICAgICAgICBwb3NzaWJsZSA9IFt4IGZvciB4IGluIHBhcmFtcyBpZiB4LnN0YXJ0c3dpdGgod29yZCldCi0gICAgICAgICAgICBwYXJhbV9uYW1lID0gcG9zc2libGVbMF0KLSAgICAgICAgICAgIHBhcmFtID0gcGFyYW1zW3BhcmFtX25hbWVdCi0gICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAocGFyYW1bJ3R5cGUnXSAhPSAnZmxhZycpOgotICAgICAgICAgICAgICAgIGlmIChmaW5hbCk6Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gdGV4dAotICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1bJ3R5cGUnXSA9PSAnZW51bScpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt4IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJhbVsndmFsdWVzJ10gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHguc3RhcnRzd2l0aChhcmd1bWVudCldCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgYXJndW1lbnQgPT0gJyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ3N5bnRheF9oZWxwJyBpbiBwYXJhbSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmludF9jb21wbGV0aW9uX2hlbHAocGFyYW1bJ3N5bnRheF9oZWxwJ10pCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKCdbJXMgYXJndW1lbnRdJyAlIHdvcmQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBpICs9IDEKLSAgICAgICAgICAgIGkgKz0gMQotCi0gICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBwYXJhbXMgaWYgeC5zdGFydHN3aXRoKHRleHQpXQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHBhcnNlX29wdGlvbmFsX3BhcmFtZXRlcnMKLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBwYXJzZV9vcHRpb25hbF9wYXJhbWV0ZXJzKHBhcmFtcywgd29yZHMpOgotICAgICAgICBwYXJzZWQgPSB7fQotICAgICAgICBpID0gMAotICAgICAgICB3aGlsZSBpIDwgbGVuKHdvcmRzKToKLSAgICAgICAgICAgIHdvcmQgPSB3b3Jkc1tpXQotICAgICAgICAgICAgcG9zc2libGUgPSBbeCBmb3IgeCBpbiBwYXJhbXMgaWYgeC5zdGFydHN3aXRoKHdvcmQpXQotICAgICAgICAgICAgaWYgbGVuKHBvc3NpYmxlKSA9PSAwOgotICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtRXhjZXB0aW9uKCd1bmtub3duIG9wdGlvbjogJXMnICUgd29yZCkKLSAgICAgICAgICAgIGVsaWYgbGVuKHBvc3NpYmxlKSA+IDE6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUGFyYW1FeGNlcHRpb24oJ2FtYmlndW91cyBvcHRpb246ICVzXG4lcycgJSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod29yZCwgIlxuIi5qb2luKHBvc3NpYmxlKSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBhcmFtX25hbWUgPSBwb3NzaWJsZVswXQotICAgICAgICAgICAgICAgIHBhcmFtID0gcGFyYW1zW3BhcmFtX25hbWVdCi0gICAgICAgICAgICAgICAgaWYgKHBhcmFtWyd0eXBlJ10gPT0gJ2ZsYWcnKToKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VkW3BhcmFtX25hbWVdID0gVHJ1ZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGkrMSA8IGxlbih3b3Jkcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCA9IHdvcmRzW2krMV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbVsndHlwZSddID09ICdzdHJpbmcnKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRbcGFyYW1fbmFtZV0gPSBhcmd1bWVudAotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiAocGFyYW1bJ3R5cGUnXSA9PSAnaW50Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRbcGFyYW1fbmFtZV0gPSBpbnQoYXJndW1lbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtRXhjZXB0aW9uKCdvcHRpb24gJXMgcmVxdWlyZXMgJyArIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZWdlciBhcmd1bWVudCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSB3b3JkKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiAocGFyYW1bJ3R5cGUnXSA9PSAnZW51bScpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19wb3NzaWJsZSA9IFt4IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJhbVsndmFsdWVzJ10gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHguc3RhcnRzd2l0aChhcmd1bWVudCldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbihhcmdfcG9zc2libGUpID09IDApOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBQYXJhbUV4Y2VwdGlvbignb3B0aW9uICVzIHZhbHVlIG11c3QgYmUgaW4gKCVzKScgJSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdvcmQsIiwgIi5qb2luKHBhcmFtWyd2YWx1ZXMnXSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgKGxlbihhcmdfcG9zc2libGUpID4gMSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtRXhjZXB0aW9uKCdhbWJpZ3VvdXMgb3B0aW9uICVzIHZhbHVlOlxuJXMnICUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3b3JkLCAiXG4iLmpvaW4oYXJnX3Bvc3NpYmxlKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkW3BhcmFtX25hbWVdID0gYXJnX3Bvc3NpYmxlWzBdCi0gICAgICAgICAgICAgICAgICAgICAgICBpICs9IDEKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtRXhjZXB0aW9uKCdvcHRpb24gJXMgcmVxdWlyZXMgYW4gYXJndW1lbnQnIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgd29yZCkKLSAgICAgICAgICAgIGkgKz0gMQotICAgICAgICByZXR1cm4gcGFyc2VkCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgYW5ub3RhdGVkX29ial90eXBlX2lkCi0gICAgIwotICAgICMgIEdpdmVuIGFuIGlkJ3MgdmFsdWUgZm9yIGEgY29tcG91bmQga2V5LCBjcmFjayB0aGUgdmFsdWUgaW50bwotICAgICMgIHBhcnRzLCBhbmQgYW5ub3RhdGUgZWFjaCBwYXJ0IHdpdGggdGhlIGNvbXBvdW5kIGtleSBuYW1lLgotICAgICMKLSAgICAjICBGb3IgJ05vdCBGb3VuZCcgZXJyb3JzLCB0aGUgb2JqX3R5cGUgaXMga25vd24sIGFsb25nIHdpdGggdGhlIHZhbHVlCi0gICAgIyAgZm9yIHRoZSBpZCB3aGljaCB3YXNuJ3QgZm91bmQuICBJZiB0aGlzIGlzIGFuIGlkIHdpdGggYSBjb21wb3VuZCBrZXksCi0gICAgIyAgbGVha2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUga2V5J3MgaW1wbGVtZW50aWlvbiBzaG91bGQgYmUgYXZvaWRlZC4gCi0gICAgIyAgSGVyZSB0aGUga2V5J3MgdmFsdWUgaXMgY3JhY2tlZCBiYXNlZCBvbiB0aGUgY29tcG9zaXRpb24gY2hhcmFjdGVyLAotICAgICMgIGFuZCB0aGUgaXRlbXMgYXJlIGRpc3BsYXllZCB3aXRoIHRoZWlyIGtleS12YWx1ZSBuYW1lLgotICAgICMgIGVnOiBFcnJvcjogTm90IEZvdW5kIHZuczp4WHggcnVsZS1pZDpzbmFwcGxlICAodm5zLWludGVyZmFjZS1ydWxlKQotICAgICMKLSAgICBkZWYgYW5ub3RhdGVkX29ial90eXBlX2lkKHNlbGYsIG9ial90eXBlLCBlcnJvcik6Ci0gICAgICAgIGtleSA9IG1pLnBrKG9ial90eXBlKQotICAgICAgICBpZiBtaS5pc19jb21wb3VuZF9rZXkob2JqX3R5cGUsIGtleSk6Ci0gICAgICAgICAgICByZXN1bHQgPSB7IGtleSA6IGVycm9yfQotICAgICAgICAgICAgbWkuc3BsaXRfY29tcG91bmRfaW50b19kaWN0KG9ial90eXBlLCBrZXksIHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiAnLCAnLmpvaW4oWyIlczolcyIgJSB0dXBsZSh4KSBmb3IgeCBpbiByZXN1bHQuaXRlbXMoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4WzBdICE9IGtleV0pCi0gICAgICAgIHJldHVybiBlcnJvcgotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjCi0gICAgZGVmIGZpbmRfbWFzdGVyKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIGEgZGljdGlvbmFyeSB3aXRoIHR3byBpdGVtczogJ21hc3RlcicsIGFuZCAnaXBzJwotICAgICAgICAnbWFzdGVyJyBpZGVudGlmZXMgdGhlIGlwIGFkZHJlc3Mgb2YgdGhlIG1hc3RlciwgYSBzdHJpbmcKLSAgICAgICAgd2hpY2ggaXMgYW4gaXAgYWRkcmVzcywgb3IgTm9uZS4KLSAgICAgICAgJ2lwcycgaXMgYSBsaXN0IG9mIGludGVyZmFjZSByb3dzIHdpdGggcG9wdWxhdGVkIGlwIGFkZHJlc3Nlcy4KLSAgICAgICAgIiIiCi0gICAgICAgICMgY29sbGVjdCBhbGwgdGhlIGNvbnRyb2xsZXItaW50ZXJmYWNlcwotICAgICAgICBpcHMgPSBbeCBmb3IgeCBpbiBsb2NhbF9pbnRlcmZhY2VzX2ZpcmV3YWxsX29wZW4oJ3RjcCcsIFs4MCwgODAwMF0sICdhbGwnKQotICAgICAgICAgICAgICAgaWYgKHhbJ2lwJ10gIT0gJycgb3IgeFsnZGlzY292ZXJlZC1pcCddICE9ICcnKV0KLQotICAgICAgICBtYXN0ZXIgPSBOb25lCi0gICAgICAgIGZvciBpcCBpbiBpcHM6Ci0gICAgICAgICAgICBpZiBpcFsnaXAnXSAhPSAnJzoKLSAgICAgICAgICAgICAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL2hhL3JvbGUiICUgaXBbJ2lwJ10KLSAgICAgICAgICAgIGlmIGlwWydkaXNjb3ZlcmVkLWlwJ10gIT0gJyc6ICMgc2VsZWN0IGRpc2NvdmVyZWQgaXAgb3ZlciBpcAotICAgICAgICAgICAgICAgIHVybCA9ICJodHRwOi8vJXMvcmVzdC92MS9zeXN0ZW0vaGEvcm9sZSIgJSBpcFsnZGlzY292ZXJlZC1pcCddCi0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsLCB1c2VfY2FjaGUgPSBGYWxzZSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgICAgICAgICAgaGFfcm9sZSA9IGpzb24ubG9hZHMocmVzdWx0KQotICAgICAgICAgICAgaWYgaGFfcm9sZVsncm9sZSddID09ICdNQVNURVInOgotICAgICAgICAgICAgICAgIGlmIGlwWydpcCddICE9ICcnOgotICAgICAgICAgICAgICAgICAgICBtYXN0ZXIgPSBpcFsnaXAnXQotICAgICAgICAgICAgICAgIGlmIGlwWydkaXNjb3ZlcmVkLWlwJ10gIT0gJyc6Ci0gICAgICAgICAgICAgICAgICAgIG1hc3RlciA9IGlwWydkaXNjb3ZlcmVkLWlwJ10KLQotICAgICAgICByZXR1cm4geydtYXN0ZXInOiBtYXN0ZXIsICdpcHMnOiBpcHN9Ci0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgcmVzdF9lcnJvcl90b19kaWN0Ci0gICAgIyAgIFR1cm4gYW4gZXhjZXB0aW9uIGludG8gYW4gZXJyb3IgZGljdGlvbmFyeSwgd2hpY2ggY2FuIGxhdGVyIGJlIHByaW50ZWQuCi0gICAgIyAgIHVzaW5nIHJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKCkuICAKLSAgICAjCi0gICAgZGVmIHJlc3RfZXJyb3JfdG9fZGljdChzZWxmLCBlLCBkZXRhaWw9Tm9uZSk6Ci0gICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgIyB0cnkgdG8gaWRlbnRpZmlmeSB2YWxpZGF0aW9uIHJlcXVlc3RzCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZSwgaHR0cGxpYi5CYWRTdGF0dXNMaW5lKToKLSAgICAgICAgICAgIGVycm9ycyA9IHsnY29ubmVjdGlvbl9lcnJvcicgOiAnUkVTVCBBUEkgc2VydmVyICVzOiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlcnZlciBub3QgcnVubmluZycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udHJvbGxlcn0KLSAgICAgICAgICAgIHJldHVybiBlcnJvcnMKLQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZSwgdXJsbGliMi5IVFRQRXJyb3IpOgotICAgICAgICAgICAgY29kZSA9IGUuY29kZQotICAgICAgICAgICAgZXJyb3JfcmV0dXJuZWQgPSBlLnJlYWRsaW5lKCkKLQotICAgICAgICAgICAgaWYgY29kZSA9PSA0MDQ6Ci0gICAgICAgICAgICAgICAgaWYgZGV0YWlsOgotICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSB7J25vdF9mb3VuZF9lcnJvcicgOiAnTm90IEZvdW5kOiAlcycgJSBkZXRhaWx9Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0geydub3RfZm91bmRfZXJyb3InIDogJ05vdCBGb3VuZDogJXMnICUgZXJyb3JfcmV0dXJuZWR9Ci0gICAgICAgICAgICBlbGlmIGNvZGUgPT0gNTAwIG9yIGNvZGUgPT0gNDAzOgotICAgICAgICAgICAgICAgICMgdHJhY2ViYWNrLnByaW50X3N0YWNrKCkKLSAgICAgICAgICAgICAgICBlcnJvcnMgPSB7J2Nvbm5lY3Rpb25fZXJyb3InIDogJ1JFU1QgQVBJIHNlcnZlciAlcyBmYWlsdXJlOiAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY29udHJvbGxlciwgZXJyb3JfcmV0dXJuZWQpfQotICAgICAgICAgICAgZWxpZiBjb2RlID09IDQwMDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGpzb24ubG9hZHMoZXJyb3JfcmV0dXJuZWQpCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSBlcnJvciBjYW4ndCBiZSBjb252ZXJ0ZWQgaW50byBhIGRpY3Rpb25hcnksIHRoZW4gaW1iZWQgdGhlIGNvbXBsZXRlCi0gICAgICAgICAgICAgICAgICAgICMgZXJyb3JzIGFzIHRoZSB2YWx1ZSBmb3IgYSBzcGVjaWZpYyBlcnJvciBrZXkuCi0gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IHsnZXJyb3JfcmVzdWx0X2Vycm9yJzogIkNhbid0IGNvbnZlcnQgcmV0dXJuZWQgZXJyb3I6ICVzIiAlIGVycm9yX3JldHVybmVkfQotICAgICAgICAgICAgZWxpZiBjb2RlID09IDMwMToKLSAgICAgICAgICAgICAgICBlcnJvcnMgPSB7J21vdmVkX2Vycm9yJzogJ0h0dHBFcnJvciBNb3ZlZCBQZXJtYW5lbnRseSAlcycgJSBlfQotICAgICAgICAgICAgZWxpZiBjb2RlID09IDMwMzoKLSAgICAgICAgICAgICAgICAjIEF0dGVtcHQgdG8gZGV0ZXJtaW5lIHdoYXQgbGlzdCBvZiBpcCBhZGRyZXNzZXMgaXMgZm9yCi0gICAgICAgICAgICAgICAgIyB0aGUgY29udHJvbGxlciwgdHJ5IHRvIGZpbmQgdGhlIE1hc3Rlci4gIGlmIGFueSBmYWlsdXJlIAotICAgICAgICAgICAgICAgICMgb2NjdXJzIGFueXdoZXJlLCBkcm9wIGRvd24gdG8gYSBzaW1wbGUgZXJyb3IgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG1pbmZvID0gc2VsZi5maW5kX21hc3RlcigpCi0gICAgICAgICAgICAgICAgICAgIGlwcyA9IFt4WydpcCddIGZvciB4IGluIG1pbmZvWydpcHMnXV0KLSAgICAgICAgICAgICAgICAgICAgbWFzdGVyID0gbWluZm9bJ21hc3RlciddCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIG1hc3RlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IHsnc2VlX290aGVyJzogJ1RoaXMgY29udHJvbGxlciBpcyBpbiBTTEFWRSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZGUuIFRoZSBjb21tYW5kIG11c3QgYmUgcnVuIGluIE1BU1RFUiBtb2RlLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5NQVNURVIgYXQgJXMnICUgbWFzdGVyfQotICAgICAgICAgICAgICAgICAgICBlbGlmIGxlbihpcHMpOgotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0geydzZWVfb3RoZXInOiAnVGhpcyBjb250cm9sbGVyIGlzIGluIFNMQVZFIG1vZGUuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgY29tbWFuZCBtdXN0IGJlIHJ1biBpbiBNQVNURVIgbW9kZS4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5ObyBNQVNURVIgZm91bmQsIHBvc3NpYmxlIGlwXCdzICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJywgJy5qb2luKGlwcykpfQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0geydzZWVfb3RoZXInOiAnVGhpcyBjb250cm9sbGVyIGlzIGluIFNMQVZFIG1vZGUuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgY29tbWFuZCBtdXN0IGJlIHJ1biBpbiBNQVNURVIgbW9kZS4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5ObyBNQVNURVIgY3VycmVudGx5IGV4aXN0cyAnfQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0geydzZWVfb3RoZXInOiAnVGhpcyBjb250cm9sbGVyIGlzIGluIFNMQVZFIG1vZGUuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgY29tbWFuZCBtdXN0IGJlIHJ1biBpbiBNQVNURVIgbW9kZS4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5ObyBpcCBhZGRyZXNzZXMgZm9yIGNvbnRyb2xsZXIgYXZhaWxhYmxlJ30KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXJyb3JzID0geyd1bmtub3duX2Vycm9yJzogJ0h0dHBFcnJvciAlcycgJSBlcnJvcl9yZXR1cm5lZH0KLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGUsIE5vdEZvdW5kKToKLSAgICAgICAgICAgIGlmIGUub2JqX3R5cGUgaW4gbWkub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgICAgIGVycm9ycyA9IHsnbm90X2ZvdW5kX2Vycm9yJyA6ICdOb3QgRm91bmQ6ICVzICglcyknICUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYW5ub3RhdGVkX29ial90eXBlX2lkKGUub2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUub2JqX3R5cGUpfQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlcnJvcnMgPSB7J25vdF9mb3VuZF9lcnJvcicgOiAnTm90IEZvdW5kOiAlcyAoJXMpJyAlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLm5hbWUsIGUub2JqX3R5cGUpfQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyBvciBzZWxmLmRlYnVnX2JhY2t0cmFjZToKLSAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfc3RhY2soKQotICAgICAgICAgICAgZXJyb3JzID0geyd1bmtub3duX2Vycm9yJzogIk5lZWQgZXJyb3IgbWFuYWdlbWVudCBmb3IgZXJyb3IgJXMiICUgdHlwZShlKX0KLQotICAgICAgICByZXR1cm4gZXJyb3JzCi0KLSAgICAjCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHJlc3RfZXJyb3JfaXNfbm90X2ZvdW5kCi0gICAgIyAgUmV0dXJuIFRydWUgaWYgdGhpcyBzcGVjaWZpYyBlcnJvciB3YXMgdGhlIHJlc3VsdCBvZiBhIG5vdC1mb3VuZCBzaXR1YXRpb24KLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiByZXN0X2Vycm9yX2lzX25vdF9mb3VuZChyZXN0X2Vycm9yX2RpY3QpOgotICAgICAgICBpZiAnbm90X2ZvdW5kX2Vycm9yJyBpbiByZXN0X2Vycm9yX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyByZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZQotICAgICMgICBUdXJuIGFuIHJlc3RfZXJyb3JfZGljdCByZXR1cm5lZCBmcm9tIHJlc3RfZXJyb3JfdG9fZGljdAotICAgICMgICBpbnRvIGFuIGVycm9yIG1lc3NhZ2Ugd2hpY2ggY2FuIGdlIHByaW50ZWQuICBDb2RlIGFzc3VtZXMgbXVsdGlwbGUgZXJyb3JzCi0gICAgIyAgIHdvbid0IG9jY3VyOyBpZiBhICdmaWVsZF9lcnJvcicgZXhpc3RzLCBmb3IgZXhhbXBsZSwgYSAnbW9kZWxfZXJyb3InIHdvbid0Ci0gICAgIyAgIGFsc28gYmUgcG9zdGVkIGluIHRoZSBlcnJvcgotICAgICMKLSAgICBkZWYgcmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2Uoc2VsZiwgcmVzdF9lcnJvcl9kaWN0KToKLSAgICAgICAgaWYgcmVzdF9lcnJvcl9kaWN0ID09IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gcmVzdF9lcnJvcl9kaWN0Ci0gICAgICAgIGVycm9yX21zZyA9ICIiCi0gICAgICAgIGlmICdmaWVsZF9lcnJvcnMnIGluIHJlc3RfZXJyb3JfZGljdDoKLSAgICAgICAgICAgIGZvciAoaywgdikgaW4gcmVzdF9lcnJvcl9kaWN0WydmaWVsZF9lcnJvcnMnXS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGVycm9yX21zZyArPSAiU3ludGF4IGVycm9yOiBmaWVsZCAlczogJXMiICUgKGssIHYpCi0gICAgICAgICAgICAjIHRyYWNlYmFjay5wcmludF9zdGFjaygpLCB0byBmaW5kIG91dCB3aHkgdGhlIGVycm9yIG9jY3VyZWQKLSAgICAgICAgZWxpZiAnbW9kZWxfZXJyb3InIGluIHJlc3RfZXJyb3JfZGljdDoKLSAgICAgICAgICAgIGVycm9yX21zZyArPSAiJXMiICUgcmVzdF9lcnJvcl9kaWN0Wydtb2RlbF9lcnJvciddCi0gICAgICAgIGVsaWYgJ25vdF9mb3VuZF9lcnJvcicgaW4gcmVzdF9lcnJvcl9kaWN0OgotICAgICAgICAgICAgZXJyb3JfbXNnICs9ICJFcnJvcjogJXMiICUgcmVzdF9lcnJvcl9kaWN0Wydub3RfZm91bmRfZXJyb3InXQotICAgICAgICBlbGlmICdjb25uZWN0aW9uX2Vycm9yJyBpbiByZXN0X2Vycm9yX2RpY3Q6Ci0gICAgICAgICAgICBlcnJvcl9tc2cgKz0gcmVzdF9lcnJvcl9kaWN0Wydjb25uZWN0aW9uX2Vycm9yJ10KLSAgICAgICAgZWxpZiAnZXJyb3JfcmVzdWx0X2Vycm9yJyBpbiByZXN0X2Vycm9yX2RpY3Q6Ci0gICAgICAgICAgICBlcnJvcl9tc2cgKz0gcmVzdF9lcnJvcl9kaWN0WydlcnJvcl9yZXN1bHRfZXJyb3InXQotICAgICAgICBlbGlmICdtb3ZlZF9lcnJvcicgaW4gcmVzdF9lcnJvcl9kaWN0OgotICAgICAgICAgICAgZXJyb3JfbXNnICs9IHJlc3RfZXJyb3JfZGljdFsnbW92ZWRfZXJyb3InXQotICAgICAgICBlbGlmICdzZWVfb3RoZXInIGluIHJlc3RfZXJyb3JfZGljdDoKLSAgICAgICAgICAgIGVycm9yX21zZyArPSByZXN0X2Vycm9yX2RpY3RbJ3NlZV9vdGhlciddCi0gICAgICAgIGVsaWYgJ3Vua25vd25fZXJyb3InIGluIHJlc3RfZXJyb3JfZGljdDoKLSAgICAgICAgICAgIGVycm9yX21zZyArPSByZXN0X2Vycm9yX2RpY3RbJ3Vua25vd25fZXJyb3InXQotICAgICAgICBlbGlmICdkZXNjcmlwdGlvbicgaW4gcmVzdF9lcnJvcl9kaWN0IGFuZCAgXAotICAgICAgICAgIHJlc3RfZXJyb3JfZGljdFsiZGVzY3JpcHRpb24iXSA9PSAnc2F2ZWQnOgotICAgICAgICAgICAgIyBub3QgYW4gZXJyb3I6IHsgJ2Rlc2NyaXB0aW9uJyA6ICdzYXZlZCcgfQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZWxpZiAnZXJyb3JfdHlwZScgaW4gcmVzdF9lcnJvcl9kaWN0OiAjIGh0dHAgNDAwIGVycm9ycwotICAgICAgICAgICAgZGVzY3JpcHRpb24gPSByZXN0X2Vycm9yX2RpY3RbJ2Rlc2NyaXB0aW9uJ10KLSAgICAgICAgICAgIGlmIGRlc2NyaXB0aW9uLnN0YXJ0c3dpdGgoJ0Vycm9yOiAnKToKLSAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uW2xlbignRXJyb3I6ICcpOl0KLSAgICAgICAgICAgIHJldHVybiAnJXMgKCVzKScgJSAoZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RfZXJyb3JfZGljdFsnZXJyb3JfdHlwZSddKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXJyb3JfbXNnID0gIlJFU1QgQVBJIHNlcnZlciBvbiBjb250cm9sbGVyLW5vZGUgJXMgIiAlIHNlbGYuY29udHJvbGxlcgotICAgICAgICAgICAgZXJyb3JfbXNnICs9ICJoYWQgJXMgZXJyb3I6XG4iICUgcmVzdF9lcnJvcl9kaWN0WydlcnJvcl90eXBlJ10KLSAgICAgICAgICAgIGVycm9yX21zZyArPSByZXN0X2Vycm9yX2RpY3RbJ2Rlc2NyaXB0aW9uJ10KLSAgICAgICAgcmV0dXJuIGVycm9yX21zZwotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjCi0gICAgIyBDb21tYW5kcyBvZiB0aGUgQ0xJLiBBIGNvbW1hbmQgImZvbyIgc2hvdWxkIGhhdmUgdHdvIG1ldGhvZHM6Ci0gICAgIyAgIGNwX2ZvbyhzZWxmLCB0ZXh0LCBzdGF0ZSkgLSBjb21wbGV0aW9uIGZvciB0aGlzIGNvbW1hbmQsIHJldHVybiBsaXN0IG9mIG9wdGlvbnMKLSAgICAjICAgZG9fZm9vKHNlbGYsIGxpbmUpIC0gZXhlY3V0ZSB0aGUgY29tbWFuZAotICAgICMKLSAgICAjIEdpdmVuIGEgc3RyaW5nICd3b3JkJywgbm90IGNvbnRhaW5pbmcgYW55IHNwYWNlcywgbm9yIGFueSBicmVhawotICAgICMgIGNoYXJhY3RlcnMgYXNzb2NpYXRlZCB3aXRoIHB5dGhvbiwgcmV0dXJuIHRoZSBhIGludm9jYWJsZSBtZXRob2QKLSAgICAjICBub3RlIHRoYXQgJy0nIGFyZSBwZXJtaXR0ZWQsIGFuZCBjb252ZXJ0ZWQgdG8gJ18nJ3MKLSAgICAjCi0gICAgIyBXaGVuIGluIHRoZSB2bnMgb3Igdm5zLWRlZmluaXRpb24gbW9kZSwgdGhlIHNlbGVjdGVkIGZ1bmN0aW9ucwotICAgICMgIHRvIGNhbGwgYmFjayBoYXZlIGFuIGFkZGl0aW9uYWwgY29tcG9uZW50IGFkZGVkIHRvIHRoZSBjYWxsZWQKLSAgICAjICBiYWNrIGZ1bmN0aW9uLiAgSW4gdGhlIG5vbi12bnMgY2FzZSwgZm9yIGV4YW1wbGUsIHRoZSAic2hvdyIKLSAgICAjICBjb21tYW5kIHdvdWxkIHJlc3VsdCBpbiBhIG1ldGhvZCBjYWxsZWQgZG9fc2hvdywgd2hpbGUgaW4gdGhlCi0gICAgIyAgdm5zIG1vZGVzLCAndm5zXycgaW4gaW5zZXJ0ZWQgYmV0d2VlbiB0aGUgJ3ZlcmInIGFuZCB0aGUgbm91biwKLSAgICAjICBmb3IgZXhhbXBsZSwgcmVzdWx0aW5nIGluICdkb192bnNfc2hvdycKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBtZXRob2RfZnJvbV9uYW1lCi0gICAgIwotICAgIGRlZiBtZXRob2RfZnJvbV9uYW1lKHNlbGYsIHByZWZpeCwgbmFtZSk6Ci0gICAgICAgIGlmIHR5cGUobmFtZSkgIT0gc3RyOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgaWYgc2VsZi5pbl9jb25maWdfc3VibW9kZSgiY29uZmlnLXZucyIpIGFuZCBcCi0gICAgICAgICAgIGdldGF0dHIoc2VsZiwgcHJlZml4ICsgInZuc18iICsgbmFtZS5yZXBsYWNlKCItIiwiXyIpLCBOb25lKToKLSAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIHByZWZpeCArICJ2bnNfIiArIG5hbWUucmVwbGFjZSgiLSIsIl8iKSkKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgcHJlZml4K25hbWUucmVwbGFjZSgiLSIsIl8iKSwgTm9uZSkKLSAgICAgICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNvbW1hbmRfbWV0aG9kX2Zyb21fbmFtZQotICAgICMKLSAgICBkZWYgY29tbWFuZF9tZXRob2RfZnJvbV9uYW1lKHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5tZXRob2RfZnJvbV9uYW1lKCJkb18iLCBuYW1lKSAgICAgICAgICAgICAgICMgZG9fWFhYIG1ldGhvZHMKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjb21tYW5kX3Nob3dfbWV0aG9kX2Zyb21fbmFtZQotICAgICMKLSAgICBkZWYgY29tbWFuZF9zaG93X21ldGhvZF9mcm9tX25hbWUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLm1ldGhvZF9mcm9tX25hbWUoImRvX3Nob3dfIiwgbmFtZSkgICAgICAgICAgIyBkb19zaG93X1hYWCBtZXRob2RzCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY2xvdWRfbWV0aG9kX2Zyb21fbmFtZQotICAgICMKLSAgICBkZWYgY2xvdWRfbWV0aG9kX2Zyb21fbmFtZShzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYubWV0aG9kX2Zyb21fbmFtZSgiY2xvdWRfIiwgbmFtZSkgICAgICAgICAgICAjIGNsb3VkX1hYWCBtZXRob2RzCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY29tcGxldGlvbl9tZXRob2RfZnJvbV9uYW1lCi0gICAgIwotICAgIGRlZiBjb21wbGV0aW9uX21ldGhvZF9mcm9tX25hbWUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLm1ldGhvZF9mcm9tX25hbWUoImNwXyIsIG5hbWUpICAgICAgICAgICAgICAgIyBjcF9YWFggKGNvbXBsZXRpb24pIG1ldGhvZHMKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjb21wbGV0aW9uX3Nob3dfbWV0aG9kX2Zyb21fbmFtZQotICAgICMKLSAgICBkZWYgY29tcGxldGlvbl9zaG93X21ldGhvZF9mcm9tX25hbWUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLm1ldGhvZF9mcm9tX25hbWUoImNwX3Nob3dfIiwgbmFtZSkgICAgICAgICAgIyBjcF9zaG93X1hYWCAoY29tcGxldGlvbikgbWV0aG9kcwotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHVuaXF1ZV9rZXlfZnJvbV9ub25fdW5pcXVlCi0gICAgIwotICAgICMgUHJpbWFyeSBrZXlzIGZvciBjYXNzYW5kcmEgZm9yIHNvbWUga2V5cyBhcmUgY29udGVuYXRpb25zIG9mCi0gICAgIyAgc2V2ZXJhbCBub24tdW5pcXVlIGtleXMgc2VwYXJhdGVkIGJ5IGEgY2hhcmFjdGVyIG5vdCB1c2VkIGZvcgotICAgICMgIGFueSBvdGhlciBwdXJwb3NlIChpbiB0aGlzIGNhc2UgJ3wnKS4gIFRoZSBjb25jYXRlbmF0aW9uCi0gICAgIyAgb2Ygbm9uLXVuaXF1ZSBrZXlzIGlzIGludGVuZGVkIHRvIGNyZWF0ZSBhIHVuaXF1ZSBrZXkuCi0gICAgIwotICAgIGRlZiB1bmlxdWVfa2V5X2Zyb21fbm9uX3VuaXF1ZShzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIHJldHVybiAifCIuam9pbih3b3JkcykKLSAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgcHJlZml4X3NlYXJjaF9rZXkKLSAgICAjICBQcmVmaXgncyBvZiBwcmltYXJ5IGtleXMgZm9yIGtleXMncyBidWlsdCB0aHJvdWdoIHVuaXF1ZV9rZXlfZnJvbV9ub25fdW5pcXVlKCkKLSAgICAjCi0KLSAgICBkZWYgcHJlZml4X3NlYXJjaF9rZXkoc2VsZiwgd29yZHMpOgotICAgICAgICByZXR1cm4gc2VsZi51bmlxdWVfa2V5X2Zyb21fbm9uX3VuaXF1ZSh3b3JkcykgKyAifCIKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbXBsZW1lbnRfY29ubmVjdAotICAgICMKLSAgICBkZWYgaW1wbGVtZW50X2Nvbm5lY3Qoc2VsZiwgZGF0YSk6Ci0gICAgICAgIG5ld19pcCA9IGRhdGEuZ2V0KCdpcC1hZGRyZXNzJykKLSAgICAgICAgaWYgbmV3X2lwID09IE5vbmU6Ci0gICAgICAgICAgICBuZXdfaXAgPSBkYXRhLmdldCgnY29udHJvbGxlci1pZCcpCi0gICAgICAgIGlmIG5vdCBzZWxmLklQX0FERFJfUkUubWF0Y2gobmV3X2lwKToKLSAgICAgICAgICAgIGNvbnRyb2xsZXJfaWQgPSBhbGlhc19sb29rdXAoJ2NvbnRyb2xsZXItYWxpYXMnLCBuZXdfaXApCi0KLSAgICAgICAgICAgIGlmIGNvbnRyb2xsZXJfaWQgPT0gTm9uZToKLSAgICAgICAgICAgICAgICBjb250cm9sbGVyX2lkID0gbmV3X2lwCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpZnMgPSBzZWxmLnJlc3RfcXVlcnlfb2JqZWN0cygnY29udHJvbGxlci1pbnRlcmZhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJ2NvbnRyb2xsZXInIDogY29udHJvbGxlcl9pZCB9ICkKLSAgICAgICAgICAgICAgICBpZiBsZW4oaWZzKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICBuZXdfaXAgPSBpZnNbMF1bJ2lwJ10KLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coJ0NhblwndCBmaW5kIGNvbnRyb2xsZXIgbmFtZWQgJXMnICUgbmV3X2lwKQotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBpZiAncG9ydCcgaW4gZGF0YToKLSAgICAgICAgICAgIG5ld19pcCArPSBzdHIoZGF0YVsncG9ydCddKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmV3X2lwICs9ICI6ODAiCi0gICAgICAgICMKLSAgICAgICAgIyByZXF1ZXN0IHRoZSB2ZXJzaW9uLCBpZiBpdCBmYWlscywgdGhlbiBkb24ndCBhbGxvdyB0aGUgc3dpdGNoCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHZlcnNpb25fdXJsID0gJ2h0dHA6Ly8lcy9yZXN0L3YxL3N5c3RlbS92ZXJzaW9uJyAlIG5ld19pcAotICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVzdF9zaW1wbGVfcmVxdWVzdF90b19kaWN0KHZlcnNpb25fdXJsKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCdDb3VsZCBub3QgY29ubmVjdCB0byAlcycgJSBuZXdfaXApCi0KLSAgICAgICAgc2VsZi5jb250cm9sbGVyID0gbmV3X2lwCi0gICAgICAgIHNlbGYuc3RvcmUuc2V0X2NvbnRyb2xsZXIobmV3X2lwKQotICAgICAgICBzZWxmLnNldF9jb250cm9sbGVyX2Zvcl9wcm9tcHQoKQotICAgICAgICB3aGlsZSAoc2VsZi5jdXJyZW50X21vZGUoKSAhPSAibG9naW4iKToKLSAgICAgICAgICAgIHNlbGYucG9wX21vZGUoKQotICAgICAgICBwcmludCAiU3dpdGNoaW5nIHRvIGNvbnRyb2xsZXIgJXMiICUgc2VsZi5jb250cm9sbGVyCi0KLSAgICAgICAgcmV0dXJuIHNlbGYucHAuZm9ybWF0X2VudHJ5KGRhdGFbMF0sICd2ZXJzaW9uJykKLQotICAgIGRlZiBjcF9leGl0KHNlbGYsIHdvcmRzLCB0ZXh0LCBjb21wbGV0aW9uX2NoYXIpOgotICAgICAgICBzZWxmLnByaW50X2NvbXBsZXRpb25faGVscCgiPGNyPiIpCi0KLSAgICBkZWYgZG9fZXhpdChzZWxmLCB3b3Jkcz1Ob25lKToKLSAgICAgICAgaWYgc2VsZi5tb2RlX3N0YWNrWy0xXVsnZXhpdCddOgotICAgICAgICAgICAgbWV0aG9kID0gc2VsZi5tb2RlX3N0YWNrWy0xXVsnZXhpdCddCi0gICAgICAgICAgICBtZXRob2QoKQotICAgICAgICBzZWxmLnBvcF9tb2RlKCkKLQotICAgIGRlZiBjcF9sb2dvdXQoc2VsZiwgd29yZHMsIHRleHQsIGNvbXBsZXRpb25fY2hhcik6Ci0gICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKCI8Y3I+IikKLQotICAgIGRlZiBkb19sb2dvdXQoc2VsZiwgd29yZHM9Tm9uZSk6Ci0gICAgICAgIHNlbGYucnVuID0gRmFsc2UKLQotICAgIGRlZiBjcF9lbmQoc2VsZiwgd29yZHMsIHRleHQsIGNvbXBsZXRpb25fY2hhcik6Ci0gICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKCI8Y3I+IikKLQotICAgIGRlZiBkb19lbmQoc2VsZiwgd29yZHM9Tm9uZSk6Ci0gICAgICAgIHdoaWxlIHNlbGYuY3VycmVudF9tb2RlKCkuc3RhcnRzd2l0aCgiY29uZmlnIik6Ci0gICAgICAgICAgICBzZWxmLnBvcF9tb2RlKCkKLQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX3Nob3dfdHVubmVsCi0gICAgIyAgQ29tbWFuZCBkZXNjcmlwdGlvbnMgaGFzIG5vIHByYWN0aWNhbCBzdXBwb3J0IGZvciBzaG93IGNvbW1hbmRzIHlldC4KLSAgICAjCi0gICAgZGVmIGRvX3Nob3dfdHVubmVsKHNlbGYsIHdvcmRzKToKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA8IDI6Ci0gICAgICAgICAgICBwcmludCBzZWxmLnN5bnRheF9tc2coIlVzYWdlOiBzaG93IHR1bm5lbCBbIDxzd2l0Y2g+IHwgYWxsIF0gYWN0aXZlIikKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiB3b3Jkc1sxXSAhPSAiYWN0aXZlIjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiVW5rbm93biByZXF1ZXN0ICVzIiAlIHdvcmRzWzFdKQotCi0gICAgICAgICMgYWN0aXZlIC0tCi0KLSAgICAgICAgaWYgd29yZHNbMF0gIT0gJ2FsbCc6Ci0gICAgICAgICAgICB3b3Jkc1swXSA9IGNvbnZlcnRfYWxpYXNfdG9fb2JqZWN0X2tleSgic3dpdGNoIiwgd29yZHNbMF0pCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVzdF9zaW1wbGVfcmVxdWVzdF90b19kaWN0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodHRwOi8vJXMvcmVzdC92MS90dW5uZWwtbWFuYWdlci8lcy8nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY29udHJvbGxlciwgd29yZHNbMF0pKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coJ0NvdWxkIG5vdCBsb2FkIHR1bm5lbC1tYW5hZ2VyIGRldGFpbHMnKQotCi0gICAgICAgIGlmICdlcnJvcicgaW4gZGF0YSBhbmQgZGF0YVsnZXJyb3InXSAhPSBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCd0dW5uZWwtbWFuYWdlciByZXNwb25zZTogJXMnICUgZGF0YVsnZXJyb3InXSkKLQotICAgICAgICBlbnRyaWVzID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIGRhdGFbJ3R1bm5NYXAnXS5rZXlzKCk6Ci0gICAgICAgICAgICBpdGVtID0gZGF0YVsndHVubk1hcCddW2VudHJ5XQotICAgICAgICAgICAgZm9yIHJlbW90ZSBpbiBpdGVtWyd0dW5uZWxQb3J0cyddOgotICAgICAgICAgICAgICAgIHJlbW90ZUlwID0gIiVzLiVzLiVzLiVzIiAlICggaW50KHJlbW90ZVszOjZdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChyZW1vdGVbNjo5XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQocmVtb3RlWzk6MTJdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChyZW1vdGVbMTI6XSkpCi0gICAgICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoeyAnZHBpZCc6IGVudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsVHVubmVsSVBBZGRyJyA6IGl0ZW1bJ2xvY2FsVHVubmVsSVBBZGRyJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHVubmVsUG9ydHMnIDogcmVtb3RlSXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotCi0gICAgICAgIHJldHVybiBzZWxmLmRpc3BsYXlfb2JqX3R5cGVfcm93cygndHVubmVsLWRldGFpbHMnLCBlbnRyaWVzKQotICAgIAotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNwX3Nob3dfdm5zX2FjY2Vzc19saXN0X2VudHJ5Ci0gICAgIwotICAgIGRlZiBjcF9zaG93X3Zuc19hY2Nlc3NfbGlzdF9lbnRyeShzZWxmLCB3b3JkcywgdGV4dCwgY29tcGxldGlvbl9jaGFyKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY3Bfdm5zX2FjY2Vzc19saXN0X2VudHJ5KHdvcmRzLCB0ZXh0KQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX3Nob3dfdm5zX2FjY2Vzc19saXN0X2VudHJ5Ci0gICAgIwotICAgIGRlZiBkb19zaG93X3Zuc19hY2Nlc3NfbGlzdF9lbnRyeShzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIHdpdGhfc2VhcmNoX2tleSA9ICI8bm9fa2V5PiIKLSAgICAgICAgaWYgc2VsZi52bnNfbmFtZSgpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBsZW4od29yZHMpID4gMDoKLSAgICAgICAgICAgICAgICBzZWFyY2hfb2JqZWN0ID0gWyJ2bnMtYWNjZXNzLWxpc3QtZW50cnkiLCB3b3Jkc1swXV0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VhcmNoX29iamVjdCA9IFsidm5zLWFjY2Vzcy1saXN0LWVudHJ5Il0gCi0gICAgICAgIGVsaWYgbGVuKHdvcmRzKSA+IDA6Ci0gICAgICAgICAgICB3aXRoX3NlYXJjaF9rZXkgPSAnLScuam9pbih3b3JkcykKLSAgICAgICAgICAgIHdvcmRzLmluc2VydCgwLCBzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqKCkpCi0gICAgICAgICAgICBzZWFyY2hfb2JqZWN0ID0gWyJ2bnMtYWNjZXNzLWxpc3QtZW50cnkiLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51bmlxdWVfa2V5X2Zyb21fbm9uX3VuaXF1ZSh3b3JkcyldCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWFyY2hfb2JqZWN0ID0gWyJ2bnMtYWNjZXNzLWxpc3QtZW50cnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByZWZpeF9zZWFyY2hfa2V5KFtzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqKCldKV0KLSAgICAgICAgcmV0dXJuIHNlbGYuZG9fc2hvd19vYmplY3Qoc2VhcmNoX29iamVjdCwgd2l0aF9zZWFyY2hfa2V5KQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX3Zuc19ubwotICAgICMgIGltcGxlbWVudCB0aGUgbm8gY29tbWFuZCB3aGlsZSBpbiB0aGUgY29udGV4dCBvZiB2bnMvdm5zLWRlZmluaXRpb24KLSAgICAjCi0gICAgZGVmIGRvX3Zuc19ubyhzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIGlmIGxlbih3b3JkcykgPCAxOgotICAgICAgICAgICAgcmV0dXJuICJTeW50YXg6IG5vIDxpdGVtPiA8a2V5PiA6IGRlbGV0ZSBmcm9tIHRoZSBuYW1lZCBpdGVtIHRoZSBzcGVjaWZpYyBrZXkiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB2bnNfbmFtZV90b190YWJsZV9uYW1lID0geyAiaW50ZXJmYWNlcyIgICAgICAgIDogInZucy1pbnRlcmZhY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZS1ydWxlIiAgICA6ICJ2bnMtaW50ZXJmYWNlLXJ1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2Vzcy1saXN0IiAgICAgICA6ICJ2bnMtYWNjZXNzLWxpc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2Vzcy1saXN0LWVudHJ5IiA6ICJ2bnMtYWNjZXNzLWxpc3QtZW50cnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2Vzcy1ncm91cCIgICAgICA6ICJ2bnMtaW50ZXJmYWNlLWFjY2Vzcy1saXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiB3b3Jkc1swXSBpbiB2bnNfbmFtZV90b190YWJsZV9uYW1lOgotICAgICAgICAgICAgICAgIGlmIGxlbih3b3JkcykgPCAyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlN5bnRheDogbm8gJXMgPGl0ZW0+IDxrZXk+IiAlIHdvcmRzWzBdCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgdGhlIGl0ZW0gdG8gcmVtb3ZlIGluIGZvciBhY2Nlc3MtbGlzdC1lbnRyeSBpcyBhbiBpbnRlZ2VyLAotICAgICAgICAgICAgICAgICMgY2Fub25pY2FsaXplIHRoZSBuYW1lIGJlZm9yZSBpdHMgdXNlZCB0byBzZWFyY2gKLSAgICAgICAgICAgICAgICBpZiB3b3Jkc1swXSA9PSAnYWNjZXNzLWxpc3QtZW50cnknOgotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLkFDTF9SRS5tYXRjaCh3b3Jkc1sxXSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3b3Jkc1sxXSA9IHN0cihpbnQod29yZHNbMV0pKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCclcyBrZXkgJXMgbXVzdCBiZSBhbiBpbnRlZ2VyJyAlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdvcmRzWzBdLCB3b3Jkc1sxXSkpCi0KLSAgICAgICAgICAgICAgICBuYW1lID0gc2VsZi51bmlxdWVfa2V5X2Zyb21fbm9uX3VuaXF1ZShbc2VsZi5nZXRfY3VycmVudF9tb2RlX29iaigpLCB3b3Jkc1sxXV0pCi0gICAgICAgICAgICAgICAgdGFibGUgPSB2bnNfbmFtZV90b190YWJsZV9uYW1lW3dvcmRzWzBdXQotICAgICAgICAgICAgICAgIGVycm9ycyA9IE5vbmUKLQotICAgICAgICAgICAgICAgIGlmIHdvcmRzWzBdID09ICJlbnRyeSIgYW5kIG5vdCBzZWxmLmluX2NvbmZpZ192bnNfYWNsX21vZGUoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZG9fbm8od29yZHMpICMgbGV0IGRvX25vKCkgcHJpbnQgZXJyb3IgbWVzc2FnZXMKLSAgICAgICAgICAgICAgICBlbGlmIHdvcmRzWzBdID09ICJhY2Nlc3MtZ3JvdXAiIGFuZCBub3Qgc2VsZi5pbl9jb25maWdfdm5zX2lmX21vZGUoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZG9fbm8od29yZHMpICMgbGV0IGRvX25vKCkgcHJpbnQgZXJyb3IgbWVzc2FnZXMKLQotICAgICAgICAgICAgICAgICMgYWNjZXNzLWdyb3VwL3Zucy1pbnRlcmZhY2UtYWNjZXNzLWxpc3QgaGFzICdpZCdzIHdpdGggYW4gYWRkaXRpb25hbCBmaWVsZCwKLSAgICAgICAgICAgICAgICAjIHRoZSBpbi1vdXQgcGFyYW1ldGVyLCB3aGljaCBpcyByZXF1aXJlZCB0byBiZSBhYmxlIHRvIGRlbGV0ZSB0aGUgZW50cnkKLSAgICAgICAgICAgICAgICBpZiB3b3Jkc1swXSA9PSAiYWNjZXNzLWdyb3VwIjoKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHdvcmRzKSA8IDM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zeW50YXhfbXNnKCdubyBhY2Nlc3MtZ3JvdXAgPGFjbC1uYW1lPiA8aW58b3V0PicpCi0gICAgICAgICAgICAgICAgICAgIGNob2ljZXMgPSBbeCBmb3IgeCBpbiBbImluIiwgIm91dCJdIGlmIHguc3RhcnRzd2l0aCh3b3Jkc1syXSldCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihjaG9pY2VzKSAhPSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3ludGF4X21zZygnbm8gYWNjZXNzLWdyb3VwIDxhY2wtbmFtZT4gPGlufG91dD4nKQotICAgICAgICAgICAgICAgICAgICBuYW1lID0gc2VsZi51bmlxdWVfa2V5X2Zyb21fbm9uX3VuaXF1ZShbc2VsZi5nZXRfY3VycmVudF9tb2RlX29iaigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52bnNfbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZHNbMV1dKQotICAgICAgICAgICAgICAgICAgICBuYW1lID0gbmFtZSArICJ8IiArIGNob2ljZXNbMF0KLQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0X2RlbGV0ZV9vYmplY3QodGFibGUsIG5hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSwgd29yZHNbMF0gKyAiICIgKyB3b3Jkc1sxXSkKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgZXJyb3JzOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgY2FzY2FkZSBkZWxldGU/Ci0gICAgICAgICAgICAgICAgaWYgbm90IGVycm9yczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXNjYWRlX2RlbGV0ZSh0YWJsZSwgbmFtZSkKLQotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgIHJldHVybiBzZWxmLmRvX25vKHdvcmRzKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX25vX3RhZwotICAgICMgIFNpbmNlIHRoZSBuYW1lIGFuZCB2YWx1ZSBtdXN0IGJlIHByZXNlbnQsIHRoaXMgaXMgY3VycmVudGx5IGEgc3BlY2lhbAotICAgICMgIGNhc2UuICBhZGRpdGlvbmFsbHksIHRoZSB0d28gdGFibGVzICd0YWctbWFwcGluZycgYW5kICd0YWcnIGFyZSAKLSAgICAjICBpbnRlcm1pbmdsZWQuICB0aGUgJ3RhZycgdGFibGUgbWFuYWdlcyB0aGUgPG5hbWVzcGFjZT48bmFtZT48dmFsdWU+Ci0gICAgIyAgdHVwbGUsIHdoaWxlIHRoZSB0YWctbWFwcGluZyBhZGQgPGhvc3Q+IHRvIHRoYXQgcmVsYXRpb25zaGlwICBXaGVuCi0gICAgIyAgdGhlIHJlbW92YWwgb2YgdGhlIGVudHJ5IGZyb20gdGhlIHRhZy1tYXBwaW5nIHRhYmxlIGxlYXZlcyBubyBmdXJ0aGVyCi0gICAgIyAgPG5hbWVzcGFjZT48bmFtZT48dmFsdWU+J3MgZm9yIGFueSBob3N0cywgdGhlbiB0aGUgcm93IGZyb20gdGhlCi0gICAgIyAgJ3RhZycgdGFibGUgbXVzdCBiZSByZW1vdmVkCi0gICAgIwotICAgIGRlZiBpbXBsZW1lbnRfbm9fdGFnKHNlbGYsIHdvcmRzKToKLSAgICAgICAgaWYgbm90IHdvcmRzIG9yIGxlbih3b3JkcykgIT0gMiBvciB3b3Jkc1sxXS5maW5kKCc9JykgPT0gLTE6Ci0gICAgICAgICAgICByZXR1cm4gICJTeW50YXg6IG5vIHRhZyA8bmFtZXNwYWNlLm5hbWU+PTx2YWx1ZT4iCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lX2FuZF92YWx1ZSA9IHdvcmRzWzFdLnNwbGl0KCI9IikKLSAgICAgICAgICAgIGlmIGxlbihuYW1lX2FuZF92YWx1ZSkgPiAyOgotICAgICAgICAgICAgICAgIHJldHVybiAiU3ludGF4OiBubyB0YWcgPG5hbWVzcGFjZS5uYW1lPj08dmFsdWU+IgotCi0gICAgICAgICAgICBuYW1lX3BhcnQgPSBuYW1lX2FuZF92YWx1ZVswXS5zcGxpdCgnLicpCi0gICAgICAgICAgICBpZiBsZW4obmFtZV9wYXJ0KSA9PSAxOgotICAgICAgICAgICAgICAgIG5hbWVzcGFjZSA9ICdkZWZhdWx0JwotICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lX3BhcnRbMF0KLSAgICAgICAgICAgIGVsaWYgbGVuKG5hbWVfcGFydCkgPj0gMjoKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2UgPSAnLicuam9pbihuYW1lX3BhcnRbOi0xXSkKLSAgICAgICAgICAgICAgICBuYW1lID0gbmFtZV9wYXJ0Wy0xXQotCi0gICAgICAgICAgICB2YWx1ZSA9IG5hbWVfYW5kX3ZhbHVlWzFdCi0KLSAgICAgICAgICAgIGl0ZW0gPSBzZWxmLnVuaXF1ZV9rZXlfZnJvbV9ub25fdW5pcXVlKFtuYW1lc3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqKCldKQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBUbyBwcmV2ZW50IGxlYWtpbmcgdGhlIHVuaXF1ZSBrZXkgdmFsdWUgaW4gdGhlICdOb3QgRm91bmQnCi0gICAgICAgICAgICAjIGVycm9yIG1lc3NhZ2UsIGxvb2sgdXAgdGhlIGl0ZW0gZmlyc3QsIGFuZCBkaXNwbGF5IGEgdW5pcXVlCi0gICAgICAgICAgICAjIGVycm9yIG1lc3NhZ2UgZm9yIHRoaXMgY2FzZQotICAgICAgICAgICAgIwotICAgICAgICAgICAgZXJyb3JzID0gTm9uZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuZ2V0X29iamVjdF9mcm9tX3N0b3JlKCd0YWctbWFwcGluZycsIGl0ZW0pCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsICJ0YWcgIiArIGl0ZW0pCi0KLSAgICAgICAgICAgIGlmIGVycm9yczoKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnJlc3RfZXJyb3JfaXNfbm90X2ZvdW5kKGVycm9ycyk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygidGFnICVzLiVzPSVzIG5vdCBmb3VuZCIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnJlc3RfZGVsZXRlX29iamVjdCgndGFnLW1hcHBpbmcnLCBpdGVtKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCAidGFnICIgKyBpdGVtKQotCi0gICAgICAgICAgICBpZiBlcnJvcnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBpZiB0aGVyZSBhcmUgbm8gbW9yZSBpdGVtcyBpbiB0YWctbWFwcGluZyBmb3IgdGhlCi0gICAgICAgICAgICAjIDxuYW1lc3BhY2U+fDxuYW1lPnw8dmFsdWU+LCB0aGVuIGFuIGVudHJ5IG5lZWRzIHRvCi0gICAgICAgICAgICAjIHJlbW92ZWQgZnJvbSB0aGUgJ3RhZycgdGFibGUgKGZvciBjbGVhbnVwKQotICAgICAgICAgICAgIwotICAgICAgICAgICAga2V5ID0gc2VsZi51bmlxdWVfa2V5X2Zyb21fbm9uX3VuaXF1ZShbbmFtZXNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0YWdzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndGFnLW1hcHBpbmcnLCAndGFnJywga2V5KQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCAidGFnLW1hcHBpbmcgdGFnICIgKyBrZXkpCi0KLSAgICAgICAgICAgIGlmIGVycm9yczoKLSAgICAgICAgICAgICAgICBwcmludCBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlmIGxlbih0YWdzKSA9PSAwOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0X2RlbGV0ZV9vYmplY3QoJ3RhZycsIGtleSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCAidGFnICIgKyBpdGVtKQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiBlcnJvcnM6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50IHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgY2FzY2FkZSBkZWxldGU/Ci0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgdm5zX2ludGVyZmFjZV9ydWxlX3RhZ3NfdmFsaWRhdGUKLSAgICAjICBQcm92aWRlcyBhIHdhcm5pbmcgd2hlbiB0aGUgYXNzb2NpYXRlZCB0YWcgZG9lc24ndCBleGlzdAotICAgICMKLSAgICBkZWYgdm5zX2ludGVyZmFjZV9ydWxlX3RhZ3NfdmFsaWRhdGUoc2VsZiwgb2JqX3R5cGUsIGZpZWxkLCB2YWx1ZSk6Ci0gICAgICAgIGZvciB0YWdfcGFpciBpbiB2YWx1ZS5zcGxpdCgnLCcpOgotICAgICAgICAgICAgaWYgdGFnX3BhaXIuZmluZCgnPScpID09IC0xIG9yIGxlbih0YWdfcGFpci5zcGxpdCgnPScpKSAhPSAyOgotICAgICAgICAgICAgICAgICMgZmllbGQgdmFsaWRhdGlvbiB3b24ndCBtYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uCi0gICAgICAgICAgICAgICAgcmV0dXJuIAotICAgICAgICAgICAgKHRhZ19uYW1lLCB0YWdfdmFsdWUpID0gdGFnX3BhaXIuc3BsaXQoJz0nKQotICAgICAgICAgICAgdGFnX25hbWVfcGFydHMgPSB0YWdfbmFtZS5zcGxpdCgnLicpCi0gICAgICAgICAgICBpZiBsZW4odGFnX25hbWVfcGFydHMpID09IDE6Ci0gICAgICAgICAgICAgICAgdGFnX25hbWVzcGFjZSA9ICdkZWZhdWx0JwotICAgICAgICAgICAgICAgIHRhZ19uYW1lID0gdGFnX25hbWVfcGFydHNbMF0KLSAgICAgICAgICAgIGVsaWYgbGVuKHRhZ19uYW1lX3BhcnRzKSA+PSAyOgotICAgICAgICAgICAgICAgIHRhZ19uYW1lc3BhY2UgPSAnLicuam9pbih0YWdfbmFtZV9wYXJ0c1s6LTFdKQotICAgICAgICAgICAgICAgIHRhZ19uYW1lID0gdGFnX25hbWVfcGFydHNbLTFdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgWFhYIG5vdCByZWFjaGVkCi0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICAjIFZhbGlkYXRpbmcgdXNpbmcgdGhlICd0YWcnIG1vZGVsIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZQotICAgICAgICAgICAgIyB0YWcgZXhpc3RzIGRlcGVuZHMgb24gaGF2aW5nIHRoZSB0YWcgdmFsdWUgcmVtb3ZlZCB3aGVuIHRoZXJlJ3MKLSAgICAgICAgICAgICMgbm8gbW9yZSByZWZlcmVuY2VzIHRvIHRoZSBlbnRyeS4gIHRoZSBjbGkgbWFuYWdlcyB0aGUgCi0gICAgICAgICAgICAjICd0YWcnLyd0YWctbWFwcGluZycgbW9kZWxzIHRoYXQgd2F5LCBidXQgb3RoZXIgdXNlcyBvZiB0aGUgCi0gICAgICAgICAgICAjIHJlc3QgYXBpIG1heSBub3QuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICBrZXkgPSBzZWxmLnVuaXF1ZV9rZXlfZnJvbV9ub25fdW5pcXVlKFt0YWdfbmFtZXNwYWNlLCB0YWdfbmFtZSwgdGFnX3ZhbHVlXSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0YWJsZSA9IHNlbGYuZ2V0X29iamVjdF9mcm9tX3N0b3JlKCd0YWcnLCBrZXkpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsICd0YWcnKQotICAgICAgICAgICAgICAgICMgc3BlY2lhbCBjYXNlIGZvciAnbm90IGZvdW5kJyBlcnJvciBtZXNzYWdlCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5yZXN0X2Vycm9yX2lzX25vdF9mb3VuZChlcnJvcnMpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLndhcm5pbmcoInRhZyBgJXMuJXMgJXMnIG5vdCB5ZXQgZGVmaW5lZCIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnX25hbWVzcGFjZSwgdGFnX25hbWUsIHRhZ192YWx1ZSkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgdmFsaWRhdGVfc3dpdGNoX2NvcmVfc3dpdGNoCi0gICAgIyAgSW50ZW5kZWQgdG8gZGlzcGxheSBhIHdhcm5pbmcgbWVzc2FnZSB3aGVuIHRoZSB2YWx1ZSBpcyBzZXQgdG8gVHJ1ZQotICAgICMKLSAgICBkZWYgdmFsaWRhdGVfc3dpdGNoX2NvcmVfc3dpdGNoKHNlbGYsIG9ial90eXBlLCBmaWVsZCwgdmFsdWUpOgotICAgICAgICBpZiB2YWx1ZSA9PSAnVHJ1ZSc6ICMgWFhYIG9kZCB0aGF0IHRoZSB2YWx1ZSBuZWVkcyB0byBiZSBxdW90ZWQuCi0gICAgICAgICAgICBzZWxmLndhcm5pbmcoImVuYWJsaW5nIGNvcmUtc3dpdGNoIG9uIGEgc3dpdGNoIHdpdGggIgotICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3RseSBjb25uZWN0ZWQgaG9zdHMgd2lsbCBjYXVzZSB0aGUgc2FtZSB0byAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImJlIHVuYWJsZSB0byBjb25uZWN0IikKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBoYW5kbGVfc3BlY2lmaWNfdGFnX2ZpZWxkcwotICAgICMgIENhbGxlZCBieSBoYW5kbGVfc3BlY2lmaWNfb2JqX3R5cGUgdG8gY29udmVydCBmaWVsZHMgdmFsdWVzIGZyb20gdGhlCi0gICAgIyAgcmVzdCBhcGkgaW50byBhIGRpc3BsYXlhYmxlIHRhYmxlCi0gICAgIwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgaGFuZGxlX3NwZWNpZmljX3RhZ19maWVsZHMoZW50cmllcyk6Ci0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgZmllbGRzID0gZW50cnlbJ2lkJ10uc3BsaXQoJ3wnKQotICAgICAgICAgICAgIyBYWFggZXJyb3IgaWYgdGhlcmUncyBub3QgZm91ciBwYXJ0cwotICAgICAgICAgICAgZW50cnlbJ25hbWVzcGFjZSddID0gZmllbGRzWzBdCi0gICAgICAgICAgICBlbnRyeVsnbmFtZSddID0gZmllbGRzWzFdCi0gICAgICAgICAgICBlbnRyeVsndmFsdWUnXSA9IGZpZWxkc1syXQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGFwcGVuZF93aGVuX21pc3NpbmcKLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBhcHBlbmRfd2hlbl9taXNzaW5nKHVuaXF1ZV9saXN0LCBpdGVtKToKLSAgICAgICAgaWYgbm90IGl0ZW0gaW4gdW5pcXVlX2xpc3Q6Ci0gICAgICAgICAgICB1bmlxdWVfbGlzdC5hcHBlbmQoaXRlbSkKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBzaG93X2NvbW1hbmRfcHJlZml4X21hdGNoZXMKLSAgICAjICBzaG93IGNvbW1hbmQncyBwcmVmaXggbWF0Y2hlcywgcmV0dXJuIFRydWUgd2hlbiB0aGUgY29tbWFuZCBtYXRjaGVzCi0gICAgIyAgZnByIHRoZSBwcmVmaXggZGVzY3JpYmVkLCB1c2VkIGJ5IGdldF92YWxpZF9zaG93X29wdGlvbnMoKSBkdXJpbmcKLSAgICAjICBjcF9zaG93KCkgdG8gY29sbGVjdCBhdmFpbGFibGUgY29tbWFuZCBjaG9pY2UuCi0gICAgIwotICAgIGRlZiBzaG93X2NvbW1hbmRfcHJlZml4X21hdGNoZXMoc2VsZiwgY29tbWFuZCwgcHJlZml4KToKLSAgICAgICAgIyBjb252ZXJ0IGFueSAnLSdzIGluIHRoZSBwcmVmaXggdHAgIl8iJ3Mgc2luY2UgZnVuYydzIGhhdmUgXyBzZXBhcmF0b3JzCi0gICAgICAgIHByZWZpeCA9IHByZWZpeC5yZXBsYWNlKCItIiwgIl8iKQotICAgICAgICBpZiBjb21tYW5kLnN0YXJ0c3dpdGgoImRvX3Nob3dfIitwcmVmaXgpIGFuZCBub3QgY29tbWFuZC5zdGFydHN3aXRoKCJkb19zaG93X3Zuc18iKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGVsaWYgY29tbWFuZC5zdGFydHN3aXRoKCJkb19zaG93X3Zuc18iICsgcHJlZml4KToKLSAgICAgICAgICAgIGlmIHNlbGYuaW5fY29uZmlnX3N1Ym1vZGUoImNvbmZpZy12bnMiKToKLSAgICAgICAgICAgICAgICBpZiBjb21tYW5kID09ICdkb19zaG93X3Zuc19hY2Nlc3NfbGlzdCcgYW5kIHNlbGYuaW5fY29uZmlnX3Zuc19tb2RlKCk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudm5zX2RlYnVnX3Nob3dfY29tbWFuZHMoY29tbWFuZCkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBnZXRfdmFsaWRfc2hvd19vcHRpb25zIAotICAgICMgIHVzZWQgYnkgY3Bfc2hvdyB0byBpZGVudGlmeSBjb21wbGV0aW9uIG9wdGlub3MKLSAgICAjCi0gICAgIyByZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIHR3byBlbGVtZW50czogJ2NvbW1hbmRzJywgYW5kICdvYmplY3RzJy4KLSAgICAjIHRoZSAnY29tbWFuZHMnIGVsZW1lbnQgaXMgYSBsaXN0IG9mIHBvc3NpYmxlIGNvbW1hbmRzIHdoaWxlCi0gICAgIyB0aGUgJ29iamVjdHMnIGVsZW1lbnQgaXMgYSBsaXN0IG9mIHBvc3NpYmxlIG9iamVjdHMgKHRhYmxlcy9tb2RlbHMgaW4gdGhlIHN0b3JlKQotICAgICMKLSAgICBkZWYgZ2V0X3ZhbGlkX3Nob3dfb3B0aW9ucyhzZWxmLCB0ZXh0KToKLSAgICAgICAgcmV0X2hhc2ggPSB7fQotICAgICAgICAjIGZpcnN0IGdldCBjb21tYW5kcwotICAgICAgICBvcHRzID0gW10KLSAgICAgICAgbWF0Y2hpbmdfbWV0aG9kcyA9IFt4IGZvciB4IGluIGRpcihzZWxmKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuc2hvd19jb21tYW5kX3ByZWZpeF9tYXRjaGVzKHgsIHRleHQpXQotCi0gICAgICAgIGlmIG9ub3MgPT0gMDoKLSAgICAgICAgICAgIG5ldHZpcnRfZmVhdHVyZSA9IHNlbGYubmV0dmlydF9mZWF0dXJlX2VuYWJsZWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmV0dmlydF9mZWF0dXJlID0gRmFsc2UKLQotICAgICAgICBmb3IgbWV0aG9kIGluIG1hdGNoaW5nX21ldGhvZHM6Ci0gICAgICAgICAgICBtID0gcmUuc2VhcmNoKCJkb19zaG93XyguKikiLCBtZXRob2QpCi0gICAgICAgICAgICBuID0gcmUuc2VhcmNoKCJkb19zaG93X3Zuc18oLiopIiwgbWV0aG9kKQotICAgICAgICAgICAgaWYgbiBhbmQgc2VsZi5pbl9jb25maWdfc3VibW9kZSgnY29uZmlnLXZucycpOgotICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kX3doZW5fbWlzc2luZyhvcHRzLCBuLmdyb3VwKDEpLnJlcGxhY2UoIl8iLCItIikpCi0gICAgICAgICAgICBlbGlmIG06Ci0gICAgICAgICAgICAgICAgaWYgbmV0dmlydF9mZWF0dXJlIG9yIG0uZ3JvdXAoMSkgIT0gJ3Zucyc6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kX3doZW5fbWlzc2luZyhvcHRzLCBtLmdyb3VwKDEpLnJlcGxhY2UoIl8iLCItIikpCi0gICAgICAgICMKLSAgICAgICAgIyByZW1vdmUgY29tbWFuZCBjYXNlcwotICAgICAgICBvcHRzID0gW3ggZm9yIHggaW4gb3B0cyBpZiB4IG5vdCBpbiBbInN0YXRpc3RpY3MiLCAib2JqZWN0Il1dCi0gICAgICAgIGlmICJhY2Nlc3MtZ3JvdXAiIGluIG9wdHMgYW5kIG5vdCBzZWxmLmluX2NvbmZpZ192bnNfaWZfbW9kZSgpOgotICAgICAgICAgICAgaWYgbm90IHNlbGYudm5zX2RlYnVnX3Nob3dfY29tbWFuZHMoJ3Zucy1hY2Nlc3MtZ3JvdXAnKToKLSAgICAgICAgICAgICAgICBvcHRzLnJlbW92ZSgiYWNjZXNzLWdyb3VwIikKLSAgICAgICAgaWYgImFjY2Vzcy1saXN0IiBpbiBvcHRzIGFuZCBub3Qgc2VsZi5pbl9jb25maWdfdm5zX21vZGUoKToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZuc19kZWJ1Z19zaG93X2NvbW1hbmRzKCd2bnMtYWNjZXNzLWxpc3QnKToKLSAgICAgICAgICAgICAgICBvcHRzLnJlbW92ZSgiYWNjZXNzLWxpc3QiKQotICAgICAgICBpZiAiaW50ZXJmYWNlIiBpbiBvcHRzIGFuZCBub3Qgc2VsZi5pbl9jb25maWdfdm5zX21vZGUoKToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZuc19kZWJ1Z19zaG93X2NvbW1hbmRzKCd2bnMtaW50ZXJmYWNlJyk6Ci0gICAgICAgICAgICAgICAgb3B0cy5yZW1vdmUoImludGVyZmFjZSIpCi0gICAgICAgIGlmICJpbnRlcmZhY2UtcnVsZSIgaW4gb3B0cyBhbmQgbm90IHNlbGYuaW5fY29uZmlnX3Zuc19kZWZfbW9kZSgpOgotICAgICAgICAgICAgaWYgbm90IHNlbGYudm5zX2RlYnVnX3Nob3dfY29tbWFuZHMoJ3Zucy1pbnRlcmZhY2UtcnVsZScpOgotICAgICAgICAgICAgICAgIG9wdHMucmVtb3ZlKCJpbnRlcmZhY2UtcnVsZSIpCi0gICAgICAgIGlmICJmaXJld2FsbCIgaW4gb3B0cyBhbmQgbm90IHNlbGYuaW5fY29uZmlnX2NvbnRyb2xsZXJfaW50ZXJmYWNlX21vZGUoKToKLSAgICAgICAgICAgIG9wdHMucmVtb3ZlKCJmaXJld2FsbCIpCi0gICAgICAgICMgc3ludGhldGljIG9iamVjdCB0eXBlIGJhc2VkIG9uIHRoZSB2bnNjb25maWcgc3VibW9kZS4KLSAgICAgICAgaWYgImFjY2Vzcy1saXN0LWVudHJ5IiBpbiBvcHRzIGFuZCBub3Qgc2VsZi5pbl9jb25maWdfdm5zX2FjbF9tb2RlKCk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi52bnNfZGVidWdfc2hvd19jb21tYW5kcygndm5zLWFjY2Vzcy1saXN0LWVudHJ5Jyk6Ci0gICAgICAgICAgICAgICAgb3B0cy5yZW1vdmUoImFjY2Vzcy1saXN0LWVudHJ5IikKLSAgICAgICAgcmV0X2hhc2hbImNvbW1hbmRzIl0gPSBvcHRzCi0KLSAgICAgICAgIyBub3cgZ2V0IG9ial90eXBlcyB3ZSBjYW4gc2hvdwotICAgICAgICBvcHRzID0gc2VsZi5hbGxfb2JqX3R5cGVzX3N0YXJ0aW5nX3dpdGgodGV4dCkKLSAgICAgICAgaWYgc2VsZi5pbl9jb25maWdfc3VibW9kZSgpIGFuZCAidGhpcyIuc3RhcnRzd2l0aCh0ZXh0KToKLSAgICAgICAgICAgIG9wdHMuYXBwZW5kKCJ0aGlzIikKLSAgICAgICAgcmV0X2hhc2hbIm9iamVjdHMiXSA9IG9wdHMKLSAgICAgICAgcmV0dXJuIHJldF9oYXNoCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjcF9zaG93X29iamVjdAotICAgICMgIHNob3cgPG9ial90eXBlPiAod29yZHNbMF0gPT0gb2JqX3R5cGUpCi0gICAgIwotICAgIGRlZiBjcF9zaG93X29iamVjdChzZWxmLCB3b3JkcywgdGV4dCwgY29tcGxldGlvbl9jaGFyKToKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIG9iamVjdHNfc3RhcnRpbmdfd2l0aCh3b3Jkc1swXSwgdGV4dCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKCI8Y3I+IikKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZ2V0X2F0dGFjaG1lbnRfcG9pbnRzCi0gICAgIwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZ2V0X2F0dGFjaG1lbnRfcG9pbnRzKGhvc3QsIGhvc3RfZGFwX2RpY3QpOgotICAgICAgICBpdGVtcyA9IGhvc3RfZGFwX2RpY3QuZ2V0KGhvc3RbJ21hYyddKQotICAgICAgICBpZiBub3QgaXRlbXMgb3IgbGVuKGl0ZW1zKSA8PSAxOgotICAgICAgICAgICAgcmV0dXJuIGl0ZW1zCi0gICAgICAgICMKLSAgICAgICAgIyBzb3J0IGJ5IG1vc3QgcmVjZW50IGl0ZW1zLCBpZiB0aGUgbGFzdC1zZWVuIGZpZWxkCi0gICAgICAgICMgZXhpc3RzIGZvciBhbGwgZW50cmllcwotICAgICAgICAjCi0gICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAgaWYgbm90ICdsYXN0LXNlZW4nIGluIGl0ZW0gb3IgaXRlbVsnbGFzdC1zZWVuJ10gPT0gJyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zCi0KLSAgICAgICAgb3JkZXJlZCA9IHNvcnRlZChpdGVtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9bGFtYmRhIGk6IGlbJ2xhc3Qtc2VlbiddLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNtcD1sYW1iZGEgeCx5OiBjbXAoeSx4KSkKLSAgICAgICAgb3JkZXJlZFswXVsncHJpbWUnXSA9IFRydWUKLSAgICAgICAgcmV0dXJuIG9yZGVyZWQKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjcmVhdGVfYXR0YWNobWVudF9kaWN0Ci0gICAgIwotICAgIGRlZiBjcmVhdGVfYXR0YWNobWVudF9kaWN0KHNlbGYpOgotICAgICAgICByZXR1cm4gY3JlYXRlX29ial90eXBlX2RpY3QoJ2hvc3QtYXR0YWNobWVudC1wb2ludCcsICdtYWMnKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGdldF9pcF9hZGRyZXNzZXMKLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBnZXRfaXBfYWRkcmVzc2VzKGhvc3QsIGhvc3RfaXBfZGljdCk6Ci0gICAgICAgIGl0ZW1zID0gaG9zdF9pcF9kaWN0LmdldChob3N0WydtYWMnXSkKLSAgICAgICAgaWYgbm90IGl0ZW1zIG9yIGxlbihpdGVtcykgPD0gMToKLSAgICAgICAgICAgIHJldHVybiBpdGVtcwotCi0gICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAgaWYgbm90ICdsYXN0LXNlZW4nIGluIGl0ZW0gb3IgaXRlbVsnbGFzdC1zZWVuJ10gPT0gJyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zCi0gICAgICAgICMKLSAgICAgICAgIyBzb3J0IGJ5IG1vc3QgcmVjZW50IGl0ZW1zLCBpZiBldmVyeSByb3cgaGFzIGEgJ2xhc3Qtc2VlbicgZmllbGQKLSAgICAgICAgIwotICAgICAgICBvcmRlcmVkID0gc29ydGVkKGl0ZW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1sYW1iZGEgaTogaVsnbGFzdC1zZWVuJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgY21wPWxhbWJkYSB4LHk6IGNtcCh5LHgpKQotICAgICAgICBvcmRlcmVkWzBdWydwcmltZSddID0gVHJ1ZQotICAgICAgICByZXR1cm4gb3JkZXJlZAotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNyZWF0ZV9pcF9kaWN0Ci0gICAgIyAgUmV0dXJucyBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgaG9zdCBpZCAobWFjIGFkZHJlc3MpIGFzIHRoZSBrZXksCi0gICAgIyAgYW5kIGEgbGlzdCBvZiBhc3NvY2lhdGVkIHJvd3MgZm9yIHRoYXQgaG9zdCBpZC4KLSAgICAjCi0gICAgZGVmIGNyZWF0ZV9pcF9kaWN0KHNlbGYpOgotICAgICAgICByZXR1cm4gY3JlYXRlX29ial90eXBlX2RpY3QoJ2hvc3QtbmV0d29yay1hZGRyZXNzJywgJ21hYycpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgc2hvd19zb3J0X29ial90eXBlCi0gICAgIyAgUmV0dXJucyBhIHNvcnRlZCBsaXN0IG9mIGVudHJpZXMgYmFzZWQgb24gdGhlIHNvcnQgZGVzY3JpYmVkIGJ5Ci0gICAgIyAgdGhlIG9iai1kaWN0Ci0gICAgIwotICAgIGRlZiBzaG93X3NvcnRfb2JqX3R5cGUoc2VsZiwgb2JqX3R5cGUsIGVudHJpZXMpOgotICAgICAgICBzb3J0ID0gbWkub2JqX3R5cGVfc2hvd19zb3J0KG9ial90eXBlKQotICAgICAgICBpZiBub3Qgc29ydDoKLSAgICAgICAgICAgIHJldHVybiBlbnRyaWVzCi0gICAgICAgIGlmIHNvcnQgPT0gJ2ludGVnZXInOgotICAgICAgICAgICAga2V5ID0gbWkucGsob2JqX3R5cGUpCi0gICAgICAgICAgICByZXR1cm4gc29ydGVkKGVudHJpZXMsIGtleT1sYW1iZGEgazoga1trZXldLnNwbGl0KCd8JylbLTFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXA9bGFtYmRhIHgseTogY21wKHV0aWYudHJ5X2ludCh4KSwgdXRpZi50cnlfaW50KHkpKSkKLSAgICAgICAgZWxpZiBzb3J0ID09ICd0YWlsLWludGVnZXInOgotICAgICAgICAgICAga2V5ID0gbWkucGsob2JqX3R5cGUpCi0gICAgICAgICAgICBkZWYgY29tcGFyZXIobGVmdCwgcmlnaHQpOgotICAgICAgICAgICAgICAgIHByZWZpeCA9IGNtcChsZWZ0WzotMV0sIHJpZ2h0WzotMV0pCi0gICAgICAgICAgICAgICAgaWYgcHJlZml4ICE9IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXgKLSAgICAgICAgICAgICAgICByZXR1cm4gY21wKHV0aWYudHJ5X2ludChsZWZ0Wy0xXSksIHV0aWYudHJ5X2ludChyaWdodFstMV0pKQotCi0gICAgICAgICAgICByZXR1cm4gc29ydGVkKGVudHJpZXMsIGtleT1sYW1iZGEgazoga1trZXldLnNwbGl0KCd8JyksIGNtcD1jb21wYXJlcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiVW5rbm93biBzb3J0ICVzIiAlIHNvcnQpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZGlzcGxheV9vYmpfdHlwZV9yb3dzCi0gICAgIyAgR2l2ZW4gYW4gb2JqX3R5cGUsIHJvd3MsIGFuZCB3aGV0aGVyIG9yIG5vdCBhIGtleSB3YXMgcHJvdmlkZWQgdG8gc2VhcmNoCi0gICAgIyAgd2l0aCwgZ2VuZXJhdGUgdGhlIG91dHB1dCB0YWJsZS4KLSAgICAjCi0gICAgZGVmIGRpc3BsYXlfb2JqX3R5cGVfcm93cyhzZWxmLCBvYmpfdHlwZSwgcm93cywgd2l0aF9rZXkgPSAnPG5vX2tleT4nLCBkZXRhaWwgPSAiZGVmYXVsdCIpOgotICAgICAgICAjCi0gICAgICAgICMgaGFuZGxlIHNwZWRpY2lmaWMgaXNzdWVzIHdpdGggcGFydGljdWxhciB0YWJsZXMgcmV0dXJuZWQgZnJvbSBzdG9yYWdlCi0gICAgICAgICMgLSBjaGFuZ2Ugdm5zLWlkJ3Mgd2l0aCAifCIgaW50byBzZXBhcmF0ZSBjb2x1bW5zCi0gICAgICAgICMgLSB0aGUgaG9zdCBjYXNlIGRvZXMgYSAnbWVyZ2UnIGZvciBhdHRhY2htZW50LXBvaW50cyBhbmQgSVBzCi0gICAgICAgICMgICAodXNlZCBpbiAnc2hvdyBob3N0JykKLSAgICAgICAgZGVmIGhhbmRsZV9zcGVjaWZpY19vYmpfdHlwZShvYmpfdHlwZSwgZW50cmllcywgZmllbGRfb3JkZXJpbmdzID0gJ2RlZmF1bHQnKToKLSAgICAgICAgICAgIGlmIG9ial90eXBlID09ICJob3N0IjoKLSAgICAgICAgICAgICAgICAjIGhvc3RfdGFnX2RpY3QgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgndGFnLW1hcHBpbmcnLCAnaG9zdCcpCi0gICAgICAgICAgICAgICAgZm9yIGhvc3QgaW4gZW50cmllczoKLSAgICAgICAgICAgICAgICAgICAgaG9zdFsndmVuZG9yJ10gPSBzZWxmLnZlbmRvcmRiLmdldF92ZW5kb3IoaG9zdFsnbWFjJ10pCi0gICAgICAgICAgICAgICAgICAgICMgaG9zdFsndGFnJ10gPSBob3N0X3RhZ19kaWN0LmdldChob3N0WydtYWMnXSwgW10pCi0gICAgICAgICAgICBpZiBvYmpfdHlwZSA9PSAiaG9zdC1jb25maWciOgotICAgICAgICAgICAgICAgIGhvc3RfZGFwX2RpY3QgPSBzZWxmLmNyZWF0ZV9hdHRhY2htZW50X2RpY3QoKQotICAgICAgICAgICAgICAgIGhvc3RfaXBfZGljdCA9IHNlbGYuY3JlYXRlX2lwX2RpY3QoKQotICAgICAgICAgICAgICAgIGhvc3RfdGFnX2RpY3QgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgndGFnLW1hcHBpbmcnLCAnbWFjJykKLSAgICAgICAgICAgICAgICBmb3IgaG9zdCBpbiBlbnRyaWVzOgotICAgICAgICAgICAgICAgICAgICBob3N0Wyd2ZW5kb3InXSA9IHNlbGYudmVuZG9yZGIuZ2V0X3ZlbmRvcihob3N0WydtYWMnXSkKLSAgICAgICAgICAgICAgICAgICAgaG9zdFsnYXR0YWNobWVudC1wb2ludHMnXSA9IHNlbGYuZ2V0X2F0dGFjaG1lbnRfcG9pbnRzKGhvc3QsIGhvc3RfZGFwX2RpY3QpCi0gICAgICAgICAgICAgICAgICAgIGhvc3RbJ2lwcyddID0gc2VsZi5nZXRfaXBfYWRkcmVzc2VzKGhvc3QsIGhvc3RfaXBfZGljdCkKLSAgICAgICAgICAgICAgICAgICAgaG9zdFsndGFnJ10gPSBob3N0X3RhZ19kaWN0LmdldChob3N0WydtYWMnXSwgW10pCi0gICAgICAgICAgICBpZiBvYmpfdHlwZSA9PSAnY29udHJvbGxlci1ub2RlJzoKLSAgICAgICAgICAgICAgICBmb3IgY29udHJvbGxlcl9ub2RlIGluIGVudHJpZXM6Ci0gICAgICAgICAgICAgICAgICAgIGRvbWFpbl9uYW1lX3NlcnZlcnMgPSBbXQotICAgICAgICAgICAgICAgICAgICBkb21haW5fbmFtZV9zZXJ2ZXJzID0gc2VsZi5yZXN0X3F1ZXJ5X29iamVjdHMoCi0gICAgICAgICAgICAgICAgICAgICAgICAnY29udHJvbGxlci1kb21haW4tbmFtZS1zZXJ2ZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgeydjb250cm9sbGVyJzogY29udHJvbGxlcl9ub2RlWydpZCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICdvcmRlcmJ5JyA6ICd0aW1lc3RhbXAnfSkKLSAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcl9ub2RlWydkb21haW4tbmFtZS1zZXJ2ZXJzJ10gPSBbZG9tYWluX25hbWVfc2VydmVyWydpcCddCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZG9tYWluX25hbWVfc2VydmVyIGluIGRvbWFpbl9uYW1lX3NlcnZlcnNdCi0gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJfbm9kZVsnaWQnXSA9ICcgJy5qb2luKGNvbnRyb2xsZXJfbm9kZVsnaWQnXS5zcGxpdCgnfCcpKQotICAgICAgICAgICAgaWYgb2JqX3R5cGUgPT0gJ2NvbnRyb2xsZXItaW50ZXJmYWNlJzoKLSAgICAgICAgICAgICAgICBmb3IgaW50ZiBpbiBlbnRyaWVzOgotICAgICAgICAgICAgICAgICAgICBydWxlcyA9IFt4WydydWxlJ10gZm9yIHggaW4gc2VsZi5nZXRfZmlyZXdhbGxfcnVsZXMoaW50ZlsnaWQnXSldCi0gICAgICAgICAgICAgICAgICAgIGludGZbJ2ZpcmV3YWxsJ10gPSAnLCAnLmpvaW4ocnVsZXMpCi0gICAgICAgICAgICAgICAgICAgICMgZGVsIGludGZbJ2lkJ10gWFhYIHNob3VsZCB0aGUgaWQgcmVhbGx5IGdldCBkaXNwbGF5ZWQ/Ci0gICAgICAgICAgICB0YWJsZXNfd2l0aF92bnNfaWRzID0gWyAidm5zLWludGVyZmFjZS1ydWxlIiwgInZucy1pbnRlcmZhY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3Qtdm5zLWludGVyZmFjZSIsICJ2bnMtYWNjZXNzLWxpc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZucy1hY2Nlc3MtbGlzdC1lbnRyeSIsICJ2bnMtaW50ZXJmYWNlLWFjY2Vzcy1saXN0IiBdCi0gICAgICAgICAgICBpZiBvYmpfdHlwZSBpbiB0YWJsZXNfd2l0aF92bnNfaWRzOgotICAgICAgICAgICAgICAgIHNlbGYudm5zX3RhYmxlX2lkX3RvX3Zuc19jb2x1bW4ob2JqX3R5cGUsIGVudHJpZXMpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5pbl9jb25maWdfc3VibW9kZSgiY29uZmlnLXZucyIpIGFuZCBmaWVsZF9vcmRlcmluZ3MgPT0gJ2RlZmF1bHQnOgotICAgICAgICAgICAgICAgICAgICBmaWVsZF9vcmRlcmluZ3MgPSAndm5zLWNvbmZpZycKLSAgICAgICAgICAgICAgICBzZWxmLnZuc19qb2luX2hvc3RfZmllbGRzKG9ial90eXBlLCBlbnRyaWVzKQotICAgICAgICAgICAgICAgIHNlbGYudm5zX2ZvcmVpZ25fa2V5X3RvX2Jhc2VfbmFtZShvYmpfdHlwZSwgZW50cmllcykKLSAgICAgICAgICAgIGlmIG9ial90eXBlID09ICd2bnMtYWNjZXNzLWxpc3QtZW50cnknOgotICAgICAgICAgICAgICAgICMgZGlzcGxheSB0aGUgYWx0ZXJuYXRpdmUgYWNjZXNzLWxpc3QtdGV4dCBmb3JtYXQgCi0gICAgICAgICAgICAgICAgdm5zX2FjbF9lbnRyaWVzX3RvX2JyaWVmKGVudHJpZXMpCi0gICAgICAgICAgICAgICAgIyBmaWVsZF9vcmRlcmluZ3MgPSAnYWNsLWJyaWVmJwotICAgICAgICAgICAgaWYgb2JqX3R5cGUgPT0gJ3Zucy1hY2Nlc3MtbGlzdC1lbnRyeS1icmllZic6Ci0gICAgICAgICAgICAgICAgIyBkaXNwbGF5IHRoZSBhbHRlcm5hdGl2ZSBhY2Nlc3MtbGlzdC10ZXh0IGZvcm1hdCAKLSAgICAgICAgICAgICAgICB2bnNfYWNsX2VudHJpZXNfdG9fYnJpZWYoZW50cmllcykKLSAgICAgICAgICAgICAgICBmaWVsZF9vcmRlcmluZ3MgPSAnYWNsLWJyaWVmJwotICAgICAgICAgICAgI2lmIG9ial90eXBlID09ICd0YWctbWFwcGluZyc6Ci0gICAgICAgICAgICAgICAgI3NlbGYuaGFuZGxlX3NwZWNpZmljX3RhZ19maWVsZHMoZW50cmllcykKLQotICAgICAgICAgICAgIyBYWFggbWF5IG5lZWQgdG8gcmV2aXNpdCB0byBwcmV2ZW50IGRvbid0IGxlYWsgdm5zIGluZm9ybWF0aW9uCi0KLSAgICAgICAgICAgIGlmIG9ial90eXBlIGluIFsnZHZzLXBvcnQtZ3JvdXAnLCAnZmlyZXdhbGwtcnVsZScsICd0YWctbWFwcGluZyddOgotICAgICAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgICAgICAgICBtaS5zcGxpdF9jb21wb3VuZF9pbnRvX2RpY3Qob2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaS5wayhvYmpfdHlwZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSkKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgb2JqZWN0cyB3aGVyZSBmb3JlaWdoIGtleXMgYXJlIHJlZmVyZW5jZXMgdG8KLSAgICAgICAgICAgICMgY29tcG91bnQga2V5J3MsIG5lZWRpbmcgdG8gYmUgc3BsaXQuIAotICAgICAgICAgICAgIyBYWFggdGhlc2UgY2FuIGJlIGlkZW50aWZpZWQgYnkgc2Nhbm5pbmcgdGhlIG9iamVjdHMgZHVyaW5nIGluaXQKLSAgICAgICAgICAgIGlmIG9ial90eXBlIGluIFsnc3dpdGNoLWludGVyZmFjZS1hbGlhcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBdOgotICAgICAgICAgICAgICAgICMgb25seSBwaWNrIGZvcmVpZ24ga2V5cyB3aGljaCBhcmUgY29tcG91bmQga2V5cwotICAgICAgICAgICAgICAgIGZrcyA9IFt4IGZvciB4IGluIG1pLm9ial90eXBlX2ZvcmVpZ25fa2V5cyhvYmpfdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgICAgaWYgbWkuaXNfY29tcG91bmRfa2V5KG9ial90eXBlLHgpXQotICAgICAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgICAgICAgICBmb3IgZmsgaW4gZmtzOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmsgaW4gZW50cnk6ICMgZmsgbWF5IGJlIG51bGwtYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pLnNwbGl0X2NvbXBvdW5kX2ludG9fZGljdChvYmpfdHlwZSwgZmssIGVudHJ5KQotICAgICAgICAgICAgICAgICAgICBpZiAnc3dpdGNoLWludGVyZmFjZScgaW4gZW50cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaSA9IGVudHJ5Wydzd2l0Y2gtaW50ZXJmYWNlJ10KLSAKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIGlmIG9ial90eXBlID09ICdmaXJld2FsbC1ydWxlJzoKLSAgICAgICAgICAgICAgICBzZWxmLmZpcmV3YWxsX3J1bGVfYWRkX3J1bGVfdG9fZW50cmllcyhlbnRyaWVzKQotICAgICAgICAgICAgcmV0dXJuIGZpZWxkX29yZGVyaW5ncwotICAgICAKLSAgICAgICAgZmllbGRfb3JkZXJpbmdzID0gaGFuZGxlX3NwZWNpZmljX29ial90eXBlKG9ial90eXBlLCByb3dzLCBkZXRhaWwpCi0gICAgICAgICMKLSAgICAgICAgIyBqb2luIGFsaWFzIG5hbWVzLiAgdGhlcmUgaXMgYSBnb29kIGNoYW5jZSB0aGUgYWxpYXMncyB0YWJsZXMKLSAgICAgICAgIyAgYXJlIHNtYWxsLiAgc2luY2UgaXRlcmF0aW9uIG92ZXIgYWxsIHRoZSByb3dzIGlzIG5lZWRlZCwKLSAgICAgICAgIyAgZmlyc3QgaWRlbnRpZnkgdGhlIGFsaWFzIHRhYmxlcyBpbnZvbHZlZCwgdGhlbiBzbmFwIHRoZQotICAgICAgICAjICBjb21wbGV0ZSB0YWJsZSBpbnRvIG1lbW9yeSwgYW5kIHRoZW4gZGVjb3JhZSB3aXRoIHRoZQotICAgICAgICAjICBzcGVjaWZpYyBhbGlhcyBmaWVsZHMuICBYWFggaXQgd291bGQgYmUgZXZlbiBiZXR0ZXIgdG8KLSAgICAgICAgIyAgZ2V0IGEgc2l6ZSBvZiAncm93cycgdnMgdGhlICdhbGlhcycgdGFibGUsIGFuZCBjaG9vc2UKLSAgICAgICAgIyAgdGhlIG1vcmUgcGVyZm9ybWFuY2UgcGF0aC4uLgotICAgICAgICAjCi0gICAgICAgIGlmIG9ial90eXBlIGluIG1pLmFsaWFzX29ial90eXBlX3hyZWY6Ci0gICAgICAgICAgICBvYmpfa2V5ID0gbWkucGsob2JqX3R5cGUpCi0gICAgICAgICAgICBmb3IgYWxpYXMgaW4gbWkuYWxpYXNfb2JqX3R5cGVfeHJlZltvYmpfdHlwZV06Ci0gICAgICAgICAgICAgICAgYWxpYXNfZmllbGQgPSBtaS5hbGlhc19vYmpfdHlwZV9maWVsZChhbGlhcykKLSAgICAgICAgICAgICAgICBpZiBub3QgYWxpYXNfZmllbGQ6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50IHNlbGYuZXJyb3JfbXNnKCJpbnRlcm5hbCBhbGlhcyBpbiBkaXNwbGF5X29ial90eXBlIikKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWFzX3Jvd3MgPSBzZWxmLmdldF90YWJsZV9mcm9tX3N0b3JlKGFsaWFzKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsIGFsaWFzKQotICAgICAgICAgICAgICAgICAgICBwcmludCBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykKLSAgICAgICAgICAgICAgICAgICAgYWxpYXNfcm93cyA9IFtdCi0KLSAgICAgICAgICAgICAgICAjIGludmVydCB0aGUgcm93IG9uY2UsIG1vdmluZyB0aGUga2V5IHRvIHRoZSBkYXRhLgotICAgICAgICAgICAgICAgIGFsaWFzX2tleSA9IG1pLnBrKGFsaWFzKQotICAgICAgICAgICAgICAgIHJvd3NfYWxpYXMgPSBkaWN0KFtbYVthbGlhc19maWVsZF0sIGFbYWxpYXNfa2V5XV0gZm9yIGEgaW4gYWxpYXNfcm93c10pCi0KLSAgICAgICAgICAgICAgICAjIGNvbGxlY3QgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIGpvaW4gKGZrX25hbWUpCi0gICAgICAgICAgICAgICAgIyAKLSAgICAgICAgICAgICAgICAoZmtfb2JqX3R5cGUsIGZrX25hbWUpID0gXAotICAgICAgICAgICAgICAgICAgICBtaS5mb3JlaWduX2tleV9yZWZlcmVuY2VzKGFsaWFzLCBhbGlhc19maWVsZCkKLSAgICAgICAgICAgICAgICAjIG5vdyBhc3NvY2lhdGUgYWxpYXMncyB3aXRoIHRoZSByb3cncyBmaWVsZDoKLSAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJvd3M6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGZrX25hbWUgaW4gcm93OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcm93W2ZrX25hbWVdIGluIHJvd3NfYWxpYXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93W2FsaWFzXSA9IHJvd3NfYWxpYXNbcm93W2ZrX25hbWVdXQotICAgICAgICAgICAgICAgICAgICBlbGlmIGZrX29ial90eXBlIGluIHJvdzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJvd1tma19vYmpfdHlwZV0gaW4gcm93c19hbGlhczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbYWxpYXNdID0gcm93c19hbGlhc1tyb3dbZmtfb2JqX3R5cGVdXQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyB0aGlzIGNob2ljZSBpcyBiZXR0ZXIgaWYgdGhlIGFsaWFzJ3MgdGFibGUgaXMgbGFyZ2UuCi0gICAgICAgICAgICBpZiAwOiAjZm9yIHJvdyBpbiByb3dzOgotICAgICAgICAgICAgICAgIGtleSA9IG1pLnBrKG9ial90eXBlKQotICAgICAgICAgICAgICAgIGZvciBhbGlhcyBpbiBtaS5hbGlhc19vYmpfdHlwZV94cmVmW29ial90eXBlXToKLSAgICAgICAgICAgICAgICAgICAgZmllbGQgPSBtaS5hbGlhc19vYmpfdHlwZV9maWVsZChhbGlhcykKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZpZWxkOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coImludGVybmFsIGFsaWFzIGluIGRpc3BsYXlfb2JqX3R5cGUiKQotICAgICAgICAgICAgICAgICAgICBhbGlhc19yb3cgPSBzZWxmLmdldF90YWJsZV9mcm9tX3N0b3JlKGFsaWFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1trZXldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGFjdCIpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihhbGlhc19yb3cpID4gMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdFcnJvcjogbXVsdGlwbGUgYWxpYXNlcyBmb3IgJXMnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBsZW4oYWxpYXNfcm93KSA9PSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgcm93W2FsaWFzXSA9IGFsaWFzX3Jvd1swXVttaS5wayhhbGlhcyldCi0KLSAgICAgICAgaWYgbGVuKHJvd3MpID09IDA6Ci0gICAgICAgICAgICBpZiB3aXRoX2tleSAhPSAnPG5vX2tleT4nOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiTm8gJXMgJXMgZm91bmQiICUgKG9ial90eXBlLCB3aXRoX2tleSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBwLmZvcm1hdF90YWJsZShyb3dzLCBvYmpfdHlwZSwgZmllbGRfb3JkZXJpbmdzKQotICAgICAgICBlbGlmIGxlbihyb3dzKSA9PSAxIGFuZCB3aXRoX2tleSAhPSAnPG5vX2tleT4nOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucHAuZm9ybWF0X2VudHJ5KHJvd3NbMF0sIG9ial90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnID0gc2VsZi5kZWJ1ZykKLQotICAgICAgICByZXR1cm4gc2VsZi5wcC5mb3JtYXRfdGFibGUoc2VsZi5zaG93X3NvcnRfb2JqX3R5cGUob2JqX3R5cGUsIHJvd3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZF9vcmRlcmluZ3MpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZG9fc2hvd19vYmplY3QKLSAgICAjICBJbXBsZW1lbnRzIHRoZSBzaG93IGNvbW1hbmQgZm9yIG9iamVjdHMgKHRhYmxlL21vZGVsIG91dHB1dCBvZiByb3dzKQotICAgICMKLSAgICBkZWYgZG9fc2hvd19vYmplY3Qoc2VsZiwgd29yZHMsIHdpdGhfc2VhcmNoX2tleSA9IE5vbmUpOgotICAgICAgICBvYmpfdHlwZSA9IHdvcmRzWzBdCi0KLSAgICAgICAgIwotICAgICAgICAjIFRoZSBjbGkgcmVwbGFjZXMgc29tZSB1c2VyIG5hbWVzIHdpdGggdGFibGUgbmFtZXMKLSAgICAgICAgaWYgb2JqX3R5cGUgPT0gJ3RhZyc6Ci0gICAgICAgICAgICBvYmpfdHlwZSA9ICd0YWctbWFwcGluZycKLQotICAgICAgICBtYXRjaCA9ICJzdGFydHN3aXRoIgotICAgICAgICAjCi0gICAgICAgICMgQWxsb3cgInRoaXMiIHJlZmVyZW5jZSBpZiB3ZSBhcmUgaW4gY29uZmlnLXN1Ym1vZGUsIGNoYW5nZSB0aGUKLSAgICAgICAgIyBtYXRjaCB0byBhbiBleGFjdCBtYXRjaCB0byBwcmV2ZW50IHByZWZpeCBtYXRjaGluZwotICAgICAgICBpZiBvYmpfdHlwZSA9PSAidGhpcyI6Ci0gICAgICAgICAgICBpZiBzZWxmLmluX2NvbmZpZ19zdWJtb2RlKCk6Ci0gICAgICAgICAgICAgICAgb2JqX3R5cGUgPSBzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqX3R5cGUoKQotICAgICAgICAgICAgICAgIHdvcmRzID0gW29ial90eXBlLCAidGhpcyJdCi0gICAgICAgICAgICAgICAgbWF0Y2ggPSAiZXhhY3QiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiXCJ0aGlzXCIgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb25maWd1cmF0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN1Ym1vZGUsIHN1Y2ggYXMgc3dpdGNoLCBwb3J0LCBob3N0LCBldGMuIikKLSAgICAgICAgIwotICAgICAgICAjIGNvbXBsZXRlIHRhYmxlIGxvb2t1cDogJ3Nob3cgPHRhYmxlPicKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAxOgotICAgICAgICAgICAgaWYgd2l0aF9zZWFyY2hfa2V5ID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2l0aF9zZWFyY2hfa2V5ID0gIjxub19rZXk+IgotICAgICAgICAgICAgZXJyb3JzID0gTm9uZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVudHJpZXMgPSBzZWxmLmdldF90YWJsZV9mcm9tX3N0b3JlKG9ial90eXBlKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCBvYmpfdHlwZSkKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIGVycm9yczoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5kaXNwbGF5X29ial90eXBlX3Jvd3Mob2JqX3R5cGUsIGVudHJpZXMsIHdpdGhfc2VhcmNoX2tleSkKLQotICAgICAgICAjIHRhYmxlIHdpdGgga2V5OiAgInNob3cgPHRhYmxlPiA8a2V5PiIKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAyOgotICAgICAgICAgICAgb2JqID0gd29yZHNbMV0KLSAgICAgICAgICAgIGlmIHdpdGhfc2VhcmNoX2tleSA9PSBOb25lOgotICAgICAgICAgICAgICAgIHdpdGhfc2VhcmNoX2tleSA9IG9iagotCi0gICAgICAgICAgICAjIEFsbG93ICJ0aGlzIiByZWZlcmVuY2UgaWYgd2UgYXJlIGluIGNvbmZpZy1zdWJtb2RlCi0gICAgICAgICAgICBpZiBvYmogPT0gInRoaXMiIGFuZCBcCi0gICAgICAgICAgICAgIG9ial90eXBlID09IHNlbGYuZ2V0X2N1cnJlbnRfbW9kZV9vYmpfdHlwZSgpIFwKLSAgICAgICAgICAgICAgYW5kIHNlbGYuaW5fY29uZmlnX3N1Ym1vZGUoKToKLSAgICAgICAgICAgICAgICBvYmogPSBzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqKCkKLQotICAgICAgICAgICAga2V5ID0gbWkucGsob2JqX3R5cGUpCi0gICAgICAgICAgICBpZiBrZXk6Ci0gICAgICAgICAgICAgICAgb2JqID0gY29udmVydF9hbGlhc190b19vYmplY3Rfa2V5KG9ial90eXBlLCBvYmopCi0gICAgICAgICAgICAgICAgaWYgbWkub2JqX3R5cGVfaGFzX21vZGVsKG9ial90eXBlKToKLSAgICAgICAgICAgICAgICAgICAgZW50cmllcyA9IHNlbGYuZ2V0X3RhYmxlX2Zyb21fc3RvcmUob2JqX3R5cGUsIGtleSwgb2JqLCBtYXRjaCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFhYWCByYWlzZSBpbnRlcm5hbCBlcnJvcj8gIG1vZGVsIGRvZXNuJ3QgZXhpc3QuCi0gICAgICAgICAgICAgICAgICAgIHByaW50IGNvbW1hbmQuX2xpbmUoKSwgb2JqX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgZW50cmllcyA9IFtdCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGlzcGxheV9vYmpfdHlwZV9yb3dzKG9ial90eXBlLCBlbnRyaWVzLCB3aXRoX3NlYXJjaF9rZXkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBwLmZvcm1hdF90YWJsZShzZWxmLmdldF90YWJsZV9mcm9tX3N0b3JlKG9ial90eXBlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqX3R5cGUpCi0gICAgICAgIGVsaWYgInN0YXRzIi5zdGFydHN3aXRoKHdvcmRzWzJdKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmhlbHBlcl9zaG93X29iamVjdF9zdGF0cyh3b3JkcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiU3ludGF4OiBzaG93IDx0YWJsZT4gPGtleT46ICAiIFwKLSAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBpbnB1dDogIiArICIgIi5qb2luKHdvcmRzWzI6XSkKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBoZWxwZXJfc2hvd19vYmplY3Rfc3RhdHMKLSAgICAjCi0gICAgZGVmIGhlbHBlcl9zaG93X29iamVjdF9zdGF0cyhzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIGlmIHNlbGYuc3RhdHNfbWV0YWRhdGEgPT0gTm9uZToKLSAgICAgICAgICAgIHNlbGYuaW5pdF9zdGF0c19tZXRhZGF0YSgpCi0KLSAgICAgICAgIyBnZXQgb2JqZWN0IHR5cGUKLSAgICAgICAgb2JqZWN0X3R5cGUgPSB3b3Jkc1swXQotCi0gICAgICAgICMgVGhlIHJlc3Qgc3RhdHMgYXBpIGRpZmZlcnMgZnJvbSB0aGUgQ0xJIGluIHNvbWUgb2YgdGhlCi0gICAgICAgICMgb2JqZWN0IG5hbWVzLCBzbyB0aGlzIG1hcCBhbGxvd3MgdXMgdG8gZml4IGl0Ci0gICAgICAgIGlmIG9iamVjdF90eXBlIGluIHNlbGYuc3RhdHNfcmVzdGFwaV9tYXA6Ci0gICAgICAgICAgICBvYmplY3RfdHlwZSA9IHNlbGYuc3RhdHNfcmVzdGFwaV9tYXBbb2JqZWN0X3R5cGVdCi0KLSAgICAgICAgaWYgb2JqZWN0X3R5cGUgbm90IGluIHNlbGYuc3RhdHNfdHlwZV9tZXRhZGF0YToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygnbm8gc3RhdGlzdGljcyBhdmFpbGFibGUgZm9yIG9iamVjdCB0eXBlICVzJyAlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF90eXBlKQotCi0gICAgICAgICMgR2V0IHRoZSBzcGVjaWZpYyBvYmplY3QgdG8gb3BlcmF0ZSBvbgotICAgICAgICBzb2JqZWN0ID0gd29yZHNbMV07Ci0gICAgICAgIAotICAgICAgICAjIHRoZSBjb250cm9sbGVyLW5vZGUgb2JqZWN0cyBkb24ndCBjdXJyZW50bHkgaGF2ZSBhbnkgcmVhbAotICAgICAgICAjIGNvbmNlcHQgb2YgYSB1bmlxdWUgSUQgZm9yIGEgY29udHJvbGxlcjsgZm9yIG5vdyB0aGUgc3RhdHMKLSAgICAgICAgIyBhcmUgYWx3YXlzIGxhYmVsZWQgJ2xvY2FsaG9zdCcgZXZlbiB0aG91Z2ggdGhhdCB3aWxsIG5ldmVyCi0gICAgICAgICMgYXBwZWFyIGluIHRoZSBjb250cm9sbGVyLW5vZGUgbGlzdAotICAgICAgICBpZiAoJ2NvbnRyb2xsZXItbm9kZScuc3RhcnRzd2l0aChvYmplY3RfdHlwZSkpOgotICAgICAgICAgICAgc29iamVjdCA9ICdsb2NhbGhvc3QnCi0KLSAgICAgICAgdG9jaGVjayA9IFtdCi0gICAgICAgICMgZ2V0IHN0YXRpc3RpYyBuYW1lCi0gICAgICAgIGlmIGxlbih3b3JkcykgPiAzOgotICAgICAgICAgICAgaWYgKHdvcmRzWzNdIG5vdCBpbiBzZWxmLnN0YXRzX21ldGFkYXRhIG9yIAotICAgICAgICAgICAgICAgIHNlbGYuc3RhdHNfbWV0YWRhdGFbd29yZHNbM11dWyd0YXJnZXRfdHlwZSddICE9IG9iamVjdF90eXBlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coJ25vIHN0YXRpc3RpYyAlcyBhdmFpbGFibGUgZm9yIG9iamVjdCB0eXBlICVzJyAlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod29yZHNbM10sIG9iamVjdF90eXBlKSkKLSAgICAgICAgICAgIHRvY2hlY2suYXBwZW5kKHdvcmRzWzNdKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdG9jaGVjayA9IFtpdGVtWyduYW1lJ10gCi0gICAgICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHNlbGYuc3RhdHNfdHlwZV9tZXRhZGF0YVtvYmplY3RfdHlwZV1dCi0KLSAgICAgICAgcGFyc2VkX29wdGlvbnMgPSB7fQotICAgICAgICBpZiAobGVuKHdvcmRzKSA+IDQpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBhcnNlZF9vcHRpb25zID0gXAotICAgICAgICAgICAgICAgICAgICBzZWxmLnBhcnNlX29wdGlvbmFsX3BhcmFtZXRlcnMoc2VsZi5zdGF0c19vcHRpb25hbF9wYXJhbXMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZHNbNDpdKQotICAgICAgICAgICAgZXhjZXB0IFBhcmFtRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKGUpCi0KLSAgICAgICAgZGlzcGxheSA9ICdsYXRlc3QtdmFsdWUnCi0gICAgICAgIHRpbWVzcGVjID0gRmFsc2UKLSAgICAgICAgbm93ID0gaW50KHRpbWUudGltZSgpKjEwMDApCi0gICAgICAgIHF1ZXJ5X3BhcmFtcyA9IHsnc3RhcnQtdGltZSc6IG5vdyAtIDM2MDAwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZW5kLXRpbWUnOiBub3csCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlLWNvdW50JzogMjUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1mb3JtYXQnOiAndmFsdWUnfQotCi0gICAgICAgIGlmICdzdGFydC10aW1lJyBpbiBwYXJzZWRfb3B0aW9uczoKLSAgICAgICAgICAgIHRpbWVzcGVjID0gVHJ1ZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHF1ZXJ5X3BhcmFtc1snc3RhcnQtdGltZSddID0gc2VsZi5wYXJzZV9kYXRlKHBhcnNlZF9vcHRpb25zWydzdGFydC10aW1lJ10pCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCdpbnZhbGlkIHN0YXJ0IHRpbWUgJXM6ICVzJyAlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyc2VkX29wdGlvbnNbJ3N0YXJ0LXRpbWUnXSwgZSkpCi0KLSAgICAgICAgaWYgJ2VuZC10aW1lJyBpbiBwYXJzZWRfb3B0aW9uczoKLSAgICAgICAgICAgIHRpbWVzcGVjID0gVHJ1ZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHF1ZXJ5X3BhcmFtc1snZW5kLXRpbWUnXSA9IHNlbGYucGFyc2VfZGF0ZShwYXJzZWRfb3B0aW9uc1snZW5kLXRpbWUnXSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coJ2ludmFsaWQgZW5kIHRpbWUgJXM6ICVzJyAlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyc2VkX29wdGlvbnNbJ2VuZC10aW1lJ10sIGUpKQotCi0gICAgICAgIGlmICdkdXJhdGlvbicgaW4gcGFyc2VkX29wdGlvbnM6Ci0gICAgICAgICAgICB0aW1lc3BlYyA9IFRydWUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBxdWVyeV9wYXJhbXNbJ2R1cmF0aW9uJ10gPSBwYXJzZWRfb3B0aW9uc1snZHVyYXRpb24nXQotICAgICAgICAgICAgICAgIGlmICdzdGFydC10aW1lJyBpbiBwYXJzZWRfb3B0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgZGVsIHF1ZXJ5X3BhcmFtc1snZW5kLXRpbWUnXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBxdWVyeV9wYXJhbXNbJ3N0YXJ0LXRpbWUnXQotCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCdpbnZhbGlkIGR1cmF0aW9uICVzJyAlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfb3B0aW9uc1snZHVyYXRpb24nXSkKLQotICAgICAgICBpZiAnZGlzcGxheScgaW4gcGFyc2VkX29wdGlvbnM6Ci0gICAgICAgICAgICBkaXNwbGF5ID0gcGFyc2VkX29wdGlvbnNbJ2Rpc3BsYXknXQotCi0gICAgICAgIGlmIHRpbWVzcGVjIGFuZCBkaXNwbGF5ID09ICdsYXRlc3QtdmFsdWUnOgotICAgICAgICAgICAgZGlzcGxheSA9ICdncmFwaCcKLQotICAgICAgICBpZiBkaXNwbGF5ID09ICdncmFwaCc6Ci0gICAgICAgICAgICBxdWVyeV9wYXJhbXNbJ3NhbXBsZS1jb3VudCddID0gc2VsZi5wcC5nZXRfdGVybWluYWxfc2l6ZSgpWzBdCi0KLSAgICAgICAgZm9yIHAgaW4gWydzYW1wbGUtY291bnQnLCAnbGltaXQnLCAnc2FtcGxlLXdpbmRvdycsIAotICAgICAgICAgICAgICAgICAgJ3NhbXBsZS1pbnRlcnZhbCcsICdkYXRhLWZvcm1hdCddOgotICAgICAgICAgICAgaWYgcCBpbiBwYXJzZWRfb3B0aW9uczoKLSAgICAgICAgICAgICAgICBxdWVyeV9wYXJhbXNbcF0gPSBwYXJzZWRfb3B0aW9uc1twXQotCi0gICAgICAgIGlmIGRpc3BsYXkgPT0gJ2xhdGVzdC12YWx1ZSc6Ci0gICAgICAgICAgICBkYXRhID0ge30KLSAgICAgICAgICAgIGZvciBpdGVtIGluIHRvY2hlY2s6Ci0gICAgICAgICAgICAgICAgdXJsID0gKCdodHRwOi8vJXMvcmVzdC92MS9zdGF0cy9kYXRhLyVzLyVzLyVzLyVzLycgJSAKLSAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY29udHJvbGxlciwgc2VsZi5jbHVzdGVyLCBvYmplY3RfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBzb2JqZWN0LCBpdGVtKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICh0aW1lc3RhbXAsIHZhbHVlKSA9IHNlbGYucmVzdF9zaW1wbGVfcmVxdWVzdF90b19kaWN0KHVybCkKLSAgICAgICAgICAgICAgICAgICAgZGF0YVtzZWxmLnN0YXRzX21ldGFkYXRhW2l0ZW1dWyduYW1lJ11dID0gIiVkIiAlIHZhbHVlCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICBkYXRhW3NlbGYuc3RhdHNfbWV0YWRhdGFbaXRlbV1bJ25hbWUnXV0gPSAiW051bGxdIgotCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5wcC5mb3JtYXRfZW50cnkoZGF0YSwgJ3N0YXRzLSVzJyAlIG9iamVjdF90eXBlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaXRlbSA9IHRvY2hlY2tbMF0KLSAgICAgICAgICAgIHVybCA9ICgnaHR0cDovLyVzL3Jlc3QvdjEvc3RhdHMvZGF0YS8lcy8lcy8lcy8lcy8/JXMnICUgCi0gICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmNvbnRyb2xsZXIsIHNlbGYuY2x1c3Rlciwgb2JqZWN0X3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgc29iamVjdCwgaXRlbSwgIiYiLmpvaW4oWyclcz0lcycgJSAoayx2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLHYgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gcXVlcnlfcGFyYW1zLml0ZXJpdGVtcygpXSkpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGpzb25fZGF0YSA9IHNlbGYucmVzdF9zaW1wbGVfcmVxdWVzdF90b19kaWN0KHVybCkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnX2JhY2t0cmFjZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ0ZBSUxFRCBVUkwnLCB1cmwKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coJ2NvdWxkIG5vdCBsb2FkIHN0YXRzIGRhdGE6ICVzJyAlIGUpCi0KLSAgICAgICAgICAgIGlmIGRpc3BsYXkgPT0gJ3RhYmxlJzoKLSAgICAgICAgICAgICAgICBkYXRhID0gW10KLSAgICAgICAgICAgICAgICBmb3IgKHRpbWVzdGFtcCwgdmFsdWUpIGluIGpzb25fZGF0YToKLSAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoeyd0aW1lc3RhbXAnOiBpbnQodGltZXN0YW1wKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogdmFsdWV9KQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBwLmZvcm1hdF90YWJsZShkYXRhLCAnc3RhdHMtJXMtJXMtJXMnICUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3RfdHlwZSwgaXRlbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeV9wYXJhbXNbJ2RhdGEtZm9ybWF0J10pKQotICAgICAgICAgICAgZWxpZiBkaXNwbGF5ID09ICdncmFwaCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucHAuZm9ybWF0X3RpbWVfc2VyaWVzX2dyYXBoKGpzb25fZGF0YSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0cy0lcy0lcy0lcycgJSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdF90eXBlLCBpdGVtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X3BhcmFtc1snZGF0YS1mb3JtYXQnXSkpCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHBhcnNlX2RhdGUKLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBwYXJzZV9kYXRlKHRleHQpOgotICAgICAgICBpZiAodGV4dCA9PSAnbm93JyBvciB0ZXh0ID09ICdjdXJyZW50Jyk6Ci0gICAgICAgICAgICByZXR1cm4gaW50KHRpbWUudGltZSgpKjEwMDApCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGludCh0ZXh0KQotICAgICAgICBleGNlcHQ6IAotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGZvciBmLCBwcmUgaW4gWygnJVktJW0tJWRUJUg6JU06JVMnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCclWS0lbS0lZCAlSDolTTolUycsIE5vbmUpLAotICAgICAgICAgICAgICAgICAgICAgICAoJyVZLSVtLSVkVCVIOiVNOiVTJXonLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCclWS0lbS0lZCAlSDolTTolUyV6JywgTm9uZSksCi0gICAgICAgICAgICAgICAgICAgICAgICgnJVktJW0tJWQnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCclbS0lZCcsICclWS0nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCclSDolTScsICclWS0lbS0lZFQnKV06Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdCA9IHRleHQKLSAgICAgICAgICAgICAgICBpZiBwcmU6Ci0gICAgICAgICAgICAgICAgICAgIHByZWYgPSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZShwcmUpCi0gICAgICAgICAgICAgICAgICAgIGYgPSBwcmUgKyBmCi0gICAgICAgICAgICAgICAgICAgIHQgPSBwcmVmICsgdAotCi0gICAgICAgICAgICAgICAgdGhldGltZSA9IGRhdGV0aW1lLmRhdGV0aW1lLnN0cnB0aW1lKHQsIGYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGludCh0aW1lLm1rdGltZSh0aGV0aW1lLnRpbWV0dXBsZSgpKSoxMDAwKQotICAgICAgICAgICAgZXhjZXB0OiAKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY291bnQgbm90IHBhcnNlICVzIGFzIGEgdGltZXN0YW1wJyAlIHRleHQpCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBkaXNwbGF5X3Zuc19pbnRlcmZhY2UKLSAgICAjICBTZWFyY2ggZGlzdCBpcyBhIGNvbGxlY3Rpb24gb2YgY29tcHVuZCBrZXkgZW50aXRpZXMKLSAgICAjCi0gICAgZGVmIGRpc3BsYXlfdm5zX2ludGVyZmFjZShzZWxmLCB2bnNfbmFtZSwgc2VhcmNoX2RpY3QsIHdpdGhfc2VhcmNoX2tleSwgZGV0YWlsID0gJ2RlZmF1bHQnKToKLSAgICAgICAgb2JqX3R5cGUgPSAndm5zLWludGVyZmFjZScKLSAgICAgICAgb2JqX2tleSA9IG1pLnBrKG9ial90eXBlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbnRyaWVzID0gcmVzdF90b19tb2RlbC5nZXRfbW9kZWxfZnJvbV91cmwob2JqX3R5cGUsIHNlYXJjaF9kaWN0KQotICAgICAgICAgICAgI2VudHJpZXMgPSBzZWxmLnJlc3RfcXVlcnlfb2JqZWN0cyhvYmpfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc2VhcmNoX2RpY3QpCi0gICAgICAgICAgICBlcnJvcnMgPSBOb25lCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCBvYmpfdHlwZSkKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgaWYgZXJyb3JzOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotICAgICAgICB2bnNfcnVsZXMgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgndm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWkucGsoJ3Zucy1pbnRlcmZhY2UtcnVsZScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfZGljdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICMKLSAgICAgICAgIyBkaXZpZGUgdXAgdGhlIHJlc3VsdCBpbnRvIHR3byBwYXJ0cywgdGhlIGZpcnN0IHBhcnQgaXMKLSAgICAgICAgIyB0aGUgcGh5c2ljYWwgaW50ZXJmYWNlcywgdGhlIHNlY29uZCBpcyB0aGUgbWFjIGludGVyZmFjZXMuLi4KLSAgICAgICAgcGh5cyA9IFtdCi0gICAgICAgIG1hY3MgPSBbXQotICAgICAgICAgICAgCi0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgZmllbGRzID0gZW50cnlbb2JqX2tleV0uc3BsaXQoJ3wnKQotICAgICAgICAgICAgZW50cnlbJ3RlbmFudCddID0gZmllbGRzWzBdCi0gICAgICAgICAgICBlbnRyeVsndm5zJ109ZmllbGRzWzFdCi0gICAgICAgICAgICAjIGFsbCB0aGVzZSBmaWVsZHMgbXVzdCBoYXZlIHR3byBwYXJ0cy4KLSAgICAgICAgICAgIGlmIGxlbihmaWVsZHMpICE9IDM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIAotICAgICAgICAgICAgIyBjaG9vc2UgYmV0d2VlbiBzd2l0Y2ggYmFzZWQgcnVsZXMgYW5kIG1hYy9pcCBiYXNlZCBydWxlcwotICAgICAgICAgICAgcnVsZSA9ICdkZWZhdWx0JwotICAgICAgICAgICAgc3dpdGNoID0gTm9uZQotICAgICAgICAgICAgdmlydCA9IE5vbmUKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgRWFjaCBhZGRyZXNzLXNwYWNlIHdvdWxkIGhhdmUgYSBkZWZhdWx0IHZucyBuYW1lZAotICAgICAgICAgICAgIyBuYW1lZCA8YXM+LWRlZmF1bHQsIGV4Y2VwdCB0aGUgJ2RlZmF1bHQnIGFkZGRyZXNzLXNwYWNlIHdoaWNoCi0gICAgICAgICAgICAjIGhhcyBhIGRlZmF1bHQgdm5zIG5hbWVkIGp1c3QgJ2RlZmF1bHQnCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICBpZiBmaWVsZHNbMV0gPT0gImRlZmF1bHQiIG9yIGZpZWxkc1sxXS5lbmRzd2l0aCgiLWRlZmF1bHQiKToKLSAgICAgICAgICAgICAgICB2aXJ0ID0gJ2RlZmF1bHQnCi0gICAgICAgICAgICAgICAgaWYgZmllbGRzWzJdLmZpbmQoJy8nKSA+PSAwOgotICAgICAgICAgICAgICAgICAgICB2aXJ0ID0gZmllbGRzWzJdLnNwbGl0KCcvJylbMV0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgbm90ICdydWxlJyBpbiBlbnRyeSBvciBlbnRyeVsncnVsZSddPT0nZGVmYXVsdCc6Ci0gICAgICAgICAgICAgICAgICAgIGlmX3J1bGUgPSBbXQotICAgICAgICAgICAgICAgICAgICB2aXJ0ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcnVsZSA9IGVudHJ5WydydWxlJ10KLSAgICAgICAgICAgICAgICAgICAgaWZfcnVsZSA9IHZuc19ydWxlc1tydWxlXVswXQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICdzd2l0Y2gnIGluIGlmX3J1bGU6Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCA9IGlmX3J1bGVbJ3N3aXRjaCddCi0gICAgICAgICAgICAgICAgZWxpZiAnbWFjJyBpbiBpZl9ydWxlOgotICAgICAgICAgICAgICAgICAgICB2aXJ0ID0gaWZfcnVsZVsnbWFjJ10KLSAgICAgICAgICAgICAgICAgICAgZW50cnlbJ21hYyddID0gdmlydAotICAgICAgICAgICAgICAgIGVsaWYgJ2lwLXN1Ym5ldCcgaW4gaWZfcnVsZToKLSAgICAgICAgICAgICAgICAgICAgdmlydCA9IHsnaXAtYWRkcmVzcyc6IGlmX3J1bGVbJ2lwLXN1Ym5ldCddfQotICAgICAgICAgICAgICAgICAgICBpZiAnaXBzJyBpbiBlbnRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5WydpcHMnXS5hcHBlbmQodmlydCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5WydpcHMnXSA9IFt2aXJ0XQotICAgICAgICAgICAgICAgIGVsaWYgJ3RhZ3MnIGluIGlmX3J1bGU6Ci0gICAgICAgICAgICAgICAgICAgIHZpcnQgPSBpZl9ydWxlWyd0YWdzJ10KLSAgICAgICAgICAgICAgICAgICAgZW50cnlbJ3RhZ3MnXSA9IHZpcnQKLSAgICAgICAgICAgICAgICBlbGlmICd2bGFucycgaW4gaWZfcnVsZToKLSAgICAgICAgICAgICAgICAgICAgdmlydCA9ICJ2bGFuICVzIiAlIGlmX3J1bGVbJ3ZsYW5zJ10KLSAgICAgICAgICAgICAgICAgICAgZW50cnlbJ3ZsYW5zJ10gPSB2aXJ0Ci0KLSAgICAgICAgICAgIGlmIHN3aXRjaDoKLSAgICAgICAgICAgICAgICBwaHlzLmFwcGVuZChlbnRyeSkKLSAgICAgICAgICAgIGlmIHZpcnQ6Ci0gICAgICAgICAgICAgICAgZW50cnlbJ3ZldGgnXSA9IGVudHJ5W29ial9rZXldLnNwbGl0KCd8JylbMl0KLSAgICAgICAgICAgICAgICBtYWNzLmFwcGVuZChlbnRyeSkKLQotICAgICAgICBvdXRwdXQgPSAnJwotICAgICAgICBpZiBsZW4ocGh5cyk6Ci0gICAgICAgICAgICBzZWxmLnZuc19qb2luX3N3aXRjaF9maWVsZHModm5zX25hbWUsIHBoeXMpCi0gICAgICAgICAgICBvdXRwdXQgKz0gc2VsZi5kaXNwbGF5X29ial90eXBlX3Jvd3MoJ3Zucy1pbnRlcmZhY2UtcGh5cycsIHBoeXMsIHdpdGhfc2VhcmNoX2tleSwgZGV0YWlsKQotICAgICAgICBpZiBsZW4obWFjcyk6Ci0gICAgICAgICAgICBpZiBsZW4ocGh5cyk6Ci0gICAgICAgICAgICAgICAgb3V0cHV0ICs9ICdcbicKLSAgICAgICAgICAgIHNlbGYudm5zX2pvaW5faG9zdF9maWVsZHMob2JqX3R5cGUsIG1hY3MpCi0gICAgICAgICAgICBvdXRwdXQgKz0gc2VsZi5kaXNwbGF5X29ial90eXBlX3Jvd3MoJ3Zucy1pbnRlcmZhY2UtbWFjcycsIG1hY3MsIHdpdGhfc2VhcmNoX2tleSwgZGV0YWlsKQotCi0gICAgICAgIGlmIG91dHB1dCAhPSAnJzoKLSAgICAgICAgICAgIHJldHVybiBvdXRwdXQKLSAgICAgICAgcmV0dXJuIHNlbGYucHAuZm9ybWF0X3RhYmxlKFtdLCdkaXNwbGF5LXZucy1pbnRlcmZhY2UnKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGZpbmRfYW5kX2Rpc3BsYXlfdm5zX2ludGVyZmFjZXMKLSAgICAjCi0gICAgZGVmIGZpbmRfYW5kX2Rpc3BsYXlfdm5zX2ludGVyZmFjZShzZWxmLCB2bnNfbmFtZSwgd29yZHMpOgotICAgICAgICB3aXRoX3NlYXJjaF9rZXkgPSAiPG5vX2tleT4iCi0gICAgICAgIHNlYXJjaF9kaWN0ID0geyAndm5zJyA6IHZuc19uYW1lIH0KLSAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAxOgotICAgICAgICAgICAgc2VhcmNoX2RpY3RbJ2ludGVyZmFjZSddID0gd29yZHNbMF0KLSAgICAgICAgZWxpZiBsZW4od29yZHMpID4gMToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiQWRkaXRpb25hbCBzZWFyY2gga2V5cyBhZnRlciBpbnRlcmFjZSIpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuZGlzcGxheV92bnNfaW50ZXJmYWNlKHZuc19uYW1lLCBzZWFyY2hfZGljdCwgd2l0aF9zZWFyY2hfa2V5KQotICAgICAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZG9fc2hvd192bnNfaW50ZXJmYWNlcwotICAgICMgIFRoaXMgZGVmaW5pdGlvbiBpcyBuZWVkZWQgdG8gYWxsb3cgdGhlIHZucy1pbnRlcmZhY2UgdGFibGUvbW9kZWwgdG8KLSAgICAjICBiZSBkaXNwbGF5ZWQgaW4gYmFzaWMgY29uZmlnIG1vZGUuICBkb19zaG93KCkgc2VhcmNoZXMgbmFtZXMgb2YgZnVuY3Rpb25zCi0gICAgIyAgdXNpbmcgdGhlIHByZWZpeCBvZiB0aGUgJ3Nob3cnIGFyZ3VtZW50OyB3aXRob3V0IHRoaXMgZnVuY3Rpb24sCi0gICAgIyAgaXQgZmluZCAnZG9fc2hvd192bnNfaW50ZXJmYWNlX3J1bGUnIGFuZCBzZWxlY3RzIHRoYXQgZnVuY3Rpb24gdG8KLSAgICAjICBkaXNwbGF5IHJlc3VsdHMgZm9yICdzaG93IHZucy1pbnRlcmZhY2VgLgotICAgICMKLSAgICBkZWYgZG9fc2hvd192bnNfaW50ZXJmYWNlcyhzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIHdpdGhfc2VhcmNoX2tleSA9ICI8bm9fa2V5PiIKLSAgICAgICAgbG9jYWxfdm5zX25hbWUgPSBzZWxmLnZuc19uYW1lKCkKLSAgICAgICAgaWYgc2VsZi52bnNfbmFtZSgpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBsZW4od29yZHMpID4gMDoKLSAgICAgICAgICAgICAgICBsb2NhbF92bnNfbmFtZSA9IHdvcmRzWzBdCi0gICAgICAgICAgICAgICAgc2VhcmNoX2RpY3QgPSB7ICd2bnMnIDogbG9jYWxfdm5zX25hbWUgfQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIG9ubHkgY2FzZSB3aGVyZSB0aGUgdm5zIG5hbWUgaXMgaW5jbHVkZWQgaXMgdGhlIG91dHB1dCAKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5kb19zaG93X29iamVjdChbJ3Zucy1pbnRlcmZhY2UnXSwgd2l0aF9zZWFyY2hfa2V5KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VhcmNoX2RpY3QgPSB7ICd2bnMnIDogbG9jYWxfdm5zX25hbWUgfQotICAgICAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAxOgotICAgICAgICAgICAgICAgIHdpdGhfc2VhcmNoX2tleSA9IHdvcmRzCi0gICAgICAgICAgICAgICAgc2VhcmNoX2RpY3RbJ2ludGVyZmFjZSddID0gd29yZHNbMF0KLSAgICAgICAgICAgIGVsaWYgbGVuKHdvcmRzKSA+IDI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCJBZGRpdGlvbmFsIHNlYXJjaCBrZXlzIGFmdGVyIGludGVyYWNlIikKLQotICAgICAgICByZXR1cm4gc2VsZi5kaXNwbGF5X3Zuc19pbnRlcmZhY2UobG9jYWxfdm5zX25hbWUsIHNlYXJjaF9kaWN0LCB3aXRoX3NlYXJjaF9rZXkpCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBkaXNwbGF5X3Zuc19tYWNfYWRkcmVzc190YWJsZQotICAgICMgIFVzZWQgYnkgJ3Nob3cgdm5zIDxuPiBtYWMtYWRkcmVzcy10YWJsZScsIGFuZCB2bnMgbW9kZSAnc2hvdyBtYWMtYWRkcmVzcy10YWJsZScKLSAgICAjCi0gICAgZGVmIGRpc3BsYXlfdm5zX21hY19hZGRyZXNzX3RhYmxlKHNlbGYsIHZuc19uYW1lLCB3b3Jkcyk6Ci0gICAgICAgICMgbm90ZTogJ2NvbmZpZy12bnMnIG1hdGNoZXMgYm90aCB2bnMgYW5kIHZucy1kZWZpbml0aW9uIG1vZGUsCi0gICAgICAgICMgIHdoaWxlICdjb25maWctdm5zLScgbWF0Y2hlcyBvbmx5IHZucy1kZWZpbml0aW9uIG1vZGUuCi0gICAgICAgICMgdGhlIGlkIGZvciB0aGUgaG9zdC12bnMtaW50ZXJmYWNlIHRhYmxlIGhhcyB0aGUgaG9zdCBhcyB0aGUgJ3ByZWZpeCcsCi0gICAgICAgICMgcHJldmVudGluZyBzZWFyY2hpbmcgYmFzZWQgb24gdGhlIHByZWZpeC4gIHRoZSB2bnMgaXMgbm90IGV2ZW4gYSBmb3JlaWduCi0gICAgICAgICMga2V5LCB3aGljaCBtZWFucyB0aGUgY29tcGxldGUgdGFibGUgbXVzdCBiZSByZWFkLCB0aGVuIHRoZSB2bnMgYXNzb2NpYXRpb24KLSAgICAgICAgIyBtdXN0IGJlIGRldGVybWluZWQsIGFuZCB0aGVuIG1hdGNoZWQKLSAgICAgICAgZmlsdGVyID0geyAndm5zJyA6IHZuc19uYW1lIH0gaWYgdm5zX25hbWUgIT0gJ2FsbCcgZWxzZSB7fQotICAgICAgICBpZiBsZW4od29yZHMpOgotICAgICAgICAgICAgZmlsdGVyWydtYWMnXSA9IHdvcmRzWzBdCi0gICAgICAgIGVudHJpZXMgPSByZXN0X3RvX21vZGVsLmdldF9tb2RlbF9mcm9tX3VybCgnaG9zdC12bnMtaW50ZXJmYWNlJywgZmlsdGVyKQotICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgICAgIGZpZWxkcz1lbnRyeVsndm5zJ10uc3BsaXQoJ3wnKQotICAgICAgICAgICAgZW50cnlbJ3RlbmFudCddPWZpZWxkc1swXQotICAgICAgICAgICAgZW50cnlbJ3ZucyddPWZpZWxkc1sxXQotICAgICAgICB3aXRoX2tleSA9ICc8bm9fa2V5PicKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA+IDA6Ci0gICAgICAgICAgICB3aXRoX2tleSA9IHdvcmRzWzBdCi0KLSAgICAgICAgI2RldGFpbCA9ICd2bnMnICAgICAgICAgICMgZXhjbHVkZSB2bnMgY29sdW1uLCB2bnMgaXMgbmFtZWQKLSAgICAgICAgZGV0YWlsID0gJ2RlZmF1bHQnICAgICAgICAgICMgZXhjbHVkZSB2bnMgY29sdW1uLCB2bnMgaXMgbmFtZWQKLSAgICAgICAgaWYgdm5zX25hbWUgPT0gJ2FsbCc6Ci0gICAgICAgICAgICBkZXRhaWwgPSAnZGVmYXVsdCcgICMgaW5jbHVkZSB2bnMgY29sdW1uLCB2bnMgbm90IG5hbWVkCi0KLSAgICAgICAgIyBzZWxmLnZuc19qb2luX2hvc3RfZmllbGRzKCdob3N0LXZucy1pbnRlcmZhY2UnLCBlbnRyaWVzKQotICAgICAgICByZXR1cm4gc2VsZi5kaXNwbGF5X29ial90eXBlX3Jvd3MoJ2hvc3Qtdm5zLWludGVyZmFjZS12bnMnLCBlbnRyaWVzLCB3aXRoX2tleSwgJ2RlZmF1bHQnKQotICAgICAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZG9fc2hvd192bnNfbWFjX2FkZHJlc3NfdGFibGUKLSAgICAjICBjb25maWcgYW5kIHZucyBtb2RlICdzaG93IG1hYy1hZGRyZXNzLXRhYmxlJyBjb21tYW5kCi0gICAgIwotICAgIGRlZiBkb19zaG93X3Zuc19tYWNfYWRkcmVzc190YWJsZShzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIGlmIHdvcmRzID09IE5vbmUgb3IgbGVuKHdvcmRzKSA+IDI6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5zeW50YXhfbXNnKCdzaG93IG1hYy1hZGRyZXNzLXRhYmxlIDxob3N0PicpCi0KLSAgICAgICAgaWYgc2VsZi5pbl9jb25maWdfc3VibW9kZSgnY29uZmlnLXZucycpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGlzcGxheV92bnNfbWFjX2FkZHJlc3NfdGFibGUoc2VsZi52bnNfbmFtZSgpLCB3b3JkcykKLQotICAgICAgICBpZiBsZW4od29yZHMpID4gMDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmRvX3Nob3dfb2JqZWN0KFsnaG9zdCddICsgd29yZHMsICd3aXRoX2tleScpCi0gICAgICAgIHJldHVybiBzZWxmLmRvX3Nob3dfb2JqZWN0KFsnaG9zdCddKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX3Nob3dfc3dpdGNoX2NsdXN0ZXIKLSAgICAjCi0gICAgZGVmIGRvX3Nob3dfc3dpdGNoX2NsdXN0ZXIoc2VsZiwgd29yZHMpOgotICAgICAgICBkYXRhID0gc2VsZi5yZXN0X3NpbXBsZV9yZXF1ZXN0X3RvX2RpY3QoCi0gICAgICAgICAgICAgICAgICAgICdodHRwOi8vJXMvcmVzdC92MS9yZWFsdGltZXN0YXR1cy9uZXR3b3JrL2NsdXN0ZXIvJyAlIHNlbGYuY29udHJvbGxlcikKLQotICAgICAgICBmb3JtYXR0ZWRfZGF0YSA9IFtdCi0gICAgICAgIGZvciAoY2x1c3RlcmlkLCBzd2l0Y2hpZHMpIGluIGRhdGEuaXRlbXMoKToKLSAgICAgICAgICAgIHJvdyA9IHt9Ci0gICAgICAgICAgICByb3dbJ3N3aXRjaGVzJ10gPSBzd2l0Y2hpZHMKLSAgICAgICAgICAgIHJvd1snY2x1c3Rlci1pZCddID0gY2x1c3RlcmlkCi0gICAgICAgICAgICBmb3JtYXR0ZWRfZGF0YS5hcHBlbmQocm93KQotICAgICAgICByZXR1cm4gc2VsZi5kaXNwbGF5X29ial90eXBlX3Jvd3MoJ3N3aXRjaC1jbHVzdGVyJywgZm9ybWF0dGVkX2RhdGEpCi0gICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX3Nob3dfY29udHJvbGxlcl9zdW1tYXJ5Ci0gICAgIwotICAgIGRlZiBkb19zaG93X2NvbnRyb2xsZXJfc3VtbWFyeShzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIGRhdGEgPSBzZWxmLnJlc3Rfc2ltcGxlX3JlcXVlc3RfdG9fZGljdCgKLSAgICAgICAgICAgICAgICAgICAgJ2h0dHA6Ly8lcy9yZXN0L3YxL2NvbnRyb2xsZXIvc3VtbWFyeScgJSBzZWxmLmNvbnRyb2xsZXIpCi0KLSAgICAgICAgIyBYWFggTmVlZCBhIHdheSB0byBzb3J0IHRoZSBkYXRhIGluIGEgd2F5IHRoYXQgbWFrZXMgc2Vuc2UKLSAgICAgICAgZm9yIChrZXksIHZhbHVlKSBpbiBkYXRhLml0ZW1zKCk6Ci0gICAgICAgICAgICB5aWVsZCBrZXkgKyAiOiAgIiArIHN0cih2YWx1ZSkgKyAiXG4iCi0gICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGdldF9zdGF0aXN0aWNzX3R5cGUKLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBnZXRfc3RhdGlzdGljc190eXBlKHN0YXRfdHlwZSk6Ci0gICAgICAgIGZvciBzIGluIFsiZmxvdyIsICJwb3J0IiwgInRhYmxlIiwgImRlc2MiLCAiYWdncmVnYXRlIiwgImZlYXR1cmVzIiwgInRyYWNlIixdOgotICAgICAgICAgICAgaWYgcy5zdGFydHN3aXRoKHN0YXRfdHlwZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHMKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBmaXhfcmVhbHRpbWVfZmxvd3Nfd2lsZGNhcmRfZmllbGRzCi0gICAgIwotICAgIGRlZiBmaXhfcmVhbHRpbWVfZmxvd193aWxkY2FyZF9maWVsZHMoc2VsZiwgaW5fZGF0YSk6Ci0gICAgICAgIGZvciBsIGluIGluX2RhdGE6Ci0gICAgICAgICAgICBpZiAnd2lsZGNhcmRzJyBpbiBsOgotICAgICAgICAgICAgICAgIHdpbGRjYXJkcyA9IGxbJ3dpbGRjYXJkcyddCi0gICAgICAgICAgICAgICAgYml0X2ZpZWxkX21hcCA9IHsKLSAgICAgICAgICAgICAgICAgICAgMCA6ICdpbnB1dFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAxIDogJ2RhdGFMYXllclZpcnR1YWxMYW4nLAotICAgICAgICAgICAgICAgICAgICAyIDogJ2RhdGFMYXllclNvdXJjZScsCi0gICAgICAgICAgICAgICAgICAgIDMgOiAnZGF0YUxheWVyRGVzdGluYXRpb24nLAotICAgICAgICAgICAgICAgICAgICA0IDogJ2RhdGFMYXllclR5cGUnLAotICAgICAgICAgICAgICAgICAgICA1IDogJ25ldHdvcmtQcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgIDYgOiAndHJhbnNwb3J0U291cmNlJywKLSAgICAgICAgICAgICAgICAgICAgNyA6ICd0cmFuc3BvcnREZXN0aW5hdGlvbicsCi0gICAgICAgICAgICAgICAgICAgIDEzIDogJ25ldHdvcmtTb3VyY2UnLAotICAgICAgICAgICAgICAgICAgICAxOSA6ICduZXR3b3JrRGVzdGluYXRpb24nLAotICAgICAgICAgICAgICAgICAgICAyMCA6ICdkYXRhTGF5ZXJWaXJ0dWFsTGFuUHJpb3JpdHlDb2RlUG9pbnQnLAotICAgICAgICAgICAgICAgICAgICAyMSA6ICduZXR3b3JrVHlwZU9mU2VydmljZScsCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKGssIHYpIGluIGJpdF9maWVsZF9tYXAuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgaWYgd2lsZGNhcmRzICYgKDEgPDwgayk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsW3ZdID0gIioiCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZml4X3JlYWx0aW1lX2Zsb3dzCi0gICAgIwotICAgIGRlZiBmaXhfcmVhbHRpbWVfZmxvd3Moc2VsZiwgaW5fZGF0YSk6Ci0gICAgICAgIGlmIG5vdCBpbl9kYXRhOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgZmxhdHRlbiBtYXRjaCBkYXRhCi0gICAgICAgIGZvciBsIGluIGluX2RhdGE6Ci0gICAgICAgICAgICBtYXRjaF9kaWN0ID0gbFsnbWF0Y2gnXQotICAgICAgICAgICAgbC51cGRhdGUobWF0Y2hfZGljdCkKLSAgICAgICAgICAgIGRlbChsWydtYXRjaCddKQotCi0gICAgICAgIHNlbGYuZml4X3JlYWx0aW1lX2Zsb3dfd2lsZGNhcmRfZmllbGRzKGluX2RhdGEpCi0gICAgICAgIHJldHVybiBpbl9kYXRhCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgYWRkX2RwaWRfdG9fZGF0YQotICAgICMKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGFkZF9kcGlkX3RvX2RhdGEoZGF0YSk6Ci0gICAgICAgIGlmIG5vdCB0eXBlKGRhdGEpIGlzIGRpY3Q6ICMgYmFja3dhcmQtY29tcGF0aWJsZQotICAgICAgICAgICAgcmV0dXJuIGRhdGEgCi0gICAgICAgIGZvcm1hdHRlZF9saXN0ID0gW10KLSAgICAgICAgZm9yIChkcGlkLCByb3dzKSBpbiBkYXRhLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiByb3dzICE9IE5vbmU6Ci0gICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByb3dzOgotICAgICAgICAgICAgICAgICAgICByb3dbJ3N3aXRjaCddID0gZHBpZAotICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfbGlzdC5hcHBlbmQocm93KQotICAgICAgICAjIyBUT0RPIC0gQWxleCAtIGhhbmRsZSB0aW1lb3V0cyArIHNvcnRpbmcKLSAgICAgICAgcmV0dXJuIGZvcm1hdHRlZF9saXN0Ci0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZG9fc2hvd19zdGF0aXN0aWNzCi0gICAgIwotICAgICMgTE9PSyEgd2UgY291bGQgZ2V0IHJpZCBvZiBzaG93IHN0YXRpc3RpY3MgYXQgdGhpcyBwb2ludCBhcyBpdCBpcyBhbGwgdW5kZXIKLSAgICAjIHNob3cgc3dpdGNoIQotICAgICMKLSAgICAjIGl0J3MgY29uZnVzaW5nIHRvIHJlbWFwIGl0IG92ZXIgaGVyZS4uLgotICAgICMgd2UgY291bGQgcmVtb3ZlIHNob3cgZmxvdy1lbnRyeSByZWFsdGltZSB0b28gZm9yIG5vdwotICAgICMKLSAgICBkZWYgZG9fc2hvd19zdGF0aXN0aWNzKHNlbGYsIHdvcmRzKToKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA8IDE6Ci0gICAgICAgICAgICByZXR1cm4gIlN5bnRheDogc2hvdyBzdGF0aXN0aWNzIDwgZmxvdyB8IHBvcnQgfCB0YWJsZSB8IGRlc2MgfCBhZ2dyZWdhdGUgfCAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZXMgfCB0cmFjZSA+IDwgU3dpdGNoIERQSUQgfCBTd2l0Y2ggYWxpYXMgfCBhbGwgPiIKLSAgICAgICAgc3RhdF90eXBlID0gc2VsZi5nZXRfc3RhdGlzdGljc190eXBlKHdvcmRzWzBdKQotICAgICAgICBkcGlkID0gTm9uZQotICAgICAgICBpZiBsZW4od29yZHMpID4gMToKLSAgICAgICAgICAgIHdvcmRzWzFdID0gY29udmVydF9hbGlhc190b19vYmplY3Rfa2V5KCJzd2l0Y2giLCB3b3Jkc1sxXSkKLSAgICAgICAgICAgIGRwaWQgPSB3b3Jkc1sxXSAjIExPT0shIEV2ZW50dWFsbHkgb3B0aW9uYWwgc28gd2UgY2FuIHNob3cgYWNyb3NzIHN3aXRjaGVzCi0gICAgICAgICAgICBpZiBub3QgZHBpZCBpbiBvYmplY3RzX3N0YXJ0aW5nX3dpdGgoInN3aXRjaCIsIGRwaWQpIGFuZCBkcGlkICE9ICJhbGwiOiAKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coIk5vIHN3aXRjaCAlcyBmb3VuZCIgJSBkcGlkKQotICAgICAgICBpZiBzdGF0X3R5cGUgPT0gImZsb3ciOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVzdF9zaW1wbGVfcmVxdWVzdF90b19kaWN0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cDovLyVzL3Jlc3QvdjEvcmVhbHRpbWVzdGF0cy9mbG93LyVzLycgJSAoc2VsZi5jb250cm9sbGVyLGRwaWQpKSAgICAgICAgICAgIAotICAgICAgICAgICAgZGF0YSA9IHNlbGYuYWRkX2RwaWRfdG9fZGF0YShkYXRhKSAgICAgICAgICAgIAotICAgICAgICAgICAgZGF0YSA9IHNlbGYuZml4X3JlYWx0aW1lX2Zsb3dzKGRhdGEpICAgICAgICAgICAgCi0KLSAgICAgICAgICAgICMgCi0gICAgICAgICAgICAjIGl0IG1heSBtYWtlIHNlbnNlIHRvIG1vdmUgWydkZXRhaWxzJywgJ2JyaWVmJ10gdHAgc29tZSBzb3J0IG9mCi0gICAgICAgICAgICAjICdzaG93X29iamVjdF9vcHRpb25hbF9mb3JtYXRfa2V5d29yZHMnIGxpc3QKLSAgICAgICAgICAgIGZpZWxkX29yZGVyaW5nID0gImRlZmF1bHQiCi0gICAgICAgICAgICBpZiBsZW4od29yZHMpID09IDM6Ci0gICAgICAgICAgICAgICAgY2hvaWNlcyA9IFt4IGZvciB4IGluIFsiZGV0YWlscyIsICJicmllZiJdIGlmIHguc3RhcnRzd2l0aCh3b3Jkc1syXSldCi0gICAgICAgICAgICAgICAgaWYgbGVuKGNob2ljZXMpICE9IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygic3dpdGNoIGZsb3cgb3B0aW9ucyBhcmUgZWl0aGVyICdkZXRhaWxzJyBvciAnYnJpZWYnIikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBmaWVsZF9vcmRlcmluZyA9IGNob2ljZXNbMF0KLSAgICAgICAgICAgIHRhYmxlX2RhdGEgPSBzZWxmLnBwLmZvcm1hdF90YWJsZShkYXRhLCAicmVhbHRpbWVfZmxvdyIsIGZpZWxkX29yZGVyaW5nKQotICAgICAgICAgICAgcmV0dXJuIHRhYmxlX2RhdGEKLSAgICAgICAgZWxpZiBzdGF0X3R5cGUgPT0gInRyYWNlIjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmRvX3RyYWNlKHdvcmRzKQotICAgICAgICBlbGlmIHdvcmRzWzBdID09ICJzd2l0Y2hlcyI6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5yZXN0X3NpbXBsZV9yZXF1ZXN0X3RvX2RpY3QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHA6Ly8lcy9yZXN0L3YxL2NvbnRyb2xsZXIvc3RhdHMvJXMvJyAlIChzZWxmLmNvbnRyb2xsZXIsIHdvcmRzWzBdKSkKLSAgICAgICAgICAgIHRhYmxlX2RhdGEgPSBzZWxmLnBwLmZvcm1hdF90YWJsZShkYXRhLCAiY29udHJvbGxlcl8iK3dvcmRzWzBdKQotICAgICAgICAgICAgcmV0dXJuIHRhYmxlX2RhdGEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlc3Rfc2ltcGxlX3JlcXVlc3RfdG9fZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cDovLyVzL3Jlc3QvdjEvcmVhbHRpbWVzdGF0cy8lcy8lcy8nICUgKHNlbGYuY29udHJvbGxlciwgc3RhdF90eXBlLCBkcGlkKSkKLSAgICAgICAgICAgIGlmIHN0YXRfdHlwZSA9PSAiZmVhdHVyZXMiOgotICAgICAgICAgICAgICAgIGZvciBkcGlkIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFbZHBpZF0gPSBkYXRhW2RwaWRdWyJwb3J0cyJdCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5hZGRfZHBpZF90b19kYXRhKGRhdGEpCi0gICAgICAgICAgICB0YWJsZV9kYXRhID0gc2VsZi5wcC5mb3JtYXRfdGFibGUoZGF0YSwgInJlYWx0aW1lXyIrc3RhdF90eXBlKQotICAgICAgICAgICAgcmV0dXJuIHRhYmxlX2RhdGEKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBkb19zaG93X3ZlcnNpb24KLSAgICAjCi0gICAgZGVmIGRvX3Nob3dfdmVyc2lvbihzZWxmLCB3b3Jkcyk6Ci0gICAgICAgICMgTE9PSyEgdGhpcyBzaG91bGQgcHJvYmFibHkgY29tZSBmcm9tIHRoZSBjb250cm9sbGVyLCBidXQgZm9yIG5vdwotICAgICAgICAjIHdlIGFzc3VtZSB0aGUgQ0xJL2NvbnRyb2xsZXIgYXJlIGZyb20gdGhlIHNhbWUgYnVpbGQKLSAgICAgICAgdmVyc2lvbl9zdHJpbmcgPSAiU0ROT1MgMS4wIC0gY3VzdG9tIHZlcnNpb24iCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZoID0gb3BlbigiL29wdC9zZG5wbGF0Zm9ybS9yZWxlYXNlIikgCi0gICAgICAgICAgICB2ZXJzaW9uX3N0cmluZyA9IGZoLnJlYWRsaW5lKCkucnN0cmlwKCkKLSAgICAgICAgICAgIGZoLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gdmVyc2lvbl9zdHJpbmcKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBkb19kYXRlCi0gICAgIwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZG9fZGF0ZSh3b3Jkcyk6Ci0gICAgICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyAlWiIsIHRpbWUubG9jYWx0aW1lKCkpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY3Bfc2hvd19sb2dnaW5nCi0gICAgIwotICAgIGRlZiBjcF9zaG93X2xvZ2dpbmcoc2VsZiwgd29yZHMsIHRleHQsIGNvbXBsZXRpb25fY2hhcik6Ci0gICAgICAgIGlmIGxlbih3b3JkcykgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBbInNkbnBsYXRmb3JtIiwgImNhc3NhbmRyYSIsICJjb25zb2xlLWFjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3lzbG9nIiwgImF1dGhsb2ciLCAib3JjaGVzdHJhdGlvbmxvZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIiBdIGlmIHguc3RhcnRzd2l0aCh0ZXh0KV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKCI8Y3I+IikKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBnZW5lcmF0ZV9zdWJwcHJvY2Vzc19vdXRwdXQKLSAgICAjCi0gICAgZGVmIGdlbmVyYXRlX3N1YnByb2Nlc3Nfb3V0cHV0KHNlbGYsIGNtZCk6Ci0gICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc2hlbGw9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZT0xKQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IHByb2Nlc3Muc3Rkb3V0LnJlYWRsaW5lKCkKLSAgICAgICAgICAgIGlmIGxpbmUgIT0gTm9uZSBhbmQgbGluZSAhPSAiIjoKLSAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMKLSAgICBkZWYgaW1wbGVtZW50X3Nob3dfbG9nZ2luZyhzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIGxvZ19maWxlcyA9IHsgInNkbnBsYXRmb3JtIiA6ICJjYXQgL29wdC9zZG5wbGF0Zm9ybS9zZG5wbGF0Zm9ybS9sb2cvc2RucGxhdGZvcm0ubG9nIiwKLSAgICAgICAgICAgICAgICAgICAgICAiY2Fzc2FuZHJhIiA6ICJjYXQgL29wdC9zZG5wbGF0Zm9ybS9kYi9sb2cvc3lzdGVtLmxvZyIsCi0gICAgICAgICAgICAgICAgICAgICAgImNvbnNvbGUtYWNjZXNzIiA6ICJjYXQgL29wdC9zZG5wbGF0Zm9ybS9jb24vbG9nL2FjY2Vzcy5sb2ciLAotICAgICAgICAgICAgICAgICAgICAgICJzeXNsb2ciIDogImNhdCAvdmFyL2xvZy9zeXNsb2ciLAotICAgICAgICAgICAgICAgICAgICAgICJhdXRobG9nIiA6ICJjYXQgL3Zhci9sb2cvYXV0aC5sb2ciLAotICAgICAgICAgICAgICAgICAgICAgICJvcmNoZXN0cmF0aW9ubG9nIiA6ICJjYXQgL3RtcC9uZXR3b3Jrc2VydmljZS5sb2ciLAotICAgICAgICAgICAgICAgICAgICAgICJkbWVzZyIgOiAiZG1lc2ciLAotICAgICAgICAgICAgICAgICAgICAgICJhbGwiIDogIiIgICMgc3BlY2lhbAotICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgaWYgbGVuKHdvcmRzKSA8IDE6Ci0gICAgICAgICAgICB5aWVsZCAiU3ludGF4OiBzaG93IGxvZ2dpbmcgPCAlcyA+ICIgJSAiIHwgIi5qb2luKGxvZ19maWxlcy5rZXlzKCkpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZm9yIChmLCBjbWQpIGluIGxvZ19maWxlcy5pdGVtcygpOgotICAgICAgICAgICAgaWYgKGYuc3RhcnRzd2l0aCh3b3Jkc1swXSkgb3IgImFsbCIuc3RhcnRzd2l0aCh3b3Jkc1swXSkpIGFuZCBmICE9ICJhbGwiOgotICAgICAgICAgICAgICAgIHlpZWxkICIqIio4MCArICJcbiIKLSAgICAgICAgICAgICAgICB5aWVsZCAib3V0cHV0IG9mICVzIGZvciAlc1xuIiAlIChjbWQsIGYpCi0gICAgICAgICAgICAgICAgeWllbGQgIioiKjgwICsgIlxuIgotICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHNlbGYuZ2VuZXJhdGVfc3VicHJvY2Vzc19vdXRwdXQoY21kKToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgaXRlbQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX3Nob3dfdGVjaF9zdXBwb3J0Ci0gICAgIwotICAgIGRlZiBkb19zaG93X3RlY2hfc3VwcG9ydChzZWxmLCB3b3Jkcyk6Ci0KLSAgICAgICAgb2xkZCA9IHNlbGYuZGVidWcKLSAgICAKLSAgICAgICAgdGVjaF9zdXBwb3J0X3RhYmxlID0gW10KLQotICAgICAgICAjIEFkZCB0aGUgdXNlciBjdXN0b21pemVkIGNvbW1hbmQgaW4gdGVjaC1zdXBwb3J0LWNvbmZpZyB0YWJsZQotICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndGVjaC1zdXBwb3J0LWNvbmZpZycpCi0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgIyBuZWVkIGV4cGxpY2l0IHR5cGUgY2FzdGluZyBzdHIoKSB0byBtYWtlIGNvbW1hbmQgaGFuZGxpbmcgd29yawotICAgICAgICAgICAgdGVjaF9zdXBwb3J0X3RhYmxlLmFwcGVuZChbc3RyKGVudHJ5WydjbWQtdHlwZSddKSwgc3RyKGVudHJ5WydjbWQnXSksIE5vbmVdKQotCi0gICAgICAgICMgQWRkIHRoZSBsaXN0IG9mIGNvbW1hbmQgY29uZmlndXJlZCBmb3IgdGhlIGJhc2ljIHN1cHBvcnQKLSAgICAgICAgZm9yIGVudHJ5IGluIHRlY2hfc3VwcG9ydC5nZXRfc2hvd190ZWNoX2NtZF90YWJsZSgpOgotICAgICAgICAgICAgdGVjaF9zdXBwb3J0X3RhYmxlLmFwcGVuZChlbnRyeSkKLQotICAgIAotICAgICAgICBmb3IgZW50cnkgaW4gdGVjaF9zdXBwb3J0X3RhYmxlOgotICAgICAgICAgICAgY21kX3R5cGUgPSBlbnRyeVswXQotICAgICAgICAgICAgY21kID0gZW50cnlbMV0KLSAgICAgICAgICAgIGZlYXR1cmUgPSBlbnRyeVsyXQotICAgIAotICAgICAgICAgICAgIyBJZiBmZWF0dXJlIGlzIG5vbi1udWxsLCB0aGVuIGNoZWNrIGZlYXR1cmUgaXMgZW5hYmxlZCAKLSAgICAgICAgICAgICMgYmVmb3JlIGV4ZWN1dGluZyB0aGUgY29tbWFuZAotICAgICAgICAgICAgaWYgZmVhdHVyZSAhPSBOb25lIGFuZCBzZWxmLmZlYXR1cmVfZW5hYmxlZChmZWF0dXJlKSA9PSBGYWxzZSA6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAKLSAgICAgICAgICAgIGlmIGNtZF90eXBlID09ICdjbGknOgotICAgICAgICAgICAgICAgIHlpZWxkICJcblxuIiArICItIio4MCArICJcbkV4ZWN1dGUgY2xpOiAiICsgY21kICsgIlxuXG4iCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLmdlbmVyYXRlX2NvbW1hbmRfb3V0cHV0KHNlbGYuaGFuZGxlX3NpbmdsZV9saW5lKGNtZCkpOgotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgaXRlbQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgIkZhaWxlZCB0byBleGVjdXRlICVzOiAlc1xuIiAlIChjbWQsIGUpCi0gICAgICAgICAgICBlbGlmIGNtZF90eXBlID09ICdzaGVsbCc6Ci0gICAgICAgICAgICAgICAgeWllbGQgIlxuXG4iICsgIi0iKjgwICsgIlxuRXhlY3V0aW5nIG9zIGNvbW1hbmQ6ICIgKyBjbWQgKyAiXG5cbiIKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHNlbGYuZ2VuZXJhdGVfc3VicHJvY2Vzc19vdXRwdXQoY21kKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW0KLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkICJGYWlsZWQgdG8gcnVuIGNvbW1hbmQgJXM6ICVzXG4iICUgKGNtZCwgZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgeWllbGQgIlVua25vd24gY29tbWFuZCB0eXBlICVzOiAlc1xuIiAlIChjbWRfdHlwZSwgY21kKQotICAgIAotICAgICAgICBzZWxmLmRlYnVnID0gb2xkZAotCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBlbGxfZXNzX21pbnVzX3IKLSAgICAjICBEbyAibHMgLVIiLCByZXR1cmluZyB0aGUgbGlzdCBvZiBmaWxlcyB1bmRlcm5lYXRoICJwcmVmaXgiLgotICAgICMgIFRoZSBpbnRlbmRlZCBleHRlcm5hbCBjYWxsIGlzIAotICAgICMgIGVsbF9lc3NfbWludXNfcihyZXR1cm5lZF9pdGVtcywgIi9vcHQvc2RucGxhdGZvcm0vLi4uIiwgICIiKSwKLSAgICAjICB3aGVyZSB0aGUgcGF0aCBwYXJhbWV0ZXIgaXMgbnVsbCB0byBiZWdpbiB0aGUgd2Fsay4KLSAgICAjCi0gICAgIyAgVGhlIHJldHVybmVkIGl0ZW1zIHdvbid0IGhhdmUgdGhlIG9yaWdpbmFsIHByZWZpeCBpbiB0aGUgaXRlbXMKLSAgICAjCi0gICAgIyAgWFhYOiBUaGVyZSdzIG5vIGJvdW5kaW5nIGZvciB0aGUgcmVjdXJzaXZlIGRlc2NlbnQuCi0gICAgIwotICAgIGRlZiBlbGxfZXNzX21pbnVzX3Ioc2VsZiwgaXRlbXMsIHByZWZpeCwgcGF0aCk6Ci0gICAgICAgIHAgPSBvcy5wYXRoLmpvaW4ocHJlZml4LCBwYXRoKQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHApOgotICAgICAgICAgICAgZm9yIGVudHJ5IGluIG9zLmxpc3RkaXIocCk6Ci0gICAgICAgICAgICAgICAgbmV3X3BhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgZW50cnkpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4ocHJlZml4LCBuZXdfcGF0aCkpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmVsbF9lc3NfbWludXNfcihpdGVtcywgcHJlZml4LCBuZXdfcGF0aCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpdGVtcy5hcHBlbmQob3MucGF0aC5qb2luKHBhdGgsIGVudHJ5KSkKLSAgICAgICAgcmV0dXJuIGl0ZW1zCi0gICAgICAgICAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW1wbGVtZW50X3Nob3dfY29uZmlnX2ZpbGUKLSAgICAjICAnc2hvdyBjb25maWcgZmlsZScgZGlzcGxheXMgdGhlIGxvY2FsIGZpbGVzIHVuZGVyIHNlbGYuc2F2ZWRfY29uZmlnc19kaXJuYW1lCi0gICAgIyAgIGN1cnJlbnRseSAvb3B0L3NkbnBsYXRmb3JtL3J1bi9zYXZlZC1jb25maWdzCi0gICAgIwotICAgIGRlZiBpbXBsZW1lbnRfc2hvd19jb25maWdfZmlsZShzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIGl0ZW1zID0gW10KLSAgICAgICAgc2VsZi5lbGxfZXNzX21pbnVzX3IoaXRlbXMsIHNlbGYuc2F2ZWRfY29uZmlnc19kaXJuYW1lLCAiIikKLQotICAgICAgICBpZiBsZW4od29yZHMpID09IDE6Ci0gICAgICAgICAgICBlbnRyaWVzID0gW10KLSAgICAgICAgICAgIGZvciBpIGluIGl0ZW1zOgotICAgICAgICAgICAgICAgIGNmID0gb3MucGF0aC5qb2luKHNlbGYuc2F2ZWRfY29uZmlnc19kaXJuYW1lLCBpKQotICAgICAgICAgICAgICAgIHQgPSB0aW1lLnN0cmZ0aW1lKCIlWS0lbS0lZC4lSDolTTolUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5sb2NhbHRpbWUob3MucGF0aC5nZXRtdGltZShjZikpKQotICAgICAgICAgICAgICAgIGVudHJpZXMuYXBwZW5kKHsnbmFtZScgOiBpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZXN0YW1wJzogdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlbmd0aCcgOiBzdHIob3MucGF0aC5nZXRzaXplKGNmKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnBwLmZvcm1hdF90YWJsZShlbnRyaWVzLCdjb25maWcnKQotICAgICAgICBlbGlmIGxlbih3b3JkcykgPT0gMjoKLSAgICAgICAgICAgIGlmIHdvcmRzWzFdIGluIGl0ZW1zOgotICAgICAgICAgICAgICAgIHNyY19maWxlID0gc2VsZi5wYXRoX2NvbmNhdChzZWxmLnNhdmVkX2NvbmZpZ3NfZGlybmFtZSwgd29yZHNbMV0pCi0gICAgICAgICAgICAgICAgaWYgc3JjX2ZpbGUgPT0gIiI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiZmlsZSAlcyBjb3VsZCBub3QgYmUgIiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcnByZXRlZCBhcyBhIHZhbGlkIHNvdXJjZSIgJSB3b3Jkc1sxXSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnN0b3JlLmdldF90ZXh0X2Zyb21fdXJsKCJmaWxlOi8vIiArIHNyY19maWxlKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZyh3b3Jkc1sxXSArICI6IiArIHN0cihlKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCIlcyBmaWxlIHVua25vd24iICUgd29yZHNbMV0pCi0gICAgIwotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBpbXBsZW1lbnRfc2hvd19jb25maWcKLSAgICAjCi0gICAgZGVmIGltcGxlbWVudF9zaG93X2NvbmZpZyhzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIG5hbWUgPSBOb25lCi0gICAgICAgIHNob3dfdmVyc2lvbiA9ICJsYXRlc3QiCi0gICAgICAgICMgaGFuZGxlIHNoIGNvbmZpZyBbIDxuYW1lPiBbIGFsbCB8IDx2ZXJzaW9uICM+IF0gXQotCi0gICAgICAgIGlmIGxlbih3b3JkcykgPT0gMToKLSAgICAgICAgICAgIGlmIHdvcmRzWzBdID09ICJhbGwiOgotICAgICAgICAgICAgICAgIHNob3dfdmVyc2lvbiA9ICJhbGwiCi0gICAgICAgICAgICBlbGlmIHdvcmRzWzBdID09ICJmaWxlIjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbXBsZW1lbnRfc2hvd19jb25maWdfZmlsZSh3b3JkcykKLSAgICAgICAgICAgIGVsaWYgd29yZHNbMF0uc3RhcnRzd2l0aCgnY29uZmlnOi8vJyk6Ci0gICAgICAgICAgICAgICAgbmFtZSA9IHdvcmRzWzBdW2xlbignY29uZmlnOi8vJyk6XQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuYW1lID0gd29yZHNbMF0KLSAgICAgICAgZWxpZiBsZW4od29yZHMpID09IDI6Ci0gICAgICAgICAgICBpZiB3b3Jkc1swXSA9PSAnZmlsZSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW1wbGVtZW50X3Nob3dfY29uZmlnX2ZpbGUod29yZHMpCi0gICAgICAgICAgICBuYW1lID0gd29yZHNbMF0KLSAgICAgICAgICAgIHNob3dfdmVyc2lvbiA9IHdvcmRzWzFdCi0gICAgICAgIGVsaWYgbGVuKHdvcmRzKSA9PSAzIGFuZCB3b3Jkc1sxXSA9PSAiZGlmZiI6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5kaWZmX3R3b19jb25maWdzKHdvcmRzWzBdLCB3b3Jkc1syXSkKLSAgICAgICAgZWxpZiBsZW4od29yZHMpID09IDQgYW5kIHdvcmRzWzFdID09ICJkaWZmIjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmRpZmZfdHdvX3ZlcnNpb25zKHdvcmRzWzBdLCB3b3Jkc1syXSwgd29yZHNbM10pCi0KLSAgICAgICAgZGF0YSA9IHNlbGYuc3RvcmUuZ2V0X3VzZXJfZGF0YV90YWJsZShuYW1lLCBzaG93X3ZlcnNpb24pCi0gICAgICAgIGlmIGRhdGEgYW5kIGxlbihkYXRhKSA+IDEgb3IgbmFtZSA9PSBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucHAuZm9ybWF0X3RhYmxlKGRhdGEsJ2NvbmZpZycpCi0gICAgICAgIGVsaWYgZGF0YSBhbmQgbGVuKGRhdGEpID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5zdG9yZS5nZXRfdXNlcl9kYXRhX2ZpbGUoZGF0YVswXVsnZnVsbF9uYW1lJ10pWzotMV0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBkaWZmX3R3b192ZXJzaW9ucwotICAgICMKLSAgICBkZWYgZGlmZl90d29fdmVyc2lvbnMoc2VsZiwgbmFtZSwgdmEsIHZiKToKLSAgICAgICAgdmFfaW5mbyA9IHNlbGYuc3RvcmUuZ2V0X3VzZXJfZGF0YV90YWJsZShuYW1lLCB2YSkKLSAgICAgICAgaWYgbGVuKHZhX2luZm8pID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coIlZlcnNpb24gJXMgbWlzc2luZyBmb3IgJXMiICUgICh2YSwgbmFtZSkpCi0gICAgICAgIHZhX3R4dCA9IHNlbGYuc3RvcmUuZ2V0X3VzZXJfZGF0YV9maWxlKHZhX2luZm9bMF1bJ2Z1bGxfbmFtZSddKQotICAgICAgICB2Yl9pbmZvID0gc2VsZi5zdG9yZS5nZXRfdXNlcl9kYXRhX3RhYmxlKG5hbWUsIHZiKQotICAgICAgICBpZiBsZW4odmJfaW5mbykgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiVmVyc2lvbiAlcyBtaXNzaW5nIGZvciAlcyIgJSAodmIsIG5hbWUpKQotICAgICAgICB2Yl90eHQgPSBzZWxmLnN0b3JlLmdldF91c2VyX2RhdGFfZmlsZSh2Yl9pbmZvWzBdWydmdWxsX25hbWUnXSkKLSAgICAgICAgaW1wb3J0IHRlbXBmaWxlCi0gICAgICAgIGZhID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKLSAgICAgICAgZmEud3JpdGUodmFfdHh0KQotICAgICAgICBmYS5jbG9zZSgpCi0gICAgICAgIGZiID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKLSAgICAgICAgZmIud3JpdGUodmJfdHh0KQotICAgICAgICBmYi5jbG9zZSgpCi0gICAgICAgIGNtZCA9ICdkaWZmICVzICVzICcgJSAoZmEubmFtZSwgZmIubmFtZSkKLSAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzaGVsbD1UcnVlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICAob3V0cHV0LCBzdGRlcnIpID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIG9zLnVubGluayhmYS5uYW1lKQotICAgICAgICBvcy51bmxpbmsoZmIubmFtZSkKLSAgICAgICAgcmV0dXJuIG91dHB1dAotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRpZmZfdHdvX2NvbmZpZ3MKLSAgICAjCi0gICAgZGVmIGRpZmZfdHdvX2NvbmZpZ3Moc2VsZiwgY29uZmlnX2EsIGNvbmZpZ19iKToKLSAgICAgICAgaXRlbXMgPSBzZWxmLnN0b3JlLmdldF91c2VyX2RhdGFfdGFibGUoY29uZmlnX2EsICJsYXRlc3QiKQotICAgICAgICBpZiBsZW4oaXRlbXMpID09IDA6Ci0gICAgICAgICAgICBpZiBjb25maWdfYSA9PSAncnVubmluZy1jb25maWcnOgotICAgICAgICAgICAgICAgIHR4dF9hID0gcnVuX2NvbmZpZy5pbXBsZW1lbnRfc2hvd19ydW5uaW5nX2NvbmZpZyhbXSkgKyAiXG4iCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiJXMgY29uZmlnIG1pc3NpbmciICUgY29uZmlnX2EpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0eHRfYSA9IHNlbGYuc3RvcmUuZ2V0X3VzZXJfZGF0YV9maWxlKGl0ZW1zWzBdWydmdWxsX25hbWUnXSkKLQotICAgICAgICBpdGVtcyA9IHNlbGYuc3RvcmUuZ2V0X3VzZXJfZGF0YV90YWJsZShjb25maWdfYiwgImxhdGVzdCIpCi0gICAgICAgIGlmIGxlbihpdGVtcykgPT0gMDoKLSAgICAgICAgICAgIGlmIGNvbmZpZ19iID09ICdydW5uaW5nLWNvbmZpZyc6Ci0gICAgICAgICAgICAgICAgdHh0X2IgPSBydW5fY29uZmlnLmltcGxlbWVudF9zaG93X3J1bm5pbmdfY29uZmlnKFtdKSArICJcbiIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCIlcyBjb25maWcgbWlzc2luZyIgJSBjb25maWdfYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHR4dF9iID0gc2VsZi5zdG9yZS5nZXRfdXNlcl9kYXRhX2ZpbGUoaXRlbXNbMF1bJ2Z1bGxfbmFtZSddKQotCi0gICAgICAgIGltcG9ydCB0ZW1wZmlsZQotICAgICAgICBmYSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpCi0gICAgICAgIGZhLndyaXRlKHR4dF9hKQotICAgICAgICBmYS5jbG9zZSgpCi0gICAgICAgIGZiID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKLSAgICAgICAgZmIud3JpdGUodHh0X2IpCi0gICAgICAgIGZiLmNsb3NlKCkKLSAgICAgICAgY21kID0gJ2RpZmYgJXMgJXMgJyAlIChmYS5uYW1lLCBmYi5uYW1lKQotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIChvdXRwdXQsIHN0ZGVycikgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICAgICAgb3MudW5saW5rKGZhLm5hbWUpCi0gICAgICAgIG9zLnVubGluayhmYi5uYW1lKQotICAgICAgICByZXR1cm4gb3V0cHV0Ci0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMKLQotICAgIGRlZiBnZXRfaG9zdF9hdHRhY2htZW50X3N3aXRjaF9wb3J0IChzZWxmLCBxdWVyeV9kaWN0KToKLSAgICAgICAgIiIiIAotICAgICAgICBHZXQgYSBob3N0J3MgYXR0YWNobWVudCBwb2ludCBpZiBpdCBpcyBub3QgYWxyZWFkeSBwcm92aWRlZC4KLSAgICAgICAgc2VlIGlmIHRoZSBob3N0IGhhcyBhbiBhdHRhY2htZW50IHBvaW50LCB1c2UgdGhlIHN3aXRjaCBhbmQgcG9ydAotICAgICAgICBvZiB0aGUgYXR0YWNobWVudCBwb2ludCwgaWYgaXRzIGF2YWlsYWJsZQotICAgICAgICAiIiIKLSAgICAgICAgaG9zdCA9IHJlc3RfdG9fbW9kZWwuZ2V0X21vZGVsX2Zyb21fdXJsKCdob3N0JywgcXVlcnlfZGljdCkKLSAgICAgICAgaWYgbGVuKGhvc3QpID09IDA6Ci0gICAgICAgICAgICBwcmludCBzZWxmLmVycm9yX21zZygnQ2FuXCd0IGlkZW50aWZ5IGhvc3QgZGV0YWlsczogJXMnICUgcXVlcnlfZGljdCkKLSAgICAgICAgICAgIHJldHVybiAoRmFsc2UsTm9uZSxOb25lKQotICAgICAgICBhdHRhY2htZW50X3BvaW50cyA9IGhvc3RbMF1bJ2F0dGFjaG1lbnQtcG9pbnRzJ10KLSAgICAgICAgaWYgYXR0YWNobWVudF9wb2ludHMgPT0gTm9uZSBvciBsZW4oYXR0YWNobWVudF9wb2ludHMpID09IDA6Ci0gICAgICAgICAgICBwcmludCBzZWxmLmVycm9yX21zZygnQ2FuXCd0IGlkZW50aWZ5IGF0dGFjaG1lbnQgcG9pbnQgJXMnICUgcXVlcnlfZGljdCkKLSAgICAgICAgICAgIHJldHVybiAoRmFsc2UsTm9uZSxOb25lKQotICAgICAgICBpZiBsZW4oYXR0YWNobWVudF9wb2ludHMpID09IDE6Ci0gICAgICAgICAgICBzcmNfc3cgICAgICA9IGF0dGFjaG1lbnRfcG9pbnRzWzBdWydzd2l0Y2gnXQotICAgICAgICAgICAgc3JjX3N3X3BvcnQgPSBhdHRhY2htZW50X3BvaW50c1swXVsnaW5ncmVzcy1wb3J0J10KLSAgICAgICAgICAgIHJldHVybiAoVHJ1ZSwgc3JjX3N3LCBzcmNfc3dfcG9ydCkKLQotICAgICAgICBpbnRlcmZhY2VfZGljdCA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KCdpbnRlcmZhY2VzJywgJ2lkJykKLSAgICAgICAgc2hvd19saXN0ID0gW10KLSAgICAgICAgZm9yIGFwIGluIGF0dGFjaG1lbnRfcG9pbnRzOgotICAgICAgICAgICAgZHBpZCA9IGFwWydzd2l0Y2gnXQotICAgICAgICAgICAgaW5ncmVzc19wb3J0ID0gYXBbJ2luZ3Jlc3MtcG9ydCddCi0KLSAgICAgICAgICAgICMgYWxpYXMgZm9yIGRwaWQKLSAgICAgICAgICAgIHN3aXRjaF9uYW1lID0gYWxpYXNfbG9va3VwX3dpdGhfZm9yZWlnbl9rZXkoJ3N3aXRjaC1hbGlhcycsIGRwaWQpCi0gICAgICAgICAgICBpZiBub3Qgc3dpdGNoX25hbWU6Ci0gICAgICAgICAgICAgICAgc3dpdGNoX25hbWUgPSBkcGlkCi0gICAgICAgICAgICAjIGludGVyZmFjZSBuYW1lIGZvciBhdHRhY2htZW50IHBvaW50Ci0gICAgICAgICAgICBhcF9wb3J0X2lkID0gZHBpZCArICd8JyArIHN0cihpbmdyZXNzX3BvcnQpCi0gICAgICAgICAgICBpZiBhcF9wb3J0X2lkIGluIGludGVyZmFjZV9kaWN0OgotICAgICAgICAgICAgICAgIHNob3dfbGlzdC5hcHBlbmQoIiVzLyVzIiAlIChzd2l0Y2hfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlX3BvcnRbYXBfcG9ydF9vZF1bMF1bJ3BvcnROYW1lJ10pKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzaG93X2xpc3QuYXBwZW5kKCIlcy9wb3J0ICVzIiAlIChzd2l0Y2hfbmFtZSwgaW5ncmVzc19wb3J0KSkKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coJ3NyYy1ob3N0ICVzOiBtdWx0aXBsZSBhdHRhY2htZW50IHBvaW50czogJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNyY19tYWMsICcsICcuam9pbihzaG93X2xpc3QpKSkKLSAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coJ3JlcnVuLCBhbmQgaWRlbnRpZnkgc3JjLXN3aXRjaCBhbmQgaW50ZXJmYWNlJykKLSAgICAgICAgcmV0dXJuIChGYWxzZSxOb25lLE5vbmUpCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB0ZXN0IHBhY2tldC1pbjogc3dhcCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGF0dHJpYnV0ZXMgCi0gICAgIwotICAgIGRlZiB0ZXN0X3BrdF9pbl9zd2FwX3NyY19kZXN0X2F0dHJpYnV0ZXMoc2VsZiwgcG9zdF9kYXRhKToKLSAgICAgICAgIyBSZW1vdmUgdGhlIHNvdXJjZSBzd2l0Y2ggYW5kIHBvcnQgaWYgbmVlZGVkCi0gICAgICAgIGlmICgic3JjU3dpdGNoRHBpZCIgaW4gcG9zdF9kYXRhKToKLSAgICAgICAgICAgIHBvc3RfZGF0YS5wb3AoInNyY1N3aXRjaERwaWQiKQotICAgICAgICBpZiAoInNyY1N3aXRjaEluUG9ydCIgaW4gcG9zdF9kYXRhKToKLSAgICAgICAgICAgIHBvc3RfZGF0YS5wb3AoInNyY1N3aXRjaEluUG9ydCIpCi0KLSAgICAgICAgIwotICAgICAgICAjIEdldCBkZXN0aW5hdGlvbiBob3N0J3MgYXR0YWNobWVudCBzd2l0Y2gvcG9ydCBpbmZvcm1hdGlvbgotICAgICAgICAjCi0gICAgICAgIChyZXN1bHQsIHNyY19zdywgc3JjX3N3X3BvcnQpID0gc2VsZi5nZXRfaG9zdF9hdHRhY2htZW50X3N3aXRjaF9wb3J0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICdtYWMnIDogcG9zdF9kYXRhWyJkZXN0aW5hdGlvbk1BQ0FkZHJlc3MiXX0pCi0gICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcG9zdF9kYXRhWyJzcmNTd2l0Y2hEcGlkIl0gPSBzcmNfc3cKLSAgICAgICAgcG9zdF9kYXRhWyJzcmNTd2l0Y2hJblBvcnQiXSA9IHNyY19zd19wb3J0Ci0KLSAgICAgICAgIyBTd2FwIHRoZSBtYWNzCi0gICAgICAgIHRlbXAgPSBwb3N0X2RhdGFbInNvdXJjZU1BQ0FkZHJlc3MiXQotICAgICAgICBwb3N0X2RhdGFbInNvdXJjZU1BQ0FkZHJlc3MiXSA9IHBvc3RfZGF0YVsiZGVzdGluYXRpb25NQUNBZGRyZXNzIl0KLSAgICAgICAgcG9zdF9kYXRhWyJkZXN0aW5hdGlvbk1BQ0FkZHJlc3MiXSA9IHRlbXAKLSAgICAgICAgIyBzd2FwIHRoZSBJUCBhZGRyZXNzZXMgaWYgc3BlY2lmaWVkCi0gICAgICAgIHRlbXBTcmMgPSBOb25lCi0gICAgICAgIHRlbXBEc3QgPSBOb25lCi0gICAgICAgIGlmICgic291cmNlSXBBZGRyZXNzIiBpbiBwb3N0X2RhdGEpOgotICAgICAgICAgICAgdGVtcFNyYyA9IHBvc3RfZGF0YVsic291cmNlSXBBZGRyZXNzIl0KLSAgICAgICAgICAgIHBvc3RfZGF0YS5wb3AoInNvdXJjZUlwQWRkcmVzcyIpCi0gICAgICAgIGlmICgiZGVzdGluYXRpb25JcEFkZHJlc3MiIGluIHBvc3RfZGF0YSk6Ci0gICAgICAgICAgICB0ZW1wRHN0ID0gcG9zdF9kYXRhWyJkZXN0aW5hdGlvbklwQWRkcmVzcyJdCi0gICAgICAgICAgICBwb3N0X2RhdGEucG9wKCJkZXN0aW5hdGlvbklwQWRkcmVzcyIpCi0gICAgICAgIGlmICh0ZW1wU3JjIGlzIG5vdCBOb25lKToKLSAgICAgICAgICAgIHBvc3RfZGF0YVsiZGVzdGluYXRpb25JcEFkZHJlc3MiXSA9IHRlbXBTcmMKLSAgICAgICAgaWYgKHRlbXBEc3QgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgcG9zdF9kYXRhWyJzb3VyY2VJcEFkZHJlc3MiXSA9IHRlbXBEc3QKLSAgICAgICAgIyBzd2FwIHRoZSBJUCBwb3J0cyBpZiBzcGVjaWZpZWQKLSAgICAgICAgdGVtcFNyYyA9IE5vbmUKLSAgICAgICAgdGVtcERzdCA9IE5vbmUKLSAgICAgICAgaWYgKCJpcEw0U291cmNlUG9ydCIgaW4gcG9zdF9kYXRhKToKLSAgICAgICAgICAgIHRlbXBTcmMgPSBwb3N0X2RhdGFbImlwTDRTb3VyY2VQb3J0Il0KLSAgICAgICAgICAgIHBvc3RfZGF0YS5wb3AoImlwTDRTb3VyY2VQb3J0IikKLSAgICAgICAgaWYgKCJpcEw0RGVzdGluYXRpb25Qb3J0IiBpbiBwb3N0X2RhdGEpOgotICAgICAgICAgICAgdGVtcERzdCA9IHBvc3RfZGF0YVsiaXBMNERlc3RpbmF0aW9uUG9ydCJdCi0gICAgICAgICAgICBwb3N0X2RhdGEucG9wKCJpcEw0RGVzdGluYXRpb25Qb3J0IikKLSAgICAgICAgaWYgKHRlbXBTcmMgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgcG9zdF9kYXRhWyJpcEw0RGVzdGluYXRpb25Qb3J0Il0gPSB0ZW1wU3JjCi0gICAgICAgIGlmICh0ZW1wRHN0IGlzIG5vdCBOb25lKToKLSAgICAgICAgICAgIHBvc3RfZGF0YVsiaXBMNFNvdXJjZVBvcnQiXSA9IHRlbXBEc3QKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB0ZXN0IHBhY2tldC1pbjogZGlzcGxheSBwYWNrZXQtaW4gcHJvY2Vzc2luZyByZXN1bHQgZm9yIHRlc3QgcGFja2V0LWluCi0gICAgIwotICAgIGRlZiB0ZXN0X3BrdF9pbl9yZXN1bHRfZGlzcGxheShzZWxmLCByZXNwb25zZSk6Ci0gICAgICAgIG91dCA9ICAiXG5SZXN1bHQgb2YgcGFja2V0LWluIHByb2Nlc3NpbmdcbiIKLSAgICAgICAgb3V0ICs9ICgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKQotICAgICAgICBzcmNfdm5zX25hbWUgPSByZXNwb25zZVsnc3JjVk5TTmFtZSddCi0gICAgICAgIGRzdF92bnNfbmFtZSA9IHJlc3BvbnNlWydkZXN0Vk5TTmFtZSddCi0KLSAgICAgICAgaWYgKHJlc3BvbnNlWydleHBsYW5hdGlvbiddID09ICJTb3VyY2Ugc3dpdGNoIG5vdCBmb3VuZCIpOgotICAgICAgICAgICAgb3V0ICs9IHJlc3BvbnNlWydleHBsYW5hdGlvbiddCi0gICAgICAgICAgICByZXR1cm4gb3V0Ci0KLSAgICAgICAgb3V0ICs9ICAiXG5WaXJ0dWFsIFJvdXRpbmcgUHJvY2Vzc2luZyBpdGVyYXRpb25zXG4iCi0gICAgICAgIG91dCArPSAoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKQotICAgICAgICBlcF92cm91dGluZyA9IHJlc3BvbnNlWydleHBQa3RWUm91dGluZyddCi0gICAgICAgIGZvciBlcF92ciBpbiBlcF92cm91dGluZzoKLSAgICAgICAgICAgIHNyY0lmYWNlID0gZXBfdnJbJ3NyY0lmYWNlJ10KLSAgICAgICAgICAgIGRzdElmYWNlID0gZXBfdnJbJ2RzdElmYWNlJ10KLSAgICAgICAgICAgIGFjdGlvbiA9IGVwX3ZyWydhY3Rpb24nXQotICAgICAgICAgICAgb3V0ICs9ICgic3JjIFZOUyBpZmFjZSAgICAgICAgICAgOiAlc1xuIiAlIHNyY0lmYWNlKQotICAgICAgICAgICAgb3V0ICs9ICgiZHN0IFZOUyBpZmFjZSAgICAgICAgICAgOiAlc1xuIiAlIGRzdElmYWNlKQotICAgICAgICAgICAgb3V0ICs9ICgiYWN0aW9uICAgICAgICAgICAgICAgICAgOiAlc1xuIiAlIGFjdGlvbikKLSAgICAgICAgICAgIGlmIGFjdGlvbiA9PSAnRFJPUCc6Ci0gICAgICAgICAgICAgICAgZHJvcFJlYXNvbiA9IGVwX3ZyWydkcm9wUmVhc29uJ10KLSAgICAgICAgICAgICAgICBvdXQgKz0gKCJkcm9wIHJlYXNvbiAgICAgICAgICAgICA6ICVzXG4iICUgZHJvcFJlYXNvbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmV4dEhvcElwID0gZXBfdnJbJ25leHRIb3BJcCddCi0gICAgICAgICAgICAgICAgb3V0ICs9ICgibmV4dCBob3AgSVAgICAgICAgICAgICAgOiAlc1xuIiAlIG5leHRIb3BJcCkKLSAgICAgICAgICAgICAgICBuZXh0SG9wR2F0ZXdheVBvb2wgPSBlcF92clsnbmV4dEhvcEdhdGV3YXlQb29sJ10KLSAgICAgICAgICAgICAgICBpZiAobmV4dEhvcEdhdGV3YXlQb29sICE9IE5vbmUpOgotICAgICAgICAgICAgICAgICAgICBvdXQgKz0gKCJuZXh0IGhvcCBHYXRld2F5IFBvb2wgICA6ICVzXG4iICUgbmV4dEhvcEdhdGV3YXlQb29sKQotICAgICAgICAgICAgb3V0ICs9ICJcbiIKLQotICAgICAgICBpZiAoc3JjX3Zuc19uYW1lID09IE5vbmUpIGFuZCAoZHN0X3Zuc19uYW1lID09IE5vbmUpOgotICAgICAgICAgICAgb3V0ICs9ICJTb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGhvc3RzIGFyZSBub3QgaW4gdGhlIHNhbWUgdm5zIgotICAgICAgICAgICAgcmV0dXJuIG91dAotCi0gICAgICAgIG91dCArPSAoIlN0YXR1cyAgICAgIDogJXNcbiIgJSByZXNwb25zZVsnc3RhdHVzJ10pCi0gICAgICAgIG91dCArPSAoIkV4cGxhbmF0aW9uIDogJXNcbiIgJSByZXNwb25zZVsnZXhwbGFuYXRpb24nXSkKLQotICAgICAgICBvdXQgKz0gICJcblJlc3VsdCBvZiBWaXJ0dWFsIFJvdXRpbmdcbiIKLSAgICAgICAgb3V0ICs9ICgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpCi0gICAgICAgIG91dCArPSAoIlNvdXJjZSBWTlMgIDogJXNcbiIgJSBzcmNfdm5zX25hbWUpCi0gICAgICAgIG91dCArPSAoIkRlc3QuIFZOUyAgIDogJXNcbiIgJSBkc3Rfdm5zX25hbWUpCi0gICAgICAgIG91dCArPSAoIklucHV0IEFDTDpcbiIpCi0gICAgICAgIG91dCArPSAoIiAgSW5wdXQgQUNMIE5hbWUgICAgOiAlc1xuIiAlIHJlc3BvbnNlWydpbnB1dEFjbCddWydhY2xOYW1lJ10pCi0gICAgICAgIG91dCArPSAoIiAgSW5wdXQgQUNMIEVudHJ5ICAgOiAlc1xuIiAlIHJlc3BvbnNlWydpbnB1dEFjbCddWydhY2xFbnRyeSddKQotICAgICAgICBvdXQgKz0gKCIgIElucHV0IEFDTCBBY3Rpb24gIDogJXNcbiIgJSByZXNwb25zZVsnaW5wdXRBY2wnXVsnYWNsUmVzdWx0J10pCi0gICAgICAgIG91dCArPSAoIk91dHB1dCBBQ0w6XG4iKQotICAgICAgICBvdXQgKz0gKCIgIE91dHB1dCBBQ0wgTmFtZSAgIDogJXNcbiIgJSByZXNwb25zZVsnb3V0cHV0QWNsJ11bJ2FjbE5hbWUnXSkKLSAgICAgICAgb3V0ICs9ICgiICBPdXRwdXQgQUNMIEVudHJ5ICA6ICVzXG4iICUgcmVzcG9uc2VbJ291dHB1dEFjbCddWydhY2xFbnRyeSddKQotICAgICAgICBvdXQgKz0gKCIgIE91dHB1dCBBQ0wgQWN0aW9uIDogJXNcbiIgJSByZXNwb25zZVsnb3V0cHV0QWNsJ11bJ2FjbFJlc3VsdCddKQotCi0gICAgICAgIGlmIHJlc3BvbnNlWydleHBQa3RSb3V0ZSddID09IE5vbmU6Ci0gICAgICAgICAgICBvdXQgKz0gIlxuIgotICAgICAgICAgICAgcmV0dXJuIG91dAotCi0gICAgICAgIG91dCArPSAoIlJvdXRpbmcgQWN0aW9uIDogJXNcbiIgJSByZXNwb25zZVsncm91dGluZ0FjdGlvbiddKQotCi0gICAgICAgIG9ial90eXBlX3Nob3dfYWxpYXNfdXBkYXRlKCd0ZXN0LXBrdGluLXJvdXRlJykKLSAgICAgICAgb3V0ICs9ICgnXG5GbG93IFBhdGg6XG4nKQotICAgICAgICBlcF9yb3V0ZSA9IHJlc3BvbnNlWydleHBQa3RSb3V0ZSddCi0gICAgICAgIGZvciBlcF9jbHVzdGVyIGluIGVwX3JvdXRlOgotICAgICAgICAgICAgZXBfY2x1c3Rlcl9wYXRoID0gZXBfY2x1c3RlclsncGF0aCddCi0gICAgICAgICAgICBob3AgPSAxCi0gICAgICAgICAgICByb3V0ZV9kYXRhID0gW10KLSAgICAgICAgICAgIGZvciBlcF9wYXRoIGluIGVwX2NsdXN0ZXJfcGF0aDoKLSAgICAgICAgICAgICAgICBvbmVIb3AgPSB7fQotICAgICAgICAgICAgICAgIG9uZUhvcFsnY2x1c3RlciddID0gZXBfY2x1c3RlclsnY2x1c3Rlck51bSddCi0gICAgICAgICAgICAgICAgb25lSG9wWydob3AnXSA9IGhvcAotICAgICAgICAgICAgICAgIGhvcCArPSAxCi0gICAgICAgICAgICAgICAgb25lSG9wLnVwZGF0ZShlcF9wYXRoKQotICAgICAgICAgICAgICAgIHJvdXRlX2RhdGEuYXBwZW5kKG9uZUhvcCkKLSAgICAgICAgICAgIHJvdXRlX2RhdGEgPSBzZWxmLnBwLmZvcm1hdF90YWJsZShyb3V0ZV9kYXRhLCAndGVzdC1wa3Rpbi1yb3V0ZScpCi0gICAgICAgICAgICBvdXQgKz0gcm91dGVfZGF0YQotICAgICAgICAgICAgb3V0ICs9ICJcbiIKLSAgICAgICAgcmV0dXJuIG91dAotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGltcGxlbWVudF90ZXN0X3BhY2tldF9pbgotICAgICMKLSAgICBkZWYgaW1wbGVtZW50X3Rlc3RfcGFja2V0X2luKHNlbGYsIGRhdGEpOgotICAgICAgICAjIEN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIDx0ZXN0IHBhY2tldC1pbj4gZm9yICJleHBsYWluIHBhY2tldCIgZmVhdHVyZQotICAgICAgICBzZWxmLmRlYnVnX21zZygiSW4gZG9fdGVzdCgpOiBkYXRhPSVzIiAlIChkYXRhKSkKLQotICAgICAgICAjIFJFU1QgQVBJIGV4cGVjdHMgTUFDIG5vdCBob3N0IGFsaWFzZXMKLSAgICAgICAgaWYgbm90ICdzcmMtaG9zdCcgaW4gZGF0YToKLSAgICAgICAgICAgIHByaW50IHNlbGYuZXJyb3JfbXNnKCJNaXNzaW5nIHNyYy1ob3N0IikKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzcmNfbWFjID0gZGF0YVsnc3JjLWhvc3QnXQotCi0gICAgICAgIGlmIG5vdCAnZHN0LWhvc3QnIGluIGRhdGE6Ci0gICAgICAgICAgICBwcmludCBzZWxmLmVycm9yX21zZygiTWlzc2luZyBkc3QtaG9zdCIpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZHN0X21hYyA9IGRhdGFbJ2RzdC1ob3N0J10KLQotICAgICAgICAjIENoZWNrIHRoYXQgc3JjIGFuZCBkZXN0IGhvc3RzIGFyZSBub3QgdGhlIHNhbWUKLSAgICAgICAgaWYgc3JjX21hYyA9PSBkc3RfbWFjOgotICAgICAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coInNvdXJjZSBhbmQgZGVzdGluYXRpb24gaG9zdHMgY2FuIG5vdCBiZSBzYW1lIikKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMKLSAgICAgICAgaWYgJ3NyYy1zd2l0Y2gnIGluIGRhdGE6Ci0gICAgICAgICAgICBzcmNfc3cgICAgICA9IGRhdGFbJ3NyYy1zd2l0Y2gnXQotICAgICAgICAgICAgc3JjX3N3X3BvcnQgPSBkYXRhWydzcmMtc3dpdGNoLXBvcnQnXQotICAgICAgICBlbHNlOgotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIEdldCBob3N0J3MgYXR0YWNobWVudCBzd2l0Y2gvcG9ydCBpbmZvcm1hdGlvbgotICAgICAgICAgICAgIwotICAgICAgICAgICAgKHJlc3VsdCwgc3JjX3N3LCBzcmNfc3dfcG9ydCkgPSBcCi0gICAgICAgICAgICAgICAgc2VsZi5nZXRfaG9zdF9hdHRhY2htZW50X3N3aXRjaF9wb3J0KHsnbWFjJyA6IHNyY19tYWN9KQotICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBwb3N0X2RhdGEgPSB7Ci0gICAgICAgICAgICAic291cmNlTUFDQWRkcmVzcyI6IHNyY19tYWMsICJkZXN0aW5hdGlvbk1BQ0FkZHJlc3MiOiBkc3RfbWFjLAotICAgICAgICAgICAgInNyY1N3aXRjaERwaWQiICAgOiBzcmNfc3csICAic3JjU3dpdGNoSW5Qb3J0IiAgICAgIDogc3JjX3N3X3BvcnQKLSAgICAgICAgfQotCi0gICAgICAgIGlmICd2bGFuJyBpbiBkYXRhOgotICAgICAgICAgICAgcG9zdF9kYXRhWyJ2bGFuSUQiXSA9IGRhdGFbJ3ZsYW4nXQotICAgICAgICBpZiAnZXRoZXItdHlwZScgaW4gZGF0YToKLSAgICAgICAgICAgIHBvc3RfZGF0YVsiZXRoZXJUeXBlIl0gPSBkYXRhWydldGhlci10eXBlJ10KLSAgICAgICAgICAgIGlmIChwb3N0X2RhdGFbJ2V0aGVyVHlwZSddICE9ICIyMDQ4Iik6Ci0gICAgICAgICAgICAgICAgeWllbGQoc2VsZi5lcnJvcl9tc2coIlN1cHBvcnRlZCBldGhlcnR5cGVzOiAyMDQ4IChpcCkiKSkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgJ3ByaW9yaXR5JyBpbiBkYXRhOgotICAgICAgICAgICAgcG9zdF9kYXRhWyJwcmlvcml0eUNvZGUiXSA9IGRhdGFbJ3ByaW9yaXR5J10KLSAgICAgICAgaWYgJ3NyYy1pcC1hZGRyZXNzJyBpbiBkYXRhOgotICAgICAgICAgICAgcG9zdF9kYXRhWyJzb3VyY2VJcEFkZHJlc3MiXSA9IGRhdGFbJ3NyYy1pcC1hZGRyZXNzJ10KLSAgICAgICAgaWYgJ2RzdC1pcC1hZGRyZXNzJyBpbiBkYXRhOgotICAgICAgICAgICAgcG9zdF9kYXRhWyJkZXN0aW5hdGlvbklwQWRkcmVzcyJdID0gZGF0YVsnZHN0LWlwLWFkZHJlc3MnXQotICAgICAgICBpZiAncHJvdG9jb2wnIGluIGRhdGE6Ci0gICAgICAgICAgICBwb3N0X2RhdGFbImlwdjRQcm90b2NvbCJdID0gZGF0YVsncHJvdG9jb2wnXQotICAgICAgICBpZiAndG9zJyBpbiBkYXRhOgotICAgICAgICAgICAgI1VuY29tbWVudCB0aGUgbGluZSBiZWxvdyBvbmNlIHdlIHN1cHBvcnQgdG9zIGluIHRoZSBSRVNUIEFQSQotICAgICAgICAgICAgI3Bvc3RfZGF0YVsidG9zIl0gPSBkYXRhWyd0b3MnXQotICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiAnc3JjLXBvcnQnIGluIGRhdGE6Ci0gICAgICAgICAgICBwb3N0X2RhdGFbImlwTDRTb3VyY2VQb3J0Il0gPSBkYXRhWydzcmMtcG9ydCddCi0gICAgICAgIGlmICdkc3QtcG9ydCcgaW4gZGF0YToKLSAgICAgICAgICAgIHBvc3RfZGF0YVsiaXBMNERlc3RpbmF0aW9uUG9ydCJdID0gZGF0YVsnZHN0LXBvcnQnXQotCi0gICAgICAgIHNlbGYuZGVidWdfbXNnKCJQb3N0IERhdGEgPSAlcyIgJSBwb3N0X2RhdGEpCi0KLSAgICAgICAgdXJsID0gImh0dHA6Ly8lcy9yZXN0L3YxL3JlYWx0aW1ldGVzdC9uZXR3b3JrL2V4cGxhaW4tcGFja2V0IiAlIHNlbGYuY29udHJvbGxlcgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGpyZXNwb25zZSA9IHNlbGYuc3RvcmUucmVzdF9wb3N0X3JlcXVlc3QodXJsLCBwb3N0X2RhdGEpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCB1cmwpCi0gICAgICAgICAgICB5aWVsZChzZWxmLmVycm9yX21zZyhzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykpKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgcmVzcG9uc2UgPSBqc29uLmxvYWRzKGpyZXNwb25zZSkKLSAgICAgICAgc2VsZi5kZWJ1Z19tc2coIlJlc3BvbnNlID0gJXMiICUgcmVzcG9uc2UpCi0KLQotICAgICAgICB5aWVsZCAoIklucHV0IHBhY2tldFxuIikKLSAgICAgICAgeWllbGQgKCItLS0tLS0tLS0tLS1cbiIpCi0gICAgICAgIGV4cGxQa3QgPSByZXNwb25zZVsnZXhwbGFpblBrdFBhcmFtcyddCi0gICAgICAgIHN3aXRjaF9hbGlhcyAgID0gYWxpYXNfbG9va3VwX3dpdGhfZm9yZWlnbl9rZXkoInN3aXRjaC1hbGlhcyIsIGV4cGxQa3RbJ3NyY1N3aXRjaERwaWQnXSkKLSAgICAgICAgc3JjX2hvc3RfYWxpYXMgPSBhbGlhc19sb29rdXBfd2l0aF9mb3JlaWduX2tleSgiaG9zdC1hbGlhcyIsIGV4cGxQa3RbJ3NvdXJjZU1BQ0FkZHJlc3MnXSkKLSAgICAgICAgZHN0X2hvc3RfYWxpYXMgPSBhbGlhc19sb29rdXBfd2l0aF9mb3JlaWduX2tleSgiaG9zdC1hbGlhcyIsIGV4cGxQa3RbJ2Rlc3RpbmF0aW9uTUFDQWRkcmVzcyddKQotCi0gICAgICAgIGlmIChzcmNfaG9zdF9hbGlhcyk6Ci0gICAgICAgICAgICB5aWVsZCAoIlNvdXJjZSBob3N0ICAgICAgICA6ICVzICglcyksIGlwPSVzXG4iICUgCi0gICAgICAgICAgICAgICAgICAgKGV4cGxQa3RbJ3NvdXJjZU1BQ0FkZHJlc3MnXSwgc3JjX2hvc3RfYWxpYXMsIGV4cGxQa3RbJ3NvdXJjZUlwQWRkcmVzcyddKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHlpZWxkICgiU291cmNlIGhvc3QgICAgICAgIDogJXMsIGlwPSVzXG4iICUgKGV4cGxQa3RbJ3NvdXJjZU1BQ0FkZHJlc3MnXSwgZXhwbFBrdFsnc291cmNlSXBBZGRyZXNzJ10pKQotCi0gICAgICAgIGlmIChkc3RfaG9zdF9hbGlhcyk6Ci0gICAgICAgICAgICB5aWVsZCAoIkRlc3RpbmF0aW9uIGhvc3QgICA6ICVzICglcyksIGlwPSVzXG4iICUgCi0gICAgICAgICAgICAgICAgICAgIChleHBsUGt0WydkZXN0aW5hdGlvbk1BQ0FkZHJlc3MnXSwgZHN0X2hvc3RfYWxpYXMsIGV4cGxQa3RbJ2Rlc3RpbmF0aW9uSXBBZGRyZXNzJ10pKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgeWllbGQgIkRlc3RpbmF0aW9uIGhvc3QgICA6ICVzLCBpcD0lc1xuIiAlIChleHBsUGt0WydkZXN0aW5hdGlvbk1BQ0FkZHJlc3MnXSwgZXhwbFBrdFsnZGVzdGluYXRpb25JcEFkZHJlc3MnXSkKLSAgICAgICAgaWYgKGV4cGxQa3RbJ3ZsYW5JRCddID09ICctMScpOgotICAgICAgICAgICAgeWllbGQgIlZMQU4gICAgICAgICAgICAgICA6ICVzIChVbnRhZ2dlZClcbiIgJSBleHBsUGt0Wyd2bGFuSUQnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgeWllbGQgIlZMQU4gICAgICAgICAgICAgICA6ICVzXG4iICUgZXhwbFBrdFsndmxhbklEJ10gICAgICAgIAotICAgICAgICB5aWVsZCAiODAyLjFRIHByaW9yaXR5ICAgIDogJXNcbiIgJSBleHBsUGt0Wydwcmlvcml0eUNvZGUnXQotICAgICAgICB5aWVsZCAiRXRoZXIgdHlwZSAgICAgICAgIDogJXNcbiIgJSBleHBsUGt0WydldGhlclR5cGUnXQotICAgICAgICBpZiAoc3dpdGNoX2FsaWFzKToKLSAgICAgICAgICAgIHlpZWxkICJTb3VyY2Ugc3dpdGNoL3BvcnQgOiAlcyAoJXMpLyVzXG4iICUgKGV4cGxQa3RbJ3NyY1N3aXRjaERwaWQnXSwgc3dpdGNoX2FsaWFzLCBleHBsUGt0WydzcmNTd2l0Y2hJblBvcnQnXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHlpZWxkICJTb3VyY2Ugc3dpdGNoL3BvcnQgOiAlcy8lc1xuIiAlIChleHBsUGt0WydzcmNTd2l0Y2hEcGlkJ10sIGV4cGxQa3RbJ3NyY1N3aXRjaEluUG9ydCddKQotICAgICAgICB5aWVsZCAiUHJvdG9jb2wgICAgICAgICAgIDogJXNcbiIgJSBleHBsUGt0WydpcHY0UHJvdG9jb2wnXQotICAgICAgICB5aWVsZCAiTDQgc291cmNlIHBvcnQgICAgIDogJXNcbiIgJSBleHBsUGt0WydpcEw0U291cmNlUG9ydCddCi0gICAgICAgIHlpZWxkICJMNCBkZXN0aW5hdGlvbiBwb3J0OiAlc1xuIiAlIGV4cGxQa3RbJ2lwTDREZXN0aW5hdGlvblBvcnQnXSAgICAgICAgICAgICAgICAKLQotICAgICAgICB5aWVsZCgiXG5Gb3J3YXJkIHBhdGg6IikKLSAgICAgICAgeWllbGQoIj09PT09PT09PT09PT1cbiIpCi0gICAgICAgIHlpZWxkKHNlbGYudGVzdF9wa3RfaW5fcmVzdWx0X2Rpc3BsYXkocmVzcG9uc2UpKQotCi0gICAgICAgICMgTm93IHNlbmQgdGhlIHJldmVyc2UgdGVzdCBwYWNrZXQKLSAgICAgICAgc2VsZi50ZXN0X3BrdF9pbl9zd2FwX3NyY19kZXN0X2F0dHJpYnV0ZXMocG9zdF9kYXRhKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBqcmVzcG9uc2UgPSBzZWxmLnN0b3JlLnJlc3RfcG9zdF9yZXF1ZXN0KHVybCwgcG9zdF9kYXRhKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSwgdXJsKQotICAgICAgICAgICAgeWllbGQoc2VsZi5lcnJvcl9tc2coc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpKSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHJlc3BvbnNlID0ganNvbi5sb2FkcyhqcmVzcG9uc2UpCi0gICAgICAgIHNlbGYuZGVidWdfbXNnKCJSZXNwb25zZSA9ICVzIiAlIHJlc3BvbnNlKQotICAgICAgICB5aWVsZCgiXG5SZXZlcnNlIHBhdGg6IikKLSAgICAgICAgeWllbGQoIj09PT09PT09PT09PT1cbiIpCi0gICAgICAgIHlpZWxkKHNlbGYudGVzdF9wa3RfaW5fcmVzdWx0X2Rpc3BsYXkocmVzcG9uc2UpKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIAotICAgIGRlZiBpbXBsZW1lbnRfdGVzdF9wYXRoKHNlbGYsIGRhdGEpOgotCi0gICAgICAgICMgY29tcHV0ZSBzb3VyY2UKLSAgICAgICAgIwotICAgICAgICBpZiAnc3JjLXN3aXRjaCcgaW4gZGF0YToKLSAgICAgICAgICAgIHNyY19zdyAgICAgID0gZGF0YVsnc3JjLXN3aXRjaCddCi0gICAgICAgICAgICBzcmNfc3dfcG9ydCA9IGRhdGFbJ3NyYy1zd2l0Y2gtcG9ydCddCi0gICAgICAgIGVsaWYgJ3NyYy1ob3N0JyBpbiBkYXRhOgotICAgICAgICAgICAgKHJlc3VsdCwgc3JjX3N3LCBzcmNfc3dfcG9ydCkgPSBcCi0gICAgICAgICAgICAgICAgc2VsZi5nZXRfaG9zdF9hdHRhY2htZW50X3N3aXRjaF9wb3J0KHsgJ21hYycgOiBkYXRhWydzcmMtaG9zdCddfSkKLSAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGVsaWYgJ3NyYy1pcCcgaW4gZGF0YToKLSAgICAgICAgICAgICMgbG9vayB1cCB0aGUgaXAgaW4gdGhlIGRldmljZSBhcGkKLSAgICAgICAgICAgIChyZXN1bHQsIHNyY19zdywgc3JjX3N3X3BvcnQpID0gXAotICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2hvc3RfYXR0YWNobWVudF9zd2l0Y2hfcG9ydCh7ICdpcHY0JyA6IGRhdGFbJ3NyYy1pcCddfSkKLSAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coJ05vIHNvdXJjZSBhdHRhY2htZW50IHBvaW50IGluIHJlcXVlc3QnKQotCi0gICAgICAgICMgY29tcHV0ZSBkZXN0Ci0gICAgICAgIGlmICdkc3Qtc3dpdGNoJyBpbiBkYXRhOgotICAgICAgICAgICAgZHN0X3N3ICAgICAgPSBkYXRhWydkc3Qtc3dpdGNoJ10KLSAgICAgICAgICAgIGRzdF9zd19wb3J0ID0gZGF0YVsnZHN0LXN3aXRjaC1wb3J0J10KLSAgICAgICAgZWxpZiAnZHN0LWhvc3QnIGluIGRhdGE6Ci0gICAgICAgICAgICAocmVzdWx0LCBkc3Rfc3csIGRzdF9zd19wb3J0KSA9IFwKLSAgICAgICAgICAgICAgICBzZWxmLmdldF9ob3N0X2F0dGFjaG1lbnRfc3dpdGNoX3BvcnQoeyAnbWFjJyA6IGRhdGFbJ2RzdC1ob3N0J119KQotICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxpZiAnZHN0LWlwJyBpbiBkYXRhOgotICAgICAgICAgICAgIyBsb29rIHVwIHRoZSBpcCBpbiB0aGUgZGV2aWNlIGFwaQotICAgICAgICAgICAgKHJlc3VsdCwgZHN0X3N3LCBkc3Rfc3dfcG9ydCkgPSBcCi0gICAgICAgICAgICAgICAgc2VsZi5nZXRfaG9zdF9hdHRhY2htZW50X3N3aXRjaF9wb3J0KHsgJ2lwdjQnIDogZGF0YVsnZHN0LWlwJ119KQotICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygnTm8gZGVzdCBhdHRhY2htZW50IHBvaW50IGluIHJlcXVlc3QnKQotCi0gICAgICAgIHVybCA9ICJodHRwOi8vJXMvcmVzdC92MS9yZWFsdGltZXRlc3QvbmV0d29yay9wYXRoIiAlIHNlbGYuY29udHJvbGxlcgotICAgICAgICByZXF1ZXN0ID0gewotICAgICAgICAgICAgICAgICAgICAnc3JjLXN3aXRjaCcgICAgICA6IHNyY19zdywKLSAgICAgICAgICAgICAgICAgICAgJ3NyYy1zd2l0Y2gtcG9ydCcgOiBzcmNfc3dfcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgJ2RzdC1zd2l0Y2gnICAgICAgOiBkc3Rfc3csCi0gICAgICAgICAgICAgICAgICAgICdkc3Qtc3dpdGNoLXBvcnQnIDogZHN0X3N3X3BvcnQsCi0gICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnN0b3JlLnJlc3RfcG9zdF9yZXF1ZXN0KHVybCwgcmVxdWVzdCkKLSAgICAgICAgICAgIHNlbGYuZGVidWdfbXNnKCJSZXNwb25zZSA9ICVzIiAlIHJlc3BvbnNlKQotICAgICAgICAgICAgaWYgcmVzcG9uc2UgIT0gJyc6Ci0gICAgICAgICAgICAgICAgY29tbWFuZC5xdWVyeV9yZXN1bHQgPSBqc29uLmxvYWRzKHJlc3BvbnNlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb21tYW5kLnF1ZXJ5X3Jlc3VsdCA9IE5vbmUKLQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSwgdXJsKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKSkKLQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjCi0gICAgZGVmIGNwX2hlbHAoc2VsZiwgd29yZHMsIHRleHQsIGNvbXBsZXRpb25fY2hhcik6Ci0gICAgICAgICIiIgotICAgICAgICBDb21wbGV0aW9uIGZvciB0aGUgaGVscCBjb21tYW5kIG11c3QgYmUgZG9uZSB1c2luZyB0aGUgY29sbGVjdGlvbgotICAgICAgICBvZiBjb21tYW5kIGRlc2NyaXB0aW9uczsgaWU6IGhlbHAgdXNlcyB0aGUgY29tbWFuZCBkZXNjcmlwdGlvbnMKLSAgICAgICAgdG8gY29tcGxldGUgdGhlIGhlbHAgY29tbWFuZHMuCi0gICAgICAgICIiIgotICAgICAgICBpZiBjb21wbGV0aW9uX2NoYXIgPT0gb3JkKCc/Jyk6Ci0gICAgICAgICAgICBpZiBsZW4od29yZHMpID4gMToKLSAgICAgICAgICAgICAgICBjb21tYW5kLmRvX2NvbW1hbmRfY29tcGxldGlvbl9oZWxwKHdvcmRzWzE6XSwgdGV4dCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5oZWxwX3NwbGFzaChbXSwgdGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBsZW4od29yZHMpID09IDE6Ci0gICAgICAgICAgICBpdGVtcyA9IHNlbGYuY29tbWFuZHNfZm9yX2N1cnJlbnRfbW9kZV9zdGFydGluZ193aXRoKHRleHQpCi0gICAgICAgICAgICByZXR1cm4gdXRpZi5hZGRfZGVsaW0oaXRlbXMsICcgJykKLSAgICAgICAgZWxzZTogICAKLSAgICAgICAgICAgIHJldHVybiBjb21tYW5kLmRvX2NvbW1hbmRfY29tcGxldGlvbih3b3Jkc1sxOl0sIHRleHQpCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjb21tYW5kX3Nob3J0X2hlbHAKLSAgICAjICBBc3NvY2lhdGUgc2hvcnQgaGVscCBzdHJpbmdzIHdpdGgga25vd24gY29tbWFuZHMKLSAgICAjICBUaGVzZSBvdWdodCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIENPTU1BTkRfREVTQ1JJUFRJT05zLAotICAgICMgIGJ1dCBzaW5jZSBub3QgYWxsIGNvbW1hbmQgdXNlIHRoYXQgbWVjaGFuaXNtIHlldCwgcHJvdmlkZQotICAgICMgIHRoZXNlIHNob3J0IGRlc2NyaXB0aW9ucyBoZXJlLgotICAgICMKLSAgICBjb21tYW5kX3Nob3J0X2hlbHAgPSB7Ci0gICAgICAgICdhY2Nlc3MtbGlzdCcgICAgOiAnRGVmaW5lIGFjY2Vzcy1saXN0JywKLSAgICAgICAgJ2FjY2Vzcy1ncm91cCcgICA6ICdDb25maWd1cmUgYWNjZXNzLWxpc3QgdG8gaW50ZXJmYWNlIGFzc29jaWF0aW9uJywKLSAgICAgICAgJ2Jvb3QnICAgICAgICAgICA6ICJDb25maWd1cmUgYm9vdCBjb25maWd1cmF0aW9uIiwKLSAgICAgICAgJ2Nsb2NrJyAgICAgICAgICA6ICdDb25maWd1cmUgdGltZXpvbmUgb3Igc2V0IGNsb2NrJywKLSAgICAgICAgJ2NsZWFyJyAgICAgICAgICA6ICdSZXNldCBjb3VudGVycycsCi0gICAgICAgICdjb25uZWN0JyAgICAgICAgOiAiQ29ubmVjdCB0byBhIGNvbnRyb2xsZXIncyBSRVNUIEFQSSB2aWEgaXBbOnBvcnRdIiwKLSAgICAgICAgJ2RhdGUnICAgICAgICAgICA6ICdEaXNwbGF5IGN1cnJlbnQgZGF0ZSBhbmQgdGltZScsCi0gICAgICAgICdkZWJ1ZycgICAgICAgICAgOiAnRW50ZXIgdmFyaW91cyBkZWJ1ZyBtb2RlcycsCi0gICAgICAgICdlY2hvJyAgICAgICAgICAgOiAnRWNobyByZW1haW5pbmcgYXJndW1lbnRzJywKLSAgICAgICAgJ2VuYWJsZScgICAgICAgICA6ICdNb3ZlIHRvIGVuYWJsZSBtb2RlJywKLSAgICAgICAgJ2V4aXQnICAgICAgICAgICA6ICdFeGl0IGN1cnJlbnQgbW9kZScsCi0gICAgICAgICdmZWF0dXJlJyAgICAgICAgOiAnRW5hYmxlIG9yIGRpc2FibGUgZmVhdHVyZXMnLAotICAgICAgICAnZmlyZXdhbGwnICAgICAgIDogJ0VuYWJsZSBjb250cm9sbGVyIGludGVyZmFjZXMgYWNscycsCi0gICAgICAgICdoZWxwJyAgICAgICAgICAgOiAnSGVscCBvbiBjb21tYW5kcyBvciB0b3BpY3MnLAotICAgICAgICAnaGlzdG9yeScgICAgICAgIDogJ0Rpc3BsYXkgaGlzdG9yeSBvZiBjb21tYW5kcycsCi0gICAgICAgICdpcCcgICAgICAgICAgICAgOiAnQ29uZmlndXJlIHZhcmlvdXMgY29udHJvbGxlciBub2RlIGlwIHZhbHVlcycsCi0gICAgICAgICdsb2dvdXQnICAgICAgICAgOiAnRXhpdCBmcm9tIGNsaScsCi0gICAgICAgICdsb2dnaW5nJyAgICAgICAgOiAnQ29uZmlndXJlIGxvZ2dpbmcvc3lzbG9nJywKLSAgICAgICAgJ250cCcgICAgICAgICAgICA6ICdDb25maWd1cmUgbnRwJywKLSAgICAgICAgJ3BpbmcnICAgICAgICAgICA6ICdQaW5nIHJlcXVlc3QgZnJvbSBjb250cm9sbGVyIHRvIHN3aXRjaCBvciBpcCBhZGRyZXNzJywKLSAgICAgICAgJ3Nob3cnICAgICAgICAgICA6ICdEaXNwbGF5IGNvbmZpZ3VyYXRpb24gb3Igc2V0dGluZ3MnLAotICAgICAgICAndGVzdCcgICAgICAgICAgIDogJ1Rlc3QgdmFyaW91cyBiZWhhdmlvcnMnLAotICAgICAgICAndHJhY2UnICAgICAgICAgIDogJ1RyYWNlIHZhcmlvdXMgc3RyZWFtcycsCi0gICAgICAgICd0cmFjZXJvdXRlJyAgICAgOiAnVHJhY2Vyb3V0ZSBmcm9tIGNvbnRyb2xsZXIgdG8gc3dpdGNoIG9yIGlwIGFkZHJlc3MnLAotICAgICAgICAnY29uZmlndXJlJyAgICAgIDogJ0VudGVyIGNvbmZpZ3VyYXRpb24gbW9kZScsCi0gICAgICAgICdyZWxvYWQnICAgICAgICAgOiAnUmVib290IGNvbnRyb2xsZXIsIHJlbG9hZCBjb25maWd1cmF0aW9uJywKLSAgICAgICAgJ3dyaXRlJyAgICAgICAgICA6ICdXcml0ZSBjb25maWd1cmFpb24nLAotICAgICAgICAnbm8nICAgICAgICAgICAgIDogJ0RlbGV0ZSBvciBkaXNhYmxlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycycsCi0gICAgICAgICd2bnMtZGVmaW5pdGlvbicgOiAnRW50ZXIgdm5zLWRlZmluaXRvbiBzdWJtb2RlLCBkZXNjcmliZSBtZW1iZXJzaGlwJywKLSAgICAgICAgJ3ZucycgICAgICAgICAgICA6ICdFbnRlciB2bnMgc3VibW9kZSwgbWFuYWdlIGFjY2VzcyBsaXN0cycsCi0gICAgICAgICdjb3B5JyAgICAgICAgICAgOiAnQ29weSBjb25maWd1cmF0aW9ucycsCi0gICAgICAgICdzd2l0Y2h0bycgICAgICAgOiAnU3dpdGNoIHRvIGFub3RoZXIgdm5zIGRlZmluaXRpb24nLAotICAgICAgICAnaW50ZXJmYWNlLXJ1bGUnIDogJ1ZOUyBNZW1iZXJzaGlwIHJ1bGUnLAotICAgICAgICAnZW5kJyAgICAgICAgICAgIDogJ0VuZCBhbGwgbmVzdGVkIGNvbmZpZ3VyYXRpb24gbW9kZXMnLAotICAgICAgICAnaW50ZXJmYWNlJyAgICAgIDogJ0VudGVyIGludGVyZmFjZSBzdWJtb2RlJywKLSAgICAgICAgJ3dhdGNoJyAgICAgICAgICA6ICdJdGVyYXRlIGluZGljYXRlZCBjb21tYW5kIGRpc3BsYXlpbmcgcmVzdWx0cycsCi0gICAgfQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIG9ial90eXBlX3Nob3J0X2hlbHAKLSAgICAjCi0gICAgb2JqX3R5cGVfc2hvcnRfaGVscCA9IHsKLSAgICAgICAgJ2NvbnRyb2xsZXItbm9kZScgICAgICAgICAgIDogJ0NvbmZpZ3VyZSBzcGVjaWZpYyBjb250cm9sbGVyIG5vZGVzJywKLSAgICAgICAgJ2hvc3QnICAgICAgICAgICAgICAgICAgICAgIDogJ0NvbmZpZ3VyZSBob3N0IGRldGFpbHMnLAotICAgICAgICAnc3RhdGQtY29uZmlnJyAgICAgICAgICAgICAgOiAnU3RhdGQgQ29uZmlndXJhdGlvbicsCi0gICAgICAgICdzdGF0ZHJvcGQtY29uZmlnJyAgICAgICAgICA6ICdTdGF0IGRyb3BkIGNvbmZpZ3VyYXRpb24nLAotICAgICAgICAnc3RhdGRyb3BkLXByb2dyZXNzLWluZm8nICAgOiAnU3RhdCBkcm9wZCBwcm9ncmVzcyBjb25maWd1cmF0aW9uJywKLSAgICAgICAgJ3N3aXRjaCcgICAgICAgICAgICAgICAgICAgIDogJ1N3aXRjaCBDb25maWd1cmF0aW9uJywKLQotICAgICAgICAjIC0tIGRlYnVnIG9ubHkgdGFibGVzCi0gICAgICAgICd2bnMtYWNjZXNzLWxpc3QnICAgICAgICAgICA6ICdWTlMgQWNjZXNzIExpc3Qgb2JqZWN0JywKLSAgICAgICAgJ3Zucy1hY2Nlc3MtbGlzdC1lbnRyeScgICAgIDogJ1ZOUyBBY2Nlc3MgTGlzdCBFbnRyeSBvYmplY3QnLAotICAgICAgICAndm5zLWludGVyZmFjZScgICAgICAgICAgICAgOiAnVk5TIEludGVyZmFjZSBvYmplY3QnLAotICAgICAgICAndm5zLWludGVyZmFjZS1hY2Nlc3MtbGlzdCcgOiAnVk5TIEludGVyZmFjZSBBY2Nlc3MgTGlzdCBvYmplY3QnLAotICAgICAgICAndm5zLWludGVyZmFjZS1ydWxlJyAgICAgICAgOiAnVk5TIEludGVyZmFjZSBSdWxlIG9iamVjdCcsCi0gICAgICAgICdob3N0LWFsaWFzJyAgICAgICAgICAgICAgICA6ICdIb3N0IEFsaWFzIG9iamVjdCcsCi0gICAgICAgICdwb3J0LWFsaWFzJyAgICAgICAgICAgICAgICA6ICdQb3J0IEFsaWFzIG9iamVjdCcsCi0gICAgICAgICdzd2l0Y2gtYWxpYXMnICAgICAgICAgICAgICA6ICdTd2l0Y2ggQWxpYXMgb2JqZWN0JywKLSAgICB9Ci0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaGVscF9zcGxhc2gKLSAgICAjCi0gICAgZGVmIGhlbHBfc3BsYXNoKHNlbGYsIHdvcmRzLCB0ZXh0KToKLSAgICAgICAgcmV0ID0gIiIKLSAgICAgICAgaWYgbm90IHdvcmRzOgotICAgICAgICAgICAgaWYgdGV4dCA9PSAiIjoKLSAgICAgICAgICAgICAgICByZXQgKz0gIkZvciBoZWxwIG9uIHNwZWNpZmljIGNvbW1hbmRzIHR5cGUgaGVscCA8dG9waWM+XG4iCi0KLSAgICAgICAgICAgIGNvdW50ID0gMAotICAgICAgICAgICAgbG9uZ2VzdF9jb21tYW5kID0gMAotICAgICAgICAgICAgIyB0aGlzIHN1Ym1vZGUgY29tbWFuZHMKLSAgICAgICAgICAgIHNfcmV0ID0gIiIKLSAgICAgICAgICAgIG1vZGUgPSBzZWxmLmN1cnJlbnRfbW9kZSgpCi0gICAgICAgICAgICBuZXN0ZWRfbW9kZV9jb21tYW5kcyA9IFtzZWxmLnRpdGxlX29mKHgpIGZvciB4IGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmRfbmVzdGVkX2RpY3QuZ2V0KG1vZGUsIFtdKV0KLSAgICAgICAgICAgIHBvc3NpYmxlX2NvbW1hbmRzID0gW3NlbGYudGl0bGVfb2YoeCkgZm9yIHggaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZF9kaWN0LmdldChtb2RlLCBbXSkgXSArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkX21vZGVfY29tbWFuZHMKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb21tYW5kcyA9IHNlbGYuY29tbWFuZHNfZmVhdHVyZV9lbmFibGVkKHBvc3NpYmxlX2NvbW1hbmRzKQotICAgICAgICAgICAgc3VibW9kZV9jb21tYW5kcyA9IHNvcnRlZCh1dGlmLnVuaXF1ZV9saXN0X2Zyb21fbGlzdChhdmFpbGFibGVfY29tbWFuZHMpKQotICAgICAgICAgICAgaWYgbGVuKHN1Ym1vZGVfY29tbWFuZHMpOgotICAgICAgICAgICAgICAgIGxvbmdlc3RfY29tbWFuZCA9IGxlbihtYXgoc3VibW9kZV9jb21tYW5kcywga2V5PWxlbikpCi0gICAgICAgICAgICBmb3IgaSBpbiBzdWJtb2RlX2NvbW1hbmRzOgotICAgICAgICAgICAgICAgIGlmIG5vdCBpLnN0YXJ0c3dpdGgodGV4dCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgY291bnQgKz0gMQotICAgICAgICAgICAgICAgIHNob3J0X2hlbHAgPSBjb21tYW5kLmdldF9jb21tYW5kX3Nob3J0X2hlbHAoaSkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2hvcnRfaGVscDoKLSAgICAgICAgICAgICAgICAgICAgc2hvcnRfaGVscCA9IHNlbGYuY29tbWFuZF9zaG9ydF9oZWxwLmdldChpLCBOb25lKQotICAgICAgICAgICAgICAgIGlmIHNob3J0X2hlbHA6Ci0gICAgICAgICAgICAgICAgICAgIHNfcmV0ICs9ICIgICVzJXMlc1xuIiAlIChpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAnICogKGxvbmdlc3RfY29tbWFuZCAtIGxlbihpKSArIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRfaGVscCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzX3JldCArPSAiICAlc1xuIiAlIGkKLQotICAgICAgICAgICAgIyBjb21tYW5kcwotICAgICAgICAgICAgY19yZXQgPSAiIgotICAgICAgICAgICAgdXBwZXJfY29tbWFuZHMgPSBbeCBmb3IgeCBpbiBzZWxmLmNvbW1hbmRzX2Zvcl9jdXJyZW50X21vZGVfc3RhcnRpbmdfd2l0aCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgeCBpbiBzdWJtb2RlX2NvbW1hbmRzXQotICAgICAgICAgICAgY29tbWFuZHMgPSBzb3J0ZWQodXBwZXJfY29tbWFuZHMpCi0gICAgICAgICAgICBpZiBsZW4oY29tbWFuZHMpOgotICAgICAgICAgICAgICAgIGxvbmdlc3RfY29tbWFuZCA9IG1heChbbGVuKHgpIGZvciB4IGluIGNvbW1hbmRzXSArIFtsb25nZXN0X2NvbW1hbmRdKQotICAgICAgICAgICAgZm9yIGkgaW4gY29tbWFuZHM6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGkuc3RhcnRzd2l0aCh0ZXh0KToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBjb3VudCArPSAxCi0gICAgICAgICAgICAgICAgc2hvcnRfaGVscCA9IGNvbW1hbmQuZ2V0X2NvbW1hbmRfc2hvcnRfaGVscChpKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzaG9ydF9oZWxwOgotICAgICAgICAgICAgICAgICAgICBzaG9ydF9oZWxwID0gc2VsZi5jb21tYW5kX3Nob3J0X2hlbHAuZ2V0KGksIE5vbmUpCi0gICAgICAgICAgICAgICAgaWYgc2hvcnRfaGVscDoKLSAgICAgICAgICAgICAgICAgICAgY19yZXQgKz0gIiAgJXMlcyVzXG4iICUgKGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICcgKiAobG9uZ2VzdF9jb21tYW5kIC0gbGVuKGkpICsgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydF9oZWxwKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNfcmV0ICs9ICIgICVzXG4iICUgaQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgIyBvYmplY3RzCi0gICAgICAgICAgICBvX3JldCA9ICIiCi0gICAgICAgICAgICBpZiBzZWxmLmluX2NvbmZpZ19tb2RlKCk6Ci0gICAgICAgICAgICAgICAgb2JqX3R5cGVzID0gc29ydGVkKHNlbGYub2JqX3R5cGVzX2Zvcl9jb25maWdfbW9kZV9zdGFydGluZ193aXRoKCkpCi0gICAgICAgICAgICAgICAgaWYgbGVuKG9ial90eXBlcykgPiAwOgotICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBvYmpfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb25nZXN0X2NvbW1hbmQgPSBtYXgoW2xlbih4KSBmb3IgeCBpbiBjb21tYW5kc10gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb25nZXN0X2NvbW1hbmRdKQotICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBvYmpfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpIGluIGNvbW1hbmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpLnN0YXJ0c3dpdGgodGV4dCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2hlbHAgPSBzZWxmLm9ial90eXBlX3Nob3J0X2hlbHAuZ2V0KGksIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2hvcnRfaGVscDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19yZXQgKz0gIiAgJXMlcyVzXG4iICUgKGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgJyAqIChsb25nZXN0X2NvbW1hbmQgLSBsZW4oaSkgKyAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRfaGVscCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX3JldCArPSAiICAlc1xuIiAlIGkKLQotICAgICAgICAgICAgIyBmaWVsZHMKLSAgICAgICAgICAgIGZfcmV0ID0gIiIKLSAgICAgICAgICAgIGlmIHNlbGYuaW5fY29uZmlnX3N1Ym1vZGUoKToKLSAgICAgICAgICAgICAgICAjIHRyeSB0byBnZXQgYm90aCB0aGUgZmllbGRzIGFuZCB0aGUgY29tbWFuZHMgdG8gbGluZSB1cAotICAgICAgICAgICAgICAgIGxvbmdlc3RfZmllbGQgPSBsb25nZXN0X2NvbW1hbmQKLSAgICAgICAgICAgICAgICBmb3IgaSBpbiBzZWxmLmZpZWxkc19mb3JfY3VycmVudF9zdWJtb2RlX3N0YXJ0aW5nX3dpdGgoKToKLSAgICAgICAgICAgICAgICAgICAgaWYgaS5zdGFydHN3aXRoKHRleHQpOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ2VzdF9maWVsZCA9IG1heChsb25nZXN0X2ZpZWxkLCBsZW4oaSkpCi0gCi0gICAgICAgICAgICAgICAgZl9jb3VudCA9IDAKLSAgICAgICAgICAgICAgICAjIExPT0shIGNvdWxkIGJlIGdldHRpbmcgdGhlIGhlbHAgdGV4dCBmb3IgZWFjaCBvZiB0aGVzZS4uLgotICAgICAgICAgICAgICAgIGZvciBpIGluIHNvcnRlZChzZWxmLmZpZWxkc19mb3JfY3VycmVudF9zdWJtb2RlX3N0YXJ0aW5nX3dpdGgoKSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpLnN0YXJ0c3dpdGgodGV4dCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxCi0gICAgICAgICAgICAgICAgICAgIGZpZWxkX2luZm8gPSBtaS5vYmpfdHlwZV9pbmZvX2RpY3RbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqX3R5cGUoKV1bJ2ZpZWxkcyddLlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQoaSwgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZpZWxkX2luZm8gYW5kIHNlbGYuZGVidWc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAnbm8gZmllbGQgZm9yICVzOiVzJyAlIChzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqX3R5cGUoKSwgaSkKLSAgICAgICAgICAgICAgICAgICAgaWYgZmllbGRfaW5mbyBhbmQgZmllbGRfaW5mby5nZXQoJ2hlbHBfdGV4dCcsIE5vbmUpOgotICAgICAgICAgICAgICAgICAgICAgICAgZl9yZXQgKz0gIiAgJXMlcyVzXG4iICUgKGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICcgKiAobG9uZ2VzdF9maWVsZCAtIGxlbihpKSArIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRfaW5mby5nZXQoJ2hlbHBfdGV4dCcpKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZl9yZXQgKz0gIiAgJXNcbiIlIGkKLQotICAgICAgICAgICAgaWYgKHRleHQgPT0gIiIgb3IgY291bnQgPiAxKSBhbmQgc19yZXQgIT0gIiI6Ci0gICAgICAgICAgICAgICAgcmV0ICs9ICJDb21tYW5kczpcbiIKLSAgICAgICAgICAgICAgICByZXQgKz0gc19yZXQKLQotICAgICAgICAgICAgaWYgKHRleHQgPT0gIiIgb3IgY291bnQgPiAxKSBhbmQgY19yZXQgIT0gIiI6Ci0gICAgICAgICAgICAgICAgcmV0ICs9ICJBbGwgQXZhaWxhYmxlIGNvbW1hbmRzOlxuIgotICAgICAgICAgICAgICAgIHJldCArPSBjX3JldAotCi0gICAgICAgICAgICBpZiAodGV4dCA9PSAiIiBvciBjb3VudCA+IDEpIGFuZCBvX3JldCAhPSAiIjoKLSAgICAgICAgICAgICAgICByZXQgKz0gIlxuQXZhaWxhYmxlIGNvbmZpZyBzdWJtb2RlczpcbiIKLSAgICAgICAgICAgICAgICByZXQgKz0gb19yZXQKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHRleHQgPT0gIiIgb3IgY291bnQgPiAxKSBhbmQgZl9yZXQgIT0gIiI6Ci0gICAgICAgICAgICAgICAgcmV0ICs9ICJcbkF2YWlsYWJsZSBmaWVsZHMgZm9yICVzOlxuIiAlIHNlbGYuZ2V0X2N1cnJlbnRfbW9kZV9vYmpfdHlwZSgpIAotICAgICAgICAgICAgICAgIHJldCArPSBmX3JldAotICAgICAgICBlbGlmIHdvcmRzWzBdIGluIFsic2hvdyIsICJoZWxwIiwgImNvcHkiLCAid2F0Y2giIF06Ci0gICAgICAgICAgICBtZXRob2QgPSBzZWxmLmNvbW1hbmRfbWV0aG9kX2Zyb21fbmFtZSh3b3Jkc1swXSkKLSAgICAgICAgICAgIGlmIG1ldGhvZDoKLSAgICAgICAgICAgICAgICByZXQgPSBtZXRob2QoTm9uZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgI3RyeToKLSAgICAgICAgICAgICAgICAgICAgI3JldCA9IGNvbW1hbmQuZ2V0X2NvbW1hbmRfc3ludGF4X2hlbHAod29yZHMsICdDb21tYW5kIHN5bnRheDonKQotICAgICAgICAgICAgICAgICNleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICNpZiBzZWxmLmRlYnVnIG9yIHNlbGYuZGVidWdfYmFja3RyYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgI3RyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgICAgICAgICAjcmV0ID0gIk5vIGhlbHAgYXZhaWxhYmxlIGZvciBjb21tYW5kICVzIiAlIHdvcmRzWzBdCi0KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9IGNvbW1hbmQuZ2V0X2NvbW1hbmRfZG9jdW1lbnRhdGlvbih3b3JkcykKLSAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgb3Igc2VsZi5kZWJ1Z19iYWNrdHJhY2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICAgICAgcmV0ID0gIk5vIGhlbHAgYXZhaWxhYmxlIGZvciBjb21tYW5kICVzIiAlIHdvcmRzWzBdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjdHJ5OgotICAgICAgICAgICAgICAgICNyZXQgPSBjb21tYW5kLmdldF9jb21tYW5kX3N5bnRheF9oZWxwKHdvcmRzLCAnQ29tbWFuZCBzeW50YXg6JykKLSAgICAgICAgICAgICNleGNlcHQ6Ci0gICAgICAgICAgICAgICAgI2lmIHNlbGYuZGVidWcgb3Igc2VsZi5kZWJ1Z19iYWNrdHJhY2U6Ci0gICAgICAgICAgICAgICAgICAgICN0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICAjcmV0ID0gIk5vIGhlbHAgYXZhaWxhYmxlIGZvciBjb21tYW5kICVzIiAlIHdvcmRzWzBdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0ID0gY29tbWFuZC5nZXRfY29tbWFuZF9kb2N1bWVudGF0aW9uKHdvcmRzKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgb3Igc2VsZi5kZWJ1Z19iYWNrdHJhY2U6Ci0gICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgICAgIHJldCA9ICJObyBoZWxwIGF2YWlsYWJsZSBmb3IgY29tbWFuZCAlcyIgJSB3b3Jkc1swXQotICAgICAgICByZXR1cm4gcmV0Ci0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZG9faGVscAotICAgICMKLSAgICBkZWYgZG9faGVscChzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLmhlbHBfc3BsYXNoKHdvcmRzLCAiIikKLSAgICAgICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX2xpbnQKLSAgICAjCi0gICAgZGVmIGRvX2xpbnQoc2VsZiwgd29yZHMpOgotICAgICAgICByZXR1cm4gY29tbWFuZC5saW50X2NvbW1hbmQod29yZHMpCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjcF9oaXN0b3J5Ci0gICAgIwotICAgIGRlZiBjcF9oaXN0b3J5KHNlbGYsIHdvcmRzLCB0ZXh0LCBjb21wbGV0aW9uX2NoYXIpOgotICAgICAgICBpZiBsZW4od29yZHMpID09IDE6Ci0gICAgICAgICAgICByZXRfdmFsID0gIiAgPG51bT4gICAgICAtIHRvIGRpc3BsYXkgYSBzcGVjaWZpYyBudW1iZXIgb2YgY29tbWFuZHMgKGRlZmF1bHQ6YWxsKVxuIgotICAgICAgICAgICAgcmV0X3ZhbCArPSAiICA8Y3I+XG4iCi0gICAgICAgICAgICBzZWxmLnByaW50X2NvbXBsZXRpb25faGVscChyZXRfdmFsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5wcmludF9jb21wbGV0aW9uX2hlbHAoIjxjcj4iKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX2hpc3RvcnkKLSAgICAjCi0gICAgZGVmIGRvX2hpc3Rvcnkoc2VsZiwgd29yZHMgPSBOb25lKToKLSAgICAgICAgcmV0X3ZhbCA9ICIiCi0gICAgICAgIGhvd19tYW55ID0gbnVtX2NvbW1hbmRzID0gcmVhZGxpbmUuZ2V0X2N1cnJlbnRfaGlzdG9yeV9sZW5ndGgoKQotICAgICAgICBpZiB3b3JkczoKLSAgICAgICAgICAgIGhvd19tYW55ID0gd29yZHNbMF0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtX2NvbW1hbmRzLWludChob3dfbWFueSkgKyAxLCBudW1fY29tbWFuZHMpOgotICAgICAgICAgICAgeWllbGQgIiVzOiAlc1xuIiAlIChpLCByZWFkbGluZS5nZXRfaGlzdG9yeV9pdGVtKGkpKQotICAgICAgICByZXR1cm4KLQotCi0gICAgZGVidWdfY21kX29wdGlvbnMgPSBbInB5dGhvbiIsICJiYXNoIiwgImNhc3NhbmRyYS1jbGkiLCAibmV0Y29uZmlnIiwgInRjcGR1bXAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJjbGkiLCAiY2xpLWJhY2t0cmFjZSIsICJjbGktYmF0Y2giLCAiY2xpLWludGVyYWN0aXZlIl0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBkb19kZWJ1ZwotICAgICMKLSAgICBkZWYgaW1wbGVtZW50X2RlYnVnKHNlbGYsIHdvcmRzKToKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA8IDEgb3IgbGVuKFt4IGZvciB4IGluIHNlbGYuZGVidWdfY21kX29wdGlvbnMgaWYgeC5zdGFydHN3aXRoKHdvcmRzWzBdKV0pIDwgMToKLSAgICAgICAgICAgIHJldHVybiAiU3ludGF4OiBkZWJ1ZyA8ICVzID4iICUgIiB8ICIuam9pbihzZWxmLmRlYnVnX2NtZF9vcHRpb25zKQotICAgICAgICBkZWYgc2hlbGwoYXJncyk6Ci0gICAgICAgICAgICBzdWJwcm9jZXNzLmNhbGwoWyJlbnYiLCAiU0hFTEw9L2Jpbi9iYXNoIiwgIi9iaW4vYmFzaCJdICsgbGlzdChhcmdzKSwgY3dkPW9zLmVudmlyb24uZ2V0KCJIT01FIikpCi0gICAgICAgICAgICBwcmludAotICAgICAgICBwcmludCAiXG4qKioqKiBXYXJuaW5nOiB0aGlzIGlzIGEgZGVidWcgY29tbWFuZCAtIHVzZSBjYXV0aW9uISAqKioqKiIKLSAgICAgICAgaWYgInB5dGhvbiIuc3RhcnRzd2l0aCh3b3Jkc1swXSk6Ci0gICAgICAgICAgICBwcmludCAnKioqKiogVHlwZSAiZXhpdCgpIiBvciBDdHJsLUQgdG8gcmV0dXJuIHRvIHRoZSBTRE5PUyBDTEkgKioqKipcbicKLSAgICAgICAgICAgIHNoZWxsKFsiLWwiLCAiLWMiLCAicHl0aG9uIl0pCi0gICAgICAgIGVsaWYgImJhc2giLnN0YXJ0c3dpdGgod29yZHNbMF0pOgotICAgICAgICAgICAgcHJpbnQgJyoqKioqIFR5cGUgImV4aXQiIG9yIEN0cmwtRCB0byByZXR1cm4gdG8gdGhlIFNETk9TIENMSSAqKioqKlxuJwotICAgICAgICAgICAgc2hlbGwoWyItbCIsICItaSJdKQotICAgICAgICBlbGlmICJjYXNzYW5kcmEtY2xpIi5zdGFydHN3aXRoKHdvcmRzWzBdKToKLSAgICAgICAgICAgIHByaW50ICcqKioqKiBUeXBlICJleGl0IiBvciBDdHJsLUQgdG8gcmV0dXJuIHRvIHRoZSBTRE5PUyBDTEkgKioqKipcbicKLSAgICAgICAgICAgIHNoZWxsKFsiLWwiLCAiLWMiLCAiL29wdC9zZG5wbGF0Zm9ybS9kYi9iaW4vY2Fzc2FuZHJhLWNsaSAtLWhvc3QgbG9jYWxob3N0Il0pCi0gICAgICAgIGVsaWYgIm5ldGNvbmZpZyIuc3RhcnRzd2l0aCh3b3Jkc1swXSk6Ci0gICAgICAgICAgICBpZiBub3QgcmUubWF0Y2goIi9kZXYvdHR5Uz9bXGRdKyQiLCBvcy50dHluYW1lKDApKToKLSAgICAgICAgICAgICAgICBwcmludCAnKioqKiogWW91IHNlZW0gdG8gYmUgY29ubmVjdGVkIHZpYSBTU0ggb3IgYW5vdGhlciByZW1vdGUgcHJvdG9jb2w7JwotICAgICAgICAgICAgICAgIHByaW50ICcqKioqKiByZWNvbmZpZ3VyaW5nIHRoZSBuZXR3b3JrIGludGVyZmFjZSBtYXkgZGlzcnVwdCB0aGUgY29ubmVjdGlvbiEnCi0gICAgICAgICAgICBwcmludCAnXG4oUHJlc3MgQ29udHJvbC1DIG5vdyB0byBsZWF2ZSB0aGUgbmV0d29yayBjb25maWd1cmF0aW9uIHVuY2hhbmdlZClcbicKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChbInN1ZG8iLCAiZW52IiwgIlNIRUxMPS9iaW4vYmFzaCIsICIvb3B0L3NkbnBsYXRmb3JtL3N5cy9iaW4vYnNjbmV0Y29uZmlnIiwgImV0aDAiXSwgY3dkPW9zLmVudmlyb24uZ2V0KCJIT01FIikpCi0gICAgICAgIGVsaWYgInRjcGR1bXAiLnN0YXJ0c3dpdGgod29yZHNbMF0pOgotICAgICAgICAgICAgcHJpbnQgJyoqKioqIFR5cGUgQ3RybC1DIHRvIHJldHVybiB0byB0aGUgU0ROT1MgQ0xJICoqKioqXG4nCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2hlbGwoWyItbCIsICItYyIsICJzdWRvIC9vcHQvb3BlbmZsb3cvc2Jpbi90Y3BkdW1wICIgKyAiICIuam9pbih3b3Jkc1sxOl0pXSkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBwYXNzICMgcmVhbGx5LCB3ZSBuZWVkIHRvIGlnbm9yZSB0aGlzIHVuY29uZGl0aW9uYWxseSEKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4yKQotICAgICAgICBlbGlmICJjbGkiLnN0YXJ0c3dpdGgod29yZHNbMF0pOgotICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgICAgICBzZWxmLmRlYnVnID0gRmFsc2UKLSAgICAgICAgICAgICAgICBwcmludCAiZGVidWcgZGlzYWJsZWQiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZGVidWcgPSBUcnVlCi0gICAgICAgICAgICAgICAgcHJpbnQgImRlYnVnIGVuYWJsZWQiCi0gICAgICAgIGVsaWYgImNsaS1iYWNrdHJhY2UiLnN0YXJ0c3dpdGgod29yZHNbMF0pOgotICAgICAgICAgICAgIyBUaGlzIGZlYXR1cmUgaXMgc2VwYXJhdGVkIGZyb20gdGhlIGNsaSBkZWJ1ZyBtb2RlIHNvIHRoYXQgYmFja3RyYWNlcwotICAgICAgICAgICAgIyBjYW4gYmUgY29sbGVjdGVkIGR1cmluZyBjbGkgcWEKLSAgICAgICAgICAgIHNlbGYuZGVidWdfYmFja3RyYWNlID0gVHJ1ZQotICAgICAgICAgICAgcHJpbnQgJyoqKioqIEVuYWJsZWQgY2xpIGRlYnVnIGJhY2t0cmFjZSAqKioqKicKLSAgICAgICAgZWxpZiAiY2xpLWJhdGNoIi5zdGFydHN3aXRoKHdvcmRzWzBdKToKLSAgICAgICAgICAgIHNlbGYuYmF0Y2ggPSBUcnVlCi0gICAgICAgICAgICBwcmludCAnKioqKiogRW5hYmxlZCBjbGkgYmF0Y2ggbW9kZSAqKioqKicKLSAgICAgICAgZWxpZiAiY2xpLWludGVyYWN0aXZlIi5zdGFydHN3aXRoKHdvcmRzWzBdKToKLSAgICAgICAgICAgIHNlbGYuYmF0Y2ggPSBGYWxzZQotICAgICAgICAgICAgcHJpbnQgJyoqKioqIERpc2FibGVkIGNsaSBiYXRjaCBtb2RlICoqKioqJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCJpbnZva2luZyBkZWJ1ZyIpCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX2VjaG8KLSAgICAjCi0gICAgZGVmIGRvX2VjaG8oc2VsZiwgd29yZHMpOgotICAgICAgICBwcmludCAiICIuam9pbih3b3JkcykKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjcF90cmFjZQotICAgICMKLSAgICB0cmFjZV9vcHRpb25hbF9wYXJhbXMgPSB7Ci0gICAgICAgICdzY3JlZW4nOiB7J3R5cGUnOiAnZmxhZyd9LAotIyAgICAgICAgJ3BvcnQnOiB7J3R5cGUnOiAnc3RyaW5nJywKLSMgICAgICAgICAgICAgICAgICAgICAnc3ludGF4X2hlbHAnOiAiRW50ZXIgPHN3aXRjaCBkcGlkPiA8cGh5c2ljYWwgcG9ydCM+LCB3aGVyZSB0aGUgcGFja2V0cyB0cmFjZXMgYXJlIHNwYW5uZWQuIn0sCi0gICAgICAgICdmaWxlJzogeyd0eXBlJzogJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAnc3ludGF4X2hlbHAnOiAiRW50ZXIgPGZpbGVuYW1lPiB3aGVyZSB0aGUgcGFja2V0cyB0cmFjZXMgYXJlIGNhcHR1cmVkLiJ9LAotICAgICAgICB9Ci0KLSAgICB0cmFjZV9jbWRzID0gWyJkZXRhaWwiLCAib25lbGluZSIsICJ2bnMiLCAiaW4iLCAib3V0IiwgImJvdGgiLCAKLSAgICAgICAgICAgICAgICAgICAgICAiZWNob19yZXBseSIsICAiZWNob19yZXF1ZXN0IiwgImZlYXR1cmVzX3JlcCIsICJmbG93X21vZCIsICJmbG93X3JlbW92ZWQiLCAiZ2V0X2NvbmZpZ19yZXAiLCAiaGVsbG8iLCAKLSAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X2luIiwgInBhY2tldF9vdXQiLCAicG9ydF9zdGF0dXMiLCAic2V0X2NvbmZpZyIsICJzdGF0c19yZXBseSIsICJzdGF0c19yZXF1ZXMiXQotCi0gICAgZGVmIGNwX3RyYWNlKHNlbGYsIHdvcmRzLCB0ZXh0LCBjb21wbGV0aW9uX2NoYXIpOgotICAgICAgICB2bnNfY2FjaGUgPSBvYmplY3RzX3N0YXJ0aW5nX3dpdGgoJ3Zucy1kZWZpbml0aW9uJykKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIFt4IGZvciB4IGluIHNlbGYudHJhY2VfY21kcyBpZiB4LnN0YXJ0c3dpdGgodGV4dCldCi0gICAgICAgIGVsaWYgbGVuKHdvcmRzKSA9PSAyIGFuZCB3b3Jkc1sxXS5sb3dlcigpLnN0YXJ0c3dpdGgoInZucyIpOgotICAgICAgICAgICAgcmV0dXJuIHZuc19jYWNoZQotICAgICAgICBlbGlmIGxlbih3b3JkcykgPT0gMiBhbmQgd29yZHNbMV0ubG93ZXIoKS5zdGFydHN3aXRoKCJvdXRwdXQiKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbXBsZXRlX29wdGlvbmFsX3BhcmFtZXRlcnMoc2VsZi50cmFjZV9vcHRpb25hbF9wYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jkc1tsZW4od29yZHMpOl0sIHRleHQpCi0gICAgICAgIGVsaWYgKGxlbih3b3JkcykgPT0gMyBhbmQgCi0gICAgICAgICAgICAgd29yZHNbMV0ubG93ZXIoKS5zdGFydHN3aXRoKCJ2bnMiKSBhbmQKLSAgICAgICAgICAgICB3b3Jkc1syXS5sb3dlcigpIGluIHZuc19jYWNoZSk6Ci0gICAgICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gWyJpbiIsICJvdXQiLCAiYm90aCIsICJvdXRwdXQiXSBpZiB4LnN0YXJ0c3dpdGgodGV4dCldIAotICAgICAgICBlbGlmIChsZW4od29yZHMpID09IDQgYW5kIAotICAgICAgICAgICAgIHdvcmRzWzFdLmxvd2VyKCkuc3RhcnRzd2l0aCgidm5zIikgYW5kCi0gICAgICAgICAgICAgd29yZHNbMl0ubG93ZXIoKSBpbiBvYmplY3RzX3N0YXJ0aW5nX3dpdGgoJ3Zucy1kZWZpbml0aW9uJykgYW5kCi0gICAgICAgICAgICAgd29yZHNbM10ubG93ZXIoKSBpbiBbImluIiwgIm91dCIsICJib3RoIl0pOgotICAgICAgICAgICAgcmV0dXJuIFt4IGZvciB4IGluIFsib3V0cHV0Il0gaWYgeC5zdGFydHN3aXRoKHRleHQpXSAKLSAgICAgICAgZWxpZiBsZW4od29yZHMpID09IDIgYW5kIHdvcmRzWzFdLmxvd2VyKClpbiBbImluIiwgIm91dCIsICJib3RoIl06Ci0gICAgICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gWyJvdXRwdXQiXSBpZiB4LnN0YXJ0c3dpdGgodGV4dCldIAotICAgICAgICBlbGlmIChsZW4od29yZHMpID4gMiBhbmQgCi0gICAgICAgICAgICAgKHdvcmRzWzFdLmxvd2VyKCkuc3RhcnRzd2l0aCgidm5zIikgb3IKLSAgICAgICAgICAgICAgd29yZHNbMV0ubG93ZXIoKS5zdGFydHN3aXRoKCJvdXRwdXQiKSBvcgotICAgICAgICAgICAgICB3b3Jkc1syXS5sb3dlcigpLnN0YXJ0c3dpdGgoIm91dHB1dCIpKSkgOgotICAgICAgICAgICAgb2Zmc2V0ID0gbGVuKHdvcmRzKQotICAgICAgICAgICAgaWYgd29yZHNbbGVuKHdvcmRzKS0xXS5sb3dlcigpID09ICdzY3JlZW4nOgotICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKCI8Y3I+IikKLSAgICAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgICAgIGVsaWYgd29yZHNbbGVuKHdvcmRzKS0xXS5sb3dlcigpIGluIFsnZmlsZSddOgotICAgICAgICAgICAgICAgIG9mZnNldCA9IGxlbih3b3JkcykgLSAxCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5jb21wbGV0ZV9vcHRpb25hbF9wYXJhbWV0ZXJzKHNlbGYudHJhY2Vfb3B0aW9uYWxfcGFyYW1zLCB3b3Jkc1tvZmZzZXQ6XSwgdGV4dCkKLQotICAgICAgICBzZWxmLnByaW50X2NvbXBsZXRpb25faGVscCgiPGNyPiIpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZG9fdHJhY2UKLSAgICAjCi0gICAgZGVmIGRvX3RyYWNlKHNlbGYsICphcmdzKToKLSAgICAgICAgZHBpZCA9IE5vbmUKLSAgICAgICAgaWYgbGVuKGFyZ3MpID4gMDoKLSAgICAgICAgICAgIGFyZ3MgPSBhcmdzWzBdICAjIGZpcnN0IGVsZW1lbnQgaXMgdGhlIGFycmF5IG9mICdyZWFsJyBhcmdzCi0gICAgICAgIGlmIGxlbihhcmdzKSA+IDEgYW5kIGFyZ3NbMF0ubG93ZXIoKSBpbiBbJ3ZucycsICdpbicsICdvdXQnLCAnYm90aCcsICdvdXRwdXQnXToKLSAgICAgICAgICAgIHRyeSA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZG9fc2RucGxhdGZvcm1fdHJhY2UoYXJncykKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdCwgZToKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBsZW4oYXJncykgPiAxIGFuZCBhcmdzWzBdLmxvd2VyKCkgPT0gJ3RyYWNlJzoKLSAgICAgICAgICAgIGRwaWQgPSBhcmdzWzFdCi0gICAgICAgICAgICBhcmdzID0gYXJnc1syOl0gIyBBbmQgaW4gdGhpcyBjYXNlLCBhcmdzIGFyZSBhZnRlciB0aGUgZmlyc3QgMiBwYXJhbWV0ZXJzCi0gICAgICAgIHJldHVybiBzZWxmLmRvX3RjcGR1bXBfdHJhY2UoZHBpZCwgYXJncykKLQotICAgIGRlZiBkb19zZG5wbGF0Zm9ybV90cmFjZShzZWxmLCBhcmdzKToKLSAgICAgICAgdm5zID0gTm9uZQotICAgICAgICBkaXJlY3Rpb24gPSAnYm90aCcKLSAgICAgICAgb3V0cHV0ID0gJ3NjcmVlbicKLSAgICAgICAgZHBpZCA9IE5vbmUKLSAgICAgICAgcG9ydCA9IE5vbmUKLSAgICAgICAgZmlsZV9uYW1lID0gTm9uZQotICAgICAgICBzZXNzaW9uSWQgPSBOb25lCi0gICAgICAgIGVycm9yID0gJ0Vycm9yOiBJbnZhbGlkIGNvbW1hbmQgc3ludGF4LlxuJyArIFwKLSAgICAgICAgICAgICAgICAndHJhY2UgW3ZucyA8dm5zSWQ+XSBbaW58b3V0fGJvdGhdIG91dHB1dCBbc2NyZWVuXScKLSMgICAgICAgICAgICAgICAgJ3RyYWNlIFt2bnMgPHZuc0lkPl0gW2lufG91dHxib3RoXSBvdXRwdXQgW3NjcmVlbnxwb3J0IDxkcGlkPiA8cGh5c2ljYWwgcG9ydD58ZmlsZSA8ZmlsZW5hbWU+XScKLQotICAgICAgICBpZiBhcmdzWzBdLmxvd2VyKCkgPT0gJ3Zucyc6Ci0gICAgICAgICAgICBpZiBsZW4oYXJncykgPiAxOgotICAgICAgICAgICAgICAgIHZucyA9IGFyZ3NbMV0KLSAgICAgICAgICAgICAgICBhcmdzID0gYXJnc1syOl0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yCi0KLSAgICAgICAgd2hpbGUgYXJnczoKLSAgICAgICAgICAgIGlmIGFyZ3NbMF0ubG93ZXIoKSA9PSAnb3V0cHV0JzoKLSAgICAgICAgICAgICAgICBhcmdzID0gYXJnc1sxOl0KLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgYXJnc1swXS5sb3dlcigpIGluIFsnaW4nLCAnb3V0JywgJ2JvdGgnXToKLSAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBhcmdzWzBdLmxvd2VyKCkgCi0gICAgICAgICAgICAgICAgYXJncyA9IGFyZ3NbMTpdCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGFyZ3NbMF0ubG93ZXIoKSA9PSAnc2NyZWVuJzoKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSAnc2NyZWVuJwotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBhcmdzWzBdLmxvd2VyKCkgPT0gJ3BvcnQnOgotICAgICAgICAgICAgICAgIG91dHB1dCA9ICdwb3J0JwotICAgICAgICAgICAgICAgIGlmIGxlbihhcmdzKSA+IDI6Ci0gICAgICAgICAgICAgICAgICAgIGRwaWQgPSBhcmdzWzFdCi0gICAgICAgICAgICAgICAgICAgIHBvcnQgPSBhcmdzWzI6XQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcgotICAgICAgICAgICAgaWYgYXJnc1swXS5sb3dlcigpID09ICdmaWxlJzoKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSAnZmlsZScKLSAgICAgICAgICAgICAgICBpZiBsZW4oYXJncykgPiAxOgotICAgICAgICAgICAgICAgICAgICBmaWxlX25hbWUgPSBhcmdzWzFdCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yCi0KLSAgICAgICAgZmlsdGVyX3JlcXVlc3QgPSB7RlRfRElSRUNUSU9OOmRpcmVjdGlvbiwgRlRfT1VUUFVUOm91dHB1dCwgRlRfUEVSSU9EOkZUX1BFUklPRF9ERUZBVUxUfQotICAgICAgICBpZiB2bnMgOgotICAgICAgICAgICAgZmlsdGVyX3JlcXVlc3RbRlRfVk5TXSA9IHZucwotICAgICAgICBpZiBkcGlkIGFuZCBwb3J0IDoKLSAgICAgICAgICAgIGZpbHRlcl9yZXF1ZXN0W0ZUX1BPUlRdID0ge0ZUX1BPUlRfRFBJRDpkcGlkLCBGVF9QT1JUX1BPUlQ6cG9ydH0KLQotCi0gICAgICAgIHBvc3RfZGF0YSA9IGpzb24uZHVtcHMoZmlsdGVyX3JlcXVlc3QpCi0KLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHJlc3BvbnNlX3RleHQgPSBOb25lCi0gICAgICAgICAgICBzZXNzaW9uSWQgPSBOb25lCi0gICAgICAgICAgICB1cmwgPSAnaHR0cDovLyVzL3Jlc3QvdjEvcGFja2V0dHJhY2UvJyAlIGNsaS5jb250cm9sbGVyCi0gICAgICAgICAgICByZXF1ZXN0ID0gdXJsbGliMi5SZXF1ZXN0KHVybCwgcG9zdF9kYXRhLCB7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHVybGxpYjIudXJsb3BlbihyZXF1ZXN0KQotICAgICAgICAgICAgICAgIHJlc3BvbnNlX3RleHQgPSByZXNwb25zZS5yZWFkKCkKLSAgICAgICAgICAgICAgICByZXNwb25zZV90ZXh0ID0ganNvbi5sb2FkcyhyZXNwb25zZV90ZXh0KQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICByZXR1cm4gIkVycm9yOiBmYWlsZWQgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIGEgdHJhY2UgcmVxdWVzdC4gJXMiICUgZQotCi0gICAgICAgICAgICBpZiByZXNwb25zZV90ZXh0IGFuZCBTRVNTSU9OSUQgaW4gcmVzcG9uc2VfdGV4dDoKLSAgICAgICAgICAgICAgICBzZXNzaW9uSWQgPSByZXNwb25zZV90ZXh0W1NFU1NJT05JRF0KLSAgICAgICAgICAgIGVsc2UgOgotICAgICAgICAgICAgICAgIHJldHVybiAiRXJyb3I6IGZhaWxlZCB0byBnZXQgYSB0cmFjZSBzZXNzaW9uLiAlcyIgJSByZXNwb25zZV90ZXh0Ci0KLSAgICAgICAgICAgICMgU3BhbiB0byBhIHBoeXNpY2FsIHBvcnQKLSAgICAgICAgICAgICMgTm8gZGF0YSBpcyBzaG93biBvbiBjbGkuIF5DIHRvIHN0b3AgdGhlIHRyYWNlCi0gICAgICAgICAgICBpZiBvdXRwdXQubG93ZXIoKSA9PSAncG9ydCc6Ci0gICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgdHJ5IDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMTAwMCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0LCBlOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXJtaW5hdGVUcmFjZShzZXNzaW9uSWQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgbHB1cmwgPSBOb25lCi0KLSAgICAgICAgICAgIGlmIHNlc3Npb25JZDoKLSAgICAgICAgICAgICAgICBscHVybCA9ICdodHRwOi8vJXMvcG9sbC9wYWNrZXRzLyVzJyAlIChjbGkuY29udHJvbGxlciwgc2Vzc2lvbklkKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gIkVycm9yOiBmYWlsZWQgdG8gc3RhcnQgYSB0cmFjZSBzZXNzaW9uLiAlcyIgJSByZXNwb25zZV90ZXh0Ci0KLSAgICAgICAgICAgIEZJTEUgPSBOb25lCi0gICAgICAgICAgICBpZiBmaWxlX25hbWU6Ci0gICAgICAgICAgICAgICAgRklMRSA9IG9wZW4oZmlsZV9uYW1lLCAidyIpCi0KLSAgICAgICAgICAgIGZsYWdUaW1lb3V0ID0gRmFsc2UKLSAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXNwb25zZV90ZXh0ID0gdXJsbGliMi51cmxvcGVuKGxwdXJsKS5yZWFkKCkKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2VfdGV4dCkKLSAgICAgICAgICAgICAgICAgICAgaWYgb3V0cHV0Lmxvd2VyKCkgPT0gInNjcmVlbiI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnVGltZW91dCA9IHNlbGYuZHVtcFBrdFRvU2NyZWVuKGRhdGEpCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgb3V0cHV0Lmxvd2VyKCkgPT0gJ2ZpbGUnIGFuZCBGSUxFICE9IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmR1bXBQa3RUb0ZpbGUoRklMRSwgZGF0YSkKLSAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQsIGU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuIHRlcm1pbmF0ZVRyYWNlKHNlc3Npb25JZCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJFcnJvcjogZmFpbGVkIHRvIHN0YXJ0IGEgdHJhY2Ugc2Vzc2lvbi4gJXMiICUgZQotCi0gICAgICAgICAgICAgICAgaWYgZmxhZ1RpbWVvdXQ6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlU3RyaW5nID0gcmF3X2lucHV0KCJEbyB5b3Ugd2FudCB0byBjb250aW51ZSB0cmFjaW5nPyBbeS9uXTogICIpCi0gICAgICAgICAgICAgICAgICAgIGlmICd5JyBpbiBjb250aW51ZVN0cmluZy5sb3dlcigpOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGR1bXBQa3RUb1NjcmVlbihkYXRhKToKLSAgICAgICAgZm9yIGVudHJ5IGluIGRhdGE6Ci0gICAgICAgICAgICBpZiBGVF9USU1FT1VUIGluIGVudHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50IGVudHJ5Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBkdW1wUGt0VG9GaWxlKEZJTEUsIGRhdGEpOgotICAgICAgICBGSUxFLndyaXRlbGluZXMoZGF0YSkKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgdGVybWluYXRlVHJhY2Uoc2lkKToKLSAgICAgICAgcG9zdF9kYXRhID0ganNvbi5kdW1wcyh7U0VTU0lPTklEOnNpZCwgRlRfUEVSSU9EOi0xfSkKLSAgICAgICAgdXJsID0gJ2h0dHA6Ly8lcy9yZXN0L3YxL3BhY2tldHRyYWNlLycgJSBjbGkuY29udHJvbGxlcgotICAgICAgICByZXF1ZXN0ID0gdXJsbGliMi5SZXF1ZXN0KHVybCwgcG9zdF9kYXRhLCB7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKLSAgICAgICAgICAgIHJlc3BvbnNlX3RleHQgPSByZXNwb25zZS5yZWFkKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICMgU2RucGxhdGZvcm0gbWF5IG5vdCBiZSBydW5uaW5nLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0IHRvIGJlIGEgZmF0YWwKLSAgICAgICAgICAgICMgZXJyb3IsIHNvIHdlIGp1c3QgaWdub3JlIHRoZSBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgotICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIGRvX3RjcGR1bXBfdHJhY2Uoc2VsZiwgZHBpZCwgYXJncyk6Ci0gICAgICAgIHJldCA9ICcnCi0gICAgICAgIGJzY19wb3J0ID0gJzY2MzMnICMgTE9PSzogbGlzdGVuIGFkZHIvcG9ydCBhcmUgd3JvbmcgaW4gdGhlIGNvbnRyb2xsZXItbm9kZSwgc28gaGFyZCBjb2RlIDY2MzMgZm9yIG5vdwotICAgICAgICB0cmFjZV9jbWQgPSAnc3VkbyAvb3B0L3NkbnBsYXRmb3JtL2NsaS9iaW4vdHJhY2UgLS1maWx0ZXIgXCclc1wnICVzJwotICAgICAgICB0cmFjZV9ydWxlID0gJygodGNwKSBhbmQgKHBvcnQgJXMpKScgJSAoYnNjX3BvcnQsKQotICAgICAgICBzaW5nbGVfc2Vzc2lvbiA9IEZhbHNlCi0KLSAgICAgICAgdHJhY2VfYXJncyA9ICctLWFsaWFzJwotICAgICAgICBpZiAnZGV0YWlsJyBpbiBhcmdzOgotICAgICAgICAgICAgdHJhY2VfYXJncyArPSAnIC0tZGV0YWlsJwotICAgICAgICAgICAgYXJncy5yZW1vdmUoJ2RldGFpbCcpCi0gICAgICAgIGlmICdvbmVsaW5lJyBpbiBhcmdzOgotICAgICAgICAgICAgdHJhY2VfYXJncyArPSAnIC0tb25lbGluZScKLSAgICAgICAgICAgIGFyZ3MucmVtb3ZlKCdvbmVsaW5lJykKLSAgICAgICAgaWYgJ3NpbmdsZV9zZXNzaW9uJyBpbiBhcmdzOgotICAgICAgICAgICAgc2luZ2xlX3Nlc3Npb24gPSBUcnVlCi0gICAgICAgICAgICBhcmdzLnJlbW92ZSgnc2luZ2xlX3Nlc3Npb24nKQotCi0gICAgICAgIGlmIGRwaWQ6Ci0gICAgICAgICAgICBxdWVyeV9kaWN0ID0geyAnZHBpZCcgOiBkcGlkIH0KLSAgICAgICAgICAgIHJvdyA9IHJlc3RfdG9fbW9kZWwuZ2V0X21vZGVsX2Zyb21fdXJsKCdzd2l0Y2hlcycsIHF1ZXJ5X2RpY3QpCi0gICAgICAgICAgICBpZiBsZW4ocm93KSA+PSAxOgotICAgICAgICAgICAgICAgIGlmIG5vdCAnaXAtYWRkcmVzcycgaW4gcm93WzBdIG9yIHJvd1swXS5nZXQoJ2lwLWFkZHJlc3MnKSA9PSAnJzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCJzd2l0Y2ggJXMgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgIiAlIGRwaWQpCi0gICAgICAgICAgICBhZGRyID0gcm93WzBdWydpcC1hZGRyZXNzJ10KLSAgICAgICAgICAgIHBvcnQgPSByb3dbMF1bJ3RjcC1wb3J0J10KLSAgICAgICAgICAgIGlmIHNpbmdsZV9zZXNzaW9uOgotICAgICAgICAgICAgICAgIHRyYWNlX3J1bGUgPSAnKCh0Y3ApIGFuZCAocG9ydCAlcykgYW5kIChob3N0ICVzKSBhbmQgKHBvcnQgJXMpKScgJSAoYnNjX3BvcnQsIGFkZHIsIHBvcnQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRyYWNlX3J1bGUgPSAnKCh0Y3ApIGFuZCAocG9ydCAlcykgYW5kIChob3N0ICVzKSknICUgKGJzY19wb3J0LCBhZGRyKQotICAgICAgICBpZiBsZW4oYXJncykgPiAwOgotICAgICAgICAgICAgdHJhY2VfYXJncyArPSAoJyAnICsgJyAnLmpvaW4oYXJncykpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgcHJpbnQgYXJncywgZHBpZCwgdHJhY2VfY21kICUgKHRyYWNlX3J1bGUsIHRyYWNlX2FyZ3MpCi0gICAgICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbih0cmFjZV9jbWQgJSAodHJhY2VfcnVsZSwgdHJhY2VfYXJncyksIHNoZWxsPVRydWUpCi0gICAgICAgICAgICBzdGF0dXMgPSBvcy53YWl0cGlkKHByb2Nlc3MucGlkLCAwKVsxXQotICAgICAgICAgICAgaWYgc3RhdHVzICE9IDA6Ci0gICAgICAgICAgICAgICAgcmV0ID0gJ0Vycm5vOiAlZCcgJSAoc3RhdHVzLCApCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MgIyByZWFsbHksIHdlIG5lZWQgdG8gaWdub3JlIHRoaXMgdW5jb25kaXRpb25hbGx5IQotCi0gICAgICAgIHRpbWUuc2xlZXAoMC4yKQotICAgICAgICByZXR1cm4gcmV0Ci0KLSAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZ2V0X2F1dGhfdG9rZW5fZmlsZV9wYXRoCi0gICAgIwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZ2V0X2F1dGhfdG9rZW5fZmlsZV9wYXRoKCk6Ci0gICAgICAgIGF1dGhfdG9rZW5fcGF0aCA9IG9zLmVudmlyb24uZ2V0KCdCU0NfQVVUSF9UT0tFTl9QQVRIJykKLSAgICAgICAgaWYgYXV0aF90b2tlbl9wYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBhdXRoX3Rva2VuX3BhdGggPSAnL29wdC9zZG5wbGF0Zm9ybScKLSAgICAgICAgYXV0aF90b2tlbl9wYXRoICs9ICcvYXV0aF90b2tlbicKLSAgICAgICAgcmV0dXJuIGF1dGhfdG9rZW5fcGF0aAotICAgIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBwbGF5X2NvbmZpZ19saW5lcwotICAgICMKLSAgICBkZWYgcGxheV9jb25maWdfbGluZXMoc2VsZiwgc3JjX3RleHQpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhlIGNvbXBsZXRlIGNvbGxlY3Rpb24gb2YgbGluZXMgdG8gcmVwbGF5IGFyZSBpbiBzcmNfdGV4dC4KLSAgICAgICAgSW4gdGhlIGZ1dHVyZSwgdGhpcyB3b3VsZCBwcm92aWRlIGZvciBhIHdheSB0byBmaXJzdCBpZGVudGlmeQotICAgICAgICB3aGF0IG5lZWRzIHRvIGJlIHJlbW92ZWQsIHRoZW4gYXBwbHkgd2hhdCBuZWVkcyB0byBiZSBhZGRlZC4KLQotICAgICAgICBTb21lIHNtYXJ0IGRpZmZpbmcgZnJvbSB0aGUgZXhpdGluZyBydW5uaW5nLWNvbmZpZyB3b3VsZAotICAgICAgICBiZSBuZWVkZWQgdG8gc3VwcG9ydCB0aGF0LiAgIFRoZSBzdGFuemEgZ3JvdXBzIHdvdWxkIG5lZWQgdG8KLSAgICAgICAgYmUgY29sbGVjdGVkLCB0aGUgZGlmZidkCi0gICAgICAgICIiIgotICAgICAgICBwcmludCAiVXBkYXRpbmcgcnVubmluZy1jb25maWcgLi4uIgotCi0gICAgICAgIG51bV9saW5lc19wbGF5ZWQgPSAwCi0gICAgICAgICMgc2NhbiB0aGUgbGluZXMgbG9va2luZyBmb3IgdGhlIHZlcnNpb24gbnVtYmVyLgotICAgICAgICAjCi0gICAgICAgIHZlcnNpb24gPSBOb25lCi0gICAgICAgIGZvciBsaW5lIGluIHNyY190ZXh0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiKFxzKikoXHcrKVxzKiIsIGxpbmUpICMgb25seSBtYXRjaCBub24tYmxhbmsgbGluZXMKLSAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgaWYgbS5ncm91cCgwKS5zdGFydHN3aXRoKCd2ZXJzaW9uICcpOgotICAgICAgICAgICAgICAgICAgICBsaW5lX3BhcnRzID0gbGluZS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpbmVfcGFydHMgPiAxOgotICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IGxpbmVfcGFydHNbMV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgIyBjb25zdHJ1Y3QgdGhlIGNvbW1hbmQgdG8gcnVuLgotICAgICAgICBjb21tYW5kID0gWydlbnYnXQotICAgICAgICBpZiB2ZXJzaW9uOgotICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQoJ0NMSV9DT01NQU5EX1ZFUlNJT049JXMnICUgdmVyc2lvbikKLSAgICAgICAgY29tbWFuZC5hcHBlbmQoJ0NMSV9TVEFSVElOR19NT0RFPWNvbmZpZycpCi0gICAgICAgIGNvbW1hbmQuYXBwZW5kKCdDTElfU1VQUFJFU1NfV0FSTklORz1UcnVlJykKLQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygnL29wdC9zZG5wbGF0Zm9ybS9jbGkvYmluL2NsaScpOgotICAgICAgICAgICAgIyBjb250cm9sbGVyIFZNCi0gICAgICAgICAgICBjb21tYW5kLmFwcGVuZCgnL29wdC9zZG5wbGF0Zm9ybS9jbGkvYmluL2NsaScpCi0gICAgICAgICAgICBjb21tYW5kLmFwcGVuZCgnLS1pbml0JykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgZGV2ZWxvcGVyIHNldHVwCi0gICAgICAgICAgICBiYXNlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQob3MucGF0aC5qb2luKGJhc2UsICdjbGkucHknKSkKLSAgICAgICAgICAgIGNvbW1hbmQuYXBwZW5kKCctLWluaXQnKQotCi0gICAgICAgICMgY3JlYXRlIGEgc3VicHJvY2VzcyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24sIHRoZW4gcHVzaAotICAgICAgICAjIGVhY2ggb2YgdGhlIGxpbmVzIGludG8gdGhhdCBzdWJwcm9jZXNzLgotICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemU9MSkKLSAgICAgICAgcG9zdHByb2Nlc3NsaW5lcz1bXQotICAgICAgICBmb3IgbGluZSBpbiBzcmNfdGV4dC5zcGxpdGxpbmVzKDEpOgotICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCIoXHMqKShcdyspXHMqIiwgbGluZSkgIyBvbmx5IG1hdGNoIG5vbi1ibGFuayBsaW5lcwotICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICBpZiAndGVuYW50JyBvciAncm91dGVyJyBpbiBsaW5lOiAgI3NwZWNpYWwgaGFuZGxpbmcgZm9yIHJvdXRpbmcgcnVsZSBjb21tYW5kcyBWTlMtMjI2Ci0gICAgICAgICAgICAgICAgICAgIHBvc3Rwcm9jZXNzbGluZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICAgICAgcC5zdGRpbi53cml0ZShsaW5lKQotICAgICAgICAgICAgICAgIG51bV9saW5lc19wbGF5ZWQgKz0gMQotICAgICAgICBmb3IgbGluZSBpbiBwb3N0cHJvY2Vzc2xpbmVzOgotICAgICAgICAgICAgcC5zdGRpbi53cml0ZShsaW5lKQotICAgICAgICAgICAgbnVtX2xpbmVzX3BsYXllZCArPSAxCi0gICAgICAgIHAuc3RkaW4uY2xvc2UoKQotICAgICAgICBvdXRwdXQgPSBwLnN0ZG91dC5yZWFkKCkKLSAgICAgICAgaWYgb3V0cHV0IGFuZCAoc2VsZi5kZWJ1ZyBvciBzZWxmLmRlYnVnX2JhY2t0cmFjZSBvciBzZWxmLmRlc2NyaXB0aW9uKTogIAotICAgICAgICAgICAgcHJpbnQgb3V0cHV0Ci0gICAgICAgIHAuc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgcmV0dXJuICJOdW0gbGluZXMgYXBwbGllZDogJXNcbiIgJSBudW1fbGluZXNfcGxheWVkCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgcGF0aF9jb25jYXQKLSAgICAjICBDb25jYXRlbmF0ZSBhIHN1ZmZpeCBwYXRoIHRvIGEgcHJlZml4LCBtYWtpbmcgdGhlIGd1YXJhbnRlZSB0aGF0IHRoZQotICAgICMgIHN1ZmZpeCB3aWxsIGFsd2F5cyBiZSAidW5kZXIiIHRoZSBwcmVmaXguIHRoZSBzdWZmaXggaXMgbm9ybWFsaXplZCwKLSAgICAjICB0aGVuIGFueSBwcmVmaXggdXAtZGlycyAoIi4uIikgYXJlIHJlbW92ZWQuCi0gICAgIwotICAgIGRlZiBwYXRoX2NvbmNhdChzZWxmLCBwcmVmaXgsIHBhdGgpOgotICAgICAgICBzdWZmaXggPSBwb3NpeHBhdGgubm9ybXBhdGgocGF0aC5sc3RyaXAoJy8nKS5yc3RyaXAoJy8nKSkKLSAgICAgICAgKGhlYWQsIHRhaWwpID0gb3MucGF0aC5zcGxpdChzdWZmaXgpCi0gICAgICAgIHRhaWxzID0gW3RhaWxdCi0gICAgICAgIHdoaWxlIGhlYWQ6Ci0gICAgICAgICAgICAoaGVhZCwgdGFpbCkgPSBvcy5wYXRoLnNwbGl0KGhlYWQpCi0gICAgICAgICAgICB0YWlscy5pbnNlcnQoMCwgdGFpbCkKLSAgICAgICAgZHJvcCA9ICcnCi0gICAgICAgIHdoaWxlIHRhaWxzWzBdID09ICcuLic6Ci0gICAgICAgICAgICBkcm9wID0gb3MucGF0aC5qb2luKGRyb3AsIHRhaWxzLnBvcCgwKSkKLSAgICAgICAgaWYgZHJvcCAhPSAnJzoKLSAgICAgICAgICAgIHNlbGYubm90ZSgiSWdub3JpbmcgJXMgcHJlZml4IiAlIGRyb3ApCi0gICAgICAgIGZvciB0IGluIHRhaWxzOgotICAgICAgICAgICAgcHJlZml4ID0gb3MucGF0aC5qb2luKHByZWZpeCwgdCkKLSAgICAgICAgcmV0dXJuIHByZWZpeAotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGltcGxlbWVudF9jb3B5Ci0gICAgIyAgc3RhcnR1cC1jb25maWcgYW5kIHVwZGF0ZS1jb25maWcgYXJlIHNpbXBseSBhYmJyZXZpYXRpb25zIGZvciAKLSAgICAjICBjb25maWc6Ly9zdGFydHVwLWNvbmZpZyBhbmQgY29uZmlnOi8vdXBkYXRlX2NvbmZpZwotICAgICMKLSAgICBkZWYgaW1wbGVtZW50X2NvcHkoc2VsZiwgd29yZHMpOgotICAgICAgICBpZiBub3Qgd29yZHMgb3IgbGVuKHdvcmRzKSA+IDM6Ci0gICAgICAgICAgICBwcmludCAiU3ludGF4OiBjb3B5IDxzcmM+IDxkc3Q+IgotICAgICAgICAgICAgcHJpbnQgIndoZXJlIDxzcmM+IGFuZCA8ZHN0PiBjYW4gYmUiCi0gICAgICAgICAgICBwcmludCAiICBydW5uaW5nLWNvbmZpZyBzdGFydHVwLWNvbmZpZyB1cGRhdGUtY29uZmlnIgotICAgICAgICAgICAgcHJpbnQgIiAgY29uZmlnOi8vPG5hbWUtb2YtY29uZmlnLWluLWRiPiAtIEEtWmEtejAtOV8tLkAgIgotICAgICAgICAgICAgcHJpbnQgIiAgPHVybD4gLSBzdGFydGluZyB3aXRoIGVpdGhlciB0ZnRwOi8vLCBmdHA6Ly8sIGh0dHA6Ly8gb3IgZmlsZTovLyIKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBsZW4od29yZHMpID09IDE6Ci0gICAgICAgICAgICBzcmMgPSB3b3Jkc1swXQotICAgICAgICAgICAgZHN0ID0gInRlcm1pbmFsIgotICAgICAgICBlbGlmIGxlbih3b3JkcykgPT0gMjoKLSAgICAgICAgICAgIChzcmMsIGRzdCkgPSAod29yZHNbMF0sIHdvcmRzWzFdKQotCi0gICAgICAgICMgQ29tcGxldGUgYXMgcmVxdWlyZWQuCi0gICAgICAgICMgTk9URTogTm8gY29tcGxldGlvbiBmb3IgdXBncmFkZS1jb25maWcgYXMgb25seSBvdXIgc2NyaXB0cyBzaG91bGQgYmUgdXNpbmcgaXQKLSAgICAgICAgaWYgInJ1bm5pbmctY29uZmlnIi5zdGFydHN3aXRoKHNyYyk6Ci0gICAgICAgICAgICBzcmMgPSAicnVubmluZy1jb25maWciCi0gICAgICAgIGVsaWYgInN0YXJ0dXAtY29uZmlnIi5zdGFydHN3aXRoKHNyYyk6Ci0gICAgICAgICAgICBzcmMgPSAic3RhcnR1cC1jb25maWciCi0gICAgICAgIGlmICJydW5uaW5nLWNvbmZpZyIuc3RhcnRzd2l0aChkc3QpOgotICAgICAgICAgICAgZHN0ID0gInJ1bm5pbmctY29uZmlnIgotICAgICAgICBlbGlmICJzdGFydHVwLWNvbmZpZyIuc3RhcnRzd2l0aChkc3QpOgotICAgICAgICAgICAgZHN0ID0gInN0YXJ0dXAtY29uZmlnIgotICAgICAgICBlbGlmICJ0ZXJtaW5hbCIuc3RhcnRzd2l0aChkc3QpOgotICAgICAgICAgICAgZHN0ID0gInRlcm1pbmFsIgotCi0gICAgICAgIGlmIHNyYyA9PSBkc3Q6Ci0gICAgICAgICAgICBwcmludCAic3JjIGFuZCBkc3QgZm9yIGNvcHkgY29tbWFuZCBjYW5ub3QgYmUgZXF1YWwiCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIGdldCBmcm9tIHRoZSBzb3VyY2UgZmlyc3QKLSAgICAgICAgc3JjX3RleHQgPSAiIgotCi0gICAgICAgICMgbWFwIGFueSBhYmJyZXZpYXRpb25zCi0gICAgICAgIGFiYnJldmlhdGlvbnMgPSB7J3N0YXJ0dXAtY29uZmlnJzogJ2NvbmZpZzovL3N0YXJ0dXAtY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAndXBncmFkZS1jb25maWcnOiAnY29uZmlnOi8vdXBncmFkZS1jb25maWcnCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgIHNyYyA9IGFiYnJldmlhdGlvbnMuZ2V0KHNyYywgc3JjKQotICAgICAgICBkYXRhID0gTm9uZQotCi0gICAgICAgIGlmIHNyYyA9PSAicnVubmluZy1jb25maWciOiAjIGdldCBydW5uaW5nCi0gICAgICAgICAgICBzcmNfdGV4dCA9IHJ1bl9jb25maWcuaW1wbGVtZW50X3Nob3dfcnVubmluZ19jb25maWcoW10pICsgIlxuIgotICAgICAgICBlbGlmIHNyYy5zdGFydHN3aXRoKCJjb25maWc6Ly8iKTogIyBnZXQgbG9jYWwgZmlsZQotICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChzZWxmLmxvY2FsX25hbWVfcGF0dGVybiwgc3JjKQotICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5zdG9yZS5nZXRfdXNlcl9kYXRhX3RhYmxlKG0uZ3JvdXAoMSksICJsYXRlc3QiKQotICAgICAgICAgICAgICAgIGlmIGRhdGEgYW5kIGxlbihkYXRhKSA+IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNyY190ZXh0ID0gc2VsZi5zdG9yZS5nZXRfdXNlcl9kYXRhX2ZpbGUoZGF0YVswXVsnZnVsbF9uYW1lJ10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50IHNlbGYuZXJyb3JfbXNnKCJzcmMgbmFtZSBkb2VzIG5vdCBtYXRjaCAlcyIgJSBzZWxmLmxvY2FsX25hbWVfcGF0dGVybikKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxpZiBzcmMuc3RhcnRzd2l0aCgiZnRwIikgb3Igc3JjLnN0YXJ0c3dpdGgoImh0dHAiKTogIyBnZXQgVVJMCi0gICAgICAgICAgICBzcmNfdGV4dCA9IHNlbGYuc3RvcmUuZ2V0X3RleHRfZnJvbV91cmwoc3JjKQotICAgICAgICBlbGlmIHNyYy5zdGFydHN3aXRoKCJmaWxlOi8vIik6Ci0gICAgICAgICAgICAjc3JjX2ZpbGUgPSBzZWxmLnNhdmVkX2NvbmZpZ3NfZGlybmFtZSArIHBvc2l4cGF0aC5ub3JtcGF0aChzcmNbNzpdKS5sc3RyaXAoJy8nKS5yc3RyaXAoJy8nKQotICAgICAgICAgICAgc3JjX2ZpbGUgPSBzZWxmLnBhdGhfY29uY2F0KHNlbGYuc2F2ZWRfY29uZmlnc19kaXJuYW1lLCBzcmNbNzpdKQotICAgICAgICAgICAgaWYgc3JjX2ZpbGUgPT0gIiI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCJzcmMgJXMgY291bGQgbm90IGJlICIgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcnByZXRlZCBhcyBhIHZhbGlkIHNvdXJjZSBmb3IgYSBmaWxlIiAlIHNyYykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzcmNfdGV4dCA9IHNlbGYuc3RvcmUuZ2V0X3RleHRfZnJvbV91cmwoImZpbGU6Ly8iICsgc3JjX2ZpbGUpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZyhzcmMgKyAiOiIgKyBzdHIoZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coIlVua25vd24gY29uZmlndXJhdGlvbiIpCi0KLSAgICAgICAgbWVzc2FnZSA9ICIiCi0gICAgICAgIGlmIGxlbih3b3JkcykgPiAyOgotICAgICAgICAgICAgbWVzc2FnZSA9ICIgIi5qb2luKHdvcmRzWzI6XSkuc3RyaXAoJyInKQotCi0gICAgICAgICMKLSAgICAgICAgIyBtYXAgYW55IGFiYnJldmlhdGlvbnMKLSAgICAgICAgZHN0ID0gYWJicmV2aWF0aW9ucy5nZXQoZHN0LCBkc3QpCi0KLSAgICAgICAgIyBub3cgY29weSB0byBkZXN0Ci0gICAgICAgIGlmIGRzdCA9PSAicnVubmluZy1jb25maWciOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucGxheV9jb25maWdfbGluZXMoc3JjX3RleHQpCi0gICAgICAgIGVsaWYgZHN0ID09ICJ0ZXJtaW5hbCI6Ci0gICAgICAgICAgICByZXR1cm4gc3JjX3RleHQgIyByZXR1cm5pbmcgc3JjX3RleHQgaGVyZSBhbGxvdyAnfCcgdG8gd29yawotICAgICAgICBlbGlmIGRzdC5zdGFydHN3aXRoKCJjb25maWc6Ly8iKToKLSAgICAgICAgICAgIG0gPSByZS5zZWFyY2goc2VsZi5sb2NhbF9uYW1lX3BhdHRlcm4sIGRzdCkKLSAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgc3RvcmVfcmVzdWx0ID0gc2VsZi5zdG9yZS5zZXRfdXNlcl9kYXRhX2ZpbGUobS5ncm91cCgxKSwgc3JjX3RleHQpCi0gICAgICAgICAgICAgICAgaWYgc3RvcmVfcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqc29uLmxvYWRzKHN0b3JlX3Jlc3VsdCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coInJlc3Qgc3RvcmUgcmVzdWx0IG5vdCBqc29uIGZvcm1hdCIpCi0gICAgICAgICAgICAgICAgaWYgJ3N0YXR1cycgaW4gcmVzdWx0IGFuZCByZXN1bHRbJ3N0YXR1cyddID09ICdzdWNjZXNzJzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICBlbGlmICdtZXNzYWdlJyBub3QgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coInJlc3Qgc3RvcmUgcmVzdWx0IGRvZXNuJ3QgY29udGFpbiBlcnJvciBtZXNzYWdlIikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2cocmVzdWx0WydtZXNzYWdlJ10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiZHN0IG5hbWUgZG9lcyBub3QgbWF0Y2ggJXMiICUgc2VsZi5sb2NhbF9uYW1lX3BhdHRlcm4pCi0gICAgICAgIGVsaWYgZHN0LnN0YXJ0c3dpdGgoImZ0cCIpIG9yIGRzdC5zdGFydHN3aXRoKCJodHRwIik6Ci0gICAgICAgICAgICBzZWxmLnN0b3JlLmNvcHlfdGV4dF90b191cmwoZHN0LCBzcmNfdGV4dCwgbWVzc2FnZSkKLSAgICAgICAgZWxpZiBkc3Quc3RhcnRzd2l0aCgiZmlsZTovLyIpOgotICAgICAgICAgICAgZHN0X2ZpbGUgPSBzZWxmLnBhdGhfY29uY2F0KHNlbGYuc2F2ZWRfY29uZmlnc19kaXJuYW1lLCBkc3RbNzpdKQotICAgICAgICAgICAgZHN0X2RpciA9ICcvJy5qb2luKGRzdF9maWxlLnNwbGl0KCcvJylbOi0xXSkKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRzdF9kaXIpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coImluIGNyZWF0aW5nIGRlc3RpbmF0aW9uIGRpcmVjdG9yeTogJXMgWyVzXSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN0cihlKSwgZHN0X2RpcikpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcihkc3RfZGlyKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coImRlc3RpbmF0aW9uIGRpcmVjdG9yeSBpcyBub3QgYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWxpZCBkaXJlY3Rvcnk6ICVzIiAlIGRzdF9kaXIpCi0gICAgICAgICAgICB3aXRoIG9wZW4oZHN0X2ZpbGUsICd3JykgYXMgZjoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc3JjX3RleHQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coImluIHNhdmluZyBjb25maWcgZmlsZTogJXMgWyVzXSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cihlKSwgZHN0X2ZpbGUpKQotICAgICAgICBlbGlmIGRzdCA9PSAndHJhc2gnOgotICAgICAgICAgICAgaWYgZGF0YToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnN0b3JlLmRlbGV0ZV91c2VyX2RhdGFfZmlsZShkYXRhWzBdWydmdWxsX25hbWUnXSkKLSAgICAgICAgICAgICAgICBpZiAnc3RhdHVzJyBpbiByZXN1bHQgYW5kIHJlc3VsdFsnc3RhdHVzJ10gPT0gJ3N1Y2Nlc3MnOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgIGVsaWYgJ21lc3NhZ2UnIG5vdCBpbiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygicmVzdCBzdG9yZSByZXN1bHQgZG9lc24ndCBjb250YWluIGVycm9yIG1lc3NhZ2UiKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZyhyZXN1bHRbJ21lc3NhZ2UnXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50IHNlbGYuZXJyb3JfbXNnKCJzb3VyY2UgZmlsZSByZXRyaWV2ZWQsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1dCBjb3VsZCBub3QgY29weSB0byBkZXN0aW5hdGlvbiAlcyIgJSBkc3QpCi0gICAgICAgIHJldHVybgotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNwX2NvbmZfb2JqZWN0X3R5cGUKLSAgICAjICAgQ29tcGxldGlvbiBmdW5jdGlvbiBmb3IgYSBuYW1lZCBvYmplY3QsIHJldHVybnMgbmFtZXMgb2YKLSAgICAjICAgYXZhaWxhYmxlIG9ial90eXBlcwotICAgICMKLSAgICBkZWYgY3BfY29uZl9vYmplY3RfdHlwZShzZWxmLCB3b3JkcywgdGV4dCk6Ci0gICAgICAgIGlmIHdvcmRzWzBdIGluIG1pLm9ial90eXBlcyBhbmQgbGVuKHdvcmRzKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIHV0aWYuYWRkX2RlbGltKG9iamVjdHNfc3RhcnRpbmdfd2l0aCh3b3Jkc1swXSwgdGV4dCksICcgJykKLSAgICAgICAgc2VsZi5wcmludF9jb21wbGV0aW9uX2hlbHAoIjxjcj4iKQotICAgICAgICByZXR1cm4gW10KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjcF9jb25mX2ZpZWxkCi0gICAgIyAgSGFuZGxlIGlmIHdlJ3ZlIGdvdCBhIGJ1bmNoIG9mIGZpZWxkcyBiZWluZyBjb25jYXRlbmF0ZWQsCi0gICAgIyAgZS5nLiwgcHJpb3JpdHkgNDIgc3JjLXBvcnQgODAKLSAgICAjCi0gICAgZGVmIGNwX2NvbmZfZmllbGQoc2VsZiwgb2JqX3R5cGUsIHdvcmRzLCB0ZXh0KToKLSAgICAgICAgaWYgbGVuKHdvcmRzKSAlIDIgPT0gMTogCi0gICAgICAgICAgICBsYXRlc3RfZmllbGRfbmFtZSA9IHdvcmRzWy0xXQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZpZWxkX2luZm8gPSBtaS5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXS5nZXQobGF0ZXN0X2ZpZWxkX25hbWUsIE5vbmUpCi0gICAgICAgICAgICAjIGlmIHRoZXJlIHdhcyBubyBzaGFsbG93IG1hdGNoIG9mIHRleHQsIGRvIGRlZXAgbWF0Y2ggb2YgeHJlZnMgaWYgYW55Ci0gICAgICAgICAgICBpZiBmaWVsZF9pbmZvIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgb2JqX3R5cGUgaW4gbWkuYWxpYXNfb2JqX3R5cGVfeHJlZjoKLSAgICAgICAgICAgICAgICAgICAgaWYgbGF0ZXN0X2ZpZWxkX25hbWUgaW4gbWkuYWxpYXNfb2JqX3R5cGVfeHJlZltvYmpfdHlwZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZF9pbmZvID0gbWkub2JqX3R5cGVfaW5mb19kaWN0W2xhdGVzdF9maWVsZF9uYW1lXVsnZmllbGRzJ11bJ2lkJ10KLQotICAgICAgICAgICAgaWYgZmllbGRfaW5mbzoKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uX3RleHQgPSAiPCAlcyA+OiAiICUgZmllbGRfaW5mb1sndmVyYm9zZS1uYW1lJ10KLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uX3RleHQgKz0gZmllbGRfaW5mby5nZXQoJ2hlbHBfdGV4dCcsICIiKQotICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKGNvbXBsZXRpb25fdGV4dCkKLQotCi0gICAgICAgICAgICAjIHJldHVybiBjaG9pY2VzIGJhc2VkIG9uIHRoZSB0eXBlcwotICAgICAgICAgICAgaWYgbWkuaXNfZmllbGRfYm9vbGVhbihvYmpfdHlwZSwgbGF0ZXN0X2ZpZWxkX25hbWUpOgotICAgICAgICAgICAgICAgIHJldHVybiB1dGlmLmFkZF9kZWxpYihbeCBmb3IgeCBpbiBbIlRydWUiLCAiRmFsc2UiXSBpZiB4LnN0YXJ0c3dpdGgodGV4dCldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICcpCi0KLSAgICAgICAgICAgICMgVXNlIHRoZSAnVmFsdWVzOicgcHJlZml4IGluIHRoZSBoZWxwX3RleHQgYXMgYSB3YXkKLSAgICAgICAgICAgICMgb2YgZW51bWVyYXRpbmcgdGhlIGRpZmZlcmVudCBjaG9pY2VzCi0gICAgICAgICAgICBpZiBmaWVsZF9pbmZvLmdldCgnaGVscF90ZXh0JywgIiIpLnN0YXJ0c3dpdGgoJ1ZhbHVlczonKToKLSAgICAgICAgICAgICAgICB2YWx1ZXMgPSBmaWVsZF9pbmZvLmdldCgnaGVscF90ZXh0JykucmVwbGFjZSgiVmFsdWVzOiIsICIiKQotICAgICAgICAgICAgICAgIHJldHVybiB1dGlmLmFkZF9kZWxpbShbeCBmb3IgeCBpbiB2YWx1ZXMucmVwbGFjZSgiICIsIiIpLnNwbGl0KCcsJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zdGFydHN3aXRoKHRleHQpXSwgJyAnKQotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIHNwZWNpYWwgY2FzZXM6Ci0gICAgICAgICAgICBpZiBvYmpfdHlwZSA9PSAndm5zLWludGVyZmFjZS1ydWxlJyBhbmQgbGF0ZXN0X2ZpZWxkX25hbWUgPT0gJ21hYyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWYuYWRkX2RlbGltKG9iamVjdHNfc3RhcnRpbmdfd2l0aCgnaG9zdCcsIHRleHQpLCAnICcpCi0gICAgICAgICAgICBlbGlmIG9ial90eXBlID09ICd2bnMtaW50ZXJmYWNlLXJ1bGUnIGFuZCBsYXRlc3RfZmllbGRfbmFtZSA9PSAnc3dpdGNoJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gdXRpZi5hZGRfZGVsaW0ob2JqZWN0c19zdGFydGluZ193aXRoKCdzd2l0Y2gnLCB0ZXh0KSwgJyAnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyB3ZSd2ZSBnb3QgYW4gZXZlbiBudW1iZXIgb2YgZmllbGQtdmFsdWUgcGFpcnMsIHNvIGp1c3QgZ2l2ZSB0aGUgbGlzdAotICAgICAgICAgICAgIyBvZiBmaWVsZHMgZm9yIHRoaXMgb2JqX3R5cGUKLSAgICAgICAgICAgIHJldHVybiB1dGlmLmFkZF9maWVsZHMoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmllbGRzX2Zvcl9jdXJyZW50X3N1Ym1vZGVfc3RhcnRpbmdfd2l0aCh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgJyAnKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHZucyBtZXRob2RzLgotICAgICMKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2bnNfb2JqX3R5cGUKLSAgICAjICByZXR1cm4gVHJ1ZSBmb3IgYW4gb2JqX3R5cGUgYXNzb2NpYXRlZCB3aXRoIHZucywgaW50ZW5kZWQgdG8gaWRlbnRpZnkKLSAgICAjICB0YWJsZXMgd2hpY2ggYXJlIG9yIGFyZW4ndCBhdmFpbGFibGUgaW4gZGVidWcgbW9kZSAKLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiB2bnNfb2JqX3R5cGUob2JqX3R5cGUpOgotICAgICAgICBpZiBvYmpfdHlwZSBpbiBbICd2bnMtaW50ZXJmYWNlJywgJ3Zucy1hY2Nlc3MtbGlzdC1lbnRyeScsICd2bnMtYWNjZXNzLWxpc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd2bnMtaW50ZXJmYWNlLWFjY2Vzcy1saXN0JywgJ3Zucy1pbnRlcmZhY2UtcnVsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3Zucy1hY2Nlc3MtZ3JvdXAnLCAndm5zLWludGVyZmFjZXMnLCAnaG9zdC12bnMtaW50ZXJmYWNlJ106Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2bnNfZGVidWdfb2JqX3R5cGUKLSAgICAjICByZXR1cm4gVHJ1ZSBpZiB0aGUgb2JqX3R5cGUgaXMgYXZhaWxhYmxlIGluIHRoZSBub24tZGVidWcgbW9kZQotICAgICMKLSAgICBkZWYgdm5zX2RlYnVnX29ial90eXBlKHNlbGYsIG9ial90eXBlKToKLSAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlmIHNlbGYuaW5fY29uZmlnX3N1Ym1vZGUoImNvbmZpZy12bnMtIikgYW5kIG9ial90eXBlID09ICd2bnMtYWNjZXNzLWxpc3QtZW50cnknOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBub3Qgc2VsZi52bnNfb2JqX3R5cGUob2JqX3R5cGUpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgdm5zX2RlYnVnX3Nob3dfY29tbWFuZHMKLSAgICAjICByZXR1cm4gVHJ1ZSBpZiB0aGUgc2hvdyBjb21tYW5kIHZucyBvcHRpb24gaXMgYXZhaWxhYmUgaW4gdGhlIGN1cnJlbnQgZGVidWcgbW9kZQotICAgICMKLSAgICBkZWYgdm5zX2RlYnVnX3Nob3dfY29tbWFuZHMoc2VsZiwgc2hvd19jb21tYW5kKToKLSAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlmIHNlbGYuaW5fY29uZmlnX3N1Ym1vZGUoKSBhbmQgc2hvd19jb21tYW5kID09ICdkb19zaG93X3Zuc19pbnRlcmZhY2VfcnVsZSc6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBpZiBzZWxmLmluX2NvbmZpZ192bnNfaWZfbW9kZSgpIGFuZCBzaG93X2NvbW1hbmQgPT0gJ2RvX3Nob3dfdm5zX2FjY2Vzc19ncm91cCc6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBpZiBzaG93X2NvbW1hbmQgPT0gJ2RvX3Nob3dfdm5zJzoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBub3Qgc2VsZi52bnNfb2JqX3R5cGUoc2hvd19jb21tYW5kLnJlcGxhY2UoJ18nLCAnLScpLnJlcGxhY2UoJ2RvLXNob3ctJywgJycsIDEpKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHZuc19maW5kX25hbWUKLSAgICAjICBSZXR1cm4gVHJ1ZSB3aGVuIGZvdW5kLCBGYWxzZSBvdGhlcndpc2UKLSAgICAjCi0gICAgZGVmIHZuc19maW5kX25hbWUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuZ2V0X29iamVjdF9mcm9tX3N0b3JlKCJ2bnMtZGVmaW5pdGlvbiIsIG5hbWUpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2bnNfZmluZF9hbmRfc2V0X25hbWUKLSAgICAjICBSZXR1cm4gVHJ1ZSB3aGVuIHRoZSBuYW1lIGlzIGtub3duLCBhcyBhIHNpZGUgZWZmZWN0LCBzZXQgc2VsZi52bnNfbmFtZQotICAgICMgIEludmFsaWQgbmFtZXMgYXJlIG1hbmFnZWQgYnkgdGhlIG1vZGVsLCBzZWUgVm5zTmFtZVZhbGlkYXRvcgotICAgICMKLSAgICBkZWYgdm5zX2ZpbmRfYW5kX3NldF9uYW1lKHNlbGYsIHdvcmRzKToKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAwOgotICAgICAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coInZucyA8bmFtZT4gcmVxdWlyZWQiKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGVsaWYgbGVuKHdvcmRzKSA+IDE6Ci0gICAgICAgICAgICBwcmludCBzZWxmLmVycm9yX21zZygiQWRkaXRpb25hbCB0ZXh0IGFmdGVyIHZucyBuYW1lIGlnbm9yZWQiKQotICAgICAgICBuYW1lID0gd29yZHNbMF0KLSAgICAgICAgaWYgc2VsZi52bnNfZmluZF9uYW1lKG5hbWUpOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2bnNfZmluZF9hbmRfc2V0X2V4aXN0aW5nX25hbWUKLSAgICAjICBSZXR1cm4gVHJ1ZSB3aGVuIHRoZSBuYW1lIGlzIGtub3duLCBhcyBhIHNpZGUgZWZmZWN0LCBzZXQgc2VsZi52bnNfbmFtZQotICAgICMgIEFuZCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgY29uY2VybmluZyB0aGUgZmFpbHVyZS4KLSAgICAjCi0gICAgZGVmIHZuc19maW5kX2FuZF9zZXRfZXhpc3RpbmdfbmFtZShzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIGlmIHNlbGYudm5zX2ZpbmRfYW5kX3NldF9uYW1lKHdvcmRzKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlmIGxlbih3b3JkcykgPiAwOgotICAgICAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coIk5vdCBGb3VuZDogdm5zICclcyciICUgd29yZHNbMF0pCi0gICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgdm5zX2ZpbmRfb3JfYWRkX25hbWUKLSAgICAjICBSZXR1cm4gVHJ1ZSB3aGVuIGVpdGhlciB0aGUgdm5zIG5hbWUgY3VycmVudGx5IGV4aXN0cywgb3Igb2YgYSBjcmVhdGUKLSAgICAjICBmb3IgdGhlIHZucyBuYW1lIHN1Y2NlZWRlZC4KLSAgICAjCi0gICAgZGVmIHZuc19maW5kX29yX2FkZF9uYW1lKHNlbGYsIHdvcmRzKToKLSAgICAgICAgaWYgc2VsZi52bnNfZmluZF9hbmRfc2V0X25hbWUod29yZHMpOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgbmFtZSA9IHdvcmRzWzBdCi0gICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgaWRlbnQgPSB7bWkucGsoInZucy1kZWZpbml0aW9uIik6IG5hbWUgfQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnJlc3RfY3JlYXRlX29iamVjdCgidm5zLWRlZmluaXRpb24iLCBpZGVudCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsICd2bnMtZGVmaW5pdGlvbicpCi0gICAgICAgICAgICBwcmludCBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJldHVybiBUcnVlCi0gICAKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2bnNfYWxsX2lkcwotICAgICMKLSAgICBkZWYgdm5zX2FsbF9pZHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbeFsnaWQnXSBmb3IgeCBpbiBzZWxmLmdldF90YWJsZV9mcm9tX3N0b3JlKCJ2bnMtZGVmaW5pdGlvbiIpXQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHZuc19jb252ZXJ0X3RhYmxlX2lkCi0gICAgIyAgcmV0dXJuIGEgbGlzdCBvZiB0d28gZW50cmllcywgdGhlIGZpcnN0IGlzIHRoZSB2bnMgbmFtZSwgdGhlIHNlY29uZCBpcyB0aGUKLSAgICAjICB1cGRhdGVkIGNvbHVtbiB2YWx1ZQotICAgICMKLSAgICBkZWYgdm5zX2NvbnZlcnRfdGFibGVfaWQoc2VsZiwgb2JqX3R5cGUsIHJvdywgaWQpOgotICAgICAgICBmaWVsZHMgPSByb3dbaWRdLnNwbGl0KCd8JykKLSAgICAgICAgaWYgbGVuKGZpZWxkcykgPT0gMToKLSAgICAgICAgICAgICMgSnVzdCBpbiBjYXNlIHRoZXJlJ3MgYW4gZXJyb3IgaW4gdGhlIHRhYmxlCi0gICAgICAgICAgICByZXR1cm4gW2ZpZWxkc1swXSwgIjxlcnJvcj4iXQotICAgICAgICBpZiBsZW4oZmllbGRzKSA9PSAyOgotICAgICAgICAgICAgcmV0dXJuIGZpZWxkcwotICAgICAgICBlbGlmIGxlbihmaWVsZHMpID09IDM6Ci0gICAgICAgICAgICBpZiBvYmpfdHlwZSA9PSAnaG9zdC12bnMtaW50ZXJmYWNlJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gW2ZpZWxkc1sxXSwgZmllbGRzWzJdXQotICAgICAgICAgICAgZWxpZiBvYmpfdHlwZSA9PSAndm5zLWFjY2Vzcy1saXN0LWVudHJ5JzoKLSAgICAgICAgICAgICAgICByb3dbJ3Zucy1hY2Nlc3MtbGlzdCddID0gZmllbGRzWzFdCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtmaWVsZHNbMF0sIGZpZWxkc1syXV0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coIjM6IHZuc19jb252ZXJ0X3RhYmxlX2lkIGNhc2UgJXMiICUgb2JqX3R5cGUpCi0gICAgICAgIGVsaWYgbGVuKGZpZWxkcykgPT0gNDoKLSAgICAgICAgICAgIGlmIG9ial90eXBlID09ICd2bnMtaW50ZXJmYWNlLWFjY2Vzcy1saXN0JzoKLSAgICAgICAgICAgICAgICAjIFhYWCBvdWdodCB0byB2YWxpZGF0ZQotICAgICAgICAgICAgICAgIGlmIHJvd1sndm5zLWFjY2Vzcy1saXN0J10uc3BsaXQoJ3wnKVsxXSAhPSBmaWVsZHNbMl06Ci0gICAgICAgICAgICAgICAgICAgIHByaW50IHNlbGYuZXJyb3JfbXNnKCd2bnMtaW50ZXJmYWNlLWFjY2Vzcy1saXN0IGluY29uc2lzdGVudCAlcyBhbmQgaWQgJWQnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocm93Wyd2bnMtYWNjZXNzLWxpc3QnXSwgcm93W2lkXSkpCi0gICAgICAgICAgICAgICAgcm93Wyd2bnMtYWNjZXNzLWxpc3QnXSA9IGZpZWxkc1syXQotICAgICAgICAgICAgICAgIHJvd1sndm5zLWludGVyZmFjZSddID0gZmllbGRzWzFdCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtmaWVsZHNbMF0sIGZpZWxkc1syXV0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coIjQ6IHZuc19jb252ZXJ0X3RhYmxlX2lkIGNhc2UgJXMiICUgb2JqX3R5cGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCBzZWxmLmVycm9yX21zZygidm5zX2NvbnZlcnRfdGFibGVfaWQ6IGxlbmd0aCAlZCBub3QgbWFuYWdlZCIgJSBsZW4oZmllbGRzKSkKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgdm5zX3RhYmxlX2lkX3RvX3Zuc19jb2x1bW4KLSAgICAjCi0gICAgIyAgdm5zIHJlbGF0ZWQgdGFibGVzIGluIHRoZSBtb2RlbCBoYXZlIHVuaXF1ZSBpZCdzIGNyZWF0ZWQgYnkgY29uY2F0ZW5hdGluZyB0aGUKLSAgICAjICB2bnMgbmFtZSB3aXRoIG90aGVyIGZpZWxkcy4gIEZvciB0aG9zZSB0YWJsZXMsIHNlcGFyYXRlIHRoZSB2bnMgaWQncyBmcm9tIHRoZQotICAgICMgIGFzc29jaWF0ZWQgZmllbGRzLCBhbmQgdHJhbnNmb3JtIHRoZSB2bnMgYXNzb2NpYXRpb24gaW50byBpdHMgb3duIGNvbHVtbi4KLSAgICAjCi0gICAgIyAgb2JqX3R5cGUgaXMgdGhlIG5hbWUgb2YgdGhlIHRhYmxlLgotICAgICMKLSAgICAjICBmb3IgdGhlIHZuc19pbnRlcmZhY2UsIHRoZSB2bnMgbmFtZSBpcyBleHRyYWN0ZWQgZnJvbSBzZXZlcmFsIGZpZWxkcywKLSAgICAjICB2YWxpZGF0ZWQsIHVwZGF0ZWQgdG8gZXhjbHVkZSB0aGUgdm5zIG5hbWUsIHRoZW4gYSBuZXcgY29sdW1uIGlzIGFkZGVkCi0gICAgIwotICAgIGRlZiB2bnNfdGFibGVfaWRfdG9fdm5zX2NvbHVtbihzZWxmLCBvYmpfdHlwZSwgZW50cmllcyk6Ci0gICAgICAgIGlkID0gbWkucGsob2JqX3R5cGUpCi0gICAgICAgIGZvciByb3cgaW4gZW50cmllczoKLSAgICAgICAgICAgIGlmIHJvd1tpZF06Ci0gICAgICAgICAgICAgICAgdHlwZV9pbmZvID0gbWkub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ11baWRdWyd0eXBlJ10KLSAgICAgICAgICAgICAgICBpZiB0eXBlX2luZm8gPT0gJ2NvbXBvdW5kLWtleSc6Ci0gICAgICAgICAgICAgICAgICAgIG1pLnNwbGl0X2NvbXBvdW5kX2ludG9fZGljdChvYmpfdHlwZSwgaWQsIHJvdykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjb252ZXJ0X2lkID0gc2VsZi52bnNfY29udmVydF90YWJsZV9pZChvYmpfdHlwZSwgcm93LCBpZCkKLSAgICAgICAgICAgICAgICAgICAgcm93Wyd2bnMnXSA9IGNvbnZlcnRfaWRbMF0KLSAgICAgICAgICAgICAgICAgICAgcm93W2lkXSA9IGNvbnZlcnRfaWRbMV0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2bnNfZm9yZWlnbl9rZXlfdG9fYmFzZV9uYW1lCi0gICAgIyAgRm9yIGZvcmVpZ24ga2V5J3Mgd2hpY2ggdm5zIHdhbnRzIHRvICdzaG93JywgY29udmVydCB0aGUKLSAgICAjICBmb3JpZWduIGtleSB0byB0aGUgbGFzdCBlbnRyeSBmb3IgdGhlIGZpZWxkLCBhbmQgZGlzcGxheQotICAgICMgIHRoYXQgZW50cnkKLSAgICAjCi0gICAgZGVmIHZuc19mb3JlaWduX2tleV90b19iYXNlX25hbWUoc2VsZiwgb2JqX3R5cGUsIGVudHJpZXMpOgotICAgICAgICBmb3JlaWduX2tleXMgPSBtaS5vYmpfdHlwZV9mb3JlaWduX2tleXMob2JqX3R5cGUpCi0gICAgICAgIGZvciByb3cgaW4gZW50cmllczoKLSAgICAgICAgICAgICMgY29udmVydCB0aGUgcnVsZSBpZCBpbnRvIHRoZSBydWxlIHN1ZmZpeAotICAgICAgICAgICAgZm9yIGZvcmVpZ25fa2V5IGluIGZvcmVpZ25fa2V5czoKLSAgICAgICAgICAgICAgICBpZiBmb3JlaWduX2tleSBpbiByb3cgYW5kIHJvd1tmb3JlaWduX2tleV0uZmluZCgnfCcpOgotICAgICAgICAgICAgICAgICAgICBmaWVsZHMgPSByb3dbZm9yZWlnbl9rZXldLnNwbGl0KCd8JykKLSAgICAgICAgICAgICAgICAgICAgcm93W2ZvcmVpZ25fa2V5XSA9IGZpZWxkc1stMV0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2bnNfam9pbl9ob3N0X2ZpZWxkcwotICAgICMgIEZvciB2bnMtaW50ZXJmYWNlcyBuZXcgZmllbGRzIGFyZSBqb2luZWQgZnJvbSB0aGUgaG9zdCB0YWJsZS4KLSAgICAjCi0gICAgZGVmIHZuc19qb2luX2hvc3RfZmllbGRzKHNlbGYsIG9ial90eXBlLCBlbnRyaWVzKToKLSAgICAgICAgaWYgb2JqX3R5cGUgPT0gJ3Zucy1pbnRlcmZhY2UnOgotICAgICAgICAgICAgIwotICAgICAgICAgICAgaG9zdF9kYXBfZGljdCA9IHNlbGYuY3JlYXRlX2F0dGFjaG1lbnRfZGljdCgpCi0gICAgICAgICAgICBob3N0X2lwX2RpY3QgPSBzZWxmLmNyZWF0ZV9pcF9kaWN0KCkKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIHZuc19pbnRlcmZhY2Vfa2V5ID0gbWkucGsoJ3Zucy1pbnRlcmZhY2UnKQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBmb3Igdm5zLWludGVyZmFjZSwgY3VycmVudGx5IHZsYW4gaXMgc2hvd24gaW4gdGhlIG91dHB1dCwKLSAgICAgICAgICAgICMgYW5kIHRoaXMgbXVzdCBiZSBqb2luZWQgZnJvbSB0aGUgaG9zdCdzIHRhYmxlLiAgQWdhaW4sIGl0Ci0gICAgICAgICAgICAjIGlzIGJldHRlciB0byBjb2xsZWN0IHRoZSBjb21wbGVlIGhvc3QgdGFibGUsIHRoZW4gY3JlYXRlCi0gICAgICAgICAgICAjIGEgaG9zdCBkaWN0aW9uYXJ5Ci0KLSAgICAgICAgICAgIGhvc3RzX3Jvd3NfZGljdCA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KCdob3N0JywgJ21hYycpCi0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgcmUtaW5kZXggaG9zdF9yb3dzX2RpY3QgYmFzZWQgbm90IG9uIG1hYywgYnV0IG9uIGF0dGFjaG1lbnQgcG9pbnQsCi0gICAgICAgICAgICAjICB3aGljaCBpcyB0aGUgc3VtIG9mIHRoZSBzd2l0Y2grcG9ydC4gIHRoZSBvYmplY3RpdmUgaGVyZSBpcyB0bwotICAgICAgICAgICAgIyAgaWRlbnRpZnkgdGhlIG51bWJlciBvZiBpdGVtcyBvbiBhIHNwZWNpZmljLXN3aXRjaCBwb3J0LgotICAgICAgICAgICAgIwotICAgICAgICAgICAgYXBfZGljdCA9IHt9ICMgaW5kZXhlZCBieSBkcGlkfHBvcnQKLSAgICAgICAgICAgIGZvciAobWFjLCB2YWx1ZXMpIGluIGhvc3RfZGFwX2RpY3QuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgotICAgICAgICAgICAgICAgICAgICBrZXkgPSAiJXN8JXMiICUgKHZhbHVlWydzd2l0Y2gnXSwgdmFsdWVbJ2luZ3Jlc3MtcG9ydCddKQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qga2V5IGluIGFwX2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcF9kaWN0W2tleV0gPSAwCi0gICAgICAgICAgICAgICAgICAgIGFwX2RpY3Rba2V5XSArPSAxCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIHRoZSBhcF9kaWN0IGNvdW50cyB0aGUgbnVtYmVyIG9mIG1hYydzIGFzc29jaWF0ZWQgd2l0aCBhbiBhcC4KLSAgICAgICAgICAgICMgc29ydCB0aGUgaG9zdF9yb3dzX2RpY3QgYmFzZWQgb24gdGhlIGxvd2VzdCBhcCBpbiBlYWNoIGdyb3VwLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgZm9yIChtYWMsIHZhbHVlKSBpbiBob3N0X2RhcF9kaWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgbmV3X3ZhbHVlID0gc29ydGVkKHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9bGFtYmRhIGs6YXBfZGljdFsiJXN8JXMiICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrWydzd2l0Y2gnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1snaW5ncmVzcy1wb3J0J10pXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wPWxhbWJkYSB4LHk6IGludCh4KSAtIGludCh5KSkKLSAgICAgICAgICAgICAgICAjIGFkZCBhIHRhZyB0byB0aGUgZGljdGlvbmFyeSBvZiB0aGUgZmlyc3QgbGlzdCBpdGVtCi0gICAgICAgICAgICAgICAgIyB3aGVuIHRoZSBhcF9kaWN0J3MgZW50cnkncyBjb3VudCBpcyAxLgotICAgICAgICAgICAgICAgIGZpcnN0ID0gbmV3X3ZhbHVlWzBdCi0gICAgICAgICAgICAgICAgaWYgYXBfZGljdFsnJXN8JXMnICUgKGZpcnN0Wydzd2l0Y2gnXSwgZmlyc3RbJ2luZ3Jlc3MtcG9ydCddKV0gPT0gMToKLSAgICAgICAgICAgICAgICAgICAgbmV3X3ZhbHVlWzBdWydwcmltZSddID0gVHJ1ZQotICAgICAgICAgICAgICAgIGhvc3RfZGFwX2RpY3RbbWFjXSA9IG5ld192YWx1ZQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciByb3cgaW4gZW50cmllczoKLSAgICAgICAgICAgICAgICBmaWVsZHMgPSByb3dbJ2lkJ10uc3BsaXQoJy8nKQotICAgICAgICAgICAgICAgIGlmIG5vdCAncnVsZScgaW4gcm93OgotICAgICAgICAgICAgICAgICAgICByb3dbJ3J1bGUnXSA9IGZpZWxkc1swXQotICAgICAgICAgICAgICAgIGlmIGxlbihmaWVsZHMpICE9IDI6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgc2lsZW50bHkgaWdub3JlIGFueSBpZCdzIG5vdCBjb250YWluaW5nIGhvc3RzCi0gICAgICAgICAgICAgICAgaG9zdCA9IGZpZWxkc1sxXQotCi0gICAgICAgICAgICAgICAgcm93WydtYWMnXSA9IGhvc3QKLSAgICAgICAgICAgICAgICBob3N0X2RpY3QgPSB7J21hYycgOiBob3N0fQotICAgICAgICAgICAgICAgIHJvd1snYXR0YWNobWVudC1wb2ludHMnXSA9IHNlbGYuZ2V0X2F0dGFjaG1lbnRfcG9pbnRzKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdF9kaWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdF9kYXBfZGljdCkKLSAgICAgICAgICAgICAgICByb3dbJ2lwcyddID0gc2VsZi5nZXRfaXBfYWRkcmVzc2VzKGhvc3RfZGljdCwgaG9zdF9pcF9kaWN0KQotCi0gICAgICAgICAgICAgICAgaG9zdF9yb3cgPSBob3N0c19yb3dzX2RpY3QuZ2V0KGhvc3QsIE5vbmUpCi0gICAgICAgICAgICAgICAgaWYgaG9zdF9yb3cgYW5kIGxlbihob3N0X3JvdykgPT0gMSBhbmQgJ3ZsYW4nIGluIGhvc3Rfcm93WzBdOgotICAgICAgICAgICAgICAgICAgICByb3dbJ3ZsYW4nXSA9IGhvc3Rfcm93WzBdWyd2bGFuJ10KLSAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHZuc19qb2luX3N3aXRjaF9maWVsZHMKLSAgICAjICBGb3Igdm5zLWludGVyZmFjZXMgd2l0aCBlbnRyaWVzIGFyaXNpbmcgZnJvbSBzd2l0Y2ggaW50ZXJmYWNlIHJ1bGVzLAotICAgICMgIGpvaW4gaW4gdGhlIHN3aXRjaCBhbmQgcG9ydC4KLSAgICAjCi0gICAgZGVmIHZuc19qb2luX3N3aXRjaF9maWVsZHMoc2VsZiwgdm5zX25hbWUsIGVudHJpZXMpOgotICAgICAgICAjCi0gICAgICAgICMgc3RvcmUgYWxsIHRoZSBydWxlcyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyB2bnMsCi0gICAgICAgICMgaW5kZXggdGhlbSBieSB0aGUgcHJpbWFyeSBrZXkuCi0gICAgICAgIGtleSA9IG1pLnBrKCd2bnMtaW50ZXJmYWNlLXJ1bGUnKQotICAgICAgICBpZiB2bnNfbmFtZSA9PSBOb25lOgotICAgICAgICAgICAgIyB2bnNfbmFtZSA9PSBOb25lLCB0aGlzIG1lYW5zICdhbGwnCi0gICAgICAgICAgICB2bnNfaWZyX2RpY3QgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgndm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlYXJjaF9rZXkgPSBzZWxmLnVuaXF1ZV9rZXlfZnJvbV9ub25fdW5pcXVlKFt2bnNfbmFtZV0pCi0gICAgICAgICAgICB2bnNfaWZyX2RpY3QgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgndm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9rZXkpCi0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgaWYgJ3J1bGUnIGluIGVudHJ5OgotICAgICAgICAgICAgICAgIHJ1bGUgPSBlbnRyeVsncnVsZSddCi0gICAgICAgICAgICAgICAgaWYgcnVsZSBpbiB2bnNfaWZyX2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgIGVudHJ5Wydzd2l0Y2gnXSA9IHZuc19pZnJfZGljdFtydWxlXVswXS5nZXQoJ3N3aXRjaCcsICIiKQotICAgICAgICAgICAgICAgICAgICBlbnRyeVsncG9ydHMnXSA9IHZuc19pZnJfZGljdFtydWxlXVswXS5nZXQoJ3BvcnRzJywgIiIpCi0KLSAgICAjCi0gICAgIyBlbmQgb2Ygdm5zIG1ldGhvZHMuCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMKLQotICAgICMKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZGVidWdfb2JqX3R5cGUKLSAgICAjICBSZXR1cm4gVHJ1ZSB3aGVuIHRoZSBvYmplY3QgaXMgYXZhaWxhYmxlLCBpbiBzZWxmLmRlYnVnIG1vZGUsIG1vcmUgb2JqZWN0cwotICAgICMgIGFyZSBhdmFpbGFibGUuCi0gICAgIwotICAgIGRlZiBkZWJ1Z19vYmpfdHlwZShzZWxmLCBvYmpfdHlwZSk6Ci0gICAgICAgIGlmIHNlbGYuZGVidWc6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBpZiBtaS5pc19vYmpfdHlwZV9zb3VyY2VfZGVidWdfb25seShvYmpfdHlwZSk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgc2VsZi52bnNfZGVidWdfb2JqX3R5cGUob2JqX3R5cGUpOgotICAgICAgICAgICAgaWYgbm90IG9ial90eXBlIGluIG1pLmFsaWFzX29ial90eXBlczoKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIGdlbmVyaWMgcGFyc2luZyByb3V0aW5lcwotICAgICMgCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY29tcGxldGlvbl9yZXNldAotICAgICMKLSAgICBkZWYgY29tcGxldGlvbl9yZXNldChzZWxmKToKLSAgICAgICAgc2VsZi5sYXN0X2xpbmUgPSBOb25lCi0gICAgICAgIHNlbGYubGFzdF9vcHRpb25zID0gTm9uZQotICAgICAgICBzZWxmLmNvbXBsZXRpb25fY2FjaGUgPSBUcnVlCi0gICAgICAgIHNlbGYubGFzdF9jb21wbGV0aW9uX2NoYXIgPSByZWFkbGluZS5nZXRfY29tcGxldGlvbl90eXBlKCkKLQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNvbXBsZXRlcgotICAgICMgIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdXNlciBpbnB1dAotICAgICMKLSAgICBkZWYgY29tcGxldGVyKHNlbGYsIHRleHQsIHN0YXRlKToKLSAgICAgICAgcXVlc3Rpb25fbWFyayA9IG9yZCgnPycpCi0gICAgICAgIGlmIHJlYWRsaW5lLmdldF9jb21wbGV0aW9uX3R5cGUoKSA9PSBxdWVzdGlvbl9tYXJrOgotICAgICAgICAgICAgaWYgbGVuKHJlYWRsaW5lLmdldF9saW5lX2J1ZmZlcigpKSA9PSAwOgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIG1hbmFnZSBwcmludGluZyBvZiBoZWxwIHRleHQgZHVyaW5nIGNvbW1hbmQgY29tcGxldGlvbgotICAgICAgICAgICAgICAgIGhlbHBfdGV4dCA9IHNlbGYuaGVscF9zcGxhc2goTm9uZSwgdGV4dCkKLSAgICAgICAgICAgICAgICBpZiBoZWxwX3RleHQgIT0gIiI6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKGhlbHBfdGV4dCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcmlnbGluZSA9IHJlYWRsaW5lLmdldF9saW5lX2J1ZmZlcigpCi0gICAgICAgICAgICAjIFNlZSBpZiB3ZSBoYXZlIGEgY2FjaGVkIHJlcGx5IGFscmVhZHkKLSAgICAgICAgICAgIGlmIChzZWxmLmNvbXBsZXRpb25fY2FjaGUgYW5kIG9yaWdsaW5lID09IHNlbGYubGFzdF9saW5lIGFuZCAKLSAgICAgICAgICAgICAgICBzZWxmLmxhc3RfY29tcGxldGlvbl9jaGFyID09IHJlYWRsaW5lLmdldF9jb21wbGV0aW9uX3R5cGUoKSBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLmxhc3Rfb3B0aW9ucyk6Ci0KLSAgICAgICAgICAgICAgICBpZiBzdGF0ZSA8IGxlbihzZWxmLmxhc3Rfb3B0aW9ucyk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxhc3Rfb3B0aW9uc1tzdGF0ZV0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIGFwcGFyZW50bHksIGZvciB0aGUgbGludXggVk0gY2hvaWNlIGRvbid0IHByaW50IAotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmxhc3Rfb3B0aW9ucyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLmxhc3Rfb3B0aW9ucykgPiAxIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgc2VsZi5sYXN0X2NvbXBsZXRpb25fY2hhciA9PSBvcmQoJ1x0Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzX3RleHQgPSBzZWxmLmNob2ljZXNfdGV4dF9idWlsZGVyKHNlbGYubGFzdF9vcHRpb25zKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmludF9jb21wbGV0aW9uX2hlbHAoY2hvaWNlc190ZXh0KQotCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY29tcGxldGlvbl9za2lwOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21wbGV0aW9uX2NhY2hlID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tcGxldGlvbl9za2lwID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAgICAgc2VsZi5jb21wbGV0aW9uX3Jlc2V0KCkKLQotICAgICAgICAgICAgIyBwYXJzZSB3aGF0IHVzZXIgaGFzIHR5cGVkIHNvIGZhcgotCi0gICAgICAgICAgICBiZWdpbiA9IHJlYWRsaW5lLmdldF9iZWdpZHgoKQotICAgICAgICAgICAgZW5kID0gcmVhZGxpbmUuZ2V0X2VuZGlkeCgpCi0KLSAgICAgICAgICAgICMgRmluZCB3aGljaCBjb21tYW5kIHdlJ3JlIGluIGZvciBhIHNlbWljb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBzaW5nbGUgY29tbWFuZHMKLSAgICAgICAgICAgICMgTE9PSyEgVGhpcyBkb2Vzbid0IGhhbmRsZSBjYXNlcyB3aGVyZSBhbiBlYXJsaWVyIGNvbW1hbmQgaW4gdGhlIGxpbmUgY2hhbmdlZAotICAgICAgICAgICAgIyB0aGUgbW9kZSBzbyB0aGUgY29tcGxldGlvbiBmb3IgbGF0ZXIgY29tbWFuZHMgaW4gdGhlIGxpbmUgc2hvdWxkIGJlIGRpZmZlcmVudC4KLSAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIGlmIHlvdSB0eXBlZCAiZW5hYmxlOyBjb25mIiBpdCB3b24ndCBkZXRlY3QgdGhhdCBpdCBzaG91bGQgYmUKLSAgICAgICAgICAgICMgYWJsZSB0byBjb21wbGV0ZSAiY29uZiIgdG8gImNvbmZpZ3VyZSIgYmVjYXVzZSB0aGUgZW5hYmxlIGNvbW1hbmQgaGFzIG5vdCBiZWVuCi0gICAgICAgICAgICAjIGV4ZWN1dGVkIHlldCwgc28geW91J3JlIG5vdCBpbiBlbmFibGUgbW9kZSB5ZXQuIEhhbmRsaW5nIHRoYXQgY2FzZSB3b3VsZCBiZQotICAgICAgICAgICAgIyBub24tdHJpdmlhbCBJIHRoaW5rLCBhdCBsZWFzdCB3aXRoIHRoZSBjdXJyZW50IENMSSBmcmFtZXdvcmsuCi0gICAgICAgICAgICBjb21tYW5kX2JlZ2luID0gMAotICAgICAgICAgICAgY29tbWFuZF9lbmQgPSAwCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGNvbW1hbmRfZW5kID0gc2VsZi5maW5kX3dpdGhfcXVvdGluZyhvcmlnbGluZSwgJzsnLCBzdGFydF9pbmRleD1jb21tYW5kX2JlZ2luKQotICAgICAgICAgICAgICAgIGlmIGNvbW1hbmRfZW5kIDwgMDoKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9lbmQgPSBsZW4ob3JpZ2xpbmUpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgaWYgYmVnaW4gPj0gY29tbWFuZF9iZWdpbiBhbmQgZW5kIDw9IGNvbW1hbmRfZW5kOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGNvbW1hbmRfYmVnaW4gPSBjb21tYW5kX2VuZCArIDEKLSAgICAgICAgICAgIAotICAgICAgICAgICAgIyBTa2lwIHBhc3QgYW55IGxlYWRpbmcgd2hpdGVzcGFjZSBpbiB0aGUgY29tbWFuZAotICAgICAgICAgICAgd2hpbGUgY29tbWFuZF9iZWdpbiA8IGJlZ2luIGFuZCBvcmlnbGluZVtjb21tYW5kX2JlZ2luXS5pc3NwYWNlKCk6Ci0gICAgICAgICAgICAgICAgY29tbWFuZF9iZWdpbiArPSAxCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIHdvcmRzID0gb3JpZ2xpbmVbY29tbWFuZF9iZWdpbjplbmRdLnNwbGl0KCkKLSAgICAgICAgICAgIAotICAgICAgICAgICAgIyByZW1vdmUgbGFzdCB0ZXJtIGlmIGl0IGlzIHRoZSBvbmUgYmVpbmcgbWF0Y2hlZAotICAgICAgICAgICAgaWYgYmVnaW4gIT0gZW5kOgotICAgICAgICAgICAgICAgIHdvcmRzLnBvcCgpCi0KLSAgICAgICAgICAgICMgTE9PSyEgdGhlcmUgYXJlIGF0IGxlYXN0IHRocmVlIHBsYWNlcyB0aGF0IHRyeSB0byBwYXJzZSB0aGUgdmFsaWQgb3B0aW9uczoKLSAgICAgICAgICAgICMgMS4gV2hlbiBhY3R1YWxseSBoYW5kbGluZyBhIGNvbW1hbmQKLSAgICAgICAgICAgICMgMi4gV2hlbiB0cnlpbmcgdG8gc2hvdyBjb21wbGV0aW9ucyAoaGVyZSkKLSAgICAgICAgICAgICMgMy4gV2hlbiBkaXNwbGF5aW5nIGhlbHAKLQotICAgICAgICAgICAgIyBjb21wbGV0ZSB0aGUgZmlyc3Qgd29yZCBpbiBhIGNvbW1hbmQgbGluZSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgbm90IHdvcmRzIG9yIGJlZ2luID09IGNvbW1hbmRfYmVnaW46Ci0gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHNlbGYuY29tbWFuZHNfZm9yX2N1cnJlbnRfbW9kZV9zdGFydGluZ193aXRoKHRleHQsIGNvbXBsZXRpb24gPSBUcnVlKQotICAgICAgICAgICAgICAgIGlmIHNlbGYuaW5fY29uZmlnX21vZGUoKToKLSAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5vYmpfdHlwZXNfZm9yX2NvbmZpZ19tb2RlX3N0YXJ0aW5nX3dpdGgodGV4dCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZF93aGVuX21pc3Npbmcob3B0aW9ucywgaXRlbSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmluX2NvbmZpZ19zdWJtb2RlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHNlbGYuZmllbGRzX2Zvcl9jdXJyZW50X3N1Ym1vZGVfc3RhcnRpbmdfd2l0aCh0ZXh0KToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kX3doZW5fbWlzc2luZyhvcHRpb25zLCBpdGVtKQotICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBbeCBpZiB4LmVuZHN3aXRoKCcgJykgZWxzZSB4ICsgJyAnICBmb3IgeCBpbiBzb3J0ZWQob3B0aW9ucyldCi0gICAgICAgICAgICAjIENvbXBsZXRlIHRoZSAybmQgd29yZCBvciBsYXRlcgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb21tYW5kcyA9IHNlbGYuY29tbWFuZHNfZm9yX2N1cnJlbnRfbW9kZV9zdGFydGluZ193aXRoKHdvcmRzWzBdKQotICAgICAgICAgICAgICAgIG9ial90eXBlcyA9IHNlbGYub2JqX3R5cGVzX2Zvcl9jb25maWdfbW9kZV9zdGFydGluZ193aXRoKHdvcmRzWzBdKSBpZiBzZWxmLmluX2NvbmZpZ19tb2RlKCkgZWxzZSBbXQotICAgICAgICAgICAgICAgIGZpZWxkcyA9IHNlbGYuZmllbGRzX2Zvcl9jdXJyZW50X3N1Ym1vZGVfc3RhcnRpbmdfd2l0aCh3b3Jkc1swXSkgaWYgc2VsZi5pbl9jb25maWdfc3VibW9kZSgpIGVsc2UgW10KLSAgICAgICAgICAgICAgICBpZiBsZW4oY29tbWFuZHMpICsgbGVuKG9ial90eXBlcykgKyBsZW4oZmllbGRzKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihmaWVsZHMpID4gMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkcyA9IFt3b3Jkc1swXV0gaWYgd29yZHNbMF0gaW4gZmllbGRzIGVsc2UgW10KLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGNvbW1hbmRzKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcyA9IFt3b3Jkc1swXV0gaWYgd29yZHNbMF0gaW4gY29tbWFuZHMgZWxzZSBbXQotICAgICAgICAgICAgICAgICAgICBpZiBsZW4ob2JqX3R5cGVzKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvYmpfdHlwZXMgPSBbd29yZHNbMF1dIGlmIHdvcmRzWzBdIGluIG9ial90eXBlcyBlbHNlIFtdCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgbGVuKGZpZWxkcykgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IHNlbGYuY3BfY29uZl9maWVsZChzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqX3R5cGUoKSwgd29yZHMsIHRleHQpCi0gICAgICAgICAgICAgICAgZWxpZiBsZW4ob2JqX3R5cGVzKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gc2VsZi5jcF9jb25mX29iamVjdF90eXBlKG9ial90eXBlcyArIHdvcmRzWzE6XSwgdGV4dCkKLSAgICAgICAgICAgICAgICBlbGlmIGxlbihjb21tYW5kcykgPT0gMTogCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uc1swXSBpcyBleHBhbmRlZCB3aGlsZSB3b3Jkc1swXSBpcyBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IHNlbGYuY29tcGxldGlvbl9tZXRob2RfZnJvbV9uYW1lKGNvbW1hbmRzWzBdKSAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gbWV0aG9kKHdvcmRzLCB0ZXh0LCByZWFkbGluZS5nZXRfY29tcGxldGlvbl90eXBlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9wdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gbWF0Y2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVhZGxpbmUuZ2V0X2NvbXBsZXRpb25fdHlwZSgpID09IHF1ZXN0aW9uX21hcms6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBjb21tYW5kLmRvX2NvbW1hbmRfY29tcGxldGlvbl9oZWxwKHdvcmRzLCB0ZXh0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBjb21tYW5kLmRvX2NvbW1hbmRfY29tcGxldGlvbih3b3JkcywgdGV4dCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2lmIG9wdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQgc3ludGF4X2hlbHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Vsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcGFzcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKHN5bnRheF9oZWxwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnIG9yIHNlbGYuZGVidWdfYmFja3RyYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyBvciBzZWxmLmRlYnVnX2JhY2t0cmFjZToKLSAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICMgZXJyb3JzIGluIGNvbm5lY3QgYXJlIGNhdWdodCBzaWxlbnRseSwgY29tcGxhaW4gaGVyZQotICAgICAgICAgICAgIyBUT0RPIC0gTWF5YmUgd2Ugc2hvdWxkIGxvZyB0aGlzIGluIGEgZmlsZSB3ZSBjYW4gcmV2aWV3Ci0gICAgICAgICAgICAjIGF0IGEgbGF0ZXIgZGF0ZT8KLSAgICAgICAgCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG9wdGlvbnM6Ci0gICAgICAgICAgICAgICAgc2VsZi5sYXN0X2xpbmUgPSBvcmlnbGluZQotICAgICAgICAgICAgICAgIHNlbGYubGFzdF9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICAgICAgICAgIHNlbGYubGFzdF9jb21wbGV0aW9uX2NoYXIgPSByZWFkbGluZS5nZXRfY29tcGxldGlvbl90eXBlKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uc1tzdGF0ZV0KLSAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaGFuZGxlX2FsaWFzCi0gICAgIyAgTWFuYWdlIGFsaWFzIGNyZWF0aW9uIGZvciBhbiBvYmpfdHlwZSwgb25seSBtYW5hZ2Ugb25lIGFsaWFzIGZvciBlYWNoIG9mIHRoZQotICAgICMgIHRhcmdldHMsIGFsdGhvdWdoIHRoYXQgcmVxdWlyZW1lbnQgZXhpc3RzIHNvIHRoYXQgYSBzaW5nbGUgYWxpYXMKLSAgICAjICBjYW4gYmUgZGlzcGxheWVkIGZvciBvdXRwdXQgZnJvbSAoc2hvdykgY29tbWFuZHMKLSAgICAjCi0gICAgIyAgTm90ZSB0aGF0IHNldHRpbmcgdGhlIGFsaWFzIHRvIGl0cyBjdXJyZW50IHZhbHVlIGN1cnJlbnRseSBjYXVzZXMgdGhlCi0gICAgIyAgYWxpYXMgdG8gYmUgY3JlYXRlZCAoaWU6IHRoZXJlJ3Mgbm8gc3BlY2lmaWMgc2VhcmNoIHRvIGZpbmQgdGhlIGl0ZW0pCi0gICAgIwotICAgIGRlZiBoYW5kbGVfYWxpYXMoc2VsZiwgb2JqX3R5cGUsIGFsaWFzX29ial90eXBlLCBhbGlhc192YWx1ZSk6Ci0KLSAgICAgICAgaWYgYWxpYXNfdmFsdWUgaW4gc2VsZi5yZXNlcnZlZF93b3JkczoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiYWxpYXMgdmFsdWUgJXMgaXMgYSByZXNlcnZlZCB3b3JkICglcykiICUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsaWFzX3ZhbHVlLCAnLCAnLmpvaW4oc2VsZi5yZXNlcnZlZF93b3JkcykpKQotICAgICAgICAjCi0gICAgICAgICMgYWxsb3cgdGhlIHVzZSBvZiAnYWxpYXMnIHdoZW4gb25seSBvbmUgYWxpYXMgZW50cnkKLSAgICAgICAgIyBleGlzdHMgZm9yIHRoZSBvYmpfdHlwZS4gIG9ubHktb25lIG91Z2h0IHRvIGJlIHR5cGljYWwuCi0gICAgICAgICMgdGhpcyBtYXkgbmVlZCB0byBiZSByZW1vdmVkIGFmdGVyIGEgY29tcGF0YWJpbGl0eSBwZXJpb2QuCi0gICAgICAgIGlmIGFsaWFzX29ial90eXBlID09ICdhbGlhcyc6Ci0gICAgICAgICAgICAjIHRoZXJlIHNob3VsZCBiZSBvbmx5IG9uZSBhbGlhcyB0YWJsZSBmb3IgdGhpcyBvYmpfdHlwZQotICAgICAgICAgICAgYWxpYXNlcyA9IG1pLmFsaWFzX29ial90eXBlX3hyZWZbb2JqX3R5cGVdCi0gICAgICAgICAgICBpZiBsZW4oYWxpYXNlcykgIT0gMToKLSAgICAgICAgICAgICAgICBwcmludCBzZWxmLmVycm9yX21zZygiSW50ZXJuYWwgbW9yZSB0aGFuIG9uZSBhbGlhcyBjaG9pY2UiKQotICAgICAgICAgICAgYWxpYXNfb2JqX3R5cGUgPSBhbGlhc2VzWzBdCi0KLSAgICAgICAgb2JqID0gc2VsZi5nZXRfY3VycmVudF9tb2RlX29iaigpCi0gICAgICAgIGFsaWFzX2tleSA9IG1pLnBrKGFsaWFzX29ial90eXBlKQotCi0gICAgICAgICMKLSAgICAgICAgIyBjcmVhdGUgcm93IGZvciB0YWJsZSB3aXRoIGZvcmVpZ24ga2V5Ci0gICAgICAgICMgZmluZCB0aGUgbmFtZSBvZiB0aGUgZmllbGQgd2hpY2ggaXMgdGhlIGZvcmVpZ24ga2V5Li4uCi0gICAgICAgIGZvcmVpZ25fZmllbGQgPSAgbWkuYWxpYXNfb2JqX3R5cGVfZmllbGQoYWxpYXNfb2JqX3R5cGUpCi0gICAgICAgIGlmIG5vdCBmb3JlaWduX2ZpZWxkOgotICAgICAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coImludGVybmFsIGhhbmRsZV9hbGlhczogYWxpYXNfb2JqX3R5cGVfZmllbGQiKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAjCi0gICAgICAgICMgZGVsZXRlIHRoZSBjdXJyZW50IGFsaWFzIGlmIGl0IGV4aXN0cwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleGlzdHMgPSBzZWxmLmdldF9vYmplY3RfZnJvbV9zdG9yZShhbGlhc19vYmpfdHlwZSwgYWxpYXNfdmFsdWUpCi0gICAgICAgICAgICBpZiBsZW4oZXhpc3RzKToKLSAgICAgICAgICAgICAgICBzZWxmLnJlc3RfZGVsZXRlX29iamVjdChhbGlhc19vYmpfdHlwZSwgYWxpYXNfdmFsdWUpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjcmVhdGVfZGljdCA9IHsgYWxpYXNfa2V5IDogYWxpYXNfdmFsdWUsIGZvcmVpZ25fZmllbGQgOiBvYmogfQotICAgICAgICAgICAgc2VsZi5yZXN0X2NyZWF0ZV9vYmplY3QoYWxpYXNfb2JqX3R5cGUsIGNyZWF0ZV9kaWN0KQotICAgICAgICAgICAgZXJyb3JzID0gTm9uZQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSwgYWxpYXNfb2JqX3R5cGUpCi0KLSAgICAgICAgaWYgZXJyb3JzOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCJjb3VsZCBub3QgY3JlYXRlICVzIGZvciAlcyAoJXMpOiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlhc19vYmpfdHlwZSwgYWxpYXNfdmFsdWUsIG9ial90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpKSkKLSAgICAgICAgIwotICAgICAgICAjIHJlbW92ZSBvdGhlciBleGlzdGluZyBhbGlhcyBmb3IgdGhlIHNhbWUgZm9yZWlnbiBrZXkKLSAgICAgICAgIyBmaW5kIGFueSBvdGhlciBhbGlhcyBmb3IgdGhpcyBjb25maWcgb2JqZWN0LCB0aGVuIHJlbW92ZSB0aGVtCi0gICAgICAgICMKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcm93cyA9IHNlbGYuZ2V0X3RhYmxlX2Zyb21fc3RvcmUoYWxpYXNfb2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlaWduX2ZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4YWN0IikKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsIGFsaWFzX29ial90eXBlKQotICAgICAgICAgICAgcHJpbnQgc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgICAgICByb3dzID0gW10KLSAgICAgICAgIwotICAgICAgICAjCi0gICAgICAgIGZvciByb3cgaW4gcm93czoKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgc2tpcCB0aGUgZW50cnkgd2hpY2ggd2FzIGp1c3QgaW5zZXJ0ZWQKLSAgICAgICAgICAgIGlmIHJvd1thbGlhc19rZXldID09IGFsaWFzX3ZhbHVlIGFuZCByb3dbZm9yZWlnbl9maWVsZF0gPT0gb2JqOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5yZXN0X2RlbGV0ZV9vYmplY3QoYWxpYXNfb2JqX3R5cGUsIHJvd1thbGlhc19rZXldKQotICAgICAgICAgICAgICAgIHNlbGYud2FybmluZygicmVtb3ZlZCBvdGhlciBhbGlhcyAnJXMnIGZvciAlcyAnJXMnIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyb3dbYWxpYXNfa2V5XSwgZm9yZWlnbl9maWVsZCwgcm93W2ZvcmVpZ25fZmllbGRdKSkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgdXBkYXRlX2ZvcmVpZ25fa2V5Ci0gICAgIyAgR2l2ZW4gYW4gb2JqX3R5cGUsIGl0cyBwcmltYXJ5IGtleSBuYW1lLCBhbmQgdGhlIG9sZCBhbmQgbmV3Ci0gICAgIyAgaWQgdmFsdWVzLCBmaW5kIGFueSBhc3NvY2lhdGVkIHRhYmxlcyB3aGljaCBoYXZlIGZvcmVpZ24ga2V5cwotICAgICMgIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhYmxlLCBhbmQgdXBkYXRlIHRoZSBmb3JlaWduIGtleSBzbyB0aGF0Ci0gICAgIyAgdGhlIHRhYmxlIGFnYWluIHBvaW50cyB0byBhIHZhbGlkIGlkLgotICAgICMKLSAgICAjICBpdHMgdW5saWtlbHksIGFsdGhvdWdoIG5vdCBpbXBvc3NpYmxlLCBmb3IgdGhlIGZvcmVpZ24ga2V5Ci0gICAgIyAgdXBkYXRlIHRvIG5lZWQgdG8gY2FzY2FkZS4KLSAgICAjCi0gICAgZGVmIHVwZGF0ZV9mb3JlaWduX2tleShzZWxmLCBvYmpfdHlwZSwgb2JqX2tleSwgb2xkX2lkLCBuZXdfaWQpOgotICAgICAgICBpZiBvYmpfdHlwZSBpbiBtaS5mb3JlaWduX2tleV94cmVmIGFuZCBcCi0gICAgICAgICAgIG9ial9rZXkgaW4gbWkuZm9yZWlnbl9rZXlfeHJlZltvYmpfdHlwZV06Ci0gICAgICAgICAgICBmb3IgKGZrX29ial90eXBlLCBma19uYW1lKSBpbiBtaS5mb3JlaWduX2tleV94cmVmW29ial90eXBlXVtvYmpfa2V5XToKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBmaW5kIGFueSBhZmZlY3RlZCByb3dzCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByb3dzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZShma19vYmpfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmtfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhhY3QiKQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgcm93cyA9IFtdCi0KLSAgICAgICAgICAgICAgICBrZXkgPSBtaS5wayhma19vYmpfdHlwZSkKLSAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJvd3M6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYud2FybmluZygidXBkYXRpbmcgJXMga2V5ICVzIGZpZWxkICVzIHRvICVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZrX29ial90eXBlLCByb3dba2V5XSwgZmtfbmFtZSwgbmV3X2lkKSkKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0X3VwZGF0ZV9vYmplY3QoZmtfb2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dba2V5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZmtfbmFtZSA6IG5ld19pZCB9KQotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gTm9uZQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSwgZmtfb2JqX3R5cGUpCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgZXJyb3JzOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaGFuZGxlX2ZpZWxkCi0gICAgIwotICAgICMgaGFuZGxlX2ZpZWxkIGNhbGxzIGl0c2VsZiByZWN1cnNpdmVseSB0byBwYXJzZSBmaWVsZHMgYW5kIGJ1aWxkCi0gICAgIyBhIGZpZWxkIGRpY3QuIEl0IHRoZW4gcGFzc2VzIHRoZSBmaWVsZCBkaWN0IHRvIG9uZSByZXN0IGNhbGwuCi0gICAgIwotICAgIGRlZiBoYW5kbGVfZmllbGQoc2VsZiwgd29yZHMsIGFjY3VtdWxhdGVkX2RhdGE9Tm9uZSk6Ci0gICAgICAgIGlmIGFjY3VtdWxhdGVkX2RhdGEgaXMgTm9uZToKLSAgICAgICAgICAgIGFjY3VtdWxhdGVkX2RhdGEgPSB7fQotICAgICAgICBpZiBsZW4od29yZHMpIDwgMjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiaW5jb3JyZWN0IG51bWJlciBvZiBhcmdzIChtdXN0IGJlIDxmaWVsZD4gPHZhbHVlPikiKQotICAgICAgICBvYmpfdHlwZSA9IHNlbGYuZ2V0X2N1cnJlbnRfbW9kZV9vYmpfdHlwZSgpCi0gICAgICAgIG9iaiA9IHNlbGYuZ2V0X2N1cnJlbnRfbW9kZV9vYmooKQotICAgICAgICBsYXN0X3dvcmQgPSAyCi0gICAgICAgIGZpZWxkID0gd29yZHNbMF0KLSAgICAgICAgdmFsdWUgPSB3b3Jkc1sxXQotICAgICAgICAKLSAgICAgICAgIyBjb21wbGV0ZSB0aGUgZmllbGQgaWYgbmVlZGVkCi0gICAgICAgIGZpZWxkX2Nob2ljZXMgPSBzZWxmLmZpZWxkc19mb3JfY3VycmVudF9zdWJtb2RlX3N0YXJ0aW5nX3dpdGgod29yZHNbMF0pCi0gICAgICAgICMgTE9PSyE6IHJvYnY6IEZpeCB0byB3b3JrIHdpdGggYSBmaWVsZCBuYW1lcyB3aGljaCBpcyBhIHByZWZpeCBvZiBhbm90aGVyCi0gICAgICAgIGlmIGxlbihmaWVsZF9jaG9pY2VzKSA+IDE6Ci0gICAgICAgICAgICBmb3IgZmllbGRfY2hvaWNlIGluIGZpZWxkX2Nob2ljZXM6Ci0gICAgICAgICAgICAgICAgaWYgZmllbGRfY2hvaWNlID09IHdvcmRzWzBdOgotICAgICAgICAgICAgICAgICAgICBmaWVsZF9jaG9pY2VzID0gW2ZpZWxkX2Nob2ljZV0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgbGVuKGZpZWxkX2Nob2ljZXMpID4gMToKLSAgICAgICAgICAgIHJldHVybiAiTXVsdGlwbGUgbWF0Y2hlcyBmb3IgZmllbGQgbmFtZSAlcy4iICUgZmllbGQKLSAgICAgICAgaWYgbGVuKGZpZWxkX2Nob2ljZXMpID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coIiVzIGhhcyBubyBmaWVsZCBuYW1lZCAlcy4iICUgKG9ial90eXBlLCBmaWVsZCkpCi0gICAgICAgIGZpZWxkID0gZmllbGRfY2hvaWNlc1swXQotCi0gICAgICAgICMKLSAgICAgICAgIyBoYW5kbGUgc3BlY2lhbCBjYXNlIGFsaWFzJ3Mgd2hpY2ggYXJlbid0IHVuZGVyc3Rvb2QgdmlhIHhyZWYKLSAgICAgICAgIyAodGhpcyBpcyBiZWNhdXNlIHZucy1pbnRlcmZhY2UtcnVsZSBkb2Vzbid0IGZvcmVpZ25LZXkgbmVpZ3RoZXIKLSAgICAgICAgIyAgc3dpdGNoIG9yIG1hYyByZWZlcmVuY2VzIHRvIHRoZSBzd2l0Y2gvaG9zdCB0YWJsZXMpCi0gICAgICAgICMgIAotICAgICAgICBpZiBvYmpfdHlwZSA9PSAndm5zLWludGVyZmFjZS1ydWxlJyBhbmQgZmllbGQgPT0gJ3N3aXRjaCc6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5EUElEX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgICAgICBhbGlhc192YWx1ZSA9IGFsaWFzX2xvb2t1cCgnc3dpdGNoLWFsaWFzJywgdmFsdWUpCi0gICAgICAgICAgICAgICAgaWYgYWxpYXNfdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYWxpYXNfdmFsdWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlN5bnRheDogVW5rbm93biBzd2l0Y2ggYWxpYXMgJyVzJzsgU3BlY2lmeSBzd2l0Y2ggYXMgRFBJRCBvciBhbGlhcyIgJSB2YWx1ZQotICAgICAgICBpZiBvYmpfdHlwZSA9PSAndm5zLWludGVyZmFjZS1ydWxlJyBhbmQgZmllbGQgPT0gJ21hYyc6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5NQUNfUkUubWF0Y2godmFsdWUpOgotICAgICAgICAgICAgICAgIGFsaWFzX3ZhbHVlID0gYWxpYXNfbG9va3VwKCdob3N0LWFsaWFzJywgdmFsdWUpCi0gICAgICAgICAgICAgICAgaWYgYWxpYXNfdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYWxpYXNfdmFsdWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlN5bnRheDogVW5rbm93biBob3N0IGFsaWFzICclcyc7IFNwZWNpZnkgaG9zdCBhcyBNQUMgb3IgYWxpYXMiICUgdmFsdWUKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgIwotICAgICAgICAjIFJlcGxhY2UgY29tbW9uIHR5cGUgdmFsdWVzIHdpdGggZXhwZWN0ZWQgdHlwZXMsIGZvciBleGFtcGxlIHRydWUgb3IgZmFsc2UKLSAgICAgICAgIyAgZm9yIFRydWUvRmFsc2UuIAotICAgICAgICBpZiBtaS5pc19maWVsZF9ib29sZWFuKHNlbGYuZ2V0X2N1cnJlbnRfbW9kZV9vYmpfdHlwZSgpLCBmaWVsZCk6Ci0gICAgICAgICAgICBpZiB2YWx1ZS5sb3dlcigpID09ICdmYWxzZSc6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSAnRmFsc2UnCi0gICAgICAgICAgICBlbGlmIHZhbHVlLmxvd2VyKCkgPT0gJ3RydWUnOgotICAgICAgICAgICAgICAgIHZhbHVlID0gJ1RydWUnCi0gICAgICAgICMgCi0gICAgICAgIGVsaWYgbWkuaXNfaGV4X2FsbG93ZWQob2JqX3R5cGUsIGZpZWxkKSBhbmQgc2VsZi5IRVhfUkUubWF0Y2godmFsdWUpOgotICAgICAgICAgICAgdmFsdWUgPSBzdHIoaW50KHZhbHVlLCAxNikpCi0gICAgICAgICMKLSAgICAgICAgIyBMb29rIHVwIGFueSB2YWxpZGF0aW9uIG9yIHZhbHVlIGNoYW5naW5nIGNhbGxvdXRzLi4uCi0gICAgICAgIHZhbGlkYXRlID0gbWkuZmllbGRfdmFsaWRhdGlvbihzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqX3R5cGUoKSwgZmllbGQpCi0gICAgICAgIGlmIHZhbGlkYXRlOgotICAgICAgICAgICAgdmFsaWRhdGVfZXJyb3IgPSB2YWxpZGF0ZShvYmpfdHlwZSwgZmllbGQsIHZhbHVlKQotICAgICAgICAgICAgaWYgdmFsaWRhdGVfZXJyb3I6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2Vycm9yCi0KLSAgICAgICAgYWNjdW11bGF0ZWRfZGF0YVtmaWVsZF0gPSB2YWx1ZQotCi0gICAgICAgIHJldF92YWwgPSBOb25lCi0KLSAgICAgICAgaWYgbGVuKHdvcmRzKSA+IGxhc3Rfd29yZDoKLSAgICAgICAgICAgICMgbW9yZSB0byBtdW5jaAotICAgICAgICAgICAgcmV0X3ZhbCA9IHNlbGYuaGFuZGxlX2ZpZWxkKHdvcmRzW2xhc3Rfd29yZDpdLCBhY2N1bXVsYXRlZF9kYXRhKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBtdW5jaGVkIGV2ZXJ5dGhpbmcsIG5vdyB1cGRhdGUKLSAgICAgICAgICAgIG9ial9rZXkgPSBtaS5wayhvYmpfdHlwZSkKLQotICAgICAgICAgICAgcHJlcGFyZV91cGRhdGUgPSBtaS5vYmpfdHlwZV9wcmVwYXJlX3Jvd191cGRhdGUob2JqX3R5cGUpCi0gICAgICAgICAgICBpZiBwcmVwYXJlX3VwZGF0ZToKLSAgICAgICAgICAgICAgICBhY2N1bXVsYXRlZF9kYXRhID0gcHJlcGFyZV91cGRhdGUob2JqX3R5cGUsIG9ial9rZXksIG9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0ZWRfZGF0YSkKLSAgICAgICAgICAgICAgICAjIGluIGNhc2UgdGhlIG9ial90eXBlJ3Mga2V5IGlzIHVwZGF0ZWQKLSAgICAgICAgICAgICAgICBvYmogPSBhY2N1bXVsYXRlZF9kYXRhW29ial9rZXldCi0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgTm90ZTogaWYgYWxsIHRoZSBmaWVsZHMgZm9yIGEgcm93IGFyZSBhbGwgbWFudWFsbHkgcmV2ZXJ0ZWQKLSAgICAgICAgICAgICMgdG8gYSBkZWZhdWx0IHZhbHVlLCBwZXJoYXBzIHRoZSByb3cgb3VnaHQgdG8gYmUgZGVsZXRlZC4KLSAgICAgICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnJlc3RfdXBkYXRlX29iamVjdChvYmpfdHlwZSwgb2JqX2tleSwgb2JqLCBhY2N1bXVsYXRlZF9kYXRhKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBlcnJvcnMgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlLCBvYmpfdHlwZSkKLQotICAgICAgICAgICAgaWYgZXJyb3JzOgotICAgICAgICAgICAgICAgIHJldF92YWwgPSBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgaWYgdGhlIHByaW1hcnkga2V5IHdhcyBwYXJ0IG9mIHRoZSB1cGRhdGUuIGZpbmQgcmVsYXRyZWQKLSAgICAgICAgICAgICAgICAjIHRhYmxlcyBhbmQgdXBkYXRlIHRoZSBmb3JlaWduIGtleS4gIFhYWCBwZXJoYXBzIHRoaXMgaXMKLSAgICAgICAgICAgICAgICAjIHRoZSByZXN0IGFwaSdzIHByb2JsZW0/Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgIGlmIG9ial9rZXkgaW4gYWNjdW11bGF0ZWRfZGF0YSBhbmQgXAotICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVkX2RhdGFbb2JqX2tleV0gIT0gb2JqOgotCi0gICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX2ZvcmVpZ25fa2V5KG9ial90eXBlLCBvYmpfa2V5LCBvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVkX2RhdGFbb2JqX2tleV0pCi0gICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAgICAgIyBkZWxldGUgdGhlIG9sZCBrZXkuCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdF9kZWxldGVfb2JqZWN0KG9ial90eXBlLCBvYmopCi0KLSAgICAgICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICAgICAjIG1vdmUgdGhlIHRoZSBjdXJyZW50IGlkCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0X2N1cnJlbnRfbW9kZV9vYmooYWNjdW11bGF0ZWRfZGF0YVtvYmpfa2V5XSkKLQotICAgICAgICByZXR1cm4gcmV0X3ZhbAotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNvbnZlcnRfaGV4X3RvX2RlY2ltYWwKLSAgICAjICBSZXZpZXcgdGhlIGNvbnRlbnRzIG9mIGFsbCB0aGUgdmFsdWVzLCBsb29raW5nIGZvciBoZXgKLSAgICAjICB2YWx1ZWQgZmllbGRzLiAgV2hlbiBhIGhleCB2YWx1ZSBpcyBpZGVudGlmaWVkLCBjaGFuZ2UKLSAgICAjICBpdCB0byBkZWNpbWFsIHdoZW4gJ2lzX2hleF9hbGxvd2VkJyBpcyB0cnVlLgotICAgICMKLSAgICBkZWYgY29udmVydF9oZXhfdG9fZGVjaW1hbChzZWxmLCBvYmpfdHlwZSwgZmllbGRfZGljdCk6Ci0gICAgICAgIGZvciBrZXkgaW4gZmllbGRfZGljdC5rZXlzKCk6Ci0gICAgICAgICAgICBpZiBtaS5pc19oZXhfYWxsb3dlZChvYmpfdHlwZSwga2V5KSBhbmQgXAotICAgICAgICAgICAgICAgc2VsZi5IRVhfUkUubWF0Y2goZmllbGRfZGljdFtrZXldKToKLSAgICAgICAgICAgICAgICBmaWVsZF9kaWN0W2tleV0gPSBpbnQoZmllbGRfZGljdFtrZXldLCAxNikKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBoYW5kbGVfb2JqX3R5cGUKLSAgICAjICBJbiBjb25maWcgbW9kZSwgdGhpcyBoYW5kbGVzIGlmIGZpcnN0IHdvcmQgaXMgYW4gb2JqZWN0LXR5cGUKLSAgICAjICAoZXg6ICJmbG93LWVudHJ5IGNhdGNoLXdlYiIpCi0gICAgIwotICAgIGRlZiBoYW5kbGVfb2JqX3R5cGUoc2VsZiwgd29yZHMpOgotICAgICAgICBpZiBsZW4od29yZHMpIDwgMjoKLSAgICAgICAgICAgIHJldHVybiAiU3ludGF4OiAlcyA8a2V5Pjogd2hlcmUga2V5IGlzIGFuIGlkIG9mICVzIiAlICh3b3Jkc1swXSwgd29yZHNbMF0pCi0KLSAgICAgICAgKG9ial90eXBlLCBvYmpfbmFtZSkgPSAod29yZHNbMF0sIHdvcmRzWzFdKQotCi0gICAgICAgIG9ial9uYW1lID0gY29udmVydF9hbGlhc190b19vYmplY3Rfa2V5KG9ial90eXBlLCBvYmpfbmFtZSkKLSAgICAgICAgIyBGaXJzdCBjaGVjayBpZiB0aGlzIGlzIHNvbWV0aGluZyB3ZSBjYW4gYWN0dWFsbHkgY29uZmlndXJlCi0gICAgICAgIGlmIG9ial90eXBlIG5vdCBpbiBtaS5vYmpfdHlwZXM6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coInVua25vd24gY29tbWFuZCBvciBvYmplY3QuIikKLQotICAgICAgICAjIE5leHQsIGZpbmQgdGhlIG9iamVjdAotICAgICAgICAjICBEZWFsIHdpdGggYW55IGNoYW5nZXMgdG8gdGhlIGxvb2t1cCBuYW1lIGJhc2VkIG9uIHRoZSAnY29uY2F0ZW5hdGlvbicKLSAgICAgICAgIyAgb2YgdGhlIGNvbmZpZyBtb2RlIG5hbWUgdG8gdGhlIG5hbWVkIGlkZW50aWZlci4KLSAgICAgICAgIwotICAgICAgICBmb3VuZF9vYmogPSBzZWxmLmdldF9vYmpfb2ZfdHlwZShvYmpfdHlwZSwgb2JqX25hbWUpIAotCi0gICAgICAgIGlmIGZvdW5kX29iaiA9PSBOb25lOgotICAgICAgICAgICAgIyBuZWVkIHRvIGNyZWF0ZSBvYmplY3QsIG9ial9kYXRhIGlzIHRoZSByZXN0IGFwaSBkaWN0aW9uYXJ5IHVzZWQKLSAgICAgICAgICAgICMgdG8gY3JlYXRlIHRoZSBuZXcgcm93LgotICAgICAgICAgICAgb2JqX2RhdGEgPSB7IG1pLnBrKG9ial90eXBlKTogb2JqX25hbWUgfQotCi0gICAgICAgICAgICBpZiBzZWxmLmluX2NvbmZpZ19zdWJtb2RlKCk6Ci0gICAgICAgICAgICAgICAgIyBhZGQgaW4gYWxsIHRoZSBrZXkgdmFsdWUgZnJvbSBtb2RlcyBpbiB0aGUgc3RhY2sKLSAgICAgICAgICAgICAgICAjIExPT0shIHRoaXMgaXMgYnJpdHRsZSBhcyBpdCBkZXBlbmRzIG9uIHRoZSBuYW1lIG9mIAotICAgICAgICAgICAgICAgICMgdGhlIG1vZGUgbWF0Y2hpbmcgdGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZS4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgb2JqX2RhdGEgPSBzZWxmLm1vZGVfc3RhY2tfdG9fcmVzdF9kaWN0KG9ial9kYXRhKQotCi0gICAgICAgICAgICAgICAgIyAKLSAgICAgICAgICAgICAgICBzZWxmLmNvbnZlcnRfaGV4X3RvX2RlY2ltYWwob2JqX3R5cGUsIG9ial9kYXRhKQotCi0gICAgICAgICAgICAgICAgIyBtYWtlIHN1cmUgYWxsIHRoZSBmb3JlaWduIGtleXMgYXJlIHBvcHVsYXRlZAotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICBmb3Iga2V5IGluIG1pLm9ial90eXBlX2ZvcmVpZ25fa2V5cyhvYmpfdHlwZSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gb2JqX2RhdGE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCBzZWxmLmVycm9yX21zZygiZm9yZWlnbiBrZXkgJyVzJyBtaXNzaW5nIGZyb20gbW9kZSBzdGFjayAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleSwgb2JqX2RhdGEpKQotCi0gICAgICAgICAgICBwcmVwYXJlX3VwZGF0ZSA9IG1pLm9ial90eXBlX3ByZXBhcmVfcm93X3VwZGF0ZShvYmpfdHlwZSkKLSAgICAgICAgICAgIGlmIHByZXBhcmVfdXBkYXRlOgotICAgICAgICAgICAgICAgIG9ial9kYXRhID0gcHJlcGFyZV91cGRhdGUob2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaS5wayhvYmpfdHlwZSksIG9ial9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqX2RhdGEpCi0KLSAgICAgICAgICAgICMgY3JlYXRlIHRoZSBvYmplY3QKLSAgICAgICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnJlc3RfY3JlYXRlX29iamVjdChvYmpfdHlwZSwgb2JqX2RhdGEpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsIG9ial90eXBlKQotCi0gICAgICAgICAgICBpZiBlcnJvcnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotCi0gICAgICAgICAgICAjIGdldCBpdCBiYWNrLCBwb3B1bGF0aW5nIGZvdW5kX29iagotICAgICAgICAgICAgZm91bmRfb2JqID0gc2VsZi5nZXRfb2JqX29mX3R5cGUob2JqX3R5cGUsIG9ial9uYW1lKSAKLSAgICAgICAgICAgIAotICAgICAgICAjIHB1c2ggb24gdGhlIHN1Ym1vZGUgZm9yIHRoZSBvYmplY3QgCi0gICAgICAgICMgTE9PSyEgYXNzdW1lcyBhbGwgb2JqZWN0IGNvbW1hbmRzIGRyb3AgeW91IGludG8gYSBzdWJtb2RlLi4uCi0gICAgICAgIGlmIGZvdW5kX29iajoKLSAgICAgICAgICAgIHN1Yl9tb2RlID0gImNvbmZpZy0lcyIgJSBvYmpfdHlwZQotICAgICAgICAgICAgc2VsZi5wdXNoX21vZGUoc3ViX21vZGUsIG9ial90eXBlLCBvYmpfbmFtZSkKLQotICAgICAgICAgICAgIyBoYW5kIG9mZiB0aGUgcmVzdCBvZiB0aGUgbGluZSB0byBoYW5kbGVfZmllbGQKLSAgICAgICAgICAgIGlmIGxlbih3b3JkcykgPiAyOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9maWVsZCh3b3Jkc1syOl0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coIk5vICVzIHdpdGggJXMgPSAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmpfdHlwZSwgbWkucGsob2JqX3R5cGUpLCBvYmpfbmFtZSkpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgcHJpbnRfY29tcGxldGlvbl9oZWxwCi0gICAgIwotICAgIGRlZiBwcmludF9jb21wbGV0aW9uX2hlbHAoc2VsZiwgY29tcGxldGlvbl9oZWxwX3RleHQpOgotICAgICAgICBvcmlnbGluZSA9IHJlYWRsaW5lLmdldF9saW5lX2J1ZmZlcigpCi0gICAgICAgIGVuZCA9IHJlYWRsaW5lLmdldF9lbmRpZHgoKQotICAgICAgICBjdXJfY29tbWFuZCA9IG9yaWdsaW5lWzA6ZW5kXQotCi0gICAgICAgIGhlbHBfdGV4dCA9ICJcbiVzXG4lcyVzIiAlICggY29tcGxldGlvbl9oZWxwX3RleHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm9tcHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX2NvbW1hbmQpCi0gICAgICAgIHNlbGYuY29tcGxldGlvbl9za2lwID0gVHJ1ZQotICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGhlbHBfdGV4dCkKLSAgICAgICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGdldF9pcF9mcm9tX3N3aXRjaF9kcGlkX29yX2FsaWFzCi0gICAgIyAgICBSZXR1cm5zIHRoZSBJUCBhc3NvY2lhdGVkIHdpdGggdGhlIHN3aXRjaCBpZiBpdCBleGlzdHMKLSAgICAjICAgIG9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgaWYgaXQncyBub3QgYSBkcGlkIG9yIGFsaWFzLgotICAgICMKLSAgICBkZWYgZ2V0X2lwX2Zyb21fc3dpdGNoX2RwaWRfb3JfYWxpYXMoc2VsZiwgYWxpYXMpOgotICAgICAgICBkcGlkID0gY29udmVydF9hbGlhc190b19vYmplY3Rfa2V5KCJzd2l0Y2hlcyIsIGFsaWFzKQotICAgICAgICBpZiBzZWxmLkRQSURfUkUubWF0Y2goZHBpZCk6Ci0gICAgICAgICAgICBxdWVyeV9kaWN0ID0geyAnZHBpZCcgOiBkcGlkIH0KLSAgICAgICAgICAgIHJvdyA9IHJlc3RfdG9fbW9kZWwuZ2V0X21vZGVsX2Zyb21fdXJsKCdzd2l0Y2hlcycsIHF1ZXJ5X2RpY3QpCi0gICAgICAgICAgICBpZiBsZW4ocm93KSA+PSAxOgotICAgICAgICAgICAgICAgIGlmIG5vdCAnaXAtYWRkcmVzcycgaW4gcm93WzBdIG9yIHJvd1swXS5nZXQoJ2lwLWFkZHJlc3MnKSA9PSAnJzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCJzd2l0Y2ggJXMgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBhbGlhcykKLSAgICAgICAgICAgICAgICByZXR1cm4gcm93WzBdLmdldCgnaXAtYWRkcmVzcycpCi0gICAgICAgIHJldHVybiBhbGlhcwotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGltcGxlbWVudF93cml0ZQotICAgICMKLSAgICBkZWYgaW1wbGVtZW50X3dyaXRlKHNlbGYsIHdvcmRzKToKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAxOgotICAgICAgICAgICAgaWYgIm1lbW9yeSIuc3RhcnRzd2l0aCh3b3Jkc1swXSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW1wbGVtZW50X2NvcHkoWyJydW5uaW5nLWNvbmZpZyIsICJzdGFydHVwLWNvbmZpZyJdKQotICAgICAgICAgICAgZWxpZiAiZXJhc2UiLnN0YXJ0c3dpdGgod29yZHNbMF0pOgotICAgICAgICAgICAgICAgIHByaW50ICJUaGlzIHdpbGwgY2xlYXIgdGhlIHN0YXJ0dXAtY29uZmlnIGFuZCBzZXQgaXQgdG8gYmUgZW1wdHkuIgotICAgICAgICAgICAgICAgIHJlc3AgPSByYXdfaW5wdXQoIkFyZSB5b3Ugc3VyZSB0aGF0IHdhbnQgdG8gcHJvY2VlZD8gW25dIikKLSAgICAgICAgICAgICAgICBpZiByZXNwIGFuZCAieWVzIi5zdGFydHN3aXRoKHJlc3AubG93ZXIoKSk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICJFcmFzaW5nIHN0YXJ0dXAgY29uZmlnIC4uLiIKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5zdG9yZS5kZWxldGVfdXNlcl9kYXRhX2ZpbGUoInN0YXJ0dXAtY29uZmlnL3RpbWUvbGVuL3ZlcnNpb24iKQotICAgICAgICAgICAgICAgICAgICBpZiAnc3RhdHVzJyBpbiByZXN1bHQgYW5kIHJlc3VsdFsnc3RhdHVzJ10gPT0gJ3N1Y2Nlc3MnOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICAgICAgZWxpZiAnbWVzc2FnZScgbm90IGluIHJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygicmVzdCBzdG9yZSByZXN1bHQgZG9lc24ndCBjb250YWluIGVycm9yIG1lc3NhZ2UiKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKHJlc3VsdFsnbWVzc2FnZSddKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICJDb21tYW5kIGFib3J0ZWQgYnkgdXNlcjogd3JpdGUgZXJhc2UiCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBlbGlmICJ0ZXJtaW5hbCIuc3RhcnRzd2l0aCh3b3Jkc1swXSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW1wbGVtZW50X2NvcHkoWyJydW5uaW5nLWNvbmZpZyIsICJ0ZXJtaW5hbCJdKQotICAgICAgICByZXR1cm4gIlN5bnRheDogd3JpdGUgPCB0ZXJtaW5hbCB8IG1lbW9yeSB8IGVyYXNlPiIKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyAKLSAgICAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHNldF9jbG9ja19hY3Rpb24oZGF0YSk6Ci0gICAgICAgIHRpbWVfdmFsdWVzID0gZGF0YVsndGltZSddLnNwbGl0KCc6JykKLSAgICAgICAgaWYgbGVuKHRpbWVfdmFsdWVzKSAhPSAzOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZEVycm9yKCdJbnZhbGlkIHRpbWU7IG11c3QgYmUgSEg6TU06U1MnKQotICAgICAgICBob3VyID0gaW50KHRpbWVfdmFsdWVzWzBdKQotICAgICAgICBtaW51dGUgPSBpbnQodGltZV92YWx1ZXNbMV0pCi0gICAgICAgIHNlY29uZCA9IGludCh0aW1lX3ZhbHVlc1syXSkKLSAgICAgICAgCi0gICAgICAgIE1PTlRIX05BTUVTID0gICgnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInKQotCi0gICAgICAgIGRheV9vZl9tb250aCA9IGludChkYXRhWydkYXktb2YtbW9udGgnXSkKLSAgICAgICAgbW9udGhfbmFtZSA9IGRhdGFbJ21vbnRoJ10KLSAgICAgICAgaWYgbW9udGhfbmFtZSBub3QgaW4gTU9OVEhfTkFNRVM6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRXJyb3IoJ0ludmFsaWQgbW9udGggbmFtZSAoZS5nLiBKYW51YXJ5LCBNYXksIEp1bHkpJykKLSAgICAgICAgbW9udGggPSBNT05USF9OQU1FUy5pbmRleChtb250aF9uYW1lKSArIDEKLSAgICAgICAgeWVhciA9IGludChkYXRhWyd5ZWFyJ10pCi0gICAgICAgIAotICAgICAgICBkYXRlX3RpbWVfaW5mbyA9IHsKLSAgICAgICAgICAgICd5ZWFyJzogeWVhciwKLSAgICAgICAgICAgICdtb250aCc6IG1vbnRoLAotICAgICAgICAgICAgJ2RheSc6IGRheV9vZl9tb250aCwKLSAgICAgICAgICAgICdob3VyJzogaG91ciwKLSAgICAgICAgICAgICdtaW51dGUnOiBtaW51dGUsCi0gICAgICAgICAgICAnc2Vjb25kJzogc2Vjb25kCi0gICAgICAgIH0KLSAgICAgICAgdXJsID0gJ2h0dHA6Ly8lcy9yZXN0L3YxL3N5c3RlbS9jbG9jay9sb2NhbCcgJSBjbGkuY29udHJvbGxlcgotICAgICAgICByZXN1bHQgPSBjbGkuc3RvcmUucmVzdF9wb3N0X3JlcXVlc3QodXJsLCBkYXRlX3RpbWVfaW5mbykKLSAgICAgICAgZGF0ZV90aW1lX2luZm8gPSBqc29uLmxvYWRzKHJlc3VsdCkKLSAgICAgICAgY2xvY2tfc3RyaW5nID0gU0ROU2guZ2V0X2Nsb2NrX3N0cmluZyhkYXRlX3RpbWVfaW5mbywgRmFsc2UpCi0gICAgICAgIHJldHVybiBjbG9ja19zdHJpbmcKLSAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZ2V0X21pc2NvbmZpZ3VyZWRfZGVmYXVsdF9nYXRld2F5Ci0gICAgIyAgCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBnZXRfbWlzY29uZmlndXJlZF9kZWZhdWx0X2dhdGV3YXkoKToKLSAgICAgICAgIiIiCi0gICAgICAgIERldGVybWluZSBpZiB0aGUgY29udHJvbGxlciBpcyBjb25maWd1cmVkIHdpdGggYSBkZWZhdWx0IGdhdGV3YXkKLSAgICAgICAgc2V0dGluZyB0aGF0IGRvZXNuJ3QgbWF0Y2ggKGkuZS4gaXMgbm90IG9uIHRoZSBzYW1lIHN1Ym5ldCkKLSAgICAgICAgYW55IG9mIHRoZSBpbnRlcmZhY2VzIGNvbmZpZ3VyZWQgd2l0aCBzdGF0aWMgSVAgYWRkcmVzc2VzLgotICAgICAgICBUaGlzIGlzIHVzZWQgYnkgdGhlIGJlZ2luX2RlZmF1bHRfZ2F0ZXdheV9jaGVja19hY3Rpb24gYW5kCi0gICAgICAgIGVuZF9kZWZhdWx0X2dhdGV3YXlfY2hlY2tfYWN0aW9uIGFjdGlvbnMgdGhhdCBjaGVjayBpZiBhIGNvbW1hbmQKLSAgICAgICAgcmVzdWx0cyBpbiBhIG1pc2NvbmZpZ3VyZWQgZGVmYXVsdCBnYXRld2F5IHNldHRpbmcgYW5kLCBpZiBzbywKLSAgICAgICAgZW1pdCBhbiBlcnJvciBtZXNzYWdlLgotICAgICAgICBJZiB0aGUgZGVmYXVsdCBnYXRld2F5IGlzIG1pc2NvbmZpZ3VyZWQsIHRoZSByZXR1cm4gdmFsdWUgaXMgdGhlCi0gICAgICAgIGRlZmF1bHQgZ2F0ZXdheSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgcmV0dXJuIHZhbHVlIGlzIE5vbmUuCi0gICAgICAgICIiIgotICAgICAgICAjIEZpcnN0IGZpZ3VyZSBvdXQgd2hpY2ggY29udHJvbGxlci1ub2RlIHdlJ3JlIHdvcmtpbmcgd2l0aC4KLSAgICAgICAgIyBUaGlzIGlzIGEgbGl0dGxlIGtsdWRneSByaWdodCBub3cuIFdlIGNoZWNrIHRoZSBtb2RlIHN0YWNrCi0gICAgICAgICMgbG9va2luZyBmb3IgYSBjb250cm9sbGVyIG5vZGUgZWxlbWVudC4KLSAgICAgICAgY29udHJvbGxlcl9pZCA9IGNsaS5nZXRfbmVzdGVkX21vZGVfb2JqKCdjb250cm9sbGVyLW5vZGUnKQotICAgICAgICBpZiBub3QgY29udHJvbGxlcl9pZDoKLSAgICAgICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCdjaGVja19kZWZhdWx0X2dhdGV3YXlfYWN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20gYSAocG9zc2libHkgbmVzdGVkKSBjb250cm9sbGVyIG5vZGUgY29uZmlnIG1vZGUnKQotICAgICAgICAKLSAgICAgICAgY29udHJvbGxlciA9IGNsaS5nZXRfb2JqZWN0X2Zyb21fc3RvcmUoJ2NvbnRyb2xsZXItbm9kZScsIGNvbnRyb2xsZXJfaWQpCi0gICAgICAgIGlmIG5vdCBjb250cm9sbGVyOgotICAgICAgICAgICAgIyBUaGlzIHNob3VsZG4ndCByZWFsbHkgaGFwcGVuIHVubGVzcyBzb21lb25lL3RoaW5nIGhhcyBtdWNrZWQgd2l0aCB0aGUKLSAgICAgICAgICAgICMgY29udHJvbGxlciBvYmplY3Qgb3V0IGZyb20gdW5kZXIgdGhpcyBpbnN0YW5jZSBvZiB0aGUgQ0xJCi0gICAgICAgICAgICAjIGJ1dCBqdXN0IHRvIGJlIHNhZmUuLi4KLSAgICAgICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRJbnZvY2F0aW9uRXJyb3IoJ0N1cnJlbnQgY29udHJvbGxlciBzZXR0aW5ncyBoYXZlIGJlZW4gZGVsZXRlZC4nKQotICAgICAgICAKLSAgICAgICAgIyBDaGVjayBpZiB0aGUgY29udHJvbGxlciBub2RlIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGRlZmF1bHQgZ2F0ZXdheS4KLSAgICAgICAgIyBJZiBub3QsIHRoZW4gdGhlcmUncyBubyBwb3NzaWJsZSBtaXNjb25maWd1cmF0aW9uIGFuZCB3ZSdyZSBkb25lLgotICAgICAgICBkZWZhdWx0X2dhdGV3YXkgPSBjb250cm9sbGVyLmdldCgnZGVmYXVsdC1nYXRld2F5JykKLSAgICAgICAgaWYgZGVmYXVsdF9nYXRld2F5ID09ICcnOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIAotICAgICAgICAjIFRoZXJlIGlzIGEgZGVmYXVsdCBnYXRld2F5IGNvbmZpZ3VyZWQsIHNvIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUncwotICAgICAgICAjIGFuIGludGVyZmFjZSB0aGF0IG1hdGNoZXMgKGkuZS4gaXMgb24gdGhlIHNhbWUgc3VibmV0IGFzKSB0aGUgZGVmYXVsdAotICAgICAgICAjIGdhdGV3YXkKLSAgICAgICAgaW50ZXJmYWNlcyA9IGNsaS5yZXN0X3F1ZXJ5X29iamVjdHMoJ2NvbnRyb2xsZXItaW50ZXJmYWNlJywgeydjb250cm9sbGVyJzogY29udHJvbGxlcl9pZH0pCi0gICAgICAgIGZvciBpbnRlcmZhY2UgaW4gaW50ZXJmYWNlczoKLSAgICAgICAgICAgIG1vZGUgPSBpbnRlcmZhY2UuZ2V0KCdtb2RlJykKLSAgICAgICAgICAgIGlmIG1vZGUgPT0gJ3N0YXRpYyc6Ci0gICAgICAgICAgICAgICAgaXAgPSBpbnRlcmZhY2UuZ2V0KCdpcCcpCi0gICAgICAgICAgICAgICAgbmV0bWFzayA9IGludGVyZmFjZS5nZXQoJ25ldG1hc2snKQotICAgICAgICAgICAgICAgIGlmIChpcCAhPSAnJykgYW5kIChuZXRtYXNrICE9ICcnKSBhbmQgc2FtZV9zdWJuZXQoZGVmYXVsdF9nYXRld2F5LCBpcCwgbmV0bWFzayk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmV0dXJuIGRlZmF1bHRfZ2F0ZXdheQotICAgICAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY2hlY2tfZGVmYXVsdF9nYXRld2F5X2FjdGlvbgotICAgICMgIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgYmVnaW5fZGVmYXVsdF9nYXRld2F5X2NoZWNrX2FjdGlvbigpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBpcyBhbiBhY3Rpb24gcHJvYyBmb3IgdGhlIGRhdGEtZHJpdmVuIGNvbW1hbmQgbW9kdWxlIHRoYXQgaXMgdXNlZAotICAgICAgICBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBlbmRfZGVmYXVsdF9nYXRld2F5X2NoZWNrX2FjdGlvbiB0byBjaGVjayBpZiBhCi0gICAgICAgIENMSSBjb21tYW5kIHJlc3VsdHMgaW4gYW4gaW1wcm9wZXJseSBjb25maWd1cmVkIGRlZmF1bHQgZ2F0ZXdheSBzZXR0aW5nLgotICAgICAgICBDdXJyZW50bHkgdGhlIGJhY2tlbmQgY29kZSB0aGF0IG1hcHMgdGhlIG5ldHdvcmsvaW50ZXJmYWNlIHNldHRpbmdzCi0gICAgICAgIGZvciB0aGUgY29udHJvbGxlciB0byB0aGUgL2V0Yy9uZXR3b3JrL2ludGVyZmFjZXMgZmlsZSB3aWxsIG9ubHkKLSAgICAgICAgYXBwbHkgdGhlIGRlZmF1bHQgZ2F0ZXdheSBzZXR0aW5nIGlmIGl0J3Mgb24gdGhlIHNhbWUgc3VibmV0IGFzIGFuCi0gICAgICAgIGludGVyZmFjZSB0aGF0J3MgY29uZmlndXJlZCB3aXRoIGEgc3RhdGljIElQIGFkZHJlc3MvbmV0bWFzay4KLSAgICAgICAgU28gaWYgdGhlcmUncyBubyBpbnRlcmZhY2UgdGhhdCBtYXRjaGVzIHRoZSBkZWZhdWx0IGdhdGV3YXkgKGVpdGhlcgotICAgICAgICBiZWNhdXNlIGl0J3MgY29uZmlndXJlZCB0byB1c2UgREhDUCBvciB0aGUgc3VibmV0IGRvZXNuJ3QgbWF0Y2gpCi0gICAgICAgIHRoZW4gdGhlIGRlZmF1bHQgZ2F0ZXdheSBzZXR0aW5nIHdpbGwgYmUgaWdub3JlZCBhbmQgd2Ugd2FudCB0byB3YXJuCi0gICAgICAgIHRoZSB1c2VyIGFib3V0IHRoZSBtaXNjb25maWd1cmF0aW9uLiBUaGUgY2hlY2sgc2hvdWxkIGJlIHBlcmZvcm1lZAotICAgICAgICBvbiBhbnkgY29uZmlndXJhdGlvbiBjaGFuZ2UgdGhhdCBjb3VsZCBhZmZlY3QgdGhpcyBjaGVjay4gVGhpcyBpbmNsdWRlczoKLSAgICAgICAgCi0gICAgICAgIDEpIHNldHRpbmcgdGhlIGRlZmF1bHQgZ2F0ZXdheQotICAgICAgICAyKSBzZXR0aW5nIHRoZSBtb2RlIG9mIGFuIGludGVyZmFjZSB0byBESENQCi0gICAgICAgIDMpIHNldHRpbmcvcmVzZXR0aW5nIHRoZSBpcC9uZXRtYXNrIG9mIGFuIGludGVyZmFjZQotICAgICAgICA0KSBkZWxldGluZyBhbiBpbnRlcmZhY2UKLSAgICAgICAgCi0gICAgICAgIFdlIG9ubHkgd2FudCB0byBlbWl0IHRoZSB3YXJuaW5nIGlmIHRoZSBkZWZhdWx0IGdhdGV3YXkgd2FzIHByZXZpb3VzbHkKLSAgICAgICAgbm90IG1pc2NvbmZpZ3VyZWQgYW5kIHRoZSBjdXJyZW50IGNvbW1hbmQgcmVzdWx0ZWQgaW4gYSBtaXNjb25maWd1cmF0aW9uLAotICAgICAgICBzbyB3ZSB3YW50IHRvIGNoZWNrIGZvciBhIG1pc2NvbmZpZ3VyYXRpb24gYmVmb3JlIGFwcGx5aW5nIHRoZSBjb21tYW5kCi0gICAgICAgIGFuZCB0aGVuIGNoZWNrIGFnYWluIGFmdGVyIHRoZSBzZXR0aW5ncyBoYXZlIGJlZW4gdXBkYXRlZC4gVGhlCi0gICAgICAgIGJlZ2luX2RlZmF1bHRfZ2F0ZXdheV9jaGVja19hY3Rpb24gaXMgdGhlIGFjdGlvbiB0aGF0IGlzIHBlcmZvcm1lZCBiZWZvcmUKLSAgICAgICAgdGhlIHNldHRpbmdzIGFyZSB1cGRhdGVkIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbmRfZGVmYXVsdF9nYXRld2F5X2NoZWNrX2FjdGlvbgotICAgICAgICBhY3Rpb24gaXMgdGhlIG9uZSB0aGF0IGlzIHBlcmZvcm1lZCBhZnRlciB0aGUgc2V0dGluZ3MgYXJlIHVwZGF0ZWQuCi0gICAgICAgIAotICAgICAgICBMT09LITogSWRlYWxseSB3ZSBzaG91bGQgYmUgZG9pbmcgdGhpcyBjaGVjayBpbiB0aGUgc2RuY29uIGNvZGUgaW5zdGVhZAotICAgICAgICBvZiBoZXJlIGluIHRoZSBDTEkgY29kZS4gVGhhdCB3YXkgdGhlIHdhcm5pbmcgd291bGQgYWxzbyBiZSByZXR1cm5lZAotICAgICAgICBmb3IgY2xpZW50cyB0aGF0IGFyZSBjaGFuZ2luZyB0aGVzZSBzZXR0aW5ncyBkaXJlY3RseSB2aWEgdGhlIFJFU1QKLSAgICAgICAgQVBJIGluc3RlYWQgb2YgdmlhIHRoZSBDTEkuIEJ1dCB0aGVyZSBpc24ndCBhIHJlYWxseSBnb29kIG1lY2hhbmlzbQotICAgICAgICBjdXJyZW50bHkgZm9yIHRoZSBSRVNUIEFQSSB0byByZXR1cm4gYSB3YXJuaW5nIGJ1dCBzdGlsbCBhcHBseSB0aGUKLSAgICAgICAgY29uZmlnIGNoYW5nZS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgU3Rhc2ggYXdheSBpZiB0aGUgZ2F0ZXdheSBzZXR0aW5nIHdhcyBhbHJlYWR5IG1pc2NvbmZpZ3VyZWQgYXQgdGhlCi0gICAgICAgICMgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IGNvbW1hbmQuIAotICAgICAgICAjIExPT0shIFRoaXMgaXMgYSBiaXQga2x1ZGd5IHRvIHN0YXNoIHRoaXMgYXdheSBpbiB0aGUgQ0xJIG9iamVjdC4KLSAgICAgICAgIyBXaGVuIHRoZSBjb21tYW5kIG1vZHVsZSBhY3Rpb24gQVBJIGlzIGNoYW5nZWQgdG8gYWxsb3cgYWNjZXNzIHRvIHRoZQotICAgICAgICAjIGNvbnRleHQsIHRoaXMgY29kZSBzaG91bGQgYmUgdXBkYXRlZCB0byBzdGFzaCB0aGUgdmFsdWUgaW4gdGhlIGNvbnRleHQKLSAgICAgICAgIyBpbnN0ZWFkIG9mIHRoZSBDTEkuCi0gICAgICAgIGNsaS5iZWdpbl9taXNjb25maWd1cmVkX2RlZmF1bHRfZ2F0ZXdheSA9IFNETlNoLmdldF9taXNjb25maWd1cmVkX2RlZmF1bHRfZ2F0ZXdheSgpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGVuZF9kZWZhdWx0X2dhdGV3YXlfY2hlY2tfYWN0aW9uKCk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGlzIGFuIGFjdGlvbiBwcm9jIGZvciB0aGUgZGF0YS1kcml2ZW4gY29tbWFuZCBtb2R1bGUgdGhhdCBpcyB1c2VkCi0gICAgICAgIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGJlZ2luX2RlZmF1bHRfZ2F0ZXdheV9jaGVja19hY3Rpb24gdG8gY2hlY2sgaWYgYQotICAgICAgICBDTEkgY29tbWFuZCByZXN1bHRzIGluIGFuIGltcHJvcGVybHkgY29uZmlndXJlZCBkZWZhdWx0IGdhdGV3YXkgc2V0dGluZy4KLSAgICAgICAgQ2hlY2sgdGhlIGRvYyBjb21tZW50cyBmb3IgYmVnaW5fZGVmYXVsdF9nYXRld2F5X2NoZWNrX2FjdGlvbiBmb3IgbW9yZQotICAgICAgICBkZXRhaWxzIGFib3V0IGhvdyB0aGUgdHdvIGFjdGlvbnMgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQuCi0gICAgICAgICIiIgotICAgICAgICBlbmRfbWlzY29uZmlndXJlZF9kZWZhdWx0X2dhdGV3YXkgPSBTRE5TaC5nZXRfbWlzY29uZmlndXJlZF9kZWZhdWx0X2dhdGV3YXkoKQotICAgICAgICBpZiAoZW5kX21pc2NvbmZpZ3VyZWRfZGVmYXVsdF9nYXRld2F5IGFuZAotICAgICAgICAgICAgKGVuZF9taXNjb25maWd1cmVkX2RlZmF1bHRfZ2F0ZXdheSAhPSBjbGkuYmVnaW5fbWlzY29uZmlndXJlZF9kZWZhdWx0X2dhdGV3YXkpKToKLSAgICAgICAgICAgIHJldHVybiAgKCdUaGUgY29udHJvbGxlciBpcyBjb25maWd1cmVkIHdpdGggYSBkZWZhdWx0IGdhdGV3YXkgc2V0dGluZyAoJXMpLCB0aGF0XG4nCi0gICAgICAgICAgICAgICAgICAgICAnaXMgbm90IG9uIHRoZSBzYW1lIHN1Ym5ldCBhcyBhbnkgb2YgdGhlIGludGVyZmFjZXMgY29uZmlndXJlZCB0byB1c2UgYVxuJwotICAgICAgICAgICAgICAgICAgICAgJ3N0YXRpYyBJUCBhZGRyZXNzLiBUaGUgZGVmYXVsdCBnYXRld2F5IHNldHRpbmcgd2lsbCBiZSBpZ25vcmVkLicgJQotICAgICAgICAgICAgICAgICAgICAgZW5kX21pc2NvbmZpZ3VyZWRfZGVmYXVsdF9nYXRld2F5KQotIAotIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBsb2FkX3RpbWVfem9uZV9saXN0Ci0gICAgIyAgVXNlIHRoZSByZXN0IGFwaSB0byBjb2xsZWN0IGFsbCB0aGUga25vd24gdGltZSB6b25lcwotICAgICMKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGxvYWRfdGltZV96b25lX2xpc3QoKToKLSAgICAgICAgaWYgbm90IGNsaS50aW1lX3pvbmVfbGlzdDoKLSAgICAgICAgICAgIHVybCA9ICJodHRwOi8vJXMvcmVzdC92MS9zeXN0ZW0vdGltZXpvbmVzL2FsbCIgJSBjbGkuY29udHJvbGxlcgotICAgICAgICAgICAgY2xpLnRpbWVfem9uZV9saXN0ID0gY2xpLnJlc3Rfc2ltcGxlX3JlcXVlc3RfdG9fZGljdCh1cmwpCi0gCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHRpbWVfem9uZV9jb21wbGV0aW9uCi0gICAgIwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgdGltZV96b25lX2NvbXBsZXRpb24od29yZHMsIHRleHQsIGNvbXBsZXRpb25zKToKLSAgICAgICAgU0ROU2gubG9hZF90aW1lX3pvbmVfbGlzdCgpCi0gICAgICAgIGNvbXBsZXRpb25fZGljdCA9IHt9Ci0gICAgICAgIHR6X2NvbXBsZXRpb25zID0gW10KLSAgICAgICAgZm9yIHR6IGluIGNsaS50aW1lX3pvbmVfbGlzdDoKLSAgICAgICAgICAgIGlmIHR6Lmxvd2VyKCkuc3RhcnRzd2l0aCh0ZXh0Lmxvd2VyKCkpOgotICAgICAgICAgICAgICAgIHR6X2NvbXBsZXRpb25zLmFwcGVuZCh0eikKLSAgICAgICAgICAgICAgICBmb3IgaW5kZXggaW4gcmFuZ2UobGVuKHRleHQpLCBsZW4odHopKToKLSAgICAgICAgICAgICAgICAgICAgaWYgdHpbaW5kZXhdID09ICcvJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHR6ID0gdHpbOmluZGV4KzFdCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25fZGljdFt0el0gPSAnVGltZXpvbmUgQ2hvaWNlJwotICAgICAgICAKLSAgICAgICAgaWYgbGVuKGNvbXBsZXRpb25fZGljdCkgPj0gMToKLSAgICAgICAgICAgIGNvbXBsZXRpb25zLnVwZGF0ZShjb21wbGV0aW9uX2RpY3QpCi0gICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHRpbWVfem9uZV92YWxpZGF0aW9uCi0gICAgIwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgdGltZV96b25lX3ZhbGlkYXRpb24odHlwZWRlZiwgdmFsdWUpOgotICAgICAgICBTRE5TaC5sb2FkX3RpbWVfem9uZV9saXN0KCkKLSAgICAgICAgaWYgdmFsdWUgbm90IGluIGNsaS50aW1lX3pvbmVfbGlzdDoKLSAgICAgICAgICAgIHJhaXNlIGVycm9yLkFyZ3VtZW50VmFsaWRhdGlvbkVycm9yKCdJbnZhbGlkIHRpbWUgem9uZScpCi0gICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNwX2Nsb2NrCi0gICAgIwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgY3BfY2xvY2sod29yZHMsIHRleHQsIGNvbXBsZXRpb25fY2hhcik6Ci0gICAgICAgIHJldHVybiBjb21tYW5kLmRvX2NvbW1hbmRfY29tcGxldGlvbih3b3JkcywgdGV4dCkKLSAgICAgICAgICAgICAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZG9fY2xvY2sKLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBkb19jbG9jayh3b3Jkcyk6Ci0gICAgICAgIHJldHVybiBjb21tYW5kLmRvX2NvbW1hbmQoWydjbG9jayddICsgd29yZHMpCi0gICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX3Nob3dfY2xvY2sKLSAgICAjCi0gICAgZGVmIGNwX3Nob3dfY2xvY2soc2VsZiwgd29yZHMsIHRleHQsIGNvbXBsZXRpb25fY2hhcik6Ci0gICAgICAgIGlmIGxlbih3b3JkcykgPT0gMSBhbmQgJ2RldGFpbCcuc3RhcnRzd2l0aCh0ZXh0Lmxvd2VyKCkpOgotICAgICAgICAgICAgcmV0dXJuIFsnZGV0YWlsJ10KLSAgICAKLSAgICAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGdldF9jbG9ja19zdHJpbmcodGltZV9pbmZvLCBkZXRhaWwgPSBOb25lKToKLSAgICAgICAgIyBUaGUgdHogaXRlbSBjb250YWlucyB0aGUgYWJicmV2aWF0ZWQgdGltZSB6b25lIHN0cmluZyAoZS5nLiBQU1QsIEVTVCkKLSAgICAgICAgIyBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBmdWxsIHRpbWUgem9uZSBzdHJpbmcgKGUuZy4gQW1lcmljYS9Mb3NfQW5nZWxlcykKLSAgICAgICAgIyB3aGljaCB3ZSBnZXQgZnJvbSB0aGUgY29udHJvbGxlci1ub2RlIG9iamVjdCBiZWxvdyB3aGVuIHdlJ3JlIHNob3dpbmcKLSAgICAgICAgIyBkZXRhaWwgaW5mby4KLSAgICAgICAgdHogPSB0aW1lX2luZm9bJ3R6J10KLSAgICAgICAgZGVsIHRpbWVfaW5mb1sndHonXQotICAgICAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lKCoqdGltZV9pbmZvKQotICAgICAgICBpZiBkZXRhaWw6Ci0gICAgICAgICAgICB0aW1lX2luZm9bJ3R6J10gPSB0egotICAgICAgICAKLSAgICAgICAgIyBBcmlzdGEtc3R5bGUgZm9ybWF0Ci0gICAgICAgICNzaG93X3Jlc3VsdCA9IGR0LnN0cmZ0aW1lKCclYycpCi0gICAgICAgIAotICAgICAgICAjIENpc2NvLXN0eWxlIGZvcm1hdAotICAgICAgICBjbG9ja19zdHJpbmcgPSBkdC5zdHJmdGltZSgnJUg6JU06JVMgJysgdHogKyAnICVhICViICVkICVZJykKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBjbG9ja19zdHJpbmcKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBkb19zaG93X2Nsb2NrCi0gICAgIwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZG9fc2hvd19jbG9jayh3b3Jkcyk6Ci0gICAgICAgIHN5bnRheF9oZWxwID0gIlN5bnRheDogc2hvdyBjbG9jayBbZGV0YWlsXSIKLSAgICAgICAgCi0gICAgICAgIGlmIGxlbih3b3JkcykgPT0gMDoKLSAgICAgICAgICAgIGRldGFpbCA9IEZhbHNlCi0gICAgICAgIGVsaWYgbGVuKHdvcmRzKSA9PSAxOgotICAgICAgICAgICAgaWYgbm90ICdkZXRhaWwnLnN0YXJ0c3dpdGgod29yZHNbMF0ubG93ZXIoKSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN5bnRheF9oZWxwCi0gICAgICAgICAgICBkZXRhaWwgPSBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc3ludGF4X2hlbHAKLQotICAgICAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL2Nsb2NrL2xvY2FsLyIgJSBjbGkuY29udHJvbGxlcgotICAgICAgICB0aW1lX2luZm8gPSBjbGkucmVzdF9zaW1wbGVfcmVxdWVzdF90b19kaWN0KHVybCkKLSAgICAgICAgY2xvY2tfc3RyaW5nID0gU0ROU2guZ2V0X2Nsb2NrX3N0cmluZyh0aW1lX2luZm8sIGRldGFpbCkKLSAgICAgICAgcmV0dXJuIGNsb2NrX3N0cmluZwotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNwX3Nob3dfdm5zCi0gICAgIwotICAgIGRlZiBjcF9zaG93X3ZucyhzZWxmLCB3b3JkcywgdGV4dCwgY29tcGxldGlvbl9jaGFyKToKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIG9iamVjdHNfc3RhcnRpbmdfd2l0aCgndm5zLWRlZmluaXRpb24nLCB0ZXh0KQotICAgICAgICBlbGlmIGxlbih3b3JkcykgPT0gMjoKLSAgICAgICAgICAgIHJldHVybiBbeCBmb3IgeCBpbgotICAgICAgICAgICAgICAgICAgICBbICdpbnRlcmZhY2UnLCAnbWFjLWFkZHJlc3MtdGFibGUnLCAnaW50ZXJmYWNlLXJ1bGVzJywgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2FjY2Vzcy1saXN0cycsICdydW5uaW5nLWNvbmZpZycsICdzd2l0Y2gnLCAnZmxvdycgXQotICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgodGV4dCldCi0gICAgICAgIGVsaWYgbGVuKHdvcmRzKSA9PSAzIGFuZCAnc3dpdGNoJy5zdGFydHN3aXRoKHdvcmRzWzJdKToKLSAgICAgICAgICAgIHJldHVybiBvYmplY3RzX3N0YXJ0aW5nX3dpdGgoInN3aXRjaCIsIHRleHQpCi0gICAgICAgIGVsaWYgKGxlbih3b3JkcykgPj0gMykgYW5kICh3b3Jkc1syXSA9PSAnZmxvdycpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY3Bfc2hvd192bnNfZmxvdyh3b3JkcywgdGV4dCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKCI8Y3I+IikKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBzaG93X3Zuc19kZWZpbml0aW9uX3J1bm5pbmdfY29uZmlnCi0gICAgIyBEaXNwbGF5IHRoZSB2bnMtZGVmaW5pdGlvbiAtLSB0aGUgaW50ZXJmYWNlIHJ1bGVzIGZvciB0aGUgdm5zLgotICAgICMKLSAgICBkZWYgc2hvd192bnNfZGVmaW5pdGlvbl9ydW5uaW5nX2NvbmZpZyhzZWxmLCBjb25maWcsIHZuc19uYW1lLHRlbmFudD1Ob25lLGluZGVudD0wKToKLSAgICAgICAgaWYgdGVuYW50PT1Ob25lIGFuZCB2bnNfbmFtZSE9J2FsbCc6Ci0gICAgICAgICAgICB2bnNfaWQ9J2RlZmF1bHR8Jyt2bnNfbmFtZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdm5zX2lkPXRlbmFudCArJ3wnK3Zuc19uYW1lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHZucyA9IHNlbGYuZ2V0X29iamVjdF9mcm9tX3N0b3JlKCd2bnMtZGVmaW5pdGlvbicsIHZuc19pZCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCdubyB2bnMgbmFtZWQgJXMnICUgdm5zX25hbWUpCi0KLSAgICAgICAgY29uZmlnLmFwcGVuZCgnICcgKjIqaW5kZW50ICsgInZucy1kZWZpbml0aW9uICVzXG4iICUgdm5zX25hbWUpCi0gICAgICAgIHJ1bl9jb25maWcucnVubmluZ19jb25maWdfdm5zX2RldGFpbHMoY29uZmlnLCB2bnMsIGluZGVudCsxKQotCi0gICAgICAgIHZuc19ydWxlcyA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdm5zX3J1bGVzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZucycsIHZuc19pZCwgImV4YWN0IikKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgCi0gICAgICAgIGlmIHZuc19ydWxlczoKLSAgICAgICAgICAgIHJ1bl9jb25maWcucnVubmluZ19jb25maWdfdm5zX2lmX3J1bGUoY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bnNfcnVsZXMsaW5kZW50KzEpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgc2hvd192bnNfcnVubmluZ19jb25maWcKLSAgICAjICBJbiB0aGUgbGFyZ2VyICdydW5uaW5nLWNvbmZpZycgZm9yIHZucywgdGhlIGNvbXBsZXRlIHZucyB0YWJsZXMgYXJlIHJlYWQKLSAgICAjICBzaW5jZSB0aGUgY29tcGxldGUgJ3J1bm5pbmctY29uZmlnJyB3aWxsIGRpc3BsYXkgYWxsIHRoZSBkYXRhIGZyb20gdGhlCi0gICAgIyAgZmllbGRzLiAgSGVyZSwgdGhlIHRhYmxlcyBhcmUgc2VhcmNoZWQgb25seSBmb3Igc3BlY2lmaWMgdm5zIGVudHJpZXMuCi0gICAgIwotICAgICMgIFRoZSBwcm9jZWR1cmUncyBuYW1lIGlzIGNob29zZW4gY2FyZWZ1bGx5LCBzaW5jZSBpdHMgbm90IGludGVuZGVkIHRvCi0gICAgIyAgcGFydCBvZiBhbnkgb2Ygc2hvdyBjb21tYW5kLCBjb21wbGV0aW9uLCBvciBjb21tYW5kIHByb2Nlc3NpbmcKLSAgICAjCi0gICAgZGVmIHNob3dfdm5zX3J1bm5pbmdfY29uZmlnKHNlbGYsIHZuc19uYW1lLCB0ZW5hbnQ9Tm9uZSwgaW5kZW50PTApOgotICAgICAgICBjb25maWc9W10KLSAgICAgICAgcHJlY29uZmlnPVsnICcqMippbmRlbnQgKyJ2bnMgJXNcbiIgJSB2bnNfbmFtZV0KLSAgICAgICAgaWYgdGVuYW50PT1Ob25lIGFuZCB2bnNfbmFtZSE9J2FsbCc6Ci0gICAgICAgICAgICB2bnNfbmFtZT0nZGVmYXVsdHwnK3Zuc19uYW1lCi0gICAgICAgIGlmIHRlbmFudCE9Tm9uZToKLSAgICAgICAgICAgIHZuc19uYW1lPXRlbmFudCsnfCcrdm5zX25hbWUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5nZXRfb2JqZWN0X2Zyb21fc3RvcmUoJ3Zucy1kZWZpbml0aW9uJywgdm5zX25hbWUpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygnbm8gdm5zIG5hbWVkICVzJyAlIHZuc19uYW1lKQotICAgICAgICB2bnNfYWNscyA9IFtdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHZuc19hY2xzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndm5zLWFjY2Vzcy1saXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndm5zJywgdm5zX25hbWUsICdleGFjdCcpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgZm9yIGFjbCBpbiB2bnNfYWNsczoKLSAgICAgICAgICAgICMgbm90ZSB1c2Ugb2Yga2V5IGluaXRpYWxpemVkIGFib3ZlCi0KLSAgICAgICAgICAgIHZuc19hY2xfZW50cmllcyA9IE5vbmUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB2bnNfYWNsX2VudHJpZXMgPSBzZWxmLmdldF90YWJsZV9mcm9tX3N0b3JlKCd2bnMtYWNjZXNzLWxpc3QtZW50cnknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zucy1hY2Nlc3MtbGlzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2xbJ2lkJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhY3QnKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBydW5fY29uZmlnLnJ1bm5pbmdfY29uZmlnX3Zuc19hY2woY29uZmlnLCB2bnNfbmFtZSwgYWNsLCB2bnNfYWNsX2VudHJpZXMsaW5kZW50KzEpCi0KLSAgICAgICAgdm5zX2ludGVyZmFjZV9hY2wgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHZuc19pbnRlcmZhY2VfYWNsID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndm5zLWludGVyZmFjZS1hY2Nlc3MtbGlzdCcpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgZm9yIHZuc19pZiBpbiBydW5fY29uZmlnLnJ1bm5pbmdfY29uZmlnX2FjdGl2ZV92bnNfaW50ZXJmYWNlcyh2bnNfbmFtZSwgdm5zX2ludGVyZmFjZV9hY2wpOgotICAgICAgICAgICAgY29uZmlnLmFwcGVuZCgnICcgKjIqKGluZGVudCsxKSArICJpbnRlcmZhY2UgJXNcbiIgJSB2bnNfaWYpCi0gICAgICAgICAgICBydW5fY29uZmlnLnJ1bm5pbmdfY29uZmlnX3Zuc19pZl9hbmRfYWNjZXNzX2dyb3VwKGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5zX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZuc19pZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5zX2ludGVyZmFjZV9hY2wsaW5kZW50KzIpCi0gICAgICAgIGlmIGxlbihjb25maWcpID4gMDoKLSAgICAgICAgICAgIGNvbmZpZyA9IHByZWNvbmZpZyArIGNvbmZpZwotICAgICAgICByZXR1cm4gJycuam9pbihjb25maWcpCi0KLSAgICAjZ2VuZXJhdGUgdGVuYW50IHh4eCBydW5uaW5nIGNvbmZpZwotICAgIGRlZiBzaG93X3RlbmFudF9ydW5uaW5nX2NvbmZpZyhzZWxmLCBjb25maWcsIHRlbmFudF9uYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRlbmFudHMgPSBzZWxmLmdldF9vYmplY3RfZnJvbV9zdG9yZSgndGVuYW50JywgdGVuYW50X25hbWUpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coJ25vIHRlbmFudCBuYW1lZCAlcycgJSB0ZW5hbnRfbmFtZSkKLSAgICAKLSAgICAgICAgY29uZmlnLmFwcGVuZCgiIVxudGVuYW50ICVzXG4iICUgdGVuYW50X25hbWUpCi0gICAgICAgIHJ1bl9jb25maWcucnVubmluZ19jb25maWdfdGVuYW50X2RldGFpbHMoY29uZmlnLHRlbmFudHMpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdm5zZXMgPSBzZWxmLmdldF90YWJsZV9mcm9tX3N0b3JlKCd2bnMtZGVmaW5pdGlvbicsJ3RlbmFudCcsdGVuYW50X25hbWUsImV4YWN0IikKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHZuc2VzID0ge30KLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdmlydHVhbF9yb3V0ZXJzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndmlydHVhbHJvdXRlcicsJ3RlbmFudCcsIHRlbmFudF9uYW1lLCAiZXhhY3QiKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgdmlydHVhbF9yb3V0ZXJzID0ge30KLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBmb3Igdm5zIGluIHZuc2VzOgotICAgICAgICAgICAgdm5zX25hbWU9dm5zWyd2bnNuYW1lJ10KLSAgICAgICAgICAgIHNlbGYuc2hvd192bnNfZGVmaW5pdGlvbl9ydW5uaW5nX2NvbmZpZyhjb25maWcsIHZuc19uYW1lLCB0ZW5hbnQ9dGVuYW50X25hbWUsaW5kZW50PTEpCi0gICAgICAgICAgICBjb25maWcgKz0gc2VsZi5zaG93X3Zuc19ydW5uaW5nX2NvbmZpZyh2bnNfbmFtZSwgdGVuYW50PXRlbmFudF9uYW1lLGluZGVudD0xKQotICAgICAgICAgICAgCi0gICAgICAgIGZvciB2aXJ0dWFsX3JvdXRlciBpbiB2aXJ0dWFsX3JvdXRlcnM6Ci0gICAgICAgICAgICB2aXJ0dWFsX3JvdXRlcl9uYW1lPXZpcnR1YWxfcm91dGVyWyd2cm5hbWUnXQotICAgICAgICAgICAgdmlydHVhbF9yb3V0ZXJfaWQ9dmlydHVhbF9yb3V0ZXJbJ2lkJ10KLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoIiAgcm91dGVyICVzXG4iICUgdmlydHVhbF9yb3V0ZXJfbmFtZSkKLSAgICAgICAgICAgIHJ1bl9jb25maWcucnVubmluZ19jb25maWdfdGVuYW50X3JvdXRlcl9kZXRhaWxzKGNvbmZpZyx2aXJ0dWFsX3JvdXRlcixpbmRlbnQ9MSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB2cl9pbnRlcmZhY2VzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnLCd2aXJ0dWFsLXJvdXRlcicsIHZpcnR1YWxfcm91dGVyX2lkLCAiZXhhY3QiKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICB2cl9pbnRlcmZhY2VzID0ge30KLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB2cl9yb3V0ZXMgPSBzZWxmLmdldF90YWJsZV9mcm9tX3N0b3JlKCd2aXJ0dWFscm91dGVyLXJvdXRpbmdydWxlJywndmlydHVhbC1yb3V0ZXInLCB2aXJ0dWFsX3JvdXRlcl9pZCwgImV4YWN0IikKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgdnJfcm91dGVzID0ge30KLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB2cl9nd3Bvb2xzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgndmlydHVhbHJvdXRlci1nd3Bvb2wnLCd2aXJ0dWFsLXJvdXRlcicsIHZpcnR1YWxfcm91dGVyX2lkLCAiZXhhY3QiKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICB2cl9nd3Bvb2xzID0ge30KLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAgICAgZm9yIHZyX2ludGVyZmFjZSBpbiB2cl9pbnRlcmZhY2VzOgotICAgICAgICAgICAgICAgIHJ1bl9jb25maWcucnVubmluZ19jb25maWdfcm91dGVyX2ludGVyZmFjZV9kZXRhaWxzKGNvbmZpZyx2cl9pbnRlcmZhY2UsaW5kZW50PTIpCi0gICAgICAgICAgICBmb3IgdnJfcm91dGUgaW4gdnJfcm91dGVzOgotICAgICAgICAgICAgICAgIHJ1bl9jb25maWcucnVubmluZ19jb25maWdfcm91dGVyX3J1bGVfZGV0YWlscyhjb25maWcsdnJfcm91dGUsaW5kZW50PTIpCi0gICAgICAgICAgICBmb3IgdnJfZ3dwb29sIGluIHZyX2d3cG9vbHM6Ci0gICAgICAgICAgICAgICAgcnVuX2NvbmZpZy5ydW5uaW5nX2NvbmZpZ19yb3V0ZXJfZ3dwb29sX2RldGFpbHMoY29uZmlnLHZyX2d3cG9vbCxpbmRlbnQ9MikKLSAgICAgIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBzd2l0Y2hfcG9ydF9tYXRjaAotICAgICMgIFJldHVybiBUcnVlIHdoZW4gdGhlIHBvcnQgbWF0Y2hlcyBhIHBvcnQgc3BlY2lyZmljYXRpb24gInBhdHRlcm4iCi0gICAgIwotICAgICMgIFRoZSBwb3J0IHNwZWNpZmljYXRpb24gb2YgYW4gaW50ZXJmYWNlIHJ1bGUgaXMgYSBjb21tYW5kIHNlcGFyYXRlZCBsaXN0LAotICAgICMgIHdoaWNoIGNhbiBjb250YWluIGEgdGFpbCBvZiAiLTxkPiIuICBUaGF0IHRhaWwgZGVzY3JpYmVzIGEgcmFuZ2UuCi0gICAgIyAgV2l0aCBhIHBvcnQgcmFuZ2UsIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgJ3BvcnQnIHBhcmFtZXRlcgotICAgICMgIGlzIGEgbWF0Y2guCi0gICAgIwotICAgIGRlZiBzd2l0Y2hfcG9ydF9tYXRjaChzZWxmLCBwb3J0LCBwYXR0ZXJuKToKLSAgICAgICAgIyBYWFggdmFsaWRhdGUgcG9ydCBpcyBzb21ldGhpbmcgd2hpY2ggZW5kcyBpbiBhIG51bWJlcj8KLSAgICAgICAgZm9yIGZpZWxkIGluIHBhdHRlcm4uc3BsaXQoJywnKToKLSAgICAgICAgICAgIG0gPSByZS5tYXRjaChyJ14oW0EtWmEtejAtOS1dKj8pKFxkKyktKFxkKykkJywgcGF0dGVybikKLSAgICAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAgICAgICAgIGlmIGZpZWxkID09IHBvcnQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHByZWZpeCA9IG0uZ3JvdXAoMSkKLSAgICAgICAgICAgIHN0YXJ0cG9ydCA9IGludChtLmdyb3VwKDIpKQotICAgICAgICAgICAgZW5kcG9ydCA9IGludChtLmdyb3VwKDMpKQotICAgICAgICAgICAgaWYgbm90IHBvcnQuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0YWlsID0gcG9ydFtsZW4ocHJlZml4KTpdCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5ESUdJVFNfUkUubWF0Y2godGFpbCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coInBvcnQgbmFtZSB0YWlsICVzIG11c3QgYmUgYWxsIGRpZ2l0cyIgJSB0YWlsKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtID0gcmUuc2VhcmNoKHInKFxkKykkJywgcG9ydCkKLSAgICAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBwb3J0ID0gbS5ncm91cCgxKQotICAgICAgICAgICAgaWYgaW50KHBvcnQpID49IGludChzdGFydHBvcnQpIGFuZCBpbnQocG9ydCkgPD0gaW50KGVuZHBvcnQpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50IHNlbGYuZXJyb3JfbXNnKCJwb3J0ICVzIG91dCBvZiBwb3J0LXNwZWMgcmFuZ2UgJXMtJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9ydCwgc3RhcnRwb3J0LCBlbmRwb3J0KSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNwX3Nob3dfZXZlbnRfaGlzdG9yeQotICAgICMgIENvbW1hbmQgY29tcGxldGlvbiBmb3IgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIHNlZQotICAgICMgIGxhc3QgPG4+IGV2ZW50cyBvZiA8bmFtZT4gZXZlbnRzCi0gICAgIyAgVXNlZCBpbiAic2hvdyBldmVudC1oaXN0b3J5IDxuYW1lPiBbIGxhc3QgPG4+IF0iCi0gICAgIwotICAgIGRlZiBjcF9zaG93X2V2ZW50X2hpc3Rvcnkoc2VsZiwgd29yZHMsIHRleHQsIGNvbXBsZXRpb25fY2hhcik6Ci0gICAgICAgIG9wdGlvbnMgPSBbJ2F0dGFjaG1lbnQtcG9pbnQnLCAKLSAgICAgICAgICAgICAgICAgICAncGFja2V0LWluJywKLSAgICAgICAgICAgICAgICAgICAndG9wb2xvZ3ktbGluaycsCi0gICAgICAgICAgICAgICAgICAgJ3RvcG9sb2d5LXN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgJ3RvcG9sb2d5LWNsdXN0ZXInLAotICAgICAgICAgICAgICAgICAgICMgQWRkIG1vcmUgZXZlbnQgaGlzdG9yeSBvcHRpb25zIGFib3ZlIHRoaXMgbGluZQotICAgICAgICAgICAgICAgICAgICMgQWRkIHRoZSBzYW1lIGl0ZW0gaW4gZG9fc2hvd19ldmVudF9oaXN0b3J5KCkgYmVsb3cgYWxzbwotICAgICAgICAgICAgICAgICAgXQotICAgICAgICBjb21wbGV0aW9uX2hlbHAgPSAnJwotICAgICAgICBmb3Igb3AgaW4gb3B0aW9uczoKLSAgICAgICAgICAgIGV2X2hlbHAgPSAnJXMgIHNob3cgJXMgZXZlbnRzXG4nICUgKG9wLCBvcCkKLSAgICAgICAgICAgIGNvbXBsZXRpb25faGVscCA9IGNvbXBsZXRpb25faGVscCArIGV2X2hlbHAKLQotICAgICAgICAjIHN5bnRheDogc2hvdyBldmVudC1oaXN0b3J5IDxuYW1lPiBbIGxhc3QgPG4+IF0KLSAgICAgICAgaWYgKGxlbih3b3JkcykgPT0gMSkgYW5kIHRleHQ9PScnOgotICAgICAgICAgICAgc2VsZi5wcmludF9jb21wbGV0aW9uX2hlbHAoY29tcGxldGlvbl9oZWxwKQotICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMKLSAgICAgICAgZWxpZiAobGVuKHdvcmRzKSA9PSAxKToKLSAgICAgICAgICAgIHJldHVybiBbb3AgZm9yIG9wIGluIG9wdGlvbnMgaWYgb3Auc3RhcnRzd2l0aCh0ZXh0KV0KLSAgICAgICAgZWxpZiAobGVuKHdvcmRzKSA9PSAyKToKLSAgICAgICAgICAgIGlmIHRleHQgPT0gJyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5wcmludF9jb21wbGV0aW9uX2hlbHAoImxhc3QgIFNob3cgbGFzdGVzdCA8bj4gZXZlbnRzXG4iICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGNyPiAgRW50ZXIiKQotICAgICAgICAgICAgICAgIHJldHVybiBbJ2xhc3QnLCAnPGNyPiddCi0gICAgICAgICAgICBlbGlmICJsYXN0Ii5zdGFydHN3aXRoKHRleHQpOgotICAgICAgICAgICAgICAgIHJldHVybiBbImxhc3QiXQotICAgICAgICBlbGlmIChsZW4od29yZHMpID09IDMpOgotICAgICAgICAgICAgc2VsZi5wcmludF9jb21wbGV0aW9uX2hlbHAoIjxudW1iZXI+ICBFbnRlciBudW1iZXIgb2YgbGF0ZXN0IGV2ZW50cyB0byBkaXNwbGF5ICgxLTEwMDAwKSIpCi0gICAgICAgICAgICByZXR1cm4gcmFuZ2UoMCwgMTAwMDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnByaW50X2NvbXBsZXRpb25faGVscCgnPGNyPicpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZG9fc2hvd19ldmVudF9oaXN0b3J5Ci0gICAgIwotICAgICMgU2hvdyB0aGUgZXZlbnQgaGlzdG9yeSBvZiB0aGUgc3BlY2lmaWVkIGV2ZW50cwotICAgICMgU3ludGF4OiBzaG93IGV2ZW50LWhpc3RvcnkgPGV2ZW50LWhpc3RvcnktbmFtZT4gW2xhc3QgPGNvdW50Pl0KLSAgICAjIDxldmVudC1oaXN0b3J5LW5hbWU+IGlzIHdvcmRzWzBdLCA8Y291bnQ+IGlzIHdvcmRzWzJdCi0gICAgIwotICAgIGRlZiBkb19zaG93X2V2ZW50X2hpc3Rvcnkoc2VsZiwgd29yZHMpOgotICAgICAgICBzZWxmLmRlYnVnX21zZygiZG8tc2hvdy1ldmVudC1oaXN0b3J5IHdvcmRzOiAlcyIgJSB3b3JkcykKLQotICAgICAgICAjIENoZWNrIHN5bnRheCBvZiB0aGUgY29tbWFuZAotICAgICAgICBzeW50YXggPSBzZWxmLnN5bnRheF9tc2coJ3Nob3cgZXZlbnQtaGlzdG9yeSA8bmFtZT4gWyBsYXN0IDxuPiBdJykKLSAgICAgICAgb3B0aW9ucyA9IFsnYXR0YWNobWVudC1wb2ludCcsIAotICAgICAgICAgICAgICAgICAgICdwYWNrZXQtaW4nLAotICAgICAgICAgICAgICAgICAgICd0b3BvbG9neS1saW5rJywKLSAgICAgICAgICAgICAgICAgICAndG9wb2xvZ3ktc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAndG9wb2xvZ3ktY2x1c3RlcicsCi0gICAgICAgICAgICAgICAgICAgIyBBZGQgbW9yZSBldmVudCBoaXN0b3J5IG9wdGlvbnMgYWJvdmUgdGhpcyBsaW5lCi0gICAgICAgICAgICAgICAgICAgIyBBZGQgdGhlIHNhbWUgaXRlbSBpbiBkb19jcF9ldmVudF9oaXN0b3J5KCkgYWJvdmUgYWxzbwotICAgICAgICAgICAgICAgICAgXQotICAgICAgICBpZiAod29yZHNbMF0gbm90IGluIG9wdGlvbnMpOgotICAgICAgICAgICAgeWllbGQoIkV2ZW50IGhpc3RvcnkgbmFtZSAlcyBub3QgZm91bmQiICUgd29yZHNbMF0pCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgKGxlbih3b3JkcykgPj0gMykgYW5kICh3b3Jkc1sxXSAhPSAnbGFzdCcpOgotICAgICAgICAgICAgeWllbGQoc3ludGF4KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIChsZW4od29yZHMpID09IDIpIG9yIChsZW4od29yZHMpID4gNCk6Ci0gICAgICAgICAgICB5aWVsZChzeW50YXgpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgKGxlbih3b3JkcykgPj0gMykgYW5kIChub3Qgd29yZHNbMl0uaXNkaWdpdCgpKToKLSAgICAgICAgICAgIHlpZWxkKHN5bnRheCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiAobGVuKHdvcmRzKSA+PSAzKSBhbmQgKHdvcmRzWzJdLmlzZGlnaXQoKSk6Ci0gICAgICAgICAgICBjb3VudCA9IGludCh3b3Jkc1syXSkKLSAgICAgICAgICAgIGlmIChjb3VudCA8IDEpIG9yIChjb3VudCA+IDEwMDAwKToKLSAgICAgICAgICAgICAgICB5aWVsZCgiTnVtYmVyIG9mIGV2ZW50cyBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAwMDAiKQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGxhc3Rfbl9jb3VudCA9IDEwMjQgIyBkZWZhdWx0Ci0gICAgICAgIGlmIChsZW4od29yZHMpID49IDMpOgotICAgICAgICAgICAgbGFzdF9uX2NvdW50ID0gd29yZHNbMl0KLSAgICAgICAgZXZfaGlzdF9uYW1lID0gd29yZHNbMF0KLSAgICAgICAgZXZfaGlzdF9maWVsZF9uYW1lID0gJ2V2LWhpc3QtJyArIGV2X2hpc3RfbmFtZQotICAgICAgICB1cmwgPSAnaHR0cDovLyVzL3Jlc3QvdjEvZXZlbnQtaGlzdG9yeS8lcy8lcycgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY29udHJvbGxlciwgZXZfaGlzdF9uYW1lLCBsYXN0X25fY291bnQpCi0gICAgICAgIGV2X2hpc3QgPSBzZWxmLnJlc3Rfc2ltcGxlX3JlcXVlc3RfdG9fZGljdCh1cmwpCi0gICAgICAgICNldl9oaXN0IC0ganNvbi5kdW1wcyhldl9oaXN0KQotICAgICAgICBldmVudHMgPSBldl9oaXN0WydldmVudHMnXQotICAgICAgICB0YWJsZURhdGEgPSBbXQotICAgICAgICBmb3IgZXYgaW4gZXZlbnRzOgotICAgICAgICAgICAgaW5mbyAgICAgID0gZXZbJ2luZm8nXQotICAgICAgICAgICAgYmFzZV9pbmZvID0gZXZbJ2Jhc2VfaW5mbyddCi0gICAgICAgICAgICBpbmZvLnVwZGF0ZShiYXNlX2luZm8pCi0gICAgICAgICAgICB0YWJsZURhdGEuYXBwZW5kKGluZm8pCi0gICAgICAgICMgUHJlcGFyZSB0aGUgZGF0ZSBmb3IgQ0xJIGRpc3BsYXkKLSAgICAgICAgdGFibGVEYXRhID0gc2VsZi5wcC5mb3JtYXRfdGFibGUodGFibGVEYXRhLCBldl9oaXN0X2ZpZWxkX25hbWUpCi0gICAgICAgIHlpZWxkKCJcbiIpCi0gICAgICAgIHlpZWxkKHRhYmxlRGF0YSkKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNwX3Nob3dfdm5zCi0gICAgIyAgQ29tbWFuZCBjb21wbGV0aW9uIGZvciB0aGUgZm9sbG93aW5nIGNvbW1hbmQKLSAgICAjICBVc2VkIGluICJzaG93IHZucyB7IDx2bnMtbmFtZT4gfCBhbGwgfSBmbG93IFsgYnJpZWYgfCBmdWxsLWRldGFpbCB8IGRldGFpbCB8IHN1bW1hcnkgXQotICAgICMKLSAgICBkZWYgY3Bfc2hvd192bnNfZmxvdyhzZWxmLCB3b3JkcywgdGV4dCwgY29tcGxldGlvbl9jaGFyKToKLSAgICAgICAgY21kMSA9ICdicmllZiAgICAgICAgc2hvdyBmbG93IGluZm9ybWF0aW9uIGluIGJyaWVmIGZvcm1hdCcKLSAgICAgICAgY21kMiA9ICdkZXRhaWwgICAgICAgc2hvdyBkZXRhaWxlZCBmbG93IGluZm9ybWF0aW9uJwotICAgICAgICBjbWQzID0gJ2Z1bGwtZGV0YWlsICBzaG93IGZ1bGwgZGV0YWlscyBvZiBmbG93IGluZm9ybWF0aW9uJwotICAgICAgICBjbWQ0ID0gJ3N1bW1hcnkgICAgICBzaG93IHN1bW1hcml6ZWQgZmxvdyBpbmZvcm1hdGlvbicKLQotICAgICAgICBzeW50YXggPSBzZWxmLnN5bnRheF9tc2coJ3Nob3cgdm5zIHs8dm5zLW5hbWU+IHwgYWxsfSBmbG93IFsgYnJpZWYgfCBkZXRhaWwgfCBmdWxsLWRldGFpbCB8IHN1bW1hcnkgXScpCi0gICAgICAgIGlmIChsZW4od29yZHMpID09IDMpIGFuZCB0ZXh0PT0nJzoKLSAgICAgICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKGNtZDErJ1xuJytjbWQyKydcbicrY21kMysnXG4nK2NtZDQpCi0gICAgICAgICAgICByZXR1cm4gWydicmllZicsICdkZXRhaWwnLCAnZnVsbC1kZXRhaWwnLCAnc3VtbWFyeScsICc8Y3I+JyBdCi0gICAgICAgIGVsaWYgKGxlbih3b3JkcykgPT0gMykgYW5kICgnZGV0YWlsJy5zdGFydHN3aXRoKHRleHQpKToKLSAgICAgICAgICAgIHJldHVybiBbJ2RldGFpbCddCi0gICAgICAgIGVsaWYgKGxlbih3b3JkcykgPT0gMykgYW5kICgnZnVsbC1kZXRhaWwnLnN0YXJ0c3dpdGgodGV4dCkpOgotICAgICAgICAgICAgcmV0dXJuIFsnZnVsbC1kZXRhaWwnXQotICAgICAgICBlbGlmIChsZW4od29yZHMpID09IDMpIGFuZCAoJ3N1bW1hcnknLnN0YXJ0c3dpdGgodGV4dCkpOgotICAgICAgICAgICAgcmV0dXJuIFsnc3VtbWFyeSddCi0gICAgICAgIGVsaWYgKGxlbih3b3JkcykgPT0gMykgYW5kICgnYnJpZWYnLnN0YXJ0c3dpdGgodGV4dCkpOgotICAgICAgICAgICAgcmV0dXJuIFsnYnJpZWYnXQotICAgICAgICBlbGlmIChsZW4od29yZHMpID09IDQpIGFuZCAod29yZHNbM10gbm90IGluIFsnYnJpZWYnLCAnZGV0YWlsJywgJ2Z1bGwtZGV0YWlsJywgJ3N1bW1hcnknXSk6Ci0gICAgICAgICAgICBzZWxmLnByaW50X2NvbXBsZXRpb25faGVscChzeW50YXgpCi0gICAgICAgIGVsaWYgKGxlbih3b3JkcykgPj0gMykgYW5kICh0ZXh0ICE9ICcnKToKLSAgICAgICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKHN5bnRheCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYucHJpbnRfY29tcGxldGlvbl9oZWxwKCc8Y3I+JykKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBzaG93X3Zuc19mbG93X2Fubm90YXRlZAotICAgICMKLSAgICAjIEZvciBhIGdpdmVuIHZucy1uYW1lLCBzaG93IGFsbCB0aGUgYWN0aXZlIGZsb3dzIGluIHRoYXQgdm5zIAotICAgICMgb3IKLSAgICAjIGZvciBzaG93IGFjdGl2ZS1mbG93cyBpbiBhbGwgdm5zZXMsIGNhdGVnb3JpemVkIGJ5IHZucwotICAgICMgVXNlZCBpbiAic2hvdyB2bnMgeyA8dm5zLW5hbWU+IHwgYWxsIH0gZmxvdyBbIGJyaWVmIHwgZnVsbC1kZXRhaWwgfCBkZXRhaWwgfCBzdW1tYXJ5IF0KLSAgICAjIGZsb3cgcmVjb3JkcyBhcmUgYW5ub3RhdGVkIGluIHRoZSBzZG5wbGF0Zm9ybSB3aXRoIHZucyBuYW1lCi0gICAgIwotICAgIGRlZiBzaG93X3Zuc19mbG93X2Fubm90YXRlZChzZWxmLCB3b3Jkcyk6Ci0KLSAgICAgICAgc3ludGF4ID0gc2VsZi5zeW50YXhfbXNnKCdzaG93IHZucyB7PHZucy1uYW1lPiB8IGFsbH0gZmxvdyBbIGJyaWVmIHwgZGV0YWlsIHwgZnVsbC1kZXRhaWwgfHN1bW1hcnkgXScpCi0gICAgICAgIGlmIChsZW4od29yZHMpID09IDMpIGFuZCAod29yZHNbMl0gbm90IGluIFsnYnJpZWYnLCAnZGV0YWlscycsICdmdWxsLWRldGFpbCcsICdzdW1tYXJ5J10pOgotICAgICAgICAgICAgcHJpbnQgc3ludGF4Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiAobGVuKHdvcmRzKSA+IDMpOgotICAgICAgICAgICAgcHJpbnQgc3ludGF4Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgCi0gICAgICAgICMgYWxsID0gRmFsc2UgaXMgdGhpcyB1c2VkIGFueXdoZXJlCi0gICAgICAgIAotICAgICAgICB2bnMgPSB3b3Jkc1swXQotICAgICAgICAKLSAgICAgICAgb3B0aW9uID0gJ25vbmUnCi0gICAgICAgIGlmIChsZW4od29yZHMpID09IDMpOgotICAgICAgICAgICAgb3B0aW9uID0gd29yZHNbMl0gICAgICAgIAotCi0gICAgICAgICMgR2V0IGFsbCB0aGUgZmxvd3MgaW4gdGhlIG5ldHdvcmsKLSAgICAgICAgYW5ub3RhdGVkX2Zsb3dfZGF0YSA9IHt9Ci0gICAgICAgIHVybCA9ICdodHRwOi8vJXMvcmVzdC92MS92bnMvcmVhbHRpbWVzdGF0cy9mbG93LyVzJyAlIChzZWxmLmNvbnRyb2xsZXIsIHZucykKLSAgICAgICAgYW5ub3RhdGVkX2Zsb3dfZGF0YSA9IHNlbGYucmVzdF9zaW1wbGVfcmVxdWVzdF90b19kaWN0KHVybCkKLSAgICAgICAgI3ByaW50ICJEYXRhPSVzIiAlIGpzb24uZHVtcHMoYW5ub3RhdGVkX2Zsb3dfZGF0YSwgc29ydF9rZXlzPVRydWUsIGluZGVudD00KQotICAgICAgICAjIGFubm90YXRlZF9mbG93X2RhdGEgcmVzcG9uc2UgaXMgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6Ci0gICAgICAgICMgRGF0YT17Ci0gICAgICAgICMgICAidm5zQ291bnQiOiAxLCAKLSAgICAgICAgIyAgICJ2bnNGbG93TWFwIjogewotICAgICAgICAjICAgICAgICAgICAgInR3byI6IHsKLSAgICAgICAgIyAgICAgICAgICAgICAgICAiZmxvd0NvdW50IjogMTAsIAotICAgICAgICAjICAgICAgICAgICAgICAgICJmbG93TGlzdCI6IFsKLSAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgImRwaWQiOiAiMDA6MDA6MDA6MDA6MDA6MDA6MDA6MGYiLCAKLSAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgImZsb3dFbnRyeSI6IHsKLSAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgImFjdGlvbnMiOiBbCi0gICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotCi0gICAgICAgICMgdm5zQ291bnQgPSBhbm5vdGF0ZWRfZmxvd19kYXRhWyJ2bnNDb3VudCJdCi0gICAgICAgIHZuc0Zsb3dNYXAgPSBhbm5vdGF0ZWRfZmxvd19kYXRhWyJ2bnNGbG93TWFwIl0KLSAgICAgICAgdm5zQWRkcmVzc1NwYWNlTWFwID0gYW5ub3RhdGVkX2Zsb3dfZGF0YVsidm5zQWRkcmVzc1NwYWNlTWFwIl0KLSAgICAgICAgCi0gICAgICAgIGlmIChvcHRpb24gPT0gImJyaWVmIik6Ci0gICAgICAgICAgICB0YWJsZV9maWVsZF9vcmRlcmluZyA9ICJ2bnNfZmxvdyIKLSAgICAgICAgZWxpZiAob3B0aW9uID09ICJkZXRhaWwiKToKLSAgICAgICAgICAgIHRhYmxlX2ZpZWxkX29yZGVyaW5nID0gImRldGFpbHMiCi0gICAgICAgIGVsaWYgKG9wdGlvbiA9PSAiZnVsbC1kZXRhaWwiKToKLSAgICAgICAgICAgIHRhYmxlX2ZpZWxkX29yZGVyaW5nID0gInVuZGVmaW5lZCIgIyBwcmludHMgZXZlcnl0aGluZyEKLSAgICAgICAgZWxpZiAob3B0aW9uID09ICJzdW1tYXJ5Iik6Ci0gICAgICAgICAgICB0YWJsZV9maWVsZF9vcmRlcmluZyA9ICJzdW1tYXJ5IiAgICAgICAgICAgIAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGFibGVfZmllbGRfb3JkZXJpbmcgPSAiZGVmYXVsdCIgICAgICAgIAotICAgICAgICAKLSAgICAgICAgc3VtbWFyeVRhYmxlID0gW10gIyB1c2VkIGZvciBob2xkaW5nIHRoZSBkYXRhIGZvciAic3VtbWFyeSIgb3B0aW9uCi0gICAgICAgIGZvciB2bnNOYW1lIGluIHZuc0Zsb3dNYXA6Ci0gICAgICAgICAgICBpZiAob3B0aW9uID09ICdicmllZicpIG9yIChvcHRpb24gPT0gInN1bW1hcnkiKToKLSAgICAgICAgICAgICAgICBmbG93X3R1cGxlX2xpc3QgPSBbXQotICAgICAgICAgICAgICAgIGJyaWVmRmxvd0NudCA9IDAKLSAgICAgICAgICAgICMgVGFibGUgRGF0YSB3aWxsIGhvbGQgYWxsIHRoZSBmbG93IGVudHJpZXMsIG9uZSBsaXN0IGVsZW1lbnQgcGVyIHJvdyBvZiBvdXRwdXQKLSAgICAgICAgICAgICMgSXQgaXMgcmVpbml0aWxpemVkIGZvciBlYWNoIFZOUyAgIAotICAgICAgICAgICAgdGFibGVEYXRhICA9IFtdCi0gICAgICAgICAgICB2bnNGbG93Q250ID0gdm5zRmxvd01hcFt2bnNOYW1lXVsiZmxvd0NvdW50Il0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgdm5zRmxvd0xpc3QgPSB2bnNGbG93TWFwW3Zuc05hbWVdWyJmbG93TGlzdCJdCi0gICAgICAgICAgICBmb3Igdm5zRmxvd0VudHJ5IGluIHZuc0Zsb3dMaXN0OiAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBmbG93RW50cnkgPSB2bnNGbG93RW50cnlbImZsb3dFbnRyeSJdCi0gICAgICAgICAgICAgICAgZHBpZCAgICAgID0gdm5zRmxvd0VudHJ5WyJkcGlkIl0KLSAgICAgICAgICAgICAgICBpZiAob3B0aW9uID09ICJicmllZiIpIG9yIChvcHRpb24gPT0gInN1bW1hcnkiKTogICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBzcmNfbWFjICAgPSBmbG93RW50cnlbJ21hdGNoJ11bJ2RhdGFMYXllckRlc3RpbmF0aW9uJ10KLSAgICAgICAgICAgICAgICAgICAgZHN0X21hYyAgID0gZmxvd0VudHJ5WydtYXRjaCddWydkYXRhTGF5ZXJTb3VyY2UnXQotICAgICAgICAgICAgICAgICAgICB2bGFuICAgICAgPSBmbG93RW50cnlbJ21hdGNoJ11bJ2RhdGFMYXllclZpcnR1YWxMYW4nXQotICAgICAgICAgICAgICAgICAgICBldGhlclR5cGUgPSBmbG93RW50cnlbJ21hdGNoJ11bJ2RhdGFMYXllclR5cGUnXQotICAgICAgICAgICAgICAgICAgICBmbG93TGlzdCAgPSBbXQotICAgICAgICAgICAgICAgICAgICBmbG93TGlzdC5hcHBlbmQoc3JjX21hYykKLSAgICAgICAgICAgICAgICAgICAgZmxvd0xpc3QuYXBwZW5kKGRzdF9tYWMpCi0gICAgICAgICAgICAgICAgICAgIGZsb3dMaXN0LmFwcGVuZCh2bGFuKQotICAgICAgICAgICAgICAgICAgICBmbG93TGlzdC5hcHBlbmQoZXRoZXJUeXBlKQotICAgICAgICAgICAgICAgICAgICBpZiBmbG93TGlzdCBpbiBmbG93X3R1cGxlX2xpc3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGR1cGxpY2F0ZSBmbG93IChkdWUgdG8gc2FtZSBmbG93IGVudHJ5IG9uIG11bHRpcGxlIHN3aXRjaGVzIGFsb25nIHRoZSBwYXRoLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICMgc2tpcCBpdCBpZiB0aGUgb3B0aW9uIGlmIGJyaWVmIG9yIHN1bW1hcnkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbG93X3R1cGxlX2xpc3QuYXBwZW5kKGZsb3dMaXN0KQotICAgICAgICAgICAgICAgICAgICAgICAgYnJpZWZGbG93Q250ICs9IDEKLSAgICAgICAgICAgICAgICAjcHJpbnQgIkRQSUQgPSAlcyIgJSBkcGlkCi0gICAgICAgICAgICAgICAgI3ByaW50ICIgTmV3IERhdGEgPSAlcyIgJSBqc29uLmR1bXBzKGZsb3dFbnRyeSwgaW5kZW50PTQpCi0gICAgICAgICAgICAgICAgaWYgKG9wdGlvbiAhPSAic3VtbWFyeSIpOgotICAgICAgICAgICAgICAgICAgICB0YWJsZUVudHJ5ID0ge30KLSAgICAgICAgICAgICAgICAgICAgdGFibGVFbnRyeVtkcGlkXSA9IFtdCi0gICAgICAgICAgICAgICAgICAgIHRhYmxlRW50cnlbZHBpZF0uYXBwZW5kKGZsb3dFbnRyeSkKLSAgICAgICAgICAgICAgICAgICAgdGFibGVFbnRyeSA9IHNlbGYuYWRkX2RwaWRfdG9fZGF0YSh0YWJsZUVudHJ5KQotICAgICAgICAgICAgICAgICAgICB0YWJsZUVudHJ5ID0gc2VsZi5maXhfcmVhbHRpbWVfZmxvd3ModGFibGVFbnRyeSkKLSAgICAgICAgICAgICAgICAgICAgI3ByaW50ICJUYWJsZSBFbnRyeSA6ICVzIiAlIGpzb24uZHVtcHModGFibGVFbnRyeSwgaW5kZW50PTQpCi0gICAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YS5hcHBlbmQodGFibGVFbnRyeVswXSkKLSAgICAgICAgICAgICNwcmludCAiKioqIFRhYmxlIERhdGE6ICVzIiAlIGpzb24uZHVtcHModGFibGVEYXRhWzBdLCBpbmRlbnQ9NCkKLSAgICAgICAgICAgICNwcmludGYgdGVuYW50ICsgdm5zbmFtZQotICAgICAgICAgICAgbmFtZXM9dm5zTmFtZS5zcGxpdCgnfCcpCi0gICAgICAgICAgICB0ZW5hbnQ9bmFtZXNbMF0KLSAgICAgICAgICAgIHZucz1uYW1lc1sxXQotICAgICAgICAgICAgaWYgKG9wdGlvbiA9PSAiYnJpZWYiKToKLSAgICAgICAgICAgICAgICB5aWVsZCgiXG5UZW5hbnQgJXMgVk5TICVzIChhZGRyZXNzLXNwYWNlICVzKSBmbG93cyAoY291bnQ6ICVzKSIgJSAodGVuYW50LCB2bnMsIHZuc0FkZHJlc3NTcGFjZU1hcFt2bnNOYW1lXSwgYnJpZWZGbG93Q250KSkKLSAgICAgICAgICAgIGVsaWYgKG9wdGlvbiAhPSAic3VtbWFyeSIpOgotICAgICAgICAgICAgICAgIHlpZWxkKCJcblRlbmFudCAlcyBWTlMgJXMgKGFkZHJlc3Mtc3BhY2UgJXMpIGZsb3cgZW50cmllcyAoY291bnQ6ICVzKSIgJSAodGVuYW50LCB2bnMsIHZuc0FkZHJlc3NTcGFjZU1hcFt2bnNOYW1lXSwgdm5zRmxvd0NudCkpCi0gICAgICAgICAgICAjIFByaW50IGZsb3cgZGF0YSBmb3Igb25lIHZucywgdW5sZXNzIG9wdGlvbiBpcyBzdW1tYXJ5Ci0gICAgICAgICAgICBpZiAob3B0aW9uID09ICJzdW1tYXJ5Iik6Ci0gICAgICAgICAgICAgICAgc3VtbWFyeURhdGEgPSBkaWN0KCkKLSMgICAgICAgICAgICAgICAgc3VtbWFyeURhdGFbJ3RlbmFudCddICAgICAgID10ZW5hbnQKLSAgICAgICAgICAgICAgICBzdW1tYXJ5RGF0YVsidm5zTmFtZSJdICAgICAgPSB2bnMKLSAgICAgICAgICAgICAgICBzdW1tYXJ5RGF0YVsiZmxvd0VudHJ5Q250Il0gPSB2bnNGbG93Q250Ci0gICAgICAgICAgICAgICAgc3VtbWFyeURhdGFbInZuc0Zsb3dDbnQiXSAgID0gYnJpZWZGbG93Q250Ci0gICAgICAgICAgICAgICAgc3VtbWFyeVRhYmxlLmFwcGVuZChzdW1tYXJ5RGF0YSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgeWllbGQoIlxuIikgCi0gICAgICAgICAgICAgICAgIyBwcmludCAiKioqIFREID0gJXMiICUgdGFibGVEYXRhCi0gICAgICAgICAgICAgICAgdGFibGVEYXRhID0gc2VsZi5wcC5mb3JtYXRfdGFibGUodGFibGVEYXRhLCAicmVhbHRpbWVfZmxvdyIsIHRhYmxlX2ZpZWxkX29yZGVyaW5nKQotICAgICAgICAgICAgICAgIHlpZWxkKHRhYmxlRGF0YSkKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgaWYgKG9wdGlvbiA9PSAic3VtbWFyeSIpOiAgICAgICAgICAgIAotICAgICAgICAgICAgIyBwcmludCAiKioqIFNUICVzIiAlIHN1bW1hcnlUYWJsZQotICAgICAgICAgICAgeWllbGQoIlxuIikKLSAgICAgICAgICAgIHN1bW1hcnlUYWJsZSA9IHNlbGYucHAuZm9ybWF0X3RhYmxlKHN1bW1hcnlUYWJsZSwgInJlYWx0aW1lX2Zsb3ciLCB0YWJsZV9maWVsZF9vcmRlcmluZykgICAgICAgICAgICAKLSAgICAgICAgICAgIHlpZWxkKHN1bW1hcnlUYWJsZSkKLSAgICAgICAgcHJpbnQoIiAiKSAKLSAgICAgICAgcmV0dXJuCi0gIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBzaG93X3Zuc19zd2l0Y2hfcG9ydHMKLSAgICAjICBGb3Igc29tZSB2bnMtbmFtZSwgY29sbGVjdCBhbGwgdGhlIGludGVyZmFjZXMsIGFuZCBmcm9tIHRoYXQsCi0gICAgIyAgY29sbGVjdCBhbGwgdGhlIGF0dGFjaG1lbnQgcG9pbnRzLiAgVGhlIG9iamVjdGl2ZSBoZXJlIGlzIHRvCi0gICAgIyAgbmFtZSBhbGwgdGhlIHN3aXRjaCdzIGFuZCBwb3J0cyBhc3NvY2lhdGVkIHdpdGggYSB2bnMKLSAgICAjCi0gICAgZGVmIHNob3dfdm5zX3N3aXRjaF9wb3J0cyhzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIGlmIGxlbih3b3JkcykgPCAxOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyB3b3JkczogIFsgdm5zX25hbWUsICdzd2l0Y2gnLCBzd2l0Y2hfbmFtZSBdCi0gICAgICAgIHZuc19uYW1lID0gd29yZHNbMF0KLSAgICAgICAgc3dpdGNoID0gTm9uZQotICAgICAgICBpZiBsZW4od29yZHMpID4gMjoKLSAgICAgICAgICAgIHN3aXRjaCA9IGNvbnZlcnRfYWxpYXNfdG9fb2JqZWN0X2tleSgnc3dpdGNoJywgd29yZHNbMl0pCi0gICAgICAgIHBvcnQgPSBOb25lCi0gICAgICAgIGlmIGxlbih3b3JkcykgPiAzOgotICAgICAgICAgICAgcG9ydCA9IHdvcmRzWzNdCi0KLSAgICAgICAgdm5zX2ludGVyZmFjZV9rZXkgPSBtaS5waygndm5zLWludGVyZmFjZScpCi0gICAgICAgIGlmIHZuc19uYW1lID09ICdhbGwnOgotICAgICAgICAgICAgdm5zX2lmcyA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KCd2bnMtaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bnNfaW50ZXJmYWNlX2tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnKQotICAgICAgICAgICAgdm5zX3J1bGVzID0gY3JlYXRlX29ial90eXBlX2RpY3QoJ3Zucy1pbnRlcmZhY2UtcnVsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaS5waygndm5zLWludGVyZmFjZS1ydWxlJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnLCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZuc19pZnMgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgndm5zLWludGVyZmFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5zX2ludGVyZmFjZV9rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5zX25hbWUpCi0gICAgICAgICAgICB2bnNfcnVsZXMgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgndm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pLnBrKCd2bnMtaW50ZXJmYWNlLXJ1bGUnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5zX25hbWUpCi0gICAgICAgIGhvc3RfZGFwX2RpY3QgPSBzZWxmLmNyZWF0ZV9hdHRhY2htZW50X2RpY3QoKQotCi0gICAgICAgIGJzcCA9IHt9ICAjIF9iX3ZzIF9zX3dpdGNoIF9wX29ydAotICAgICAgICBmb3IgaWZzIGluIHZuc19pZnM6Ci0gICAgICAgICAgICBmaWVsZHMgPSBpZnMuc3BsaXQoJ3wnKQotICAgICAgICAgICAgIyBhbGwgdGhlc2UgZmllbGRzIG11c3QgaGF2ZSB0d28gcGFydHMuCi0gICAgICAgICAgICBpZiBsZW4oZmllbGRzKSAhPSAzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAjIGNob29zZSBiZXR3ZWVuIHN3aXRjaCBiYXNlZCBydWxlcyBhbmQgbWFjL2lwIGJhc2VkIHJ1bGVzCi0gICAgICAgICAgICBydWxlID0gJ2RlZmF1bHQnCi0gICAgICAgICAgICB2bnNfbmFtZSA9IHZuc19pZnNbaWZzXVswXVsndm5zJ10KLSAgICAgICAgICAgIHN3aXRjaF9ydWxlID0gTm9uZQotICAgICAgICAgICAgaWYgZmllbGRzWzFdICE9ICdkZWZhdWx0JzoKLSAgICAgICAgICAgICAgICBydWxlID0gdm5zX2lmc1tpZnNdWzBdWydydWxlJ10KLSAgICAgICAgICAgICAgICBpZiBub3QgcnVsZSBpbiB2bnNfcnVsZXM6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWZfcnVsZSA9IHZuc19ydWxlc1tydWxlXVswXQotICAgICAgICAgICAgICAgIGlmICdzd2l0Y2gnIGluIGlmX3J1bGU6Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaF9ydWxlID0gaWZfcnVsZVsnc3dpdGNoJ10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWZfcnVsZSA9IHsgJ21hYycgOiAnZGVmYXVsdExpZScgfSAjIGZvciBkZWZhdWx0IHJ1bGVzCi0KLSAgICAgICAgICAgICMgVGhlcmUncyB0d28gbWFqb3IgY2xhc3NlcyBvZiBydWxlczogaG9zdCBhbmQgc3dpdGNoCi0gICAgICAgICAgICAjIFVzZSBleGlzdGFuY2Ugb2YgYSAnc3dpdGNoJyB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIHR3by4KLSAgICAgICAgICAgIGlmIHN3aXRjaF9ydWxlOgotICAgICAgICAgICAgICAgICMgaWZfcnVsZS9zd2l0Y2ggYXJlIGJvdGggc2V0LCBwYXJ0IGFmdGVyIHRoZSAnLycgaXMgdGhlIHBvcnQKLSAgICAgICAgICAgICAgICBpZiBmaWVsZHNbMl0uZmluZCgnLycpIDwgMDoKLSAgICAgICAgICAgICAgICAgICAgIyBza2lwIEV0aDxuPiBnZW5lcmFsIGludGVyZmFjZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFByZWZpeCB0aGlzIHBvcnQgd2l0aCBhIHBsdXMgc2lnbiwgd2hpY2ggd2lsbCBiZSByZWNvZ25pemVkCi0gICAgICAgICAgICAgICAgIyBpbiB0aGUgcHJpbnRpbmcgY29kZSBhcyBhbHJlYWR5IGRlc2NyaWJpbmcgYW4gb3BlbmZsb3cgcG9ydCBuYW1lCi0gICAgICAgICAgICAgICAgcG9ydCA9ICcrJyArIGZpZWxkc1syXS5zcGxpdCgnLycpWzFdCi0gICAgICAgICAgICAgICAgdGVuYW50X3Zucz12bnNfbmFtZS5zcGxpdCgnfCcpCi0gICAgICAgICAgICAgICAgdGVuYW50X25hbWU9dGVuYW50X3Zuc1swXQotICAgICAgICAgICAgICAgIHZuc19yZWFsX25hbWU9dGVuYW50X3Zuc1sxXSAKLSAgICAgICAgICAgICAgICBrZXkgPSAiJXN8JXN8JXN8JXMiICUgKHRlbmFudF9uYW1lLHZuc19yZWFsX25hbWUsIHN3aXRjaCwgcG9ydCkKLQotICAgICAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gYnNwOgotICAgICAgICAgICAgICAgICAgICBic3Bba2V5XSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVuYW50JyAgICAgIDogdGVuYW50X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZucycgICAgICAgICA6IHZuc19yZWFsX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcgICAgICA6IHN3aXRjaF9ydWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3J0JyAgICAgICAgOiBwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFzb24nICAgICAgOiBbIlJ1bGU6JXMiICUgcnVsZS5zcGxpdCgnfCcpWy0xXSwgZmllbGRzWzFdXSwKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MgIyBzaG91bGQgb25seSBiZSBvbmUuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgdGhlIHNlY29uZCBwYXJ0IChmaWVsZHNbMV0pIGlzIHRoZSBpbnRlcmZhY2UtbG9uZyBuYW1lLAotICAgICAgICAgICAgICAgIGl0ZW1zID0gZmllbGRzWzJdLnNwbGl0KCcvJykKLSAgICAgICAgICAgICAgICBpZiBsZW4oaXRlbXMpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGl0ZW1zWzBdLnN0YXJ0c3dpdGgoJ1ZFdGgnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAnbWFjJyBpbiBydWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBtYWMgPSBpZl9ydWxlWydtYWMnXQotICAgICAgICAgICAgICAgICAgICBlbGlmIGl0ZW1zWzBdLnN0YXJ0c3dpdGgoJ0V0aCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19tc2coJ3Nob3VsZCBoYXZlIGJlZW4gYSBzd2l0Y2ggaW4gaWZfcnVsZScpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19tc2coJ2l0ZW0gbGVuZ3RoIG9mIDEnKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBtYWMgPSBpdGVtc1sxXQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmUubWF0Y2gocideKChbQS1GYS1mXGRdKXsyfTo/KXs1fVtBLUZhLWZcZF17Mn0kJywgbWFjKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdOb3QgYSBtYWMgYWRkcmVzczogJXMnICUgbWFjCi0gICAgICAgICAgICAgICAgIyBjdXJyZW50bHkganVzdCB1c2UgdGhlIG1hYyB0byBmaW5kIHRoZSBhdHRhY2htZW50IHBvaW50cy4KLSAgICAgICAgICAgICAgICBpZiBtYWMgaW4gaG9zdF9kYXBfZGljdDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGF0dGFjaG1lbnRfcG9pbnQgaW4gaG9zdF9kYXBfZGljdFttYWNdOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBzd2l0Y2ggaXMgbmFtZWQsIHNraXAgYW55IHdoaWNoIGRvbid0IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzd2l0Y2ggYW5kIGF0dGFjaG1lbnRfcG9pbnRbJ3N3aXRjaCddICE9IHN3aXRjaDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcG9ydCBhbmQgYXR0YWNobWVudF9wb2ludFsnaW5ncmVzcy1wb3J0J10gIT0gcG9ydDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZW5hbnRfdm5zPXZuc19uYW1lLnNwbGl0KCd8JykKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlbmFudF9uYW1lPXRlbmFudF92bnNbMF0KLSAgICAgICAgICAgICAgICAgICAgICAgIHZuc19yZWFsX25hbWU9dGVuYW50X3Zuc1sxXSAKLSAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9ICIlc3wlc3wlc3wlcyIgJSAodGVuYW50X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZuc19yZWFsX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRfcG9pbnRbJ3N3aXRjaCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50X3BvaW50WydpbmdyZXNzLXBvcnQnXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gYnNwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJzcFtrZXldID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbmFudCcgOiB0ZW5hbnRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bnMnICAgIDogdm5zX3JlYWxfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzd2l0Y2gnIDogYXR0YWNobWVudF9wb2ludFsnc3dpdGNoJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9ydCcgICA6IHV0aWYudHJ5X2ludChhdHRhY2htZW50X3BvaW50WydpbmdyZXNzLXBvcnQnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVhc29uJyA6IFsiUnVsZTolcyIgJSBydWxlLnNwbGl0KCd8JylbLTFdLCBtYWNdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kX3doZW5fbWlzc2luZyhic3Bba2V5XVsncmVhc29uJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJ1bGU6JXMiICUgcnVsZS5zcGxpdCgnfCcpWy0xXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZF93aGVuX21pc3NpbmcoYnNwW2tleV1bJ3JlYXNvbiddLCBtYWMpCi0KLSAgICAgICAgc29ydCA9IFtic3BbeF0gZm9yIHggaW4gc29ydGVkKGJzcC5rZXlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXA9bGFtYmRhIGEsYjogY21wKHV0aWYudHJ5X2ludChhLnNwbGl0KCd8JylbMl0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlmLnRyeV9pbnQoYi5zcGxpdCgnfCcpWzJdKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhLnNwbGl0KCd8JylbMV0gPT0gYi5zcGxpdCgnfCcpWzFdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjbXAoYi5zcGxpdCgnfCcpWzFdLGEuc3BsaXQoJ3wnKVsxXSkpXQotCi0gICAgICAgIHJldHVybiBzZWxmLmRpc3BsYXlfb2JqX3R5cGVfcm93cygndm5zLXN3aXRjaC1wb3J0cycsIHNvcnQpCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBzaG93X3N3aXRjaF9wb3J0c192bnMKLSAgICAjCi0gICAgZGVmIHNob3dfc3dpdGNoX3BvcnRzX3ZucyhzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIHN3aXRjaCA9IE5vbmUKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA+IDEgYW5kIHdvcmRzWzBdICE9ICdhbGwnOgotICAgICAgICAgICAgc3dpdGNoID0gd29yZHNbMF0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgc3dpdGNoIGFsaWFzIGNvbnZlcnNpb24KLSAgICAgICAgICAgIHZhbHVlID0gYWxpYXNfbG9va3VwKCdzd2l0Y2gtYWxpYXMnLCBzd2l0Y2gpCi0gICAgICAgICAgICBpZiB2YWx1ZToKLSAgICAgICAgICAgICAgICBzd2l0Y2ggPSB2YWx1ZQotCi0gICAgICAgICMKLSAgICAgICAgIyBkaWN0aW9uYXJ5IGZyb20gdGhlIHZucyBzaWRlLCBpbmRleGVkIGJ5IGhvc3QuCi0gICAgICAgIHZuc19pZnNfZGljdCA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KCd2bnMtaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWkucGsoJ3Zucy1pbnRlcmZhY2UnKSkKLSAgICAgICAgIwotICAgICAgICAjIGRpY3Rpb25hcnkgb2YgdGhlIGludGVyZmFjZS1ydWxlcywgYnkgcnVsZQotICAgICAgICB2bnNfcnVsZXMgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgndm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWkucGsoJ3Zucy1pbnRlcmZhY2UtcnVsZScpKQotICAgICAgICAjCi0gICAgICAgICMgZnJvbSB0aGUgbGlzdCBvZiBob3N0cywgaWRlbnRpZnkgdGhlIGF0dGFjaG1lbnQgcG9pbnRzCi0gICAgICAgIGhvc3RfZGFwX2RpY3QgPSBzZWxmLmNyZWF0ZV9hdHRhY2htZW50X2RpY3QoKQotCi0gICAgICAgICMKLSAgICAgICAgIyB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgYXR0YWNobWVudCBwb2ludHMgZm9yIGVhY2ggb2YgdGhlCi0gICAgICAgICMgaG9zdHMuICBpdGVyYXRlIG92ZXIgdGhlIGhvc3RzLCAgZmluZCBhbGwgdGhlIGF0dGFjaG1lbnQgcG9pbnRzLAotICAgICAgICAjIG1hbmFnZSBhbiBhc3NvY2lhdGlvbiBmb3IgdGhlIGVudHJpZXMKLSAgICAgICAgc3BiID0ge30gICMgX3Nfd2l0Y2ggX3Bfb3J0IF9iX3ZzCi0gICAgICAgIGZvciBpZnMgaW4gdm5zX2lmc19kaWN0OgotICAgICAgICAgICAgZmllbGRzID0gdm5zX2lmc19kaWN0W2lmc11bMF1bJ2lkJ10uc3BsaXQoJ3wnKQotICAgICAgICAgICAgIyBhbGwgdGhlc2UgZmllbGRzIG11c3QgaGF2ZSB0d28gcGFydHMuCi0gICAgICAgICAgICBpZiBsZW4oZmllbGRzKSAhPSAyOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAjIGlkIHBhcnRzIGFyZSB2bnN8aW50ZXJmYWNlCi0gICAgICAgICAgICB2bnNfbmFtZSA9IGZpZWxkc1swXQotCi0gICAgICAgICAgICAjIGNob29zZSBiZXR3ZWVuIHN3aXRjaCBiYXNlZCBydWxlcyBhbmQgbWFjL2lwIGJhc2VkIHJ1bGVzCi0gICAgICAgICAgICBydWxlID0gJ2RlZmF1bHQnCi0KLSAgICAgICAgICAgIHN3aXRjaF9ydWxlID0gTm9uZQotICAgICAgICAgICAgbWFjX3J1bGUgPSBOb25lCi0gICAgICAgICAgICBydWxlX2ZpZWxkcyA9IFtydWxlXQotICAgICAgICAgICAgaWYgdm5zX25hbWUgPT0gJ2RlZmF1bHQnOgotICAgICAgICAgICAgICAgIGlmIGZpZWxkc1sxXS5maW5kKCcvJykgPj0gMDoKLSAgICAgICAgICAgICAgICAgICAgbWFjX3J1bGUgPSBmaWVsZHNbMV0uc3BsaXQoJy8nKVsxXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBub3QgJ3J1bGUnIGluIHZuc19pZnNfZGljdFtpZnNdWzBdOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHJ1bGUgPSB2bnNfaWZzX2RpY3RbaWZzXVswXVsncnVsZSddCi0gICAgICAgICAgICAgICAgcnVsZV9maWVsZHMgPSBydWxlLnNwbGl0KCd8JykKLSAgICAgICAgICAgICAgICBpZl9ydWxlID0gdm5zX3J1bGVzW3J1bGVdWzBdCi0gICAgICAgICAgICAgICAgaWYgJ3N3aXRjaCcgaW4gaWZfcnVsZToKLSAgICAgICAgICAgICAgICAgICAgaWYgc3dpdGNoIGFuZCBpZl9ydWxlWydzd2l0Y2gnXSAhPSBzd2l0Y2g6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBzd2l0Y2hfcnVsZSA9IGlmX3J1bGVbJ3N3aXRjaCddICMgc3dpdGNoIG1heSBiZSBOb25lLgotICAgICAgICAgICAgICAgIGVsaWYgJ21hYycgaW4gaWZfcnVsZToKLSAgICAgICAgICAgICAgICAgICAgbWFjX3J1bGUgPSBpZl9ydWxlWydtYWMnXQotICAgICAgICAgICAgICAgIGVsaWYgJ2lwLXN1Ym5ldCcgaW4gaWZfcnVsZToKLSAgICAgICAgICAgICAgICAgICAgbWFjX3J1bGUgPSBpZl9ydWxlWydpcC1zdWJuZXQnXQotICAgICAgICAgICAgICAgIGVsaWYgJ3RhZ3MnIGluIGlmX3J1bGU6Ci0gICAgICAgICAgICAgICAgICAgIG1hY19ydWxlID0gaWZfcnVsZVsndGFncyddCi0gICAgICAgICAgICAgICAgZWxpZiAndmxhbnMnIGluIGlmX3J1bGU6Ci0gICAgICAgICAgICAgICAgICAgIG1hY19ydWxlID0gaWZfcnVsZVsndmxhbnMnXQotICAgICAgICAgICAgaWYgbWFjX3J1bGU6Ci0gICAgICAgICAgICAgICAgaWYgbm90IG1hY19ydWxlIGluIGhvc3RfZGFwX2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZGVidWdfbXNnKCJVbmtub3duIGF0dGFjaG1lbnQgcG9pbnQgZm9yICVzIiAlIG1hY19ydWxlKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgZm9yIGF0dGFjaG1lbnRfcG9pbnQgaW4gaG9zdF9kYXBfZGljdFttYWNfcnVsZV06Ci0gICAgICAgICAgICAgICAgICAgIGtleSA9ICIlc3wlcyIgJSAoYXR0YWNobWVudF9wb2ludFsnc3dpdGNoJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRfcG9pbnRbJ2luZ3Jlc3MtcG9ydCddKQotICAgICAgICAgICAgICAgICAgICBpZiBzd2l0Y2ggYW5kIGF0dGFjaG1lbnRfcG9pbnRbJ3N3aXRjaCddICE9IHN3aXRjaDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGtleSBpbiBzcGI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcGJba2V5XSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcgOiBhdHRhY2htZW50X3BvaW50Wydzd2l0Y2gnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcnQnICAgOiB1dGlmLnRyeV9pbnQoYXR0YWNobWVudF9wb2ludFsnaW5ncmVzcy1wb3J0J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndm5zJyAgICA6IHt2bnNfbmFtZSA6IDF9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVhc29uJyA6IFsiUnVsZTolcyIgJSBydWxlX2ZpZWxkc1stMV0sIG1hY19ydWxlXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiB2bnNfbmFtZSBpbiBzcGJba2V5XVsndm5zJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BiW2tleV1bJ3ZucyddW3Zuc19uYW1lXSArPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYltrZXldWyd2bnMnXVt2bnNfbmFtZV0gPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZF93aGVuX21pc3Npbmcoc3BiW2tleV1bJ3JlYXNvbiddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlOiVzIiAlIHJ1bGVfZmllbGRzWy0xXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kX3doZW5fbWlzc2luZyhzcGJba2V5XVsncmVhc29uJ10sIG1hY19ydWxlKQotICAgICAgICAgICAgaWYgc3dpdGNoX3J1bGU6Ci0gICAgICAgICAgICAgICAgaWYgZmllbGRzWzFdLmZpbmQoJy8nKSA+PSAwOgotICAgICAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgICAgICMgUHJlZml4IHRoaXMgcG9ydCB3aXRoIGEgcGx1cyBzaWduLCB3aGljaCB3aWxsIGJlIHJlY29nbml6ZWQKLSAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgcHJpbnRpbmcgY29kZSBhcyBhbHJlYWR5IGRlc2NyaWJpbmcgYW4gb3BlbmZsb3cgcG9ydCBuYW1lCi0gICAgICAgICAgICAgICAgICAgIHBvcnQgPSAnKycgKyBmaWVsZHNbMV0uc3BsaXQoJy8nKVsxXQotICAgICAgICAgICAgICAgICAgICBrZXkgPSAiJXN8JXMiICUgKHN3aXRjaF9ydWxlLCBwb3J0KQotCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gc3BiOgotICAgICAgICAgICAgICAgICAgICAgICAgc3BiW2tleV0gPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzd2l0Y2gnIDogc3dpdGNoX3J1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3J0JyAgIDogcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZucycgICAgOiB7dm5zX25hbWUgOiAxfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYXNvbicgOiBbIlJ1bGU6JXMiICUgcnVsZV9maWVsZHNbLTFdLCBmaWVsZHNbMV1dCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgc29ydCA9IFtzcGJbeF0gZm9yIHggaW4gc29ydGVkKHNwYi5rZXlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wPWxhbWJkYSBhLGI6IGNtcCh1dGlmLnRyeV9pbnQoYS5zcGxpdCgnfCcpWzFdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWYudHJ5X2ludChiLnNwbGl0KCd8JylbMV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhLnNwbGl0KCd8JylbMF0gPT0gYi5zcGxpdCgnfCcpWzBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgY21wKGIuc3BsaXQoJ3wnKVswXSxhLnNwbGl0KCd8JylbMF0pKV0KLQotICAgICAgICByZXR1cm4gc2VsZi5kaXNwbGF5X29ial90eXBlX3Jvd3MoJ3N3aXRjaC1wb3J0cy12bnMnLCBzb3J0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBbc3BiW3hdIGZvciB4IGluIHNvcnRlZChzcGIua2V5cygpKV0pCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZG9fc2hvd192bnMKLSAgICAjCi0gICAgZGVmIGRvX3Nob3dfdm5zKHNlbGYsIHdvcmRzKToKLSAgICAgICAgY2hvaWNlcyA9IFsnaW50ZXJmYWNlJywgJ21hYy1hZGRyZXNzLXRhYmxlJywKLSAgICAgICAgICAgICAgICAgICAnaW50ZXJmYWNlLXJ1bGVzJywgJ2FjY2Vzcy1saXN0cycsICdydW5uaW5nLWNvbmZpZycsICdzd2l0Y2gnLCAnZmxvdycgXQotICAgICAgICBpZiB3b3JkcyA9PSBOb25lIG9yIGxlbih3b3JkcykgPiAyOgotICAgICAgICAgICAgaWYgd29yZHNbMV0gbm90IGluIFsnc3dpdGNoJywgJ2Zsb3cnXToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zeW50YXhfbXNnKCdzaG93IHZucyA8dm5zLW5hbWU+IFsgJXMgXSAnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgfCAnLmpvaW4oY2hvaWNlcykpCi0gICAgICAgIGlmIGxlbih3b3JkcykgaW4gWzMsIDRdOgotICAgICAgICAgICAgaWYgd29yZHNbMV0gPT0gJ3N3aXRjaCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2hvd192bnNfc3dpdGNoX3BvcnRzKHdvcmRzKQotICAgICAgICAgICAgZWxpZiB3b3Jkc1sxXSA9PSAnZmxvdyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2hvd192bnNfZmxvd19hbm5vdGF0ZWQod29yZHMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnN5bnRheF9tc2coJ3Nob3cgdm5zIDx2bnMtbmFtZT4gWyAlcyBdICcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyB8ICcuam9pbihjaG9pY2VzKSkKLSAgICAgICAgZWxpZiBsZW4od29yZHMpID09IDI6Ci0gICAgICAgICAgICAjIHdvcmRzWzBdIG91Z2h0IHRvIGFuIGV4aXN0aW5nIHZucwotICAgICAgICAgICAgIyBBbGxvdyBzaG93IHZucyBhbGwgZmxvdyBbZGV0YWlsXQotICAgICAgICAgICAgaWYgKG5vdCBzZWxmLnZuc19maW5kX25hbWUod29yZHNbMF0pKSBhbmQgKHdvcmRzWzFdICE9ICdmbG93Jyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCJzaG93IHZucyAnJXMnOiB2bnMgTm90IEZvdW5kIiAlIHdvcmRzWzBdKQotCi0gICAgICAgICAgICB2bnNfa2V5ID0gc2VsZi5wcmVmaXhfc2VhcmNoX2tleShbd29yZHNbMF1dKQotICAgICAgICAgICAgc2VsZWN0aW9uID0gdXRpZi5mdWxsX3dvcmRfZnJvbV9jaG9pY2VzKHdvcmRzWzFdLCBjaG9pY2VzKQotICAgICAgICAgICAgaWYgbm90IHNlbGVjdGlvbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zeW50YXhfbXNnKCdzaG93IHZucyA8dm5zLW5hbWU+IFsgJXMgJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHwgJy5qb2luKGNob2ljZXMpKQotICAgICAgICAgICAgaWYgc2VsZWN0aW9uID09ICdpbnRlcmZhY2UnOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbmRfYW5kX2Rpc3BsYXlfdm5zX2ludGVyZmFjZSh3b3Jkc1swXSwgd29yZHNbMjpdKQotICAgICAgICAgICAgZWxpZiBzZWxlY3Rpb24gPT0gJ21hYy1hZGRyZXNzLXRhYmxlJzoKLSAgICAgICAgICAgICAgICAjIHRoZSBpZCBmb3IgdGhlIGhvc3Qtdm5zLWludGVyZmFjZSB0YWJsZSBoYXMgdGhlIGhvc3QgYXMgdGhlICdwcmVmaXgnLAotICAgICAgICAgICAgICAgICMgcHJldmVudGluZyBzZWFyY2hpbmcgYmFzZWQgb24gdGhlIHByZWZpeC4gIHRoZSB2bnMgaXMgbm90IGV2ZW4gYSBmb3JlaWduCi0gICAgICAgICAgICAgICAgIyBrZXksIHdoaWNoIG1lYW5zIHRoZSBjb21wbGV0ZSB0YWJsZSBtdXN0IGJlIHJlYWQsIHRoZW4gdGhlIHZucyBhc3NvY2lhdGlvbgotICAgICAgICAgICAgICAgICMgbXVzdCBiZSBkZXRlcm1pbmVkLCBhbmQgdGhlbiBtYXRjaGVkCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGlzcGxheV92bnNfbWFjX2FkZHJlc3NfdGFibGUod29yZHNbMF0sIHdvcmRzWzI6XSkKLSAgICAgICAgICAgIGVsaWYgc2VsZWN0aW9uID09ICdpbnRlcmZhY2UtcnVsZXMnOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRvX3Nob3dfb2JqZWN0KFsndm5zLWludGVyZmFjZS1ydWxlJywgdm5zX2tleV0sICI8bm9fa2V5PiIpCi0gICAgICAgICAgICBlbGlmIHNlbGVjdGlvbiA9PSAnYWNjZXNzLWxpc3RzJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5kb19zaG93X29iamVjdChbJ3Zucy1hY2Nlc3MtbGlzdC1lbnRyeScsIHZuc19rZXldLCAiPG5vX2tleT4iKQotICAgICAgICAgICAgZWxpZiBzZWxlY3Rpb24gPT0gJ3J1bm5pbmctY29uZmlnJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zaG93X3Zuc19ydW5uaW5nX2NvbmZpZyh3b3Jkc1swXSkKLSAgICAgICAgICAgIGVsaWYgc2VsZWN0aW9uID09ICdzd2l0Y2gnOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNob3dfdm5zX3N3aXRjaF9wb3J0cyh3b3JkcykKLSAgICAgICAgICAgIGVsaWYgc2VsZWN0aW9uID09ICdmbG93JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zaG93X3Zuc19mbG93X2Fubm90YXRlZCh3b3JkcykKLSAgICAgICAgZWxpZiBsZW4od29yZHMpID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5kb19zaG93X29iamVjdChbInZucy1kZWZpbml0aW9uIiwgd29yZHNbMF1dKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZG9fc2hvd19vYmplY3QoWyJ2bnMtZGVmaW5pdGlvbiJdKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX3Nob3dfdm5zX2ludGVyZmFjZV9ydWxlCi0gICAgIyAgZG9fc2hvd19vYmplY3QgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIG91dHB1dCBmb3IgdGhlIHRhYmxlIHNlYXJjaC4KLSAgICAjICBIb3dldmVyLCBzaW5jZSBhIHZucyBwcmVmaXgga2V5IHNlYXJjaCBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIHRhYmxlLAotICAgICMgIGFuZCBzaW5jZSBkb19zaG93X29iamVjdCBiZWhhdmVzIGRpZmZlcmVudGx5IHdoZW4gZGlzcGxheWluZyB0YWJsZXMKLSAgICAjICBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgdGFibGUgaXMgYSBrZXkgc2VhcmNoIG9yIG5vdCwgdGhlICd3aXRoX3NlYXJjaF9rZXknCi0gICAgIyAgcGFyYW1ldGVyIGlzIHNldCB0byAid2l0aF9rZXkiIHdoZW4gdGhlIGNhbGxlciBpbmNsdWRlZCBhbiBhZGRpdGlvbmFsCi0gICAgIyAgcHJlZml4IGZvciAoa2V5KSBmb3IgdGhlIHJ1bGUsIGFuZCBvdGhlcndpc2UgJzxub19rZXk+JyBpcyB1c2VkIHdoZW4KLSAgICAjICB0aGUgY2FsbGVyIHdhbnRzIHRoZSBjb21wbGV0ZSBpbnRlcmZhY2UtcnVsZSB0YWJsZSBmb3IgYSBzaW5nbGUgdm5zCi0gICAgIyAgKHdoaWNoIG9idmlvdWxzeSBhbHNvIGltcGxpZXMgYSBrZXkgc2VhcmNoIGZvciAndm5zfCcgcHJlZmllZCBydWxlcy4KLSAgICAjCi0gICAgZGVmIGRvX3Nob3dfdm5zX2ludGVyZmFjZV9ydWxlKHNlbGYsIHdvcmRzKToKLSAgICAgICAgd2l0aF9zZWFyY2hfa2V5ID0gIjxub19rZXk+IgotICAgICAgICBpZiBzZWxmLnZuc19uYW1lKCkgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIGxlbih3b3JkcykgPiAwOgotICAgICAgICAgICAgICAgIHNlYXJjaF9vYmplY3QgPSBbInZucy1pbnRlcmZhY2UtcnVsZSIsIHdvcmRzWzBdXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWFyY2hfb2JqZWN0ID0gWyJ2bnMtaW50ZXJmYWNlLXJ1bGUiXSAKLSAgICAgICAgZWxpZiBsZW4od29yZHMpID4gMDoKLSAgICAgICAgICAgIHdpdGhfc2VhcmNoX2tleSA9ICctJy5qb2luKHdvcmRzKQotICAgICAgICAgICAgd29yZHMuaW5zZXJ0KDAsIHNlbGYudm5zX25hbWUoKSkKLSAgICAgICAgICAgIHNlYXJjaF9vYmplY3QgPSBbInZucy1pbnRlcmZhY2UtcnVsZSIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVuaXF1ZV9rZXlfZnJvbV9ub25fdW5pcXVlKHdvcmRzKV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlYXJjaF9vYmplY3QgPSBbInZucy1pbnRlcmZhY2UtcnVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlZml4X3NlYXJjaF9rZXkoW3NlbGYudm5zX25hbWUoKV0pIF0gCi0gICAgICAgICAgICBvYmpfdHlwZSA9ICd2bnMtaW50ZXJmYWNlLXJ1bGUnCi0KLSAgICAgICAgICAgICMgLS0tIHRoaXMgb3VnaHQgdG8gYmUgcHJvbW90ZWQgdG8gYmUgdXNlZCBtb3JlIC4uCi0gICAgICAgICAgICBzX2RpY3QgPSB7fQotICAgICAgICAgICAgIyBmb3IgYWxsIGZvcmVpZ24ga2V5cyBpbiB0aGlzIG9ial90eXBlCi0gICAgICAgICAgICBtb2RlX2RpY3QgPSBzZWxmLm1vZGVfc3RhY2tfdG9fcmVzdF9kaWN0KHt9KQotCi0gICAgICAgICAgICAjIGZvciBmayBpbiBtaS5vYmpfdHlwZV9mb3JlaWduX2tleXMob2JqX3R5cGUpOgotICAgICAgICAgICAgZm9yIGtmIGluIG1pLmNvbXBvdW5kX2tleV9maWVsZHMob2JqX3R5cGUsIG1pLnBrKG9ial90eXBlKSk6Ci0gICAgICAgICAgICAgICAgaWYgbWkuaXNfZm9yZWlnbl9rZXkob2JqX3R5cGUsIGtmKToKLSAgICAgICAgICAgICAgICAgICAgKHJlZl9vdCwgcmVmX2ZuKSA9IG1pLmZvcmVpZ25fa2V5X3JlZmVyZW5jZXMob2JqX3R5cGUsIGtmKQotICAgICAgICAgICAgICAgICAgICBpZiByZWZfb3QgaW4gbW9kZV9kaWN0OgotICAgICAgICAgICAgICAgICAgICAgICAgc19kaWN0W2tmXSA9IG1vZGVfZGljdFtyZWZfb3RdCi0KLSAgICAgICAgICAgICMgZm9yIChuLHYpIGluIHNlbGYubW9kZV9zdGFja190b19yZXN0X2RpY3Qoe30pLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgIyBmb3IgKGZrX290LCBma19mbikgaW4gbWkuZm9yZWlnbl9rZXlfeHJlZltuXVttaS5wayhuKV06Ci0gICAgICAgICAgICAgICAgICAgICMgcHJpbnQgbiwgZmtfb3QsIGZrX2ZuCi0gICAgICAgICAgICAgICAgICAgICMgaWYgZmtfb3QgPT0gb2JqX3R5cGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHNfZGljdFtma19mbl0gPSB2Ci0gICAgICAgICAgICBlbnRyaWVzID0gc2VsZi5zdG9yZS5yZXN0X3F1ZXJ5X29iamVjdHMob2JqX3R5cGUsIHNfZGljdCkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmRpc3BsYXlfb2JqX3R5cGVfcm93cyhvYmpfdHlwZSwgZW50cmllcywgd2l0aF9zZWFyY2hfa2V5KQotICAgICAgICByZXR1cm4gc2VsZi5kb19zaG93X29iamVjdChzZWFyY2hfb2JqZWN0LCB3aXRoX3NlYXJjaF9rZXkpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY3BfaXNfYWxpYXMKLSAgICAjICBVc2VkIGluIGNwX25vIHRvIGRldGVybWluZSBpZiB0aGUgcGFydGljdWxhciByZXF1ZXN0IGlzIGFuIGFsaWFzIGNvbXBsZXRpb24KLSAgICAjCi0gICAgZGVmIGNwX2lzX2FsaWFzKHNlbGYsIHdvcmRzLCB0ZXh0KToKLSAgICAgICAgaWYgbm90IHNlbGYuaW5fY29uZmlnX3N1Ym1vZGUoKSBvciBsZW4od29yZHMpICE9IDI6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgb2JqX3R5cGUgPSBzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqX3R5cGUoKQotICAgICAgICAjIExPT0shIHJvYnY6IFR3ZWFrZWQgdGhpcyBmcm9tIHRoZSBjb21tZW50ZWQgb3V0IHZlcnNpb24gYmVsb3cKLSAgICAgICAgcmV0dXJuIG9ial90eXBlIGluIG1pLmFsaWFzX29ial90eXBlX3hyZWYKLSAKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBjYXNjYWRlX2RlbGV0ZQotICAgICMgIERlbGV0ZSBpbnRlcmlvciBvYmplY3RzJyByb3dzIHJlbGF0ZWQgdmlhIGZvcmVpZ24ga2V5cwotICAgICMKLSAgICBkZWYgY2FzY2FkZV9kZWxldGUoc2VsZiwgb2JqX3R5cGUsIGlkX3ZhbHVlKToKLSAgICAgICAgZ2xvYmFsIG1vZGkKLQotICAgICAgICBvYmpfa2V5ID0gbWkucGsob2JqX3R5cGUpCi0gICAgICAgIGlmIG9ial90eXBlIGluIG1pLmZvcmVpZ25fa2V5X3hyZWYgYW5kIFwKLSAgICAgICAgICAgb2JqX2tleSBpbiBtaS5mb3JlaWduX2tleV94cmVmW29ial90eXBlXToKLSAgICAgICAgICAgIGZvciAoZmtfb2JqX3R5cGUsIGZrX25hbWUpIGluIG1pLmZvcmVpZ25fa2V5X3hyZWZbb2JqX3R5cGVdW29ial9rZXldOgotICAgICAgICAgICAgICAgIGlmIG1pLmlzX2Nhc2NhZGVfZGVsZXRlX2VuYWJsZWQoZmtfb2JqX3R5cGUpOgotICAgICAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgICAgICMgZmluZCBhbnkgYWZmZWN0ZWQgcm93cwotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByb3dzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZShma19vYmpfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZrX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGFjdCIpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnIG9yIHNlbGYuZGVidWdfYmFja3RyYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsIGZrX29ial90eXBlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotICAgICAgICAgICAgICAgICAgICAgICAgcm93cyA9IFtdCi0KLSAgICAgICAgICAgICAgICAgICAgIyBkZXRlcm1pbmUgd2hldGhlciB0aGUgZm9yZWlnbiBrZXkgY2FuIGhhdmUgYSBudWxsCi0gICAgICAgICAgICAgICAgICAgICMgdmFsdWUsIGluIHdoaWNoIGNhc2UgdGhlIHJvdyBkb2Vzbid0IGhhdmUgdG8gYmUgZGVsZXRlZCwKLSAgICAgICAgICAgICAgICAgICAgIyBqdXN0IHVwZGF0ZWQgdGhlIGZvcmVpZ24ga2V5IHRvIGBOb25lJy4KLSAgICAgICAgICAgICAgICAgICAgaWYgbWkuaXNfZm9yY2VfZGVsZXRlX2VuYWJsZWQoZmtfb2JqX3R5cGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBlbGlmIG1pLmlzX251bGxfYWxsb3dlZChma19vYmpfdHlwZSwgZmtfbmFtZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlID0gVHJ1ZQotCi0gICAgICAgICAgICAgICAgICAgIGtleSA9IG1pLnBrKGZrX29ial90eXBlKQotICAgICAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJvd3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVsZXRlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3RfZGVsZXRlX29iamVjdChma19vYmpfdHlwZSwgcm93W2tleV0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZTogIyB1cGRhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0X3VwZGF0ZV9vYmplY3QoZmtfb2JqX3R5cGUsIGtleSwgcm93W2tleV0sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGZrX25hbWUgOiBOb25lIH0gKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBma19vYmpfdHlwZSArICIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcm93W2tleV0pCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnJvcnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19tc2coImNhc2NhZGUgZGVsZXRlOiAlczogJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZrX29ial90eXBlLCAnLCAnLmpvaW4ocm93W2tleV0uc3BsaXQoJ3wnKSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVsZXRlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FzY2FkZV9kZWxldGUoZmtfb2JqX3R5cGUsIHJvd1trZXldKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX25vCi0gICAgIyAgRGVsZXRlIHJvd3MgZnJvbSBhIHRhYmxlLCBvciB1cGRhdGUgYSBmaWVsZC4gIEZvciBmaWVsZHMgd2hpY2gKLSAgICAjICBoYXZlIGRlZmF1bHRzLCAnbm8nIHJlZmVydHMgdGhlIGZpZWxkIHRvIGl0cyBkZWZhdWx0IHZhbHVlLgotICAgICMKLSAgICBkZWYgZG9fbm8oc2VsZiwgd29yZHMpOgotICAgICAgICAjIGZvcm1hdCBpcyBubyA8IG9ial90eXBlID4gPCBpZCA+Ci0gICAgICAgIGlmIG5vdCBzZWxmLmluX2NvbmZpZ19tb2RlKCk6Ci0gICAgICAgICAgICBpZiBsZW4od29yZHMpIDwgMSBvciB3b3Jkc1swXSAhPSAnZGVidWcnOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygiJ25vJyBjb21tYW5kIG9ubHkgdmFsaWQgaW4gY29uZmlnIG1vZGUiKQotICAgICAgICBvYmpfdHlwZSA9IHNlbGYuZ2V0X2N1cnJlbnRfbW9kZV9vYmpfdHlwZSgpCi0gICAgICAgIG9wdGlvbiA9IHdvcmRzWzBdCi0gICAgICAgICMKLSAgICAgICAgIyBtYW5hZ2UgZGVsZXRpb24gb2YgY29tcGxldGUgcm93cyBpbiBvYmpfdHlwZXMnCi0gICAgICAgICMKLSAgICAgICAgaWYgb3B0aW9uIGluIHNlbGYub2JqX3R5cGVzX2Zvcl9jb25maWdfbW9kZV9zdGFydGluZ193aXRoKCk6Ci0gICAgICAgICAgICBpZiBub3QgbGVuKHdvcmRzKSA+IDE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCI8aWQ+IG11c3QgYmUgc3BlY2lmaWVkIGZvciB0aGUgb2JqZWN0IHRvIGRlbGV0ZSIpCi0gICAgICAgICAgICBpdGVtID0gY29udmVydF9hbGlhc190b19vYmplY3Rfa2V5KG9wdGlvbiwgd29yZHNbMV0pCi0gCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5yZXN0X2RlbGV0ZV9vYmplY3Qob3B0aW9uLCBpdGVtKQotICAgICAgICAgICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSwgb3B0aW9uICsgIiAiICsgaXRlbSkKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgY2FzY2FkZSBkZWxldGU/Ci0gICAgICAgICAgICBpZiBub3QgZXJyb3JzOgotICAgICAgICAgICAgICAgIHNlbGYuY2FzY2FkZV9kZWxldGUob3B0aW9uLCBpdGVtKQotICAgICAgICAjCi0gICAgICAgICMgbWFuYWdlIHJlbW92YWwvc2V0LXRvLWRlZmF1bHQgb2YgdmFsdWVzIGluIGZpZWxkcyBvZiBhbiBvYmpfdHlwZQotICAgICAgICAjCi0gICAgICAgIGVsaWYgb3B0aW9uIGluIHNlbGYuZmllbGRzX2Zvcl9jdXJyZW50X3N1Ym1vZGVfc3RhcnRpbmdfd2l0aChvcHRpb24pOgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyByZXBsYWNlIHRoZSBvYmpfdHlwZSB3aXRoIHRoZSBhbGlhcyBvYmpfdHlwZSB3aGVuIGZvcgotICAgICAgICAgICAgIyBmaWVsZHMgY2FsbGVkICdhbGlhcycgd2hlbiB0aGUgb2JqX3R5cGUgaGFzIG9uZSBhbGlhcyAKLSAgICAgICAgICAgIGlmIG9ial90eXBlIGluIG1pLmFsaWFzX29ial90eXBlX3hyZWY6Ci0gICAgICAgICAgICAgICAgYWxpYXNlcyA9IG1pLmFsaWFzX29ial90eXBlX3hyZWZbb2JqX3R5cGVdCi0gICAgICAgICAgICAgICAgaWYgb3B0aW9uIGluIGFsaWFzZXM6Ci0gICAgICAgICAgICAgICAgICAgIG9ial90eXBlID0gb3B0aW9uCi0gICAgICAgICAgICAgICAgaWYgbGVuKGFsaWFzZXMpID09IDEgYW5kIG9wdGlvbiA9PSAnYWxpYXMnOgotICAgICAgICAgICAgICAgICAgICBvYmpfdHlwZSA9IGFsaWFzZXNbMF0KLSAgICAgICAgICAgIGlmIGxlbihhbGlhc2VzKSAhPSAxOgotICAgICAgICAgICAgICAgIHByaW50IHNlbGYuZXJyb3JfbXNnKCJJbnRlcm5hbCAnbm8nIG1vcmUgdGhhbiBvbmUgYWxpYXMgY2hvaWNlIikKLSAgICAgICAgICAgICAgICBpZiBsZW4od29yZHMpIDwgMjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJTeW50YXg6IG5vICVzIDx2YWx1ZT4iICUgb3B0aW9uCi0gICAgICAgICAgICAgICAgaXRlbSA9IHdvcmRzWzFdCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3RfZGVsZXRlX29iamVjdChvYmpfdHlwZSwgaXRlbSkKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gTm9uZQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUsIG9ial90eXBlICsgIiAiICsgaXRlbSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gCi0gICAgICAgICAgICBrZXkgPSBtaS5wayhvYmpfdHlwZSkKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgbm90ZTogZmllbGRfZGVmYXVsdF92YWx1ZSByZXR1cm5zIE5vbmUgd2hlbiBubyBkZWZhdWx0IGlzCi0gICAgICAgICAgICAjIHByb3ZpZGVkLiAgaXRzIG5vdCBjbGVhciB3aGV0aGVyIGRlZmF1bHQgdmFsdWVzIGFyZSBhbHdheXMKLSAgICAgICAgICAgICMgcHJvdmlkZWQgZm9yIGZpZWxkcyB3aGljaCBkb24ndCBhY2NlcHQgbnVsbCB2YWx1ZXMuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICBkZWZhdWx0X3ZhbHVlID0gbWkuZmllbGRfZGVmYXVsdF92YWx1ZShvYmpfdHlwZSwgb3B0aW9uKQotCi0gICAgICAgICAgICBpZiBtaS5pc19udWxsX2FsbG93ZWQob2JqX3R5cGUsIG9wdGlvbikgYW5kIGRlZmF1bHRfdmFsdWU6Ci0gICAgICAgICAgICAgICAgc2VsZi53YXJuaW5nKCInJXMnIGFjY2VwdHMgbnVsbCBhbmQgaGFkIGEgZGVmYXVsdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZTsgJXMgaXMgc2V0IHRvIHRoZSBkZWZhdWx0IHZhbHVlICclcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqX3R5cGUsIG9wdGlvbiwgZGVmYXVsdF92YWx1ZSkpCi0KLSAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF91cGRhdGVfb2JqZWN0KG9ial90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY3VycmVudF9tb2RlX29iaigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbjpkZWZhdWx0X3ZhbHVlfSkKLSAgICAgICAgICAgICMgZmFsbCB0aHJvdWdoIHRvIHJldHVybgotICAgICAgICBlbGlmIHNlbGYuaW5fY29uZmlnX3Zuc19hY2xfbW9kZSgpIGFuZCBzZWxmLkFDTF9SRS5tYXRjaChvcHRpb24pOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZG9fdm5zX25vKFsnYWNjZXNzLWxpc3QtZW50cnknXSArIHdvcmRzKQotICAgICAgICAjZWxpZiBzZWxmLmluX2NvbmZpZ19jb250cm9sbGVyX2ludGVyZmFjZV9tb2RlKCkgYW5kICdmaXJld2FsbCcuc3RhcnRzd2l0aChvcHRpb24pOgotICAgICAgICAjICAgIHJldHVybiBzZWxmLmRvX25vX2ZpcmV3YWxsKHdvcmRzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvbW1hbmRfd29yZHMgPSBbJ25vJ10gKyB3b3JkcwotICAgICAgICAgICAgICAgICMgSnVzdCB0cnkgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZC4gSXQgd2lsbCBlaXRoZXIgc3VjY2VlZCBvcgotICAgICAgICAgICAgICAgICMgdGhyb3cgYW4gZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1hbmQuZG9fY29tbWFuZChjb21tYW5kX3dvcmRzKQotICAgICAgICAgICAgZXhjZXB0IHVybGxpYjIuSFRUUEVycm9yLCBlOgotICAgICAgICAgICAgICAgIHJhaXNlIGUKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyBvciBzZWxmLmRlYnVnX2JhY2t0cmFjZToKLSAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfbXNnKCInJXMnIG11c3QgYmUgZWl0aGVyIGEgdmFsaWQgb2JqZWN0IHR5cGUgb3IgYSBmaWVsZCIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbikKLQotICAgICAgICAjIHdoZW4gZXJyb3JzID09IE5vbmUsIHJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlIHJldHVybnMgTm9uZS4KLSAgICAgICAgcmV0dXJuIHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW1wbGVtZW50X3BpbmcKLSAgICAjICAgIFBlcmZvcm1zIGEgdHJhY2Vyb3V0ZSB0byBhIHN3aXRjaCBvciBob3N0LgotICAgICMgICAgSW5wdXQgY2FuIGVpdGhlciBiZSBhIERQSUQsIHN3aXRjaCBhbGlhcywgb3IgaG9zdCAoSVAgb3IgZG9tYWluKS4KLSAgICBkZWYgaW1wbGVtZW50X3Bpbmcoc2VsZiwgZGF0YSk6Ci0gICAgICAgIAotICAgICAgICBjb3VudCA9ICctYyAlZCAnICUgZGF0YS5nZXQoJ2NvdW50JywgNSkKLSAgICAgICAgaWYgbm90ICdpcC1hZGRyZXNzJyBpbiBkYXRhOgotICAgICAgICAgICAgeWllbGQoJ0NhblwndCBkZXRlcm1pbmUgcGluZyB0YXJnZXQnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaXBfaG9zdCA9IGRhdGFbJ2lwLWFkZHJlc3MnXQotICAgICAgICBpZiBzZWxmLkRQSURfUkUubWF0Y2goaXBfaG9zdCk6Ci0gICAgICAgICAgICBpcF9ob3N0ID0gc2VsZi5nZXRfaXBfZnJvbV9zd2l0Y2hfZHBpZF9vcl9hbGlhcyhpcF9ob3N0KQotCi0gICAgICAgIGNtZCA9ICdwaW5nICVzJXMnICUgKGNvdW50LCBzZWxmLnNoZWxsX2VzY2FwZShpcF9ob3N0KSkKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5nZW5lcmF0ZV9zdWJwcm9jZXNzX291dHB1dChjbWQpOgotICAgICAgICAgICAgeWllbGQgaXRlbQotCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW1wbGVtZW50X3RyYWNlcm91dGUKLSAgICAjICAgIFBlcmZvcm1zIGEgdHJhY2Vyb3V0ZSB0byBhIHN3aXRjaCBvciBob3N0LgotICAgICMgICAgSW5wdXQgY2FuIGVpdGhlciBiZSBhIERQSUQsIHN3aXRjaCBhbGlhcywgb3IgaG9zdCAoSVAgb3IgZG9tYWluKS4KLSAgICBkZWYgaW1wbGVtZW50X3RyYWNlcm91dGUoc2VsZiwgZGF0YSk6Ci0KLSAgICAgICAgaWYgbm90ICdpcC1hZGRyZXNzJyBpbiBkYXRhOgotICAgICAgICAgICAgeWllbGQoJ0NhblwndCBkZXRlcm1pbmUgdHJhY2Vyb3V0ZSB0YXJnZXQnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaXBfaG9zdCA9IGRhdGFbJ2lwLWFkZHJlc3MnXQotICAgICAgICBpZiBzZWxmLkRQSURfUkUubWF0Y2goaXBfaG9zdCk6Ci0gICAgICAgICAgICBpcF9ob3N0ID0gc2VsZi5nZXRfaXBfZnJvbV9zd2l0Y2hfZHBpZF9vcl9hbGlhcyhpcF9ob3N0KQotCi0gICAgICAgIGNtZCA9ICd0cmFjZXJvdXRlICVzJyAlIHNlbGYuc2hlbGxfZXNjYXBlKGlwX2hvc3QpCi0gICAgICAgIGZvciBpdGVtIGluIHNlbGYuZ2VuZXJhdGVfc3VicHJvY2Vzc19vdXRwdXQoY21kKToKLSAgICAgICAgICAgIHlpZWxkIGl0ZW0KLQotIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBkb19ub19maXJld2FsbAotICAgICMKLSAgICAjZGVmIGRvX25vX2ZpcmV3YWxsKHNlbGYsIHdvcmRzKToKLSAgICAjICAgIHJldHVybiBzZWxmLmRvX2ZpcmV3YWxsKHdvcmRzWzE6XSwgVHJ1ZSkKLSAgICAgICAgCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZmlyZXdhbGxfcnVsZV9hZGRfcnVsZV90b19lbnRyaWVzCi0gICAgIwotICAgIGRlZiBmaXJld2FsbF9ydWxlX2FkZF9ydWxlX3RvX2VudHJpZXMoc2VsZiwgZW50cmllcyk6Ci0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgZW50cnlbJ3J1bGUnXSA9IHJ1bl9jb25maWcuZmlyZXdhbGxfcnVsZShlbnRyeSkKLSAgICAgICAgcmV0dXJuIGVudHJpZXMKLQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGdldF9maXJld2FsbF9ydWxlcwotICAgICMgIFJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgZGVzY3JpYmluZyB0aGUgZmlyZXdhbGwgcnVsZXMgZm9yIGEgcGFydGljdWxhcgotICAgICMgIGNvbnRyb2xsZXItbm9kZSBuYW1lLgotICAgICMKLSAgICBkZWYgZ2V0X2ZpcmV3YWxsX3J1bGVzKHNlbGYsIG5vZGUpOgotICAgICAgICBrZXkgPSBtaS5waygnZmlyZXdhbGwtcnVsZScpCi0gICAgICAgIGtleV92YWx1ZSA9IHNlbGYudW5pcXVlX2tleV9mcm9tX25vbl91bmlxdWUoW25vZGVdKQotICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfdGFibGVfZnJvbV9zdG9yZSgnZmlyZXdhbGwtcnVsZScsIGtleSwga2V5X3ZhbHVlKQotCi0gICAgICAgIHJldHVybiBzZWxmLmZpcmV3YWxsX3J1bGVfYWRkX3J1bGVfdG9fZW50cmllcyhlbnRyaWVzKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX3Nob3dfZmlyZXdhbGwKLSAgICAjICBEZXBlbmRzIG9uIGdldF9maXJld2FsbF9ydWxlcyB0byBhZGQgJ3J1bGUnIHRvIGVudHJpZXMgc28gdGhhdAotICAgICMgIHRoZSAnZmlyZXdhbGwtcnVsZScgdGFibGUgY2FuIGRpc3BsYXkgdGhlIHJ1bGUncyB2YWx1ZSBpbiBhCi0gICAgIyAgZWFzaWx5IGlkZW50aWZpZWQgc3ludGF4LgotICAgICMKLSAgICBkZWYgZG9fc2hvd19maXJld2FsbChzZWxmLCB3b3Jkcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLmRpc3BsYXlfb2JqX3R5cGVfcm93cygnZmlyZXdhbGwtcnVsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldF9maXJld2FsbF9ydWxlcyhzZWxmLmdldF9jdXJyZW50X21vZGVfb2JqKCkpKQotCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaGFuZGxlX2NvbW1hbmQKLSAgICAjCi0gICAgZGVmIGhhbmRsZV9jb21tYW5kKHNlbGYsIGNvbW1hbmRfd29yZCwgd29yZHMpOgotICAgICAgICBpZiB0eXBlKGNvbW1hbmRfd29yZCkgPT0gc3RyOgotICAgICAgICAgICAgbWV0aG9kID0gc2VsZi5jb21tYW5kX21ldGhvZF9mcm9tX25hbWUoY29tbWFuZF93b3JkKQotICAgICAgICAgICAgaWYgbWV0aG9kOgotICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2Qod29yZHMpCi0gICAgICAgICMgWFhYIEl0IHdvdWxkIGJlIGJldHRlciB0byBvbmx5IGNhbGwgZG9fY29tbWFuZCBpZiBpdAotICAgICAgICAjIHdhcyBjbGVhciB0aGF0IHRoaXMgY29tbWFuZCBhY3R1YWxseSBleGlzdGVkLgotICAgICAgICByZXR1cm4gY29tbWFuZC5kb19jb21tYW5kKFtjb21tYW5kX3dvcmRdICsgd29yZHMpCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBmaW5kX3dpdGhfcXVvdGluZwotICAgICMKLSAgICAjICBBc3N1bWVzIHN0YXJ0X2luZGV4IGlzIG5vdCBpbnNpZGUgYSBxdW90ZWQgc3RyaW5nLgotICAgICMKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGZpbmRfd2l0aF9xdW90aW5nKGxpbmUsIGZpbmRfY2hhciwgcmV2ZXJzZT1GYWxzZSwgc3RhcnRfaW5kZXg9MCk6Ci0gICAgICAgIGluX3F1b3RlZF9hcmcgPSBGYWxzZQotICAgICAgICBsaW5lX2xlbmd0aCA9IGxlbihsaW5lKQotICAgICAgICBpID0gc3RhcnRfaW5kZXgKLSAgICAgICAgZm91bmRfaW5kZXggPSAtMTsKLSAgICAgICAgd2hpbGUgaSA8IGxpbmVfbGVuZ3RoOgotICAgICAgICAgICAgYyA9IGxpbmVbaV0KLSAgICAgICAgICAgIGlmIGMgaW4gIlwiJyI6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGluX3F1b3RlZF9hcmc6Ci0gICAgICAgICAgICAgICAgICAgIHF1b3RlX2NoYXIgPSBjCi0gICAgICAgICAgICAgICAgICAgIGluX3F1b3RlZF9hcmcgPSBUcnVlCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IHF1b3RlX2NoYXI6Ci0gICAgICAgICAgICAgICAgICAgIGluX3F1b3RlZF9hcmcgPSBGYWxzZQotICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGxlYXZlIGluX3F1b3RlZF9hcmcgVHJ1ZQotICAgICAgICAgICAgZWxpZiBjID09ICJcXCIgYW5kIGluX3F1b3RlZF9hcmc6Ci0gICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICBlbGlmIChjID09IGZpbmRfY2hhcikgYW5kIG5vdCBpbl9xdW90ZWRfYXJnOgotICAgICAgICAgICAgICAgIGZvdW5kX2luZGV4ID0gaQotICAgICAgICAgICAgICAgIGlmIG5vdCByZXZlcnNlOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICAKLSAgICAgICAgcmV0dXJuIGZvdW5kX2luZGV4Ci0gICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHNwbGl0X3dpdGhfcXVvdGluZwotICAgICMKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHNwbGl0X3dpdGhfcXVvdGluZyhsaW5lLCBzZXBhcmF0b3JzPSIgXHQiKToKLSAgICAgICAgd29yZF9saXN0ID0gW10KLSAgICAgICAgY3VycmVudF93b3JkID0gIiIKLSAgICAgICAgaW5fcXVvdGVkX2FyZyA9IEZhbHNlCi0gICAgICAgIGxpbmVfbGVuZ3RoID0gbGVuKGxpbmUpCi0gICAgICAgIGkgPSAwCi0gICAgICAgIHdoaWxlIGkgPCBsaW5lX2xlbmd0aDoKLSAgICAgICAgICAgIGMgPSBsaW5lW2ldCi0gICAgICAgICAgICBpICs9IDEKLSAgICAgICAgICAgIGlmIGMgaW4gIlwiJyI6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGluX3F1b3RlZF9hcmc6Ci0gICAgICAgICAgICAgICAgICAgIGluX3F1b3RlZF9hcmcgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHF1b3RlX2NoYXIgPSBjCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IHF1b3RlX2NoYXI6Ci0gICAgICAgICAgICAgICAgICAgIGluX3F1b3RlZF9hcmcgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICB3b3JkX2xpc3QuYXBwZW5kKGN1cnJlbnRfd29yZCkKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudF93b3JkID0gIiIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3dvcmQgKz0gYwotICAgICAgICAgICAgZWxpZiBjID09ICJcXCIgYW5kIGluX3F1b3RlZF9hcmc6Ci0gICAgICAgICAgICAgICAgaWYgaSA8IGxpbmVfbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICBjID0gbGluZVtpXQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3dvcmQgKz0gYwotICAgICAgICAgICAgICAgICAgICBpICs9IDEKLSAgICAgICAgICAgIGVsaWYgKGMgaW4gc2VwYXJhdG9ycykgYW5kIG5vdCBpbl9xdW90ZWRfYXJnOgotICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRfd29yZDoKLSAgICAgICAgICAgICAgICAgICAgd29yZF9saXN0LmFwcGVuZChjdXJyZW50X3dvcmQpCi0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfd29yZCA9ICIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGN1cnJlbnRfd29yZCArPSBjCi0gICAgICAgICAgICAgICAgCi0gICAgICAgIGlmIGN1cnJlbnRfd29yZDoKLSAgICAgICAgICAgIHdvcmRfbGlzdC5hcHBlbmQoY3VycmVudF93b3JkKQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHdvcmRfbGlzdAotICAgIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBxdW90ZV9pdGVtCi0gICAgIyAgU29tZSBvZiB0aGUgbmV3IG1vZGVsIGNvbHVtbnMgYXZhaWxhYmxlIGFzIGNob2ljZXMgdG8gc2VsZWN0IGhhdmUgdGhlICd8JyAKLSAgICAjICBjaGFyYWN0ZXIgYXMgYSBzZXBhcmF0b3IuICBGb3IgdGhlc2UgY2hvaWNlcyB0byB3b3JkLCB0aGV5IG5lZWQgdG8gYmUKLSAgICAjICBxdW90ZWQKLSAgICAjCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBxdW90ZV9pdGVtKG9ial90eXBlLCBpdGVtKToKLSAgICAgICAgaWYgaXRlbS5maW5kKCJ8IikgPj0gMDoKLSAgICAgICAgICAgIHJldHVybiAgJyInICsgc3RyKGl0ZW0pICsgJyInIAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHN0cihpdGVtKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIAotICAgIGRlZiByZXBsYXkoc2VsZiwgZmlsZSwgdmVyYm9zZSA9IFRydWUsIGNvbW1hbmRfcmVwbGF5ID0gRmFsc2UpOgotICAgICAgICAjIE9ubHkgcmVwbGF5IHRoZSBTVFIgdmFsdWVzLCBzaW5jZSB0aGUgY29kZSBvdWdodCB0bwotICAgICAgICAjIHN0dWZmIGJhY2sgdGhlIEpTT04gdmFsdWVzLgotICAgICAgICBwbGF5ID0gb3BlbihmaWxlKQotICAgICAgICByZXN0X2xpbmVfZm9ybWF0ID0gcmUuY29tcGlsZShyJ15SRVNUIChbXiBdKikoICAqKShbXiBdKikoICAqKSguKikkJykKLSAgICAgICAgY21kX2xpbmVfZm9ybWF0ID0gcmUuY29tcGlsZShyJ15DT01NQU5EICguKikkJykKLSAgICAgICAgc2tpcF9jb21tYW5kID0gVHJ1ZQotICAgICAgICBmb3IgbGluZSBpbiBwbGF5LnJlYWQoKS5zcGxpdCgnXG4nKToKLSAgICAgICAgICAgICMgdGhlIGZvcm1hdCBvdWdodCB0byBiZSB1cmw8c3BhY2U+W1NUUnxKU09OXTxzcGFjZT4gLi4uCi0gICAgICAgICAgICBtYXRjaCA9IHJlc3RfbGluZV9mb3JtYXQubWF0Y2gobGluZSkKLSAgICAgICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgICAgIGlmIG1hdGNoLmdyb3VwKDMpID09ICdTVFInOgotICAgICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1JFU1QgU1RSJywgbWF0Y2guZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICAgICAgdXJsX2NhY2hlLnNhdmVfdXJsKG1hdGNoLmdyb3VwKDEpLCBtYXRjaC5ncm91cCg1KSwgMTAwMDAwMCkKLSAgICAgICAgICAgICAgICBlbGlmIG1hdGNoLmdyb3VwKDMpID09ICdKU09OJzoKLSAgICAgICAgICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdSRVNUIEpTT04nLCBtYXRjaC5ncm91cCgxKQotICAgICAgICAgICAgICAgICAgICBlbnRyaWVzID0ganNvbi5sb2FkcyhtYXRjaC5ncm91cCg1KSkKLSAgICAgICAgICAgICAgICAgICAgdXJsX2NhY2hlLnNhdmVfdXJsKG1hdGNoLmdyb3VwKDEpLCBlbnRyaWVzLCAxMDAwMDAwKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdSRVNUIFJFUExBWSBOT1QgU1RSfEpTT04nCi0gICAgICAgICAgICBlbGlmIGxlbihsaW5lKToKLSAgICAgICAgICAgICAgICBtYXRjaCA9IGNtZF9saW5lX2Zvcm1hdC5tYXRjaChsaW5lKQotICAgICAgICAgICAgICAgIGlmIGNvbW1hbmRfcmVwbGF5IGFuZCBtYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgIyBza2lwIHRoZSBmaXJzdCBjb21tYW5kIHNpbmNlIGl0IG91Z2h0IHRvIGJlIHRoZSByZXBsYXkgZW5hYmxlbWVudAotICAgICAgICAgICAgICAgICAgICBpZiBza2lwX2NvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdTS0lQIENPTU1BTkQgJXMnICUgbWF0Y2guZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfY29tbWFuZCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zcGxpdF93aXRoX3F1b3RpbmcobWF0Y2guZ3JvdXAoMSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdDT01NQU5EICVzJyAlIGxpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuaGFuZGxlX211bHRpcGFydF9saW5lKGxpbmVbMF0pCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvdXRwdXQgIT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBvdXRwdXQKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmludCAnbm8gTUFUQ0ggKyVzKycgJSBsaW5lCi0gICAgICAgIHBsYXkuY2xvc2UoKQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGhhbmRsZV9zaW5nbGVfbGluZQotICAgICMKLSAgICBkZWYgaGFuZGxlX3NpbmdsZV9saW5lKHNlbGYsIGxpbmUpOgotICAgICAgICByZXRfdmFsID0gTm9uZQotICAgICAgICBpZiBsZW4obGluZSkgPiAwIGFuZCBsaW5lWzBdPT0iISI6ICMgc2tpcCBjb21tZW50cwotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHdvcmRzID0gc2VsZi5zcGxpdF93aXRoX3F1b3RpbmcobGluZSkKLSAgICAgICAgaWYgbm90IHdvcmRzOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMKLSAgICAgICAgc2VsZi5jb21wbGV0aW9uX3Jlc2V0KCkKLQotICAgICAgICAjIExvb2sgZm9yIHRoZSByZXBsYXkga2V5d29yZCwgdXNlIHRoZSBmaXJzdCB0d28gdG9rZW5zIGlmIHRoZSByZXBsYXkKLSAgICAgICAgIyBrZXl3b3JkIGlzIGluIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBjb21tYW5kLgotICAgICAgICBpZiBzZWxmLmRlYnVnIGFuZCBsZW4od29yZHMpID49IDI6Ci0gICAgICAgICAgICBpZiB3b3Jkc1swXSA9PSAncmVwbGF5JzoKLSAgICAgICAgICAgICAgICAjIHJlcGxheSB0aGUgZmlsZSwgcmVtb3ZlIHRoZSBmaXJzdCB0d28ga2V5d29yZHMKLSAgICAgICAgICAgICAgICBzZWxmLnJlcGxheSh3b3Jkc1sxXSwgY29tbWFuZF9yZXBsYXkgPSBsZW4od29yZHMpID09IDIpCi0gICAgICAgICAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICB3b3JkcyA9IHdvcmRzWzI6XQotCi0gICAgICAgICMgdGhlIGZpcnN0IHdvcmQgb2YgYSBsaW5lIGlzIGVpdGhlcjoKLSAgICAgICAgIyAtIGEgY29tbWFuZCAtIGRlcGVuZGVudCBvbiBtb2RlIChzaG93IGFueXdoZXJlIGJ1dCBjb25maWd1cmUgb25seSBpbiBlbmFibGUpCi0gICAgICAgICMgLSBhbiBvYmplY3QgdHlwZSAtIGlmIHdlJ3JlIGluIGEgY29uZmlnIG1vZGUgKGVpdGhlciBjb25maWcgb3IgY29uZmlnIHN1Ym1vZGUpCi0gICAgICAgICMgLSBhIGZpZWxkIGZvciBhbiBvYmplY3QgLSBpZiB3ZSdyZSBpbiBhIGNvbmZpZyBzdWJtb2RlCi0gICAgICAgIG1hdGNoZXMgPSBbKHgsICJjb21tYW5kIikgZm9yIHggaW4gc2VsZi5jb21tYW5kc19mb3JfY3VycmVudF9tb2RlX3N0YXJ0aW5nX3dpdGgod29yZHNbMF0pXQotICAgICAgICBtYXRjaGVzLmV4dGVuZChbKHgsICJjb25maWcgb2JqZWN0IikgZm9yIHggaW4gc2VsZi5vYmpfdHlwZXNfZm9yX2NvbmZpZ19tb2RlX3N0YXJ0aW5nX3dpdGgod29yZHNbMF0pXSkKLSAgICAgICAgbWF0Y2hlcy5leHRlbmQoWyh4LCAiZmllbGQiKSBmb3IgeCBpbiBzZWxmLmZpZWxkc19mb3JfY3VycmVudF9zdWJtb2RlX3N0YXJ0aW5nX3dpdGgod29yZHNbMF0pXSkKLSAgICAgICAgIyBMT09LITogcm9idiBGaXggdG8gd29yayB3aXRoIGZpZWxkIG5hbWVzIHdoZXJlIG9uZSBuYW1lIGlzIGEgcHJlZml4IG9mIGFub3RoZXIKLSAgICAgICAgaWYgbGVuKG1hdGNoZXMpID4gMToKLSAgICAgICAgICAgIGZvciBtYXRjaF90dXBsZSBpbiBtYXRjaGVzOgotICAgICAgICAgICAgICAgIGlmIG1hdGNoX3R1cGxlWzBdID09IHdvcmRzWzBdOgotICAgICAgICAgICAgICAgICAgICBtYXRjaGVzID0gW21hdGNoX3R1cGxlXQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBsZW4obWF0Y2hlcykgPT0gMToKLSAgICAgICAgICAgIG1hdGNoID0gbWF0Y2hlc1swXQotICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSAocG9zc2libHkpIGFiYnJldmlhdGVkIGFyZ3VtZW50IHdpdGggdGhlIGZ1bGwgbmFtZS4KLSAgICAgICAgICAgICMgVGhpcyBpcyBzbyB0aGF0IHRoZSBoYW5kbGVycyBkb24ndCBuZWVkIHRvIGFsbCBoYW5kbGUgYWJicmV2aWF0aW9ucy4KLSAgICAgICAgICAgIGlmIHR5cGUobWF0Y2hbMF0pID09IHN0cjoKLSAgICAgICAgICAgICAgICB3b3Jkc1swXSA9IG1hdGNoWzBdCi0KLSAgICAgICAgICAgIGlmIG1hdGNoWzFdID09ICJmaWVsZCI6Ci0gICAgICAgICAgICAgICAgcmV0X3ZhbCA9IHNlbGYuaGFuZGxlX2ZpZWxkKHdvcmRzKQotICAgICAgICAgICAgZWxpZiBtYXRjaFsxXSA9PSAiY29uZmlnIG9iamVjdCI6Ci0gICAgICAgICAgICAgICAgcmV0X3ZhbCA9IHNlbGYuaGFuZGxlX29ial90eXBlKHdvcmRzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXRfdmFsID0gc2VsZi5oYW5kbGVfY29tbWFuZCh3b3Jkc1swXSwgd29yZHNbMTpdKQotICAgICAgICAgICAgICAgICNyZXRfdmFsID0gc2VsZi5oYW5kbGVfY29tbWFuZChtYXRjaFswXSwgd29yZHNbMTpdKQotICAgICAgICBlbGlmIGxlbihtYXRjaGVzKSA+IDE6Ci0gICAgICAgICAgICByZXRfdmFsID0gc2VsZi5lcnJvcl9tc2coIiVzIGlzIGFtYmlndW91c1xuIiAlIHdvcmRzWzBdKQotICAgICAgICAgICAgZm9yIG0gaW4gbWF0Y2hlczoKLSAgICAgICAgICAgICAgICByZXRfdmFsICs9ICIlcyAoJXMpXG4iICUgbQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0X3ZhbCA9IHNlbGYuZXJyb3JfbXNnKCJVbmtub3duIGNvbW1hbmQ6ICVzXG4iICUgd29yZHNbMF0pCi0KLSAgICAgICAgdXJsX2NhY2hlLmNvbW1hbmRfZmluaXNoZWQod29yZHMpCi0gICAgICAgIHJldHVybiByZXRfdmFsCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZ2VuZXJhdGVfcGlwZV9vdXRwdXQKLSAgICAjCi0gICAgZGVmIGdlbmVyYXRlX3BpcGVfb3V0cHV0KHNlbGYsIHAsIG91dHB1dCk6Ci0gICAgICAgIGZsID0gZmNudGwuZmNudGwocC5zdGRvdXQsIGZjbnRsLkZfR0VURkwpCi0gICAgICAgIGZjbnRsLmZjbnRsKHAuc3Rkb3V0LCBmY250bC5GX1NFVEZMLCBmbCB8IG9zLk9fTk9OQkxPQ0spCi0KLSAgICAgICAgZm9yIGl0ZW0gaW4gb3V0cHV0OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHAuc3RkaW4ud3JpdGUoaXRlbSkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvdXRfaXRlbSA9IHAuc3Rkb3V0LnJlYWQoKQotICAgICAgICAgICAgICAgIHlpZWxkIG91dF9pdGVtCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAKLSAgICAgICAgcC5zdGRpbi5jbG9zZSgpCi0KLSAgICAgICAgZmNudGwuZmNudGwocC5zdGRvdXQsIGZjbnRsLkZfU0VURkwsIGZsKQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgb3V0X2l0ZW0gPSBwLnN0ZG91dC5yZWFkKCkKLSAgICAgICAgICAgIGlmIChvdXRfaXRlbSk6Ci0gICAgICAgICAgICAgICAgeWllbGQgb3V0X2l0ZW0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcC5zdGRvdXQuY2xvc2UoKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHAud2FpdCgpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgd3JpdGVfdG9fcGlwZQotICAgICMKLSAgICBkZWYgd3JpdGVfdG9fcGlwZShzZWxmLCBwLCBvdXRwdXQpOgotICAgICAgICBmb3IgaXRlbSBpbiBvdXRwdXQ6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcC5zdGRpbi53cml0ZShpdGVtKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcC5zdGRpbi5jbG9zZSgpCi0gICAgICAgIHAud2FpdCgpCi0gICAgICAgICAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgc2hlbGxfZXNjYXBlCi0gICAgIyAgUmV0dXJuIGEgc3RyaW5nLCBxdW90aW5nIHRoZSBjb21wbGV0ZSBzdHJpbmcsIGFuZCBjb3JyZWN0bHkgcHJlZml4IGFueQotICAgICMgIHF1b3RlcyB3aXRoaW4gdGhlIHN0cmluZy4KLSAgICAjCi0gICAgZGVmIHNoZWxsX2VzY2FwZShzZWxmLCBhcmcpOgotICAgICAgICByZXR1cm4gIiciICsgYXJnLnJlcGxhY2UoIiciLCAiJ1xcJyciKSArICInIgotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGhhbmRsZV9waXBlX2FuZF9yZWRpcmVjdAotICAgICMKLSAgICBkZWYgaGFuZGxlX3BpcGVfYW5kX3JlZGlyZWN0KHNlbGYsIHBpcGVfY21kcywgcmVkaXJlY3RfdGFyZ2V0LCBvdXRwdXQpOgotICAgICAgICAjIGlmIHJlZGlyZWN0IHRhcmdldCBpcyB0ZnRwL2Z0cC9odHRwL2ZpbGUsIHRoZW4gd2Ugc2hvdWxkIGFjdHVhbGx5IHN0aWNrCi0gICAgICAgICMgY3VybCBhdCB0aGUgZW5kIG9mIHRoZSBwaXBlX2NtZHMgc28gaXQgZ2V0cyBoYW5kbGVkIGJlbG93Ci0gICAgICAgIGlmIHJlZGlyZWN0X3RhcmdldDoKLSAgICAgICAgICAgIGlmIHJlZGlyZWN0X3RhcmdldC5zdGFydHN3aXRoKCJ0ZnRwIikgb3IgcmVkaXJlY3RfdGFyZ2V0LnN0YXJ0c3dpdGgoImZ0cCIpIG9yIFwKLSAgICAgICAgICAgICAgIHJlZGlyZWN0X3RhcmdldC5zdGFydHN3aXRoKCJodHRwIikgb3IgcmVkaXJlY3RfdGFyZ2V0LnN0YXJ0c3dpdGgoImZpbGUiKToKLSAgICAgICAgICAgICAgICByZWRpcmVjdF90YXJnZXQgPSBzZWxmLnNoZWxsX2VzY2FwZShyZWRpcmVjdF90YXJnZXQpCi0gICAgICAgICAgICAgICAgIyBhZGQgc28gaXQgY2FuIGJlIHVzZWQgYmVsb3cKLSAgICAgICAgICAgICAgICBpZiBwaXBlX2NtZHMgPT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcGlwZV9jbWRzID0gIiIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwaXBlX2NtZHMgKz0gIiB8ICIKLQotICAgICAgICAgICAgICAgIGlmIHJlZGlyZWN0X3RhcmdldC5zdGFydHN3aXRoKCJmdHAiKTogIyBzaGVsbF9lc2NhcGUgYWRkZWQgcXVvdGUKLSAgICAgICAgICAgICAgICAgICAgcGlwZV9jbWRzICs9ICIgY3VybCAtVCAtICVzIiAlIHNlbGYuc2hlbGxfZXNjYXBlKHJlZGlyZWN0X3RhcmdldCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwaXBlX2NtZHMgKz0gIiBjdXJsIC1YIFBVVCAtZCBALSAlcyIgJSBzZWxmLnNoZWxsX2VzY2FwZShyZWRpcmVjdF90YXJnZXQpCi0KLSAgICAgICAgaWYgcGlwZV9jbWRzOgotICAgICAgICAgICAgbmV3X3BpcGVfY21kX2xpc3QgPSBbXQotICAgICAgICAgICAgZm9yIHBpcGVfY21kIGluIFt4LnN0cmlwKCkgZm9yIHggaW4gcGlwZV9jbWRzLnNwbGl0KCd8JyldOgotICAgICAgICAgICAgICAgICMgZG9pbmcgaXQgdGhpcyB3YXkgbGV0IHVzIGhhbmRsZXMgc3BhY2VzIGluIHRoZSBwYXR0ZXJucwotICAgICAgICAgICAgICAgICMgYXMgb3Bwb3NlZCB0byB1c2luZyBzcGxpdC9qb2luIHdoaWNoIHdvdWxkIGNvbXByZXNzIHNwYWNlCi0gICAgICAgICAgICAgICAgbmV3X3BpcGVfY21kID0gcGlwZV9jbWQKLSAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKCdeKFx3KykoLiopJCcsIHBpcGVfY21kKSAKLSAgICAgICAgICAgICAgICBpZiBtOiAKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RfdG9rID0gbS5ncm91cCgxKQotICAgICAgICAgICAgICAgICAgICByZXN0X29mX2NtZCA9IG0uZ3JvdXAoMikuc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICBpZiBmaXJzdF90b2suc3RhcnRzd2l0aCgiaW4iKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld19waXBlX2NtZCA9ICJncmVwIC1lICIgKyByZXN0X29mX2NtZAotICAgICAgICAgICAgICAgICAgICBlbGlmIGZpcnN0X3Rvay5zdGFydHN3aXRoKCJleCIpOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3BpcGVfY21kID0gImdyZXAgLXYgLWUiICsgcmVzdF9vZl9jbWQKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBmaXJzdF90b2suc3RhcnRzd2l0aCgiYmVnaW4iKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld19waXBlX2NtZCA9ICAiYXdrICcvJXMvLDAnIiAlIHJlc3Rfb2ZfY21kCi0gICAgICAgICAgICAgICAgbmV3X3BpcGVfY21kX2xpc3QuYXBwZW5kKG5ld19waXBlX2NtZCkKLQotICAgICAgICAgICAgbmV3X3BpcGVfY21kcyA9ICJ8Ii5qb2luKG5ld19waXBlX2NtZF9saXN0KQotICAgICAgICAgICAgaWYgbmV3X3BpcGVfY21kczoKLSAgICAgICAgICAgICAgICBpZiByZWRpcmVjdF90YXJnZXQ6Ci0gICAgICAgICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKG5ld19waXBlX2NtZHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLmdlbmVyYXRlX3BpcGVfb3V0cHV0KHAsIG91dHB1dCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihuZXdfcGlwZV9jbWRzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZV90b19waXBlKHAsIG91dHB1dCkKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gTm9uZQotCi0gICAgICAgICMgb25seSBoYW5kbGUgbG9jYWwgZmlsZSBoZXJlIGFzIGh0dHAvZnRwIHdlcmUgaGFuZGxlZCBhYm92ZSB2aWEgcGlwZQotICAgICAgICBpZiByZWRpcmVjdF90YXJnZXQ6Ci0gICAgICAgICAgICBpZiByZWRpcmVjdF90YXJnZXQuc3RhcnRzd2l0aCgiY29uZmlnOi8vIik6Ci0gICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChzZWxmLmxvY2FsX25hbWVfcGF0dGVybiwgcmVkaXJlY3RfdGFyZ2V0KQotICAgICAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgICAgIGpvaW5fb3V0cHV0ID0gJycuam9pbihpdGVyKG91dHB1dCkpCi0gICAgICAgICAgICAgICAgICAgIHN0b3JlX3Jlc3VsdCA9IHNlbGYuc3RvcmUuc2V0X3VzZXJfZGF0YV9maWxlKG0uZ3JvdXAoMSksIGpvaW5fb3V0cHV0KQotICAgICAgICAgICAgICAgICAgICBpZiBzdG9yZV9yZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqc29uLmxvYWRzKHN0b3JlX3Jlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygicmVzdCBzdG9yZSByZXN1bHQgbm90IGpzb24gZm9ybWF0IikKLSAgICAgICAgICAgICAgICAgICAgaWYgJ3N0YXR1cycgaW4gcmVzdWx0IGFuZCByZXN1bHRbJ3N0YXR1cyddID09ICdzdWNjZXNzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgJ21lc3NhZ2UnIG5vdCBpbiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lcnJvcl9tc2coInJlc3Qgc3RvcmUgcmVzdWx0IGRvZXNuJ3QgY29udGFpbiBlcnJvciBtZXNzYWdlIikKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZyhyZXN1bHRbJ21lc3NhZ2UnXSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmludCBzZWxmLmVycm9yX21zZygiaW52YWxpZCBuYW1lLWluLWRiICglcylcbiIgJSByZWRpcmVjdF90YXJnZXQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQKLQotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGdlbmVyYXRlX2NvbW1hbmRfb3V0cHV0Ci0gICAgIwotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZ2VuZXJhdGVfY29tbWFuZF9vdXRwdXQocmV0X3ZhbCk6Ci0gICAgICAgIGlmIChpc2luc3RhbmNlKHJldF92YWwsIHN0cikgb3IgXAotICAgICAgICAgICAgaXNpbnN0YW5jZShyZXRfdmFsLCBidWZmZXIpIG9yIFwKLSAgICAgICAgICAgIGlzaW5zdGFuY2UocmV0X3ZhbCwgYnl0ZWFycmF5KSBvciBcCi0gICAgICAgICAgICBpc2luc3RhbmNlKHJldF92YWwsIHVuaWNvZGUpKToKLQotICAgICAgICAgICAgIyB5aWVsZCByZXRfdmFsCi0gICAgICAgICAgICBpZiBsZW4ocmV0X3ZhbCkgYW5kIHJldF92YWxbLTFdID09ICdcbic6Ci0gICAgICAgICAgICAgICAgcmV0X3ZhbCA9IHJldF92YWxbOi0xXQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmV0X3ZhbC5zcGxpdCgnXG4nKToKLSAgICAgICAgICAgICAgICB5aWVsZCBsaW5lICsgJ1xuJwotICAgICAgICBlbGlmIHJldF92YWwgIT0gTm9uZToKLSAgICAgICAgICAgIGZvciBpdGVtIGluIHJldF92YWw6Ci0gICAgICAgICAgICAgICAgeWllbGQgaXRlbQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGdlbmVyYXRlX2xpbmVfb3V0cHV0Ci0gICAgIwotICAgICMgVGhpcyBpcyBhIGdlbmVyYXRvciB0aGF0IHdpbGwgZ2VuZXJhdGUgdGhlIG91dHB1dCBvZiB0aGUgCi0gICAgIyBjb21tYW5kIGVpdGhlciBhcyBhIHN0cmluZywgb3IgYnkgaXRlcmF0aW5nIG92ZXIgYSByZXR1cm5lZAotICAgICMgaXRlcmFibGUuICBUaGlzIHdheSwgYSBzdWJjb21tYW5kIGNhbiByZXR1cm4gYW4gaXRlcmFibGUgdG8gCi0gICAgIyBsYXppbHkgZXZhbHVhdGUgbGFyZ2UgYW1vdW50cyBvZiBvdXRwdXQKLSAgICAjCi0gICAgZGVmIGdlbmVyYXRlX2xpbmVfb3V0cHV0KHNlbGYsIGxpbmUsIGRvbnRfYXNrKToKLSAgICAgICAgd2hpbGUgbGluZToKLSAgICAgICAgICAgIHN1YmxpbmVfaW5kZXggPSBzZWxmLmZpbmRfd2l0aF9xdW90aW5nKGxpbmUsICc7JykKLSAgICAgICAgICAgIGlmIHN1YmxpbmVfaW5kZXggPCAwOgotICAgICAgICAgICAgICAgIHN1YmxpbmVfaW5kZXggPSBsZW4obGluZSkKLSAgICAgICAgICAgIHN1YmxpbmUgPSBsaW5lWzpzdWJsaW5lX2luZGV4XQotICAgICAgICAgICAgbGluZSA9IGxpbmVbc3VibGluZV9pbmRleCsxOl0KLSAgICAgICAgICAgIHJldF92YWwgPSBzZWxmLmhhbmRsZV9zaW5nbGVfbGluZShzdWJsaW5lKQotICAgICAgICAgICAgY250ID0gMQotICAgICAgICAgICAgdG90YWxfY250ID0gMAotCi0gICAgICAgICAgICAoY29sX3dpZHRoLCBzY3JlZW5fbGVuZ3RoKSA9IHNlbGYucHAuZ2V0X3Rlcm1pbmFsX3NpemUoKQotICAgICAgICAgICAgaWYgdHlwZShzZWxmLmxlbmd0aCkgPT0gaW50OgotICAgICAgICAgICAgICAgIHNjcmVlbl9sZW5ndGggPSBzZWxmLmxlbmd0aAotCi0gICAgICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLmdlbmVyYXRlX2NvbW1hbmRfb3V0cHV0KHJldF92YWwpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBkb250X2FzazoKLSAgICAgICAgICAgICAgICAgICAgaW5jciA9IDEgKyAobWF4KChsZW4oaXRlbS5yc3RyaXAoKSkgLSAxKSwgMCkgLyBjb2xfd2lkdGgpCi0gICAgICAgICAgICAgICAgICAgIGlmIHNjcmVlbl9sZW5ndGggYW5kIGNudCArIGluY3IgPj0gc2NyZWVuX2xlbmd0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhd19pbnB1dCgnLS0gaGl0IHJldHVybiB0byBjb250aW51ZSwgJXMpIC0tJyAlIHRvdGFsX2NudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNudCA9IDAKLSAgICAgICAgICAgICAgICAgICAgY250ICs9IGluY3IKLSAgICAgICAgICAgICAgICAgICAgdG90YWxfY250ICs9IGluY3IKLSAgICAgICAgICAgICAgICB5aWVsZCBpdGVtCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaGFuZGxlX211bHRpcGFydF9saW5lCi0gICAgIwotICAgICMgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IGhhbmRsZXIgdGhhdCBzaG91bGQgcHJpbnQKLSAgICAjCi0gICAgZGVmIGhhbmRsZV9tdWx0aXBhcnRfbGluZShzZWxmLCBsaW5lKToKLSAgICAgICAgcGlwZV9jbWRzID0gTm9uZQotICAgICAgICByZWRpcmVjdF90YXJnZXQgPSBOb25lCi0gICAgICAgIG91dHB1dCA9IE5vbmUKLQotICAgICAgICAjIHBhdHRlcm4gaXM6Ci0gICAgICAgICMgc2luZ2xlIGxpbmUgWzsgc2luZ2xlIGxpbmVdKiBbfCAuLi5dIFs+IHtjb25mfGZ0cHxodHRwfV0KLQotICAgICAgICAjIGZpcnN0IHRha2Ugb2ZmIHRoZSBwb3RlbnRpYWwgcmVkaXJlY3QgcGFydCB0aGVuIHRoZSBwaXBlIGNtZHMKLSAgICAgICAgcmVkaXJlY3RfaW5kZXggPSBzZWxmLmZpbmRfd2l0aF9xdW90aW5nKGxpbmUsICc+JywgVHJ1ZSkKLSAgICAgICAgaWYgcmVkaXJlY3RfaW5kZXggPj0gMDoKLSAgICAgICAgICAgIHJlZGlyZWN0X3RhcmdldCA9IGxpbmVbcmVkaXJlY3RfaW5kZXgrMTpdLnN0cmlwKCkKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lWzpyZWRpcmVjdF9pbmRleF0uc3RyaXAoKQotICAgICAgICBwaXBlX2luZGV4ID0gc2VsZi5maW5kX3dpdGhfcXVvdGluZyhsaW5lLCAnfCcpCi0gICAgICAgIGlmIHBpcGVfaW5kZXggPj0gMDoKLSAgICAgICAgICAgIHBpcGVfY21kcyA9IGxpbmVbcGlwZV9pbmRleCsxOl0uc3RyaXAoKQotICAgICAgICAgICAgbGluZSA9IGxpbmVbOnBpcGVfaW5kZXhdLnN0cmlwKCkKLSAgICAgICAgIyByZW1haW5pbmcgdGV4dCBpcyBzaW5nbGUgbGluZXMgc2VwYXJhdGVkIGJ5ICc7JyAtIGhhbmRsZSB0aGVtCi0gICAgICAgIG91dHB1dCA9IHNlbGYuZ2VuZXJhdGVfbGluZV9vdXRwdXQobGluZSwgcGlwZV9jbWRzIG9yIHJlZGlyZWN0X3RhcmdldCkKLQotICAgICAgICAjIG5vdyBvdXRwdXQgZXZlcnl0aGluZwotICAgICAgICBpZiBwaXBlX2NtZHMgb3IgcmVkaXJlY3RfdGFyZ2V0OgotICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5oYW5kbGVfcGlwZV9hbmRfcmVkaXJlY3QocGlwZV9jbWRzLCByZWRpcmVjdF90YXJnZXQsIG91dHB1dCkKLQotICAgICAgICBpZiBvdXRwdXQgIT0gTm9uZToKLSAgICAgICAgICAgIGZvciBsaW5lIGluIG91dHB1dDoKLSAgICAgICAgICAgICAgICBwcmludCBsaW5lLnJzdHJpcCgpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY3Bfd2F0Y2gKLSAgICAjCi0gICAgZGVmIGNwX3dhdGNoKHNlbGYsIHdvcmRzLCB0ZXh0LCBjb21wbGV0aW9uX2NoYXIpOgotICAgICAgICBpZiBjb21wbGV0aW9uX2NoYXIgPT0gb3JkKCc/Jyk6Ci0gICAgICAgICAgICBpZiBsZW4od29yZHMpID4gMToKLSAgICAgICAgICAgICAgICBjb21tYW5kLmRvX2NvbW1hbmRfY29tcGxldGlvbl9oZWxwKHdvcmRzWzE6XSwgdGV4dCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5wcmludF9jb21wbGV0aW9uX2hlbHAoc2VsZi5oZWxwX3NwbGFzaChbXSwgdGV4dCkpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAxOgotICAgICAgICAgICAgaXRlbXMgPSBzZWxmLmNvbW1hbmRzX2Zvcl9jdXJyZW50X21vZGVfc3RhcnRpbmdfd2l0aCh0ZXh0KQotICAgICAgICAgICAgcmV0dXJuIHV0aWYuYWRkX2RlbGltKGl0ZW1zLCAnICcpCi0gICAgICAgIGVsc2U6ICAgCi0gICAgICAgICAgICByZXR1cm4gY29tbWFuZC5kb19jb21tYW5kX2NvbXBsZXRpb24od29yZHNbMTpdLCB0ZXh0KQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGRvX3dhdGNoCi0gICAgIyAgIG9ubHkgY2FsbGVkIHRvIGRpc3BsYXkgaGVscAotICAgICMKLSAgICBkZWYgZG9fd2F0Y2goc2VsZiwgd29yZHMpOgotICAgICAgICByZXR1cm4gJ3dhdGNoOiByZXBlYXQgaW5kaWNhdGVkIGNvbW1hbmQgYWZ0ZXIgd2F0Y2gga2V5d29yZCcKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBoYW5kbGVfd2F0Y2hfY29tbWFuZAotICAgICMKLSAgICAjIGhhbmRsZSB0aGlzIGhlcmUgYmVjYXVzZSB0aGlzIGlzIGEgQ0xJLW9ubHkgY29tbWFuZAotICAgICMgTE9PSyEgVGhpcyBjb3VsZCBiZSB1c2luZyBjdXJzZXMsIGJ1dCB0aGF0IGhhcyBzb21lIGNvbXBsaWNhdGlvbnMgd2l0aCAKLSAgICAjIHBvdGVudGlhbGx5IG1lc3NpbmcgdXAgdGhlIHRlcm1pbmFsLiAgVGhpcyBpcyBjaGVhcCBidXQgZG93bnNpZGUKLSAgICAjIGlzIGl0IHVzZXMgdXAgdGhlIHNjcm9sbGJ1ZmZlci4uLgotICAgICMKLSAgICBkZWYgaGFuZGxlX3dhdGNoX2NvbW1hbmQoc2VsZiwgbGluZSk6Ci0gICAgICAgICMKLSAgICAgICAgd29yZHMgPSBsaW5lLnNwbGl0KCkKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3ludGF4X21zZygnd2F0Y2g6IGNvbW1hbmQgdG8gd2F0Y2ggbWlzc2luZycpCi0gICAgICAgICAgICAKLSAgICAgICAgaWYgbGVuKHdvcmRzKSBhbmQgd29yZHNbMF0gPT0gJ3dhdGNoJzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVycm9yX21zZygnd2F0Y2ggY29tbWFuZCBub3Qgc3VwcG9ydGVkIGZvciB3YXRjaCcpCi0KLSAgICAgICAgd2hpbGUgVHJ1ZTogIyBtdXN0IGNvbnRyb2wtQyB0byBnZXQgb3V0IG9mIHRoaXMKLSAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuaGFuZGxlX211bHRpcGFydF9saW5lKGxpbmUpIAotICAgICAgICAgICAgaWYgb3V0cHV0OgotICAgICAgICAgICAgICAgIG9zLnN5c3RlbSgiY2xlYXIiKQotICAgICAgICAgICAgICAgIHByaW50ICJFeGVjdXRpbmcgJXMgIiAlIGxpbmUKLSAgICAgICAgICAgICAgICBwcmludCBvdXRwdXQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgIkV4ZWN1dGluZyAlcyAiICUgbGluZQotICAgICAgICAgICAgdGltZS5zbGVlcCgyKQotCi0gICAgIwotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBsb29wCi0gICAgIyAgdGhpcyBpcyBqdXN0IGRpc3BhdGNoaW5nIHRoZSBjb21tYW5kIGFuZCBoYW5kbGluZyBlcnJvcnMKLSAgICAjCi0gICAgZGVmIGxvb3Aoc2VsZik6Ci0gICAgICAgIGNvbW1hbmQuYWN0aW9uX2ludm9rZSgnd2FpdC1mb3ItY29udHJvbGxlcicsICg1KSkKLQotICAgICAgICBpZiBzZWxmLmNvbnRyb2xsZXI6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdmVyc2lvbl91cmwgPSAnaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL3ZlcnNpb24nICUgc2VsZi5jb250cm9sbGVyCi0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IHNlbGYucmVzdF9zaW1wbGVfcmVxdWVzdF90b19kaWN0KHZlcnNpb25fdXJsKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gW3snY29udHJvbGxlcicgOiAnUkVTVCBBUEkgRkFJTFVSRVxuJ31dCi0KLSAgICAgICAgICAgIHByaW50ICJkZWZhdWx0IGNvbnRyb2xsZXI6ICVzLCAlcyIgJSAoc2VsZi5jb250cm9sbGVyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvblswXVsnY29udHJvbGxlciddKQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyB2bnMgZmVhdHVyZSBlbmFibGVtZW50LgotICAgICAgICAgICAgIyAgd2hlbiB2bnMgaXMgZW5hYmxlZCwgY2FsbCBhIGluaXQgcHJvY2VkdXJlCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICBpZiBvbm9zID09IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5uZXR2aXJ0X2ZlYXR1cmVfZW5hYmxlZCgpCi0KLSAgICAgICAgd2hpbGUgc2VsZi5ydW46Ci0gICAgICAgICAgICAjIEdldCBjb21tYW5kIGxpbmUgLSB0aGlzIHdpbGwgdXNlIHRoZSBjb21tYW5kIGNvbXBsZXRpb24gYWJvdmUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjcmVzdF90b19tb2RlbC52YWxpZGF0ZV9zd2l0Y2goKQotICAgICAgICAgICAgICAgIHVybF9jYWNoZS5jbGVhcl9jYWNoZWRfdXJscygpCi0gICAgICAgICAgICAgICAgbGluZSA9IHJhd19pbnB1dChzZWxmLnByb21wdCkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmJhdGNoOgotICAgICAgICAgICAgICAgICAgICBwcmludCBsaW5lCi0gICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgnXndhdGNoICguKikkJywgbGluZSkgCi0gICAgICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfd2F0Y2hfY29tbWFuZChtLmdyb3VwKDEpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX211bHRpcGFydF9saW5lKGxpbmUpCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5jb21wbGV0aW9uX3Jlc2V0KCkKLSAgICAgICAgICAgICAgICBwcmludCAiXG5JbnRlcnJ1cHQuIgotICAgICAgICAgICAgZXhjZXB0IEVPRkVycm9yOgotICAgICAgICAgICAgICAgIHByaW50ICJcbkV4aXRpbmcuIgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZXhjZXB0IHVybGxpYjIuSFRUUEVycm9yLCBlOgotICAgICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUpCi0gICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5lcnJvcl9tc2coIiVzIiAlIHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKSkKLSAgICAgICAgICAgIGV4Y2VwdCB1cmxsaWIyLlVSTEVycm9yLCBlOgotICAgICAgICAgICAgICAgIHByaW50IHNlbGYuZXJyb3JfbXNnKCJjb21tdW5pY2F0aW5nIHdpdGggUkVTVCBBUEkgc2VydmVyIG9uICVzICIgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0gTmV0d29yayBlcnJvcjogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5jb250cm9sbGVyLCBlLnJlYXNvbikpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHByaW50ICJcbkVycm9yIHJ1bm5pbmcgY29tbWFuZCAnJXMnLlxuIiAlIGxpbmUKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnIG9yIHNlbGYuZGVidWdfYmFja3RyYWNlOgotICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEluaXRpYWxpemF0aW9uIGNyYXp5bmVzcyB0byBtYWtlIGl0IHdvcmsgYWNyb3NzIHBsYXRmb3Jtcy4gTWFueSBwbGF0Zm9ybXMgZG9uJ3QgaW5jbHVkZQotIyBHTlUgcmVhZGxpbmUgKGUuZy4gbWFjIG9zIHgpIGFuZCB3ZSBuZWVkIHRvIGNvbXBlbnNhdGUgZm9yIHRoaXMKLQotdHJ5OgotICAgIGltcG9ydCByZWFkbGluZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHB5cmVhZGxpbmUgYXMgcmVhZGxpbmUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHByaW50ICJDYW4ndCBmaW5kIGFueSByZWFkbGluZSBlcXVpdmFsZW50IC0gYWJvcnRpbmcuIgotZWxzZToKLSAgICBpZiAnbGliZWRpdCcgaW4gcmVhZGxpbmUuX19kb2NfXzoKLSAgICAgICAgIyBuZWVkZWQgZm9yIE1hYywgcGxlYXNlIGZpeCBBcHBsZQotICAgICAgICByZWFkbGluZS5wYXJzZV9hbmRfYmluZCAoImJpbmQgXkkgcmxfY29tcGxldGUiKQotICAgIGVsc2U6Ci0gICAgICAgIHJlYWRsaW5lLnBhcnNlX2FuZF9iaW5kKCJ0YWI6IGNvbXBsZXRlIikKLSAgICAgICAgcmVhZGxpbmUucGFyc2VfYW5kX2JpbmQoIj86IHBvc3NpYmxlLWNvbXBsZXRpb25zIikKLQotICAKLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUnVuIHRoZSBzaGVsbAotCi1kZWYgbWFpbigpOgotICAgIGdsb2JhbCBjbGkKLSAgICAjIFVuY29tbWVudCB0aGUgbmV4dCB0d28gbGluZXMgdG8gZW5hYmxlIHJlbW90ZSBkZWJ1Z2dpbmcgd2l0aCBQeURldgotICAgICMgTE9PSyEgU2hvdWxkIGhhdmUgbG9naWMgaGVyZSB0aGF0IGVuYWJsZXMvZGlzYWJsZXMgdGhlIHB5ZGV2ZCBzdHVmZgotICAgICMgYXV0b21hdGljYWxseSB3aXRob3V0IHJlcXVpcmluZyB1bmNvbW1lbnRpbmcgKGFuZCwgbW9yZSBpbXBvcnRhbnRseSwKLSAgICAjIHJlbWVtYmVyaW5nIHRvIHJlY29tbWVudCBiZWZvcmUgY29tbWl0dGluZykuCi0gICAgIyAoZS5nLiBjaGVja2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBzb21ldGhpbmcgbGlrZSB0aGF0KQotICAgICNweXRob25fcGF0aCA9IG9zLmVudmlyb24uZ2V0KCdQWVRIT05QQVRIJywgJycpCi0gICAgI2lmICdweWRldi5kZWJ1ZycgaW4gcHl0aG9uX3BhdGg6Ci0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgcHlkZXZkCi0gICAgICAgIHB5ZGV2ZC5zZXR0cmFjZSgpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgcGFzcwotCi0gICAgIyBQcm9jZXNzICctLWluaXQnIGFyZ3VtZW50IHNpbmNlIGl0ICBnYXRlcyBwcm9ncmVzcyB0byByZXN0IG9mIHByb2Nlc3NpbmcKLSAgICAjIGFzIHRoaXMgaXMgYSBzcGVjaWFsIGFyZ3VtZW50LCBpdCBpcyByZXF1aXJlZCB0byBiZSBmaXJzdCBhcmd1bWVudCAoaWYgdXNlZCkKLSAgICBjaGVja19yZWFkeV9maWxlID0gVHJ1ZQotICAgIGlmIGxlbihzeXMuYXJndikgPiAxOgotICAgICAgICBpZiBzeXMuYXJndlsxXSA9PSAnLS1pbml0JzoKLSAgICAgICAgICAgIGNoZWNrX3JlYWR5X2ZpbGUgPSBGYWxzZQotICAgIAotICAgICMgRG8gbm90IHN0YXJ0IENMSSB0aWxsIHRoZSBzeXN0ZW1uIGlzIHJlYWR5Ci0gICAgIyAoYWxsb3cgdXNlciB0byBeQyBhbmQgZ2V0IHRvIFNETlNoIGZvciBkZWJ1ZyBldGMpCi0gICAgbm90X3JlYWR5X2ZpbGUgPSAnL29wdC9zZG5wbGF0Zm9ybS9ydW4vc3RhcnRpbmcnCi0gICAgaWYgY2hlY2tfcmVhZHlfZmlsZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhub3RfcmVhZHlfZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihub3RfcmVhZHlfZmlsZSwgInIiKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGYucmVhZCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBsZW4obWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ0NvbnRyb2xsZXIgbm90IHlldCByZWFkeSAuLi4gd2FpdGluZyA1IHNlYycKLSAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCg1KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG5vdF9yZWFkeV9maWxlKToKLSAgICAgICAgICAgICAgICByZXNwID0gcmF3X2lucHV0KCdDb250cm9sbGVyIGlzIG5vdCB5ZXQgcmVhZHkuIERvIHlvdSBzdGlsbCB3YW50IHRvIGNvbnRpbnVlIHRvIHRoZSBDTEk/IFtuXScpCi0gICAgICAgICAgICAgICAgaWYgcmVzcCBhbmQgInllcyIuc3RhcnRzd2l0aChyZXNwLmxvd2VyKCkpOgotICAgICAgICAgICAgICAgICAgICBwcmludCAnQ29udGludWluZyB3aXRoIENMSSBkZXNwaXRlIGluaXRpYWxpemF0aW9uIGVycm9yIC4uLicKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmludCAnQWJvcnRpbmcgQ29udHJvbGxlciBDTEkgbG9naW4uJwotICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgIyBTdGFydCBDTEkKLSAgICBjbGkgPSBTRE5TaCgpCi0gICAgY2xpLmluaXQoKQotICAgIGNsaS5sb29wKCkgICAgICAgICAgICAgIAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9jbGltb2RlbGluZm8ucHkgYi9jbGkvY2xpL2NsaW1vZGVsaW5mby5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDM4ZWRhOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2NsaW1vZGVsaW5mby5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4MzMgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTAsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIyAgc2Ruc2ggLSBUaGUgQ29udHJvbGxlciBTaGVsbAotIyAgbW9kdWxlOiBjbGltb2RlbGluZm8ucHkKLSMKLSMgVGhpcyBtb2R1bGUgY29udGFpbnMgY2xhc3NlcyB0aGF0IGhlbHAgZmlsbCBvdXQgbW9yZSBvZiB0aGUgQ0xJJ3MgbW9kZWwKLSMgdGhpcyB3aWxsIGRvIGEgbWVyZ2Ugd2l0aCB0aGUgbW9kZWxfaW5mb19saXN0IG9iamVjdCB0aGF0IGlzIGdlbmVyYXRlZCAKLSMgZGlyZWN0bHkgZnJvbSB0aGUgZGphbmdvIG1vZGVscwotIwotIyB0aGUgbW90aXZhdGlvbiBpcyB0aGF0IGNvbW1hbmRzL29iamVjdHMgdGhhdCBhcmUgbm90IGJhc2VkIGluIHRoZQotIyBtb2RlbCBzaG91bGQgYmUgYWJsZSB0byB0YWtlIGFkdmFudGFnZSBvZiBmdW5jdGlvbnMgbGlrZSBwcmV0dHlwcmludAotIyBvciBjb21wbGV0aW9uCi0jCi0jIGFsc28sIHRoaXMgbGV0cyB1cyBhZGQgaW5mbyB0byB0aGUgbW9kZWwgdGhhdCBpcyBDTEktc3BlY2lmaWMuCi0jIEluIHRoYXQgcmVzcGVjdCwgaXQgaXMgYSBsb3QgbGlrZSBhIGRqYW5nbyBodG1sIHZpZXcgd2hlcmUgdGhlCi0jIGNvbHVtbnMgYXJlIHByZXNlbnRlZCBpbiBhIGNlcnRhaW4gb3JkZXIgaW4gdGFibGVzLCBhbmQgYXR0cmlidXRlcwotIyBhcmUgZ3JvdXBlZCB0b2dldGhlciBpbiBmaWVsZHNldHMKLQotIyBmaWVsZC1vcmRlcmluZ3MgbXVzdCBoYXZlIGEgJ2RlZmF1bHQnIGVudHJ5IHZhcmlhbnRzIGZvciBicmllZi92ZXJib3NlCi0KLSMgTE9PSyEKLSMgLSBzb3J0IGhpbnRzIGZvciBzaG93IHJ1bm5pbmcgCi0jIC0ganVzdGlmaWNhdGlvbiBmb3IgY29sdW1ucwotIyAtIGhhdmUgcHJvcGVyIGNsYXNzIGZvciBvYmpfdHlwZV9pbmZvID8KLQotaW1wb3J0IG1vZGVsX2luZm9fbGlzdCAjIGxvYWQgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1vZGVsIGRlZmluaXRpb25zIGZyb20gdGhlIGNvbnRyb2xsZXIKLWltcG9ydCBiYXNlNjQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCByZQotaW1wb3J0IGRvY3Rlc3QKLQotb25vcz0xCi1jbGFzcyBDbGlNb2RlbEluZm8oKTogCi0gICAgIyBzbyB0aGUgbW9kZWwgaXMgYWNjZXNzaWJsZSBmcm9tIHRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25zCi0gICAgc2luZ2xldG9uID0gTm9uZQotCi0KLSAgICBkamFuZ29fbW9kZWxfZGljdCA9IHt9Ci0gICAgY29tcGxldGVfb2JqX3R5cGVfaW5mb19kaWN0ID0ge30KLQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBDbGlNb2RlbEluZm8uc2luZ2xldG9uID0gc2VsZgotICAgICAgICBzZWxmLmRqYW5nb19tb2RlbF9kaWN0ID0gZGljdChtb2RlbF9pbmZvX2xpc3QubW9kZWxfaW5mb19kaWN0KQotICAgICAgICBzZWxmLmNvbXBsZXRlX29ial90eXBlX2luZm9fZGljdCA9IGRpY3Qoc2VsZi5kamFuZ29fbW9kZWxfZGljdCkKLQotICAgICAgICAjIENsZWFuIHVwIHRoZSB0YWJsZXMgZm9yIHRoZSB1c2VyIGZpZWxkCi0KLSAgICAgICAgIyBtZXJnZSBmcm9tIGFkZGl0aW9uYWxfbW9kZWxfaW5mb19kaWN0Ci0KLSAgICAgICAgIyBMT09LISBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGlzIGJ5IGltcGxlbWVudGluZyBhIHJlY3Vyc2l2ZSBkZWVwIGNvcHkvdXBkYXRlCi0gICAgICAgIGZvciBvYmpfdHlwZSBpbiBzZWxmLmFkZGl0aW9uYWxfbW9kZWxfaW5mb19kaWN0LmtleXMoKToKLSAgICAgICAgICAgICMgaWYgYSBuZXcgb2JqX3R5cGUsIGp1c3QgY29weSBpdAotICAgICAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYuY29tcGxldGVfb2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgICAgIHNlbGYuY29tcGxldGVfb2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXSA9IGRpY3Qoc2VsZi5hZGRpdGlvbmFsX21vZGVsX2luZm9fZGljdFtvYmpfdHlwZV0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgaWYgYW4gZXhpc3Rpbmcgb2JqX3R5cGUsIHRoZW4gZ28gdGhyb3VnaCBrZXlzICh3ZSBrbm93IGl0J3MgYSBkaWN0KQotICAgICAgICAgICAgICAgIGZvciBvYmpfaW5mbyBpbiBzZWxmLmFkZGl0aW9uYWxfbW9kZWxfaW5mb19kaWN0W29ial90eXBlXS5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvYmpfaW5mbyBpbiBzZWxmLmNvbXBsZXRlX29ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvYmpfaW5mbyA9PSAnZmllbGQtb3JkZXJpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbXBsZXRlX29ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bb2JqX2luZm9dID0gZGljdChzZWxmLmFkZGl0aW9uYWxfbW9kZWxfaW5mb19kaWN0W29ial90eXBlXVtvYmpfaW5mb10pCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hhbGxvdyBjb3B5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21wbGV0ZV9vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdW29ial9pbmZvXSA9IHNlbGYuYWRkaXRpb25hbF9tb2RlbF9pbmZvX2RpY3Rbb2JqX3R5cGVdW29ial9pbmZvXQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2JqX2luZm8gPT0gImZpZWxkcyI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfZmllbGRzID0gc2VsZi5jb21wbGV0ZV9vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGxfZmllbGRzID0gc2VsZi5hZGRpdGlvbmFsX21vZGVsX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJvdGggb2JqZWN0cyBoYXZlIGZpZWxkcyAtIGJlIGludGVsbGlnZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gYWRkbF9maWVsZHMua2V5cygpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZiBpbiBtb2RlbF9maWVsZHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9maWVsZHNbZl0gPSBkaWN0KGFkZGxfZmllbGRzW2ZdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGF0dHIgaW4gYWRkbF9maWVsZHNbZl0ua2V5cygpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX2ZpZWxkc1tmXVthdHRyXSA9IGFkZGxfZmllbGRzW2ZdW2F0dHJdCi0gICAgICAgICNwcmludCBzZWxmLmNvbXBsZXRlX29ial90eXBlX2luZm9fZGljdAotCi0gICAgZGVmIGFkZF90eXBlX2luZm8oc2VsZiwgbmFtZSwgdHlwZV9pbmZvKToKLSAgICAgICAgc2VsZi5jb21wbGV0ZV9vYmpfdHlwZV9pbmZvX2RpY3RbbmFtZV0gPSB0eXBlX2luZm8KLQotICAgIGRlZiBnZXRfY29tcGxldGVfb2JqX3R5cGVfaW5mb19kaWN0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5jb21wbGV0ZV9vYmpfdHlwZV9pbmZvX2RpY3QKLQotICAgIGRlZiBnZXRfZmllbGRzX3RvX3ByaW50KHNlbGYsIG9ial90eXBlLCBmaWVsZF9vcmRlcmluZz0nZGVmYXVsdCcpOgotICAgICAgICBmaWVsZHNfdG9fcHJpbnQgPSBbXQotICAgICAgICBvYmpfdHlwZV9pbmZvID0gc2VsZi5jb21wbGV0ZV9vYmpfdHlwZV9pbmZvX2RpY3QuZ2V0KG9ial90eXBlLCBOb25lKQotICAgICAgICBpZiBvYmpfdHlwZV9pbmZvOgotICAgICAgICAgICAgaWYgJ2ZpZWxkLW9yZGVyaW5ncycgaW4gb2JqX3R5cGVfaW5mbzoKLSAgICAgICAgICAgICAgICBmaWVsZHNfdG9fcHJpbnQgPSBvYmpfdHlwZV9pbmZvWydmaWVsZC1vcmRlcmluZ3MnXS5nZXQoZmllbGRfb3JkZXJpbmcsIFtdKQotICAgICAgICAgICAgaWYgbGVuKGZpZWxkc190b19wcmludCkgPT0gMDogIyBlaXRoZXIgbm8gZmllbGQtb3JkZXJpbmdzIG9yIGNvdWxkbid0IGZpbmQgc3BlY2lmaWMKLSAgICAgICAgICAgICAgICBmaWVsZHNfdG9fcHJpbnQgPSBvYmpfdHlwZV9pbmZvWydmaWVsZHMnXS5rZXlzKCkKLSAgICAgICAgcmV0dXJuIGZpZWxkc190b19wcmludAotCi0gICAgZGVmIGdldF9maWVsZF9pbmZvKHNlbGYsIG9ial90eXBlLCBmaWVsZF9uYW1lKToKLSAgICAgICAgb2JqX3R5cGVfaW5mbyA9IHNlbGYuY29tcGxldGVfb2JqX3R5cGVfaW5mb19kaWN0LmdldChvYmpfdHlwZSwgTm9uZSkKLSAgICAgICAgcmV0dXJuIG9ial90eXBlX2luZm9bJ2ZpZWxkcyddLmdldChmaWVsZF9uYW1lLCBOb25lKQotCi0gICAgIyBMT09LISBSZWZhY3RvciAtIFNob3VsZCB3ZSBtZXJnZSB0aGlzIHdpdGggbW9kZWxfaW5mb19saXN0PwotICAgICNpZiAob25vcyA9PSAxKToKLSAgICAgICAgIyBkbyBub3RoaW5nCi0gICAgIyAgICBhZGRpdGlvbmFsX21vZGVsX2luZm9fZGljdCA9IHt9Ci0gICAgI2VsaWYgKG9ub3M9PTIpOgotICAgIGlmIChvbm9zID09IDEpOgotICAgICAgICBhZGRpdGlvbmFsX21vZGVsX2luZm9fZGljdCA9IHsKLSAgICAgICAgJ3N3aXRjaGVzJyA6IHsKLSAgICAgICAgICAgICMgc3dpdGNoZXMgYXJlIG5vdyBkaXJlY3RseSBmZXRjaGVkIHZpYSByZXN0IGFwaS4KLSAgICAgICAgICAgICMgJ2hhc19yZXN0X21vZGVsJyBpc24ndCBzZXQKLSAgICAgICAgICAgICMgZm9yIHRoaXMgdGFibGUuCi0gICAgICAgICAgICAjIFhYWCBwZXJoYXBzIHRoZXNlIHR5cGVzIG9mIGRlc2NyaXB0aW9ucyBuZWVkIHRvIGJlCi0gICAgICAgICAgICAjIGluIGEgZmlsZSBvdGhlciB0aGFuIGNsaW1vZGVsaW5mbz8KLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3VzZXItY29uZmlnJywKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgJ3VybCcgICAgICAgICAgICAgOiAnc3dpdGNoZXMnLAotICAgICAgICAgICAgJ2NvbmZpZy1vYmotdHlwZScgOiAnc3dpdGNoLWNvbmZpZycsCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICdkcGlkJyAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnOiAzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdhY3RpdmUnICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnY29yZS1zd2l0Y2gnICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdjb25uZWN0ZWQtc2luY2UnICAgIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2NhcGFiaWxpdGllcycgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdhY3Rpb25zJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnaXAtYWRkcmVzcycgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3NvY2tldC1hZGRyZXNzJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdidWZmZXJzJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnY29udHJvbGxlcicgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0YWJsZXMnICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnc3dpdGNoLWFsaWFzJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCcgOiAnU3dpdGNoIGFsaWFzIGZvciBEUElEJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0dW5uZWxzJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3R1bm5lbC1zdXBwb3J0ZWQnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndHVubmVsLXRlcm1pbmF0aW9uJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0dW5uZWwtYWN0aXZlJyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RwLWRlc2MnICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnaHctZGVzYycgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzdy1kZXNjJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3NlcmlhbC1udW0nICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAnaW50ZXJmYWNlcycgOiB7Ci0gICAgICAgICAgICAjIHN3aXRjaGVzIGFyZSBub3cgZGlyZWN0bHkgZmV0Y2hlZCB2aWEgcmVzdCBhcGkuCi0gICAgICAgICAgICAjICdoYXNfcmVzdF9tb2RlbCcgaXNuJ3Qgc2V0Ci0gICAgICAgICAgICAjIGZvciB0aGlzIHRhYmxlLgotICAgICAgICAgICAgIyBYWFggcGVyaGFwcyB0aGVzZSB0eXBlcyBvZiBkZXNjcmlwdGlvbnMgbmVlZCB0byBiZQotICAgICAgICAgICAgIyBpbiBhIGZpbGUgb3RoZXIgdGhhbiBjbGltb2RlbGluZm8/Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgICAgICd1cmwnICAgICAgICAgICAgIDogJ3N3aXRjaGVzJywKLSAgICAgICAgICAgICdjb25maWctb2JqLXR5cGUnIDogJ3N3aXRjaC1pbnRlcmZhY2UtY29uZmlnJywKLQotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnOiA0OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ2NvbXBvdW5kLWtleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscF90ZXh0JyA6ICcjIWRwaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcG91bmRfa2V5X2ZpZWxkcyc6IFsgJ2RwaWQnIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkcGlkJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ3R5cGUnICAgICAgICAgICA6ICdGb3JlaWduS2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ3JlbF9maWVsZF9uYW1lJyA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ3JlbF9vYmpfdHlwZScgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ25hbWUnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ251bWJlcicgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2NvbmZpZycgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3N0YXRlJyAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2N1cnJlbnQtZmVhdHVyZXMnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2FkdmVydGlzZWQtZmVhdHVyZXMnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3N1cHBvcnRlZC1mZWF0dXJlcycgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3BlZXItZmVhdHVyZXMnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICdzd2l0Y2gtY29uZmlnJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnIDogJ2RlYnVnLW9ubHknLAotICAgICAgICB9LAotCi0KLSAgICAgICAgJ3R1bm5lbC1jb25maWcnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAndXNlci1jb25maWcnLAotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAnZGlzcGxheScsCi0gICAgICAgICAgICAndXJsJyAgICAgICAgICAgICA6ICd0dW5uZWwtY29uZmlnJywKLSAgICAgICAgICAgICdjb25maWctb2JqLXR5cGUnIDogJ3R1bm5lbC1jb25maWcnLAotCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAndHVubmVsLWlkJyAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnOiAzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICdwb2xpY3ktY29uZmlnJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3VzZXItY29uZmlnJywKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgJ3VybCcgICAgICAgICAgICAgOiAncG9saWN5LWNvbmZpZycsCi0gICAgICAgICAgICAnY29uZmlnLW9iai10eXBlJyA6ICdwb2xpY3ktY29uZmlnJywKLQotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ3BvbGljeS1pZCcgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJzogMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmltYXJ5X2tleSc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAnc3dpdGNoLWFsaWFzJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3VzZXItY29uZmlnJywKLSAgICAgICAgICAgICdjYXNjYWRlX2RlbGV0ZScgIDogVHJ1ZSwKLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAnc3dpdGNoLWludGVyZmFjZS1jb25maWcnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAnZGVidWctb25seScsCi0gICAgICAgICAgICAnY2FzY2FkZV9kZWxldGUnICA6IFRydWUsCi0KLSAgICAgICAgICAgICdmaWVsZHMnICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICdicm9hZGNhc3QnICAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICduYW1lJyAgICAgICAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdtb2RlJyAgICAgICAgICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAnaG9zdC1hbGlhcycgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICd1c2VyLWNvbmZpZycsCi0gICAgICAgICAgICAnY2FzY2FkZV9kZWxldGUnICA6IFRydWUsCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0KLSAgICAgICAgJ2xpbmsnIDogeyAKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3N3aXRjaCcsCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICdsaW5rLXR5cGUnICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAncG9ydCcgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdkZWJ1Zy1vbmx5JywKLQotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ251bWJlcicgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2NvbmZpZycgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3N0YXRlJyAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2N1cnJlbnQtZmVhdHVyZXMnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2FkdmVydGlzZWQtZmVhdHVyZXMnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3N1cHBvcnRlZC1mZWF0dXJlcycgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3BlZXItZmVhdHVyZXMnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotICAgICAgICAnc3dpdGNoLWludGVyZmFjZXMnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgOiAnc3dpdGNoJywKLQotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ0lkeCcgICAgICAgICAgICAgICAgIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdDaGFyRmllbGQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbWFyeV9rZXknOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3JtYXQncyBvdXQgb2YgdGhlIHNvcnRpbmcgYnVzaW5lc3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ3NvcnQnIDogJ3RhaWwtaW50ZWdlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnc3dpdGNoJyAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbmFtZScgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJyA6IDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2hhcmR3YXJlLWFkZHJlc3MnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2NvbmZpZycgICAgICAgICAgICAgIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzdGF0ZScgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzdHAtc3RhdGUnICAgICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnY3VycmVudC1mZWF0dXJlcycgICAgOiB7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2FkdmVydGlzZWQtZmVhdHVyZXMnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3N1cHBvcnRlZC1mZWF0dXJlcycgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3BlZXItZmVhdHVyZXMnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3JlY2VpdmVCeXRlcycgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3JlY2VpdmVQYWNrZXRzJyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3JlY2VpdmVFcnJvcnMnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3RyYW5zbWl0Qnl0ZXMnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3RyYW5zbWl0UGFja2V0cycgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3RyYW5zbWl0RXJyb3JzJyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgJ2NvbnRyb2xsZXJfc3dpdGNoZXMnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAndXNlci1jb25maWcnLAotICAgICAgICAgICAgCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAnZHBpZCcgOiB7ICdwcmltYXJ5X2tleScgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAKLSAgICAgICAgJ2hvc3QtY29uZmlnJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3Nob3cnLAotICAgICAgICAgICAgJ3VybCcgICAgICAgICAgICAgOiAnZGV2aWNlJywKLQotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ0lkeCcgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdDaGFyRmllbGQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdtYWMnICAgICAgICAgICAgICAgIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnOiAxNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndmVuZG9yJyAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdpcHMnICAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnYXR0YWNobWVudC1wb2ludHMnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3RhZycgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdob3N0LWFsaWFzJyAgICAgICAgICA6IHsgJ2hlbHBfdGV4dCcgOiAnSG9zdCBhbGlhcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdsYXN0LXNlZW4nICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwX3RleHQnOiAnTGFzdCB0aW1lIGEgcGFja2V0IHdhcyBzZWVuIGJ5IHRoZSBjb250cm9sbGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnRGF0ZVRpbWVGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLQotICAgICAgICAnaG9zdCc6IHsKLSAgICAgICAgICAgICMgaG9zdHMgYXJlIG5vdyBkaXJlY3RseSBmZXRjaGVkIHZpYSByZXN0IGFwaS4gJ2hhc19yZXN0X21vZGVsJyBpc24ndCBzZXQKLSAgICAgICAgICAgICMgZm9yIHRoaXMgdGFibGUuCi0gICAgICAgICAgICAjIFhYWCBwZXJoYXBzIHRoZXNlIHR5cGVzIG9mIGRlc2NyaXB0aW9ucyBuZWVkIHRvIGJlCi0gICAgICAgICAgICAjIGluIGEgZmlsZSBvdGhlciB0aGFuIGNsaW1vZGVsaW5mbz8KLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3VzZXItY29uZmlnJywKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgJ3VybCcgICAgICAgICAgICAgOiAnZGV2aWNlJywKLSAgICAgICAgICAgICdjb25maWctb2JqLXR5cGUnIDogJ2hvc3QtY29uZmlnJywKLQotICAgICAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICAgICAnbWFjJyAgICAgICAgICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJzogMTcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd2bGFuJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwX3RleHQnICAgICAgICAgICAgOiAnVkxBTiBBc3NvY2lhdGVkIHdpdGggaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCcgICAgICAgICAgICAgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgICAgICAgOiAnSW50ZWdlckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyAgICAgICAgICAgICAgICAgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWFyY2hhYmxlJyAgICAgICAgICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RwaWQnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyAgICAgICAgICAgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgIDogJ0ZvcmVpZ25LZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxfZmllbGRfbmFtZScgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbF9vYmpfdHlwZScgICA6ICdzd2l0Y2hlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnaXB2NCcgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAjIEF0dGFjaG1lbnQgcG9pbnQgaXNuJ3Qgc2VhcmNoYWJsZQotICAgICAgICAgICAgICAgICMnYXR0YWNobWVudC1wb2ludHMnICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjfSwKLSAgICAgICAgICAgICAgICAnbGFzdC1zZWVuJyAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscF90ZXh0JzogJ0xhc3QgdGltZSBhIHBhY2tldCB3YXMgc2VlbiBieSB0aGUgY29udHJvbGxlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0RhdGVUaW1lRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotCi0KLSAgICAgICAgJ2hvc3QtYXR0YWNobWVudC1wb2ludCcgOiB7Ci0gICAgICAgICAgICAjIGRpcmVjdGx5IGZldGNoZWQgdmlhIHJlc3QgYXBpLiAKLSAgICAgICAgICAgICMgJ2hhc19yZXN0X21vZGVsJyBpc24ndCBzZXQgZm9yIHRoaXMgdGFibGUuCi0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdjb250cm9sbGVyJywKLSAgICAgICAgICAgICd1cmwnICAgICAgICAgICAgIDogJ2RldmljZScsCi0KLSAgICAgICAgICAgICAnZmllbGRzJzogewotICAgICAgICAgICAgICAgICdtYWMnICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsX2ZpZWxkX25hbWUnOiAnbWFjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsX29ial90eXBlJzogJ2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0ZvcmVpZ25LZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndmxhbicgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICdWTEFOIEFzc29jaWF0ZWQgd2l0aCBob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0ludGVnZXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlYXJjaGFibGUnIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICcjfG1hY3xkcGlkfGluZ3Jlc3MtcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnOiA2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmltYXJ5X2tleSc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RwaWQnICAgICAgICAgOiB7ICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxfZmllbGRfbmFtZSc6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbF9vYmpfdHlwZSc6ICdzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdGb3JlaWduS2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2luZ3Jlc3MtcG9ydCcgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICdPcGVuIGZsb3cgcG9ydCBudW1iZXIgb2YgaW5ncmVzcyBwb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0ludGVnZXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzdGF0dXMnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscF90ZXh0JzogJ0Vycm9yIGRlc2NyaXB0aW9uLCBibGFuayBtZWFuIG5vIGVycm9yICcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCc6IDY0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdsYXN0LXNlZW4nICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscF90ZXh0JzogJ0xhc3QgdGltZSBhIHBhY2tldCB3YXMgc2VlbiBieSB0aGUgY29udHJvbGxlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0RhdGVUaW1lRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnaXB2NCcgICAgICAgICA6IHsgIyBhZGRlZCB0byBlbmFibGUgc2VhcmNoaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWFyY2hhYmxlJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgJ2hvc3QtbmV0d29yay1hZGRyZXNzJzogewotICAgICAgICAgICAgIyBkaXJlY3RseSBmZXRjaGVkIHZpYSByZXN0IGFwaS4gCi0gICAgICAgICAgICAjICdoYXNfcmVzdF9tb2RlbCcgaXNuJ3Qgc2V0IGZvciB0aGlzIHRhYmxlLgotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAnc3dpdGNoJywKLSAgICAgICAgICAgICd1cmwnICAgICAgICAgICAgIDogJ2RldmljZScsCi0KLSAgICAgICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAgICAgJ21hYycgICAgICAgIDogeyAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxfZmllbGRfbmFtZSc6ICdtYWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbF9vYmpfdHlwZSc6ICdob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0ZvcmVpZ25LZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndmxhbicgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscF90ZXh0JzogJ1ZMQU4gQXNzb2NpYXRlZCB3aXRoIGhvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnSW50ZWdlckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlYXJjaGFibGUnIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdpZCcgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwX3RleHQnOiAnI3xtYWN8aXB2NCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJzogNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnaXAtYWRkcmVzcyc6ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscF90ZXh0JzogJ0lQIEFkZHJlc3Mgb2YgaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJzogMTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdsYXN0LXNlZW4nIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscF90ZXh0JzogJ0xhc3QgdGltZSBhIHBhY2tldCB3YXMgc2VlbiBieSB0aGUgY29udHJvbGxlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0RhdGVUaW1lRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnaXB2NCcgICAgICA6IHsgIyBhZGRlZCB0byBlbmFibGUgc2VhcmNoaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCc6IDE1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnZHBpZCcgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlYXJjaGFibGUnIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIGVsc2U6Ci0gICAgICAgIGFkZGl0aW9uYWxfbW9kZWxfaW5mb19kaWN0ID0gewotICAgICAgICAnZmxvdy1lbnRyeScgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICd1c2VyLWNvbmZpZycsCi0gICAgICAgICAgICd1cGRhdGUtYWxpYXMnICAgIDogWydzd2l0Y2gnLCAncG9ydCddLAotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICdmZWF0dXJlJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ2RlYnVnLW9ubHknLAotCi0gICAgICAgICAgICAnZmllbGRzJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAnbmV0dmlydC1mZWF0dXJlJyAgICAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZX0sCi0gICAgICAgICAgICAgICAgJ3N0YXRpYy1mbG93LXB1c2hlci1mZWF0dXJlJyAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAncGVyZm9ybWFuY2UtbW9uaXRvci1mZWF0dXJlJyAgIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZX0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLQotICAgICAgICAnc3lzdGVtLWludGVyZmFjZXMnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgOiAnJywKLQotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ25hbWUnICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdDaGFyRmllbGQnIH0sCi0gICAgICAgICAgICAgICAgJ2FkZHInICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdDaGFyRmllbGQnIH0sCi0gICAgICAgICAgICAgICAgJ3BlZXInICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJyB9LAotICAgICAgICAgICAgICAgICduZXRtYXNrJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJyB9LAotICAgICAgICAgICAgICAgICdicm9hZGNhc3QnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJyB9LAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAnc3dpdGNoLWNsdXN0ZXInIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAndXNlci1jb25maWcnLAotCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAnY2x1c3Rlci1pZCcgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbWFyeV9rZXknOiBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnc3dpdGNoZXMnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgICdzd2l0Y2hlcycgOiB7Ci0gICAgICAgICAgICAjIHN3aXRjaGVzIGFyZSBub3cgZGlyZWN0bHkgZmV0Y2hlZCB2aWEgcmVzdCBhcGkuCi0gICAgICAgICAgICAjICdoYXNfcmVzdF9tb2RlbCcgaXNuJ3Qgc2V0Ci0gICAgICAgICAgICAjIGZvciB0aGlzIHRhYmxlLgotICAgICAgICAgICAgIyBYWFggcGVyaGFwcyB0aGVzZSB0eXBlcyBvZiBkZXNjcmlwdGlvbnMgbmVlZCB0byBiZQotICAgICAgICAgICAgIyBpbiBhIGZpbGUgb3RoZXIgdGhhbiBjbGltb2RlbGluZm8/Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICd1c2VyLWNvbmZpZycsCi0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgICAgICd1cmwnICAgICAgICAgICAgIDogJ3N3aXRjaGVzJywKLSAgICAgICAgICAgICdjb25maWctb2JqLXR5cGUnIDogJ3N3aXRjaC1jb25maWcnLAotCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAnZHBpZCcgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJzogMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmltYXJ5X2tleSc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnYWN0aXZlJyAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2NvcmUtc3dpdGNoJyAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnY29ubmVjdGVkLXNpbmNlJyAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdjYXBhYmlsaXRpZXMnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnYWN0aW9ucycgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2lwLWFkZHJlc3MnICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzb2NrZXQtYWRkcmVzcycgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnYnVmZmVycycgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2NvbnRyb2xsZXInICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndGFibGVzJyAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3N3aXRjaC1hbGlhcycgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwX3RleHQnIDogJ1N3aXRjaCBhbGlhcyBmb3IgRFBJRCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndHVubmVscycgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0dW5uZWwtc3VwcG9ydGVkJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3R1bm5lbC10ZXJtaW5hdGlvbicgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndHVubmVsLWFjdGl2ZScgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkcC1kZXNjJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2h3LWRlc2MnICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnc3ctZGVzYycgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzZXJpYWwtbnVtJyAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotICAgICAgICAnaW50ZXJmYWNlcycgOiB7Ci0gICAgICAgICAgICAjIHN3aXRjaGVzIGFyZSBub3cgZGlyZWN0bHkgZmV0Y2hlZCB2aWEgcmVzdCBhcGkuCi0gICAgICAgICAgICAjICdoYXNfcmVzdF9tb2RlbCcgaXNuJ3Qgc2V0Ci0gICAgICAgICAgICAjIGZvciB0aGlzIHRhYmxlLgotICAgICAgICAgICAgIyBYWFggcGVyaGFwcyB0aGVzZSB0eXBlcyBvZiBkZXNjcmlwdGlvbnMgbmVlZCB0byBiZQotICAgICAgICAgICAgIyBpbiBhIGZpbGUgb3RoZXIgdGhhbiBjbGltb2RlbGluZm8/Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgICAgICd1cmwnICAgICAgICAgICAgIDogJ3N3aXRjaGVzJywKLSAgICAgICAgICAgICdjb25maWctb2JqLXR5cGUnIDogJ3N3aXRjaC1pbnRlcmZhY2UtY29uZmlnJywKLQotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnOiA0OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ2NvbXBvdW5kLWtleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscF90ZXh0JyA6ICcjIWRwaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcG91bmRfa2V5X2ZpZWxkcyc6IFsgJ2RwaWQnIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkcGlkJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ3R5cGUnICAgICAgICAgICA6ICdGb3JlaWduS2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ3JlbF9maWVsZF9uYW1lJyA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ3JlbF9vYmpfdHlwZScgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ25hbWUnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ251bWJlcicgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2NvbmZpZycgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3N0YXRlJyAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2N1cnJlbnQtZmVhdHVyZXMnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2FkdmVydGlzZWQtZmVhdHVyZXMnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3N1cHBvcnRlZC1mZWF0dXJlcycgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3BlZXItZmVhdHVyZXMnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICdzd2l0Y2gtY29uZmlnJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnIDogJ2RlYnVnLW9ubHknLAotICAgICAgICB9LAotCi0KLSAgICAgICAgJ3N3aXRjaC1hbGlhcycgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICd1c2VyLWNvbmZpZycsCi0gICAgICAgICAgICAnY2FzY2FkZV9kZWxldGUnICA6IFRydWUsCi0gICAgICAgICAgICB9LAotCi0KLSAgICAgICAgJ3N3aXRjaC1pbnRlcmZhY2UtY29uZmlnJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ2RlYnVnLW9ubHknLAotICAgICAgICAgICAgJ2Nhc2NhZGVfZGVsZXRlJyAgOiBUcnVlLAotCi0gICAgICAgICAgICAnZmllbGRzJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAnYnJvYWRjYXN0JyAgICAgICAgICAgOiB7ICdlZGl0JyA6IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbmFtZScgICAgICAgICAgICAgICAgOiB7ICdlZGl0JyA6IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbW9kZScgICAgICAgICAgICAgICAgOiB7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotCi0KLSAgICAgICAgJ2hvc3QtYWxpYXMnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAndXNlci1jb25maWcnLAotICAgICAgICAgICAgJ2Nhc2NhZGVfZGVsZXRlJyAgOiBUcnVlLAotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICdsaW5rJyA6IHsgCi0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdzd2l0Y2gnLAotCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAnbGluay10eXBlJyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ0NoYXJGaWVsZCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0KLSAgICAgICAgJ3BvcnQnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAnZGVidWctb25seScsCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICdzd2l0Y2gnICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdudW1iZXInICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdjb25maWcnICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzdGF0ZScgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdjdXJyZW50LWZlYXR1cmVzJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdhZHZlcnRpc2VkLWZlYXR1cmVzJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzdXBwb3J0ZWQtZmVhdHVyZXMnICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdwZWVyLWZlYXR1cmVzJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgJ3N3aXRjaC1pbnRlcmZhY2VzJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgIDogJ3N3aXRjaCcsCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICdJZHgnICAgICAgICAgICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9ybWF0J3Mgb3V0IG9mIHRoZSBzb3J0aW5nIGJ1c2luZXNzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdzb3J0JyA6ICd0YWlsLWludGVnZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ25hbWUnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCcgOiAzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdoYXJkd2FyZS1hZGRyZXNzJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdjb25maWcnICAgICAgICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnc3RhdGUnICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnc3RwLXN0YXRlJyAgICAgICAgICAgOiB7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2N1cnJlbnQtZmVhdHVyZXMnICAgIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdhZHZlcnRpc2VkLWZlYXR1cmVzJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzdXBwb3J0ZWQtZmVhdHVyZXMnICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdwZWVyLWZlYXR1cmVzJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdyZWNlaXZlQnl0ZXMnICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdyZWNlaXZlUGFja2V0cycgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdyZWNlaXZlRXJyb3JzJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0cmFuc21pdEJ5dGVzJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0cmFuc21pdFBhY2tldHMnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0cmFuc21pdEVycm9ycycgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotCi0gICAgICAgICdjb25maWcnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAndXNlci1jb25maWcnLAotICAgICAgICAgICAgCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAnbmFtZScgICAgIDogeyAncHJpbWFyeV9rZXknOiBUcnVlIH0sCi0gICAgICAgICAgICAgICAgJ3ZlcnNpb24nICA6IHsgfSwKLSAgICAgICAgICAgICAgICAnbGVuZ3RoJyAgIDogeyB9LAotICAgICAgICAgICAgICAgICd0aW1lc3RhbXAnOiB7IH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgJ2NvbnRyb2xsZXJfc3dpdGNoZXMnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAndXNlci1jb25maWcnLAotICAgICAgICAgICAgCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAnZHBpZCcgOiB7ICdwcmltYXJ5X2tleScgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotICAgICAgICAndGVzdC1wa3Rpbi1yb3V0ZScgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyA6ICdkZWJ1Zy1vbmx5JywKLSAgICAgICAgICAgIAotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ2NsdXN0ZXInIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2hvcCcgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RwaWQnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2luUG9ydCcgOiAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ291dFBvcnQnOiAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAncGVyZm9ybWFuY2UtZGF0YScgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyA6ICdkZWJ1Zy1vbmx5JyAsCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICdQa3RzJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ0NvbXBOYW1lJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnU3RhcnRUaW1lJzogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAnZmxvdy1jYWNoZS1jb3VudGVycycgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyA6ICdzZG5wbGF0Zm9ybScsCi0gICAgICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICAgICAnZGV0YWlscycgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBsTmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhGbG93cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmVDbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVDbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkQ250JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbENudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmF0ZWRDbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVhY3RpdmF0ZWRDbmQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FjaGVIaXRDbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc0NudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmbG93TW9kUmVtb3ZhbE1zZ0xvc3NDbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90U3RvcmVkRnVsbENudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmY09iakZyZWVkQ250JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vua25vd25PcGVyQ250JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zsb3dDYWNoZUFsbW9zdEZ1bGwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0KLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICdhcHBsTmFtZScgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbWF4Rmxvd3MnICAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2FjdGl2ZUNudCcgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdpbmFjdGl2ZUNudCcgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnYWRkQ250JyAgICAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RlbENudCcgICAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdhY3RpdmF0ZWRDbnQnICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnZGVhY3RpdmF0ZWRDbmQnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2NhY2hlSGl0Q250JyAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdtaXNzQ250JyAgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnZmxvd01vZFJlbW92YWxNc2dMb3NzQ250JyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ25vdFN0b3JlZEZ1bGxDbnQnICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdmY09iakZyZWVkQ250JyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndW5rbm93bk9wZXJDbnQnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2Zsb3dDYWNoZUFsbW9zdEZ1bGwnICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLQotCi0gICAgICAgICdmbG93LWNhY2hlJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnIDogJ2RlYnVnLW9ubHknLAotCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAnU291cmNlLVN3aXRjaCcgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdJbnB1dFBvcnQnICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1NyY01BQycgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnRGVzdE1BQycgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdFdGhlclR5cGUnICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1Byb3RvY29sJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnU3JjUG9ydCcgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdEc3RQb3J0JyAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1RpbWUnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAnZXYtaGlzdC10b3BvbG9neS1zd2l0Y2gnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgOiAnZGVidWctb25seScsCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICdJZHgnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JyAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1RpbWUnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1N3aXRjaCcgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1BvcnQnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ0lwQWRkcicgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ0FjdGlvbicgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1JlYXNvbicgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1N0YXRlJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICdldi1oaXN0LXRvcG9sb2d5LWNsdXN0ZXInIDogewotICAgICAgICAgICAgJ3NvdXJjZScgOiAnZGVidWctb25seScsCi0gICAgICAgICAgICAKLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICdUaW1lJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JyAgOiBGYWxzZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnU3dpdGNoJyAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnQWN0aW9uJyAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnUmVhc29uJyAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnU3RhdGUnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0KLSAgICAgICAgJ2V2LWhpc3QtdG9wb2xvZ3ktbGluaycgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyA6ICdkZWJ1Zy1vbmx5JywKLSAgICAgICAgICAgIAotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ1RpbWUnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmltYXJ5X2tleScgIDogRmFsc2UsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdTb3VyY2UtU3dpdGNoJyAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ0Rlc3QtU3dpdGNoJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnU3JjUG9ydCcgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdEc3RQb3J0JyAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1NyY1BvcnRTdGF0ZScgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnRHN0UG9ydFN0YXRlJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdBY3Rpb24nICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1JlYXNvbicgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnU3RhdGUnICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAnZXYtaGlzdC1hdHRhY2htZW50LXBvaW50JyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnIDogJ2RlYnVnLW9ubHknLAotICAgICAgICAgICAgCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAnVGltZV9ucycgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmltYXJ5X2tleScgIDogRmFsc2UsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ0hvc3QnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1N3aXRjaCcgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1BvcnQnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1ZMQU4nICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ0FjdGlvbicgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ1JlYXNvbicgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICdldi1oaXN0LXBhY2tldC1pbicgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyA6ICdkZWJ1Zy1vbmx5JywKLSAgICAgICAgICAgIAotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ1RpbWUnICAgICAgICAgICAgIDogeydwcmltYXJ5X2tleScgIDogRmFsc2UsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3dpbGRjYXJkcycgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RhdGFMYXllclNvdXJjZScgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RhdGFMYXllckRlc3RpbmF0aW9uJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkYXRhTGF5ZXJUeXBlJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkYXRhTGF5ZXJWaXJ0dWFsTGFuJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkYXRhTGF5ZXJWaXJ0dWFsTGFuUHJpb3JpdHlDb2RlUG9pbnQnIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdpbnB1dFN3aXRjaCcgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdpbnB1dFBvcnQnICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbmV0d29ya1NvdXJjZScgICAgOiB7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ25ldHdvcmtEZXN0aW5hdGlvbicgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbmV0d29ya1NvdXJjZU1hc2tMZW4nIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ25ldHdvcmtEZXN0aW5hdGlvbk1hc2tMZW4nIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ25ldHdvcmtQcm90b2NvbCcgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ25ldHdvcmtUeXBlT2ZTZXJ2aWNlJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0cmFuc3BvcnRTb3VyY2UnICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0cmFuc3BvcnREZXN0aW5hdGlvbicgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnQWN0aW9uICAgICAgICAgJyAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnUmVhc29uJyAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICd2bnMtZGVmaW5pdGlvbicgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICd1c2VyLWNvbmZpZycsCi0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdzaG93JywKLSAgICAgICAgICAgICdjYXNjYWRlX2RlbGV0ZScgIDogVHJ1ZSwKLSAgICAgICAgICAgICdzaG93LXRoaXMnICAgICAgIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyd2bnMtZGVmaW5pdGlvbicsICdkZWZhdWx0J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Zucy1pbnRlcmZhY2UtcnVsZScsICd2bnMtY29uZmlnJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICdhY3RpdmUnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgJ3ByaW9yaXR5JyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAnYXJwLW1vZGUnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICdkaGNwLW1vZGUnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgJ2RoY3AtaXAnICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAnYnJvYWRjYXN0JyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAndm5zLWludGVyZmFjZS1ydWxlJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ2RlYnVnLW9ubHknLAotICAgICAgICAgICAgJ2Nhc2NhZGVfZGVsZXRlJyAgOiBUcnVlLAotICAgICAgICAgICAgJ3RpdGxlJyAgICAgICAgICAgOiAnVk5TIEludGVyZmFjZSBSdWxlcycsCi0KLSAgICAgICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAgICAgJ3J1bGUnICAgICAgICAgICAgICAgOiB7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnIDogMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd2bnMnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbWFjJyAgICAgICAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0YWdzJyAgICAgICAgICAgICAgIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJyA6IDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnYWN0aXZlJyAgICAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAnYWxsb3ctbXVsdGlwbGUnICAgICA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAndmxhbi10YWctb24tZWdyZXNzJyA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAnaXAtc3VibmV0JyAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAncG9ydHMnICAgICAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAncHJpb3JpdHknICAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAncnVsZScgICAgICAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAnc3dpdGNoJyAgICAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAndGFncycgICAgICAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAndmxhbnMnICAgICAgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0KLSAgICAgICAgJ2Rpc3BsYXktdm5zLWludGVyZmFjZScgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICd1c2VyLWNvbmZpZycsCi0gICAgICAgICAgICAnY2FzY2FkZV9kZWxldGUnICA6IFRydWUsCi0KLSAgICAgICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3J1bGUnICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbWFjJyAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJyA6IDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlIH0sCi0gICAgICAgICAgICAgICAgJ3ZsYW4nICAgICAgICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ0NoYXJmaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnIDogMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAnaXBzJyAgICAgICAgICAgICAgIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCcgOiAzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSB9LAotICAgICAgICAgICAgICAgICdhdHRhY2htZW50LXBvaW50cycgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnIDogMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAnbGFzdC1zZWVuJyAgICAgICAgIDogeyAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAndm5zLWludGVyZmFjZS1kaXNwbGF5JyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3VzZXItY29uZmlnJywKLSAgICAgICAgICAgICdjYXNjYWRlX2RlbGV0ZScgIDogVHJ1ZSwKLQotICAgICAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdydWxlJyAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ21hYycgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCcgOiAzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSB9LAotICAgICAgICAgICAgICAgICd2bGFuJyAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ0NoYXJmaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnIDogMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UgfSwKLSAgICAgICAgICAgICAgICAnaXBzJyAgICAgICAgICAgICAgIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCcgOiAzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSB9LAotICAgICAgICAgICAgICAgICdhdHRhY2htZW50LXBvaW50cycgOiB7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJyA6IDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlIH0sCi0gICAgICAgICAgICAgICAgJ2xhc3Qtc2VlbicgICAgICAgICA6IHsgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0KLSAgICAgICAgJ3Zucy1hY2Nlc3MtbGlzdCc6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3VzZXItY29uZmlnJywKLSAgICAgICAgICAgICdjYXNjYWRlX2RlbGV0ZScgIDogVHJ1ZSwKLQotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ25hbWUnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FzY2FkZV9kZWxldGUnIDogVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICd2bnMtYWNjZXNzLWxpc3QtZW50cnknOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICd1c2VyLWNvbmZpZycsCi0gICAgICAgICAgICAnY2FzY2FkZV9kZWxldGUnICA6IFRydWUsCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIHZucy1hY2wtZW50cnkgZmllbGRzIGFyZSBhIGJpdCB1bmNvbW1vbi4gIHRoZSBhY3Rpb24gYW5kIHR5cGUKLSAgICAgICAgICAgICAgICAjIGNhbiBvbmx5IGJlIGNvbmZpZ3VyZWQgdmlhIHRoZSBjcmVhdGUgcG9ydGlvbiBvZiB0aGUgY29tbWFuZCwKLSAgICAgICAgICAgICAgICAjIHdoaWxlIG1hbnkgb3RoZXIgZmllbGRzIHJlcXVyZSBzcGVjaWZpYyB2YWxpZGF0aW9uIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAjIGFsdGVybmF0ZSB2YWx1ZXMgY2FuIGJlIHJlcGxhY2VkIGZvciBzb21lIGtleXdvcmRzCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgdGhlIHZhbHVlcyBvZiB0aGUgJ3ZhbGlkYXRlJyBmaWVsZCBpcyB0aGUgbmFtZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAjIGRlZiB0byBjYWxsIChpbiB0aGUgYmlnU2ggY2xhc3MpCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICd2bnMtYWNjZXNzLWxpc3QnICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdydWxlJyAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYXNjYWRlX2RlbGV0ZScgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnQnIDogJ2ludGVnZXInCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzcmMtaXAnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzcmMtaXAtbWFzaycgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkc3QtaXAnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkc3QtaXAtbWFzaycgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzcmMtdHAtcG9ydC1vcCcgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdzcmMtdHAtcG9ydCcgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkc3QtdHAtcG9ydC1vcCcgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkc3QtdHAtcG9ydCcgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdpY21wLXR5cGUnICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnZXRoZXItdHlwZScgICAgICAgOiB7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICd2bnMtaW50ZXJmYWNlLWFjY2Vzcy1saXN0JzogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAndXNlci1jb25maWcnLAotICAgICAgICAgICAgJ2Nhc2NhZGVfZGVsZXRlJyAgOiBUcnVlLAotCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAndm5zJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJyA6IDMyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd2bnMtaW50ZXJmYWNlLW5hbWUnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnIDogMzIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ25hbWUnICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCcgOiAzMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0KLSAgICAgICAgJ3RhZycgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICd1c2VyLWNvbmZpZycsCi0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgfSwKLQotICAgICAgICAKLSAgICAgICAgJ3RhZy1tYXBwaW5nJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3VzZXItY29uZmlnJywKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3N3aXRjaCcsCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICd0eXBlJyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnaG9zdCcgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICdzeW5jZC1jb25maWcnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAnZGVidWctb25seScsCi0gICAgICAgICAgICB9LAotCi0gICAgICAgICdzeW5jZC1wcm9ncmVzcy1pbmZvJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ2RlYnVnLW9ubHknLAotICAgICAgICAgICAgfSwKLQotICAgICAgICAnc3luY2QtdHJhbnNwb3J0LWNvbmZpZycgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdkZWJ1Zy1vbmx5JywKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgJ3N0YXRkLWNvbmZpZycgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdkZWJ1Zy1vbmx5JywKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgJ3N0YXRkcm9wZC1jb25maWcnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAnZGVidWctb25seScsCi0gICAgICAgICAgICB9LAotCi0gICAgICAgICdzdGF0ZHJvcGQtcHJvZ3Jlc3MtaW5mbycgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdkZWJ1Zy1vbmx5JywKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgJ3RlY2gtc3VwcG9ydC1jb25maWcnIDogewotICAgICAgICAgICAgfSwKLQotICAgICAgICAndHVubmVsLWRldGFpbHMnIDogewotICAgICAgICAgICAgJ3NvdXJjZScgOiAnc3dpdGNoJywKLQotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ2RwaWQnICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbG9jYWxUdW5uZWxJUEFkZHInIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICd0dW5uZWxQb3J0cycgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAnY29udHJvbGxlci1zdW1tYXJ5JyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnIDogJ3N3aXRjaCcsCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICcjIEFjY2VzcyBDb250cm9sIExpc3RzJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnIyBWTlMgSW50ZXJmYWNlcycgICAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJyMgaG9zdHMnICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICcjIFZOU2VzJyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnIyBhdHRhY2htZW50IHBvaW50cycgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJyMgaW50ZXItc3dpdGNoIGxpbmtzJyAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICcjIElQIEFkZHJlc3NlcycgICAgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnIyBWTlMgSW50ZXJmYWNlcyB3aXRoIEFDTCBhcHBsaWVkJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAnc3dpdGNoLWludGVyZmFjZS1hbGlhcycgOiB7Ci0gICAgICAgICAgICAnc291cmNlJyAgICAgICAgICA6ICdjb21tYW5kcycsCi0gICAgICAgICAgICAnY2FzY2FkZV9kZWxldGUnICA6IFRydWUsCi0KLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICdpZCcgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotCi0KLSAgICAgICAgJ2hvc3QtY29uZmlnJyA6IHsKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3Nob3cnLAotICAgICAgICAgICAgJ3VybCcgICAgICAgICAgICAgOiAnZGV2aWNlJywKLQotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ0lkeCcgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdDaGFyRmllbGQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdtYWMnICAgICAgICAgICAgICAgIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnOiAxNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndmVuZG9yJyAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdpcHMnICAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnYXR0YWNobWVudC1wb2ludHMnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3RhZycgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdob3N0LWFsaWFzJyAgICAgICAgICA6IHsgJ2hlbHBfdGV4dCcgOiAnSG9zdCBhbGlhcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdsYXN0LXNlZW4nICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwX3RleHQnOiAnTGFzdCB0aW1lIGEgcGFja2V0IHdhcyBzZWVuIGJ5IHRoZSBjb250cm9sbGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnRGF0ZVRpbWVGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLQotICAgICAgICAnaG9zdCc6IHsKLSAgICAgICAgICAgICMgaG9zdHMgYXJlIG5vdyBkaXJlY3RseSBmZXRjaGVkIHZpYSByZXN0IGFwaS4gJ2hhc19yZXN0X21vZGVsJyBpc24ndCBzZXQKLSAgICAgICAgICAgICMgZm9yIHRoaXMgdGFibGUuCi0gICAgICAgICAgICAjIFhYWCBwZXJoYXBzIHRoZXNlIHR5cGVzIG9mIGRlc2NyaXB0aW9ucyBuZWVkIHRvIGJlCi0gICAgICAgICAgICAjIGluIGEgZmlsZSBvdGhlciB0aGFuIGNsaW1vZGVsaW5mbz8KLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3VzZXItY29uZmlnJywKLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgJ3VybCcgICAgICAgICAgICAgOiAnZGV2aWNlJywKLSAgICAgICAgICAgICdjb25maWctb2JqLXR5cGUnIDogJ2hvc3QtY29uZmlnJywKLQotICAgICAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICAgICAnbWFjJyAgICAgICAgICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJzogMTcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgICAgICAgICAgIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICA6ICdGb3JlaWduS2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsX2ZpZWxkX25hbWUnIDogJ25hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxfb2JqX3R5cGUnICAgOiAnYWRkcmVzcy1zcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndmxhbicgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscF90ZXh0JyAgICAgICAgICAgIDogJ1ZMQU4gQXNzb2NpYXRlZCB3aXRoIGhvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnICAgICAgICAgICAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICAgICAgIDogJ0ludGVnZXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgICAgICAgICAgICAgICAgIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VhcmNoYWJsZScgICAgICAgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkcGlkJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgICAgICAgICAgIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICA6ICdGb3JlaWduS2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsX2ZpZWxkX25hbWUnIDogJ2RwaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxfb2JqX3R5cGUnICAgOiAnc3dpdGNoZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2lwdjQnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIyBBdHRhY2htZW50IHBvaW50IGlzbid0IHNlYXJjaGFibGUKLSAgICAgICAgICAgICAgICAjJ2F0dGFjaG1lbnQtcG9pbnRzJyAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIydlZGl0JyA6IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI30sCi0gICAgICAgICAgICAgICAgJ2xhc3Qtc2VlbicgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICdMYXN0IHRpbWUgYSBwYWNrZXQgd2FzIHNlZW4gYnkgdGhlIGNvbnRyb2xsZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdEYXRlVGltZUZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLQotCi0gICAgICAgICdob3N0LWF0dGFjaG1lbnQtcG9pbnQnIDogewotICAgICAgICAgICAgIyBkaXJlY3RseSBmZXRjaGVkIHZpYSByZXN0IGFwaS4gCi0gICAgICAgICAgICAjICdoYXNfcmVzdF9tb2RlbCcgaXNuJ3Qgc2V0IGZvciB0aGlzIHRhYmxlLgotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAnY29udHJvbGxlcicsCi0gICAgICAgICAgICAndXJsJyAgICAgICAgICAgICA6ICdkZXZpY2UnLAotCi0gICAgICAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICAgICAnbWFjJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbF9maWVsZF9uYW1lJzogJ21hYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbF9vYmpfdHlwZSc6ICdob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdGb3JlaWduS2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3ZsYW4nICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwX3RleHQnOiAnVkxBTiBBc3NvY2lhdGVkIHdpdGggaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdJbnRlZ2VyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWFyY2hhYmxlJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdpZCcgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwX3RleHQnOiAnI3xtYWN8ZHBpZHxpbmdyZXNzLXBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJzogNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbWFyeV9rZXknOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkcGlkJyAgICAgICAgIDogeyAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsX2ZpZWxkX25hbWUnOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxfb2JqX3R5cGUnOiAnc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnRm9yZWlnbktleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdpbmdyZXNzLXBvcnQnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwX3RleHQnOiAnT3BlbiBmbG93IHBvcnQgbnVtYmVyIG9mIGluZ3Jlc3MgcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdJbnRlZ2VyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnc3RhdHVzJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICdFcnJvciBkZXNjcmlwdGlvbiwgYmxhbmsgbWVhbiBubyBlcnJvciAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnOiA2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbGFzdC1zZWVuJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICdMYXN0IHRpbWUgYSBwYWNrZXQgd2FzIHNlZW4gYnkgdGhlIGNvbnRyb2xsZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdEYXRlVGltZUZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2lwdjQnICAgICAgICAgOiB7ICMgYWRkZWQgdG8gZW5hYmxlIHNlYXJjaGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VhcmNoYWJsZScgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICB9LAotCi0gICAgICAgICdob3N0LW5ldHdvcmstYWRkcmVzcyc6IHsKLSAgICAgICAgICAgICMgZGlyZWN0bHkgZmV0Y2hlZCB2aWEgcmVzdCBhcGkuIAotICAgICAgICAgICAgIyAnaGFzX3Jlc3RfbW9kZWwnIGlzbid0IHNldCBmb3IgdGhpcyB0YWJsZS4KLSAgICAgICAgICAgICdzb3VyY2UnICAgICAgICAgIDogJ3N3aXRjaCcsCi0gICAgICAgICAgICAndXJsJyAgICAgICAgICAgICA6ICdkZXZpY2UnLAotCi0gICAgICAgICAgICAnZmllbGRzJzogewotICAgICAgICAgICAgICAgICdtYWMnICAgICAgICA6IHsgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVsbCc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsX2ZpZWxkX25hbWUnOiAnbWFjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxfb2JqX3R5cGUnOiAnaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdGb3JlaWduS2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3ZsYW4nICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICdWTEFOIEFzc29jaWF0ZWQgd2l0aCBob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0ludGVnZXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWFyY2hhYmxlJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscF90ZXh0JzogJyN8bWFjfGlwdjQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCc6IDY0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmltYXJ5X2tleSc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2lwLWFkZHJlc3MnOiAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICdJUCBBZGRyZXNzIG9mIGhvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCc6IDE1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnbGFzdC1zZWVuJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICdMYXN0IHRpbWUgYSBwYWNrZXQgd2FzIHNlZW4gYnkgdGhlIGNvbnRyb2xsZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdEYXRlVGltZUZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2lwdjQnICAgICAgOiB7ICMgYWRkZWQgdG8gZW5hYmxlIHNlYXJjaGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9sZW5ndGgnOiAxNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RwaWQnICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWFyY2hhYmxlJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotCi0gICAgICAgICdob3N0LXZucy1pbnRlcmZhY2UnIDogewotICAgICAgICAgICAgIyBkaXJlY3RseSBmZXRjaGVkIHZpYSByZXN0IGFwaS4gCi0gICAgICAgICAgICAjICdoYXNfcmVzdF9tb2RlbCcgaXNuJ3Qgc2V0IGZvciB0aGlzIHRhYmxlLgotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAnY29udHJvbGxlcicsCi0gICAgICAgICAgICAndXJsJyAgICAgICAgICAgICA6ICd2bnMvZGV2aWNlLWludGVyZmFjZScsCi0gICAgICAgICAgICAnY2FzY2FkZV9kZWxldGUnICA6IFRydWUsCi0KLSAgICAgICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgICAgICdkZWZhdWx0JyAgICA6IFsgJ0lkeCcsICd2bnMnLCAnaG9zdCcsICdpcHMnLCAgXSwKLSAgICAgICAgICAgICAgICAndm5zLWNvbmZpZycgOiBbICdJZHgnLCAgICAgICAgJ2hvc3QnLCAnaXBzJywgIF0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcG91bmRfa2V5X2ZpZWxkcyc6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bGFuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcmZhY2UnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwX3RleHQnOiAnI3xob3N0fGludGVyZmFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdjb21wb3VuZC1rZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlJyAgOiB7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbF9maWVsZF9uYW1lJzogJ21hYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbF9vYmpfdHlwZSc6ICdob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdGb3JlaWduS2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndmxhbicgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGVuZ3RoJyA6IDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ21hYycgICAgICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsX2ZpZWxkX25hbWUnOiAnbWFjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsX29ial90eXBlJzogJ2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0ZvcmVpZ25LZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdpbnRlcmZhY2UnOiAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsX2ZpZWxkX25hbWUnOiAnaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxfb2JqX3R5cGUnOiAndm5zLWludGVyZmFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnRm9yZWlnbktleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2lwcycgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCcgOiAzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgJ3Zucy1pbnRlcmZhY2UnIDogewotICAgICAgICAgICAgIyBkaXJlY3RseSBmZXRjaGVkIHZpYSByZXN0IGFwaS4gCi0gICAgICAgICAgICAjICdoYXNfcmVzdF9tb2RlbCcgaXNuJ3Qgc2V0IGZvciB0aGlzIHRhYmxlLgotICAgICAgICAgICAgJ3NvdXJjZScgICAgICAgIDogJ2NvbnRyb2xsZXInLAotICAgICAgICAgICAgJ3VybCcgICAgICAgICAgIDogJ3Zucy9pbnRlcmZhY2UnLAotCi0gICAgICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICAgICAnZGVmYXVsdCcgICAgOiBbJ0lkeCcsICd2bnMnLCAnaW50ZXJmYWNlJywgJ3J1bGUnLCAnbGFzdC1zZWVuJywgXSwKLSAgICAgICAgICAgICAgICAndm5zLWNvbmZpZycgOiBbJ0lkeCcsICAgICAgICAnaW50ZXJmYWNlJywgJ3J1bGUnLCAnbGFzdC1zZWVuJywgXQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICdpZCcgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBvdW5kX2tleV9maWVsZHMnOiBbICd2bnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICcjfHZuc3xpbnRlcmZhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmltYXJ5X2tleSc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdjb21wb3VuZC1rZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3ZucycgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbF9maWVsZF9uYW1lJzogJ2lkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbF9vYmpfdHlwZSc6ICd2bnMtZGVmaW5pdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0ZvcmVpZ25LZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2ludGVyZmFjZScgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xlbmd0aCc6IDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0NoYXJGaWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ3J1bGUnICAgICAgICA6IHsgJ2pzb25fc2VyaWFsaXplX3N0cmluZyc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bGwnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxfZmllbGRfbmFtZSc6ICdpZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbF9vYmpfdHlwZSc6ICd2bnMtaW50ZXJmYWNlLXJ1bGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ0ZvcmVpZ25LZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdsYXN0LXNlZW4nICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHBfdGV4dCc6ICdMYXN0IHRpbWUgYSBwYWNrZXQgd2FzIHNlZW4gYnkgdGhlIGNvbnRyb2xsZXIgb24gdGhpcyBpbnRlcmZhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudWxsJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdEYXRlVGltZUZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgIyBkb25lLgotICAgICAgICB9CmRpZmYgLS1naXQgYS9jbGkvY2xpL2NvbW1hbmQucHkgYi9jbGkvY2xpL2NvbW1hbmQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIxZmEyMjcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9jb21tYW5kLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDA3MCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMSwyMDEyLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCByZQotaW1wb3J0IG51bWJlcnMKLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHR5cGVzCi1pbXBvcnQganNvbgotaW1wb3J0IHRpbWUKLWltcG9ydCBzeXMKLWltcG9ydCBkYXRldGltZQotaW1wb3J0IG9zCi1pbXBvcnQgY19kYXRhX2hhbmRsZXJzCi1pbXBvcnQgY192YWxpZGF0aW9ucwotaW1wb3J0IGNfY29tcGxldGlvbnMKLWltcG9ydCBjX2FjdGlvbnMKLWltcG9ydCB1dGlmCi1pbXBvcnQgZXJyb3IKLWltcG9ydCBkb2MKLQotCi0jIFRPRE8gbGlzdAotIwotIyAtIHN1cHBvcnQgZm9yICdtaW4nIGFuZCAnbWF4JyBhcyBib3VuZGFyeSB2YWx1ZXMgaW4gcmFuZ2UvbGVuZ3RoIHJlc3RyaWN0aW9ucwotIyAtIGRpc3Rpbmd1aXNoIGJldHdlZW4gY29tcGxldGlvbiBoZWxwIHN0cmluZyBhbmQgc3ludGF4L2RvYyBzdHJpbmcKLSMgLSBhbGxvdyBtdWx0aXBsZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucyBmb3IgdHlwZWRlZnMvYXJncwotIyAtIHZlcmlmeSB0aGF0IGl0IGhhbmRsZXMgdW5hbWJpZ3VvdXMgcHJlZml4ZXMgaW4gc3ViY29tbWFuZHMgYW5kIGFyZ3VtZW50IHRhZ3MKLSMgLSBzdXBwb3J0IGZvciBnZXR0aW5nIG5leHQgYXZhaWxhYmxlIHNlcXVlbmNlIG51bWJlciAoZS5nLiBpcCBuYW1lLXNlcnZlcikKLSMgLSB0ZXN0IGNvZGUgdG8gaGFuZGxlIFJFU1QgZXJyb3JzCi0jIC0gZmlndXJlIG91dCBob3cgdG8gZGVhbCB3aXRoIGFyZ3VtZW50cyB0aGF0IGFyZSBvcHRpb25hbCBmb3IgJ25vJyBjb21tYW5kcwotIyAtIHRlc3RzIGZvciBsZW5ndGgvcmFuZ2UgdmFsaWRhdGlvbnMsIGJvdGggZm9yIHN0cmluZ3MgYW5kIGludGVnZXJzCi0jIC0gYWRkIHZhbGlkYXRpb24gcGF0dGVybnMgZm9yIGRvbWFpbi1uYW1lIGFuZCBpcC1hZGRyZXNzLW9yLWRvbWFpbi1uYW1lIHR5cGVkZWZzCi0jIC0gZ2V0IHN5bnRheCBoZWxwIGZvciAibm8iIGNvbW1hbmRzCi0jIC0gdGVzdCB1c2luZyB1bmFtYmlndW91cyBwcmVmaXggZm9yIGNvbW1hbmQvc3ViY29tbWFuZCBuYW1lcwotIyAtIHRlc3QgdXNpbmcgdW5hbWJpZ3VvdXMgcHJlZml4IGZvciBhcmd1bWVudCB0YWdzCi0jIC0gdGVzdCBjYXNlIGluc2Vuc2l0aXZpdHkgZm9yIGNvbW1hbmQvc3ViY29tbWFuZC90YWcgbmFtZXMgKGkuZS4gYW55IGZpeGVkIHRva2VuKQotIyAtIEFsbG93L2lnbm9yZSBtaXNzaW5nIGNvbW1hbmQgYXJndW1lbnRzIGZvciAibm8iIGNvbW1hbmRzIChlLmcuICJubyBpcCBhZGRyZXNzIikKLSMgLSBzdXBwb3J0IGZvciBjYXNlLXNlbnNpdGl2ZSBlbnVtIHR5cGVzIChkbyB3ZSBuZWVkIHRoaXM/KQotIyAtIGNsZWFuIHVwICdkZXNjcmlwdGlvbicgdnMuICdkZXNjcmlwdG9yJyB0ZXJtaW5vbG9neSAoaS5lLiBwaWNrIG9uZSkKLSMgLSByZXR1cm4gIjxjcj4iIGFzIGNvbXBsZXRpb24gaWYgdGhlcmUgYXJlIG5vIGFyZ3MgdG8gY29tcGxldGUKLSMgLSBiZSBjb25zaXN0ZW50IGFib3V0IHVzaW5nIF94eXogZnVuY3Rpb24gbmFtaW5nIGNvbnZlbnRpb24gZm9yIHByaXZhdGUgZnVuY3Rpb25zCi0jIC0gYmV0dGVyIGhhbmRsaW5nIG9mIGV4Y2VwdGlvbnMgaW4gZG9fY29tbWFuZF9jb21wbGV0aW9ucy4gY2F0Y2ggQ29tbWFuZEVycm9ycywKLSMgICBkaXN0aW5ndWlzaCBiZXR3ZWVuIGV4cGVjdGVkIGVycm9yIChlLmcuIFZhbGlkYXRpb25FcnJvcikgYW5kIGVycm9ycyB0aGF0Ci0jICAgaW5kaWNhdGUgYnVnIChlLmcuIGJhc2UgRXhjZXB0aW9uIHJhaXNlZCkKLSMgLSBzb3J0IGlzc3VlcyB3aXRoIHNlcXVlbmNlIG51bWJlcnMuIFRoZXkgYXJlIHRyZWF0ZWQgYXMgc3RyaW5ncyBieSB0aGUgRGphbmdvCi0jICAgQ2Fzc2FuZHJhIGJhY2tlbmQgaW5zdGVhZCBvZiBpbnRlZ2Vycy4gVGhpcyBtZWFucyB0aGF0LCBmb3IgZXhhbXBsZSwgdGhlIHNlcXVlbmNlCi0jICAgbnVtYmVyIDEsMiwxMCBhcmUgaW5jb3JyZWN0bHkgc29ydGVkIGluIHRoZSBvcmRlciAxLCAxMCwgMi4gTmVlZCB0byBmaXggdGhpcyBpbgotIyAgIHRoZSBEamFuZ28gYmFja2VuZC4KLSMgLSBTaG91bGRuJ3QgYWxsb3cgIm5vIiB2YXJpYW50IG9mIGEgY29tbWFuZCBpZiB0aGVyZSdzIG5vIGRlZmF1bHQgdmFsdWUgZm9yIGFuIGFyZ3VtZW50LgotIyAgIEZvciBleGFtcGxlLCBzaG91bGRuJ3QgYWxsb3cgIm5vIGNsb2NrIHNldCAwMTozMDowMCIuCi0jIC0gdHJlYXQgc2NvcGUgc3RhY2sgYXMgYSBzdGFjayB3aXRoIGFwcGVuZCAmIHBvcCBvcGVyYXRpb25zIGFuZCBzZWFyY2ggaW4gcmV2ZXJzZSBvcmRlcgotIyAtIHJlbmFtZSB0aGUgImRhdGEiIGl0ZW0gaW4gdGhlIHNjb3BlcyB0byBiZSAiYXJncyIgKG9yIG1heWJlIG5vdD8pCi0jIC0gY2xlYW4gdXAgc3ludGF4IGhlbHAgbWVzc2FnZTsgaW5jbHVkZXMgIlN5bnRheDogIiB0d2ljZSBpbiBtZXNzYWdlLgotIyAtIGNsZWFuIHVwIHN5bnRheCBoZWxwIG1lc3NhZ2VzIHRvIG5vdCBpbmNsdWRlIGV4dHJhbmVvdXMgd2hpdGUgc3BhY2UgY2hhcmFjdGVycwotIyAgIEZvciBleGFtcGxlICJ0ZXN0IFtmb28gPGZvby12YWx1ZT5dIiBpbnN0ZWFkIG9mICJ0ZXN0IFsgZm9vIDxmb28tdmFsdWU+IF0iCi0jICAgT3IgbWF5YmUgbm90PwotIyAtIHN1cHBvcnQgZm9yIGV4cGxpY2l0IGNvbW1hbmQgYWJicmV2aWF0aW9ucyAoZS5nLiAicyIgPSAic2hvdyIgZXZlbiBpZiB0aGVyZSBhcmUKLSMgICBvdGhlciBhdmFpbGFibGUgY29tbWFuZHMgdGhhdCBiZWdpbiB3aXRoICJzIi4KLSMgLSBhdXRvbWF0ZWQgZ2VuZXJhdGlvbiBvZiBydW5uaW5nIGNvbmZpZwotIyAtIHJlbmFtZSAnY29uZmlnJyBjb21tYW5kLXR5cGUgdG8gJ2NvbmZpZy1maWVsZHMnCi0jIC0gbmVlZCB0byBmaXggZ2V0dGluZyBjb21wbGV0aW9ucyB3aXRoIGFsdGVybmF0aW9uIGlmIGFueSBvZiB0aGUgYWx0ZXJuYXRlcyBkb24ndAotIyAgIG1hdGNoIHRoZSBwYXJ0aWFsIGNvbXBsZXRpb24gdGV4dCAoZS5nLiAiZmlyZXdhbGwgYWxsb3cgb3A8dGFiPiIpLgotIyAtIGFsbG93IGNvbW1hbmQgZGVzY3JpcHRpb24gdGhhdCBkb24ndCBoYXZlIGFueSBhcmdzIHRvIG9taXQgdGhlICdhcmdzJyBzZXR0aW5nCi0jICAgKHdvcmthcm91bmQgZm9yIG5vdyBpcyB0byBqdXN0IGhhdmUgYW4gZW1wdHkgYXJncyB0dXBsZS9saXN0Ci0KLSMgLSBzdXBwb3J0ICJyZXBlYXRhYmxlIiBhdHRyaWJ1dGUgZm9yIGFyZ3MgdG8gc3VwcG9ydCByZXBldGl0aW9uCi0jIC0gU3VwcG9ydCBmb3Igc2luZ2xlIHRva2VuIGFyZ3VtZW50cyB3aXRoIGEgY3VzdG9tIGFjdGlvbiBhbmQvb3IgYXJnIGhhbmRsZXIKLSMgLSBhbGxvdyBtdWx0aXBsZSAibmFtZSJzIGZvciBhIGNvbW1hbmQgZGVzY3JpcHRpb24gYW5kIGFsbG93IGVhY2ggbmFtZSB0byBvcHRpb25hbGx5Ci0jICAgc2V0IGEgZmllbGQgaW4gdGhlIGFyZyBkYXRhLiBTeW50YXggd291bGQgcHJvYmFibHkgYmUgdGhhdCB0aGUgIm5hbWUiIGZpZWxkIGNvdWxkCi0jICAgYmUgYSBsaXN0IG9mIG5hbWVzLiBTbyB0aGUgbmFtZSBjb3VsZCBlaXRoZXIgYmUgYSBzaW1wbGUgc3RyaW5nLCBhIGRpY3QgKHdoaWNoCi0jICAgd291bGQgc3VwcG9ydCBwYXR0ZXJuLWJhc2VkIG5hbWVzIGFuZCBzZXR0aW5nIGEgZmllbGQgd2l0aCB0aGUgY29tbWFuZCB3b3JkLCBvciBhCi0jICAgbGlzdCBvZiBuYW1lcyAod2hlcmUgZWFjaCBuYW1lIGNvdWxkIGJlIGVpdGhlciB0aGUgc2ltcGxlIHN0cmluZyBvciB0aGUgZGljdCkKLSMgLSBtYXliZSBnZXQgcmlkIG9mIHNwZWNpZnlpbmcgbW9kZSBpbiB0aGUgY29tbWFuZCBkZXNjcmlwdGlvbi4gSW5zdGVhZCBhIGNvbW1hbmQKLSMgICBkZXNjcmlwdGlvbiB3b3VsZCBiZSBlbmFibGVkIGZvciBhIG1vZGUgYnkgYWRkaW5nIGl0IHRvIHRoZSBsaXN0IG9mIGNvbW1hbmRzIHRoYXQKLSMgICBhcmUgZW5hYmxlZCBmb3IgdGhhdCBtb2RlLiBUaGlzIHdvdWxkIGhhcHBlbiBpbiBzb21lIGRhdGEgKG9yIGNvZGUpIHRoYXQncyBzZXBhcmF0ZQotIyAgIGZyb20gdGhlIGNvbW1hbmQgZGVzY3JpcHRpb24uIEkgdGhpbmsgdGhpcyB3b3VsZCBiZSBiZXR0ZXIgc28gdGhhdCB3ZSBjYW4gcHJ1bmUKLSMgICB0aGUgbnVtYmVyIG9mIGNvbW1hbmQgZGVzY3JpcHRpb24gd2UgbmVlZCB0byBwYXJzZSBmb3IgYSBnaXZlbiBjb21tYW5kLiBPdGhlcndpc2UKLSMgICB3ZSBhbHdheXMgbmVlZCB0byBjaGVjayBhZ2FpbnN0IGFsbCBjb21tYW5kIGRlc2NyaXB0aW9ucy4KLSMgLSBkaXN0aW5ndWlzaCBiZXR3ZWVuIGV4YWN0IG1hdGNoIHZzLiBwcmVmaXggbWF0Y2ggaW4gYSBjaG9pY2VzIGJsb2NrLiBJZiB0aGVyZSdzCi0jICAgb25seSBhIHNpbmdsZSBleGFjdCBtYXRjaCB0aGVuIHRoYXQgc2hvdWxkIGdldCBwcmVjZWRlbmNlIG92ZXIgb3RoZXIgbWF0Y2hlcwotIyAgIGFuZCBub3QgYmUgY29uc2lkZXJlZCBhbiBhbWJpZ3VvdXMgY29tbWFuZAotIyAtIGFkZCAnZGVmYXVsdCcgYXR0cmlidXRlIGZvciB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhbiBvcHRpb25hbCBmaWVsZCBpZiBpdCdzIG5vdAotIyAgIHNwZWNpZmllZC4gU2hvdWxkIHRoaXMgYmUgdHJlYXRlZCBhcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCAnb3B0aW9uYWwnPwotIyAtIGNvbnZlcnQgcmVzZXQtZmllbGRzIGFjdGlvbiB0byB1c2UgZmllbGRzIGluc3RlYWQgb2YgYXJnX2RhdGEuIElmIHdlJ3JlIHVzaW5nCi0jICAgbmV3LXN0eWxlIGhhY2sgdGhlbiB3ZSBwcm9iYWJseSBuZWVkIHRvIGhhdmUgaXQgYmUgbmV3LXJlc2V0LWZpZWxkcyBvciBzb21ldGhpbmcKLSMgICBsaWtlIHRoYXQuCi0jIC0gY2xlYW4gdXAgdXNhZ2Ugb2YgcmV0dXJuIHZhbHVlcyBmb3IgdGhlIGNvbW1hbmQgaGFuZGxpbmcgbWV0aG9kcywgaS5lLgotIyAgIGhhbmRsZV9vbmVfY29tbWFuZCBhbmQgYWxsIG9mIHRoZSBvdGhlciBoYW5kbGVfKiBtZXRob2RzLiBTaG91bGQgbWF5YmUKLSMgICBqdXN0IG5vdCByZXR1cm4gYW55dGhpbmcgZm9yIGFueSBvZiB0aG9zZSBhbmQganVzdCBjYXB0dXJlIHRoZQotIyAgIG1hdGNoZXMvY29tcGxldGlvbiBpbiB0aGUgZGF0YSBtZW1iZXIuCi0jIC0gZml4IGJlaGF2aW9yIGZvciBwcmludGluZyA8Y3I+IGFzIGEgY29tcGxldGlvbiBhdCB0aGUgZW5kIG9mIGEKLSMgICBjb21wbGV0ZSBjb21tYW5kLiBSaWdodCBub3cgdGhlcmUncyBhIGJ1ZyB3aGVyZSBpdCB3aWxsIHN0aWxsIHByaW50IG91dAotIyAgIHRoZSBzeW50YXggaGVscC4KLSMgLSBzdXBwb3J0IHN0cmluZyB0b2tlbiBhcmd1bWVudCBhcyBqdXN0IGEgc2ltcGxlIHN0cmluZyBpbiB0aGUgYXJndW1lbnQgbGlzdAotIyAtIGN1c3RvbSBjb21wbGV0aW9uIHByb2MgZm9yIGNpZHIgYWRkcmVzcy4gQ3VycmVudGx5IGlmIGEgY29tbWFuZCBkZXNjcmlwdGlvbgotIyAgIHN1cHBvcnRzIGVpdGhlciBjaWRyIG9yIGlwK25ldG1hc2sgaXQgd2lsbCBoYW5kbGUgZWl0aGVyIGZvciBjb21tYW5kIGV4ZWN1dGlvbgotIyAgIGJ1dCBjb21wbGV0aW9uIHdpbGwgb25seSBoYW5kbGUgdGhlIGlwK25ldG1hc2sgdmFyaWFudC4gV2l0aCBhIGN1c3RvbQotIyAgIGNvbXBsZXRpb24gcHJvYyB5b3UgY291bGQgY29tYmluZSB0aGUgaXArbmV0bWFzayBmcm9tIHRoZSBkYiBhbmQgZm9ybWF0IGFzCi0jICAgYSBjaWRyIGFkZHJlc3MgYW5kIHJldHVybiB0aGF0IGFzIGEgY29tcGxldGlvbgotCi0KLQotY29tbWFuZF90eXBlX2RlZmF1bHRzID0ge30KLQotCi0jIFdlIHJlbHkgb24gdGhlIGhpZ2hlciBsZXZlbCBDTEkgb2JqZWN0IGZvciBjZXJ0YWluIG9wZXJhdGlvbnMsIHNvIHdlJ3JlIGluaXRpYWxpemVkCi0jIHdpdGggYSByZWZlcmVuY2UgdGhhdCdzIHVzZWQgdG8gY2FsbCBiYWNrIHRvIGl0LiBUaGlzIGlzIGluaXRpYWxpemVkIGluIGluaXRfY29tbWFuZC4KLXNkbnNoID0gTm9uZQotCi0jIGNvbW1hbmRfcmVnaXN0cnkgaXMgdGhlIGxpc3Qgb2YgY29tbWFuZCBkZXNjcmlwdGlvbnMgdGhhdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZAotIyB2aWEgYWRkX2NvbW1hbmQuIFRoZSByZWFzb24gdGhpcyBpcyBhIGxpc3QgKGkuZS4gaW5zdGVhZCBvZiBhIGRpY3Rpb25hcnkgdGhhdCdzCi0jIGtleWVkIGJ5IHRoZSBjb21tYW5kIG5hbWUpIGlzIHRoYXQncyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91IGNvdWxkIGhhdmUgZGlmZmVyZW50Ci0jIGNvbW1hbmQgZGVzY3JpcHRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZW5hYmxlZCBmb3IgZGlmZmVyZW50IG1vZGVzLgotY29tbWFuZF9yZWdpc3RyeSA9IFtdCi0KLSMgY29tbWFuZF9zdWJtb2RlX3RyZWUgaXMgYSBkaWN0aW9uYXJ5LCB3aGVyZSBlYWNoIHN1Ym1vZGUsIGFuZCBpdHMgY2hpbGRyZW4KLSMgYXJlIHNhdmVkLgotIwotY29tbWFuZF9zdWJtb2RlX3RyZWUgPSB7ICdsb2dpbicgOiB7ICdlbmFibGUnIDogeyAnY29uZmlnJyA6IHt9IH0gfSB9Ci0KLSMgdmFsaWRhdGlvbl9yZWdpc3RyeSBpcyB0aGUgZGljdGlvbmFyeSBvZiB2YWxpZGF0aW9uIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbgotIyByZWdpc3RlcmVkIHZpYSBhZGRfdmFsaWRhdGlvbi4gVGhlIGtleSBpcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYXMgc3BlY2lmaWVkCi0jIGluIHR5cGVkZWYgYW5kIGNvbW1hbmQgZGVzY3JpcHRpb24uIFRoZSB2YWx1ZSBpcyBhIDIgaXRlbSB0dXBsZSB3aGVyZSB0aGUgZmlyc3QKLSMgaXRlbSBpcyB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB0byBpbnZva2UgYW5kIHRoZSBzZWNvbmQgaXRlbSBpcyBhIGRpY3Rpb25hcnkKLSMgZGVzY3JpYmluZyB0aGUgYXJndW1lbnRzIHRoYXQgYXJlIHVzZWQgd2hlbiBpbnZva2luZyB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbi4KLSMgU2VlIHRoZSBjb21tZW50cyBmb3IgX2NhbGxfcHJvYyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZm9ybWF0IG9mIHRoZSAKLSMgZGF0YSBkZXNjcmliaW5nIHRoZSBhcmdzLgotIyBpbnZva2UuCi12YWxpZGF0aW9uX3JlZ2lzdHJ5ID0ge30KLQotIyB0eXBlZGVmX3JlZ2lzdHJ5IGlzIHRoZSBkaWN0aW9uYXJ5IG9mIHR5cGVkZWYgZGVzY3JpcHRpb25zLiBUaGUga2V5IGlzIHRoZQotIyBuYW1lIG9mIHRoZSB0eXBlZGVmIGFuZCB0aGUgdmFsdWUgaXMgdGhlIHR5cGVkZWYgZGVzY3JpcHRpb24uCi0jIHZhbHVlIGlmIHRoZSBmdW5jdGlvbiB0byBpbnZva2UKLXR5cGVkZWZfcmVnaXN0cnkgPSB7fQotCi0jIGFjdGlvbl9yZWdpc3RyeSBpcyB0aGUgZGljdGlvbmFyeSBvZiBhY3Rpb24gZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQKLSMgdmlhIGFkZF9hY3Rpb24uIFRoZSBrZXkgaXMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGFzIHNwZWNpZmllZCBpbgotIyBjb21tYW5kIGRlc2NyaXB0aW9ucy4gVGhlIHZhbHVlIGlzIGEgMiBpdGVtIHR1cGxlIHdoZXJlIHRoZSBmaXJzdAotIyBpdGVtIGlzIHRoZSBhY3Rpb24gZnVuY3Rpb24gdG8gaW52b2tlIGFuZCB0aGUgc2Vjb25kIGl0ZW0gaXMgYSBkaWN0aW9uYXJ5Ci0jIGRlc2NyaWJpbmcgdGhlIGFyZ3VtZW50cyB0aGF0IGFyZSB1c2VkIHdoZW4gaW52b2tpbmcgdGhlIHZhbGlkYXRpb24gZnVuY3Rpb24uCi0jIFNlZSB0aGUgY29tbWVudHMgZm9yIF9jYWxsX3Byb2MgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiB0aGUgCi0jIGRhdGEgZGVzY3JpYmluZyB0aGUgYXJncy4KLWFjdGlvbl9yZWdpc3RyeSA9IHt9Ci0KLSMgY29tcGxldGlvbl9yZWdpc3RyeSBpcyB0aGUgZGljdGlvbmFyeSBvZiBjb21wbGV0aW9uIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbgotIyByZWdpc3RlcmVkIHZpYSBhZGRfY29tcGxldGlvbi4gVGhlIGtleSBpcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYXMgc3BlY2lmaWVkCi0jIGluIGNvbW1hbmQgZGVzY3JpcHRpb25zLiBUaGUgdmFsdWUgaXMgYSAyIGl0ZW0gdHVwbGUgd2hlcmUgdGhlIGZpcnN0Ci0jIGl0ZW0gaXMgdGhlIGNvbXBsZXRpb24gZnVuY3Rpb24gdG8gaW52b2tlIGFuZCB0aGUgc2Vjb25kIGl0ZW0gaXMgYSBkaWN0aW9uYXJ5Ci0jIGRlc2NyaWJpbmcgdGhlIGFyZ3VtZW50cyB0aGF0IGFyZSB1c2VkIHdoZW4gaW52b2tpbmcgdGhlIHZhbGlkYXRpb24gZnVuY3Rpb24uCi0jIFNlZSB0aGUgY29tbWVudHMgZm9yIF9jYWxsX3Byb2MgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiB0aGUgCi0jIGRhdGEgZGVzY3JpYmluZyB0aGUgYXJncy4KLWNvbXBsZXRpb25fcmVnaXN0cnkgPSB7fQotCi0KLSMgYXJndW1lbnRfZGF0YV9oYW5kbGVyX3JlZ2lzdHJ5IGlzIHRoZSBkaWN0aW9uYXJ5IG9mIGN1c3RvbSBhcmd1bWVudCBkYXRhCi0jIGhhbmRsZXJzIHRoYXQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgdmlhIGFkZF9hcmd1bWVudF9kYXRhX2hhbmRsZXIuIFRoZXNlIGFyZQotIyB1c2VkIGlmIGN1c3RvbSBwcm9jZXNzaW5nIGlzIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhlIGFyZ3VtZW50IHZhbHVlIHRvIHRoZQotIyBkYXRhIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGFyZ3VtZW50IGRhdGEgZGljdGlvbmFyeS4gVGhlIGtleSBpcyB0aGUgbmFtZSBvZgotIyB0aGUgZnVuY3Rpb24gYXMgc3BlY2lmaWVkIGluIGNvbW1hbmQgZGVzY3JpcHRpb25zLiBUaGUgdmFsdWUgaXMgYSAyIGl0ZW0KLSMgdHVwbGUgd2hlcmUgdGhlIGZpcnN0IGl0ZW0gaXMgdGhlIGhhbmRsZXIgZnVuY3Rpb24gdG8gaW52b2tlIGFuZCB0aGUgc2Vjb25kCi0jIGl0ZW0gaXMgYSBkaWN0aW9uYXJ5IGRlc2NyaWJpbmcgdGhlIGFyZ3VtZW50cyB0aGF0IGFyZSB1c2VkIHdoZW4gaW52b2tpbmcKLSMgdGhlIHZhbGlkYXRpb24gZnVuY3Rpb24uIFNlZSB0aGUgY29tbWVudHMgZm9yIF9jYWxsX3Byb2MgZm9yIG1vcmUgaW5mb3JtYXRpb24KLSMgYWJvdXQgdGhlIGZvcm1hdCBvZiB0aGUgZGF0YSBkZXNjcmliaW5nIHRoZSBhcmdzLgotYXJndW1lbnRfZGF0YV9oYW5kbGVyX3JlZ2lzdHJ5ID0ge30KLQotIwotIyBrZWVwIGEgbGlzdCBvZiBhbGwgdGhlIGNvbW1hbmQgbW9kdWxlIG5hbWVzCi1jb21tYW5kX2FkZGVkX21vZHVsZXMgPSB7fQotCi0jCi1jb21tYW5kX3N5bnRheF92ZXJzaW9uID0ge30KLQotZGVmIGFkZF9jb21tYW5kKGNvbW1hbmQpOgotICAgIGNvbW1hbmRfcmVnaXN0cnkuYXBwZW5kKGNvbW1hbmQpCi0KLQotZGVmIG1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZShvYmpfdHlwZSk6Ci0gICAgbWkub2JqX3R5cGVfc291cmNlX3NldF9kZWJ1Z19vbmx5KG9ial90eXBlKQotCi0KLWRlZiBtb2RlbF9vYmpfdHlwZV9lbmFibGVfY2FzY2FkZV9kZWxldGUob2JqX3R5cGUpOgotICAgIG1pLmNhc2NhZGVfZGVsZXRlX3NldF9lbmFibGUob2JqX3R5cGUpCi0KLWRlZiBtb2RlbF9vYmpfdHlwZV93ZWFrX3dpdGhfY2FzY2FkZV9kZWxldGUob2JqX3R5cGUpOgotICAgIG1pLmNhc2NhZGVfZGVsZXRlX2VuYWJsZV9mb3JjZShvYmpfdHlwZSkKLQotZGVmIG1vZGVsX29ial90eXBlX3NldF90aXRsZShvYmpfdHlwZSwgdGl0bGUpOgotICAgIG1pLm9ial90eXBlX3NldF90aXRsZShvYmpfdHlwZSwgdGl0bGUpCi0KLQotZGVmIG1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdChvYmpfdHlwZSwgZmllbGQpOgotICAgIG1pLm9ial90eXBlX2Rpc2FibGVfZWRpdChvYmpfdHlwZSwgZmllbGQpCi0KLQotZGVmIG1vZGVsX29ial90eXBlX3NldF9jYXNlKG9ial90eXBlLCBmaWVsZCwgY2FzZSk6Ci0gICAgbWkuc2V0X29ial90eXBlX2ZpZWxkX2Nhc2Vfc2Vuc2l0aXZlKG9ial90eXBlLCBmaWVsZCwgY2FzZSkKLQotZGVmIG1vZGVsX29ial90eXBlX3NldF9zaG93X3RoaXMob2JqX3R5cGUsIHNob3dfdGhpc19saXN0KToKLSAgICAiIiIKLSAgICBXaGVuIGFuIG9iai10eXBlIGdldHMgZGlzcGxheWVkIHZpYSAnc2hvdyB0aGlzJywgY29tcGxleAotICAgIG9iamVjdHMgbWF5IHJlcXVpcmUgc2V2ZXJhbCBkaWZmZXJlbnQgaXRlbXMgdG8gYmUgZGlzcGxheWVkLgotICAgIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGEgbGlzdCwgd2hlcmUgZWFjaCBpdGVtIGhhcyBzZXZlcmFsCi0gICAgZmllbGRzOiB0aGUgZmlyc3QgaXMgdGhlIG5hbWUgb2YgdGhlIG9iamVjdCB0byBkaXNwbGF5LCBhbmQKLSAgICB0aGUgc2Vjb25kIGlzIHRoZSBmb3JtYXQgdG8gdXNlIGZvciB0aGF0IGRpc3BsYXkKLSAgICAiIiIKLSAgICBtaS5vYmpfdHlwZV9zZXRfc2hvd190aGlzKG9ial90eXBlLCBzaG93X3RoaXNfbGlzdCkKLQotCi1kZWYgY29tbWFuZF9kaWN0X21pbnVzX2xlYygpOgotICAgICMgbGVjIC0tICdsb2dpbicsICdlbmFibGUnLCAnY29uZmlnJy4KLSAgICByZXR1cm4gW3ggZm9yIHggaW4gc2Ruc2guY29tbWFuZF9kaWN0LmtleXMoKQotICAgICAgICAgICAgaWYgeCBub3QgaW4gWydsb2dpbicsICdlbmFibGUnLCAnY29uZmlnJywgJ2NvbmZpZy0nXV0KLQotCi1kZWYgY29tbWFuZF9kaWN0X3N1Ym1vZGVfaW5kZXgoc3VibW9kZSk6Ci0gICAgaWYgc3VibW9kZSBpbiBbJ2xvZ2luJywgJ2VuYWJsZScsICdjb25maWcnLCAnY29uZmlnLSddOgotICAgICAgICByZXR1cm4gc3VibW9kZQotICAgIGlmIHN1Ym1vZGUuc3RhcnRzd2l0aCgnY29uZmlnLScpOgotICAgICAgICByZXR1cm4gc3VibW9kZQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICBwcmludCBfbGluZSgpLCAidW5rbm93biBzdWJtb2RlICIsIHN1Ym1vZGUKLSAgICAKLQotZGVmIGFkZF9jb21tYW5kX21vZGVfcmVjdXJzZShtb2RlX2RpY3QsIG1vZGUsIHN1Ym1vZGUpOgotICAgIGlmIG1vZGUgaW4gbW9kZV9kaWN0OgotICAgICAgICBpZiBub3Qgc3VibW9kZSBpbiBtb2RlX2RpY3RbbW9kZV06Ci0gICAgICAgICAgICBtb2RlX2RpY3RbbW9kZV1bc3VibW9kZV0gPSB7fQotICAgIGVsc2U6Ci0gICAgICAgIGZvciBkIGluIG1vZGVfZGljdC5rZXlzKCk6Ci0gICAgICAgICAgICBhZGRfY29tbWFuZF9tb2RlX3JlY3Vyc2UobW9kZV9kaWN0W2RdLCBtb2RlLCBzdWJtb2RlKQotCi0KLWRlZiBhZGRfY29tbWFuZF9zdWJtb2RlKG1vZGUsIHN1Ym1vZGUpOgotICAgIGFkZF9jb21tYW5kX21vZGVfcmVjdXJzZShjb21tYW5kX3N1Ym1vZGVfdHJlZSwgbW9kZSwgc3VibW9kZSkKLQotZGVmIHNob3dfY29tbWFuZF9zdWJtb2RlX3RyZWVfcmVjdXJzZShtb2RlX2RpY3QsIGxldmVsKToKLSAgICBpZiBsZW4obW9kZV9kaWN0KToKLSAgICAgICAgZm9yIGQgaW4gbW9kZV9kaWN0LmtleXMoKToKLSAgICAgICAgICAgIGluZGV4ID0gY29tbWFuZF9kaWN0X3N1Ym1vZGVfaW5kZXgoZCkKLSAgICAgICAgICAgIGl0ZW1zID0gW3ggaWYgX2lzX3N0cmluZyh4KSBlbHNlIHgucGF0dGVybiBmb3IgeCBpbiBzZG5zaC5jb21tYW5kX2RpY3QuZ2V0KGluZGV4LCAnJyldCi0gICAgICAgICAgICBwcmludCAiICIgKiBsZXZlbCwgZCwgJzogJyArICcsICcuam9pbihpdGVtcykKLSAgICAgICAgICAgIHNob3dfY29tbWFuZF9zdWJtb2RlX3RyZWVfcmVjdXJzZShtb2RlX2RpY3RbZF0sIGxldmVsICsgMikKLQotCi1kZWYgc2hvd19jb21tYW5kX3N1Ym1vZGVfdHJlZSgpOgotICAgIHNob3dfY29tbWFuZF9zdWJtb2RlX3RyZWVfcmVjdXJzZShjb21tYW5kX3N1Ym1vZGVfdHJlZSwgMCkKLQotCi1kZWYgY29tbWFuZF9kaWN0X2FwcGVuZChjb21tYW5kLCBtb2RlLCBuYW1lKToKLSAgICBpZiBub3QgbW9kZSBpbiBzZG5zaC5jb21tYW5kX2RpY3Q6Ci0gICAgICAgIHNkbnNoLmNvbW1hbmRfZGljdFttb2RlXSA9IFtdCi0gICAgaWYgdHlwZShuYW1lKSA9PSBkaWN0OgotICAgICAgICAjIHRoaXMgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24gbmFtZSwgYWRkIHRoZSByZS4KLSAgICAgICAgaWYgbm90ICdwYXR0ZXJuJyBpbiBuYW1lOgotICAgICAgICAgICAgcHJpbnQgJyVzOiBtaXNzaW5nIHBhdHRlcm4nICUgY29tbWFuZFsnc2VsZiddCi0gICAgICAgIG5hbWVbJ3JlJ10gPSByZS5jb21waWxlKG5hbWVbJ3BhdHRlcm4nXSkKLSAgICBzZG5zaC5jb21tYW5kX2RpY3RbbW9kZV0uYXBwZW5kKG5hbWUpCi0KLQotZGVmIGNvbW1hbmRfbmVzdGVkX2RpY3RfYXBwZW5kKGNvbW1hbmQsIG1vZGUsIG5hbWUpOgotICAgIGlmIG5vdCBtb2RlIGluIHNkbnNoLmNvbW1hbmRfbmVzdGVkX2RpY3Q6Ci0gICAgICAgIHNkbnNoLmNvbW1hbmRfbmVzdGVkX2RpY3RbbW9kZV0gPSBbXQotICAgIGlmIHR5cGUobmFtZSkgPT0gZGljdDoKLSAgICAgICAgIyB0aGlzIGlzIGEgcmVndWxhciBleHByZXNzaW9uIG5hbWUsIGFkZCB0aGUgcmUuCi0gICAgICAgIGlmIG5vdCAncGF0dGVybicgaW4gbmFtZToKLSAgICAgICAgICAgIHByaW50ICclczogbWlzc2luZyBwYXR0ZXJuJyAlIGNvbW1hbmRbJ3NlbGYnXQotICAgICAgICBuYW1lWydyZSddID0gcmUuY29tcGlsZShuYW1lWydwYXR0ZXJuJ10pCi0gICAgaWYgbm90IG5hbWUgaW4gc2Ruc2guY29tbWFuZF9uZXN0ZWRfZGljdFttb2RlXToKLSAgICAgICAgc2Ruc2guY29tbWFuZF9uZXN0ZWRfZGljdFttb2RlXS5hcHBlbmQobmFtZSkKLQotCi1kZWYgYWRkX2NvbW1hbmRfdG9fY29tbWFuZF9kaWN0KGNvbW1hbmQsIG1vZGUsIG5hbWUsIHZhcik6Ci0gICAgIwotICAgIGlmIG1vZGUgaW4gWydsb2dpbicsICdlbmFibGUnXToKLSAgICAgICAgY29tbWFuZF9uZXN0ZWRfZGljdF9hcHBlbmQoY29tbWFuZCwgbW9kZSwgbmFtZSkKLSAgICBlbGlmIG1vZGUgPT0gJ2NvbmZpZycgb3IgbW9kZSA9PSAnY29uZmlnLSc6Ci0gICAgICAgIGNvbW1hbmRfZGljdF9hcHBlbmQoY29tbWFuZCwgbW9kZSwgbmFtZSkKLSAgICBlbGlmIG1vZGUuZW5kc3dpdGgoJyonKToKLSAgICAgICAgaW5kZXggPSBtb2RlWzotMV0KLSAgICAgICAgY29tbWFuZF9uZXN0ZWRfZGljdF9hcHBlbmQoY29tbWFuZCwgaW5kZXgsIG5hbWUpCi0gICAgZWxpZiBtb2RlLnN0YXJ0c3dpdGgoImNvbmZpZyIpOgotICAgICAgICBjb21tYW5kX2RpY3RfYXBwZW5kKGNvbW1hbmQsIG1vZGUsIG5hbWUpCi0KLQotCi1kZWYgYWRkX2NvbW1hbmRfdXNpbmdfZGljdChjb21tYW5kX2Rlc2NyaXB0aW9uLCB2YWx1ZSk6Ci0gICAgIiIiCi0gICAgIiIiCi0gICAgaWYgbm90ICdzZWxmJyBpbiB2YWx1ZToKLSAgICAgICAgdmFsdWVbJ3NlbGYnXSA9IGNvbW1hbmRfZGVzY3JpcHRpb24KLQotICAgIGlmIG5vdCAnbmFtZScgaW4gdmFsdWU6Ci0gICAgICAgIHByaW50ICclczogbWlzc2luZyBcJ25hbWVcJzogaW4gZGVzY3JpcHRpb24nICUgY29tbWFuZF9kZXNjcmlwdGlvbgotICAgICAgICByZXR1cm4KLSAgICBpZiBub3QgJ21vZGUnIGluIHZhbHVlOgotICAgICAgICBwcmludCAnJXM6IG1pc3NpbmcgXCdtb2RlXCc6IGluIGRlc2NyaXB0aW9uJyAlIGNvbW1hbmRfZGVzY3JpcHRpb24KLSAgICAgICAgcmV0dXJuCi0KLSAgICBuYW1lID0gdmFsdWVbJ25hbWUnXQotICAgIG1vZGUgPSB2YWx1ZVsnbW9kZSddCi0gICAgY29tbWFuZF90eXBlID0gdmFsdWUuZ2V0KCdjb21tYW5kLXR5cGUnKQotICAgIGlmIGNvbW1hbmRfdHlwZSA9PSAnY29uZmlnLXN1Ym1vZGUnOgotICAgICAgICBzdWJtb2RlID0gdmFsdWUuZ2V0KCdzdWJtb2RlLW5hbWUnKQotICAgICAgICAjIGFkZF9jb21tYW5kX3N1Ym1vZGUobW9kZSxzdWJtb2RlKQotCi0gICAgIyBYWFggdGhpcyBuZWVkcyBpbXByb3ZpbmcKLSAgICBmZWF0dXJlID0gdmFsdWUuZ2V0KCdmZWF0dXJlJykKLSAgICBpZiBmZWF0dXJlIGFuZCBuYW1lIG5vdCBpbiBbJ3Nob3cnXTogCi0gICAgICAgIGlmIG5vdCBuYW1lIGluIHNkbnNoLmNvbW1hbmRfbmFtZV9mZWF0dXJlOgotICAgICAgICAgICAgc2Ruc2guY29tbWFuZF9uYW1lX2ZlYXR1cmVbbmFtZV0gPSBbXQotICAgICAgICBpZiBub3QgZmVhdHVyZSBpbiBzZG5zaC5jb21tYW5kX25hbWVfZmVhdHVyZVtuYW1lXToKLSAgICAgICAgICAgIHNkbnNoLmNvbW1hbmRfbmFtZV9mZWF0dXJlW25hbWVdLmFwcGVuZChmZWF0dXJlKQotICAgICMKLSAgICAjIHBvcHVsYXRlIHNkbnNoLmNvbnRyb2xsZXJfZGljdCBiYXNlZCBvbiB0aGUgbW9kZXMgZGVzY3JpYmVkIGZvciB0aGlzIGNvbW1hbmQKLSAgICAjCi0gICAgaWYgJ21vZGUnIGluIHZhbHVlOgotICAgICAgICBpZiBfaXNfbGlzdChtb2RlKToKLSAgICAgICAgICAgIGZvciBtIGluIG1vZGU6Ci0gICAgICAgICAgICAgICAgYWRkX2NvbW1hbmRfdG9fY29tbWFuZF9kaWN0KHZhbHVlLCBtLCBuYW1lLCBjb21tYW5kX2Rlc2NyaXB0aW9uKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYWRkX2NvbW1hbmRfdG9fY29tbWFuZF9kaWN0KHZhbHVlLCBtb2RlLCBuYW1lLCBjb21tYW5kX2Rlc2NyaXB0aW9uKQotICAgIGFkZF9jb21tYW5kKHZhbHVlKQotCi0KLWRlZiBhZGRfY29tbWFuZHNfZnJvbV9jbGFzcyhhY2xhc3MpOgotICAgICIiIgotICAgICIiIgotICAgIGZvciAodmFyLCB2YWx1ZSkgaW4gdmFycyhhY2xhc3MpLml0ZW1zKCk6Ci0gICAgICAgIGlmIHJlLm1hdGNoKHInLipDT01NQU5EX0RFU0NSSVBUSU9OJCcsIHZhcik6Ci0gICAgICAgICAgICBhZGRfY29tbWFuZF91c2luZ19kaWN0KHZhciwgdmFsdWUpCi0KLQotZGVmIGFkZF9jb21tYW5kX21vZHVsZV9uYW1lKHZlcnNpb24sIG1vZHVsZSk6Ci0gICAgIiIiCi0gICAgU2F2ZSBzb21lIHN0YXRlIGFib3V0IHRoZSB2ZXJzaW9uL21vZHVsZQotICAgICIiIgotICAgIGlmIHZlcnNpb24gbm90IGluIGNvbW1hbmRfc3ludGF4X3ZlcnNpb246Ci0gICAgICAgIGNvbW1hbmRfc3ludGF4X3ZlcnNpb25bdmVyc2lvbl0gPSBbbW9kdWxlXQotICAgIGVsc2U6Ci0gICAgICAgIGNvbW1hbmRfc3ludGF4X3ZlcnNpb25bdmVyc2lvbl0uYXBwZW5kKG1vZHVsZSkKLQotCi1kZWYgYWRkX2NvbW1hbmRzX2Zyb21fbW9kdWxlKHZlcnNpb24sIG1vZHVsZSwgZHVtcF9zeW50YXggPSBGYWxzZSk6Ci0gICAgYWRkX2NvbW1hbmRfbW9kdWxlX25hbWUodmVyc2lvbiwgbW9kdWxlKQotICAgIGZvciBuYW1lIGluIGRpcihtb2R1bGUpOgotICAgICAgICBpZiByZS5tYXRjaChyJy4qQ09NTUFORF9ERVNDUklQVElPTiQnLCBuYW1lKToKLSAgICAgICAgICAgIGlmIG1vZHVsZS5fX25hbWVfXyBub3QgaW4gY29tbWFuZF9hZGRlZF9tb2R1bGVzOgotICAgICAgICAgICAgICAgIGNvbW1hbmRfYWRkZWRfbW9kdWxlc1ttb2R1bGUuX19uYW1lX19dID0gW25hbWVdCi0gICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBjb21tYW5kX2FkZGVkX21vZHVsZXNbbW9kdWxlLl9fbmFtZV9fXToKLSAgICAgICAgICAgICAgICBjb21tYW5kX2FkZGVkX21vZHVsZXNbbW9kdWxlLl9fbmFtZV9fXS5hcHBlbmQobmFtZSkKLSAgICAgICAgICAgIGNvbW1hbmQgPSBnZXRhdHRyKG1vZHVsZSwgbmFtZSkKLSAgICAgICAgICAgIGFkZF9jb21tYW5kX3VzaW5nX2RpY3QobmFtZSwgY29tbWFuZCkKLSAgICAgICAgICAgIGlmIGR1bXBfc3ludGF4OgotICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBDb21tYW5kU3ludGF4ZXIobmFtZSkKLSAgICAgICAgICAgICAgICBoYW5kbGVyLmFkZF9rbm93bl9jb21tYW5kKGNvbW1hbmQpCi0gICAgICAgICAgICAgICAgcHJpbnQgaGFuZGxlci5oYW5kbGVfY29tbWFuZF9yZXN1bHRzKCkKLQotCi1kZWYgYWRkX3ZhbGlkYXRpb24obmFtZSwgdmFsaWRhdGlvbl9wcm9jLCBkZWZhdWx0X2FyZ3M9eydrd2FyZ3MnOgotICAgICAgICB7J3R5cGVkZWYnOiAnJHR5cGVkZWYnLCAndmFsdWUnOiAnJHZhbHVlJ319KToKLSAgICB2YWxpZGF0aW9uX3JlZ2lzdHJ5W25hbWVdID0gKHZhbGlkYXRpb25fcHJvYywgZGVmYXVsdF9hcmdzKQotICAgIAotCi1kZWYgYWRkX3R5cGVkZWYodHlwZWRlZik6Ci0gICAgdHlwZWRlZl9yZWdpc3RyeVt0eXBlZGVmWyduYW1lJ11dID0gdHlwZWRlZgotCi0KLWRlZiBhZGRfYWN0aW9uKG5hbWUsIGFjdGlvbl9wcm9jLCBkZWZhdWx0X2FyZ3M9e30pOgotICAgIGFjdGlvbl9yZWdpc3RyeVtuYW1lXSA9IChhY3Rpb25fcHJvYywgZGVmYXVsdF9hcmdzKQotCi1kZWYgYWN0aW9uX2ludm9rZShuYW1lLCBhY3Rpb25fYXJncyk6Ci0gICAgIyBubyB2YWxpZGF0aW9uIHRvIG1hdGNoIGFyZ3MuCi0gICAgYWN0aW9uID0gYWN0aW9uX3JlZ2lzdHJ5W25hbWVdIAotICAgIGFjdGlvblswXShhY3Rpb25fYXJncykKLSAgICAKLWRlZiBhZGRfY29tcGxldGlvbihuYW1lLCBjb21wbGV0aW9uX3Byb2MsIGRlZmF1bHRfYXJncz0geydrd2FyZ3MnOgotICAgICAgICB7J3dvcmRzJzogJyR3b3JkcycsICd0ZXh0JzogJyR0ZXh0JywgJ2NvbXBsZXRpb25zJzogJyRjb21wbGV0aW9ucyd9fSk6Ci0gICAgY29tcGxldGlvbl9yZWdpc3RyeVtuYW1lXSA9IChjb21wbGV0aW9uX3Byb2MsIGRlZmF1bHRfYXJncykKLQotZGVmIGFkZF9hcmd1bWVudF9kYXRhX2hhbmRsZXIobmFtZSwgaGFuZGxlcl9wcm9jLCBkZWZhdWx0X2FyZ3MgPSAKLSAgICAgICAgeydrd2FyZ3MnOiB7J25hbWUnOiAnJG5hbWUnLCAndmFsdWUnOiAnJHZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiAnJGRhdGEnLCAnc2NvcGVzJzogJyRzY29wZXMnfX0pOgotICAgIGFyZ3VtZW50X2RhdGFfaGFuZGxlcl9yZWdpc3RyeVtuYW1lXSA9IChoYW5kbGVyX3Byb2MsIGRlZmF1bHRfYXJncykKLSAgICAKLWRlZiBhZGRfY29tbWFuZF90eXBlKG5hbWUsIGNvbW1hbmRfZGVmYXVsdHMpOgotICAgIGNvbW1hbmRfdHlwZV9kZWZhdWx0c1tuYW1lXSA9IGNvbW1hbmRfZGVmYXVsdHMKLSAKLWRlZiBfbGluZSgpOgotICAgICMgcHlsaW50OiBkaXNhYmxlPVcwMjEyCi0gICAgZiA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2sKLSAgICByZXR1cm4gJ1slczolZF0nICUgKGYuZl9jb2RlLmNvX2ZpbGVuYW1lLCBmLmZfbGluZW5vKQotCi0jCi0jIFZBTElEQVRJT04gUFJPQ1MKLSMKLQotZGVmIF9pc19yYW5nZV9ib3VuZGFyeShib3VuZGFyeSk6Ci0gICAgIiIiCi0gICAgUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSB2YWxpZCBib3VuZGFyeSB2YWx1ZS4KLSAgICBWYWxpZCB2YWx1ZXMgYXJlIGludGVnZXJzIG9yIHRoZSBzcGVjaWFsIHN0cmluZ3MgJ21pbicgb3IgJ21heCcKLSAgICAoY2FzZS1pbnNlbnNpdGl2ZSkKLSAgICAiIiIKLSAgICByZXR1cm4gKGlzaW5zdGFuY2UoYm91bmRhcnksIG51bWJlcnMuSW50ZWdyYWwpIG9yCi0gICAgICAgIChfaXNfc3RyaW5nKGJvdW5kYXJ5KSBhbmQgKGJvdW5kYXJ5Lmxvd2VyKCkgaW4gKCdtaW4nLCdtYXgnKSkpKQotCi0KLWRlZiBfY29udmVydF9yYW5nZV9ib3VuZGFyeShib3VuZGFyeSwgdGVzdF92YWx1ZSk6Ci0gICAgIiIiCi0gICAgQ29udmVydHMgdGhlIGdpdmVuIGJvdW5kYXJ5IHZhbHVlIHRvIGFuIGFwcHJvcHJpYXRlIGludGVncmFsCi0gICAgYm91bmRhcnkgdmFsdWUuIFRoaXMgaXMgdXNlZCB0byBoYW5kbGUgdGhlIHNwZWNpYWwgIm1pbicgYW5kCi0gICAgJ21heCcgc3RyaW5nIHZhbHVlcy4gVGhlIHRlc3RfdmFsdWUgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSB2YWx1ZQotICAgIHdoaWNoIGlzIGJlaW5nIHRlc3RlZCBmb3Igd2hldGhlciBvciBub3QgaXQncyBpbiBhIHJhbmdlLiBTaW5jZQotICAgIGxvbmcgaW50ZWdyYWwgdmFsdWVzIGhhdmUgYW4gdW5saW1pdGVkIHByZWNpc2lvbiB0aGVyZSBpcyBubwotICAgIGFjdHVhbCBNSU4gb3IgTUFYIHZhbHVlLCBzbyB3ZSBqdXN0IG1ha2UgdGhlIHZhbHVlIG9uZSBsZXNzIG9yCi0gICAgb25lIG1vcmUgdGhhbiB0aGUgdGVzdF92YWx1ZSwgc28gdGhhdCB0aGUgcmFuZ2UgY2hlY2sgaW4KLSAgICB2YWxpZGF0ZV9pbnRlZ2VyIGFnYWluc3QgdGhlIHRlc3RfdmFsdWUgd2lsbCBmYWlsIG9yIHN1Y2NlZWQKLSAgICBhcHByb3ByaWF0ZWx5LiBOb3RlIHRoYXQgdGhpcyBtZWFucyB0aGF0IHRoaXMgZnVuY3Rpb24gbXVzdCBiZQotICAgIGNhbGxlZCBhZ2FpbiBmb3IgZWFjaCBkaWZmZXJlbnQgdGVzdF92YWx1ZSAoaS5lLiB5b3UgY2FuJ3QKLSAgICBwcmUtcHJvY2VzcyB0aGUgcmFuZ2VzIHRvIHJlbW92ZSB0aGUgJ21pbicgYW5kICdtYXgnIHZhbHVlcykuCi0gICAgIiIiCi0gICAgaWYgX2lzX3N0cmluZyhib3VuZGFyeSk6Ci0gICAgICAgIGlmIGJvdW5kYXJ5Lmxvd2VyKCkgPT0gJ21pbic6Ci0gICAgICAgICAgICBib3VuZGFyeSA9IHRlc3RfdmFsdWUgLSAxCi0gICAgICAgIGVsaWYgYm91bmRhcnkubG93ZXIoKSA9PSAnbWF4JzoKLSAgICAgICAgICAgIGJvdW5kYXJ5ID0gdGVzdF92YWx1ZSArIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCdJbnZhbGlkIHJhbmdlIGJvdW5kYXJ5IGNvbnN0YW50OyBtdXN0IGJlICJtaW4iLCAibWF4IiBvciBpbnRlZ2VyIHZhbHVlJykKLSAgICAgICAgCi0gICAgcmV0dXJuIGJvdW5kYXJ5Ci0KLQotZGVmIF9pc19zaW5nbGVfcmFuZ2Uocik6Ci0gICAgIiIiCi0gICAgUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgYXJndW1lbnQgaXMgYSB2YWxpZCBzaW5nbGUgcmFuZ2UuCi0gICAgQSB2YWxpZCByYW5nZSBpcyBlaXRoZXIgYSBzaW5nbGUgaW50ZWdyYWwgdmFsdWUgb3IgZWxzZSBhCi0gICAgc2VxdWVuY2UgKHR1cGxlIG9yIGxpc3QpIHdpdGggMiBlbGVtZW50cywgZWFjaCBvZiB3aGljaCBpcyBhIHZhbGlkCi0gICAgcmFuZ2UgYm91bmRhcnkgdmFsdWUuCi0gICAgIiIiCi0gICAgcmV0dXJuICAoaXNpbnN0YW5jZShyLCBudW1iZXJzLkludGVncmFsKSBvcgotICAgICAgICAgICAgKGlzaW5zdGFuY2UociwgY29sbGVjdGlvbnMuU2VxdWVuY2UpIGFuZCAobGVuKHIpID09IDIpIGFuZAotICAgICAgICAgICAgIF9pc19yYW5nZV9ib3VuZGFyeShyWzBdKSBhbmQgX2lzX3JhbmdlX2JvdW5kYXJ5KHJbMV0pKSkKLQotCi1kZWYgX2NoZWNrX29uZV9yYW5nZShyKToKLSAgICAiIiIKLSAgICBDaGVja3MgdGhhdCB0aGUgYXJndW1lbnQgaXMgYSB2YWxpZCBzaW5nbGUgcmFuZ2UgYXMgZGV0ZXJtaW5lZAotICAgIGJ5IF9pc19zaW5nbGVfcmFuZ2UuCi0gICAgSWYgaXQgaXMsIHRoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgTm9uZS4KLSAgICBJdCBpdCdzIG5vdCwgdGhlbiBhIFJhbmdlU3ludGF4RXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4KLSAgICAiIiIKLSAgICBpZiBub3QgX2lzX3NpbmdsZV9yYW5nZShyKToKLSAgICAgICAgcmFpc2UgZXJyb3IuUmFuZ2VTeW50YXhFcnJvcihzdHIocikpCi0KLQotZGVmIF9jaGVja19yYW5nZShyKToKLSAgICAiIiIKLSAgICBDaGVja3MgdGhhdCB0aGUgYXJndW1lbnQgaXMgYSB2YWxpZCByYW5nZS4KLSAgICBJZiBpdCBpcywgdGhlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBOb25lLgotICAgIEl0IGl0J3Mgbm90LCB0aGVuIGEgUmFuZ2VTeW50YXhFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgotICAgIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgc2VlbSB0byBiZSB1c2VkIGFueW1vcmUuIFJlbW92ZT8KLSAgICAiIiIgCi0gICAgaWYgX2lzX3NpbmdsZV9yYW5nZShyKToKLSAgICAgICAgX2NoZWNrX29uZV9yYW5nZShyKQotICAgIGVsaWYgaXNpbnN0YW5jZShyLCBjb2xsZWN0aW9ucy5TZXF1ZW5jZSk6Ci0gICAgICAgIGZvciByMiBpbiByOgotICAgICAgICAgICAgX2NoZWNrX29uZV9yYW5nZShyMikKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBlcnJvci5SYW5nZVN5bnRheEVycm9yKHN0cihyKSkKLQotCi1kZWYgX2xvb2t1cF90eXBlZGVmX3ZhbHVlKHR5cGVkZWYsIG5hbWUpOgotICAgICIiIgotICAgIExvb2sgdXAgdGhlIGdpdmVuIG5hbWUgaW4gYSB0eXBlZGVmLgotICAgIElmIGl0J3Mgbm90IGZvdW5kIGluIHRoZSBnaXZlbiB0eXBlZGVmIGl0IHJlY3Vyc2l2ZWx5IHNlYXJjaGVzCi0gICAgZm9yIHRoZSB2YWx1ZSBpbiB0aGUgYmFzZSB0eXBlZGVmcy4KLSAgICBSZXR1cm5zIE5vbmUgaWYgdGhlIHZhbHVlIGlzIG5vdCBmb3VuZC4KLSAgICBGSVhNRTogTm90ZSB0aGF0IHRoaXMgbWVhbnMgdGhlcmUncyBjdXJyZW50bHkgbm8gd2F5IHRvIGRpc3Rpbmd1aXNoCi0gICAgYmV0d2VlbiBhbiBleHBsaWNpdCBOb25lIHZhbHVlIGFuZCB0aGUgbmFtZSBub3QgYmVpbmcgc3BlY2lmaWVkLgotICAgICIiIgotICAgIGFzc2VydCB0eXBlZGVmIGlzIG5vdCBOb25lCi0gICAgYXNzZXJ0IG5hbWUgaXMgbm90IE5vbmUKLSAgICAKLSAgICAjIENoZWNrIGlmIHRoZSB0eXBlZGVmIGhhcyB0aGUgYXR0cmlidXRlCi0gICAgdmFsdWUgPSB0eXBlZGVmLmdldChuYW1lKQotICAgIGlmIHZhbHVlOgotICAgICAgICByZXR1cm4gdmFsdWUKLSAgICAKLSAgICAjIE90aGVyd2lzZSwgc2VlIGlmIGl0J3MgZGVmaW5lZCBpbiB0aGUgYmFzZSB0eXBlKHMpCi0gICAgYmFzZV90eXBlX25hbWUgPSB0eXBlZGVmLmdldCgnYmFzZS10eXBlJykKLSAgICBpZiBiYXNlX3R5cGVfbmFtZToKLSAgICAgICAgYmFzZV90eXBlZGVmID0gdHlwZWRlZl9yZWdpc3RyeS5nZXQoYmFzZV90eXBlX25hbWUpCi0gICAgICAgIGlmIG5vdCBiYXNlX3R5cGVkZWY6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcignVW5rbm93biB0eXBlIG5hbWU6ICVzJyAlIGJhc2VfdHlwZV9uYW1lKQotICAgICAgICByZXR1cm4gX2xvb2t1cF90eXBlZGVmX3ZhbHVlKGJhc2VfdHlwZWRlZiwgbmFtZSkKLQotICAgIHJldHVybiBOb25lCi0KLQotZGVmIF9yYWlzZV9hcmd1bWVudF92YWxpZGF0aW9uX2V4Y2VwdGlvbih0eXBlZGVmLCB2YWx1ZSwgZGV0YWlsLCBleHBlY3RlZF90b2tlbnM9Tm9uZSk6Ci0gICAgIiIiCi0gICAgQ2FsbGVkIHdoZW4gYW4gYXJndW1lbnQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgdHlwZS4gUmFpc2VzIGFuCi0gICAgQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IgZXhjZXB0aW9uLiBUaGUgbWVzc2FnZSBmb3IgdGhlIGV4Y2VwdGlvbgotICAgIGNhbiBiZSBjdXN0b21pemVkIGJ5IHNwZWNpZnlpbmcgYSBlcnJvciBmb3JtYXQgc3RyaW5nIGluIHRoZQotICAgIHR5cGUgZGVmaW5pdGlvbi4gVGhlIGZvcm1hdCBzdHJpbmcgaXMgY2FsbGVkICcgdmFsaWRhdGlvbi1lcnJvci1mb3JtYXQnLgotICAgIFRoZSBmb3JtYXQgc3RyaW5nIGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzdWJzdGl0dXRpb24gdmFyaWFibGVzOgotICAgIC0gJ3R5cGVkZWYnOiBUaGUgbmFtZSBvZiB0aGUgdHlwZWRlZgotICAgIC0gJ3ZhbHVlJzogVGhlIHZhbHVlIHRoYXQgZGlkbid0IG1hdGNoIHRoZSB0eXBlZGVmIHJlc3RyaWN0aW9ucwotICAgIC0gJ2RldGFpbCc6IEFkZGl0aW9uYWwgbWVzc2FnZSBmb3IgdGhlIG5hdHVyZSBvZiB0aGUgdHlwZSBtaXNtYXRjaAotICAgIFRoZSBkZWZhdWx0IGZvcm1hdCBzdHJpbmcgaXM6ICdJbnZhbGlkICUodHlwZWRlZilzOiAlKHZhbHVlKXM7ICUoZGV0YWlsKXMnLgotICAgICIiIgotICAgIHR5cGVkZWZfbmFtZSA9IHR5cGVkZWYuZ2V0KCdoZWxwLW5hbWUnKQotICAgIGlmIHR5cGVkZWZfbmFtZSBpcyBOb25lOgotICAgICAgICB0eXBlZGVmX25hbWUgPSB0eXBlZGVmLmdldCgnbmFtZScpCi0gICAgICAgIGlmIHR5cGVkZWZfbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgdHlwZWRlZl9uYW1lID0gdHlwZWRlZi5nZXQoJ2ZpZWxkJykKLSAgICAgICAgICAgIGlmIHR5cGVkZWZfbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHR5cGVkZWZfbmFtZSA9ICc8dW5rbm93bi10eXBlPicKLSAgICBpZiBkZXRhaWwgaXMgTm9uZToKLSAgICAgICAgZGV0YWlsID0gJycKLSAgICB2YWxpZGF0aW9uX2Vycm9yX2Zvcm1hdCA9IHR5cGVkZWYuZ2V0KCd2YWxpZGF0aW9uLWVycm9yLWZvcm1hdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCAlKHR5cGVkZWYpczogJSh2YWx1ZSlzOyAlKGRldGFpbClzJykKLSAgICB2YWxpZGF0aW9uX2Vycm9yID0gKHZhbGlkYXRpb25fZXJyb3JfZm9ybWF0ICUKLSAgICAgICAgICAgICAgICAgICAgICAgIHsndHlwZWRlZic6IHR5cGVkZWZfbmFtZSwgJ3ZhbHVlJzogc3RyKHZhbHVlKSwgJ2RldGFpbCc6IGRldGFpbH0pCi0gICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IodmFsaWRhdGlvbl9lcnJvciwgZXhwZWN0ZWRfdG9rZW5zKQotCi0KLSMKLSMgQ09NTUFORCBNT0RVTEUgRlVOQ1RJT05TCi0jCi0KLWRlZiBfZ2V0X2FyZ3MoaXRlbSk6Ci0gICAgIiIiCi0gICAgR2V0cyB0aGUgYXJncyBpdGVtIGZyb20gdGhlIGdpdmVuIGl0ZW0uIFRoZSBpdGVtIG1heSBiZSBhIGNvbW1hbmQKLSAgICBvciBzdWJjb21tYW5kIGRlc2NyaXB0aW9uIG9yIGEgbmVzdGVkIGFyZyBsaXN0IGluc2lkZSBhICdjaG9pY2UnCi0gICAgYXJndW1lbnQuIElmIHRoZXJlJ3Mgbm8gaXRlbSBuYW1lcyAiYXJncyIsIHRoZW4gaXQgcmV0dXJucyBOb25lLgotICAgIElmIHRoZSBhcmdzIGl0ZW0gaXMgYSBzaW5nbGUgYXJndW1lbnQsIHRoZW4gaXQncyBjb252ZXJ0ZWQgaW50bwotICAgIGEgdHVwbGUgY29udGFpbmluZyB0aGF0IHNpbmdsZSBhcmd1bWVudCwgc28gdGhhdCB0aGUgY2FsbGVyIGNhbgotICAgIGFsd2F5cyB0cmVhdCB0aGUgcmV0dXJuIHZhbHVlIGFzIGFuIGl0ZXJhYmxlIHNlcXVlbmNlIG9mIGFyZ3MuCi0gICAgSXQgZG9lc24ndCBkbyBhbnkgYWRkaXRpb25hbCB2YWxpZGF0aW9uIG9mIHRoZSBhcmdzIHZhbHVlCi0gICAgKGUuZy4gaXQgZG9lc24ndCBjaGVjayB0aGF0IHRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cyBhcmUgZGljdCBvYmplY3RzKS4KLSAgICAiIiIKLSAgICBhcmdzID0gaXRlbS5nZXQoJ2FyZ3MnKQotICAgIGlmIGFyZ3MgYW5kIG5vdCBpc2luc3RhbmNlKGFyZ3MsIGNvbGxlY3Rpb25zLlNlcXVlbmNlKToKLSAgICAgICAgYXJncyA9IChhcmdzLCkKLSAgICByZXR1cm4gYXJncwotCi0KLWRlZiBfZ2V0X2Nob2ljZV9hcmdzKGNob2ljZSk6Ci0gICAgaWYgaXNpbnN0YW5jZShjaG9pY2UsIGNvbGxlY3Rpb25zLlNlcXVlbmNlKToKLSAgICAgICAgYXJncyA9IGNob2ljZQotICAgIGVsc2U6Ci0gICAgICAgIGFyZ3MgPSBfZ2V0X2FyZ3MoY2hvaWNlKQotICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgIGFyZ3MgPSAoY2hvaWNlLCkKLSAgICByZXR1cm4gYXJncwotCi0KLWRlZiBfZ2V0X2NvbW1hbmRfYXJnc19zeW50YXhfaGVscF9zdHJpbmcoY29tbWFuZCwgaXNfbm9fY29tbWFuZCwgYXJncyk6Ci0gICAgIiIiCi0gICAgR2V0IHRoZSBzeW50YXggaGVscCBzdHJpbmcgZm9yIGFuIGFyZ3VtZW50IGxpc3QuCi0gICAgIiIiCi0gICAgc3ludGF4X3N0cmluZyA9ICcnCi0gICAgaWYgYXJnczoKLSAgICAgICAgZm9yIGksIGFyZyBpbiBlbnVtZXJhdGUoYXJncyk6Ci0gICAgICAgICAgICBpZiBpID4gMDoKLSAgICAgICAgICAgICAgICBzeW50YXhfc3RyaW5nICs9ICcgJwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgX2lzX3N0cmluZyhhcmcpOgotICAgICAgICAgICAgICAgIHN5bnRheF9zdHJpbmcgKz0gYXJnCi0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgaWYgdHlwZShhcmcpID09IHR1cGxlOgotICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgICAgICBwcmludCBfbGluZSgpLCBjb21tYW5kWydzZWxmJ10sIGFyZwotCi0gICAgICAgICAgICBpZiBpc19ub19jb21tYW5kOgotICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gYXJnLmdldCgnb3B0aW9uYWwtZm9yLW5vJywgRmFsc2UpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gYXJnLmdldCgnb3B0aW9uYWwnLCBGYWxzZSkKLSAgICAgICAgICAgIGlmIG9wdGlvbmFsOgotICAgICAgICAgICAgICAgIHN5bnRheF9zdHJpbmcgKz0gJ1snCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjaG9pY2VzID0gYXJnLmdldCgnY2hvaWNlcycpCi0gICAgICAgICAgICBuZXN0ZWRfYXJncyA9IGFyZy5nZXQoJ2FyZ3MnKQotICAgICAgICAgICAgaWYgbmVzdGVkX2FyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgY2hvaWNlczoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoJ0FuIGFyZ3VtZW50IGNhblwndCBoYXZlIGJvdGggJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICciY2hvaWNlcyIgYW5kICJhcmdzIiBhdHRyaWJ1dGVzJywgY29tbWFuZCkKLSAgICAgICAgICAgICAgICBjaG9pY2VzID0gKG5lc3RlZF9hcmdzLCkKLSAgICAgICAgICAgIGlmIGNob2ljZXM6Ci0gICAgICAgICAgICAgICAgIyBTdXBwcmVzcyBjaG9pY2UgZGVsaW1pdGVycyBpZiB3ZSd2ZSBhbHJlYWR5IGVtaXR0ZWQgdGhlIHNxdWFyZQotICAgICAgICAgICAgICAgICMgYnJhY2tldHMgdG8gaW5kaWNhdGUgYW4gb3B0aW9uYWwgYXJndW1lbnQuIFRoaXMgaXMgc28gd2UgZ2V0Ci0gICAgICAgICAgICAgICAgIyBzb21ldGhpbmcgc2ltcGxlciAoZS5nLiAiW3RoaXMgfCB0aGF0XSIgKSBpbnN0ZWFkIG9mIGdldHRpbmcKLSAgICAgICAgICAgICAgICAjIGRvdWJsZWQgZGVsaW1pdGVycyAoZS5nLiAiW3t0aGlzIHwgdGhhdH1dIikuCi0gICAgICAgICAgICAgICAgaWYgbm90IG9wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICBzeW50YXhfc3RyaW5nICs9ICd7JwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGZvciBqLCBjaG9pY2UgaW4gZW51bWVyYXRlKGNob2ljZXMpOgotICAgICAgICAgICAgICAgICAgICBpZiBqID4gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheF9zdHJpbmcgKz0gJyB8ICcKLSAgICAgICAgICAgICAgICAgICAgY2hvaWNlX2FyZ3MgPSBfZ2V0X2Nob2ljZV9hcmdzKGNob2ljZSkKLSAgICAgICAgICAgICAgICAgICAgY2hvaWNlX3N5bnRheF9zdHJpbmcgPSBfZ2V0X2NvbW1hbmRfYXJnc19zeW50YXhfaGVscF9zdHJpbmcoY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfbm9fY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlX2FyZ3MpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheF9zdHJpbmcgKz0gY2hvaWNlX3N5bnRheF9zdHJpbmcKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgbm90IG9wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICBzeW50YXhfc3RyaW5nICs9ICd9JwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaWVsZCA9IGFyZy5nZXQoJ2ZpZWxkJykKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB0YWcgPSBhcmcuZ2V0KCd0YWcnKQotICAgICAgICAgICAgICAgIGlmIHRhZzoKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4X3N0cmluZyArPSB0YWcgKyAnICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB0b2tlbiA9IGFyZy5nZXQoJ3Rva2VuJykKLSAgICAgICAgICAgICAgICBpZiB0b2tlbjoKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4X3N0cmluZyArPSB0b2tlbgotCi0gICAgICAgICAgICAgICAgaWYgKGZpZWxkICE9IE5vbmUpIGFuZCAoYXJnLmdldCgndHlwZScpICE9ICdib29sZWFuJyk6Ci0gICAgICAgICAgICAgICAgICAgIGhlbHBfbmFtZSA9IGFyZy5nZXQoJ2hlbHAtbmFtZScpCi0gICAgICAgICAgICAgICAgICAgIGlmIGhlbHBfbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfbmFtZSA9ICc8JyArIGhlbHBfbmFtZSArICc+JwotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJnLmdldCgndHlwZScpID09ICdlbnVtJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBhcmcuZ2V0KCd2YWx1ZXMnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgX2lzX3N0cmluZyh2YWx1ZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gKHZhbHVlcywpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfbmFtZSA9ICcgfCAnLmpvaW4odmFsdWVzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsZW4odmFsdWVzKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX25hbWUgPSAneycgKyBoZWxwX25hbWUgKyAnfScKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBoZWxwX25hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9uYW1lID0gJzwnICsgZmllbGQgKyAnPicKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4X3N0cmluZyArPSBoZWxwX25hbWUKLSAgICAgICAgICAgIGlmIG9wdGlvbmFsOgotICAgICAgICAgICAgICAgIHN5bnRheF9zdHJpbmcgKz0gJ10nCi0gICAgICAgICAgICAgICAgCi0gICAgcmV0dXJuIHN5bnRheF9zdHJpbmcKLQotCi1kZWYgX2dldF9jb21tYW5kX3N5bnRheF9oZWxwX3N0cmluZyhjb21tYW5kLCBjb21tYW5kX3ByZWZpeF9zdHJpbmcpOgotICAgIHRyeToKLSAgICAgICAgcGFydHMgPSBbXQotICAgICAgICBpZiBjb21tYW5kX3ByZWZpeF9zdHJpbmc6Ci0gICAgICAgICAgICBwYXJ0cy5hcHBlbmQoY29tbWFuZF9wcmVmaXhfc3RyaW5nKQotICAgICAgICBjb21tYW5kX25hbWUgPSBfZ2V0X2NvbW1hbmRfdGl0bGUoY29tbWFuZCkKLSAgICAgICAgcGFydHMuYXBwZW5kKGNvbW1hbmRfbmFtZSkKLSAgICAgICAgYXJncyA9IF9nZXRfYXJncyhjb21tYW5kKQotICAgICAgICBhcmdzX3N5bnRheF9oZWxwX3N0cmluZz0nJwotICAgICAgICBpZiBhcmdzOgotICAgICAgICAgICAgYXJnc19zeW50YXhfaGVscF9zdHJpbmcgPSBfZ2V0X2NvbW1hbmRfYXJnc19zeW50YXhfaGVscF9zdHJpbmcoY29tbWFuZCwgRmFsc2UsIGFyZ3MpCi0gICAgICAgICAgICBwYXJ0cy5hcHBlbmQoYXJnc19zeW50YXhfaGVscF9zdHJpbmcpCi0KLSAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgIGlmIHNkbnNoLmRlYnVnIG9yIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgbmFtZSA9IGNvbW1hbmRbJ3NlbGYnXSArICJcbiAgIgotCi0gICAgICAgIGlmIGlzX25vX2NvbW1hbmRfc3VwcG9ydGVkKGNvbW1hbmQpIGFuZCBjb21tYW5kX3ByZWZpeF9zdHJpbmcgIT0gJ25vJzoKLSAgICAgICAgICAgIG5vX3N5bnRheCA9IF9nZXRfY29tbWFuZF9hcmdzX3N5bnRheF9oZWxwX3N0cmluZyhjb21tYW5kLCBUcnVlLCBhcmdzKQotICAgICAgICAgICAgaWYgJyAnLmpvaW4obm9fc3ludGF4KSA9PSAnICcuam9pbihhcmdzX3N5bnRheF9oZWxwX3N0cmluZyk6Ci0gICAgICAgICAgICAgICAgY29tbWFuZF9zeW50YXhfaGVscF9zdHJpbmcgPSBuYW1lICsgJ1tub10gJyArJyAnLmpvaW4ocGFydHMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBbICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICcgJy5qb2luKHBhcnRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgKyAnbm8gJyArIGNvbW1hbmRfbmFtZSArICcgJyArIG5vX3N5bnRheAotICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21tYW5kX3N5bnRheF9oZWxwX3N0cmluZyA9IG5hbWUgKyAnICcuam9pbihwYXJ0cykKLQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgIGlmIHNkbnNoLmRlYnVnIG9yIHNkbnNoLmRlYnVnX2JhY2t0cmFjZToKLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcihzdHIoZSkpCi0gICAgCi0gICAgcmV0dXJuIGNvbW1hbmRfc3ludGF4X2hlbHBfc3RyaW5nCi0KLQotZGVmIF9xdWlja19jb21tYW5kX3N5bnRheChjb21tYW5kKToKLSAgICB0aXRsZSA9IF9nZXRfY29tbWFuZF90aXRsZShjb21tYW5kKQotICAgIGFyZ3MgPSBfZ2V0X2FyZ3MoY29tbWFuZCkKLSAgICBhcmdzX3N5bnRheF9oZWxwX3N0cmluZyA9IF9nZXRfY29tbWFuZF9hcmdzX3N5bnRheF9oZWxwX3N0cmluZyhjb21tYW5kLCBGYWxzZSwgYXJncykKLSAgICByZXR1cm4gJyAnLmpvaW4oKHRpdGxlLCBhcmdzX3N5bnRheF9oZWxwX3N0cmluZykpCi0KLQotZGVmIHJlZm9ybWF0X2xpbmUoc3RyaW5nLCB3aWR0aCwgaW5kZW50LCByZWN1cnNlKToKLQotICAgIHJlc3VsdCA9IFtdCi0gICAgc3BsaXRfY2hhcnMgPSAiMDEyMzQ1Njc4OSIKLSAgICBkZXB0aCA9IDAKLSAgICBhbGlnbiA9IDAKLSAgICBuZXh0X21hcmsgPSBGYWxzZQotCi0gICAgaWYgcmVjdXJzZSA+IDggb3IgaW5kZW50ID4gd2lkdGg6Ci0gICAgICAgIHJldHVybiBbc3RyaW5nXQotCi0gICAgc3RyaW5nID0gJyAnICogaW5kZW50ICsgc3RyaW5nCi0KLSAgICBmb3IgYyBpbiBzdHJpbmc6Ci0gICAgICAgIGlmIGMgaW4gJ3soWzwnOgotICAgICAgICAgICAgaWYgYWxpZ24gPT0gMDoKLSAgICAgICAgICAgICAgICBhbGlnbiA9IGxlbihyZXN1bHQpCi0gICAgICAgICAgICBkZXB0aCArPSAxCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJykKLSAgICAgICAgICAgIG5leHRfbWFyayA9IEZhbHNlCi0gICAgICAgIGVsaWYgYyBpbiAnfSldPic6Ci0gICAgICAgICAgICBuZXh0X21hcmsgPSBGYWxzZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpCi0gICAgICAgICAgICBkZXB0aCAtPSAxCi0gICAgICAgICAgICBpZiBkZXB0aCA9PSAwOgotICAgICAgICAgICAgICAgIG5leHRfbWFyayA9IFRydWUKLSAgICAgICAgZWxpZiBjID09ICd8JzoKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3BsaXRfY2hhcnNbZGVwdGhdKQotICAgICAgICAgICAgbmV4dF9tYXJrID0gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG5leHRfbWFyazoKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNwbGl0X2NoYXJzW2RlcHRoXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpCi0gICAgICAgICAgICBuZXh0X21hcmsgPSBGYWxzZQotCi0gICAgaWYgbGVuKHN0cmluZykgPiB3aWR0aDoKLSAgICAgICAgI3NwbGl0X2RlcHRoID0gMAotICAgICAgICByID0gJycuam9pbihyZXN1bHQpCi0gICAgICAgIHNwbGl0cyA9IE5vbmUKLSAgICAgICAgZm9yIHMgaW4gcmFuZ2UoMCw5KToKLSAgICAgICAgICAgIGlmIHNwbGl0X2NoYXJzW3NdIGluIHI6Ci0gICAgICAgICAgICAgICAgc3BsaXRzID0gJycuam9pbihyZXN1bHQpLnNwbGl0KHNwbGl0X2NoYXJzW3NdKQotICAgICAgICAgICAgICAgIGlmIGxlbihzcGxpdHNbLTFdKSA+IDA6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgbm90IHNwbGl0czoKLSAgICAgICAgICAgIHJldHVybiBbc3RyaW5nXQotCi0gICAgICAgIHBhcnRzID0gW10KLSAgICAgICAgZmlyc3QgPSBsZW4oc3BsaXRzWzBdKSsxCi0gICAgICAgIGYgPSAnICcgKiBhbGlnbgotICAgICAgICBjb2xsZWN0ID0gc3RyaW5nWzA6bGVuKHNwbGl0c1swXSkrMV0KLSAgICAgICAgbW9yZSA9IEZhbHNlCi0gICAgICAgIGZvciBzIGluIHNwbGl0c1sxOl06Ci0gICAgICAgICAgICBpZiBsZW4ocykgPT0gMDoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbGVuKGNvbGxlY3QpICsgbGVuKHMpID4gd2lkdGg6Ci0gICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKGNvbGxlY3QpCi0gICAgICAgICAgICAgICAgY29sbGVjdCA9IGYKLSAgICAgICAgICAgICAgICBtb3JlID0gRmFsc2UKLSAgICAgICAgICAgICMgdGhlIG5leHQgc3BsaXQgY2FuIHN0aWxsIGJlIHRvbyB3aWRlCi0gICAgICAgICAgICBpZiBsZW4oY29sbGVjdCkgKyBsZW4ocykgPiB3aWR0aDoKLSAgICAgICAgICAgICAgICByZWZvcm1hdCA9IHJlZm9ybWF0X2xpbmUoc3RyaW5nW2ZpcnN0OmZpcnN0K2xlbihzKSsxXSwgd2lkdGgsIGFsaWduLCByZWN1cnNlKzEpCi0gICAgICAgICAgICAgICAgZmlyc3QgKz0gbGVuKHMpKzEKLSAgICAgICAgICAgICAgICBwYXJ0cyArPSByZWZvcm1hdAotICAgICAgICAgICAgICAgIGNvbGxlY3QgPSBmCi0gICAgICAgICAgICAgICAgbW9yZSA9IEZhbHNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbGxlY3QgKz0gc3RyaW5nW2ZpcnN0OmZpcnN0K2xlbihzKSsxXQotICAgICAgICAgICAgICAgIGZpcnN0ICs9IGxlbihzKSsxCi0gICAgICAgICAgICAgICAgbW9yZSA9IFRydWUKLSAgICAgICAgaWYgbW9yZToKLSAgICAgICAgICAgIHBhcnRzLmFwcGVuZChjb2xsZWN0KQotICAgICAgICByZXR1cm4gcGFydHMKLQotICAgIHJldHVybiBbc3RyaW5nXQotCi0KLWRlZiBpc0NvbW1hbmRGZWF0dXJlQWN0aXZlKGNvbW1hbmQsIGZlYXR1cmVzKToKLSAgICBpZiBub3QgZmVhdHVyZXM6Ci0gICAgICAgIHJldHVybiBUcnVlICMgdGhpcyBjb21tYW5kIGlzIHVzYWJsZSBhbnl3aGVyZQotICAgIGlmIGZlYXR1cmVzOgotICAgICAgICBpZiBub3QgX2lzX2xpc3QoZmVhdHVyZXMpOgotICAgICAgICAgICAgZmVhdHVyZXMgPSAoZmVhdHVyZXMsKQotICAgICAgICBldmVyeV9mZWF0dXJlc19lbmFibGVkID0gVHJ1ZQotICAgICAgICBmb3IgZmVhdHVyZSBpbiBmZWF0dXJlczoKLSAgICAgICAgICAgIGlmIG5vdCBzZG5zaC5mZWF0dXJlX2VuYWJsZWQoZmVhdHVyZSk6Ci0gICAgICAgICAgICAgICAgZXZlcnlfZmVhdHVyZXNfZW5hYmxlZCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgbm90IGV2ZXJ5X2ZlYXR1cmVzX2VuYWJsZWQ6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIFRydWUKLQotCi1kZWYgaXNfbm9fY29tbWFuZF9zdXBwb3J0ZWQoY29tbWFuZCk6Ci0gICAgIiIiCi0gICAgUHJlZGljYXRlIHRvIHByb3ZpZGUgc29tZSBpbmRpY2F0aW9uIG9mIHdoZXRoZXIgb3Igbm90Ci0gICAgdGhlIGNvbW1hbmQgYWxsb3dzIHRoZSAnbm8nIHByZWZpeAotICAgICIiIgotICAgIGNvbW1hbmRfdHlwZSA9IGNvbW1hbmQuZ2V0KCdjb21tYW5kLXR5cGUnKQotICAgIGlmIGNvbW1hbmRfdHlwZToKLSAgICAgICAgaWYgY29tbWFuZF90eXBlIGluIFsnZGlzcGxheS10YWJsZScsJ2Rpc3BsYXktcmVzdCddOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgbm9fc3VwcG9ydGVkID0gY29tbWFuZC5nZXQoJ25vLXN1cHBvcnRlZCcsIFRydWUpCi0gICAgaWYgbm9fc3VwcG9ydGVkID09IEZhbHNlOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQotCi0KLWNsYXNzIENvbW1hbmRIYW5kbGVyKG9iamVjdCk6Ci0gICAgCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmFjdGlvbnMgPSBOb25lCi0gICAgICAgIHNlbGYucGFyc2VfZXJyb3JzID0gc2V0KCkKLSAgICAgICAgc2VsZi5wcmVmaXggPSAnJwotICAgICAgICAKLSAgICBkZWYgaGFuZGxlX2NvbW1hbmRfZXJyb3Ioc2VsZiwgZSk6Ci0gICAgICAgIHBhc3MKLSAgICAKLSAgICBkZWYgaGFuZGxlX2V4Y2VwdGlvbihzZWxmLCBlKToKLSAgICAgICAgcGFzcwotICAgIAotICAgIGRlZiBoYW5kbGVfdW5zcGVjaWZpZWRfY29tbWFuZChzZWxmKToKLSAgICAgICAgcGFzcwotICAgIAotICAgICMgVGhlc2UgYXJlIHRoZSB2YWx1ZXMgdG8gdXNlIGZvciB0aGUgcHJpb3JpdHkgYXJndW1lbnQgdG8KLSAgICAjIGhhbmRsZV9wYXJzZV9lcnJvcgotICAgIFVORVhQRUNURURfQURESVRJT05BTF9BUkdVTUVOVFNfUFJJT1JJVFkgPSAxMAotICAgIFVORVhQRUNURURfRU5EX09GX0FSR1VNRU5UU19QUklPUklUWSA9IDIwCi0gICAgVU5FWFBFQ1RFRF9UT0tFTl9QUklPUklUWSA9IDMwCi0gICAgVkFMSURBVElPTl9FUlJPUl9QUklPUklUWSA9IDQwCi0gICAgCi0gICAgZGVmIGhhbmRsZV9wYXJzZV9lcnJvcihzZWxmLCBlcnJvcl9tZXNzYWdlLCB3b3JkX2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHksIGV4cGVjdGVkX3Rva2Vucz1Ob25lKToKLSAgICAgICAgIyBOZWVkIHRvIGNvbnZlcnQgYSBsaXN0IHRvIGEgdHVwbGUgZmlyc3QgdG8gbWFrZSBpdCBoYXNoYWJsZSBzbyB0aGF0IHdlCi0gICAgICAgICMgY2FuIGFkZCBpdCB0byB0aGUgcGFyc2VfZXJyb3JzIHNldC4KLSAgICAgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZF90b2tlbnMsIGxpc3QpOgotICAgICAgICAgICAgZXhwZWN0ZWRfdG9rZW5zID0gdHVwbGUoZXhwZWN0ZWRfdG9rZW5zKQotICAgICAgICBzZWxmLnBhcnNlX2Vycm9ycy5hZGQoKGVycm9yX21lc3NhZ2UsIHdvcmRfaW5kZXgsIHByaW9yaXR5LCBleHBlY3RlZF90b2tlbnMpKQotICAgICAgICAKLSAgICBkZWYgaGFuZGxlX2luY29tcGxldGVfY29tbWFuZChzZWxmLCBhcmcsIGFyZ19zY29wZXMsIGFyZ19kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkcywgcGFyc2VkX3RhZywgY29tbWFuZCk6Ci0gICAgICAgIHBhc3MKLSAgICAKLSAgICBkZWYgaGFuZGxlX2NvbXBsZXRlX2NvbW1hbmQoc2VsZiwgcHJlZml4X21hdGNoZXMsIHNjb3BlcywgYXJnX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkcywgYWN0aW9ucywgY29tbWFuZCk6Ci0gICAgICAgIHBhc3MKLSAgICAKLSAgICBkZWYgaGFuZGxlX2NvbW1hbmRfcmVzdWx0cyhzZWxmKToKLSAgICAgICAgcGFzcwotICAgIAotICAgIGRlZiBoYW5kbGVfZmlyc3RfbWF0Y2hlZF9yZXN1bHQoc2VsZiwgY29tbWFuZCk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfbWF0Y2hlZF9yZXN1bHQoc2VsZiwgY29tbWFuZCwgcmVzdWx0LCBhcmdfc2NvcGVzKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGdldF9kZWZhdWx0X3ZhbHVlKHNlbGYsIGFyZyk6Ci0gICAgICAgIGRlZmF1bHQgPSBOb25lCi0gICAgICAgIGlmIHNlbGYuaXNfbm9fY29tbWFuZDoKLSAgICAgICAgICAgIGRlZmF1bHQgPSBhcmcuZ2V0KCdkZWZhdWx0LWZvci1ubycpCi0gICAgICAgICAgICBpZiBkZWZhdWx0IGlzIE5vbmUgYW5kICdmaWVsZCcgaW4gYXJnOgotICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBtaS5maWVsZF9jdXJyZW50X29ial90eXBlX2RlZmF1bHRfdmFsdWUoYXJnWydmaWVsZCddKQotICAgICAgICAgICAgICAgIGlmIGRlZmF1bHQgIT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IHN0cihkZWZhdWx0KQotICAgICAgICBpZiBkZWZhdWx0IGlzIE5vbmU6Ci0gICAgICAgICAgICBkZWZhdWx0ID0gYXJnLmdldCgnZGVmYXVsdCcpCi0gICAgICAgIHJldHVybiBkZWZhdWx0Ci0gICAgCi0KLSAgICBkZWYgZ2V0X21hdGNoaW5nX2NvbW1hbmRzKHNlbGYsIGNvbW1hbmRfd29yZCwgaXNfbm9fY29tbWFuZCwgY29tbWFuZF9saXN0KToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybnMgdGhlIGxpc3Qgb2YgbWF0Y2hpbmcgY29tbWFuZCBjYW5kaWRhdGVzIGZyb20gdGhlIGNvbW1hbmQgbGlzdC4KLSAgICAgICAgCi0gICAgICAgIFRvIGJlIGEgY2FuZGlkYXRlIGEgY29tbWFuZCBkZXNjcmlwdGlvbiBtdXN0IHNhdGlzZnkgdGhyZWUgY3JpdGVyaWE6Ci0gICAgICAgIAotICAgICAgICAxKSBJZiBpdCBzcGVjaWZpZXMgYSBmZWF0dXJlIChvciBhIGxpc3Qgb2YgZmVhdHVyZXMpLCB0aGVuIGFsbCBvZgotICAgICAgICAgICB0aG9zZSBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQuCi0gICAgICAgIDIpIEl0cyAnbW9kZScgdmFsdWUgKHBvc3NpYmx5IGEgbGlzdCBvZiBtb2RlcyBvciBhIG1vZGUgcGF0dGVybikKLSAgICAgICAgICAgbXVzdCBtYXRjaCB0aGUgY3VycmVudCBtb2RlLgotICAgICAgICAzKSBJdCdzIG5hbWUgbXVzdCBiZWdpbiB3aXRoIHRoZSBjb21tYW5kIHByZWZpeAotICAgICAgICA0KSAnTm8nIG9yIG5vdCAnbm8nLCBzb21lIGNvbW1hbmRzIGFsbG93ICdubycsIG90aGVyJ3MgZG9udAotICAgICAgICAKLSAgICAgICAgRWFjaCBpdGVtIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBpcyBhIDIgaXRlbSB0dXBsZSB3aGVyZSB0aGUgZmlyc3QgaXRlbQotICAgICAgICBpcyB0aGUgY29tbWFuZCBkZXNjcmlwdGlvbiBhbmQgdGhlIHNlY29uZCBpdGVtIGlzIGEgYm9vbGVhbiBmb3Igd2hldGhlcgotICAgICAgICB0aGUgY29tbWFuZCBkZXNjcmlwdGlvbiB3YXMgYW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSBjb21tYW5kIHdvcmQKLSAgICAgICAgKGkuZS4gYXMgb3Bwb3NlZCB0byBhIHByZWZpeCBtYXRjaCkuCi0gICAgICAgICIiIgotICAgICAgICBjYW5kaWRhdGVzID0gW10KLSAgICAgICAgY3VycmVudF9tb2RlID0gc2Ruc2guY3VycmVudF9tb2RlKCkKLSAgICAgICAgY29tbWFuZF93b3JkX2xvd2VyID0gY29tbWFuZF93b3JkLmxvd2VyKCkKLSAgICAgICAgCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBjb21tYW5kIGluIGNvbW1hbmRfbGlzdDoKLSAgICAgICAgICAgICAgICAjIElmIHRoaXMgY29tbWFuZCBpcyB0aWVkIHRvIGEgZmVhdHVyZSB0aGVuIGNoZWNrIHRoYXQgdGhlCi0gICAgICAgICAgICAgICAgIyBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gICAgICAgICAgICAgICAgaWYgaXNDb21tYW5kRmVhdHVyZUFjdGl2ZShjb21tYW5kLCBjb21tYW5kLmdldCgnZmVhdHVyZScpKSA9PSBGYWxzZToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgY29tbWFuZCBpcyBlbmFibGVkIGZvciB0aGUgY3VycmVudCBtb2RlCi0gICAgICAgICAgICAgICAgbW9kZXMgPSBjb21tYW5kLmdldCgnbW9kZScpCi0gICAgICAgICAgICAgICAgaWYgbm90IG1vZGVzOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdDb21tYW5kIGRlc2NyaXB0aW9uIG11c3Qgc3BlY2lmeSBhIG1vZGUnLCBjb21tYW5kKQotICAgICAgICAgICAgICAgIGlmIG5vdCBfaXNfbGlzdChtb2Rlcyk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZGVzID0gKG1vZGVzLCkKLSAgICAgICAgICAgICAgICBpZiBub3QgX21hdGNoX2N1cnJlbnRfbW9kZXMoY29tbWFuZCwgY3VycmVudF9tb2RlLCBtb2Rlcyk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgIyBJZiBhICdubycgY29tbWFuZCB3YXMgcmVxdWVzdGVkLCB2ZXJpZnkgdGhpcyBjb21tYW5kCi0gICAgICAgICAgICAgICAgIyBzdXBwb3J0ICdubycgKGNhbiB3ZSB0ZWxsIGZyb20gdGhlIHR5cGU/KQotICAgICAgICAgICAgICAgIGlmIGlzX25vX2NvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19ub19jb21tYW5kX3N1cHBvcnRlZChjb21tYW5kKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgdGhlIG5hbWUgbWF0Y2hlcyB0aGUgY29tbWFuZCB3b3JkCi0gICAgICAgICAgICAgICAgbmFtZSA9IGNvbW1hbmRbJ25hbWUnXQotICAgICAgICAgICAgICAgIGlmIF9pc19zdHJpbmcobmFtZSk6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKGNvbW1hbmRfd29yZF9sb3dlcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhfbWF0Y2ggPSBsZW4oY29tbWFuZF93b3JkKSA8IGxlbihuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQoKGNvbW1hbmQsIHByZWZpeF9tYXRjaCkpCi0gICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5hbWUsIGNvbGxlY3Rpb25zLk1hcHBpbmcpOgotICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBTaG91bGQgc3VwcG9ydCBkaWN0LWJhc2VkIG5hbWVzIHRoYXQgYXJlbid0Ci0gICAgICAgICAgICAgICAgICAgICMgcGF0dGVybnMuIFdpbGwgYmUgdXNlZnVsIHdoZW4gd2Ugc3VwcG9ydCBsaXN0cyBvZiBuYW1lcwotICAgICAgICAgICAgICAgICAgICAjIGZvciBhIGNvbW1hbmQgZGVzY3JpcHRpb24gd2hlcmUgdGhlIGFyZ19kYXRhIGNhbiBiZSBzZXQgd2l0aAotICAgICAgICAgICAgICAgICAgICAjIGRpZmZlcmVudCBmaWVsZHMgYmFzZWQgb24gd2hpY2ggbmFtZSB3YXMgbWF0Y2hlZCBmb3IgdGhlIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgaWYgJ3JlJyBub3QgaW4gbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRbJ25hbWUnXVsncmUnXSA9IHJlLmNvbXBpbGUobmFtZVsncGF0dGVybiddKQotICAgICAgICAgICAgICAgICAgICBpZiBuYW1lWydyZSddLm1hdGNoKGNvbW1hbmRfd29yZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZCgoY29tbWFuZCwgVHJ1ZSkpCi0gICAgICAgICAgICAgICAgIyBGSVhNRTogUHJvYmFibHkgc2hvdWxkIGdldCByaWQgb2YgdGhlIGZvbGxvd2luZyBwYXR0ZXJuIGNvZGUKLSAgICAgICAgICAgICAgICAjIGFuZCBqdXN0IHVzZSB0aGUgYWJvdmUgcGF0dGVybiBjb21waWxhdGlvbiBtZWNoYW5pc20uCi0gICAgICAgICAgICAgICAgIyBUaGUgZm9sbG93aW5nIHdvbid0IHdvcmsgd2hlbiB3ZSByZXF1aXJlIHRoZSBjb21tYW5kCi0gICAgICAgICAgICAgICAgIyBkZXNjcmlwdGlvbnMgdG8gYmUgcHVyZSBkYXRhLCBlLmcuIGRlcml2ZWQgZnJvbSBKU09OIGRhdGEKLSAgICAgICAgICAgICAgICAjIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuCi0gICAgICAgICAgICAgICAgZWxpZiB0eXBlKG5hbWUpID09IGRpY3QgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVbJ3JlJ10ubWF0Y2goY29tbWFuZF93b3JkKToKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQoKGNvbW1hbmQsIEZhbHNlKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcignQ29tbWFuZCBkZXNjcmlwdGlvbiBuYW1lICcKLSAgICAgICAgICAgICAgICAgICAgICAgICdtdXN0IGJlIGVpdGhlciBzdHJpbmcsIGRpY3QsIG9yIHBhdHRlcm4nLCBjb21tYW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIF9lOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVidWcgb3Igc2Ruc2guZGVidWdfYmFja3RyYWNlOgotICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoJ01pc3NpbmcgbW9kZSBvciBuYW1lOicsIGNvbW1hbmQpCi0gICAgICAgIAotICAgICAgICByZXR1cm4gY2FuZGlkYXRlcwotICAgIAotICAgIGRlZiBjaGVja19jb21tYW5kX3R5cGVfYW5kX2FjdGlvbnMoc2VsZiwgY3VycmVudF9zY29wZSwgc2NvcGVzLCBhY3Rpb25zKToKLSAgICAgICAgCi0gICAgICAgICMgUHVzaCB0aGUgc2NvcGVzIGZvciB0aGUgY29tbWFuZCBkZWZhdWx0cyBhbmQgdGhlIGNvbW1hbmQgaXRzZWxmCi0gICAgICAgICMgb250byB0aGUgc2NvcGUgc3RhY2suCi0gICAgICAgIGNvbW1hbmRfdHlwZSA9IGN1cnJlbnRfc2NvcGUuZ2V0KCdjb21tYW5kLXR5cGUnKQotICAgICAgICBjb21tYW5kX2RlZmF1bHRzID0gY29tbWFuZF90eXBlX2RlZmF1bHRzLmdldChjb21tYW5kX3R5cGUsIHt9KQotICAgICAgICBpZiBjb21tYW5kX2RlZmF1bHRzOgotICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSBjb21tYW5kIGRlZmF1bHRzIHdpdGggdGhlIG5ldyBvbmVzCi0gICAgICAgICAgICBzY29wZXMgPSBzY29wZXNbOi0xXSArIFtjb21tYW5kX2RlZmF1bHRzXQotCi0gICAgICAgICMgR2V0IHRoZSBhY3Rpb25zIGZvciB0aGUgY29tbWFuZAotICAgICAgICBhY3Rpb25fbmFtZSA9ICduby1hY3Rpb24nIGlmIHNlbGYuaXNfbm9fY29tbWFuZCBlbHNlICdhY3Rpb24nCi0gICAgICAgIGN1cnJlbnRfc2NvcGVfYWN0aW9ucyA9IGN1cnJlbnRfc2NvcGUuZ2V0KGFjdGlvbl9uYW1lKQotICAgICAgICBpZiBjdXJyZW50X3Njb3BlX2FjdGlvbnMgb3IgY29tbWFuZF9kZWZhdWx0czoKLSAgICAgICAgICAgIGFjdGlvbnMgPSBfbG9va3VwX2luX3Njb3BlcyhhY3Rpb25fbmFtZSwgc2NvcGVzKQotICAgICAgICAgICAgaWYgYWN0aW9ucyBpcyBOb25lOgotICAgICAgICAgICAgICAgIGFjdGlvbnMgPSBbXQotICAgICAgICAgICAgZWxpZiBub3QgX2lzX2xpc3QoYWN0aW9ucyk6Ci0gICAgICAgICAgICAgICAgYWN0aW9ucyA9IFthY3Rpb25zXQotCi0gICAgICAgICAgICAjIFVwZGF0ZSB0aGUgYWN0aW9ucyB3aXRoIHRoZSBzY29wZXMgdGhhdCB3ZXJlIGluIGVmZmVjdCBhdCB0aGUgcG9pbnQKLSAgICAgICAgICAgICMgd2UgbG9va2VkIHVwIHRoYXQgYWN0aW9uLiBUaGlzIGlzIHNvIHdlIGNhbiByZS1jcmVhdGUgdGhlCi0gICAgICAgICAgICAjIGFwcHJvcHJpYXRlIHNjb3BlcyBsYXRlciB3aGVuIHdlIGV4ZWN1dGUgdGhlIGFjdGlvbi4KLSAgICAgICAgICAgIGFjdGlvbnMgPSBbKGFjdGlvbiwgc2NvcGVzKSBmb3IgYWN0aW9uIGluIGFjdGlvbnNdCi0gICAgICAgIAotICAgICAgICByZXR1cm4gc2NvcGVzLCBhY3Rpb25zCi0gICAgCi0gICAgZGVmIHBhcnNlX2FyZ3VtZW50cyhzZWxmLCBhcmdzLCB3b3Jkcywgc3RhcnRfd29yZF9pbmRleCwgc2NvcGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgYXJnX2RhdGEsIGZpZWxkcywgYWN0aW9ucywgcHJlZml4X21hdGNoZXMsIGNvbW1hbmQpOgotICAgICAgICAiIiIKLSAgICAgICAgUGFyc2UgdGhlIGdpdmVuIGFyZ3MgZnJvbSB0aGUgZ2l2ZW4gY29tbWFuZCB3b3Jkcy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gW1swLCBbXSwgc2NvcGVzLCBhcmdfZGF0YSwgZmllbGRzLCBhY3Rpb25zXV0KLQotICAgICAgICBwYXJzZV9yZXN1bHRzID0gW10KLQotICAgICAgICBhcmcgPSBhcmdzWzBdCi0KLSAgICAgICAgaWYgX2lzX3N0cmluZyhhcmcpOgotICAgICAgICAgICAgYXJnID0geyd0b2tlbic6IGFyZ30KLQotICAgICAgICByZW1haW5pbmdfYXJncyA9IGFyZ3NbMTpdCi0KLSAgICAgICAgYXJnX3Njb3BlcyA9IFthcmddICsgc2NvcGVzCi0gICAgICAgIGFyZ19wYXJzZV9yZXN1bHRzID0gW10KLQotICAgICAgICAjIEdldCB0aGUgYXR0cmlidXRlcyB3ZSBuZWVkIGZyb20gdGhlIGFyZwotICAgICAgICAjIEZJWE1FOiBTaG91bGQgcG9zc2libHkgZ2V0IHJpZCBvZiB0aGUgJ2RhdGEnIG1lY2hhbmlzbQotICAgICAgICAjIGFuZCBoYW5kbGUgaXQgdmlhIGEgY3VzdG9tIGR0YSBoYW5kbGVyCi0gICAgICAgIGNob2ljZXMgPSBhcmcuZ2V0KCdjaG9pY2VzJykKLSAgICAgICAgbmVzdGVkX2FyZ3MgPSBhcmcuZ2V0KCdhcmdzJykKLSAgICAgICAgaWYgbmVzdGVkX2FyZ3M6Ci0gICAgICAgICAgICAjIENvbnZlcnQgdGhlIG5lc3RlZCBhcmd1bWVudCBsaXN0IGludG8gYSBjaG9pY2VzIGFyZ3VtZW50IHdpdGgKLSAgICAgICAgICAgICMgYSBzaW5nbGUgY2hvaWNlLCBzbyB0aGF0IHdlIGNhbiBsZXZlcmFnZSB0aGUgY29kZSBiZWxvdyB0aGF0Ci0gICAgICAgICAgICAjIGhhbmRsZXMgY2hvaWNlcwotICAgICAgICAgICAgaWYgY2hvaWNlczoKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcignQW4gYXJndW1lbnQgY2FuXCd0IGhhdmUgYm90aCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnImNob2ljZXMiIGFuZCAiYXJncyIgYXR0cmlidXRlcycsIGNvbW1hbmQpCi0gICAgICAgICAgICBjaG9pY2VzID0gKG5lc3RlZF9hcmdzLCkKLQotICAgICAgICAjIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGlzIGFyZ3VtZW50IGlzIG9wdGlvbmFsLgotICAgICAgICAjIERlZmF1bHQgdG8gbWFraW5nIGFyZ3VtZW50cyBvcHRpb25hbCBmb3Igbm8gY29tbWFuZHMsIGV4Y2VwdCBmb3IgaWYKLSAgICAgICAgIyBpdCdzIGEgY2hvaWNlcyBhcmd1bWVudC4gSW4gdGhhdCBjYXNlIGl0IHdpbGwgcHJvYmFibHkgYmUgYW1iaWd1b3VzCi0gICAgICAgICMgYWJvdXQgd2hpY2ggZmllbGRzIHNob3VsZCBiZSByZXNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZXMsIHNvIHdlIGp1c3QKLSAgICAgICAgIyBkb24ndCB0cnkgdG8gaGFuZGxlIHRoYXQuCi0gICAgICAgIG9wdGlvbmFsX25hbWUgPSAnb3B0aW9uYWwtZm9yLW5vJyBpZiBzZWxmLmlzX25vX2NvbW1hbmQgZWxzZSAnb3B0aW9uYWwnCi0gICAgICAgICNvcHRpb25hbF9kZWZhdWx0X3ZhbHVlID0gc2VsZi5pc19ub19jb21tYW5kCi0gICAgICAgICNvcHRpb25hbF9uYW1lID0gJ29wdGlvbmFsJwotICAgICAgICBvcHRpb25hbF9kZWZhdWx0X3ZhbHVlID0gRmFsc2UKLSAgICAgICAgI29wdGlvbmFsID0gYXJnLmdldChvcHRpb25hbF9uYW1lLCBvcHRpb25hbF9kZWZhdWx0X3ZhbHVlKQotICAgICAgICAjIEZJWE1FOiBEaXNhYmxpbmcgdGhlIHNwZWNpYWwgaGFuZGxpbmcgb2Ygb3B0aW9uYWwgYXJndW1lbnRzIGZvciBubwotICAgICAgICAjIGNvbW1hbmQuIFRoYXQncyBjYXVzaW5nIHNwdXJpb3VzIGNvbXBsZXRpb25zIHRvIGJlIGluY2x1ZGVkLiBOb3Qgc3VyZQotICAgICAgICAjIGhvdyB0byBmaXggdGhhdCByaWdodCBub3cuIERvIHdlIHJlYWxseSBuZWVkIHRoZSBzcGVjaWFsIG9wdGlvbmFsCi0gICAgICAgICMgaGFuZGxpbmcgYW55d2F5PyBEb2VzIENpc2NvIGFjdHVhbGx5IHN1cHBvcnQgdGhhdC4KLSAgICAgICAgIyBGb3IgZXhhbXBsZSwgYmVpbmcgYWJsZSB0byB1c2UgIm5vIGlwIGFkZHJlc3MiIHJhdGhlciB0aGFuCi0gICAgICAgICMgIm5vIGlwIGFkZHJlc3MgMTkyLjE2OC4yLjIgMjU1LjI1NS4yNTUuMCIuIEkgaGF2ZW4ndCBhY3R1YWxseSB0cmllZAotICAgICAgICAjIGJvdGggZm9ybXMgb24gYSBDaXNjbyBzd2l0Y2ggdG8gc2VlIHdoYXQgaXQgZG9lcy4KLSAgICAgICAgb3B0aW9uYWwgPSBhcmcuZ2V0KG9wdGlvbmFsX25hbWUsIG9wdGlvbmFsX2RlZmF1bHRfdmFsdWUpCi0KLSAgICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhpcyBhcmcgb3ZlcnJpZGVzIGVpdGhlciB0aGUgY29tbWFuZCB0eXBlIG9yIGFjdGlvbgotICAgICAgICAjIE5vdGUgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHNldCB0aGUgImFjdGlvbnMiIHZhcmlhYmxlIHdpdGggdGhlCi0gICAgICAgICMgdXBkYXRlZCBhY3Rpb25zIHlldCB1bnRpbCB3ZSBrbm93IHRoYXQgdGhlIGN1cnJlbnQgYXJndW1lbnQKLSAgICAgICAgIyBhY3R1YWxseSBtYXRjaGVkIGFnYWluc3QgdGhlIGNvbW1hbmQgd29yZHMgYW5kIHdhc24ndCBhbiBvcHRpb25hbAotICAgICAgICAjIGFyZ3VtZW50IHRoYXQgd2FzIHNraXBwZWQuCi0gICAgICAgIGFyZ19zY29wZXMsIGFyZ19hY3Rpb25zID0gc2VsZi5jaGVja19jb21tYW5kX3R5cGVfYW5kX2FjdGlvbnMoCi0gICAgICAgICAgICAgICAgYXJnLCBhcmdfc2NvcGVzLCBhY3Rpb25zKQotCi0gICAgICAgIGlmIGNob2ljZXM6Ci0gICAgICAgICAgICBpZiBub3QgX2lzX2xpc3QoY2hvaWNlcyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoJyJjaG9pY2VzIiBhcmd1bWVudCBtdXN0IGJlIGEgbGlzdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3IgdHVwbGUgb2YgYXJndW1lbnQgZGVzY3JpcHRpb25zIGZyb20gd2hpY2ggdG8gY2hvb3NlJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpCi0KLSAgICAgICAgICAgIGZvciBjaG9pY2UgaW4gY2hvaWNlczoKLSAgICAgICAgICAgICAgICBjaG9pY2VfYXJncyA9IF9nZXRfY2hvaWNlX2FyZ3MoY2hvaWNlKQotICAgICAgICAgICAgICAgIGNob2ljZV9hcmdfc2NvcGVzID0gYXJnX3Njb3BlcwotICAgICAgICAgICAgICAgIGNob2ljZV9hY3Rpb25zID0gbGlzdChhcmdfYWN0aW9ucykKLSAgICAgICAgICAgICAgICBjaG9pY2VfcHJlZml4X21hdGNoZXMgPSBsaXN0KHByZWZpeF9tYXRjaGVzKQotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hvaWNlLCBjb2xsZWN0aW9ucy5NYXBwaW5nKToKLSAgICAgICAgICAgICAgICAgICAgY2hvaWNlX2FyZ19zY29wZXMgPSBbY2hvaWNlXSArIGNob2ljZV9hcmdfc2NvcGVzCi0gICAgICAgICAgICAgICAgICAgIGNob2ljZV9vcHRpb25hbCA9IGNob2ljZS5nZXQob3B0aW9uYWxfbmFtZSwgRmFsc2UpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNob2ljZV9vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBjaG9pY2VfYXJnX3Njb3BlcywgY2hvaWNlX2FjdGlvbnMgPSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2NvbW1hbmRfdHlwZV9hbmRfYWN0aW9ucygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2UsIGNob2ljZV9hcmdfc2NvcGVzLCBjaG9pY2VfYWN0aW9ucykKLSAgICAgICAgICAgICAgICBjaG9pY2VfYXJnX2RhdGEgPSBkaWN0KGFyZ19kYXRhKQotICAgICAgICAgICAgICAgIGNob2ljZV9maWVsZHMgPSBsaXN0KGZpZWxkcykKLQotICAgICAgICAgICAgICAgIGNob2ljZV9wYXJzZV9yZXN1bHRzID0gc2VsZi5wYXJzZV9hcmd1bWVudHMoY2hvaWNlX2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgIHdvcmRzLCBzdGFydF93b3JkX2luZGV4LCBjaG9pY2VfYXJnX3Njb3BlcywKLSAgICAgICAgICAgICAgICAgICAgY2hvaWNlX2FyZ19kYXRhLCBjaG9pY2VfZmllbGRzLCBjaG9pY2VfYWN0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgY2hvaWNlX3ByZWZpeF9tYXRjaGVzLCBjb21tYW5kKQotICAgICAgICAgICAgICAgIGZvciBjaG9pY2VfcGFyc2VfcmVzdWx0IGluIGNob2ljZV9wYXJzZV9yZXN1bHRzOgotICAgICAgICAgICAgICAgICAgICB3b3Jkc19tYXRjaGVkID0gY2hvaWNlX3BhcnNlX3Jlc3VsdFswXQotICAgICAgICAgICAgICAgICAgICBuZXdfYXJnX2RhdGEgPSBjaG9pY2VfcGFyc2VfcmVzdWx0WzNdCi0gICAgICAgICAgICAgICAgICAgICMgRklYTUU6IE5vdCBzdXJlIGlmIHRoZSBjb2RlIGJlbG93IGlzIHRoZSBiZXN0IHdheSB0bwotICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZSB0aGluZ3MsIGJ1dCB0aGUgaWRlYSBpcyB0aGF0IHdlIHdhbnQgdG8gZGV0ZWN0Ci0gICAgICAgICAgICAgICAgICAgICMgdGhlIGNhc2Ugd2hlcmUgYW55IG9mIHRoZSBjaG9pY2VzIGluIGEgY2hvaWNlIGJsb2NrCi0gICAgICAgICAgICAgICAgICAgICMgaXMgY29tcG9zZWQgb2YgYWxsIG9wdGlvbmFsIGFyZ3VtZW50cy4gSW4gdGhhdCBjYXNlCi0gICAgICAgICAgICAgICAgICAgICMgdGhlIG92ZXJhbGwgY2hvaWNlIGJsb2NrIHRodXMgYmVjb21lcyBvcHRpb25hbC4gVGhlCi0gICAgICAgICAgICAgICAgICAgICMgcmVhc29uIHdlIHByb3BhZ2F0ZSB0aGUgb3B0aW9uYWwgYXR0cmlidXRlIGlzIHRoYXQgaWYKLSAgICAgICAgICAgICAgICAgICAgIyB0aGVyZSBhcmUgbXVsdGlwbGUgY2hvaWNlcyB0aGF0IGNvbnNpc3QgZW50aXJlbHkgb2YKLSAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCBhcmd1bWVudHMgdGhlbiB3ZSdkIGdldCBtbHV0aXBsZSByZWR1bmRhbnQKLSAgICAgICAgICAgICAgICAgICAgIyBtYXRjaGVzIHdpdGggZXhhY3RseSB0aGUgc2FtZSBhcmdfZGF0YSBhbmQgcHJlZml4X21hdGNoZXMKLSAgICAgICAgICAgICAgICAgICAgIyB3aGljaCB3b3VsZCBsZWFkIHRvIGFuIGFtYmlndW91cyBjb21tYW5kIHdoZW4gd2UgCi0gICAgICAgICAgICAgICAgICAgICMgcHJvY2VzcyB0aGUgcmVzdWx0cyBhdCB0aGUgZW5kLiBTbyBieSBub3QgYWRkaW5nIGEKLSAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZm9yIGVhY2ggb2YgdGhvc2UgY2FzZXMgYW5kIGluc3RlYWQganVzdCBhZGRpbmcKLSAgICAgICAgICAgICAgICAgICAgIyBhIHNpbmdsZSByZXN1bHQgZm9yIHRoZSBvdmVyYWxsIGNob2ljZSBibG9jay4KLSAgICAgICAgICAgICAgICAgICAgIyBUaGUgb3RoZXIgdGhpbmcgd2UgbmVlZCB0byBkbyBpcyBkaXN0aW5ndWlzaCBiZXR3ZWVuCi0gICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgYXJncyBhbmQgZGVmYXVsdCBhcmdzIHdoaWNoIHdpbGwgYm90aCBsZWFkIHRvCi0gICAgICAgICAgICAgICAgICAgICMgY2FzZXMgd2hlcmUgd29yZHNfbWF0Y2hlZCA9PSAwLiBGb3IgdGhlIGRlZmF1bHQgYXJnCi0gICAgICAgICAgICAgICAgICAgICMgY2FzZSB0aG91Z2ggd2Ugd2lsbCBhZGQgdGhlIG1hdGNoIGluIHRoZSBuZXN0ZWQgY2FsbAotICAgICAgICAgICAgICAgICAgICAjIHNpbmNlIGl0IHdpbGwgaGF2ZSBjaGFuZ2VzIHRvIHRoZSBhcmdfZGF0YSB3aGljaCBhcmUKLSAgICAgICAgICAgICAgICAgICAgIyBzaWduaWZpY2FudCBpbiB0aGUgcHJvY2Vzc2luZyBvZiB0aGUgY29tbWFuZCBhY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICMgU2luY2Ugd2UndmUgYWxyZWFkeSBhZGRlZCBhIHJlc3VsdCwgd2UgZG9uJ3Qgd2FudCB0bwotICAgICAgICAgICAgICAgICAgICAjIHNldCB0aGUgb3ZlcmFsbCBjaG9pY2UgdG8gYmUgb3B0aW9uYWwgb3IgZWxzZSBhZ2FpbgotICAgICAgICAgICAgICAgICAgICAjIHdlJ2xsIGdldCBtdWx0aXBsZSBhbWlidW91cyByZXN1bHRzLiBUaGUgd2F5IHdlIGRldGVjdAotICAgICAgICAgICAgICAgICAgICAjIHRoYXQgY2FzZSBpcyBpZiB0aGUgYXJnX2RhdGEgZnJvbSB0aGUgcGFyc2VfcmVzdWx0IGlzCi0gICAgICAgICAgICAgICAgICAgICMgZGlmZmVyZW50IHRoYW4gdGhlIGFyZ19kYXRhIHRoYXQgd2FzIHBhc3NlZCBpbi4gU28KLSAgICAgICAgICAgICAgICAgICAgIyB0aGF0J3Mgd2h5IHdlIHVzZSB0aGUgZm9sbG93aW5nIHRlc3QuCi0gICAgICAgICAgICAgICAgICAgIGlmIHdvcmRzX21hdGNoZWQgPT0gMCBhbmQgbmV3X2FyZ19kYXRhID09IGFyZ19kYXRhOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogSSBkb24ndCB0aGluayB0aGlzIHdpbGwgd29yayBjb3JyZWN0bHkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgaWYvd2hlbiB3ZSBzdXBwb3J0IGRlZmF1bHQgdmFsdWVzIGZvciBhcmdzLiBJbiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGNhc2UgdGhlIGNob2ljZSBtYXkgaGF2ZSBtYXRjaGVkIDAgd29yZHMsIGJ1dCBpdAotICAgICAgICAgICAgICAgICAgICAgICAgIyBtYXkgaGF2ZSB1cGRhdGVkIHRoZSBhcmdfZGF0YSB3aXRoIHNvbWUgZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgIyBhcmd1bWVudCB2YWx1ZXMsIHdoaWNoIHdlJ2xsIGlmIHdlIGRvbid0IGFkZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcGFyc2VfcmVzdWx0IGF0IHRoaXMgcG9pbnQuIE5lZWQgdG8gdGhpbmsgbW9yZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBhYm91dCB0aGlzLgotICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmdfcGFyc2VfcmVzdWx0cy5hcHBlbmQoY2hvaWNlX3BhcnNlX3Jlc3VsdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRva2VuID0gYXJnLmdldCgndG9rZW4nKQotICAgICAgICAgICAgZmllbGQgPSBhcmcuZ2V0KCdmaWVsZCcpCi0gICAgICAgICAgICBhcmdfdHlwZSA9IGFyZy5nZXQoJ3R5cGUnKQotICAgICAgICAgICAgdGFnID0gYXJnLmdldCgndGFnJykKLSAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLmdldF9kZWZhdWx0X3ZhbHVlKGFyZykKLSAgICAgICAgCi0gICAgICAgICAgICB0YWdfcHJlZml4X21hdGNoID0gTm9uZQotICAgICAgICAgICAgcGFyc2VkX3RhZyA9IEZhbHNlCi0gICAgICAgICAgICBpc19tYXRjaCA9IFRydWUKLSAgICAgICAgICAgIHdvcmRzX21hdGNoZWQgPSAwCi0gICAgICAgICAgICByZXN1bHRzID0gTm9uZQotCi0gICAgICAgICAgICAjIEZpcnN0IHRyeSB0byBwYXJzZSB0aGUgdGFnIGlmIHRoZXJlIGlzIG9uZQotICAgICAgICAgICAgaWYgdGFnIGFuZCBsZW4od29yZHMpID4gMDoKLSAgICAgICAgICAgICAgICB3b3JkID0gd29yZHNbMF0KLSAgICAgICAgICAgICAgICBpZiB0YWcubG93ZXIoKS5zdGFydHN3aXRoKHdvcmQubG93ZXIoKSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHRhZy5sb3dlcigpICE9IHdvcmQubG93ZXIoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhZ19wcmVmaXhfbWF0Y2ggPSBbc3RhcnRfd29yZF9pbmRleCt3b3Jkc19tYXRjaGVkLCB0YWddCi0gICAgICAgICAgICAgICAgICAgIHdvcmRzX21hdGNoZWQgKz0gMQotICAgICAgICAgICAgICAgICAgICBwYXJzZWRfdGFnID0gVHJ1ZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX3BhcnNlX2Vycm9yKCJVbmV4cGVjdGVkIGFyZ3VtZW50IGF0IFwiJXNcIiIgJSB3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3dvcmRfaW5kZXgsIENvbW1hbmRIYW5kbGVyLlVORVhQRUNURURfVE9LRU5fUFJJT1JJVFksIHRhZykKLSAgICAgICAgICAgICAgICAgICAgaXNfbWF0Y2ggPSBGYWxzZQotCi0gICAgICAgICAgICAjIEhhbmRsZSBpbmNvbXBsZXRlIGFyZ3VtZW50IG1hdGNoaW5nCi0gICAgICAgICAgICBpZiBpc19tYXRjaDoKLSAgICAgICAgICAgICAgICBpZiB3b3Jkc19tYXRjaGVkIDwgbGVuKHdvcmRzKToKLSAgICAgICAgICAgICAgICAgICAgd29yZCA9IHdvcmRzW3dvcmRzX21hdGNoZWRdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfaW5jb21wbGV0ZV9jb21tYW5kKGFyZywgYXJnX3Njb3BlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdfZGF0YSwgZmllbGRzLCBwYXJzZWRfdGFnLCBjb21tYW5kKQotICAgICAgICAgICAgICAgICAgICBpZiBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgd29yZCA9IGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX3BhcnNlX2Vycm9yKCJVbmV4cGVjdGVkIGVuZCBvZiBjb21tYW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfd29yZF9pbmRleCArIHdvcmRzX21hdGNoZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRIYW5kbGVyLlVORVhQRUNURURfRU5EX09GX0FSR1VNRU5UU19QUklPUklUWSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX21hdGNoID0gRmFsc2UKLQotICAgICAgICAgICAgIyBIYW5kbGUgdGhlIGFyZ3VtZW50IHZhbHVlCi0gICAgICAgICAgICBpZiBpc19tYXRjaDoKLSAgICAgICAgICAgICAgICBpZiB0b2tlbjoKLSAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4ubG93ZXIoKS5zdGFydHN3aXRoKHdvcmQubG93ZXIoKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFRydWUgaWYgYXJnX3R5cGUgPT0gJ2Jvb2xlYW4nIGVsc2UgdG9rZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBbKHZhbHVlLCB0b2tlbildCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9wYXJzZV9lcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgYXJndW1lbnQgYXQgXCIlc1wiIiAlIHdvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3dvcmRfaW5kZXggKyB3b3Jkc19tYXRjaGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kSGFuZGxlci5VTkVYUEVDVEVEX1RPS0VOX1BSSU9SSVRZLCB0b2tlbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX21hdGNoID0gRmFsc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHZhbGlkCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB2YWxpZGF0ZV9hcmd1bWVudChhcmcsIHdvcmQsIGFyZ19zY29wZXMsIGNvbW1hbmQpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvciwgZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rva2VucyA9IGUuZXhwZWN0ZWRfdG9rZW5zCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBleHBlY3RlZF90b2tlbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgX2lzX3N0cmluZyhleHBlY3RlZF90b2tlbnMpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90b2tlbnMgPSAoZXhwZWN0ZWRfdG9rZW5zLCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9wYXJzZV9lcnJvcihzdHIoZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF93b3JkX2luZGV4ICsgd29yZHNfbWF0Y2hlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRIYW5kbGVyLlVORVhQRUNURURfVE9LRU5fUFJJT1JJVFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90b2tlbnMpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX3BhcnNlX2Vycm9yKHN0cihlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3dvcmRfaW5kZXggKyB3b3Jkc19tYXRjaGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEhhbmRsZXIuVkFMSURBVElPTl9FUlJPUl9QUklPUklUWSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX21hdGNoID0gRmFsc2UKLQotICAgICAgICAgICAgaWYgaXNfbWF0Y2g6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdHMgaXMgbm90IE5vbmUKLSAgICAgICAgICAgICAgICBhc3NlcnQgX2lzX2xpc3QocmVzdWx0cykKLSAgICAgICAgICAgICAgICBhc3NlcnQgbGVuKHJlc3VsdHMpID4gMAotICAgICAgICAgICAgICAgICMgSWYgd2UgcmVhY2ggaGVyZSB3ZSd2ZSBzdWNjZXNzZnVsbHkgbWF0Y2hlZCB0aGUgd29yZC4gVGhlIHdvcmQKLSAgICAgICAgICAgICAgICAjIG1heSBoYXZlIGNvbWUgZnJvbSB0aGUgY29tbWFuZHMgd29yZHMgb3IgaXQgbWF5IGhhdmUgY29tZSBmcm9tCi0gICAgICAgICAgICAgICAgIyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGFyZ3VtZW50LiBXZSBvbmx5IHdhbnQgdG8gYnVtcCB0aGUKLSAgICAgICAgICAgICAgICAjIHdvcmRzX21hdGNoZWQgaW4gdGhlIGZvcm1lciBjYXNlLCB3aGljaCBpcyB3aHkgd2UgbmVlZCB0byBjaGVjawotICAgICAgICAgICAgICAgICMgYWdhaW5zdCB0aGUgbGVuZ3RoIG9mIHRoZSB3b3JkcyBhcnJheS4gTm90ZSB0aGF0IHdlIGRvbid0IHdhbnQKLSAgICAgICAgICAgICAgICAjIHRvIGJ1bXAgd29yZHNfbWF0Y2hlZCBpbiB0aGUgY29kZSBhYm92ZSB3aGVyZSB3ZSBnZXQgaXQgZnJvbSAKLSAgICAgICAgICAgICAgICAjIHRoZSBjb21tYW5kIHdvcmRzLCBiZWNhdXNlIHRoZW4gdGhlIHdvcmQgb2Zmc2V0IHdlIHBhc3MgdG8KLSAgICAgICAgICAgICAgICAjIGhhbmRsZV9wYXJzZV9lcnJvciB3b3VsZCBiZSBvZmYgYnkgMSBpZiB0aGUgdmFsaWRhdGlvbiBmYWlscy4KLSAgICAgICAgICAgICAgICBpZiB3b3Jkc19tYXRjaGVkIDwgbGVuKHdvcmRzKToKLSAgICAgICAgICAgICAgICAgICAgd29yZHNfbWF0Y2hlZCArPSAxCi0gICAgICAgICAgICAgICAgZGF0YSA9IGFyZy5nZXQoJ2RhdGEnKQotICAgICAgICAgICAgICAgIGFyZ19kYXRhX2hhbmRsZXIgPSBfbG9va3VwX2luX3Njb3BlcygnZGF0YS1oYW5kbGVyJywgYXJnX3Njb3BlcykKLSAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9maXJzdF9tYXRjaGVkX3Jlc3VsdChjb21tYW5kKQotCi0gICAgICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgbWF0Y2hfdG9rZW4gPSByZXN1bHQKLSAgICAgICAgICAgICAgICAgICAgbmV3X2FyZ19kYXRhID0gZGljdChhcmdfZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgaWYgZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld19hcmdfZGF0YS51cGRhdGUoZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgIyBYWFggc2hvdWxkIHRoZSBtb2RlIHBhc3NlZCBpbiBoZXJlIHRvIHRoZSBoYW5kbGVyIGJlCi0gICAgICAgICAgICAgICAgICAgICMgdGhlIG1vZGUgb2YgdGhlIGNvbW1hbmQsIG9yIHRoZSBjdXJyZW50IG1vZGUgPwotICAgICAgICAgICAgICAgICAgICAjIChtb2RlLW9mLXRoZS1jb21tYW5kIGluIGNhc2UgaXRzIGEgaGlnaGVyIHN1Ym1vZGUgcHVzaCkKLSAgICAgICAgICAgICAgICAgICAgaWYgYXJnX2RhdGFfaGFuZGxlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGludm9jYXRpb25fc2NvcGUgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVGhlICduYW1lJyBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZC4gUmVtb3ZlIG9uY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGV2ZXJ5dGhpbmcncyBiZWVuIGNvbnZlcnRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6IGZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCc6IGZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJzogbmV3X2FyZ19kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcy1uby1jb21tYW5kJzogc2VsZi5pc19ub19jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW50LW1vZGUtb2JqLXR5cGUnOiBzZG5zaC5nZXRfY3VycmVudF9tb2RlX29ial90eXBlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2N1cnJlbnQtbW9kZS1vYmotaWQnOiBzZG5zaC5nZXRfY3VycmVudF9tb2RlX29iaigpCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfYXJnX3Njb3BlcyA9IFtpbnZvY2F0aW9uX3Njb3BlXSArIGFyZ19zY29wZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBfY2FsbF9wcm9jKGFyZ19kYXRhX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudF9kYXRhX2hhbmRsZXJfcmVnaXN0cnksIG5ld19hcmdfc2NvcGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBYWFggb3VnaHQgdG8gbm90IG1hbmFnZSBwYXJhbWV0ZXIgZXhjZXB0aW9ucyBmb3IgX2NhbGxfcHJvYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlYnVnIG9yIHNkbnNoLmRlYnVnX2JhY2t0cmFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfcGFyc2VfZXJyb3Ioc3RyKGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfd29yZF9pbmRleCArIHdvcmRzX21hdGNoZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kSGFuZGxlci5WQUxJREFUSU9OX0VSUk9SX1BSSU9SSVRZKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZV9yZXN1bHRzCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZmllbGQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfYXJnX2RhdGFbZmllbGRdID0gdmFsdWUKLQotICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9tYXRjaGVkX3Jlc3VsdChjb21tYW5kLCByZXN1bHQsIGFyZ19zY29wZXMpCi0KLSAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogRG8gd2Ugc3RpbGwgbmVlZCB0aGUgc2VwYXJhdGUgZmllbGRzIGRpY3Q/Ci0gICAgICAgICAgICAgICAgICAgICMgSWYgc28sIEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyBhY3R1YWxseSBjb3JyZWN0LCBzaW5jZQotICAgICAgICAgICAgICAgICAgICAjIHdlIHdhbnQgZmllbGRzIHRvIG5vdCBuZWNlc3NhcmlseSBiZSBrZXB0IGV4YWN0bHkgaW4KLSAgICAgICAgICAgICAgICAgICAgIyBzeW5jIHdpdGggYXJnX2RhdGEuIE5lZWQgdG8gdGhpbmsgYWJvdXQgdGhpcyBtb3JlLgotICAgICAgICAgICAgICAgICAgICBuZXdfZmllbGRzID0gbmV3X2FyZ19kYXRhLmtleXMoKQotICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4X21hdGNoZXMgPSBsaXN0KHByZWZpeF9tYXRjaGVzKQotICAgICAgICAgICAgICAgICAgICBpZiB0YWdfcHJlZml4X21hdGNoOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeF9tYXRjaGVzLmFwcGVuZCh0YWdfcHJlZml4X21hdGNoKQotICAgICAgICAgICAgICAgICAgICBpZiBsZW4obWF0Y2hfdG9rZW4pID4gbGVuKHdvcmQpOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeF9tYXRjaGVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRfd29yZF9pbmRleCt3b3Jkc19tYXRjaGVkLTEsIG1hdGNoX3Rva2VuXSkKLSAgICAgICAgICAgICAgICAgICAgYXJnX3BhcnNlX3Jlc3VsdHMuYXBwZW5kKFt3b3Jkc19tYXRjaGVkLCBuZXdfcHJlZml4X21hdGNoZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnX3Njb3BlcywgbmV3X2FyZ19kYXRhLCBuZXdfZmllbGRzLCBhcmdfYWN0aW9uc10pCi0KLSAgICAgICAgaWYgb3B0aW9uYWw6Ci0gICAgICAgICAgICBhcmdfcGFyc2VfcmVzdWx0cy5hcHBlbmQoWzAsIHByZWZpeF9tYXRjaGVzLCBzY29wZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19kYXRhLCBmaWVsZHMsIGFjdGlvbnNdKQotCi0gICAgICAgIGZvciBhcmdfcGFyc2VfcmVzdWx0IGluIGFyZ19wYXJzZV9yZXN1bHRzOgotICAgICAgICAgICAgKHdvcmRzX21hdGNoZWQsIHByZWZpeF9tYXRjaGVzLCBhcmdfc2NvcGVzLCBhcmdfZGF0YSwKLSAgICAgICAgICAgICBmaWVsZHMsIGFjdGlvbnMpID0gYXJnX3BhcnNlX3Jlc3VsdAotICAgICAgICAgICAgcmVtYWluaW5nX3dvcmRzID0gd29yZHNbd29yZHNfbWF0Y2hlZDpdCi0gICAgICAgICAgICByZW1haW5pbmdfcGFyc2VfcmVzdWx0cyA9IHNlbGYucGFyc2VfYXJndW1lbnRzKAotICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdfYXJncywgcmVtYWluaW5nX3dvcmRzLAotICAgICAgICAgICAgICAgICAgICBzdGFydF93b3JkX2luZGV4ICsgd29yZHNfbWF0Y2hlZCwgc2NvcGVzLCBhcmdfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgZmllbGRzLCBhY3Rpb25zLCBwcmVmaXhfbWF0Y2hlcywgY29tbWFuZCkKLSAgICAgICAgICAgICMgVGhlIGZpcnN0IGl0ZW0gaW4gZWFjaCB0dXBsZSBpcyB0aGUgd29yZHMgY29uc3VtZWQsIGJ1dAotICAgICAgICAgICAgIyB0aGF0J3MgcmVsYXRpdmUgdG8gdGhlIHJlbWFpbmluZyBhcmdzIHRoYXQgd2UgcGFzc2VkIHRvCi0gICAgICAgICAgICAjIGl0LiBGb3IgdGhlIHBhcnNlIHJlc3VsdHMgZnJvbSB0aGlzIGludm9jYXRpb24gb2YKLSAgICAgICAgICAgICMgcGFyc2UgYXJncyB3ZSBhbHNvIG5lZWQgdG8gaW5jbHVkZSB0aGUgY291bnRzIG9mIHRoZSBhcmdzCi0gICAgICAgICAgICAjIHRoYXQgd2UndmUgYWxyZWFkeSBwYXJzZWQgcGx1cyB0aGUgYXJncyB0aGF0IHdlcmUgcGFyc2VkCi0gICAgICAgICAgICAjIGZvciB0aGUgY3VycmVudCBjaG9pY2UuCi0gICAgICAgICAgICBmb3IgcGFyc2VfcmVzdWx0IGluIHJlbWFpbmluZ19wYXJzZV9yZXN1bHRzOgotICAgICAgICAgICAgICAgIHBhcnNlX3Jlc3VsdFswXSArPSB3b3Jkc19tYXRjaGVkCi0jICAgICAgICAgICAgICAgIHBhcnNlX3ByZWZpeF9tYXRjaGVzID0gcGFyc2VfcmVzdWx0WzFdCi0jICAgICAgICAgICAgICAgIGZvciBtYXRjaCBpbiBwYXJzZV9wcmVmaXhfbWF0Y2hlczoKLSMgICAgICAgICAgICAgICAgICAgIG1hdGNoWzBdICs9IHdvcmRzX21hdGNoZWQKLSAgICAgICAgICAgICAgICBwYXJzZV9yZXN1bHRbMV0gPSBwcmVmaXhfbWF0Y2hlcyArIHBhcnNlX3Jlc3VsdFsxXQotICAgICAgICAgICAgICAgIHBhcnNlX3Jlc3VsdHMuYXBwZW5kKHBhcnNlX3Jlc3VsdCkKLQotICAgICAgICByZXR1cm4gcGFyc2VfcmVzdWx0cwotCi0KLSAgICBkZWYgaGFuZGxlX29uZV9jb21tYW5kKHNlbGYsIGNvbW1hbmQsIHByZWZpeF9tYXRjaCwgd29yZHMpOgotCi0gICAgICAgIGFzc2VydCB3b3JkcyBpcyBub3QgTm9uZQotICAgICAgICBhc3NlcnQgbGVuKHdvcmRzKSA+IDAKLSAgICAgICAgYXNzZXJ0IGNvbW1hbmQgaXMgbm90IE5vbmUKLQotICAgICAgICBmaWVsZHMgPSB7fQotICAgICAgICBjb21tYW5kX3dvcmQgPSB3b3Jkc1swXQotICAgICAgICBjb21tYW5kX25hbWUgPSBjb21tYW5kLmdldCgnbmFtZScpCi0gICAgICAgIGFyZ19kYXRhID0gZGljdChjb21tYW5kLmdldCgnZGF0YScsIHt9KSkKLQotICAgICAgICAjIFRoZSBmaXJzdCB0d28gZWxlbWVudHMgaW4gdGhlIHNjb3BlcyBhcmUgdGhlIGNvbW1hbmQgYW5kIHRoZSBjb21tYW5kCi0gICAgICAgICMgZGVmYXVsdHMuIFRoZSBjb21tYW5kIGRlZmF1bHRzIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggdGhlIHJlYWwKLSAgICAgICAgIyBkZWZhdWx0cyB3aGVuIHdlIGNhbGwgY2hlY2tfY29tbWFuZF9kZWZhdWx0c19hbmRfYWN0aW9ucwotICAgICAgICBzY29wZXMgPSBbY29tbWFuZCwge31dCi0gICAgICAgIGFjdGlvbnMgPSBbXQotICAgICAgICBwcmVmaXhfbWF0Y2hlcyA9IFtdCi0gICAgICAgIGlmIHByZWZpeF9tYXRjaDoKLSAgICAgICAgICAgIHByZWZpeF9tYXRjaGVzLmFwcGVuZChbMCwgY29tbWFuZF9uYW1lXSkKLQotICAgICAgICBpZiBpc2luc3RhbmNlKGNvbW1hbmRfbmFtZSwgY29sbGVjdGlvbnMuTWFwcGluZyk6Ci0gICAgICAgICAgICBmaWVsZCA9IGNvbW1hbmRfbmFtZVsnZmllbGQnXQotICAgICAgICAgICAgaWYgZmllbGQ6Ci0gICAgICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IFRydWUKLSAgICAgICAgICAgICAgICBhcmdfZGF0YVtmaWVsZF0gPSBjb21tYW5kX3dvcmQKLSAgICAgICAgZWxpZiBfaXNfc3RyaW5nKGNvbW1hbmRfbmFtZSk6Ci0gICAgICAgICAgICBhc3NlcnQgY29tbWFuZF9uYW1lLmxvd2VyKCkuc3RhcnRzd2l0aChjb21tYW5kX3dvcmQubG93ZXIoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCdDb21tYW5kIG5hbWUgbXVzdCBiZSBlaXRoZXInCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYSBzdHJpbmcgb3IgYSBkaWN0JywgY29tbWFuZCkKLQotICAgICAgICAjIFdlJ3ZlIGNoZWNrZWQgdGhhdCB0aGUgZmlyc3Qgd29yZCBtYXRjaGVzIHdoYXQgd2UgZXhwZWN0IGZyb20gdGhlCi0gICAgICAgICMgY29tbWFuZCBvYmplY3QgYW5kIG5vdyB3ZSBqdXN0IGNhcmUgYWJvdXQgdGhlIHJlbWFpbmluZyB3b3Jkcywgc28KLSAgICAgICAgIyB3ZSBzdHJpcCBvZmYgdGhlIGluaXRpYWwgY29tbWFuZCB3b3JkLiBOb3RlIHRoYXQgd2Ugc2xpY2UvY29weQotICAgICAgICAjIHRoZSB3b3JkIGxpc3QgaW5zdGVhZCBvZiBkZWxldGluZyB0aGUgZmlyc3Qgd29yZCBpbiBwbGFjZSwgc28gdGhhdAotICAgICAgICAjIHdlIGRvbid0IGFmZmVjdCB0aGUgd29yZCBsaXN0IG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLgotICAgICAgICB3b3JkcyA9IHdvcmRzWzE6XQotCi0gICAgICAgIHNjb3BlcywgYWN0aW9ucyA9IHNlbGYuY2hlY2tfY29tbWFuZF90eXBlX2FuZF9hY3Rpb25zKGNvbW1hbmQsIHNjb3BlcywgYWN0aW9ucykKLQotICAgICAgICAjIFBhcnNlIHRoZSBhcmd1bWVudHMKLSAgICAgICAgYXJncyA9IF9nZXRfYXJncyhjb21tYW5kKQotICAgICAgICBwYXJzZV9yZXN1bHRzID0gc2VsZi5wYXJzZV9hcmd1bWVudHMoYXJncywgd29yZHMsIDEsIHNjb3BlcywKLSAgICAgICAgICAgICAgICBhcmdfZGF0YSwgZmllbGRzLCBhY3Rpb25zLCBwcmVmaXhfbWF0Y2hlcywgY29tbWFuZCkKLQotICAgICAgICBpZiBwYXJzZV9yZXN1bHRzOgotICAgICAgICAgICAgZm9yIHBhcnNlX3Jlc3VsdCBpbiBwYXJzZV9yZXN1bHRzOgotICAgICAgICAgICAgICAgIHdvcmRzX2NvbnN1bWVkLCBwcmVmaXhfbWF0Y2hlcywgc2NvcGVzLCBhcmdfZGF0YSwgZmllbGRzLCBhY3Rpb25zID0gcGFyc2VfcmVzdWx0Ci0gICAgICAgICAgICAgICAgaWYgd29yZHNfY29uc3VtZWQgPT0gbGVuKHdvcmRzKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfY29tcGxldGVfY29tbWFuZChwcmVmaXhfbWF0Y2hlcywgc2NvcGVzLCBhcmdfZGF0YSwgZmllbGRzLCBhY3Rpb25zLCBjb21tYW5kKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3Jkc1t3b3Jkc19jb25zdW1lZF0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfcGFyc2VfZXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgYWRkaXRpb25hbCBhcmd1bWVudHMgYXQgXCIlcyInICUgd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jkc19jb25zdW1lZCsxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRIYW5kbGVyLlVORVhQRUNURURfQURESVRJT05BTF9BUkdVTUVOVFNfUFJJT1JJVFkpCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIAotICAgIGRlZiBoYW5kbGVfY29tbWFuZChzZWxmLCB3b3JkcywgdGV4dD1Ob25lKToKLQotICAgICAgICAjIENoZWNrIGlmIGl0J3MgYSBubyBjb21tYW5kIGFuZCwgaWYgc28sIGFkanVzdCB0aGUgd29yZHMKLSAgICAgICAgc2VsZi5pc19ub19jb21tYW5kID0gbGVuKHdvcmRzKSA+IDAgYW5kIHdvcmRzWzBdLmxvd2VyKCkgPT0gJ25vJwotICAgICAgICBpZiBzZWxmLmlzX25vX2NvbW1hbmQ6Ci0gICAgICAgICAgICBzZWxmLnByZWZpeCA9IHdvcmRzWzBdCi0gICAgICAgICAgICB3b3JkcyA9IHdvcmRzWzE6XQotCi0gICAgICAgIHNlbGYud29yZHMgPSB3b3JkcwotICAgICAgICBzZWxmLnRleHQgPSB0ZXh0Ci0KLSAgICAgICAgcmVzdWx0ID0gTm9uZQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGxlbih3b3JkcykgPiAwOgotICAgICAgICAgICAgICAgIGNvbW1hbmRfd29yZCA9IHdvcmRzWzBdCi0gICAgICAgICAgICAgICAgbWF0Y2hpbmdfY29tbWFuZHMgPSBzZWxmLmdldF9tYXRjaGluZ19jb21tYW5kcyhjb21tYW5kX3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlzX25vX2NvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kX3JlZ2lzdHJ5KQotICAgICAgICAgICAgICAgIGZvciBtYXRjaGluZ19jb21tYW5kIGluIG1hdGNoaW5nX2NvbW1hbmRzOgotICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCBwcmVmaXhfbWF0Y2ggPSBtYXRjaGluZ19jb21tYW5kCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX29uZV9jb21tYW5kKGNvbW1hbmQsIHByZWZpeF9tYXRjaCwgd29yZHMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuaGFuZGxlX3Vuc3BlY2lmaWVkX2NvbW1hbmQoKQotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5oYW5kbGVfY29tbWFuZF9yZXN1bHRzKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGlmIHNkbnNoLmRlYnVnIG9yIHNkbnNoLmRlYnVnX2JhY2t0cmFjZToKLSAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZSwgZXJyb3IuQ29tbWFuZEVycm9yKToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmhhbmRsZV9jb21tYW5kX2Vycm9yKGUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuaGFuZGxlX2V4Y2VwdGlvbihlKQotCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotCi1jbGFzcyBDb21tYW5kRXhlY3V0b3IoQ29tbWFuZEhhbmRsZXIpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBlcihDb21tYW5kRXhlY3V0b3IsIHNlbGYpLl9faW5pdF9fKCkKLSAgICAgICAgc2VsZi5tYXRjaGVzID0gW10KLQotICAgICNkZWYgZ2V0X2RlZmF1bHRfYXR0cmlidXRlX25hbWUoc2VsZik6Ci0gICAgIyAgICByZXR1cm4gJ2RlZmF1bHQtZm9yLW5vJyBpZiBzZWxmLmlzX25vX2NvbW1hbmQgZWxzZSAnZGVmYXVsdCcKLSAgICAKLSAgICBkZWYgaGFuZGxlX3Vuc3BlY2lmaWVkX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRJbnZvY2F0aW9uRXJyb3IoJ05vIGNvbW1hbmQgc3BlY2lmaWVkJykKLQotICAgIGRlZiBoYW5kbGVfY29tbWFuZF9lcnJvcihzZWxmLCBlKToKLSAgICAgICAgcmVzdWx0ID0gc2Ruc2guZXJyb3JfbXNnKHN0cihlKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIGhhbmRsZV9leGNlcHRpb24oc2VsZiwgZSk6Ci0gICAgICAgIGlmIHNkbnNoLmRlYnVnIG9yIHNkbnNoLmRlYnVnX2JhY2t0cmFjZToKLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICByYWlzZSBlCi0KLSAgICBkZWYgaGFuZGxlX2NvbXBsZXRlX2NvbW1hbmQoc2VsZiwgcHJlZml4X21hdGNoZXMsIHNjb3BlcywgYXJnX2RhdGEsIGZpZWxkcywgYWN0aW9ucywgY29tbWFuZCk6Ci0gICAgICAgIHNlbGYubWF0Y2hlcy5hcHBlbmQoKHByZWZpeF9tYXRjaGVzLCBzY29wZXMsIGFyZ19kYXRhLCBmaWVsZHMsIGFjdGlvbnMsIGNvbW1hbmQpKQotCi0gICAgZGVmIGhhbmRsZV9jb21tYW5kX3Jlc3VsdHMoc2VsZik6Ci0KLSAgICAgICAgaWYgbGVuKHNlbGYubWF0Y2hlcykgPT0gMDoKLSAgICAgICAgICAgICMgTm8gbWF0Y2hpbmcgY29tbWFuZC4gV2UgbmVlZCB0byBydW4gdGhyb3VnaCB0aGUgcGFyc2UKLSAgICAgICAgICAgICMgZXJyb3JzIHdlJ3ZlIGNvbGxlY3RlZCB0byB0cnkgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBlcnJvcgotICAgICAgICAgICAgIyBtZXNzYWdlIHRvIHVzZS4gVGhlIHNpbXBsZSBoZXVyaXN0aWMgd2UgdXNlIGlzIHRoYXQgd2UnbGwKLSAgICAgICAgICAgICMgYXNzdW1lIHRoYXQgZXJyb3JzIHRoYXQgbWF0Y2hlZCB0aGUgbW9zdCBjb21tYW5kIHdvcmRzCi0gICAgICAgICAgICAjIGJlZm9yZSBoaXR0aW5nIGEgcGFyc2UgZXJyb3IgYXJlIHRoZSBtb3N0IHJlbGV2YW50LCBzbwotICAgICAgICAgICAgIyB0aG9zZSBhcmUgdGhlIG9uZXMgd2UnbGwgcHJpbnQuIElmIGl0J3MgYSBwYXJzZSBlcnJvcgotICAgICAgICAgICAgIyBiZWNhdXNlIGl0IGRpZG4ndCBtYXRjaCBhIGxpdGVyYWwgdG9rZW4gKGkuZS4gYXMgb3Bwb3NlZAotICAgICAgICAgICAgIyB0byBhIHZhbGlkYXRpb24gZXJyb3IpLCB0aGVuIHdlJ2xsIGNvbGxlY3QgYWxsIG9mIHRoZQotICAgICAgICAgICAgIyB2YWxpZCB0b2tlbnMgYW5kIHByaW50IGEgc2luZ2xlIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBvZgotICAgICAgICAgICAgIyB0aGVtLiBPdGhlcndpc2Ugd2UnbGwgcHJpbnQgb3V0IGFsbCBvZiB0aGUgaW5kaXZpZHVhbAotICAgICAgICAgICAgIyBlcnJvciBtZXNzYWdlLiBUaGlzIGlzbid0IGdyZWF0LCBiZWNhdXNlIGluIGEgbG90IG9mCi0gICAgICAgICAgICAjIGNhc2VzIHRoZXJlIHdlJ2xsIGJlIG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzLCB3aGljaCAKLSAgICAgICAgICAgICMgbWF5IGJlIGVpdGhlciBjb25mbGljdGluZyBvciBhbG1vc3QgaWRlbnRpY2FsIChpZGVudGljYWwKLSAgICAgICAgICAgICMgbWVzc2FnZXMgYXJlIGVsaW1pbmF0ZWQgYmVjYXVzZSB3ZSB1c2UgYSBzZXQgd2hlbiB3ZQotICAgICAgICAgICAgIyBjb2xsZWN0IHRoZSBwYXJzZSBlcnJvcnMpLgotICAgICAgICAgICAgbW9zdF93b3Jkc19tYXRjaGVkID0gLTEKLSAgICAgICAgICAgIGhpZ2hlc3RfcHJpb3JpdHkgPSAtMQotICAgICAgICAgICAgYWNjdW11bGF0ZWRfZXJyb3JfbWVzc2FnZXMgPSBbXQotICAgICAgICAgICAgYWNjdW11bGF0ZWRfZXhwZWN0ZWRfdG9rZW5zID0gW10KLSAgICAgICAgICAgIGZvciBlcnJvcl9tZXNzYWdlLCB3b3Jkc19tYXRjaGVkLCBwcmlvcml0eSwgZXhwZWN0ZWRfdG9rZW5zIGluIHNlbGYucGFyc2VfZXJyb3JzOgotICAgICAgICAgICAgICAgIGlmIHdvcmRzX21hdGNoZWQgPiBtb3N0X3dvcmRzX21hdGNoZWQ6Ci0gICAgICAgICAgICAgICAgICAgICMgV2UgZm91bmQgYW4gZXJyb3IgdGhhdCBtYXRjaGVkIG1vcmUgd29yZHMgdGhhbgotICAgICAgICAgICAgICAgICAgICAjIHRoZSBvdGhlciBlcnJvcnMgd2UndmUgc2VlbiBzbyBmYXIsIHNvIHJlc2V0Ci0gICAgICAgICAgICAgICAgICAgICMgdGhlIGhpZ2hlc3QgcHJpb3JpdHksIHNvIHdlJ2xsIHN0YXJ0IGxvb2tpbmcgZm9yCi0gICAgICAgICAgICAgICAgICAgICMgdGhlIG5ldyBoaWdoZXN0IHByaW9yaXR5IGF0IHRoZSBjdXJyZW50IHdvcmQgbWF0Y2ggbGV2ZWwuCi0gICAgICAgICAgICAgICAgICAgICMgdGhlIHZhcmlhYmxlIHdlJ3JlIHVzaW5nIHRvIGNvbGxlY3QgdGhlIGVycm9yCi0gICAgICAgICAgICAgICAgICAgICMgbWVzc2FnZXMgYW5kIGV4cGVjdGVkIHRva2VucwotICAgICAgICAgICAgICAgICAgICBtb3N0X3dvcmRzX21hdGNoZWQgPSB3b3Jkc19tYXRjaGVkCi0gICAgICAgICAgICAgICAgICAgIGhpZ2hlc3RfcHJpb3JpdHkgPSAtMQotICAgICAgICAgICAgICAgIGlmIHdvcmRzX21hdGNoZWQgPT0gbW9zdF93b3Jkc19tYXRjaGVkOgotICAgICAgICAgICAgICAgICAgICBpZiBwcmlvcml0eSA+IGhpZ2hlc3RfcHJpb3JpdHk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGZvdW5kIGEgaGlnaGVyIHByaW9yaXR5IGVycm9yLCBzbyBjbGVhciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYWNjdW11bGF0ZWQgZXJyb3JzIGFuZCBleHBlY3RlZCB0b2tlbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlZF9lcnJvcl9tZXNzYWdlcyA9IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlZF9leHBlY3RlZF90b2tlbnMgPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGVzdF9wcmlvcml0eSA9IHByaW9yaXR5Ci0gICAgICAgICAgICAgICAgICAgIGlmIHdvcmRzX21hdGNoZWQgPT0gbW9zdF93b3Jkc19tYXRjaGVkIGFuZCBwcmlvcml0eSA9PSBoaWdoZXN0X3ByaW9yaXR5OgotICAgICAgICAgICAgICAgICAgICAgICAgIyBDb2xsZWN0IHRoZSBlcnJvciBtZXNzYWdlIGFuZCBjaGVjayB0byBzZWUgaWYgdGhlcmUncwotICAgICAgICAgICAgICAgICAgICAgICAgIyBhbiBleHBlY3RlZCB0b2tlbiBhbmQgaWYgYWxsIG9mIHRoZSBlcnJvcnMgYXQgdGhpcyBsZXZlbAotICAgICAgICAgICAgICAgICAgICAgICAgIyBzbyBmYXIgYWxzbyBoYWQgZXhwZWN0ZWQgdG9rZW5zLiBJZiB0aGVyZSdzIGFueSBlcnJvcgotICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGF0IGRvZXNuJ3QgaGF2ZSBhbiBleHBlY3RlZCB0b2tlbiwgdGhlbiB3ZSByZXZlcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gdGhlIG1vZGUgd2hlcmUgd2UnbGwgcHJpbnQgYWxsIG9mIHRoZSBpbmRpdmlkdWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGVycm9yIG1lc3NhZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRfdG9rZW5zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIF9pc19zdHJpbmcoZXhwZWN0ZWRfdG9rZW5zKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdG9rZW5zID0gW2V4cGVjdGVkX3Rva2Vuc10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWRfdG9rZW5zLCB0dXBsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rva2VucyA9IGxpc3QoZXhwZWN0ZWRfdG9rZW5zKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVkX2V4cGVjdGVkX3Rva2VucyArPSBleHBlY3RlZF90b2tlbnMKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0ZWRfZXJyb3JfbWVzc2FnZXMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCi0gICAgICAgICAgICAKLSAgICAgICAgICAgICMgV2UndmUgY29sbGVjdGVkIHRoZSBlcnJvcnMgYW5kIHRoZSBleHBlY3RlZCB0b2tlbnMuIE5vdyB3ZQotICAgICAgICAgICAgIyBqdXN0IG5lZWQgdG8gZm9ybWF0IHRoZSBlcnJvciBtZXNzYWdlIHRvIHVzZSB3aXRoIHRoZQotICAgICAgICAgICAgIyBDb21tYW5kU3ludGF4RXJyb3IgZXhjZXB0aW9uLgotICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICcnCi0gICAgICAgICAgICBpZiBhY2N1bXVsYXRlZF9leHBlY3RlZF90b2tlbnM6Ci0gICAgICAgICAgICAgICAgd29yZCA9IHNlbGYud29yZHNbbW9zdF93b3Jkc19tYXRjaGVkXQotICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgKz0gJ1VuZXhwZWN0ZWQgYXJndW1lbnQgXCIlc1wiOyBleHBlY3RlZCAnICUgd29yZAotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rva2VucyA9IFsnIicgKyBleHBlY3RlZF90b2tlbiArICciJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhwZWN0ZWRfdG9rZW4gaW4gYWNjdW11bGF0ZWRfZXhwZWN0ZWRfdG9rZW5zXQotICAgICAgICAgICAgICAgIGlmIGxlbihleHBlY3RlZF90b2tlbnMpID4gMToKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdG9rZW5zLnNvcnQoKQotICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlICs9ICdvbmUgb2YgJwotICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgKz0gJygnICsgJywgJy5qb2luKGV4cGVjdGVkX3Rva2VucykgKyAnKScKLSAgICAgICAgICAgIGZvciBtZXNzYWdlIGluIGFjY3VtdWxhdGVkX2Vycm9yX21lc3NhZ2VzOgotICAgICAgICAgICAgICAgIGlmIGVycm9yX21lc3NhZ2U6Ci0gICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgKz0gJ1xuJwotICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgKz0gbWVzc2FnZQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRTeW50YXhFcnJvcihlcnJvcl9tZXNzYWdlKQotCi0gICAgICAgICMgVGhlcmUgbWF5IGJlIG11bHRpcGxlIHJlc3VsdHMuIFdlIG5lZWQgdG8gZmlndXJlIG91dCBpdCB0aGVyZSdzCi0gICAgICAgICMgYW4gdW5hbWJpZ3VvdXMgbWF0Y2guIFRoZSBoZXVyaXN0aWMgd2UgdXNlIGlzIHRvIGl0ZXJhdGUgb3ZlcgotICAgICAgICAjIHRoZSBjb21tYW5kIHdvcmRzIGFuZCB0cnkgdG8gZmluZCBhIHNpbmdsZSByZXN1bHQgd2hpY2ggaGFzIGFuCi0gICAgICAgICMgZXhhY3QgbWF0Y2ggb24gdGhlIHdvcmQgd2hpbGUgYWxsIHRoZSBvdGhlcnMgYXJlIHByZWZpeCBtYXRjaGVzLgotICAgICAgICAjIElmIHRoZXJlIGFyZSBtdWx0aXBsZSByZXN1bHRzIHRoYXQgYXJlIGV4YWN0IG1hdGNoZXMsIHRoZW4gd2UKLSAgICAgICAgIyBkaXNjYXJkIHRoZSBvdGhlciByZXN1bHRzIHRoYXQgd2VyZSBwcmVmaXggbWF0Y2hlcyBhbmQgY29udGludWUKLSAgICAgICAgIyB3aXRoIHRoZSBuZXh0IGNvbW1hbmQgd29yZC4gSWYgYXQgYW4gaXRlcmF0aW9uIGFsbCBvZiB0aGUKLSAgICAgICAgIyByZXN1bHRzIGFyZSBwcmVmaXggbWF0Y2hlcyBmb3IgdGhlIGN1cnJlbnQgd29yZCwgdGhlbiB3ZSBjaGVjawotICAgICAgICAjIGFsbCBvZiB0aGUgZnVsbCB0b2tlbnMgdGhhdCB3ZXJlIHByZWZpeCBtYXRjaGVkIGJ5IHRoZSBjb21tYW5kCi0gICAgICAgICMgd29yZC4gSWYgYWxsIG9mIHRoZSByZXN1bHRzIGhhdmUgdGhlIHNhbWUgZnVsbCB0b2tlbiwgdGhlbiB3ZQotICAgICAgICAjIGNvbnRpbnVlLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgZnVsbCB0b2tlbnMsIHRoZW4gdGhhdCdzCi0gICAgICAgICMgaW5kaWNhdGl2ZSBvZiBhbiBhbWJpZ3VvdXMgY29tbWFuZCwgc28gd2UgYnJlYWsgb3V0IG9mIHRoZSBsb29wCi0gICAgICAgICMgYW5kIHJhaXNlIGFuIGFtYmlndW91cyBjb21tYW5kIGV4Y2VwdGlvbi4KLSAgICAgICAgdW5hbWJpZ3VvdXNfbWF0Y2ggPSBOb25lCi0gICAgICAgIGlmIGxlbihzZWxmLm1hdGNoZXMpID4gMToKLSAgICAgICAgICAgIG5hcnJvd2VkX21hdGNoZXMgPSBzZWxmLm1hdGNoZXMKLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihzZWxmLndvcmRzKSk6Ci0gICAgICAgICAgICAgICAgZXhhY3RfbWF0Y2hfbWF0Y2hlcyA9IFtdCi0gICAgICAgICAgICAgICAgcHJlZml4X21hdGNoX21hdGNoZXMgPSBbXQotICAgICAgICAgICAgICAgIHByZWZpeF9tYXRjaF9mdWxsX3Rva2VucyA9IHt9Ci0gICAgICAgICAgICAgICAgZm9yIG1hdGNoIGluIG5hcnJvd2VkX21hdGNoZXM6Ci0gICAgICAgICAgICAgICAgICAgIHByZWZpeF9tYXRjaGVzID0gbWF0Y2hbMF0KLSAgICAgICAgICAgICAgICAgICAgZm9yIHByZWZpeF9tYXRjaCBpbiBwcmVmaXhfbWF0Y2hlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHByZWZpeF9tYXRjaFswXSA9PSBpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9tYXRjaF9tYXRjaGVzLmFwcGVuZChtYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKHByZWZpeF9tYXRjaFsxXSkgPT0gZGljdDogIyByZWd1bGFyIGV4cHJlc3Npb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaW1pbGFyIHRvIF9nZXRfY29tbWFuZF90aXRsZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfdG9rZW4gPSBwcmVmaXhfbWF0Y2hbMV1bJ3RpdGxlJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX3Rva2VuID0gcHJlZml4X21hdGNoWzFdLmxvd2VyKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhfbWF0Y2hfZnVsbF90b2tlbnNbZnVsbF90b2tlbl0gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0X21hdGNoX21hdGNoZXMuYXBwZW5kKG1hdGNoKQotICAgICAgICAgICAgICAgIGlmIGxlbihleGFjdF9tYXRjaF9tYXRjaGVzKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICB1bmFtYmlndW91c19tYXRjaCA9IGV4YWN0X21hdGNoX21hdGNoZXNbMF0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbGlmIGxlbihleGFjdF9tYXRjaF9tYXRjaGVzKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgIG5hcnJvd2VkX21hdGNoZXMgPSBleGFjdF9tYXRjaF9tYXRjaGVzCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBObyBleGFjdCBtYXRjaGVzLCBjaGVjayB0byBzZWUgaWYgdGhlIHByZWZpeCBtYXRjaGVzCi0gICAgICAgICAgICAgICAgICAgICMgYXJlIGFsbCBwcmVmaXhlcyBmb3IgdGhlIHNhbWUgdG9rZW4uIElmIHNvLCB0aGVuIGxldAotICAgICAgICAgICAgICAgICAgICAjIHRoZSBwcm9jZXNzIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgd29yZCBpbiB0aGUgY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgIyBPdGhlcndpc2UgaXQncyBhbiBhbWJpZ3VvdXMgY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihwcmVmaXhfbWF0Y2hfbWF0Y2hlcykgPiAxCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihwcmVmaXhfbWF0Y2hfZnVsbF90b2tlbnMpID4gMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIG5hcnJvd2VkX21hdGNoZXMgPSBwcmVmaXhfbWF0Y2hfbWF0Y2hlcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIElmIHdlIHJlYWNoIHRoZSBlbmQgb2YgdGhlIHdvcmRzIHdpdGhvdXQgZWl0aGVyIGZpbmRpbmcgYW4KLSAgICAgICAgICAgICAgICAjIHVuYW1iaWd1b3VzIHJlc3VsdCBvciB0aGUgd29yZCB3aGljaCB3YXMgYW1iaWd1b3VzIHRoZW4gdGhhdAotICAgICAgICAgICAgICAgICMgbWVhbnMgdGhhdCBtdWx0aXBsZSBjb21tYW5kIGRlc2NyaXB0aW9ucyAob3IgbXVsdGlwbGUKLSAgICAgICAgICAgICAgICAjIGNob2ljZXMvcGF0aCB0aHJvdWdoIGEgc2luZ2xlIGNvbW1hbmQgZGVzY3JpcHRpb24pIGhhZCB0aGUKLSAgICAgICAgICAgICAgICAjIGV4YWN0IHNhbWUgbWF0Y2ggdG9rZW5zLCB3aGljaCBtZWFucyB0aGF0IHRoZXJlIGFyZQotICAgICAgICAgICAgICAgICMgY29uZmxpY3RpbmcgY29tbWFuZCBkZXNjcmlwdGlvbnMsIHdoaWNoIGlzIGEgYnVnIGluIHRoZQotICAgICAgICAgICAgICAgICMgY29tbWFuZCBkZXNjcmlwdGlvbnMuCi0gICAgICAgICAgICAgICAgaWYgc2Ruc2guZGVidWcgb3Igc2Ruc2guZGVidWdfYmFja3RyYWNlIG9yIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgICAgICBmb3IgbiBpbiBuYXJyb3dlZF9tYXRjaGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgX2xpbmUoKSwgblsxXVswXVsnc2VsZiddCi0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZEFtYmlndW91c0Vycm9yKCdNdWx0aXBsZSBjb21tYW5kIGRlc2NyaXB0aW9uIG1hdGNoJykKLQotICAgICAgICAgICAgaWYgdW5hbWJpZ3VvdXNfbWF0Y2ggaXMgTm9uZToKLSAgICAgICAgICAgICAgICBhc3NlcnQgcHJlZml4X21hdGNoX2Z1bGxfdG9rZW5zIGlzIG5vdCBOb25lCi0gICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihwcmVmaXhfbWF0Y2hfZnVsbF90b2tlbnMpID4gMQotICAgICAgICAgICAgICAgIHF1b3RlZF9mdWxsX3Rva2VucyA9IFsnIicgKyBmdWxsX3Rva2VuICsgJyInCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmdWxsX3Rva2VuIGluIHByZWZpeF9tYXRjaF9mdWxsX3Rva2Vuc10KLSAgICAgICAgICAgICAgICAjIHB5bGludDogZGlzYWJsZT1XMDYzMQotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmRBbWJpZ3VvdXNFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdBbWJpZ3VvdXMgY29tbWFuZCB3b3JkICIlcyI7IG1hdGNoZXMgWyVzXScgJQotICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYud29yZHNbaV0sICcsICcuam9pbihxdW90ZWRfZnVsbF90b2tlbnMpKSkKLQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdW5hbWJpZ3VvdXNfbWF0Y2ggPSBzZWxmLm1hdGNoZXNbMF0KLQotICAgICAgICBwcmVmaXhfbWF0Y2hlcywgc2NvcGVzLCBhcmdfZGF0YSwgZmllbGRzLCBhY3Rpb25zLCBjb21tYW5kID0gdW5hbWJpZ3VvdXNfbWF0Y2gKLQotICAgICAgICAjIFhYWCBQb3NzaWJseSBhIGJldHRlciBtZXRob2Qgb2YgZGVjaWRpbmcgd2hlbiB0byBsb29vayBkZWVwZXIKLSAgICAgICAgIyBpbiB0aGUgc2NvcGVzIHdvdWxkIGJlIGEgZ29vZCBpZGVhLgotICAgICAgICBpZiBmaWVsZHMgPT0gTm9uZSBvciBsZW4oZmllbGRzKSA9PSAwOgotICAgICAgICAgICAgZmllbGRzID0gX2xvb2t1cF9pbl9zY29wZXMoJ2ZpZWxkcycsIHNjb3BlcykKLQotICAgICAgICBpbnZvY2F0aW9uX3Njb3BlID0gewotICAgICAgICAgICAgJ2RhdGEnOiBhcmdfZGF0YSwKLSAgICAgICAgICAgICdmaWVsZHMnOiBmaWVsZHMsCi0gICAgICAgICAgICAnaXMtbm8tY29tbWFuZCc6IHNlbGYuaXNfbm9fY29tbWFuZCwKLSAgICAgICAgICAgICdjdXJyZW50LW1vZGUtb2JqLXR5cGUnOiBzZG5zaC5nZXRfY3VycmVudF9tb2RlX29ial90eXBlKCksCi0gICAgICAgICAgICAnY3VycmVudC1tb2RlLW9iai1pZCc6IHNkbnNoLmdldF9jdXJyZW50X21vZGVfb2JqKCkKLSAgICAgICAgfQotCi0gICAgICAgICNzY29wZXMgPSBbaW52b2NhdGlvbl9zY29wZV0gKyBzY29wZXMKLSAgICAgICAgYXNzZXJ0IGFjdGlvbnMgaXMgbm90IE5vbmUKLSAgICAgICAgaWYgbGVuKGFjdGlvbnMpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcignTm8gYWN0aW9uIHNwZWNpZmllZCcsIGNvbW1hbmQpCi0gICAgICAgICNpZiB2YWxpZF9hcmdzOgotICAgICAgICAjICAgIHNjb3BlcyA9IHZhbGlkX2FyZ3MgKyBzY29wZXMKLSAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZWJ1ZyBkZXRhaWxzCi0gICAgICAgICAgICBwcmludCAiQ29tbWFuZCBTZWxlY3RlZDogJXMiICUgY29tbWFuZFsnc2VsZiddCi0KLSAgICAgICAgY29tYmluZWRfcmVzdWx0ID0gTm9uZQotICAgICAgICBmb3IgYWN0aW9uIGluIGFjdGlvbnM6Ci0gICAgICAgICAgICBhY3Rpb25fcHJvYywgYWN0aW9uX3Njb3BlcyA9IGFjdGlvbgotICAgICAgICAgICAgc2NvcGVzID0gW2ludm9jYXRpb25fc2NvcGVdICsgYWN0aW9uX3Njb3BlcwotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ0FjdGlvbjogJywgYWN0aW9uX3Byb2MKLSAgICAgICAgICAgIHJlc3VsdCA9IF9jYWxsX3Byb2MoYWN0aW9uX3Byb2MsIGFjdGlvbl9yZWdpc3RyeSwgc2NvcGVzLCBjb21tYW5kKQotICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGNvbWJpbmVkX3Jlc3VsdCA9IGNvbWJpbmVkX3Jlc3VsdCArIHJlc3VsdCBpZiBjb21iaW5lZF9yZXN1bHQgZWxzZSByZXN1bHQKLQotICAgICAgICAjIFNpbmNlIGEgc3VjY2Vzc2Z1bCAnbm8nIGNvbW1hbmQgbWF5IHJlbW92ZSBhbiBvYmplY3QsCi0gICAgICAgICMgYWZ0ZXIgYSBubyBjb21tYW5kIGNvbXBsZXRlJ3MgYWxsIGl0cyBhY3Rpb25zLCB2ZXJpZnkKLSAgICAgICAgIyB0aGUgZXhpc3RhbmNlIG9mIGV2ZXJ5IG9iamVjdCBpbiB0aGUgbW9kZSBzdGFjay4gIAotICAgICAgICAjIFBvcCBhbnkgbmVzdGVkIG1vZGVzIHdoZXJlIHRoZSBvYmplY3QgaXMgbWlzc2luZy4KLSAgICAgICAgaWYgc2VsZi5pc19ub19jb21tYW5kOgotICAgICAgICAgICAgIyBzdGFydGluZyBhdCB0aGUgbW9zdCBuZXN0ZWQgc3VibW9kZSBsZXZlbCwgZGV0ZXJtaW5lIGlmIHRoZQotICAgICAgICAgICAgIyBjdXJyZW50IHN1Ym1vZGUgb2JqZWN0IHN0aWxsIGV4aXN0cwotICAgICAgICAgICAgYW55X3JlbW92ZWQgPSBGYWxzZQotICAgICAgICAgICAgZm9yIGluZGV4IGluIHJldmVyc2VkKHJhbmdlKGxlbihzZG5zaC5tb2RlX3N0YWNrKSkpOgotICAgICAgICAgICAgICAgIG1vZGUgPSBzZG5zaC5tb2RlX3N0YWNrW2luZGV4XQotICAgICAgICAgICAgICAgIGlmIG1pLm9ial90eXBlX2luX3VzZV9hc19yZWxhdGVkX2NvbmZpZ190eXBlKG1vZGUuZ2V0KCdvYmpfdHlwZScpKToKLSAgICAgICAgICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAnQ09ORklHIFRZUEU6JywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZS5nZXQoJ29ial90eXBlJyksIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pLm9ial90eXBlX2luX3VzZV9hc19yZWxhdGVkX2NvbmZpZ190eXBlKG1vZGUuZ2V0KCdvYmpfdHlwZScpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgaWYgbW9kZS5nZXQoJ29ial90eXBlJykgYW5kIG1vZGUuZ2V0KCdvYmonKToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2Ruc2guZ2V0X29iamVjdF9mcm9tX3N0b3JlKG1vZGVbJ29ial90eXBlJ10sIG1vZGVbJ29iaiddKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHBvcCB0aGlzIGl0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdOTyBMT1NUIE9CSkVDVCAnLCBtb2RlLmdldCgnb2JqX3R5cGUnKSwgbW9kZS5nZXQoJ29iaicpCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWwgc2Ruc2gubW9kZV9zdGFja1tpbmRleF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGFueV9yZW1vdmVkID0gVHJ1ZQotCi0gICAgICAgICAgICBpZiBhbnlfcmVtb3ZlZDoKLSAgICAgICAgICAgICAgICBzZG5zaC53YXJuaW5nKCJzdWJtb2RlIGV4aXRlZCBkdWUgdG8gZGVsZXRlZCBvYmplY3QiKQotICAgICAgICAgICAgICAgIHNkbnNoLnVwZGF0ZV9wcm9tcHQoKQotCi0gICAgICAgIHJldHVybiBjb21iaW5lZF9yZXN1bHQKLQotCi1jbGFzcyBDb21tYW5kQ29tcGxldGVyKENvbW1hbmRIYW5kbGVyKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRhX2NvbXBsZXRpb24gPSBGYWxzZSk6Ci0gICAgICAgIHN1cGVyKENvbW1hbmRDb21wbGV0ZXIsIHNlbGYpLl9faW5pdF9fKCkKLSAgICAgICAgc2VsZi5tZXRhX2NvbXBsZXRpb24gPSBtZXRhX2NvbXBsZXRpb24KLSAgICAgICAgc2VsZi5jb21wbGV0aW9ucyA9IHt9Ci0KLSAgICBkZWYgZ2V0X2RlZmF1bHRfdmFsdWUoc2VsZiwgYXJnKToKLSAgICAgICAgZGVmYXVsdCA9IGFyZy5nZXQoJ2RlZmF1bHQnKQotICAgICAgICBpZiBzZWxmLmlzX25vX2NvbW1hbmQgYW5kIGRlZmF1bHQgaXMgTm9uZSBhbmQgJ2ZpZWxkJyBpbiBhcmc6Ci0gICAgICAgICAgICBkZWZhdWx0ID0gbWkuZmllbGRfY3VycmVudF9vYmpfdHlwZV9kZWZhdWx0X3ZhbHVlKGFyZ1snZmllbGQnXSkKLSAgICAgICAgICAgIGlmIGRlZmF1bHQgIT0gTm9uZToKLSAgICAgICAgICAgICAgICBkZWZhdWx0ID0gc3RyKE5vbmUpCi0gICAgICAgIHJldHVybiBkZWZhdWx0Ci0KLSAgICBkZWYgY29tcGxldGVfaGVscChzZWxmLCBhcmdfc2NvcGVzKToKLSAgICAgICAgIiIiCi0gICAgICAgIFNlbGVjdCB0aGUgbW9zdCBhcHByb3ByaWF0ZSBsb2NhbGl6ZWQgdGV4dCB0byBhc3NvY2lhdGUgd2l0aAotICAgICAgICB0aGUgY29tcGxldGlvbi1yZWFzb24gZm9yIHNvbWUgY29tcGxldGlvbi10ZXh0Ci0gICAgICAgICIiIgotICAgICAgICBjX2hlbHAgPSBfbG9va3VwX2luX3Njb3BlcygnY29ucGxldGlvbi10ZXh0JywgYXJnX3Njb3BlcykKLSAgICAgICAgaWYgY19oZWxwOgotICAgICAgICAgICAgcmV0dXJuIGNfaGVscAotICAgICAgICBjX2hlbHAgPSBfbG9va3VwX2luX3Njb3Blcygnc3ludGF4LWhlbHAnLCBhcmdfc2NvcGVzKQotICAgICAgICBpZiBjX2hlbHA6Ci0gICAgICAgICAgICByZXR1cm4gY19oZWxwCi0gICAgICAgIGNfaGVscCA9IF9sb29rdXBfaW5fc2NvcGVzKCdhbGwtaGVscCcsIGFyZ19zY29wZXMpCi0gICAgICAgIGlmIGNfaGVscDoKLSAgICAgICAgICAgIHJldHVybiAnIScgKyBjX2hlbHAKLSAgICAgICAgY19oZWxwID0gX2xvb2t1cF9pbl9zY29wZXMoJ3Nob3J0LWhlbHAnLCBhcmdfc2NvcGVzKQotICAgICAgICBpZiBjX2hlbHA6Ci0gICAgICAgICAgICByZXR1cm4gY19oZWxwCi0gICAgICAgIHJldHVybiAnIDxoZWxwIG1pc3Npbmc+ICVzJyAlICBfbG9va3VwX2luX3Njb3Blcygnc2VsZicsIGFyZ19zY29wZXMpCi0KLQotICAgIGRlZiBjb21wbGV0aW9uX3NldChzZWxmLCBjb21wbGV0aW9ucywgdGV4dCwgcmVhc29uKToKLSAgICAgICAgIiIiCi0gICAgICAgIEluIHNpdHVhdGlvbnMgd2hlcmUgbXVsdGlwbGUgY29tbWFuZHMgbWF0Y2ggZm9yIHNvbWUgY29tcGxldGlvbgotICAgICAgICB0ZXh0LCB0aGUgbGFzdCBjb21tYW5kLWl0ZXJhdGVkLW92ZXIgd2lsbCBwb3B1bGF0ZSB0aGUgdGV4dCBmb3IKLSAgICAgICAgdGhlIGNvbXBsZXRpb24gZGljdGlvbmFyeS4gIFVzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSAKLSAgICAgICAgY29tcGxldGlvbiBzdHJpbmcgZm9yIHRoaXMgY29tbWFuZCB0byBpZGVudGlmeSB3aGVuIHRoZSB0ZXh0Ci0gICAgICAgIHJlcHJlc2VudHMgdGhlIG1vc3QgImJhc2UiIHZhcmlhbnQgb2YgdGhlIGNvbW1hbmQgdG8gZGlzcGxheQotICAgICAgICBmb3IgY29tcGxldGlvbiBoZWxwIHRleHQuCi0KLSAgICAgICAgV2hlbiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzdHJpbmcgaXMgYSAnIScsIHRoZSBwcmludGluZwotICAgICAgICBwcm9jZWR1cmVzIG11c3QgZHJvcCB0aGUgZmlyc3QgY2hhcmFjdGVyLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgY29tcGxldGlvbnMgPT0gTm9uZToKLSAgICAgICAgICAgIGNvbXBsZXRpb25zID0ge3RleHQgOiByZWFzb259Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgY3VycmVudF90ZXh0ID0gY29tcGxldGlvbnMuZ2V0KHRleHQpCi0gICAgICAgICMgY3VycmVudF90ZXh0IGNvdWxkIHBvc3NpYmx5IGJlIE5vbmUgZnJvbSB0aGUgbG9va3VwCi0gICAgICAgIGlmIGN1cnJlbnRfdGV4dCAhPSBOb25lIGFuZCBjdXJyZW50X3RleHRbMF0gPT0gJyEnOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGNvbXBsZXRpb25zW3RleHRdID0gcmVhc29uCi0KLQotICAgIGRlZiBjb21tYW5kX2hlbHBfdGV4dChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgY19oZWxwID0gY29tbWFuZC5nZXQoJ2FsbC1oZWxwJykKLSAgICAgICAgaWYgY19oZWxwOgotICAgICAgICAgICAgaWYgY19oZWxwWzBdICE9ICchJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gJyEnICsgY19oZWxwCi0gICAgICAgICAgICByZXR1cm4gY19oZWxwCi0gICAgICAgIGNfaGVscCA9IGNvbW1hbmQuZ2V0KCdzaG9ydC1oZWxwJykKLSAgICAgICAgcmV0dXJuIGNfaGVscAotCi0KLSAgICBkZWYgaGFuZGxlX3Vuc3BlY2lmaWVkX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIGNhbmRpZGF0ZXMgPSBzZWxmLmdldF9tYXRjaGluZ19jb21tYW5kcyhzZWxmLnRleHQsIHNlbGYuaXNfbm9fY29tbWFuZCwgY29tbWFuZF9yZWdpc3RyeSkKLSAgICAgICAgZm9yIGNhbmRpZGF0ZSBpbiBjYW5kaWRhdGVzOgotICAgICAgICAgICAgc2VsZi5jb21wbGV0aW9uX3NldChzZWxmLmNvbXBsZXRpb25zLCBjYW5kaWRhdGVbMF1bJ25hbWUnXSArICcgJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kX2hlbHBfdGV4dChjYW5kaWRhdGVbMF0pKQotCi0gICAgZGVmIGhhbmRsZV9pbmNvbXBsZXRlX2NvbW1hbmQoc2VsZiwgYXJnLCBhcmdfc2NvcGVzLCBhcmdfZGF0YSwgZmllbGRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF90YWcsIGNvbW1hbmQpOgotCi0gICAgICAgIGNvbXBsZXRpb25zID0gTm9uZQotICAgICAgICB0YWcgPSBhcmcuZ2V0KCd0YWcnKQotICAgICAgICBsb3dlcl90ZXh0ID0gc2VsZi50ZXh0Lmxvd2VyKCkKLQotICAgICAgICBpZiB0YWcgaXMgbm90IE5vbmUgYW5kIG5vdCBwYXJzZWRfdGFnOgotICAgICAgICAgICAgaWYgdGFnLmxvd2VyKCkuc3RhcnRzd2l0aChsb3dlcl90ZXh0KToKLSAgICAgICAgICAgICAgICBpZiBjb21wbGV0aW9ucyA9PSBOb25lOgotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9ucyA9IHt9Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbnNbdGFnICsgJyAnXSA9IHNlbGYuY29tcGxldGVfaGVscChhcmdfc2NvcGVzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdG9rZW4gPSBhcmcuZ2V0KCd0b2tlbicpCi0gICAgICAgICAgICB0eXBlX25hbWUgPSBhcmcuZ2V0KCd0eXBlJykKLSAgICAgICAgICAgIGlmIHR5cGVfbmFtZSA9PSBOb25lOgotICAgICAgICAgICAgICAgIHR5cGVfbmFtZSA9IGFyZy5nZXQoJ2Jhc2UtdHlwZScpCi0gICAgICAgICAgICB0eXBlZGVmID0gdHlwZWRlZl9yZWdpc3RyeS5nZXQodHlwZV9uYW1lKSBpZiB0eXBlX25hbWUgZWxzZSBOb25lCi0KLSAgICAgICAgICAgICMgU2VlIGlmIHRoaXMgYXJndW1lbnQgaXMgYW4gZW51bWVyYXRlZCB2YWx1ZS4gVGhpcyBjYW4gZWl0aGVyCi0gICAgICAgICAgICAjIGJlIGJ5IGEgdHlwZS92YWx1ZXMgc3BlY2lmaWVkIGlubGluZSBpbiB0aGUgYXJndW1lbnQgb3IgdmlhCi0gICAgICAgICAgICAjIGFuIGVudW0gdHlwZWRlZi4gU28gZmlyc3Qgd2UgY2hlY2sgZm9yIHRob3NlIHR3byBjYXNlcyBhbmQKLSAgICAgICAgICAgICMgZ2V0IHRoZSBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgdmFsdWVzLCBlaXRoZXIgdGhlIGFyZ3VtZW50Ci0gICAgICAgICAgICAjIGl0c2VsZiBvciB0aGUgdHlwZWRlZi4KLSAgICAgICAgICAgIGVudW1fb2JqID0gTm9uZQotICAgICAgICAgICAgaWYgdG9rZW4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgdG9rZW4ubG93ZXIoKS5zdGFydHN3aXRoKGxvd2VyX3RleHQpOgotICAgICAgICAgICAgICAgICAgICBpZiBjb21wbGV0aW9ucyA9PSBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbnMgPSB7fQotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uc1t0b2tlbiArICcgJ10gPSBzZWxmLmNvbXBsZXRlX2hlbHAoYXJnX3Njb3BlcykKLSAgICAgICAgICAgIGVsaWYgdHlwZV9uYW1lID09ICdlbnVtJzoKLSAgICAgICAgICAgICAgICBlbnVtX29iaiA9IGFyZwotICAgICAgICAgICAgZWxpZiB0eXBlZGVmOgotICAgICAgICAgICAgICAgICMgTm90ZTogVGhpcyBkb2Vzbid0IHJlY3Vyc2l2ZWx5IGNoZWNrIHVwIHRoZSB0eXBlIGhpZXJhcmNoeSwKLSAgICAgICAgICAgICAgICAjIGJ1dCBpdCBkb2Vzbid0IHNlZW0gbGlrZSBhIHZhbGlkIHVzZSBjYXNlIHRvIGhhdmUgbW9yZSB0aGFuCi0gICAgICAgICAgICAgICAgIyBvbmUgbGV2ZWwgb2YgaW5oZXJpdGFuY2UgZm9yIGVudW1lcmF0aW9ucywgc28gaXQgc2hvdWxkIGJlIE9LLgotICAgICAgICAgICAgICAgIGJhc2VfdHlwZSA9IHR5cGVkZWYuZ2V0KCdiYXNlLXR5cGUnKQotICAgICAgICAgICAgICAgIGlmIGJhc2VfdHlwZSA9PSAnZW51bSc6Ci0gICAgICAgICAgICAgICAgICAgIGVudW1fb2JqID0gdHlwZWRlZgotCi0gICAgICAgICAgICAjIElmIHdlIGhhdmUgYW4gZW51bSBvYmplY3QsIHRoZW4gZ2V0IHRoZSB2YWx1ZXMgYW5kCi0gICAgICAgICAgICAjIGJ1aWxkIHRoZSBjb21wbGV0aW9uIGxpc3QKLSAgICAgICAgICAgIGlmIGVudW1fb2JqOgotICAgICAgICAgICAgICAgIGVudW1fdmFsdWVzID0gZW51bV9vYmouZ2V0KCd2YWx1ZXMnKQotICAgICAgICAgICAgICAgIGlmIGVudW1fdmFsdWVzOgotICAgICAgICAgICAgICAgICAgICBpZiBfaXNfc3RyaW5nKGVudW1fdmFsdWVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudW1fdmFsdWVzID0gKGVudW1fdmFsdWVzLCkKLSAgICAgICAgICAgICAgICAgICAgIyBlbnVtX3ZhbHVlcyBtYXkgYmUgZWl0aGVyIGEgYXJyYXkvdHVwbGUgb2Ygc3RyaW5ncyBvcgotICAgICAgICAgICAgICAgICAgICAjIGVsc2UgYSBkaWN0IHdob3NlIGtleXMgYXJlIHRoZSBlbnVtIHN0cmluZ3MuIEluIGJvdGgKLSAgICAgICAgICAgICAgICAgICAgIyBjYXNlcyB3ZSBjYW4gdXNlIHRoZSBmb3IgbG9vcCB0byBpdGVyYXRlIG92ZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgICMgZW51bSBzdHJpbmcgbmFtZXMgdG8gYmUgdXNlZCBmb3IgY29tcGxldGlvbi4KLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbnMgPSB7fQotICAgICAgICAgICAgICAgICAgICBmb3IgZW51bV92YWx1ZSBpbiBlbnVtX3ZhbHVlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudW1fdmFsdWUubG93ZXIoKS5zdGFydHN3aXRoKGxvd2VyX3RleHQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zW2VudW1fdmFsdWUgKyAnICddID0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbXBsZXRlX2hlbHAoYXJnX3Njb3BlcykKLQotICAgICAgICAgICAgaWYgY29tcGxldGlvbnMgPT0gTm9uZSBvciBsZW4oY29tcGxldGlvbnMpID09IDA6Ci0gICAgICAgICAgICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlcmUncyBhIGN1c3RvbSBjb21wbGV0aW9uIHByb2MKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uX3Byb2MgPSBfbG9va3VwX2luX3Njb3BlcygnY29tcGxldGlvbicsIGFyZ19zY29wZXMpCi0gICAgICAgICAgICAgICAgaWYgY29tcGxldGlvbl9wcm9jOgotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9ucyA9IHt9Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJfb2JqX3R5cGUgPSBzZG5zaC5nZXRfY3VycmVudF9tb2RlX29ial90eXBlKCkKLSAgICAgICAgICAgICAgICAgICAgY3Vycl9vYmpfaWQgICA9IHNkbnNoLmdldF9jdXJyZW50X21vZGVfb2JqKCkKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9tb2RlID0gY29tbWFuZC5nZXQoJ21vZGUnKQotICAgICAgICAgICAgICAgICAgICBpZiBjb21tYW5kX21vZGUgYW5kIGNvbW1hbmRfbW9kZVstMV0gPT0gJyonOgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9tb2RlID0gY29tbWFuZF9tb2RlWzotMV0KLSAgICAgICAgICAgICAgICAgICAgaWYgY29tbWFuZF9tb2RlIGFuZCBzZG5zaC5jdXJyZW50X21vZGUoKSAhPSBjb21tYW5kX21vZGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXMgaXMgY29tcGxldGluZyBhIGRpZmZlcmVudCBpdGVtIG9uIHRoZSBzdGFjay4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgWFhYIG5lZWRzIGJldHRlciBhcGkncyBoZXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfaW5fbW9kZV9zdGFjayA9IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzZG5zaC5tb2RlX3N0YWNrOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHhbJ21vZGVfbmFtZSddID09IGNvbW1hbmRfbW9kZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfaW5fbW9kZV9zdGFjayA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9vYmpfdHlwZSA9IHhbJ29ial90eXBlJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9vYmpfaWQgICA9IHhbJ29iaiddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZm91bmRfaW5fbW9kZV9zdGFjazoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVbmFibGUgdG8gZmluZCBtb2RlICVzJyAlIGNvbW1hbmRfbW9kZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kKQotCi0gICAgICAgICAgICAgICAgICAgIGludm9jYXRpb25fc2NvcGUgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnd29yZHMnOiBzZWxmLndvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnOiBzZWxmLnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YSc6IGFyZ19kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb25zJzogY29tcGxldGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAnaXMtbm8tY29tbWFuZCc6IHNlbGYuaXNfbm9fY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICdtb2RlJyA6IGNvbW1hbmRfbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW50LW1vZGUtb2JqLXR5cGUnOiBjdXJyX29ial90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2N1cnJlbnQtbW9kZS1vYmotaWQnOiBjdXJyX29ial9pZCwKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBhcmdfc2NvcGVzLmluc2VydCgwLCBpbnZvY2F0aW9uX3Njb3BlKQotICAgICAgICAgICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogIyBmb3IgZGV1YnVnZ2luZywgcHJpbnQgY29tbWFuZCBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCBjb21tYW5kWydzZWxmJ10sIGNvbXBsZXRpb25fcHJvYwotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBfcmVzdWx0ID0gX2NhbGxfcHJvYyhjb21wbGV0aW9uX3Byb2MsIGNvbXBsZXRpb25fcmVnaXN0cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19zY29wZXMsIGNvbW1hbmQpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZG5zaC5kZWJ1ZyBvciBzZG5zaC5kZWJ1Z19iYWNrdHJhY2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIklzc3VlOiAiLCBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcigiVW5hYmxlIHRvIGNhbGwgY29tcGxldGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kKQotCi0gICAgICAgICAgICBpZiAoY29tcGxldGlvbnMgPT0gTm9uZSBvciBsZW4oY29tcGxldGlvbnMpID09IDAgb3Igc2VsZi5tZXRhX2NvbXBsZXRpb24pIGFuZCBub3Qgc2VsZi50ZXh0OgotICAgICAgICAgICAgICAgICMgVE9ETzogSXQncyBub3QgY2xlYXIgaW4gdGhpcyBjYXNlIGhvdyB0byBkZXRlY3QgaWYgYQotICAgICAgICAgICAgICAgICMgcGFydGlhbGx5IGVudGVyZWQgYXJndW1lbnQgY2FuIHJlYWxseSBtYXRjaCB0aGlzIGFyZ3VtZW50LAotICAgICAgICAgICAgICAgICMgc28gd2UgKGNvbnNlcnZhdGl2ZWx5KSBvbmx5IGluY2x1ZGUgdGhlc2UgY29tcGxldGlvbiB0ZXh0Ci0gICAgICAgICAgICAgICAgIyBzdHJpbmdzIHdoZW4gdGhlcmUncyBubyBwYXJ0aWFsIHRleHQgZm9yIHRoZSBhcmd1bWVudCwgd2hpY2gKLSAgICAgICAgICAgICAgICAjIGlzIHdoeSB3ZSBoYXZlIHRoZSBhYm92ZSBjaGVjayBmb3Igc2VsZi50ZXh0Ci0KLSAgICAgICAgICAgICAgICAjIE5vdGU6IFdlIHdhbnQgdG8gYWxsb3cgTm9uZSBmb3IgdGhlIHZhbHVlIG9mIGNvbXBsZXRpb24tdGV4dAotICAgICAgICAgICAgICAgICMgdG8gbWVhbiB0aGF0IGNvbXBsZXRpb24gc2hvdWxkIGJlIGRpc2FibGVkIGZvciB0aGUgYXJndW1lbnQsCi0gICAgICAgICAgICAgICAgIyBzbyB3ZSB1c2UgRmFsc2UgZm9yIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBnZXQgbWV0aG9kLgotICAgICAgICAgICAgICAgICMgVGhlbiBpZiB0aGUgY29tcGxldGlvbi10ZXh0IGlzIG5vdCBzZXQgaW4gdGhlIGFyZyB0aGUKLSAgICAgICAgICAgICAgICAjICJpZiBub3QgY29tcGxldGlvbl90ZXh0IiBjaGVja3Mgd2lsbCBiZSBUcnVlLCBzbyB3ZSdsbCB0cnkgdG8KLSAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29tcGxldGlvbiB0ZXh0IHRvIHRoZSBoZWxwLW5hbWUgb3IgZmllbGQgdmFsdWUuCi0gICAgICAgICAgICAgICAgY29tcGxldGlvbl90ZXh0ID0gYXJnLmdldCgnY29tcGxldGlvbi10ZXh0JywgRmFsc2UpCi0gICAgICAgICAgICAgICAgaWYgY29tcGxldGlvbl90ZXh0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBQcm9iYWJseSBzaG91bGRuJ3QgdXNlIHN5bnRheCBoZWxwIGhlcmUuIFRoYXQKLSAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgcHJvYmFibHkgYmUgcmVzZXJ2ZWQgZm9yIHByaW50aW5nIGFkZGl0aW9uYWwKLSAgICAgICAgICAgICAgICAgICAgIyBzeW50YXggaGVscCBmb3IgdGhlIGFyZ3VtZW50LCBkdWggKHByZXN1bWFibHkgc29tZSBsb25nZXIKLSAgICAgICAgICAgICAgICAgICAgIyBkZXNjcmlwdGl2ZSB0ZXh0IGZvciB0aGUgYXJndW1lbnQpLgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29tcGxldGlvbl90ZXh0OgotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbl90ZXh0ID0gYXJnLmdldCgnaGVscC1uYW1lJykKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNvbXBsZXRpb25fdGV4dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25fdGV4dCA9IHRhZyBpZiB0YWcgZWxzZSBhcmcuZ2V0KCdmaWVsZCcpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheF9oZWxwID0gYXJnLmdldCgnc3ludGF4LWhlbHAnKQotICAgICAgICAgICAgICAgICAgICBpZiBzeW50YXhfaGVscCA9PSBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4X2hlbHAgPSAnQWRkIHN5bnRheC1oZWxwICVzIGF0ICVzJyAlIChjb21tYW5kWydzZWxmJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uX3RleHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGV4Y2x1ZGUgZW51bSwgc2luY2UgdGhlIHZhbHVlcyB3aWxsIGluY2x1ZGVkIGFzIHRleHQKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGVkZWYgYW5kIHR5cGVfbmFtZSAhPSAnZW51bSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4X2hlbHAgPSB0eXBlZGVmLmdldCgnaGVscC1uYW1lJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzeW50YXhfaGVscCA9PSBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhfaGVscCA9ICcgPCcgKyB0eXBlX25hbWUgKyAnPiAnICMgYWRkIGRlbGltCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgY29tcGxldGlvbl90ZXh0IGFuZCBzeW50YXhfaGVscDoKLSAgICAgICAgICAgICAgICAgICAgICAgICNhbmQgY29tcGxldGlvbl90ZXh0LnN0YXJ0c3dpdGgobG93ZXJfdGV4dCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uX3RleHQgPSAnIDwnICsgY29tcGxldGlvbl90ZXh0ICsgJz4gJyAjIGFkZF9kZWxpbQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29tcGxldGlvbnMgPT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9ucyA9IHt9Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSB1c2Ugb2YgdHVwbGUgaGVyZSBhcyBoZSBpbmRleCBwcm92aWRlcyBhIG1ldGhvZAotICAgICAgICAgICAgICAgICAgICAgICAgIyBvZiBpZGVudGlmeWluZyB0aGUgY29tcGxldGlvbiB2YWx1ZXMgd2hpY2ggYXJlIAotICAgICAgICAgICAgICAgICAgICAgICAgIyAnbWV0YS1pbmZvcm1hdGlvbicsIGFuZCBub3QgdG8gYmUgY29tcGxldGVkIGFnYWluc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zWyhjb21wbGV0aW9uX3RleHQsIHN5bnRheF9oZWxwKV0gPSBzeW50YXhfaGVscAotCi0gICAgICAgIGlmIGNvbXBsZXRpb25zIGFuZCBsZW4oY29tcGxldGlvbnMpID4gMDoKLSAgICAgICAgICAgIGZvciAoY29tcGxldGlvbiwgdGV4dCkgaW4gY29tcGxldGlvbnMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBzZWxmLmNvbXBsZXRpb25fc2V0KHNlbGYuY29tcGxldGlvbnMsIGNvbXBsZXRpb24sIHRleHQpCi0KLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBoYW5kbGVfY29tcGxldGVfY29tbWFuZChzZWxmLCBwcmVmaXhfbWF0Y2hlcywgc2NvcGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdfZGF0YSwgZmllbGRzLCBhY3Rpb25zLCBjb21tYW5kKToKLSAgICAgICAgaWYgbm90IHNlbGYudGV4dDoKLSAgICAgICAgICAgICMgY29tcGxldGUgY29tbWFuZCwgaW50ZW50aW9uYWxseSB1c2UgdGhlIHNob3J0LWhlbHAgYXNzb2NpYXRlZAotICAgICAgICAgICAgIyB3aXRoIHRoZSB0b3AgbGV2ZWwgb2YgdGhpcyBjb21tYW5kLgotICAgICAgICAgICAgIyBUaGUgdXNlIG9mIHR1cGxlIGhlcmUgYXMgaGUgaW5kZXggcHJvdmlkZXMgYSBtZXRob2QKLSAgICAgICAgICAgICMgb2YgaWRlbnRpZnlpbmcgdGhlIGNvbXBsZXRpb24gdmFsdWVzIHdoaWNoIGFyZSAKLSAgICAgICAgICAgICMgJ21ldGEtaW5mb3JtYXRpb24nLCBhbmQgbm90IHRvIGJlIGNvbXBsZXRlZCBhZ2FpbnN0Ci0gICAgICAgICAgICBzZWxmLmNvbXBsZXRpb25zWygnIDxjcj4gJywgJzxjcj4nICldID0gY29tbWFuZC5nZXQoJ3Nob3J0LWhlbHAnKQotCi0gICAgZGVmIGhhbmRsZV9jb21tYW5kX2Vycm9yKHNlbGYsIGUpOgotICAgICAgICAjIEZvciBjb21wbGV0aW9uIGlnbm9yZSBhbGwgZXJyb3JzIGV4Y2VwdGlvbiBmb3Igb25lcyB0aGF0IGFyZQotICAgICAgICAjIGluZGljYXRpdmUgb2YgYW4gZXJyb3IgaW4gdGhlIGNvbW1hbmQgZGVzY3JpcHRpb24sIHdoaWNoIHdpbGwKLSAgICAgICAgIyAoaG9wZWZ1bGx5KSBiZSBmb3VuZCBieSB0aGUgZGV2ZWxvcGVyIHdoaWxlIGRlYnVnZ2luZyB0aGUKLSAgICAgICAgIyBjb21tYW5kIGRlc2NyaXB0aW9uLgotICAgICAgICBpZiBpc2luc3RhbmNlKGUsIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKToKLSAgICAgICAgICAgIHNkbnNoLnByaW50X2NvbXBsZXRpb25faGVscChzZG5zaC5lcnJvcl9tc2coc3RyKGUpKSkKLSAgICAgICAgICAgIGlmIHNkbnNoLmRlYnVnIG9yIHNkbnNoLmRlYnVnX2JhY2t0cmFjZToKLSAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLQotCi0gICAgZGVmIHByaW50X2NvbXBsZXRpb25zKHNlbGYsIGNvbXBsZXRpb25zKToKLSAgICAgICAgIiIiCi0gICAgICAgIFByaW50IHRoZSBjb21wbGV0aW9ucyBvdXJzZWx2ZXMgaW4gc29ydGVkIG11bHRpcGxlIGNvbHVtbiBmb3JtYXQuCi0gICAgICAgIFdlIHVzZSB0aGlzIHdoZW4gdGhlIGNvbXBsZXRpb25zIGFyZSBhcmUgcHNldWRvL2hlbHAgY29tcGxldGlvbnMKLSAgICAgICAgdGhhdCBhcmVuJ3QgcmVhbCB0b2tlbnMgdGhhdCB3ZSB3YW50IHJlYWRsaW5lIHRvIHVzZSBmb3IKLSAgICAgICAgY29tcGxldGlvbnMuCi0gICAgICAgICIiIgotICAgICAgICBtZXRhX2NvbXBsZXRpb25zID0gW2NvbXBsZXRpb25bMF0gaWYgaXNpbnN0YW5jZShjb21wbGV0aW9uLCB0dXBsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGNvbXBsZXRpb24gZm9yIGNvbXBsZXRpb24gaW4gY29tcGxldGlvbnNdCi0gICAgICAgIG1ldGFfY29tcGxldGlvbnMuc29ydCgpCi0KLSAgICAgICAgc2Ruc2gucHJpbnRfY29tcGxldGlvbl9oZWxwKHNkbnNoLmNob2ljZXNfdGV4dF9idWlsZGVyKG1ldGFfY29tcGxldGlvbnMpKQotCi0KLSAgICBkZWYgaGFuZGxlX2NvbW1hbmRfcmVzdWx0cyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5tZXRhX2NvbXBsZXRpb24gPT0gVHJ1ZToKLSAgICAgICAgICAgICMgdHdvLWNvbHVtbiBkaXNwbGF5IG1vZGUKLSAgICAgICAgICAgIHNkbnNoLmNvbXBsZXRpb25fcHJpbnQgPSBGYWxzZQotICAgICAgICAgICAgaWYgbGVuKHNlbGYuY29tcGxldGlvbnMpOgotICAgICAgICAgICAgICAgIG1heF90b2tlbl9sZW4gPSAwCi0gICAgICAgICAgICAgICAgZm9yIGNvbXBsZXRpb24gaW4gc2VsZi5jb21wbGV0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgaXRlbSA9IGNvbXBsZXRpb24KLSAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb21wbGV0aW9uLCB0dXBsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpdGVtID0gY29tcGxldGlvblswXQotICAgICAgICAgICAgICAgICAgICBtYXhfdG9rZW5fbGVuID0gbWF4KG1heF90b2tlbl9sZW4sIGxlbihpdGVtKSkKLSAgICAgICAgICAgIHRleHQgPSBbXQotICAgICAgICAgICAgZm9yIGNvbXBsZXRpb24gaW4gc29ydGVkKHNlbGYuY29tcGxldGlvbnMua2V5cygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcD11dGlmLmNvbXBsZXRpb25fdHJhaWxpbmdfaW50ZWdlcl9jbXApOgotICAgICAgICAgICAgICAgIGhlbHAgPSBzZWxmLmNvbXBsZXRpb25zW2NvbXBsZXRpb25dCi0gICAgICAgICAgICAgICAgaWYgaGVscCBhbmQgaGVscFswXSA9PSAnISc6Ci0gICAgICAgICAgICAgICAgICAgIGhlbHAgPSBoZWxwWzE6XQotCi0gICAgICAgICAgICAgICAgbGVmdF9zaWRlID0gY29tcGxldGlvbgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29tcGxldGlvbiwgdHVwbGUpOgotICAgICAgICAgICAgICAgICAgICBsZWZ0X3NpZGUgPSBjb21wbGV0aW9uWzBdCi0gICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyUtKnMgJXNcbicgJSAobWF4X3Rva2VuX2xlbiwgbGVmdF9zaWRlLnN0cmlwKCksIGhlbHAuc3RyaXAoKSkpCi0gICAgICAgICAgICBzZG5zaC5wcmludF9jb21wbGV0aW9uX2hlbHAoJycuam9pbih0ZXh0KSkKLQotICAgICAgICBjb21wbGV0aW9ucyA9IGxpc3Qoc2VsZi5jb21wbGV0aW9ucykKLSAgICAgICAgaWYgbGVuKGNvbXBsZXRpb25zKSA9PSAxOgotICAgICAgICAgICAgY29tcGxldGlvbiA9IGNvbXBsZXRpb25zWzBdCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbXBsZXRpb24sIHR1cGxlKToKLSAgICAgICAgICAgICAgICBoZWxwX3RleHQgPSBjb21wbGV0aW9uWzFdCi0gICAgICAgICAgICAgICAgaWYgbm90IGhlbHBfdGV4dDoKLSAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0ID0gY29tcGxldGlvblswXQotICAgICAgICAgICAgICAgIGlmIHNlbGYubWV0YV9jb21wbGV0aW9uID09IEZhbHNlOgotICAgICAgICAgICAgICAgICAgICBzZG5zaC5wcmludF9jb21wbGV0aW9uX2hlbHAoaGVscF90ZXh0KQotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zID0gTm9uZQotICAgICAgICBlbGlmIGxlbihjb21wbGV0aW9ucykgPiAxOgotICAgICAgICAgICAgIyBTb21lIG9mIHRoZSBjb21wbGV0aW9uIHJlc3VsdHMgYXJlIHJlYWxseSBwc2V1ZG8gY29tcGxldGlvbnMKLSAgICAgICAgICAgICMgdGhhdCBhcmUgbWVhbnQgdG8gYmUgbW9yZSBsaWtlIGEgaGVscCBwcm9tcHQgZm9yIHRoZSB1c2VyIHJhdGhlcgotICAgICAgICAgICAgIyB0aGFuIGFuIGFjdHVhbCB0b2tlbiB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBjb21wbGV0aW9uIGJ5IHJlYWRsaW5lCi0gICAgICAgICAgICAjIElmIGFsbCBvZiB0aGUgY29tcGxldGlvbnMgYXJlIGxpa2UgdGhhdCBhbmQgd2UgcmV0dXJuIHRoZW0gdG8KLSAgICAgICAgICAgICMgcmVhZGxpbmUsIHRoZW4gaXQgd2lsbCBhY3R1YWxseSBjb21wbGV0ZSB0aGUgbGVhZGluZyBwcmVmaXgsIHdoaWNoCi0gICAgICAgICAgICAjIHdpbGwgYmUgYXQgbGVhc3QgdGhlIGxlYWRpbmcgJzwnLiBUbyBhdm9pZCB0aGF0IHNpdHVhdGlvbiB3ZSBwcmludAotICAgICAgICAgICAgIyBvdXQgdGhlIGNvbXBsZXRpb25zIG91cnNlbHZlcyB1c2luZyBwcmludF9jb21wbGV0aW9uX2hlbHAgYW5kIHRoZW4KLSAgICAgICAgICAgICMgcmV0dXJuIE5vbmUgZm9yIHRoZSBjb21wbGV0aW9ucy4KLSAgICAgICAgICAgIGFsbF9wc2V1ZG9fY29tcGxldGlvbnMgPSBUcnVlCi0gICAgICAgICAgICBmb3IgY29tcGxldGlvbiBpbiBjb21wbGV0aW9uczoKLSAgICAgICAgICAgICAgICBuYW1lID0gY29tcGxldGlvblswXSBpZiBpc2luc3RhbmNlKGNvbXBsZXRpb24sIHR1cGxlKSBlbHNlIGNvbXBsZXRpb24KLSAgICAgICAgICAgICAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgnPiAnKSBhbmQgbm90IG5hbWUuZW5kc3dpdGgoJz4nKToKLSAgICAgICAgICAgICAgICAgICAgYWxsX3BzZXVkb19jb21wbGV0aW9ucyA9IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBhbGxfcHNldWRvX2NvbXBsZXRpb25zOgotICAgICAgICAgICAgICAgIGlmIHNlbGYubWV0YV9jb21wbGV0aW9uID09IEZhbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnByaW50X2NvbXBsZXRpb25zKGNvbXBsZXRpb25zKQotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zID0gTm9uZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9ucyA9IFtjb21wbGV0aW9uWzBdIGlmIGlzaW5zdGFuY2UoY29tcGxldGlvbiwgdHVwbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb21wbGV0aW9uIGZvciBjb21wbGV0aW9uIGluIGNvbXBsZXRpb25zXQotCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9ucwotCi0KLWRlZiBkb19jb21tYW5kX2NvbXBsZXRpb24od29yZHMsIHRleHQpOgotICAgIGNvbXBsZXRlciA9IENvbW1hbmRDb21wbGV0ZXIoKQotICAgIGNvbXBsZXRpb25zID0gY29tcGxldGVyLmhhbmRsZV9jb21tYW5kKHdvcmRzLCB0ZXh0KQotICAgIHJldHVybiBjb21wbGV0aW9ucwotCi0KLWRlZiBkb19jb21tYW5kX2NvbXBsZXRpb25faGVscCh3b3JkcywgdGV4dCk6Ci0gICAgY29tcGxldGVyID0gQ29tbWFuZENvbXBsZXRlcihtZXRhX2NvbXBsZXRpb24gPSBUcnVlKQotICAgIGNvbXBsZXRpb25zID0gY29tcGxldGVyLmhhbmRsZV9jb21tYW5kKHdvcmRzLCB0ZXh0KQotICAgIHJldHVybiBjb21wbGV0aW9ucwotCi0KLWRlZiBfY2Fub25pY2FsaXplX3ZhbGlkYXRpb25fcmVzdWx0KHJlc3VsdCk6Ci0gICAgIiIiCi0gICAgVGhlIGNhbm9uaWNhbCAoaS5lLiBtb3N0IGdlbmVyYWwpIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsaWRhdGlvbgotICAgIHJlc3VsdCBpcyBhIGxpc3Qgb2YgMi1pdGVtIHR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgdHVwbGUKLSAgICBpcyB0aGUgdmFsaWRhdGVkIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gdXBkYXRlIHRoZSBhcmdfZGF0YQotICAgIGFuZCB0aGUgc2Vjb25kIGl0ZW0gaXMgdGhlIGFjdHVhbCB0b2tlbiB0aGF0IHdhcyBtYXRjaGVkLCB3aGljaCBtYXkKLSAgICBub3QgYmUgdGhlIHNhbWUgYXMgdGhlIHdvcmQgaW4gdGhlIGNvbW1hbmQuIEZvciBleGFtcGxlLCBpbiB0aGUKLSAgICByZXN1bHRzIGZvciBhbiBlbnVtIHRoZSB3b3JkIGZyb20gdGhlIGNvbW1hbmQgbWF5IGJlIGEgcHJlZml4IGZvcgotICAgIG9uZSBvZiB0aGUgYWxsb3dlZCB2YWx1ZSBmb3IgdGhlIGVudW0uIEluIHRoYXQgY2FzZSB0aGUgZmlyc3QgaXRlbQotICAgIHdvdWxkIGJlIHRoZSByZXR1cm4gdmFsdWUgZm9yIHRoZSBlbnVtIHZhbHVlIGFuZCB0aGUgc2Vjb25kIGl0ZW0KLSAgICB3aWxsIGJlIHRoZSBmdWxsIGVudW0gdmFsdWUsIGkuZS4gbm90IHRoZSBwcmVmaXggdGhhdCB3YXMgdHlwZWQKLSAgICBpbiB0aGUgY29tbWFuZC4KLQotICAgIEJ1dCB0aGVyZSBhcmUgYSBjb3VwbGUgb2Ygc2ltcGxlciByZXByZXNlbnRhdGlvbnMgb2YgdGhlIHZhbGlkYXRpb24KLSAgICByZXN1bHRzLiBGaXJzdCwgdGhlIHJlc3VsdCBjYW4gYmUgYSBzaW1wbGUgc2NhbGFyIHZhbGlkYXRlZCB2YWx1ZS4KLSAgICBUaGlzIGlzIGNvbnZlcnRlZCB0byB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGJ5IHR1cm5pbmcgaXQKLSAgICBpbnRvIFsoPHZhbHVlPiwgPHZhbHVlPildLiBTZWNvbmQsIHRoZSBpbnB1dCByZXN1bHQgY2FuIGJlIGp1c3QKLSAgICB0aGUgMi1pdGVtIHR1cGxlLiBUbyBjYW5vbmljYWxpemUgdGhhdCB3ZSBqdXN0IGVuY2xvc2UgaXQgaW4gYQotICAgIGxpc3Q6IFs8dHVwbGUtcmVzdWx0Pl0uCi0gICAgIiIiCi0gICAgaWYgcmVzdWx0IGlzIE5vbmU6Ci0gICAgICAgIHJlc3VsdCA9IFtdCi0gICAgZWxpZiBfaXNfbGlzdChyZXN1bHQpOgotICAgICAgICBpZiBsZW4ocmVzdWx0KSA+IDAgYW5kIG5vdCBfaXNfbGlzdChyZXN1bHRbMF0pOgotICAgICAgICAgICAgcmVzdWx0ID0gW3Jlc3VsdF0KLSAgICBlbHNlOgotICAgICAgICBtYXRjaGluZ190b2tlbiA9IHJlc3VsdCBpZiBfaXNfc3RyaW5nKHJlc3VsdCkgZWxzZSBzdHIocmVzdWx0KQotICAgICAgICByZXN1bHQgPSBbKHJlc3VsdCwgbWF0Y2hpbmdfdG9rZW4pXQotCi0gICAgcmV0dXJuIHJlc3VsdAotCi0KLWRlZiBfY29tYmluZV92YWxpZGF0aW9uX3Jlc3VsdHMocmVzdWx0MSwgcmVzdWx0MiwgdHlwZWRlZiwgdmFsdWUpOgotICAgIGlmIHJlc3VsdDEgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJlc3VsdDEgPSBfY2Fub25pY2FsaXplX3ZhbGlkYXRpb25fcmVzdWx0KHJlc3VsdDEpCi0gICAgaWYgcmVzdWx0MiBpcyBub3QgTm9uZToKLSAgICAgICAgcmVzdWx0MiA9IF9jYW5vbmljYWxpemVfdmFsaWRhdGlvbl9yZXN1bHQocmVzdWx0MikKLQotICAgIGlmIHJlc3VsdDEgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIHJlc3VsdDIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgPSBbciBmb3IgciBpbiByZXN1bHQxIGlmIHIgaW4gcmVzdWx0Ml0KLSAgICAgICAgICAgIGlmIGxlbihyZXN1bHQpID09IDA6Ci0gICAgICAgICAgICAgICAgX3JhaXNlX2FyZ3VtZW50X3ZhbGlkYXRpb25fZXhjZXB0aW9uKHR5cGVkZWYsIHZhbHVlLCAibm8gbWF0Y2giKQotICAgICAgICAgICAgI2VsaWYgbGVuKHJlc3VsdCkgPT0gMToKLSAgICAgICAgICAgICMgICAgcmVzdWx0ID0gcmVzdWx0WzBdCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0MQotICAgIGVsaWYgcmVzdWx0MiBpcyBub3QgTm9uZToKLSAgICAgICAgcmV0dXJuIHJlc3VsdDIKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gWyh2YWx1ZSwgdmFsdWUpXQotCi0KLWRlZiB2YWxpZGF0ZV90eXBlKHR5cGVfbmFtZSwgdmFsdWUsIHNjb3BlcywgY29tbWFuZCk6Ci0gICAgIiIiCi0gICAgVmFsaWRhdGUgdGhhdCB0aGUgc3BlY2lmaWVkIHZhbHVlIG1hdGNoZXMgdGhlIHZhbGlkYXRpb24gaW4gdGhlCi0gICAgc3BlY2lmaWVkIHR5cGUgZGVmaW5pdGlvbiBhbmQgYW55IGluaGVyaXRlZCB0eXBlIGRlZmluaXRpb25zCi0gICAgIiIiCi0gICAgIyBMb29rIHVwIHRoZSB0eXBlIGRlZmluaXRpb24gYW5kIHBlcmZvcm0gYW55IHZhbGlkYXRpb24gc3BlY2lmaWVkIHRoZXJlCi0gICAgdHlwZWRlZiA9IHR5cGVkZWZfcmVnaXN0cnkuZ2V0KHR5cGVfbmFtZSkKLSAgICBpZiBub3QgdHlwZWRlZjoKLSAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoJ1Vua25vd24gdHlwZTogJXMnICUgdHlwZV9uYW1lKQotCi0gICAgdHlwZV9yZXN1bHQgPSBOb25lCi0gICAgdmFsaWRhdGlvbl9yZXN1bHQgPSBOb25lCi0KLSAgICAjIElmIGl0J3MgYSBzdWJ0eXBlLCB2YWxpZGF0ZSB0aGUgYmFzZSB0eXBlIGZpcnN0Ci0gICAgYmFzZV90eXBlX25hbWUgPSB0eXBlZGVmLmdldCgnYmFzZS10eXBlJykKLSAgICBpZiBiYXNlX3R5cGVfbmFtZToKLSAgICAgICAgdHlwZV9yZXN1bHQgPSB2YWxpZGF0ZV90eXBlKGJhc2VfdHlwZV9uYW1lLCB2YWx1ZSwgc2NvcGVzLCBjb21tYW5kKQotCi0gICAgIyBGSVhNRTogU2VlbXMgbGlrZSB3ZSBzaG91bGRuJ3QgYmUgaGFuZGxpbmcgb2JqLXR5cGUgaGVyZSwgc2luY2UKLSAgICAjIHRoYXQncyBqdXN0IGFuIGF0dHJpYnV0ZSB0aGF0J3Mgc3BlY2lmaWMgdG8gY2VydGFpbiB2YWxpZGF0aW9uCi0gICAgIyBwcm9jcy4gU2hvdWxkbid0IHRoYXQgdmFsdWUgYWxyZWFkeSBiZSBhdmFpbGFibGUgaW4gdGhlIHNjb3BlcwotICAgICMgdG8gYmUgYWJsZSB0byBwYXNzIHRvIHRoZSBwcm9jPwotICAgIG9ial90eXBlID0gX2xvb2t1cF9pbl9zY29wZXMoJ29iai10eXBlJywgc2NvcGVzKQotCi0gICAgIyBOb3cgdmFsaWRhdGUgdGhlIHN1YnR5cGUKLSAgICAjIF9jYWxsX3Byb2MgcmVxdWlyZXMgdGhhdCB0aGUgZmlyc3Qgc2NvcGUgYmUgYW4gaW52b2NhdGlvbiBzY29wZSB0aGF0Ci0gICAgIyBpdCBwb3NzaWJseSBtb2RpZmllcyBieSBzZXR0aW5ncyB0aGUgJ3Njb3BlcycgdmFyaWFibGUsIHNvIHdlIG5lZWQKLSAgICAjIHRvIGluY2x1ZGUgYW4gZW1wdHkgaW52b2NhdGlvbiBzY29wZSBoZXJlCi0gICAgaW52b2NhdGlvbl9zY29wZSA9IHt9Ci0gICAgcGFyYW1ldGVyX3Njb3BlID0geyd0eXBlZGVmJzogdHlwZWRlZiwgJ3ZhbHVlJzogdmFsdWV9Ci0gICAgaWYgb2JqX3R5cGU6Ci0gICAgICAgIHBhcmFtZXRlcl9zY29wZVsnb2JqX3R5cGUnXSA9IG9ial90eXBlCi0gICAgc2NvcGVzID0gW2ludm9jYXRpb25fc2NvcGUsIHBhcmFtZXRlcl9zY29wZSwgdHlwZWRlZl0KLSAgICB3aGlsZSBiYXNlX3R5cGVfbmFtZSBpcyBub3QgTm9uZToKLSAgICAgICAgYmFzZV90eXBlZGVmID0gdHlwZWRlZl9yZWdpc3RyeS5nZXQoYmFzZV90eXBlX25hbWUpCi0gICAgICAgIGlmIG5vdCBiYXNlX3R5cGVkZWY6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcignSW52YWxpZCBiYXNlLXR5cGUgbmFtZTogJXMnICUgYmFzZV90eXBlX25hbWUpCi0gICAgICAgIHNjb3Blcy5hcHBlbmQoYmFzZV90eXBlZGVmKQotICAgICAgICBiYXNlX3R5cGVfbmFtZSA9IGJhc2VfdHlwZWRlZi5nZXQoJ2Jhc2UtdHlwZScpCi0KLSAgICAjY29tbWFuZF90eXBlID0gY29tbWFuZC5nZXQoJ2NvbW1hbmQtdHlwZScpCi0gICAgI2NvbW1hbmRfZGVmYXVsdHMgPSBjb21tYW5kX3R5cGVfZGVmYXVsdHMuZ2V0KGNvbW1hbmRfdHlwZSwge30pCi0KLSAgICAjc2NvcGVzLmFwcGVuZChbY29tbWFuZCwgY29tbWFuZF9kZWZhdWx0c10pCi0gICAgdmFsaWRhdGlvbiA9IF9sb29rdXBfaW5fc2NvcGVzKCd2YWxpZGF0aW9uJywgc2NvcGVzKQotICAgIGlmIHZhbGlkYXRpb246Ci0gICAgICAgIHZhbGlkYXRpb25fcmVzdWx0ID0gX2NhbGxfcHJvYyh2YWxpZGF0aW9uLCB2YWxpZGF0aW9uX3JlZ2lzdHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVzLCBjb21tYW5kKQotICAgICAgICBpZiB2YWxpZGF0aW9uX3Jlc3VsdCBpcyBOb25lOgotICAgICAgICAgICAgdmFsaWRhdGlvbl9yZXN1bHQgPSB2YWx1ZQotCi0gICAgcmVzdWx0ID0gX2NvbWJpbmVfdmFsaWRhdGlvbl9yZXN1bHRzKHR5cGVfcmVzdWx0LCB2YWxpZGF0aW9uX3Jlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiwgdmFsdWUpCi0KLSAgICByZXR1cm4gcmVzdWx0Ci0KLQotZGVmIHZhbGlkYXRlX2FyZ3VtZW50KGFyZywgdmFsdWUsIHNjb3BlcywgY29tbWFuZCk6Ci0KLSAgICB0eXBlX3Jlc3VsdCA9IE5vbmUKLSAgICB2YWxpZGF0aW9uX3Jlc3VsdCA9IE5vbmUKLQotICAgICMgVmFsaWRhdGUgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIGFyZ3VtZW50Ci0gICAgdHlwZV9uYW1lID0gYXJnLmdldCgndHlwZScpCi0gICAgaWYgdHlwZV9uYW1lOgotICAgICAgICBpZiB0eXBlX25hbWUgPT0gJ2VudW0nOgotICAgICAgICAgICAgI3ZhbHVlcyA9IGFyZy5nZXQoJ3ZhbHVlcycpCi0gICAgICAgICAgICAjcmVzdWx0ID0gdmFsaWRhdGVfZW51bSh7J3ZhbHVlcyc6IHZhbHVlc30sIHZhbHVlKQotICAgICAgICAgICAgdHlwZV9yZXN1bHQgPSBjX3ZhbGlkYXRpb25zLnZhbGlkYXRlX2VudW0oYXJnLCB2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHR5cGVfcmVzdWx0ID0gdmFsaWRhdGVfdHlwZSh0eXBlX25hbWUsIHZhbHVlLCBzY29wZXMsIGNvbW1hbmQpCi0gICAgZWxzZToKLSAgICAgICAgIyBJZiB0aGUgYXJndW1lbnQgZGVzY3JpcHRpb24gc3BlY2lmaWVzIGEgYmFzZS10eXBlIHZhbHVlLCB0aGVuCi0gICAgICAgICMgd2UgdHJlYXQgaXQgYXMgYW4gYW5vbnltb3VzIHR5cGVkZWYuCi0gICAgICAgICMgRklYTUU6IFNob3VsZCBwcm9iYWJseSBiZSBhYmxlIHRvIHJlZmFjdG9yIHRoaXMgY29kZSBhIGJpdCB0bwotICAgICAgICAjIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uLgotICAgICAgICBiYXNlX3R5cGVfbmFtZSA9IGFyZy5nZXQoJ2Jhc2UtdHlwZScpCi0gICAgICAgIGlmIGJhc2VfdHlwZV9uYW1lOgotICAgICAgICAgICAgYmFzZV90eXBlZGVmID0gdHlwZWRlZl9yZWdpc3RyeS5nZXQoYmFzZV90eXBlX25hbWUpCi0gICAgICAgICAgICBpZiBiYXNlX3R5cGVkZWY6Ci0gICAgICAgICAgICAgICAgdmFsaWRhdGlvbiA9IF9sb29rdXBfdHlwZWRlZl92YWx1ZShiYXNlX3R5cGVkZWYsICd2YWxpZGF0aW9uJykKLSAgICAgICAgICAgICAgICBpZiB2YWxpZGF0aW9uOgotICAgICAgICAgICAgICAgICAgICBzY29wZXMgPSBbeyd0eXBlZGVmJzogYXJnLCAndmFsdWUnOiB2YWx1ZX1dICsgc2NvcGVzCi0gICAgICAgICAgICAgICAgICAgIHR5cGVfcmVzdWx0ID0gX2NhbGxfcHJvYyh2YWxpZGF0aW9uLCB2YWxpZGF0aW9uX3JlZ2lzdHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVzLCBjb21tYW5kKQotICAgICAgICAgICAgICAgICAgICBpZiB0eXBlX3Jlc3VsdCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9yZXN1bHQgPSB2YWx1ZQotCi0gICAgIyBQZXJmb3JtIGFueSBjdXN0b20gdmFsaWRhdGUgcHJvYyBpbiB0aGUgYXJndW1lbnQKLSAgICB2YWxpZGF0aW9uID0gYXJnLmdldCgndmFsaWRhdGlvbicpCi0gICAgaWYgdmFsaWRhdGlvbjoKLSAgICAgICAgIyBJbmNsdWRlICd0eXBlZGVmJyBpbiB0aGUgbG9jYWwgc2NvcGUgc28gdGhhdCB3ZSBjYW4gdXNlCi0gICAgICAgICMgdHlwZWRlZiB2YWxpZGF0aW9uIGZ1bmN0aW9ucyBpbmxpbmUgZm9yIGFyZ3VtZW50cyAoYXMgb3Bwb3NlZCB0bwotICAgICAgICAjIHJlcXVpcmluZyBhIHR5cGVkZWYgZGVmaW5pdGlvbikuCi0gICAgICAgIHNjb3BlcyA9IFt7J2FyZyc6IGFyZywgJ3R5cGVkZWYnOiBhcmcsICd2YWx1ZSc6IHZhbHVlfV0gKyBzY29wZXMKLSAgICAgICAgdmFsaWRhdGlvbl9yZXN1bHQgPSBfY2FsbF9wcm9jKHZhbGlkYXRpb24sIHZhbGlkYXRpb25fcmVnaXN0cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZXMsIGNvbW1hbmQpCi0gICAgICAgIGlmIHZhbGlkYXRpb25fcmVzdWx0IGlzIE5vbmU6Ci0gICAgICAgICAgICB2YWxpZGF0aW9uX3Jlc3VsdCA9IHZhbHVlCi0KLSAgICByZXN1bHQgPSBfY29tYmluZV92YWxpZGF0aW9uX3Jlc3VsdHModHlwZV9yZXN1bHQsIHZhbGlkYXRpb25fcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIHZhbHVlKQotCi0gICAgcmV0dXJuIHJlc3VsdAotCi0jCi0jIENvbW1hbmRTeW50YXhlcjogQ29sbGVjdCBhbGwgdGhlIGNvbW1hbmRzIHdoaWNoICJwcmVmaXggbWF0Y2giIHRoZSB3b3JkcwotIwotY2xhc3MgQ29tbWFuZFN5bnRheGVyKENvbW1hbmRIYW5kbGVyKToKLSAgICAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaGVhZGVyKToKLSAgICAgICAgc3VwZXIoQ29tbWFuZFN5bnRheGVyLCBzZWxmKS5fX2luaXRfXygpCi0gICAgICAgIGlmIGhlYWRlciBpcyBOb25lOgotICAgICAgICAgICAgaGVhZGVyID0gJycKLSAgICAgICAgc2VsZi5oZWFkZXIgPSBoZWFkZXIKLSAgICAgICAgc2VsZi5pc19ub19jb21tYW5kID0gRmFsc2UKLSAgICAgICAgc2VsZi5jb21tYW5kcyA9IFtdCi0KLSAgICBkZWYgYWRkX2tub3duX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6Ci0gICAgICAgIHNlbGYuY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpCi0KLSAgICBkZWYgaGFuZGxlX2luY29tcGxldGVfY29tbWFuZChzZWxmLCBhcmcsIGFyZ19zY29wZXMsIGFyZ19kYXRhLCBmaWVsZHMsIHBhcnNlZF90YWcsIGNvbW1hbmQpOgotICAgICAgICBpZiBjb21tYW5kIG5vdCBpbiBzZWxmLmNvbW1hbmRzOgotICAgICAgICAgICAgc2VsZi5jb21tYW5kcy5hcHBlbmQoY29tbWFuZCkKLQotICAgIGRlZiBoYW5kbGVfY29tcGxldGVfY29tbWFuZChzZWxmLCBwcmVmaXhfbWF0Y2hlcywgc2NvcGVzLCBhcmdfZGF0YSwgZmllbGRzLCBhY3Rpb25zLCBjb21tYW5kKToKLSAgICAgICAgaWYgY29tbWFuZCBub3QgaW4gc2VsZi5jb21tYW5kczoKLSAgICAgICAgICAgIHNlbGYuY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpCi0gICAgZGVmIGhhbmRsZV9jb21tYW5kX3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgIGlmIGxlbihzZWxmLmNvbW1hbmRzKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuICdObyBhcHBsaWNhYmxlIGNvbW1hbmQ6ICVzJyAlICcgJy5qb2luKHNlbGYud29yZHMpCi0gICAgICAgIAotICAgICAgICBoZWxwX2xpbmVzID0gWycnXQotCi0gICAgICAgIGlmIHNlbGYuaGVhZGVyOgotICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoc2VsZi5oZWFkZXIpCi0gICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnJykKLQotICAgICAgICBoZWxwX3N0cmluZ3MgPSBbXQotICAgICAgICBmb3IgY29tbWFuZCBpbiBzZWxmLmNvbW1hbmRzOgotICAgICAgICAgICAgY29tbWFuZF9oZWxwX3N0cmluZyA9IF9nZXRfY29tbWFuZF9zeW50YXhfaGVscF9zdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHNlbGYucHJlZml4KQotICAgICAgICAgICAgaWYgdHlwZShjb21tYW5kX2hlbHBfc3RyaW5nKSA9PSBsaXN0OgotICAgICAgICAgICAgICAgIGhlbHBfc3RyaW5ncyArPSBjb21tYW5kX2hlbHBfc3RyaW5nCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGhlbHBfc3RyaW5ncy5hcHBlbmQoY29tbWFuZF9oZWxwX3N0cmluZykKLSAgICAgICAgICAgIAotICAgICAgICAodGVybV9jb2xzLCB0ZXJtX3Jvd3MpID0gc2Ruc2gucHAuZ2V0X3Rlcm1pbmFsX3NpemUoKQotICAgICAgICBmb3IgaCBpbiBzb3J0ZWQoaGVscF9zdHJpbmdzKToKLSAgICAgICAgICAgICMgdXNlIDc1JSBvZiB0aGUgd2lkdGgsIHNpbmNlIHJlZm9ybWF0X2xpbmUgaXNuJ3QgcGVyZmVjdC4KLSAgICAgICAgICAgIHNtYWxsZXJfdGVybV9jb2xzID0gKHRlcm1fY29scyAqIDMpIC8gNAotICAgICAgICAgICAgaWYgbGVuKGgpID4gc21hbGxlcl90ZXJtX2NvbHM6Ci0gICAgICAgICAgICAgICAgaGVscF9saW5lcyArPSByZWZvcm1hdF9saW5lKGgsIHNtYWxsZXJfdGVybV9jb2xzLCAwLCAwKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZChoKQotICAgICAgICAKLSAgICAgICAgaWYgbGVuKHNlbGYuY29tbWFuZHMpID09IDE6Ci0gICAgICAgICAgICBzaG9ydF9oZWxwID0gTm9uZQotICAgICAgICAgICAgaWYgc2VsZi5pc19ub19jb21tYW5kOgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIENvYmJsZSB0b2dldGhlciBhIGhlbHAgc3RyaW5nIGZvciBhIG5vIGNvbW1hbmQsIGJ1aWxkCi0gICAgICAgICAgICAgICAgIyBhIGRlZmF1bHQgdmFsdWUgZm9yIHN1YmNvbW1hbmQncywgcG9zc2libHkgb3RoZXIgY29tbWFuZAotICAgICAgICAgICAgICAgICMgZGVzY3JpcHRpb25zCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgIHNob3J0X2hlbHAgPSBzZWxmLmNvbW1hbmRzWzBdLmdldCgnbm8taGVscCcpCi0gICAgICAgICAgICAgICAgaWYgbm90IHNob3J0X2hlbHA6Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfdHlwZSA9IHNlbGYuY29tbWFuZHNbMF0uZ2V0KCdjb21tYW5kLXR5cGUnKQotICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBzZWxmLmNvbW1hbmRzWzBdLmdldCgnYWN0aW9uJykKLSAgICAgICAgICAgICAgICAgICAgaWYgKChjb21tYW5kX3R5cGUgYW5kIGNvbW1hbmRfdHlwZSA9PSAnY29uZmlnLXN1Ym1vZGUnKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpb24gYW5kIGFjdGlvbiA9PSAncHVzaC1tb2RlLXN0YWNrJykpOgotICAgICAgICAgICAgICAgICAgICAgICAgbW9kZV9uYW1lID0gc2VsZi5jb21tYW5kc1swXS5nZXQoJ25hbWUnKQotICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRfaGVscCA9ICdSZW1vdmUgJXMgY29uZmlndXJhdGlvbicgJSBtb2RlX25hbWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2hvcnRfaGVscCA9IHNlbGYuY29tbWFuZHNbMF0uZ2V0KCdzaG9ydC1oZWxwJykKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgc2hvcnRfaGVscDoKLSAgICAgICAgICAgICAgICAjaGVscF9saW5lcy5hcHBlbmQoJycpCi0gICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoc2hvcnRfaGVscCkKLSAgICAgICAgCi0gICAgICAgIHJldHVybiAnXG4nLmpvaW4oaGVscF9saW5lcykKLQotCi1kZWYgZ2V0X2NvbW1hbmRfc3ludGF4X2hlbHAod29yZHMsIGhlYWRlcj1Ob25lKToKLSAgICBoYW5kbGVyID0gQ29tbWFuZFN5bnRheGVyKGhlYWRlcikKLSAgICAjIEhhY2sgdG8gbWFrZSAiaGVscCBubyIgd29yawotICAgIGlmIGxlbih3b3JkcykgPT0gMSBhbmQgd29yZHNbMF0gPT0gJ25vJzoKLSAgICAgICAgd29yZHMgPSAgd29yZHMgKyBbJyddCi0gICAgcmVzdWx0ID0gaGFuZGxlci5oYW5kbGVfY29tbWFuZCh3b3JkcykKLSAgICByZXR1cm4gcmVzdWx0Ci0KLQotZGVmIGdldF9jb21tYW5kX3Nob3J0X2hlbHBfZm9yX3BhdHRlcm4od29yZCk6Ci0gICAgIyB0cnkgdG8gZmluZCB0aGUgY29tbWFuZCBiYXNlZCBvbiB0aGUgcGF0dGVybi4KLSAgICBmb3IgY29tbWFuZCBpbiBjb21tYW5kX3JlZ2lzdHJ5OgotICAgICAgICBpZiB0eXBlKGNvbW1hbmRbJ25hbWUnXSkgPT0gZGljdDoKLSAgICAgICAgICAgIGlmIGNvbW1hbmRbJ25hbWUnXVsndGl0bGUnXSA9PSB3b3JkOgotICAgICAgICAgICAgICAgIHJldHVybiBjb21tYW5kLmdldCgnc2hvcnQtaGVscCcpCi0gICAgCi0KLWRlZiBnZXRfY29tbWFuZF9zaG9ydF9oZWxwKHdvcmQpOgotICAgIGhhbmRsZXIgPSBDb21tYW5kSGFuZGxlcigpCi0gICAgbWF0Y2hpbmdfY29tbWFuZHMgPSBoYW5kbGVyLmdldF9tYXRjaGluZ19jb21tYW5kcyh3b3JkLCBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfcmVnaXN0cnkpCi0gICAgaWYgbGVuKG1hdGNoaW5nX2NvbW1hbmRzKSA9PSAwOgotICAgICAgICByZXR1cm4gZ2V0X2NvbW1hbmRfc2hvcnRfaGVscF9mb3JfcGF0dGVybih3b3JkKQotCi0gICAgaWYgbGVuKG1hdGNoaW5nX2NvbW1hbmRzKSA+PSAxOgotICAgICAgICAjIFRoaXMgd2lsbCBvbmx5IHdvcmsgb25jZSBhbGwgY29tbWFuZHMgaGF2ZSBjb21tYW5kIGRlc2NyaXB0aW9ucy4KLSAgICAgICAgI21hdGNoaW5nX2NvbW1hbmRzWzBdWzBdWydzZWxmJ10sIF9leGFjdF9tb2RlX21hdGNoKGN1cnJlbnRfbW9kZSwKLSAgICAgICAgIyhtYXRjaGluZ19jb21tYW5kc1swXVswXSkuZ2V0KCdtb2RlJykpCi0gICAgICAgIHJldHVybiAobWF0Y2hpbmdfY29tbWFuZHNbMF1bMF0pLmdldCgnc2hvcnQtaGVscCcpCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgZHVtYl9mb3JtYXR0ZXIob3V0LCB0ZXh0LCBsZWZ0LCByaWdodCA9IE5vbmUpOgotICAgICIiIgotICAgIEJ1aWxkIG91dHB1dCBsaW5lcyBmcm9tIHRoZSBwYXNzZWQgaW4gdGV4dC4gIElmIHRoZQotICAgIHRleHQgaGFzIGxlYWRpbmcgc3BhY2VzLCB0aGVuIGxlYXZlIHRoZSBzcGFjZXMgaW50YWN0Ci0gICAgKHN0YXJ0aW5nIGF0IHRoZSBpbmRlbnQpLgotICAgICIiIgotICAgIGlmIHJpZ2h0ID09IE5vbmU6Ci0gICAgICAgIChyaWdodCwgbGluZV9sZW5ndGgpID0gc2Ruc2gucHAuZ2V0X3Rlcm1pbmFsX3NpemUoKQotICAgICAgICBpZiByaWdodCAtIDIwID4gbGVmdDogIyBYWFggbmVlZHMgd29yawotICAgICAgICAgICAgcmlnaHQgPSByaWdodCAtIDIwCi0gICAgICAgIHJpZ2h0ID0gbWluKHJpZ2h0LCAxMjApCi0KLSAgICBsZWZ0X2luZGVudCA9ICcgJyAqIGxlZnQKLSAgICBvdXRfbGVuID0gbGVmdAotICAgIG91dF9saW5lID0gbGVmdF9pbmRlbnQKLQotICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXQoJ1xuJyk6Ci0gICAgICAgIGlmIGxlbihsaW5lKSA9PSAwOgotICAgICAgICAgICAgaWYgb3V0X2xlbiA+IGxlZnQ6Ci0gICAgICAgICAgICAgICAgb3V0LmFwcGVuZChvdXRfbGluZSkKLSAgICAgICAgICAgIG91dF9sZW4gPSBsZWZ0Ci0gICAgICAgICAgICBvdXRfbGluZSA9IGxlZnRfaW5kZW50Ci0gICAgICAgICAgICBvdXQuYXBwZW5kKCcnKQotICAgICAgICBlbGlmIGxpbmVbMF0gPT0gJyAnOiAgIyBsZWFkaW5nIHNwYWNlcwotICAgICAgICAgICAgaWYgb3V0X2xlbiA+IGxlZnQ6Ci0gICAgICAgICAgICAgICAgb3V0LmFwcGVuZChvdXRfbGluZSkKLSAgICAgICAgICAgIG91dF9sZW4gPSBsZWZ0Ci0gICAgICAgICAgICBvdXRfbGluZSA9IGxlZnRfaW5kZW50Ci0gICAgICAgICAgICBvdXQuYXBwZW5kKCBsZWZ0X2luZGVudCArIGxpbmUgKQotICAgICAgICBlbHNlOiAjIHRleHQgZm9ybWF0dGluZwotCi0gICAgICAgICAgICBmb3Igd29yZCBpbiBsaW5lLnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgc2VwID0gJyAnCi0gICAgICAgICAgICAgICAgaWYgd29yZC5lbmRzd2l0aCgnLicpOgotICAgICAgICAgICAgICAgICAgICBzZXAgPSAnICAnCi0gICAgICAgICAgICAgICAgaWYgbGVuKHdvcmQpICsgb3V0X2xlbiArIGxlbihzZXApID4gcmlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG91dF9sZW4gPiBsZWZ0OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LmFwcGVuZChvdXRfbGluZSkKLSAgICAgICAgICAgICAgICAgICAgb3V0X2xlbiA9IGxlZnQgKyBsZW4od29yZCkgKyBsZW4oc2VwKQotICAgICAgICAgICAgICAgICAgICBvdXRfbGluZSA9IGxlZnRfaW5kZW50ICsgd29yZCArIHNlcAotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG91dF9saW5lICs9IHdvcmQgKyBzZXAKLSAgICAgICAgICAgICAgICAgICAgb3V0X2xlbiArPSBsZW4oc2VwKSArIGxlbih3b3JkKQotICAgIGlmIG91dF9sZW4gPiBsZWZ0OgotICAgICAgICBvdXQuYXBwZW5kKG91dF9saW5lKQotCi0KLSMKLSMgRG9jdW1lbnRhdGlvbnM6IENvbGxlY3QgYWxsIHRoZSBjb21tYW5kcyB3aGljaCAicHJlZml4IG1hdGNoIiB0aGUgd29yZHMKLSMKLWNsYXNzIENvbW1hbmREb2N1bWVudG9yKENvbW1hbmRIYW5kbGVyKToKLSAgICAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaGVhZGVyLCBmb3JtYXQgPSBOb25lKToKLSAgICAgICAgc3VwZXIoQ29tbWFuZERvY3VtZW50b3IsIHNlbGYpLl9faW5pdF9fKCkKLSAgICAgICAgaWYgaGVhZGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBoZWFkZXIgPSAnJwotICAgICAgICBzZWxmLmhlYWRlciA9IGhlYWRlcgotICAgICAgICBzZWxmLmNvbW1hbmRzID0gW10KLSAgICAgICAgc2VsZi5kb2NzID0ge30KLSAgICAgICAgc2VsZi5kb2NzX3N0YWNrID0gW10KLSAgICAgICAgc2VsZi5pc19ub19jb21tYW5kID0gRmFsc2UKLSAgICAgICAgc2VsZi53b3JkcyA9IE5vbmUKLSAgICAgICAgc2VsZi5mb3JtYXQgPSBmb3JtYXQKLSAgICAgICAgKHNlbGYudGVybV9jb2xzLCBzZWxmLnRlcm1fcm93cykgPSBzZG5zaC5wcC5nZXRfdGVybWluYWxfc2l6ZSgpCi0KLQotICAgIGRlZiBhZGRfZG9jcyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgaW4gc2Ruc2gucmVzZXJ2ZWRfd29yZHMgYW5kIHZhbHVlID09IE5vbmU6Ci0gICAgICAgICAgICB2YWx1ZSA9ICdyZXNlcnZlZHwlcycgJSBuYW1lCi0gICAgICAgIGlmIG5hbWUgaW4gc2VsZi5kb2NzOgotICAgICAgICAgICAgaWYgdmFsdWUgIT0gc2VsZi5kb2NzW25hbWVdOgotICAgICAgICAgICAgICAgIGlmIHZhbHVlICE9IE5vbmUgYW5kIE5vbmUgaW4gc2VsZi5kb2NzW25hbWVdIGFuZCBcCi0gICAgICAgICAgICAgICAgICBsZW4oc2VsZi5kb2NzW25hbWVdKSA9PSAxIDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5kb2NzW25hbWVdID0gW3ZhbHVlXQotICAgICAgICAgICAgICAgIGVsaWYgdmFsdWUgIT0gTm9uZSBhbmQgdmFsdWUgbm90IGluIHNlbGYuZG9jc1tuYW1lXToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5kb2NzW25hbWVdLmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgICAgICMgaWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUsIGRvbid0IGRvIG51dHRuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmRvY3NbbmFtZV0gPSBbdmFsdWVdCi0KLSAgICBkZWYgYWRkX2RpY3RfZG9jKHNlbGYsIGFyZyk6Ci0gICAgICAgIGlmICdjaG9pY2VzJyBpbiBhcmc6Ci0gICAgICAgICAgICBzZWxmLmFkZF90dXBsZV9kb2NzKGFyZ1snY2hvaWNlcyddKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmICdhcmdzJyBpbiBhcmc6Ci0gICAgICAgICAgICBhcmdzX2FyZyA9IGFyZ1snYXJncyddCi0gICAgICAgICAgICBpZiB0eXBlKGFyZ3NfYXJnKSA9PSB0dXBsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFkZF90dXBsZV9kb2NzKGFyZ3NfYXJnKQotICAgICAgICAgICAgZWxpZiB0eXBlKGFyZ3NfYXJnKSA9PSBkaWN0OgotICAgICAgICAgICAgICAgIHNlbGYuYWRkX2RpY3RfZG9jKGFyZ3NfYXJnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCAnYWRkX2RpY3RfZG9jICcsIHR5cGUoYXJnc19hcmcpLCBhcmdzX2FyZwotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgdGFnID0gYXJnLmdldCgndGFnJykKLSAgICAgICAgaWYgJ2ZpZWxkJyBpbiBhcmc6Ci0gICAgICAgICAgICBpZiB0YWc6Ci0gICAgICAgICAgICAgICAgbmFtZSA9ICclcyA8JXM+JyAlICh0YWcsIGFyZ1snZmllbGQnXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZSA9IGFyZ1snZmllbGQnXQotICAgICAgICBlbGlmICd0b2tlbicgaW4gYXJnOgotICAgICAgICAgICAgbmFtZSA9IGFyZ1sndG9rZW4nXQotCi0gICAgICAgIGRvYyA9IGFyZy5nZXQoJ2RvYycpCi0KLSAgICAgICAgaWYgZG9jIGFuZCAndHlwZScgaW4gYXJnOgotICAgICAgICAgICAgdmFsdWVzID0gYXJnLmdldCgndmFsdWVzJykKLSAgICAgICAgICAgIGlmIGFyZ1sndHlwZSddID09ICdlbnVtJyBhbmQgdmFsdWVzOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWVzLHN0cik6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkX2RvY3ModmFsdWVzLGRvYykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBmb3IgdiBpbiB2YWx1ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBkb2MgYW5kIGRvY1stMV0gPT0gJysnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkX2RvY3ModiwgZG9jWzotMV0gKyB2KQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZF9kb2NzKHYsIGRvYykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgaWYgZG9jOgotICAgICAgICAgICAgc2VsZi5hZGRfZG9jcyhuYW1lLCBkb2MpCi0KLQotICAgIGRlZiBhZGRfdHVwbGVfZG9jcyhzZWxmLCB0dXBsZV9hcmcpOgotICAgICAgICBmb3IgdCBpbiB0dXBsZV9hcmc6Ci0gICAgICAgICAgICBpZiB0eXBlKHQpID09IHR1cGxlOgotICAgICAgICAgICAgICAgIHNlbGYuYWRkX3R1cGxlX2RvY3ModCkKLSAgICAgICAgICAgIGVsaWYgdHlwZSh0KSA9PSBkaWN0OgotICAgICAgICAgICAgICAgIHNlbGYuYWRkX2RpY3RfZG9jKHQpCi0KLSAgICBkZWYgYWRkX2NvbW1hbmQoc2VsZiwgY29tbWFuZCk6Ci0gICAgICAgIHNlbGYuY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpCi0gICAgICAgIGFyZ3MgPSBjb21tYW5kLmdldCgnYXJncycpCi0gICAgICAgIHNlbGYuYWRkX3R1cGxlX2RvY3MoKGFyZ3MsKSkKLQotICAgIGRlZiBoYW5kbGVfZmlyc3RfbWF0Y2hlZF9yZXN1bHQoc2VsZiwgY29tbWFuZCk6Ci0gICAgICAgIHNlbGYuZG9jc19zdGFjay5hcHBlbmQoe30pCi0KLSAgICBkZWYgaGFuZGxlX21hdGNoZWRfcmVzdWx0KHNlbGYsIGNvbW1hbmQsIHJlc3VsdCwgYXJnX3Njb3Blcyk6Ci0gICAgICAgIG1hdGNoZWRfZG9jID0gIF9sb29rdXBfaW5fc2NvcGVzKCdkb2MnLCBhcmdfc2NvcGVzKQotICAgICAgICBpZiBtYXRjaGVkX2RvYyBhbmQgbWF0Y2hlZF9kb2NbLTFdID09ICcrJzoKLSAgICAgICAgICAgIGl0ZW0gPSByZXN1bHQKLSAgICAgICAgICAgIGlmIHR5cGUoaXRlbSkgPT0gdHVwbGU6Ci0gICAgICAgICAgICAgICAgaXRlbSA9IGl0ZW1bMF0KLSAgICAgICAgICAgIG1hdGNoZWRfZG9jID0gbWF0Y2hlZF9kb2NbOi0xXSArIGl0ZW0KLSAgICAgICAgc2VsZi5kb2NzX3N0YWNrWy0xXVtjb21tYW5kWydzZWxmJ11dID0gKHJlc3VsdCwgbWF0Y2hlZF9kb2MpCi0KLSAgICBkZWYgaGFuZGxlX2luY29tcGxldGVfY29tbWFuZChzZWxmLCBhcmcsIGFyZ19zY29wZXMsIGFyZ19kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkcywgcGFyc2VkX3RhZywgY29tbWFuZCk6Ci0gICAgICAgIHRhZyA9IGFyZy5nZXQoJ3RhZycpCi0gICAgICAgIGRvYyA9IGFyZy5nZXQoJ2RvYycpCi0gICAgICAgIGRvY19hbnkgPSBkb2MKLSAgICAgICAgaWYgZG9jX2FueSA9PSBOb25lOgotICAgICAgICAgICAgZG9jX2FueSA9IF9sb29rdXBfaW5fc2NvcGVzKCdkb2MnLCBhcmdfc2NvcGVzKQotICAgICAgICAjIG5vdGU6IGRvYyBtYXkgc3RpbGwgYmUgTm9uZQotCi0gICAgICAgIHRva2VuID0gYXJnLmdldCgndG9rZW4nKQotCi0gICAgICAgIHR5cGVfbmFtZSA9IGFyZy5nZXQoJ3R5cGUnKQotICAgICAgICBpZiB0eXBlX25hbWUgPT0gTm9uZToKLSAgICAgICAgICAgIHR5cGVfbmFtZSA9IGFyZy5nZXQoJ2Jhc2UtdHlwZScpCi0gICAgICAgIHR5cGVkZWYgPSB0eXBlZGVmX3JlZ2lzdHJ5LmdldCh0eXBlX25hbWUpIGlmIHR5cGVfbmFtZSBlbHNlIE5vbmUKLQotICAgICAgICBmaWVsZCA9IGFyZy5nZXQoJ2ZpZWxkJykKLSAgICAgICAgaGVscF9uYW1lID0gYXJnLmdldCgnaGVscC1uYW1lJywgZmllbGQpCi0KLSAgICAgICAgZmllbGRfZG9jID0gYXJnLmdldCgnY29tcGxldGlvbi10ZXh0JywgRmFsc2UpCi0gICAgICAgIGlmIGZpZWxkX2RvYyA9PSBOb25lOgotICAgICAgICAgICAgZmllbGRfZG9jID0gYXJnLmdldCgnaGVscC1uYW1lJykKLSAgICAgICAgaWYgZmllbGRfZG9jID09IE5vbmU6Ci0gICAgICAgICAgICBmaWVsZF9kb2MgPSBhcmcuZ2V0KCdzeW50YXgtaGVscCcpCi0KLSAgICAgICAgZGVmIG1hbmFnZV9lbnVtKGFyZywgZG9jKToKLSAgICAgICAgICAgIGVudW1fdmFsdWVzID0gYXJnLmdldCgndmFsdWVzJykKLSAgICAgICAgICAgIGlmIF9pc19zdHJpbmcoZW51bV92YWx1ZXMpOgotICAgICAgICAgICAgICAgIGVudW1fdmFsdWVzID0gW2VudW1fdmFsdWVzXQotICAgICAgICAgICAgZm9yIGVudW0gaW4gZW51bV92YWx1ZXM6Ci0gICAgICAgICAgICAgICAgaWYgZG9jIGFuZCBkb2NbLTFdID09ICcrJzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGRfZG9jcyhlbnVtLCBkb2NbOi0xXSArIGVudW0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGRfZG9jcyhlbnVtLCBkb2MpCi0KLSAgICAgICAgaWYgdG9rZW4gIT0gTm9uZTogICMgdG9rZW4gaXMgYSBsb25lci4KLSAgICAgICAgICAgIHNlbGYuYWRkX2RvY3ModG9rZW4ubG93ZXIoKSwgZG9jX2FueSkKLSAgICAgICAgZWxpZiB0YWcgYW5kIGZpZWxkIGFuZCBmaWVsZF9kb2M6Ci0gICAgICAgICAgICBzZWxmLmFkZF9kb2NzKHRhZyArICcgPCcgKyBoZWxwX25hbWUgKyAnPicsIGRvYyBpZiBkb2MgZWxzZSBmaWVsZF9kb2MpCi0gICAgICAgIGVsaWYgZmllbGQgYW5kIHR5cGVkZWYgYW5kIHR5cGVkZWYuZ2V0KCduYW1lJykgPT0gJ2VudW0nOgotICAgICAgICAgICAgbWFuYWdlX2VudW0oYXJnLCBkb2MpCi0gICAgICAgIGVsaWYgZmllbGQgYW5kIGRvYzoKLSAgICAgICAgICAgIHNlbGYuYWRkX2RvY3MoaGVscF9uYW1lLCBkb2MpCi0gICAgICAgIGVsaWYgdGFnIGFuZCBmaWVsZCBhbmQgdHlwZWRlZjogCi0gICAgICAgICAgICBzZWxmLmFkZF9kb2NzKHRhZyArICcgPCcgKyBoZWxwX25hbWUgKyAnPicsICd0eXBlc3wnICsgIHR5cGVkZWYuZ2V0KCduYW1lJykpCi0gICAgICAgIGVsaWYgZmllbGQgYW5kIGZpZWxkX2RvYzoKLSAgICAgICAgICAgIHNlbGYuYWRkX2RvY3MoaGVscF9uYW1lLCBmaWVsZF9kb2MpCi0gICAgICAgIGVsaWYgdHlwZWRlZjoKLSAgICAgICAgICAgIHR5cGVkZWZfbmFtZSA9IHR5cGVkZWYuZ2V0KCduYW1lJykubG93ZXIoKQotICAgICAgICAgICAgaWYgdHlwZWRlZl9uYW1lICE9ICdlbnVtJzoKLSAgICAgICAgICAgICAgICBpZiBmaWVsZDoKLSAgICAgICAgICAgICAgICAgICAgIyBtYWdpYyByZWZlcmVuY2UgdG8gZG9jOiAgdHlwZXMvPHR5cGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZF9kb2NzKGZpZWxkLCAndHlwZXN8JyArIHR5cGVkZWYuZ2V0KCduYW1lJykpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGRfZG9jcyh0eXBlZGVmLmdldCgnbmFtZScpLmxvd2VyKCksIGRvYykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWFuYWdlX2VudW0oYXJnLCBkb2MpCi0KLSAgICAgICAgaWYgY29tbWFuZCBub3QgaW4gc2VsZi5jb21tYW5kczoKLSAgICAgICAgICAgIHNlbGYuY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpCi0KLQotICAgIGRlZiBoYW5kbGVfY29tcGxldGVfY29tbWFuZChzZWxmLCBwcmVmaXhfbWF0Y2hlcywgc2NvcGVzLCBhcmdfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzLCBhY3Rpb25zLCBjb21tYW5kKToKLSAgICAgICAgIyBvbmx5IHByb3ZpZGUgaGVscCBmb3IgZXhhY3QgY29tbWFuZCBtYXRjaGVzCi0gICAgICAgIGlmIGxlbihwcmVmaXhfbWF0Y2hlcyk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBjb21tYW5kIG5vdCBpbiBzZWxmLmNvbW1hbmRzOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ0NPTVBMRVRFIENPTU1BTkQgRE9DJywgIGNvbW1hbmRbJ3NlbGYnXSwgYXJnX2RhdGEsIHByZWZpeF9tYXRjaGVzCi0gICAgICAgICAgICBzZWxmLmNvbW1hbmRzLmFwcGVuZChjb21tYW5kKQotCi0gICAgZGVmIGhhbmRsZV9jb21tYW5kX3Jlc3VsdHNfd2lraShzZWxmKToKLSAgICAgICAgZGVmIGhhbmRsZV9wbGFpbnRleHRfd2lraShpbnB1dHN0cik6Ci0gICAgICAgICAgICBpbnB1dHN0cj1pbnB1dHN0ci5yZXBsYWNlKCJ7IiwiXHsiKQotICAgICAgICAgICAgaW5wdXRzdHI9aW5wdXRzdHIucmVwbGFjZSgifSIsIlx9IikKLSAgICAgICAgICAgIGlucHV0c3RyPWlucHV0c3RyLnJlcGxhY2UoIlsiLCJcWyIpCi0gICAgICAgICAgICBpbnB1dHN0cj1pbnB1dHN0ci5yZXBsYWNlKCJdIiwiXF0iKQotICAgICAgICAgICAgaW5wdXRzdHI9aW5wdXRzdHIucmVwbGFjZSgiXFxcXCIsIjxicj4iKQotICAgICAgICAgICAgaW5wdXRzdHI9aW5wdXRzdHIucmVwbGFjZSgiXG5cbiIsICJcXEAiKQotICAgICAgICAgICAgaW5wdXRzdHI9aW5wdXRzdHIucmVwbGFjZSgiXG4iLCIgIikKLSAgICAgICAgICAgIGlucHV0c3RyPWlucHV0c3RyLnJlcGxhY2UoIlxcQCIsICJcblxuIikKLSAgICAgICAgICAgIGlucHV0c3RyPWlucHV0c3RyLnJlcGxhY2UoIjxicj4iLCAiXG4iKQotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gaW5wdXRzdHIKLQotICAgICAgICBpZiBsZW4oc2VsZi5jb21tYW5kcykgPT0gMDoKLSAgICAgICAgICAgIGlmIHNlbGYud29yZHM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdObyBhcHBsaWNhYmxlIGNvbW1hbmQ6ICVzJyAlICcgJy5qb2luKHNlbGYud29yZHMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAnXG5ObyBjb21tYW5kIGZvciAgJyArIHNlbGYuaGVhZGVyCi0gICAgICAgIGhlbHBfbGluZXM9W10KLSAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJycpCi0gICAgICAgIGxhc3RfZGVzY19uYW1lID0gTm9uZQotICAgICAgICBsYXN0X3N5bnRheF9uYW1lID0gTm9uZQotICAgICAgICAjIEtlZXAgdHJhY2sgb2YgcGFyYWdyYXBocyBkaXNwbGF5ZWQgdG8gcHJldmVudCByZXBlYXRlZAotICAgICAgICAjIGRpc3BsYXkgb2YgdGhlIHNhbWUgZG9jIHRhZ3MuCi0gICAgICAgIHNob3duX2l0ZW1zID0gW10gCi0gICAgICAgIGZvciBjb21tYW5kIGluIHNlbGYuY29tbWFuZHM6Ci0gICAgICAgICAgICBkb2NfdGFnID0gY29tbWFuZC5nZXQoJ2RvYycpCi0gICAgICAgICAgICBuYW1lID0gX2dldF9jb21tYW5kX3RpdGxlKGNvbW1hbmQpCi0gICAgICAgICAgICBzaG9ydF9oZWxwID0gY29tbWFuZC5nZXQoJ3Nob3J0LWhlbHAnKQotICAgICAgICAgICAgaWYgc2hvcnRfaGVscDoKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmhlYWRlcjoKLSAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJ1xuaDIuICVzIENvbW1hbmQnICUgbmFtZS5jYXBpdGFsaXplKCkpCi0gICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJ1xuaDQuICVzJyAlIHNob3J0X2hlbHAuY2FwaXRhbGl6ZSgpKQotICAgICAgICAgICAgICAgIGNtZG1vZGU9Y29tbWFuZC5nZXQoJ21vZGUnKQotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY21kbW9kZSxsaXN0KToKLSAgICAgICAgICAgICAgICAgICAgY21kbW9kZXN0cj0nJwotICAgICAgICAgICAgICAgICAgICBmb3IgY21kbW9kZW1lbSBpbiBjbWRtb2RlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY21kbW9kZW1lbVstMV09PScqJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRtb2RlbWVtPWNtZG1vZGVtZW1bOi0xXQotICAgICAgICAgICAgICAgICAgICAgICAgY21kbW9kZXN0cj0gY21kbW9kZXN0ciArJyAnICsgY21kbW9kZW1lbQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNtZG1vZGVzdHI9Y21kbW9kZQotICAgICAgICAgICAgICAgICAgICBpZiBjbWRtb2Rlc3RyWy0xXT09JyonOgotICAgICAgICAgICAgICAgICAgICAgICAgY21kbW9kZXN0cj1jbWRtb2Rlc3RyWzotMV0KLSAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnXG4qQ29tbWFuZCBNb2RlOiogICAgICAgICAgJXMgbW9kZScgJSBjbWRtb2Rlc3RyKQotICAgICAgICAgICAgICAgIGxhc3Rfc3ludGF4X25hbWUgPSBOb25lICMgZGlzcGxheSBzeW50YXggaGVhZGVyCi0KLSAgICAgICAgICAgIGhlbHBfc3RyaW5ncyA9IFtdCi0gICAgICAgICAgICBjb21tYW5kX2hlbHBfc3RyaW5nID0gX2dldF9jb21tYW5kX3N5bnRheF9oZWxwX3N0cmluZygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgc2VsZi5wcmVmaXgpCi0gICAgICAgICAgICBoZWxwX3N0cmluZ3MuYXBwZW5kKGNvbW1hbmRfaGVscF9zdHJpbmcpCi0gICAgICAgICAgICBmb3IgaCBpbiBzb3J0ZWQoaGVscF9zdHJpbmdzKToKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGgsbGlzdCk6Ci0gICAgICAgICAgICAgICAgICAgIGggPSBoYW5kbGVfcGxhaW50ZXh0X3dpa2koaFswXSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBoID0gaGFuZGxlX3BsYWludGV4dF93aWtpKGgpCi0gICAgICAgICAgICAgICAgaWYgbGFzdF9zeW50YXhfbmFtZSAhPSBuYW1lOgotICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnXG4qQ29tbWFuZCBTeW50YXg6KiAgICAgICAge3slc319JyAlIGgpCi0gICAgICAgICAgICAgICAgbGFzdF9zeW50YXhfbmFtZSA9IG5hbWUKLSAgICAgICAgICAgICAgICBsYXN0X2Rlc2NfbmFtZSA9IE5vbmUgIyBwcmludCBkZXNjcmlwdGlvbiBoZWFkZXIKLQotICAgICAgICAgICAgaWYgZG9jX3RhZzoKLSAgICAgICAgICAgICAgICB0ZXh0ID0gZG9jLmdldF90ZXh0KHNlbGYsIGRvY190YWcpCi0gICAgICAgICAgICAgICAgaWYgdGV4dCAhPSAnJyBhbmQgZG9jX3RhZyBub3QgaW4gc2hvd25faXRlbXM6Ci0gICAgICAgICAgICAgICAgICAgIHNob3duX2l0ZW1zLmFwcGVuZChkb2NfdGFnKQotICAgICAgICAgICAgICAgICAgICBpZiBsYXN0X2Rlc2NfbmFtZSAhPSBuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJ1xuKkNvbW1hbmQgRGVzY3JpcHRpb246KicpCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2Rlc2NfbmFtZSA9IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgdGV4dD1oYW5kbGVfcGxhaW50ZXh0X3dpa2kodGV4dCkKLSAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQodGV4dCkKLSAgICAgICAgICAgICAgICAgICAgI2R1bWJfZm9ybWF0dGVyKGhlbHBfbGluZXMsIHRleHQsIDMpCi0gICAgICAgICAgICAgICAgICAgIGxhc3Rfc3ludGF4X25hbWUgPSBOb25lICMgcHJpbnQgJ1N5bnRheCcgaGVhZGVyCi0gICAgICAgIGlmIGxlbihzZWxmLmNvbW1hbmRzKSA9PSAxOgotICAgICAgICAgICAgc2hvcnRfaGVscCA9IE5vbmUKLSAgICAgICAgICAgIGlmIHNlbGYuaXNfbm9fY29tbWFuZDoKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBDb2JibGUgdG9nZXRoZXIgYSBoZWxwIHN0cmluZyBmb3IgYSBubyBjb21tYW5kLCBidWlsZAotICAgICAgICAgICAgICAgICMgYSBkZWZhdWx0IHZhbHVlIGZvciBzdWJjb21tYW5kJ3MsIHBvc3NpYmx5IG90aGVyIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAjIGRlc2NyaXB0aW9ucwotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICBzaG9ydF9oZWxwID0gc2VsZi5jb21tYW5kc1swXS5nZXQoJ25vLWhlbHAnKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzaG9ydF9oZWxwOgotICAgICAgICAgICAgICAgICAgICBjb21tYW5kX3R5cGUgPSBzZWxmLmNvbW1hbmRzWzBdLmdldCgnY29tbWFuZC10eXBlJykKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gc2VsZi5jb21tYW5kc1swXS5nZXQoJ2FjdGlvbicpCi0gICAgICAgICAgICAgICAgICAgIGlmICgoY29tbWFuZF90eXBlIGFuZCBjb21tYW5kX3R5cGUgPT0gJ2NvbmZpZy1zdWJtb2RlJykgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aW9uIGFuZCBhY3Rpb24gPT0gJ3B1c2gtbW9kZS1zdGFjaycpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVfbmFtZSA9IHNlbGYuY29tbWFuZHNbMF0uZ2V0KCduYW1lJykKLSAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2hlbHAgPSAnUmVtb3ZlICVzIGNvbmZpZ3VyYXRpb24nICUgbW9kZV9uYW1lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNob3J0X2hlbHAgPSBzZWxmLmNvbW1hbmRzWzBdLmdldCgnc2hvcnQtaGVscCcpCi0gICAgICAgICAgICBmb3IgbGFzdF9kb2MgaW4gc2VsZi5kb2NzX3N0YWNrOgotICAgICAgICAgICAgICAgIGlmIGNvbW1hbmRbJ3NlbGYnXSBpbiBsYXN0X2RvYzoKLSAgICAgICAgICAgICAgICAgICAgKGtleXdvcmQsIGxhc3RfZG9jKSA9IGxhc3RfZG9jW2NvbW1hbmRbJ3NlbGYnXV0KLSAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGRvYy5nZXRfdGV4dChzZWxmLCBsYXN0X2RvYykKLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShrZXl3b3JkKSA9PSB0dXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQgPSBrZXl3b3JkWzBdCi0gICAgICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoIlx0JXM6ICVzICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbWFuZFsnc2VsZiddLCBrZXl3b3JkLCBsYXN0X2RvYykpCi0gICAgICAgICAgICAgICAgICAgIGlmIHRleHQgIT0gJycgYW5kIGxhc3RfZG9jIG5vdCBpbiBzaG93bl9pdGVtczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNob3duX2l0ZW1zLmFwcGVuZChsYXN0X2RvYykKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCdcbktleXdvcmQgJXMgRGVzY3JpcHRpb246JyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZC5jYXBpdGFsaXplKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PWhhbmRsZV9wbGFpbnRleHRfd2lraSh0ZXh0KQotICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQodGV4dCkKLSAgICAgICAgICAgICAgICAgICAgICAgICNkdW1iX2Zvcm1hdHRlcihoZWxwX2xpbmVzLCB0ZXh0LCA0KQotCi0gICAgICAgICAgICBpZiBsZW4oc2VsZi5kb2NzKSA+IDA6Ci0gICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJ1xuKk5leHQgS2V5d29yZCBEZXNjcmlwdGlvbnM6KicpCi0gICAgICAgICAgICAgICAgZm9yIChkb2NfbmFtZSwgZG9jX3RhZ3MpIGluIHNlbGYuZG9jcy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICBpZiBsZW4oZG9jX3RhZ3MpID09IDEgYW5kIGRvY190YWdzWzBdID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgiXHQlczogJXMgbWlzc2luZyBkb2MgYXR0cmlidXRlIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmRbJ3NlbGYnXSwgZG9jX25hbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJyogICVzOicgJSBkb2NfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBsZW4oZG9jX3RhZ3MpID09IDEgYW5kIGRvY190YWdzWzBdLnNwbGl0KCd8JylbMF0gPT0gJ3R5cGVzJyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgIG5vdCBkb2NfbmFtZS5zdGFydHN3aXRoKGRvY190YWdzWzBdLnNwbGl0KCd8JylbMV0pOgotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lID0gZG9jX3RhZ3NbMF0uc3BsaXQoJ3wnKVsxXS5jYXBpdGFsaXplKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCcgICVzOiB0eXBlICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2NfbmFtZSwgdHlwZV9uYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCcqICAlczonICUgZG9jX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZvciBkb2NfdGFnIGluIGRvY190YWdzOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoIlx0JXM6ICVzICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmRbJ3NlbGYnXSwgZG9jX25hbWUsIGRvY190YWcpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGRvYy5nZXRfdGV4dChzZWxmLCBkb2NfdGFnKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGV4dCA9PSAnJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnJykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRleHQgIT0gJycgYW5kIGRvY190YWcgbm90IGluIHNob3duX2l0ZW1zOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihkb2NfdGFncykgPiAxIGFuZCBkb2NfdGFnLnNwbGl0KCd8JylbMF0gPT0gJ3R5cGVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lID0gZG9jX3RhZy5zcGxpdCgnfCcpWzFdLmNhcGl0YWxpemUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnXHRUeXBlOiAlcycgJSB0eXBlX25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd25faXRlbXMuYXBwZW5kKGRvY190YWcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1oYW5kbGVfcGxhaW50ZXh0X3dpa2kodGV4dCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCh0ZXh0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkdW1iX2Zvcm1hdHRlcihoZWxwX2xpbmVzLCB0ZXh0LCA0KQotICAgICAgICAgICAgZG9jX2V4YW1wbGUgPSBjb21tYW5kLmdldCgnZG9jLWV4YW1wbGUnKQotICAgICAgICAgICAgaWYgZG9jX2V4YW1wbGU6Ci0gICAgICAgICAgICAgICAgdGV4dCA9IGRvYy5nZXRfdGV4dChzZWxmLCBkb2NfZXhhbXBsZSkKLSAgICAgICAgICAgICAgICBpZiB0ZXh0ICE9ICcnOgotICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnXG4qQ29tbWFuZCBFeGFtcGxlczoqJykKLSAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJ3tub2Zvcm1hdH0nKQotICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCh0ZXh0KQotICAgICAgICAgICAgICAgICAgICAjZHVtYl9mb3JtYXR0ZXIoaGVscF9saW5lcywgdGV4dCwgMCkKLSAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJ3tub2Zvcm1hdH0nKQotICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGhlbHBfbGluZXMpCi0KLQotICAgIGRlZiBoYW5kbGVfY29tbWFuZF9yZXN1bHRzKHNlbGYpOgotICAgICAgICBpZiBsZW4oc2VsZi5jb21tYW5kcykgPT0gMDoKLSAgICAgICAgICAgIGlmIHNlbGYud29yZHM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdObyBhcHBsaWNhYmxlIGNvbW1hbmQ6ICVzJyAlICcgJy5qb2luKHNlbGYud29yZHMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAnXG5ObyBjb21tYW5kIGZvciAgJyArIHNlbGYuaGVhZGVyCi0KLSAgICAgICAgaGVscF9saW5lcyA9IFtdCi0gICAgICAgICMgRGVhbCB3aXRoIHRvbyBtdWNoIG91dHB1dAotICAgICAgICBpZiBsZW4oc2VsZi5jb21tYW5kcykgPiAxMDogIyAxMCBpcyBhIG1hZ2ljIG51bWJlciwKLSAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCdIZWxwOiBUb28gbWFueSBjb21tYW5kcyBtYXRjaCAoJWQpLCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIGNob29zZSBtb3JlIGRldGFpbCBmcm9tIGl0ZW06ICcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHNlbGYuY29tbWFuZHMpKQotICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoc2Ruc2guY2hvaWNlc190ZXh0X2J1aWxkZXIoc2VsZi5kb2NzKSkKLSAgICAgICAgICAgIHJldHVybiAnXG4nLmpvaW4oaGVscF9saW5lcykKLQotCi0gICAgICAgIGlmIHNlbGYuaGVhZGVyOgotICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoc2VsZi5oZWFkZXIpCi0gICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnJykKLQotICAgICAgICAodGVybV9jb2xzLCB0ZXJtX3Jvd3MpID0gc2Ruc2gucHAuZ2V0X3Rlcm1pbmFsX3NpemUoKQotICAgICAgICBsYXN0X2Rlc2NfbmFtZSA9IE5vbmUKLSAgICAgICAgbGFzdF9zeW50YXhfbmFtZSA9IE5vbmUKLQotICAgICAgICAjIGFsbC1oZWxwIGluIGludGVuZGVkIHRvIHByb3ZpZGUgYW4gb3ZlcmFsbCBzaG9ydC1oZWxwIGZvcgotICAgICAgICAjIGEgY29sbGVjdGlvbiBvZiBzaW1pbGFybHkgc3ludGF4J2VkIGNvbW1hbmRzLiAgCi0gICAgICAgIGFsbF9oZWxwID0ge30KLSAgICAgICAgZm9yIGNvbW1hbmQgaW4gc2VsZi5jb21tYW5kczoKLSAgICAgICAgICAgIGlmIGNvbW1hbmQuZ2V0KCdhbGwtaGVscCcpOgotICAgICAgICAgICAgICAgIGFsbF9oZWxwW2NvbW1hbmQuZ2V0KCduYW1lJyldID0gY29tbWFuZC5nZXQoJ2FsbC1oZWxwJykKLSAgICAgICAgIyB3aGVuIGxlbihhbGxfaGVscCkgPT0gMSwgb25seSBPTkUgY29tbWFuZCBjb2xsZWN0aW9uIGdyb3VwCi0gICAgICAgICMgaXMgZ2V0dGluZyBkZXNjcmliZWQKLSAgICAgICAgaWYgbGVuKGFsbF9oZWxwKSA9PSAxOgotICAgICAgICAgICAgbmFtZSA9IGFsbF9oZWxwLmtleXMoKVswXQotICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJyVzIENvbW1hbmQ6ICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZS5jYXBpdGFsaXplKCksIGFsbF9oZWxwW25hbWVdLmNhcGl0YWxpemUoKSkpCi0gICAgICAgICAgICBhbGxfaGVscCA9IFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFsbF9oZWxwID0gRmFsc2UKLQotICAgICAgICAjIEtlZXAgdHJhY2sgb2YgcGFyYWdyYXBocyBkaXNwbGF5ZWQgdG8gcHJldmVudCByZXBlYXRlZAotICAgICAgICAjIGRpc3BsYXkgb2YgdGhlIHNhbWUgZG9jIHRhZ3MuCi0gICAgICAgIHNob3duX2l0ZW1zID0gW10gCi0KLSAgICAgICAgZm9yIGNvbW1hbmQgaW4gc2VsZi5jb21tYW5kczoKLQotICAgICAgICAgICAgZG9jX3RhZyA9IGNvbW1hbmQuZ2V0KCdkb2MnKQotICAgICAgICAgICAgbmFtZSA9IF9nZXRfY29tbWFuZF90aXRsZShjb21tYW5kKQotICAgICAgICAgICAgc2hvcnRfaGVscCA9IGNvbW1hbmQuZ2V0KCdzaG9ydC1oZWxwJykKLSAgICAgICAgICAgIGlmIG5vdCBhbGxfaGVscCBhbmQgc2hvcnRfaGVscDoKLSAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnXG4lcyBDb21tYW5kOiAlc1xuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUuY2FwaXRhbGl6ZSgpLCBzaG9ydF9oZWxwLmNhcGl0YWxpemUoKSkpCi0gICAgICAgICAgICAgICAgbGFzdF9zeW50YXhfbmFtZSA9IE5vbmUgIyBkaXNwbGF5IHN5bnRheCBoZWFkZXIKLQotICAgICAgICAgICAgaGVscF9zdHJpbmdzID0gW10KLSAgICAgICAgICAgIGNvbW1hbmRfaGVscF9zdHJpbmcgPSBfZ2V0X2NvbW1hbmRfc3ludGF4X2hlbHBfc3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCBzZWxmLnByZWZpeCkKLQotICAgICAgICAgICAgaWYgdHlwZShjb21tYW5kX2hlbHBfc3RyaW5nKSA9PSBsaXN0OgotICAgICAgICAgICAgICAgIGhlbHBfc3RyaW5ncyArPSBjb21tYW5kX2hlbHBfc3RyaW5nCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGhlbHBfc3RyaW5ncy5hcHBlbmQoY29tbWFuZF9oZWxwX3N0cmluZykKLSAgICAgICAgCi0gICAgICAgICAgICBmb3IgaCBpbiBzb3J0ZWQoaGVscF9zdHJpbmdzKToKLSAgICAgICAgICAgICAgICBpZiBsYXN0X3N5bnRheF9uYW1lICE9IG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLmNvbW1hbmRzKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnIENvbW1hbmQgU3ludGF4OicpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnJXMgQ29tbWFuZCBTeW50YXg6JyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmNhcGl0YWxpemUoKSkKLSAgICAgICAgICAgICAgICAgICAgbGFzdF9zeW50YXhfbmFtZSA9IG5hbWUKLQotICAgICAgICAgICAgICAgICMgdXNlIDc1JSBvZiB0aGUgd2lkdGgsIHNpbmNlIHJlZm9ybWF0X2xpbmUgaXNuJ3QgcGVyZmVjdC4KLSAgICAgICAgICAgICAgICBzbWFsbGVyX3Rlcm1fY29scyA9IChzZWxmLnRlcm1fY29scyAqIDMpIC8gNAotICAgICAgICAgICAgICAgIGlmIGxlbihoKSA+IHNtYWxsZXJfdGVybV9jb2xzOgotICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzICs9IHJlZm9ybWF0X2xpbmUoaCwgc21hbGxlcl90ZXJtX2NvbHMsIDIsIDApCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJyAgJXMnICUgaCkKLSAgICAgICAgICAgICAgICBsYXN0X2Rlc2NfbmFtZSA9IE5vbmUgIyBwcmludCBkZXNjcmlwdGlvbiBoZWFkZXIKLQotICAgICAgICAgICAgaWYgZG9jX3RhZzoKLSAgICAgICAgICAgICAgICB0ZXh0ID0gZG9jLmdldF90ZXh0KHNlbGYsIGRvY190YWcpCi0gICAgICAgICAgICAgICAgaWYgdGV4dCAhPSAnJyBhbmQgZG9jX3RhZyBub3QgaW4gc2hvd25faXRlbXM6Ci0gICAgICAgICAgICAgICAgICAgIHNob3duX2l0ZW1zLmFwcGVuZChkb2NfdGFnKQotICAgICAgICAgICAgICAgICAgICBpZiBsYXN0X2Rlc2NfbmFtZSAhPSBuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5mb3JtYXQgPT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnXG4lcyBDb21tYW5kIERlc2NyaXB0aW9uOicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmNhcGl0YWxpemUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5mb3JtYXQgPT0gJ2NsaWRvYyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJ1xuICBEZXNjcmlwdGlvbjonKQotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9kZXNjX25hbWUgPSBuYW1lCi0gICAgICAgICAgICAgICAgICAgIGR1bWJfZm9ybWF0dGVyKGhlbHBfbGluZXMsIHRleHQsIDQpCi0gICAgICAgICAgICAgICAgICAgIGxhc3Rfc3ludGF4X25hbWUgPSBOb25lICMgcHJpbnQgJ1N5bnRheCcgaGVhZGVyCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgbGVuKHNlbGYuY29tbWFuZHMpID4gMToKLSAgICAgICAgICAgICAgICBmb3IgbGFzdF9kb2MgaW4gc2VsZi5kb2NzX3N0YWNrOgotICAgICAgICAgICAgICAgICAgICBpZiBjb21tYW5kWydzZWxmJ10gaW4gbGFzdF9kb2M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAoa2V5d29yZCwgY21kX2RvYykgPSBsYXN0X2RvY1tjb21tYW5kWydzZWxmJ11dCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gZG9jLmdldF90ZXh0KHNlbGYsIGNtZF9kb2MpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXh0ICE9ICcnIGFuZCBjbWRfZG9jIG5vdCBpbiBzaG93bl9pdGVtczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93bl9pdGVtcy5hcHBlbmQoY21kX2RvYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKGtleXdvcmQpID09IHR1cGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkID0ga2V5d29yZFswXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCdcbktleXdvcmQgJXM6JyAlIGtleXdvcmQuY2FwaXRhbGl6ZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bWJfZm9ybWF0dGVyKGhlbHBfbGluZXMsIHRleHQsIDQpCi0KLSAgICAgICAgICAgIGRvY19leGFtcGxlID0gY29tbWFuZC5nZXQoJ2RvYy1leGFtcGxlJykKLSAgICAgICAgICAgIGlmIGxlbihzZWxmLmNvbW1hbmRzKSA+IDEgYW5kIGRvY19leGFtcGxlOgotICAgICAgICAgICAgICAgIHRleHQgPSBkb2MuZ2V0X3RleHQoc2VsZiwgZG9jX2V4YW1wbGUpCi0gICAgICAgICAgICAgICAgaWYgdGV4dCAhPSAnJyBhbmQgZG9jX2V4YW1wbGUgbm90IGluIHNob3duX2l0ZW1zOgotICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnRXhhbXBsZXM6JykKLSAgICAgICAgICAgICAgICAgICAgc2hvd25faXRlbXMuYXBwZW5kKGRvY19leGFtcGxlKQotICAgICAgICAgICAgICAgICAgICBkdW1iX2Zvcm1hdHRlcihoZWxwX2xpbmVzLCB0ZXh0LCA0KQotCi0gICAgICAgIGlmIGxlbihzZWxmLmNvbW1hbmRzKSA9PSAxOgotICAgICAgICAgICAgc2hvcnRfaGVscCA9IE5vbmUKLSAgICAgICAgICAgIGlmIHNlbGYuaXNfbm9fY29tbWFuZDoKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBDb2JibGUgdG9nZXRoZXIgYSBoZWxwIHN0cmluZyBmb3IgYSBubyBjb21tYW5kLCBidWlsZAotICAgICAgICAgICAgICAgICMgYSBkZWZhdWx0IHZhbHVlIGZvciBzdWJjb21tYW5kJ3MsIHBvc3NpYmx5IG90aGVyIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAjIGRlc2NyaXB0aW9ucwotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICBzaG9ydF9oZWxwID0gc2VsZi5jb21tYW5kc1swXS5nZXQoJ25vLWhlbHAnKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzaG9ydF9oZWxwOgotICAgICAgICAgICAgICAgICAgICBjb21tYW5kX3R5cGUgPSBzZWxmLmNvbW1hbmRzWzBdLmdldCgnY29tbWFuZC10eXBlJykKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gc2VsZi5jb21tYW5kc1swXS5nZXQoJ2FjdGlvbicpCi0gICAgICAgICAgICAgICAgICAgIGlmICgoY29tbWFuZF90eXBlIGFuZCBjb21tYW5kX3R5cGUgPT0gJ2NvbmZpZy1zdWJtb2RlJykgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aW9uIGFuZCBhY3Rpb24gPT0gJ3B1c2gtbW9kZS1zdGFjaycpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVfbmFtZSA9IHNlbGYuY29tbWFuZHNbMF0uZ2V0KCduYW1lJykKLSAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2hlbHAgPSAnUmVtb3ZlICVzIGNvbmZpZ3VyYXRpb24nICUgbW9kZV9uYW1lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNob3J0X2hlbHAgPSBzZWxmLmNvbW1hbmRzWzBdLmdldCgnc2hvcnQtaGVscCcpCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciBsYXN0X2RvYyBpbiBzZWxmLmRvY3Nfc3RhY2s6Ci0gICAgICAgICAgICAgICAgaWYgY29tbWFuZFsnc2VsZiddIGluIGxhc3RfZG9jOgotICAgICAgICAgICAgICAgICAgICAoa2V5d29yZCwgbGFzdF9kb2MpID0gbGFzdF9kb2NbY29tbWFuZFsnc2VsZiddXQotICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gZG9jLmdldF90ZXh0KHNlbGYsIGxhc3RfZG9jKQotICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKGtleXdvcmQpID09IHR1cGxlOgotICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCA9IGtleXdvcmRbMF0KLSAgICAgICAgICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgiXHQlczogJXMgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tYW5kWydzZWxmJ10sIGtleXdvcmQsIGxhc3RfZG9jKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgdGV4dCAhPSAnJyBhbmQgbGFzdF9kb2Mgbm90IGluIHNob3duX2l0ZW1zOgotICAgICAgICAgICAgICAgICAgICAgICAgc2hvd25faXRlbXMuYXBwZW5kKGxhc3RfZG9jKQotICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJ1xuS2V5d29yZCAlcyBEZXNjcmlwdGlvbjonICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLmNhcGl0YWxpemUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGR1bWJfZm9ybWF0dGVyKGhlbHBfbGluZXMsIHRleHQsIDQpCi0KLSAgICAgICAgICAgIGlmIGxlbihzZWxmLmRvY3MpID4gMDoKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmZvcm1hdCA9PSBOb25lOgotICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSAnICAnCi0gICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCdcbk5leHQgS2V5d29yZCBEZXNjcmlwdGlvbnM7JykKLSAgICAgICAgICAgICAgICBlbGlmIHNlbGYuZm9ybWF0ID09ICdjbGlkb2MnOgotICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSAnICAgICcKLQotICAgICAgICAgICAgICAgIGZvciAoZG9jX25hbWUsIGRvY190YWdzKSBpbiBzb3J0ZWQoc2VsZi5kb2NzLml0ZW1zKCkpOgotICAgICAgICAgICAgICAgICAgICBpZiBsZW4oZG9jX3RhZ3MpID09IDEgYW5kIGRvY190YWdzWzBdID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgiXHQlczogJXMgbWlzc2luZyBkb2MgYXR0cmlidXRlIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmRbJ3NlbGYnXSwgZG9jX25hbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJyVzJXM6JyAlIChpbmRlbnQsIGRvY19uYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBsZW4oZG9jX3RhZ3MpID09IDEgYW5kIGRvY190YWdzWzBdLnNwbGl0KCd8JylbMF0gPT0gJ3R5cGVzJyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgIG5vdCBkb2NfbmFtZS5zdGFydHN3aXRoKGRvY190YWdzWzBdLnNwbGl0KCd8JylbMV0pOgotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lID0gZG9jX3RhZ3NbMF0uc3BsaXQoJ3wnKVsxXS5jYXBpdGFsaXplKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCclcyVzOiB0eXBlICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmRlbnQsIGRvY19uYW1lLCB0eXBlX25hbWUpKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJyVzJXM6JyAlIChpbmRlbnQsIGRvY19uYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIGRvY190YWcgaW4gZG9jX3RhZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgiXHQlczogJXMgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbWFuZFsnc2VsZiddLCBkb2NfbmFtZSwgZG9jX3RhZykpCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gZG9jLmdldF90ZXh0KHNlbGYsIGRvY190YWcpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXh0ID09ICcnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCcnKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGV4dCAhPSAnJyBhbmQgZG9jX3RhZyBub3QgaW4gc2hvd25faXRlbXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGRvY190YWdzKSA+IDEgYW5kIGRvY190YWcuc3BsaXQoJ3wnKVswXSA9PSAndHlwZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUgPSBkb2NfdGFnLnNwbGl0KCd8JylbMV0uY2FwaXRhbGl6ZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCdcdFR5cGU6ICVzJyAlIHR5cGVfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93bl9pdGVtcy5hcHBlbmQoZG9jX3RhZykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1iX2Zvcm1hdHRlcihoZWxwX2xpbmVzLCB0ZXh0LCA4KQotCi0gICAgICAgICAgICBkb2NfZXhhbXBsZSA9IGNvbW1hbmQuZ2V0KCdkb2MtZXhhbXBsZScpCi0gICAgICAgICAgICBpZiBkb2NfZXhhbXBsZToKLSAgICAgICAgICAgICAgICB0ZXh0ID0gZG9jLmdldF90ZXh0KHNlbGYsIGRvY19leGFtcGxlKQotICAgICAgICAgICAgICAgIGlmIHRleHQgIT0gJyc6Ci0gICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCdFeGFtcGxlczonKQotICAgICAgICAgICAgICAgICAgICBkdW1iX2Zvcm1hdHRlcihoZWxwX2xpbmVzLCB0ZXh0LCA0KQotICAgICAgICAKLSAgICAgICAgaWYgbGVuKHNlbGYuY29tbWFuZHMpID4gMSBhbmQgbGVuKHNlbGYuZG9jcykgPiAwOgotICAgICAgICAgICAgaWYgc2VsZi5mb3JtYXQgPT0gTm9uZToKLSAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnXG5OZXh0IEtleXdvcmQgRGVzY3JpcHRpb25zOycpCi0gICAgICAgICAgICBmb3IgKGRvY19uYW1lLCBkb2NfdGFncykgaW4gc29ydGVkKHNlbGYuZG9jcy5pdGVtcygpKToKLSAgICAgICAgICAgICAgICBpZiBsZW4oZG9jX3RhZ3MpID09IDEgYW5kIGRvY190YWdzWzBdID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoIlx0JXM6IG1pc3NpbmcgZG9jIGF0dHJpYnV0ZSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZFsnc2VsZiddKQotICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnICAlczonICUgZG9jX25hbWUpCi0gICAgICAgICAgICAgICAgZWxpZiBsZW4oZG9jX3RhZ3MpID09IDEgYW5kIGRvY190YWdzWzBdLnNwbGl0KCd8JylbMF0gPT0gJ3R5cGVzJyBhbmQgXAotICAgICAgICAgICAgICAgICAgbm90IGRvY19uYW1lLnN0YXJ0c3dpdGgoZG9jX3RhZ3NbMF0uc3BsaXQoJ3wnKVsxXSk6Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZSA9IGRvY190YWdzWzBdLnNwbGl0KCd8JylbMV0uY2FwaXRhbGl6ZSgpCi0gICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCcgICVzOiB0eXBlICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY19uYW1lLCB0eXBlX25hbWUpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGhlbHBfbGluZXMuYXBwZW5kKCcgICVzOicgJSBkb2NfbmFtZSkKLSAgICAgICAgICAgICAgICBmb3IgZG9jX3RhZyBpbiBkb2NfdGFnczoKLSAgICAgICAgICAgICAgICAgICAgaWYgZG9jX3RhZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihkb2NfdGFncykgPiAxIGFuZCBkb2NfdGFnLnNwbGl0KCd8JylbMF0gPT0gJ3R5cGVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUgPSBkb2NfdGFnLnNwbGl0KCd8JylbMV0uY2FwaXRhbGl6ZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJ1x0VHlwZTogJXMnICUgdHlwZV9uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoIlx0JXM6ICVzICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmRbJ3NlbGYnXSwgZG9jX25hbWUsIGRvY190YWcpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGRvYy5nZXRfdGV4dChzZWxmLCBkb2NfdGFnKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGV4dCAhPSAnJyBhbmQgZG9jX3RhZyBub3QgaW4gc2hvd25faXRlbXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd25faXRlbXMuYXBwZW5kKGRvY190YWcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtYl9mb3JtYXR0ZXIoaGVscF9saW5lcywgdGV4dCwgOCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscF9saW5lcy5hcHBlbmQoJycpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2xpbmVzLmFwcGVuZCgnJykKLQotICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGhlbHBfbGluZXMpCi0KLQotZGVmIGdldF9jb21tYW5kX2RvY190YWcod29yZCk6Ci0gICAgaGFuZGxlciA9IENvbW1hbmRIYW5kbGVyKCkKLSAgICBtYXRjaGluZ19jb21tYW5kcyA9IGhhbmRsZXIuZ2V0X21hdGNoaW5nX2NvbW1hbmRzKHdvcmQsIEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9yZWdpc3RyeSkKLSAgICBpZiBsZW4obWF0Y2hpbmdfY29tbWFuZHMpID09IDE6Ci0gICAgICAgIHJldHVybiAobWF0Y2hpbmdfY29tbWFuZHNbMF1bMF0pLmdldCgnZG9jJykKLSAgICBpZiBsZW4obWF0Y2hpbmdfY29tbWFuZHMpID4gMToKLSAgICAgICAgIyBlcnJvcj8gcmV0dXIgdmFsdWUgZm9yIG11bHRpcGxlIGNvbW1hbmRzPwotICAgICAgICBwYXNzCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgZ2V0X2NvbW1hbmRfZG9jdW1lbnRhdGlvbih3b3JkcywgaGVhZGVyPU5vbmUpOgotICAgIGhhbmRsZXIgPSBDb21tYW5kRG9jdW1lbnRvcihoZWFkZXIpCi0gICAgIyBIYWNrIHRvIG1ha2UgImhlbHAgbm8iIHdvcmsKLSAgICBpZiBsZW4od29yZHMpID09IDEgYW5kIHdvcmRzWzBdID09ICdubyc6Ci0gICAgICAgIHdvcmRzID0gIHdvcmRzICsgWycnXQotICAgIHJlc3VsdCA9IGhhbmRsZXIuaGFuZGxlX2NvbW1hbmQod29yZHMpCi0gICAgcmV0dXJuIHJlc3VsdAotCi0KLWRlZiBjb21tYW5kX3N1Ym1vZGVfZGljdGlvbmFyeShtb2RlcyA9IE5vbmUpOgotICAgIGlmIG1vZGVzID09IE5vbmU6Ci0gICAgICAgIG1vZGVzID0gc2Ruc2guY29tbWFuZF9kaWN0LmtleXMoKSArIHNkbnNoLmNvbW1hbmRfbmVzdGVkX2RpY3Qua2V5cygpCi0gICAgIwotICAgICMgdHJ5IHRvIGZpbmQgYWxsIHN1Ym1vZGUgY29tbWFuZHMsIGJ1aWxkIGEgZGljdGlvbmFyeQotICAgIHJlYWNoZWRfbW9kZXMgPSBbXQotICAgIG1vZGVfbm9kZXMgPSB7fQotICAgIG1vZGVfZW50cmllcyA9IFtdCi0gICAgZm9yIGMgaW4gY29tbWFuZF9yZWdpc3RyeToKLSAgICAgICAgY190eXBlID0gYy5nZXQoJ2NvbW1hbmQtdHlwZScpCi0gICAgICAgIGlmIGNfdHlwZSBhbmQgY190eXBlID09ICdjb25maWctc3VibW9kZSc6Ci0gICAgICAgICAgICBmcm9tX21vZGUgPSBjLmdldCgnbW9kZScpCi0gICAgICAgICAgICB0b19tb2RlID0gYy5nZXQoJ3N1Ym1vZGUtbmFtZScpCi0gICAgICAgICAgICByZWFjaGVkX21vZGVzLmFwcGVuZCh0b19tb2RlKQotICAgICAgICAgICAgaWYgbm90IGZyb21fbW9kZSBpbiBtb2RlX25vZGVzOgotICAgICAgICAgICAgICAgIG1vZGVfbm9kZXNbZnJvbV9tb2RlXSA9IFtdCi0gICAgICAgICAgICBtb2RlX25vZGVzW2Zyb21fbW9kZV0uYXBwZW5kKCh0b19tb2RlLCBfZ2V0X2NvbW1hbmRfdGl0bGUoYykpKQotICAgICAgICAgICAgbW9kZV9lbnRyaWVzLmFwcGVuZCh7J21vZGUnICAgIDogZnJvbV9tb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1Ym1vZGUnIDogdG9fbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21tYW5kJyA6IF9nZXRfY29tbWFuZF90aXRsZShjKX0pCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgIHByaW50ICcsICcuam9pbihtb2RlX25vZGVzKQotICAgICAgICBwcmludCBtb2RlX25vZGVzCi0gICAgICAgIGlmIFt4IGZvciB4IGluIG1vZGVzIGlmIG5vdCB4IGluIHJlYWNoZWRfbW9kZXNdOgotICAgICAgICAgICAgcHJpbnQgJ01pc3NpbmcgJywgW3ggZm9yIHggaW4gbW9kZXMgaWYgbm90IHggaW4gcmVhY2hlZF9tb2Rlc10KLQotICAgIHJldHVybiBtb2RlX2VudHJpZXMKLQotCi1kZWYgZ2V0X2NsaWRvYyh3b3Jkcyk6Ci0gICAgaWYgbGVuKHdvcmRzKToKLSAgICAgICAgaGFuZGxlciA9IENvbW1hbmREb2N1bWVudG9yKGhlYWRlciA9IE5vbmUsIGZvcm1hdCA9ICdjbGlkb2MnKQotICAgICAgICBmb3Igd29yZCBpbiB3b3JkczoKLSAgICAgICAgICAgIGZvciBjIGluIGNvbW1hbmRfcmVnaXN0cnk6Ci0gICAgICAgICAgICAgICAgaWYgd29yZCA9PSBjWydzZWxmJ106Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIuYWRkX2NvbW1hbmQoYykKLSAgICAgICAgcmVzdWx0ID0gaGFuZGxlci5oYW5kbGVfY29tbWFuZF9yZXN1bHRzKCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgIGVsc2U6Ci0gICAgICAgIGNsaWRvYyA9IFtdCi0gICAgICAgIGRlZiBjb21tYW5kc19mb3JfbW9kZShtb2RlKToKLSAgICAgICAgICAgIGNsaWRvYy5hcHBlbmQoJ1xuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1PREUgJyArIG1vZGUgKyAnXG5cbicpCi0gICAgICAgICAgICBmb3IgYyBpbiBjb21tYW5kX3JlZ2lzdHJ5OgotICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gY1snbW9kZSddOgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gQ29tbWFuZERvY3VtZW50b3IoaGVhZGVyID0gJ1xuXG5cbiAtLS0tIE1PREUgJyArIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAnY2xpZG9jJykKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5hZGRfY29tbWFuZChjKQotICAgICAgICAgICAgICAgICAgICBjbGlkb2MuYXBwZW5kKGhhbmRsZXIuaGFuZGxlX2NvbW1hbmRfcmVzdWx0cygpKQotCi0gICAgICAgIG1vZGUgPSAnbG9naW4nCi0gICAgICAgIGNvbW1hbmRzX2Zvcl9tb2RlKG1vZGUpCi0KLSAgICAgICAgIyBzZWxlY3QgY29tbWFuZHMgYnkgc3VibW9kZS4KLSAgICAgICAgbW9kZV9lbnRyaWVzID0gY29tbWFuZF9zdWJtb2RlX2RpY3Rpb25hcnkoKQotICAgICAgICBmb3IgbW9kZV9lbnRyeSBpbiBtb2RlX2VudHJpZXM6Ci0gICAgICAgICAgICBtb2RlID0gbW9kZV9lbnRyeVsnc3VibW9kZSddCi0gICAgICAgICAgICBpZiBtb2RlWy0xXSA9PSAnKic6Ci0gICAgICAgICAgICAgICAgbW9kZSA9IG1vZGVbOi0xXQotICAgICAgICAgICAgaWYgbW9kZSA9PSAnY29uZmlnLSc6Ci0gICAgICAgICAgICAgICAgbW9kZSA9ICdjb25maWcnCi0KLSAgICAgICAgICAgIGNvbW1hbmRzX2Zvcl9tb2RlKG1vZGUpCi0KLSAgICAgICAgcmV0dXJuICcnLmpvaW4oY2xpZG9jKQotCi1kZWYgZ2V0X2NsaXdpa2kod29yZHMpOgotICAgIGRlZiB3aWtpX3NwZWNpYWxfY2hhcmFjdGVyX2hhbmRsaW5nKGlucHV0c3RyKToKLSAgICAgICAgaW5wdXRzdHI9aW5wdXRzdHIucmVwbGFjZSgneycsJ1x7JykKLSAgICAgICAgaW5wdXRzdHI9aW5wdXRzdHIucmVwbGFjZSgnfScsJ1x9JykKLSAgICAgICAgaW5wdXRzdHI9aW5wdXRzdHIucmVwbGFjZSgnWycsJ1xbJykKLSAgICAgICAgaW5wdXRzdHI9aW5wdXRzdHIucmVwbGFjZSgnXScsJ1xdJykKLSAgICAgICAgcmV0dXJuIGlucHV0c3RyCi0gICAgY2xpd2lraWZpbGU9b3BlbignY2xpd2lraS50eHQnLCAndycpCi0gICAgaWYgbm90IGNsaXdpa2lmaWxlOgotICAgICAgICBwcmludCAnRmlsZSBjcmVhdGlvbiBmYWlsZWQgXG4nCi0gICAgICAgIHJldHVybgotICAgIGNsaXdpa2lmaWxlLndyaXRlKCd7dG9jOnByaW50YWJsZT10cnVlfHN0eWxlPWRpc2N8bWF4TGV2ZWw9M3xtaW5MZXZlbD0xfGNsYXNzPWJpZ3Bpbmt8ZXhjbHVkZT1bMS8vMl18dHlwZT1saXN0fGluY2x1ZGU9Lip9JykKLSAgICAjd3JpdGUgdGhlIGludHJvZHVjdGlvbiBwYXJ0Ci0gICAgaW50cm9kdWN0aW9uZmlsZT1vcGVuKCdkb2N1bWVudGF0aW9uL2VuX1VTL2ludHJvZHVjdGlvbicpCi0gICAgc3RyMT1pbnRyb2R1Y3Rpb25maWxlLnJlYWQoKQotICAgIGNsaXdpa2lmaWxlLndyaXRlKCdcbicpCi0gICAgY2xpd2lraWZpbGUud3JpdGUoc3RyMSkKLSAgICBzdHIxPSdcbmgxLiBDTEkgQ29tbWFuZHMnCi0gICAgY2xpd2lraWZpbGUud3JpdGUoc3RyMSkKLSAgICAjZ2VuZXJhdGUgYWxsIGNvbW1hbmRzIGluIGxvZ2luL2VuYWJsZSBtb2RlIGV4Y2VwdCBzaG93IGNtZHMKLSAgICBtb2RlPVsnbG9naW4nLCdlbmFibGUnXQotICAgIGNhdGVnb3J5PVsnc2hvdyddCi0gICAgZm9yIGMgaW4gY29tbWFuZF9yZWdpc3RyeToKLSAgICAgICAgbmFtZSA9IGNbJ25hbWUnXQotICAgICAgICBpZiBuYW1lIG5vdCBpbiBjYXRlZ29yeSBhbmQgY1snbW9kZSddIGluIG1vZGU6Ci0gICAgICAgICAgICBjYXRlZ29yeS5hcHBlbmQobmFtZSkKLSAgICAgICAgICAgIGhhbmRsZXIgPSBDb21tYW5kRG9jdW1lbnRvcihoZWFkZXIgPSAnbG9naW4nKQotICAgICAgICAgICAgZm9yIGNjIGluIGNvbW1hbmRfcmVnaXN0cnk6Ci0gICAgICAgICAgICAgICAgaWYgbmFtZT09Y2NbJ25hbWUnXSBhbmQgY2NbJ21vZGUnXSBpbiBtb2RlOgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLmFkZF9jb21tYW5kKGNjKQotICAgICAgICAgICAgICAgICAgICBzdHIxID0gaGFuZGxlci5oYW5kbGVfY29tbWFuZF9yZXN1bHRzX3dpa2koKQotICAgICAgICAgICAgICAgICAgICBzdHIxPSBzdHIxKyAnXG4nCi0gICAgICAgICAgICAgICAgICAgIGNsaXdpa2lmaWxlLndyaXRlKHN0cjEpCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBDb21tYW5kRG9jdW1lbnRvcihoZWFkZXIgPSBOb25lKQotICAgICNnZW5lcmF0ZSBhbGwgY29uZmlndXJhdGlvbiBjb21tYW5kczogZXhjbHVkZSBpbnRlcm5hbCBjb21tYW5kcwotICAgIG1vZGU9Wydjb25maWcnLCAnY29uZmlnKiddCi0gICAgY2F0ZWdvcnk9WydpbnRlcm5hbCddICNwcnVuZSBvdXQgYWxsIGludGVybmFsIGNvbW1hbmRzCi0gICAgc3RyMT0nXG5oMi4gQ29uZmlndXJhdGlvbiBDb21tYW5kcycKLSAgICBjbGl3aWtpZmlsZS53cml0ZShzdHIxKQotICAgIGZvciBjIGluIGNvbW1hbmRfcmVnaXN0cnk6Ci0gICAgICAgIG5hbWUgPSBjWyduYW1lJ10KLSAgICAgICAgaWYgbmFtZSBub3QgaW4gY2F0ZWdvcnkgYW5kIGNbJ21vZGUnXSBpbiBtb2RlOgotICAgICAgICAgICAgY2F0ZWdvcnkuYXBwZW5kKG5hbWUpCi0gICAgICAgICAgICBzdWJtb2RlPSdjb25maWctJyArIG5hbWUKLSAgICAgICAgICAgIHN1Ym1vZGUxPWMuZ2V0KCdzdWJtb2RlLW5hbWUnKQotICAgICAgICAgICAgaWYgc3VibW9kZTEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgc3VibW9kZTEuZmluZChzdWJtb2RlKT09LTE6Ci0gICAgICAgICAgICAgICAgICAgIHN1Ym1vZGU9c3VibW9kZTEKLSAgICAgICAgICAgIGlmIG5hbWU9PSd2bnMtZGVmaW5pdGlvbic6Ci0gICAgICAgICAgICAgICAgcHJpbnQgc3VibW9kZQotICAgICAgICAgICAgc3RyMT0iJXMiICUgbmFtZQotICAgICAgICAgICAgc3RyMT13aWtpX3NwZWNpYWxfY2hhcmFjdGVyX2hhbmRsaW5nKHN0cjEpCi0gICAgICAgICAgICBzdHIxPSJcbmgzLiAlcyBDb21tYW5kcyAiICUgc3RyMS5jYXBpdGFsaXplKCkKLSAgICAgICAgICAgIGNsaXdpa2lmaWxlLndyaXRlKHN0cjEpCi0gICAgICAgICAgICBoYW5kbGVyID0gQ29tbWFuZERvY3VtZW50b3IoaGVhZGVyID0gTm9uZSkKLSAgICAgICAgICAgIGhhbmRsZXIuYWRkX2NvbW1hbmQoYykKLSAgICAgICAgICAgIHN0cjEgPSBoYW5kbGVyLmhhbmRsZV9jb21tYW5kX3Jlc3VsdHNfd2lraSgpCi0gICAgICAgICAgICBzdHIxPSBzdHIxKyAnXG4nCi0gICAgICAgICAgICBjbGl3aWtpZmlsZS53cml0ZShzdHIxKQotICAgICAgICAgICAgZm9yIGNjIGluIGNvbW1hbmRfcmVnaXN0cnk6Ci0gICAgICAgICAgICAgICAgY21kbW9kZT1jY1snbW9kZSddCi0gICAgICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UoY21kbW9kZSwgc3RyKSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjbWRtb2RlLmZpbmQoc3VibW9kZSkhPS0xKSBhbmQgKGNjWyduYW1lJ10hPSdzaG93Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjc3BlY2lhbCBoYW5kbGluZzogcHJ1bmUgdm5zIGNvbW1hbmQgZnJvbSB0ZW5hbnQgbW9kZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgIT0gJ3RlbmFudCcpIG9yICgobmFtZSA9PSAndGVuYW50JykgYW5kIGNtZG1vZGUuZmluZCgnY29uZmlnLXRlbmFudC12bnMnKT09LTEgYW5kIGNtZG1vZGUuZmluZCgnY29uZmlnLXRlbmFudC1kZWYtdm5zJyk9PS0xKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gQ29tbWFuZERvY3VtZW50b3IoaGVhZGVyID0gTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLmFkZF9jb21tYW5kKGNjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cjEgPSBoYW5kbGVyLmhhbmRsZV9jb21tYW5kX3Jlc3VsdHNfd2lraSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyMT0gc3RyMSsgJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXdpa2lmaWxlLndyaXRlKHN0cjEpCi0gICAgI2dlbmVyYXRlIGFsbCBzaG93IGNvbW1hbmRzCi0gICAgbmFtZT0nc2hvdycKLSAgICBzdHIxPSdcbmgyLiBTaG93IENvbW1hbmRzJwotICAgIGNsaXdpa2lmaWxlLndyaXRlKHN0cjEpCi0gICAgbW9kZT1bJ2NvbmZpZy1pbnRlcm5hbCddICNwcnVuZSBvdXQgYWxsIGludGVybmFsIGNvbW1hbmRzCi0gICAgb2JqX3R5cGU9W10KLSAgICBmb3IgYyBpbiBjb21tYW5kX3JlZ2lzdHJ5OgotICAgICAgICBpZiBjWyduYW1lJ109PW5hbWUgYW5kIGNbJ21vZGUnXSBub3QgaW4gbW9kZToKLSAgICAgICAgICAgIG9iaj1jLmdldCgnb2JqLXR5cGUnKQotICAgICAgICAgICAgaWYgb2JqIGFuZCBvYmogbm90IGluIG9ial90eXBlOgotICAgICAgICAgICAgICAgIG9ial90eXBlLmFwcGVuZChvYmopCi0gICAgICAgICAgICAgICAgc3RyMT0iJXMiICUgb2JqCi0gICAgICAgICAgICAgICAgc3RyMT13aWtpX3NwZWNpYWxfY2hhcmFjdGVyX2hhbmRsaW5nKHN0cjEpCi0gICAgICAgICAgICAgICAgc3RyMT0iXG5oMy4gU2hvdyAlcyBDb21tYW5kcyAiICUgb2JqLmNhcGl0YWxpemUoKQotICAgICAgICAgICAgICAgIGNsaXdpa2lmaWxlLndyaXRlKHN0cjEpCi0gICAgICAgICAgICAgICAgZm9yIGNjIGluIGNvbW1hbmRfcmVnaXN0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5hbWU9PWNjWyduYW1lJ10gYW5kIG9iaj09Y2MuZ2V0KCdvYmotdHlwZScpIGFuZCBjY1snbW9kZSddIG5vdCBpbiBtb2RlOgotICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciA9IENvbW1hbmREb2N1bWVudG9yKGhlYWRlciA9IE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLmFkZF9jb21tYW5kKGNjKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyMSA9IGhhbmRsZXIuaGFuZGxlX2NvbW1hbmRfcmVzdWx0c193aWtpKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cjE9IHN0cjErICdcbicKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaXdpa2lmaWxlLndyaXRlKHN0cjEpCi0KLSAgICBjbGl3aWtpZmlsZS5jbG9zZSgpCi0gICAgcHJpbnQgJ0NMSSByZWZlcmVuY2Ugd2lraSBtYXJrdXAgZmlsZSBpcyBnZW5lcmF0ZWQgc3VjY2Vzc2Z1bGx5IGF0OiBjbGkvY2xpd2lraS50eHQuXG4gJwotCi0jCi0jIExpbnQ6IFZlcmlmeSByZXF1ZXN0ZWQgY29tbWFuZHMKLSMKLWNsYXNzIENvbW1hbmRMaW50KENvbW1hbmRIYW5kbGVyKToKLSAgICAKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHN1cGVyKENvbW1hbmRMaW50LCBzZWxmKS5fX2luaXRfXygpCi0gICAgICAgIHNlbGYuY29tbWFuZHMgPSBbXQotCi0gICAgZGVmIGhhbmRsZV9pbmNvbXBsZXRlX2NvbW1hbmQoc2VsZiwgYXJnLCBhcmdfc2NvcGVzLCBhcmdfZGF0YSwgZmllbGRzLCBwYXJzZWRfdGFnLCBjb21tYW5kKToKLSAgICAgICAgaWYgY29tbWFuZCBub3QgaW4gc2VsZi5jb21tYW5kczoKLSAgICAgICAgICAgIHNlbGYuY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpCi0KLSAgICBkZWYgaGFuZGxlX2NvbXBsZXRlX2NvbW1hbmQoc2VsZiwgcHJlZml4X21hdGNoZXMsIHNjb3BlcywgYXJnX2RhdGEsIGZpZWxkcywgYWN0aW9ucywgY29tbWFuZCk6Ci0gICAgICAgIGlmIGNvbW1hbmQgbm90IGluIHNlbGYuY29tbWFuZHM6Ci0gICAgICAgICAgICBzZWxmLmNvbW1hbmRzLmFwcGVuZChjb21tYW5kKQotICAgICAgICAKLSAgICBkZWYgbGludF9hY3Rpb25fcXVlcnlfdGFibGUoc2VsZiwgY19zZWxmLCBjb21tYW5kLCBjX3Njb3BlKToKLSAgICAgICAgIyBsb29rIGZvciBpdGVtcyB3aGljaCBhcmUgbm90IHBhcmFtZXRlcnMKLSAgICAgICAgYXR0cnMgPSBbJ3Byb2MnLCAna2V5JywgJ3Njb3BlZCcsICdzb3J0JywgJ2NyYWNrJywgJ29iai10eXBlJywgJ3Byb2MnXQotICAgICAgICBmb3IgYSBpbiBjX3Njb3BlOgotICAgICAgICAgICAgaWYgbm90IGEgaW4gYXR0cnM6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJyVzOiB1bmtub3duIGF0dHJpYnV0ZSAlcyBmb3IgcXVlcnktdGFibGUnICUgKGNfc2VsZiwgYSkKLSAgICAgICAgcmVxID0gWydvYmotdHlwZSddCi0gICAgICAgIGZvciByIGluIHJlcToKLSAgICAgICAgICAgIGlmIG5vdCByIGluIGNfc2NvcGU6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJyVzOiBtaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0ZSAlcyBmb3IgcXVlcnktdGFibGUnICUgKAotICAgICAgICAgICAgICAgICAgICBjX3NlbGYsIHIpCi0gICAgICAgIGlmICdvYmotdHlwZScgaW4gY19zY29wZToKLSAgICAgICAgICAgIGlmIG5vdCBtaS5vYmpfdHlwZV9leGlzdHMoY19zY29wZVsnb2JqLXR5cGUnXSk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJyVzOiBxdWVyeS10YWJsZSBubyBzdWNoIG9iai10eXBlICVzJyAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGNfc2VsZiwgY19zY29wZVsnb2JqLXR5cGUnXSkKLQotICAgIGRlZiBsaW50X2FjdGlvbl9xdWVyeV9yZXN0KHNlbGYsIGNfc2VsZiwgY29tbWFuZCwgY19zY29wZSk6Ci0gICAgICAgICMgbG9vayBmb3IgaXRlbXMgd2hpY2ggYXJlIG5vdCBwYXJhbWV0ZXJzCi0gICAgICAgIGF0dHJzID0gWydwcm9jJywgJ3VybCcsICdyZXN0LXR5cGUnLCAna2V5JywgJ3Njb3BlZCcsICdzb3J0JywgJ2FwcGVuZCddCi0gICAgICAgIGZvciBhIGluIGNfc2NvcGU6Ci0gICAgICAgICAgICBpZiBub3QgYSBpbiBhdHRyczoKLSAgICAgICAgICAgICAgICBwcmludCAnJXM6IHVua25vd24gYXR0cmlidXRlICVzIGZvciBxdWVyeS1yZXN0JyAlIChjX3NlbGYsIGEpCi0gICAgICAgIHJlcSA9IFsndXJsJ10KLSAgICAgICAgZm9yIHIgaW4gcmVxOgotICAgICAgICAgICAgaWYgbm90IHIgaW4gY19zY29wZToKLSAgICAgICAgICAgICAgICBwcmludCAnJXM6IG1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlICVzIGZvciBxdWVyeS1yZXN0JyAlICgKLSAgICAgICAgICAgICAgICAgICAgY19zZWxmLCByKQotICAgICAgICBpZiAnYXBwZW5kJyBpbiBjX3Njb3BlOgotICAgICAgICAgICAgaWYgdHlwZShjX3Njb3BlWydhcHBlbmQnXSkgIT0gZGljdDoKLSAgICAgICAgICAgICAgICBwcmludCAnJXM6IGFwcGVuZCBwYXJhbWV0ZXIgaW4gcXVlcnlfcmVzdCcgXAotICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlZCB0byBiZSBhIGRpY3QnICUgKGNfc2VsZikKLQotICAgIGRlZiBsaW50X2FjdGlvbl9qb2luX3RhYmxlKHNlbGYsIGNfc2VsZiwgY29tbWFuZCwgY19zY29wZSk6Ci0gICAgICAgICMgbG9vayBmb3IgaXRlbXMgd2hpY2ggYXJlIG5vdCBwYXJhbWV0ZXJzCi0gICAgICAgIGF0dHJzID0gWydwcm9jJywgJ29iai10eXBlJywgJ2tleScsICdrZXktdmFsdWUnLCAnYWRkLWZpZWxkJywgJ2pvaW4tZmllbGQnLCAnY3JhY2snXQotICAgICAgICBmb3IgYSBpbiBjX3Njb3BlOgotICAgICAgICAgICAgaWYgbm90IGEgaW4gYXR0cnM6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJyVzOiB1bmtub3duIGF0dHJpYnV0ZSAlcyBmb3Igam9pbi10YWJsZScgJSAoY19zZWxmLCBhKQotICAgICAgICByZXEgPSBbJ29iai10eXBlJywgJ2tleScsICdqb2luLWZpZWxkJ10KLSAgICAgICAgZm9yIHIgaW4gcmVxOgotICAgICAgICAgICAgaWYgbm90IHIgaW4gY19zY29wZToKLSAgICAgICAgICAgICAgICBwcmludCAnJXM6IG1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlICVzIGZvciBxdWVyeS10YWJsZScgJSAoCi0gICAgICAgICAgICAgICAgICAgIGNfc2VsZiwgcikKLSAgICAgICAgaWYgJ29iai10eXBlJyBpbiBjX3Njb3BlOgotICAgICAgICAgICAgaWYgbm90IG1pLm9ial90eXBlX2V4aXN0cyhjX3Njb3BlWydvYmotdHlwZSddKToKLSAgICAgICAgICAgICAgICBwcmludCAnJXM6IGpvaW4tdGFibGUgbm8gc3VjaCBvYmotdHlwZSAlcycgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBjX3NlbGYsIGNfc2NvcGVbJ29iai10eXBlJ10pCi0KLSAgICBkZWYgbGludF9kaWN0X2FjdGlvbihzZWxmLCBjX3NlbGYsIGNvbW1hbmQsIGNfYWN0aW9uLCBjX3Njb3BlKToKLSAgICAgICAgaWYgbm90ICdwcm9jJyBpbiBjX2FjdGlvbjoKLSAgICAgICAgICAgIHByaW50ICclczogInByb2MiIGV4cGVjdGVkIGZvciBkaWN0IGluIGFjdGlvbicgJSBjX3NlbGYKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBhY3Rpb24gPSBjX2FjdGlvblsncHJvYyddCi0gICAgICAgIGlmIG5vdCBhY3Rpb24gaW4gYWN0aW9uX3JlZ2lzdHJ5OgotICAgICAgICAgICAgcHJpbnQgJyVzOiBhY3Rpb24gJXMgdW5rbm93bicgJSAoY19zZWxmLCBjX2FjdGlvbikKLSAgICAgICAgaWYgY19hY3Rpb24gPT0gJ2Rpc3BsYXktcmVzdCc6Ci0gICAgICAgICAgICBpZiBub3QgJ3VybCcgaW4gY19hY3Rpb246Ci0gICAgICAgICAgICAgICAgcHJpbnQgJyVzOiBtaXNzaW5nICJ1cmwiIGZvciBkaXNwbGF5LXJlc3QnICUgY19zZWxmCi0gICAgICAgIGlmIGFjdGlvbiA9PSAnZGlzcGxheS10YWJsZSc6Ci0gICAgICAgICAgICBpZiBub3QgJ29iai10eXBlJyBpbiBjX2FjdGlvbjoKLSAgICAgICAgICAgICAgICAjIGNvdWxkIGJlIGluIGNfc2NvcGUsIG9yIG90aGVyIG5lc3RzLgotICAgICAgICAgICAgICAgIHByaW50ICclczogbWlzc2luZyAib2JqLXR5cGUiIGZvciBkaXNwbGF5LXRhYmxlJyAlIGNfc2VsZgotICAgICAgICBpZiBhY3Rpb24gaW4gWydxdWVyeS10YWJsZScsICdxdWVyeS10YWJsZS1hcHBlbmQnXToKLSAgICAgICAgICAgIHNlbGYubGludF9hY3Rpb25fcXVlcnlfdGFibGUoY19zZWxmLCBjb21tYW5kLCBjX2FjdGlvbikKLSAgICAgICAgaWYgYWN0aW9uIGluIFsncXVlcnktcmVzdCcsICdxdWVyeS10YWJsZS1yZXN0J106Ci0gICAgICAgICAgICBzZWxmLmxpbnRfYWN0aW9uX3F1ZXJ5X3Jlc3QoY19zZWxmLCBjb21tYW5kLCBjX2FjdGlvbikKLSAgICAgICAgaWYgYWN0aW9uID09ICdqb2luLXRhYmxlJzoKLSAgICAgICAgICAgIHNlbGYubGludF9hY3Rpb25fam9pbl90YWJsZShjX3NlbGYsIGNvbW1hbmQsIGNfYWN0aW9uKQotICAgICAgICBpZiBhY3Rpb24gPT0gJ2xlZ2FjeS1jbGknOgotICAgICAgICAgICAgcHJpbnQgJyVzOiBMRUdBQ1ktQ0xJLCBjb25zaWRlciByZWltcGxlbWVudGF0aW9uJyAlIGNfc2VsZgotCi0gICAgZGVmIGxpbnRfYWN0aW9uKHNlbGYsIGNfc2VsZiwgY29tbWFuZCwgY19hY3Rpb24sIGNfdHlwZSwgY19zY29wZSk6Ci0gICAgICAgIGlmIHR5cGUoY19hY3Rpb24pID09IHR1cGxlOgotICAgICAgICAgICAgZm9yIHQgaW4gY19hY3Rpb246Ci0gICAgICAgICAgICAgICAgaWYgdHlwZSh0KSA9PSBsaXN0OgotICAgICAgICAgICAgICAgICAgICBwcmludCAnJXM6IExJU1Qgbm9zdCBzdXBwb3J0ZWQgYXMgYSBtZW1iZXIgb2YgYWN0aW9ucycgJSBjX3NlbGYKLSAgICAgICAgICAgICAgICBlbGlmIHR5cGUodCkgPT0gZGljdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5saW50X2RpY3RfYWN0aW9uKGNfc2VsZiwgY29tbWFuZCwgdCwgY19zY29wZSkKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIGlmIHR5cGUoY19hY3Rpb24pID09IGRpY3Q6Ci0gICAgICAgICAgICBzZWxmLmxpbnRfZGljdF9hY3Rpb24oY19zZWxmLCBjb21tYW5kLCBjX2FjdGlvbiwgY19zY29wZSkKLSAgICAgICAgaWYgdHlwZShjX2FjdGlvbikgPT0gc3RyOgotICAgICAgICAgICAgaWYgbm90IGNfYWN0aW9uIGluIGFjdGlvbl9yZWdpc3RyeToKLSAgICAgICAgICAgICAgICBwcmludCAnJXM6IGFjdGlvbiAlcyB1bmtub3duJyAlIChjX3NlbGYsIGNfYWN0aW9uKQotICAgICAgICAgICAgaWYgY19hY3Rpb24gPT0gJ2Rpc3BsYXktcmVzdCc6Ci0gICAgICAgICAgICAgICAgaWYgbm90ICd1cmwnIGluIGNfc2NvcGU6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICclczogbWlzc2luZyAidXJsIiBmb3IgZGlzcGxheS1yZXN0JyAlIGNfc2VsZgotICAgICAgICAgICAgaWYgY19hY3Rpb24gaW4gWydxdWVyeS10YWJsZScsICdxdWVyeS10YWJsZS1hcHBlbmQnXToKLSAgICAgICAgICAgICAgICBzZWxmLmxpbnRfYWN0aW9uX3F1ZXJ5X3RhYmxlKGNfc2VsZiwgY29tbWFuZCwgY19zY29wZSkKLSAgICAgICAgICAgIGlmIGNfYWN0aW9uIGluIFsncXVlcnktcmVzdCcsICdxdWVyeS10YWJsZS1yZXN0J106Ci0gICAgICAgICAgICAgICAgc2VsZi5saW50X2FjdGlvbl9xdWVyeV9yZXN0KGNfc2VsZiwgY29tbWFuZCwgY19zY29wZSkKLSAgICAgICAgICAgIGlmIGNfYWN0aW9uID09ICdqb2luLXRhYmxlJzoKLSAgICAgICAgICAgICAgICBzZWxmLmxpbnRfYWN0aW9uX2pvaW5fdGFibGUoY19zZWxmLCBjb21tYW5kLCBjX3Njb3BlKQotICAgICAgICAgICAgaWYgY19hY3Rpb24gPT0gJ2xlZ2FjeS1jbGknOgotICAgICAgICAgICAgICAgIHByaW50ICclczogTEVHQUNZLUNMSSwgY29uc2lkZXIgcmVpbXBsZW1lbnRhdGlvbicgJSBjX3NlbGYKLQotICAgIGRlZiBsaW50X2Nob2ljZShzZWxmLCBjX3NlbGYsIGNvbW1hbmQsIGNfY2hvaWNlLCBjX3R5cGUpOgotICAgICAgICBmb3IgY2hvaWNlIGluIGNfY2hvaWNlOgotICAgICAgICAgICAgaWYgdHlwZShjaG9pY2UpID09IHR1cGxlOgotICAgICAgICAgICAgICAgICMgaW4gb3JkZXIgY29sbGVjdGlvbiBvZiB0ZXJtcywgdGhlc2UgYXJlbid0IGNob2ljZXMsIGJ1dCAKLSAgICAgICAgICAgICAgICAjIGhlcmUgZSBjYW4gdHJlYXQgdGhlbSB0aGF0IHdheQotICAgICAgICAgICAgICAgIGZvciB0IGluIGNob2ljZToKLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZSh0KSA9PSBsaXN0OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyVzOiBMSVNUIG5vc3Qgc3VwcG9ydGVkIGFzIGEgbWVtYmVyIG9mIGNob2ljZXMnICUgY19zZWxmCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgdHlwZSh0KSA9PSBkaWN0OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW50X2Nob2ljZShjX3NlbGYsIGNvbW1hbmQsICh0LCksIGNfdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiB0eXBlKHQpID09IHN0cjoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdG9rZW4sIG91Z2h0IHRvIHZhbGlkYXRlIGNoYXIncyBpbiB0b2tlbgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyVzOiBiYWQgZWxlbWVudCB0eXBlIC0+ICVzJyAlIChjX3NlbGYsIHR5cGUodCkpCi0KLSAgICAgICAgICAgIGlmICdjb21tYW5kLXR5cGUnIGluIGNob2ljZToKLSAgICAgICAgICAgICAgICBwcmludCAnJXM6IENIT0lDRSBjb250YWlucyAiY29tbWFuZC10eXBlIiwgb25seScgXAotICAgICAgICAgICAgICAgICAgICAnIGludGVuZGVkIHRvIGJlIHVzZWQgYXQgdG9wIGxldmVsJyAlIGNfc2VsZgotICAgICAgICAgICAgICAgIGlmIG5vdCBjaG9pY2VbJ2NvbW1hbmQtdHlwZSddIGluIGNvbW1hbmRfdHlwZV9kZWZhdWx0czoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyVzOiBtaXNzaW5nIGNvbW1hbmQtdHlwZSAlcycgJSAoY19zZWxmLCBjaG9pY2VbJ2NvbW1hbmQtdHlwZSddKQotICAgICAgICAgICAgaWYgJ2FjdGlvbicgaW4gY2hvaWNlOgotICAgICAgICAgICAgICAgIHNlbGYubGludF9hY3Rpb24oY19zZWxmLCBjb21tYW5kLCBjaG9pY2VbJ2FjdGlvbiddLCBjX3R5cGUsIGNob2ljZSkKLSAgICAgICAgICAgIGlmICdjaG9pY2VzJyBpbiBjaG9pY2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5saW50X2Nob2ljZShjX3NlbGYsIGNvbW1hbmQsIGNob2ljZVsnY2hvaWNlcyddLCBjX3R5cGUpCi0KLSAgICBkZWYgbGludF9jb21tYW5kKHNlbGYsY29tbWFuZCk6Ci0gICAgICAgIGNfc2VsZiA9IGNvbW1hbmQuZ2V0KCdzZWxmJywgJ1VOS05PV04gU0VMRiBOQU5FJykKLSAgICAgICAgcHJpbnQgY29tbWFuZFsnc2VsZiddCi0KLSAgICAgICAgY19uYW1lID0gY29tbWFuZC5nZXQoJ25hbWUnLCBOb25lKQotICAgICAgICBpZiBjX25hbWUgPT0gTm9uZToKLSAgICAgICAgICAgIHByaW50ICclczogbm8gbmFtZSBkZWZpbmVkJyAlIGNfc2VsZgotCi0gICAgICAgIGNfbW9kZSA9IGNvbW1hbmQuZ2V0KCdtb2RlJywgTm9uZSkKLSAgICAgICAgaWYgY19tb2RlID09IE5vbmU6Ci0gICAgICAgICAgICBwcmludCAnJXM6IG5vIHN1Ym1vZGUgZGVmaW5lZCcgJSBjX3NlbGYKLQotICAgICAgICBjX3Nob3J0X2hlbHAgPSBjb21tYW5kLmdldCgnc2hvcnQtaGVscCcsIE5vbmUpCi0gICAgICAgIGlmIGNfc2hvcnRfaGVscCA9PSBOb25lOgotICAgICAgICAgICAgcHJpbnQgJyVzOiBubyBzaG9ydC1oZWxwIGRlZmluZWQnICUgY19zZWxmCi0KLSAgICAgICAgY19vYmpfdHlwZSA9IGNvbW1hbmQuZ2V0KCdvYmotdHlwZScsIE5vbmUpCi0KLSAgICAgICAgY19jdXJyZW50X21vZGVfb2JqX2lkID0gY29tbWFuZC5nZXQoJ2N1cnJlbnQtbW9kZS1vYmotaWQnLCBOb25lKQotICAgICAgICBpZiAnY3VycmVudC1tb2RlLW9iai1pZCcgaW4gY29tbWFuZDoKLSAgICAgICAgICAgIGlmIGNfY3VycmVudF9tb2RlX29ial9pZCA9PSBOb25lOgotICAgICAgICAgICAgICAgIHByaW50ICclczogImN1cnJlbnQtbW9kZS1vYmotaWQiIG5vdCBuZWVkZWQgYXQgdG9wIGxldmVsJyAlIGNfc2VsZgotCi0gICAgICAgIGNfcGFyZW50X2lkID0gY29tbWFuZC5nZXQoJ3BhcmVudC1pZCcsIE5vbmUpCi0gICAgICAgIGlmICdwYXJlbnQtaWQnIGluIGNvbW1hbmQ6Ci0gICAgICAgICAgICBpZiBjX3BhcmVudF9pZCA9PSBOb25lOgotICAgICAgICAgICAgICAgIHByaW50ICclczogInBhcmVudC1pZCIgbm90IG5lZWRlZCBhdCB0b3AgbGV2ZWwnICUgY19zZWxmCi0KLSAgICAgICAgY190eXBlID0gY29tbWFuZC5nZXQoJ2NvbW1hbmQtdHlwZScsIE5vbmUpCi0KLSAgICAgICAgY19hcmdzID0gY29tbWFuZC5nZXQoJ2FyZ3MnLCBOb25lKQotICAgICAgICBpZiBjX2FyZ3MgPT0gTm9uZToKLSAgICAgICAgICAgIHByaW50ICclczogbm8gYXJncyBkZWZpbmVkJyAlIGNfYXJncwotCi0gICAgICAgIGNfYWN0aW9uID0gY29tbWFuZC5nZXQoJ2FjdGlvbicsIE5vbmUpCi0KLSAgICAgICAgaWYgY19hY3Rpb24gb3IgY190eXBlOgotICAgICAgICAgICAgc2VsZi5saW50X2FjdGlvbihjX3NlbGYsIGNvbW1hbmQsIGNfYWN0aW9uLCBjX3R5cGUsIGNvbW1hbmQpCi0KLSAgICAgICAgaWYgdHlwZShjX2FyZ3MpID09IGRpY3Q6Ci0gICAgICAgICAgICBpZiAnYWN0aW9uJyBpbiBjX2FyZ3M6Ci0gICAgICAgICAgICAgICAgc2VsZi5saW50X2FjdGlvbihjX3NlbGYsIGNvbW1hbmQsIGNfYXJnc1snYWN0aW9uJ10sIGNfdHlwZSwgY19hcmdzKQotICAgICAgICAgICAgaWYgJ2Nob2ljZXMnIGluIGNfYXJnczoKLSAgICAgICAgICAgICAgICBzZWxmLmxpbnRfY2hvaWNlKGNfc2VsZiwgY29tbWFuZCwgY19hcmdzWydjaG9pY2VzJ10sIGNfdHlwZSkKLSAgICAgICAgICAgIGlmICdjaG9pY2UnIGluIGNfYXJnczoKLSAgICAgICAgICAgICAgICBwcmludCAnJXM6ICJjaG9pY2VzIiBub3QgImNob2ljZSInICUgY19zZWxmCi0gICAgICAgIGVsaWYgdHlwZShjX2FyZ3MpID09IHR1cGxlIG9yIHR5cGUoY19hcmdzKSA9PSBsaXN0OgotICAgICAgICAgICAgZm9yIGEgaW4gY19hcmdzOgotICAgICAgICAgICAgICAgIGlmICdhY3Rpb24nIGluIGE6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubGludF9hY3Rpb24oY19zZWxmLCBjb21tYW5kLCBhWydhY3Rpb24nXSwgY190eXBlLCBhKQotICAgICAgICAgICAgICAgIGlmICdjaG9pY2VzJyBpbiBhOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbnRfY2hvaWNlKGNfc2VsZiwgY29tbWFuZCwgYVsnY2hvaWNlcyddLCBjX3R5cGUpCi0gICAgICAgICAgICAgICAgaWYgJ2Nob2ljZScgaW4gYToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyVzOiAiY2hvaWNlcyIgbm90ICJjaG9pY2UiJyAlIGNfc2VsZgotICAgICAgICAgICAgICAgIGlmICdmaWVsZCcgaW4gYToKLSAgICAgICAgICAgICAgICAgICAgaWYgY19vYmpfdHlwZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBtaS5vYmpfdHlwZV9oYXNfZmllbGQoY19vYmpfdHlwZSwgYVsnZmllbGQnXSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyVzOiAlcyBNSVNTSU5HIEZJRUxEICVzJyAlIChjX3NlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX29ial90eXBlLCBhWydmaWVsZCddKQotCi0KLSAgICBkZWYgaGFuZGxlX2NvbW1hbmRfcmVzdWx0cyhzZWxmKToKLSAgICAgICAgaWYgbGVuKHNlbGYuY29tbWFuZHMpID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gJ05vIGFwcGxpY2FibGUgY29tbWFuZDogJXMnICUgJyAnLmpvaW4oc2VsZi53b3JkcykKLSAgICAgICAgCi0gICAgICAgIGZvciBjb21tYW5kIGluIHNlbGYuY29tbWFuZHM6Ci0gICAgICAgICAgICBzZWxmLmxpbnRfY29tbWFuZChjb21tYW5kKQotCi0gICAgICAgIHJldHVybiAnLS0nCi0KLQotZGVmIGxpbnRfY29tbWFuZCh3b3Jkcyk6Ci0gICAgbGludCA9IENvbW1hbmRMaW50KCkKLSAgICBpZiBsZW4od29yZHMpID09IDA6Ci0gICAgICAgIGZvciBjb21tYW5kIGluIGNvbW1hbmRfcmVnaXN0cnk6Ci0gICAgICAgICAgICBsaW50LmxpbnRfY29tbWFuZChjb21tYW5kKQotICAgIGVsc2U6Ci0gICAgICAgIGZvciBjb21tYW5kIGluIGNvbW1hbmRfcmVnaXN0cnk6Ci0gICAgICAgICAgICBpZiBjb21tYW5kWydzZWxmJ10gaW4gd29yZHM6Ci0gICAgICAgICAgICAgICAgbGludC5saW50X2NvbW1hbmQoY29tbWFuZCkKLSAgICByZXR1cm4gJycKLQotCi1jbGFzcyBDb21tYW5kUGVybXV0b3IoQ29tbWFuZEhhbmRsZXIpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1YWxpZnkgPSBGYWxzZSk6Ci0gICAgICAgICIiIgotICAgICAgICBAcGFyYW0gcXVhbGlmeSBHZW5lcmF0ZSBxdWFsaWZ5IHZlcnNpb24gb2YgdGhlIHBlcm11dGF0aW9ucwotICAgICAgICAiIiIKLSAgICAgICAgc3VwZXIoQ29tbWFuZFBlcm11dG9yLCBzZWxmKS5fX2luaXRfXygpCi0gICAgICAgIHNlbGYuY29tbWFuZHMgPSBbXQotICAgICAgICBzZWxmLmNvbGxlY3QgPSBbXQotICAgICAgICBzZWxmLnF1YWxpZnkgPSBxdWFsaWZ5Ci0KLSAgICAgICAgc2VsZi5vYmpfdHlwZSA9IE5vbmUKLSAgICAgICAgc2VsZi5vYmpfdHlwZV9vdGhlciA9IE5vbmUKLQotCi0gICAgZGVmIGNvbGxlY3RfY29tcGxldGVfY29tbWFuZChzZWxmLCBsaW5lKToKLSAgICAgICAgaWYgc2VsZi5xdWFsaWZ5OgotICAgICAgICAgICAgIyBjb2xsZWN0IHRvZ2V0aGVyIHBhcnRzLCB3aGVuIGEgdG9rZW4gYXBwZWFycywKLSAgICAgICAgICAgICMgcmVwbGFjZSB0aGUgdG9rZW4gd2l0aCBhIHByb2NlZHVyZSBjYWxsLgotICAgICAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBuZXdfbGluZSA9IFsnIiddCi0gICAgICAgICAgICBxdW90ZWQgPSBUcnVlCi0gICAgICAgICAgICBpZiBsaW5lWzBdWzBdID09ICcrJzogIyB1bnVzdWFsCi0gICAgICAgICAgICAgICAgbmV3X2xpbmUgPSBbJyVzICcgJSBsaW5lWzBdWzE6XV0KLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZVsxOl0KLSAgICAgICAgICAgICAgICBxdW90ZWQgPSBGYWxzZQotICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbGluZToKLSAgICAgICAgICAgICAgICBpZiBxdW90ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGl0ZW1bMF0gPT0gJysnOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2xpbmUuYXBwZW5kKCciICsgJXMgJyAlIGl0ZW1bMTpdKQotICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVkID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld19saW5lLmFwcGVuZCgnJXMgJyAlIGl0ZW0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgaXRlbVswXSA9PSAnKyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfbGluZS5hcHBlbmQoJyArICIgIiArICVzICcgJSBpdGVtWzE6XSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlZCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfbGluZS5hcHBlbmQoJysgIiAlcyAnICUgaXRlbSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlZCA9IFRydWUKLSAgICAgICAgICAgIGlmIHF1b3RlZDoKLSAgICAgICAgICAgICAgICBuZXdfbGluZS5hcHBlbmQoJyInKQotCi0gICAgICAgICAgICBzZWxmLmNvbGxlY3QuYXBwZW5kKCcnLmpvaW4obmV3X2xpbmUpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5jb2xsZWN0LmFwcGVuZCgnICcuam9pbihsaW5lKSkKLQotCi0gICAgZGVmIGZpZWxkX3RvX2dlbmVyYXRvcihzZWxmLCBmaWVsZCk6Ci0gICAgICAgICIiIgotICAgICAgICBDb252ZXJ0IHRoZSBmaWVsZCBuYW1lIHRvIGEgdGV4dCBmaWVsZC4KLSAgICAgICAgV2hlbiAncXVhbGlmeScgaXMgc2V0LCByZXBsYWNlIHRoZSBmaWVsZCBuYW1lCi0gICAgICAgIHdpdGggYSBsaWtlbHkgcHJvY2VkdXJlIHRvIGNhbGwgaW5zdGVhZAotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5xdWFsaWZ5OgotICAgICAgICAgICAgIyBNYW55IG9mIHRoZSBmaWVsZHMgYXJlIGFjdHVhbGx5IGZpZWxkcyBpbgotICAgICAgICAgICAgIyB0aGUgbmFtZWQgb2JqLXR5cGUuICBUYWtlIGEgc2hvdCBhdCBzZWVpbmcgaWYgdGhhdCdzCi0gICAgICAgICAgICAjIHRoZSBjYXNlLCBhbmQgY2FsbCBhIHNhbXBsZSB2YWx1ZSBjb2xsZWN0b3IKLQotICAgICAgICAgICAgaWYgc2VsZi5vYmpfdHlwZV9vdGhlcjoKLSAgICAgICAgICAgICAgICAjIFRoZXNlIGFyZSB0eXBpY2FsbHkgYW4gb2JqX3R5cGV8ZmllbGQgbmFtZXMuCi0gICAgICAgICAgICAgICAgcGFydHMgPSBzZWxmLm9ial90eXBlX290aGVyLnNwbGl0KCd8JykKLSAgICAgICAgICAgICAgICBvX2ZpZWxkID0gZmllbGQKLSAgICAgICAgICAgICAgICBpZiBsZW4ocGFydHMpID4gMToKLSAgICAgICAgICAgICAgICAgICAgb19maWVsZCA9IHBhcnRzWzFdCi0gICAgICAgICAgICAgICAgIyBieSB1c2luZyBvYmpfdHlwZV9oYXNfbW9kZWwoKSBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgIyBvYmpfdHlwZV9leGlzdHMoKSwgJ2N1cmwoMSknIGNhbiBiZSB1c2VkIGluCi0gICAgICAgICAgICAgICAgIyB0aGUgdGVzdGluZyB0byBmaW5kIHNhbXBsZSBvYmplY3RzLgotICAgICAgICAgICAgICAgIGlmIG1pLm9ial90eXBlX2hhc19tb2RlbChwYXJ0c1swXSk6Ci0gICAgICAgICAgICAgICAgICAgIHNhbXBsZV9vYmpfdHlwZSA9ICdzYW1wbGVfb2JqX3R5cGUnCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNfbm9fY29tbWFuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9vYmpfdHlwZSA9ICdzYW1wbGVfbm9fb2JqX3R5cGUnCi0gICAgICAgICAgICAgICAgICAgIGlmIG1pLm9ial90eXBlX2hhc19maWVsZChwYXJ0c1swXSwgb19maWVsZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJytpZC4lcygiJXMiLCAiJXMiKScgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzYW1wbGVfb2JqX3R5cGUsIHBhcnRzWzBdLCBvX2ZpZWxkKQotCi0gICAgICAgICAgICBweXRob25fZmllbGQgPSBmaWVsZC5yZXBsYWNlKCItIiwgIl8iKQotICAgICAgICAgICAgaWYgc2VsZi5vYmpfdHlwZToKLSAgICAgICAgICAgICAgICBzYW1wbGVfb2JqX3R5cGUgPSAnc2FtcGxlX29ial90eXBlJwotICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNfbm9fY29tbWFuZDoKLSAgICAgICAgICAgICAgICAgICAgc2FtcGxlX29ial90eXBlID0gJ3NhbXBsZV9ub19vYmpfdHlwZScKLSAgICAgICAgICAgICAgICBpZiBtaS5vYmpfdHlwZV9oYXNfZmllbGQoc2VsZi5vYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJytpZC4lcygiJXMiLCAiJXMiKScgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNhbXBsZV9vYmpfdHlwZSwgc2VsZi5vYmpfdHlwZSwgZmllbGQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcraWQuJXMoIiVzIiknICUgKHB5dGhvbl9maWVsZCwgc2VsZi5vYmpfdHlwZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICcraWQuJXMoKScgJSBweXRob25fZmllbGQKLQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICI8JXM+IiAlIGZpZWxkCi0gICAgICAgIAotCi0gICAgZGVmIHBlcm11dGVfaXRlbShzZWxmLCBpdGVtLCBsaW5lLCBuZXh0X2FyZ3MpOgotICAgICAgICAiIiIKLSAgICAgICAgRGVhbHMgd2l0aCBhIHNpbmdsZSBkaWN0aW9uYXJ5IGl0ZW0uICBUaGlzIGNhbiBiZToKLSAgICAgICAgYSBjaG9pY2UsIGFuIGFyZywgYSB0b2tlbiwgb3IgYSBmaWVsZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgdHlwZShpdGVtKSA9PSBzdHI6Ci0gICAgICAgICAgICBsaW5lLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgc2VsZi5wZXJtdXRlX2luX29yZGVyKG5leHRfYXJnc1swXSwgbGluZSwgbmV4dF9hcmdzWzE6XSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIHNlbGYuaXNfbm9fY29tbWFuZDoKLSAgICAgICAgICAgIG9wdGlvbmFsID0gaXRlbS5nZXQoJ29wdGlvbmFsLWZvci1ubycsIEZhbHNlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3B0aW9uYWwgPSBpdGVtLmdldCgnb3B0aW9uYWwnLCBGYWxzZSkKLQotCi0gICAgICAgIHNraXAgPSBpdGVtLmdldCgncGVybXV0ZScpICAgICAgIyBYWFggcGVybXV0ZSB2cyBxdWFsaWZ5IHNraXA/Ci0KLSAgICAgICAgaWYgc2tpcCAhPSAnc2tpcCcgYW5kIG9wdGlvbmFsOgotICAgICAgICAgICAgaWYgbGVuKG5leHRfYXJncyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5wZXJtdXRlX2luX29yZGVyKE5vbmUsIGxpbmUsIG5leHRfYXJncykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2NvbXBsZXRlX2NvbW1hbmQobGluZSkKLQotICAgICAgICBjaG9pY2VzID0gaXRlbS5nZXQoJ2Nob2ljZXMnKQotICAgICAgICBpZiBjaG9pY2VzOgotICAgICAgICAgICAgc2VsZi5wZXJtdXRlX2Nob2ljZXMoY2hvaWNlcywgbGlzdChsaW5lKSwgbmV4dF9hcmdzKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIAotICAgICAgICBpZiBza2lwID09ICdza2lwJzoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHRva2VuID0gaXRlbS5nZXQoJ3Rva2VuJykKLSAgICAgICAgdGFnID0gaXRlbS5nZXQoJ3RhZycpCi0gICAgICAgIGZpZWxkID0gaXRlbS5nZXQoJ2ZpZWxkJykKLSAgICAgICAgYXJncyA9IGl0ZW0uZ2V0KCdhcmdzJykKLSAgICAgICAgb2JqX3R5cGUgPSBpdGVtLmdldCgnb2JqLXR5cGUnKQotICAgICAgICBpZiBvYmpfdHlwZToKLSAgICAgICAgICAgIHNlbGYub2JqX3R5cGUgPSBvYmpfdHlwZQotCi0gICAgICAgICMgbXVzdCBkbyB0aGlzIGFmdGVyIHRoZSByZWN1cnNpdmUgJ29wdGlvbmFsJyBjYWxscy4KLSAgICAgICAgc2VsZi5vYmpfdHlwZV9vdGhlciA9IGl0ZW0uZ2V0KCdvdGhlcicpCi0KLSAgICAgICAgaWYgYXJnczoKLSAgICAgICAgICAgIGlmIHR5cGUoYXJncykgPT0gZGljdDoKLSAgICAgICAgICAgICAgICBzZWxmLnBlcm11dGVfaXRlbShhcmdzLCBsaW5lLCBuZXh0X2FyZ3MpCi0gICAgICAgICAgICBlbGlmIHR5cGUoYXJncykgPT0gdHVwbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5wZXJtdXRlX2luX29yZGVyKGFyZ3MsIGxpc3QobGluZSksIG5leHRfYXJncykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ1RZUEUgQVJHUyAnLCB0eXBlKGFyZ3MpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxpZiB0b2tlbjoKLSAgICAgICAgICAgIGxpbmUuYXBwZW5kKHRva2VuKQotICAgICAgICBlbGlmIGZpZWxkOgotICAgICAgICAgICAgaXRlbV90eXBlID0gaXRlbS5nZXQoJ3R5cGUnKQotICAgICAgICAgICAgaWYgaXRlbV90eXBlID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgaXRlbV90eXBlID0gaXRlbS5nZXQoJ2Jhc2UtdHlwZScpCi0gICAgICAgICAgICBpZiBpdGVtX3R5cGUgPT0gJ2VudW0nOgotICAgICAgICAgICAgICAgIHZhbHVlcyA9IGl0ZW0uZ2V0KCd2YWx1ZXMnKQotICAgICAgICAgICAgICAgIGlmIHZhbHVlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgdGFnOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5hcHBlbmQodGFnKQotICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgdGhlIHZhbHVlcyBpbnRvIGEgdHVwbGUgb2YgZGljdHMsIAotICAgICAgICAgICAgICAgICAgICAjIHNvIHRoYXQgcGVybXV0ZV9jaG9pY2VzIGNhbiBtYW5hZ2UgaXQKLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZSh2YWx1ZXMpID09IHN0cjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IFt2YWx1ZXNdCi0gICAgICAgICAgICAgICAgICAgIGNob2ljZXMgPSB0dXBsZShbeyd0b2tlbicgOiB4fSBmb3IgeCBpbiB2YWx1ZXNdKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnBlcm11dGVfY2hvaWNlcyhjaG9pY2VzLCBsaXN0KGxpbmUpLCBuZXh0X2FyZ3MpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgdGFnOgotICAgICAgICAgICAgICAgICAgICBsaW5lLmFwcGVuZCh0YWcpCi0gICAgICAgICAgICAgICAgbGluZS5hcHBlbmQoc2VsZi5maWVsZF90b19nZW5lcmF0b3IoZmllbGQpKQotCi0gICAgICAgICMKLSAgICAgICAgIyBmYWxsLXRocm91Z2ggdG8gdGhpcyBjb21tb24gY29kZSwgd2hpY2ggc2hvdWxkIG9ubHkgYmUKLSAgICAgICAgIyByZWFjaGVkIHdoZW4gbm8gb3RoZXIgcmVjdXJzaXZlIGRlc2NlbnQgaXMgcGVyZm9ybWVkLgotCi0gICAgICAgIGlmIGxlbihuZXh0X2FyZ3MpOgotICAgICAgICAgICAgc2VsZi5wZXJtdXRlX2luX29yZGVyKE5vbmUsIGxpbmUsIG5leHRfYXJncykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuY29sbGVjdF9jb21wbGV0ZV9jb21tYW5kKGxpbmUpCi0gICAgICAgIAotCi0gICAgZGVmIHBlcm11dGVfY2hvaWNlcyhzZWxmLCBjaG9pY2VzLCBsaW5lLCBuZXh0X2FyZ3MpOgotICAgICAgICAiIiIKLSAgICAgICAgV2hlbiBhICdjaG9pY2VzJzogaXMgcmVhY2hlZCwgZW51bWVyYXRlIGFsbCB0aGUgY2hvaWNlcywKLSAgICAgICAgYW5kIGNvbnRpbnVlIGZvcndhcmQuICAKLSAgICAgICAgIiIiCi0gICAgICAgIGZvciBwaWNrIGluIGNob2ljZXM6Ci0gICAgICAgICAgICBpZiB0eXBlKHBpY2spID09IGRpY3Q6Ci0gICAgICAgICAgICAgICAgbmV3X2xpbmUgPSBsaXN0KGxpbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5wZXJtdXRlX2l0ZW0ocGljaywgbmV3X2xpbmUsIG5leHRfYXJncykKLSAgICAgICAgICAgICAgICBpZiBuZXh0X2FyZ3MgPT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2NvbXBsZXRlX2NvbW1hbmQobGluZSkKLSAgICAgICAgICAgIGVsaWYgdHlwZShwaWNrKSA9PSB0dXBsZToKLSAgICAgICAgICAgICAgICBzZWxmLnBlcm11dGVfaW5fb3JkZXIocGljaywgbGlzdChsaW5lKSwgbmV4dF9hcmdzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCAiQ0hPSUNFPyAiLCB0eXBlKHBpY2spCi0KLQotICAgIGRlZiBwZXJtdXRlX2luX29yZGVyKHNlbGYsIGl0ZW1zLCBsaW5lLCBuZXh0X2FyZ3MpOgotICAgICAgICBpZiBpdGVtcyA9PSBOb25lIGFuZCBsZW4obmV4dF9hcmdzKToKLSAgICAgICAgICAgIGl0ZW1zID0gbmV4dF9hcmdzCi0gICAgICAgICAgICBuZXh0X2FyZ3MgPSBbXQotICAgICAgICBpZiBsZW4oaXRlbXMpID09IDA6Ci0gICAgICAgICAgICAjIGRvbmUKLSAgICAgICAgICAgIHNlbGYuY29sbGVjdF9jb21wbGV0ZV9jb21tYW5kKGxpbmUpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgIyBzZWUgaWYgdGhlIGl0ZW0gaXMgb3B0aW9uYWwsIGlmIHNvIHRoZW4gZG9uJ3QgYWRkIHRoZSBpdGVtLAotICAgICAgICAjIGFuZCBnbyB0byB0aGUgbmV4dCBpdGVtIGluIGEgcmVjdXJzaXZlIGNhbGwKLQotICAgICAgICB3aGlsZSBsZW4oaXRlbXMpIGFuZCB0eXBlKGl0ZW1zWzBdKSA9PSBzdHI6Ci0gICAgICAgICAgICBsaW5lLmFwcGVuZChpdGVtc1swXSkKLSAgICAgICAgICAgIGl0ZW1zID0gaXRlbXNbMTpdCi0KLSAgICAgICAgaWYgbGVuKGl0ZW1zKToKLSAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1swXQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgbGVuKGl0ZW1zKSA+IDE6Ci0gICAgICAgICAgICAgICAgaWYgbGVuKG5leHRfYXJncykgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgbmV4dF9hcmdzID0gaXRlbXNbMTpdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShpdGVtc1sxOl0pID09IHR1cGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hcmdzID0gbGlzdChpdGVtc1sxOl0pICsgbmV4dF9hcmdzCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2FyZ3MgPSBpdGVtc1sxOl0gKyBuZXh0X2FyZ3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmV4dF9hcmdzID0gW10KLQotICAgICAgICAgICAgdG9rZW4gPSBGYWxzZQotICAgICAgICAgICAgaWYgdHlwZShpdGVtKSA9PSB0dXBsZToKLSAgICAgICAgICAgICAgICBzZWxmLnBlcm11dGVfaW5fb3JkZXIoaXRlbSwgbGluZSwgbGlzdChuZXh0X2FyZ3MpKQotICAgICAgICAgICAgZWxpZiB0eXBlKGl0ZW0pID09IGRpY3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5wZXJtdXRlX2l0ZW0oaXRlbSwgbGlzdChsaW5lKSwgbGlzdChuZXh0X2FyZ3MpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCAncGVybXV0ZV9pbl9vcmRlcjogbmVlZCB0eXBlJywgdHlwZShpdGVtKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2NvbXBsZXRlX2NvbW1hbmQobGluZSkKLQotICAgICAgICByZXR1cm4KLQotICAgIGRlZiBwZXJtdXRlX2NvbW1hbmRfY29tbW9uKHNlbGYsIGNvbW1hbmQpOgotICAgICAgICBhcmdzID0gY29tbWFuZC5nZXQoJ2FyZ3MnKQotICAgICAgICBpZiBhcmdzID09IE5vbmU6Ci0gICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICBwcmludCAnUEVSTVVURTogbWlzc2luZyBhcmdzIGZvciAlcycgJSBjb21tYW5kWydzZWxmJ10KLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBuYW1lID0gX2dldF9jb21tYW5kX3RpdGxlKGNvbW1hbmQpCi0KLSAgICAgICAgb2JqX3R5cGUgPSBjb21tYW5kLmdldCgnb2JqLXR5cGUnKQotICAgICAgICBpZiBvYmpfdHlwZToKLSAgICAgICAgICAgIHNlbGYub2JqX3R5cGUgPSBvYmpfdHlwZQotCi0gICAgICAgIGlmIHR5cGUoY29tbWFuZC5nZXQoJ25hbWUnKSkgPT0gZGljdDoKLSAgICAgICAgICAgIGlmIHNlbGYucXVhbGlmeToKLSAgICAgICAgICAgICAgICBuYW1lID0gc2VsZi5maWVsZF90b19nZW5lcmF0b3IoY29tbWFuZFsnbmFtZSddWydmaWVsZCddKQotCi0gICAgICAgIGlmIHNlbGYuaXNfbm9fY29tbWFuZDoKLSAgICAgICAgICAgIGxpbmUgPSBbJ25vJywgbmFtZV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmUgPSBbbmFtZV0KLQotICAgICAgICBpZiB0eXBlKGFyZ3MpID09IHR1cGxlOgotICAgICAgICAgICAgc2VsZi5wZXJtdXRlX2luX29yZGVyKGFyZ3MsIGxpbmUsIFtdKQotICAgICAgICBlbGlmIHR5cGUoYXJncykgPT0gZGljdDoKLSAgICAgICAgICAgIHNlbGYucGVybXV0ZV9pdGVtKGFyZ3MsIGxpbmUsIFtdKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQgJ1BDICcsIHR5cGUoYXJncykKLQotICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuY29sbGVjdCkKLQotCi0gICAgZGVmIHBlcm11dGVfY29tbWFuZChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgcHJpbnQgJ1BFUk1VVEUnLCBjb21tYW5kWydzZWxmJ10sIGlzX25vX2NvbW1hbmRfc3VwcG9ydGVkKGNvbW1hbmQpCi0KLSAgICAgICAgc2VsZi5pc19ub19jb21tYW5kID0gRmFsc2UKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5wZXJtdXRlX2NvbW1hbmRfY29tbW9uKGNvbW1hbmQpCi0KLSAgICAgICAgaWYgaXNfbm9fY29tbWFuZF9zdXBwb3J0ZWQoY29tbWFuZCk6Ci0gICAgICAgICAgICAjIE5vdyBhZGQgdGhlIGNvbW1hbmQgZm9yICdubycKLSAgICAgICAgICAgIHNlbGYuaXNfbm9fY29tbWFuZCA9IFRydWUKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucGVybXV0ZV9jb21tYW5kX2NvbW1vbihjb21tYW5kKQotCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotCi0gICAgZGVmIGhhbmRsZV9jb21tYW5kX3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgIGNvbGxlY3Rpb25zID0gW10KLSAgICAgICAgZm9yIGNvbW1hbmQgaW4gc2VsZi5jb21tYW5kczoKLSAgICAgICAgICAgIGNvbGxlY3Rpb25zLmFwcGVuZChzZWxmLnBlcm11dGVfY29tbWFuZChjb21tYW5kKSkKLSAgICAgICAgcmV0dXJuICdcbicuam9pbihjb2xsZWN0aW9ucykKLQotCi0gICAgZGVmIGhhbmRsZV9jb21tYW5kKHNlbGYsIHdvcmRzKToKLSAgICAgICAgZm9yIHdvcmQgaW4gd29yZHM6Ci0gICAgICAgICAgICBmb3IgYyBpbiBjb21tYW5kX3JlZ2lzdHJ5OgotICAgICAgICAgICAgICAgIGlmIHdvcmQgPT0gY1snc2VsZiddOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wZXJtdXRlX2NvbW1hbmQoYykKLQotCi1kZWYgcGVybXV0ZV9zaW5nbGVfc3VibW9kZShzdWJtb2RlX2NvbW1hbmQsIHF1YWxpZnkpOgotICAgICIiIgotICAgIFBlcm11dGUgY29tbWFuZCBmb3IgYSBzdWJtb2RlLCB0YWtlcyB0aGUgY29tbWFuZCwgZmluZHMKLSAgICBhbGwgdGhlIHJlbGF0ZWQgc3VibW9kZXNtb2RlcywgcGVybXV0ZXMgYWxsIHRoZSBjb21tYW5kcwotICAgIGluIHRoZSBzdWJtb2RlLCB0aGVuIGEgcmVjdXJzaXZlIGNhbGwgdG8gYW55IHN1Ym1vZGVzCi0gICAgZm91bmQgd2l0aGluIHRoaXMgb25lLgotCi0gICAgQHBhcmFtIHN1Ym1vZGVfY29tbWFuZCBjb21tYW5kIGRpY3Rpb25hcnkgb2YgdGhlIHN1Ym1vZGUgY29tbWFuZC4KLSAgICAgICAgQ2FuIGJlIHNldCB0byBOb25lIGFzIGFuIGluZGljYXRpb24gb2YgInJvb3QiCi0KLSAgICBAcGFyYW0gcXVhbGlmeSBib29sZWFuLCBkZXNjcmliZXMgd2hldGhlciB0byBnZW5lcmF0ZSAicGVybXV0ZSIKLSAgICAgICAgb3V0cHV0IG9yICJxdWFsaWZ5IiBvdXRwdXQuICBQZXJtdXRlIG91dHB1dCBpcyBhIGh1bWFuIHJlYWRhYmxlCi0gICAgICAgIGNvbW1hbmQgcGVybXV0YXRpb24sIHdoaWxlICJxdWFsaWZ5IiBpcyBpbnRlbmRlZCBmb3Igc2NyaXB0IGJ1aWxkaW5nCi0KLSAgICAiIiIKLSAgICBwZXJtdXRlZCA9IFtdCi0gICAgcGVybXV0ZV9zdWJtb2RlcyA9IFtdCi0KLSAgICBpZiBzdWJtb2RlX2NvbW1hbmQgPT0gTm9uZToKLSAgICAgICAgbW9kZSA9ICdsb2dpbicKLSAgICBlbHNlOgotICAgICAgICAjIGZpcnN0LCB0aGUgc3VibW9kZS4gIFRoZXJlIG91Z2h0IHRvIGJlIG9ubHkgb25lIHBlcm11dGF0aW9uLgotICAgICAgICBwZXJtdXRlID0gQ29tbWFuZFBlcm11dG9yKHF1YWxpZnkpCi0gICAgICAgIHBlcm11dGVkLmFwcGVuZChwZXJtdXRlLnBlcm11dGVfY29tbWFuZChzdWJtb2RlX2NvbW1hbmQpKQotICAgICAgICBtb2RlID0gc3VibW9kZV9jb21tYW5kLmdldCgnc3VibW9kZS1uYW1lJykKLSAgICAgICAgcHJpbnQgJ1NVQk1PREUgUEVSTVVURScsIHN1Ym1vZGVfY29tbWFuZFsnc2VsZiddLCAnTU9ERScsIG1vZGUKLQotICAgIGRlZiBzdWJtb2RlX21hdGNoKHdhbnQsIGNtZCk6Ci0gICAgICAgIGlmIHR5cGUoY21kKSA9PSBzdHI6Ci0gICAgICAgICAgICBjbWQgPSBbY21kXQotICAgICAgICBpZiB3YW50LnN0YXJ0c3dpdGgoJ2NvbmZpZycpOgotICAgICAgICAgICAgZm9yIGMgaW4gY21kOgotICAgICAgICAgICAgICAgIGlmIGMuZW5kc3dpdGgoJyonKToKLSAgICAgICAgICAgICAgICAgICAgYyA9IGNbOi0xXQotICAgICAgICAgICAgICAgIGlmIGMgPT0gJ2NvbmZpZy0nOgotICAgICAgICAgICAgICAgICAgICBjID0gJ2NvbmZpZycKLSAgICAgICAgICAgICAgICBpZiB3YW50ID09IGM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBmb3IgYyBpbiBjbWQ6Ci0gICAgICAgICAgICBpZiB3YW50ID09IGM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAjIHRoZXJlJ3Mgbm8gY29tbWFuZCB0byBlbnRlciBsb2dpbi4KLSAgICBmb3IgYyBpbiBjb21tYW5kX3JlZ2lzdHJ5OgotICAgICAgICBpZiBzdWJtb2RlX21hdGNoKG1vZGUsIGNbJ21vZGUnXSk6Ci0gICAgICAgICAgICAjIG5vIHN1Ym1vZGUgY29tbWFuZHMuCi0gICAgICAgICAgICBpZiBjLmdldCgnY29tbWFuZC10eXBlJykgPT0gJ2NvbmZpZy1zdWJtb2RlJzoKLSAgICAgICAgICAgICAgICBwcmludCAnU1VCTU9ERSBQT1NUUE9ORScsIGNbJ3NlbGYnXQotICAgICAgICAgICAgICAgIHBlcm11dGVfc3VibW9kZXMuYXBwZW5kKGMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBlcm11dGUgPSBDb21tYW5kUGVybXV0b3IocXVhbGlmeSkKLSAgICAgICAgICAgICAgICBwZXJtdXRlZC5hcHBlbmQocGVybXV0ZS5wZXJtdXRlX2NvbW1hbmQoYykpCi0KLSAgICAjIG5vdyBhbnkgc3VibW9kZXMgZm91bmQKLSAgICBmb3IgYyBpbiBwZXJtdXRlX3N1Ym1vZGVzOgotICAgICAgICBwZXJtdXRlZC5hcHBlbmQocGVybXV0ZV9zaW5nbGVfc3VibW9kZShjLCBxdWFsaWZ5KSkKLQotICAgIHJldHVybiAnXG4nLmpvaW4ocGVybXV0ZWQpCi0KLQotZGVmIHBlcm11dGVfY29tbWFuZCh3b3JkcywgcXVhbGlmeSk6Ci0gICAgIiIiCi0gICAgUGVybXV0ZSBhbGwgdGhlIGNvbW1hbmRzICh3aXRoIG5vIHBhcmFtZXRlcnMpLCBvciBhCi0gICAgc2lnbGUgY29tbWFuZC4gICBUaGUgY29tbWFuZCBpcyBuYW1lZCB2aWEgdGhlIG5hbWUKLSAgICBvZiB0aGUgZGljdGlvbmFyeSwgZm9yIGV4YW1wbGU6IAotICAgIHBlcm11dGUgQ09NTUFORF9ERVNDUklQVElPTgotICAgICIiIgotICAgIGlmIGxlbih3b3JkcykgPT0gMDoKLSAgICAgICAgcmV0dXJuIHBlcm11dGVfc2luZ2xlX3N1Ym1vZGUoTm9uZSwgcXVhbGlmeSkKLSAgICBlbHNlOgotICAgICAgICBwZXJtdXRlID0gQ29tbWFuZFBlcm11dG9yKHF1YWxpZnkpCi0gICAgICAgIHJldHVybiBwZXJtdXRlLmhhbmRsZV9jb21tYW5kKHdvcmRzKQotCi0KLWRlZiBfaXNfc3RyaW5nKGFyZyk6Ci0gICAgIiIiCi0gICAgUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgYXJndW1lbnQgaXMgYSBzdHJpbmcgKGVpdGhlciBhICJzdHIiIG9yICJ1bmljb2RlIikKLSAgICAiIiIKLSAgICByZXR1cm4gaXNpbnN0YW5jZShhcmcsIHR5cGVzLlN0cmluZ1R5cGVzKQotCi0KLWRlZiBfaXNfbGlzdChhcmcpOgotICAgICIiIgotICAgIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGFyZ3VtZW50IGlzIGEgbGlzdC4gVGhpcyBtZWFucyB0aGF0IGl0J3MgYW4KLSAgICBpbnN0YW5jZSBvZiBhIHNlcXVlbmNlLCBidXQgbm90IGluY2x1ZGluZyB0aGUgc3RyaW5nIHR5cGVzCi0gICAgIiIiCi0gICAgcmV0dXJuIGlzaW5zdGFuY2UoYXJnLCBjb2xsZWN0aW9ucy5TZXF1ZW5jZSkgYW5kIG5vdCBfaXNfc3RyaW5nKGFyZykKLQotCi1kZWYgX2xvb2t1cF9pbl9zY29wZXMobmFtZSwgc2NvcGVzLCBkZWZhdWx0PU5vbmUpOgotICAgICIiIgotICAgIExvb2sgdXAgdGhlIGdpdmVuIG5hbWUgaW4gdGhlIGdpdmVuIGxpc3Qgb2Ygc2NvcGVzLgotICAgIFJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgaWYgdGhlIG5hbWUgaXMgbm90IGRlZmluZWQgaW4gYW55IG9mIHRoZSBzY29wZXMuCi0gICAgIiIiCi0gICAgYXNzZXJ0IG5hbWUKLSAgICBhc3NlcnQgc2NvcGVzIGlzIG5vdCBOb25lCi0gICAgCi0gICAgIyBXZSBpdGVyYXRlIG92ZXIgdGhlIGl0ZW1zIGluIHRoZSBzY29wZSAocmF0aGVyIHRoYW4gdXNpbmcgJ2dldCcpCi0gICAgIyBzbyB3ZSBjYW4gZG8gYSBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cC4KLSAgICBuYW1lX2xvd2VyID0gbmFtZS5sb3dlcigpCi0gICAgZm9yIHNjb3BlIGluIHNjb3BlczoKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2NvcGUuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIGtleS5sb3dlcigpID09IG5hbWVfbG93ZXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCi0gICAgcmV0dXJuIGRlZmF1bHQKLQotCi1kZWYgX2NhbGxfcHJvYyhwcm9jX2Rlc2NyaXB0b3IsIHByb2NfcmVnaXN0cnksIHNjb3BlcywgY29tbWFuZCk6Ci0gICAgYXNzZXJ0IHByb2NfZGVzY3JpcHRvciBpcyBub3QgTm9uZQotICAgIGFzc2VydCBwcm9jX3JlZ2lzdHJ5IGlzIG5vdCBOb25lCi0gICAgCi0gICAgaWYgaXNpbnN0YW5jZShwcm9jX2Rlc2NyaXB0b3IsIGNvbGxlY3Rpb25zLlNlcXVlbmNlKSBhbmQgbm90IF9pc19zdHJpbmcocHJvY19kZXNjcmlwdG9yKToKLSAgICAgICAgcHJvY19kZXNjcmlwdG9ycyA9IHByb2NfZGVzY3JpcHRvcgotICAgIGVsc2U6Ci0gICAgICAgIHByb2NfZGVzY3JpcHRvcnMgPSAocHJvY19kZXNjcmlwdG9yLCkKLSAgICAKLSAgICBjb21iaW5lZF9yZXN1bHQgPSBOb25lCi0gICAgCi0gICAgc2F2ZWRfc2NvcGVzID0gc2NvcGVzCi0gICAgCi0gICAgZm9yIHByb2NfZGVzY3JpcHRvciBpbiBwcm9jX2Rlc2NyaXB0b3JzOgotICAgICAgICBhcmdzX2Rlc2NyaXB0b3IgPSBOb25lCi0gICAgICAgIHNjb3BlcyA9IHNhdmVkX3Njb3BlcwotICAgICAgICBpZiBpc2luc3RhbmNlKHByb2NfZGVzY3JpcHRvciwgY29sbGVjdGlvbnMuTWFwcGluZyk6Ci0gICAgICAgICAgICAjIExvb2sgdXAgdGhlIHByb2MgaW4gdGhlIHNwZWNpZmllZCByZWdpc3RyeQotICAgICAgICAgICAgcHJvY19uYW1lID0gcHJvY19kZXNjcmlwdG9yLmdldCgncHJvYycpCi0gICAgICAgICAgICBpZiBub3QgcHJvY19uYW1lOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCdVbnNwZWNpZmllZCBwcm9jIG5hbWU6ICcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCkKLSAgICAgICAgICAgIGlmIHByb2NfZGVzY3JpcHRvci5nZXQoJ2FyZ3MnKSBvciBwcm9jX2Rlc2NyaXB0b3IuZ2V0KCdrd2FyZ3MnKToKLSAgICAgICAgICAgICAgICBhcmdzX2Rlc2NyaXB0b3IgPSBwcm9jX2Rlc2NyaXB0b3IKLSAgICAgICAgICAgIHNjb3BlcyA9IFtwcm9jX2Rlc2NyaXB0b3JdICsgc2NvcGVzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcm9jX25hbWUgPSBwcm9jX2Rlc2NyaXB0b3IKLSAgICAKLSAgICAgICAgIyBQdXNoIGFuIGVtcHR5IHNjb3BlIG9uIHRoZSBzY29wZSBzdGFjayB0byBob2xkIGEgdmFyaWFibGUgZm9yIHRoZSBzY29wZXMKLSAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgY2xlYW5lZCB1cCB3aGVuIHdlIGNoYW5nZSB0aGUgY2FsbGluZyBjb252ZW50aW9ucwotICAgICAgICAjIGZvciBwcm9jcy4KLSAgICAgICAgc2NvcGVzID0gW3t9XSArIHNjb3BlcwotICAgICAgICBzY29wZXNbMF1bJ3Njb3BlcyddID0gc2NvcGVzCi0gICAgICAgIAotICAgICAgICBwcm9jX2FuZF9hcmcgPSBwcm9jX3JlZ2lzdHJ5LmdldChwcm9jX25hbWUpCi0gICAgICAgIGlmIG5vdCBwcm9jX2FuZF9hcmc6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kRGVzY3JpcHRpb25FcnJvcignVW5rbm93biBwcm9jIG5hbWU6ICVzJyAlIHByb2NfbmFtZSwgY29tbWFuZCkKLSAgICAgICAgcHJvYywgZGVmYXVsdF9hcmdzX2Rlc2NyaXB0b3IgPSBwcm9jX2FuZF9hcmcKLSAgICAgICAgCi0gICAgICAgIGlmIG5vdCBhcmdzX2Rlc2NyaXB0b3I6Ci0gICAgICAgICAgICBhcmdzX2Rlc2NyaXB0b3IgPSBkZWZhdWx0X2FyZ3NfZGVzY3JpcHRvcgotICAgICAgICAKLSAgICAgICAgY29udmVydGVkX2FyZ3MgPSBbXQotICAgICAgICBjb252ZXJ0ZWRfa3dhcmdzID0ge30KLSAgICAgICAgCi0gICAgICAgICMgQ29udmVydCB0aGUgcG9zaXRpb25hbCBhcmdzCi0gICAgICAgIGFyZ3MgPSBfZ2V0X2FyZ3MoYXJnc19kZXNjcmlwdG9yKQotICAgICAgICBpZiBhcmdzOgotICAgICAgICAgICAgZm9yIGFyZyBpbiBhcmdzOgotICAgICAgICAgICAgICAgIGlmIF9pc19zdHJpbmcoYXJnKSBhbmQgbGVuKGFyZykgPiAxIGFuZCBhcmdbMF0gPT0gJyQnOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gYXJnWzE6XQotICAgICAgICAgICAgICAgICAgICBmb3Igc2NvcGUgaW4gc2NvcGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpbiBzY29wZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNjb3BlW25hbWVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IERpc2FibGluZyB0cmVhdGluZyBhcmdzIHRoYXQgY2FuJ3QgYmUgcmVzb2x2ZWQgYXMgZXJyb3JzLCBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHRoZXkgY2FuIGluc3RlYWQgYmUgaW50ZXJwcmV0ZWQgYXMganVzdCB1c2luZyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIAotICAgICAgICAgICAgICAgICAgICAgICAgI3JhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCdJbnZhbGlkIHByb2MgYXJndW1lbnQ6ICVzICcgJQotICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgY29tbWFuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgY29udmVydGVkX2FyZ3MuYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgICAgIAotICAgICAgICAjIENvbnZlcnQgdGhlIGtleXdvcmQgYXJncwotICAgICAgICBrd2FyZ3MgPSBhcmdzX2Rlc2NyaXB0b3IuZ2V0KCdrd2FyZ3MnKQotICAgICAgICBpZiBrd2FyZ3M6Ci0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBrd2FyZ3MuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgaWYgX2lzX3N0cmluZyh2YWx1ZSkgYW5kIGxlbih2YWx1ZSkgPiAxIGFuZCB2YWx1ZVswXSA9PSAnJCc6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSB2YWx1ZVsxOl0KLSAgICAgICAgICAgICAgICAgICAgZm9yIHNjb3BlIGluIHNjb3BlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gc2NvcGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzY29wZVtuYW1lXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBEb24ndCB0cmVhdCBhcmdzIHRoYXQgY2FuJ3QgYmUgcmVzb2x2ZWQgYXMgZXJyb3JzLCBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHRoZXkgY2FuIGluc3RlYWQgYmUgaW50ZXJwcmV0ZWQgYXMganVzdCB1c2luZyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIAotICAgICAgICAgICAgICAgICAgICAgICAgI3JhaXNlIGVycm9yLkNvbW1hbmREZXNjcmlwdGlvbkVycm9yKCdJbnZhbGlkIHByb2MgYXJndW1lbnQ6ICVzICcgJQotICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgY29tbWFuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgY29udmVydGVkX2t3YXJnc1trZXldID0gdmFsdWUKLSAgICAgICAgCi0gICAgICAgICMgQ2FsbCB0aGUgcHJvYwotICAgICAgICAjIHB5bGludDogZGlzYWJsZT1XMDE0MgotICAgICAgICByZXN1bHQgPSBwcm9jKCpjb252ZXJ0ZWRfYXJncywgKipjb252ZXJ0ZWRfa3dhcmdzKQotCi0gICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGNvbWJpbmVkX3Jlc3VsdCA9IGNvbWJpbmVkX3Jlc3VsdCArIHJlc3VsdCBpZiBjb21iaW5lZF9yZXN1bHQgZWxzZSByZXN1bHQKLSAgICAgICAgICAgIAotICAgIHJldHVybiBjb21iaW5lZF9yZXN1bHQKLQotCi1kZWYgX2FkZF9hcHBsaWNhYmxlX21vZGVzKGNvbW1hbmQsIG1vZGVfZGljdCk6Ci0gICAgIiIiCi0gICAgSGVscGVyIGZ1bmN0aW9uIGZvciBfZ2V0X2FwcGxpY2FibGVfbW9kZXMgdG8gYWRkIGFueSBtb2RlcyBmb3IgdGhpcyBjb21tYW5kCi0gICAgIiIiCi0gICAgZmVhdHVyZSA9IGNvbW1hbmQuZ2V0KCdmZWF0dXJlJykKLSAgICBpZiBmZWF0dXJlOgotICAgICAgICBpZiBub3Qgc2Ruc2guZmVhdHVyZV9lbmFibGVkKGZlYXR1cmUpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICBtb2RlID0gY29tbWFuZC5nZXQoJ21vZGUnKQotICAgIGlmIG1vZGU6Ci0gICAgICAgIGlmIHR5cGUobW9kZSkgPT0gbGlzdDoKLSAgICAgICAgICAgIGZvciBtIGluIG1vZGU6Ci0gICAgICAgICAgICAgICAgbW9kZV9kaWN0W21dID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbW9kZV9kaWN0W21vZGVdID0gTm9uZQotCi0KLWRlZiBfZ2V0X2FwcGxpY2FibGVfbW9kZXMoY29tbWFuZCk6Ci0gICAgIiIiCi0gICAgUmV0dXJucyBhIGxpc3Qgb2YgYWxsIG9mIHRoZSBtb2RlcyB0aGF0IGFyZSBzcGVjaWZpZWQgZm9yIHRoaXMgY29tbWFuZAotICAgICIiIgotICAgIG1vZGVfZGljdCA9IHt9Ci0gICAgX2FkZF9hcHBsaWNhYmxlX21vZGVzKGNvbW1hbmQsIG1vZGVfZGljdCkKLSAgICByZXR1cm4gbW9kZV9kaWN0LmtleXMoKQotCi0KLWRlZiBfZXhhY3RfbW9kZV9tYXRjaChjdXJyZW50X21vZGUsIGNvbW1hbmRfbW9kZXMpOgotICAgICIiIgotICAgIFJldHVybiBUcnVlIHdoZW4gdGhpcyBjb21tYW5kX21vZGUgaXMgYW4gZXhhY3QgbWF0Y2gKLSAgICBmb3IgdGhpcyBjdXJyZW50IG1vZGUgKHVzZWQgdG8gcGFydGl0aW9uIGxpc3Qgb2YgY29tbWFuZHMKLSAgICBpbnRvIHR3byBncm91cHMsIG9uZSBleGFjdCBsZXZlbCwgYW5kIGZvciBmb3IgcmVsYXRlZCBtb2RlCi0gICAgbWF0Y2hlcykKLSAgICAiIiIKLSAgICBpZiBub3QgdHlwZShjb21tYW5kX21vZGVzKSA9PSBsaXN0OgotICAgICAgICBjb21tYW5kX21vZGVzID0gW2NvbW1hbmRfbW9kZXNdCi0gICAgZm9yIG1vZGUgaW4gY29tbWFuZF9tb2RlczoKLSAgICAgICAgaWYgbW9kZSA9PSBjdXJyZW50X21vZGU6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBpZiBtb2RlLmVuZHN3aXRoKCcqJykgYW5kIG1vZGVbOi0xXSA9PSBjdXJyZW50X21vZGU6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfbWF0Y2hfY3VycmVudF9tb2Rlcyhjb21tYW5kLCBjdXJyZW50X21vZGUsIG1vZGVzKToKLSAgICAiIiIKLSAgICBFdmVuIHdoZW4gdGhlIGN1cnJlbnQgbW9kZSBpc24ndCBpbiB0aGUgbGlzdCBvZiBtb2RlcywKLSAgICB0aGVyZSdzIGEgZmV3IG1vZGVzIGluIHRoZSBtb2RlIGxpc3Qgd2hpY2ggYXJlIGludGVuZGVkIHRvCi0gICAgYmUgYSBjb2xsZWN0aW9uIG9mIG1vZGVzLCBlZzogImNvbmZpZyoiLCBhbmQgImNvbmZpZy0qIiwKLSAgICBGb3IgYW55IG1vZGUgd2hpY2ggZW5kcyBpbiBhbiAoJyonKSwgdGhlIGN1cnJlbnQgbW9kZQotICAgIHdpbGwgbWF0Y2ggd2hlbiB0aGUgY3VycmVudCBtb2RlIGlzIHByZWZpeCBvZiB0aGUgbW9kZQotICAgICh3aXRob3V0IHRoZSBsYXN0ICcqJyBjaGFyYWN0ZXIpCi0gICAgJ2NvbmZpZyonIGlzIGludGVuZGVkIHRvIG1hdGNoIGFueSBjb25maWcgbW9kZSwgd2hpbGUKLSAgICAnY29uZmlnLSonIGlzIGludGVuZGVkIHRvIG1hdGNoIGFueSBjb25maWcgc3VibW9kZS4gIAotICAgICIiIgotICAgIGlmIGN1cnJlbnRfbW9kZSBpbiBtb2RlczoKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICAjCi0gICAgIyBpZiB0aGUgbW9kZXMgaXMgZW5hYmxlLCB0aGlzIHdvcmtzIGV2ZXJ5d2hlcmUKLSAgICAjCi0gICAgaWYgJ2xvZ2luJyBpbiBtb2RlczoKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICAjCi0gICAgIyBpZiB0aGUgbW9kZXMgaXMgbG9naW4sIGFuZCB0aGUgbW9kZSBpcyBhbnl0aGluZyBidXQgbG9naW4sCi0gICAgIyB0aGVuIHRoaXMgaXMgdHJ1ZQotICAgICMKLSAgICBpZiAnZW5hYmxlJyBpbiBtb2RlcyBhbmQgY3VycmVudF9tb2RlICE9ICdsb2dpbic6Ci0gICAgICAgIHJldHVybiBUcnVlCi0gICAgZm9yIG1vZGUgaW4gbW9kZXM6Ci0gICAgICAgIGlmIG1vZGUuZW5kc3dpdGgoJyonKSBhbmQgY3VycmVudF9tb2RlLnN0YXJ0c3dpdGgobW9kZVs6LTFdKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgI2lmIGNvbW1hbmQuZ2V0KCdjb21tYW5kLXR5cGUnKSA9PSAnY29uZmlnLXN1Ym1vZGUnOgotICAgICMgICAgZm9yIG1vZGUgaW4gbW9kZXM6Ci0gICAgIyAgICAgICAgaWYgY3VycmVudF9tb2RlLnN0YXJ0c3dpdGgobW9kZSk6Ci0gICAgIyAgICAgICAgICAgIHByaW50ICJfbWF0Y2hfY3VycmVudF9tb2RlczogY3VycmVudCBjb21tYW5kIHR5cGUgaXMgY29uZmlnLXN1Ym1vZGUiLGN1cnJlbnRfbW9kZSxtb2RlCi0gICAgIyAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIAotICAgIHJldHVybiBGYWxzZQotICAgIAotCi1kZWYgX2dldF9jb21tYW5kX3RpdGxlKGNvbW1hbmQpOgotICAgIGlmIHR5cGUoY29tbWFuZFsnbmFtZSddKSA9PSBzdHI6Ci0gICAgICAgIHJldHVybiBjb21tYW5kWyduYW1lJ10KLSAgICBpZiB0eXBlKGNvbW1hbmRbJ25hbWUnXSkgPT0gZGljdDoKLSAgICAgICAgcmV0dXJuIGNvbW1hbmRbJ25hbWUnXVsndGl0bGUnXQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ29tbWFuZCAlcyBoYXMgdW5rbm93biB0aXRsZSIgJSBjb21tYW5kWyduYW1lJ10pCi0KLQotZGVmIF9sb29rdXBfY29tbWFuZF9jYW5kaWRhdGVzKGNvbW1hbmRfcHJlZml4LCBjb21tYW5kX2xpc3QpOgotICAgICIiIgotICAgIFJldHVybnMgdGhlIGxpc3Qgb2YgY29tbWFuZCBjYW5kaWRhdGVzIGZyb20gdGhlIGdpdmVuIGNvbW1hbmQgbGlzdC4KLSAgICBBIGNhbmRpZGF0ZSBtdXN0IGhhdmUgYSAnbW9kZScgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBjdXJyZW50IG1vZGUsCi0gICAgYW5kIGl0cyBuYW1lIG11c3QgYmVnaW4gd2l0aCB0aGUgZ2l2ZW4gY29tbWFuZCBwcmVmaXguCi0gICAgIiIiCi0gICAgY2FuZGlkYXRlcyA9IFtdCi0gICAgY3VycmVudF9tb2RlID0gc2Ruc2guY3VycmVudF9tb2RlKCkKLSAgICB0cnk6Ci0gICAgICAgIGZvciBjb21tYW5kIGluIGNvbW1hbmRfbGlzdDoKLSAgICAgICAgICAgIG1vZGVzID0gX2dldF9hcHBsaWNhYmxlX21vZGVzKGNvbW1hbmQpCi0gICAgICAgICAgICBpZiBfbWF0Y2hfY3VycmVudF9tb2Rlcyhjb21tYW5kLCBjdXJyZW50X21vZGUsIG1vZGVzKToKLSAgICAgICAgICAgICAgICBuYW1lID0gY29tbWFuZFsnbmFtZSddCi0gICAgICAgICAgICAgICAgaWYgKHR5cGUobmFtZSkgPT0gc3RyIGFuZAotICAgICAgICAgICAgICAgICAgICBuYW1lLnN0YXJ0c3dpdGgoY29tbWFuZF9wcmVmaXgubG93ZXIoKSkpOgotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChjb21tYW5kKQotICAgICAgICAgICAgICAgICMgc2hvdWxkIGNoZWNrIHRoZSB0eXBlIG9mIGNvbW1hbmRfcHJlZml4LAotICAgICAgICAgICAgICAgICMgYW5kIGZvciBzdHIsIGFtZS5tYXRjaChjb21tYW5kX3ByZWZpeCk6Ci0gICAgICAgICAgICAgICAgaWYgdHlwZShuYW1lKSA9PSBkaWN0OgotICAgICAgICAgICAgICAgICAgICBpZiAncmUnIG5vdCBpbiBuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZFsnbmFtZSddWydyZSddID0gcmUuY29tcGlsZShuYW1lWydwYXR0ZXJuJ10pCi0gICAgICAgICAgICAgICAgICAgIGlmIG5hbWVbJ3JlJ10ubWF0Y2goY29tbWFuZF9wcmVmaXgpOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQoY29tbWFuZCkKLSAgICAgICAgICAgICAgICBpZiB0eXBlKG5hbWUpID09IGRpY3QgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVbJ3JlJ10oY29tbWFuZF9wcmVmaXgpOgotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChjb21tYW5kKQotICAgICAgICAgICAgICAgICAgICAKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBfZToKLSAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZERlc2NyaXB0aW9uRXJyb3IoJ01pc3NpbmcgbW9kZSBvciBuYW1lOiAnLCBjb21tYW5kKQotICAgIAotICAgIHJldHVybiBjYW5kaWRhdGVzCi0KLWRlZiBkb19jb21tYW5kKHdvcmRzKToKLSAgICBleGVjdXRvciA9IENvbW1hbmRFeGVjdXRvcigpCi0gICAgcmVzdWx0ID0gZXhlY3V0b3IuaGFuZGxlX2NvbW1hbmQod29yZHMpCi0gICAgcmV0dXJuIHJlc3VsdAotCi1kZWYgaW5pdF9jb21tYW5kKGJzLCBtb2RpKToKLSAgICAjIEZJWE1FIEhBQ0s6IHNkbnNoIGdsb2JhbCB0byBhY2Nlc3MgdG9wLWxldmVsIENMSSBvYmplY3QKLSAgICBnbG9iYWwgc2Ruc2gsIG1pCi0gICAgc2Ruc2ggPSBicwotICAgIG1pID0gbW9kaQotCi0gICAgY19hY3Rpb25zLmluaXRfYWN0aW9ucyhicywgbW9kaSkKLSAgICBjX2RhdGFfaGFuZGxlcnMuaW5pdF9kYXRhX2hhbmRsZXJzKGJzLCBtb2RpKQotICAgIGNfY29tcGxldGlvbnMuaW5pdF9jb21wbGV0aW9ucyhicywgbW9kaSkKLSAgICBjX3ZhbGlkYXRpb25zLmluaXRfdmFsaWRhdGlvbnMoYnMsIG1vZGkpCi0KLQotICAgIGFkZF9jb21tYW5kX3R5cGUoJ2NvbmZpZycsIHsKLSAgICAgICAgJ2FjdGlvbic6ICd3cml0ZS1maWVsZHMnLAotICAgICAgICAnbm8tYWN0aW9uJzogJ3Jlc2V0LWZpZWxkcycKLSAgICB9KQotCi0gICAgYWRkX2NvbW1hbmRfdHlwZSgnY29uZmlnLW9iamVjdCcsIHsKLSAgICAgICAgJ2FjdGlvbic6ICd3cml0ZS1vYmplY3QnLAotICAgICAgICAnbm8tYWN0aW9uJzogJ2RlbGV0ZS1vYmplY3RzJywKLSAgICB9KQotCi0gICAgYWRkX2NvbW1hbmRfdHlwZSgnY29uZmlnLXN1Ym1vZGUnLCB7Ci0gICAgICAgICdhY3Rpb24nOiAncHVzaC1tb2RlLXN0YWNrJywKLSAgICAgICAgIyduby1hY3Rpb24nOiAnZGVsZXRlLWNoaWxkLW9iamVjdHMnLAotICAgICAgICAnbm8tYWN0aW9uJzogJ2RlbGV0ZS1vYmplY3RzJywKLSAgICB9KQotCi0gICAgYWRkX2NvbW1hbmRfdHlwZSgnY3JlYXRlLXR1bm5lbCcsIHsKLSAgICAgICAgJ2FjdGlvbic6ICdjcmVhdGUtdHVubmVsJwotICAgIH0pCi0gICAgCi0gICAgYWRkX2NvbW1hbmRfdHlwZSgncmVtb3ZlLXR1bm5lbCcsIHsKLSAgICAgICAgJ2FjdGlvbic6ICdyZW1vdmUtdHVubmVsJwotICAgIH0pCi0gICAgCi0gICAgYWRkX2NvbW1hbmRfdHlwZSgnY3JlYXRlLXBvbGljeScsIHsKLSAgICAgICAgJ2FjdGlvbic6ICdjcmVhdGUtcG9saWN5JwotICAgIH0pCi0gICAgCi0gICAgYWRkX2NvbW1hbmRfdHlwZSgncmVtb3ZlLXBvbGljeScsIHsKLSAgICAgICAgJ2FjdGlvbic6ICdyZW1vdmUtcG9saWN5JwotICAgIH0pCi0gICAgCi0gICAgYWRkX2NvbW1hbmRfdHlwZSgnZGlzcGxheS10YWJsZScsIHsKLSAgICAgICAgJ2FjdGlvbic6ICdkaXNwbGF5LXRhYmxlJwotICAgIH0pCi0gICAgCi0gICAgYWRkX2NvbW1hbmRfdHlwZSgnZGlzcGxheS1yZXN0JywgewotICAgICAgICAnYWN0aW9uJzogJ2Rpc3BsYXktcmVzdCcKLSAgICB9KQotICAgIAotICAgIGFkZF9jb21tYW5kX3R5cGUoJ21hbmFnZS1hbGlhcycsIHsKLSAgICAgICAgJ2FjdGlvbicgICAgOiAnY3JlYXRlLWFsaWFzJywKLSAgICAgICAgJ25vLWFjdGlvbicgOiAnZGVsZXRlLWFsaWFzJywKLSAgICB9KQotCi0gICAgYWRkX2NvbW1hbmRfdHlwZSgnbWFuYWdlLXRhZycsIHsKLSAgICAgICAgJ2FjdGlvbicgICAgOiAnY3JlYXRlLXRhZycsCi0gICAgICAgICduby1hY3Rpb24nIDogJ2RlbGV0ZS10YWcnLAotICAgIH0pCi0KLSAgICBhZGRfY29tbWFuZF90eXBlKCd1cGRhdGUtY29uZmlnJywgewotICAgICAgICAnYWN0aW9uJyAgICA6ICd1cGRhdGUtY29uZmlnJywKLSAgICAgICAgJ25vLWFjdGlvbicgOiAndXBkYXRlLWNvbmZpZycsCi0gICAgfSkKLQotICAgICMgSW5pdGlhbGl6ZSB0eXBlZGVmcwotICAgIGFkZF90eXBlZGVmKHsKLSAgICAgICAgJ25hbWUnOiAnc3RyaW5nJywKLSAgICAgICAgJ3ZhbGlkYXRpb24nOiAndmFsaWRhdGUtc3RyaW5nJwotICAgIH0pCi0gICAgCi0gICAgYWRkX3R5cGVkZWYoewotICAgICAgICAnbmFtZSc6ICdpbnRlZ2VyJywKLSAgICAgICAgJ3ZhbGlkYXRpb24nOiAndmFsaWRhdGUtaW50ZWdlcicKLSAgICB9KQotCi0gICAgYWRkX3R5cGVkZWYoewotICAgICAgICAnbmFtZSc6ICdoZXgtb3ItZGVjaW1hbC1pbnRlZ2VyJywKLSAgICAgICAgJ3ZhbGlkYXRpb24nOiAndmFsaWRhdGUtaGV4LW9yLWRlYy1pbnRlZ2VyJwotICAgIH0pCi0KLSAgICBhZGRfdHlwZWRlZih7Ci0gICAgICAgICduYW1lJzogJ2RhdGUnLAotICAgICAgICAndmFsaWRhdGlvbic6ICd2YWxpZGF0ZS1kYXRlJwotICAgIH0pCi0KLSAgICBhZGRfdHlwZWRlZih7Ci0gICAgICAgICduYW1lJzogJ2R1cmF0aW9uJywKLSAgICAgICAgJ3ZhbGlkYXRpb24nOiAndmFsaWRhdGUtZHVyYXRpb24nCi0gICAgfSkKLQotICAgIGFkZF90eXBlZGVmKHsKLSAgICAgICAgJ25hbWUnOiAnZW51bScsCi0gICAgICAgICd2YWxpZGF0aW9uJzogJ3ZhbGlkYXRlLWVudW0nCi0gICAgfSkKLQotICAgIGFkZF90eXBlZGVmKHsKLSAgICAgICAgJ25hbWUnICAgICAgIDogJ21hYy1hZGRyZXNzJywKLSAgICAgICAgJ2hlbHAtbmFtZScgIDogJ01BQyBBZGRyZXNzJywKLSAgICAgICAgJ2Jhc2UtdHlwZScgIDogJ3N0cmluZycsCi0gICAgICAgICd2YWxpZGF0aW9uJyA6ICd2YWxpZGF0ZS1tYWMtYWRkcmVzcycsCi0gICAgfSkKLSAgICAKLSAgICBhZGRfdHlwZWRlZih7Ci0gICAgICAgICduYW1lJyAgICAgICA6ICdob3N0JywKLSAgICAgICAgJ2hlbHAtbmFtZScgIDogJ0hvc3QgQWxpYXMgb3IgTUFDIEFkZHJlc3MnLAotICAgICAgICAnYmFzZS10eXBlJyAgOiAnc3RyaW5nJywKLSAgICAgICAgJ3ZhbGlkYXRpb24nIDogJ3ZhbGlkYXRlLWhvc3QnLAotICAgIH0pCi0gICAgCi0gICAgYWRkX3R5cGVkZWYoewotICAgICAgICAnbmFtZScgICAgICAgOiAndmxhbicsCi0gICAgICAgICdoZWxwLW5hbWUnICA6ICdWbGFuJywKLSAgICAgICAgJ2Jhc2UtdHlwZScgIDogJ2ludGVnZXInLAotICAgICAgICAndmFsaWRhdGlvbicgOiAndmFsaWRhdGUtaW50ZWdlcicsCi0gICAgfSkKLQotICAgIGFkZF90eXBlZGVmKHsKLSAgICAgICAgJ25hbWUnICAgICAgIDogJ2xhYmVsJywKLSAgICAgICAgJ2hlbHAtbmFtZScgIDogJ1NlZ21lbnQgTGFiZWwnLAotICAgICAgICAnYmFzZS10eXBlJyAgOiAnaW50ZWdlcicsCi0gICAgICAgICd2YWxpZGF0aW9uJyA6ICd2YWxpZGF0ZS1pbnRlZ2VyJywKLSAgICB9KQotICAgIAotICAgIGFkZF90eXBlZGVmKHsKLSAgICAgICAgJ25hbWUnICAgICAgIDogJ2RwaWQnLAotICAgICAgICAnaGVscC1uYW1lJyAgOiAnc3dpdGNoIGlkICg4LWhleCBieXRlcyknLAotICAgICAgICAnYmFzZS10eXBlJyAgOiAnc3RyaW5nJywKLSAgICAgICAgJ3ZhbGlkYXRpb24nIDogJ3ZhbGlkYXRlLXN3aXRjaC1kcGlkJywKLSAgICB9KQotCi0gICAgYWRkX3R5cGVkZWYoewotICAgICAgICAnbmFtZScgICAgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgJ2hlbHAtbmFtZScgOiAnSVAgYWRkcmVzcyAoZG90dGVkIHF1YWQpJywKLSAgICAgICAgJ2Jhc2UtdHlwZScgOiAnc3RyaW5nJywKLSAgICAgICAgJ3BhdHRlcm4nICAgOiByJ14oKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcLil7M30oWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKSQnLAotICAgIH0pCi0gICAgCi0gICAgYWRkX3R5cGVkZWYoewotICAgICAgICAnbmFtZScgICAgICAgIDogJ2lwLWFkZHJlc3Mtbm90LW1hc2snLAotICAgICAgICAnaGVscC1uYW1lJyAgIDogJ0lQIEFkZHJlc3MnLAotICAgICAgICAnYmFzZS10eXBlJyAgIDogJ3N0cmluZycsCi0gICAgICAgICdwYXR0ZXJuJyAgICAgOiByJ14oXGR7MSwzfVwuKXszfVxkezEsM30kJywKLSAgICAgICAgJ3ZhbGlkYXRpb24nICA6ICd2YWxpZGF0ZS1pcC1hZGRyZXNzLW5vdC1tYXNrJwotICAgIH0pCi0gICAgCi0gICAgYWRkX3R5cGVkZWYoewotICAgICAgICAnbmFtZScgICAgICAgIDogJ2NpZHItcmFuZ2UnLAotICAgICAgICAnaGVscC1uYW1lJyAgIDogJ2NpZHIgcmFuZ2UgKGlwLWFkZHJlc3MvaW50KScsCi0gICAgICAgICdiYXNlLXR5cGUnICAgOiAnc3RyaW5nJywKLSAgICAgICAgJ3BhdHRlcm4nICAgICA6IHInXihcZHsxLDN9XC4pezN9XGR7MSwzfS9cZHsxLDJ9PyQnLAotICAgICAgICAndmFsaWRhdGlvbicgIDogJ3ZhbGlkYXRlLWNpZHItcmFuZ2UnLAotICAgIH0pCi0KLSAgICBhZGRfdHlwZWRlZih7Ci0gICAgICAgICduYW1lJyAgICAgICAgOiAnbmV0bWFzaycsCi0gICAgICAgICdoZWxwLW5hbWUnICAgOiAnbmV0bWFzayAoZWc6IDI1NS4yNTUuMjU1LjApJywKLSAgICAgICAgJ2Jhc2UtdHlwZScgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgJ3ZhbGlkYXRpb24nICA6ICd2YWxpZGF0ZS1uZXRtYXNrJwotICAgIH0pCi0gICAgCi0gICAgYWRkX3R5cGVkZWYoewotICAgICAgICAnbmFtZScgICAgICAgOiAnb2JqLXR5cGUnLAotICAgICAgICAnaGVscC1uYW1lJyAgOiAnY29uZmlndXJlZCBvYmplY3QnLAotICAgICAgICAnYmFzZS10eXBlJyAgOiAnc3RyaW5nJywKLSAgICAgICAgJ3ZhbGlkYXRpb24nIDogJ3ZhbGlkYXRlLWV4aXN0aW5nLW9iaicKLSAgICB9KQotCi0gICAgYWRkX3R5cGVkZWYoewotICAgICAgICAnbmFtZScgICAgICAgOiAnaW52ZXJzZS1uZXRtYXNrJywKLSAgICAgICAgJ2hlbHAtbmFtZScgIDogJ2ludmVyc2UgbmV0bWFzayAoZWc6IDAuMC4wLjI1NSknLAotICAgICAgICAnYmFzZS10eXBlJyAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICd2YWxpZGF0aW9uJyA6ICd2YWxpZGF0ZS1pbnZlcnNlLW5ldG1hc2snCi0gICAgfSkKLSAgICAKLSAgICBhZGRfdHlwZWRlZih7Ci0gICAgICAgICduYW1lJyAgICAgIDogJ2RvbWFpbi1uYW1lJywKLSAgICAgICAgJ2hlbHAtbmFtZScgOiAnRG9tYWluIG5hbWUnLAotICAgICAgICAjIFNpbXBsZSBkb21haW4gbmFtZSBjaGVja2luZy4KLSAgICAgICAgIyBBbGxvd3Mgc29tZSB0aGluZ3MgdGhhdCBhcmVuJ3QgdmFsaWQgZG9tYWluIG5hbWVzLCBidXQgZG9lc24ndAotICAgICAgICAjIGRpc2FsbG93IHRoaW5ncyBsaWt5IHB1bnljb2RlIGFuZCBmdWxseSBxdWFsaWZpZWQgZG9tYWluIG5hbWVzLgotICAgICAgICAncGF0dGVybicgICA6IHInXihbYS16QS1aMC05LV0rLj8pKyQnLAotICAgICAgICAnYmFzZS10eXBlJyA6ICdzdHJpbmcnCi0gICAgfSkKLQotICAgIGFkZF90eXBlZGVmKHsKLSAgICAgICAgJ25hbWUnOiAnaXAtYWRkcmVzcy1vci1kb21haW4tbmFtZScsCi0gICAgICAgICdoZWxwLW5hbWUnOiAnSVAgYWRkcmVzcyBvciBkb21haW4gbmFtZScsCi0gICAgICAgICdiYXNlLXR5cGUnOiAnc3RyaW5nJywKLSAgICAgICAgJ3BhdHRlcm4nOiAoCi0gICAgICAgICAgICByJ14oW2EtekEtWjAtOS1dKy4/KSskJywgIyBzaW1wbGUgZG9tYWluIG5hbWUKLSAgICAgICAgICAgIHInXihcZHsxLDN9XC4pezN9XGR7MSwzfSQnICMgSVAgYWRkcmVzcwotICAgICAgICApLAotICAgICAgICAjIGZvciBpcCBhZGRyZXNzZXMsIG91Z2h0IHRvIHZhbGlkYXRlIG5vbi1tYXNrIHZhbHVlcywgaWU6IDAuMC4wLjAsIDI1NS4yNTUuMjU1LjI1NQotICAgICAgICAjIG91Z2h0IHRvIGFsc28gdmFsaWRhdGUgaXAgYWRkcmVzc2VzIHdoaWNoIGFyZW4ndCBpcCBhZGRyZXNzLCB0aGUgZGhjcCAxNjkueCB2YWx1ZXMuCi0gICAgfSkKLSAgICAKLSAgICBhZGRfdHlwZWRlZih7Ci0gICAgICAgICduYW1lJyAgICAgICA6ICdyZXNvbHZhYmxlLWlwLWFkZHJlc3MnLAotICAgICAgICAnaGVscC1uYW1lJyAgOiAncmVzb2x2YWJsZSBpcCBhZGRyZXNzJywKLSAgICAgICAgJ2Jhc2UtdHlwZScgIDogJ3N0cmluZycsCi0gICAgICAgICdwYXR0ZXJuJyAgICA6ICgKLSAgICAgICAgICAgIHInXihbYS16QS1aMC05LV0rLj8pKyQnLCAjIHNpbXBsZSBkb21haW4gbmFtZQotICAgICAgICAgICAgcideKFxkezEsM31cLil7M31cZHsxLDN9JCcgIyBJUCBhZGRyZXNzCi0gICAgICAgICksCi0gICAgICAgICd2YWxpZGF0aW9uJyA6ICd2YWxpZGF0ZS1yZXNvbHZhYmxlLWlwLWFkZHJlc3MnLAotICAgIH0pCi0KLSAgICBhZGRfdHlwZWRlZih7Ci0gICAgICAgICduYW1lJzogJ2VuYWJsZS1kaXNhYmxlLWZsYWcnLAotICAgICAgICAnaGVscC1uYW1lJzogJ0VudGVyICJlbmFibGUiIG9yICJkaXNhYmxlIicsCi0gICAgICAgICdiYXNlLXR5cGUnOiAnZW51bScsCi0gICAgICAgICd2YWx1ZXMnOiAoJ2Rpc2FibGUnLCAnZW5hYmxlJyksCi0gICAgfSkKLQotICAgIGFkZF90eXBlZGVmKHsKLSAgICAgICAgJ25hbWUnICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAnaGVscC1uYW1lJyAgOiAnQWxwaGFiZXRpYyBjaGFyYWN0ZXIsIGZvbGxvd2VkIGJ5IGFscGhhbnVtZXJpY3MnLAotICAgICAgICAnYmFzZS10eXBlJyAgOiAnc3RyaW5nJywKLSAgICAgICAgJ3ZhbGlkYXRpb24nIDogJ3ZhbGlkYXRlLWlkZW50aWZpZXInLAotICAgIH0pCi0KLSAgICBhZGRfdHlwZWRlZih7Ci0gICAgICAgICduYW1lJyAgICAgICA6ICdjb25maWcnLAotICAgICAgICAnaGVscC1uYW1lJyAgOiAnbmFtZSBvZiBjb25maWcgZmlsZScsCi0gICAgICAgICdiYXNlLXR5cGUnICA6ICdzdHJpbmcnLAotICAgICAgICAndmFsaWRhdGlvbicgOiAndmFsaWRhdGUtY29uZmlnJywKLSAgICB9KQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RhdGEvb3VpLWFzY2lpLnR4dCBiL2NsaS9jbGkvZGF0YS9vdWktYXNjaWkudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4ZTIxMDA0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGF0YS9vdWktYXNjaWkudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOTUwOTIgKzAsMCBAQAotCi1PVUkJCQkJT3JnYW5pemF0aW9uCi1jb21wYW55X2lkCQkJT3JnYW5pemF0aW9uCi0JCQkJQWRkcmVzcwotCi0KLTAwLTAwLTAwICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDAgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQlNL1MgMTA1LTUwQwotCQkJCTgwMCBQSElMTElQUyBST0FECi0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMDEgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDAwMSAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCVpFUk9YIFNZU1RFTVMgSU5TVElUVVRFCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wMiAgIChoZXgpCQlYRVJPWCBDT1JQT1JBVElPTgotMDAwMDAyICAgICAoYmFzZSAxNikJCVhFUk9YIENPUlBPUkFUSU9OCi0JCQkJWEVST1ggU1lTVEVNUyBJTlNUSVRVVEUKLQkJCQlNL1MgMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRAotCQkJCVdFQlNURVIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTAzICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDMgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQlaRVJPWCBTWVNURU1TIElOU1RJVFVURQotCQkJCU0vUyAxMDUtNTBDRVcgQVZFTlVFIDgwMCBQSElMTElQUyBST0FECi0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMDQgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDAwNCAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCU9GRklDRSBTWVNURU1TIERJVklTSU9OCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQ0Ci0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMDUgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDAwNSAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCU9GRklDRSBTWVNURU1TIERJVklTSU9OCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wNiAgIChoZXgpCQlYRVJPWCBDT1JQT1JBVElPTgotMDAwMDA2ICAgICAoYmFzZSAxNikJCVhFUk9YIENPUlBPUkFUSU9OCi0JCQkJT0ZGSUNFIFNZU1RFTVMgRElWSVNJT04KLQkJCQlNL1MgMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRDQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wNyAgIChoZXgpCQlYRVJPWCBDT1JQT1JBVElPTgotMDAwMDA3ICAgICAoYmFzZSAxNikJCVhFUk9YIENPUlBPUkFUSU9OCi0JCQkJT0ZGSUNFIFNZU1RFTVMgRElWSVNJT04KLQkJCQlNL1MgMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRAotCQkJCVdFQlNURVIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTA4ICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDggICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQlPRkZJQ0UgU1lTVEVNUyBESVZJU0lPTgotCQkJCU0vUy8gMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRAotCQkJCVdFQlNURVIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTA5ICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDkgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQkxMzUwIEpFRkZFUlNPTiBST0FECi0JCQkJUk9DSEVTVEVSIE5ZIDE0NjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wQSAgIChoZXgpCQlPTVJPTiBUQVRFSVNJIEVMRUNUUk9OSUNTIENPLgotMDAwMDBBICAgICAoYmFzZSAxNikJCU9NUk9OIFRBVEVJU0kgRUxFQ1RST05JQ1MgQ08uCi0JCQkJU0VDVElPTiBORkYsIFNZU1RFTSBSJkQgTEFCUy4KLQkJCQlSRVNFQVJDSCAmIFRFQ0guIEFTU0VTU01OVCBESVYgU0hJTU9LQUlJCi0JCQkJS1lPVE8gNjE3IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDAtMEIgICAoaGV4KQkJTUFUUklYIENPUlBPUkFUSU9OCi0wMDAwMEIgICAgIChiYXNlIDE2KQkJTUFUUklYIENPUlBPUkFUSU9OCi0JCQkJMTIwMyBORVcgSE9QRSBST0FECi0JCQkJUkFMRUlHSCBOT1JUSCBDQVJPTElOQSAgMjc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wQyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDAwMEMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTBEICAgKGhleCkJCUZJQlJPTklDUyBMVEQuCi0wMDAwMEQgICAgIChiYXNlIDE2KQkJRklCUk9OSUNTIExURC4KLQkJCQlNQVRBTSBURUNITk9MT0dZIENFTlRFUgotCQkJCUhBSUZBIDMxOTA1Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAwLTBFICAgKGhleCkJCUZVSklUU1UgTElNSVRFRAotMDAwMDBFICAgICAoYmFzZSAxNikJCUZVSklUU1UgTElNSVRFRAotCQkJCU11c2FzaGkta29zdWdpIFRvd2VyIFBsYWNlIEJsZGcuLAotCQkJCUtvc3VnaS1jaG8gMS1jaG9tZSxOYWthaGFyYS1rdQotCQkJCUtBV0FTQUtJIDIxMSBLYW5hZ2F3YSAKLQkJCQlKQVBBTgotCi0wMC0wMC0wRiAgIChoZXgpCQlORVhULCBJTkMuCi0wMDAwMEYgICAgIChiYXNlIDE2KQkJTkVYVCwgSU5DLgotCQkJCTM0NzUgREVFUiBDUkVFSyBST0FECi0JCQkJUEFMTyBBTFRPIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xMCAgIChoZXgpCQlTWVRFSyBJTkMuCi0wMDAwMTAgICAgIChiYXNlIDE2KQkJU1lURUsgSU5DLgotCQkJCTEyMjUgQ0hBUkxFU1RPTiBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMTEgICAoaGV4KQkJTk9STUVSRUwgU1lTVEVNRVMKLTAwMDAxMSAgICAgKGJhc2UgMTYpCQlOT1JNRVJFTCBTWVNURU1FUwotCQkJCTU4IFJVRSBQT1RUSUVSCi0JCQkJNzgxNTAgTEUgQ0hFU05BWQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMC0xMiAgIChoZXgpCQlJTkZPUk1BVElPTiBURUNITk9MT0dZIExJTUlURUQKLTAwMDAxMiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBURUNITk9MT0dZIExJTUlURUQKLQkJCQlNQVlMQU5EUyBBVkUuIEhFTUVMIEhFTVBTVEVBRAotCQkJCUhFUlRTIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0xMyAgIChoZXgpCQlDQU1FWAotMDAwMDEzICAgICAoYmFzZSAxNikJCUNBTUVYCi0JCQkJNzUgS05FRUxBTkQgU1RSRUVUCi0JCQkJQk9TVE9OIE1BIDAyMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xNCAgIChoZXgpCQlORVRST05JWAotMDAwMDE0ICAgICAoYmFzZSAxNikJCU5FVFJPTklYCi0JCQkJMTM3MiBNQ0RPV0VMTCBCTFZELgotCQkJCVBFVFVMQU1BIENBIDk0OTUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xNSAgIChoZXgpCQlEQVRBUE9JTlQgQ09SUE9SQVRJT04KLTAwMDAxNSAgICAgKGJhc2UgMTYpCQlEQVRBUE9JTlQgQ09SUE9SQVRJT04KLQkJCQk5NzI1IERBVEFQT0lOVCBEUklWRQotCQkJCU1TIFMtMzcKLQkJCQlTQU4gQU5UT05JTyBUWCA3ODI4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMTYgICAoaGV4KQkJRFUgUE9OVCBQSVhFTCBTWVNURU1TICAgICAuCi0wMDAwMTYgICAgIChiYXNlIDE2KQkJRFUgUE9OVCBQSVhFTCBTWVNURU1TICAgICAuCi0JCQkJTUVBRExBS0UgUExBQ0UKLQkJCQlUSE9SUEUgTEVBIFJPQUQgRUdIQU0sIFNVUlJFWSBUVzIwIDhIRQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0xNyAgIChoZXgpCQlURUtFTEVDCi0wMDAwMTcgICAgIChiYXNlIDE2KQkJVEVLRUxFQwotCQkJCTI2NTQwIEFHT1VSQSBST0FECi0JCQkJQ0FMQUJBU0FTIENBIDkxMzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xOCAgIChoZXgpCQlXRUJTVEVSIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMDAwMTggICAgIChiYXNlIDE2KQkJV0VCU1RFUiBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTE2MDQwIFJFRFdPT0QgTE9ER0UgUk9BRAotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMy05MjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xOSAgIChoZXgpCQlBUFBMSUVEIERZTkFNSUNTIElOVEVSTkFUSU9OQUwKLTAwMDAxOSAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIERZTkFNSUNTIElOVEVSTkFUSU9OQUwKLQkJCQkzODAwIFNUT05FIFNDSE9PTCBST0FECi0JCQkJQU5OIEFSQk9SIE1JIDQ4MTA0LTI0OTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTFBICAgKGhleCkJCUFEVkFOQ0VEIE1JQ1JPIERFVklDRVMKLTAwMDAxQSAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBNSUNSTyBERVZJQ0VTCi0JCQkJUC5PLiBCT1ggMzQ1MwotCQkJCU0vUyAyNgotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMUIgICAoaGV4KQkJTk9WRUxMIElOQy4KLTAwMDAxQiAgICAgKGJhc2UgMTYpCQlOT1ZFTEwgSU5DLgotCQkJCTEyMiBFQVNUIDE3MDAgU09VVEgKLQkJCQlNL1M6IEUtMTItMQotCQkJCVBST1ZPIFVUIDg0NjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xQyAgIChoZXgpCQlCRUxMIFRFQ0hOT0xPR0lFUwotMDAwMDFDICAgICAoYmFzZSAxNikJCUJFTEwgVEVDSE5PTE9HSUVTCi0JCQkJMzMwIFdBUlJFTiBBVkVOVUUKLQkJCQlGUkVNT05UIENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xRCAgIChoZXgpCQlDQUJMRVRST04gU1lTVEVNUywgSU5DLgotMDAwMDFEICAgICAoYmFzZSAxNikJCUNBQkxFVFJPTiBTWVNURU1TLCBJTkMuCi0JCQkJMzUgSU5EVVNUUklBTCBXQVkKLQkJCQlQLk8uIEJPWCA1MDA1Ci0JCQkJUk9DSEVTVEVSIE5IIDAzODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xRSAgIChoZXgpCQlURUxTSVNUIElORFVTVFJJQSBFTEVDVFJPTklDQQotMDAwMDFFICAgICAoYmFzZSAxNikJCVRFTFNJU1QgSU5EVVNUUklBIEVMRUNUUk9OSUNBCi0JCQkJUlVBIFZJTEhFTkEgREUgTU9SQUVTLCAzODAKLQkJCQlCQVJSQSBEQSBUSUpVQ0EgUklPIERFIEpBTkVJUk8sIFJKIENFUCAyCi0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLTAwLTFGICAgKGhleCkJCVRlbGNvIFN5c3RlbXMsIEluYy4KLTAwMDAxRiAgICAgKGJhc2UgMTYpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTUgQmVya3NoaXJlIFJvYWQKLQkJCQlNYW5zZmllbGQgTUEgMDIwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTIwICAgKGhleCkJCURBVEFJTkRVU1RSSUVSIERJQUIgQUIKLTAwMDAyMCAgICAgKGJhc2UgMTYpCQlEQVRBSU5EVVNUUklFUiBESUFCIEFCCi0JCQkJQk9YIDIwMjkKLQkJCQlTLTE4MyAwMiBUQUJZCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAwLTIxICAgKGhleCkJCVNVUkVNQU4gQ09NUC4gJiBDT01NVU4uIENPUlAuCi0wMDAwMjEgICAgIChiYXNlIDE2KQkJU1VSRU1BTiBDT01QLiAmIENPTU1VTi4gQ09SUC4KLQkJCQkxMEYtNSBOTy4gNywgIFNFQy4gMwotCQkJCUhTSU4gU0hFTkcgTi4gUkQuLAotCQkJCVRBSVBFSSBUQUlXQU4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDAtMjIgICAoaGV4KQkJVklTVUFMIFRFQ0hOT0xPR1kgSU5DLgotMDAwMDIyICAgICAoYmFzZSAxNikJCVZJU1VBTCBURUNITk9MT0dZIElOQy4KLQkJCQkxNzAzIE1JRERMRVNFWCBTVFJFRVQKLQkJCQlMT1dFTEwgTUEgMDE4NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTIzICAgKGhleCkJCUFCQiBJTkRVU1RSSUFMIFNZU1RFTVMgQUIKLTAwMDAyMyAgICAgKGJhc2UgMTYpCQlBQkIgSU5EVVNUUklBTCBTWVNURU1TIEFCCi0JCQkJREVQVC4gU0VJU1kvTEtTQgotCQkJCVMtNzIxIDY3IFZBU1RFUkFTCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAwLTI0ICAgKGhleCkJCUNPTk5FQ1QgQVMKLTAwMDAyNCAgICAgKGJhc2UgMTYpCQlDT05ORUNUIEFTCi0JCQkJSE9FUktBRVIgNy05Ci0JCQkJREsgMjczMCBIRVJMRVYKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC0wMC0yNSAgIChoZXgpCQlSQU1URUsgQ09SUC4KLTAwMDAyNSAgICAgKGJhc2UgMTYpCQlSQU1URUsgQ09SUC4KLQkJCQk4MTAgVy4gTUFVREUgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0yNiAgIChoZXgpCQlTSEEtS0VOIENPLiwgTFRELgotMDAwMDI2ICAgICAoYmFzZSAxNikJCVNIQS1LRU4gQ08uLCBMVEQuCi0JCQkJTUlOQU1JLU9UU1VLQQotCQkJCTItMjYtMTMsIFRPU0hJTUEtS1UKLQkJCQlUT0tZTyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTI3ICAgKGhleCkJCUpBUEFOIFJBRElPIENPTVBBTlkKLTAwMDAyNyAgICAgKGJhc2UgMTYpCQlKQVBBTiBSQURJTyBDT01QQU5ZCi0JCQkJTEFCT1JBVE9SWQotCQkJCTUtMS0xIFNISU1PUkVOSkFLVSBNSVRBS0EtU0hJLCBUT0tZTwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDAtMjggICAoaGV4KQkJUFJPRElHWSBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDAwMjggICAgIChiYXNlIDE2KQkJUFJPRElHWSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMjYwMSBDQVNFWSBEUklWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTI5ICAgKGhleCkJCUlNQyBORVRXT1JLUyBDT1JQLgotMDAwMDI5ICAgICAoYmFzZSAxNikJCUlNQyBORVRXT1JLUyBDT1JQLgotCQkJCTE2OTMxIE1JTExJS0VOIEFWRS4KLQkJCQlJUlZJTkUgQ0EgOTI3MTQtNTAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMkEgICAoaGV4KQkJVFJXIC0gU0VERC9JTlAKLTAwMDAyQSAgICAgKGJhc2UgMTYpCQlUUlcgLSBTRUREL0lOUAotCQkJCTE4MDAgR0xFTk4gQ1VSVElTUyBTVFJFRVQKLQkJCQlNL1MgREg2LzI4MjYKLQkJCQlDQVJTT04gQ0EgOTA3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTJCICAgKGhleCkJCUNSSVNQIEFVVE9NQVRJT04sIElOQwotMDAwMDJCICAgICAoYmFzZSAxNikJCUNSSVNQIEFVVE9NQVRJT04sIElOQwotCQkJCTUxNjAgQkxBWkVSIFBBUktXQVkKLQkJCQlEVUJMSU4gT0ggNDMwMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTJDICAgKGhleCkJCUFVVE9UT1RFIExJTUlURUQKLTAwMDAyQyAgICAgKGJhc2UgMTYpCQlBVVRPVE9URSBMSU1JVEVECi0JCQkJMTAwIEJFTExFVlVFIFJPQUQKLQkJCQlORVdBUksgREVMQVdBUkUgMTk3MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTJEICAgKGhleCkJCUNIUk9NQVRJQ1MgSU5DCi0wMDAwMkQgICAgIChiYXNlIDE2KQkJQ0hST01BVElDUyBJTkMKLQkJCQkyNTU4IE1PVU5UQUlOIElORFVTVFJJQUwgQkxWRAotCQkJCVRVQ0tFUiBHQSAzMDA4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMkUgICAoaGV4KQkJU09DSUVURSBFVklSQQotMDAwMDJFICAgICAoYmFzZSAxNikJCVNPQ0lFVEUgRVZJUkEKLQkJCQlaT05FIFBPUlRVQUlSRSBERSBCUkVHQUlMTE9OCi0JCQkJODM1MDAgTEEgU0VZTkUgU1VSIE1FUgotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMC0yRiAgIChoZXgpCQlUSU1FUExFWCBJTkMuCi0wMDAwMkYgICAgIChiYXNlIDE2KQkJVElNRVBMRVggSU5DLgotCQkJCTUzMCBDSEVTVE5VVCBSSURHRSBST0FECi0JCQkJV09PRENMSUZGIExBS0UgTkogMDc2NzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTMwICAgKGhleCkJCVZHIExBQk9SQVRPUlkgU1lTVEVNUyBMVEQKLTAwMDAzMCAgICAgKGJhc2UgMTYpCQlWRyBMQUJPUkFUT1JZIFNZU1RFTVMgTFRECi0JCQkJVFJJQlVORSBBVkVOVUUKLQkJCQlBTFRSSU5DSEFNLCBNQU5DSEVTVEVSLCBXQTE0IDVUUAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0zMSAgIChoZXgpCQlRUFNYIENPTU1VTklDQVRJT05TIFBUWSBMVEQKLTAwMDAzMSAgICAgKGJhc2UgMTYpCQlRUFNYIENPTU1VTklDQVRJT05TIFBUWSBMVEQKLQkJCQkzMyBSSUNIQVJEU09OIFNUUkVFVAotCQkJCVdFU1QgUEVSVEggNjAwNQotCQkJCVdFU1RFUk4gQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTAwLTMyICAgKGhleCkJCU1hcmNvbmkgcGxjCi0wMDAwMzIgICAgIChiYXNlIDE2KQkJTWFyY29uaSBwbGMKLQkJCQkyOCBFTFNUUkVFIFdBWSwgQk9SRUhBTVdPT0QKLQkJCQlIRVJURk9SRFNISVJFIFdENiAxUlgKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLTMzICAgKGhleCkJCUVHQU4gTUFDSElORVJZIENPTVBBTlkKLTAwMDAzMyAgICAgKGJhc2UgMTYpCQlFR0FOIE1BQ0hJTkVSWSBDT01QQU5ZCi0JCQkJU09VVEggQURBTVNWSUxMRSBST0FECi0JCQkJU09NTUVSVklMTEUgTkogMDg4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTM0ICAgKGhleCkJCU5FVFdPUksgUkVTT1VSQ0VTIENPUlBPUkFUSU9OCi0wMDAwMzQgICAgIChiYXNlIDE2KQkJTkVUV09SSyBSRVNPVVJDRVMgQ09SUE9SQVRJT04KLQkJCQk2MSBFQVNUIERBR0dFVFQgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMzUgICAoaGV4KQkJU1BFQ1RSQUdSQVBISUNTIENPUlBPUkFUSU9OCi0wMDAwMzUgICAgIChiYXNlIDE2KQkJU1BFQ1RSQUdSQVBISUNTIENPUlBPUkFUSU9OCi0JCQkJICAgIE9SCi0JCQkJTEFOIE1BTlVGQUNUVVJJTkcgRU5HSU5FRVIgOTcwNyBXQVBMRVMgUwotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMzYgICAoaGV4KQkJQVRBUkkgQ09SUE9SQVRJT04KLTAwMDAzNiAgICAgKGJhc2UgMTYpCQlBVEFSSSBDT1JQT1JBVElPTgotCQkJCTExOTYgQk9SUkVHQVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0zNyAgIChoZXgpCQlPWEZPUkQgTUVUUklDUyBMSU1JVEVECi0wMDAwMzcgICAgIChiYXNlIDE2KQkJT1hGT1JEIE1FVFJJQ1MgTElNSVRFRAotCQkJCVVOSVQgOCwgNyBXRVNUIFdBWSwKLQkJCQlCT1RMRVksT1hGT1JELCBPWDIgT0pCCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0zOCAgIChoZXgpCQlDU1MgTEFCUwotMDAwMDM4ICAgICAoYmFzZSAxNikJCUNTUyBMQUJTCi0JCQkJMjEzNCBTT1VUSCBSSVBDSEVZCi0JCQkJU0FOVEEgQU5BIENBIDkyNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0zOSAgIChoZXgpCQlUT1NISUJBIENPUlBPUkFUSU9OCi0wMDAwMzkgICAgIChiYXNlIDE2KQkJVE9TSElCQSBDT1JQT1JBVElPTgotCQkJCUNPTVBVVEVSIERJVklTSU9OCi0JCQkJMS0xLTEgU0hJQkFVUkEsIE1JTkFUTy1LVQotCQkJCVRPS1lPIDEwNSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTNBICAgKGhleCkJCUNIWVJPTiBDT1JQT1JBVElPTgotMDAwMDNBICAgICAoYmFzZSAxNikJCUNIWVJPTiBDT1JQT1JBVElPTgotCQkJCTI2NSBTUEFHTk9MSSBST0FECi0JCQkJTUVMVklMTEUgTlkgMTE3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTNCICAgKGhleCkJCWkgQ29udHJvbHMsIEluYy4KLTAwMDAzQiAgICAgKGJhc2UgMTYpCQlpIENvbnRyb2xzLCBJbmMuCi0JCQkJMTJGIERvb25zYW4gYnVpbGRpbmcsIDEwNS03Ci0JCQkJTm9uaHl1bi1kb25nLCBHYW5nbmFtLWd1IFNlb3VsCi0JCQkJS09SRUEgMTM1LTcxNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMC0zQyAgIChoZXgpCQlBVVNQRVggU1lTVEVNUyBJTkMuCi0wMDAwM0MgICAgIChiYXNlIDE2KQkJQVVTUEVYIFNZU1RFTVMgSU5DLgotCQkJCTUyMDAgR1JFQVQgQU1FUklDQSBQS1dZCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTNEICAgKGhleCkJCVVOSVNZUwotMDAwMDNEICAgICAoYmFzZSAxNikJCVVOSVNZUwotCQkJCU1TOC0wMTAKLQkJCQlQLk8uIEJPWCA2Njg1Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxNTAtNjY4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtM0UgICAoaGV4KQkJU0lNUEFDVAotMDAwMDNFICAgICAoYmFzZSAxNikJCVNJTVBBQ1QKLQkJCQk5MjEwIFNLWSBQQVJLIENPVVJUCi0JCQkJU0FOIERJRUdPIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0zRiAgIChoZXgpCQlTWU5UUkVYLCBJTkMuCi0wMDAwM0YgICAgIChiYXNlIDE2KQkJU1lOVFJFWCwgSU5DLgotCQkJCTI0NiBJTkRVU1RSSUFMIFdBWSBXRVNUCi0JCQkJRUFUT05UT1dOIE5KIDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00MCAgIChoZXgpCQlBUFBMSUNPTiwgSU5DLgotMDAwMDQwICAgICAoYmFzZSAxNikJCUFQUExJQ09OLCBJTkMuCi0JCQkJNDI1MSBQTFlNT1VUSCBSRCA0ODAxNQotCQkJCVBPIEJPWCA5ODYKLQkJCQlBTk4gQVJCT1IgTUkgNDgxMDYtMDk4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNDEgICAoaGV4KQkJSUNFIENPUlBPUkFUSU9OCi0wMDAwNDEgICAgIChiYXNlIDE2KQkJSUNFIENPUlBPUkFUSU9OCi0JCQkJMTc5NDUgU0tZUEFSSyBDSVJDTEUKLQkJCQlTVUlURSBFCi0JCQkJSVJWSU5FIENBIDkyNzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00MiAgIChoZXgpCQlNRVRJRVIgTUFOQUdFTUVOVCBTWVNURU1TIExURC4KLTAwMDA0MiAgICAgKGJhc2UgMTYpCQlNRVRJRVIgTUFOQUdFTUVOVCBTWVNURU1TIExURC4KLQkJCQkzIEZPVU5EQVRJT04gU1RSRUVUCi0JCQkJSVBTV0lDSCAgU1VGRk9MSyAgSVA0IDFCRwotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC00MyAgIChoZXgpCQlNSUNSTyBURUNITk9MT0dZCi0wMDAwNDMgICAgIChiYXNlIDE2KQkJTUlDUk8gVEVDSE5PTE9HWQotCQkJCTQ5MDUgRUFTVCBMQVBBTE1BCi0JCQkJQU5BSEVJTSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNDQgICAoaGV4KQkJQ0FTVEVMTEUgQ09SUE9SQVRJT04KLTAwMDA0NCAgICAgKGJhc2UgMTYpCQlDQVNURUxMRSBDT1JQT1JBVElPTgotCQkJCTMyNTUtMyBTQ09UVCBCT1VMRVZBUkQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNDUgICAoaGV4KQkJRk9SRCBBRVJPU1BBQ0UgJiBDT01NLiBDT1JQLgotMDAwMDQ1ICAgICAoYmFzZSAxNikJCUZPUkQgQUVST1NQQUNFICYgQ09NTS4gQ09SUC4KLQkJCQlDT0xPUkFETyBTUFJJTkdTIE9QRVJBVElPTgotCQkJCTEwNDQwIFNUQVRFIEhJR0hXQVkgODMKLQkJCQlDT0xPUkFETyBTUFJJTkdTIENPIDgwOTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00NiAgIChoZXgpCQlPTElWRVRUSSBOT1JUSCBBTUVSSUNBCi0wMDAwNDYgICAgIChiYXNlIDE2KQkJT0xJVkVUVEkgTk9SVEggQU1FUklDQQotCQkJCUUgMjI0MjUgQVBQTEVXQVkKLQkJCQlMSUJFUlRZIExBS0UgV0EgOTkwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTQ3ICAgKGhleCkJCU5JQ09MRVQgSU5TVFJVTUVOVFMgQ09SUC4KLTAwMDA0NyAgICAgKGJhc2UgMTYpCQlOSUNPTEVUIElOU1RSVU1FTlRTIENPUlAuCi0JCQkJNTIyNSBWRVJPTkEgUk9BRAotCQkJCU1BRElTT04gV0kgNTM3MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTQ4ICAgKGhleCkJCVNFSUtPIEVQU09OIENPUlBPUkFUSU9OCi0wMDAwNDggICAgIChiYXNlIDE2KQkJU0VJS08gRVBTT04gQ09SUE9SQVRJT04KLQkJCQk4MCBISVJPT0tBIFNISU9KSVJJLUNJVFkKLQkJCQlOQUdBTk8tS0VOCi0JCQkJSkFQQU4gMzk5LTA3Ci0JCQkJSkFQQU4KLQotMDAtMDAtNDkgICAoaGV4KQkJQVBSSUNPVCBDT01QVVRFUlMsIExURAotMDAwMDQ5ICAgICAoYmFzZSAxNikJCUFQUklDT1QgQ09NUFVURVJTLCBMVEQKLQkJCQk5MCBWSU5DRU5UIERSSVZFCi0JCQkJRURHQkFTVE9OLCBCSVJNSU5HSEFNIEIxNTJTUAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC00QSAgIChoZXgpCQlBREMgQ09ERU5PTEwgVEVDSE5PTE9HWSBDT1JQLgotMDAwMDRBICAgICAoYmFzZSAxNikJCUFEQyBDT0RFTk9MTCBURUNITk9MT0dZIENPUlAuCi0JCQkJMjAwIENPUlBPUkFURSBCTFZELiBTTy4KLQkJCQlZT05LRVJTIE5ZIDEwNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00QiAgIChoZXgpCQlJQ0wgREFUQSBPWQotMDAwMDRCICAgICAoYmFzZSAxNikJCUlDTCBEQVRBIE9ZCi0JCQkJS1VUT01PVElFIDE2LTE4Ci0JCQkJMDAzODAgSEVMU0lOS0kgIFAuTy4gQk9YIDQ1OCBTRi0wMDEwMSBIRQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTAwLTRDICAgKGhleCkJCU5FQyBDT1JQT1JBVElPTgotMDAwMDRDICAgICAoYmFzZSAxNikJCU5FQyBDT1JQT1JBVElPTgotCQkJCTctMSBTSElCQSAgNS1DSE9NRQotCQkJCU1JTkFUTy1LVQotCQkJCVRPS1lPIDEwOC0wMSAgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC00RCAgIChoZXgpCQlEQ0kgQ09SUE9SQVRJT04KLTAwMDA0RCAgICAgKGJhc2UgMTYpCQlEQ0kgQ09SUE9SQVRJT04KLQkJCQk2NEogUFJJTkNFVE9OLUhJR0hUU1RPV04gUkQKLQkJCQkjMTIxCi0JCQkJUFJJTkNFVE9OIEpVTkNUSU9OIE5KIDA4NTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00RSAgIChoZXgpCQlBTVBFWCBDT1JQT1JBVElPTgotMDAwMDRFICAgICAoYmFzZSAxNikJCUFNUEVYIENPUlBPUkFUSU9OCi0JCQkJNTgxIENPTkZFUkVOQ0UgUExBQ0UKLQkJCQlHT0xERU4gQ08gODA0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTRGICAgKGhleCkJCUxPR0lDUkFGVCwgSU5DLgotMDAwMDRGICAgICAoYmFzZSAxNikJCUxPR0lDUkFGVCwgSU5DLgotCQkJCTIyIENPVFRPTiBST0FECi0JCQkJTkFTSFVBIE5IIDAzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC01MCAgIChoZXgpCQlSQURJU1lTIENPUlBPUkFUSU9OCi0wMDAwNTAgICAgIChiYXNlIDE2KQkJUkFESVNZUyBDT1JQT1JBVElPTgotCQkJCTE1MDI1IFMuVy4gS09MTCBQQVJLV0FZCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDA2LTYwNTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTUxICAgKGhleCkJCUhPQiBFTEVDVFJPTklDIEdNQkggJiBDTy4gS0cKLTAwMDA1MSAgICAgKGJhc2UgMTYpCQlIT0IgRUxFQ1RST05JQyBHTUJIICYgQ08uIEtHCi0JCQkJQlJBTkRTU1RBVFRFUi1TVFIuMi0xMAotCQkJCUQtODUwMiBaSVJORE9SRgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLTUyICAgKGhleCkJCUludHJ1c2lvbi5jb20sIEluYy4KLTAwMDA1MiAgICAgKGJhc2UgMTYpCQlJbnRydXNpb24uY29tLCBJbmMuCi0JCQkJMTEwMSBFLiBBUkFQQUhPIFJPQUQKLQkJCQlSSUNIQVJEU09OIFRYIDc1MDgxCi0KLTAwLTAwLTUzICAgKGhleCkJCUNPTVBVQ09SUAotMDAwMDUzICAgICAoYmFzZSAxNikJCUNPTVBVQ09SUAotCQkJCTIyMTEgTUlDSElHQU4gQVZFTlVFCi0JCQkJU0FOVEEgTU9OSUNBIENBIDkwNDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC01NCAgIChoZXgpCQlNT0RJQ09OLCBJTkMuCi0wMDAwNTQgICAgIChiYXNlIDE2KQkJTU9ESUNPTiwgSU5DLgotCQkJCU9ORSBISUdIIFNUUkVFVAotCQkJCU5PUlRIIEFORE9WRVIgTUEgMDE4NDUtMjY5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNTUgICAoaGV4KQkJQ09NTUlTU0FSSUFUIEEgTGBFTkVSR0lFIEFUT00uCi0wMDAwNTUgICAgIChiYXNlIDE2KQkJQ09NTUlTU0FSSUFUIEEgTGBFTkVSR0lFIEFUT00uCi0JCQkJMzEsIFJVRSBERSBMQSBGRURFUkFUSU9OCi0JCQkJUEFSSVMgNzUwMTUKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtNTYgICAoaGV4KQkJRFIuIEIuIFNUUlVDSwotMDAwMDU2ICAgICAoYmFzZSAxNikJCURSLiBCLiBTVFJVQ0sKLQkJCQlQT0IgMTE0NyBCQUVDS0VSQkFSRyA2Ci0JCQkJRC0yMDAwIFRBTkdTVEVEVC9IQU1CVVJHCi0JCQkJVy1HRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMC01NyAgIChoZXgpCQlTQ0lURVggQ09SUE9SQVRJT04gTFRELgotMDAwMDU3ICAgICAoYmFzZSAxNikJCVNDSVRFWCBDT1JQT1JBVElPTiBMVEQuCi0JCQkJUC5PLiBCT1ggMzMwCi0JCQkJNDYxMDMgSEVSWkxJQSBCCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAwLTU4ICAgKGhleCkJCVJBQ09SRSBDT01QVVRFUiBQUk9EVUNUUyBJTkMuCi0wMDAwNTggICAgIChiYXNlIDE2KQkJUkFDT1JFIENPTVBVVEVSIFBST0RVQ1RTIElOQy4KLQkJCQkyMzU1IFNPVVRIIDEwNzAgV0VTVAotCQkJCVNBTFQgTEFLRSBDSVRZIFVUIDg0MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC01OSAgIChoZXgpCQlIRUxMSUdFIEdNQkgKLTAwMDA1OSAgICAgKGJhc2UgMTYpCQlIRUxMSUdFIEdNQkgKLQkJCQlFLVNXCi0JCQkJSEVJTlJJQ0gtVk9OLVNURUZBTi1TVFIuNCBELTc4MDAgRlJFSUJVUgotCQkJCVdFU1QgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDAtNUEgICAoaGV4KQkJU3lzS29ubmVjdCBHbWJICi0wMDAwNUEgICAgIChiYXNlIDE2KQkJU3lzS29ubmVjdCBHbWJICi0JCQkJU0lFTUVOU1NUUkFTU0UgMjMKLQkJCQk3NjI3NSBFVFRMSU5HRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMC01QiAgIChoZXgpCQlFTFRFQyBFTEVLVFJPTklLIEFHCi0wMDAwNUIgICAgIChiYXNlIDE2KQkJRUxURUMgRUxFS1RST05JSyBBRwotCQkJCUdhbGlsZW8tR2FsaWxlaS1TdHJhc3NlIDExCi0JCQkJUE9CIDQyIDEzIDYzIEQtNTUwNzEgTUFJTloKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMC01QyAgIChoZXgpCQlURUxFTUFUSUNTIElOVEVSTkFUSU9OQUwgSU5DLgotMDAwMDVDICAgICAoYmFzZSAxNikJCVRFTEVNQVRJQ1MgSU5URVJOQVRJT05BTCBJTkMuCi0JCQkJMTIwMSBDWVBSRVNTIENSRUVLIFJECi0JCQkJRlQuIExBVURFUkRBTEUgRkwgMzMzMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTVEICAgKGhleCkJCUNTIFRFTEVDT00KLTAwMDA1RCAgICAgKGJhc2UgMTYpCQlDUyBURUxFQ09NCi0JCQkJNC0xNiBBVkVOVUUgRFUgR0VORVJBTCBMRUNMRVJDCi0JCQkJQlAgNzQgLSA5MjI2MyBGT05URU5BWSBBVVggUk9TRVMKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtNUUgICAoaGV4KQkJVVNDIElORk9STUFUSU9OIFNDSUVOQ0VTIElOU1QKLTAwMDA1RSAgICAgKGJhc2UgMTYpCQlVU0MgSU5GT1JNQVRJT04gU0NJRU5DRVMgSU5TVAotCQkJCUlOVEVSTkVUIEFTUydORUQgTk9TLkFVVEhPUklUWQotCQkJCTQ2NzYgQURNSVJBTFRZIFdBWQotCQkJCU1BUklOQSBERUwgUkVZIENBIDkwMjkyLTY2OTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTVGICAgKGhleCkJCVNVTUlUT01PIEVMRUNUUklDIElORC4sIExURC4KLTAwMDA1RiAgICAgKGJhc2UgMTYpCQlTVU1JVE9NTyBFTEVDVFJJQyBJTkQuLCBMVEQuCi0JCQkJMS0xLTMsIFNISU1BWUEKLQkJCQlLT05PSEFOQS1LVSBPU0FLQQotCQkJCTU1NCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTYwICAgKGhleCkJCUtPTlRST04gRUxFS1RST05JSyBHTUJICi0wMDAwNjAgICAgIChiYXNlIDE2KQkJS09OVFJPTiBFTEVLVFJPTklLIEdNQkgKLQkJCQlPU0tBUi1WT04tTUlMTEVSLVNUUi4gMQotCQkJCUQtODUzODUgRUNISU5HCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDAtNjEgICAoaGV4KQkJR0FURVdBWSBDT01NVU5JQ0FUSU9OUwotMDAwMDYxICAgICAoYmFzZSAxNikJCUdBVEVXQVkgQ09NTVVOSUNBVElPTlMKLQkJCQkyOTQxIEFMVE9OIEFWRU5VRQotCQkJCUlSVklORSBDQSA5MjcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNjIgICAoaGV4KQkJQlVMTCBITiBJTkZPUk1BVElPTiBTWVNURU1TCi0wMDAwNjIgICAgIChiYXNlIDE2KQkJQlVMTCBITiBJTkZPUk1BVElPTiBTWVNURU1TCi0JCQkJMzAwIENPTkNPUkQgUk9BRCBNL1MgODY0QQotCQkJCUJJTExFUklDQSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNjMgICAoaGV4KQkJQkFSQ08gQ09OVFJPTCBST09NUyBHTUJICi0wMDAwNjMgICAgIChiYXNlIDE2KQkJQkFSQ08gQ09OVFJPTCBST09NUyBHTUJICi0JCQkJQW4gZGVyIFJvc3N3ZWlkIDUKLQkJCQlLYXJsc3J1aGUgIEQtNzYyMjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLTY0ICAgKGhleCkJCVlPS09HQVdBIERJR0lUQUwgQ09NUFVURVIgQ09SUAotMDAwMDY0ICAgICAoYmFzZSAxNikJCVlPS09HQVdBIERJR0lUQUwgQ09NUFVURVIgQ09SUAotCQkJCVNJIEhFQURRVUFSVEVSUyBESVZJU0lPTgotCQkJCU5PLiAyNSBLT1dBIEJMREcgOC03IFNBTkJBTkNITyBDSElZT0RBLUsKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTY1ICAgKGhleCkJCU5ldHdvcmsgR2VuZXJhbCBDb3Jwb3JhdGlvbgotMDAwMDY1ICAgICAoYmFzZSAxNikJCU5ldHdvcmsgR2VuZXJhbCBDb3Jwb3JhdGlvbgotCQkJCTE3OCBFIFRzYW1hbiBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC02NiAgIChoZXgpCQlUQUxBUklTIFNZU1RFTVMsIElOQy4KLTAwMDA2NiAgICAgKGJhc2UgMTYpCQlUQUxBUklTIFNZU1RFTVMsIElOQy4KLQkJCQkxMTMzOSBTT1JSRU5UTyBWQUxMRVkgUk9BRAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNjcgICAoaGV4KQkJU09GVCAqIFJJVEUsIElOQy4KLTAwMDA2NyAgICAgKGJhc2UgMTYpCQlTT0ZUICogUklURSwgSU5DLgotCQkJCTE1MzkyIEFTU0VNQkxZIExBTkUsIFVOSVQgQQotCQkJCUhVTlRJTkdUT04gQkVBQ0ggQ0EgOTI2NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTY4ICAgKGhleCkJCVJPU0VNT1VOVCBDT05UUk9MUwotMDAwMDY4ICAgICAoYmFzZSAxNikJCVJPU0VNT1VOVCBDT05UUk9MUwotCQkJCTEzMDAgRS4gTEFNQkVSVCBST0FECi0JCQkJTEEgSEFCUkEgQ0EgOTA2MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTY5ICAgKGhleCkJCUNPTkNPUkQgQ09NTVVOSUNBVElPTlMgSU5DCi0wMDAwNjkgICAgIChiYXNlIDE2KQkJQ09OQ09SRCBDT01NVU5JQ0FUSU9OUyBJTkMKLQkJCQk3NTMgRk9SRVNUIFNUUkVFVAotCQkJCU1BUkxCT1JPVUdIIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC02QSAgIChoZXgpCQlDT01QVVRFUiBDT05TT0xFUyBJTkMuCi0wMDAwNkEgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgQ09OU09MRVMgSU5DLgotCQkJCUNPTVBVVEVSIFBST0RVQ1RTIERJVklTSU9OCi0JCQkJOTgwMSBNVUlSTEFORFMgQkxWRC4KLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTZCICAgKGhleCkJCVNJTElDT04gR1JBUEhJQ1MgSU5DLi9NSVBTCi0wMDAwNkIgICAgIChiYXNlIDE2KQkJU0lMSUNPTiBHUkFQSElDUyBJTkMuL01JUFMKLQkJCQkyMDExIE5PUlRIIFNIT1JFTElORSBCTFZELgotCQkJCVAuTy4gQk9YIDczMTEgLSAgQkxERy4gIzEwCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDAzOS03MzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC02QyAgIChoZXgpCQlQUklWQVRFCi0wMDAwNkMgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTAwLTZEICAgKGhleCkJCUNSQVkgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwMDA2RCAgICAgKGJhc2UgMTYpCQlDUkFZIENPTU1VTklDQVRJT05TLCBMVEQuCi0JCQkJUC5PLiBCT1ggMjU0LCBDQVhUT04gV0FZCi0JCQkJV0FURk9SRCBCVVNJTkVTUyBQQVJLIFdBVEZPUkQgSEVSVFMgIFdEMQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtNkUgICAoaGV4KQkJQVJUSVNPRlQsIElOQy4KLTAwMDA2RSAgICAgKGJhc2UgMTYpCQlBUlRJU09GVCwgSU5DLgotCQkJCTY5MSBFQVNUIFJJVkVSIFJPQUQKLQkJCQlUVUNTT04gQVogODU3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTZGICAgKGhleCkJCU1hZGdlIEx0ZC4KLTAwMDA2RiAgICAgKGJhc2UgMTYpCQlNYWRnZSBMdGQuCi0JCQkJTWFkZ2UgSG91c2UKLQkJCQlQcmlvcnMgV2F5Ci0JCQkJTWFpbmRlbmhlYWQgQmVya3NoaXJlIFNMNiAySFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC03MCAgIChoZXgpCQlIQ0wgTElNSVRFRAotMDAwMDcwICAgICAoYmFzZSAxNikJCUhDTCBMSU1JVEVECi0JCQkJUkVTRUFSQ0ggJiBERVZFTE9QTUVOVCBVTklUCi0JCQkJNzIsIExVWiBDSFVSQ0ggUk9BRCBNQURSU0EtNjAwIDAwNAotCQkJCUlORElBCi0JCQkJSU5ESUEKLQotMDAtMDAtNzEgICAoaGV4KQkJQURSQSBTWVNURU1TIElOQy4KLTAwMDA3MSAgICAgKGJhc2UgMTYpCQlBRFJBIFNZU1RFTVMgSU5DLgotCQkJCTU5IFRFQ0hOT0xPR1kgRFJJVkUKLQkJCQlMT1dFTEwgTUEgMDE4NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTcyICAgKGhleCkJCU1JTklXQVJFIFRFQ0hOT0xPR1kKLTAwMDA3MiAgICAgKGJhc2UgMTYpCQlNSU5JV0FSRSBURUNITk9MT0dZCi0JCQkJQkVFTURFTlNUUkFBVCAzOAotCQkJCTUwMDQgQ1QgV0VFUlQgKEwpCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDAtNzMgICAoaGV4KQkJU0lFQ09SIENPUlBPUkFUSU9OCi0wMDAwNzMgICAgIChiYXNlIDE2KQkJU0lFQ09SIENPUlBPUkFUSU9OCi0JCQkJUC5PLiBCT1ggMTM2MjUKLQkJCQlSRVNFQVJDSCBUUklBTkdMRSBQSyBOQyAyNzcwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNzQgICAoaGV4KQkJUklDT0ggQ09NUEFOWSBMVEQuCi0wMDAwNzQgICAgIChiYXNlIDE2KQkJUklDT0ggQ09NUEFOWSBMVEQuCi0JCQkJMjQ0NiBUT0RBLCBBVFNVR0kgQ0lUWQotCQkJCUtBTkFHQVdBIFBSRUYuLAotCQkJCTI0MyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTc1ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwMDc1ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCUdsb2JhbCBPcGVyYXRpb25zIEVuZ2luZWVyaW5nCi0JCQkJRGVwIDY4MDAgUHJvZ3JhbSBNYW5hZ2VyIDgyMDAgRGl4aWUgUm9hZAotCQkJCUJyYW1wdG9uIE9OIGw2VCA1UDYgQ2FuYQotCQkJCUNBTkFEQQotCi0wMC0wMC03NiAgIChoZXgpCQlBQkVLQVMgVklERU8gU1lTVEVNCi0wMDAwNzYgICAgIChiYXNlIDE2KQkJQUJFS0FTIFZJREVPIFNZU1RFTQotCQkJCTEwMSBHQUxWRVNUT04gRFJJVkUKLQkJCQlSRURXT09EIENJVFkgQ0EgOTQwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTc3ICAgKGhleCkJCUlOVEVSUEhBU0UgQ09SUE9SQVRJT04KLTAwMDA3NyAgICAgKGJhc2UgMTYpCQlJTlRFUlBIQVNFIENPUlBPUkFUSU9OCi0JCQkJMTM4MDAgU0VOTEFDCi0JCQkJREFMTEFTIFRYIDc1MjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC03OCAgIChoZXgpCQlMQUJUQU0gTElNSVRFRAotMDAwMDc4ICAgICAoYmFzZSAxNikJCUxBQlRBTSBMSU1JVEVECi0JCQkJNDMgTUFMQ09MTSBST0FEICAgUC5PLiBCT1gyOTcKLQkJCQlCUkFFU0lERSwgVklDVE9SSUEgMzE5NQotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC0wMC03OSAgIChoZXgpCQlORVRXT1JUSCBJTkNPUlBPUkFURUQKLTAwMDA3OSAgICAgKGJhc2UgMTYpCQlORVRXT1JUSCBJTkNPUlBPUkFURUQKLQkJCQk4NDA0IEVTVEVSUyBCT1VMRVZBUkQKLQkJCQlJUlZJTkcgVFggNzUwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTdBICAgKGhleCkJCURBTkEgQ09NUFVURVIgSU5DLgotMDAwMDdBICAgICAoYmFzZSAxNikJCURBTkEgQ09NUFVURVIgSU5DLgotCQkJCTU1MCBERUwgUkVZIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtN0IgICAoaGV4KQkJUkVTRUFSQ0ggTUFDSElORVMKLTAwMDA3QiAgICAgKGJhc2UgMTYpCQlSRVNFQVJDSCBNQUNISU5FUwotCQkJCVAuTy4gQk9YIDc1Ci0JCQkJTUlMTCBTVFJFRVQgT1hGT1JEICBPWDIgMEJXCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLTdDICAgKGhleCkJCUFNUEVSRSBJTkNPUlBPUkFURUQKLTAwMDA3QyAgICAgKGJhc2UgMTYpCQlBTVBFUkUgSU5DT1JQT1JBVEVECi0JCQkJU0hJTkpVS1UgQVNBSEkgQkxERy4KLQkJCQk1LTIwICA3LUNIT01FIE5JU0hJLVNISU5KVUtVICBTSElOSlVLVS1LCi0JCQkJVE9LWU8gSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC03RCAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMDA3RCAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTdFICAgKGhleCkJCUNMVVNUUklYIENPUlBPUkFUSU9OCi0wMDAwN0UgICAgIChiYXNlIDE2KQkJQ0xVU1RSSVggQ09SUE9SQVRJT04KLQkJCQk5NjAgSEFNTElOIENPVVJUCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC03RiAgIChoZXgpCQlMSU5PVFlQRS1IRUxMIEFHCi0wMDAwN0YgICAgIChiYXNlIDE2KQkJTElOT1RZUEUtSEVMTCBBRwotCQkJCVBPU1RGQUNIIDU2IDYwCi0JCQkJTUVSR0VOVEhBTEVSIEFMTEVFIDU1LTc1IDYyMzYgRVNDSEJPUk4gQgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLTgwICAgKGhleCkJCUNSQVkgQ09NTVVOSUNBVElPTlMgQS9TCi0wMDAwODAgICAgIChiYXNlIDE2KQkJQ1JBWSBDT01NVU5JQ0FUSU9OUyBBL1MKLQkJCQlTTUVERUhPTE0gMTItMTQKLQkJCQkyNzMwIEhFUkxFVgotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLTAwLTgxICAgKGhleCkJCUJBWSBORVRXT1JLUwotMDAwMDgxICAgICAoYmFzZSAxNikJCUJBWSBORVRXT1JLUwotCQkJCTQ0MDEgR1JFQVQgQU1FUklDQU4gUEFSS1dBWQotCQkJCVBPIEJPWCA1ODE4NSBNL1MgU0MwMS0wNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyLTgxODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTgyICAgKGhleCkJCUxFQ1RSQSBTWVNURU1FUyBTQQotMDAwMDgyICAgICAoYmFzZSAxNikJCUxFQ1RSQSBTWVNURU1FUyBTQQotCQkJCUNIRU1JTiBERSBNQVJUSUNPVAotCQkJCVJFU0VBUkNIIERFUEFSVE1FTlQgMzM2MTAgQ0VTVEFTCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTAwLTgzICAgKGhleCkJCVRBRFBPTEUgVEVDSE5PTE9HWSBQTEMKLTAwMDA4MyAgICAgKGJhc2UgMTYpCQlUQURQT0xFIFRFQ0hOT0xPR1kgUExDCi0JCQkJMTM3IERJVFRPTiBXQUxLCi0JCQkJQ0FNQlJJREdFIENCNSA4Rk4KLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtODQgICAoaGV4KQkJU1VQRVJORVQKLTAwMDA4NCAgICAgKGJhc2UgMTYpCQlTVVBFUk5FVAotCQkJCTg0NiBERUwgUkVZIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtODUgICAoaGV4KQkJQ0FOT04gSU5DLgotMDAwMDg1ICAgICAoYmFzZSAxNikJCUNBTk9OIElOQy4KLQkJCQlEVlRFQ0guIERFVi4gQ0VOVEVSIERFUFQuMTIKLQkJCQkzLTMwLTIsIFNISU1PTUFSVUtPLCBPSFRBLUtVIFRPS1lPIDE0NgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDAtODYgICAoaGV4KQkJTUVHQUhFUlRaIENPUlBPUkFUSU9OCi0wMDAwODYgICAgIChiYXNlIDE2KQkJTUVHQUhFUlRaIENPUlBPUkFUSU9OCi0JCQkJNjA1IE5PUlRILS01NjAwIFdFU1QKLQkJCQlTQUxUIExBS0UgQ0lUWSBVVCA4NDExNi0zNzM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC04NyAgIChoZXgpCQlISVRBQ0hJLCBMVEQuCi0wMDAwODcgICAgIChiYXNlIDE2KQkJSElUQUNISSwgTFRELgotCQkJCU5FVFdPUksgRU5HSU5FRVJJTkcgRElWLgotCQkJCUhJVEFDSEkgT01PUkkgMk5EIEJMREcuLCAyNy0xOCBNSU5BTUkgT0kKLQkJCQlUT0tZTyAxNDAgCi0JCQkJSkFQQU4KLQotMDAtMDAtODggICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDAwODggICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC04OSAgIChoZXgpCQlDQVlNQU4gU1lTVEVNUyBJTkMuCi0wMDAwODkgICAgIChiYXNlIDE2KQkJQ0FZTUFOIFNZU1RFTVMgSU5DLgotCQkJCTI2IExBTlNET1dORSBTVFJFRVQKLQkJCQlDQU1CUklER0UgTUEgMDIxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLThBICAgKGhleCkJCURBVEFIT1VTRSBJTkZPUk1BVElPTiBTWVNURU1TCi0wMDAwOEEgICAgIChiYXNlIDE2KQkJREFUQUhPVVNFIElORk9STUFUSU9OIFNZU1RFTVMKLQkJCQlESVJFQ1RPUiBPRiBPUEVSQVRJT05TCi0JCQkJTUVPTiBIT1VTRSwgRUFTVCBUSVNURUQgTlIuIEFMVE9OLCBIQU1QUwotCQkJCUdVMzQgM1FXIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC04QiAgIChoZXgpCQlJTkZPVFJPTgotMDAwMDhCICAgICAoYmFzZSAxNikJCUlORk9UUk9OCi0JCQkJOSBOT1JUSCBPTE5FWQotCQkJCUNIRVJSWSBISUxMIE5KIDA4MDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC04QyAgIChoZXgpCQlBbGxveSBDb21wdXRlciBQcm9kdWN0cyAoQXVzdHJhbGlhKSBQdHkgTHRkCi0wMDAwOEMgICAgIChiYXNlIDE2KQkJQWxsb3kgQ29tcHV0ZXIgUHJvZHVjdHMgKEF1c3RyYWxpYSkgUHR5IEx0ZAotCQkJCVVuaXQgNC81ODUgQmxhY2tidXJuIFJvYWQKLQkJCQlOb3R0aW5nIEhpbGwgVmljdG9yaWEgMzE2OAotCQkJCUFVU1RSQUxJQQotCi0wMC0wMC04RCAgIChoZXgpCQlDcnlwdGVrIEluYy4KLTAwMDA4RCAgICAgKGJhc2UgMTYpCQlDcnlwdGVrIEluYy4KLQkJCQkxNTAxIE1vcmFuIFJvYWQKLQkJCQlTdGVybGluZyBWQSAyMDE2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOEUgICAoaGV4KQkJU09MQk9VUk5FIENPTVBVVEVSLCBJTkMuCi0wMDAwOEUgICAgIChiYXNlIDE2KQkJU09MQk9VUk5FIENPTVBVVEVSLCBJTkMuCi0JCQkJMTkwMCBQSUtFIFJPQUQKLQkJCQlMT05HTU9OVCBDT0xPUkFETyA4MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOEYgICAoaGV4KQkJUmF5dGhlb24KLTAwMDA4RiAgICAgKGJhc2UgMTYpCQlSYXl0aGVvbgotCQkJCU0vUyAxLTEtMTExOQotCQkJCTEwMDEgQm9zdG9uIFBvc3QgUmQKLQkJCQlNYXJsYm9ybyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTAgICAoaGV4KQkJTUlDUk9DT00KLTAwMDA5MCAgICAgKGJhc2UgMTYpCQlNSUNST0NPTQotCQkJCTUwMCBSSVZFUiBSSURHRSBEUklWRQotCQkJCU5PUldPT0QgTUEgMDIwNjItNTAyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTEgICAoaGV4KQkJQU5SSVRTVSBDT1JQT1JBVElPTgotMDAwMDkxICAgICAoYmFzZSAxNikJCUFOUklUU1UgQ09SUE9SQVRJT04KLQkJCQkxODAwLCBPTk5BCi0JCQkJQVRVR0ktU0hJIEtBTkFHQVdBLUtFTiAyNDMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTkyICAgKGhleCkJCUNPR0VOVCBEQVRBIFRFQ0hOT0xPR0lFUwotMDAwMDkyICAgICAoYmFzZSAxNikJCUNPR0VOVCBEQVRBIFRFQ0hOT0xPR0lFUwotCQkJCTY0MCBNVUxMSVMgU1RSRUVUCi0JCQkJRlJJREFZIEhBUkJPUiBXQSA5ODI1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTMgICAoaGV4KQkJUFJPVEVPTiBJTkMuCi0wMDAwOTMgICAgIChiYXNlIDE2KQkJUFJPVEVPTiBJTkMuCi0JCQkJNCBURUNIIENJUkNMRQotCQkJCU5BVElDSyBNQSAwMTc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTQgICAoaGV4KQkJQVNBTlRFIFRFQ0hOT0xPR0lFUwotMDAwMDk0ICAgICAoYmFzZSAxNikJCUFTQU5URSBURUNITk9MT0dJRVMKLQkJCQk4MjEgRk9YIExBTkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTUgICAoaGV4KQkJU09OWSBURUtUUk9OSVggQ09SUC4KLTAwMDA5NSAgICAgKGJhc2UgMTYpCQlTT05ZIFRFS1RST05JWCBDT1JQLgotCQkJCVAuTy4gQk9YIDUyMDkgVE9LWU8gSU5UJ0wKLQkJCQlUT0tZTyAxMDAtMzEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTk2ICAgKGhleCkJCU1BUkNPTkkgRUxFQ1RST05JQ1MgTFRELgotMDAwMDk2ICAgICAoYmFzZSAxNikJCU1BUkNPTkkgRUxFQ1RST05JQ1MgTFRELgotCQkJCUJST1dOUyBMQU5FLCBUSEUgQUlSUE9SVAotCQkJCVBPUlRTTU9VVEggLS0gSEFNUFNISVJFIFAwMyA1UEgKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLTk3ICAgKGhleCkJCUVNQyBDb3Jwb3JhdGlvbgotMDAwMDk3ICAgICAoYmFzZSAxNikJCUVNQyBDb3Jwb3JhdGlvbgotCQkJCTE3NiBTb3V0aCBTdHJlZXQKLQkJCQlIb3BraW50b24gTUEgMDE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTk4ICAgKGhleCkJCUNST1NTQ09NTSBDT1JQT1JBVElPTgotMDAwMDk4ICAgICAoYmFzZSAxNikJCUNST1NTQ09NTSBDT1JQT1JBVElPTgotCQkJCTQ1MCBET05BTEQgTFlOQ0ggQk9VTEVWQVJECi0JCQkJTUFSTEJPUk9VR0ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTk5ICAgKGhleCkJCU1UWCwgSU5DLgotMDAwMDk5ICAgICAoYmFzZSAxNikJCU1UWCwgSU5DLgotCQkJCTMzMDEgVEVSTUlOQUwgRFJJVkUKLQkJCQlSQUxFSUdIIE5DIDI3NjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC05QSAgIChoZXgpCQlSQyBDT01QVVRFUiBBL1MKLTAwMDA5QSAgICAgKGJhc2UgMTYpCQlSQyBDT01QVVRFUiBBL1MKLQkJCQlMQVVUUlVQQkpFUkcgMQotCQkJCURLLTI3NTAgQkFMTEVSVVAKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC0wMC05QiAgIChoZXgpCQlJTkZPUk1BVElPTiBJTlRFUk5BVElPTkFMLCBJTkMKLTAwMDA5QiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBJTlRFUk5BVElPTkFMLCBJTkMKLQkJCQk1Ri4sIFRIRSA3VEggSU5EVVNUUlkgQkxERy4KLQkJCQkxLTIwLTE0IEpJTk5BTiBTSElCVVlBLUtVIFRPS1lPCi0JCQkJSkFQQU4gMTUwCi0JCQkJSkFQQU4KLQotMDAtMDAtOUMgICAoaGV4KQkJUk9MTSBNSUwtU1BFQyBDT01QVVRFUlMKLTAwMDA5QyAgICAgKGJhc2UgMTYpCQlST0xNIE1JTC1TUEVDIENPTVBVVEVSUwotCQkJCTMxNTEgWkFOS0VSIFJPQUQKLQkJCQlTQU4gSk9TRSBDQSA5NTE0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOUQgICAoaGV4KQkJTE9DVVMgQ09NUFVUSU5HIENPUlBPUkFUSU9OCi0wMDAwOUQgICAgIChiYXNlIDE2KQkJTE9DVVMgQ09NUFVUSU5HIENPUlBPUkFUSU9OCi0JCQkJOTgwMCBMQSBDSUVORUdBCi0JCQkJSU5HTEVXT09EIENBIDkwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC05RSAgIChoZXgpCQlNQVJMSSBTLkEuCi0wMDAwOUUgICAgIChiYXNlIDE2KQkJTUFSTEkgUy5BLgotCQkJCUNIRU1JTiBUQVZFUk5FWSAzCi0JCQkJMTIxOCBHRU5FVkEKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAwLTlGICAgKGhleCkJCUFNRVJJU1RBUiBURUNITk9MT0dJRVMgSU5DLgotMDAwMDlGICAgICAoYmFzZSAxNikJCUFNRVJJU1RBUiBURUNITk9MT0dJRVMgSU5DLgotCQkJCTQ3IFdISVRUSUVSIEFWRS4KLQkJCQlNRURGT1JEIE5ZIDExNzYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1BMCAgIChoZXgpCQlTQU5ZTyBFbGVjdHJpYyBDby4sIEx0ZC4KLTAwMDBBMCAgICAgKGJhc2UgMTYpCQlTQU5ZTyBFbGVjdHJpYyBDby4sIEx0ZC4KLQkJCQk1LTUsIEtlaWhhbi1ob25kb3JpIDItY2hvbWUsCi0JCQkJTW9yaWd1Y2hpIENpdHkgT3Nha2EgNTcwLTg2NzcKLQkJCQlKQVBBTgotCi0wMC0wMC1BMSAgIChoZXgpCQlNQVJRVUVUVEUgRUxFQ1RSSUMgQ08uCi0wMDAwQTEgICAgIChiYXNlIDE2KQkJTUFSUVVFVFRFIEVMRUNUUklDIENPLgotCQkJCTgyMDAgV0VTVCBUT1dFUiBBVkVOVUUKLQkJCQlNSUxXQVVLRUUgV0kgNTMyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUEyICAgKGhleCkJCUJBWSBORVRXT1JLUwotMDAwMEEyICAgICAoYmFzZSAxNikJCUJBWSBORVRXT1JLUwotCQkJCTQ0MDEgR1JFQVQgQU1FUklDQU4gUEtXWQotCQkJCU0vUzpTQzAxLTA1Ci0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTItODE4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTMgICAoaGV4KQkJTkVUV09SSyBBUFBMSUNBVElPTiBURUNITk9MT0dZCi0wMDAwQTMgICAgIChiYXNlIDE2KQkJTkVUV09SSyBBUFBMSUNBVElPTiBURUNITk9MT0dZCi0JCQkJMTY4NiBERUxMIEFWRU5VRQotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1BNCAgIChoZXgpCQlBQ09STiBDT01QVVRFUlMgTElNSVRFRAotMDAwMEE0ICAgICAoYmFzZSAxNikJCUFDT1JOIENPTVBVVEVSUyBMSU1JVEVECi0JCQkJRlVMQk9VUk4gUk9BRCwgQ0hFUlJZIEhJTlRPTgotCQkJCUNBTUJSSURHRSBDQjEgNEpOLAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1BNSAgIChoZXgpCQlDT01QQVRJQkxFIFNZU1RFTVMgQ09SUC4KLTAwMDBBNSAgICAgKGJhc2UgMTYpCQlDT01QQVRJQkxFIFNZU1RFTVMgQ09SUC4KLQkJCQlQLk8uIEJPWCAxNzIyMAotCQkJCUJPVUxERVIgQ08gODAzMDgtNzIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTYgICAoaGV4KQkJTkVUV09SSyBHRU5FUkFMIENPUlBPUkFUSU9OCi0wMDAwQTYgICAgIChiYXNlIDE2KQkJTkVUV09SSyBHRU5FUkFMIENPUlBPUkFUSU9OCi0JCQkJMTI5NiBCIExBV1JFTkNFIFNUQVRJT04gUk9BRAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTcgICAoaGV4KQkJTkVUV09SSyBDT01QVVRJTkcgREVWSUNFUyBJTkMuCi0wMDAwQTcgICAgIChiYXNlIDE2KQkJTkVUV09SSyBDT01QVVRJTkcgREVWSUNFUyBJTkMuCi0JCQkJMzUwIE5PUlRIIEJFUk5BUkRPCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTggICAoaGV4KQkJU1RSQVRVUyBDT01QVVRFUiBJTkMuCi0wMDAwQTggICAgIChiYXNlIDE2KQkJU1RSQVRVUyBDT01QVVRFUiBJTkMuCi0JCQkJMTExIFBvd2Rlcm1pbGwgUm9hZAotCQkJCU1heW5hcmQgTUEgMDE3NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUE5ICAgKGhleCkJCU5FVFdPUksgU1lTVEVNUyBDT1JQLgotMDAwMEE5ICAgICAoYmFzZSAxNikJCU5FVFdPUksgU1lTVEVNUyBDT1JQLgotCQkJCTc2MDAgQk9PTkUgQVZFTlVFIE5PUlRICi0JCQkJTUlOTkVBUE9MSVMgTU4gNTU0MjgtMTA5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQUEgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDBBQSAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCU9GRklDRSBTWVNURU1TIERJVklTSU9OCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1BQiAgIChoZXgpCQlMT0dJQyBNT0RFTElORyBDT1JQT1JBVElPTgotMDAwMEFCICAgICAoYmFzZSAxNikJCUxPR0lDIE1PREVMSU5HIENPUlBPUkFUSU9OCi0JCQkJMTUyMCBNQ0NBTkRMRVNTIERSSVZFCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUFDICAgKGhleCkJCUNPTldBUkUgQ09NUFVURVIgQ09OU1VMVElORwotMDAwMEFDICAgICAoYmFzZSAxNikJCUNPTldBUkUgQ09NUFVURVIgQ09OU1VMVElORwotCQkJCUtJTExJU0ZFTERTVFJBU1NFIDY0Ci0JCQkJNzYyMjcgS0FSTFNSVUhFCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDAtQUQgICAoaGV4KQkJQlJVS0VSIElOU1RSVU1FTlRTIElOQy4KLTAwMDBBRCAgICAgKGJhc2UgMTYpCQlCUlVLRVIgSU5TVFJVTUVOVFMgSU5DLgotCQkJCU1BTk5JTkcgUEFSSwotCQkJCUJJTExFUklDQSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQUUgICAoaGV4KQkJREFTU0FVTFQgRUxFQ1RST05JUVVFCi0wMDAwQUUgICAgIChiYXNlIDE2KQkJREFTU0FVTFQgRUxFQ1RST05JUVVFCi0JCQkJNTUsIFFVQUkgTUFSQ0VMIERBU1NBVUxUCi0JCQkJOTIyMTQgU1QgQ0xPVUQKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtQUYgICAoaGV4KQkJTlVDTEVBUiBEQVRBIElOU1RSVU1FTlRBVElPTgotMDAwMEFGICAgICAoYmFzZSAxNikJCU5VQ0xFQVIgREFUQSBJTlNUUlVNRU5UQVRJT04KLQkJCQlHT0xGICYgTUVBQ0hBTSBST0FEUwotCQkJCVNDSEFVTUJFUkcgSUwgNjAxOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUIwICAgKGhleCkJCVJORC1SQUQgTkVUV09SSyBERVZJQ0VTCi0wMDAwQjAgICAgIChiYXNlIDE2KQkJUk5ELVJBRCBORVRXT1JLIERFVklDRVMKLQkJCQlBVElESU0gVEVDSE5PTCdDTCBCTERHLiAxCi0JCQkJVEVMIEFWSVYgIDYxMTMxCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAwLUIxICAgKGhleCkJCUFMUEhBIE1JQ1JPU1lTVEVNUyBJTkMuCi0wMDAwQjEgICAgIChiYXNlIDE2KQkJQUxQSEEgTUlDUk9TWVNURU1TIElOQy4KLQkJCQkzNTAxIFNVTkZMT1dFUgotCQkJCVNBTlRBIEFOQSBDQSA5MjcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjIgICAoaGV4KQkJVEVMRVZJREVPIFNZU1RFTVMsIElOQy4KLTAwMDBCMiAgICAgKGJhc2UgMTYpCQlURUxFVklERU8gU1lTVEVNUywgSU5DLgotCQkJCTU1MCBFLiBCUk9LQVcgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTYxLTkwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUIzICAgKGhleCkJCUNJTUxJTkMgSU5DT1JQT1JBVEVECi0wMDAwQjMgICAgIChiYXNlIDE2KQkJQ0lNTElOQyBJTkNPUlBPUkFURUQKLQkJCQkxOTU3IENST09LUyBST0FECi0JCQkJVFJPWSBNSSA0ODA4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjQgICAoaGV4KQkJRURJTUFYIENPTVBVVEVSIENPTVBBTlkKLTAwMDBCNCAgICAgKGJhc2UgMTYpCQlFRElNQVggQ09NUFVURVIgQ09NUEFOWQotCQkJCU5vLiAzLCBXdS1DaHVhbiAzcmQgUm9hZCwKLQkJCQlXdS1LdSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlUYWlwZWkgSHNpZW4gIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDAtQjUgICAoaGV4KQkJREFUQUJJTElUWSBTT0ZUV0FSRSBTWVMuIElOQy4KLTAwMDBCNSAgICAgKGJhc2UgMTYpCQlEQVRBQklMSVRZIFNPRlRXQVJFIFNZUy4gSU5DLgotCQkJCU9ORSBQQUxNRVIgVEVSUkFDRQotCQkJCUNBUkxTVEFEVCBOSiAwNzA3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjYgICAoaGV4KQkJTUlDUk8tTUFUSUMgUkVTRUFSQ0gKLTAwMDBCNiAgICAgKGJhc2UgMTYpCQlNSUNSTy1NQVRJQyBSRVNFQVJDSAotCQkJCUFNQkFDSFRFTkxBQU4gIDIxIEI1Ci0JCQkJQiAtIDMwMzAgIEhFVkVSTEVFCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtMDAtQjcgICAoaGV4KQkJRE9WRSBDT01QVVRFUiBDT1JQT1JBVElPTgotMDAwMEI3ICAgICAoYmFzZSAxNikJCURPVkUgQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQkxMjAwIE5PUlRIIDIzUkQgU1RSRUVUCi0JCQkJV0lMTUlOR1RPTiBOQyAyODQwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjggICAoaGV4KQkJU0VJS09TSEEgQ08uLCBMVEQuCi0wMDAwQjggICAgIChiYXNlIDE2KQkJU0VJS09TSEEgQ08uLCBMVEQuCi0JCQkJU1lTVEVNIEVRVUlQTUVOVCBESVZJU0lPTgotCQkJCTQtMS0xIFRBSUhFSSBTVU1JREEtS1UgVE9LWU8gMTMwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1COSAgIChoZXgpCQlNQ0RPTk5FTEwgRE9VR0xBUyBDT01QVVRFUiBTWVMKLTAwMDBCOSAgICAgKGJhc2UgMTYpCQlNQ0RPTk5FTEwgRE9VR0xBUyBDT01QVVRFUiBTWVMKLQkJCQlESVYgTUNET05ORUxMIERPVUdMQVMgSU5GIFNZUwotCQkJCUJPVU5EQVJZIFdBWSBIRU1FTCBIRU1QU1RFQUQgSEVSVFMKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtQkEgICAoaGV4KQkJU0lJRywgSU5DLgotMDAwMEJBICAgICAoYmFzZSAxNikJCVNJSUcsIElOQy4KLQkJCQk2MDc4IFNURVdBUlQgQVZFTlVFCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQkIgICAoaGV4KQkJVFJJLURBVEEKLTAwMDBCQiAgICAgKGJhc2UgMTYpCQlUUkktREFUQQotCQkJCTUwNSBFQVNUIE1JRERMRUZJRUxEIFJPQUQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzLTQwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUJDICAgKGhleCkJCVJvY2t3ZWxsIEF1dG9tYXRpb24KLTAwMDBCQyAgICAgKGJhc2UgMTYpCQlSb2Nrd2VsbCBBdXRvbWF0aW9uCi0JCQkJMSBBbGxlbi1CcmFkbGV5IERyLgotCQkJCU1heWZpZWxkIEhlaWdodHMgT0ggNDQxMjQtNjExOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQkQgICAoaGV4KQkJTUlUU1VCSVNISSBDQUJMRSBDT01QQU5ZCi0wMDAwQkQgICAgIChiYXNlIDE2KQkJTUlUU1VCSVNISSBDQUJMRSBDT01QQU5ZCi0JCQkJNTIwIE1BRElTT04gQVZFTlVFCi0JCQkJTkVXIFlPUksgTlkgMTAwMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUJFICAgKGhleCkJCVRIRSBOVEkgR1JPVVAKLTAwMDBCRSAgICAgKGJhc2UgMTYpCQlUSEUgTlRJIEdST1VQCi0JCQkJNDcwMSBQQVRSSUNLIEhFTlJZIERSSVZFCi0JCQkJU1VJVEUgMjQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQkYgICAoaGV4KQkJU1lNTUVUUklDIENPTVBVVEVSIFNZU1RFTVMKLTAwMDBCRiAgICAgKGJhc2UgMTYpCQlTWU1NRVRSSUMgQ09NUFVURVIgU1lTVEVNUwotCQkJCTE2MjAgT0FLTEFORCBST0FEICBTVUlURSBELTIwMAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DMCAgIChoZXgpCQlXRVNURVJOIERJR0lUQUwgQ09SUE9SQVRJT04KLTAwMDBDMCAgICAgKGJhc2UgMTYpCQlXRVNURVJOIERJR0lUQUwgQ09SUE9SQVRJT04KLQkJCQk4MTA1IElSVklORSBDRU5URVIgRFJJVkUKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUMxICAgKGhleCkJCU1hZGdlIEx0ZC4KLTAwMDBDMSAgICAgKGJhc2UgMTYpCQlNYWRnZSBMdGQuCi0JCQkJTWFkZ2UgSG91c2UKLQkJCQlQcmlvcnMgV2F5Ci0JCQkJTWFpbmRlbmhlYWQgQmVya3NoaXJlIFNMNiAySFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1DMiAgIChoZXgpCQlJTkZPUk1BVElPTiBQUkVTRU5UQVRJT04gVEVDSC4KLTAwMDBDMiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBQUkVTRU5UQVRJT04gVEVDSC4KLQkJCQkyMzgwMSBDQUxBQkFTQVMgUk9BRAotCQkJCVNVSVRFIDIwMTEKLQkJCQlDQUxBQkFTQVMgQ0EgOTEzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUMzICAgKGhleCkJCUhBUlJJUyBDT1JQIENPTVBVVEVSIFNZUyBESVYKLTAwMDBDMyAgICAgKGJhc2UgMTYpCQlIQVJSSVMgQ09SUCBDT01QVVRFUiBTWVMgRElWCi0JCQkJTS9TIDc1Ci0JCQkJMTAyNSBXLiBOQVNBIEJMVkQuTCAzMzMwOQotCQkJCU1FTEJPVVJORSBGTCAzMjkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQzQgICAoaGV4KQkJV0FURVJTIERJVi4gT0YgTUlMTElQT1JFCi0wMDAwQzQgICAgIChiYXNlIDE2KQkJV0FURVJTIERJVi4gT0YgTUlMTElQT1JFCi0JCQkJMzQgTUFQTEUgU1RSRUVUCi0JCQkJTUlMRk9SRCBNQSAwMTc1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQzUgICAoaGV4KQkJRkFSQUxMT04gQ09NUFVUSU5HL05FVE9QSUEKLTAwMDBDNSAgICAgKGJhc2UgMTYpCQlGQVJBTExPTiBDT01QVVRJTkcvTkVUT1BJQQotCQkJCTI0NzAgTUFSSU5FUiBTUVVBUkUgTE9PUAotCQkJCUFMQU1FREEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUM2ICAgKGhleCkJCUVPTiBTWVNURU1TCi0wMDAwQzYgICAgIChiYXNlIDE2KQkJRU9OIFNZU1RFTVMKLQkJCQkxMDYwMSBTT1VUSCBERUFOWkEgQkxWRC4KLQkJCQlTVUlURSAzMDMKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUM3ICAgKGhleCkJCUFSSVggQ09SUE9SQVRJT04KLTAwMDBDNyAgICAgKGJhc2UgMTYpCQlBUklYIENPUlBPUkFUSU9OCi0JCQkJRU5HSU5FRVJJTkcgTUFJTCBTVE9QCi0JCQkJMTE1MiBNT1JTRSBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUM4ICAgKGhleCkJCUFMVE9TIENPTVBVVEVSIFNZU1RFTVMKLTAwMDBDOCAgICAgKGJhc2UgMTYpCQlBTFRPUyBDT01QVVRFUiBTWVNURU1TCi0JCQkJMjY0MSBPUkNIQVJEIFBBUktXQVkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQzkgICAoaGV4KQkJRW11bGV4IENvcnBvcmF0aW9uCi0wMDAwQzkgICAgIChiYXNlIDE2KQkJRW11bGV4IENvcnBvcmF0aW9uCi0JCQkJMzMzMyBTdXNhbiBTdHJlZXQKLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DQSAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDAwQ0EgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlLCBTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DQiAgIChoZXgpCQlDT01QVS1TSEFDSyBFTEVDVFJPTklDIEdNQkgKLTAwMDBDQiAgICAgKGJhc2UgMTYpCQlDT01QVS1TSEFDSyBFTEVDVFJPTklDIEdNQkgKLQkJCQlSSU5HU1RSLiA1NiAtIDU4LCA1NDUwIE5FVVdJRUQKLQkJCQlXRVNUIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLUNDICAgKGhleCkJCURFTlNBTiBDTy4sIExURC4KLTAwMDBDQyAgICAgKGJhc2UgMTYpCQlERU5TQU4gQ08uLCBMVEQuCi0JCQkJMS0yMy0xMSwgS0FNSVRBS0FJRE8KLQkJCQlTVUdJTkFNSS1LVSwgVE9LWU8gMTY4Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1DRCAgIChoZXgpCQlBbGxpZWQgVGVsZXNpcyBMYWJzIEx0ZAotMDAwMENEICAgICAoYmFzZSAxNikJCUFsbGllZCBUZWxlc2lzIExhYnMgTHRkCi0JCQkJMjcgTmF6YXJldGggQXZlbnVlCi0JCQkJTWlkZGxldG9uIENocmlzdGNodXJjaCA4MDI0Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMDAtQ0UgICAoaGV4KQkJTUVHQURBVEEgQ09SUC4KLTAwMDBDRSAgICAgKGJhc2UgMTYpCQlNRUdBREFUQSBDT1JQLgotCQkJCTM1IE9SVklMTEUgRFJJVkUKLQkJCQlCT0hFTUlBIE5ZIDExNzE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DRiAgIChoZXgpCQlIQVlFUyBNSUNST0NPTVBVVEVSIFBST0RVQ1RTCi0wMDAwQ0YgICAgIChiYXNlIDE2KQkJSEFZRVMgTUlDUk9DT01QVVRFUiBQUk9EVUNUUwotCQkJCShDQU5BREEpIExURC4KLQkJCQkyOTUgUEhJTExJUCBTVFJFRVQgV0FURVJMT08sIE9OVEFSSU8gTjJMCi0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAwLUQwICAgKGhleCkJCURFVkVMQ09OIEVMRUNUUk9OSUNTIExURC4KLTAwMDBEMCAgICAgKGJhc2UgMTYpCQlERVZFTENPTiBFTEVDVFJPTklDUyBMVEQuCi0JCQkJODU2LTUxU1QgU1RSRUVUIEVBU1QKLQkJCQlTQVNLQVRPT04gU0FTS0FUQ0hFV0FOIFM3SyA1QzcKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDAtRDEgICAoaGV4KQkJQURBUFRFQyBJTkNPUlBPUkFURUQKLTAwMDBEMSAgICAgKGJhc2UgMTYpCQlBREFQVEVDIElOQ09SUE9SQVRFRAotCQkJCU0vUyAxODAKLQkJCQk2OTEgU09VVEggTUlMUElUQVMgQkxWRC4KLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRDIgICAoaGV4KQkJU0JFLCBJTkMuCi0wMDAwRDIgICAgIChiYXNlIDE2KQkJU0JFLCBJTkMuCi0JCQkJNDU1MCBOT1JUSCBDQU5ZT04gUk9BRAotCQkJCVNBTiBSQU1PTiBDQSA5NDU4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRDMgICAoaGV4KQkJV0FORyBMQUJPUkFUT1JJRVMgSU5DLgotMDAwMEQzICAgICAoYmFzZSAxNikJCVdBTkcgTEFCT1JBVE9SSUVTIElOQy4KLQkJCQkKLQotMDAtMDAtRDQgICAoaGV4KQkJUFVSRSBEQVRBIExURC4KLTAwMDBENCAgICAgKGJhc2UgMTYpCQlQVVJFIERBVEEgTFRELgotCQkJCTIwMCBXRVNUIEJFQVZFUiBDUkVFSyBST0FECi0JCQkJUklDSE1PTkQgSElMTCAgT05UQVJJTwotCQkJCUw0QiAxQjQgQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAwLUQ1ICAgKGhleCkJCU1JQ1JPR05PU0lTIElOVEVSTkFUSU9OQUwKLTAwMDBENSAgICAgKGJhc2UgMTYpCQlNSUNST0dOT1NJUyBJTlRFUk5BVElPTkFMCi0JCQkJNjMgUVVFRU4gVklDVE9SSUEgU1RSRUVUCi0JCQkJTE9ORE9OIEVDNE4gNFVECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1ENiAgIChoZXgpCQlQVU5DSCBMSU5FIEhPTERJTkcKLTAwMDBENiAgICAgKGJhc2UgMTYpCQlQVU5DSCBMSU5FIEhPTERJTkcKLQkJCQlQLk8uIEJPWCAzOTE3MDgKLQkJCQlCUkFNTEVZIDIwMTgKLQkJCQlTT1VUSCBBRlJJQ0EKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMDAtRDcgICAoaGV4KQkJREFSVE1PVVRIIENPTExFR0UKLTAwMDBENyAgICAgKGJhc2UgMTYpCQlEQVJUTU9VVEggQ09MTEVHRQotCQkJCUtJRVdJVCBDT01QVVRFUiBDRU5URVIKLQkJCQlIQU5PVkVSIE5IIDAzNzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1EOCAgIChoZXgpCQlOT1ZFTEwsIElOQy4KLTAwMDBEOCAgICAgKGJhc2UgMTYpCQlOT1ZFTEwsIElOQy4KLQkJCQkxMjIgRUFTVCAxNzAwIFNPVVRIIE0vUzpFLTEyLTEKLQkJCQlQLk8uIEJPWCA1OTAwCi0JCQkJUFJPVk8gVVQgODQ2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUQ5ICAgKGhleCkJCU5JUFBPTiBURUxFR1JBUEggJiBURUxFUEhPTkUKLTAwMDBEOSAgICAgKGJhc2UgMTYpCQlOSVBQT04gVEVMRUdSQVBIICYgVEVMRVBIT05FCi0JCQkJQ09SUE9SQVRJT04gKE5UVCkKLQkJCQlURUlTSElOIEJMREcuIDMtMSBPT1RFTUFDSEkgMiBDSE9NRSwgQ0hJCi0JCQkJVE9LWU8gMTAwLTgxMTYgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1EQSAgIChoZXgpCQlBVEVYCi0wMDAwREEgICAgIChiYXNlIDE2KQkJQVRFWAotCQkJCTE1IENST1NCWSBEUklWRQotCQkJCUJFREZPUkQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLURCICAgKGhleCkJCUJSSVRJU0ggVEVMRUNPTU1VTklDQVRJT05TIFBMQwotMDAwMERCICAgICAoYmFzZSAxNikJCUJSSVRJU0ggVEVMRUNPTU1VTklDQVRJT05TIFBMQwotCQkJCTgxIE5FV0dBVEUgU1RSRUVUCi0JCQkJTE9ORE9OLCBFQzFBIDdBSgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1EQyAgIChoZXgpCQlIQVlFUyBNSUNST0NPTVBVVEVSIFBST0RVQ1RTCi0wMDAwREMgICAgIChiYXNlIDE2KQkJSEFZRVMgTUlDUk9DT01QVVRFUiBQUk9EVUNUUwotCQkJCVAuTy4gQk9YIDEwNTIwMwotCQkJCUFUTEFOVEEgR0EgMzAzNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUREICAgKGhleCkJCVRDTCBJTkNPUlBPUkFURUQKLTAwMDBERCAgICAgKGJhc2UgMTYpCQlUQ0wgSU5DT1JQT1JBVEVECi0JCQkJNDE4MjkgQUxCUkFFIFNUUkVFVAotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLURFICAgKGhleCkJCUNFVElBCi0wMDAwREUgICAgIChiYXNlIDE2KQkJQ0VUSUEKLQkJCQkxNTAgUlVFIEJFUlRIRUxPVAotCQkJCVpJIFRPVUxPTiBFU1QgODMwODggVE9VTE9OIENFREVYCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTAwLURGICAgKGhleCkJCUJFTEwgJiBIT1dFTEwgUFVCIFNZUyBESVYKLTAwMDBERiAgICAgKGJhc2UgMTYpCQlCRUxMICYgSE9XRUxMIFBVQiBTWVMgRElWCi0JCQkJT0xEIE1BTlNGSUVMRCBST0FECi0JCQkJV09PU1RFUiBPSCA0NDY5MS05MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMCAgIChoZXgpCQlRVUFEUkFNIENPUlAuCi0wMDAwRTAgICAgIChiYXNlIDE2KQkJUVVBRFJBTSBDT1JQLgotCQkJCU9ORSBRVUFEIFdBWQotCQkJCU5PUkNST1NTIEdBIDMwMDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMSAgIChoZXgpCQlHUklEIFNZU1RFTVMKLTAwMDBFMSAgICAgKGJhc2UgMTYpCQlHUklEIFNZU1RFTVMKLQkJCQk0NzIxMSBMQUtFVklFVyBCT1VMRVZBUkQKLQkJCQlQLk8uIEJPWCA1MDAzCi0JCQkJRlJFTU9OVCBDQSA5NDUzNy01MDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMiAgIChoZXgpCQlBQ0VSIFRFQ0hOT0xPR0lFUyBDT1JQLgotMDAwMEUyICAgICAoYmFzZSAxNikJCUFDRVIgVEVDSE5PTE9HSUVTIENPUlAuCi0JCQkJNDAxIENIQVJDT1QgQVZFLgotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMyAgIChoZXgpCQlJTlRFR1JBVEVEIE1JQ1JPIFBST0RVQ1RTIExURAotMDAwMEUzICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgTUlDUk8gUFJPRFVDVFMgTFRECi0JCQkJSU1QLCBOTy4gMSBJTkRVU1RSSUFMIEVTVEFURQotCQkJCUNPTlNFVFQsIENPIERVS0hBTQotCQkJCUVOR0xBTkQgRU5HTEFORCBESDg2VEoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1FNCAgIChoZXgpCQlJTjIgR1JPVVBFIElOVEVSVEVDSE5JUVVFCi0wMDAwRTQgICAgIChiYXNlIDE2KQkJSU4yIEdST1VQRSBJTlRFUlRFQ0hOSVFVRQotCQkJCUlOMiAtIEIuUC42MwotCQkJCTc4MzczIFBMQUlTSVIgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtRTUgICAoaGV4KQkJU0lHTUVYIExURC4KLTAwMDBFNSAgICAgKGJhc2UgMTYpCQlTSUdNRVggTFRELgotCQkJCVNJR01BIEhPVVNFCi0JCQkJTk9SVEggSEVBVEggTEFORSBIT1JTSEFNLCBXRVNUIFNVU1NFWAotCQkJCVJIMTIgNFVaIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1FNiAgIChoZXgpCQlBUFRPUiBQUk9EVUlUUyBERSBDT01NIElORFVTVAotMDAwMEU2ICAgICAoYmFzZSAxNikJCUFQVE9SIFBST0RVSVRTIERFIENPTU0gSU5EVVNUCi0JCQkJNjEsIENIRU1JTiBEVSBWSUVVWC1DSEVORQotCQkJCVpJUlNULUJQIDE3NyAzODI0NCBNRVlMQU4gQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtRTcgICAoaGV4KQkJU1RBUiBHQVRFIFRFQ0hOT0xPR0lFUwotMDAwMEU3ICAgICAoYmFzZSAxNikJCVNUQVIgR0FURSBURUNITk9MT0dJRVMKLQkJCQkyOTMwMCBBVVJPUkEgUk9BRAotCQkJCVNPTE9OIE9IIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FOCAgIChoZXgpCQlBQ0NUT04gVEVDSE5PTE9HWSBDT1JQLgotMDAwMEU4ICAgICAoYmFzZSAxNikJCUFDQ1RPTiBURUNITk9MT0dZIENPUlAuCi0JCQkJNDY3NTAgRlJFTU9OVCBCTFZELiAjMTA0Ci0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRTkgICAoaGV4KQkJSVNJQ0FELCBJTkMuCi0wMDAwRTkgICAgIChiYXNlIDE2KQkJSVNJQ0FELCBJTkMuCi0JCQkJMTkyMCBXRVNUIENPUlBPUkFURSBXQVkKLQkJCQlBTkFIRUlNIENBIDkyODAzLTYxMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUVBICAgKGhleCkJCVVQTk9EIEFCCi0wMDAwRUEgICAgIChiYXNlIDE2KQkJVVBOT0QgQUIKLQkJCQlCT1ggMjMwNTEKLQkJCQlTLTc1MCAyMyBVUFBTQUxBCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAwLUVCICAgKGhleCkJCU1BVFNVU0hJVEEgQ09NTS4gSU5ELiBDTy4gTFRELgotMDAwMEVCICAgICAoYmFzZSAxNikJCU1BVFNVU0hJVEEgQ09NTS4gSU5ELiBDTy4gTFRELgotCQkJCTMtMSAgNC1DSE9NRQotCQkJCVRTVU5BU0hJTUEtSElHQVNISSBLT0hPS1UtS1UgIFlPS09IQU1BCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1FQyAgIChoZXgpCQlNSUNST1BST0NFU1MKLTAwMDBFQyAgICAgKGJhc2UgMTYpCQlNSUNST1BST0NFU1MKLQkJCQk5NyBCSVMsIFJVRSBERSBDT0xPTUJFUwotCQkJCUIuUC4gODcgOTI0MDAgQ09VUkJFVk9JRQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMC1FRCAgIChoZXgpCQlBUFJJTAotMDAwMEVEICAgICAoYmFzZSAxNikJCUFQUklMCi0JCQkJNjAsIFJVRSBERSBDQVJUQUxFCi0JCQkJQlAgMzggMzgxNzAgU0VZU1NJTkVULVBBUklTRVQKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtRUUgICAoaGV4KQkJTkVUV09SSyBERVNJR05FUlMsIExURC4KLTAwMDBFRSAgICAgKGJhc2UgMTYpCQlORVRXT1JLIERFU0lHTkVSUywgTFRELgotCQkJCVVOSVQgMUEsIEhPUk5CRUFNIFBBUksKLQkJCQlIT09LU1RPTkUgUk9BRCBIQVJST0dBVEUsIE5PUlRIIFlPUktTSElSCi0JCQkJVU5JVEVEIEtJTkdET00gSEcyIDhRVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLUVGICAgKGhleCkJCUtUSQotMDAwMEVGICAgICAoYmFzZSAxNikJCUtUSQotCQkJCTIxNTcgTydUT09MRSBBVkVOVUUKLQkJCQlTVUlURSBICi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUYwICAgKGhleCkJCVNBTVNVTkcgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDAwRjAgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQk0MTYsIE1BRVRBTi0zRE9ORywgUEFMREFMLUdVCi0JCQkJU1VXT04gQ0lUWSwgS1lVTkdLSS1ETwotCQkJCTQ0Mi03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDAtRjEgICAoaGV4KQkJTUFHTkEgQ09NUFVURVIgQ09SUE9SQVRJT04KLTAwMDBGMSAgICAgKGJhc2UgMTYpCQlNQUdOQSBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTIyIEtFRVdBWURJTiBEUklWRQotCQkJCVNBTEVNIE5IIDAzMDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1GMiAgIChoZXgpCQlTUElERVIgQ09NTVVOSUNBVElPTlMKLTAwMDBGMiAgICAgKGJhc2UgMTYpCQlTUElERVIgQ09NTVVOSUNBVElPTlMKLQkJCQk3NDkxIEJSSUFSIFJPQUQKLQkJCQlNT05UUkVBTCwgIFFVRUJFQyBINFcgMUs0Ci0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAwLUYzICAgKGhleCkJCUdBTkRBTEYgREFUQSBMSU1JVEVECi0wMDAwRjMgICAgIChiYXNlIDE2KQkJR0FOREFMRiBEQVRBIExJTUlURUQKLQkJCQkxMzAgQ09MT05OQURFIFJPQUQgU09VVEgKLQkJCQlORVBFQU4gIE9OVEFSSU8gIEsyRSA3TTQKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDAtRjQgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMKLTAwMDBGNCAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcwotCQkJCUNPUlBPUkFUSU9OCi0JCQkJOTUwIEtJRkVSIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUY1ICAgKGhleCkJCURJQU1PTkQgU0FMRVMgTElNSVRFRAotMDAwMEY1ICAgICAoYmFzZSAxNikJCURJQU1PTkQgU0FMRVMgTElNSVRFRAotCQkJCTE3LCBDSEFSVEVSSE9VU0UgU1RSRUVUCi0JCQkJTE9ORE9OLCBFQ0lOIDZSQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtRjYgICAoaGV4KQkJQVBQTElFRCBNSUNST1NZU1RFTVMgQ09SUC4KLTAwMDBGNiAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIE1JQ1JPU1lTVEVNUyBDT1JQLgotCQkJCTUwMjAgMTQ4IEFWRU5VRSwgTi5FLgotCQkJCVAuTy4gQk9YIDk3MDAyCi0JCQkJUkVETU9ORCBXQSA5ODA3My05NzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1GNyAgIChoZXgpCQlZT1VUSCBLRUVQIEVOVEVSUFJJU0UgQ08gTFRECi0wMDAwRjcgICAgIChiYXNlIDE2KQkJWU9VVEggS0VFUCBFTlRFUlBSSVNFIENPIExURAotCQkJCTMvRiBOTy4gNzEyIE1JTlRTVSBFLiBST0FECi0JCQkJVEFJUEVJLCBUQUlXQU4KLQkJCQlST0MKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAwLUY4ICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0wMDAwRjggICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQlMS0cgMS0yL0ExOQotCQkJCTU1MCBLSU5HIFNUUkVFVCBMSVRUTEVUT04gIE1BICAwMTQ2MC0xMjgKLQkJCQkwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRjkgICAoaGV4KQkJUVVPVFJPTiBTWVNURU1TIElOQy4KLTAwMDBGOSAgICAgKGJhc2UgMTYpCQlRVU9UUk9OIFNZU1RFTVMgSU5DLgotCQkJCTU0NTQgQkVFVEhPVkVOIFNULgotCQkJCUxPUyBBTkdFTEVTIENBIDkwMDY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1GQSAgIChoZXgpCQlNSUNST1NBR0UgQ09NUFVURVIgU1lTVEVNUyBJTkMKLTAwMDBGQSAgICAgKGJhc2UgMTYpCQlNSUNST1NBR0UgQ09NUFVURVIgU1lTVEVNUyBJTkMKLQkJCQk2ODAgU09VVEggUk9DSyBCTFZECi0JCQkJUkVOTyBORSA4OTUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRkIgICAoaGV4KQkJUkVDSE5FUiBaVVIgS09NTVVOSUtBVElPTgotMDAwMEZCICAgICAoYmFzZSAxNikJCVJFQ0hORVIgWlVSIEtPTU1VTklLQVRJT04KLQkJCQlCSVRaRU5TVFIuIDExCi0JCQkJRi01NDY0IEFTQkFDSAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLUZDICAgKGhleCkJCU1FSUtPCi0wMDAwRkMgICAgIChiYXNlIDE2KQkJTUVJS08KLQkJCQk2NTAgQVpURUMgV0VTVAotCQkJCUJSSVNUT0wgQlMxMiA0U0QKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLUZEICAgKGhleCkJCUhJR0ggTEVWRUwgSEFSRFdBUkUKLTAwMDBGRCAgICAgKGJhc2UgMTYpCQlISUdIIExFVkVMIEhBUkRXQVJFCi0JCQkJUE8gQk9YIDE3MCBXSU5ETUlMTCBST0FECi0JCQkJSEVBRElOR1RPTiBPWEZPUkQgT1gzIDdCTgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1GRSAgIChoZXgpCQlBTk5BUE9MSVMgTUlDUk8gU1lTVEVNUwotMDAwMEZFICAgICAoYmFzZSAxNikJCUFOTkFQT0xJUyBNSUNSTyBTWVNURU1TCi0JCQkJMTkwIEFETUlSQUwgQ09DSFJBTkUgRFJJVkUKLQkJCQlTVUlURSAxMzAKLQkJCQlBTk5BUE9MSVMgTUQgMjE0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUZGICAgKGhleCkJCUNBTVRFQyBFTEVDVFJPTklDUyBMVEQuCi0wMDAwRkYgICAgIChiYXNlIDE2KQkJQ0FNVEVDIEVMRUNUUk9OSUNTIExURC4KLQkJCQkxMDEgVkFVR0hBTiBXQVkKLQkJCQlMRUlDRVNURVIgTEUxIDRTQQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS0wMCAgIChoZXgpCQlFUVVJUCdUUkFOUwotMDAwMTAwICAgICAoYmFzZSAxNikJCUVRVUlQJ1RSQU5TCi0JCQkJMzEgcnVlIFBhdWwgQ2V6YW5uZQotCQkJCUxBIFJPQ0hFVFRFICA3NzAwMAotCQkJCUZSQU5DRQotCi0wMC0wMS0wMSAgIChoZXgpCQlQUklWQVRFCi0wMDAxMDEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTAxLTAyICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwMDEwMiAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCYXlmcm9udCBQbGF6YSAgLSBNUzogNDIyMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0wMyAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMDAxMDMgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQmF5ZnJvbnQgUGxhemEgLSBNUzogNDIyMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0wNCAgIChoZXgpCQlEVklDTyBDby4sIEx0ZC4KLTAwMDEwNCAgICAgKGJhc2UgMTYpCQlEVklDTyBDby4sIEx0ZC4KLQkJCQlLb29rbWluIENhcmQgQi9EIDZGIDI2Ny0yCi0JCQkJU2VvaHl1bi1Eb25nIEJvb25kYW5nLUd1Ci0JCQkJU3VuZ25hbS1zaSBLeXVuZ2tpLWRvIDQ2My0wNTAgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS0wNSAgIChoZXgpCQlCZWNraG9mZiBBdXRvbWF0aW9uIEdtYkgKLTAwMDEwNSAgICAgKGJhc2UgMTYpCQlCZWNraG9mZiBBdXRvbWF0aW9uIEdtYkgKLQkJCQlFaXNlcnN0ci4gNQotCQkJCTMzNDE1IFZlcmwgCi0JCQkJR0VSTUFOWQotCi0wMC0wMS0wNiAgIChoZXgpCQlUZXdzIERhdGVudGVjaG5payBHbWJICi0wMDAxMDYgICAgIChiYXNlIDE2KQkJVGV3cyBEYXRlbnRlY2huaWsgR21iSAotCQkJCUFtIEJhaG5ob2YgNwotCQkJCTI1NDY5IEhhbHN0ZW5iZWsgIAotCQkJCUdFUk1BTlkKLQotMDAtMDEtMDcgICAoaGV4KQkJTGVpc2VyIEdtYkgKLTAwMDEwNyAgICAgKGJhc2UgMTYpCQlMZWlzZXIgR21iSAotCQkJCUlsbXN0ci4gNwotCQkJCTg1NTc5IE5ldWJpYmVyZyAgCi0JCQkJR0VSTUFOWQotCi0wMC0wMS0wOCAgIChoZXgpCQlBVkxBQiBUZWNobm9sb2d5LCBJbmMuCi0wMDAxMDggICAgIChiYXNlIDE2KQkJQVZMQUIgVGVjaG5vbG9neSwgSW5jLgotCQkJCTNGLTEsIE5vLiAxMzQsIFNlYy4gMwotCQkJCUNodW5nIFNoaW4gUm9hZAotCQkJCUhzaW4gVGllbiwgVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLTA5ICAgKGhleCkJCU5hZ2FubyBKYXBhbiBSYWRpbyBDby4sIEx0ZC4KLTAwMDEwOSAgICAgKGJhc2UgMTYpCQlOYWdhbm8gSmFwYW4gUmFkaW8gQ28uLCBMdGQuCi0JCQkJU2hpbW9oaWdhbm8gMTE2MywgSW5hc2F0by1tYWNoaQotCQkJCU5hZ2FubyAzODEtMjI4OCAgCi0JCQkJSkFQQU4KLQotMDAtMDEtMEEgICAoaGV4KQkJQ0lTIFRFQ0hOT0xPR1kgSU5DLgotMDAwMTBBICAgICAoYmFzZSAxNikJCUNJUyBURUNITk9MT0dZIElOQy4KLQkJCQkxNkYsIE5vLiA3NSBIc2luIFRhaSBXdSBSb2FkCi0JCQkJU2VjLiAxLCBIc2kgQ2hpaAotCQkJCVRhaXBlaSBIc2llbiAyMjEgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtMEIgICAoaGV4KQkJU3BhY2UgQ3liZXJMaW5rLCBJbmMuCi0wMDAxMEIgICAgIChiYXNlIDE2KQkJU3BhY2UgQ3liZXJMaW5rLCBJbmMuCi0JCQkJNXRoIEZsLiBHdXBweXVuZyBUb3duIEIKLQkJCQkyMDMgTm9uaG55dW4tRG9uZywgS2FuZ2hhbS1HdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtMEMgICAoaGV4KQkJU3lzdGVtIFRhbGtzIEluYy4KLTAwMDEwQyAgICAgKGJhc2UgMTYpCQlTeXN0ZW0gVGFsa3MgSW5jLgotCQkJCTRGLCBQcmltZU5paG9uYmFzaGkgQmxkLgotCQkJCTMtMzUtNiwgTmlob25iYXNoaSBIYW1hLWNobwotCQkJCUNodW8ta3UgVG9reW8gIAotCQkJCUpBUEFOCi0KLTAwLTAxLTBEICAgKGhleCkJCUNPUkVDTywgSU5DLgotMDAwMTBEICAgICAoYmFzZSAxNikJCUNPUkVDTywgSU5DLgotCQkJCTY5NjkgUm91dGUgVHJhbnNjYW5hZGlhbm5lCi0JCQkJVmlsbGUgU3QuIExhdXJlbnQgSDRUIDFWOCBRdWViZWMgCi0JCQkJQ0FOQURBCi0KLTAwLTAxLTBFICAgKGhleCkJCUJyaS1MaW5rIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotMDAwMTBFICAgICAoYmFzZSAxNikJCUJyaS1MaW5rIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCTJGLCBOby4gNjMsIENob3ctVHplIFN0cmVldAotCQkJCVRhaXBlaSAxMTQgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtMEYgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDAxMEYgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0xMCAgIChoZXgpCQlHb3RoYW0gTmV0d29ya3MKLTAwMDExMCAgICAgKGJhc2UgMTYpCQlHb3RoYW0gTmV0d29ya3MKLQkJCQkxNSBEaXNjb3ZlcnkgV2F5Ci0JCQkJQWN0b24gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTExICAgKGhleCkJCWlEaWdtIEluYy4KLTAwMDExMSAgICAgKGJhc2UgMTYpCQlpRGlnbSBJbmMuCi0JCQkJN0ZMIFNpbmRvIEIvRCAxNjA0LTIyIFNlb2Noby1Eb25nCi0JCQkJU2VvY2hvLUd1Ci0JCQkJU2VvdWwgMTM3LTA3MCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTEyICAgKGhleCkJCVNoYXJrIE11bHRpbWVkaWEgSW5jLgotMDAwMTEyICAgICAoYmFzZSAxNikJCVNoYXJrIE11bHRpbWVkaWEgSW5jLgotCQkJCTQ4ODkwIE1pbG1vbnQgRHJpdmUgICMxMDEtRAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTEzICAgKGhleCkJCU9MWU1QVVMgQ09SUE9SQVRJT04KLTAwMDExMyAgICAgKGJhc2UgMTYpCQlPTFlNUFVTIENPUlBPUkFUSU9OCi0JCQkJMi0zIEt1Ym95YW1hLWNobywgSGFjaGlvamktc2hpCi0JCQkJVG9reW8gMTkyLTg1MTIgIAotCQkJCUpBUEFOCi0KLTAwLTAxLTE0ICAgKGhleCkJCUtBTkRBIFRTVVNISU4gS09HWU8gQ08uLCBMVEQuCi0wMDAxMTQgICAgIChiYXNlIDE2KQkJS0FOREEgVFNVU0hJTiBLT0dZTyBDTy4sIExURC4KLQkJCQkyMy0yLCBOaXNoaS1Hb3RhbmRhIDItY2hvbWUsCi0JCQkJU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gMTQxLTg1MzMgIAotCQkJCUpBUEFOCi0KLTAwLTAxLTE1ICAgKGhleCkJCUVYVFJBVEVDSCBDT1JQT1JBVElPTgotMDAwMTE1ICAgICAoYmFzZSAxNikJCUVYVFJBVEVDSCBDT1JQT1JBVElPTgotCQkJCTc2MCBUaG9ybnRvbiBTdC4sIFVuaXQgMgotCQkJCVBvc3QgRmFsbHMgSUQgODM4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTE2ICAgKGhleCkJCU5ldHNwZWN0IFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTE2ICAgICAoYmFzZSAxNikJCU5ldHNwZWN0IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTM5NDUgRnJlZWRvbSBDaXJjbGUgLSBTdGUuICMzNjAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtMTcgICAoaGV4KQkJQ0FOQUwgKwotMDAwMTE3ICAgICAoYmFzZSAxNikJCUNBTkFMICsKLQkJCQkyMyBSdWUgTGVCbGFuYwotCQkJCUxlIFBvbmFudCBDCi0JCQkJNzU5MDYgUGFyaXMgQ2VkZXggMTUgIAotCQkJCUZSQU5DRQotCi0wMC0wMS0xOCAgIChoZXgpCQlFWiBEaWdpdGFsIENvLiwgTHRkLgotMDAwMTE4ICAgICAoYmFzZSAxNikJCUVaIERpZ2l0YWwgQ28uLCBMdGQuCi0JCQkJQml0dmlsbGUgQmxkZy4gUm9vbSA3MDMKLQkJCQkjMTMyNyBTZW9jaG8tRG9uZyBTZW9jaG8tR3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTE5ICAgKGhleCkJCVJUVW5ldCAoQXVzdHJhbGlhKQotMDAwMTE5ICAgICAoYmFzZSAxNikJCVJUVW5ldCAoQXVzdHJhbGlhKQotCQkJCTgvMy01IEdpbGRhIENvdXJ0Ci0JCQkJTXVsZ3JhdmUgVmljIDMxNzAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDEtMUEgICAoaGV4KQkJRUVIIERhdGFMaW5rIEdtYkgKLTAwMDExQSAgICAgKGJhc2UgMTYpCQlFRUggRGF0YUxpbmsgR21iSAotCQkJCU5pZWRlcmJlcmdlciBTdHIuIDc1Ci0JCQkJRC01MzkwOSBadWVscGljaCAgCi0JCQkJR0VSTUFOWQotCi0wMC0wMS0xQiAgIChoZXgpCQlVbml6b25lIFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTFCICAgICAoYmFzZSAxNikJCVVuaXpvbmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNUZsb29yIEhhZVN1bmcgQmxkZy4KLQkJCQk2Ny0yLVlhbmdKYWUtRG9uZwotCQkJCVNlb0Noby1LdSBTZW91bCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtMUMgICAoaGV4KQkJVW5pdmVyc2FsIFRhbGt3YXJlIENvcnBvcmF0aW9uCi0wMDAxMUMgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIFRhbGt3YXJlIENvcnBvcmF0aW9uCi0JCQkJMTAgU2Vjb25kIFN0LiBORQotCQkJCVN1aXRlICM0MDAKLQkJCQlNaW5uZWFwb2xpcyBNTiA1NTQxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtMUQgICAoaGV4KQkJQ2VudGlsbGl1bSBDb21tdW5pY2F0aW9ucwotMDAwMTFEICAgICAoYmFzZSAxNikJCUNlbnRpbGxpdW0gQ29tbXVuaWNhdGlvbnMKLQkJCQk0NzIxMSBMYWtldmlldyBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTFFICAgKGhleCkJCVByZWNpZGlhIFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTFFICAgICAoYmFzZSAxNikJCVByZWNpZGlhIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwQSBIZWFyc3QgV2F5Ci0JCQkJS2FuYXRhIE9udGFyaW8gSzJNLTJDNCAKLQkJCQlDQU5BREEKLQotMDAtMDEtMUYgICAoaGV4KQkJUkMgTmV0d29ya3MsIEluYy4KLTAwMDExRiAgICAgKGJhc2UgMTYpCQlSQyBOZXR3b3JrcywgSW5jLgotCQkJCTY3MjcgRmxhbmRlcnMgRHJpdmUgLSBTdGUuICMyMTIKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTIwICAgKGhleCkJCU9TQ0lMTE9RVUFSVFogUy5BLgotMDAwMTIwICAgICAoYmFzZSAxNikJCU9TQ0lMTE9RVUFSVFogUy5BLgotCQkJCVJ1ZSBEZXMgQnJldmFyZHMgMTYKLQkJCQkyMDAyIE5ldWNoYXRlbCAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDEtMjEgICAoaGV4KQkJV2F0Y2hndWFyZCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDEyMSAgICAgKGJhc2UgMTYpCQlXYXRjaGd1YXJkIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTYwNSBGaWZ0aCBBdmUuIFMKLQkJCQlTdWl0ZSA1MDAKLQkJCQlTZWF0dGxlIFdBIDk4MTA0LTM4OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTIyICAgKGhleCkJCVRyZW5kIENvbW11bmljYXRpb25zLCBMdGQuCi0wMDAxMjIgICAgIChiYXNlIDE2KQkJVHJlbmQgQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLQkJCQlLbmF2ZXMgQmVlY2ggRXN0YXRlCi0JCQkJTG91ZHdhdGVyLCBIaWdoIFd5Y29tYmUKLQkJCQlCdWNrcywgSFAxMCA5UVogRW5nbGFuZCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS0yMyAgIChoZXgpCQlESUdJVEFMIEVMRUNUUk9OSUNTIENPUlAuCi0wMDAxMjMgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTgtMi01MiBOYW5rbyBIaWdhc2hpLCBTdW1pbm9lLWt1Ci0JCQkJT3Nha2EsIDU1OS0wMDMxICAKLQkJCQlKQVBBTgotCi0wMC0wMS0yNCAgIChoZXgpCQlBY2VyIEluY29ycG9yYXRlZAotMDAwMTI0ICAgICAoYmFzZSAxNikJCUFjZXIgSW5jb3Jwb3JhdGVkCi0JCQkJMjFGLCA4OCwgU2VjLjEKLQkJCQlIc2luIFRhaSBXdSBSb2FkLCBIc2ljaGloCi0JCQkJVGFpcGVpIEhzaWVuIDIyMSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0yNSAgIChoZXgpCQlZQUVTVSBNVVNFTiBDTy4sIExURC4KLTAwMDEyNSAgICAgKGJhc2UgMTYpCQlZQUVTVSBNVVNFTiBDTy4sIExURC4KLQkJCQk0LTgtOCwgTmFrYW1lZ3VybwotCQkJCU1lZ3Vyby1rdSwKLQkJCQlUb2t5bywgMTUzLTg2NDQgIAotCQkJCUpBUEFOCi0KLTAwLTAxLTI2ICAgKGhleCkJCVBBQyBMYWJzCi0wMDAxMjYgICAgIChiYXNlIDE2KQkJUEFDIExhYnMKLQkJCQkzMDc5IEtpbGdvcmUgUm9hZAotCQkJCVJhbmNobyBDb3Jkb3ZhIENBIDk1NjcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0yNyAgIChoZXgpCQlPUEVOIE5ldHdvcmtzIFB0eSBMdGQKLTAwMDEyNyAgICAgKGJhc2UgMTYpCQlPUEVOIE5ldHdvcmtzIFB0eSBMdGQKLQkJCQlMZXZlbCA1LCAzNDIgRmxpbmRlcnMgU3RyZWV0Ci0JCQkJTWVsYm91cm5lICBWSUMgMzAwMAotCQkJCUFVU1RSQUxJQQotCi0wMC0wMS0yOCAgIChoZXgpCQlFbmpveVdlYiwgSW5jLgotMDAwMTI4ICAgICAoYmFzZSAxNikJCUVuam95V2ViLCBJbmMuCi0JCQkJMzAwMCBTY290dCBCbHZkLiAjMTA3Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTI5ICAgKGhleCkJCURGSSBJbmMuCi0wMDAxMjkgICAgIChiYXNlIDE2KQkJREZJIEluYy4KLQkJCQkxMDAsIEh1YW4tSG8gU3RyZWV0Ci0JCQkJSHNpLUNoaWggQ2l0eSBUYWlwZWkgSHNpZW4gCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0yQSAgIChoZXgpCQlUZWxlbWF0aWNhIFNpc3RlbXMgSW50ZWxpZ2VudGUKLTAwMDEyQSAgICAgKGJhc2UgMTYpCQlUZWxlbWF0aWNhIFNpc3RlbXMgSW50ZWxpZ2VudGUKLQkJCQlSdWEgTWlndWVsIENhc2FncmFuZGUsIDIwMAotCQkJCVNhbyBQYXVsbyAgCi0JCQkJQlJBWklMCi0KLTAwLTAxLTJCICAgKGhleCkJCVRFTEVORVQgQ28uLCBMdGQuCi0wMDAxMkIgICAgIChiYXNlIDE2KQkJVEVMRU5FVCBDby4sIEx0ZC4KLQkJCQkKLQotMDAtMDEtMkMgICAoaGV4KQkJQXJhdm94IFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTJDICAgICAoYmFzZSAxNikJCUFyYXZveCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNjcyNSA0MHRoIFBsYWNlIE5vcnRoCi0JCQkJUGx5bW91dGggTU4gNTU0NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTJEICAgKGhleCkJCUtvbW9kbyBUZWNobm9sb2d5Ci0wMDAxMkQgICAgIChiYXNlIDE2KQkJS29tb2RvIFRlY2hub2xvZ3kKLQkJCQkxNzAgS25vd2xlcyBEcml2ZQotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtMkUgICAoaGV4KQkJUEMgUGFydG5lciBMdGQuCi0wMDAxMkUgICAgIChiYXNlIDE2KQkJUEMgUGFydG5lciBMdGQuCi0JCQkJUm0gMTkwMS0xOTA4LCAxOS9GLCBTaGF0aW4gR2FsbGVyaWEKLQkJCQkxOC0yNCBTaGFuICBNZWkgU3RyZWV0LCBGbyBUYW4gU2hhdGluLCBICi0JCQkJQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0wMS0yRiAgIChoZXgpCQlUd2luaGVhZCBJbnRlcm5hdGlvbmFsIENvcnAKLTAwMDEyRiAgICAgKGJhc2UgMTYpCQlUd2luaGVhZCBJbnRlcm5hdGlvbmFsIENvcnAKLQkJCQkyRkwsIDIsIExhbmUgMjM1LCBCYW8tQ2hpYW8gUm9hZAotCQkJCUhzaW4tVGllbgotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0zMCAgIChoZXgpCQlFeHRyZW1lIE5ldHdvcmtzCi0wMDAxMzAgICAgIChiYXNlIDE2KQkJRXh0cmVtZSBOZXR3b3JrcwotCQkJCTM1ODUgTW9ucm9lIFN0cmVldAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0zMSAgIChoZXgpCQlCb3NjaCBTZWN1cml0eSBTeXN0ZW1zLCBJbmMuCi0wMDAxMzEgICAgIChiYXNlIDE2KQkJQm9zY2ggU2VjdXJpdHkgU3lzdGVtcywgSW5jLgotCQkJCTEzMCBQZXJpbnRvbiBQYXJrd2F5Ci0JCQkJRmFpcnBvcnQgTlkgMTQ0NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTMyICAgKGhleCkJCURyYW5ldHogLSBCTUkKLTAwMDEzMiAgICAgKGJhc2UgMTYpCQlEcmFuZXR6IC0gQk1JCi0JCQkJMTAwMCBOZXcgRHVyaGFtIFJvYWQKLQkJCQlFZGlzb24gTkogMDg4MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTMzICAgKGhleCkJCUtZT1dBIEVsZWN0cm9uaWMgSW5zdHJ1bWVudHMgQwotMDAwMTMzICAgICAoYmFzZSAxNikJCUtZT1dBIEVsZWN0cm9uaWMgSW5zdHJ1bWVudHMgQwotCQkJCTMtNS0xLCBDeW9mdWdhb2thCi0JCQkJQ3lvZnUgVG9reW8gCi0JCQkJSkFQQU4KLQotMDAtMDEtMzQgICAoaGV4KQkJU2VsZWN0cm9uIFN5c3RlbXMgQUcKLTAwMDEzNCAgICAgKGJhc2UgMTYpCQlTZWxlY3Ryb24gU3lzdGVtcyBBRwotCQkJCUJlcm5zdHJlYXNzZSA3MAotCQkJCUNILTMyNTAgTHlzcwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAxLTM1ICAgKGhleCkJCUtEQyBDb3JwLgotMDAwMTM1ICAgICAoYmFzZSAxNikJCUtEQyBDb3JwLgotCQkJCTIwMC0xMSBBbllhbmcgNyBkb25nCi0JCQkJTWFuQW4tR3UgQW5ZYW5lLVNpIEt5dW5nZ2ktZG8KLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS0zNiAgIChoZXgpCQlDeWJlclRBTiBUZWNobm9sb2d5LCBJbmMuCi0wMDAxMzYgICAgIChiYXNlIDE2KQkJQ3liZXJUQU4gVGVjaG5vbG9neSwgSW5jLgotCQkJCTYyNiwgQmxkZy41MywgMTk1LTU2IFNlYy40Ci0JCQkJQ2h1bmcgSHNpbmcgUmQgQ2h1dHVuZywgSHNpbmNodQotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLTM3ICAgKGhleCkJCUlUIEZhcm0gQ29ycG9yYXRpb24KLTAwMDEzNyAgICAgKGJhc2UgMTYpCQlJVCBGYXJtIENvcnBvcmF0aW9uCi0JCQkJQXNhc2hpc2VpbWVpIEZ1Y2h1IEJsZGcuIDExRgotCQkJCTEtMTQtMSBGdWNodS1jaG8sIEZ1Y2h1LXNoaSBUb2t5bwotCQkJCTE4My0wMDU1IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtMzggICAoaGV4KQkJWEFWaSBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMDEzOCAgICAgKGJhc2UgMTYpCQlYQVZpIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCTlGLCBOby4gMTI5LCBIc2luZyBUZSBSZCwKLQkJCQlTYW5jaHVuZyBDaXR5ICBUYWlwZWkgSHNpZW4KLQkJCQkyNDEgVEFJV0FOIDI0MSBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0zOSAgIChoZXgpCQlQb2ludCBNdWx0aW1lZGlhIFN5c3RlbXMKLTAwMDEzOSAgICAgKGJhc2UgMTYpCQlQb2ludCBNdWx0aW1lZGlhIFN5c3RlbXMKLQkJCQk0UmEgNTA3LCBTaGlod2EgSW5kdXN0cmlhbCBDb21wbGV4Ci0JCQkJNjY5LTggU3VuZ2tvZy1Eb25nLCBBbnNhbi1DaXR5LCBLeXVuZ2dpLQotCQkJCUtvcmVhIDQyNS0xMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtM0EgICAoaGV4KQkJU0hFTENBRCBDT01NVU5JQ0FUSU9OUywgTFRELgotMDAwMTNBICAgICAoYmFzZSAxNikJCVNIRUxDQUQgQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQlQLk8uIEJveCA4NTEzCi0JCQkJTmV3IEluZHVzdHJpYWwgWm9uZSBOZXRhbnlhIDQyNTA0Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAxLTNCICAgKGhleCkJCUJOQSBTWVNURU1TCi0wMDAxM0IgICAgIChiYXNlIDE2KQkJQk5BIFNZU1RFTVMKLQkJCQkxNjM3IFMuIE1haW4gU3RyZWV0Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTNDICAgKGhleCkJCVRJVyBTWVNURU1TCi0wMDAxM0MgICAgIChiYXNlIDE2KQkJVElXIFNZU1RFTVMKLQkJCQkyMjExIExhd3NvbiBMYW5lCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTNEICAgKGhleCkJCVJpc2NTdGF0aW9uIEx0ZC4KLTAwMDEzRCAgICAgKGJhc2UgMTYpCQlSaXNjU3RhdGlvbiBMdGQuCi0JCQkJMTY4IEVsbGlvdHQgU3RyZWV0Ci0JCQkJVHlsZGVzbGV5IE0yOSA4MDUKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAxLTNFICAgKGhleCkJCUFzY29tIFRhdGVjbyBBQgotMDAwMTNFICAgICAoYmFzZSAxNikJCUFzY29tIFRhdGVjbyBBQgotCQkJCUJveCA4NzgzCi0JCQkJNDAyNzYgR290ZWJvcmcKLQkJCQlTV0VERU4KLQotMDAtMDEtM0YgICAoaGV4KQkJTmVpZ2hib3IgV29ybGQgQ28uLCBMdGQuCi0wMDAxM0YgICAgIChiYXNlIDE2KQkJTmVpZ2hib3IgV29ybGQgQ28uLCBMdGQuCi0JCQkJMTE0QSBZRVJDLCAxMzQsIFNoaW5jaG9uX2RvbmcKLQkJCQlTZW9kYWVtdW5fa3UgU2VvdWwKLQkJCQkxMjAtNzQ5IDEyMC03NDkgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNDAgICAoaGV4KQkJU2VuZHRlayBDb3Jwb3JhdGlvbgotMDAwMTQwICAgICAoYmFzZSAxNikJCVNlbmR0ZWsgQ29ycG9yYXRpb24KLQkJCQkxMkYtMywgMzMzLCBTZWMuMQotCQkJCUt1YW5nLUZ1IFJvYWQgSHNpbmNodQotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtNDEgICAoaGV4KQkJQ0FCTEUgUFJJTlQKLTAwMDE0MSAgICAgKGJhc2UgMTYpCQlDQUJMRSBQUklOVAotCQkJCUpvemVmIENhcmR5bnN0cmFhdCAxNgotCQkJCUIgIC0gOTQyMCBFcnBlLU1lcmUKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC0wMS00MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxNDIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTQzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDE0MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDQgICAoaGV4KQkJRU1DIENvcnBvcmF0aW9uCi0wMDAxNDQgICAgIChiYXNlIDE2KQkJRU1DIENvcnBvcmF0aW9uCi0JCQkJMjI4IFNvdXRoIFN0LgotCQkJCUhvcGtpbnRvbiBNQSAwMTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDUgICAoaGV4KQkJV0lOU1lTVEVNUywgSU5DLgotMDAwMTQ1ICAgICAoYmFzZSAxNikJCVdJTlNZU1RFTVMsIElOQy4KLQkJCQk3MTUgU3RhZGl1bSBEcml2ZQotCQkJCUFybGluZ3RvbiBUWCA3NjAxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDYgICAoaGV4KQkJVGVzY28gQ29udHJvbHMsIEluYy4KLTAwMDE0NiAgICAgKGJhc2UgMTYpCQlUZXNjbyBDb250cm9scywgSW5jLgotCQkJCVAuTy4gQm94IDIzOTAxMgotCQkJCVNhY3JhbWVudG8gQ0EgOTU4MjMtOTAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDcgICAoaGV4KQkJWmhvbmUgVGVjaG5vbG9naWVzCi0wMDAxNDcgICAgIChiYXNlIDE2KQkJWmhvbmUgVGVjaG5vbG9naWVzCi0JCQkJNzAwMSBPYWtwb3J0IFN0cmVldAotCQkJCU9ha2xhbmQgQ0EgOTQ2MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTQ4ICAgKGhleCkJCVgtdHJhV2ViIEluYy4KLTAwMDE0OCAgICAgKGJhc2UgMTYpCQlYLXRyYVdlYiBJbmMuCi0JCQkJNjc1MCBXZXN0IDkzcmQgU3RyZWV0IC0gU3RlLiAjMjEwCi0JCQkJT3ZlcmxhbmQgUGFyayBLUyA2NjIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDkgICAoaGV4KQkJVC5ELlQuIFRyYW5zZmVyIERhdGEgVGVzdCBHbWJICi0wMDAxNDkgICAgIChiYXNlIDE2KQkJVC5ELlQuIFRyYW5zZmVyIERhdGEgVGVzdCBHbWJICi0JCQkJU2llbWVuc3N0cmFzc2UgMTgKLQkJCQk4NDA1MSBFc3NlbmJhY2gKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS00QSAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0wMDAxNEEgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMgNS0xLTIKLQkJCQlLaXRhc2hpbmFnYXdhLAotCQkJCVRva3lvIFNoaW5hZ2F3YS1rdSAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTAwLTAxLTRCICAgKGhleCkJCUVubm92YXRlIE5ldHdvcmtzLCBJbmMuCi0wMDAxNEIgICAgIChiYXNlIDE2KQkJRW5ub3ZhdGUgTmV0d29ya3MsIEluYy4KLQkJCQk2MCBDb2RtYW4gSGlsbCBSb2FkCi0JCQkJQm94Ym9yb3VnaCBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNEMgICAoaGV4KQkJQmVya2VsZXkgUHJvY2VzcyBDb250cm9sCi0wMDAxNEMgICAgIChiYXNlIDE2KQkJQmVya2VsZXkgUHJvY2VzcyBDb250cm9sCi0JCQkJNDEyNCBMYWtlc2lkZSBEcgotCQkJCVJpY2htb25kIENBIDk0ODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS00RCAgIChoZXgpCQlTaGluIEtpbiBFbnRlcnByaXNlcyBDby4sIEx0ZAotMDAwMTREICAgICAoYmFzZSAxNikJCVNoaW4gS2luIEVudGVycHJpc2VzIENvLiwgTHRkCi0JCQkJNywgRlUgSHNpbmcgU3QuIFR1ZSBDaGVuZyBJbmQuCi0JCQkJRGlzdC4gVGFpcGVpCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLTRFICAgKGhleCkJCVdJTiBFbnRlcnByaXNlcywgSW5jLgotMDAwMTRFICAgICAoYmFzZSAxNikJCVdJTiBFbnRlcnByaXNlcywgSW5jLgotCQkJCTMwMCBXaWxsb3cgU3RyZWV0IFNvdXRoCi0JCQkJTm9ydGggQW5kb3ZlciBNQSAwMTg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNEYgICAoaGV4KQkJQURUUkFOIElOQwotMDAwMTRGICAgICAoYmFzZSAxNikJCUFEVFJBTiBJTkMKLQkJCQk5MDEgRXhwbG9yZXIgQmx2ZC4KLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODA2LTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTUwICAgKGhleCkJCUdJTEFUIENPTU1VTklDQVRJT05TLCBMVEQuCi0wMDAxNTAgICAgIChiYXNlIDE2KQkJR0lMQVQgQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQkyMS9EIFllZ2lhIEthcGF5aW0gU3RyZWV0Ci0JCQkJUGV0YWNoLVRpa3ZhIDQ5MTMwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAxLTUxICAgKGhleCkJCUVuc2VtYmxlIENvbW11bmljYXRpb25zCi0wMDAxNTEgICAgIChiYXNlIDE2KQkJRW5zZW1ibGUgQ29tbXVuaWNhdGlvbnMKLQkJCQk2MjU2IEdyZWVubWFuIERyaXZlIC0gU3RlLiAjNDAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS01MiAgIChoZXgpCQlDSFJPTUFURUsgSU5DLgotMDAwMTUyICAgICAoYmFzZSAxNikJCUNIUk9NQVRFSyBJTkMuCi0JCQkJNi0xMCwgTWl5YXpha2kgMi1DaG9tZQotCQkJCU1peWFtYWUtS3UsIEthd2FzYWtpLXNoaSBLYW5hZ2F3YSwgMjE2LTAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLTUzICAgKGhleCkJCUFSQ0hURUsgVEVMRUNPTSBDT1JQT1JBVElPTgotMDAwMTUzICAgICAoYmFzZSAxNikJCUFSQ0hURUsgVEVMRUNPTSBDT1JQT1JBVElPTgotCQkJCTRGLCBOby45IExhbmUgMTMwLCBNaW4tQ2h5dWFuIFJkLgotCQkJCUhzaW4tVGllbiBUYWlwZWkKLQkJCQkyMzEgVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS01NCAgIChoZXgpCQlHM00gQ29ycG9yYXRpb24KLTAwMDE1NCAgICAgKGJhc2UgMTYpCQlHM00gQ29ycG9yYXRpb24KLQkJCQk0MzIwIFN0ZXZlbnMgQ3JlZWsgQmx2ZC4gLSBTdGUuICMyNzUKLQkJCQlTYW4gSm9zZSBDQSA5NTEyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNTUgICAoaGV4KQkJUHJvbWlzZSBUZWNobm9sb2d5LCBJbmMuCi0wMDAxNTUgICAgIChiYXNlIDE2KQkJUHJvbWlzZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNEYsIDEsIFByb3NwZXJpdHkgMXN0IFJvYWQKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyayBIc2luLUNodQotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtNTYgICAoaGV4KQkJRklSRVdJUkVESVJFQ1QuQ09NLCBJTkMuCi0wMDAxNTYgICAgIChiYXNlIDE2KQkJRklSRVdJUkVESVJFQ1QuQ09NLCBJTkMuCi0JCQkJNDEzMiBTcGljZXdvb2QgU3ByaW5ncyBSZCAtICNJLTQKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTU3ICAgKGhleCkJCVNZU1dBVkUgQ08uLCBMVEQKLTAwMDE1NyAgICAgKGJhc2UgMTYpCQlTWVNXQVZFIENPLiwgTFRECi0JCQkJRG9uZ2hvIEIvRCA1RiwgMjIxLTIKLQkJCQlOb25oeXVuLURvbmcsIEthbmduYW0tR3UgU2VvdWwKLQkJCQlLT1JFQSAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTU4ICAgKGhleCkJCUVsZWN0cm8gSW5kdXN0cmllcy9HYXVnZSBUZWNoCi0wMDAxNTggICAgIChiYXNlIDE2KQkJRWxlY3RybyBJbmR1c3RyaWVzL0dhdWdlIFRlY2gKLQkJCQkxODAwIFNoYW1lcyBEcml2ZQotCQkJCVdlc3RidXJ5IE5ZIDExNTkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS01OSAgIChoZXgpCQlTMSBDb3Jwb3JhdGlvbgotMDAwMTU5ICAgICAoYmFzZSAxNikJCVMxIENvcnBvcmF0aW9uCi0JCQkJUiZEIENlbnRlciwgUzEgQmxkZy4KLQkJCQk1OS04LCBOb25oeXVuLURvbmcgS2FuZ25hbS1LdSBTZW91bAotCQkJCUtPUkVBIDEzNS0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNUEgICAoaGV4KQkJRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcKLTAwMDE1QSAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZwotCQkJCURWQiwgJSBFdXJvcGVhbiBCcm9hZGNhc3RpbmcgVW5pb24KLQkJCQkxN0EgQW5jaWVubmUgUm91dGUgQ0gtMTIxOCBHcmFuZCBTYWNvbm5lCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wMS01QiAgIChoZXgpCQlJVEFMVEVMIFMucC5BL1JGLVVQLUkKLTAwMDE1QiAgICAgKGJhc2UgMTYpCQlJVEFMVEVMIFMucC5BL1JGLVVQLUkKLQkJCQkyMDAxOSBDYXN0LlNldHRpbW8gTS5zZSAoTUkpCi0JCQkJSVRBTFkKLQkJCQlJVEFMWQotCi0wMC0wMS01QyAgIChoZXgpCQlDQURBTlQgSU5DLgotMDAwMTVDICAgICAoYmFzZSAxNikJCUNBREFOVCBJTkMuCi0JCQkJNDM0MyBDb21tZXJjZSBDb3VydCAtIFN0ZS4gIzIwNwotCQkJCUxpc2xlIElMIDYwNTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS01RCAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMDE1RCAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJTWVubG8gUGFyayBDQSA5NTAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNUUgICAoaGV4KQkJQkVTVCBURUNITk9MT0dZIENPLiwgTFRELgotMDAwMTVFICAgICAoYmFzZSAxNikJCUJFU1QgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQk3RiwgSGFlc3VuZyBCL0QKLQkJCQkxMTUtMTIgTm9uaHl1bi1kb25nIEthbmduYW0tS3UgU2VvdWwsIDEzCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNUYgICAoaGV4KQkJRElHSVRBTCBERVNJR04gR21iSAotMDAwMTVGICAgICAoYmFzZSAxNikJCURJR0lUQUwgREVTSUdOIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk2YQotCQkJCUJlcmxpbiBELTEwNTU5Ci0JCQkJR0VSTUFOWQotCi0wMC0wMS02MCAgIChoZXgpCQlFTE1FWCBDby4sIExURC4KLTAwMDE2MCAgICAgKGJhc2UgMTYpCQlFTE1FWCBDby4sIExURC4KLQkJCQkxNi0zMCBLaW1hY2hpCi0JCQkJQW9iYWt1IFNlbmRhaS1TaGkgTWl5YWdpLUtlbgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtNjEgICAoaGV4KQkJTWV0YSBNYWNoaW5lIFRlY2hub2xvZ3kKLTAwMDE2MSAgICAgKGJhc2UgMTYpCQlNZXRhIE1hY2hpbmUgVGVjaG5vbG9neQotCQkJCTQwMCBTaWx2ZXIgQ2VkYXIgQ291cnQgLSBzdGUuICMyMjAKLQkJCQlDaGFwZWwgSGlsbCBOQyAyNzUxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNjIgICAoaGV4KQkJQ3lnbmV0IFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTYyICAgICAoYmFzZSAxNikJCUN5Z25ldCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNDExIExlTWF5IERyaXZlICMzMDEKLQkJCQlDYXJyb2xsdG9uIFRYIDc1MDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS02MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxNjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTY0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDE2NCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNjUgICAoaGV4KQkJQWlyU3dpdGNoIENvcnBvcmF0aW9uCi0wMDAxNjUgICAgIChiYXNlIDE2KQkJQWlyU3dpdGNoIENvcnBvcmF0aW9uCi0JCQkJMzdFYXN0IDIwMFNvdXRoCi0JCQkJU3ByaW5ndmlsbGUgVVQgODQ2NjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTY2ICAgKGhleCkJCVRDIEdST1VQIEEvUwotMDAwMTY2ICAgICAoYmFzZSAxNikJCVRDIEdST1VQIEEvUwotCQkJCVNpbmRhbHN2ZWogMzQKLQkJCQlSaXNza292ICBESy04MjQwCi0JCQkJREVOTUFSSwotCi0wMC0wMS02NyAgIChoZXgpCQlISU9LSSBFLkUuIENPUlBPUkFUSU9OCi0wMDAxNjcgICAgIChiYXNlIDE2KQkJSElPS0kgRS5FLiBDT1JQT1JBVElPTgotCQkJCTgxIEtvaXp1bWksIFVlZGEsIE5hZ2FubwotCQkJCTM4Ni0xMTkyIDM4Ni0xMTkyIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtNjggICAoaGV4KQkJVklUQU5BIENPUlBPUkFUSU9OCi0wMDAxNjggICAgIChiYXNlIDE2KQkJVklUQU5BIENPUlBPUkFUSU9OCi0JCQkJMjUwMCBEb24gUmVpZCBEcml2ZQotCQkJCU90dGF3YSwgT250YXJpbwotCQkJCUsxSCAxRTEgSzFIIDFFMSBDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDEtNjkgICAoaGV4KQkJQ2VsZXN0aXggTmV0d29ya3MgUHRlIEx0ZC4KLTAwMDE2OSAgICAgKGJhc2UgMTYpCQlDZWxlc3RpeCBOZXR3b3JrcyBQdGUgTHRkLgotCQkJCTE4IFRhbm5lcnkgTGFuZSAjMDUtMDMKLQkJCQlMaWFuIFRvbmcgQnVpbGRpbmcKLQkJCQlTSU5HQVBPUkUgMzQ3NzgwCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTAxLTZBICAgKGhleCkJCUFMSVRFQwotMDAwMTZBICAgICAoYmFzZSAxNikJCUFMSVRFQwotCQkJCUxhdmFsIFRlY2hub3BvbGUgQi5QLiAxMDIKLQkJCQk1MzAwMSBMQVZBTCBDZWRleAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMS02QiAgIChoZXgpCQlMaWdodENoaXAsIEluYy4KLTAwMDE2QiAgICAgKGJhc2UgMTYpCQlMaWdodENoaXAsIEluYy4KLQkJCQk1IEluZHVzdHJpYWwgV2F5Ci0JCQkJU2FsZW0gTkggMDMwNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTZDICAgKGhleCkJCUZPWENPTk4KLTAwMDE2QyAgICAgKGJhc2UgMTYpCQlGT1hDT05OCi0JCQkJNjEyNSBQaHlsbGlzIERyaXZlCi0JCQkJQ3lwcmVzcyBDQSA5MDYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNkQgICAoaGV4KQkJQ2FycmllckNvbW0gSW5jLgotMDAwMTZEICAgICAoYmFzZSAxNikJCUNhcnJpZXJDb21tIEluYy4KLQkJCQk1MzkgRW5jaW50YXMgQmx2ZC4KLQkJCQlFbmNpbnRhcyBDQSA5MjAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNkUgICAoaGV4KQkJQ29ua2xpbiBDb3Jwb3JhdGlvbgotMDAwMTZFICAgICAoYmFzZSAxNikJCUNvbmtsaW4gQ29ycG9yYXRpb24KLQkJCQk2MTQxIENyb29rZWQgQ3JlZWsgUm9hZAotCQkJCU5vcmNyb3NzIEdBIDMwMDkyLTMxOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTZGICAgKGhleCkJCUlua2VsIENvcnAuCi0wMDAxNkYgICAgIChiYXNlIDE2KQkJSW5rZWwgQ29ycC4KLQkJCQlDaGVvbmdDaGVvbi1Eb25nLCBCdVB5ZW9uZy1HdSwKLQkJCQlJbmNoZW9uLVNpICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNzAgICAoaGV4KQkJRVNFIEVtYmVkZGVkIFN5c3RlbSBFbmdpbmVlcidnCi0wMDAxNzAgICAgIChiYXNlIDE2KQkJRVNFIEVtYmVkZGVkIFN5c3RlbSBFbmdpbmVlcidnCi0JCQkJTXVlaGxiYWNoc3RyLiAyMAotCQkJCTc4MzUxIEJvZG1hbi1MdWR3aWdzaGFmZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS03MSAgIChoZXgpCQlBbGxpZWQgRGF0YSBUZWNobm9sb2dpZXMKLTAwMDE3MSAgICAgKGJhc2UgMTYpCQlBbGxpZWQgRGF0YSBUZWNobm9sb2dpZXMKLQkJCQlQYXNjYWx3ZWcgMSwKLQkJCQkzMjA4IEtMIFNwaWprZW5pc3NlCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDEtNzIgICAoaGV4KQkJVGVjaG5vTGFuZCBDby4sIExURC4KLTAwMDE3MiAgICAgKGJhc2UgMTYpCQlUZWNobm9MYW5kIENvLiwgTFRELgotCQkJCTMtMTctMTEgQWtlYm9uby1jaG8KLQkJCQlGdWt1eWFtYS1jaXR5IEhpcm9zaGltYSA3MjEtMDkyNQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtNzMgICAoaGV4KQkJQU1DQwotMDAwMTczICAgICAoYmFzZSAxNikJCUFNQ0MKLQkJCQk2MjkwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03NCAgIChoZXgpCQlDeWJlck9wdGljcyBDb3Jwb3JhdGlvbgotMDAwMTc0ICAgICAoYmFzZSAxNikJCUN5YmVyT3B0aWNzIENvcnBvcmF0aW9uCi0JCQkJNTkwMCBHb2xkZW4gSGlsbHMgRHJpdmUKLQkJCQlHb2xkZW4gVmFsbGV5IE1OIDU1NDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03NSAgIChoZXgpCQlSYWRpYW50IENvbW11bmljYXRpb25zIENvcnAuCi0wMDAxNzUgICAgIChiYXNlIDE2KQkJUmFkaWFudCBDb21tdW5pY2F0aW9ucyBDb3JwLgotCQkJCTUwMDEgSGFkbGV5IFJvYWQKLQkJCQlTb3V0aCBQbGFpbmZpZWxkIE5KIDA3MDgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03NiAgIChoZXgpCQlPcmllbnQgU2lsdmVyIEVudGVycHJpc2VzCi0wMDAxNzYgICAgIChiYXNlIDE2KQkJT3JpZW50IFNpbHZlciBFbnRlcnByaXNlcwotCQkJCTg3NDAgV2hpdGUgT2FrIEF2ZW51ZQotCQkJCVJhbmNobyBDdWNhbW9uZ2EgQ0EgOTE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTc3ICAgKGhleCkJCUVEU0wKLTAwMDE3NyAgICAgKGJhc2UgMTYpCQlFRFNMCi0JCQkJSGFiYXJ6ZWwgMSBzdAotCQkJCVJhbWF0IEFoYXlhbCBUZWwtQXZpdgotCQkJCUlTUkFFTCA2OTcxMAotCQkJCUlTUkFFTAotCi0wMC0wMS03OCAgIChoZXgpCQlNQVJHSSBTeXN0ZW1zLCBJbmMuCi0wMDAxNzggICAgIChiYXNlIDE2KQkJTUFSR0kgU3lzdGVtcywgSW5jLgotCQkJCTMxNTUgS2Vhcm5leSBTdHJlZXQuIC0gU3RlLiMyMDAKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03OSAgIChoZXgpCQlXSVJFTEVTUyBURUNITk9MT0dZLCBJTkMuCi0wMDAxNzkgICAgIChiYXNlIDE2KQkJV0lSRUxFU1MgVEVDSE5PTE9HWSwgSU5DLgotCQkJCUFuYW0gQmxkZy4gMkZsLCAxNTQtMTcKLQkJCQlTYW1zdW5nLURvbmcsIEthbmduYW0tS3UgU2VvdWwsIDEzNS0wOTAKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS03QSAgIChoZXgpCQlDaGVuZ2R1IE1haXB1IEVsZWN0cmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDAxN0EgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSBNYWlwdSBFbGVjdHJpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCU5BTllJIEJVSUxESU5HLCBDT05TVUxBVEUgUkQuLAotCQkJCUNIRU5HRFUKLQkJCQlQLlIuIENISU5BCi0JCQkJQ0hJTkEKLQotMDAtMDEtN0IgICAoaGV4KQkJSGVpZGVsYmVyZ2VyIERydWNrbWFzY2hpbmVuIEFHCi0wMDAxN0IgICAgIChiYXNlIDE2KQkJSGVpZGVsYmVyZ2VyIERydWNrbWFzY2hpbmVuIEFHCi0JCQkJS3VyZnVlcnN0ZW5hbmxhZ2UgNTItNjAKLQkJCQk2OTExNSBIZWlkZWxiZXJnCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDEtN0MgICAoaGV4KQkJQUctRSBHbWJICi0wMDAxN0MgICAgIChiYXNlIDE2KQkJQUctRSBHbWJICi0JCQkJRGVubmV3YXJ0c3RyLiAyNwotCQkJCTUyMDY4IEFhY2hlbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLTdEICAgKGhleCkJCVRoZXJtb1F1ZXN0Ci0wMDAxN0QgICAgIChiYXNlIDE2KQkJVGhlcm1vUXVlc3QKLQkJCQkzNTUgUml2ZXIgT2FrcyBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTdFICAgKGhleCkJCUFEVEVLIFN5c3RlbSBTY2llbmNlIENvLiwgTHRkLgotMDAwMTdFICAgICAoYmFzZSAxNikJCUFEVEVLIFN5c3RlbSBTY2llbmNlIENvLiwgTHRkLgotCQkJCVlCUCBXZXN0IFRvd2VyCi0JCQkJMTM0IEdvaGRvLWNobywKLQkJCQlIb2RvZ2F5YSBZb2tvaGFtYSAKLQkJCQlKQVBBTgotCi0wMC0wMS03RiAgIChoZXgpCQlFeHBlcmllbmNlIE11c2ljIFByb2plY3QKLTAwMDE3RiAgICAgKGJhc2UgMTYpCQlFeHBlcmllbmNlIE11c2ljIFByb2plY3QKLQkJCQkxMTAgLTExMHRoIEF2ZW51ZSBORSAtIFN0ZS4gIzQwMAotCQkJCUJlbGxldnVlIFdBIDk4MDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS04MCAgIChoZXgpCQlBT3BlbiwgSW5jLgotMDAwMTgwICAgICAoYmFzZSAxNikJCUFPcGVuLCBJbmMuCi0JCQkJNkYsIDg4LCBTZWMuMSwgSHNpbiBUYWkKLQkJCQlXdSBSb2FkLCBIc2ljaGloIFRhaXBlaSBIc2llbiAyMjEKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtODEgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDAxODEgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJMTEwMCBUZWNobm9sb2d5IFBhcmsgRHJpdmUKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTgyICAgKGhleCkJCURJQ0EgVEVDSE5PTE9HSUVTIEFHCi0wMDAxODIgICAgIChiYXNlIDE2KQkJRElDQSBURUNITk9MT0dJRVMgQUcKLQkJCQlSb3RoZXJzdHIsIDE5Ci0JCQkJRC0xMDI0NSBCZXJsaW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS04MyAgIChoZXgpCQlBTklURSBURUxFQ09NUwotMDAwMTgzICAgICAoYmFzZSAxNikJCUFOSVRFIFRFTEVDT01TCi0JCQkJMTI3IEZsZWV0IFJvYWQsIEZsZWV0Ci0JCQkJSGFtcHNoaXJlLCBHVUIgOFBECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS04NCAgIChoZXgpCQlTSUVCICYgTUVZRVIgQUcKLTAwMDE4NCAgICAgKGJhc2UgMTYpCQlTSUVCICYgTUVZRVIgQUcKLQkJCQlBdWYgZGVtIFNjaG1hYXJrYW1wIDIxCi0JCQkJRC0yMTMzOSBMdW5lYnVyZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLTg1ICAgKGhleCkJCUFsb2thIENvLiwgTHRkLgotMDAwMTg1ICAgICAoYmFzZSAxNikJCUFsb2thIENvLiwgTHRkLgotCQkJCTMtNy0xOSwgSW1haSBPbWUtY2l0eQotCQkJCVRva3lvCi0JCQkJMTk4LTg1NzcgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMS04NiAgIChoZXgpCQlVd2UgRGlzY2gKLTAwMDE4NiAgICAgKGJhc2UgMTYpCQlVd2UgRGlzY2gKLQkJCQlFaWNoZW5oYWluc3RyYXNzZSAxNAotCQkJCTkxMjA3IExhdWYgYS5kLiBQZWduaXR6Ci0JCQkJR0VSTUFOWQotCi0wMC0wMS04NyAgIChoZXgpCQlpMlNFIEdtYkgKLTAwMDE4NyAgICAgKGJhc2UgMTYpCQlpMlNFIEdtYkgKLQkJCQlDYXJsLVplaXNzIC0gU3RyLiA0NgotCQkJCTQ3NDQ1IE1vZXJzCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDEtODggICAoaGV4KQkJTFhDTyBUZWNobm9sb2dpZXMgYWcKLTAwMDE4OCAgICAgKGJhc2UgMTYpCQlMWENPIFRlY2hub2xvZ2llcyBhZwotCQkJCUdpbW1lcnN0ci4gNjkKLQkJCQlELTEwMTE3IEJlcmxpbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLTg5ICAgKGhleCkJCVJlZnJhY3Rpb24gVGVjaG5vbG9neSwgSW5jLgotMDAwMTg5ICAgICAoYmFzZSAxNikJCVJlZnJhY3Rpb24gVGVjaG5vbG9neSwgSW5jLgotCQkJCTI2MjYgTG9tYmFyZHkgTGFuZSAtIFN0ZS4gIzEwNQotCQkJCURhbGxhcyBUWCA3NTIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtOEEgICAoaGV4KQkJUk9JIENPTVBVVEVSIEFHCi0wMDAxOEEgICAgIChiYXNlIDE2KQkJUk9JIENPTVBVVEVSIEFHCi0JCQkJV2VybmVyLXZvbi1TaWVtZW5zLVN0ci4gMQotCQkJCTkzNDI2IFJvZGluZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLThCICAgKGhleCkJCU5ldExpbmtzIENvLiwgTHRkLgotMDAwMThCICAgICAoYmFzZSAxNikJCU5ldExpbmtzIENvLiwgTHRkLgotCQkJCTNGIERzY29tIEJsZGcuLCAyMzgtMwotCQkJCVBvaS1kb25nLCBLYW5nbmFtLUt1IFNlb3VsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtOEMgICAoaGV4KQkJTWVnYSBWaXNpb24KLTAwMDE4QyAgICAgKGJhc2UgMTYpCQlNZWdhIFZpc2lvbgotCQkJCTU3NjUgVGhvcm53b29kIERyaXZlCi0JCQkJR29sZXRhIENBIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS04RCAgIChoZXgpCQlBdWRlU2kgVGVjaG5vbG9naWVzCi0wMDAxOEQgICAgIChiYXNlIDE2KQkJQXVkZVNpIFRlY2hub2xvZ2llcwotCQkJCVN1aXRlIDE4MCwgNjgxNQotCQkJCTh0aCBTdHJlZXQgTi5FLiBDYWxnYXJ5Ci0JCQkJQUIgQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAxLThFICAgKGhleCkJCUxvZ2l0ZWMgQ29ycG9yYXRpb24KLTAwMDE4RSAgICAgKGJhc2UgMTYpCQlMb2dpdGVjIENvcnBvcmF0aW9uCi0JCQkJODI2OCBSb2t1ZG91aGFyYSwgTWlzdXp1Ci0JCQkJSW5hLCBOYWdhbm8KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLThGICAgKGhleCkJCUtlbmV0ZWMsIEluYy4KLTAwMDE4RiAgICAgKGJhc2UgMTYpCQlLZW5ldGVjLCBJbmMuCi0JCQkJMTE1IEh1cmxleSBSb2FkCi0JCQkJT3hmb3JkIENUIDA2NzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05MCAgIChoZXgpCQlTTUstTQotMDAwMTkwICAgICAoYmFzZSAxNikJCVNNSy1NCi0JCQkJMTA1NSBUaWVycmEgRGVsIFJleQotCQkJCUNodWxhIFZpc3RhIENBIDkxOTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05MSAgIChoZXgpCQlTWVJFRCBEYXRhIFN5c3RlbXMKLTAwMDE5MSAgICAgKGJhc2UgMTYpCQlTWVJFRCBEYXRhIFN5c3RlbXMKLQkJCQkyNzIgTGFuZXMgTWlsbCBSb2FkCi0JCQkJSG93ZWxsIE5KIDA3NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05MiAgIChoZXgpCQlUZXhhcyBEaWdpdGFsIFN5c3RlbXMKLTAwMDE5MiAgICAgKGJhc2UgMTYpCQlUZXhhcyBEaWdpdGFsIFN5c3RlbXMKLQkJCQk0MDAgVGVjaG5vbG9neSBQYXJrd2F5Ci0JCQkJQ29sbGVnZSBTdGF0aW9uIFRYIDc3ODQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05MyAgIChoZXgpCQlIYW5ieXVsIFRlbGVjb20gQ28uLCBMdGQuCi0wMDAxOTMgICAgIChiYXNlIDE2KQkJSGFuYnl1bCBUZWxlY29tIENvLiwgTHRkLgotCQkJCTV0aCBGbC4gT2tzYW4gQmxkZy4KLQkJCQkxNTctMzMgU2Ftc3VuZy1Eb25nIEthbmduYW0ta3UgU2VvdWwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS05NCAgIChoZXgpCQlDYXBpdGFsIEVxdWlwbWVudCBDb3Jwb3JhdGlvbgotMDAwMTk0ICAgICAoYmFzZSAxNikJCUNhcGl0YWwgRXF1aXBtZW50IENvcnBvcmF0aW9uCi0JCQkJOTAwIE1pZGRsZXNleCBUdXJucGlrZSAtIEJsZGcuIDIKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTk1ICAgKGhleCkJCVNlbmEgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDAxOTUgICAgIChiYXNlIDE2KQkJU2VuYSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMTYtMjMgU2hpbmxpbS1kb25nCi0JCQkJT25zdW5nIEJsZGcuIDh0aCBGbG9vciBLd2FuYWsta3UgU2VvdWwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS05NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxOTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTk3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDE5NyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtOTggICAoaGV4KQkJRGFyaW0gVmlzaW9uCi0wMDAxOTggICAgIChiYXNlIDE2KQkJRGFyaW0gVmlzaW9uCi0JCQkJVGFlam9uIEV4cG8gVmVudHVyZSBUb3duCi0JCQkJMy0xIERvcnlvbmctZG9uZywgWXVzdW5nLWd1IFRhZWpvbgotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTk5ICAgKGhleCkJCUhlaVNlaSBFbGVjdHJvbmljcwotMDAwMTk5ICAgICAoYmFzZSAxNikJCUhlaVNlaSBFbGVjdHJvbmljcwotCQkJCTUvNyBBbGxleSA4LCBMYW5lIDQ1Ci0JCQkJUG9hbHRzaW4gUm9hZCBIc2ludGllbiBDaXR5Ci0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS05QSAgIChoZXgpCQlMRVVOSUcgR21iSAotMDAwMTlBICAgICAoYmFzZSAxNikJCUxFVU5JRyBHbWJICi0JCQkJV2lsaGVsbS1Pc3R3YWxkLVN0ci4gMTcKLQkJCQk1MzcyMSBTaWVnYnVyZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLTlCICAgKGhleCkJCUt5b3RvIE1pY3JvY29tcHV0ZXIgQ28uLCBMdGQuCi0wMDAxOUIgICAgIChiYXNlIDE2KQkJS3lvdG8gTWljcm9jb21wdXRlciBDby4sIEx0ZC4KLQkJCQkyLTI3IEhhY2hpam9nYW9rYQotCQkJCU5hZ2Fva2FreW8tY2l0eSBLeW90bwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtOUMgICAoaGV4KQkJSkRTIFVuaXBoYXNlIEluYy4KLTAwMDE5QyAgICAgKGJhc2UgMTYpCQlKRFMgVW5pcGhhc2UgSW5jLgotCQkJCTU3MCBXZXN0IEh1bnQgQ2x1YiBSb2FkCi0JCQkJTmFwZW9uLCBPTiBLMVIgN1Q3Ci0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAxLTlEICAgKGhleCkJCUUtQ29udHJvbCBTeXN0ZW1zLCBJbmMuCi0wMDAxOUQgICAgIChiYXNlIDE2KQkJRS1Db250cm9sIFN5c3RlbXMsIEluYy4KLQkJCQk5NDIwIEx1cmxpbmUgQXZlLiwgVW5pdGUKLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05RSAgIChoZXgpCQlFU1MgVGVjaG5vbG9neSwgSW5jLgotMDAwMTlFICAgICAoYmFzZSAxNikJCUVTUyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNDg0MDEgRnJlbW9udCBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTlGICAgKGhleCkJCVBob25leCBCcm9hZGJhbmQKLTAwMDE5RiAgICAgKGJhc2UgMTYpCQlQaG9uZXggQnJvYWRiYW5kCi0JCQkJNjk1MiBIaWdoIFRlY2ggRHJpdmUKLQkJCQlNaWR2YWxlIFVUIDg0MDQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1BMCAgIChoZXgpCQlJbmZpbmlsaW5rIENvcnBvcmF0aW9uCi0wMDAxQTAgICAgIChiYXNlIDE2KQkJSW5maW5pbGluayBDb3Jwb3JhdGlvbgotCQkJCTE3NDAgRS4gR2FycnkgQXZlLiAtIFN0ZS4gIzIwNgotCQkJCVNhbnRhIEFuYSBDQSA5MjcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQTEgICAoaGV4KQkJTWFnLVRlaywgSW5jLgotMDAwMUExICAgICAoYmFzZSAxNikJCU1hZy1UZWssIEluYy4KLQkJCQkyMDcyNSBTb3V0aCBBbm5hbGVlIEF2ZS4KLQkJCQlDYXJzb24gQ0EgOTA3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUEyICAgKGhleCkJCUxvZ2ljYWwgQ28uLCBMdGQuCi0wMDAxQTIgICAgIChiYXNlIDE2KQkJTG9naWNhbCBDby4sIEx0ZC4KLQkJCQk0NTk4IE11cmFrdXNoaS1jaG8KLQkJCQlIYW1hbWF0c3Utc2hpLCBTaGl6dW9rYS1rZW4KLQkJCQk0MzEtMTIwNyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLUEzICAgKGhleCkJCUdFTkVTWVMgTE9HSUMsIElOQy4KLTAwMDFBMyAgICAgKGJhc2UgMTYpCQlHRU5FU1lTIExPR0lDLCBJTkMuCi0JCQkJMTBGLCBOby4gMTEsIExuLjMuLAotCQkJCVRzYW8gVGkgV2VpLCBTaGVua2VuZyBUYWlwZWkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUE0ICAgKGhleCkJCU1pY3JvbGluayBDb3Jwb3JhdGlvbgotMDAwMUE0ICAgICAoYmFzZSAxNikJCU1pY3JvbGluayBDb3Jwb3JhdGlvbgotCQkJCTExMTEwIE9oaW8gQXZlLiwgLSBTdGUuICMxMDgKLQkJCQlMb3MgQW5nZWxlcyBDQSA5MDAzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQTUgICAoaGV4KQkJTmV4dGNvbW0sIEluYy4KLTAwMDFBNSAgICAgKGJhc2UgMTYpCQlOZXh0Y29tbSwgSW5jLgotCQkJCTEyNDEzIFdpbGxvd3MgUm9hZCBORSAtIFN0ZS4gIzIxMAotCQkJCUtpcmtsYW5kIFdBIDk4MDM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1BNiAgIChoZXgpCQlTY2llbnRpZmljLUF0bGFudGEgQXJjb2RhbiBBL1MKLTAwMDFBNiAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljLUF0bGFudGEgQXJjb2RhbiBBL1MKLQkJCQlBdmd1c3RlbmJvcmcgTGFuZGV2ZWogNwotCQkJCURLLTY0MDAgU29uZGVyYm9yZwotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLTAxLUE3ICAgKGhleCkJCVVORVggVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDAwMUE3ICAgICAoYmFzZSAxNikJCVVORVggVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCThGLTUsIE5PLiAxMzAgU1pFIFdFSSBST0FECi0JCQkJSFNJTkNIVQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS1BOCAgIChoZXgpCQlXZWxsdGVjaCBDb21wdXRlciBDby4sIEx0ZC4KLTAwMDFBOCAgICAgKGJhc2UgMTYpCQlXZWxsdGVjaCBDb21wdXRlciBDby4sIEx0ZC4KLQkJCQkxM0YtNCwgbm8uIDE1MCwgSmlhbiBZaSBSb2FkCi0JCQkJQ2h1bmctSG8gMjM1LCAgVGFpcGVpCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUE5ICAgKGhleCkJCUJNVyBBRwotMDAwMUE5ICAgICAoYmFzZSAxNikJCUJNVyBBRwotCQkJCUJNVyBBRyBEZXB0LiBGWi0zMjAKLQkJCQlLbm9ycnN0ci4xMTkKLQkJCQk4MDc4OCBNdW5pY2ggCi0JCQkJR0VSTUFOWQotCi0wMC0wMS1BQSAgIChoZXgpCQlBaXJzcGFuIENvbW11bmljYXRpb25zLCBMdGQuCi0wMDAxQUEgICAgIChiYXNlIDE2KQkJQWlyc3BhbiBDb21tdW5pY2F0aW9ucywgTHRkLgotCQkJCUNhbWJyaWRnZSBIb3VzZSwgT3hmb3JkIFJkLiwKLQkJCQlVeGJyaWRnZSwgTWlkZGxlc2V4IFVCMVVOLAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDEtQUIgICAoaGV4KQkJTWFpbiBTdHJlZXQgTmV0d29ya3MKLTAwMDFBQiAgICAgKGJhc2UgMTYpCQlNYWluIFN0cmVldCBOZXR3b3JrcwotCQkJCTQwMzAgTW9vcnBhcmsgQXZlLgotCQkJCVN1aXRlIDIwMAotCQkJCVNhbiBKb3NlIENBIDk1MTE3LTE4NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUFDICAgKGhleCkJCVNpdGFyYSBOZXR3b3JrcywgSW5jLgotMDAwMUFDICAgICAoYmFzZSAxNikJCVNpdGFyYSBOZXR3b3JrcywgSW5jLgotCQkJCTYwIEhpY2tvcnkgRHJpdmUKLQkJCQlXYWx0aGFtIE1BIDAyNDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1BRCAgIChoZXgpCQlDb2FjaCBNYXN0ZXIgSW50ZXJuYXRpb25hbCAgZC5iLmEuIENNSSBXb3JsZHdpZGUsIEluYy4KLTAwMDFBRCAgICAgKGJhc2UgMTYpCQlDb2FjaCBNYXN0ZXIgSW50ZXJuYXRpb25hbCAgZC5iLmEuIENNSSBXb3JsZHdpZGUsIEluYy4KLQkJCQk2MDAgU3Rld2FydCBTdHJlZXQKLQkJCQlTdWl0ZSA3MDAKLQkJCQlTZWF0dGxlIFdBIDk4MTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1BRSAgIChoZXgpCQlUcmV4IEVudGVycHJpc2VzCi0wMDAxQUUgICAgIChiYXNlIDE2KQkJVHJleCBFbnRlcnByaXNlcwotCQkJCTU5MCBMaXBvYSBQYXJrd2F5Ci0JCQkJU3VpdGUgMjIyCi0JCQkJS2loZWkgSEkgOTY3NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUFGICAgKGhleCkJCUVtZXJzb24gTmV0d29yayBQb3dlcgotMDAwMUFGICAgICAoYmFzZSAxNikJCUVtZXJzb24gTmV0d29yayBQb3dlcgotCQkJCTI5MDAgUy4gRGlhYmxvIFdheQotCQkJCVN1aXRlIDE5MAotCQkJCVRlbXBlIEFyaXpvbmEgODUyODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUIwICAgKGhleCkJCUZ1bGx0ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDFCMCAgICAgKGJhc2UgMTYpCQlGdWxsdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJM0YgTm8uIDgsIExhbmUgMTMwLCBNaW4gQ2h1YW4gUmQuLCBIc2ludAotCQkJCUNpdHksIFRhaXBlaSBIc2VpbiAyMzEsCi0JCQkJVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtQjEgICAoaGV4KQkJR2VuZXJhbCBCYW5kd2lkdGgKLTAwMDFCMSAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIEJhbmR3aWR0aAotCQkJCTEyMzAzLUIgVGVjaG5vbG9neSBCbHZkLgotCQkJCUF1c3RpbiBUWCA3ODcyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQjIgICAoaGV4KQkJRGlnaXRhbCBQcm9jZXNzaW5nIFN5c3RlbXMsIEluYy4KLTAwMDFCMiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFByb2Nlc3NpbmcgU3lzdGVtcywgSW5jLgotCQkJCTcwIFZhbGxleXdvb2QgRHJpdmUKLQkJCQlNYXJraGFtLCBPbnRhcmlvIENBTkFEQQotCQkJCUwzUiA0VDUKLQkJCQlDQU5BREEKLQotMDAtMDEtQjMgICAoaGV4KQkJUHJlY2lzaW9uIEVsZWN0cm9uaWMgTWFudWZhY3R1cmluZwotMDAwMUIzICAgICAoYmFzZSAxNikJCVByZWNpc2lvbiBFbGVjdHJvbmljIE1hbnVmYWN0dXJpbmcKLQkJCQlQMDE4NywgUC5PLiA1Mjc5NDgKLQkJCQlNaWFtaSBGTCAzMzE1Mi03OTQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1CNCAgIChoZXgpCQlXYXlwb3J0LCBJbmMuCi0wMDAxQjQgICAgIChiYXNlIDE2KQkJV2F5cG9ydCwgSW5jLgotCQkJCTE2MDkgU2hvYWwgQ3JlZWsgQmx2ZC4KLQkJCQlTdWl0ZSAzMDEKLQkJCQlBdXN0aW4gVFggNzg3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUI1ICAgKGhleCkJCVR1cmluIE5ldHdvcmtzLCBJbmMuCi0wMDAxQjUgICAgIChiYXNlIDE2KQkJVHVyaW4gTmV0d29ya3MsIEluYy4KLQkJCQkxNDE1IE5vcnRoIE1jRG93ZWxsIEJsdmQuCi0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUI2ICAgKGhleCkJCVNBRUpJTiBUJk0gQ28uLCBMdGQuCi0wMDAxQjYgICAgIChiYXNlIDE2KQkJU0FFSklOIFQmTSBDby4sIEx0ZC4KLQkJCQkybmQgRmwuLCBTYWVqaW4gQmxkZy4sIDY4OQotCQkJCUlsd29uLURvbmcsIEthbmduYW0tR3UuIFNlb3VsLCAxMzUtMjMwCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtQjcgICAoaGV4KQkJQ2VudG9zLCBJbmMuCi0wMDAxQjcgICAgIChiYXNlIDE2KQkJQ2VudG9zLCBJbmMuCi0JCQkJNkYtMSwgTk8uIDE1LCBMQU5FIDM2MAotCQkJCU5FSS1IVSBSRC4sIFNFQ1QuIDEsIFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS1COCAgIChoZXgpCQlOZXRzZW5zaXR5LCBJbmMuCi0wMDAxQjggICAgIChiYXNlIDE2KQkJTmV0c2Vuc2l0eSwgSW5jLgotCQkJCVBPIEJveCAxMDYwCi0JCQkJTGFrZSBGb3Jlc3QgQ0EgOTI2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUI5ICAgKGhleCkJCVNLRiBDb25kaXRpb24gTW9uaXRvcmluZwotMDAwMUI5ICAgICAoYmFzZSAxNikJCVNLRiBDb25kaXRpb24gTW9uaXRvcmluZwotCQkJCTQxNDEgUnVmZmluIFJvYWQKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUJBICAgKGhleCkJCUlDLU5ldCwgSW5jLgotMDAwMUJBICAgICAoYmFzZSAxNikJCUlDLU5ldCwgSW5jLgotCQkJCTUgRmwuIFNlYXN1bmcgQmxkZy4sIDMxMS0yNyBOb3J5YW5namluLUQKLQkJCQlEb25namFrLUd1IFNlb3VsLAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLUJCICAgKGhleCkJCUZyZXF1ZW50aXMKLTAwMDFCQiAgICAgKGJhc2UgMTYpCQlGcmVxdWVudGlzCi0JCQkJU1BJVFRFTEJSRUlURU5HQVNTRSAzNAotCQkJCUEtMTEyMCBWSUVOTkEKLQkJCQlBVVNUUklBCi0JCQkJQVVTVFJJQQotCi0wMC0wMS1CQyAgIChoZXgpCQlCcmFpbnMgQ29ycG9yYXRpb24KLTAwMDFCQyAgICAgKGJhc2UgMTYpCQlCcmFpbnMgQ29ycG9yYXRpb24KLQkJCQkyLTI3LTgtNEZsIFRBTUFHQVdBCi0JCQkJU0VUQUdBWUEtS1UsIFRPS1lPIDE1OC0wMDk0Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMS1CRCAgIChoZXgpCQlQZXRlcnNvbiBFbGVjdHJvLU11c2ljYWwgUHJvZHVjdHMsIEluYy4KLTAwMDFCRCAgICAgKGJhc2UgMTYpCQlQZXRlcnNvbiBFbGVjdHJvLU11c2ljYWwgUHJvZHVjdHMsIEluYy4KLQkJCQkxMTYwMSBTLiBNYXlmaWVsZCBBdmVudWUKLQkJCQlBbHNpcCBJTCA2MDgwMy0yNDc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1CRSAgIChoZXgpCQlHaWdhbGluayBDby4sIEx0ZC4KLTAwMDFCRSAgICAgKGJhc2UgMTYpCQlHaWdhbGluayBDby4sIEx0ZC4KLQkJCQk2dGggRi9MIERpcGxvbWF0aWMgQ2VudGVyIDEzNzYtMQotCQkJCVNlb2Noby1kb25nIFNlb2Noby1rdSBTZW91bAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLUJGICAgKGhleCkJCVRlbGVmb3JjZSBDby4sIEx0ZC4KLTAwMDFCRiAgICAgKGJhc2UgMTYpCQlUZWxlZm9yY2UgQ28uLCBMdGQuCi0JCQkJNzIxIHlvc2hpb2thLWNobyBrYW5vbmppLWNpdHkKLQkJCQlLYWdhd2EtcHJmLiA3NjgtMDAyMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtQzAgICAoaGV4KQkJQ29tcHVMYWIsIEx0ZC4KLTAwMDFDMCAgICAgKGJhc2UgMTYpCQlDb21wdUxhYiwgTHRkLgotCQkJCVAuTy4gQm94IDY2Ci0JCQkJTmVzaGVyIDM2NzcwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAxLUMxICAgKGhleCkJCVZpdGVzc2UgU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlvbgotMDAwMUMxICAgICAoYmFzZSAxNikJCVZpdGVzc2UgU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlvbgotCQkJCUhvZXJrYWVyIDE4Ci0JCQkJREstMjczMCBIZXJsZXYKLQkJCQlERU5NQVJLCi0KLTAwLTAxLUMyICAgKGhleCkJCUFSSyBSZXNlYXJjaCBDb3JwLgotMDAwMUMyICAgICAoYmFzZSAxNikJCUFSSyBSZXNlYXJjaCBDb3JwLgotCQkJCTExOTggU2FyYXRvZ2EgQXZlLiAjMTFECi0JCQkJU2FuIEpvc2UgQ0EgOTUxMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUMzICAgKGhleCkJCUFjcm9tYWcsIEluYy4KLTAwMDFDMyAgICAgKGJhc2UgMTYpCQlBY3JvbWFnLCBJbmMuCi0JCQkJMzA3NjUgUy4gV2l4b20gUm9hZAotCQkJCVdpeG9tIE1JIDQ4MzkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1DNCAgIChoZXgpCQlOZW9XYXZlLCBJbmMuCi0wMDAxQzQgICAgIChiYXNlIDE2KQkJTmVvV2F2ZSwgSW5jLgotCQkJCTEwdGggS1JJSFMgQmxkZy4gMTU5MS02Ci0JCQkJS3dhbiBZYW5nLURvbmcsIERvbmcgQW4tR3UsIEFueW9uZy1TaSwgSwotCQkJCVNPVVRIIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLUM1ICAgKGhleCkJCVNpbXBsZXIgTmV0d29ya3MKLTAwMDFDNSAgICAgKGJhc2UgMTYpCQlTaW1wbGVyIE5ldHdvcmtzCi0JCQkJNTU1IERyIEZyZWRlcmljayBQaGlsaXBzCi0JCQkJU3VpdGUgMjEwIFN0LiBMYXVyZW50LCBRVUVCRUMgQ0FOQURBCi0JCQkJSDRNIDJYNAotCQkJCUNBTkFEQQotCi0wMC0wMS1DNiAgIChoZXgpCQlRdWFycnkgVGVjaG5vbG9naWVzCi0wMDAxQzYgICAgIChiYXNlIDE2KQkJUXVhcnJ5IFRlY2hub2xvZ2llcwotCQkJCTggTmV3IEVuZ2xhbmQgRXhlY3V0aXZlIFBhcmsKLQkJCQlCdXJsaW5ndG9uIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1DNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxQzcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQzggICAoaGV4KQkJVEhPTUFTIENPTlJBRCBDT1JQLgotMDAwMUM4ICAgICAoYmFzZSAxNikJCVRIT01BUyBDT05SQUQgQ09SUC4KLQkJCQkxOTA4LVIgS1JBTUVSIExBTkUKLQkJCQlBVVNUSU4gVFggNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUM4ICAgKGhleCkJCUNPTlJBRCBDT1JQLgotMDAwMUM4ICAgICAoYmFzZSAxNikJCUNPTlJBRCBDT1JQLgotCQkJCQotCi0wMC0wMS1DOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxQzkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1DQSAgIChoZXgpCQlHZW9jYXN0IE5ldHdvcmsgU3lzdGVtcywgSW5jLgotMDAwMUNBICAgICAoYmFzZSAxNikJCUdlb2Nhc3QgTmV0d29yayBTeXN0ZW1zLCBJbmMuCi0JCQkJMTkwIEluZGVwZW5kZW5jZSBEcml2ZQotCQkJCU1lbmxvIFBhcmsgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUNCICAgKGhleCkJCUVWUgotMDAwMUNCICAgICAoYmFzZSAxNikJCUVWUgotCQkJCTEyIFJhdWwgV2FsbGVuYmVyZyBTdC4KLQkJCQlUZWwgQXZpdiAgNjk3MTkKLQkJCQlJU1JBRUwKLQotMDAtMDEtQ0MgICAoaGV4KQkJSmFwYW4gVG90YWwgRGVzaWduIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0wMDAxQ0MgICAgIChiYXNlIDE2KQkJSmFwYW4gVG90YWwgRGVzaWduIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0JCQkJRW5lc3RhIFN1Z2luYW1paGlnYXNoaSBCdWlsZC4sIDNGLAotCQkJCTMtNy0xLCBBc2FnYXlhbWluYW1pIFN1Z2luYW1pLWt1LCBUb2t5bwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtQ0QgICAoaGV4KQkJQVJ0ZW0KLTAwMDFDRCAgICAgKGJhc2UgMTYpCQlBUnRlbQotCQkJCU9sZ2FzdHJhc3NlIDE1MgotCQkJCUQtODkwNzMgVUxNCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDEtQ0UgICAoaGV4KQkJQ3VzdG9tIE1pY3JvIFByb2R1Y3RzLCBMdGQuCi0wMDAxQ0UgICAgIChiYXNlIDE2KQkJQ3VzdG9tIE1pY3JvIFByb2R1Y3RzLCBMdGQuCi0JCQkJNDUwIEJsYW5kZm9yZCBSb2FkCi0JCQkJSGFtd29ydGh5IFBvb2xlIERvcnNldCBCSElMIDVCTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDEtQ0YgICAoaGV4KQkJQWxwaGEgRGF0YSBQYXJhbGxlbCBTeXN0ZW1zLCBMdGQuCi0wMDAxQ0YgICAgIChiYXNlIDE2KQkJQWxwaGEgRGF0YSBQYXJhbGxlbCBTeXN0ZW1zLCBMdGQuCi0JCQkJNTggVGltYmVyIEJ1c2gKLQkJCQlFZGluYnVyZ2ggRUg2IDZRSCBTY290bGFuZAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDEtRDAgICAoaGV4KQkJVml0YWxQb2ludCwgSW5jLgotMDAwMUQwICAgICAoYmFzZSAxNikJCVZpdGFsUG9pbnQsIEluYy4KLQkJCQkxNTc3MCBIb3BwZXIgUm9hZAotCQkJCVBleXRvbiBDTyA4MDgzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRDEgICAoaGV4KQkJQ29OZXQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDFEMSAgICAgKGJhc2UgMTYpCQlDb05ldCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTI1IE1hdWNobHksICMzMjAKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUQyICAgKGhleCkJCWluWHRyb24sIEluYy4gCi0wMDAxRDIgICAgIChiYXNlIDE2KQkJaW5YdHJvbiwgSW5jLiAKLQkJCQk4RiwgTm8uNTIsIE1pblF1YW4gUm9hZCwgWGluZGlhbiBEaXN0LgotCQkJCU5ldyBUYWlwZWkgQ2l0eSAgMjMxNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUQzICAgKGhleCkJCVBBWENPTU0sIEluYy4KLTAwMDFEMyAgICAgKGJhc2UgMTYpCQlQQVhDT01NLCBJbmMuCi0JCQkJN3RoIEYgVGhlIENvcnAuIENlbnRlcgotCQkJCUNodW5nbmFtIE5hdGlvbmFsIFVuaXZlcnNpdHkgMjIwIEt1bmctRG8KLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS1ENCAgIChoZXgpCQlMZWlzdXJlIFRpbWUsIEluYy4KLTAwMDFENCAgICAgKGJhc2UgMTYpCQlMZWlzdXJlIFRpbWUsIEluYy4KLQkJCQk0MjU4IENvbW11bmljYXRpb25zIERyaXZlCi0JCQkJTm9yY3Jvc3MgR0EgMzAwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUQ1ICAgKGhleCkJCUhBRURPTkcgSU5GTyAmIENPTU0gQ08uLCBMVEQKLTAwMDFENSAgICAgKGJhc2UgMTYpCQlIQUVET05HIElORk8gJiBDT01NIENPLiwgTFRECi0JCQkJIzgwMSBUaGUgQ29ycG9yYXRpb24gQ2VudGVyIGZvciBVbml2ZXJzaQotCQkJCTIyMCBLdW5nLURvbmcsIFl1c2VvbmctR3UsCi0JCQkJVGFlamVvbiBSZXB1YmxpYyBvZiBLb3JlYSAzMDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtRDYgICAoaGV4KQkJbWFucm9sYW5kIEFHCi0wMDAxRDYgICAgIChiYXNlIDE2KQkJbWFucm9sYW5kIEFHCi0JCQkJU3RhZHRiYWNoc3RyYXNzZSAxCi0JCQkJODYyMTkgQXVnc2J1cmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLUQ3ICAgKGhleCkJCUY1IE5ldHdvcmtzLCBJbmMuCi0wMDAxRDcgICAgIChiYXNlIDE2KQkJRjUgTmV0d29ya3MsIEluYy4KLQkJCQkxMzIyIE4uIFdoaXRtYW4gTGFuZQotCQkJCUxpYmVydHkgTGFrZSBXQSA5OTAxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRDggICAoaGV4KQkJVGVsdHJvbmljcywgSW5jLgotMDAwMUQ4ICAgICAoYmFzZSAxNikJCVRlbHRyb25pY3MsIEluYy4KLQkJCQk0MTI1IEtlbGxlciBTcHJpbmdzIFJvYWQKLQkJCQlTdWl0ZSAxNjYKLQkJCQlBZGRpc29uIFRYIDI1MDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1EOSAgIChoZXgpCQlTaWdtYSwgSW5jLgotMDAwMUQ5ICAgICAoYmFzZSAxNikJCVNpZ21hLCBJbmMuCi0JCQkJMzItMyBTZWlqeW8gOSBDaG9tZQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1Ny0wMDY2Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMS1EQSAgIChoZXgpCQlXSU5DT01NIENvcnBvcmF0aW9uCi0wMDAxREEgICAgIChiYXNlIDE2KQkJV0lOQ09NTSBDb3Jwb3JhdGlvbgotCQkJCTJGLCBOby4gMywgUHJvc3Blcml0eSBSb2FkIDEsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssIEhzaW5jaHUsCi0JCQkJSHNpbmNodSBUYWl3YW4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLURCICAgKGhleCkJCUZyZWVjb20gVGVjaG5vbG9naWVzIEdtYkgKLTAwMDFEQiAgICAgKGJhc2UgMTYpCQlGcmVlY29tIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJT2JlbnRyYXV0c3RyLiA3MgotCQkJCUQtMTA5NjMsIEJlcmxpbiwKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLURDICAgKGhleCkJCUFjdGl2ZXRlbGNvCi0wMDAxREMgICAgIChiYXNlIDE2KQkJQWN0aXZldGVsY28KLQkJCQk0MzIyMiBDaHJpc3R5IFN0cmVldAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUREICAgKGhleCkJCUF2YWlsIE5ldHdvcmtzCi0wMDAxREQgICAgIChiYXNlIDE2KQkJQXZhaWwgTmV0d29ya3MKLQkJCQkzMDUgRS4gRWlzZW5ob3dlciBQYXJrd2F5Ci0JCQkJQW5uIEFyYm9yIE1JIDQ4MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1ERSAgIChoZXgpCQlUcmFuZ28gU3lzdGVtcywgSW5jLgotMDAwMURFICAgICAoYmFzZSAxNikJCVRyYW5nbyBTeXN0ZW1zLCBJbmMuCi0JCQkJOTkzOSBWL0EgUGFzYXIKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLURGICAgKGhleCkJCUlTRE4gQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLTAwMDFERiAgICAgKGJhc2UgMTYpCQlJU0ROIENvbW11bmljYXRpb25zLCBMdGQuCi0JCQkJVGhlIFN0YWJsZSBCbG9jaywgUm9uYW5zCi0JCQkJQ2hhdmV5IERvd24gUm9hZCwgV2lua2ZpZWxkIFJvdyBCZXJrc2hpcgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS1FMCAgIChoZXgpCQlGYXN0IFN5c3RlbXMsIEluYy4KLTAwMDFFMCAgICAgKGJhc2UgMTYpCQlGYXN0IFN5c3RlbXMsIEluYy4KLQkJCQk4Ny05IFlhbmctSmFlLCBTZW8tQ2hvLAotCQkJCVNlb3VsLAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLUUxICAgKGhleCkJCUtpbnBvIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDAxRTEgICAgIChiYXNlIDE2KQkJS2lucG8gRWxlY3Ryb25pY3MsIEluYy4KLQkJCQlUU0FDIFRJIFdFSSwgV0FOIFNIVU4gVFNVTiwKLQkJCQlTSEVOIEtFTkcgSFNJQU5HLCBUQUlQRUkgSFNJRU4gVEFJV0FOICgyCi0JCQkJQ0hJTkEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUUyICAgKGhleCkJCUFuZG8gRWxlY3RyaWMgQ29ycG9yYXRpb24KLTAwMDFFMiAgICAgKGJhc2UgMTYpCQlBbmRvIEVsZWN0cmljIENvcnBvcmF0aW9uCi0JCQkJMTktNywgS2FtYXRhIDQtQ2hyb21lLCBPdGEta3UKLQkJCQlUb2t5bywgMTQ0LTAwNTIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLUUzICAgKGhleCkJCVNpZW1lbnMgQUcKLTAwMDFFMyAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHCi0JCQkJU2NobGF2ZW5ob3JzdCA4OAotCQkJCTQ2Mzk1IEJvY2hvbHQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS1FNCAgIChoZXgpCQlTaXRlcmEsIEluYy4KLTAwMDFFNCAgICAgKGJhc2UgMTYpCQlTaXRlcmEsIEluYy4KLQkJCQkxODIwIExlZnRoYW5kIENpcmNsZQotCQkJCUxvbmdtb250IENPIDgwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1FNSAgIChoZXgpCQlTdXBlcm5ldCwgSW5jLgotMDAwMUU1ICAgICAoYmFzZSAxNikJCVN1cGVybmV0LCBJbmMuCi0JCQkJMTM1LTA4MCBEYWVtZW9uZyBCbGRnLgotCQkJCTJuZCBGbG9vciwgNjUwLTIsIFllb2tzYW0tZG9uZyBLYW5nbmFtLWsKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS1FNiAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwMUU2ICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTEwMDAgV29sZmUgUm9hZCwgTWFpbHN0b3AgNDJMRQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRTcgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMDFFNyAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTExMDAwIFdvbGZlIFJvYWQsIE1haWxzdG9wIDQyTEUKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUU4ICAgKGhleCkJCUZvcmNlMTAgTmV0d29ya3MsIEluYy4KLTAwMDFFOCAgICAgKGJhc2UgMTYpCQlGb3JjZTEwIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTQ0MCBNY0NhcnRoeSBCbHZkLgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1FOSAgIChoZXgpCQlMaXR0b24gTWFyaW5lIFN5c3RlbXMgQi5WLgotMDAwMUU5ICAgICAoYmFzZSAxNikJCUxpdHRvbiBNYXJpbmUgU3lzdGVtcyBCLlYuCi0JCQkJMTE4IEJ1cmxpbmd0b24gUm9hZAotCQkJCU5ldyBNYWxkZW4sIFN1cnJleQotCQkJCUVOR0xBTkQgS1QzIDROUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAxLUVBICAgKGhleCkJCUNpcmlsaXVtIENvcnAuCi0wMDAxRUEgICAgIChiYXNlIDE2KQkJQ2lyaWxpdW0gQ29ycC4KLQkJCQkxNjE1IFMuIDUybmQgU3RyZWV0Ci0JCQkJVGVtcGUgQVogODUyODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUVCICAgKGhleCkJCUMtQ09NIENvcnBvcmF0aW9uCi0wMDAxRUIgICAgIChiYXNlIDE2KQkJQy1DT00gQ29ycG9yYXRpb24KLQkJCQkzRiwgTm8uIDQ4LCBQYXJrIEF2ZS4gSUkgU0JJUAotCQkJCUhzaW5jaHUgVGFpd2FuIEhzaW5jaHUgVGFpd2FuIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtRUMgICAoaGV4KQkJRXJpY3Nzb24gR3JvdXAKLTAwMDFFQyAgICAgKGJhc2UgMTYpCQlFcmljc3NvbiBHcm91cAotCQkJCVRlbGVmb25ha3RpZWJvbGFnZXQKLQkJCQlMTSBFcmljc3NvbiBDb3JwLiAxMjYgMjUgU1RPQ0tIT0xNCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAxLUVEICAgKGhleCkJCVNFVEEgQ29ycC4KLTAwMDFFRCAgICAgKGJhc2UgMTYpCQlTRVRBIENvcnAuCi0JCQkJQXJpYWtlIEZyb250aWVyIEJsZGcuIEIKLQkJCQlBcmlha2UsIEtvdXRvdSBLdSBUb2t5bywKLQkJCQlKQVBBTiAxMzUtMDA2MwotCQkJCUpBUEFOCi0KLTAwLTAxLUVFICAgKGhleCkJCUNvbXRyb2wgRXVyb3BlLCBMdGQuCi0wMDAxRUUgICAgIChiYXNlIDE2KQkJQ29tdHJvbCBFdXJvcGUsIEx0ZC4KLQkJCQlUaGUgQ291cnR5YXJkIFN0dWRpbwotCQkJCUdyYW5nZSBGYXJtLCBTdGF0aW9uIFJvYWQgTGF1bnRvbiBPeG9uIE8KLQkJCQlVLksuCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDEtRUYgICAoaGV4KQkJQ2FtdGVsIFRlY2hub2xvZ3kgQ29ycC4KLTAwMDFFRiAgICAgKGJhc2UgMTYpCQlDYW10ZWwgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLiAyLCBXdS1LdW5nIDUgUmQuLCBXdS1LdQotCQkJCUluZC4gUGFyaywgSHNpbmNodWFuZywgVGFpcGVpIFNoaWVuCi0JCQkJVGFpd2FuIFRhaXdhbiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUYwICAgKGhleCkJCVRyaWRpdW0sIEluYy4KLTAwMDFGMCAgICAgKGJhc2UgMTYpCQlUcmlkaXVtLCBJbmMuCi0JCQkJMzk1MSBXZXN0ZXJyZSBQYXJrd2F5Ci0JCQkJU3VpdGUgMzUwCi0JCQkJUmljaG1vbmQgVkEgMjMyMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUYxICAgKGhleCkJCUlubm92YXRpdmUgQ29uY2VwdHMsIEluYy4KLTAwMDFGMSAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aXZlIENvbmNlcHRzLCBJbmMuCi0JCQkJODIwMCBHcmVlbnNib3JvIERyaXZlCi0JCQkJU3VpdGUgODAxCi0JCQkJTWNMZWFuIFZBIDIyMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GMiAgIChoZXgpCQlNYXJrIG9mIHRoZSBVbmljb3JuLCBJbmMuCi0wMDAxRjIgICAgIChiYXNlIDE2KQkJTWFyayBvZiB0aGUgVW5pY29ybiwgSW5jLgotCQkJCTEyODAgTWFzc2FjaHVzZXR0cyBBdmUuCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GMyAgIChoZXgpCQlRUFMsIEluYy4KLTAwMDFGMyAgICAgKGJhc2UgMTYpCQlRUFMsIEluYy4KLQkJCQk4MDE1IEUuIENyeXN0YWwgRHJpdmUKLQkJCQlBbmFoZWltIENBIDkyODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GNCAgIChoZXgpCQlFbnRlcmFzeXMgTmV0d29ya3MKLTAwMDFGNCAgICAgKGJhc2UgMTYpCQlFbnRlcmFzeXMgTmV0d29ya3MKLQkJCQkzNSBJbmR1c3RyaWFsIFdheQotCQkJCVJvY2hlc3RlciBOSCAwMzg2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRjUgICAoaGV4KQkJRVJJTSBTLkEuCi0wMDAxRjUgICAgIChiYXNlIDE2KQkJRVJJTSBTLkEuCi0JCQkJMTEgQXYgUmVwdWJsaXF1ZQotCQkJCTY5NjkyIFZlbmlzc2lldXggQ2VkZXgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDEtRjYgICAoaGV4KQkJQXNzb2NpYXRpb24gb2YgTXVzaWNhbCBFbGVjdHJvbmljcyBJbmR1c3RyeQotMDAwMUY2ICAgICAoYmFzZSAxNikJCUFzc29jaWF0aW9uIG9mIE11c2ljYWwgRWxlY3Ryb25pY3MgSW5kdXN0cnkKLQkJCQlJdG8gQmxkZy4gNHRoIEZsb29yIDItMTYtOSBNaXNha2ktY2hvLAotCQkJCUNoaXlvZGEta3UsIFRva3lvLCAxMDEtMDA2MQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtRjcgICAoaGV4KQkJSW1hZ2UgRGlzcGxheSBTeXN0ZW1zLCBJbmMuCi0wMDAxRjcgICAgIChiYXNlIDE2KQkJSW1hZ2UgRGlzcGxheSBTeXN0ZW1zLCBJbmMuCi0JCQkJNDY1NjAgRnJlbW9udCBCbHZkLgotCQkJCVN1aXRlICM0MDYKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GOCAgIChoZXgpCQlBZGhlcmVudCBTeXN0ZW1zLCBMdGQuCi0wMDAxRjggICAgIChiYXNlIDE2KQkJQWRoZXJlbnQgU3lzdGVtcywgTHRkLgotCQkJCUVuZGVhdm91ciBIb3VzZSwgVmlzaW9uIFBhcmsKLQkJCQlIaXN0b24gQ2FtYnJpZGdlIENCNCA0WlIKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAxLUY5ICAgKGhleCkJCVRlcmFHbG9iYWwgQ29tbXVuaWNhdGlvbnMgQ29ycC4KLTAwMDFGOSAgICAgKGJhc2UgMTYpCQlUZXJhR2xvYmFsIENvbW11bmljYXRpb25zIENvcnAuCi0JCQkJOTE3MSBUb3duZSBDZW50cmUgRHJpdmUKLQkJCQlTdWl0ZSAjNjAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GQSAgIChoZXgpCQlIT1JPU0NBUwotMDAwMUZBICAgICAoYmFzZSAxNikJCUhPUk9TQ0FTCi0JCQkJMjYsIExPVUlTIEJMQU5DCi0JCQkJNjkwMDYgTFlPTgotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMS1GQiAgIChoZXgpCQlEb1RvcCBUZWNobm9sb2d5LCBJbmMuCi0wMDAxRkIgICAgIChiYXNlIDE2KQkJRG9Ub3AgVGVjaG5vbG9neSwgSW5jLgotCQkJCTEwRiwgTm8uIDEwMCwgTWluLUNoeXVhbiBSb2FkCi0JCQkJSHNpbi1UaWVuLCBUYWlwZWkKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUZDICAgKGhleCkJCUtleWVuY2UgQ29ycG9yYXRpb24KLTAwMDFGQyAgICAgKGJhc2UgMTYpCQlLZXllbmNlIENvcnBvcmF0aW9uCi0JCQkJMS0zLTE0LCBIaWdhc2hpLU5ha2FqaW1hLAotCQkJCUhpZ2FzaGktWW9kb2dhd2Eta3UgT3Nha2EgNTMzLTg1NTUKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLUZEICAgKGhleCkJCURpZ2l0YWwgVm9pY2UgU3lzdGVtcywgSW5jLgotMDAwMUZEICAgICAoYmFzZSAxNikJCURpZ2l0YWwgVm9pY2UgU3lzdGVtcywgSW5jLgotCQkJCTIzNCBMaXR0bGV0b24gUm9hZAotCQkJCVdlc3Rmb3JkIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GRSAgIChoZXgpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotMDAwMUZFICAgICAoYmFzZSAxNikJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0JCQkJTS9TIENYMDEtMi9OMjYKLQkJCQkzMDEgUk9DS1JJTU1PTiBCTFZELiwgUwotCQkJCUNPTE9SQURPIFNQUklOR1MgQ08gODA5MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUZGICAgKGhleCkJCURhdGEgRGlyZWN0IE5ldHdvcmtzLCBJbmMuCi0wMDAxRkYgICAgIChiYXNlIDE2KQkJRGF0YSBEaXJlY3QgTmV0d29ya3MsIEluYy4KLQkJCQk5MzIwIEx1cmxpbmUgQXZlbnVlCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMDAgICAoaGV4KQkJTmV0ICYgU3lzIENvLiwgTHRkLgotMDAwMjAwICAgICAoYmFzZSAxNikJCU5ldCAmIFN5cyBDby4sIEx0ZC4KLQkJCQlLdXJvIEhpdGVjaCBJbmR1c3RyaWFsIENvbXBsZXggMzA0LAotCQkJCTQwMi0zLCBTaGluZG9yaW0tZG9uZywgS3Vyby1ndSBTZW91bCwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi0wMSAgIChoZXgpCQlJRk0gRWxlY3Ryb25pYyBnbWJoCi0wMDAyMDEgICAgIChiYXNlIDE2KQkJSUZNIEVsZWN0cm9uaWMgZ21iaAotCQkJCUJlY2hsaW5nZW4gMzQKLQkJCQlELTg4MDY5IFRldHRuYW5nCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDItMDIgICAoaGV4KQkJQW1pbm8gQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLTAwMDIwMiAgICAgKGJhc2UgMTYpCQlBbWlubyBDb21tdW5pY2F0aW9ucywgTHRkLgotCQkJCVRpbWVzIEhvdXNlCi0JCQkJRmVuIEVuZCBXaWxsaW5naGFtLCBDYW1icmlkZ2UKLQkJCQlVSyBDQjQgNUxICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItMDMgICAoaGV4KQkJV29vbnNhbmcgVGVsZWNvbSwgSW5jLgotMDAwMjAzICAgICAoYmFzZSAxNikJCVdvb25zYW5nIFRlbGVjb20sIEluYy4KLQkJCQkxMDQtOSwgTXVuamktRG9uZywgWXVzb25nLUd1Ci0JCQkJVGFlam9uLCAzMDUtMzgwLAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTA0ICAgKGhleCkJCUJvZG1hbm4gSW5kdXN0cmllcyBFbGVrdHJvbmlrIEdtYkgKLTAwMDIwNCAgICAgKGJhc2UgMTYpCQlCb2RtYW5uIEluZHVzdHJpZXMgRWxla3Ryb25payBHbWJICi0JCQkJTWVzc2Vyc2NobWl0dHJpbmcgMzMKLQkJCQlELTg2MzQzIEtvbmlnc2JydW5uCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDItMDUgICAoaGV4KQkJSGl0YWNoaSBEZW5zaGksIEx0ZC4KLTAwMDIwNSAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIERlbnNoaSwgTHRkLgotCQkJCTMyIE1peWFraS1jaG8gS29kYWlyYS1zaGkKLQkJCQlUb3lrbywKLQkJCQlKQVBBTiAxODctODUxMQotCQkJCUpBUEFOCi0KLTAwLTAyLTA2ICAgKGhleCkJCVRlbGl0YWwgUiZEIERlbm1hcmsgQS9TCi0wMDAyMDYgICAgIChiYXNlIDE2KQkJVGVsaXRhbCBSJkQgRGVubWFyayBBL1MKLQkJCQk5NTMwIFN0b3VyaW5nCi0JCQkJRGVubWFyawotCQkJCURFTk1BUksKLQotMDAtMDItMDcgICAoaGV4KQkJVmlzaW9uR2xvYmFsIE5ldHdvcmsgQ29ycC4KLTAwMDIwNyAgICAgKGJhc2UgMTYpCQlWaXNpb25HbG9iYWwgTmV0d29yayBDb3JwLgotCQkJCTgyNiBFLiBTdGFsZSBSb2FkCi0JCQkJU3VpdGUgMjAwCi0JCQkJQW1lcmljYW4gRm9yayBVVCA4NDAwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMDggICAoaGV4KQkJVW5pZnkgTmV0d29ya3MsIEluYy4KLTAwMDIwOCAgICAgKGJhc2UgMTYpCQlVbmlmeSBOZXR3b3JrcywgSW5jLgotCQkJCTMxNjAgRGUgTGEgQ3J1eiBCbHZkLgotCQkJCSMyMDEKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMDkgICAoaGV4KQkJU2hlbnpoZW4gU0VEIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDAyMDkgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU0VEIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNC9GLiwgV2VzdCBCbG9jaywgQmxvY2sgNDE0LCBaaGVuaHVhIFJkLgotCQkJCUZ1dGlhbiBTaGVuemhlbiwgNTE4MDMxIFAuUi4KLQkJCQlDSElOQQotCQkJCUNISU5BCi0KLTAwLTAyLTBBICAgKGhleCkJCUdlZnJhbiBTcGEKLTAwMDIwQSAgICAgKGJhc2UgMTYpCQlHZWZyYW4gU3BhCi0JCQkJVmlhIFNlYmluYSwgNzQKLQkJCQlQcm92YWdsaW8gRCdJc2VvIDI1MDUwIEJyZXNjaWEKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTAyLTBCICAgKGhleCkJCU5hdGl2ZSBOZXR3b3JrcywgSW5jLgotMDAwMjBCICAgICAoYmFzZSAxNikJCU5hdGl2ZSBOZXR3b3JrcywgSW5jLgotCQkJCVAuTy4gQm94IDcxNjUKLQkJCQlQZXRhaCBUaWt2YSA0OTE3MAotCQkJCUlzcmFlbAotCQkJCUlTUkFFTAotCi0wMC0wMi0wQyAgIChoZXgpCQlNZXRyby1PcHRpeAotMDAwMjBDICAgICAoYmFzZSAxNikJCU1ldHJvLU9wdGl4Ci0JCQkJMjIwMSBBdmVudWUgSwotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0wRCAgIChoZXgpCQlNaWNyb25wYy5jb20KLTAwMDIwRCAgICAgKGJhc2UgMTYpCQlNaWNyb25wYy5jb20KLQkJCQk5MDAgRS4gS2FyY2hlciBSZC4KLQkJCQlOYW1wYSBJQSA4MzY4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMEUgICAoaGV4KQkJRUNJIFRlbGVjb20sIEx0ZC4sIE5TRC1VUwotMDAwMjBFICAgICAoYmFzZSAxNikJCUVDSSBUZWxlY29tLCBMdGQuLCBOU0QtVVMKLQkJCQkxMzAwIE9tZWdhIERyLgotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTBGICAgKGhleCkJCUFBVFIKLTAwMDIwRiAgICAgKGJhc2UgMTYpCQlBQVRSCi0JCQkJMzA2IENoZW1pbiBkZXMgTWlyb2lycwotCQkJCTEzMzMwIFBlbGlzc2FubmUKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDItMTAgICAoaGV4KQkJRmVuZWNvbQotMDAwMjEwICAgICAoYmFzZSAxNikJCUZlbmVjb20KLQkJCQk3L0YgS29uLWt1ayBVbml2ZXJzaXR5IEFsdW1uaQotCQkJCUFzc29jaWF0aW9uIEJ1aWxkaW5nIE5POiAgMjI3LTMzNiBKYXlhbmcKLQkJCQlTZW91bCBTZW91bCBLb3JlYQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi0xMSAgIChoZXgpCQlOYXR1cmUgV29ybGR3aWRlIFRlY2hub2xvZ3kgQ29ycC4KLTAwMDIxMSAgICAgKGJhc2UgMTYpCQlOYXR1cmUgV29ybGR3aWRlIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQlOby4gMSwgTWluLUNodWFuIFN0cmVldAotCQkJCVR1LUNoZW5nIEluZHVzdHJpYWwgUGFyayBUYWlwZWkgSHNpZW4sCi0JCQkJVGFpd2FuIFRhaXdhbiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTEyICAgKGhleCkJCVNpZXJyYUNvbQotMDAwMjEyICAgICAoYmFzZSAxNikJCVNpZXJyYUNvbQotCQkJCTk5IFNvdXRoIFN0cmVldAotCQkJCUhvcGtpbnRvbiBNYSAwMTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMTMgICAoaGV4KQkJUy5ELkUuTC4KLTAwMDIxMyAgICAgKGJhc2UgMTYpCQlTLkQuRS5MLgotCQkJCUFlcm9wb2xlIEQyQQotCQkJCVJ1ZSBOdW5nZXJyZXIgZXQgQ29saSA0NDg2MCBTdCBBaWduYW4gZGUKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDItMTQgICAoaGV4KQkJRFRWUk8KLTAwMDIxNCAgICAgKGJhc2UgMTYpCQlEVFZSTwotCQkJCTgxMyBEYWVnb25nIEJsZGcuLAotCQkJCTgyMy0yMSBZZW9rc2FtLURvbmcsIEthbmduYW0tR3UsIFNlb3VsLAotCQkJCUtPUkVBIEtPUkVBIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItMTUgICAoaGV4KQkJQ290YXMgQ29tcHV0ZXIgVGVjaG5vbG9neSBBL0IKLTAwMDIxNSAgICAgKGJhc2UgMTYpCQlDb3RhcyBDb21wdXRlciBUZWNobm9sb2d5IEEvQgotCQkJCVBhbHVkYW4tTXVsbGVycyBWZWogODIKLQkJCQlESy04MjAwIEFhcmh1cyBOCi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtMDItMTYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMjE2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMTcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMjE3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMTggICAoaGV4KQkJQWR2YW5jZWQgU2NpZW50aWZpYyBDb3JwCi0wMDAyMTggICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgU2NpZW50aWZpYyBDb3JwCi0JCQkJMSBGbC4sIE5vLiAyNiwgSW5kdXN0cnkgRWFzdCA5dGggUm9hZAotCQkJCVNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrIEhzaW4tQ2h1Ci0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi0xOSAgIChoZXgpCQlQYXJhbG9uIFRlY2hub2xvZ2llcwotMDAwMjE5ICAgICAoYmFzZSAxNikJCVBhcmFsb24gVGVjaG5vbG9naWVzCi0JCQkJNzAwIEZpZnRoIEF2ZSwgU3VpdGUgNjEwMQotCQkJCVNlYXR0bGUgV0EgOTgxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTFBICAgKGhleCkJCVp1bWEgTmV0d29ya3MKLTAwMDIxQSAgICAgKGJhc2UgMTYpCQladW1hIE5ldHdvcmtzCi0JCQkJODQwMyBGYWxsYnJvb2sgQXZlLgotCQkJCVdlc3QgSGlsbHMgQ0EgOTEzMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTFCICAgKGhleCkJCUtvbGxtb3JnZW4tU2Vydm90cm9uaXgKLTAwMDIxQiAgICAgKGJhc2UgMTYpCQlLb2xsbW9yZ2VuLVNlcnZvdHJvbml4Ci0JCQkJUE9CIDM5MTksIFBldGFjaCBUaWt5YQotCQkJCTQ5MTMwIElTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wMi0xQyAgIChoZXgpCQlOZXR3b3JrIEVsZW1lbnRzLCBJbmMuCi0wMDAyMUMgICAgIChiYXNlIDE2KQkJTmV0d29yayBFbGVtZW50cywgSW5jLgotCQkJCTk3ODIgU1cgTmltYnVzIEF2ZW51ZQotCQkJCUJlYXZlcnRvbiBPUiA5NzAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMUQgICAoaGV4KQkJRGF0YSBHZW5lcmFsIENvbW11bmljYXRpb24gTHRkLgotMDAwMjFEICAgICAoYmFzZSAxNikJCURhdGEgR2VuZXJhbCBDb21tdW5pY2F0aW9uIEx0ZC4KLQkJCQlSbS4gMThDLCBCbGRnLiBDLCBDRUlFQyBUb3dlcgotCQkJCU5vLiAyMDcwLCBSZC4gU2hlbk5hblpob25nIFNoZW5aaGVuIENpdHkKLQkJCQlDSElOQQotCQkJCUNISU5BCi0KLTAwLTAyLTFFICAgKGhleCkJCVNJTVRFTCBTLlIuTC4KLTAwMDIxRSAgICAgKGJhc2UgMTYpCQlTSU1URUwgUy5SLkwuCi0JCQkJVmlhIEJvbmlmYWNpbyBMdXBpLCAyNQotCQkJCTUwMTI5IEZpcmVuemUKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTAyLTFGICAgKGhleCkJCUFjdWxhYiBQTEMKLTAwMDIxRiAgICAgKGJhc2UgMTYpCQlBY3VsYWIgUExDCi0JCQkJTGFrZXNpZGUsIEJyYW1sZXkgUm9hZAotCQkJCU1vdW50IEZhcm0gTWlsdG9uIEtleW5lcyBCdWxrcyBNSzEgMVBUCi0JCQkJVUsKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi0yMCAgIChoZXgpCQlDQU5PTiBGSU5FVEVDSCBJTkMuCi0wMDAyMjAgICAgIChiYXNlIDE2KQkJQ0FOT04gRklORVRFQ0ggSU5DLgotCQkJCTcxNywgWWFndWNoaSwgTWlzYXRvLXNoaSwKLQkJCQlTYWl0YW1hICAzNDEtODUyNwotCQkJCUpBUEFOCi0KLTAwLTAyLTIxICAgKGhleCkJCURTUCBBcHBsaWNhdGlvbiwgTHRkLgotMDAwMjIxICAgICAoYmFzZSAxNikJCURTUCBBcHBsaWNhdGlvbiwgTHRkLgotCQkJCTEyRi0xMiwgTm8uIDc5LCBTZWMuIDEgSHNpbiBUYWkgV3UgUmQuCi0JCQkJSFNJQ0hJLCBUYWlwZWkgQ291bnR5Ci0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi0yMiAgIChoZXgpCQlDaHJvbWlzeXMsIEluYy4KLTAwMDIyMiAgICAgKGJhc2UgMTYpCQlDaHJvbWlzeXMsIEluYy4KLQkJCQkxMDEyIFN0ZXdhcnQgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTIzICAgKGhleCkJCUNsaWNrVFYKLTAwMDIyMyAgICAgKGJhc2UgMTYpCQlDbGlja1RWCi0JCQkJS2Vtb25nIEJsZGcuLCA0dGggRmwuLAotCQkJCTc3MiBZb2tzYW0tRG9uZyBLYW5nbmFtLUt1Ci0JCQkJU2VvdWwgS29yZWEgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi0yNCAgIChoZXgpCQlDLUNPUgotMDAwMjI0ICAgICAoYmFzZSAxNikJCUMtQ09SCi0JCQkJMTUgU3RlcmxpbmcgRHJpdmUKLQkJCQlXYWxsaW5nZm9yZCBDVCAwNjQ5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMjUgICAoaGV4KQkJT25lIFN0b3AgU3lzdGVtcwotMDAwMjI1ICAgICAoYmFzZSAxNikJCU9uZSBTdG9wIFN5c3RlbXMKLQkJCQkyMjM1IEVudGVycHJpc2UgU3RyZWV0Ci0JCQkJU3VpdGUgMTEwCi0JCQkJRXNjb25kaWRvIENBIDkyMDI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0yNiAgIChoZXgpCQlYRVN5c3RlbXMsIEluYy4KLTAwMDIyNiAgICAgKGJhc2UgMTYpCQlYRVN5c3RlbXMsIEluYy4KLQkJCQkzMTcgTWFpbiBTdHJlZXQKLQkJCQlFYXN0IFJvY2hlc3RlciBOWSAxNDQ0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMjcgICAoaGV4KQkJRVNEIEVsZWN0cm9uaWMgU3lzdGVtIERlc2lnbiBHbWJICi0wMDAyMjcgICAgIChiYXNlIDE2KQkJRVNEIEVsZWN0cm9uaWMgU3lzdGVtIERlc2lnbiBHbWJICi0JCQkJVmFocmVud2FsZGVyIFN0ci4gMjA3Ci0JCQkJMzAgMTY1IEhhbm5vdmVyIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAyLTI4ICAgKGhleCkJCU5lY3NvbSwgTHRkLgotMDAwMjI4ICAgICAoYmFzZSAxNikJCU5lY3NvbSwgTHRkLgotCQkJCU5lY3NvbSBMdGQuIGMvbyBLb2lyc3RvCi0JCQkJU2F1bmFtYWVudGllIDQgQSAxIEZJTi0wMjc3MCBFU1AwMAotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTAyLTI5ICAgKGhleCkJCUFkdGVjIENvcnBvcmF0aW9uCi0wMDAyMjkgICAgIChiYXNlIDE2KQkJQWR0ZWMgQ29ycG9yYXRpb24KLQkJCQkzRiBNZWd1cm9oaWdhc2hpeWFtYSBCbGcKLQkJCQkxIDQgNCBIaWdhc2hpeWFtYSwgTWVndXJvIEt1IFRva3lvIDE1MyAwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMi0yQSAgIChoZXgpCQlBc291bmQgRWxlY3Ryb25pYwotMDAwMjJBICAgICAoYmFzZSAxNikJCUFzb3VuZCBFbGVjdHJvbmljCi0JCQkJWGlhbnhpIEluZHVzdHJpZXMgWm9uZSBDaGFuZ2FuIFRvd24KLQkJCQlEb25nIEd1b24gQ2l0eSwgR3VvbmcgRG9uZyBQcm92aWRlbmNlCi0JCQkJQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0wMi0yQiAgIChoZXgpCQlTQVhBLCBJbmMuCi0wMDAyMkIgICAgIChiYXNlIDE2KQkJU0FYQSwgSW5jLgotCQkJCU5CRiBQbGF0aW51bSBUb3dlciAxLTE3LTMgU2hpcm9rYW5lCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwOC04MDUwCi0JCQkJSkFQQU4KLQotMDAtMDItMkMgICAoaGV4KQkJQUJCIEJvbWVtLCBJbmMuCi0wMDAyMkMgICAgIChiYXNlIDE2KQkJQUJCIEJvbWVtLCBJbmMuCi0JCQkJNTg1LCBib3VsLiBDaGFyZXN0IEVzdAotCQkJCVN1aXRlIDMwMCBRdWViZWMgQ2l0eSwgUFEKLQkJCQlDYW5hZGEgRzFLIDlINAotCQkJCUNBTkFEQQotCi0wMC0wMi0yRCAgIChoZXgpCQlBZ2VyZSBTeXN0ZW1zCi0wMDAyMkQgICAgIChiYXNlIDE2KQkJQWdlcmUgU3lzdGVtcwotCQkJCVAuTy4gQm94IDc1NQotCQkJCTM0MzAgQXQgTmlldXdlZ2VpbgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTAyLTJFICAgKGhleCkJCVRFQUMgQ29ycC4gUiYgRAotMDAwMjJFICAgICAoYmFzZSAxNikJCVRFQUMgQ29ycC4gUiYgRAotCQkJCTg1NyBLb3lhdGEsIElydW1hCi0JCQkJU2FpdGFtYQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDItMkYgICAoaGV4KQkJUC1DdWJlLCBMdGQuCi0wMDAyMkYgICAgIChiYXNlIDE2KQkJUC1DdWJlLCBMdGQuCi0JCQkJUC5PLiBCb3ggMTIzMzEKLQkJCQlIZXJ6bGlhIDQ2NzY2Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAyLTMwICAgKGhleCkJCUludGVyc29mdCBFbGVjdHJvbmljcwotMDAwMjMwICAgICAoYmFzZSAxNikJCUludGVyc29mdCBFbGVjdHJvbmljcwotCQkJCUxhbW1lcmRyaWVzIDI3Ci0JCQkJQjIyNTAgT2xlbgotCQkJCUJFTEdJVU0KLQkJCQlCRUxHSVVNCi0KLTAwLTAyLTMxICAgKGhleCkJCUluZ2Vyc29sbC1SYW5kCi0wMDAyMzEgICAgIChiYXNlIDE2KQkJSW5nZXJzb2xsLVJhbmQKLQkJCQkxNDY3IFJvdXRlIDMxIFNvdXRoCi0JCQkJUC5PLiBCb3ggOTcwCi0JCQkJQW5uYW5kYWxlIE5KIDA4ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zMiAgIChoZXgpCQlBdmlzaW9uLCBJbmMuCi0wMDAyMzIgICAgIChiYXNlIDE2KQkJQXZpc2lvbiwgSW5jLgotCQkJCU5vLiAyMCwgQ3JlYXRpb24gUmQuIDEsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSBUYWl3YW4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItMzMgICAoaGV4KQkJTWFudHJhIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAyMzMgICAgIChiYXNlIDE2KQkJTWFudHJhIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTI4NTAgTWlkZGxlYnJvb2sgUm9hZAotCQkJCVN1aXRlIDEKLQkJCQlHZXJtYW50b3duIE1EIDIwODc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zNCAgIChoZXgpCQlJbXBlcmlhbCBUZWNobm9sb2d5LCBJbmMuCi0wMDAyMzQgICAgIChiYXNlIDE2KQkJSW1wZXJpYWwgVGVjaG5vbG9neSwgSW5jLgotCQkJCTIzMDUgVXRhaCBBdmVudWUKLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zNSAgIChoZXgpCQlQYXJhZ29uIE5ldHdvcmtzIEludGVybmF0aW9uYWwKLTAwMDIzNSAgICAgKGJhc2UgMTYpCQlQYXJhZ29uIE5ldHdvcmtzIEludGVybmF0aW9uYWwKLQkJCQk2MSBDb21tZXJjZSBEcml2ZQotCQkJCUJyb29rZmllbGQgQ1QgMDY4MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTM2ICAgKGhleCkJCUlOSVQgR21iSAotMDAwMjM2ICAgICAoYmFzZSAxNikJCUlOSVQgR21iSAotCQkJCUthZXBwZWxlc3RyLiA2Ci0JCQkJRC03NjEzMSBLYXJsc3J1aGUKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMi0zNyAgIChoZXgpCQlDb3NtbyBSZXNlYXJjaCBDb3JwLgotMDAwMjM3ICAgICAoYmFzZSAxNikJCUNvc21vIFJlc2VhcmNoIENvcnAuCi0JCQkJQ29zbW8gQmxkZywgMy0xNDgtNQotCQkJCU1peWFoYXJhY2hvLCBPbWl5YSBTYWl0YW1hIDMzMC0wMDM4Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMi0zOCAgIChoZXgpCQlTZXJvbWUgVGVjaG5vbG9neSwgSW5jLgotMDAwMjM4ICAgICAoYmFzZSAxNikJCVNlcm9tZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNTU1LTE0LCBCYWVrYW5nIEIvRCA3RgotCQkJCVNoaW5zYS1kb25nLCBLYW5nbmFtLWd1Ci0JCQkJU2VvdWwgS29yZWEgMTM1LTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi0zOSAgIChoZXgpCQlWaXNpY29tCi0wMDAyMzkgICAgIChiYXNlIDE2KQkJVmlzaWNvbQotCQkJCTEwMDUyIE1lc2EgUmlkZ2UgQ3QuCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zQSAgIChoZXgpCQlaU0sgU3RpY2ttYXNjaGluZW4gR21iSAotMDAwMjNBICAgICAoYmFzZSAxNikJCVpTSyBTdGlja21hc2NoaW5lbiBHbWJICi0JCQkJTWFnZGVidXJnZXIgU3RyYXNzZSAzOC00MAotCQkJCTQ3ODAwIEtyZWZlbGQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMi0zQiAgIChoZXgpCQlSZWRiYWNrIE5ldHdvcmtzCi0wMDAyM0IgICAgIChiYXNlIDE2KQkJUmVkYmFjayBOZXR3b3JrcwotCQkJCTExOTUgQm9ycmVnYXMgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zQyAgIChoZXgpCQlDcmVhdGl2ZSBUZWNobm9sb2d5LCBMdGQuCi0wMDAyM0MgICAgIChiYXNlIDE2KQkJQ3JlYXRpdmUgVGVjaG5vbG9neSwgTHRkLgotCQkJCTMxIEludGVybmF0aW9uYWwgQnVzaW5lc3MgUGFyawotCQkJCVNpbmdhcG9yZSA2MDk5MjEKLQkJCQlSZXB1YmxpYyBvZiBTaW5nYXBvcmUKLQkJCQlTSU5HQVBPUkUKLQotMDAtMDItM0QgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMjNEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItM0UgICAoaGV4KQkJU2VsdGEgVGVsZW1hdGljYSBTLnAuYQotMDAwMjNFICAgICAoYmFzZSAxNikJCVNlbHRhIFRlbGVtYXRpY2EgUy5wLmEKLQkJCQlWaWEgTmF6aW9uYWxlIGttIDQwNC41Ci0JCQkJNjQwMTkgVG9ydG9yZXRvIExpZG8gVEUKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTAyLTNGICAgKGhleCkJCUNvbXBhbCBFbGVjdHJvbmljcywgSW5jLgotMDAwMjNGICAgICAoYmFzZSAxNikJCUNvbXBhbCBFbGVjdHJvbmljcywgSW5jLgotCQkJCTU4MSwgSnVpa3VhbmcgUmQuLAotCQkJCU5laWh1LCBUYWlwZWksICgxMTQpCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTQwICAgKGhleCkJCVNlZWRlayBDby4sIEx0ZC4KLTAwMDI0MCAgICAgKGJhc2UgMTYpCQlTZWVkZWsgQ28uLCBMdGQuCi0JCQkJIzcwOSwgMTYzOC0zMiwgU2FtbW8KLQkJCQlTaGlucmltYm9uLURvbmcsIEt3YW5hay1HdSwgU2VvdWwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi00MSAgIChoZXgpCQlBbWVyLmNvbQotMDAwMjQxICAgICAoYmFzZSAxNikJCUFtZXIuY29tCi0JCQkJNzI1OSBCcnlhbiBEYWlyeSBSb2FkCi0JCQkJTGFyZ28gRkwgMzM3NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTQyICAgKGhleCkJCVZpZGVvZnJhbWUgU3lzdGVtcwotMDAwMjQyICAgICAoYmFzZSAxNikJCVZpZGVvZnJhbWUgU3lzdGVtcwotCQkJCTEwMSBQcm92aWRlbmNlIE1pbmUgUm9hZAotCQkJCVN1aXRlIDEwMwotCQkJCU5ldmFkYSBDaXR5IENBIDk1OTU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi00MyAgIChoZXgpCQlSYXlzaXMgQ28uLCBMdGQuCi0wMDAyNDMgICAgIChiYXNlIDE2KQkJUmF5c2lzIENvLiwgTHRkLgotCQkJCTk5Ny0xMCwgRGFlY2hpLURvbmcsIEthbmduYW0tS3UsCi0JCQkJU2VvdWwgMTM1LTI4MCwgU291dGggS29yZWEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItNDQgICAoaGV4KQkJU1VSRUNPTSBUZWNobm9sb2d5IENvLgotMDAwMjQ0ICAgICAoYmFzZSAxNikJCVNVUkVDT00gVGVjaG5vbG9neSBDby4KLQkJCQk2RiwgTm8uIDEyNSwgU2VjLiAyLCBEYXR1bmcgUmQuCi0JCQkJU2hpanIsIFRhaXBlaSBDb3VudHksIDIyMQotCQkJCVRhaXdhbiBUYWl3YW4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi00NSAgIChoZXgpCQlMYW1wdXMgQ28sIEx0ZC4KLTAwMDI0NSAgICAgKGJhc2UgMTYpCQlMYW1wdXMgQ28sIEx0ZC4KLQkJCQk2dGggQmxkZy4sIFNhbWdvbmcsCi0JCQkJNTgtNyBSYW5wbyA0ZG9uZyBTY29jaC1nbywgU2VvdWwsCi0JCQkJS29yZWEgS29yZWEgMTM3LTA0NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi00NiAgIChoZXgpCQlBbGwtV2luIFRlY2ggQ28uLCBMdGQuCi0wMDAyNDYgICAgIChiYXNlIDE2KQkJQWxsLVdpbiBUZWNoIENvLiwgTHRkLgotCQkJCTExRiwgTm8uIDExMS03LCBIc2luZyBEZSBSZC4sCi0JCQkJU2FuIENodW5nIENpdHksCi0JCQkJVGFpcGVpIEhzaWVuIFRhaXdhbiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi00NyAgIChoZXgpCQlHcmVhdCBEcmFnb24gSW5mb3JtYXRpb24gVGVjaG5vbG9neSAoR3JvdXApIENvLiwgTHRkLgotMDAwMjQ3ICAgICAoYmFzZSAxNikJCUdyZWF0IERyYWdvbiBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IChHcm91cCkgQ28uLCBMdGQuCi0JCQkJMTY5IEJlaXl1YW4gUmQuLAotCQkJCUNoYW95YW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAxMDAxMDEsIENISU5BCi0JCQkJQ0hJTkEKLQotMDAtMDItNDggICAoaGV4KQkJUGlseiBHbWJIICYgQ28uCi0wMDAyNDggICAgIChiYXNlIDE2KQkJUGlseiBHbWJIICYgQ28uCi0JCQkJRmVsaXgtV2Fua2VsLVN0cmFzc2UgMgotCQkJCUQtNzM3NjAgT3N0ZmlsZGVybgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAyLTQ5ICAgKGhleCkJCUF2aXYgSW5mb2NvbSBDbywgTHRkLgotMDAwMjQ5ICAgICAoYmFzZSAxNikJCUF2aXYgSW5mb2NvbSBDbywgTHRkLgotCQkJCTk2Mi01LCBLd2FueWFuZy1Eb25nLCBEb25nYW4tR3UsCi0JCQkJQW55YW5nLUNpdHksIEt5dW5na2ktRG8sIDQzMS0wNjAKLQkJCQlLb3JlYSAoUk9LKQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi00QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyNEEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNEIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMjRCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTRDICAgKGhleCkJCVNpQnl0ZSwgSW5jLgotMDAwMjRDICAgICAoYmFzZSAxNikJCVNpQnl0ZSwgSW5jLgotCQkJCTI4MDUgQm93ZXJzIEF2ZW51ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxLTA5MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTREICAgKGhleCkJCU1hbm5lc21hbiBEZW1hdGljIENvbGJ5IFB0eS4gTHRkLgotMDAwMjREICAgICAoYmFzZSAxNikJCU1hbm5lc21hbiBEZW1hdGljIENvbGJ5IFB0eS4gTHRkLgotCQkJCTI0IE5hcmFiYW5nIFdheQotCQkJCUJlbHJvc2UsIE5TVyAyMDg1Ci0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTAyLTRFICAgKGhleCkJCURhdGFjYXJkIEdyb3VwCi0wMDAyNEUgICAgIChiYXNlIDE2KQkJRGF0YWNhcmQgR3JvdXAKLQkJCQkxMTExMSBCcmVuIFJvYWQgV2VzdAotCQkJCU1TIDIxMAotCQkJCU1pbm5ldG9ua2EgTU4gNTUzNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTRGICAgKGhleCkJCUlQTSBEYXRhY29tIFMuUi5MLgotMDAwMjRGICAgICAoYmFzZSAxNikJCUlQTSBEYXRhY29tIFMuUi5MLgotCQkJCVZpYSBSb21hLCAyMzEKLQkJCQk4MDAyNyBGcmF0dGFtYWdnaW9yZQotCQkJCU5hcGxlcyBJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTAyLTUwICAgKGhleCkJCUdleXNlciBOZXR3b3JrcywgSW5jLgotMDAwMjUwICAgICAoYmFzZSAxNikJCUdleXNlciBOZXR3b3JrcywgSW5jLgotCQkJCTUzNSBEZWwgUmV5IEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTEgICAoaGV4KQkJU29tYSBOZXR3b3JrcywgSW5jLgotMDAwMjUxICAgICAoYmFzZSAxNikJCVNvbWEgTmV0d29ya3MsIEluYy4KLQkJCQk2NTAgVG93bnNlbmQgU3QuCi0JCQkJU3VpdGUgMzA1Ci0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTIgICAoaGV4KQkJQ2FycmllciBDb3Jwb3JhdGlvbgotMDAwMjUyICAgICAoYmFzZSAxNikJCUNhcnJpZXIgQ29ycG9yYXRpb24KLQkJCQlPbmUgQ2FycmllciBQbGFjZQotCQkJCUZhcm1pbmd0b24gQ1QgMDYwMzQtNDAxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTMgICAoaGV4KQkJVGVsZXZpZGVvLCBJbmMuCi0wMDAyNTMgICAgIChiYXNlIDE2KQkJVGVsZXZpZGVvLCBJbmMuCi0JCQkJMjM0NSBIYXJyaXMgV2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTU0ICAgKGhleCkJCVdvcmxkR2F0ZQotMDAwMjU0ICAgICAoYmFzZSAxNikJCVdvcmxkR2F0ZQotCQkJCTMxOTAgVHJlbW9udCBBdmVudWUKLQkJCQlUcmV2b3NlIFBBIDE5MDUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01NSAgIChoZXgpCQlJQk0gQ29ycAotMDAwMjU1ICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAuTy4gQm94IDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01NiAgIChoZXgpCQlBbHBoYSBQcm9jZXNzb3IsIEluYy4KLTAwMDI1NiAgICAgKGJhc2UgMTYpCQlBbHBoYSBQcm9jZXNzb3IsIEluYy4KLQkJCQkxMzAgQyBCYWtlciBBdmUuIEV4dC4KLQkJCQlDb25jb3JkIE1BIDAxNzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01NyAgIChoZXgpCQlNaWNyb2NvbSBDb3JwLgotMDAwMjU3ICAgICAoYmFzZSAxNikJCU1pY3JvY29tIENvcnAuCi0JCQkJODMzM0EgR3JlZW4gTWVhZG93cyBEci4gTi4KLQkJCQlXZXN0ZXJ2aWxsZSBPSCA0MzA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTggICAoaGV4KQkJRmx5aW5nIFBhY2tldHMgQ29tbXVuaWNhdGlvbnMKLTAwMDI1OCAgICAgKGJhc2UgMTYpCQlGbHlpbmcgUGFja2V0cyBDb21tdW5pY2F0aW9ucwotCQkJCTM4OCBNYXJrZXQgU3RyZWV0Ci0JCQkJU3VpdGUgMzgwCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTkgICAoaGV4KQkJVHNhbm4gS3VlbiBDaGluYSAoU2hhbmdoYWkpRW50ZXJwcmlzZSBDby4sIEx0ZC4gSVQgR3JvdXAKLTAwMDI1OSAgICAgKGJhc2UgMTYpCQlUc2FubiBLdWVuIENoaW5hIChTaGFuZ2hhaSlFbnRlcnByaXNlIENvLiwgTHRkLiBJVCBHcm91cAotCQkJCThGLCAjOTksIEh1YWloYWkgUmQsIEVhc3QsCi0JCQkJU2hhbmdoYWksCi0JCQkJQ0hJTkEgMjAwMDIxCi0JCQkJQ0hJTkEKLQotMDAtMDItNUEgICAoaGV4KQkJQ2F0ZW5hIE5ldHdvcmtzCi0wMDAyNUEgICAgIChiYXNlIDE2KQkJQ2F0ZW5hIE5ldHdvcmtzCi0JCQkJMzA3IExlZ2dldCBEcml2ZQotCQkJCUthbmF0YSBPbnRhcmlvCi0JCQkJQ2FuYWRhIEsySyAzQzgKLQkJCQlDQU5BREEKLQotMDAtMDItNUIgICAoaGV4KQkJQ2FtYnJpZGdlIFNpbGljb24gUmFkaW8KLTAwMDI1QiAgICAgKGJhc2UgMTYpCQlDYW1icmlkZ2UgU2lsaWNvbiBSYWRpbwotCQkJCVVuaXQgNDAwLCBTY2llbmNlIFBhcmssCi0JCQkJTWlsdG9uIFJvYWQsIENhbWJyaWRnZSxDQjQgT1hMCi0JCQkJVW5pdGVkIEtpbmdkb20KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi01QyAgIChoZXgpCQlTQ0kgU3lzdGVtcyAoS3Vuc2hhbikgQ28uLCBMdGQuCi0wMDAyNUMgICAgIChiYXNlIDE2KQkJU0NJIFN5c3RlbXMgKEt1bnNoYW4pIENvLiwgTHRkLgotCQkJCTMxMiBRSU5HIFlBTkcgUk9BRAotCQkJCUtVTlNIQU4sIEpJQU5HU1UgUFJPVklDQwotCQkJCUNISU5BIENISU5BIDIxNTMwMAotCQkJCUNISU5BCi0KLTAwLTAyLTVEICAgKGhleCkJCUNhbGl4IE5ldHdvcmtzCi0wMDAyNUQgICAgIChiYXNlIDE2KQkJQ2FsaXggTmV0d29ya3MKLQkJCQkxMDM1IE5vcnRoIE1jRG93ZWxsIEJsdmQuCi0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTVFICAgKGhleCkJCUhpZ2ggVGVjaG5vbG9neSBMdGQKLTAwMDI1RSAgICAgKGJhc2UgMTYpCQlIaWdoIFRlY2hub2xvZ3kgTHRkCi0JCQkJQ2hvbmdxaW5nIEppbmdob25nCi0JCQkJQTItMTAtMyBDYWxpZm9ybmlhIEdhcmRlbiBZdWJlaSBEaXN0cmljdAotCQkJCVBlb3BsZSdzIFJlcHVibGljIG9mIENoaW5hCi0JCQkJQ0hJTkEKLQotMDAtMDItNUYgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDAyNUYgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJOTMwMCB0cmFucy1DQU5BREEgSGlnaHdheQotCQkJCVN0LiBMYXVyZW5ldCwgUXVlYmVjCi0JCQkJSDRTIDFLUyBDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDItNjAgICAoaGV4KQkJQWNjb3JkaW9uIE5ldHdvcmtzLCBJbmMuCi0wMDAyNjAgICAgIChiYXNlIDE2KQkJQWNjb3JkaW9uIE5ldHdvcmtzLCBJbmMuCi0JCQkJMzk4OTkgQmFsZW50aW5lIERyaXZlLCAjMzM1Ci0JCQkJTmV3YXJrIENBIDk0NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi02MSAgIChoZXgpCQlUaWxnaW4gQUIKLTAwMDI2MSAgICAgKGJhc2UgMTYpCQlUaWxnaW4gQUIKLQkJCQlGaW5sYW5kc2dhdGFuIDQwCi0JCQkJU0UtMTY0IDc0IEtpc3RhCi0JCQkJU1dFREVOCi0KLTAwLTAyLTYyICAgKGhleCkJCVNveW8gR3JvdXAgU295byBDb20gVGVjaCBDby4sIEx0ZAotMDAwMjYyICAgICAoYmFzZSAxNikJCVNveW8gR3JvdXAgU295byBDb20gVGVjaCBDby4sIEx0ZAotCQkJCTVILiBOby4gMjEgV3UtZ29uZyA1IFJkLAotCQkJCUhzaW5nIENodWFuZywKLQkJCQlUYWlwZWkgSHNpZW4gVGFpd2FuIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItNjMgICAoaGV4KQkJVVBTIE1hbnVmYWN0dXJpbmcgU1JMCi0wMDAyNjMgICAgIChiYXNlIDE2KQkJVVBTIE1hbnVmYWN0dXJpbmcgU1JMCi0JCQkJVmlhIEdpb3JkYW5vLCA1NAotCQkJCTM3MDUwIFZhbGxlc2UgRGkgT3BwZWFubwotCQkJCVZlcm9uYSBJdGFseQotCQkJCUlUQUxZCi0KLTAwLTAyLTY0ICAgKGhleCkJCUF1ZGlvUmFtcC5jb20KLTAwMDI2NCAgICAgKGJhc2UgMTYpCQlBdWRpb1JhbXAuY29tCi0JCQkJMTU5NDEgUmVkIEhpbGwgU3VpdGUgMjA1Ci0JCQkJVHVzdGluIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi02NSAgIChoZXgpCQlWaXJkaXRlY2ggQ28uIEx0ZC4KLTAwMDI2NSAgICAgKGJhc2UgMTYpCQlWaXJkaXRlY2ggQ28uIEx0ZC4KLQkJCQlIeXVuZGFpIFRvcGljcyBCbGdkLiwgMTF0aCBGbAotCQkJCTQ0LTMgUGFuZ2ktZG9uZywgU29uZ3BhLUd1Ci0JCQkJU2VvdWwgU2VvdWwgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItNjYgICAoaGV4KQkJVGhlcm1hbG9naWMgQ29ycG9yYXRpb24KLTAwMDI2NiAgICAgKGJhc2UgMTYpCQlUaGVybWFsb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTIyIEthbmUgSW5kdXN0cmlhbCBEcml2ZQotCQkJCUh1ZHNvbiBNQSAwMTc0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNjcgICAoaGV4KQkJTk9ERSBSVU5ORVIsIElOQy4KLTAwMDI2NyAgICAgKGJhc2UgMTYpCQlOT0RFIFJVTk5FUiwgSU5DLgotCQkJCTIyMDIgTi4gRk9SQkVTIEJMVkQuCi0JCQkJVFVDU09OIEFaIDg1NzQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi02OCAgIChoZXgpCQlIYXJyaXMgR292ZXJubWVudCBDb21tdW5pY2F0aW9ucwotMDAwMjY4ICAgICAoYmFzZSAxNikJCUhhcnJpcyBHb3Zlcm5tZW50IENvbW11bmljYXRpb25zCi0JCQkJU3lzdGVtcyBEaXZpc2lvbgotCQkJCVAuTy4gQm94IDM3IE1TOiAxLTU4NTYKLQkJCQlNZWxib3VybmUgRkwgMzI5MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTY5ICAgKGhleCkJCU5hZGF0ZWwgQ28uLCBMdGQKLTAwMDI2OSAgICAgKGJhc2UgMTYpCQlOYWRhdGVsIENvLiwgTHRkCi0JCQkJOUYgQ29XZWxsIEJsZGcsIDY2LTEgQmFucG8tRG9uZwotCQkJCVNlb2Noby1HdSwgU2VvdWwsCi0JCQkJS09SRUEgMTM3LTA0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi02QSAgIChoZXgpCQlDb2Nlc3MgVGVsZWNvbSBDby4sIEx0ZC4KLTAwMDI2QSAgICAgKGJhc2UgMTYpCQlDb2Nlc3MgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQlSZXNlYXJjaCAmIERldmVsb3BtZW50IERlcHQuCi0JCQkJNDMsIFlvaWRvLURvbmcsIFlvdW5nZGV1bmdwby1LdQotCQkJCVNlb3VsIFNlb3VsIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTZCICAgKGhleCkJCUJDTSBDb21wdXRlcnMgQ28uLCBMdGQuCi0wMDAyNkIgICAgIChiYXNlIDE2KQkJQkNNIENvbXB1dGVycyBDby4sIEx0ZC4KLQkJCQk0Ri0xLCBOby4gNjYsIFNlYyAyLAotCQkJCU5hbiBLYW4gUmQuLCBMdS1DaHUgSHNpbmcsIFRhbyBZdWFuCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTZDICAgKGhleCkJCVBoaWxpcHMgQ0ZUCi0wMDAyNkMgICAgIChiYXNlIDE2KQkJUGhpbGlwcyBDRlQKLQkJCQlCdWlsZGluZyBTQU4gNgotCQkJCVAuTy4gQm94IDIxOCA1NjAwIE1EIEVpbmRob3ZlbgotCQkJCVRoZSBOZXRoZXJsYW5kcwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTAyLTZEICAgKGhleCkJCUFkZXB0IFRlbGVjb20KLTAwMDI2RCAgICAgKGJhc2UgMTYpCQlBZGVwdCBUZWxlY29tCi0JCQkJQXZlbnVlIGRlIGwnRXVyb3BlCi0JCQkJQlAgMTYxIEYtNzEyMDQgTGUgQ3JldXNvdCBDZWRleAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMi02RSAgIChoZXgpCQlOZUdlTiBBY2Nlc3MsIEluYy4KLTAwMDI2RSAgICAgKGJhc2UgMTYpCQlOZUdlTiBBY2Nlc3MsIEluYy4KLQkJCQkzMyBCb3N0b24gUG9zdCBSZC4gV2VzdAotCQkJCVN1aXRlIDM2MAotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi02RiAgIChoZXgpCQlTZW5hbyBJbnRlcm5hdGlvbmFsIENvLiwgTHRkLgotMDAwMjZGICAgICAoYmFzZSAxNikJCVNlbmFvIEludGVybmF0aW9uYWwgQ28uLCBMdGQuCi0JCQkJMkYsIE5vLiA1MzEsIENodW5nLUNoZW5nIFJkLiwKLQkJCQlIc2luLVRpZW4gQ2l0eSwgVGFpcGVpIENvdW50eSwKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTcwICAgKGhleCkJCUNyZXdhdmUgQ28uLCBMdGQuCi0wMDAyNzAgICAgIChiYXNlIDE2KQkJQ3Jld2F2ZSBDby4sIEx0ZC4KLQkJCQlGNywgUHVyZXVuIEJsZGcuLCAyOC0xCi0JCQkJSmFtd29uLWRvbmcsIFNlb2Noby1ndQotCQkJCVNlb3VsIEtPUkVBIDEzNy0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItNzEgICAoaGV4KQkJWmhvbmUgVGVjaG5vbG9naWVzCi0wMDAyNzEgICAgIChiYXNlIDE2KQkJWmhvbmUgVGVjaG5vbG9naWVzCi0JCQkJNzAwMSBPYWtwb3J0IFN0cmVldAotCQkJCU9ha2xhbmQgQ0EgOTQ2MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTcyICAgKGhleCkJCUNDJkMgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDAyNzIgICAgIChiYXNlIDE2KQkJQ0MmQyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4RiwgMTUwLCBDaGllbiBJIFJkLiwgQ2h1bmcgSG8gQ2l0eSwKLQkJCQlUYWlwZWkgQ291bnR5IDIzNSBUYWl3YW4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi03MyAgIChoZXgpCQlDb3Jpb2xpcyBOZXR3b3JrcwotMDAwMjczICAgICAoYmFzZSAxNikJCUNvcmlvbGlzIE5ldHdvcmtzCi0JCQkJMzMwIENvZG1hbmhpbGwgUm9hZAotCQkJCUJveGJvcm91Z2ggTUEgMDE3MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTc0ICAgKGhleCkJCVRvbW15IFRlY2hub2xvZ2llcyBDb3JwLgotMDAwMjc0ICAgICAoYmFzZSAxNikJCVRvbW15IFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCSM0MDcgSGVlaG9vbiBCbGQKLQkJCQkxMTAtMSBLdXJvLWRvbmcsIEt1cm8ta3UKLQkJCQlTZW91bCBTZW91bCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi03NSAgIChoZXgpCQlTTUFSVCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDI3NSAgICAgKGJhc2UgMTYpCQlTTUFSVCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkzNjM2IFJlc2VhcmNoICBSb2FkIE5XCi0JCQkJQ2FsZ2FyeSwgQWxiZXJ0YSAgVDJMMVkxCi0JCQkJQ0FOQURBCi0KLTAwLTAyLTc2ICAgKGhleCkJCVByaW1heCBFbGVjdHJvbmljcyBMdGQuCi0wMDAyNzYgICAgIChiYXNlIDE2KQkJUHJpbWF4IEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQlOby4gNjY5LCBSdWV5IEt1YW5nIFJvYWQsIE5laWh1Ci0JCQkJVGFpcGVpIFRhaXdhbiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi03NyAgIChoZXgpCQlDYXNoIFN5c3RlbWVzIEluZHVzdHJpZQotMDAwMjc3ICAgICAoYmFzZSAxNikJCUNhc2ggU3lzdGVtZXMgSW5kdXN0cmllCi0JCQkJVGVjaG5vcGFyYyBFcHNpbG9uCi0JCQkJUmQgMTAwIDgzNzAwIFN0IFJhcGhhZWwKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDItNzggICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvLU1lY2hhbmljcyBDby4sIEx0ZC4KLTAwMDI3OCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm8tTWVjaGFuaWNzIENvLiwgTHRkLgotCQkJCTMxNCwgTWFlLXRhbi1kb25nLAotCQkJCVBhaS1kYWwtZ3UsIEt5b3VuZy1naS1kbywKLQkJCQlTdXdvbiBTdXdvbiBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi03OSAgIChoZXgpCQlDb250cm9sIEFwcGxpY2F0aW9ucywgTHRkLgotMDAwMjc5ICAgICAoYmFzZSAxNikJCUNvbnRyb2wgQXBwbGljYXRpb25zLCBMdGQuCi0JCQkJMyBUZXZ1b3QgSGFhcmV0cyBTdC4KLQkJCQlUZWwtQXZpdiA2OTU0NgotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wMi03QSAgIChoZXgpCQlJT0kgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwMjdBICAgICAoYmFzZSAxNikJCUlPSSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYtMyBOby4gMTI1IExhbmUgMjM1LAotCQkJCVBhbyBDaGlhbyBSb2FkIEhzaW4gVGllbiBDaXR5LAotCQkJCVRhaXBlaSBUQUlXQU4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItN0IgICAoaGV4KQkJQW1wbGlmeSBOZXQsIEluYy4KLTAwMDI3QiAgICAgKGJhc2UgMTYpCQlBbXBsaWZ5IE5ldCwgSW5jLgotCQkJCTQ3MzgxIEJheXNpZGUgUGFya3dheQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTdDICAgKGhleCkJCVRyaWxpdGhpYywgSW5jLgotMDAwMjdDICAgICAoYmFzZSAxNikJCVRyaWxpdGhpYywgSW5jLgotCQkJCTkyMDIgRS4gMzNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTdEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDI3RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi03RSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyN0UgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItN0YgICAoaGV4KQkJYXNrLXRlY2hub2xvZ2llcy5jb20KLTAwMDI3RiAgICAgKGJhc2UgMTYpCQlhc2stdGVjaG5vbG9naWVzLmNvbQotCQkJCTM2IFdlbGxpbmd0b24gQnVzaW5lc3MgUGFyawotCQkJCUR1a2VzIFJpZGUsIENyb3d0aG9ybmUgQmVya3NoaXJlIFJHNDUgNkwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi04MCAgIChoZXgpCQlNdSBOZXQsIEluYy4KLTAwMDI4MCAgICAgKGJhc2UgMTYpCQlNdSBOZXQsIEluYy4KLQkJCQk0NDIgTWFycmV0dCBSb2FkCi0JCQkJU3VpdGUgOQotCQkJCUxleGluZ3RvbiBNQSAwMjQyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItODEgICAoaGV4KQkJTWFkZ2UgTHRkLgotMDAwMjgxICAgICAoYmFzZSAxNikJCU1hZGdlIEx0ZC4KLQkJCQlNYWRnZSBIb3VzZQotCQkJCVByaW9ycyBXYXkKLQkJCQlNYWluZGVuaGVhZCBCZXJrc2hpcmUgU0w2IDJIUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLTgyICAgKGhleCkJCVZpYUNsaXgsIEluYy4KLTAwMDI4MiAgICAgKGJhc2UgMTYpCQlWaWFDbGl4LCBJbmMuCi0JCQkJMTQwMCBEZWxsIEF2ZS4sIFN1aXRlIEIKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItODMgICAoaGV4KQkJU3BlY3RydW0gQ29udHJvbHMsIEluYy4KLTAwMDI4MyAgICAgKGJhc2UgMTYpCQlTcGVjdHJ1bSBDb250cm9scywgSW5jLgotCQkJCVBPIEJveCA1NTMzCi0JCQkJQmVsbGV2dWUgV0EgOTgwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTg0ICAgKGhleCkJCUFSRVZBIFQmRAotMDAwMjg0ICAgICAoYmFzZSAxNikJCUFSRVZBIFQmRAotCQkJCUF2ZW51ZSBkZSBGaWd1aWVyZXMgQlAgNzUKLQkJCQkzNDk3NSBMQVRURVMgQ2VkZXgKLQkJCQlGUkFOQ0UKLQotMDAtMDItODUgICAoaGV4KQkJUml2ZXJzdG9uZSBOZXR3b3JrcwotMDAwMjg1ICAgICAoYmFzZSAxNikJCVJpdmVyc3RvbmUgTmV0d29ya3MKLQkJCQk1MjAwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi04NiAgIChoZXgpCQlPY2NhbSBOZXR3b3JrcwotMDAwMjg2ICAgICAoYmFzZSAxNikJCU9jY2FtIE5ldHdvcmtzCi0JCQkJNDE4MyBTdGF0ZSBTdHJlZXQKLQkJCQlTYW50YSBCYXJiYXJhIENBIDkzMTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi04NyAgIChoZXgpCQlBZGFwY29tCi0wMDAyODcgICAgIChiYXNlIDE2KQkJQWRhcGNvbQotCQkJCTE3Mi1BIENvbXBvbmVudCBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi04OCAgIChoZXgpCQlHTE9CQUwgVklMTEFHRSBDT01NVU5JQ0FUSU9OCi0wMDAyODggICAgIChiYXNlIDE2KQkJR0xPQkFMIFZJTExBR0UgQ09NTVVOSUNBVElPTgotCQkJCTExNDQgRUFTVCBBUlFVRVMgQVZFLgotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItODkgICAoaGV4KQkJRE5FIFRlY2hub2xvZ2llcwotMDAwMjg5ICAgICAoYmFzZSAxNikJCURORSBUZWNobm9sb2dpZXMKLQkJCQk1MCBCYXJuZXMgUGFyayBOCi0JCQkJV2FsbGluZ2ZvcmQgQ1QgMDY0OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLThBICAgKGhleCkJCUFtYml0IE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbgotMDAwMjhBICAgICAoYmFzZSAxNikJCUFtYml0IE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbgotCQkJCTVGLTEsIDUgSHNpbi1BbiBSb2FkIEhzaW5jaHUsCi0JCQkJU2NpZW5jZSBCYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi04QiAgIChoZXgpCQlWRFNMIFN5c3RlbXMgT1kKLTAwMDI4QiAgICAgKGJhc2UgMTYpCQlWRFNMIFN5c3RlbXMgT1kKLQkJCQlUZWtuaWlrYW50aWUgMTIKLQkJCQkwMiAxNTAgRXNwb28KLQkJCQlGSU5MQU5ECi0JCQkJRklOTEFORAotCi0wMC0wMi04QyAgIChoZXgpCQlNaWNyZWwtU3luZXJneSBTZW1pY29uZHVjdG9yCi0wMDAyOEMgICAgIChiYXNlIDE2KQkJTWljcmVsLVN5bmVyZ3kgU2VtaWNvbmR1Y3RvcgotCQkJCTMyNTAgU2NvdHQgQm91bGV2YXJkCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLThEICAgKGhleCkJCU1vdml0YSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDI4RCAgICAgKGJhc2UgMTYpCQlNb3ZpdGEgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJTm8uIDI2IFd1LUNodWFuIDd0aCBSb2FkLAotCQkJCVd1LUt1IEluZHVzdHJpYWwgUGFyawotCQkJCVRhaXBlaSBUYWl3YW4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItOEUgICAoaGV4KQkJUmFwaWQgNSBOZXR3b3JrcywgSW5jLgotMDAwMjhFICAgICAoYmFzZSAxNikJCVJhcGlkIDUgTmV0d29ya3MsIEluYy4KLQkJCQkxODAgQmF5dGVjaCBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0LTIzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLThGICAgKGhleCkJCUdsb2JldGVrLCBJbmMuCi0wMDAyOEYgICAgIChiYXNlIDE2KQkJR2xvYmV0ZWssIEluYy4KLQkJCQkxNjA3IEFrcm9uIFBlbmluc3VsYSBSZC4KLQkJCQlTdWl0ZSAxMDMKLQkJCQlBa3JvbiBPSCA0NDMxMy01MTkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi05MCAgIChoZXgpCQlXb29yaWdpc29vbCwgSW5jLgotMDAwMjkwICAgICAoYmFzZSAxNikJCVdvb3JpZ2lzb29sLCBJbmMuCi0JCQkJWW9vcG9vbmcgQmxkZy4KLQkJCQkxNTk1LTEsIEJvbmdjaHVtLTdkb25nLAotCQkJCVNlb3VsIFNlb3VsIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTkxICAgKGhleCkJCU9wZW4gTmV0d29yayBDby4sIEx0ZC4KLTAwMDI5MSAgICAgKGJhc2UgMTYpCQlPcGVuIE5ldHdvcmsgQ28uLCBMdGQuCi0JCQkJU2Vpc2hpbiBCbGRnLiwgMi01LTEwIFNoaW5qdWt1Ci0JCQkJU2hpbmp1a3Uta3UsIFRva3lvCi0JCQkJSkFQQU4gMTYwLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0wMi05MiAgIChoZXgpCQlMb2dpYyBJbm5vdmF0aW9ucywgSW5jLgotMDAwMjkyICAgICAoYmFzZSAxNikJCUxvZ2ljIElubm92YXRpb25zLCBJbmMuCi0JCQkJNjIwNSBMdXNrIEJsdmQuCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxLTI3MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTkzICAgKGhleCkJCVNvbGlkIERhdGEgU3lzdGVtcwotMDAwMjkzICAgICAoYmFzZSAxNikJCVNvbGlkIERhdGEgU3lzdGVtcwotCQkJCTI5NDUgT2FrbWVhZCBWaWxsYWdlIENvdXJ0Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTk0ICAgKGhleCkJCVRva3lvIFNva3VzaGluIENvLiwgTHRkLgotMDAwMjk0ICAgICAoYmFzZSAxNikJCVRva3lvIFNva3VzaGluIENvLiwgTHRkLgotCQkJCTUtMTYtMTIgTmlzaGktTmlwcG9yaQotCQkJCUFyYWthd2Eta3UsIFRva3lvIDExNi0wMDEzCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMi05NSAgIChoZXgpCQlJUC5BY2Nlc3MgTGltaXRlZAotMDAwMjk1ICAgICAoYmFzZSAxNikJCUlQLkFjY2VzcyBMaW1pdGVkCi0JCQkJTWVsYm91cm4gU2NpZW5jZSBQYXJrCi0JCQkJQ2FtYnJpZGdlIFJvYWQsIE1lbGJvdXJuIFJveXN0b24sIEhhcnRmbwotCQkJCVNHOCA2RUUgU0c4IDZFRSBVLksuCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItOTYgICAoaGV4KQkJTGVjdHJvbiBDbywuIEx0ZC4KLTAwMDI5NiAgICAgKGJhc2UgMTYpCQlMZWN0cm9uIENvLC4gTHRkLgotCQkJCTlGLCBOby4xNzEsIFNlYy4gMiwgVGF0dW5nIFJkLiwKLQkJCQlIc2ljaGloIENpdHksIFRhaXBlaSBIc2llbiAyMjEsCi0JCQkJVGFpd2FuIFRhaXdhbiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTk3ICAgKGhleCkJCUMtQ09SLm5ldAotMDAwMjk3ICAgICAoYmFzZSAxNikJCUMtQ09SLm5ldAotCQkJCTYwIERlY2liZWwgUm9hZAotCQkJCUJNUyBFbmdpbmVlcmluZwotCQkJCVN0YXRlIENvbGxlZ2UgUEEgMTY4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTk4ICAgKGhleCkJCUJyb2FkZnJhbWUgQ29ycG9yYXRpb24KLTAwMDI5OCAgICAgKGJhc2UgMTYpCQlCcm9hZGZyYW1lIENvcnBvcmF0aW9uCi0JCQkJNTgyOCBNb29uc3RvbmUgQXZlLgotCQkJCVN1aXRlIDIyMAotCQkJCUFsdGEgTG9tYSBDQSA5MTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItOTkgICAoaGV4KQkJQXBleCwgSW5jLgotMDAwMjk5ICAgICAoYmFzZSAxNikJCUFwZXgsIEluYy4KLQkJCQk5OTExIFdpbGxvd3MgUmQuIE4uRS4KLQkJCQlSZWRtb25kIFdBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi05QSAgIChoZXgpCQlTdG9yYWdlIEFwcHMKLTAwMDI5QSAgICAgKGJhc2UgMTYpCQlTdG9yYWdlIEFwcHMKLQkJCQkzIFByaW5jZXNzIFJvYWQKLQkJCQlMYXdyZW5jZXZpbGxlIE5KIDA4NjQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi05QiAgIChoZXgpCQlLcmVhdGVsIENvbW11bmljYXRpb25zIEFCCi0wMDAyOUIgICAgIChiYXNlIDE2KQkJS3JlYXRlbCBDb21tdW5pY2F0aW9ucyBBQgotCQkJCVRla25pa3JpbmdlbiA0QwotCQkJCVNFLTU4MzMwIExpbmtvcGluZwotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC0wMi05QyAgIChoZXgpCQkzQ09NCi0wMDAyOUMgICAgIChiYXNlIDE2KQkJM0NPTQotCQkJCTQwNSBTUFJJTkcgSElMTCBST0FECi0JCQkJU0hBUk9OIE5IIDAzNDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi05RCAgIChoZXgpCQlNZXJpeCBDb3JwLgotMDAwMjlEICAgICAoYmFzZSAxNikJCU1lcml4IENvcnAuCi0JCQkJSmluLVN1IEJ1aWxkaW5nLCA0OS0xNgotCQkJCU1hY2h1bS1Eb25nLCBTb25nLVBhLWt1Ci0JCQkJU2VvdWwgU2VvdWwgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItOUUgICAoaGV4KQkJSW5mb3JtYXRpb24gRXF1aXBtZW50IENvLiwgTHRkLgotMDAwMjlFICAgICAoYmFzZSAxNikJCUluZm9ybWF0aW9uIEVxdWlwbWVudCBDby4sIEx0ZC4KLQkJCQk3NDAtMSBFYWhvIEJsZGcuLCBZZW9rIFNhbS1Eb25nCi0JCQkJS2FuZ25hbS1rdQotCQkJCVNlb3VsIEtvcmVhICMxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTlGICAgKGhleCkJCUwtMyBDb21tdW5pY2F0aW9uIEF2aWF0aW9uIFJlY29yZGVycwotMDAwMjlGICAgICAoYmFzZSAxNikJCUwtMyBDb21tdW5pY2F0aW9uIEF2aWF0aW9uIFJlY29yZGVycwotCQkJCVAuTy4gQm94IDMwNDEKLQkJCQlTYXJhc290YSBGTCAzNDIzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQTAgICAoaGV4KQkJRmxhdHN0YWNrIEx0ZC4KLTAwMDJBMCAgICAgKGJhc2UgMTYpCQlGbGF0c3RhY2sgTHRkLgotCQkJCTExMTIgQnVkYXBlc3QKLQkJCQlQZXRlcmhlZ3lpIFVUIDk4Ci0JCQkJSFVOR0FSWQotCQkJCUhVTkdBUlkKLQotMDAtMDItQTEgICAoaGV4KQkJV29ybGQgV2lkZSBQYWNrZXRzCi0wMDAyQTEgICAgIChiYXNlIDE2KQkJV29ybGQgV2lkZSBQYWNrZXRzCi0JCQkJUE8gQm94IDE0NjQ1Ci0JCQkJU3Bva2FuZSBXQSA5OTIxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQTIgICAoaGV4KQkJSGlsc2NoZXIgR21iSAotMDAwMkEyICAgICAoYmFzZSAxNikJCUhpbHNjaGVyIEdtYkgKLQkJCQlSaGVpbnN0cmFzc2UgMTUKLQkJCQk2NTc5NSBIYXR0ZXJzaGVpbQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAyLUEzICAgKGhleCkJCUFCQiBTd2l0emVybGFuZCBMdGQsIFBvd2VyIFN5c3RlbXMKLTAwMDJBMyAgICAgKGJhc2UgMTYpCQlBQkIgU3dpdHplcmxhbmQgTHRkLCBQb3dlciBTeXN0ZW1zCi0JCQkJQnJ1Z2dlcnN0cmFzc2UgNzIKLQkJCQlDSC01NDAwCi0JCQkJQmFkZW4gIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAyLUE0ICAgKGhleCkJCUFkZFBhYyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwMkE0ICAgICAoYmFzZSAxNikJCUFkZFBhYyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTNGIEplb3VuZyBBbSBCbGRnLiwgNzY5LTEyCi0JCQkJWWVva3NhbS1kb25nLCBLYW5nbmFtLWd1LAotCQkJCVNlb3VsIFNlb3VsIEtvcmVhCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUE1ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAwMkE1ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1BNiAgIChoZXgpCQlFZmZpbmV0IFN5c3RlbXMgQ28uLCBMdGQuCi0wMDAyQTYgICAgIChiYXNlIDE2KQkJRWZmaW5ldCBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCVl1Z29uZyBCbGRnLiA1MDIKLQkJCQkxMTQ0LTEsIFNhbmJvbi1Eb25nIEt1bnBvLXNoaSwgS3lvbmdnaS1ECi0JCQkJS29yZWEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItQTcgICAoaGV4KQkJVml2YWNlIE5ldHdvcmtzCi0wMDAyQTcgICAgIChiYXNlIDE2KQkJVml2YWNlIE5ldHdvcmtzCi0JCQkJMjczMCBPcmNoYXJkIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQTggICAoaGV4KQkJQWlyIExpbmsgVGVjaG5vbG9neQotMDAwMkE4ICAgICAoYmFzZSAxNikJCUFpciBMaW5rIFRlY2hub2xvZ3kKLQkJCQlCZXRoZWwgQmxkZy4gMzAzCi0JCQkJMzI0LTEgWWFuZ2plZS1Eb25nLCBTZW9jaG8tR3UKLQkJCQlTZW91bCBLT1JFQSAxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUE5ICAgKGhleCkJCVJBQ09NLCBzLnIuby4KLTAwMDJBOSAgICAgKGJhc2UgMTYpCQlSQUNPTSwgcy5yLm8uCi0JCQkJTWlyb3ZhIDEyODMsIE5vdmUgTWVzdG8gbmEgTW9yYXZlCi0JCQkJNTkyIDMxIEN6ZWNoIHJlcHVibGljCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMDItQUEgICAoaGV4KQkJUExjb20gQ28uLCBMdGQuCi0wMDAyQUEgICAgIChiYXNlIDE2KQkJUExjb20gQ28uLCBMdGQuCi0JCQkJSG9zdW5nIEIvRCwgIzEwODMtMSwgSG9neWUtRG9uZwotCQkJCURvbmdhbi1LdSwgQW55YW5nLUNpdHkKLQkJCQlTb3V0aCBLb3JlYQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1BQiAgIChoZXgpCQlDVEMgVW5pb24gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAwMkFCICAgICAoYmFzZSAxNikJCUNUQyBVbmlvbiBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJOEYgTm8uIDYwIFpob3V6aSBTdC4KLQkJCQlOZWlodSBUYWlwZWkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi1BQyAgIChoZXgpCQkzUEFSIGRhdGEKLTAwMDJBQyAgICAgKGJhc2UgMTYpCQkzUEFSIGRhdGEKLQkJCQk0MjA5IFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1BRCAgIChoZXgpCQlIT1lBIENvcnBvcmF0aW9uCi0wMDAyQUQgICAgIChiYXNlIDE2KQkJSE9ZQSBDb3Jwb3JhdGlvbgotCQkJCTItNy01IE5ha2EtT2NoaWFpLCBTaGluanVrdS1rdSwKLQkJCQlUb2t5byAxNjEtODUyNQotCQkJCUpBUEFOCi0KLTAwLTAyLUFFICAgKGhleCkJCVNjYW5uZXggRWxlY3Ryb25pY3MgTHRkLgotMDAwMkFFICAgICAoYmFzZSAxNikJCVNjYW5uZXggRWxlY3Ryb25pY3MgTHRkLgotCQkJCVVuaXQgOCBFbmdsaXNoIEJ1c2luZXNzIFBhcmsKLQkJCQlFbmdsaXNoIENsb3NlCi0JCQkJSG92ZSAgQk4zIDdFVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLUFGICAgKGhleCkJCVRlbGVDcnV6IFRlY2hub2xvZ3ksIEluYy4KLTAwMDJBRiAgICAgKGJhc2UgMTYpCQlUZWxlQ3J1eiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjM5MSBRdW1lIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1CMCAgIChoZXgpCQlIb2t1YnUgQ29tbXVuaWNhdGlvbiAmIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDAyQjAgICAgIChiYXNlIDE2KQkJSG9rdWJ1IENvbW11bmljYXRpb24gJiBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCUZ1c2hpb2dhbWktYXphLW9raSAyNy0xCi0JCQkJRnVrdXNoaW1hICA5NjAtODUxNAotCQkJCUpBUEFOCi0KLTAwLTAyLUIxICAgKGhleCkJCUFucml0c3UsIEx0ZC4KLTAwMDJCMSAgICAgKGJhc2UgMTYpCQlBbnJpdHN1LCBMdGQuCi0JCQkJUnV0aGVyZm9yZCBDbG9zZQotCQkJCVN0ZXZlbmFnZSwgSGVydHMgRW5nbGFuZCwgU0cxMkVGCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi1CMiAgIChoZXgpCQlDYWJsZXZpc2lvbgotMDAwMkIyICAgICAoYmFzZSAxNikJCUNhYmxldmlzaW9uCi0JCQkJNDIwIENyb3Nzd2F5cyBQYXJrIERyaXZlIFdlc3QKLQkJCQlXb29kYnVyeSBOWSAxMTc4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQjMgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMDJCMyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCU0vUzogIEpGMy00MjAKLQkJCQkyMTExIE4uRS4gMjV0aCBBdmUuCi0JCQkJSGlsbHNib3JvIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1CNCAgIChoZXgpCQlEQVBITkUKLTAwMDJCNCAgICAgKGJhc2UgMTYpCQlEQVBITkUKLQkJCQkxMDEgQ2hhdXNzZWUgRGUgQmluY2hlCi0JCQkJNzAwMCBIb25zCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtMDItQjUgICAoaGV4KQkJQXZuZXQsIEluYy4KLTAwMDJCNSAgICAgKGJhc2UgMTYpCQlBdm5ldCwgSW5jLgotCQkJCTIyMTEgUy4gNDd0aCBTdHJlZXQKLQkJCQlQaG9lbml4IEFaIDg1MDM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1CNiAgIChoZXgpCQlBY3Jvc3NlciBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwMkI2ICAgICAoYmFzZSAxNikJCUFjcm9zc2VyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDExNi0yIEd1YW5nLUZ1IFJkLgotCQkJCVNlYSAxLCBTYW4gQ2h1bmcsCi0JCQkJVGFpcGVpIFRhaXBlaSBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLUI3ICAgKGhleCkJCVdhdGFuYWJlIEVsZWN0cmljIEluZHVzdHJ5IENvLiwgTHRkLgotMDAwMkI3ICAgICAoYmFzZSAxNikJCVdhdGFuYWJlIEVsZWN0cmljIEluZHVzdHJ5IENvLiwgTHRkLgotCQkJCTYtMTYtMTksIEppbmd1bWFlLCBTaGlidXlhLWt1Ci0JCQkJVG9reW8gMTUwLTAwMDEsCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMi1COCAgIChoZXgpCQlXSEkgS09OU1VMVCBBQgotMDAwMkI4ICAgICAoYmFzZSAxNikJCVdISSBLT05TVUxUIEFCCi0JCQkJU2NoZWVsZWdhdGFuIDExCi0JCQkJMTIwNDAgQXJzdGEKLQkJCQlTdG9ja2hvbG0gU0UtMTEyIDI4Ci0JCQkJU1dFREVOCi0KLTAwLTAyLUI5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDJCOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1CQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyQkEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQkIgICAoaGV4KQkJQ29udGludW91cyBDb21wdXRpbmcgQ29ycAotMDAwMkJCICAgICAoYmFzZSAxNikJCUNvbnRpbnVvdXMgQ29tcHV0aW5nIENvcnAKLQkJCQk5MzgwIENhcnJvbGwgUGFyayBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQkMgICAoaGV4KQkJTFZMIDcgU3lzdGVtcywgSW5jLgotMDAwMkJDICAgICAoYmFzZSAxNikJCUxWTCA3IFN5c3RlbXMsIEluYy4KLQkJCQkxMzAwMCBXZXN0b24gUGt3eQotCQkJCVN1aXRlIDEwNQotCQkJCUNhcnkgTkMgMjc1MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUJEICAgKGhleCkJCUJpb25ldCBDby4sIEx0ZC4KLTAwMDJCRCAgICAgKGJhc2UgMTYpCQlCaW9uZXQgQ28uLCBMdGQuCi0JCQkJM0YsIE1lZGlzb24gVmVudHVyZSBUb3dlciwKLQkJCQk5OTctNCwgRGFlY2hpLWRvbmcsIEthbmduYW0tZ3UsIFNlb3VsLAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUJFICAgKGhleCkJCVRvdHN1IEVuZ2luZWVyaW5nLCBJbmMuCi0wMDAyQkUgICAgIChiYXNlIDE2KQkJVG90c3UgRW5naW5lZXJpbmcsIEluYy4KLQkJCQkgNS0xNi0yMCBSb3Bwb25naSBNaW5hdG8ta3UKLQkJCQlaaXA6ICAxMDYtMDAzMgotCQkJCVRva3lvICAxMDYtODU1MQotCQkJCUpBUEFOCi0KLTAwLTAyLUJGICAgKGhleCkJCWRvdFJvY2tldCwgSW5jLgotMDAwMkJGICAgICAoYmFzZSAxNikJCWRvdFJvY2tldCwgSW5jLgotCQkJCTE5MDEgUy4gQmFzY29tLCBTdWl0ZSAzMDAKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQzAgICAoaGV4KQkJQmVuY2VudCBUemVuZyBJbmR1c3RyeSBDby4sIEx0ZC4KLTAwMDJDMCAgICAgKGJhc2UgMTYpCQlCZW5jZW50IFR6ZW5nIEluZHVzdHJ5IENvLiwgTHRkLgotCQkJCTNyZCBmbC4sIE5vLiAzIFJ1ZXkgS3VhbmcgUmQuLAotCQkJCU5laSBIdSBEaXN0LiwgVGFpcGVpIDExNAotCQkJCVRhaXdhbiBUYWl3YW4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi1DMSAgIChoZXgpCQlJbm5vdmF0aXZlIEVsZWN0cm9uaWMgRGVzaWducywgSW5jLgotMDAwMkMxICAgICAoYmFzZSAxNikJCUlubm92YXRpdmUgRWxlY3Ryb25pYyBEZXNpZ25zLCBJbmMuCi0JCQkJOTcwMSBUYXlsb3JzdmlsbGUgUmQuCi0JCQkJTG91aXN2aWxsZSBLWSA0MDI5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQzIgICAoaGV4KQkJTmV0IFZpc2lvbiBUZWxlY29tCi0wMDAyQzIgICAgIChiYXNlIDE2KQkJTmV0IFZpc2lvbiBUZWxlY29tCi0JCQkJIzIwNiBTb2Z0d2FyZSBTdXBwb3J0IENlbnRlcgotCQkJCTQ4IEphbmctRG9uZyBZdXNvbmctR3UsIFRhZWpvbgotCQkJCTMwNS0zNDMgUmVwLiBvZiBLb3JlYQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1DMyAgIChoZXgpCQlBcmVsbmV0IEx0ZC4KLTAwMDJDMyAgICAgKGJhc2UgMTYpCQlBcmVsbmV0IEx0ZC4KLQkJCQkzIEhheWFyZGVuIFN0LgotCQkJCVlhdm5lIDcwNjAwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAyLUM0ICAgKGhleCkJCVZlY3RvciBJbnRlcm5hdGlvbmFsIEJWQkEKLTAwMDJDNCAgICAgKGJhc2UgMTYpCQlWZWN0b3IgSW50ZXJuYXRpb25hbCBCVkJBCi0JCQkJVGVjaG5vbG9naWVsYWFuIDQKLQkJCQkzMDAxIExldXZlbiAKLQkJCQlCRUxHSVVNCi0KLTAwLTAyLUM1ICAgKGhleCkJCUV2ZXJ0eiBNaWNyb3N5c3RlbXMgTHRkLgotMDAwMkM1ICAgICAoYmFzZSAxNikJCUV2ZXJ0eiBNaWNyb3N5c3RlbXMgTHRkLgotCQkJCTUyODggSm9obiBMdWNhcyBEcml2ZQotCQkJCUJ1cmxpbmd0b24KLQkJCQlPbnRhcmlvIEw3TCA1WjkKLQkJCQlDQU5BREEKLQotMDAtMDItQzYgICAoaGV4KQkJRGF0YSBUcmFjayBUZWNobm9sb2d5IFBMQwotMDAwMkM2ICAgICAoYmFzZSAxNikJCURhdGEgVHJhY2sgVGVjaG5vbG9neSBQTEMKLQkJCQkxNTMgU29tZXJmb3JkIFJvYWQKLQkJCQlDaHJpc3RjaHVyY2gsIERvcnNldCBCSDIzIDNUWSwKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLUM3ICAgKGhleCkJCUFMUFMgRUxFQ1RSSUMgQ28uLCBMdGQuCi0wMDAyQzcgICAgIChiYXNlIDE2KQkJQUxQUyBFTEVDVFJJQyBDby4sIEx0ZC4KLQkJCQkxLTItMSwgT2tpbm91Y2hpLCBTYW1hLUNpdHksCi0JCQkJRnVrdXNoaW1hLXByZWYsIDk3Ni04NTAxLAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDItQzggICAoaGV4KQkJVGVjaG5vY29tIENvbW11bmljYXRpb25zIFRlY2hub2xvZ3kgKHB0ZSkgTHRkCi0wMDAyQzggICAgIChiYXNlIDE2KQkJVGVjaG5vY29tIENvbW11bmljYXRpb25zIFRlY2hub2xvZ3kgKHB0ZSkgTHRkCi0JCQkJMTg5IEtha2kgQnVja2l0IEF2ZW51ZSAxCi0JCQkJIzAzLTAzIFNodW4gTGkgSW5kdXN0cmlhbCBQYXJrCi0JCQkJU2luZ2Fwb3JlIDQxNjAyOQotCQkJCVNJTkdBUE9SRQotCi0wMC0wMi1DOSAgIChoZXgpCQlNZWxsYW5veCBUZWNobm9sb2dpZXMKLTAwMDJDOSAgICAgKGJhc2UgMTYpCQlNZWxsYW5veCBUZWNobm9sb2dpZXMKLQkJCQkzNTAgT2FrbWVhZCBQYXJrd2F5Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1DQSAgIChoZXgpCQlFbmRQb2ludHMsIEluYy4KLTAwMDJDQSAgICAgKGJhc2UgMTYpCQlFbmRQb2ludHMsIEluYy4KLQkJCQk0IFByZXN0b24gQ291cnQKLQkJCQlCZWRmb3JkIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1DQiAgIChoZXgpCQlUcmlTdGF0ZSBMdGQuCi0wMDAyQ0IgICAgIChiYXNlIDE2KQkJVHJpU3RhdGUgTHRkLgotCQkJCVNoaW5vbmFnYSBCbGcuIDQtMTEtMTkgSG9ra28tY2hvCi0JCQkJVG9tYWtvbWFpLXNoaSwgSG9ra2FpZG8KLQkJCQkwNTMtMDg1MiAwNTMtMDg1MiBKYXBhbgotCQkJCUpBUEFOCi0KLTAwLTAyLUNDICAgKGhleCkJCU0uQy5DLkkKLTAwMDJDQyAgICAgKGJhc2UgMTYpCQlNLkMuQy5JCi0JCQkJMzUyMCBLcnVtcyBDb3JuZXJzIFJkLgotCQkJCUl0aGFjYSBOWSAxNDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQ0QgICAoaGV4KQkJVGVsZURyZWFtLCBJbmMuCi0wMDAyQ0QgICAgIChiYXNlIDE2KQkJVGVsZURyZWFtLCBJbmMuCi0JCQkJU2hpbmh3YSBCbGRnLiwgOTQwLTEwIERhZWNoaS1Eb25nCi0JCQkJS2FuZ25hbS1rdSwgU2VvdWwgMTM1LTI4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1DRSAgIChoZXgpCQlGb3hKZXQsIEluYy4KLTAwMDJDRSAgICAgKGJhc2UgMTYpCQlGb3hKZXQsIEluYy4KLQkJCQkyMDE2IEUuIFJhbmRhbCBNaWxsIFJkLiAjNDA5Ci0JCQkJQXJsaW5ndG9uIFRYIDc2MDExLTgyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUNGICAgKGhleCkJCVp5R2F0ZSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMkNGICAgICAoYmFzZSAxNikJCVp5R2F0ZSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTJGLCBOby40OCwgTHVuZy1DaGluIFJvYWQKLQkJCQlMdW5nLVRhbiwgVGFueXVhbiwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLUQwICAgKGhleCkJCUNvbWRpYWwgQ29ycG9yYXRpb24KLTAwMDJEMCAgICAgKGJhc2UgMTYpCQlDb21kaWFsIENvcnBvcmF0aW9uCi0JCQkJMTE4MCBTZW1pbm9sZSBUcmFpbAotCQkJCUNoYXJsb3R0ZXN2aWxsZSBWQSAyMjkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRDEgICAoaGV4KQkJVml2b3RlaywgSW5jLgotMDAwMkQxICAgICAoYmFzZSAxNikJCVZpdm90ZWssIEluYy4KLQkJCQk1Ri0xLCAxNjgtMSwgTGllbi1DaGVuIFJkLAotCQkJCUNodW5nLUhvLCBUYWlwZWkgQ291bnR5LAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItRDIgICAoaGV4KQkJV29ya3N0YXRpb24gQUcKLTAwMDJEMiAgICAgKGJhc2UgMTYpCQlXb3Jrc3RhdGlvbiBBRwotCQkJCVNjaGFmZmhhdXNlcnN0ci4gNTUKLQkJCQlDSC04MTUyIEdsYXR0YnJ1Z2cKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wMi1EMyAgIChoZXgpCQlOZXRCb3R6LCBJbmMuCi0wMDAyRDMgICAgIChiYXNlIDE2KQkJTmV0Qm90eiwgSW5jLgotCQkJCTExMDA0NCBSZXNlYXJjaCBCbHZkLgotCQkJCVN1aXRlIEMtMTAwCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1ENCAgIChoZXgpCQlQREEgUGVyaXBoZXJhbHMsIEluYy4KLTAwMDJENCAgICAgKGJhc2UgMTYpCQlQREEgUGVyaXBoZXJhbHMsIEluYy4KLQkJCQkyMDUgT3JhbmdlIFN0LgotCQkJCVRoaXJkIEZsb29yCi0JCQkJTmV3IEhhdmVuIENUIDA2NTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1ENSAgIChoZXgpCQlBQ1IKLTAwMDJENSAgICAgKGJhc2UgMTYpCQlBQ1IKLQkJCQlDYXJkb3VsaW5lcyBCMgotCQkJCTEzNjAgcnRlIERvbGluaXMgMDY1NjAgVmFsYm9ubmUKLQkJCQlGUkFOQ0UKLQotMDAtMDItRDYgICAoaGV4KQkJTklDRSBTeXN0ZW1zCi0wMDAyRDYgICAgIChiYXNlIDE2KQkJTklDRSBTeXN0ZW1zCi0JCQkJOCBIYXBuaW5hIFN0LiwgUE9CIDY5MAotCQkJCVJhJ0FuYW5hIDQzMTA3Ci0JCQkJSVNSQUVMCi0KLTAwLTAyLUQ3ICAgKGhleCkJCUVNUEVHIEx0ZAotMDAwMkQ3ICAgICAoYmFzZSAxNikJCUVNUEVHIEx0ZAotCQkJCTEgU2lnbmV0IENvdXJ0Ci0JCQkJU3dhbm4ncyBSb2FkIENhbWJyaWRnZSwgVUsKLQkJCQlDQjUgOExBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItRDggICAoaGV4KQkJQlJFQ0lTIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0wMDAyRDggICAgIChiYXNlIDE2KQkJQlJFQ0lTIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJMjAyNSBHYXRld2F5IFBsYWNlLCBTdWl0ZSAxMzIKLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRDkgICAoaGV4KQkJUmVsaWFibGUgQ29udHJvbHMKLTAwMDJEOSAgICAgKGJhc2UgMTYpCQlSZWxpYWJsZSBDb250cm9scwotCQkJCTEyMCBIYWxsb3dlbGwgUm9hZAotCQkJCVZpY3RvcmlhLCAgQi5DLiBWOUEgN0syCi0JCQkJQ0FOQURBCi0KLTAwLTAyLURBICAgKGhleCkJCUV4aU8gQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDJEQSAgICAgKGJhc2UgMTYpCQlFeGlPIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjM2MiBRdW1lIERyaXZlCi0JCQkJU3VpdGUgQwotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1EQiAgIChoZXgpCQlORVRTRUMKLTAwMDJEQiAgICAgKGJhc2UgMTYpCQlORVRTRUMKLQkJCQkxMzUwNSBEdWxsZXMgVGVjaG5vbG9neSBEcml2ZQotCQkJCVN1aXRlIDEKLQkJCQlIZXJuYW5kb24gVkEgMjAxNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLURDICAgKGhleCkJCUZ1aml0c3UgR2VuZXJhbCBMaW1pdGVkCi0wMDAyREMgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBHZW5lcmFsIExpbWl0ZWQKLQkJCQkxMTE2LCBTdWVuYWdhLCBUYWthdHN1LUt1LAotCQkJCUthd2FzYWtpLUNpdHksIEthbmFnYXdhLVByZWYuLAotCQkJCTIxMy04NTAyIAotCQkJCUpBUEFOCi0KLTAwLTAyLUREICAgKGhleCkJCUJyb21heCBDb21tdW5pY2F0aW9ucywgTHRkLgotMDAwMkREICAgICAoYmFzZSAxNikJCUJyb21heCBDb21tdW5pY2F0aW9ucywgTHRkLgotCQkJCU5vLiAyMCBLdWFuZyBGdSBSb2FkLAotCQkJCUhzaW4gQ2h1IEluZHVzdHJpYWwgUGFyaywgSHUgS291LAotCQkJCUhzaW4gQ2h1IDMwMyAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi1ERSAgIChoZXgpCQlBc3Ryb2Rlc2lnbiwgSW5jLgotMDAwMkRFICAgICAoYmFzZSAxNikJCUFzdHJvZGVzaWduLCBJbmMuCi0JCQkJMi0yMi0xMiBLYW1pa29kYW5hIEthCi0JCQkJTmFrYWhhcmFrdSwgS2F3YXNhaS1DaXR5Ci0JCQkJS2FuYWdhd2EgIAotCQkJCUpBUEFOCi0KLTAwLTAyLURGICAgKGhleCkJCU5ldCBDb20gU3lzdGVtcywgSW5jLgotMDAwMkRGICAgICAoYmFzZSAxNikJCU5ldCBDb20gU3lzdGVtcywgSW5jLgotCQkJCTE1LTMsIFlvaWRvLURvbmcsCi0JCQkJWWVvdW5nZG9uZ3BvLWt1LAotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItRTAgICAoaGV4KQkJRVRBUyBHbWJICi0wMDAyRTAgICAgIChiYXNlIDE2KQkJRVRBUyBHbWJICi0JCQkJQm9yc2lnc3RyYXNzZSAxMAotCQkJCUQ3MDQ2OSBTdHV0dGdhcnQKLQkJCQlHRVJNQU5ZCi0KLTAwLTAyLUUxICAgKGhleCkJCUludGVncmF0ZWQgTmV0d29yayBDb3Jwb3JhdGlvbgotMDAwMkUxICAgICAoYmFzZSAxNikJCUludGVncmF0ZWQgTmV0d29yayBDb3Jwb3JhdGlvbgotCQkJCTc1NyBSb3V0ZSAyMDIvMjA2Ci0JCQkJQnJpZGdld2F0ZXIgTkogMDg4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUUyICAgKGhleCkJCU5EQyBJbmZhcmVkIEVuZ2luZWVyaW5nCi0wMDAyRTIgICAgIChiYXNlIDE2KQkJTkRDIEluZmFyZWQgRW5naW5lZXJpbmcKLQkJCQk1MzE0IE4uIElyd2luZGFsZSBBdmUuCi0JCQkJSXJ3aW5kYWxlIENBIDkxNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1FMyAgIChoZXgpCQlMSVRFLU9OIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAyRTMgICAgIChiYXNlIDE2KQkJTElURS1PTiBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTczNiBTLiBIaWxsdmlldyBEcml2ZQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1FNCAgIChoZXgpCQlKQyBIWVVOIFN5c3RlbXMsIEluYy4KLTAwMDJFNCAgICAgKGJhc2UgMTYpCQlKQyBIWVVOIFN5c3RlbXMsIEluYy4KLQkJCQlTaGluYm9uZyBCbGRnLCA3MzYtNiwKLQkJCQlZb2tzYW0tRG9uZywgS2FuZ25hbS1LdSwKLQkJCQlTZW91bCAgKDEzNS0wODApCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUU1ICAgKGhleCkJCVRpbWV3YXJlIEx0ZC4KLTAwMDJFNSAgICAgKGJhc2UgMTYpCQlUaW1ld2FyZSBMdGQuCi0JCQkJQnJvb2tmaWVsZCBHcmFuZ2UKLQkJCQk3OSBGYWxpbmdlIFJkLCBSb2NrZGFsZQotCQkJCUxhbmNzICAwNDIgR0xCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItRTYgICAoaGV4KQkJR291bGQgSW5zdHJ1bWVudCBTeXN0ZW1zLCBJbmMuCi0wMDAyRTYgICAgIChiYXNlIDE2KQkJR291bGQgSW5zdHJ1bWVudCBTeXN0ZW1zLCBJbmMuCi0JCQkJODMzMyBSb2Nrc2lkZSBSb2FkCi0JCQkJVmFsbGV5IFZpZXcgT0ggNDQxMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUU3ICAgKGhleCkJCUNBQiBHbWJIICYgQ28gS0cKLTAwMDJFNyAgICAgKGJhc2UgMTYpCQlDQUIgR21iSCAmIENvIEtHCi0JCQkJV2lsaGVsbS1TY2hpY2thcmQtU3RyIDE0Ci0JCQkJNzYxMzEgS2FybHNydWhlCi0JCQkJR0VSTUFOWQotCi0wMC0wMi1FOCAgIChoZXgpCQlFLkQuJkEuCi0wMDAyRTggICAgIChiYXNlIDE2KQkJRS5ELiZBLgotCQkJCUVuZXJnaWVsYWFuIDE2Ci0JCQkJSVogQm9zZHVpbiAyOTUwIEthcGVsbGVuCi0JCQkJQkVMR0lVTQotCi0wMC0wMi1FOSAgIChoZXgpCQlDUyBTeXN0ZW1lcyBEZSBTZWN1cml0ZSAtIEMzUwotMDAwMkU5ICAgICAoYmFzZSAxNikJCUNTIFN5c3RlbWVzIERlIFNlY3VyaXRlIC0gQzNTCi0JCQkJMjMsIHJ1ZSBkZSBTY2h3b2JzaGVpbQotCQkJCTY3NjAwIEJhbGRlbmhlaW0KLQkJCQlGUkFOQ0UKLQotMDAtMDItRUEgICAoaGV4KQkJRm9jdXMgRW5oYW5jZW1lbnRzCi0wMDAyRUEgICAgIChiYXNlIDE2KQkJRm9jdXMgRW5oYW5jZW1lbnRzCi0JCQkJMTM3MCBEZWxsIEF2ZS4KLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRUIgICAoaGV4KQkJUGljbyBDb21tdW5pY2F0aW9ucwotMDAwMkVCICAgICAoYmFzZSAxNikJCVBpY28gQ29tbXVuaWNhdGlvbnMKLQkJCQkyMDA4NSBTdGV2ZW5zIENyZWVrIEJsdmQuCi0JCQkJU3VpdGUgIzEwMAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRUMgICAoaGV4KQkJTWFzY2hvZmYgRGVzaWduIEVuZ2luZWVyaW5nCi0wMDAyRUMgICAgIChiYXNlIDE2KQkJTWFzY2hvZmYgRGVzaWduIEVuZ2luZWVyaW5nCi0JCQkJNDQ1NCBDZWRhciBMYWtlIFJkLiAjOAotCQkJCVN0LiBMb3VpcyBQYXJrIE1OIDU1NDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1FRCAgIChoZXgpCQlEWE8gVGVsZWNvbSBDby4sIEx0ZC4KLTAwMDJFRCAgICAgKGJhc2UgMTYpCQlEWE8gVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQk4RiwgMzAwLTExLCBZdW1nb2stRG9uZywKLQkJCQlTZW9jaG8tS3UsIFNlb3VsIDEzNy03ODkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItRUUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMDJFRSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thaiwgQ29wZW5oYWdlbiBWCi0JCQkJREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMDItRUYgICAoaGV4KQkJQ0NDIE5ldHdvcmsgU3lzdGVtcyBHcm91cCBMdGQuCi0wMDAyRUYgICAgIChiYXNlIDE2KQkJQ0NDIE5ldHdvcmsgU3lzdGVtcyBHcm91cCBMdGQuCi0JCQkJMTMgRmFybmJvcm91Z2ggQnVzaW5lc3MgQ2VudHJlCi0JCQkJRWVsbW9vciBSb2FkLCBGYXJuYm9yb3VnaCwgSGFudHMsIEdVMTQgNwotCQkJCUVOR0xBTkQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItRjAgICAoaGV4KQkJQU1FIE9wdGltZWRpYSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwMkYwICAgICAoYmFzZSAxNikJCUFNRSBPcHRpbWVkaWEgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxN0YtMiwgNzkgSHNpbiBUYWkgV3UgUm9hZCwgU2VjLiAxLAotCQkJCUhzaS1DaGloLCBUYWlwZWkgSHNpZW4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLUYxICAgKGhleCkJCVBpbmV0cm9uIENvLiwgTHRkLgotMDAwMkYxICAgICAoYmFzZSAxNikJCVBpbmV0cm9uIENvLiwgTHRkLgotCQkJCUJsZGcuICMxNTk5LTExLAotCQkJCVNlb2Noby1Eb25nLCBTZW9jaG8tS3UsCi0JCQkJU2VvdWwgIDEzNy0wNzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItRjIgICAoaGV4KQkJZURldmljZSwgSW5jLgotMDAwMkYyICAgICAoYmFzZSAxNikJCWVEZXZpY2UsIEluYy4KLQkJCQk0MjAgTGV4aW5ndG9uIEF2ZW51ZQotCQkJCVN1aXRlIDIzMDAKLQkJCQlOZXcgWW9yayBOWSAxMDE3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRjMgICAoaGV4KQkJTWVkaWEgU2VydmUgQ28uLCBMdGQuCi0wMDAyRjMgICAgIChiYXNlIDE2KQkJTWVkaWEgU2VydmUgQ28uLCBMdGQuCi0JCQkJRG9uZ3N1bmcgQmxkZy4gIzE3LTgsIFlvdWlkby1kb25nLAotCQkJCVlvdW5nZGVvdW5ncG8ta3UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1GNCAgIChoZXgpCQlQQ1RFTCwgSW5jLgotMDAwMkY0ICAgICAoYmFzZSAxNikJCVBDVEVMLCBJbmMuCi0JCQkJMTMzMSBDYWxpZm9ybmlhIENpcmNsZQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1GNSAgIChoZXgpCQlWSVZFIFN5bmVyZ2llcywgSW5jLgotMDAwMkY1ICAgICAoYmFzZSAxNikJCVZJVkUgU3luZXJnaWVzLCBJbmMuCi0JCQkJMzAgV2VzdCBCZWF2ZXIgQ3JlZWsgUm9hZCwgVW5pdCAxMDEKLQkJCQlSaWNobW9uZCBIaWxsLCBPbnRhcmlvCi0JCQkJTDRCIDNLMQotCQkJCUNBTkFEQQotCi0wMC0wMi1GNiAgIChoZXgpCQlFcXVpcGUgQ29tbXVuaWNhdGlvbnMKLTAwMDJGNiAgICAgKGJhc2UgMTYpCQlFcXVpcGUgQ29tbXVuaWNhdGlvbnMKLQkJCQkxMDAgTmFnb2cgUGFyawotCQkJCUFjdG9uIE1BIDAxNzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1GNyAgIChoZXgpCQlBUk0KLTAwMDJGNyAgICAgKGJhc2UgMTYpCQlBUk0KLQkJCQkxMTAsIEZ1bGJvdXJuIFJvYWQKLQkJCQlDaGVycnkgSGludG9uIENhbWJyaWRnZQotCQkJCUNCMSA5TkoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi1GOCAgIChoZXgpCQlTRUFLUiBFbmdpbmVlcmluZywgSW5jLgotMDAwMkY4ICAgICAoYmFzZSAxNikJCVNFQUtSIEVuZ2luZWVyaW5nLCBJbmMuCi0JCQkJMTI4NDcgRS4gUGVha3ZpZXcgQXZlLgotCQkJCUVuZ2xld29vZCBDTyA4MDExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRjkgICAoaGV4KQkJTWltb3MgU2VtaWNvbmR1Y3RvciBTRE4gQkhECi0wMDAyRjkgICAgIChiYXNlIDE2KQkJTWltb3MgU2VtaWNvbmR1Y3RvciBTRE4gQkhECi0JCQkJVGFtYW4gVGVrbm9sb2dpIE1hbGF5c2lhCi0JCQkJQnVraXQgSmFsaWwgNTcwMDAgS3VhbGEgTHVtcHVyLAotCQkJCU1BTEFZU0lBCi0KLTAwLTAyLUZBICAgKGhleCkJCURYIEFudGVubmEgQ28uLCBMdGQuCi0wMDAyRkEgICAgIChiYXNlIDE2KQkJRFggQW50ZW5uYSBDby4sIEx0ZC4KLQkJCQkyLTE1IEhhbWF6YWtpLURvcmksCi0JCQkJSHlvZ28ta3UsIEtvYmUKLQkJCQlKQVBBTgotCi0wMC0wMi1GQiAgIChoZXgpCQlCYXVtdWxsZXIgQXVsdWdlbi1TeXN0ZW10ZWNobmlrIEdtYkgKLTAwMDJGQiAgICAgKGJhc2UgMTYpCQlCYXVtdWxsZXIgQXVsdWdlbi1TeXN0ZW10ZWNobmlrIEdtYkgKLQkJCQlPc3RlbmRzdHMuIDg0Ci0JCQkJRC05MDQ4MiBOdXJ1YmVyZwotCQkJCUdFUk1BTlkKLQotMDAtMDItRkMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMkZDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUZEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDJGRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1GRSAgIChoZXgpCQlWaWRpdGVjLCBJbmMuCi0wMDAyRkUgICAgIChiYXNlIDE2KQkJVmlkaXRlYywgSW5jLgotCQkJCTUyMCBDZW50cmFsIFBhcmt3YXkgRS4KLQkJCQlTdWl0ZSAxMTUKLQkJCQlQbGFubyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRkYgICAoaGV4KQkJSGFuZGFuIEJyb2FkSW5mb0NvbQotMDAwMkZGICAgICAoYmFzZSAxNikJCUhhbmRhbiBCcm9hZEluZm9Db20KLQkJCQk1dGggRmwuIFNoaW5zdW5nIFBsYXphICM2OTctMTEKLQkJCQlZZW9nc2FtLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTAwICAgKGhleCkJCUJhcnJhY3VkYSBOZXR3b3JrcywgSW5jLgotMDAwMzAwICAgICAoYmFzZSAxNikJCUJhcnJhY3VkYSBOZXR3b3JrcywgSW5jLgotCQkJCTMxNzUgUy4gV2luY2hlc3RlciBCbHZkCi0JCQkJQ2FtcGJlbGwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTAxICAgKGhleCkJCUF2YW50YXMgTmV0d29ya3MgQ29ycG9yYXRpb24KLTAwMDMwMSAgICAgKGJhc2UgMTYpCQlBdmFudGFzIE5ldHdvcmtzIENvcnBvcmF0aW9uCi0JCQkJOTkwMCBDYXZlbmRpc2ggQmx2ZC4sIFN1aXRlICMzMTAKLQkJCQlTdC1MYXVyZW50LCBRdWViZWMKLQkJCQlINE0gMlYyCi0JCQkJQ0FOQURBCi0KLTAwLTAzLTAyICAgKGhleCkJCUNoYXJsZXMgSW5kdXN0cmllcywgTHRkLgotMDAwMzAyICAgICAoYmFzZSAxNikJCUNoYXJsZXMgSW5kdXN0cmllcywgTHRkLgotCQkJCTU2MDAgQXBvbGxvIERyaXZlCi0JCQkJUm9sbGluZyBNZWFkb3dzIElMIDYwMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0wMyAgIChoZXgpCQlKQU1BIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwMzAzICAgICAoYmFzZSAxNikJCUpBTUEgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJMTBGLCBOby4gMjIyLTEsIFNlYy4gMwotCQkJCVRhLVR1bmcgUmQuLCBIc2ktQ2hpaAotCQkJCVRhaXBlaSBIc2llbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy0wNCAgIChoZXgpCQlQYWNpZmljIEJyb2FkYmFuZCBDb21tdW5pY2F0aW9ucwotMDAwMzA0ICAgICAoYmFzZSAxNikJCVBhY2lmaWMgQnJvYWRiYW5kIENvbW11bmljYXRpb25zCi0JCQkJMzEwMyBOb3J0aCBGaXJzdCBTdC4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMDUgICAoaGV4KQkJTVNDIFZlcnRyaWVicyBHbWJICi0wMDAzMDUgICAgIChiYXNlIDE2KQkJTVNDIFZlcnRyaWVicyBHbWJICi0JCQkJRGVzaWduIENlbnRlciBBYWNoZW4KLQkJCQlQYXNjYWxzdHJhc3NlIDIxCi0JCQkJQUFDSEVOICAgIEQtNTIwNzYKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLTA2ICAgKGhleCkJCUZ1c2lvbiBJbiBUZWNoIENvLiwgTHRkLgotMDAwMzA2ICAgICAoYmFzZSAxNikJCUZ1c2lvbiBJbiBUZWNoIENvLiwgTHRkLgotCQkJCTZGbCwgRGFleW9vbiBCbGRnLiAxNjg4LTUsIFNlb2Noby1kb25nCi0JCQkJU2VvY2hvLWt1LAotCQkJCVNlb3VsLCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTA3ICAgKGhleCkJCVNlY3VyZSBXb3JrcywgSW5jLgotMDAwMzA3ICAgICAoYmFzZSAxNikJCVNlY3VyZSBXb3JrcywgSW5jLgotCQkJCTExIEV4ZWN1dGl2ZSBEcml2ZQotCQkJCVN1aXRlIDIwMAotCQkJCUF0bGFudGEgR0EgMzAzMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTA4ICAgKGhleCkJCUFNIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAzMDggICAgIChiYXNlIDE2KQkJQU0gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkxMDAgQ29tbWVyY2UgQmx2ZC4KLQkJCQlRdWFrZXJ0b3duIFBBIDE4OTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0wOSAgIChoZXgpCQlUZXhjZWwgVGVjaG5vbG9neSBQTEMKLTAwMDMwOSAgICAgKGJhc2UgMTYpCQlUZXhjZWwgVGVjaG5vbG9neSBQTEMKLQkJCQlUaGFtZXMgUm9hZAotCQkJCUNyYXlmb3JkIEtlbnQgREExIDRTQgotCQkJCUVOR0xBTkQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDMtMEEgICAoaGV4KQkJQXJndXMgVGVjaG5vbG9naWVzCi0wMDAzMEEgICAgIChiYXNlIDE2KQkJQXJndXMgVGVjaG5vbG9naWVzCi0JCQkJOEYsIE5vLiAxODMsIEthbmcgQ2hpZW4gUmQuCi0JCQkJMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy0wQiAgIChoZXgpCQlIdW50ZXIgVGVjaG5vbG9neSwgSW5jLgotMDAwMzBCICAgICAoYmFzZSAxNikJCUh1bnRlciBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTQwOCwgV29vbGltIGUtYml6IENlbnRlciwKLQkJCQkxNzAtNSwgR3Vyby0zZG9uZywgR3Vyby1ndSwKLQkJCQlTZW91bCAgMTM1LTI3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy0wQyAgIChoZXgpCQlUZWxlc29mdCBUZWNobm9sb2dpZXMgTHRkLgotMDAwMzBDICAgICAoYmFzZSAxNikJCVRlbGVzb2Z0IFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJT2JzZXJ2YXRvcnkgSG91c2UsIFN0b3VyIFBhcmssCi0JCQkJQmxhbmRmb3J1bSwgRG9yc2V0LCBEVDExIDlMUSwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMy0wRCAgIChoZXgpCQlVbml3aWxsIENvbXB1dGVyIENvcnAuCi0wMDAzMEQgICAgIChiYXNlIDE2KQkJVW5pd2lsbCBDb21wdXRlciBDb3JwLgotCQkJCU5vLiAyNCwgUGVpIFl1YW4gUmQuLCBDaHVuZwotCQkJCUxpIEluZHVzdHJpYWwgUGFyaywgQ2h1bmcKLQkJCQlMaSBDaXR5ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTBFICAgKGhleCkJCUNvcmUgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDAzMEUgICAgIChiYXNlIDE2KQkJQ29yZSBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQkzRiBTaG9wcGluZyBDZW50ZXIgQmQuIG9mCi0JCQkJU1NhbmcgWW91bmcgSHdhbmctZ2V1bSBBUFQsICMyNTMgTWFwby1EbwotCQkJCVNlb3VsICgxMjEtMDUwKSAgKDEyMS0wNTApCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTBGICAgKGhleCkJCURpZ2l0YWwgQ2hpbmEgKFNoYW5naGFpKSBOZXR3b3JrcyBMdGQuCi0wMDAzMEYgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBDaGluYSAoU2hhbmdoYWkpIE5ldHdvcmtzIEx0ZC4KLQkJCQk2MDItMjMsIEhhaXRhaSBCdWlsZGluZywgMzUxIEd1byBTaG91amluCi0JCQkJUHVkb25nIE5ldyBEaXN0cmljdCwKLQkJCQlTaGFuZ2hhaSAgCi0JCQkJQ0hJTkEKLQotMDAtMDMtMTAgICAoaGV4KQkJSVRYIEUtR2xvYmFsZWRnZSBDb3Jwb3JhdGlvbgotMDAwMzEwICAgICAoYmFzZSAxNikJCUlUWCBFLUdsb2JhbGVkZ2UgQ29ycG9yYXRpb24KLQkJCQlOYWthbWVndXJvIEdUIHRvd2VyIDdGIDItMS0xIGthbWltZWd1cm8KLQkJCQlNZWd1cm8ta3UKLQkJCQlUb2t5byAgMTUzLTAwNTEKLQkJCQlKQVBBTgotCi0wMC0wMy0xMSAgIChoZXgpCQlNaWNybyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwMzExICAgICAoYmFzZSAxNikJCU1pY3JvIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJU3VlaGlybyBCbGRnLgotCQkJCTEtMiwgU290byBLYW5kYSA1IENob21lIENoaXlvZGEta3UsIFRva3kKLQkJCQkxMDEtMDAyMSAKLQkJCQlKQVBBTgotCi0wMC0wMy0xMiAgIChoZXgpCQlUUi1TeXN0ZW10ZWNobmlrIEdtYkgKLTAwMDMxMiAgICAgKGJhc2UgMTYpCQlUUi1TeXN0ZW10ZWNobmlrIEdtYkgKLQkJCQlFZ2xpc2hhbGRlIDYKLQkJCQlELTc4NjQ3IFRyb3NzaW5nZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLTEzICAgKGhleCkJCUFjY2VzcyBNZWRpYSBTUEEKLTAwMDMxMyAgICAgKGJhc2UgMTYpCQlBY2Nlc3MgTWVkaWEgU1BBCi0JCQkJVmlhIGRlbGxlIEluZHVzdHJpZSwgNC9nCi0JCQkJMjQwMzUgTEFMTElPIChCRykgIAotCQkJCUlUQUxZCi0KLTAwLTAzLTE0ICAgKGhleCkJCVRlbGV3YXJlIE5ldHdvcmsgU3lzdGVtcwotMDAwMzE0ICAgICAoYmFzZSAxNikJCVRlbGV3YXJlIE5ldHdvcmsgU3lzdGVtcwotCQkJCSM3ODA2IDd0aCBEb25naWwgVGVjaG5vdG93biwKLQkJCQlLaW5hbnlhbmcgRG9uZyA4MjMsIERvbmdhaG4gR3UsIEFueWFuZyBDCi0JCQkJNDMxLTA2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy0xNSAgIChoZXgpCQlDaWRjbyBJbmNvcnBvcmF0ZWQKLTAwMDMxNSAgICAgKGJhc2UgMTYpCQlDaWRjbyBJbmNvcnBvcmF0ZWQKLQkJCQkyMjAgQ29jaHJhbmUgQ2lyY2xlCi0JCQkJTW9yZ2FuIEhpbGwgQ0EgOTUwMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTE2ICAgKGhleCkJCU5vYmVsbCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMzE2ICAgICAoYmFzZSAxNikJCU5vYmVsbCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTM0MTAgRmFyIFdlc3QgQmx2ZC4sIFN1aXRlIDI0MAotCQkJCUF1c3RpbiBUWCA3ODczMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMTcgICAoaGV4KQkJTWVybGluIFN5c3RlbXMsIEluYy4KLTAwMDMxNyAgICAgKGJhc2UgMTYpCQlNZXJsaW4gU3lzdGVtcywgSW5jLgotCQkJCTM5MDAgTmV3IFBhcmsgTWFsbCBSZC4KLQkJCQkzcmQgRmxvb3IKLQkJCQlOZXdhcmsgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTE4ICAgKGhleCkJCUN5cmFzIFN5c3RlbXMsIEluYy4KLTAwMDMxOCAgICAgKGJhc2UgMTYpCQlDeXJhcyBTeXN0ZW1zLCBJbmMuCi0JCQkJNDcxMDAgQmF5c2lkZSBQYXJrd2F5Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMTkgICAoaGV4KQkJSW5maW5lb24gQUcKLTAwMDMxOSAgICAgKGJhc2UgMTYpCQlJbmZpbmVvbiBBRwotCQkJCVAuTy4gQm94IDgwMDk0OQotCQkJCUQtODE2MDkgTXVuaWNoCi0JCQkJR0VSTUFOWQotCi0wMC0wMy0xQSAgIChoZXgpCQlCZWlqaW5nIEJyb2FkIFRlbGVjb20gTHRkLiwgQ2hpbmEKLTAwMDMxQSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEJyb2FkIFRlbGVjb20gTHRkLiwgQ2hpbmEKLQkJCQlQLk8uIEJveCAjMTQ3Ci0JCQkJQmVpamluZyBVbml2ZXJzaXR5IG9mIFBvc3RzICBhbmQgVGVsZWNvbQotCQkJCUJlaWppbmcgIDEwMDg3NgotCQkJCUNISU5BCi0KLTAwLTAzLTFCICAgKGhleCkJCUNlbGx2aXNpb24gU3lzdGVtcywgSW5jLgotMDAwMzFCICAgICAoYmFzZSAxNikJCUNlbGx2aXNpb24gU3lzdGVtcywgSW5jLgotCQkJCTNGLTEsIDc1LCBIc2luIFRhaXd1IFJvYWQsIFNlYy4gMQotCQkJCUhzaWNoaWgsIFRhaXBlaSwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTFDICAgKGhleCkJCVN2ZW5za2EgSGFyZHZhcnVmYWJyaWtlbiBBQgotMDAwMzFDICAgICAoYmFzZSAxNikJCVN2ZW5za2EgSGFyZHZhcnVmYWJyaWtlbiBBQgotCQkJCU9sZSBSb21lcnN2YWcgMTYsIElkZW9uCi0JCQkJU0UtMjIzIDcwIEx1bmQKLQkJCQlTV0VERU4KLQotMDAtMDMtMUQgICAoaGV4KQkJVGFpd2FuIENvbW1hdGUgQ29tcHV0ZXIsIEluYy4KLTAwMDMxRCAgICAgKGJhc2UgMTYpCQlUYWl3YW4gQ29tbWF0ZSBDb21wdXRlciwgSW5jLgotCQkJCThGLCBOby4gOTQsIFNlYyAxLAotCQkJCVNoaW4gVGFpIFd1IFJkLiBIc2kgQ2hpaCwgVGFpcGVpIEhzaWVuLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtMUUgICAoaGV4KQkJT3B0cmFuZXQsIEluYy4KLTAwMDMxRSAgICAgKGJhc2UgMTYpCQlPcHRyYW5ldCwgSW5jLgotCQkJCTcwNDEgS29sbCBDZW50ZXIgUGt3eQotCQkJCVN1aXRlIDEzNQotCQkJCVBsZWFzYW50b24gQ0EgOTQ1NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTFGICAgKGhleCkJCUNvbmRldiBMdGQuCi0wMDAzMUYgICAgIChiYXNlIDE2KQkJQ29uZGV2IEx0ZC4KLQkJCQkyMDAtMTYyNiBXZXN0IDJuZCBBdmUuCi0JCQkJVmFuY291dmVyLCBCLkMuIFY2SiAxSDQKLQkJCQlDQU5BREEKLQotMDAtMDMtMjAgICAoaGV4KQkJWHBlZWQsIEluYy4KLTAwMDMyMCAgICAgKGJhc2UgMTYpCQlYcGVlZCwgSW5jLgotCQkJCTk5IFcuIFRhc21hbiBEcml2ZQotCQkJCVN1aXRlIDExMAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0yMSAgIChoZXgpCQlSZWNvIFJlc2VhcmNoIENvLiwgTHRkLgotMDAwMzIxICAgICAoYmFzZSAxNikJCVJlY28gUmVzZWFyY2ggQ28uLCBMdGQuCi0JCQkJTm8uIDQ3LTEsIFNlYy4gMiwKLQkJCQlLdWFuZyBGdSBSZC4sU2FuIENodW5nIENpdHksIFRhaXBlaSwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTIyICAgKGhleCkJCUlESVMgQ28uLCBMdGQuCi0wMDAzMjIgICAgIChiYXNlIDE2KQkJSURJUyBDby4sIEx0ZC4KLQkJCQk3dGggRmxvb3IsIDY0Ni03IFl1a3NhbS1Eb25nLAotCQkJCUthbmduYW0tR3UsIFNlb3VsIDEzNS0yODAsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTIzICAgKGhleCkJCUNvcm5ldCBUZWNobm9sb2d5LCBJbmMuCi0wMDAzMjMgICAgIChiYXNlIDE2KQkJQ29ybmV0IFRlY2hub2xvZ3ksIEluYy4KLQkJCQk2ODAwIFZlcnNhciBDZW50ZXIsIFN1aXRlIDIxNgotCQkJCVNwcmluZ2ZpZWxkIFZBIDIyMTUxLTQxNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTI0ICAgKGhleCkJCVNBTllPIENvbnN1bWVyIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwMzI0ICAgICAoYmFzZSAxNikJCVNBTllPIENvbnN1bWVyIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTctMTAxIFRhY2hpa2F3YS1jaG8KLQkJCQlUb3R0b3JpIENpdHkgIDY4MC04NjM0Ci0JCQkJSkFQQU4KLQotMDAtMDMtMjUgICAoaGV4KQkJQXJpbWEgQ29tcHV0ZXIgQ29ycC4KLTAwMDMyNSAgICAgKGJhc2UgMTYpCQlBcmltYSBDb21wdXRlciBDb3JwLgotCQkJCTZ0aCBGbC4sIE5vLiAzMjcsCi0JCQkJU3VuZy1sdW5nIFJkLiwgVGFpcGVpIENpdHksCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy0yNiAgIChoZXgpCQlJd2FzYWtpIEluZm9ybWF0aW9uIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDAzMjYgICAgIChiYXNlIDE2KQkJSXdhc2FraSBJbmZvcm1hdGlvbiBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTMzNjEgT3NoaQotCQkJCUZ1a2lhZ2UtbWFjaGksIFNhaXRhbWEgMzY5LTAxMTMKLQkJCQlKQVBBTgotCi0wMC0wMy0yNyAgIChoZXgpCQlBQ1QnTAotMDAwMzI3ICAgICAoYmFzZSAxNikJCUFDVCdMCi0JCQkJQXZlbnVlIGRlIEFydGlzYW5hdCAxMEEKLQkJCQkxOTI0IEJyYWluZSBsJ0FsbGFyZAotCQkJCUJFTEdJVU0KLQotMDAtMDMtMjggICAoaGV4KQkJTWFjZSBHcm91cCwgSW5jLgotMDAwMzI4ICAgICAoYmFzZSAxNikJCU1hY2UgR3JvdXAsIEluYy4KLQkJCQk1MTAxIENvbW1lcmNlIERyLgotCQkJCUJhbGR3aW4gUGFyayBDQSA5MTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMjkgICAoaGV4KQkJRjMsIEluYy4KLTAwMDMyOSAgICAgKGJhc2UgMTYpCQlGMywgSW5jLgotCQkJCTJGLCBOby4gNywgSW5kdXN0cnkgRS4gUmQuIDksCi0JCQkJU2NpZW5jZSBCYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy0yQSAgIChoZXgpCQlVbmlEYXRhIENvbW11bmljYXRpb24gU3lzdGVtcywgSW5jLgotMDAwMzJBICAgICAoYmFzZSAxNikJCVVuaURhdGEgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJMkYsIE9oU3VuZy1CbGRnLCA4Mi0xNSwKLQkJCQlOb25IeXVuLURvbmcsIEdhbmdOYW0tR3UsICBTZW91bCwxMzUtMTAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTJCICAgKGhleCkJCUdBSSBEYXRlbmZ1bmtzeXN0ZW1lIEdtYkgKLTAwMDMyQiAgICAgKGJhc2UgMTYpCQlHQUkgRGF0ZW5mdW5rc3lzdGVtZSBHbWJICi0JCQkJUmllZGxlcGFya3N0cmFzc2UgMjgKLQkJCQlELTg4MDQ1IEZyaWVkcmljaHNoYWZlbgotCQkJCUdFUk1BTlkKLQotMDAtMDMtMkMgICAoaGV4KQkJQUJCIFN3aXR6ZXJsYW5kIEx0ZAotMDAwMzJDICAgICAoYmFzZSAxNikJCUFCQiBTd2l0emVybGFuZCBMdGQKLQkJCQlEZXB0LiBBVFBUCi0JCQkJQ0gtNTMwMCBUdXJnaQotCQkJCUF1c3RyYXNzZSAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDMtMkQgICAoaGV4KQkJSUJBU0UgVGVjaG5vbG9neSwgSW5jLgotMDAwMzJEICAgICAoYmFzZSAxNikJCUlCQVNFIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk1RiwgTm8uIDIyMSwKLQkJCQlDaHVuZyBZYW5nIFJkLgotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy0yRSAgIChoZXgpCQlTY29wZSBJbmZvcm1hdGlvbiBNYW5hZ2VtZW50LCBMdGQuCi0wMDAzMkUgICAgIChiYXNlIDE2KQkJU2NvcGUgSW5mb3JtYXRpb24gTWFuYWdlbWVudCwgTHRkLgotCQkJCTJGIENoYW53b28gYi9vIDczNiBZb3Vrc2FuZy1kb25nLAotCQkJCUthbmduYW0tZ3UsCi0JCQkJU2VvdWwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMkYgICAoaGV4KQkJR2xvYmFsIFN1biBUZWNobm9sb2d5LCBJbmMuCi0wMDAzMkYgICAgIChiYXNlIDE2KQkJR2xvYmFsIFN1biBUZWNobm9sb2d5LCBJbmMuCi0JCQkJTm8uIDEzLCBUdW5nIFl1YW4gUmQuLAotCQkJCUp1bmcgTGkgSW5kdXN0cmlhbCBQYXJrIEp1bmcgTGkgQ2l0eQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtMzAgICAoaGV4KQkJSW1hZ2VuaWNzLCBDby4sIEx0ZC4KLTAwMDMzMCAgICAgKGJhc2UgMTYpCQlJbWFnZW5pY3MsIENvLiwgTHRkLgotCQkJCTEtMzEtNSBLb2t1cnlvLUNobwotCQkJCUNob2Z1LUNpdHkgVG9reW8KLQkJCQkxODItMDAyMiAKLQkJCQlKQVBBTgotCi0wMC0wMy0zMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzMzEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMzIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMzMyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTMzICAgKGhleCkJCURpZ2l0ZWwgQ28uLCBMdGQuCi0wMDAzMzMgICAgIChiYXNlIDE2KQkJRGlnaXRlbCBDby4sIEx0ZC4KLQkJCQk4MzUtNiwgWW9rc2FtLWRvbmcKLQkJCQlLYW5nbmFtLWd1LCAxMzUtMDgwLCBTZW91bCwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMzQgICAoaGV4KQkJTmV3cG9ydCBFbGVjdHJvbmljcwotMDAwMzM0ICAgICAoYmFzZSAxNikJCU5ld3BvcnQgRWxlY3Ryb25pY3MKLQkJCQkyMjI5IFNvLiBZYWxlIFN0LgotCQkJCVNhbnRhIEFuYSBDQSA5MjcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMzUgICAoaGV4KQkJTWlyYWUgVGVjaG5vbG9neQotMDAwMzM1ICAgICAoYmFzZSAxNikJCU1pcmFlIFRlY2hub2xvZ3kKLQkJCQkyMTEtMTUsIEhvbiBIeXVuLWRvbmcsCi0JCQkJS2FuZ25hbS1rdSAxMzUtMDEwCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy0zNiAgIChoZXgpCQlaZXRlcyBUZWNobm9sb2dpZXMKLTAwMDMzNiAgICAgKGJhc2UgMTYpCQlaZXRlcyBUZWNobm9sb2dpZXMKLQkJCQkzIFJ1ZSBEZSBTdHJhcyBCb3VyZwotCQkJCTExMzAgQnJ1c3NlbHMKLQkJCQlCRUxHSVVNCi0KLTAwLTAzLTM3ICAgKGhleCkJCVZhb25lLCBJbmMuCi0wMDAzMzcgICAgIChiYXNlIDE2KQkJVmFvbmUsIEluYy4KLQkJCQk2RiBLeWVtb25nIEFydCBDZW50ZXIsCi0JCQkJNzcyIFl1a3NhbjItRG9uZyBLYW5nIEhhbUd1LCBTZW91bCwKLQkJCQkxMzUtMDgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTM4ICAgKGhleCkJCU9hayBUZWNobm9sb2d5Ci0wMDAzMzggICAgIChiYXNlIDE2KQkJT2FrIFRlY2hub2xvZ3kKLQkJCQkxMzkgS2lmZXIgQ291cnQKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYtNTE2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMzkgICAoaGV4KQkJRXVyb2xvZ2ljIFN5c3RlbXMsIEx0ZC4KLTAwMDMzOSAgICAgKGJhc2UgMTYpCQlFdXJvbG9naWMgU3lzdGVtcywgTHRkLgotCQkJCUNsb25zaGF1Z2ggSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlDbG9uc2hhdWdoIER1YmxpbiAxNyAKLQkJCQlJUkVMQU5ECi0KLTAwLTAzLTNBICAgKGhleCkJCVNpbGljb24gV2F2ZSwgSW5jLgotMDAwMzNBICAgICAoYmFzZSAxNikJCVNpbGljb24gV2F2ZSwgSW5jLgotCQkJCTYyNTYgR3JlZW53aWNoIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0zQiAgIChoZXgpCQlUQU1JIFRlY2ggQ28uLCBMdGQuCi0wMDAzM0IgICAgIChiYXNlIDE2KQkJVEFNSSBUZWNoIENvLiwgTHRkLgotCQkJCTRGLCBDaHVuZ2RvIEJlbmNoZXIgVG93bgotCQkJCTYwNiBUYW5iYW5nLURvbmcsIFNlby1HdQotCQkJCVRhZWpvbiAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTNDICAgKGhleCkJCURhaWRlbiBDby4sIEx0ZC4KLTAwMDMzQyAgICAgKGJhc2UgMTYpCQlEYWlkZW4gQ28uLCBMdGQuCi0JCQkJMjEwMC0xOSBUdXR1bWksIEthbWltaW5lLW1hY2hpCi0JCQkJTWl5YWtpLWd1biwgU2FnYS1rZW4KLQkJCQlKQVBBTgotCi0wMC0wMy0zRCAgIChoZXgpCQlJTFNIaW4gTGFiCi0wMDAzM0QgICAgIChiYXNlIDE2KQkJSUxTSGluIExhYgotCQkJCUtDUyBCL0QgMjI4LTEzIFlvdW5nIERhcC1Eb25nCi0JCQkJU1VORyBET05HLUdVLAotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtM0UgICAoaGV4KQkJVGF0ZXlhbWEgU3lzdGVtIExhYm9yYXRvcnkgQ28uLCBMdGQuCi0wMDAzM0UgICAgIChiYXNlIDE2KQkJVGF0ZXlhbWEgU3lzdGVtIExhYm9yYXRvcnkgQ28uLCBMdGQuCi0JCQkJMzAgU2hpbW9ub2JhbiBPeWFtYS1jaG8KLQkJCQlLYW1pbmlrYXdhLWd1biBUb3lhbWEgUHJvZi4KLQkJCQk5MzAtMTMwNQotCQkJCUpBUEFOCi0KLTAwLTAzLTNGICAgKGhleCkJCUJpZ0JhbmQgTmV0d29ya3MsIEx0ZC4KLTAwMDMzRiAgICAgKGJhc2UgMTYpCQlCaWdCYW5kIE5ldHdvcmtzLCBMdGQuCi0JCQkJMyBBenJpZWxpIFRvd2VycwotCQkJCVRlbC1Bdml2IDY3MDIzCi0JCQkJSVNSQUVMCi0KLTAwLTAzLTQwICAgKGhleCkJCUZsb3dhcmUgV2lyZWxlc3MgU3lzdGVtcywgTHRkLgotMDAwMzQwICAgICAoYmFzZSAxNikJCUZsb3dhcmUgV2lyZWxlc3MgU3lzdGVtcywgTHRkLgotCQkJCTI4IEhhY2hhcm9zaGV0IFN0ZWV0Ci0JCQkJUC5PLkIuIDgxMiBPci1ZZWh1ZGEKLQkJCQk2MDI1MAotCQkJCUlTUkFFTAotCi0wMC0wMy00MSAgIChoZXgpCQlBeG9uIERpZ2l0YWwgRGVzaWduCi0wMDAzNDEgICAgIChiYXNlIDE2KQkJQXhvbiBEaWdpdGFsIERlc2lnbgotCQkJCUxhbmdlIFdhZ2Vuc3RyYWF0IDU1Ci0JCQkJTkwtNTEyNiBCQiBHSUxaRQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTAzLTQyICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwMzQyICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZCAtIFN0ZSAjMTAwCi0JCQkJRGVwdC4gNjgwMCBCcmFtcHRvbiAgT04gIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMDMtNDMgICAoaGV4KQkJTWFydGluIFByb2Zlc3Npb25hbCBBL1MKLTAwMDM0MyAgICAgKGJhc2UgMTYpCQlNYXJ0aW4gUHJvZmVzc2lvbmFsIEEvUwotCQkJCU9sb2YgUGFsbWVzIEFsbGUgMTgKLQkJCQlESy04MjAwIEFhcmh1c24KLQkJCQlERU5NQVJLCi0KLTAwLTAzLTQ0ICAgKGhleCkJCVRpZXRlY2guQ28uLCBMdGQuCi0wMDAzNDQgICAgIChiYXNlIDE2KQkJVGlldGVjaC5Dby4sIEx0ZC4KLQkJCQkyLTEzLTEgQ2hpa2FtYXRvb3JpIE1pbmFtaWt1Ci0JCQkJTmFnb3lhLAotCQkJCUpBUEFOCi0KLTAwLTAzLTQ1ICAgKGhleCkJCVJvdXRyZWsgTmV0d29ya3MgQ29ycG9yYXRpb24KLTAwMDM0NSAgICAgKGJhc2UgMTYpCQlSb3V0cmVrIE5ldHdvcmtzIENvcnBvcmF0aW9uCi0JCQkJTmlsc3NlaSBTaGluIE1pem9ub2t1Y2hpIEJsZGcuIDFGCi0JCQkJMy01LTcgSGlzYW1vdG8sIFRha2F0c3UtS3UgS2F3YXNha2ktc2hpLAotCQkJCTIzLTAwMTEgCi0JCQkJSkFQQU4KLQotMDAtMDMtNDYgICAoaGV4KQkJSGl0YWNoaSBLb2t1c2FpIEVsZWN0cmljLCBJbmMuCi0wMDAzNDYgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBLb2t1c2FpIEVsZWN0cmljLCBJbmMuCi0JCQkJMS02LTEwIFVjaGlrYW5kYQotCQkJCUNoaXlvZGEtS3UgVG9reW8gbDEwMQotCQkJCUpBUEFOCi0KLTAwLTAzLTQ3ICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi0wMDAzNDcgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlNUzogIExGMy00MjAKLQkJCQkyMTExIE4uRS4gMjV0aCBBdmVudWUKLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTQ4ICAgKGhleCkJCU5vcnNjYW4gSW5zdHJ1bWVudHMsIEx0ZC4KLTAwMDM0OCAgICAgKGJhc2UgMTYpCQlOb3JzY2FuIEluc3RydW1lbnRzLCBMdGQuCi0JCQkJNyBUZXJyYWNvbiBQbGFjZQotCQkJCVdpbm5pcGVnLCBNYW5pdG9iYSwKLQkJCQlSMkogNEIzCi0JCQkJQ0FOQURBCi0KLTAwLTAzLTQ5ICAgKGhleCkJCVZpZGljb2RlIERhdGFjb21tdW5pY2F0aWUgQi5WLgotMDAwMzQ5ICAgICAoYmFzZSAxNikJCVZpZGljb2RlIERhdGFjb21tdW5pY2F0aWUgQi5WLgotCQkJCVBvc3RidXMgNzE2NAotCQkJCTI3MDEgQUQgWm9ldGVybWVlcgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTAzLTRBICAgKGhleCkJCVJJQVMgQ29ycG9yYXRpb24KLTAwMDM0QSAgICAgKGJhc2UgMTYpCQlSSUFTIENvcnBvcmF0aW9uCi0JCQkJNDY2MDAgRnJlbW9udCBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTRCICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwMzRCICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZCBTdWl0ZSAxMDAKLQkJCQlEZXB0LiA2ODAwIEJyYW1wdG9uIE9OIEw2VCA1IFA2Ci0JCQkJQ0FOQURBCi0KLTAwLTAzLTRDICAgKGhleCkJCVNoYW5naGFpIERpZ2lWaXNpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDM0QyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBEaWdpVmlzaW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTFGLCBIZW5nIFRvbmcKLQkJCQlJbnRlcm5hdGlvbmFsIEJ1aWxkaW5nLCA4NjUgQ2hhbmcgTmluZyBSCi0JCQkJU2hhbmdoYWkgMjAwMDUwCi0JCQkJQ0hJTkEKLQotMDAtMDMtNEQgICAoaGV4KQkJQ2hpYXJvIE5ldHdvcmtzLCBMdGQuCi0wMDAzNEQgICAgIChiYXNlIDE2KQkJQ2hpYXJvIE5ldHdvcmtzLCBMdGQuCi0JCQkJUC5PLiBCb3ggODMyNDI3Ci0JCQkJUmljaGFyZHNvbiBUWCA3NTA4My0yNDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy00RSAgIChoZXgpCQlQb3MgRGF0YSBDb21wYW55LCBMdGQuCi0wMDAzNEUgICAgIChiYXNlIDE2KQkJUG9zIERhdGEgQ29tcGFueSwgTHRkLgotCQkJCTI3Ni0yLCBTZW8tSHl1biBEb25nLAotCQkJCUJ1bi1EYW5nIEd1LCBTdW5nLW5hbSBDaXR5LCBLeW91bmctR2kgUHIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtNEYgICAoaGV4KQkJU3VyLUdhcmQgU2VjdXJpdHkKLTAwMDM0RiAgICAgKGJhc2UgMTYpCQlTdXItR2FyZCBTZWN1cml0eQotCQkJCTQwMSBNYWduZXRpYyBEcml2ZQotCQkJCVVuaXRzIDI0LTI4LCBEb3duc3ZpZXcKLQkJCQlPbnRhcmlvICBNM0ogM0g5Ci0JCQkJQ0FOQURBCi0KLTAwLTAzLTUwICAgKGhleCkJCUJUSUNJTk8gU1BBCi0wMDAzNTAgICAgIChiYXNlIDE2KQkJQlRJQ0lOTyBTUEEKLQkJCQlWaWEgTC4gTWFuYXJhLCA0Ci0JCQkJMjIwMzYgRXJiYSAoQ08pCi0JCQkJSVRBTFkKLQotMDAtMDMtNTEgICAoaGV4KQkJRGllYm9sZCwgSW5jLgotMDAwMzUxICAgICAoYmFzZSAxNikJCURpZWJvbGQsIEluYy4KLQkJCQk1OTk1IE1heWZhaXIgUm9hZAotCQkJCU5vcnRoIENhbnRvbiBPSCA0NDcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNTIgICAoaGV4KQkJQ29sdWJyaXMgTmV0d29ya3MKLTAwMDM1MiAgICAgKGJhc2UgMTYpCQlDb2x1YnJpcyBOZXR3b3JrcwotCQkJCTQ0MCBBcm1hbmQtRnJhcHBpZXIKLQkJCQlMYXZhbCAoUXVlYmVjKQotCQkJCUg3ViA0QjQKLQkJCQlDQU5BREEKLQotMDAtMDMtNTMgICAoaGV4KQkJTWl0YWMsIEluYy4KLTAwMDM1MyAgICAgKGJhc2UgMTYpCQlNaXRhYywgSW5jLgotCQkJCU5vLiAyLCBDaHVuZy1Ic2lhbyBTdHJlZXQKLQkJCQlDaGl0dSBLZWVsdW5nLCAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTU0ICAgKGhleCkJCUZpYmVyIExvZ2ljIENvbW11bmljYXRpb25zCi0wMDAzNTQgICAgIChiYXNlIDE2KQkJRmliZXIgTG9naWMgQ29tbXVuaWNhdGlvbnMKLQkJCQk1Ri0zLCBOby4gOSwgUHJvc3Blcml0eSBSb2FkIE9uZSwKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTU1ICAgKGhleCkJCVRlcmFCZWFtIEludGVybmV0IFN5c3RlbXMKLTAwMDM1NSAgICAgKGJhc2UgMTYpCQlUZXJhQmVhbSBJbnRlcm5ldCBTeXN0ZW1zCi0JCQkJMTQ4MzMgTkUgODd0aCBTdC4sIEJsZGcuIEMKLQkJCQlSZWRtb25kIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy01NiAgIChoZXgpCQlXaW5jb3IgTml4ZG9yZiBJbnRlcm5hdGlvbmFsIEdtYkgKLTAwMDM1NiAgICAgKGJhc2UgMTYpCQlXaW5jb3IgTml4ZG9yZiBJbnRlcm5hdGlvbmFsIEdtYkgKLQkJCQlIZWluei1OaXhkb3JmIFJpbmcgMQotCQkJCUQtMzMxMDYgUGFkZXJib3JuIAotCQkJCUdFUk1BTlkKLQotMDAtMDMtNTcgICAoaGV4KQkJSW50ZXJ2b2ljZS1Ccml0ZSwgSW5jLgotMDAwMzU3ICAgICAoYmFzZSAxNikJCUludGVydm9pY2UtQnJpdGUsIEluYy4KLQkJCQkxNzgxMSBXYXRlcnZpZXcgUGt3eS4KLQkJCQlEYWxsYXMgVFggNzUyNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTU4ICAgKGhleCkJCUhhbnlhbmcgRGlnaXRlY2ggQ28uLCBMdGQuCi0wMDAzNTggICAgIChiYXNlIDE2KQkJSGFueWFuZyBEaWdpdGVjaCBDby4sIEx0ZC4KLQkJCQkxM0YsIEFjZXR3aW50b3dlcjIsIDIxMi0zMCwgR3Vyby1Eb25nCi0JCQkJR3Vyby1HdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtNTkgICAoaGV4KQkJRGlnaXRhbFNpcwotMDAwMzU5ICAgICAoYmFzZSAxNikJCURpZ2l0YWxTaXMKLQkJCQlCLTE0MDUgU2FtaG8gQmxkZy4KLQkJCQkyNzUtNiBZYW5namFlCi0JCQkJU2VvY2hvIFNlb3VsLCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtNUEgICAoaGV4KQkJUGhvdHJvbiBMaW1pdGVkCi0wMDAzNUEgICAgIChiYXNlIDE2KQkJUGhvdHJvbiBMaW1pdGVkCi0JCQkJMS0xLTgsIEZ1amltaSwKLQkJCQlDaGl5b2RhLWt1ICAxMDItMDA3MQotCQkJCUpBUEFOCi0KLTAwLTAzLTVCICAgKGhleCkJCUJyaWRnZVdhdmUgQ29tbXVuaWNhdGlvbnMKLTAwMDM1QiAgICAgKGJhc2UgMTYpCQlCcmlkZ2VXYXZlIENvbW11bmljYXRpb25zCi0JCQkJMzM1MCBUaG9tYWQgUm9hZAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy01QyAgIChoZXgpCQlTYWludCBTb25nIENvcnAuCi0wMDAzNUMgICAgIChiYXNlIDE2KQkJU2FpbnQgU29uZyBDb3JwLgotCQkJCTRGLCBOby4gMTIsIExhbmUgOTQsIFRzYW8gVGkgV3ppCi0JCQkJU2hlbiBLZW5nIEhzaWFuZywgVGFpcGVpIEhzaWVuCi0JCQkJMjIyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy01RCAgIChoZXgpCQlCb3N1bmcgSGktTmV0IENvLiwgTHRkLgotMDAwMzVEICAgICAoYmFzZSAxNikJCUJvc3VuZyBIaS1OZXQgQ28uLCBMdGQuCi0JCQkJWW91bmdpbCBCL08gMkYsCi0JCQkJWWFuZ0phZS1kb25nIDEyLTcsIFNlb2Noby1ndSwgU2VvdWwKLQkJCQkxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTVFICAgKGhleCkJCU1ldHJvcG9saXRhbiBBcmVhIE5ldHdvcmtzLCBJbmMuCi0wMDAzNUUgICAgIChiYXNlIDE2KQkJTWV0cm9wb2xpdGFuIEFyZWEgTmV0d29ya3MsIEluYy4KLQkJCQkxMjk5IFBlbm5zeWx2YW5pYSBBdmVudWUsIE5XCi0JCQkJTmludGggRmxvb3IKLQkJCQlXYXNoaW5ndG9uIERDIDIwMDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy01RiAgIChoZXgpCQlQcnVlZnRlY2huaWsgQ29uZGl0aW9uIE1vbml0b3JpbmcgR21iSCAmIENvLiBLRwotMDAwMzVGICAgICAoYmFzZSAxNikJCVBydWVmdGVjaG5payBDb25kaXRpb24gTW9uaXRvcmluZyBHbWJIICYgQ28uIEtHCi0JCQkJRnJhbnotQmF5ZXItU3RyLiAxNAotCQkJCUQtODgyMTMgUmF2ZW5zYnVyZwotCQkJCUdFUk1BTlkKLQotMDAtMDMtNjAgICAoaGV4KQkJUEFDIEludGVyYWN0aXZlIFRlY2hub2xvZ3ksIEluYy4KLTAwMDM2MCAgICAgKGJhc2UgMTYpCQlQQUMgSW50ZXJhY3RpdmUgVGVjaG5vbG9neSwgSW5jLgotCQkJCTZGLCBOby4gMzAsIEFsbGV5IDE4LCBMYW5lIDQ3OAotCQkJCUphaSBHdWFuZyBSb2FkLCBOZWktSHUKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtNjEgICAoaGV4KQkJV2lkY29tbSwgSW5jLgotMDAwMzYxICAgICAoYmFzZSAxNikJCVdpZGNvbW0sIEluYy4KLQkJCQk5NjQ1IFNjcmFudG9uIFJvYWQKLQkJCQlTdWl0ZSAyMDUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTYyICAgKGhleCkJCVZvZHRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMzYyICAgICAoYmFzZSAxNikJCVZvZHRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTEyRiwgTm8gMTY2IENoaWVuLVlpIFJvYWQKLQkJCQlDaHVuZy1IbyBDaXR5LCBUYWlwZWkgQ291bnR5Ci0JCQkJMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy02MyAgIChoZXgpCQlNaXJhZXN5cyBDby4sIEx0ZC4KLTAwMDM2MyAgICAgKGJhc2UgMTYpCQlNaXJhZXN5cyBDby4sIEx0ZC4KLQkJCQk2NTAtMiA0IEZsLiBEYWVteXVuZyBCbGRnLgotCQkJCVl1a3NhbSwgS2FuZ25hbSwgU2VvdWwsCi0JCQkJMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy02NCAgIChoZXgpCQlTY2VuaXggU2VtaWNvbmR1Y3RvciwgSW5jLgotMDAwMzY0ICAgICAoYmFzZSAxNikJCVNjZW5peCBTZW1pY29uZHVjdG9yLCBJbmMuCi0JCQkJMTMzMCBDaGFybGVzdG9uIFJkLgotCQkJCU1vdW50YWludmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNjUgICAoaGV4KQkJS2lyYSBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb25zLCBMdGQuCi0wMDAzNjUgICAgIChiYXNlIDE2KQkJS2lyYSBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb25zLCBMdGQuCi0JCQkJNnRoIEZsLiBBbmFtIFRvd2VyLAotCQkJCTcwMi0xMCBZZW9rc2FtLWRvbmcsIEthbmduYW0ta3UsIFNlb3VsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTY2ICAgKGhleCkJCUFTTSBQYWNpZmljIFRlY2hub2xvZ3kKLTAwMDM2NiAgICAgKGJhc2UgMTYpCQlBU00gUGFjaWZpYyBUZWNobm9sb2d5Ci0JCQkJMTIvRiBXYXRzb24gQ2VudHJlCi0JCQkJMTYgS3VuZyBZaXAgU3QuCi0JCQkJS3dhaSBDaHVuZyAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTAzLTY3ICAgKGhleCkJCUphc21pbmUgTmV0d29ya3MsIEluYy4KLTAwMDM2NyAgICAgKGJhc2UgMTYpCQlKYXNtaW5lIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTk0MCBaYW5rZXIgUm9hZAotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy02OCAgIChoZXgpCQlFbWJlZG9uZSBDby4sIEx0ZC4KLTAwMDM2OCAgICAgKGJhc2UgMTYpCQlFbWJlZG9uZSBDby4sIEx0ZC4KLQkJCQlGbC4gOSBBbm5leCBTYW1od2FuIEIvRC4gMTctMjYKLQkJCQlZZW9pZG8tRG9uZywgWW91bmdkZXVuZ3BvLWt1LAotCQkJCVNlb3VsICAxNTAtMDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtNjkgICAoaGV4KQkJTmlwcG9uIEFudGVubmEgQ28uLCBMdGQuCi0wMDAzNjkgICAgIChiYXNlIDE2KQkJTmlwcG9uIEFudGVubmEgQ28uLCBMdGQuCi0JCQkJTm8uIDQ5LTgsIE5pc2hpb2d1LAotCQkJCTctQ2hvbWUgQXJha2F3YS1rdSwKLQkJCQlUb2t5byAgMTE2LTg1NjEKLQkJCQlKQVBBTgotCi0wMC0wMy02QSAgIChoZXgpCQlNYWlubmV0LCBMdGQuCi0wMDAzNkEgICAgIChiYXNlIDE2KQkJTWFpbm5ldCwgTHRkLgotCQkJCVAuTy4gQm94IDIzMjQKLQkJCQlLZmFyIFNhYmEgNDQ2NDEKLQkJCQlJU1JBRUwKLQotMDAtMDMtNkIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMzZCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTZDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDM2QyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy02RCAgIChoZXgpCQlSdW50b3AsIEluYy4KLTAwMDM2RCAgICAgKGJhc2UgMTYpCQlSdW50b3AsIEluYy4KLQkJCQkxLCBMYW5lIDIxLCBIc2luIEh1YSBSb2FkLCBLdWVpc2hhbgotCQkJCUluZHVzdHJpYWwgUGFyaywgVGFveXVhbiBDaXR5LAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtNkUgICAoaGV4KQkJTmljb24gU3lzdGVtcyAoUHR5KSBMaW1pdGVkCi0wMDAzNkUgICAgIChiYXNlIDE2KQkJTmljb24gU3lzdGVtcyAoUHR5KSBMaW1pdGVkCi0JCQkJMTEgVGVybW8gU3RyZWV0Ci0JCQkJVGVjaG5vcGFyayBTdGVsbGVuYm9zY2gsIDc2MDAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMDMtNkYgICAoaGV4KQkJVGVsc2V5IFNQQQotMDAwMzZGICAgICAoYmFzZSAxNikJCVRlbHNleSBTUEEKLQkJCQlWaWFsZSBEZWxsIEluZHVzdHJpYSwgMQotCQkJCTMxIDA1NSBRdWludG8KLQkJCQlEaVRyZXZpc28tICAKLQkJCQlJVEFMWQotCi0wMC0wMy03MCAgIChoZXgpCQlOWFRWLCBJbmMuCi0wMDAzNzAgICAgIChiYXNlIDE2KQkJTlhUViwgSW5jLgotCQkJCTU5NTUgRGUgU290byBBdmUsICMxNjAKLQkJCQlXb29kbGFuZCBIaWxscyBDQSA5MTM2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNzEgICAoaGV4KQkJQWNvbXogTmV0d29ya3MgQ29ycC4KLTAwMDM3MSAgICAgKGJhc2UgMTYpCQlBY29teiBOZXR3b3JrcyBDb3JwLgotCQkJCTd0aCBGbC4sIFdvb3Nlb2sgQmxkZy4sIDEwMDctMzcKLQkJCQlTYWRhbmcxLWRvbmcsIERvbmdqYWstZ3UsCi0JCQkJU2VvdWwgIDE1Ni0wOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy03MiAgIChoZXgpCQlVTEFOCi0wMDAzNzIgICAgIChiYXNlIDE2KQkJVUxBTgotCQkJCTVGLTMsIE5vLiAzMS0xLCBMYW5lIDE2OSwKLQkJCQlLYW5nIE5pbmcgU3QuLCBIc2ktQ2hpbiBDaXR5LCBUYWlwZWkgSHNpCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTczICAgKGhleCkJCUFzZWxzYW4gQS5TCi0wMDAzNzMgICAgIChiYXNlIDE2KQkJQXNlbHNhbiBBLlMKLQkJCQlNZWhtZXQgQWtpZiBFcnNveSBNYWguCi0JCQkJMTYgQ2FkLiBOby4gMTYgTWFjdW5rb3kvQW5rYXJhCi0JCQkJVFVSS0VZCi0JCQkJVFVSS0VZCi0KLTAwLTAzLTc0ICAgKGhleCkJCUNvbnRyb2wgTWljcm9zeXN0ZW1zCi0wMDAzNzQgICAgIChiYXNlIDE2KQkJQ29udHJvbCBNaWNyb3N5c3RlbXMKLQkJCQk0OCBTdGVhY2llIERyaXZlCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDJBOQotCQkJCUNBTkFEQQotCi0wMC0wMy03NSAgIChoZXgpCQlOZXRNZWRpYSwgSW5jLgotMDAwMzc1ICAgICAoYmFzZSAxNikJCU5ldE1lZGlhLCBJbmMuCi0JCQkJMTA5NDAgTi4gU3RhbGxhcmQgUGxhY2UKLQkJCQlUdXNjb24gQVogODU3MzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTc2ICAgKGhleCkJCUdyYXBodGVjIFRlY2hub2xvZ3ksIEluYy4KLTAwMDM3NiAgICAgKGJhc2UgMTYpCQlHcmFwaHRlYyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNDUgUGFya2VyLCBTdWl0ZSBBCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy03NyAgIChoZXgpCQlHaWdhYml0IFdpcmVsZXNzCi0wMDAzNzcgICAgIChiYXNlIDE2KQkJR2lnYWJpdCBXaXJlbGVzcwotCQkJCTMwOTkgTi4gRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTc4ICAgKGhleCkJCUhVTUFYIENvLiwgTHRkLgotMDAwMzc4ICAgICAoYmFzZSAxNikJCUhVTUFYIENvLiwgTHRkLgotCQkJCTI3MS0yLCBTdWgtaHl1bi1Eb25nLAotCQkJCUJ1bmRhbmctR3UsIFN1bmduYW0tQ2l0eSwgS3lvbmdnaS1EbywgNDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtNzkgICAoaGV4KQkJUHJvc2NlbmQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDM3OSAgICAgKGJhc2UgMTYpCQlQcm9zY2VuZCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTJGLCBOby4zNiwgSW5kdXN0cnkgRS4gUmQuIElWLAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtN0EgICAoaGV4KQkJVGFpeW8gWXVkZW4gQ28uLCBMdGQuCi0wMDAzN0EgICAgIChiYXNlIDE2KQkJVGFpeW8gWXVkZW4gQ28uLCBMdGQuCi0JCQkJOC0xIFNha2FlLUNobwotCQkJCVRha2FzYWtpLVNoaSBHdW5tYSAzNzAtODUyMgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtN0IgICAoaGV4KQkJSURFQyBJWlVNSSBDb3Jwb3JhdGlvbgotMDAwMzdCICAgICAoYmFzZSAxNikJCUlERUMgSVpVTUkgQ29ycG9yYXRpb24KLQkJCQk3LTMxLCBOaXNoaW1peWFoYXJhCi0JCQkJMS1DaG9tZSBZb2RvZ2F3YS1rdS4gT3Nha2EgNTMyLTg1NTAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAzLTdDICAgKGhleCkJCUNvYXggTWVkaWEKLTAwMDM3QyAgICAgKGJhc2UgMTYpCQlDb2F4IE1lZGlhCi0JCQkJMTIyMCBPYWsgSW5kdXN0cmlhbCBMYW5lCi0JCQkJU3VpdGUgQgotCQkJCUN1bW1pbmcgR0EgMzAwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTdEICAgKGhleCkJCVN0ZWxsY29tCi0wMDAzN0QgICAgIChiYXNlIDE2KQkJU3RlbGxjb20KLQkJCQkxMDUyNSBWaXN0YSBTb3JyZW50byBQYXJrd2F5Ci0JCQkJU3VpdGUgMTAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy03RSAgIChoZXgpCQlQT1JUZWNoIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAzN0UgICAgIChiYXNlIDE2KQkJUE9SVGVjaCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTE1MCwgU2hpYW5nLVNodW5nIE4uIFJkLiwKLQkJCQlUYWljaHVuZyBUYWl3YW4gNDAzLCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTdGICAgKGhleCkJCUF0aGVyb3MgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDM3RiAgICAgKGJhc2UgMTYpCQlBdGhlcm9zIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNTQ4MCBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtODAgICAoaGV4KQkJU1NIIENvbW11bmljYXRpb25zIFNlY3VyaXR5IENvcnAuCi0wMDAzODAgICAgIChiYXNlIDE2KQkJU1NIIENvbW11bmljYXRpb25zIFNlY3VyaXR5IENvcnAuCi0JCQkJRnJlZHJpa2lua2F0dSA0MgotCQkJCUZpbiAwMTAwIEhlbHNpbmtpCi0JCQkJRklOTEFORAotCQkJCUZJTkxBTkQKLQotMDAtMDMtODEgICAoaGV4KQkJSW5nZW5pY28gSW50ZXJuYXRpb25hbAotMDAwMzgxICAgICAoYmFzZSAxNikJCUluZ2VuaWNvIEludGVybmF0aW9uYWwKLQkJCQkxLzkgQXBvbGxvIFN0cmVldAotCQkJCVdhcnJpZXdvb2QgTlNXIDIxMDIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDMtODIgICAoaGV4KQkJQS1PbmUgQ28uLCBMdGQuCi0wMDAzODIgICAgIChiYXNlIDE2KQkJQS1PbmUgQ28uLCBMdGQuCi0JCQkJNi05LTIwLCBTaGltb2ljaGliYS1jaG8sCi0JCQkJS2FzdWdhaS1zaGksIEFpY2hpLWtlbiwgNDg2LTA4NTIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAzLTgzICAgKGhleCkJCU1ldGVyYSBOZXR3b3JrcywgSW5jLgotMDAwMzgzICAgICAoYmFzZSAxNikJCU1ldGVyYSBOZXR3b3JrcywgSW5jLgotCQkJCTEyMDIgUmljaGFyZHNvbiBEci4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy04NCAgIChoZXgpCQlBRVRBCi0wMDAzODQgICAgIChiYXNlIDE2KQkJQUVUQQotCQkJCUtlcGxlciA2Ci0JCQkJMTgtMjIgYXZlbnVlIEVkb3VhcmQgSGVycmlvdAotCQkJCUxlIFBsZXNzaXMgUm9iaW5zb24gIDkyMzUwCi0JCQkJRlJBTkNFCi0KLTAwLTAzLTg1ICAgKGhleCkJCUFjdGVsaXMgTmV0d29ya3MsIEluYy4KLTAwMDM4NSAgICAgKGJhc2UgMTYpCQlBY3RlbGlzIE5ldHdvcmtzLCBJbmMuCi0JCQkJMSBCYXplbCBTdC4sIFAuTy5CLiAxMDE3MwotCQkJCVBldGFoIC0gVGlrdmEgNDkxMDMKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDMtODYgICAoaGV4KQkJSG8gTmV0LCBJbmMuCi0wMDAzODYgICAgIChiYXNlIDE2KQkJSG8gTmV0LCBJbmMuCi0JCQkJVmVudHVyZSBDb21wYW55IENlbnRlcgotCQkJCVNhbiA5NC02IFlpdWktRG9uZywgUGFsZGFsLUd1LCBTdXdvbi1zaSwKLQkJCQlLT1JFQSA0NDItNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTg3ICAgKGhleCkJCUJsYXplIE5ldHdvcmsgUHJvZHVjdHMKLTAwMDM4NyAgICAgKGJhc2UgMTYpCQlCbGF6ZSBOZXR3b3JrIFByb2R1Y3RzCi0JCQkJNTE4MCBIYWNpZW5kYSBEcml2ZQotCQkJCUR1YmxpbiBDQSA5NDU2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtODggICAoaGV4KQkJRmFzdGZhbWUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDM4OCAgICAgKGJhc2UgMTYpCQlGYXN0ZmFtZSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTdGLCBOby4gMTExLCBIc2luZyBEZSBSZC4sCi0JCQkJU2FuY2h1bmcsIFRhaXBlaSwKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtODkgICAoaGV4KQkJUGxhbnRyb25pY3MKLTAwMDM4OSAgICAgKGJhc2UgMTYpCQlQbGFudHJvbmljcwotCQkJCTM0NSBFbmNpbmFsIFN0LgotCQkJCVNhbnRhIENydXogQ0EgOTUwNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLThBICAgKGhleCkJCUFtZXJpY2EgT25saW5lLCBJbmMuCi0wMDAzOEEgICAgIChiYXNlIDE2KQkJQW1lcmljYSBPbmxpbmUsIEluYy4KLQkJCQk0NDkwMCBQcmVudGljZSBEcml2ZQotCQkJCUR1bGxlcyBWQSAyMDE2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOEIgICAoaGV4KQkJUExVUy1PTkUgSSZULCBJbmMuCi0wMDAzOEIgICAgIChiYXNlIDE2KQkJUExVUy1PTkUgSSZULCBJbmMuCi0JCQkJN0YsIEEtU2FuIFZlbnR1cmUgVG93ZXIsCi0JCQkJWWFuZ0phZS1kb25nLCBTZW9jaG8ta3UsIFNlb3VsLAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLThDICAgKGhleCkJCVRvdGFsIEltcGFjdAotMDAwMzhDICAgICAoYmFzZSAxNikJCVRvdGFsIEltcGFjdAotCQkJCTI5NSBXaWxsaXMgQXZlLgotCQkJCVN1aXRlIEUKLQkJCQlDYW1hcmlsbG8gQ0EgOTMwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLThEICAgKGhleCkJCVBDUyBSZXZlbnVlIENvbnRyb2wgU3lzdGVtcywgSW5jLgotMDAwMzhEICAgICAoYmFzZSAxNikJCVBDUyBSZXZlbnVlIENvbnRyb2wgU3lzdGVtcywgSW5jLgotCQkJCTU2MCBTeWx2YW4gQXZlLgotCQkJCUVuZ2xld29vZCBDbGlmZnMgTkogMDc2MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLThFICAgKGhleCkJCUF0b2dhIFN5c3RlbXMsIEluYy4KLTAwMDM4RSAgICAgKGJhc2UgMTYpCQlBdG9nYSBTeXN0ZW1zLCBJbmMuCi0JCQkJNDkwMjYgTWlsbW9udCBEcml2ZQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLThGICAgKGhleCkJCVdlaW5zY2hlbCBDb3Jwb3JhdGlvbgotMDAwMzhGICAgICAoYmFzZSAxNikJCVdlaW5zY2hlbCBDb3Jwb3JhdGlvbgotCQkJCTUzMDUgU3BlY3RydW0gRHJpdmUKLQkJCQlGcmVkZXJpY2sgTUQgMjE3MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTkwICAgKGhleCkJCURpZ2l0YWwgVmlkZW8gQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDM5MCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFZpZGVvIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNTAwIFcuIEN1bW1pbmdzIFBhcmsKLQkJCQlTdWl0ZSAyMDAwCi0JCQkJV29idXJuIE1BIDA3ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy05MSAgIChoZXgpCQlBZHZhbmNlZCBEaWdpdGFsIEJyb2FkY2FzdCwgTHRkLgotMDAwMzkxICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIERpZ2l0YWwgQnJvYWRjYXN0LCBMdGQuCi0JCQkJOEYsIDE0NSBDaHVuZyBTaGFuIE4uIFJkLiBTZWMuIDIsCi0JCQkJVGFpcGVpLCAxMDQsCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTkyICAgKGhleCkJCUh5dW5kYWkgVGVsZXRlayBDby4sIEx0ZC4KLTAwMDM5MiAgICAgKGJhc2UgMTYpCQlIeXVuZGFpIFRlbGV0ZWsgQ28uLCBMdGQuCi0JCQkJQi01MDEsIFRlY2hubyBQYXJrLCAxNDggWWF0YXAtZG9uZywKLQkJCQlCb29uZGFuZy1ndSwgU3VuZ25hbS1zaSwgS3l1bmdnaS1kbywgNDYzCi0JCQkJS09SRUEgUmVwdWJsaWMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtOTMgICAoaGV4KQkJQXBwbGUgQ29tcHV0ZXIsIEluYy4KLTAwMDM5MyAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlciwgSW5jLgotCQkJCTIwNjUwIFZhbGxleSBHcmVlbiBEci4KLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTk0ICAgKGhleCkJCUNvbm5lY3QgT25lCi0wMDAzOTQgICAgIChiYXNlIDE2KQkJQ29ubmVjdCBPbmUKLQkJCQkyIEhhbmFnYXIgU3RyZWV0Ci0JCQkJS2ZhciBTYWJhIDQ0NDI1Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAzLTk1ICAgKGhleCkJCUNhbGlmb3JuaWEgQW1wbGlmaWVyCi0wMDAzOTUgICAgIChiYXNlIDE2KQkJQ2FsaWZvcm5pYSBBbXBsaWZpZXIKLQkJCQk0NjAgQ2FsbGUgU2FuIFBhYmxvCi0JCQkJQ2FtYXJpbGxvIENBIDkzMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy05NiAgIChoZXgpCQlFWiBDYXN0IENvLiwgTHRkLgotMDAwMzk2ICAgICAoYmFzZSAxNikJCUVaIENhc3QgQ28uLCBMdGQuCi0JCQkJNnRoIEZsb29yLCBKdW5nQW5nIEJ1aWxkaW5nLAotCQkJCTk5LTEsIE5vbmh5dW4tRG9uZyAoMTM1LTAxMCkgS2FuZ25hbS1rdSwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy05NyAgIChoZXgpCQlXYXRjaGZyb250IExpbWl0ZWQKLTAwMDM5NyAgICAgKGJhc2UgMTYpCQlXYXRjaGZyb250IExpbWl0ZWQKLQkJCQkzIFZpY3RvcmlhIFdhbGsKLQkJCQlXb2tpbmdoYW0gIFJHNDAgNVlMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDMtOTggICAoaGV4KQkJV0lTSQotMDAwMzk4ICAgICAoYmFzZSAxNikJCVdJU0kKLQkJCQlXaWxoZWxtLVNpaG4tU3RyLiA1LTcKLQkJCQlELTc1MjIzIE5pZWZlcm4tT2VzY2hlbGJyb25uIAotCQkJCUdFUk1BTlkKLQotMDAtMDMtOTkgICAoaGV4KQkJRG9uZ2p1IEluZm9ybWF0aW9ucyAmIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDAwMzk5ICAgICAoYmFzZSAxNikJCURvbmdqdSBJbmZvcm1hdGlvbnMgJiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQkjMzA1LCBFdW5zdWsgQmxkZy4gU2Ftc3VuZy1kb25nCi0JCQkJS2FuZ25hbS1ndSBTZW91bAotCQkJCVJlcHVibGljIG9mIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTlBICAgKGhleCkJCVNpQ29ubmVjdAotMDAwMzlBICAgICAoYmFzZSAxNikJCVNpQ29ubmVjdAotCQkJCURlbHRhIDEwMAotCQkJCVdlbHRvbiBSb2FkCi0JCQkJU3dpbmRvbiAgU041IDdYUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAzLTlCICAgKGhleCkJCU5ldENoaXAgVGVjaG5vbG9neSwgSW5jLgotMDAwMzlCICAgICAoYmFzZSAxNikJCU5ldENoaXAgVGVjaG5vbG9neSwgSW5jLgotCQkJCTMzNSBQaW9uZWVyIFdheQotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTlDICAgKGhleCkJCU9wdGlNaWdodCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMzlDICAgICAoYmFzZSAxNikJCU9wdGlNaWdodCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTk4MCBMaW5kYSBWaXN0YSBBdmVudWUKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy05RCAgIChoZXgpCQlRaXNkYSBDb3Jwb3JhdGlvbgotMDAwMzlEICAgICAoYmFzZSAxNikJCVFpc2RhIENvcnBvcmF0aW9uCi0JCQkJMTU3IFNoYW4gWWluZyBSb2FkCi0JCQkJR3VlaVNoYW4gVGFveXVhbiAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTlFICAgKGhleCkJCVRlcmEgU3lzdGVtIENvLiwgTHRkLgotMDAwMzlFICAgICAoYmFzZSAxNikJCVRlcmEgU3lzdGVtIENvLiwgTHRkLgotCQkJCURvb3N1bmcgQi9GIFJtIDMwMgotCQkJCTc2Ni0xIFNoaW5jaHVuZ2RvbmcgU2hpaHVuZyBDaXR5IEt5dW5na2kKLQkJCQlSZXB1YmxpYyBvZiBLb3JlYQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy05RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzOUYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQTAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwM0EwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUExICAgKGhleCkJCUhJUEVSIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbiwgSW5jLgotMDAwM0ExICAgICAoYmFzZSAxNikJCUhJUEVSIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbiwgSW5jLgotCQkJCTE2NzUtNywgU2luaWwtZG9uZywKLQkJCQlUYWVkdWstZ3UsIFRhZWpvbiwKLQkJCQkzMDYtMjMwIFNvdXRoIEtvcmVhCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLUEyICAgKGhleCkJCUNhdGFwdWx0IENvbW11bmljYXRpb25zCi0wMDAzQTIgICAgIChiYXNlIDE2KQkJQ2F0YXB1bHQgQ29tbXVuaWNhdGlvbnMKLQkJCQkxNjAgUy4gV2hpc21hbiBSZC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BMyAgIChoZXgpCQlNQVZJWCwgTHRkLgotMDAwM0EzICAgICAoYmFzZSAxNikJCU1BVklYLCBMdGQuCi0JCQkJUE9CIDIxNywgWW9rbmVhbSBJbGxpdCwKLQkJCQkyMDY5MgotCQkJCUlTUkFFTAotCi0wMC0wMy1BNCAgIChoZXgpCQlJbWF0aW9uIENvcnAuCi0wMDAzQTQgICAgIChiYXNlIDE2KQkJSW1hdGlvbiBDb3JwLgotCQkJCTEgSW1hdGlvbiBQbGFjZQotCQkJCURpc2NvdmVyeSAyQi01MAotCQkJCU9ha2RhbGUgTU4gNTUxMjgtMzQxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQTUgICAoaGV4KQkJTWVkZWEgQ29ycG9yYXRpb24KLTAwMDNBNSAgICAgKGJhc2UgMTYpCQlNZWRlYSBDb3Jwb3JhdGlvbgotCQkJCTU3MDEgTGluZGVybyBDYW55b24gUmQuCi0JCQkJQmxkZy4gMy0xMDAKLQkJCQlXZXRsYWtlIFZpbGxhZ2UgQ0EgOTEzNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUE2ICAgKGhleCkJCVRyYXhpdCBUZWNobm9sb2d5LCBJbmMuCi0wMDAzQTYgICAgIChiYXNlIDE2KQkJVHJheGl0IFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyNTYgR3JlYXQgUm9hZCwKLQkJCQlTdWl0ZSAxNgotCQkJCUxpdHRsZXRvbiBNQSAwMTQ2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQTcgICAoaGV4KQkJVW5peHRhciBUZWNobm9sb2d5LCBJbmMuCi0wMDAzQTcgICAgIChiYXNlIDE2KQkJVW5peHRhciBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTNGIE5vLiAxMDAgTWluZyBDaHVhbiBSb2FkCi0JCQkJSHNpbiBUaWVuLCBUYWlwZWksCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy1BOCAgIChoZXgpCQlJRE9UIENvbXB1dGVycywgSW5jLgotMDAwM0E4ICAgICAoYmFzZSAxNikJCUlET1QgQ29tcHV0ZXJzLCBJbmMuCi0JCQkJM0YuLCBOby4gMTM3LCBMYW5lIDIzNQotCQkJCVBhby1DaGlhbyBSb2FkLCBIc2luLVRpZW4gVGFpcGVpIENvdW50cnkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtQTkgICAoaGV4KQkJQVhDRU5UIE1lZGlhIEFHCi0wMDAzQTkgICAgIChiYXNlIDE2KQkJQVhDRU5UIE1lZGlhIEFHCi0JCQkJVGVjaG5vbG9naWVwYXJrIDEzCi0JCQkJMzMxMDAgUGFkZXJib3JuCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDMtQUEgICAoaGV4KQkJV2F0bG93Ci0wMDAzQUEgICAgIChiYXNlIDE2KQkJV2F0bG93Ci0JCQkJMTI0MSBCdW5keSBCbHZkLgotCQkJCVdpbm9uYSBNTiA1NTk4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQUIgICAoaGV4KQkJQnJpZGdlIEluZm9ybWF0aW9uIFN5c3RlbXMKLTAwMDNBQiAgICAgKGJhc2UgMTYpCQlCcmlkZ2UgSW5mb3JtYXRpb24gU3lzdGVtcwotCQkJCTcxNyBPZmZpY2UgUGFya3dheQotCQkJCVN0LiBMb3VpcyBNTyA2MzE0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQUMgICAoaGV4KQkJRnJvbml1cyBTY2h3ZWlzc21hc2NoaW5lbgotMDAwM0FDICAgICAoYmFzZSAxNikJCUZyb25pdXMgU2Nod2Vpc3NtYXNjaGluZW4KLQkJCQlHdWVudGVyIEZyb25pdXMgU3RyLiAxCi0JCQkJQS00NjAwIFdlaXMtVGhhbGhlaW0KLQkJCQlBVVNUUklBCi0JCQkJQVVTVFJJQQotCi0wMC0wMy1BRCAgIChoZXgpCQlFbWVyc29uIEVuZXJneSBTeXN0ZW1zIEFCCi0wMDAzQUQgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBFbmVyZ3kgU3lzdGVtcyBBQgotCQkJCVNFLTE0MSA4MiBTdG9ja2hvbG0KLQkJCQlTV0VERU4KLQotMDAtMDMtQUUgICAoaGV4KQkJQWxsaWVkIEFkdmFuY2VkIE1hbnVmYWN0dXJpbmcgUHRlLCBMdGQuCi0wMDAzQUUgICAgIChiYXNlIDE2KQkJQWxsaWVkIEFkdmFuY2VkIE1hbnVmYWN0dXJpbmcgUHRlLCBMdGQuCi0JCQkJNyBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIFBhcmsKLQkJCQkjMDItMDAKLQkJCQlTaW5nYXBvcmUgNjA5OTE5Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTAzLUFGICAgKGhleCkJCVBhcmFnZWEgQ29tbXVuaWNhdGlvbnMKLTAwMDNBRiAgICAgKGJhc2UgMTYpCQlQYXJhZ2VhIENvbW11bmljYXRpb25zCi0JCQkJMjA3IFBlcnJ5IFBhcmt3YXkKLQkJCQlHYWl0aGVyc2J1cmcgTUQgMjA4NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUIwICAgKGhleCkJCVhzZW5zZSBUZWNobm9sb2d5IENvcnAuCi0wMDAzQjAgICAgIChiYXNlIDE2KQkJWHNlbnNlIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkxMSBGLCAyMzIsIFNlYy4gMywgQ2hlbmdUZWggUmQuCi0JCQkJVGFpcGVpIFRBSVdBTiwgMTAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy1CMSAgIChoZXgpCQlIb3NwaXJhIEluYy4KLTAwMDNCMSAgICAgKGJhc2UgMTYpCQlIb3NwaXJhIEluYy4KLQkJCQk3NTUgSmFydmlzIERyaXZlCi0JCQkJTW9yZ2FuIEhpbGwgQ0EgOTUwMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUIyICAgKGhleCkJCVJhZHdhcmUKLTAwMDNCMiAgICAgKGJhc2UgMTYpCQlSYWR3YXJlCi0JCQkJOCBIYW1ycGUgSG9jaHZpbQotCQkJCUplcnVzYWxlbQotCQkJCUlTUkFFTAotCi0wMC0wMy1CMyAgIChoZXgpCQlJQSBMaW5rIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDAzQjMgICAgIChiYXNlIDE2KQkJSUEgTGluayBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTZGLTQsIE5vLiA4MSBIc2luIFRhaQotCQkJCVd1IFJkLiwgU2VjLiAxIEhzaWgtQ2hpaCwgVGFpcGVpIEhzaWVuLAotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy1CNCAgIChoZXgpCQlNYWNyb3RlayBJbnRlcm5hdGlvbmFsIENvcnAuCi0wMDAzQjQgICAgIChiYXNlIDE2KQkJTWFjcm90ZWsgSW50ZXJuYXRpb25hbCBDb3JwLgotCQkJCTJGLCBOby4gMjgsIExhbmUgNDYKLQkJCQlLd2FuZyBGdSA2IFJvYWQsCi0JCQkJVGFpcGVpIFRhaXBlaSBUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUI1ICAgKGhleCkJCUVudHJhIFRlY2hub2xvZ3kgQ28uCi0wMDAzQjUgICAgIChiYXNlIDE2KQkJRW50cmEgVGVjaG5vbG9neSBDby4KLQkJCQlGbC4gMywgTm8uIDUsIEFsbGV5IDIsCi0JCQkJU3UtV2VpIExhbmUsIENodW5nLUNoZW5nIFJkLiwgSHNpbi1EaWVuLAotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy1CNiAgIChoZXgpCQlRU0kgQ29ycG9yYXRpb24KLTAwMDNCNiAgICAgKGJhc2UgMTYpCQlRU0kgQ29ycG9yYXRpb24KLQkJCQkyMjEyIFNvdXRoIFdlc3QgVGVtcGxlICM1MAotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1CNyAgIChoZXgpCQlaQUNDRVNTIFN5c3RlbXMKLTAwMDNCNyAgICAgKGJhc2UgMTYpCQlaQUNDRVNTIFN5c3RlbXMKLQkJCQkyNzUgU2hvcmVsaW5lIERyaXZlLCAjMTEwCi0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1COCAgIChoZXgpCQlOZXRLaXQgU29sdXRpb25zLCBMTEMKLTAwMDNCOCAgICAgKGJhc2UgMTYpCQlOZXRLaXQgU29sdXRpb25zLCBMTEMKLQkJCQkxMTI1LUEgQnVzaW5lc3MgQ2VudGVyIENpcmNsZQotCQkJCVRob3VzYW5kIE9ha3MgQ0EgOTEzMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUI5ICAgKGhleCkJCUh1YWxvbmcgVGVsZWNvbSBDby4sIEx0ZC4KLTAwMDNCOSAgICAgKGJhc2UgMTYpCQlIdWFsb25nIFRlbGVjb20gQ28uLCBMdGQuCi0JCQkJOSBHdWFuZ2h1YSBTdC4KLQkJCQlDaGFuZ3pob3UsIEppYW5nc3UsIDIxMzAwMwotCQkJCVAuUi4gQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0wMy1CQSAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMDNCQSAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQkIgICAoaGV4KQkJU2lnbmFsIENvbW11bmljYXRpb25zIExpbWl0ZWQKLTAwMDNCQiAgICAgKGJhc2UgMTYpCQlTaWduYWwgQ29tbXVuaWNhdGlvbnMgTGltaXRlZAotCQkJCVVuaXQgMjE3LCAyL0YsIEhLSVRDLAotCQkJCTcyIFRhdCBDaGVlIEF2ZW51ZSwgS0xOLiwKLQkJCQlIT05HIEtPTkcKLQkJCQlIT05HIEtPTkcKLQotMDAtMDMtQkMgICAoaGV4KQkJQ09UIEdtYkgKLTAwMDNCQyAgICAgKGJhc2UgMTYpCQlDT1QgR21iSAotCQkJCUd1ZXRlcnN0cmFzc2UgNQotCQkJCTY0ODA3IERpZWJ1cmcKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMy1CRCAgIChoZXgpCQlPbW5pQ2x1c3RlciBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDNCRCAgICAgKGJhc2UgMTYpCQlPbW5pQ2x1c3RlciBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk0OTUwIEJsdWUgTGFrZSBEcml2ZQotCQkJCVN1aXRlIDkwMAotCQkJCUJvY2EgUmF0b24gRkwgMzM0MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUJFICAgKGhleCkJCU5ldGlsaXR5Ci0wMDAzQkUgICAgIChiYXNlIDE2KQkJTmV0aWxpdHkKLQkJCQkyOTggU291dGggU3Vubnl2YWxlIEF2ZS4KLQkJCQlTdWllIDEwMgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQkYgICAoaGV4KQkJQ2VudGVycG9pbnQgQnJvYWRiYW5kIFRlY2hub2xvZ2llcywgSW5jLgotMDAwM0JGICAgICAoYmFzZSAxNikJCUNlbnRlcnBvaW50IEJyb2FkYmFuZCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNzQxIFRlY2hub2xvZ3kgRHJpdmUsCi0JCQkJU3VpdGUgNDAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAtMTMxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQzAgICAoaGV4KQkJUkZUTkMgQ28uLCBMdGQuCi0wMDAzQzAgICAgIChiYXNlIDE2KQkJUkZUTkMgQ28uLCBMdGQuCi0JCQkJM0YsIDE2MjQtMjQsIEJvbmdjaGVuLWRvbmcKLQkJCQlLaW9uYWstZ3UsIFNlb3VsCi0JCQkJU09VVEggS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtQzEgICAoaGV4KQkJUGFja2V0IER5bmFtaWNzIEx0ZAotMDAwM0MxICAgICAoYmFzZSAxNikJCVBhY2tldCBEeW5hbWljcyBMdGQKLQkJCQkyIEJ1Y2tzdGFuZSBQYXJrCi0JCQkJRWRpbmJ1cmdoLCBTY290bGFuZAotCQkJCVVLIEVIMTAgR1BBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDMtQzIgICAoaGV4KQkJU29scGhvbmUgSy5LLgotMDAwM0MyICAgICAoYmFzZSAxNikJCVNvbHBob25lIEsuSy4KLQkJCQkyLTExLTEgS2FuZGF0c3VrYXNhLWNobwotCQkJCUNoaXlhZGEsIFRva3lvCi0JCQkJMTAxLTAwNDggSmFwYW4KLQkJCQlKQVBBTgotCi0wMC0wMy1DMyAgIChoZXgpCQlNaWNyb25payBNdWx0aW1lZGlhCi0wMDAzQzMgICAgIChiYXNlIDE2KQkJTWljcm9uaWsgTXVsdGltZWRpYQotCQkJCUJydWVja2Vuc3RyLiAyCi0JCQkJRC01MTM3OSBMZXZlcmt1c2VuCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDMtQzQgICAoaGV4KQkJVG9tcmEgU3lzdGVtcyBBU0EKLTAwMDNDNCAgICAgKGJhc2UgMTYpCQlUb21yYSBTeXN0ZW1zIEFTQQotCQkJCURyZW5nc3J1ZGhhZ2VuIDIKLQkJCQlCb3ggMjc4IE4tMTM3MSBBc2tlcgotCQkJCU5PUldBWQotCQkJCU5PUldBWQotCi0wMC0wMy1DNSAgIChoZXgpCQlNb2JvdGl4IEFHCi0wMDAzQzUgICAgIChiYXNlIDE2KQkJTW9ib3RpeCBBRwotCQkJCVdpbmdlcnRzd2VpbGVyaG9mIDYKLQkJCQlELTY3NzI0IEhvcmluZ2VuCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDMtQzYgICAoaGV4KQkJSUNVRSBTeXN0ZW1zLCBJbmMuCi0wMDAzQzYgICAgIChiYXNlIDE2KQkJSUNVRSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0ODkgR2FsZSBBdmVudWUKLQkJCQlDaXR5IG9mIEluZHVzdHJ5IENBIDkxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1DNyAgIChoZXgpCQlob3BmIEVsZWt0cm9uaWsgR21iSAotMDAwM0M3ICAgICAoYmFzZSAxNikJCWhvcGYgRWxla3Ryb25payBHbWJICi0JCQkJTm90dGVib2htc3RyYXNzZSA0MQotCQkJCTU4NTExIEx1ZWRlbnNjaGVpZCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLUM4ICAgKGhleCkJCUNNTCBFbWVyZ2VuY3kgU2VydmljZXMKLTAwMDNDOCAgICAgKGJhc2UgMTYpCQlDTUwgRW1lcmdlbmN5IFNlcnZpY2VzCi0JCQkJNzUgQm91bGV2YXJkIGxhIFRlY2hub2xvZ2llcwotCQkJCUh1bGwsIFF1ZWJlYyBKRTIzRzQKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDMtQzkgICAoaGV4KQkJVEVDT00gQ28uLCBMdGQuCi0wMDAzQzkgICAgIChiYXNlIDE2KQkJVEVDT00gQ28uLCBMdGQuCi0JCQkJMjMsIFImRCBSb2FkIDIKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW4tQ2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUNBICAgKGhleCkJCU1UUyBTeXN0ZW1zIENvcnAuCi0wMDAzQ0EgICAgIChiYXNlIDE2KQkJTVRTIFN5c3RlbXMgQ29ycC4KLQkJCQkzMDAxIFNoZWxkb24gRHJpdmUKLQkJCQlDYXJ5LCBOQyAyNzUxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQ0IgICAoaGV4KQkJTmlwcG9uIFN5c3RlbXMgRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi0wMDAzQ0IgICAgIChiYXNlIDE2KQkJTmlwcG9uIFN5c3RlbXMgRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi0JCQkJMzAtMTIsIEtvbXlvLWNobywKLQkJCQlUYWthcmFidWthLWNpdHksIEh5b2dvLAotCQkJCTY2NS0wMDQ1IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtQ0MgICAoaGV4KQkJTW9tZW50dW0gQ29tcHV0ZXIsIEluYy4KLTAwMDNDQyAgICAgKGJhc2UgMTYpCQlNb21lbnR1bSBDb21wdXRlciwgSW5jLgotCQkJCTE4MTUgQXN0b24gQXZlbnVlCi0JCQkJU3VpdGUgMTA3Ci0JCQkJQ2FybHNiYWQgQ0EgOTIwMDgtNzMxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQ0QgICAoaGV4KQkJQ2xvdmVydGVjaCwgSW5jLgotMDAwM0NEICAgICAoYmFzZSAxNikJCUNsb3ZlcnRlY2gsIEluYy4KLQkJCQkzLTEtNSBOYWthLWNobyBNdXNhc2hpbm8tc2hpCi0JCQkJVG9reW8gMTgwLTAwMDYgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMy1DRSAgIChoZXgpCQlFVEVOIFRlY2hub2xvZ2llcywgSW5jLgotMDAwM0NFICAgICAoYmFzZSAxNikJCUVURU4gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMkYsIE5vLiA5LCBMYW5lIDIzNSwgUGFvLUNoaWFvIFJkLiwKLQkJCQlIc2llbiBUaWVuIENpdHksIFRhaXBlaSBIc2llbiAyMzEKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtQ0YgICAoaGV4KQkJTXV4Y29tLCBJbmMuCi0wMDAzQ0YgICAgIChiYXNlIDE2KQkJTXV4Y29tLCBJbmMuCi0JCQkJRCA2MDIsIEJ1bmRhbmcgVGVjaG5vcGFyayAjMTUxCi0JCQkJWWF0YXAgRG9uZywgQnVuZGFnIEd1LCBTdW5nbmFtIFNpLAotCQkJCUt5dW5na2kgRG8gS09SRUEgNDYzLTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy1EMCAgIChoZXgpCQlLT0FOS0VJU08gQ28uLCBMdGQuCi0wMDAzRDAgICAgIChiYXNlIDE2KQkJS09BTktFSVNPIENvLiwgTHRkLgotCQkJCVppcCBDb2RlIDc5MS04MDQyCi0JCQkJMjc5OCAzNm1pbmFtaXlvc2hpZGEtTWF0aSBNYXR1eWFtYS1DaXR5Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMy1EMSAgIChoZXgpCQlUYWtheWEgQ29ycG9yYXRpb24KLTAwMDNEMSAgICAgKGJhc2UgMTYpCQlUYWtheWEgQ29ycG9yYXRpb24KLQkJCQlEZXZlbG9wbWVudCBEaXZpc2lvbgotCQkJCTY2MS0xLCBJYmFyYS1jaG8gSWJhcmEtQ2l0eSBPa2F5YW1hLCA3MTUKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAzLUQyICAgKGhleCkJCUNyb3NzYmVhbSBTeXN0ZW1zLCBJbmMuCi0wMDAzRDIgICAgIChiYXNlIDE2KQkJQ3Jvc3NiZWFtIFN5c3RlbXMsIEluYy4KLQkJCQk4MCBDZW50cmFsIFN0cmVldAotCQkJCUJveGJvcm91Z2ggTUEgMDE3MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUQzICAgKGhleCkJCUludGVybmV0IEVuZXJneSBTeXN0ZW1zLCBJbmMuCi0wMDAzRDMgICAgIChiYXNlIDE2KQkJSW50ZXJuZXQgRW5lcmd5IFN5c3RlbXMsIEluYy4KLQkJCQk0MjE4IFRydW1ibyBDdC4KLQkJCQlGYWlyZmF4IFZBIDIyMDMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1ENCAgIChoZXgpCQlBbGxvcHRpYywgSW5jLgotMDAwM0Q0ICAgICAoYmFzZSAxNikJCUFsbG9wdGljLCBJbmMuCi0JCQkJNjk2MCBLb2xsIENlbnRlciBQYXJrd2F5Ci0JCQkJU3VpdGUgMzAwCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRDUgICAoaGV4KQkJQWR2YW5jZWQgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDAzRDUgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJMTYtMTYgVGFrYXNoaW1hLWhvbmNobywKLQkJCQlOdW1henUgU2hpenVva2EsCi0JCQkJNDEwMDA1NSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAzLUQ2ICAgKGhleCkJCVJBRFZpc2lvbiwgTHRkLgotMDAwM0Q2ICAgICAoYmFzZSAxNikJCVJBRFZpc2lvbiwgTHRkLgotCQkJCTI0IFJhdWwgV2FsbGVuYmVyZyBTdC4KLQkJCQlUZWwtQXZpdiA2OTcxOQotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wMy1ENyAgIChoZXgpCQlOZXh0TmV0IFdpcmVsZXNzLCBJbmMuCi0wMDAzRDcgICAgIChiYXNlIDE2KQkJTmV4dE5ldCBXaXJlbGVzcywgSW5jLgotCQkJCTk1NTUgSmFtZXMgQXZlLiBTby4KLQkJCQlTdWl0ZSAyNzAKLQkJCQlCbG9vbWluZ3RvbiBNTiA1NTQzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRDggICAoaGV4KQkJaU1QYXRoIE5ldHdvcmtzLCBJbmMuCi0wMDAzRDggICAgIChiYXNlIDE2KQkJaU1QYXRoIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTQzMSBNZXJpdmFsZSBSZC4KLQkJCQlOZXBlYW4sIE9udGFyaW8sCi0JCQkJQ0FOQURBIEsyRSAxQjkKLQkJCQlDQU5BREEKLQotMDAtMDMtRDkgICAoaGV4KQkJU2VjaGVyb24gU0EKLTAwMDNEOSAgICAgKGJhc2UgMTYpCQlTZWNoZXJvbiBTQQotCQkJCVVudGVybWF0dHdlZyA4Ci0JCQkJQ2gtMzAyNyBCZXJuCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wMy1EQSAgIChoZXgpCQlUYWthbWlzYXdhIEN5YmVybmV0aWNzIENvLiwgTHRkLgotMDAwM0RBICAgICAoYmFzZSAxNikJCVRha2FtaXNhd2EgQ3liZXJuZXRpY3MgQ28uLCBMdGQuCi0JCQkJTmFrYW5vIEhlaXdhIEJsZGcuCi0JCQkJNDggNS0yLUNob21lIENodW8sIE5ha2Fuby1rdSBUb2t5byAxNjQtMAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtREIgICAoaGV4KQkJQXBvZ2VlIEVsZWN0cm9uaWNzIENvcnAuCi0wMDAzREIgICAgIChiYXNlIDE2KQkJQXBvZ2VlIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJMzE0NSBEb25hbGQgRG91Z2xhcyBMb29wIFNvdXRoCi0JCQkJU2FudGEgTW9uaWNhIENBIDkwNDA1LTMyMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLURDICAgKGhleCkJCUxleGFyIE1lZGlhLCBJbmMuCi0wMDAzREMgICAgIChiYXNlIDE2KQkJTGV4YXIgTWVkaWEsIEluYy4KLQkJCQk0NzQyMSBCYXlzaWRlIFBhcmt3YXkKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1ERCAgIChoZXgpCQlDb21hcmsgQ29ycC4KLTAwMDNERCAgICAgKGJhc2UgMTYpCQlDb21hcmsgQ29ycC4KLQkJCQk5MyBXZXN0IFN0LgotCQkJCU1lZGZpZWxkIE1BIDAyMDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1ERSAgIChoZXgpCQlPVEMgV2lyZWxlc3MKLTAwMDNERSAgICAgKGJhc2UgMTYpCQlPVEMgV2lyZWxlc3MKLQkJCQk2MDIgQ2hhcmxvdCBBdmUuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLURGICAgKGhleCkJCURlc2FuYSBTeXN0ZW1zCi0wMDAzREYgICAgIChiYXNlIDE2KQkJRGVzYW5hIFN5c3RlbXMKLQkJCQkxODA1IE1jQ2FuZGxlc3MgQXZlLgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1FMCAgIChoZXgpCQlNb3Rvcm9sYSwgSW5jLgotMDAwM0UwICAgICAoYmFzZSAxNikJCU1vdG9yb2xhLCBJbmMuCi0JCQkJMTMwMSBFLiBBbGdvbnF1aW4gUmQuCi0JCQkJU2NoYXVtYnVyZyBJTCA2MDE5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRTEgICAoaGV4KQkJV2lubWF0ZSBDb21tdW5pY2F0aW9uLCBJbmMuCi0wMDAzRTEgICAgIChiYXNlIDE2KQkJV2lubWF0ZSBDb21tdW5pY2F0aW9uLCBJbmMuCi0JCQkJOUYsTm8uMTExLTYsU2hpbmctRGUgUmQKLQkJCQlTYW4tQ2h1bmcsCi0JCQkJVGFpcGVpICAgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy1FMiAgIChoZXgpCQlDb21zcGFjZSBDb3Jwb3JhdGlvbgotMDAwM0UyICAgICAoYmFzZSAxNikJCUNvbXNwYWNlIENvcnBvcmF0aW9uCi0JCQkJOTU1IEZyZWVwb3J0IFBrd3kKLQkJCQlTdWl0ZSAxMDAKLQkJCQlDb3BwZWxsIFRYIDc1MDE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1FMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzRTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRTQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwM0U0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUU1ICAgKGhleCkJCUhlcm1zdGVkdCBTRwotMDAwM0U1ICAgICAoYmFzZSAxNikJCUhlcm1zdGVkdCBTRwotCQkJCUNhcmwtUmV1dGhlciAtIFN0ci4gMwotCQkJCUQtNjgzMDUgTWFubmhlaW0KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMy1FNiAgIChoZXgpCQlFbnRvbmUsIEluYy4KLTAwMDNFNiAgICAgKGJhc2UgMTYpCQlFbnRvbmUsIEluYy4KLQkJCQkyNzU1IENhbXB1cyBEciBTdGUgMjM1Ci0JCQkJU2FuIE1hdGVvIENBICA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRTcgICAoaGV4KQkJTG9nb3N0ZWsgQ28uIEx0ZC4KLTAwMDNFNyAgICAgKGJhc2UgMTYpCQlMb2dvc3RlayBDby4gTHRkLgotCQkJCTE5dGggMTUgU3VudXN1LUFjYWRlbXkgVG93ZXIKLQkJCQkyNzctMTcgU3VuZ3N1LTJnYSwgU3VuZ2RvbmctZ3UKLQkJCQlTZW91bCBLT1JFQSAxMzMtMTIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLUU4ICAgKGhleCkJCVdhdmVsZW5ndGggRGlnaXRhbCBMaW1pdGVkCi0wMDAzRTggICAgIChiYXNlIDE2KQkJV2F2ZWxlbmd0aCBEaWdpdGFsIExpbWl0ZWQKLQkJCQkxMiBWaW5jZW50IEF2ZW51ZQotCQkJCUNyb3duaGlsbCBCdXNpbmVzcyBQYXJrIE1pbHRvbiBLZXluZXMsIEIKLQkJCQlNSzggMEFCIE1LOCAwQUIgRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAzLUU5ICAgKGhleCkJCUFrYXJhIENhbmFkYSwgSW5jLgotMDAwM0U5ICAgICAoYmFzZSAxNikJCUFrYXJhIENhbmFkYSwgSW5jLgotCQkJCTE1MCBLYXRpbWF2aWsgUm9hZAotCQkJCUthbmF0YSBPbnRhcmlvCi0JCQkJQ0FOQURBIEsyTCAyTjIKLQkJCQlDQU5BREEKLQotMDAtMDMtRUEgICAoaGV4KQkJTWVnYSBTeXN0ZW0gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDAzRUEgICAgIChiYXNlIDE2KQkJTWVnYSBTeXN0ZW0gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMkYsIE5vLiA0MSwgTGFuZSA3NiwKLQkJCQlSdWkgS3VhbmcgUmQuLCBOZWkgSHUgMTE0Ci0JCQkJVGFpcGVpIFRhaXBlaSBUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUVCICAgKGhleCkJCUF0cmljYQotMDAwM0VCICAgICAoYmFzZSAxNikJCUF0cmljYQotCQkJCTUgU2hlbmthciBTdC4gUC5PLkIuIDEyMjMxCi0JCQkJSGV6ZWxpYSBJbmR1c3RyaWFsIEFyZWEKLQkJCQk0NjczMyA0NjczMyBJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDMtRUMgICAoaGV4KQkJSUNHIFJlc2VhcmNoLCBJbmMuCi0wMDAzRUMgICAgIChiYXNlIDE2KQkJSUNHIFJlc2VhcmNoLCBJbmMuCi0JCQkJNzc1IEIgVGhlIFF1ZWVucyBXYXkKLQkJCQlUb3JvbnRvLCBPbnRhcmlvCi0JCQkJTThaIDFOMSBDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDMtRUQgICAoaGV4KQkJU2hpbmthd2EgRWxlY3RyaWMgQ28uLCBMdGQuCi0wMDAzRUQgICAgIChiYXNlIDE2KQkJU2hpbmthd2EgRWxlY3RyaWMgQ28uLCBMdGQuCi0JCQkJMy0yLTI0IDMgY2hvbWUKLQkJCQlLb25hbiBOYWtha3UgSGlyb3NoaW1hLCA3MzAtMDgyNSwKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAzLUVFICAgKGhleCkJCU1LTmV0IENvcnBvcmF0aW9uCi0wMDAzRUUgICAgIChiYXNlIDE2KQkJTUtOZXQgQ29ycG9yYXRpb24KLQkJCQk3MTEtQiBDaGFyY290IEF2ZS4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRUYgICAoaGV4KQkJT25lbGluZSBBRwotMDAwM0VGICAgICAoYmFzZSAxNikJCU9uZWxpbmUgQUcKLQkJCQlTdGVpbmZlbGRzdHIuIDMKLQkJCQkzOTE3OSBCYXJsZWJlbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLUYwICAgKGhleCkJCVJlZGZlcm4gQnJvYWRiYW5kIE5ldHdvcmtzCi0wMDAzRjAgICAgIChiYXNlIDE2KQkJUmVkZmVybiBCcm9hZGJhbmQgTmV0d29ya3MKLQkJCQlMZXZlbCAxLCAxIENlbnRyYWwgQXZlLiwKLQkJCQlBdXN0cmFsaWFuIFRlY2hub2xvZ3kgUGFyayBFdmVsZWlnaCwgTlNXCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTAzLUYxICAgKGhleCkJCUNpY2FkYSBTZW1pY29uZHVjdG9yLCBJbmMuCi0wMDAzRjEgICAgIChiYXNlIDE2KQkJQ2ljYWRhIFNlbWljb25kdWN0b3IsIEluYy4KLQkJCQk4MTEgQmFydG9uIFNwcmluZ3MgUmQuCi0JCQkJU3VpdGUgNTUwCi0JCQkJQXVzdGluIFRYIDc4NzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1GMiAgIChoZXgpCQlTZW5lY2EgTmV0d29ya3MKLTAwMDNGMiAgICAgKGJhc2UgMTYpCQlTZW5lY2EgTmV0d29ya3MKLQkJCQkzMCBXZXN0IEd1ZGUgRHIuCi0JCQkJU3VpdGUgMjAwCi0JCQkJUm9ja3ZpbGxlIE1EIDIwODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1GMyAgIChoZXgpCQlEYXp6bGUgTXVsdGltZWRpYSwgSW5jLgotMDAwM0YzICAgICAoYmFzZSAxNikJCURhenpsZSBNdWx0aW1lZGlhLCBJbmMuCi0JCQkJNDcyMTEgQmF5c2lkZSBQYXJrd2F5Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRjQgICAoaGV4KQkJTmV0QnVybmVyCi0wMDAzRjQgICAgIChiYXNlIDE2KQkJTmV0QnVybmVyCi0JCQkJMTEzMjQgTGVnYWN5IENhbnlvbiBQbC4KLQkJCQlTYW4gRGllZ28gQ0EgOTIxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUY1ICAgKGhleCkJCUNoaXAyQ2hpcAotMDAwM0Y1ICAgICAoYmFzZSAxNikJCUNoaXAyQ2hpcAotCQkJCTIyNDkgWmFua2VyIFJkLgotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1GNiAgIChoZXgpCQlBbGxlZ3JvIE5ldHdvcmtzLCBJbmMuCi0wMDAzRjYgICAgIChiYXNlIDE2KQkJQWxsZWdybyBOZXR3b3JrcywgSW5jLgotCQkJCTYzOTkgU2FuIElnbmFjaW8gQXZlbnVlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUY3ICAgKGhleCkJCVBsYXN0LUNvbnRyb2wgR21iSAotMDAwM0Y3ICAgICAoYmFzZSAxNikJCVBsYXN0LUNvbnRyb2wgR21iSAotCQkJCVdhbHRlci1GcmVpdGFnLVN0ci4gMTUKLQkJCQk0Mjg5OSBSZW1zY2hlaWQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMy1GOCAgIChoZXgpCQlTYW5DYXN0bGUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDAzRjggICAgIChiYXNlIDE2KQkJU2FuQ2FzdGxlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTIxMDcgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU3VpdGUgNTAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUY5ICAgKGhleCkJCVBsZWlhZGVzIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAzRjkgICAgIChiYXNlIDE2KQkJUGxlaWFkZXMgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyODMwIE1hcmtldCBMb29wICMxMDQKLQkJCQlTb3V0aCBMYWtlIFRYIDc2MDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1GQSAgIChoZXgpCQlUaU1ldHJhIE5ldHdvcmtzCi0wMDAzRkEgICAgIChiYXNlIDE2KQkJVGlNZXRyYSBOZXR3b3JrcwotCQkJCTUwMCBFbGxpcyBTdC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1GQiAgIChoZXgpCQlFTkVHQVRFIENvLixMdGQuCi0wMDAzRkIgICAgIChiYXNlIDE2KQkJRU5FR0FURSBDby4sTHRkLgotCQkJCTMtMTQtNDAgU2Vucmlva2EsCi0JCQkJU2V0dHN1LWNpdHkgT3Nha2EgNTY2LTg2ODYKLQkJCQlKQVBBTgotCi0wMC0wMy1GQyAgIChoZXgpCQlJbnRlcnRleCBEYXRhIEFCCi0wMDAzRkMgICAgIChiYXNlIDE2KQkJSW50ZXJ0ZXggRGF0YSBBQgotCQkJCVJpc3NuZWxlZGVuIDQ1Ci0JCQkJMTc0IDQ0IFN1bmRieWJlcmcKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtMDMtRkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwM0ZEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUZFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDNGRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1GRiAgIChoZXgpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLTAwMDNGRiAgICAgKGJhc2UgMTYpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLQkJCQkxIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0wMCAgIChoZXgpCQlMRVhNQVJLIElOVEVSTkFUSU9OQUwsIElOQy4KLTAwMDQwMCAgICAgKGJhc2UgMTYpCQlMRVhNQVJLIElOVEVSTkFUSU9OQUwsIElOQy4KLQkJCQk3NDAgTkVXIENJUkNMRSBSRCAtIEJMREcuICMwMzUKLQkJCQlMRVhJTkdUT04gS1kgNDA1NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTAxICAgKGhleCkJCU9zYWtpIEVsZWN0cmljIENvLiwgTHRkLgotMDAwNDAxICAgICAoYmFzZSAxNikJCU9zYWtpIEVsZWN0cmljIENvLiwgTHRkLgotCQkJCTExMzEsIEZ1amlrdWJvLCBNaXlvc2hpbWFjaGksCi0JCQkJSXJ1bWEtZ3VuLCBTYWl0YW1hIDM1NC04NTAxLAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtMDIgICAoaGV4KQkJTmV4c2FuIFRlY2hub2xvZ2llcywgTHRkLgotMDAwNDAyICAgICAoYmFzZSAxNikJCU5leHNhbiBUZWNobm9sb2dpZXMsIEx0ZC4KLQkJCQlQYXJrZXIgQ2VudHJlCi0JCQkJTWFuc2ZpZWxkIFJkCi0JCQkJRGVyYnkgIERFMjEgNFNaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtMDMgICAoaGV4KQkJTmV4c2kgQ29ycG9yYXRpb24KLTAwMDQwMyAgICAgKGJhc2UgMTYpCQlOZXhzaSBDb3Jwb3JhdGlvbgotCQkJCTE5NTkgQ29uY291cnNlIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTA0ICAgKGhleCkJCU1ha2lubyBNaWxsaW5nIE1hY2hpbmUgQ28uLCBMdGQuCi0wMDA0MDQgICAgIChiYXNlIDE2KQkJTWFraW5vIE1pbGxpbmcgTWFjaGluZSBDby4sIEx0ZC4KLQkJCQk0MDIzIE5ha2F0c3UsIEFpa2F3YS1tYWNoaSwKLQkJCQlBaWtvLWd1biBLYW5hZ2F3YSAyNDMtMDMwMwotCQkJCUpBUEFOCi0KLTAwLTA0LTA1ICAgKGhleCkJCUFDTiBUZWNobm9sb2dpZXMKLTAwMDQwNSAgICAgKGJhc2UgMTYpCQlBQ04gVGVjaG5vbG9naWVzCi0JCQkJOUYsIEhleUthbmcgQi9ELCAxNTctMzYKLQkJCQlTYW5zdW5nLWRvbmcsIEthbmduYW1ndSwKLQkJCQlTZW91bCBLT1JFQSAjMTM1LTA5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC0wNiAgIChoZXgpCQlGYS4gTWV0YWJveCBBRwotMDAwNDA2ICAgICAoYmFzZSAxNikJCUZhLiBNZXRhYm94IEFHCi0JCQkJRGFpbWxlcnJpbmcgMzcsCi0JCQkJRC0zMTEzNSBIaWxkc2hlaW0sCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDQtMDcgICAoaGV4KQkJVG9wY29uIFBvc2l0aW9uaW5nIFN5c3RlbXMsIEluYy4KLTAwMDQwNyAgICAgKGJhc2UgMTYpCQlUb3Bjb24gUG9zaXRpb25pbmcgU3lzdGVtcywgSW5jLgotCQkJCTU3NTggVy4gTGFzIFBvc2l0YXMgQmx2ZC4KLQkJCQlQbGVhc2FudG9uIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0wOCAgIChoZXgpCQlTYW5rbyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMDQwOCAgICAgKGJhc2UgMTYpCQlTYW5rbyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkzLTgwMiB1ZWRhIHRlbnBha3Uta3UKLQkJCQluYWdveWEgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC0wOSAgIChoZXgpCQlDcmF0b3MgTmV0d29ya3MKLTAwMDQwOSAgICAgKGJhc2UgMTYpCQlDcmF0b3MgTmV0d29ya3MKLQkJCQkzMTMgTGl0dGxldG9uIFJvYWQKLQkJCQlTdWl0ZSAyMAotCQkJCUNoZWxtc2ZvcmQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTBBICAgKGhleCkJCVNhZ2UgU3lzdGVtcwotMDAwNDBBICAgICAoYmFzZSAxNikJCVNhZ2UgU3lzdGVtcwotCQkJCTE0MjAgSGFyYm9yIEJheSBQYXJrd2F5Ci0JCQkJU3VpdGUgMTYwCi0JCQkJQWxhbWVkYSBDQSA5NDUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMEIgICAoaGV4KQkJM2NvbSBFdXJvcGUgTHRkLgotMDAwNDBCICAgICAoYmFzZSAxNikJCTNjb20gRXVyb3BlIEx0ZC4KLQkJCQkzY29tIENlbnRyZQotCQkJCUJvdW5kYXJ5IFdheSwgSGVtZWwgSGVtcHN0ZWFkIEhlcnRmb3Jkc2gKLQkJCQlIUDIgN1lVIFVLCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtMEMgICAoaGV4KQkJS0FOTk8gV29yaydzIEx0ZC4KLTAwMDQwQyAgICAgKGJhc2UgMTYpCQlLQU5OTyBXb3JrJ3MgTHRkLgotCQkJCTEtNS0yNSBLYW1pdG9taW5vLAotCQkJCUtva3VyYWtpdGEta3UsIEtpdGFreXVzeXUtY2l0eSwgRnVrdW9rYS0KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LTBEICAgKGhleCkJCUF2YXlhLCBJbmMuCi0wMDA0MEQgICAgIChiYXNlIDE2KQkJQXZheWEsIEluYy4KLQkJCQlPZmZpY2UgMUEzMjUKLQkJCQkzMDcgTWlkZGxldG93biBMaW5jcm9mdCBSb2FkCi0JCQkJTGluY3JvZnQgTkogMDc3MzgtMTUyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMEUgICAoaGV4KQkJQVZNIEdtYkgKLTAwMDQwRSAgICAgKGJhc2UgMTYpCQlBVk0gR21iSAotCQkJCUFsdC1Nb2FiaXQgOTUKLQkJCQkxMDU1OSBCZXJsaW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTBGICAgKGhleCkJCUFzdXMgTmV0d29yayBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDQwRiAgICAgKGJhc2UgMTYpCQlBc3VzIE5ldHdvcmsgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTEtMSwgTm8uIDY3NSwgU2VjLiAxLCBLaW5nLWt1byBSZC4sCi0JCQkJSHNpbmNodSwKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtMTAgICAoaGV4KQkJU3Bpbm5ha2VyIE5ldHdvcmtzLCBJbmMuCi0wMDA0MTAgICAgIChiYXNlIDE2KQkJU3Bpbm5ha2VyIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTA3IEdhbW1hIERyaXZlCi0JCQkJUGl0dHNidXJnaCBQQSAxNTIzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMTEgICAoaGV4KQkJSW5rcmEgTmV0d29ya3MsIEluYy4KLTAwMDQxMSAgICAgKGJhc2UgMTYpCQlJbmtyYSBOZXR3b3JrcywgSW5jLgotCQkJCTQwOTcxIEVuY3ljbG9wZWRpYSBDaXJjbGUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0xMiAgIChoZXgpCQlXYXZlU21pdGggTmV0d29ya3MsIEluYy4KLTAwMDQxMiAgICAgKGJhc2UgMTYpCQlXYXZlU21pdGggTmV0d29ya3MsIEluYy4KLQkJCQk0MCBOYWdvZyBQYXJrCi0JCQkJQWN0b24gTUEgMDE3MjAtMzQyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMTMgICAoaGV4KQkJU05PTSBUZWNobm9sb2d5IEFHCi0wMDA0MTMgICAgIChiYXNlIDE2KQkJU05PTSBUZWNobm9sb2d5IEFHCi0JCQkJSGVsbWhvbHR6c3RyYXNzZSAyLTkKLQkJCQlELTEwNTg3IEJlcmxpbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTE0ICAgKGhleCkJCVVtZXphd2EgTXVzZW4gRGVua2kgQ28uLCBMdGQuCi0wMDA0MTQgICAgIChiYXNlIDE2KQkJVW1lemF3YSBNdXNlbiBEZW5raSBDby4sIEx0ZC4KLQkJCQkxNC0zLCBNaW5hbWkgMSwgTmlzaGkgOCwKLQkJCQlDaHVvLWt1LCBTYXBwb3JvLAotCQkJCUhva2thaWRvIEpBUEFOIDA2MC0wMDYxCi0JCQkJSkFQQU4KLQotMDAtMDQtMTUgICAoaGV4KQkJUmFzdGVtZSBTeXN0ZW1zIENvLiwgTHRkLgotMDAwNDE1ICAgICAoYmFzZSAxNikJCVJhc3RlbWUgU3lzdGVtcyBDby4sIEx0ZC4KLQkJCQk4ODYtMiBOaWhvbmdpIE5ha2Fnb3UtbXVyYQotCQkJCU5ha2FrdWJpa2ktZ3VuIE5paWdhdGEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LTE2ICAgKGhleCkJCVBhcmtzIFMvQSBDb211bmljYWNvZXMgRGlnaXRhaXMKLTAwMDQxNiAgICAgKGJhc2UgMTYpCQlQYXJrcyBTL0EgQ29tdW5pY2Fjb2VzIERpZ2l0YWlzCi0JCQkJQXYuIFBlcm5hbWJ1Y28sIDEwMDEKLQkJCQlQb3J0by1BbGVncmUtUlMgQ0VQIDkwMjQwLTAwNAotCQkJCUJSQVpJTAotCQkJCUJSQVpJTAotCi0wMC0wNC0xNyAgIChoZXgpCQlFTEFVIEFHCi0wMDA0MTcgICAgIChiYXNlIDE2KQkJRUxBVSBBRwotCQkJCURpbGxiZXJnIDEyCi0JCQkJOTc4MjggTWFya3RoZWlkZW5mZWxkCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDQtMTggICAoaGV4KQkJVGVsdHJvbmljIFMuQS5VLgotMDAwNDE4ICAgICAoYmFzZSAxNikJCVRlbHRyb25pYyBTLkEuVS4KLQkJCQlQb2xpZ29ubyBkZSBNYWxwaWNhCi0JCQkJQ2FsbGUgRiBPZXN0ZSA1MDA1NyBaYXJhZ296YQotCQkJCVNQQUlOCi0JCQkJU1BBSU4KLQotMDAtMDQtMTkgICAoaGV4KQkJRmliZXJjeWNsZSBOZXR3b3JrcywgSW5jLgotMDAwNDE5ICAgICAoYmFzZSAxNikJCUZpYmVyY3ljbGUgTmV0d29ya3MsIEluYy4KLQkJCQkyMCBTb3V0aCBTYW50YSBDcnV6IEF2ZS4KLQkJCQlTdWl0ZSAxMTIKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTFBICAgKGhleCkJCUluZXMgVGVzdCBhbmQgTWVhc3VyZW1lbnQgR21iSCAmIENvS0cKLTAwMDQxQSAgICAgKGJhc2UgMTYpCQlJbmVzIFRlc3QgYW5kIE1lYXN1cmVtZW50IEdtYkggJiBDb0tHCi0JCQkJQW4gZGVyIE11ZWhsZW5hdWUgNQotCQkJCUJhZCBOZW5uZG9yZiAzMTU0MgotCQkJCUdFUk1BTlkKLQotMDAtMDQtMUIgICAoaGV4KQkJQnJpZGdld29ya3MgTHRkLgotMDAwNDFCICAgICAoYmFzZSAxNikJCUJyaWRnZXdvcmtzIEx0ZC4KLQkJCQkxMzUgU29tZXJmb3JkIFJvYWQKLQkJCQlDaHJpc3RjaHVyY2ggRE9SU0VUIEJIMjMgM1BZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtMUMgICAoaGV4KQkJaXBEaWFsb2csIEluYy4KLTAwMDQxQyAgICAgKGJhc2UgMTYpCQlpcERpYWxvZywgSW5jLgotCQkJCTE3NjIgVGVjaG5vbG9neSBEcml2ZQotCQkJCVN1aXRlIDEyNAotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0xRCAgIChoZXgpCQlDb3JlZ2Egb2YgQW1lcmljYQotMDAwNDFEICAgICAoYmFzZSAxNikJCUNvcmVnYSBvZiBBbWVyaWNhCi0JCQkJUC5PLiBCb3ggMTU5Ci0JCQkJQm90aGVsbCBXQSA5ODA0MS0wMTU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0xRSAgIChoZXgpCQlTaGlrb2t1IEluc3RydW1lbnRhdGlvbiBDby4sIEx0ZC4KLTAwMDQxRSAgICAgKGJhc2UgMTYpCQlTaGlrb2t1IEluc3RydW1lbnRhdGlvbiBDby4sIEx0ZC4KLQkJCQk3NzcsIE9vc2FjaG91LCBaZW50c3V1amlzaGksCi0JCQkJS2FnYXdhLCA3NjUtMDA1MiwKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LTFGICAgKGhleCkJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCwgSW5jLgotMDAwNDFGICAgICAoYmFzZSAxNikJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCwgSW5jLgotCQkJCTItNi0yMSBNaW5hbWktQW95YW1hCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNy0wMDYyCi0JCQkJSkFQQU4KLQotMDAtMDQtMjAgICAoaGV4KQkJU2xpbSBEZXZpY2VzLCBJbmMuCi0wMDA0MjAgICAgIChiYXNlIDE2KQkJU2xpbSBEZXZpY2VzLCBJbmMuCi0JCQkJMTIgU291dGggRmlyc3QgU3QuCi0JCQkJU3VpdGUgMTAzCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTIxICAgKGhleCkJCU9jdWxhciBOZXR3b3JrcwotMDAwNDIxICAgICAoYmFzZSAxNikJCU9jdWxhciBOZXR3b3JrcwotCQkJCTEyNzAwLCBGYWlyIExha2VzIENpcmNsZQotCQkJCVN1aXRlIDEwMAotCQkJCUZhaXJmYXggVkEgMjIwMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTIyICAgKGhleCkJCUdvcmRvbiBLYXBlcywgSW5jLgotMDAwNDIyICAgICAoYmFzZSAxNikJCUdvcmRvbiBLYXBlcywgSW5jLgotCQkJCTU1MjAgVy4gVG91aHkgQXZlLgotCQkJCVNrb2tpZSBJTCA2MDA3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMjMgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMDQyMyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCU1TOiAgSkYzLTQyMAotCQkJCTIxMTEgTkUgMjV0aCBBdmVudWUKLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTI0ICAgKGhleCkJCVRNQyBzLnIubC4KLTAwMDQyNCAgICAgKGJhc2UgMTYpCQlUTUMgcy5yLmwuCi0JCQkJMjAyIFZpYSBBLiBDb3N0YQotCQkJCTQwMTM0IC0gQm9sb2duYQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtMDQtMjUgICAoaGV4KQkJQXRtZWwgQ29ycG9yYXRpb24KLTAwMDQyNSAgICAgKGJhc2UgMTYpCQlBdG1lbCBDb3Jwb3JhdGlvbgotCQkJCU11bHRpbWVkaWEgJiBDb21tdW5pY2F0aW9ucyBHcm91cAotCQkJCTIyMDAgR2F0ZXdheSBDZW50cmUsIFN1aXRlIDIwMQotCQkJCU1vcnJpc3ZpbGxlIE5DIDI3NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0yNiAgIChoZXgpCQlBdXRvc3lzCi0wMDA0MjYgICAgIChiYXNlIDE2KQkJQXV0b3N5cwotCQkJCTIwMiBJbHNpbnBhc3RlbCwKLQkJCQk3MjEtMiBNT0szLURvbmcgWWFuZyBDaGVvbi1rdSwKLQkJCQlTZW91bCBTZW91bCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC0yNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0MjcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMjggICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNDI4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTI5ICAgKGhleCkJCVBpeG9yZCBDb3Jwb3JhdGlvbgotMDAwNDI5ICAgICAoYmFzZSAxNikJCVBpeG9yZCBDb3Jwb3JhdGlvbgotCQkJCVJvb20gMywgMUYsIE5vLiAxMzk2LAotCQkJCUNodW5nIENoZW5nIFJkLiBUYW95dWFuIENpdHksIFRhb3l1YW4gSHMKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtMkEgICAoaGV4KQkJV2lyZWxlc3MgTmV0d29ya3MsIEluYy4KLTAwMDQyQSAgICAgKGJhc2UgMTYpCQlXaXJlbGVzcyBOZXR3b3JrcywgSW5jLgotCQkJCTIzMjIgRWwgQ2FtaW5vIFJlYWwKLQkJCQlTYW4gTWF0ZW8gQ0EgOTQ0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTJCICAgKGhleCkJCUlUIEFjY2VzcyBDby4sIEx0ZC4KLTAwMDQyQiAgICAgKGJhc2UgMTYpCQlJVCBBY2Nlc3MgQ28uLCBMdGQuCi0JCQkJMy0xNy02LCBTaGlueW9rb2hhbWEsIEtvdWhva3Uta3UKLQkJCQlZb2tvaGFtYS1zaGksIEthbmFnYXdhIDIyMi04NTQ1Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC0yQyAgIChoZXgpCQlNaW5ldCwgSW5jLgotMDAwNDJDICAgICAoYmFzZSAxNikJCU1pbmV0LCBJbmMuCi0JCQkJM0YgU2UtQSBWZW50dXJlIFRvd2VyCi0JCQkJOTQ2LTEyIERhZWNoaS1kb25nLCBHYW5nbmFtLWd1LCBTZW91bAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTJEICAgKGhleCkJCVNhcmlhbiBTeXN0ZW1zLCBMdGQuCi0wMDA0MkQgICAgIChiYXNlIDE2KQkJU2FyaWFuIFN5c3RlbXMsIEx0ZC4KLQkJCQlGbG9vZGxpZ2h0IEhvdXNlCi0JCQkJUml2ZXJzaWRlIEJ1c2luZXNzIFBhcmsgIExlZWRzIFJvYWQsIElsawotCQkJCVdlc3QgWW9ya3NoaXJlIEVOR0xBTkQgTFMyOSA4SloKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC0yRSAgIChoZXgpCQlOZXRvdXMgVGVjaG5vbG9naWVzLCBMdGQuCi0wMDA0MkUgICAgIChiYXNlIDE2KQkJTmV0b3VzIFRlY2hub2xvZ2llcywgTHRkLgotCQkJCTEwMDYsIEJsb2NrIEEsCi0JCQkJR29vZFZpZXcgSW5kdXN0cmlhbCBCdWlsZGluZywgS2luIEZhdCBTdAotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC0wNC0yRiAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIENvbW11bmljYXRpb25zIFByb2R1Y3RzLCBJbmMuCi0wMDA0MkYgICAgIChiYXNlIDE2KQkJSW50ZXJuYXRpb25hbCBDb21tdW5pY2F0aW9ucyBQcm9kdWN0cywgSW5jLgotCQkJCTQzMjUgV29vZGxhbmQgUGFyayBEcml2ZQotCQkJCVN1aXRlIDEwMQotCQkJCVdlc3QgTWVsYm91cm5lIEZMIDMyOTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0zMCAgIChoZXgpCQlOZXRnZW0KLTAwMDQzMCAgICAgKGJhc2UgMTYpCQlOZXRnZW0KLQkJCQkyNyBydWUgZCdPcmxlYW5zCi0JCQkJOTIgMjAwIE5ldWlsbHQgcy9TZWluZQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wNC0zMSAgIChoZXgpCQlHbG9iYWxTdHJlYW1zLCBJbmMuCi0wMDA0MzEgICAgIChiYXNlIDE2KQkJR2xvYmFsU3RyZWFtcywgSW5jLgotCQkJCTI4ODIgUHJvc3BlY3QgUGFyayBEcml2ZQotCQkJCVN1aXRlIDM1MAotCQkJCVJhbmNobyBDb3Jkb3ZhIENBIDk1NjcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0zMiAgIChoZXgpCQlWb3lldHJhIFR1cnRsZSBCZWFjaCwgSW5jLgotMDAwNDMyICAgICAoYmFzZSAxNikJCVZveWV0cmEgVHVydGxlIEJlYWNoLCBJbmMuCi0JCQkJMTUwIENsZWFyYnJvb2sgUm9hZCwgU3VpdGUgMTYyCi0JCQkJRWxtc2ZvcmQgTlkgMTA1MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTMzICAgKGhleCkJCUN5YmVyYm9hcmQgQS9TCi0wMDA0MzMgICAgIChiYXNlIDE2KQkJQ3liZXJib2FyZCBBL1MKLQkJCQlLbG9ldmVybWFya2VuIDEyMAotCQkJCURLLTcxOTAgQmlsbHVuZAotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLTA0LTM0ICAgKGhleCkJCUFjY2VsZW50IFN5c3RlbXMsIEluYy4KLTAwMDQzNCAgICAgKGJhc2UgMTYpCQlBY2NlbGVudCBTeXN0ZW1zLCBJbmMuCi0JCQkJMjYyMCBSaWRnZXdvb2QgUmQuLAotCQkJCVN1aXRlIDMwMAotCQkJCUFrcm9uIE9IIDQ0MzEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0zNSAgIChoZXgpCQlDb21wdGVrIEludGVybmF0aW9uYWwsIEluYy4KLTAwMDQzNSAgICAgKGJhc2UgMTYpCQlDb21wdGVrIEludGVybmF0aW9uYWwsIEluYy4KLQkJCQkxMSBGbG9vZGxpZ2h0IFN0LgotCQkJCUJvc3RvbiBNQSAwMjEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMzYgICAoaGV4KQkJRUxBTnNhdCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDQzNiAgICAgKGJhc2UgMTYpCQlFTEFOc2F0IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCU5vLiAxMSwgTGFuZSAxOSwgUGF0ZWggUm9hZCwKLQkJCQlIc2luY2h1IFRBSVdBTiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC0zNyAgIChoZXgpCQlQb3dpbiBJbmZvcm1hdGlvbiBUZWNobm9sb2d5LCBJbmMuCi0wMDA0MzcgICAgIChiYXNlIDE2KQkJUG93aW4gSW5mb3JtYXRpb24gVGVjaG5vbG9neSwgSW5jLgotCQkJCThGLCBOby4gNzAsIFpob3UtWiBTdC4KLQkJCQkxMTQgTmVpLUh1IFRhaXBlaQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC0zOCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMDQzOCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlEZXBhcnRtZW50IDY4MDAKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMCBCcmFtcHRvbiwgT04KLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDQtMzkgICAoaGV4KQkJUm9zY28gRW50ZXJ0YWlubWVudCBUZWNobm9sb2d5LCBJbmMuCi0wMDA0MzkgICAgIChiYXNlIDE2KQkJUm9zY28gRW50ZXJ0YWlubWVudCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjE4MSBOVyBGcm9udCBBdmUuCi0JCQkJUG9ydGxhbmQgT1IgOTcyMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTNBICAgKGhleCkJCUludGVsbGlnZW50IFRlbGVjb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNDNBICAgICAoYmFzZSAxNikJCUludGVsbGlnZW50IFRlbGVjb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTE2ODctMiwgU2luaWwtZG9uZwotCQkJCURhZWRvay1ndSwgVGFlam9uCi0JCQkJU09VVEggS09SRUEgMzA2LTIzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC0zQiAgIChoZXgpCQlMYXZhIENvbXB1dGVyIE1mZy4sIEluYy4KLTAwMDQzQiAgICAgKGJhc2UgMTYpCQlMYXZhIENvbXB1dGVyIE1mZy4sIEluYy4KLQkJCQkyIFZ1bGNhbiBTdC4KLQkJCQlFdG9iaWNva2UsIE9udGFyaW8KLQkJCQlDQU5BREEgTTlXLTFMMgotCQkJCUNBTkFEQQotCi0wMC0wNC0zQyAgIChoZXgpCQlTT05PUyBDby4sIEx0ZC4KLTAwMDQzQyAgICAgKGJhc2UgMTYpCQlTT05PUyBDby4sIEx0ZC4KLQkJCQkjNzI1IFB1bmdzYW4gQXB0LiBGYWN0b3J5Ci0JCQkJMTE0MS0yIEJhaWtzZW9rLCBpbHNhbiwgR295YW5nLCBHeWVvbmdnaQotCQkJCVJlcC4gb2YgS09SRUEgWmlwIENvZGU6IDQxMS04MTUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtM0QgICAoaGV4KQkJSU5ERUwgQUcKLTAwMDQzRCAgICAgKGJhc2UgMTYpCQlJTkRFTCBBRwotCQkJCVR1Zml3aXMgMjYKLQkJCQlDSC04MzMyIFJ1c3Npa29uCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wNC0zRSAgIChoZXgpCQlUZWxlbmNvbW0KLTAwMDQzRSAgICAgKGJhc2UgMTYpCQlUZWxlbmNvbW0KLQkJCQkyNTUxIFdhbHNoIEF2ZW51ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0zRiAgIChoZXgpCQlFU1RlZW0gV2lyZWxlc3MgTW9kZW1zLCBJbmMKLTAwMDQzRiAgICAgKGJhc2UgMTYpCQlFU1RlZW0gV2lyZWxlc3MgTW9kZW1zLCBJbmMKLQkJCQk0MTUgTi4gUXVheSBTdC4sIFN1aXRlIDQKLQkJCQlLZW5uZXdpY2sgV0EgOTkzMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTQwICAgKGhleCkJCWN5YmVyUElYSUUsIEluYy4KLTAwMDQ0MCAgICAgKGJhc2UgMTYpCQljeWJlclBJWElFLCBJbmMuCi0JCQkJNjggRS4gV2Fja2VyIFBsYWNlLAotCQkJCVN1aXRlIDYwMAotCQkJCUNoaWNhZ28gSUwgNjA2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTQxICAgKGhleCkJCUhhbGYgRG9tZSBTeXN0ZW1zLCBJbmMuCi0wMDA0NDEgICAgIChiYXNlIDE2KQkJSGFsZiBEb21lIFN5c3RlbXMsIEluYy4KLQkJCQkxNTUgQi0xIE1vZmZldCBQYXJrIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC00MiAgIChoZXgpCQlOQUNUCi0wMDA0NDIgICAgIChiYXNlIDE2KQkJTkFDVAotCQkJCTE5MSBXLiA1MjAwIE4uCi0JCQkJUHJvdm8gVVQgODQ2MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTQzICAgKGhleCkJCUFnaWxlbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA0NDMgICAgIChiYXNlIDE2KQkJQWdpbGVudCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk1MzAxIFN0ZXZlbnMgQ3JlZWsgQm91bGV2YXJkCi0JCQkJTWFpbHN0b3AgNTRMLVNRCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTQ0ICAgKGhleCkJCVdlc3Rlcm4gTXVsdGlwbGV4IENvcnBvcmF0aW9uCi0wMDA0NDQgICAgIChiYXNlIDE2KQkJV2VzdGVybiBNdWx0aXBsZXggQ29ycG9yYXRpb24KLQkJCQkxMTk2IEJvcnJlZ2FzIEF2ZW51ZQotCQkJCVN1aXRlIDUwMAotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNDUgICAoaGV4KQkJTE1TIFNrYWxhciBJbnN0cnVtZW50cyBHbWJICi0wMDA0NDUgICAgIChiYXNlIDE2KQkJTE1TIFNrYWxhciBJbnN0cnVtZW50cyBHbWJICi0JCQkJV2lsbGktRWljaGxlci1TdHIgMTEKLQkJCQlELTM3MDc5IEdvZXR0aW5nZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC00NiAgIChoZXgpCQlDWVpFTlRFQ0ggQ28uLCBMdGQuCi0wMDA0NDYgICAgIChiYXNlIDE2KQkJQ1laRU5URUNIIENvLiwgTHRkLgotCQkJCTYwMSBFdW5reWVvbmcgQi9EIDE0MS0zMSwKLQkJCQlTYW1zdW5nLWRvbmcsIEdhbmduYW0tZ3UsIFNlb3VsLAotCQkJCTEzNS04NzYgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtNDcgICAoaGV4KQkJQWNyb3dhdmUgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDQ0NyAgICAgKGJhc2UgMTYpCQlBY3Jvd2F2ZSBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCU1hcnUgQi9EIDg2LTYsIE5vbmh5dW4tRG9uZwotCQkJCUdhbmduYW0tZ3UsIFNlb3VsCi0JCQkJS09SRUEgemlwOiAxMzUtODE4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTQ4ICAgKGhleCkJCVBvbGFyb2lkIENvcnBvcmF0aW9uCi0wMDA0NDggICAgIChiYXNlIDE2KQkJUG9sYXJvaWQgQ29ycG9yYXRpb24KLQkJCQkzMDAgQmFrZXIgQXZlbnVlCi0JCQkJQ29uY29yZCBNQSAwMTc0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNDkgICAoaGV4KQkJTWFwbGV0cmVlIE5ldHdvcmtzCi0wMDA0NDkgICAgIChiYXNlIDE2KQkJTWFwbGV0cmVlIE5ldHdvcmtzCi0JCQkJMzE1IE5vcndvb2QgUGFyayBTb3V0aAotCQkJCU5vcndvb2QgTUEgMDIwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTRBICAgKGhleCkJCWlQb2xpY3kgTmV0d29ya3MsIEluYy4KLTAwMDQ0QSAgICAgKGJhc2UgMTYpCQlpUG9saWN5IE5ldHdvcmtzLCBJbmMuCi0JCQkJNDc0NjcgRnJlbW9udCBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTRCICAgKGhleCkJCU5WSURJQQotMDAwNDRCICAgICAoYmFzZSAxNikJCU5WSURJQQotCQkJCTM1MzUgTW9ucm9lIFN0LgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC00QyAgIChoZXgpCQlKRU5PUFRJSwotMDAwNDRDICAgICAoYmFzZSAxNikJCUpFTk9QVElLCi0JCQkJTGFzZXIsIE9wdGlrLCBTeXN0ZW1lIEdtYkgKLQkJCQlFaW5rYXVmLCBQcnVzc2luZ3N0ci4gNDEgRC0wNzc0NSBKZW5hCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDQtNEQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNDREICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTRFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDQ0RSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC00RiAgIChoZXgpCQlMZXVraGFyZHQgU3lzdGVtZWxla3Ryb25payBHbWJICi0wMDA0NEYgICAgIChiYXNlIDE2KQkJTGV1a2hhcmR0IFN5c3RlbWVsZWt0cm9uaWsgR21iSAotCQkJCVJ1ZG9sZi1EaWVzZWwtU3RyLiAxNwotCQkJCTc4NTMyIFR1dHRsaW5nZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC01MCAgIChoZXgpCQlETUQgQ29tcHV0ZXJzIFNSTAotMDAwNDUwICAgICAoYmFzZSAxNikJCURNRCBDb21wdXRlcnMgU1JMCi0JCQkJVmlhIE1vbnZpc28sIDE0Ci0JCQkJMTAwOTAgVmlsbGFyYmFzc2UgKFRvKQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtMDQtNTEgICAoaGV4KQkJTWVkcmFkLCBJbmMuCi0wMDA0NTEgICAgIChiYXNlIDE2KQkJTWVkcmFkLCBJbmMuCi0JCQkJT25lIE1lZHJhZCBEcml2ZQotCQkJCUluZGlhbm9sYSBQQSAxNTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNTIgICAoaGV4KQkJUm9ja2V0TG9naXgsIEluYy4KLTAwMDQ1MiAgICAgKGJhc2UgMTYpCQlSb2NrZXRMb2dpeCwgSW5jLgotCQkJCTY1MDQgSW50ZXJuYXRpb25hbCBQYXJrd2F5Ci0JCQkJU3VpdGUgMTIwMAotCQkJCVBsYW5vIFRYIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC01MyAgIChoZXgpCQlZb3R0YVlvdHRhLCBJbmMuCi0wMDA0NTMgICAgIChiYXNlIDE2KQkJWW90dGFZb3R0YSwgSW5jLgotCQkJCTYwMjAtIDEwNCBTdHJlZXQKLQkJCQlFZG1vbnRvbiwgQUIgIFQ2SCA1UzQKLQkJCQlDQU5BREEKLQotMDAtMDQtNTQgICAoaGV4KQkJUXVhZHJpZ2EgVUsKLTAwMDQ1NCAgICAgKGJhc2UgMTYpCQlRdWFkcmlnYSBVSwotCQkJCUJhaXJkIEhvdXNlCi0JCQkJQXJsaW5ndG9uIEJ1c2luZXNzIFBhcmsgVGhlYWxlIFJlYWRpbmcgUgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC01NSAgIChoZXgpCQlBTlRBUkEubmV0Ci0wMDA0NTUgICAgIChiYXNlIDE2KQkJQU5UQVJBLm5ldAotCQkJCTc0NyBDYW1kZW4gQXZlLgotCQkJCVN1aXRlIEEKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNTYgICAoaGV4KQkJTW90b3JvbGEgUFRQIEluYwotMDAwNDU2ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIFBUUCBJbmMKLQkJCQlVbml0IDFBLCBMaW5oYXkgQnVzaW5lc3MgUGFyaywKLQkJCQlFYXN0ZXJuIFJvYWQsCi0JCQkJQXNoYnVydG9uIERldm9uIFRRMTMgN1VQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtNTcgICAoaGV4KQkJVW5pdmVyc2FsIEFjY2VzcyBUZWNobm9sb2d5LCBJbmMuCi0wMDA0NTcgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEFjY2VzcyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMiBGbC4sIE5vLiA1LCBBbGxleSAyMiwKLQkJCQlMYW5lIDUxMywgSnVpIEt1YW5nIFJvYWQsCi0JCQkJTmVpIEh1IFRhaXBlaSwgVEFJV0FOIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtNTggICAoaGV4KQkJRnVzaW9uIFggQ28uLCBMdGQuCi0wMDA0NTggICAgIChiYXNlIDE2KQkJRnVzaW9uIFggQ28uLCBMdGQuCi0JCQkJIzkwNSBIYW5zb2wgVGVjaG5vIFRvd24KLQkJCQkxNi0xIERhbmctSnVuZyBEb25nIEt1bi1QbyBLeXVuZy1LaSBkbyBLCi0JCQkJWmlwIDQzNS0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtNTkgICAoaGV4KQkJVmVyaXN0YXIgQ29ycG9yYXRpb24KLTAwMDQ1OSAgICAgKGJhc2UgMTYpCQlWZXJpc3RhciBDb3Jwb3JhdGlvbgotCQkJCTcyNyBBbGxzdG9uIFdheQotCQkJCUJlcmtlbGV5IENBIDk0NzEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC01QSAgIChoZXgpCQlUaGUgTGlua3N5cyBHcm91cCwgSW5jLgotMDAwNDVBICAgICAoYmFzZSAxNikJCVRoZSBMaW5rc3lzIEdyb3VwLCBJbmMuCi0JCQkJMTc0MDEgQXJtc3Ryb25nIEF2ZS4KLQkJCQlJcnZpbmUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTVCICAgKGhleCkJCVRlY2hzYW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA0NUIgICAgIChiYXNlIDE2KQkJVGVjaHNhbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQlOb3J0aCBXaW5nCi0JCQkJNDMgSGlnaCBTdHJlZXQgRmFyZWhhbSwgSGFudHMgUDAxNiA3QlEKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA0LTVDICAgKGhleCkJCU1vYml3YXZlIFB0ZSBMdGQKLTAwMDQ1QyAgICAgKGJhc2UgMTYpCQlNb2Jpd2F2ZSBQdGUgTHRkCi0JCQkJQmxrIDE2LCBLYWxsYW5nIFBsYWNlCi0JCQkJIzA3LTAxLzA0Ci0JCQkJMzM5MTU2Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTA0LTVEICAgKGhleCkJCUJFS0EgRWxla3Ryb25pawotMDAwNDVEICAgICAoYmFzZSAxNikJCUJFS0EgRWxla3Ryb25pawotCQkJCVNpZW1lbnN0cmFzc2UgMjkKLQkJCQlFcmZ0c3RhZHQgNTAzNzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTVFICAgKGhleCkJCVBvbHlUcmF4IEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQUcKLTAwMDQ1RSAgICAgKGJhc2UgMTYpCQlQb2x5VHJheCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IEFHCi0JCQkJTWFydGluLUtvbGxhciAtIFN0ci4gNQotCQkJCUQtODE4MjkgTXVuY2hlbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTVGICAgKGhleCkJCUV2YWx1ZSBUZWNobm9sb2d5LCBJbmMuCi0wMDA0NUYgICAgIChiYXNlIDE2KQkJRXZhbHVlIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk1Ri03LCBOby4gMTMwLCBDaGllbiBLYW5nIFJvYWQsCi0JCQkJQ2h1bmcgSG8gQ2l0eSwgVGFpcGVpCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTYwICAgKGhleCkJCUtuaWxpbmsgVGVjaG5vbG9neSwgSW5jLgotMDAwNDYwICAgICAoYmFzZSAxNikJCUtuaWxpbmsgVGVjaG5vbG9neSwgSW5jLgotCQkJCTEwRiwgIzk2LCBIc2luIFRhaSBXdSBSZC4sCi0JCQkJU2VjLiAxLCBIc2kgQ2hpaCwgVGFpcGVpIEhzaWVuLAotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtNjEgICAoaGV4KQkJRVBPWCBDb21wdXRlciBDby4sIEx0ZC4KLTAwMDQ2MSAgICAgKGJhc2UgMTYpCQlFUE9YIENvbXB1dGVyIENvLiwgTHRkLgotCQkJCTExRiwgIzM0NiwgQ2h1bmcgU2FuIFJkLgotCQkJCVNlYy4gMiwgQ2h1bmcgSG8gQ2l0eSwgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC02MiAgIChoZXgpCQlEQUtPUyBEYXRhICYgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMDQ2MiAgICAgKGJhc2UgMTYpCQlEQUtPUyBEYXRhICYgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQkybmQgRmxvb3IgQmV0aGVsIEJ1aWxkaW5nIDMyNC0xCi0JCQkJWWFuZ2phZS1kb25nIFNlb2Noby1ndSBTZW91bCBSLk8uSy4KLQkJCQlaaXAgY29kZTogMTM3LTEzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtNjMgICAoaGV4KQkJQm9zY2ggU2VjdXJpdHkgU3lzdGVtcwotMDAwNDYzICAgICAoYmFzZSAxNikJCUJvc2NoIFNlY3VyaXR5IFN5c3RlbXMKLQkJCQk4NTAgR3JlZW5maWVsZCBSb2FkCi0JCQkJTGFuY2FzdGVyIFBBIDE3NjAxLTU4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTY0ICAgKGhleCkJCUZhbnRhc21hIE5ldHdvcmtzLCBJbmMuCi0wMDA0NjQgICAgIChiYXNlIDE2KQkJRmFudGFzbWEgTmV0d29ya3MsIEluYy4KLQkJCQkzMjUwIEFzaCBTdHJlZXQKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTY1ICAgKGhleCkJCWkucy50IGlzZG4tc3VwcG9ydCB0ZWNobmlrIEdtYkgKLTAwMDQ2NSAgICAgKGJhc2UgMTYpCQlpLnMudCBpc2RuLXN1cHBvcnQgdGVjaG5payBHbWJICi0JCQkJUmhlaW4gU3RyYXNzZSA3RQotCQkJCTE0NTEzIFRlbHRvdwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTY2ICAgKGhleCkJCUFSTUlURUwgQ28uCi0wMDA0NjYgICAgIChiYXNlIDE2KQkJQVJNSVRFTCBDby4KLQkJCQlGNSwgRG9tYW4gUGxhemEgMzUzLTQsCi0JCQkJWWF0YXAtRG9uZywgUHVkYW5nLWt1LCBTZW9uZy1OYW1lIFNpLCBLeQotCQkJCVJlcHVibGljIG9mIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTY3ICAgKGhleCkJCVd1aGFuIFJlc2VhcmNoIEluc3RpdHV0ZSBvZiBNSUkKLTAwMDQ2NyAgICAgKGJhc2UgMTYpCQlXdWhhbiBSZXNlYXJjaCBJbnN0aXR1dGUgb2YgTUlJCi0JCQkJODggWW91a2V5dWFuIFJvYWQsCi0JCQkJSGFuZ3NoYW4gRGlzdHJpY3QsV3VoYW4sIEh1YmVpIFByb3ZpbmNlLAotCQkJCTQzMDA3NCA0MzAwNzQgUC5SLkNISU5BCi0JCQkJQ0hJTkEKLQotMDAtMDQtNjggICAoaGV4KQkJVml2aXR5LCBJbmMuCi0wMDA0NjggICAgIChiYXNlIDE2KQkJVml2aXR5LCBJbmMuCi0JCQkJMzM2MCBNaXRjaGVsbCBMYW5lCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNjkgICAoaGV4KQkJSW5ub2NvbSwgSW5jLgotMDAwNDY5ICAgICAoYmFzZSAxNikJCUlubm9jb20sIEluYy4KLQkJCQk2NTUtMiBOYWViYWxzYW4tRG9uZwotCQkJCUthbmdzZW8tR3UsIFNlb3VsCi0JCQkJMTU3LTI4MCAxNTctMjgwIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTZBICAgKGhleCkJCU5hdmluaSBOZXR3b3JrcwotMDAwNDZBICAgICAoYmFzZSAxNikJCU5hdmluaSBOZXR3b3JrcwotCQkJCTM2MDUgRS4gUGxhbm8gUGt3eSwKLQkJCQlTdWl0ZSA0MDAsCi0JCQkJUGxhbm8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTZCICAgKGhleCkJCVBhbG0gV2lyZWxlc3MsIEluYy4KLTAwMDQ2QiAgICAgKGJhc2UgMTYpCQlQYWxtIFdpcmVsZXNzLCBJbmMuCi0JCQkJNDg5MzMgV2FybSBTcHJpbmdzIEJsdmQuCi0JCQkJRnJlbW9udCBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNkMgICAoaGV4KQkJQ3liZXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDQ2QyAgICAgKGJhc2UgMTYpCQlDeWJlciBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTEtNDUgWWVvIFdvbC1Eb25nCi0JCQkJT2ggSnVuZy1FbSwgQnUgQ2hlb24gQ2l0eSwKLQkJCQlLeWVvbmcgR2ktRG8gS3llb25nIEdpLURvIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTZEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDQ2RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC02RSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0NkUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNkYgICAoaGV4KQkJRGlnaXRlbCBTL0EgSW5kdXN0cmlhIEVsZXRyb25pY2EKLTAwMDQ2RiAgICAgKGJhc2UgMTYpCQlEaWdpdGVsIFMvQSBJbmR1c3RyaWEgRWxldHJvbmljYQotCQkJCVIuIERvdXRvciBKb2FvIElnbmFjaW8sIDExNjUKLQkJCQlQb3J0byBBbGVncmUsIFJTLiBCcmF6aWwKLQkJCQlaaXA6IDkwMjMwLjE4MQotCQkJCUJSQVpJTAotCi0wMC0wNC03MCAgIChoZXgpCQlpcFVucGx1Z2dlZCBBQgotMDAwNDcwICAgICAoYmFzZSAxNikJCWlwVW5wbHVnZ2VkIEFCCi0JCQkJQm94IDEwMTYwCi0JCQkJU0UgMTIxIDI4IFN0b2NraG9sbS1HbG9ic2VuCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTA0LTcxICAgKGhleCkJCUlQcmFkCi0wMDA0NzEgICAgIChiYXNlIDE2KQkJSVByYWQKLQkJCQkyNCBSYW91bCBXYWxsZW5iZXJnIFN0LgotCQkJCVRlbC1Bdml2IDY5NzE5Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTA0LTcyICAgKGhleCkJCVRlbGVseW54LCBJbmMuCi0wMDA0NzIgICAgIChiYXNlIDE2KQkJVGVsZWx5bngsIEluYy4KLQkJCQkzRi0xLCA2NiBOYW5rYW4gUmQuLAotCQkJCVNlYy4gMiBMdSBDaHUsIFRhby1ZdWFuCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC03MyAgIChoZXgpCQlQaG90b25leCBDb3Jwb3JhdGlvbgotMDAwNDczICAgICAoYmFzZSAxNikJCVBob3RvbmV4IENvcnBvcmF0aW9uCi0JCQkJOEMgUHJlc3RvbiBDb3VydAotCQkJCUJlZGZvcmQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTc0ICAgKGhleCkJCUxFR1JBTkQKLTAwMDQ3NCAgICAgKGJhc2UgMTYpCQlMRUdSQU5ECi0JCQkJMTQ1IEF2ZW51ZSBEZSBMYXR0cmUKLQkJCQk1NzA0NSBMaW1vZ2VzCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTA0LTc1ICAgKGhleCkJCTMgQ29tIENvcnBvcmF0aW9uCi0wMDA0NzUgICAgIChiYXNlIDE2KQkJMyBDb20gQ29ycG9yYXRpb24KLQkJCQk1NDAwIEJheWZyb250IFBsYXphCi0JCQkJTVM6ICA0MjIwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTc2ICAgKGhleCkJCTMgQ29tIENvcnBvcmF0aW9uCi0wMDA0NzYgICAgIChiYXNlIDE2KQkJMyBDb20gQ29ycG9yYXRpb24KLQkJCQk1NDAwIEJheWZyb250IFBsYXphCi0JCQkJTVM6ICA0MjIwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTc3ICAgKGhleCkJCVNjYWxhbnQgU3lzdGVtcywgSW5jLgotMDAwNDc3ICAgICAoYmFzZSAxNikJCVNjYWxhbnQgU3lzdGVtcywgSW5jLgotCQkJCTIwNDAgTWFydGluIEF2ZW51ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC03OCAgIChoZXgpCQlHLiBTdGFyIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMDQ3OCAgICAgKGJhc2UgMTYpCQlHLiBTdGFyIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk0dGggRmxvb3IsIE5vLiAxMTgsIFNlY3RvciAyCi0JCQkJQ2h1bmcgSHNpYW8gRWFzdCBSb2FkCi0JCQkJVGFpcGVpIENpdHkgVGFpcGVpIENpdHkgVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC03OSAgIChoZXgpCQlSYWRpdXMgQ28uLCBMdGQuCi0wMDA0NzkgICAgIChiYXNlIDE2KQkJUmFkaXVzIENvLiwgTHRkLgotCQkJCTEtNDgtMTEsIEl0YWJhc2hpCi0JCQkJUm9qZSBCbGRnLiwgTm8uIDMsIDZGIEl0YWJhc2hpLWt1LCBUb2t5bwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtN0EgICAoaGV4KQkJQVhYRVNTSVQgQVNBCi0wMDA0N0EgICAgIChiYXNlIDE2KQkJQVhYRVNTSVQgQVNBCi0JCQkJQVhYRVNTSVQgQVNBIEhBTERFTgotCQkJCUJveCAxMDUzIDE3ODcgQmVyZyBpIE9zdGZvbGQKLQkJCQlOT1JXQVkKLQkJCQlOT1JXQVkKLQotMDAtMDQtN0IgICAoaGV4KQkJU2NobHVtYmVyZ2VyCi0wMDA0N0IgICAgIChiYXNlIDE2KQkJU2NobHVtYmVyZ2VyCi0JCQkJU3VnYXIgTGFuZCBQcm9kdWN0IENlbnRlcgotCQkJCTExMCBTY2hsdW1iZXJnZXIgRHJpdmUKLQkJCQlTdWdhciBMYW5kIFRYIDc3NDc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC03QyAgIChoZXgpCQlTa2lkYXRhIEFHCi0wMDA0N0MgICAgIChiYXNlIDE2KQkJU2tpZGF0YSBBRwotCQkJCVQtNjk3NTUzIFVudGVyc2JlcmdzdHIuIDQwCi0JCQkJQS01MDgzIEdhcnRlbmF1Ci0JCQkJQVVTVFJJQQotCQkJCUFVU1RSSUEKLQotMDAtMDQtN0QgICAoaGV4KQkJUGVsY28KLTAwMDQ3RCAgICAgKGJhc2UgMTYpCQlQZWxjbwotCQkJCTM1MDAgUGVsY28gV2F5Ci0JCQkJQ2xvdmlzIENBIDkzNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC03RSAgIChoZXgpCQlPcHRlbGVjb209TktGCi0wMDA0N0UgICAgIChiYXNlIDE2KQkJT3B0ZWxlY29tPU5LRgotCQkJCVp1aWRlbGlqayBIYWxmcm9uZCAxMQotCQkJCTI4MDEgREQgR291ZGEKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wNC03RiAgIChoZXgpCQlDaHIuIE1heXIgR21iSCAmIENvLiBLRwotMDAwNDdGICAgICAoYmFzZSAxNikJCUNoci4gTWF5ciBHbWJIICYgQ28uIEtHCi0JCQkJRWljaGVuc3RyYXNzZSAxCi0JCQkJRC04NzY2NSBNYXVlcnN0ZXR0ZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC04MCAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotMDAwNDgwICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxNjQtOTEwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtODEgICAoaGV4KQkJRWNvbm9saXRlIENvbnRyb2wgUHJvZHVjdHMsIEluYy4KLTAwMDQ4MSAgICAgKGJhc2UgMTYpCQlFY29ub2xpdGUgQ29udHJvbCBQcm9kdWN0cywgSW5jLgotCQkJCTMzNjAgRS4gTGEgUGFsbWEgQXZlLgotCQkJCUFuYWhlaW0gQ0EgOTI4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTgyICAgKGhleCkJCU1lZGlhbG9naWMgQ29ycC4KLTAwMDQ4MiAgICAgKGJhc2UgMTYpCQlNZWRpYWxvZ2ljIENvcnAuCi0JCQkJMC0zLCBUb3lhbWFrZW4tU2FuZ3lvdQotCQkJCUtvdWRva2EtQ2VudGVyLCA1LCBPZmZpY2UgUGFyaywgVGFrYW9rYS0KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LTgzICAgKGhleCkJCURlbHRyb24gVGVjaG5vbG9neSwgSW5jLgotMDAwNDgzICAgICAoYmFzZSAxNikJCURlbHRyb24gVGVjaG5vbG9neSwgSW5jLgotCQkJCThGLTMsIE5vLiAxMjUsIExhbmUgMjM1Ci0JCQkJUGFvLUNoaWFvIFJkLiwgSHNpbnRpZW4sCi0JCQkJVGFpcGVpIFRBSVdBTiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC04NCAgIChoZXgpCQlBbWFubiBHbWJICi0wMDA0ODQgICAgIChiYXNlIDE2KQkJQW1hbm4gR21iSAotCQkJCVVudGVyYW5nZXIgNgotCQkJCUQtODIwNDEgT2JlcmhhY2hpbmcKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC04NSAgIChoZXgpCQlQaWNvTGlnaHQKLTAwMDQ4NSAgICAgKGJhc2UgMTYpCQlQaWNvTGlnaHQKLQkJCQk0NjY1IE5hdXRpbHVzIENvdXJ0IFNvdXRoCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtODYgICAoaGV4KQkJSVRUQywgVW5pdmVyc2l0eSBvZiBLYW5zYXMKLTAwMDQ4NiAgICAgKGJhc2UgMTYpCQlJVFRDLCBVbml2ZXJzaXR5IG9mIEthbnNhcwotCQkJCTIzMzUgSXJ2aW5nIEhpbGwgUmQuCi0JCQkJTGF3cmVuY2UgS1MgNjYwNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTg3ICAgKGhleCkJCUNvZ2VuY3kgU2VtaWNvbmR1Y3RvciwgSW5jLgotMDAwNDg3ICAgICAoYmFzZSAxNikJCUNvZ2VuY3kgU2VtaWNvbmR1Y3RvciwgSW5jLgotCQkJCTM2MiBUZXJyeSBGb3ggRHJpdmUsIFN1aXRlIDIxMAotCQkJCUthbmF0YSwgT04sIEsySyAyUDUKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDQtODggICAoaGV4KQkJRXVyb3RoZXJtIENvbnRyb2xzCi0wMDA0ODggICAgIChiYXNlIDE2KQkJRXVyb3RoZXJtIENvbnRyb2xzCi0JCQkJNzQxRiBNaWxsZXIgRHJpdmUKLQkJCQlMZXNzYnVyZyBWQSAyMDE3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtODkgICAoaGV4KQkJWUFGTyBOZXR3b3JrcywgSW5jLgotMDAwNDg5ICAgICAoYmFzZSAxNikJCVlBRk8gTmV0d29ya3MsIEluYy4KLQkJCQkxMzQwRiBDaGFyd29vZCBSZC4KLQkJCQlIYW5vdmVyIE1EIDIxMDc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04QSAgIChoZXgpCQlUZW1pYSBWZXJ0cmllYnMgR21iSAotMDAwNDhBICAgICAoYmFzZSAxNikJCVRlbWlhIFZlcnRyaWVicyBHbWJICi0JCQkJTGFuZHNiZXJnZXJzdHIuIDMyMAotCQkJCUQtODA2ODcgTXVuaWNoCi0JCQkJR0VSTUFOWQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOEIgICAoaGV4KQkJUG9zY29uIENvcnBvcmF0aW9uCi0wMDA0OEIgICAgIChiYXNlIDE2KQkJUG9zY29uIENvcnBvcmF0aW9uCi0JCQkJIzYwNiBIby1Eb25nLCBOYW0gR3UsCi0JCQkJUG9oYW5nIENpdHksIEt5dW5nYnVrLAotCQkJCVNPVVRIIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LThDICAgKGhleCkJCU5heW5hIE5ldHdvcmtzLCBJbmMuCi0wMDA0OEMgICAgIChiYXNlIDE2KQkJTmF5bmEgTmV0d29ya3MsIEluYy4KLQkJCQkxNTcgVG9wYXogU3QuCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LThEICAgKGhleCkJCVRvbmUgQ29tbWFuZGVyIFN5c3RlbXMsIEluYy4KLTAwMDQ4RCAgICAgKGJhc2UgMTYpCQlUb25lIENvbW1hbmRlciBTeXN0ZW1zLCBJbmMuCi0JCQkJMTE2MDkgNDl0aCBQbGFjZSBXZXN0Ci0JCQkJTXVraWx0ZW8gV0EgOTgyNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LThFICAgKGhleCkJCU9obSBUZWNoIExhYnMsIEluYy4KLTAwMDQ4RSAgICAgKGJhc2UgMTYpCQlPaG0gVGVjaCBMYWJzLCBJbmMuCi0JCQkJMTQxIExhbnphIEF2ZS4sIEItMTIKLQkJCQlHYXJmaWVsZCBOSiAwNzAyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOEYgICAoaGV4KQkJVEQgU3lzdGVtcyBDb3Jwb3JhdGlvbgotMDAwNDhGICAgICAoYmFzZSAxNikJCVREIFN5c3RlbXMgQ29ycG9yYXRpb24KLQkJCQkxMDAgQmVhcmZvb3QgUmQuCi0JCQkJNjQgT250YXJpbyBEcml2ZQotCQkJCUh1ZHNvbiBNQSAwMTc0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOTAgICAoaGV4KQkJT3B0aWNhbCBBY2Nlc3MKLTAwMDQ5MCAgICAgKGJhc2UgMTYpCQlPcHRpY2FsIEFjY2VzcwotCQkJCVAuTy4gQm94IDExNAotCQkJCVlva25lYW0sIDIwNjkyCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTA0LTkxICAgKGhleCkJCVRlY2hub3Zpc2lvbiwgSW5jLgotMDAwNDkxICAgICAoYmFzZSAxNikJCVRlY2hub3Zpc2lvbiwgSW5jLgotCQkJCTUxNTUgU3BlY3RydW0gV2F5LCBVbml0ICMzMQotCQkJCU1pc3Npc3NhdWdhLCBPbnRhcmlvCi0JCQkJTDRXIDVBMSBDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDQtOTIgICAoaGV4KQkJSGl2ZSBJbnRlcm5ldCwgTHRkLgotMDAwNDkyICAgICAoYmFzZSAxNikJCUhpdmUgSW50ZXJuZXQsIEx0ZC4KLQkJCQlVbml0IDIsIENodXJjaCBWaWV3IEJ1c2luZXNzIENlbnRyZQotCQkJCUxvdXRoIFJvYWQKLQkJCQlCaW5icm9vayBNYXJrZXQgUmFzZW4sIExpbmNvbG5zaGlyZSBMTjggNkJZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtOTMgICAoaGV4KQkJVHNpbmdodWEgVW5pc3BsZW5kb3VyIENvLiwgTHRkLgotMDAwNDkzICAgICAoYmFzZSAxNikJCVRzaW5naHVhIFVuaXNwbGVuZG91ciBDby4sIEx0ZC4KLQkJCQlUaC1VbmlzIEJ1aWxkaW5nIFRzaW5naHVhCi0JCQkJVW5pdmVyc2l0eSwgQmVqaW5nIDEwMDA4NAotCQkJCVAuUi4gQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0wNC05NCAgIChoZXgpCQlCcmVlemVjb20sIEx0ZC4KLTAwMDQ5NCAgICAgKGJhc2UgMTYpCQlCcmVlemVjb20sIEx0ZC4KLQkJCQlBdGlkaW0gVGVjaG5vbG9neSBQYXJrCi0JCQkJQmxkZy4gMSwgUC5PLkIuIDEzMTM5IFRlbC1Bdml2IDYxMTMxCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTA0LTk1ICAgKGhleCkJCVRlamFzIE5ldHdvcmtzIEluZGlhIExpbWl0ZWQKLTAwMDQ5NSAgICAgKGJhc2UgMTYpCQlUZWphcyBOZXR3b3JrcyBJbmRpYSBMaW1pdGVkCi0JCQkJIzU4LCAxc3QgTWFpbiBSb2FkLCBKLlAuIE5hZ2FyLCAKLQkJCQkzcmQgUGhhc2UsIEthcm5hdGFrYQotCQkJCUJhbmdhbG9yZSAgNTYwMDc4IAotCQkJCUlORElBCi0KLTAwLTA0LTk2ICAgKGhleCkJCUV4dHJlbWUgTmV0d29ya3MKLTAwMDQ5NiAgICAgKGJhc2UgMTYpCQlFeHRyZW1lIE5ldHdvcmtzCi0JCQkJMzU4NSBNb25yb2UgU3QuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTk3ICAgKGhleCkJCU1hY3JvU3lzdGVtIERpZ2l0YWwgVmlkZW8gQUcKLTAwMDQ5NyAgICAgKGJhc2UgMTYpCQlNYWNyb1N5c3RlbSBEaWdpdGFsIFZpZGVvIEFHCi0JCQkJU2Nob2VsbGluZ2VyIEZlbGQgMjgKLQkJCQk1ODMwMCBXZXR0ZXIsIEYuUi4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC05OCAgIChoZXgpCQlNYWhpIE5ldHdvcmtzCi0wMDA0OTggICAgIChiYXNlIDE2KQkJTWFoaSBOZXR3b3JrcwotCQkJCTEwMzkgTi4gTWNEb3dlbGwgQmx2ZC4KLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOTkgICAoaGV4KQkJQ2hpbm8gQ29ycG9yYXRpb24KLTAwMDQ5OSAgICAgKGJhc2UgMTYpCQlDaGlubyBDb3Jwb3JhdGlvbgotCQkJCTEgTW9yaSwgRnVqaW9rYSBDaXR5LAotCQkJCUd1bm1hIFByZWYuIEpBUEFOCi0JCQkJWmlwOiAzNzUtODUwNQotCQkJCUpBUEFOCi0KLTAwLTA0LTlBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDQ5QSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC05QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0OUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOUMgICAoaGV4KQkJU3VyZ2llbnQgTmV0d29ya3MsIEluYy4KLTAwMDQ5QyAgICAgKGJhc2UgMTYpCQlTdXJnaWVudCBOZXR3b3JrcywgSW5jLgotCQkJCTM1MjAgRXhlY3V0aXZlIENlbnRlciBEcml2ZQotCQkJCVN1aXRlIDMwMAotCQkJCUF1c3RpbiBUWCA3ODczMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOUQgICAoaGV4KQkJSXBhbmVtYSBUZWNobm9sb2dpZXMKLTAwMDQ5RCAgICAgKGJhc2UgMTYpCQlJcGFuZW1hIFRlY2hub2xvZ2llcwotCQkJCTI4LCBSdWUgRGUgTGEgUmVkb3V0ZQotCQkJCTkyMjYwIEZvbnRlbmF5IEF1eCBSb3NlcwotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wNC05RSAgIChoZXgpCQlXaXJlbGluayBDby4sIEx0ZC4KLTAwMDQ5RSAgICAgKGJhc2UgMTYpCQlXaXJlbGluayBDby4sIEx0ZC4KLQkJCQkxMUYsIEdlb3Nlb25nIEIvRCA1NDEsIERvd2hhLURvbmcsCi0JCQkJTWFwby1HdSwgU2VvdWwsIDEyMS03MDEsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtOUYgICAoaGV4KQkJRnJlZXNjYWxlIFNlbWljb25kdWN0b3IKLTAwMDQ5RiAgICAgKGJhc2UgMTYpCQlGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvcgotCQkJCTc3MDAgV2VzdCBQYXJtZXIgTGFuZQotCQkJCU1EIFBMNTkKLQkJCQlBdXN0aW4gVFggNzg3MjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUEwICAgKGhleCkJCVZlcml0eSBJbnN0cnVtZW50cywgSW5jLgotMDAwNEEwICAgICAoYmFzZSAxNikJCVZlcml0eSBJbnN0cnVtZW50cywgSW5jLgotCQkJCTI5MDEgRWlzZW5ob3dlciBTdC4KLQkJCQlDYXJyb2xsdG9uIFRYIDc1MDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1BMSAgIChoZXgpCQlQYXRod2F5IENvbm5lY3Rpdml0eQotMDAwNEExICAgICAoYmFzZSAxNikJCVBhdGh3YXkgQ29ubmVjdGl2aXR5Ci0JCQkJMTQzOS0xNyBBdmVudWUgU0UKLQkJCQlDYWxnYXJ5IEFsYmVydGEgVDJHIDFKOQotCQkJCUNBTkFEQQotCi0wMC0wNC1BMiAgIChoZXgpCQlMLlMuSS4gSmFwYW4gQ28uLCBMdGQuCi0wMDA0QTIgICAgIChiYXNlIDE2KQkJTC5TLkkuIEphcGFuIENvLiwgTHRkLgotCQkJCTEtOC0xNCBTZW5kYWdheWEgU2hpYnV5YS1LdQotCQkJCVRva3lvIDE1MS0wMDUxIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtQTMgICAoaGV4KQkJTWljcm9jaGlwIFRlY2hub2xvZ3ksIEluYy4KLTAwMDRBMyAgICAgKGJhc2UgMTYpCQlNaWNyb2NoaXAgVGVjaG5vbG9neSwgSW5jLgotCQkJCTIzNTUgVy4gQ2hhbmRsZXIgQmx2ZC4KLQkJCQlDaGFuZGxlciBBWiA4NTIyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQTQgICAoaGV4KQkJTmV0RW5hYmxlZCwgSW5jLgotMDAwNEE0ICAgICAoYmFzZSAxNikJCU5ldEVuYWJsZWQsIEluYy4KLQkJCQkxMjc1IEtpbm5lYXIgUmQuCi0JCQkJQ29sdW1idXMgT0ggNDMyMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUE1ICAgKGhleCkJCUJhcmNvIFByb2plY3Rpb24gU3lzdGVtcyBOVgotMDAwNEE1ICAgICAoYmFzZSAxNikJCUJhcmNvIFByb2plY3Rpb24gU3lzdGVtcyBOVgotCQkJCU5vb3JkbGFhbiA1Ci0JCQkJQjg1MjAgS3V1cm5lCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtMDQtQTYgICAoaGV4KQkJU0FGIFRlaG5pa2EgTHRkLgotMDAwNEE2ICAgICAoYmFzZSAxNikJCVNBRiBUZWhuaWthIEx0ZC4KLQkJCQk5MSBEemlybmF2dSBTdHIuLAotCQkJCVJpZ2EsIExWLTEwMTEsCi0JCQkJTEFUVklBCi0JCQkJTEFUVklBCi0KLTAwLTA0LUE3ICAgKGhleCkJCUZhYmlhVGVjaCBDb3Jwb3JhdGlvbgotMDAwNEE3ICAgICAoYmFzZSAxNikJCUZhYmlhVGVjaCBDb3Jwb3JhdGlvbgotCQkJCTRGLTMsIE5vLiAxOCwgTGFuZSA2MDkKLQkJCQlDaHVuZy1Ic2luIFJkLiwgU2VjLiA1IFNhbiBDaHVuZyBDaXR5LAotCQkJCVRhaXBlaSBIc2llbiwgVEFJV0FOIFIuTy5DCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC1BOCAgIChoZXgpCQlCcm9hZG1heCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDRBOCAgICAgKGJhc2UgMTYpCQlCcm9hZG1heCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxODAsIFdhaSBZaXAgU3RyZWV0LAotCQkJCUh3dW4gVG9uZywKLQkJCQlIT05HIEtPTkcKLQkJCQlIT05HIEtPTkcKLQotMDAtMDQtQTkgICAoaGV4KQkJU2FuZFN0cmVhbSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDRBOSAgICAgKGJhc2UgMTYpCQlTYW5kU3RyZWFtIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE5NTUgTGFrZXdheSBEci4KLQkJCQlMZXdpc3ZpbGxlIFRYIDc1MDU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1BQSAgIChoZXgpCQlKZXRzdHJlYW0gQ29tbXVuaWNhdGlvbnMKLTAwMDRBQSAgICAgKGJhc2UgMTYpCQlKZXRzdHJlYW0gQ29tbXVuaWNhdGlvbnMKLQkJCQk1NDAwIEhlbGx5ZXIgQXZlbnVlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzgtMTAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQUIgICAoaGV4KQkJQ29tdmVyc2UgTmV0d29yayBTeXN0ZW1zLCBJbmMuCi0wMDA0QUIgICAgIChiYXNlIDE2KQkJQ29tdmVyc2UgTmV0d29yayBTeXN0ZW1zLCBJbmMuCi0JCQkJMjkgSGFiYXJ6ZWwgU3RyZWV0LgotCQkJCVRlbC1Bdml2IDY5NzEwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTA0LUFDICAgKGhleCkJCUlCTSBDb3JwCi0wMDA0QUMgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUFEICAgKGhleCkJCU1hbGlidSBOZXR3b3JrcwotMDAwNEFEICAgICAoYmFzZSAxNikJCU1hbGlidSBOZXR3b3JrcwotCQkJCTI2NjM3IEFnb3VyYSBSZC4KLQkJCQlDYWxhYmFzYXMgQ0EgOTEzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUFFICAgKGhleCkJCVN1bGxhaXIgQ29ycG9yYXRpb24KLTAwMDRBRSAgICAgKGJhc2UgMTYpCQlTdWxsYWlyIENvcnBvcmF0aW9uCi0JCQkJMzcwMCBFYXN0IE1pY2hpZ2FuIEJsdmQKLQkJCQlNaWNoaWdhbiBDaXR5IElOIDQ2MzYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1BRiAgIChoZXgpCQlEaWdpdGFsIEZvdW50YWluLCBJbmMuCi0wMDA0QUYgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBGb3VudGFpbiwgSW5jLgotCQkJCTYwMCBBbGFiYW1hIFN0LgotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUIwICAgKGhleCkJCUVMRVNJR04gQ28uLCBMdGQuCi0wMDA0QjAgICAgIChiYXNlIDE2KQkJRUxFU0lHTiBDby4sIEx0ZC4KLQkJCQk5RmwuIFRhZUt5b3VuZyBCbGRnLiwKLQkJCQk0Mi00MiBCb25nQ2h1bi1kb25nIEt3YW5Bay1ndSwgU2VvdWwsCi0JCQkJUi5PLiBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC1CMSAgIChoZXgpCQlTaWduYWwgVGVjaG5vbG9neSwgSW5jLgotMDAwNEIxICAgICAoYmFzZSAxNikJCVNpZ25hbCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJM3JkLiBGbC4gRGFibyBCbGRnLgotCQkJCTM3LTIga295byBzb25ncGEKLQkJCQlTZW91bCBLT1JFQSAxMzgtMTEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LUIyICAgKGhleCkJCUVTU0VHSSBTUkwKLTAwMDRCMiAgICAgKGJhc2UgMTYpCQlFU1NFR0kgU1JMCi0JCQkJVmlhIERlbCBDYXZhcmF0b3JpLCAxNwotCQkJCTIwMDkyIENpbmlzZWxsbyBCLiAoTTEpCi0JCQkJSVRBTFkKLQkJCQlJVEFMWQotCi0wMC0wNC1CMyAgIChoZXgpCQlWaWRlb3RlaywgSW5jLgotMDAwNEIzICAgICAoYmFzZSAxNikJCVZpZGVvdGVrLCBJbmMuCi0JCQkJMjQzIFNob2VtYWtlciBSZC4KLQkJCQlQb3R0c3Rvd24gUEEgMTk0NjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUI0ICAgKGhleCkJCUNJQUMKLTAwMDRCNCAgICAgKGJhc2UgMTYpCQlDSUFDCi0JCQkJMTggcnVlIEpvc2VwaCBCQVJBCi0JCQkJOTIxMzAgSXNzeS1sZXMtTW9saW5lYXV4Ci0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTA0LUI1ICAgKGhleCkJCUVxdWl0cmFjIENvcnBvcmF0aW9uCi0wMDA0QjUgICAgIChiYXNlIDE2KQkJRXF1aXRyYWMgQ29ycG9yYXRpb24KLQkJCQkxOTA1IE4uVy4gODJuZCBBdmVudWUKLQkJCQlNaWFtaSBGTCAzMzEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQjYgICAoaGV4KQkJU3RyYXRleCBOZXR3b3JrcywgSW5jLgotMDAwNEI2ICAgICAoYmFzZSAxNikJCVN0cmF0ZXggTmV0d29ya3MsIEluYy4KLQkJCQk2NCBXaGl0ZSBSb2FkCi0JCQkJUmV0cmVhdCwKLQkJCQlDYXBlIFRvd24gIDc5NDUKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMDQtQjcgICAoaGV4KQkJQU1CIGkudC4gSG9sZGluZwotMDAwNEI3ICAgICAoYmFzZSAxNikJCUFNQiBpLnQuIEhvbGRpbmcKLQkJCQladWlkZXJob3V0bGFhbiA0Ci0JCQkJUEogSGFhcmxlbSAyMDEyCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDQtQjggICAoaGV4KQkJS3VtYWhpcmEgQ28uLCBMdGQuCi0wMDA0QjggICAgIChiYXNlIDE2KQkJS3VtYWhpcmEgQ28uLCBMdGQuCi0JCQkJNC0zNCBVamluYWhpZ2FzaGkgMi1DaG9tZQotCQkJCU1pbmFtaWt1IEhpcm9zaGltYQotCQkJCUpBUEFOIDczNC04NTY3Ci0JCQkJSkFQQU4KLQotMDAtMDQtQjkgICAoaGV4KQkJUy5JLiBTb3Vib3UsIEluYy4KLTAwMDRCOSAgICAgKGJhc2UgMTYpCQlTLkkuIFNvdWJvdSwgSW5jLgotCQkJCUt1Ym8gQmxkZy4sIDcwMywgMi0xMiwKLQkJCQlOYW5wZWlkYWktY2hvLCBTaGlidXlhLWt1LAotCQkJCVRva3lvIFRva3lvIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtQkEgICAoaGV4KQkJS0REIE1lZGlhIFdpbGwgQ29ycG9yYXRpb24KLTAwMDRCQSAgICAgKGJhc2UgMTYpCQlLREQgTWVkaWEgV2lsbCBDb3Jwb3JhdGlvbgotCQkJCTItMS0yMyBOYWthbWVndXJvCi0JCQkJTWVndXJvLUt1IFRva3lvCi0JCQkJMTUzLTAwNjEgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC1CQiAgIChoZXgpCQlCYXJkYWMgQ29ycG9yYXRpb24KLTAwMDRCQiAgICAgKGJhc2UgMTYpCQlCYXJkYWMgQ29ycG9yYXRpb24KLQkJCQk0MCBMb2cgQ2Fub2UgQ2lyY2xlCi0JCQkJU3RldmVuc3ZpbGxlIE1EIDIxNjY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1CQyAgIChoZXgpCQlHaWFudGVjLCBJbmMuCi0wMDA0QkMgICAgIChiYXNlIDE2KQkJR2lhbnRlYywgSW5jLgotCQkJCTRGLCBOby4gMywgTGFuZSAxMjMsCi0JCQkJUGFvIENodW5nIFJkLiwgSHNpZW4gVGllbiBDaXR5LCBUYWlwZWkKLQkJCQlUQUlXQU4gMjMxIFRBSVdBTiAyMzEgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC1CRCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMDRCRCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1CRSAgIChoZXgpCQlPcHRYQ29uLCBJbmMuCi0wMDA0QkUgICAgIChiYXNlIDE2KQkJT3B0WENvbiwgSW5jLgotCQkJCVAuTy4gQm94IDEzNDQ5Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0zNDQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1CRiAgIChoZXgpCQlWZXJzYUxvZ2ljIENvcnAuCi0wMDA0QkYgICAgIChiYXNlIDE2KQkJVmVyc2FMb2dpYyBDb3JwLgotCQkJCTM4ODggU3Rld2FydCBSZC4KLQkJCQlFdWdlbmUgT1IgOTc0MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUMwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDRDMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1DMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0QzEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQzIgICAoaGV4KQkJTWFnbmlwaXgsIEluYy4KLTAwMDRDMiAgICAgKGJhc2UgMTYpCQlNYWduaXBpeCwgSW5jLgotCQkJCTM1MzkgU3QtQ2hhcmxlcyBCbHZkLiwgU3VpdGUgMjEyCi0JCQkJS2lya2xhbmQgKFF1ZWJlYykKLQkJCQlDQU5BREEgSDlIM0M0Ci0JCQkJQ0FOQURBCi0KLTAwLTA0LUMzICAgKGhleCkJCUNBU1RPUiBJbmZvcm1hdGlxdWUKLTAwMDRDMyAgICAgKGJhc2UgMTYpCQlDQVNUT1IgSW5mb3JtYXRpcXVlCi0JCQkJMiwgUnVlIER1IEtlZmlyCi0JCQkJU2VuaWEgMzQzCi0JCQkJOTQ1MzcgT3JseSBDZWRleCBGcmFuY2UKLQkJCQlGUkFOQ0UKLQotMDAtMDQtQzQgICAoaGV4KQkJQWxsZW4gJiBIZWF0aCBMaW1pdGVkCi0wMDA0QzQgICAgIChiYXNlIDE2KQkJQWxsZW4gJiBIZWF0aCBMaW1pdGVkCi0JCQkJS2VybmljayBJbmR1c3RyaWFsIEVzdGF0ZSwgUGVucnluCi0JCQkJQ29ybndhbGwgRW5nbGFuZCBUUjEwIDlMVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA0LUM1ICAgKGhleCkJCUFTRSBUZWNobm9sb2dpZXMsIFVTQQotMDAwNEM1ICAgICAoYmFzZSAxNikJCUFTRSBUZWNobm9sb2dpZXMsIFVTQQotCQkJCTY3MjEgQmF1bSBEci4KLQkJCQlLbm94dmlsbGUgVE4gMzc5MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUM2ICAgKGhleCkJCVlhbWFoYSBNb3RvciBDby4sIEx0ZC4KLTAwMDRDNiAgICAgKGJhc2UgMTYpCQlZYW1haGEgTW90b3IgQ28uLCBMdGQuCi0JCQkJSW5mb3JtYXRpb24gU3lzdGVtIERpdmlzaW9uCi0JCQkJMjUwMCBTaGluZ2FpIEl3YXRhLCBTaGl6dW9rYQotCQkJCUphcGFuIFppcDogNDM4LTg1MDEKLQkJCQlKQVBBTgotCi0wMC0wNC1DNyAgIChoZXgpCQlOZXRNb3VudAotMDAwNEM3ICAgICAoYmFzZSAxNikJCU5ldE1vdW50Ci0JCQkJUC5PLkIuIDIzMjUKLQkJCQlLYWRpbWEgNjA5MjAKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDQtQzggICAoaGV4KQkJTElCQSBNYXNjaGluZW5mYWJyaWsgR21iSAotMDAwNEM4ICAgICAoYmFzZSAxNikJCUxJQkEgTWFzY2hpbmVuZmFicmlrIEdtYkgKLQkJCQlQTyBCb3ggMTEyMAotCQkJCUQ5NTExMiBOYWlsYQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LUM5ICAgKGhleCkJCU1pY3JvIEVsZWN0cm9uIENvLiwgTHRkLgotMDAwNEM5ICAgICAoYmFzZSAxNikJCU1pY3JvIEVsZWN0cm9uIENvLiwgTHRkLgotCQkJCTJGIEliYW5ha2ktVGFuYWthIEJsZGcuCi0JCQkJMS0xLTU5IE5ha2Fob2R1bWkgSWJhcmFraS1zaGksIE9zYWthIDU2NwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtQ0EgICAoaGV4KQkJRnJlZU1zIENvcnAuCi0wMDA0Q0EgICAgIChiYXNlIDE2KQkJRnJlZU1zIENvcnAuCi0JCQkJU2hpbmhhbiBCbGRnLiA2RiwKLQkJCQk0NS0xMSBZb2lkby1Eb25nLCBZb3VuZ2RldW5ncG8ta3UsCi0JCQkJU2VvdWwgMTUwLTczNiBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC1DQiAgIChoZXgpCQlUZHNvZnQgQ29tbXVuaWNhdGlvbiwgTHRkLgotMDAwNENCICAgICAoYmFzZSAxNikJCVRkc29mdCBDb21tdW5pY2F0aW9uLCBMdGQuCi0JCQkJNjAgTWVkaW5hdCBIYXllaHVkaW0gU3QuCi0JCQkJSGVyemxpYSA0Njc2NgotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wNC1DQyAgIChoZXgpCQlQZWVrIFRyYWZmaWMgQi5WLgotMDAwNENDICAgICAoYmFzZSAxNikJCVBlZWsgVHJhZmZpYyBCLlYuCi0JCQkJUG9zdGJ1cyAyNTQyCi0JCQkJMzgwMCBHQiBBbWVyc2Zvb3QKLQkJCQlUaGUgTmV0aGVybGFuZHMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wNC1DRCAgIChoZXgpCQlJbmZvcm1lZGlhIFJlc2VhcmNoIEdyb3VwCi0wMDA0Q0QgICAgIChiYXNlIDE2KQkJSW5mb3JtZWRpYSBSZXNlYXJjaCBHcm91cAotCQkJCTM5MCBTdC1WYWxsaWVyIEVhc3QKLQkJCQlTdWl0ZSAyMDMKLQkJCQlRdWViZWMgUFEgRzFLIDNQNiBDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDQtQ0UgICAoaGV4KQkJUGF0cmlhIEFpbG9uCi0wMDA0Q0UgICAgIChiYXNlIDE2KQkJUGF0cmlhIEFpbG9uCi0JCQkJTmF1bGFrYXR1IDMKLQkJCQlGSU4tMzMxMDAgVGFtcGVyZQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTA0LUNGICAgKGhleCkJCVNlYWdhdGUgVGVjaG5vbG9neQotMDAwNENGICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neQotCQkJCTEyODAgRGlzYyBEcml2ZQotCQkJCVNoYWtvcGVlIE1OIDU1Mzc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1EMCAgIChoZXgpCQlTb2Z0bGluayBzLnIuby4KLTAwMDREMCAgICAgKGJhc2UgMTYpCQlTb2Z0bGluayBzLnIuby4KLQkJCQlUb21rb3ZhIDQwOQotCQkJCUtyYWx1cHkgbi4gVmx0YXZvdQotCQkJCUN6ZWNoIFJlcHVibGljCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMDQtRDEgICAoaGV4KQkJRHJldyBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDREMSAgICAgKGJhc2UgMTYpCQlEcmV3IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTM5MTUgUmVzZWFyY2ggUGFyayBEcgotCQkJCVN1aXRlIEExMAotCQkJCUFubiBBcmJvciBNSSA0ODEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRDIgICAoaGV4KQkJQWRjb24gVGVsZW1ldHJ5IEdtYkgKLTAwMDREMiAgICAgKGJhc2UgMTYpCQlBZGNvbiBUZWxlbWV0cnkgR21iSAotCQkJCUlua3VzdHIuIDI0Ci0JCQkJQS0zNDAwIEtsb3N0ZXJuZXVidXJnCi0JCQkJQVVTVFJJQQotCi0wMC0wNC1EMyAgIChoZXgpCQlUb3lva2Vpa2kgQ28uLCBMdGQuCi0wMDA0RDMgICAgIChiYXNlIDE2KQkJVG95b2tlaWtpIENvLiwgTHRkLgotCQkJCVdhZGEgMzk2Ny0xMCwgTWF0c3Vtb3RvLUNpdHkKLQkJCQlOYWdhbm8gMzkwLTEyOTgsCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC1ENCAgIChoZXgpCQlQcm92aWV3IEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwNEQ0ICAgICAoYmFzZSAxNikJCVByb3ZpZXcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJNkYsIE5vLiAxLCBQYXUtU2hlbmcgUm9hZAotCQkJCVl1bmcgSG8gQ2l0eSwgVGFpcGVpLAotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtRDUgICAoaGV4KQkJSGl0YWNoaSBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb24gRW5naW5lZXJpbmcsIEx0ZC4KLTAwMDRENSAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbiBFbmdpbmVlcmluZywgTHRkLgotCQkJCVF1ZWVuJ3MgVG93ZXIgQjIxRiwgMi0zLTMsIE1pbmF0b21pcmFpLAotCQkJCU5pc2hpLWt1LCBZb2tvaGFtYSwgMjIwLTYxMjEKLQkJCQlKQVBBTgotCi0wMC0wNC1ENiAgIChoZXgpCQlUYWthZ2kgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMDRENiAgICAgKGJhc2UgMTYpCQlUYWthZ2kgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQlFbGVjdHJvbmljIEluc3RydW1lbnQgRGl2LgotCQkJCTM1MDgsIEthbWlpZGUtTWlrYWVzaGksIEV1amlub21peWEtc2hpLAotCQkJCTQxOC0wMTAzIDQxOC0wMTAzIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtRDcgICAoaGV4KQkJT21pdGVjIEluc3RydW1lbnRhdGlvbiBMdGQuCi0wMDA0RDcgICAgIChiYXNlIDE2KQkJT21pdGVjIEluc3RydW1lbnRhdGlvbiBMdGQuCi0JCQkJSG9wdG9uIEluZHVzdHJpYWwgRXN0LgotCQkJCUxvbmRvbiBSZC4sIERldml6ZXMgV2lsdHNoaXJlIFNOMTAgMkVVCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA0LUQ4ICAgKGhleCkJCUlQV2lyZWxlc3MsIEluYy4KLTAwMDREOCAgICAgKGJhc2UgMTYpCQlJUFdpcmVsZXNzLCBJbmMuCi0JCQkJNCBMYW5kc293bmUgQ291cnQKLQkJCQlCdW1wZXJzIFdheSBDaGlwcGVuaGFtLCBXaWx0c2hpcmUsCi0JCQkJU04xNCBHUlogVUsKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC1EOSAgIChoZXgpCQlUaXRhbiBFbGVjdHJvbmljcywgSW5jLgotMDAwNEQ5ICAgICAoYmFzZSAxNikJCVRpdGFuIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJUm0gNywgMTEgRmwuLCBOby4gMzk4LAotCQkJCUh1YW4tUGVpIFJvYWQsIENodW5nLUxpLAotCQkJCVRhb3l1YW4gVGFveXVhbiBUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LURBICAgKGhleCkJCVJlbGF4IFRlY2hub2xvZ3ksIEluYy4KLTAwMDREQSAgICAgKGJhc2UgMTYpCQlSZWxheCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJREJBLyBHcmFuaXRlIERpZ2l0YWwKLQkJCQkzMTAxIFdoaXBwbGUgUm9hZAotCQkJCVVuaW9uIENpdHkgQ0EgOTQ1ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LURCICAgKGhleCkJCVRlbGx1cyBHcm91cCBDb3JwLgotMDAwNERCICAgICAoYmFzZSAxNikJCVRlbGx1cyBHcm91cCBDb3JwLgotCQkJCTRGLCBOby4gMTUgSW5kdXN0cnkgRS4gUmQuLCBJWAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSBIc2luY2h1IFRhaXdhbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtREMgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDA0REMgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJRGVwYXJ0bWVudCA2ODAwCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAgQnJhcHRvbiBPTiBMNgotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wNC1ERCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0REQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtREUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNERFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LURGICAgKGhleCkJCVRlcmFjb20gVGVsZW1hdGljYSBMdGRhLgotMDAwNERGICAgICAoYmFzZSAxNikJCVRlcmFjb20gVGVsZW1hdGljYSBMdGRhLgotCQkJCVIuIEZlbGlwZSBOZXJpLCAyNDYgQ0ouIDMwMQotCQkJCTkwNDQwLTE1MCBQb3J0byBBbGxlZ3JlIFJTCi0JCQkJQmF6aWwKLQkJCQlCUkFaSUwKLQotMDAtMDQtRTAgICAoaGV4KQkJUHJvY2tldCBOZXR3b3JrcwotMDAwNEUwICAgICAoYmFzZSAxNikJCVByb2NrZXQgTmV0d29ya3MKLQkJCQkxMTAwIENhZGlsbGFjIENvdXJ0Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUUxICAgKGhleCkJCUluZmluaW9yIE1pY3Jvc3lzdGVtcwotMDAwNEUxICAgICAoYmFzZSAxNikJCUluZmluaW9yIE1pY3Jvc3lzdGVtcwotCQkJCTJGLCBBY2N1ZmFyIEJsZGcsIDIzNC0xMCwKLQkJCQlKYW1zaWwtRG9uZywgU29uZ3BhLUd1Ci0JCQkJU2VvdWwgS09SRUEgMTM4LTIyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC1FMiAgIChoZXgpCQlTTUMgTmV0d29ya3MsIEluYy4KLTAwMDRFMiAgICAgKGJhc2UgMTYpCQlTTUMgTmV0d29ya3MsIEluYy4KLQkJCQk2IEh1Z2hlcwotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRTMgICAoaGV4KQkJQWNjdG9uIFRlY2hub2xvZ3kgQ29ycC4KLTAwMDRFMyAgICAgKGJhc2UgMTYpCQlBY2N0b24gVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLiAxIENyZWF0aW9uIFJkLiBJSUksCi0JCQkJU0JJUAotCQkJCUhzaW5jaHUgSHNpbmNodSBUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LUU0ICAgKGhleCkJCURhZXJ5dW5nIEluZC4sIEluYy4KLTAwMDRFNCAgICAgKGJhc2UgMTYpCQlEYWVyeXVuZyBJbmQuLCBJbmMuCi0JCQkJIzIxOS02LCBLYXNhbiBEb25nLAotCQkJCUt1bWNodW4ga3UsCi0JCQkJU2VvdWwgU2VvdWwgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtRTUgICAoaGV4KQkJR2xvbmV0IFN5c3RlbXMsIEluYy4KLTAwMDRFNSAgICAgKGJhc2UgMTYpCQlHbG9uZXQgU3lzdGVtcywgSW5jLgotCQkJCTExRmwuLCBKZWlsIEJsZGcuLCA5NC00NiwgN0thCi0JCQkJWW91bmdkdW5ncG8tZG9uZyBZb25nZHVuZ3BvLUt1IFNlb3VsLCAxNQotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LUU2ICAgKGhleCkJCUJhbnlhbiBOZXR3b3JrIFByaXZhdGUgTGltaXRlZAotMDAwNEU2ICAgICAoYmFzZSAxNikJCUJhbnlhbiBOZXR3b3JrIFByaXZhdGUgTGltaXRlZAotCQkJCTQ0MywgOHRoIEZsb29yLCBHdW5hIENvbXBsZXgKLQkJCQlBbm5hc2FsYWksIENoZW5uYWktNjAwIDAxOAotCQkJCUlORElBCi0JCQkJSU5ESUEKLQotMDAtMDQtRTcgICAoaGV4KQkJTGlnaHRwb2ludGUgQ29tbXVuaWNhdGlvbnMsIEluYwotMDAwNEU3ICAgICAoYmFzZSAxNikJCUxpZ2h0cG9pbnRlIENvbW11bmljYXRpb25zLCBJbmMKLQkJCQkxMDE0MCBCYXJuZXMgQ2FueW9uIFJvYWQKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUU4ICAgKGhleCkJCUlFUiwgSW5jLgotMDAwNEU4ICAgICAoYmFzZSAxNikJCUlFUiwgSW5jLgotCQkJCTQ1MDEgU28uIEdlbmVyYWwgQnJ1Y2UgRHIKLQkJCQlTdWl0ZSA1MAotCQkJCVRlbXBsZSBUWCA3NjUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRTkgICAoaGV4KQkJSW5maW5pc3dpdGNoIENvcnBvcmF0aW9uCi0wMDA0RTkgICAgIChiYXNlIDE2KQkJSW5maW5pc3dpdGNoIENvcnBvcmF0aW9uCi0JCQkJMTM0IEZsYW5kZXJzIFJvYWQKLQkJCQlXZXN0Ym9yb3VnaCBNQSAwMTU4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRUEgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMDRFQSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTExMDAwIFdvbGZlIFJvYWQsIE1haWxzdG9wIDQyTEUKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUVCICAgKGhleCkJCVBheG9uZXQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDRFQiAgICAgKGJhc2UgMTYpCQlQYXhvbmV0IENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNDA0NiBDbGlwcGVyIENvdXJ0Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRUMgICAoaGV4KQkJTWVtb2JveCBTQQotMDAwNEVDICAgICAoYmFzZSAxNikJCU1lbW9ib3ggU0EKLQkJCQkxLCBQbGFjZSBEYW1lIFN1emFubmUKLQkJCQk5MTE5MCBTYWludCBBdWJpbgotCQkJCUZyYW5jZQotCQkJCUZSQU5DRQotCi0wMC0wNC1FRCAgIChoZXgpCQlCaWxsaW9uIEVsZWN0cmljIENvLiwgTHRkLgotMDAwNEVEICAgICAoYmFzZSAxNikJCUJpbGxpb24gRWxlY3RyaWMgQ28uLCBMdGQuCi0JCQkJOEYsIE5vLjE5MiwgU2VjLjIsIENodW5nIEhzaW5nIFJkLiwKLQkJCQlIc2luIFRpZW4gQ2l0eSwgVGFpcGVpIEhzaWVuCi0JCQkJVGFpd2FuIFRhaXdhbiBST0MKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LUVFICAgKGhleCkJCUxpbmNvbG4gRWxlY3RyaWMgQ29tcGFueQotMDAwNEVFICAgICAoYmFzZSAxNikJCUxpbmNvbG4gRWxlY3RyaWMgQ29tcGFueQotCQkJCTIyODAxIFN0LiBDbGFpciBBdmVudWUKLQkJCQlDbGV2ZWxhbmQgT0ggNDQxMTctMTE5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRUYgICAoaGV4KQkJUG9sZXN0YXIgQ29ycC4KLTAwMDRFRiAgICAgKGJhc2UgMTYpCQlQb2xlc3RhciBDb3JwLgotCQkJCVJNICM4MDIgU2VvR2VvbiBCL0QsIDE0ODAsCi0JCQkJR3dhbllhbmctRG9uZywgRG9uZ0FuLUd1LCBBbllhbmcgQ2l0eSwgNAotCQkJCUtvcmVhIChST0spCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LUYwICAgKGhleCkJCUludGVybmF0aW9uYWwgQ29tcHV0ZXJzLCBMdGQKLTAwMDRGMCAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIENvbXB1dGVycywgTHRkCi0JCQkJMSBXZW5sb2NrIFdheQotCQkJCVdlc3QgR29ydG9uIE1hbmNoZXN0ZXIsIE0xMiA1RFIKLQkJCQlVSwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA0LUYxICAgKGhleCkJCVdoZXJlTmV0Ci0wMDA0RjEgICAgIChiYXNlIDE2KQkJV2hlcmVOZXQKLQkJCQkxMDcgVy4gTWNLaW5uZXkgQXZlbnVlCi0JCQkJUm9nZXJzdmlsbGUgVE4gMzc4NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUYyICAgKGhleCkJCVBvbHljb20KLTAwMDRGMiAgICAgKGJhc2UgMTYpCQlQb2x5Y29tCi0JCQkJMTAwMCBXZXN0IDE0dGggU3RyZWV0Ci0JCQkJTm9ydGggVmFuY291dmVyLCBCLkMuCi0JCQkJQ2FuYWRhIFY3UDNQMwotCQkJCUNBTkFEQQotCi0wMC0wNC1GMyAgIChoZXgpCQlGUyBGT1JUSC1TWVNURU1FIEdtYkgKLTAwMDRGMyAgICAgKGJhc2UgMTYpCQlGUyBGT1JUSC1TWVNURU1FIEdtYkgKLQkJCQlLdWVmZXJzdHIuIDgKLQkJCQlELTc5MjA2IEJyZWlzYWNoCi0JCQkJR2VybWFueQotCQkJCUdFUk1BTlkKLQotMDAtMDQtRjQgICAoaGV4KQkJSW5maW5pdGUgRWxlY3Ryb25pY3MgSW5jLgotMDAwNEY0ICAgICAoYmFzZSAxNikJCUluZmluaXRlIEVsZWN0cm9uaWNzIEluYy4KLQkJCQlOby40NzgtMSwgU2VjIDIKLQkJCQlDaGluZyBIYWkgUm9hZCA0MDcsIFRhaSBDaHVuZwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtRjUgICAoaGV4KQkJU25vd1Nob3JlIE5ldHdvcmtzLCBJbmMuCi0wMDA0RjUgICAgIChiYXNlIDE2KQkJU25vd1Nob3JlIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjg1IEJpbGxlcmljYSBSb2FkCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRjYgICAoaGV4KQkJQW1waHVzCi0wMDA0RjYgICAgIChiYXNlIDE2KQkJQW1waHVzCi0JCQkJMjM3MiBRdW1lIERyaXZlLCAjRgotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1GNyAgIChoZXgpCQlPbWVnYSBCYW5kLCBJbmMuCi0wMDA0RjcgICAgIChiYXNlIDE2KQkJT21lZ2EgQmFuZCwgSW5jLgotCQkJCTkwMjAtSSBDYXBpdGFsIG9mIFRleGFzIEhnaHd5IE4KLQkJCQlTdWl0ZSAjMjcwCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1GOCAgIChoZXgpCQlRVUFMSUNBQkxFIFRWIEluZHVzdHJpYSBFIENvbS4sIEx0ZGEKLTAwMDRGOCAgICAgKGJhc2UgMTYpCQlRVUFMSUNBQkxFIFRWIEluZHVzdHJpYSBFIENvbS4sIEx0ZGEKLQkJCQlBdi4gSm9hbyBQYXVsbyBBYmxhcywgMzA4Ci0JCQkJSmFyZGltIERhIEdsb3JpYSAtIENvdGlhIC1TUCBDRVAgMDY3MTEtMgotCQkJCUJSQVpJTAotCi0wMC0wNC1GOSAgIChoZXgpCQlYdGVyYSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNEY5ICAgICAoYmFzZSAxNikJCVh0ZXJhIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNTAwIFcgQmV0aGFueSBEcml2ZQotCQkJCUFsbGVuIFRYIDc1MDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1GQSAgIChoZXgpCQlOQlMgVGVjaG5vbG9naWVzIEluYy4KLTAwMDRGQSAgICAgKGJhc2UgMTYpCQlOQlMgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk3MDMgRXZhbnMgQXZlbnVlLCBTdWl0ZSA0MDAKLQkJCQlUb3JvbnRvCi0JCQkJT250YXJpbyAgTTlDIDVFOQotCQkJCUNBTkFEQQotCi0wMC0wNC1GQiAgIChoZXgpCQlDb21tdGVjaCwgSW5jLgotMDAwNEZCICAgICAoYmFzZSAxNikJCUNvbW10ZWNoLCBJbmMuCi0JCQkJOTAxMSBFLiAzN3RoIFN0cmVldAotCQkJCVdpY2hpdGEgS1MgNjcyMjYtMjAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRkMgICAoaGV4KQkJU3RyYXR1cyBDb21wdXRlciAoREUpLCBJbmMuCi0wMDA0RkMgICAgIChiYXNlIDE2KQkJU3RyYXR1cyBDb21wdXRlciAoREUpLCBJbmMuCi0JCQkJMTExIFBvd2Rlcm1pbGwgUm9hZAotCQkJCU1heW5hcmQgTUEgMDE3NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUZEICAgKGhleCkJCUphcGFuIENvbnRyb2wgRW5naW5lZXJpbmcgQ28uLCBMdGQuCi0wMDA0RkQgICAgIChiYXNlIDE2KQkJSmFwYW4gQ29udHJvbCBFbmdpbmVlcmluZyBDby4sIEx0ZC4KLQkJCQkxLTUtMSwgSGlnYXNoaWFtYWdhd2EsIFRha2F0c3VraS1zaGkKLQkJCQlPc2FrYSA1NjktMDAxMgotCQkJCUpBUEFOCi0KLTAwLTA0LUZFICAgKGhleCkJCVBlbGFnbyBOZXR3b3JrcwotMDAwNEZFICAgICAoYmFzZSAxNikJCVBlbGFnbyBOZXR3b3JrcwotCQkJCTcwMSBFLiBQbGFubyBQYXJrd2F5IC0gU3RlLiAjMjA1Ci0JCQkJUGxhbm8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUZGICAgKGhleCkJCUFjcm9uZXQgQ28uLCBMdGQuCi0wMDA0RkYgICAgIChiYXNlIDE2KQkJQWNyb25ldCBDby4sIEx0ZC4KLQkJCQlTYW1hbiBCL0QgMkZsCi0JCQkJODExLTE1IEJhbmdiYWUtRG9uZyBTZW9jaG8ta3UsIFNlb3VsCi0JCQkJMTM3LTA2NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS0wMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1MDAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMDEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNTAxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTAyICAgKGhleCkJCUFQUExFIENPTVBVVEVSCi0wMDA1MDIgICAgIChiYXNlIDE2KQkJQVBQTEUgQ09NUFVURVIKLQkJCQkyMDY1MCBWQUxMRVkgR1JFRU4gRFJJVkUKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTAzICAgKGhleCkJCUlDT05BRwotMDAwNTAzICAgICAoYmFzZSAxNikJCUlDT05BRwotCQkJCUFNIEJhaG5ob2YgMgotCQkJCTU1NzY1IEJpcmtlbmZlbGQKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTA0ICAgKGhleCkJCU5hcmF5IEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbiBFbnRlcnByaXNlCi0wMDA1MDQgICAgIChiYXNlIDE2KQkJTmFyYXkgSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uIEVudGVycHJpc2UKLQkJCQkzRiBTYW4gV29vIEJsZGcuLCAxNTQzLTExCi0JCQkJU2VvY2hvLURvbmcsIFNlb2Noby1LdSwKLQkJCQlTZW91bCAxMzctMDcwICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtMDUgICAoaGV4KQkJU3lzdGVtcyBJbnRlZ3JhdGlvbiBTb2x1dGlvbnMsIEluYy4KLTAwMDUwNSAgICAgKGJhc2UgMTYpCQlTeXN0ZW1zIEludGVncmF0aW9uIFNvbHV0aW9ucywgSW5jLgotCQkJCTM5MjIgQ29jb251dCBQYWxtIERyaXZlLAotCQkJCVN1aXRlIDEwNgotCQkJCVRhbXBhIEZMIDMzNjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0wNiAgIChoZXgpCQlSZWRkbyBOZXR3b3JrcyBBQgotMDAwNTA2ICAgICAoYmFzZSAxNikJCVJlZGRvIE5ldHdvcmtzIEFCCi0JCQkJTGl2ZGp1cnNnYXRhbiA0Ci0JCQkJU0UgMTIxIDYyIEpvaGFubmVzaG92Ci0JCQkJU1dFREVOCi0KLTAwLTA1LTA3ICAgKGhleCkJCUZpbmUgQXBwbGlhbmNlIENvcnAuCi0wMDA1MDcgICAgIChiYXNlIDE2KQkJRmluZSBBcHBsaWFuY2UgQ29ycC4KLQkJCQk3RmwuLCBOby4gNDk5LAotCQkJCUNodW5nLUNoZW5nIFJkLiwgSHNpbnRpZW4sIFRhaXBlaQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtMDggICAoaGV4KQkJSW5ldGNhbSwgSW5jLgotMDAwNTA4ICAgICAoYmFzZSAxNikJCUluZXRjYW0sIEluYy4KLQkJCQkxMDE3MSBQYWNpZmljIE1lc2EgQmx2ZC4KLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTA5ICAgKGhleCkJCUFWT0MgTmlzaGltdXJhIEx0ZC4KLTAwMDUwOSAgICAgKGJhc2UgMTYpCQlBVk9DIE5pc2hpbXVyYSBMdGQuCi0JCQkJSm9nYXNha2kgNC0xNi0xNAotCQkJCU1peWF6YWtpLWNpdHksIE1peWF6YWtpIDg4MC0wOTE3LAotCQkJCUpBUEFOCi0KLTAwLTA1LTBBICAgKGhleCkJCUlDUyBTcGEKLTAwMDUwQSAgICAgKGJhc2UgMTYpCQlJQ1MgU3BhCi0JCQkJVmlhIFJvbWFubyBBTAotCQkJCTEwMDEwIFNjYXJtYWdubyAoVE8pCi0JCQkJSVRBTFkKLQotMDAtMDUtMEIgICAoaGV4KQkJU0lDT00gU3lzdGVtcywgSW5jLgotMDAwNTBCICAgICAoYmFzZSAxNikJCVNJQ09NIFN5c3RlbXMsIEluYy4KLQkJCQk0MTQwIFNreXJvbiBEcml2ZQotCQkJCURveWxlc3Rvd24gUEEgMTg5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTBDICAgKGhleCkJCU5ldHdvcmsgUGhvdG9uaWNzLCBJbmMuCi0wMDA1MEMgICAgIChiYXNlIDE2KQkJTmV0d29yayBQaG90b25pY3MsIEluYy4KLQkJCQk0NTEgQXZpYXRpb24gQm91bGV2YXJkCi0JCQkJU2FudGEgUm9zYSBDQSA5NTQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMEQgICAoaGV4KQkJTWlkc3RyZWFtIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNTBEICAgICAoYmFzZSAxNikJCU1pZHN0cmVhbSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk3NzcgMTA4dGggQXZlLiBORQotCQkJCVN1aXRlIDE3MDAKLQkJCQlCZWxsZXZ1ZSBXQSA5ODAwNC01MTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0wRSAgIChoZXgpCQkzd2FyZSwgSW5jLgotMDAwNTBFICAgICAoYmFzZSAxNikJCTN3YXJlLCBJbmMuCi0JCQkJNzAxIEUuIE1pZGRsZWZpZWxkIFJkLgotCQkJCVN1aXRlIDMwMAotCQkJCU10LiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0wRiAgIChoZXgpCQlUYW5ha2EgUy9TIEx0ZC4KLTAwMDUwRiAgICAgKGJhc2UgMTYpCQlUYW5ha2EgUy9TIEx0ZC4KLQkJCQkxOTQyIE5vbXVyYSBIaXJvb2thCi0JCQkJU2hpb2ppcmktQ2l0eQotCQkJCU5hZ2FubyAzOTktMDcwMiAKLQkJCQlKQVBBTgotCi0wMC0wNS0xMCAgIChoZXgpCQlJbmZpbml0ZSBTaGFuZ2hhaSBDb21tdW5pY2F0aW9uIFRlcm1pbmFscyBMdGQuCi0wMDA1MTAgICAgIChiYXNlIDE2KQkJSW5maW5pdGUgU2hhbmdoYWkgQ29tbXVuaWNhdGlvbiBUZXJtaW5hbHMgTHRkLgotCQkJCTc3NyBDaHVuZ2lhbyBSb2FkLCBQdWRvbmcKLQkJCQlTaGFuZ2hhaSAyMDEyMDYsCi0JCQkJQ0hJTkEKLQotMDAtMDUtMTEgICAoaGV4KQkJQ29tcGxlbWVudGFyeSBUZWNobm9sb2dpZXMgTHRkCi0wMDA1MTEgICAgIChiYXNlIDE2KQkJQ29tcGxlbWVudGFyeSBUZWNobm9sb2dpZXMgTHRkCi0JCQkJQ29tdGVjaCBIb3VzZSwgMjggTWFuY2hlc3RlciBSb2FkCi0JCQkJV2VzdGhvdWdodG9uIEJPTFRPTgotCQkJCUJMNSAzUUoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNS0xMiAgIChoZXgpCQlNZXNoTmV0d29ya3MsIEluYy4KLTAwMDUxMiAgICAgKGJhc2UgMTYpCQlNZXNoTmV0d29ya3MsIEluYy4KLQkJCQk0ODUgS2VsbGVyIFJkLiwgU3VpdGUgMjUwCi0JCQkJTWFpdGxhbmQgRkwgMzI3NTEtNzUzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMTMgICAoaGV4KQkJVlRMaW54IE11bHRpbWVkaWEgU3lzdGVtcywgSW5jLgotMDAwNTEzICAgICAoYmFzZSAxNikJCVZUTGlueCBNdWx0aW1lZGlhIFN5c3RlbXMsIEluYy4KLQkJCQk4NDAxIENvbGVzdmlsbGUgUm9hZCwKLQkJCQlTdWl0ZSA3NTAKLQkJCQlTaWx2ZXIgU3ByaW5nIE1EIDIwOTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0xNCAgIChoZXgpCQlLRFQgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDUxNCAgICAgKGJhc2UgMTYpCQlLRFQgU3lzdGVtcyBDby4sIEx0ZC4KLQkJCQkxMDItNiwgQ2hvYnUtTGksIE1vaHl1bi1NeXVuLAotCQkJCVlvbmdpbi1DaXR5LCBLeXVuZ2tpLURvLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS0xNSAgIChoZXgpCQlOdWFyayBDby4sIEx0ZC4KLTAwMDUxNSAgICAgKGJhc2UgMTYpCQlOdWFyayBDby4sIEx0ZC4KLQkJCQkxMkYsIEFueWFuZyBLIGNlbnRlciwgMTU5MS05LCBCdXJpbS1kb25nCi0JCQkJRG9uZ2FuLWd1LCBBbnlhbmctc2ksCi0JCQkJR3VuZ2dpLWRvIDQzMS0wNjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtMTYgICAoaGV4KQkJU01BUlQgTW9kdWxhciBUZWNobm9sb2dpZXMKLTAwMDUxNiAgICAgKGJhc2UgMTYpCQlTTUFSVCBNb2R1bGFyIFRlY2hub2xvZ2llcwotCQkJCTQzMDUgQ3VzaGluZyBQa3d5Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMTcgICAoaGV4KQkJU2hlbGxjb21tLCBJbmMuCi0wMDA1MTcgICAgIChiYXNlIDE2KQkJU2hlbGxjb21tLCBJbmMuCi0JCQkJUm0gIzYxMjIgRVRSSSBUQkkgQ2VudGVyLCAxLAotCQkJCUVvZXVuLURvbmcsIFl1c29uZy1HdSwgVGFlam9uLCAzMDUtMzMzLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS0xOCAgIChoZXgpCQlKdXBpdGVycyBUZWNobm9sb2d5Ci0wMDA1MTggICAgIChiYXNlIDE2KQkJSnVwaXRlcnMgVGVjaG5vbG9neQotCQkJCVBPIEJveCAxMjY5MwotCQkJCUVsaXphYmV0aCBTdHJlZXQgQnJpc2JhbmUgUUxEIDQwMDIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDUtMTkgICAoaGV4KQkJU2llbWVucyBCdWlsZGluZyBUZWNobm9sb2dpZXMgQUcsCi0wMDA1MTkgICAgIChiYXNlIDE2KQkJU2llbWVucyBCdWlsZGluZyBUZWNobm9sb2dpZXMgQUcsCi0JCQkJQ2VyYmVydXMgRGl2aXNpb24KLQkJCQlhbHRlIExhbmRzdHJhc3NlIDQxMSBDSC04NzA4IE1hZW5uZWRvcmYKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wNS0xQSAgIChoZXgpCQkzQ29tIEV1cm9wZSBMdGQuCi0wMDA1MUEgICAgIChiYXNlIDE2KQkJM0NvbSBFdXJvcGUgTHRkLgotCQkJCTNDb20gQ2VudHJlLCBCb3VuZGFyeSBXYXksCi0JCQkJSGVtcHN0ZWFkLCBIZXJ0cywgSFAyIDdZVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LTFCICAgKGhleCkJCU1hZ2ljIENvbnRyb2wgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwNTFCICAgICAoYmFzZSAxNikJCU1hZ2ljIENvbnRyb2wgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTZGLCBOby4gMTIwLTExIENodW5nIFNoYW4gUmQuCi0JCQkJU2VjIDMsIENodW5nIEhvIFRhaXBlaQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtMUMgICAoaGV4KQkJWG5ldCBUZWNobm9sb2d5IENvcnAuCi0wMDA1MUMgICAgIChiYXNlIDE2KQkJWG5ldCBUZWNobm9sb2d5IENvcnAuCi0JCQkJOUYtMTYsIE5vLiAxMiwgTGFuZSA2MDksCi0JCQkJU2VjLiA1LCBDaHVuZyBIc2luIFJvYWQsIFNhbiBDaHVuZyBDaXR5LAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtMUQgICAoaGV4KQkJQWlyb2NvbiwgSW5jLgotMDAwNTFEICAgICAoYmFzZSAxNikJCUFpcm9jb24sIEluYy4KLQkJCQkxMTYgSG91Z2h0b24gTGFuZQotCQkJCUJveGJvcm8gTUEgMDE3MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTFFICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotMDAwNTFFICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTE3NDUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0xRiAgIChoZXgpCQlUYWlqaW4gTWVkaWEgQ28uLCBMdGQuCi0wMDA1MUYgICAgIChiYXNlIDE2KQkJVGFpamluIE1lZGlhIENvLiwgTHRkLgotCQkJCTY0MC04IFR1bmdjaG9uLURvbmcKLQkJCQlLYW5nc2VvLUd1LAotCQkJCVNlb3VsICAxNTctMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTIwICAgKGhleCkJCVNtYXJ0cm9uaXgsIEluYy4KLTAwMDUyMCAgICAgKGJhc2UgMTYpCQlTbWFydHJvbml4LCBJbmMuCi0JCQkJMjI2ODUgVGhyZWUgTm90Y2ggUmQuCi0JCQkJQ2FsaWZvcm5pYSBNRCAyMDYxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMjEgICAoaGV4KQkJQ29udHJvbCBNaWNyb3N5c3RlbXMKLTAwMDUyMSAgICAgKGJhc2UgMTYpCQlDb250cm9sIE1pY3Jvc3lzdGVtcwotCQkJCTQ4IFN0ZWFjaWUgRHJpdmUKLQkJCQlPbnRhcmlvICBLMksgMkE5Ci0JCQkJQ0FOQURBCi0KLTAwLTA1LTIyICAgKGhleCkJCUxFQSpEIENvcnBvcmF0aW9uLCBJbmMuCi0wMDA1MjIgICAgIChiYXNlIDE2KQkJTEVBKkQgQ29ycG9yYXRpb24sIEluYy4KLQkJCQlBZHZhdGVjaCBCbGRnLgotCQkJCVRlcmFkaW9uIEluZC4gUGFyayBELk4uIE1pc2dhdiwgMjAxNzkKLQkJCQlJU1JBRUwKLQotMDAtMDUtMjMgICAoaGV4KQkJQVZMIExpc3QgR21iSAotMDAwNTIzICAgICAoYmFzZSAxNikJCUFWTCBMaXN0IEdtYkgKLQkJCQlIYW5zIExpc3QgUGxhdHogMQotCQkJCUEtODAyMCBHcmF6Ci0JCQkJQVVTVFJJQQotCi0wMC0wNS0yNCAgIChoZXgpCQlCVEwgU3lzdGVtIChISykgTGltaXRlZAotMDAwNTI0ICAgICAoYmFzZSAxNikJCUJUTCBTeXN0ZW0gKEhLKSBMaW1pdGVkCi0JCQkJMTQvRi4sIEJsay4gQiwgVml0YSBUb3dlciwKLQkJCQkyOSBXb25nIENodWsgSGFuZyBSZC4sCi0JCQkJQWJlcmRlZW4gIAotCQkJCUhPTkcgS09ORwotCi0wMC0wNS0yNSAgIChoZXgpCQlQdXJldGVrIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDA1MjUgICAgIChiYXNlIDE2KQkJUHVyZXRlayBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCU5vLiAxNCwgNCBGbHIuIExhbmUgMjM1Ci0JCQkJUGFvIENoaWFvIFJvYWQgSHNpbiBUaWVuLCBUYWlwZWkgSHNpZW4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LTI2ICAgKGhleCkJCUlQQVMgR21iSAotMDAwNTI2ICAgICAoYmFzZSAxNikJCUlQQVMgR21iSAotCQkJCUdyYWJlbnN0ci4gMTQ5YQotCQkJCTQ3MDU3IER1aXNidXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wNS0yNyAgIChoZXgpCQlTSiBUZWsgQ28uIEx0ZAotMDAwNTI3ICAgICAoYmFzZSAxNikJCVNKIFRlayBDby4gTHRkCi0JCQkJSG8gZ2FlIERvbmcgOTc2LTUsIERvbmcgQW4gS3UsCi0JCQkJQW4geWFuZyBDaXR5LCBLeXVuZyBLZWUgRG8sCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTI4ICAgKGhleCkJCU5ldyBGb2N1cywgSW5jLgotMDAwNTI4ICAgICAoYmFzZSAxNikJCU5ldyBGb2N1cywgSW5jLgotCQkJCTI2MzAgV2Fsc2ggQXZlLgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0yOSAgIChoZXgpCQlTaGFuZ2hhaSBCcm9hZGFuIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZAotMDAwNTI5ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEJyb2FkYW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJMTVGLCBTdW50aW1lIEludGVybmF0aW9uYWwgTWFuc2lvbgotCQkJCU5vLiA0NTAgRnVzaGFuIFJvYWQsIFB1ZG9uZyBEaXN0cmljdCwgU2gKLQkJCQkyMDAxMjIKLQkJCQlDSElOQQotCi0wMC0wNS0yQSAgIChoZXgpCQlJa2VnYW1pIFRzdXNoaW5raSBDby4sIEx0ZC4KLTAwMDUyQSAgICAgKGJhc2UgMTYpCQlJa2VnYW1pIFRzdXNoaW5raSBDby4sIEx0ZC4KLQkJCQk1LTYtMTYgSWtlZ2FtaSBPaHRhLWt1LAotCQkJCVRva3lvCi0JCQkJMTQ2LTg1NjcKLQkJCQlKQVBBTgotCi0wMC0wNS0yQiAgIChoZXgpCQlIT1JJQkEsIEx0ZC4KLTAwMDUyQiAgICAgKGJhc2UgMTYpCQlIT1JJQkEsIEx0ZC4KLQkJCQkyIE1peWFub2hpZ2FzaGksIEtpc3Nob2luLAotCQkJCU1pbmFtaS1rdSwgS3lvdG8KLQkJCQk2MDEtODUxMAotCQkJCUpBUEFOCi0KLTAwLTA1LTJDICAgKGhleCkJCVN1cHJlbWUgTWFnaWMgQ29ycG9yYXRpb24KLTAwMDUyQyAgICAgKGJhc2UgMTYpCQlTdXByZW1lIE1hZ2ljIENvcnBvcmF0aW9uCi0JCQkJU3VuIFRvd2VycyBDZW50ZXIgQmxkZy4sIDEzRgotCQkJCTItMTEtMjIsIFNhbmdlbi1qYXlhLCBTZXRhZ2F5YS1rdSwgVG9reW8KLQkJCQkxNTQtMDAyNAotCQkJCUpBUEFOCi0KLTAwLTA1LTJEICAgKGhleCkJCVpvbHRyaXggSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0wMDA1MkQgICAgIChiYXNlIDE2KQkJWm9sdHJpeCBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLQkJCQlSb29tIDcwMSBQbyBIaW5nIENlbnRyZSwKLQkJCQkxOCBXYW4gQ2hpdSBSb2FkLCBLb3dsb29uLAotCQkJCUhPTkcgS09ORwotCi0wMC0wNS0yRSAgIChoZXgpCQlDaW50YSBOZXR3b3JrcwotMDAwNTJFICAgICAoYmFzZSAxNikJCUNpbnRhIE5ldHdvcmtzCi0JCQkJMzAxMCBOb3J0aCBGaXJzdCBTdHJlZXQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMkYgICAoaGV4KQkJTGV2aXRvbiBOZXR3b3JrIFNvbHV0aW9ucwotMDAwNTJGICAgICAoYmFzZSAxNikJCUxldml0b24gTmV0d29yayBTb2x1dGlvbnMKLQkJCQkyMjIyIDIyMm5kIFN0cmVldCBTLkUuCi0JCQkJQm90aGVsbCBXQSA5ODAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMzAgICAoaGV4KQkJQW5kaWFtbyBTeXN0ZW1zLCBJbmMuCi0wMDA1MzAgICAgIChiYXNlIDE2KQkJQW5kaWFtbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTQxNzEgVGVlcmxpbmsgV2F5Ci0JCQkJU2FyYXRvZ2EgQ0EgOTUwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTMxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDUzMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0zMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1MzIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMzMgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDA1MzMgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0zNCAgIChoZXgpCQlOb3J0aHN0YXIgRW5naW5lZXJpbmcgTHRkLgotMDAwNTM0ICAgICAoYmFzZSAxNikJCU5vcnRoc3RhciBFbmdpbmVlcmluZyBMdGQuCi0JCQkJUC5PLiBCb3ggNDAKLQkJCQlIZW5sZXktb24tVGhhbWVzIE94b24gUkc5IDZBRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LTM1ICAgKGhleCkJCUNoaXAgUEMgTHRkLgotMDAwNTM1ICAgICAoYmFzZSAxNikJCUNoaXAgUEMgTHRkLgotCQkJCTIwIEEuTC4gTW90emtpbiBTdC4KLQkJCQlUb3BheiBIb3VzZSwgTmFodW0gSGF0IDUgLCBQLk8uIEJveCA0Ci0JCQkJVGlyYXQgQ2FybWVsICAzOTEwMAotCQkJCUlTUkFFTAotCi0wMC0wNS0zNiAgIChoZXgpCQlEYW5hbSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNTM2ICAgICAoYmFzZSAxNikJCURhbmFtIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJOTAwLTMsIEhva3llLWRvbmcsIERvbmdhbi1ndSwKLQkJCQlBbnlhbmcsIEt5dW5na2ktZG8sIDQzMS0wODIsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTM3ICAgKGhleCkJCU5ldHMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDUzNyAgICAgKGJhc2UgMTYpCQlOZXRzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJI0IxIFl1bmdKdW4gQmxkZy4KLQkJCQkxNTQtMTAgU2Fuc3VuZy1Eb25nIEthbmduYW0tR3UKLQkJCQlTZW91bCAxMzUtMDkwICAxMzUtMDkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTM4ICAgKGhleCkJCU1lcmlsdXMsIEluYy4KLTAwMDUzOCAgICAgKGJhc2UgMTYpCQlNZXJpbHVzLCBJbmMuCi0JCQkJIzMwNy00NjE2NSBZYWxlIFJvYWQKLQkJCQlDaGlsaXdhY2ssIEJDCi0JCQkJVjJQIDJQMgotCQkJCUNBTkFEQQotCi0wMC0wNS0zOSAgIChoZXgpCQlBIEJyYW5kIE5ldyBXb3JsZCBpbiBTd2VkZW4gQUIKLTAwMDUzOSAgICAgKGJhc2UgMTYpCQlBIEJyYW5kIE5ldyBXb3JsZCBpbiBTd2VkZW4gQUIKLQkJCQlCb3ggMTIyMwotCQkJCVNFLTE2NCAyOCBLSVNUQQotCQkJCVNXRURFTgotCi0wMC0wNS0zQSAgIChoZXgpCQlXaWxsb3dnbGVuIFNlcnZpY2VzIFB0ZSBMdGQKLTAwMDUzQSAgICAgKGJhc2UgMTYpCQlXaWxsb3dnbGVuIFNlcnZpY2VzIFB0ZSBMdGQKLQkJCQkxNTEgTG9yb25nIENodWFuLAotCQkJCU5ldyBUZWNoIFBhcmsgIzA1LTA3LAotCQkJCTU1Njc0MQotCQkJCVNJTkdBUE9SRQotCi0wMC0wNS0zQiAgIChoZXgpCQlIYXJib3VyIE5ldHdvcmtzIEx0ZC4sIENvLiBCZWlqaW5nCi0wMDA1M0IgICAgIChiYXNlIDE2KQkJSGFyYm91ciBOZXR3b3JrcyBMdGQuLCBDby4gQmVpamluZwotCQkJCTEzL0YsIEppdUxpbmcgQnVpbGRpbmcsIE5vLiAyMSwKLQkJCQlYaVNhbkh1YW4gTm9ydGggUmQuLCBCZWlqaW5nCi0JCQkJMTAwMDg5Ci0JCQkJQ0hJTkEKLQotMDAtMDUtM0MgICAoaGV4KQkJWGlyY29tCi0wMDA1M0MgICAgIChiYXNlIDE2KQkJWGlyY29tCi0JCQkJMjMwMCBDb3Jwb3JhdGUgQ2VudGVyIERyLgotCQkJCVRob3VzYW5kIE9ha3MgQ0EgOTEzMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTNEICAgKGhleCkJCUFnZXJlIFN5c3RlbXMKLTAwMDUzRCAgICAgKGJhc2UgMTYpCQlBZ2VyZSBTeXN0ZW1zCi0JCQkJMTM3MSBNY0NhcnRoeSBCbHZkLgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0zRSAgIChoZXgpCQlLSUQgU3lzdGVtZSBHbWJICi0wMDA1M0UgICAgIChiYXNlIDE2KQkJS0lEIFN5c3RlbWUgR21iSAotCQkJCUx1bmVidXJnZXIgU2NoYW56ZSAzMAotCQkJCTIxNjE0IEJ1eHRlaHVkZQotCQkJCUdFUk1BTlkKLQotMDAtMDUtM0YgICAoaGV4KQkJVmlzaW9uVGVrLCBJbmMuCi0wMDA1M0YgICAgIChiYXNlIDE2KQkJVmlzaW9uVGVrLCBJbmMuCi0JCQkJMTE3NSBMYWtlc2lkZSBEci4KLQkJCQlHdXJuZWUgSUwgNjAwMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTQwICAgKGhleCkJCUZBU1QgQ29ycG9yYXRpb24KLTAwMDU0MCAgICAgKGJhc2UgMTYpCQlGQVNUIENvcnBvcmF0aW9uCi0JCQkJMjc5MS01IFNoaW1vLVRzdXJ1bWEKLQkJCQlZYW1hdG8gS2FuYWdhd2EKLQkJCQkyNDItMDAwMQotCQkJCUpBUEFOCi0KLTAwLTA1LTQxICAgKGhleCkJCUFkdmFuY2VkIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDA1NDEgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgU3lzdGVtcyBDby4sIEx0ZC4KLQkJCQkyLTktNyBOaXNoaWtpY2hvLAotCQkJCVRhY2hpa2F3YS1zaGksIFRva3lvCi0JCQkJMTkwLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0wNS00MiAgIChoZXgpCQlPdGFyaSwgSW5jLgotMDAwNTQyICAgICAoYmFzZSAxNikJCU90YXJpLCBJbmMuCi0JCQkJNC0zMy0zIEtva3VyeW8tY2hvLAotCQkJCUNob2Z1LXNoaSwgVG9reW8gMTgyLTAwMjIsCi0JCQkJSkFQQU4KLQotMDAtMDUtNDMgICAoaGV4KQkJSVEgV2lyZWxlc3MgR21iSAotMDAwNTQzICAgICAoYmFzZSAxNikJCUlRIFdpcmVsZXNzIEdtYkgKLQkJCQlDYXJsLVNjaGVlbGUtU3RyLiAxNAotCQkJCUQtMTI0ODkgQmVybGluCi0JCQkJR0VSTUFOWQotCi0wMC0wNS00NCAgIChoZXgpCQlWYWxsZXkgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA1NDQgICAgIChiYXNlIDE2KQkJVmFsbGV5IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwMDYgV2VzdCBDb2xsZWdlIEF2ZS4KLQkJCQlTdWl0ZSAyMDAKLQkJCQlTdGF0ZSBDb2xsZWdlIFBBIDE2ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS00NSAgIChoZXgpCQlJbnRlcm5ldCBQaG90b25pY3MKLTAwMDU0NSAgICAgKGJhc2UgMTYpCQlJbnRlcm5ldCBQaG90b25pY3MKLQkJCQkxMDMwIEJyb2FkIFN0LiwgMm5kIEZsb29yCi0JCQkJU2hyZXdzYnVyeSBOSiAwNzcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNDYgICAoaGV4KQkJS0RESSBOZXR3b3JrICYgU29sdWx0aW9ucyBJbmMuCi0wMDA1NDYgICAgIChiYXNlIDE2KQkJS0RESSBOZXR3b3JrICYgU29sdWx0aW9ucyBJbmMuCi0JCQkJMi0zLTEsIE5pc2hpc2hpbmp1bmt1LWt1LAotCQkJCVRva3lvIDE2My0wOTA3Ci0JCQkJSkFQQU4KLQotMDAtMDUtNDcgICAoaGV4KQkJU3RhcmVudCBOZXR3b3JrcwotMDAwNTQ3ICAgICAoYmFzZSAxNikJCVN0YXJlbnQgTmV0d29ya3MKLQkJCQkzMCBJbnRlcm5hdGlvbmFsIFBsYWNlCi0JCQkJVGV3a3NidXJ5IE1BIDAxODc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS00OCAgIChoZXgpCQlEaXNjbyBDb3Jwb3JhdGlvbgotMDAwNTQ4ICAgICAoYmFzZSAxNikJCURpc2NvIENvcnBvcmF0aW9uCi0JCQkJMTMtMTEgT21vcmktS2l0YSAyLWNob21lCi0JCQkJT3RhLWt1IFRva3lvIDE0My04NTgwCi0JCQkJSkFQQU4KLQotMDAtMDUtNDkgICAoaGV4KQkJU2FsaXJhIE9wdGljYWwgTmV0d29yayBTeXN0ZW1zCi0wMDA1NDkgICAgIChiYXNlIDE2KQkJU2FsaXJhIE9wdGljYWwgTmV0d29yayBTeXN0ZW1zCi0JCQkJMjY5NCBPcmNoYXJkIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNEEgICAoaGV4KQkJQXJpbyBEYXRhIE5ldHdvcmtzLCBJbmMuCi0wMDA1NEEgICAgIChiYXNlIDE2KQkJQXJpbyBEYXRhIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjg5MCBaYW5rZXIgUm9hZCwgU3VpdGUgMjAzCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTRCICAgKGhleCkJCUVhdG9uIEF1dG9tYXRpb24gQUcKLTAwMDU0QiAgICAgKGJhc2UgMTYpCQlFYXRvbiBBdXRvbWF0aW9uIEFHCi0JCQkJU3Bpbm5lcmVpc3RyYXNzZSA4Ci0JCQkJU3QuR2FsbGVuICA5MDA4IAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA1LTRDICAgKGhleCkJCVJGIElubm92YXRpb25zIFB0eSBMdGQKLTAwMDU0QyAgICAgKGJhc2UgMTYpCQlSRiBJbm5vdmF0aW9ucyBQdHkgTHRkCi0JCQkJMjIgQm91bGRlciBSb2FkCi0JCQkJTWFsYWdhIFdBICA2MDkwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTA1LTREICAgKGhleCkJCUJyYW5zIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNTREICAgICAoYmFzZSAxNikJCUJyYW5zIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTUwMSBCb3JhbWFlIEFjYWRlbXkgVG93ZXIKLQkJCQkzOTUtNjkgU2hpbmFlYmFuZy1Eb25nIFRvbmdqYWstR3UgU2VvdWwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtNEUgICAoaGV4KQkJUGhpbGlwcwotMDAwNTRFICAgICAoYmFzZSAxNikJCVBoaWxpcHMKLQkJCQkxMDAwIFdlc3QgTWF1ZGUgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1LTI4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTRGICAgKGhleCkJCVBSSVZBVEUKLTAwMDU0RiAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMDUtNTAgICAoaGV4KQkJVmNvbW1zIENvbm5lY3QgTGltaXRlZAotMDAwNTUwICAgICAoYmFzZSAxNikJCVZjb21tcyBDb25uZWN0IExpbWl0ZWQKLQkJCQk3NSBUaGUgRXNwbGFuYWRlLCBMZXZlbCAzCi0JCQkJUE8gQm94IDM4LTkyMAotCQkJCVdlbGxpbmd0b24gTWFpbCBDZW50cmUgNTA0NSBXZWxsaW5ndG9uIAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTA1LTUxICAgKGhleCkJCUYgJiBTIEVsZWt0cm9uaWsgU3lzdGVtZSBHbWJICi0wMDA1NTEgICAgIChiYXNlIDE2KQkJRiAmIFMgRWxla3Ryb25payBTeXN0ZW1lIEdtYkgKLQkJCQlVbnRlcmUgV2FsZHBsYWV0emUgMjMKLQkJCQlELTcwNTY5IFN0dXR0Z2FydAotCQkJCUdFUk1BTlkKLQotMDAtMDUtNTIgICAoaGV4KQkJWHljb3RlYyBDb21wdXRlciBHbWJICi0wMDA1NTIgICAgIChiYXNlIDE2KQkJWHljb3RlYyBDb21wdXRlciBHbWJICi0JCQkJS2FybC1IZWluei1CZWNrdXJ0cy1TdHIuIDQKLQkJCQlELTUyNDI4IEp1bGljaAotCQkJCUdFUk1BTlkKLQotMDAtMDUtNTMgICAoaGV4KQkJRFZDIENvbXBhbnksIEluYy4KLTAwMDU1MyAgICAgKGJhc2UgMTYpCQlEVkMgQ29tcGFueSwgSW5jLgotCQkJCTEwMjAwIEh3eSAyOTAgVy4KLQkJCQlBdXN0aW4gVFggNzgyMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTU0ICAgKGhleCkJCVJhbmdlc3RhciBXaXJlbGVzcwotMDAwNTU0ICAgICAoYmFzZSAxNikJCVJhbmdlc3RhciBXaXJlbGVzcwotCQkJCTk1NjUgU29xdWVsIERyaXZlLCBTdWl0ZSAxMDAKLQkJCQlBcHRvcyBDQSA5NTAwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNTUgICAoaGV4KQkJSmFwYW4gQ2FzaCBNYWNoaW5lIENvLiwgTHRkLgotMDAwNTU1ICAgICAoYmFzZSAxNikJCUphcGFuIENhc2ggTWFjaGluZSBDby4sIEx0ZC4KLQkJCQlOby4gMy0xNSwgMi1jaG9tZSwgTmlzaGl3YWtpLAotCQkJCUhpcmFuby1rdSwgT3Nha2EKLQkJCQk1NDctMDAzNQotCQkJCUpBUEFOCi0KLTAwLTA1LTU2ICAgKGhleCkJCTM2MCBTeXN0ZW1zCi0wMDA1NTYgICAgIChiYXNlIDE2KQkJMzYwIFN5c3RlbXMKLQkJCQkzMTM1NSBBZ291cmEgUm9hZAotCQkJCVdlc3RsYWtlIFZpbGxhZ2UgQ0EgOTEzNjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTU3ICAgKGhleCkJCUFnaWxlIFRWIENvcnBvcmF0aW9uCi0wMDA1NTcgICAgIChiYXNlIDE2KQkJQWdpbGUgVFYgQ29ycG9yYXRpb24KLQkJCQkzMzMgUmF2ZW5zd29vZCBBdmUuLAotCQkJCUJ1aWxkaW5nIDIwMgotCQkJCU1lbmxvIFBhcmsgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTU4ICAgKGhleCkJCVN5bmNocm9ub3VzLCBJbmMuCi0wMDA1NTggICAgIChiYXNlIDE2KQkJU3luY2hyb25vdXMsIEluYy4KLQkJCQk3NyBMYXMgQ29saW5hcyBMYW5lCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTU5ICAgKGhleCkJCUludHJhY29tIFMuQS4KLTAwMDU1OSAgICAgKGJhc2UgMTYpCQlJbnRyYWNvbSBTLkEuCi0JCQkJMTkgNSBLTSBNYXJrb3BvdWxvdSBBdmUuCi0JCQkJMTkwMDIgUGVhbmlhCi0JCQkJQXR0aWthICAKLQkJCQlHUkVFQ0UKLQotMDAtMDUtNUEgICAoaGV4KQkJUG93ZXIgRHNpbmUgTHRkLgotMDAwNTVBICAgICAoYmFzZSAxNikJCVBvd2VyIERzaW5lIEx0ZC4KLQkJCQkxIEhhbmFnYXIgU3QuLCBQLk8uIEJveCA3MjIwCi0JCQkJTmV2ZSBOZSdlbWFuIEluZHVzdHJpYWwgWm9uZSBIb2QgSGFzaGFybwotCQkJCUlTUkFFTAotCi0wMC0wNS01QiAgIChoZXgpCQlDaGFybGVzIEluZHVzdHJpZXMsIEx0ZC4KLTAwMDU1QiAgICAgKGJhc2UgMTYpCQlDaGFybGVzIEluZHVzdHJpZXMsIEx0ZC4KLQkJCQk1NjAwIEFwb2xsbyBEci4KLQkJCQlSb2xsaW5nIE1lYWRvd3MgSUwgNjAwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTVDICAgKGhleCkJCUtvd2EgQ29tcGFueSwgTHRkLgotMDAwNTVDICAgICAoYmFzZSAxNikJCUtvd2EgQ29tcGFueSwgTHRkLgotCQkJCUNob2Z1Z2Fva2EgMy0zLTEsCi0JCQkJQ2hvZnUtc2ksIFRva3lvLAotCQkJCTE4Mi0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMDUtNUQgICAoaGV4KQkJRC1MaW5rIFN5c3RlbXMsIEluYy4KLTAwMDU1RCAgICAgKGJhc2UgMTYpCQlELUxpbmsgU3lzdGVtcywgSW5jLgotCQkJCTUzIERpc2NvdmVyeSBEci4KLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTVFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDU1RSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS01RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1NUYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNjAgICAoaGV4KQkJTEVBREVSIENPTU0uQ08uLCBMVEQKLTAwMDU2MCAgICAgKGJhc2UgMTYpCQlMRUFERVIgQ09NTS5DTy4sIExURAotCQkJCTIzNCwgS29tYWUtcmksIEtpaGV1bmctZXVwLAotCQkJCVlvdW5nc2luLXNpLCBLeXVuZ2tpLWRvLAotCQkJCTQ0OS05MDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtNjEgICAoaGV4KQkJbmFjIEltYWdlIFRlY2hub2xvZ3ksIEluYy4KLTAwMDU2MSAgICAgKGJhc2UgMTYpCQluYWMgSW1hZ2UgVGVjaG5vbG9neSwgSW5jLgotCQkJCTgtNyBTYW5iYW4tY2hvLCBDaGl5b2RhLWt1LAotCQkJCVRva3lvLCAxMDItMDA3NQotCQkJCUpBUEFOCi0KLTAwLTA1LTYyICAgKGhleCkJCURpZ2l0YWwgVmlldyBMaW1pdGVkCi0wMDA1NjIgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBWaWV3IExpbWl0ZWQKLQkJCQkyMjAxIE5hbiBZYW5nIFBsYXphLAotCQkJCTU3IEh1bmd0byBSb2FkLCBLd3VuIFRvbmcsCi0JCQkJS293bG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA1LTYzICAgKGhleCkJCUotV29ya3MsIEluYy4KLTAwMDU2MyAgICAgKGJhc2UgMTYpCQlKLVdvcmtzLCBJbmMuCi0JCQkJMTIzMjggR2xhZHN0b25lIFN0LiAjMQotCQkJCVN5bG1vciBDQSA5MTM0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNjQgICAoaGV4KQkJVHNpbmdodWEgQml0d2F5IENvLiwgTHRkLgotMDAwNTY0ICAgICAoYmFzZSAxNikJCVRzaW5naHVhIEJpdHdheSBDby4sIEx0ZC4KLQkJCQkxMiBGbG9vciwgVG93ZXIgQywgQ29ycG9yYXRlCi0JCQkJU3F1YXJlLCBOby4gMzUsIEZpbmFuY2lhbCBTdHJlZXQsIFhpY2hlbgotCQkJCUNISU5BCi0KLTAwLTA1LTY1ICAgKGhleCkJCVRhaWx5biBDb21tdW5pY2F0aW9uIENvbXBhbnkgTHRkLgotMDAwNTY1ICAgICAoYmFzZSAxNikJCVRhaWx5biBDb21tdW5pY2F0aW9uIENvbXBhbnkgTHRkLgotCQkJCU5vLiA2MiwgTGFuZSAyMDUsIE5hbi1TYW4gUm9hZCwKLQkJCQlTZWMuIDIsIEx1LUNodSBIc2lhbmcsCi0JCQkJVGFveXVhbiBIc2llbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS02NiAgIChoZXgpCQlTZWN1aS5jb20gQ29ycG9yYXRpb24KLTAwMDU2NiAgICAgKGJhc2UgMTYpCQlTZWN1aS5jb20gQ29ycG9yYXRpb24KLQkJCQkxN3RoIEZsLiBTYW1zdW5nIFllb2tzYW0gQmxkZy4KLQkJCQk2NDctOSwgWWVva3NhbS1kb25nLCBLYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtNjcgICAoaGV4KQkJRXR5bW9uaWMgRGVzaWduLCBJbmMuCi0wMDA1NjcgICAgIChiYXNlIDE2KQkJRXR5bW9uaWMgRGVzaWduLCBJbmMuCi0JCQkJNDEgQnlyb24gQXZlbnVlCi0JCQkJRG9yY2hlc3RlciwgT250YXJpbywKLQkJCQlOT0wgMUdPCi0JCQkJQ0FOQURBCi0KLTAwLTA1LTY4ICAgKGhleCkJCVBpbHRvZmlzaCBOZXR3b3JrcyBBQgotMDAwNTY4ICAgICAoYmFzZSAxNikJCVBpbHRvZmlzaCBOZXR3b3JrcyBBQgotCQkJCVN0b3JhIEJhZGh1c2dhdGFuIDE4LTIwCi0JCQkJUy00MTEyMSBHb3RlYm9yZwotCQkJCVNXRURFTgotCi0wMC0wNS02OSAgIChoZXgpCQlWTXdhcmUsIEluYy4KLTAwMDU2OSAgICAgKGJhc2UgMTYpCQlWTXdhcmUsIEluYy4KLQkJCQkzNDAxIEhpbGx2aWV3IEF2ZW51ZQotCQkJCVBhbG8gQWx0byBDQSA5NDMwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNkEgICAoaGV4KQkJSGV1ZnQgU3lzdGVtdGVjaG5payBHbWJICi0wMDA1NkEgICAgIChiYXNlIDE2KQkJSGV1ZnQgU3lzdGVtdGVjaG5payBHbWJICi0JCQkJQnJvaGx0YWxzdHIgMzEtMzMKLQkJCQk1NjY1OSBCdXJnYnJvaGwKLQkJCQlEZXV0c2NobGFuZCAgCi0JCQkJR0VSTUFOWQotCi0wMC0wNS02QiAgIChoZXgpCQlDLlAuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA1NkIgICAgIChiYXNlIDE2KQkJQy5QLiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTEyRiwgTm8uIDg2LCBIc2luIFRhaSBXdSBSZC4sCi0JCQkJU2VjLiAxLCBIc2ktQ2hpaCwgVGFpcGVpIEhzaWVuLAotCQkJCTIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtNkMgICAoaGV4KQkJSHVuZyBDaGFuZyBDby4sIEx0ZC4KLTAwMDU2QyAgICAgKGJhc2UgMTYpCQlIdW5nIENoYW5nIENvLiwgTHRkLgotCQkJCTEzODUtMTQsIEp1YW4tRG9uZywKLQkJCQlOYW0ta3UsIEluY2hvbSwgNDAyLTIwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS02RCAgIChoZXgpCQlQYWNpZmljIENvcnBvcmF0aW9uCi0wMDA1NkQgICAgIChiYXNlIDE2KQkJUGFjaWZpYyBDb3Jwb3JhdGlvbgotCQkJCTItMjMtMyBFYmlzdS1NaW5hbWkgU2hpYnV5YQotCQkJCVRva3lvIDE1MC0wMDIyCi0JCQkJSkFQQU4KLQotMDAtMDUtNkUgICAoaGV4KQkJTmF0aW9uYWwgRW5oYW5jZSBUZWNobm9sb2d5LCBJbmMuCi0wMDA1NkUgICAgIChiYXNlIDE2KQkJTmF0aW9uYWwgRW5oYW5jZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMkYsIE5vLiAxOTYtMywgVGF0dW5nIFJkLiwgU2VjLiAzLAotCQkJCUhzaSBDaGloLCBUYWlwZWkgSHNpZW4sCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS02RiAgIChoZXgpCQlJbm5vbWVkaWEgVGVjaG5vbG9naWVzIFB2dC4gTHRkLgotMDAwNTZGICAgICAoYmFzZSAxNikJCUlubm9tZWRpYSBUZWNobm9sb2dpZXMgUHZ0LiBMdGQuCi0JCQkJIzMyNzgsIDEydGggTWFpbiBSb2FkCi0JCQkJSEFMIDJuZCBTdGFnZSBCYW5nYWxvcmUgLSA1NjAgMDA4Ci0JCQkJSU5ESUEKLQotMDAtMDUtNzAgICAoaGV4KQkJQmF5ZGVsIEx0ZC4KLTAwMDU3MCAgICAgKGJhc2UgMTYpCQlCYXlkZWwgTHRkLgotCQkJCUJheWRlbCBIb3VzZQotCQkJCUJyb29rIFdheSBMZWF0aGVyaGVhZCwgU3VycmV5IEtUMjIgN05BCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDUtNzEgICAoaGV4KQkJU2Vpd2EgRWxlY3Ryb25pY3MgQ28uCi0wMDA1NzEgICAgIChiYXNlIDE2KQkJU2Vpd2EgRWxlY3Ryb25pY3MgQ28uCi0JCQkJNzU3IEFtYWJvdWtpLCBLdWtpemFraS1NYWNoaQotCQkJCUluYXNoaWtpLUd1biwgSWJhcmFraS1LZW4KLQkJCQkzMDAtMTI1MwotCQkJCUpBUEFOCi0KLTAwLTA1LTcyICAgKGhleCkJCURlb25ldCBDby4sIEx0ZC4KLTAwMDU3MiAgICAgKGJhc2UgMTYpCQlEZW9uZXQgQ28uLCBMdGQuCi0JCQkJIzEyNy01IEppbnlvdW5nIEIvRCAzdGggRiwKLQkJCQlOb25JeXVuLURvbmcsIEthbmdOYW0tR3UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS03MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1NzMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNzQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNTc0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTc1ICAgKGhleCkJCUNEUy1FbGVjdHJvbmljcyBCVgotMDAwNTc1ICAgICAoYmFzZSAxNikJCUNEUy1FbGVjdHJvbmljcyBCVgotCQkJCU1vemFydCBsYWFuIDMzMAotCQkJCTMxNDQgTkggTWFhc3NsdWlzCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDUtNzYgICAoaGV4KQkJTlNNIFRlY2hub2xvZ3kgTHRkLgotMDAwNTc2ICAgICAoYmFzZSAxNikJCU5TTSBUZWNobm9sb2d5IEx0ZC4KLQkJCQkyMiBGbG9vciwgVGltZXMgVG93ZXIKLQkJCQk5MjggQ2hldW5nIFNoYSBXYW4gUm9hZAotCQkJCUtvbG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA1LTc3ICAgKGhleCkJCVNNIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbgotMDAwNTc3ICAgICAoYmFzZSAxNikJCVNNIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbgotCQkJCTMzMC0xIFlhbmdqYWVkb25nCi0JCQkJU2VvdWNoby1HdSwgU2VvdWwKLQkJCQkxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTc4ICAgKGhleCkJCVBSSVZBVEUKLTAwMDU3OCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMDUtNzkgICAoaGV4KQkJVW5pdmVyc2FsIENvbnRyb2wgU29sdXRpb24gQ29ycC4KLTAwMDU3OSAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgQ29udHJvbCBTb2x1dGlvbiBDb3JwLgotCQkJCTEyODQzIEZvb3RoaWxsIEJsdmQuCi0JCQkJVW5pdCAjZAotCQkJCVN5bG1hciBDQSA5MTM0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtN0EgICAoaGV4KQkJSGF0dGVyYXMgTmV0d29ya3MKLTAwMDU3QSAgICAgKGJhc2UgMTYpCQlIYXR0ZXJhcyBOZXR3b3JrcwotCQkJCVAuTy4gQm94IEJveCAxMTAwMjUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTAwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTdCICAgKGhleCkJCUNodW5nIE5hbSBFbGVjdHJvbmljIENvLiwgTHRkLgotMDAwNTdCICAgICAoYmFzZSAxNikJCUNodW5nIE5hbSBFbGVjdHJvbmljIENvLiwgTHRkLgotCQkJCVVuaXQgMywgMS9GLCBGZXN0aWdvb2QgQ2VudHJlCi0JCQkJTm8uIDggTG9rIFlpcCBSb2FkLCBPbiBMb2sKLQkJCQlUc3VlbiBGYW5saW5nLCAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDUtN0MgICAoaGV4KQkJUkNPIFNlY3VyaXR5IEFCCi0wMDA1N0MgICAgIChiYXNlIDE2KQkJUkNPIFNlY3VyaXR5IEFCCi0JCQkJQm94IDcwNQotCQkJCVNFIDE3NiAyNyBKYXJmYWxsYQotCQkJCVNXRURFTgotCi0wMC0wNS03RCAgIChoZXgpCQlTdW4gQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDU3RCAgICAgKGJhc2UgMTYpCQlTdW4gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQlHbG9yaWEgQmxkZyA2dGgKLQkJCQkxLTMgQWdlYmEtQ2hvIFNoaW5qdWt1LWt1Ci0JCQkJVG9reW8gIDE2Mi0wODIKLQkJCQlKQVBBTgotCi0wMC0wNS03RSAgIChoZXgpCQlFY2tlbG1hbm4gU3RldWVydW5nc3RlY2huaWsgR21iSAotMDAwNTdFICAgICAoYmFzZSAxNikJCUVja2VsbWFubiBTdGV1ZXJ1bmdzdGVjaG5payBHbWJICi0JCQkJQmVybGluZXIgU3RyYXNzZSAxNjEKLQkJCQk2NTIwNSBXaWVzYmFkZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTdGICAgKGhleCkJCUFjcWlzIFRlY2hub2xvZ3kKLTAwMDU3RiAgICAgKGJhc2UgMTYpCQlBY3FpcyBUZWNobm9sb2d5Ci0JCQkJMTYyMSBXZXN0IEVsIENhbWlubyBSZWFsCi0JCQkJTXQuIFZpZXcgQ0EgOTQwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTgwICAgKGhleCkJCUZpYnJvbGFuIEx0ZC4KLTAwMDU4MCAgICAgKGJhc2UgMTYpCQlGaWJyb2xhbiBMdGQuCi0JCQkJNiBIYXlldHppcmEgU3RyZWV0Ci0JCQkJWW9rbmVhbSBJbGxpdCAyMDY5MgotCQkJCUlTUkFFTAotCi0wMC0wNS04MSAgIChoZXgpCQlTbmVsbAotMDAwNTgxICAgICAoYmFzZSAxNikJCVNuZWxsCi0JCQkJU291dGhsZWlnaCBQYXJrIEhvdXNlCi0JCQkJRWFzdGxlaWdoIFJvYWQsIEhhdmFudAotCQkJCUhhbXBzaGlyZSAgUDA5IDJQRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LTgyICAgKGhleCkJCUNsZWFyQ3ViZSBUZWNobm9sb2d5Ci0wMDA1ODIgICAgIChiYXNlIDE2KQkJQ2xlYXJDdWJlIFRlY2hub2xvZ3kKLQkJCQk4ODM0IENhcGl0YWwgb2YgVGV4YXMgSHd5LAotCQkJCVN1aXRlIDE0MAotCQkJCUF1c3RpbiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtODMgICAoaGV4KQkJSW1hZ2VDb20gTGltaXRlZAotMDAwNTgzICAgICAoYmFzZSAxNikJCUltYWdlQ29tIExpbWl0ZWQKLQkJCQlDZWRhcnMgUGFyaywgQ2VkYXJzIFJvYWQsCi0JCQkJTWFpZGVuaGVhZCwgQmVya3NoaXJlLAotCQkJCVNMNiAxUloKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNS04NCAgIChoZXgpCQlBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4KLTAwMDU4NCAgICAgKGJhc2UgMTYpCQlBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4KLQkJCQk3MTUtRCBOb3J0aCBEci4KLQkJCQlNZWxib3VybmUgRkwgMzI5MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTg1ICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MsIEluYy4KLTAwMDU4NSAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTE5NCBOLiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTg2ICAgKGhleCkJCUx1Y2VudCBUZWNobm9sb2dpZXMKLTAwMDU4NiAgICAgKGJhc2UgMTYpCQlMdWNlbnQgVGVjaG5vbG9naWVzCi0JCQkJMTcwMSBIYXJib3IgQmF5IFBhcmt3YXkKLQkJCQlBbGFtZWRhIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS04NyAgIChoZXgpCQlMb2N1cywgSW5jb3Jwb3JhdGVkCi0wMDA1ODcgICAgIChiYXNlIDE2KQkJTG9jdXMsIEluY29ycG9yYXRlZAotCQkJCTU1NDAgUmVzZWFyY2ggUGFyayBEcml2ZQotCQkJCUZpdGNoYnVyZyBDZW50ZXIKLQkJCQlNYWRpc29uIFdJIDUzNzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS04OCAgIChoZXgpCQlTZW5zb3JpYSBDb3JwLgotMDAwNTg4ICAgICAoYmFzZSAxNikJCVNlbnNvcmlhIENvcnAuCi0JCQkJMTU5NTAgQmVybmFyZG8gQ3RyLiBEci4KLQkJCQlTdWl0ZSBKCi0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS04OSAgIChoZXgpCQlOYXRpb25hbCBEYXRhY29tcHV0ZXIKLTAwMDU4OSAgICAgKGJhc2UgMTYpCQlOYXRpb25hbCBEYXRhY29tcHV0ZXIKLQkJCQk5MDAgTWlkZGxlc2V4IFRway4KLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LThBICAgKGhleCkJCU5ldGNvbSBDby4sIEx0ZC4KLTAwMDU4QSAgICAgKGJhc2UgMTYpCQlOZXRjb20gQ28uLCBMdGQuCi0JCQkJMUYsIE5vLiA3LCBMYW5lIDI0MiwKLQkJCQlIdSBMaWluIFN0cmVldAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS04QiAgIChoZXgpCQlJUG1lbnRhbCwgSW5jLgotMDAwNThCICAgICAoYmFzZSAxNikJCUlQbWVudGFsLCBJbmMuCi0JCQkJOEYtOSwgTm8uIDM1LCBIc2luIFRhaSBSZC4KLQkJCQlKdWliZWksIEhzaW5jaHUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LThDICAgKGhleCkJCU9wZW50ZWNoIEluYy4KLTAwMDU4QyAgICAgKGJhc2UgMTYpCQlPcGVudGVjaCBJbmMuCi0JCQkJNkYsIERvbmdXb24gQmxkZy4sIDI3NQotCQkJCVlvdW5namFlLURvbmcsIFNlb2Noby1HdSwKLQkJCQlTZW91bCAgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS04RCAgIChoZXgpCQlMeW54IFBob3RvbmljIE5ldHdvcmtzLCBJbmMuCi0wMDA1OEQgICAgIChiYXNlIDE2KQkJTHlueCBQaG90b25pYyBOZXR3b3JrcywgSW5jLgotCQkJCTEzIEhhbWVsYWhhIFN0LgotCQkJCVJvc2gtSGVheW4KLQkJCQlJU1JBRUwKLQotMDAtMDUtOEUgICAoaGV4KQkJRmxleHRyb25pY3MgSW50ZXJuYXRpb25hbCBHbWJIICYgQ28uIE5mZy4gS0cKLTAwMDU4RSAgICAgKGJhc2UgMTYpCQlGbGV4dHJvbmljcyBJbnRlcm5hdGlvbmFsIEdtYkggJiBDby4gTmZnLiBLRwotCQkJCVNjaHJhY2tnYXNzZSA5LTE1Ci0JCQkJS2luZGJlcmcgIDg2NTAKLQkJCQlBVVNUUklBCi0KLTAwLTA1LThGICAgKGhleCkJCUNMQ3NvZnQgY28uCi0wMDA1OEYgICAgIChiYXNlIDE2KQkJQ0xDc29mdCBjby4KLQkJCQlEZXB0LiBvZiBFbGVjdHJpY2FsIEVuZ2luZWVyaW5nCi0JCQkJS0FJU1QsIDM3My0xIEt1c2VvbmctZG9uZywgWXVzZW9uZy1ndSwgRAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS05MCAgIChoZXgpCQlTd2lzc3ZvaWNlIEx0ZC4KLTAwMDU5MCAgICAgKGJhc2UgMTYpCQlTd2lzc3ZvaWNlIEx0ZC4KLQkJCQlaaWVnZWxtYXR0c3RyYXNzZSAxCi0JCQkJNDUwMyBTb2xvdGh1cm4KLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wNS05MSAgIChoZXgpCQlBY3RpdmUgU2lsaWNvbiBMdGQuCi0wMDA1OTEgICAgIChiYXNlIDE2KQkJQWN0aXZlIFNpbGljb24gTHRkLgotCQkJCUJydW5uZWwgU2NpZW5jZSBQYXJrCi0JCQkJS2luZ3N0b24gTGFuZSwgVXhicmlkZ2UsCi0JCQkJTWlkZHggIFVCOCAzUFEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNS05MiAgIChoZXgpCQlQdWx0ZWsgQ29ycC4KLTAwMDU5MiAgICAgKGJhc2UgMTYpCQlQdWx0ZWsgQ29ycC4KLQkJCQk3NC0xLCBZYW1hc2hpdGEtY2hvLAotCQkJCU5ha2Eta3UsIFRva29oYW1hLWNpdHksCi0JCQkJMjMxLTAwMjMKLQkJCQlKQVBBTgotCi0wMC0wNS05MyAgIChoZXgpCQlHcmFtbWFyIEVuZ2luZSBJbmMuCi0wMDA1OTMgICAgIChiYXNlIDE2KQkJR3JhbW1hciBFbmdpbmUgSW5jLgotCQkJCTkyMSBFYXN0d2luZCBEcml2ZQotCQkJCVN1aXRlIDEyMgotCQkJCVdlc3RlcnZpbGxlIE9IIDQzMDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS05NCAgIChoZXgpCQlJWFhBVCBBdXRvbWF0aW9uIEdtYkgKLTAwMDU5NCAgICAgKGJhc2UgMTYpCQlJWFhBVCBBdXRvbWF0aW9uIEdtYkgKLQkJCQlMZWlibml6c3RyYXNzZSAxNQotCQkJCTg4MjUwIFdlaW5nYXJ0ZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTk1ICAgKGhleCkJCUFsZXNpcyBDb3Jwb3JhdGlvbgotMDAwNTk1ICAgICAoYmFzZSAxNikJCUFsZXNpcyBDb3Jwb3JhdGlvbgotCQkJCTE2MzMgMjZ0aCBTdHJlZXQKLQkJCQlTYW50YSBNb25pY2EgQ0EgOTA0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTk2ICAgKGhleCkJCUdlbm90ZWNoIENvLiwgTHRkLgotMDAwNTk2ICAgICAoYmFzZSAxNikJCUdlbm90ZWNoIENvLiwgTHRkLgotCQkJCSMzMDggR3Vua29vayBCbGRnLiwKLQkJCQkyODgtMSBEb2tzYW4tRG9uZwotCQkJCUd1bWNob24tR3UgU2VvdWwgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTk3ICAgKGhleCkJCUVhZ2xlIFRyYWZmaWMgQ29udHJvbCBTeXN0ZW1zCi0wMDA1OTcgICAgIChiYXNlIDE2KQkJRWFnbGUgVHJhZmZpYyBDb250cm9sIFN5c3RlbXMKLQkJCQk4MDA0IENhbWVyb24gUm9hZAotCQkJCUF1c3RpbiBUWCA3ODc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtOTggICAoaGV4KQkJQ1JPTk9TIFMuci5sLgotMDAwNTk4ICAgICAoYmFzZSAxNikJCUNST05PUyBTLnIubC4KLQkJCQlWaWEgY2F2b3VyIDU4L0EKLQkJCQkyMzkwMCBMRUNDTyAoTEMpCi0JCQkJSVRBTFkKLQotMDAtMDUtOTkgICAoaGV4KQkJRFJTIFRlc3QgYW5kIEVuZXJneSBNYW5hZ2VtZW50IG9yIERSUy1URU0KLTAwMDU5OSAgICAgKGJhc2UgMTYpCQlEUlMgVGVzdCBhbmQgRW5lcmd5IE1hbmFnZW1lbnQgb3IgRFJTLVRFTQotCQkJCTExMCBXeW5uIERyaXZlCi0JCQkJSHVudHN2aWxsZSBBTCAzNTgwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtOUEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNTlBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtOUIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNTlCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtOUMgICAoaGV4KQkJS2xlaW5rbmVjaHQgR21iSCwgSW5nLiBCdWVybwotMDAwNTlDICAgICAoYmFzZSAxNikJCUtsZWlua25lY2h0IEdtYkgsIEluZy4gQnVlcm8KLQkJCQlCYWNoc3RyYXNzZSAzMAotCQkJCUQtODI1NDEgTXVlbnNpbmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTlEICAgKGhleCkJCURhbmllbCBDb21wdXRpbmcgU3lzdGVtcywgSW5jLgotMDAwNTlEICAgICAoYmFzZSAxNikJCURhbmllbCBDb21wdXRpbmcgU3lzdGVtcywgSW5jLgotCQkJCTMyMDggOHRoIEF2ZW51ZSBORSAjMTE4Ci0JCQkJQ2FsZ2FyeSBBbGJlcnRhCi0JCQkJVDJBIDdWOAotCQkJCUNBTkFEQQotCi0wMC0wNS05RSAgIChoZXgpCQlaaW53ZWxsIENvcnBvcmF0aW9uCi0wMDA1OUUgICAgIChiYXNlIDE2KQkJWmlud2VsbCBDb3Jwb3JhdGlvbgotCQkJCTdGLCBOby41MTIsIFl1YW4tU2hhbiBSb2FkCi0JCQkJQ2hhbmctaG8gY2l0eSBUYWlwZWkgSHNpZW4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LTlGICAgKGhleCkJCVlvdHRhIE5ldHdvcmtzLCBJbmMuCi0wMDA1OUYgICAgIChiYXNlIDE2KQkJWW90dGEgTmV0d29ya3MsIEluYy4KLQkJCQkyMjAxIEF2ZW51ZSBLCi0JCQkJUGxhbm8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUEwICAgKGhleCkJCU1PQklMSU5FIEtmdC4KLTAwMDVBMCAgICAgKGJhc2UgMTYpCQlNT0JJTElORSBLZnQuCi0JCQkJTGVoZWwgVXRjYSAxNAotCQkJCUJVREFQRVNUCi0JCQkJSC0xMTM0Ci0JCQkJSFVOR0FSWQotCi0wMC0wNS1BMSAgIChoZXgpCQlaZW5vY29tCi0wMDA1QTEgICAgIChiYXNlIDE2KQkJWmVub2NvbQotCQkJCU5vLjQwMiwgNHRoIGZsb29yLCBXb25nb2sgQmxkZy4KLQkJCQk4MzAtMzgsIFlva3NhbS1Eb25nLCBHYW5nbmFtLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1BMiAgIChoZXgpCQlDRUxPWCBOZXR3b3JrcwotMDAwNUEyICAgICAoYmFzZSAxNikJCUNFTE9YIE5ldHdvcmtzCi0JCQkJOTQwIFdlc3QgUG9ydCBQbGF6YSAtIFN0ZS4gIzMwMAotCQkJCVN0LiBMb3VpcyBNTyA2MzE0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQTMgICAoaGV4KQkJUUVJLCBJbmMuCi0wMDA1QTMgICAgIChiYXNlIDE2KQkJUUVJLCBJbmMuCi0JCQkJNjAgRmFkZW0gUm9hZAotCQkJCVNwcmluZ2ZpZWxkIE5KIDA3MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1BNCAgIChoZXgpCQlMdWNpZCBWb2ljZSBMdGQuCi0wMDA1QTQgICAgIChiYXNlIDE2KQkJTHVjaWQgVm9pY2UgTHRkLgotCQkJCTUgSmFib3RpbnNraSBTdHJlZXQKLQkJCQlSYW1hdC1HYW4sIDUyNTIwCi0JCQkJSVNSQUVMCi0KLTAwLTA1LUE1ICAgKGhleCkJCUtPVFQKLTAwMDVBNSAgICAgKGJhc2UgMTYpCQlLT1RUCi0JCQkJU3VpdGUgMzA1IERhZWhhIEIvRAotCQkJCTY4MCBZZW9rc2FtLURvbmcsIEthbmdOYW0tR3UgU2VvdWwKLQkJCQkxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUE2ICAgKGhleCkJCUV4dHJvbiBFbGVjdHJvbmljcwotMDAwNUE2ICAgICAoYmFzZSAxNikJCUV4dHJvbiBFbGVjdHJvbmljcwotCQkJCTEyMzAgUy4gTGV3aXMKLQkJCQlBbmFoaWVtIENBIDkyODA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1BNyAgIChoZXgpCQlIeXBlcmNoaXAsIEluYy4KLTAwMDVBNyAgICAgKGJhc2UgMTYpCQlIeXBlcmNoaXAsIEluYy4KLQkJCQkxODAgUGVlbCBTdHJlZXQgLSBTdGUuICMzMzMKLQkJCQlNb250cmVhbCwgUXVlYmVjCi0JCQkJSDNDIDJHNwotCQkJCUNBTkFEQQotCi0wMC0wNS1BOCAgIChoZXgpCQlXWUxFIEVMRUNUUk9OSUNTCi0wMDA1QTggICAgIChiYXNlIDE2KQkJV1lMRSBFTEVDVFJPTklDUwotCQkJCTMwMDAgQk9XRVJTIEFWRU5VRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUxLTA5MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUE5ICAgKGhleCkJCVByaW5jZXRvbiBOZXR3b3JrcywgSW5jLgotMDAwNUE5ICAgICAoYmFzZSAxNikJCVByaW5jZXRvbiBOZXR3b3JrcywgSW5jLgotCQkJCTEwMCBDZW50dXJ5IENlbnRlciBDdC4gIzEwMAotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1BQSAgIChoZXgpCQlNb29yZSBJbmR1c3RyaWVzIEludGVybmF0aW9uYWwgSW5jLgotMDAwNUFBICAgICAoYmFzZSAxNikJCU1vb3JlIEluZHVzdHJpZXMgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJMTY2NTAgU2Nob2VuYm9ybiBTdC4KLQkJCQlOb3J0aCBIaWxscyBDQSA5MTM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQUIgICAoaGV4KQkJQ3liZXIgRm9uZSwgSW5jLgotMDAwNUFCICAgICAoYmFzZSAxNikJCUN5YmVyIEZvbmUsIEluYy4KLQkJCQk5ODkgT2xkIEVhZ2xlIFNjaG9vbCBSb2FkCi0JCQkJU3VpdGUgODAwCi0JCQkJV2F5bmUgUEEgMTkwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUFDICAgKGhleCkJCU5vcnRoZXJuIERpZ2l0YWwsIEluYy4KLTAwMDVBQyAgICAgKGJhc2UgMTYpCQlOb3J0aGVybiBEaWdpdGFsLCBJbmMuCi0JCQkJMTAzIFJhbmRhbGwgRHJpdmUKLQkJCQlXYXRlcmxvbyAgT250YXJpbyBOMlYgMUM1Ci0JCQkJQ0FOQURBCi0KLTAwLTA1LUFEICAgKGhleCkJCVRvcHNwaW4gQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDVBRCAgICAgKGJhc2UgMTYpCQlUb3BzcGluIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNTE1IEVsbGlzIFN0cmVldAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUFFICAgKGhleCkJCU1lZGlhcG9ydCBVU0EKLTAwMDVBRSAgICAgKGJhc2UgMTYpCQlNZWRpYXBvcnQgVVNBCi0JCQkJMTcxNTEgTmV3aG9wZSBBdmUuICMyMDIKLQkJCQlGb3VudGFpbiBWYWxsZXkgQ0EgOTI3MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUFGICAgKGhleCkJCUlubm9TY2FuIENvbXB1dGluZyBBL1MKLTAwMDVBRiAgICAgKGJhc2UgMTYpCQlJbm5vU2NhbiBDb21wdXRpbmcgQS9TCi0JCQkJU29yZW4gRnJpY2hzdmVqIDQyUgotCQkJCURLLTgyMzAgQWFieWhvagotCQkJCURFTk1BUksKLQotMDAtMDUtQjAgICAoaGV4KQkJS29yZWEgQ29tcHV0ZXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDVCMCAgICAgKGJhc2UgMTYpCQlLb3JlYSBDb21wdXRlciBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUtDVCBCbGRnLCAxMTEtMyBZYW5namFlLURvbmcsCi0JCQkJU2VvY2hvLUd1LCBTZW91bAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1CMSAgIChoZXgpCQlBU0IgVGVjaG5vbG9neSBCVgotMDAwNUIxICAgICAoYmFzZSAxNikJCUFTQiBUZWNobm9sb2d5IEJWCi0JCQkJRGUgUm9uZGUgMTVBCi0JCQkJNTY4MyBDWiBCZXN0Ci0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDUtQjIgICAoaGV4KQkJTWVkaXNvbiBDby4sIEx0ZC4KLTAwMDVCMiAgICAgKGJhc2UgMTYpCQlNZWRpc29uIENvLiwgTHRkLgotCQkJCTk5Ny00LCBTYWVjaGktRG9uZywKLQkJCQlLYW5nbmFtLWt1LCBTb3VlbCwKLQkJCQkxMzUtMjgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUIzICAgKGhleCkJCUFzYWhpLUVuZ2luZWVyaW5nIENvLiwgTHRkLgotMDAwNUIzICAgICAoYmFzZSAxNikJCUFzYWhpLUVuZ2luZWVyaW5nIENvLiwgTHRkLgotCQkJCTMtNi0xMi0yIEdha3VlbmhpZ2FzaGktY2hvCi0JCQkJS29kYWlyYS1zaGkKLQkJCQlUb2t5byAgMTg3LTAwNDMKLQkJCQlKQVBBTgotCi0wMC0wNS1CNCAgIChoZXgpCQlBY2VleCBDb3Jwb3JhdGlvbgotMDAwNUI0ICAgICAoYmFzZSAxNikJCUFjZWV4IENvcnBvcmF0aW9uCi0JCQkJMkYsIE5vLiAyLCBBbGxleSAxLCBTemUtV2VpIExhbmUKLQkJCQlDaHVuZy1DaGVuZyBSZC4sIEhzaW50aWVuLCBUYWlwZWkKLQkJCQkyMzEzOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtQjUgICAoaGV4KQkJQnJvYWRjb20gVGVjaG5vbG9naWVzCi0wMDA1QjUgICAgIChiYXNlIDE2KQkJQnJvYWRjb20gVGVjaG5vbG9naWVzCi0JCQkJMTM3LTA2MAotCQkJCTg1OC0zMSBZdWplb25nIEJMRCwgQmFuZ2JhZS1Eb25nCi0JCQkJU2VjaG8tR3UgU2VvdWwsIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1CNiAgIChoZXgpCQlJTlNZUyBNaWNyb2VsZWN0cm9uaWNzIEdtYkgKLTAwMDVCNiAgICAgKGJhc2UgMTYpCQlJTlNZUyBNaWNyb2VsZWN0cm9uaWNzIEdtYkgKLQkJCQlXYWZmbmVyZ2Fzc2UgOAotCQkJCTkzMDQ3IFJlZ2Vuc2J1cmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LUI3ICAgKGhleCkJCUFyYm9yIFRlY2hub2xvZ3kgQ29ycC4KLTAwMDVCNyAgICAgKGJhc2UgMTYpCQlBcmJvciBUZWNobm9sb2d5IENvcnAuCi0JCQkJNUYsIE5vLiA3MzgsIFpob25nIFpoZW5nIFJkLiwKLQkJCQlaaG9uZyBIbyAyMzUsIFRhaXBlaSwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LUI4ICAgKGhleCkJCUVsZWN0cm9uaWMgRGVzaWduIEFzc29jaWF0ZXMsIEluYy4KLTAwMDVCOCAgICAgKGJhc2UgMTYpCQlFbGVjdHJvbmljIERlc2lnbiBBc3NvY2lhdGVzLCBJbmMuCi0JCQkJMzMxIEFyY2FkbyBSZC4gTlcKLQkJCQlTdWl0ZSBDLTEKLQkJCQlMaWxidXJuIEdBIDMwMDQ3LTI4NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUI5ICAgKGhleCkJCUFpcnZhbmEsIEluYy4KLTAwMDVCOSAgICAgKGJhc2UgMTYpCQlBaXJ2YW5hLCBJbmMuCi0JCQkJMjUgSW5kdXN0cmlhbCBBdmUuCi0JCQkJQ2hsZW1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQkEgICAoaGV4KQkJQXJlYSBOZXR3b2VrcywgSW5jLgotMDAwNUJBICAgICAoYmFzZSAxNikJCUFyZWEgTmV0d29la3MsIEluYy4KLQkJCQkxMTQ4IEV1Y2xpZCBBdmUuLCBTdWl0ZSA0MDAKLQkJCQlDbGV2ZWxhbmQgT0ggNDQxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQkIgICAoaGV4KQkJTXlzcGFjZSBBQgotMDAwNUJCICAgICAoYmFzZSAxNikJCU15c3BhY2UgQUIKLQkJCQlTdmVhdmFnZW4gMzMKLQkJCQlTRS0xMTEzNCBTdG9ja2hvbG0KLQkJCQlTV0VERU4KLQotMDAtMDUtQkMgICAoaGV4KQkJUmVzb3JzeXMgTHRkLgotMDAwNUJDICAgICAoYmFzZSAxNikJCVJlc29yc3lzIEx0ZC4KLQkJCQk4MCBKb2huc2RvbmUgQXZlbnVlLAotCQkJCUhpbGluZ3RvbiwgR2xhc2dvdywKLQkJCQlTY290bGFuZCAgRzUyIDRMVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LUJEICAgKGhleCkJCVJPQVggQlYKLTAwMDVCRCAgICAgKGJhc2UgMTYpCQlST0FYIEJWCi0JCQkJU3RlcnJlbmJlcmd3ZWcgMjkKLQkJCQlOTC0zNzY5IEJTICBTT0VTVEVSQkVSRwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTA1LUJFICAgKGhleCkJCUtvbmdzYmVyZyBTZWF0ZXggQVMKLTAwMDVCRSAgICAgKGJhc2UgMTYpCQlLb25nc2JlcmcgU2VhdGV4IEFTCi0JCQkJUGlyc2VudGVyZXQKLQkJCQlOLTc1NjIgVHJvbmRoZWltCi0JCQkJTk9SV0FZCi0KLTAwLTA1LUJGICAgKGhleCkJCUp1c3RFenkgVGVjaG5vbG9neSwgSW5jLgotMDAwNUJGICAgICAoYmFzZSAxNikJCUp1c3RFenkgVGVjaG5vbG9neSwgSW5jLgotCQkJCTVGLCBOby4gMzI0LCBTZWMuIDEsIEp1bmdodWEgUmQuCi0JCQkJSHNpbmNodSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS1DMCAgIChoZXgpCQlEaWdpdGFsIE5ldHdvcmsgQWxhY2FydGUgQ28uLCBMdGQuCi0wMDA1QzAgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBOZXR3b3JrIEFsYWNhcnRlIENvLiwgTHRkLgotCQkJCUExMDQsIFNlb3VsIEJ1c2luZXNzIEluY3ViYXRvcgotCQkJCTY0Ny0yNiwgRGV1bmdDaHVuLURvbmcsIEthbmdzZW8tR3UKLQkJCQlTZW91bCAgMTU3LTAzMCwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtQzEgICAoaGV4KQkJQS1LeXVuZyBNb3Rpb24sIEluYy4KLTAwMDVDMSAgICAgKGJhc2UgMTYpCQlBLUt5dW5nIE1vdGlvbiwgSW5jLgotCQkJCTU0LTEwLCBNdW5qdW5nLURvbmcKLQkJCQlTb25ncGEtS3UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1DMiAgIChoZXgpCQlTb3JvbnRpLCBJbmMuCi0wMDA1QzIgICAgIChiYXNlIDE2KQkJU29yb250aSwgSW5jLgotCQkJCTEyMjU3IFNvdXRoIEJ1c2luZXNzIFBhcmsgRHJpdmUKLQkJCQkjMTYwCi0JCQkJRHJhcGVyIFV0YWggODQwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUMzICAgKGhleCkJCVBhY2lmaWMgSW5zdHJ1bWVudHMsIEluYy4KLTAwMDVDMyAgICAgKGJhc2UgMTYpCQlQYWNpZmljIEluc3RydW1lbnRzLCBJbmMuCi0JCQkJNDA4MCBQaWtlIExhbmUKLQkJCQlDb25jb3JkIENBIDk0NTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1DNCAgIChoZXgpCQlUZWxlY3QsIEluYy4KLTAwMDVDNCAgICAgKGJhc2UgMTYpCQlUZWxlY3QsIEluYy4KLQkJCQkyMTExIE4uIE1vbHRlciBSb2FkCi0JCQkJTGliZXJ0eSBMYWtlIFdBIDk5MDE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1DNSAgIChoZXgpCQlGbGFnYSBIRgotMDAwNUM1ICAgICAoYmFzZSAxNikJCUZsYWdhIEhGCi0JCQkJVmVzdHVyaGxpZCA3Ci0JCQkJSVMtMTA1IFJleWtqYXZpawotCQkJCUlDRUxBTkQKLQotMDAtMDUtQzYgICAoaGV4KQkJVHJpeiBDb21tdW5pY2F0aW9ucwotMDAwNUM2ICAgICAoYmFzZSAxNikJCVRyaXogQ29tbXVuaWNhdGlvbnMKLQkJCQlBbndvbiBCbGRnLiA3dGggRmwuCi0JCQkJMTQtMTUgWW9pZG8tRG9uZyBZb3VuZ2RldW5ncG8tR3UKLQkJCQlTZW91bCAgMTUwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1DNyAgIChoZXgpCQlJL0YtQ09NIEEvUwotMDAwNUM3ICAgICAoYmFzZSAxNikJCUkvRi1DT00gQS9TCi0JCQkJRWxsZWdhYXJkdmVqIDM2Ci0JCQkJNjQwMCBTb2VuZGVyYm9yZwotCQkJCURFTk1BUksKLQotMDAtMDUtQzggICAoaGV4KQkJVkVSWVRFQ0gKLTAwMDVDOCAgICAgKGJhc2UgMTYpCQlWRVJZVEVDSAotCQkJCSM0MDIsIEphbmcgWW91bmcgU2hpbCBLd2FuLAotCQkJCVZlbnR1cmUgVG93biwgMTY4OC01IFNoaW5pbC1Eb25nLCBEYWVkZW8KLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtQzkgICAoaGV4KQkJTEcgSW5ub3RlayBDby4sIEx0ZC4KLTAwMDVDOSAgICAgKGJhc2UgMTYpCQlMRyBJbm5vdGVrIENvLiwgTHRkLgotCQkJCUxHIENvbXBvbmVudCBSJkQgQ2VudGVyCi0JCQkJMTI3MSwgU2EtRG9uZywgU2FuZ3Jvay1ndQotCQkJCUFuc2FuLXNpIEd5ZW9uZ2dpLWRvIDQyNi03OTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtQ0EgICAoaGV4KQkJSGl0cm9uIFRlY2hub2xvZ3ksIEluYy4KLTAwMDVDQSAgICAgKGJhc2UgMTYpCQlIaXRyb24gVGVjaG5vbG9neSwgSW5jLgotCQkJCUhTSU5DSFUgU0JJUCBTVUJTSURJQVJZCi0JCQkJTm8uIDI1IFImRCAxc3QgUmQuIFNjaWVuY2UtQmFzZWQgSW5kdXN0cgotCQkJCUhzaW4tY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LUNCICAgKGhleCkJCVJPSVMgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA1Q0IgICAgIChiYXNlIDE2KQkJUk9JUyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk2dGggRiBDaGFuZ2h5dW4gQi9ELCA5NjAtMQotCQkJCUhvZ3llLURvbmcgRG9uZ2FuLUt1IEFueWFuZywKLQkJCQk0MzEtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUNDICAgKGhleCkJCVN1bXRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNUNDICAgICAoYmFzZSAxNikJCVN1bXRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTFGLCBOby4gMTczLCBHdW5nIFl1YW4gUm9hZCwKLQkJCQlIc2luY2h1IENpdHkgIDMwMDU0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS1DRCAgIChoZXgpCQlEZW5vbiwgTHRkLgotMDAwNUNEICAgICAoYmFzZSAxNikJCURlbm9uLCBMdGQuCi0JCQkJMzUtMSwgU2FnYW1pb25vIDctY2hvbWUsCi0JCQkJU2FnYW1paGFyYS1zaGkKLQkJCQlLYW5hZ2F3YSAgMjI4LTg1MDUKLQkJCQlKQVBBTgotCi0wMC0wNS1DRSAgIChoZXgpCQlQcm9saW5rIE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbgotMDAwNUNFICAgICAoYmFzZSAxNikJCVByb2xpbmsgTWljcm9zeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJNkYsIE5vLiAzNDksIFlhbmctS3VhbmcgU3QuCi0JCQkJTmVpLUh1IFRhaXBlaSwgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS1DRiAgIChoZXgpCQlUaHVuZGVyIFJpdmVyIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNUNGICAgICAoYmFzZSAxNikJCVRodW5kZXIgUml2ZXIgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjMgQ29ycG9yYXRlIFBsYXphLCBTdWl0ZSAyNTAKLQkJCQlOZXdwb3J0IEJlYWNoIENBIDkyNjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1EMCAgIChoZXgpCQlTb2xpbmV0IFN5c3RlbXMKLTAwMDVEMCAgICAgKGJhc2UgMTYpCQlTb2xpbmV0IFN5c3RlbXMKLQkJCQkxMjAwLTE4MCBFbGdpbiBTdC4KLQkJCQlPdHRhd2EgT250YXJpbwotCQkJCUsyUCAySzMKLQkJCQlDQU5BREEKLQotMDAtMDUtRDEgICAoaGV4KQkJTWV0YXZlY3RvciBUZWNobm9sb2dpZXMKLTAwMDVEMSAgICAgKGJhc2UgMTYpCQlNZXRhdmVjdG9yIFRlY2hub2xvZ2llcwotCQkJCVN0ZWVud2VnIE9wIEdpZXJsZSwgMTAwCi0JCQkJQi0yMzAwIFR1cm5ob3V0LAotCQkJCUJFTEdJVU0KLQotMDAtMDUtRDIgICAoaGV4KQkJREFQIFRlY2hub2xvZ2llcwotMDAwNUQyICAgICAoYmFzZSAxNikJCURBUCBUZWNobm9sb2dpZXMKLQkJCQk5NTUgRmVybmFuZCBEdWZvdXIsCi0JCQkJVmlsbGUgRGUgVmFuaWVyLCBRdWViZWMsCi0JCQkJRzFNIDNCMgotCQkJCUNBTkFEQQotCi0wMC0wNS1EMyAgIChoZXgpCQllUHJvZHVjdGlvbiBTb2x1dGlvbnMsIEluYy4KLTAwMDVEMyAgICAgKGJhc2UgMTYpCQllUHJvZHVjdGlvbiBTb2x1dGlvbnMsIEluYy4KLQkJCQkyMjAwMSBOb3J0aCBQYXJrIERyaXZlCi0JCQkJS2luZ3dvb2QgVFggNzczMzktMzgwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRDQgICAoaGV4KQkJRnV0dXJlU21hcnQgTmV0d29ya3MsIEluYy4KLTAwMDVENCAgICAgKGJhc2UgMTYpCQlGdXR1cmVTbWFydCBOZXR3b3JrcywgSW5jLgotCQkJCTYxNTUgQWxtYWRlbiBFeHByZXNzd2F5Ci0JCQkJU3VpdGUgMTAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUQ1ICAgKGhleCkJCVNwZWVkY29tIFdpcmVsZXNzCi0wMDA1RDUgICAgIChiYXNlIDE2KQkJU3BlZWRjb20gV2lyZWxlc3MKLQkJCQk3MDIwIFByb2Zlc3Npb25hbCBQa3d5IEVhc3QKLQkJCQlTYXJhc290YSBGTCAzNDI0MC04NTE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1ENiAgIChoZXgpCQlUaXRhbiBXaXJlbGVzcwotMDAwNUQ2ICAgICAoYmFzZSAxNikJCVRpdGFuIFdpcmVsZXNzCi0JCQkJMzAzMyBTY2llbmNlIFBhcmsgUm9hZAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRDcgICAoaGV4KQkJVmlzdGEgSW1hZ2luZywgSW5jLgotMDAwNUQ3ICAgICAoYmFzZSAxNikJCVZpc3RhIEltYWdpbmcsIEluYy4KLQkJCQk1MjEgVGF5bG9yIFdheQotCQkJCVNhbiBDYXJsb3MgQ0EgOTQwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUQ4ICAgKGhleCkJCUFyZXNjb20sIEluYy4KLTAwMDVEOCAgICAgKGJhc2UgMTYpCQlBcmVzY29tLCBJbmMuCi0JCQkJMzU0MSBHYXRld2F5IEJsdmQuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRDkgICAoaGV4KQkJVGVjaG5vIFZhbGxleSwgSW5jLgotMDAwNUQ5ICAgICAoYmFzZSAxNikJCVRlY2hubyBWYWxsZXksIEluYy4KLQkJCQlBU0lDIFZlbnR1cmUgVG93biA1RiwKLQkJCQkxMzMwLTMgU2VvY2hvMi1Eb25nLCBTZW9jaG8tS3UsCi0JCQkJU2VvdWwgIDEzNS0wNzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtREEgICAoaGV4KQkJQXBleCBBdXRvbWF0aW9uc3RlY2huaWsKLTAwMDVEQSAgICAgKGJhc2UgMTYpCQlBcGV4IEF1dG9tYXRpb25zdGVjaG5pawotCQkJCVZvc3NlbmthbXAgNAotCQkJCUQtMzgxMDQgQnJhdW5zY2h3ZWlnCi0JCQkJR0VSTUFOWQotCi0wMC0wNS1EQiAgIChoZXgpCQlQU0kgTmVudGVjIEdtYkgKLTAwMDVEQiAgICAgKGJhc2UgMTYpCQlQU0kgTmVudGVjIEdtYkgKLQkJCQlHcmVzY2hiYWNoc3RyYXNzZSAxMgotCQkJCUthcmxzcnVoZSAgNzYyMjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LURDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDVEQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1ERCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1REQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtREUgICAoaGV4KQkJR2kgRm9uZSBLb3JlYSwgSW5jLgotMDAwNURFICAgICAoYmFzZSAxNikJCUdpIEZvbmUgS29yZWEsIEluYy4KLQkJCQlUd2luIEJsZGcuIDR0aCBGbCwKLQkJCQk5MDItMTI0IFRvZ29rLWRvbmcsIEthbmduYW0tZ3UsCi0JCQkJU2VvdWwsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtREYgICAoaGV4KQkJRWxlY3Ryb25pYyBJbm5vdmF0aW9uLCBJbmMuCi0wMDA1REYgICAgIChiYXNlIDE2KQkJRWxlY3Ryb25pYyBJbm5vdmF0aW9uLCBJbmMuCi0JCQkJMTI3MzEgQ2FubmluZ3RvbiBXYXkgU1cKLQkJCQlDYWxnYXJ5LCBBQiBUMlcgMVo3Ci0JCQkJQ0FOQURBCi0KLTAwLTA1LUUwICAgKGhleCkJCUVtcGlyaXggQ29ycC4KLTAwMDVFMCAgICAgKGJhc2UgMTYpCQlFbXBpcml4IENvcnAuCi0JCQkJMjA1IExvd2VsbCBTdC4KLQkJCQlXaWxtaW5ndG9uIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1FMSAgIChoZXgpCQlUcmVsbGlzIFBob3RvbmljcywgTHRkLgotMDAwNUUxICAgICAoYmFzZSAxNikJCVRyZWxsaXMgUGhvdG9uaWNzLCBMdGQuCi0JCQkJUC5PLkIuIDM2Ci0JCQkJWW9nbmVhbSBFbGl0ZSwgMjA2OTIKLQkJCQlJU1JBRUwKLQotMDAtMDUtRTIgICAoaGV4KQkJQ3JlYXRpdiBOZXR3b3JrIFRlY2hub2xvZ2llcwotMDAwNUUyICAgICAoYmFzZSAxNikJCUNyZWF0aXYgTmV0d29yayBUZWNobm9sb2dpZXMKLQkJCQkxNzU1IFN0LiBSZWdpcyBTdWl0ZSAyNDAKLQkJCQlEb2xsYXJkLWRlcy1Pcm1lYXV4Ci0JCQkJUXVlYmVjIEg5Qi0yTTkKLQkJCQlDQU5BREEKLQotMDAtMDUtRTMgICAoaGV4KQkJTGlnaHRTYW5kIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA1RTMgICAgIChiYXNlIDE2KQkJTGlnaHRTYW5kIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMzc1IExvcyBDb2NoZXMgU3QuCi0JCQkJTWlscGl0YXMgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUU0ICAgKGhleCkJCVJlZCBMaW9uIENvbnRyb2xzIEluYy4KLTAwMDVFNCAgICAgKGJhc2UgMTYpCQlSZWQgTGlvbiBDb250cm9scyBJbmMuCi0JCQkJMjAgV2lsbG93IFNwcmluZ3MgQ2lyY2xlCi0JCQkJWW9yayBQQSAxNzQwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRTUgICAoaGV4KQkJUmVuaXNoYXcgUExDCi0wMDA1RTUgICAgIChiYXNlIDE2KQkJUmVuaXNoYXcgUExDCi0JCQkJTmV3IE1pbGxzLCBXb3R0b24tdW5kZXItRWRnZQotCQkJCUdsb3VjZXN0ZXJzaHVyZSwgR0wxMiA4SlIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNS1FNiAgIChoZXgpCQlFZ2VuZXJhLCBJbmMuCi0wMDA1RTYgICAgIChiYXNlIDE2KQkJRWdlbmVyYSwgSW5jLgotCQkJCTE2NSBGb3Jlc3QgU3QuCi0JCQkJTWFybGJvcm8gTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUU3ICAgKGhleCkJCU5ldHJha2UgYW4gQXVkaW9Db2RlcyBDb21wYW55Ci0wMDA1RTcgICAgIChiYXNlIDE2KQkJTmV0cmFrZSBhbiBBdWRpb0NvZGVzIENvbXBhbnkKLQkJCQkzMDAwIFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlQbGFubyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRTggICAoaGV4KQkJVHVyYm9XYXZlLCBJbmMuCi0wMDA1RTggICAgIChiYXNlIDE2KQkJVHVyYm9XYXZlLCBJbmMuCi0JCQkJNTU1IFNvdXRoIFN0YXRlCi0JCQkJU3VpdGUgMzAyCi0JCQkJT3JlbSBVVCA4NDA1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRTkgICAoaGV4KQkJVW5pY2VzcyBOZXR3b3JrLCBJbmMuCi0wMDA1RTkgICAgIChiYXNlIDE2KQkJVW5pY2VzcyBOZXR3b3JrLCBJbmMuCi0JCQkJODcwIERvcm90aHkgRHIuICM3MDgKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1FQSAgIChoZXgpCQlSZWRuaXgKLTAwMDVFQSAgICAgKGJhc2UgMTYpCQlSZWRuaXgKLQkJCQk1MDIsIERvbmctQSBSZXNvcnQgT2ZmaWNldGVsCi0JCQkJNTM4LTggQm9uZ215dW5nLURvbmcgWXVzdW5nLAotCQkJCVRhZWpvbiAgMzA1LTcwOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1FQiAgIChoZXgpCQlCbHVlIFJpZGdlIE5ldHdvcmtzLCBJbmMuCi0wMDA1RUIgICAgIChiYXNlIDE2KQkJQmx1ZSBSaWRnZSBOZXR3b3JrcywgSW5jLgotCQkJCTE0MTIwIFBhcmtlIExvbmcgQ291cnQKLQkJCQlTdWl0ZSAyMDEKLQkJCQlDaGFudGlsbHkgVkEgMjAxNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUVDICAgKGhleCkJCU1vc2FpYyBTeXN0ZW1zIEluYy4KLTAwMDVFQyAgICAgKGJhc2UgMTYpCQlNb3NhaWMgU3lzdGVtcyBJbmMuCi0JCQkJNyBDYW1wYmVsbCBQYXJrCi0JCQkJU29tZXJ2aWxsZSBNQSAwMjE0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRUQgICAoaGV4KQkJVGVjaG5pa3VtIEpvYW5uZXVtIEdtYkgKLTAwMDVFRCAgICAgKGJhc2UgMTYpCQlUZWNobmlrdW0gSm9hbm5ldW0gR21iSAotCQkJCUFsdGUgUG9zdHN0cmFzc2UgMTQ5Ci0JCQkJODAyMCBHcmF6Ci0JCQkJQVVTVFJJQQotCi0wMC0wNS1FRSAgIChoZXgpCQlCRVdBVE9SIEdyb3VwCi0wMDA1RUUgICAgIChiYXNlIDE2KQkJQkVXQVRPUiBHcm91cAotCQkJCUJld2F0b3IgQUIsIEJveCAxMjc1Ci0JCQkJU0UtMTcxMjQgU29sbmFuCi0JCQkJU1dFREVOCi0KLTAwLTA1LUVGICAgKGhleCkJCUFET0lSIERpZ2l0YWwgVGVjaG5vbG9neQotMDAwNUVGICAgICAoYmFzZSAxNikJCUFET0lSIERpZ2l0YWwgVGVjaG5vbG9neQotCQkJCTI4IEZsLCBaaGFvRmVuZyBXb3JsZCBUcmFkZSBCbGRnLgotCQkJCTM2OSBKaWFuZ1N1IFJkLgotCQkJCVNoYW5naGFpIDIwMDA1MCwgCi0JCQkJQ0hJTkEKLQotMDAtMDUtRjAgICAoaGV4KQkJU0FURUMKLTAwMDVGMCAgICAgKGJhc2UgMTYpCQlTQVRFQwotCQkJCVAuTy4gQm94IDQ1MDIyCi0JCQkJSmVydXNhbGVtCi0JCQkJOTE0NTAgCi0JCQkJSVNSQUVMCi0KLTAwLTA1LUYxICAgKGhleCkJCVZyY29tLCBJbmMuCi0wMDA1RjEgICAgIChiYXNlIDE2KQkJVnJjb20sIEluYy4KLQkJCQk0MDEsIFNvbmdhbSBCbGRnLCA0NzktMSwKLQkJCQlCYW5nYmFlIDMtZG9uZywgU2VvY2hvLWt1LAotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtRjIgICAoaGV4KQkJUG93ZXIgUiwgSW5jLgotMDAwNUYyICAgICAoYmFzZSAxNikJCVBvd2VyIFIsIEluYy4KLQkJCQk3NTYgQWxvaGEgU3QuCi0JCQkJU2VhdHRsZSBXQSA5ODEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRjMgICAoaGV4KQkJV2Vib3luCi0wMDA1RjMgICAgIChiYXNlIDE2KQkJV2Vib3luCi0JCQkJMjYgUnVlIE9lcyBHYXVkaW5lcwotCQkJCTc4MTAwIFNhaW50LUdlcm1haW4KLQkJCQlGUkFOQ0UKLQotMDAtMDUtRjQgICAoaGV4KQkJU3lzdGVtIEJhc2UgQ28uLCBMdGQuCi0wMDA1RjQgICAgIChiYXNlIDE2KQkJU3lzdGVtIEJhc2UgQ28uLCBMdGQuCi0JCQkJNDc1LTIyLCBCYW5nQmFlIDIgZG9uZywKLQkJCQlTZW9jaG8gZ3UsIFNlb3VsLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1GNSAgIChoZXgpCQlPWU8gR2Vvc3BhY2UKLTAwMDVGNSAgICAgKGJhc2UgMTYpCQlPWU8gR2Vvc3BhY2UKLQkJCQk3MDA3IFBpbmVtb250Ci0JCQkJSG91c3RvbiBUWCA3NzA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRjYgICAoaGV4KQkJWW91bmcgQ2hhbmcgQ28uIEx0ZC4KLTAwMDVGNiAgICAgKGJhc2UgMTYpCQlZb3VuZyBDaGFuZyBDby4gTHRkLgotCQkJCTE0MzIgTWFpbiBTdHJlZXQKLQkJCQlXYWx0aGFtIE1BIDAyNDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1GNyAgIChoZXgpCQlBbmFsb2cgRGV2aWNlcywgSW5jLgotMDAwNUY3ICAgICAoYmFzZSAxNikJCUFuYWxvZyBEZXZpY2VzLCBJbmMuCi0JCQkJODA0IFdvYnVybiBTdC4sIE1TIDExMQotCQkJCVdpbG1pbmd0b24gTUEgMDE4ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUY4ICAgKGhleCkJCVJlYWwgVGltZSBBY2Nlc3MsIEluYy4KLTAwMDVGOCAgICAgKGJhc2UgMTYpCQlSZWFsIFRpbWUgQWNjZXNzLCBJbmMuCi0JCQkJNDU1IE4uIENhbnlvbnMgUGt3eS4KLQkJCQlTdWl0ZSBCCi0JCQkJTGl2ZXJtb3JlIENBIDk0NTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1GOSAgIChoZXgpCQlUT0EgQ29ycG9yYXRpb24KLTAwMDVGOSAgICAgKGJhc2UgMTYpCQlUT0EgQ29ycG9yYXRpb24KLQkJCQkyLTEgVGFrYW1hdHN1LWNobywKLQkJCQlUYWthcmF6dWthLWNpdHkKLQkJCQlIeW9nbyAgNjY1LTAwNDMKLQkJCQlKQVBBTgotCi0wMC0wNS1GQSAgIChoZXgpCQlJUE9wdGljYWwsIEluYy4KLTAwMDVGQSAgICAgKGJhc2UgMTYpCQlJUE9wdGljYWwsIEluYy4KLQkJCQk0NTk0MCBIb3JzZXNob2UgRHJpdmUKLQkJCQlTdWl0ZSAxNTAKLQkJCQlEdWxsZXMgVkEgMjAxNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUZCICAgKGhleCkJCVNoYXJlR2F0ZSwgSW5jLgotMDAwNUZCICAgICAoYmFzZSAxNikJCVNoYXJlR2F0ZSwgSW5jLgotCQkJCTk4MDUgRG91YmxlIFIgQmx2ZC4KLQkJCQlUaGlyZCBGbG9vcgotCQkJCVJlbm8gTlYgODk1MTEtNTkxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRkMgICAoaGV4KQkJU2NoZW5jayBQZWdhc3VzIENvcnAuCi0wMDA1RkMgICAgIChiYXNlIDE2KQkJU2NoZW5jayBQZWdhc3VzIENvcnAuCi0JCQkJMjg5MCBKb2huIFIgUm9hZAotCQkJCVRyb3kgTUkgNDgwODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUZEICAgKGhleCkJCVBhY2tldExpZ2h0IE5ldHdvcmtzIEx0ZC4KLTAwMDVGRCAgICAgKGJhc2UgMTYpCQlQYWNrZXRMaWdodCBOZXR3b3JrcyBMdGQuCi0JCQkJMjcgSGFiYXJ6ZWwgU3QuCi0JCQkJUmFtYXQgSGFoYXlhbAotCQkJCVRlbC1Bdml2ICA2OTcxMAotCQkJCUlTUkFFTAotCi0wMC0wNS1GRSAgIChoZXgpCQlUcmFmaWNvbiBOLlYuCi0wMDA1RkUgICAgIChiYXNlIDE2KQkJVHJhZmljb24gTi5WLgotCQkJCUJpc3NlZ2Vtc2VzdHJhYXQgNDUKLQkJCQlCLTg1MDEgSGV1bGUKLQkJCQlCRUxHSVVNCi0KLTAwLTA1LUZGICAgKGhleCkJCVNOUyBTb2x1dGlvbnMsIEluYy4KLTAwMDVGRiAgICAgKGJhc2UgMTYpCQlTTlMgU29sdXRpb25zLCBJbmMuCi0JCQkJMm5kIEZsLiBIaWxsIEhvdXNlLAotCQkJCTk5LTIgU29oeXVuLCBCdW5kYW5nLCBTdW5nbmFtLCBLeXVuZ2dpLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi0wMCAgIChoZXgpCQlUb3NoaWJhIFRlbGkgQ29ycG9yYXRpb24KLTAwMDYwMCAgICAgKGJhc2UgMTYpCQlUb3NoaWJhIFRlbGkgQ29ycG9yYXRpb24KLQkJCQkgNC03LTEgQXNhaGlnYW9rYSwgSGluby1TaGksCi0JCQkJVG9reW8gMTkxLTAwNjUKLQkJCQlKQVBBTgotCi0wMC0wNi0wMSAgIChoZXgpCQlPdGFuaWtlaWtpIENvLiwgTHRkLgotMDAwNjAxICAgICAoYmFzZSAxNikJCU90YW5pa2Vpa2kgQ28uLCBMdGQuCi0JCQkJMi0xMC0yMyBIaWthcmktTWFjaGkKLQkJCQlIaWdhc2hpLUt1IEhpcm9zaGltYQotCQkJCTczMi0wMDUyCi0JCQkJSkFQQU4KLQotMDAtMDYtMDIgICAoaGV4KQkJQ2lya2l0ZWNoIEVsZWN0cm9uaWNzIENvLgotMDAwNjAyICAgICAoYmFzZSAxNikJCUNpcmtpdGVjaCBFbGVjdHJvbmljcyBDby4KLQkJCQlCMS0yLCBOby4gMzYxLCBGdS1YaW5nIEZpcnN0IFJvYWQKLQkJCQlHdWVpLVNoYW4gSHNpYW5nLAotCQkJCVRhby1ZdWFuIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtMDMgICAoaGV4KQkJQmFrZXIgSHVnaGVzIEluYy4KLTAwMDYwMyAgICAgKGJhc2UgMTYpCQlCYWtlciBIdWdoZXMgSW5jLgotCQkJCTIwMDEgUmFua2luIFJkLgotCQkJCUhvdXN0b24gVFggNzcwNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTA0ICAgKGhleCkJCUBUcmFjayBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNjA0ICAgICAoYmFzZSAxNikJCUBUcmFjayBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTExNTUgS2FzIERyLgotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTA1ICAgKGhleCkJCUlubmNvbSBJbnRlcm5hdGlvbmFsLCBJbmMuCi0wMDA2MDUgICAgIChiYXNlIDE2KQkJSW5uY29tIEludGVybmF0aW9uYWwsIEluYy4KLQkJCQlQLk8uIEJveCAxMDYwCi0JCQkJODMgSGFsbHMgUm9hZAotCQkJCU9sZCBMeW1lIENUIDA2MzcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0wNiAgIChoZXgpCQlSYXBpZFdBTiwgSW5jLgotMDAwNjA2ICAgICAoYmFzZSAxNikJCVJhcGlkV0FOLCBJbmMuCi0JCQkJMjA4NSBIYW1pbHRvbiBBdmUuCi0JCQkJU3VpdGUgIzIyMAotCQkJCVNhbiBKb3NlIENBIDk1MTI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0wNyAgIChoZXgpCQlPbW5pIERpcmVjdGlvbmFsIENvbnRyb2wgVGVjaG5vbG9neSBJbmMuCi0wMDA2MDcgICAgIChiYXNlIDE2KQkJT21uaSBEaXJlY3Rpb25hbCBDb250cm9sIFRlY2hub2xvZ3kgSW5jLgotCQkJCThGLTIsIE5vLiA5NCwgUGFvLUNodW5nIFJkLgotCQkJCUhzaW4tVGllbiBDaXR5LAotCQkJCVRhaXBlaSBIc2llbiwgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi0wOCAgIChoZXgpCQlBdC1Ta3kgU0FTCi0wMDA2MDggICAgIChiYXNlIDE2KQkJQXQtU2t5IFNBUwotCQkJCVpJIEF0aGVsaWEgMywgVm9pIEF0bGFzCi0JCQkJMTM2MDAtIExhIENpb3RhdAotCQkJCUZSQU5DRQotCi0wMC0wNi0wOSAgIChoZXgpCQlDcm9zc3BvcnQgU3lzdGVtcwotMDAwNjA5ICAgICAoYmFzZSAxNikJCUNyb3NzcG9ydCBTeXN0ZW1zCi0JCQkJMTA5NDAgTkUgMzNyZCBQbC4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlCZWxsZXZ1ZSBXQSA5ODAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMEEgICAoaGV4KQkJQmx1ZTJzcGFjZQotMDAwNjBBICAgICAoYmFzZSAxNikJCUJsdWUyc3BhY2UKLQkJCQlBcnN0YWFuZ3N2LiA5Ci0JCQkJU0UtMTE3NDggU3RvY2tob2xtCi0JCQkJU1dFREVOCi0KLTAwLTA2LTBCICAgKGhleCkJCUVtZXJzb24gTmV0d29yayBQb3dlcgotMDAwNjBCICAgICAoYmFzZSAxNikJCUVtZXJzb24gTmV0d29yayBQb3dlcgotCQkJCTI5MDAgUy4gRGlhYmxvIFdheSBTdWl0ZSAxOTAKLQkJCQlUZW1wZSBBWiA4NTI4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMEMgICAoaGV4KQkJTWVsY28gSW5kdXN0cmllcywgSW5jLgotMDAwNjBDICAgICAoYmFzZSAxNikJCU1lbGNvIEluZHVzdHJpZXMsIEluYy4KLQkJCQkxNTc1IFcuIDEyNHRoIEF2ZS4KLQkJCQlEZW52ZXIgQ08gODAyMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTBEICAgKGhleCkJCVdhdmU3IE9wdGljcwotMDAwNjBEICAgICAoYmFzZSAxNikJCVdhdmU3IE9wdGljcwotCQkJCTEwNzUgV2luZHdhcmQgUmlkZ2UgUGt3eS4KLQkJCQlTdWl0ZSAxNzAKLQkJCQlBbHBoYXJldHRhIEdBIDMwMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0wRSAgIChoZXgpCQlJR1lTIFN5c3RlbXMsIEluYy4KLTAwMDYwRSAgICAgKGJhc2UgMTYpCQlJR1lTIFN5c3RlbXMsIEluYy4KLQkJCQk3MzczIExpbmNvbG4gV2F5Ci0JCQkJR2FyZGVuIEdyb3ZlIENBIDkyODQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0wRiAgIChoZXgpCQlOYXJhZCBOZXR3b3JrcyBJbmMKLTAwMDYwRiAgICAgKGJhc2UgMTYpCQlOYXJhZCBOZXR3b3JrcyBJbmMKLQkJCQk1MTUgR3JvdG9uIFJvYWQKLQkJCQlXZXN0Zm9yZCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMTAgICAoaGV4KQkJQWJlb25hIE5ldHdvcmtzIEluYwotMDAwNjEwICAgICAoYmFzZSAxNikJCUFiZW9uYSBOZXR3b3JrcyBJbmMKLQkJCQk0NjExNyBMYW5kaW5nIFBhcmt3YXkKLQkJCQlGcmVtb250IENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0xMSAgIChoZXgpCQlaZXVzIFdpcmVsZXNzLCBJbmMuCi0wMDA2MTEgICAgIChiYXNlIDE2KQkJWmV1cyBXaXJlbGVzcywgSW5jLgotCQkJCTgzMjUgR3VpbGZvcmQgUm9hZAotCQkJCUNvbHVtYmlhIE1EIDIxMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0xMiAgIChoZXgpCQlBY2N1c3lzLCBJbmMuCi0wMDA2MTIgICAgIChiYXNlIDE2KQkJQWNjdXN5cywgSW5jLgotCQkJCTVGLCBOby4gMzgsIFRhaXl1YW4gU3QKLQkJCQlKaHViZWkgQ2l0eQotCQkJCUhzaW5jaHUgQ291bnR5ICAzMDI2NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtMTMgICAoaGV4KQkJS2F3YXNha2kgTWljcm9lbGVjdHJvbmljcyBJbmNvcnBvcmF0ZWQKLTAwMDYxMyAgICAgKGJhc2UgMTYpCQlLYXdhc2FraSBNaWNyb2VsZWN0cm9uaWNzIEluY29ycG9yYXRlZAotCQkJCU1URyBCLTUsIDEtMywgTmFrYXNlLAotCQkJCU1paGFtYS1rdSBDaGliYSAyNjEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTA2LTE0ICAgKGhleCkJCVByaXNtIEhvbGRpbmdzCi0wMDA2MTQgICAgIChiYXNlIDE2KQkJUHJpc20gSG9sZGluZ3MKLQkJCQlQLk8uIEJveCA5MDEsCi0JCQkJV2l0a29wcGVuLCAyMDY4LAotCQkJCUdhdXRlbmcgIAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0wNi0xNSAgIChoZXgpCQlLaW1vdG8gRWxlY3RyaWMgQ28uLCBMdGQuCi0wMDA2MTUgICAgIChiYXNlIDE2KQkJS2ltb3RvIEVsZWN0cmljIENvLiwgTHRkLgotCQkJCTMtMSBGdW5haGFzaGktQ2hvLAotCQkJCVRlbm5vamktS3UsIE9zYWthCi0JCQkJNTQzLTAwMjQKLQkJCQlKQVBBTgotCi0wMC0wNi0xNiAgIChoZXgpCQlUZWwgTmV0IENvLiwgTHRkLgotMDAwNjE2ICAgICAoYmFzZSAxNikJCVRlbCBOZXQgQ28uLCBMdGQuCi0JCQkJM0YgQk9GIEJsZGcgNzMwLTE1IEdvamUgU29uZwotCQkJCVllb25qZSBHdSBQdXNhbSA2MTEtMDczLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi0xNyAgIChoZXgpCQlSZWRzd2l0Y2ggSW5jLgotMDAwNjE3ICAgICAoYmFzZSAxNikJCVJlZHN3aXRjaCBJbmMuCi0JCQkJMTgxNSBNY0NhbmRsZXNzIERyaXZlCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUtODA0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMTggICAoaGV4KQkJRGlnaVBvd2VyIE1hbnVmYWN0dXJpbmcgSW5jLgotMDAwNjE4ICAgICAoYmFzZSAxNikJCURpZ2lQb3dlciBNYW51ZmFjdHVyaW5nIEluYy4KLQkJCQlOby4gMTE0LCBGbG9vciAxMywgU2VjLiAxLAotCQkJCUhzaW4gVGFpIFd1IFJvYWQsIFNoaWpyIENpdHksCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTE5ICAgKGhleCkJCUNvbm5lY3Rpb24gVGVjaG5vbG9neSBTeXN0ZW1zCi0wMDA2MTkgICAgIChiYXNlIDE2KQkJQ29ubmVjdGlvbiBUZWNobm9sb2d5IFN5c3RlbXMKLQkJCQkxOEYtNiwgTm8uIDc5LCBTZWMuIDEsCi0JCQkJSHNpbiBUYWkgV3UgUmQuCi0JCQkJSHNpbmNoaWggVGFpcGVpLCAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTFBICAgKGhleCkJCVpldGFyaSBJbmMuCi0wMDA2MUEgICAgIChiYXNlIDE2KQkJWmV0YXJpIEluYy4KLQkJCQk0MTEgV2F2ZXJseSBPYWtzIFJkLgotCQkJCVN1aXRlIDMyMwotCQkJCVdhbHRoYW0gTUEgMDI0NTItODQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMUIgICAoaGV4KQkJTm90ZWJvb2sgRGV2ZWxvcG1lbnQgTGFiLiAgTGVub3ZvIEphcGFuIEx0ZC4KLTAwMDYxQiAgICAgKGJhc2UgMTYpCQlOb3RlYm9vayBEZXZlbG9wbWVudCBMYWIuICBMZW5vdm8gSmFwYW4gTHRkLgotCQkJCTE2MjMtMTQgU2hpbW90c3VydW1hCi0JCQkJWWFtYXRvLXNoaSBLYW5hZ2F3YS1rZW4KLQkJCQkyNDItODUwMgotCQkJCUpBUEFOCi0KLTAwLTA2LTFDICAgKGhleCkJCUhvc2hpbm8gTWV0YWwgSW5kdXN0cmllcywgTHRkLgotMDAwNjFDICAgICAoYmFzZSAxNikJCUhvc2hpbm8gTWV0YWwgSW5kdXN0cmllcywgTHRkLgotCQkJCTY0NSBZYW1hbm9rYW1pLCBZYWJ1dHN1a2EsCi0JCQkJTml0dGEtZ3VuLCBHdW5tYQotCQkJCTM3OS0yMzAyCi0JCQkJSkFQQU4KLQotMDAtMDYtMUQgICAoaGV4KQkJTUlQIFRlbGVjb20sIEluYy4KLTAwMDYxRCAgICAgKGJhc2UgMTYpCQlNSVAgVGVsZWNvbSwgSW5jLgotCQkJCTNyZCBGbG9vciwgU2FuZ2lsIEJMREcsCi0JCQkJOTQ4LTE2LCBCb25nY2hlb25kb25nLCBHd2FuYWtrdSwKLQkJCQlTZW91bCAgMTUxLTA2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi0xRSAgIChoZXgpCQlNYXhhbiBTeXN0ZW1zCi0wMDA2MUUgICAgIChiYXNlIDE2KQkJTWF4YW4gU3lzdGVtcwotCQkJCTEtODQsIFdvdWxhbS1kb25nCi0JCQkJU2Fsc2VvLWd1LCBEQUVHVSwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtMUYgICAoaGV4KQkJVmlzaW9uIENvbXBvbmVudHMgR21iSAotMDAwNjFGICAgICAoYmFzZSAxNikJCVZpc2lvbiBDb21wb25lbnRzIEdtYkgKLQkJCQlPdHRvc3RyLiAyCi0JCQkJRXR0bGluZ2VuLCA3NjI3NQotCQkJCUdFUk1BTlkKLQotMDAtMDYtMjAgICAoaGV4KQkJU2VyaWFsIFN5c3RlbSBMdGQuCi0wMDA2MjAgICAgIChiYXNlIDE2KQkJU2VyaWFsIFN5c3RlbSBMdGQuCi0JCQkJNzYgUGxheWZhaXIgUm9hZAotCQkJCSMwNC0wMyBMSEsyIEJ1aWxkaW5nCi0JCQkJMzY3OTk2Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTA2LTIxICAgKGhleCkJCUhpbm94LCBDby4sIEx0ZC4KLTAwMDYyMSAgICAgKGJhc2UgMTYpCQlIaW5veCwgQ28uLCBMdGQuCi0JCQkJMTUtNyAzLWNob21lLCBTZW5uaW4tY2hvLAotCQkJCUhhY2hpb2ppLUNpdHksIFRva3lvLAotCQkJCTE5My0wODM1Ci0JCQkJSkFQQU4KLQotMDAtMDYtMjIgICAoaGV4KQkJQ2h1bmcgRnUgQ2hlbiBZZWggRW50ZXJwcmlzZSBDb3JwLgotMDAwNjIyICAgICAoYmFzZSAxNikJCUNodW5nIEZ1IENoZW4gWWVoIEVudGVycHJpc2UgQ29ycC4KLQkJCQkyRiBOby4gNjY2IEppbmcgUGluZyBSb2FkLAotCQkJCUNodW5nIEhvIENpdHksCi0JCQkJVGFpcGVpIEhzaWVuICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTIzICAgKGhleCkJCU1HRSBVUFMgU3lzdGVtcyBGcmFuY2UKLTAwMDYyMyAgICAgKGJhc2UgMTYpCQlNR0UgVVBTIFN5c3RlbXMgRnJhbmNlCi0JCQkJMTQwIEF2ZW51ZSBKZWFuIEt1bnR6bWFubgotCQkJCVppcnN0IE1vbnRib25ub3QgU3QgTWFydGluIDM4MzM0IFN0IElzbWkKLQkJCQlGUkFOQ0UKLQotMDAtMDYtMjQgICAoaGV4KQkJR2VudG5lciBDb21tdW5pY2F0aW9ucyBDb3JwLgotMDAwNjI0ICAgICAoYmFzZSAxNikJCUdlbnRuZXIgQ29tbXVuaWNhdGlvbnMgQ29ycC4KLQkJCQkxODI1IFJlc2VhcmNoIFdheQotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0yNSAgIChoZXgpCQlUaGUgTGlua3N5cyBHcm91cCwgSW5jLgotMDAwNjI1ICAgICAoYmFzZSAxNikJCVRoZSBMaW5rc3lzIEdyb3VwLCBJbmMuCi0JCQkJMTc0MDEgQXJtc3Ryb25nIEF2ZS4KLQkJCQlJcnZpbmUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTI2ICAgKGhleCkJCU1XRSBHbWJICi0wMDA2MjYgICAgIChiYXNlIDE2KQkJTVdFIEdtYkgKLQkJCQlPbGJyaWNodHN0ci4gMjEKLQkJCQlELTY5NDY5IFdlaW5oZWltCi0JCQkJR0VSTUFOWQotCi0wMC0wNi0yNyAgIChoZXgpCQlVbml3aWRlIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNjI3ICAgICAoYmFzZSAxNikJCVVuaXdpZGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJS29yZWEgRGV2ZWxvcG1lbnQgQmFuayBCL0QgNXRoIEZscgotCQkJCUR1bnNhbmRvbmcsIFNlb2d1LAotCQkJCVRhZWpvbiAzMDItMTIyLCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtMjggICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNjI4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTI5ICAgKGhleCkJCUlCTSBDb3JwCi0wMDA2MjkgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTJBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDYyQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0yQiAgIChoZXgpCQlJTlRSQVNFUlZFUiBURUNITk9MT0dZCi0wMDA2MkIgICAgIChiYXNlIDE2KQkJSU5UUkFTRVJWRVIgVEVDSE5PTE9HWQotCQkJCVNFVkVOIE9DVE9CRVIgSElMTCBSRC4KLQkJCQlIT0xMSVNUT04gTUEgMDE3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTJDICAgKGhleCkJCUJpdmlvIE5ldHdvcmtzCi0wMDA2MkMgICAgIChiYXNlIDE2KQkJQml2aW8gTmV0d29ya3MKLQkJCQk0NDU3IFdpbGxvdyBSb2FkLAotCQkJCVBsZWFzYW50b24gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTJEICAgKGhleCkJCVRvdWNoU3RhciBUZWNobm9sb2dpZXMsIEwuTC5DLgotMDAwNjJEICAgICAoYmFzZSAxNikJCVRvdWNoU3RhciBUZWNobm9sb2dpZXMsIEwuTC5DLgotCQkJCTUxNDcgU291dGggR2FybmV0dCBSb2FkCi0JCQkJU3VpdGUgQQotCQkJCVR1bHNhIE9LIDc0MTQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0yRSAgIChoZXgpCQlBcmlzdG9zIExvZ2ljIENvcnAuCi0wMDA2MkUgICAgIChiYXNlIDE2KQkJQXJpc3RvcyBMb2dpYyBDb3JwLgotCQkJCTI3MDUxIFRvd25lIENlbnRyZSBEci4KLQkJCQlTdWl0ZSAyOTAKLQkJCQlGb290aGlsbCBSYW5jaCBDQSA5MjYxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMkYgICAoaGV4KQkJUGl2b3RlY2ggU3lzdGVtcyBJbmMuCi0wMDA2MkYgICAgIChiYXNlIDE2KQkJUGl2b3RlY2ggU3lzdGVtcyBJbmMuCi0JCQkJMjAwIENlbnRlbm5pYWwgQXZlLiwKLQkJCQlTdWl0ZSAyMjIKLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0zMCAgIChoZXgpCQlBZHRyYW56IFN3ZWRlbgotMDAwNjMwICAgICAoYmFzZSAxNikJCUFkdHJhbnogU3dlZGVuCi0JCQkJRGVwdC4gVENDL1RICi0JCQkJT3N0cmFyaW5ndmFnZW4gMiA3MjE3MyBWYXN0ZXJhcwotCQkJCVNXRURFTgotCi0wMC0wNi0zMSAgIChoZXgpCQlPcHRpY2FsIFNvbHV0aW9ucywgSW5jLgotMDAwNjMxICAgICAoYmFzZSAxNikJCU9wdGljYWwgU29sdXRpb25zLCBJbmMuCi0JCQkJMTYzMDUgMzZ0aCBBdmUuIE4uCi0JCQkJU3VpdGUgMzAwCi0JCQkJUGx5bW91dGggTU4gNTU0NDYtMjY5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMzIgICAoaGV4KQkJTWVzY28gRW5naW5lZXJpbmcgR21iSAotMDAwNjMyICAgICAoYmFzZSAxNikJCU1lc2NvIEVuZ2luZWVyaW5nIEdtYkgKLQkJCQlXaWVzZW50YWxzdHJhc3NlIDc0Ci0JCQkJNzk1MzkgTG9ycmFjaAotCQkJCUdFUk1BTlkKLQotMDAtMDYtMzMgICAoaGV4KQkJQ3Jvc3MgTWF0Y2ggVGVjaG5vbG9naWVzIEdtYkgKLTAwMDYzMyAgICAgKGJhc2UgMTYpCQlDcm9zcyBNYXRjaCBUZWNobm9sb2dpZXMgR21iSAotCQkJCVVuc3RydXR3ZWcgNAotCQkJCUplbmEgMDc3NDMKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTM0ICAgKGhleCkJCUdURSBBaXJmb25lIEluYy4KLTAwMDYzNCAgICAgKGJhc2UgMTYpCQlHVEUgQWlyZm9uZSBJbmMuCi0JCQkJMjgwOSBCdXR0ZXJmaWVsZAotCQkJCU9ha2Jyb29rIElMIDYwNTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0zNSAgIChoZXgpCQlQYWNrZXRBaXIgTmV0d29ya3MsIEluYy4KLTAwMDYzNSAgICAgKGJhc2UgMTYpCQlQYWNrZXRBaXIgTmV0d29ya3MsIEluYy4KLQkJCQkxMTU0NSBXLiBCZXJuYXJkbyBDdC4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTM2ICAgKGhleCkJCUplZGFpIEJyb2FkYmFuZCBOZXR3b3JrcwotMDAwNjM2ICAgICAoYmFzZSAxNikJCUplZGFpIEJyb2FkYmFuZCBOZXR3b3JrcwotCQkJCTMzMSBOZXdtYW4gU3ByaW5ncyBSZC4KLQkJCQlCdWlsZGluZyAxLCAybmQgRmxvb3IKLQkJCQlSZWQgQmFuayBOSiAwNzcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMzcgICAoaGV4KQkJVG9wdHJlbmQtTWV0YSBJbmZvcm1hdGlvbiAoU2hlblpoZW4pIEluYy4KLTAwMDYzNyAgICAgKGJhc2UgMTYpCQlUb3B0cmVuZC1NZXRhIEluZm9ybWF0aW9uIChTaGVuWmhlbikgSW5jLgotCQkJCTIvRiwgQmxkZy4gMywgU2VjdGlvbiBBLCBOb3ItRWFzdCBab25lCi0JCQkJRWFzdGVybiBJbmR1c3RyaWFsIEFyZWEsIE92ZXJzZWFzIENpdHksCi0JCQkJQ0hJTkEKLQotMDAtMDYtMzggICAoaGV4KQkJU3VuZ2ppbiBDJkMgQ28uLCBMdGQuCi0wMDA2MzggICAgIChiYXNlIDE2KQkJU3VuZ2ppbiBDJkMgQ28uLCBMdGQuCi0JCQkJMTU0My02LCBTZW9jaG8tZG9uZywgU2VvY2hvLWd1LAotCQkJCVNlb3VsICAxMzctMDczCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTM5ICAgKGhleCkJCU5ld3RlYwotMDAwNjM5ICAgICAoYmFzZSAxNikJCU5ld3RlYwotCQkJCUxhYXJzdHJhYXQgNQotCQkJCUItOTEwMCBTaW50LU5pa2xhYXMKLQkJCQlCRUxHSVVNCi0KLTAwLTA2LTNBICAgKGhleCkJCUR1cmEgTWljcm8sIEluYy4KLTAwMDYzQSAgICAgKGJhc2UgMTYpCQlEdXJhIE1pY3JvLCBJbmMuCi0JCQkJMTM1ODAgRmlmdGggU3RyZWV0Ci0JCQkJQ2hpbm8gQ0EgOTE3MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTNCICAgKGhleCkJCUFyY3R1cnVzIE5ldHdvcmtzLCBJbmMuCi0wMDA2M0IgICAgIChiYXNlIDE2KQkJQXJjdHVydXMgTmV0d29ya3MsIEluYy4KLQkJCQk3MDEgRXZhbnMgQXZlLiAtIFN1aXRlIDMwMAotCQkJCVRvcm9udG8gT250YXJpbyBNOUMgMUEzCi0JCQkJQ0FOQURBCi0KLTAwLTA2LTNDICAgKGhleCkJCUludHJpbnN5YyBFdXJvcGUgTHRkCi0wMDA2M0MgICAgIChiYXNlIDE2KQkJSW50cmluc3ljIEV1cm9wZSBMdGQKLQkJCQk3MDAgV2VzdCBQZW5kZXIgU3RyZWV0LCAxMHRoIEZsb29yLAotCQkJCVZhbmNvdXZlciwgQkMsIFY2QyAxRzgKLQkJCQlDQU5BREEKLQotMDAtMDYtM0QgICAoaGV4KQkJTWljcm93YXZlIERhdGEgU3lzdGVtcyBJbmMuCi0wMDA2M0QgICAgIChiYXNlIDE2KQkJTWljcm93YXZlIERhdGEgU3lzdGVtcyBJbmMuCi0JCQkJMTc1IFNjaWVuY2UgUGFya3dheQotCQkJCVJvY2hlc3RlciBOWSAxNDYyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtM0UgICAoaGV4KQkJT3B0aG9zIEluYy4KLTAwMDYzRSAgICAgKGJhc2UgMTYpCQlPcHRob3MgSW5jLgotCQkJCTU5MCBUYXlsb3IgV2F5Ci0JCQkJU2FuIENhcmxvcyBDQSA5NDA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtM0YgICAoaGV4KQkJRXZlcmV4IENvbW11bmljYXRpb25zIEluYy4KLTAwMDYzRiAgICAgKGJhc2UgMTYpCQlFdmVyZXggQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTUwMjBBIEJyYW5kaW4gQ3QuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNDAgICAoaGV4KQkJV2hpdGUgUm9jayBOZXR3b3JrcwotMDAwNjQwICAgICAoYmFzZSAxNikJCVdoaXRlIFJvY2sgTmV0d29ya3MKLQkJCQlTdWl0ZSAjOTAwCi0JCQkJMTgxMTEgUHJlc3RvbiBSb2FkCi0JCQkJRGFsbGFzIFRYIDc1MjUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi00MSAgIChoZXgpCQlJVENOCi0wMDA2NDEgICAgIChiYXNlIDE2KQkJSVRDTgotCQkJCTg1NzEgR2FuZGVyIENyZWVrIERyaXZlCi0JCQkJTWlhbWlzYnVyZyBPSCA0NTM0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNDIgICAoaGV4KQkJR2VuZXRlbCBTeXN0ZW1zIEluYy4KLTAwMDY0MiAgICAgKGJhc2UgMTYpCQlHZW5ldGVsIFN5c3RlbXMgSW5jLgotCQkJCU1vY2t3b28gQi9ELCA5MTIgV2FscHlvdW5nLURvbmcKLQkJCQlTZW8tR3UgVGFlam9uLAotCQkJCTMwMi04NTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtNDMgICAoaGV4KQkJU09OTyBDb21wdXRlciBDby4sIEx0ZC4KLTAwMDY0MyAgICAgKGJhc2UgMTYpCQlTT05PIENvbXB1dGVyIENvLiwgTHRkLgotCQkJCTFGLiwgTm8uIDgsIEFsbGV5IDM1LCBMYW5lIDkxLAotCQkJCVNlYy4gMSwgTmVpLUh1IFJvYWQsCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTQ0ICAgKGhleCkJCU5laXgsSW5jCi0wMDA2NDQgICAgIChiYXNlIDE2KQkJTmVpeCxJbmMKLQkJCQkzLTUtMy0yNCwgSGlnYXNoaXNhcHBvcm8KLQkJCQlTaGlyb2lzaGkta3UKLQkJCQlTYXBwb3JvIEhva2thaWRvIDAwMy0wMDAzCi0JCQkJSkFQQU4KLQotMDAtMDYtNDUgICAoaGV4KQkJTWVpc2VpIEVsZWN0cmljIENvLiBMdGQuCi0wMDA2NDUgICAgIChiYXNlIDE2KQkJTWVpc2VpIEVsZWN0cmljIENvLiBMdGQuCi0JCQkJMjQ5LTEsIE1vcml5YS1rb3UsIE1vcml5YQotCQkJCUtpdGFzb3VtYS1HdW4sIEliYXJha2kKLQkJCQkzMDItMDE5MgotCQkJCUpBUEFOCi0KLTAwLTA2LTQ2ICAgKGhleCkJCVNoZW5aaGVuIFh1bkJhbyBOZXR3b3JrIFRlY2hub2xvZ3kgQ28gTHRkCi0wMDA2NDYgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gWHVuQmFvIE5ldHdvcmsgVGVjaG5vbG9neSBDbyBMdGQKLQkJCQlGMywgUjItQSBCdWlsZGluZywgU291dGggRGlzdHJpY3QKLQkJCQlvZiBIaWdoLVRlY2ggSW5kdXN0cmlhbCBQYXJrLAotCQkJCVNoZW4gWmhlbiAgCi0JCQkJQ0hJTkEKLQotMDAtMDYtNDcgICAoaGV4KQkJRXRyYWxpIFMuQS4KLTAwMDY0NyAgICAgKGJhc2UgMTYpCQlFdHJhbGkgUy5BLgotCQkJCTIyMSwgUnVlIExhIEZvbnRhaW5lCi0JCQkJOTQxMzIgRm9udGVuYXkgU291cyBCb2lzIENlZGV4Ci0JCQkJRlJBTkNFCi0KLTAwLTA2LTQ4ICAgKGhleCkJCVNlZWRzd2FyZSwgSW5jLgotMDAwNjQ4ICAgICAoYmFzZSAxNikJCVNlZWRzd2FyZSwgSW5jLgotCQkJCSAzLTctMTYgVGVjaG5vc3RhZ2UsCi0JCQkJSXp1bWksIE9zYWthIDU5NC0xMTQ0Ci0JCQkJSkFQQU4KLQotMDAtMDYtNDkgICAoaGV4KQkJM00gRGV1dHNjaGxhbmQgR21iSAotMDAwNjQ5ICAgICAoYmFzZSAxNikJCTNNIERldXRzY2hsYW5kIEdtYkgKLQkJCQlDYXJsLVNjaHVyei1TdHIuIDEKLQkJCQlOZXVzcyAgRC00MTQ1MwotCQkJCUdFUk1BTlkKLQotMDAtMDYtNEEgICAoaGV4KQkJSG9uZXl3ZWxsIENvLiwgTHRkLiAoS09SRUEpCi0wMDA2NEEgICAgIChiYXNlIDE2KQkJSG9uZXl3ZWxsIENvLiwgTHRkLiAoS09SRUEpCi0JCQkJNTYsIENoYWFtLWRvbmcsIENob25hbi1jaXR5Ci0JCQkJQ2hvb25nY2hlb25nbmFtLWRvLCAzMzAtMjAwLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi00QiAgIChoZXgpCQlBbGV4b24gQ28uLCBMdGQuCi0wMDA2NEIgICAgIChiYXNlIDE2KQkJQWxleG9uIENvLiwgTHRkLgotCQkJCTMtMjA3LTEgVGVyYW1vdG8sCi0JCQkJSXRhbWksIEh5b2dvIDY2NC0wMDI2Ci0JCQkJSkFQQU4KLQotMDAtMDYtNEMgICAoaGV4KQkJSW52aWN0YSBOZXR3b3JrcywgSW5jLgotMDAwNjRDICAgICAoYmFzZSAxNikJCUludmljdGEgTmV0d29ya3MsIEluYy4KLQkJCQkxMzg3MyBQYXJrIENlbnRlciBSb2FkCi0JCQkJU3VpdGUgNDAwCi0JCQkJSGVybmRvbiBWQSAyMDE3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNEQgICAoaGV4KQkJU2VuY29yZQotMDAwNjREICAgICAoYmFzZSAxNikJCVNlbmNvcmUKLQkJCQkzMjAwIFNlbmNvcmUgRHIuCi0JCQkJU2lvdXggRmFsbHMgU0QgNTcxMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTRFICAgKGhleCkJCUJyb2FkIE5ldCBUZWNobm9sb2d5IEluYy4KLTAwMDY0RSAgICAgKGJhc2UgMTYpCQlCcm9hZCBOZXQgVGVjaG5vbG9neSBJbmMuCi0JCQkJNUYsIE5vLjU4LCBMYW5lIDE4OCwgUnVpIEt1YW5nIFJvYWQKLQkJCQlOZWlodSBEaXN0cmljdCwgVGFpcGVpIDExNCwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTRGICAgKGhleCkJCVBSTy1ORVRTIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMDY0RiAgICAgKGJhc2UgMTYpCQlQUk8tTkVUUyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJUGFvLUNodW5nIFJvYWQsCi0JCQkJTm8uIDkyLCAxMEYtMQotCQkJCUhzaW4gVGllbiBUYWlwZWksIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtNTAgICAoaGV4KQkJVGlidXJvbiBOZXR3b3JrcywgSW5jLgotMDAwNjUwICAgICAoYmFzZSAxNikJCVRpYnVyb24gTmV0d29ya3MsIEluYy4KLQkJCQkyMDAgTWludXRlbWFuIFJkLgotCQkJCVN1aXRlIDJCCi0JCQkJQW5kb3ZlciBNQSAwMTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNTEgICAoaGV4KQkJQXNwZW4gTmV0d29ya3MgSW5jLgotMDAwNjUxICAgICAoYmFzZSAxNikJCUFzcGVuIE5ldHdvcmtzIEluYy4KLQkJCQkzNzc3IFN0ZXZlbnMgQ3JlZWsgQmx2ZAotCQkJCVN1aXRlIDMzMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA2NTIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNTMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNjUzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTU0ICAgKGhleCkJCVdpbnByZXNhIEJ1aWxkaW5nIEF1dG9tYXRpb24gVGVjaG5vbG9naWVzIEdtYkgKLTAwMDY1NCAgICAgKGJhc2UgMTYpCQlXaW5wcmVzYSBCdWlsZGluZyBBdXRvbWF0aW9uIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJVml2ZW5vdGdhc3NlIDUzLzIKLQkJCQlBLTExMjAgVmllbm5hCi0JCQkJQVVTVFJJQQotCi0wMC0wNi01NSAgIChoZXgpCQlZaXBlZSwgSW5jLgotMDAwNjU1ICAgICAoYmFzZSAxNikJCVlpcGVlLCBJbmMuCi0JCQkJNTU1IEludGVybmF0aW9uYWwgRHJpdmUKLQkJCQlTdWl0ZSA4MDAKLQkJCQlXaWxsaWFtc3ZpbGxlIE5ZIDE0MjIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01NiAgIChoZXgpCQlUYWN0ZWwgQUIKLTAwMDY1NiAgICAgKGJhc2UgMTYpCQlUYWN0ZWwgQUIKLQkJCQlOb3JyYSBWYWxsZ2F0YW4gNjQKLQkJCQlTRS0yMTEgMjIgTWFsbW8KLQkJCQlTV0VERU4KLQotMDAtMDYtNTcgICAoaGV4KQkJTWFya2V0IENlbnRyYWwsIEluYy4KLTAwMDY1NyAgICAgKGJhc2UgMTYpCQlNYXJrZXQgQ2VudHJhbCwgSW5jLgotCQkJCTUwMCBCdXNpbmVzcyBDZW50ZXIgRHJpdmUKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjA1LTEzMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTU4ICAgKGhleCkJCUhlbG11dCBGaXNjaGVyIEdtYkggSW5zdGl0dXQgZnVyIEVsZWt0cm9uaWsgdW5kIE1lc3N0ZWNobmlrCi0wMDA2NTggICAgIChiYXNlIDE2KQkJSGVsbXV0IEZpc2NoZXIgR21iSCBJbnN0aXR1dCBmdXIgRWxla3Ryb25payB1bmQgTWVzc3RlY2huaWsKLQkJCQlJbmR1c3RyaWFCZTIxCi0JCQkJNzEwNjkgU2luZGVmaW5nZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTU5ICAgKGhleCkJCUVBTCAoQXBlbGRvb3JuKSBCLlYuCi0wMDA2NTkgICAgIChiYXNlIDE2KQkJRUFMIChBcGVsZG9vcm4pIEIuVi4KLQkJCQlNb2xlbm1ha2Vyc2hvZWsgMTQKLQkJCQlKSyBBcGVsZG9vcm4gIDczMjgKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wNi01QSAgIChoZXgpCQlTdHJpeCBTeXN0ZW1zCi0wMDA2NUEgICAgIChiYXNlIDE2KQkJU3RyaXggU3lzdGVtcwotCQkJCTMxMCBOLiBXZXN0bGFrZSBCbHZkLgotCQkJCVN1aXRlIDE1MAotCQkJCVdlc3RsYWtlIFZpbGxhZ2UgQ0EgOTEzNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTVCICAgKGhleCkJCURlbGwgQ29tcHV0ZXIgQ29ycC4KLTAwMDY1QiAgICAgKGJhc2UgMTYpCQlEZWxsIENvbXB1dGVyIENvcnAuCi0JCQkJT25lIERlbGwgV2F5Ci0JCQkJUm91bmQgUm9jayBUWCA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNUMgICAoaGV4KQkJTWFsYWNoaXRlIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNjVDICAgICAoYmFzZSAxNikJCU1hbGFjaGl0ZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxOTUgTmV3IEhhbXBzaGlyZSBBdmVudWUKLQkJCQlTdWl0ZSAxNTAKLQkJCQlQb3J0c21vdXRoIE5IIDAzODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01RCAgIChoZXgpCQlIZWlkZWxiZXJnIFdlYiBTeXN0ZW1zCi0wMDA2NUQgICAgIChiYXNlIDE2KQkJSGVpZGVsYmVyZyBXZWIgU3lzdGVtcwotCQkJCTEyMSBUZWNobm9sb2d5IERyLgotCQkJCUR1cmhhbSBOSCAwMzgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNUUgICAoaGV4KQkJUGhvdHVyaXMsIEluYy4KLTAwMDY1RSAgICAgKGJhc2UgMTYpCQlQaG90dXJpcywgSW5jLgotCQkJCTIwIENvcnBvcmF0ZSBQbGFjZSBTb3V0aAotCQkJCVBpc2NhdGF3YXkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTVGICAgKGhleCkJCUVDSSBUZWxlY29tIC0gTkdUUyBMdGQuCi0wMDA2NUYgICAgIChiYXNlIDE2KQkJRUNJIFRlbGVjb20gLSBOR1RTIEx0ZC4KLQkJCQkzMCBIYXNpdmltIFN0LgotCQkJCVBldGFoLVRpa3ZhIDQ5MTMwCi0JCQkJSVNSQUVMCi0KLTAwLTA2LTYwICAgKGhleCkJCU5BREVYIENvLiwgTHRkLgotMDAwNjYwICAgICAoYmFzZSAxNikJCU5BREVYIENvLiwgTHRkLgotCQkJCTEgT21peWFtYWUsIFRva3VzaGlnZSwKLQkJCQlOaXNoaWhhcnUtY3lvLCBOaXNoaWthc3VnYWktZ3VuLAotCQkJCUFpY2hpICA0ODEtMDAzOAotCQkJCUpBUEFOCi0KLTAwLTA2LTYxICAgKGhleCkJCU5JQSBIb21lIFRlY2hub2xvZ2llcyBDb3JwLgotMDAwNjYxICAgICAoYmFzZSAxNikJCU5JQSBIb21lIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCUlubm92YXRpb24gSW5jdWJhdG9yLCBOVEhVLAotCQkJCTEwMSwgU2VjLiAyLCBLdWFuZyBGdSBSb2FkLAotCQkJCUhzaW5jaHUgMzAwMTMsIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtNjIgICAoaGV4KQkJTUJNIFRlY2hub2xvZ3kgTHRkLgotMDAwNjYyICAgICAoYmFzZSAxNikJCU1CTSBUZWNobm9sb2d5IEx0ZC4KLQkJCQlWaWN0b3JpYSBSZC4KLQkJCQlQb3J0c2xhZGUsIEJyaWdodG9uIFN1c3NleCBCTjRsIDFZSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA2LTYzICAgKGhleCkJCUh1bWFuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA2NjMgICAgIChiYXNlIDE2KQkJSHVtYW4gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzcmQgRmwsIEh5dW5nb2sgQmxkZy4sCi0JCQkJODM2LTI1LCBZdWtzYW0tRG9uZywKLQkJCQlLYW5nbmFtLWt1IFNlb3VsIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi02NCAgIChoZXgpCQlGb3N0ZXggQ29ycG9yYXRpb24KLTAwMDY2NCAgICAgKGJhc2UgMTYpCQlGb3N0ZXggQ29ycG9yYXRpb24KLQkJCQkzLTItMzUsIE11c2FzaGlubywgQWtpc2hpbWEsCi0JCQkJVG9reW8gIDE5Ni0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMDYtNjUgICAoaGV4KQkJU3VubnkgR2lrZW4sIEluYy4KLTAwMDY2NSAgICAgKGJhc2UgMTYpCQlTdW5ueSBHaWtlbiwgSW5jLgotCQkJCTMtMS05IE5pc2hpZGFpIEl0YW1pLXNoaQotCQkJCUh5b2dvLXByZWYuICA2NjQtMDg1OAotCQkJCUpBUEFOCi0KLTAwLTA2LTY2ICAgKGhleCkJCVJvdmluZyBOZXR3b3JrcwotMDAwNjY2ICAgICAoYmFzZSAxNikJCVJvdmluZyBOZXR3b3JrcwotCQkJCTgwOSBVbml2ZXJzaXR5IEF2ZW51ZQotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNjcgICAoaGV4KQkJVHJpcHAgTGl0ZQotMDAwNjY3ICAgICAoYmFzZSAxNikJCVRyaXBwIExpdGUKLQkJCQkxMTExIFcuIDM1dGggU3RyZWV0Ci0JCQkJQ2hpY2FnbyBJTCA2MDYwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNjggICAoaGV4KQkJVmljb24gSW5kdXN0cmllcyBJbmMuCi0wMDA2NjggICAgIChiYXNlIDE2KQkJVmljb24gSW5kdXN0cmllcyBJbmMuCi0JCQkJODkgQXJrYXkgRHJpdmUKLQkJCQlIYXVwcGF1Z2UgTlkgMTE3ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTY5ICAgKGhleCkJCURhdGFzb3VuZCBMYWJvcmF0b3JpZXMgTHRkCi0wMDA2NjkgICAgIChiYXNlIDE2KQkJRGF0YXNvdW5kIExhYm9yYXRvcmllcyBMdGQKLQkJCQk1IEJ1c2luZXNzIFBhcmsgV2VzdCwgQXZlbnVlIE9uZQotCQkJCUxldGNod29ydGgsIEhlcnRzIFNHNiAyNEIKLQkJCQlFTkdMQU5EIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA2LTZBICAgKGhleCkJCUluZmluaUNvbiBTeXN0ZW1zLCBJbmMuCi0wMDA2NkEgICAgIChiYXNlIDE2KQkJSW5maW5pQ29uIFN5c3RlbXMsIEluYy4KLQkJCQk3MDAgQW1lcmljYW4gQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCUtpbmcgb2YgUHJ1c3NpYSBQQSAxOTQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNkIgICAoaGV4KQkJU3lzbWV4IENvcnBvcmF0aW9uCi0wMDA2NkIgICAgIChiYXNlIDE2KQkJU3lzbWV4IENvcnBvcmF0aW9uCi0JCQkJNC00LTQgVGFrYXRzdWthZGFpLAotCQkJCU5pc2hpLWt1LCBLb2JlLUNpdHkKLQkJCQk2NTEtMjI3MQotCQkJCUpBUEFOCi0KLTAwLTA2LTZDICAgKGhleCkJCVJvYmluc29uIENvcnBvcmF0aW9uCi0wMDA2NkMgICAgIChiYXNlIDE2KQkJUm9iaW5zb24gQ29ycG9yYXRpb24KLQkJCQkxMkYsIE5vLiAyNzggSG8gUGluZyBFLiBSZC4sCi0JCQkJU2VjLiAzCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTZEICAgKGhleCkJCUNvbXB1cHJpbnQgUy5QLkEuCi0wMDA2NkQgICAgIChiYXNlIDE2KQkJQ29tcHVwcmludCBTLlAuQS4KLQkJCQlWaWEgTWFydGlyaSBEJ0l0YWxpYSAyNgotCQkJCTEwMDE0IENhbHVzbyAoVHVyaW4pCi0JCQkJSVRBTFkKLQotMDAtMDYtNkUgICAoaGV4KQkJRGVsdGEgRWxlY3Ryb25pY3MsIEluYy4KLTAwMDY2RSAgICAgKGJhc2UgMTYpCQlEZWx0YSBFbGVjdHJvbmljcywgSW5jLgotCQkJCTExRiwgMjY2IFdlbi1Id2EgMm5kIFJvYWQsCi0JCQkJU2VjLiAxLCBMaW5rb3UsIFRhaXBlaSBIc2llbiAyNDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTZGICAgKGhleCkJCUtvcmVhIERhdGEgU3lzdGVtcwotMDAwNjZGICAgICAoYmFzZSAxNikJCUtvcmVhIERhdGEgU3lzdGVtcwotCQkJCTE3MCwgR29uZ2Rhbi1Eb25nLCBHdW1pLVNpCi0JCQkJS3l1bmdidWsgIDczMC0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtNzAgICAoaGV4KQkJVXBwb25ldHRpIE95Ci0wMDA2NzAgICAgIChiYXNlIDE2KQkJVXBwb25ldHRpIE95Ci0JCQkJVHlraXN0b2thdHUgNEQKLQkJCQlGSU4tMjA1MjAgVHVya3UKLQkJCQlGSU5MQU5ECi0KLTAwLTA2LTcxICAgKGhleCkJCVNvZnRpbmcgQUcKLTAwMDY3MSAgICAgKGJhc2UgMTYpCQlTb2Z0aW5nIEFHCi0JCQkJUmljaGFyZC1SZWl0em5lci1BbGxlZSA2Ci0JCQkJODU1NDAgSGFhcgotCQkJCUdFUk1BTlkKLQotMDAtMDYtNzIgICAoaGV4KQkJTmV0ZXp6YQotMDAwNjcyICAgICAoYmFzZSAxNikJCU5ldGV6emEKLQkJCQkxNjcxIFdvcmNlc3RlciBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJRnJhbWluZ2hhbSBNQSAwMTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNzMgICAoaGV4KQkJT3B0ZWxlY29tLW5rZgotMDAwNjczICAgICAoYmFzZSAxNikJCU9wdGVsZWNvbS1ua2YKLQkJCQkxMjkyMCBDbG92ZXJsZWFmIENlbnRlciBEcml2ZQotCQkJCUdlcm1hbnRvd24gTUQgMjA4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTc0ICAgKGhleCkJCVNwZWN0cnVtIENvbnRyb2wsIEluYy4KLTAwMDY3NCAgICAgKGJhc2UgMTYpCQlTcGVjdHJ1bSBDb250cm9sLCBJbmMuCi0JCQkJODA2MSBBdm9uaWEgUm9hZAotCQkJCUZhaXJ2aWV3IFBBIDE2NDE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi03NSAgIChoZXgpCQlCYW5kZXJhY29tLCBJbmMuCi0wMDA2NzUgICAgIChiYXNlIDE2KQkJQmFuZGVyYWNvbSwgSW5jLgotCQkJCTkyMTEgV2F0ZXJmb3JkIENlbnRyZSBCbHZkLgotCQkJCVN1aXRlIDEwMAotCQkJCUF1c3RpbiBUWCA3ODc1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNzYgICAoaGV4KQkJTm92cmEgVGVjaG5vbG9naWVzIEluYy4KLTAwMDY3NiAgICAgKGJhc2UgMTYpCQlOb3ZyYSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTkwMC0zMzAgU3QuIE1hcnkgQXZlbnVlCi0JCQkJV2lubmlwZWcgTWFuaXRvYmEgUjNDIDNaNQotCQkJCUNBTkFEQQotCi0wMC0wNi03NyAgIChoZXgpCQlTSUNLIEFHCi0wMDA2NzcgICAgIChiYXNlIDE2KQkJU0lDSyBBRwotCQkJCUVyd2luLVNpY2sgU3RyLjEKLQkJCQlELTc5MTgzIFdhbGRraXJjaCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTc4ICAgKGhleCkJCU1hcmFudHogQnJhbmQgQ29tcGFueQotMDAwNjc4ICAgICAoYmFzZSAxNikJCU1hcmFudHogQnJhbmQgQ29tcGFueQotCQkJCUQmTSBCdWlsZGluZywgMi0xIE5pc3NoaW4tY2hvCi0JCQkJS2F3YXNha2kta3UKLQkJCQlLYXdhc2FraS1zaGkgS2F3YWdhd2EgMjEwLTg1NjkKLQkJCQlKQVBBTgotCi0wMC0wNi03OSAgIChoZXgpCQlLb25hbWkgQ29ycG9yYXRpb24KLTAwMDY3OSAgICAgKGJhc2UgMTYpCQlLb25hbWkgQ29ycG9yYXRpb24KLQkJCQkxMS0xNC01IEFrYXNha2EsIE1pbmF0by1rdSwKLQkJCQlUb2t5byAxMDctMDA1MgotCQkJCUpBUEFOCi0KLTAwLTA2LTdBICAgKGhleCkJCUpNUCBTeXN0ZW1zCi0wMDA2N0EgICAgIChiYXNlIDE2KQkJSk1QIFN5c3RlbXMKLQkJCQkzcmQgRmwuIFNoaW53aGEgQmxkZy4sCi0JCQkJMTQ1MS0xOSwgU2VvY2hvLWRvbmcsCi0JCQkJU2VvY2hvLWt1IFNlb3VsLCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtN0IgICAoaGV4KQkJVG9wbGluayBDJkMgQ29ycG9yYXRpb24KLTAwMDY3QiAgICAgKGJhc2UgMTYpCQlUb3BsaW5rIEMmQyBDb3Jwb3JhdGlvbgotCQkJCTZGLTE1LCBOby4gMTIsIExhbmUgNjA5LCBTZWMuIDUKLQkJCQlDaHVuZyBIc2luIFJkLiwgU2FuIENodW5nIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gMjQxICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTdDICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMDY3QyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTdEICAgKGhleCkJCVRha2FzYWdvIEx0ZC4KLTAwMDY3RCAgICAgKGJhc2UgMTYpCQlUYWthc2FnbyBMdGQuCi0JCQkJMS0yNC0xNiBNaXpvbm9rdWNoaSBUYWthdHN1LWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EKLQkJCQlKQVBBTgotCi0wMC0wNi03RSAgIChoZXgpCQlXaW5Db20gU3lzdGVtcywgSW5jLgotMDAwNjdFICAgICAoYmFzZSAxNikJCVdpbkNvbSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTA5MDAgV29ybGQgVHJhZGUgQmx2ZC4KLQkJCQlTdWl0ZSAyNTAKLQkJCQlNb3JyaXN2aWxsZSBOQyAyNzU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtN0YgICAoaGV4KQkJRGlnZW8sIEluYy4KLTAwMDY3RiAgICAgKGJhc2UgMTYpCQlEaWdlbywgSW5jLgotCQkJCTg4MTUgMTIybmQgQXZlbnVlIE5FCi0JCQkJS2lya2xhbmQgV0EgOTgwMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTgwICAgKGhleCkJCUNhcmQgQWNjZXNzLCBJbmMuCi0wMDA2ODAgICAgIChiYXNlIDE2KQkJQ2FyZCBBY2Nlc3MsIEluYy4KLQkJCQkxMTc3OCBTLiBFbGVjdGlvbiBSZAotCQkJCVN1aXRlIDI2MAotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDgwNDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi04MSAgIChoZXgpCQlHb2VwZWwgRWxlY3Ryb25pYyBHbWJICi0wMDA2ODEgICAgIChiYXNlIDE2KQkJR29lcGVsIEVsZWN0cm9uaWMgR21iSAotCQkJCUdvZXNjaHdpdHplciBTdHIuIDU4LTYwCi0JCQkJMDc3NDUgSmVuYQotCQkJCUdFUk1BTlkKLQotMDAtMDYtODIgICAoaGV4KQkJQ29udmVkaWEKLTAwMDY4MiAgICAgKGJhc2UgMTYpCQlDb252ZWRpYQotCQkJCTQxOTAgU3RpbGwgQ3JlZWsgRHIuCi0JCQkJVmFuY291dmVyIEIuQy4KLQkJCQlWNUMgNkM2Ci0JCQkJQ0FOQURBCi0KLTAwLTA2LTgzICAgKGhleCkJCUJyYXZhcmEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDY4MyAgICAgKGJhc2UgMTYpCQlCcmF2YXJhIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjY1MCBFYXN0IEJheXNob3JlIFJvYWQKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTg0ICAgKGhleCkJCUJpYWNvcmUgQUIKLTAwMDY4NCAgICAgKGJhc2UgMTYpCQlCaWFjb3JlIEFCCi0JCQkJU29mdHdhcmUsIEVsZWN0cm9uaWNzIGFuZCBPcHRpY3MKLQkJCQlSYXBzZ2F0YW4gNywgNzU0IDUwIFVwcHNhbGEKLQkJCQlTV0VERU4KLQotMDAtMDYtODUgICAoaGV4KQkJTmV0TmVhclUgQ29ycG9yYXRpb24KLTAwMDY4NSAgICAgKGJhc2UgMTYpCQlOZXROZWFyVSBDb3Jwb3JhdGlvbgotCQkJCTI5MDggRmluZmVhdGhlciBSb2FkCi0JCQkJQnJ5YW4gVFggNzc4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTg2ICAgKGhleCkJCVpBUkRDT00gQ28uLCBMdGQuCi0wMDA2ODYgICAgIChiYXNlIDE2KQkJWkFSRENPTSBDby4sIEx0ZC4KLQkJCQk0RiwgMTU0OC0xLCBTZW9jaG8gRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi04NyAgIChoZXgpCQlPbW5pdHJvbiBTeXN0ZW1zIFRlY2hub2xvZ3ksIEluYy4KLTAwMDY4NyAgICAgKGJhc2UgMTYpCQlPbW5pdHJvbiBTeXN0ZW1zIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxNDAgVGVjaG5vbG9neQotCQkJCVN1aXRlIDUwMAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtODggICAoaGV4KQkJVGVsd2F5cyBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotMDAwNjg4ICAgICAoYmFzZSAxNikJCVRlbHdheXMgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQkzRiwgTm8uIDUzLCBMYW5lIDI1OAotCQkJCVp1aS1LdWFuZyBSZC4sIE5laS1IdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi04OSAgIChoZXgpCQl5TGV6IFRlY2hub2xvZ2llcyBQdGUgTHRkCi0wMDA2ODkgICAgIChiYXNlIDE2KQkJeUxleiBUZWNobm9sb2dpZXMgUHRlIEx0ZAotCQkJCU5vLiAxLCBUYW5uZXJ5IFJvYWQsIENlbmNvbiAxLAotCQkJCSMwOS0wMywgMzQ3NzE5Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTA2LThBICAgKGhleCkJCU5ldXJvbk5ldCBDby4gTHRkLiBSJkQgQ2VudGVyCi0wMDA2OEEgICAgIChiYXNlIDE2KQkJTmV1cm9uTmV0IENvLiBMdGQuIFImRCBDZW50ZXIKLQkJCQk3MzUtMzQgRGFzdW5nIEJsZGcuLCBZdWtzYW0tZG9uZywKLQkJCQlLYW5nbmFtLWd1LCBTZW91bAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi04QiAgIChoZXgpCQlBaXJSdW5uZXIgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA2OEIgICAgIChiYXNlIDE2KQkJQWlyUnVubmVyIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTI0MDEgTHVwaW5lIFRyYWlsCi0JCQkJU291dGggTGFrZSBUYWhvZSBDQSA5NjE1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtOEMgICAoaGV4KQkJM0NvbSBDb3Jwb3JhdGlvbgotMDAwNjhDICAgICAoYmFzZSAxNikJCTNDb20gQ29ycG9yYXRpb24KLQkJCQk1NDAwIEJheWZyb250IFBsYXphCi0JCQkJTVM6ICA1MTE2Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LThEICAgKGhleCkJCVNFUEFUT04sIEluYy4KLTAwMDY4RCAgICAgKGJhc2UgMTYpCQlTRVBBVE9OLCBJbmMuCi0JCQkJNDAwIE5pY2tlcnNvbiBSZC4KLQkJCQlNYXJsYm9yb3VnaCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtOEUgICAoaGV4KQkJSElEIENvcnBvcmF0aW9uCi0wMDA2OEUgICAgIChiYXNlIDE2KQkJSElEIENvcnBvcmF0aW9uCi0JCQkJOTI5MiBKZXJvbmltbyBSb2FkCi0JCQkJSXJ2aW5lIENBIDkyNjE4LTE5MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LThGICAgKGhleCkJCVRlbGVtb25pdG9yLCBJbmMuCi0wMDA2OEYgICAgIChiYXNlIDE2KQkJVGVsZW1vbml0b3IsIEluYy4KLQkJCQk5MDU1RiBHdWlsZm9yZCBSb2FkCi0JCQkJQ29sdW1iaWEgTUQgMjEwNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTkwICAgKGhleCkJCUV1cmFjb20gQ29tbXVuaWNhdGlvbiBHbWJICi0wMDA2OTAgICAgIChiYXNlIDE2KQkJRXVyYWNvbSBDb21tdW5pY2F0aW9uIEdtYkgKLQkJCQlGcmFua2xpbnN0ci4gMTQKLQkJCQlELTEwNTg3IEJlcmxpbgotCQkJCUdFUk1BTlkKLQotMDAtMDYtOTEgICAoaGV4KQkJUFQgSW5vdmFjYW8KLTAwMDY5MSAgICAgKGJhc2UgMTYpCQlQVCBJbm92YWNhbwotCQkJCVJ1YSBFbmcuIEpvc2UgRi4gUGludG8gQmFzdG8KLQkJCQkzODEwIEF2ZWlybwotCQkJCVBPUlRVR0FMCi0KLTAwLTA2LTkyICAgKGhleCkJCUludHJ1dmVydCBOZXR3b3JrcywgSW5jLgotMDAwNjkyICAgICAoYmFzZSAxNikJCUludHJ1dmVydCBOZXR3b3JrcywgSW5jLgotCQkJCVN1aXRlIDEwMgotCQkJCTIyOTAgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTkzICAgKGhleCkJCUZsZXh1cyBDb21wdXRlciBUZWNobm9sb2d5LCBJbmMuCi0wMDA2OTMgICAgIChiYXNlIDE2KQkJRmxleHVzIENvbXB1dGVyIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk4Ri0yLCBOby41LCBBbGxleTIyLCBMYW5lIDUxMywKLQkJCQlSdWVpLUd1YW5nIFJkLiwgTmVpLUh1IERpc3QuLAotCQkJCVRhaXBlaSAxMTQgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtOTQgICAoaGV4KQkJTW9iaWxsaWFuIENvcnBvcmF0aW9uCi0wMDA2OTQgICAgIChiYXNlIDE2KQkJTW9iaWxsaWFuIENvcnBvcmF0aW9uCi0JCQkJMTEwMzEgVmlhIEZyb250ZXJhCi0JCQkJU3VpdGUgQwotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtOTUgICAoaGV4KQkJRW5zdXJlIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNjk1ICAgICAoYmFzZSAxNikJCUVuc3VyZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkzNTI2IFdlc3QgTGliZXJ0eQotCQkJCVN1aXRlIDEwMAotCQkJCUFubiBBcmJvciBNSSA0ODEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtOTYgICAoaGV4KQkJQWR2ZW50IE5ldHdvcmtzCi0wMDA2OTYgICAgIChiYXNlIDE2KQkJQWR2ZW50IE5ldHdvcmtzCi0JCQkJOTYwMCBHcmVhdCBIaWxscyBUci4KLQkJCQlTdWl0ZSAzMDBFCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi05NyAgIChoZXgpCQlSICYgRCBDZW50ZXIKLTAwMDY5NyAgICAgKGJhc2UgMTYpCQlSICYgRCBDZW50ZXIKLQkJCQk1RiwgU2V1bmd3b24gQi9ELCA4MTAtOQotCQkJCUJhbmdiYWUtRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi05OCAgIChoZXgpCQllZ25pdGUgU29mdHdhcmUgR21iSAotMDAwNjk4ICAgICAoYmFzZSAxNikJCWVnbml0ZSBTb2Z0d2FyZSBHbWJICi0JCQkJRXJpbnN0ci4gOQotCQkJCUNhc3Ryb3AtUmF1eGVsIEQtNDQ1NzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTk5ICAgKGhleCkJCVZpZGEgRGVzaWduIENvLgotMDAwNjk5ICAgICAoYmFzZSAxNikJCVZpZGEgRGVzaWduIENvLgotCQkJCTEwRiwgTm8uIDI3OCBIbyBQaW5nIEUuIFJkLiwKLQkJCQlTZWMuIDMsIFRhaXBlaQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtOUEgICAoaGV4KQkJZSAmIFRlbAotMDAwNjlBICAgICAoYmFzZSAxNikJCWUgJiBUZWwKLQkJCQkxMDAgU2Vqb25nLW5vIENob25nbm8tZ3UsCi0JCQkJU2VvdWwgMTEwLTc3NywKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtOUIgICAoaGV4KQkJQVZUIEF1ZGlvIFZpZGVvIFRlY2hub2xvZ2llcyBHbWJICi0wMDA2OUIgICAgIChiYXNlIDE2KQkJQVZUIEF1ZGlvIFZpZGVvIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJUmF0aHNiZXJnc3RyYXNzZSAxNwotCQkJCUQtOTA0MTEgTnVlcm5iZXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wNi05QyAgIChoZXgpCQlUcmFuc21vZGUgU3lzdGVtcyBBQgotMDAwNjlDICAgICAoYmFzZSAxNikJCVRyYW5zbW9kZSBTeXN0ZW1zIEFCCi0JCQkJSmFrb2JzZGFsc3ZhZ2VuIDE3Ci0JCQkJSEFHRVJTVEVOIFNFLTEyNiA1MwotCQkJCVNXRURFTgotCi0wMC0wNi05RCAgIChoZXgpCQlQZXRhcmRzIEx0ZAotMDAwNjlEICAgICAoYmFzZSAxNikJCVBldGFyZHMgTHRkCi0JCQkJMzkwIFByaW5jZXN3YXksIFRlYW0gVmFsbGV5Ci0JCQkJR2F0ZXNoZWFkIFR5bmUgYW5kIFdlYXIgTkUxMSBPVFUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNi05RSAgIChoZXgpCQlVTklRQSwgSW5jLgotMDAwNjlFICAgICAoYmFzZSAxNikJCVVOSVFBLCBJbmMuCi0JCQkJNDc3IFZhbGxleSBXYXkKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtOUYgICAoaGV4KQkJS3Vva29hIE5ldHdvcmtzCi0wMDA2OUYgICAgIChiYXNlIDE2KQkJS3Vva29hIE5ldHdvcmtzCi0JCQkJMjkwMSBUYXNtYW4gRHIuCi0JCQkJU3VpdGUgMjAyCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUEwICAgKGhleCkJCU14IEltYWdpbmcKLTAwMDZBMCAgICAgKGJhc2UgMTYpCQlNeCBJbWFnaW5nCi0JCQkJMjM0MSBXLiAyMDV0aCBTdHJlZXQKLQkJCQlTdWl0ZSAxMTAKLQkJCQlUb3JyYW5jZSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQTEgICAoaGV4KQkJQ2Vsc2lhbiBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDZBMSAgICAgKGJhc2UgMTYpCQlDZWxzaWFuIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTMwMDIgRG93IEF2ZS4sIFVuaXQgMTM4Ci0JCQkJVHVzdGluIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1BMiAgIChoZXgpCQlNaWNyb3R1bmUsIEluYy4KLTAwMDZBMiAgICAgKGJhc2UgMTYpCQlNaWNyb3R1bmUsIEluYy4KLQkJCQk2NDQwIEx1c2sgQmx2ZC4sIFN1aXRlIEQyMDUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUEzICAgKGhleCkJCUJpdHJhbiBDb3Jwb3JhdGlvbgotMDAwNkEzICAgICAoYmFzZSAxNikJCUJpdHJhbiBDb3Jwb3JhdGlvbgotCQkJCTIyMTMgTW9jaGlkYQotCQkJCUd5b3VkYSBTYWl0YW1hCi0JCQkJSkFQQU4KLQotMDAtMDYtQTQgICAoaGV4KQkJSU5OT1dFTEwgQ29ycC4KLTAwMDZBNCAgICAgKGJhc2UgMTYpCQlJTk5PV0VMTCBDb3JwLgotCQkJCSM3MTcgQ2hvbmdHdSBCbHVldmlsbAotCQkJCTExLTEsIFN1bmFlLTEgRG9uZywgQnVuZGFuZy1HdSwgU3VuZ25hbS0KLQkJCQk0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUE1ICAgKGhleCkJCVBJTk9OIENvcnAuCi0wMDA2QTUgICAgIChiYXNlIDE2KQkJUElOT04gQ29ycC4KLQkJCQlESyBHb3RhbmRhIEJsZGcuN0YKLQkJCQk3LTEzLTUgTmlzaGlnb3RhbmRhIFNoaW5hZ2F3YS1rdQotCQkJCVRva3lvICAxNDEtMDAzMQotCQkJCUpBUEFOCi0KLTAwLTA2LUE2ICAgKGhleCkJCUFydGlzdGljIExpY2VuY2UgKFVLKSBMdGQKLTAwMDZBNiAgICAgKGJhc2UgMTYpCQlBcnRpc3RpYyBMaWNlbmNlIChVSykgTHRkCi0JCQkJMjQgRm9yd2FyZCBEcml2ZQotCQkJCUNocmlzdGNodXJjaCBBdmVudWUKLQkJCQlIYXJyb3cgTWlkZGxlc2V4IEhBMyA4TlQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNi1BNyAgIChoZXgpCQlQcmltYXJpb24KLTAwMDZBNyAgICAgKGJhc2UgMTYpCQlQcmltYXJpb24KLQkJCQkzNDUwIFRvcnJhbmNlIEJsdmQuCi0JCQkJVG9ycmFuY2UgQ0EgOTA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUE4ICAgKGhleCkJCUtDIFRlY2hub2xvZ3ksIEluYy4KLTAwMDZBOCAgICAgKGJhc2UgMTYpCQlLQyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTkwMCBNY0NhcnRoeSBCbHZkLgotCQkJCVN1aXRlIDMwMAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1BOSAgIChoZXgpCQlVbml2ZXJzYWwgSW5zdHJ1bWVudHMgQ29ycC4KLTAwMDZBOSAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgSW5zdHJ1bWVudHMgQ29ycC4KLQkJCQlQTyBCb3ggODI1Ci0JCQkJQmluZ2hhbXRvbiBOWSAxMzkwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQUEgICAoaGV4KQkJVlQgTWlsdG9wZQotMDAwNkFBICAgICAoYmFzZSAxNikJCVZUIE1pbHRvcGUKLQkJCQk0OTAwIFBlYXJsIEVhc3QgQ2lyY2xlCi0JCQkJU3VpdGUgMTA2Ci0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQUIgICAoaGV4KQkJVy1MaW5rIFN5c3RlbXMsIEluYy4KLTAwMDZBQiAgICAgKGJhc2UgMTYpCQlXLUxpbmsgU3lzdGVtcywgSW5jLgotCQkJCU5vLiAyMCwgUGFyayBBdmUuIElJLAotCQkJCVNjaWVuY2UgQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtQUMgICAoaGV4KQkJSW50ZXJzb2Z0IENvLgotMDAwNkFDICAgICAoYmFzZSAxNikJCUludGVyc29mdCBDby4KLQkJCQkjMTgwMyBzdW4ta3lvdW5nIE9mZmljZXRlbAotCQkJCTEwNi00IEJ1bnppLCBHdXJvNURvbmcsIEd1cm8gR3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUFEICAgKGhleCkJCUtCIEVsZWN0cm9uaWNzIEx0ZC4KLTAwMDZBRCAgICAgKGJhc2UgMTYpCQlLQiBFbGVjdHJvbmljcyBMdGQuCi0JCQkJMTUwIEJsdWV3YXRlciBSZC4KLQkJCQlCZWRmb3JkLCBOb3ZhIFNjb3RpYQotCQkJCUI0QiAxRzkKLQkJCQlDQU5BREEKLQotMDAtMDYtQUUgICAoaGV4KQkJSGltYWNoYWwgRnV0dXJpc3RpYyBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMDZBRSAgICAgKGJhc2UgMTYpCQlIaW1hY2hhbCBGdXR1cmlzdGljIENvbW11bmljYXRpb25zIEx0ZAotCQkJCTgsIENvbW1lcmNpYWwgQ29tcGxleAotCQkJCU1hc2ppZCBNb3RoLCBHcmVhdGVyIEthaWxhc2ggSUkKLQkJCQlOZXcgRGVobGkgIDExMDA0OAotCQkJCUlORElBCi0KLTAwLTA2LUFGICAgKGhleCkJCVhhbHRlZCBOZXR3b3JrcwotMDAwNkFGICAgICAoYmFzZSAxNikJCVhhbHRlZCBOZXR3b3JrcwotCQkJCTI5MDEgRGFsbGFzIFBhcmt3YXkKLQkJCQlTdWl0ZSAyMDAKLQkJCQlQbGFubyBUWCA3NTA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQjAgICAoaGV4KQkJQ29tdGVjaCBFRiBEYXRhIENvcnAuCi0wMDA2QjAgICAgIChiYXNlIDE2KQkJQ29tdGVjaCBFRiBEYXRhIENvcnAuCi0JCQkJMjExNCBXLiA3dGggU3QuCi0JCQkJVGVtcGUgQVogODUyODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUIxICAgKGhleCkJCVNvbmljd2FsbAotMDAwNkIxICAgICAoYmFzZSAxNikJCVNvbmljd2FsbAotCQkJCTExNjAgQm9yZGVhdXggRHIuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1CMiAgIChoZXgpCQlMaW54dGVrIENvLgotMDAwNkIyICAgICAoYmFzZSAxNikJCUxpbnh0ZWsgQ28uCi0JCQkJMkYgS3VtLWEgQi9EIDMxLTMgS2FyYWstZG9uZywKLQkJCQlTb25ncGEta3UsIFNlb3VsLAotCQkJCTEzOC0xNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtQjMgICAoaGV4KQkJRGlhZ3JhcGggQ29ycG9yYXRpb24KLTAwMDZCMyAgICAgKGJhc2UgMTYpCQlEaWFncmFwaCBDb3Jwb3JhdGlvbgotCQkJCTM0MDEgUmlkZXIgVHJhaWwgU291dGgKLQkJCQlFYXJ0aCBDaXR5IE1PIDYzMDQ1LTExMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUI0ICAgKGhleCkJCVZvcm5lIEluZHVzdHJpZXMsIEluYy4KLTAwMDZCNCAgICAgKGJhc2UgMTYpCQlWb3JuZSBJbmR1c3RyaWVzLCBJbmMuCi0JCQkJMTQ0NSBJbmR1c3RyaWFsIERyLgotCQkJCUl0YXNjYSBJTCA2MDE0My0xODQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1CNSAgIChoZXgpCQlMdW1pbmVudCwgSW5jLgotMDAwNkI1ICAgICAoYmFzZSAxNikJCUx1bWluZW50LCBJbmMuCi0JCQkJMjA1NTAgTm9yZGhvZmYgU3QuCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQjYgICAoaGV4KQkJTmlyLU9yIElzcmFlbCBMdGQuCi0wMDA2QjYgICAgIChiYXNlIDE2KQkJTmlyLU9yIElzcmFlbCBMdGQuCi0JCQkJMTEgQW1hbCBTdC4KLQkJCQlSb3NoIEhhJ2F5aW4gNDgwOTIKLQkJCQlJU1JBRUwKLQotMDAtMDYtQjcgICAoaGV4KQkJVEVMRU0gR21iSAotMDAwNkI3ICAgICAoYmFzZSAxNikJCVRFTEVNIEdtYkgKLQkJCQlMaXNlLU1laXRuZXItQWxsZWUgMzEKLQkJCQlEIDQ0ODAxCi0JCQkJR0VSTUFOWQotCi0wMC0wNi1COCAgIChoZXgpCQlCYW5kc3BlZWQgUHR5IEx0ZAotMDAwNkI4ICAgICAoYmFzZSAxNikJCUJhbmRzcGVlZCBQdHkgTHRkCi0JCQkJTGV2ZWwgOSwgNTAwMCBDb2xsaW5zIFN0cmVldAotCQkJCU1lbGJvdXJuZSBWaWMgMzAwMAotCQkJCUFVU1RSQUxJQQotCi0wMC0wNi1COSAgIChoZXgpCQlBNVRFSyBDb3JwLgotMDAwNkI5ICAgICAoYmFzZSAxNikJCUE1VEVLIENvcnAuCi0JCQkJMTIzMyBBbGRlcndvb2QgQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQkEgICAoaGV4KQkJV2VzdHdhdmUgQ29tbXVuaWNhdGlvbnMKLTAwMDZCQSAgICAgKGJhc2UgMTYpCQlXZXN0d2F2ZSBDb21tdW5pY2F0aW9ucwotCQkJCTQ2MyBBdmlhdGlvbiBCbHZkLgotCQkJCVNhbnRhIFJvc2EgQ0EgOTU0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUJCICAgKGhleCkJCUFUSSBUZWNobm9sb2dpZXMgSW5jLgotMDAwNkJCICAgICAoYmFzZSAxNikJCUFUSSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTc1IFRpdmVydG9uIENvdXJ0Ci0JCQkJVW5pb252aWxsZSwgT04gTDNSIDk1MwotCQkJCUNBTkFEQQotCi0wMC0wNi1CQyAgIChoZXgpCQlNYWNyb2xpbmssIEluYy4KLTAwMDZCQyAgICAgKGJhc2UgMTYpCQlNYWNyb2xpbmssIEluYy4KLQkJCQkxNTAwIE4gS2VsbG9nZyBEci4KLQkJCQlBbmFoZWltIENBIDkyODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1CRCAgIChoZXgpCQlCTlRFQ0hOT0xPR1kgQ28uLCBMdGQuCi0wMDA2QkQgICAgIChiYXNlIDE2KQkJQk5URUNITk9MT0dZIENvLiwgTHRkLgotCQkJCTYwMiBZb3VuZ3NoaW4gQmxkZy4gMjM4LTgKLQkJCQlQb2ktRG9uZyBLYW5nbmFtLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1CRSAgIChoZXgpCQlCYXVtZXIgT3B0cm9uaWMgR21iSAotMDAwNkJFICAgICAoYmFzZSAxNikJCUJhdW1lciBPcHRyb25pYyBHbWJICi0JCQkJQmFkc3RyYXNzZSAzMAotCQkJCUQtMDE0NTQgUmFkZWJlcmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LUJGICAgKGhleCkJCUFjY2VsbGEgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAwNkJGICAgICAoYmFzZSAxNikJCUFjY2VsbGEgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCVJtIDUxMiBOby4gNjgwIEd1aSBQaW5nIFJkLgotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi0wMC0wNi1DMCAgIChoZXgpCQlVbml0ZWQgSW50ZXJuZXR3b3JrcywgSW5jLgotMDAwNkMwICAgICAoYmFzZSAxNikJCVVuaXRlZCBJbnRlcm5ldHdvcmtzLCBJbmMuCi0JCQkJNTA3MiBOb3J0aCAzMDAgV2VzdCwgU3VpdGUgMk4KLQkJCQlQcm92byBVVCA4NDYwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQzEgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAwNkMxICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQzIgICAoaGV4KQkJU21hcnRtYXRpYyBDb3Jwb3JhdGlvbgotMDAwNkMyICAgICAoYmFzZSAxNikJCVNtYXJ0bWF0aWMgQ29ycG9yYXRpb24KLQkJCQk2NDAwIENvbmdyZXNzIEF2ZS4sIFN1aXRlIDEzMDAKLQkJCQlCb2NhIFJhdG9uIEZMIDMzNDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1DMyAgIChoZXgpCQlTY2hpbmRsZXIgRWxldmF0b3IgTHRkLgotMDAwNkMzICAgICAoYmFzZSAxNikJCVNjaGluZGxlciBFbGV2YXRvciBMdGQuCi0JCQkJRGVwdC4gUiZELUNPCi0JCQkJVmlhIGRlbGxhIFBhY2UgMjIKLQkJCQlMb2Nhcm5vIENILTY2MDAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wNi1DNCAgIChoZXgpCQlQaW9saW5rIEluYy4KLTAwMDZDNCAgICAgKGJhc2UgMTYpCQlQaW9saW5rIEluYy4KLQkJCQlJVCBDYXN0bGUgMS00MDEsIDU1MC0xIEdhc2FuLWRvbmcsCi0JCQkJMTY1Ni0yIFNlb2Noby1HdSwgU2VvdWwKLQkJCQlTZW91bCBHZXVtY2hvbi1HdSAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUM1ICAgKGhleCkJCUlOTk9WSSBUZWNobm9sb2dpZXMgTGltaXRlZAotMDAwNkM1ICAgICAoYmFzZSAxNikJCUlOTk9WSSBUZWNobm9sb2dpZXMgTGltaXRlZAotCQkJCTMxc3QgRmxvb3IsIENoaW5hIE9ubGluZSBDZW50cmUKLQkJCQkzMzMgTG9ja2hhcnQgUm9hZAotCQkJCVdhbmNoYWkgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA2LUM2ICAgKGhleCkJCWxlc3N3aXJlIEFHCi0wMDA2QzYgICAgIChiYXNlIDE2KQkJbGVzc3dpcmUgQUcKLQkJCQlJbSBUZWNobm9sb2dpZXBhcmsgMjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LUM3ICAgKGhleCkJCVJGTkVUIFRlY2hub2xvZ2llcyBQdGUgTHRkIChTKQotMDAwNkM3ICAgICAoYmFzZSAxNikJCVJGTkVUIFRlY2hub2xvZ2llcyBQdGUgTHRkIChTKQotCQkJCVVuaXQgMjMzIElubm92YXRpb24gQ2VudHJlIEJsayAyCi0JCQkJMTggTmFueWFuZyBEcml2ZQotCQkJCTYzNzcyMgotCQkJCVNJTkdBUE9SRQotCi0wMC0wNi1DOCAgIChoZXgpCQlTdW1pdG9tbyBNZXRhbCBNaWNybyBEZXZpY2VzLCBJbmMuCi0wMDA2QzggICAgIChiYXNlIDE2KQkJU3VtaXRvbW8gTWV0YWwgTWljcm8gRGV2aWNlcywgSW5jLgotCQkJCTEsIEhpZ2FzaGltdWtvamltYSBIaWdhc2hpbm8tY2hvCi0JCQkJQW1hZ2FzYWtpLCBIeW9nbywgNjYwLTg2NjAKLQkJCQlKQVBBTgotCi0wMC0wNi1DOSAgIChoZXgpCQlUZWNobmljYWwgTWFya2V0aW5nIFJlc2VhcmNoLCBJbmMuCi0wMDA2QzkgICAgIChiYXNlIDE2KQkJVGVjaG5pY2FsIE1hcmtldGluZyBSZXNlYXJjaCwgSW5jLgotCQkJCVNoaW4gTmlob24gR2lqdXRzdSBCbGRnLgotCQkJCTEtMS0zMiwgU2hpYmFkYWltb24sIE1pbmF0by1rdQotCQkJCVRva3lvIDEwNS0wMDEyICAxMDUtMDAxMgotCQkJCUpBUEFOCi0KLTAwLTA2LUNBICAgKGhleCkJCUFtZXJpY2FuIENvbXB1dGVyICYgRGlnaXRhbCBDb21wb25lbnRzLCBJbmMuIChBQ0RDKQotMDAwNkNBICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIENvbXB1dGVyICYgRGlnaXRhbCBDb21wb25lbnRzLCBJbmMuIChBQ0RDKQotCQkJCTQ0MCBDbG92ZXJsZWFmIERyaXZlCi0JCQkJQmFsZHdpbiBQYXJrIENBIDkxNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1DQiAgIChoZXgpCQlKb3Ryb24gRWxlY3Ryb25pY3MgQS9TCi0wMDA2Q0IgICAgIChiYXNlIDE2KQkJSm90cm9uIEVsZWN0cm9uaWNzIEEvUwotCQkJCVBvYiA1NAotCQkJCU4zMjgwIFRqb2RhbHluZwotCQkJCU5PUldBWQotCi0wMC0wNi1DQyAgIChoZXgpCQlKTUkgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA2Q0MgICAgIChiYXNlIDE2KQkJSk1JIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCU5hbnlhbmcgQi9EIDNGLCAyNS00Ci0JCQkJWW9ubXVuLWRvbmcsIFlvbmdzYW4tZ3UKLQkJCQlTZW91bCAgMTQwLTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1DRCAgIChoZXgpCQlMZWFmIEltYWdpbmcgTHRkLgotMDAwNkNEICAgICAoYmFzZSAxNikJCUxlYWYgSW1hZ2luZyBMdGQuCi0JCQkJN3RoIEhhdG51ZmEgc3QKLQkJCQlQZXRhY2gtVGlrdmEgIDQ5MDAyCi0JCQkJSVNSQUVMCi0KLTAwLTA2LUNFICAgKGhleCkJCURBVEVOTwotMDAwNkNFICAgICAoYmFzZSAxNikJCURBVEVOTwotCQkJCVJ1ZSBBbWlyYWwgQmVyZW5nZXIKLQkJCQlaYWMgRXMgUGFzc2FudHMgSUkgQlAgOTAxNDUsIDM1ODAxIERpbmFyCi0JCQkJRlJBTkNFCi0KLTAwLTA2LUNGICAgKGhleCkJCVRoYWxlcyBBdmlvbmljcyBJbi1GbGlnaHQgU3lzdGVtcywgTExDCi0wMDA2Q0YgICAgIChiYXNlIDE2KQkJVGhhbGVzIEF2aW9uaWNzIEluLUZsaWdodCBTeXN0ZW1zLCBMTEMKLQkJCQkxNzQ4MSBSZWQgSGlsbCBBdmVudWUKLQkJCQlJcnZpbmUgQ0EgOTI2MTQtNTYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRDAgICAoaGV4KQkJRWxnYXIgRWxlY3Ryb25pY3MgQ29ycC4KLTAwMDZEMCAgICAgKGJhc2UgMTYpCQlFbGdhciBFbGVjdHJvbmljcyBDb3JwLgotCQkJCTkyNTAgQnJvd24gRGVlciBSZC4KLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUQxICAgKGhleCkJCVRhaG9lIE5ldHdvcmtzLCBJbmMuCi0wMDA2RDEgICAgIChiYXNlIDE2KQkJVGFob2UgTmV0d29ya3MsIEluYy4KLQkJCQkzMDUyIE9yY2hhcmQgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRDIgICAoaGV4KQkJVHVuZHJhIFNlbWljb25kdWN0b3IgQ29ycC4KLTAwMDZEMiAgICAgKGJhc2UgMTYpCQlUdW5kcmEgU2VtaWNvbmR1Y3RvciBDb3JwLgotCQkJCTYwMyBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhLCBPbnQuCi0JCQkJSzJLLTJNNQotCQkJCUNBTkFEQQotCi0wMC0wNi1EMyAgIChoZXgpCQlBbHBoYSBUZWxlY29tLCBJbmMuIFUuUy5BLgotMDAwNkQzICAgICAoYmFzZSAxNikJCUFscGhhIFRlbGVjb20sIEluYy4gVS5TLkEuCi0JCQkJMTM5NCBCb3JyZWdvciBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1ENCAgIChoZXgpCQlJbnRlcmFjdGl2ZSBPYmplY3RzLCBJbmMuCi0wMDA2RDQgICAgIChiYXNlIDE2KQkJSW50ZXJhY3RpdmUgT2JqZWN0cywgSW5jLgotCQkJCTEyNjAwIFNFIDM4dGggU3QuCi0JCQkJU3VpdGUgMTUwCi0JCQkJQmVsbGV2dWUgV0EgOTgwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUQ1ICAgKGhleCkJCURpYW1vbmQgU3lzdGVtcyBDb3JwLgotMDAwNkQ1ICAgICAoYmFzZSAxNikJCURpYW1vbmQgU3lzdGVtcyBDb3JwLgotCQkJCTg0MzAtRCBDZW50cmFsIEF2ZS4KLQkJCQlOZXdhcmsgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUQ2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDZENiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1ENyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA2RDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRDggICAoaGV4KQkJTWFwbGUgT3B0aWNhbCBTeXN0ZW1zCi0wMDA2RDggICAgIChiYXNlIDE2KQkJTWFwbGUgT3B0aWNhbCBTeXN0ZW1zCi0JCQkJMzIwMCBOb3J0aCBGaXJzdCBTdC4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRDkgICAoaGV4KQkJSVBNLU5ldCBTLnAuQS4KLTAwMDZEOSAgICAgKGJhc2UgMTYpCQlJUE0tTmV0IFMucC5BLgotCQkJCVZpYSBSZW1vIERlIEZlbwotCQkJCTgwMDIyIEFyemFubyAoTmFwbGVzKQotCQkJCUlUQUxZCi0KLTAwLTA2LURBICAgKGhleCkJCUlUUkFOIENvbW11bmljYXRpb25zIEx0ZC4KLTAwMDZEQSAgICAgKGJhc2UgMTYpCQlJVFJBTiBDb21tdW5pY2F0aW9ucyBMdGQuCi0JCQkJMSBBenJpZWxpIENlbnRlciwKLQkJCQlUaGUgcm91bmQgYnVpbGRpbmcKLQkJCQlUZWwgQXZpdiA2NzAyMSAgIDY3MDIxCi0JCQkJSVNSQUVMCi0KLTAwLTA2LURCICAgKGhleCkJCUlDSElQUyBDby4sIEx0ZC4KLTAwMDZEQiAgICAgKGJhc2UgMTYpCQlJQ0hJUFMgQ28uLCBMdGQuCi0JCQkJM0YsIFNhbWplb24gQmxkZy4sIDIzNi0zCi0JCQkJTm9uaHl1bi1Eb25nLCBLYW5nbmFtLWt1Ci0JCQkJU2VvdWwtQ2l0eSAgMTM1LTAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LURDICAgKGhleCkJCVN5YWJhcyBUZWNobm9sb2d5IChBbXF1ZXN0KQotMDAwNkRDICAgICAoYmFzZSAxNikJCVN5YWJhcyBUZWNobm9sb2d5IChBbXF1ZXN0KQotCQkJCTQ3MjcgUGFzZW8gUGFkcmUgUGFya3dheQotCQkJCUZyZW1vbnQgQ0EgOTQ1NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUREICAgKGhleCkJCUFUICYgVCBMYWJvcmF0b3JpZXMgLSBDYW1icmlkZ2UgTHRkCi0wMDA2REQgICAgIChiYXNlIDE2KQkJQVQgJiBUIExhYm9yYXRvcmllcyAtIENhbWJyaWRnZSBMdGQKLQkJCQkyNGEgVHJ1bXBpbmd0b24gU3RyZWV0Ci0JCQkJQ2FtYnJpZGdlLCBDQjIgMVFBCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNi1ERSAgIChoZXgpCQlGbGFzaCBUZWNobm9sb2d5Ci0wMDA2REUgICAgIChiYXNlIDE2KQkJRmxhc2ggVGVjaG5vbG9neQotCQkJCVAuTy4gQm94IDY4MTUwOQotCQkJCUZyYW5rbGluIFROIDM3MDY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1ERiAgIChoZXgpCQlBSURPTklDIENvcnBvcmF0aW9uCi0wMDA2REYgICAgIChiYXNlIDE2KQkJQUlET05JQyBDb3Jwb3JhdGlvbgotCQkJCTItNy0xMCBPdHN1a2EsIEJ1bmt5by1rdSwKLQkJCQlUb2t5bywgMTEyLTAwMTIKLQkJCQlKQVBBTgotCi0wMC0wNi1FMCAgIChoZXgpCQlNQVQgQ28uLCBMdGQuCi0wMDA2RTAgICAgIChiYXNlIDE2KQkJTUFUIENvLiwgTHRkLgotCQkJCTg2NC0zIEt3YW55YW5nLWRvbmcKLQkJCQlEb25nYW4tZ3UsIEFueWFuZy1zaQotCQkJCUt5dW5nZ2ktZG8gIDQzMS0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtRTEgICAoaGV4KQkJVGVjaG5vIFRyYWRlIHMuYQotMDAwNkUxICAgICAoYmFzZSAxNikJCVRlY2hubyBUcmFkZSBzLmEKLQkJCQk3MzJhIENoYXVzc2VlIGRlIEJydXhlbGxlcwotCQkJCUItMTQxMCBXYXRlcmxvbwotCQkJCUJFTEdJVU0KLQotMDAtMDYtRTIgICAoaGV4KQkJQ2VlbWF4IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA2RTIgICAgIChiYXNlIDE2KQkJQ2VlbWF4IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNWYtNywgNzM2LCBDaHVuZyBDaGVuZyBSZC4sCi0JCQkJQ2h1bmcgSG8gVGFpcGVpIEhzaWVuLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtRTMgICAoaGV4KQkJUXVhbnRpdGF0aXZlIEltYWdpbmcgQ29ycG9yYXRpb24KLTAwMDZFMyAgICAgKGJhc2UgMTYpCQlRdWFudGl0YXRpdmUgSW1hZ2luZyBDb3Jwb3JhdGlvbgotCQkJCTgwODEgTG91Z2hlZWQgSGlnaHdheQotCQkJCUJ1cm5hYnksIEJDCi0JCQkJQ0FOQURBCi0KLTAwLTA2LUU0ICAgKGhleCkJCUNpdGVsIFRlY2hub2xvZ2llcyBMdGQuCi0wMDA2RTQgICAgIChiYXNlIDE2KQkJQ2l0ZWwgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQlXaGVhdGNyb2Z0IEJ1c2luZXNzIFBhcmsKLQkJCQlMYW5kbWVyZSBMYW5lLCBFZHdhbHRvbgotCQkJCU5vdHRpZ2hhbSAgTkcxMiA0REcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNi1FNSAgIChoZXgpCQlGdWppYW4gTmV3bGFuZCBDb21wdXRlciBMdGQuIENvLgotMDAwNkU1ICAgICAoYmFzZSAxNikJCUZ1amlhbiBOZXdsYW5kIENvbXB1dGVyIEx0ZC4gQ28uCi0JCQkJMTQxRiBTdW5zaGluZSBIb2xpZGF5IEhvdGVsCi0JCQkJTm8uIDI2IEdhbyBRaWFvIFJkLiwgV3VZaSBTcXVhcmUKLQkJCQlGdXpob3UgRnVqaWFuICAzNTAwMDUKLQkJCQlDSElOQQotCi0wMC0wNi1FNiAgIChoZXgpCQlEb25nWWFuZyBUZWxlY29tIENvLiwgTHRkLgotMDAwNkU2ICAgICAoYmFzZSAxNikJCURvbmdZYW5nIFRlbGVjb20gQ28uLCBMdGQuCi0JCQkJNjQyLTcgRGV1bmcgQ2hvbi1Eb25nLCBLYW5nU2VvLUd1Ci0JCQkJU2VvdWwgMTU3LTg0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1FNyAgIChoZXgpCQlCaXQgQmxpdHogQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwNkU3ICAgICAoYmFzZSAxNikJCUJpdCBCbGl0eiBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJODMwIEhpbGx2aWV3IEN0LiwgIzI5MAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1FOCAgIChoZXgpCQlPcHRpY2FsIE5ldHdvcmsgVGVzdGluZywgSW5jLgotMDAwNkU4ICAgICAoYmFzZSAxNikJCU9wdGljYWwgTmV0d29yayBUZXN0aW5nLCBJbmMuCi0JCQkJNTUgTWVyY2hhbnQgU3QuCi0JCQkJMjh0aCBGbG9vcgotCQkJCUhvbm9sdWx1IEhJIDk2ODEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1FOSAgIChoZXgpCQlJbnRpbWUgQ29ycC4KLTAwMDZFOSAgICAgKGJhc2UgMTYpCQlJbnRpbWUgQ29ycC4KLQkJCQkzMjQtNCwgWWFuZ2phZS1kb25nLCAyRgotCQkJCVNlb2Noby1rdSwgU2VvdWwsIDEzNy0xMzAsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUVBICAgKGhleCkJCUVMWkVUODAgTWlrcm9jb21wdXRlciBHbWJIJkNvLiBLRwotMDAwNkVBICAgICAoYmFzZSAxNikJCUVMWkVUODAgTWlrcm9jb21wdXRlciBHbWJIJkNvLiBLRwotCQkJCVRoZWF0ZXJwbGF0eiA5Ci0JCQkJRC01MjA2MiBBYWNoZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LUVCICAgKGhleCkJCUdsb2JhbCBEYXRhCi0wMDA2RUIgICAgIChiYXNlIDE2KQkJR2xvYmFsIERhdGEKLQkJCQkyMjUwIE9iaXNwbyBBdmUgIzEwNQotCQkJCVNpZ25hbCBIaWxsIENBIDkwODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1FQyAgIChoZXgpCQlIYXJyaXMgQ29ycG9yYXRpb24KLTAwMDZFQyAgICAgKGJhc2UgMTYpCQlIYXJyaXMgQ29ycG9yYXRpb24KLQkJCQkxMDI1IFdlc3QgTkFTQSBCbHZkCi0JCQkJTVMgRC0yMUIKLQkJCQlNZWxib3VybmUgRkwgMzI5MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUVEICAgKGhleCkJCUluYXJhIE5ldHdvcmtzCi0wMDA2RUQgICAgIChiYXNlIDE2KQkJSW5hcmEgTmV0d29ya3MKLQkJCQkzMDMxIFRpc2NoIFdheSwKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW4gSm9zZSBDQSA5NTEyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRUUgICAoaGV4KQkJU2hlbnlhbmcgTmV1LWVyYSBJbmZvcm1hdGlvbiAmIFRlY2hub2xvZ3kgU3RvY2sgQ28uLCBMdGQKLTAwMDZFRSAgICAgKGJhc2UgMTYpCQlTaGVueWFuZyBOZXUtZXJhIEluZm9ybWF0aW9uICYgVGVjaG5vbG9neSBTdG9jayBDby4sIEx0ZAotCQkJCTgvRiwgdGhlIDIxc3QgQ2VudHVyeSBCdWlsZGluZywKLQkJCQlOby4gMSBTaGlqaSBSb2FkLCBIdW5uYW4gSW5kdXN0cmlhbCBEaXN0Ci0JCQkJRHZscG1udCBab25lIFNoZW55YW5nLCAKLQkJCQlDSElOQQotCi0wMC0wNi1FRiAgIChoZXgpCQlNYXh4YW4gU3lzdGVtcywgSW5jLgotMDAwNkVGICAgICAoYmFzZSAxNikJCU1heHhhbiBTeXN0ZW1zLCBJbmMuCi0JCQkJMTA3IEJvbmF2ZW50dXJhIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUYwICAgKGhleCkJCURpZ2VvLCBJbmMuCi0wMDA2RjAgICAgIChiYXNlIDE2KQkJRGlnZW8sIEluYy4KLQkJCQk4ODE1IDEyMm5kIEF2ZS4sIE5FCi0JCQkJS2lya2xhbmQgV0EgOTgwMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUYxICAgKGhleCkJCU9wdGlsbGlvbgotMDAwNkYxICAgICAoYmFzZSAxNikJCU9wdGlsbGlvbgotCQkJCUtyb25ib3Jnc2dyLjkKLQkJCQlTRS0xNjQ4NyBLaXN0YQotCQkJCVNXRURFTgotCi0wMC0wNi1GMiAgIChoZXgpCQlQbGF0eXMgQ29tbXVuaWNhdGlvbnMKLTAwMDZGMiAgICAgKGJhc2UgMTYpCQlQbGF0eXMgQ29tbXVuaWNhdGlvbnMKLQkJCQkzMTUwQSBDb3JvbmFkbyBEci4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRjMgICAoaGV4KQkJQWNjZUxpZ2h0IE5ldHdvcmtzCi0wMDA2RjMgICAgIChiYXNlIDE2KQkJQWNjZUxpZ2h0IE5ldHdvcmtzCi0JCQkJNzAgQWJlbGUgUm9hZCwgQnVpbGRpbmcgMTIwMAotCQkJCVBpdHRzYnVyZ2ggUEEgMTUwMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUY0ICAgKGhleCkJCVByaW1lIEVsZWN0cm9uaWNzICYgU2F0ZWxsaXRpY3MgSW5jLgotMDAwNkY0ICAgICAoYmFzZSAxNikJCVByaW1lIEVsZWN0cm9uaWNzICYgU2F0ZWxsaXRpY3MgSW5jLgotCQkJCTY5LCBUdW5nLVl1YW4gUmQuLAotCQkJCUNodW5nLUxpIENpdHksIFRhb3l1YW4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LUY1ICAgKGhleCkJCUFMUFMgQ28sLiBMdGQuCi0wMDA2RjUgICAgIChiYXNlIDE2KQkJQUxQUyBDbywuIEx0ZC4KLQkJCQk2LTMtMzYgRnVydWthd2FuYWthemF0bywKLQkJCQlPc2FraSBNaXlhZ2ktcHJlZiA5ODktNjE4MQotCQkJCUpBUEFOCi0KLTAwLTA2LUY2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDZGNiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUY3ICAgKGhleCkJCUFMUFMgRWxlY3RyaWMgQ28sLiBMdGQuCi0wMDA2RjcgICAgIChiYXNlIDE2KQkJQUxQUyBFbGVjdHJpYyBDbywuIEx0ZC4KLQkJCQk2LTMtMzYgRnVydWthd2FuYWthemF0bywKLQkJCQlPc2FraSBNaXlhZ2ktcHJlZiA5ODktNjE4MQotCQkJCUpBUEFOCi0KLTAwLTA2LUY4ICAgKGhleCkJCUNQVSBUZWNobm9sb2d5LCBJbmMuCi0wMDA2RjggICAgIChiYXNlIDE2KQkJQ1BVIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk1NzMxIFcuIExhcyBQb3NpdGFzIEJsdmQuCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRjkgICAoaGV4KQkJTWl0c3VpIFpvc2VuIFN5c3RlbXMgUmVzZWFyY2ggSW5jLgotMDAwNkY5ICAgICAoYmFzZSAxNikJCU1pdHN1aSBab3NlbiBTeXN0ZW1zIFJlc2VhcmNoIEluYy4KLQkJCQkxMS0xLCBVbm8gMS1jaG9tZQotCQkJCVRhbWFuby1zaGksIE9rYXlhbWEKLQkJCQk3MDYtMDAxMQotCQkJCUpBUEFOCi0KLTAwLTA2LUZBICAgKGhleCkJCUlQIFNRVUFSRSBDbywgTHRkLgotMDAwNkZBICAgICAoYmFzZSAxNikJCUlQIFNRVUFSRSBDbywgTHRkLgotCQkJCTEtOS0xMSwgSGFrYXRhZWtpaGlnYXNoaSwKLQkJCQlIYWthdGEta3UsIEZ1a3Vva2Etc2hpLAotCQkJCUZ1a3Vva2EgIDgxMi0wMDEzCi0JCQkJSkFQQU4KLQotMDAtMDYtRkIgICAoaGV4KQkJSGl0YWNoaSBQcmludGluZyBTb2x1dGlvbnMsIEx0ZC4KLTAwMDZGQiAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIFByaW50aW5nIFNvbHV0aW9ucywgTHRkLgotCQkJCTEwNjAsIFRha2VkYSBIaXRhY2hpbmFrYS1DaXR5Ci0JCQkJSWJhcmFraS1QcmVmLgotCQkJCTMxMi04NTAyCi0JCQkJSkFQQU4KLQotMDAtMDYtRkMgICAoaGV4KQkJRm5ldCBDby4sIEx0ZC4KLTAwMDZGQyAgICAgKGJhc2UgMTYpCQlGbmV0IENvLiwgTHRkLgotCQkJCUtGU0IgQmxkZy4gMTB0aCBGLiAxNi0yCi0JCQkJWW9pZG8tRG9uZywgWW91bmdkZXVuZ3BvLWt1LAotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtRkQgICAoaGV4KQkJQ29tamV0IEluZm9ybWF0aW9uIFN5c3RlbXMgQ29ycC4KLTAwMDZGRCAgICAgKGJhc2UgMTYpCQlDb21qZXQgSW5mb3JtYXRpb24gU3lzdGVtcyBDb3JwLgotCQkJCTdGbC4sIE5vLiAxMDMsIEZlbiBMaWFvIFN0cmVldAotCQkJCU5laS1IdSwgVGFpcGVpCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi1GRSAgIChoZXgpCQlBbWJyYWRvLCBJbmMKLTAwMDZGRSAgICAgKGJhc2UgMTYpCQlBbWJyYWRvLCBJbmMKLQkJCQkxMTMwMSBXLiBQcmVzaWRlbnQgR2VvcmdlIEJ1c2ggRnd5LgotCQkJCVN1aXRlMTUwCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRkYgICAoaGV4KQkJU2hlYmEgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDZGRiAgICAgKGJhc2UgMTYpCQlTaGViYSBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTV0aCBGbC4gSHl1bmRhaSBKYWQgQi9ECi0JCQkJNDYwLTEgU2VvbmduYWUtRG9uZywgS2FuZ2RvbmctS3UsCi0JCQkJU2VvdWwgIDEzNC0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMDAgICAoaGV4KQkJWmV0dGFtZWRpYSBLb3JlYQotMDAwNzAwICAgICAoYmFzZSAxNikJCVpldHRhbWVkaWEgS29yZWEKLQkJCQlTdWl0ZSAxMDA4LCBLdW1rYW5nIFZlbnR1cmV0ZWwsIDExMDgKLQkJCQlCaXNhbmRvbmcsIERvbmdhbmd1LCBBbnlhbmdzaQotCQkJCUt5b3VuZ2dpZG8sICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMDEgICAoaGV4KQkJUkFDQUwtREFUQUNPTQotMDAwNzAxICAgICAoYmFzZSAxNikJCVJBQ0FMLURBVEFDT00KLQkJCQlMQU4gSU5URVJORVRXT1JLSU5HIERJVklTSU9OCi0JCQkJMTU1IFNXQU5TT04gUk9BRAotCQkJCUJPWEJPUk9VR0ggTUEgMDE3MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTAyICAgKGhleCkJCVZhcmlhbiBNZWRpY2FsIFN5c3RlbXMKLTAwMDcwMiAgICAgKGJhc2UgMTYpCQlWYXJpYW4gTWVkaWNhbCBTeXN0ZW1zCi0JCQkJMjU5OSBHYXJjaWEgQXZlbnVlCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMDMgICAoaGV4KQkJQ1NFRSBUcmFuc3BvcnQKLTAwMDcwMyAgICAgKGJhc2UgMTYpCQlDU0VFIFRyYW5zcG9ydAotCQkJCTQsIGF2ZW51ZSBkdSBDQU5BREEKLQkJCQlCLlAuIDI0My05MTk0NCBMZXMgVWxpcwotCQkJCUZSQU5DRQotCi0wMC0wNy0wNCAgIChoZXgpCQlBTFBTIEVsZWN0cmljIENvLC4gTHRkLgotMDAwNzA0ICAgICAoYmFzZSAxNikJCUFMUFMgRWxlY3RyaWMgQ28sLiBMdGQuCi0JCQkJNi0zLTM2IEZ1cnVrYXdhbmFrYXphdG8sCi0JCQkJT3Nha2kgTWl5YWdpLXByZWYgOTg5LTYxODEKLQkJCQlKQVBBTgotCi0wMC0wNy0wNSAgIChoZXgpCQlFbmRyZXNzICYgSGF1c2VyIEdtYkggJiBDbwotMDAwNzA1ICAgICAoYmFzZSAxNikJCUVuZHJlc3MgJiBIYXVzZXIgR21iSCAmIENvCi0JCQkJSGF1cHRzdHJhYmUgMSAtIFBvc3RmYWNoIDEyNjEKLQkJCQlELTc5Njg5IE1hdWxiZXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wNy0wNiAgIChoZXgpCQlTYW5yaXR6IENvcnBvcmF0aW9uCi0wMDA3MDYgICAgIChiYXNlIDE2KQkJU2Fucml0eiBDb3Jwb3JhdGlvbgotCQkJCTE5OS0xLCBTaGltb29pYnVrdXJvLAotCQkJCUthd2Fnb2UtY2l0eSwgU2FpdGFtYQotCQkJCTM1MC0wODQ4Ci0JCQkJSkFQQU4KLQotMDAtMDctMDcgICAoaGV4KQkJSW50ZXJhbGlhIEluYy4KLTAwMDcwNyAgICAgKGJhc2UgMTYpCQlJbnRlcmFsaWEgSW5jLgotCQkJCTQxMTAtNzl0aCBTdHJlZXQgTi5XLgotCQkJCUNhbGdhcnksIEFsYmVydGEKLQkJCQlUM0IgNUMyCi0JCQkJQ0FOQURBCi0KLTAwLTA3LTA4ICAgKGhleCkJCUJpdHJhZ2UgSW5jLgotMDAwNzA4ICAgICAoYmFzZSAxNikJCUJpdHJhZ2UgSW5jLgotCQkJCTEwMCBTb3V0aHBhcmsgQmx2ZC4KLQkJCQlTdWl0ZSA0MDAKLQkJCQlTYWludCBBdWd1c3RpbmUgRkwgMzIwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTA5ICAgKGhleCkJCVdlc3RlcnN0cmFuZCBVcmZhYnJpayBBQgotMDAwNzA5ICAgICAoYmFzZSAxNikJCVdlc3RlcnN0cmFuZCBVcmZhYnJpayBBQgotCQkJCUJveCAxMzMKLQkJCQlTRS01NDUgMjMgVG9yZWJvZGEKLQkJCQlTV0VERU4KLQotMDAtMDctMEEgICAoaGV4KQkJVW5pY29tIEF1dG9tYXRpb24gQ28uLCBMdGQuCi0wMDA3MEEgICAgIChiYXNlIDE2KQkJVW5pY29tIEF1dG9tYXRpb24gQ28uLCBMdGQuCi0JCQkJU2lsayBCbGRnIDMtMzEtMTEKLQkJCQlIb25jaG8sIE5ha2Fuby1rdSwKLQkJCQlUb2t5byAgMTY0LTAwMTIKLQkJCQlKQVBBTgotCi0wMC0wNy0wQiAgIChoZXgpCQlOb3ZhYmFzZSBTR1BTLCBTQQotMDAwNzBCICAgICAoYmFzZSAxNikJCU5vdmFiYXNlIFNHUFMsIFNBCi0JCQkJQXYuIEQgSm9hbyBJSSwgTG90ZSAxLjAzLjIuMwotCQkJCVBhcnF1ZSBkYXMgTmFjb2VzCi0JCQkJTGlzYm9hICAxOTk4LTAzMQotCQkJCVBPUlRVR0FMCi0KLTAwLTA3LTBDICAgKGhleCkJCVNWQS1JbnRydXNpb24uY29tIENvLiBMdGQuCi0wMDA3MEMgICAgIChiYXNlIDE2KQkJU1ZBLUludHJ1c2lvbi5jb20gQ28uIEx0ZC4KLQkJCQlUaGUgNHRoIEZsb29yLCBOby4gMjggQnVpbGRpbmcKLQkJCQkxNDAgVGlhbiBMaW4gUm9hZAotCQkJCVNoYW5naGFpICAyMDIzMwotCQkJCUNISU5BCi0KLTAwLTA3LTBEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMgSW5jLgotMDAwNzBEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMgSW5jLgotCQkJCVNKLU0vMQotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMEUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA3MEUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJU0otTS8xCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0wRiAgIChoZXgpCQlGdWphbnQsIEluYy4KLTAwMDcwRiAgICAgKGJhc2UgMTYpCQlGdWphbnQsIEluYy4KLQkJCQk2MzA1IENhcnBpbnRlcmlhIEF2ZW51ZQotCQkJCVN1aXRlIDMwMAotCQkJCUNhcnBpbnRlcmlhIENBIDkzMDEzLTI5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTEwICAgKGhleCkJCUFkYXgsIEluYy4KLTAwMDcxMCAgICAgKGJhc2UgMTYpCQlBZGF4LCBJbmMuCi0JCQkJNjE0IEJhbmNyb2Z0IFdheQotCQkJCUJlcmtlbGV5IENBIDk0NTU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0xMSAgIChoZXgpCQlBY3Rlcm5hCi0wMDA3MTEgICAgIChiYXNlIDE2KQkJQWN0ZXJuYQotCQkJCTY2MjAgTmV0d29yayBXYXkKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyNzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTEyICAgKGhleCkJCUpBTCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5Ci0wMDA3MTIgICAgIChiYXNlIDE2KQkJSkFMIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kKLQkJCQlOZXR3b3JrIFNvbHV0aW9uIERlcC4gSkFMLVRhbWFjaGkgQmxkZy4KLQkJCQkxNS0xLCBTaGlidXJhLCA0LWNob21lLCBNaW5hdG8ta3UsCi0JCQkJVG9reW8gIAotCQkJCUpBUEFOCi0KLTAwLTA3LTEzICAgKGhleCkJCUlQIE9uZSwgSW5jLgotMDAwNzEzICAgICAoYmFzZSAxNikJCUlQIE9uZSwgSW5jLgotCQkJCVNhbW1pIEJsZGcuLCAxMDA0Ci0JCQkJRGFlY2hpLWRvbmcgR2FuZ25hbS1ndSwKLQkJCQlTZW91bCwgIDEzNS0wODMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMTQgICAoaGV4KQkJQnJpZ2h0Y29tCi0wMDA3MTQgICAgIChiYXNlIDE2KQkJQnJpZ2h0Y29tCi0JCQkJNiBIYW5lY2hvc2hldCBTdC4sCi0JCQkJVGVsIEF2aXYgNjk3MTAKLQkJCQlJU1JBRUwKLQotMDAtMDctMTUgICAoaGV4KQkJR2VuZXJhbCBSZXNlYXJjaCBvZiBFbGVjdHJvbmljcywgSW5jLgotMDAwNzE1ICAgICAoYmFzZSAxNikJCUdlbmVyYWwgUmVzZWFyY2ggb2YgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkzLTEyLTE3LCBNaXRhLCBNaW5hdG8ta3UKLQkJCQlUb2t5byAgMTA4LTAwNzMKLQkJCQlKQVBBTgotCi0wMC0wNy0xNiAgIChoZXgpCQlKICYgUyBNYXJpbmUgTHRkLgotMDAwNzE2ICAgICAoYmFzZSAxNikJCUogJiBTIE1hcmluZSBMdGQuCi0JCQkJUG90dGluZ3RvbiBCdXNpbmVzcyBQYXJrCi0JCQkJQmFybnN0YXBsZQotCQkJCURldm9uICBFWDMxIDFMWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA3LTE3ICAgKGhleCkJCVdpZWxhbmQgRWxlY3RyaWMgR21iSAotMDAwNzE3ICAgICAoYmFzZSAxNikJCVdpZWxhbmQgRWxlY3RyaWMgR21iSAotCQkJCUJyZW5uZXJzdHIuIDEwLTE0Ci0JCQkJRC05NjA1MiBCYW1iZXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wNy0xOCAgIChoZXgpCQlpQ2FuVGVrIENvLiwgTHRkLgotMDAwNzE4ICAgICAoYmFzZSAxNikJCWlDYW5UZWsgQ28uLCBMdGQuCi0JCQkJMm5kIEZsLiBESyBQbGF6YSBJSSwgMzc2LTUsCi0JCQkJS2V1bWdvay1kb25nLCBCdW1kYWcta3UsCi0JCQkJU3VuZ21hbi1zaSwgS3lvbmdnaS1kbyAgNDYzLTgwNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0xOSAgIChoZXgpCQlNb2JpaXMgQ28uLCBMdGQuCi0wMDA3MTkgICAgIChiYXNlIDE2KQkJTW9iaWlzIENvLiwgTHRkLgotCQkJCTI3Ny0xLCBTaGluaHdhIEJsZGcuIDRGCi0JCQkJWWFuZ2phZS1kb25nLCBTZW9jaG8tZ3UsCi0JCQkJU2VvdWwsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMUEgICAoaGV4KQkJRmluZWRpZ2l0YWwgSW5jLgotMDAwNzFBICAgICAoYmFzZSAxNikJCUZpbmVkaWdpdGFsIEluYy4KLQkJCQk0dGggRmwuIEJvbWkgQmxkZy4sIDY2MSBEZXVuZ2Nob24gMyBEb25nCi0JCQkJS2FuZ3NlbyBrdSwKLQkJCQlTZW91bCAgMTU3LTAzMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0xQiAgIChoZXgpCQlDRFYgQW1lcmljYXMgTHRkCi0wMDA3MUIgICAgIChiYXNlIDE2KQkJQ0RWIEFtZXJpY2FzIEx0ZAotCQkJCTE2NDUtQSBBdXRvcm91dGUgTGF2YWwgV2VzdAotCQkJCUxhdmFsIFF1ZWJlYyBIN0wgM1czCi0JCQkJQ0FOQURBCi0KLTAwLTA3LTFDICAgKGhleCkJCUFUJlQgRml4ZWQgV2lyZWxlc3MgU2VydmljZXMKLTAwMDcxQyAgICAgKGJhc2UgMTYpCQlBVCZUIEZpeGVkIFdpcmVsZXNzIFNlcnZpY2VzCi0JCQkJUC5PLiBCb3ggOTA3NTkKLQkJCQlSZWRtb25kIFdBIDk4MDczLTk3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTFEICAgKGhleCkJCVNhdGVsc2EgU2lzdGVtYXMgWSBBcGxpY2FjaW9uZXMgRGUgVGVsZWNvbXVuaWNhY2lvbmVzLCBTLkEuCi0wMDA3MUQgICAgIChiYXNlIDE2KQkJU2F0ZWxzYSBTaXN0ZW1hcyBZIEFwbGljYWNpb25lcyBEZSBUZWxlY29tdW5pY2FjaW9uZXMsIFMuQS4KLQkJCQljLywgQWxlamFuZHJvIE1vcmFuLCA1NgotCQkJCTI4MDI1LU1hZHJpZAotCQkJCVNQQUlOCi0KLTAwLTA3LTFFICAgKGhleCkJCVRyaS1NIEVuZ2luZWVyaW5nIC8gTnVwYWsgRGV2LiBDb3JwLgotMDAwNzFFICAgICAoYmFzZSAxNikJCVRyaS1NIEVuZ2luZWVyaW5nIC8gTnVwYWsgRGV2LiBDb3JwLgotCQkJCTYtMTMwMSBLZXRjaCBDb3VydAotCQkJCUNvcXVpdGNhdXQgQkMKLQkJCQlWM0sgNlg3Ci0JCQkJQ0FOQURBCi0KLTAwLTA3LTFGICAgKGhleCkJCUV1cm9wZWFuIFN5c3RlbXMgSW50ZWdyYXRpb24KLTAwMDcxRiAgICAgKGJhc2UgMTYpCQlFdXJvcGVhbiBTeXN0ZW1zIEludGVncmF0aW9uCi0JCQkJNDU1IFByb21lbmFkZSBEZXMgQW5nbGFzCi0JCQkJRi0wNjIwMCBOaWNlCi0JCQkJRlJBTkNFCi0KLTAwLTA3LTIwICAgKGhleCkJCVRydXR6c2NobGVyIEdtYkggJiBDby4gS0cKLTAwMDcyMCAgICAgKGJhc2UgMTYpCQlUcnV0enNjaGxlciBHbWJIICYgQ28uIEtHCi0JCQkJRHV2ZW5zdHIuIDgyLTkyCi0JCQkJNDExOTkgTW9uY2hlbmdsYWRiYWNoCi0JCQkJR0VSTUFOWQotCi0wMC0wNy0yMSAgIChoZXgpCQlGb3JtYWMgRWxla3Ryb25payBHbWJICi0wMDA3MjEgICAgIChiYXNlIDE2KQkJRm9ybWFjIEVsZWt0cm9uaWsgR21iSAotCQkJCURvZnN0ci4gMzMKLQkJCQkxNTgyNyBCbGFua2VudGVsZGUKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTIyICAgKGhleCkJCVRoZSBOaWVsc2VuIENvbXBhbnkKLTAwMDcyMiAgICAgKGJhc2UgMTYpCQlUaGUgTmllbHNlbiBDb21wYW55Ci0JCQkJNTAxIEJyb29rZXIgQ3JlZWsgQmx2ZC4KLQkJCQlPbGRzbWFyIEZMIDM0Njc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0yMyAgIChoZXgpCQlFTENPTiBTeXN0ZW10ZWNobmlrIEdtYkgKLTAwMDcyMyAgICAgKGJhc2UgMTYpCQlFTENPTiBTeXN0ZW10ZWNobmlrIEdtYkgKLQkJCQlPYmVyZSBIYXVwdHN0cmFzc2UgMTAKLQkJCQlELTA5MjMyIEhhcnRtYW5uc2RvcmYKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTI0ICAgKGhleCkJCVRlbGVtYXggQ28uLCBMdGQuCi0wMDA3MjQgICAgIChiYXNlIDE2KQkJVGVsZW1heCBDby4sIEx0ZC4KLQkJCQk2dGggRmwuIFN1bmd3b28gQi9ELCAxMDk5LTEKLQkJCQlTYW5ib24tRG9uZywgS3VucG8tc2hpCi0JCQkJS3l1bmdraS1EbywgIDQzNS0wNDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMjUgICAoaGV4KQkJQmVtYXRlY2ggSW50ZXJuYXRpb25hbCBDb3JwLgotMDAwNzI1ICAgICAoYmFzZSAxNikJCUJlbWF0ZWNoIEludGVybmF0aW9uYWwgQ29ycC4KLQkJCQk1ODk1IFNoaWxvaCBSb2FkCi0JCQkJU3VpdGUgMTExCi0JCQkJQWxwaGFyZXR0YSBHQSAzMDAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMjYgICAoaGV4KQkJU2hlbnpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMDcyNiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBHb25namluIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCUEyMTEtQTIxMyAmIEIyMDEtQjIxMCwgMkYsIEJhaXlpbmcgQnVpbGRpbmcsIDEwMTkjLCBOYW5oYWkgUkQsIFNoZWtvdSBQYXJ0eSwgTmFuc2hhbiBEaXN0cmljdCwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA2NwotCQkJCUNISU5BCi0KLTAwLTA3LTI3ICAgKGhleCkJCVppIENvcnBvcmF0aW9uIChISykgTHRkLgotMDAwNzI3ICAgICAoYmFzZSAxNikJCVppIENvcnBvcmF0aW9uIChISykgTHRkLgotCQkJCTMwL0YsIENoaW5hIFJlc291cmNlcyBCdWlsZGluZwotCQkJCTI2IEhhcmJvdXIgUm9hZCwgV2FpY2hhaSwKLQkJCQlIT05HIEtPTkcKLQotMDAtMDctMjggICAoaGV4KQkJTmVvIFRlbGVjb20KLTAwMDcyOCAgICAgKGJhc2UgMTYpCQlOZW8gVGVsZWNvbQotCQkJCUVhc3QgQnVpbGRpbmcgOUYsIDFUCi0JCQkJVmVudHVyZSBUb3dlciwgNzggR2FyYWctZG9uZwotCQkJCVNvbmdwYS1ndSwgU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0yOSAgIChoZXgpCQlLaXN0bGVyIEluc3RydW1lbnRlIEFHCi0wMDA3MjkgICAgIChiYXNlIDE2KQkJS2lzdGxlciBJbnN0cnVtZW50ZSBBRwotCQkJCUV1bGFjaHN0cmFzc2UgMjIKLQkJCQlDSC04NDA4IFdpbnRlcnRodXIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wNy0yQSAgIChoZXgpCQlJbm5vdmFuY2UgTmV0d29ya3MKLTAwMDcyQSAgICAgKGJhc2UgMTYpCQlJbm5vdmFuY2UgTmV0d29ya3MKLQkJCQkxOSBGYWlybW9udCBBdmVudWUKLQkJCQlPdHRhd2EsIE9udGFyaW8gSzFZIDFYNAotCQkJCUNBTkFEQQotCi0wMC0wNy0yQiAgIChoZXgpCQlKdW5nIE15dW5nIFRlbGVjb20gQ28uLCBMdGQuCi0wMDA3MkIgICAgIChiYXNlIDE2KQkJSnVuZyBNeXVuZyBUZWxlY29tIENvLiwgTHRkLgotCQkJCTVGbCBTaWxsYSBUZWNobm92aWwuLCAzOS0zIERhbmctRG9uZwotCQkJCUtvb25wby1zaGksIEt5dW5nIEtpLURvCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTJDICAgKGhleCkJCUZhYnJpY29tCi0wMDA3MkMgICAgIChiYXNlIDE2KQkJRmFicmljb20KLQkJCQlSdWUgR2F0dGkgRGUgR2Ftb25kIDI1NAotCQkJCTExOTAgQnJ1eGVsbGVzCi0JCQkJQkVMR0lVTQotCi0wMC0wNy0yRCAgIChoZXgpCQlDTlN5c3RlbXMKLTAwMDcyRCAgICAgKGJhc2UgMTYpCQlDTlN5c3RlbXMKLQkJCQlCYXVta2lyY2hlcnN0cmFzc2UgMQotCQkJCUEtODAyMCBHcmF6Ci0JCQkJQVVTVFJJQQotCi0wMC0wNy0yRSAgIChoZXgpCQlOb3J0aCBOb2RlIEFCCi0wMDA3MkUgICAgIChiYXNlIDE2KQkJTm9ydGggTm9kZSBBQgotCQkJCVNrZXBwc2xvcm9uIDQyCi0JCQkJMTEzMCBTdG9ja2hvbG0KLQkJCQlTV0VERU4KLQotMDAtMDctMkYgICAoaGV4KQkJSW50cmFuc2EsIEluYy4KLTAwMDcyRiAgICAgKGJhc2UgMTYpCQlJbnRyYW5zYSwgSW5jLgotCQkJCTI2NzAgWmFua2VyCi0JCQkJU3VpdGUgMjAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTMwICAgKGhleCkJCUh1dGNoaXNvbiBPUFRFTCBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA3MzAgICAgIChiYXNlIDE2KQkJSHV0Y2hpc29uIE9QVEVMIFRlbGVjb20gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMjggWGlud2FpIFN0cmVldAotCQkJCUJlaWppbmcgIAotCQkJCUNISU5BCi0KLTAwLTA3LTMxICAgKGhleCkJCU9waGlyLVNwaXJpY29uIEluYwotMDAwNzMxICAgICAoYmFzZSAxNikJCU9waGlyLVNwaXJpY29uIEluYwotCQkJCTYwIFcgMTAwMCBOCi0JCQkJTG9nYW4gVVQgODQzMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTMyICAgKGhleCkJCUFBRU9OIFRlY2hub2xvZ3kgSW5jLgotMDAwNzMyICAgICAoYmFzZSAxNikJCUFBRU9OIFRlY2hub2xvZ3kgSW5jLgotCQkJCTVGLCAjMTM1LCBMYW5lIDIzNSwgUGFvIENoaWFvIFJvYWQKLQkJCQlIc2luLVRpZW4gQ2l0eQotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNy0zMyAgIChoZXgpCQlEQU5DT05UUk9MIEVuZ2luZWVyaW5nCi0wMDA3MzMgICAgIChiYXNlIDE2KQkJREFOQ09OVFJPTCBFbmdpbmVlcmluZwotCQkJCUl0YWxpZW5zdmVqIDEtNQotCQkJCURLLTg0NTAgSGFtbWVsCi0JCQkJREVOTUFSSwotCi0wMC0wNy0zNCAgIChoZXgpCQlPTlN0b3IsIEluYy4KLTAwMDczNCAgICAgKGJhc2UgMTYpCQlPTlN0b3IsIEluYy4KLQkJCQkxMzAtQiBLbm93bGVzIERyaXZlCi0JCQkJTG9zIEdhdG9zIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0zNSAgIChoZXgpCQlGbGFyaW9uIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNzM1ICAgICAoYmFzZSAxNikJCUZsYXJpb24gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTM1IFJvdXRlIDIwMi8yMDYgU291dGgKLQkJCQlCZWRtaW5zdGVyIE5KIDA3OTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0zNiAgIChoZXgpCQlEYXRhIFZpZGVvIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMDczNiAgICAgKGJhc2UgMTYpCQlEYXRhIFZpZGVvIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQk3RiwgTm8uIDM1MiwgU2VjLiAyCi0JCQkJQ2h1bmctU2hhbiBSZC4sIENodW5nLUhvIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDctMzcgICAoaGV4KQkJU29yaXlhIENvLiBMdGQuCi0wMDA3MzcgICAgIChiYXNlIDE2KQkJU29yaXlhIENvLiBMdGQuCi0JCQkJMiwgOHRoIEZsb29yIEhhbnNoaW4gQi9PLCAxMzYtMSwKLQkJCQlIYXBvLWRvbmcsIE1hcG8tZ3UsCi0JCQkJU2VvdWwsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMzggICAoaGV4KQkJWW91bmcgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDczOCAgICAgKGJhc2UgMTYpCQlZb3VuZyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUQtNjA0LCBTaWdtYS1JSSBPZmZpY2V0ZWwsCi0JCQkJIzE4LCBHdW1pLWRvbmcsIEJ1bmRnYW5nLWd1LAotCQkJCVN1bmduYW0tc2ksIEt5ZW9uZ2dpLWRvIDc2My03NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMzkgICAoaGV4KQkJU2NvdHR5IEdyb3VwIEF1c3RyaWEgR21iaAotMDAwNzM5ICAgICAoYmFzZSAxNikJCVNjb3R0eSBHcm91cCBBdXN0cmlhIEdtYmgKLQkJCQlUZXNsYXN0cmFzc2UgNAotCQkJCTgwNzQgR3JhbWJhY2ggIDgwNzQKLQkJCQlBVVNUUklBCi0KLTAwLTA3LTNBICAgKGhleCkJCUludmVudGVsIFN5c3RlbWVzCi0wMDA3M0EgICAgIChiYXNlIDE2KQkJSW52ZW50ZWwgU3lzdGVtZXMKLQkJCQkzNSwgcnVlIFRvdW1lZm9ydAotCQkJCTc1MDA1IFBhcmlzCi0JCQkJRlJBTkNFCi0KLTAwLTA3LTNCICAgKGhleCkJCVRlbm92aXMgR21iSCAmIENvIEtHCi0wMDA3M0IgICAgIChiYXNlIDE2KQkJVGVub3ZpcyBHbWJIICYgQ28gS0cKLQkJCQlLbGV5ZXJzdHJhc3NlIDk0Ci0JCQkJNjAzMjYgRnJhbmtmdXJ0Ci0JCQkJR0VSTUFOWQotCi0wMC0wNy0zQyAgIChoZXgpCQlUZWxlY29tIERlc2lnbgotMDAwNzNDICAgICAoYmFzZSAxNikJCVRlbGVjb20gRGVzaWduCi0JCQkJVm9pZSBSb21haW5lLCBab25lIGRlIFJlbW9yYQotCQkJCTMzMTcwIEdyYWRpZ25hbgotCQkJCUZSQU5DRQotCi0wMC0wNy0zRCAgIChoZXgpCQlOYW5qaW5nIFBvc3RlbCBUZWxlY29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDA3M0QgICAgIChiYXNlIDE2KQkJTmFuamluZyBQb3N0ZWwgVGVsZWNvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCU5vLiAxODcsIFNoZW5nWmhvdSBSb2FkLAotCQkJCU5hbmppbmcgQ2l0eSwgSmlhbmdzdQotCQkJCTIxMDAwNAotCQkJCUNISU5BCi0KLTAwLTA3LTNFICAgKGhleCkJCUNoaW5hIEdyZWF0LVdhbGwgQ29tcHV0ZXIgU2hlbnpoZW4gQ28uLCBMdGQuCi0wMDA3M0UgICAgIChiYXNlIDE2KQkJQ2hpbmEgR3JlYXQtV2FsbCBDb21wdXRlciBTaGVuemhlbiBDby4sIEx0ZC4KLQkJCQlSZXNlYXJjaCAmIERldmVsb3BtZW50IENlbnRlciwgS2VmYSBSb2FkCi0JCQkJU2NpZW5jZSBJbmR1c3RyeSBQYXJrLCBOYW5zaGFuIERpc2N0cmljdAotCQkJCVNoZW56aGVuICA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0wNy0zRiAgIChoZXgpCQlXb29qeXVuIFN5c3RlYyBDby4sIEx0ZC4KLTAwMDczRiAgICAgKGJhc2UgMTYpCQlXb29qeXVuIFN5c3RlYyBDby4sIEx0ZC4KLQkJCQk0RiBIYW4gWWFuZyBCL0QsIFlvaWRvLWRvbmcKLQkJCQlZb3VuZyBEZW9uZyBQby1rdQotCQkJCVNlb3VsICAxNTAtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTQwICAgKGhleCkJCUJ1ZmZhbG8sIEluYwotMDAwNzQwICAgICAoYmFzZSAxNikJCUJ1ZmZhbG8sIEluYwotCQkJCU1FTENPIEhJLVRFQ0ggQ0VOVEVSLAotCQkJCTQtMTUgIFNoaWJhdGEsIEhvbmRvcmksIAotCQkJCU1JTkFNSS1LVSwgTkFHT1lBIEFpY2hpIAotCQkJCUpBUEFOCi0KLTAwLTA3LTQxICAgKGhleCkJCVNpZXJyYSBBdXRvbWF0ZWQgU3lzdGVtcwotMDAwNzQxICAgICAoYmFzZSAxNikJCVNpZXJyYSBBdXRvbWF0ZWQgU3lzdGVtcwotCQkJCTI2MjUgTm9ydGggU2FuIEZlcm5hbmRvIEJsdmQuCi0JCQkJQnVyYmFuayBDQSA5MTUwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNDIgICAoaGV4KQkJQ3VycmVudCBUZWNobm9sb2dpZXMsIExMQwotMDAwNzQyICAgICAoYmFzZSAxNikJCUN1cnJlbnQgVGVjaG5vbG9naWVzLCBMTEMKLQkJCQkyMDQyMCBDZW50dXJ5IEJsdmQKLQkJCQlHZXJtYW50b3duIE1EIDIwODc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy00MyAgIChoZXgpCQlDaGVsc2lvIENvbW11bmljYXRpb25zCi0wMDA3NDMgICAgIChiYXNlIDE2KQkJQ2hlbHNpbyBDb21tdW5pY2F0aW9ucwotCQkJCTE3MCBTLiBXaGlzbW9uIFJkLgotCQkJCUJsZGcuIEQsIFN0ZSBBCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MS0xNTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy00NCAgIChoZXgpCQlVbmljbywgSW5jLgotMDAwNzQ0ICAgICAoYmFzZSAxNikJCVVuaWNvLCBJbmMuCi0JCQkJMzcyNSBOaWNob2xzb24gUmQuCi0JCQkJRnJhbmtzdmlsbGUgV0kgNTMxMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTQ1ICAgKGhleCkJCVJhZGxhbiBDb21wdXRlciBDb21tdW5pY2F0aW9ucyBMdGQuCi0wMDA3NDUgICAgIChiYXNlIDE2KQkJUmFkbGFuIENvbXB1dGVyIENvbW11bmljYXRpb25zIEx0ZC4KLQkJCQlBdGlkaW0gVGVjaG5vbG9neSBQYXJrCi0JCQkJQmxkZy4gNAotCQkJCVRlbCBBdml2ICA2MTEzMQotCQkJCUlTUkFFTAotCi0wMC0wNy00NiAgIChoZXgpCQlUVVJDSywgSW5jLgotMDAwNzQ2ICAgICAoYmFzZSAxNikJCVRVUkNLLCBJbmMuCi0JCQkJMzAwMCBDYW1wdXMgRHJpdmUKLQkJCQlQbHltb3V0aCBNTiA1NTQ0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNDcgICAoaGV4KQkJTWVjYWxjCi0wMDA3NDcgICAgIChiYXNlIDE2KQkJTWVjYWxjCi0JCQkJUE8gQm94IDc5NTgKLQkJCQlDZW50dXJpb24gMDA0NgotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0wNy00OCAgIChoZXgpCQlUaGUgSW1hZ2luZyBTb3VyY2UgRXVyb3BlCi0wMDA3NDggICAgIChiYXNlIDE2KQkJVGhlIEltYWdpbmcgU291cmNlIEV1cm9wZQotCQkJCVNvbW1lcnN0cmFzc2UgMzQtMzYKLQkJCQkyODIxNSBCcmVtYW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTQ5ICAgKGhleCkJCUNFTmlYIEluYy4KLTAwMDc0OSAgICAgKGJhc2UgMTYpCQlDRU5pWCBJbmMuCi0JCQkJNTE0MSBDYWxpZm9ybmlhIEF2ZW51ZQotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNEEgICAoaGV4KQkJQ2FybCBWYWxlbnRpbiBHbWJICi0wMDA3NEEgICAgIChiYXNlIDE2KQkJQ2FybCBWYWxlbnRpbiBHbWJICi0JCQkJTmVja2Fyc3RyYWJlIDc4LTgwCi0JCQkJRC03ODA1NiBWUy1TY2h3ZW5uaW5nZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTRCICAgKGhleCkJCURhaWhlbiBDb3Jwb3JhdGlvbgotMDAwNzRCICAgICAoYmFzZSAxNikJCURhaWhlbiBDb3Jwb3JhdGlvbgotCQkJCTItMS0xMSBUYWdhd2EgWW9kb2dhd2Eta3UKLQkJCQlPc2FrYSA1MzItODUxMgotCQkJCUpBUEFOCi0KLTAwLTA3LTRDICAgKGhleCkJCUJlaWNvbSBJbmMuCi0wMDA3NEMgICAgIChiYXNlIDE2KQkJQmVpY29tIEluYy4KLQkJCQkxMTQgS2luZyBTdHJlZXQKLQkJCQlBbGV4YW5kcmlhIFZBIDIyMzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy00RCAgIChoZXgpCQlaZWJyYSBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMDc0RCAgICAgKGJhc2UgMTYpCQlaZWJyYSBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQkzMzMgQ29ycG9yYXRlIFdvb2RzIFBhcmt3YXkKLQkJCQlWZXJub24gSGlsbHMgSUwgNjAwNjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTRFICAgKGhleCkJCU5hdWdodHkgYm95IGNvLiwgTHRkLgotMDAwNzRFICAgICAoYmFzZSAxNikJCU5hdWdodHkgYm95IGNvLiwgTHRkLgotCQkJCVBhcmwgQmxkZy4gNkYsIDMtMTUtNSBTaGlidXlhCi0JCQkJU2hpYnV5YS1rdSwgVG9reW8KLQkJCQkxNTAtMDAwMgotCQkJCUpBUEFOCi0KLTAwLTA3LTRGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDc0RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy01MCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA3NTAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNTEgICAoaGV4KQkJbT91P3QgQUcKLTAwMDc1MSAgICAgKGJhc2UgMTYpCQltP3U/dCBBRwotCQkJCU1lc3NnZXJhdGUgZnVyIE1lZGl6aW4tIHVuZCBVbXdlbHR0ZWNobmlrCi0JCQkJQW0gTWFyaWVuaG9mIDIKLQkJCQlXZWRlbCAgMjI4ODAKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTUyICAgKGhleCkJCVJoeXRobSBXYXRjaCBDby4sIEx0ZC4KLTAwMDc1MiAgICAgKGJhc2UgMTYpCQlSaHl0aG0gV2F0Y2ggQ28uLCBMdGQuCi0JCQkJMzIxIFNoaW5zaHVrdXNoaW5kZW4sIFNob3dhLU1hY2hpLAotCQkJCUtpdGFrYXRzaGlrYS1HdW4sIFNhaXRhbWEKLQkJCQkzNDQtMDE5NgotCQkJCUpBUEFOCi0KLTAwLTA3LTUzICAgKGhleCkJCUJlaWppbmcgUXhjb21tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA3NTMgICAgIChiYXNlIDE2KQkJQmVpamluZyBReGNvbW0gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk0RiBUb3dlciBCLCBUb25nVGFpIEJ1aWxkaW5nIE5vLiAzMywKLQkJCQlGaW5hbmNpYWwgU3RyZWV0LCBYaWNoZW5nIERpc3RyaWN0LAotCQkJCUJlaWppbmcgMTAwMDMyICAKLQkJCQlDSElOQQotCi0wMC0wNy01NCAgIChoZXgpCQlYeXRlcnJhIENvbXB1dGluZywgSW5jLgotMDAwNzU0ICAgICAoYmFzZSAxNikJCVh5dGVycmEgQ29tcHV0aW5nLCBJbmMuCi0JCQkJMTQ1MDUgSGF5ZGVuIFJkLiwKLQkJCQlTdWl0ZSBCMzQwCi0JCQkJU2NvdHRzZGFsZSBBWiA4NTI2MC02OTUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy01NSAgIChoZXgpCQlMYWZvbiBTQQotMDAwNzU1ICAgICAoYmFzZSAxNikJCUxhZm9uIFNBCi0JCQkJNDQgQXZlbnVlIFZpY3RvciBNZXVuaWVyCi0JCQkJIEJhc3NlbnMgIDMzNTMwCi0JCQkJRlJBTkNFCi0KLTAwLTA3LTU2ICAgKGhleCkJCUp1eW91bmcgVGVsZWNvbQotMDAwNzU2ICAgICAoYmFzZSAxNikJCUp1eW91bmcgVGVsZWNvbQotCQkJCSMyMDEsIER1bnNhbiBCdWlsZGluZwotCQkJCTIxOC0xIFdhbHB5ZW5nLURvbmcsIFNlb2d1LAotCQkJCVRhZWpvbiAgMzAyLTg0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy01NyAgIChoZXgpCQlUb3BjYWxsIEludGVybmF0aW9uYWwgQUcKLTAwMDc1NyAgICAgKGJhc2UgMTYpCQlUb3BjYWxsIEludGVybmF0aW9uYWwgQUcKLQkJCQlUYWxwYWdhc3NlIDEKLQkJCQkxMjMwIFZpZW5uYQotCQkJCUFVU1RSSUEKLQotMDAtMDctNTggICAoaGV4KQkJRHJhZ29ud2F2ZQotMDAwNzU4ICAgICAoYmFzZSAxNikJCURyYWdvbndhdmUKLQkJCQk2MDAtNDExIExlZ2dldHQgRHJpdmUsCi0JCQkJU3VpdGUgNjAwCi0JCQkJS2FuYXRhLCBPbnRhcmlvIEsySyAzQzkKLQkJCQlDQU5BREEKLQotMDAtMDctNTkgICAoaGV4KQkJQm9yaXMgTWFudWZhY3R1cmluZyBDb3JwLgotMDAwNzU5ICAgICAoYmFzZSAxNikJCUJvcmlzIE1hbnVmYWN0dXJpbmcgQ29ycC4KLQkJCQlQTyBCb3ggNjAxCi0JCQkJQ2FzdGxlIFBvaW50IE5ZIDEyNTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy01QSAgIChoZXgpCQlBaXIgUHJvZHVjdHMgYW5kIENoZW1pY2FscywgSW5jLgotMDAwNzVBICAgICAoYmFzZSAxNikJCUFpciBQcm9kdWN0cyBhbmQgQ2hlbWljYWxzLCBJbmMuCi0JCQkJNzIwMSBIYW1pbHRvbiBCbHZkLgotCQkJCU1haWwgU3RvcCBDMTMwNwotCQkJCUFsbGVudG93biBQQSAxODE5NS0xNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy01QiAgIChoZXgpCQlHaWJzb24gR3VpdGFycwotMDAwNzVCICAgICAoYmFzZSAxNikJCUdpYnNvbiBHdWl0YXJzCi0JCQkJMzA5IFBhcmsgUGx1cyBCbHZkLgotCQkJCU5hc2h2aWxsZSBUTiAzNzIxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNUMgICAoaGV4KQkJRWFzdG1hbiBLb2RhayBDb21wYW55Ci0wMDA3NUMgICAgIChiYXNlIDE2KQkJRWFzdG1hbiBLb2RhayBDb21wYW55Ci0JCQkJMzQzIFN0YXRlIFN0cmVldAotCQkJCVJvY2hlc3RlciBOWSAxNDY1MC0wMTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy01RCAgIChoZXgpCQlDZWxsZXJpdGFzIEluYy4KLTAwMDc1RCAgICAgKGJhc2UgMTYpCQlDZWxsZXJpdGFzIEluYy4KLQkJCQljL28gQ2VsZXJpdGFzIEx0ZC4KLQkJCQlCZXphbGVsIDI5LCBSYW1hdC1HYW4KLQkJCQlJU1JBRUwKLQotMDAtMDctNUUgICAoaGV4KQkJQW1ldGVrIFBvd2VyIEluc3RydW1lbnRzCi0wMDA3NUUgICAgIChiYXNlIDE2KQkJQW1ldGVrIFBvd2VyIEluc3RydW1lbnRzCi0JCQkJNDA1MCBOVyAxMjEgQXZlbnVlCi0JCQkJQ29yYWwgU3ByaW5ncyBGTCAzMzA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNUYgICAoaGV4KQkJVkNTIFZpZGVvIENvbW11bmljYXRpb24gU3lzdGVtcyBBRwotMDAwNzVGICAgICAoYmFzZSAxNikJCVZDUyBWaWRlbyBDb21tdW5pY2F0aW9uIFN5c3RlbXMgQUcKLQkJCQlGb3JjaGhlaW1lciBTdHIuIDQKLQkJCQk5MDQyNSBOdWVybmJlcmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTYwICAgKGhleCkJCVRPTUlTIEluZm9ybWF0aW9uICYgVGVsZWNvbSBDb3JwLgotMDAwNzYwICAgICAoYmFzZSAxNikJCVRPTUlTIEluZm9ybWF0aW9uICYgVGVsZWNvbSBDb3JwLgotCQkJCVlvdW5nZGV1bmdwbyB0ZWxlcGhvbmUgb2ZmaWNlIC0gZXh0ZW5zaW8KLQkJCQlZb3VuZ2RldW5ncG9kb25nIDM1LTEsIFlvdW5nZGV1bmdwby1ndQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctNjEgICAoaGV4KQkJTG9naXRlY2ggU0EKLTAwMDc2MSAgICAgKGJhc2UgMTYpCQlMb2dpdGVjaCBTQQotCQkJCVouSS4gTW91bGluIGR1IENob2MgRAotCQkJCUNILTExMjIgUm9tYW5lbC1zdXItTW9yZ2VzCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDctNjIgICAoaGV4KQkJR3JvdXAgU2Vuc2UgTGltaXRlZAotMDAwNzYyICAgICAoYmFzZSAxNikJCUdyb3VwIFNlbnNlIExpbWl0ZWQKLQkJCQkyNy9GLCBXdSBDaHVuZyBIb3VzZSwKLQkJCQkyMTMgUXVlZW4ncyBSb2FkIEVhc3QsCi0JCQkJV2FuY2hhaSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA3LTYzICAgKGhleCkJCVN1bm5pd2VsbCBDeWJlciBUZWNoLiBDby4sIEx0ZC4KLTAwMDc2MyAgICAgKGJhc2UgMTYpCQlTdW5uaXdlbGwgQ3liZXIgVGVjaC4gQ28uLCBMdGQuCi0JCQkJMTd0aCBGbG9vciBIYWl0YWkgQnVpbGRpbmcgIzIyOQotCQkJCUJlaXNpaHVhbiBIb25nIFJvYWQsCi0JCQkJQmVpamluZyAgMTAwMDgzCi0JCQkJQ0hJTkEKLQotMDAtMDctNjQgICAoaGV4KQkJWW91bmdXb28gVGVsZWNvbSBDby4gTHRkLgotMDAwNzY0ICAgICAoYmFzZSAxNikJCVlvdW5nV29vIFRlbGVjb20gQ28uIEx0ZC4KLQkJCQkzRiwgU2Vod2EgQi9ELCAzNTUtMQotCQkJCVlhdGFwLURvbmcsIEJ1bmRhZy1rdQotCQkJCVN1bmduYW0tU2kgS3l1bmdraS1EbyAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctNjUgICAoaGV4KQkJSmFkZSBRdWFudHVtIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNzY1ICAgICAoYmFzZSAxNikJCUphZGUgUXVhbnR1bSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk1RiwgTm8uIDExNiwgSHNpZW4gRnUgUmQuLAotCQkJCVRhb3l1YW4sCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNy02NiAgIChoZXgpCQlDaG91IENoaW4gSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMDc2NiAgICAgKGJhc2UgMTYpCQlDaG91IENoaW4gSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQk5RiwgIzM1LCBDaGlhdSBBbiBTdC4gQ2h1bmcgSG8gQ2l0eSwKLQkJCQlUYWlwZWkgSHNpZW4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTY3ICAgKGhleCkJCVl1eGluZyBFbGVjdHJvbmljcyBDb21wYW55IExpbWl0ZWQKLTAwMDc2NyAgICAgKGJhc2UgMTYpCQlZdXhpbmcgRWxlY3Ryb25pY3MgQ29tcGFueSBMaW1pdGVkCi0JCQkJVW5pdCAxODA4LCAxOC9GIFRvd2VyIDMsCi0JCQkJRW50ZXJwcmlzZSBTcXVhcmUsIDkgU2hldW5nIFl1ZXQgUm9hZAotCQkJCUtvd2xvb24gQmF5LCBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0wNy02OCAgIChoZXgpCQlEYW5mb3NzIEEvUwotMDAwNzY4ICAgICAoYmFzZSAxNikJCURhbmZvc3MgQS9TCi0JCQkJRTE2LU4xMiwgREstNjQzMCBOb3JkYm9yZwotCQkJCURFTk1BUksKLQotMDAtMDctNjkgICAoaGV4KQkJSXRhbGlhbmEgTWFjY2hpIFNwQQotMDAwNzY5ICAgICAoYmFzZSAxNikJCUl0YWxpYW5hIE1hY2NoaSBTcEEKLQkJCQlWaWEgTWF0dGVvdHRpIDEKLQkJCQkyMTA0MCBPZ2dpb25hIFMuIFN0ZWZhbm8gKFZBKQotCQkJCUlUQUxZCi0KLTAwLTA3LTZBICAgKGhleCkJCU5FWFRFWUUgQ28uLCBMdGQuCi0wMDA3NkEgICAgIChiYXNlIDE2KQkJTkVYVEVZRSBDby4sIEx0ZC4KLQkJCQlTaGluc2VnaSBQbGF6YSA0RiwgOTAwLTksCi0JCQkJUHl1bmdjaG9uLCBEb25nYW4sIEFueWFuZywKLQkJCQlLeXVuZ2dpICA0MzEtMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTZCICAgKGhleCkJCVN0cmFsZm9ycyBBQgotMDAwNzZCICAgICAoYmFzZSAxNikJCVN0cmFsZm9ycyBBQgotCQkJCUxhbmdnYXRhbiAyMQotCQkJCVMtMzQxIDg0IExqdW5nYnkKLQkJCQlTV0VERU4KLQotMDAtMDctNkMgICAoaGV4KQkJRGFlaGFuZXQsIEluYy4KLTAwMDc2QyAgICAgKGJhc2UgMTYpCQlEYWVoYW5ldCwgSW5jLgotCQkJCSM4LTIgQ2h1bmcgSnVuZyBSZCAyLSBHYQotCQkJCVN1ciBEYWUgTW9vbiwKLQkJCQlTZW91bCAgMTIwLTAxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy02RCAgIChoZXgpCQlGbGV4bGlnaHQgTmV0d29ya3MKLTAwMDc2RCAgICAgKGJhc2UgMTYpCQlGbGV4bGlnaHQgTmV0d29ya3MKLQkJCQkxNSBBdGlyIFllZGEgU3QuCi0JCQkJS2ZhciBTYWJhIDQ0NjQzCi0JCQkJSVNSQUVMCi0KLTAwLTA3LTZFICAgKGhleCkJCVNpbmV0aWNhIENvcnBvcmF0aW9uIExpbWl0ZWQKLTAwMDc2RSAgICAgKGJhc2UgMTYpCQlTaW5ldGljYSBDb3Jwb3JhdGlvbiBMaW1pdGVkCi0JCQkJV2lsbG93IEhvdXNlCi0JCQkJTGxhbmNheW8gQ291cnQKLQkJCQlNb25tb3V0aHNoaXJlIFVzayBOUDE1IDFIWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA3LTZGICAgKGhleCkJCVN5bm9wdGljcyBMaW1pdGVkCi0wMDA3NkYgICAgIChiYXNlIDE2KQkJU3lub3B0aWNzIExpbWl0ZWQKLQkJCQlGbG9vZGxpZ2h0IEhvdXNlLCBOdWZmaWVsZCBSb2FkLAotCQkJCUNhbWJyaWRnZSBDQjQgMVRGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctNzAgICAoaGV4KQkJTG9jdXNuZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAwNzcwICAgICAoYmFzZSAxNikJCUxvY3VzbmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQk5dGggRmwuIENodW5namxuCi0JCQkJNTMtNSBXb25oeW8tUm8gM0dhCi0JCQkJU2VvdWwgIDE0MC03MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctNzEgICAoaGV4KQkJRW1iZWRkZWQgU3lzdGVtIENvcnBvcmF0aW9uCi0wMDA3NzEgICAgIChiYXNlIDE2KQkJRW1iZWRkZWQgU3lzdGVtIENvcnBvcmF0aW9uCi0JCQkJMTMtNSwgVGFrYWRhbm9iYWJhIDMtY2hvbWUsCi0JCQkJU2hpbmp1a3Uta3UsIFRva3lvIDE2OS0wMDc1Ci0JCQkJSkFQQU4KLQotMDAtMDctNzIgICAoaGV4KQkJQWxjYXRlbCBTaGFuZ2hhaSBCZWxsIENvLiwgTHRkLgotMDAwNzcyICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgU2hhbmdoYWkgQmVsbCBDby4sIEx0ZC4KLQkJCQlOby4gMzg4LCBOaW5ncWlhbyBSb2FkLAotCQkJCVB1ZG9uZyBKaW5xaWFvLCBTaGFuZ2hhaQotCQkJCTIwMTIwNgotCQkJCUNISU5BCi0KLTAwLTA3LTczICAgKGhleCkJCUFzY29tIFBvd2VybGluZSBDb21tdW5pY2F0aW9ucyBMdGQuCi0wMDA3NzMgICAgIChiYXNlIDE2KQkJQXNjb20gUG93ZXJsaW5lIENvbW11bmljYXRpb25zIEx0ZC4KLQkJCQlCZWxwc3RyLiAzNwotCQkJCTMwMDAgQmVybiAxNAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA3LTc0ICAgKGhleCkJCUd1YW5nWmhvdSBUaGlua2VyIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTAwMDc3NCAgICAgKGJhc2UgMTYpCQlHdWFuZ1pob3UgVGhpbmtlciBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJMTA5IFpob25nc2hhbiBBdmUuLCBUaWFuaGUgRGlzdHJpY3QKLQkJCQlHdWFuZ3pob3UKLQkJCQk1MTA2MzAKLQkJCQlDSElOQQotCi0wMC0wNy03NSAgIChoZXgpCQlWYWxlbmNlIFNlbWljb25kdWN0b3IsIEluYy4KLTAwMDc3NSAgICAgKGJhc2UgMTYpCQlWYWxlbmNlIFNlbWljb25kdWN0b3IsIEluYy4KLQkJCQk0MSBEaXNjb3ZlcnkKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTc2ICAgKGhleCkJCUZlZGVyYWwgQVBECi0wMDA3NzYgICAgIChiYXNlIDE2KQkJRmVkZXJhbCBBUEQKLQkJCQk0Mjc3NSBOaW5lIE1pbGUgUmQuCi0JCQkJTm92aSBNSSA0ODM3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNzcgICAoaGV4KQkJTW90YWggTHRkLgotMDAwNzc3ICAgICAoYmFzZSAxNikJCU1vdGFoIEx0ZC4KLQkJCQk0LTQtNSBLb2lzaGlrYXdhCi0JCQkJQnVua3lvLCBUb2t5bwotCQkJCTExMi0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMDctNzggICAoaGV4KQkJR0VSU1RFTCBHbWJIICYgQ28uIEtHCi0wMDA3NzggICAgIChiYXNlIDE2KQkJR0VSU1RFTCBHbWJIICYgQ28uIEtHCi0JCQkJRWJlcmhhcmQtR2Vyc3RlbC1QbGF0eiAxCi0JCQkJRDQ1NDczCi0JCQkJTXVsaGVpbSBhbiBkZXIgUnVociAgCi0JCQkJR0VSTUFOWQotCi0wMC0wNy03OSAgIChoZXgpCQlTdW5naWwgVGVsZWNvbSBDby4sIEx0ZC4KLTAwMDc3OSAgICAgKGJhc2UgMTYpCQlTdW5naWwgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQkjMzIxLCBHb25nZGFuLURvbmcsCi0JCQkJR3VtaS1DaXR5LCBLeW91bmctQnVrCi0JCQkJNzMwLTAzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy03QSAgIChoZXgpCQlJbmZvd2FyZSBTeXN0ZW0gQ28uLCBMdGQuCi0wMDA3N0EgICAgIChiYXNlIDE2KQkJSW5mb3dhcmUgU3lzdGVtIENvLiwgTHRkLgotCQkJCU1pem9yb2dpIERhaWljaGkgQmxkZyA0IEYKLQkJCQkxLTUtMTMgU2hpbmp1a3UsIFNoaW5qdWt1LWt1Ci0JCQkJVG9reW8gIAotCQkJCUpBUEFOCi0KLTAwLTA3LTdCICAgKGhleCkJCU1pbGxpbWV0cml4IEJyb2FkYmFuZCBOZXR3b3JrcwotMDAwNzdCICAgICAoYmFzZSAxNikJCU1pbGxpbWV0cml4IEJyb2FkYmFuZCBOZXR3b3JrcwotCQkJCUtpYnV0eiBHaXZhdCBIYXNoZWxvc2hhIDQ4ODAwCi0JCQkJSVNSQUVMCi0KLTAwLTA3LTdDICAgKGhleCkJCVdlc3Rlcm1vIFRlbGVpbmR1c3RyaSBBQgotMDAwNzdDICAgICAoYmFzZSAxNikJCVdlc3Rlcm1vIFRlbGVpbmR1c3RyaSBBQgotCQkJCVNFLTY0MCA0MAotCQkJCVN0b3JhIFN1bmRieSAgCi0JCQkJU1dFREVOCi0KLTAwLTA3LTdEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDc3RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy03RSAgIChoZXgpCQlFbHJlc3QgR21iSAotMDAwNzdFICAgICAoYmFzZSAxNikJCUVscmVzdCBHbWJICi0JCQkJTGVpYm5penN0ci4gMTAKLQkJCQlELTczMjMwIEtpcmNoaGVpbQotCQkJCUdFUk1BTlkKLQotMDAtMDctN0YgICAoaGV4KQkJSiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMDc3RiAgICAgKGJhc2UgMTYpCQlKIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTEyNC00IE9qZW9uLURvbmcsIFVsd2FuZy1DaXR5Ci0JCQkJS3l1bmdraS1EbwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy04MCAgIChoZXgpCQlCbHVlZ2lnYSBUZWNobm9sb2dpZXMgT1kKLTAwMDc4MCAgICAgKGJhc2UgMTYpCQlCbHVlZ2lnYSBUZWNobm9sb2dpZXMgT1kKLQkJCQlQLk8uIEJPWCAxMjAKLQkJCQlGSU4tMDI2MzEgRXNwb28gCi0JCQkJRklOTEFORAotCi0wMC0wNy04MSAgIChoZXgpCQlJdHJvbiBJbmMuCi0wMDA3ODEgICAgIChiYXNlIDE2KQkJSXRyb24gSW5jLgotCQkJCTI4MTggTi4gU3VsbGl2YW4gUm9hZAotCQkJCVNwb2thbmUgV0EgOTkyMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTgyICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbgotMDAwNzgyICAgICAoYmFzZSAxNikJCU9yYWNsZSBDb3Jwb3JhdGlvbgotCQkJCTE3IE5ldHdvcmsgQ2lyY2xlCi0JCQkJQnVpbGRpbmcgMTcsIFVNUEsxNy0xMzEKLQkJCQlNZW5sbyBQYXJrIENBIDk1MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy04MyAgIChoZXgpCQlTeW5Db20gTmV0d29yaywgSW5jLgotMDAwNzgzICAgICAoYmFzZSAxNikJCVN5bkNvbSBOZXR3b3JrLCBJbmMuCi0JCQkJNEYsIE5vLiAzMSwgSHNpbnRhaSBSb2FkLCBDaHVwZWkgQ2l0eSwKLQkJCQlIc2luY2h1IEhzaWVuLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDctODQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA3ODQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy04NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDc4NSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTg2ICAgKGhleCkJCVdpcmVsZXNzIE5ldHdvcmtzIEluYy4KLTAwMDc4NiAgICAgKGJhc2UgMTYpCQlXaXJlbGVzcyBOZXR3b3JrcyBJbmMuCi0JCQkJIzMwMCwgMzAxNiBGaWZ0aCBBdmUuIE5FCi0JCQkJQ2FsZ2FyeSwgQWxiZXJ0YQotCQkJCVQyQSA2SzQKLQkJCQlDQU5BREEKLQotMDAtMDctODcgICAoaGV4KQkJSWRlYSBTeXN0ZW0gQ28uLCBMdGQuCi0wMDA3ODcgICAgIChiYXNlIDE2KQkJSWRlYSBTeXN0ZW0gQ28uLCBMdGQuCi0JCQkJNC0xLTIxIFNoaW5tZWktY2hvIE9rYXlhLXNoaQotCQkJCU5hZ2Fuby1rZW4gMzk0LTAwMDQKLQkJCQlKQVBBTgotCi0wMC0wNy04OCAgIChoZXgpCQlDbGlwY29tbSwgSW5jLgotMDAwNzg4ICAgICAoYmFzZSAxNikJCUNsaXBjb21tLCBJbmMuCi0JCQkJNXRoIEZsLCBTc2FuZ3lhbmcgQmxkZy4KLQkJCQk5MzUtMSBCb25nY2hlb24tZG9uZywgS3dhbWFrLWd1LAotCQkJCVNlb3VsICAxNTEtODI3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTg5ICAgKGhleCkJCURPTkdXT04gU1lTVEVNUwotMDAwNzg5ICAgICAoYmFzZSAxNikJCURPTkdXT04gU1lTVEVNUwotCQkJCTg2MS01LCBHd2FueWFuZy1Eb25nLCBEb25nYW4tR3UsCi0JCQkJQW55YW5nLXNpLCBHeWVvbmdnaS1kbywgIDQzMC04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctOEEgICAoaGV4KQkJTWVudG9yIERhdGEgU3lzdGVtIEluYy4KLTAwMDc4QSAgICAgKGJhc2UgMTYpCQlNZW50b3IgRGF0YSBTeXN0ZW0gSW5jLgotCQkJCU5vLiAyNC0xLCBJbmR1c3RyeSBFYXN0IDQgUmQuLAotCQkJCVNjaWVuY2UgQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW4tQ2h1LCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNy04QiAgIChoZXgpCQlXZWdlbmVyIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA3OEIgICAgIChiYXNlIDE2KQkJV2VnZW5lciBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTExMzUwIFRlY2hub2xvZ3kgQ2lyY2xlCi0JCQkJRHVsdXRoIEdBIDMwMDk3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy04QyAgIChoZXgpCQlFbGVrdHJvbmlrc3BlY2lhbGlzdGVuIGkgQm9ybGFuZ2UgQUIKLTAwMDc4QyAgICAgKGJhc2UgMTYpCQlFbGVrdHJvbmlrc3BlY2lhbGlzdGVuIGkgQm9ybGFuZ2UgQUIKLQkJCQlCb3ggNTAKLQkJCQk0MCBNT0NLRkpBUkQKLQkJCQlTRSA3ODAKLQkJCQlTV0VERU4KLQotMDAtMDctOEQgICAoaGV4KQkJTmV0RW5naW5lcyBMdGQuCi0wMDA3OEQgICAgIChiYXNlIDE2KQkJTmV0RW5naW5lcyBMdGQuCi0JCQkJMTQ2IFdhbG51dCBUcmVlIENsb3NlCi0JCQkJR3VpbGRmb3JkLCBTdXJyZXkKLQkJCQlHVUkgNFVCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctOEUgICAoaGV4KQkJR2FyeiAmIEZyaWNoZSBHbWJICi0wMDA3OEUgICAgIChiYXNlIDE2KQkJR2FyeiAmIEZyaWNoZSBHbWJICi0JCQkJVGVtcG93ZXJodmluZyA0Ci0JCQkJRC0yMTA3OSBIYW1idXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wNy04RiAgIChoZXgpCQlFbWtheSBJbm5vdmF0aXZlIFByb2R1Y3RzCi0wMDA3OEYgICAgIChiYXNlIDE2KQkJRW1rYXkgSW5ub3ZhdGl2ZSBQcm9kdWN0cwotCQkJCTUzLCBQYW8gSHNpbmcgUmQuLCBIc2ludGllbiBDaXR5Ci0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTkwICAgKGhleCkJCVRyaS1NIFRlY2hub2xvZ2llcyAocykgTGltaXRlZAotMDAwNzkwICAgICAoYmFzZSAxNikJCVRyaS1NIFRlY2hub2xvZ2llcyAocykgTGltaXRlZAotCQkJCUJsayAyNSwgS2FsbGFuZyBBdmVudWUgIzA3LTAxLzA0Ci0JCQkJS2FsbGFuZyBCYXNpbiBJbmQuIEVzdAotCQkJCTMzOTQxNgotCQkJCVNJTkdBUE9SRQotCi0wMC0wNy05MSAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIERhdGEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDc5MSAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIERhdGEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk0Nzg3MyBGcmVtb250IEJsdmQuCi0JCQkJRnJlbW9udCBDQSAwNDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctOTIgICAoaGV4KQkJU3VldHJvbiBFbGVjdHJvbmljIEdtYkgKLTAwMDc5MiAgICAgKGJhc2UgMTYpCQlTdWV0cm9uIEVsZWN0cm9uaWMgR21iSAotCQkJCUt1cnplIFN0cmFzc2UgMjkKLQkJCQk3MDc5NCBGaWxkZXJzdGFkdAotCQkJCUdFUk1BTlkKLQotMDAtMDctOTMgICAoaGV4KQkJU2hpbiBTYXRlbGxpdGUgUHVibGljIENvbXBhbnkgTGltaXRlZAotMDAwNzkzICAgICAoYmFzZSAxNikJCVNoaW4gU2F0ZWxsaXRlIFB1YmxpYyBDb21wYW55IExpbWl0ZWQKLQkJCQk0MS8xMDMgIFJhdHRhbmF0aGliZXQgUm9hZCwKLQkJCQlOb250aGFidXJpIDExMDAwLAotCQkJCVRIQUlMQU5ECi0KLTAwLTA3LTk0ICAgKGhleCkJCVNpbXBsZSBEZXZpY2VzLCBJbmMuCi0wMDA3OTQgICAgIChiYXNlIDE2KQkJU2ltcGxlIERldmljZXMsIEluYy4KLQkJCQkxMTEgQW56YSBCbHZkLiwgU3VpdGUgMTIwCi0JCQkJQnVybGluZ2FtZSBDQSA5NDAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctOTUgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0wMDA3OTUgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0JCQkJTm8uIDIyLCBBbGxleSAzOCwgTGFuZSA5MSwKLQkJCQlTZWMuIDEsIE5laSBIdSBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTk2ICAgKGhleCkJCUxTSSBTeXN0ZW1zLCBJbmMuCi0wMDA3OTYgICAgIChiYXNlIDE2KQkJTFNJIFN5c3RlbXMsIEluYy4KLQkJCQkxMC0xIE1pbmFtaS1rdXJva2F3YSwKLQkJCQlBc2FvLWt1LCBrYXdhc2FraSwKLQkJCQlLYW5hZ2F3YSAgMjE1LTAwMzQKLQkJCQlKQVBBTgotCi0wMC0wNy05NyAgIChoZXgpCQlOZXRwb3dlciBDby4sIEx0ZC4KLTAwMDc5NyAgICAgKGJhc2UgMTYpCQlOZXRwb3dlciBDby4sIEx0ZC4KLQkJCQlCYWVrYW0gQmxkZy4sIDZGCi0JCQkJMTIzLCBLYXJhay1Eb25nLCBTb25nLXBhIEd1Ci0JCQkJU2VvdWwgIDEzOC0xNjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctOTggICAoaGV4KQkJU2VsZWEgU1JMCi0wMDA3OTggICAgIChiYXNlIDE2KQkJU2VsZWEgU1JMCi0JCQkJVmlhIEEuIE1vcm8gTm8uIDY5Ci0JCQkJNDYwMTUgLSBDaWNvZ25hcmEKLQkJCQlJVEFMWQotCi0wMC0wNy05OSAgIChoZXgpCQlUaXBwaW5nIFBvaW50IFRlY2hub2xvZ2llcywgSW5jLgotMDAwNzk5ICAgICAoYmFzZSAxNikJCVRpcHBpbmcgUG9pbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNzUwMSBCIE4uIENhcGl0YWwgb2YgVFggSHd5LgotCQkJCUF1c3RpbiBUWCA3ODczMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctOUEgICAoaGV4KQkJVmVyaW50IFN5c3RlbXMgSW5jCi0wMDA3OUEgICAgIChiYXNlIDE2KQkJVmVyaW50IFN5c3RlbXMgSW5jCi0JCQkJMTgwMCBCZXJsaWVyLCBTdWl0ZSA0NDAKLQkJCQlMYXZhbCwgIFF1ZWJlYyBIN0wgNFM0Ci0JCQkJQ0FOQURBCi0KLTAwLTA3LTlCICAgKGhleCkJCUF1cm9yYSBOZXR3b3JrcwotMDAwNzlCICAgICAoYmFzZSAxNikJCUF1cm9yYSBOZXR3b3JrcwotCQkJCTI4MDMgTWlzc2lvbiBDb2xsZWdlIEJsdmQuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTlDICAgKGhleCkJCUdvbGRlbiBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNzlDICAgICAoYmFzZSAxNikJCUdvbGRlbiBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiAyOSwgMjFzdCBSb2FkLAotCQkJCVRhaWNodW5nIEluZHVzdHJpYWwgUGFyaywgVGFpY2h1bmcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTlEICAgKGhleCkJCU11c2FzaGkgQ28uLCBMdGQuCi0wMDA3OUQgICAgIChiYXNlIDE2KQkJTXVzYXNoaSBDby4sIEx0ZC4KLQkJCQkzLTIxLTEsIFNoaW1vLW9jaGlhaSwKLQkJCQlTaGluanVrdS1rdSwKLQkJCQlUb2t5byAgMTYxLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0wNy05RSAgIChoZXgpCQlJbGlueCBDby4sIEx0ZC4KLTAwMDc5RSAgICAgKGJhc2UgMTYpCQlJbGlueCBDby4sIEx0ZC4KLQkJCQk0dGggRmxvb3IgS29yZWEgVGVsZWNvbSwgWWFuZ2phZSBCcmFuY2gKLQkJCQlEb2dvay1Eb25nLCBLYW5nbmFtLWt1LAotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctOUYgICAoaGV4KQkJQWN0aW9uIERpZ2l0YWwgSW5jLgotMDAwNzlGICAgICAoYmFzZSAxNikJCUFjdGlvbiBEaWdpdGFsIEluYy4KLQkJCQkxMDY1MCBNYWluIFN0LgotCQkJCVN1aXRlIDEwMgotCQkJCUZhaXJmYXggVkEgMjIwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUEwICAgKGhleCkJCWUtV2F0Y2ggSW5jLgotMDAwN0EwICAgICAoYmFzZSAxNikJCWUtV2F0Y2ggSW5jLgotCQkJCTc4MDAgSUggMTAgV2VzdAotCQkJCVN1aXRlIDcwMAotCQkJCVNhbiBBbnRvbmlvIFRYIDc4MjI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1BMSAgIChoZXgpCQlWSUFTWVMgSGVhbHRoY2FyZSBHbWJICi0wMDA3QTEgICAgIChiYXNlIDE2KQkJVklBU1lTIEhlYWx0aGNhcmUgR21iSAotCQkJCUxlaWJuaXpzdHJhc3NlIDcKLQkJCQlIb2VjaGJlcmcgQmF2YXJpYSA5NzIwNAotCQkJCUdFUk1BTlkKLQotMDAtMDctQTIgICAoaGV4KQkJT3B0ZW9uIENvcnBvcmF0aW9uCi0wMDA3QTIgICAgIChiYXNlIDE2KQkJT3B0ZW9uIENvcnBvcmF0aW9uCi0JCQkJNzAgSGFzdGluZ3MgU3RyZWV0Ci0JCQkJV2VsbGVzbGV5IE1BIDAyNDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1BMyAgIChoZXgpCQlPc2l0aXMgU29mdHdhcmUsIEluYy4KLTAwMDdBMyAgICAgKGJhc2UgMTYpCQlPc2l0aXMgU29mdHdhcmUsIEluYy4KLQkJCQk2MTIwIFN0b25lcmlkZ2UgTWFsbCBSb2FkCi0JCQkJU3VpdGUgMjEwCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQTQgICAoaGV4KQkJR04gTmV0Y29tIEx0ZC4KLTAwMDdBNCAgICAgKGJhc2UgMTYpCQlHTiBOZXRjb20gTHRkLgotCQkJCTEyLTEzIFNlZGxpbmcgUm9hZCwgV2VhciBFc3QuLCBEaXN0cmljdAotCQkJCVdhc2hpbmd0b24sIFR5bmUgYW5kIFdlYXIKLQkJCQlFbmdsYW5kIE5FMzggOUJaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctQTUgICAoaGV4KQkJWS5ELksgQ28uIEx0ZC4KLTAwMDdBNSAgICAgKGJhc2UgMTYpCQlZLkQuSyBDby4gTHRkLgotCQkJCTE3MDUsIE9zaGl0YXRlLCBJbmFnaS1DaXR5LAotCQkJCVRva3lvLAotCQkJCUpBUEFOCi0KLTAwLTA3LUE2ICAgKGhleCkJCUhvbWUgQXV0b21hdGlvbiwgSW5jLgotMDAwN0E2ICAgICAoYmFzZSAxNikJCUhvbWUgQXV0b21hdGlvbiwgSW5jLgotCQkJCTQzMzAgTWljaG91ZCBCbHZkLgotCQkJCU5ldyBPcmxlYW5zIExBIDcwMTI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1BNyAgIChoZXgpCQlBLVogSW5jLgotMDAwN0E3ICAgICAoYmFzZSAxNikJCUEtWiBJbmMuCi0JCQkJNS01LTE3IEthbWlrb3VzaGllbgotCQkJCU5pc2hpbm9taXlhIENpdHksIEh5b2dvCi0JCQkJSkFQQU4KLQotMDAtMDctQTggICAoaGV4KQkJSGFpZXIgR3JvdXAgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMDdBOCAgICAgKGJhc2UgMTYpCQlIYWllciBHcm91cCBUZWNobm9sb2dpZXMgTHRkLgotCQkJCU5vLiAxIEhhaWVyIFJvYWQsIEhpLXRlY2ggWm9uZQotCQkJCVFpbmdkYW8sCi0JCQkJQ0hJTkEKLQotMDAtMDctQTkgICAoaGV4KQkJTm92YXNvbmljcwotMDAwN0E5ICAgICAoYmFzZSAxNikJCU5vdmFzb25pY3MKLQkJCQkxMzkwIFdpbGxvdyBSb2FkCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQUEgICAoaGV4KQkJUXVhbnR1bSBEYXRhIEluYy4KLTAwMDdBQSAgICAgKGJhc2UgMTYpCQlRdWFudHVtIERhdGEgSW5jLgotCQkJCTIxMTEgQmlnIFRpbWJlciBSZC4KLQkJCQlFbGdpbiBJTCA2MDEyMy0xMTAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1BQyAgIChoZXgpCQlFb2xyaW5nCi0wMDA3QUMgICAgIChiYXNlIDE2KQkJRW9scmluZwotCQkJCTEwIFJ1ZSBBbGZyZWQgS2FzdGxlcgotCQkJCTE0MDAwIENhZW4KLQkJCQlGUkFOQ0UKLQotMDAtMDctQUQgICAoaGV4KQkJUGVudGFjb24gR21iSCBGb3RvLXVuZCBGZWlud2Vya3RlY2huaWsKLTAwMDdBRCAgICAgKGJhc2UgMTYpCQlQZW50YWNvbiBHbWJIIEZvdG8tdW5kIEZlaW53ZXJrdGVjaG5pawotCQkJCUVuZGVyc3RyYWJlIDk0Ci0JCQkJMDEyNzcgRHJlc2RlbgotCQkJCUdFUk1BTlkKLQotMDAtMDctQUUgICAoaGV4KQkJQnJpdGVzdHJlYW0gTmV0d29ya3MsIEluYy4KLTAwMDdBRSAgICAgKGJhc2UgMTYpCQlCcml0ZXN0cmVhbSBOZXR3b3JrcywgSW5jLgotCQkJCTEyNDAxIFJlc2VhcmNoIEJsdmQuCi0JCQkJQnVpbGRpbmcgVHdvLCBTdWl0ZSAyNzUKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUFGICAgKGhleCkJCU4tVHJvbiBDb3JwLgotMDAwN0FGICAgICAoYmFzZSAxNikJCU4tVHJvbiBDb3JwLgotCQkJCTgyMCBTLiBVbml2ZXJzaXR5IEJsdmQuCi0JCQkJU3VpdGUgNEUKLQkJCQlNb2JpbGUgQUwgMzY2MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUIwICAgKGhleCkJCU9mZmljZSBEZXRhaWxzLCBJbmMuCi0wMDA3QjAgICAgIChiYXNlIDE2KQkJT2ZmaWNlIERldGFpbHMsIEluYy4KLQkJCQkyNSBPdHRhd2EKLQkJCQk0dGggRmxvb3IKLQkJCQlHcmFuZCBSYXBpZHMgTUkgNDk1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUIxICAgKGhleCkJCUVxdWF0b3IgVGVjaG5vbG9naWVzCi0wMDA3QjEgICAgIChiYXNlIDE2KQkJRXF1YXRvciBUZWNobm9sb2dpZXMKLQkJCQkxMzAwIFdoaXRlIE9ha3MgUmQuCi0JCQkJQ2FtcGJlbGwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUIyICAgKGhleCkJCVRyYW5zYWNjZXNzIFMuQS4KLTAwMDdCMiAgICAgKGJhc2UgMTYpCQlUcmFuc2FjY2VzcyBTLkEuCi0JCQkJUi4gR2FsZW5vIERlIENhc3RybywgMTQ0NQotCQkJCVR1cnViYXR1YmEgMDQ2OTYtMDQwCi0JCQkJU2FvIFBhdWxvIFNQICAKLQkJCQlCUkFaSUwKLQotMDAtMDctQjMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA3QjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1CNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDdCNCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUI1ICAgKGhleCkJCUFueSBPbmUgV2lyZWxlc3MgTHRkLgotMDAwN0I1ICAgICAoYmFzZSAxNikJCUFueSBPbmUgV2lyZWxlc3MgTHRkLgotCQkJCU5hbXNlb3VsIEJkLiwgOEYsIDEzMDQtMwotCQkJCVNlb2NobyA0LURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctQjYgICAoaGV4KQkJVGVsZWNvbSBUZWNobm9sb2d5IEx0ZC4KLTAwMDdCNiAgICAgKGJhc2UgMTYpCQlUZWxlY29tIFRlY2hub2xvZ3kgTHRkLgotCQkJCURvY2tsYW5kcyBJbm5vdmF0aW9uIFBhcmsKLQkJCQkxMjgtMTMwIEVhc3QgV2FsbCBSb2FkCi0JCQkJRHVibGluIDMgIAotCQkJCUlSRUxBTkQKLQotMDAtMDctQjcgICAoaGV4KQkJU2FtdXJhaSBJbmQuIFByb2RzIEVsZXRyb25pY29zIEx0ZGEKLTAwMDdCNyAgICAgKGJhc2UgMTYpCQlTYW11cmFpIEluZC4gUHJvZHMgRWxldHJvbmljb3MgTHRkYQotCQkJCVItTmVicmFza2EsIDQ0MyBTLzIgMm8gQW5kYXIKLQkJCQlCcm9va2xpbiBOb3ZvIC0gU2FvIFBhdWxvCi0JCQkJMDQ1NjAtMDExCi0JCQkJQlJBWklMCi0KLTAwLTA3LUI4ICAgKGhleCkJCUNvcnZhbGVudCBDb3Jwb3JhdGlvbgotMDAwN0I4ICAgICAoYmFzZSAxNikJCUNvcnZhbGVudCBDb3Jwb3JhdGlvbgotCQkJCTExMDEgQXJyb3cgUG9pbnQgRHIgIzUwMQotCQkJCUNlZGFyIFBhcmsgVFggNzg2MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUI5ICAgKGhleCkJCUdpbmdhbmV0IENvcnBvcmF0aW9uCi0wMDA3QjkgICAgIChiYXNlIDE2KQkJR2luZ2FuZXQgQ29ycG9yYXRpb24KLQkJCQlLaW50ZXRzdSBTaGluIE5hbWJhIEJ1aWxkaW5nCi0JCQkJTWluYXRvIE1hY2hpIDEtNC0zOCBOYW5pd2FrdQotCQkJCU9zYWthIFNoaSAgMTU1Ni0wMDE3Ci0JCQkJSkFQQU4KLQotMDAtMDctQkEgICAoaGV4KQkJVVRTdGFyY29tLCBJbmMuCi0wMDA3QkEgICAgIChiYXNlIDE2KQkJVVRTdGFyY29tLCBJbmMuCi0JCQkJMTI3NSBCYXJib3IgQmF5IFBLV1kKLQkJCQlBbGFtZWRhIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1CQiAgIChoZXgpCQlDYW5kZXJhIEluYy4KLTAwMDdCQiAgICAgKGJhc2UgMTYpCQlDYW5kZXJhIEluYy4KLQkJCQk2NzMgU291dGggTWlscGl0YXMgQmx2ZC4KLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQkMgICAoaGV4KQkJSWRlbnRpeCBJbmMuCi0wMDA3QkMgICAgIChiYXNlIDE2KQkJSWRlbnRpeCBJbmMuCi0JCQkJNjU5MSBTaWVycmEgTGFuZQotCQkJCUR1YmxpbiBDQSA5NDU2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQkQgICAoaGV4KQkJUmFkaW9uZXQgTHRkLgotMDAwN0JEICAgICAoYmFzZSAxNikJCVJhZGlvbmV0IEx0ZC4KLQkJCQlLZWlsYXJhbnRhIDYKLQkJCQkwMjE1MCBFU1AwMAotCQkJCUZJTkxBTkQKLQotMDAtMDctQkUgICAoaGV4KQkJRGF0YUxvZ2ljIFNwQQotMDAwN0JFICAgICAoYmFzZSAxNikJCURhdGFMb2dpYyBTcEEKLQkJCQlWaWEgQ2FuZGluaSwgMgotCQkJCTQwMDEyIExpcHBvIGRpIENhbGRlcmFyYSBkaSBSZW5vCi0JCQkJQm9sb2duYSAgCi0JCQkJSVRBTFkKLQotMDAtMDctQkYgICAoaGV4KQkJQXJtaWxsYWlyZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDdCRiAgICAgKGJhc2UgMTYpCQlBcm1pbGxhaXJlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwNDExIE1vdG9yIENpdHkgRHJpdmUKLQkJCQlCZXRoZXNkYSBNRCAyMDgxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQzAgICAoaGV4KQkJTmV0WmVydmVyIEluYy4KLTAwMDdDMCAgICAgKGJhc2UgMTYpCQlOZXRaZXJ2ZXIgSW5jLgotCQkJCTI2IFdlc3QgTG9uZSBDYWN0dXMgRHJpdmUKLQkJCQlQaG9lbml4IEFaIDg1MDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1DMSAgIChoZXgpCQlPdmVydHVyZSBOZXR3b3JrcywgSW5jLgotMDAwN0MxICAgICAoYmFzZSAxNikJCU92ZXJ0dXJlIE5ldHdvcmtzLCBJbmMuCi0JCQkJNTA3IEFpcnBvcnQgQmx2ZAotCQkJCVN1aXRlIDExMQotCQkJCU1vcnJpc3ZpbGxlIE5DIDI3NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1DMiAgIChoZXgpCQlOZXRzeXMgVGVsZWNvbQotMDAwN0MyICAgICAoYmFzZSAxNikJCU5ldHN5cyBUZWxlY29tCi0JCQkJNEYsIEt5dW5nTmFtIEIvRCwgODMwLTQ4LCBZZW9rU2FtLURvbmcKLQkJCQlLYW5nbmFtLUd1LAotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LUMzICAgKGhleCkJCVRob21zb24KLTAwMDdDMyAgICAgKGJhc2UgMTYpCQlUaG9tc29uCi0JCQkJNS03LCBydWUgU2Fsb21vbiBkZSBSb3Roc2NoaWxkCi0JCQkJU3VyZXNuZXMKLQkJCQk5MjE1MAotCQkJCUZSQU5DRQotCi0wMC0wNy1DNCAgIChoZXgpCQlKRUFOIENvLiBMdGQuCi0wMDA3QzQgICAgIChiYXNlIDE2KQkJSkVBTiBDby4gTHRkLgotCQkJCTdGLCAyLCBSZWkgS3VhbmcgUm9hZCwKLQkJCQlOZWkgSHUsCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LUM1ICAgKGhleCkJCUdjb20sIEluYy4KLTAwMDdDNSAgICAgKGJhc2UgMTYpCQlHY29tLCBJbmMuCi0JCQkJMTgwMCBXb29kZmllbGQgRHIuCi0JCQkJU2F2b3kgSUwgNjE4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUM2ICAgKGhleCkJCVZEUyBWb3Nza3VobGVyIEdtYkgKLTAwMDdDNiAgICAgKGJhc2UgMTYpCQlWRFMgVm9zc2t1aGxlciBHbWJICi0JCQkJV2VpYmUgQnJlaXRlIDcKLQkJCQlELTQ5MDg0IE9zbmFicnVjawotCQkJCUdFUk1BTlkKLQotMDAtMDctQzcgICAoaGV4KQkJU3luZWN0aWNzIFN5c3RlbXMgTGltaXRlZAotMDAwN0M3ICAgICAoYmFzZSAxNikJCVN5bmVjdGljcyBTeXN0ZW1zIExpbWl0ZWQKLQkJCQkzIEFjb3JuIEJ1c2luZXNzIFBhcmsKLQkJCQlXb29zZWF0cyBDbG9zZSwgU2hlZmZpZWxkCi0JCQkJUzggT1RCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctQzggICAoaGV4KQkJQnJhaW4yMSwgSW5jLgotMDAwN0M4ICAgICAoYmFzZSAxNikJCUJyYWluMjEsIEluYy4KLQkJCQkxOUYgTWVzYSBCL0QsIDIwNCBIb2loeXVuLURvbmcKLQkJCQlKb29uZy1HdQotCQkJCVNlb3VsICAxMDAtMDUxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LUM5ICAgKGhleCkJCVRlY2hub2wgU2V2ZW4gQ28uLCBMdGQuCi0wMDA3QzkgICAgIChiYXNlIDE2KQkJVGVjaG5vbCBTZXZlbiBDby4sIEx0ZC4KLQkJCQkyNS0xNiBUb2JlaG9uLWNobywgTmlzaS1rdSwKLQkJCQlZb2tvaGFtYSwgMjIwLTAwNDEKLQkJCQlKQVBBTgotCi0wMC0wNy1DQSAgIChoZXgpCQlDcmVhdGl4IFBvbHltZWRpYSBHZXMgRnVyIEtvbW11bmlrYWl0b25zc3lzdGVtZQotMDAwN0NBICAgICAoYmFzZSAxNikJCUNyZWF0aXggUG9seW1lZGlhIEdlcyBGdXIgS29tbXVuaWthaXRvbnNzeXN0ZW1lCi0JCQkJSGVpbnJpY2gtQmFydGgtU3RyLiAzCi0JCQkJNjYxMTUgU2FhcmJydWVja2VuCi0JCQkJR0VSTUFOWQotCi0wMC0wNy1DQiAgIChoZXgpCQlGcmVlYm94IFNBCi0wMDA3Q0IgICAgIChiYXNlIDE2KQkJRnJlZWJveCBTQQotCQkJCTggcnVlIGRlIGxhIFZpbGxlIGwnRXZlcXVlCi0JCQkJUGFyaXMgIDc1MDA4Ci0JCQkJRlJBTkNFCi0KLTAwLTA3LUNDICAgKGhleCkJCUthYmEgQmVuemluZyBHbWJICi0wMDA3Q0MgICAgIChiYXNlIDE2KQkJS2FiYSBCZW56aW5nIEdtYkgKLQkJCQlBbGJlcnRpc3RyYWJlIDMKLQkJCQk3ODA1NiBWaWxsaWdlbi1TY2h3ZW5uaW5nZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LUNEICAgKGhleCkJCU5NVEVMIENvLiwgTHRkLgotMDAwN0NEICAgICAoYmFzZSAxNikJCU5NVEVMIENvLiwgTHRkLgotCQkJCVN1aXRlIDEzMDMgMS5CLkMuIDkxNy02Ci0JCQkJTW9rLTEgZG9uZyBUYW5nY2hlb24ta3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LUNFICAgKGhleCkJCUNhYmxldGltZSBMaW1pdGVkCi0wMDA3Q0UgICAgIChiYXNlIDE2KQkJQ2FibGV0aW1lIExpbWl0ZWQKLQkJCQk2NCBHcmVlbmhhbSBSb2FkCi0JCQkJTmV3YnVyeSwgQmVya3NoaXJlLAotCQkJCVJHMTQgN0hYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctQ0YgICAoaGV4KQkJQW5vdG8gQUIKLTAwMDdDRiAgICAgKGJhc2UgMTYpCQlBbm90byBBQgotCQkJCVNvbHZlZ2F0YW4gNDEKLQkJCQlTRS0yMjMgNzAgTHVuZAotCQkJCVNXRURFTgotCi0wMC0wNy1EMCAgIChoZXgpCQlBdXRvbWF0IEVuZ2VuaGFyaWEgZGUgQXV0b21hb2EgTHRkYS4KLTAwMDdEMCAgICAgKGJhc2UgMTYpCQlBdXRvbWF0IEVuZ2VuaGFyaWEgZGUgQXV0b21hb2EgTHRkYS4KLQkJCQlSdWEgU2FudG8gQW50b25pbywgOTE3IC0gUmVib3VjYXMKLQkJCQlDdXJpdGliYSAtIFBSCi0JCQkJODAyMzAtMTIwCi0JCQkJQlJBWklMCi0KLTAwLTA3LUQxICAgKGhleCkJCVNwZWN0cnVtIFNpZ25hbCBQcm9jZXNzaW5nIEluYy4KLTAwMDdEMSAgICAgKGJhc2UgMTYpCQlTcGVjdHJ1bSBTaWduYWwgUHJvY2Vzc2luZyBJbmMuCi0JCQkJIzIwMC0yNzAwIFByb2R1Y3Rpb24gV2F5Ci0JCQkJQnVybmFieSwgQkMgVjVBIDRYMQotCQkJCUNBTkFEQQotCi0wMC0wNy1EMiAgIChoZXgpCQlMb2dvcGFrIFN5c3RlbWUKLTAwMDdEMiAgICAgKGJhc2UgMTYpCQlMb2dvcGFrIFN5c3RlbWUKLQkJCQlEb3Jmc3RyYXNzZSA0MAotCQkJCUQtMjQ2MjggSGFydGVuaG9sbQotCQkJCUdFUk1BTlkKLQotMDAtMDctRDMgICAoaGV4KQkJU3RvcmsgRGlnaXRhbCBJbWFnaW5nIEIuVi4KLTAwMDdEMyAgICAgKGJhc2UgMTYpCQlTdG9yayBEaWdpdGFsIEltYWdpbmcgQi5WLgotCQkJCUhhbmRlbHN0cmFhdCA2Ci0JCQkJUC5PLiBCb3ggMjEwCi0JCQkJQm94bWVlciAgNTgzMC1BRQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTA3LUQ0ICAgKGhleCkJCVpoZWppYW5nIFl1dG9uZyBOZXR3b3JrIENvbW11bmljYXRpb24gQ28gTHRkLgotMDAwN0Q0ICAgICAoYmFzZSAxNikJCVpoZWppYW5nIFl1dG9uZyBOZXR3b3JrIENvbW11bmljYXRpb24gQ28gTHRkLgotCQkJCTgwNSBIdWFYaW5nIFRlY2huaWNhbCBCdWlsZGluZwotCQkJCTQ3NyMgV2VuU2FuIFJvYWQsIEhhbmdaaG91Ci0JCQkJWmhlamlhbmcgIAotCQkJCUNISU5BCi0KLTAwLTA3LUQ1ICAgKGhleCkJCTNlIFRlY2hub2xvZ2llcyBJbnQ7LiwgSW5jLgotMDAwN0Q1ICAgICAoYmFzZSAxNikJCTNlIFRlY2hub2xvZ2llcyBJbnQ7LiwgSW5jLgotCQkJCTE1ODAwIENyYWJicyBCcmFuY2ggV2F5Ci0JCQkJU3VpdGUgMjkwCi0JCQkJUm9ja3ZpbGxlIE1EIDIwODU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1ENiAgIChoZXgpCQlDb21taWwgTHRkLgotMDAwN0Q2ICAgICAoYmFzZSAxNikJCUNvbW1pbCBMdGQuCi0JCQkJUC5PLiBCb3ggMTAwNTAKLQkJCQlQZXRhaCBUaWt2YSA0OTAwMQotCQkJCUlTUkFFTAotCi0wMC0wNy1ENyAgIChoZXgpCQlDYXBvcmlzIE5ldHdvcmtzIEFHCi0wMDA3RDcgICAgIChiYXNlIDE2KQkJQ2Fwb3JpcyBOZXR3b3JrcyBBRwotCQkJCVN1ZWdnZWxzdHIuIDMxCi0JCQkJRC00NDUzMiBMdWVuZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LUQ4ICAgKGhleCkJCUhpdHJvbiBTeXN0ZW1zIEluYy4KLTAwMDdEOCAgICAgKGJhc2UgMTYpCQlIaXRyb24gU3lzdGVtcyBJbmMuCi0JCQkJMTM1LTIyMCBIaXRyb24gQi9EIDcyNi01Ci0JCQkJU3Vzby1Eb25nLCBLYW5nbmFtIEd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy1EOSAgIChoZXgpCQlTcGxpY2Vjb20KLTAwMDdEOSAgICAgKGJhc2UgMTYpCQlTcGxpY2Vjb20KLQkJCQlMaXR0bGUgR2lsbGlvbnMsIFRoZSBHcmVlbgotCQkJCUNyb3hsZXkgR3JlZW4sIFJpY2ttYW5zd29ydGgKLQkJCQlIZXJ0cyAgV0QzIDNIWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA3LURBICAgKGhleCkJCU5ldXJvIFRlbGVjb20gQ28uLCBMdGQuCi0wMDA3REEgICAgIChiYXNlIDE2KQkJTmV1cm8gVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQkyRiBNaXN1bmcgQi9ELCA5MzgtNwotCQkJCUhvZ2UtZG9uZywgRG9uZ2FuLWd1Ci0JCQkJS3l1bmdnaS1kbyAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LURCICAgKGhleCkJCUtpcmFuYSBOZXR3b3JrcywgSW5jLgotMDAwN0RCICAgICAoYmFzZSAxNikJCUtpcmFuYSBOZXR3b3JrcywgSW5jLgotCQkJCTMzMSBOZXdtYW4gU3ByaW5ncyBSb2FkCi0JCQkJQmxkZy4gMSA0dGggRmxvb3IKLQkJCQlSZWQgQmFuayBOSiAwNzcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctREMgICAoaGV4KQkJQXRlayBDbywgTHRkLgotMDAwN0RDICAgICAoYmFzZSAxNikJCUF0ZWsgQ28sIEx0ZC4KLQkJCQlCIGRvbmcgIzIwNSBoYW55YW5nIHZlbnR1cmUgcGFyawotCQkJCTY4NS0yMCBzb25nc3UxZ2Fkb25nIHNvbmcgZG9uZ2d1LAotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctREQgICAoaGV4KQkJQ3JhZGxlIFRlY2hub2xvZ2llcwotMDAwN0REICAgICAoYmFzZSAxNikJCUNyYWRsZSBUZWNobm9sb2dpZXMKLQkJCQkzMTMwIFdlc3QgV2FycmVuIEF2ZS4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1ERSAgIChoZXgpCQllQ29waWx0IEFCCi0wMDA3REUgICAgIChiYXNlIDE2KQkJZUNvcGlsdCBBQgotCQkJCVZlZGRlc3RhdmFnZW4gMjQKLQkJCQlTRS0xNzUgNjIgSmFyZmFsbGEKLQkJCQlTV0VERU4KLQotMDAtMDctREYgICAoaGV4KQkJVmJyaWNrIFN5c3RlbXMgSW5jLgotMDAwN0RGICAgICAoYmFzZSAxNikJCVZicmljayBTeXN0ZW1zIEluYy4KLQkJCQkxMiBCZWF1bW9udCBSb2FkCi0JCQkJV2FsbGluZ2ZvcmQgQ1QgMDY0OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUUwICAgKGhleCkJCVBhbG0gSW5jLgotMDAwN0UwICAgICAoYmFzZSAxNikJCVBhbG0gSW5jLgotCQkJCTk1MCBXZXN0IE1hdWRlIEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NS0yODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FMSAgIChoZXgpCQlXSVMgQ29tbXVuaWNhdGlvbnMgQ28uIEx0ZC4KLTAwMDdFMSAgICAgKGJhc2UgMTYpCQlXSVMgQ29tbXVuaWNhdGlvbnMgQ28uIEx0ZC4KLQkJCQk0L0YgQnVpbGRpbmcgNTMzCi0JCQkJQnVndWEgU2l4dGggUm9hZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyBQcm92aWRlbmNlICAKLQkJCQlDSElOQQotCi0wMC0wNy1FMiAgIChoZXgpCQlCaXR3b3JrcywgSW5jLgotMDAwN0UyICAgICAoYmFzZSAxNikJCUJpdHdvcmtzLCBJbmMuCi0JCQkJIzEgQml0d29ya3MgV2F5Ci0JCQkJUHJhaXJpZSBHcm92ZSBBUiA3Mjc1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRTMgICAoaGV4KQkJTmF2Y29tIFRlY2hub2xvZ3ksIEluYy4KLTAwMDdFMyAgICAgKGJhc2UgMTYpCQlOYXZjb20gVGVjaG5vbG9neSwgSW5jLgotCQkJCTEyMyBXZXN0IFRvcnJhbmNlIEJsdmQuLAotCQkJCVN1aXRlIDEwMQotCQkJCVJlZG9uZG8gQmVhY2ggQ0EgOTAyNzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUU0ICAgKGhleCkJCVNvZnRSYWRpbyBDby4sIEx0ZC4KLTAwMDdFNCAgICAgKGJhc2UgMTYpCQlTb2Z0UmFkaW8gQ28uLCBMdGQuCi0JCQkJMkYsIERvbmctQm9rIEIvRCA2NDUtMTgKLQkJCQlZZW9rc2FtLURvbmcsIEthbmduYW0tR3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LUU1ICAgKGhleCkJCUNvdXAgQ29ycG9yYXRpb24KLTAwMDdFNSAgICAgKGJhc2UgMTYpCQlDb3VwIENvcnBvcmF0aW9uCi0JCQkJMS0yNC00IE1hcnVzZW4gMm5kIEJsZC4gNEYsCi0JCQkJSGlnYXNoaS1VZW5vLCBUYWl0by1rdQotCQkJCVRva3lvICAKLQkJCQlKQVBBTgotCi0wMC0wNy1FNiAgIChoZXgpCQllZGdlZmxvdyBDYW5hZGEgSW5jLgotMDAwN0U2ICAgICAoYmFzZSAxNikJCWVkZ2VmbG93IENhbmFkYSBJbmMuCi0JCQkJMzI5IE1hcmNoIFJvYWQKLQkJCQlLYW5hdGEsIE9udGFyaW8KLQkJCQlLMksgMkUxCi0JCQkJQ0FOQURBCi0KLTAwLTA3LUU3ICAgKGhleCkJCUZyZWVXYXZlIFRlY2hub2xvZ2llcwotMDAwN0U3ICAgICAoYmFzZSAxNikJCUZyZWVXYXZlIFRlY2hub2xvZ2llcwotCQkJCTE4ODAgUy4gRmxhaXRyb24gQ3QuCi0JCQkJU3RlLiBGCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRTggICAoaGV4KQkJU3QuIEJlcm5hcmQgU29mdHdhcmUKLTAwMDdFOCAgICAgKGJhc2UgMTYpCQlTdC4gQmVybmFyZCBTb2Z0d2FyZQotCQkJCTE1MDE1IEF2ZW51ZSBvZiBTY2llbmNlCi0JCQkJU2FuIERpZWdvIENBIDkyMTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FOSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAwN0U5ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTVM6ICBKRjMtNDIwCi0JCQkJMjExMSBORSAyNXRoIEF2ZS4KLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUVBICAgKGhleCkJCU1hc3NhbmEsIEluYy4KLTAwMDdFQSAgICAgKGJhc2UgMTYpCQlNYXNzYW5hLCBJbmMuCi0JCQkJMjkwMSBUYXNtYW4gRHJpdmUKLQkJCQlTdWl0ZSAxMDYKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRUIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA3RUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDdFQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUVEICAgKGhleCkJCUFsdGVyYSBDb3Jwb3JhdGlvbgotMDAwN0VEICAgICAoYmFzZSAxNikJCUFsdGVyYSBDb3Jwb3JhdGlvbgotCQkJCTEwMSBJbm5vdmF0aW9uIERyaXZlCi0JCQkJTVMgMjMwNQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FRSAgIChoZXgpCQl0ZWxjbyBJbmZvcm1hdGlvbnNzeXN0ZW1lIEdtYkgKLTAwMDdFRSAgICAgKGJhc2UgMTYpCQl0ZWxjbyBJbmZvcm1hdGlvbnNzeXN0ZW1lIEdtYkgKLQkJCQlTY2h1bHN0cmFzc2UgMzgKLQkJCQlEIDA5MTIgQ2hlbW5pdHoKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LUVGICAgKGhleCkJCUxvY2toZWVkIE1hcnRpbiBUYWN0aWNhbCBTeXN0ZW1zCi0wMDA3RUYgICAgIChiYXNlIDE2KQkJTG9ja2hlZWQgTWFydGluIFRhY3RpY2FsIFN5c3RlbXMKLQkJCQkzMzMzIFBpbG90IEtub2IgUm9hZAotCQkJCUVhZ2FuIE1OIDU1MTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1GMCAgIChoZXgpCQlMb2dpU3luYyBMTEMKLTAwMDdGMCAgICAgKGJhc2UgMTYpCQlMb2dpU3luYyBMTEMKLQkJCQkxMzEzIExlYXIgSW5kdXN0cmlhbCBQYXJrd2F5Ci0JCQkJQXZvbiBPSCA0NDAxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRjEgICAoaGV4KQkJVGVyYUJ1cnN0IE5ldHdvcmtzIEluYy4KLTAwMDdGMSAgICAgKGJhc2UgMTYpCQlUZXJhQnVyc3QgTmV0d29ya3MgSW5jLgotCQkJCTk4NSBTdGV3YXJ0IERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1GMiAgIChoZXgpCQlJT0EgQ29ycG9yYXRpb24KLTAwMDdGMiAgICAgKGJhc2UgMTYpCQlJT0EgQ29ycG9yYXRpb24KLQkJCQkzNTAgUG90cmVybyBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1GMyAgIChoZXgpCQlUaGlua2VuZ2luZSBOZXR3b3JrcwotMDAwN0YzICAgICAoYmFzZSAxNikJCVRoaW5rZW5naW5lIE5ldHdvcmtzCi0JCQkJMTAwIE5pY2tlcnNvbiBSb2FkCi0JCQkJTWFybGJvcm91Z2ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUY0ICAgKGhleCkJCUVsZXRleCBDby4sIEx0ZC4KLTAwMDdGNCAgICAgKGJhc2UgMTYpCQlFbGV0ZXggQ28uLCBMdGQuCi0JCQkJOC0yLTU2IE5hbmtvdS1IaWdhc2hpIFN1bWlub2Uta3UKLQkJCQlPc2FrYSA1NTktMDAzMQotCQkJCUpBUEFOCi0KLTAwLTA3LUY1ICAgKGhleCkJCUJyaWRnZWNvIENvIEFHCi0wMDA3RjUgICAgIChiYXNlIDE2KQkJQnJpZGdlY28gQ28gQUcKLQkJCQlSaW5nc3RyLiAxNAotCQkJCUNIIDg2MDAgRHVlYmVuZG9yZgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA3LUY2ICAgKGhleCkJCVFxZXN0IFNvZnR3YXJlIFN5c3RlbXMKLTAwMDdGNiAgICAgKGJhc2UgMTYpCQlRcWVzdCBTb2Z0d2FyZSBTeXN0ZW1zCi0JCQkJODYwIEVhc3QgNDUwMCBTb3V0aCAjMjAwCi0JCQkJTXVycmF5IFVUIDg0MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1GNyAgIChoZXgpCQlHYWx0cm9uaWNzCi0wMDA3RjcgICAgIChiYXNlIDE2KQkJR2FsdHJvbmljcwotCQkJCTQ2NDUgRWFzdCBDb3R0b24gQ2VudGVyIEJsdmQuCi0JCQkJQmxkZy4gVHdvCi0JCQkJUGhvZW5peCBBWiA4NTA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRjggICAoaGV4KQkJSVREZXZpY2VzLCBJbmMuCi0wMDA3RjggICAgIChiYXNlIDE2KQkJSVREZXZpY2VzLCBJbmMuCi0JCQkJNjA2IDExMHRoIEF2ZS4gTkUKLQkJCQlCZWxsZXZ1ZSBXQSA5ODAwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRjkgICAoaGV4KQkJUGhvbmV0aWNzLCBJbmMuCi0wMDA3RjkgICAgIChiYXNlIDE2KQkJUGhvbmV0aWNzLCBJbmMuCi0JCQkJOTAxIFRyeWVucyBSb2FkCi0JCQkJQXN0b24gUEEgMTkwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUZBICAgKGhleCkJCUlUVCBDby4sIEx0ZC4KLTAwMDdGQSAgICAgKGJhc2UgMTYpCQlJVFQgQ28uLCBMdGQuCi0JCQkJMS0xNC03LCBNdWtvaGp5dWt1LAotCQkJCUhhbWFtYXRzdSwgU2hpenVva2EgNDMwCi0JCQkJSkFQQU4KLQotMDAtMDctRkIgICAoaGV4KQkJR2lnYSBTdHJlYW0gVU1UUyBUZWNobm9sb2dpZXMgR21iSAotMDAwN0ZCICAgICAoYmFzZSAxNikJCUdpZ2EgU3RyZWFtIFVNVFMgVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlLb25yYWQtWnVzZS1TdHJhYmUgNwotCQkJCUQtNjYxMTUgU2FhcmJydWNrZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LUZDICAgKGhleCkJCUFkZXB0IFN5c3RlbXMgSW5jLgotMDAwN0ZDICAgICAoYmFzZSAxNikJCUFkZXB0IFN5c3RlbXMgSW5jLgotCQkJCTI0MiBFYXN0IDYwMCBOb3J0aAotCQkJCUxpbmRvbiBVVCA4NDA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRkQgICAoaGV4KQkJTEFOZXJneSBMdGQuCi0wMDA3RkQgICAgIChiYXNlIDE2KQkJTEFOZXJneSBMdGQuCi0JCQkJSW1wZXJpYWwgSG91c2UsIEltcGVyaWFsIFdheQotCQkJCU5ld3BvcnQsIEd3ZW50IE5QMTAgOFVICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctRkUgICAoaGV4KQkJUmlnYWt1IENvcnBvcmF0aW9uCi0wMDA3RkUgICAgIChiYXNlIDE2KQkJUmlnYWt1IENvcnBvcmF0aW9uCi0JCQkJMy05LTEyLCBNYXRzdWJhcmEtY2hvCi0JCQkJQWtpc2hpbWEtc2hpCi0JCQkJVG9reW8gIDE5Ni04NjY2Ci0JCQkJSkFQQU4KLQotMDAtMDctRkYgICAoaGV4KQkJR2x1b24gTmV0d29ya3MKLTAwMDdGRiAgICAgKGJhc2UgMTYpCQlHbHVvbiBOZXR3b3JrcwotCQkJCTU0MDEgT2xkIFJlZHdvb2QgSHd5LgotCQkJCVBldGFsdW1hIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0wMCAgIChoZXgpCQlNVUxUSVRFQ0ggU1lTVEVNUywgSU5DLgotMDAwODAwICAgICAoYmFzZSAxNikJCU1VTFRJVEVDSCBTWVNURU1TLCBJTkMuCi0JCQkJMjIwNSBXT09EQUxFIERSSVZFCi0JCQkJTU9VTkRTIFZJRVcgTU4gNTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTAxICAgKGhleCkJCUhpZ2hTcGVlZCBTdXJmaW5nIEluYy4KLTAwMDgwMSAgICAgKGJhc2UgMTYpCQlIaWdoU3BlZWQgU3VyZmluZyBJbmMuCi0JCQkJNDQ3OTAgUy4gR3JpbW1lciBCbHZkLgotCQkJCVN1aXRlIDEwMAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTAyICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAwODAyICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0wMyAgIChoZXgpCQlDb3MgVHJvbgotMDAwODAzICAgICAoYmFzZSAxNikJCUNvcyBUcm9uCi0JCQkJM0YgQm9vbGltIEIvRCwgMTQzMS0yMiwKLQkJCQlLd2FueWFuZy1Eb25nLCBEb25nb24tR3UsCi0JCQkJQW55YW5nICA0MzEtMDYxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTA0ICAgKGhleCkJCUlDQSBJbmMuCi0wMDA4MDQgICAgIChiYXNlIDE2KQkJSUNBIEluYy4KLQkJCQk1NDItMSBOb2d1a2kKLQkJCQlLdWtpLXNoaSwgU2FpdGFtbgotCQkJCUpBUEFOCi0KLTAwLTA4LTA1ICAgKGhleCkJCVRlY2huby1Ib2xvbiBDb3Jwb3JhdGlvbgotMDAwODA1ICAgICAoYmFzZSAxNikJCVRlY2huby1Ib2xvbiBDb3Jwb3JhdGlvbgotCQkJCTMtMTktMiwgVGFrYW1hdHN1LWNobwotCQkJCVRhY2hpa2F3YS1zaGkKLQkJCQlUb2t5byAgMTkwLTAwMTEKLQkJCQlKQVBBTgotCi0wMC0wOC0wNiAgIChoZXgpCQlSYW9uZXQgU3lzdGVtcywgSW5jLgotMDAwODA2ICAgICAoYmFzZSAxNikJCVJhb25ldCBTeXN0ZW1zLCBJbmMuCi0JCQkJV2VzdCBXaW5nIDE0RiwgSVQgVmVudHVyZSBUb3dlciA3OAotCQkJCUdhcmFrYm9uLWRvbmcsIFNvbmdwYSwKLQkJCQlTZW91bCAgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC0wNyAgIChoZXgpCQlBY2Nlc3MgRGV2aWNlcyBMaW1pdGVkCi0wMDA4MDcgICAgIChiYXNlIDE2KQkJQWNjZXNzIERldmljZXMgTGltaXRlZAotCQkJCVNpeHRoIEZsb29yLCA1OCBPeGJyaWRnZSBSb2FkCi0JCQkJRWFsaW5nLCBMb25kb24gVzUgMlNUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtMDggICAoaGV4KQkJUFBUIFZpc2lvbiwgSW5jLgotMDAwODA4ICAgICAoYmFzZSAxNikJCVBQVCBWaXNpb24sIEluYy4KLQkJCQkxMjk4OCBWYWxsZXkgVmlldyBSZC4KLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTA5ICAgKGhleCkJCVN5c3RlbW9uaWMgQUcKLTAwMDgwOSAgICAgKGJhc2UgMTYpCQlTeXN0ZW1vbmljIEFHCi0JCQkJQW0gV2FsZHNjaGxvZXNzY2hlbiAxCi0JCQkJRC0wMTA5OSBEcmVzZGVuCi0JCQkJR0VSTUFOWQotCi0wMC0wOC0wQSAgIChoZXgpCQlFc3BlcmEtV2Vya2UgR21iSAotMDAwODBBICAgICAoYmFzZSAxNikJCUVzcGVyYS1XZXJrZSBHbWJICi0JCQkJTW9sdGtlc3RyYXNzZSAxNy0gMzMKLQkJCQk0NzA1OCBEdWlzYnVyZwotCQkJCUdFUk1BTlkKLQotMDAtMDgtMEIgICAoaGV4KQkJQmlya2EgQlBBIEluZm9ybWF0aW9uc3N5c3RlbSBBQgotMDAwODBCICAgICAoYmFzZSAxNikJCUJpcmthIEJQQSBJbmZvcm1hdGlvbnNzeXN0ZW0gQUIKLQkJCQlCb3ggMjAxMDAKLQkJCQkxNjEgMDIgQnJvbW1hCi0JCQkJU1dFREVOCi0KLTAwLTA4LTBDICAgKGhleCkJCVZEQSBFbGV0dHJvbmljYSBzcGEKLTAwMDgwQyAgICAgKGJhc2UgMTYpCQlWREEgRWxldHRyb25pY2Egc3BhCi0JCQkJVmlhbGUgTGlubyBaYW51c3NpLCAzCi0JCQkJMzMxNzAgUG9yZGVub25lIAotCQkJCUlUQUxZCi0KLTAwLTA4LTBEICAgKGhleCkJCVRvc2hpYmEKLTAwMDgwRCAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LCBTdWVoaXJvLWNobywKLQkJCQlPbWUtY2l0eSwKLQkJCQlUb2t5byAgMTk4LTg3MTAKLQkJCQlKQVBBTgotCi0wMC0wOC0wRSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMDgwRSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUwIFNlcXVlbmNlIERyLgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMEYgICAoaGV4KQkJUHJveGltaW9uIEZpYmVyIE9wdGljcyBBQgotMDAwODBGICAgICAoYmFzZSAxNikJCVByb3hpbWlvbiBGaWJlciBPcHRpY3MgQUIKLQkJCQlJc2Fmam9yZHNnYXRhbiA5Ci0JCQkJU0UtMTY0NDAgS2lzdGEKLQkJCQlTV0VERU4KLQotMDAtMDgtMTAgICAoaGV4KQkJS2V5IFRlY2hub2xvZ3ksIEluYy4KLTAwMDgxMCAgICAgKGJhc2UgMTYpCQlLZXkgVGVjaG5vbG9neSwgSW5jLgotCQkJCTE1MCBBdmVyeSBTdC4KLQkJCQlXYWxsYSBXYWxsYSBXQSA5OTM2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMTEgICAoaGV4KQkJVk9JWCBDb3Jwb3JhdGlvbgotMDAwODExICAgICAoYmFzZSAxNikJCVZPSVggQ29ycG9yYXRpb24KLQkJCQkxOTkxLTMgNHRoIEZsb29yIFRvcCdzIFZlbnR1cmUgVG93ZXIKLQkJCQlTZW8gQ2hvLURvbmcsIFNlbyBjaG8tZ3UKLQkJCQlTZW91bCAgMTM4LTA5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC0xMiAgIChoZXgpCQlHTS0yIENvcnBvcmF0aW9uCi0wMDA4MTIgICAgIChiYXNlIDE2KQkJR00tMiBDb3Jwb3JhdGlvbgotCQkJCVNoaWJhLU1hdHVzaGlyYS1CbGRnLgotCQkJCTZGIDMtMy0xMixTaGliYQotCQkJCVRva3lvIE1pbmF0by1rdSAxMDUtMDAxNAotCQkJCUpBUEFOCi0KLTAwLTA4LTEzICAgKGhleCkJCURpc2tiYW5rLCBJbmMuCi0wMDA4MTMgICAgIChiYXNlIDE2KQkJRGlza2JhbmssIEluYy4KLQkJCQkzRiBGb2N1cyBCdWlsZGluZywgNzI1LTI1Ci0JCQkJWWVva3NhbS1kb25nLCBLYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtMTQgICAoaGV4KQkJVElMIFRlY2hub2xvZ2llcwotMDAwODE0ICAgICAoYmFzZSAxNikJCVRJTCBUZWNobm9sb2dpZXMKLQkJCQlFdXJvcGFyayBEZVBpY2hhdXJ5LCBCQVQgOQotCQkJCTEzODU2IEFJWCBlbiBQcm92aWRlbmNlCi0JCQkJRlJBTkNFCi0KLTAwLTA4LTE1ICAgKGhleCkJCUNBVFMgQ28uLCBMdGQuCi0wMDA4MTUgICAgIChiYXNlIDE2KQkJQ0FUUyBDby4sIEx0ZC4KLQkJCQk3NTEtMiBLYWNoaWRhLWNobywKLQkJCQlUc3V6dWtpLWt1LCBZb2tvaGFtYQotCQkJCTIyNC0wMDM0Ci0JCQkJSkFQQU4KLQotMDAtMDgtMTYgICAoaGV4KQkJQmx1ZXRhZ3MgQS9TCi0wMDA4MTYgICAgIChiYXNlIDE2KQkJQmx1ZXRhZ3MgQS9TCi0JCQkJTnl0b3J2IDExLCA0IEZsb29yCi0JCQkJOTAwMCBBYWxib3JnCi0JCQkJREVOTUFSSwotCi0wMC0wOC0xNyAgIChoZXgpCQlFbWVyZ2VDb3JlIE5ldHdvcmtzIExMQwotMDAwODE3ICAgICAoYmFzZSAxNikJCUVtZXJnZUNvcmUgTmV0d29ya3MgTExDCi0JCQkJMTA1NDIgUy4gSm9yZGFuIEdhdGV3YXkKLQkJCQlTdWl0ZSAxNTAKLQkJCQlTb3V0aCBKb3JkYW4gVVQgODQwOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTE4ICAgKGhleCkJCVBpeGVsd29ya3MsIEluYy4KLTAwMDgxOCAgICAgKGJhc2UgMTYpCQlQaXhlbHdvcmtzLCBJbmMuCi0JCQkJNzcwMCBTVyBNb2hhd2sgU3RyZWV0Ci0JCQkJVHVhbGF0aW4gT1IgOTcwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTE5ICAgKGhleCkJCUJhbmtzeXMKLTAwMDgxOSAgICAgKGJhc2UgMTYpCQlCYW5rc3lzCi0JCQkJSGFhY2h0c2VzdGVlbndlZyAxNDQyCi0JCQkJMTEzMCBCcnVzc2VsCi0JCQkJQkVMR0lVTQotCi0wMC0wOC0xQSAgIChoZXgpCQlTYW5yYWQgSW50ZWxsaWdlbmNlIFN0b3JhZ2UgQ29tbXVuaWNhdGlvbnMgKDIwMDApIEx0ZC4KLTAwMDgxQSAgICAgKGJhc2UgMTYpCQlTYW5yYWQgSW50ZWxsaWdlbmNlIFN0b3JhZ2UgQ29tbXVuaWNhdGlvbnMgKDIwMDApIEx0ZC4KLQkJCQkzMiBIYWJhcnplbCBTdC4sIEVudHJhY2UgQgotCQkJCVRlbC1Bdml2IDY5NzEwCi0JCQkJSVNSQUVMCi0KLTAwLTA4LTFCICAgKGhleCkJCVdpbmRpZ28gU3lzdGVtcwotMDAwODFCICAgICAoYmFzZSAxNikJCVdpbmRpZ28gU3lzdGVtcwotCQkJCTIyMTAgTydUb29sZSBBdmUuICMyMDAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMUMgICAoaGV4KQkJQHBvcy5jb20KLTAwMDgxQyAgICAgKGJhc2UgMTYpCQlAcG9zLmNvbQotCQkJCTMwNTEgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTFEICAgKGhleCkJCUlwc2lsLCBJbmNvcnBvcmF0ZWQKLTAwMDgxRCAgICAgKGJhc2UgMTYpCQlJcHNpbCwgSW5jb3Jwb3JhdGVkCi0JCQkJNzk0NSBNYWNBcnRodXIgQmx2ZC4KLQkJCQlTdWl0ZSAyMTIKLQkJCQlDYWJpbiBKb2huIE1EIDIwODE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0xRSAgIChoZXgpCQlSZXBlYXRpdCBBQgotMDAwODFFICAgICAoYmFzZSAxNikJCVJlcGVhdGl0IEFCCi0JCQkJRmFyb2dhdGFuIDcKLQkJCQlTRTE2NDQwIEtpc3RhCi0JCQkJU1dFREVOCi0KLTAwLTA4LTFGICAgKGhleCkJCVBvdSBZdWVuIFRlY2ggQ29ycC4gTHRkLgotMDAwODFGICAgICAoYmFzZSAxNikJCVBvdSBZdWVuIFRlY2ggQ29ycC4gTHRkLgotCQkJCTE2RiwgTm8uIDEwNywgU2VjdC4gMywgVGFpY2h1bmcgS2VuZyBSZC4KLQkJCQlUYWljaHVuZyBDaXR5IDQwNywKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LTIwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMgSW5jLgotMDAwODIwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMjEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA4MjEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0yMiAgIChoZXgpCQlJblBybyBDb21tCi0wMDA4MjIgICAgIChiYXNlIDE2KQkJSW5Qcm8gQ29tbQotCQkJCTExRiwgTm8uIDkzIFNodWVpLVl1YW4gU3RyZWV0Ci0JCQkJSHNpbmNodSwgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOC0yMyAgIChoZXgpCQlUZXhhIENvcnAuCi0wMDA4MjMgICAgIChiYXNlIDE2KQkJVGV4YSBDb3JwLgotCQkJCU5hcmEgQmxkZy4gM0YsIDItMi04IFNoaW4tWW9rb2hhbWEsCi0JCQkJS29ob2t1LWt1LCBZb2tvaGFtYQotCQkJCTIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMDgtMjQgICAoaGV4KQkJQ29waXRyYWsgSW5jCi0wMDA4MjQgICAgIChiYXNlIDE2KQkJQ29waXRyYWsgSW5jCi0JCQkJODM5MCBNYXlyYW5kIFN0cmVldAotCQkJCU1vbnRyZWFsICBRdWViZWMgSDRQIDJDOQotCQkJCUNBTkFEQQotCi0wMC0wOC0yNSAgIChoZXgpCQlBY21lIFBhY2tldAotMDAwODI1ICAgICAoYmFzZSAxNikJCUFjbWUgUGFja2V0Ci0JCQkJNzEgVGhpcmQgQXZlbnVlCi0JCQkJQnVybGxpbmd0b24KLQkJCQlXb2J1cm4gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTI2ICAgKGhleCkJCUNvbG9yYWRvIE1lZCBUZWNoCi0wMDA4MjYgICAgIChiYXNlIDE2KQkJQ29sb3JhZG8gTWVkIFRlY2gKLQkJCQk2MTc1IExvbmdib3cgRHIuCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMjcgICAoaGV4KQkJUGlyZWxsaSBCcm9hZGJhbmQgU29sdXRpb25zCi0wMDA4MjcgICAgIChiYXNlIDE2KQkJUGlyZWxsaSBCcm9hZGJhbmQgU29sdXRpb25zCi0JCQkJVmlhbGUgU2FyY2EgMjIyCi0JCQkJTWlsYW5vIDIwMTI2Ci0JCQkJSVRBTFkKLQotMDAtMDgtMjggICAoaGV4KQkJS29laSBFbmdpbmVlcmluZyBMdGQuCi0wMDA4MjggICAgIChiYXNlIDE2KQkJS29laSBFbmdpbmVlcmluZyBMdGQuCi0JCQkJMy00MCwgNS1DaG9tZQotCQkJCUtpcmUtbmlzaGkgSGlyYW5vLWt1Ci0JCQkJT3Nha3UgIDU0Ny0wMDI2Ci0JCQkJSkFQQU4KLQotMDAtMDgtMjkgICAoaGV4KQkJQXZhbCBOYWdhc2FraSBDb3Jwb3JhdGlvbgotMDAwODI5ICAgICAoYmFzZSAxNikJCUF2YWwgTmFnYXNha2kgQ29ycG9yYXRpb24KLQkJCQk2LTQyIFR1a3ViYSBJc2FoYXlhCi0JCQkJTmFnYXNha2kKLQkJCQk4NTQtMDA2NQotCQkJCUpBUEFOCi0KLTAwLTA4LTJBICAgKGhleCkJCVBvd2Vyd2FsbHogTmV0d29yayBTZWN1cml0eQotMDAwODJBICAgICAoYmFzZSAxNikJCVBvd2Vyd2FsbHogTmV0d29yayBTZWN1cml0eQotCQkJCTEyMC0xMzE2MCBWYW5pZXIgUGxhY2UsCi0JCQkJUmljaG1vbmQsIEJDLAotCQkJCVY2ViAySjIKLQkJCQlDQU5BREEKLQotMDAtMDgtMkIgICAoaGV4KQkJV29va3N1bmcgRWxlY3Ryb25pY3MsIEluYy4KLTAwMDgyQiAgICAgKGJhc2UgMTYpCQlXb29rc3VuZyBFbGVjdHJvbmljcywgSW5jLgotCQkJCUphaG8tQmxkZy4gNkYsIFRhbmJhbmctRG9uZywKLQkJCQlTZW8tR3UsIFRhZWpvbiwgMzAyLTIyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC0yQyAgIChoZXgpCQlIb21hZyBBRwotMDAwODJDICAgICAoYmFzZSAxNikJCUhvbWFnIEFHCi0JCQkJQWJ0LiBFc3QuLCBIb21hZyBTdHIuIDMtNQotCQkJCUQtNzIyOTYgU2Nob3BmbG9jaAotCQkJCUdFUk1BTlkKLQotMDAtMDgtMkQgICAoaGV4KQkJSW5kdXMgVGVxc2l0ZSBQcml2YXRlIExpbWl0ZWQKLTAwMDgyRCAgICAgKGJhc2UgMTYpCQlJbmR1cyBUZXFzaXRlIFByaXZhdGUgTGltaXRlZAotCQkJCSM3LCBBcnlhIEdvd2RlciBSb2FkLAotCQkJCVdlc3QgTWFtYmFsYW0sIENoZW5uYWksCi0JCQkJVGFtaWwgTmFkdSAgNjAwMDMzCi0JCQkJSU5ESUEKLQotMDAtMDgtMkUgICAoaGV4KQkJTXVsdGl0b25lIEVsZWN0cm9uaWNzIFBMQwotMDAwODJFICAgICAoYmFzZSAxNikJCU11bHRpdG9uZSBFbGVjdHJvbmljcyBQTEMKLQkJCQlNdWx0aXRvbmUgSG91c2UsIEJlZ2dhcndvb2QgTGFuZQotCQkJCUJhc2luZ3N0b2tlIFJHMjMgN0xMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtNEUgICAoaGV4KQkJRGl2ZXJnZU5ldCwgSW5jLgotMDAwODRFICAgICAoYmFzZSAxNikJCURpdmVyZ2VOZXQsIEluYy4KLQkJCQkyMTQyIEJlcmluZyBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNEYgICAoaGV4KQkJUXVhbHN0YXIgQ29ycG9yYXRpb24KLTAwMDg0RiAgICAgKGJhc2UgMTYpCQlRdWFsc3RhciBDb3Jwb3JhdGlvbgotCQkJCTM5OTBCIEhlcml0YWdlIE9hayBDb3VydAotCQkJCVNpbWkgVmFsbGV5IENBIDkzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC01MCAgIChoZXgpCQlBcml6b25hIEluc3RydW1lbnQgQ29ycC4KLTAwMDg1MCAgICAgKGJhc2UgMTYpCQlBcml6b25hIEluc3RydW1lbnQgQ29ycC4KLQkJCQkxOTEyIFcuIDR0aCBTdHJlZXQKLQkJCQlUZW1wZSBBWiA4NTI4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNTEgICAoaGV4KQkJQ2FuYWRpYW4gQmFuayBOb3RlIENvbXBhbnksIEx0ZC4KLTAwMDg1MSAgICAgKGJhc2UgMTYpCQlDYW5hZGlhbiBCYW5rIE5vdGUgQ29tcGFueSwgTHRkLgotCQkJCTE4IEF1cmlnYSBEci4KLQkJCQlOZXBlYW4sIE9udC4KLQkJCQlLMkUgN1Q5Ci0JCQkJQ0FOQURBCi0KLTAwLTA4LTUyICAgKGhleCkJCURhdm9saW5rIENvLiBJbmMuCi0wMDA4NTIgICAgIChiYXNlIDE2KQkJRGF2b2xpbmsgQ28uIEluYy4KLQkJCQlSb29tLTYwNCwgS3VtaHdhIFBsYXphLAotCQkJCTExNDItNSwgU2FuYm9uLURvbmcsIEt1bnBvLVNpCi0JCQkJS3l1bmdnaS1EbyAgNDM1LTA0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC01MyAgIChoZXgpCQlTY2hsZWljaGVyIEdtYkggJiBDby4gUmVsYWlzd2Vya2UgS0cKLTAwMDg1MyAgICAgKGJhc2UgMTYpCQlTY2hsZWljaGVyIEdtYkggJiBDby4gUmVsYWlzd2Vya2UgS0cKLQkJCQlQaWNoZWxzd2VyZGVyc3RyYXNzZSAzLTUKLQkJCQlELTEzNTk3IEJlcmxpbgotCQkJCUdFUk1BTlkKLQotMDAtMDgtNTQgICAoaGV4KQkJTmV0cm9uaXgsIEluYy4KLTAwMDg1NCAgICAgKGJhc2UgMTYpCQlOZXRyb25peCwgSW5jLgotCQkJCTNGLTEsIE5vLiAzMSwgSHNpbi1UYWkgUm9hZCwKLQkJCQlDaHVwZWkgQ2l0eSwgSHNpbmNodSBIc2llbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtNTUgICAoaGV4KQkJTkFTQS1Hb2RkYXJkIFNwYWNlIEZsaWdodCBDZW50ZXIKLTAwMDg1NSAgICAgKGJhc2UgMTYpCQlOQVNBLUdvZGRhcmQgU3BhY2UgRmxpZ2h0IENlbnRlcgotCQkJCUNvZGUgNTYxCi0JCQkJR3JlZW5iZWx0IE1EIDIwNzcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC01NiAgIChoZXgpCQlHYW1hdHJvbmljIEVsZWN0cm9uaWMgSW5kdXN0cmllcyBMdGQuCi0wMDA4NTYgICAgIChiYXNlIDE2KQkJR2FtYXRyb25pYyBFbGVjdHJvbmljIEluZHVzdHJpZXMgTHRkLgotCQkJCUhhcnR1bSBTdHJlZXQgMTQKLQkJCQlKZXJ1c2FsZW0gOTc3NzQKLQkJCQlJU1JBRUwKLQotMDAtMDgtNTcgICAoaGV4KQkJUG9sYXJpcyBOZXR3b3JrcywgSW5jLgotMDAwODU3ICAgICAoYmFzZSAxNikJCVBvbGFyaXMgTmV0d29ya3MsIEluYy4KLQkJCQk2ODEwIFNhbnRhIFRlcmVzYSBCbHZkLgotCQkJCVNhbiBKb3NlIENBIDk1MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC01OCAgIChoZXgpCQlOb3ZhdGVjaG5vbG9neSBJbmMuCi0wMDA4NTggICAgIChiYXNlIDE2KQkJTm92YXRlY2hub2xvZ3kgSW5jLgotCQkJCU5vdmEgQmxkZy4gNEYgNjQxIDAzCi0JCQkJWXVrc2FtLURvbmcgS2FuZ25hbS1rdQotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTU5ICAgKGhleCkJCVNoZW5aaGVuIFVuaXRvbmUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA4NTkgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gVW5pdG9uZSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkyIFNvdXRoZXJuIEZsb29yIDcwMiBCdWlsZGluZwotCQkJCUJhR3VhTGluZyBJbmR1c3RyaWFsIFpvbmUgU2hlbnpoZW4KLQkJCQlDSElOQQotCi0wMC0wOC01QSAgIChoZXgpCQlJbnRpR2F0ZSBJbmMuCi0wMDA4NUEgICAgIChiYXNlIDE2KQkJSW50aUdhdGUgSW5jLgotCQkJCTMwOUUgSVQgVmVudHVyZSBUb3dlcgotCQkJCTc4LCBHYXJha2Jvbi1Eb25nLCBTb25ncGEtR3UKLQkJCQlTZW91bCAgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC01QiAgIChoZXgpCQlIYW5iaXQgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA4NUIgICAgIChiYXNlIDE2KQkJSGFuYml0IEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTQxNC01LCBXb25jaGVvbi1Eb25nLCBQYWxkYWwtR3UKLQkJCQlTdXdvbi1DaXR5LCBLeW91bmdraS1EbywgNDQyLTgyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC01QyAgIChoZXgpCQlTaGFuZ2hhaSBEYXJlIFRlY2hub2xvZ2llcyBDby4gTHRkLgotMDAwODVDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERhcmUgVGVjaG5vbG9naWVzIENvLiBMdGQuCi0JCQkJMjNGLCBDaGluYSBNZXJjaGFudHMgVG93ZXIsCi0JCQkJTm8uIDE2MSwgRWFzdCBMdWppYVp1aSBSb2FkCi0JCQkJUHVkb25nIE5ldyBBcmVhLCBTaGFuZ2hhaSAKLQkJCQlDSElOQQotCi0wMC0wOC01RCAgIChoZXgpCQlBYXN0cmEKLTAwMDg1RCAgICAgKGJhc2UgMTYpCQlBYXN0cmEKLQkJCQkxMTYwIFJvdXRlIDIyIEVhc3QKLQkJCQlCcmlkZ2V3YXRlciBOSiAwODgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNUUgICAoaGV4KQkJUENPIEFHCi0wMDA4NUUgICAgIChiYXNlIDE2KQkJUENPIEFHCi0JCQkJRG9uYXVwYXJrIDExCi0JCQkJOTMzMDkgS2VsaGVpbQotCQkJCUdFUk1BTlkKLQotMDAtMDgtNUYgICAoaGV4KQkJUGljYW5vbCBOLlYuCi0wMDA4NUYgICAgIChiYXNlIDE2KQkJUGljYW5vbCBOLlYuCi0JCQkJUG9sZW5sYWFuIDMtNwotCQkJCTg5MDAgSWVwZXIKLQkJCQlCRUxHSVVNCi0KLTAwLTA4LTYwICAgKGhleCkJCUxvZGdlTmV0IEVudGVydGFpbm1lbnQgQ29ycC4KLTAwMDg2MCAgICAgKGJhc2UgMTYpCQlMb2RnZU5ldCBFbnRlcnRhaW5tZW50IENvcnAuCi0JCQkJMzkwMCBXLiBJbm5vdmF0aW9uIFN0cmVldAotCQkJCVNpb3V4IEZhbGxzIFNEIDU3MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC02MSAgIChoZXgpCQlTb2Z0RW5lcmd5IENvLiwgTHRkLgotMDAwODYxICAgICAoYmFzZSAxNikJCVNvZnRFbmVyZ3kgQ28uLCBMdGQuCi0JCQkJMzQ2IFNhbmd3YW5nc2lwbGktRG9uZywKLQkJCQlTdW5nIERvbmctR3UsIFNlb3VsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTYyICAgKGhleCkJCU5FQyBFbHVtaW5hbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA4NjIgICAgIChiYXNlIDE2KQkJTkVDIEVsdW1pbmFudCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNDcwMCBBdmlvbiBQYXJrd2F5Ci0JCQkJQ2hhbnRpbGx5IFZBIDIwMTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC02MyAgIChoZXgpCQlFbnRyaXNwaGVyZSBJbmMuCi0wMDA4NjMgICAgIChiYXNlIDE2KQkJRW50cmlzcGhlcmUgSW5jLgotCQkJCTE2MDEgUy4gRGUgQW56YSBCbHZkLgotCQkJCVN1aXRlIDI1MAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNjQgICAoaGV4KQkJRmFzeSBTLnAuQS4KLTAwMDg2NCAgICAgKGJhc2UgMTYpCQlGYXN5IFMucC5BLgotCQkJCVZpYSBUb2duYXNjYSA3Ci0JCQkJR2FsbGFyYXRlIFZhcmVzZSAyMTAxMwotCQkJCUlUQUxZCi0KLTAwLTA4LTY1ICAgKGhleCkJCUpBU0NPTSBDTy4sIExURAotMDAwODY1ICAgICAoYmFzZSAxNikJCUpBU0NPTSBDTy4sIExURAotCQkJCUpVQU4gSU5EVVNUUklBTCBDT01QTEVYIDMzMCwgMTctMSwKLQkJCQlKVUFOLURPTkcgTkFNLUdVIElOQ0hFT04gNDAyLTIwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC02NiAgIChoZXgpCQlEU1ggQWNjZXNzIFN5c3RlbXMsIEluYy4KLTAwMDg2NiAgICAgKGJhc2UgMTYpCQlEU1ggQWNjZXNzIFN5c3RlbXMsIEluYy4KLQkJCQkxMDczMSBSb2Nrd2FsbCBSZC4KLQkJCQlEYWxsYXMgVFggNzUyMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTY3ICAgKGhleCkJCVVwdGltZSBEZXZpY2VzCi0wMDA4NjcgICAgIChiYXNlIDE2KQkJVXB0aW1lIERldmljZXMKLQkJCQkzMTYwIEJlZSBDYXZlcyBSZAotCQkJCVN1aXRlIDIwNAotCQkJCUF1c3RpbiBUZXhhcyA3ODc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNjggICAoaGV4KQkJUHVyT3B0aXgKLTAwMDg2OCAgICAgKGJhc2UgMTYpCQlQdXJPcHRpeAotCQkJCTE5NDUgQ2FtaW5vIFZpZGEgUm9ibGUKLQkJCQlTdWl0ZSBDCi0JCQkJQ2FybHNiYWQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTY5ICAgKGhleCkJCUNvbW1hbmQtZSBUZWNobm9sb2d5IENvLixMdGQuCi0wMDA4NjkgICAgIChiYXNlIDE2KQkJQ29tbWFuZC1lIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlTdWl0ZSA3MDksIFpob25nc2hlbmcgTWFuc2lvbiwKLQkJCQlOby4yIEJlaSBGZW5nV28gUmQuCi0JCQkJQmVpamluZyAgMTAwMDM4Ci0JCQkJQ0hJTkEKLQotMDAtMDgtNkEgICAoaGV4KQkJU2VjdXJpdG9uIEdtYmgKLTAwMDg2QSAgICAgKGJhc2UgMTYpCQlTZWN1cml0b24gR21iaAotCQkJCVZvbi1EcmFpcy1TdHJhc3NlIDMzCi0JCQkJQWNoZXJuICBELTc3ODU1Ci0JCQkJR0VSTUFOWQotCi0wMC0wOC02QiAgIChoZXgpCQlNSVBTWVMKLTAwMDg2QiAgICAgKGJhc2UgMTYpCQlNSVBTWVMKLQkJCQkxOUMsIEF2ZW51ZSBkZXMgSW5kZXMKLQkJCQlMRVMgVUxJUyBDZWRleCAgRlItOTE5NjkKLQkJCQlGUkFOQ0UKLQotMDAtMDgtNkMgICAoaGV4KQkJUGxhc21vbiBMTVMKLTAwMDg2QyAgICAgKGJhc2UgMTYpCQlQbGFzbW9uIExNUwotCQkJCTQ0MjUgQXJyb3dzV2VzdCBEcml2ZQotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ08gODA5MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTZEICAgKGhleCkJCU1pc3NvdXJpIEZyZWVOZXQKLTAwMDg2RCAgICAgKGJhc2UgMTYpCQlNaXNzb3VyaSBGcmVlTmV0Ci0JCQkJUE8gQm94IDc3MTAyNgotCQkJCVN0LiBMb3VpcyBNaXNzb3VyaSA2MzE3Ny0xMDI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC02RSAgIChoZXgpCQlIeWdsbyBBQgotMDAwODZFICAgICAoYmFzZSAxNikJCUh5Z2xvIEFCCi0JCQkJVmFzdGJlcmdhIGFsbGUgNjAKLQkJCQlTRS0xMjYgNzUgU3RvY2tob2xtCi0JCQkJU1dFREVOCi0KLTAwLTA4LTZGICAgKGhleCkJCVJlc291cmNlcyBDb21wdXRlciBOZXR3b3JrIEx0ZC4KLTAwMDg2RiAgICAgKGJhc2UgMTYpCQlSZXNvdXJjZXMgQ29tcHV0ZXIgTmV0d29yayBMdGQuCi0JCQkJUm0gMzI0LCBUZWNoIENlbnRyZSwgNzIgVGF0IENoZWUgQXZlLiwKLQkJCQlLb3dsb29uIFRvbmcsIEtvd2xvb24KLQkJCQlIT05HIEtPTkcKLQotMDAtMDgtNzAgICAoaGV4KQkJUmFzdmlhIFN5c3RlbXMsIEluYy4KLTAwMDg3MCAgICAgKGJhc2UgMTYpCQlSYXN2aWEgU3lzdGVtcywgSW5jLgotCQkJCTMyNTUtMyBTY290dCBCbHZkLgotCQkJCVN1aXRlIDEwMgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC03MSAgIChoZXgpCQlOT1JUSERBVEEgQ28uLCBMdGQuCi0wMDA4NzEgICAgIChiYXNlIDE2KQkJTk9SVEhEQVRBIENvLiwgTHRkLgotCQkJCSMzMDIgS2F5YW5nVGVjaG5vLVRvd24gMTQ4NwotCQkJCUtheWFuZzMtRG9uZwotCQkJCUthbmdzZW8tR3UgU2VvdWwgMTU3LTgxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC03MiAgIChoZXgpCQlTb3JlbnNvbiBDb21tdW5pY2F0aW9ucwotMDAwODcyICAgICAoYmFzZSAxNikJCVNvcmVuc29uIENvbW11bmljYXRpb25zCi0JCQkJNDE5MiBTb3V0aCBSaXZlcmJvYXQgUm9hZAotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC03MyAgIChoZXgpCQlEYXBUZWNobm9sb2d5IEIuVi4KLTAwMDg3MyAgICAgKGJhc2UgMTYpCQlEYXBUZWNobm9sb2d5IEIuVi4KLQkJCQladXRwaGVuc3RyYWF0IDY3Ci0JCQkJRUogT2xkZW56YWFsICA3NTc1Ci0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDgtNzQgICAoaGV4KQkJRGVsbCBDb21wdXRlciBDb3JwLgotMDAwODc0ICAgICAoYmFzZSAxNikJCURlbGwgQ29tcHV0ZXIgQ29ycC4KLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRYIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC03NSAgIChoZXgpCQlBY29ycCBFbGVjdHJvbmljcyBDb3JwLgotMDAwODc1ICAgICAoYmFzZSAxNikJCUFjb3JwIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJOEYsIE5vLjExMS02LFNoaW5nIFRlaCBSZCwKLQkJCQlTYW4gQ2h1bmcgVGFpcGVpIEhzaWVuIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtNzYgICAoaGV4KQkJU0RTeXN0ZW0KLTAwMDg3NiAgICAgKGJhc2UgMTYpCQlTRFN5c3RlbQotCQkJCTYxMyxIeXVuZGFpIEkgVmFsbGV5LDIyMy0xMiwKLQkJCQlTYW5nZGFpd29uIDEtRG9uZyxKdW5nd29uLUd1Ci0JCQkJU2VvbmduYW0gR3llb25nZ2ktRG8gNDYyLTgwNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC03NyAgIChoZXgpCQlMaWViZXJ0LUhpcm9zcyBTcGEKLTAwMDg3NyAgICAgKGJhc2UgMTYpCQlMaWViZXJ0LUhpcm9zcyBTcGEKLQkJCQlWaWEgTGVvbmFyZG8gZGEgVmluY2kgOAotCQkJCVBpb3ZlIGRpIFNhY2NvIFouSS4gVG9nbmFuYSAzNTAyMAotCQkJCUlUQUxZCi0KLTAwLTA4LTc4ICAgKGhleCkJCUJlbmNobWFyayBTdG9yYWdlIElubm92YXRpb25zCi0wMDA4NzggICAgIChiYXNlIDE2KQkJQmVuY2htYXJrIFN0b3JhZ2UgSW5ub3ZhdGlvbnMKLQkJCQkzMTIyIFN0ZXJsaW5nIENpcmNsZQotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTc5ICAgKGhleCkJCUNFTSBDb3Jwb3JhdGlvbgotMDAwODc5ICAgICAoYmFzZSAxNikJCUNFTSBDb3Jwb3JhdGlvbgotCQkJCVAuTy4gQm94IDIwMAotCQkJCU1hdHRoZXdzIE5DIDI4MTA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC03QSAgIChoZXgpCQlXaXBvdGVjIEdtYkgKLTAwMDg3QSAgICAgKGJhc2UgMTYpCQlXaXBvdGVjIEdtYkgKLQkJCQlBZGFtLUhvZmZtYW4gU3RyLiAyNgotCQkJCUQtNjc2NTcgS2Fpc2Vyc2xhdXRlcm0KLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTdCICAgKGhleCkJCVJUWCBUZWxlY29tIEEvUwotMDAwODdCICAgICAoYmFzZSAxNikJCVJUWCBUZWxlY29tIEEvUwotCQkJCVN0cm9lbW1lbiA2Ci0JCQkJREsgOTQwMCBOb2VycmVzdW5kYnkKLQkJCQlERU5NQVJLCi0KLTAwLTA4LTdDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDg3QyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC03RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDg3RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTdFICAgKGhleCkJCUJvbiBFbGVjdHJvLVRlbGVjb20gSW5jLgotMDAwODdFICAgICAoYmFzZSAxNikJCUJvbiBFbGVjdHJvLVRlbGVjb20gSW5jLgotCQkJCUdheWFuZyAxc3QgRmFjdG9yeSA3MDEsIDE0LTgxCi0JCQkJR2F5YW5nLURvbmcgR2FuZ3NvLUd1Ci0JCQkJU2VvdWwgIDE1Ny04MDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtN0YgICAoaGV4KQkJU1BBVU4gZWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0wMDA4N0YgICAgIChiYXNlIDE2KQkJU1BBVU4gZWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0JCQkJQnlrLUd1bGRlbiAtIFN0ci4gMjIKLQkJCQk3ODIyNCBTaW5nZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTgwICAgKGhleCkJCUJyb2FkVGVsIENhbmFkYSBDb21tdW5pY2F0aW9ucyBpbmMuCi0wMDA4ODAgICAgIChiYXNlIDE2KQkJQnJvYWRUZWwgQ2FuYWRhIENvbW11bmljYXRpb25zIGluYy4KLQkJCQkzNzAwIEdyaWZmaXRoLCBTdWl0ZSAzODkKLQkJCQlTYWludC1MYXVyZW50IFF1ZWJlYyBINFQgMkIzCi0JCQkJQ0FOQURBCi0KLTAwLTA4LTgxICAgKGhleCkJCURJR0lUQUwgSEFORFMgQ08uLExURC4KLTAwMDg4MSAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEhBTkRTIENPLixMVEQuCi0JCQkJVE9XTidTIFNRVUFSRSA1MDMsIEtBS2lZQSBCdWlsZGluZyAyRgotCQkJCTItNy0xNyBTaGlueW9rb2hhbWEgS291aG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMDgtODIgICAoaGV4KQkJU0lHTUEgQ09SUE9SQVRJT04KLTAwMDg4MiAgICAgKGJhc2UgMTYpCQlTSUdNQSBDT1JQT1JBVElPTgotCQkJCTItMy0xNSBJd2F0by1taW5hbWkKLQkJCQlLb21hZS1zaGkgVG9reW8gMjAxLTg2MzAKLQkJCQlKQVBBTgotCi0wMC0wOC04MyAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwODgzICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTA5NTUgVGFudGF1IEF2ZW51ZSwgTWFpbHN0b3AgNDVTTC1HCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC04NCAgIChoZXgpCQlJbmRleCBCcmFpbGxlIEFCCi0wMDA4ODQgICAgIChiYXNlIDE2KQkJSW5kZXggQnJhaWxsZSBBQgotCQkJCUJveCAxNTUKLQkJCQlTLTk1NDIzIEdhbW1lbHN0YWQKLQkJCQlTV0VERU4KLQotMDAtMDgtODUgICAoaGV4KQkJRU1TIERyLiBUaG9tYXMgV3VlbnNjaGUKLTAwMDg4NSAgICAgKGJhc2UgMTYpCQlFTVMgRHIuIFRob21hcyBXdWVuc2NoZQotCQkJCVNvbm5lbmhhbmcgMwotCQkJCUQtODUzMDQgSWxtbXVlbnN0ZXIKLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTg2ICAgKGhleCkJCUhhbnN1bmcgVGVsaWFubiwgSW5jLgotMDAwODg2ICAgICAoYmFzZSAxNikJCUhhbnN1bmcgVGVsaWFubiwgSW5jLgotCQkJCTE5NS0xLCBOZXVuZ3B5dW5nLXJpLCBPcG8tZXViCi0JCQkJS3dhbmdqdS1zaSwgS3lvZ2dpLWRvLCA0NjQtODkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTg3ICAgKGhleCkJCU1hc2NoaW5lbmZhYnJpayBSZWluaGF1c2VuIEdtYkgKLTAwMDg4NyAgICAgKGJhc2UgMTYpCQlNYXNjaGluZW5mYWJyaWsgUmVpbmhhdXNlbiBHbWJICi0JCQkJRmFsa2Vuc3RlaW5zdHIuIDgKLQkJCQlSZWdlbnNidXJnIEJhdmFyaWEgOTMwNTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTg4ICAgKGhleCkJCU9VTExJTSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IEluYywuCi0wMDA4ODggICAgIChiYXNlIDE2KQkJT1VMTElNIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgSW5jLC4KLQkJCQlhLTEwdGggRkwsLiBJVCBWZW50dXJlIFRvd2VyLAotCQkJCTc4IEdhcmFrLURvbmcsIFNvbmdwYS1LdQotCQkJCVNlb3VsICAxMzgtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTg5ICAgKGhleCkJCUVjaG9zdGFyIFRlY2hub2xvZ2llcyBDb3JwCi0wMDA4ODkgICAgIChiYXNlIDE2KQkJRWNob3N0YXIgVGVjaG5vbG9naWVzIENvcnAKLQkJCQk5NCBJbnZlcm5lc3MgQ2lyY2xlCi0JCQkJRW5nbGV3b29kIENPIDgwMTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC04QSAgIChoZXgpCQlNaW5kc0BXb3JrCi0wMDA4OEEgICAgIChiYXNlIDE2KQkJTWluZHNAV29yawotCQkJCTE1NTUwIFJvY2tmaWVsZCBCbHZkLiBTdWl0ZSBDCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC04QiAgIChoZXgpCQlUcm9waWMgTmV0d29ya3MgSW5jLgotMDAwODhCICAgICAoYmFzZSAxNikJCVRyb3BpYyBOZXR3b3JrcyBJbmMuCi0JCQkJMTM1IE1pY2hlYWwgQ293cGxhbmQgRHJpdmUKLQkJCQlPdHRhd2EgT250YXJpbyBLMk0yRTkKLQkJCQlDQU5BREEKLQotMDAtMDgtOEMgICAoaGV4KQkJUXVhbnRhIE5ldHdvcmsgU3lzdGVtcyBJbmMuCi0wMDA4OEMgICAgIChiYXNlIDE2KQkJUXVhbnRhIE5ldHdvcmsgU3lzdGVtcyBJbmMuCi0JCQkJMTMsIDEzRiwgU2VjLiAyLCBQZWktVG91IFJkCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LThEICAgKGhleCkJCVNpZ21hLUxpbmtzIEluYy4KLTAwMDg4RCAgICAgKGJhc2UgMTYpCQlTaWdtYS1MaW5rcyBJbmMuCi0JCQkJNTUwLTEgSGlnYXNoaWFzYWthd2EtY2hvLAotCQkJCUhhY2hpb2ppLXNoaSwKLQkJCQlUb2t5byAgMTkzLTg1NTAKLQkJCQlKQVBBTgotCi0wMC0wOC04RSAgIChoZXgpCQlOaWhvbiBDb21wdXRlciBDby4sIEx0ZC4KLTAwMDg4RSAgICAgKGJhc2UgMTYpCQlOaWhvbiBDb21wdXRlciBDby4sIEx0ZC4KLQkJCQkzNi04IEhpZ2FzaGl0YW1hY2hpCi0JCQkJSGFtYW1hdHN1IFNoaXp1b2thIDQzMC0wOTE1Ci0JCQkJSkFQQU4KLQotMDAtMDgtOEYgICAoaGV4KQkJQURWQU5DRUQgRElHSVRBTCBURUNITk9MT0dZCi0wMDA4OEYgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgRElHSVRBTCBURUNITk9MT0dZCi0JCQkJQURUIEJMREcuLDMtMywgWUFOR0pBRS1ET05HLAotCQkJCVNFT0NITy1HVSwKLQkJCQlTRU9VTCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTkwICAgKGhleCkJCUFWSUxJTktTIFNBCi0wMDA4OTAgICAgIChiYXNlIDE2KQkJQVZJTElOS1MgU0EKLQkJCQlFdGljIENlbnRlciAtIENTIDc3IDcyOQotCQkJCTkgcnVlIGRlcyBDaGFybWlsbGVzCi0JCQkJQ2Vzc29uIFNldmlnbmUgQ2VkZXggRlJBTkNFIDM1NTc3Ci0JCQkJRlJBTkNFCi0KLTAwLTA4LTkxICAgKGhleCkJCUx5YW4gSW5jLgotMDAwODkxICAgICAoYmFzZSAxNikJCUx5YW4gSW5jLgotCQkJCTVGLTEsIE5PLjUxLCBTRUMuMiwgS0VFTFVORyBSRC4KLQkJCQlUQUlQRUkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtOTIgICAoaGV4KQkJRU0gU29sdXRpb25zCi0wMDA4OTIgICAgIChiYXNlIDE2KQkJRU0gU29sdXRpb25zCi0JCQkJMTAxIEh5ZGUgUmQKLQkJCQlZZXJvbmdhIEJyaXNiYW5lLCBRTEQgNDEwNAotCQkJCUFVU1RSQUxJQQotCi0wMC0wOC05MyAgIChoZXgpCQlMRSBJTkZPUk1BVElPTiBDT01NVU5JQ0FUSU9OIElOQy4KLTAwMDg5MyAgICAgKGJhc2UgMTYpCQlMRSBJTkZPUk1BVElPTiBDT01NVU5JQ0FUSU9OIElOQy4KLQkJCQlSbSwgNDUwMSwgREEtRG9uZyBDaHVuZ2FuZyBDaXJjdWxhdGlvbiBDCi0JCQkJMTI1OCBLdXJvIEJvbi1Eb25nLCBLdXJvLUt1LAotCQkJCVNlb3VsICAxNTItNzIxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTk0ICAgKGhleCkJCUlubm9WSVNJT04gTXVsdGltZWRpYSBMdGQuCi0wMDA4OTQgICAgIChiYXNlIDE2KQkJSW5ub1ZJU0lPTiBNdWx0aW1lZGlhIEx0ZC4KLQkJCQlSbSA2MDgsIDYvRiBUaW5zIEVudGVycHJpc2VzIENlbnRyZSwKLQkJCQk3NzcgTGFpIENoaSBLb2sgUm9hZCwKLQkJCQlLb3dsb29uLCAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA4LTk1ICAgKGhleCkJCURJUkMgVGVjaG5vbG9naWUgR21iSCAmIENvLktHCi0wMDA4OTUgICAgIChiYXNlIDE2KQkJRElSQyBUZWNobm9sb2dpZSBHbWJIICYgQ28uS0cKLQkJCQlCb3JzaWdzdHIuIDEzCi0JCQkJUmF0aW5nZW4gTlJXIDQwODgwCi0JCQkJR0VSTUFOWQotCi0wMC0wOC05NiAgIChoZXgpCQlQcmludHJvbml4LCBJbmMuCi0wMDA4OTYgICAgIChiYXNlIDE2KQkJUHJpbnRyb25peCwgSW5jLgotCQkJCTE0NjAwIE15Zm9yZCBSZC4KLQkJCQlQLk8uIEJveCAxOTU1OQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjIzLTk1NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTk3ICAgKGhleCkJCVF1YWtlIFRlY2hub2xvZ2llcwotMDAwODk3ICAgICAoYmFzZSAxNikJCVF1YWtlIFRlY2hub2xvZ2llcwotCQkJCTI4ODAgWmFua2VyIFJvYWQKLQkJCQlTdWl0ZSAxMDQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtOTggICAoaGV4KQkJR2lnYWJpdCBPcHRpY3MgQ29ycG9yYXRpb24KLTAwMDg5OCAgICAgKGJhc2UgMTYpCQlHaWdhYml0IE9wdGljcyBDb3Jwb3JhdGlvbgotCQkJCTExNTYgQXN0ZXIgQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4Ni02ODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC05OSAgIChoZXgpCQlOZXRiaW5kLCBJbmMuCi0wMDA4OTkgICAgIChiYXNlIDE2KQkJTmV0YmluZCwgSW5jLgotCQkJCTUgTWFyaW5lIFZpZXcgUGxhemEKLQkJCQlIb2Jva2VuIE5KIDA3MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC05QSAgIChoZXgpCQlBbGNhdGVsIE1pY3JvZWxlY3Ryb25pY3MKLTAwMDg5QSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIE1pY3JvZWxlY3Ryb25pY3MKLQkJCQlFeGNlbHNpb3JsYWFuIDQ0LTQ2Ci0JCQkJQi0xOTMwIFphdmFudGVtICAKLQkJCQlCRUxHSVVNCi0KLTAwLTA4LTlCICAgKGhleCkJCUlDUCBFbGVjdHJvbmljcyBJbmMuCi0wMDA4OUIgICAgIChiYXNlIDE2KQkJSUNQIEVsZWN0cm9uaWNzIEluYy4KLQkJCQk0RiwgTm8uIDIyLCBDaHVuZy1Ic2luZyBSZC4gU2hpLUNoaSBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuLCAyMjEsCi0JCQkJVGFpcGVpICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LTlDICAgKGhleCkJCUVsZWNzIEluZHVzdHJ5IENvLiwgTHRkLgotMDAwODlDICAgICAoYmFzZSAxNikJCUVsZWNzIEluZHVzdHJ5IENvLiwgTHRkLgotCQkJCTEtMjItMjMsU2hpbnNha3UsVGFrYXRzdS1LdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMy0wMDE0Ci0JCQkJSkFQQU4KLQotMDAtMDgtOUQgICAoaGV4KQkJVUhELUVsZWt0cm9uaWsKLTAwMDg5RCAgICAgKGJhc2UgMTYpCQlVSEQtRWxla3Ryb25pawotCQkJCVp1ZXJjaGVyc3RyYXNzZSAxMgotCQkJCUJhZGVuIEFHIDU0MDAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wOC05RSAgIChoZXgpCQlCZWlqaW5nIEVudGVyLU5ldCBjby5MVEQKLTAwMDg5RSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEVudGVyLU5ldCBjby5MVEQKLQkJCQlOTyAxIGNvdXJ0eWFyZCwKLQkJCQlzaHVhbmdxdWFucHUgamlhIDEsY2hhb3lhCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMDgtOUYgICAoaGV4KQkJRUZNIE5ldHdvcmtzCi0wMDA4OUYgICAgIChiYXNlIDE2KQkJRUZNIE5ldHdvcmtzCi0JCQkJNDAzLCA0dGggZmxvb3IgRWxlZ2FuY2UgMSBCbGRnLgotCQkJCTI1LTIgR3VtaS1kb25nIFB1bmRhbmctZ3UKLQkJCQlTdW5nbmFtLXNpIEt5dW5nZ2ktZG8gNDYzLTgwOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1BMCAgIChoZXgpCQlTdG90eiBGZWlubWVzc3RlY2huaWsgR21iSAotMDAwOEEwICAgICAoYmFzZSAxNikJCVN0b3R6IEZlaW5tZXNzdGVjaG5payBHbWJICi0JCQkJSGVybWFubi1EcmVoZXIgU3RyLiA2Ci0JCQkJR2VybGluZ2VuICA3MDgzOQotCQkJCUdFUk1BTlkKLQotMDAtMDgtQTEgICAoaGV4KQkJQ05ldCBUZWNobm9sb2d5IEluYy4KLTAwMDhBMSAgICAgKGJhc2UgMTYpCQlDTmV0IFRlY2hub2xvZ3kgSW5jLgotCQkJCU5vLjE1LCBQYXJrIEF2ZW51ZSBJSSwgU2NpZW5jZS1CYXNlZCBJbmQKLQkJCQlIc2luLUNodSBDaXR5LAotCQkJCUhzaW4tQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LUEyICAgKGhleCkJCUFESSBFbmdpbmVlcmluZywgSW5jLgotMDAwOEEyICAgICAoYmFzZSAxNikJCUFESSBFbmdpbmVlcmluZywgSW5jLgotCQkJCTE3NjlBIFdvcnRoIFBhcmsKLQkJCQlDaGFybG90dGVzdmlsbGUgVkEgMjI5MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUEzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDhBMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1BNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA4QTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQTUgICAoaGV4KQkJUGVuaW5zdWxhIFN5c3RlbXMgSW5jLgotMDAwOEE1ICAgICAoYmFzZSAxNikJCVBlbmluc3VsYSBTeXN0ZW1zIEluYy4KLQkJCQk2OTAyIFZlcmRlIFJpZGdlIFJkLgotCQkJCVJhbmNobyBQYWxvcyBWZXJkZXMgQ0EgOTAyNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUE2ICAgKGhleCkJCU11bHRpd2FyZSAmIEltYWdlIENvLiwgTHRkLgotMDAwOEE2ICAgICAoYmFzZSAxNikJCU11bHRpd2FyZSAmIEltYWdlIENvLiwgTHRkLgotCQkJCVNhZWRvbmcgQmxkZy4gNjUtMjUsCi0JCQkJMmthLCBOYW1oYW5nLCBZb3VuZ2RvCi0JCQkJUHVzYW4gIDYwNi0wMzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtQTcgICAoaGV4KQkJaUxvZ2ljIEluYy4KLTAwMDhBNyAgICAgKGJhc2UgMTYpCQlpTG9naWMgSW5jLgotCQkJCVJtIzMxOCwgVGVjaG5vQ29tcGxleCBCbGRnLiwgMTI2LTE2LCA1LWcKLQkJCQlTZW91bCAgMTM2LTcwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1BOCAgIChoZXgpCQlTeXN0ZWMgQ28uLCBMdGQuCi0wMDA4QTggICAgIChiYXNlIDE2KQkJU3lzdGVjIENvLiwgTHRkLgotCQkJCTE5IE5vY2hpZG9yaSwgTmF3YQotCQkJCVRva2FpIEFpY2hpIDQ3Ni0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMDgtQTkgICAoaGV4KQkJU2FuZ1NhbmcgVGVjaG5vbG9neSwgSW5jLgotMDAwOEE5ICAgICAoYmFzZSAxNikJCVNhbmdTYW5nIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk2NC04LCBOb2dvay1yaSwgRG9jaGVvay1teXVuLAotCQkJCUd3YW5nanUgS3lvbmdnaS1kbyA0NjQtODgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUFBICAgKGhleCkJCUtBUkFNCi0wMDA4QUEgICAgIChiYXNlIDE2KQkJS0FSQU0KLQkJCQk5OC0zLCAgSGFua2FuZ3JvIDItS0EsIFlvbmdzYW4KLQkJCQlTZW91bCAgMTQwLTAxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1BQiAgIChoZXgpCQlFbmVyTGlueC5jb20sIEluYy4KLTAwMDhBQiAgICAgKGJhc2UgMTYpCQlFbmVyTGlueC5jb20sIEluYy4KLQkJCQkzOTY1IFNvdXRoIFdvb2RoaWxsIExhbmUKLQkJCQlOZXcgQmVybGluIFdJIDUzMTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1BQyAgIChoZXgpCQlFbHRyb21hdCBHbWJICi0wMDA4QUMgICAgIChiYXNlIDE2KQkJRWx0cm9tYXQgR21iSAotCQkJCUhlcmZvcmRlciBTdHIuIDI0OS0yNTEKLQkJCQlMZW9wb2xkc2hvaGUgTm9yZHJoZWluLVdlc3RmYWxlbiAzMzgxOAotCQkJCUdFUk1BTlkKLQotMDAtMDgtQUQgICAoaGV4KQkJVG95by1MaW54IENvLiwgTHRkLgotMDAwOEFEICAgICAoYmFzZSAxNikJCVRveW8tTGlueCBDby4sIEx0ZC4KLQkJCQlIaXJha2F3YS1DaG8sIENoaXlhZGEta3UsCi0JCQkJVG9reW8gIDEwMi0wMDkzCi0JCQkJSkFQQU4KLQotMDAtMDgtQUUgICAoaGV4KQkJUGFja2V0RnJvbnQgSW50ZXJuYXRpb25hbCBBQgotMDAwOEFFICAgICAoYmFzZSAxNikJCVBhY2tldEZyb250IEludGVybmF0aW9uYWwgQUIKLQkJCQlCb3ggMTIxNwotCQkJCUtpc3RhICAxNjQyOAotCQkJCVNXRURFTgotCi0wMC0wOC1BRiAgIChoZXgpCQlOb3ZhdGVjIENvcnBvcmF0aW9uCi0wMDA4QUYgICAgIChiYXNlIDE2KQkJTm92YXRlYyBDb3Jwb3JhdGlvbgotCQkJCTItMTktMiBOaXNoaS1Hb3RhbmRhCi0JCQkJU2hpbmFnYXdhLWt1IFRva3lvIDE0MS0wMDMxCi0JCQkJSkFQQU4KLQotMDAtMDgtQjAgICAoaGV4KQkJQkt0ZWwgY29tbXVuaWNhdGlvbnMgR21iSAotMDAwOEIwICAgICAoYmFzZSAxNikJCUJLdGVsIGNvbW11bmljYXRpb25zIEdtYkgKLQkJCQlCZW56c3RyYXNzZSA0Ci0JCQkJNDE4MzYgSHVlY2tlbGhvdmVuLUJhYWwgTlJXIDQxODM2Ci0JCQkJR0VSTUFOWQotCi0wMC0wOC1CMSAgIChoZXgpCQlQcm9RdWVudCBTeXN0ZW1zCi0wMDA4QjEgICAgIChiYXNlIDE2KQkJUHJvUXVlbnQgU3lzdGVtcwotCQkJCTY3IEZvcmVzdCBTdHJlZXQKLQkJCQlNYXJsYm9ybyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQjIgICAoaGV4KQkJU0hFTlpIRU4gQ09NUEFTUyBURUNITk9MT0dZIERFVkVMT1BNRU5UIENPLixMVEQKLTAwMDhCMiAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBDT01QQVNTIFRFQ0hOT0xPR1kgREVWRUxPUE1FTlQgQ08uLExURAotCQkJCTR0aCBGbG9vcixCdWlsZGluZyAyMDUsVGFpUmFuIEluZHVzdHJ5Ci0JCQkJJlRyYWRlIFBhcmssRnV0aWFuIERpc3RyaWN0LFNoZW56aGVuCi0JCQkJU2hlbnpoZW4gR1VBTkdET05HIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTA4LUIzICAgKGhleCkJCUZhc3R3ZWwKLTAwMDhCMyAgICAgKGJhc2UgMTYpCQlGYXN0d2VsCi0JCQkJUHJvZnNveXV6bmF5YSAxMDgsCi0JCQkJTW9zY293ICAxMTczMTMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMDgtQjQgICAoaGV4KQkJU1lTUE9MCi0wMDA4QjQgICAgIChiYXNlIDE2KQkJU1lTUE9MCi0JCQkJNHRoIEZsLFNZU1BPTCBCL0QsIEJhbmdiYWUgNCBEb25nLCBTZW9jaAotCQkJCVNlb3VsICAxMzctMDY0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUI1ICAgKGhleCkJCVRBSSBHVUVOIEVOVEVSUFJJU0UgQ08uLCBMVEQKLTAwMDhCNSAgICAgKGJhc2UgMTYpCQlUQUkgR1VFTiBFTlRFUlBSSVNFIENPLiwgTFRECi0JCQkJTjAuNDAwLCAxMEYtNyBIVUFOUEVJIFJELiwKLQkJCQlDSFVORyBMSSBDSVRZIFRXLCBST0MuCi0JCQkJQ0hVTkcgTEkgIDMyMC02MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtQjYgICAoaGV4KQkJUm91dGVGcmVlLCBJbmMuCi0wMDA4QjYgICAgIChiYXNlIDE2KQkJUm91dGVGcmVlLCBJbmMuCi0JCQkJMzQwMCBIaWxsdmlldyBBdmUuIEJsZGcuIDUKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUI3ICAgKGhleCkJCUhJVCBJbmNvcnBvcmF0ZWQKLTAwMDhCNyAgICAgKGJhc2UgMTYpCQlISVQgSW5jb3Jwb3JhdGVkCi0JCQkJNEYsIDgsIExhbmUgMjM1LCBQYW8tQ2hpYW8gUm9hZCwKLQkJCQlTaGluIFRpZW4gVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtQjggICAoaGV4KQkJRS5GLiBKb2huc29uCi0wMDA4QjggICAgIChiYXNlIDE2KQkJRS5GLiBKb2huc29uCi0JCQkJMjk5IEpvaG5zb24gQXZlLgotCQkJCVAuTy4gQm94IDEyNDkKLQkJCQlXYXNlY2EgTU4gNTYwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUI5ICAgKGhleCkJCUtBT04gTUVESUEgQ28uLCBMdGQuCi0wMDA4QjkgICAgIChiYXNlIDE2KQkJS0FPTiBNRURJQSBDby4sIEx0ZC4KLQkJCQkjMTEzIEltYWUgMS1Eb25nLCBCdW5kYW5nLUd1Ci0JCQkJU3VuZ25hbS1DaXR5IEt5dW5na2ktRG8gNDYzLTgyOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1CQSAgIChoZXgpCQlFcnNraW5lIFN5c3RlbXMgTHRkCi0wMDA4QkEgICAgIChiYXNlIDE2KQkJRXJza2luZSBTeXN0ZW1zIEx0ZAotCQkJCVNhbHRlciBSb2FkCi0JCQkJRWFzdGZpZWxkIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJU2NhcmJvcm91Z2ggTm9ydGggWW9ya3NoaXJlIFlPMTEgM0RVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtQkIgICAoaGV4KQkJTmV0RXhjZWxsCi0wMDA4QkIgICAgIChiYXNlIDE2KQkJTmV0RXhjZWxsCi0JCQkJMTUzNzUgQmFycmFuY2EgUGt3eSwgI0UtMTA2Ci0JCQkJSXJ2aW5lIENBIDkyNjc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1CQyAgIChoZXgpCQlJbGV2byBBQgotMDAwOEJDICAgICAoYmFzZSAxNikJCUlsZXZvIEFCCi0JCQkJQm94IDE1NjEKLQkJCQlLYXJsc3RhZCBWYXJtbGFuZCBTLTY1MSAyMQotCQkJCVNXRURFTgotCi0wMC0wOC1CRCAgIChoZXgpCQlURVBHLVVTCi0wMDA4QkQgICAgIChiYXNlIDE2KQkJVEVQRy1VUwotCQkJCTEwMCBTaW1wbGV4IERyaXZlCi0JCQkJV2VzdG1pbnN0ZXIgTUEgMDE0NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUJFICAgKGhleCkJCVhFTlBBSyBNU0EgR3JvdXAKLTAwMDhCRSAgICAgKGJhc2UgMTYpCQlYRU5QQUsgTVNBIEdyb3VwCi0JCQkJQ2FyZSBvZjogQWdpbGVudCBUZWNobm9sb2dpZXMKLQkJCQlXaGl0ZSBIb3VzZSBSb2FkCi0JCQkJSXBzd2ljaCBTdWZmb2xrIElwMSA1UEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wOC1CRiAgIChoZXgpCQlBcHR1cyBFbGVrdHJvbmlrIEFCCi0wMDA4QkYgICAgIChiYXNlIDE2KQkJQXB0dXMgRWxla3Ryb25payBBQgotCQkJCUZPIFBldGVyc29ucyBHIDYKLQkJCQk0MjEgMzEgVi4gRnJvbHVuZGEKLQkJCQlTV0VERU4KLQotMDAtMDgtQzAgICAoaGV4KQkJQVNBIFNZU1RFTVMKLTAwMDhDMCAgICAgKGJhc2UgMTYpCQlBU0EgU1lTVEVNUwotCQkJCVMyNDUgS29yZWEgTWFyaXRpbWUgVW5pdmVyc2l0eSwgMSBEb25nc2EKLQkJCQlCdXNhbiBCdXNhbiBNZXRyb3BvbGl0YW4gQ2l0eSA2MDYtNzkxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUMxICAgKGhleCkJCUF2aXN0YXIgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMDhDMSAgICAgKGJhc2UgMTYpCQlBdmlzdGFyIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJMTU4NTEgRGFsbGFzIFBrd3kuCi0JCQkJU3VpdGUgNjAwCi0JCQkJQWRkaXNvbiBUWCA3NTAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQzIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOEMyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1DMyAgIChoZXgpCQlDb250ZXggQS9TCi0wMDA4QzMgICAgIChiYXNlIDE2KQkJQ29udGV4IEEvUwotCQkJCVN2YW5ldmFuZyAyCi0JCQkJQWxsZXJvZCBESyAzNDUwCi0JCQkJREVOTUFSSwotCi0wMC0wOC1DNCAgIChoZXgpCQlIaWthcmkgQ28uLEx0ZC4KLTAwMDhDNCAgICAgKGJhc2UgMTYpCQlIaWthcmkgQ28uLEx0ZC4KLQkJCQk0MTgtNCBNaW5hbWlub2RhIENoaWdlbm9idS1jaG8KLQkJCQlPbnNlbi1ndW4gRWhpbWUgNzkxLTAyOTcKLQkJCQlKQVBBTgotCi0wMC0wOC1DNSAgIChoZXgpCQlMaW9udGVjaCBDby4sIEx0ZC4KLTAwMDhDNSAgICAgKGJhc2UgMTYpCQlMaW9udGVjaCBDby4sIEx0ZC4KLQkJCQkzMDYsIFdvb3lvdW5nIFRlY2hubyBDZW50ZXIsIDI3My0xNSwKLQkJCQlTdW5nc3UyZ2EtM2RvbmcsIFN1bmdkb25nLWt1LAotCQkJCVNlb3VsICAxMzMtODMxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUM2ICAgKGhleCkJCVBoaWxpcHMgQ29uc3VtZXIgQ29tbXVuaWNhdGlvbnMKLTAwMDhDNiAgICAgKGJhc2UgMTYpCQlQaGlsaXBzIENvbnN1bWVyIENvbW11bmljYXRpb25zCi0JCQkJUm91dGUgZCdBbmdlcnMKLQkJCQk3MjA4MSBMZSBNYW5zCi0JCQkJQ2VkZXggOSAgCi0JCQkJRlJBTkNFCi0KLTAwLTA4LUM3ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAwOEM3ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQzggICAoaGV4KQkJU29uZXRpY29tLCBJbmMuCi0wMDA4QzggICAgIChiYXNlIDE2KQkJU29uZXRpY29tLCBJbmMuCi0JCQkJNDMyNSBXb29kbGFuZCBQYXJrIERyaXZlLCBTdWl0ZSAxMDIKLQkJCQlXZXN0IE1lbGJvdXJuZSBGbG9yaWRhIDMyOTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1DOSAgIChoZXgpCQlUZWNobmlTYXQgRGlnaXRhbCBHbWJICi0wMDA4QzkgICAgIChiYXNlIDE2KQkJVGVjaG5pU2F0IERpZ2l0YWwgR21iSAotCQkJCUdld2VyYmVwYXJrIE1lcmJpdHogTnIuIDUKLQkJCQlEcmVzZGVuIFNheG9ueSAwMTE1NgotCQkJCUdFUk1BTlkKLQotMDAtMDgtQ0EgICAoaGV4KQkJVHdpbkhhbiBUZWNobm9sb2d5IENvLixMdGQKLTAwMDhDQSAgICAgKGJhc2UgMTYpCQlUd2luSGFuIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTEzRi02LE5vIDc5LFNlYyAxLEhzaW4gVGFpIFd1IFJELixIc2ktQ2gKLQkJCQlUYWlwZWkgSHNpZW4gIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtQ0IgICAoaGV4KQkJWmV0YSBCcm9hZGJhbmQgSW5jLgotMDAwOENCICAgICAoYmFzZSAxNikJCVpldGEgQnJvYWRiYW5kIEluYy4KLQkJCQk2NjAgVmlzdGEgV2F5LCBTdWl0ZSBCCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUNDICAgKGhleCkJCVJlbW90ZWMsIEluYy4KLTAwMDhDQyAgICAgKGJhc2UgMTYpCQlSZW1vdGVjLCBJbmMuCi0JCQkJMTE0IFVuaW9uIFZhbGxleSBSb2FkCi0JCQkJT2FrIFJpZGdlIFROIDM3ODMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1DRCAgIChoZXgpCQlXaXRoLU5ldCBJbmMKLTAwMDhDRCAgICAgKGJhc2UgMTYpCQlXaXRoLU5ldCBJbmMKLQkJCQk0RkwgQiZCIEIvRCAxNDAzLTQKLQkJCQlLd2FuZ3lhbmcxLWRvbmcgRG9uZ2FuLWt1Ci0JCQkJQW55YW5nIEt5b25nZ2kgNDMxLTA2MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1DRSAgIChoZXgpCQlJUE1vYmlsZU5ldCBJbmMuCi0wMDA4Q0UgICAgIChiYXNlIDE2KQkJSVBNb2JpbGVOZXQgSW5jLgotCQkJCTExOTA5IEUgVGVsZWdyYXBoIFJkLgotCQkJCVNhbnRhIEZlIFNwcmluZ3MgQ0EgOTA2NzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUNGICAgKGhleCkJCU5pcHBvbiBLb2VpIFBvd2VyIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDA4Q0YgICAgIChiYXNlIDE2KQkJTmlwcG9uIEtvZWkgUG93ZXIgU3lzdGVtcyBDby4sIEx0ZC4KLQkJCQkyOTQwIFNoaW55b3NoaWRhLWNobwotCQkJCUtvaG9rdS1rdSBZb2tvaGFtYSAyMjMtODUwNgotCQkJCUpBUEFOCi0KLTAwLTA4LUQwICAgKGhleCkJCU11c2FzaGkgRW5naW5lZXJpbmcgQ28uLCBMVEQuCi0wMDA4RDAgICAgIChiYXNlIDE2KQkJTXVzYXNoaSBFbmdpbmVlcmluZyBDby4sIExURC4KLQkJCQkzLTExLTcsIE5pc2hpLXNoaW1iYXNoaQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDUtMDAwMwotCQkJCUpBUEFOCi0KLTAwLTA4LUQxICAgKGhleCkJCUtBUkVMIElOQy4KLTAwMDhEMSAgICAgKGJhc2UgMTYpCQlLQVJFTCBJTkMuCi0JCQkJT1JHQU5JWkUgU0FOQVlJIEJPTEdFU0kKLQkJCQlHQVpORUxJTEVSIENBRCBOTzoxMCAgU0lOQ0FOCi0JCQkJQU5LQVJBICAwNjkzNQotCQkJCVRVUktFWQotCi0wMC0wOC1EMiAgIChoZXgpCQlaT09NIE5ldHdvcmtzIEluYy4KLTAwMDhEMiAgICAgKGJhc2UgMTYpCQlaT09NIE5ldHdvcmtzIEluYy4KLQkJCQkxM0YsWGluTHVEYW8gQnVpbGRpbmcsTm8uMTE3NSxOYW5zaGFuIFJvCi0JCQkJU2hlbiBaaGVuIEd1YW5nRG9uZyBQcm92aW5jZSA1MTgwNTIKLQkJCQlDSElOQQotCi0wMC0wOC1EMyAgIChoZXgpCQlIZXJjdWxlcyBUZWNobm9sb2dpZXMgUy5BLgotMDAwOEQzICAgICAoYmFzZSAxNikJCUhlcmN1bGVzIFRlY2hub2xvZ2llcyBTLkEuCi0JCQkJUGxhY2UgZGUgbCdldG9pbGUKLQkJCQlDYXJlbnRvaXIgQnJldGFnbmUgNTY5MTAKLQkJCQlGUkFOQ0UKLQotMDAtMDgtRDQgICAoaGV4KQkJSW5lb1F1ZXN0IFRlY2hub2xvZ2llcywgSW5jCi0wMDA4RDQgICAgIChiYXNlIDE2KQkJSW5lb1F1ZXN0IFRlY2hub2xvZ2llcywgSW5jCi0JCQkJMTkzMSBXYXNoaW5ndG9uIFN0Ci0JCQkJQ2FudG9uIE1hc3NhY2h1c2V0dHMgMDIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUQ1ICAgKGhleCkJCVZhbmd1YXJkIE5ldHdvcmtzIFNvbHV0aW9ucywgTExDCi0wMDA4RDUgICAgIChiYXNlIDE2KQkJVmFuZ3VhcmQgTmV0d29ya3MgU29sdXRpb25zLCBMTEMKLQkJCQkyNSBGb3JiZXMgQm91bGV2YXJkCi0JCQkJRm94Ym9ybyBNQSAwMjAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRDYgICAoaGV4KQkJSEFTU05FVCBJbmMuCi0wMDA4RDYgICAgIChiYXNlIDE2KQkJSEFTU05FVCBJbmMuCi0JCQkJMkYgTWlzc3kyMDAwIEIvRCA3MjUsIFNvb1Nlby1Eb25nLAotCQkJCUthbmduYW0tS3UKLQkJCQlTZW91bCAgMTM1LTc1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1ENyAgIChoZXgpCQlIT1cgQ09SUE9SQVRJT04KLTAwMDhENyAgICAgKGJhc2UgMTYpCQlIT1cgQ09SUE9SQVRJT04KLQkJCQkxLTExLTE3IENoaXlvZGEKLQkJCQlTYWdhbWloYXJhIEthbmFnYXdhIDIyOS0wMDM3Ci0JCQkJSkFQQU4KLQotMDAtMDgtRDggICAoaGV4KQkJRG93a2V5IE1pY3Jvd2F2ZQotMDAwOEQ4ICAgICAoYmFzZSAxNikJCURvd2tleSBNaWNyb3dhdmUKLQkJCQk0ODIyIE1jR3JhdGggU3RyZWV0Ci0JCQkJVmVudHVyYSBDYSA5MzAwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRDkgICAoaGV4KQkJTWl0YWRlbnNoaSBDby4sTFRECi0wMDA4RDkgICAgIChiYXNlIDE2KQkJTWl0YWRlbnNoaSBDby4sTFRECi0JCQkJMS04LTYgRnVydWljaGkgQXNhbWluYW1pa3UKLQkJCQlIaXJvc2hpbWEgIDczMS0wMTIzCi0JCQkJSkFQQU4KLQotMDAtMDgtREEgICAoaGV4KQkJU29mYVdhcmUgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMDhEQSAgICAgKGJhc2UgMTYpCQlTb2ZhV2FyZSBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTMgSGlsYXpvbiBTdC4KLQkJCQlSYW1hdC1HYW4gIDUyNTIyCi0JCQkJSVNSQUVMCi0KLTAwLTA4LURCICAgKGhleCkJCUNvcnJpZ2VudCBTeXN0ZW1zCi0wMDA4REIgICAgIChiYXNlIDE2KQkJQ29ycmlnZW50IFN5c3RlbXMKLQkJCQkxMjYgWWlnYWwgQWxvbgotCQkJCVRlbCBBdml2ICA2NzQ0MwotCQkJCUlTUkFFTAotCi0wMC0wOC1EQyAgIChoZXgpCQlXaXpuZXQKLTAwMDhEQyAgICAgKGJhc2UgMTYpCQlXaXpuZXQKLQkJCQk1RiBTaW1tdGVjaCBibGRnLiwgMjI4LTMsCi0JCQkJTm9ueWh1biwgS2FuZ25hbQotCQkJCVNlb3VsICAxMzUtODMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUREICAgKGhleCkJCVRlbGVuYSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwOEREICAgICAoYmFzZSAxNikJCVRlbGVuYSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTY3MjUgTWVzYSBSaWRnZSBSb2FkCi0JCQkJU3VpdGUgMjI2Ci0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1ERSAgIChoZXgpCQkzVVAgU3lzdGVtcwotMDAwOERFICAgICAoYmFzZSAxNikJCTNVUCBTeXN0ZW1zCi0JCQkJNiBSZXN1bHRzIFdheQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtREYgICAoaGV4KQkJQWxpc3RlbCBJbmMuCi0wMDA4REYgICAgIChiYXNlIDE2KQkJQWxpc3RlbCBJbmMuCi0JCQkJTWlkb3JpIEJsZGcuIDJGCi0JCQkJMS01LTIwIE5ha2FnYXdhLCBUc3V6dWtpLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTAwMDEKLQkJCQlKQVBBTgotCi0wMC0wOC1FMCAgIChoZXgpCQlBVE8gVGVjaG5vbG9neSBMdGQuCi0wMDA4RTAgICAgIChiYXNlIDE2KQkJQVRPIFRlY2hub2xvZ3kgTHRkLgotCQkJCVJtLiAxMzE0LTEzNDYsIEJsb2NrIEIxLCBZYXUgVG9uZyBJbmQuIEMKLQkJCQlZYXUgVG9uZywgS293bG9vbiwKLQkJCQlIb25nIEtvbmcgIAotCQkJCUhPTkcgS09ORwotCi0wMC0wOC1FMSAgIChoZXgpCQlCYXJpeCBBRwotMDAwOEUxICAgICAoYmFzZSAxNikJCUJhcml4IEFHCi0JCQkJV2llc2Vuc3RyLiAxNwotCQkJCVp1ZXJpY2ggWkggODAwOAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA4LUUyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDhFMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otQmxkIE0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1FMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA4RTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLUJsZCBNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRTQgICAoaGV4KQkJRW52ZW5lcmd5IEluYwotMDAwOEU0ICAgICAoYmFzZSAxNikJCUVudmVuZXJneSBJbmMKLQkJCQk2MzA3IENhcnBpbnRlcmlhIEF2ZQotCQkJCUNhcnBpbnRlcmlhIENBIDkzMDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1FNSAgIChoZXgpCQlJREsgQ29ycG9yYXRpb24KLTAwMDhFNSAgICAgKGJhc2UgMTYpCQlJREsgQ29ycG9yYXRpb24KLQkJCQk2LTctMTAKLQkJCQlDaHVvLVJpbmthbgotCQkJCVlhbWF0byBLYW5hZ2F3YSAyNDItMDAwNwotCQkJCUpBUEFOCi0KLTAwLTA4LUU2ICAgKGhleCkJCUxpdHRsZWZlZXQKLTAwMDhFNiAgICAgKGJhc2UgMTYpCQlMaXR0bGVmZWV0Ci0JCQkJMTMwMDAgR3JlZ2cgU3RyZWV0Ci0JCQkJUG93YXkgQ2FsaWZvcm5pYSA5MjA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRTcgICAoaGV4KQkJU0hJIENvbnRyb2xTeXN0ZW1zLEx0ZC4KLTAwMDhFNyAgICAgKGJhc2UgMTYpCQlTSEkgQ29udHJvbFN5c3RlbXMsTHRkLgotCQkJCTE5LE5hdHVzaW1hCi0JCQkJWW9rb3N1a2EgS2FuYWdhd2EgMjM3LTg1NTUKLQkJCQlKQVBBTgotCi0wMC0wOC1FOCAgIChoZXgpCQlFeGNlbCBNYXN0ZXIgTHRkLgotMDAwOEU4ICAgICAoYmFzZSAxNikJCUV4Y2VsIE1hc3RlciBMdGQuCi0JCQkJUm9vbSBELCAzL0YuLCBZZXVuZyBZaXUgQ2h1bmcgKE5vLiA4KSBJbmQuIEJsZGcuCi0JCQkJMjAgV2FuZyBIb2kgUm9hZAotCQkJCUtvd2xvb24gQmF5IAotCQkJCUhPTkcgS09ORwotCi0wMC0wOC1FOSAgIChoZXgpCQlOZXh0R2lnCi0wMDA4RTkgICAgIChiYXNlIDE2KQkJTmV4dEdpZwotCQkJCTk4MjAtQiBUb3duZSBDZW50cmUgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUVBICAgKGhleCkJCU1vdGlvbiBDb250cm9sIEVuZ2luZWVyaW5nLCBJbmMKLTAwMDhFQSAgICAgKGJhc2UgMTYpCQlNb3Rpb24gQ29udHJvbCBFbmdpbmVlcmluZywgSW5jCi0JCQkJMTEzODAgV2hpdGUgUm9jayBSb2FkCi0JCQkJUmFuY2hvIENvcmRvdmEgQ0EgOTU3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUVCICAgKGhleCkJCVJPTVdpbiBDby4sTHRkLgotMDAwOEVCICAgICAoYmFzZSAxNikJCVJPTVdpbiBDby4sTHRkLgotCQkJCTQwNiBPbWl5YU9odGFrYSBCbGRnLiAxLTEwMwotCQkJCUtpc2hpa2ktY2hvCi0JCQkJU2FpdGFtYSAgMzMwLTA4NDMKLQkJCQlKQVBBTgotCi0wMC0wOC1FQyAgIChoZXgpCQlPcHRpY2FsIFpvbnUgQ29ycG9yYXRpb24KLTAwMDhFQyAgICAgKGJhc2UgMTYpCQlPcHRpY2FsIFpvbnUgQ29ycG9yYXRpb24KLQkJCQkxNTAyOCBEZWxhbm8gU3RyZWV0Ci0JCQkJVmFuIE51eXMgQ0EgOTE0MTEtMjAxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRUQgICAoaGV4KQkJU1QmVCBJbnN0cnVtZW50IENvcnAuCi0wMDA4RUQgICAgIChiYXNlIDE2KQkJU1QmVCBJbnN0cnVtZW50IENvcnAuCi0JCQkJMTYgU2hpbmctR29uZyBSb2FkLCBZdW5nLUt1bmcgSW5kdXN0cmlhbAotCQkJCVl1bmctS3VuZyBUYWluYW4gNzEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOC1FRSAgIChoZXgpCQlMb2dpYyBQcm9kdWN0IERldmVsb3BtZW50Ci0wMDA4RUUgICAgIChiYXNlIDE2KQkJTG9naWMgUHJvZHVjdCBEZXZlbG9wbWVudAotCQkJCTQxMSBXYXNoaW5ndG9uIEF2ZSBOLiBTdWl0ZSAxMDEKLQkJCQlNaW5uZWFwb2xpcyBNaW5uZXNvdGEgNTU0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUVGICAgKGhleCkJCURJQkFMLFMuQS4KLTAwMDhFRiAgICAgKGJhc2UgMTYpCQlESUJBTCxTLkEuCi0JCQkJQXN0aW50emUgS2FsZWEgMjQKLQkJCQlEZXJpbyBWaXpjYXlhIDQ4MTYwCi0JCQkJU1BBSU4KLQotMDAtMDgtRjAgICAoaGV4KQkJTmV4dCBHZW5lcmF0aW9uIFN5c3RlbXMsIEluYy4KLTAwMDhGMCAgICAgKGJhc2UgMTYpCQlOZXh0IEdlbmVyYXRpb24gU3lzdGVtcywgSW5jLgotCQkJCVBPIEJPWCAzMTIwNQotCQkJCURheXRvbiBPSCA0NTQzNy0wMjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1GMSAgIChoZXgpCQlWb2x0YWlyZQotMDAwOEYxICAgICAoYmFzZSAxNikJCVZvbHRhaXJlCi0JCQkJOSBIYW1lbm9maW0gc3QuCi0JCQkJSGVyemVsaWEgIDQ2NzI1Ci0JCQkJSVNSQUVMCi0KLTAwLTA4LUYyICAgKGhleCkJCUMmUyBUZWNobm9sb2d5Ci0wMDA4RjIgICAgIChiYXNlIDE2KQkJQyZTIFRlY2hub2xvZ3kKLQkJCQlDJlMgVmVudHVyZSBCbGRnLiwgTm9uSHl1bi1Eb25nLAotCQkJCTIyMS0xLCBHYW5nTmFtLUd1Ci0JCQkJU0VPVUwgIDEzNS04MjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtRjMgICAoaGV4KQkJV0FOWQotMDAwOEYzICAgICAoYmFzZSAxNikJCVdBTlkKLQkJCQlDRUVJIENhcCBBbHBoYQotCQkJCUF2ZW51ZSBkZSBsJ0V1cm9wZSwgQ2xhcGllcnMKLQkJCQlNb250cGVsbGllciBIZXJhdWx0IDM0OTQwCi0JCQkJRlJBTkNFCi0KLTAwLTA4LUY0ICAgKGhleCkJCUJsdWV0YWtlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA4RjQgICAgIChiYXNlIDE2KQkJQmx1ZXRha2UgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk2RiwgTm8uIDMzLCBMYW5lIDE1NSwgU2VjLiAzLCBQZWkgU2hlbiBSCi0JCQkJU2FlbiBLZW5nIFNoaWFuZywgVGFpcGVpCi0JCQkJVGFpcGVpIFRhaXdhbiAyMjIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LUY1ICAgKGhleCkJCVlFU1RFQ0hOT0xPR1kgQ28uLEx0ZC4KLTAwMDhGNSAgICAgKGJhc2UgMTYpCQlZRVNURUNITk9MT0dZIENvLixMdGQuCi0JCQkJNHRoIEZMIEt5dW5nLUFtIEIvRCAxNTctMjcgU2Ftc3VuZy1Eb25nLAotCQkJCVNlb3VsIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtRjYgICAoaGV4KQkJU3VtaXRvbW8gRWxlY3RyaWMgU3lzdGVtIFNvbHV0aW9ucyBDby4sTHRkLgotMDAwOEY2ICAgICAoYmFzZSAxNikJCVN1bWl0b21vIEVsZWN0cmljIFN5c3RlbSBTb2x1dGlvbnMgQ28uLEx0ZC4KLQkJCQlzaGltYXlhIDEtMS0zLCBrb25vaGFuYS1rdQotCQkJCU9zYWthIGNpdHkgT1NBS0EgMTEyLTAwMTQKLQkJCQlKQVBBTgotCi0wMC0wOC1GNyAgIChoZXgpCQlIaXRhY2hpIEx0ZCwgU2VtaWNvbmR1Y3RvciAmYW1wOyBJbnRlZ3JhdGVkIENpcmN1aXRzIEdyCi0wMDA4RjcgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBMdGQsIFNlbWljb25kdWN0b3IgJmFtcDsgSW50ZWdyYXRlZCBDaXJjdWl0cyBHcgotCQkJCTIwLTEgSm9zdWlob24tY2hvdSA1Y2hvbWUKLQkJCQlLb2RhaXJhLXNoaSBUb2t5byAxODctODU4OAotCQkJCUpBUEFOCi0KLTAwLTA4LUY4ICAgKGhleCkJCUd1YXJkYWxsIEx0ZAotMDAwOEY4ICAgICAoYmFzZSAxNikJCUd1YXJkYWxsIEx0ZAotCQkJCUxvY2hlbmQgSW5kdXN0cmlhbCBFc3RhdGUsCi0JCQkJTmV3YnJpZGdlCi0JCQkJRWRpbmJ1cmdoIFNjb3RsYW5kIEVIMjggOFBMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtRjkgICAoaGV4KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0wMDA4RjkgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0JCQkJMjkwMCBTLiBEaWFibG8gV2F5IFN1aXRlIDE5MAotCQkJCVRlbXBlIEFaIDg1MjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1GQSAgIChoZXgpCQlLYXJsIEUuQnJpbmttYW5uIEdtYkgKLTAwMDhGQSAgICAgKGJhc2UgMTYpCQlLYXJsIEUuQnJpbmttYW5uIEdtYkgKLQkJCQlGb2Vyc3RlcndlZyAzNi0zOAotCQkJCUJhcm50cnVwIE5SVyBELTMyNjgzCi0JCQkJR0VSTUFOWQotCi0wMC0wOC1GQiAgIChoZXgpCQlTb25vU2l0ZSwgSW5jLgotMDAwOEZCICAgICAoYmFzZSAxNikJCVNvbm9TaXRlLCBJbmMuCi0JCQkJMjE5MTkgMzB0aCBEcml2ZSBTRQotCQkJCUJvdGhlbGwgV0EgOTgwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUZDICAgKGhleCkJCUdpZ2FwaG90b24gSW5jLgotMDAwOEZDICAgICAoYmFzZSAxNikJCUdpZ2FwaG90b24gSW5jLgotCQkJCVlPS09LVVJBIFNISU5ERU40MDAKLQkJCQlPWUFNQSBUT1RJR0kgMzIzLTg1NTgKLQkJCQlKQVBBTgotCi0wMC0wOC1GRCAgIChoZXgpCQlCbHVlS29yZWEgQ28uLCBMdGQuCi0wMDA4RkQgICAgIChiYXNlIDE2KQkJQmx1ZUtvcmVhIENvLiwgTHRkLgotCQkJCTNGLCBzZWpvbmcgQnVpbGRpbmcsIDM3OS0xNSwgU2Vva3lvLURvbmcKLQkJCQlNYXBvLUt1LAotCQkJCVNlb3VsICAxMjEtODM5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUZFICAgKGhleCkJCVVOSUsgQyZDIENvLixMdGQuCi0wMDA4RkUgICAgIChiYXNlIDE2KQkJVU5JSyBDJkMgQ28uLEx0ZC4KLQkJCQk3MDYtMTMgVU5JSyBCTERHIDE3RgotCQkJCVlFT0stU0FNIEtBTkctTkFNIEdVCi0JCQkJU0VPVUwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtRkYgICAoaGV4KQkJVHJpbG9neSBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMDhGRiAgICAgKGJhc2UgMTYpCQlUcmlsb2d5IENvbW11bmljYXRpb25zIEx0ZAotCQkJCTI2IEZvY3VzIFdheQotCQkJCVdhbHdvcnRoIEVzdGF0ZQotCQkJCUFuZG92ZXIgSGFtcHNoaXJlIFNQMTAgNU5ZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDktMDAgICAoaGV4KQkJVE1UCi0wMDA5MDAgICAgIChiYXNlIDE2KQkJVE1UCi0JCQkJMTEgS2lyeWF0IE1hZGEsIFBPQiA0NTE5OQotCQkJCUplcnVzYWxlbSAgOTE0NTAKLQkJCQlJU1JBRUwKLQotMDAtMDktMDEgICAoaGV4KQkJU2hlbnpoZW4gU2hpeHVudG9uZyBJbmZvcm1hdGlvbiAmIFRlY2hub2xpZ3kgQ28KLTAwMDkwMSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBTaGl4dW50b25nIEluZm9ybWF0aW9uICYgVGVjaG5vbGlneSBDbwotCQkJCVJvb20gNDAzLDYxNyBCbGRnO0JhZ3VhIDEgUm9hZCAsU2hlbnpoZW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDI5Ci0JCQkJQ0hJTkEKLQotMDAtMDktMDIgICAoaGV4KQkJUmVkbGluZSBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDA5MDIgICAgIChiYXNlIDE2KQkJUmVkbGluZSBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJMzAyIFRvd24gQ2VudHJlIEJsdmQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlNYXJraGFtIE9OIEwzUiAwRTgKLQkJCQlDQU5BREEKLQotMDAtMDktMDMgICAoaGV4KQkJUGFuYXNhcywgSW5jCi0wMDA5MDMgICAgIChiYXNlIDE2KQkJUGFuYXNhcywgSW5jCi0JCQkJMTUzMzMgSm9obiBGIEtlbm5lZHkgQmx2ZCwgU3VpdGUgNDAwCi0JCQkJSG91c3RvbiBUWCA3NzAzMi0yMzUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0wNCAgIChoZXgpCQlNT05ESUFMIGVsZWN0cm9uaWMKLTAwMDkwNCAgICAgKGJhc2UgMTYpCQlNT05ESUFMIGVsZWN0cm9uaWMKLQkJCQlFZ2dlbHNiZXJnIDczCi0JCQkJRWdnZWxzYmVyZyBPYmVyb2VzdGVycmVpY2ggNTE0MgotCQkJCUFVU1RSSUEKLQotMDAtMDktMDUgICAoaGV4KQkJaVRFQyBUZWNobm9sb2dpZXMgTHRkLgotMDAwOTA1ICAgICAoYmFzZSAxNikJCWlURUMgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQkxNjAtMSwgS2FyYWstRG9uZywgU29uZ3BhLUd1Ci0JCQkJU2VvdWwgIDEzOC04MDkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktMDYgICAoaGV4KQkJRXN0ZWVtIE5ldHdvcmtzCi0wMDA5MDYgICAgIChiYXNlIDE2KQkJRXN0ZWVtIE5ldHdvcmtzCi0JCQkJNEYsIE5vLjkwMCwgWWlzaGFuIFJvYWQKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMDktMDcgICAoaGV4KQkJQ2hyeXNhbGlzIERldmVsb3BtZW50Ci0wMDA5MDcgICAgIChiYXNlIDE2KQkJQ2hyeXNhbGlzIERldmVsb3BtZW50Ci0JCQkJODEyNSBSaXZlciBEci4gU3VpdGUgMTAwCi0JCQkJTW9ydG9uIEdyb3ZlIElMIDYwMDUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0wOCAgIChoZXgpCQlWVGVjaCBUZWNobm9sb2d5IENvcnAuCi0wMDA5MDggICAgIChiYXNlIDE2KQkJVlRlY2ggVGVjaG5vbG9neSBDb3JwLgotCQkJCTJGLTIsIE5vLiAxMjQsIENodW5nIENoZW5nIFJkLiwgU2hpaGxpbgotCQkJCVRhaXBlaSAgMTExNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTA5ICAgKGhleCkJCVRlbGVub3IgQ29ubmVjdCBBL1MKLTAwMDkwOSAgICAgKGJhc2UgMTYpCQlUZWxlbm9yIENvbm5lY3QgQS9TCi0JCQkJRWxsZWdhYXJkdmVqIDI1TAotCQkJCVM/bmRlcmJvcmcgQWxzIDY0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTA5LTBBICAgKGhleCkJCVNuZWRGYXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDkwQSAgICAgKGJhc2UgMTYpCQlTbmVkRmFyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTVGTC4sIE5vLjg2Ni0yLCBKdW5nIEplbmcgUmQuLAotCQkJCUp1bmdoZSBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS0wQiAgIChoZXgpCQlNVEwgIEluc3RydW1lbnRzIFBMQwotMDAwOTBCICAgICAoYmFzZSAxNikJCU1UTCAgSW5zdHJ1bWVudHMgUExDCi0JCQkJUG93ZXIgQ291cnQKLQkJCQlMdXRvbiBCZWRmb3Jkc2hpcmUgTFUxIDNKSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LTBDICAgKGhleCkJCU1heWVrYXdhIE1mZy4gQ28uIEx0ZC4KLTAwMDkwQyAgICAgKGJhc2UgMTYpCQlNYXlla2F3YSBNZmcuIENvLiBMdGQuCi0JCQkJMTY4MjUgSUggMzUgTm9ydGgKLQkJCQlTZWxtYSBUZXhhcyA3ODE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktMEQgICAoaGV4KQkJTEVBREVSIEVMRUNUUk9OSUNTIENPUlAuCi0wMDA5MEQgICAgIChiYXNlIDE2KQkJTEVBREVSIEVMRUNUUk9OSUNTIENPUlAuCi0JCQkJMi02LTMzLCBUU1VOQVNISU1BLUhJR0FTSEkKLQkJCQlLT0hPS1UtS1UgWU9LT0hBTUEgMjIzLTg1MDUKLQkJCQlKQVBBTgotCi0wMC0wOS0wRSAgIChoZXgpCQlIZWxpeCBUZWNobm9sb2d5IEluYy4KLTAwMDkwRSAgICAgKGJhc2UgMTYpCQlIZWxpeCBUZWNobm9sb2d5IEluYy4KLQkJCQk1RiwgTm8uIDYsIFNlYyAxLCBKdW5nLVNoaW5nIFJkLiwgV3VndS1TCi0JCQkJVGFpcGVpICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTBGICAgKGhleCkJCUZvcnRpbmV0IEluYy4KLTAwMDkwRiAgICAgKGJhc2UgMTYpCQlGb3J0aW5ldCBJbmMuCi0JCQkJMzMzMyBPY3Rhdml1cyBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0xMCAgIChoZXgpCQlTaW1wbGUgQWNjZXNzIEluYy4KLTAwMDkxMCAgICAgKGJhc2UgMTYpCQlTaW1wbGUgQWNjZXNzIEluYy4KLQkJCQk2MDAgTWNDYWZmcmV5IFN0cmVldAotCQkJCVN0LUxhdXJlbnQgUXVlYmVjIEg0VDFOMQotCQkJCUNBTkFEQQotCi0wMC0wOS0xMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA5MTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0xMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA5MTIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0xMyAgIChoZXgpCQlTeXN0ZW1LIENvcnBvcmF0aW9uCi0wMDA5MTMgICAgIChiYXNlIDE2KQkJU3lzdGVtSyBDb3Jwb3JhdGlvbgotCQkJCTIzOC05IEhpZ2FzaGkgMSwgS2l0YSAxNSwgSGlnYXNoaS1rdQotCQkJCVNhcHBvcm8gSG9ra2FpZG8gMDY1LTAwMTUKLQkJCQlKQVBBTgotCi0wMC0wOS0xNCAgIChoZXgpCQlDT01QVVRST0xTIElOQy4KLTAwMDkxNCAgICAgKGJhc2UgMTYpCQlDT01QVVRST0xTIElOQy4KLQkJCQkyMjEgQmFyayBEcml2ZQotCQkJCUhhcnZleSBMQSA3MDA1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktMTUgICAoaGV4KQkJQ0FTIENvcnAuCi0wMDA5MTUgICAgIChiYXNlIDE2KQkJQ0FTIENvcnAuCi0JCQkJIzE5LCBHYW5hcC1SaQotCQkJCUt3YW5nZ3VrLU15dW4KLQkJCQlZYW5nanUtR3VuIEt5dW5nZ2ktRG8gNDgyLTg0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0xNiAgIChoZXgpCQlMaXN0bWFuIEhvbWUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA5MTYgICAgIChiYXNlIDE2KQkJTGlzdG1hbiBIb21lIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTExMDAgTm9ydGhtZWFkb3cgUGFya3dheQotCQkJCVN1aXRlIDEwOAotCQkJCVJvc3dlbGwgR2VvcmdpYSAzMDA3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktMTcgICAoaGV4KQkJV0VNIFRlY2hub2xvZ3kgSW5jCi0wMDA5MTcgICAgIChiYXNlIDE2KQkJV0VNIFRlY2hub2xvZ3kgSW5jCi0JCQkJOEYtMiwgTm8gMzg2LCBTZWMgNSBOYW5qaW5nIEVhc3QgUm9hZC4KLQkJCQlUYWlwZWkgIDEwNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMTggICAoaGV4KQkJU0FNU1VORyBURUNIV0lOIENPLixMVEQKLTAwMDkxOCAgICAgKGJhc2UgMTYpCQlTQU1TVU5HIFRFQ0hXSU4gQ08uLExURAotCQkJCTQyCi0JCQkJU1VOR0pVRE9ORwotCQkJCUNIQU5HV09OIEtZT05HTkFNIDY0MS03MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktMTkgICAoaGV4KQkJTURTIEdhdGV3YXlzCi0wMDA5MTkgICAgIChiYXNlIDE2KQkJTURTIEdhdGV3YXlzCi0JCQkJQ2xvbnNoYXVnaCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUNsb25zaGF1Z2gKLQkJCQlEdWJsaW4gMTcgIAotCQkJCUlSRUxBTkQKLQotMDAtMDktMUEgICAoaGV4KQkJTWFjYXQgT3B0aWNzICYgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA5MUEgICAgIChiYXNlIDE2KQkJTWFjYXQgT3B0aWNzICYgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJMTUvRi4sIE1hY2F0IENlbnRlciwgTm8uIDYzIE1hY2F0IFJvYWQKLQkJCQlIdWl6aG91IEd1YW5nZG9uZyA1MTYwMDEKLQkJCQlDSElOQQotCi0wMC0wOS0xQiAgIChoZXgpCQlEaWdpdGFsIEdlbmVyYXRpb24gSW5jLgotMDAwOTFCICAgICAoYmFzZSAxNikJCURpZ2l0YWwgR2VuZXJhdGlvbiBJbmMuCi0JCQkJNUYsIEhvLVNhbSBCL0QsICMzMC0zLCBCb25nY2h1bjYtRG9uZwotCQkJCUt3YW5hay1LdSwgU2VvdWwgMTUxLTA4OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0xQyAgIChoZXgpCQlDYWNoZVZpc2lvbiwgSW5jCi0wMDA5MUMgICAgIChiYXNlIDE2KQkJQ2FjaGVWaXNpb24sIEluYwotCQkJCTE5OTAgQ29uY291cnNlIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTFEICAgKGhleCkJCVByb3RlYW0gQ29tcHV0ZXIgQ29ycG9yYXRpb24KLTAwMDkxRCAgICAgKGJhc2UgMTYpCQlQcm90ZWFtIENvbXB1dGVyIENvcnBvcmF0aW9uCi0JCQkJN0YsIE5vLiAxNTcuIFNlY3Rpb24gMiBUYS1UdW5nIFJkCi0JCQkJSHNpLUNoaWggVGFpcGVpIEhzaWVuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMUUgICAoaGV4KQkJRmlyc3RlY2ggVGVjaG5vbG9neSBDb3JwLgotMDAwOTFFICAgICAoYmFzZSAxNikJCUZpcnN0ZWNoIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk4ZmwuLE5vLjI2NyxzZWN0aW9uIDQsSHNpbi1ZaSBSZC4gLERhLUFuCi0JCQkJVGFpcGVpICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTFGICAgKGhleCkJCUEmYW1wO0QgQ28uLCBMdGQuCi0wMDA5MUYgICAgIChiYXNlIDE2KQkJQSZhbXA7RCBDby4sIEx0ZC4KLQkJCQkxLTI0MyBBc2FoaQotCQkJCUtpdGFtb3RvLXNoaSBTYWl0YW1hIDM2NC04NTg1Ci0JCQkJSkFQQU4KLQotMDAtMDktMjAgICAoaGV4KQkJRXBvWCBDT01QVVRFUiBDTy4sTFRELgotMDAwOTIwICAgICAoYmFzZSAxNikJCUVwb1ggQ09NUFVURVIgQ08uLExURC4KLQkJCQkxMHRoIEZsb29yLCBOby4zNDYsQ2h1bmcgU2FuIFJkLixTZWMuMiwKLQkJCQlDaHVuZyBIbyBDaXR5LFRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS0yMSAgIChoZXgpCQlQbGFubWVjYSBPeQotMDAwOTIxICAgICAoYmFzZSAxNikJCVBsYW5tZWNhIE95Ci0JCQkJQXNlbnRhamFua2F0dSA2Ci0JCQkJSEVMU0lOS0kgIDAwODEwIEhFTFNJTgotCQkJCUZJTkxBTkQKLQotMDAtMDktMjIgICAoaGV4KQkJVFNUIEJpb21ldHJpY3MgR21iSAotMDAwOTIyICAgICAoYmFzZSAxNikJCVRTVCBCaW9tZXRyaWNzIEdtYkgKLQkJCQlNb2VobHN0ci4gMzkKLQkJCQk4MTY3NSBNdW5pY2ggCi0JCQkJR0VSTUFOWQotCi0wMC0wOS0yMyAgIChoZXgpCQlIZWFtYW4gU3lzdGVtIENvLiwgTHRkCi0wMDA5MjMgICAgIChiYXNlIDE2KQkJSGVhbWFuIFN5c3RlbSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIE02LE5hdGlvbmFsIEhpLXRlY2ggJiBJbmR1cwotCQkJCUNoYW5nc2hhIEh1bmFuIFByb3ZpbmNlIDQxMDAxMwotCQkJCUNISU5BCi0KLTAwLTA5LTI0ICAgKGhleCkJCVRlbGViYXUgR21iSAotMDAwOTI0ICAgICAoYmFzZSAxNikJCVRlbGViYXUgR21iSAotCQkJCUFtIEtyYWVoZW5iZXJnIDEKLQkJCQlXYWxkZWNrLVNhY2hzZW5oYXVzZW4gR2VybWFueSAzNDUxMwotCQkJCUdFUk1BTlkKLQotMDAtMDktMjUgICAoaGV4KQkJVlNOIFN5c3RlbWVuIEJWCi0wMDA5MjUgICAgIChiYXNlIDE2KQkJVlNOIFN5c3RlbWVuIEJWCi0JCQkJS2VpemVyc3ZlbGQgODMKLQkJCQlWZW5yYXkgTGltYnVyZyA1ODAzIEFQCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDktMjYgICAoaGV4KQkJWU9EQSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAwOTI2ICAgICAoYmFzZSAxNikJCVlPREEgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkyRiwgTm8uMy0xLCBJbmR1c3RyeSBFYXN0IFJvYWQgSVgsCi0JCQkJSHNpbmNodSBTY2llbmNlIEJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTI3ICAgKGhleCkJCVRPWU9LRUlLSSBDTy4sTFRELgotMDAwOTI3ICAgICAoYmFzZSAxNikJCVRPWU9LRUlLSSBDTy4sTFRELgotCQkJCTE3LTEwLTMsU2hpbW9zaW5qeW8KLQkJCQlIaWdhc2hpeW9kb2dhd2EtS3UKLQkJCQlPc2FrYSAgNTMzLTAwMjEKLQkJCQlKQVBBTgotCi0wMC0wOS0yOCAgIChoZXgpCQlUZWxlY29yZQotMDAwOTI4ICAgICAoYmFzZSAxNikJCVRlbGVjb3JlCi0JCQkJMTgwMCBOb3J0aCBHbGVudmlsbGUKLQkJCQlTdWl0ZSAxMTYKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0yOSAgIChoZXgpCQlTYW55byBJbmR1c3RyaWVzIChVSykgTGltaXRlZAotMDAwOTI5ICAgICAoYmFzZSAxNikJCVNhbnlvIEluZHVzdHJpZXMgKFVLKSBMaW1pdGVkCi0JCQkJU2Nob29sIFJvYWQKLQkJCQlMb3dlc3RvZnQgU3VmZm9sayBOUjMzIDlOQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LTJBICAgKGhleCkJCU1ZVEVDUyBDby4sTHRkLgotMDAwOTJBICAgICAoYmFzZSAxNikJCU1ZVEVDUyBDby4sTHRkLgotCQkJCTEtMTItMzksIFRhaXNoaWRvdQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1NC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMDktMkIgICAoaGV4KQkJaVFzdG9yIE5ldHdvcmtzLCBJbmMuCi0wMDA5MkIgICAgIChiYXNlIDE2KQkJaVFzdG9yIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjAwMSBDb3Jwb3JhdGUgQ2VudGVyIERyaXZlCi0JCQkJTmV3YnVyeSBQYXJrIENBIDkxMzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0yQyAgIChoZXgpCQlIaXRwb2ludCBJbmMuCi0wMDA5MkMgICAgIChiYXNlIDE2KQkJSGl0cG9pbnQgSW5jLgotCQkJCU5vLjcsIEZlbmxpYW8sIDJuZCBJbmR1c3RyaWFsIFBhcmssIExpbmsKLQkJCQlUYWlwZWkgIDI0NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMkQgICAoaGV4KQkJSFRDIENvcnBvcmF0aW9uCi0wMDA5MkQgICAgIChiYXNlIDE2KQkJSFRDIENvcnBvcmF0aW9uCi0JCQkJTm8uMjMgWGluZ2h1YSBSb2FkLAotCQkJCVRhb3l1YW4gQ2l0eSwKLQkJCQlUYW95dWFuIENvdW50eSAgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMkUgICAoaGV4KQkJQiZUZWNoIFN5c3RlbSBJbmMuCi0wMDA5MkUgICAgIChiYXNlIDE2KQkJQiZUZWNoIFN5c3RlbSBJbmMuCi0JCQkJIzYwMSwgU2VvLUp1bmcgQi9ELCA4MzAtMjQsIFlvdWtzYW0tRG9uZwotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktMkYgICAoaGV4KQkJQWtvbSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDA5MkYgICAgIChiYXNlIDE2KQkJQWtvbSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNUYsIE5vLiAzMjMsIFlhbmctR3VhbmcgU3QuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTMwICAgKGhleCkJCUFlcm9Db25jaWVyZ2UgSW5jLgotMDAwOTMwICAgICAoYmFzZSAxNikJCUFlcm9Db25jaWVyZ2UgSW5jLgotCQkJCTEwMjU2IFlvbmdlIFN0LgotCQkJCVJpY2htb25kIEhpbGwgT250LiBMNEMgM0I3Ci0JCQkJQ0FOQURBCi0KLTAwLTA5LTMxICAgKGhleCkJCUZ1dHVyZSBJbnRlcm5ldCwgSW5jLgotMDAwOTMxICAgICAoYmFzZSAxNikJCUZ1dHVyZSBJbnRlcm5ldCwgSW5jLgotCQkJCTExJ3RoIEZsb29yIFNhbWhvbW9vbHNhbiBCbGRnLCBCL0JsZGcsIDIKLQkJCQlZYW5namVhIERvbmcsIFNlb2NobyBLdQotCQkJCVNlb3VsIEt5dW5nLUtpIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktMzIgICAoaGV4KQkJT21uaWx1eAotMDAwOTMyICAgICAoYmFzZSAxNikJCU9tbmlsdXgKLQkJCQkxMzAgVy4gVW5pb24gU3QuCi0JCQkJUGFzYWRlbmEgQ0EgOTExMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTMzICAgKGhleCkJCU9waGl0IENvLkx0ZC4KLTAwMDkzMyAgICAgKGJhc2UgMTYpCQlPcGhpdCBDby5MdGQuCi0JCQkJM0YuIFN1bnRlY2hub3ZpbCwgNS0yNyAgTWFuZ3BvLURvbmcgLAotCQkJCVllb25ndG9uZy1HdSwgU3V3b24tQ2l0eSwgCi0JCQkJS3l1bmdraS1EbyAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0zNCAgIChoZXgpCQlEcmVhbS1NdWx0aW1lZGlhLVR2IEdtYkgKLTAwMDkzNCAgICAgKGJhc2UgMTYpCQlEcmVhbS1NdWx0aW1lZGlhLVR2IEdtYkgKLQkJCQlCcnVlY2tzdHIuIDI5Ci0JCQkJTWVuZGVuIFNhdWVybGFuZCA1ODcwNgotCQkJCUdFUk1BTlkKLQotMDAtMDktMzUgICAoaGV4KQkJU2FuZHZpbmUgSW5jb3Jwb3JhdGVkCi0wMDA5MzUgICAgIChiYXNlIDE2KQkJU2FuZHZpbmUgSW5jb3Jwb3JhdGVkCi0JCQkJMTcwIENvbHVtYmlhIFN0LiBXLgotCQkJCVdhdGVybG9vIE9OIE4yTCAzTDMKLQkJCQlDQU5BREEKLQotMDAtMDktMzYgICAoaGV4KQkJSXBldHJvbmlrIEdtYkggJiBDby5LRwotMDAwOTM2ICAgICAoYmFzZSAxNikJCUlwZXRyb25payBHbWJIICYgQ28uS0cKLQkJCQlKYWVnZXJ3ZWcgMQotCQkJCUJhZGVuLUJhZGVuIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3NjUzMgotCQkJCUdFUk1BTlkKLQotMDAtMDktMzcgICAoaGV4KQkJSW52ZW50ZWMgQXBwbGlhbmNlIENvcnAKLTAwMDkzNyAgICAgKGJhc2UgMTYpCQlJbnZlbnRlYyBBcHBsaWFuY2UgQ29ycAotCQkJCTExMywgV3VndW5nIDEgUkQuLCBXdUt1IEluZHVzdHJpYWwgblBhcmsKLQkJCQlXdUt1IFNoaWFuZywgVGFpcGVpIEhzaWVuIDI0OCwgVGFpd2FuICwKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMzggICAoaGV4KQkJQWxsb3QgQ29tbXVuaWNhdGlvbnMKLTAwMDkzOCAgICAgKGJhc2UgMTYpCQlBbGxvdCBDb21tdW5pY2F0aW9ucwotCQkJCUhhbmFnYXIgMjIgc3QnCi0JCQkJSG9kLUhhc2hhcm9uICA0NTgwMAotCQkJCUlTUkFFTAotCi0wMC0wOS0zOSAgIChoZXgpCQlTaGliYVNva3UgQ28uLEx0ZC4KLTAwMDkzOSAgICAgKGJhc2UgMTYpCQlTaGliYVNva3UgQ28uLEx0ZC4KLQkJCQk2LTggU2hpbmJhc2hpIDQtY2hvbWUKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA1LTAwMDQKLQkJCQlKQVBBTgotCi0wMC0wOS0zQSAgIChoZXgpCQlNb2xleCBGaWJlciBPcHRpY3MKLTAwMDkzQSAgICAgKGJhc2UgMTYpCQlNb2xleCBGaWJlciBPcHRpY3MKLQkJCQk1MjI0IEthdHJpbmUgQXZlbnVlCi0JCQkJRG93bmVycyBHcm92ZSBJTCA2MDUxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktM0IgICAoaGV4KQkJSFlVTkRBSSBORVRXT1JLUyBJTkMuCi0wMDA5M0IgICAgIChiYXNlIDE2KQkJSFlVTkRBSSBORVRXT1JLUyBJTkMuCi0JCQkJU0FOIDEzNi0xICBBTUktUkkgIEJVQkFMX0VVUAotCQkJCUlDSE9OIEtZVU5HS0ktRE8gNDY3LTcwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0zQyAgIChoZXgpCQlKYWNxdWVzIFRlY2hub2xvZ2llcyBQL0wKLTAwMDkzQyAgICAgKGJhc2UgMTYpCQlKYWNxdWVzIFRlY2hub2xvZ2llcyBQL0wKLQkJCQkyNjggTW9udGFndWUgUmQKLQkJCQlXZXN0IEVuZCBRdWVlbnNsYW5kIDQxMDEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDktM0QgICAoaGV4KQkJTmV3aXN5cyxJbmMuCi0wMDA5M0QgICAgIChiYXNlIDE2KQkJTmV3aXN5cyxJbmMuCi0JCQkJNjIwMCBCcmlkZ2Vwb2ludCBQYXJrd2F5Ci0JCQkJQnVpZGluZyBJViwgU3VpdGUgMTAwCi0JCQkJQXVzdGluIFRYIDc4NzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0zRSAgIChoZXgpCQlDJkkgVGVjaG5vbG9naWVzCi0wMDA5M0UgICAgIChiYXNlIDE2KQkJQyZJIFRlY2hub2xvZ2llcwotCQkJCSMzMDMgS3dhbmJvIFBsYXphIEIvRCwgMTQ2Ny0yCi0JCQkJS3dhbnlhbmctRG9uZywgRG9uZ2FuLUt1Ci0JCQkJQW55YW5nLVNoaSBLeXVuZ2dpLURvIDQzMS04MDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktM0YgICAoaGV4KQkJRG91YmxlLVdpbiBFbnRlcnBpcnNlIENPLiwgTFRECi0wMDA5M0YgICAgIChiYXNlIDE2KQkJRG91YmxlLVdpbiBFbnRlcnBpcnNlIENPLiwgTFRECi0JCQkJTk8uMzAwLCBTZWMgMSwgQ2h1bmcgRmVuZyBSZC4KLQkJCQlQaW5nIENoZW4gQ2l0eSBUYW95dWFuIEhzaWVuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktNDAgICAoaGV4KQkJQUdGRU8gR21iSCAmIENvLiBLRwotMDAwOTQwICAgICAoYmFzZSAxNikJCUFHRkVPIEdtYkggJiBDby4gS0cKLQkJCQlQb3N0ZmFjaCAxNDAxMDcKLQkJCQlCaWVsZWZlbGQgUmhpbmUgV2VzdGZhbGlhIDMzNjIxCi0JCQkJR0VSTUFOWQotCi0wMC0wOS00MSAgIChoZXgpCQlBbGxpZWQgVGVsZXNpcyBLLksuCi0wMDA5NDEgICAgIChiYXNlIDE2KQkJQWxsaWVkIFRlbGVzaXMgSy5LLgotCQkJCVRlY2huaWNhbCBDZW50ZXIvTm8uMiBUT0MgQmxkZy4KLQkJCQk3LTIxLTExIE5pc2hpLUdvdGFuZGEKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0wOS00MiAgIChoZXgpCQlXaXJlbGVzcyBUZWNobm9sb2dpZXMsIEluYwotMDAwOTQyICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIFRlY2hub2xvZ2llcywgSW5jCi0JCQkJT2htb3JpIE1pdHN1YmlzaGkgQmxkZy4sIDdGLCBTYW5ub2ggMi1jaG9tZQotCQkJCU9odGEta3UKLQkJCQlUb2t5byAgMTQzLTAwMjMKLQkJCQlKQVBBTgotCi0wMC0wOS00MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA5NDMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA5NDQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00NSAgIChoZXgpCQlQYWxtbWljcm8gQ29tbXVuaWNhdGlvbnMgSW5jCi0wMDA5NDUgICAgIChiYXNlIDE2KQkJUGFsbW1pY3JvIENvbW11bmljYXRpb25zIEluYwotCQkJCTYzMCBBbGRlciBEcgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00NiAgIChoZXgpCQlDbHVzdGVyIExhYnMgR21iSAotMDAwOTQ2ICAgICAoYmFzZSAxNikJCUNsdXN0ZXIgTGFicyBHbWJICi0JCQkJRGF1ZXJ3YWxkd2VnIDEKLQkJCQkxNDA1NSBCZXJsaW4KLQkJCQlCZXJsaW4gQmVybGluIDE0MDU1Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS00NyAgIChoZXgpCQlBenRlaywgSW5jLgotMDAwOTQ3ICAgICAoYmFzZSAxNikJCUF6dGVrLCBJbmMuCi0JCQkJMjMgU3BlY3RydW0gUG9pbnRlICMyMDkKLQkJCQlMYWtlIEZvcmVzdCBDYWxpZm9ybmlhIDkyNjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00OCAgIChoZXgpCQlWaXN0YSBDb250cm9sIFN5c3RlbXMsIENvcnAuCi0wMDA5NDggICAgIChiYXNlIDE2KQkJVmlzdGEgQ29udHJvbCBTeXN0ZW1zLCBDb3JwLgotCQkJCTIwMDEgV2VzdCBNZWxpbmRhIExhbmUKLQkJCQlQaG9lbml4IEFaIDg1MDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00OSAgIChoZXgpCQlHbHlwaCBUZWNobm9sb2dpZXMgSW5jLgotMDAwOTQ5ICAgICAoYmFzZSAxNikJCUdseXBoIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNzM1IFcuIENsaW50b24gU3RyZWV0Ci0JCQkJSXRoYWNhIE5ZIDE0ODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00QSAgIChoZXgpCQlIb21lbmV0IENvbW11bmljYXRpb25zCi0wMDA5NEEgICAgIChiYXNlIDE2KQkJSG9tZW5ldCBDb21tdW5pY2F0aW9ucwotCQkJCUlubm92YXRpb24gQ2VudHJlCi0JCQkJTmF0aW9uYWwgVGVjaG5vbG9naWNhbCBQYXJrCi0JCQkJTGltZXJpY2sgIAotCQkJCUlSRUxBTkQKLQotMDAtMDktNEIgICAoaGV4KQkJRmlsbEZhY3RvcnkgTlYKLTAwMDk0QiAgICAgKGJhc2UgMTYpCQlGaWxsRmFjdG9yeSBOVgotCQkJCVNjaGFsaWVuaG9ldmVkcmVlZiAyMEIKLQkJCQlCLTI4MDAgTWVjaGVsZW4gIAotCQkJCUJFTEdJVU0KLQotMDAtMDktNEMgICAoaGV4KQkJQ29tbXVuaWNhdGlvbiBXZWF2ZXIgQ28uLEx0ZC4KLTAwMDk0QyAgICAgKGJhc2UgMTYpCQlDb21tdW5pY2F0aW9uIFdlYXZlciBDby4sTHRkLgotCQkJCTF+MyBDT1dFQVZFUiBCL0QgNDQ2LTE5LAotCQkJCVNFT0dZTy1ET05HLCBNQVBPLUdVCi0JCQkJU0VPVUwgIDEyMS04NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNEQgICAoaGV4KQkJQnJhaW50cmVlIENvbW11bmljYXRpb25zIFB0eSBMdGQKLTAwMDk0RCAgICAgKGJhc2UgMTYpCQlCcmFpbnRyZWUgQ29tbXVuaWNhdGlvbnMgUHR5IEx0ZAotCQkJCUxldmVsIDEsIDYgQ29yZGVsaWEgU3QKLQkJCQlTb3V0aCBCcmlzYmFuZSBRTEQgNDEwMQotCQkJCUFVU1RSQUxJQQotCi0wMC0wOS00RSAgIChoZXgpCQlCQVJURUNIIFNZU1RFTVMgSU5URVJOQVRJT05BTCwgSU5DCi0wMDA5NEUgICAgIChiYXNlIDE2KQkJQkFSVEVDSCBTWVNURU1TIElOVEVSTkFUSU9OQUwsIElOQwotCQkJCTI1MSBOYWpvbGVzIFJkIFN1aXRlIEEKLQkJCQlNaWxsZXJzdmlsbGUgTWFyeWxhbmQgMjExMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTRGICAgKGhleCkJCWVsbWVndCBHbWJIICYgQ28uIEtHCi0wMDA5NEYgICAgIChiYXNlIDE2KQkJZWxtZWd0IEdtYkggJiBDby4gS0cKLQkJCQlLb21tdW5pa2F0aW9uc3RlY2huaWsKLQkJCQlWb2VocnVtZXIgU3RyLiAzMAotCQkJCVBlaW5lIE5pZWRlcnNhY2hzZW4gRC0zMTIyOAotCQkJCUdFUk1BTlkKLQotMDAtMDktNTAgICAoaGV4KQkJSW5kZXBlbmRlbnQgU3RvcmFnZSBDb3Jwb3JhdGlvbgotMDAwOTUwICAgICAoYmFzZSAxNikJCUluZGVwZW5kZW50IFN0b3JhZ2UgQ29ycG9yYXRpb24KLQkJCQk2MjczIE1vbmFyY2ggUGFyayBQbGFjZQotCQkJCU5pd290IENvbG9yYWRvIDgwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS01MSAgIChoZXgpCQlBcG9nZWUgSW1hZ2luZyBTeXN0ZW1zCi0wMDA5NTEgICAgIChiYXNlIDE2KQkJQXBvZ2VlIEltYWdpbmcgU3lzdGVtcwotCQkJCTE1MSBTdW5yaXNlIEF2ZW51ZQotCQkJCVN1aXRlIDkwMgotCQkJCVJvc2V2aWxsZSBDQSA5NTY2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNTIgICAoaGV4KQkJQXVlcnN3YWxkIEdtYkggJiBDby4gS0cKLTAwMDk1MiAgICAgKGJhc2UgMTYpCQlBdWVyc3dhbGQgR21iSCAmIENvLiBLRwotCQkJCVZvciBkZW4gR3Jhc2hvZWZlbiAyMgotCQkJCUNyZW1saW5nZW4gTmllZGVyc2FjaHNlbiAzODE2MgotCQkJCUdFUk1BTlkKLQotMDAtMDktNTMgICAoaGV4KQkJTGlua2FnZSBTeXN0ZW0gSW50ZWdyYXRpb24gQ28uTHRkLgotMDAwOTUzICAgICAoYmFzZSAxNikJCUxpbmthZ2UgU3lzdGVtIEludGVncmF0aW9uIENvLkx0ZC4KLQkJCQk0MCBHb25namlhbmZhbmcKLQkJCQlTb3V0aCBaaG9uZ3NoYW4gUm9hZAotCQkJCU5hbmppbmcgSmlhbmdzdSAyMTAwMDYKLQkJCQlDSElOQQotCi0wMC0wOS01NCAgIChoZXgpCQlBTWlUIHNwb2wuIHMuIHIuIG8uCi0wMDA5NTQgICAgIChiYXNlIDE2KQkJQU1pVCBzcG9sLiBzLiByLiBvLgotCQkJCU5hc2tvdmUgMwotCQkJCTE1MCAwMCBQcmFoYSA1IAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTA5LTU1ICAgKGhleCkJCVlvdW5nIEdlbmVyYXRpb24gSW50ZXJuYXRpb25hbCBDb3JwLgotMDAwOTU1ICAgICAoYmFzZSAxNikJCVlvdW5nIEdlbmVyYXRpb24gSW50ZXJuYXRpb25hbCBDb3JwLgotCQkJCTRGLixOby4gMTg4LCBNaW5jaHVhbiBSZC4sIFNoaW5kaWFuIENpdHkKLQkJCQlTaGluZGlhbiAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS01NiAgIChoZXgpCQlOZXR3b3JrIFN5c3RlbXMgR3JvdXAsIEx0ZC4gKE5TRykKLTAwMDk1NiAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIFN5c3RlbXMgR3JvdXAsIEx0ZC4gKE5TRykKLQkJCQkzOSBLaXJwaWNobmF5YSBTdC4sIFN1aXRlIDEzMDIKLQkJCQlNb3Njb3cgIDEwNTE4NwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0wOS01NyAgIChoZXgpCQlTdXBlcmNhbGxlciwgSW5jLgotMDAwOTU3ICAgICAoYmFzZSAxNikJCVN1cGVyY2FsbGVyLCBJbmMuCi0JCQkJMTAxIFNhZ2luYXcgRHJpdmUKLQkJCQlSZWR3b29kIENpdHkgQ0EgOTQwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTU4ICAgKGhleCkJCUlOVEVMTkVUIFMuQS4KLTAwMDk1OCAgICAgKGJhc2UgMTYpCQlJTlRFTE5FVCBTLkEuCi0JCQkJRlJBTkNJU0NPIE9MSVZBTiBCQVlMRSwgNAotCQkJCVpBUkFHT1pBICA1MDAxNQotCQkJCVNQQUlOCi0KLTAwLTA5LTU5ICAgKGhleCkJCVNpdGVjc29mdAotMDAwOTU5ICAgICAoYmFzZSAxNikJCVNpdGVjc29mdAotCQkJCTd0aCBHdWd1IEJELiAxNDUtMTggU2Ftc3VuZy1Eb25nCi0JCQkJS2FuZ05hbS1HdSBTZW91bCBLb3JlYQotCQkJCVNlb3VsIFNlb3VsIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNUEgICAoaGV4KQkJUkFDRVdPT0QgVEVDSE5PTE9HWQotMDAwOTVBICAgICAoYmFzZSAxNikJCVJBQ0VXT09EIFRFQ0hOT0xPR1kKLQkJCQk1Ri0yLE5PLjYsQ0hVTkctSFNJTkcgUkQuLFNFQy4xLFdVLUdVCi0JCQkJVEFJUEVJICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTVCICAgKGhleCkJCU5ldGdlYXIsIEluYy4KLTAwMDk1QiAgICAgKGJhc2UgMTYpCQlOZXRnZWFyLCBJbmMuCi0JCQkJNDUwMCBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNUMgICAoaGV4KQkJUGhpbGlwcyBNZWRpY2FsIFN5c3RlbXMgLSBDYXJkaWFjIGFuZCBNb25pdG9yaW5nIFN5c3RlbXMgKENNCi0wMDA5NUMgICAgIChiYXNlIDE2KQkJUGhpbGlwcyBNZWRpY2FsIFN5c3RlbXMgLSBDYXJkaWFjIGFuZCBNb25pdG9yaW5nIFN5c3RlbXMgKENNCi0JCQkJMzAwMCBNaW51dGVtYW4gUm9hZAotCQkJCUFuZG92ZXIgTWFzc2FjaHVzZXR0cyAwMTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNUQgICAoaGV4KQkJRGlhbG9ndWUgVGVjaG5vbG9neSBDb3JwLgotMDAwOTVEICAgICAoYmFzZSAxNikJCURpYWxvZ3VlIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkxMEYsIE5vLiAxOTYsIFNlYy4gMiwgSnVuZ3NoaW5nIFJkLgotCQkJCVNoaW5kaWFuIENpdHkgVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktNUUgICAoaGV4KQkJTWFzc3RlY2ggR3JvdXAgSW5jLgotMDAwOTVFICAgICAoYmFzZSAxNikJCU1hc3N0ZWNoIEdyb3VwIEluYy4KLQkJCQkyIEVhc3QgQmVhdmVyIENyZWVrIFJkLgotCQkJCUJ1aWxkaW5nIDMKLQkJCQlSaWNobW9uZCBIaWxsIE9udGFyaW8gTDRCIDJOMwotCQkJCUNBTkFEQQotCi0wMC0wOS01RiAgIChoZXgpCQlUZWxlYnl0ZSwgSW5jLgotMDAwOTVGICAgICAoYmFzZSAxNikJCVRlbGVieXRlLCBJbmMuCi0JCQkJMjcwIFB1bGFza2kgUm9hZAotCQkJCUdyZWVubGF3biBOWSAxMTc0MC0xNjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02MCAgIChoZXgpCQlZT1pBTiBJbmMuCi0wMDA5NjAgICAgIChiYXNlIDE2KQkJWU9aQU4gSW5jLgotCQkJCVlPWkFOIEJsZC4sMy01LTE4LCBLaXRhemF3YQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1NS0wMDMxCi0JCQkJSkFQQU4KLQotMDAtMDktNjEgICAoaGV4KQkJU3dpdGNoZ2VhciBhbmQgSW5zdHJ1bWVudGF0aW9uIEx0ZAotMDAwOTYxICAgICAoYmFzZSAxNikJCVN3aXRjaGdlYXIgYW5kIEluc3RydW1lbnRhdGlvbiBMdGQKLQkJCQlSaXBsZXkgUm9hZAotCQkJCUJyYWRmb3JkIFdlc3QgWW9ya3NoaXJlIEJENCA3RUgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wOS02MiAgIChoZXgpCQlTb25pdG9yIFRlY2hub2xvZ2llcyBBUwotMDAwOTYyICAgICAoYmFzZSAxNikJCVNvbml0b3IgVGVjaG5vbG9naWVzIEFTCi0JCQkJRm9yc2tuaW5nc3ZlaWVuIDFCCi0JCQkJUC5PLiBCb3ggMTI0Ci0JCQkJT3NsbyBCbGluZGVybiBOLTAxMzQKLQkJCQlOT1JXQVkKLQotMDAtMDktNjMgICAoaGV4KQkJRG9taW5pb24gTGFzZXJjb20gSW5jLgotMDAwOTYzICAgICAoYmFzZSAxNikJCURvbWluaW9uIExhc2VyY29tIEluYy4KLQkJCQkxNzE2IEJyaWFyY3Jlc3QgRHIuIFN0ZS4gMjEwCi0JCQkJQnJ5YW4gVFggNzc4MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTY0ICAgKGhleCkJCUhpLVRlY2huaXF1ZXMsIEluYy4KLTAwMDk2NCAgICAgKGJhc2UgMTYpCQlIaS1UZWNobmlxdWVzLCBJbmMuCi0JCQkJMjUxNSBGcmF6aWVyIEF2ZS4KLQkJCQlNYWRpc29uIFdJIDUzNzEzLTE1MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTY1ICAgKGhleCkJCUh5dW5KdSBDb21wdXRlciBDby4sIEx0ZC4KLTAwMDk2NSAgICAgKGJhc2UgMTYpCQlIeXVuSnUgQ29tcHV0ZXIgQ28uLCBMdGQuCi0JCQkJMjIyLTIyLCBIeXVuanUgQi9ELCBHdXJvIDMgRG9uZywgR3Vyb2d1Ci0JCQkJU2VvdWwgIDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNjYgICAoaGV4KQkJVGhhbGVzIE5hdmlnYXRpb24KLTAwMDk2NiAgICAgKGJhc2UgMTYpCQlUaGFsZXMgTmF2aWdhdGlvbgotCQkJCTQ3MSBFbCBDYW1pbm8gUmVhbAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02NyAgIChoZXgpCQlUYWNoeW9uLCBJbmMKLTAwMDk2NyAgICAgKGJhc2UgMTYpCQlUYWNoeW9uLCBJbmMKLQkJCQk5MzM5IENhcnJvbGwgUGFyayBEcml2ZQotCQkJCVN1aXRlIDE1MAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNjggICAoaGV4KQkJVEVDSE5PVkVOVFVSRSwgSU5DLgotMDAwOTY4ICAgICAoYmFzZSAxNikJCVRFQ0hOT1ZFTlRVUkUsIElOQy4KLQkJCQlQLiBPLiBCb3ggNTY0MQotCQkJCVBhc2FkZW5hIFRleGFzIDc3NTA4LTU2NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTY5ICAgKGhleCkJCU1lcmV0IE9wdGljYWwgQ29tbXVuaWNhdGlvbnMKLTAwMDk2OSAgICAgKGJhc2UgMTYpCQlNZXJldCBPcHRpY2FsIENvbW11bmljYXRpb25zCi0JCQkJMTAwNzAgTWVzYSBSaW0gUm9hZAotCQkJCVNhbiBEaWVnbyBDYWxpZm9ybmlhIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02QSAgIChoZXgpCQlDbG92ZXJsZWFmIENvbW11bmljYXRpb25zIEluYy4KLTAwMDk2QSAgICAgKGJhc2UgMTYpCQlDbG92ZXJsZWFmIENvbW11bmljYXRpb25zIEluYy4KLQkJCQkyIFdpbGxvdyBTdC4KLQkJCQlTb3V0aGJvcm91Z2ggTUEgMDE3NDUtMTAyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNkIgICAoaGV4KQkJSUJNIENvcnAKLTAwMDk2QiAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNkMgICAoaGV4KQkJSW1lZGlhIFNlbWljb25kdWN0b3IgQ29ycC4KLTAwMDk2QyAgICAgKGJhc2UgMTYpCQlJbWVkaWEgU2VtaWNvbmR1Y3RvciBDb3JwLgotCQkJCTQ5ODggR3JlYXQgQW1lcmljYSBQa3d5LgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02RCAgIChoZXgpCQlQb3dlcm5ldCBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMDk2RCAgICAgKGJhc2UgMTYpCQlQb3dlcm5ldCBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQkzNzEtNTEsIEdhc2FuLURvbmcgS3VtY2hvbi1HdSwKLQkJCQlTZW91bCAgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS02RSAgIChoZXgpCQlHSUFOVCBFTEVDVFJPTklDUyBMVEQuCi0wMDA5NkUgICAgIChiYXNlIDE2KQkJR0lBTlQgRUxFQ1RST05JQ1MgTFRELgotCQkJCTcvRi4sIEVMSVRFIElORFVTVFJJQUwgQlVJTERJTkcsCi0JCQkJMTM1LTEzNyBIT0kgQlVOIFJPQUQsCi0JCQkJS1dVTiBUT05HIEtPV0xPT04gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA5LTZGICAgKGhleCkJCUJlaWppbmcgWmhvbmdxaW5nIEVsZWdhbnQgVGVjaC4gQ29ycC4sTGltaXRlZAotMDAwOTZGICAgICAoYmFzZSAxNikJCUJlaWppbmcgWmhvbmdxaW5nIEVsZWdhbnQgVGVjaC4gQ29ycC4sTGltaXRlZAotCQkJCVJtLjUwOCwgQS1CdWlsZGluZywgU2hhbmdkaSBEaWdpdGFsIFNjaWUKLQkJCQlCZWlqaW5nICAxMDAwODQKLQkJCQlDSElOQQotCi0wMC0wOS03MCAgIChoZXgpCQlWaWJyYXRpb24gUmVzZWFyY2ggQ29ycG9yYXRpb24KLTAwMDk3MCAgICAgKGJhc2UgMTYpCQlWaWJyYXRpb24gUmVzZWFyY2ggQ29ycG9yYXRpb24KLQkJCQkyMzg1IFdpbHNoZXJlIERyaXZlCi0JCQkJU3VpdGUgQQotCQkJCUplbmlzb24gTUkgNDk0MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTcxICAgKGhleCkJCVRpbWUgTWFuYWdlbWVudCwgSW5jLgotMDAwOTcxICAgICAoYmFzZSAxNikJCVRpbWUgTWFuYWdlbWVudCwgSW5jLgotCQkJCTExIExha2UgR2F0bGluIFJvYWQKLQkJCQlPcmxhbmRvIEZsb3JpZGEgMzI4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTcyICAgKGhleCkJCVNlY3VyZWJhc2UsSW5jCi0wMDA5NzIgICAgIChiYXNlIDE2KQkJU2VjdXJlYmFzZSxJbmMKLQkJCQkybmQgRmwsU2V1bmdzZXVuZy1CbGRnLERva29rIDItRG9uZyxLYW5nCi0JCQkJU2VvdWwgIDEzNS04NTQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNzMgICAoaGV4KQkJTGVudGVuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA5NzMgICAgIChiYXNlIDE2KQkJTGVudGVuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTZGLCBOby41MSwgU2VjLjIsIEd1bmd5aSBSb2FkLAotCQkJCVRhaWNodW5nIENpdHkgIDQwOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktNzQgICAoaGV4KQkJSW5ub3BpYSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDk3NCAgICAgKGJhc2UgMTYpCQlJbm5vcGlhIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTVGLiwgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKLQkJCQlIYW55YW5nIFVuaXZlcnNpdHksIDE3IEhhZW5nZGFuZy1Eb25nCi0JCQkJU2VvdWwgIDEzMy03OTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNzUgICAoaGV4KQkJZlNPTkEgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMDk3NSAgICAgKGJhc2UgMTYpCQlmU09OQSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotCQkJCSMxNDAtMTExMjAgSG9yc2VzaG9lIFdheQotCQkJCVJpY2htb25kIEJDIFY3QSA1SDcKLQkJCQlDQU5BREEKLQotMDAtMDktNzYgICAoaGV4KQkJRGF0YXNvZnQgSVNETiBTeXN0ZW1zIEdtYkgKLTAwMDk3NiAgICAgKGJhc2UgMTYpCQlEYXRhc29mdCBJU0ROIFN5c3RlbXMgR21iSAotCQkJCVNjaGlsbGVycGxhdHogMwotCQkJCVN0LiBQb2VsdGVuIExvd2VyIEF1c3RyaWEgMzEwMAotCQkJCUFVU1RSSUEKLQotMDAtMDktNzcgICAoaGV4KQkJQnJ1bm5lciBFbGVrdHJvbmlrIEFHCi0wMDA5NzcgICAgIChiYXNlIDE2KQkJQnJ1bm5lciBFbGVrdHJvbmlrIEFHCi0JCQkJTXVsbGVyd2lzIDEKLQkJCQlIaXR0bmF1IFp1cmljaCA4MzM1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDktNzggICAoaGV4KQkJQUlKSSBTeXN0ZW0gQ28uLCBMdGQuCi0wMDA5NzggICAgIChiYXNlIDE2KQkJQUlKSSBTeXN0ZW0gQ28uLCBMdGQuCi0JCQkJIzIwOCBTYW1oby1QYXJrLVRvd2VyIEJsZGcuIDExMjItMTAsIEluZwotCQkJCVN1d29uIEd5ZW9uZ2dpLWRvIDQ0Mi04MzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNzkgICAoaGV4KQkJQWR2YW5jZWQgVGVsZXZpc2lvbiBTeXN0ZW1zIENvbW1pdHRlZSwgSW5jLgotMDAwOTc5ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFRlbGV2aXNpb24gU3lzdGVtcyBDb21taXR0ZWUsIEluYy4KLQkJCQkxNzUwIEsgU3RyZWV0IE5XCi0JCQkJU3VpdGUgMTIwMAotCQkJCVdhc2hpbmd0b24gREMgMjAwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTdBICAgKGhleCkJCUxvdWlzIERlc2lnbiBMYWJzLgotMDAwOTdBICAgICAoYmFzZSAxNikJCUxvdWlzIERlc2lnbiBMYWJzLgotCQkJCTJGLE5PIDQsIExhbmUgNDk3LCBDaHVuZy1DaGVuZyBSZC4sSHNpbi0KLQkJCQlIc2luLVRpZW4gVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktN0IgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOTdCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktN0MgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOTdDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEcgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS03RCAgIChoZXgpCQlTZWNXZWxsIE5ldHdvcmtzIE95Ci0wMDA5N0QgICAgIChiYXNlIDE2KQkJU2VjV2VsbCBOZXR3b3JrcyBPeQotCQkJCVAuTy5CT1ggMTc0Ci0JCQkJSGFtZWVucHVpc3RvIDIxCi0JCQkJVGFtcGVyZSAgMzMxMDEKLQkJCQlGSU5MQU5ECi0KLTAwLTA5LTdFICAgKGhleCkJCUlNSSBURUNITk9MT0dZIENPLiwgTFRECi0wMDA5N0UgICAgIChiYXNlIDE2KQkJSU1JIFRFQ0hOT0xPR1kgQ08uLCBMVEQKLQkJCQkybmQgZmxvb3IsIEV1biBTZW9rIEJ1aWxkaW5nLCA3MjktMQotCQkJCVllb2tzYW0tZG9uZywKLQkJCQlHYW5nbmFtLWd1IFNlb3VsIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktN0YgICAoaGV4KQkJVnNlY3VyZSAyMDAwIExURC4KLTAwMDk3RiAgICAgKGJhc2UgMTYpCQlWc2VjdXJlIDIwMDAgTFRELgotCQkJCTExIE1vc2hlIExldmkgU3QuCi0JCQkJUmlzaG9uIExlWmlvbiAgNzU2NTgKLQkJCQlJU1JBRUwKLQotMDAtMDktODAgICAoaGV4KQkJUG93ZXIgWmVuaXRoIEluYy4KLTAwMDk4MCAgICAgKGJhc2UgMTYpCQlQb3dlciBaZW5pdGggSW5jLgotCQkJCVRzdWppZG8gTmlzaGlrYWlnYW4gMS0xMC03Ci0JCQkJRnVqaXNhd2EgS2FuYWdhd2EgMjUxLTAwNDYKLQkJCQlKQVBBTgotCi0wMC0wOS04MSAgIChoZXgpCQlOZXdwb3J0IE5ldHdvcmtzCi0wMDA5ODEgICAgIChiYXNlIDE2KQkJTmV3cG9ydCBOZXR3b3JrcwotCQkJCUVudGVycHJpc2UgSG91c2UKLQkJCQlTdGF0aW9uIFJvYWQKLQkJCQlDaGVwc3RvdyBNb25tb3V0aHNoaXJlIE5QMTYgNVBCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDktODIgICAoaGV4KQkJTG9ld2UgT3B0YSBHbWJICi0wMDA5ODIgICAgIChiYXNlIDE2KQkJTG9ld2UgT3B0YSBHbWJICi0JCQkJSW5kdXN0cmllc3RyYXNzZSAxMQotCQkJCUtyb25hY2ggQmF2YXJpYSA5NjMxNwotCQkJCUdFUk1BTlkKLQotMDAtMDktODMgICAoaGV4KQkJR3Zpc2lvbiBJbmNvcnBvcmF0ZWQKLTAwMDk4MyAgICAgKGJhc2UgMTYpCQlHdmlzaW9uIEluY29ycG9yYXRlZAotCQkJCTExRiwgTm8uMTY2LCBDaGllbi1JIFJvYWQKLQkJCQlDaHVuZyBIbyBDaXR5LCBUYWlwZWkgSHNpZW4gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktODQgICAoaGV4KQkJTXlDYXNhIE5ldHdvcmsgSW5jLgotMDAwOTg0ICAgICAoYmFzZSAxNikJCU15Q2FzYSBOZXR3b3JrIEluYy4KLQkJCQkyMDAgU2hlcmlkYW4gQXZlICMxMDMKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTg1ICAgKGhleCkJCUF1dG8gVGVsZWNvbSBDb21wYW55Ci0wMDA5ODUgICAgIChiYXNlIDE2KQkJQXV0byBUZWxlY29tIENvbXBhbnkKLQkJCQkxMEYsIE5vLjMsTGFuZSAxNiwgU2VjLjIsIFNpY2h1YW4gUmQuCi0JCQkJQmFucWlhbyBDaXR5IFRhaXBlaSBDb3VudHkgMjIwNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTg2ICAgKGhleCkJCU1ldGFsaW5rIExURC4KLTAwMDk4NiAgICAgKGJhc2UgMTYpCQlNZXRhbGluayBMVEQuCi0JCQkJWWFrdW0gQnVzaW5lc3MgUGFyawotCQkJCVlha3VtIEhPRiBIQVNIQVJPTiA2MDk3MgotCQkJCUlTUkFFTAotCi0wMC0wOS04NyAgIChoZXgpCQlOSVNISSBOSVBQT04gRUxFQ1RSSUMgV0lSRSAmIENBQkxFIENPLixMVEQuCi0wMDA5ODcgICAgIChiYXNlIDE2KQkJTklTSEkgTklQUE9OIEVMRUNUUklDIFdJUkUgJiBDQUJMRSBDTy4sTFRELgotCQkJCUthc3VnYXVyYQotCQkJCU9pdGEtQ2l0eSBPSVRBIDg3MC04NjMyCi0JCQkJSkFQQU4KLQotMDAtMDktODggICAoaGV4KQkJTnVkaWFuIEVsZWN0cm9uIENvLiwgTHRkLgotMDAwOTg4ICAgICAoYmFzZSAxNikJCU51ZGlhbiBFbGVjdHJvbiBDby4sIEx0ZC4KLQkJCQk3OTctMjggQmFuZ2JhZS1Eb25nLCBTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS04OSAgIChoZXgpCQlWaXZpZExvZ2ljIEluYy4KLTAwMDk4OSAgICAgKGJhc2UgMTYpCQlWaXZpZExvZ2ljIEluYy4KLQkJCQk0MDk5NCBFbmN5Y2xvcGVkaWEgQ2lyY2xlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOEEgICAoaGV4KQkJRXF1YWxMb2dpYyBJbmMKLTAwMDk4QSAgICAgKGJhc2UgMTYpCQlFcXVhbExvZ2ljIEluYwotCQkJCTkgVG93bnNlbmQgV2VzdAotCQkJCU5hc2h1YSBOSCAwMzA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOEIgICAoaGV4KQkJRW50cm9waWMgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDk4QiAgICAgKGJhc2UgMTYpCQlFbnRyb3BpYyBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTkyNzYgU2NyYW50b24gUmQgIzIwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOEMgICAoaGV4KQkJT3B0aW9uIFdpcmVsZXNzIFN3ZWRlbgotMDAwOThDICAgICAoYmFzZSAxNikJCU9wdGlvbiBXaXJlbGVzcyBTd2VkZW4KLQkJCQlTdHVyZWdhdGFuIDIKLQkJCQkxMXRoIGZsLgotCQkJCVN1bmRieWJlcmcgU0UtMTcyIDI0Ci0JCQkJU1dFREVOCi0KLTAwLTA5LThEICAgKGhleCkJCVZlbG9jaXR5IFNlbWljb25kdWN0b3IKLTAwMDk4RCAgICAgKGJhc2UgMTYpCQlWZWxvY2l0eSBTZW1pY29uZHVjdG9yCi0JCQkJU3VpdGUgMzIgV2V5IEhvdXNlCi0JCQkJMTUgQ2h1cmNoIFN0cmVldAotCQkJCVdleWJyaWRnZSBTdXJyZXkgS1QxMyA4TkEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wOS04RSAgIChoZXgpCQlpcGNhcyBHbWJICi0wMDA5OEUgICAgIChiYXNlIDE2KQkJaXBjYXMgR21iSAotCQkJCVdldHRlcmtyZXV6IDE3Ci0JCQkJRXJsYW5nZW4gQmF2YXJpYSA5MTA1OAotCQkJCUdFUk1BTlkKLQotMDAtMDktOEYgICAoaGV4KQkJQ2V0YWNlYW4gTmV0d29ya3MKLTAwMDk4RiAgICAgKGJhc2UgMTYpCQlDZXRhY2VhbiBOZXR3b3JrcwotCQkJCTExMCBDb3Jwb3JhdGUgRHJpdmUKLQkJCQlCdWlsZGluZyAyCi0JCQkJUG9ydHNtb3V0aCBOSCAwMzgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOTAgICAoaGV4KQkJQUNLU1lTIENvbW11bmljYXRpb25zICYgc3lzdGVtcwotMDAwOTkwICAgICAoYmFzZSAxNikJCUFDS1NZUyBDb21tdW5pY2F0aW9ucyAmIHN5c3RlbXMKLQkJCQlaQSBkdSBWYWwgSm95ZXV4Ci0JCQkJMTAgcnVlIGRlcyBFbnRyZXByZW5ldXJzCi0JCQkJVklMTEVQUkVVWCAgRi03ODQ1MAotCQkJCUZSQU5DRQotCi0wMC0wOS05MSAgIChoZXgpCQlHRSBGYW51YyBBdXRvbWF0aW9uIE1hbnVmYWN0dXJpbmcsIEluYy4KLTAwMDk5MSAgICAgKGJhc2UgMTYpCQlHRSBGYW51YyBBdXRvbWF0aW9uIE1hbnVmYWN0dXJpbmcsIEluYy4KLQkJCQlSb3V0ZSA2MDYgJiBSb3V0ZSAyOU4KLQkJCQlQTyBCb3ggODEwNgotCQkJCUNoYXJsb3R0ZXN2aWxsZSBWaXJnaW5pYSAyMjkxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOTIgICAoaGV4KQkJSW50ZXJFcG9jaCBUZWNobm9sb2d5LElOQy4KLTAwMDk5MiAgICAgKGJhc2UgMTYpCQlJbnRlckVwb2NoIFRlY2hub2xvZ3ksSU5DLgotCQkJCTdGLE5vLjMsQWxsZXkgNixMYW5lIDIzNSxQYW8tQ2hpYW8gUmQKLQkJCQlIc2luLVRpZW4gVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktOTMgICAoaGV4KQkJVmlzdGVvbiBDb3Jwb3JhdGlvbgotMDAwOTkzICAgICAoYmFzZSAxNikJCVZpc3Rlb24gQ29ycG9yYXRpb24KLQkJCQkxNjYzMCBTb3V0aGZpZWxkIFJvYWQKLQkJCQlTdC4gNDFFMTAKLQkJCQlBbGxlbiBQYXJrIE1pY2hpZ2FuIDQ4MTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS05NCAgIChoZXgpCQlDcm9ueXggRW5naW5lZXJpbmcKLTAwMDk5NCAgICAgKGJhc2UgMTYpCQlDcm9ueXggRW5naW5lZXJpbmcKLQkJCQlNYXJzaGFsYSBTb2tvbG92c2tvZ28gc3RyLiA0Ci0JCQkJTW9zY293ICAxMjMwNjMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMDktOTUgICAoaGV4KQkJQ2FzdGxlIFRlY2hub2xvZ3kgTHRkCi0wMDA5OTUgICAgIChiYXNlIDE2KQkJQ2FzdGxlIFRlY2hub2xvZ3kgTHRkCi0JCQkJT3JlIFRyYWRpbmcgRXN0YXRlCi0JCQkJV29vZGJyaWRnZSBSb2FkCi0JCQkJRnJhbWxpbmdoYW0gU3VmZm9sayBJUDEzIDlMTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LTk2ICAgKGhleCkJCVJESQotMDAwOTk2ICAgICAoYmFzZSAxNikJCVJESQotCQkJCTIwNDA2IEVhcmwgU3QuCi0JCQkJVG9ycmFuY2UgQ0EgOTA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTk3ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwOTk3ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wOS05OCAgIChoZXgpCQlDYXBpbmZvIENvbXBhbnkgTGltaXRlZAotMDAwOTk4ICAgICAoYmFzZSAxNikJCUNhcGluZm8gQ29tcGFueSBMaW1pdGVkCi0JCQkJN3RoIEZsb29yIEEgQ29ycG9yYXRlIFNxdWFyZSwgTk8uIDM1IEZpbgotCQkJCUJlaWppbmcgIDEwMDAzMgotCQkJCUNISU5BCi0KLTAwLTA5LTk5ICAgKGhleCkJCUNQIEdFT1JHRVMgUkVOQVVMVAotMDAwOTk5ICAgICAoYmFzZSAxNikJCUNQIEdFT1JHRVMgUkVOQVVMVAotCQkJCTM4IFJ1ZSBCb2JieSBTYW5kcwotCQkJCTQ0ODAwIFNhaW50IEhlcmJsYWluIAotCQkJCUZSQU5DRQotCi0wMC0wOS05QSAgIChoZXgpCQlFTE1PIENPTVBBTlksIExJTUlURUQKLTAwMDk5QSAgICAgKGJhc2UgMTYpCQlFTE1PIENPTVBBTlksIExJTUlURUQKLQkJCQk2LTE0LCBNRUlaRU4tQ0hPLCBNSVpVSE8tS1UKLQkJCQlOQUdPWUEgQUlDSEktUHJlZi4gNDY3LTg1NjcKLQkJCQlKQVBBTgotCi0wMC0wOS05QiAgIChoZXgpCQlXZXN0ZXJuIFRlbGVtYXRpYyBJbmMuCi0wMDA5OUIgICAgIChiYXNlIDE2KQkJV2VzdGVybiBUZWxlbWF0aWMgSW5jLgotCQkJCTUgU3RlcmxpbmcKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTlDICAgKGhleCkJCU5hdmFsIFJlc2VhcmNoIExhYm9yYXRvcnkKLTAwMDk5QyAgICAgKGJhc2UgMTYpCQlOYXZhbCBSZXNlYXJjaCBMYWJvcmF0b3J5Ci0JCQkJQ29kZSA1NTkyCi0JCQkJNDU1NSBPdmVybG9vayBBdmVudWUKLQkJCQlXYXNoaW5ndG9uIERDIDIwMzc1LTUwMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTlEICAgKGhleCkJCUhhbGlwbGV4IENvbW11bmljYXRpb25zCi0wMDA5OUQgICAgIChiYXNlIDE2KQkJSGFsaXBsZXggQ29tbXVuaWNhdGlvbnMKLQkJCQlQTyBCb3ggMTQ3Ci0JCQkJTW9vcm9vbGJhcmsgVmljIDMxMzgKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDktOUUgICAoaGV4KQkJVGVzdGVjaCwgSW5jLgotMDAwOTlFICAgICAoYmFzZSAxNikJCVRlc3RlY2gsIEluYy4KLQkJCQlCdW5kYW5nLVRlY2hub3BhcmssIEMtRG9uZywgNzAyLUhvLCAjMTQ1Ci0JCQkJWWF0YXAtRG9uZywgQnVuZGFuZy1HdSwKLQkJCQlTdW5nbmFtLUNpdHkgS3l1bmdraS1EbyA0NjMtMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LTlGICAgKGhleCkJCVZJREVYIElOQy4KLTAwMDk5RiAgICAgKGJhc2UgMTYpCQlWSURFWCBJTkMuCi0JCQkJMTEwNSBORSBDaXJjbGUgQmx2ZAotCQkJCUNvcnZhbGxpcyBPUiA5NzMzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQTAgICAoaGV4KQkJTWljcm90ZWNobm8gQ29ycG9yYXRpb24KLTAwMDlBMCAgICAgKGJhc2UgMTYpCQlNaWNyb3RlY2hubyBDb3Jwb3JhdGlvbgotCQkJCTItMzMtMzYgU2hpbW9vZGFuYWthCi0JCQkJTmFrYWhhcmEta3UKLQkJCQlLYXdhc2FraSBLYW5hZ2F3YSAyMTEtMDA0MQotCQkJCUpBUEFOCi0KLTAwLTA5LUExICAgKGhleCkJCVRlbGV3aXNlIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA5QTEgICAgIChiYXNlIDE2KQkJVGVsZXdpc2UgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyMDUwIFJpbmd3b29kIEF2ZW51ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1BMiAgIChoZXgpCQlJbnRlcmZhY2UgQ28uLCBMdGQuCi0wMDA5QTIgICAgIChiYXNlIDE2KQkJSW50ZXJmYWNlIENvLiwgTHRkLgotCQkJCTItNS0xMi0yMDEgS3lvbmFuY2hvCi0JCQkJTXVzYXNoaW5vLWNpdHkgVG9reW8gMTgwLTAwMjMKLQkJCQlKQVBBTgotCi0wMC0wOS1BMyAgIChoZXgpCQlMZWFkZmx5IFRlY2hvbG9naWVzIENvcnAuIEx0ZC4KLTAwMDlBMyAgICAgKGJhc2UgMTYpCQlMZWFkZmx5IFRlY2hvbG9naWVzIENvcnAuIEx0ZC4KLQkJCQk5RmwsIE5vLjI2MCwgQmFkZSBSZC4sCi0JCQkJMTA0LCBSLk8uQy4KLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktQTQgICAoaGV4KQkJSEFSVEVDIENvcnBvcmF0aW9uCi0wMDA5QTQgICAgIChiYXNlIDE2KQkJSEFSVEVDIENvcnBvcmF0aW9uCi0JCQkJS09VSE9LVUtVIFNISU4tWU9LT0hBTUEKLQkJCQkzLTE5LTUKLQkJCQlZT0tPSEFNQS1TSEkgS0FOQUdBV0EtS0VOIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMDktQTUgICAoaGV4KQkJSEFOU1VORyBFTEVUUk9OSUMgSU5EVVNUUklFUyBERVZFTE9QTUVOVCBDTy4sIExURAotMDAwOUE1ICAgICAoYmFzZSAxNikJCUhBTlNVTkcgRUxFVFJPTklDIElORFVTVFJJRVMgREVWRUxPUE1FTlQgQ08uLCBMVEQKLQkJCQlIRVVOR0pJTiBCTERHIDNGLCAjMjE3LTMgUE9JLURPTkcsIEtBTkdOCi0JCQkJU0VPVUwgIDEzNS05NjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQTYgICAoaGV4KQkJSWduaXMgT3B0aWNzLCBJbmMuCi0wMDA5QTYgICAgIChiYXNlIDE2KQkJSWduaXMgT3B0aWNzLCBJbmMuCi0JCQkJNDgyIFcuIFNhbiBDYXJsb3MKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1BNyAgIChoZXgpCQlCYW5nICYgT2x1ZnNlbiBBL1MKLTAwMDlBNyAgICAgKGJhc2UgMTYpCQlCYW5nICYgT2x1ZnNlbiBBL1MKLQkJCQlQZXRlciBCYW5ncyBWZWogMTUKLQkJCQlTdHJ1ZXIgIDc2MDAKLQkJCQlERU5NQVJLCi0KLTAwLTA5LUE4ICAgKGhleCkJCUVhc3Rtb2RlIFB0ZSBMdGQKLTAwMDlBOCAgICAgKGJhc2UgMTYpCQlFYXN0bW9kZSBQdGUgTHRkCi0JCQkJMzAgTG95YW5nIFdheSAjMDctMDYKLQkJCQlMb3lhbmcgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQk1MDg3NjkKLQkJCQlTSU5HQVBPUkUKLQotMDAtMDktQTkgICAoaGV4KQkJSWthbm9zIENvbW11bmljYXRpb25zCi0wMDA5QTkgICAgIChiYXNlIDE2KQkJSWthbm9zIENvbW11bmljYXRpb25zCi0JCQkJNDc3MDkgRnJlbW9udCBCbHZkCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQUEgICAoaGV4KQkJRGF0YSBDb21tIGZvciBCdXNpbmVzcywgSW5jLgotMDAwOUFBICAgICAoYmFzZSAxNikJCURhdGEgQ29tbSBmb3IgQnVzaW5lc3MsIEluYy4KLQkJCQkyOTQ5IENvdW50eSBSb2FkIDEwMDAgRWFzdAotCQkJCURld2V5IElMIDYxODUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1BQiAgIChoZXgpCQlOZXRjb250cm9sIE95Ci0wMDA5QUIgICAgIChiYXNlIDE2KQkJTmV0Y29udHJvbCBPeQotCQkJCUthcnZhYW1va3VqYSAzCi0JCQkJSGVsc2lua2kgIEZJTiAwMDM4MAotCQkJCUZJTkxBTkQKLQotMDAtMDktQUMgICAoaGV4KQkJTEFOVk9JQ0UKLTAwMDlBQyAgICAgKGJhc2UgMTYpCQlMQU5WT0lDRQotCQkJCTEzNjQtMzkgU2VvY2hvRG9uZywgIzIwMSBKaWh1biBCbGRnCi0JCQkJU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy0wNzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQUQgICAoaGV4KQkJSFlVTkRBSSBTWVNDT01NLCBJTkMuCi0wMDA5QUQgICAgIChiYXNlIDE2KQkJSFlVTkRBSSBTWVNDT01NLCBJTkMuCi0JCQkJU0FOIDEzNi0xLCBBTUktUkksIEJVQkFMLUVVQgotCQkJCUlDSE9OIEtZT1VOR0tJLURPIDQ2Ny03MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQUUgICAoaGV4KQkJT0tBTk8gRUxFQ1RSSUMgQ08uLExURAotMDAwOUFFICAgICAoYmFzZSAxNikJCU9LQU5PIEVMRUNUUklDIENPLixMVEQKLQkJCQkyLTgtMTggS0FOQVlBTUEtQ0hPCi0JCQkJSElHQVNISUtVUlVNRSBUT0tZTyAyMDMtMDAwMwotCQkJCUpBUEFOCi0KLTAwLTA5LUFGICAgKGhleCkJCWUtZ2VuZXJpcwotMDAwOUFGICAgICAoYmFzZSAxNikJCWUtZ2VuZXJpcwotCQkJCTEzIHJ1ZSBkdSBjaGVuZSBnZXJtYWluCi0JCQkJY2Vzc29uIHNldmlnbmUgIDM1NTEwCi0JCQkJRlJBTkNFCi0KLTAwLTA5LUIwICAgKGhleCkJCU9ua3lvIENvcnBvcmF0aW9uCi0wMDA5QjAgICAgIChiYXNlIDE2KQkJT25reW8gQ29ycG9yYXRpb24KLQkJCQkyLTEgTmlzc2hpbi1jaG8KLQkJCQlOZXlhZ2F3YSBPc2FrYSA1NzI4NTQwCi0JCQkJSkFQQU4KLQotMDAtMDktQjEgICAoaGV4KQkJS2FuZW1hdHN1IEVsZWN0cm9uaWNzLCBMdGQuCi0wMDA5QjEgICAgIChiYXNlIDE2KQkJS2FuZW1hdHN1IEVsZWN0cm9uaWNzLCBMdGQuCi0JCQkJMTctNSwgS3lvYmFzaGkgMi1jaG9tZQotCQkJCUNodW8ta3UgVG9reW8gMTA0LTgzMzgKLQkJCQlKQVBBTgotCi0wMC0wOS1CMiAgIChoZXgpCQlMJkYgSW5jLgotMDAwOUIyICAgICAoYmFzZSAxNikJCUwmRiBJbmMuCi0JCQkJNC0yLTkKLQkJCQlUT0tVTUFSVQotCQkJCUlUQUJBU0hJLUtVIFRva3lvIDE3NS0wMDgzCi0JCQkJSkFQQU4KLQotMDAtMDktQjMgICAoaGV4KQkJTUNNIFN5c3RlbXMgTHRkCi0wMDA5QjMgICAgIChiYXNlIDE2KQkJTUNNIFN5c3RlbXMgTHRkCi0JCQkJS29sb21iYW4gOUYKLQkJCQlBbmthcmFuIFNsb3ZlbmlqYSA2MjgwCi0JCQkJU0xPVkVOSUEKLQotMDAtMDktQjQgICAoaGV4KQkJS0lTQU4gVEVMRUNPTSBDTy4sIExURC4KLTAwMDlCNCAgICAgKGJhc2UgMTYpCQlLSVNBTiBURUxFQ09NIENPLiwgTFRELgotCQkJCTlGLCBUZWF3b24gQmxkZy4sIDY1IEJhbmd5aS1Eb25nCi0JCQkJU29uZ3BhLUd1IFNlb3VsIDEzOC04MjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQjUgICAoaGV4KQkJM0ogVGVjaC4gQ28uLCBMdGQuCi0wMDA5QjUgICAgIChiYXNlIDE2KQkJM0ogVGVjaC4gQ28uLCBMdGQuCi0JCQkJMzQyIEZ1c2hpbmcgTi4gUmQuLCAyRiwgVGFpcGVpLCBUYWl3YW4KLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktQjYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOUI2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQjcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOUI3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NDEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQjggICAoaGV4KQkJRW50aXNlIFN5c3RlbXMKLTAwMDlCOCAgICAgKGJhc2UgMTYpCQlFbnRpc2UgU3lzdGVtcwotCQkJCTEwMDk1IEp1ZHkgQXZlbnVlCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1COSAgIChoZXgpCQlBY3Rpb24gSW1hZ2luZyBTb2x1dGlvbnMKLTAwMDlCOSAgICAgKGJhc2UgMTYpCQlBY3Rpb24gSW1hZ2luZyBTb2x1dGlvbnMKLQkJCQlLaW5ncyBIYWxsLCBTdCBJdmVzIEJ1c2luZXNzIFBhcmsKLQkJCQlTdCBJdmVzCi0JCQkJSHVudGluZ2RvbiBDYW1icmlkZ2VzaGlyZSBQRTI3IDRXWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LUJBICAgKGhleCkJCU1BS1UgSW5mb3JtYXRpb25zdGVjaGlrIEdtYkgKLTAwMDlCQSAgICAgKGJhc2UgMTYpCQlNQUtVIEluZm9ybWF0aW9uc3RlY2hpayBHbWJICi0JCQkJR2V3ZXJiZWhvZnN0ci4gNwotCQkJCUVzc2VuIE5SVyA0NTE0NQotCQkJCUdFUk1BTlkKLQotMDAtMDktQkIgICAoaGV4KQkJTWF0aFN0YXIsIEluYy4KLTAwMDlCQiAgICAgKGJhc2UgMTYpCQlNYXRoU3RhciwgSW5jLgotCQkJCTU5MDAgR3JlZW4gT2FrIERyaXZlCi0JCQkJTWlubmVhcG9saXMgTU4gNTUzNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUJDICAgKGhleCkJCURpZ2l0YWwgU2FmZXR5IFRlY2hub2xvZ2llcywgSW5jCi0wMDA5QkMgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBTYWZldHkgVGVjaG5vbG9naWVzLCBJbmMKLQkJCQk1MTEgRGF2aXMgRHIuCi0JCQkJU3VpdGUgMzAwCi0JCQkJTW9ycmlzdmlsbGUgTkMgMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUJEICAgKGhleCkJCUVweWdpIFRlY2hub2xvZ2llcywgTHRkLgotMDAwOUJEICAgICAoYmFzZSAxNikJCUVweWdpIFRlY2hub2xvZ2llcywgTHRkLgotCQkJCTUwNDAgQWRkaXNvbiBDaXJjbGUKLQkJCQlTdWl0ZSAyMjUKLQkJCQlBZGRpc29uIFRleGFzIDc1MDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1CRSAgIChoZXgpCQlNYW1peWEtT1AgQ28uLEx0ZC4KLTAwMDlCRSAgICAgKGJhc2UgMTYpCQlNYW1peWEtT1AgQ28uLEx0ZC4KLQkJCQkzLTIzLTEwLCBOZWdpc2hpIE1pbmFtaS1rdQotCQkJCVNhaXRhbWEtc2hpIFNhaXRhbWEgMzM2LTg1ODEKLQkJCQlKQVBBTgotCi0wMC0wOS1CRiAgIChoZXgpCQlOaW50ZW5kbyBDby4sTHRkLgotMDAwOUJGICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLixMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMDktQzAgICAoaGV4KQkJNldJTkQKLTAwMDlDMCAgICAgKGJhc2UgMTYpCQk2V0lORAotCQkJCTEsIHBsYWNlIENoYXJsZXMgZGUgR2F1bGxlCi0JCQkJTW9udGlnbnktbGUtQnJldG9ubmV1eCAgNzgxODAKLQkJCQlGUkFOQ0UKLQotMDAtMDktQzEgICAoaGV4KQkJUFJPQ0VTLURBVEEgQS9TCi0wMDA5QzEgICAgIChiYXNlIDE2KQkJUFJPQ0VTLURBVEEgQS9TCi0JCQkJTmF2ZXJ2ZWogOAotCQkJCVNpbGtlYm9yZyAgREstODYwMAotCQkJCURFTk1BUksKLQotMDAtMDktQzIgICAoaGV4KQkJT25pdHksIEluYy4KLTAwMDlDMiAgICAgKGJhc2UgMTYpCQlPbml0eSwgSW5jLgotCQkJCTIyMzIgTm9ydGhtb250IFBhcmt3YXkKLQkJCQlEdWx1dGggR0EgMzAwOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUMzICAgKGhleCkJCU5FVEFTCi0wMDA5QzMgICAgIChiYXNlIDE2KQkJTkVUQVMKLQkJCQlBbGVtZGFnIENhZC4gTm8gMTcxCi0JCQkJVU1SQU5JWUUKLQkJCQlJU1RBTkJVTCAgODEyNDQKLQkJCQlUVVJLRVkKLQotMDAtMDktQzQgICAoaGV4KQkJTWVkaWNvcmUgQ28uLCBMdGQKLTAwMDlDNCAgICAgKGJhc2UgMTYpCQlNZWRpY29yZSBDby4sIEx0ZAotCQkJCTcyLTMgNXRoIEZsLiwgTHVuYSBCbGRnLCBDaHVuZ2RhbS1kb25nCi0JCQkJS2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LUM1ICAgKGhleCkJCUtJTkdFTkUgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwOUM1ICAgICAoYmFzZSAxNikJCUtJTkdFTkUgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTdGLCBOby4gMTQ0LCBNaW5jaHVhbiBFLiBSZC4gU2VjLiAzCi0JCQkJVGFpcGVpICAxMDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LUM2ICAgKGhleCkJCVZpc2lvbmljcyBDb3Jwb3JhdGlvbgotMDAwOUM2ICAgICAoYmFzZSAxNikJCVZpc2lvbmljcyBDb3Jwb3JhdGlvbgotCQkJCTU2MDAgUm93bGFuZCBSb2FkCi0JCQkJU3VpdGUgMjA1Ci0JCQkJTWlubmV0b25rYSBNTiA1NTM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQzcgICAoaGV4KQkJTW92aXN0ZWMKLTAwMDlDNyAgICAgKGJhc2UgMTYpCQlNb3Zpc3RlYwotCQkJCTExMC01IE1hcnlvdW5nIC1yaSBTZW9zdS1teXVuCi0JCQkJS3Vuc2FuIENob25idWsgNTczLTk0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1DOCAgIChoZXgpCQlTSU5BR0FXQSBUU1VTSElOIEtFSVNPVSBTRVJWSUNFCi0wMDA5QzggICAgIChiYXNlIDE2KQkJU0lOQUdBV0EgVFNVU0hJTiBLRUlTT1UgU0VSVklDRQotCQkJCTEzLTUgRnVrZSAsIFN1bWl5b3NoaSAsIE9uYWhhbWEKLQkJCQlJd2FraSBDaXR5IEZ1a3VzaGltYSBQcmVmZWN0dXJlIDk3MS04MTI0Ci0JCQkJSkFQQU4KLQotMDAtMDktQzkgICAoaGV4KQkJQmx1ZVdJTkMgQ28uLCBMdGQuCi0wMDA5QzkgICAgIChiYXNlIDE2KQkJQmx1ZVdJTkMgQ28uLCBMdGQuCi0JCQkJNDAxIEtvcmVhIERlc2lnbiBDZW50ZXIKLQkJCQkzNDQtMSBZYXRhcDEtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtIENpdHkgS3lvbmdnaWE/P2RvIDQ2My04MjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQ0EgICAoaGV4KQkJaU1heE5ldHdvcmtzKFNoZW56aGVuKUxpbWl0ZWQuCi0wMDA5Q0EgICAgIChiYXNlIDE2KQkJaU1heE5ldHdvcmtzKFNoZW56aGVuKUxpbWl0ZWQuCi0JCQkJNC9CLFNvdXRoIEJsZGcgb2YgMjl0aCxTb3V0aCBEaXN0cmljdCBvZgotCQkJCVNoZW56aGVuIEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrLCBTaGVubmEKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMDktQ0IgICAoaGV4KQkJSEJyYWluCi0wMDA5Q0IgICAgIChiYXNlIDE2KQkJSEJyYWluCi0JCQkJIzcwNSBLd2FuZ2xpbSBCbGRnIDE3OSBLdW1pRG9uZwotCQkJCUJ1bmRhbmcgR3UKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaURvIDQ2My04MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQ0MgICAoaGV4KQkJTW9vZyBHbWJICi0wMDA5Q0MgICAgIChiYXNlIDE2KQkJTW9vZyBHbWJICi0JCQkJSGFubnMtS2xlbW0tU3RyLiAyOAotCQkJCUJvZWJsaW5nZW4gIEQtNzEwMzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTA5LUNEICAgKGhleCkJCUhVRFNPTiBTT0ZUIENPLixMVEQuCi0wMDA5Q0QgICAgIChiYXNlIDE2KQkJSFVEU09OIFNPRlQgQ08uLExURC4KLQkJCQlDNjIsR2VpanV0c3Utbm8tbW9yaQotCQkJCTMtY2hvbWUsTWluYW1pLWt1Ci0JCQkJU2FwcG9ybyBIb2trYWlkbyAwMDUtMDg2NAotCQkJCUpBUEFOCi0KLTAwLTA5LUNFICAgKGhleCkJCVNwYWNlQnJpZGdlIFNlbWljb25kdWN0b3IgQ29ycC4KLTAwMDlDRSAgICAgKGJhc2UgMTYpCQlTcGFjZUJyaWRnZSBTZW1pY29uZHVjdG9yIENvcnAuCi0JCQkJMTE1IHJ1ZSBDaGFtcGxhaW4KLQkJCQlIdWxsIFF1ZWJlYyBKOFgzUjEKLQkJCQlDQU5BREEKLQotMDAtMDktQ0YgICAoaGV4KQkJaUFkIEdtYkgKLTAwMDlDRiAgICAgKGJhc2UgMTYpCQlpQWQgR21iSAotCQkJCVVudGVyc2NobGF1ZXJzYmFjaGVyIEhhdXB0c3RyYXNzZSAxMAotCQkJCUdyb3NzaGFiZXJzZG9yZiBCYXZhcmlhIDkwNjEzCi0JCQkJR0VSTUFOWQotCi0wMC0wOS1EMCAgIChoZXgpCQlTb2xhY29tIFRlY2hub2xvZ2llcyBJbmMuCi0wMDA5RDAgICAgIChiYXNlIDE2KQkJU29sYWNvbSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTgwIEplYW4tUHJvdWx4Ci0JCQkJR2F0aW5lYXUgUXVlYmVjIEo4WiAxVzEKLQkJCQlDQU5BREEKLQotMDAtMDktRDEgICAoaGV4KQkJU0VSQU5PQSBORVRXT1JLUyBJTkMKLTAwMDlEMSAgICAgKGJhc2UgMTYpCQlTRVJBTk9BIE5FVFdPUktTIElOQwotCQkJCUNPTkNPUkQgT0ZGSUNFIENFTlRFUgotCQkJCTIzNTIgTUFJTiBTVAotCQkJCUNPTkNPUkQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUQyICAgKGhleCkJCU1haSBMb2dpYyBJbmMuCi0wMDA5RDIgICAgIChiYXNlIDE2KQkJTWFpIExvZ2ljIEluYy4KLQkJCQk0NzY5NyBXZXN0aW5naG91c2UgRHIuLCBTdWl0ZSAyMDAKLQkJCQlGcmVtb250IENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1EMyAgIChoZXgpCQlXZXN0ZXJuIERhdGFDb20gQ28uLCBJbmMuCi0wMDA5RDMgICAgIChiYXNlIDE2KQkJV2VzdGVybiBEYXRhQ29tIENvLiwgSW5jLgotCQkJCTkyNS1EIEJhc3NldHQgUmQuCi0JCQkJV2VzdGxha2UgT0ggNDQxNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUQ0ICAgKGhleCkJCVRyYW5zdGVjaCBOZXR3b3JrcwotMDAwOUQ0ICAgICAoYmFzZSAxNikJCVRyYW5zdGVjaCBOZXR3b3JrcwotCQkJCTEwMCBXb29kIEF2ZW51ZQotCQkJCVN1aXRlIDIwNAotCQkJCUlzZWxpbiBOSiAwODgzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktRDUgICAoaGV4KQkJU2lnbmFsIENvbW11bmljYXRpb24sIEluYy4KLTAwMDlENSAgICAgKGJhc2UgMTYpCQlTaWduYWwgQ29tbXVuaWNhdGlvbiwgSW5jLgotCQkJCTEwMCBXb29kIEF2ZSBTb3V0aAotCQkJCVN1aXRlIDEwMwotCQkJCUlzZWxpbiBOSiAwODgzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktRDYgICAoaGV4KQkJS05DIE9uZSBHbWJICi0wMDA5RDYgICAgIChiYXNlIDE2KQkJS05DIE9uZSBHbWJICi0JCQkJSG9oZSBXZWxsZSAxMCBCCi0JCQkJRXZlc3NlbiBOaWVkZXJzYWNoc2VuIDM4MTczCi0JCQkJR0VSTUFOWQotCi0wMC0wOS1ENyAgIChoZXgpCQlEQyBTZWN1cml0eSBQcm9kdWN0cwotMDAwOUQ3ICAgICAoYmFzZSAxNikJCURDIFNlY3VyaXR5IFByb2R1Y3RzCi0JCQkJT25lIExpbmRzYXkgQ2lyY2xlCi0JCQkJU2FuIEZyYW5jaXNjbyBDYWxpZm9ybmlhIDk0MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1EOCAgIChoZXgpCQlGYWx0IENvbW11bmljYXRpb25zIEFCCi0wMDA5RDggICAgIChiYXNlIDE2KQkJRmFsdCBDb21tdW5pY2F0aW9ucyBBQgotCQkJCUt5bGdyYW5kIDZBCi0JCQkJU0UgOTA2IDIwIFVtZWEgCi0JCQkJU1dFREVOCi0KLTAwLTA5LUQ5ICAgKGhleCkJCU5lb3NjYWxlIFN5c3RlbXMsIEluYwotMDAwOUQ5ICAgICAoYmFzZSAxNikJCU5lb3NjYWxlIFN5c3RlbXMsIEluYwotCQkJCTE1MDAgTWMgQ2FuZGxlc3MgRHJpdmUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktREEgICAoaGV4KQkJQ29udHJvbCBNb2R1bGUgSW5jLgotMDAwOURBICAgICAoYmFzZSAxNikJCUNvbnRyb2wgTW9kdWxlIEluYy4KLQkJCQkyMjcgQnJhaW5hcmQgUm9hZAotCQkJCUVuZmllbGQgQ1QgMDYwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LURCICAgKGhleCkJCWVTcGFjZQotMDAwOURCICAgICAoYmFzZSAxNikJCWVTcGFjZQotCQkJCTk2MjMgU2ltc2J1cnkgQ3QuCi0JCQkJVHdpbnNidXJnIE9IIDQ0MDg3LTMyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LURDICAgKGhleCkJCUdhbGF4aXMgVGVjaG5vbG9neSBBRwotMDAwOURDICAgICAoYmFzZSAxNikJCUdhbGF4aXMgVGVjaG5vbG9neSBBRwotCQkJCVN0ZWlubWV0enN0cmFzc2UgNwotCQkJCVAuTy4gQm94IDMzNjQKLQkJCQlMdWJlY2sgU2NobGVzd2lnLUhvbHN0ZWluIDIzNTU2Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS1ERCAgIChoZXgpCQlNYXZpbiBUZWNobm9sb2d5IEluYy4KLTAwMDlERCAgICAgKGJhc2UgMTYpCQlNYXZpbiBUZWNobm9sb2d5IEluYy4KLQkJCQlSb29tIDMwNSwgQmxkZy4gNTIgTm8uIDE5NS0yOAotCQkJCVNlYy4gNCBDaHVuZy1Ic2luZyBSZC4KLQkJCQlDaHV0dW5nLCBIc2luY2h1ICAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LURFICAgKGhleCkJCVNhbWppbiBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDAwOURFICAgICAoYmFzZSAxNikJCVNhbWppbiBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCU1hamFuZ015dW4gRHVrUHl1bmdSaSAyMzUtMgotCQkJCUljaG9uIEt5b25nR2kgNDY3LTgxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1ERiAgIChoZXgpCQlWZXN0ZWwgS29tdW5pa2FzeW9uIFNhbmF5aSB2ZSBUaWNhcmV0IEEuUy4KLTAwMDlERiAgICAgKGJhc2UgMTYpCQlWZXN0ZWwgS29tdW5pa2FzeW9uIFNhbmF5aSB2ZSBUaWNhcmV0IEEuUy4KLQkJCQlFZ2UgU2VyYmVzdCBCb2xnZXNpIE5vOjE0NC8xCi0JCQkJR2F6aWVtaXIKLQkJCQlJem1pciAtIDM1NDEwCi0JCQkJVFVSS0VZCi0KLTAwLTA5LUUwICAgKGhleCkJCVhFTUlDUyBTLkEuCi0wMDA5RTAgICAgIChiYXNlIDE2KQkJWEVNSUNTIFMuQS4KLQkJCQlSdWUgZGUgbGEgTWFsYWRpZXJlIDcxCi0JCQkJQ0gtMjAwNyBOZXVjaGF0ZWwgTmV1Y2hhdGVsIDIwMDcKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wOS1FMSAgIChoZXgpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDlFMSAgICAgKGJhc2UgMTYpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4xIEplbiBBaSBSb2FkCi0JCQkJSHVrb3UgSHNpbmNodSAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LUUyICAgKGhleCkJCVNpbmJvbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMDlFMiAgICAgKGJhc2UgMTYpCQlTaW5ib24gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJNEYtMTMsIE5vLiA3OSwgU2VjIDEsIEhzaW4gVGFpIFd1IFJkLgotCQkJCUhzaS1DaGloLCBUYWlwZWkgIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktRTMgICAoaGV4KQkJQW5nZWwgSWdsZXNpYXMgUy5BLgotMDAwOUUzICAgICAoYmFzZSAxNikJCUFuZ2VsIElnbGVzaWFzIFMuQS4KLQkJCQlQb2xpZ29ubyAyNyBNYXJ0dXRlbmUKLQkJCQlTYW4gU2ViYXN0aWFuIEd1aXB1emNvYSAyMDAxNAotCQkJCVNQQUlOCi0KLTAwLTA5LUU0ICAgKGhleCkJCUsgVGVjaCBJbmZvc3lzdGVtIEluYy4KLTAwMDlFNCAgICAgKGJhc2UgMTYpCQlLIFRlY2ggSW5mb3N5c3RlbSBJbmMuCi0JCQkJQi00MDUsIEJ1bmRhbmcgVGVjaG5vLVBhcmsgMTQ4LCBZYXRhcC1kbwotCQkJCVNlb25nbmFtIEt5b25nZ2ktRG8gNDY0LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1FNSAgIChoZXgpCQlIb3R0aW5nZXIgQmFsZHdpbiBNZXNzdGVjaG5payBHbWJICi0wMDA5RTUgICAgIChiYXNlIDE2KQkJSG90dGluZ2VyIEJhbGR3aW4gTWVzc3RlY2huaWsgR21iSAotCQkJCUltIFRpZWZlbiBTZWUgNDUKLQkJCQlEYXJtc3RhZHQgSGVzc2VuIDY0MjkzCi0JCQkJR0VSTUFOWQotCi0wMC0wOS1FNiAgIChoZXgpCQlDeWJlciBTd2l0Y2hpbmcgSW5jLgotMDAwOUU2ICAgICAoYmFzZSAxNikJCUN5YmVyIFN3aXRjaGluZyBJbmMuCi0JCQkJMTgwMCBEZSBMYSBDcnV6IEJsdmQuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUU3ICAgKGhleCkJCUFEQyBUZWNob25vbG9neQotMDAwOUU3ICAgICAoYmFzZSAxNikJCUFEQyBUZWNob25vbG9neQotCQkJCVNha2FlIE1lbWJlcnMgT2ZmaWNlIEJsZC4gNC0xNi04LCBTYWthZSwKLQkJCQlOYWdveWEgQWljaGkgNDYwMDAwOAotCQkJCUpBUEFOCi0KLTAwLTA5LUU4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDlFOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUU5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDlFOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUVBICAgKGhleCkJCVlFTSBJbmMuCi0wMDA5RUEgICAgIChiYXNlIDE2KQkJWUVNIEluYy4KLQkJCQkxLTMtMzMKLQkJCQlPa2F0YQotCQkJCUF0c3VnaS1zaGkgS2FuYWdhd2EgMjQzLTAwMjEKLQkJCQlKQVBBTgotCi0wMC0wOS1FQiAgIChoZXgpCQlIdU1BTkRBVEEgTFRELgotMDAwOUVCICAgICAoYmFzZSAxNikJCUh1TUFOREFUQSBMVEQuCi0JCQkJMS0yLTUxCi0JCQkJTmFrYWhvenVtaQotCQkJCUliYXJha2kgT3Nha2EgNTY3LTAwMzQKLQkJCQlKQVBBTgotCi0wMC0wOS1FQyAgIChoZXgpCQlEYWt0cm9uaWNzLCBJbmMuCi0wMDA5RUMgICAgIChiYXNlIDE2KQkJRGFrdHJvbmljcywgSW5jLgotCQkJCTMxNSAzMm5kIEF2ZQotCQkJCUJ1aWxkaW5nICMyCi0JCQkJQnJvb2tpbmdzIFNEIDU3MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1FRCAgIChoZXgpCQlDaXBoZXJPcHRpY3MKLTAwMDlFRCAgICAgKGJhc2UgMTYpCQlDaXBoZXJPcHRpY3MKLQkJCQk3MDEgQ29ycG9yYXRlIENlbnRlciBEcml2ZQotCQkJCVN1aXRlIDE1MAotCQkJCVJhbGVpZ2ggTm9ydGggQ2Fyb2xpbmEgMjc2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUVFICAgKGhleCkJCU1FSUtZTyBFTEVDVFJJQyBDTy4sTFRECi0wMDA5RUUgICAgIChiYXNlIDE2KQkJTUVJS1lPIEVMRUNUUklDIENPLixMVEQKLQkJCQk0LTI3LTIgSGlnYXNoaW9ndQotCQkJCUFyYWthd2Eta3UgVG9reW8gMTE2LTAwMTIKLQkJCQlKQVBBTgotCi0wMC0wOS1FRiAgIChoZXgpCQlWb2NlcmEgQ29tbXVuaWNhdGlvbnMKLTAwMDlFRiAgICAgKGJhc2UgMTYpCQlWb2NlcmEgQ29tbXVuaWNhdGlvbnMKLQkJCQk1MjUgUmFjZSBTdC4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1GMCAgIChoZXgpCQlTaGltaXp1IFRlY2hub2xvZ3kgSW5jLgotMDAwOUYwICAgICAoYmFzZSAxNikJCVNoaW1penUgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTUtNiwgTm8uMTA3LCBDaHVuZyBTaGFuIFJkLiwgU2VjLjEKLQkJCQlIc2luIENodWFuLCBUYWlwZWkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS1GMSAgIChoZXgpCQlZYW1ha2kgRWxlY3RyaWMgQ29ycG9yYXRpb24KLTAwMDlGMSAgICAgKGJhc2UgMTYpCQlZYW1ha2kgRWxlY3RyaWMgQ29ycG9yYXRpb24KLQkJCQkzLTctMjIgU2hpbW9tZWd1cm8KLQkJCQlNZWd1cm8ta3UgVG9reW8gMTUzLTAwNjQKLQkJCQlKQVBBTgotCi0wMC0wOS1GMiAgIChoZXgpCQlDb2h1LCBJbmMuLCBFbGVjdHJvbmljcyBEaXZpc2lvbgotMDAwOUYyICAgICAoYmFzZSAxNikJCUNvaHUsIEluYy4sIEVsZWN0cm9uaWNzIERpdmlzaW9uCi0JCQkJMzkxMiBDYWxsZSBGb3J0dW5hZGEKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUYzICAgKGhleCkJCVdFTEwgQ29tbXVuaWNhdGlvbiBDb3JwLgotMDAwOUYzICAgICAoYmFzZSAxNikJCVdFTEwgQ29tbXVuaWNhdGlvbiBDb3JwLgotCQkJCTExRiwgTm8uNzc4LCBDaHVuZyBDaGVuZyBSZC4sIENodW5nIEhvIEMKLQkJCQlDaHVuZyBIbyAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS1GNCAgIChoZXgpCQlBbGNvbiBMYWJvcmF0b3JpZXMsIEluYy4KLTAwMDlGNCAgICAgKGJhc2UgMTYpCQlBbGNvbiBMYWJvcmF0b3JpZXMsIEluYy4KLQkJCQk2MjAxIFNvdXRoIEZyZWV3YXkKLQkJCQlGb3J0IFdvcnRoIFR4IDc2MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1GNSAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgQ28uLEx0ZAotMDAwOUY1ICAgICAoYmFzZSAxNikJCUVtZXJzb24gTmV0d29yayBQb3dlciBDby4sTHRkCi0JCQkJMS9GLDMvRiBFbGVjdHJpYyBCdWlsZGluZyBIdWF3ZWkgQmFzZSxCYQotCQkJCUxvbmdnYW5nLFNoZW56aGVuIE11bmljaXBhbGl0eSxQZW9wbGU/P3MKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDI5Ci0JCQkJQ0hJTkEKLQotMDAtMDktRjYgICAoaGV4KQkJU2hlbnpoZW4gRWFzdGVybiBEaWdpdGFsIFRlY2ggTHRkLgotMDAwOUY2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEVhc3Rlcm4gRGlnaXRhbCBUZWNoIEx0ZC4KLQkJCQlTaGVuemhlbiBGdXRpYW4gQ2hlZ29uZ21pYW8gVGFpcmFuCi0JCQkJVGVjaG5vbG9neSBQYXJrIDIxMCAtIDNDCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0OAotCQkJCUNISU5BCi0KLTAwLTA5LUY3ICAgKGhleCkJCVNFRCwgYSBkaXZpc2lvbiBvZiBDYWxpYW4KLTAwMDlGNyAgICAgKGJhc2UgMTYpCQlTRUQsIGEgZGl2aXNpb24gb2YgQ2FsaWFuCi0JCQkJMTggSW5ubm92YXRpb24gQm91bGV2YXJkCi0JCQkJUC5PLiBCb3ggMTQ2NAotCQkJCVNhc2thdG9vbiBTYXNrYXRjaGV3YW4gKFNLKSBTN0sgM1A3Ci0JCQkJQ0FOQURBCi0KLTAwLTA5LUY4ICAgKGhleCkJCVVOSU1PIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDA5RjggICAgIChiYXNlIDE2KQkJVU5JTU8gVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQlCQU5HQkFFIERPTkcgNDc5LTEyCi0JCQkJU0VPQ0hPLUdVLAotCQkJCVNFT1VMICAxMzctODIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LUY5ICAgKGhleCkJCUFSVCBKQVBBTiBDTy4sIExURC4KLTAwMDlGOSAgICAgKGJhc2UgMTYpCQlBUlQgSkFQQU4gQ08uLCBMVEQuCi0JCQkJMzIyLTcsIEljaGlub3RzdWJvLAotCQkJCU5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjExLTAwMTYKLQkJCQlKQVBBTgotCi0wMC0wOS1GQiAgIChoZXgpCQlQaGlsaXBzIFBhdGllbnQgTW9uaXRvcmluZwotMDAwOUZCICAgICAoYmFzZSAxNikJCVBoaWxpcHMgUGF0aWVudCBNb25pdG9yaW5nCi0JCQkJSGV3bGV0dC1QYWNrYXJkLVN0ci4yCi0JCQkJQm9lYmxpbmdlbiAgNzEwMzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTA5LUZDICAgKGhleCkJCUlQRkxFWCBJbmMuCi0wMDA5RkMgICAgIChiYXNlIDE2KQkJSVBGTEVYIEluYy4KLQkJCQlNb3dhLUJsZGcgM0YsIDEtMTYtNgotCQkJCUViaXN1LW5pc2hpCi0JCQkJU2hpYnV5YS1rdSBUb2t5byAxNTAtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTA5LUZEICAgKGhleCkJCVViaW5ldGljcyBMaW1pdGVkCi0wMDA5RkQgICAgIChiYXNlIDE2KQkJVWJpbmV0aWNzIExpbWl0ZWQKLQkJCQlDYW1icmlkZ2UgVGVjaG5vbG9neSBDZW50cmUKLQkJCQlNZWxib3VybiBIZXJ0Zm9yZHNoaXJlIFNHOCA2RFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wOS1GRSAgIChoZXgpCQlEYWlzeSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDlGRSAgICAgKGJhc2UgMTYpCQlEYWlzeSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMjA5IE9yYW5nZSBTdHJlZXQKLQkJCQlDb3VudHkgb2YgTmV3IENhc3RsZQotCQkJCUNpdHkgb2YgV2lsbWluZ3RvbiBERSAxOTgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktRkYgICAoaGV4KQkJWC5uZXQgMjAwMCBHbWJICi0wMDA5RkYgICAgIChiYXNlIDE2KQkJWC5uZXQgMjAwMCBHbWJICi0JCQkJS29lbmlnc2JlcmdlciBTdHIuIDJjCi0JCQkJUmVpbmhlaW0gIDY0MzU0Ci0JCQkJR0VSTUFOWQotCi0wMC0wQS0wMCAgIChoZXgpCQlNZWRpYXRlayBDb3JwLgotMDAwQTAwICAgICAoYmFzZSAxNikJCU1lZGlhdGVrIENvcnAuCi0JCQkJOEYsIE5vIDY5LTUsIFNlYy4yLCBDaHVuZyBDaGVuZyBFYXN0IFJkLgotCQkJCVRhaXBlaSAgMjUxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS0wMSAgIChoZXgpCQlTT0hPd2FyZSwgSW5jLgotMDAwQTAxICAgICAoYmFzZSAxNikJCVNPSE93YXJlLCBJbmMuCi0JCQkJMzA1MCBDb3JvbmFkbyBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0wMiAgIChoZXgpCQlBTk5TTyBDTy4sIExURC4KLTAwMEEwMiAgICAgKGJhc2UgMTYpCQlBTk5TTyBDTy4sIExURC4KLQkJCQk1RiwgTm8uIDEwMCwgTWluLUNodWFuIFJvYWQsIFNoaW5nLVRpZW4KLQkJCQlTaGluZy1UaWVuIENpdHkgVGFpcGVpIEhzaWVuIFRhaXdhbiAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTAzICAgKGhleCkJCUVOREVTQSBTRVJWSUNJT1MsIFMuTC4KLTAwMEEwMyAgICAgKGJhc2UgMTYpCQlFTkRFU0EgU0VSVklDSU9TLCBTLkwuCi0JCQkJQVZHREEgUEFSQUwuTEVMLCA1MQotCQkJCUJBUkNFTE9OQSAgMDgwMDQKLQkJCQlTUEFJTgotCi0wMC0wQS0wNCAgIChoZXgpCQkzQ29tIEx0ZAotMDAwQTA0ICAgICAoYmFzZSAxNikJCTNDb20gTHRkCi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS0wNSAgIChoZXgpCQlXaWRheCBDb3JwLgotMDAwQTA1ICAgICAoYmFzZSAxNikJCVdpZGF4IENvcnAuCi0JCQkJMjY5IFN0ZXZlbnMgU3RyZWV0Ci0JCQkJSHlhbm5pcyBNQSAwMjY2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMDYgICAoaGV4KQkJVGVsZWRleCBMTEMKLTAwMEEwNiAgICAgKGJhc2UgMTYpCQlUZWxlZGV4IExMQwotCQkJCTYzMTEgU2FuIElnbmFjaW8gQXZlbnVlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTA3ICAgKGhleCkJCVdlYldheU9uZSBMdGQKLTAwMEEwNyAgICAgKGJhc2UgMTYpCQlXZWJXYXlPbmUgTHRkCi0JCQkJMTEgS2luZ2Zpc2hlciBDb3VydCwKLQkJCQlIYW1icmlkZ2UgUm9hZAotCQkJCU5ld2J1cnkgQmVya3NoaXJlIFJHMTQgNVNKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtMDggICAoaGV4KQkJQUxQSU5FIEVMRUNUUk9OSUNTLCBJTkMuCi0wMDBBMDggICAgIChiYXNlIDE2KQkJQUxQSU5FIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJMjAtMSBZb3NoaW1hLUtvZ3lvZGFuY2hpCi0JCQkJaXdha2ktY2l0eSBGdWt1c2hpbWEgOTcwLTExOTIKLQkJCQlKQVBBTgotCi0wMC0wQS0wOSAgIChoZXgpCQlUYXJhQ29tIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4KLTAwMEEwOSAgICAgKGJhc2UgMTYpCQlUYXJhQ29tIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4KLQkJCQk4MzAgU3Rld2FydCBEci4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTBBICAgKGhleCkJCVNVTklYIENvLiwgTHRkLgotMDAwQTBBICAgICAoYmFzZSAxNikJCVNVTklYIENvLiwgTHRkLgotCQkJCTNGbC4sIE5vLiA3NiwgQmF1Z2F1IFJkLiwKLQkJCQlTaGluZGlhbiBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS0wQiAgIChoZXgpCQlTZWFsZXZlbCBTeXN0ZW1zLCBJbmMuCi0wMDBBMEIgICAgIChiYXNlIDE2KQkJU2VhbGV2ZWwgU3lzdGVtcywgSW5jLgotCQkJCTE1NSBUZWNobm9sb2d5IFBsYWNlCi0JCQkJTGliZXJ0eSBTQyAyOTY1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMEMgICAoaGV4KQkJU2NpZW50aWZpYyBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotMDAwQTBDICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgUmVzZWFyY2ggQ29ycG9yYXRpb24KLQkJCQkyMzAwIFdpbmR5IFJpZGdlIFBhcmt3YXkKLQkJCQlTdWl0ZSA0MDAgU291dGgKLQkJCQlBdGxhbnRhIEdBIDMwMzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0wRCAgIChoZXgpCQlGQ0kgRGV1dHNjaGxhbmQgR21iSAotMDAwQTBEICAgICAoYmFzZSAxNikJCUZDSSBEZXV0c2NobGFuZCBHbWJICi0JCQkJV2VybmVyd2Vya2RhbW0gMTYsCi0JCQkJQmVybGluICAxMzYyOSAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLTBFICAgKGhleCkJCUludml2byBSZXNlYXJjaCBJbmMuCi0wMDBBMEUgICAgIChiYXNlIDE2KQkJSW52aXZvIFJlc2VhcmNoIEluYy4KLQkJCQkxMjYwMSBSZXNlYXJjaCBQYXJrd2F5Ci0JCQkJT3JsYW5kbyBGbG9yaWRhIDMyODI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0wRiAgIChoZXgpCQlJbHJ5dW5nIFRlbGVzeXMsIEluYwotMDAwQTBGICAgICAoYmFzZSAxNikJCUlscnl1bmcgVGVsZXN5cywgSW5jCi0JCQkJSWxyeXVuZyBibGRnLCAzNC0yLCBDaGVvbmhvLWRvbmcKLQkJCQlHYW5nZG9uZy1ndQotCQkJCVNFT1VMICAxMzQtODYxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTEwICAgKGhleCkJCUZBU1QgbWVkaWEgaW50ZWdyYXRpb25zIEFHCi0wMDBBMTAgICAgIChiYXNlIDE2KQkJRkFTVCBtZWRpYSBpbnRlZ3JhdGlvbnMgQUcKLQkJCQlTY2hvbmdydW5kIDI2Ci0JCQkJUm90a3JldXogQ2FudG9uIG9mIFp1ZyA2MzQzCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEEtMTEgICAoaGV4KQkJRXhQZXQgVGVjaG5vbG9naWVzLCBJbmMKLTAwMEExMSAgICAgKGJhc2UgMTYpCQlFeFBldCBUZWNobm9sb2dpZXMsIEluYwotCQkJCTZGLCBLeW9uZ2dpIFNtYWxsIEJ1c2luZXNzIENlbnRlcgotCQkJCSMxMTEtOCwgSXVpLWRvbmcsIFBhbGRhbC1ndSwKLQkJCQlTdXdvbiwgS3lvbmdnaS1kbywgNDQyLTI3MCAgNDQyLTc3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS0xMiAgIChoZXgpCQlBenlsZXggVGVjaG5vbG9neSwgSW5jCi0wMDBBMTIgICAgIChiYXNlIDE2KQkJQXp5bGV4IFRlY2hub2xvZ3ksIEluYwotCQkJCTctMkZsLiwgTm8uIDczOCBDaHVuZyBDaGVuZyBSb2FkLAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtMTMgICAoaGV4KQkJSG9uZXl3ZWxsIFZpZGVvIFN5c3RlbXMKLTAwMEExMyAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgVmlkZW8gU3lzdGVtcwotCQkJCTY1NTQgMTc2IFN0cmVldAotCQkJCVN1cnJleSBCQyBWM1MgNEc1Ci0JCQkJQ0FOQURBCi0KLTAwLTBBLTE0ICAgKGhleCkJCVRFQ08gYS5zLgotMDAwQTE0ICAgICAoYmFzZSAxNikJCVRFQ08gYS5zLgotCQkJCUhhdmxpY2tvdmEgMjYwCi0JCQkJS09MSU4gQ1ogMjgwIDU4Ci0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMEEtMTUgICAoaGV4KQkJU2lsaWNvbiBEYXRhLCBJbmMKLTAwMEExNSAgICAgKGJhc2UgMTYpCQlTaWxpY29uIERhdGEsIEluYwotCQkJCTQ2OTkgT2xkIElyb25zaWRlcyBEci4sICMxNTAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMTYgICAoaGV4KQkJTGFzc2VuIFJlc2VhcmNoCi0wMDBBMTYgICAgIChiYXNlIDE2KQkJTGFzc2VuIFJlc2VhcmNoCi0JCQkJMzE2OTUgRm9yd2FyZCBSb2FkCi0JCQkJTWFudG9uIENBIDk2MDU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0xNyAgIChoZXgpCQlORVNUQVIgQ09NTVVOSUNBVElPTlMsIElOQwotMDAwQTE3ICAgICAoYmFzZSAxNikJCU5FU1RBUiBDT01NVU5JQ0FUSU9OUywgSU5DCi0JCQkJTm8uNiwxOSBMYW5lIEJhZGUgUm9hZAotCQkJCUhTSU5DSFUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtMTggICAoaGV4KQkJVmljaGVsIEluYy4KLTAwMEExOCAgICAgKGJhc2UgMTYpCQlWaWNoZWwgSW5jLgotCQkJCTNGIEphbmcgQmxkZy4gOTItNiBZYW5namFlLWRvbmcsIFNlY2hvLWcKLQkJCQlTZW91bCAgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS0xOSAgIChoZXgpCQlWYWxlcmUgUG93ZXIsIEluYy4KLTAwMEExOSAgICAgKGJhc2UgMTYpCQlWYWxlcmUgUG93ZXIsIEluYy4KLQkJCQk2NjEgTi4gUGxhbm8gUmQuCi0JCQkJUmljaGFyZHNvbiBUZXhhcyA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMUEgICAoaGV4KQkJSW1lcmdlIEx0ZAotMDAwQTFBICAgICAoYmFzZSAxNikJCUltZXJnZSBMdGQKLQkJCQlVbml0IDYsIEJhciBIaWxsIEJ1c2luZXNzIFBhcmsKLQkJCQlTYXhvbiBXYXkKLQkJCQlCYXIgSGlsbCBDYW1icmlkZ2UgQ0IzIDhTTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBBLTFCICAgKGhleCkJCVN0cmVhbSBMYWJzCi0wMDBBMUIgICAgIChiYXNlIDE2KQkJU3RyZWFtIExhYnMKLQkJCQlMZW5pbnNraWUgZ29yaSAxLCBiaWxkIDc3Ci0JCQkJTW9za293ICAxMTk5OTIKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMEEtMUMgICAoaGV4KQkJQnJpZGdlIEluZm9ybWF0aW9uIENvLiwgTHRkLgotMDAwQTFDICAgICAoYmFzZSAxNikJCUJyaWRnZSBJbmZvcm1hdGlvbiBDby4sIEx0ZC4KLQkJCQlOby4zLCBMYW5lIDEwNiwgV3UtS3VuZyAyIFJkLiwKLQkJCQlXdS1LdSBJbmQuIFBhcmssCi0JCQkJVGFpcGVpICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTFEICAgKGhleCkJCU9wdGljYWwgQ29tbXVuaWNhdGlvbnMgUHJvZHVjdHMgSW5jLgotMDAwQTFEICAgICAoYmFzZSAxNikJCU9wdGljYWwgQ29tbXVuaWNhdGlvbnMgUHJvZHVjdHMgSW5jLgotCQkJCTIwOTYxIEtuYXBwIFN0LgotCQkJCUNoYXRzd29ydGggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTFFICAgKGhleCkJCVJlZC1NIFByb2R1Y3RzIExpbWl0ZWQKLTAwMEExRSAgICAgKGJhc2UgMTYpCQlSZWQtTSBQcm9kdWN0cyBMaW1pdGVkCi0JCQkJTmVwdHVuZSBIb3VzZQotCQkJCU1lcmN1cnkgUGFyaywgV3ljb21iZSBMYW5lCi0JCQkJV29vYnVybiBHcmVlbiBCdWNraW5naGFtc2hpcmUgSFAxMCAwSEgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS0xRiAgIChoZXgpCQlBUlQgV0FSRSBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMEExRiAgICAgKGJhc2UgMTYpCQlBUlQgV0FSRSBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQk4MDYgQWNlIFRlY2hubyBUb3dlciAjMSwgMTk3LTE3Ci0JCQkJR3Vyby1kb25nLCBHdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtMjAgICAoaGV4KQkJU1ZBIE5ldHdvcmtzLCBJbmMuCi0wMDBBMjAgICAgIChiYXNlIDE2KQkJU1ZBIE5ldHdvcmtzLCBJbmMuCi0JCQkJODQwIEYgQXZlLiwgU3VpdGUgMTA0Ci0JCQkJUGxhbm8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTIxICAgKGhleCkJCUludGVncmEgVGVsZWNvbSBDby4gTHRkCi0wMDBBMjEgICAgIChiYXNlIDE2KQkJSW50ZWdyYSBUZWxlY29tIENvLiBMdGQKLQkJCQk3dGggZmxvb3IgSHdheW91bmcgQmxkLiAxMTItMgotCQkJCUthcmFrLWRvbmcgU29ucGEtZ3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTIyICAgKGhleCkJCUFtcGVyaW9uIEluYwotMDAwQTIyICAgICAoYmFzZSAxNikJCUFtcGVyaW9uIEluYwotCQkJCTI1MCBBcG9sbG8gRHJpdmUKLQkJCQlDaGVsbXNmb3JkIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0yMyAgIChoZXgpCQlQYXJhbWEgTmV0d29ya3MgSW5jCi0wMDBBMjMgICAgIChiYXNlIDE2KQkJUGFyYW1hIE5ldHdvcmtzIEluYwotCQkJCTE5NTUgVGhlIEFsYW1lZGEKLQkJCQlTYW4gSm9zZSBDQSA5NTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMjQgICAoaGV4KQkJT2N0YXZlIENvbW11bmljYXRpb25zCi0wMDBBMjQgICAgIChiYXNlIDE2KQkJT2N0YXZlIENvbW11bmljYXRpb25zCi0JCQkJODUgTm9ydGh3ZXN0IEJvdWxldmFyZAotCQkJCU5hc2h1YSBOSCAwMzA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMjUgICAoaGV4KQkJQ0VSQUdPTiBORVRXT1JLUwotMDAwQTI1ICAgICAoYmFzZSAxNikJCUNFUkFHT04gTkVUV09SS1MKLQkJCQkyNCBSQVVFTCBXQUxMRU5CRVJHIFNUUkVFVAotCQkJCVRFTC1BVklWICA5NjcxOQotCQkJCUlTUkFFTAotCi0wMC0wQS0yNiAgIChoZXgpCQlDRUlBIFMucC5BLgotMDAwQTI2ICAgICAoYmFzZSAxNikJCUNFSUEgUy5wLkEuCi0JCQkJWm9uYSBJbmR1c3RyaWFsZSBkaSBWaWNpb21hZ2dpbyA1NAotCQkJCUFyZXp6byBBUiA1MjA0MAotCQkJCUlUQUxZCi0KLTAwLTBBLTI3ICAgKGhleCkJCUFwcGxlIENvbXB1dGVyLCBJbmMuCi0wMDBBMjcgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIsIEluYy4KLQkJCQkyMDY1MCBWYWxsZXkgR3JlZW4gRHJpdmUKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTI4ICAgKGhleCkJCU1vdG9yb2xhCi0wMDBBMjggICAgIChiYXNlIDE2KQkJTW90b3JvbGEKLQkJCQk2MDAgTi4gVVMgSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0yOSAgIChoZXgpCQlQYW4gRGFjb20gTmV0d29ya2luZyBBRwotMDAwQTI5ICAgICAoYmFzZSAxNikJCVBhbiBEYWNvbSBOZXR3b3JraW5nIEFHCi0JCQkJRHJlaWVpY2ggUGxhemEgMUIKLQkJCQlEcmVpZWljaCBIZXNzZW4gRC02MzMwMwotCQkJCUdFUk1BTlkKLQotMDAtMEEtMkEgICAoaGV4KQkJUVNJIFN5c3RlbXMgSW5jLgotMDAwQTJBICAgICAoYmFzZSAxNikJCVFTSSBTeXN0ZW1zIEluYy4KLQkJCQk3IFJheW1vbmQgQXZlbnVlCi0JCQkJQnVpbGRpbmcgQiwgVW5pdCAxMQotCQkJCVNhbGVtIE5IIDAzMDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0yQiAgIChoZXgpCQlFdGhlcnN0dWZmCi0wMDBBMkIgICAgIChiYXNlIDE2KQkJRXRoZXJzdHVmZgotCQkJCTIwOCBXLiBNaW1vc2EgQ2lyY2xlCi0JCQkJU2FuIE1hcmNvcyBUWCA3ODY2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMkMgICAoaGV4KQkJQWN0aXZlIFRjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwQTJDICAgICAoYmFzZSAxNikJCUFjdGl2ZSBUY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkxNi0yMywgU2hpYmF1cmEgMi1DaG9tZSwKLQkJCQlNaW5hdG8ta3UsCi0JCQkJVG9reW8gVG9reW8gMTA4LTAwMjMKLQkJCQlKQVBBTgotCi0wMC0wQS0yRCAgIChoZXgpCQlDYWJvdCBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0wMDBBMkQgICAgIChiYXNlIDE2KQkJQ2Fib3QgQ29tbXVuaWNhdGlvbnMgTGltaXRlZAotCQkJCVZlcm9uYSBIb3VzZQotCQkJCUZpbHdvb2QgUm9hZAotCQkJCUJyaXN0b2wgR2xvdWNlc3RlcnNoaXJlIEJTMTYgM1JZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtMkUgICAoaGV4KQkJTUFQTEUgTkVUV09SS1MgQ08uLCBMVEQKLTAwMEEyRSAgICAgKGJhc2UgMTYpCQlNQVBMRSBORVRXT1JLUyBDTy4sIExURAotCQkJCTYwMiwgRG9uZ3doYQotCQkJCTM0OS0yNCwgU2hpbmRhZWJhbmctRG9uZywgRG9uZ2phay1HdQotCQkJCVNFT1VMICAxNTYtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTJGICAgKGhleCkJCUFydG5peCBJbmMuCi0wMDBBMkYgICAgIChiYXNlIDE2KQkJQXJ0bml4IEluYy4KLQkJCQlDaHVuZ2ppbiBCL0QsIDQ3NS0yMiBCYW5nYmFlLCBTZW9jaG8KLQkJCQlTZW91bCAgMTM3LTgxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS0zMCAgIChoZXgpCQlKb2huc29uIENvbnRyb2xzLUFTRwotMDAwQTMwICAgICAoYmFzZSAxNikJCUpvaG5zb24gQ29udHJvbHMtQVNHCi0JCQkJOTE1IEVhc3QgMzJuZCBTdHJlZXQKLQkJCQlIb2xsYW5kIE1JIDQ5NDIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0zMSAgIChoZXgpCQlIQ1YgQ29uc3VsdGluZwotMDAwQTMxICAgICAoYmFzZSAxNikJCUhDViBDb25zdWx0aW5nCi0JCQkJUCBPIEJveCAzNjkyCi0JCQkJSGVsZW5zdmFsZSBUb3duIENlbnRyZSA0MjEyCi0JCQkJUXVlZW5zbGFuZCAgIDQyMTIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtMzIgICAoaGV4KQkJWHNpZG8gQ29ycG9yYXRpb24KLTAwMEEzMiAgICAgKGJhc2UgMTYpCQlYc2lkbyBDb3Jwb3JhdGlvbgotCQkJCTNGLDItOC0xMyxTaGliYS1EYWltb24sCi0JCQkJTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwNS0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMEEtMzMgICAoaGV4KQkJRW11bGV4IENvcnBvcmF0aW9uCi0wMDBBMzMgICAgIChiYXNlIDE2KQkJRW11bGV4IENvcnBvcmF0aW9uCi0JCQkJMjAyMSBPcHBvcnR1bml0eSBEcml2ZQotCQkJCVN1aXRlIDEKLQkJCQlSb3NldmlsbGUgQ0EgOTU2NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM0ICAgKGhleCkJCUlkZW50aWNhcmQgU3lzdGVtcyBJbmNvcnBvcmF0ZWQKLTAwMEEzNCAgICAgKGJhc2UgMTYpCQlJZGVudGljYXJkIFN5c3RlbXMgSW5jb3Jwb3JhdGVkCi0JCQkJNDAgQ2l0YXRpb24gTGFuZQotCQkJCUxhbmNhc3RlciBQZW5uc3lsdmFuaWEgMTc2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM1ICAgKGhleCkJCVhpbGlueAotMDAwQTM1ICAgICAoYmFzZSAxNikJCVhpbGlueAotCQkJCTIxMDAgTG9naWMgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NDExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMzYgICAoaGV4KQkJU3luZWxlYyBUZWxlY29tIE11bHRpbWVkaWEKLTAwMEEzNiAgICAgKGJhc2UgMTYpCQlTeW5lbGVjIFRlbGVjb20gTXVsdGltZWRpYQotCQkJCVpvbmUgSW5kdXN0cmllbGxlCi0JCQkJU2FpbnQgU2VybmluIHN1ciBSYW5jZSBBdmV5cm9uIEYtMTIzODAKLQkJCQlGUkFOQ0UKLQotMDAtMEEtMzcgICAoaGV4KQkJUHJvY2VyYSBOZXR3b3JrcywgSW5jLgotMDAwQTM3ICAgICAoYmFzZSAxNikJCVByb2NlcmEgTmV0d29ya3MsIEluYy4KLQkJCQkxMjk5IE9ybGVhbnMgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM4ICAgKGhleCkJCUFwYW5pIE5ldHdvcmtzCi0wMDBBMzggICAgIChiYXNlIDE2KQkJQXBhbmkgTmV0d29ya3MKLQkJCQkxODAwIEUuIEltcGVyaWFsIEh3eQotCQkJCVN1aXRlIDIxMAotCQkJCUJyZWEgQ0EgOTI4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM5ICAgKGhleCkJCUxvUEEgSW5mb3JtYXRpb24gVGVjaG5vbG9neQotMDAwQTM5ICAgICAoYmFzZSAxNikJCUxvUEEgSW5mb3JtYXRpb24gVGVjaG5vbG9neQotCQkJCTcxMC05LCBEYWUgTGltIDMtRG9uZwotCQkJCVlvdW5nIERldW5nIHBvLWd1IFNlb3VsLCBLb3JlYSAxNTAtODE0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTNBICAgKGhleCkJCUotVEhSRUUgSU5URVJOQVRJT05BTCBIb2xkaW5nIENvLiwgTHRkLgotMDAwQTNBICAgICAoYmFzZSAxNikJCUotVEhSRUUgSU5URVJOQVRJT05BTCBIb2xkaW5nIENvLiwgTHRkLgotCQkJCU5vLiAxLCBZdS0zIFJkLiwgWW91dGggSW5kdXN0cmlhbCBQYXJrCi0JCQkJWWFuZy1tZWksIFRhb3l1YW4gSHNpZW4gIDMyNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtM0IgICAoaGV4KQkJR0NUIFNlbWljb25kdWN0b3IsIEluYwotMDAwQTNCICAgICAoYmFzZSAxNikJCUdDVCBTZW1pY29uZHVjdG9yLCBJbmMKLQkJCQkyMTIxIFJpbmd3b29kIEF2ZW51ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0zQyAgIChoZXgpCQlFbmVycG9pbnQgTHRkLgotMDAwQTNDICAgICAoYmFzZSAxNikJCUVuZXJwb2ludCBMdGQuCi0JCQkJS2Fpdm9wdWlzdG9udGllIDMzCi0JCQkJUmF1bWEgIDI2MTAwCi0JCQkJRklOTEFORAotCi0wMC0wQS0zRCAgIChoZXgpCQlFbG8gU2lzdGVtYXMgRWxldHJvbmljb3MgUy5BLgotMDAwQTNEICAgICAoYmFzZSAxNikJCUVsbyBTaXN0ZW1hcyBFbGV0cm9uaWNvcyBTLkEuCi0JCQkJUnVhIEVkdSBDaGF2ZXMsIDU0NwotCQkJCVBvcnRvIEFsZWdyZSBSUyA5MC4yNDAtNjIwCi0JCQkJQlJBWklMCi0KLTAwLTBBLTNFICAgKGhleCkJCUVBRFMgVGVsZWNvbQotMDAwQTNFICAgICAoYmFzZSAxNikJCUVBRFMgVGVsZWNvbQotCQkJCUxhbmRzaHV0ZXIgU3RyYXNzZSAyNgotCQkJCU11bmljaCBCYXZhcmlhIDg1NzE2Ci0JCQkJR0VSTUFOWQotCi0wMC0wQS0zRiAgIChoZXgpCQlEYXRhIEVhc3QgQ29ycG9yYXRpb24KLTAwMEEzRiAgICAgKGJhc2UgMTYpCQlEYXRhIEVhc3QgQ29ycG9yYXRpb24KLQkJCQk0LTQxLTEwIE1pbmFtaS1PZ2lrdWJvCi0JCQkJU3VnaW5hbWkta3UgVE9LWU8gMTY3LTAwNTIKLQkJCQlKQVBBTgotCi0wMC0wQS00MCAgIChoZXgpCQlDcm93biBBdWRpbyAtLSBIYXJtYW5tIEludGVybmF0aW9uYWwKLTAwMEE0MCAgICAgKGJhc2UgMTYpCQlDcm93biBBdWRpbyAtLSBIYXJtYW5tIEludGVybmF0aW9uYWwKLQkJCQkxNzE4IFcuIE1pc2hhd2FrYSBSZAotCQkJCUVsa2hhcnQgSU4gNDY1MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTQxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEE0MSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTQyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEE0MiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTQzICAgKGhleCkJCUNodW5naHdhIFRlbGVjb20gQ28uLCBMdGQuCi0wMDBBNDMgICAgIChiYXNlIDE2KQkJQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQkxMiwgTGFuZSA1NTEsIE1pbi1Uc3UgUm9hZAotCQkJCVNlYy4gNSBZYW5nLU1laSwKLQkJCQlUYW95dWFuICAzMjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTQ0ICAgKGhleCkJCUF2ZXJ5IERlbm5pc29uIERldXRzY2hsYW5kIEdtYkgKLTAwMEE0NCAgICAgKGJhc2UgMTYpCQlBdmVyeSBEZW5uaXNvbiBEZXV0c2NobGFuZCBHbWJICi0JCQkJT2htc3RyLiAzCi0JCQkJRWNoaW5nICA4NTM4NgotCQkJCUdFUk1BTlkKLQotMDAtMEEtNDUgICAoaGV4KQkJQXVkaW8tVGVjaG5pY2EgQ29ycC4KLTAwMEE0NSAgICAgKGJhc2UgMTYpCQlBdWRpby1UZWNobmljYSBDb3JwLgotCQkJCU5hcnVzZSAxLDM0OAotCQkJCU1hY2hpZGEgVG9reW8gMTk0LTg1NjYKLQkJCQlKQVBBTgotCi0wMC0wQS00NiAgIChoZXgpCQlBUk8gV0VMRElORyBURUNITk9MT0dJRVMgU0FTCi0wMDBBNDYgICAgIChiYXNlIDE2KQkJQVJPIFdFTERJTkcgVEVDSE5PTE9HSUVTIFNBUwotCQkJCVpJIGRlIE1vbnQgc3VyIExvaXIKLQkJCQlDaGF0ZWF1IGR1IExvaXIgc2FydGhlIDcyNTAwCi0JCQkJRlJBTkNFCi0KLTAwLTBBLTQ3ICAgKGhleCkJCUFsbGllZCBWaXNpb24gVGVjaG5vbG9naWVzCi0wMDBBNDcgICAgIChiYXNlIDE2KQkJQWxsaWVkIFZpc2lvbiBUZWNobm9sb2dpZXMKLQkJCQlUYXNjaGVud2VnIDJhCi0JCQkJU3RhZHRyb2RhIFRodXJpbmdlbiAwNzY0NgotCQkJCUdFUk1BTlkKLQotMDAtMEEtNDggICAoaGV4KQkJQWxiYXRyb24gVGVjaG5vbG9neQotMDAwQTQ4ICAgICAoYmFzZSAxNikJCUFsYmF0cm9uIFRlY2hub2xvZ3kKLQkJCQk2RiwgTm8gNzE2LCBDaHVuZyBDaGVuZywKLQkJCQlDaHVuZy1IbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTQ5ICAgKGhleCkJCUY1IE5ldHdvcmtzLCBJbmMuCi0wMDBBNDkgICAgIChiYXNlIDE2KQkJRjUgTmV0d29ya3MsIEluYy4KLQkJCQk0MDEgRWxsaW90dCBBdmUuIFcuCi0JCQkJU2VhdHRsZSBXQSA5ODExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNEEgICAoaGV4KQkJVGFyZ2EgU3lzdGVtcyBMdGQuCi0wMDBBNEEgICAgIChiYXNlIDE2KQkJVGFyZ2EgU3lzdGVtcyBMdGQuCi0JCQkJMTkwNSBHcmFuZHRlY2ggQ2VudHJlLAotCQkJCTggT24gUGluZyBTdC4gIFNpdSBMZWsgWXVlbgotCQkJCVNoYXRpbiBOLlQuIAotCQkJCUhPTkcgS09ORwotCi0wMC0wQS00QiAgIChoZXgpCQlEYXRhUG93ZXIgVGVjaG5vbG9neSwgSW5jLgotMDAwQTRCICAgICAoYmFzZSAxNikJCURhdGFQb3dlciBUZWNobm9sb2d5LCBJbmMuCi0JCQkJT25lIEFsZXdpZmUgQ2VudGVyCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS00QyAgIChoZXgpCQlNb2xlY3VsYXIgRGV2aWNlcyBDb3Jwb3JhdGlvbgotMDAwQTRDICAgICAoYmFzZSAxNikJCU1vbGVjdWxhciBEZXZpY2VzIENvcnBvcmF0aW9uCi0JCQkJMTMxMSBPcmxlYW5zIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS00RCAgIChoZXgpCQlOb3JpdHogQ29ycG9yYXRpb24KLTAwMEE0RCAgICAgKGJhc2UgMTYpCQlOb3JpdHogQ29ycG9yYXRpb24KLQkJCQk1IE1pbmFtaS1GdXRhbWksCi0JCQkJRnV0YW1pLWNobywKLQkJCQlBa2FzaGktc2hpIEh5b2dvIDY3NC0wMDkzCi0JCQkJSkFQQU4KLQotMDAtMEEtNEUgICAoaGV4KQkJVU5JVEVLIEVsZWN0cm9uaWNzIElOQy4KLTAwMEE0RSAgICAgKGJhc2UgMTYpCQlVTklURUsgRWxlY3Ryb25pY3MgSU5DLgotCQkJCTEtMTgtNAotCQkJCU9obW9yaS1raXRhCi0JCQkJT2h0YS1rdSBUb2t5byAxNDMtMDAxNgotCQkJCUpBUEFOCi0KLTAwLTBBLTRGICAgKGhleCkJCUJyYWluIEJveGVzIExpbWl0ZWQKLTAwMEE0RiAgICAgKGJhc2UgMTYpCQlCcmFpbiBCb3hlcyBMaW1pdGVkCi0JCQkJVW5pdCAzYywgV2F2ZXJ0cmVlIEJvdWxldmFyZCBTb3V0aAotCQkJCVdhdmVydHJlZSBUZWNobm9sb2d5IFBhcmsKLQkJCQlMaXZlcnBvb2wgTWVyc2V5c2lkZSBMNyA5UEYKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS01MCAgIChoZXgpCQlSRU1PVEVLIENPUlBPUkFUSU9OCi0wMDBBNTAgICAgIChiYXNlIDE2KQkJUkVNT1RFSyBDT1JQT1JBVElPTgotCQkJCTZGLTYsIE5vIDc3LCBTZWMgMSwgSFNJTiBUQUkgV1UgUk9BRCwKLQkJCQlIU0ktQ0hJSCBUQUlQRUkgSFNJRU4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS01MSAgIChoZXgpCQlHeXJvU2lnbmFsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBBNTEgICAgIChiYXNlIDE2KQkJR3lyb1NpZ25hbCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTVGLE5vLiA3NyxMaWRlIFN0LgotCQkJCVpob25naGUgQ2l0eSBUYWlwZWkgQ291bnR5IDIzNTU2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS01MiAgIChoZXgpCQlBc2lhUkYgTHRkLgotMDAwQTUyICAgICAoYmFzZSAxNikJCUFzaWFSRiBMdGQuCi0JCQkJNEYuLCBOby4yLCBMYW5lIDU2MAotCQkJCVpob25nemhlbmcgUmQuCi0JCQkJWGluZGlhbiBDaXR5IFRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTUzICAgKGhleCkJCUludHJvbmljcywgSW5jb3Jwb3JhdGVkCi0wMDBBNTMgICAgIChiYXNlIDE2KQkJSW50cm9uaWNzLCBJbmNvcnBvcmF0ZWQKLQkJCQkyMDIwIExhZmF5ZXR0ZSBCbHZkLgotCQkJCUZyZWRlcmlja3NidXJnIFZpcmdpbmlhIDIyNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS01NCAgIChoZXgpCQlMYWd1bmEgSGlsbHMsIEluYy4KLTAwMEE1NCAgICAgKGJhc2UgMTYpCQlMYWd1bmEgSGlsbHMsIEluYy4KLQkJCQkxLTI1LTEgMzVGIEZsLiwgTmlzaGlzaGluanVrdQotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2MzA2MzUKLQkJCQlKQVBBTgotCi0wMC0wQS01NSAgIChoZXgpCQlNQVJLRU0gQ29ycG9yYXRpb24KLTAwMEE1NSAgICAgKGJhc2UgMTYpCQlNQVJLRU0gQ29ycG9yYXRpb24KLQkJCQkxNTAgQ29uZ3Jlc3MgU3RyZWV0Ci0JCQkJS2VlbmUgTkggMDM0MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTU2ICAgKGhleCkJCUhJVEFDSEkgTWF4ZWxsIEx0ZC4KLTAwMEE1NiAgICAgKGJhc2UgMTYpCQlISVRBQ0hJIE1heGVsbCBMdGQuCi0JCQkJNi0yMC0xIEtpbnVub2RhaQotCQkJCVlhd2FyYS1tdXJhLCBUc3VrdWJhLWd1biBJQkFSQUtJIDMwMC0yNDk2Ci0JCQkJSkFQQU4KLQotMDAtMEEtNTcgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkgLSBTdGFuZGFyZHMKLTAwMEE1NyAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueSAtIFN0YW5kYXJkcwotCQkJCTEwOTU1IFRhbnRhdSBBdmVudWUKLQkJCQlNYWlsc3RvcCA0MTM4Ci0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS01OCAgIChoZXgpCQlJbmdlbmlldXItQnVlcm8gRnJleWVyICYgU2llZ2VsCi0wMDBBNTggICAgIChiYXNlIDE2KQkJSW5nZW5pZXVyLUJ1ZXJvIEZyZXllciAmIFNpZWdlbAotCQkJCU5ldWVuZG9yZnN0ci4gMTggYgotCQkJCUhlbm5pZ3Nkb3JmIEJyYW5kZW5idXJnIDE2NzYxCi0JCQkJR0VSTUFOWQotCi0wMC0wQS01OSAgIChoZXgpCQlIVyBzZXJ2ZXIKLTAwMEE1OSAgICAgKGJhc2UgMTYpCQlIVyBzZXJ2ZXIKLQkJCQlJdGFsc2thIDE1Ci0JCQkJUHJhZ3VlIDIgQ3plY2ggUmVwdWJsaWMgMTIwIDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMEEtNUEgICAoaGV4KQkJR3JlZW5ORVQgVGVjaG5vbG9naWVzIENvLixMdGQuCi0wMDBBNUEgICAgIChiYXNlIDE2KQkJR3JlZW5ORVQgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJTm8uMTAsIFFpb25neXUgUm9hZCxTY2llbmNlcy1iYXNlZCBJbmR1cwotCQkJCU5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMEEtNUIgICAoaGV4KQkJUG93ZXItT25lIGFzCi0wMDBBNUIgICAgIChiYXNlIDE2KQkJUG93ZXItT25lIGFzCi0JCQkJUC5PLiBCb3ggMTU0MwotCQkJCURyYW1tZW4gIDMwMDcKLQkJCQlOT1JXQVkKLQotMDAtMEEtNUMgICAoaGV4KQkJQ2FyZWwgcy5wLmEuCi0wMDBBNUMgICAgIChiYXNlIDE2KQkJQ2FyZWwgcy5wLmEuCi0JCQkJVmlhIGRlbGwnIEluZHVzdHJpYSwgMTEKLQkJCQlCcnVnaW5lIFBhZG92YSAzNTAyMAotCQkJCUlUQUxZCi0KLTAwLTBBLTVEICAgKGhleCkJCVBVQyBGb3VuZGVyIChNU0MpIEJlcmhhZAotMDAwQTVEICAgICAoYmFzZSAxNikJCVBVQyBGb3VuZGVyIChNU0MpIEJlcmhhZAotCQkJCUxvdCBHLTEgJiBHLTIsIEluY3ViYXRvciAxCi0JCQkJVGVjaG5vbG9neSBQYXJrIE1hbGF5c2lhCi0JCQkJS3VhbGEgTHVtcHVyIFdQIDU3MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMEEtNUUgICAoaGV4KQkJM0NPTSBDb3Jwb3JhdGlvbgotMDAwQTVFICAgICAoYmFzZSAxNikJCTNDT00gQ29ycG9yYXRpb24KLQkJCQk1NDAwIEJheWZyb250IFBsYXphCi0JCQkJTS9TIDUxMTkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1Mi04MTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS01RiAgIChoZXgpCQlhbG1lZGlvIGluYy4KLTAwMEE1RiAgICAgKGJhc2UgMTYpCQlhbG1lZGlvIGluYy4KLQkJCQkzMi0xMywgc2FrYWUtY2hvIDIgY2hvbWUKLQkJCQloaWdhc2hpbXVyYXlhbWEtc2hpIHRva3lvIDE4OS0wMDEzCi0JCQkJSkFQQU4KLQotMDAtMEEtNjAgICAoaGV4KQkJQXV0b3N0YXIgVGVjaG5vbG9neSBQdGUgTHRkCi0wMDBBNjAgICAgIChiYXNlIDE2KQkJQXV0b3N0YXIgVGVjaG5vbG9neSBQdGUgTHRkCi0JCQkJVW5pdCAwNC0xMCBURUNIcGxhY2UgSUkKLQkJCQlTaW5nYXBvcmUgU2luZ2Fwb3JlIDU2OTg3NgotCQkJCVNJTkdBUE9SRQotCi0wMC0wQS02MSAgIChoZXgpCQlDZWxsaW54IFN5c3RlbXMgSW5jLgotMDAwQTYxICAgICAoYmFzZSAxNikJCUNlbGxpbnggU3lzdGVtcyBJbmMuCi0JCQkJNDA4IFdvb3N1bmcgQ2hhcmFjdGVyMTk5IG9mZmljZXRlbAotCQkJCTQ2Ny0yNCBkb2dvay1kb25nIGthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTg1NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS02MiAgIChoZXgpCQlDcmluaXMgTmV0d29ya3MsIEluYy4KLTAwMEE2MiAgICAgKGJhc2UgMTYpCQlDcmluaXMgTmV0d29ya3MsIEluYy4KLQkJCQkyMDk5IE4uIENvbGxpbnMgQmx2ZCwgU3VpdGUgMjAwCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNjMgICAoaGV4KQkJREhEIEdtYkgKLTAwMEE2MyAgICAgKGJhc2UgMTYpCQlESEQgR21iSAotCQkJCUhhZmVya29ybnN0cmFzc2UgNQotCQkJCUxlaXB6aWcgU2FjaHNlbiAwNDEyOQotCQkJCUdFUk1BTlkKLQotMDAtMEEtNjQgICAoaGV4KQkJRXJhY29tIFRlY2hub2xvZ2llcwotMDAwQTY0ICAgICAoYmFzZSAxNikJCUVyYWNvbSBUZWNobm9sb2dpZXMKLQkJCQkyOCBHcmVnIENoYXBwZWxsIERyaXZlCi0JCQkJQnVybGVpZ2ggSGVhZHMgUWxkIDQyMjAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtNjUgICAoaGV4KQkJR2VudGVjaE1lZGlhLmNvLixsdGQuCi0wMDBBNjUgICAgIChiYXNlIDE2KQkJR2VudGVjaE1lZGlhLmNvLixsdGQuCi0JCQkJc29sdml0IGJsZGcgMmYsIDQwMi04LCB5YW5namFlLWRvbiwKLQkJCQlzZW9jaG8tZ3UsIHNlb3VsIDEzNy04OTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtNjYgICAoaGV4KQkJTUlUU1VCSVNISSBFTEVDVFJJQyBTWVNURU0gJiBTRVJWSUNFIENPLixMVEQuCi0wMDBBNjYgICAgIChiYXNlIDE2KQkJTUlUU1VCSVNISSBFTEVDVFJJQyBTWVNURU0gJiBTRVJWSUNFIENPLixMVEQuCi0JCQkJMS00LTEzIE9PWU9ET05BS0EsS0lUQS1LVQotCQkJCU9TQUtBICA1MzEtMDA3NgotCQkJCUpBUEFOCi0KLTAwLTBBLTY3ICAgKGhleCkJCU9uZ0NvcnAKLTAwMEE2NyAgICAgKGJhc2UgMTYpCQlPbmdDb3JwCi0JCQkJNDgxIEhhY2tlbnNhY2sgQXZlLgotCQkJCUhhY2tlbnNhY2sgTkogMDc2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTY4ICAgKGhleCkJCVNvbGFyRmxhcmUgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMEE2OCAgICAgKGJhc2UgMTYpCQlTb2xhckZsYXJlIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJOTUwMSBKZXJvbmltbwotCQkJCVN1aXRlIDEwMAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNjkgICAoaGV4KQkJU1VOTlkgYmVsbCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwQTY5ICAgICAoYmFzZSAxNikJCVNVTk5ZIGJlbGwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkjNTAyIEJVV09OIEIvRCAxMDctNDUgQkFOUE8tRE9ORwotCQkJCVNFT0NITy1LVQotCQkJCVNFT1VMICAxMzctODA2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTZBICAgKGhleCkJCVNWTSBNaWNyb3dhdmVzIHMuci5vLgotMDAwQTZBICAgICAoYmFzZSAxNikJCVNWTSBNaWNyb3dhdmVzIHMuci5vLgotCQkJCVUgTXJhem92a3kgNQotCQkJCVByYWhhIDUgIDE1MDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMEEtNkIgICAoaGV4KQkJVGFkaXJhbiBUZWxlY29tIEJ1c2luZXNzIFN5c3RlbXMgTFRECi0wMDBBNkIgICAgIChiYXNlIDE2KQkJVGFkaXJhbiBUZWxlY29tIEJ1c2luZXNzIFN5c3RlbXMgTFRECi0JCQkJMTggSGFzaXZpbSBTdC4KLQkJCQlQLk8uQm94IDQ1MAotCQkJCVBldGFjaCBUaWt2YSAgNDkxMDUKLQkJCQlJU1JBRUwKLQotMDAtMEEtNkMgICAoaGV4KQkJV2FsY2hlbSBDb3Jwb3JhdGlvbgotMDAwQTZDICAgICAoYmFzZSAxNikJCVdhbGNoZW0gQ29ycG9yYXRpb24KLQkJCQk1IEJveW50b24gUm9hZAotCQkJCUhvbGxpc3RvbiBNQSAwMTc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNkQgICAoaGV4KQkJRUtTIEVsZWt0cm9uaWtzZXJ2aWNlIEdtYkgKLTAwMEE2RCAgICAgKGJhc2UgMTYpCQlFS1MgRWxla3Ryb25pa3NlcnZpY2UgR21iSAotCQkJCUVuenN0ci4gOQotCQkJCUtvcm53ZXN0aGVpbSBCYWRlbiBXdXJ0ZW1iZXJnIDcwODA2Ci0JCQkJR0VSTUFOWQotCi0wMC0wQS02RSAgIChoZXgpCQlCcm9hZGNhc3QgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDBBNkUgICAgIChiYXNlIDE2KQkJQnJvYWRjYXN0IFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCTYgU29wd2l0aCBQYXJrLCBSb3ljZSBDbG9zZQotCQkJCVdlc3QgUG9ydHdheSBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUFuZG92ZXIgSGFtcHNoaXJlIFNQMTAgM1RCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtNkYgICAoaGV4KQkJWnlGTEVYIFRlY2hub2xvZ2llcyBJbmMKLTAwMEE2RiAgICAgKGJhc2UgMTYpCQlaeUZMRVggVGVjaG5vbG9naWVzIEluYwotCQkJCTJGbC4gTm8uIDU4IFBhcmsgQXZlLiBJSQotCQkJCVMuQi5JLlAuLCBIc2luY2h1ICAzMDA3NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtNzAgICAoaGV4KQkJTVBMUyBGb3J1bQotMDAwQTcwICAgICAoYmFzZSAxNikJCU1QTFMgRm9ydW0KLQkJCQkzOTM1NSBDYWxpZm9ybmlhIFN0cmVldAotCQkJCVN1aXRlIDMwNwotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTcxICAgKGhleCkJCUF2cmlvIFRlY2hub2xvZ2llcywgSW5jCi0wMDBBNzEgICAgIChiYXNlIDE2KQkJQXZyaW8gVGVjaG5vbG9naWVzLCBJbmMKLQkJCQkyNjU1IEEgUGFyayBDZW50ZXIgRHJpdmUKLQkJCQlTaW1pIFZhbGxleSBDQSA5MTM1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNzIgICAoaGV4KQkJU1RFQywgSU5DLgotMDAwQTcyICAgICAoYmFzZSAxNikJCVNURUMsIElOQy4KLQkJCQkzMDAxIERhaW1sZXIgU3RyZWV0Ci0JCQkJU2FudGEgQW5hIENBIDkyNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS03MyAgIChoZXgpCQlTY2llbnRpZmljIEF0bGFudGEKLTAwMEE3MyAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljIEF0bGFudGEKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTVMgNS4yNDI1Ci0JCQkJTGF3cmVuY2V2aWxsZSBHYSAzMDA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNzQgICAoaGV4KQkJTWFudGljb20gTmV0d29ya3MgSW5jLgotMDAwQTc0ICAgICAoYmFzZSAxNikJCU1hbnRpY29tIE5ldHdvcmtzIEluYy4KLQkJCQkxNDAxNi1DIFN1bGx5ZmllbGQgQ2lyY2xlCi0JCQkJQ2hhbnRpbGx5IFZBIDIwMTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS03NSAgIChoZXgpCQlDYXRlcnBpbGxhciwgSW5jCi0wMDBBNzUgICAgIChiYXNlIDE2KQkJQ2F0ZXJwaWxsYXIsIEluYwotCQkJCU1haWxzdG9wIExvY2F0aW9uIEFDNjEzMAotCQkJCVBPIEJveCA2MTAKLQkJCQlNb3NzdmlsbGUgSUwgNjE1NTItMDYxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNzYgICAoaGV4KQkJQmVpZGEgSmFkZSBCaXJkIEh1YWd1YW5nIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwQTc2ICAgICAoYmFzZSAxNikJCUJlaWRhIEphZGUgQmlyZCBIdWFndWFuZyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4yMDcgQ2hlbmdmdSBSb2FkLCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwODcxCi0JCQkJQ0hJTkEKLQotMDAtMEEtNzcgICAoaGV4KQkJQmx1ZXdpcmUgVGVjaG5vbG9naWVzIExMQwotMDAwQTc3ICAgICAoYmFzZSAxNikJCUJsdWV3aXJlIFRlY2hub2xvZ2llcyBMTEMKLQkJCQk0MjAgTi4gTyBTdC4KLQkJCQlUdWxhcmUgQ2EgOTMyNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTc4ICAgKGhleCkJCU9MSVRFQwotMDAwQTc4ICAgICAoYmFzZSAxNikJCU9MSVRFQwotCQkJCUIuUC4gNTkyCi0JCQkJODcsIHJ1ZSBNYWMgTWFob24KLQkJCQlOQU5DWSBjZWRleCAgNTQwMDkKLQkJCQlGUkFOQ0UKLQotMDAtMEEtNzkgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMgSy5LLiBjb3JlZ2EgZGl2aXNpb24KLTAwMEE3OSAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcyBLLksuIGNvcmVnYSBkaXZpc2lvbgotCQkJCTEtMTktMjAsIFNoaW55b2tvaGFtYQotCQkJCUtvdWhva3Uta3UKLQkJCQlZb2tvaGFtYS1jaXR5IEthbmFnYXdhLWtlbiAyMjItMDAzMwotCQkJCUpBUEFOCi0KLTAwLTBBLTdBICAgKGhleCkJCUt5b3JpdHN1IEVsZWN0cmljIENvLiwgTHRkLgotMDAwQTdBICAgICAoYmFzZSAxNikJCUt5b3JpdHN1IEVsZWN0cmljIENvLiwgTHRkLgotCQkJCTItMy0xNwotCQkJCUl3YXRvLW1pbmFtaQotCQkJCUtvbWFlLXNoaSBUb2t5byAyMDEtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTBBLTdCICAgKGhleCkJCUNvcm5lbGl1cyBDb25zdWx0Ci0wMDBBN0IgICAgIChiYXNlIDE2KQkJQ29ybmVsaXVzIENvbnN1bHQKLQkJCQlBbSBTaWVwZW4gMTcKLQkJCQlCb2NodW0gTlJXIDQ0ODAzCi0JCQkJR0VSTUFOWQotCi0wMC0wQS03QyAgIChoZXgpCQlUZWN0b24gTHRkCi0wMDBBN0MgICAgIChiYXNlIDE2KQkJVGVjdG9uIEx0ZAotCQkJCUZpc2hlcnMgQ291cnQKLQkJCQlGaXNoZXJzIFBvbmQKLQkJCQlFYXN0bGVpZ2ggSGFtcHNoaXJlIFNPNTAgN0hHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtN0QgICAoaGV4KQkJVmFsbywgSW5jLgotMDAwQTdEICAgICAoYmFzZSAxNikJCVZhbG8sIEluYy4KLQkJCQkxMzUxIFJlZHdvb2QgV2F5Ci0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTdFICAgKGhleCkJCVRoZSBBZHZhbnRhZ2UgR3JvdXAKLTAwMEE3RSAgICAgKGJhc2UgMTYpCQlUaGUgQWR2YW50YWdlIEdyb3VwCi0JCQkJMTYxMCBEZXMgUGVyZXMgUm9hZAotCQkJCVN1aXRlIDM3MAotCQkJCVN0LiBMb3VpcyBNTyA2MzEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtN0YgICAoaGV4KQkJVGVyYWRvbiBJbmR1c3RyaWVzLCBJbmMKLTAwMEE3RiAgICAgKGJhc2UgMTYpCQlUZXJhZG9uIEluZHVzdHJpZXMsIEluYwotCQkJCTc1MDAgMm5kIFNUIE5XCi0JCQkJQWxidXF1ZXJxdWUgTk0gODcxMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTgwICAgKGhleCkJCVRlbGtvbmV0IEluYy4KLTAwMEE4MCAgICAgKGJhc2UgMTYpCQlUZWxrb25ldCBJbmMuCi0JCQkJMjAzNzQgU2VuZWNhIE1lYWRvd3MgUGt3eQotCQkJCUdlcm1hbnRvd24gTUQgMjA3ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTgxICAgKGhleCkJCVRFSU1BIEF1ZGlvdGV4IFMuTC4KLTAwMEE4MSAgICAgKGJhc2UgMTYpCQlURUlNQSBBdWRpb3RleCBTLkwuCi0JCQkJQy8gVGlydmlhLCA2LCBsb2NhbCBCCi0JCQkJTWFkcmlkICAyODA0MAotCQkJCVNQQUlOCi0KLTAwLTBBLTgyICAgKGhleCkJCVRBVFNVVEEgU1lTVEVNIEVMRUNUUk9OSUNTIENPLixMVEQuCi0wMDBBODIgICAgIChiYXNlIDE2KQkJVEFUU1VUQSBTWVNURU0gRUxFQ1RST05JQ1MgQ08uLExURC4KLQkJCQlJV0FUQVRZT1UyLTMtMQotCQkJCUhJR0FTSElPT1NBS0EtU0hJIE9PU0FLQS1GVSA1NzgtODU4NQotCQkJCUpBUEFOCi0KLTAwLTBBLTgzICAgKGhleCkJCVNBTFRPIFNZU1RFTVMgUy5MLgotMDAwQTgzICAgICAoYmFzZSAxNikJCVNBTFRPIFNZU1RFTVMgUy5MLgotCQkJCUFya290eiwgOQotCQkJCVBvbGlnb25vIExhbmJhcnJlbiBPaWFydHp1biAyMDE4MAotCQkJCVNQQUlOCi0KLTAwLTBBLTg0ICAgKGhleCkJCVJhaW5zdW4gRW50ZXJwcmlzZSBDby4sIEx0ZC4KLTAwMEE4NCAgICAgKGJhc2UgMTYpCQlSYWluc3VuIEVudGVycHJpc2UgQ28uLCBMdGQuCi0JCQkJTm8uMTQtMyAsIExhbmUgMjM1LCBIby1DaGVuIFJvYWQKLQkJCQlCYW9DaWFvIFJvYWQKLQkJCQlTaGluRGlhbiBDaXR5IFRBSVBFSSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTg1ICAgKGhleCkJCVBMQVQnQzIsSW5jCi0wMDBBODUgICAgIChiYXNlIDE2KQkJUExBVCdDMixJbmMKLQkJCQkyLTMtNiBTT1RPS0FOREEKLQkJCQlDSElZT0RBLUtVIFRPS1lPIDEwMS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMEEtODYgICAoaGV4KQkJTGVuemUKLTAwMEE4NiAgICAgKGJhc2UgMTYpCQlMZW56ZQotCQkJCVBPIGJveCAxMDEzNTIKLQkJCQlIYW1lbG4gTG93ZXIgU2F4b255IDMxNzYzCi0JCQkJR0VSTUFOWQotCi0wMC0wQS04NyAgIChoZXgpCQlJbnRlZ3JhdGVkIE1pY3JvbWFjaGluZXMgSW5jLgotMDAwQTg3ICAgICAoYmFzZSAxNikJCUludGVncmF0ZWQgTWljcm9tYWNoaW5lcyBJbmMuCi0JCQkJMTQwMCBTLiBTaGFtcm9jayBBdmUuCi0JCQkJTW9ucm92aWEgQ0EgOTEwMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTg4ICAgKGhleCkJCUluQ3lwaGVyIFMuQS4KLTAwMEE4OCAgICAgKGJhc2UgMTYpCQlJbkN5cGhlciBTLkEuCi0JCQkJMTggcnVlIGRlIGwnRWF1Ci0JCQkJTHV4ZW1ib3VyZyAgMTQ0OQotCQkJCUxVWEVNQk9VUkcKLQotMDAtMEEtODkgICAoaGV4KQkJQ3JldmFsIFN5c3RlbXMsIEluYy4KLTAwMEE4OSAgICAgKGJhc2UgMTYpCQlDcmV2YWwgU3lzdGVtcywgSW5jLgotCQkJCTJGLDI0LTQsU2Fud29sZ29rLURvbmcsU3VuZ2J1ay1LdSxTZW91bCwKLQkJCQlTZW91bCAgMTM2LTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS04QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBOEEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS04QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBOEIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERSLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS04QyAgIChoZXgpCQlHdWFyZHdhcmUgU3lzdGVtcyBMdGQuCi0wMDBBOEMgICAgIChiYXNlIDE2KQkJR3VhcmR3YXJlIFN5c3RlbXMgTHRkLgotCQkJCVVsbG9pIHV0IDEwMi4KLQkJCQlCdWRhcGVzdCAgSC0xMDg5Ci0JCQkJSFVOR0FSWQotCi0wMC0wQS04RCAgIChoZXgpCQlFVVJPVEhFUk0gTElNSVRFRAotMDAwQThEICAgICAoYmFzZSAxNikJCUVVUk9USEVSTSBMSU1JVEVECi0JCQkJRkFSQURBWSBDTE9TRQotCQkJCURVUlJJTkdUT04KLQkJCQlXT1JUSElORyBXRVNUIFNVU1NFWCBCTjEzIDNQTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBBLThFICAgKGhleCkJCUludmFjb20gTHRkCi0wMDBBOEUgICAgIChiYXNlIDE2KQkJSW52YWNvbSBMdGQKLQkJCQlCdXNpbmVzcyBhbmQgVGVjaG5vbG9neSBDZW50cmUKLQkJCQlCZXNzZW1lciBEcml2ZQotCQkJCVN0ZXZlbmFnZSBIZXJ0Zm9yZHNoaXJlIFNHMSAyRFgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS04RiAgIChoZXgpCQlBc2thIEludGVybmF0aW9uYWwgSW5jLgotMDAwQThGICAgICAoYmFzZSAxNikJCUFza2EgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJMzA2IFJpdmVyc2V2ZW4KLQkJCQk0LTE4IEhhcmVnaS1Ib25tYWNoaQotCQkJCUtvY2hpICA3ODAtODA4OAotCQkJCUpBUEFOCi0KLTAwLTBBLTkwICAgKGhleCkJCUJheXNpZGUgSW50ZXJhY3RpdmUsIEluYy4KLTAwMEE5MCAgICAgKGJhc2UgMTYpCQlCYXlzaWRlIEludGVyYWN0aXZlLCBJbmMuCi0JCQkJMzMwIEJpc2NheW5lIEJsdmQuCi0JCQkJU3VpdGUgODAxCi0JCQkJTWlhbWkgRkwgMzMxMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTkxICAgKGhleCkJCUhlbW9DdWUgQUIKLTAwMEE5MSAgICAgKGJhc2UgMTYpCQlIZW1vQ3VlIEFCCi0JCQkJQm94IDEyMDQKLQkJCQlBbmdlbGhvbG0gU2thbmUgMjYyMjMKLQkJCQlTV0VERU4KLQotMDAtMEEtOTIgICAoaGV4KQkJUHJlc29udXMgQ29ycG9yYXRpb24KLTAwMEE5MiAgICAgKGJhc2UgMTYpCQlQcmVzb251cyBDb3Jwb3JhdGlvbgotCQkJCTcyNTcgRmxvcmlkYSBCbHZkLgotCQkJCUJhdG9uIFJvdWdlIExvdWlzaWFuYSA3MDgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtOTMgICAoaGV4KQkJVzIgTmV0d29ya3MsIEluYy4KLTAwMEE5MyAgICAgKGJhc2UgMTYpCQlXMiBOZXR3b3JrcywgSW5jLgotCQkJCTU4MDggTlcgTGFjIExlbWFuIERyaXZlCi0JCQkJSXNzYXF1YWggV2FzaGluZ3RvbiA5ODAyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtOTQgICAoaGV4KQkJU2hhbmdIYWkgY2VsbGluayBDTy4sIExURAotMDAwQTk0ICAgICAoYmFzZSAxNikJCVNoYW5nSGFpIGNlbGxpbmsgQ08uLCBMVEQKLQkJCQlDMyBNZWlMb25nIFpob25nWGluIEluZHVzdHJpYWwgUGFyayxOby4xCi0JCQkJU2hhbmdIYWkgIDIwMDIzNwotCQkJCUNISU5BCi0KLTAwLTBBLTk1ICAgKGhleCkJCUFwcGxlIENvbXB1dGVyLCBJbmMuCi0wMDBBOTUgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlNL1MgMjYtQwotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtOTYgICAoaGV4KQkJTUVXVEVMIFRFQ0hOT0xPR1kgSU5DLgotMDAwQTk2ICAgICAoYmFzZSAxNikJCU1FV1RFTCBURUNITk9MT0dZIElOQy4KLQkJCQlFMTVGTC4gSVQgVkVOVFVSRSBUT1dFUgotCQkJCTc4IEtBUkFLLURPTkcsIFNPTkdQQS1HVQotCQkJCVNFT1VMICAxMzgtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTk3ICAgKGhleCkJCVNPTklDYmx1ZSwgSW5jLgotMDAwQTk3ICAgICAoYmFzZSAxNikJCVNPTklDYmx1ZSwgSW5jLgotCQkJCTI4NDEgTWlzc2lvbiBDb2xsZWdlIEJsdmQuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTk4ICAgKGhleCkJCU0rRiBHd2lubmVyIEdtYkggJiBDbwotMDAwQTk4ICAgICAoYmFzZSAxNikJCU0rRiBHd2lubmVyIEdtYkggJiBDbwotCQkJCVdlaWRlbmJhdW1zd2VnIDkxIGEKLQkJCQlIYW1idXJnICAyMTAyOQotCQkJCUdFUk1BTlkKLQotMDAtMEEtOTkgICAoaGV4KQkJQ2FsYW1wIFdpcmVsZXNzIE5ldHdvcmtzIEluYwotMDAwQTk5ICAgICAoYmFzZSAxNikJCUNhbGFtcCBXaXJlbGVzcyBOZXR3b3JrcyBJbmMKLQkJCQkxMDEtNTU0MCBGZXJyaWVyIFN0cmVldAotCQkJCVRvd24gb2YgTW91bnQtUm95YWwgUXVlYmVjIEg0UCAxTTIKLQkJCQlDQU5BREEKLQotMDAtMEEtOUEgICAoaGV4KQkJQWlwdGVrIEludGVybmF0aW9uYWwgSW5jCi0wMDBBOUEgICAgIChiYXNlIDE2KQkJQWlwdGVrIEludGVybmF0aW9uYWwgSW5jCi0JCQkJTm8gNS0xIElubm92YXRpb24gUmQgMQotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtOUIgICAoaGV4KQkJVG93YSBNZWNjcyBDb3Jwb3JhdGlvbgotMDAwQTlCICAgICAoYmFzZSAxNikJCVRvd2EgTWVjY3MgQ29ycG9yYXRpb24KLQkJCQkzNS0xIEthbWl0b2RhCi0JCQkJVG9kYSBTYWl0YW1hIDMzNS0wMDIyCi0JCQkJSkFQQU4KLQotMDAtMEEtOUMgICAoaGV4KQkJU2VydmVyIFRlY2hub2xvZ3ksIEluYy4KLTAwMEE5QyAgICAgKGJhc2UgMTYpCQlTZXJ2ZXIgVGVjaG5vbG9neSwgSW5jLgotCQkJCTEwNDAgU2FuZGhpbGwgRHIuCi0JCQkJUmVubyBOZXZhZGEgODk1MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTlEICAgKGhleCkJCUtpbmcgWW91bmcgVGVjaG5vbG9neSBDby4gTHRkLgotMDAwQTlEICAgICAoYmFzZSAxNikJCUtpbmcgWW91bmcgVGVjaG5vbG9neSBDby4gTHRkLgotCQkJCTFGbC4sIE5vLiA5LCBMYW5lIDI2LCBHYW5nY2hpIFJkLiwgTmVpaHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtOUUgICAoaGV4KQkJQnJvYWRXZWIgQ29ycG9ydGF0aW9uCi0wMDBBOUUgICAgIChiYXNlIDE2KQkJQnJvYWRXZWIgQ29ycG9ydGF0aW9uCi0JCQkJM0YsIDI0LTEsIEluZHVzdHJ5IEVhc3QgUmQuLCBJViwKLQkJCQlTY2llbmNlIEJhc2VkLCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luLUNodSAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTlGICAgKGhleCkJCVBhbm5hd2F5IFRlY2hub2xvZ2llcywgSW5jLgotMDAwQTlGICAgICAoYmFzZSAxNikJCVBhbm5hd2F5IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTIxNSBDb21tZXJjZSBXYXkKLQkJCQlQb3J0c21vdXRoIE5IIDAzODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1BMCAgIChoZXgpCQlDZWRhciBQb2ludCBDb21tdW5pY2F0aW9ucwotMDAwQUEwICAgICAoYmFzZSAxNikJCUNlZGFyIFBvaW50IENvbW11bmljYXRpb25zCi0JCQkJMTYgUm91dGUgMTExLCBCbGRnIDMKLQkJCQlEZXJyeSBOSCAwMzAzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQTEgICAoaGV4KQkJViBWIFMgTGltaXRlZAotMDAwQUExICAgICAoYmFzZSAxNikJCVYgViBTIExpbWl0ZWQKLQkJCQlIUElDLCAxLiBBaW5zbGllIFJvYWQgLAotCQkJCUhpbGxpbmd0b24KLQkJCQlHbGFzZ293IFNjb3RsYW5kIEc1MiA0UlUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS1BMiAgIChoZXgpCQlTWVNURUsgSU5DLgotMDAwQUEyICAgICAoYmFzZSAxNikJCVNZU1RFSyBJTkMuCi0JCQkJSkNPTSBCVUlMRElORyA0MDIsIE9KRU9OLURPTkcgMTI0LTQsCi0JCQkJVUlXQU5HLVNJIEdZVU5HR0ktRE8gNDM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS1BMyAgIChoZXgpCQlTSElNQUZVSkkgRUxFQ1RSSUMgQ08uLExURC4KLTAwMEFBMyAgICAgKGJhc2UgMTYpCQlTSElNQUZVSkkgRUxFQ1RSSUMgQ08uLExURC4KLQkJCQlEYWloeWFrdS1zZWltZWkgS2FtYXRhIEJsZGcuM0YKLQkJCQk4LTExLTExIE5pc2hpa2FtYXRhLE90YS1rdQotCQkJCVRva3lvIDE0NC0wMDUxCi0JCQkJSkFQQU4KLQotMDAtMEEtQTQgICAoaGV4KQkJU0hBTkdIQUkgU1VSVkVJTExBTkNFIFRFQ0hOT0xPR1kgQ08sTFRECi0wMDBBQTQgICAgIChiYXNlIDE2KQkJU0hBTkdIQUkgU1VSVkVJTExBTkNFIFRFQ0hOT0xPR1kgQ08sTFRECi0JCQkJRkwuMjVBLE5PLjggQ0hBTkdZQU5HIFJPQUQKLQkJCQlTSEFOR0hBSSAgMjAwMDgyCi0JCQkJQ0hJTkEKLQotMDAtMEEtQTUgICAoaGV4KQkJTUFYTElOSyBJTkRVU1RSSUVTIExJTUlURUQKLTAwMEFBNSAgICAgKGJhc2UgMTYpCQlNQVhMSU5LIElORFVTVFJJRVMgTElNSVRFRAotCQkJCTI5QSBTSEVOWkhFTiBTUEVDSUFMIFpPTkUKLQkJCQlQUkVTUyBUT1dFUgotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgwMDkKLQkJCQlDSElOQQotCi0wMC0wQS1BNiAgIChoZXgpCQlIb2NoaWtpIENvcnBvcmF0aW9uCi0wMDBBQTYgICAgIChiYXNlIDE2KQkJSG9jaGlraSBDb3Jwb3JhdGlvbgotCQkJCTI0NiwgVFNVUlVNQQotCQkJCU1BQ0hJREEgVE9LWU8gMTk0LTg1NzcKLQkJCQlKQVBBTgotCi0wMC0wQS1BNyAgIChoZXgpCQlGRUkgRWxlY3Ryb24gT3B0aWNzCi0wMDBBQTcgICAgIChiYXNlIDE2KQkJRkVJIEVsZWN0cm9uIE9wdGljcwotCQkJCUFjaHRzZXdlZyBOb29yZCA1Ci0JCQkJQUFFIDM0Ci0JCQkJRWluZGhvdmVuICA1NjUxR0cKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wQS1BOCAgIChoZXgpCQllUGlwZSBQdHkuIEx0ZC4KLTAwMEFBOCAgICAgKGJhc2UgMTYpCQllUGlwZSBQdHkuIEx0ZC4KLQkJCQlQLk8uIEJveCAxNDI4Ci0JCQkJVG9vd29uZwotCQkJCUJyaXNiYW5lIFF1ZWVuc2xhbmQgNDA2NgotCQkJCUFVU1RSQUxJQQotCi0wMC0wQS1BOSAgIChoZXgpCQlCcm9va3MgQXV0b21hdGlvbiBHbWJICi0wMDBBQTkgICAgIChiYXNlIDE2KQkJQnJvb2tzIEF1dG9tYXRpb24gR21iSAotCQkJCUdvZXNjaHdpdHplciBTdHJhc3NlIDI1Ci0JCQkJSmVuYSBUaHVyaW5naWEgMDc3NDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLUFBICAgKGhleCkJCUFsdGlHZW4gQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwQUFBICAgICAoYmFzZSAxNikJCUFsdGlHZW4gQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTQ3NDI3IEZyZW1vbnQgQmx2ZC4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1BQiAgIChoZXgpCQlUb3lvdGEgVGVjaG5pY2FsIERldmVsb3BtZW50IENvcnBvcmF0aW9uCi0wMDBBQUIgICAgIChiYXNlIDE2KQkJVG95b3RhIFRlY2huaWNhbCBEZXZlbG9wbWVudCBDb3Jwb3JhdGlvbgotCQkJCTEtMjEsIEltYWUsIEhhbmFtb3RvLWNobwotCQkJCVRveW90YSBBaWNoaSA0NzAtMDMzNAotCQkJCUpBUEFOCi0KLTAwLTBBLUFDICAgKGhleCkJCVRlcnJhVGVjIEVsZWN0cm9uaWMgR21iSAotMDAwQUFDICAgICAoYmFzZSAxNikJCVRlcnJhVGVjIEVsZWN0cm9uaWMgR21iSAotCQkJCUhlcnJlbnBmYWQgMzgKLQkJCQlOZXR0ZXRhbCBOUlcgNDEzMzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLUFEICAgKGhleCkJCVN0YXJnYW1lcyBDb3Jwb3JhdGlvbgotMDAwQUFEICAgICAoYmFzZSAxNikJCVN0YXJnYW1lcyBDb3Jwb3JhdGlvbgotCQkJCTEzIFNoZXJpZGFuIENsb3NlCi0JCQkJTWlscGVycmEgTlNXIDIwMzEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtQUUgICAoaGV4KQkJUm9zZW1vdW50IFByb2Nlc3MgQW5hbHl0aWNhbAotMDAwQUFFICAgICAoYmFzZSAxNikJCVJvc2Vtb3VudCBQcm9jZXNzIEFuYWx5dGljYWwKLQkJCQk2NTczQSBDb2NocmFuIFJkLgotCQkJCVNvbG9uIE9oaW8gNDQxMzktMzkyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQUYgICAoaGV4KQkJUGlwYWwgU3lzdGVtcwotMDAwQUFGICAgICAoYmFzZSAxNikJCVBpcGFsIFN5c3RlbXMKLQkJCQkyOTAzIEJ1bmtlciBIaWxsIExhbmUKLQkJCQlTdWl0ZSAyMTAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQjAgICAoaGV4KQkJTE9ZVEVDIGVsZWN0cm9uaWNzIEdtYkgKLTAwMEFCMCAgICAgKGJhc2UgMTYpCQlMT1lURUMgZWxlY3Ryb25pY3MgR21iSAotCQkJCVN0b2x6ZW50aGFsZXJnYXNzZSAyNC8zCi0JCQkJVmllbm5hIFdpZW4gMTA4MAotCQkJCUFVU1RSSUEKLQotMDAtMEEtQjEgICAoaGV4KQkJR0VORVRFQyBDb3Jwb3JhdGlvbgotMDAwQUIxICAgICAoYmFzZSAxNikJCUdFTkVURUMgQ29ycG9yYXRpb24KLQkJCQlOaXNoaWt1cmEtTEsgQmxkLgotCQkJCVRvbWloaXNhLWNob3UgMTYtNgotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2Mi0wMDY3Ci0JCQkJSkFQQU4KLQotMDAtMEEtQjIgICAoaGV4KQkJRnJlc25lbCBXaXJlbGVzcyBTeXN0ZW1zCi0wMDBBQjIgICAgIChiYXNlIDE2KQkJRnJlc25lbCBXaXJlbGVzcyBTeXN0ZW1zCi0JCQkJMTMzMyBHYXRld2F5IERyaXZlCi0JCQkJU3VpdGUgMTAwNwotCQkJCU1lbGJvdXJuZSBGTCAzMjkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQjMgICAoaGV4KQkJRmEuIEdJUkEKLTAwMEFCMyAgICAgKGJhc2UgMTYpCQlGYS4gR0lSQQotCQkJCURhaGxpZW5zdHJhc3NlCi0JCQkJUmFkZXZvcm13YWxkIE5vcmRyaGVpbi1XZXN0ZmFsZW4gNDI0NzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLUI0ICAgKGhleCkJCUVUSUMgVGVsZWNvbW11bmljYXRpb25zCi0wMDBBQjQgICAgIChiYXNlIDE2KQkJRVRJQyBUZWxlY29tbXVuaWNhdGlvbnMKLQkJCQkxMywgY2hlbWluIGR1IHZpZXV4LWNoZW5lIFpJUlNUCi0JCQkJTUVZTEFOIElzZXJlIDM4MjQwCi0JCQkJRlJBTkNFCi0KLTAwLTBBLUI1ICAgKGhleCkJCURpZ2l0YWwgRWxlY3Ryb25pYyBOZXR3b3JrCi0wMDBBQjUgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBFbGVjdHJvbmljIE5ldHdvcmsKLQkJCQk4IHJ1ZSBkdSBzYWNyZSBjb2V1cgotCQkJCVNhaW50IExhdXJlbnQgc3VyIFNldnJlIFZlbmRlZSA4NTI5MAotCQkJCUZSQU5DRQotCi0wMC0wQS1CNiAgIChoZXgpCQlDT01QVU5FVElYLCBJTkMKLTAwMEFCNiAgICAgKGJhc2UgMTYpCQlDT01QVU5FVElYLCBJTkMKLQkJCQkyNDIwIE1PU1NJREUgQkxWRC4KLQkJCQlNT05ST0VWSUxMRSBQQSAxNTE0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQjcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQUI3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQjggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQUI4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQjkgICAoaGV4KQkJQXN0ZXJhIFRlY2hub2xvZ2llcyBDb3JwLgotMDAwQUI5ICAgICAoYmFzZSAxNikJCUFzdGVyYSBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQkgMjM4MCBXYXZlcmxleSBTdHJlZXQKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUJBICAgKGhleCkJCUFyY29uIFRlY2hub2xvZ3kgTGltaXRlZAotMDAwQUJBICAgICAoYmFzZSAxNikJCUFyY29uIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJtLiAzNzExLTEyLCAzNy9GLiwgQ2FibGUgVFYgVG93ZXIgLAotCQkJCSA5IEhvaSBTaGluZyBSZC4sIFRzdWVuIFdhbiAsIE4uVAotCQkJCUhvbmcgS29uZyAgCi0JCQkJQ0hJTkEKLQotMDAtMEEtQkIgICAoaGV4KQkJVGFpd2FuIFNlY29tIENvLC4gTHRkCi0wMDBBQkIgICAgIChiYXNlIDE2KQkJVGFpd2FuIFNlY29tIENvLC4gTHRkCi0JCQkJMTNGLCAxMDgsIFNlYzEsIFNoaW4tVGFpIDV0aCBSb2FkCi0JCQkJSHNpLUNoaWggVGFpcGVpIENvdW50eSAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUJDICAgKGhleCkJCVNlYWJyaWRnZSBMdGQuCi0wMDBBQkMgICAgIChiYXNlIDE2KQkJU2VhYnJpZGdlIEx0ZC4KLQkJCQkzIEhhbmFnYXIgU3QuCi0JCQkJTmV2ZS1OZWVtYW4gQicKLQkJCQlIb2QtSGFzaGFyb24gSXNyYWVsIDQ1MjQxCi0JCQkJSVNSQUVMCi0KLTAwLTBBLUJEICAgKGhleCkJCVJ1cHByZWNodCAmIFBhdGFzaG5pY2sgQ28uCi0wMDBBQkQgICAgIChiYXNlIDE2KQkJUnVwcHJlY2h0ICYgUGF0YXNobmljayBDby4KLQkJCQkyNSBDb3Jwb3JhdGUgQ2lyY2xlCi0JCQkJQWxiYW55IE5ZIDEyMjAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1CRSAgIChoZXgpCQlPUE5FVCBUZWNobm9sb2dpZXMgQ08uLCBMVEQuCi0wMDBBQkUgICAgIChiYXNlIDE2KQkJT1BORVQgVGVjaG5vbG9naWVzIENPLiwgTFRELgotCQkJCTNGLCBOTy41LCBJbmR1c3RyeSBFLiBSZC4gSVgsIFNjaWVuY2UtQmEKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUJGICAgKGhleCkJCUhJUk9UQSBTUwotMDAwQUJGICAgICAoYmFzZSAxNikJCUhJUk9UQSBTUwotCQkJCU1hdHVrYXdhLUtvdWd5b3VkYW5jaGkKLQkJCQlTdXpha2Etc2hpIE5hZ2FubyAzODItMDAwNQotCQkJCUpBUEFOCi0KLTAwLTBBLUMwICAgKGhleCkJCUZ1eW9oIFZpZGVvIEluZHVzdHJ5IENPLiwgTFRELgotMDAwQUMwICAgICAoYmFzZSAxNikJCUZ1eW9oIFZpZGVvIEluZHVzdHJ5IENPLiwgTFRELgotCQkJCTctMjUgSGlnYXNoaSBLaWJvZ2Fva2EKLQkJCQlBc2FoaS1rdQotCQkJCVlva29oYW1hLXNoaSBLYW5hZ2F3YS1rZW4gMjQ2LTAwMDgKLQkJCQlKQVBBTgotCi0wMC0wQS1DMSAgIChoZXgpCQlGdXR1cmV0ZWwKLTAwMEFDMSAgICAgKGJhc2UgMTYpCQlGdXR1cmV0ZWwKLQkJCQkyMTU4MCBTdGV2ZW5zIENyZWVrIEJsdmQsIFN1aXRlIDIwOAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQzIgICAoaGV4KQkJRmliZXJIb21lIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBDTy4sTFRECi0wMDBBQzIgICAgIChiYXNlIDE2KQkJRmliZXJIb21lIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBDTy4sTFRECi0JCQkJTm8uODggWW91S2V5dWFuIFJvYWQsSG9uZ3NoYW4gRGlzdHJpY3QsVwotCQkJCVd1aGFuIEh1YmVpIDQzMDA3NAotCQkJCUNISU5BCi0KLTAwLTBBLUMzICAgKGhleCkJCWVNIFRlY2huaWNzIENvLiwgTHRkLgotMDAwQUMzICAgICAoYmFzZSAxNikJCWVNIFRlY2huaWNzIENvLiwgTHRkLgotCQkJCTdGLiwgSVQgVmVudHVyZSBUb3dlci4sIDc4LAotCQkJCUdhcmFrYm9uLURvbmcsIFNvbmdwYS1HdQotCQkJCVNlb3VsICAxMzgtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLUM0ICAgKGhleCkJCURhZXdvbyBUZWxldGVjaCBDby4sIEx0ZAotMDAwQUM0ICAgICAoYmFzZSAxNikJCURhZXdvbyBUZWxldGVjaCBDby4sIEx0ZAotCQkJCTI2NS0zLCBTZW9oeWVvbiwgQnVuZGFuZwotCQkJCVNlb25nbmFtIEd5ZW9uZ2dpIDQ2My03NjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtQzUgICAoaGV4KQkJQ29sb3IgS2luZXRpY3MKLTAwMEFDNSAgICAgKGJhc2UgMTYpCQlDb2xvciBLaW5ldGljcwotCQkJCTEwIE1pbGsgU3RyZWV0Ci0JCQkJU3VpdGUgMTEwMAotCQkJCUJvc3RvbiBNYXNhY2h1c2V0dHMgMDIxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUM2ICAgKGhleCkJCUNldGVydXMgTmV0d29ya3MsIEluYy4KLTAwMEFDNiAgICAgKGJhc2UgMTYpCQlDZXRlcnVzIE5ldHdvcmtzLCBJbmMuCi0JCQkJUC5PLiBCb3ggMjUwMzkxCi0JCQkJUGxhbm8gVFggNzUwMjUtMDM5MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQzcgICAoaGV4KQkJVW5pY2F0aW9uIEdyb3VwCi0wMDBBQzcgICAgIChiYXNlIDE2KQkJVW5pY2F0aW9uIEdyb3VwCi0JCQkJM0YuLCBOby4gNiwgV3UtS3VuZyA1UmQuLCBIc2luY2h1YW5nIENpdAotCQkJCVRhaXBlaSAgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS1DOCAgIChoZXgpCQlaUFNZUyBDTy4sTFRELiAoUGxhbm5pbmcmTWFuYWdlbWVudCkKLTAwMEFDOCAgICAgKGJhc2UgMTYpCQlaUFNZUyBDTy4sTFRELiAoUGxhbm5pbmcmTWFuYWdlbWVudCkKLQkJCQkxMDYgQWNlIFRlY2hubyBUb3dlcjEKLQkJCQkxOTctMTcgS3Vyby1Eb25nCi0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtQzkgICAoaGV4KQkJWmFtYmVlbCBJbmMKLTAwMEFDOSAgICAgKGJhc2UgMTYpCQlaYW1iZWVsIEluYwotCQkJCTQ1NzAwIE5vcnRocG9ydCBMb29wIEVhc3QKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1DQSAgIChoZXgpCQlZT0tPWUFNQSBTSE9LQUkgQ08uLEx0ZC4KLTAwMEFDQSAgICAgKGJhc2UgMTYpCQlZT0tPWUFNQSBTSE9LQUkgQ08uLEx0ZC4KLQkJCQk2LTk2IE1hdHN1bXVyYQotCQkJCUthbmF6YXdhIElzaGlrYXdhIDkyMC0wMzQ4Ci0JCQkJSkFQQU4KLQotMDAtMEEtQ0IgICAoaGV4KQkJWFBBSyBNU0EgR3JvdXAKLTAwMEFDQiAgICAgKGJhc2UgMTYpCQlYUEFLIE1TQSBHcm91cAotCQkJCUNhcmUgb2Y6IE1vbGV4IEZpYmVyIE9wdGljcwotCQkJCTUyMjQgS2F0cmluZSBBdmVudWUKLQkJCQlEb3duZXJzIEdyb3ZlIElMIDYwNTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1DQyAgIChoZXgpCQlXaW5ub3cgTmV0d29ya3MsIEluYy4KLTAwMEFDQyAgICAgKGJhc2UgMTYpCQlXaW5ub3cgTmV0d29ya3MsIEluYy4KLQkJCQk3MDEgRW1lcnNvbiBSb2FkCi0JCQkJU3VpdGUgMjQ0Ci0JCQkJU3QuIExvdWlzIE1PIDYzMTQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1DRCAgIChoZXgpCQlTdW5yaWNoIFRlY2hub2xvZ3kgTGltaXRlZAotMDAwQUNEICAgICAoYmFzZSAxNikJCVN1bnJpY2ggVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJVW5pdCAxMzAxLCBFYXN0ZXJuIENlbnRyZSwgMTA2NSBLaW5nJ3MgUgotCQkJCVF1YXJyeSBCYXkgIAotCQkJCUhPTkcgS09ORwotCi0wMC0wQS1DRSAgIChoZXgpCQlSQURJQU5URUNILCBJTkMuCi0wMDBBQ0UgICAgIChiYXNlIDE2KQkJUkFESUFOVEVDSCwgSU5DLgotCQkJCTItMSwgSU5EVVNUUlkgRUFTVCBSRC4gMSwgU0NJRU5DRS1CQVNFRAotCQkJCUlORFVTVFJJQUwgUEFSSwotCQkJCUhTSU4gQ0hVICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUNGICAgKGhleCkJCVBST1ZJREVPIE11bHRpbWVkaWEgQ28uIEx0ZC4KLTAwMEFDRiAgICAgKGJhc2UgMTYpCQlQUk9WSURFTyBNdWx0aW1lZGlhIENvLiBMdGQuCi0JCQkJNUYsIE5PLjgsIEFMTEVZIDIsIFRaVS1XRUkgTEFORSwKLQkJCQlDSFVORyBDSEVORyBSRC4sCi0JCQkJSFNJTiBUSUVOIENJVFkgVEFJUEVJIEhTSUVOLCAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUQwICAgKGhleCkJCU5paWdhdGEgRGV2ZWxvbWVudCBDZW50ZXIsICBGLkkuVC4gQ28uLCBMdGQuCi0wMDBBRDAgICAgIChiYXNlIDE2KQkJTmlpZ2F0YSBEZXZlbG9tZW50IENlbnRlciwgIEYuSS5ULiBDby4sIEx0ZC4KLQkJCQlBa2FuZS1OaWlnYXRhIEJ1aWxkaW5nIDJGCi0JCQkJMS02LTcgQXRhZ28KLQkJCQlOaWlnYXRhIE5paWdhdGEgUHJlZmVjdHVyZSA5NTAtMDk0NAotCQkJCUpBUEFOCi0KLTAwLTBBLUQxICAgKGhleCkJCU1XUwotMDAwQUQxICAgICAoYmFzZSAxNikJCU1XUwotCQkJCTEyLCBxdWFpIFBhcGFjaW5vCi0JCQkJTklDRSAgMDYzMDAKLQkJCQlGUkFOQ0UKLQotMDAtMEEtRDIgICAoaGV4KQkJSkVQSUNPIENvcnBvcmF0aW9uCi0wMDBBRDIgICAgIChiYXNlIDE2KQkJSkVQSUNPIENvcnBvcmF0aW9uCi0JCQkJTmlzaGktc2hpbmp5dWt1Mi03LTEKLQkJCQlEYWktaWNoaSBTZWltZWkgQkxERy4KLQkJCQlTaGluanl1a3Uta3UgVG9reW8gMTYzLTA3MjkKLQkJCQlKQVBBTgotCi0wMC0wQS1EMyAgIChoZXgpCQlJTklURUNIIENvLiwgTHRkCi0wMDBBRDMgICAgIChiYXNlIDE2KQkJSU5JVEVDSCBDby4sIEx0ZAotCQkJCTNGLCBJTklURUNIIEJsZGcsIDU1OS01LAotCQkJCUdlb3lvLURvbmcsIFNvbmdwYS1HdQotCQkJCVNlb3VsIFNvbmdwYSAxMzgtODE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLUQ0ICAgKGhleCkJCUNvcmVCZWxsIFN5c3RlbXMgSW5jLgotMDAwQUQ0ICAgICAoYmFzZSAxNikJCUNvcmVCZWxsIFN5c3RlbXMgSW5jLgotCQkJCUhUVkMgMjMxNyBLQUlTVAotCQkJCTM3My0xIEd1c2VvbmctZG9uZwotCQkJCVl1c2VvbmctR3UgRGFlamVvbiAzMDUtNzAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLUQ1ICAgKGhleCkJCUJyYWluY2hpbGQgRWxlY3Ryb25pYyBDby4sIEx0ZC4KLTAwMEFENSAgICAgKGJhc2UgMTYpCQlCcmFpbmNoaWxkIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0JCQkJTm8uMjA5LCBDaHVuZyBZYW5nIFJkLiwKLQkJCQlOYW4gS2FuZyBEaXN0cmljdCwKLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtRDYgICAoaGV4KQkJQmVhbVJlYWNoIE5ldHdvcmtzCi0wMDBBRDYgICAgIChiYXNlIDE2KQkJQmVhbVJlYWNoIE5ldHdvcmtzCi0JCQkJNzU1IE5vcnRoIE1hdGhpbGRhIEF2ZQotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1ENyAgIChoZXgpCQlPcmlnaW4gRUxFQ1RSSUMgQ08uLExURC4KLTAwMEFENyAgICAgKGJhc2UgMTYpCQlPcmlnaW4gRUxFQ1RSSUMgQ08uLExURC4KLQkJCQkxLTE4LTEKLQkJCQlUQUtBREEKLQkJCQlUT1NISU1BIFdBUkQgVE9LWU8gTUVULiAxNzEtODU1NQotCQkJCUpBUEFOCi0KLTAwLTBBLUQ4ICAgKGhleCkJCUlQQ3NlcnYgVGVjaG5vbG9neSBDb3JwLgotMDAwQUQ4ICAgICAoYmFzZSAxNikJCUlQQ3NlcnYgVGVjaG5vbG9neSBDb3JwLgotCQkJCTZmLE5vLjEwNyxQYW4tSHNpbiBSZAotCQkJCVBhbi1DaGlhbyBUYWlwZWkgMjIwNDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUQ5ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDBBRDkgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMEEtREEgICAoaGV4KQkJVmluZGljYXRvciBUZWNobm9sb2dpZXMKLTAwMEFEQSAgICAgKGJhc2UgMTYpCQlWaW5kaWNhdG9yIFRlY2hub2xvZ2llcwotCQkJCTUzMDcgSW5kdXN0cmlhbCBPYWtzIEJsdmQuCi0JCQkJU3VpdGUgMTMwCi0JCQkJQXVzdGluIFRleGFzIDc4NzM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1EQiAgIChoZXgpCQlTa3lQaWxvdCBOZXR3b3JrLCBJbmMKLTAwMEFEQiAgICAgKGJhc2UgMTYpCQlTa3lQaWxvdCBOZXR3b3JrLCBJbmMKLQkJCQkxMzAxIFNob3Jld2F5IFJvYWQKLQkJCQlCZWxtb250IENBIDk0MDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1EQyAgIChoZXgpCQlSdWdnZWRDb20gSW5jLgotMDAwQURDICAgICAoYmFzZSAxNikJCVJ1Z2dlZENvbSBJbmMuCi0JCQkJMzAgV2hpdG1vcmUgUm9hZAotCQkJCVdvb2RicmlkZ2UgT250YXJpbyBMNEwgN1o0Ci0JCQkJQ0FOQURBCi0KLTAwLTBBLUREICAgKGhleCkJCUFsbHdvcnggQ29ycC4KLTAwMEFERCAgICAgKGJhc2UgMTYpCQlBbGx3b3J4IENvcnAuCi0JCQkJMzAwIE1haW4gU3RyZWV0Ci0JCQkJU3VpdGUgMTEKLQkJCQlFYXN0IFJvY2hlc3RlciBOWSAxNDQ0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtREUgICAoaGV4KQkJSGFwcHkgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMEFERSAgICAgKGJhc2UgMTYpCQlIYXBweSBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotCQkJCTQyLTExIFdvbk1pLURvbmcKLQkJCQlXb25NaS1HdQotCQkJCUJ1Y2hlb24tQ2l0eSBLeXVuZ0dpLURvIDQyMC0xMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtREYgICAoaGV4KQkJR2VubnVtIENvcnBvcmF0aW9uCi0wMDBBREYgICAgIChiYXNlIDE2KQkJR2VubnVtIENvcnBvcmF0aW9uCi0JCQkJUC5PIEJveCA0ODkKLQkJCQlTdGF0aW9uIEEKLQkJCQlCdXJsaW5ndG9uIE9udGFyaW8gTDdSIDNZMwotCQkJCUNBTkFEQQotCi0wMC0wQS1FMCAgIChoZXgpCQlGdWppdHN1IFNvZnRlawotMDAwQUUwICAgICAoYmFzZSAxNikJCUZ1aml0c3UgU29mdGVrCi0JCQkJMTI1MCBFYXN0IEFycXVlcyBBdmUKLQkJCQlNUyA3MjkKLQkJCQlTdW5ueXZhbGUgQ2EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUUxICAgKGhleCkJCUVHIFRlY2hub2xvZ3kKLTAwMEFFMSAgICAgKGJhc2UgMTYpCQlFRyBUZWNobm9sb2d5Ci0JCQkJMjUwIDE1dGggU3RyZWV0Ci0JCQkJU3VpdGUgNDAwNwotCQkJCUF0bGFudGEgR0EgMzAzMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUUyICAgKGhleCkJCUJpbmF0b25lIEVsZWN0cm9uaWNzIEludGVybmF0aW9uYWwsIEx0ZAotMDAwQUUyICAgICAoYmFzZSAxNikJCUJpbmF0b25lIEVsZWN0cm9uaWNzIEludGVybmF0aW9uYWwsIEx0ZAotCQkJCUZsb29yIDIzQSwgOSBEZXMgVm9ldXggUm9hZCBXZXN0Ci0JCQkJSG9uZyBLb25nIENoaW5hIAotCQkJCUhPTkcgS09ORwotCi0wMC0wQS1FMyAgIChoZXgpCQlZQU5HIE1FSSBURUNITk9MT0dZIENPLiwgTFRECi0wMDBBRTMgICAgIChiYXNlIDE2KQkJWUFORyBNRUkgVEVDSE5PTE9HWSBDTy4sIExURAotCQkJCTIxLCBBbGxleSAxLCBMYW5lIDM0MgotCQkJCUZ1ZGUgMXN0IFJvYWQsIFNoaWpyIENpdHkKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtRTQgICAoaGV4KQkJV2lzdHJvbiBDb3JwLgotMDAwQUU0ICAgICAoYmFzZSAxNikJCVdpc3Ryb24gQ29ycC4KLQkJCQkyMUYsIE5vLiA4OCwgU2VjdGlvbiAxLCBIc2luIFRhaSAgV3UgUmQuCi0JCQkJSHNpY2hpaAotCQkJCVRhaXBlaSAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS1FNSAgIChoZXgpCQlTY290dENhcmUgQ29ycG9yYXRpb24KLTAwMEFFNSAgICAgKGJhc2UgMTYpCQlTY290dENhcmUgQ29ycG9yYXRpb24KLQkJCQk0NzkxIFdlc3QgMTUwdGggU3RyZWV0Ci0JCQkJQ2xldmVsYW5kIE9oaW8gNDQxMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUU2ICAgKGhleCkJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtIENvLiAoRUNTKQotMDAwQUU2ICAgICAoYmFzZSAxNikJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtIENvLiAoRUNTKQotCQkJCU5vLjIyLCBBbGxleSAzOCwgTGFuZSA5MSwgU2VjLiAxLCBOZWkgSHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtRTcgICAoaGV4KQkJRUxJT1AgUy5BLgotMDAwQUU3ICAgICAoYmFzZSAxNikJCUVMSU9QIFMuQS4KLQkJCQlBdmVuaWRhIGRlIE1hbm90ZXJhcywgMzAKLQkJCQlNYWRyaWQgIEUtMjgwNTAKLQkJCQlTUEFJTgotCi0wMC0wQS1FOCAgIChoZXgpCQlDYXRoYXkgUm94dXMgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4gTFRECi0wMDBBRTggICAgIChiYXNlIDE2KQkJQ2F0aGF5IFJveHVzIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uIExURAotCQkJCUZ1aHVhIG1hbnNpb24gYnVpbGRpbmcgQS9CIDRGCi0JCQkJZG9uZ2NoZW5nIGRpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDI3Ci0JCQkJQ0hJTkEKLQotMDAtMEEtRTkgICAoaGV4KQkJQWlyVmFzdCBUZWNobm9sb2d5IEluYy4KLTAwMEFFOSAgICAgKGJhc2UgMTYpCQlBaXJWYXN0IFRlY2hub2xvZ3kgSW5jLgotCQkJCTNGLi01LCBOby42LCBMYW5lIDYwOSwgU2VjLiA1LCBDaG9uZ3NpbiBSZC4KLQkJCQlTYW5jaG9uZyBDaXR5IFRhaXBlaSAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUVBICAgKGhleCkJCUFEQU0gRUxFS1RST05JSyBMVEQuU1RJLgotMDAwQUVBICAgICAoYmFzZSAxNikJCUFEQU0gRUxFS1RST05JSyBMVEQuU1RJLgotCQkJCVVaVU5BWU5BIENBRC4gQ0VMRU5LIFNPSy4gTk86MSBDQUtNQUsgLwotCQkJCUlTVEFOQlVMICA4MTI2MAotCQkJCVRVUktFWQotCi0wMC0wQS1FQiAgIChoZXgpCQlTaGVuemhlbiBUcC1MaW5rIFRlY2hub2xvZ3kgQ287IEx0ZC4KLTAwMEFFQiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBUcC1MaW5rIFRlY2hub2xvZ3kgQ287IEx0ZC4KLQkJCQlIaS1UZWNoIFBhcmsgUjEtQjMKLQkJCQkzL0YsIEJsZGcsICBTaGVubmFuIFJvYWQKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMEEtRUMgICAoaGV4KQkJS29hdHN1IEdhcyBLb2d5byBDby4sIEx0ZC4KLTAwMEFFQyAgICAgKGJhc2UgMTYpCQlLb2F0c3UgR2FzIEtvZ3lvIENvLiwgTHRkLgotCQkJCTEtNSwgRG95YW1hLWNobywgS2l0YS1rdSwgT3Nha2EKLQkJCQlPc2FrYSAgNTMwLTg0MTEKLQkJCQlKQVBBTgotCi0wMC0wQS1FRCAgIChoZXgpCQlIQVJUSU5HIFN5c3RlbXMgR21iSCAmIENvIEtHCi0wMDBBRUQgICAgIChiYXNlIDE2KQkJSEFSVElORyBTeXN0ZW1zIEdtYkggJiBDbyBLRwotCQkJCVdpbGhlbG0gSGFydGluZyBTdHIuMQotCQkJCUVzcGVsa2FtcCBOUlcvT1dMIDMyMzM5Ci0JCQkJR0VSTUFOWQotCi0wMC0wQS1FRSAgIChoZXgpCQlHQ0QgSGFyZC0gJiBTb2Z0d2FyZSBHbWJICi0wMDBBRUUgICAgIChiYXNlIDE2KQkJR0NEIEhhcmQtICYgU29mdHdhcmUgR21iSAotCQkJCUhlbmtlc3RyLiA3OQotCQkJCUVybGFuZ2VuIEJheWVybiA5MTA1MgotCQkJCUdFUk1BTlkKLQotMDAtMEEtRUYgICAoaGV4KQkJT1RSVU0gQVNBCi0wMDBBRUYgICAgIChiYXNlIDE2KQkJT1RSVU0gQVNBCi0JCQkJQnJhdHRla2xlaXYKLQkJCQlGYWVydmlrICBOLTQ4MTgKLQkJCQlOT1JXQVkKLQotMDAtMEEtRjAgICAoaGV4KQkJU0hJTi1PSCBFTEVDVFJPTklDUyBDTy4sIExURC4gUiZECi0wMDBBRjAgICAgIChiYXNlIDE2KQkJU0hJTi1PSCBFTEVDVFJPTklDUyBDTy4sIExURC4gUiZECi0JCQkJIzcyOS01LCBCb25vaC1Eb25nLCBBbnNhbi1DaXR5LCBLeXVuZ2dpLQotCQkJCVNISU4tT0ggRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJQW5zYW4tQ2l0eSBLeXVuZ2dpLURvIDQyNS0xODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtRjEgICAoaGV4KQkJQ2xhcml0eSBEZXNpZ24sIEluYy4KLTAwMEFGMSAgICAgKGJhc2UgMTYpCQlDbGFyaXR5IERlc2lnbiwgSW5jLgotCQkJCTEzMDI5IERhbmllbHNvbiBTdHJlZXQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlQb3dheSBDQSA5MjA2NC04ODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GMiAgIChoZXgpCQlOZW9BeGlvbSBDb3JwLgotMDAwQUYyICAgICAoYmFzZSAxNikJCU5lb0F4aW9tIENvcnAuCi0JCQkJMTUyMCBNb250YWd1ZSBFeHByZXNzd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUYzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEFGMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUY0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEFGNCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUY1ICAgKGhleCkJCUFpcmdvIE5ldHdvcmtzLCBJbmMuCi0wMDBBRjUgICAgIChiYXNlIDE2KQkJQWlyZ28gTmV0d29ya3MsIEluYy4KLQkJCQk5MDAgQXJhc3RyYWRlcm8gUmQKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUY2ICAgKGhleCkJCUVtZXJzb24gQ2xpbWF0ZSBUZWNobm9sb2dpZXMgUmV0YWlsIFNvbHV0aW9ucywgSW5jLgotMDAwQUY2ICAgICAoYmFzZSAxNikJCUVtZXJzb24gQ2xpbWF0ZSBUZWNobm9sb2dpZXMgUmV0YWlsIFNvbHV0aW9ucywgSW5jLgotCQkJCTE2NDAgQWlycG9ydCBSZAotCQkJCVN1aXRlIDEwNAotCQkJCUtlbm5lc2F3IEdBIDMwMTQ0LTcwMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUY3ICAgKGhleCkJCUJyb2FkY29tIENvcnAuCi0wMDBBRjcgICAgIChiYXNlIDE2KQkJQnJvYWRjb20gQ29ycC4KLQkJCQkxNjIxNSBBbHRvbiBQYXJrd2F5Ci0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GOCAgIChoZXgpCQlBbWVyaWNhbiBUZWxlY2FyZSBJbmMuCi0wMDBBRjggICAgIChiYXNlIDE2KQkJQW1lcmljYW4gVGVsZWNhcmUgSW5jLgotCQkJCTc2NDAgR29sZGVuIFRyaWFuZ2xlIERyaXZlCi0JCQkJRWRlbiBQcmFpcmllIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GOSAgIChoZXgpCQlIaUNvbm5lY3QsIEluYy4KLTAwMEFGOSAgICAgKGJhc2UgMTYpCQlIaUNvbm5lY3QsIEluYy4KLQkJCQlSbSAjOTA2LCBIYWtzYW4gQ29zbW9zdGVsLCAxMTAKLQkJCQlLd2FuZ2phbmctRG9uZywgS3dhbmdqaW4tR3UsIFNlb3VsLCBLb3JlCi0JCQkJS3dhbmdqaW4tR3UgU2VvdWwgMTQzLTgwMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS1GQSAgIChoZXgpCQlUcmF2ZXJzZSBUZWNobm9sb2dpZXMgQXVzdHJhbGlhCi0wMDBBRkEgICAgIChiYXNlIDE2KQkJVHJhdmVyc2UgVGVjaG5vbG9naWVzIEF1c3RyYWxpYQotCQkJCVVuaXQgMTMsIDI0MCBTeWRuZXkgUmQKLQkJCQlDb2J1cmcgVmljdG9yaWEgMzA1OAotCQkJCUFVU1RSQUxJQQotCi0wMC0wQS1GQiAgIChoZXgpCQlBbWJyaSBMaW1pdGVkCi0wMDBBRkIgICAgIChiYXNlIDE2KQkJQW1icmkgTGltaXRlZAotCQkJCTEyNiBHcmV2aWxsZSBTdHJlZXQKLQkJCQlDaGF0c3dvb2QgTlNXIDIwNjcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtRkMgICAoaGV4KQkJQ29yZSBUZWMgQ29tbXVuaWNhdGlvbnMsIExMQwotMDAwQUZDICAgICAoYmFzZSAxNikJCUNvcmUgVGVjIENvbW11bmljYXRpb25zLCBMTEMKLQkJCQk0OSBMZWF2ZW53b3J0aCBTdHJlZXQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlXYXRlcmJ1cnkgQ1QgMDY3MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUZEICAgKGhleCkJCVZpa2luZyBFbGVjdHJvbmljIFNlcnZpY2VzCi0wMDBBRkQgICAgIChiYXNlIDE2KQkJVmlraW5nIEVsZWN0cm9uaWMgU2VydmljZXMKLQkJCQk2MjAgQWxsZW5kYWxlIFJkCi0JCQkJU3VpdGUgMTc1Ci0JCQkJS2luZyBvZiBQcnVzc2lhIFBBIDE5NDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GRSAgIChoZXgpCQlOb3ZhUGFsIEx0ZAotMDAwQUZFICAgICAoYmFzZSAxNikJCU5vdmFQYWwgTHRkCi0JCQkJRmxvb3IgNgotCQkJCTU4IFV4YnJpZGdlIFJvYWQKLQkJCQlFYWxpbmcgTG9uZG9uIFc1IDJTVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBBLUZGICAgKGhleCkJCUtpbGNoaGVyciBFbGVrdHJvbmlrIEFHCi0wMDBBRkYgICAgIChiYXNlIDE2KQkJS2lsY2hoZXJyIEVsZWt0cm9uaWsgQUcKLQkJCQlBZXNjaGlzdHJhc3NlIDI1Ci0JCQkJTXVlbnNpbmdlbiBCRSAzMTEwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEItMDAgICAoaGV4KQkJRlVKSUFOIFNUQVJUIENPTVBVVEVSIEVRVUlQTUVOVCBDTy4sTFRECi0wMDBCMDAgICAgIChiYXNlIDE2KQkJRlVKSUFOIFNUQVJUIENPTVBVVEVSIEVRVUlQTUVOVCBDTy4sTFRECi0JCQkJSE9ORyBTSEFOIFlVQU4gUk9BRCBOTy42OCBIT05HU0hBTixHVUxPVQotCQkJCUZVWkhPVSBGVUpJQU4gMzUwMDAyCi0JCQkJQ0hJTkEKLQotMDAtMEItMDEgICAoaGV4KQkJREFJSUNISSBFTEVDVFJPTklDUyBDTy4sIExURC4KLTAwMEIwMSAgICAgKGJhc2UgMTYpCQlEQUlJQ0hJIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTEtMTEtMTMKLQkJCQlIaXRvdHN1eWEgQWRhY2hpLWt1IFRva3lvIDEyMS04NjM5Ci0JCQkJSkFQQU4KLQotMDAtMEItMDIgICAoaGV4KQkJRGFsbG1laWVyIGVsZWN0cm9uaWMKLTAwMEIwMiAgICAgKGJhc2UgMTYpCQlEYWxsbWVpZXIgZWxlY3Ryb25pYwotCQkJCVd1ZXJ6YnVyZ2Vyc3RyLjUKLQkJCQlSZWdlbnNidXJnIEJhdmFyaWEgOTMwNTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLTAzICAgKGhleCkJCVRhZWt3YW5nIEluZHVzdHJpYWwgQ28uLCBMdGQKLTAwMEIwMyAgICAgKGJhc2UgMTYpCQlUYWVrd2FuZyBJbmR1c3RyaWFsIENvLiwgTHRkCi0JCQkJIzE5MS0xLCBBbnlhbmctN0RvbmcsIE1hbmFuLUd1Ci0JCQkJQW55YW5nLVNpIFNvdXRoIEtvcmVhIDQzMC0wMTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItMDQgICAoaGV4KQkJVm9sa3RlayBDb3Jwb3JhdGlvbgotMDAwQjA0ICAgICAoYmFzZSAxNikJCVZvbGt0ZWsgQ29ycG9yYXRpb24KLQkJCQk0Ri4sIE5vLjE5MiwgTGlhbi1DaGFuZyBSb2FkLCBDaGFuZy1IbwotCQkJCVRhaXBlaSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0wNSAgIChoZXgpCQlQYWNpZmljIEJyb2FkYmFuZCBOZXR3b3JrcwotMDAwQjA1ICAgICAoYmFzZSAxNikJCVBhY2lmaWMgQnJvYWRiYW5kIE5ldHdvcmtzCi0JCQkJOC0xMCBLZWl0aCBDYW1wYmVsbCBDb3VydAotCQkJCVNDT1JFU0JZIFZJQyAzMTc5Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTBCLTA2ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDBCMDYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0wNyAgIChoZXgpCQlWb3hwYXRoIE5ldHdvcmtzCi0wMDBCMDcgICAgIChiYXNlIDE2KQkJVm94cGF0aCBOZXR3b3JrcwotCQkJCTc2MDBCIENhcGl0YWwgb2YgVGV4YXMgSGlnaHdheSAgLSBOb3J0aAotCQkJCVN1aXRlIDIyMAotCQkJCUF1c3RpbiBUZXhhcyA3ODczMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMDggICAoaGV4KQkJUGlsbGFyIERhdGEgU3lzdGVtcwotMDAwQjA4ICAgICAoYmFzZSAxNikJCVBpbGxhciBEYXRhIFN5c3RlbXMKLQkJCQkxMzcxIE1jQ2FydGh5IEJsdmQuCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTA5ICAgKGhleCkJCUlmb3VuZHJ5IFN5c3RlbXMgU2luZ2Fwb3JlCi0wMDBCMDkgICAgIChiYXNlIDE2KQkJSWZvdW5kcnkgU3lzdGVtcyBTaW5nYXBvcmUKLQkJCQlCbG9jayAxLCBVbml0IDEwMUIsIElubm92YXRpb24gQ2VudHJlLCAxCi0JCQkJNjM3NzIyCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTBCLTBBICAgKGhleCkJCWRCbSBPcHRpY3MKLTAwMEIwQSAgICAgKGJhc2UgMTYpCQlkQm0gT3B0aWNzCi0JCQkJMzAwIFMuIFB1YmxpYyBSb2FkCi0JCQkJTGFmYXlldHRlIENvbG9yYWRvIDgwMDI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0wQiAgIChoZXgpCQlDb3JyZW50IENvcnBvcmF0aW9uCi0wMDBCMEIgICAgIChiYXNlIDE2KQkJQ29ycmVudCBDb3Jwb3JhdGlvbgotCQkJCTE3MTEgVy4gR3JlZW50cmVlIERyLgotCQkJCVN1aXRlIDIwMQotCQkJCVRlbXBlIEFaIDg1Mjg0LTI3MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTBDICAgKGhleCkJCUFnaWxlIFN5c3RlbXMgSW5jLgotMDAwQjBDICAgICAoYmFzZSAxNikJCUFnaWxlIFN5c3RlbXMgSW5jLgotCQkJCTU3NSBLdW1wZiBEcml2ZQotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJWIDFLMwotCQkJCUNBTkFEQQotCi0wMC0wQi0wRCAgIChoZXgpCQlBaXIyVSwgSW5jLgotMDAwQjBEICAgICAoYmFzZSAxNikJCUFpcjJVLCBJbmMuCi0JCQkJTm8uIDUtMSBJbm5vdmF0aW9uIFJkIDEsIFNjaWVuY2UtYmFzZWQgUAotCQkJCUhzaW4tQ2h1IFRhaXdhbiAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTBFICAgKGhleCkJCVRyYXBlemUgTmV0d29ya3MKLTAwMEIwRSAgICAgKGJhc2UgMTYpCQlUcmFwZXplIE5ldHdvcmtzCi0JCQkJNTc1MyBXLiBMYXMgUG9zaXRhcyBCbHZkCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMEYgICAoaGV4KQkJTnlxdWlzdCBJbmR1c3RyaWFsIENvbnRyb2wgQlYKLTAwMEIwRiAgICAgKGJhc2UgMTYpCQlOeXF1aXN0IEluZHVzdHJpYWwgQ29udHJvbCBCVgotCQkJCUx1Y2h0aGF2ZW53ZWcgMjAKLQkJCQlFaW5kaG92ZW4gTm9vcmQgQnJhYmFudCBOTDU2NTcgRUIKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wQi0xMCAgIChoZXgpCQkxMXdhdmUgVGVjaG5vbmxvZ3kgQ28uLEx0ZAotMDAwQjEwICAgICAoYmFzZSAxNikJCTExd2F2ZSBUZWNobm9ubG9neSBDby4sTHRkCi0JCQkJMTBGLG5vLjI4NSBzZWMuMiAsVGktRGluZyBBdmUsTmFpSHUuVGFpcAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0xMSAgIChoZXgpCQlISU1FSkkgQUJDIFRSQURJTkcgQ08uLExURC4KLTAwMEIxMSAgICAgKGJhc2UgMTYpCQlISU1FSkkgQUJDIFRSQURJTkcgQ08uLExURC4KLQkJCQkxLTgtMjIKLQkJCQlKWU9VSE9LVVNISU5NQUNISQotCQkJCUhKTUVKSSBIWU9HTyA2NzAtMDg4MwotCQkJCUpBUEFOCi0KLTAwLTBCLTEyICAgKGhleCkJCU5VUkkgVGVsZWNvbSBDby4sIEx0ZC4KLTAwMEIxMiAgICAgKGJhc2UgMTYpCQlOVVJJIFRlbGVjb20gQ28uLCBMdGQuCi0JCQkJV29vbGltIExpb24ncyBWYWxsZXkgQmxkZy1CIDEwdGggRgotCQkJCSMzNzEtMjggS2FzYW4tZG9uZwotCQkJCUtldW0tY2hldW4tZ3UgU2VvdWwgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi0xMyAgIChoZXgpCQlaRVRST04gSU5DCi0wMDBCMTMgICAgIChiYXNlIDE2KQkJWkVUUk9OIElOQwotCQkJCVBPIEJveCA5NzAwNAotCQkJCVJFRE1PTkQgV0EgOTgwNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTE0ICAgKGhleCkJCVZpZXdTb25pYyBDb3Jwb3JhdGlvbgotMDAwQjE0ICAgICAoYmFzZSAxNikJCVZpZXdTb25pYyBDb3Jwb3JhdGlvbgotCQkJCTM4MSBCcmVhIENhbnlvbiBSb2FkCi0JCQkJV2FsbnV0IENhbGlmb3JuaWEgOTE3ODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTE1ICAgKGhleCkJCVBsYXR5cHVzIFRlY2hub2xvZ3kKLTAwMEIxNSAgICAgKGJhc2UgMTYpCQlQbGF0eXB1cyBUZWNobm9sb2d5Ci0JCQkJNC8xIEF0Y2hpc29uIFN0Ci0JCQkJU3QgTGVvbmFyZHMgTlNXIDIwNjUKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEItMTYgICAoaGV4KQkJQ29tbXVuaWNhdGlvbiBNYWNoaW5lcnkgQ29ycG9yYXRpb24KLTAwMEIxNiAgICAgKGJhc2UgMTYpCQlDb21tdW5pY2F0aW9uIE1hY2hpbmVyeSBDb3Jwb3JhdGlvbgotCQkJCTQwMiBFLiBHdXRpZXJyZXogU3QuCi0JCQkJU2FudGEgQmFyYmFyYSBDQSA5MzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMTcgICAoaGV4KQkJTUtTIEluc3RydW1lbnRzCi0wMDBCMTcgICAgIChiYXNlIDE2KQkJTUtTIEluc3RydW1lbnRzCi0JCQkJNjUxIExvd2VsbCBTdHJlZXQKLQkJCQlNZXRodWVuIE1BIDAxODQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0xOCAgIChoZXgpCQlQUklWQVRFCi0wMDBCMTggICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBCLTE5ICAgKGhleCkJCVZlcm5pZXIgTmV0d29ya3MsIEluYy4KLTAwMEIxOSAgICAgKGJhc2UgMTYpCQlWZXJuaWVyIE5ldHdvcmtzLCBJbmMuCi0JCQkJNDkwIEUuIE1pZGRsZWZpZWxkIFJvYWQKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0xQSAgIChoZXgpCQlJbmR1c3RyaWFsIERlZmVuZGVyLCBJbmMuCi0wMDBCMUEgICAgIChiYXNlIDE2KQkJSW5kdXN0cmlhbCBEZWZlbmRlciwgSW5jLgotCQkJCTE2IENoZXN0bnV0IFN0cmVldAotCQkJCVN1aXRlIDMwMAotCQkJCUZveGJvcm91Z2ggTUEgMDIwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTFCICAgKGhleCkJCVN5c3Ryb25peCwgSW5jLgotMDAwQjFCICAgICAoYmFzZSAxNikJCVN5c3Ryb25peCwgSW5jLgotCQkJCTkzOSBFZGlzb24gU3QuCi0JCQkJU2FsdCBMYWtlIENpdHkgVXRhaCA4NDExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMUMgICAoaGV4KQkJU0lCQ08gYnYKLTAwMEIxQyAgICAgKGJhc2UgMTYpCQlTSUJDTyBidgotCQkJCVNjaG9vbmhvdXQgNDYKLQkJCQlFdHRlbi1MZXVyIE5CIDQ4NzIgTUUKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wQi0xRCAgIChoZXgpCQlMYXllclplcm8gUG93ZXIgU3lzdGVtcywgSW5jLgotMDAwQjFEICAgICAoYmFzZSAxNikJCUxheWVyWmVybyBQb3dlciBTeXN0ZW1zLCBJbmMuCi0JCQkJMzU1OSBUb3dubGV5IFJvYWQKLQkJCQlTaGFrZXIgSGVpZ2h0cyBPSCA0NDEyMi01MTU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0xRSAgIChoZXgpCQlLQVBQQSBvcHRvLWVsZWN0cm9uaWNzIEdtYkgKLTAwMEIxRSAgICAgKGJhc2UgMTYpCQlLQVBQQSBvcHRvLWVsZWN0cm9uaWNzIEdtYkgKLQkJCQlLbGVpbmVzIEZlbGQgNgotCQkJCTM3MTMwCi0JCQkJR2xlaWNoZW4gTmllZGVyc2FjaHNlbiAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLTFGICAgKGhleCkJCUkgQ09OIENvbXB1dGVyIENvLgotMDAwQjFGICAgICAoYmFzZSAxNikJCUkgQ09OIENvbXB1dGVyIENvLgotCQkJCTNGLCBOby4gMTQyICwgSHNpbiBNaW5nIFJvYWQKLQkJCQlOZWlodSBUYWlwZWkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0yMCAgIChoZXgpCQlIaXJhdGEgY29ycG9yYXRpb24KLTAwMEIyMCAgICAgKGJhc2UgMTYpCQlIaXJhdGEgY29ycG9yYXRpb24KLQkJCQkxMTEgSGl0b3RzdWdpLCBVZWtpLAotCQkJCUthbW90byBLdW1hbW90byA4NjEtMDE5OAotCQkJCUpBUEFOCi0KLTAwLTBCLTIxICAgKGhleCkJCUctU3RhciBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDBCMjEgICAgIChiYXNlIDE2KQkJRy1TdGFyIENvbW11bmljYXRpb25zIEluYy4KLQkJCQk1RiwgNjktMTAsIFNlYy4gMiwgQ2h1bmcgQ2hlbmcgRWFzdCBSb2FkCi0JCQkJVGFpcGVpIEhzaWVuICAyNTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTIyICAgKGhleCkJCUVudmlyb25tZW50YWwgU3lzdGVtcyBhbmQgU2VydmljZXMKLTAwMEIyMiAgICAgKGJhc2UgMTYpCQlFbnZpcm9ubWVudGFsIFN5c3RlbXMgYW5kIFNlcnZpY2VzCi0JCQkJMjAgQ291bmNpbCBTdHJlZXQKLQkJCQlIYXd0aG9ybiBFYXN0IFZpY3RvcmlhIDMxMjMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEItMjMgICAoaGV4KQkJU2llbWVucyBTdWJzY3JpYmVyIE5ldHdvcmtzCi0wMDBCMjMgICAgIChiYXNlIDE2KQkJU2llbWVucyBTdWJzY3JpYmVyIE5ldHdvcmtzCi0JCQkJNDg0OSBBbHBoYSBSb2FkCi0JCQkJRGFsbGFzIFRleGFzIDc0MjQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0yNCAgIChoZXgpCQlBaXJMb2dpYwotMDAwQjI0ICAgICAoYmFzZSAxNikJCUFpckxvZ2ljCi0JCQkJODA3LTEsIEJ1bmRhbmd0ZWNobm9wYXJrIEQsIDE1MSwKLQkJCQlZYXRhcC1Eb25nLCBCdW5kYW5nLUt1Ci0JCQkJU3VuZ25hbS1TaSBLeXVuZ2tpLURvIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItMjUgICAoaGV4KQkJQWVsdXJvcwotMDAwQjI1ICAgICAoYmFzZSAxNikJCUFlbHVyb3MKLQkJCQkyMDEgU2FuIEFudG9uaW8gQ2lyY2xlICMxNzIKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0yNiAgIChoZXgpCQlXZXRlayBDb3Jwb3JhdGlvbgotMDAwQjI2ICAgICAoYmFzZSAxNikJCVdldGVrIENvcnBvcmF0aW9uCi0JCQkJNEYsIE5PLjE3LCBLdWFuZnUgTi4gUm9hZAotCQkJCUhzaW4gQ2h1IEluZHVzdHJpYWwgUGFyayBIc2luIENodSAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTI3ICAgKGhleCkJCVNjaW9uIENvcnBvcmF0aW9uCi0wMDBCMjcgICAgIChiYXNlIDE2KQkJU2Npb24gQ29ycG9yYXRpb24KLQkJCQk4MiBXb3JtYW4ncyBNaWxsIENvdXJ0Ci0JCQkJU3VpdGUgSAotCQkJCUZyZWRlcmljayBNRCAyMTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMjggICAoaGV4KQkJUXVhdGVjaCBJbmMuCi0wMDBCMjggICAgIChiYXNlIDE2KQkJUXVhdGVjaCBJbmMuCi0JCQkJNjYyIFdvbGYgTGVkZ2VzIFBrd3kuCi0JCQkJQWtyb24gT0ggNDQzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTI5ICAgKGhleCkJCUxTKExHKSBJbmR1c3RyaWFsIFN5c3RlbXMgY28uLEx0ZAotMDAwQjI5ICAgICAoYmFzZSAxNikJCUxTKExHKSBJbmR1c3RyaWFsIFN5c3RlbXMgY28uLEx0ZAotCQkJCTUzMyBIb2d5ZS1kb25nLCBEb25nYW4tZ3UKLQkJCQlBbnlhbmctc2kgR3llb25nZ2ktZG8gCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTJBICAgKGhleCkJCUhPV1RFTCBDby4sIEx0ZC4KLTAwMEIyQSAgICAgKGJhc2UgMTYpCQlIT1dURUwgQ28uLCBMdGQuCi0JCQkJSi1DT00gQmQuIDRGLCAxMjQtNCBPSkVPTi1ET05HCi0JCQkJVUlXQU5HLVNISSBLWU9VTkdHSS1ETyA0MzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTJCICAgKGhleCkJCUhPU1RORVQgQ09SUE9SQVRJT04KLTAwMEIyQiAgICAgKGJhc2UgMTYpCQlIT1NUTkVUIENPUlBPUkFUSU9OCi0JCQkJMTBGLTEyLE5vLiAxMiBMYW5lIDYwOSwgU2VjLjUsQ2h1bmdoc2luCi0JCQkJU2FuY2h1bmcgVGFpcGVpIEhzaWVuIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItMkMgICAoaGV4KQkJRWlraSBJbmR1c3RyaWFsIENvLiBMdGQuCi0wMDBCMkMgICAgIChiYXNlIDE2KQkJRWlraSBJbmR1c3RyaWFsIENvLiBMdGQuCi0JCQkJNC0xMiBNYW56YWktY2hvLCBLaXRhLWt1Ci0JCQkJT3Nha2EgIDUzMAotCQkJCUpBUEFOCi0KLTAwLTBCLTJEICAgKGhleCkJCURhbmZvc3MgSW5jLgotMDAwQjJEICAgICAoYmFzZSAxNikJCURhbmZvc3MgSW5jLgotCQkJCTc5NDEgQ29ycG9yYXRlIERyCi0JCQkJQmFsdGltb3JlIE1EIDIxMjM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0yRSAgIChoZXgpCQlDYWwtQ29tcCBFbGVjdHJvbmljcyAoVGhhaWxhbmQpIFB1YmxpYyBDb21wYW55IExpbWl0ZWQgVGFpcGUKLTAwMEIyRSAgICAgKGJhc2UgMTYpCQlDYWwtQ29tcCBFbGVjdHJvbmljcyAoVGhhaWxhbmQpIFB1YmxpYyBDb21wYW55IExpbWl0ZWQgVGFpcGUKLQkJCQk5RiwgOTksIE5hbi1LaW5nIEUgUmQuLCBTZWMuIDUuCi0JCQkJVGFpcGVpICAxMDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTJGICAgKGhleCkJCWJwbGFuIEdtYkgKLTAwMEIyRiAgICAgKGJhc2UgMTYpCQlicGxhbiBHbWJICi0JCQkJSW5kdXN0cmllc3RyYXNzZSAyMwotCQkJCVN0ZWluYmFjaCA2MTQ0OQotCQkJCUdFUk1BTlkKLQotMDAtMEItMzAgICAoaGV4KQkJQmVpamluZyBHb25neWUgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwQjMwICAgICAoYmFzZSAxNikJCUJlaWppbmcgR29uZ3llIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlVbml0IEQuMTcvRSxTaGVubGFuaHVhdGluZyBtaWQgUm9hZCBOby42Ci0JCQkJQmVpamluZyAgMTAwMDI5Ci0JCQkJQ0hJTkEKLQotMDAtMEItMzEgICAoaGV4KQkJWWFudGFpIFpoaVlhbmcgU2NpZW50aWZpYyBhbmQgdGVjaG5vbG9neSBpbmR1c3RyeSBDTy4sIExURAotMDAwQjMxICAgICAoYmFzZSAxNikJCVlhbnRhaSBaaGlZYW5nIFNjaWVudGlmaWMgYW5kIHRlY2hub2xvZ3kgaW5kdXN0cnkgQ08uLCBMVEQKLQkJCQk1Ri00LCBOTy4gNjQsIEdvbmctSmlhbiBSZC4KLQkJCQlIc2ktQ2hpaCBDaXR5IFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0zMiAgIChoZXgpCQlWT1JNRVRSSUMsIElOQy4KLTAwMEIzMiAgICAgKGJhc2UgMTYpCQlWT1JNRVRSSUMsIElOQy4KLQkJCQkyMDYwIENPUlBPUkFURSBDVAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0zMyAgIChoZXgpCQlWaXZhdG8KLTAwMEIzMyAgICAgKGJhc2UgMTYpCQlWaXZhdG8KLQkJCQkxMjYxMCBFYXN0IE1pcmFiZWF1IFBhcmt3YXkKLQkJCQlTcG9rYW5lIFdBIDk5MjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0zNCAgIChoZXgpCQlTaGFuZ0hhaSBCcm9hZGJhbmQgVGVjaG5vbG9naWVzIENPLkxURAotMDAwQjM0ICAgICAoYmFzZSAxNikJCVNoYW5nSGFpIEJyb2FkYmFuZCBUZWNobm9sb2dpZXMgQ08uTFRECi0JCQkJMTdGLE5vLjEyMixIdWFuZ1hpbmcgUm9hZAotCQkJCVNoYW5nSGFpICAyMDAwOTAKLQkJCQlDSElOQQotCi0wMC0wQi0zNSAgIChoZXgpCQlRdWFkIEJpdCBTeXN0ZW0gY28uLCBMdGQuCi0wMDBCMzUgICAgIChiYXNlIDE2KQkJUXVhZCBCaXQgU3lzdGVtIGNvLiwgTHRkLgotCQkJCTQwMiBHYXlhbmcgVGVjaG5vdG93bgotCQkJCTE0ODcgR2F5YW5nIDMgZG9uZwotCQkJCVNlb3VsIEthbmdzZW9ndSAxNTctODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTM2ICAgKGhleCkJCVByb2R1Y3Rpdml0eSBTeXN0ZW1zLCBJbmMuCi0wMDBCMzYgICAgIChiYXNlIDE2KQkJUHJvZHVjdGl2aXR5IFN5c3RlbXMsIEluYy4KLQkJCQkxNzExIEFuYWxvZyBEcml2ZQotCQkJCVJpY2hhcmRzb24gVFggNzUwODEtMTk0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMzcgICAoaGV4KQkJTUFOVUZBQ1RVUkUgREVTIE1PTlRSRVMgUk9MRVggU0EKLTAwMEIzNyAgICAgKGJhc2UgMTYpCQlNQU5VRkFDVFVSRSBERVMgTU9OVFJFUyBST0xFWCBTQQotCQkJCUxBIEhBVVRFLVJPVVRFIDgyCi0JCQkJQklFTC1CSUVOTkUgQkUgMjUwMgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBCLTM4ICAgKGhleCkJCUtudWVyciBBRwotMDAwQjM4ICAgICAoYmFzZSAxNikJCUtudWVyciBBRwotCQkJCU1hcmlha2lyY2hlbmVyIFN0cmFzc2UgMzgKLQkJCQlBcm5zdG9yZiBCYXZhcmlhIDk0NDI0Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi0zOSAgIChoZXgpCQlLZWlzb2t1IEdpa2VuIENvLixMdGQuCi0wMDBCMzkgICAgIChiYXNlIDE2KQkJS2Vpc29rdSBHaWtlbiBDby4sTHRkLgotCQkJCTItMTItMiAsIENoaWdhc2FraS1taW5hbWkKLQkJCQlUc3V6dWtpLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjI0LTAwMzcKLQkJCQlKQVBBTgotCi0wMC0wQi0zQSAgIChoZXgpCQlRdVN0cmVhbSBDb3Jwb3JhdGlvbgotMDAwQjNBICAgICAoYmFzZSAxNikJCVF1U3RyZWFtIENvcnBvcmF0aW9uCi0JCQkJMzMwNSBCcmVja2lucmlkZ2UgQmx2ZC4KLQkJCQlTdWl0ZSAxMTgKLQkJCQlEdWx1dGggR2VvcmdpYSAzMDA5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItM0IgICAoaGV4KQkJZGV2b2xvIEFHCi0wMDBCM0IgICAgIChiYXNlIDE2KQkJZGV2b2xvIEFHCi0JCQkJU29ubmVud2VnIDExCi0JCQkJQWFjaGVuIE5SVyA1MjA3MAotCQkJCUdFUk1BTlkKLQotMDAtMEItM0MgICAoaGV4KQkJQ3lnbmFsIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4KLTAwMEIzQyAgICAgKGJhc2UgMTYpCQlDeWduYWwgSW50ZWdyYXRlZCBQcm9kdWN0cywgSW5jLgotCQkJCTQzMDEgV2VzdGJhbmsgRHJpdmUKLQkJCQlTdWl0ZSBCLTEwMAotCQkJCUF1c3RpbiBUWCA3ODc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItM0QgICAoaGV4KQkJQ09OVEFMIE9LIEx0ZC4KLTAwMEIzRCAgICAgKGJhc2UgMTYpCQlDT05UQUwgT0sgTHRkLgotCQkJCUZyYW5hIE1yYXphIDIvMjg5Ci0JCQkJUC5PLkJveCBCLTM0Ci0JCQkJWmlsaW5hICAwMTEyNAotCQkJCVNMT1ZBS0lBCi0KLTAwLTBCLTNFICAgKGhleCkJCUJpdHRXYXJlLCBJbmMKLTAwMEIzRSAgICAgKGJhc2UgMTYpCQlCaXR0V2FyZSwgSW5jCi0JCQkJMzEgQiBTb3V0aCBNYWluIFN0Ci0JCQkJQ29uY29yZCBOSCAwMzMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItM0YgICAoaGV4KQkJQW50aG9sb2d5IFNvbHV0aW9ucyBJbmMuCi0wMDBCM0YgICAgIChiYXNlIDE2KQkJQW50aG9sb2d5IFNvbHV0aW9ucyBJbmMuCi0JCQkJMTcyMiBSaW5nd29vZCBBdmUuCi0JCQkJU3VpdGUgMjUwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTQwICAgKGhleCkJCU9wTmV4dCBJbmMuCi0wMDBCNDAgICAgIChiYXNlIDE2KQkJT3BOZXh0IEluYy4KLQkJCQkxIENocmlzdG9waGVyIFdheQotCQkJCUVhdG9udG93biBOZXcgSmVyc2V5IDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi00MSAgIChoZXgpCQlJbmcuIEJ1ZXJvIERyLiBCZXV0bGhhdXNlcgotMDAwQjQxICAgICAoYmFzZSAxNikJCUluZy4gQnVlcm8gRHIuIEJldXRsaGF1c2VyCi0JCQkJUm9lbWVyd2VnIDQKLQkJCQlHcmFzc2F1IEQtODMyMjQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLTQyICAgKGhleCkJCWNvbW1heCBDby4sIEx0ZC4KLTAwMEI0MiAgICAgKGJhc2UgMTYpCQljb21tYXggQ28uLCBMdGQuCi0JCQkJNTEzLTExLCBTYW5nZGFld29uLURvbmcsIEp1bmd3b24tS3UKLQkJCQlTdW5nbmFtLUNpdHkgS3l1bmdnaS1EbyA0NjItMTIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTQzICAgKGhleCkJCU1pY3Jvc2NhbiBTeXN0ZW1zLCBJbmMuCi0wMDBCNDMgICAgIChiYXNlIDE2KQkJTWljcm9zY2FuIFN5c3RlbXMsIEluYy4KLQkJCQkxMjAxIFNXIDd0aCBTdHJlZXQKLQkJCQlSZW50b24gV0EgOTgwNTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTQ0ICAgKGhleCkJCUNvbmNvcmQgSURlYSBDb3JwLgotMDAwQjQ0ICAgICAoYmFzZSAxNikJCUNvbmNvcmQgSURlYSBDb3JwLgotCQkJCTQxMTggMTR0aCBBdmUuLCBVbml0IDQKLQkJCQlNYXJraGFtIE9udGFyaW8gTDNSIDBKMwotCQkJCUNBTkFEQQotCi0wMC0wQi00NSAgIChoZXgpCQlDaXNjbwotMDAwQjQ1ICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTQ2ICAgKGhleCkJCUNpc2NvCi0wMDBCNDYgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNDcgICAoaGV4KQkJQWR2YW5jZWQgRW5lcmd5Ci0wMDBCNDcgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgRW5lcmd5Ci0JCQkJMTYyNSBTaGFycCBQb2ludCBEcml2ZQotCQkJCUZvcnQgQ29sbGlucyBDb2xvcmFkbyA4MDUyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNDggICAoaGV4KQkJc29mcmVsCi0wMDBCNDggICAgIChiYXNlIDE2KQkJc29mcmVsCi0JCQkJMiBydWUgZHUgcGxlc3NpcwotCQkJCXZlcm4gc3VyIHNlaWNoZSBpbGxlIGV0IHZpbGFpbmUgMzU3NzAKLQkJCQlGUkFOQ0UKLQotMDAtMEItNDkgICAoaGV4KQkJUkYtTGluayBTeXN0ZW0gSW5jLgotMDAwQjQ5ICAgICAoYmFzZSAxNikJCVJGLUxpbmsgU3lzdGVtIEluYy4KLQkJCQlOby42LCBOYW4tS2UgNXRoIFJkLiwgSHNpbi1TaGksCi0JCQkJVGFpbmFuIENvdW50eSAgNzQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi00QSAgIChoZXgpCQlWaXNpbWV0cmljcyAoVUspIEx0ZAotMDAwQjRBICAgICAoYmFzZSAxNikJCVZpc2ltZXRyaWNzIChVSykgTHRkCi0JCQkJU2t5ZSBIb3VzZQotCQkJCVNreWUgUm9hZAotCQkJCVByZXN0d2ljayBBeXJzaGlyZSBLQTkgMlRBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEItNEIgICAoaGV4KQkJVklTSU9XQVZFIFNBCi0wMDBCNEIgICAgIChiYXNlIDE2KQkJVklTSU9XQVZFIFNBCi0JCQkJUm91dGUgZGUgbGEgUGllcnJlIDIyCi0JCQkJVklDVE9SSUEgSE9VU0UKLQkJCQlFQ1VCTEVOUyBWQVVEIENILTEwMjQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQi00QyAgIChoZXgpCQlDbGFyaW9uIChNKSBTZG4gQmhkCi0wMDBCNEMgICAgIChiYXNlIDE2KQkJQ2xhcmlvbiAoTSkgU2RuIEJoZAotCQkJCVBoYXNlIDMKLQkJCQlGSVoKLQkJCQlCYXlhbiBMZXBhcyBQZW5hbmcgMTE5MDAKLQkJCQlNQUxBWVNJQQotCi0wMC0wQi00RCAgIChoZXgpCQlFbXV6ZWQKLTAwMEI0RCAgICAgKGJhc2UgMTYpCQlFbXV6ZWQKLQkJCQk0Njc1MCBMYWtldmlldyBCb3VsZXZhcmQKLQkJCQlGcmVtb250IENhbGlmb3JuaWEgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTRFICAgKGhleCkJCVZlcnRleFJTSSwgR2VuZXJhbCBEeW5hbWljcyBTYXRDT00gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBCNEUgICAgIChiYXNlIDE2KQkJVmVydGV4UlNJLCBHZW5lcmFsIER5bmFtaWNzIFNhdENPTSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxOTE1IEUuIEhhcnJpc29uIFJvYWQKLQkJCQlMb25ndmlldyBUWCA3NTYwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNEYgICAoaGV4KQkJVmVyaWZvbmUsIElOQy4KLTAwMEI0RiAgICAgKGJhc2UgMTYpCQlWZXJpZm9uZSwgSU5DLgotCQkJCTI0NTUgQXVndXN0aW5lIERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNTAgICAoaGV4KQkJT3h5Z25ldAotMDAwQjUwICAgICAoYmFzZSAxNikJCU94eWduZXQKLQkJCQk0MDIgRS4gQ2FycmlsbG8gU3QuCi0JCQkJU3VpdGUgQwotCQkJCVNhbnRhIEJhcmJhcmEgQ0EgOTMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTUxICAgKGhleCkJCU1pY2V0ZWsgSW50ZXJuYXRpb25hbCBJbmMuCi0wMDBCNTEgICAgIChiYXNlIDE2KQkJTWljZXRlayBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQk3Ri0xLCAjMjM3LCBTZWMuIDEsIHd1IENodWFuIFcuIFJkLgotCQkJCVRhaWNodW5nICA0MDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTUyICAgKGhleCkJCUpPWU1BWCBFTEVDVFJPTklDUyBDTy4gTFRELgotMDAwQjUyICAgICAoYmFzZSAxNikJCUpPWU1BWCBFTEVDVFJPTklDUyBDTy4gTFRELgotCQkJCU5vLjUgRG9uZy1ZdWFuIFJvYWQgMiwgSmhvbmctTGkgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUpob25nLUxpIENpdHksIAotCQkJCVRhby1ZdWFuICAzMjA2MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItNTMgICAoaGV4KQkJSU5JVElVTSBDby4sIEx0ZC4KLTAwMEI1MyAgICAgKGJhc2UgMTYpCQlJTklUSVVNIENvLiwgTHRkLgotCQkJCThGLiBHb25nZHVjayBCbGRnLiAyNzItNiBTZW9oeXVuIEJ1bmRhbmcKLQkJCQlTdW5nbmFtIEt5dW5nZ2kgNDYzLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi01NCAgIChoZXgpCQlCaVRNSUNSTyBOZXR3b3JrcywgSW5jLgotMDAwQjU0ICAgICAoYmFzZSAxNikJCUJpVE1JQ1JPIE5ldHdvcmtzLCBJbmMuCi0JCQkJNDU1NTAgTm9ydGhwb3J0IExvb3AgRWFzdAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTU1ICAgKGhleCkJCUFESW5zdHJ1bWVudHMKLTAwMEI1NSAgICAgKGJhc2UgMTYpCQlBREluc3RydW1lbnRzCi0JCQkJUC4gTy4gQm94IDU4NwotCQkJCUR1bmVkaW4gT3RhZ28gOTAwMQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTBCLTU2ICAgKGhleCkJCUN5YmVybmV0aWNzCi0wMDBCNTYgICAgIChiYXNlIDE2KQkJQ3liZXJuZXRpY3MKLQkJCQkxMTEgQ3liZXJuZXRpY3MgV2F5Ci0JCQkJWW9ya3Rvd24gVkEgMjM2OTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTU3ICAgKGhleCkJCVNpbGljb24gTGFib3JhdG9yaWVzCi0wMDBCNTcgICAgIChiYXNlIDE2KQkJU2lsaWNvbiBMYWJvcmF0b3JpZXMKLQkJCQk3MDAwIFcuIFdpbGxpYW0gQ2Fubm9uIERyLgotCQkJCUJsZGcuMSwgU3VpdGUgMjAwCi0JCQkJQXVzdGluIFRYIDc4NzM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi01OCAgIChoZXgpCQlBc3Ryb25hdXRpY3MgQy5BICBMVEQKLTAwMEI1OCAgICAgKGJhc2UgMTYpCQlBc3Ryb25hdXRpY3MgQy5BICBMVEQKLQkJCQkyMyBoYXlhcmtvbiBzdHJlZXQKLQkJCQlCbmVpIEJyYWsgIDUxMjYxCi0JCQkJSVNSQUVMCi0KLTAwLTBCLTU5ICAgKGhleCkJCVNjcmlwdFBybywgTExDCi0wMDBCNTkgICAgIChiYXNlIDE2KQkJU2NyaXB0UHJvLCBMTEMKLQkJCQk1ODI4IFJlZWRzIFJkLgotCQkJCU1pc3Npb24gS2Fuc2FzIDY2MjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi01QSAgIChoZXgpCQlIeXBlckVkZ2UKLTAwMEI1QSAgICAgKGJhc2UgMTYpCQlIeXBlckVkZ2UKLQkJCQkzMzMgUGllcmNlIFJvYWQgU3VpdGUgIzIwMAotCQkJCUl0YXNjYSBJTCA2MDE0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNUIgICAoaGV4KQkJUmluY29uIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0wMDBCNUIgICAgIChiYXNlIDE2KQkJUmluY29uIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0JCQkJMTAxIE4uIFdpbG1vdCBSZC4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlUdWNzb24gQVogODU3MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTVDICAgKGhleCkJCU5ld3RlY2ggQ28uLEx0ZAotMDAwQjVDICAgICAoYmFzZSAxNikJCU5ld3RlY2ggQ28uLEx0ZAotCQkJCUstQmxkZyAxLTctNyBTaGliYWRhaW1vbiBNaW5hdG8ta3UKLQkJCQlUb2t5byAgMTA1LTAwMTIKLQkJCQlKQVBBTgotCi0wMC0wQi01RCAgIChoZXgpCQlGVUpJVFNVIExJTUlURUQKLTAwMEI1RCAgICAgKGJhc2UgMTYpCQlGVUpJVFNVIExJTUlURUQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiwgNDAzCi0JCQkJS29zdWdpLWNobyAxLWNob21lLE5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgCi0JCQkJSkFQQU4KLQotMDAtMEItNUUgICAoaGV4KQkJQXVkaW8gRW5naW5lZXJpbmcgU29jaWV0eSBJbmMuCi0wMDBCNUUgICAgIChiYXNlIDE2KQkJQXVkaW8gRW5naW5lZXJpbmcgU29jaWV0eSBJbmMuCi0JCQkJNjAgRWFzdCA0Mm5kIFN0cmVldCwgU3VpdGUgIzI1MjAKLQkJCQlOZXcgWW9yayBOWSAxMDE2NS0yNTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi01RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCNUYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi02MCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCNjAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi02MSAgIChoZXgpCQlGcmllZHJpY2ggTHV0emUgR21iSCAmQ28uCi0wMDBCNjEgICAgIChiYXNlIDE2KQkJRnJpZWRyaWNoIEx1dHplIEdtYkggJkNvLgotCQkJCUJydWNrd2llc2Vuc3RyYXNzZSAxNy0xOQotCQkJCVdlaW5zdGFkdC1Hcm9zc2hlcHBhY2ggQlcgNzEzODQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLTYyICAgKGhleCkJCUluZ2VuaWV1cmJ1ZXJvIGZ1ZXIgRWxla3Ryb25pa2Rlc2lnbiBJbmdvIE1vaG5lbgotMDAwQjYyICAgICAoYmFzZSAxNikJCUluZ2VuaWV1cmJ1ZXJvIGZ1ZXIgRWxla3Ryb25pa2Rlc2lnbiBJbmdvIE1vaG5lbgotCQkJCVN0aWNoIDMwIGQKLQkJCQk1MjI0OSBFc2Nod2VpbGVyIAotCQkJCUdFUk1BTlkKLQotMDAtMEItNjMgICAoaGV4KQkJS2FsZWlkZXNjYXBlCi0wMDBCNjMgICAgIChiYXNlIDE2KQkJS2FsZWlkZXNjYXBlCi0JCQkJT25lIEZpcnN0IFN0cmVldCwgU3VpdGUgU2l4dGVlbgotCQkJCUxvcyBBbHRvcyBDQSA5NDAyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNjQgICAoaGV4KQkJS2llYmFjayAmIFBldGVyIEdtYkggJiBDbyBLRwotMDAwQjY0ICAgICAoYmFzZSAxNikJCUtpZWJhY2sgJiBQZXRlciBHbWJIICYgQ28gS0cKLQkJCQlUZW1wZWxob2ZlciBXZWcgNTAKLQkJCQlCZXJsaW4gIDEyMzQ3Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi02NSAgIChoZXgpCQlTeS5BLkMuIHNybAotMDAwQjY1ICAgICAoYmFzZSAxNikJCVN5LkEuQy4gc3JsCi0JCQkJdmlhIENhYm90byAxOS8xCi0JCQkJVHJpZXN0ZSAgMzQxNDcKLQkJCQlJVEFMWQotCi0wMC0wQi02NiAgIChoZXgpCQlUZXJhbGluayBDb21tdW5pY2F0aW9ucwotMDAwQjY2ICAgICAoYmFzZSAxNikJCVRlcmFsaW5rIENvbW11bmljYXRpb25zCi0JCQkJQ2FwaXRhbCBUb3dlciAxNUYsCi0JCQkJOTMxIERvb25zYW4tZG9uZywgU2VvLWd1Ci0JCQkJRGFlamVvbiAgMzAyMTIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTY3ICAgKGhleCkJCVRvcHZpZXcgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwQjY3ICAgICAoYmFzZSAxNikJCVRvcHZpZXcgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCU5vLiA4LFd1LUNodWFuIFJvYWQsV3UgS3UgSW5kdXN0cmlhbCBQYXIKLQkJCQlXdSBLdSBIc2lhbmcsVGFpcGVpIEhzaWVuLCAgMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi02OCAgIChoZXgpCQlBZGR2YWx1ZSBDb21tdW5pY2F0aW9ucyBQdGUgTHRkCi0wMDBCNjggICAgIChiYXNlIDE2KQkJQWRkdmFsdWUgQ29tbXVuaWNhdGlvbnMgUHRlIEx0ZAotCQkJCTI4LFRBSSBTRU5HIFNUUkVFVCAjMDYtMDIKLQkJCQlTaW5nYXBvcmUgIDUzNDEwNgotCQkJCVNJTkdBUE9SRQotCi0wMC0wQi02OSAgIChoZXgpCQlGcmFua2UgRmlubGFuZCBPeQotMDAwQjY5ICAgICAoYmFzZSAxNikJCUZyYW5rZSBGaW5sYW5kIE95Ci0JCQkJVmFydGlva3VqYSAxCi0JCQkJTkFBUkFKQVJWSSBOQUFSQUpBUlZJIEZJTi03Njg1MAotCQkJCUZJTkxBTkQKLQotMDAtMEItNkEgICAoaGV4KQkJQXNpYXJvY2sgSW5jb3Jwb3JhdGlvbgotMDAwQjZBICAgICAoYmFzZSAxNikJCUFzaWFyb2NrIEluY29ycG9yYXRpb24KLQkJCQlQLk8uIEJveDk1NywgT2Zmc2hvcmUgSW5jb3Jwb3JhdGlvbnMgQ2VuCi0JCQkJUm9hZCBUb3duIFRvcnRvbGEgCi0JCQkJVklSR0lOIElTTEFORFMsIEJSSVRJU0gKLQotMDAtMEItNkIgICAoaGV4KQkJV2lzdHJvbiBOZXdlYiBDb3JwLgotMDAwQjZCICAgICAoYmFzZSAxNikJCVdpc3Ryb24gTmV3ZWIgQ29ycC4KLQkJCQlOby4gMTAtMSwgTGktSHNpbiBSb2FkIEksIFNjaWVuY2UtYmFzZWQKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTZDICAgKGhleCkJCVN5Y2hpcCBJbmMuCi0wMDBCNkMgICAgIChiYXNlIDE2KQkJU3ljaGlwIEluYy4KLQkJCQkyODA1IE4uIERhbGxhcyBQYXJrd2F5IFN1aXRlIDQwMAotCQkJCVBsYW5vIFRleGFzIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi02RCAgIChoZXgpCQlTT0xFQ1RST04gSkFQQU4gTkFLQU5JSURBCi0wMDBCNkQgICAgIChiYXNlIDE2KQkJU09MRUNUUk9OIEpBUEFOIE5BS0FOSUlEQQotCQkJCTMyNSBHQU5CQVJBCi0JCQkJTkFLQU5JSURBTUFDSEkKLQkJCQlLQU1JR1VOIE1JWUFHSUtFTiA5ODEtNDI2MwotCQkJCUpBUEFOCi0KLTAwLTBCLTZFICAgKGhleCkJCU5lZmYgSW5zdHJ1bWVudCBDb3JwLgotMDAwQjZFICAgICAoYmFzZSAxNikJCU5lZmYgSW5zdHJ1bWVudCBDb3JwLgotCQkJCTcwMCBTb3V0aCBNeXJ0bGUgQXZlLgotCQkJCU1vbnJvdmlhIENBIDkxMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi02RiAgIChoZXgpCQlNZWRpYSBTdHJlYW1pbmcgTmV0d29ya3MgSW5jCi0wMDBCNkYgICAgIChiYXNlIDE2KQkJTWVkaWEgU3RyZWFtaW5nIE5ldHdvcmtzIEluYwotCQkJCTE5MDUgQW5hbSBUb3dlciwgNzAyLTEwLCBZZW9rc2FtIGRvbmcsIEsKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi03MCAgIChoZXgpCQlMb2FkIFRlY2hub2xvZ3ksIEluYy4KLTAwMEI3MCAgICAgKGJhc2UgMTYpCQlMb2FkIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk0MjI1IFByb2R1Y3Rpb24gQ291cnQKLQkJCQlMYXMgVmVnYXMgTlYgODkxMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTcxICAgKGhleCkJCUxpdGNoZmllbGQgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwQjcxICAgICAoYmFzZSAxNikJCUxpdGNoZmllbGQgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTI3IFByaW5jZXRvbiBSb2FkCi0JCQkJV2F0ZXJ0b3duIENUIDA2Nzk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi03MiAgIChoZXgpCQlMYXdvIEFHCi0wMDBCNzIgICAgIChiYXNlIDE2KQkJTGF3byBBRwotCQkJCUFtIE9iZXJ3YWxkIDgKLQkJCQlSYXN0YXR0IEJhZGVuLVd1cnR0ZW1iZXJnIDc2NDM3Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi03MyAgIChoZXgpCQlLb2Rlb3MgQ29tbXVuaWNhdGlvbnMKLTAwMEI3MyAgICAgKGJhc2UgMTYpCQlLb2Rlb3MgQ29tbXVuaWNhdGlvbnMKLQkJCQkxMTEgQ29ycG9yYXRlIEJsdmQKLQkJCQlTdWl0ZSBBCi0JCQkJU291dGggUGxhaW5maWVsZCBOSiAwNzA4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNzQgICAoaGV4KQkJS2luZ3dhdmUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMEI3NCAgICAgKGJhc2UgMTYpCQlLaW5nd2F2ZSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTE4Ri0zLCBOby4gMTg2LCBKaWFuLVlpIFJkLgotCQkJCUNodW5nLUhvIFRhaXBlaSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTc1ICAgKGhleCkJCUlvc29mdCBMdGQuCi0wMDBCNzUgICAgIChiYXNlIDE2KQkJSW9zb2Z0IEx0ZC4KLQkJCQk1IFdvb2RsYXJrIFJvYWQKLQkJCQlDYW1icmlkZ2UgQ2FtYnMuIENCMyAwSFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQi03NiAgIChoZXgpCQlFVCZUIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTAwMEI3NiAgICAgKGJhc2UgMTYpCQlFVCZUIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLQkJCQk2RiBOby4xMDEsIFNvbmdKaWFuZyBSZC4KLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItNzcgICAoaGV4KQkJQ29nZW50IFN5c3RlbXMsIEluYy4KLTAwMEI3NyAgICAgKGJhc2UgMTYpCQlDb2dlbnQgU3lzdGVtcywgSW5jLgotCQkJCTIwOSBGYWlyIE9ha3MgQXZlLgotCQkJCVNvdXRoIFBhc2FkZW5hIENBIDkxMDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi03OCAgIChoZXgpCQlUQUlGQVRFQ0ggSU5DLgotMDAwQjc4ICAgICAoYmFzZSAxNikJCVRBSUZBVEVDSCBJTkMuCi0JCQkJOEYtMSBOby4yODksIFNlYy4yICBHdWFuZ2Z1IFJkLgotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItNzkgICAoaGV4KQkJWC1DT00sIEluYy4KLTAwMEI3OSAgICAgKGJhc2UgMTYpCQlYLUNPTSwgSW5jLgotCQkJCTg4MDkgU3VkbGV5IFJvYWQKLQkJCQlTdWl0ZSAyMDIKLQkJCQlNYW5hc3NhcyBWQSAyMDExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItN0EgICAoaGV4KQkJV2F2ZSBTY2llbmNlIEluYy4KLTAwMEI3QSAgICAgKGJhc2UgMTYpCQlXYXZlIFNjaWVuY2UgSW5jLgotCQkJCTc2MjAgT21uaXRlY2ggUGxhY2UKLQkJCQlWaWN0b3IgTmV3IFlvcmsgMTQ1NjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTdCICAgKGhleCkJCVRlc3QtVW0gSW5jLgotMDAwQjdCICAgICAoYmFzZSAxNikJCVRlc3QtVW0gSW5jLgotCQkJCTgwOCBDYWxsZSBQbGFubwotCQkJCUNhbWFyaWxsbyBDQSA5MzAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItN0MgICAoaGV4KQkJVGVsZXggQ29tbXVuaWNhdGlvbnMKLTAwMEI3QyAgICAgKGJhc2UgMTYpCQlUZWxleCBDb21tdW5pY2F0aW9ucwotCQkJCTg2MDEgRS4gQ29ybmh1c2tlciBId3kKLQkJCQlMaW5jb2xuIE5FIDY4NTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi03RCAgIChoZXgpCQlTT0xPTU9OIEVYVFJFTUUgSU5URVJOQVRJT05BTCBMVEQuCi0wMDBCN0QgICAgIChiYXNlIDE2KQkJU09MT01PTiBFWFRSRU1FIElOVEVSTkFUSU9OQUwgTFRELgotCQkJCTNGLCBOby4yMCwgTGFuZSAxNjUsIER1ZW5odWEgTi4gUmQuLCBTdW4KLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItN0UgICAoaGV4KQkJU0FHSU5PTUlZQSBTZWlzYWt1c2hvIEluYy4KLTAwMEI3RSAgICAgKGJhc2UgMTYpCQlTQUdJTk9NSVlBIFNlaXNha3VzaG8gSW5jLgotCQkJCTUzNSBTYXNhaQotCQkJCVNheWFtYXNoaSBTYWl0YW1ha2VuIDM1MC0xMzk1Ci0JCQkJSkFQQU4KLQotMDAtMEItN0YgICAoaGV4KQkJT21uaVdlcmtzCi0wMDBCN0YgICAgIChiYXNlIDE2KQkJT21uaVdlcmtzCi0JCQkJOTAwIEUgSGFtaWx0b24gQXZlbnVlCi0JCQkJU3VpdGUgMTAwCi0JCQkJQ2FtcGJlbGwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTgwICAgKGhleCkJCUx5Y2l1bSBOZXR3b3JrcwotMDAwQjgwICAgICAoYmFzZSAxNikJCUx5Y2l1bSBOZXR3b3JrcwotCQkJCTkgSGFtZW5vZmltIFN0LgotCQkJCVAuTy5Cb3ggMTIyNTYKLQkJCQlIZXJ6bGl5YSBJc3JhZWwgNDY3MzMKLQkJCQlJU1JBRUwKLQotMDAtMEItODEgICAoaGV4KQkJS2FwYXJlbCBDb3Jwb3JhdGlvbgotMDAwQjgxICAgICAoYmFzZSAxNikJCUthcGFyZWwgQ29ycG9yYXRpb24KLQkJCQk5NyBSYW5kYWxsIERyaXZlCi0JCQkJV2F0ZXJsb28gT250YXJpbyBOMlYtMUM1Ci0JCQkJQ0FOQURBCi0KLTAwLTBCLTgyICAgKGhleCkJCUdyYW5kc3RyZWFtIE5ldHdvcmtzLCBJbmMuCi0wMDBCODIgICAgIChiYXNlIDE2KQkJR3JhbmRzdHJlYW0gTmV0d29ya3MsIEluYy4KLQkJCQkxMjk3IEZsb29kbGlnaHQgU3RyZWV0Ci0JCQkJMm5kIEZsb29yCi0JCQkJQnJvb2tsaW5lIE1BIDAyNDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi04MyAgIChoZXgpCQlEQVRBV0FUVCBCLlYuCi0wMDBCODMgICAgIChiYXNlIDE2KQkJREFUQVdBVFQgQi5WLgotCQkJCUhPVVRTVFJBQVQgNQotCQkJCVAuTy4gQk9YIDEwOAotCQkJCVdPTFZFR0EgRlJJRVNMQU5EIE5MLTg0NzEtWlgKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wQi04NCAgIChoZXgpCQlCT0RFVAotMDAwQjg0ICAgICAoYmFzZSAxNikJCUJPREVUCi0JCQkJUm91dGUgZGUgbGEgVG91cmxhbmRyeQotCQkJCVRSRU1FTlRJTkVTIEZSQU5DRSA0OTM0MAotCQkJCUZSQU5DRQotCi0wMC0wQi04NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCODUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFcuIFRhc21hbiBEcml2ZQotCQkJCU1TIFNKQ00vMS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTg2ICAgKGhleCkJCUFydWJhIE5ldHdvcmtzCi0wMDBCODYgICAgIChiYXNlIDE2KQkJQXJ1YmEgTmV0d29ya3MKLQkJCQkxMzIyIENyb3NzbWFuIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItODcgICAoaGV4KQkJQW1lcmljYW4gUmVsaWFuY2UgSW5jLgotMDAwQjg3ICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIFJlbGlhbmNlIEluYy4KLQkJCQkxMTgwMSBHb2xkcmluZyBSZAotCQkJCUFyY2FkaWEgQ0EgOTEwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTg4ICAgKGhleCkJCVZpZGlzY28gbHRkLgotMDAwQjg4ICAgICAoYmFzZSAxNikJCVZpZGlzY28gbHRkLgotCQkJCTE3IFllY2hpZWwgRHJlc25lcgotCQkJCVBldGFjaC1UaWt2YSAgNDkyNzcKLQkJCQlJU1JBRUwKLQotMDAtMEItODkgICAoaGV4KQkJVG9wIEdsb2JhbCBUZWNobm9sb2d5LCBMdGQuCi0wMDBCODkgICAgIChiYXNlIDE2KQkJVG9wIEdsb2JhbCBUZWNobm9sb2d5LCBMdGQuCi0JCQkJUm9vbSAzMzEwLCBDaGluYSBXb3JsZCBUb3dlciBOby4gMQotCQkJCUppYW4gR3VvIE1lbiBXYWkgQXZlbnVlCi0JCQkJQmVpamluZyBCZWlqaW5nIDEwMDAwNAotCQkJCUNISU5BCi0KLTAwLTBCLThBICAgKGhleCkJCU1JVEVRIEluYy4KLTAwMEI4QSAgICAgKGJhc2UgMTYpCQlNSVRFUSBJbmMuCi0JCQkJMTAwIERhdmlkcyBEcml2ZQotCQkJCUhhdXBwYXVnZSBOWSAxMTc4OC0yMDM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi04QiAgIChoZXgpCQlLRVJBSkVULCBTLkEuCi0wMDBCOEIgICAgIChiYXNlIDE2KQkJS0VSQUpFVCwgUy5BLgotCQkJCUN0cmEuIFZpbGxhcnJlYWwtT25kYSwgS20gMi41Ci0JCQkJVmlsbGFycmVhbCBDYXN0ZWxsb24gRS0xMjU0MAotCQkJCVNQQUlOCi0KLTAwLTBCLThDICAgKGhleCkJCUZsZXh0cm9uaWNzCi0wMDBCOEMgICAgIChiYXNlIDE2KQkJRmxleHRyb25pY3MKLQkJCQlNaWdkYWwgSGFFbWVrCi0JCQkJUmFtYXQgR2F2cmllbAotCQkJCTIzMTA4IEhhdGFhc2lhIDEgCi0JCQkJSVNSQUVMCi0KLTAwLTBCLThEICAgKGhleCkJCUF2dmlvIE5ldHdvcmtzCi0wMDBCOEQgICAgIChiYXNlIDE2KQkJQXZ2aW8gTmV0d29ya3MKLQkJCQkxMSBEb25vdmFuIERyCi0JCQkJQmVkZm9yZCBNQSAwMTczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItOEUgICAoaGV4KQkJQXNjZW50IENvcnBvcmF0aW9uCi0wMDBCOEUgICAgIChiYXNlIDE2KQkJQXNjZW50IENvcnBvcmF0aW9uCi0JCQkJMi0xNi0xOSwgS2F3YXJheWEtbWFjaGksIENodW8tS3UsCi0JCQkJT3Nha2EtQ2l0eSBPc2FrYS1QcmVmIDU0Mi0wMDY2Ci0JCQkJSkFQQU4KLQotMDAtMEItOEYgICAoaGV4KQkJQUtJVEEgRUxFQ1RST05JQ1MgU1lTVEVNUyBDTy4sTFRELgotMDAwQjhGICAgICAoYmFzZSAxNikJCUFLSVRBIEVMRUNUUk9OSUNTIFNZU1RFTVMgQ08uLExURC4KLQkJCQk4NSxBWkEgVVNISVJPTk8sQUlLQVdBLFlVV0EtTUFDSEkKLQkJCQlLQVdBQkUtR1VOIEFLSVRBLUtFTiAwMTAtMTIzMQotCQkJCUpBUEFOCi0KLTAwLTBCLTkwICAgKGhleCkJCUFkdmEgT3B0aWNhbCBOZXR3b3JraW5nIEluYy4KLTAwMEI5MCAgICAgKGJhc2UgMTYpCQlBZHZhIE9wdGljYWwgTmV0d29ya2luZyBJbmMuCi0JCQkJQ2xpZnRvbiBUZWNobm9sb2d5IENlbnRyZQotCQkJCUNsaWZ0b24gTW9vcgotCQkJCVlvcmsgWU8zMCA0R1UKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQi05MSAgIChoZXgpCQlBZ2xhaWEgR2VzZWxsc2NoYWZ0IGZ1ciBCaWxkdmVyYXJiZWl0dW5nIHVuZCBLb21tdW5pa2F0aW9uIG0KLTAwMEI5MSAgICAgKGJhc2UgMTYpCQlBZ2xhaWEgR2VzZWxsc2NoYWZ0IGZ1ciBCaWxkdmVyYXJiZWl0dW5nIHVuZCBLb21tdW5pa2F0aW9uIG0KLQkJCQlUaW5pdXNzdHIuIDEyLTE1Ci0JCQkJQmVybGluICBELTEzMDg5Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi05MiAgIChoZXgpCQlBc2NvbSBEYW5tYXJrIEEvUwotMDAwQjkyICAgICAoYmFzZSAxNikJCUFzY29tIERhbm1hcmsgQS9TCi0JCQkJRmFicmlrc3BhcmtlbiA0MgotCQkJCUdsb3N0cnVwIERlbm1hcmsgMjYwMAotCQkJCURFTk1BUksKLQotMDAtMEItOTMgICAoaGV4KQkJUml0dGVyIEVsZWt0cm9uaWsKLTAwMEI5MyAgICAgKGJhc2UgMTYpCQlSaXR0ZXIgRWxla3Ryb25pawotCQkJCUxldmVya3VzZXIgU3RyIDY1Ci0JCQkJUC5PLiBCb3ggMTEwMjQwCi0JCQkJUmVtc2NoZWlkIE5SVyA0Mjg5NwotCQkJCUdFUk1BTlkKLQotMDAtMEItOTQgICAoaGV4KQkJRGlnaXRhbCBNb25pdG9yaW5nIFByb2R1Y3RzLCBJbmMuCi0wMDBCOTQgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBNb25pdG9yaW5nIFByb2R1Y3RzLCBJbmMuCi0JCQkJMjUwMCBOLiBQYXJ0bmVyc2hpcCBCb3VsZXZhcmQKLQkJCQlTcHJpbmdmaWVsZCBNaXNzb3VyaSA2NTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItOTUgICAoaGV4KQkJZUJldCBHYW1pbmcgU3lzdGVtcyBQdHkgTHRkCi0wMDBCOTUgICAgIChiYXNlIDE2KQkJZUJldCBHYW1pbmcgU3lzdGVtcyBQdHkgTHRkCi0JCQkJU3VpdGUgRCwgMjU1IFJhd3NvbiBTdHJlZXQKLQkJCQlBdWJ1cm4gTlNXIDIxNDQKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEItOTYgICAoaGV4KQkJSW5ub3RyYWMgRGlhZ25vc3RpY3MgT3kKLTAwMEI5NiAgICAgKGJhc2UgMTYpCQlJbm5vdHJhYyBEaWFnbm9zdGljcyBPeQotCQkJCUthbGV2YW50aWUgMjUKLQkJCQlUdXJrdSBBYm8gMjA1MjAKLQkJCQlGSU5MQU5ECi0KLTAwLTBCLTk3ICAgKGhleCkJCU1hdHN1c2hpdGEgRWxlY3RyaWMgSW5kdXN0cmlhbCBDby4sTHRkLgotMDAwQjk3ICAgICAoYmFzZSAxNikJCU1hdHN1c2hpdGEgRWxlY3RyaWMgSW5kdXN0cmlhbCBDby4sTHRkLgotCQkJCTMtMS0xIFlhZ3Vtby1OYWthLU1hY2hpCi0JCQkJTW9yaWd1Y2hpIENpdHkgT3Nha2EgNTcwLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0wQi05OCAgIChoZXgpCQlOaWNlVGVjaFZpc2lvbgotMDAwQjk4ICAgICAoYmFzZSAxNikJCU5pY2VUZWNoVmlzaW9uCi0JCQkJSW50ZWxab25lIDcwMwotCQkJCVlvbmdJbiAgR3VnYWwtcmkgIEtpIEhldW5nIEt5b3VuZ0tpRG8gMzU0LTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItOTkgICAoaGV4KQkJU2Vuc0FibGUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBCOTkgICAgIChiYXNlIDE2KQkJU2Vuc0FibGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTUgQ29uc3RpdHV0aW9uIFdheQotCQkJCVdvYnVybiBNQSAwMTgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItOUEgICAoaGV4KQkJU2hhbmdoYWkgVWxpbmsgVGVsZWNvbSBFcXVpcG1lbnQgQ28uIEx0ZC4KLTAwMEI5QSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBVbGluayBUZWxlY29tIEVxdWlwbWVudCBDby4gTHRkLgotCQkJCTYgRmxvb3IsIEJ1aWxkaW5nIDMKLQkJCQkyMzAgV2VzdCBKaWFuZ3dhbiBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDA4MwotCQkJCUNISU5BCi0KLTAwLTBCLTlCICAgKGhleCkJCVNpcml1cyBTeXN0ZW0gQ28sIEx0ZC4KLTAwMEI5QiAgICAgKGJhc2UgMTYpCQlTaXJpdXMgU3lzdGVtIENvLCBMdGQuCi0JCQkJMy0yNyBGdW5hZG8tY2hvCi0JCQkJQXNoaXlhIEh5b2dvIDY1OS0wMDkzCi0JCQkJSkFQQU4KLQotMDAtMEItOUMgICAoaGV4KQkJVHJpQmVhbSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEI5QyAgICAgKGJhc2UgMTYpCQlUcmlCZWFtIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTExNiBXLiBFYXN0bWFuIFN0Liwgc3VpdGUgMjA4Ci0JCQkJQXJsaW5ndG9uIEhlaWdodHMgSUwgNjAwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTlEICAgKGhleCkJCVR3aW5NT1MgVGVjaG5vbG9naWVzIEluYy4KLTAwMEI5RCAgICAgKGJhc2UgMTYpCQlUd2luTU9TIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMzAzIE5vLjMsIFR6dSBDaGlhbmcgUmQuLCBIdSBLb3UgWGlhbmcsCi0JCQkJSHNpbiBDaHUgIDMwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItOUUgICAoaGV4KQkJWWFzaW5nIFRlY2hub2xvZ3kgQ29ycC4KLTAwMEI5RSAgICAgKGJhc2UgMTYpCQlZYXNpbmcgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLiA1MCwgVGEgSHN1ZWggUm9hZCwgSHNpbkNodSwgVGFpd2FuCi0JCQkJSHNpbkNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi05RiAgIChoZXgpCQlOZXVlIEVMU0EgR21iSAotMDAwQjlGICAgICAoYmFzZSAxNikJCU5ldWUgRUxTQSBHbWJICi0JCQkJU29ubmVud2VnIDExCi0JCQkJQWFjaGVuICA1MjA3MAotCQkJCUdFUk1BTlkKLQotMDAtMEItQTAgICAoaGV4KQkJVCZMIEluZm9ybWF0aW9uIEluYy4KLTAwMEJBMCAgICAgKGJhc2UgMTYpCQlUJkwgSW5mb3JtYXRpb24gSW5jLgotCQkJCTg5OC00NCBIb2t5ZS1Eb25nLCBEb25nYW4tR3UKLQkJCQlBbnlhbmcgS3l1bmdraS1EbyA0MzEtODM2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLUExICAgKGhleCkJCVNZU0NPTSBMdGQuCi0wMDBCQTEgICAgIChiYXNlIDE2KQkJU1lTQ09NIEx0ZC4KLQkJCQk0LTEwIEhBS09EQSwgS1VNQUdBWUEtU0hJCi0JCQkJU0FJVEFNQS1LRU4gMzYwLTg1MTUKLQkJCQlKQVBBTgotCi0wMC0wQi1BMiAgIChoZXgpCQlTdW1pdG9tbyBFbGVjdHJpYyBOZXR3b3JrcywgSW5jCi0wMDBCQTIgICAgIChiYXNlIDE2KQkJU3VtaXRvbW8gRWxlY3RyaWMgTmV0d29ya3MsIEluYwotCQkJCTEtMS0zLCBTaGltYXlhLCBLb25vaGFuYS1rdQotCQkJCU9zYWthICA1NTQtMDAyNAotCQkJCUpBUEFOCi0KLTAwLTBCLUEzICAgKGhleCkJCVNpZW1lbnMgQUcsIEkmUwotMDAwQkEzICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQUcsIEkmUwotCQkJCVdlcm5lci12b24tU2llbWVucy1TdHJhc3NlIDY1Ci0JCQkJRXJsYW5nZW4gQmF2YXJpYSA5MTA1MgotCQkJCUdFUk1BTlkKLQotMDAtMEItQTQgICAoaGV4KQkJU2hpcm9uIFNhdGVsbGl0ZSBDb21tdW5pY2F0aW9ucyBMdGQuICgxOTk2KQotMDAwQkE0ICAgICAoYmFzZSAxNikJCVNoaXJvbiBTYXRlbGxpdGUgQ29tbXVuaWNhdGlvbnMgTHRkLiAoMTk5NikKLQkJCQkyMyBIYXNpdmltIFN0LgotCQkJCVBldGFjaCBUaWt2YSAgNDkxNzAKLQkJCQlJU1JBRUwKLQotMDAtMEItQTUgICAoaGV4KQkJUXVhc2FyIENpcHRhIE1hbmRpcmksIFBUCi0wMDBCQTUgICAgIChiYXNlIDE2KQkJUXVhc2FyIENpcHRhIE1hbmRpcmksIFBUCi0JCQkJSmwuIFBhbGFzYXJpIDlBCi0JCQkJQmFuZHVuZyBXZXN0IEphdmEgNDAyNjIKLQkJCQlJTkRPTkVTSUEKLQotMDAtMEItQTYgICAoaGV4KQkJTWl5YWthd2EgRWxlY3RyaWMgV29ya3MgTHRkLgotMDAwQkE2ICAgICAoYmFzZSAxNikJCU1peWFrYXdhIEVsZWN0cmljIFdvcmtzIEx0ZC4KLQkJCQkyLTEtNiwKLQkJCQlLb2hob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTAwMDEKLQkJCQlKQVBBTgotCi0wMC0wQi1BNyAgIChoZXgpCQlNYXJhbnRpIE5ldHdvcmtzCi0wMDBCQTcgICAgIChiYXNlIDE2KQkJTWFyYW50aSBOZXR3b3JrcwotCQkJCTMwNjEtQiBaYW5rZXIgUm9hZAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1BOCAgIChoZXgpCQlIQU5CQUNLIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDAwQkE4ICAgICAoYmFzZSAxNikJCUhBTkJBQ0sgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJMzA2LTcsIEdhbG1hLWRvbmcsIFNlby1ndQotCQkJCURhZWplb24gIDMwMi0xNzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItQTkgICAoaGV4KQkJQ2xvdWRTaGllbGQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBCQTkgICAgIChiYXNlIDE2KQkJQ2xvdWRTaGllbGQgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjEyIEdpbGJyYWx0YXIgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUFBICAgKGhleCkJCUFpcGhvbmUgY28uLEx0ZAotMDAwQkFBICAgICAoYmFzZSAxNikJCUFpcGhvbmUgY28uLEx0ZAotCQkJCTItMTggSmlubm8tQ2hvCi0JCQkJQXRzdXRhLWt1Ci0JCQkJTmFnb3lhIEFpY2hpLWtlbiA0NTYtODY2NgotCQkJCUpBUEFOCi0KLTAwLTBCLUFCICAgKGhleCkJCUFkdmFudGVjaCBUZWNobm9sb2d5IChDSElOQSkgQ28uLCBMdGQuCi0wMDBCQUIgICAgIChiYXNlIDE2KQkJQWR2YW50ZWNoIFRlY2hub2xvZ3kgKENISU5BKSBDby4sIEx0ZC4KLQkJCQlOby42NjYsIEhhbi1QdSBSZC4gWXUtU2hhbgotCQkJCUt1bi1TaGFuIEppYW5nIFN1IDIxNTMxNgotCQkJCUNISU5BCi0KLTAwLTBCLUFDICAgKGhleCkJCTNDb20gTHRkCi0wMDBCQUMgICAgIChiYXNlIDE2KQkJM0NvbSBMdGQKLQkJCQlQZW9wbGVidWlsZGluZyAyLCBQZW9wbGVidWlsZGluZyBFc3RhdGUKLQkJCQlNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMuIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQi1BRCAgIChoZXgpCQlQQy1Qb1MgSW5jLgotMDAwQkFEICAgICAoYmFzZSAxNikJCVBDLVBvUyBJbmMuCi0JCQkJMzA5IENvbW1pc3Npb25lcnMgUm9hZCBXZXN0Ci0JCQkJTG9uZG9uIE9udGFyaW8gTjZKIDFZNAotCQkJCUNBTkFEQQotCi0wMC0wQi1BRSAgIChoZXgpCQlWaXRhbHMgU3lzdGVtIEluYy4KLTAwMEJBRSAgICAgKGJhc2UgMTYpCQlWaXRhbHMgU3lzdGVtIEluYy4KLQkJCQlKb29oZXVuZyBCL0QgNEZMLiAxMDA1LTEsIFlvdW5ndG9uZy1Eb25nCi0JCQkJU3V3b24gQ2l0eSBLeW9uZ2dpLURvIDQ0Mi04MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItQUYgICAoaGV4KQkJV09PSlUgQ09NTVVOSUNBVElPTlMgQ28sLkx0ZAotMDAwQkFGICAgICAoYmFzZSAxNikJCVdPT0pVIENPTU1VTklDQVRJT05TIENvLC5MdGQKLQkJCQlCLTcxMywgU0sgVHdpbiBUZWNoIFRvd2VyLCAzNDUtOSwgR2EtU2FuCi0JCQkJU2VvdWwgIDE1My04MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItQjAgICAoaGV4KQkJU3lzbmV0IFRlbGVtYXRpY2Egc3JsCi0wMDBCQjAgICAgIChiYXNlIDE2KQkJU3lzbmV0IFRlbGVtYXRpY2Egc3JsCi0JCQkJVmlhbGUgQmVyYmVyYSwgNDkKLQkJCQlNaWxhbiAgMjAxNjIKLQkJCQlJVEFMWQotCi0wMC0wQi1CMSAgIChoZXgpCQlTdXBlciBTdGFyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBCQjEgICAgIChiYXNlIDE2KQkJU3VwZXIgU3RhciBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiA3IExhbmUgMzA2LFNlYy4gMixUYWktTGluIFJkLgotCQkJCVRhaS1TaGFuIFNoaWFuZwotCQkJCVRhaXBlaSBIc2llbiAgMjQzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1CMiAgIChoZXgpCQlTTUFMTEJJRyBURUNITk9MT0dZCi0wMDBCQjIgICAgIChiYXNlIDE2KQkJU01BTExCSUcgVEVDSE5PTE9HWQotCQkJCTNGIERvbmdzdW5nIEJsZGcuIDcyMC05IFlva3NhbWRvbmcKLQkJCQlHYW5nbmFtZ3UgU2VvdWwgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1CMyAgIChoZXgpCQlSaVQgdGVjaG5vbG9naWVzIEx0ZC4KLTAwMEJCMyAgICAgKGJhc2UgMTYpCQlSaVQgdGVjaG5vbG9naWVzIEx0ZC4KLQkJCQkyNCBSYW91bCBXYWxlbmJlcmcgIFN0LgotCQkJCVRlbCBBdml2ICA2OTcxOQotCQkJCUlTUkFFTAotCi0wMC0wQi1CNCAgIChoZXgpCQlSREMgU2VtaWNvbmR1Y3RvciBJbmMuLAotMDAwQkI0ICAgICAoYmFzZSAxNikJCVJEQyBTZW1pY29uZHVjdG9yIEluYy4sCi0JCQkJNkYtMSAsIE5vLjItMSwgTGloc2luIFJkLCBTY2llbmNlLUJhc2VkCi0JCQkJSHNpbiBDaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItQjUgICAoaGV4KQkJblN0b3IgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBCQjUgICAgIChiYXNlIDE2KQkJblN0b3IgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTAwIFRlY2hub2xvZ3kgUGFyawotCQkJCVN1aXRlIDE3NQotCQkJCUxha2UgTWFyeSBGTCAzMjc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItQjYgICAoaGV4KQkJTW90b3RlY2ggSW5jLgotMDAwQkI2ICAgICAoYmFzZSAxNikJCU1vdG90ZWNoIEluYy4KLQkJCQk5LCBQYXJrIEF2ZW51ZSBJSSwgU2NpZW5jZS1CYXNlZCBJbmR1c3RyCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1CNyAgIChoZXgpCQlNaWNybyBTeXN0ZW1zIENvLixMdGQuCi0wMDBCQjcgICAgIChiYXNlIDE2KQkJTWljcm8gU3lzdGVtcyBDby4sTHRkLgotCQkJCTItMTUtMzQgTmlzaGlrdWJvCi0JCQkJTXVzYXNoaW5vLUNpdHkgVG9reW8gMTgwLTAwMTMKLQkJCQlKQVBBTgotCi0wMC0wQi1COCAgIChoZXgpCQlLaWhva3UgRWxlY3Ryb25pYyBDby4KLTAwMEJCOCAgICAgKGJhc2UgMTYpCQlLaWhva3UgRWxlY3Ryb25pYyBDby4KLQkJCQlNYXJ1a2F0dWJpcnUgM0YgNC05LTYKLQkJCQlOaWhvbmJhc2hpIE5hbml3YS1rdQotCQkJCU9zYWthc2hpIE9zYWthLWh1IDU1Ni0wMDA1Ci0JCQkJSkFQQU4KLQotMDAtMEItQjkgICAoaGV4KQkJSW1zeXMgQUIKLTAwMEJCOSAgICAgKGJhc2UgMTYpCQlJbXN5cyBBQgotCQkJCUpvaGFubmVzbHVuZHN2YWdlbiAzCi0JCQkJVXBwbGFuZHMgVmFzYnkgIFNFLTE5NDYxCi0JCQkJU1dFREVOCi0KLTAwLTBCLUJBICAgKGhleCkJCUhhcm1vbmljIEJyb2FkYmFuZCBBY2Nlc3MgTmV0d29ya3MKLTAwMEJCQSAgICAgKGJhc2UgMTYpCQlIYXJtb25pYyBCcm9hZGJhbmQgQWNjZXNzIE5ldHdvcmtzCi0JCQkJNTQ5IEJhbHRpYyBXYXkKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUJCICAgKGhleCkJCUV0aW4gU3lzdGVtcyBDby4sIEx0ZAotMDAwQkJCICAgICAoYmFzZSAxNikJCUV0aW4gU3lzdGVtcyBDby4sIEx0ZAotCQkJCTEyRiwgSVQgVmVudHVyZSBUb3dlciwKLQkJCQk3OCBHYXJha0Jvbi1Eb25nLCBTb25ncGEtS3UKLQkJCQlTZW91bCAgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1CQyAgIChoZXgpCQlFbiBHYXJkZSBTeXN0ZW1zLCBJbmMuCi0wMDBCQkMgICAgIChiYXNlIDE2KQkJRW4gR2FyZGUgU3lzdGVtcywgSW5jLgotCQkJCTIxMDEgV2hpdGUgQ2xvdWQgU3QuIE5FCi0JCQkJQWxidXF1ZXJxdWUgTk0gODcxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUJEICAgKGhleCkJCUNvbm5leGlvbnogTGltaXRlZAotMDAwQkJEICAgICAoYmFzZSAxNikJCUNvbm5leGlvbnogTGltaXRlZAotCQkJCTEgU2hvdyBQbGFjZQotCQkJCUNocmlzdGNodXJjaCBDYW50ZXJidXJ5IDgwMDQKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wQi1CRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCQkUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1CRiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCQkYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1DMCAgIChoZXgpCQlDaGluYSBJV05Db21tIENvLiwgTHRkLgotMDAwQkMwICAgICAoYmFzZSAxNikJCUNoaW5hIElXTkNvbW0gQ28uLCBMdGQuCi0JCQkJNEYuQyBYaWV0b25nIEJ1aWxkaW5nLE5vLjEyIEdhb3hpbiAybmQgcgotCQkJCUhpLXRlY2ggaW5kdXN0cmllcyBkZXZlbG9wbWVudCB6b25lCi0JCQkJWGknYW4gc2hhYW54aSA3MTAwNzUKLQkJCQlDSElOQQotCi0wMC0wQi1DMSAgIChoZXgpCQlCYXkgTWljcm9zeXN0ZW1zLCBJbmMuCi0wMDBCQzEgICAgIChiYXNlIDE2KQkJQmF5IE1pY3Jvc3lzdGVtcywgSW5jLgotCQkJCTI3MDAgQXVndXN0aW5lIERyaXZlCi0JCQkJU3VpdGUgMjk4Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUMyICAgKGhleCkJCUNvcmluZXggQ29tbXVuaWNhdGlvbiBDb3JwLgotMDAwQkMyICAgICAoYmFzZSAxNikJCUNvcmluZXggQ29tbXVuaWNhdGlvbiBDb3JwLgotCQkJCSMzMDggMTE2OCBIYW1pbHRvbiBTdHJlZXQKLQkJCQlWYW5jb3V2ZXIgQi5DLiBWNkIgMlMyCi0JCQkJQ0FOQURBCi0KLTAwLTBCLUMzICAgKGhleCkJCU11bHRpcGxleCwgSW5jLgotMDAwQkMzICAgICAoYmFzZSAxNikJCU11bHRpcGxleCwgSW5jLgotCQkJCTUwMDAgSGFkbGV5IFJkLgotCQkJCVMuIFBsYWluZmllbGQgTkogMDcwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUM0ICAgKGhleCkJCUJJT1RST05JSyBHbWJIICYgQ28KLTAwMEJDNCAgICAgKGJhc2UgMTYpCQlCSU9UUk9OSUsgR21iSCAmIENvCi0JCQkJV29lcm1hbm5rZWhyZSAxCi0JCQkJQmVybGluICAxMjM1OQotCQkJCUdFUk1BTlkKLQotMDAtMEItQzUgICAoaGV4KQkJU01DIE5ldHdvcmtzLCBJbmMuCi0wMDBCQzUgICAgIChiYXNlIDE2KQkJU01DIE5ldHdvcmtzLCBJbmMuCi0JCQkJMzggVGVzbGEKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUM2ICAgKGhleCkJCUlTQUMsIEluYy4KLTAwMEJDNiAgICAgKGJhc2UgMTYpCQlJU0FDLCBJbmMuCi0JCQkJUE8gQm94IDc2ODIKLQkJCQlBdWJ1cm4gQ0EgOTU2MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUM3ICAgKGhleCkJCUlDRVQgUy5wLkEuCi0wMDBCQzcgICAgIChiYXNlIDE2KQkJSUNFVCBTLnAuQS4KLQkJCQlWaWEgUXVhcnRvIE5lZ3JvbmksIDYzCi0JCQkJQ2VjY2hpbmEgZGkgQXJpY2NpYSBSb21hIDAwMDQwCi0JCQkJSVRBTFkKLQotMDAtMEItQzggICAoaGV4KQkJQWlyRmxvdyBOZXR3b3JrcwotMDAwQkM4ICAgICAoYmFzZSAxNikJCUFpckZsb3cgTmV0d29ya3MKLQkJCQk0NDQgQ2FzdHJvIFN0Ci0JCQkJU3VpdGUgMzIwCi0JCQkJTW91bnRhaW4gVmlldyBDYSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItQzkgICAoaGV4KQkJRWxlY3Ryb2xpbmUgRXF1aXBtZW50Ci0wMDBCQzkgICAgIChiYXNlIDE2KQkJRWxlY3Ryb2xpbmUgRXF1aXBtZW50Ci0JCQkJODI2NSBib3VsLiBTdC1NaWNoZWwKLQkJCQlNb250cmVhbCBRdWViZWMgSDFaIDNFNAotCQkJCUNBTkFEQQotCi0wMC0wQi1DQSAgIChoZXgpCQlEQVRBVkFOIEludGVybmF0aW9uYWwgQ29ycG9yYXRpb24KLTAwMEJDQSAgICAgKGJhc2UgMTYpCQlEQVRBVkFOIEludGVybmF0aW9uYWwgQ29ycG9yYXRpb24KLQkJCQk0RkwsIzEyMC0xMixDaHVuZyBTaGFuIFJkLCBTZWMuMwotCQkJCUNodW5nIEhvIENpdHksIFRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1DQiAgIChoZXgpCQlGYWdvciBBdXRvbWF0aW9uICwgUy4gQ29vcAotMDAwQkNCICAgICAoYmFzZSAxNikJCUZhZ29yIEF1dG9tYXRpb24gLCBTLiBDb29wCi0JCQkJU2FuIEFuZHJlcyBzL24KLQkJCQkyMDUwMCBNb25kcmFnb24KLQkJCQlHdWlwdXpjb2EgMjA1MDAKLQkJCQlTUEFJTgotCi0wMC0wQi1DQyAgIChoZXgpCQlKVVNBTiwgUy5BLgotMDAwQkNDICAgICAoYmFzZSAxNikJCUpVU0FOLCBTLkEuCi0JCQkJVml2ZXJvLCA1Ci0JCQkJTUFEUklEICAyODA0MAotCQkJCVNQQUlOCi0KLTAwLTBCLUNEICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAwQkNEICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5IFNvdXRoCi0JCQkJTVMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1DRSAgIChoZXgpCQlGcmVlMm1vdmUgQUIKLTAwMEJDRSAgICAgKGJhc2UgMTYpCQlGcmVlMm1vdmUgQUIKLQkJCQlTcGVybGluZ3NnYXRhbiA3Ci0JCQkJSGFsbXN0YWQgSGFsbGFuZCAzMDI0OAotCQkJCVNXRURFTgotCi0wMC0wQi1DRiAgIChoZXgpCQlBR0ZBIE5EVCBJTkMuCi0wMDBCQ0YgICAgIChiYXNlIDE2KQkJQUdGQSBORFQgSU5DLgotCQkJCTUwIEluZHVzdHJpYWwgUGFyayBSb2FkCi0JCQkJTGV3aXN0b3duIFBBIDE3MDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1EMCAgIChoZXgpCQlYaU1ldGEgVGVjaG5vbG9neSBBbWVyaWNhcyBJbmMuCi0wMDBCRDAgICAgIChiYXNlIDE2KQkJWGlNZXRhIFRlY2hub2xvZ3kgQW1lcmljYXMgSW5jLgotCQkJCTU0IFJheSBTdHJlZXQKLQkJCQlOZXcgQnJ1bnN3aWNrIE5KIDA4OTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1EMSAgIChoZXgpCQlBZXJvbml4LCBJbmMuCi0wMDBCRDEgICAgIChiYXNlIDE2KQkJQWVyb25peCwgSW5jLgotCQkJCTE3NzUgVy4gSGliaXNjdXMgQmx2ZCwKLQkJCQlTdWl0ZSAjMzA0Ci0JCQkJTWVsYm91cm5lIEZMIDMyOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1EMiAgIChoZXgpCQlSZW1vcHJvIFRlY2hub2xvZ3kgSW5jLgotMDAwQkQyICAgICAoYmFzZSAxNikJCVJlbW9wcm8gVGVjaG5vbG9neSBJbmMuCi0JCQkJTm8uIDQ0MywgSHVhbm5hbiBSRC4sCi0JCQkJUGluZ2plbiBDaXR5IFRhb3l1YW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1EMyAgIChoZXgpCQljZDNvCi0wMDBCRDMgICAgIChiYXNlIDE2KQkJY2QzbwotCQkJCTQwMiBXIEJyb2Fkd2F5Ci0JCQkJU2FuIERlaWdvIENBIDkyMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1ENCAgIChoZXgpCQlCZWlqaW5nIFdpc2UgVGVjaG5vbG9neSAmIFNjaWVuY2UgRGV2ZWxvcG1lbnQgQ28uTHRkCi0wMDBCRDQgICAgIChiYXNlIDE2KQkJQmVpamluZyBXaXNlIFRlY2hub2xvZ3kgJiBTY2llbmNlIERldmVsb3BtZW50IENvLkx0ZAotCQkJCTNyZCBGbG9vciBDYWlob25nIEJ1aWxkaW5nLCBOby4yLDFzdCBXZXMKLQkJCQlNYWRpYW4sIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODgKLQkJCQlDSElOQQotCi0wMC0wQi1ENSAgIChoZXgpCQlOdmVyZ2VuY2UsIEluYy4KLTAwMEJENSAgICAgKGJhc2UgMTYpCQlOdmVyZ2VuY2UsIEluYy4KLQkJCQlKZWlsIEJsZGcuIDR0aCwgU2Ftc3VuZy1kb25nIDE2OC0yNiwgS2FuCi0JCQkJU2VvdWwgIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItRDYgICAoaGV4KQkJUGF4dG9uIEFjY2VzcyBMdGQKLTAwMEJENiAgICAgKGJhc2UgMTYpCQlQYXh0b24gQWNjZXNzIEx0ZAotCQkJCVBheHRvbiBIb3VzZQotCQkJCUhvbWUgRmFybSBSb2FkCi0JCQkJQnJpZ2h0b24gRWFzdCBTdXNzZXggQk4xIDlIVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBCLUQ3ICAgKGhleCkJCURPUk1BIFRpbWUgKyBBY2Nlc3MgR21iSAotMDAwQkQ3ICAgICAoYmFzZSAxNikJCURPUk1BIFRpbWUgKyBBY2Nlc3MgR21iSAotCQkJCU1haW56ZXIgU3RyYXNzZSAzNi01MgotCQkJCUJvbm4gTm9yZHJoZWlud2VzdGZhbGVuIDUzMTc5Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi1EOCAgIChoZXgpCQlJbmR1c3RyaWFsIFNjaWVudGlmaWMgQ29ycC4KLTAwMEJEOCAgICAgKGJhc2UgMTYpCQlJbmR1c3RyaWFsIFNjaWVudGlmaWMgQ29ycC4KLQkJCQkxMDAxIE9ha2RhbGUgUm9hZAotCQkJCU9ha2RhbGUgUEEgMTUwNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUQ5ICAgKGhleCkJCUdlbmVyYWwgSHlkcm9nZW4KLTAwMEJEOSAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIEh5ZHJvZ2VuCi0JCQkJMTMxMjAgVmFuaWVyIFBsYWNlCi0JCQkJUmljaG1vbmQgQnJpdGlzaCBDb2x1bWJpYSBWNlYgMkoyCi0JCQkJQ0FOQURBCi0KLTAwLTBCLURBICAgKGhleCkJCUV5ZUNyb3NzIENvLixJbmMuCi0wMDBCREEgICAgIChiYXNlIDE2KQkJRXllQ3Jvc3MgQ28uLEluYy4KLQkJCQkzRiAgSWlva2EtQnVpbGRpbmcKLQkJCQlUb2t5byBVZW5vIFRhaXRvaC1rdSAzLTQtMSAxMTAtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTBCLURCICAgKGhleCkJCURlbGwgRVNHIFBDQkEgVGVzdAotMDAwQkRCICAgICAoYmFzZSAxNikJCURlbGwgRVNHIFBDQkEgVGVzdAotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLURDICAgKGhleCkJCUFLQ1AKLTAwMEJEQyAgICAgKGJhc2UgMTYpCQlBS0NQCi0JCQkJNjcvMjg1ICBNdWFuZ2FrZSBWaWxsYWdlICM4Ci0JCQkJTW9vIDMgVmlwYXdhZGVlIFJvYWQsIFRhbWJvbCBMdWdob29rCi0JCQkJQW1waHVyIE11YW5nIFBhdG9tdGhhbmVlIDEyMDAwCi0JCQkJVEhBSUxBTkQKLQotMDAtMEItREQgICAoaGV4KQkJVE9IT0tVIFJJQ09IIENvLiwgTFRELgotMDAwQkREICAgICAoYmFzZSAxNikJCVRPSE9LVSBSSUNPSCBDby4sIExURC4KLQkJCQkzLTEgU2hpbm1laWRvCi0JCQkJU2hpYmF0YSBNaXlhZ2kgcHJlZi4gOTg5LTE2OTUKLQkJCQlKQVBBTgotCi0wMC0wQi1ERSAgIChoZXgpCQlURUxESVggR21iSAotMDAwQkRFICAgICAoYmFzZSAxNikJCVRFTERJWCBHbWJICi0JCQkJR3Jlbnpob2VmZXIgV2VnIDM2Ci0JCQkJSGVpZGVsYmVyZyAgNjkxMjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLURGICAgKGhleCkJCVNoZW56aGVuIFJvdXRlckQgTmV0d29ya3MgTGltaXRlZAotMDAwQkRGICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFJvdXRlckQgTmV0d29ya3MgTGltaXRlZAotCQkJCTgvRiwgQnVpbGRpbmcgQSwgVHNpbmdodWEgSGktVGVjaCBQYXJrCi0JCQkJTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuICAKLQkJCQlDSElOQQotCi0wMC0wQi1FMCAgIChoZXgpCQlTZXJjb05ldCBMdGQuCi0wMDBCRTAgICAgIChiYXNlIDE2KQkJU2VyY29OZXQgTHRkLgotCQkJCTE2IEhhJ2hhcm9zaGV0IHN0LgotCQkJCVAuTy5CLiAyMDA5Ci0JCQkJUmEnYW5hbmEgIDQzNjU3Ci0JCQkJSVNSQUVMCi0KLTAwLTBCLUUxICAgKGhleCkJCU5va2lhIE5FVCBQcm9kdWN0IE9wZXJhdGlvbnMKLTAwMEJFMSAgICAgKGJhc2UgMTYpCQlOb2tpYSBORVQgUHJvZHVjdCBPcGVyYXRpb25zCi0JCQkJMzEzIEZhaXJjaGlsZCBEcml2ZQotCQkJCU1vdW50YWluIFZpZXcgQ2FsaWZvcm5pYSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItRTIgICAoaGV4KQkJTHVtZW5lcmEgQ29ycG9yYXRpb24KLTAwMEJFMiAgICAgKGJhc2UgMTYpCQlMdW1lbmVyYSBDb3Jwb3JhdGlvbgotCQkJCTI1MjBCIFN0LiBMYXVyZW50IEJsdmQuCi0JCQkJT3R0YXdhIE9udGFyaW8gSzFCIDRSOAotCQkJCUNBTkFEQQotCi0wMC0wQi1FMyAgIChoZXgpCQlLZXkgU3RyZWFtIENvLiwgTHRkLgotMDAwQkUzICAgICAoYmFzZSAxNikJCUtleSBTdHJlYW0gQ28uLCBMdGQuCi0JCQkJTm8uIDIgTmFnYW9rYSBCbGRnLiA0RiwgIDItOC01IEhhdGNob2JvcgotCQkJCUNodW8ta3UgVG9reW8gMTA0LTAwMzIKLQkJCQlKQVBBTgotCi0wMC0wQi1FNCAgIChoZXgpCQlIb3NpZGVuIENvcnBvcmF0aW9uCi0wMDBCRTQgICAgIChiYXNlIDE2KQkJSG9zaWRlbiBDb3Jwb3JhdGlvbgotCQkJCTQtMzMKLQkJCQlLaXRha3l1aG9qaSAxLWNob21lCi0JCQkJWWFvLWNpdHkgT3Nha2EgNTgxLTAwNzEKLQkJCQlKQVBBTgotCi0wMC0wQi1FNSAgIChoZXgpCQlISU1TIEtvcmVhIENvLiwgTHRkLgotMDAwQkU1ICAgICAoYmFzZSAxNikJCUhJTVMgS29yZWEgQ28uLCBMdGQuCi0JCQkJNTEwNSwgSGlnaCBUZWNoIFZlbnR1cmUgSGFsbCwKLQkJCQk1My0zLCBFb2V1bi1kb25nLCBZdXNlb25nLWt1LAotCQkJCURhZWplb24gRGFlamVvbiAzMDUtODA2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLUU2ICAgKGhleCkJCURhdGVsIEVsZWN0cm9uaWNzCi0wMDBCRTYgICAgIChiYXNlIDE2KQkJRGF0ZWwgRWxlY3Ryb25pY3MKLQkJCQlTdGFmZm9yZCBSb2FkCi0JCQkJU3RvbmUgU3RhZmZvcmRzaGlyZSBTVDE1IDBERwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBCLUU3ICAgKGhleCkJCUNPTUZMVVggVEVDSE5PTE9HWSBJTkMuCi0wMDBCRTcgICAgIChiYXNlIDE2KQkJQ09NRkxVWCBURUNITk9MT0dZIElOQy4KLQkJCQkgUm9vbSAxMzEsQmxkZy4gNTMsMTk1LTU4LFNlYy40LAotCQkJCUNodW5nIEhzaW5nIFJkLixDaHV0dW5nLAotCQkJCUhzaW5jaHUgIDMxMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItRTggICAoaGV4KQkJQU9JUAotMDAwQkU4ICAgICAoYmFzZSAxNikJCUFPSVAKLQkJCQk2IHJ1ZSBNYXJ5c2UgQkFTVElFCi0JCQkJWkkgZGUgU3QgR3VlbmF1bHQKLQkJCQlDT1VSQ09VUk9OTkVTIElkZiA5MTA4MAotCQkJCUZSQU5DRQotCi0wMC0wQi1FOSAgIChoZXgpCQlBY3RlbCBDb3Jwb3JhdGlvbgotMDAwQkU5ICAgICAoYmFzZSAxNikJCUFjdGVsIENvcnBvcmF0aW9uCi0JCQkJMjAwIFZhbGxleSBSb2FkCi0JCQkJU3VpdGUgMzAwCi0JCQkJTXQuIEFybGluZ3RvbiBOSiAwNzg1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItRUEgICAoaGV4KQkJWnVsdHlzIFRlY2hub2xvZ2llcwotMDAwQkVBICAgICAoYmFzZSAxNikJCVp1bHR5cyBUZWNobm9sb2dpZXMKLQkJCQk3NzEgVmFxdWVyb3MgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1FQiAgIChoZXgpCQlTeXN0ZWdyYSBBRwotMDAwQkVCICAgICAoYmFzZSAxNikJCVN5c3RlZ3JhIEFHCi0JCQkJQnVyZ3VuZGVyc3RyYXNzZSAxNQotCQkJCUJlbGxhY2ggU08gNDUxMgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBCLUVDICAgKGhleCkJCU5JUFBPTiBFTEVDVFJJQyBJTlNUUlVNRU5ULCBJTkMuCi0wMDBCRUMgICAgIChiYXNlIDE2KQkJTklQUE9OIEVMRUNUUklDIElOU1RSVU1FTlQsIElOQy4KLQkJCQkzLTU2LTIxIEhpcmFkbwotCQkJCVRvdHN1a2Eta3UgWW9rb2hhbWEtc2hpIDI0NC0wODAyCi0JCQkJSkFQQU4KLQotMDAtMEItRUQgICAoaGV4KQkJRUxNIEluYy4KLTAwMEJFRCAgICAgKGJhc2UgMTYpCQlFTE0gSW5jLgotCQkJCTE1MjQ4IEthc2VkYXRha2VkYQotCQkJCU1pbmFtaXNhdHN1bWEgS2Fnb3NoaW1hIDg5Ny0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMEItRUUgICAoaGV4KQkJaW5jLmpldCwgSW5jb3Jwb3JhdGVkCi0wMDBCRUUgICAgIChiYXNlIDE2KQkJaW5jLmpldCwgSW5jb3Jwb3JhdGVkCi0JCQkJT25lIFdpbm5lbmRlbiBSb2FkCi0JCQkJTm9yd2ljaCBDVCAwNjM2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItRUYgICAoaGV4KQkJQ29kZSBDb3Jwb3JhdGlvbgotMDAwQkVGICAgICAoYmFzZSAxNikJCUNvZGUgQ29ycG9yYXRpb24KLQkJCQkxMTgxNCBTLiBFbGVjdGlvbiBSZC4sIFN0ZSAyMDAKLQkJCQlEcmFwZXIgVXRhaCA4NDAyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItRjAgICAoaGV4KQkJTW9URVggUHJvZHVjdHMgQ28uLCBMdGQuCi0wMDBCRjAgICAgIChiYXNlIDE2KQkJTW9URVggUHJvZHVjdHMgQ28uLCBMdGQuCi0JCQkJQy5QLk8uQm94IDY5MTIKLQkJCQlZZSBLd2FuLWRvbmcgMTktMQotCQkJCUNob25nLWd1IFNlb3VsIDgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLUYxICAgKGhleCkJCUxBUCBMYXNlciBBcHBsaWthdGlvbnMKLTAwMEJGMSAgICAgKGJhc2UgMTYpCQlMQVAgTGFzZXIgQXBwbGlrYXRpb25zCi0JCQkJWmVwcGVsaW5zdHJhc3NlIDIzCi0JCQkJTHVlbmVidXJnIE5pZWRlcnNhY2hzZW4gMjEzMzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLUYyICAgKGhleCkJCUNoaWgtS2FuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBCRjIgICAgIChiYXNlIDE2KQkJQ2hpaC1LYW4gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMjQtMSwgUGVpIFNoaWggQ2hvdSwgTWluZyBIbyBWaWxsLgotCQkJCVNoYW4gU3VuIEhzaWFuZyBUYWluYW4gSHNpZW4gMTgwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1GMyAgIChoZXgpCQlCQUUgU1lTVEVNUwotMDAwQkYzICAgICAoYmFzZSAxNikJCUJBRSBTWVNURU1TCi0JCQkJNjUwMCBUcmFjb3IgTGFuZQotCQkJCUF1c3RpbiBUZXhhcyA3ODcyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItRjQgICAoaGV4KQkJUFJJVkFURQotMDAwQkY0ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wQi1GNSAgIChoZXgpCQlTaGFuZ2hhaSBTaWJvIFRlbGVjb20gVGVjaG5vbG9neSBDby4sTHRkCi0wMDBCRjUgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgU2libyBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCUZsb29yIDYgQnVpbGRpbmcgMTgsMzAwIFRpYW5saW4gUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTAwLTBCLUY2ICAgKGhleCkJCU5pdGdlbiBDby4sIEx0ZAotMDAwQkY2ICAgICAoYmFzZSAxNikJCU5pdGdlbiBDby4sIEx0ZAotCQkJCTR0aCBGTC4gMTMzNy0zMSBTZW9jaG8tZG9uZywgU2VvY2hvLWt1Ci0JCQkJU2VvdWwgIDEzNy04NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItRjcgICAoaGV4KQkJTklERUsgQ08uLExURAotMDAwQkY3ICAgICAoYmFzZSAxNikJCU5JREVLIENPLixMVEQKLQkJCQkzNC0xNCBNYWVoYW1hCi0JCQkJSGlyb2lzaGktY2hvCi0JCQkJR2FtYWdvcmkgQWljaCA0NDMtMDAzOAotCQkJCUpBUEFOCi0KLTAwLTBCLUY4ICAgKGhleCkJCUluZmluZXJhCi0wMDBCRjggICAgIChiYXNlIDE2KQkJSW5maW5lcmEKLQkJCQkxMzIyIEJvcmRlYXV4IERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1GOSAgIChoZXgpCQlHZW1zdG9uZSBjb21tdW5pY2F0aW9ucywgSW5jLgotMDAwQkY5ICAgICAoYmFzZSAxNikJCUdlbXN0b25lIGNvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNkZsLiwgTm8uIDEwMiwgIEhlbmd5YW5nIFJkLgotCQkJCVRhaXBlaSAgMTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1GQSAgIChoZXgpCQlFWEVNWVMgU1JMCi0wMDBCRkEgICAgIChiYXNlIDE2KQkJRVhFTVlTIFNSTAotCQkJCUxPWU9MQSA2ODAKLQkJCQlDQVBJVEFMIEZFREVSQUwgQlMgQVMgQzE0MTQKLQkJCQlBUkdFTlRJTkEKLQotMDAtMEItRkIgICAoaGV4KQkJRC1ORVQgSW50ZXJuYXRpb25hbCBDb3Jwb3JhdGlvbgotMDAwQkZCICAgICAoYmFzZSAxNikJCUQtTkVUIEludGVybmF0aW9uYWwgQ29ycG9yYXRpb24KLQkJCQkxNSwgV3UtQ2h1YW4gNXRoIFJvYWQsIFd1LUt1IEluZHVzdHJpYWwKLQkJCQlUYWlwZWkgIEhzaWVoICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLUZDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEJGQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUZEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEJGRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUZFICAgKGhleCkJCUNBU1RFTCBCcm9hZGJhbmQgTGltaXRlZAotMDAwQkZFICAgICAoYmFzZSAxNikJCUNBU1RFTCBCcm9hZGJhbmQgTGltaXRlZAotCQkJCTkvRi4sIFN1aSBZaW5nIEluZHVzdHJpYWwgQnVpbGRpbmcuLAotCQkJCVRva3dhd2FuIEtvd2xvb24gMTUwCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBCLUZGICAgKGhleCkJCUJlcmtlbGV5IENhbWVyYSBFbmdpbmVlcmluZwotMDAwQkZGICAgICAoYmFzZSAxNikJCUJlcmtlbGV5IENhbWVyYSBFbmdpbmVlcmluZwotCQkJCTEyNyBOYXRpb25hbCBTdHJlZXQKLQkJCQlTYW50YSBDcnV6IENBIDk1MDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0wMCAgIChoZXgpCQlCRUIgSW5kdXN0cmllLUVsZWt0cm9uaWsgQUcKLTAwMEMwMCAgICAgKGJhc2UgMTYpCQlCRUIgSW5kdXN0cmllLUVsZWt0cm9uaWsgQUcKLQkJCQlQcm9ncmVzc2FzdHJhc3NlIDMxCi0JCQkJT2JlcmJ1cmcgQkUgMzQxNAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBDLTAxICAgKGhleCkJCUFiYXRyb24gQUcKLTAwMEMwMSAgICAgKGJhc2UgMTYpCQlBYmF0cm9uIEFHCi0JCQkJTGV0dGVuc3RyYXNzZSA5Ci0JCQkJUm90a3JldXogIENILTYzNDMKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQy0wMiAgIChoZXgpCQlBQkIgT3kKLTAwMEMwMiAgICAgKGJhc2UgMTYpCQlBQkIgT3kKLQkJCQlQLk8uQm94IDg5Ci0JCQkJVHVya3UgIEZJTi0yMDUyMQotCQkJCUZJTkxBTkQKLQotMDAtMEMtMDMgICAoaGV4KQkJSERNSSBMaWNlbnNpbmcsIExMQwotMDAwQzAzICAgICAoYmFzZSAxNikJCUhETUkgTGljZW5zaW5nLCBMTEMKLQkJCQkxMDYwIEVhc3QgQXJxdWVzIEF2ZS4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTA0ICAgKGhleCkJCVRlY25vdmEKLTAwMEMwNCAgICAgKGJhc2UgMTYpCQlUZWNub3ZhCi0JCQkJMTQ4NiBTdC4gUGF1bCBBdmUuCi0JCQkJR3VybmVlIElsbGlub2lzIDYwMDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0wNSAgIChoZXgpCQlSUEEgUmVzZXJjaCBDby4sIEx0ZC4KLTAwMEMwNSAgICAgKGJhc2UgMTYpCQlSUEEgUmVzZXJjaCBDby4sIEx0ZC4KLQkJCQk0RiwgOTAtNywgWWFuZ2phZS1Eb25nLCBTZW9jaG8tS3UKLQkJCQlTZW91bCwgS29yZWEKLQkJCQlTZW91bCAgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0wNiAgIChoZXgpCQlOaXh2dWUgU3lzdGVtcyAgUHRlIEx0ZAotMDAwQzA2ICAgICAoYmFzZSAxNikJCU5peHZ1ZSBTeXN0ZW1zICBQdGUgTHRkCi0JCQkJMzAgTG95YW5nIFdheSwgIzA3LTAyCi0JCQkJU2luZ2Fwb3JlIFNpbmdhcG9yZSBTNTA4NzY5Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTBDLTA3ICAgKGhleCkJCUlmdGVzdCBBRwotMDAwQzA3ICAgICAoYmFzZSAxNikJCUlmdGVzdCBBRwotCQkJCVNjaHdpbW1iYWRzdHJhc3NlIDQzCi0JCQkJV2V0dGluZ2VuIEFHIDU0MzAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQy0wOCAgIChoZXgpCQlIVU1FWCBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMEMwOCAgICAgKGJhc2UgMTYpCQlIVU1FWCBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQk1RiwgTm8uNSwgTGFuZSA0NCwgU3p1IFdlaSBSZC4gVGFhbiBUYWlwCi0JCQkJVGFpcGVpICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTA5ICAgKGhleCkJCUhpdGFjaGkgSUUgU3lzdGVtcyBDby4sIEx0ZAotMDAwQzA5ICAgICAoYmFzZSAxNikJCUhpdGFjaGkgSUUgU3lzdGVtcyBDby4sIEx0ZAotCQkJCVNhaXdhaS1jaG8gMTIwLTEsSW5hemF3YS1zaGkKLQkJCQlBaWNoaSA0OTItODYyMixKYXBhbgotCQkJCUluYXphd2Etc2hpIEFpY2hpIDQ5Mi04NjIyCi0JCQkJSkFQQU4KLQotMDAtMEMtMEEgICAoaGV4KQkJR3Vhbmdkb25nIFByb3ZpbmNlIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBSZXNlYXJjaCBJbnN0aXR1dGUKLTAwMEMwQSAgICAgKGJhc2UgMTYpCQlHdWFuZ2RvbmcgUHJvdmluY2UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IFJlc2VhcmNoIEluc3RpdHV0ZQotCQkJCUVsZWN0cm9uaWMgVGVjaG5vbG9neSBCdWlsZGluZyxOTy42MS02NSwKLQkJCQlXZXN0IFpob25nc2hhbiBBdmVudWUsVGlhbmhlIERpc3RyaWN0Ci0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2MzAKLQkJCQlDSElOQQotCi0wMC0wQy0wQiAgIChoZXgpCQlCcm9hZGJ1cyBUZWNobm9sb2dpZXMKLTAwMEMwQiAgICAgKGJhc2UgMTYpCQlCcm9hZGJ1cyBUZWNobm9sb2dpZXMKLQkJCQk4MCBDZW50cmFsIFN0cmVldAotCQkJCUJveGJvcm91Z2ggTWFzc2FjaHVzZXR0cyAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMEMgICAoaGV4KQkJQVBQUk8gVEVDSE5PTE9HWSBJTkMuCi0wMDBDMEMgICAgIChiYXNlIDE2KQkJQVBQUk8gVEVDSE5PTE9HWSBJTkMuCi0JCQkJMTNGLCBOby4gNjYgQ2h1bmctQ2hlbmcgUmQsCi0JCQkJSHNpbi1DaHVhbmcgVGFpcGVpIDI0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMEQgICAoaGV4KQkJQ29tbXVuaWNhdGlvbnMgJiBQb3dlciBJbmR1c3RyaWVzIC8gU2F0Y29tIERpdmlzaW9uCi0wMDBDMEQgICAgIChiYXNlIDE2KQkJQ29tbXVuaWNhdGlvbnMgJiBQb3dlciBJbmR1c3RyaWVzIC8gU2F0Y29tIERpdmlzaW9uCi0JCQkJODExIEhhbnNlbiBXYXkgTVMgUy02MDAKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTBFICAgKGhleCkJCVh0cmVtZVNwZWN0cnVtLCBJbmMuCi0wMDBDMEUgICAgIChiYXNlIDE2KQkJWHRyZW1lU3BlY3RydW0sIEluYy4KLQkJCQk4MTMzIExlZXNidXJnIFBpa2UKLQkJCQlWaWVubmEgVkEgMjIxODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTBGICAgKGhleCkJCVRlY2huby1PbmUgQ28uLCBMdGQKLTAwMEMwRiAgICAgKGJhc2UgMTYpCQlUZWNobm8tT25lIENvLiwgTHRkCi0JCQkJOS0xNy0xIEhpZ2FzaGkgU29ub2RhCi0JCQkJQW1hZ2FzYWtpIEh5b2dvIDY2MS0wOTUzCi0JCQkJSkFQQU4KLQotMDAtMEMtMTAgICAoaGV4KQkJUE5JIENvcnBvcmF0aW9uCi0wMDBDMTAgICAgIChiYXNlIDE2KQkJUE5JIENvcnBvcmF0aW9uCi0JCQkJNTQ2NCBTa3lsYW5lIEJsdmQgI0EKLQkJCQlTYW50YSBSb3NhIENBIDk1NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0xMSAgIChoZXgpCQlOSVBQT04gREVNUEEgQ08uLExURC4KLTAwMEMxMSAgICAgKGJhc2UgMTYpCQlOSVBQT04gREVNUEEgQ08uLExURC4KLQkJCQkxLTQtOAotCQkJCWthbWVub2tvdQotCQkJCWtha2VnYXdhIGNpdHkgc2hpenVva2EgcHJlZi4gNDM2LTAwMjgKLQkJCQlKQVBBTgotCi0wMC0wQy0xMiAgIChoZXgpCQlNaWNyby1PcHRyb25pYy1NZXNzdGVjaG5payBHbWJICi0wMDBDMTIgICAgIChiYXNlIDE2KQkJTWljcm8tT3B0cm9uaWMtTWVzc3RlY2huaWsgR21iSAotCQkJCUxlc3NpbmdzdHJhc3NlIDE0Ci0JCQkJTGFuZ2VicnVlY2sgU2F4b255IEQtMDE0NjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLTEzICAgKGhleCkJCU1lZGlhUQotMDAwQzEzICAgICAoYmFzZSAxNikJCU1lZGlhUQotCQkJCTI5NzUgU2FuIFlzaWRybyBXYXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMTQgICAoaGV4KQkJRGlhZ25vc3RpYyBJbnN0cnVtZW50cywgSW5jLgotMDAwQzE0ICAgICAoYmFzZSAxNikJCURpYWdub3N0aWMgSW5zdHJ1bWVudHMsIEluYy4KLQkJCQk2NTQwIEJ1cnJvdWdocwotCQkJCVN0ZXJsaW5nIEhlaWdodHMgTUkgNDgzMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTE1ICAgKGhleCkJCUN5YmVyUG93ZXIgU3lzdGVtcywgSW5jLgotMDAwQzE1ICAgICAoYmFzZSAxNikJCUN5YmVyUG93ZXIgU3lzdGVtcywgSW5jLgotCQkJCTZGLCBOby4gMzIsIFNlYy4gMSwgQ2hlbmdnb25nIFJkLgotCQkJCU5hbmhhbmcgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMTYgICAoaGV4KQkJQ29uY29yZGUgTWljcm9zeXN0ZW1zIEluYy4KLTAwMEMxNiAgICAgKGJhc2UgMTYpCQlDb25jb3JkZSBNaWNyb3N5c3RlbXMgSW5jLgotCQkJCTEwNDI3IENvZ2RpbGwgUm9hZCwgU3VpdGUgNTAwCi0JCQkJS25veHZpbGxlIFROIDM3OTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0xNyAgIChoZXgpCQlBSkEgVmlkZW8gU3lzdGVtcyBJbmMKLTAwMEMxNyAgICAgKGJhc2UgMTYpCQlBSkEgVmlkZW8gU3lzdGVtcyBJbmMKLQkJCQk0NDMgQ3Jvd24gUG9pbnQgQ2lyY2xlCi0JCQkJR3Jhc3MgVmFsbGV5IENhbGlmb3JuaWEgOTU5NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTE4ICAgKGhleCkJCVplbmlzdSBLZWlzb2t1IEluYy4KLTAwMEMxOCAgICAgKGJhc2UgMTYpCQlaZW5pc3UgS2Vpc29rdSBJbmMuCi0JCQkJMi0xMy0zNwotCQkJCUhvbm1hY2hpCi0JCQkJRnVjaHUtc2hpIFRva3lvIDE4My0wMDI3Ci0JCQkJSkFQQU4KLQotMDAtMEMtMTkgICAoaGV4KQkJVGVsaW8gQ29tbXVuaWNhdGlvbnMgR21iSAotMDAwQzE5ICAgICAoYmFzZSAxNikJCVRlbGlvIENvbW11bmljYXRpb25zIEdtYkgKLQkJCQlFbGJjaGF1c3NlZSAxCi0JCQkJSGFtYnVyZyAgMjI3NjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLTFBICAgKGhleCkJCVF1ZXN0IFRlY2huaWNhbCBTb2x1dGlvbnMgSW5jLgotMDAwQzFBICAgICAoYmFzZSAxNikJCVF1ZXN0IFRlY2huaWNhbCBTb2x1dGlvbnMgSW5jLgotCQkJCTQxMTAgTW91cm5pbmcgRG92ZSBDcnQuCi0JCQkJTWVsYm91cm5lIEZMIDMyOTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0xQiAgIChoZXgpCQlPUkFDT00gQ28sIEx0ZC4KLTAwMEMxQiAgICAgKGJhc2UgMTYpCQlPUkFDT00gQ28sIEx0ZC4KLQkJCQkzcmQgRmwsIEEtU3VuZyBCbGRnLCA5OTktMwotCQkJCURlYWNoaS1Eb25nLCBLYW5nbmFtLUd1Ci0JCQkJU2VvdWwgIDEzNS0yODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtMUMgICAoaGV4KQkJTWljcm9XZWIgQ28uLCBMdGQuCi0wMDBDMUMgICAgIChiYXNlIDE2KQkJTWljcm9XZWIgQ28uLCBMdGQuCi0JCQkJNDAzIFQvUy9TL0MsIDIzLTE0IEphbmctZG9uZywgWXVzb25nLWd1LAotCQkJCURhZWplb24gQ2hvb25nQ2h1bmdEbyAzMDUtMzQzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTFEICAgKGhleCkJCU1ldHRsZXIgJiBGdWNocyBBRwotMDAwQzFEICAgICAoYmFzZSAxNikJCU1ldHRsZXIgJiBGdWNocyBBRwotCQkJCVF1ZXJzdHJhc3NlIDE3Ci0JCQkJQ0gtODk1MSBGYWhyd2VpZCAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQy0xRSAgIChoZXgpCQlHbG9iYWwgQ2FjaGUKLTAwMEMxRSAgICAgKGJhc2UgMTYpCQlHbG9iYWwgQ2FjaGUKLQkJCQkxNjAgRWFzdCBDYWxpZm9ybmlhIFN0cmVldAotCQkJCVBPQiAxNjU5Ci0JCQkJSmFja3NvbnZpbGxlIE9SIDk3NTMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0xRiAgIChoZXgpCQlHbGltbWVyZ2xhc3MgTmV0d29ya3MKLTAwMEMxRiAgICAgKGJhc2UgMTYpCQlHbGltbWVyZ2xhc3MgTmV0d29ya3MKLQkJCQkyNjE0MiBFZGVuIExhbmRpbmcgUm9hZAotCQkJCUhheXdhcmQgQ2FsaWZvcm5pYSA5NDU0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMjAgICAoaGV4KQkJRmkgV0luLCBJbmMuCi0wMDBDMjAgICAgIChiYXNlIDE2KQkJRmkgV0luLCBJbmMuCi0JCQkJOEYsIE5vLiAxMCwgUHJvc3Blcml0eSBSZC4gMSwKLQkJCQlTY2llbmNlIEJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW4gQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTIxICAgKGhleCkJCUZhY3VsdHkgb2YgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSwgS2VpbyBVbml2ZXJzaXR5Ci0wMDBDMjEgICAgIChiYXNlIDE2KQkJRmFjdWx0eSBvZiBTY2llbmNlIGFuZCBUZWNobm9sb2d5LCBLZWlvIFVuaXZlcnNpdHkKLQkJCQkzLTE0LTEgSGl5b3NoaSwgS29ob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIzLTg1MjIKLQkJCQlKQVBBTgotCi0wMC0wQy0yMiAgIChoZXgpCQlEb3VibGUgRCBFbGVjdHJvbmljcyBMdGQKLTAwMEMyMiAgICAgKGJhc2UgMTYpCQlEb3VibGUgRCBFbGVjdHJvbmljcyBMdGQKLQkJCQlVbml0IDYsIFJvYmlucyBXaGFyZgotCQkJCUdyb3ZlIFJvYWQKLQkJCQlOb3J0aGZsZWV0IEtlbnQgREExMSA5QVgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQy0yMyAgIChoZXgpCQlCZWlqaW5nIExhbmNodWFuIFRlY2guIENvLiwgTHRkLgotMDAwQzIzICAgICAoYmFzZSAxNikJCUJlaWppbmcgTGFuY2h1YW4gVGVjaC4gQ28uLCBMdGQuCi0JCQkJUm0yMjAsTm8uMzAgU2hhbmd5dWFuY3VuLAotCQkJCUdhb2xpYW5ncWlhb2x1LEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwNDQKLQkJCQlDSElOQQotCi0wMC0wQy0yNCAgIChoZXgpCQlBTkFUT1IKLTAwMEMyNCAgICAgKGJhc2UgMTYpCQlBTkFUT1IKLQkJCQk0NCwgcnVlIGQnRXN0aWVubmUgZCdPcnZlcwotCQkJCXNhcnRyb3V2aWxsZSB5dmVsaW5lcyA3ODUwMAotCQkJCUZSQU5DRQotCi0wMC0wQy0yNSAgIChoZXgpCQlBbGxpZWQgVGVsZXN5biBOZXR3b3JrcwotMDAwQzI1ICAgICAoYmFzZSAxNikJCUFsbGllZCBUZWxlc3luIE5ldHdvcmtzCi0JCQkJU3VpdGUgNDUwCi0JCQkJOTIwIE1haW4gQ2FtcHVzIERyaXZlCi0JCQkJUmFsZWlnaCBOQyAyNzYwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMjYgICAoaGV4KQkJV2VpbnRlayBMYWJzLiBJbmMuCi0wMDBDMjYgICAgIChiYXNlIDE2KQkJV2VpbnRlayBMYWJzLiBJbmMuCi0JCQkJM0YsIE5vLjkxMCwgQ2h1bmcgQ2hlbmcgUmQuCi0JCQkJQ2h1bmcgSG8gY2l0eSBUYWlwZWkgSHNpZW4gMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy0yNyAgIChoZXgpCQlTYW1teSBDb3Jwb3JhdGlvbgotMDAwQzI3ICAgICAoYmFzZSAxNikJCVNhbW15IENvcnBvcmF0aW9uCi0JCQkJU1VOIFNISU5FNjAgNDVGLDMtMS0xLEhJR0FTSEktSUtFQlVLVVJPCi0JCQkJVE9TSElNQS1LVSBUT0tZTyAxNzAtNjA0NQotCQkJCUpBUEFOCi0KLTAwLTBDLTI4ICAgKGhleCkJCVJJRkFUUk9OCi0wMDBDMjggICAgIChiYXNlIDE2KQkJUklGQVRST04KLQkJCQk5dGggRkwsIFNISU5UQUVZQU5HIEJMREcKLQkJCQk3MzYtOCwgQkFOUE8tRE9ORwotCQkJCVNFT1VMIFNFT0NITy1HVSAxMzctMDQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTI5ICAgKGhleCkJCVZNd2FyZSwgSW5jLgotMDAwQzI5ICAgICAoYmFzZSAxNikJCVZNd2FyZSwgSW5jLgotCQkJCTM0MDEgSGlsbHZpZXcgQXZlbnVlCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0yQSAgIChoZXgpCQlPQ1RURUwgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMEMyQSAgICAgKGJhc2UgMTYpCQlPQ1RURUwgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQk3Ri0xLCBOby4zMDAsIERhZHVlbiAxMHRoIFN0LgotCQkJCVRhaWNodW5nIENpdHkgIDQwOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMkIgICAoaGV4KQkJRUxJQVMgVGVjaG5vbG9neSwgSW5jLgotMDAwQzJCICAgICAoYmFzZSAxNikJCUVMSUFTIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkzRiwgMTAxNSwgWXVuZy1BbiBSb2FkLAotCQkJCVRhb3l1YW4gQ2l0eSBUYW95dWFuIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMkMgICAoaGV4KQkJRW53aXNlciBJbmMuCi0wMDBDMkMgICAgIChiYXNlIDE2KQkJRW53aXNlciBJbmMuCi0JCQkJNEYsIENoZW9uZ3Nlb2sgQi9ECi0JCQkJMTM1LTExLCBOb25oeWVvbi1kb25nLCBLYW5nbmFtLWt1Ci0JCQkJU2VvdWwgU2VvdWwgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0yRCAgIChoZXgpCQlGdWxsV2F2ZSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwQzJEICAgICAoYmFzZSAxNikJCUZ1bGxXYXZlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJN0YtNiwgTm8uMjYsIFRhaVl1YW4gU3QuLAotCQkJCUp1QmVpIEhzaW4gQ2h1IDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMkUgICAoaGV4KQkJT3BlbmV0IGluZm9ybWF0aW9uIHRlY2hub2xvZ3koc2hlbnpoZW4pIENvLiwgTHRkLgotMDAwQzJFICAgICAoYmFzZSAxNikJCU9wZW5ldCBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5KHNoZW56aGVuKSBDby4sIEx0ZC4KLQkJCQkyL0YsQSB0b3dlcixpbnRlcm5hdGlvbmFsIHRlY2gtaW5ub3ZhdGlvCi0JCQkJaGlnaC10ZWNoIGluZHVzdHJpYWwgcGFyayAsc2hlbnpoZW4sIFAuUgotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0wQy0yRiAgIChoZXgpCQlTZW9yaW1UZWNobm9sb2d5IENvLixMdGQuCi0wMDBDMkYgICAgIChiYXNlIDE2KQkJU2VvcmltVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTJGIERJUExPTUFUSUMgQ0VOVEVSIEIvRCAxMzc2LTEgU0VPQ0hPMi0KLQkJCQlTRU9VTCAgMTM3LTA3MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0zMCAgIChoZXgpCQlDaXNjbwotMDAwQzMwICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTMxICAgKGhleCkJCUNpc2NvCi0wMDBDMzEgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMzIgICAoaGV4KQkJQXZpb25pYyBEZXNpZ24gRGV2ZWxvcG1lbnQgR21iSAotMDAwQzMyICAgICAoYmFzZSAxNikJCUF2aW9uaWMgRGVzaWduIERldmVsb3BtZW50IEdtYkgKLQkJCQlTdGhhbWVyc3RyYXNzZSAyNGEKLQkJCQlIYW1idXJnICAyMjM5NwotCQkJCUdFUk1BTlkKLQotMDAtMEMtMzMgICAoaGV4KQkJQ29tcHVjYXNlIEVudGVycHJpc2UgQ28uIEx0ZC4KLTAwMEMzMyAgICAgKGJhc2UgMTYpCQlDb21wdWNhc2UgRW50ZXJwcmlzZSBDby4gTHRkLgotCQkJCTIyNSBMYW5lIDU0LCBBbiBIbyBSb2FkLCBTZWN0aW9uIDJuZC4KLQkJCQlUYWluYW4gQ2l0eSAgNzA5NDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTM0ICAgKGhleCkJCVZpeGVuIENvLiwgTHRkLgotMDAwQzM0ICAgICAoYmFzZSAxNikJCVZpeGVuIENvLiwgTHRkLgotCQkJCTUtMTctMyBIaWdhc2hpdG9rb3JvemF3YQotCQkJCVRva29yb3phd2EgU2FpdGFtYSAzNTktMDAyMQotCQkJCUpBUEFOCi0KLTAwLTBDLTM1ICAgKGhleCkJCUthVm8gRGVudGFsIEdtYkggJiBDby4gS0cKLTAwMEMzNSAgICAgKGJhc2UgMTYpCQlLYVZvIERlbnRhbCBHbWJIICYgQ28uIEtHCi0JCQkJQmlzbWFya3JpbmcgMzkKLQkJCQlCaWJlcmFjaC9SaXNzIEJhZGVuLVd1ZXJ0dGVtYmVyZyA4ODQwMAotCQkJCUdFUk1BTlkKLQotMDAtMEMtMzYgICAoaGV4KQkJU0hBUlAgVEFLQVlBIEVMRUNUUk9OSUNTIElORFVTVFJZIENPLixMVEQuCi0wMDBDMzYgICAgIChiYXNlIDE2KQkJU0hBUlAgVEFLQVlBIEVMRUNUUk9OSUNTIElORFVTVFJZIENPLixMVEQuCi0JCQkJMzEyMS0xIFNhdG9taSBTYXRvc2hvLWNobwotCQkJCUFzYWt1Y2hpLWd1biBPa2F5YW1hIDcxOS0wMzAxCi0JCQkJSkFQQU4KLQotMDAtMEMtMzcgICAoaGV4KQkJR2VvbWF0aW9uLCBJbmMuCi0wMDBDMzcgICAgIChiYXNlIDE2KQkJR2VvbWF0aW9uLCBJbmMuCi0JCQkJMjUxODggR2VuZXNlZSBUcmFpbCBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJR29sZGVuIENPIDgwNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0zOCAgIChoZXgpCQlUZWxjb0JyaWRnZXMgSW5jLgotMDAwQzM4ICAgICAoYmFzZSAxNikJCVRlbGNvQnJpZGdlcyBJbmMuCi0JCQkJNTg2IER1IENoZW5hbAotCQkJCVJlcGVudGlnbnkgUXVlYmVjIEo2QSA3QzUKLQkJCQlDQU5BREEKLQotMDAtMEMtMzkgICAoaGV4KQkJU2VudGluZWwgV2lyZWxlc3MgSW5jLgotMDAwQzM5ICAgICAoYmFzZSAxNikJCVNlbnRpbmVsIFdpcmVsZXNzIEluYy4KLQkJCQk0MzkgUy4gVW5pb24gU3QuCi0JCQkJU291dGggTGF3cmVuY2UgTUEgMDE4NDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTNBICAgKGhleCkJCU94YW5jZQotMDAwQzNBICAgICAoYmFzZSAxNikJCU94YW5jZQotCQkJCTc1LTg1IHJ1ZSBSaWNoZWxpZXUKLQkJCQlsZXMgTHVjcyBzdXIgQm91bG9nbmUgIDg1MTcwCi0JCQkJRlJBTkNFCi0KLTAwLTBDLTNCICAgKGhleCkJCU9yaW9uIEVsZWN0cmljIENvLiwgTHRkLgotMDAwQzNCICAgICAoYmFzZSAxNikJCU9yaW9uIEVsZWN0cmljIENvLiwgTHRkLgotCQkJCTQxLTEsIEllaGlzYS1jaG8KLQkJCQlUYWtlZnUtc2hpIEZ1a3VpIDkxNS04NTU1Ci0JCQkJSkFQQU4KLQotMDAtMEMtM0MgICAoaGV4KQkJTWVkaWFDaG9ydXMsIEluYy4KLTAwMEMzQyAgICAgKGJhc2UgMTYpCQlNZWRpYUNob3J1cywgSW5jLgotCQkJCSMyMDUsIEVUUkkgVEJJIDIgQ2VudGVyCi0JCQkJVWV1bi1Eb25nLCBZdXNvbmctR3UKLQkJCQlEYWVqb24gREogMzA1LTMzMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0zRCAgIChoZXgpCQlHbHN5c3RlY2ggQ28uLCBMdGQuCi0wMDBDM0QgICAgIChiYXNlIDE2KQkJR2xzeXN0ZWNoIENvLiwgTHRkLgotCQkJCVNvbmcgQm8gQi9EIDNGCi0JCQkJMjEyLTEwLCBLdW5nLURvbmcsIEt1cm8gR3UKLQkJCQlTZW91bCAgMTUyLTg4MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0zRSAgIChoZXgpCQlDcmVzdCBBdWRpbwotMDAwQzNFICAgICAoYmFzZSAxNikJCUNyZXN0IEF1ZGlvCi0JCQkJMTYtMDAgUG9sbGl0dCBEcml2ZQotCQkJCUZhaXIgTGF3biBOSiAwNzQxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtM0YgICAoaGV4KQkJQ29nZW50IERlZmVuY2UgJiBTZWN1cml0eSBOZXR3b3JrcywKLTAwMEMzRiAgICAgKGJhc2UgMTYpCQlDb2dlbnQgRGVmZW5jZSAmIFNlY3VyaXR5IE5ldHdvcmtzLAotCQkJCU1lYWRvd3MgUm9hZCwKLQkJCQlRdWVlbnN3YXkgTWVhZG93cyBJbmQgRXN0YXRlLAotCQkJCU5ld3BvcnQsIFNvdXRoIFdhbGVzLCBOUDE5IDRTUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBDLTQwICAgKGhleCkJCUFsdGVjaCBDb250cm9scwotMDAwQzQwICAgICAoYmFzZSAxNikJCUFsdGVjaCBDb250cm9scwotCQkJCTE1NDUgSW5kdXN0aWFsIERyaXZlCi0JCQkJTWlzc291cmkgQ2l0eSBUZXhhcyA3NzQ4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNDEgICAoaGV4KQkJQ2lzY28tTGlua3N5cwotMDAwQzQxICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMKLQkJCQkxMjEgVGhlb3J5IERyLgotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNDIgICAoaGV4KQkJUm91dGVyYm9hcmQuY29tCi0wMDBDNDIgICAgIChiYXNlIDE2KQkJUm91dGVyYm9hcmQuY29tCi0JCQkJUGVybmF2YXMgNDYKLQkJCQlSaWdhICBMVi0xMDA5Ci0JCQkJTEFUVklBCi0KLTAwLTBDLTQzICAgKGhleCkJCVJhbGluayBUZWNobm9sb2d5LCBDb3JwLgotMDAwQzQzICAgICAoYmFzZSAxNikJCVJhbGluayBUZWNobm9sb2d5LCBDb3JwLgotCQkJCTRGLCBOby4yLCBUZWNobm9sb2d5IDV0aCBSb2FkLAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW4tQ2h1ICAyMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTQ0ICAgKGhleCkJCUF1dG9tYXRlZCBJbnRlcmZhY2VzLCBJbmMuCi0wMDBDNDQgICAgIChiYXNlIDE2KQkJQXV0b21hdGVkIEludGVyZmFjZXMsIEluYy4KLQkJCQkxMjAgQ29uZmVkZXJhdGUgTGFuZQotCQkJCUdyZWVyIFNvdXRoIENhcm9saW5hIDI5NjUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy00NSAgIChoZXgpCQlBbmltYXRpb24gVGVjaG5vbG9naWVzIEluYy4KLTAwMEM0NSAgICAgKGJhc2UgMTYpCQlBbmltYXRpb24gVGVjaG5vbG9naWVzIEluYy4KLQkJCQk4RixOby4xMzgsTGFuZSAyMzUsUGFvY2hpYW8gUm9hZCwKLQkJCQlIc2luIFRpZW4KLQkJCQlUYWlwZWkgSHNpZW4gIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtNDYgICAoaGV4KQkJQWxsaWVkIFRlbGVzeW4gSW5jLgotMDAwQzQ2ICAgICAoYmFzZSAxNikJCUFsbGllZCBUZWxlc3luIEluYy4KLQkJCQk5NjAgU3Rld2FydCBEcml2ZSwgU3VpdGUgQgotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy00NyAgIChoZXgpCQlTSyBUZWxldGVjaChSJkQgUGxhbm5pbmcgVGVhbSkKLTAwMEM0NyAgICAgKGJhc2UgMTYpCQlTSyBUZWxldGVjaChSJkQgUGxhbm5pbmcgVGVhbSkKLQkJCQkyMXRoIEZMIFN0YXJ0b3dlciA3MzcsIFllb2tzYW0tZG9uZwotCQkJCUthbmduYW0tS3UKLQkJCQlTZW91bCAgMTM1LTk4NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy00OCAgIChoZXgpCQlRb1N0ZWsgQ29ycG9yYXRpb24KLTAwMEM0OCAgICAgKGJhc2UgMTYpCQlRb1N0ZWsgQ29ycG9yYXRpb24KLQkJCQk3RiwgMjIsIFRhaXl1ZW4gU3RyZWV0Ci0JCQkJQ2h1cGVpIEhzaW5jaHUgSHNpZW4gMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy00OSAgIChoZXgpCQlEYW5nYWFyZCBUZWxlY29tIFJUQyBEaXZpc2lvbiBBL1MKLTAwMEM0OSAgICAgKGJhc2UgMTYpCQlEYW5nYWFyZCBUZWxlY29tIFJUQyBEaXZpc2lvbiBBL1MKLQkJCQlJbmR1c3RyaXZlaiAxCi0JCQkJREsgMjYxNTQ1NTMKLQkJCQlQYWRib3JnICBESy02MzMwCi0JCQkJREVOTUFSSwotCi0wMC0wQy00QSAgIChoZXgpCQlDeWdudXMgTWljcm9zeXN0ZW1zIChQKSBMaW1pdGVkCi0wMDBDNEEgICAgIChiYXNlIDE2KQkJQ3lnbnVzIE1pY3Jvc3lzdGVtcyAoUCkgTGltaXRlZAotCQkJCTkzLCBQaGFzZSBJSSwKLQkJCQlJREEsIENoZXJsYXBhbGx5Ci0JCQkJSHlkZXJhYmFkIEFuZGhyYSBQcmFkZXNoIDUwMDA1MQotCQkJCUlORElBCi0KLTAwLTBDLTRCICAgKGhleCkJCUNoZW9wcyBFbGVrdHJvbmlrCi0wMDBDNEIgICAgIChiYXNlIDE2KQkJQ2hlb3BzIEVsZWt0cm9uaWsKLQkJCQlKZXNjaGtlbnN0cmFzc2UgMzIKLQkJCQlHZXJldHNyaWVkIEJheWVybiA4MjUzOAotCQkJCUdFUk1BTlkKLQotMDAtMEMtNEMgICAoaGV4KQkJQXJjb3IgQUcmQ28uCi0wMDBDNEMgICAgIChiYXNlIDE2KQkJQXJjb3IgQUcmQ28uCi0JCQkJQWxmcmVkLUhlcnJoYXVzZW4tQWxsZWUgMQotCQkJCUVzY2hib3JuIEhlc3NlbiA2NTc2MAotCQkJCUdFUk1BTlkKLQotMDAtMEMtNEQgICAoaGV4KQkJQUNSQSBDT05UUk9MCi0wMDBDNEQgICAgIChiYXNlIDE2KQkJQUNSQSBDT05UUk9MCi0JCQkJTGFuZHNjYXBlIEhvdXNlLAotCQkJCUxhbmRzY2FwZSBSb2FkLAotCQkJCUNodXJjaHRvd24sIER1YmxpbiAxNAotCQkJCUlSRUxBTkQKLQotMDAtMEMtNEUgICAoaGV4KQkJV2luYmVzdCBUZWNobm9sb2d5IENPLExUCi0wMDBDNEUgICAgIChiYXNlIDE2KQkJV2luYmVzdCBUZWNobm9sb2d5IENPLExUCi0JCQkJN0YtNU5vLjczNiBDaHVuZyBDaGVuZ1JkLixDaHVuZ0hvCi0JCQkJVGFpcGVpICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTRGICAgKGhleCkJCVVEVGVjaCBKYXBhbiBDb3Jwb3JhdGlvbgotMDAwQzRGICAgICAoYmFzZSAxNikJCVVEVGVjaCBKYXBhbiBDb3Jwb3JhdGlvbgotCQkJCUhhbWFjaG8gSGFuYWNobyBCbGRnLCAyRgotCQkJCTItMTctOCBOaWhvbmJhc2hpLUhhbWFjaG8KLQkJCQlDaHVvLWt1IFRva3lvIDEwMy0wMDA3Ci0JCQkJSkFQQU4KLQotMDAtMEMtNTAgICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0wMDBDNTAgICAgIChiYXNlIDE2KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0JCQkJMTI4MCBEaXNjIERyaXZlCi0JCQkJU2hha29wZWUgTU4gNTUzNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTUxICAgKGhleCkJCVNjaWVudGlmaWMgVGVjaG5vbG9naWVzIEluYy4KLTAwMEM1MSAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNjU1MCBEdW1iYXJ0b24gQ2lyY2xlCi0JCQkJRnJlbW9udCBDQSA5NDU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNTIgICAoaGV4KQkJUm9sbCBTeXN0ZW1zIEluYy4KLTAwMEM1MiAgICAgKGJhc2UgMTYpCQlSb2xsIFN5c3RlbXMgSW5jLgotCQkJCTUzIFRoaXJkIEF2ZW51ZQotCQkJCUJ1cmxpbmd0b24gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTUzICAgKGhleCkJCVBSSVZBVEUKLTAwMEM1MyAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEMtNTQgICAoaGV4KQkJUGVkZXN0YWwgTmV0d29ya3MsIEluYwotMDAwQzU0ICAgICAoYmFzZSAxNikJCVBlZGVzdGFsIE5ldHdvcmtzLCBJbmMKLQkJCQk2NTAzIER1bWJhcnRvbiBDaXJjbGUKLQkJCQlGcmVtb250IENBIDk0NTU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy01NSAgIChoZXgpCQlNaWNyb2xpbmsgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwQzU1ICAgICAoYmFzZSAxNikJCU1pY3JvbGluayBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJOEYsIDMxLCBIc2ludGFpIFJvYWQKLQkJCQlDaHVwZWkgQ2l0eQotCQkJCUhzaW5jaHUgIDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtNTYgICAoaGV4KQkJTWVnYXRlbCBDb21wdXRlciAoMTk4NikgQ29ycC4KLTAwMEM1NiAgICAgKGJhc2UgMTYpCQlNZWdhdGVsIENvbXB1dGVyICgxOTg2KSBDb3JwLgotCQkJCTU4NiBNYWluIFN0cmVldAotCQkJCUdsZW4gV2lsbGlhbXMgT250YXJpbyBMN0cgM1Q2Ci0JCQkJQ0FOQURBCi0KLTAwLTBDLTU3ICAgKGhleCkJCU1BQ0tJRSBFbmdpbmVlcmluZyBTZXJ2aWNlcyBCZWxnaXVtIEJWQkEKLTAwMEM1NyAgICAgKGJhc2UgMTYpCQlNQUNLSUUgRW5naW5lZXJpbmcgU2VydmljZXMgQmVsZ2l1bSBCVkJBCi0JCQkJSW5kdXN0cmllcGFyayBOb29yZCAxMAotCQkJCVNpbnQgTmlrbGFhcyAgQi05MTAwCi0JCQkJQkVMR0lVTQotCi0wMC0wQy01OCAgIChoZXgpCQlNJlMgU3lzdGVtcwotMDAwQzU4ICAgICAoYmFzZSAxNikJCU0mUyBTeXN0ZW1zCi0JCQkJMjg2MSBDb25ncmVzc21hbiBMYW5lCi0JCQkJRGFsbGFzIFRYIDc1MjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy01OSAgIChoZXgpCQlJbmR5bWUgRWxlY3Ryb25pY3MsIEluYy4KLTAwMEM1OSAgICAgKGJhc2UgMTYpCQlJbmR5bWUgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQk5MDg1IEFlcm8gRHIuCi0JCQkJU2FuIERpZWdvIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy01QSAgIChoZXgpCQlJQlNtbSBJbmR1c3RyaWVlbGVrdHJvbmlrIE11bHRpbWVkaWEKLTAwMEM1QSAgICAgKGJhc2UgMTYpCQlJQlNtbSBJbmR1c3RyaWVlbGVrdHJvbmlrIE11bHRpbWVkaWEKLQkJCQlBeWluZ2VyIFN0ci4gMQotCQkJCUZhaXN0ZW5oYWFyCi0JCQkJQnJ1bm50aGFsIEJhdmFyaWEgRC04NTY0OQotCQkJCUdFUk1BTlkKLQotMDAtMEMtNUIgICAoaGV4KQkJSEFOV0FORyBURUNITk9MT0dZIENPLixMVEQKLTAwMEM1QiAgICAgKGJhc2UgMTYpCQlIQU5XQU5HIFRFQ0hOT0xPR1kgQ08uLExURAotCQkJCThGLEF1dG9tYXRpb24gQnVpbGRpbmcsOTUgWmhvbmdndWFuY3VuLAotCQkJCUhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODAKLQkJCQlDSElOQQotCi0wMC0wQy01QyAgIChoZXgpCQlHVE4gU3lzdGVtcyBCLlYuCi0wMDBDNUMgICAgIChiYXNlIDE2KQkJR1ROIFN5c3RlbXMgQi5WLgotCQkJCVBvc3RidXMgMTIyMzYKLQkJCQkxMTAwIEFFCi0JCQkJQW1zdGVyZGFtICAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wQy01RCAgIChoZXgpCQlDSElDIFRFQ0hOT0xPR1kgKENISU5BKSBDT1JQLgotMDAwQzVEICAgICAoYmFzZSAxNikJCUNISUMgVEVDSE5PTE9HWSAoQ0hJTkEpIENPUlAuCi0JCQkJN3RoIEJ1aWxkaW5nLFNoaSdhbyBJbmQuWm9uZSxMb25naHVhIFRvdwotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDkKLQkJCQlDSElOQQotCi0wMC0wQy01RSAgIChoZXgpCQlDYWx5cHNvIE1lZGljYWwKLTAwMEM1RSAgICAgKGJhc2UgMTYpCQlDYWx5cHNvIE1lZGljYWwKLQkJCQkyMTAxIEZvdXJ0aCBBdmVudWUsIFN1aXRlIDE1NTAKLQkJCQlTZWF0dGxlIFdBIDk4MTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy01RiAgIChoZXgpCQlBdnRlYywgSW5jLgotMDAwQzVGICAgICAoYmFzZSAxNikJCUF2dGVjLCBJbmMuCi0JCQkJNDMzNSBBdWd1c3RhIEh3eQotCQkJCUdpbGJlcnQgU0MgMjkwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTYwICAgKGhleCkJCUFDTSBTeXN0ZW1zCi0wMDBDNjAgICAgIChiYXNlIDE2KQkJQUNNIFN5c3RlbXMKLQkJCQkzMDM0IEdvbGQgQ2FuYWwgRHJpdmUKLQkJCQlSYW5jaG8gQ29yZG92YSBDQSA5NTY3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNjEgICAoaGV4KQkJQUMgVGVjaCBjb3Jwb3JhdGlvbiBEQkEgQWR2YW5jZWQgRGlnaXRhbAotMDAwQzYxICAgICAoYmFzZSAxNikJCUFDIFRlY2ggY29ycG9yYXRpb24gREJBIEFkdmFuY2VkIERpZ2l0YWwKLQkJCQkxMjUwLUcgQXZlbmlkYSBBY2FzbwotCQkJCUNhbWFyaWxsbyBDQSA5MzAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNjIgICAoaGV4KQkJQUJCIEFCLCBDZXdlLUNvbnRyb2wgCi0wMDBDNjIgICAgIChiYXNlIDE2KQkJQUJCIEFCLCBDZXdlLUNvbnRyb2wgCi0JCQkJRGVwdC4gTFBDQy9SRSAKLQkJCQlNb3RvcmdyYW5kIDIwCi0JCQkJVmFzdGVyYXMgIDcyMSA2MQotCQkJCVNXRURFTgotCi0wMC0wQy02MyAgIChoZXgpCQlaZW5pdGggRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLTAwMEM2MyAgICAgKGJhc2UgMTYpCQlaZW5pdGggRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLQkJCQkyMDAwIE1pbGxicm9vayBEcml2ZQotCQkJCUxpbmNvbG5zaGlyZSBJbGxpbm9pcyA2MDA2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNjQgICAoaGV4KQkJWDIgTVNBIEdyb3VwCi0wMDBDNjQgICAgIChiYXNlIDE2KQkJWDIgTVNBIEdyb3VwCi0JCQkJQ2FyZSBvZjogQWdpbGVudCBUZWNobm9sb2dpZXMKLQkJCQlXaGl0ZSBIb3VzZSBSb2FkCi0JCQkJSXBzd2ljaCwgU3VmZm9sayBJUDEgNVBCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEMtNjUgICAoaGV4KQkJU3VuaW4gVGVsZWNvbQotMDAwQzY1ICAgICAoYmFzZSAxNikJCVN1bmluIFRlbGVjb20KLQkJCQkxMDI1LTUgRG9rb2stUmksIFdhYnUtRXViCi0JCQkJTmFteWFuZ2p1LUNpdHkgS3l1bmdnaS1EbyA0NzItOTAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTY2ICAgKGhleCkJCVByb250byBOZXR3b3JrcyBJbmMKLTAwMEM2NiAgICAgKGJhc2UgMTYpCQlQcm9udG8gTmV0d29ya3MgSW5jCi0JCQkJNDYzNyBDaGFib3QgRHIKLQkJCQlTdWl0ZSAzMDAKLQkJCQlQbGVhc2FudG9uIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy02NyAgIChoZXgpCQlPWU8gRUxFQ1RSSUMgQ08uLExURAotMDAwQzY3ICAgICAoYmFzZSAxNikJCU9ZTyBFTEVDVFJJQyBDTy4sTFRECi0JCQkJNjMtMSBOYWthbWljaGkgT21vdGUKLQkJCQlIaXJha2F3YQotCQkJCUpveW8gS3lvdG8gNjEwLTAxMDEKLQkJCQlKQVBBTgotCi0wMC0wQy02OCAgIChoZXgpCQlTaWdtYVRlbCwgSW5jLgotMDAwQzY4ICAgICAoYmFzZSAxNikJCVNpZ21hVGVsLCBJbmMuCi0JCQkJMjAxIEpvbmVzIFJvYWQKLQkJCQlXYWx0aGFtIE1BIDAyNDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy02OSAgIChoZXgpCQlOYXRpb25hbCBSYWRpbyBBc3Ryb25vbXkgT2JzZXJ2YXRvcnkKLTAwMEM2OSAgICAgKGJhc2UgMTYpCQlOYXRpb25hbCBSYWRpbyBBc3Ryb25vbXkgT2JzZXJ2YXRvcnkKLQkJCQlQLk8uIEJveCBPCi0JCQkJU29jb3JybyBOTSA4NzgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNkEgICAoaGV4KQkJTUJBUkkKLTAwMEM2QSAgICAgKGJhc2UgMTYpCQlNQkFSSQotCQkJCTc3MDAgU2FuZGhvbGR0IFJvYWQKLQkJCQlNb3NzIExhbmRpbmcgQ0EgOTUwMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTZCICAgKGhleCkJCUt1cnogSW5kdXN0cmllLUVsZWt0cm9uaWsgR21iSAotMDAwQzZCICAgICAoYmFzZSAxNikJCUt1cnogSW5kdXN0cmllLUVsZWt0cm9uaWsgR21iSAotCQkJCUZvZWhyZW5iYWNoc3RyYXNzZSAzCi0JCQkJUmVtc2hhbGRlbiBCYWRlbi1XdXJ0dGVtYmVyZyA3MzYzMAotCQkJCUdFUk1BTlkKLQotMDAtMEMtNkMgICAoaGV4KQkJRWxnYXRvIFN5c3RlbXMgTExDCi0wMDBDNkMgICAgIChiYXNlIDE2KQkJRWxnYXRvIFN5c3RlbXMgTExDCi0JCQkJOTAwIEtlYXJueSBTdCAjNzUwCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNkQgICAoaGV4KQkJRWR3YXJkcyBMdGQuCi0wMDBDNkQgICAgIChiYXNlIDE2KQkJRWR3YXJkcyBMdGQuCi0JCQkJTWFyc2hhbGwgUm9hZAotCQkJCUVhc3Rib3VybmUgRWFzdCBTdXNzZXggQk4yMiA5QkEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQy02RSAgIChoZXgpCQlBU1VTVEVLIENPTVBVVEVSIElOQy4KLTAwMEM2RSAgICAgKGJhc2UgMTYpCQlBU1VTVEVLIENPTVBVVEVSIElOQy4KLQkJCQkxNTAsIExpLVRlIFJkLiwgUGVpVG91Ci0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTZGICAgKGhleCkJCUFtdGVrIHN5c3RlbSBjby4sTFRELgotMDAwQzZGICAgICAoYmFzZSAxNikJCUFtdGVrIHN5c3RlbSBjby4sTFRELgotCQkJCTE0Ri0xMSxOby43OSxTZWMuIDEgLEhzaW4gVGFpIFd1IFJkLiwKLQkJCQlIc2kgQ2hpaCBDaXR5Ci0JCQkJVGFpcGVpICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTcwICAgKGhleCkJCUFDQyBHbWJICi0wMDBDNzAgICAgIChiYXNlIDE2KQkJQUNDIEdtYkgKLQkJCQlBbSBTYW5kZmVsZCAxNQotCQkJCUthcmxzcnVoZSBCYWRlbiA3NjE0OQotCQkJCUdFUk1BTlkKLQotMDAtMEMtNzEgICAoaGV4KQkJV3licm9uLCBJbmMKLTAwMEM3MSAgICAgKGJhc2UgMTYpCQlXeWJyb24sIEluYwotCQkJCTQ4MzAgTElzdCBEcgotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ29sb3JhZG8gODA5MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTcyICAgKGhleCkJCVRlbXBlYXJsIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDBDNzIgICAgIChiYXNlIDE2KQkJVGVtcGVhcmwgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQkzLTEtNDIgT2h6dQotCQkJCU1pbmFtaS1rdQotCQkJCUhpcm9zaGltYS1zaGkgSGlyb3NoaW1hIDczMi0wODAyCi0JCQkJSkFQQU4KLQotMDAtMEMtNzMgICAoaGV4KQkJVEVMU09OIEVMRUNUUk9OSUNTIENPLiwgTFRECi0wMDBDNzMgICAgIChiYXNlIDE2KQkJVEVMU09OIEVMRUNUUk9OSUNTIENPLiwgTFRECi0JCQkJVGVsc29uIFZlbnR1cmUgVG93ZXIuLCA5NDktMyBEb2dvay1Eb25nCi0JCQkJU2VvdWwgS2FuZ25hbS1LdSAxMzUtNzM5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTc0ICAgKGhleCkJCVJJVkVSVEVDIENPUlBPUkFUSU9OCi0wMDBDNzQgICAgIChiYXNlIDE2KQkJUklWRVJURUMgQ09SUE9SQVRJT04KLQkJCQk4ODItNSBNSVlBR0FTQUtJCi0JCQkJSU1BQkFSSSBFSElNRSA3OTktMTUzNwotCQkJCUpBUEFOCi0KLTAwLTBDLTc1ICAgKGhleCkJCU9yaWVudGFsIGludGVncmF0ZWQgZWxlY3Ryb25pY3MuIExURAotMDAwQzc1ICAgICAoYmFzZSAxNikJCU9yaWVudGFsIGludGVncmF0ZWQgZWxlY3Ryb25pY3MuIExURAotCQkJCTI4MS0zNCBEb25kYW5nLWRvbmcgV29ubWktR3UKLQkJCQlCdWNoZW9uIEt5b3VuZ2tpZG8gNDIwLTgwOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy03NiAgIChoZXgpCQlNSUNSTy1TVEFSIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0wMDBDNzYgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotCQkJCU5vIDY5LCBMaS1EZSBTdHJlZXQsIEp1bmctSGUgQ2l0eSwgVGFpcGUKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtNzcgICAoaGV4KQkJTGlmZSBSYWNpbmcgTHRkCi0wMDBDNzcgICAgIChiYXNlIDE2KQkJTGlmZSBSYWNpbmcgTHRkCi0JCQkJVW5pdCA2IFJlcHRvbiBDbG9zZQotCQkJCUJ1cm50IE1pbGxzIEluZCBFc3QKLQkJCQlCYXNpbGRvbiBFc3NleCBTUzEzIDFMRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBDLTc4ICAgKGhleCkJCUluLVRlY2ggRWxlY3Ryb25pY3MgTGltaXRlZAotMDAwQzc4ICAgICAoYmFzZSAxNikJCUluLVRlY2ggRWxlY3Ryb25pY3MgTGltaXRlZAotCQkJCVVuaXQgQSwgMTN0aCBGbG9vci4sIFdpbmcgVGFpIENlbnRyZQotCQkJCTEyIEhpbmcgWWlwIFN0cmVldAotCQkJCUt3dW4gVG9uZyBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0wQy03OSAgIChoZXgpCQlFeHRlbCBDb21tdW5pY2F0aW9ucyBQL0wKLTAwMEM3OSAgICAgKGJhc2UgMTYpCQlFeHRlbCBDb21tdW5pY2F0aW9ucyBQL0wKLQkJCQkzOTkgRmVybnRyZWUgR3VsbHkgUm9hZAotCQkJCU10IFdhdmVybGV5IFZpY3RvcmlhIDMxNDkKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEMtN0EgICAoaGV4KQkJRGFUQVJJVVMgVGVjaG5vbG9naWVzIEdtYkgKLTAwMEM3QSAgICAgKGJhc2UgMTYpCQlEYVRBUklVUyBUZWNobm9sb2dpZXMgR21iSAotCQkJCUFudG9uIE1hcmlhIFNjaHlybGUgU3RyLiA3Ci0JCQkJUmV1dHRlIFRpcm9sIDY2MDAKLQkJCQlBVVNUUklBCi0KLTAwLTBDLTdCICAgKGhleCkJCUFMUEhBIFBST0pFQ1QgQ28uLEx0ZC4KLTAwMEM3QiAgICAgKGJhc2UgMTYpCQlBTFBIQSBQUk9KRUNUIENvLixMdGQuCi0JCQkJODM0IFNla2lzaGksSGlnYXNoaS1rdSxIYW1hbWF0c3UtY2l0eQotCQkJCVNoaXp1b2thICA0MzEtMzExNAotCQkJCUpBUEFOCi0KLTAwLTBDLTdDICAgKGhleCkJCUludGVybmV0IEluZm9ybWF0aW9uIEltYWdlIEluYy4KLTAwMEM3QyAgICAgKGJhc2UgMTYpCQlJbnRlcm5ldCBJbmZvcm1hdGlvbiBJbWFnZSBJbmMuCi0JCQkJRmwuIDYsIE5vLiAxLCBBbGxleSAyMCwgTGFuZSAyNiwgUnVlaWd1YQotCQkJCU5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTdEICAgKGhleCkJCVRFSUtPS1UgRUxFQ1RSSUMgTUZHLiBDTy4sIExURAotMDAwQzdEICAgICAoYmFzZSAxNikJCVRFSUtPS1UgRUxFQ1RSSUMgTUZHLiBDTy4sIExURAotCQkJCTYwLCBISVJBTk8KLQkJCQlTSElOR1UtQ0hPCi0JCQkJSUJPLUdVTiBIWU9HTyA2NzktNDM5NQotCQkJCUpBUEFOCi0KLTAwLTBDLTdFICAgKGhleCkJCVRlbGxpdW0gSW5jb3Jwb3JhdGVkCi0wMDBDN0UgICAgIChiYXNlIDE2KQkJVGVsbGl1bSBJbmNvcnBvcmF0ZWQKLQkJCQkyIENyZXNjZW50IFBsYWNlCi0JCQkJT2NlYW5wb3J0IE5ldyBKZXJzZXkgMDc3NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTdGICAgKGhleCkJCXN5bmVydHJvbml4eCBHbWJICi0wMDBDN0YgICAgIChiYXNlIDE2KQkJc3luZXJ0cm9uaXh4IEdtYkgKLQkJCQlWYWhyZW53YWxkZXIgU3RyYXNzZSA3Ci0JCQkJSGFubm92ZXIgTmllZGVyc2FjaHNlbiAzMDE2NQotCQkJCUdFUk1BTlkKLQotMDAtMEMtODAgICAoaGV4KQkJT3BlbGNvbW0gSW5jLgotMDAwQzgwICAgICAoYmFzZSAxNikJCU9wZWxjb21tIEluYy4KLQkJCQk0Njc1MCBGcmVtb250IEJsdmQuIFN0ZSAyMTAKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy04MSAgIChoZXgpCQlTY2huZWlkZXIgRWxlY3RyaWMgKEF1c3RyYWxpYSkgCi0wMDBDODEgICAgIChiYXNlIDE2KQkJU2NobmVpZGVyIEVsZWN0cmljIChBdXN0cmFsaWEpIAotCQkJCTgwIFNjaG5laWRlciBSb2FkCi0JCQkJRWFnbGUgRmFybSAgUWxkIDQwMDkKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEMtODIgICAoaGV4KQkJTkVUV09SSyBURUNITk9MT0dJRVMgSU5DCi0wMDBDODIgICAgIChiYXNlIDE2KQkJTkVUV09SSyBURUNITk9MT0dJRVMgSU5DCi0JCQkJMTI3NSBEQU5ORVIgRFJJVkUKLQkJCQlBVVJPUkEgT0ggNDQyMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTgzICAgKGhleCkJCUxvZ2ljYWwgU29sdXRpb25zCi0wMDBDODMgICAgIChiYXNlIDE2KQkJTG9naWNhbCBTb2x1dGlvbnMKLQkJCQkxMDBUIFdhc2hpbmd0b24gU3RyZWV0Ci0JCQkJTWlsZm9yZCBDVCAwNjQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtODQgICAoaGV4KQkJRWF6aXgsIEluYy4KLTAwMEM4NCAgICAgKGJhc2UgMTYpCQlFYXppeCwgSW5jLgotCQkJCVVuaXQgMzAxIFBsYXphIEJ1aWxkaW5nIEIKLQkJCQk2NTMwIE5vcnRoZ2F0ZSBBdmVudWUsIEZpbGludmVzdAotCQkJCU11bnRpbmx1cGEgQ2l0eSBSaXphbCAxNzcwCi0JCQkJUEhJTElQUElORVMKLQotMDAtMEMtODUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQzg1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtODYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQzg2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1tLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtODcgICAoaGV4KQkJQU1ECi0wMDBDODcgICAgIChiYXNlIDE2KQkJQU1ECi0JCQkJNDU1NSBHcmVhdCBBbWVyaWNhIFBrd3kKLQkJCQlTdGUgNTAxCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTg4ICAgKGhleCkJCUFwYWNoZSBNaWNybyBQZXJpcGhlcmFscywgSW5jLgotMDAwQzg4ICAgICAoYmFzZSAxNikJCUFwYWNoZSBNaWNybyBQZXJpcGhlcmFscywgSW5jLgotCQkJCTE3NTI2IFZvbiBLYXJtYW4gQXZlCi0JCQkJSXJ2aW5lIENBIDkyNjE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy04OSAgIChoZXgpCQlBQyBFbGVjdHJpYyBWZWhpY2xlcywgTHRkLgotMDAwQzg5ICAgICAoYmFzZSAxNikJCUFDIEVsZWN0cmljIFZlaGljbGVzLCBMdGQuCi0JCQkJTWFya2tpbmFrdWphIDMKLQkJCQlKb2tlbGEgIDA1NDAwCi0JCQkJRklOTEFORAotCi0wMC0wQy04QSAgIChoZXgpCQlCb3NlIENvcnBvcmF0aW9uCi0wMDBDOEEgICAgIChiYXNlIDE2KQkJQm9zZSBDb3Jwb3JhdGlvbgotCQkJCUF1dG9tb3RpdmUgU3lzdGVtcyBEaXZpc2lvbiAoQVNEKQotCQkJCTY4OCBHcmVhdCBSb2FkIChNYWlsc3RvcDogMVcyKQotCQkJCVN0b3cgTUEgMDE3NzUtOTEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtOEIgICAoaGV4KQkJQ29ubmVjdCBUZWNoIEluYwotMDAwQzhCICAgICAoYmFzZSAxNikJCUNvbm5lY3QgVGVjaCBJbmMKLQkJCQk0MiBBcnJvdyBSb2FkCi0JCQkJR3VlbHBoIE9udGFyaW8gTjFLIDFTNgotCQkJCUNBTkFEQQotCi0wMC0wQy04QyAgIChoZXgpCQlLT0RJQ09NIENPLixMVEQuCi0wMDBDOEMgICAgIChiYXNlIDE2KQkJS09ESUNPTSBDTy4sTFRELgotCQkJCUEtRG9uZyA1RkkuLFNLIFR3aW4gVG93ZXIgMzQ1LTksCi0JCQkJR2FzYW4tRG9uZywgR3VlbWNodW4tR3UKLQkJCQlTZW91bCAgMTUzLTAyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy04RCAgIChoZXgpCQlNQVRSSVggVklTSU9OIEdtYkgKLTAwMEM4RCAgICAgKGJhc2UgMTYpCQlNQVRSSVggVklTSU9OIEdtYkgKLQkJCQlUYWxzdHJhc3NlIDE2Ci0JCQkJT3BwZW53ZWlsZXIgQmFkZW4tV3VlcnR0ZW1iZXJnIEQtNzE1NzAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLThFICAgKGhleCkJCU1lbnRvciBFbmdpbmVlcmluZyBJbmMKLTAwMEM4RSAgICAgKGJhc2UgMTYpCQlNZW50b3IgRW5naW5lZXJpbmcgSW5jCi0JCQkJMjg5MSBTdW5yaWRnZSBXYXkgTkUKLQkJCQlTdWl0ZSAyMzAKLQkJCQlDYWxnYXJ5IEFsYmVydGEgVDFZN0s3Ci0JCQkJQ0FOQURBCi0KLTAwLTBDLThGICAgKGhleCkJCU5lcmdhbCBzLnIubC4KLTAwMEM4RiAgICAgKGJhc2UgMTYpCQlOZXJnYWwgcy5yLmwuCi0JCQkJVmlhbGUgQmFyZGFuemVsbHUsOAotCQkJCVJvbWEgIDAwMTU1Ci0JCQkJSVRBTFkKLQotMDAtMEMtOTAgICAoaGV4KQkJT2N0YXNpYyBJbmMuCi0wMDBDOTAgICAgIChiYXNlIDE2KQkJT2N0YXNpYyBJbmMuCi0JCQkJNDEwMSBNb2xzb24gU3QuCi0JCQkJU3VpdGUgMzAwCi0JCQkJTW9udHJlYWwgUXVlYmVjIEgxWSAzTDEKLQkJCQlDQU5BREEKLQotMDAtMEMtOTEgICAoaGV4KQkJUml2ZXJoZWFkIE5ldHdvcmtzIEluYy4KLTAwMEM5MSAgICAgKGJhc2UgMTYpCQlSaXZlcmhlYWQgTmV0d29ya3MgSW5jLgotCQkJCTIwMTk1IFN0ZXZlbnMgQ3JlZWsgQmx2ZC4gIyAxMTAKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTkyICAgKGhleCkJCVdvbGZWaXNpb24gR21iaAotMDAwQzkyICAgICAoYmFzZSAxNikJCVdvbGZWaXNpb24gR21iaAotCQkJCU9iZXJlcyBSaWVkIDE0Ci0JCQkJNjgzMyBLbGF1cyAKLQkJCQlBVVNUUklBCi0KLTAwLTBDLTkzICAgKGhleCkJCVhlbGluZSBDby4sIEx0ZC4KLTAwMEM5MyAgICAgKGJhc2UgMTYpCQlYZWxpbmUgQ28uLCBMdGQuCi0JCQkJN0YuIENodW5namluIEJsZGcuLCA0NzUtMjIKLQkJCQlCYW5nYmFlIDIgZG9uZywgU2VvY2hvLWd1Ci0JCQkJU2VvdWwgIDEzNy04MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtOTQgICAoaGV4KQkJVW5pdGVkIEVsZWN0cm9uaWMgSW5kdXN0cmllcywgSW5jLiAoRVVJKQotMDAwQzk0ICAgICAoYmFzZSAxNikJCVVuaXRlZCBFbGVjdHJvbmljIEluZHVzdHJpZXMsIEluYy4gKEVVSSkKLQkJCQkyNyBSZW5tYXIgQXZlCi0JCQkJV2FscG9sZSBNQSAwMjA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtOTUgICAoaGV4KQkJUHJpbWVOZXQKLTAwMEM5NSAgICAgKGJhc2UgMTYpCQlQcmltZU5ldAotCQkJCUhvbmdpayBVbml2ZXJzaXR5LCA3Mi0xLCBTYW5nc3UtRG9uZywgTWEKLQkJCQlTZW91bCAgMTIxLTc5MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy05NiAgIChoZXgpCQlPUU8sIEluYy4KLTAwMEM5NiAgICAgKGJhc2UgMTYpCQlPUU8sIEluYy4KLQkJCQkxODAwIElsbGlub2lzIFN0cmVldAotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTk3ICAgKGhleCkJCU5WIEFEQiBUVFYgVGVjaG5vbG9naWVzIFNBCi0wMDBDOTcgICAgIChiYXNlIDE2KQkJTlYgQURCIFRUViBUZWNobm9sb2dpZXMgU0EKLQkJCQlMRVVWRU5TRVNURUVOV0VHLDU4NQotCQkJCVpBVkVOVEVNIFZsYWFtc2UgYnJhYmFudCAxOTMwCi0JCQkJQkVMR0lVTQotCi0wMC0wQy05OCAgIChoZXgpCQlMRVRFSyBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDBDOTggICAgIChiYXNlIDE2KQkJTEVURUsgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCVRhZXlhbmcgQmQuIDJuZCBGbG9vciwgMjQ4NgotCQkJCVNvbmdOYW0tRG9uZywgSnVuZ3dvbi1LdQotCQkJCVNvbmdOYW0gS3l1bmdnaS1kbyA0NjItODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTk5ICAgKGhleCkJCUhJVEVMIExJTksgQ28uLEx0ZAotMDAwQzk5ICAgICAoYmFzZSAxNikJCUhJVEVMIExJTksgQ28uLEx0ZAotCQkJCVNhbXN1bmcgT21uaSBUb3dlciA0dGggRmwuLCAzOTUtNjIKLQkJCQlTaGluZGFlYmFuZy1kb25nLCBEb25namFjLWt1LAotCQkJCVNlb3VsICAxNTYtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTlBICAgKGhleCkJCUhpdGVjaCBFbGVjdHJvbmljcyBDb3JwLgotMDAwQzlBICAgICAoYmFzZSAxNikJCUhpdGVjaCBFbGVjdHJvbmljcyBDb3JwLgotCQkJCTRmLCBOby4gNTAxLTE1IENodW5nLUNoZW5nIFJkLgotCQkJCVNoaW4tdGllbiBUYWlwZWkgU2hpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy05QiAgIChoZXgpCQlFRSBTb2x1dGlvbnMsIEluYwotMDAwQzlCICAgICAoYmFzZSAxNikJCUVFIFNvbHV0aW9ucywgSW5jCi0JCQkJOEYsIE5vLiA5LCBQYXJrIElJIEF2ZS4sIFNjaWVuY2UtQmFzZWQgSQotCQkJCUhzaW4gQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTlDICAgKGhleCkJCUNob25naG8gaW5mb3JtYXRpb24gJiBjb21tdW5pY2F0aW9ucwotMDAwQzlDICAgICAoYmFzZSAxNikJCUNob25naG8gaW5mb3JtYXRpb24gJiBjb21tdW5pY2F0aW9ucwotCQkJCUNob25naG8gQmxkZywgIzctNjEgWWFuZ2phZS1kb25nLCBTZW9jaG8KLQkJCQlTZW91bCAgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy05RCAgIChoZXgpCQlBaXJXYWxrIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDBDOUQgICAgIChiYXNlIDE2KQkJQWlyV2FsayBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTE4NTAgTi4gR3JlZW5WaWxsZSBBdmUuLCBTdWl0ZSAxNjQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy05RSAgIChoZXgpCQlNZW1vcnlMaW5rIENvcnAuCi0wMDBDOUUgICAgIChiYXNlIDE2KQkJTWVtb3J5TGluayBDb3JwLgotCQkJCTM2IEpld2VsZXJzIFBhcmsgRHJpdmUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlOZWVuYWggV2lzY29uc2luIDU0OTU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy05RiAgIChoZXgpCQlOS0UgQ29ycG9yYXRpb24KLTAwMEM5RiAgICAgKGJhc2UgMTYpCQlOS0UgQ29ycG9yYXRpb24KLQkJCQkyNyBadXNobyBCYWJhCi0JCQkJTmFnYW9rYWt5by1zaGkgS3lvdG8gNjE3LTA4MjgKLQkJCQlKQVBBTgotCi0wMC0wQy1BMCAgIChoZXgpCQlTdG9yQ2FzZSBUZWNobm9sb2d5LCBJbmMuCi0wMDBDQTAgICAgIChiYXNlIDE2KQkJU3RvckNhc2UgVGVjaG5vbG9neSwgSW5jLgotCQkJCTE3NjAwIE5ld2hvcGUgU3QuCi0JCQkJRm91bnRhaW4gVmFsbGV5IENBIDkyNzA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BMSAgIChoZXgpCQlTSUdNQUNPTSBDby4sIExURC4KLTAwMENBMSAgICAgKGJhc2UgMTYpCQlTSUdNQUNPTSBDby4sIExURC4KLQkJCQlEYWNvbUJsZGcgN0YgMjAwLTEyIEFueWFuZy1kb25nCi0JCQkJTWFuYW4tS3UsIEFueWFuZy1jaXR5LCBLeXVuZ0tpLURvLCBLb3JlYQotCQkJCTQzMC04MTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtQTIgICAoaGV4KQkJU2NvcHVzIE5ldHdvcmsgVGVjaG5vbG9naWVzIEx0ZAotMDAwQ0EyICAgICAoYmFzZSAxNikJCVNjb3B1cyBOZXR3b3JrIFRlY2hub2xvZ2llcyBMdGQKLQkJCQkxMCBIYSdhbWFsIHN0LiBQYXJrIEFmZWsKLQkJCQlSb3NoIEhhJ2F5aW4gIDQ4MDkyCi0JCQkJSVNSQUVMCi0KLTAwLTBDLUEzICAgKGhleCkJCVJhbmNobyBUZWNobm9sb2d5LCBJbmMuCi0wMDBDQTMgICAgIChiYXNlIDE2KQkJUmFuY2hvIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxMDc4MyBCZWxsIENvdXJ0Ci0JCQkJUmFuY2hvIEN1Y2Ftb25nYSBDQSAxOTczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQTQgICAoaGV4KQkJUHJvbXB0dGVjIFByb2R1Y3QgTWFuYWdlbWVudCBHbWJICi0wMDBDQTQgICAgIChiYXNlIDE2KQkJUHJvbXB0dGVjIFByb2R1Y3QgTWFuYWdlbWVudCBHbWJICi0JCQkJTWFyaWF0cm9zdGVyc3RyLiA0MQotCQkJCUdyYXogQVVTVFJJQSBBLTgwNDMKLQkJCQlBVVNUUklBCi0KLTAwLTBDLUE1ICAgKGhleCkJCU5hbWFuIE5aIExUZAotMDAwQ0E1ICAgICAoYmFzZSAxNikJCU5hbWFuIE5aIExUZAotCQkJCTEzLzE3IEthd2FuYSBTdAotCQkJCU5vcnRoY290ZQotCQkJCUF1Y2tsYW5kICAKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wQy1BNiAgIChoZXgpCQlNaW50ZXJhIENvcnBvcmF0aW9uCi0wMDBDQTYgICAgIChiYXNlIDE2KQkJTWludGVyYSBDb3Jwb3JhdGlvbgotCQkJCTg0NyBSb2dlcnMgU3RyZWV0Ci0JCQkJTG93ZWxsIE1BIDAxODUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BNyAgIChoZXgpCQlNZXRybyAoU3V6aG91KSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDBDQTcgICAgIChiYXNlIDE2KQkJTWV0cm8gKFN1emhvdSkgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCU5vLjIyMSBYaW5naGFpIFN0cmVldCwgU3V6aG91IEluZHVzdHJpYWwgUGFyawotCQkJCVN1emhvdSBKaWFuZyBTdSBQcm92aW5jZSAyMTUwMjEKLQkJCQlDSElOQQotCi0wMC0wQy1BOCAgIChoZXgpCQlHYXJ1ZGEgTmV0d29ya3MgQ29ycG9yYXRpb24KLTAwMENBOCAgICAgKGJhc2UgMTYpCQlHYXJ1ZGEgTmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQk0ODQ5OSBNaWxtb250IERyaXZlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQTkgICAoaGV4KQkJRWJ0cm9uIEluYy4KLTAwMENBOSAgICAgKGJhc2UgMTYpCQlFYnRyb24gSW5jLgotCQkJCTE2NjMgSHd5IDcwMSBTb3V0aAotCQkJCUxvcmlzIFNDIDI5NTY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BQSAgIChoZXgpCQlDdWJpYyBUcmFuc3BvcnRhdGlvbiBTeXN0ZW1zIEluYwotMDAwQ0FBICAgICAoYmFzZSAxNikJCUN1YmljIFRyYW5zcG9ydGF0aW9uIFN5c3RlbXMgSW5jCi0JCQkJMTMwOCBTLiBXYXNoaW5ndG9uIFN0cmVldAotCQkJCVR1bGxhaG9tYSBUTiAzNzM4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQUIgICAoaGV4KQkJQ09NTUVORCBJbnRlcm5hdGlvbmFsCi0wMDBDQUIgICAgIChiYXNlIDE2KQkJQ09NTUVORCBJbnRlcm5hdGlvbmFsCi0JCQkJSG9lbHpsc3RyYXNzZSA1NjEKLQkJCQlXYWxzIFNhbHpidXJnIEEtNTA3MQotCQkJCUFVU1RSSUEKLQotMDAtMEMtQUMgICAoaGV4KQkJQ2l0aXplbiBXYXRjaCBDby4sIEx0ZC4KLTAwMENBQyAgICAgKGJhc2UgMTYpCQlDaXRpemVuIFdhdGNoIENvLiwgTHRkLgotCQkJCTYtMS0xMiwgVGFuYXNoaS1jaG8KLQkJCQlOaXNoaS1Ub2t5by1zaGkgVG9reW8gMTg4LTg1MTEKLQkJCQlKQVBBTgotCi0wMC0wQy1BRCAgIChoZXgpCQlCVFUgSW50ZXJuYXRpb25hbAotMDAwQ0FEICAgICAoYmFzZSAxNikJCUJUVSBJbnRlcm5hdGlvbmFsCi0JCQkJMjMgRXNxdWlyZSBSZAotCQkJCU5vcnRoIEJpbGxlcmljYSBNQSAwMTg2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQUUgICAoaGV4KQkJQWlsb2NvbSBPeQotMDAwQ0FFICAgICAoYmFzZSAxNikJCUFpbG9jb20gT3kKLQkJCQlIYXRhbnBhYW4gdmFsdGF0aWUgMjQKLQkJCQlEeW5hbW8gQnVzaW5lc3MgUGFyawotCQkJCVRBTVBFUkUgRklOIDMzOTUwCi0JCQkJRklOTEFORAotCi0wMC0wQy1BRiAgIChoZXgpCQlUUkkgVEVSTSBDTy4sTFRELgotMDAwQ0FGICAgICAoYmFzZSAxNikJCVRSSSBURVJNIENPLixMVEQuCi0JCQkJMjEtNSBISVJBSURFIEtPVUdJWU8gREFOQ0hJCi0JCQkJVVRTVU5PTUlZQS1TSEkKLQkJCQlUT0NISUdJICAzMjEtMDkwNQotCQkJCUpBUEFOCi0KLTAwLTBDLUIwICAgKGhleCkJCVN0YXIgU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlvbgotMDAwQ0IwICAgICAoYmFzZSAxNikJCVN0YXIgU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlvbgotCQkJCTZGLCBOby4xNywgTGktSHNpbiBSZAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSBDaXR5ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLUIxICAgKGhleCkJCVNhbGxhbmQgRW5naW5lZXJpbmcgKEV1cm9wZSkgQlYKLTAwMENCMSAgICAgKGJhc2UgMTYpCQlTYWxsYW5kIEVuZ2luZWVyaW5nIChFdXJvcGUpIEJWCi0JCQkJQmVkcmlqdmVucGFyayBCZXJrdW0KLQkJCQlTY2hyZXZlbndlZyAxMgotCQkJCVp3b2xsZSBPViA4MDI0IEhBCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEMtQjIgICAoaGV4KQkJQ29tc3RhciBDby4sIEx0ZC4KLTAwMENCMiAgICAgKGJhc2UgMTYpCQlDb21zdGFyIENvLiwgTHRkLgotCQkJCTcwMSBNYXNhbiBWYWxsZXkgIzExMjEtOQotCQkJCUNodW5nLXJpLCBOYWVzZW8tZXVwCi0JCQkJTWFzYW4gR3llb25nbmFtIDYzMC03MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtQjMgICAoaGV4KQkJUk9VTkQgQ28uLEx0ZC4KLTAwMENCMyAgICAgKGJhc2UgMTYpCQlST1VORCBDby4sTHRkLgotCQkJCTMtOSBHb2thc2hvdS1TaGliYWhpZ2FzaGkKLQkJCQlVamkgS3lvdG8gNjExLTAwMTEKLQkJCQlKQVBBTgotCi0wMC0wQy1CNCAgIChoZXgpCQlBdXRvQ2VsbCBMYWJvcmF0b3JpZXMsIEluYy4KLTAwMENCNCAgICAgKGJhc2UgMTYpCQlBdXRvQ2VsbCBMYWJvcmF0b3JpZXMsIEluYy4KLQkJCQkxNzQgQ29uY29yZCBTdHJlZXQKLQkJCQlTdWl0ZSAzMTAKLQkJCQlQZXRlcmJvcm91Z2gsIE5ldyBIYW1wc2hpcmUgMDM0NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUI1ICAgKGhleCkJCVByZW1pZXIgVGVjaG5vbGdpZXMsIEluYwotMDAwQ0I1ICAgICAoYmFzZSAxNikJCVByZW1pZXIgVGVjaG5vbGdpZXMsIEluYwotCQkJCVBPIEJveCAxNTkKLQkJCQlPbmUgUHJlbWllciBEcgotCQkJCUxvbmcgTGFrZSBNTiA1NTM1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQjYgICAoaGV4KQkJTkFOSklORyBTRVUgTU9CSUxFICYgSU5URVJORVQgVEVDSE5PTE9HWSBDTy4sTFRECi0wMDBDQjYgICAgIChiYXNlIDE2KQkJTkFOSklORyBTRVUgTU9CSUxFICYgSU5URVJORVQgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJNXRoIGZsb29yLEJ1aWxkaW5nIDUsQ2hhbmdKaWFuZ0hvdSBTdHJlZXQgTm8uNgotCQkJCU5hbmppbmcgSmlhbmdzdSAyMTAwMTgKLQkJCQlDSElOQQotCi0wMC0wQy1CNyAgIChoZXgpCQlOYW5qaW5nIEh1YXpodW8gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDBDQjcgICAgIChiYXNlIDE2KQkJTmFuamluZyBIdWF6aHVvIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCU5vLjc3IEdhb2h1IFJvYWQKLQkJCQlKaWFuZ25pbmcgRWNvbm9taWMgJiBUZWNobm9sb2d5IERldmVsb3BtCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMTEwMAotCQkJCUNISU5BCi0KLTAwLTBDLUI4ICAgKGhleCkJCU1FRElPTiBBRwotMDAwQ0I4ICAgICAoYmFzZSAxNikJCU1FRElPTiBBRwotCQkJCUFtIFplaG50aG9mIDc3Ci0JCQkJRXNzZW4gTlJXIDQ1MzA3Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy1COSAgIChoZXgpCQlMRUEKLTAwMENCOSAgICAgKGJhc2UgMTYpCQlMRUEKLQkJCQlCYXQgTEEgRkFZRVRURQotCQkJCTIgcGxhY2UgZGVzIFZvc2dlcwotCQkJCVBhcmlzIFJQIDkyNDA1MQotCQkJCUZSQU5DRQotCi0wMC0wQy1CQSAgIChoZXgpCQlKYW1leCwgSW5jLgotMDAwQ0JBICAgICAoYmFzZSAxNikJCUphbWV4LCBJbmMuCi0JCQkJMjQxNSBOIFRyaXBoYW1tZXIgUmQKLQkJCQlJdGhhY2EgTlkgMTQ4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUJCICAgKGhleCkJCUlTS1JBRU1FQ08KLTAwMENCQiAgICAgKGJhc2UgMTYpCQlJU0tSQUVNRUNPCi0JCQkJU2F2c2thIGxva2EgNAotCQkJCUtyYW5qIEdvcmVuanNrYSA0MDAwCi0JCQkJU0xPVkVOSUEKLQotMDAtMEMtQkMgICAoaGV4KQkJSXNjdXR1bQotMDAwQ0JDICAgICAoYmFzZSAxNikJCUlzY3V0dW0KLQkJCQkjODk5LTYgSG8tR3llIERvbmcsIERvbmctQW4gR3UKLQkJCQlBbi1ZYW5nIENpdHkgS3lvbmctR2kgRG8gNDMxLTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy1CRCAgIChoZXgpCQlJbnRlcmZhY2UgTWFzdGVycywgSW5jCi0wMDBDQkQgICAgIChiYXNlIDE2KQkJSW50ZXJmYWNlIE1hc3RlcnMsIEluYwotCQkJCTIzODEgWmFua2VyIFJkLiwgU3VpdGUgMTMwCi0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQkUgICAoaGV4KQkJSW5ub21pbmF0ZSBTZWN1cml0eSBUZWNobm9sb2dpZXMgQUcKLTAwMENCRSAgICAgKGJhc2UgMTYpCQlJbm5vbWluYXRlIFNlY3VyaXR5IFRlY2hub2xvZ2llcyBBRwotCQkJCVJ1ZG93ZXIgQ2hhdXNzZWUgMTMKLQkJCQkxMjQ4OSBCZXJsaW4gCi0JCQkJR0VSTUFOWQotCi0wMC0wQy1CRiAgIChoZXgpCQlIb2x5IFN0b25lIEVudC4gQ28uLCBMdGQuCi0wMDBDQkYgICAgIChiYXNlIDE2KQkJSG9seSBTdG9uZSBFbnQuIENvLiwgTHRkLgotCQkJCTFGLCBOby42MiwgU2VjLjIsIEh1YW5nIFNoYW4gUmQuLAotCQkJCU5laSBIdSBEaXN0LiwgVGFpcGVpLCBUYWl3YW4sIFIuTy5DLgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy1DMCAgIChoZXgpCQlHZW5lcmEgT3kKLTAwMENDMCAgICAgKGJhc2UgMTYpCQlHZW5lcmEgT3kKLQkJCQlOaWl0dHlsYW5wb2xrdSAxNgotCQkJCUJveCAxNgotCQkJCUhlbHNpbmtpICAwMDYyMQotCQkJCUZJTkxBTkQKLQotMDAtMEMtQzEgICAoaGV4KQkJQ29vcGVyIEluZHVzdHJpZXMgSW5jLgotMDAwQ0MxICAgICAoYmFzZSAxNikJCUNvb3BlciBJbmR1c3RyaWVzIEluYy4KLQkJCQk2MDAgVHJhdmlzLCBTdWl0ZSA1ODAwCi0JCQkJSG91c3RvbiBUWCA3NzAwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQzIgICAoaGV4KQkJQ29udHJvbE5ldCAoSW5kaWEpIFByaXZhdGUgTGltaXRlZAotMDAwQ0MyICAgICAoYmFzZSAxNikJCUNvbnRyb2xOZXQgKEluZGlhKSBQcml2YXRlIExpbWl0ZWQKLQkJCQlMLTQ0LCBVbml0IC0gSQotCQkJCVZlcm5hIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJVmVybmEsIFNhbGNldGUgR29hIDQwMyA3MjIKLQkJCQlJTkRJQQotCi0wMC0wQy1DMyAgIChoZXgpCQlCZVdBTiBzeXN0ZW1zCi0wMDBDQzMgICAgIChiYXNlIDE2KQkJQmVXQU4gc3lzdGVtcwotCQkJCTE2IHJ1ZSBkdSBNb3VsaW4gZGVzIEJydXllcmVzCi0JCQkJQ291cmJldm9pZSBIYXV0cyBkZSBTZWluZSA5MjQwMAotCQkJCUZSQU5DRQotCi0wMC0wQy1DNCAgIChoZXgpCQlUaXB0ZWwgQUcKLTAwMENDNCAgICAgKGJhc2UgMTYpCQlUaXB0ZWwgQUcKLQkJCQlIYWxza2VzdHJhc3NlIDEKLQkJCQlSYXRpbmdlbiBOUlcgNDA4ODAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLUM1ICAgKGhleCkJCU5leHRsaW5rIENvLiwgTHRkLgotMDAwQ0M1ICAgICAoYmFzZSAxNikJCU5leHRsaW5rIENvLiwgTHRkLgotCQkJCUMgNjA1LCBUZWNobm9wYXJrICMxNDUgWWF0b3AtZG9uZywKLQkJCQlTZW9uZ25hbS1zaSBCdW5kYW5nLWd1LCBHeWVvbmdnaSA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLUM2ICAgKGhleCkJCUthLVJvIGVsZWN0cm9uaWNzIEdtYkgKLTAwMENDNiAgICAgKGJhc2UgMTYpCQlLYS1SbyBlbGVjdHJvbmljcyBHbWJICi0JCQkJUGFzY2Fsc3RyYXNzZSAyMgotCQkJCUFhY2hlbiBOVyA1MjA3NgotCQkJCUdFUk1BTlkKLQotMDAtMEMtQzcgICAoaGV4KQkJSW50ZWxsaWdlbnQgQ29tcHV0ZXIgU29sdXRpb25zIEluYy4KLTAwMENDNyAgICAgKGJhc2UgMTYpCQlJbnRlbGxpZ2VudCBDb21wdXRlciBTb2x1dGlvbnMgSW5jLgotCQkJCTkzNTAgRXRvbiBTdC4KLQkJCQlDaGF0c3dvcnRoIENBIDkxMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1DOCAgIChoZXgpCQlYeXRyb25peCBSZXNlYXJjaCAmIERlc2lnbiwgSW5jLgotMDAwQ0M4ICAgICAoYmFzZSAxNikJCVh5dHJvbml4IFJlc2VhcmNoICYgRGVzaWduLCBJbmMuCi0JCQkJMTQ4OCBFYXN0IDIzMDAgTm9ydGgKLQkJCQlOb3J0aCBMb2dhbiBVVCA4NDM0MS0xNjI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1DOSAgIChoZXgpCQlJTFdPTyBEQVRBICYgVEVDSE5PTE9HWSBDTy4sTFRECi0wMDBDQzkgICAgIChiYXNlIDE2KQkJSUxXT08gREFUQSAmIFRFQ0hOT0xPR1kgQ08uLExURAotCQkJCTE0NzUtMTAsSFdBIEhZVU4gQkxELiAybmQgRmxvb3IsCi0JCQkJU0VPQ0hPLURPTkcsU0VPQ0hPLUdVLAotCQkJCVNFT1VMICAxMzctMDcxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLUNBICAgKGhleCkJCUhpdGFjaGkgR2xvYmFsIFN0b3JhZ2UgVGVjaG5vbG9naWVzCi0wMDBDQ0EgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBHbG9iYWwgU3RvcmFnZSBUZWNobm9sb2dpZXMKLQkJCQk1NjAwIENvdHRsZSBSZC4KLQkJCQlTYW4gSm9zZSBDQSA5NTE5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQ0IgICAoaGV4KQkJRGVzaWduIENvbWJ1cyBMdGQKLTAwMENDQiAgICAgKGJhc2UgMTYpCQlEZXNpZ24gQ29tYnVzIEx0ZAotCQkJCUhhdGFuYXBhYW4gdmFsdGF0aWUgMzRBCi0JCQkJVGFtcGVyZSAgRklOLTMzMTAwCi0JCQkJRklOTEFORAotCi0wMC0wQy1DQyAgIChoZXgpCQlBZXJvc2NvdXQgTHRkLgotMDAwQ0NDICAgICAoYmFzZSAxNikJCUFlcm9zY291dCBMdGQuCi0JCQkJMyBQZWtlcmlzIFN0LgotCQkJCVBhcmsgVGFtYXIKLQkJCQlSZWhvdm90ICA3NjcwMQotCQkJCUlTUkFFTAotCi0wMC0wQy1DRCAgIChoZXgpCQlJRUMgLSBUQzU3Ci0wMDBDQ0QgICAgIChiYXNlIDE2KQkJSUVDIC0gVEM1NwotCQkJCTMsIHJ1ZSBkZSBWYXJlbWJlCi0JCQkJUC5PLiBCb3ggMTMxCi0JCQkJR2VuZXZhIEdFIDEyMTEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQy1DRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBDQ0UgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1DRiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBDQ0YgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1EMCAgIChoZXgpCQlTeW1ldHJpeAotMDAwQ0QwICAgICAoYmFzZSAxNikJCVN5bWV0cml4Ci0JCQkJNjQwOCAyMTZ0aCBTdCBTVwotCQkJCU1vdW50bGFrZSBUZXJyYWNlIFdBIDk4MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1EMSAgIChoZXgpCQlTRk9NIFRlY2hub2xvZ3kgQ29ycC4KLTAwMENEMSAgICAgKGJhc2UgMTYpCQlTRk9NIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQlOby4xOCwgTGFuZSAzMiwgV3VmdSAxc3QgUmQuLCBMdWp1IHNoaWFuCi0JCQkJTHVqdSBTaGlhbmcgVGF1eXVhbiBDb3VudHkgMzM4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy1EMiAgIChoZXgpCQlTY2hhZmZuZXIgRU1WIEFHCi0wMDBDRDIgICAgIChiYXNlIDE2KQkJU2NoYWZmbmVyIEVNViBBRwotCQkJCU5vcmRzdHJhc3NlIDEKLQkJCQlMdXRlcmJhY2ggIENILTQ1NDIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQy1EMyAgIChoZXgpCQlQcmV0dGwgRWxla3Ryb25payBSYWRlYmVyZyBHbWJICi0wMDBDRDMgICAgIChiYXNlIDE2KQkJUHJldHRsIEVsZWt0cm9uaWsgUmFkZWJlcmcgR21iSAotCQkJCVJvYmVydC1Cb3NjaC1TdHIuIDEwCi0JCQkJUmFkZWJlcmcgU2F4b255IEQtMDE0NTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLUQ0ICAgKGhleCkJCVBvc2l0cm9uIFB1YmxpYyBTYWZldHkgU3lzdGVtcyBpbmMuCi0wMDBDRDQgICAgIChiYXNlIDE2KQkJUG9zaXRyb24gUHVibGljIFNhZmV0eSBTeXN0ZW1zIGluYy4KLQkJCQk1MTAxIEJ1Y2hhbgotCQkJCU1vbnRyZWFsIFF1ZWJlYyBINFAgMlI5Ci0JCQkJQ0FOQURBCi0KLTAwLTBDLUQ1ICAgKGhleCkJCVBhc3NhdmUgSW5jLgotMDAwQ0Q1ICAgICAoYmFzZSAxNikJCVBhc3NhdmUgSW5jLgotCQkJCTE1NTcgSmFzcGVyIERyLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRDYgICAoaGV4KQkJUEFSVE5FUiBURUNICi0wMDBDRDYgICAgIChiYXNlIDE2KQkJUEFSVE5FUiBURUNICi0JCQkJMTBGLCBOTy4yMzMtMixQQU8gQ0hJQU8gUk9BRCwgU0hJTiBUSUVOCi0JCQkJVEFJUEVJICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLUQ3ICAgKGhleCkJCU5hbGxhdGVjaCBMdGQKLTAwMENENyAgICAgKGJhc2UgMTYpCQlOYWxsYXRlY2ggTHRkCi0JCQkJQm9vbGVhbiBIb3VzZQotCQkJCTEgTmFwaWVyIFBhcmssIEN1bWJlcm5hdWxkCi0JCQkJR2xhc2dvdyBTY290bGFuZCBHNjggMEJICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEMtRDggICAoaGV4KQkJTS4gSy4gSnVjaGhlaW0gR21iSCAmIENvCi0wMDBDRDggICAgIChiYXNlIDE2KQkJTS4gSy4gSnVjaGhlaW0gR21iSCAmIENvCi0JCQkJTW9sdGtlc3RyLiAxMyAtIDMxCi0JCQkJRnVsZGEgSGVzc2VuIDM2MDM5Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy1EOSAgIChoZXgpCQlJdGNhcmUgQ28uLCBMdGQKLTAwMENEOSAgICAgKGJhc2UgMTYpCQlJdGNhcmUgQ28uLCBMdGQKLQkJCQk0MDggS1QgU2VvY2hvLCAxMDAxLTEgQmFuZ2JhZS1kb25nLAotCQkJCVNlb2Noby1rdQotCQkJCVNlb3VsICAxMzctODUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLURBICAgKGhleCkJCUZyZWVIYW5kIFN5c3RlbXMsIEluYy4KLTAwMENEQSAgICAgKGJhc2UgMTYpCQlGcmVlSGFuZCBTeXN0ZW1zLCBJbmMuCi0JCQkJOTUgRmlyc3QgU3QuCi0JCQkJU3VpdGUgMjAwCi0JCQkJTG9zIEFsdG9zIENBIDk0MDIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1EQiAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotMDAwQ0RCICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLURDICAgKGhleCkJCUJFQ1MgVGVjaG5vbG9neSwgSW5jCi0wMDBDREMgICAgIChiYXNlIDE2KQkJQkVDUyBUZWNobm9sb2d5LCBJbmMKLQkJCQk5NDg3IERpZWxtYW4gUm9jayBJc2xhbmQgSW5kdXN0cmlhbCBEcml2Ci0JCQkJU3QuIExvdWlzIE1PIDYzMTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1ERCAgIChoZXgpCQlBT1MgVGVjaG5vbG9naWVzIEFHCi0wMDBDREQgICAgIChiYXNlIDE2KQkJQU9TIFRlY2hub2xvZ2llcyBBRwotCQkJCVRhZWZlcm5zdHJhc3NlIDIwCi0JCQkJQmFkZW4gLSBEYWV0dHdpbCBBRyBDSC01NDA1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEMtREUgICAoaGV4KQkJQUJCIFNUT1RaLUtPTlRBS1QgR21iSAotMDAwQ0RFICAgICAoYmFzZSAxNikJCUFCQiBTVE9UWi1LT05UQUtUIEdtYkgKLQkJCQlFcHBlbGhlaW1lciBTdHIuIDgyCi0JCQkJSGVpZGVsYmVyZyBCYWRlbi1XdXJ0dGVtYmVyZyA2OTEyMwotCQkJCUdFUk1BTlkKLQotMDAtMEMtREYgICAoaGV4KQkJUFVMTmlYIEFtZXJpY2EsIEluYwotMDAwQ0RGICAgICAoYmFzZSAxNikJCVBVTE5pWCBBbWVyaWNhLCBJbmMKLQkJCQkxMzMwIE9ybGVhbnMgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUUwICAgKGhleCkJCVRyZWsgRGlhZ25vc3RpY3MgSW5jLgotMDAwQ0UwICAgICAoYmFzZSAxNikJCVRyZWsgRGlhZ25vc3RpY3MgSW5jLgotCQkJCTk4MiBLZXlub3RlIENpcmNsZQotCQkJCVN1aXRlIDYKLQkJCQlDbGV2ZWxhbmQgT2hpbyA0NDEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRTEgICAoaGV4KQkJVGhlIE9wZW4gR3JvdXAKLTAwMENFMSAgICAgKGJhc2UgMTYpCQlUaGUgT3BlbiBHcm91cAotCQkJCUFwZXggUGxhemEKLQkJCQlGb3JidXJ5IFJvYWQKLQkJCQlSZWFkaW5nIEJlcmtzIFJHMSAxQVgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQy1FMiAgIChoZXgpCQlSb2xscy1Sb3ljZQotMDAwQ0UyICAgICAoYmFzZSAxNikJCVJvbGxzLVJveWNlCi0JCQkJMTA1IE4uIFNhbmR1c2t5IFN0LgotCQkJCU10LiBWZXJub24gT2hpbyA0MzA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRTMgICAoaGV4KQkJT3B0aW9uIEludGVybmF0aW9uYWwgTi5WLgotMDAwQ0UzICAgICAoYmFzZSAxNikJCU9wdGlvbiBJbnRlcm5hdGlvbmFsIE4uVi4KLQkJCQlLb2xvbmVsIEJlZ2F1bHRsYWFuIDQ1Ci0JCQkJTGV1dmVuIEJyYWJhbnQgMzAxMgotCQkJCUJFTEdJVU0KLQotMDAtMEMtRTQgICAoaGV4KQkJTmV1cm9Db20gSW50ZXJuYXRpb25hbCwgSW5jLgotMDAwQ0U0ICAgICAoYmFzZSAxNikJCU5ldXJvQ29tIEludGVybmF0aW9uYWwsIEluYy4KLQkJCQk5NTcwIFNFIExhd25maWVsZCBSZAotCQkJCUNsYWNrYW1hcyBPUiA5NzAxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRTUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMENFNSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUU2ICAgKGhleCkJCU1lcnUgTmV0d29ya3MgSW5jCi0wMDBDRTYgICAgIChiYXNlIDE2KQkJTWVydSBOZXR3b3JrcyBJbmMKLQkJCQkxMzA5IFNvdXRoIE1hcnkgQXZlbnVlLAotCQkJCVN1bm55dmFsZSBDQSA5NDA4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRTcgICAoaGV4KQkJTWVkaWFUZWsgSW5jLgotMDAwQ0U3ICAgICAoYmFzZSAxNikJCU1lZGlhVGVrIEluYy4KLQkJCQkxRiwgTm8uIDEzLCBJbm5vdmF0aW9uIFJvYWQgMSwKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtRTggICAoaGV4KQkJR3VhbmdaaG91IEFuSnVCYW8gQ28uLCBMdGQKLTAwMENFOCAgICAgKGJhc2UgMTYpCQlHdWFuZ1pob3UgQW5KdUJhbyBDby4sIEx0ZAotCQkJCUhlaVFpYW9UYW5nIFRhbmdYaWEgVGlhbkhlCi0JCQkJR3VhbmdaaG91IEd1YW5nRG9uZyA1MTA2NjUKLQkJCQlDSElOQQotCi0wMC0wQy1FOSAgIChoZXgpCQlCTE9PTUJFUkcgTC5QLgotMDAwQ0U5ICAgICAoYmFzZSAxNikJCUJMT09NQkVSRyBMLlAuCi0JCQkJNzMxIExleGluZ3RvbiBBdmUKLQkJCQlORVcgWU9SSyBORVcgWU9SSyAxMDAyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRUEgICAoaGV4KQkJYXBob25hIEtvbW11bmlrYXRpb25zc3lzdGVtZQotMDAwQ0VBICAgICAoYmFzZSAxNikJCWFwaG9uYSBLb21tdW5pa2F0aW9uc3N5c3RlbWUKLQkJCQlFbnR3aWNrbHVuZ3MtIHVuZCBWZXJ0cmllYnNnbWJICi0JCQkJRGV1dHNjaHN0cmFzc2UgNAotCQkJCVdpZW4gIDEyMzAKLQkJCQlBVVNUUklBCi0KLTAwLTBDLUVCICAgKGhleCkJCUNOTVAgTmV0d29ya3MsIEluYy4KLTAwMENFQiAgICAgKGJhc2UgMTYpCQlDTk1QIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTI0NSBTLiBXaW5jaGVzdGVyIEJsdmQuCi0JCQkJU3VpdGUgMjA4Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUVDICAgKGhleCkJCVNwZWN0cmFjb20gQ29ycC4KLTAwMENFQyAgICAgKGJhc2UgMTYpCQlTcGVjdHJhY29tIENvcnAuCi0JCQkJOTUgTWV0aG9kaXN0IEhpbGwgRHJpdmUKLQkJCQlTdWl0ZSA1MDAKLQkJCQlSb2NoZXN0ZXIgTlkgMTQ2MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUVEICAgKGhleCkJCVJlYWwgRGlnaXRhbCBNZWRpYQotMDAwQ0VEICAgICAoYmFzZSAxNikJCVJlYWwgRGlnaXRhbCBNZWRpYQotCQkJCTQ4NSBOb3J0aCBLZWxsZXIgUm9hZAotCQkJCVN1aXRlIDE0MAotCQkJCU1haXRsYW5kIEZMIDMyNzUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1FRSAgIChoZXgpCQlqcC1lbWJlZGRlZAotMDAwQ0VFICAgICAoYmFzZSAxNikJCWpwLWVtYmVkZGVkCi0JCQkJQnVlbiAyMSwgTnIuIERhbGJ5Ci0JCQkJQm9ydXAgIDQxNDAKLQkJCQlERU5NQVJLCi0KLTAwLTBDLUVGICAgKGhleCkJCU9wZW4gTmV0d29ya3MgRW5naW5lZXJpbmcgTHRkCi0wMDBDRUYgICAgIChiYXNlIDE2KQkJT3BlbiBOZXR3b3JrcyBFbmdpbmVlcmluZyBMdGQKLQkJCQlDbGFzc2ljIEhvdXNlCi0JCQkJUmF5bmhhbSBSb2FkCi0JCQkJQmlzaG9wJ3MgU3RvcnRmb3JkIEhlcnRmb3Jkc2hpcmUgQ00yMyA1UEQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQy1GMCAgIChoZXgpCQlNICYgTiBHbWJICi0wMDBDRjAgICAgIChiYXNlIDE2KQkJTSAmIE4gR21iSAotCQkJCURpZXNlbHN0ciAxOAotCQkJCVJvc2JhY2ggdi5kLkguIEhlc3NlbiA2MTE5MQotCQkJCUdFUk1BTlkKLQotMDAtMEMtRjEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMENGMSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCU1TOiBKRjMtNDIwCi0JCQkJMjExMSBORSAyNXRoIEF2ZW51ZQotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRjIgICAoaGV4KQkJR0FNRVNBIEVPTElDQQotMDAwQ0YyICAgICAoYmFzZSAxNikJCUdBTUVTQSBFT0xJQ0EKLQkJCQlQb2xpZ29ubyBBZ3VzdGlub3Mgcy9uCi0JCQkJUGFtcGxvbmEgTkFWQVJSQSAzMTAxMwotCQkJCVNQQUlOCi0KLTAwLTBDLUYzICAgKGhleCkJCUNBTEwgSU1BR0UgU0EKLTAwMENGMyAgICAgKGJhc2UgMTYpCQlDQUxMIElNQUdFIFNBCi0JCQkJODY3IFJvdXRlIEltcGVyaWFsZQotCQkJCUJBSUxMQVJHVUVTICAzNDY3MAotCQkJCUZSQU5DRQotCi0wMC0wQy1GNCAgIChoZXgpCQlBS0FUU1VLSSBFTEVDVFJJQyBNRkcuQ08uLExURC4KLTAwMENGNCAgICAgKGJhc2UgMTYpCQlBS0FUU1VLSSBFTEVDVFJJQyBNRkcuQ08uLExURC4KLQkJCQk1OTMtMSxhb2ppLSBjaG8KLQkJCQlrdXNhdHN1LSBzaGkgc2hpZ2EgNTI1LTAwNDEKLQkJCQlKQVBBTgotCi0wMC0wQy1GNSAgIChoZXgpCQlJbmZvRXhwcmVzcwotMDAwQ0Y1ICAgICAoYmFzZSAxNikJCUluZm9FeHByZXNzCi0JCQkJMTcwIFMuIFdoaXNtYW4gUm9hZCwgU3VpdGUgQgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUY2ICAgKGhleCkJCVNpdGVjb20gRXVyb3BlIEJWCi0wMDBDRjYgICAgIChiYXNlIDE2KQkJU2l0ZWNvbSBFdXJvcGUgQlYKLQkJCQlTZXZpbGxhd2VnIDEyMgotCQkJCVJvdHRlcmRhbSBaSCAzMDQ3IEFMCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEMtRjcgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBDRjcgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSZC4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMEMtRjggICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBDRjggICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQkwMzYgQ0MgMTAxCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTBDLUY5ICAgKGhleCkJCUlUVCBGbHlndCBBQgotMDAwQ0Y5ICAgICAoYmFzZSAxNikJCUlUVCBGbHlndCBBQgotCQkJCVBPIEJveCAyMDU4Ci0JCQkJSW5kdXN0cmlnYXRhbiA1MAotCQkJCUtyaXN0aWFuc3RhZCAgMjkxIDAyCi0JCQkJU1dFREVOCi0KLTAwLTBDLUZBICAgKGhleCkJCURpZ2l0YWwgU3lzdGVtcyBDb3JwCi0wMDBDRkEgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBTeXN0ZW1zIENvcnAKLQkJCQkzIE5vcnRoIE1haW4gU3RyZWV0Ci0JCQkJUE8gQm94IDE1OAotCQkJCVdhbGtlcnN2aWxsZSBNYXJ5bGFuZCAyMTc5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRkIgICAoaGV4KQkJS29yZWEgTmV0d29yayBTeXN0ZW1zCi0wMDBDRkIgICAgIChiYXNlIDE2KQkJS29yZWEgTmV0d29yayBTeXN0ZW1zCi0JCQkJMjA2ICBKYW5nWW91bmdTaWwgQmxkZywgMTY4OC01Ci0JCQkJU2hpbmlsLURvbmcsIFRhZWRlb2stR3UKLQkJCQlUYWVqZW9uICAzMDYtMjMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLUZDICAgKGhleCkJCVMyaW8gVGVjaG5vbG9naWVzIENvcnAKLTAwMENGQyAgICAgKGJhc2UgMTYpCQlTMmlvIFRlY2hub2xvZ2llcyBDb3JwCi0JCQkJNTA1IE1hcmNoIFJkCi0JCQkJU3VpdGUgMTIwCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDJNNQotCQkJCUNBTkFEQQotCi0wMC0wQy1GRCAgIChoZXgpCQlIeXVuZGFpIEltYWdlUXVlc3QgQ28uLEx0ZC4KLTAwMENGRCAgICAgKGJhc2UgMTYpCQlIeXVuZGFpIEltYWdlUXVlc3QgQ28uLEx0ZC4KLQkJCQlTYW4gMTM2LTEsIEFtaS1yaSwgQnViYWwtZXViCi0JCQkJSWNob24tc2kgS3lvdW5nIGtpLWRvIDQ2Ny03MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtRkUgICAoaGV4KQkJR3JhbmQgRWxlY3Ryb25pYyBDby4sIEx0ZAotMDAwQ0ZFICAgICAoYmFzZSAxNikJCUdyYW5kIEVsZWN0cm9uaWMgQ28uLCBMdGQKLQkJCQlSb29tIDE3MTAsIEJsb2NrIEIgTHVja3kgdG93ZXIsIE5vLjMgRG9uCi0JCQkJQmVpamluZyAgMTAwMDI3Ci0JCQkJQ0hJTkEKLQotMDAtMEMtRkYgICAoaGV4KQkJTVJPLVRFSyBMSU1JVEVECi0wMDBDRkYgICAgIChiYXNlIDE2KQkJTVJPLVRFSyBMSU1JVEVECi0JCQkJMTQsIDFTVCBEIE1BSU4gUk9BRCwKLQkJCQlHQU5HQSBOQUdBUgotCQkJCUJBTkdBTE9SRSBLQVJOQVRBS0EgNTYwMDMyCi0JCQkJSU5ESUEKLQotMDAtMEQtMDAgICAoaGV4KQkJU2Vhd2F5IE5ldHdvcmtzIEluYy4KLTAwMEQwMCAgICAgKGJhc2UgMTYpCQlTZWF3YXkgTmV0d29ya3MgSW5jLgotCQkJCTEgQ2hyeXNhbGlzIFdheQotCQkJCU90dGF3YSBPbnRhcmlvIEsyRyA2UDkKLQkJCQlDQU5BREEKLQotMDAtMEQtMDEgICAoaGV4KQkJUCZFIE1pY3JvY29tcHV0ZXIgU3lzdGVtcywgSW5jLgotMDAwRDAxICAgICAoYmFzZSAxNikJCVAmRSBNaWNyb2NvbXB1dGVyIFN5c3RlbXMsIEluYy4KLQkJCQk3MTAgQ29tbW9ud2VhbHRoIEF2ZQotCQkJCUJvc3RvbiBNYSAwMjIxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMDIgICAoaGV4KQkJTkVDIEFjY2Vzc1RlY2huaWNhLCBMdGQuCi0wMDBEMDIgICAgIChiYXNlIDE2KQkJTkVDIEFjY2Vzc1RlY2huaWNhLCBMdGQuCi0JCQkJODAwIFNoaW1vbWF0YQotCQkJCUtha2VnYXdhIFNoaXp1b2thIDQzNi04NTAxCi0JCQkJSkFQQU4KLQotMDAtMEQtMDMgICAoaGV4KQkJTWF0cmljcywgSW5jLgotMDAwRDAzICAgICAoYmFzZSAxNikJCU1hdHJpY3MsIEluYy4KLQkJCQk4ODUwIFN0YW5mb3JkIEJsdmQKLQkJCQlTdWl0ZSAzMDAwCi0JCQkJQ29sdW1iaWEgTUQgMjEwNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTA0ICAgKGhleCkJCUZveGJvcm8gRWNrYXJkdCBEZXZlbG9wbWVudCBHbWJICi0wMDBEMDQgICAgIChiYXNlIDE2KQkJRm94Ym9ybyBFY2thcmR0IERldmVsb3BtZW50IEdtYkgKLQkJCQlHbG9ja2Vuc3RyYXNzZSA1MgotCQkJCVN0dXR0Z2FydCBCYWRlbi1XdXJ0dGVtYmVyZyA3MDM3NgotCQkJCUdFUk1BTlkKLQotMDAtMEQtMDUgICAoaGV4KQkJY3liZXJuZXQgbWFudWZhY3R1cmluZyBpbmMuCi0wMDBEMDUgICAgIChiYXNlIDE2KQkJY3liZXJuZXQgbWFudWZhY3R1cmluZyBpbmMuCi0JCQkJNTAwMSBCaXJjaCBTdHJlZXQKLQkJCQlOZXdwb3J0IEJlYWNoIGNhIDkyNjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0wNiAgIChoZXgpCQlDb21wdWxvZ2ljIExpbWl0ZWQKLTAwMEQwNiAgICAgKGJhc2UgMTYpCQlDb21wdWxvZ2ljIExpbWl0ZWQKLQkJCQlVbml0IFczLCBNSyBUV08gQnVzaW5lc3MgQ2VudHJlCi0JCQkJQmFydG9uIFJvYWQKLQkJCQlXYXRlciBFYXRvbiBNaWx0b24gS2V5bmVzIE1LMiAzSFUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC0wNyAgIChoZXgpCQlDYWxyZWMgQXVkaW8gTHRkCi0wMDBEMDcgICAgIChiYXNlIDE2KQkJQ2FscmVjIEF1ZGlvIEx0ZAotCQkJCU51dGNsb3VnaCBNaWxsCi0JCQkJSGViZGVuIEJyaWRnZSBXZXN0IFlvcmtzaGlyZSBIWDcgOEVaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtMDggICAoaGV4KQkJQWJvdmVDYWJsZSwgSW5jLgotMDAwRDA4ICAgICAoYmFzZSAxNikJCUFib3ZlQ2FibGUsIEluYy4KLQkJCQk4NDAzIENvbGVzdmlsbGUgUm9hZCwgIzgyNQotCQkJCVNpbHZlciBTcHJpbmcgTUQgMjA5MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTA5ICAgKGhleCkJCVl1ZWh1YShaaHVoYWkpIEVsZWN0cm9uaWMgQ08uIExURAotMDAwRDA5ICAgICAoYmFzZSAxNikJCVl1ZWh1YShaaHVoYWkpIEVsZWN0cm9uaWMgQ08uIExURAotCQkJCTRSZCBQaW5nZG9uZyxOYW5waW5nIFNjaWVuY2UgJiBUZWNobm9sb2cKLQkJCQlaaHVoYWkgR3Vhbmdkb25nIDUxOTA3MAotCQkJCUNISU5BCi0KLTAwLTBELTBBICAgKGhleCkJCVByb2plY3Rpb25kZXNpZ24gYXMKLTAwMEQwQSAgICAgKGJhc2UgMTYpCQlQcm9qZWN0aW9uZGVzaWduIGFzCi0JCQkJSGFib3JudmVpZW4gNTMKLQkJCQlHYW1sZSBGcmVkcmlrc3RhZCBOLTE2MzAKLQkJCQlOT1JXQVkKLQotMDAtMEQtMEIgICAoaGV4KQkJQnVmZmFsbyBJbmMuCi0wMDBEMEIgICAgIChiYXNlIDE2KQkJQnVmZmFsbyBJbmMuCi0JCQkJTUVMQ08gSEktVEVDSCBDRU5URVIsCi0JCQkJU0hJQkFUQSBIT05ET1JJIDQtMTUgTUlOQU1JLUtVLAotCQkJCU5BR09ZQSAgNDU3LTg1MjAKLQkJCQlKQVBBTgotCi0wMC0wRC0wQyAgIChoZXgpCQlNREkgU2VjdXJpdHkgU3lzdGVtcwotMDAwRDBDICAgICAoYmFzZSAxNikJCU1ESSBTZWN1cml0eSBTeXN0ZW1zCi0JCQkJOTUxOCBOaW50aCBTdHJlZXQKLQkJCQlSYW5jaG8gQ3VjYW1vbmdhIENBIDkxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0wRCAgIChoZXgpCQlJVFN1cHBvcnRlZCwgTExDCi0wMDBEMEQgICAgIChiYXNlIDE2KQkJSVRTdXBwb3J0ZWQsIExMQwotCQkJCTQ5ODkgUGVhY2h0cmVlIFBhcmt3YXkKLQkJCQlTVEUgMjAwCi0JCQkJTm9yY3Jvc3MgR0EgMzAwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTBFICAgKGhleCkJCUlucW5ldCBTeXN0ZW1zLCBJbmMuCi0wMDBEMEUgICAgIChiYXNlIDE2KQkJSW5xbmV0IFN5c3RlbXMsIEluYy4KLQkJCQkzMjEgTktJQyBDZW50ZXIKLQkJCQk0OC04NCBIb25nZXVuLWRvbmcsIFNlb2RhZW11bi1rdQotCQkJCVNlb3VsICAxMjAtMTAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELTBGICAgKGhleCkJCUZpbmx1eCBMdGQKLTAwMEQwRiAgICAgKGJhc2UgMTYpCQlGaW5sdXggTHRkCi0JCQkJUmFkaW9taWVoZW5rYXR1IDMKLQkJCQlUdXJrdSAgRklOLTIwMzIxCi0JCQkJRklOTEFORAotCi0wMC0wRC0xMCAgIChoZXgpCQlFbWJlZHRyb25pY3MgT3kKLTAwMEQxMCAgICAgKGJhc2UgMTYpCQlFbWJlZHRyb25pY3MgT3kKLQkJCQlVbmthcmlucG9sa3UgMjAKLQkJCQlLdW9waW8gIDcwODIwCi0JCQkJRklOTEFORAotCi0wMC0wRC0xMSAgIChoZXgpCQlERU5UU1BMWSAtIEdlbmRleAotMDAwRDExICAgICAoYmFzZSAxNikJCURFTlRTUExZIC0gR2VuZGV4Ci0JCQkJOTAxIFdlc3QgT2FrdG9uIFN0cmVldAotCQkJCURlcyBQbGFpbmVzIElMIDYwMDE4LTE4ODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTEyICAgKGhleCkJCUFYRUxMIENvcnBvcmF0aW9uCi0wMDBEMTIgICAgIChiYXNlIDE2KQkJQVhFTEwgQ29ycG9yYXRpb24KLQkJCQlBa2loYWJhcmEgVURYIFNvdXRoIFdpbmcgMTBGCi0JCQkJNC0xNC0xIFNvdG9rYW5kYQotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTg5NzMKLQkJCQlKQVBBTgotCi0wMC0wRC0xMyAgIChoZXgpCQlXaWxoZWxtIFJ1dGVuYmVjayBHbWJIJkNvLgotMDAwRDEzICAgICAoYmFzZSAxNikJCVdpbGhlbG0gUnV0ZW5iZWNrIEdtYkgmQ28uCi0JCQkJTmllZGVyd29ydGggMS0xMAotCQkJCVNjaGFsa3NtdWhsZSBOUlcgNTg1NzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTE0ICAgKGhleCkJCVZ0ZWNoIElubm92YXRpb24gTFAgZGJhIEFkdmFuY2VkIEFtZXJpY2FuIFRlbGVwaG9uZXMKLTAwMEQxNCAgICAgKGJhc2UgMTYpCQlWdGVjaCBJbm5vdmF0aW9uIExQIGRiYSBBZHZhbmNlZCBBbWVyaWNhbiBUZWxlcGhvbmVzCi0JCQkJMjAzLTYwMCBQYXJzaXBwYW55IFJkCi0JCQkJUGFyc2lwcGFueSBOSiAwNzA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMTUgICAoaGV4KQkJVm9pcGFjIHMuci5vLgotMDAwRDE1ICAgICAoYmFzZSAxNikJCVZvaXBhYyBzLnIuby4KLQkJCQlVbC4gSmFua2EgS3JhbGEgMwotCQkJCVRyZW5jaW4gIDkxMSAwMQotCQkJCVNMT1ZBS0lBCi0KLTAwLTBELTE2ICAgKGhleCkJCVVIUyBTeXN0ZW1zIFB0eSBMdGQKLTAwMEQxNiAgICAgKGJhc2UgMTYpCQlVSFMgU3lzdGVtcyBQdHkgTHRkCi0JCQkJUE8gQm94IDYyNjQKLQkJCQlTb3V0aCBTeWRuZXkgQnVzaW5lc3MgSHViCi0JCQkJQWxleGFuZHJpYSBOU1cgMjAxNQotCQkJCUFVU1RSQUxJQQotCi0wMC0wRC0xNyAgIChoZXgpCQlUdXJibyBOZXR3b3JrcyBDby5MdGQKLTAwMEQxNyAgICAgKGJhc2UgMTYpCQlUdXJibyBOZXR3b3JrcyBDby5MdGQKLQkJCQkyRixObyAxMjIzLCBDaHVuZyBDaGVuZyBSZC4KLQkJCQlUYW8gWXVhbiAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0xOCAgIChoZXgpCQlNZWdhLVRyZW5kIEVsZWN0cm9uaWNzIENPLiwgTFRELgotMDAwRDE4ICAgICAoYmFzZSAxNikJCU1lZ2EtVHJlbmQgRWxlY3Ryb25pY3MgQ08uLCBMVEQuCi0JCQkJVG9uZyBGdSBZdSBJbmQuLCBLdSBLZW5nIFZpbGxhZ2UsIEd1YW4gTGFuCi0JCQkJU2hlbmd6aGVuIEd1YW5nIERvbmcgNTE4MTEwCi0JCQkJQ0hJTkEKLQotMDAtMEQtMTkgICAoaGV4KQkJUk9CRSBTaG93IGxpZ2h0aW5nCi0wMDBEMTkgICAgIChiYXNlIDE2KQkJUk9CRSBTaG93IGxpZ2h0aW5nCi0JCQkJSGF6b3ZpY2UgMjA5MAotCQkJCVJvem5vdiBwb2QgUmFkaG9zdGVtICA3NTYgNjEKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0wRC0xQSAgIChoZXgpCQlNdXN0ZWsgU3lzdGVtIEluYy4KLTAwMEQxQSAgICAgKGJhc2UgMTYpCQlNdXN0ZWsgU3lzdGVtIEluYy4KLQkJCQlOby4gMjUsIFImRCBSb2FkLCBTY2llbmNlLUJhc2VkIEluZHVzdHJpCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtMUIgICAoaGV4KQkJS3lvdG8gRWxlY3Ryb25pY3MgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLTAwMEQxQiAgICAgKGJhc2UgMTYpCQlLeW90byBFbGVjdHJvbmljcyBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTU2LTIsIE5pbm9kYW4tY2hvLCBTaGluZGVuLAotCQkJCUtpc3Nob2luLCBNaW5hbWkta3UsCi0JCQkJS3lvdG8tQ2l0eSBLeW90byBQcmVmZWN0dXJlIDYwMS04MzE3Ci0JCQkJSkFQQU4KLQotMDAtMEQtMUMgICAoaGV4KQkJQW1lc3lzIERlZmVuc2UKLTAwMEQxQyAgICAgKGJhc2UgMTYpCQlBbWVzeXMgRGVmZW5zZQotCQkJCTEwMzAgQXYgZGUgbGEgTEFVWklFUkUKLQkJCQlaQUMgZGUgUGljaGF1cnkgSUkgTGVzIE1pbGxlcyBCUCAyMCAxNDAKLQkJCQlBSVggZW4gUFJPVkVOQ0UgQ2VkZXggMDMgMTM3OTQKLQkJCQlGUkFOQ0UKLQotMDAtMEQtMUQgICAoaGV4KQkJSElHSC1URUsgSEFSTkVTUyBFTlQuIENPLiwgTFRELgotMDAwRDFEICAgICAoYmFzZSAxNikJCUhJR0gtVEVLIEhBUk5FU1MgRU5ULiBDTy4sIExURC4KLQkJCQk0Ri02LCBObzE4LCBQdS1UaW5nIFJkLiBIc2luY2h1LCBUYWl3YW4KLQkJCQk0RiwgTm8xNiwgTGFuZTUwLCBTZWMzLCBOYW4tS2FuZyBSZCwgTmFuCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0xRSAgIChoZXgpCQlDb250cm9sIFRlY2huaXF1ZXMKLTAwMEQxRSAgICAgKGJhc2UgMTYpCQlDb250cm9sIFRlY2huaXF1ZXMKLQkJCQlUaGUgR3JvCi0JCQkJUG9vbCBSb2FkCi0JCQkJTmV3dG93biBQb3d5cyBTWTE2IDNCRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTFGICAgKGhleCkJCUFWIERpZ2l0YWwKLTAwMEQxRiAgICAgKGJhc2UgMTYpCQlBViBEaWdpdGFsCi0JCQkJUG90dGVuZG9yZmVyIFN0cmFzc2UgMjUtMjcvNC8xLzEKLQkJCQlXaWVuICAxMTIwCi0JCQkJQVVTVFJJQQotCi0wMC0wRC0yMCAgIChoZXgpCQlBU0FISUtBU0VJIFRFQ0hOT1NZU1RFTSBDTy4sTFRELgotMDAwRDIwICAgICAoYmFzZSAxNikJCUFTQUhJS0FTRUkgVEVDSE5PU1lTVEVNIENPLixMVEQuCi0JCQkJS2FuZGEgSmluYm9jaG8gMS0xMDUKLQkJCQkyMy03LE5pc2hpc2hpbmp1a3UgMS1jaG9tZQotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTgxMDEKLQkJCQlKQVBBTgotCi0wMC0wRC0yMSAgIChoZXgpCQlXSVNDT1JFIEluYy4KLTAwMEQyMSAgICAgKGJhc2UgMTYpCQlXSVNDT1JFIEluYy4KLQkJCQk2RiwgTm8uIDE4MCwgU2VjLiAyLCBEdWVuaHVhIFMuIFJkLAotCQkJCVRhaXBlaSAgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0yMiAgIChoZXgpCQlVbml0cm9uaWNzIExURAotMDAwRDIyICAgICAoYmFzZSAxNikJCVVuaXRyb25pY3MgTFRECi0JCQkJVW5pdHJvbmljcyBCdWlsZGluZwotCQkJCUFpcnBvcnQgQ2l0eSwgUC5PLkIgMzAwCi0JCQkJQmVuIEd1cmlvbiBBaXJwb3J0ICA3MDEwMAotCQkJCUlTUkFFTAotCi0wMC0wRC0yMyAgIChoZXgpCQlTbWFydCBTb2x1dGlvbiwgSW5jCi0wMDBEMjMgICAgIChiYXNlIDE2KQkJU21hcnQgU29sdXRpb24sIEluYwotCQkJCTQ2NSBXZXN0IExhd25kYWxlICNCCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTI0ICAgKGhleCkJCVNFTlRFQyBFJkUgQ08uLCBMVEQuCi0wMDBEMjQgICAgIChiYXNlIDE2KQkJU0VOVEVDIEUmRSBDTy4sIExURC4KLQkJCQlOby4gMzIuIEdvbmc1IFJkLgotCQkJCUx1bmd0YW4gVGFveXVhbiAzMjUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTI1ICAgKGhleCkJCVNBTkRFTiBDT1JQT1JBVElPTgotMDAwRDI1ICAgICAoYmFzZSAxNikJCVNBTkRFTiBDT1JQT1JBVElPTgotCQkJCTIwIEtvdG9idWtpLWNobwotCQkJCUlzZXNha2ktc2hpIEd1bm1hIDM3Mi04NTAyCi0JCQkJSkFQQU4KLQotMDAtMEQtMjYgICAoaGV4KQkJUHJpbWFncmFwaGljcyBMaW1pdGVkCi0wMDBEMjYgICAgIChiYXNlIDE2KQkJUHJpbWFncmFwaGljcyBMaW1pdGVkCi0JCQkJQ2FtYnJpZGdlIEhvdXNlLCBOby4yIEZvY3VzIEZvdXIKLQkJCQlGb3VydGggQXZlbnVlCi0JCQkJTGV0Y2h3b3J0aCBHYXJkZW4gQ2l0eSBIZXJ0Zm9yZHNoaXJlIFNHNiAyVFUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC0yNyAgIChoZXgpCQlNSUNST1BMRVggUHJpbnR3YXJlIEFHCi0wMDBEMjcgICAgIChiYXNlIDE2KQkJTUlDUk9QTEVYIFByaW50d2FyZSBBRwotCQkJCVBhbnplcnN0cmFzc2UgNQotCQkJCVZhcmVsIE5pZWRlcnNhY2hzZW4gMjYzMTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTI4ICAgKGhleCkJCUNpc2NvCi0wMDBEMjggICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMjkgICAoaGV4KQkJQ2lzY28KLTAwMEQyOSAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0yQSAgIChoZXgpCQlTY2FubWF0aWMgQVMKLTAwMEQyQSAgICAgKGJhc2UgMTYpCQlTY2FubWF0aWMgQVMKLQkJCQlLaWxzdW5kCi0JCQkJU3RhdWI/ICA0OTIwCi0JCQkJTk9SV0FZCi0KLTAwLTBELTJCICAgKGhleCkJCVJhY2FsIEluc3RydW1lbnRzCi0wMDBEMkIgICAgIChiYXNlIDE2KQkJUmFjYWwgSW5zdHJ1bWVudHMKLQkJCQk0IEdvb2R5ZWFyIFN0cmVldAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMkMgICAoaGV4KQkJUGF0YXBzY28gRGVzaWducyBMdGQKLTAwMEQyQyAgICAgKGJhc2UgMTYpCQlQYXRhcHNjbyBEZXNpZ25zIEx0ZAotCQkJCVRoZSBQYXNzZmllbGQgT2FrCi0JCQkJUGFzc2ZpZWxkCi0JCQkJTnIgTGlwaG9vayBIYW1wc2hpcmUgR1UzMCA3UkwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC0yRCAgIChoZXgpCQlOQ1QgRGV1dHNjaGxhbmQgR21iSAotMDAwRDJEICAgICAoYmFzZSAxNikJCU5DVCBEZXV0c2NobGFuZCBHbWJICi0JCQkJV2lsZGVuYnJ1Y2hzdHIuIDE1Ci0JCQkJSmVuYSBUaHVyaW5nZW4gMDc3NDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTJFICAgKGhleCkJCU1hdHN1c2hpdGEgQXZpb25pY3MgU3lzdGVtcyBDb3Jwb3JhdGlvbgotMDAwRDJFICAgICAoYmFzZSAxNikJCU1hdHN1c2hpdGEgQXZpb25pY3MgU3lzdGVtcyBDb3Jwb3JhdGlvbgotCQkJCTI2MjAwIEVudGVycHJpc2UgV2F5Ci0JCQkJTGFrZSBGb3Jlc3QgQ0EgOTI2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTJGICAgKGhleCkJCUFJTiBDb21tLlRlY2guQ28uLCBMVEQKLTAwMEQyRiAgICAgKGJhc2UgMTYpCQlBSU4gQ29tbS5UZWNoLkNvLiwgTFRECi0JCQkJNEYsIE5vLjc2LCBTZWMyIE1pbnR6dSBSZAotCQkJCUp1bmctTGkgQ2l0eSAgMzIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0zMCAgIChoZXgpCQlJY2VGeXJlIFNlbWljb25kdWN0b3IKLTAwMEQzMCAgICAgKGJhc2UgMTYpCQlJY2VGeXJlIFNlbWljb25kdWN0b3IKLQkJCQlTdWl0ZSAzMDAKLQkJCQk0MTEgTGVnZ2V0dCBEcml2ZQotCQkJCUthbmF0YSBPbnRhcmlvIEsySyAzQzkKLQkJCQlDQU5BREEKLQotMDAtMEQtMzEgICAoaGV4KQkJQ29tcGVsbGVudCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEQzMSAgICAgKGJhc2UgMTYpCQlDb21wZWxsZW50IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTc2MjUgU21ldGFuYSBMYW5lCi0JCQkJRWRlbiBQcmFpcmllIE1pbm5lc290YSA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMzIgICAoaGV4KQkJRGlzcGVuc2VTb3VyY2UsIEluYy4KLTAwMEQzMiAgICAgKGJhc2UgMTYpCQlEaXNwZW5zZVNvdXJjZSwgSW5jLgotCQkJCTI5ODAxIFNhbnRhIE1hcmdhcml0YSBQYXJrd2F5Ci0JCQkJUmFuY2hvIFNhbnRhIE1hcmdhcml0YSBDQSA5MjY4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMzMgICAoaGV4KQkJUHJlZGl3YXZlIENvcnAuCi0wMDBEMzMgICAgIChiYXNlIDE2KQkJUHJlZGl3YXZlIENvcnAuCi0JCQkJNDg0MzEgTWlsbW9udCBEcml2ZQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTM0ICAgKGhleCkJCVNoZWxsIEludGVybmF0aW9uYWwgRXhwbG9yYXRpb24gYW5kIFByb2R1Y3Rpb24sIEluYy4KLTAwMEQzNCAgICAgKGJhc2UgMTYpCQlTaGVsbCBJbnRlcm5hdGlvbmFsIEV4cGxvcmF0aW9uIGFuZCBQcm9kdWN0aW9uLCBJbmMuCi0JCQkJQlRDLUdhc21lcgotCQkJCVBPIEJveCA0ODEKLQkJCQlIb3VzdG9uIFRYIDc3MDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0zNSAgIChoZXgpCQlQQUMgSW50ZXJuYXRpb25hbCBMdGQKLTAwMEQzNSAgICAgKGJhc2UgMTYpCQlQQUMgSW50ZXJuYXRpb25hbCBMdGQKLQkJCQkxIFBhcmsgR2F0ZSBDbG9zZQotCQkJCUJyZWRidXJ5Ci0JCQkJU3RvY2twb3J0IENoZXNoaXJlIFNLNiAyU1oKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC0zNiAgIChoZXgpCQlXdSBIYW4gUm91dG9uIEVsZWN0cm9uaWMgQ28uLCBMdGQKLTAwMEQzNiAgICAgKGJhc2UgMTYpCQlXdSBIYW4gUm91dG9uIEVsZWN0cm9uaWMgQ28uLCBMdGQKLQkJCQlNaWFvIFNoYW4gRGlzdHJpY3QsIEVhc3QgTGFrZSBIaS1UZWNoCi0JCQkJRGV2ZWxvcG1lbnQgUGFyawotCQkJCVd1aGFuIEh1YmVpIDQzMDIyMwotCQkJCUNISU5BCi0KLTAwLTBELTM3ICAgKGhleCkJCVdJUExVRwotMDAwRDM3ICAgICAoYmFzZSAxNikJCVdJUExVRwotCQkJCVJVQSAgRFIuIEFHT1NUSU5ITyBHT1VMQU8KLQkJCQlCQUlSUk86IENPUlJFQVMKLQkJCQlQRVRST1BPTElTIFJJTyBKQU5FSVJPIDI1NzMwMDUwCi0JCQkJQlJBWklMCi0KLTAwLTBELTM4ICAgKGhleCkJCU5JU1NJTiBJTkMuCi0wMDBEMzggICAgIChiYXNlIDE2KQkJTklTU0lOIElOQy4KLQkJCQkxMC03IEtBTUVJLUNITwotCQkJCVRBS0FSQVpVS0EgSFlPR08gNjY1LTAwNDcKLQkJCQlKQVBBTgotCi0wMC0wRC0zOSAgIChoZXgpCQlOZXR3b3JrIEVsZWN0cm9uaWNzCi0wMDBEMzkgICAgIChiYXNlIDE2KQkJTmV0d29yayBFbGVjdHJvbmljcwotCQkJCUJveCAxMDIwCi0JCQkJU2FuZGVmam9yZCBTYW5kZWZqb3JkIE4zMjA0Ci0JCQkJTk9SV0FZCi0KLTAwLTBELTNBICAgKGhleCkJCU1pY3Jvc29mdCBDb3JwLgotMDAwRDNBICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBDb3JwLgotCQkJCU9uZSBNaWNyb3NvZnQgV2F5Ci0JCQkJUmVkbW9uZCBXYS4gOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTNCICAgKGhleCkJCU1pY3JvZWxlY3Ryb25pY3MgVGVjaG5vbG9neSBJbmMuCi0wMDBEM0IgICAgIChiYXNlIDE2KQkJTWljcm9lbGVjdHJvbmljcyBUZWNobm9sb2d5IEluYy4KLQkJCQlObzEsIElubm92YXRpb24gUm9hZCBJSQotCQkJCUhzaW5jaHUgU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQkzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTNDICAgKGhleCkJCWkuVGVjaCBEeW5hbWljIEx0ZAotMDAwRDNDICAgICAoYmFzZSAxNikJCWkuVGVjaCBEeW5hbWljIEx0ZAotCQkJCVJvb20gMTExMiwgTWV0cm9wbGF6YSBUb3dlciAyLCAyMjMgSGluZwotCQkJCTg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0wRC0zRCAgIChoZXgpCQlIYW1tZXJoZWFkIFN5c3RlbXMsIEluYy4KLTAwMEQzRCAgICAgKGJhc2UgMTYpCQlIYW1tZXJoZWFkIFN5c3RlbXMsIEluYy4KLQkJCQk2NDAgQ2x5ZGUgQ291cnQKLQkJCQlNb3VudGFpbiBWaWV3IENhbGlmb3JuaWEgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTNFICAgKGhleCkJCUFQTFVYIENvbW11bmljYXRpb25zIEx0ZC4KLTAwMEQzRSAgICAgKGJhc2UgMTYpCQlBUExVWCBDb21tdW5pY2F0aW9ucyBMdGQuCi0JCQkJMTBGLCBOby4gMTY2LCBEYWgtWWVoIFJkLiwgUGVpdG91Ci0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTNGICAgKGhleCkJCVZUSSBJbnN0cnVtZW50cyBDb3Jwb3JhdGlvbgotMDAwRDNGICAgICAoYmFzZSAxNikJCVZUSSBJbnN0cnVtZW50cyBDb3Jwb3JhdGlvbgotCQkJCTU0MjUgV2FybmVyIFJvYWQsIFN1aXRlIDEzCi0JCQkJVmFsbGV5IFZpZXcgT0ggNDQxMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTQwICAgKGhleCkJCVZlcmludCBMb3Jvbml4IFZpZGVvIFNvbHV0aW9ucwotMDAwRDQwICAgICAoYmFzZSAxNikJCVZlcmludCBMb3Jvbml4IFZpZGVvIFNvbHV0aW9ucwotCQkJCTEyNTI2IEhpZ2ggQmx1ZmYgRHIuICMxNzAKLQkJCQlTYW4gREllZ28gQ0EgOTIxMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTQxICAgKGhleCkJCVNpZW1lbnMgQUcgSUNNIE1QIFVDIFJEIElUIEtMRjEKLTAwMEQ0MSAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHIElDTSBNUCBVQyBSRCBJVCBLTEYxCi0JCQkJU3VlZHN0cmFzc2UgOQotCQkJCUthbXAtTGludGZvcnQgTlJXIDQ3NDc1Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC00MiAgIChoZXgpCQlOZXdiZXN0IERldmVsb3BtZW50IExpbWl0ZWQKLTAwMEQ0MiAgICAgKGJhc2UgMTYpCQlOZXdiZXN0IERldmVsb3BtZW50IExpbWl0ZWQKLQkJCQkzL0YgIFVuaXQgMzExLTMxMgotCQkJCU5vLjEgU2NpZW5jZSBQYXJrIEVhc3QgQXZlbnVlCi0JCQkJU2hhdGluICBOVCAKLQkJCQlIT05HIEtPTkcKLQotMDAtMEQtNDMgICAoaGV4KQkJRFJTIFRhY3RpY2FsIFN5c3RlbXMgSW5jLgotMDAwRDQzICAgICAoYmFzZSAxNikJCURSUyBUYWN0aWNhbCBTeXN0ZW1zIEluYy4KLQkJCQkzNTIwIFUuUy4gSGlnaHdheSAxCi0JCQkJUGFsbSBCYXkgRkwgMzI5MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTQ0ICAgKGhleCkJCUF1ZGlvIEJVIC0gTG9naXRlY2gKLTAwMEQ0NCAgICAgKGJhc2UgMTYpCQlBdWRpbyBCVSAtIExvZ2l0ZWNoCi0JCQkJMTQ5OSBTRSBUZWNoIENlbnRlciBQbGFjZQotCQkJCVN1aXRlIDM1MAotCQkJCVZhbmNvdXZlciBXQSA5ODY4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNDUgICAoaGV4KQkJVG90dG9yaSBTQU5ZTyBFbGVjdHJpYyBDby4sIEx0ZC4KLTAwMEQ0NSAgICAgKGJhc2UgMTYpCQlUb3R0b3JpIFNBTllPIEVsZWN0cmljIENvLiwgTHRkLgotCQkJCTMtMjAxLCBNaW5hbWkgWW9zaGlrYXRhCi0JCQkJVG90dG9yaSBDaXR5IFRvdHRvcmkgNjgwLTg2MzQKLQkJCQlKQVBBTgotCi0wMC0wRC00NiAgIChoZXgpCQlQYXJrZXIgU1NEIERyaXZlcwotMDAwRDQ2ICAgICAoYmFzZSAxNikJCVBhcmtlciBTU0QgRHJpdmVzCi0JCQkJOTIyNSBGb3JzeXRoIFBhcmsgRHJpdmUKLQkJCQlDaGFybG90dGUgTkMgMjgyNzMtMzg4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNDcgICAoaGV4KQkJQ29sbGV4Ci0wMDBENDcgICAgIChiYXNlIDE2KQkJQ29sbGV4Ci0JCQkJMTNGLTMsTm8uMTQyLFNlYy4xLEh1YW1laSBXLFN0LixTaGkgQ2hpdQotCQkJCVRhaWNodW5nICA0MDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTQ4ICAgKGhleCkJCUFFV0lOIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMEQ0OCAgICAgKGJhc2UgMTYpCQlBRVdJTiBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJN0YsIE5vLiAyLCBMYW5lIDQ3LCBTZWMuIDMsIE5hbi1HYW5nIFJkLgotCQkJCVRBSVBFSSAgMTE1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC00OSAgIChoZXgpCQlUcml0b24gU3lzdGVtcyBvZiBEZWxhd2FyZSwgSW5jLgotMDAwRDQ5ICAgICAoYmFzZSAxNikJCVRyaXRvbiBTeXN0ZW1zIG9mIERlbGF3YXJlLCBJbmMuCi0JCQkJNTIyIEUuIFJhaWxyb2FkIFN0LgotCQkJCUxvbmcgQmVhY2ggTVMgMzk1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTRBICAgKGhleCkJCVN0ZWFnIEVUQS1PcHRpawotMDAwRDRBICAgICAoYmFzZSAxNikJCVN0ZWFnIEVUQS1PcHRpawotCQkJCUJvcnNpZ3N0cmFzc2UgNzguLTgwCi0JCQkJSGVpbnNiZXJnICA1MjUyNQotCQkJCUdFUk1BTlkKLQotMDAtMEQtNEIgICAoaGV4KQkJUm9rdSwgTExDCi0wMDBENEIgICAgIChiYXNlIDE2KQkJUm9rdSwgTExDCi0JCQkJMzk5IFNoZXJtYW4gQXZlLiAjMTIKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTRDICAgKGhleCkJCU91dGxpbmUgRWxlY3Ryb25pY3MgTHRkLgotMDAwRDRDICAgICAoYmFzZSAxNikJCU91dGxpbmUgRWxlY3Ryb25pY3MgTHRkLgotCQkJCTcvRiBCZW5zb24gVG93ZXIKLQkJCQk3NCBIdW5nIFRvIFJvYWQKLQkJCQlLd3VuIFRvbmcgS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMEQtNEQgICAoaGV4KQkJTmluZWxhbmVzCi0wMDBENEQgICAgIChiYXNlIDE2KQkJTmluZWxhbmVzCi0JCQkJIzQwNSA0RiBEaXBsb21hdGljIENlbnRlcgotCQkJCVNlb2Noby1ndSwgU2VvY2hvLWRvbmcKLQkJCQlTZW91bCAgMTM3Ni0xCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELTRFICAgKGhleCkJCU5EUiBDby4sTFRELgotMDAwRDRFICAgICAoYmFzZSAxNikJCU5EUiBDby4sTFRELgotCQkJCVN1bWl0b21vIHNlaW1laSBtaW5hdG9tYWNoaSBNVCBCTERHCi0JCQkJMS0xOC0yIE1pbmFtaWhvcmllIE5pc2hpLWt1Ci0JCQkJT3NhayBLaW5raSA1NTAtMDAxNQotCQkJCUpBUEFOCi0KLTAwLTBELTRGICAgKGhleCkJCUtlbndvb2QgQ29ycG9yYXRpb24KLTAwMEQ0RiAgICAgKGJhc2UgMTYpCQlLZW53b29kIENvcnBvcmF0aW9uCi0JCQkJMjk2Ny0zLCBJc2hpa2F3YS1tYWNoaQotCQkJCUhhY2hpb2ppLXNoaSBUb2t5byAxOTItODUyNQotCQkJCUpBUEFOCi0KLTAwLTBELTUwICAgKGhleCkJCUdhbGF6YXIgTmV0d29ya3MKLTAwMEQ1MCAgICAgKGJhc2UgMTYpCQlHYWxhemFyIE5ldHdvcmtzCi0JCQkJMzUgRml0emdlcmFsZCBBdmUKLQkJCQlPdHRhd2EgT04gSzJIIDFFNgotCQkJCUNBTkFEQQotCi0wMC0wRC01MSAgIChoZXgpCQlESVZSIFN5c3RlbXMsIEluYy4KLTAwMEQ1MSAgICAgKGJhc2UgMTYpCQlESVZSIFN5c3RlbXMsIEluYy4KLQkJCQkyMTYxIFNhdHVybiBDdC4KLQkJCQlCYWtlcnNmaWVsZCBDQSA5MzMwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNTIgICAoaGV4KQkJQ29tYXJ0IHN5c3RlbQotMDAwRDUyICAgICAoYmFzZSAxNikJCUNvbWFydCBzeXN0ZW0KLQkJCQlOby4gMjExLCBBY2UgVGVjaG5vIFRvd2VyIElJSSwgMTk3LTQ4Ci0JCQkJR3Utcm8gRG9uZywgR3Utcm8gR3UsIFNlb3VsLCBLb3JlYQotCQkJCVNlb3VsICAxNTItMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELTUzICAgKGhleCkJCUJlaWppbmcgNXcgQ29tbXVuaWNhdGlvbiBDb3JwLgotMDAwRDUzICAgICAoYmFzZSAxNikJCUJlaWppbmcgNXcgQ29tbXVuaWNhdGlvbiBDb3JwLgotCQkJCU5PLjQsWmhvbmctR3Vhbi1DdW4gU291dGggNCBzdHJlZXQsCi0JCQkJQmVpamluZyAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMEQtNTQgICAoaGV4KQkJM0NvbSBMdGQKLTAwMEQ1NCAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cyBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtNTUgICAoaGV4KQkJU0FOWUNPTSBUZWNobm9sb2d5IENvLixMdGQKLTAwMEQ1NSAgICAgKGJhc2UgMTYpCQlTQU5ZQ09NIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTZGLEJlaWppbmcgQ2FwaXRhbCBUaW1lcyBTcXVhcmUsODgjIFhpY2gKLQkJCQlCZWlqaW5nICAxMDAwMzEKLQkJCQlDSElOQQotCi0wMC0wRC01NiAgIChoZXgpCQlEZWxsIFBDQkEgVGVzdAotMDAwRDU2ICAgICAoYmFzZSAxNikJCURlbGwgUENCQSBUZXN0Ci0JCQkJT25lIERlbGwgV2F5Ci0JCQkJUlI1IE1TLTg1NDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC01NyAgIChoZXgpCQlGdWppdHN1IEktTmV0d29yayBTeXN0ZW1zIExpbWl0ZWQuCi0wMDBENTcgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBJLU5ldHdvcmsgU3lzdGVtcyBMaW1pdGVkLgotCQkJCTEtNDAzIGtvc3VnaS1jaG8gbmFrYWhhcmEta3UKLQkJCQlrYXdhc2FraSBrYW5hZ2F3YSAyMTEtMDA2MwotCQkJCUpBUEFOCi0KLTAwLTBELTU4ICAgKGhleCkJCVBSSVZBVEUKLTAwMEQ1OCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEQtNTkgICAoaGV4KQkJQW1pdHkgU3lzdGVtcywgSW5jLgotMDAwRDU5ICAgICAoYmFzZSAxNikJCUFtaXR5IFN5c3RlbXMsIEluYy4KLQkJCQk4ODggVGFzbWFuIERyaXZlCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTVBICAgKGhleCkJCVRpZXNzZSBTcEEKLTAwMEQ1QSAgICAgKGJhc2UgMTYpCQlUaWVzc2UgU3BBCi0JCQkJVmlhIEFzdGkKLQkJCQlab25hIEluZHVzdHJpYWwgU2FuIEJlcm5hcmRvCi0JCQkJSXZyZWEgVE8gMTAwMTUKLQkJCQlJVEFMWQotCi0wMC0wRC01QiAgIChoZXgpCQlTbWFydCBFbXBpcmUgSW52ZXN0bWVudHMgTGltaXRlZAotMDAwRDVCICAgICAoYmFzZSAxNikJCVNtYXJ0IEVtcGlyZSBJbnZlc3RtZW50cyBMaW1pdGVkCi0JCQkJU3VpdGUgMjAwMS0yMDA2LExldmVsIDIwIExhbmRtYXJrIE5vcnRoCi0JCQkJWGluIEppZSBIb25nIEtvbmcgMDA4NTIKLQkJCQlDSElOQQotCi0wMC0wRC01QyAgIChoZXgpCQlSb2JlcnQgQm9zY2ggR21iSCwgVlQtQVRNTwotMDAwRDVDICAgICAoYmFzZSAxNikJCVJvYmVydCBCb3NjaCBHbWJILCBWVC1BVE1PCi0JCQkJV2VybmVyc3RyYXNzZSA1MQotCQkJCVN0dXR0Z2FydCBCVyA3MDQ2OQotCQkJCUdFUk1BTlkKLQotMDAtMEQtNUQgICAoaGV4KQkJUmFyaXRhbiBDb21wdXRlciwgSW5jCi0wMDBENUQgICAgIChiYXNlIDE2KQkJUmFyaXRhbiBDb21wdXRlciwgSW5jCi0JCQkJNDAwIENvdHRvbnRhaWwgTGFuZQotCQkJCVNvbWVyc2V0IE5KIDA4ODczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC01RSAgIChoZXgpCQlORUMgUGVyc29uYWwgUHJvZHVjdHMKLTAwMEQ1RSAgICAgKGJhc2UgMTYpCQlORUMgUGVyc29uYWwgUHJvZHVjdHMKLQkJCQk2LTgwLCBTaGltb2hhbmF6YXdhIDItQ2hvbWUKLQkJCQlZb25lemF3YS1zaGkgWWFtYWdhdGEgOTkyLTg1MjAKLQkJCQlKQVBBTgotCi0wMC0wRC01RiAgIChoZXgpCQlNaW5kcyBJbmMKLTAwMEQ1RiAgICAgKGJhc2UgMTYpCQlNaW5kcyBJbmMKLQkJCQkxOTE5IGJvdWwgbGlvbmVsIGJlcnRyYW5kCi0JCQkJIzIwMgotCQkJCUJvaXNicmlhbmQgUXVlYmVjIEo3SCAxTjgKLQkJCQlDQU5BREEKLQotMDAtMEQtNjAgICAoaGV4KQkJSUJNIENvcnAKLTAwMEQ2MCAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNjEgICAoaGV4KQkJR2lnYS1CeXRlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBENjEgICAgIChiYXNlIDE2KQkJR2lnYS1CeXRlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8gNiwgQmF1IENoaWFuZyBSb2FkLCBIc2luLVRpZW4KLQkJCQlUYWlwZWkgSHNpZW4gIDk5OTkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTYyICAgKGhleCkJCUZ1bmt3ZXJrIERhYmVuZG9yZiBHbWJICi0wMDBENjIgICAgIChiYXNlIDE2KQkJRnVua3dlcmsgRGFiZW5kb3JmIEdtYkgKLQkJCQlNYWVya2lzY2hlIFN0cmFzc2UKLQkJCQlEYWJlbmRvcmYgQnJhbmRlbmJ1cmcgMTU4MDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTYzICAgKGhleCkJCURFTlQgSW5zdHJ1bWVudHMsIEluYy4KLTAwMEQ2MyAgICAgKGJhc2UgMTYpCQlERU5UIEluc3RydW1lbnRzLCBJbmMuCi0JCQkJNjQgTlcgRnJhbmtsaW4gQXZlCi0JCQkJQmVuZCBPUiA5NzcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNjQgICAoaGV4KQkJQ09NQUcgSGFuZGVscyBBRwotMDAwRDY0ICAgICAoYmFzZSAxNikJCUNPTUFHIEhhbmRlbHMgQUcKLQkJCQlaaWxsZW5oYXJkdHN0ci40MQotCQkJCUdvZXBwaW5nZW4gQmFkZW4tV3VydHRlbWJlcmcgNzMwMzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTY1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEQ2NSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTY2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEQ2NiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTY3ICAgKGhleCkJCUJlbEFpciBOZXR3b3JrcyBJbmMuCi0wMDBENjcgICAgIChiYXNlIDE2KQkJQmVsQWlyIE5ldHdvcmtzIEluYy4KLQkJCQk2MDMgTWFyY2ggUm9hZAotCQkJCUthbmF0YSBPbnRhcmlvIEsySyAyTTUKLQkJCQlDQU5BREEKLQotMDAtMEQtNjggICAoaGV4KQkJVmluY2kgU3lzdGVtcywgSW5jLgotMDAwRDY4ICAgICAoYmFzZSAxNikJCVZpbmNpIFN5c3RlbXMsIEluYy4KLQkJCQk4MzMwIEJvb25lIEJvdWxldmFyZAotCQkJCVN1aXRlIDUwMAotCQkJCVZpZW5uYSBWQSAyMjE4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNjkgICAoaGV4KQkJVE1UJkQgQ29ycG9yYXRpb24KLTAwMEQ2OSAgICAgKGJhc2UgMTYpCQlUTVQmRCBDb3Jwb3JhdGlvbgotCQkJCTItMjQtMQotCQkJCUhhcnVtaS1jaG8KLQkJCQlGdWNodS1zaSBUb2t5byAxODMtMDA1NwotCQkJCUpBUEFOCi0KLTAwLTBELTZBICAgKGhleCkJCVJlZHdvb2QgVGVjaG5vbG9naWVzIExURAotMDAwRDZBICAgICAoYmFzZSAxNikJCVJlZHdvb2QgVGVjaG5vbG9naWVzIExURAotCQkJCUFtYmVyIEhvdXNlCi0JCQkJTWFya2V0IFN0cmVldAotCQkJCUJyYWNrbmVsbCBCZXJrc2hpcmUgUkcxMiAxSkIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC02QiAgIChoZXgpCQlNaXRhLVRla25payBBL1MKLTAwMEQ2QiAgICAgKGJhc2UgMTYpCQlNaXRhLVRla25payBBL1MKLQkJCQlIYWFuZHZhZXJrZXJ2ZWogMQotCQkJCVJvZWRrYWVyc2JybyBESyBESy04ODQwCi0JCQkJREVOTUFSSwotCi0wMC0wRC02QyAgIChoZXgpCQlNLUF1ZGlvCi0wMDBENkMgICAgIChiYXNlIDE2KQkJTS1BdWRpbwotCQkJCTQ1IEUgU1QgSm9zZXBoIFN0LgotCQkJCUFyY2FkaWEgQ0EgOTEwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTZEICAgKGhleCkJCUstVGVjaCBEZXZpY2VzIENvcnAuCi0wMDBENkQgICAgIChiYXNlIDE2KQkJSy1UZWNoIERldmljZXMgQ29ycC4KLQkJCQkxNDAxNi0zMAotCQkJCW5ha2FtaW5vd2EgbWlub3dhbWFjaGkga2FtaWluYSBuYWdhbm8gMzk5LTQ2MDEKLQkJCQlKQVBBTgotCi0wMC0wRC02RSAgIChoZXgpCQlLLVBhdGVudHMgT3kKLTAwMEQ2RSAgICAgKGJhc2UgMTYpCQlLLVBhdGVudHMgT3kKLQkJCQlQLk8uIEJveCA3NwotCQkJCUVsYW5ub250aWUgNQotCQkJCVZBTlRBQSBGSSAwMTUxMQotCQkJCUZJTkxBTkQKLQotMDAtMEQtNkYgICAoaGV4KQkJRW1iZXIgQ29ycG9yYXRpb24KLTAwMEQ2RiAgICAgKGJhc2UgMTYpCQlFbWJlciBDb3Jwb3JhdGlvbgotCQkJCTM0MyBDb25ncmVzcyBTdAotCQkJCTV0aCBGbG9vcgotCQkJCUJvc3RvbiBNYSAwMjIxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNzAgICAoaGV4KQkJRGF0YW1heCBDb3Jwb3JhdGlvbgotMDAwRDcwICAgICAoYmFzZSAxNikJCURhdGFtYXggQ29ycG9yYXRpb24KLQkJCQk0NTAxIFBhcmt3YXkgQ29tbWVyY2UgQmx2ZAotCQkJCU9ybGFuZG8gRkwgMzI4MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTcxICAgKGhleCkJCWJvY2Egc3lzdGVtcwotMDAwRDcxICAgICAoYmFzZSAxNikJCWJvY2Egc3lzdGVtcwotCQkJCTEwNjUgcy4gcm9nZXJzIGNpcmNsZQotCQkJCWJvY2EgcmF0b24gZmwgMzM0ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTcyICAgKGhleCkJCTJXaXJlLCBJbmMKLTAwMEQ3MiAgICAgKGJhc2UgMTYpCQkyV2lyZSwgSW5jCi0JCQkJMTcwNCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNzMgICAoaGV4KQkJVGVjaG5pY2FsIFN1cHBvcnQsIEluYy4KLTAwMEQ3MyAgICAgKGJhc2UgMTYpCQlUZWNobmljYWwgU3VwcG9ydCwgSW5jLgotCQkJCTExMjUzIEpvaG4gR2FsdCBCbHZkCi0JCQkJT21haGEgTmVicmFza2EgNjgxMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTc0ICAgKGhleCkJCVNhbmQgTmV0d29yayBTeXN0ZW1zLCBJbmMuCi0wMDBENzQgICAgIChiYXNlIDE2KQkJU2FuZCBOZXR3b3JrIFN5c3RlbXMsIEluYy4KLQkJCQk0MzQgUGF5cmFuIFN0cmVldAotCQkJCVBldGFsdW1hIENBIDk0OTUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC03NSAgIChoZXgpCQlLb2JpYW4gUHRlIEx0ZCAtIFRhaXdhbiBCcmFuY2gKLTAwMEQ3NSAgICAgKGJhc2UgMTYpCQlLb2JpYW4gUHRlIEx0ZCAtIFRhaXdhbiBCcmFuY2gKLQkJCQkyRiwgTm8uNTgwLCBSdWVpa3VhbmcgUmQuLE5laSBIdSxUYWlwZWksCi0JCQkJVGFpcGVpIE5laSBIdSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTc2ICAgKGhleCkJCUhva3V0byBEZW5zaGkgQ28sLiBMdGQuCi0wMDBENzYgICAgIChiYXNlIDE2KQkJSG9rdXRvIERlbnNoaSBDbywuIEx0ZC4KLQkJCQkzLTcgT2RvcmkgTmlzaGkgMTYtQ2hvbWUgQ2h1b2t1Ci0JCQkJU2FwcG9ybyBIb2trYWlkbyAwNjAtMDA0MgotCQkJCUpBUEFOCi0KLTAwLTBELTc3ICAgKGhleCkJCUZhbGNvblN0b3IgU29mdHdhcmUKLTAwMEQ3NyAgICAgKGJhc2UgMTYpCQlGYWxjb25TdG9yIFNvZnR3YXJlCi0JCQkJMTI1IEJheWxpcyBSZAotCQkJCU1lbHZpbGxlIE5ZIDExNzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC03OCAgIChoZXgpCQlFbmdpbmVlcmluZyAmIFNlY3VyaXR5Ci0wMDBENzggICAgIChiYXNlIDE2KQkJRW5naW5lZXJpbmcgJiBTZWN1cml0eQotCQkJCU1hcnRpcmkgZGVsbGEgTGliZXJ0YSAzMi80Ci0JCQkJR2Vub3ZhICAxNjE1NQotCQkJCUlUQUxZCi0KLTAwLTBELTc5ICAgKGhleCkJCUR5bmFtaWMgU29sdXRpb25zIENvLC5MdGQuCi0wMDBENzkgICAgIChiYXNlIDE2KQkJRHluYW1pYyBTb2x1dGlvbnMgQ28sLkx0ZC4KLQkJCQkxNy04IE5paG9uYmFzaGkgSGFrb3pha2ktY2hvCi0JCQkJQ2h1by1rdSBUb2t5byAxMDMtMDAxNQotCQkJCUpBUEFOCi0KLTAwLTBELTdBICAgKGhleCkJCURpR0FUVE8gQXNpYSBQYWNpZmljIFB0ZSBMdGQKLTAwMEQ3QSAgICAgKGJhc2UgMTYpCQlEaUdBVFRPIEFzaWEgUGFjaWZpYyBQdGUgTHRkCi0JCQkJMTkwIE1kZGxlIFJvYWQsICMxOS0wNSBGb3J0dW5lIENlbnRlcgotCQkJCTE4ODk3OQotCQkJCVNJTkdBUE9SRQotCi0wMC0wRC03QiAgIChoZXgpCQlDb25zZW5zeXMgQ29tcHV0ZXJzIEluYy4KLTAwMEQ3QiAgICAgKGJhc2UgMTYpCQlDb25zZW5zeXMgQ29tcHV0ZXJzIEluYy4KLQkJCQkyMTUgU2hpZWxkcyBDdC4KLQkJCQlNYXJraGFtIE9OIEwzUiA4VjIKLQkJCQlDQU5BREEKLQotMDAtMEQtN0MgICAoaGV4KQkJQ29kaWFuIEx0ZAotMDAwRDdDICAgICAoYmFzZSAxNikJCUNvZGlhbiBMdGQKLQkJCQkxNCBXYXRlcnNpZGUgRHJpdmUKLQkJCQlMYW5nbGV5IFNsb3VnaCBTTDMgNkVaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtN0QgICAoaGV4KQkJQWZjbyBTeXN0ZW1zCi0wMDBEN0QgICAgIChiYXNlIDE2KQkJQWZjbyBTeXN0ZW1zCi0JCQkJMjAwIEZpbm4gQ291cnQKLQkJCQlGYXJtaW5nZGFsZSBOWSAxMTczNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtN0UgICAoaGV4KQkJQXhpb3dhdmUgTmV0d29ya3MsIEluYy4KLTAwMEQ3RSAgICAgKGJhc2UgMTYpCQlBeGlvd2F2ZSBOZXR3b3JrcywgSW5jLgotCQkJCTIwMCBOaWNrZXJzb24gUm9hZAotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC03RiAgIChoZXgpCQlNSURBUyAgQ09NTVVOSUNBVElPTiBURUNITk9MT0dJRVMgUFRFIExURCAoIEZvcmVpZ24gQnJhbmNoKQotMDAwRDdGICAgICAoYmFzZSAxNikJCU1JREFTICBDT01NVU5JQ0FUSU9OIFRFQ0hOT0xPR0lFUyBQVEUgTFREICggRm9yZWlnbiBCcmFuY2gpCi0JCQkJMDQtMTIsIFBoYXNlIFouUm8gVGVjaG5vcHJlbnVlciBQYXJrCi0JCQkJIzE1MSwgTm9ydGggQnVvbmEgVmlzdGEgUm9hZAotCQkJCVNpbmdhcG9yZSAgMTM5IDM0NwotCQkJCVNJTkdBUE9SRQotCi0wMC0wRC04MCAgIChoZXgpCQlPbmxpbmUgRGV2ZWxvcG1lbnQgSW5jCi0wMDBEODAgICAgIChiYXNlIDE2KQkJT25saW5lIERldmVsb3BtZW50IEluYwotCQkJCTcyMDkgQ2hhcG1hbiBId3kKLQkJCQlLbm94dmlsbGUgVG4gMzc5MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTgxICAgKGhleCkJCVBlcHBlcmwrRnVjaHMgR21iSAotMDAwRDgxICAgICAoYmFzZSAxNikJCVBlcHBlcmwrRnVjaHMgR21iSAotCQkJCUxpbGllbnRoYWxzdHJhc3NlIDIwMAotCQkJCU1hbm5oZWltICA2ODMwNwotCQkJCUdFUk1BTlkKLQotMDAtMEQtODIgICAoaGV4KQkJUEhTIHNybAotMDAwRDgyICAgICAoYmFzZSAxNikJCVBIUyBzcmwKLQkJCQlWaWEgUGFsdSwgMTcKLQkJCQlBcmN1Z25hbm8gVmljZW56YSAzNjA1NwotCQkJCUlUQUxZCi0KLTAwLTBELTgzICAgKGhleCkJCVNhbm1pbmEtU0NJIEh1bmdhcnkgIEx0ZC4KLTAwMEQ4MyAgICAgKGJhc2UgMTYpCQlTYW5taW5hLVNDSSBIdW5nYXJ5ICBMdGQuCi0JCQkJS290YSBKb3pzZWYgdS4gMi4KLQkJCQlUYXRhYmFueWEgS29tYXJvbS1Fc3p0ZXJnb20gMjgwMAotCQkJCUhVTkdBUlkKLQotMDAtMEQtODQgICAoaGV4KQkJTWFrdXMgSW5jLgotMDAwRDg0ICAgICAoYmFzZSAxNikJCU1ha3VzIEluYy4KLQkJCQk0RiBEYWVkbyBCbGRnLiwgNzQ4LTE0IFllb2tzYW0tZG9uZwotCQkJCUthbmduYW0tZ3UgU2VvdWwgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC04NSAgIChoZXgpCQlUYXB3YXZlLCBJbmMuCi0wMDBEODUgICAgIChiYXNlIDE2KQkJVGFwd2F2ZSwgSW5jLgotCQkJCTE5MDEgTGFuZGluZ3MgRHJpdmUKLQkJCQlCdWlsZGluZyBHCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtODYgICAoaGV4KQkJSHViZXIgKyBTdWhuZXIgQUcKLTAwMEQ4NiAgICAgKGJhc2UgMTYpCQlIdWJlciArIFN1aG5lciBBRwotCQkJCURlZ2Vyc2hlaW1lcnN0cmFzc2UgMTQKLQkJCQk5MTAwIEhlcmlzYXUgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEQtODcgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0wMDBEODcgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0JCQkJTm8uMjIsIEFsbGV5IDM4LCBMYW5lIDkxLCBTZWMuIDEsIE5laSBIdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC04OCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMEQ4OCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby44LCBMaS1Ic2luZyA3IFJvYWQsIFNjaWVuY2UtQmFzZWQgSW5kCi0JCQkJSHNpbmNodSAgMzAwNzcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTg5ICAgKGhleCkJCUJpbHMgVGVjaG5vbG9neSBJbmMKLTAwMEQ4OSAgICAgKGJhc2UgMTYpCQlCaWxzIFRlY2hub2xvZ3kgSW5jCi0JCQkJNTA4IFMgUml2ZXIgT2FrcyBEcml2ZQotCQkJCUluZGlhbGFudGljIEZMIDMyOTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC04QSAgIChoZXgpCQlXaW5uZXJzIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwRDhBICAgICAoYmFzZSAxNikJCVdpbm5lcnMgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzM0MC01LFdvbmNodW4tRG9uZyxQYWxkYWwtR3UKLQkJCQlTdXdvbi1DaXR5IEt5dW5na2ktRG8gNDQyLTgyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC04QiAgIChoZXgpCQlUJkQgQ29ycG9yYXRpb24KLTAwMEQ4QiAgICAgKGJhc2UgMTYpCQlUJkQgQ29ycG9yYXRpb24KLQkJCQk1NjUyLTE2OSBTYXNhZ2EKLQkJCQlNYXRzdW1vdG8gTmFnYW5vIDM5OS0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMEQtOEMgICAoaGV4KQkJU2hhbmdoYWkgV2Vkb25lIERpZ2l0YWwgTHRkLiBDTy4KLTAwMEQ4QyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBXZWRvbmUgRGlnaXRhbCBMdGQuIENPLgotCQkJCTg5My04OTkgSHVhc2hhbiBSb2FkLAotCQkJCVNoYW5naGFpICAyMDAwMzEKLQkJCQlDSElOQQotCi0wMC0wRC04RCAgIChoZXgpCQlQcm9MaW54IENvbW11bmljYXRpb24gR2F0ZXdheXMsIEluYy4KLTAwMEQ4RCAgICAgKGJhc2UgMTYpCQlQcm9MaW54IENvbW11bmljYXRpb24gR2F0ZXdheXMsIEluYy4KLQkJCQkxNjc1IENoZXN0ZXIgQXZlLgotCQkJCUZvdXJ0aCBGbG9vcgotCQkJCUJha2Vyc2ZpZWxkIENBIDkzMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC04RSAgIChoZXgpCQlLb2RlbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMEQ4RSAgICAgKGJhc2UgMTYpCQlLb2RlbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQk1Mjc4IFVlbm9oYXJhCi0JCQkJVWVub2hhcmEtU2hpCi0JCQkJWWFtYW5hc2hpLUtlbiA0MDktMDExMgotCQkJCUpBUEFOCi0KLTAwLTBELThGICAgKGhleCkJCUtpbmcgVHN1c2hpbiBLb2d5byBDby4sIExURC4KLTAwMEQ4RiAgICAgKGJhc2UgMTYpCQlLaW5nIFRzdXNoaW4gS29neW8gQ28uLCBMVEQuCi0JCQkJMi02LTYgTm9nZQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1OC0wMDkyCi0JCQkJSkFQQU4KLQotMDAtMEQtOTAgICAoaGV4KQkJRmFjdHVtIEVsZWN0cm9uaWNzIEFCCi0wMDBEOTAgICAgIChiYXNlIDE2KQkJRmFjdHVtIEVsZWN0cm9uaWNzIEFCCi0JCQkJVGVrbmlrcmluZ2VuIDFICi0JCQkJTGlua29waW5nIE9zdGVyZ290bGFuZCA1ODMgMzAKLQkJCQlTV0VERU4KLQotMDAtMEQtOTEgICAoaGV4KQkJRWNsaXBzZSAoSFEgRXNwYW5hKSBTLkwuCi0wMDBEOTEgICAgIChiYXNlIDE2KQkJRWNsaXBzZSAoSFEgRXNwYW5hKSBTLkwuCi0JCQkJQ0MgZGUgTmVnb2Npb3MKLQkJCQlPZmZpY2luYSBOby4gNDYuIEMuTi4gMzQwLCBLbSAxNzUKLQkJCQlQdWVydG8gZGUgQmFudXMgTWFyYmVsbGEgMjk2NjAKLQkJCQlTUEFJTgotCi0wMC0wRC05MiAgIChoZXgpCQlBcmltYSBDb21tdW5pY2F0aW9uIENvcnBvcmF0aW9uCi0wMDBEOTIgICAgIChiYXNlIDE2KQkJQXJpbWEgQ29tbXVuaWNhdGlvbiBDb3Jwb3JhdGlvbgotCQkJCTE2LCBsYW5lIDY1OCwgWWluZy1UYW8gUm9hZAotCQkJCVlpbmdrbyBUYWlwZWkgQ291bnR5IDIzOTQzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC05MyAgIChoZXgpCQlBcHBsZSBDb21wdXRlcgotMDAwRDkzICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC05NCAgIChoZXgpCQlBRkFSIENvbW11bmljYXRpb25zLEluYwotMDAwRDk0ICAgICAoYmFzZSAxNikJCUFGQVIgQ29tbXVuaWNhdGlvbnMsSW5jCi0JCQkJODEgRGF2aWQgTG92ZSBQbGFjZQotCQkJCVN1aXRlIEEKLQkJCQlTYW50YSBCYXJiYXJhIENBIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC05NSAgIChoZXgpCQlPcHRpLWNlbGwsIEluYy4KLTAwMEQ5NSAgICAgKGJhc2UgMTYpCQlPcHRpLWNlbGwsIEluYy4KLQkJCQkxMDAgSGlnaCBUb3dlciBCbHZkLiwgIFN1aXRlIDMwMQotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTk2ICAgKGhleCkJCVZ0ZXJhIFRlY2hub2xvZ3kgSW5jLgotMDAwRDk2ICAgICAoYmFzZSAxNikJCVZ0ZXJhIFRlY2hub2xvZ3kgSW5jLgotCQkJCU5vIDM0LCBJbmR1c3RyaWFsIEVhc3QuIDR0aCBSZC4KLQkJCQlIc2luQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTk3ICAgKGhleCkJCVRyb3BvcyBOZXR3b3JrcywgSW5jLgotMDAwRDk3ICAgICAoYmFzZSAxNikJCVRyb3BvcyBOZXR3b3JrcywgSW5jLgotCQkJCTE3MTAgUy4gQW1waGxldHQgQmx2ZCwgIFN1aXRlIDMwNAotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtOTggICAoaGV4KQkJUy5XLkEuQy4gU2NobWl0dC1XYWx0ZXIgQXV0b21hdGlvbiBDb25zdWx0IEdtYkgKLTAwMEQ5OCAgICAgKGJhc2UgMTYpCQlTLlcuQS5DLiBTY2htaXR0LVdhbHRlciBBdXRvbWF0aW9uIENvbnN1bHQgR21iSAotCQkJCU9lZGVucHVsbGFjaCAxCi0JCQkJT2JlcmhhY2hpbmcgQmF2YXJpYSA4MjA0MQotCQkJCUdFUk1BTlkKLQotMDAtMEQtOTkgICAoaGV4KQkJT3JiaXRhbCBTY2llbmNlcyBDb3JwLjsgTGF1bmNoIFN5c3RlbXMgR3JvdXAKLTAwMEQ5OSAgICAgKGJhc2UgMTYpCQlPcmJpdGFsIFNjaWVuY2VzIENvcnAuOyBMYXVuY2ggU3lzdGVtcyBHcm91cAotCQkJCTMzODAgUy4gUHJpY2UgUmQuCi0JCQkJQ2hhbmRsZXIsIEFaIDg1MjQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC05QSAgIChoZXgpCQlJTkZPVEVDIExURAotMDAwRDlBICAgICAoYmFzZSAxNikJCUlORk9URUMgTFRECi0JCQkJVGhlIE1hbHRpbmdzCi0JCQkJVGFtd29ydGggUm9hZAotCQkJCUFzaGJ5LWRlLWxhLVpvdWNoIExlaWNlc3RlcnNoaXJlIExFNjUgMlBTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtOUIgICAoaGV4KQkJSGVyYWV1cyBFbGVjdHJvLU5pdGUgSW50ZXJuYXRpb25hbCBOLlYuCi0wMDBEOUIgICAgIChiYXNlIDE2KQkJSGVyYWV1cyBFbGVjdHJvLU5pdGUgSW50ZXJuYXRpb25hbCBOLlYuCi0JCQkJQ2VudHJ1bSBadWlkIDExMDUKLQkJCQlIb3V0aGFsZW4gIDM1MzAKLQkJCQlCRUxHSVVNCi0KLTAwLTBELTlDICAgKGhleCkJCUVsYW4gR21iSCAmIENvIEtHCi0wMDBEOUMgICAgIChiYXNlIDE2KQkJRWxhbiBHbWJIICYgQ28gS0cKLQkJCQlJbSBPc3RwYXJrIDIKLQkJCQlXZXR0ZW5iZXJnIEhlc3NlbiAzNTQzNQotCQkJCUdFUk1BTlkKLQotMDAtMEQtOUQgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDBEOUQgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkgU291dGgKLQkJCQlteDA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTlFICAgKGhleCkJCVRPS1VERU4gT0hJWlVNSSBTRUlTQUtVU1lPIENvLixMdGQuCi0wMDBEOUUgICAgIChiYXNlIDE2KQkJVE9LVURFTiBPSElaVU1JIFNFSVNBS1VTWU8gQ28uLEx0ZC4KLQkJCQlZb3NoaWRhIDEyMjEKLQkJCQlPdXJhZ3VuIE9oaXp1bWkgR3VubWEgMzcwLTA1MjMKLQkJCQlKQVBBTgotCi0wMC0wRC05RiAgIChoZXgpCQlSRiBNaWNybyBEZXZpY2VzCi0wMDBEOUYgICAgIChiYXNlIDE2KQkJUkYgTWljcm8gRGV2aWNlcwotCQkJCTIxOTEgWmFua2VyIFJvYWQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQTAgICAoaGV4KQkJTkVEQVAgTi5WLgotMDAwREEwICAgICAoYmFzZSAxNikJCU5FREFQIE4uVi4KLQkJCQlQLk8uQm94IDEwMwotCQkJCVAuTy5Cb3ggNgotCQkJCUdST0VOTE8gR0xEIDcxNDEgQUMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRC1BMSAgIChoZXgpCQlNSVJBRSBJVFMgQ28uLExURC4KLTAwMERBMSAgICAgKGJhc2UgMTYpCQlNSVJBRSBJVFMgQ28uLExURC4KLQkJCQk3RiwgQ2hhbmdIeXVuIEIvRCw5NjAtMSxIb0d5ZTFEb25nCi0JCQkJQW5ZYW5nIEt5b25naUdpRG8gNDMxLTg0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC1BMiAgIChoZXgpCQlJbmZyYW50IFRlY2hub2xvZ2llcywgSW5jLgotMDAwREEyICAgICAoYmFzZSAxNikJCUluZnJhbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNDg4MjAgS2F0byBSb2FkCi0JCQkJU3RlIDExMEIKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1BMyAgIChoZXgpCQlFbWVyZ2luZyBUZWNobm9sb2dpZXMgTGltaXRlZAotMDAwREEzICAgICAoYmFzZSAxNikJCUVtZXJnaW5nIFRlY2hub2xvZ2llcyBMaW1pdGVkCi0JCQkJV29uZydzIEluZHVzdHJpYWwgQ2VudHJlLCAxODAgV2FpIFlpcCBTdAotCQkJCUt3dW4gVG9uZywgS293bG9vbgotCQkJCU5pbCAKLQkJCQlIT05HIEtPTkcKLQotMDAtMEQtQTQgICAoaGV4KQkJRE9TQ0ggJiBBTUFORCBTWVNURU1TIEFHCi0wMDBEQTQgICAgIChiYXNlIDE2KQkJRE9TQ0ggJiBBTUFORCBTWVNURU1TIEFHCi0JCQkJU2NoZWluZXJzdHJhc3NlIDkKLQkJCQlNdW5pY2ggQmF2YXJpYSA4MTY3OQotCQkJCUdFUk1BTlkKLQotMDAtMEQtQTUgICAoaGV4KQkJRmFicmljNyBTeXN0ZW1zLCBJbmMKLTAwMERBNSAgICAgKGJhc2UgMTYpCQlGYWJyaWM3IFN5c3RlbXMsIEluYwotCQkJCTEzMDAgQ3JpdHRlbmRlbiBMYW5lCi0JCQkJU3VpdGUgMzAyCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQTYgICAoaGV4KQkJVW5pdmVyc2FsIFN3aXRjaGluZyBDb3Jwb3JhdGlvbgotMDAwREE2ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBTd2l0Y2hpbmcgQ29ycG9yYXRpb24KLQkJCQk3NjcxIFNhbiBGZXJuYW5kbyBSZAotCQkJCUJ1cmJhbmsgQ0EgOTE1MDUtMTA3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQTcgICAoaGV4KQkJUFJJVkFURQotMDAwREE3ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wRC1BOCAgIChoZXgpCQlUZWxldHJvbmljcyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDBEQTggICAgIChiYXNlIDE2KQkJVGVsZXRyb25pY3MgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTI1MjUgUGVhcmwgQnVjayBSb2FkCi0JCQkJQnJpc3RvbCBQZW5uc3lsdmFuaWEgMTkwMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUE5ICAgKGhleCkJCVQuRS5BLk0uIFMuTC4KLTAwMERBOSAgICAgKGJhc2UgMTYpCQlULkUuQS5NLiBTLkwuCi0JCQkJUGFycXVlIFRlY25vbG9naWNvIEVkaWZpY2lvIDEwOAotCQkJCVpBTVVESU8gQml6a2FpYSA0ODE3MAotCQkJCVNQQUlOCi0KLTAwLTBELUFBICAgKGhleCkJCVMuQS5UZWhub2xvZ3kgY28uLEx0ZC4KLTAwMERBQSAgICAgKGJhc2UgMTYpCQlTLkEuVGVobm9sb2d5IGNvLixMdGQuCi0JCQkJODAtMTIgWWFuZ2phZSAxIERvbmcKLQkJCQlTZW9jaG8gR3UKLQkJCQlTZW91bCBTb3V0aCBLb3JlYSAxMzctODkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUFCICAgKGhleCkJCVBhcmtlciBIYW5uaWZpbiBHbWJIIEVsZWN0cm9tZWNoYW5pY2FsIERpdmlzaW9uIEV1cm9wZQotMDAwREFCICAgICAoYmFzZSAxNikJCVBhcmtlciBIYW5uaWZpbiBHbWJIIEVsZWN0cm9tZWNoYW5pY2FsIERpdmlzaW9uIEV1cm9wZQotCQkJCVJvYmVydC1Cb3NjaC1TdHJhc3NlIDIyCi0JCQkJT2ZmZW5idXJnIEJhZGVuIFd1cnR0ZW1iZXJnIDc3NjU2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC1BQyAgIChoZXgpCQlKYXBhbiBDQk0gQ29ycG9yYXRpb24KLTAwMERBQyAgICAgKGJhc2UgMTYpCQlKYXBhbiBDQk0gQ29ycG9yYXRpb24KLQkJCQk1LTY4LTEwIE5ha2FubywKLQkJCQlOYWthbm8tS3UgVG9reW8gMTY0LTAwMDEKLQkJCQlKQVBBTgotCi0wMC0wRC1BRCAgIChoZXgpCQlEYXRhcHJvYmUgSW5jCi0wMDBEQUQgICAgIChiYXNlIDE2KQkJRGF0YXByb2JlIEluYwotCQkJCTEgUGVhcmwgQ3QgVW5pdCBCCi0JCQkJQWxsZW5kYWxlIE5KIDA3NDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1BRSAgIChoZXgpCQlTQU1TVU5HIEhFQVZZIElORFVTVFJJRVMgQ08uLCBMVEQuCi0wMDBEQUUgICAgIChiYXNlIDE2KQkJU0FNU1VORyBIRUFWWSBJTkRVU1RSSUVTIENPLiwgTFRELgotCQkJCTQ5MywgQmFud2VvbC1SaSwgVGFlYW4tRXVwCi0JCQkJSHdhc2VvbmctQ2l0eSBLeWVvbmdnaS1EbyA0NDUtOTczCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUFGICAgKGhleCkJCVBsZXh1cyBDb3JwIChVSykgTHRkCi0wMDBEQUYgICAgIChiYXNlIDE2KQkJUGxleHVzIENvcnAgKFVLKSBMdGQKLQkJCQlQaW5uYWNsZSBIaWxsCi0JCQkJS2Vsc28gUm94YnVyZ2hzaGlyZSBURDUgOFhYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtQjAgICAoaGV4KQkJT2x5bS10ZWNoIENvLixMdGQuCi0wMDBEQjAgICAgIChiYXNlIDE2KQkJT2x5bS10ZWNoIENvLixMdGQuCi0JCQkJUm9vbSA0MDEvNDAyLE5vLjEsU29uZ2xpbmcgUm9hZCxIaS10ZWNoCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzMQotCQkJCUNISU5BCi0KLTAwLTBELUIxICAgKGhleCkJCUphcGFuIE5ldHdvcmsgU2VydmljZSBDby4sIEx0ZC4KLTAwMERCMSAgICAgKGJhc2UgMTYpCQlKYXBhbiBOZXR3b3JrIFNlcnZpY2UgQ28uLCBMdGQuCi0JCQkJTWF0b2JhIEJsZGcuIDZGLAotCQkJCTMtNy03IElyaWZ1bmUKLQkJCQkgQ2h1by1rdSBUb2t5byAxMDQtMDA0MgotCQkJCUpBUEFOCi0KLTAwLTBELUIyICAgKGhleCkJCUFtbWFzc28sIEluYy4KLTAwMERCMiAgICAgKGJhc2UgMTYpCQlBbW1hc3NvLCBJbmMuCi0JCQkJMzQ1IFN1bW1lciBTdHJlZXQKLQkJCQlCb3N0b24gTUEgMDIyMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUIzICAgKGhleCkJCVNETyBDb21tdW5pY2F0aW9uIENvcnBlcmF0aW9uCi0wMDBEQjMgICAgIChiYXNlIDE2KQkJU0RPIENvbW11bmljYXRpb24gQ29ycGVyYXRpb24KLQkJCQk2RiwgTm8uMTEyLCBTaGluIE1pbiBTdHJlZXQKLQkJCQlDaHVuZyBIbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUI0ICAgKGhleCkJCU5FVEFTUQotMDAwREI0ICAgICAoYmFzZSAxNikJCU5FVEFTUQotCQkJCTMgcnVlIEFyY2hpbWVkZQotCQkJCVZpbGxlbmV1dmUgZCdBc2NxIG5vcmQgNTk2NTAKLQkJCQlGUkFOQ0UKLQotMDAtMEQtQjUgICAoaGV4KQkJR0xPQkFMU0FUIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwMERCNSAgICAgKGJhc2UgMTYpCQlHTE9CQUxTQVQgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCUZhciBFYXN0IENlbnR1cnkgUGFyawotCQkJCUNodW5nIEhvIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtQjYgICAoaGV4KQkJQnJvYWRjb20gQ29ycG9yYXRpb24KLTAwMERCNiAgICAgKGJhc2UgMTYpCQlCcm9hZGNvbSBDb3Jwb3JhdGlvbgotCQkJCTEzNjMgUmVkd29vZCBXYXkKLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQjcgICAoaGV4KQkJU0FOS08gRUxFQ1RSSUMgQ08sLkxURAotMDAwREI3ICAgICAoYmFzZSAxNikJCVNBTktPIEVMRUNUUklDIENPLC5MVEQKLQkJCQk3LTIzIFRhbWFub2ktY2hvIEF0c3V0YS1rdQotCQkJCU5hZ295YS1zaGkgQWljaGkgNDU2LTAwMjUKLQkJCQlKQVBBTgotCi0wMC0wRC1COCAgIChoZXgpCQlTQ0hJTExFUiBBRwotMDAwREI4ICAgICAoYmFzZSAxNikJCVNDSElMTEVSIEFHCi0JCQkJQWx0Z2Fzc2UgNjgKLQkJCQlCYWFyIFp1ZyA2MzAwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEQtQjkgICAoaGV4KQkJUEMgRW5naW5lcyBHbWJICi0wMDBEQjkgICAgIChiYXNlIDE2KQkJUEMgRW5naW5lcyBHbWJICi0JCQkJR2VybWFuaWFzdHJhc3NlIDY4Ci0JCQkJODAwNiBadXJpY2ggCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEQtQkEgICAoaGV4KQkJT2NlIERvY3VtZW50IFRlY2hub2xvZ2llcyBHbWJICi0wMDBEQkEgICAgIChiYXNlIDE2KQkJT2NlIERvY3VtZW50IFRlY2hub2xvZ2llcyBHbWJICi0JCQkJTWF4LVN0cm9tZXllci1TdHIuIDExNgotCQkJCUtvbnN0YW56ICA3ODQ2NwotCQkJCUdFUk1BTlkKLQotMDAtMEQtQkIgICAoaGV4KQkJTmlwcG9uIERlbnRzdSBDby4sTHRkLgotMDAwREJCICAgICAoYmFzZSAxNikJCU5pcHBvbiBEZW50c3UgQ28uLEx0ZC4KLQkJCQkyLTIxLTEsSXNvamkKLQkJCQlNaW5hdG8tS3UKLQkJCQlPc2FrYSAgNTUyLTAwMDMKLQkJCQlKQVBBTgotCi0wMC0wRC1CQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBEQkMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1CRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBEQkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1CRSAgIChoZXgpCQlCZWwgRnVzZSBFdXJvcGUgTHRkLixVSwotMDAwREJFICAgICAoYmFzZSAxNikJCUJlbCBGdXNlIEV1cm9wZSBMdGQuLFVLCi0JCQkJNDUvNDYgUml2ZXJzaWRlIDIKLQkJCQlNZWR3YXkgQ2l0eSBFc3RhdGUKLQkJCQlSb2NoZXN0ZXIgS2VudCBNRTIgNERQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtQkYgICAoaGV4KQkJVGVrVG9uZSBTb3VuZCAmIFNpZ25hbCBNZmcuLCBJbmMuCi0wMDBEQkYgICAgIChiYXNlIDE2KQkJVGVrVG9uZSBTb3VuZCAmIFNpZ25hbCBNZmcuLCBJbmMuCi0JCQkJMjc3IEluZHVzdHJpYWwgUGFyayBSZC4KLQkJCQlGcmFua2xpbiBOQyAyODczNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQzAgICAoaGV4KQkJU3BhZ2F0IEFTCi0wMDBEQzAgICAgIChiYXNlIDE2KQkJU3BhZ2F0IEFTCi0JCQkJVG9ubmUgSHV0aWZlbGR0cGwuIDIKLQkJCQlIYWxkZW4gT3N0Zm9sZCAxNzY3Ci0JCQkJTk9SV0FZCi0KLTAwLTBELUMxICAgKGhleCkJCVNhZmVXZWIgSW5jCi0wMDBEQzEgICAgIChiYXNlIDE2KQkJU2FmZVdlYiBJbmMKLQkJCQkyMjAwIFBvd2VsbCBTdC4gU3RlIDU5MAotCQkJCUVtZXJ5dmlsbGUgQ0EgOTQ2MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUMyICAgKGhleCkJCVBSSVZBVEUKLTAwMERDMiAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEQtQzMgICAoaGV4KQkJRmlyc3QgQ29tbXVuaWNhdGlvbiwgSW5jLgotMDAwREMzICAgICAoYmFzZSAxNikJCUZpcnN0IENvbW11bmljYXRpb24sIEluYy4KLQkJCQkxRiwgTm8uMzYsIEluZHVzdHJ5IEUuIFJkLiBJVi4sCi0JCQkJIFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1DNCAgIChoZXgpCQlFbWNvcmUgQ29ycG9yYXRpb24KLTAwMERDNCAgICAgKGJhc2UgMTYpCQlFbWNvcmUgQ29ycG9yYXRpb24KLQkJCQkxNjAwIEV1YmFuayBCbHZkLCBTRQotCQkJCUFsYnVxdWVycXVlIE5ldyBNZXhpY28gODcxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUM1ICAgKGhleCkJCUVjaG9TdGFyIEdsb2JhbCBCLlYuIAotMDAwREM1ICAgICAoYmFzZSAxNikJCUVjaG9TdGFyIEdsb2JhbCBCLlYuIAotCQkJCVNjaHVpbGVuYnVyZ2xhYW4gNWEKLQkJCQlBbG1lbG8gT3Zlcmlqc3NlbCA3NjA0QkoKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRC1DNiAgIChoZXgpCQlEaWdpUm9zZSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwREM2ICAgICAoYmFzZSAxNikJCURpZ2lSb3NlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDEsIEFsbGV5IDIwLCBMYW5lIDI2IFJ1ZWlndWFuZyBSb2FkLAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1DNyAgIChoZXgpCQlDT1NNSUMgRU5HSU5FRVJJTkcgSU5DLgotMDAwREM3ICAgICAoYmFzZSAxNikJCUNPU01JQyBFTkdJTkVFUklORyBJTkMuCi0JCQkJMS0zLTUsIE5pc2hpaGlyYXlhbWEKLQkJCQlIaW5vLXNoaSBUT0tZTyAxOTEtMDA1NQotCQkJCUpBUEFOCi0KLTAwLTBELUM4ICAgKGhleCkJCUFpck1hZ25ldCwgSW5jCi0wMDBEQzggICAgIChiYXNlIDE2KQkJQWlyTWFnbmV0LCBJbmMKLQkJCQk4MzAgRS4gQXJxdWVzIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQzkgICAoaGV4KQkJVEhBTEVTIEVsZWt0cm9uaWsgU3lzdGVtZSBHbWJICi0wMDBEQzkgICAgIChiYXNlIDE2KQkJVEhBTEVTIEVsZWt0cm9uaWsgU3lzdGVtZSBHbWJICi0JCQkJRnJpdHotTHVkd2lnLVN0ci4gMQotCQkJCUtvYmxlbnogIDU2MDcwCi0JCQkJR0VSTUFOWQotCi0wMC0wRC1DQSAgIChoZXgpCQlUYWl0IEVsZWN0cm9uaWNzCi0wMDBEQ0EgICAgIChiYXNlIDE2KQkJVGFpdCBFbGVjdHJvbmljcwotCQkJCTUzNSBXYWlyYWtlaSBSZAotCQkJCVBPIEJveCAxNjQ1Ci0JCQkJQ2hyaXN0Y2h1cmNoIENhbnRlcmJ1cnkgODAwNQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTBELUNCICAgKGhleCkJCVBldGNvbWtvcmVhIENvLiwgTHRkLgotMDAwRENCICAgICAoYmFzZSAxNikJCVBldGNvbWtvcmVhIENvLiwgTHRkLgotCQkJCTVGLDY4OS00NyxHZXVtamVvbmctZG9uZyxHdW5wby1zaSxLeXVuZ2cKLQkJCQlLeXVuZ2dpLWRvIGd1bnBvLXNpIDQzNS0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtQ0MgICAoaGV4KQkJTkVPU01BUlQgQ29ycC4KLTAwMERDQyAgICAgKGJhc2UgMTYpCQlORU9TTUFSVCBDb3JwLgotCQkJCVlvb24tQi9EIDRGLCA0NzUtMzEsIEJhbmdiYWUgMi1kb25nCi0JCQkJU2VvdWwgU2VvY2hvLWd1IDE0Ny04MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtQ0QgICAoaGV4KQkJR1JPVVBFIFRYQ09NCi0wMDBEQ0QgICAgIChiYXNlIDE2KQkJR1JPVVBFIFRYQ09NCi0JCQkJWkkgRFUgUEVUSVQgQ0xBTUFSVAotCQkJCTEwIEFWRU5VRSBERVNDQVJURVMKLQkJCQlMRSBQTEVTU0lTIFJPQklOU09OIEhBVVRTLURFLVNFSU5FIDkyMzUwCi0JCQkJRlJBTkNFCi0KLTAwLTBELUNFICAgKGhleCkJCUR5bmF2YWMgVGVjaG5vbG9neSBQdGUgTHRkCi0wMDBEQ0UgICAgIChiYXNlIDE2KQkJRHluYXZhYyBUZWNobm9sb2d5IFB0ZSBMdGQKLQkJCQkzMCBUdWFzIEF2ZW51ZSA5Ci0JCQkJNjM5MTgzCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTBELUNGICAgKGhleCkJCUNpZHJhIENvcnAuCi0wMDBEQ0YgICAgIChiYXNlIDE2KQkJQ2lkcmEgQ29ycC4KLQkJCQk1MCBCYXJucyBQYXJrIE5vcnRoCi0JCQkJV2FsbGluZ2ZvcmQgQ1QgMDY0OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUQwICAgKGhleCkJCVRldHJhVGVjIEluc3RydW1lbnRzIEdtYkgKLTAwMEREMCAgICAgKGJhc2UgMTYpCQlUZXRyYVRlYyBJbnN0cnVtZW50cyBHbWJICi0JCQkJR2V3ZXJiZXN0cmFzc2UgOAotCQkJCVN0ZWluZW5icm9ubiBCVyA3MTE0NAotCQkJCUdFUk1BTlkKLQotMDAtMEQtRDEgICAoaGV4KQkJU3RyeWtlciBDb3Jwb3JhdGlvbgotMDAwREQxICAgICAoYmFzZSAxNikJCVN0cnlrZXIgQ29ycG9yYXRpb24KLQkJCQk0MTAwIEUgTWlsaGFtCi0JCQkJS2FsYW1hem9vIE1JIDQ5MDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1EMiAgIChoZXgpCQlTaW1yYWQgT3B0cm9uaWNzIEFTQQotMDAwREQyICAgICAoYmFzZSAxNikJCVNpbXJhZCBPcHRyb25pY3MgQVNBCi0JCQkJRW5zaj92ZWllbiAyM0IKLQkJCQlQTyBCb3ggNjExNCBFdHRlcnN0YWQgTk8tMDYwMiBPc2xvIAotCQkJCU5PUldBWQotCi0wMC0wRC1EMyAgIChoZXgpCQlTQU1XT08gVGVsZWNvbW11bmljYXRpb24gQ28uLEx0ZC4KLTAwMEREMyAgICAgKGJhc2UgMTYpCQlTQU1XT08gVGVsZWNvbW11bmljYXRpb24gQ28uLEx0ZC4KLQkJCQkKLQkJCQkxNzEsIERhbmdqdW5nLURvbmcsCi0JCQkJR3VucG8gS3lvdW5nLUdpIDQzNS04MzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtRDQgICAoaGV4KQkJU3ltYW50ZWMgQ29ycG9yYXRpb24KLTAwMERENCAgICAgKGJhc2UgMTYpCQlTeW1hbnRlYyBDb3Jwb3JhdGlvbgotCQkJCTI3NSAybmQgQXZlCi0JCQkJV2FsdGhhbSBNQSAwMjU0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRDUgICAoaGV4KQkJTydSSVRFIFRFQ0hOT0xPR1kgQ08uLExURAotMDAwREQ1ICAgICAoYmFzZSAxNikJCU8nUklURSBURUNITk9MT0dZIENPLixMVEQKLQkJCQk0Zi04LE5PIDgwLEdVQU5HRlUgUkQuU0VDIDIsU0FOQ0hVTkcKLQkJCQlUQUlQRUkgQ09VTlRZICAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUQ2ICAgKGhleCkJCUlUSSAgICBMVEQKLTAwMERENiAgICAgKGJhc2UgMTYpCQlJVEkgICAgTFRECi0JCQkJUiZELElUSSBCYW5nYWxvcmUgQ29tcGxleAotCQkJCUYtODYgQmxkZy4KLQkJCQlEb29yYXZhbmkgTmFnYXIsIEJhbmdhbG9yZSBLYXJuYXRha2EgU3RhdGUgNTYwMDE2Ci0JCQkJSU5ESUEKLQotMDAtMEQtRDcgICAoaGV4KQkJQnJpZ2h0Ci0wMDBERDcgICAgIChiYXNlIDE2KQkJQnJpZ2h0Ci0JCQkJMS0xMi00NCBBb2JhZGFpCi0JCQkJS2FzaGl3YS1zaGkgQ2hpYmEta2VuIDI3Ny0wMDU1Ci0JCQkJSkFQQU4KLQotMDAtMEQtRDggICAoaGV4KQkJQkJOCi0wMDBERDggICAgIChiYXNlIDE2KQkJQkJOCi0JCQkJN0YtMyxOTy4xODYsIEppYW4gWWkgUmQgLiwgQ2h1bmcgSG8gQ2l0eQotCQkJCVRhaXBlaSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1EOSAgIChoZXgpCQlBbnRvbiBQYWFyIEdtYkgKLTAwMEREOSAgICAgKGJhc2UgMTYpCQlBbnRvbiBQYWFyIEdtYkgKLQkJCQlBbnRvbi1QYWFyLVN0cmFzc2UgMjAKLQkJCQlHcmF6ICA4MDU0Ci0JCQkJQVVTVFJJQQotCi0wMC0wRC1EQSAgIChoZXgpCQlBTExJRUQgVEVMRVNJUyBLLksuCi0wMDBEREEgICAgIChiYXNlIDE2KQkJQUxMSUVEIFRFTEVTSVMgSy5LLgotCQkJCVBJQVpaQSBUSVJBTkEgTi4gMjQvNCBCCi0JCQkJTUlMQU5PICAyMDE0NwotCQkJCUlUQUxZCi0KLTAwLTBELURCICAgKGhleCkJCUFJUldBVkUgVEVDSE5PTE9HSUVTIElOQy4KLTAwMEREQiAgICAgKGJhc2UgMTYpCQlBSVJXQVZFIFRFQ0hOT0xPR0lFUyBJTkMuCi0JCQkJM0YsTm8uOSxJbmR1c3RyeSBFLiA5dGggUm9hZAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1EQyAgIChoZXgpCQlWQUMKLTAwMEREQyAgICAgKGJhc2UgMTYpCQlWQUMKLQkJCQkyMEYsIE4wLiA0NTYsIFNlYy4gNCwgSHNpbiBZaSBSZC4sCi0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUREICAgKGhleCkJCVBST0ZZTE8gVEVMUkEgRUxFS1RST05ZSyBTQU5BWVkgVkUgVFlDQVJFVCBBLj8uCi0wMDBEREQgICAgIChiYXNlIDE2KQkJUFJPRllMTyBURUxSQSBFTEVLVFJPTllLIFNBTkFZWSBWRSBUWUNBUkVUIEEuPy4KLQkJCQlDRU1BTCBTQUhZUiBTT0tBSyBOTzoyNi0yOAotCQkJCU1FQ1lEWVlFS09ZCi0JCQkJWVNUQU5CVUwgVFVSS0VZIDM0MjU1Ci0JCQkJVFVSS0VZCi0KLTAwLTBELURFICAgKGhleCkJCUpveXRlY2sgQ28uLCBMdGQuCi0wMDBEREUgICAgIChiYXNlIDE2KQkJSm95dGVjayBDby4sIEx0ZC4KLQkJCQkxOUYsIE5vLjQsIFNlYy4gMywgTWluIENodWFuIEVhc3QgUmQuCi0JCQkJVGFpcGVpICAxMDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELURGICAgKGhleCkJCUphcGFuIEltYWdlICYgTmV0d29yayBJbmMuCi0wMDBEREYgICAgIChiYXNlIDE2KQkJSmFwYW4gSW1hZ2UgJiBOZXR3b3JrIEluYy4KLQkJCQk1LTI5LTEyIFNoaWJhCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwOC0wMDE0Ci0JCQkJSkFQQU4KLQotMDAtMEQtRTAgICAoaGV4KQkJSUNQREFTIENvLixMVEQKLTAwMERFMCAgICAgKGJhc2UgMTYpCQlJQ1BEQVMgQ28uLExURAotCQkJCSBOby4gMTExLCBLdWFuZy1GdSBOLiBSZC4sIEhzaW4tQ2h1IEluZHUKLQkJCQlIU0lOQ0hVICAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUUxICAgKGhleCkJCUNvbnRyb2wgUHJvZHVjdHMsIEluYy4KLTAwMERFMSAgICAgKGJhc2UgMTYpCQlDb250cm9sIFByb2R1Y3RzLCBJbmMuCi0JCQkJMTcyNCBMYWtlIERyaXZlIFdlc3QKLQkJCQlDaGFuaGFzc2VuIE1OIDU1MzE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1FMiAgIChoZXgpCQlDTVogU2lzdGVtaSBFbGV0dHJvbmljaQotMDAwREUyICAgICAoYmFzZSAxNikJCUNNWiBTaXN0ZW1pIEVsZXR0cm9uaWNpCi0JCQkJVmlhIGRlbGwnQXJ0aWdpbmF0bywgMjEKLQkJCQlWYXNjb24gZGkgQ2FyYm9uZXJhIFRyZXZpc28gMzEwNTAKLQkJCQlJVEFMWQotCi0wMC0wRC1FMyAgIChoZXgpCQlBVCBTd2VkZW4gQUIKLTAwMERFMyAgICAgKGJhc2UgMTYpCQlBVCBTd2VkZW4gQUIKLQkJCQlQLk8uIEJveCAxMTY2Ci0JCQkJSXNhZmpvcmRzZ2F0YW4gMzBCCi0JCQkJS2lzdGEgU3RvY2tob2xtIFNFLTE2NCAyNgotCQkJCVNXRURFTgotCi0wMC0wRC1FNCAgIChoZXgpCQlESUdJTklDUywgSW5jLgotMDAwREU0ICAgICAoYmFzZSAxNikJCURJR0lOSUNTLCBJbmMuCi0JCQkJMTc4LTcKLQkJCQlQb2ktZG9uZwotCQkJCUthbmduYW0tZ3UgU2VvdWwgMTM1LTk2MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC1FNSAgIChoZXgpCQlTYW1zdW5nIFRoYWxlcwotMDAwREU1ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgVGhhbGVzCi0JCQkJMjU5IEdvbmdkYW4tRG9uZwotCQkJCUd1bWktQ2l0eSBHeWVvbmdzYW5nYnVrLWRvIDczMC05MDQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtRTYgICAoaGV4KQkJWU9VTkdCTyBFTkdJTkVFUklORyBDTy4sTFRECi0wMDBERTYgICAgIChiYXNlIDE2KQkJWU9VTkdCTyBFTkdJTkVFUklORyBDTy4sTFRECi0JCQkJTXQuMjIsIEphZXVuZ2EtcmksIEppZ3Nhbi1FdXAsCi0JCQkJQ2hlb25hbi1zaGkgQ2h1bmdjaGVvbmduYW0tZG8gIzMzMC04MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtRTcgICAoaGV4KQkJU25hcC1vbiBPRU0gR3JvdXAKLTAwMERFNyAgICAgKGJhc2UgMTYpCQlTbmFwLW9uIE9FTSBHcm91cAotCQkJCTIzMzMgRWFzdCBXYWx0b24gQmx2ZC4KLQkJCQlBdWJ1cm4gSGlsbHMgTUkgNDgzMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUU4ICAgKGhleCkJCU5hc2FjbyBFbGVjdHJvbmljcyBQdGUuIEx0ZAotMDAwREU4ICAgICAoYmFzZSAxNikJCU5hc2FjbyBFbGVjdHJvbmljcyBQdGUuIEx0ZAotCQkJCUxldmVsIDQsIE5hc2FjbyBUZWNoIENlbnRyZQotCQkJCTQ5LCBDaGFuZ2kgU291dGggQXZlbnVlIDIKLQkJCQk0ODYwNTYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMEQtRTkgICAoaGV4KQkJTmFwYXRlY2ggQXBzCi0wMDBERTkgICAgIChiYXNlIDE2KQkJTmFwYXRlY2ggQXBzCi0JCQkJUnVuZG9mcmJpdmVqIDI3MSwgMQotCQkJCU5hZXJ1bSAgMjg1MAotCQkJCURFTk1BUksKLQotMDAtMEQtRUEgICAoaGV4KQkJS2luZ3RlbCBUZWxlY29tbXVuaWNhdGlvbiBDb3JwLgotMDAwREVBICAgICAoYmFzZSAxNikJCUtpbmd0ZWwgVGVsZWNvbW11bmljYXRpb24gQ29ycC4KLQkJCQkxNDcgS2FuZyBOaW5nIFN0LgotCQkJCUhzaSBDaGloIENpdHkgVGFpcGVpIEhzaWVuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtRUIgICAoaGV4KQkJQ29tcFhzIExpbWl0ZWQKLTAwMERFQiAgICAgKGJhc2UgMTYpCQlDb21wWHMgTGltaXRlZAotCQkJCVJvYmVydCBEZW5ob2xtIEhvdXNlCi0JCQkJTnV0ZmllbGQKLQkJCQlSZWRoaWxsIFN1cnJleSBSSDEgNEhXCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtRUMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwREVDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRUQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwREVEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRUUgICAoaGV4KQkJQW5kcmV3IFJGIFBvd2VyIEFtcGxpZmllciBHcm91cAotMDAwREVFICAgICAoYmFzZSAxNikJCUFuZHJldyBSRiBQb3dlciBBbXBsaWZpZXIgR3JvdXAKLQkJCQk0MCBUZWNobm9sb2d5IERyaXZlCi0JCQkJV2FycmVuIE5KIDA3MDU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1FRiAgIChoZXgpCQlTb2MuIENvb3AuIEJpbGFuY2lhaQotMDAwREVGICAgICAoYmFzZSAxNikJCVNvYy4gQ29vcC4gQmlsYW5jaWFpCi0JCQkJdmlhIFMuRmVycmFyaSAxNgotCQkJCUNhbXBvZ2FsbGlhbm8gTW9kZW5hIDQxMDExCi0JCQkJSVRBTFkKLQotMDAtMEQtRjAgICAoaGV4KQkJUUNPTSBURUNITk9MT0dZIElOQy4KLTAwMERGMCAgICAgKGJhc2UgMTYpCQlRQ09NIFRFQ0hOT0xPR1kgSU5DLgotCQkJCTdGLiwgTk8gMTc4LCBNSU5HIENIVUFOIEUuIFJELiwgU0VDLiAzLAotCQkJCVRBSVBFSSAgMTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1GMSAgIChoZXgpCQlJT05JWCBJTkMuCi0wMDBERjEgICAgIChiYXNlIDE2KQkJSU9OSVggSU5DLgotCQkJCVNzYW5neW9uZyBJVCBUd2luIFRvd2VyIDYwNCwgNDQyLTE3LCBTYW5nZGFld29uLWRvbmcsIEp1bmd3b24tZ3UsCi0JCQkJU2VvbmduYW0tc2kgR3llb25nZ2ktZG8gNDYyLTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC1GMiAgIChoZXgpCQlQUklWQVRFCi0wMDBERjIgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBELUYzICAgKGhleCkJCUFzbWF4IFNvbHV0aW9ucwotMDAwREYzICAgICAoYmFzZSAxNikJCUFzbWF4IFNvbHV0aW9ucwotCQkJCVRhdGFyc2thIDUKLQkJCQlDcmFjb3cgIDMwLTEwMwotCQkJCVBPTEFORAotCi0wMC0wRC1GNCAgIChoZXgpCQlXYXRlcnRlayBDby4KLTAwMERGNCAgICAgKGJhc2UgMTYpCQlXYXRlcnRlayBDby4KLQkJCQlSb29tIDEwMDYsSGFpdGFpIGJ1aWxkaW5nLG5vcnRoIHNpIEh1YW4KLQkJCQlaaG9uZyBSb2FkLEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODMKLQkJCQlDSElOQQotCi0wMC0wRC1GNSAgIChoZXgpCQlUZWxldHJvbmljcyBJbnRlcm5hdGlvbmFsIEluYy4KLTAwMERGNSAgICAgKGJhc2UgMTYpCQlUZWxldHJvbmljcyBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQkyIENob2tlIENoZXJyeSBSb2FkCi0JCQkJU3VpdGUgIzEwMQotCQkJCVJvY2t2aWxsZSBNRCAyMDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRjYgICAoaGV4KQkJVGVjaG5vbG9neSBUaGVzYXVydXMgQ29ycC4KLTAwMERGNiAgICAgKGJhc2UgMTYpCQlUZWNobm9sb2d5IFRoZXNhdXJ1cyBDb3JwLgotCQkJCU5PLiA2LCBFYXN0IDR0aCBTdC4gS0VQWgotCQkJCUtBT0hTSVVORyAgODA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1GNyAgIChoZXgpCQlTcGFjZSBEeW5hbWljcyBMYWIKLTAwMERGNyAgICAgKGJhc2UgMTYpCQlTcGFjZSBEeW5hbWljcyBMYWIKLQkJCQkxNjk1IE4uIFJlc2VhcmNoIFBhcmsgV2F5Ci0JCQkJTm9ydGggTG9nYW4gVVQgODQzNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUY4ICAgKGhleCkJCU9SR0EgS2FydGVuc3lzdGVtZSBHbWJICi0wMDBERjggICAgIChiYXNlIDE2KQkJT1JHQSBLYXJ0ZW5zeXN0ZW1lIEdtYkgKLQkJCQlLb25yYWQtWnVzZS1SaW5nIDEKLQkJCQlGbGludGJlayBTY2hsZXN3aWctSG9sc3RlaW4gMjQyMjAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELUY5ICAgKGhleCkJCU5EUyBMaW1pdGVkCi0wMDBERjkgICAgIChiYXNlIDE2KQkJTkRTIExpbWl0ZWQKLQkJCQlPbmUgSGVhdGhyb3cgQm91bGV2YXJkCi0JCQkJMjg2IEJhdGggUm9hZAotCQkJCVdlc3QgRHJheXRvbiBNaWRkbGVzZXggVUI3IDBEUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELUZBICAgKGhleCkJCU1pY3JvIENvbnRyb2wgU3lzdGVtcyBMdGQuCi0wMDBERkEgICAgIChiYXNlIDE2KQkJTWljcm8gQ29udHJvbCBTeXN0ZW1zIEx0ZC4KLQkJCQk4LTcgU2FrdXJhaQotCQkJCVNha3Utc2hpIE5hZ2FubyAzODUtMDA1NgotCQkJCUpBUEFOCi0KLTAwLTBELUZCICAgKGhleCkJCUtvbWF4IEFHCi0wMDBERkIgICAgIChiYXNlIDE2KQkJS29tYXggQUcKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDYKLQkJCQlEaWVyaWtvbiBMVSA2MDM2Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEQtRkMgICAoaGV4KQkJSVRGT1IgSW5jLgotMDAwREZDICAgICAoYmFzZSAxNikJCUlURk9SIEluYy4KLQkJCQlJY2hpYmFuY2hvIFRva3l1IEJpZGcuLAotCQkJCTIxIEljaGliYW5uY3lvLENoaXlvZGEta3UKLQkJCQlUb2t5byAxMDItMDA4MgotCQkJCUpBUEFOCi0KLTAwLTBELUZEICAgKGhleCkJCUh1Z2VzIEhpLVRlY2ggSW5jLiwKLTAwMERGRCAgICAgKGJhc2UgMTYpCQlIdWdlcyBIaS1UZWNoIEluYy4sCi0JCQkJN0YsIDE4OCwgU2VjLjIsIENodW5nIEhzaW5nIFJvYWQuCi0JCQkJSHNpbiBUaWVuIFRhaXBlaSBIc2llbiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUZFICAgKGhleCkJCUhhdXBwYXVnZSBDb21wdXRlciBXb3JrcywgSW5jLgotMDAwREZFICAgICAoYmFzZSAxNikJCUhhdXBwYXVnZSBDb21wdXRlciBXb3JrcywgSW5jLgotCQkJCTkxIENhYm90IENvdXJ0Ci0JCQkJSGF1cHBhdWdlIE5ldyBZb3JrIDExNzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1GRiAgIChoZXgpCQlDSEVOTUlORyBNT0xEIElORFVTVFJZIENPUlAuCi0wMDBERkYgICAgIChiYXNlIDE2KQkJQ0hFTk1JTkcgTU9MRCBJTkRVU1RSWSBDT1JQLgotCQkJCTJGIE5vLiAyNiwgTGFuZSA1MTMsIFJlaSBLdWFuZyBSZC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtMDAgICAoaGV4KQkJQXRyaWUKLTAwMEUwMCAgICAgKGJhc2UgMTYpCQlBdHJpZQotCQkJCTEwdGggRmxvb3IsIDE0LCBMYW5lIDYwOSwgU2VjLiA1LCBDaHVuZyBIc2luIFJkLiwgU2FuIENodW5nIENpdHksCi0JCQkJVGFpcGVpIEhzaWVuIFNhbiBDaHVuZyAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTAxICAgKGhleCkJCUFTSVAgVGVjaG5vbG9naWVzIEluYy4KLTAwMEUwMSAgICAgKGJhc2UgMTYpCQlBU0lQIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMTBGLTIsIE5PLjMyMiwgU2VjLjEsIEd1YW5nZnUgUmQuLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtMDIgICAoaGV4KQkJQWR2YW50ZWNoIEFNVCBJbmMuCi0wMDBFMDIgICAgIChiYXNlIDE2KQkJQWR2YW50ZWNoIEFNVCBJbmMuCi0JCQkJNjU3IE9ybHkgQXZlLgotCQkJCURvcnZhbCBRdWViZWMgSDlQIDFHMQotCQkJCUNBTkFEQQotCi0wMC0wRS0wMyAgIChoZXgpCQlFbXVsZXgKLTAwMEUwMyAgICAgKGJhc2UgMTYpCQlFbXVsZXgKLQkJCQkzMzMzIFN1c2FuIFN0cmVldAotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTA0ICAgKGhleCkJCUNNQS9NaWNyb2RpYWx5c2lzIEFCCi0wMDBFMDQgICAgIChiYXNlIDE2KQkJQ01BL01pY3JvZGlhbHlzaXMgQUIKLQkJCQlEYWx2YWdlbiAxMCAvIEJveCAyCi0JCQkJU29sbmEgIDE3MSAxOAotCQkJCVNXRURFTgotCi0wMC0wRS0wNSAgIChoZXgpCQlXSVJFTEVTUyBNQVRSSVggQ09SUC4KLTAwMEUwNSAgICAgKGJhc2UgMTYpCQlXSVJFTEVTUyBNQVRSSVggQ09SUC4KLQkJCQlVTklUIDFBLTM3NTEgTk9SVEggRlJBU0VSIFdBWQotCQkJCUJVUk5BQlkgQkMgVjVKIDVHNAotCQkJCUNBTkFEQQotCi0wMC0wRS0wNiAgIChoZXgpCQlUZWFtIFNpbW9jbyBMdGQKLTAwMEUwNiAgICAgKGJhc2UgMTYpCQlUZWFtIFNpbW9jbyBMdGQKLQkJCQlGaWVsZCBIb3VzZQotCQkJCVV0dG94ZXRlciBPbGQgUm9hZAotCQkJCURlcmJ5IERlcmJ5c2hpcmUgREUxIDFOSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBFLTA3ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDBFMDcgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODggTHVuZAotCQkJCVNXRURFTgotCi0wMC0wRS0wOCAgIChoZXgpCQlDaXNjbyBMaW5rc3lzIExMQwotMDAwRTA4ICAgICAoYmFzZSAxNikJCUNpc2NvIExpbmtzeXMgTExDCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0wOSAgIChoZXgpCQlTaGVuemhlbiBDb3NoaXAgU29mdHdhcmUgQ28uLExURC4KLTAwMEUwOSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBDb3NoaXAgU29mdHdhcmUgQ28uLExURC4KLQkJCQk3L0YsQmxvY2sgQSxXMiBCbGRnLEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrLFNoZW56aGVuLENoaW5hCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTBFLTBBICAgKGhleCkJCVNBS1VNQSBERVNJR04gT0ZGSUNFCi0wMDBFMEEgICAgIChiYXNlIDE2KQkJU0FLVU1BIERFU0lHTiBPRkZJQ0UKLQkJCQk2NzQtMTEKLQkJCQlLVUtJLVNISSBTQUlUQU1BIDM0Ni0wMDI5Ci0JCQkJSkFQQU4KLQotMDAtMEUtMEIgICAoaGV4KQkJTmV0YWMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMEUwQiAgICAgKGJhc2UgMTYpCQlOZXRhYyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTZGLCBJbmN1YmF0b3IgQnVpbGRpbmcsIENoaW5hIEFjYWRlbXkgb2YgU2NpZW5jZSAmVGVjaCBEZXZlbG9wbWVudCwKLQkJCQlOby4xIEhpZ2gtdGVjaCBTb3V0aCBTdHJlZXQKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMEUtMEMgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMEUwQyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCTIxMTEgTkUgIDI1dGggQXZlbnVlCi0JCQkJTVM6ICBKRjMtNDIwCi0JCQkJSGlsbHNib3JvIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0wRCAgIChoZXgpCQlIRVNDSCBTY2hyb2RlciBHbWJICi0wMDBFMEQgICAgIChiYXNlIDE2KQkJSEVTQ0ggU2Nocm9kZXIgR21iSAotCQkJCUJvc2Noc3RyYXNzZSA4Ci0JCQkJTmV1c3RhZHQgTmllZGVyc2FjaHNlbiAzMTUzNQotCQkJCUdFUk1BTlkKLQotMDAtMEUtMEUgICAoaGV4KQkJRVNBIGVsZXR0cm9uaWNhIFMuUC5BLgotMDAwRTBFICAgICAoYmFzZSAxNikJCUVTQSBlbGV0dHJvbmljYSBTLlAuQS4KLQkJCQlWaWEgUC4gTWFzY2lhZHJpIDQvQQotCQkJCU1hcmlhbm8gQ29tZW5zZSBDTyAyMjA2NgotCQkJCUlUQUxZCi0KLTAwLTBFLTBGICAgKGhleCkJCUVSTU1FCi0wMDBFMEYgICAgIChiYXNlIDE2KQkJRVJNTUUKLQkJCQk5IHJ1ZSBMYXZvaXNpZXIKLQkJCQlWZXJ0LUxlLVBldGl0ICA5MTcxMAotCQkJCUZSQU5DRQotCi0wMC0wRS0xMCAgIChoZXgpCQlDLWd1eXMsIEluYy4KLTAwMEUxMCAgICAgKGJhc2UgMTYpCQlDLWd1eXMsIEluYy4KLQkJCQlJenVtaSBHYXJkZW4gV2luZyAxRiwgMS02LTMKLQkJCQlSb3Bwb25naSwgTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwNi0wMDMyCi0JCQkJSkFQQU4KLQotMDAtMEUtMTEgICAoaGV4KQkJQkRUIEJ1cm8tIHVuZCBEYXRlbnRlY2huaWsgR21iSCAmIENvLiBLRwotMDAwRTExICAgICAoYmFzZSAxNikJCUJEVCBCdXJvLSB1bmQgRGF0ZW50ZWNobmlrIEdtYkggJiBDby4gS0cKLQkJCQlTYWxpbmUgMjkKLQkJCQlSb3R0d2VpbCBCYWRlbi1XdXJ0dGVtYmVyZyBELTc4NjI4Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS0xMiAgIChoZXgpCQlBZGFwdGl2ZSBNaWNybyBTeXN0ZW1zIEluYy4KLTAwMEUxMiAgICAgKGJhc2UgMTYpCQlBZGFwdGl2ZSBNaWNybyBTeXN0ZW1zIEluYy4KLQkJCQk3ODQwIE5vcnRoIDg2dGggU3QuCi0JCQkJTWlsd2F1a2VlIFdJIDUzMjI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0xMyAgIChoZXgpCQlBY2N1LVNvcnQgU3lzdGVtcyBpbmMuCi0wMDBFMTMgICAgIChiYXNlIDE2KQkJQWNjdS1Tb3J0IFN5c3RlbXMgaW5jLgotCQkJCTUxMSBTY2hvb2wgSG91c2UgUm9hZAotCQkJCVRlbGZvcmQgUEEgMTg5NjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTE0ICAgKGhleCkJCVZpc2lvbmFyeSBTb2x1dGlvbnMsIEluYy4KLTAwMEUxNCAgICAgKGJhc2UgMTYpCQlWaXNpb25hcnkgU29sdXRpb25zLCBJbmMuCi0JCQkJNDE5MyBDYXJwaW50ZXJpYSBBdmUKLQkJCQlTdWl0ZSAxMQotCQkJCUNhcnBpbnRlcmlhIENBIDkzMDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0xNSAgIChoZXgpCQlUYWRseXMgTFRECi0wMDBFMTUgICAgIChiYXNlIDE2KQkJVGFkbHlzIExURAotCQkJCUlTUkFFTEkgU0hJTU9OIDMKLQkJCQlSSVNIT04gbEVaWVlPTiBJU1JBRUwgNzU2NTQKLQkJCQlJU1JBRUwKLQotMDAtMEUtMTYgICAoaGV4KQkJU291dGhXaW5nIFMuTC4KLTAwMEUxNiAgICAgKGJhc2UgMTYpCQlTb3V0aFdpbmcgUy5MLgotCQkJCUMvQXZpbGEsIDQ4LTUwCi0JCQkJM3JkIGZsb29yCi0JCQkJQmFyY2Vsb25hICAwODAwNQotCQkJCVNQQUlOCi0KLTAwLTBFLTE3ICAgKGhleCkJCVBSSVZBVEUKLTAwMEUxNyAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEUtMTggICAoaGV4KQkJTXlBIFRlY2hub2xvZ3kKLTAwMEUxOCAgICAgKGJhc2UgMTYpCQlNeUEgVGVjaG5vbG9neQotCQkJCTIxMDAgTXVpcndvb2QgV2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTE5ICAgKGhleCkJCUxvZ2ljYUNNRyBQdHkgTHRkCi0wMDBFMTkgICAgIChiYXNlIDE2KQkJTG9naWNhQ01HIFB0eSBMdGQKLQkJCQkxNy0xOSBPcmlvbiBSb2FkCi0JCQkJTGFuZSBDb3ZlIE5TVyAyMDY2Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTBFLTFBICAgKGhleCkJCUpQUyBDb21tdW5pY2F0aW9ucwotMDAwRTFBICAgICAoYmFzZSAxNikJCUpQUyBDb21tdW5pY2F0aW9ucwotCQkJCTU4MDAgRGVwYXJ0dXJlIERyaXZlCi0JCQkJUmFsZWlnaCBOQyAyNzYxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMUIgICAoaGV4KQkJSUFWIEdtYkgKLTAwMEUxQiAgICAgKGJhc2UgMTYpCQlJQVYgR21iSAotCQkJCUNhcm5vdHN0ci4gMQotCQkJCUJlcmxpbiAgMTA1ODcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLTFDICAgKGhleCkJCUhhY2ggQ29tcGFueQotMDAwRTFDICAgICAoYmFzZSAxNikJCUhhY2ggQ29tcGFueQotCQkJCTU2MDAgTGluZGJlcmdoIERyaXZlCi0JCQkJTG92ZWxhbmQgQ08gODA1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTFEICAgKGhleCkJCUFSSU9OIFRlY2hub2xvZ3kgSW5jLgotMDAwRTFEICAgICAoYmFzZSAxNikJCUFSSU9OIFRlY2hub2xvZ3kgSW5jLgotCQkJCTNGLCBQaWNhIEJsZGcsIDg5NC0yLCBIb2d5ZSAyIERvbmcKLQkJCQlEb25nYW4tR3UKLQkJCQlBbi1ZYW5nIENpdHkgR3llb25nZ2ktRG8gCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLTFFICAgKGhleCkJCVFMb2dpYyBDb3Jwb3JhdGlvbgotMDAwRTFFICAgICAoYmFzZSAxNikJCVFMb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTI2NjUwIEFsaXNvIFZpZWpvIFBhcmt3YXkKLQkJCQlBbGlzbyBWaWVqbyBDQSA5MjY1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMUYgICAoaGV4KQkJVENMIE5ldHdvcmtzIEVxdWlwbWVudCBDby4sIEx0ZC4KLTAwMEUxRiAgICAgKGJhc2UgMTYpCQlUQ0wgTmV0d29ya3MgRXF1aXBtZW50IENvLiwgTHRkLgotCQkJCU5vLjUgSW5kdXN0cmlhbCBSb2FkLFNoZWtvdQotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNjcKLQkJCQlDSElOQQotCi0wMC0wRS0yMCAgIChoZXgpCQlBQ0NFU1MgU3lzdGVtcyBBbWVyaWNhcywgSW5jLgotMDAwRTIwICAgICAoYmFzZSAxNikJCUFDQ0VTUyBTeXN0ZW1zIEFtZXJpY2FzLCBJbmMuCi0JCQkJMTE4OCBFYXN0IEFycXVlcyBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTIxICAgKGhleCkJCU1UVSBGcmllZHJpY2hzaGFmZW4gR21iSAotMDAwRTIxICAgICAoYmFzZSAxNikJCU1UVSBGcmllZHJpY2hzaGFmZW4gR21iSAotCQkJCU1heWJhY2hwbGF0eiAxCi0JCQkJRnJpZWRyaWNoc2hhZmVuIEJhZGVuIFd1ZXJ0ZW1iZXJnIDg4MDQwCi0JCQkJR0VSTUFOWQotCi0wMC0wRS0yMiAgIChoZXgpCQlQUklWQVRFCi0wMDBFMjIgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBFLTIzICAgKGhleCkJCUluY2lwaWVudCwgSW5jLgotMDAwRTIzICAgICAoYmFzZSAxNikJCUluY2lwaWVudCwgSW5jLgotCQkJCTIzMCBUaGlyZCBBdmUuCi0JCQkJNHRoIEZsb29yCi0JCQkJV2FsdGhhbSBNQSAwMjQ1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMjQgICAoaGV4KQkJSHV3ZWxsIFRlY2hub2xvZ3kgSW5jLgotMDAwRTI0ICAgICAoYmFzZSAxNikJCUh1d2VsbCBUZWNobm9sb2d5IEluYy4KLQkJCQkxRiA4Mi0yMSwgTWFqaW4gQnVpbGRpbmcKLQkJCQlOb25oeXVuLWRvbmcsIEdhbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS0yNSAgIChoZXgpCQlIYW5uYWUgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAwRTI1ICAgICAoYmFzZSAxNikJCUhhbm5hZSBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJNEYsIEh5dW5qaW4gQmxkZy4sICM3OTgtMzAsIFllb2tzYW0tRG9uZwotCQkJCUthbmduYW0tS3UKLQkJCQlTRU9VTCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS0yNiAgIChoZXgpCQlHaW5jb20gVGVjaG5vbG9neSBDb3JwLgotMDAwRTI2ICAgICAoYmFzZSAxNikJCUdpbmNvbSBUZWNobm9sb2d5IENvcnAuCi0JCQkJMTVGLiwgTm8uIDI4NCwgU2VjLjMsIFNhbm1pbiBSZC4sIFRhb3l1YW4gQ2l0eSwKLQkJCQlUYW95dWFuLCAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS0yNyAgIChoZXgpCQlDcmVyZSBOZXR3b3JrcywgSW5jLgotMDAwRTI3ICAgICAoYmFzZSAxNikJCUNyZXJlIE5ldHdvcmtzLCBJbmMuCi0JCQkJUm9vbSAxMTAgRVRSSSBUQkksIDUyIEVvZXVuLWRvbmcKLQkJCQlZdXNlb25nLWd1Ci0JCQkJRGFlamVvbiAgMzA1LTMzMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS0yOCAgIChoZXgpCQlEeW5hbWljIFJhdGluZ3MgUC9MCi0wMDBFMjggICAgIChiYXNlIDE2KQkJRHluYW1pYyBSYXRpbmdzIFAvTAotCQkJCUMvTyBXaWxzb24gVHJhbnNmb3JtZXIgQ28uCi0JCQkJV2lsc29uIFJkLiAoUE8gQm94IDUpCi0JCQkJR2xlbiBXYXZlcmxleSBWaWN0b3JpYSAzMTUwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTBFLTI5ICAgKGhleCkJCVNoZXN0ZXIgQ29tbXVuaWNhdGlvbnMgSW5jCi0wMDBFMjkgICAgIChiYXNlIDE2KQkJU2hlc3RlciBDb21tdW5pY2F0aW9ucyBJbmMKLQkJCQkxNTkgUy4gTGluY29sbgotCQkJCVN1aXRlIDIyMQotCQkJCVNwb2thbmUgV0EgOTkyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTJBICAgKGhleCkJCVBSSVZBVEUKLTAwMEUyQSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEUtMkIgICAoaGV4KQkJU2FmYXJpIFRlY2hub2xvZ2llcwotMDAwRTJCICAgICAoYmFzZSAxNikJCVNhZmFyaSBUZWNobm9sb2dpZXMKLQkJCQk2Mzg1NSBNNDAgSHd5Ci0JCQkJTGF3dG9uIE1JIDQ5MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0yQyAgIChoZXgpCQlOZXRjb2RlYyBjby4KLTAwMEUyQyAgICAgKGJhc2UgMTYpCQlOZXRjb2RlYyBjby4KLQkJCQk0MDEgRGFlaW9uIFMvVyBDZW50ZXIsIDQ4IEphbmdkb25nCi0JCQkJWXVzb25nZ3UKLQkJCQlEYWVqb24gIDMwNS03MTUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtMkQgICAoaGV4KQkJSHl1bmRhaSBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMEUyRCAgICAgKGJhc2UgMTYpCQlIeXVuZGFpIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTIyMy0yMiwgU2FuZ2RhZXdvbi0xZG9uZywgSnVuZ3dvbi1ndQotCQkJCVNlb25nbmFtLXNpIEt5b3VuZ2tpLWRvIDQ2Mi04MDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtMkUgICAoaGV4KQkJRWRpbWF4IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBFMkUgICAgIChiYXNlIDE2KQkJRWRpbWF4IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMywgV3UtQ2h1YW4gM3JkIFJvYWQsCi0JCQkJV3UtS3UgSW5kdXN0cmlhbCBQYXJrLAotCQkJCVRhaXBlaSBIc2llbiwgIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtMkYgICAoaGV4KQkJRGlzZXRyb25pYyBNZWRpY2FsIFN5c3RlbXMgQUcKLTAwMEUyRiAgICAgKGJhc2UgMTYpCQlEaXNldHJvbmljIE1lZGljYWwgU3lzdGVtcyBBRwotCQkJCUtpcmNoYmVyZ3N0cmFzc2UgMTkwCi0JCQkJQnVyZ2RvcmYgQmVybiAzNDAxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEUtMzAgICAoaGV4KQkJQUVSQVMgTmV0d29ya3MsIEluYy4KLTAwMEUzMCAgICAgKGJhc2UgMTYpCQlBRVJBUyBOZXR3b3JrcywgSW5jLgotCQkJCVAuTy4gQm94IDczMzAKLQkJCQlMYWd1bmEgTmlndWVsIENBIDkyNjA3LTczMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTMxICAgKGhleCkJCU9seW1wdXMgU29mdCBJbWFnaW5nIFNvbHV0aW9ucyBHbWJICi0wMDBFMzEgICAgIChiYXNlIDE2KQkJT2x5bXB1cyBTb2Z0IEltYWdpbmcgU29sdXRpb25zIEdtYkgKLQkJCQlKb2hhbm4tS3JhbmUtV2VnIDM5Ci0JCQkJTXVuc3RlciA0ODE0OQotCQkJCUdFUk1BTlkKLQotMDAtMEUtMzIgICAoaGV4KQkJS29udHJvbiBNZWRpY2FsCi0wMDBFMzIgICAgIChiYXNlIDE2KQkJS29udHJvbiBNZWRpY2FsCi0JCQkJUmVpbmFjaGVyc3RyYXNzZSAxMzEKLQkJCQlCYXNlbCAgNDAwMgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBFLTMzICAgKGhleCkJCVNodWtvIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMEUzMyAgICAgKGJhc2UgMTYpCQlTaHVrbyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJVE9IU0hJTiBISUdBU0hJLUlLRUJVS1VSTyBCdWlsZGluZyAzRgotCQkJCTUtNDQtMTUsSElHQVNISS1JS0VCVUtVUk8sVE9TSElNQS1LVQotCQkJCVRPS1lPIEtBTlRPSCAxNzAtMDA2MwotCQkJCUpBUEFOCi0KLTAwLTBFLTM0ICAgKGhleCkJCU5leEdlbiBDaXR5LCBMUAotMDAwRTM0ICAgICAoYmFzZSAxNikJCU5leEdlbiBDaXR5LCBMUAotCQkJCTE2ODAgR2xlbnZpbGxlCi0JCQkJU3VpdGUgMTAwCi0JCQkJUmljaGFyZHNvbiBUZXhhcyA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMzUgICAoaGV4KQkJSW50ZWwgQ29ycAotMDAwRTM1ICAgICAoYmFzZSAxNikJCUludGVsIENvcnAKLQkJCQkyMTExIE5FIDI1dGggQXZlCi0JCQkJSkYzLTQyMAotCQkJCUhpbGxzYm9ybyBPUiA5NzEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMzYgICAoaGV4KQkJSEVJTkVTWVMsIEluYy4KLTAwMEUzNiAgICAgKGJhc2UgMTYpCQlIRUlORVNZUywgSW5jLgotCQkJCTNGLCBTdW5na3dhbmcgQmxkZy4gNDU2LTEzLCBTdW5nbmFlLWRvbmcKLQkJCQlLYW5nZG9uZy1ndQotCQkJCVNlb3VsICAxMzQtODQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLTM3ICAgKGhleCkJCUhhcm1zICYgV2VuZGUgR21iSCAmIENvLktHCi0wMDBFMzcgICAgIChiYXNlIDE2KQkJSGFybXMgJiBXZW5kZSBHbWJIICYgQ28uS0cKLQkJCQlHcm9zc21vb3JrZWhyZSA5Ci0JCQkJSGFtYnVyZyAgRC0yMTA3OQotCQkJCUdFUk1BTlkKLQotMDAtMEUtMzggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRTM4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMzkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRTM5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtM0EgICAoaGV4KQkJQ2lycnVzIExvZ2ljCi0wMDBFM0EgICAgIChiYXNlIDE2KQkJQ2lycnVzIExvZ2ljCi0JCQkJMjkwMSBWaWEgRm9ydHVuYQotCQkJCUF1c3RpbiBUWCA3ODc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtM0IgICAoaGV4KQkJSGF3a2luZyBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEUzQiAgICAgKGJhc2UgMTYpCQlIYXdraW5nIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE1MjgxQSBCYXJyYW5jYSBQYXJrd2F5Ci0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0zQyAgIChoZXgpCQlUcmFuc2FjdCBUZWNobm9sb2dpZXMgSW5jCi0wMDBFM0MgICAgIChiYXNlIDE2KQkJVHJhbnNhY3QgVGVjaG5vbG9naWVzIEluYwotCQkJCTIwIEJvbWF4IERyaXZlCi0JCQkJSXRoYWNhIE5ldyBZb3JrIDE0ODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0zRCAgIChoZXgpCQlUZWxldmljIE4uVi4KLTAwMEUzRCAgICAgKGJhc2UgMTYpCQlUZWxldmljIE4uVi4KLQkJCQlMZW8gQmVrYWVydGxhYW4gMQotCQkJCUl6ZWdlbSAgODg3MAotCQkJCUJFTEdJVU0KLQotMDAtMEUtM0UgICAoaGV4KQkJU3VuIE9wdHJvbmljcyBJbmMKLTAwMEUzRSAgICAgKGJhc2UgMTYpCQlTdW4gT3B0cm9uaWNzIEluYwotCQkJCTQtMzgtNCBGdWNoaW5vYmUtaG9uY2hvdQotCQkJCVNhZ2FtaWhhcmEgS2FuYWdhd2EgMjI5LTAwMDIKLQkJCQlKQVBBTgotCi0wMC0wRS0zRiAgIChoZXgpCQlTb3JvbnRpLCBJbmMuCi0wMDBFM0YgICAgIChiYXNlIDE2KQkJU29yb250aSwgSW5jLgotCQkJCTEyMTU5IEJ1c2luZXNzIFBhcmsgRHIsIFN1aXRlIDE0MAotCQkJCURyYXBlciBVdGFoIDg0MDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS00MCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMEU0MCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMEUtNDEgICAoaGV4KQkJTklIT04gTUVDSEFUUk9OSUNTIENPLixMVEQuCi0wMDBFNDEgICAgIChiYXNlIDE2KQkJTklIT04gTUVDSEFUUk9OSUNTIENPLixMVEQuCi0JCQkJOS02IFNISU9NSURBSSwgTUlZQU1BRS1LVQotCQkJCUtBV0FTQUtJLVNISSBLQU5BR0FXQS1LRU4gMjE2LTAwMTMKLQkJCQlKQVBBTgotCi0wMC0wRS00MiAgIChoZXgpCQlNb3RpYyBJbmNvcG9yYXRpb24gTHRkLgotMDAwRTQyICAgICAoYmFzZSAxNikJCU1vdGljIEluY29wb3JhdGlvbiBMdGQuCi0JCQkJUm9vbSAyOTA3LTgsIFdpbmRzb3IgIEhvdXNlCi0JCQkJMzExIEdsb3VjZXN0ZXIgUm9hZCwgQ2F1c2V3YXkgQmF5Ci0JCQkJSG9uZyBLb25nICAKLQkJCQlDSElOQQotCi0wMC0wRS00MyAgIChoZXgpCQlHLVRlayBFbGVjdHJvbmljcyBTZG4uIEJoZC4KLTAwMEU0MyAgICAgKGJhc2UgMTYpCQlHLVRlayBFbGVjdHJvbmljcyBTZG4uIEJoZC4KLQkJCQkyNDkzIE11a2ltIDEsIExvcm9uZyBQZXJ1c2FoYWFuIExhcGFuCi0JCQkJS2F3YXNhbiBQZXJpbmR1c3RyaWFuIFBlcmFpCi0JCQkJUGVyYWkgUGVuYW5nIDEzNjAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMEUtNDQgICAoaGV4KQkJRGlnaXRhbCA1LCBJbmMuCi0wMDBFNDQgICAgIChiYXNlIDE2KQkJRGlnaXRhbCA1LCBJbmMuCi0JCQkJMTAxIEdyb3ZlcnMgTWlsbCBSZC4KLQkJCQlTdWl0ZSAyMDAKLQkJCQlMYXdyZW5jZXZpbGxlIE5KIDA4NjQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS00NSAgIChoZXgpCQlCZWlqaW5nIE5ld3RyeSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgTHRkCi0wMDBFNDUgICAgIChiYXNlIDE2KQkJQmVpamluZyBOZXd0cnkgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEx0ZAotCQkJCVBPIEJveCA5NSwgTm8uIDEgQmVpIFNoYSBUYW4sCi0JCQkJQ2hhbyBZYW5nIFF1Ci0JCQkJQmVpamluZyAgMTAwODMKLQkJCQlDSElOQQotCi0wMC0wRS00NiAgIChoZXgpCQlOaWlnYXRhIFNlaW1pdHN1IENvLixMdGQuCi0wMDBFNDYgICAgIChiYXNlIDE2KQkJTmlpZ2F0YSBTZWltaXRzdSBDby4sTHRkLgotCQkJCTMzMzUtMiwgU2hpbW9uYWthLCBTYW53YS1tdXJhCi0JCQkJTmFrYWt1YmlraS1ndW4gTmlpZ2F0YSA5NDMtMDIyMgotCQkJCUpBUEFOCi0KLTAwLTBFLTQ3ICAgKGhleCkJCU5DSSBTeXN0ZW0gQ28uLEx0ZC4KLTAwMEU0NyAgICAgKGJhc2UgMTYpCQlOQ0kgU3lzdGVtIENvLixMdGQuCi0JCQkJIzIwNiwgS2F5YW5nIFRlY2huby1Ub3duLCAxNDg3LCBLYXlhbmcgMyBkb25nLCBLYW5nc2VvLUt1LCBTZW91bCwgS29yZWEKLQkJCQlTZW91bCAgMTU3LTgxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS00OCAgIChoZXgpCQlMaXBtYW4gVHJhbnNBY3Rpb24gU29sdXRpb25zCi0wMDBFNDggICAgIChiYXNlIDE2KQkJTGlwbWFuIFRyYW5zQWN0aW9uIFNvbHV0aW9ucwotCQkJCTExIEhhYW1hbCBTdC4KLQkJCQkgUm9zaC1IYWF5aW4gIDQ4MDkyCi0JCQkJSVNSQUVMCi0KLTAwLTBFLTQ5ICAgKGhleCkJCUZvcnN3YXkgU2NhbmRpbmF2aWEgQUIKLTAwMEU0OSAgICAgKGJhc2UgMTYpCQlGb3Jzd2F5IFNjYW5kaW5hdmlhIEFCCi0JCQkJS2FwbGFuc2dhdGFuIDE2IEIKLQkJCQk1NDEgMzQgU2tvdmRlIAotCQkJCVNXRURFTgotCi0wMC0wRS00QSAgIChoZXgpCQlDaGFuZ2NodW4gSHVheXUgV0VCUEFEIENvLixMVEQKLTAwMEU0QSAgICAgKGJhc2UgMTYpCQlDaGFuZ2NodW4gSHVheXUgV0VCUEFEIENvLixMVEQKLQkJCQk0MzcwIEdhb3hpbiBSb2FkLCBIaWdoLVRlY2gKLQkJCQlEZXZlbG9wbWVudCBBcmVhCi0JCQkJQ2hhbmdjaHVuIEppbGluIDEzMDAxMgotCQkJCUNISU5BCi0KLTAwLTBFLTRCICAgKGhleCkJCWF0cml1bSBjIGFuZCBpCi0wMDBFNEIgICAgIChiYXNlIDE2KQkJYXRyaXVtIGMgYW5kIGkKLQkJCQkxMjQtNCwgT2plb24tZG9uZywKLQkJCQlVaXdhbmctY2l0eSBLeXVuZ2dpLURvIDQzNy04MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtNEMgICAoaGV4KQkJQmVybWFpIEluYy4KLTAwMEU0QyAgICAgKGJhc2UgMTYpCQlCZXJtYWkgSW5jLgotCQkJCTQxMCBDYW1icmlkZ2UgQXZlCi0JCQkJMm5kIEZsb29yCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS00RCAgIChoZXgpCQlOdW1lc2EgSW5jLgotMDAwRTREICAgICAoYmFzZSAxNikJCU51bWVzYSBJbmMuCi0JCQkJNDQ0NCBXZXN0Z3JvdmUgU3VpdGUgMzAwCi0JCQkJQWRkaXNvbiBUWCA3NTAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNEUgICAoaGV4KQkJV2F2ZXBsdXMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMEU0RSAgICAgKGJhc2UgMTYpCQlXYXZlcGx1cyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTM0NyBIc2luSHUgMm5kIFJkLiwgTmVpSHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtNEYgICAoaGV4KQkJVHJhamV0IEdtYkgKLTAwMEU0RiAgICAgKGJhc2UgMTYpCQlUcmFqZXQgR21iSAotCQkJCVJlYmVucmluZyAzMwotCQkJCUJyYXVuc2Nod2VpZyBOZHMuIDM4MTA2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS01MCAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDAwRTUwICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NwotCQkJCUVkZWdlbSBBbnR3ZXJwIEItMjY1MAotCQkJCUJFTEdJVU0KLQotMDAtMEUtNTEgICAoaGV4KQkJdGVjbmEgZWxldHRyb25pY2Egc3JsCi0wMDBFNTEgICAgIChiYXNlIDE2KQkJdGVjbmEgZWxldHRyb25pY2Egc3JsCi0JCQkJdmlhIG1pZ2xpb2xpIDMwCi0JCQkJY2FzdGVsIHNhbiBwaWV0cm8gdGVybWUgYm9sb2duYSA0MDAyNAotCQkJCUlUQUxZCi0KLTAwLTBFLTUyICAgKGhleCkJCU9wdGl1bSBDb3Jwb3JhdGlvbgotMDAwRTUyICAgICAoYmFzZSAxNikJCU9wdGl1bSBDb3Jwb3JhdGlvbgotCQkJCTUwMCBIb3Jpem9uIERyCi0JCQkJU3VpdGUgNTA1Ci0JCQkJQ2hhbGZvbnQgUEEgMTg5MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTUzICAgKGhleCkJCUFWIFRFQ0ggQ09SUE9SQVRJT04KLTAwMEU1MyAgICAgKGJhc2UgMTYpCQlBViBURUNIIENPUlBPUkFUSU9OCi0JCQkJMTBGLEUgQnVpbGRpbmcsTm8uMTktMTEgU2FuIENodW5nIFJkLixOYW5LYW5nCi0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTU0ICAgKGhleCkJCUFscGhhQ2VsbCBXaXJlbGVzcyBMdGQuCi0wMDBFNTQgICAgIChiYXNlIDE2KQkJQWxwaGFDZWxsIFdpcmVsZXNzIEx0ZC4KLQkJCQkyMiBaYXJoaW4gc3RyZWV0Ci0JCQkJUmFhbmFuYSAgNDM2NjIKLQkJCQlJU1JBRUwKLQotMDAtMEUtNTUgICAoaGV4KQkJQVVWSVRSQU4KLTAwMEU1NSAgICAgKGJhc2UgMTYpCQlBVVZJVFJBTgotCQkJCTdjIGNoZW1pbiBkZXMgcHJlcwotCQkJCU1FWUxBTiAgMzg0MTAKLQkJCQlGUkFOQ0UKLQotMDAtMEUtNTYgICAoaGV4KQkJNEcgU3lzdGVtcyBHbWJIICYgQ28uIEtHCi0wMDBFNTYgICAgIChiYXNlIDE2KQkJNEcgU3lzdGVtcyBHbWJIICYgQ28uIEtHCi0JCQkJSmFycmVzdHJhc3NlIDItNgotCQkJCTIyMzAzIEhhbWJ1cmcgCi0JCQkJR0VSTUFOWQotCi0wMC0wRS01NyAgIChoZXgpCQlJd29ybGQgTmV0d29ya2luZywgSW5jLgotMDAwRTU3ICAgICAoYmFzZSAxNikJCUl3b3JsZCBOZXR3b3JraW5nLCBJbmMuCi0JCQkJMTI1IEhhbmp1IEJsZGcsIE5vbmh5dW4tRG9uZwotCQkJCUthbmctTmFtIEd1Ci0JCQkJU2VvdWwgIDEzNTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS01OCAgIChoZXgpCQlTb25vcywgSW5jLgotMDAwRTU4ICAgICAoYmFzZSAxNikJCVNvbm9zLCBJbmMuCi0JCQkJMjIzIEUuIERlIExhIEd1ZXJyYSBTdC4KLQkJCQlTYW50YSBCYXJiYXJhIENBIDkzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS01OSAgIChoZXgpCQlTQUdFTSBTQQotMDAwRTU5ICAgICAoYmFzZSAxNikJCVNBR0VNIFNBCi0JCQkJMiwgcnVlIGR1IHBldGl0IEFsYmkKLQkJCQlDRVJHWSBTQUlOVCBDSFJJU1RPUEhFIHZhbCBkJ09pc2UgOTU4MDAKLQkJCQlGUkFOQ0UKLQotMDAtMEUtNUEgICAoaGV4KQkJVEVMRUZJRUxEIGluYy4KLTAwMEU1QSAgICAgKGJhc2UgMTYpCQlURUxFRklFTEQgaW5jLgotCQkJCTNGLCBLdW1ibyBCbGRnLCAyLTksIFNlb2tjaG9uLURvbmcKLQkJCQlTb25ncGEtR3UKLQkJCQlTZW91bCAgMTM4LTE5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS01QiAgIChoZXgpCQlQYXJrZXJWaXNpb24gLSBEaXJlY3QyRGF0YQotMDAwRTVCICAgICAoYmFzZSAxNikJCVBhcmtlclZpc2lvbiAtIERpcmVjdDJEYXRhCi0JCQkJOTQzMiBCYXltZWFkb3dzIFdheQotCQkJCVN1aXRlIDE1MAotCQkJCUphY2tzb252aWxsZSBGTCAzMjI0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNUMgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMEU1QyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTVEICAgKGhleCkJCVRyaXBsZSBQbGF5IFRlY2hub2xvZ2llcyBBL1MKLTAwMEU1RCAgICAgKGJhc2UgMTYpCQlUcmlwbGUgUGxheSBUZWNobm9sb2dpZXMgQS9TCi0JCQkJSGVyc3RlZHZhbmcgOAotCQkJCUFsYmVydHNsdW5kICBESy0yNjIwCi0JCQkJREVOTUFSSwotCi0wMC0wRS01RSAgIChoZXgpCQlSYWlzZWNvbSBUZWNobm9sb2d5Ci0wMDBFNUUgICAgIChiYXNlIDE2KQkJUmFpc2Vjb20gVGVjaG5vbG9neQotCQkJCTIgRmxvb3IsIFNvdXRoIEJ1aWxkaW5nIG9mIFJhaW5ib3cgUGxhemEKLQkJCQlOby4gMTEgU2hhbmdkaSBJbmZvcm1hdGlvbiBSb2FkCi0JCQkJSGFpZGlhbiBEaXN0cmljdCBCZWlqaW5nIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTBFLTVGICAgKGhleCkJCWFjdGl2LW5ldCBHbWJIICYgQ28uIEtHCi0wMDBFNUYgICAgIChiYXNlIDE2KQkJYWN0aXYtbmV0IEdtYkggJiBDby4gS0cKLQkJCQlLb25yYWQtWnVzZS1TdHIuIDQKLQkJCQlCb2NodW0gIDQ0ODAxCi0JCQkJR0VSTUFOWQotCi0wMC0wRS02MCAgIChoZXgpCQkzNjBTVU4gRGlnaXRhbCBCcm9hZGJhbmQgQ29ycG9yYXRpb24KLTAwMEU2MCAgICAgKGJhc2UgMTYpCQkzNjBTVU4gRGlnaXRhbCBCcm9hZGJhbmQgQ29ycG9yYXRpb24KLQkJCQkyRi0yLCBOby4yLCBKaWFuYmEgUmQuLAotCQkJCUNodW5nIEhvIFRhaXBlaSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTYxICAgKGhleCkJCU1JQ1JPVFJPTCBMSU1JVEVECi0wMDBFNjEgICAgIChiYXNlIDE2KQkJTUlDUk9UUk9MIExJTUlURUQKLQkJCQkxNiBFTEdBUiBCVVNJTkVTUyBDRU5UUkUKLQkJCQlNT1NFTEVZIFJPQUQKLQkJCQlIQUxMT1cgV09SQ0VTVEVSIFdSMiA2TkoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS02MiAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMEU2MiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wRS02MyAgIChoZXgpCQlMZW1rZSBEaWFnbm9zdGljcyBHbWJICi0wMDBFNjMgICAgIChiYXNlIDE2KQkJTGVta2UgRGlhZ25vc3RpY3MgR21iSAotCQkJCVJhZGVidXJnZXIgU3RyLiA0NwotCQkJCVZvbGtlcnNkb3JmIFNheG9ueSAwMTQ2OAotCQkJCUdFUk1BTlkKLQotMDAtMEUtNjQgICAoaGV4KQkJRWxwaGVsLCBJbmMKLTAwMEU2NCAgICAgKGJhc2UgMTYpCQlFbHBoZWwsIEluYwotCQkJCTMyMDAgUy4gRWxwbWVyIFN0LgotCQkJCU1hZ25hIFVUIDg0MDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS02NSAgIChoZXgpCQlUcmFuc0NvcmUKLTAwMEU2NSAgICAgKGJhc2UgMTYpCQlUcmFuc0NvcmUKLQkJCQk4NjAwIEplZmZlcnNvbiBTdCBORQotCQkJCUFsYnVxdWVycXVlIE5NIDg3MTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS02NiAgIChoZXgpCQlIaXRhY2hpIEFkdmFuY2VkIERpZ2l0YWwsIEluYy4KLTAwMEU2NiAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIEFkdmFuY2VkIERpZ2l0YWwsIEluYy4KLQkJCQkyOTIsIFlvc2hpZGEtY2hvLCBUb3RzdWthLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjQ0LTA4MTcKLQkJCQlKQVBBTgotCi0wMC0wRS02NyAgIChoZXgpCQlFbHRpcyBNaWNyb2VsZWN0cm9uaWNzIEx0ZC4KLTAwMEU2NyAgICAgKGJhc2UgMTYpCQlFbHRpcyBNaWNyb2VsZWN0cm9uaWNzIEx0ZC4KLQkJCQlVbml0IDkwMkIsIDkvRi4sIFN1bmJlYW0gQ2VudHJlCi0JCQkJMjcsIFNoaW5nIFlpcCBTdHJlZXQKLQkJCQlLd3VuIFRvbmcgS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMEUtNjggICAoaGV4KQkJRS1UT1AgTmV0d29yayBUZWNobm9sb2d5IEluYy4KLTAwMEU2OCAgICAgKGJhc2UgMTYpCQlFLVRPUCBOZXR3b3JrIFRlY2hub2xvZ3kgSW5jLgotCQkJCU5vLiA3LCBTaGluIFNoaW4gUmQuLAotCQkJCVRhaW5hbiAgNzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS02OSAgIChoZXgpCQlDaGluYSBFbGVjdHJpYyBQb3dlciBSZXNlYXJjaCBJbnN0aXR1dGUKLTAwMEU2OSAgICAgKGJhc2UgMTYpCQlDaGluYSBFbGVjdHJpYyBQb3dlciBSZXNlYXJjaCBJbnN0aXR1dGUKLQkJCQlOby4xNSBYaWFveWluZyBFYXN0IFJvYWQsUWluZ2hlLEJlaWppbmcsQ2hpbmEKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0wRS02QSAgIChoZXgpCQkzQ29tIEx0ZAotMDAwRTZBICAgICAoYmFzZSAxNikJCTNDb20gTHRkCi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS02QiAgIChoZXgpCQlKYW5pdHphIGVsZWN0cm9uaWNzIEdtYkgKLTAwMEU2QiAgICAgKGJhc2UgMTYpCQlKYW5pdHphIGVsZWN0cm9uaWNzIEdtYkgKLQkJCQlWb3IgZGVtIFBvbHN0dWNrIDEKLQkJCQlMYWhuYXUgSGVzc2VuIDM1NjMzCi0JCQkJR0VSTUFOWQotCi0wMC0wRS02QyAgIChoZXgpCQlEZXZpY2UgRHJpdmVycyBMaW1pdGVkCi0wMDBFNkMgICAgIChiYXNlIDE2KQkJRGV2aWNlIERyaXZlcnMgTGltaXRlZAotCQkJCTEtNS0xLTEwMwotCQkJCVdha2FtYXRzdS1jaG8KLQkJCQlGdWNodS1zaGkgVG9reW8gMTgzMDAwNQotCQkJCUpBUEFOCi0KLTAwLTBFLTZEICAgKGhleCkJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotMDAwRTZEICAgICAoYmFzZSAxNikJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTIyODgsIE9hemEtT2hzaGlub2hhcmEsIFlhc3UtY2hvLAotCQkJCVlhc3UtZ3VuIFNoaWdhIDUyMC0yMzkzCi0JCQkJSkFQQU4KLQotMDAtMEUtNkUgICAoaGV4KQkJTUlDUkVMRUMgIEVMRUNUUk9OSUNTIFMuQQotMDAwRTZFICAgICAoYmFzZSAxNikJCU1JQ1JFTEVDICBFTEVDVFJPTklDUyBTLkEKLQkJCQkxNiBJU01JTklTIFNUUi4KLQkJCQlBVEhFTlMgQUVHQUxFTyAxMjI0MQotCQkJCUdSRUVDRQotCi0wMC0wRS02RiAgIChoZXgpCQlJUklTIENvcnBvcmF0aW9uIEJlcmhhZAotMDAwRTZGICAgICAoYmFzZSAxNikJCUlSSVMgQ29ycG9yYXRpb24gQmVyaGFkCi0JCQkJSVJJUyBTbWFydCBUZWNobm9sb2d5IENvbXBsZXgKLQkJCQlUZWNobm9sb2d5IFBhcmsgTWFsYXlzaWEsIEJ1a2l0IEphbGlsCi0JCQkJS3VhbGEgTHVtcHVyIFdQIDU3MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMEUtNzAgICAoaGV4KQkJaW4yIE5ldHdvcmtzCi0wMDBFNzAgICAgIChiYXNlIDE2KQkJaW4yIE5ldHdvcmtzCi0JCQkJMzIwIFcgIDIwMCBTCi0JCQkJU3VpdGUgIzM4MAotCQkJCVNMQyBVVCA4NDEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNzEgICAoaGV4KQkJR2Vtc3RhciBUZWNobm9sb2d5IERldmVsb3BtZW50IEx0ZC4KLTAwMEU3MSAgICAgKGJhc2UgMTYpCQlHZW1zdGFyIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgTHRkLgotCQkJCVVuaXQgMjAxLCBTdHVsZXggaG91c2UsIDY5OCBwcmluY2UgZWR3YXJkIHJvYWQgZWFzdCwgc2FuIHBvIGtvbmcsIEtvbHdvb24KLQkJCQlIb25nIEtvbmcgIDg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0wRS03MiAgIChoZXgpCQlDVFMgZWxlY3Ryb25pY3MKLTAwMEU3MiAgICAgKGJhc2UgMTYpCQlDVFMgZWxlY3Ryb25pY3MKLQkJCQlDb3JzbyBWZXJjZWxsaSAzMzIKLQkJCQlJdnJlYSBUb3Jpbm8gMTAwMTUKLQkJCQlJVEFMWQotCi0wMC0wRS03MyAgIChoZXgpCQlUcGFjayBBL1MKLTAwMEU3MyAgICAgKGJhc2UgMTYpCQlUcGFjayBBL1MKLQkJCQlMYXV0cnVwYmplcmcgNyAtIDExCi0JCQkJREsgMjc1MCAgQmFsbGVydXAgIERLIDI3NTAKLQkJCQlERU5NQVJLCi0KLTAwLTBFLTc0ICAgKGhleCkJCVNvbGFyIFRlbGVjb20uIFRlY2gKLTAwMEU3NCAgICAgKGJhc2UgMTYpCQlTb2xhciBUZWxlY29tLiBUZWNoCi0JCQkJQiBCL0QsIDRGLCBTYW1obyBWZW50dXJlIFRvd2VyCi0JCQkJIzI3NS02LCBZYW5namFlLURvbmcsIFNlY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy05NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtNzUgICAoaGV4KQkJTmV3IFlvcmsgQWlyIEJyYWtlIENvcnAuCi0wMDBFNzUgICAgIChiYXNlIDE2KQkJTmV3IFlvcmsgQWlyIEJyYWtlIENvcnAuCi0JCQkJNzQ4IFN0YXJidWNrIEF2ZS4KLQkJCQlXYXRlcnRvd24gTlkgMTM2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTc2ICAgKGhleCkJCUdFTVNPQyBJTk5PVklTSU9OIElOQy4KLTAwMEU3NiAgICAgKGJhc2UgMTYpCQlHRU1TT0MgSU5OT1ZJU0lPTiBJTkMuCi0JCQkJOUYsTm8uNTE2LFNlYywxTmVpaHUgUmQuLAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS03NyAgIChoZXgpCQlEZWNydSwgSW5jLgotMDAwRTc3ICAgICAoYmFzZSAxNikJCURlY3J1LCBJbmMuCi0JCQkJMjc1IFNob3JlbGluZSBEcgotCQkJCVN1aXRlIDQ1MAotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNzggICAoaGV4KQkJQW10ZWxjbwotMDAwRTc4ICAgICAoYmFzZSAxNikJCUFtdGVsY28KLQkJCQk0ODAwIEN1cnRpbiBEcml2ZQotCQkJCU1jRmFybGFuZCBXSSA1MzU1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNzkgICAoaGV4KQkJQW1wbGUgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwRTc5ICAgICAoYmFzZSAxNikJCUFtcGxlIENvbW11bmljYXRpb25zIEluYy4KLQkJCQk0MDM0IENsaXBwZXIgQ3QuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtN0EgICAoaGV4KQkJR2VtV29uIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDAwRTdBICAgICAoYmFzZSAxNikJCUdlbVdvbiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQkzRkwuLE5PLjMyLExhbmUgMTM1LFNoaWFuamVuZyA5dGggUmQuLEp1YmVpIENpdHkKLQkJCQlIc2luY2h1ICAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTdCICAgKGhleCkJCVRvc2hpYmEKLTAwMEU3QiAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LCBTdWVoaXJvLUNobwotCQkJCU9tZSBUb2t5byAxOTg4NzEwCi0JCQkJSkFQQU4KLQotMDAtMEUtN0MgICAoaGV4KQkJVGVsZXZlcyBTLkEuCi0wMDBFN0MgICAgIChiYXNlIDE2KQkJVGVsZXZlcyBTLkEuCi0JCQkJUnVhIEJlbmVmaWNhIENvbnhvIDE3Ci0JCQkJU2FudGlhZ28gZGUgQ29tcG9zdGVsYSBDb3J1bmEgMTU3MDYKLQkJCQlTUEFJTgotCi0wMC0wRS03RCAgIChoZXgpCQlFbGVjdHJvbmljcyBMaW5lIDMwMDAgTHRkLgotMDAwRTdEICAgICAoYmFzZSAxNikJCUVsZWN0cm9uaWNzIExpbmUgMzAwMCBMdGQuCi0JCQkJMiBHcmFuaXQgU3QuCi0JCQkJUGV0YWggVGlrdmEgS2lyeWFyIEFyaWUgNDQ5MTMwCi0JCQkJSVNSQUVMCi0KLTAwLTBFLTdFICAgKGhleCkJCWlvblNpZ24gT3kKLTAwMEU3RSAgICAgKGJhc2UgMTYpCQlpb25TaWduIE95Ci0JCQkJUC5PLkJPWCAgMjQ2Ci0JCQkJRkktMjYxMDEKLQkJCQlSYXVtYSAgCi0JCQkJRklOTEFORAotCi0wMC0wRS03RiAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMEU3RiAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OSBTb3V0aAotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtODAgICAoaGV4KQkJVGhvbXNvbiBUZWNobm9sb2d5IEluYwotMDAwRTgwICAgICAoYmFzZSAxNikJCVRob21zb24gVGVjaG5vbG9neSBJbmMKLQkJCQk5MDg3QSAxOTh0aCBTVAotCQkJCVN1cnJleSBCQyBWMU0tM0IxCi0JCQkJQ0FOQURBCi0KLTAwLTBFLTgxICAgKGhleCkJCURldmljZXNjYXBlIFNvZnR3YXJlLCBJbmMuCi0wMDBFODEgICAgIChiYXNlIDE2KQkJRGV2aWNlc2NhcGUgU29mdHdhcmUsIEluYy4KLQkJCQkxMDAwIE1hcmluYSBCbHZkCi0JCQkJU3VpdGUgNDAwCi0JCQkJQnJpc2JhbmUgQ0EgOTQwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTgyICAgKGhleCkJCUNvbW10ZWNoIFdpcmVsZXNzCi0wMDBFODIgICAgIChiYXNlIDE2KQkJQ29tbXRlY2ggV2lyZWxlc3MKLQkJCQkxMTUvMzk2IFNjYXJib3JvdWdoIEJlYWNoIFJkCi0JCQkJT3Nib3JuZSBQYXJrCi0JCQkJUGVydGggV0EgNjAxNwotCQkJCUFVU1RSQUxJQQotCi0wMC0wRS04MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBFODMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS04NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBFODQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS04NSAgIChoZXgpCQlDYXRhbHlzdCBFbnRlcnByaXNlcywgSW5jLgotMDAwRTg1ICAgICAoYmFzZSAxNikJCUNhdGFseXN0IEVudGVycHJpc2VzLCBJbmMuCi0JCQkJMzM4NSBTY290dCBCbHZkCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTg2ICAgKGhleCkJCUFsY2F0ZWwgTm9ydGggQW1lcmljYQotMDAwRTg2ICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTm9ydGggQW1lcmljYQotCQkJCTIzMDEgU3VnYXIgQnVzaCBSb2FkCi0JCQkJUmFsZWlnaCBOQyAyNzYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtODcgICAoaGV4KQkJYWRwIEdhdXNlbG1hbm4gR21iSAotMDAwRTg3ICAgICAoYmFzZSAxNikJCWFkcCBHYXVzZWxtYW5uIEdtYkgKLQkJCQlCb3NjaHN0ci4gOAotCQkJCUx1ZWJiZWNrZSBOUlcgMzIzMTIKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLTg4ICAgKGhleCkJCVZJREVPVFJPTiBDT1JQLgotMDAwRTg4ICAgICAoYmFzZSAxNikJCVZJREVPVFJPTiBDT1JQLgotCQkJCTE3LTE2LDItQ0hPTUUKLQkJCQlIQUNISU9KSSBUT0tZTyAxOTMtMDgzNQotCQkJCUpBUEFOCi0KLTAwLTBFLTg5ICAgKGhleCkJCUNMRU1BVElDCi0wMDBFODkgICAgIChiYXNlIDE2KQkJQ0xFTUFUSUMKLQkJCQkxMDEgcnVlIFBpZXJyZSBTRU1BUkQKLQkJCQlDSEFUSUxMT04gUi5QLiA5MjMyMAotCQkJCUZSQU5DRQotCi0wMC0wRS04QSAgIChoZXgpCQlBdmFyYSBUZWNobm9sb2dpZXMgUHR5LiBMdGQuCi0wMDBFOEEgICAgIChiYXNlIDE2KQkJQXZhcmEgVGVjaG5vbG9naWVzIFB0eS4gTHRkLgotCQkJCTkgQnVzaW5lc3MgUGFyayBEcml2ZQotCQkJCU5vdHRpbmcgSGlsbCBWaWN0b3JpYSAzMTY4Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTBFLThCICAgKGhleCkJCUFzdGFydGUgVGVjaG5vbG9neSBDbywgTHRkLgotMDAwRThCICAgICAoYmFzZSAxNikJCUFzdGFydGUgVGVjaG5vbG9neSBDbywgTHRkLgotCQkJCTExRiwgTm8uIDE2NiBEYWgtWWVoIFJkLgotCQkJCVBlaXRvdSwgVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLThDICAgKGhleCkJCVNpZW1lbnMgQUcgQSZEIEVUCi0wMDBFOEMgICAgIChiYXNlIDE2KQkJU2llbWVucyBBRyBBJkQgRVQKLQkJCQlTaWVtZW5zc3RyYXNzZSAxMAotCQkJCVJlZ2Vuc2J1cmcgIDkzMDU1Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS04RCAgIChoZXgpCQlTeXN0ZW1zIGluIFByb2dyZXNzIEhvbGRpbmcgR21iSAotMDAwRThEICAgICAoYmFzZSAxNikJCVN5c3RlbXMgaW4gUHJvZ3Jlc3MgSG9sZGluZyBHbWJICi0JCQkJRXhlcnppZXJwbGF0enN0cmFzc2UgODUKLQkJCQlHcmF6IFN0eXJpYSA4MDUxCi0JCQkJQVVTVFJJQQotCi0wMC0wRS04RSAgIChoZXgpCQlTcGFya0xBTiBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwRThFICAgICAoYmFzZSAxNikJCVNwYXJrTEFOIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJM0ZsIC4gLCBOby4gMjQ2LCBTZWMuIDEsIE5laWh1IFJvYWQuLCBOZWlodSBDaGl1LAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS04RiAgIChoZXgpCQlTZXJjb21tIENvcnAuCi0wMDBFOEYgICAgIChiYXNlIDE2KQkJU2VyY29tbSBDb3JwLgotCQkJCTNGLE5vLjgxLFl1LVlpaCBSZC4sQ2h1LU5hbiBDaGVuCi0JCQkJTWlhby1MaWggSHN1YW4gIDM1MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtOTAgICAoaGV4KQkJUE9OSUNPIENPUlAuCi0wMDBFOTAgICAgIChiYXNlIDE2KQkJUE9OSUNPIENPUlAuCi0JCQkJNjAyLCBBY2UgVHdpbiBUb3dlciAxLCAyMTItMSBHdXJvLWRvbmcKLQkJCQlHdXJvZ3UgU2VvdWwgMTUyLTc2NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS05MSAgIChoZXgpCQlOYXZpY28gQXVja2xhbmQgTHRkCi0wMDBFOTEgICAgIChiYXNlIDE2KQkJTmF2aWNvIEF1Y2tsYW5kIEx0ZAotCQkJCTE3LTIxIEthd2FuYSBTdAotCQkJCU5vcnRoY290ZSBBdWNrbGFuZCAKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wRS05MiAgIChoZXgpCQlNaWxsaW5ldCBDby4sIEx0ZC4KLTAwMEU5MiAgICAgKGJhc2UgMTYpCQlNaWxsaW5ldCBDby4sIEx0ZC4KLQkJCQkyRiwgV2VzdCBCdWlsZGluZywgSVQgVmVudHVyZSBUb3dlciwgNzgsIEdhcmFrYm9uLWRvbmcKLQkJCQlTb25ncGEtZ3UgU2VvdWwgMTM4LTE2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS05MyAgIChoZXgpCQlNaWxlbmlvIDMgU2lzdGVtYXMgRWxlY3Ryb25pY29zLCBMZGEuCi0wMDBFOTMgICAgIChiYXNlIDE2KQkJTWlsZW5pbyAzIFNpc3RlbWFzIEVsZWN0cm9uaWNvcywgTGRhLgotCQkJCUVkaWZpY2lvIFZpYSBOb3J0ZSwgUi4gRXNwaWRvIDE2NEMgUzQwMwotCQkJCU1haWEgTWluaG8gNDQ3MC0xNzcKLQkJCQlQT1JUVUdBTAotCi0wMC0wRS05NCAgIChoZXgpCQlNYWFzIEludGVybmF0aW9uYWwgQlYKLTAwMEU5NCAgICAgKGJhc2UgMTYpCQlNYWFzIEludGVybmF0aW9uYWwgQlYKLQkJCQlTY2llbmNlIFBhcmsgRWluZGhvdmVuIDUwNTEKLQkJCQlTb24gTm9vcmQgQnJhYmFudCBOTC01NjkyIEVCCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEUtOTUgICAoaGV4KQkJRnVqaXlhIERlbmtpIFNlaXNha3VzaG8gQ28uLEx0ZC4KLTAwMEU5NSAgICAgKGJhc2UgMTYpCQlGdWppeWEgRGVua2kgU2Vpc2FrdXNobyBDby4sTHRkLgotCQkJCThGIEZ1a3VzaGltYSBCTERHLiA2LTI1LTExLE5pc2hpLUdvdGFuZGEKLQkJCQlTaGluYWdhd2EtS3UgVG9reW8gMTQxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0wRS05NiAgIChoZXgpCQlDdWJpYyBEZWZlbnNlIEFwcGxpY2F0aW9ucywgSW5jLgotMDAwRTk2ICAgICAoYmFzZSAxNikJCUN1YmljIERlZmVuc2UgQXBwbGljYXRpb25zLCBJbmMuCi0JCQkJUC5PLiBCb3ggODU1ODcKLQkJCQk5MzMzIEJhbGJvYSBBdmVudWUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxODYtNTU4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtOTcgICAoaGV4KQkJVWx0cmFja2VyIFRlY2hub2xvZ3kgQ08uLCBJbmMKLTAwMEU5NyAgICAgKGJhc2UgMTYpCQlVbHRyYWNrZXIgVGVjaG5vbG9neSBDTy4sIEluYwotCQkJCTE0Ri0xLCBOby4gODg4LCBKaW5nZ3VvIFJvYWQsIFRhb3l1YW4gQ2l0eSwKLQkJCQlUYW95dWFuICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTk4ICAgKGhleCkJCUhNRSBDbGVhci1Db20gTFRELgotMDAwRTk4ICAgICAoYmFzZSAxNikJCUhNRSBDbGVhci1Db20gTFRELgotCQkJCTc0MDAgQmVhY2ggRHJpdmUKLQkJCQlXYXRlcmJlYWNoCi0JCQkJQ2FtYnJpZGdlc2hpcmUgIENCMjUgOVRQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtOTkgICAoaGV4KQkJU3BlY3RydW0gRGlnaXRhbCwgSW5jCi0wMDBFOTkgICAgIChiYXNlIDE2KQkJU3BlY3RydW0gRGlnaXRhbCwgSW5jCi0JCQkJMTI1MDIgRXhjaGFuZ2UgRHJpdmUsIFN1aXRlIDQ0MAotCQkJCVN0YWZmb3JkIFRYIDc3NDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS05QSAgIChoZXgpCQlCT0UgVEVDSE5PTE9HWSBHUk9VUCBDTy4sTFRECi0wMDBFOUEgICAgIChiYXNlIDE2KQkJQk9FIFRFQ0hOT0xPR1kgR1JPVVAgQ08uLExURAotCQkJCU5vLjEwIEppdXhpYW5xaWFvIFJvYWQsQ2hhb3lhbmcgRGlzdHJpY3QsQmVpamluZyxQUkMKLQkJCQlCZWlqaW5nICAxMDAwMTYKLQkJCQlDSElOQQotCi0wMC0wRS05QiAgIChoZXgpCQlBbWJpdCBNaWNyb3N5c3RlbXMgQ29ycG9yYXRpb24KLTAwMEU5QiAgICAgKGJhc2UgMTYpCQlBbWJpdCBNaWNyb3N5c3RlbXMgQ29ycG9yYXRpb24KLQkJCQk1Ri0xLCA1IEhzaW4tQW4gUmQuIFNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS05QyAgIChoZXgpCQlQZW1zdGFyCi0wMDBFOUMgICAgIChiYXNlIDE2KQkJUGVtc3RhcgotCQkJCTM1MzUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVJvY2hlc3RlciBNTiA1NTkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtOUQgICAoaGV4KQkJVGlzY2FsaSBVSyBMdGQKLTAwMEU5RCAgICAgKGJhc2UgMTYpCQlUaXNjYWxpIFVLIEx0ZAotCQkJCTIwIEJyb2Fkd2ljayBTdHJlZXQKLQkJCQlMb25kb24gIFcxRiA4SFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS05RSAgIChoZXgpCQlUb3BmaWVsZCBDby4sIEx0ZAotMDAwRTlFICAgICAoYmFzZSAxNikJCVRvcGZpZWxkIENvLiwgTHRkCi0JCQkJNHRoIGZsb29yLCBEZW9rc2FuIEJsZGcgMjYwLTQsIFNlb2h5dW4tZG9uZwotCQkJCVNlb25nbmFtIEJ1bmRhbmctS3UgNDYzLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS05RiAgIChoZXgpCQlURU1JQyBTRFMgR21iSAotMDAwRTlGICAgICAoYmFzZSAxNikJCVRFTUlDIFNEUyBHbWJICi0JCQkJU29lZmxpbmdlciBTdHJhc3NlIDEwMAotCQkJCVVsbSAgODkwNzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLUEwICAgKGhleCkJCU5ldEtsYXNzIFRlY2hub2xvZ3kgSW5jLgotMDAwRUEwICAgICAoYmFzZSAxNikJCU5ldEtsYXNzIFRlY2hub2xvZ3kgSW5jLgotCQkJCTJGLTEsIE5vLjMwLFRhaSBZdWVuIFN0cmVldCwKLQkJCQlDaHVwZWkgQ2l0eSwgSHNpbmNodSwgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1BMSAgIChoZXgpCQlGb3Jtb3NhIFRlbGV0ZWsgQ29ycG9yYXRpb24KLTAwMEVBMSAgICAgKGJhc2UgMTYpCQlGb3Jtb3NhIFRlbGV0ZWsgQ29ycG9yYXRpb24KLQkJCQkzNTgsSHVheWEgMm5kIFJkLgotCQkJCUd1ZWlzaGFuIFNoaWFuZwotCQkJCVRhb3l1YW4gIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtQTIgICAoaGV4KQkJTWNBZmVlLCBJbmMKLTAwMEVBMiAgICAgKGJhc2UgMTYpCQlNY0FmZWUsIEluYwotCQkJCTM1MCBTVyAxMnRoIEF2ZW51ZQotCQkJCURlZXJmaWVsZCBCZWFjaCBGTCAzMzQ0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQTMgICAoaGV4KQkJQ05DUi1JVCBDTy4sTFRELEhhbmdaaG91IFAuUi5DSElOQQotMDAwRUEzICAgICAoYmFzZSAxNikJCUNOQ1ItSVQgQ08uLExURCxIYW5nWmhvdSBQLlIuQ0hJTkEKLQkJCQlYdWFuVGFuIHJvYWQgTk8xLmRlcGFydG1lbnQgcm9vbTUwNCwKLQkJCQlIYW5nWmhvdSBaaGVKaWFuZyAzMTAwMDMKLQkJCQlDSElOQQotCi0wMC0wRS1BNCAgIChoZXgpCQlDZXJ0YW5jZSBJbmMuCi0wMDBFQTQgICAgIChiYXNlIDE2KQkJQ2VydGFuY2UgSW5jLgotCQkJCTE2NTAgU3VuZmxvd2VyIEF2ZS4KLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI2LTE1MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUE1ICAgKGhleCkJCUJMSVAgU3lzdGVtcwotMDAwRUE1ICAgICAoYmFzZSAxNikJCUJMSVAgU3lzdGVtcwotCQkJCUhhZWtrZW4gMgotCQkJCVZvZHNrb3YgVmVzdGVyIEhhc3NpbmcgOTMxMAotCQkJCURFTk1BUksKLQotMDAtMEUtQTYgICAoaGV4KQkJQVNVU1RFSyBDT01QVVRFUiBJTkMuCi0wMDBFQTYgICAgIChiYXNlIDE2KQkJQVNVU1RFSyBDT01QVVRFUiBJTkMuCi0JCQkJTm8uIDE1MCwgTGktVGUgUmQuLFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1BNyAgIChoZXgpCQlFbmRhY2UgVGVjaG5vbG9neQotMDAwRUE3ICAgICAoYmFzZSAxNikJCUVuZGFjZSBUZWNobm9sb2d5Ci0JCQkJODUgQWxleGFuZHJhIFN0cmVldAotCQkJCUhhbWlsdG9uICAzMjA0Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMEUtQTggICAoaGV4KQkJVW5pdGVkIFRlY2hub2xvZ2lzdHMgRXVyb3BlIExpbWl0ZWQKLTAwMEVBOCAgICAgKGJhc2UgMTYpCQlVbml0ZWQgVGVjaG5vbG9naXN0cyBFdXJvcGUgTGltaXRlZAotCQkJCVVURUwgTGFib3JhdG9yaWVzLCBXb2x2ZXMgRmFybSBMYW5lCi0JCQkJSXBzd2ljaCBSb2FkCi0JCQkJSGFkbGVpZ2ggU3VmZm9sayBJUDcgNkJICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtQTkgICAoaGV4KQkJU2hhbmdoYWkgWHVuIFNoaSBDb21tdW5pY2F0aW9ucyBFcXVpcG1lbnQgTHRkLiBDby4KLTAwMEVBOSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBYdW4gU2hpIENvbW11bmljYXRpb25zIEVxdWlwbWVudCBMdGQuIENvLgotCQkJCUhpLVRlY2ggS2luZyBXb3JsZCwgVW5pdCBDNjAzCi0JCQkJIzY2NiBCZWlqaW5nIFJvYWQgKEUpCi0JCQkJU2hhbmdoYWkgIDIwMDAwMQotCQkJCUNISU5BCi0KLTAwLTBFLUFBICAgKGhleCkJCVNjYWxlbnQgU3lzdGVtcywgSW5jLgotMDAwRUFBICAgICAoYmFzZSAxNikJCVNjYWxlbnQgU3lzdGVtcywgSW5jLgotCQkJCTQ5MCBTLiBDYWxpZm9ybmlhIEF2ZQotCQkJCVBhbG8gQWx0byBDQSA5NDMwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQUIgICAoaGV4KQkJQ3JheSBJbmMKLTAwMEVBQiAgICAgKGJhc2UgMTYpCQlDcmF5IEluYwotCQkJCTQxMSBGaXJzdCBBdmUgUyBTdWl0ZSA2MDAKLQkJCQlTZWF0dGxlIFdBIDk4MTA0Ci0JCQkJQ0FOQURBCi0KLTAwLTBFLUFDICAgKGhleCkJCU1JTlRST04gRU5URVJQUklTRSBDTy4sIExURC4KLTAwMEVBQyAgICAgKGJhc2UgMTYpCQlNSU5UUk9OIEVOVEVSUFJJU0UgQ08uLCBMVEQuCi0JCQkJTk8uMyxXdS1LdW5nIDVSZC4sIFd1LUt1IEluZCBQYXJrCi0JCQkJVGFpcGVpIENvdW50eSAgMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1BRCAgIChoZXgpCQlNZXRhbm9pYSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEVBRCAgICAgKGJhc2UgMTYpCQlNZXRhbm9pYSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk1OTE4IFcuIGNvdXJ0eWFyZCBEci4KLQkJCQlTdWl0ZSAzMzAKLQkJCQlBdXN0aW4gVFggNzg3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUFFICAgKGhleCkJCUdBV0VMTCBURUNITk9MT0dJRVMgQ09SUC4KLTAwMEVBRSAgICAgKGJhc2UgMTYpCQlHQVdFTEwgVEVDSE5PTE9HSUVTIENPUlAuCi0JCQkJMkYsTk8uMTAyLFNFQy4zLEpVTkcgU0hBTiBSRCwKLQkJCQlKVU5HIEhPIENJVFksIFRBSVBFSSBIU0lFTiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLUFGICAgKGhleCkJCUNBU1RFTAotMDAwRUFGICAgICAoYmFzZSAxNikJCUNBU1RFTAotCQkJCVpJIFNhaW50IExhbWJlcnQgZGVzIExldmVlcwotCQkJCVNBVU1VUiBNYWluZSBldCBMb2lyZSA0OTQxMgotCQkJCUZSQU5DRQotCi0wMC0wRS1CMCAgIChoZXgpCQlTb2x1dGlvbnMgUmFkaW8gQlYKLTAwMEVCMCAgICAgKGJhc2UgMTYpCQlTb2x1dGlvbnMgUmFkaW8gQlYKLQkJCQlQcmluc2VncmFjaHQgODIKLQkJCQlUaGUgSGFndWUgWkggMjUxMiBHQwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBFLUIxICAgKGhleCkJCU5ld2NvdGVjaCxMdGQKLTAwMEVCMSAgICAgKGJhc2UgMTYpCQlOZXdjb3RlY2gsTHRkCi0JCQkJQW55YW5nIE1lZ2F2YWxseSA3MTUtMwotCQkJCUt3YW55YW5nLURvbmcsIERvbmdhbi1HdSwKLQkJCQlBbnlhbmcgQ2l0eSBHdWVvbmdnaS1EbyA0MzEtMTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLUIyICAgKGhleCkJCU1pY3JvLVJlc2VhcmNoIEZpbmxhbmQgT3kKLTAwMEVCMiAgICAgKGJhc2UgMTYpCQlNaWNyby1SZXNlYXJjaCBGaW5sYW5kIE95Ci0JCQkJVmFsaXRhbG9udGllIDgzIEMKLQkJCQlIZWxzaW5raSAgRklOLTAwNjYwCi0JCQkJRklOTEFORAotCi0wMC0wRS1CMyAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQKLTAwMEVCMyAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQKLQkJCQkyNTgwIDU1dGggU3RyZWV0Ci0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQjQgICAoaGV4KQkJR1VBTkdaSE9VIEdBT0tFIENPTU1VTklDQVRJT05TIFRFQ0hOT0xPR1kgQ08uTFRELgotMDAwRUI0ICAgICAoYmFzZSAxNikJCUdVQU5HWkhPVSBHQU9LRSBDT01NVU5JQ0FUSU9OUyBURUNITk9MT0dZIENPLkxURC4KLQkJCQlBVkUuIDM5OCBaSE9OR1NIQU4KLQkJCQlHVUFOR1pIT1UgR1VBTkdET05HIDUxMDY2MAotCQkJCUNISU5BCi0KLTAwLTBFLUI1ICAgKGhleCkJCUVjYXN0bGUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDBFQjUgICAgIChiYXNlIDE2KQkJRWNhc3RsZSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjNTAyLCBOYW1qYW5nIEIvRCwgQmFuZ2JhZS1kb25nLAotCQkJCVNlb2Noby1rdSwKLQkJCQlTZW91bCAgMTM3LTgxOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS1CNiAgIChoZXgpCQlSaXZlcmJlZCBUZWNobm9sb2d5LCBJbmMuCi0wMDBFQjYgICAgIChiYXNlIDE2KQkJUml2ZXJiZWQgVGVjaG5vbG9neSwgSW5jLgotCQkJCTUwMSBTZWNvbmQgU3RyZWV0Ci0JCQkJU3VpdGUgNDEwCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQjcgICAoaGV4KQkJS25vdmF0aXZlLCBJbmMuCi0wMDBFQjcgICAgIChiYXNlIDE2KQkJS25vdmF0aXZlLCBJbmMuCi0JCQkJMTEyNDUgV2VzdCBCZXJuYXJkbyBDb3VydAotCQkJCVN1aXRlIDEwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQjggICAoaGV4KQkJSWlnYSBjby4sTHRkCi0wMDBFQjggICAgIChiYXNlIDE2KQkJSWlnYSBjby4sTHRkCi0JCQkJM0YgVEtCbGRnLiAzLTUtMiBTb3Rva2FuZGEKLQkJCQlDaGl5b2RhLUt1IFRva3lvIDEwMS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMEUtQjkgICAoaGV4KQkJSEFTSElNT1RPIEVsZWN0cm9uaWNzIEluZHVzdHJ5IENvLixMdGQuCi0wMDBFQjkgICAgIChiYXNlIDE2KQkJSEFTSElNT1RPIEVsZWN0cm9uaWNzIEluZHVzdHJ5IENvLixMdGQuCi0JCQkJMzg2Ni0xMiBUYWthc3UtY2hvCi0JCQkJTWF0c3VzYWthIE1pZSA1MTUtMDEwNAotCQkJCUpBUEFOCi0KLTAwLTBFLUJBICAgKGhleCkJCUhBTk1JIFNFTUlDT05EVUNUT1IgQ08uLCBMVEQuCi0wMDBFQkEgICAgIChiYXNlIDE2KQkJSEFOTUkgU0VNSUNPTkRVQ1RPUiBDTy4sIExURC4KLQkJCQkjNTMyLTIsIEdhandhLURvbmcsIFNlby1LdSwKLQkJCQlJbmNoZW9uICA0MDQgMjUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLUJCICAgKGhleCkJCUV2ZXJiZWUgTmV0d29ya3MKLTAwMEVCQiAgICAgKGJhc2UgMTYpCQlFdmVyYmVlIE5ldHdvcmtzCi0JCQkJNDEsIEJvdWxldmFyZCBkZXMgQ2FwdWNpbmVzCi0JCQkJUGFyaXMgIDc1MDAyCi0JCQkJRlJBTkNFCi0KLTAwLTBFLUJDICAgKGhleCkJCVBhcmFnb24gRmlkZWxpdHkgR21iSAotMDAwRUJDICAgICAoYmFzZSAxNikJCVBhcmFnb24gRmlkZWxpdHkgR21iSAotCQkJCVNjaHdhZGVybXVobHN0cmFzc2UgNGEKLQkJCQlDYWRvbHpidXJnICA5MDU1NgotCQkJCUdFUk1BTlkKLQotMDAtMEUtQkQgICAoaGV4KQkJQnVyZGljaywgYSBRdWludG9uIENvbXBueQotMDAwRUJEICAgICAoYmFzZSAxNikJCUJ1cmRpY2ssIGEgUXVpbnRvbiBDb21wbnkKLQkJCQk1MDAgQnVyZGljayBQYXJrd2F5Ci0JCQkJRGVlcmZpZWxkIFdJIDUzNTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1CRSAgIChoZXgpCQlCJkIgRWxlY3Ryb25pY3MgTWFudWZhY3R1cmluZyBDby4KLTAwMEVCRSAgICAgKGJhc2UgMTYpCQlCJkIgRWxlY3Ryb25pY3MgTWFudWZhY3R1cmluZyBDby4KLQkJCQk3MDcgRGF5dG9uIFJvYWQKLQkJCQlQLk8uIEJveCAxMDQwCi0JCQkJT3R0YXdhIElsaW5vaXMgNjEzNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUJGICAgKGhleCkJCVJlbXNkYXEgTGltaXRlZAotMDAwRUJGICAgICAoYmFzZSAxNikJCVJlbXNkYXEgTGltaXRlZAotCQkJCVBhcmt3YXkKLQkJCQlEZWVzaWRlIEluZHVzdHJpYWwgUGFyawotCQkJCURlZXNpZGUgRmxpbnRzaGlyZSBDSDUgMk5MCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtQzAgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBFQzAgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMEUtQzEgICAoaGV4KQkJTVlOQUggVGVjaG5vbG9naWVzCi0wMDBFQzEgICAgIChiYXNlIDE2KQkJTVlOQUggVGVjaG5vbG9naWVzCi0JCQkJNTA0IFRyYWRlIENlbnRlciBCbHZkCi0JCQkJQ2hlc3RlcmZpZWxkIE1PIDYzMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1DMiAgIChoZXgpCQlMb3dyYW5jZSBFbGVjdHJvbmljcywgSW5jLgotMDAwRUMyICAgICAoYmFzZSAxNikJCUxvd3JhbmNlIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMTIwMDAgRS4gU2tlbGx5IERyaXZlCi0JCQkJVHVsc2EgT0sgNzQxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUMzICAgKGhleCkJCUxvZ2ljIENvbnRyb2xzLCBJbmMuCi0wMDBFQzMgICAgIChiYXNlIDE2KQkJTG9naWMgQ29udHJvbHMsIEluYy4KLQkJCQkzNTUgRGVudG9uIEF2ZW51ZQotCQkJCU5ldyBIeWRlIFBhcmsgTlkgMTEwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUM0ICAgKGhleCkJCUlza3JhIFRyYW5zbWlzc2lvbiBkLmQuCi0wMDBFQzQgICAgIChiYXNlIDE2KQkJSXNrcmEgVHJhbnNtaXNzaW9uIGQuZC4KLQkJCQlTdGVnbmUgMTEKLQkJCQlManVibGphbmEgIDEwMDAKLQkJCQlTTE9WRU5JQQotCi0wMC0wRS1DNSAgIChoZXgpCQlEaWdpdGFsIE11bHRpdG9vbHMgSW5jCi0wMDBFQzUgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBNdWx0aXRvb2xzIEluYwotCQkJCTkwMDUgTGVzbGllIFN0cmVldCAgVW5pdCAyMDUKLQkJCQlSaWNobW9uZCBIaWxsIE9udGFyaW8gTDRCIDFHNwotCQkJCUNBTkFEQQotCi0wMC0wRS1DNiAgIChoZXgpCQlBU0lYIEVMRUNUUk9OSUNTIENPUlAuCi0wMDBFQzYgICAgIChiYXNlIDE2KQkJQVNJWCBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTRGLCBOTy44LCBIU0lOIEFOTiBSRC4sCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUkssCi0JCQkJSFNJTkNIVSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1DNyAgIChoZXgpCQlNb3Rvcm9sYSBLb3JlYQotMDAwRUM3ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIEtvcmVhCi0JCQkJSGlicmFuZCBCL0QgMTdGIFNXIFRlYW0gTW90b3JvbGEgS29yZWEKLQkJCQlZYW5namFlZG9uZyBTZW9jaG8gCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLUM4ICAgKGhleCkJCVpvcmFuIENvcnBvcmF0aW9uCi0wMDBFQzggICAgIChiYXNlIDE2KQkJWm9yYW4gQ29ycG9yYXRpb24KLQkJCQkxMzkwIEtpZmVyIFJkLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQzkgICAoaGV4KQkJWU9LTyBUZWNobm9sb2d5IENvcnAuCi0wMDBFQzkgICAgIChiYXNlIDE2KQkJWU9LTyBUZWNobm9sb2d5IENvcnAuCi0JCQkJNkYsIE5vLjEwLCBMYW5lMTYsIFNlYzIsIFN6ZS1DaHVhbiBSZC4sIFBhbi0KLQkJCQlDaGlhbyBDaXR5LAotCQkJCVRhaXBlaSAgODg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1DQSAgIChoZXgpCQlXVFNTIEluYwotMDAwRUNBICAgICAoYmFzZSAxNikJCVdUU1MgSW5jCi0JCQkJNTk5OSBBdmVuaWRhIEVuY2luYXMKLQkJCQlTdWl0ZSAxNTAKLQkJCQlDYXJsc2JhZCBDQSA5MjAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQ0IgICAoaGV4KQkJVmluZVN5cyBUZWNobm9sb2d5Ci0wMDBFQ0IgICAgIChiYXNlIDE2KQkJVmluZVN5cyBUZWNobm9sb2d5Ci0JCQkJMzM1MCBTY290dCBCbHZkLiBidWlsZGluZyAxNS0wMwotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1DQyAgIChoZXgpCQlUYWJsZWF1LCBMTEMKLTAwMEVDQyAgICAgKGJhc2UgMTYpCQlUYWJsZWF1LCBMTEMKLQkJCQlOOCBXMjIxOTUgSm9obnNvbiBEcml2ZSwgU3VpdGUgMTAwCi0JCQkJV2F1a2VzaGEgV0kgNTMxODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUNEICAgKGhleCkJCVNLT1YgQS9TCi0wMDBFQ0QgICAgIChiYXNlIDE2KQkJU0tPViBBL1MKLQkJCQlIZWRlbHVuZCA0Ci0JCQkJR2x5bmdvZXJlCi0JCQkJUm9zbGV2ICBESy03ODcwCi0JCQkJREVOTUFSSwotCi0wMC0wRS1DRSAgIChoZXgpCQlTLkkuVC5ULkkuIFMucC5BLgotMDAwRUNFICAgICAoYmFzZSAxNikJCVMuSS5ULlQuSS4gUy5wLkEuCi0JCQkJVmlhIENhZG9ybmEgNjkKLQkJCQlWaW1vZHJvbmUgTWlsYW4gSS0yMDA5MAotCQkJCUlUQUxZCi0KLTAwLTBFLUNGICAgKGhleCkJCVBST0ZJQlVTIE51dHplcm9yZ2FuaXNhdGlvbiBlLlYuCi0wMDBFQ0YgICAgIChiYXNlIDE2KQkJUFJPRklCVVMgTnV0emVyb3JnYW5pc2F0aW9uIGUuVi4KLQkJCQlIYWlkLXVuZC1OZXUtU3RyYXNzZSA3Ci0JCQkJS2FybHNydWhlIEJhZGVuLVd1cnR0ZW1iZXJnIDc2MTMxCi0JCQkJR0VSTUFOWQotCi0wMC0wRS1EMCAgIChoZXgpCQlQcml2YXJpcywgSW5jLgotMDAwRUQwICAgICAoYmFzZSAxNikJCVByaXZhcmlzLCBJbmMuCi0JCQkJNjUwIFBldGVyIEplZmZlcnNvbiBQa3d5LCBTdGUgMzMwCi0JCQkJQ2hhcmxvdHRlc3ZpbGxlIFZpcmdpbmlhIDIyOTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1EMSAgIChoZXgpCQlPc2FrYSBNaWNybyBDb21wdXRlci4KLTAwMEVEMSAgICAgKGJhc2UgMTYpCQlPc2FrYSBNaWNybyBDb21wdXRlci4KLQkJCQlJc29ub2thbWljeW8gMy0xMS03Ci0JCQkJS2lzaGl3YWRhIE9zYWthIDU5NjAwMDEKLQkJCQlKQVBBTgotCi0wMC0wRS1EMiAgIChoZXgpCQlGaWx0cm9uaWMgcGxjCi0wMDBFRDIgICAgIChiYXNlIDE2KQkJRmlsdHJvbmljIHBsYwotCQkJCVRoZSBXYXRlcmZyb250Ci0JCQkJU2FsdHMgTWlsbCBSZAotCQkJCVNhbHRhaXJlIFcgWW9ya3MgQkQxOCAzVFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS1EMyAgIChoZXgpCQlFcGljZW50ZXIsIEluYy4KLTAwMEVEMyAgICAgKGJhc2UgMTYpCQlFcGljZW50ZXIsIEluYy4KLQkJCQkyMTEgQiBDYWxsZSBQaW50b3Jlc2NvCi0JCQkJU2FuIENsZW1lbnRlIENBIDkyNjcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1ENCAgIChoZXgpCQlDUkVTSVRUIElORFVTVFJJRQotMDAwRUQ0ICAgICAoYmFzZSAxNikJCUNSRVNJVFQgSU5EVVNUUklFCi0JCQkJMTIgcnVlIGRlIEJsb2lzCi0JCQkJT3JsZWFucyBCUCA2NzQ0IDQ1MDY3ICBjZWRleAotCQkJCUZSQU5DRQotCi0wMC0wRS1ENSAgIChoZXgpCQlDT1BBTiBTeXN0ZW1zIEluYy4KLTAwMEVENSAgICAgKGJhc2UgMTYpCQlDT1BBTiBTeXN0ZW1zIEluYy4KLQkJCQkyNjA1IFRyYWRlIENlbnRyZSBBdmUuCi0JCQkJU3VpdGUgRAotCQkJCUxvbmdtb250IENPIDgwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1ENiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBFRDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1ENyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBFRDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1EOCAgIChoZXgpCQlBa3Rpbm8sIEluYy4KLTAwMEVEOCAgICAgKGJhc2UgMTYpCQlBa3Rpbm8sIEluYy4KLQkJCQkxODU1MSBWb24gS2FybWFuIEF2ZW51ZQotCQkJCVN1aXRlIDIwMQotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtRDkgICAoaGV4KQkJQWtzeXMsIEx0ZC4KLTAwMEVEOSAgICAgKGJhc2UgMTYpCQlBa3N5cywgTHRkLgotCQkJCTIgTWFycmlvdHQgRHJpdmUKLQkJCQlMaW5jb2xuc2hpcmUgSUwgNjAwNjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLURBICAgKGhleCkJCUMtVEVDSCBVTklURUQgQ09SUC4KLTAwMEVEQSAgICAgKGJhc2UgMTYpCQlDLVRFQ0ggVU5JVEVEIENPUlAuCi0JCQkJNUYsIE5vIDY2NSwgQ0hVTkcgQ0hFTiBSRC4KLQkJCQlIU0lOIENIVUFORyBDSVRUICBvZiBUQUlQRUkgSFNJRU4gIDI0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtREIgICAoaGV4KQkJWGlOQ09NIENvcnAuCi0wMDBFREIgICAgIChiYXNlIDE2KQkJWGlOQ09NIENvcnAuCi0JCQkJMjg0MCBJbmR1c3RyaWFsIEF2ZS4KLQkJCQlIdWJiYXJkIE9SIDk3MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1EQyAgIChoZXgpCQlUZWxsaW9uIElOQy4KLTAwMEVEQyAgICAgKGJhc2UgMTYpCQlUZWxsaW9uIElOQy4KLQkJCQk1dGggRmwuIEJPTkEgVmVudHVyZSBUb3duCi0JCQkJMTU4Ni0xIFNlb2NobyAzLWRvbmcsIFNlb2Noby1ndQotCQkJCVNlb3VsIFNlb2Noby1ndS4gMTM3LTcxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS1ERCAgIChoZXgpCQlTSFVSRSBJTkNPUlBPUkFURUQKLTAwMEVERCAgICAgKGJhc2UgMTYpCQlTSFVSRSBJTkNPUlBPUkFURUQKLQkJCQk1ODAwIFcuIFRPVUhZIEFWRS4KLQkJCQlOSUxFUyBJTCA2MDcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtREUgICAoaGV4KQkJUkVNRUMsIEluYy4KLTAwMEVERSAgICAgKGJhc2UgMTYpCQlSRU1FQywgSW5jLgotCQkJCTIxNDQgRnJhbmtsaW4gRHJpdmUgTkUKLQkJCQlQYWxtIEJheSBGbG9yaWRhIDMyOTA1LTQwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLURGICAgKGhleCkJCVBMWCBUZWNobm9sb2d5Ci0wMDBFREYgICAgIChiYXNlIDE2KQkJUExYIFRlY2hub2xvZ3kKLQkJCQk4NzAgTWF1ZGUgQXZlLiwKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUUwICAgKGhleCkJCU1jaGFyZ2UKLTAwMEVFMCAgICAgKGJhc2UgMTYpCQlNY2hhcmdlCi0JCQkJRmlyc3RlYyBCbGRnLC4gMTUtNCBZb3VpZG8tRG9uZwotCQkJCVlvdW5nZGV1bmdwby1HdSwKLQkJCQlzZW91bCBZb3VpZG8gMTUwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS1FMSAgIChoZXgpCQlFeHRyZW1lU3BlZWQgSW5jLgotMDAwRUUxICAgICAoYmFzZSAxNikJCUV4dHJlbWVTcGVlZCBJbmMuCi0JCQkJUE8gQm94IDYwMAotCQkJCTQ2MzQtNDZ0aCBTdHJlZXQgU3VpdGUgMjAxCi0JCQkJTWFubnZpbGxlIEFsYmVydGEgVDBCIDJXMAotCQkJCUNBTkFEQQotCi0wMC0wRS1FMiAgIChoZXgpCQlDdXN0b20gRW5naW5lZXJpbmcgUy5wLkEuCi0wMDBFRTIgICAgIChiYXNlIDE2KQkJQ3VzdG9tIEVuZ2luZWVyaW5nIFMucC5BLgotCQkJCVZpYSBCZXJldHR0aW5lIDIvYgotCQkJCUZvbnRldml2byBQYXJtYSA0MzAxMAotCQkJCUlUQUxZCi0KLTAwLTBFLUUzICAgKGhleCkJCUNoaXl1IFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwRUUzICAgICAoYmFzZSAxNikJCUNoaXl1IFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLiAyOCwgUmVuYWkgUm9hZCwgQ2hpYXlpLCA2MDAKLQkJCQlDaGlheWkgIDYwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtRTQgICAoaGV4KQkJQk9FIFRFQ0hOT0xPR1kgR1JPVVAgQ08uLExURAotMDAwRUU0ICAgICAoYmFzZSAxNikJCUJPRSBURUNITk9MT0dZIEdST1VQIENPLixMVEQKLQkJCQlOby4xMCBKaXV4aWFucWlhbyBSb2FkLENoYW95YW5nIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDAxNgotCQkJCUNISU5BCi0KLTAwLTBFLUU1ICAgKGhleCkJCWJpdFdhbGxldCwgSW5jLgotMDAwRUU1ICAgICAoYmFzZSAxNikJCWJpdFdhbGxldCwgSW5jLgotCQkJCUdhdGUgQ2l0eSBPaHNha2kgV2VzdCBUb3dlciAxOEYsIDEtMTEtMSBPc2FraSwgU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gIDE0MTAwMzIKLQkJCQlKQVBBTgotCi0wMC0wRS1FNiAgIChoZXgpCQlBZGltb3MgU3lzdGVtcyBMVEQKLTAwMEVFNiAgICAgKGJhc2UgMTYpCQlBZGltb3MgU3lzdGVtcyBMVEQKLQkJCQkxNyBBdGlyZXktWWVkYSBTdHJlZXQKLQkJCQlLZmFyLVNhYmEgIDQ0NjQzCi0JCQkJSVNSQUVMCi0KLTAwLTBFLUU3ICAgKGhleCkJCUFBQyBFTEVDVFJPTklDUyBDT1JQLgotMDAwRUU3ICAgICAoYmFzZSAxNikJCUFBQyBFTEVDVFJPTklDUyBDT1JQLgotCQkJCUZMT09SIDcsU0lYVEggQlVJTERJTkcgT0YgTkFJQU5ZT1UgVE5BTiBJTkRVU1RSSUFMIEFSRUEsTkFOU0hBTiBESVNUUklDVAotCQkJCVNIRU5aSEVOIFBST1ZJTkNFIEdVQU5HRE9ORyA1MTgwNTQKLQkJCQlDSElOQQotCi0wMC0wRS1FOCAgIChoZXgpCQl6aW9uY29tCi0wMDBFRTggICAgIChiYXNlIDE2KQkJemlvbmNvbQotCQkJCVdlc3Qgd2luZyA1L0YgLiwgQmxvY2sgMSwgR2FvWGluIFNvdXRoIFJpbmcgUmQvS2VqaSBTb3V0aCBSZCwKLQkJCQlWaXNpb24oU2hlblpoZW4pQnVzaW5lc3MgUGFyaywgU2hlbnpoZW4gSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTBFLUU5ICAgKGhleCkJCVdheVRlY2ggRGV2ZWxvcG1lbnQsIEluYy4KLTAwMEVFOSAgICAgKGJhc2UgMTYpCQlXYXlUZWNoIERldmVsb3BtZW50LCBJbmMuCi0JCQkJMTFGbG9vciwgMjUzIE1pbi1TaGVuZyBSb2FkCi0JCQkJSHNpbkNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1FQSAgIChoZXgpCQlTaGFkb25nIEx1bmVuZyBKaWNoZW5nIEVsZWN0cm9uaWNzLENvLixMdGQKLTAwMEVFQSAgICAgKGJhc2UgMTYpCQlTaGFkb25nIEx1bmVuZyBKaWNoZW5nIEVsZWN0cm9uaWNzLENvLixMdGQKLQkJCQlOby4xODgsZWFzdCxIdWF5dWFuIFJvYWQKLQkJCQlKaW5hbiBTaGFuZG9uZyAyNTAxMDAKLQkJCQlDSElOQQotCi0wMC0wRS1FQiAgIChoZXgpCQlTYW5kbWFydGluKHpob25nIHNoYW4pRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAwRUVCICAgICAoYmFzZSAxNikJCVNhbmRtYXJ0aW4oemhvbmcgc2hhbilFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJM3N0IEluZHVzdHJpYWwgQXJlYSxUYW4gWmhvdSwKLQkJCQlaaG9uZ3NoYW4gR3Vhbmdkb25nIDUyODQ2NwotCQkJCUNISU5BCi0KLTAwLTBFLUVDICAgKGhleCkJCU9yYmFuCi0wMDBFRUMgICAgIChiYXNlIDE2KQkJT3JiYW4KLQkJCQkxNTI1IEFsdmFyYWRvIFN0LgotCQkJCVNhbiBMZWFuZHJvIENBIDk0NTc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1FRCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAwRUVEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0wRS1FRSAgIChoZXgpCQlNdWNvIEluZHVzdHJpZSBCVgotMDAwRUVFICAgICAoYmFzZSAxNikJCU11Y28gSW5kdXN0cmllIEJWCi0JCQkJUGxlaW11aWRlbiAxMmUKLQkJCQlBbXN0ZXJkYW0gTkggMTA0NiBBRwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBFLUVGICAgKGhleCkJCVBSSVZBVEUKLTAwMEVFRiAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEUtRjAgICAoaGV4KQkJRmVzdG8gQUcgJiBDby4gS0cKLTAwMEVGMCAgICAgKGJhc2UgMTYpCQlGZXN0byBBRyAmIENvLiBLRwotCQkJCVJ1aXRlcnN0cmFzc2UgODIKLQkJCQlFc3NsaW5nZW4gIDczNzM0Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS1GMSAgIChoZXgpCQlFWlFVRVNUIElOQy4KLTAwMEVGMSAgICAgKGJhc2UgMTYpCQlFWlFVRVNUIElOQy4KLQkJCQkyMTEzMyBFLiBMQSBQQUxNQSBBVkUuCi0JCQkJWU9SQkEgTElOREEgQ0EgOTI4ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUYyICAgKGhleCkJCUluZmluaWNvIENvcnBvcmF0aW9uCi0wMDBFRjIgICAgIChiYXNlIDE2KQkJSW5maW5pY28gQ29ycG9yYXRpb24KLQkJCQk0RiwgRi0xIEJsZGcuLCAxLTItMTIsCi0JCQkJSGFtYW1hdHN1Y2hvLCBNaXRhbm8ta3UKLQkJCQlUb2t5byAgMTA1LTAwMTMKLQkJCQlKQVBBTgotCi0wMC0wRS1GMyAgIChoZXgpCQlTbWFydGhvbWUKLTAwMEVGMyAgICAgKGJhc2UgMTYpCQlTbWFydGhvbWUKLQkJCQkxNjU0MiBNaWxsaWthbiBBdmUuCi0JCQkJSXJ2aW5lIENBIDkyNjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1GNCAgIChoZXgpCQlLYXNkYSBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwRUY0ICAgICAoYmFzZSAxNikJCUthc2RhIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJMi9GLEJ1aWxkaW5nIDIsQmFndWEgMiByb2FkLEZ1dGlhbiwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgUHJvdmluY2UgNTE4MDI5Ci0JCQkJQ0hJTkEKLQotMDAtMEUtRjUgICAoaGV4KQkJaVBBQyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwRUY1ICAgICAoYmFzZSAxNikJCWlQQUMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk2RiwgTm8uIDMwLCBTaGluZ2p1bmcgUm9hZCwgTmVpaHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtRjYgICAoaGV4KQkJRS1URU4gSW5mb3JtYXRpb24gU3lzdGVtcyBDby4sIEx0ZC4KLTAwMEVGNiAgICAgKGJhc2UgMTYpCQlFLVRFTiBJbmZvcm1hdGlvbiBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCU5vLiAyNTYsIFlhbmdndWFuZyBTdHJlZXQsIE5laWh1IENoaXUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtRjcgICAoaGV4KQkJVnVsY2FuIFBvcnRhbHMgSW5jCi0wMDBFRjcgICAgIChiYXNlIDE2KQkJVnVsY2FuIFBvcnRhbHMgSW5jCi0JCQkJNTA1IDV0aCBBdmUgU291dGgsIFN1aXRlIDkwMAotCQkJCVNlYXR0bGUgV0EgOTgxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUY4ICAgKGhleCkJCVNCQyBBU0kKLTAwMEVGOCAgICAgKGJhc2UgMTYpCQlTQkMgQVNJCi0JCQkJTmV0d29yayAmIEluZnJhc3RydWN0dXJlIFRlY2huaWNhbCBTdXBwb3J0Ci0JCQkJMTAxMCBOIFNhaW50IE1hcnlzCi0JCQkJU2FuIEFudG9uaW8gVGV4YXMgNzgyMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUY5ICAgKGhleCkJCVJFQSBFbGVrdHJvbmlrIEdtYkgKLTAwMEVGOSAgICAgKGJhc2UgMTYpCQlSRUEgRWxla3Ryb25payBHbWJICi0JCQkJVGVpY2h3aWVzZW5zdHIuIDEKLQkJCQlNdWVobHRhbCBIZXNzZW4gNjQzNjcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLUZBICAgKGhleCkJCU9wdG93YXkgVGVjaG5vbG9neSBJbmNvcnBvcmF0aW9uCi0wMDBFRkEgICAgIChiYXNlIDE2KQkJT3B0b3dheSBUZWNobm9sb2d5IEluY29ycG9yYXRpb24KLQkJCQlOby4gMzgsIEt1YW5nIEZ1IFNvdXRoIFJvYWQKLQkJCQlIc2luIENodSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIdSBLb3UgSHNpbiBDaHUgMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1GQiAgIChoZXgpCQlNYWNleSBFbnRlcnByaXNlcwotMDAwRUZCICAgICAoYmFzZSAxNikJCU1hY2V5IEVudGVycHJpc2VzCi0JCQkJUC5PLiBCb3ggNzI2NwotCQkJCVRlbXBlIEFaIDg1MjgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1GQyAgIChoZXgpCQlKVEFHIFRlY2hub2xvZ2llcyBCLlYuCi0wMDBFRkMgICAgIChiYXNlIDE2KQkJSlRBRyBUZWNobm9sb2dpZXMgQi5WLgotCQkJCUJvc2NoZGlqayA1MAotCQkJCUVpbmRob3ZlbiBOQiA1NjEyIEFOCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEUtRkQgICAoaGV4KQkJRlVKSU5PTiBDT1JQT1JBVElPTgotMDAwRUZEICAgICAoYmFzZSAxNikJCUZVSklOT04gQ09SUE9SQVRJT04KLQkJCQkxLTMyNCBVRVRBS0UsIEtJVEEtS1UsCi0JCQkJU0FJVEFNQSBDSVRZIFNBSVRBTUEgMzMxLTk2MjQKLQkJCQlKQVBBTgotCi0wMC0wRS1GRSAgIChoZXgpCQlFbmRSdW4gVGVjaG5vbG9naWVzIExMQwotMDAwRUZFICAgICAoYmFzZSAxNikJCUVuZFJ1biBUZWNobm9sb2dpZXMgTExDCi0JCQkJMjI3MCBOb3J0aHBvaW50IFBhcmt3YXkKLQkJCQlTYW50YSBSb3NhIENBIDk1NDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1GRiAgIChoZXgpCQlNZWdhc29sdXRpb24sSW5jLgotMDAwRUZGICAgICAoYmFzZSAxNikJCU1lZ2Fzb2x1dGlvbixJbmMuCi0JCQkJMi03LTEwIFNoaXRheWEKLQkJCQlUYWl0byBUT0tZTyAxMTAtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTBGLTAwICAgKGhleCkJCUxlZ3JhIFN5c3RlbXMsIEluYy4KLTAwMEYwMCAgICAgKGJhc2UgMTYpCQlMZWdyYSBTeXN0ZW1zLCBJbmMuCi0JCQkJMyBCdXJsaW5ndG9uIFdvb2RzIERyaXZlCi0JCQkJQnVybGluZ3RvbiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMDEgICAoaGV4KQkJRElHSVRBTEtTIElOQwotMDAwRjAxICAgICAoYmFzZSAxNikJCURJR0lUQUxLUyBJTkMKLQkJCQkxNCBNQVJTSEFMTCBMQU5FCi0JCQkJV0VTVE9OIENUIDA2ODgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0wMiAgIChoZXgpCQlEaWdpY3ViZSBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDBGMDIgICAgIChiYXNlIDE2KQkJRGlnaWN1YmUgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCThGLE5vLiA1MSwgTGFuZSAgMzUsIEppaHUgUmQuLAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi0wMyAgIChoZXgpCQlDT00mQyBDTy4sIExURAotMDAwRjAzICAgICAoYmFzZSAxNikJCUNPTSZDIENPLiwgTFRECi0JCQkJMkYgV29vamluIEJMRCAxNDQ1LTIgU2VjaG8tRG9uZwotCQkJCVNlY2hvLUd1Ci0JCQkJU0VPVUwgIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtMDQgICAoaGV4KQkJY2ltLXVzYSBpbmMKLTAwMEYwNCAgICAgKGJhc2UgMTYpCQljaW0tdXNhIGluYwotCQkJCTEwODEzIG53IDMwdGggc3RyZWV0Ci0JCQkJbWlhbWkgZmxvcmlkYSAzMzE3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMDUgICAoaGV4KQkJM0IgU1lTVEVNIElOQy4KLTAwMEYwNSAgICAgKGJhc2UgMTYpCQkzQiBTWVNURU0gSU5DLgotCQkJCTE3MjcsIFNBTktZVUsyLURPTkcsIEJVSy1HVQotCQkJCURBRUdVICA3MDItODQ1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTA2ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwRjA2ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTBGLTA3ICAgKGhleCkJCU1hbmdyb3ZlIFN5c3RlbXMsIEluYy4KLTAwMEYwNyAgICAgKGJhc2UgMTYpCQlNYW5ncm92ZSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTAgRmFpcmZpZWxkIEJsdmQuCi0JCQkJV2FsbGluZ2ZvcmQgQ1QgMDY0OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTA4ICAgKGhleCkJCUluZGFnb24gT3kKLTAwMEYwOCAgICAgKGJhc2UgMTYpCQlJbmRhZ29uIE95Ci0JCQkJTnVpamFtaWVzdGVudGllIDUgQQotCQkJCUhlbHNpbmtpIC0gMDA0MDAKLQkJCQlGSU5MQU5ECi0KLTAwLTBGLTA5ICAgKGhleCkJCVBSSVZBVEUKLTAwMEYwOSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEYtMEEgICAoaGV4KQkJQ2xlYXIgRWRnZSBOZXR3b3JrcwotMDAwRjBBICAgICAoYmFzZSAxNikJCUNsZWFyIEVkZ2UgTmV0d29ya3MKLQkJCQkxMTI1MCBFbCBDYW1pbm8gUmVhbAotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMEIgICAoaGV4KQkJS2VudGltYSBUZWNobm9sb2dpZXMgQUIKLTAwMEYwQiAgICAgKGJhc2UgMTYpCQlLZW50aW1hIFRlY2hub2xvZ2llcyBBQgotCQkJCUJveCAxNzQKLQkJCQlLYXN0YW5qZXZhZ2VuIDIKLQkJCQlTdGFmZmFuc3RvcnAgU2thbmUgMjQ1IDQ0Ci0JCQkJU1dFREVOCi0KLTAwLTBGLTBDICAgKGhleCkJCVNZTkNIUk9OSUMgRU5HSU5FRVJJTkcKLTAwMEYwQyAgICAgKGJhc2UgMTYpCQlTWU5DSFJPTklDIEVOR0lORUVSSU5HCi0JCQkJMjUgQ0FQIERBUk5FVEFMCi0JCQkJREFSTkVUQUwgRlJBTkNFIDc2MTYwCi0JCQkJRlJBTkNFCi0KLTAwLTBGLTBEICAgKGhleCkJCUh1bnQgRWxlY3Ryb25pYyBDby4sIEx0ZC4KLTAwMEYwRCAgICAgKGJhc2UgMTYpCQlIdW50IEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0JCQkJNkZJLCBOTy4gNTctNTksIEppdW4gSCBTaWVuIFJkLiwgQ2hpIFR1IERpc3RyaWN0Ci0JCQkJS2VlbHVuZyBUYWl3YW4gMjA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi0wRSAgIChoZXgpCQlXYXZlU3BsaXR0ZXIgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBGMEUgICAgIChiYXNlIDE2KQkJV2F2ZVNwbGl0dGVyIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTIyNDggTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTBGICAgKGhleCkJCVJlYWwgSUQgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMEYwRiAgICAgKGJhc2UgMTYpCQlSZWFsIElEIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJOUYgSGFubWkgQi9EIDE5Mi0xOQotCQkJCU5vbmh5ZW9uLURvbmcKLQkJCQlHYW5nbmFtLUd1IFNlb3VsIDEzNS0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtMTAgICAoaGV4KQkJUkRNIENvcnBvcmF0aW9uCi0wMDBGMTAgICAgIChiYXNlIDE2KQkJUkRNIENvcnBvcmF0aW9uCi0JCQkJNjA4IFdlYmVyIFN0LiBOCi0JCQkJV2F0ZXJsb28gT04gTjJWIDFLNAotCQkJCUNBTkFEQQotCi0wMC0wRi0xMSAgIChoZXgpCQlQcm9kcml2ZSBCLlYuCi0wMDBGMTEgICAgIChiYXNlIDE2KQkJUHJvZHJpdmUgQi5WLgotCQkJCVAuTy4gMjgwMzAKLQkJCQlFaW5kaG92ZW4gIDU2MDIgSkEKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRi0xMiAgIChoZXgpCQlQYW5hc29uaWMgRXVyb3BlIEx0ZC4KLTAwMEYxMiAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgRXVyb3BlIEx0ZC4KLQkJCQlIZXNlYmVyZ3dlZyA0OS01MQotCQkJCVBlaW5lICBELTMxMjI4Ci0JCQkJR0VSTUFOWQotCi0wMC0wRi0xMyAgIChoZXgpCQlOaXNjYSBjb3Jwb3JhdGlvbgotMDAwRjEzICAgICAoYmFzZSAxNikJCU5pc2NhIGNvcnBvcmF0aW9uCi0JCQkJNDMwLTEKLQkJCQlLb2JheWFzaGkKLQkJCQlNYXN1aG8tQ2hvIFlhbWFuYXNoaS1LZW4gNDAwLTA1OTMKLQkJCQlKQVBBTgotCi0wMC0wRi0xNCAgIChoZXgpCQlNaW5kcmF5IENvLiwgTHRkLgotMDAwRjE0ICAgICAoYmFzZSAxNikJCU1pbmRyYXkgQ28uLCBMdGQuCi0JCQkJTWluZHJheSBCdWlsZGluZywgS2VqaSAxMnRoIFJvYWQgU291dGgKLQkJCQlIaWdoLXRlY2ggSW5kdXN0cmlhbCBQYXJrLCBOYW5zaGFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTBGLTE1ICAgKGhleCkJCUtqYWVydWxmZjEgQS9TCi0wMDBGMTUgICAgIChiYXNlIDE2KQkJS2phZXJ1bGZmMSBBL1MKLQkJCQlDLkYuIFRpZXRnZW5zIEJvdWxldmFyZCAxOQotCQkJCU9kZW5zZSBTPyBGeW4gNTIyMAotCQkJCURFTk1BUksKLQotMDAtMEYtMTYgICAoaGV4KQkJSkFZIEhPVyBURUNITk9MT0dZIENPLiwKLTAwMEYxNiAgICAgKGJhc2UgMTYpCQlKQVkgSE9XIFRFQ0hOT0xPR1kgQ08uLAotCQkJCU5PLjQ4NixTRUMuIDEsIFdBTiBTSE9VIFJELiwgS1VFSQotCQkJCVNIQU4gSFNJQU5HLCBUQU9ZVUFOIEhTSUVOCi0JCQkJVEFPWVVBTiBIU0lFTiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi0xNyAgIChoZXgpCQlJbnN0YSBFbGVrdHJvIEdtYkgKLTAwMEYxNyAgICAgKGJhc2UgMTYpCQlJbnN0YSBFbGVrdHJvIEdtYkgKLQkJCQlUYWxzdHJhc3NlIDEwNAotCQkJCUx1ZWRlbnNjaGVpZCBOUlcgRC01ODUxNQotCQkJCUdFUk1BTlkKLQotMDAtMEYtMTggICAoaGV4KQkJSW5kdXN0cmlhbCBDb250cm9sIFN5c3RlbXMKLTAwMEYxOCAgICAgKGJhc2UgMTYpCQlJbmR1c3RyaWFsIENvbnRyb2wgU3lzdGVtcwotCQkJCUhvdXRzY2hlbGYgMQotCQkJCUhhcmRpbnh2ZWxkIFp1aWQtSG9sbGFuZCBOTC0zMzcxIEtCCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEYtMTkgICAoaGV4KQkJQm9zdG9uIFNjaWVudGlmaWMKLTAwMEYxOSAgICAgKGJhc2UgMTYpCQlCb3N0b24gU2NpZW50aWZpYwotCQkJCTQxMDAgSGFtbGluZSBBdmUgTi4KLQkJCQlTdC4gUGF1bCBNTiA1NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMUEgICAoaGV4KQkJR2FtaW5nIFN1cHBvcnQgQi5WLgotMDAwRjFBICAgICAoYmFzZSAxNikJCUdhbWluZyBTdXBwb3J0IEIuVi4KLQkJCQlJbmR1c3RyaWUgd2VnIDI5Ci0JCQkJUm90dGVyZGFtIDMwNDQgQVMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRi0xQiAgIChoZXgpCQlFZ28gU3lzdGVtcyBJbmMuCi0wMDBGMUIgICAgIChiYXNlIDE2KQkJRWdvIFN5c3RlbXMgSW5jLgotCQkJCTEyMDYgV29vbGltIGUtQml6IENlbnRlciBJSQotCQkJCTE2IFlhbmdweW9uZ2RvbmczZ2EsIFlvdW5nZHVuZ3BvLWd1Ci0JCQkJU2VvdWwgIDE1MC04MzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtMUMgICAoaGV4KQkJRGlnaXRBbGwgV29ybGQgQ28uLCBMdGQKLTAwMEYxQyAgICAgKGJhc2UgMTYpCQlEaWdpdEFsbCBXb3JsZCBDby4sIEx0ZAotCQkJCVNlamluIEJsZCAyRiwgNjg5IGlsd29uMi1kb25nLAotCQkJCWdhbmduYW0tZ3UgU2VvdWwgMTM1LTk0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi0xRCAgIChoZXgpCQlDb3NtbyBUZWNocyBDby4sIEx0ZC4KLTAwMEYxRCAgICAgKGJhc2UgMTYpCQlDb3NtbyBUZWNocyBDby4sIEx0ZC4KLQkJCQkyLTYtMSwgTWF0c3VlCi0JCQkJQXRzdWdpLXNoaSBLYW5hZ2F3YS1rZW4gMjQzLTAwMDUKLQkJCQlKQVBBTgotCi0wMC0wRi0xRSAgIChoZXgpCQlDaGVuZ2R1IEtUIEVsZWN0cmljIENvLm9mIEhpZ2ggJiBOZXcgVGVjaG5vbG9neQotMDAwRjFFICAgICAoYmFzZSAxNikJCUNoZW5nZHUgS1QgRWxlY3RyaWMgQ28ub2YgSGlnaCAmIE5ldyBUZWNobm9sb2d5Ci0JCQkJTm8uMiBHYW9wZW5nIERvbmcgUm9hZCxIaWdoICYgTmV3IERldmVsb3BtZW50IFpvbmUsCi0JCQkJTm8uOSBXdWtlIEVhc3QgTm8uMyBSb2FkLFd1aG91IFpvbmUsCi0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLTAwLTBGLTFGICAgKGhleCkJCVdXIFBDQkEgVGVzdAotMDAwRjFGICAgICAoYmFzZSAxNikJCVdXIFBDQkEgVGVzdAotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTIwICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAwRjIwICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5IFNvdXRoCi0JCQkJTVMwNzA0MDUKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yMSAgIChoZXgpCQlTY2llbnRpZmljIEF0bGFudGEsIEluYwotMDAwRjIxICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgQXRsYW50YSwgSW5jCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGFya3dheQotCQkJCVBPIEJveCA0NjU0NDcKLQkJCQlMYXdyZW5jZXZpbGxlIEdhIDMwMDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yMiAgIChoZXgpCQlIZWxpdXMsIEluYy4KLTAwMEYyMiAgICAgKGJhc2UgMTYpCQlIZWxpdXMsIEluYy4KLQkJCQkzMzMgU291dGggNTIwIFdlc3QKLQkJCQlTdWl0ZSAzMzAKLQkJCQlMaW5kb24gVVQgODQwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTIzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEYyMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTI0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEYyNCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTI1ICAgKGhleCkJCUFpbVZhbGxleSBCLlYuCi0wMDBGMjUgICAgIChiYXNlIDE2KQkJQWltVmFsbGV5IEIuVi4KLQkJCQlVdHJlY2h0c2V3ZWcgMzgsCi0JCQkJSGlsdmVyc3VtIE5IIDEyMjMgVFYKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRi0yNiAgIChoZXgpCQlXb3JsZEFjY3h4ICBMTEMKLTAwMEYyNiAgICAgKGJhc2UgMTYpCQlXb3JsZEFjY3h4ICBMTEMKLQkJCQk0MDM1IFRhbXBhIFJkLgotCQkJCVN1aXRlIDYwMDAKLQkJCQlPbGRzbWFyIEZMIDM0NjY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yNyAgIChoZXgpCQlURUFMIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDBGMjcgICAgIChiYXNlIDE2KQkJVEVBTCBFbGVjdHJvbmljcywgSW5jLgotCQkJCTEwMzUwIFNvcnJlbnRvIFZhbGxleSBSb2FkCi0JCQkJU2FuIERpZWdvIENhbGlmb3JuaWEgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTI4ICAgKGhleCkJCUl0cm9uaXggQ29ycG9yYXRpb24KLTAwMEYyOCAgICAgKGJhc2UgMTYpCQlJdHJvbml4IENvcnBvcmF0aW9uCi0JCQkJU291dGggODAxIFN0ZXZlbnMgU3RyZWV0Ci0JCQkJU3Bva2FuZSBXQSA5OTIwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMjkgICAoaGV4KQkJQXVnbWVudGl4IENvcnBvcmF0aW9uCi0wMDBGMjkgICAgIChiYXNlIDE2KQkJQXVnbWVudGl4IENvcnBvcmF0aW9uCi0JCQkJNDAzMCBXIEJyYWtlciBMbgotCQkJCUJ1aWxkaW5nIDIsIFN1aXRlIDEwMAotCQkJCUF1c3RpbiBUZXhhcyA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMkEgICAoaGV4KQkJQ2FibGV3YXJlIEVsZWN0cm9uaWNzCi0wMDBGMkEgICAgIChiYXNlIDE2KQkJQ2FibGV3YXJlIEVsZWN0cm9uaWNzCi0JCQkJMTcwMiBXZXN0ZXJuIEF2ZS4KLQkJCQlTdWl0ZSBHCi0JCQkJTGFzIFZlZ2FzIE5ldmFkYSA4OTEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMkIgICAoaGV4KQkJR1JFRU5CRUxMIFNZU1RFTVMKLTAwMEYyQiAgICAgKGJhc2UgMTYpCQlHUkVFTkJFTEwgU1lTVEVNUwotCQkJCTJUSCBGbG9vciwgRG9vbmFtIEJsZGcsIDIzNi0xMSBOb25oeXVuLURvbmcsIEthbmduYW0tS3UKLQkJCQlTZW91bCAgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi0yQyAgIChoZXgpCQlVcGxvZ2l4LCBJbmMuCi0wMDBGMkMgICAgIChiYXNlIDE2KQkJVXBsb2dpeCwgSW5jLgotCQkJCUJsZGcgMSwgU3VpdGUgMjM1Ci0JCQkJODYwMSBSUiAyMjIyCi0JCQkJQXVzdGluIFRYIDc4NzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yRCAgIChoZXgpCQlDSFVORy1IU0lOIEVMRUNUUklDICYgTUFDSElORVJZIE1GRy5DT1JQLgotMDAwRjJEICAgICAoYmFzZSAxNikJCUNIVU5HLUhTSU4gRUxFQ1RSSUMgJiBNQUNISU5FUlkgTUZHLkNPUlAuCi0JCQkJTk8uIDI1LCBXZW4tVGUgUmQuLCBMby1TaGFuIFZpbGxhZ2UKLQkJCQlLd2VpIFNoYW4gSHNpYW5nIFRhb3l1YW4gSHNpZW4gMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi0yRSAgIChoZXgpCQlNZWdhcG93ZXIgSW50ZXJuYXRpb25hbCBDb3JwLgotMDAwRjJFICAgICAoYmFzZSAxNikJCU1lZ2Fwb3dlciBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJUm0uIDQwMywgTm8gMjQgLCBXdS1DaHVhbiAybmQgUmQuLAotCQkJCUhzaW4tQ2h1YW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTJGICAgKGhleCkJCVctTElOWCBURUNITk9MT0dZIENPLiwgTFRELgotMDAwRjJGICAgICAoYmFzZSAxNikJCVctTElOWCBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCSAyRixFTExFTiBMLiBTS0VMVE9OIEJVSUxESU5HLEZJU0hFUiBMQU5FIFJPQUQKLQkJCQlUT1JUT0xBICAKLQkJCQlWSVJHSU4gSVNMQU5EUywgQlJJVElTSAotCi0wMC0wRi0zMCAgIChoZXgpCQlSYXphIE1pY3JvZWxlY3Ryb25pY3MgSW5jCi0wMDBGMzAgICAgIChiYXNlIDE2KQkJUmF6YSBNaWNyb2VsZWN0cm9uaWNzIEluYwotCQkJCTMwODAgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJNXRoIEZsb29yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTMxICAgKGhleCkJCUFsbGllZCBWaXNpb24gVGVjaG5vbG9naWVzIENhbmFkYSBJbmMKLTAwMEYzMSAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVmlzaW9uIFRlY2hub2xvZ2llcyBDYW5hZGEgSW5jCi0JCQkJMTAxLTM3NTAgTm9ydGggRnJhc2VyIFdheQotCQkJCUJ1cm5hYnkgQkMgVjVKIDVFOQotCQkJCUNBTkFEQQotCi0wMC0wRi0zMiAgIChoZXgpCQlMdVRvbmcgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLixMdGQKLTAwMEYzMiAgICAgKGJhc2UgMTYpCQlMdVRvbmcgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkxMDYsIExpYW5nWGkgUm9hZAotCQkJCVd1WGkgSmlhbmdTdSAyMTQwNjMKLQkJCQlDSElOQQotCi0wMC0wRi0zMyAgIChoZXgpCQlEVUFMaSBJbmMuCi0wMDBGMzMgICAgIChiYXNlIDE2KQkJRFVBTGkgSW5jLgotCQkJCSM1MDUgU2Ftc3VuZyBUZWNobm8gUGFyayBCbGRnIDQ3MQotCQkJCVdvbmNoZW9uLWRvbmcsIFlvdW5ndG9uZy1ndQotCQkJCVN1d29uIEd5ZW9uZ2dpLWRvIDQ0Mi04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtMzQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRjM0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMzUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRjM1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMzYgICAoaGV4KQkJQWNjdXJhdGUgVGVjaGhub2xvZ2llcywgSW5jLgotMDAwRjM2ICAgICAoYmFzZSAxNikJCUFjY3VyYXRlIFRlY2hobm9sb2dpZXMsIEluYy4KLQkJCQk0NzE5OSBDYXJ0aWVyIERyLgotCQkJCVdpeG9tIE1pY2hpZ2FuIDQ4MzkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0zNyAgIChoZXgpCQlYYW1iYWxhIEluY29ycG9yYXRlZAotMDAwRjM3ICAgICAoYmFzZSAxNikJCVhhbWJhbGEgSW5jb3Jwb3JhdGVkCi0JCQkJMjY3NCBOLiAxc3QgU3RyZWV0Ci0JCQkJU3VpdGUgMjE1Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTM4ICAgKGhleCkJCU5ldHN0YXIKLTAwMEYzOCAgICAgKGJhc2UgMTYpCQlOZXRzdGFyCi0JCQkJM0YsTm8uMzQ3LCBZYW5nLWt1YW5nIFN0LixOZWktSHUgRGlzLiwKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtMzkgICAoaGV4KQkJSVJJUyBTRU5TT1JTCi0wMDBGMzkgICAgIChiYXNlIDE2KQkJSVJJUyBTRU5TT1JTCi0JCQkJWkEgbGVzIFVmZXJuZXRzCi0JCQkJVE9VTEFVRCBBcmRlY2hlIEYwNzEzMAotCQkJCUZSQU5DRQotCi0wMC0wRi0zQSAgIChoZXgpCQlISVNIQVJQCi0wMDBGM0EgICAgIChiYXNlIDE2KQkJSElTSEFSUAotCQkJCU5PLjY3MyxDSEFORyBIU0lORyBST0FEIFBBVEUgQ0lUWSxUQU9ZVUFOLAotCQkJCVRBSVBFSSAgMzM0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi0zQiAgIChoZXgpCQlGdWppIFN5c3RlbSBNYWNoaW5lcyBDby4sIEx0ZC4KLTAwMEYzQiAgICAgKGJhc2UgMTYpCQlGdWppIFN5c3RlbSBNYWNoaW5lcyBDby4sIEx0ZC4KLQkJCQk1LTgtMTAKLQkJCQlIaWJhcmlnYW9rYQotCQkJCVphbWEtU2hpIEthbmFnYXdhLUtlbiAyMjgtMDAwMwotCQkJCUpBUEFOCi0KLTAwLTBGLTNDICAgKGhleCkJCUVuZGVsZW8gTGltaXRlZAotMDAwRjNDICAgICAoYmFzZSAxNikJCUVuZGVsZW8gTGltaXRlZAotCQkJCTc4IENhbm5vbiBTdHJlZXQKLQkJCQlMb25kb24gRW5nbGFuZCBFQzROIDZOUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLTNEICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMDAwRjNEICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5vLjgsTGktc2hpbmcgU2V2ZW50aCBSb2FkLFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrLEhzaW1jaHUsCi0JCQkJSHNpbWNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi0zRSAgIChoZXgpCQlDYXJkaW9OZXQsIEluYwotMDAwRjNFICAgICAoYmFzZSAxNikJCUNhcmRpb05ldCwgSW5jCi0JCQkJMTAxMCBTZWNvbmQgQXZlbnVlCi0JCQkJU3VpdGUgNzAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0zRiAgIChoZXgpCQlCaWcgQmVhciBOZXR3b3JrcwotMDAwRjNGICAgICAoYmFzZSAxNikJCUJpZyBCZWFyIE5ldHdvcmtzCi0JCQkJMzQ1IFBvdHJlcm8gQXZlCi0JCQkJU3VubnkgVmFsZSBDYWxpZm9ybmlhIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi00MCAgIChoZXgpCQlPcHRpY2FsIEludGVybmV0d29ya2luZyBGb3J1bQotMDAwRjQwICAgICAoYmFzZSAxNikJCU9wdGljYWwgSW50ZXJuZXR3b3JraW5nIEZvcnVtCi0JCQkJNDgzNzcgRnJlbW9udCBCbHZkCi0JCQkJU3RlIDExNwotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTQxICAgKGhleCkJCVppcGhlciBMdGQKLTAwMEY0MSAgICAgKGJhc2UgMTYpCQlaaXBoZXIgTHRkCi0JCQkJNyBGYXJhZGF5IEJ1aWxkaW5nCi0JCQkJTm90dGluZ2hhbSBTY2llbmNlIGFuZCBUZWNobm9sb2d5IFBhcmsKLQkJCQlOb3R0aW5naGFtIE5vdHRpbmdoYW1zaGlyZSBORzcgMlFQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtNDIgICAoaGV4KQkJWGFseW8gU3lzdGVtcwotMDAwRjQyICAgICAoYmFzZSAxNikJCVhhbHlvIFN5c3RlbXMKLQkJCQlHcmVuaWVyIDkKLQkJCQlDb21tdWdueSBWRCAxMjkxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEYtNDMgICAoaGV4KQkJV2FzYWJpIFN5c3RlbXMgSW5jLgotMDAwRjQzICAgICAoYmFzZSAxNikJCVdhc2FiaSBTeXN0ZW1zIEluYy4KLQkJCQk1MDAgRS4gTWFpbiBTdHJlZXQKLQkJCQlTdWl0ZSAxNTIwCi0JCQkJTm9yZm9sayBWQSAyMzUxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNDQgICAoaGV4KQkJVGl2ZWxsYSBJbmMuCi0wMDBGNDQgICAgIChiYXNlIDE2KQkJVGl2ZWxsYSBJbmMuCi0JCQkJNzk1IE1haW4gU3RyZWV0Ci0JCQkJSGFsZiBNb29uIEJheSBDQSA5NDAxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNDUgICAoaGV4KQkJU3RyZXRjaCwgSW5jLgotMDAwRjQ1ICAgICAoYmFzZSAxNikJCVN0cmV0Y2gsIEluYy4KLQkJCQkxMzIyIE9ybGVhbnMgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTQ2ICAgKGhleCkJCVNJTkFSIEFHCi0wMDBGNDYgICAgIChiYXNlIDE2KQkJU0lOQVIgQUcKLQkJCQlTdGFkdHdlZyAyNAotCQkJCUZldWVydGhhbGVuIFpIIENILTgyNDUKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wRi00NyAgIChoZXgpCQlST0JPWCBTUEEKLTAwMEY0NyAgICAgKGJhc2UgMTYpCQlST0JPWCBTUEEKLQkJCQl2aWEgU2VtcGlvbmUgODIKLQkJCQlDYXN0ZWxsZXR0byBTLlRpY2lubyBOTyAyODA1MwotCQkJCUlUQUxZCi0KLTAwLTBGLTQ4ICAgKGhleCkJCVBvbHlwaXggSW5jLgotMDAwRjQ4ICAgICAoYmFzZSAxNikJCVBvbHlwaXggSW5jLgotCQkJCTFGbCwgU3VuZ2RvIFZlbnR1cmUgVG93ZXIsIDE2NS0yIFNhbXN1bmctRG9uZywgS2FuZ25hbS1LdQotCQkJCVNlb3VsICAxMzUtODgxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTQ5ICAgKGhleCkJCU5vcnRob3ZlciBTb2x1dGlvbnMgTGltaXRlZAotMDAwRjQ5ICAgICAoYmFzZSAxNikJCU5vcnRob3ZlciBTb2x1dGlvbnMgTGltaXRlZAotCQkJCUhlYXRoIENvdHRhZ2UKLQkJCQlJbGxpbmd0b24gUm9hZAotCQkJCUxhcmxpbmcgTm9yZm9sayBOUjE2IDJSQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLTRBICAgKGhleCkJCUt5dXNodS1reW9oYW4gY28uLGx0ZAotMDAwRjRBICAgICAoYmFzZSAxNikJCUt5dXNodS1reW9oYW4gY28uLGx0ZAotCQkJCTItNi0zLEtvZ2FuZW1hY2hpCi0JCQkJS29rdXJha2l0YS1rdQotCQkJCUtpdGFreXVzaHUtY2l0eSBGdWt1b2thIDgwMi0wMDcxCi0JCQkJSkFQQU4KLQotMDAtMEYtNEIgICAoaGV4KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0wMDBGNEIgICAgIChiYXNlIDE2KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0JCQkJOTAwIENoZWxtc2ZvcmQgU3RyZWV0Ci0JCQkJVG93ZXIgMSBGbG9vciAyCi0JCQkJTG93ZWxsIE1BIDAxODUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi00QyAgIChoZXgpCQlFbGV4dGVjaCBJTkMKLTAwMEY0QyAgICAgKGJhc2UgMTYpCQlFbGV4dGVjaCBJTkMKLQkJCQk1NTQtMiwgR2FzYW4tRG9uZywgR3VtY2hlb24tR3UKLQkJCQlTZW91bCAgMTUzLTAyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi00RCAgIChoZXgpCQlUYWxrU3dpdGNoCi0wMDBGNEQgICAgIChiYXNlIDE2KQkJVGFsa1N3aXRjaAotCQkJCTE1NDUgQ2FybGluZyBBdmUKLQkJCQlTdWl0ZSA1MTAKLQkJCQlPdHRhd2EgT250YXJpbyBLMVogOFA5Ci0JCQkJQ0FOQURBCi0KLTAwLTBGLTRFICAgKGhleCkJCUNlbGxpbmsKLTAwMEY0RSAgICAgKGJhc2UgMTYpCQlDZWxsaW5rCi0JCQkJQ2F0aGVyaW5hbGFhbiAzNwotCQkJCVJvdHNlbGFhciBWbGFhbXMgQnJhYmFudCBCLTMxMTAKLQkJCQlCRUxHSVVNCi0KLTAwLTBGLTRGICAgKGhleCkJCUNhZG11cyBUZWNobm9sb2d5IEx0ZAotMDAwRjRGICAgICAoYmFzZSAxNikJCUNhZG11cyBUZWNobm9sb2d5IEx0ZAotCQkJCTY2IEhpbGxzaWRlIFJkCi0JCQkJR2xlbmZpZWxkCi0JCQkJQXVja2xhbmQgIDEzMTAKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wRi01MCAgIChoZXgpCQlTdHJlYW1TY2FsZSBMaW1pdGVkCi0wMDBGNTAgICAgIChiYXNlIDE2KQkJU3RyZWFtU2NhbGUgTGltaXRlZAotCQkJCVRoZSBDb3VydCwgQWxleGFuZHJhIFBhcmsKLQkJCQlQcmVzY290IFJvYWQKLQkJCQlTdCBIZWxlbnMgIFdBMTAgM1RQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtNTEgICAoaGV4KQkJQXp1bCBTeXN0ZW1zLCBJbmMuCi0wMDBGNTEgICAgIChiYXNlIDE2KQkJQXp1bCBTeXN0ZW1zLCBJbmMuCi0JCQkJMTYwMCBQbHltb3V0aCBTdHJlZXQKLQkJCQlNb3VudGFpbiBWaWV3IENhbGlmb3JuaWEgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTUyICAgKGhleCkJCVlPUksgUmVmcmlnZXJhdGlvbiwgTWFyaW5lICYgQ29udHJvbHMKLTAwMEY1MiAgICAgKGJhc2UgMTYpCQlZT1JLIFJlZnJpZ2VyYXRpb24sIE1hcmluZSAmIENvbnRyb2xzCi0JCQkJSmVucyBKdXVsc3ZlaiAyOAotCQkJCVZpYnkgSiBESyA4MzYyCi0JCQkJREVOTUFSSwotCi0wMC0wRi01MyAgIChoZXgpCQlTb2xhcmZsYXJlIENvbW11bmljYXRpb25zIEluYwotMDAwRjUzICAgICAoYmFzZSAxNikJCVNvbGFyZmxhcmUgQ29tbXVuaWNhdGlvbnMgSW5jCi0JCQkJOTUwMSBKZXJvbmltbyBSb2FkCi0JCQkJU3VpdGUgMjUwCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi01NCAgIChoZXgpCQlFbnRyZWxvZ2ljIENvcnBvcmF0aW9uCi0wMDBGNTQgICAgIChiYXNlIDE2KQkJRW50cmVsb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTMzIEJvc3RvbiBQb3N0IFJkLiBXZXN0LgotCQkJCVN1aXRlIDE2MAotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi01NSAgIChoZXgpCQlEYXRhd2lyZSBDb21tdW5pY2F0aW9uIE5ldHdvcmtzIEluYy4KLTAwMEY1NSAgICAgKGJhc2UgMTYpCQlEYXRhd2lyZSBDb21tdW5pY2F0aW9uIE5ldHdvcmtzIEluYy4KLQkJCQkxMCBDYXJsc29uIENvdXJ0LCBTdWl0ZSAzMDAKLQkJCQlUb3JvbnRvIE9udGFyaW8gTTlXIDZMMgotCQkJCUNBTkFEQQotCi0wMC0wRi01NiAgIChoZXgpCQlDb250aW51dW0gUGhvdG9uaWNzIEluYwotMDAwRjU2ICAgICAoYmFzZSAxNikJCUNvbnRpbnV1bSBQaG90b25pY3MgSW5jCi0JCQkJNSBGb3J0dW5lIERyaXZlCi0JCQkJQmlsbGVyaWNhIE1BIDAxODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi01NyAgIChoZXgpCQlDQUJMRUxPR0lDIENvLiwgTHRkLgotMDAwRjU3ICAgICAoYmFzZSAxNikJCUNBQkxFTE9HSUMgQ28uLCBMdGQuCi0JCQkJM0YuLCBId2FpbiBCbGRnLiwgMTU1OS0xMiBTZW9jaG8gMy1kb25nLAotCQkJCVNlY2hvLWd1LAotCQkJCVNlb3VsICAxMzctODczCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTU4ICAgKGhleCkJCUFkZGVyIFRlY2hub2xvZ3kgTGltaXRlZAotMDAwRjU4ICAgICAoYmFzZSAxNikJCUFkZGVyIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVRlY2hub2xvZ3kgSG91c2UKLQkJCQlUcmFmYWxnYXIgV2F5Ci0JCQkJQmFyIEhpbGwgQ2FtYnJpZGdlc2hpcmUgQ0IzIDhTUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLTU5ICAgKGhleCkJCVBob25hayBDb21tdW5pY2F0aW9ucyBBRwotMDAwRjU5ICAgICAoYmFzZSAxNikJCVBob25hayBDb21tdW5pY2F0aW9ucyBBRwotCQkJCUxhbmdnYXNzZSAxNwotCQkJCU11cnRlbiBGUiAzMjgwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEYtNUEgICAoaGV4KQkJUGVyaWJpdCBOZXR3b3JrcwotMDAwRjVBICAgICAoYmFzZSAxNikJCVBlcmliaXQgTmV0d29ya3MKLQkJCQkyODU1IEJvd2VycyBBdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNUIgICAoaGV4KQkJRGVsdGEgSW5mb3JtYXRpb24gU3lzdGVtcywgSW5jLgotMDAwRjVCICAgICAoYmFzZSAxNikJCURlbHRhIEluZm9ybWF0aW9uIFN5c3RlbXMsIEluYy4KLQkJCQkzMDAgV2Vsc2ggUm9hZCwgQmxkZy4gMwotCQkJCUhvcnNoYW0gUEEgMTkwNDQtMjI3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNUMgICAoaGV4KQkJRGF5IE9uZSBEaWdpdGFsIE1lZGlhIExpbWl0ZWQKLTAwMEY1QyAgICAgKGJhc2UgMTYpCQlEYXkgT25lIERpZ2l0YWwgTWVkaWEgTGltaXRlZAotCQkJCTE5NyBBcmNoZXJzIFJkCi0JCQkJR2xlbmZpZWxkCi0JCQkJQXVja2xhbmQgTm9ydGggSXNsYW5kIDEzMTAKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wRi01RCAgIChoZXgpCQlQYWNrZXRGcm9udCBJbnRlcm5hdGlvbmFsIEFCCi0wMDBGNUQgICAgIChiYXNlIDE2KQkJUGFja2V0RnJvbnQgSW50ZXJuYXRpb25hbCBBQgotCQkJCVBPLTEyMTcKLQkJCQlLaXN0YWdhbmdlbiAyLCBJVgotCQkJCUtpc3RhIFN0b2NraG9sbSBTRS0xNjQyOAotCQkJCVNXRURFTgotCi0wMC0wRi01RSAgIChoZXgpCQlWZW8KLTAwMEY1RSAgICAgKGJhc2UgMTYpCQlWZW8KLQkJCQk5MTAgUmluY29uIENpcmNsZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi01RiAgIChoZXgpCQlOaWNldHkgVGVjaG5vbG9naWVzIEluYy4gKE5UUykKLTAwMEY1RiAgICAgKGJhc2UgMTYpCQlOaWNldHkgVGVjaG5vbG9naWVzIEluYy4gKE5UUykKLQkJCQk3OTItMyBUb21pb2thIFRveW9kYS1jaG8KLQkJCQlJd2F0YS1ndW4gU2hpenVva2EgNDM4LTA4MDMKLQkJCQlKQVBBTgotCi0wMC0wRi02MCAgIChoZXgpCQlMaWZldHJvbiBDby4sTHRkCi0wMDBGNjAgICAgIChiYXNlIDE2KQkJTGlmZXRyb24gQ28uLEx0ZAotCQkJCTYtNyxUZW5qaW5uaXNoaW1hY2hpCi0JCQkJS2l0YS1LdQotCQkJCU9zYWthIE9zYWthIFByZWZlY3R1cmUgNTMwLTAwNDUKLQkJCQlKQVBBTgotCi0wMC0wRi02MSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMEY2MSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTYyICAgKGhleCkJCUFsY2F0ZWwgQmVsbCBTcGFjZSBOLlYuCi0wMDBGNjIgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBCZWxsIFNwYWNlIE4uVi4KLQkJCQlCZXJrZW5yb2RlbGVpIDMzCi0JCQkJSG9ib2tlbiBBbnR3ZXJwZW4gQi0yNjYwCi0JCQkJQkVMR0lVTQotCi0wMC0wRi02MyAgIChoZXgpCQlPYnplcnYgVGVjaG5vbG9naWVzCi0wMDBGNjMgICAgIChiYXNlIDE2KQkJT2J6ZXJ2IFRlY2hub2xvZ2llcwotCQkJCTQwMCBKZWFuIExlc2FnZQotCQkJCXN1aXRlIDIwMQotCQkJCVF1ZWJlYyBRQyBHMUs4VzEKLQkJCQlDQU5BREEKLQotMDAtMEYtNjQgICAoaGV4KQkJRCZSIEVsZWN0cm9uaWNhIFdlZXNwIEJWCi0wMDBGNjQgICAgIChiYXNlIDE2KQkJRCZSIEVsZWN0cm9uaWNhIFdlZXNwIEJWCi0JCQkJUmlqbmthZGUgMTVCCi0JCQkJV0VFU1AgTkggMTM4MkdTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEYtNjUgICAoaGV4KQkJaWN1YmUgQ29ycC4KLTAwMEY2NSAgICAgKGJhc2UgMTYpCQlpY3ViZSBDb3JwLgotCQkJCU9seW1waWEgQ2VudGVyIDJGLDgyOC0xMCxZZW9rc2FtLWRvbmcsS2FuZ25hbS1rdQotCQkJCVNlb3VsIFNvdXRoIDEzNS05MzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtNjYgICAoaGV4KQkJQ2lzY28tTGlua3N5cwotMDAwRjY2ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMKLQkJCQkxMjEgVGhlb3J5IERyLgotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNjcgICAoaGV4KQkJV2VzdCBJbnN0cnVtZW50cwotMDAwRjY3ICAgICAoYmFzZSAxNikJCVdlc3QgSW5zdHJ1bWVudHMKLQkJCQlVbml0IDUsIFRoZSBIeWRlLCBMb3dlciBCZXZlbmRlYW4KLQkJCQlCcmlnaHRvbiBFYXN0IFN1c3NleCBCTjIgNEpVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtNjggICAoaGV4KQkJVmF2aWMgTmV0d29yayBUZWNobm9sb2d5LCBJbmMuCi0wMDBGNjggICAgIChiYXNlIDE2KQkJVmF2aWMgTmV0d29yayBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMXN0IEZsb29yLCAxNSBKaWFuZ29uZyBSb2FkCi0JCQkJVGlhbmhlICBTJlQgWm9uZQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjY1Ci0JCQkJQ0hJTkEKLQotMDAtMEYtNjkgICAoaGV4KQkJU0VXIEV1cm9kcml2ZSBHbWJIICYgQ28uIEtHCi0wMDBGNjkgICAgIChiYXNlIDE2KQkJU0VXIEV1cm9kcml2ZSBHbWJIICYgQ28uIEtHCi0JCQkJRXJuc3QgQmxpY2tsZSBTdHIuIDQyCi0JCQkJQnJ1Y2hzYWwgIDc2NjQ2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRi02QSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMEY2QSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wRi02QiAgIChoZXgpCQlHYXRlV2FyZSBDb21tdW5pY2F0aW9ucyBHbWJICi0wMDBGNkIgICAgIChiYXNlIDE2KQkJR2F0ZVdhcmUgQ29tbXVuaWNhdGlvbnMgR21iSAotCQkJCUFsbGVyc2JlcmdlciBTdHJhc3NlIDE4NSBGCi0JCQkJTnVlcm5iZXJnIEJhdmFyaWEgRC05MDQ2MQotCQkJCUdFUk1BTlkKLQotMDAtMEYtNkMgICAoaGV4KQkJQURESS1EQVRBIEdtYkgKLTAwMEY2QyAgICAgKGJhc2UgMTYpCQlBRERJLURBVEEgR21iSAotCQkJCURpZXNlbHN0cmFzc2UgMwotCQkJCU9UVEVSU1dFSUVSIEJXIDc3ODMzCi0JCQkJR0VSTUFOWQotCi0wMC0wRi02RCAgIChoZXgpCQlNaWRhcyBFbmdpbmVlcmluZwotMDAwRjZEICAgICAoYmFzZSAxNikJCU1pZGFzIEVuZ2luZWVyaW5nCi0JCQkJQWNlIFRlY2huby1Ub3dlciBWICM5MDYgMTk3LTIyCi0JCQkJS3Vyby1Eb25nLCBLdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtNkUgICAoaGV4KQkJQkJveAotMDAwRjZFICAgICAoYmFzZSAxNikJCUJCb3gKLQkJCQlFcGl0b2sgdS4gMi00Ci0JCQkJQnVkYW9ycyAgSC0yMDQwCi0JCQkJSFVOR0FSWQotCi0wMC0wRi02RiAgIChoZXgpCQlGVEEgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMKLTAwMEY2RiAgICAgKGJhc2UgMTYpCQlGVEEgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMKLQkJCQkxMSwgcnVlIFBpZXJyZSBXZXJuZXIKLQkJCQlCZXR6ZG9yZiAgTC02ODMyCi0JCQkJTFVYRU1CT1VSRwotCi0wMC0wRi03MCAgIChoZXgpCQlXaW50ZWMgSW5kdXN0cmllcywgaW5jLgotMDAwRjcwICAgICAoYmFzZSAxNikJCVdpbnRlYyBJbmR1c3RyaWVzLCBpbmMuCi0JCQkJNjc1IFN5Y2Ftb3JlIERyaXZlCi0JCQkJTWlscGl0YXMsIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi03MSAgIChoZXgpCQlTYW5tZWkgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAwRjcxICAgICAoYmFzZSAxNikJCVNhbm1laSBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJMi0yLTEsU2Vpa2FpLFNoaW1penUKLQkJCQlTaGl6dW9rYSAgNDI0LTA5MjQKLQkJCQlKQVBBTgotCi0wMC0wRi03MiAgIChoZXgpCQlTYW5kYnVyc3QKLTAwMEY3MiAgICAgKGJhc2UgMTYpCQlTYW5kYnVyc3QKLQkJCQk2MDAgRmVkZXJhbCBTdAotCQkJCTJuZCBGbG9vcgotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTczICAgKGhleCkJCVJTIEF1dG9tYXRpb24gQ28uLCBMdGQKLTAwMEY3MyAgICAgKGJhc2UgMTYpCQlSUyBBdXRvbWF0aW9uIENvLiwgTHRkCi0JCQkJNDQ3LTYsIEdvbmdzZS1Eb25nICwgR2loZXVuZy1HdQotCQkJCVlvdW5naW4tQ2l0eSBHeWVvbmdnaS1EbyA0NDktOTAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTc0ICAgKGhleCkJCVFhbWNvbSBUZWNobm9sb2d5IEFCCi0wMDBGNzQgICAgIChiYXNlIDE2KQkJUWFtY29tIFRlY2hub2xvZ3kgQUIKLQkJCQlHcnV2Z2F0YW4gOAotCQkJCVNFLTQyMSAzMAotCQkJCVZhc3RyYSBGcm9sdW5kYSAKLQkJCQlTV0VERU4KLQotMDAtMEYtNzUgICAoaGV4KQkJRmlyc3QgU2lsaWNvbiBTb2x1dGlvbnMKLTAwMEY3NSAgICAgKGJhc2UgMTYpCQlGaXJzdCBTaWxpY29uIFNvbHV0aW9ucwotCQkJCTEzOTM5IEZvcmVzdCBMYW5lCi0JCQkJTGFya3NwdXIgQ08gODAxMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTc2ICAgKGhleCkJCURpZ2l0YWwgS2V5c3RvbmUsIEluYy4KLTAwMEY3NiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIEtleXN0b25lLCBJbmMuCi0JCQkJMTk3NSBFbCBDYW1pbm8gUmVhbAotCQkJCSMzMDYKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi03NyAgIChoZXgpCQlERU5UVU0gQ08uLExURAotMDAwRjc3ICAgICAoYmFzZSAxNikJCURFTlRVTSBDTy4sTFRECi0JCQkJV29va3l1bmcgQi9EIDYwMiAjNjc4LTYKLQkJCQlEZXVuZ2Nob24tRG9uZyAsS2FuZ3Nlby1HdQotCQkJCVNlb3VsICAxNTctMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTc4ICAgKGhleCkJCURhdGFjYXAgU3lzdGVtcyBJbmMKLTAwMEY3OCAgICAgKGJhc2UgMTYpCQlEYXRhY2FwIFN5c3RlbXMgSW5jCi0JCQkJMTAwIE5ldyBCcml0YWluIEJsdmQKLQkJCQlDaGFsZm9udCBQQSAxODkxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNzkgICAoaGV4KQkJQmx1ZXRvb3RoIEludGVyZXN0IEdyb3VwIEluYy4KLTAwMEY3OSAgICAgKGJhc2UgMTYpCQlCbHVldG9vdGggSW50ZXJlc3QgR3JvdXAgSW5jLgotCQkJCTRGLCBOby4gOSwgQWxsZXkgMiwgTGFuZSAzNSwgSmktSHUgUmQuCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtN0EgICAoaGV4KQkJQmVpSmluZyBOdVFYIFRlY2hub2xvZ3kgQ08uLExURAotMDAwRjdBICAgICAoYmFzZSAxNikJCUJlaUppbmcgTnVRWCBUZWNobm9sb2d5IENPLixMVEQKLQkJCQlSb29tIDgxMiw4RiBUb3dlciBCLFlpbldhbmcgQ2VudGVyLCBOby4xMTMsWmhpIENodW4gUm9hZCwKLQkJCQlIYWlEaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg2Ci0JCQkJQ0hJTkEKLQotMDAtMEYtN0IgICAoaGV4KQkJQXJjZSBTaXN0ZW1hcywgUy5BLgotMDAwRjdCICAgICAoYmFzZSAxNikJCUFyY2UgU2lzdGVtYXMsIFMuQS4KLQkJCQlDL1BhZHJlIExhcnJhbWVuZGksIDMgLSAyPwotCQkJCUJpbGJhbyBWaXpjYXlhIDQ4MDEyCi0JCQkJU1BBSU4KLQotMDAtMEYtN0MgICAoaGV4KQkJQUNUaSBDb3Jwb3JhdGlvbgotMDAwRjdDICAgICAoYmFzZSAxNikJCUFDVGkgQ29ycG9yYXRpb24KLQkJCQk3Ri4sIE5vLiAxLCBBbGxleSAyMCwgTGFuZSA0MDcsIFNlYy4gMiwgVGlkaW5nIEJsdmQuLAotCQkJCU5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTdEICAgKGhleCkJCVhpcnJ1cwotMDAwRjdEICAgICAoYmFzZSAxNikJCVhpcnJ1cwotCQkJCTMxMCBOb3J0aCBXZXN0bGFrZSBCbHZkLgotCQkJCVdlc3RsYWtlIFZpbGxhZ2UgQ0EgOTEzNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTdFICAgKGhleCkJCUFibGVyZXggRWxlY3Ryb25pY3MgQ28uLCBMVEQKLTAwMEY3RSAgICAgKGJhc2UgMTYpCQlBYmxlcmV4IEVsZWN0cm9uaWNzIENvLiwgTFRECi0JCQkJMUYsIE5vLjMgTGFuZSA3LCBQYW9rYW8gUmQuCi0JCQkJSHNpbnRpZW4gVGFpcGVpIEhzaWVuIDIzMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi03RiAgIChoZXgpCQlVQlNUT1JBR0UgQ28uLEx0ZC4KLTAwMEY3RiAgICAgKGJhc2UgMTYpCQlVQlNUT1JBR0UgQ28uLEx0ZC4KLQkJCQkjQS0xMDgsIFNlb3VsX1NhbnVwX0ppd29uX0NlbnRlcgotCQkJCTY0Ny0yNiwgRGV1bmdjaG9uZy1kb25nCi0JCQkJR2Fuc2VvLWd1IFNlb3VsIDE1Ny04NDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtODAgICAoaGV4KQkJVHJpbml0eSBTZWN1cml0eSBTeXN0ZW1zLEluYy4KLTAwMEY4MCAgICAgKGJhc2UgMTYpCQlUcmluaXR5IFNlY3VyaXR5IFN5c3RlbXMsSW5jLgotCQkJCUFsdGUgQnVpbGRpbmcgSGlnYXNoaSBLYW5kYSA4RgotCQkJCTEtNy04IEhpZ2FzaGlrYW5kYQotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0wRi04MSAgIChoZXgpCQlTZWN1cmUgSW5mbyBJbWFnaW5nCi0wMDBGODEgICAgIChiYXNlIDE2KQkJU2VjdXJlIEluZm8gSW1hZ2luZwotCQkJCVBPIEJveCAyMTg3Ci0JCQkJUGFsbSBTcHJpbmdzIENBIDkyMjYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi04MiAgIChoZXgpCQlNb3J0YXJhIEluc3RydW1lbnQsIEluYy4KLTAwMEY4MiAgICAgKGJhc2UgMTYpCQlNb3J0YXJhIEluc3RydW1lbnQsIEluYy4KLQkJCQk3ODY1IE4uIDg2dGggU3QuCi0JCQkJTWlsd2F1a2VlIFdJIDUzMjI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi04MyAgIChoZXgpCQlCcmFpbml1bSBUZWNobm9sb2dpZXMgSW5jLgotMDAwRjgzICAgICAoYmFzZSAxNikJCUJyYWluaXVtIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJIzIwMSAtIDExNDkxIEtpbmdzdG9uIFN0cmVldAotCQkJCU1hcGxlIFJpZGdlIEJDIFYyWCAwWTYKLQkJCQlDQU5BREEKLQotMDAtMEYtODQgICAoaGV4KQkJQXN0dXRlIE5ldHdvcmtzLCBJbmMuCi0wMDBGODQgICAgIChiYXNlIDE2KQkJQXN0dXRlIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTY1MTYgVmlhIEVzcHJpbGxvCi0JCQkJIzIwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtODUgICAoaGV4KQkJQURETy1KYXBhbiBDb3Jwb3JhdGlvbgotMDAwRjg1ICAgICAoYmFzZSAxNikJCUFERE8tSmFwYW4gQ29ycG9yYXRpb24KLQkJCQlTaGluIEVkb2Jhc2hpIEJsZGcuIDRGLCA4LTYgTmlob21iYXNoaSBLb2J1bmEtY2hvCi0JCQkJQ2h1by1rdSBUb2t5byAxMDMtMDAyNAotCQkJCUpBUEFOCi0KLTAwLTBGLTg2ICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkCi0wMDBGODYgICAgIChiYXNlIDE2KQkJUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQKLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMDAtMEYtODcgICAoaGV4KQkJTWF4Y2VzcyBJbnRlcm5hdGlvbmFsCi0wMDBGODcgICAgIChiYXNlIDE2KQkJTWF4Y2VzcyBJbnRlcm5hdGlvbmFsCi0JCQkJMjIyIFcuIE1lbW9yaWFsIFJvYWQKLQkJCQlPa2xhaG9tYSBDaXR5IE9LIDczMTE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi04OCAgIChoZXgpCQlBTUVURUssIEluYy4KLTAwMEY4OCAgICAgKGJhc2UgMTYpCQlBTUVURUssIEluYy4KLQkJCQkxNTAgRnJlZXBvcnQgUm9hZAotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTg5ICAgKGhleCkJCVdpbm5lcnRlYyBTeXN0ZW0gQ28uLCBMdGQuCi0wMDBGODkgICAgIChiYXNlIDE2KQkJV2lubmVydGVjIFN5c3RlbSBDby4sIEx0ZC4KLQkJCQkjNDA1LCA0dGggRmxvb3IuIEFjZS1UZWNobm8gVG93ZXIgSUlJLCAxOTctNDgsCi0JCQkJS3VybyAzLURvbmcsIEt1cm8tS3UuCi0JCQkJU2VvdWwgIDE1Mi03NjYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtOEEgICAoaGV4KQkJV2lkZVZpZXcKLTAwMEY4QSAgICAgKGJhc2UgMTYpCQlXaWRlVmlldwotCQkJCUYuIDYsIE5vLiA4LCBXdS1jaHVhbiAyIFJkLCBIc2luLUNodWFuZyBDaXR5Ci0JCQkJVGFpcGVpIENvdW50cnkgIDI0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtOEIgICAoaGV4KQkJT3Jpb24gTXVsdGlTeXN0ZW1zIEluYwotMDAwRjhCICAgICAoYmFzZSAxNikJCU9yaW9uIE11bHRpU3lzdGVtcyBJbmMKLQkJCQkzMzc1IFNjb3R0IEJsdmQgU3VpdGUgMzM4Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLThDICAgKGhleCkJCUdpZ2F3YXZldGVjaCBQdGUgTHRkCi0wMDBGOEMgICAgIChiYXNlIDE2KQkJR2lnYXdhdmV0ZWNoIFB0ZSBMdGQKLQkJCQkxIEphbGFuIEtpbGFuZyBUaW1vcgotCQkJCSMwNy0wMiBQYWNpZmljIFRlY2ggQ2VudHJlCi0JCQkJMTU5MzAzCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTBGLThEICAgKGhleCkJCUZBU1QgVFYtU2VydmVyIEFHCi0wMDBGOEQgICAgIChiYXNlIDE2KQkJRkFTVCBUVi1TZXJ2ZXIgQUcKLQkJCQlSdWVkZXNoZWltZXJzdHIuIDExLTEzCi0JCQkJTXVuaWNoIEdlcm1hbnkgODA2ODYKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLThFICAgKGhleCkJCURPTkdZQU5HIFRFTEVDT00gQ08uLExURC4KLTAwMEY4RSAgICAgKGJhc2UgMTYpCQlET05HWUFORyBURUxFQ09NIENPLixMVEQuCi0JCQkJNjQyLTcsIERFVU5HQ0hPTi1ET05HLCBLQU5HU0VPLUdVCi0JCQkJU0VPVUwgS0FOR1NFLUdVIDE1Ny04NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtOEYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRjhGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtOTAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRjkwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtOTEgICAoaGV4KQkJQWVyb3RlbGVjb20gQ28uLEx0ZC4KLTAwMEY5MSAgICAgKGJhc2UgMTYpCQlBZXJvdGVsZWNvbSBDby4sTHRkLgotCQkJCTE5NS01OCBBbnlhbmcgNyBEb25nCi0JCQkJQW55YW5nIEt5dW5nZ2kgNDMwLTgxNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi05MiAgIChoZXgpCQlNaWNyb2hhcmQgU3lzdGVtcyBJbmMuCi0wMDBGOTIgICAgIChiYXNlIDE2KQkJTWljcm9oYXJkIFN5c3RlbXMgSW5jLgotCQkJCSMxNywgMjEzNS0zMkF2ZSBORQotCQkJCUNhbGdhcnkgQUIgVDJFNlozCi0JCQkJQ0FOQURBCi0KLTAwLTBGLTkzICAgKGhleCkJCUxhbmRpcytHeXIgTHRkLgotMDAwRjkzICAgICAoYmFzZSAxNikJCUxhbmRpcytHeXIgTHRkLgotCQkJCUZlbGRzdHJhc3NlIDEKLQkJCQladWcgIENILTYzMDEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wRi05NCAgIChoZXgpCQlHZW5leGlzCi0wMDBGOTQgICAgIChiYXNlIDE2KQkJR2VuZXhpcwotCQkJCUxvZGV3aWprc3RyYWF0IDFBCi0JCQkJRWluZGhvdmVuICA1NjQ2SFAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRi05NSAgIChoZXgpCQlFTEVDT00gQ28uLExURCBMYW5lZWQgRGl2aXNpb24KLTAwMEY5NSAgICAgKGJhc2UgMTYpCQlFTEVDT00gQ28uLExURCBMYW5lZWQgRGl2aXNpb24KLQkJCQk4RiBLYW5kYS1NdXJvbWFjaGkgQmxkZy4KLQkJCQkxIEthbmRhLU9nYXdhbWFjaGkgMSBDaG9tZSwKLQkJCQlDaGl5b2RhLUt1LCBUb2t5by4gIDEwMS0wMDUyCi0JCQkJSkFQQU4KLQotMDAtMEYtOTYgICAoaGV4KQkJVGVsY28gU3lzdGVtcywgSW5jLiAKLTAwMEY5NiAgICAgKGJhc2UgMTYpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuIAotCQkJCTE1IEJlcmtzaGlyZSBSb2FkCi0JCQkJTWFuc2ZpZWxkIE1BIDAyMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi05NyAgIChoZXgpCQlBdmFuZXggQ29ycG9yYXRpb24KLTAwMEY5NyAgICAgKGJhc2UgMTYpCQlBdmFuZXggQ29ycG9yYXRpb24KLQkJCQk0MDkxOSBFbmN5Y2xvcGVkaWEgQ2lyY2xlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtOTggICAoaGV4KQkJQXZhbWF4IENvLiBMdGQuCi0wMDBGOTggICAgIChiYXNlIDE2KQkJQXZhbWF4IENvLiBMdGQuCi0JCQkJQjEsIE5vLiA1MSwgU2VjdGlvbiAyLCBDaG9uZ1FpbmcgUy4gUmQuCi0JCQkJVGFpcGVpICAxMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTk5ICAgKGhleCkJCUFQQUMgb3B0byBFbGVjdHJvbmljcyBJbmMuCi0wMDBGOTkgICAgIChiYXNlIDE2KQkJQVBBQyBvcHRvIEVsZWN0cm9uaWNzIEluYy4KLQkJCQkzIFR6dSBDaGlhbmcgUm9hZCwgSHNpbmNodSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIdWtvdywgSHNpbmNodSBIc2llbiAgMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi05QSAgIChoZXgpCQlTeW5jaHJvbnksIEluYy4KLTAwMEY5QSAgICAgKGJhc2UgMTYpCQlTeW5jaHJvbnksIEluYy4KLQkJCQk2NDEwIENvbW1vbndlYWx0aCBEcml2ZQotCQkJCVJvYW5va2UgVkEgMjQwMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTlCICAgKGhleCkJCVJvc3MgVmlkZW8gTGltaXRlZAotMDAwRjlCICAgICAoYmFzZSAxNikJCVJvc3MgVmlkZW8gTGltaXRlZAotCQkJCTggSm9obiBTdHJlZXQKLQkJCQlQTyBCb3ggMjIwCi0JCQkJSXJvcXVvaXMgT250YXJpbyBLMEUgMUswCi0JCQkJQ0FOQURBCi0KLTAwLTBGLTlDICAgKGhleCkJCVBhbmR1aXQgQ29ycAotMDAwRjlDICAgICAoYmFzZSAxNikJCVBhbmR1aXQgQ29ycAotCQkJCTE3MzAxIFJpZGdlbGFuZCBBdmUKLQkJCQlUaW5sZXkgUGFyayBJbGxpbm9pcyA2MDQ3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtOUQgICAoaGV4KQkJRGlzcGxheUxpbmsgKFVLKSBMdGQKLTAwMEY5RCAgICAgKGJhc2UgMTYpCQlEaXNwbGF5TGluayAoVUspIEx0ZAotCQkJCU1vdW50IFBsZWFzYW50IEhvdXNlCi0JCQkJTW91bnQgUGxlYXNhbnQKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0IzIDBSTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLTlFICAgKGhleCkJCU11cnJlbGVrdHJvbmlrIEdtYkgKLTAwMEY5RSAgICAgKGJhc2UgMTYpCQlNdXJyZWxla3Ryb25payBHbWJICi0JCQkJRmFsa2Vuc3RyYXNzZSAzCi0JCQkJT3BwZW53ZWlsZXIgQmFkZW4gV3VydHRlbWJlcmcgNzE1NzAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLTlGICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDBGOUYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1BMCAgIChoZXgpCQlDQU5PTiBLT1JFQSBCVVNJTkVTUyBTT0xVVElPTlMgSU5DLgotMDAwRkEwICAgICAoYmFzZSAxNikJCUNBTk9OIEtPUkVBIEJVU0lORVNTIFNPTFVUSU9OUyBJTkMuCi0JCQkJNzM2IFdvbnNpLURvbmcKLQkJCQlBbnNhbi1zaSBLeXVuZ2dpLWRvIDQyNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtQTEgICAoaGV4KQkJR2lnYWJpdCBTeXN0ZW1zIEluYy4KLTAwMEZBMSAgICAgKGJhc2UgMTYpCQlHaWdhYml0IFN5c3RlbXMgSW5jLgotCQkJCUZ1eW9oIFZpZGVvIEJ1aWxkaW5nIDNGCi0JCQkJNy0yNSBIaWdhc2hpLUtpYm91Z2Fva2EsIEFzYWhpLUt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjQxLTA4MjYKLQkJCQlKQVBBTgotCi0wMC0wRi1BMiAgIChoZXgpCQlEaWdpdGFsIFBhdGggTmV0d29ya3MKLTAwMEZBMiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFBhdGggTmV0d29ya3MKLQkJCQkyNzUgQWlycGFyayBCbHZkCi0JCQkJU3VpdGUgNTAwCi0JCQkJQ2hpY28gQ0EgOTU5NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUEzICAgKGhleCkJCUFscGhhIE5ldHdvcmtzIEluYy4KLTAwMEZBMyAgICAgKGJhc2UgMTYpCQlBbHBoYSBOZXR3b3JrcyBJbmMuCi0JCQkJTm8uOCBMaS1zaGluZyA3dGggUmQuLFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi1BNCAgIChoZXgpCQlTcHJlY2hlciBBdXRvbWF0aW9uIEdtYkgKLTAwMEZBNCAgICAgKGJhc2UgMTYpCQlTcHJlY2hlciBBdXRvbWF0aW9uIEdtYkgKLQkJCQlGcmFuY2tzdHJhc3NlIDUxCi0JCQkJTGlueiBPYmVyb3N0ZXJyZWljaCA0MDE4Ci0JCQkJQVVTVFJJQQotCi0wMC0wRi1BNSAgIChoZXgpCQlCV0EgVGVjaG5vbG9neSBHbWJICi0wMDBGQTUgICAgIChiYXNlIDE2KQkJQldBIFRlY2hub2xvZ3kgR21iSAotCQkJCUpvaGFubi1LcmFuZS1XZWcgMjEKLQkJCQlNdWVuc3RlciAgNDgxNDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLUE2ICAgKGhleCkJCVMyIFNlY3VyaXR5IENvcnBvcmF0aW9uCi0wMDBGQTYgICAgIChiYXNlIDE2KQkJUzIgU2VjdXJpdHkgQ29ycG9yYXRpb24KLQkJCQk2IEFiYm90dCBSb2FkCi0JCQkJV2VsbGVzbGV5IE1BIDAyNDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1BNyAgIChoZXgpCQlSYXB0b3IgTmV0d29ya3MgVGVjaG5vbG9neQotMDAwRkE3ICAgICAoYmFzZSAxNikJCVJhcHRvciBOZXR3b3JrcyBUZWNobm9sb2d5Ci0JCQkJNjUgRW50ZXJwcmlzZSBSb2FkCi0JCQkJQWxpc28gVmllam8gQ0EgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUE4ICAgKGhleCkJCVBob3RvbWV0cmljcywgSW5jLgotMDAwRkE4ICAgICAoYmFzZSAxNikJCVBob3RvbWV0cmljcywgSW5jLgotCQkJCTM0NDAgRSBCcml0YW5uaWEgRHJpdmUKLQkJCQlUdWNzb24gQVogODU3MDYtNTAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQTkgICAoaGV4KQkJUEMgRmFicmlrCi0wMDBGQTkgICAgIChiYXNlIDE2KQkJUEMgRmFicmlrCi0JCQkJQnVjaGVuc3RyYXNzZSAxMy0xNQotCQkJCURyZXNkZW4gU2FjaHNlbiAwMTA5NwotCQkJCUdFUk1BTlkKLQotMDAtMEYtQUEgICAoaGV4KQkJTmV4dXMgVGVjaG5vbG9naWVzCi0wMDBGQUEgICAgIChiYXNlIDE2KQkJTmV4dXMgVGVjaG5vbG9naWVzCi0JCQkJMTAgTmF0aW9uYWwgQXZlLgotCQkJCUZsZXRjaGVyIE5DIDI4NzMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1BQiAgIChoZXgpCQlLeXVzaHUgRWxlY3Ryb25pY3MgU3lzdGVtcyBJbmMuCi0wMDBGQUIgICAgIChiYXNlIDE2KQkJS3l1c2h1IEVsZWN0cm9uaWNzIFN5c3RlbXMgSW5jLgotCQkJCTMtMywgS29uZ28gMi1DaG9tZSwgWWFoYXRhbmlzaGkgV2FyZAotCQkJCUtpdGFreXVzaHUgQ2l0eSBGdWt1b2thIFByZWYuIDgwNy0xMjYzCi0JCQkJSkFQQU4KLQotMDAtMEYtQUMgICAoaGV4KQkJSUVFRSA4MDIuMTEKLTAwMEZBQyAgICAgKGJhc2UgMTYpCQlJRUVFIDgwMi4xMQotCQkJCTQxMjUgSGlnaGxhbmRlciBQYXJrd2F5Ci0JCQkJUmljaGZpZWxkIE9oaW8gNDQyODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUFEICAgKGhleCkJCUZNTiBjb21tdW5pY2F0aW9ucyBHbWJICi0wMDBGQUQgICAgIChiYXNlIDE2KQkJRk1OIGNvbW11bmljYXRpb25zIEdtYkgKLQkJCQlHcmltbWVsYWxsZWUgNAotCQkJCU5vcmRoYXVzZW4gVGh1cmluZ2VuIDk5NzM0Ci0JCQkJR0VSTUFOWQotCi0wMC0wRi1BRSAgIChoZXgpCQlFMk8gQ29tbXVuaWNhdGlvbnMKLTAwMEZBRSAgICAgKGJhc2UgMTYpCQlFMk8gQ29tbXVuaWNhdGlvbnMKLQkJCQk1MiBTZXJhbmdvb24gTm9ydGggQXZlIDQKLQkJCQkjMDYtMDIgRXZlciBUZWNoIEJ1aWxkaW5nCi0JCQkJNTU1ODUzCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTBGLUFGICAgKGhleCkJCURpYWxvZyBJbmMuCi0wMDBGQUYgICAgIChiYXNlIDE2KQkJRGlhbG9nIEluYy4KLQkJCQkxLTQ3LTkKLQkJCQlIaWdhc2hpaWtlYnVrdXJvCi0JCQkJVG9zaGltYS1rdSBUb2t5byAxNzAwMDEzCi0JCQkJSkFQQU4KLQotMDAtMEYtQjAgICAoaGV4KQkJQ29tcGFsIEVsZWN0cm9uaWNzLElOQy4KLTAwMEZCMCAgICAgKGJhc2UgMTYpCQlDb21wYWwgRWxlY3Ryb25pY3MsSU5DLgotCQkJCTU4MSBKdWlrdWFuZyBSb2FkLE5laWh1LAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi1CMSAgIChoZXgpCQlDb2duaW8gSW5jLgotMDAwRkIxICAgICAoYmFzZSAxNikJCUNvZ25pbyBJbmMuCi0JCQkJMTAxIE9yY2hhcmQgUmlkZ2UgRHJpdmUKLQkJCQlTdWl0ZSAzNTAKLQkJCQlHYWl0aGVyc2J1cmcgTUQgMjA4NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUIyICAgKGhleCkJCUJyb2FkYmFuZCBQYWNlbmV0IChJbmRpYSkgUHZ0LiBMdGQuCi0wMDBGQjIgICAgIChiYXNlIDE2KQkJQnJvYWRiYW5kIFBhY2VuZXQgKEluZGlhKSBQdnQuIEx0ZC4KLQkJCQk3LUIsIFNoYWggSW5kdXN0cmlhbCBFc3RhdGUsIE9mZiBWZWVyYSBEZXNhaSBSb2FkCi0JCQkJQW5kaGVyaSBXZXN0Ci0JCQkJTXVtYmFpIE1haGFyYXNodHJhIDQwMCAwNTMKLQkJCQlJTkRJQQotCi0wMC0wRi1CMyAgIChoZXgpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotMDAwRkIzICAgICAoYmFzZSAxNikJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1CNCAgIChoZXgpCQlUaW1lc3BhY2UgVGVjaG5vbG9neQotMDAwRkI0ICAgICAoYmFzZSAxNikJCVRpbWVzcGFjZSBUZWNobm9sb2d5Ci0JCQkJQmxhY2tzdG9uZSBSb2FkCi0JCQkJSHVudGluZ2RvbiBDYW1icmlkZ2VzaGlyZSBQRTI5IDZUVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLUI1ICAgKGhleCkJCU5FVEdFQVIgSW5jCi0wMDBGQjUgICAgIChiYXNlIDE2KQkJTkVUR0VBUiBJbmMKLQkJCQk0NTAwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1CNiAgIChoZXgpCQlFdXJvcGxleCBUZWNobm9sb2dpZXMKLTAwMEZCNiAgICAgKGJhc2UgMTYpCQlFdXJvcGxleCBUZWNobm9sb2dpZXMKLQkJCQlDbG9uc2hhdWdoIEJ1c2luZXNzICYgVGVjaC4gUGFyawotCQkJCUNsb25zaGF1Z2ggIER1YmxpbiAxNwotCQkJCUlSRUxBTkQKLQotMDAtMEYtQjcgICAoaGV4KQkJQ2F2aXVtIE5ldHdvcmtzCi0wMDBGQjcgICAgIChiYXNlIDE2KQkJQ2F2aXVtIE5ldHdvcmtzCi0JCQkJMjYxMCBBdWd1c3RpbmUgRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDYWxpZm9ybmlhIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1COCAgIChoZXgpCQlDYWxsVVJMIEluYy4KLTAwMEZCOCAgICAgKGJhc2UgMTYpCQlDYWxsVVJMIEluYy4KLQkJCQkzRi0xMSwgTm8uIDUwOCBTZWMuICA1LCBDaHVuZy1Ic2lhbyBFLiBSZC4KLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtQjkgICAoaGV4KQkJQWRhcHRpdmUgSW5zdHJ1bWVudHMKLTAwMEZCOSAgICAgKGJhc2UgMTYpCQlBZGFwdGl2ZSBJbnN0cnVtZW50cwotCQkJCTU3NyBNYWluIFN0cmVldAotCQkJCUh1ZHNvbiBNQSAwMTc0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQkEgICAoaGV4KQkJVGV2ZWJveCBBQgotMDAwRkJBICAgICAoYmFzZSAxNikJCVRldmVib3ggQUIKLQkJCQlCZXJnbGluZHMgdmFnIDEzCi0JCQkJd2FybWRvICBTLTEzOTAwCi0JCQkJU1dFREVOCi0KLTAwLTBGLUJCICAgKGhleCkJCU5va2lhIFNpZW1lbnMgTmV0d29ya3MgR21iSCAmIENvLiBLRwotMDAwRkJCICAgICAoYmFzZSAxNikJCU5va2lhIFNpZW1lbnMgTmV0d29ya3MgR21iSCAmIENvLiBLRwotCQkJCVdlcm5lci12b24tU2llbWVucyBTdHIuIDItNgotCQkJCUJydWNoc2FsIEJhZGVuLVd1cnRlbWJlcmcgNzY2NDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLUJDICAgKGhleCkJCU9ua2V5IFRlY2hub2xvZ2llcywgSW5jLgotMDAwRkJDICAgICAoYmFzZSAxNikJCU9ua2V5IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTc4MCBNb250YWd1ZSBFeHByZXNzd2F5LCBJbmMuCi0JCQkJU3VpdGUgIzMwNgotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1CRCAgIChoZXgpCQlNUlYgQ29tbXVuaWNhdGlvbnMgKE5ldHdvcmtzKSBMVEQKLTAwMEZCRCAgICAgKGJhc2UgMTYpCQlNUlYgQ29tbXVuaWNhdGlvbnMgKE5ldHdvcmtzKSBMVEQKLQkJCQlQLk8gQm94IDYxNAotCQkJCVlva25lYW0gIDIwNjkyCi0JCQkJSVNSQUVMCi0KLTAwLTBGLUJFICAgKGhleCkJCWUtdy95b3UgSW5jLgotMDAwRkJFICAgICAoYmFzZSAxNikJCWUtdy95b3UgSW5jLgotCQkJCTNGIEZJTkUgQmxkZy4gNi0xNy0xNwotCQkJCU1pbmFtaW9vaSwKLQkJCQlTaGluYWdhd2Eta3UsIFRva3lvIDE0MC0wMDEzCi0JCQkJSkFQQU4KLQotMDAtMEYtQkYgICAoaGV4KQkJREdUIFNwLiB6IG8uby4KLTAwMEZCRiAgICAgKGJhc2UgMTYpCQlER1QgU3AuIHogby5vLgotCQkJCXVsLiBKYXNrb3dhIERvbGluYSAxNQotCQkJCUdkYW5zayAgODAtMjUyCi0JCQkJUE9MQU5ECi0KLTAwLTBGLUMwICAgKGhleCkJCURFTENPTXAKLTAwMEZDMCAgICAgKGJhc2UgMTYpCQlERUxDT01wCi0JCQkJVGVjaG5vbG9naWVsYWFuIDMKLQkJCQlMZXV2ZW4gIEItMzAwMAotCQkJCUJFTEdJVU0KLQotMDAtMEYtQzEgICAoaGV4KQkJV0FWRSBDb3Jwb3JhdGlvbgotMDAwRkMxICAgICAoYmFzZSAxNikJCVdBVkUgQ29ycG9yYXRpb24KLQkJCQkzLTI1LTUgQ2hpZG9yaQotCQkJCU9odGEta3UgVG9reW8gMTQ2LTAwODMKLQkJCQlKQVBBTgotCi0wMC0wRi1DMiAgIChoZXgpCQlVbml3ZWxsIENvcnBvcmF0aW9uCi0wMDBGQzIgICAgIChiYXNlIDE2KQkJVW5pd2VsbCBDb3Jwb3JhdGlvbgotCQkJCTUtMjUsIDMtY2hvbWUsIFRlbm1hLCBLaXRhLWt1Ci0JCQkJT3Nha2EgIDUzMC0wMDQzCi0JCQkJSkFQQU4KLQotMDAtMEYtQzMgICAoaGV4KQkJUGFsbVBhbG0gVGVjaG5vbG9neSwgSW5jLgotMDAwRkMzICAgICAoYmFzZSAxNikJCVBhbG1QYWxtIFRlY2hub2xvZ3ksIEluYy4KLQkJCQlTYW1zdW5nLWRvbmcgMTU2LTMsIEdhbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTA5MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1DNCAgIChoZXgpCQlOU1QgY28uLExURC4KLTAwMEZDNCAgICAgKGJhc2UgMTYpCQlOU1QgY28uLExURC4KLQkJCQk0LTMtMSBTSElOTUlZQUtPREEKLQkJCQlIQU1BTUFUU1UgU0hJWlVPS0EgNDMxLTIxMDMKLQkJCQlKQVBBTgotCi0wMC0wRi1DNSAgIChoZXgpCQlLZXlNZWQgTHRkCi0wMDBGQzUgICAgIChiYXNlIDE2KQkJS2V5TWVkIEx0ZAotCQkJCUtleU1lZCBIb3VzZQotCQkJCVN0b2NrIFJvYWQKLQkJCQlTb3V0aGVuZCBvbiBTZWEgRXNzZXggU1MyIDVRSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLUM2ICAgKGhleCkJCUV1cm9jb20gSW5kdXN0cmllcyBBL1MKLTAwMEZDNiAgICAgKGJhc2UgMTYpCQlFdXJvY29tIEluZHVzdHJpZXMgQS9TCi0JCQkJcG9yc3ZlaiAyCi0JCQkJQWFsYm9yZyBOViBESy05MjAwCi0JCQkJREVOTUFSSwotCi0wMC0wRi1DNyAgIChoZXgpCQlEaW9uaWNhIFImRCBMdGQuCi0wMDBGQzcgICAgIChiYXNlIDE2KQkJRGlvbmljYSBSJkQgTHRkLgotCQkJCUJvbG9nbmEgQ2VudHJlLCBGMTEKLQkJCQlNb3N0YSBUZWNobm9wYXJrCi0JCQkJTW9zdGEgIE1TVDEzCi0JCQkJTUFMVEEKLQotMDAtMEYtQzggICAoaGV4KQkJQ2hhbnRyeSBOZXR3b3JrcwotMDAwRkM4ICAgICAoYmFzZSAxNikJCUNoYW50cnkgTmV0d29ya3MKLQkJCQkxOTAwIE1pbm5lc290YSBDb3VydAotCQkJCVN1aXRlIDEyNQotCQkJCU1pc3Npc3NhdWdhIE9udGFyaW8gTDVOIDNDOQotCQkJCUNBTkFEQQotCi0wMC0wRi1DOSAgIChoZXgpCQlBbGxuZXQgR21iSAotMDAwRkM5ICAgICAoYmFzZSAxNikJCUFsbG5ldCBHbWJICi0JCQkJTWFpc3RyLiAyCi0JCQkJR2VybWVyaW5nIEJhdmFyaWEgODIxMTAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLUNBICAgKGhleCkJCUEtSklOIFRFQ0hMSU5FIENPLCBMVEQKLTAwMEZDQSAgICAgKGJhc2UgMTYpCQlBLUpJTiBURUNITElORSBDTywgTFRECi0JCQkJMzI3LTM1Ci0JCQkJS2FzYW4tRG9uZwotCQkJCUt1bWNodW4tS3UgU2VvdWwgMTUzLTgwMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1DQiAgIChoZXgpCQkzQ29tIEx0ZAotMDAwRkNCICAgICAoYmFzZSAxNikJCTNDb20gTHRkCi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRi1DQyAgIChoZXgpCQlOZXRvcGlhLCBJbmMuCi0wMDBGQ0MgICAgIChiYXNlIDE2KQkJTmV0b3BpYSwgSW5jLgotCQkJCTYwMDEgU2hlbGxtb3VuZCBTdHJlZXQKLQkJCQk0dGggRmxvb3IKLQkJCQlFbWVyeXZpbGxlIENBIDk0NjA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1DRCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMEZDRCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wRi1DRSAgIChoZXgpCQlLaWt1c3VpIEVsZWN0cm9uaWNzIENvcnAuCi0wMDBGQ0UgICAgIChiYXNlIDE2KQkJS2lrdXN1aSBFbGVjdHJvbmljcyBDb3JwLgotCQkJCTEtMS0zLEhpZ2FzaGkgeWFtYXRhCi0JCQkJVHN1enVraS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyNC0wMDIzCi0JCQkJSkFQQU4KLQotMDAtMEYtQ0YgICAoaGV4KQkJRGF0YXdpbmQgUmVzZWFyY2gKLTAwMEZDRiAgICAgKGJhc2UgMTYpCQlEYXRhd2luZCBSZXNlYXJjaAotCQkJCTU1NSBSZW5lLUxldmVzcXVlIFdlc3QKLQkJCQlTdWl0ZSAxMTMwCi0JCQkJTW9udHJlYWwgUXVlYmVjIEgyWiAxQjEKLQkJCQlDQU5BREEKLQotMDAtMEYtRDAgICAoaGV4KQkJQVNUUkkKLTAwMEZEMCAgICAgKGJhc2UgMTYpCQlBU1RSSQotCQkJCTE4L0YgVG93ZXIgNiwgR2F0ZXdheSwgOSBDYW50b24gUmQKLQkJCQlUU1QsIEtvd2xvb24KLQkJCQlIT05HIEtPTkcKLQotMDAtMEYtRDEgICAoaGV4KQkJQXBwbGllZCBXaXJlbGVzcyBJZGVudGlmaWNhdGlvbnMgR3JvdXAsIEluYy4KLTAwMEZEMSAgICAgKGJhc2UgMTYpCQlBcHBsaWVkIFdpcmVsZXNzIElkZW50aWZpY2F0aW9ucyBHcm91cCwgSW5jLgotCQkJCTM4MiBSb3V0ZSA1OSwgU2VjdGlvbiAyOTIKLQkJCQlNb25zZXkgTmV3IFlvcmsgMTA5NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUQyICAgKGhleCkJCUVXQSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEZEMiAgICAgKGJhc2UgMTYpCQlFV0EgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTM4NzMgUGFyayBDZW50ZXIgUm9hZAotCQkJCUhlcm5kb24gVkEgMjAxNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUQzICAgKGhleCkJCURpZ2l1bQotMDAwRkQzICAgICAoYmFzZSAxNikJCURpZ2l1bQotCQkJCTQ0NSBKYW4gRGF2aXMgRHJpdmUgTlcKLQkJCQlTdWl0ZSAxMDAKLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1ENCAgIChoZXgpCQlTb3VuZGNyYWZ0Ci0wMDBGRDQgICAgIChiYXNlIDE2KQkJU291bmRjcmFmdAotCQkJCUNyYW5ib3JuZSBIb3VzZQotCQkJCUNyYW5ib3JuZSBSb2FkCi0JCQkJUG90dGVycyBCYXIgSGVydGZvcmRzaGlyZSBFTjYgM0pOCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtRDUgICAoaGV4KQkJU2Nod2VjaGF0IC0gUklTRQotMDAwRkQ1ICAgICAoYmFzZSAxNikJCVNjaHdlY2hhdCAtIFJJU0UKLQkJCQlBbSBDb25jb3JkZSBQYXJrIDJBCi0JCQkJU2Nod2VjaGF0ICAyMzIwCi0JCQkJQVVTVFJJQQotCi0wMC0wRi1ENiAgIChoZXgpCQlTYXJvdGVjaCBDby4sIEx0ZAotMDAwRkQ2ICAgICAoYmFzZSAxNikJCVNhcm90ZWNoIENvLiwgTHRkCi0JCQkJSGFuR2FuZyBCbGRnLCAxNTQ5LTcsIFNlb2Noby1Eb25nLAotCQkJCVNlb2Noby1rdSwKLQkJCQlTZW91bCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1ENyAgIChoZXgpCQlIYXJtYW4gTXVzaWMgR3JvdXAKLTAwMEZENyAgICAgKGJhc2UgMTYpCQlIYXJtYW4gTXVzaWMgR3JvdXAKLQkJCQk4NzYwIFNhbmR5IFBhcmt3YXkKLQkJCQlTYW5keSBVdGFoIDg0MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1EOCAgIChoZXgpCQlGb3JjZSwgSW5jLgotMDAwRkQ4ICAgICAoYmFzZSAxNikJCUZvcmNlLCBJbmMuCi0JCQkJODI1IFBhcmsgU3RyZWV0Ci0JCQkJQ2hyaXN0aWFuc2J1cmcgVmEgMjQwNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUQ5ICAgKGhleCkJCUZsZXhEU0wgVGVsZWNvbW11bmljYXRpb25zIEFHCi0wMDBGRDkgICAgIChiYXNlIDE2KQkJRmxleERTTCBUZWxlY29tbXVuaWNhdGlvbnMgQUcKLQkJCQlIYXVzIHp1bSBFbmdlbAotCQkJCUFsdGVuZG9yZiBTY2h3eXogODg1MgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBGLURBICAgKGhleCkJCVlBWkFLSSBDT1JQT1JBVElPTgotMDAwRkRBICAgICAoYmFzZSAxNikJCVlBWkFLSSBDT1JQT1JBVElPTgotCQkJCTE1MDAgTUlTSFVLVQotCQkJCVNVU09OTy1DSVRZIFNISVpVT0tBLVBSRUYgNDEwLTExOTQKLQkJCQlKQVBBTgotCi0wMC0wRi1EQiAgIChoZXgpCQlXZXN0ZWxsIFRlY2hub2xvZ2llcwotMDAwRkRCICAgICAoYmFzZSAxNikJCVdlc3RlbGwgVGVjaG5vbG9naWVzCi0JCQkJNzUwIE4uIENvbW1vbnMgRHIuCi0JCQkJQXVyb3JhIElMIDYwNTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1EQyAgIChoZXgpCQlVZWRhIEphcGFuICBSYWRpbyBDby4sIEx0ZC4KLTAwMEZEQyAgICAgKGJhc2UgMTYpCQlVZWRhIEphcGFuICBSYWRpbyBDby4sIEx0ZC4KLQkJCQlGdW1paXJpIDItMTAtMTkKLQkJCQlVZWRhIGNpdHkgTmFnYW5vIHByZWZlY3R1cmUgMzg2LTg2MDgKLQkJCQlKQVBBTgotCi0wMC0wRi1ERCAgIChoZXgpCQlTT1JESU4gQUIKLTAwMEZERCAgICAgKGJhc2UgMTYpCQlTT1JESU4gQUIKLQkJCQlSb3JsYWdnYXJ2YWdlbiA4Ci0JCQkJVmFybmFtbyBTbWFsYW5kIFMtMzMxIDM0Ci0JCQkJU1dFREVOCi0KLTAwLTBGLURFICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDBGREUgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMEYtREYgICAoaGV4KQkJU09MT01PTiBUZWNobm9sb2d5IENvcnAuCi0wMDBGREYgICAgIChiYXNlIDE2KQkJU09MT01PTiBUZWNobm9sb2d5IENvcnAuCi0JCQkJTm8uNDIsU2luZyBaaG9uZyBSZC4sTmVpIEh1IERpc3QuLAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi1FMCAgIChoZXgpCQlOQ29tcHV0aW5nIENvLixMdGQuCi0wMDBGRTAgICAgIChiYXNlIDE2KQkJTkNvbXB1dGluZyBDby4sTHRkLgotCQkJCTZ0aCBGbCwgSkVJLVBsYXR6IEIvRAotCQkJCTE0MjMtNiwgR3dhbnlhbmcxLURvbmcsIERvbmdhbi1HdQotCQkJCVNlb3VsIEdhc2FuLWRvbmcgR2V1bWNoZW9uLUd1IDQ1OS0xMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1FMSAgIChoZXgpCQlJRCBESUdJVEFMIENPUlBPUkFUSU9OCi0wMDBGRTEgICAgIChiYXNlIDE2KQkJSUQgRElHSVRBTCBDT1JQT1JBVElPTgotCQkJCTZ0aCBGbC4sIE1pcmFlIEJsZGcuLCAyNzEtMSwgU2VvaHl1bi1kb25nLCBCdW5kYW5nLWt1LCBTdW5nbmFtLXNpLCBLZW9uZ2tpLWRvLCBTb3V0aCBLb3JlYQotCQkJCVN1bmduYW0tU2kgS2VvbmdraS1kbyA0NjMtMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUUyICAgKGhleCkJCUhhbmd6aG91IEgzQyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDBGRTIgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgSDNDIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlPcmllbnRhbCBFbGVjdHJvbmljIEJsZC4sIE5PLjIsQ2h1YW5neWUgUm9hZAotCQkJCVNoYW5nLURpIEluZm9ybWFpdG9uIEluZHVzdHJ5IEJhc2UsCi0JCQkJSGFpLURpYW4gRGlzdHJpY3QgQmVpamluZyAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0wRi1FMyAgIChoZXgpCQlEYW1tIENlbGx1bGFyIFN5c3RlbXMgQS9TCi0wMDBGRTMgICAgIChiYXNlIDE2KQkJRGFtbSBDZWxsdWxhciBTeXN0ZW1zIEEvUwotCQkJCU1vZWxsZWdhZGUgNjgKLQkJCQlTb2VuZGVyYm9yZyAgRGstNjQwMAotCQkJCURFTk1BUksKLQotMDAtMEYtRTQgICAoaGV4KQkJUGFudGVjaCBDby4sTHRkCi0wMDBGRTQgICAgIChiYXNlIDE2KQkJUGFudGVjaCBDby4sTHRkCi0JCQkJU2hpbnNvbmcgQi9EIDNGLCAyNS0xMiwKLQkJCQlZZW91aWRvLURvbmcsCi0JCQkJWW91bmdkZXVuZ3BvLUdVIFNlb3VsIDE1MC03MTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtRTUgICAoaGV4KQkJTUVSQ1VSWSBTRUNVUklUWSBDT1JQT1JBVElPTgotMDAwRkU1ICAgICAoYmFzZSAxNikJCU1FUkNVUlkgU0VDVVJJVFkgQ09SUE9SQVRJT04KLQkJCQkyMzU1IE1JUkEgTUFSIEFWRS4KLQkJCQlMT05HIEJFQUNIIENBIDkwODE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1FNiAgIChoZXgpCQlNQlRlY2ggU3lzdGVtcywgSW5jLgotMDAwRkU2ICAgICAoYmFzZSAxNikJCU1CVGVjaCBTeXN0ZW1zLCBJbmMuCi0JCQkJNDEyIDFzdCBBdmUgU0UKLQkJCQlTdWl0ZSAxMDAKLQkJCQlDdWxsbWFuIEFsYWJhbWEgMzUwNTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUU3ICAgKGhleCkJCUx1dHJvbiBFbGVjdHJvbmljcyBDby4sIEluYy4KLTAwMEZFNyAgICAgKGJhc2UgMTYpCQlMdXRyb24gRWxlY3Ryb25pY3MgQ28uLCBJbmMuCi0JCQkJNzIwMCBTdXRlciBSZC4KLQkJCQlDb29wZXJzYnVyZyBQQSAxODAzNi0xMjk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1FOCAgIChoZXgpCQlMb2JvcywgSW5jLgotMDAwRkU4ICAgICAoYmFzZSAxNikJCUxvYm9zLCBJbmMuCi0JCQkJVSZUIEJsZGcgM0YsIDEtMi0zIFNhcnVnYWt1LWNobywgQ2hpeW9kYS1rdSwKLQkJCQlUb2t5byAgMTAxLTAwNjQKLQkJCQlKQVBBTgotCi0wMC0wRi1FOSAgIChoZXgpCQlHVyBURUNITk9MT0dJRVMgQ08uLExURC4KLTAwMEZFOSAgICAgKGJhc2UgMTYpCQlHVyBURUNITk9MT0dJRVMgQ08uLExURC4KLQkJCQlOby4zOCBTaGFuZ2RpIFhpbHUsSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTBGLUVBICAgKGhleCkJCUdpZ2EtQnl0ZSBUZWNobm9sb2d5IENvLixMVEQuCi0wMDBGRUEgICAgIChiYXNlIDE2KQkJR2lnYS1CeXRlIFRlY2hub2xvZ3kgQ28uLExURC4KLQkJCQlOby4yMTUsTmFuLVBpbmcgUm9hZCxQaW5nLUplbiBDaXR5LAotCQkJCVBpbmctSmVuIFRhb3l1YW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi1FQiAgIChoZXgpCQlDeWxvbiBDb250cm9scwotMDAwRkVCICAgICAoYmFzZSAxNikJCUN5bG9uIENvbnRyb2xzCi0JCQkJQ2xvbnNoYXVnaCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUNsb25zaGF1Z2gKLQkJCQlEdWJsaW4gMTcgIAotCQkJCUlSRUxBTkQKLQotMDAtMEYtRUMgICAoaGV4KQkJQXJrdXMgSW5jLgotMDAwRkVDICAgICAoYmFzZSAxNikJCUFya3VzIEluYy4KLQkJCQkzLTggQ2h1by1jaG8KLQkJCQlPa2F5YW1hICA3MDAtMDgzNgotCQkJCUpBUEFOCi0KLTAwLTBGLUVEICAgKGhleCkJCUFuYW0gRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTAwMEZFRCAgICAgKGJhc2UgMTYpCQlBbmFtIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJNjQ1IFN1bmdrb2stZG9uZwotCQkJCURhbndvbi1ndQotCQkJCUFuc2FuLWNpdHkgS3l1bmdraS1kbyA0MjUtODM0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUVFICAgKGhleCkJCVhUZWMsIEluY29ycG9yYXRlZAotMDAwRkVFICAgICAoYmFzZSAxNikJCVhUZWMsIEluY29ycG9yYXRlZAotCQkJCTU3NzUgQmx1ZSBMYWdvb24gRHJpdmUKLQkJCQlTdWl0ZSAyODAKLQkJCQlNaWFtaSBGbG9yaWRhIDMzMTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1FRiAgIChoZXgpCQlUaGFsZXMgZS1UcmFuc2FjdGlvbnMgR21iSAotMDAwRkVGICAgICAoYmFzZSAxNikJCVRoYWxlcyBlLVRyYW5zYWN0aW9ucyBHbWJICi0JCQkJS29ucmFkLVp1c2UtU3RyYXNzZSAxOS0yMQotCQkJCUJhZCBIZXJzZmVsZCBIZXNzZW4gMzYyNTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLUYwICAgKGhleCkJCVN1bnJheSBDby4gTHRkLgotMDAwRkYwICAgICAoYmFzZSAxNikJCVN1bnJheSBDby4gTHRkLgotCQkJCU9zYXdhMi01LTUgTWl0YWthCi0JCQkJVG9reW8gMTgxLTAwMTUKLQkJCQlKQVBBTgotCi0wMC0wRi1GMSAgIChoZXgpCQluZXgtRyBTeXN0ZW1zIFB0ZS5MdGQKLTAwMEZGMSAgICAgKGJhc2UgMTYpCQluZXgtRyBTeXN0ZW1zIFB0ZS5MdGQKLQkJCQkyNSBLYWxsYW5nIEF2ZQotCQkJCSMwNy0wNQotCQkJCTMzOTQxNgotCQkJCVNJTkdBUE9SRQotCi0wMC0wRi1GMiAgIChoZXgpCQlMb3VkIFRlY2hub2xvZ2llcyBJbmMuCi0wMDBGRjIgICAgIChiYXNlIDE2KQkJTG91ZCBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTE2MjIwIFdvb2QtUmVkIFJkLiBORQotCQkJCVdvb2RpbnZpbGxlIFdBIDk4MDcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1GMyAgIChoZXgpCQlKdW5nIE15b3VuZyBDb21tdW5pY2F0aW9ucyZUZWNobm9sb2d5Ci0wMDBGRjMgICAgIChiYXNlIDE2KQkJSnVuZyBNeW91bmcgQ29tbXVuaWNhdGlvbnMmVGVjaG5vbG9neQotCQkJCTF0aCBGTC4sIERvbmcgSUwgQmxkZy4xMDcgWWFuZ2phZS1Eb25nCi0JCQkJU2VvY2hvLUt1IFNlb3VsIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtRjQgICAoaGV4KQkJR3VudGVybWFubiAmIERydW5jayBHbWJICi0wMDBGRjQgICAgIChiYXNlIDE2KQkJR3VudGVybWFubiAmIERydW5jayBHbWJICi0JCQkJRG9ydG11bmRlciBTdHIuIDRhCi0JCQkJV2lsbnNkb3JmIE5SVyA1NzIzNAotCQkJCUdFUk1BTlkKLQotMDAtMEYtRjUgICAoaGV4KQkJR04mUyBjb21wYW55Ci0wMDBGRjUgICAgIChiYXNlIDE2KQkJR04mUyBjb21wYW55Ci0JCQkJMzAxIEFuc2FuIFMvVyBjZW50ZXIsIDY0My03IHdvbmdvay1kb25nCi0JCQkJQW5zYW4gY2l0eSBHeWVvbmdnaS1kbyA0MjUtMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUY2ICAgKGhleCkJCURhcmZvbiBFbGVjdHJvbmljcyBDb3JwLgotMDAwRkY2ICAgICAoYmFzZSAxNikJCURhcmZvbiBFbGVjdHJvbmljcyBDb3JwLgotCQkJCTMxLCBMYW5lMTcsIFppaGNpYW5nIE4uIFJvYWQKLQkJCQlHdWVpc2hhbgotCQkJCVRhb3l1YW4gIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtRjcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRkY3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEUi4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRjggICAoaGV4KQkJQ2lzY28gIFN5c3RlbXMKLTAwMEZGOCAgICAgKGJhc2UgMTYpCQlDaXNjbyAgU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1GOSAgIChoZXgpCQlWYWxjcmV0ZWMsIEluYy4KLTAwMEZGOSAgICAgKGJhc2UgMTYpCQlWYWxjcmV0ZWMsIEluYy4KLQkJCQlCeXVja3NhbiBEaWdpdGFsIFZhbGxleSBJSSAxNUYKLQkJCQk0ODEtMTAsIEdhc2FuLURvbmcsIEdldW1jaGVvbi1HdQotCQkJCVNlb3VsICAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUZBICAgKGhleCkJCU9wdGluZWwgU3lzdGVtcywgSW5jLgotMDAwRkZBICAgICAoYmFzZSAxNikJCU9wdGluZWwgU3lzdGVtcywgSW5jLgotCQkJCTY4MzUgRGVlcnBhdGggUmQuCi0JCQkJRWxrcmlkZ2UgTUQgMjEwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUZCICAgKGhleCkJCU5pcHBvbiBEZW5zbyBJbmR1c3RyeSBDby4sIEx0ZC4KLTAwMEZGQiAgICAgKGJhc2UgMTYpCQlOaXBwb24gRGVuc28gSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJMy0xNC0xOQotCQkJCVNoaWJhdXJhLCBNaW5hdG8ta3UgVG9reW8sIDEwOC04NTYwCi0JCQkJSkFQQU4KLQotMDAtMEYtRkMgICAoaGV4KQkJTWVyaXQgTGktTGluIEVudC4KLTAwMEZGQyAgICAgKGJhc2UgMTYpCQlNZXJpdCBMaS1MaW4gRW50LgotCQkJCU5vLiAyMCBXdS1Mb25nIDYgUmQuCi0JCQkJV3UtS3UgVGFpcGVpIDI0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtRkQgICAoaGV4KQkJR2xvcnl0ZWsgTmV0d29yayBJbmMuCi0wMDBGRkQgICAgIChiYXNlIDE2KQkJR2xvcnl0ZWsgTmV0d29yayBJbmMuCi0JCQkJNUYuLTMsIE5vLjE2LCBTZWMuIDEsIERvbmdkYSBSZC4sCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi1GRSAgIChoZXgpCQlHLVBSTyBDT01QVVRFUgotMDAwRkZFICAgICAoYmFzZSAxNikJCUctUFJPIENPTVBVVEVSCi0JCQkJZmlyc3QgYXJyYW5nZSBDIFlpbmdIdSBpbmR1c3RyaWFsIGVzdGF0ZSBRaW5nWGkgY291bnRyeSBEb25nR3VhbiBjaXR5Ci0JCQkJRG9uZ0d1YW4gR3VhbmdEb25nIDUyMzY0OAotCQkJCUNISU5BCi0KLTAwLTBGLUZGICAgKGhleCkJCUNvbnRyb2w0Ci0wMDBGRkYgICAgIChiYXNlIDE2KQkJQ29udHJvbDQKLQkJCQkxMTczNCBTLiBFbGVjdGlvbiBEcml2ZQotCQkJCURyYXBlciBVVCA4NDAyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMDAgICAoaGV4KQkJQ0FCTEUgVEVMRVZJU0lPTiBMQUJPUkFUT1JJRVMsIElOQy4KLTAwMTAwMCAgICAgKGJhc2UgMTYpCQlDQUJMRSBURUxFVklTSU9OIExBQk9SQVRPUklFUywgSU5DLgotCQkJCTg1OCBDb2FsIENyZWVrIENpcmNsZQotCQkJCUxvdWlzdmlsbGUgQ08gODAwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTAxICAgKGhleCkJCUNpdGVsCi0wMDEwMDEgICAgIChiYXNlIDE2KQkJQ2l0ZWwKLQkJCQlMb3VnaGJvcm91Z2ggSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQlFcGluYWwgV2F5Ci0JCQkJTG91Z2hib3JvdWdoICBMRTExIDNFSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEwLTAyICAgKGhleCkJCUFDVElBCi0wMDEwMDIgICAgIChiYXNlIDE2KQkJQUNUSUEKLQkJCQkyNSBDSEVNSU4gREUgUE9VVk9VUlZJTExFCi0JCQkJMzE0MzIgVE9VTE9VU0UsICBDRURFWCAwNCAgCi0JCQkJRlJBTkNFCi0KLTAwLTEwLTAzICAgKGhleCkJCUlNQVRST04sIElOQy4KLTAwMTAwMyAgICAgKGJhc2UgMTYpCQlJTUFUUk9OLCBJTkMuCi0JCQkJMzg5IE9ZU1RFUiBQT0lOVCBCTFZELgotCQkJCVNPLiBTQU4gRlJBTkNJU0NPIENBIDk0MDgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wNCAgIChoZXgpCQlUSEUgQlJBTlRMRVkgQ09JTEUgQ09NUEFOWSxJTkMKLTAwMTAwNCAgICAgKGJhc2UgMTYpCQlUSEUgQlJBTlRMRVkgQ09JTEUgQ09NUEFOWSxJTkMKLQkJCQk1NDUgUkVTRUFSQ0ggRFJJVkUKLQkJCQlBVEhFTlMgR0EgMzA2MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTA1ICAgKGhleCkJCVVFQyBDT01NRVJDSUFMCi0wMDEwMDUgICAgIChiYXNlIDE2KQkJVUVDIENPTU1FUkNJQUwKLQkJCQlQLk8uIEJPWCA1NCwKLQkJCQlNVC4gRURHRUNPTUJFCi0JCQkJNDMwMCBEVVJCQU4gIAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xMC0wNiAgIChoZXgpCQlUaGFsZXMgQ29udGFjdCBTb2x1dGlvbnMgTHRkLgotMDAxMDA2ICAgICAoYmFzZSAxNikJCVRoYWxlcyBDb250YWN0IFNvbHV0aW9ucyBMdGQuCi0JCQkJVG9sYmFyIFdheQotCQkJCVNvdXRoYW1wdG9uLCBTTzMwIDJaUCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTAtMDcgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDA3ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFICAgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wOCAgIChoZXgpCQlWSUVOTkEgU1lTVEVNUyBDT1JQT1JBVElPTgotMDAxMDA4ICAgICAoYmFzZSAxNikJCVZJRU5OQSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJNjY1MSBGUkFTRVJXT09EIFBMQUNFCi0JCQkJU1VJVEUgIzI1MAotCQkJCVJJQ0hNT05ELCBCLkMuIFY2VyAxSjMgIAotCQkJCUNBTkFEQQotCi0wMC0xMC0wOSAgIChoZXgpCQlIT1JPIFFVQVJUWgotMDAxMDA5ICAgICAoYmFzZSAxNikJCUhPUk8gUVVBUlRaCi0JCQkJWi5JLiBST1VURSBERSBOSU9SVAotCQkJCTg1MjAwIC0gRk9OVEVOQVkgTEUgQ09NVEUgIAotCQkJCUZSRU5DSCBHVUlBTkEKLQotMDAtMTAtMEEgICAoaGV4KQkJV0lMTElBTVMgQ09NTVVOSUNBVElPTlMgR1JPVVAKLTAwMTAwQSAgICAgKGJhc2UgMTYpCQlXSUxMSUFNUyBDT01NVU5JQ0FUSU9OUyBHUk9VUAotCQkJCUFEVkFOQ0VEIFRFQ0hOT0xPR0lFUwotCQkJCTExMSBFQVNUIEZJUlNUCi0JCQkJVFVMU0EgT0sgNzQxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTBCICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTAwQiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRSAgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wQyAgIChoZXgpCQlJVE8gQ08uLCBMVEQuCi0wMDEwMEMgICAgIChiYXNlIDE2KQkJSVRPIENPLiwgTFRELgotCQkJCTgtMiBNSVlBTk9TSElUQS1DSE8KLQkJCQlISVJBS0FUQS1DSVRZLCBPU0FLQSAgCi0JCQkJSkFQQU4KLQotMDAtMTAtMEQgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDBEICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLi1TSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTBFICAgKGhleCkJCU1JQ1JPIExJTkVBUiBDT1BPUkFUSU9OCi0wMDEwMEUgICAgIChiYXNlIDE2KQkJTUlDUk8gTElORUFSIENPUE9SQVRJT04KLQkJCQkyMDkyIENPTkNPVVJTRSBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wRiAgIChoZXgpCQlJTkRVU1RSSUFMIENQVSBTWVNURU1TCi0wMDEwMEYgICAgIChiYXNlIDE2KQkJSU5EVVNUUklBTCBDUFUgU1lTVEVNUwotCQkJCTExMS1EIFcuIERZRVIgUk9BRAotCQkJCVNBTlRBIEFOQSBDQSA5MjcwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMTAgICAoaGV4KQkJSU5JVElPIENPUlBPUkFUSU9OCi0wMDEwMTAgICAgIChiYXNlIDE2KQkJSU5JVElPIENPUlBPUkFUSU9OCi0JCQkJMjE4OCBCIERFTCBGUkFOQ08gU1RSRUVUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTExICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTAxMSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTEyICAgKGhleCkJCVBST0NFU1NPUiBTWVNURU1TIChJKSBQVlQgTFRECi0wMDEwMTIgICAgIChiYXNlIDE2KQkJUFJPQ0VTU09SIFNZU1RFTVMgKEkpIFBWVCBMVEQKLQkJCQkyNCBSSUNITU9ORCBST0FECi0JCQkJQkFOR0FMT1JFIDU2MCAwMjUgIAotCQkJCUlORElBCi0KLTAwLTEwLTEzICAgKGhleCkJCUtvbnRyb24gQW1lcmljYSwgSW5jLgotMDAxMDEzICAgICAoYmFzZSAxNikJCUtvbnRyb24gQW1lcmljYSwgSW5jLgotCQkJCTE0MTE4IFN0b3dlIERyaXZlCi0JCQkJUG93YXksIENBIDkyMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTE0ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTAxNCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTE1ICAgKGhleCkJCU9PbW9uIEluYy4KLTAwMTAxNSAgICAgKGJhc2UgMTYpCQlPT21vbiBJbmMuCi0JCQkJUE8gQk9YIDgyNDEKLQkJCQlDT0JVUkcgT1IgOTc0MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTE2ICAgKGhleCkJCVQuU1FXQVJFCi0wMDEwMTYgICAgIChiYXNlIDE2KQkJVC5TUVdBUkUKLQkJCQk2LCBQQVJDIEFSSUFORQotCQkJCUlNTUVVQkxFIE1FUkNVUkUKLQkJCQk3ODI4NCBHVVlBTkNPVVJUIENFREVYICAKLQkJCQlGUkFOQ0UKLQotMDAtMTAtMTcgICAoaGV4KQkJQm9zY2ggQWNjZXNzIFN5c3RlbXMgR21iSAotMDAxMDE3ICAgICAoYmFzZSAxNikJCUJvc2NoIEFjY2VzcyBTeXN0ZW1zIEdtYkgKLQkJCQlDaGFybG90dGVuYnVyZ2VyIEFsbGVlIDUwICAgICAgICAgICAgCi0JCQkJQUFDSEVOICAgIEQtNTIwNjggCi0JCQkJR0VSTUFOWQotCi0wMC0xMC0xOCAgIChoZXgpCQlCUk9BRENPTSBDT1JQT1JBVElPTgotMDAxMDE4ICAgICAoYmFzZSAxNikJCUJST0FEQ09NIENPUlBPUkFUSU9OCi0JCQkJMTYyMTUgQUxUT04gUEFSS1dBWQotCQkJCVAuTy4gQk9YIDU3MDEzCi0JCQkJSVJWSU5FIENBIDkyNjE5LTcwMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTE5ICAgKGhleCkJCVNJUk9OQSBERU5UQUwgU1lTVEVNUyBHbWJIICYgQ28uIEtHCi0wMDEwMTkgICAgIChiYXNlIDE2KQkJU0lST05BIERFTlRBTCBTWVNURU1TIEdtYkggJiBDby4gS0cKLQkJCQlGQUJSSUtTVFJBU1NFIDMxCi0JCQkJNjQ2MjUgQkVOU0hFSU0gIAotCQkJCUdFUk1BTlkKLQotMDAtMTAtMUEgICAoaGV4KQkJUGljdHVyZVRlbCBDb3JwLgotMDAxMDFBICAgICAoYmFzZSAxNikJCVBpY3R1cmVUZWwgQ29ycC4KLQkJCQkxMDAgTUlOVVRFTUFOIFJPQUQsIE1TNjQxCi0JCQkJQU5ET1ZFUiBNQSAwMTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMUIgICAoaGV4KQkJQ09STkVUIFRFQ0hOT0xPR1ksIElOQy4KLTAwMTAxQiAgICAgKGJhc2UgMTYpCQlDT1JORVQgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTdGLTQsIE5PLiA0NiBDSFVORyBTSEFOIE4uUk9BRAotCQkJCVNFQy4gMiwgVEFJUEVJICAKLQkJCQlUQUpJS0lTVEFOCi0KLTAwLTEwLTFDICAgKGhleCkJCU9ITSBURUNITk9MT0dJRVMgSU5UTCwgTExDCi0wMDEwMUMgICAgIChiYXNlIDE2KQkJT0hNIFRFQ0hOT0xPR0lFUyBJTlRMLCBMTEMKLQkJCQk0IEVYRUNVVElWRSBDSVJDTEUsIFN1aXRlIDE4NQotCQkJCUlSVklORSBDQSA5MjYxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMUQgICAoaGV4KQkJV0lOQk9ORCBFTEVDVFJPTklDUyBDT1JQLgotMDAxMDFEICAgICAoYmFzZSAxNikJCVdJTkJPTkQgRUxFQ1RST05JQ1MgQ09SUC4KLQkJCQlOTy4gNCwgQ1JFQVRJT04gUkQuIElJSQotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTiBDSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtMUUgICAoaGV4KQkJTUFUU1VTSElUQSBFTEVDVFJPTklDIElOU1RSVU1FTlRTIENPUlAuCi0wMDEwMUUgICAgIChiYXNlIDE2KQkJTUFUU1VTSElUQSBFTEVDVFJPTklDIElOU1RSVU1FTlRTIENPUlAuCi0JCQkJMjMtOSBLSVlPSEFSQSBJTkRVU1RSSUFMIFBBUksKLQkJCQlVVFNVTk9NSVlBIFRvY2hpZ2kgMzIxLTMyICAKLQkJCQlKQVBBTgotCi0wMC0xMC0xRiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwMUYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFIuCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjAgICAoaGV4KQkJSGFuZCBIZWxkIFByb2R1Y3RzIEluYwotMDAxMDIwICAgICAoYmFzZSAxNikJCUhhbmQgSGVsZCBQcm9kdWN0cyBJbmMKLQkJCQk3MDAgVmlzaW9ucyBEcml2ZQotCQkJCVNrYW5lYXRlbGVzIEZhbGxzIE5ZIDEzMTUzLTAyMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTIxICAgKGhleCkJCUVOQ0FOVE8gTkVUV09SS1MsIElOQy4KLTAwMTAyMSAgICAgKGJhc2UgMTYpCQlFTkNBTlRPIE5FVFdPUktTLCBJTkMuCi0JCQkJMjk1MyBCVU5LRVIgSElMTCBMQU5FCi0JCQkJU1VJVEUgIzQwMAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yMiAgIChoZXgpCQlTYXRDb20gTWVkaWEgQ29ycG9yYXRpb24KLTAwMTAyMiAgICAgKGJhc2UgMTYpCQlTYXRDb20gTWVkaWEgQ29ycG9yYXRpb24KLQkJCQkzMjU1LTcgU0NPVFQgQkxWRC4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjMgICAoaGV4KQkJTmV0d29yayBFcXVpcG1lbnQgVGVjaG5vbG9naWVzCi0wMDEwMjMgICAgIChiYXNlIDE2KQkJTmV0d29yayBFcXVpcG1lbnQgVGVjaG5vbG9naWVzCi0JCQkJNjkwMCBQYXNlbyBQYWRyZSBQYXJrd2F5Ci0JCQkJRnJlZW1vbnQgQ0EgOTQ1NTUtMzY2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjQgICAoaGV4KQkJTkFHT1lBIEVMRUNUUklDIFdPUktTIENPLiwgTFRECi0wMDEwMjQgICAgIChiYXNlIDE2KQkJTkFHT1lBIEVMRUNUUklDIFdPUktTIENPLiwgTFRECi0JCQkJMjktMSBTSElOT0RBLCBNSVdBLUNITwotCQkJCUFNQS1HVU4sIEFJQ0hJIDQ5MC0xMiAgCi0JCQkJSkFQQU4KLQotMDAtMTAtMjUgICAoaGV4KQkJR3JheWhpbGwsIEluYwotMDAxMDI1ICAgICAoYmFzZSAxNikJCUdyYXloaWxsLCBJbmMKLQkJCQk1NjEgSGlsbGdyb3ZlIEF2ZQotCQkJCUxhR3JhbmdlIElMIDYwNTI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yNiAgIChoZXgpCQlBQ0NFTEVSQVRFRCBORVRXT1JLUywgSU5DLgotMDAxMDI2ICAgICAoYmFzZSAxNikJCUFDQ0VMRVJBVEVEIE5FVFdPUktTLCBJTkMuCi0JCQkJMzEyMzggVklBIENPTElOQVMsIFVOSVQKLQkJCQlXRVNUTEFLRSBWSUxMQUdFIENBIDkxMzYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yNyAgIChoZXgpCQlMLTMgQ09NTVVOSUNBVElPTlMgRUFTVAotMDAxMDI3ICAgICAoYmFzZSAxNikJCUwtMyBDT01NVU5JQ0FUSU9OUyBFQVNUCi0JCQkJT05FIEZFREVSQUwgU1RSRUVUIC0gQSZFLTNFUwotCQkJCUNBTURFTiBOSiAwODEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjggICAoaGV4KQkJQ09NUFVURVIgVEVDSE5JQ0EsIElOQy4KLTAwMTAyOCAgICAgKGJhc2UgMTYpCQlDT01QVVRFUiBURUNITklDQSwgSU5DLgotCQkJCTMtNS0xOSBISUdBU0hJTkFLQSBIQUtBVEEtS1UKLQkJCQlGVUtVT0tBLVNJCi0JCQkJRlVLVU9LQSAgODE2ICAKLQkJCQlKQVBBTgotCi0wMC0xMC0yOSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwMjkgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yQSAgIChoZXgpCQlaRiBNSUNST1NZU1RFTVMsIElOQy4KLTAwMTAyQSAgICAgKGJhc2UgMTYpCQlaRiBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQkxMDUyIEVMV0VMTCBDT1VSVAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMy00MzA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yQiAgIChoZXgpCQlVTUFYIERBVEEgU1lTVEVNUywgSU5DLgotMDAxMDJCICAgICAoYmFzZSAxNikJCVVNQVggREFUQSBTWVNURU1TLCBJTkMuCi0JCQkJTk8uIDEtMSwgUiZEIFJPQUQgMgotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC0yQyAgIChoZXgpCQlMYXNhdCBOZXR3b3JrcyBBL1MKLTAwMTAyQyAgICAgKGJhc2UgMTYpCQlMYXNhdCBOZXR3b3JrcyBBL1MKLQkJCQlTa2FsaHVzZSAxMwotCQkJCVNLLTkyNDAgTmliZSAgCi0JCQkJREVOTUFSSwotCi0wMC0xMC0yRCAgIChoZXgpCQlISVRBQ0hJIFNPRlRXQVJFIEVOR0lORUVSSU5HCi0wMDEwMkQgICAgIChiYXNlIDE2KQkJSElUQUNISSBTT0ZUV0FSRSBFTkdJTkVFUklORwotCQkJCTUtNzksIE9OT0VDSE8sIE5BS0EtS1UKLQkJCQlZT0tPSEFNQSAyMzEgIAotCQkJCUpBUEFOCi0KLTAwLTEwLTJFICAgKGhleCkJCU5FVFdPUksgU1lTVEVNUyAmIFRFQ0hOT0xPR0lFUyBQVlQuIExURC4KLTAwMTAyRSAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFNZU1RFTVMgJiBURUNITk9MT0dJRVMgUFZULiBMVEQuCi0JCQkJUExPVCBOTy4gMiwgQ09DSElOIEVYUE9SVCBQUk9DRVNTSU5HICBaTwotCQkJCUtBS0tBTkFELCBDT0NISU4gNjgyIDAzMCAgCi0JCQkJSU5ESUEKLQotMDAtMTAtMkYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDJGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTMwICAgKGhleCkJCUVJT04gSW5jLgotMDAxMDMwICAgICAoYmFzZSAxNikJCUVJT04gSW5jLgotCQkJCTMyMCBNYXJjaCBSb2FkCi0JCQkJU3VpdGUgNTAwCi0JCQkJT3R0YXdhIE9OIEsySyAyRTMKLQkJCQlDQU5BREEKLQotMDAtMTAtMzEgICAoaGV4KQkJT0JKRUNUSVZFIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDEwMzEgICAgIChiYXNlIDE2KQkJT0JKRUNUSVZFIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNzUgUk9DSEVTVEVSIEFWRS4KLQkJCQlVTklUIDEKLQkJCQlQT1JUU01PVVRIIE5IIDAzODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zMiAgIChoZXgpCQlBTFRBIFRFQ0hOT0xPR1kKLTAwMTAzMiAgICAgKGJhc2UgMTYpCQlBTFRBIFRFQ0hOT0xPR1kKLQkJCQk5NTAwIFNPVVRIIDUwMCBXRVNUIC0gU1RFICMyMTIKLQkJCQlTQU5EWSBVVCA4NDA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMzMgICAoaGV4KQkJQUNDRVNTTEFOIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDEwMzMgICAgIChiYXNlIDE2KQkJQUNDRVNTTEFOIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNDQgQUlSUE9SVCBQQVJLV0FZCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTM0ICAgKGhleCkJCUdOUCBDb21wdXRlcnMKLTAwMTAzNCAgICAgKGJhc2UgMTYpCQlHTlAgQ29tcHV0ZXJzCi0JCQkJNTU1IEUuSHVudGluZ3RvbiBEcml2ZQotCQkJCU1vbnJvdmlhIENBIDkxMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zNSAgIChoZXgpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTVMgQ08uLCBMVEQKLTAwMTAzNSAgICAgKGJhc2UgMTYpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTVMgQ08uLCBMVEQKLQkJCQk2RiwgTk8uIDg4LCBTRUMuIDYKLQkJCQlDSFVORyBTSEFOIE4uIFJELgotCQkJCVNoaWggTGluIFRBSVBFSSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLTM2ICAgKGhleCkJCUlOVEVSLVRFTCBJTlRFR1JBVEVEIFNZU1RFTVMKLTAwMTAzNiAgICAgKGJhc2UgMTYpCQlJTlRFUi1URUwgSU5URUdSQVRFRCBTWVNURU1TCi0JCQkJNzMwMCBXLiBCT1NUT04gU1RSRUVUCi0JCQkJQ0hBTkRMRVIgQVogODUyMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTM3ICAgKGhleCkJCUNZUSd2ZSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMDM3ICAgICAoYmFzZSAxNikJCUNZUSd2ZSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUNPU01PIEJMREcuIDEwRiwgTk8uMS03Ci0JCQkJU0hJTkpVS1UgMS1DSE9NRQotCQkJCVNISU5KVUtVLUtVLCAgVE9LWU8gMTYwICAKLQkJCQlKQVBBTgotCi0wMC0xMC0zOCAgIChoZXgpCQlNSUNSTyBSRVNFQVJDSCBJTlNUSVRVVEUsIElOQy4KLTAwMTAzOCAgICAgKGJhc2UgMTYpCQlNSUNSTyBSRVNFQVJDSCBJTlNUSVRVVEUsIElOQy4KLQkJCQkyRiwgMkwtMi01IE1JTkFNSSBTSElOQUdBV0EKLQkJCQlTSElOQUdBV0EtS1UKLQkJCQlUT0tZTyAgCi0JCQkJSkFQQU4KLQotMDAtMTAtMzkgICAoaGV4KQkJVmVjdHJvbiBTeXN0ZW1zIEFHCi0wMDEwMzkgICAgIChiYXNlIDE2KQkJVmVjdHJvbiBTeXN0ZW1zIEFHCi0JCQkJV2lsbHktQnJhbmR0LVdlZyA0MQotCQkJCTQ4MTU1IE11ZW5zdGVyICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTEwLTNBICAgKGhleCkJCURJQU1PTkQgTkVUV09SSyBURUNICi0wMDEwM0EgICAgIChiYXNlIDE2KQkJRElBTU9ORCBORVRXT1JLIFRFQ0gKLQkJCQlQLk8uIEJPWCA4NDUyNQotCQkJCUdSRUVOU0lERSAyMDM0ICAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMTAtM0IgICAoaGV4KQkJSElQUEkgTkVUV09SS0lORyBGT1JVTQotMDAxMDNCICAgICAoYmFzZSAxNikJCUhJUFBJIE5FVFdPUktJTkcgRk9SVU0KLQkJCQlQTyBCT1ggMTAxNzMKLQkJCQlBTEJVUVVFUlFVRSBOTSA4NzE4NC0wMTczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zQyAgIChoZXgpCQlJQyBFTlNFTUJMRSwgSU5DLgotMDAxMDNDICAgICAoYmFzZSAxNikJCUlDIEVOU0VNQkxFLCBJTkMuCi0JCQkJMzI1NS0yIFNDT1RUIEJMVkQuLS1TVEUuIzEwNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zRCAgIChoZXgpCQlQSEFTRUNPTSwgTFRELgotMDAxMDNEICAgICAoYmFzZSAxNikJCVBIQVNFQ09NLCBMVEQuCi0JCQkJUC5PLiBCT1ggNDUwMTcKLQkJCQlKRVJVU0FMRU0gOTE0NTAgIAotCQkJCUlTUkFFTAotCi0wMC0xMC0zRSAgIChoZXgpCQlORVRTQ0hPT0xTIENPUlBPUkFUSU9OCi0wMDEwM0UgICAgIChiYXNlIDE2KQkJTkVUU0NIT09MUyBDT1JQT1JBVElPTgotCQkJCTIwMDMgTEFORElOR1MgRFJJVkUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zRiAgIChoZXgpCQlUT0xMR1JBREUgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMTAzRiAgICAgKGJhc2UgMTYpCQlUT0xMR1JBREUgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk0OTMgTklYT04gUk9BRAotCQkJCUNIRVNXSUNLIFBBIDE1MDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC00MCAgIChoZXgpCQlJTlRFUk1FQyBDT1JQT1JBVElPTgotMDAxMDQwICAgICAoYmFzZSAxNikJCUlOVEVSTUVDIENPUlBPUkFUSU9OCi0JCQkJNjAwMSAzNlRIIEFWRSBXRVNUCi0JCQkJUC5PLiBCT1ggNDI4MAotCQkJCUVWRVJFVFQgV0EgOTgyMDMtOTI4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNDEgICAoaGV4KQkJQlJJU1RPTCBCQUJDT0NLLCBJTkMuCi0wMDEwNDEgICAgIChiYXNlIDE2KQkJQlJJU1RPTCBCQUJDT0NLLCBJTkMuCi0JCQkJMTEwMCBCVUNLSU5HSEFNIFNUUkVFVAotCQkJCVdBVEVSVE9XTiBDVCAwNjc5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNDIgICAoaGV4KQkJQWxhY3JpdGVjaCwgSW5jLgotMDAxMDQyICAgICAoYmFzZSAxNikJCUFsYWNyaXRlY2gsIEluYy4KLQkJCQkxOTk1IE4uIEZpcnN0IFN0cmVldAotCQkJCVN1aXRlIDIwMAotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC00MyAgIChoZXgpCQlBMiBDT1JQT1JBVElPTgotMDAxMDQzICAgICAoYmFzZSAxNikJCUEyIENPUlBPUkFUSU9OCi0JCQkJNi0xNC0xMSBZVVRBS0EtQ0hPCi0JCQkJU0hJTkFHQVdBLUtVCi0JCQkJVE9LWU8gIAotCQkJCUpBUEFOCi0KLTAwLTEwLTQ0ICAgKGhleCkJCUlubm9MYWJzIENvcnBvcmF0aW9uCi0wMDEwNDQgICAgIChiYXNlIDE2KQkJSW5ub0xhYnMgQ29ycG9yYXRpb24KLQkJCQkyRi00LCBOTy4gMTYsIExBTkUgNjA5LCBDSFVORy1IU0lOIFJELgotCQkJCVNFQy4gNSBTQU4tQ0hVTkcgQ0lUWQotCQkJCVRhaXBlaSBIc2llbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC00NSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMTA0NSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlPUFRlcmEgU29sdXRpb25zIERpdmlzaW9uCi0JCQkJMzQwIFRlcnJ5IEZveCBEcml2ZQotCQkJCUthbmF0YSBPbnRhcmlvIEsySy0yWDMgCi0JCQkJQ0FOQURBCi0KLTAwLTEwLTQ2ICAgKGhleCkJCUFMQ09STiBNQ0JSSURFIElOQy4KLTAwMTA0NiAgICAgKGJhc2UgMTYpCQlBTENPUk4gTUNCUklERSBJTkMuCi0JCQkJMzMwMCBTLiBISUFXQVNTRUUgICMxMDUKLQkJCQlPUkxBTkRPIEZMIDMyODM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC00NyAgIChoZXgpCQlFQ0hPIEVMRVRSSUMgQ08uIExURC4KLTAwMTA0NyAgICAgKGJhc2UgMTYpCQlFQ0hPIEVMRVRSSUMgQ08uIExURC4KLQkJCQlOTy4xODAwIElDSElHQU8gQ0hPCi0JCQkJTUlET1JJIFdBUkQKLQkJCQlZT0tPSEFNQSBDSVRZICAyMjUKLQkJCQlKQVBBTgotCi0wMC0xMC00OCAgIChoZXgpCQlIVFJDIEFVVE9NQVRJT04sIElOQy4KLTAwMTA0OCAgICAgKGJhc2UgMTYpCQlIVFJDIEFVVE9NQVRJT04sIElOQy4KLQkJCQkyODUgTEFWQUwgU1RSRUVUCi0JCQkJQlJPTVBUT05WSUxMRQotCQkJCVFVRUJFQyBKMEIgMUgwICAKLQkJCQlDQU5BREEKLQotMDAtMTAtNDkgICAoaGV4KQkJU2hvcmVUZWwsIEluYwotMDAxMDQ5ICAgICAoYmFzZSAxNikJCVNob3JlVGVsLCBJbmMKLQkJCQk5NjAgU3Rld2FydCBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNEEgICAoaGV4KQkJVGhlIFBhcnZ1cyBDb3Jwb3JhdGlvbgotMDAxMDRBICAgICAoYmFzZSAxNikJCVRoZSBQYXJ2dXMgQ29ycG9yYXRpb24KLQkJCQkzMjIyIFMgV2FzaGluZ3RvbiBTdC4KLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNEIgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDAxMDRCICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJTUFJTFNUT1A6IDQyMjAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNEMgICAoaGV4KQkJTGVDcm95IENvcnBvcmF0aW9uCi0wMDEwNEMgICAgIChiYXNlIDE2KQkJTGVDcm95IENvcnBvcmF0aW9uCi0JCQkJMzM4NSBTY290dCBCbHZkLgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC00RCAgIChoZXgpCQlTVVJURUMgSU5EVVNUUklFUywgSU5DLgotMDAxMDREICAgICAoYmFzZSAxNikJCVNVUlRFQyBJTkRVU1RSSUVTLCBJTkMuCi0JCQkJTk8uMTEsIEFMTEVZIDE2LCBMQU5FIDMzNwotCQkJCVRBLVRVTkcgUk9BRCBTRUMuMSwgU0hJLUNISUgKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtNEUgICAoaGV4KQkJQ0VPTE9HSUMKLTAwMTA0RSAgICAgKGJhc2UgMTYpCQlDRU9MT0dJQwotCQkJCVpBIERFIFBJU1NBTE9PUAotCQkJCVJVRSBFRE9VQVJEIEJSQU5MWQotCQkJCTc4MTkyIFRSQVBQRVMgIAotCQkJCUZSQU5DRQotCi0wMC0xMC00RiAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMTA0RiAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJTWVubG8gUGFyayBDQSA5NTAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNTAgICAoaGV4KQkJUklPTiBDTy4sIExURC4KLTAwMTA1MCAgICAgKGJhc2UgMTYpCQlSSU9OIENPLiwgTFRELgotCQkJCTMtMjAtNDEgSElHQVNISU1PVE9NQUNISQotCQkJCUtPS1VCVU5KSSwgVE9LWU8gMTg1ICAKLQkJCQlKQVBBTgotCi0wMC0xMC01MSAgIChoZXgpCQlDTUlDUk8gQ09SUE9SQVRJT04KLTAwMTA1MSAgICAgKGJhc2UgMTYpCQlDTUlDUk8gQ09SUE9SQVRJT04KLQkJCQkxNy0yMC0yIEtBTUlOTy1DSE8KLQkJCQlUQUtBTUFUU1UtU0hJLCBLQUdBV0EgNzYxICAKLQkJCQlKQVBBTgotCi0wMC0xMC01MiAgIChoZXgpCQlNRVRUTEVSLVRPTEVETyAoQUxCU1RBRFQpIEdNQkgKLTAwMTA1MiAgICAgKGJhc2UgMTYpCQlNRVRUTEVSLVRPTEVETyAoQUxCU1RBRFQpIEdNQkgKLQkJCQlQLk8uIEJPWCAyIDUwCi0JCQkJRC03MjQyMyBBTEJTVEFEVCAgCi0JCQkJR0VSTUFOWQotCi0wMC0xMC01MyAgIChoZXgpCQlDT01QVVRFUiBURUNITk9MT0dZIENPUlAuCi0wMDEwNTMgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTUwIFcuIFRFQ0hORUNFTlRFUiBEUklWRQotCQkJCU1JTEZPUkQgT0ggNDUxNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTU0ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTA1NCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTU1ICAgKGhleCkJCUZVSklUU1UgTUlDUk9FTEVDVFJPTklDUywgSU5DLgotMDAxMDU1ICAgICAoYmFzZSAxNikJCUZVSklUU1UgTUlDUk9FTEVDVFJPTklDUywgSU5DLgotCQkJCTM1NDUgTk9SVEggRklSU1QgU1RSRUVUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNTYgICAoaGV4KQkJU09ESUNLIENPLiwgTFRELgotMDAxMDU2ICAgICAoYmFzZSAxNikJCVNPRElDSyBDTy4sIExURC4KLQkJCQkzLTEyLTEgTkFLQU1BQ0hJREFJCi0JCQkJVFNVWlVLSS1LVSwgWU9LT0hBTUEgS0FOQUdBV0EgMjI0IAotCQkJCUpBUEFOCi0KLTAwLTEwLTU3ICAgKGhleCkJCVJlYmVsLmNvbSwgSW5jLgotMDAxMDU3ICAgICAoYmFzZSAxNikJCVJlYmVsLmNvbSwgSW5jLgotCQkJCTE1MCBJU0FCRUxMQSBTVFJFRVQtLVNURS4gMTAwMAotCQkJCU9UVEFXQSwgT05UQVJJTyBLMVMgMVY3ICAKLQkJCQlDQU5BREEKLQotMDAtMTAtNTggICAoaGV4KQkJQXJyb3dQb2ludCBDb21tdW5pY2F0aW9ucwotMDAxMDU4ICAgICAoYmFzZSAxNikJCUFycm93UG9pbnQgQ29tbXVuaWNhdGlvbnMKLQkJCQkyMzUgTElUVExFVE9OIFJPQUQKLQkJCQlXRVNURk9SRCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNTkgICAoaGV4KQkJRElBQkxPIFJFU0VBUkNIIENPLiBMTEMKLTAwMTA1OSAgICAgKGJhc2UgMTYpCQlESUFCTE8gUkVTRUFSQ0ggQ08uIExMQwotCQkJCTgyNSBTVEVXQVJUIERSSVZFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC01QSAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMDEwNUEgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQkFZRlJPTlQgUExBWkEKLQkJCQlNQUlMU1RPUDogIDQyMjAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNUIgICAoaGV4KQkJTkVUIElOU0lHSFQgQUIKLTAwMTA1QiAgICAgKGJhc2UgMTYpCQlORVQgSU5TSUdIVCBBQgotCQkJCVZhc3RiZXJnYSBBbGxlIDkKLQkJCQlTRS0xMjYwIDMwIEhhZ2Vyc3RlbiAKLQkJCQlTV0VERU4KLQotMDAtMTAtNUMgICAoaGV4KQkJUVVBTlRVTSBERVNJR05TIChILksuKSBMVEQuCi0wMDEwNUMgICAgIChiYXNlIDE2KQkJUVVBTlRVTSBERVNJR05TIChILksuKSBMVEQuCi0JCQkJNS9GLiwgU09NRVJTRVQgSE9VU0UsIFRBSUtPTyBQTEFDRQotCQkJCTk3OSBLSU5HJ1MgUk9BRCwKLQkJCQlRVUFSUlkgQkFZICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTAtNUQgICAoaGV4KQkJRHJhZWdlciBNZWRpY2FsCi0wMDEwNUQgICAgIChiYXNlIDE2KQkJRHJhZWdlciBNZWRpY2FsCi0JCQkJTW9pc2xpbmdlciBBbGxlZSA1My01NQotCQkJCUx1ZWJlY2sgIEQtMjM1NDIKLQkJCQlHRVJNQU5ZCi0KLTAwLTEwLTVFICAgKGhleCkJCUhFS0lNSUFOIExBQk9SQVRPUklFUywgSU5DLgotMDAxMDVFICAgICAoYmFzZSAxNikJCUhFS0lNSUFOIExBQk9SQVRPUklFUywgSU5DLgotCQkJCTE1MjAwIE9NRUdBIERSSVZFCi0JCQkJUk9DS1ZJTExFIE1EIDIwODUwLTMyNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTVGICAgKGhleCkJCVpPRElBQyBEQVRBIFNZU1RFTVMKLTAwMTA1RiAgICAgKGJhc2UgMTYpCQlaT0RJQUMgREFUQSBTWVNURU1TCi0JCQkJNSBBdiBEZXMgQW5kZXMKLQkJCQlMZXMgVWxpcyAgOTE5NDAKLQkJCQlGUkFOQ0UKLQotMDAtMTAtNjAgICAoaGV4KQkJQklMTElPTlRPTiBTWVNURU1TLCBJTkMuCi0wMDEwNjAgICAgIChiYXNlIDE2KQkJQklMTElPTlRPTiBTWVNURU1TLCBJTkMuCi0JCQkJM0YtMSwgTk8uIDgsIExBTkUgOTkKLQkJCQlQVS1ESU5HIFJELgotCQkJCUhTSU4tQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLTYxICAgKGhleCkJCUhPU1RMSU5LIENPUlAuCi0wMDEwNjEgICAgIChiYXNlIDE2KQkJSE9TVExJTksgQ09SUC4KLQkJCQkxMEYtMSwgTk8uIDE4MQotCQkJCVNFQy4xLCBUQS1UVU5HIFJELgotCQkJCUhTSS1DSElILCBUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtNjIgICAoaGV4KQkJTlggU0VSVkVSLCBJTE5DLgotMDAxMDYyICAgICAoYmFzZSAxNikJCU5YIFNFUlZFUiwgSUxOQy4KLQkJCQk1NDAxIEUuIExBIFBBTE1BIEFWRS4KLQkJCQlBTkFIRUlNIENBIDkyODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC02MyAgIChoZXgpCQlTVEFSR1VJREUgRElHSVRBTCBORVRXT1JLUwotMDAxMDYzICAgICAoYmFzZSAxNikJCVNUQVJHVUlERSBESUdJVEFMIE5FVFdPUktTCi0JCQkJNTc1NCBQQUNJRklDIENFTlRFUiBCTFZELgotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNjQgICAoaGV4KQkJRE5QRywgTExDCi0wMDEwNjQgICAgIChiYXNlIDE2KQkJRE5QRywgTExDCi0JCQkJMjAgTm9ydGggV2VudHdvcnRoIEF2ZW51ZQotCQkJCUxvbmRvbmRlcnJ5IE5IIDAzMDUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC02NSAgIChoZXgpCQlSQURZTkUgQ09SUE9SQVRJT04KLTAwMTA2NSAgICAgKGJhc2UgMTYpCQlSQURZTkUgQ09SUE9SQVRJT04KLQkJCQk1MjI1IFMuIDM3VEggU1RSRUVUCi0JCQkJUEhPRU5JWCBBWiA4NTA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNjYgICAoaGV4KQkJQURWQU5DRUQgQ09OVFJPTCBTWVNURU1TLCBJTkMuCi0wMDEwNjYgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgQ09OVFJPTCBTWVNURU1TLCBJTkMuCi0JCQkJMjc1NSBOT1JUSFdPT0RTIFBBUktXQVkKLQkJCQlOT1JDUk9TUyBHQSAzMDA3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNjcgICAoaGV4KQkJUkVEQkFDSyBORVRXT1JLUywgSU5DLgotMDAxMDY3ICAgICAoYmFzZSAxNikJCVJFREJBQ0sgTkVUV09SS1MsIElOQy4KLQkJCQkyNTcwIE5PUlRIIDFTVCBTVFJFRVQKLQkJCQlTVUlURSAjNDEwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTY4ICAgKGhleCkJCUNPTU9TIFRFTEVDT00KLTAwMTA2OCAgICAgKGJhc2UgMTYpCQlDT01PUyBURUxFQ09NCi0JCQkJU0FFSEFOIEIvRC8sIDI3LTEgU1VQWU8tRE9ORwotCQkJCUNIVU5HLUdVLCBTRU9VTCAxMDAtMjMwICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTAtNjkgICAoaGV4KQkJSEVMSU9TUyBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAxMDY5ICAgICAoYmFzZSAxNikJCUhFTElPU1MgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkzOTEgVE9UVEVNIFBPTkQgUkQuLSBTVEUjMzAzCi0JCQkJV0FMVEhBTSBNQSAwMjE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNkEgICAoaGV4KQkJRElHSVRBTCBNSUNST1dBVkUgQ09SUE9SQVRJT04KLTAwMTA2QSAgICAgKGJhc2UgMTYpCQlESUdJVEFMIE1JQ1JPV0FWRSBDT1JQT1JBVElPTgotCQkJCTE3MCBST1NFIE9SQ0hBUkQgV0FZCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTZCICAgKGhleCkJCVNPTlVTIE5FVFdPUktTLCBJTkMuCi0wMDEwNkIgICAgIChiYXNlIDE2KQkJU09OVVMgTkVUV09SS1MsIElOQy4KLQkJCQk1IENBUkxJU0xFIFJPQUQKLQkJCQlXRVNURk9SRCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNkMgICAoaGV4KQkJSW5mcmF0ZWMgQUcKLTAwMTA2QyAgICAgKGJhc2UgMTYpCQlJbmZyYXRlYyBBRwotCQkJCVdlcm5lci12b24tU2llbWVucy1TdHIuIDcKLQkJCQk2NDYyNSBCZW5zaGVpbSAKLQkJCQlHRVJNQU5ZCi0KLTAwLTEwLTZEICAgKGhleCkJCUF4eGNlbGVyYSBCcm9hZGJhbmQgV2lyZWxlc3MKLTAwMTA2RCAgICAgKGJhc2UgMTYpCQlBeHhjZWxlcmEgQnJvYWRiYW5kIFdpcmVsZXNzCi0JCQkJMTYwMCBFYXN0IFBhcmhhbSBSb2FkCi0JCQkJUmljaG1vbmQgVkEgMjMyMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTZFICAgKGhleCkJCVRBRElSQU4gQ09NLiBMVEQuCi0wMDEwNkUgICAgIChiYXNlIDE2KQkJVEFESVJBTiBDT00uIExURC4KLQkJCQkyNiBIQVNIT0ZUSU0gU1QuCi0JCQkJSE9MT04gIDU4MTAyICAKLQkJCQlJU1JBRUwKLQotMDAtMTAtNkYgICAoaGV4KQkJVFJFTlRPTiBURUNITk9MT0dZIElOQy4KLTAwMTA2RiAgICAgKGJhc2UgMTYpCQlUUkVOVE9OIFRFQ0hOT0xPR1kgSU5DLgotCQkJCTIzNTAgQ0VOVEVOTklBTCBEUklWRQotCQkJCUdBSU5FU1ZJTExFIEdBIDMwNTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC03MCAgIChoZXgpCQlDQVJBRE9OIFRSRU5EIExURC4KLTAwMTA3MCAgICAgKGJhc2UgMTYpCQlDQVJBRE9OIFRSRU5EIExURC4KLQkJCQlQLk8uIEJPWCAzNCwgSE9SU0hBTQotCQkJCVdFU1QgU1VTU0VYLCBSSDEyIDJZRiBFTkdMQU5EIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEwLTcxICAgKGhleCkJCUFEVkFORVQgSU5DLgotMDAxMDcxICAgICAoYmFzZSAxNikJCUFEVkFORVQgSU5DLgotCQkJCTMtMjAtOCBOT0RBCi0JCQkJT0tBWUFNSSA3MDAgCi0JCQkJSkFQQU4KLQotMDAtMTAtNzIgICAoaGV4KQkJR1ZOIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAxMDcyICAgICAoYmFzZSAxNikJCUdWTiBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk4MjAwIEJSWUFOIERBSVJZIFJPQUQKLQkJCQlTVUlURSAjMTAwCi0JCQkJTEFSR08gRkwgMzM3NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTczICAgKGhleCkJCVRlY2hub2JveCwgSW5jLgotMDAxMDczICAgICAoYmFzZSAxNikJCVRlY2hub2JveCwgSW5jLgotCQkJCTE0MCBNb3VudCBIb2xseSBCeXBhc3MKLQkJCQlVbml0IDEKLQkJCQlMdW1iZXJ0b24gTkogMDgwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTc0ICAgKGhleCkJCUFURU4gSU5URVJOQVRJT05BTCBDTy4sIExURC4KLTAwMTA3NCAgICAgKGJhc2UgMTYpCQlBVEVOIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0JCQkJMTJGLCBOTy4xMDEsIFNVTkcgQ0hJQU5HIFJELgotCQkJCVRBSVBFSSwgMTA0MjggIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtNzUgICAoaGV4KQkJTWF4dG9yIENvcnBvcmF0aW9uCi0wMDEwNzUgICAgIChiYXNlIDE2KQkJTWF4dG9yIENvcnBvcmF0aW9uCi0JCQkJMjQ1MiBDbG92ZXIgQmFzaW4gRHIuCi0JCQkJTG9nbW9udCBDTyA4MDUwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNzYgICAoaGV4KQkJRVVSRU0gR21iSAotMDAxMDc2ICAgICAoYmFzZSAxNikJCUVVUkVNIEdtYkgKLQkJCQlKVUxJQ0hFUiBTVFIuIDMzOEIKLQkJCQlELTUyMDcwIEFBQ0hFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC0xMC03NyAgIChoZXgpCQlTQUYgRFJJVkUgU1lTVEVNUywgTFRELgotMDAxMDc3ICAgICAoYmFzZSAxNikJCVNBRiBEUklWRSBTWVNURU1TLCBMVEQuCi0JCQkJODggQVJERUxUIEFWRS4KLQkJCQlLSVRDSEVORVIsIE9OVEFSSU8gTjJDIDJDOSAgCi0JCQkJQ0FOQURBCi0KLTAwLTEwLTc4ICAgKGhleCkJCU5VRVJBIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDEwNzggICAgIChiYXNlIDE2KQkJTlVFUkEgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMDQ0NSBQQUNJRklDIENFTlRFUiBDT1VSVAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNzkgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDc5ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTdBICAgKGhleCkJCUFtYmlDb20sIEluYy4KLTAwMTA3QSAgICAgKGJhc2UgMTYpCQlBbWJpQ29tLCBJbmMuCi0JCQkJMjQ1MCBTQ09UVCBCTFZELiwgIzMwNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC03QiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwN0IgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLlRBU01BTiBEUi4tU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC03QyAgIChoZXgpCQlQLUNPTSwgSU5DLgotMDAxMDdDICAgICAoYmFzZSAxNikJCVAtQ09NLCBJTkMuCi0JCQkJMzE3NSBTLiBXSU5DSEVTVEVSIEJMVkQuCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTdEICAgKGhleCkJCUFVUk9SQSBDT01NVU5JQ0FUSU9OUywgTFRELgotMDAxMDdEICAgICAoYmFzZSAxNikJCUFVUk9SQSBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCVAuTy4gQk9YIDE5NDIKLQkJCQlNQUNRVUFSSUUgQ0VOVFJFLCBOT1JUSCBSWURFCi0JCQkJTlNXIDIxMTMgIAotCQkJCUFVU1RSQUxJQQotCi0wMC0xMC03RSAgIChoZXgpCQlCQUNITUFOTiBFTEVDVFJPTklDIEdtYkgKLTAwMTA3RSAgICAgKGJhc2UgMTYpCQlCQUNITUFOTiBFTEVDVFJPTklDIEdtYkgKLQkJCQlLUkVVWkFFQ0tFUldFRyAzMwotCQkJCUEgNjgwNiBGRUxES0lSQ0ggIAotCQkJCUFVU1RSSUEKLQotMDAtMTAtN0YgICAoaGV4KQkJQ1JFU1RST04gRUxFQ1RST05JQ1MsIElOQy4KLTAwMTA3RiAgICAgKGJhc2UgMTYpCQlDUkVTVFJPTiBFTEVDVFJPTklDUywgSU5DLgotCQkJCTEwMSBCUk9BRFdBWQotCQkJCUNSRVNTS0lMTCBOSiAwNzYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtODAgICAoaGV4KQkJTUVUQVdBVkUgQ09NTVVOSUNBVElPTlMKLTAwMTA4MCAgICAgKGJhc2UgMTYpCQlNRVRBV0FWRSBDT01NVU5JQ0FUSU9OUwotCQkJCTg3MDAgMTQ4VEggQVZFTlVFIE4uRS4KLQkJCQlSRURNT05EIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC04MSAgIChoZXgpCQlEUFMsIElOQy4KLTAwMTA4MSAgICAgKGJhc2UgMTYpCQlEUFMsIElOQy4KLQkJCQk0OTIyIEVBU1QgWUFMRSBBVkVOVUUKLQkJCQlGUkVTTk8gQ0EgOTM3MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTgyICAgKGhleCkJCUpOQSBURUxFQ09NTVVOSUNBVElPTlMgTElNSVRFRAotMDAxMDgyICAgICAoYmFzZSAxNikJCUpOQSBURUxFQ09NTVVOSUNBVElPTlMgTElNSVRFRAotCQkJCTE2IFNNSVRIIFNULCBDSEFUU1dPT0QKLQkJCQlOU1cgMjA2NyAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTAtODMgICAoaGV4KQkJSEVXTEVUVC1QQUNLQVJEIENPTVBBTlkKLTAwMTA4MyAgICAgKGJhc2UgMTYpCQlIRVdMRVRULVBBQ0tBUkQgQ09NUEFOWQotCQkJCU1BSUwgU1RPUCA0MkxFCi0JCQkJMTEwMDAwIFdPTEZFIFJPQUQKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg0ICAgKGhleCkJCUstQk9UIENPTU1VTklDQVRJT05TCi0wMDEwODQgICAgIChiYXNlIDE2KQkJSy1CT1QgQ09NTVVOSUNBVElPTlMKLQkJCQlQLk8uIEJPWCA0MTAKLQkJCQlOT1JUT04gTUEgMDI3NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg1ICAgKGhleCkJCVBPTEFSSVMgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMTA4NSAgICAgKGJhc2UgMTYpCQlQT0xBUklTIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTAyMDAgU1cgQUxMRU4gQkxWRC4KLQkJCQlCRUFWRVJUT04gT1IgOTcwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg2ICAgKGhleCkJCUFUVE8gVGVjaG5vbG9neSwgSW5jLgotMDAxMDg2ICAgICAoYmFzZSAxNikJCUFUVE8gVGVjaG5vbG9neSwgSW5jLgotCQkJCTE1NSBDcm9zc3BvaW50IFBrd3kuCi0JCQkJQW1oZXJzdCBOWSAxNDA2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtODcgICAoaGV4KQkJWHN0cmVhbWlzIFBMQwotMDAxMDg3ICAgICAoYmFzZSAxNikJCVhzdHJlYW1pcyBQTEMKLQkJCQlPWEZPUkQgU0NJRU5DRSBQQVJLCi0JCQkJRzEwLiAgMiBNQUdEQUxFTiBDRU5UUkUgUk9CRVJUIFJPQklOU09OCi0JCQkJT1hGT1JEIDBYNCA0R0EgRW5nbGFuZCAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg4ICAgKGhleCkJCUFNRVJJQ0FOIE5FVFdPUktTIElOQy4KLTAwMTA4OCAgICAgKGJhc2UgMTYpCQlBTUVSSUNBTiBORVRXT1JLUyBJTkMuCi0JCQkJNjgwMCBPUkFOR0VUSE9SUEUgQVZFLiAjQQotCQkJCUJVRU5BIFBBUksgQ0EgOTA2MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg5ICAgKGhleCkJCVdlYlNvbmljCi0wMDEwODkgICAgIChiYXNlIDE2KQkJV2ViU29uaWMKLQkJCQkzNDY2IEVEV0FSRCBBVkUuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLThBICAgKGhleCkJCVRlcmFMb2dpYywgSW5jLgotMDAxMDhBICAgICAoYmFzZSAxNikJCVRlcmFMb2dpYywgSW5jLgotCQkJCTcwNyBDQUxJRk9STklBIFNUUkVFVAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLThCICAgKGhleCkJCUxBU0VSQU5JTUFUSU9OIFNPTExJTkdFUiBHbWJICi0wMDEwOEIgICAgIChiYXNlIDE2KQkJTEFTRVJBTklNQVRJT04gU09MTElOR0VSIEdtYkgKLQkJCQlDUkVMTEVTVFIuIDE5LzIwCi0JCQkJRCAxMDgyNyBCRVJMSU4gIAotCQkJCUdFUk1BTlkKLQotMDAtMTAtOEMgICAoaGV4KQkJRlVKSVRTVSBURUxFQ09NTVVOSUNBVElPTlMgRVVST1BFLCBMVEQuCi0wMDEwOEMgICAgIChiYXNlIDE2KQkJRlVKSVRTVSBURUxFQ09NTVVOSUNBVElPTlMgRVVST1BFLCBMVEQuCi0JCQkJU09MSUhVTEwgUEFSS1dBWQotCQkJCUJJUk1JTkdIQU0gQlVTSU5FU1MgUEFSSwotCQkJCUJJUk1JTkdIQU0gQjM3IDdZVSBFbmdsYW5kIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEwLThEICAgKGhleCkJCUpvaG5zb24gQ29udHJvbHMsIEluYy4KLTAwMTA4RCAgICAgKGJhc2UgMTYpCQlKb2huc29uIENvbnRyb2xzLCBJbmMuCi0JCQkJNTA3IEUuIE1pY2hpZ2FuIFN0LgotCQkJCVAuTy4gQm94IDQyMyAvIE03MwotCQkJCU1pbHdhdWtlZSBXSSA1MzIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOEUgICAoaGV4KQkJSFVHSCBTWU1PTlMgQ09OQ0VQVCBUZWNobm9sb2dpZXMgTHRkLgotMDAxMDhFICAgICAoYmFzZSAxNikJCUhVR0ggU1lNT05TIENPTkNFUFQgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQlBbGRlciBIaWxscyBQYXJrCi0JCQkJMTYgQWxkZXIgSGlsbHMKLQkJCQlQb29sZSwgRG9yc2V0IEJNMTIgNEFSICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC04RiAgIChoZXgpCQlSQVBUT1IgU1lTVEVNUwotMDAxMDhGICAgICAoYmFzZSAxNikJCVJBUFRPUiBTWVNURU1TCi0JCQkJNjkgSElDS09SWSBBVkUuCi0JCQkJV0FMVEhBTSBNQSAwMjE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOTAgICAoaGV4KQkJQ0lNRVRSSUNTLCBJTkMuCi0wMDEwOTAgICAgIChiYXNlIDE2KQkJQ0lNRVRSSUNTLCBJTkMuCi0JCQkJNTUgVEVNUExFIFBMQUNFCi0JCQkJQk9TVE9OIE1BIDAyMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05MSAgIChoZXgpCQlOTyBXSVJFUyBORUVERUQgQlYKLTAwMTA5MSAgICAgKGJhc2UgMTYpCQlOTyBXSVJFUyBORUVERUQgQlYKLQkJCQlQLk8uIEJPWCAzNDMKLQkJCQkzNzIwIEFIIEJJTFRIT1ZFTiAgCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTAtOTIgICAoaGV4KQkJTkVUQ09SRSBJTkMuCi0wMDEwOTIgICAgIChiYXNlIDE2KQkJTkVUQ09SRSBJTkMuCi0JCQkJMTJGLTIsIDUzNywgU0VDLjIKLQkJCQlLVUFORy1GVSBST0FELAotCQkJCUhTSU5DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtOTMgICAoaGV4KQkJQ01TIENPTVBVVEVSUywgTFRELgotMDAxMDkzICAgICAoYmFzZSAxNikJCUNNUyBDT01QVVRFUlMsIExURC4KLQkJCQkyMDEgQVJDQURJQQotCQkJCU5BUklNQU4gUE9JTlQKLQkJCQlNVU1CQUkgNDAwIDAwMjEgIAotCQkJCUlORElBCi0KLTAwLTEwLTk0ICAgKGhleCkJCVBlcmZvcm1hbmNlIEFuYWx5c2lzIEJyb2FkYmFuZCwgU3BpcmVudCBwbGMKLTAwMTA5NCAgICAgKGJhc2UgMTYpCQlQZXJmb3JtYW5jZSBBbmFseXNpcyBCcm9hZGJhbmQsIFNwaXJlbnQgcGxjCi0JCQkJMjczNDkgQWdvdXJhIFJvYWQKLQkJCQlDYWxhYmFzYXMgSGlsbHMgQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTk1ICAgKGhleCkJCVRob21zb24gSW5jLgotMDAxMDk1ICAgICAoYmFzZSAxNikJCVRob21zb24gSW5jLgotCQkJCTEwMSBXZXN0IDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MC0xMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05NiAgIChoZXgpCQlUUkFDRVdFTEwgU1lTVEVNUywgSU5DLgotMDAxMDk2ICAgICAoYmFzZSAxNikJCVRSQUNFV0VMTCBTWVNURU1TLCBJTkMuCi0JCQkJNTY3IEVOVEVSUFJJU0UgRFJJVkUKLQkJCQlXRVNURVJWSUxMRSBPSCA0MzA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOTcgICAoaGV4KQkJV2luTmV0IE1ldHJvcG9saXRhbiBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDEwOTcgICAgIChiYXNlIDE2KQkJV2luTmV0IE1ldHJvcG9saXRhbiBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJNjYxIEVBU1QgQVJRVUVTIEFWRS4KLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTk4ICAgKGhleCkJCVNUQVJORVQgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDEwOTggICAgIChiYXNlIDE2KQkJU1RBUk5FVCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkyMjEwIE8nVE9PTEUgQVZFLgotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05OSAgIChoZXgpCQlJbm5vTWVkaWEsIEluYy4KLTAwMTA5OSAgICAgKGJhc2UgMTYpCQlJbm5vTWVkaWEsIEluYy4KLQkJCQk0ODAwIEdSRUFUIEFNRVJJQ0EgUEFSS1dBWQotCQkJCVNVSVRFICM0MDAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOUEgICAoaGV4KQkJTkVUTElORQotMDAxMDlBICAgICAoYmFzZSAxNikJCU5FVExJTkUKLQkJCQk3LCBSdWUgZGUgQmlldnJlcwotCQkJCTkyMTQwIENMQU1BUlQgIAotCQkJCUZSQU5DRQotCi0wMC0xMC05QiAgIChoZXgpCQlFbXVsZXggQ29ycG9yYXRpb24KLTAwMTA5QiAgICAgKGJhc2UgMTYpCQlFbXVsZXggQ29ycG9yYXRpb24KLQkJCQkzMzMzIFN1c2FuIFN0cmVldAotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTlDICAgKGhleCkJCU0tU1lTVEVNIENPLiwgTFRELgotMDAxMDlDICAgICAoYmFzZSAxNikJCU0tU1lTVEVNIENPLiwgTFRELgotCQkJCTEtMS0yNSBTSElOIFVSQVNISU1BIENIT1UKLQkJCQlLQU5BR0FXQS1LVQotCQkJCSBZT0tPSEFNQSAyMjEgIAotCQkJCUpBUEFOCi0KLTAwLTEwLTlEICAgKGhleCkJCUNMQVJJTkVUIFNZU1RFTVMsIElOQy4KLTAwMTA5RCAgICAgKGJhc2UgMTYpCQlDTEFSSU5FVCBTWVNURU1TLCBJTkMuCi0JCQkJMTQxNSBLT0xMIENJUkNMRSAjMTAxCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTlFICAgKGhleCkJCUFXQVJFLCBJTkMuCi0wMDEwOUUgICAgIChiYXNlIDE2KQkJQVdBUkUsIElOQy4KLQkJCQlPTkUgT0FLIFBBUksKLQkJCQlCRURGT1JEIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05RiAgIChoZXgpCQlQQVZPLCBJTkMuCi0wMDEwOUYgICAgIChiYXNlIDE2KQkJUEFWTywgSU5DLgotCQkJCTk1IFlFU0xFUiBXQVkKLQkJCQlTRUFUVExFIFdBIDk4MTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BMCAgIChoZXgpCQlJTk5PVkVYIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAxMEEwICAgICAoYmFzZSAxNikJCUlOTk9WRVggVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJS0VZU1RPTkUgQ09NTU9OUwotCQkJCTUyNiBCUkFERE9DSyBBVkUuCi0JCQkJVFVSVExFIENSRUVLIFBBIDE1MTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BMSAgIChoZXgpCQlLRU5ESU4gU0VNSUNPTkRVQ1RPUiwgSU5DLgotMDAxMEExICAgICAoYmFzZSAxNikJCUtFTkRJTiBTRU1JQ09ORFVDVE9SLCBJTkMuCi0JCQkJMTU1MCBTLiBCQVNDT00gQVZFLiwgU1RFLiAjMjUwCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUEyICAgKGhleCkJCVROUwotMDAxMEEyICAgICAoYmFzZSAxNikJCVROUwotCQkJCTgwMCBUaGlyZCBTdHJlZXQsIFN1aXRlIEIxMDAKLQkJCQlIRVJORE9OIFZBIDIwMTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BMyAgIChoZXgpCQlPTU5JVFJPTklYLCBJTkMuCi0wMDEwQTMgICAgIChiYXNlIDE2KQkJT01OSVRST05JWCwgSU5DLgotCQkJCTc2MCBIQVJSSVNPTiBTVFJFRVQKLQkJCQlTRUFUVExFIFdBIDk4MTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BNCAgIChoZXgpCQlYSVJDT00KLTAwMTBBNCAgICAgKGJhc2UgMTYpCQlYSVJDT00KLQkJCQkyMzAwIENPUlBPUkFURSBDRU5URVIgRFIuCi0JCQkJVEhPVVNBTkQgT0FLUyBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQTUgICAoaGV4KQkJT1hGT1JEIElOU1RSVU1FTlRTCi0wMDEwQTUgICAgIChiYXNlIDE2KQkJT1hGT1JEIElOU1RSVU1FTlRTCi0JCQkJSU5EVVNUUklBTCBBTkFMWVNJUyBHUk9VUAotCQkJCTE5LzIwIE5VRkZJRUxEIFdBWQotCQkJCUFiaW5nZG9uLCBPeG9uIE9YMTQgMVRYICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC1BNiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwQTYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BNyAgIChoZXgpCQlVTkVYIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwMTBBNyAgICAgKGJhc2UgMTYpCQlVTkVYIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQk4Ri01LCAjMTMwLCBTWkUgV0VJIFJELiwKLQkJCQlIU0lOQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLUE4ICAgKGhleCkJCVJFTElBTkNFIENPTVBVVEVSIENPUlAuCi0wMDEwQTggICAgIChiYXNlIDE2KQkJUkVMSUFOQ0UgQ09NUFVURVIgQ09SUC4KLQkJCQkzMDMyIEJVTktFUiBISUxMIExBTkUKLQkJCQlTVUlURSAyMDEKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQTkgICAoaGV4KQkJQURIT0MgVEVDSE5PTE9HSUVTCi0wMDEwQTkgICAgIChiYXNlIDE2KQkJQURIT0MgVEVDSE5PTE9HSUVTCi0JCQkJMTE1MCBGSVJTVCBTVFJFRVQKLQkJCQlTQU4gSk9TRSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQUEgICAoaGV4KQkJTUVESUE0LCBJTkMuCi0wMDEwQUEgICAgIChiYXNlIDE2KQkJTUVESUE0LCBJTkMuCi0JCQkJMjUwIDE0VEggU1QuIE5XIC0gU1RFICM0MDAyCi0JCQkJQVRMQU5UQSBHQSAzMDMxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQUIgICAoaGV4KQkJS09JVE8gSU5EVVNUUklFUywgTFRELgotMDAxMEFCICAgICAoYmFzZSAxNikJCUtPSVRPIElORFVTVFJJRVMsIExURC4KLQkJCQkxMDAgTUFFREEtQ0hPLCBUT1RTVUtBLUtVCi0JCQkJWU9LT0hBTUEgMjQ0ICAKLQkJCQlKQVBBTgotCi0wMC0xMC1BQyAgIChoZXgpCQlJTUNJIFRFQ0hOT0xPR0lFUwotMDAxMEFDICAgICAoYmFzZSAxNikJCUlNQ0kgVEVDSE5PTE9HSUVTCi0JCQkJODQwMSBPTEQgQ09VUlQgSEtPVVNFIFJECi0JCQkJU1VJVEUgIzIwMAotCQkJCVZJRU5OQSBWQSAyMjE4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQUQgICAoaGV4KQkJU09GVFJPTklDUyBVU0IsIElOQy4KLTAwMTBBRCAgICAgKGJhc2UgMTYpCQlTT0ZUUk9OSUNTIFVTQiwgSU5DLgotCQkJCTUwODUgTElTVCBEUklWRQotCQkJCUNPTE9SQURPIFNQUklOR1MgQ08gODA5MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUFFICAgKGhleCkJCVNISU5LTyBFTEVDVFJJQyBJTkRVU1RSSUVTIENPLgotMDAxMEFFICAgICAoYmFzZSAxNikJCVNISU5LTyBFTEVDVFJJQyBJTkRVU1RSSUVTIENPLgotCQkJCTgwIE9TSElNQURBLU1BQ0hJCi0JCQkJTkFHQU5PLVNISSAzODEtMjIgIAotCQkJCUpBUEFOCi0KLTAwLTEwLUFGICAgKGhleCkJCVRBQyBTWVNURU1TLCBJTkMuCi0wMDEwQUYgICAgIChiYXNlIDE2KQkJVEFDIFNZU1RFTVMsIElOQy4KLQkJCQkxMDM1IFBVVE1BTiBEUklWRS0tU1RFLgotCQkJCUhVTlRTVklMTEUgQUwgMzU4MTYtMjI3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQjAgICAoaGV4KQkJTUVSSURJQU4gVEVDSE5PTE9HWSBDT1JQLgotMDAxMEIwICAgICAoYmFzZSAxNikJCU1FUklESUFOIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkxMSBNQ0JSSURFIENPUlAuIENFTlRFUiBEUi4KLQkJCQlDSEVTVEVSRklFTEQgTUQgNjMwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUIxICAgKGhleCkJCUZPUi1BIENPLiwgTFRELgotMDAxMEIxICAgICAoYmFzZSAxNikJCUZPUi1BIENPLiwgTFRELgotCQkJCTItMy0zIE9PU0FLVQotCQkJCVNBS1VSQSBDSVRZLAotCQkJCUNISUJBIFBSRUYuIDI4NSAgCi0JCQkJSkFQQU4KLQotMDAtMTAtQjIgICAoaGV4KQkJQ09BQ1RJVkUgQUVTVEhFVElDUwotMDAxMEIyICAgICAoYmFzZSAxNikJCUNPQUNUSVZFIEFFU1RIRVRJQ1MKLQkJCQk0MDAwIEJSSURHRVdBWSAtIFNURS4gIzMwMwotCQkJCVNBVVNBTElUQSBDQSA5NDk2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQjMgICAoaGV4KQkJTk9LSUEgTVVMVElNRURJQSBURVJNSU5BTFMKLTAwMTBCMyAgICAgKGJhc2UgMTYpCQlOT0tJQSBNVUxUSU1FRElBIFRFUk1JTkFMUwotCQkJCU5PS0lBIEhPTUUgQ09NTVVOSUNBVElPTlMKLQkJCQlESVNLRVRUR0FUQU4gMTEKLQkJCQlTRS01ODMgMzUgTElOS09QSU5HICAKLQkJCQlTV0VERU4KLQotMDAtMTAtQjQgICAoaGV4KQkJQVRNT1NQSEVSRSBORVRXT1JLUwotMDAxMEI0ICAgICAoYmFzZSAxNikJCUFUTU9TUEhFUkUgTkVUV09SS1MKLQkJCQkxMDQ2MCBCQU5ETEVZIERSSVZFCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1CNSAgIChoZXgpCQlBQ0NUT04gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDAxMEI1ICAgICAoYmFzZSAxNikJCUFDQ1RPTiBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJTk8uMSwgQ1JFQVRJT04gUkQuIElJSQotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTkNIVSAzMDAgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtQjYgICAoaGV4KQkJRU5UUkFUQSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDAxMEI2ICAgICAoYmFzZSAxNikJCUVOVFJBVEEgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQk1NzQgSEVSSVRBR0UgUkQuCi0JCQkJU09VVEhCVVJZIENUIDA2NDg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1CNyAgIChoZXgpCQlDT1lPVEUgVEVDSE5PTE9HSUVTLCBMTEMKLTAwMTBCNyAgICAgKGJhc2UgMTYpCQlDT1lPVEUgVEVDSE5PTE9HSUVTLCBMTEMKLQkJCQk0MzYwIFBBUksgVEVSUkFDRSBEUklWRQotCQkJCVdFU1RMQUtFIFZJTExBR0UgQ0EgOTEzNjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUI4ICAgKGhleCkJCUlTSElHQUtJIENPTVBVVEVSIFNZU1RFTSBDTy4KLTAwMTBCOCAgICAgKGJhc2UgMTYpCQlJU0hJR0FLSSBDT01QVVRFUiBTWVNURU0gQ08uCi0JCQkJMS0xLTEsIEtZT0JBU0hJLAotCQkJCUNIVU8tS1UKLQkJCQlUb2t5byAgCi0JCQkJSkFQQU4KLQotMDAtMTAtQjkgICAoaGV4KQkJTUFYVE9SIENPUlAuCi0wMDEwQjkgICAgIChiYXNlIDE2KQkJTUFYVE9SIENPUlAuCi0JCQkJMjE5MCBNSUxMRVIgRFJJVkUKLQkJCQlMT05HTU9OVCBDTyA4MDUwMS02NzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1CQSAgIChoZXgpCQlNQVJUSU5ITy1EQVZJUyBTWVNURU1TLCBJTkMuCi0wMDEwQkEgICAgIChiYXNlIDE2KQkJTUFSVElOSE8tREFWSVMgU1lTVEVNUywgSU5DLgotCQkJCTEyNjAgT0xEIElOTkVTIFJPQUQKLQkJCQlPVFRBV0EsIE9OVEFSSU8gSzFCIDNWMyAgCi0JCQkJQ0FOQURBCi0KLTAwLTEwLUJCICAgKGhleCkJCURBVEEgJiBJTkZPUk1BVElPTiBURUNITk9MT0dZCi0wMDEwQkIgICAgIChiYXNlIDE2KQkJREFUQSAmIElORk9STUFUSU9OIFRFQ0hOT0xPR1kKLQkJCQlURUNITk9MT0dZIEhPVVNFCi0JCQkJMSBOT1JNQU5UT04gTEFORQotCQkJCUJPVFRFU0ZPUkQsIE5PVFRJTkdIQU0gTkcxMyBPRUwgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEwLUJDICAgKGhleCkJCUFhc3RyYSBUZWxlY29tCi0wMDEwQkMgICAgIChiYXNlIDE2KQkJQWFzdHJhIFRlbGVjb20KLQkJCQk4IEZlZGVyYWwgU3RyZWV0Ci0JCQkJQmlsbGVyaWNhIE1BIDAxODIxLTM1NzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUJEICAgKGhleCkJCVRIRSBURUxFQ09NTVVOSUNBVElPTiBURUNITk9MT0dZIENPTU1JVFRFRSAoVFRDKQotMDAxMEJEICAgICAoYmFzZSAxNikJCVRIRSBURUxFQ09NTVVOSUNBVElPTiBURUNITk9MT0dZIENPTU1JVFRFRSAoVFRDKQotCQkJCTEtMS0xMiBTaGliYSBLb3VlbiwgTWluYXRvLWt1Ci0JCQkJTUlOQVRPLUtVLCAgIFRPS1lPIDEwNS0wMDExCi0JCQkJSkFQQU4KLQotMDAtMTAtQkUgICAoaGV4KQkJTUFSQ0ggTkVUV09SS1MgQ09SUE9SQVRJT04KLTAwMTBCRSAgICAgKGJhc2UgMTYpCQlNQVJDSCBORVRXT1JLUyBDT1JQT1JBVElPTgotCQkJCTMwMyBUZXJyeSBGb3ggRHJpdmUKLQkJCQlPVFRBV0EsIE9OVEFSSU8gICBLMksgM0oxCi0JCQkJQ0FOQURBCi0KLTAwLTEwLUJGICAgKGhleCkJCUludGVyQWlyIFdpcmVsZXNzCi0wMDEwQkYgICAgIChiYXNlIDE2KQkJSW50ZXJBaXIgV2lyZWxlc3MKLQkJCQk0ODUgQ0FZVUdBIFJPQUQKLQkJCQlCVUZGQUxPIE5ZIDE0MjI1LTAyMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUMwICAgKGhleCkJCUFSTUEsIEluYy4KLTAwMTBDMCAgICAgKGJhc2UgMTYpCQlBUk1BLCBJbmMuCi0JCQkJNDg1MSBOb3J0aHNob3JlIExhbmUKLQkJCQlOb3J0aCBMaXR0bGUgUm9jayBBUiA3MjExOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQzEgICAoaGV4KQkJT0kgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDEwQzEgICAgIChiYXNlIDE2KQkJT0kgRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJNy0zLTE2IEtJS1VOQQotCQkJCUtPSE9LVS1LVQotCQkJCVlPS09IQU1BICAyMjIgIAotCQkJCUpBUEFOCi0KLTAwLTEwLUMyICAgKGhleCkJCVdJTExORVQsIElOQy4KLTAwMTBDMiAgICAgKGJhc2UgMTYpCQlXSUxMTkVULCBJTkMuCi0JCQkJSk9XQS1UQUtBTkFXQSAgQkxERy4gOEYKLQkJCQlUQUtBTkFXQSAxLTUtNCwgTUlOQVRPLUtVLAotCQkJCVRPS1lPICAKLQkJCQlKQVBBTgotCi0wMC0xMC1DMyAgIChoZXgpCQlDU0ktQ09OVFJPTCBTWVNURU1TCi0wMDEwQzMgICAgIChiYXNlIDE2KQkJQ1NJLUNPTlRST0wgU1lTVEVNUwotCQkJCUlOVEVSTkFUSU9OQUwKLQkJCQlQT0IgNTk0NjkKLQkJCQlEQUxMQVMgVFggNzUyMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUM0ICAgKGhleCkJCU1FRElBIExJTktTIENPLiwgTFRELgotMDAxMEM0ICAgICAoYmFzZSAxNikJCU1FRElBIExJTktTIENPLiwgTFRELgotCQkJCUtTUCBFQVNUIEJMREcuIDYwNCwgU0FLQURPIDMtMi0xLAotCQkJCSBUQUtBVFNVLUtVIEtBV0FTQUtJLVNISSwKLQkJCQlLYW5hZ2F3YS1rZW4gMjE0ICAKLQkJCQlKQVBBTgotCi0wMC0xMC1DNSAgIChoZXgpCQlQUk9UT0NPTCBURUNITk9MT0dJRVMsIElOQy4KLTAwMTBDNSAgICAgKGJhc2UgMTYpCQlQUk9UT0NPTCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk0IEZJUlNUIFNUUkVFVAotCQkJCUJSSURHRVdBVEVSIE1BIDAyMzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1DNiAgIChoZXgpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMTBDNiAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQkxNDEsIExBTkUgMzUxLFNFQy4xLCBUQUlQSU5HIFJELgotCQkJCVRTQU9UVUVOLCBOQU5UT1UgNTQyNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLUM3ICAgKGhleCkJCURBVEEgVFJBTlNNSVNTSU9OIE5FVFdPUksKLTAwMTBDNyAgICAgKGJhc2UgMTYpCQlEQVRBIFRSQU5TTUlTU0lPTiBORVRXT1JLCi0JCQkJOTExMCBXLiBET0RHRSBSRC4gLSBTVEUuIzIwMAotCQkJCU9NQUhBIE5FIDY4MTE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1DOCAgIChoZXgpCQlDT01NVU5JQ0FUSU9OUyBFTEVDVFJPTklDUyBTRUNVUklUWSBHUk9VUAotMDAxMEM4ICAgICAoYmFzZSAxNikJCUNPTU1VTklDQVRJT05TIEVMRUNUUk9OSUNTIFNFQ1VSSVRZIEdST1VQCi0JCQkJMTAvNFcyMiBGSURETEVSUyBHUkVFTiBMQU5FCi0JCQkJQmVuaGFsbCwgQ2hlbHRlbmhhbSBHbG91c3RlciBHTDUyIDVBSiAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC1DOSAgIChoZXgpCQlNSVRTVUJJU0hJIEVMRUNUUk9OSUNTIExPR0lTVElDIFNVUFBPUlQgQ08uCi0wMDEwQzkgICAgIChiYXNlIDE2KQkJTUlUU1VCSVNISSBFTEVDVFJPTklDUyBMT0dJU1RJQyBTVVBQT1JUIENPLgotCQkJCQotCQkJCVNIT05BTiBXb3JrcywgNzMwLTExLCBLQU1JTUFDSElZQQotCQkJCUthbWFrdXJhLWNpdHksIEthbmFnYXdhIDI0NyAgCi0JCQkJSkFQQU4KLQotMDAtMTAtQ0EgICAoaGV4KQkJVGVsY28gU3lzdGVtcywgSW5jLiAKLTAwMTBDQSAgICAgKGJhc2UgMTYpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuIAotCQkJCTE1IEJlcmtzaGlyZSBSb2FkCi0JCQkJTWFuc2ZpZWxkLCBNQSAwMjA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQ0IgICAoaGV4KQkJRkFDSVQgSy5LLgotMDAxMENCICAgICAoYmFzZSAxNikJCUZBQ0lUIEsuSy4KLQkJCQlISU1FSSBOSUhPTUJBU0hJIEJMREcuIDNGCi0JCQkJMTItMy1OSUhPTUJBU0hJLUtPQlVOQUNITwotCQkJCUNIVU8tS1UsIFRPS1lPIDEwMyAgCi0JCQkJSkFQQU4KLQotMDAtMTAtQ0MgICAoaGV4KQkJQ0xQIENPTVBVVEVSIExPR0lTVElLIFBMQU5VTkcgR21iSAotMDAxMENDICAgICAoYmFzZSAxNikJCUNMUCBDT01QVVRFUiBMT0dJU1RJSyBQTEFOVU5HIEdtYkgKLQkJCQlCQVNTRVJNQU5OU1RSLiAyMQotCQkJCSBELTgxMjQ1IE1VRU5DSEVOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTEwLUNEICAgKGhleCkJCUlOVEVSRkFDRSBDT05DRVBUCi0wMDEwQ0QgICAgIChiYXNlIDE2KQkJSU5URVJGQUNFIENPTkNFUFQKLQkJCQkzIFZFTkVMTEUgZGUgS0VSR09TCi0JCQkJMjkwMDAgUVVJTVBFUiAgCi0JCQkJRlJBTkNFCi0KLTAwLTEwLUNFICAgKGhleCkJCVZPTEFNUCwgTFRELgotMDAxMENFICAgICAoYmFzZSAxNikJCVZPTEFNUCwgTFRELgotCQkJCVVOSVQgMyBSSVZFUlNJREUgQlVTSU5FU1MgUEFSSwotCQkJCURPR0ZMVUQgV0FZLAotCQkJCUZBUk5IQU0sIFNVUlJFWSBFTkdMQU5EIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEwLUNGICAgKGhleCkJCUZJQkVSTEFORSBDT01NVU5JQ0FUSU9OUwotMDAxMENGICAgICAoYmFzZSAxNikJCUZJQkVSTEFORSBDT01NVU5JQ0FUSU9OUwotCQkJCTEzMTggUkVEV09PRCBXQVksICMyMDAKLQkJCQlQRVRBTFVNQSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRDAgICAoaGV4KQkJV0lUQ09NLCBMVEQuCi0wMDEwRDAgICAgIChiYXNlIDE2KQkJV0lUQ09NLCBMVEQuCi0JCQkJUC5PLkIuIDIyNTAKLQkJCQlIQUlGQSAgMzEwMjEgIAotCQkJCUlTUkFFTAotCi0wMC0xMC1EMSAgIChoZXgpCQlUb3AgTGF5ZXIgTmV0d29ya3MsIEluYy4KLTAwMTBEMSAgICAgKGJhc2UgMTYpCQlUb3AgTGF5ZXIgTmV0d29ya3MsIEluYy4KLQkJCQk0IE1FQ0hBTklDIFNULi0gU1RFIzIxMgotCQkJCU5BVElDSyBNQSAwMTc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRDIgICAoaGV4KQkJTklUVE8gVFNVU0hJTktJIENPLiwgTFRECi0wMDEwRDIgICAgIChiYXNlIDE2KQkJTklUVE8gVFNVU0hJTktJIENPLiwgTFRECi0JCQkJNy0yNy0xMSwgVE9ET1JPS0ksIFNFVEFHQVlBLUtVCi0JCQkJVE9LWU8gMTUxICAKLQkJCQlKQVBBTgotCi0wMC0xMC1EMyAgIChoZXgpCQlHUklQUyBFTEVDVFJPTklDIEdNQkgKLTAwMTBEMyAgICAgKGJhc2UgMTYpCQlHUklQUyBFTEVDVFJPTklDIEdNQkgKLQkJCQlOSUVTRU5CRVJHRVJHQVNTRSAzNwotCQkJCUEtODAyMCBHUkFaICAKLQkJCQlBVVNUUklBCi0KLTAwLTEwLUQ0ICAgKGhleCkJCVNUT1JBR0UgQ09NUFVURVIgQ09SUE9SQVRJT04KLTAwMTBENCAgICAgKGJhc2UgMTYpCQlTVE9SQUdFIENPTVBVVEVSIENPUlBPUkFUSU9OCi0JCQkJMTEgUklWRVJTSURFIFNUUkVFVAotCQkJCU5BU0hVQSBOSCAwMzA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRDUgICAoaGV4KQkJSU1BU0RFIENBTkFSSUFTLCBTLkEuCi0wMDEwRDUgICAgIChiYXNlIDE2KQkJSU1BU0RFIENBTkFSSUFTLCBTLkEuCi0JCQkJVVJCLiBFTCBDRUJBREFMCi0JCQkJQy9EUi4gSlVBTiBER1VFWi5QRVJFWiwgMzktMgotCQkJCTM1MDA4IExBUyBQQUxNQVMgRy5DLiAgCi0JCQkJU1BBSU4KLQotMDAtMTAtRDYgICAoaGV4KQkJSVRUIC0gQS9DRAotMDAxMEQ2ICAgICAoYmFzZSAxNikJCUlUVCAtIEEvQ0QKLQkJCQlERVBULiA4NTIxCi0JCQkJMTAwIEtJTkdTTEFORCBST0FECi0JCQkJQ0xJRlRPTiBOSiAwNzAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRDcgICAoaGV4KQkJQVJHT1NZIFJFU0VBUkNIIElOQy4KLTAwMTBENyAgICAgKGJhc2UgMTYpCQlBUkdPU1kgUkVTRUFSQ0ggSU5DLgotCQkJCU5PLiA0NCwgTEFORSA0MTEsIENIVU5HIEhVQSBSRAotCQkJCVNFQy40LCBIU0lOQ0hVCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC1EOCAgIChoZXgpCQlDQUxJU1RBCi0wMDEwRDggICAgIChiYXNlIDE2KQkJQ0FMSVNUQQotCQkJCTk4IEhJR0ggU1RSRUVULCBUSEFNRQotCQkJCU9YRk9SRFNISVJFIE9YOSAzRUggRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC1EOSAgIChoZXgpCQlJQk0gSkFQQU4sIEZVSklTQVdBIE1UK0QKLTAwMTBEOSAgICAgKGJhc2UgMTYpCQlJQk0gSkFQQU4sIEZVSklTQVdBIE1UK0QKLQkJCQlLSVJJSEFSQS1DSE8gMSwgRlVKSVNBV0EgQ0lUWQotCQkJCUtBTkFHQVdBIDI1MiAgCi0JCQkJSkFQQU4KLQotMDAtMTAtREEgICAoaGV4KQkJTU9USU9OIEVOR0lORUVSSU5HLCBJTkMuCi0wMDEwREEgICAgIChiYXNlIDE2KQkJTU9USU9OIEVOR0lORUVSSU5HLCBJTkMuCi0JCQkJMzMgUy5MQSBQQVRFUkEgTE4KLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1EQiAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzLCBJbmMuCi0wMDEwREIgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcywgSW5jLgotCQkJCTExOTQgTi4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1EQyAgIChoZXgpCQlNSUNSTy1TVEFSIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0wMDEwREMgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotCQkJCU5PLiA2OSwgTEktREUgU1QuLCBKVU5HLUhFIENJVFkKLQkJCQkgVEFJUEVJIEhTSUVOICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLUREICAgKGhleCkJCUVOQUJMRSBTRU1JQ09ORFVDVE9SLCBJTkMuCi0wMDEwREQgICAgIChiYXNlIDE2KQkJRU5BQkxFIFNFTUlDT05EVUNUT1IsIElOQy4KLQkJCQkxNzQwIFRFQ0hOT0xPR1kgRFJJVkUKLQkJCQlTVUlURSAjMTEwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLURFICAgKGhleCkJCUlOVEVSTkFUSU9OQUwgREFUQUNBU1RJTkcgQ09SUE9SQVRJT04KLTAwMTBERSAgICAgKGJhc2UgMTYpCQlJTlRFUk5BVElPTkFMIERBVEFDQVNUSU5HIENPUlBPUkFUSU9OCi0JCQkJMjY4MCBRVUVFTlNWSUVXIERSSVZFCi0JCQkJT1RUQVdBLCBPTlRBUklPIEsyQiA4SDYKLQkJCQlDQU5BREEKLQotMDAtMTAtREYgICAoaGV4KQkJUklTRSBDT01QVVRFUiBJTkMuCi0wMDEwREYgICAgIChiYXNlIDE2KQkJUklTRSBDT01QVVRFUiBJTkMuCi0JCQkJOUYsIE5PLiAzMDYtMywgVEFUVU5HIFJELgotCQkJCVNFQy4gMSwgSFNJIENISUgsCi0JCQkJVEFJUEVJIEhTSUVOICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLUUwICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbgotMDAxMEUwICAgICAoYmFzZSAxNikJCU9yYWNsZSBDb3Jwb3JhdGlvbgotCQkJCTUwMCBPcmFjbGUgUGFya3dheQotCQkJCVJlZHdvb2QgU2hvcmVzIENBIDk0MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FMSAgIChoZXgpCQlTLkkuIFRFQ0gsIElOQy4KLTAwMTBFMSAgICAgKGJhc2UgMTYpCQlTLkkuIFRFQ0gsIElOQy4KLQkJCQlQLk8uIEJPWCA2MDkKLQkJCQlHRU5FVkEgSUwgNjAxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUUyICAgKGhleCkJCUFycmF5Q29tbSwgSW5jLgotMDAxMEUyICAgICAoYmFzZSAxNikJCUFycmF5Q29tbSwgSW5jLgotCQkJCTMxNDEgWkFOS0VSIFJPQUQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRTMgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDEwRTMgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUU0ICAgKGhleCkJCU5TSSBDT1JQT1JBVElPTgotMDAxMEU0ICAgICAoYmFzZSAxNikJCU5TSSBDT1JQT1JBVElPTgotCQkJCVAuTy4gQk9YIDYzNQotCQkJCVdJTFNPTlZJTExFIE9SIDk3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FNSAgIChoZXgpCQlTT0xFQ1RST04gVEVYQVMKLTAwMTBFNSAgICAgKGJhc2UgMTYpCQlTT0xFQ1RST04gVEVYQVMKLQkJCQkxMjQ1NSBSRVNFQVJDSCBCTFZELiBNL1MgMjIwNQotCQkJCUFVU1RJTiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRTYgICAoaGV4KQkJQVBQTElFRCBJTlRFTExJR0VOVCBTWVNURU1TLCBJTkMuCi0wMDEwRTYgICAgIChiYXNlIDE2KQkJQVBQTElFRCBJTlRFTExJR0VOVCBTWVNURU1TLCBJTkMuCi0JCQkJMzkyMyBSQU5DSEVSTyBEUklWRQotCQkJCUFOTiBBUkJPUiBNSSA0ODEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRTcgICAoaGV4KQkJQnJlZXplQ29tCi0wMDEwRTcgICAgIChiYXNlIDE2KQkJQnJlZXplQ29tCi0JCQkJUE8gQm94IDEzMTM5Ci0JCQkJQXRpZGltIFRlY2hub2xvZ2ljYWwgUGFyaywgQmxkZy4gMQotCQkJCVRlbC1Bdml2ICAKLQkJCQlJU1JBRUwKLQotMDAtMTAtRTggICAoaGV4KQkJVEVMT0NJVFksIElOQ09SUE9SQVRFRAotMDAxMEU4ICAgICAoYmFzZSAxNikJCVRFTE9DSVRZLCBJTkNPUlBPUkFURUQKLQkJCQk5OTIgU09VVEggREUgQU5aQSBCTFZECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUU5ICAgKGhleCkJCVJBSURURUMgTFRELgotMDAxMEU5ICAgICAoYmFzZSAxNikJCVJBSURURUMgTFRELgotCQkJCUNBU1RMRSBST0FECi0JCQkJTElUVExFIElTTEFORCBJTkRVU1RSSUFMIEVTVEFURQotCQkJCUxpdHRsZSBJc2xhbmQgQ291bnR5IENvcmsgCi0JCQkJSVJFTEFORAotCi0wMC0xMC1FQSAgIChoZXgpCQlBREVQVCBURUNITk9MT0dZCi0wMDEwRUEgICAgIChiYXNlIDE2KQkJQURFUFQgVEVDSE5PTE9HWQotCQkJCTE1MCBST1NFIE9SQ0hBUkQgV0FZCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUVCICAgKGhleCkJCVNFTFNJVVMgU1lTVEVNUywgSU5DLgotMDAxMEVCICAgICAoYmFzZSAxNikJCVNFTFNJVVMgU1lTVEVNUywgSU5DLgotCQkJCTUwNTcgS0VMTEVSIFNQUklOR1MgUkQuCi0JCQkJREFMTEFTIFRYIDc1MjQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FQyAgIChoZXgpCQlSUENHLCBMTEMKLTAwMTBFQyAgICAgKGJhc2UgMTYpCQlSUENHLCBMTEMKLQkJCQk3NDkgTUlORVIgUk9BRAotCQkJCUhJR0hMQU5EIEhUUyBPSCA0NDE0My0yMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FRCAgIChoZXgpCQlTVU5EQU5DRSBURUNITk9MT0dZLCBJTkMuCi0wMDEwRUQgICAgIChiYXNlIDE2KQkJU1VOREFOQ0UgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTIwMTExIFNURVZFTlMgQ1JFRUsgQkxWRC4KLQkJCQlTVUlURSAjMTM4Ci0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FRSAgIChoZXgpCQlDVEkgUFJPRFVDVFMsIElOQy4KLTAwMTBFRSAgICAgKGJhc2UgMTYpCQlDVEkgUFJPRFVDVFMsIElOQy4KLQkJCQkxMjExIFcuIFNIQVJPTiBSRC4KLQkJCQlDSU5DSU5OQVRJIE9IIDQ1MjQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FRiAgIChoZXgpCQlEQlRFTCBJTkNPUlBPUkFURUQKLTAwMTBFRiAgICAgKGJhc2UgMTYpCQlEQlRFTCBJTkNPUlBPUkFURUQKLQkJCQlOTy4yOSBUWlUtQ0hJQU5HIFNULiwKLQkJCQlUVS1DSEVORyBUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtRjEgICAoaGV4KQkJSS1PIENPUlBPUkFUSU9OCi0wMDEwRjEgICAgIChiYXNlIDE2KQkJSS1PIENPUlBPUkFUSU9OCi0JCQkJMjI1NiBTT1VUSCAzNjAwIFdFU1QKLQkJCQlTQUxUIExBS0UgQ0lUWSBVVCA4NDExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRjIgICAoaGV4KQkJQU5URUMKLTAwMTBGMiAgICAgKGJhc2UgMTYpCQlBTlRFQwotCQkJCTQ5MjAgQVZBTE9OIFJJREdFIFBLV1kKLQkJCQlTVUlURSAjNjAwCi0JCQkJTk9SQ1JPU1MgR0EgMzAwNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUYzICAgKGhleCkJCU5leGNvbSBJbnRlcm5hdGlvbmFsIENvLiwgTHRkLgotMDAxMEYzICAgICAoYmFzZSAxNikJCU5leGNvbSBJbnRlcm5hdGlvbmFsIENvLiwgTHRkLgotCQkJCTE4RiwgTm8uIDcxNiwgQ2h1bmctQ2hlbmcgUm9hZCwKLQkJCQlDaHVuZyBIbywKLQkJCQlUYWlwZWkgSHNpZW4gMjM1LCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC1GNCAgIChoZXgpCQlWZXJ0aWNhbCBDb21tdW5pY2F0aW9ucwotMDAxMEY0ICAgICAoYmFzZSAxNikJCVZlcnRpY2FsIENvbW11bmljYXRpb25zCi0JCQkJMzk3OSBGcmVlZG9tIENpcmNsZSAjNDAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQtMTI0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRjUgICAoaGV4KQkJQU1IRVJTVCBTWVNURU1TLCBJTkMuCi0wMDEwRjUgICAgIChiYXNlIDE2KQkJQU1IRVJTVCBTWVNURU1TLCBJTkMuCi0JCQkJMzAgV0lMU09OIFJPQUQKLQkJCQlCVUZGQUxPIE5ZIDE0MjIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1GNiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwRjYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1GNyAgIChoZXgpCQlJUklJQ0hJIFRFQ0hOT0xPR0lFUyBJbmMuCi0wMDEwRjcgICAgIChiYXNlIDE2KQkJSVJJSUNISSBURUNITk9MT0dJRVMgSW5jLgotCQkJCTEtMjYtNyBDSFVPLCBOQUtBTkEtS1UKLQkJCQkgVE9LWU8gMTY0ICAKLQkJCQlKQVBBTgotCi0wMC0xMC1GOCAgIChoZXgpCQlOaWlra2UgVGVjaG5vIFN5c3RlbSBDby4gTHRkCi0wMDEwRjggICAgIChiYXNlIDE2KQkJTmlpa2tlIFRlY2hubyBTeXN0ZW0gQ28uIEx0ZAotCQkJCTE4NTAtMSBUc3VydW1hLCBNYWNoaWRhLXNoaQotCQkJCVRva3lvICAxOTQtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTEwLUY5ICAgKGhleCkJCVVOSVFVRSBTWVNURU1TLCBJTkMuCi0wMDEwRjkgICAgIChiYXNlIDE2KQkJVU5JUVVFIFNZU1RFTVMsIElOQy4KLQkJCQkxODEgRE9OIFBBUksgUkQKLQkJCQlNQVJLSEFNLCBPTlRBUklPIEwzUiAxQzIgIAotCQkJCUNBTkFEQQotCi0wMC0xMC1GQSAgIChoZXgpCQlBcHBsZSBJbmMKLTAwMTBGQSAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlNUyAzNS1HUE8KLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUZCICAgKGhleCkJCVpJREEgVEVDSE5PTE9HSUVTIExJTUlURUQKLTAwMTBGQiAgICAgKGJhc2UgMTYpCQlaSURBIFRFQ0hOT0xPR0lFUyBMSU1JVEVECi0JCQkJOC9GIEJMT0NLIEEgIEdPT0RWSUVXIElORFVTVFJJQUwgQlVJTERJTgotCQkJCUtJTiBGQVQgU1RSIFRNVEwgMjEzCi0JCQkJVFVFTiBNVU4gTlQgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xMC1GQyAgIChoZXgpCQlCUk9BREJBTkQgTkVUV09SS1MsIElOQy4KLTAwMTBGQyAgICAgKGJhc2UgMTYpCQlCUk9BREJBTkQgTkVUV09SS1MsIElOQy4KLQkJCQkzNyBTVEVWRU5TT04gUk9BRAotCQkJCVdJTk5JUEVHLCBNQU5JVE9CQSBSM0ggMEg5ICAKLQkJCQlDQU5BREEKLQotMDAtMTAtRkQgICAoaGV4KQkJQ09DT00gQS9TCi0wMDEwRkQgICAgIChiYXNlIDE2KQkJQ09DT00gQS9TCi0JCQkJVEVMRVRPTlZFSiA4Ci0JCQkJREsgMjg2MCBTT0JPUkcgIAotCQkJCURFTk1BUksKLQotMDAtMTAtRkUgICAoaGV4KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLTAwMTBGRSAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotCQkJCTMwMSBST0NLUklNTU9OIEJMVkQsIFNPVVRICi0JCQkJTS9TIENYTzEtMi9OMjYKLQkJCQlDT0xPUkFETyBTUFJJTkdTIENPIDgwOTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1GRiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwRkYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0wMCAgIChoZXgpCQlTY2huZWlkZXIgRWxlY3RyaWMKLTAwMTEwMCAgICAgKGJhc2UgMTYpCQlTY2huZWlkZXIgRWxlY3RyaWMKLQkJCQk1NDYwIFBvdHRzdmlsbGUgUGlrZQotCQkJCUxlZXNwb3J0IFBBIDE5NTMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0wMSAgIChoZXgpCQlDRVQgVGVjaG5vbG9naWVzIFB0ZSBMdGQKLTAwMTEwMSAgICAgKGJhc2UgMTYpCQlDRVQgVGVjaG5vbG9naWVzIFB0ZSBMdGQKLQkJCQkxMDAgSnVyb25nIEVhc3QgU3RyZWV0IDIxCi0JCQkJU2luZ2Fwb3JlIFRlY2hub2xvZ2llcyBCdWlsZGluZwotCQkJCTYwOTYwMgotCQkJCVNJTkdBUE9SRQotCi0wMC0xMS0wMiAgIChoZXgpCQlBdXJvcmEgTXVsdGltZWRpYSBDb3JwLgotMDAxMTAyICAgICAoYmFzZSAxNikJCUF1cm9yYSBNdWx0aW1lZGlhIENvcnAuCi0JCQkJMjA1IENvbW1lcmNpYWwgQ291cnQKLQkJCQlNb3JnYW52aWxsZSBOZXcgSmVyc2V5IDA3NzUxLTEwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTAzICAgKGhleCkJCWthd2FtdXJhIGVsZWN0cmljIGluYy4KLTAwMTEwMyAgICAgKGJhc2UgMTYpCQlrYXdhbXVyYSBlbGVjdHJpYyBpbmMuCi0JCQkJMy04NiBha2F0c3VraS1jaG8KLQkJCQlzZXRvIGFpY2hpIDQ4OS0wMDcxCi0JCQkJSkFQQU4KLQotMDAtMTEtMDQgICAoaGV4KQkJVEVMRVhZCi0wMDExMDQgICAgIChiYXNlIDE2KQkJVEVMRVhZCi0JCQkJMTExNiwgSFlVTkRBSSA0MSBUT1dFUiwgOTE3LTkKLQkJCQlNT0stRE9ORywgWUFOR0NIVU4tS1UsCi0JCQkJU0VPVUwgIDE1OC03MjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtMDUgICAoaGV4KQkJU3VucGx1cyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMTA1ICAgICAoYmFzZSAxNikJCVN1bnBsdXMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxOSwgSW5ub3ZhdGlvbiBGaXJzdCBSb2FkLCBIc2luY2h1IFNjaWVuY2UgUGFyawotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtMDYgICAoaGV4KQkJU2llbWVucyBOViAoQmVsZ2l1bSkKLTAwMTEwNiAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIE5WIChCZWxnaXVtKQotCQkJCUF0ZWFsYWFuIDM0Ci0JCQkJSGVyZW50YWxzIEFudHdlcnAgMjIwMAotCQkJCUJFTEdJVU0KLQotMDAtMTEtMDcgICAoaGV4KQkJUkdCIE5ldHdvcmtzIEluYy4KLTAwMTEwNyAgICAgKGJhc2UgMTYpCQlSR0IgTmV0d29ya3MgSW5jLgotCQkJCTI5MjkgQ2FtcHVzIERyaXZlCi0JCQkJU3VpdGUgMTY1Ci0JCQkJU2FuIE1hdGVvIENBIDk0NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0wOCAgIChoZXgpCQlPcmJpdGFsIERhdGEgQ29ycG9yYXRpb24KLTAwMTEwOCAgICAgKGJhc2UgMTYpCQlPcmJpdGFsIERhdGEgQ29ycG9yYXRpb24KLQkJCQkxOTAwIFMuIE5vcmZvbGsgU3QuIFN0ZSAzMjAKLQkJCQlTYW4gTWF0ZW8gQ0EgOTQ0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTA5ICAgKGhleCkJCU1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbAotMDAxMTA5ICAgICAoYmFzZSAxNikJCU1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbAotCQkJCU5vIDY5LCBMaS1EZSBTdHJlZXQsIEp1bmctSGUgQ2l0eSwKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtMEEgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDExMEEgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTBCICAgKGhleCkJCUZyYW5rbGluIFRlY2hub2xvZ3kgU3lzdGVtcwotMDAxMTBCICAgICAoYmFzZSAxNikJCUZyYW5rbGluIFRlY2hub2xvZ3kgU3lzdGVtcwotCQkJCTIwNDA2IEVhcmwgU3QKLQkJCQlUb3JyYW5jZSBDQSA5MDUwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMEMgICAoaGV4KQkJQXRtYXJrIFRlY2hubywgSW5jLgotMDAxMTBDICAgICAoYmFzZSAxNikJCUF0bWFyayBUZWNobm8sIEluYy4KLQkJCQkyRiBTRCBCTERHLCAyLTItMy0xNCBBdHN1YmV0c3UtbmlzaGksIEF0c3ViZXRzdS1rdQotCQkJCVNhcHBvcm8gSG9ra2FpZG8gMDA0LTAwNjIKLQkJCQlKQVBBTgotCi0wMC0xMS0wRCAgIChoZXgpCQlTQU5CbGF6ZSBUZWNobm9sb2d5LCBJbmMuCi0wMDExMEQgICAgIChiYXNlIDE2KQkJU0FOQmxhemUgVGVjaG5vbG9neSwgSW5jLgotCQkJCTIgQ2xvY2sgVG93ZXIgUGxhY2UKLQkJCQlNYXluYXJkIE1BIDAxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0wRSAgIChoZXgpCQlUc3VydXNha2kgU2VhbGFuZCBUcmFuc3BvcnRhdGlvbiBDby4gTHRkLgotMDAxMTBFICAgICAoYmFzZSAxNikJCVRzdXJ1c2FraSBTZWFsYW5kIFRyYW5zcG9ydGF0aW9uIENvLiBMdGQuCi0JCQkJMTAwMCBNaXNhCi0JCQkJT2l0YSAgODcwMDE5NgotCQkJCUpBUEFOCi0KLTAwLTExLTBGICAgKGhleCkJCW5ldHBsYXQsSW5jLgotMDAxMTBGICAgICAoYmFzZSAxNikJCW5ldHBsYXQsSW5jLgotCQkJCTJGIE9seW1waWEgQ2VudGVyLCA4MjgtMTAsIFllb2tzYW0tZG9uZywgR2FuZ25hbS1ndQotCQkJCVNFT1VMICAxMzUtOTM1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTEwICAgKGhleCkJCU1heGFubmEgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTExMCAgICAgKGJhc2UgMTYpCQlNYXhhbm5hIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJUm9vbTIwMSwgTm8uNDItMywgTHV5dWFuIFJvYWQKLQkJCQlHdWFuZ3pob3UgIDUxMDA5NQotCQkJCUNISU5BCi0KLTAwLTExLTExICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi0wMDExMTEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQkyMTExIE5FIDI1dGggQXZlbnVlCi0JCQkJSGlsbHNib3JvIE9SIDk3MTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0xMiAgIChoZXgpCQlIb25leXdlbGwgQ01TUwotMDAxMTEyICAgICAoYmFzZSAxNikJCUhvbmV5d2VsbCBDTVNTCi0JCQkJODMyMyBMaW5kYmVyZ2ggQ3QKLQkJCQlTYXJhc290YSBGTCAzNDI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMTMgICAoaGV4KQkJRnJhdW5ob2ZlciBGT0tVUwotMDAxMTEzICAgICAoYmFzZSAxNikJCUZyYXVuaG9mZXIgRk9LVVMKLQkJCQlLYWlzZXJpbi1BdWd1c3RhLUFsbGVlIDMxCi0JCQkJQmVybGluICAxMDU4OQotCQkJCUdFUk1BTlkKLQotMDAtMTEtMTQgICAoaGV4KQkJRXZlckZvY3VzIEVsZWN0cm9uaWNzIENvcnAuCi0wMDExMTQgICAgIChiYXNlIDE2KQkJRXZlckZvY3VzIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJMTJGLCBOby4gNzksIFNlYy4gMSwgU2hpbi1UYWkgV3UgUmQuCi0JCQkJSHNpLUNoaSBUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS0xNSAgIChoZXgpCQlFUElOIFRlY2hub2xvZ2llcywgSW5jLgotMDAxMTE1ICAgICAoYmFzZSAxNikJCUVQSU4gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJQWNvcm4gQ2FtcHVzCi0JCQkJNnRoIFJlc3VsdCBXYXksIFN1aXRlIDI0OAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMTYgICAoaGV4KQkJQ09URUFVIFZFUlQgQ08uLCBMVEQuCi0wMDExMTYgICAgIChiYXNlIDE2KQkJQ09URUFVIFZFUlQgQ08uLCBMVEQuCi0JCQkJMy0zLTE5IEtBQ0hJRE9LSQotCQkJCUNIVU8tS1UgVE9LWU8gMTA0LTAwNTQKLQkJCQlKQVBBTgotCi0wMC0xMS0xNyAgIChoZXgpCQlDRVNORVQKLTAwMTExNyAgICAgKGJhc2UgMTYpCQlDRVNORVQKLQkJCQlaaWtvdmEgNAotCQkJCVByYWhhIDYgIDE2MCAwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTExLTE4ICAgKGhleCkJCUJMWCBJQyBEZXNpZ24gQ29ycC4sIEx0ZC4KLTAwMTExOCAgICAgKGJhc2UgMTYpCQlCTFggSUMgRGVzaWduIENvcnAuLCBMdGQuCi0JCQkJUm0gMTAwNiwgUXVhbnR1bSBQbGF6YQotCQkJCU5vLjI3LCBaaGljaHVuIFJkLCBIYWlkYW4KLQkJCQlCZWlqaW5nICAxMDAwODMKLQkJCQlDSElOQQotCi0wMC0xMS0xOSAgIChoZXgpCQlTb2x0ZXJhcywgSW5jLgotMDAxMTE5ICAgICAoYmFzZSAxNikJCVNvbHRlcmFzLCBJbmMuCi0JCQkJOTAwIFcuIFNhbnRhIEFuaXRhIFN0cmVldAotCQkJCVNhbiBHYWJyaWVsIENBIDkxNzc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0xQSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxMTFBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMUIgICAoaGV4KQkJVGFyZ2EgU3lzdGVtcyBEaXYgTC0zIENvbW11bmljYXRpb25zIENhbmFkYQotMDAxMTFCICAgICAoYmFzZSAxNikJCVRhcmdhIFN5c3RlbXMgRGl2IEwtMyBDb21tdW5pY2F0aW9ucyBDYW5hZGEKLQkJCQkyMDgxIE1lcml2YWxlIFJkCi0JCQkJU3VpdGUgMjAwCi0JCQkJT3R0YXdhIE9udCBLMkcgMUc5Ci0JCQkJQ0FOQURBCi0KLTAwLTExLTFDICAgKGhleCkJCVBsZW9yYSBUZWNobm9sb2dpZXMgSW5jLgotMDAxMTFDICAgICAoYmFzZSAxNikJCVBsZW9yYSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTM1OSBUZXJyeSBGb3ggRHJpdmUsIFN1aXRlIDIzMAotCQkJCUthbmF0YSBPTiBLMksgMkU3Ci0JCQkJQ0FOQURBCi0KLTAwLTExLTFEICAgKGhleCkJCUhlY3RyaXggTGltaXRlZAotMDAxMTFEICAgICAoYmFzZSAxNikJCUhlY3RyaXggTGltaXRlZAotCQkJCVVuaXQgOTA2LTkxMSwgOS9GLCBTdGFuaG9wZSBIb3N1ZSwKLQkJCQk3MzQtNzM4IEtpbmcncyBSb2FkLAotCQkJCU5vcnRoIFBvaW50IEhvbmcgS29uZyAKLQkJCQlDSElOQQotCi0wMC0xMS0xRSAgIChoZXgpCQlFUFNHIChFdGhlcm5ldCBQb3dlcmxpbmsgU3RhbmRhcmRpemF0aW9uIEdyb3VwKQotMDAxMTFFICAgICAoYmFzZSAxNikJCUVQU0cgKEV0aGVybmV0IFBvd2VybGluayBTdGFuZGFyZGl6YXRpb24gR3JvdXApCi0JCQkJYy9vIFVuaXZlcnNpdHkgb2YgQXBwbGllZCBTY2llbmNlcwotCQkJCVBPIEJveCA4MDUKLQkJCQlXaW50ZXJ0aHVyIFpIIENILTg0MDEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xMS0xRiAgIChoZXgpCQlEb3JlbWkgTGFicywgSW5jLgotMDAxMTFGICAgICAoYmFzZSAxNikJCURvcmVtaSBMYWJzLCBJbmMuCi0JCQkJMzA2IEUuIEFsYW1lZGEgQXZlLgotCQkJCUJ1cmJhbmsgQ0EgOTE1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTIwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTEyMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTIxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTEyMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTIyICAgKGhleCkJCUNJTVNZUyBJbmMKLTAwMTEyMiAgICAgKGJhc2UgMTYpCQlDSU1TWVMgSW5jCi0JCQkJIzMwMSxTaW5zdW5nLWNsZWFuIEJMREcsMTQwLCBOb25nc2VvLVJpLEtpaGV1bmctRXVwCi0JCQkJWW9uZ2luLUNpdHkgS3l1bmdnaS1EbyA0NDktNzExCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTIzICAgKGhleCkJCUFwcG9pbnRlY2gsIEluYy4KLTAwMTEyMyAgICAgKGJhc2UgMTYpCQlBcHBvaW50ZWNoLCBJbmMuCi0JCQkJNkYtMiBOby4xOTIgVHVuZy1LdWFuIFJkLgotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtMjQgICAoaGV4KQkJQXBwbGUgQ29tcHV0ZXIKLTAwMTEyNCAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlcgotCQkJCTEgSW5pZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTI1ICAgKGhleCkJCUlCTSBDb3JwCi0wMDExMjUgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSZAotCQkJCVAuTy4gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0yNiAgIChoZXgpCQlWZW5zdGFyIEluYy4KLTAwMTEyNiAgICAgKGJhc2UgMTYpCQlWZW5zdGFyIEluYy4KLQkJCQk5MjUwIE93ZW5zbW91dGggQXZlLgotCQkJCUNoYXRzd29ydGggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTI3ICAgKGhleCkJCVRBU0ksIEluYwotMDAxMTI3ICAgICAoYmFzZSAxNikJCVRBU0ksIEluYwotCQkJCTU1NTEgRHJ5IEZvcmsgUm9hZAotCQkJCUNsZXZlcyBPSCA0NTAwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMjggICAoaGV4KQkJU3RyZWFtaXQKLTAwMTEyOCAgICAgKGJhc2UgMTYpCQlTdHJlYW1pdAotCQkJCUZsaWdodCBGb3J1bSAzNTQzCi0JCQkJRWluZGhvdmVuIDU2NTcgRFcKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMS0yOSAgIChoZXgpCQlQYXJhZGlzZSBEYXRhY29tIEx0ZC4KLTAwMTEyOSAgICAgKGJhc2UgMTYpCQlQYXJhZGlzZSBEYXRhY29tIEx0ZC4KLQkJCQkxIFdoZWF0b24gUm9hZAotCQkJCVdpdGhhbSBFc3NleCBVSyBDTTggMVVKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtMkEgICAoaGV4KQkJTmlrbyBOVgotMDAxMTJBICAgICAoYmFzZSAxNikJCU5pa28gTlYKLQkJCQlJbmR1c3RyaWVwYXJrIFdlc3QgNDAKLQkJCQlTaW50LU5pa2xhYXMgTy9WIDkxMDAKLQkJCQlCRUxHSVVNCi0KLTAwLTExLTJCICAgKGhleCkJCU5ldE1vZHVsZSBBRwotMDAxMTJCICAgICAoYmFzZSAxNikJCU5ldE1vZHVsZSBBRwotCQkJCU1lcmllZHdlZyAxMQotCQkJCU5pZWRlcndhbmdlbiBDSCAzMTcyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTEtMkMgICAoaGV4KQkJSVpUIEdtYkgKLTAwMTEyQyAgICAgKGJhc2UgMTYpCQlJWlQgR21iSAotCQkJCUFtIFdlaWNoc2VsZ2FydGVuIDUKLQkJCQlFcmxhbmdlbiBCYXZhcmlhIDkxMDU4Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS0yRCAgIChoZXgpCQlpUHVsc2UgU3lzdGVtcwotMDAxMTJEICAgICAoYmFzZSAxNikJCWlQdWxzZSBTeXN0ZW1zCi0JCQkJMXN0IEZsb29yIE5vdmVsbCBIb3VzZSwgTW9ybmluZ3NpZGUgV2VkZ2UgT2ZmaWNlIFBhcmsKLQkJCQkyNTUgUml2b25pYSBSb2FkCi0JCQkJTW9ybmluZ3NpZGUgSm9oYW5uZXNidXJnIDIxMjgKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMTEtMkUgICAoaGV4KQkJQ0VJQ09NCi0wMDExMkUgICAgIChiYXNlIDE2KQkJQ0VJQ09NCi0JCQkJMTcgcnVlIEdhc3RvbiBFdnJhcmQKLQkJCQlUb3Vsb3VzZSBDZWRleCAxIEhhdXRlLUdhcm9ubmUgMzEwOTQKLQkJCQlGUkFOQ0UKLQotMDAtMTEtMkYgICAoaGV4KQkJQVNVU1RlayBDb21wdXRlciBJbmMuCi0wMDExMkYgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDb21wdXRlciBJbmMuCi0JCQkJTm8uMTUwLCBMaS1UZSBSZC4sIFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS0zMCAgIChoZXgpCQlBbGxpZWQgVGVsZXNpcyAoSG9uZyBLb25nKSBMdGQuCi0wMDExMzAgICAgIChiYXNlIDE2KQkJQWxsaWVkIFRlbGVzaXMgKEhvbmcgS29uZykgTHRkLgotCQkJCVJvb20gRiwgMy9GLCBZZXVuZyBZaXUgQ2hvbmcgKG5vLiA4KSBJbmR1c3RyaWFsIGJ1aWxkaW5nLAotCQkJCTIwIFdhbmcgSG9pIFJvYWQsIEtvd2xvb24gQmF5LAotCQkJCUhPTkcgS09ORwotCi0wMC0xMS0zMSAgIChoZXgpCQlVTkFURUNILiBDTy4sTFRECi0wMDExMzEgICAgIChiYXNlIDE2KQkJVU5BVEVDSC4gQ08uLExURAotCQkJCUEtNzI3ICxHRU9QWVVORyBUT1dOLDIwMy0xCi0JCQkJTk9OSFlVTkctRE9ORwotCQkJCUtBTkdOQU0tR1UgU0VPVUwgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS0zMiAgIChoZXgpCQlTeW5vbG9neSBJbmNvcnBvcmF0ZWQKLTAwMTEzMiAgICAgKGJhc2UgMTYpCQlTeW5vbG9neSBJbmNvcnBvcmF0ZWQKLQkJCQk2Ri0yLCBOby4xMDYsIENoYW5nIEFuIFcuIFJkLiwKLQkJCQlUYWlwZWkgIDEwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtMzMgICAoaGV4KQkJU2llbWVucyBBdXN0cmlhIFNJTUVBCi0wMDExMzMgICAgIChiYXNlIDE2KQkJU2llbWVucyBBdXN0cmlhIFNJTUVBCi0JCQkJU2llbWVuc3N0cmFzc2UgOTAtOTIKLQkJCQlWaWVubmEgIDEyMTAKLQkJCQlBVVNUUklBCi0KLTAwLTExLTM0ICAgKGhleCkJCU1lZGlhQ2VsbCwgSW5jLgotMDAxMTM0ICAgICAoYmFzZSAxNikJCU1lZGlhQ2VsbCwgSW5jLgotCQkJCTYwMCAxN3RoIFN0Ci0JCQkJU3VpdGUgMjgwMCBTb3V0aAotCQkJCURlbnZlciBDTyA4MDIwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMzUgICAoaGV4KQkJR3JhbmRleWUgTHRkCi0wMDExMzUgICAgIChiYXNlIDE2KQkJR3JhbmRleWUgTHRkCi0JCQkJNiBIdXhsZXkgUm9hZAotCQkJCVN1cnJleSBSZXNlYXJjaCBQYXJrCi0JCQkJR3VpbGRmb3JkIFN1cnJleSBHVTIgN1JFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtMzYgICAoaGV4KQkJR29vZHJpY2ggU2Vuc29yIFN5c3RlbXMKLTAwMTEzNiAgICAgKGJhc2UgMTYpCQlHb29kcmljaCBTZW5zb3IgU3lzdGVtcwotCQkJCTE0MzAwIEp1ZGljaWFsIFJvYWQKLQkJCQlCdXJuc3ZpbGxlIE1pbm5lc290YSA1NTMwNi00ODk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0zNyAgIChoZXgpCQlBSUNISSBFTEVDVFJJQyBDTy4sIExURC4KLTAwMTEzNyAgICAgKGJhc2UgMTYpCQlBSUNISSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQkxCi0JCQkJYWljaGktY2hvCi0JCQkJa2FzdWdhaSBjaXR5IGFpY2hpIHByZWYuIDQ4Ni04NjY2Ci0JCQkJSkFQQU4KLQotMDAtMTEtMzggICAoaGV4KQkJVEFJU0hJTiBDTy4sIExURC4KLTAwMTEzOCAgICAgKGJhc2UgMTYpCQlUQUlTSElOIENPLiwgTFRELgotCQkJCTIwMC03IE5ha2FubwotCQkJCU5ha2FubyBOYWdhbm8gMzgzLTAwMTMKLQkJCQlKQVBBTgotCi0wMC0xMS0zOSAgIChoZXgpCQlTVE9FQkVSIEFOVFJJRUJTVEVDSE5JSyBHbWJIICsgQ28uIEtHLgotMDAxMTM5ICAgICAoYmFzZSAxNikJCVNUT0VCRVIgQU5UUklFQlNURUNITklLIEdtYkggKyBDby4gS0cuCi0JCQkJS2llc2VsYnJvbm5lciBTdHIuIDEyCi0JCQkJUGZvcnpoZWltICA3NTE3NwotCQkJCUdFUk1BTlkKLQotMDAtMTEtM0EgICAoaGV4KQkJU0hJTkJPUkFNCi0wMDExM0EgICAgIChiYXNlIDE2KQkJU0hJTkJPUkFNCi0JCQkJNEYgREFITldPUkxEIEJVSUxESU5HLCAxNTQtMTEgU0FNU1VORy1ET05HCi0JCQkJS0FOR05BTS1HVSwKLQkJCQlTRU9VTCAgMTM1LTg3OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS0zQiAgIChoZXgpCQlNaWNyb25ldCBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDExM0IgICAgIChiYXNlIDE2KQkJTWljcm9uZXQgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTEyRi0xLCBOby4gMTAwLCBNaW4tQ2h1YW4gUm9hZAotCQkJCUhzaW4tVGllbiBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS0zQyAgIChoZXgpCQlNaWNyb25hcyBHbWJICi0wMDExM0MgICAgIChiYXNlIDE2KQkJTWljcm9uYXMgR21iSAotCQkJCUhhbnMtQnVudGUtU3RyYXNzZSAxOQotCQkJCUZyZWlidXJnIEJXIEQtNzkxMDgKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLTNEICAgKGhleCkJCUtOIFNPTFRFQyBDTy4sTFRELgotMDAxMTNEICAgICAoYmFzZSAxNikJCUtOIFNPTFRFQyBDTy4sTFRELgotCQkJCTk4Qi01TCBOQU1ET05HIElORFVTVFJJQUwgQ09NUExFWCAjNjYyLTQgR09KQU4tRE9ORwotCQkJCU5BTURPTkctR1UgSU5DSEVPTiA0MDUtODE4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTNFICAgKGhleCkJCUpMIENvcnBvcmF0aW9uCi0wMDExM0UgICAgIChiYXNlIDE2KQkJSkwgQ29ycG9yYXRpb24KLQkJCQk0LTQtMTcgU1VHRQotCQkJCVRBTUEtS1UKLQkJCQlLQVdBU0FLSS1DSVRZIEtBTkFHQVdBLUtFTiAyMTQtMDAwMQotCQkJCUpBUEFOCi0KLTAwLTExLTNGICAgKGhleCkJCUFsY2F0ZWwgREkKLTAwMTEzRiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIERJCi0JCQkJWkkgbGF2b2lzaWVyCi0JCQkJRVUgTm9ybWFuZGllIDc2MjYwCi0JCQkJRlJBTkNFCi0KLTAwLTExLTQwICAgKGhleCkJCU5hbm9tZXRyaWNzIEluYy4KLTAwMTE0MCAgICAgKGJhc2UgMTYpCQlOYW5vbWV0cmljcyBJbmMuCi0JCQkJMjUwIEhlcnpiZXJnIFJkLgotCQkJCUthbmF0YSBPbnRhcmlvIEsySyAyQTEKLQkJCQlDQU5BREEKLQotMDAtMTEtNDEgICAoaGV4KQkJR29vZE1hbiBDb3Jwb3JhdGlvbgotMDAxMTQxICAgICAoYmFzZSAxNikJCUdvb2RNYW4gQ29ycG9yYXRpb24KLQkJCQkyRiwgTm8uNTcyLCBTZWMuMSwgTWluZy1TaGVuZyBOIFJvYWQsIEt3ZWktU2hhbiBIc2lhbmcKLQkJCQlUYW95dWFuIEhzaWVuICAzMzMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtNDIgICAoaGV4KQkJZS1TTUFSVENPTSAgSU5DLgotMDAxMTQyICAgICAoYmFzZSAxNikJCWUtU01BUlRDT00gIElOQy4KLQkJCQkzRiwgMjE2LCBJbW9rLURvbmcKLQkJCQlKYW5nQW4tS3UKLQkJCQlTdXdvbiBLeW91bmdraS1EbyA0NDAtMzEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTQzICAgKGhleCkJCURFTEwgSU5DLgotMDAxMTQzICAgICAoYmFzZSAxNikJCURFTEwgSU5DLgotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJSNSBNUy04NTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNDQgICAoaGV4KQkJQXNzdXJhbmNlIFRlY2hub2xvZ3kgQ29ycAotMDAxMTQ0ICAgICAoYmFzZSAxNikJCUFzc3VyYW5jZSBUZWNobm9sb2d5IENvcnAKLQkJCQk2MzA0IFBvdG9tYWMgQXZlbnVlCi0JCQkJQWxleGFuZHJpYSBWaXJnaW5pYSAyMjMwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNDUgICAoaGV4KQkJVmFsdWVQb2ludCBOZXR3b3JrcwotMDAxMTQ1ICAgICAoYmFzZSAxNikJCVZhbHVlUG9pbnQgTmV0d29ya3MKLQkJCQkzNTAgVG93bnNlbmQgU3QgU3RlIDMyMAotCQkJCVNhbiBGcmFuY2lzY28sIENBIDk0MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS00NiAgIChoZXgpCQlUZWxlY2FyZC1Qcmlib3IgTHRkCi0wMDExNDYgICAgIChiYXNlIDE2KQkJVGVsZWNhcmQtUHJpYm9yIEx0ZAotCQkJCUx1c3Rkb3Jmc2theWEgZG9yb2dhLCAxNjIKLQkJCQlPZGVzc2EgIDY1MTE1Ci0JCQkJVUtSQUlORQotCi0wMC0xMS00NyAgIChoZXgpCQlTZWNvbS1JbmR1c3RyeSBjby5MVEQuCi0wMDExNDcgICAgIChiYXNlIDE2KQkJU2Vjb20tSW5kdXN0cnkgY28uTFRELgotCQkJCUZ1a3VvIGthS3VyYW1vdG8gSWNoaWhvbmtpIDMtMwotCQkJCVNoaXJvaXNoaSBNaXlhZ2kgOTg5LTAyOTUKLQkJCQlKQVBBTgotCi0wMC0xMS00OCAgIChoZXgpCQlQcm9sb24gQ29udHJvbCBTeXN0ZW1zCi0wMDExNDggICAgIChiYXNlIDE2KQkJUHJvbG9uIENvbnRyb2wgU3lzdGVtcwotCQkJCUhlcnN0ZWR2ZXN0ZXJzdHJhZWRlIDU2Ci0JCQkJQWxiZXJ0c2x1bmQgIERLLTI2MjAKLQkJCQlERU5NQVJLCi0KLTAwLTExLTQ5ICAgKGhleCkJCVByb2xpcGhpeCBJbmMuCi0wMDExNDkgICAgIChiYXNlIDE2KQkJUHJvbGlwaGl4IEluYy4KLQkJCQk2NiBUYWRtdWNrIFJkLgotCQkJCVdlc3Rmb3JkIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS00QSAgIChoZXgpCQlLQVlBQkEgSU5EVVNUUlkgQ28sLkx0ZC4KLTAwMTE0QSAgICAgKGJhc2UgMTYpCQlLQVlBQkEgSU5EVVNUUlkgQ28sLkx0ZC4KLQkJCQlXb3JsZCBUcmFkZSBDZW50ZXIgQmxkZy4sIDQtMQotCQkJCUhhbWFtYXRzdS1jaG8gMi1jaG9tZSwKLQkJCQlNaW5hdG8ta3UsIFRva3lvIE1ldG8uIDEwNS02MTExCi0JCQkJSkFQQU4KLQotMDAtMTEtNEIgICAoaGV4KQkJRnJhbmNvdHlwLVBvc3RhbGlhIEdtYkgKLTAwMTE0QiAgICAgKGJhc2UgMTYpCQlGcmFuY290eXAtUG9zdGFsaWEgR21iSAotCQkJCVRyaWZ0d2VnIDIxLTI2Ci0JCQkJQmlya2Vud2VyZGVyIEJyYW5kZW5idXJnIDE2NTQ3Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS00QyAgIChoZXgpCQljYWZmZWluYSBhcHBsaWVkIHJlc2VhcmNoIGx0ZC4KLTAwMTE0QyAgICAgKGJhc2UgMTYpCQljYWZmZWluYSBhcHBsaWVkIHJlc2VhcmNoIGx0ZC4KLQkJCQkxMjUgYmFpcmQgYXZlCi0JCQkJY29jaHJhbmUgYWxiZXJ0YSB0NGMgMWM3Ci0JCQkJQ0FOQURBCi0KLTAwLTExLTREICAgKGhleCkJCUF0c3VtaSBFbGVjdHJpYyBDby4sTFRELgotMDAxMTREICAgICAoYmFzZSAxNikJCUF0c3VtaSBFbGVjdHJpYyBDby4sTFRELgotCQkJCTQtMi0yIFNoaW4tTWl5YWtvZGEsIEtpdGEta3UKLQkJCQlIYW1hbWF0c3UgU2hpenVva2EgNDMxLTIxMDMKLQkJCQlKQVBBTgotCi0wMC0xMS00RSAgIChoZXgpCQk2OTA4ODUgT250YXJpbyBJbmMuCi0wMDExNEUgICAgIChiYXNlIDE2KQkJNjkwODg1IE9udGFyaW8gSW5jLgotCQkJCTIwNSBBbm5hZ2VtIEJsdmQuCi0JCQkJTWlzc2lzc2F1Z2EgT250YXJpbyBMNVQgMlYxCi0JCQkJQ0FOQURBCi0KLTAwLTExLTRGICAgKGhleCkJCVVTIERpZ2l0YWwgVGVsZXZpc2lvbiwgSW5jCi0wMDExNEYgICAgIChiYXNlIDE2KQkJVVMgRGlnaXRhbCBUZWxldmlzaW9uLCBJbmMKLQkJCQk1ODA3IE4uIEFuZHJld3MgV2F5Ci0JCQkJRm9ydCBMYXVkZXJkYWxlIEZMIDMzMzA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS01MCAgIChoZXgpCQlCZWxraW4gQ29ycG9yYXRpb24KLTAwMTE1MCAgICAgKGJhc2UgMTYpCQlCZWxraW4gQ29ycG9yYXRpb24KLQkJCQk1MDEgV2VzdCBXYWxudXQgU3RyZWV0Ci0JCQkJQ29tcHRvbiBDQSA5MDIyMC01MjIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS01MSAgIChoZXgpCQlNeWtvdHJvbngKLTAwMTE1MSAgICAgKGJhc2UgMTYpCQlNeWtvdHJvbngKLQkJCQkzNTkgVmFuIE5lc3MgV2F5Ci0JCQkJVG9ycmFuY2UgQ0EgOTA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTUyICAgKGhleCkJCUVpZHN2b2xsIEVsZWN0cm9uaWNzIEFTCi0wMDExNTIgICAgIChiYXNlIDE2KQkJRWlkc3ZvbGwgRWxlY3Ryb25pY3MgQVMKLQkJCQlOZWRyZSBWaWxiZXJnIHZlaSA4Ci0JCQkJRWlkc3ZvbGwgIE4tMjA4MAotCQkJCU5PUldBWQotCi0wMC0xMS01MyAgIChoZXgpCQlUcmlkZW50IFRlaywgSW5jLgotMDAxMTUzICAgICAoYmFzZSAxNikJCVRyaWRlbnQgVGVrLCBJbmMuCi0JCQkJODA0MSBDZXNzbmEgQXZlICMyMDAKLQkJCQlHYWl0aGVyc2J1cmcgTUQgMjA4NzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTU0ICAgKGhleCkJCVdlYnBybyBUZWNobm9sb2dpZXMgSW5jLgotMDAxMTU0ICAgICAoYmFzZSAxNikJCVdlYnBybyBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTJGLTEsIE5vLjgxLCBTZWMuIDQsIENodW5nY2hpbmcgTi4gUmQuLAotCQkJCVNocmxpbiBDaGl1Ci0JCQkJVGFpcGVpICAxMTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTU1ICAgKGhleCkJCVNldmlzIFN5c3RlbXMKLTAwMTE1NSAgICAgKGJhc2UgMTYpCQlTZXZpcyBTeXN0ZW1zCi0JCQkJMjgwNSBOIERhbGxhcyBQYXJrd2F5LCBTVEUgNTMwCi0JCQkJUGxhbm8gVGV4YXMgNzUwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTU2ICAgKGhleCkJCVBoYXJvcyBTeXN0ZW1zIE5aCi0wMDExNTYgICAgIChiYXNlIDE2KQkJUGhhcm9zIFN5c3RlbXMgTloKLQkJCQlMZXZlbCAzLCAxMjMgQ2FybHRvbiBHb3JlIFJvYWQKLQkJCQlHcmFmdG9uCi0JCQkJQXVja2xhbmQgTlogMTAwMQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTExLTU3ICAgKGhleCkJCU9GIE5ldHdvcmtzIENvLiwgTHRkLgotMDAxMTU3ICAgICAoYmFzZSAxNikJCU9GIE5ldHdvcmtzIENvLiwgTHRkLgotCQkJCTEtMy1DYjQgTmFrYXNlLCBNaWhhbWEta3UKLQkJCQlDaGliYSBDaXR5IENoaWJhIDI2MS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTEtNTggICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDExNTggICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTEtNTkgICAoaGV4KQkJTUFUSVNTRSBORVRXT1JLUyBJTkMKLTAwMTE1OSAgICAgKGJhc2UgMTYpCQlNQVRJU1NFIE5FVFdPUktTIElOQwotCQkJCTMzOSBOIEJFUk5BUkRPIEFWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTVBICAgKGhleCkJCUl2b2NsYXIgVml2YWRlbnQgQUcKLTAwMTE1QSAgICAgKGJhc2UgMTYpCQlJdm9jbGFyIFZpdmFkZW50IEFHCi0JCQkJQmVuZGVyZXJzdHJhc3NlIDIKLQkJCQlTY2hhYW4gIDk0OTQKLQkJCQlMSUVDSFRFTlNURUlOCi0KLTAwLTExLTVCICAgKGhleCkJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtIENvLiAoRUNTKQotMDAxMTVCICAgICAoYmFzZSAxNikJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtIENvLiAoRUNTKQotCQkJCU5vLjIyLCBBbGxleSAzOCwgTGFuZSA5MSwgU2VjLiAxLCBOZWkgSHUgUm9hZCwKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtNUMgICAoaGV4KQkJQ2lzY28KLTAwMTE1QyAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS01RCAgIChoZXgpCQlDaXNjbwotMDAxMTVEICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTVFICAgKGhleCkJCVByb01pbmVudCBEb3NpZXJ0ZWNobmlrIEdtYkgKLTAwMTE1RSAgICAgKGJhc2UgMTYpCQlQcm9NaW5lbnQgRG9zaWVydGVjaG5payBHbWJICi0JCQkJSW0gU2NodW1hY2hlcmdld2FubiA1LTExCi0JCQkJSGVpZGVsYmVyZyBCVyA2OTEyMwotCQkJCUdFUk1BTlkKLQotMDAtMTEtNUYgICAoaGV4KQkJSVRYIFNlY3VyaXR5IENvLiwgTHRkLgotMDAxMTVGICAgICAoYmFzZSAxNikJCUlUWCBTZWN1cml0eSBDby4sIEx0ZC4KLQkJCQk5RiBLb2xvbiBEaWdpdGFsIFRvd2VyIEFzdG9uIEJsZGcuIDUwNS0xNAotCQkJCUdhc2FuLWRvbmcgR2V1bWNoZW9uLWd1IFNFT1VMIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtNjAgICAoaGV4KQkJQVJURElPIENvbXBhbnkgQ28uLCBMVEQKLTAwMTE2MCAgICAgKGJhc2UgMTYpCQlBUlRESU8gQ29tcGFueSBDby4sIExURAotCQkJCTd0aCBGTC4uLCBOby40NzYsIE1pbi1IdSBSRC4sIEhzaW4tQ2h1LAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtNjEgICAoaGV4KQkJTmV0U3RyZWFtcywgTExDCi0wMDExNjEgICAgIChiYXNlIDE2KQkJTmV0U3RyZWFtcywgTExDCi0JCQkJMzYwMCBXLiBQYXJtZXIgTGFuZQotCQkJCVN1aXRlIDEwMAotCQkJCUF1c3RpbiBUWCA3ODcyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNjIgICAoaGV4KQkJU1RBUiBNSUNST05JQ1MgQ08uLExURC4KLTAwMTE2MiAgICAgKGJhc2UgMTYpCQlTVEFSIE1JQ1JPTklDUyBDTy4sTFRELgotCQkJCTUzNiBTaGltaXp1bmFuYXRzdXNoaW55YQotCQkJCVNoaXp1b2thICA0MjQtMDA2NgotCQkJCUpBUEFOCi0KLTAwLTExLTYzICAgKGhleCkJCVNZU1RFTSBTUEEgREVQVC4gRUxFQ1RST05JQ1MKLTAwMTE2MyAgICAgKGJhc2UgMTYpCQlTWVNURU0gU1BBIERFUFQuIEVMRUNUUk9OSUNTCi0JCQkJVklBIEdISUFST0xBIFZFQ0NISUEgNzMKLQkJCQlGSU9SQU5PIE1PREVORVNFIE1PREVOQSBJLTQxMDQyCi0JCQkJSVRBTFkKLQotMDAtMTEtNjQgICAoaGV4KQkJQUNBUkQgVGVjaG5vbG9neSBDb3JwLgotMDAxMTY0ICAgICAoYmFzZSAxNikJCUFDQVJEIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk2RiBOby43OCBTZWMxIEt3YW5nIEZ1IFJvYWQsIFNhbmNodW5nLAotCQkJCVRhaXBlaSBIc2llbiAgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS02NSAgIChoZXgpCQlabnl4IE5ldHdvcmtzCi0wMDExNjUgICAgIChiYXNlIDE2KQkJWm55eCBOZXR3b3JrcwotCQkJCTQ4NDIxIE1pbG1vbnQgRHJpdmUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS02NiAgIChoZXgpCQlUYWVsaW0gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDExNjYgICAgIChiYXNlIDE2KQkJVGFlbGltIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTE5Ni01LCBBTllBTkc3LURPTkcgTUFOQU4tR1UKLQkJCQlBTllBTkctU0kgS1lVR0dJLURPIDQzMC04MTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtNjcgICAoaGV4KQkJSW50ZWdyYXRlZCBTeXN0ZW0gU29sdXRpb24gQ29ycC4KLTAwMTE2NyAgICAgKGJhc2UgMTYpCQlJbnRlZ3JhdGVkIFN5c3RlbSBTb2x1dGlvbiBDb3JwLgotCQkJCTNGLCBOby4gMi0xLCBpbmR1c3RyeSBFYXN0IFJkLiwgSQotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS02OCAgIChoZXgpCQlIb21lTG9naWMgTExDCi0wMDExNjggICAgIChiYXNlIDE2KQkJSG9tZUxvZ2ljIExMQwotCQkJCTEwMCBIb29kcyBMYW5lCi0JCQkJTWFyYmxlaGVhZCBNQSAwMTk0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNjkgICAoaGV4KQkJRU1TIFNhdGNvbQotMDAxMTY5ICAgICAoYmFzZSAxNikJCUVNUyBTYXRjb20KLQkJCQlHcmVlbiBMYW5lCi0JCQkJQXNoY2h1cmNoCi0JCQkJVGV3a2VzYnVyeSBHbG91Y2VzdGVyc2hpcmUgR0wyMCA4SEQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS02QSAgIChoZXgpCQlEb21vIEx0ZAotMDAxMTZBICAgICAoYmFzZSAxNikJCURvbW8gTHRkCi0JCQkJV2Vzc2V4IEhvdXNlCi0JCQkJVXBwZXIgTWFya2V0IFN0cmVldAotCQkJCUVhc3RsZWlnaCBIYW1wc2hpcmUgU081MCA5RkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS02QiAgIChoZXgpCQlEaWdpdGFsIERhdGEgQ29tbXVuaWNhdGlvbnMgQXNpYSBDby4sTHRkCi0wMDExNkIgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBEYXRhIENvbW11bmljYXRpb25zIEFzaWEgQ28uLEx0ZAotCQkJCThGLE5vLjQxLExhbmUgMjIxLEthbmctQ2hpZW4gUkQuLE5laS1IdSBEaXMuLAotCQkJCVRhaXBlaSBDaXR5ICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTZDICAgKGhleCkJCU5hbndhbmcgTXVsdGltZWRpYSBJbmMuLEx0ZAotMDAxMTZDICAgICAoYmFzZSAxNikJCU5hbndhbmcgTXVsdGltZWRpYSBJbmMuLEx0ZAotCQkJCUZsb29yIDEyLFRpYW55dWFuIEJsZGcsV2Vuc2FuIFJkIzUwOAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMwotCQkJCUNISU5BCi0KLTAwLTExLTZEICAgKGhleCkJCUFtZXJpY2FuIFRpbWUgYW5kIFNpZ25hbAotMDAxMTZEICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIFRpbWUgYW5kIFNpZ25hbAotCQkJCTE0MCBUaGlyZCBTdC4gU291dGgKLQkJCQlEYXNzZWwgTU4gNTUzMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTZFICAgKGhleCkJCVBlUExpbmsgTHRkLgotMDAxMTZFICAgICAoYmFzZSAxNikJCVBlUExpbmsgTHRkLgotCQkJCTE3L0YuLCBQYXJrIEJ1aWxkaW5nCi0JCQkJNDc2IENhc3RsZSBQZWFrIFJvYWQKLQkJCQlDaGV1bmcgU2hhIFdhbiBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0xMS02RiAgIChoZXgpCQlOZXRmb3J5b3UgQ28uLCBMVEQuCi0wMDExNkYgICAgIChiYXNlIDE2KQkJTmV0Zm9yeW91IENvLiwgTFRELgotCQkJCTExMjEtNCAzRiwgIEt3YW55YW5nLWRvbmcsIERvbmdhbi1ndQotCQkJCUFueWFuZy1zaSBLeXVuZ2dpLWRvIDQzMS04MDQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtNzAgICAoaGV4KQkJR1NDIFNSTAotMDAxMTcwICAgICAoYmFzZSAxNikJCUdTQyBTUkwKLQkJCQlWSUEgUEVSIFZJTUVSQ0FURQotCQkJCVVTTUFURSBWRUxBVEUgTUlMQU5PIDIwMDQwCi0JCQkJSVRBTFkKLQotMDAtMTEtNzEgICAoaGV4KQkJREVYVEVSIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDExNzEgICAgIChiYXNlIDE2KQkJREVYVEVSIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMkYgU2hpbnN1bmcgQi9EIDQwNC0xCi0JCQkJQmFja2h5dW4tRG9uZywgQnVuZGFuZy1HdQotCQkJCVN1bmduYW0gR3l1bmdnaSA0NjMtNDIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTcyICAgKGhleCkJCUNPVFJPTiBDT1JQT1JBVElPTgotMDAxMTcyICAgICAoYmFzZSAxNikJCUNPVFJPTiBDT1JQT1JBVElPTgotCQkJCTEyRkwsTm8uMTUwLFNlYy40LENoZW5nLURlIFJkCi0JCQkJU2hpaGxpbiBEaXN0cmljdAotCQkJCVRhaXBlaSBDaXR5ICAxMTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTczICAgKGhleCkJCVNNQVJUIE1vZHVsYXIgVGVjaG5vbG9naWVzCi0wMDExNzMgICAgIChiYXNlIDE2KQkJU01BUlQgTW9kdWxhciBUZWNobm9sb2dpZXMKLQkJCQk0NDE1IEUgQ290dG9uIENlbnRlciBCbHZkCi0JCQkJU3VpdGUgMTAwCi0JCQkJUGhvZW5peCBBWiA4NTA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNzQgICAoaGV4KQkJV2liaHUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDExNzQgICAgIChiYXNlIDE2KQkJV2liaHUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTU2MSBCbGFja2hhd2sgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTc1ICAgKGhleCkJCVBhdGhTY2FsZSwgSW5jLgotMDAxMTc1ICAgICAoYmFzZSAxNikJCVBhdGhTY2FsZSwgSW5jLgotCQkJCTQ3NyBOLiBNYXRoaWxkYSBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS03NiAgIChoZXgpCQlJbnRlbGxhbWJkYSBTeXN0ZW1zLCBJbmMuCi0wMDExNzYgICAgIChiYXNlIDE2KQkJSW50ZWxsYW1iZGEgU3lzdGVtcywgSW5jLgotCQkJCTQ4NTAxIFdhcm0gU3ByaW5ncyBCbHZkLCAjMTA3Ci0JCQkJRnJlbW9udCBDYWxpZm9ybmlhIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS03NyAgIChoZXgpCQlDb2F4aWFsIE5ldHdvcmtzLCBJbmMuCi0wMDExNzcgICAgIChiYXNlIDE2KQkJQ29heGlhbCBOZXR3b3JrcywgSW5jLgotCQkJCTQ2MzMgT2xkIElyb25zaWRlcyBEcgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS03OCAgIChoZXgpCQlDaGlyb24gVGVjaG5vbG9neSBMdGQKLTAwMTE3OCAgICAgKGJhc2UgMTYpCQlDaGlyb24gVGVjaG5vbG9neSBMdGQKLQkJCQlXeXZvbHMgQ291cnQKLQkJCQlTd2FsbG93ZmllbGQKLQkJCQlSZWFkaW5nIEJlcmtzaGlyZSBSRzcgMVdZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtNzkgICAoaGV4KQkJU2luZ3VsYXIgVGVjaG5vbG9neSBDby4gTHRkLgotMDAxMTc5ICAgICAoYmFzZSAxNikJCVNpbmd1bGFyIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLQkJCQkyMUYsIE5vLjM3LCBTZWMuMiwgU2FuIE1pbiBSZC4sCi0JCQkJUGFuIENoaWFvIENpdHksIFRhaXBlaSBDb3VudHkKLQkJCQlUYWlwZWkgIDIyMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtN0EgICAoaGV4KQkJU2luZ2ltIEludGVybmF0aW9uYWwgQ29ycC4KLTAwMTE3QSAgICAgKGJhc2UgMTYpCQlTaW5naW0gSW50ZXJuYXRpb25hbCBDb3JwLgotCQkJCTZGLTIsIE5vLiAxOTAsIFNlYy4gMiBDaHVuZyBIc2luIFJvYWQsCi0JCQkJSHNpbiBUaWVuIENpdHkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtN0IgICAoaGV4KQkJQnVjaGkgTGFib3J0ZWNobmlrIEFHCi0wMDExN0IgICAgIChiYXNlIDE2KQkJQnVjaGkgTGFib3J0ZWNobmlrIEFHCi0JCQkJTWVpZXJzZWdnc3RyYXNzZSA0MAotCQkJCUZsYXdpbCA5MjMwIFNHCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTEtN0MgICAoaGV4KQkJZS16eS5uZXQKLTAwMTE3QyAgICAgKGJhc2UgMTYpCQllLXp5Lm5ldAotCQkJCVNtaXJuaXMgMTQKLQkJCQlWZXJpYSBJbWF0aGlhIDU5MTAwCi0JCQkJR1JFRUNFCi0KLTAwLTExLTdEICAgKGhleCkJCVpNRCBBbWVyaWNhLCBJbmMuCi0wMDExN0QgICAgIChiYXNlIDE2KQkJWk1EIEFtZXJpY2EsIEluYy4KLQkJCQkxNTM3MyBJbm5vdmF0aW9uIERyaXZlCi0JCQkJU3VpdGUgMTE1Ci0JCQkJU2FuIERpZW8gQ0EgOTIxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTdFICAgKGhleCkJCVByb2dlbnkgSW5jLgotMDAxMTdFICAgICAoYmFzZSAxNikJCVByb2dlbnkgSW5jLgotCQkJCTE0MDcgQmFyY2xheSBCb3VsZXZhcmQKLQkJCQlCdWZmYWxvIEdyb3ZlIElMIDYwMDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS03RiAgIChoZXgpCQlOZW90dW5lIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24sLkxURAotMDAxMTdGICAgICAoYmFzZSAxNikJCU5lb3R1bmUgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiwuTFRECi0JCQkJMTcwMyMgIE5vLjczNyAgTm9ydGggb2YgQ2FveGkgUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDAzMAotCQkJCUNISU5BCi0KLTAwLTExLTgwICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDExODAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS04MSAgIChoZXgpCQlJbnRlckVuZXJneSBDby5MdGQsCi0wMDExODEgICAgIChiYXNlIDE2KQkJSW50ZXJFbmVyZ3kgQ28uTHRkLAotCQkJCTRGIFNoaW55b2tvaGFtYSBCb3NlaSBCbGRnLgotCQkJCTMtMjAtMTMgU2hpbnlva29oYW1hIEtvaGhva3Uta3UKLQkJCQlZb2tvaGFtYSBjaXR5IEthbmFnYXdhIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMTEtODIgICAoaGV4KQkJSU1JIE5vcmdyZW4gTHRkCi0wMDExODIgICAgIChiYXNlIDE2KQkJSU1JIE5vcmdyZW4gTHRkCi0JCQkJUE8gQm94IDIyCi0JCQkJRWFzdGVybiBBdmVudWUKLQkJCQlMaWNoZmllbGQgU3RhZmZvcmRzaGlyZSBXUzEzIDZTQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLTgzICAgKGhleCkJCURhdGFsb2dpYyBNb2JpbGUsIEluYy4KLTAwMTE4MyAgICAgKGJhc2UgMTYpCQlEYXRhbG9naWMgTW9iaWxlLCBJbmMuCi0JCQkJMTUwNSBXZXN0ZWMgRHJpdmUKLQkJCQlFdWdlbmUgT1IgOTc0MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTg0ICAgKGhleCkJCUh1bW8gTGFib3JhdG9yeSxMdGQuCi0wMDExODQgICAgIChiYXNlIDE2KQkJSHVtbyBMYWJvcmF0b3J5LEx0ZC4KLQkJCQlOaXNoaW9naS1LaXRhIDUtMTktMTEKLQkJCQlTdWdpbmFtaS1rdSBUb2t5byAxNjctMDA0MgotCQkJCUpBUEFOCi0KLTAwLTExLTg1ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxMTg1ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5IFNvdXRoCi0JCQkJTVMwNzA0MDUKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS04NiAgIChoZXgpCQlQcmltZSBTeXN0ZW1zLCBJbmMuCi0wMDExODYgICAgIChiYXNlIDE2KQkJUHJpbWUgU3lzdGVtcywgSW5jLgotCQkJCTE2MjY3LTMzMwotCQkJCVN1d2EtZ3VuIEhhcmEtbXVyYSBOYWdhbm8gMzkxLTAxMDAKLQkJCQlKQVBBTgotCi0wMC0xMS04NyAgIChoZXgpCQlDYXRlZ29yeSBTb2x1dGlvbnMsIEluYwotMDAxMTg3ICAgICAoYmFzZSAxNikJCUNhdGVnb3J5IFNvbHV0aW9ucywgSW5jCi0JCQkJMTAyMSBXLiBBZGFtcyBTdAotCQkJCUNoaWNhZ28gSUwgNjA2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTg4ICAgKGhleCkJCUVudGVyYXN5cwotMDAxMTg4ICAgICAoYmFzZSAxNikJCUVudGVyYXN5cwotCQkJCTM1IEluZHVzdHJpYWwgV2F5Ci0JCQkJUm9jaGVzdGVyIE5IIDAzODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS04OSAgIChoZXgpCQlBZXJvdGVjaCBJbmMKLTAwMTE4OSAgICAgKGJhc2UgMTYpCQlBZXJvdGVjaCBJbmMKLQkJCQkxMDEgWmV0YSBEcml2ZQotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLThBICAgKGhleCkJCVZpZXd0cmFuIFRlY2hub2xvZ3kgTGltaXRlZAotMDAxMThBICAgICAoYmFzZSAxNikJCVZpZXd0cmFuIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCTMvRiwgUjItQSBidWlsaWRpbmcsIEhpZ2ggVGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMTEtOEIgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQsIEVudGVycHJpc2UgQnVzaW5lc3MgR3JvdXAKLTAwMTE4QiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudCwgRW50ZXJwcmlzZSBCdXNpbmVzcyBHcm91cAotCQkJCTI2ODAxIFdlc3QgQWdvdXJhIFJvYWQKLQkJCQlDYWxhYmFzYXMgQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLThDICAgKGhleCkJCU1pc3NvdXJpIERlcGFydG1lbnQgb2YgVHJhbnNwb3J0YXRpb24KLTAwMTE4QyAgICAgKGJhc2UgMTYpCQlNaXNzb3VyaSBEZXBhcnRtZW50IG9mIFRyYW5zcG9ydGF0aW9uCi0JCQkJUC5PLiBCb3ggMjcwCi0JCQkJSmVmZmVyc29uIENpdHkgTWlzc291cmkgNjUxMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLThEICAgKGhleCkJCUhhbmNoYW5nIFN5c3RlbSBDb3JwLgotMDAxMThEICAgICAoYmFzZSAxNikJCUhhbmNoYW5nIFN5c3RlbSBDb3JwLgotCQkJCTcxNS0xMSBCb2V1bi1Ub3duLCBFLWRvbmcsIFNhbmdyb2stZ3UsCi0JCQkJQW5zYW4tc2hpIEt5dW5na2ktRG8gNDI1LTg1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS04RSAgIChoZXgpCQlIYWx5dGVjaCBNYWNlCi0wMDExOEUgICAgIChiYXNlIDE2KQkJSGFseXRlY2ggTWFjZQotCQkJCVVuaXQgMTEsIDIyIExleGluZ3RvbiBEcml2ZQotCQkJCU5vcndlc3QgQnVzaW5lc3MgUGFyawotCQkJCUJhdWxraGFtIEhpbGxzIE5TVyAyMTUzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTExLThGICAgKGhleCkJCUVVVEVDSCBJTlNUUlVNRU5UUyBQVEUuIExURC4KLTAwMTE4RiAgICAgKGJhc2UgMTYpCQlFVVRFQ0ggSU5TVFJVTUVOVFMgUFRFLiBMVEQuCi0JCQkJQmxrIDU1LEF5ZXIgUmFqYWggQ3Jlc2NlbnQsICMwNC0xNi8yNC4KLQkJCQkxMzk5NDkKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTEtOTAgICAoaGV4KQkJRGlnaXRhbCBEZXNpZ24gQ29ycG9yYXRpb24KLTAwMTE5MCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIERlc2lnbiBDb3Jwb3JhdGlvbgotCQkJCTM4MjAgVmVudHVyYSBEcml2ZQotCQkJCUFybGluZ3RvbiBIZWlnaHRzIElMIDYwMDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS05MSAgIChoZXgpCQlDVFMtQ2xpbWEgVGVtcGVyYXR1ciBTeXN0ZW1lIEdtYkgKLTAwMTE5MSAgICAgKGJhc2UgMTYpCQlDVFMtQ2xpbWEgVGVtcGVyYXR1ciBTeXN0ZW1lIEdtYkgKLQkJCQlMb3R6ZW5hY2tlciAyMQotCQkJCUhlY2hpbmdlbiBCYWRlbnd1cnR0ZW1iZXJnIDcyMzc5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS05MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDExOTIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS05MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDExOTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLW0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS05NCAgIChoZXgpCQlDaGkgTWVpIENvbW11bmljYXRpb24gU3lzdGVtcywgSW5jLgotMDAxMTk0ICAgICAoYmFzZSAxNikJCUNoaSBNZWkgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJMTFGLCBOby4zOSwgQ2h1bmcgSHVhIFJELiBTZWMgMQotCQkJCVRhaXBlaSAgMTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS05NSAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMTE5NSAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQkyRiBOby4gMjMzLTIsIFBhby1DaGlhbyBSb2FkCi0JCQkJSHNpbi1UaWVuCi0JCQkJVGFpcGVpIFRhaXdhbiAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTk2ICAgKGhleCkJCUFjdHVhbGl0eSBTeXN0ZW1zLCBJbmMuCi0wMDExOTYgICAgIChiYXNlIDE2KQkJQWN0dWFsaXR5IFN5c3RlbXMsIEluYy4KLQkJCQkyNSBDb3Jwb3JhdGUgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlCdXJsaW5ndG9uIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS05NyAgIChoZXgpCQlNb25pdG9yaW5nIFRlY2hub2xvZ2llcyBMaW1pdGVkCi0wMDExOTcgICAgIChiYXNlIDE2KQkJTW9uaXRvcmluZyBUZWNobm9sb2dpZXMgTGltaXRlZAotCQkJCTE0IEF0dGVuYnVyeXMgUGFyayBFc3RhdGUKLQkJCQlBdHRlbmJ1cnlzIExhbmUKLQkJCQlUaW1wZXJsZXkgQ2hlc2hpcmUgV0ExNCA1UUUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS05OCAgIChoZXgpCQlQcmlzbSBNZWRpYSBQcm9kdWN0cyBMaW1pdGVkCi0wMDExOTggICAgIChiYXNlIDE2KQkJUHJpc20gTWVkaWEgUHJvZHVjdHMgTGltaXRlZAotCQkJCVdpbGxpYW0gSmFtZXMgSG91c2UKLQkJCQlDb3dsZXkgUm9hZAotCQkJCUNhbWJyaWRnZSBDYW1icmlkZ2VzaGlyZSBDQjQgMFdYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtOTkgICAoaGV4KQkJMndjb20gR21iSAotMDAxMTk5ICAgICAoYmFzZSAxNikJCTJ3Y29tIEdtYkgKLQkJCQlTY2hsZXN3aWdlciBTdHJhc3NlIDg1Ci0JCQkJRmxlbnNidXJnICAyNDk0MQotCQkJCUdFUk1BTlkKLQotMDAtMTEtOUEgICAoaGV4KQkJQWxrZXJpYSBzcmwKLTAwMTE5QSAgICAgKGJhc2UgMTYpCQlBbGtlcmlhIHNybAotCQkJCTI1IFZpYSBHaXVudGluaQotCQkJCU5hdmFjY2hpbyAoUEkpICBJLTU2MDIzCi0JCQkJSVRBTFkKLQotMDAtMTEtOUIgICAoaGV4KQkJVGVsZXN5bmVyZ3kgUmVzZWFyY2ggSW5jLgotMDAxMTlCICAgICAoYmFzZSAxNikJCVRlbGVzeW5lcmd5IFJlc2VhcmNoIEluYy4KLQkJCQk0RiwgTm8uIDQ5LCBUdW5nIEhzaW4gUmQuLAotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS05QyAgIChoZXgpCQlFUCZUIEVuZXJneQotMDAxMTlDICAgICAoYmFzZSAxNikJCUVQJlQgRW5lcmd5Ci0JCQkJMzU4IEVhc3Rlcm4gVmFsbGV5IFdheQotCQkJCUNoYXRzd29vZAotCQkJCVN5ZG5leSBOU1cgMjA2NwotCQkJCUFVU1RSQUxJQQotCi0wMC0xMS05RCAgIChoZXgpCQlEaWdpbmZvIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMTE5RCAgICAgKGJhc2UgMTYpCQlEaWdpbmZvIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkxMEZsLiwgTm8uODIsIEZ1IEhzaW5nIE5vcnRoIFJvYWQKLQkJCQlUYWlwZWkgIDEwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtOUUgICAoaGV4KQkJU29sZWN0cm9uIEJyYXppbAotMDAxMTlFICAgICAoYmFzZSAxNikJCVNvbGVjdHJvbiBCcmF6aWwKLQkJCQlSb2QuIENhbXBpbmFzIE1vZ2kgTWlyaW0KLQkJCQlCYWlycm8gUm9zZWlyYQotCQkJCUphZ3Vhcml1bmEgU1AgMTM4MjAtMDAwCi0JCQkJQlJBWklMCi0KLTAwLTExLTlGICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDExOUYgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTExLUEwICAgKGhleCkJCVZ0ZWNoIEVuZ2luZWVyaW5nIENhbmFkYSBMdGQKLTAwMTFBMCAgICAgKGJhc2UgMTYpCQlWdGVjaCBFbmdpbmVlcmluZyBDYW5hZGEgTHRkCi0JCQkJMjAwLTc2NzEgQWxkZXJicmlkZ2UgV2F5Ci0JCQkJUmljaG1vbmQgQkMgVjZYIDFaOQotCQkJCUNBTkFEQQotCi0wMC0xMS1BMSAgIChoZXgpCQlWSVNJT04gTkVUV0FSRSBDTy4sTFRECi0wMDExQTEgICAgIChiYXNlIDE2KQkJVklTSU9OIE5FVFdBUkUgQ08uLExURAotCQkJCUFjZSBUd2luIFRvd2VyICgyKSwgIzcwOQotCQkJCTIxMi0zMCwgR3Vyby1Eb25nCi0JCQkJU2VvdWwgR3Vyby1HdSAxNTItMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLUEyICAgKGhleCkJCU1hbnVmYWN0dXJpbmcgVGVjaG5vbG9neSBJbmMKLTAwMTFBMiAgICAgKGJhc2UgMTYpCQlNYW51ZmFjdHVyaW5nIFRlY2hub2xvZ3kgSW5jCi0JCQkJNzAgUmVhZHkgQXZlIE5XCi0JCQkJRm9ydCBXYWx0b24gQmVhY2ggRkwgMzI1NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUEzICAgKGhleCkJCUxhblJlYWR5IFRlY2hub2xvZ2llcyBJbmMuCi0wMDExQTMgICAgIChiYXNlIDE2KQkJTGFuUmVhZHkgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk0RiwgTm8uIDMzNywgU2luSHUgMm5kIFJvYWQuLCBOZWlIdSBEaXN0cmljdAotCQkJCVRhaXBlaSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUE0ICAgKGhleCkJCUpTdHJlYW0gVGVjaG5vbG9naWVzIEluYy4KLTAwMTFBNCAgICAgKGJhc2UgMTYpCQlKU3RyZWFtIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJQmxkZy41MywgUjQwNSwgMTk1IFNlYy40LCBDaHVuZyBIc2luZyBSZC4KLQkJCQlDaHV0dW5nLCAgSHNpbmNodSAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUE1ICAgKGhleCkJCUZvcnR1bmEgRWxlY3Ryb25pYyBDb3JwLgotMDAxMUE1ICAgICAoYmFzZSAxNikJCUZvcnR1bmEgRWxlY3Ryb25pYyBDb3JwLgotCQkJCTNGLCBOby45LCBTZWMuMSwgQ2hhbmdBbiBFYXN0IFJkLiwKLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtQTYgICAoaGV4KQkJU3lwaXh4IE5ldHdvcmtzCi0wMDExQTYgICAgIChiYXNlIDE2KQkJU3lwaXh4IE5ldHdvcmtzCi0JCQkJMTA4IEJhbmsgU3RyZWV0Ci0JCQkJV2F0ZXJidXJ5IENUIDA2NzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1BNyAgIChoZXgpCQlJbmZpbGNvIERlZ3JlbW9udCBJbmMuCi0wMDExQTcgICAgIChiYXNlIDE2KQkJSW5maWxjbyBEZWdyZW1vbnQgSW5jLgotCQkJCTgwMDcgRGlzY292ZXJ5IERyLgotCQkJCVBPIEJveCA3MTM5MAotCQkJCVJpY2htb25kIFZpcmdpbmlhIDIzMjU1LTEzOTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUE4ICAgKGhleCkJCVF1ZXN0IFRlY2hub2xvZ2llcwotMDAxMUE4ICAgICAoYmFzZSAxNikJCVF1ZXN0IFRlY2hub2xvZ2llcwotCQkJCTEwNjAgQ29ycG9yYXRlIENlbnRlciBEcml2ZQotCQkJCU9jb25vbW93b2MgV2lzY29uc2luIDUzMDY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1BOSAgIChoZXgpCQlNT0lNU1RPTkUgQ28uLCBMVEQKLTAwMTFBOSAgICAgKGJhc2UgMTYpCQlNT0lNU1RPTkUgQ28uLCBMVEQKLQkJCQk3dGggRmxvb3IgSm9vbmdQeXVuZyBCdWlsZGluZyA2NC0xCi0JCQkJV29vbXl1bi1Eb25nLCBTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTkwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS1BQSAgIChoZXgpCQlVbmljbGFzcyBUZWNobm9sb2d5LCBDby4sIExURAotMDAxMUFBICAgICAoYmFzZSAxNikJCVVuaWNsYXNzIFRlY2hub2xvZ3ksIENvLiwgTFRECi0JCQkJNEYsIE5vLiA5OCwgTWluZyBjaHVhbiBSZAotCQkJCUhzaW50aWVuIENpdHkgVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtQUIgICAoaGV4KQkJVFJVU1RBQkxFIFRFQ0hOT0xPR1kgQ08uLExURC4KLTAwMTFBQiAgICAgKGJhc2UgMTYpCQlUUlVTVEFCTEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCTEyRkwuLTEsTk8uMTY3LEZ1LVNoaW5nIE4uUmQuLFN1bmctU2hhbiBhcmVhCi0JCQkJVGFpcGVpICAxMDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUFDICAgKGhleCkJCVNpbXRlYyBFbGVjdHJvbmljcwotMDAxMUFDICAgICAoYmFzZSAxNikJCVNpbXRlYyBFbGVjdHJvbmljcwotCQkJCUF2b25kYWxlIERyaXZlCi0JCQkJVGFybGV0b24gTGFuY2FzaGlyZSBQUjQgNkFYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtQUQgICAoaGV4KQkJU2hhbmdoYWkgUnVpamllIFRlY2hub2xvZ3kKLTAwMTFBRCAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBSdWlqaWUgVGVjaG5vbG9neQotCQkJCTI3RiwgNDIwIEppYW5nbmluZyBSZC4KLQkJCQlTaGFuZ2hhaSAgMjAwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMTEtQUUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTFBRSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUFGICAgKGhleCkJCU1lZGlhbGluay1pLEluYwotMDAxMUFGICAgICAoYmFzZSAxNikJCU1lZGlhbGluay1pLEluYwotCQkJCTEtOS0xMCBIYW1hbWF0c3UtQ2hvCi0JCQkJQkVMSUVWRSBBIEhBTUFNQVRTVUNITwotCQkJCU1pbmF0by1LdSBUb2t5byAxMDUtMDAxMwotCQkJCUpBUEFOCi0KLTAwLTExLUIwICAgKGhleCkJCUZvcnRlbGluayBJbmMuCi0wMDExQjAgICAgIChiYXNlIDE2KQkJRm9ydGVsaW5rIEluYy4KLQkJCQk0MjUwMSBBbGJyYWUgc3RyZWV0IHN1aXRlIDIwMgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUIxICAgKGhleCkJCUJsdWVFeHBlcnQgVGVjaG5vbG9neSBDb3JwLgotMDAxMUIxICAgICAoYmFzZSAxNikJCUJsdWVFeHBlcnQgVGVjaG5vbG9neSBDb3JwLgotCQkJCThGLE5vLjE2LExhbmUgNzcsWGluZy1BaSBSZCxOZWktSHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNDk0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1CMiAgIChoZXgpCQkyMDAxIFRlY2hub2xvZ3kgSW5jLgotMDAxMUIyICAgICAoYmFzZSAxNikJCTIwMDEgVGVjaG5vbG9neSBJbmMuCi0JCQkJN0YtMTAsIDc5IEhzaW4gVGFpIDV0aC4gUmQuIFNlYy4xCi0JCQkJSHNpIENoaWggVGFpcGVpIENvdW50eSAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUIzICAgKGhleCkJCVlPU0hJTUlZQSBDTy4sTFRELgotMDAxMUIzICAgICAoYmFzZSAxNikJCVlPU0hJTUlZQSBDTy4sTFRELgotCQkJCTItMy0yNCBCYWluYW4KLQkJCQlOaXNoaW5hcmkta3UKLQkJCQlPU0FLQSBPU0FLQS1QcmVmIDU1Ny0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMTEtQjQgICAoaGV4KQkJV2VzdGVybW8gVGVsZWluZHVzdHJpIEFCCi0wMDExQjQgICAgIChiYXNlIDE2KQkJV2VzdGVybW8gVGVsZWluZHVzdHJpIEFCCi0JCQkJU3RvcmEgU3VuZGJ5Ci0JCQkJU0UtNjQwIDQwCi0JCQkJU1dFREVOCi0KLTAwLTExLUI1ICAgKGhleCkJCVNoZW56aGVuIFBvd2VyY29tIENvLixMdGQKLTAwMTFCNSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBQb3dlcmNvbSBDby4sTHRkCi0JCQkJRmxvb3IgMTYsVG93ZXIgQixaaG9uZ3lpbiBCdWlsZGluZyxOb3J0aCBDYWl0aWFuIFJvYWQsRnV0aWFuIERpc3RyaWN0LFNoZW56aGVuLFAuUi5DaGluYQotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyBwcm92aW5jZSA1MTgwMjgKLQkJCQlDSElOQQotCi0wMC0xMS1CNiAgIChoZXgpCQlPcGVuIFN5c3RlbXMgSW50ZXJuYXRpb25hbAotMDAxMUI2ICAgICAoYmFzZSAxNikJCU9wZW4gU3lzdGVtcyBJbnRlcm5hdGlvbmFsCi0JCQkJMzYwMCBIb2xseSBMYW5lIE5vcnRoCi0JCQkJU3VpdGUgNDAKLQkJCQlNaW5uZWFwb2xpcyBNTiA1NTQ0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQjcgICAoaGV4KQkJT2N0YWxpeCBCLlYuCi0wMDExQjcgICAgIChiYXNlIDE2KQkJT2N0YWxpeCBCLlYuCi0JCQkJTW9sZW5zdGVpam4gNjAKLQkJCQlEZSBNZWVybiAgTkwtMzQ1NCBQVAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTExLUI4ICAgKGhleCkJCUxpZWJoZXJyIC0gRWxla3Ryb25payBHbWJICi0wMDExQjggICAgIChiYXNlIDE2KQkJTGllYmhlcnIgLSBFbGVrdHJvbmlrIEdtYkgKLQkJCQlQZXRlciAtIERvcm5pZXIgLSBTdHJhc3NlIDExCi0JCQkJTGluZGF1IChCb2RlbnNlZSkgQmF2YXJpYSA4ODEzMQotCQkJCUdFUk1BTlkKLQotMDAtMTEtQjkgICAoaGV4KQkJSW5uZXIgUmFuZ2UgUHR5LiBMdGQuCi0wMDExQjkgICAgIChiYXNlIDE2KQkJSW5uZXIgUmFuZ2UgUHR5LiBMdGQuCi0JCQkJMSBNaWxsZW5pdW0gQ291cnQKLQkJCQlLbm94ZmllbGQgVmljdG9yaWEgMzE4MAotCQkJCUFVU1RSQUxJQQotCi0wMC0xMS1CQSAgIChoZXgpCQlFbGV4b2wgUHR5IEx0ZAotMDAxMUJBICAgICAoYmFzZSAxNikJCUVsZXhvbCBQdHkgTHRkCi0JCQkJTGV2ZWwgMiAvIDE0NiBCdW5kYWxsIFJvYWQKLQkJCQlCdW5kYWxsIFF1ZWVuc2xhbmQgNDIxNwotCQkJCUFVU1RSQUxJQQotCi0wMC0xMS1CQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDExQkIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1CQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDExQkMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1CRCAgIChoZXgpCQlCb21iYXJkaWVyIFRyYW5zcG9ydGF0aW9uCi0wMDExQkQgICAgIChiYXNlIDE2KQkJQm9tYmFyZGllciBUcmFuc3BvcnRhdGlvbgotCQkJCTE1MDEgTGViYW5vbiBDaHVyY2ggUm9hZAotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUJFICAgKGhleCkJCUFHUCBUZWxlY29tIENvLiBMdGQKLTAwMTFCRSAgICAgKGJhc2UgMTYpCQlBR1AgVGVsZWNvbSBDby4gTHRkCi0JCQkJOUYsIDEzNCBDaHVuZy1Ic2lhbyBFLiBSRAotCQkJCVNlYy4gNAotCQkJCVRhaXBlaSAgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1CRiAgIChoZXgpCQlBRVNZUyBTLnAuQS4KLTAwMTFCRiAgICAgKGJhc2UgMTYpCQlBRVNZUyBTLnAuQS4KLQkJCQlWaWEgQXJ0aWdpYW5pLCA0MQotCQkJCUJydXNhcG9ydG8gQmVyZ2FtbyAyNDA2MAotCQkJCUlUQUxZCi0KLTAwLTExLUMwICAgKGhleCkJCUFkYXkgVGVjaG5vbG9neSBJbmMKLTAwMTFDMCAgICAgKGJhc2UgMTYpCQlBZGF5IFRlY2hub2xvZ3kgSW5jCi0JCQkJOUYuLTMsIE5vLiAyNDcsIFNlYy4gMSwgVGFpY2h1bmcgUG9ydCBSZC4sCi0JCQkJVGFpY2h1bmcgQ2l0eSBUYWl3IDQwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtQzEgICAoaGV4KQkJNFAgTU9CSUxFIERBVEEgUFJPQ0VTU0lORwotMDAxMUMxICAgICAoYmFzZSAxNikJCTRQIE1PQklMRSBEQVRBIFBST0NFU1NJTkcKLQkJCQlWSUFMRSBSRUdJT05FIFZFTkVUTyAyNgotCQkJCVBBRE9WQSBQRCAzNTEyNwotCQkJCUlUQUxZCi0KLTAwLTExLUMyICAgKGhleCkJCVVuaXRlZCBGaWJlciBPcHRpYyBDb21tdW5pY2F0aW9uCi0wMDExQzIgICAgIChiYXNlIDE2KQkJVW5pdGVkIEZpYmVyIE9wdGljIENvbW11bmljYXRpb24KLQkJCQkxMy0xLE5PLjcwMCxKdW5namVuZyBSRCxKdW5naGUgQ2l0eQotCQkJCUp1bmdoZSBDaXR5IFRhaXBlaSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUMzICAgKGhleCkJCVRyYW5zY2VpdmluZyBTeXN0ZW0gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxMUMzICAgICAoYmFzZSAxNikJCVRyYW5zY2VpdmluZyBTeXN0ZW0gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCU5PLjg1LFNlYy4yLEdvbmdkYW93dSBSZC4sCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1DNCAgIChoZXgpCQlUZXJtaW5hbGVzIGRlIFRlbGVjb211bmljYWNpb24gVGVycmVzdHJlLCBTLkwuCi0wMDExQzQgICAgIChiYXNlIDE2KQkJVGVybWluYWxlcyBkZSBUZWxlY29tdW5pY2FjaW9uIFRlcnJlc3RyZSwgUy5MLgotCQkJCVBvbGlnb25vIEV1cm9wb2xpcywgQ2FsbGUgQyAyNgotCQkJCUxhcyBSb3phcyBNYWRyaWQgMjgyMzAKLQkJCQlTUEFJTgotCi0wMC0xMS1DNSAgIChoZXgpCQlURU4gVGVjaG5vbG9neQotMDAxMUM1ICAgICAoYmFzZSAxNikJCVRFTiBUZWNobm9sb2d5Ci0JCQkJNTU1IEVhc3QgT2NlYW4gQmx2ZC4KLQkJCQk5dGggRmxvb3IKLQkJCQlMb25nIEJlYWNoIENBIDkwODAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1DNiAgIChoZXgpCQlTZWFnYXRlIFRlY2hub2xvZ3kgTExDCi0wMDExQzYgICAgIChiYXNlIDE2KQkJU2VhZ2F0ZSBUZWNobm9sb2d5IExMQwotCQkJCTEyODAgRGlzYyBEcml2ZQotCQkJCVNoYWtvcGVlIE1OIDU1Mzc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1DNyAgIChoZXgpCQlSYXltYXJpbmUgVUsgTHRkCi0wMDExQzcgICAgIChiYXNlIDE2KQkJUmF5bWFyaW5lIFVLIEx0ZAotCQkJCVF1YXkgUG9pbnQKLQkJCQlOb3J0aGFyYm91ciBSb2FkCi0JCQkJUG9ydHNtb3V0aCBIYW1wc2hpcmUgUE82IDNURAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLUM4ICAgKGhleCkJCVBvd2VyY29tIENvLiwgTHRkLgotMDAxMUM4ICAgICAoYmFzZSAxNikJCVBvd2VyY29tIENvLiwgTHRkLgotCQkJCThGLCBOby4gMjQ2LCBMaWVuIENoZW4gUmQuCi0JCQkJQ2h1bmcgSG8gVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtQzkgICAoaGV4KQkJTVRUIENvcnBvcmF0aW9uCi0wMDExQzkgICAgIChiYXNlIDE2KQkJTVRUIENvcnBvcmF0aW9uCi0JCQkJMi03LTEyCi0JCQkJTXVyb3RhbmkKLQkJCQlOaXNoaS1rdSBLb2JlIDY1MS0yMjQxCi0JCQkJSkFQQU4KLQotMDAtMTEtQ0EgICAoaGV4KQkJTG9uZyBSYW5nZSBTeXN0ZW1zLCBJbmMuCi0wMDExQ0EgICAgIChiYXNlIDE2KQkJTG9uZyBSYW5nZSBTeXN0ZW1zLCBJbmMuCi0JCQkJNDU1MCBFeGNlbCBQYXJrd2F5Ci0JCQkJU3VpdGUgMjAwCi0JCQkJQWRkaXNvbiBUZXhhcyA3NTAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQ0IgICAoaGV4KQkJSmFjb2Jzb25zIEFCCi0wMDExQ0IgICAgIChiYXNlIDE2KQkJSmFjb2Jzb25zIEFCCi0JCQkJTmVkcmFsaWQgcyAzMgotCQkJCU1vdGFsYSAgNTkxIDk3Ci0JCQkJU1dFREVOCi0KLTAwLTExLUNDICAgKGhleCkJCUd1YW5nemhvdSBKaW5wZW5nIEdyb3VwIENvLixMdGQuCi0wMDExQ0MgICAgIChiYXNlIDE2KQkJR3Vhbmd6aG91IEppbnBlbmcgR3JvdXAgQ28uLEx0ZC4KLQkJCQlOby45IFNoZW56aG91IFJvYWQsR3Vhbmd6aG91IFNjaWVuY2UgQ2l0eQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYzCi0JCQkJQ0hJTkEKLQotMDAtMTEtQ0QgICAoaGV4KQkJQXhzdW4gVGVjaG5vbG9naWVzCi0wMDExQ0QgICAgIChiYXNlIDE2KQkJQXhzdW4gVGVjaG5vbG9naWVzCi0JCQkJMSBGb3J0dW5lIERyaXZlCi0JCQkJQmlsbGVyaWNhIE1BIDAyNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1DRSAgIChoZXgpCQlVYmlzZW5zZSBMaW1pdGVkCi0wMDExQ0UgICAgIChiYXNlIDE2KQkJVWJpc2Vuc2UgTGltaXRlZAotCQkJCVN0LiBBbmRyZXdzIEhvdXNlCi0JCQkJU3QuIEFuZHJld3MgUm9hZAotCQkJCUNoZXN0ZXJ0b24gQ2FtYnJpZGdlIENCNCAxREwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS1DRiAgIChoZXgpCQlUaHJhbmUgJiBUaHJhbmUgQS9TCi0wMDExQ0YgICAgIChiYXNlIDE2KQkJVGhyYW5lICYgVGhyYW5lIEEvUwotCQkJCUx1bmR0b2Z0ZWdhYXJkc3ZlaiA5M0QKLQkJCQlMeW5nYnkgSz9iZW5oYXZuIDI4MDAKLQkJCQlERU5NQVJLCi0KLTAwLTExLUQwICAgKGhleCkJCVRhbmRiZXJnIERhdGEgQVNBCi0wMDExRDAgICAgIChiYXNlIDE2KQkJVGFuZGJlcmcgRGF0YSBBU0EKLQkJCQlLamVsc2FzdmVpZW4gMTYxCi0JCQkJT3NsbyAgMDQxMQotCQkJCU5PUldBWQotCi0wMC0xMS1EMSAgIChoZXgpCQlTb2Z0IEltYWdpbmcgU3lzdGVtIEdtYkgKLTAwMTFEMSAgICAgKGJhc2UgMTYpCQlTb2Z0IEltYWdpbmcgU3lzdGVtIEdtYkgKLQkJCQlKb2hhbm4tS3JhbmUtV2VnIDM5Ci0JCQkJTXVlbnN0ZXIgIDQ4MTQ5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS1EMiAgIChoZXgpCQlQZXJjZXB0aW9uIERpZ2l0YWwgTHRkCi0wMDExRDIgICAgIChiYXNlIDE2KQkJUGVyY2VwdGlvbiBEaWdpdGFsIEx0ZAotCQkJCUZsYXQgQSwgOC9GLCBTaGF3IEhvdXNlCi0JCQkJUk0gQQotCQkJCUNsZWFyIFdhdGVyIEJheSBOVCAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTEtRDMgICAoaGV4KQkJTmV4dEdlblRlbCBIb2xkaW5nIEFTQQotMDAxMUQzICAgICAoYmFzZSAxNikJCU5leHRHZW5UZWwgSG9sZGluZyBBU0EKLQkJCQlTYW5kc2xpbWFya2EgMzEKLQkJCQlTYW5kc2xpCi0JCQkJQmVyZ2VuIEhvcmRhbGFuZCA1ODYxCi0JCQkJTk9SV0FZCi0KLTAwLTExLUQ0ICAgKGhleCkJCU5ldEVucmljaCwgSW5jCi0wMDExRDQgICAgIChiYXNlIDE2KQkJTmV0RW5yaWNoLCBJbmMKLQkJCQk4OTAgSGlsbHZpZXcgQ3QuCi0JCQkJU3VpdGUgMTUwCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUQ1ICAgKGhleCkJCUhhbmd6aG91IFN1bnlhcmQgU3lzdGVtIEVuZ2luZWVyaW5nIENvLixMdGQuCi0wMDExRDUgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgU3VueWFyZCBTeXN0ZW0gRW5naW5lZXJpbmcgQ28uLEx0ZC4KLQkJCQlTdW55YXJkIFNjaWVuY2UgJiBUZWNobm9sb2d5IEJ1aWxkaW5nIEhpLVRlY2ggU29mdHdhcmUgUGFyayhTZWNvbmQgTGFuZCBDb25zb2xpZGF0aW9uKQotCQkJCUhhbmd6aG91IEhpLVRlY2ggSW5kdXN0cmlhbCBEZXZlbG9wbWVudCBab25lKEJpbmppYW5nIERpc3RyaWN0KQotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDA1MwotCQkJCUNISU5BCi0KLTAwLTExLUQ2ICAgKGhleCkJCUhhbmRFcmEsIEluYy4KLTAwMTFENiAgICAgKGJhc2UgMTYpCQlIYW5kRXJhLCBJbmMuCi0JCQkJMjg1OSAxMDR0aCBTdC4KLQkJCQlEZXMgTW9pbmVzIElBIDUwMzIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1ENyAgIChoZXgpCQllV2Vya3MgSW5jCi0wMDExRDcgICAgIChiYXNlIDE2KQkJZVdlcmtzIEluYwotCQkJCTM1MTAgTWFpbndheQotCQkJCUJ1cmxpbmd0b24gT250YXJpbyBMN00xQTgKLQkJCQlDQU5BREEKLQotMDAtMTEtRDggICAoaGV4KQkJQVNVU1RlayBDb21wdXRlciBJbmMuCi0wMDExRDggICAgIChiYXNlIDE2KQkJQVNVU1RlayBDb21wdXRlciBJbmMuCi0JCQkJTm8uIDE1LCBMaS1UZSBSZC4sIFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1EOSAgIChoZXgpCQlUaVZvCi0wMDExRDkgICAgIChiYXNlIDE2KQkJVGlWbwotCQkJCTIxNjAgR29sZCBBdmUKLQkJCQlBbHZpc28gQ0EgOTUwMDItMjE2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtREEgICAoaGV4KQkJVml2YWFzIFRlY2hub2xvZ3kgSW5jLgotMDAxMURBICAgICAoYmFzZSAxNikJCVZpdmFhcyBUZWNobm9sb2d5IEluYy4KLQkJCQkxNUYsIE5vLiAxMCwgU2VjIDEsIFBlaS1Ic2luIFJkLiwKLQkJCQlIc2luLVRpZW4gY2l0eSBUYWlwZWkgSHNpZW4sIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtREIgICAoaGV4KQkJTGFuZC1DZWxsdWxhciBDb3Jwb3JhdGlvbgotMDAxMURCICAgICAoYmFzZSAxNikJCUxhbmQtQ2VsbHVsYXIgQ29ycG9yYXRpb24KLQkJCQkxMjA1NCBNaXJhbWFyIFBhcmt3YXkKLQkJCQlNaXJhbWFyIEZMIDMzMDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1EQyAgIChoZXgpCQlHbHVueiAmIEplbnNlbgotMDAxMURDICAgICAoYmFzZSAxNikJCUdsdW56ICYgSmVuc2VuCi0JCQkJSGFzbGV2dmVqIDEzCi0JCQkJUmluZ3N0ZWQgIDQxMDAKLQkJCQlERU5NQVJLCi0KLTAwLTExLUREICAgKGhleCkJCUZST01VUyBURUMuIENvLiwgTHRkLgotMDAxMUREICAgICAoYmFzZSAxNikJCUZST01VUyBURUMuIENvLiwgTHRkLgotCQkJCTJGIDg5Ni04IEhvZ3llMi1kb25nIERvbmdhbi1HdQotCQkJCUFueWFuZy1DaXR5LCBHeWVvbmdnaS1kbywKLQkJCQk0MzEtODM2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLURFICAgKGhleCkJCUVVUklMT0dJQwotMDAxMURFICAgICAoYmFzZSAxNikJCUVVUklMT0dJQwotCQkJCUNlbnRyYWxlIFBhcmMgQmF0IDcKLQkJCQlBdmVudWUgc3VsbHkgcHJ1ZCdob21tZQotCQkJCUNoYXRlbmF5IE1hbGFicnkgIDkyMjk4Ci0JCQkJRlJBTkNFCi0KLTAwLTExLURGICAgKGhleCkJCUN1cnJlbnQgRW5lcmd5Ci0wMDExREYgICAgIChiYXNlIDE2KQkJQ3VycmVudCBFbmVyZ3kKLQkJCQk1NDQwIEhhcnZlc3QgSGlsbCwgU3RlIDEwMAotCQkJCURhbGxhcyBUWCA3NTIzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRTAgICAoaGV4KQkJVS1NRURJQSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxMUUwICAgICAoYmFzZSAxNikJCVUtTUVESUEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkgOUYsIE5vLjEgSmluLVNoYW4gU3QuCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1FMSAgIChoZXgpCQlBcmNlbGlrIEEuUwotMDAxMUUxICAgICAoYmFzZSAxNikJCUFyY2VsaWsgQS5TCi0JCQkJQ3VtaHVyaXlldCBNYWguLCBFNSBZYW4gWW9sLCBObzoxLAotCQkJCUJleWxpa2R1enUKLQkJCQlJc3RhbmJ1bCAgMzQ1MjAgCi0JCQkJVFVSS0VZCi0KLTAwLTExLUUyICAgKGhleCkJCUh1YSBKdW5nIENvbXBvbmVudHMgQ28uLCBMdGQuCi0wMDExRTIgICAgIChiYXNlIDE2KQkJSHVhIEp1bmcgQ29tcG9uZW50cyBDby4sIEx0ZC4KLQkJCQk1RiwgTm8uMTMsIExhbmUgMTIwLCBTZWMuMSwgTmVpIEh1IFJvYWQKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtRTMgICAoaGV4KQkJVGhvbXNvbiwgSW5jLgotMDAxMUUzICAgICAoYmFzZSAxNikJCVRob21zb24sIEluYy4KLQkJCQkxMDEgV2VzdCAxMDNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyOTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUU0ICAgKGhleCkJCURhbmVsZWMgRWxlY3Ryb25pY3MgQS9TCi0wMDExRTQgICAgIChiYXNlIDE2KQkJRGFuZWxlYyBFbGVjdHJvbmljcyBBL1MKLQkJCQlCbG9ra2VuIDQ0Ci0JCQkJQmlya2Vyb2VkIENvcGVuaGFnZW4gMzQ2MAotCQkJCURFTk1BUksKLQotMDAtMTEtRTUgICAoaGV4KQkJS0NvZGVzIENvcnBvcmF0aW9uCi0wMDExRTUgICAgIChiYXNlIDE2KQkJS0NvZGVzIENvcnBvcmF0aW9uCi0JCQkJRmxvb3IgMiwgTnVtYmVyIDUwMSwgU2VjdGlvbiAyCi0JCQkJVGlkaW5nIEJvdWxldmFyZAotCQkJCU5laWh1IERpc3RyaWN0IFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtRTYgICAoaGV4KQkJU2NpZW50aWZpYyBBdGxhbnRhCi0wMDExRTYgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBBdGxhbnRhCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGFya3dheQotCQkJCU1haWwgU3RvcCA1LjIuNDI4Ci0JCQkJTGF3cmVuY2V2aWxsZSBHYSAzMDA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRTcgICAoaGV4KQkJV09STERTQVQgLSBUZXhhcyBkZSBGcmFuY2UKLTAwMTFFNyAgICAgKGJhc2UgMTYpCQlXT1JMRFNBVCAtIFRleGFzIGRlIEZyYW5jZQotCQkJCTIyMCwgcnVlIEd1c3RhdmUgRWlmZmVsCi0JCQkJY2VkZXggMwotCQkJCUFpeCBlbiBQcm92ZW5jZSBCb3VjaGVzIGR1IFJob25lIDEzODU0Ci0JCQkJRlJBTkNFCi0KLTAwLTExLUU4ICAgKGhleCkJCVRpeGkuQ29tCi0wMDExRTggICAgIChiYXNlIDE2KQkJVGl4aS5Db20KLQkJCQlLYXJtZWxpdGVyd2VnIDExNAotCQkJCUJlcmxpbiAgMTM0NjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLUU5ICAgKGhleCkJCVNUQVJORVggQ08uLCBMVEQuCi0wMDExRTkgICAgIChiYXNlIDE2KQkJU1RBUk5FWCBDTy4sIExURC4KLQkJCQk0dGggRmxvb3IsIEMmQyBCbGRnLCAyMjgtMgotCQkJCUd1dWktZG9uZwotCQkJCUt3YW5namluLWd1IFNlb3VsIDE0My0yMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtRUEgICAoaGV4KQkJSVdJQ1MgSW5jLgotMDAxMUVBICAgICAoYmFzZSAxNikJCUlXSUNTIEluYy4KLQkJCQkxOTEyNSBOb3J0aCBDcmVlayBQYXJrd2F5Ci0JCQkJU3VpdGUgMTIwCi0JCQkJQm90aGVsbCBXQSA5ODAxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRUIgICAoaGV4KQkJSW5ub3ZhdGl2ZSBJbnRlZ3JhdGlvbgotMDAxMUVCICAgICAoYmFzZSAxNikJCUlubm92YXRpdmUgSW50ZWdyYXRpb24KLQkJCQkyMzkwQSBXYXJkIEF2ZW51ZQotCQkJCVNpbWkgVmFsbGV5IENBIDkzMDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1FQyAgIChoZXgpCQlBVklYIElOQy4KLTAwMTFFQyAgICAgKGJhc2UgMTYpCQlBVklYIElOQy4KLQkJCQkxLTEsIEZ1a3V1cmEsIEthbmF6YXdhLWt1Ci0JCQkJWW9rb2hhbWEtc2hpIEthbmFnYXdhIDIzNi0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMTEtRUQgICAoaGV4KQkJODAyIEdsb2JhbAotMDAxMUVEICAgICAoYmFzZSAxNikJCTgwMiBHbG9iYWwKLQkJCQlTdHVkaW8gMTEsSW50ZWMgMixXYWRlIFJvYWQKLQkJCQlCYXNpbmdzdG9rZSwKLQkJCQlIYW1wc2hpcmUgIFJHMjQgQk5FCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtRUUgICAoaGV4KQkJRXN0YXJpLCBJbmMuCi0wMDExRUUgICAgIChiYXNlIDE2KQkJRXN0YXJpLCBJbmMuCi0JCQkJMTgwMCBQYXh0b24gU3QKLQkJCQlIYXJyaXNidXJnIFBBIDE3MTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1FRiAgIChoZXgpCQlDb25pdGVjIERhdGVuc3lzdGVtZSBHbWJICi0wMDExRUYgICAgIChiYXNlIDE2KQkJQ29uaXRlYyBEYXRlbnN5c3RlbWUgR21iSAotCQkJCURpZXNlbHN0ci4gMTFjCi0JCQkJRGllYnVyZyBIZXNzZW4gNjQ4MDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLUYwICAgKGhleCkJCVdpZGVmdWwgTGltaXRlZAotMDAxMUYwICAgICAoYmFzZSAxNikJCVdpZGVmdWwgTGltaXRlZAotCQkJCTNCLCBTcGVlZHkgSW5kLiBCbGRnLiwgMTE0IEhvdyBNaW5nIFN0cmVldAotCQkJCUt3dW4gVG9uZwotCQkJCUhvbmcgS29uZyA4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMTEtRjEgICAoaGV4KQkJUWluZXRpUSBMdGQKLTAwMTFGMSAgICAgKGJhc2UgMTYpCQlRaW5ldGlRIEx0ZAotCQkJCVJvb20gRTYwMQotCQkJCVN0LiBBbmRyZXcncyBSb2FkCi0JCQkJTWFsdmVybiBXb3JjZXN0ZXJzaGlyZSBXUjE0IDNQUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLUYyICAgKGhleCkJCUluc3RpdHV0ZSBvZiBOZXR3b3JrIFRlY2hub2xvZ2llcwotMDAxMUYyICAgICAoYmFzZSAxNikJCUluc3RpdHV0ZSBvZiBOZXR3b3JrIFRlY2hub2xvZ2llcwotCQkJCTE3LXRoIExpbmUgVmFzaWxldnNreSBPc3Ryb3YsIDU0LTEKLQkJCQlTdC5QZXRlcnNidXJnICAxOTkxNzgKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTEtRjMgICAoaGV4KQkJTmVvTWVkaWEgRXVyb3BlIEFHCi0wMDExRjMgICAgIChiYXNlIDE2KQkJTmVvTWVkaWEgRXVyb3BlIEFHCi0JCQkJSmVucy1PdHRvLUtyYWctU3RyLiAxMQotCQkJCVd1cnNlbGVuIE5vcmRyaGVpbi1XZXN0ZmFsZW4gNTIxNDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLUY0ICAgKGhleCkJCXdvb3JpLW5ldAotMDAxMUY0ICAgICAoYmFzZSAxNikJCXdvb3JpLW5ldAotCQkJCSM1MDgsIEhhbmtvb2sgTW9vbHl1LCA4NTMtMSBEb25nY2h1bi1Eb25nCi0JCQkJWW9uZ2luLVNpIEt5dW5na2ktRG8gNDQ5LTg0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS1GNSAgIChoZXgpCQlBU0tFWSBDT01QVVRFUiBDT1JQLgotMDAxMUY1ICAgICAoYmFzZSAxNikJCUFTS0VZIENPTVBVVEVSIENPUlAuCi0JCQkJMTBGLCBOTy4xMTksIENISUVOS0FORyAgUkQuLAotCQkJCUNIVU5HLUhPLCBUQUlQRUkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtRjYgICAoaGV4KQkJQXNpYSBQYWNpZmljIE1pY3Jvc3lzdGVtcyAsIEluYy4KLTAwMTFGNiAgICAgKGJhc2UgMTYpCQlBc2lhIFBhY2lmaWMgTWljcm9zeXN0ZW1zICwgSW5jLgotCQkJCU5vLjIsUiZEIFJvYWQgNiAsU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1GNyAgIChoZXgpCQlTaGVuemhlbiBGb3J3YXJkIEluZHVzdHJ5IENvLiwgTHRkCi0wMDExRjcgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gRm9yd2FyZCBJbmR1c3RyeSBDby4sIEx0ZAotCQkJCTRiMSBGNS44LCBUaWFuIEFuIEN5YmVyIFBhcmssIENoZW5nb25nbWlhbywKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMTEtRjggICAoaGV4KQkJQUlSQVlBIENvcnAKLTAwMTFGOCAgICAgKGJhc2UgMTYpCQlBSVJBWUEgQ29ycAotCQkJCTYzNyBBZGFpciBDb3VydAotCQkJCU1vcmdhbiBIaWxsIENBIDk1MDM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1GOSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMTFGOSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xMS1GQSAgIChoZXgpCQlSYW5lIENvcnBvcmF0aW9uCi0wMDExRkEgICAgIChiYXNlIDE2KQkJUmFuZSBDb3Jwb3JhdGlvbgotCQkJCTEwODAyIDQ3dGggQXZlbnVlIFdlc3QKLQkJCQlNdWtpbHRlbyBXQSA5ODI3NS01MDk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1GQiAgIChoZXgpCQlIZWlkZWxiZXJnIEVuZ2luZWVyaW5nIEdtYkgKLTAwMTFGQiAgICAgKGJhc2UgMTYpCQlIZWlkZWxiZXJnIEVuZ2luZWVyaW5nIEdtYkgKLQkJCQlUaWVyZ2FydGVuc3RyLiAxNQotCQkJCUhlaWRlbGJlcmcgQmFkZW4tV3VlcnR0ZW1iZXJnIDY5MTIxCi0JCQkJR0VSTUFOWQotCi0wMC0xMS1GQyAgIChoZXgpCQlIQVJUSU5HIEVsZWN0cmljIEdtYmggJiBDby5LRwotMDAxMUZDICAgICAoYmFzZSAxNikJCUhBUlRJTkcgRWxlY3RyaWMgR21iaCAmIENvLktHCi0JCQkJV2lsaGVsbSBIYXJ0aW5nIFN0ci4gMQotCQkJCUVzcGVsa2FtcCBOb3JkcmhlaW4gV2VzdGZhbGVuIEQtMzIzMzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLUZEICAgKGhleCkJCUtPUkcgSU5DLgotMDAxMUZEICAgICAoYmFzZSAxNikJCUtPUkcgSU5DLgotCQkJCTQwMTUtMiwgWWFub2t1Y2hpCi0JCQkJSW5hZ2ktQ2l0eSBUT0tZTyAyMDYtMDgxMgotCQkJCUpBUEFOCi0KLTAwLTExLUZFICAgKGhleCkJCUtlaXlvIFN5c3RlbSBSZXNlYXJjaCwgSW5jLgotMDAxMUZFICAgICAoYmFzZSAxNikJCUtlaXlvIFN5c3RlbSBSZXNlYXJjaCwgSW5jLgotCQkJCUhhbWFkYSBwYXJrIEJsZGcuIDZGCi0JCQkJMTctMyBTaGlubWFjaGkgQ2h1b3Uta3UKLQkJCQlDaGliYS1jaXR5IENoaWJhLXByZWYgMjYwLTAwMjgKLQkJCQlKQVBBTgotCi0wMC0xMS1GRiAgIChoZXgpCQlEaWdpdHJvIFRlY25vbG9naWEgTHRkYQotMDAxMUZGICAgICAoYmFzZSAxNikJCURpZ2l0cm8gVGVjbm9sb2dpYSBMdGRhCi0JCQkJUnVhOiBQcm9mZXNzb3JhIFNvZmlhIFF1aW50IGRlIFNvdXphLCAxNjcKLQkJCQlCYWlycm86IENhcG9laXJhcwotCQkJCUZsb3JpYW5vcG9saXMgU2FudGEgQ2F0YXJpbmEgODgwODUtMDQwCi0JCQkJQlJBWklMCi0KLTAwLTEyLTAwICAgKGhleCkJCUNpc2NvCi0wMDEyMDAgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMDEgICAoaGV4KQkJQ2lzY28KLTAwMTIwMSAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0wMiAgIChoZXgpCQlEZWNyYW5lIEFlcm9zcGFjZSAtIEF1ZGlvIEludGVybmF0aW9uYWwgSW5jLgotMDAxMjAyICAgICAoYmFzZSAxNikJCURlY3JhbmUgQWVyb3NwYWNlIC0gQXVkaW8gSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJNzMwMCBJbmR1c3RyeSBEcml2ZQotCQkJCU5vcnRoIExpdHRsZSBSb2NrIEFSIDcyMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0wMyAgIChoZXgpCQlBY3RpdiBOZXR3b3JrcwotMDAxMjAzICAgICAoYmFzZSAxNikJCUFjdGl2IE5ldHdvcmtzCi0JCQkJQkFUIEwgLSAxIHJ1ZSBkZSBUZXJyZSBOZXV2ZQotCQkJCUJQMTI3Ci0JCQkJQ09VUlRBQk9FVUYgTi9BIDkxOTQ0Ci0JCQkJRlJBTkNFCi0KLTAwLTEyLTA0ICAgKGhleCkJCXUxMCBOZXR3b3JrcywgSW5jLgotMDAxMjA0ICAgICAoYmFzZSAxNikJCXUxMCBOZXR3b3JrcywgSW5jLgotCQkJCTItMi0xNCBLYWtpbm9raXpha2EKLQkJCQlNZWd1cm8gVG9reW8gMTUyLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0xMi0wNSAgIChoZXgpCQlUZXJyYXNhdCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxMjA1ICAgICAoYmFzZSAxNikJCVRlcnJhc2F0IENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjM1IFZpbmV5YXJkIENvdXJ0LCBzdWl0ZSAxMDAKLQkJCQlNb3JnYW4gSGlsbCBDYWxpZm9ybmlhIDk1MDM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0wNiAgIChoZXgpCQlpUXVlc3QgKE5aKSBMdGQKLTAwMTIwNiAgICAgKGJhc2UgMTYpCQlpUXVlc3QgKE5aKSBMdGQKLQkJCQlQLk8uQm94IDE1MTY5Ci0JCQkJRGluc2RhbGUKLQkJCQlIYW1pbHRvbiBXYWlrYXRvIDIwMzEKLQkJCQlORVcgWkVBTEFORAotCi0wMC0xMi0wNyAgIChoZXgpCQlIZWFkIFN0cm9uZyBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTAwMTIwNyAgICAgKGJhc2UgMTYpCQlIZWFkIFN0cm9uZyBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLQkJCQlVbml0IDksIDIwL0YsIE1ldHJvcG9sZSBTcXVhcmUsCi0JCQkJMiBPbiBZaXUgU3RyZWV0LCBTaGF0aW4KLQkJCQlHdWFuZ2RvbmcgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTEyLTA4ICAgKGhleCkJCUdhbnRuZXIgSW5zdHJ1bWVudHMgR21iSAotMDAxMjA4ICAgICAoYmFzZSAxNikJCUdhbnRuZXIgSW5zdHJ1bWVudHMgR21iSAotCQkJCU1vbnRhZm9uZXJzdHJhc3NlIDgKLQkJCQlTY2hydW5zIFZvcmFybGJlcmcgNjc4MAotCQkJCUFVU1RSSUEKLQotMDAtMTItMDkgICAoaGV4KQkJRmFzdHJheCBMdGQKLTAwMTIwOSAgICAgKGJhc2UgMTYpCQlGYXN0cmF4IEx0ZAotCQkJCVZhbGltb3RpZSA3Ci0JCQkJVmFudGFhIEZJIDAxNTEwCi0JCQkJRklOTEFORAotCi0wMC0xMi0wQSAgIChoZXgpCQlFbWVyc29uIEVsZWN0cmljIEdtYkggJiBDby4gT0hHCi0wMDEyMEEgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBFbGVjdHJpYyBHbWJIICYgQ28uIE9IRwotCQkJCUhlZXJzdHJhc3NlIDExMQotCQkJCVdhaWJsaW5nZW4gQlcgNzEzMzIKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTBCICAgKGhleCkJCUNoaW5hc3lzIFRlY2hub2xvZ2llcyBMaW1pdGVkCi0wMDEyMEIgICAgIChiYXNlIDE2KQkJQ2hpbmFzeXMgVGVjaG5vbG9naWVzIExpbWl0ZWQKLQkJCQkxMC9GLENBR1cgQnVpbGRpbmcsTm8uMzAgSGFpZGlhbiBTb3V0aCBSb2FkCi0JCQkJQmVpamluZyAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMTItMEMgICAoaGV4KQkJQ0UtSW5mb3N5cyBQdGUgTHRkCi0wMDEyMEMgICAgIChiYXNlIDE2KQkJQ0UtSW5mb3N5cyBQdGUgTHRkCi0JCQkJMzkwIEhhdmVsb2NrIFJvYWQKLQkJCQkjMDgtMDIgS2luZydzIENlbnRyZQotCQkJCTE2OTY2MgotCQkJCVNJTkdBUE9SRQotCi0wMC0xMi0wRCAgIChoZXgpCQlBZHZhbmNlZCBUZWxlY29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTIwRCAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBUZWxlY29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMDM5MCBXaWxzaGlyZSBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAxODAzCi0JCQkJTG9zIEFuZ2VsZXMgQ2FsaWZvcm5pYSA5MDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMEUgICAoaGV4KQkJQWJvQ29tCi0wMDEyMEUgICAgIChiYXNlIDE2KQkJQWJvQ29tCi0JCQkJMUYgLCBOby4gMjEsIFlhbmZhIDJuZCBSZC4sIFNCSVAKLQkJCQlIc2luY2h1IENpdHkgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItMEYgICAoaGV4KQkJSUVFRSA4MDIuMwotMDAxMjBGICAgICAoYmFzZSAxNikJCUlFRUUgODAyLjMKLQkJCQkKLQkJCQkxNTU5OSBIYXJyb3cgTGFuZQotCQkJCVBvd2F5IENBIDkyMDY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0xMCAgIChoZXgpCQlXaWRlUmF5IENvcnAKLTAwMTIxMCAgICAgKGJhc2UgMTYpCQlXaWRlUmF5IENvcnAKLQkJCQkyNSBLZWFybnkgU3RyZWV0Ci0JCQkJNnRoIEZsb29yCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMTEgICAoaGV4KQkJUHJvdGVjaG5hIEhlcmJzdCBHbWJIICYgQ28uIEtHCi0wMDEyMTEgICAgIChiYXNlIDE2KQkJUHJvdGVjaG5hIEhlcmJzdCBHbWJIICYgQ28uIEtHCi0JCQkJT3R0byBIYWhuIFN0ci4gMjYKLQkJCQlPdHRvYnJ1bm4gR2VybWFueS9CYXZhcmlhIDg1NTIxCi0JCQkJR0VSTUFOWQotCi0wMC0xMi0xMiAgIChoZXgpCQlQTFVTICBDb3Jwb3JhdGlvbgotMDAxMjEyICAgICAoYmFzZSAxNikJCVBMVVMgIENvcnBvcmF0aW9uCi0JCQkJMTAzMy0xLCBPc2hpdGF0ZSwgSW5hZ2ktc2hpLAotCQkJCVRva3lvIFNhaXRhbWEgMjA2LTA4MTEKLQkJCQlKQVBBTgotCi0wMC0xMi0xMyAgIChoZXgpCQlNZXRyb2htIEFHCi0wMDEyMTMgICAgIChiYXNlIDE2KQkJTWV0cm9obSBBRwotCQkJCU9iZXJkb3Jmc3RyYXNzZSA2OAotCQkJCUhlcmlzYXUgQVIgOTEwMQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTEyLTE0ICAgKGhleCkJCUtvZW5pZyAmIEJhdWVyIEFHCi0wMDEyMTQgICAgIChiYXNlIDE2KQkJS29lbmlnICYgQmF1ZXIgQUcKLQkJCQlGcmllZHJpY2gtS29lbmlnLVN0ci4gNAotCQkJCVd1ZXJ6YnVyZyBCYXZhcmlhIDk3MDgwCi0JCQkJR0VSTUFOWQotCi0wMC0xMi0xNSAgIChoZXgpCQlpU3RvciBOZXR3b3JrcywgSW5jLgotMDAxMjE1ICAgICAoYmFzZSAxNikJCWlTdG9yIE5ldHdvcmtzLCBJbmMuCi0JCQkJNzU4NSBJcnZpbmUgQ2VudGVyIERyaXZlCi0JCQkJU3VpdGUgMjUwCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0xNiAgIChoZXgpCQlJQ1AgSW50ZXJuZXQgQ29tbXVuaWNhdGlvbiBQYXltZW50IEFHCi0wMDEyMTYgICAgIChiYXNlIDE2KQkJSUNQIEludGVybmV0IENvbW11bmljYXRpb24gUGF5bWVudCBBRwotCQkJCVdpbGhlbG0tU3RlaW4tV2VnIDI0Ci0JCQkJSGFtYnVyZyAgRC0yMjMzOQotCQkJCUdFUk1BTlkKLQotMDAtMTItMTcgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi0wMDEyMTcgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEci4KLQkJCQlJcnZpbmUgQ0EgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTE4ICAgKGhleCkJCUFSVVpFIENvcnBvcmF0aW9uCi0wMDEyMTggICAgIChiYXNlIDE2KQkJQVJVWkUgQ29ycG9yYXRpb24KLQkJCQlBcmlha2UgRnJvbnRpZXIgQnVpbGRpbmcgQQotCQkJCTMtMS0yNSBBcmlha2UKLQkJCQlLb2h0b2gta3UgVG9reW8gMTM1LTAwNjMKLQkJCQlKQVBBTgotCi0wMC0xMi0xOSAgIChoZXgpCQlBaGVhZCBDb21tdW5pY2F0aW9uIFN5c3RlbXMgSW5jCi0wMDEyMTkgICAgIChiYXNlIDE2KQkJQWhlYWQgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEluYwotCQkJCTE5OSBQYXJrIFJvYWQgRXh0Ci0JCQkJUE8gQm94IDkyOQotCQkJCU1pZGRsZWJ1cnkgQ1QgMDY3NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTFBICAgKGhleCkJCVRlY2hubyBTb2Z0IFN5c3RlbW5pY3MgSW5jLgotMDAxMjFBICAgICAoYmFzZSAxNikJCVRlY2hubyBTb2Z0IFN5c3RlbW5pY3MgSW5jLgotCQkJCTItNS0xNywgRWJpc3UtbmlzaGksIE5hbml3YS1rdSwKLQkJCQlPc2FrYSAgNTU2LTAwMDMKLQkJCQlKQVBBTgotCi0wMC0xMi0xQiAgIChoZXgpCQlTb3VuZCBEZXZpY2VzLCBMTEMKLTAwMTIxQiAgICAgKGJhc2UgMTYpCQlTb3VuZCBEZXZpY2VzLCBMTEMKLQkJCQkzMDAgV2VuZ2VsIERyaXZlCi0JCQkJUmVlZHNidXJnIFdJIDUzOTU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0xQyAgIChoZXgpCQlQQVJST1QgUy5BLgotMDAxMjFDICAgICAoYmFzZSAxNikJCVBBUlJPVCBTLkEuCi0JCQkJMTc0LCBxdWFpIGRlIEplbW1hcGVzCi0JCQkJUEFSSVMgIDc1MDEwCi0JCQkJRlJBTkNFCi0KLTAwLTEyLTFEICAgKGhleCkJCU5ldGZhYnJpYyBDb3Jwb3JhdGlvbgotMDAxMjFEICAgICAoYmFzZSAxNikJCU5ldGZhYnJpYyBDb3Jwb3JhdGlvbgotCQkJCTY3IEZlZGVyYWwgUm9hZAotCQkJCVN1aXRlIDMwMAotCQkJCUJyb29rZmllbGQgQ1QgMDY4MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTFFICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MsIEluYy4KLTAwMTIxRSAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTE5NCBOLiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTFGICAgKGhleCkJCUhhcmRpbmcgSW50cnVtZW50cwotMDAxMjFGICAgICAoYmFzZSAxNikJCUhhcmRpbmcgSW50cnVtZW50cwotCQkJCTk0MzEtNDFBdmUKLQkJCQlFZG1vbnRvbiBBQiBUNkUgNVg3Ci0JCQkJQ0FOQURBCi0KLTAwLTEyLTIwICAgKGhleCkJCUNhZGNvIFN5c3RlbXMKLTAwMTIyMCAgICAgKGJhc2UgMTYpCQlDYWRjbyBTeXN0ZW1zCi0JCQkJMjM2MyBNZXJyaXR0IERyCi0JCQkJR2FybGFuZCBUZXhhcyA3NTA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMjEgICAoaGV4KQkJQi5CcmF1biBNZWxzdW5nZW4gQUcKLTAwMTIyMSAgICAgKGJhc2UgMTYpCQlCLkJyYXVuIE1lbHN1bmdlbiBBRwotCQkJCVNjaHdhcnplbmJlcmdlciBXZWcgNzMtNzkKLQkJCQlNZWxzdW5nZW4gSGVzc2VuIDM0MjEyCi0JCQkJR0VSTUFOWQotCi0wMC0xMi0yMiAgIChoZXgpCQlTa2FyZGluIChVSykgTHRkCi0wMDEyMjIgICAgIChiYXNlIDE2KQkJU2thcmRpbiAoVUspIEx0ZAotCQkJCU5vLiA1IEdyZWVud2F5IChSTzI0KQotCQkJCUhhcmxvdyBCdXNpbmVzcyBQYXJrCi0JCQkJSGFybG93IEVzc2V4IENNMTkgNVFCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTItMjMgICAoaGV4KQkJUGl4aW0KLTAwMTIyMyAgICAgKGJhc2UgMTYpCQlQaXhpbQotCQkJCTkxNSBMaW5kYSBWaXN0YSBBdmUuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMjQgICAoaGV4KQkJTmV4UUwgQ29ycG9yYXRpb24KLTAwMTIyNCAgICAgKGJhc2UgMTYpCQlOZXhRTCBDb3Jwb3JhdGlvbgotCQkJCTEyMjUwIElud29vZCBSb2FkICM2Ci0JCQkJRGFsbGFzIFRYIDc1MjQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0yNSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMTIyNSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0yNiAgIChoZXgpCQlKYXBhbiBEaXJleCBDb3Jwb3JhdGlvbgotMDAxMjI2ICAgICAoYmFzZSAxNikJCUphcGFuIERpcmV4IENvcnBvcmF0aW9uCi0JCQkJS3lvY2VyYSBIYXJhanVrdSBCbGRnLgotCQkJCTYtMjctOCwgSmluZ3VtYWUKLQkJCQlTaGlidXlhLWt1IFRva3lvIDE1MC0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMTItMjcgICAoaGV4KQkJRnJhbmtsaW4gRWxlY3RyaWMgQ28uLCBJbmMuCi0wMDEyMjcgICAgIChiYXNlIDE2KQkJRnJhbmtsaW4gRWxlY3RyaWMgQ28uLCBJbmMuCi0JCQkJNDAwIEUuIFNwcmluZyBTdHJlZXQKLQkJCQlCbHVmZnRvbiBJbmRpYW5hIDQ2NzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0yOCAgIChoZXgpCQlEYXRhIEx0ZC4KLTAwMTIyOCAgICAgKGJhc2UgMTYpCQlEYXRhIEx0ZC4KLQkJCQlKLiBIYWdhcnUgOQotCQkJCVAuTy4gQm94IDcKLQkJCQlCcmF0aXNsYXZhICA4MzAgMDUKLQkJCQlTTE9WQUtJQQotCi0wMC0xMi0yOSAgIChoZXgpCQlCcm9hZEVhc3kgVGVjaG5vbG9naWVzIENvLixMdGQKLTAwMTIyOSAgICAgKGJhc2UgMTYpCQlCcm9hZEVhc3kgVGVjaG5vbG9naWVzIENvLixMdGQKLQkJCQkyNHRoIEZsb29yLFRvd2VyIEEsSmluU2hhbiBNYW5zaW9uLAotCQkJCU5PLjggU2hhblhpIFJvYWQsTmFuamluZyxQLlIuQy4KLQkJCQlOYW5qaW5nIEppYW5nc3UgMjEwMDA5Ci0JCQkJQ0hJTkEKLQotMDAtMTItMkEgICAoaGV4KQkJVlRlY2ggVGVsZWNvbW11bmljYXRpb25zIEx0ZC4KLTAwMTIyQSAgICAgKGJhc2UgMTYpCQlWVGVjaCBUZWxlY29tbXVuaWNhdGlvbnMgTHRkLgotCQkJCTIzL0YsIFRhaSBQaW5nIEluZHVzdHJpYWwgQ2VudHJlLCBCbG9jayAxCi0JCQkJNTcgVGluZyBLb2sgUm9hZCwgVGFpIFBvCi0JCQkJSE9ORyBLT05HCi0KLTAwLTEyLTJCICAgKGhleCkJCVZpcmJpYWdlIFB0eSBMdGQKLTAwMTIyQiAgICAgKGJhc2UgMTYpCQlWaXJiaWFnZSBQdHkgTHRkCi0JCQkJTGV2ZWwgNAotCQkJCTggTWFya2V0IFN0cmVldAotCQkJCU1lbGJvdXJuZSBWaWN0b3JpYSAzMDAwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTEyLTJDICAgKGhleCkJCVNvZW5lbiBDb250cm9scyBOLlYuCi0wMDEyMkMgICAgIChiYXNlIDE2KQkJU29lbmVuIENvbnRyb2xzIE4uVi4KLQkJCQlXaWpuZWRhbGVzdHJhYXQgMTkwCi0JCQkJUm9lc2VsYXJlIFctVkwgODgwMAotCQkJCUJFTEdJVU0KLQotMDAtMTItMkQgICAoaGV4KQkJU2lOZXR0IENvcnBvcmF0aW9uCi0wMDEyMkQgICAgIChiYXNlIDE2KQkJU2lOZXR0IENvcnBvcmF0aW9uCi0JCQkJNjQwIFcuIENhbGlmb3JuaWEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0yRSAgIChoZXgpCQlTaWduYWwgVGVjaG5vbG9neSAtIEFJU0QKLTAwMTIyRSAgICAgKGJhc2UgMTYpCQlTaWduYWwgVGVjaG5vbG9neSAtIEFJU0QKLQkJCQkxODIwIFByZXN0b24gUGFyayBCbHZkLgotCQkJCVN1aXRlIDI4MDAKLQkJCQlQbGFubyBUWCA3NTA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMkYgICAoaGV4KQkJU2FuZWkgRWxlY3RyaWMgSW5jLgotMDAxMjJGICAgICAoYmFzZSAxNikJCVNhbmVpIEVsZWN0cmljIEluYy4KLQkJCQk1RiBUYWlzb3UtSWtlYnVrdXJvIEJsZGcuCi0JCQkJMi02MS0xIElrZWJ1a3VybwotCQkJCVRvc2hpbWEta3UgVG9reW8gMTcxLTAwMTQKLQkJCQlKQVBBTgotCi0wMC0xMi0zMCAgIChoZXgpCQlQaWNhc28gSW5mb2NvbW11bmljYXRpb24gQ08uLCBMVEQuCi0wMDEyMzAgICAgIChiYXNlIDE2KQkJUGljYXNvIEluZm9jb21tdW5pY2F0aW9uIENPLiwgTFRELgotCQkJCTNGLCBTdW50ZWNoY2l0eSwgU2FuZ2RhZXdvbiAxLWRvbmcsCi0JCQkJNTEzLTE1LCBKdW5nd29uLWd1Ci0JCQkJU3VuZ25hbS1jaXR5IEt5dW5nZ2ktZG8gNDYyLTcyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi0zMSAgIChoZXgpCQlNb3Rpb24gQ29udHJvbCBTeXN0ZW1zLCBJbmMuCi0wMDEyMzEgICAgIChiYXNlIDE2KQkJTW90aW9uIENvbnRyb2wgU3lzdGVtcywgSW5jLgotCQkJCVBPIEJveCAxMTUKLQkJCQk2NzAxIFZpc2NvZSBSb2FkCi0JCQkJTmV3IFJpdmVyIFZBIDI0MTI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0zMiAgIChoZXgpCQlMZVdpeiBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDEyMzIgICAgIChiYXNlIDE2KQkJTGVXaXogQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTEzNzYgTi4gNHRoIFN0LiAjMzAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTMzICAgKGhleCkJCUpSQyBUT0tLSSBDby4sTHRkLgotMDAxMjMzICAgICAoYmFzZSAxNikJCUpSQyBUT0tLSSBDby4sTHRkLgotCQkJCTMtMi0xIFNoaW55b3NoaWRhaGlnYXNoaSBLb2hva3Uta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjMtODU3MgotCQkJCUpBUEFOCi0KLTAwLTEyLTM0ICAgKGhleCkJCUNhbWlsbGUgQmF1ZXIKLTAwMTIzNCAgICAgKGJhc2UgMTYpCQlDYW1pbGxlIEJhdWVyCi0JCQkJQWFyZ2F1ZXJzdHIuIDcKLQkJCQlXb2hsZW4gQUcgNTYxMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTEyLTM1ICAgKGhleCkJCUFuZHJldyBDb3Jwb3JhdGlvbgotMDAxMjM1ICAgICAoYmFzZSAxNikJCUFuZHJldyBDb3Jwb3JhdGlvbgotCQkJCTI2MDEgVGVsZWNvbSBQa3d5Ci0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMzYgICAoaGV4KQkJQ29uU2VudHJ5IE5ldHdvcmtzCi0wMDEyMzYgICAgIChiYXNlIDE2KQkJQ29uU2VudHJ5IE5ldHdvcmtzCi0JCQkJMTY5MCBNY0NhbmRsZXNzIERyCi0JCQkJTWlsaXBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0zNyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxMjM3ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLAotCQkJCU1TIDg3MjMKLQkJCQlEYWxsYXMgVGV4YXMgNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTM4ICAgKGhleCkJCVNldGFCb3ggVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTIzOCAgICAgKGJhc2UgMTYpCQlTZXRhQm94IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJOUYtMSwgTm8uIDI5My0zLCBTZWMyLCBGdS1Ic2luZyBTLiBSZC4KLQkJCQlUYWlwZWkgIDEwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItMzkgICAoaGV4KQkJUyBOZXQgU3lzdGVtcyBJbmMuCi0wMDEyMzkgICAgIChiYXNlIDE2KQkJUyBOZXQgU3lzdGVtcyBJbmMuCi0JCQkJMTBGIFN1bmd3b24gQmxkZy4gU2Ftc3VuZy1kb25nCi0JCQkJR2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtMDkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTNBICAgKGhleCkJCVBvc3lzdGVjaCBJbmMuLCBDby4KLTAwMTIzQSAgICAgKGJhc2UgMTYpCQlQb3N5c3RlY2ggSW5jLiwgQ28uCi0JCQkJUm9vbSA0MDcsIERhZXJ5dW5nIFRlY2hubyBUb3duIDYsCi0JCQkJNDkzLTYsIEdhc2FuLURvbmcsIEdldW1jaGVvbi1HdSwKLQkJCQlTZW91bCAgMTUzLTc3MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi0zQiAgIChoZXgpCQlLZVJvIFN5c3RlbXMgQXBTCi0wMDEyM0IgICAgIChiYXNlIDE2KQkJS2VSbyBTeXN0ZW1zIEFwUwotCQkJCUFsbGlrZXZlaiAzCi0JCQkJSD9yc2hvbG0gIDI5NzAKLQkJCQlERU5NQVJLCi0KLTAwLTEyLTNDICAgKGhleCkJCVNlY29uZCBSdWxlIExMQwotMDAxMjNDICAgICAoYmFzZSAxNikJCVNlY29uZCBSdWxlIExMQwotCQkJCTQxMTkgV2FsbnV0IFN0cmVldAotCQkJCVN1aXRlIDIwMAotCQkJCVBoaWxhZGVscGhpYSBQQSAxOTEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItM0QgICAoaGV4KQkJR0VTCi0wMDEyM0QgICAgIChiYXNlIDE2KQkJR0VTCi0JCQkJUm9vbSA1NDAzLCBEb25nU2VvdWwgQ29sbGVnZSwgNDIzLCBCb2tqZW9uZy1Eb25nLCBTdWplb25nLUd1LCBTZW9uZ25hbS1TaSwgR3llb25nZ2ktRG8sCi0JCQkJR3llb25nZ2ktRG8gU2VvbmduYW0tU2kgNDYxLTcxNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi0zRSAgIChoZXgpCQlFUlVORSB0ZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMjNFICAgICAoYmFzZSAxNikJCUVSVU5FIHRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDQyOSwgQ2hpbi1TYW4gMm5kIHN0cmVldCwKLQkJCQlZYW5nLU1laQotCQkJCVRhbyBZdWFuICAzMjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLTNGICAgKGhleCkJCURlbGwgSW5jCi0wMDEyM0YgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrICBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNDAgICAoaGV4KQkJQU1PSSBFTEVDVFJPTklDUyBDTy4sTFRECi0wMDEyNDAgICAgIChiYXNlIDE2KQkJQU1PSSBFTEVDVFJPTklDUyBDTy4sTFRECi0JCQkJMjk1IExhbmUsWnVjaG9uZ3poaSBSb2FkLFpoYW5nIGppYW5nLAotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi0wMC0xMi00MSAgIChoZXgpCQlhMmkgbWFya2V0aW5nIGNlbnRlcgotMDAxMjQxICAgICAoYmFzZSAxNikJCWEyaSBtYXJrZXRpbmcgY2VudGVyCi0JCQkJMTAyNC00ICBEdWtzYW4gQmxkZyBCYW5nYmFlZG9uZyBTZW9jaG9ndSBTZW91bCBLb3JlYQotCQkJCVNFT1VMICAxMzctMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTQyICAgKGhleCkJCU1pbGxlbm5pYWwgTmV0Ci0wMDEyNDIgICAgIChiYXNlIDE2KQkJTWlsbGVubmlhbCBOZXQKLQkJCQkgMjg1IEJpbGxlcmljYSBSb2FkCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNDMgICAoaGV4KQkJQ2lzY28KLTAwMTI0MyAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi00NCAgIChoZXgpCQlDaXNjbwotMDAxMjQ0ICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTQ1ICAgKGhleCkJCVplbGx3ZWdlciBBbmFseXRpY3MsIEluYy4KLTAwMTI0NSAgICAgKGJhc2UgMTYpCQlaZWxsd2VnZXIgQW5hbHl0aWNzLCBJbmMuCi0JCQkJNDA1IEJhcmNsYXkgQmx2ZC4KLQkJCQlMaW5jb2xuc2hpcmUgSWxsaW5vaXMgNjAwNjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTQ2ICAgKGhleCkJCVQuTy5NIFRFQ0hOT0xPR1kgSU5DLi4KLTAwMTI0NiAgICAgKGJhc2UgMTYpCQlULk8uTSBURUNITk9MT0dZIElOQy4uCi0JCQkJOTA2IFdvb2xpbSBFLWJpeiBDZW50ZXIgMiwKLQkJCQlHdXJvLTNEb25nCi0JCQkJU2VvdWwgR3Vyby1HdSAxODQtMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi00NyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxMjQ3ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pLUNpdHkgR3llb25nLUJ1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTQ4ICAgKGhleCkJCUVNQyBDb3Jwb3JhdGlvbiAoS2FzaHlhKQotMDAxMjQ4ICAgICAoYmFzZSAxNikJCUVNQyBDb3Jwb3JhdGlvbiAoS2FzaHlhKQotCQkJCTE3NiBTb3V0aCBTdHJlZXQKLQkJCQlIb3BraW50b24gTUEgMDE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTQ5ICAgKGhleCkJCURlbHRhIEVsZXR0cm9uaWNhIFMucC5BLgotMDAxMjQ5ICAgICAoYmFzZSAxNikJCURlbHRhIEVsZXR0cm9uaWNhIFMucC5BLgotCQkJCVZpYSBBc3RpY28gNDEKLQkJCQlWYXJlc2UgIDIxMTAwCi0JCQkJSVRBTFkKLQotMDAtMTItNEEgICAoaGV4KQkJRGVkaWNhdGVkIERldmljZXMsIEluYy4KLTAwMTI0QSAgICAgKGJhc2UgMTYpCQlEZWRpY2F0ZWQgRGV2aWNlcywgSW5jLgotCQkJCTU2ODAgRS4gRnJhbmtsaW4KLQkJCQlTdWl0ZSAyNTAKLQkJCQlOYW1wYSBJZGFobyA4MzY4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNEIgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTI0QiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCUdhdXN0YWRhbGxlZW4gMjEKLQkJCQlUZXhhcyBJbnN0cnVtZW50cyBOb3J3YXkgQVMKLQkJCQlPc2xvICBOLTAzNDkKLQkJCQlOT1JXQVkKLQotMDAtMTItNEMgICAoaGV4KQkJQkJXTSBDb3Jwb3JhdGlvbgotMDAxMjRDICAgICAoYmFzZSAxNikJCUJCV00gQ29ycG9yYXRpb24KLQkJCQk2RiwgTm8uIDU3OCwgUnVpIEd1YW5nIFJvYWQsIE5laSBIdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi00RCAgIChoZXgpCQlJbmR1Y29uIEJWCi0wMDEyNEQgICAgIChiYXNlIDE2KQkJSW5kdWNvbiBCVgotCQkJCUtlcmtsYWFuIDI2Ci0JCQkJTGVpbXVpZGVuIFpIIDI1NDEgQ0cKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMi00RSAgIChoZXgpCQlYQUMgQVVUT01BVElPTiBDT1JQLgotMDAxMjRFICAgICAoYmFzZSAxNikJCVhBQyBBVVRPTUFUSU9OIENPUlAuCi0JCQkJNEYsIDMwIEluZHVzdHJ5IEUuIFJvYWQgSVgKLQkJCQlTY2llbmNlIFBhcmsKLQkJCQlIc2luLUNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi00RiAgIChoZXgpCQlUeWNvIFRoZXJtYWwgQ29udHJvbHMgTExDLgotMDAxMjRGICAgICAoYmFzZSAxNikJCVR5Y28gVGhlcm1hbCBDb250cm9scyBMTEMuCi0JCQkJMTEwMDQgLSAxNzQgU3QuCi0JCQkJRWRtb250b24gQWxiZXJ0YSBUNVMgMlAzCi0JCQkJQ0FOQURBCi0KLTAwLTEyLTUwICAgKGhleCkJCVRva3lvIEFpcmNhZnQgSW5zdHJ1bWVudCBDby4sIEx0ZC4KLTAwMTI1MCAgICAgKGJhc2UgMTYpCQlUb2t5byBBaXJjYWZ0IEluc3RydW1lbnQgQ28uLCBMdGQuCi0JCQkJMS0zNS0xLCBJenVtaS1Ib25jaG8KLQkJCQlLb21hZS1TaGkgVG9reW8gMjAxLTg1NTUKLQkJCQlKQVBBTgotCi0wMC0xMi01MSAgIChoZXgpCQlTSUxJTksKLTAwMTI1MSAgICAgKGJhc2UgMTYpCQlTSUxJTksKLQkJCQkxMyBSVUUgUE9NRVlTCi0JCQkJTEUgVEFJTExBTiAgMzMzMjAKLQkJCQlGUkFOQ0UKLQotMDAtMTItNTIgICAoaGV4KQkJQ2l0cm9uaXgsIExMQwotMDAxMjUyICAgICAoYmFzZSAxNikJCUNpdHJvbml4LCBMTEMKLQkJCQkzMDMwIFNFIExvb3AgODIwCi0JCQkJRm9ydCBXb3J0aCBUZXhhcyA3NjE0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNTMgICAoaGV4KQkJQXVkaW9EZXYgQUIKLTAwMTI1MyAgICAgKGJhc2UgMTYpCQlBdWRpb0RldiBBQgotCQkJCUthYmluZ2F0YW4gOQotCQkJCU1hbG1vICBTRS0yMTIgMzkKLQkJCQlTV0VERU4KLQotMDAtMTItNTQgICAoaGV4KQkJU3BlY3RyYSBUZWNobm9sb2dpZXMgSG9sZGluZ3MgQ29tcGFueSBMdGQKLTAwMTI1NCAgICAgKGJhc2UgMTYpCQlTcGVjdHJhIFRlY2hub2xvZ2llcyBIb2xkaW5ncyBDb21wYW55IEx0ZAotCQkJCVVuaXQgMTMwMS0wOSwgVG93ZXIgSUkKLQkJCQlQYWNpZmljIENlbnR1cnkgUGxhY2UsIE1vbmdrb2sKLQkJCQk4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMTItNTUgICAoaGV4KQkJTmV0RWZmZWN0IEluY29ycG9yYXRlZAotMDAxMjU1ICAgICAoYmFzZSAxNikJCU5ldEVmZmVjdCBJbmNvcnBvcmF0ZWQKLQkJCQk5MjExIFdhdGVyZm9yZCBDZW50cmUgQmx2ZAotCQkJCVN1aXRlIDEwMAotCQkJCUF1c3RpbiBUZXhhcyA3ODc1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNTYgICAoaGV4KQkJTEcgSU5GT1JNQVRJT04gJiBDT01NLgotMDAxMjU2ICAgICAoYmFzZSAxNikJCUxHIElORk9STUFUSU9OICYgQ09NTS4KLQkJCQk0NTktOSxLQVNBTi1ET05HLEtVTUNIT04tR1UsCi0JCQkJU0VPVUwgIDE1My0wMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItNTcgICAoaGV4KQkJTGVhcENvbW0gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgSW5jLgotMDAxMjU3ICAgICAoYmFzZSAxNikJCUxlYXBDb21tIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIEluYy4KLQkJCQlSTTE4MDQtMDUgU291dGggVG93ZXIgSG9uZyBLb25nIFBsYXphLCBOby4yODMgSHVhaWhhaSBaaG9uZyBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDAyMQotCQkJCUNISU5BCi0KLTAwLTEyLTU4ICAgKGhleCkJCUFjdGl2aXMgUG9sc2thCi0wMDEyNTggICAgIChiYXNlIDE2KQkJQWN0aXZpcyBQb2xza2EKLQkJCQlTd2llcnphd3NrYSA1Ci0JCQkJUG96bmFuIFdpZWxrb3BvbHNrYSA2MC0zMjEKLQkJCQlQT0xBTkQKLQotMDAtMTItNTkgICAoaGV4KQkJVEhFUk1PIEVMRUNUUk9OIEtBUkxTUlVIRQotMDAxMjU5ICAgICAoYmFzZSAxNikJCVRIRVJNTyBFTEVDVFJPTiBLQVJMU1JVSEUKLQkJCQlESUVTRUxTVFJBU1NFIDQKLQkJCQlLQVJMU1JVSEUgQkFERU4gV1VSVEVNQkVSRyA3NjIyNwotCQkJCUdFUk1BTlkKLQotMDAtMTItNUEgICAoaGV4KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0wMDEyNUEgICAgIChiYXNlIDE2KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0JCQkJT25lIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTItNjM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNUIgICAoaGV4KQkJS0FJTUVJIEVMRUNUUk9OSQotMDAxMjVCICAgICAoYmFzZSAxNikJCUtBSU1FSSBFTEVDVFJPTkkKLQkJCQkxNC0zRiwgTk8uODEsU0VDLiAxLEhTSU4tVEFJLVdVIFJPQUQsSFNJQ0hJSCwKLQkJCQlUQUlQRUkgSFNJRU4gSFNJQ0hJSCAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLTVDICAgKGhleCkJCUdyZWVuIEhpbGxzIFNvZnR3YXJlLCBJbmMuCi0wMDEyNUMgICAgIChiYXNlIDE2KQkJR3JlZW4gSGlsbHMgU29mdHdhcmUsIEluYy4KLQkJCQkzMCBXZXN0IFNvbGEgU3RyZWV0Ci0JCQkJU2FudGEgQmFyYmFyYSBDQSA5MzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNUQgICAoaGV4KQkJQ3liZXJOZXQgSW5jLgotMDAxMjVEICAgICAoYmFzZSAxNikJCUN5YmVyTmV0IEluYy4KLQkJCQkjMjA1LCBMb3R0ZSBTdW50ZWNoIENpdHksIDUxMy0xNQotCQkJCVNhbmdkYWV3b24tZG9uZywgQ2h1bmd3b24tZ3UKLQkJCQlTdW5nbmFtIEt5dW5nZ2kgNDYyLTgwNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi01RSAgIChoZXgpCQlDQUVOCi0wMDEyNUUgICAgIChiYXNlIDE2KQkJQ0FFTgotCQkJCXZpYSBWZXRyYWlhLCAxMQotCQkJCVZpYXJlZ2dpbyBMVUNDQSA1NTA0OQotCQkJCUlUQUxZCi0KLTAwLTEyLTVGICAgKGhleCkJCUFXSU5EIEluYy4KLTAwMTI1RiAgICAgKGJhc2UgMTYpCQlBV0lORCBJbmMuCi0JCQkJMTdGLiwgTm8uIDg4Ni01LCBKdW5namVuZyBSZAotCQkJCUp1bmdoZSBDaXR5Ci0JCQkJVGFpcGVpIENvdW50eSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi02MCAgIChoZXgpCQlTdGFudG9uIE1hZ25ldGljcyxpbmMuCi0wMDEyNjAgICAgIChiYXNlIDE2KQkJU3RhbnRvbiBNYWduZXRpY3MsaW5jLgotCQkJCTMwMDAgU1cgNDJuZCBTdHJlZXQKLQkJCQlIb2xseXdvb2QgRkwgMzMzMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTYxICAgKGhleCkJCUFkYXB0aXgsIEluYwotMDAxMjYxICAgICAoYmFzZSAxNikJCUFkYXB0aXgsIEluYwotCQkJCTE0MDcgMTE2dGggQXZlLiBORQotCQkJCVN1aXRlIEUyMTAKLQkJCQlCZWxsZXZ1ZSBXQSA5ODAwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNjIgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTI2MiAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTItNjMgICAoaGV4KQkJRGF0YSBWb2ljZSBUZWNobm9sb2dpZXMgR21iSAotMDAxMjYzICAgICAoYmFzZSAxNikJCURhdGEgVm9pY2UgVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlTdG9ja2hvbG1lciBBbGxlZSAzMmIKLQkJCQlEb3J0bXVuZCBOUlcgRC00NDI2OQotCQkJCUdFUk1BTlkKLQotMDAtMTItNjQgICAoaGV4KQkJZGF1bSBlbGVjdHJvbmljIGdtYmgKLTAwMTI2NCAgICAgKGJhc2UgMTYpCQlkYXVtIGVsZWN0cm9uaWMgZ21iaAotCQkJCWZsdWdwbGF0enN0ci4gMTAwCi0JCQkJRnVlcnRoIEJhdmFyaWEgOTA3NjgKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTY1ICAgKGhleCkJCUVuZXJkeW5lIFRlY2hub2xvZ2llcywgSW5jLgotMDAxMjY1ICAgICAoYmFzZSAxNikJCUVuZXJkeW5lIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE5MzUgQ29yZGVsbCBDb3VydAotCQkJCUVsIENham9uIENBIDkyMDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi02NiAgIChoZXgpCQlTd2lzc2NvbSBIb3NwaXRhbGl0eSBTZXJ2aWNlcyBTQQotMDAxMjY2ICAgICAoYmFzZSAxNikJCVN3aXNzY29tIEhvc3BpdGFsaXR5IFNlcnZpY2VzIFNBCi0JCQkJQ2hlbWluIGRlIGwnRXRhbmcgNjUKLQkJCQkxMjExIEdlbmV2YSAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xMi02NyAgIChoZXgpCQlNYXRzdXNoaXRhIEVsZWN0cm9uaWMgQ29tcG9uZW50cyBDby4sIEx0ZC4KLTAwMTI2NyAgICAgKGJhc2UgMTYpCQlNYXRzdXNoaXRhIEVsZWN0cm9uaWMgQ29tcG9uZW50cyBDby4sIEx0ZC4KLQkJCQkxMDA2IEthZG9tYQotCQkJCUthZG9tYS1DaXR5IE9zYWthIDU3MS04NTA2Ci0JCQkJSkFQQU4KLQotMDAtMTItNjggICAoaGV4KQkJSVBTIGQuby5vLgotMDAxMjY4ICAgICAoYmFzZSAxNikJCUlQUyBkLm8uby4KLQkJCQlDLiBManVibGphbnNrZSBicmlnYWRlIDE3Ci0JCQkJTGp1YmxqYW5hICBTSS0xMDAwCi0JCQkJU0xPVkVOSUEKLQotMDAtMTItNjkgICAoaGV4KQkJVmFsdWUgRWxlY3Ryb25pY3MKLTAwMTI2OSAgICAgKGJhc2UgMTYpCQlWYWx1ZSBFbGVjdHJvbmljcwotCQkJCURvbmcta3dhbiBCL0QsIDVGLCAxNTY2LTIKLQkJCQlTZW9jaG8tZG9uZywgU2VvY2hvLWd1Ci0JCQkJc2VvdWwgIDEzNy04NzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItNkEgICAoaGV4KQkJT1BUT0VMRUNUUk9OSUNTIENvLiwgTHRkLgotMDAxMjZBICAgICAoYmFzZSAxNikJCU9QVE9FTEVDVFJPTklDUyBDby4sIEx0ZC4KLQkJCQkzLTFLYW1pYW9raW5pc2hpIDEtY2hvbWUKLQkJCQlLYXdhZ3VjaGkgU2FpdGFtYSBQcmVmLiAzMzMtMDg0NQotCQkJCUpBUEFOCi0KLTAwLTEyLTZCICAgKGhleCkJCUFzY2FsYWRlIENvbW11bmljYXRpb25zIExpbWl0ZWQKLTAwMTI2QiAgICAgKGJhc2UgMTYpCQlBc2NhbGFkZSBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0JCQkJVW5pdCAxMC0xMSwgMzUvRiwgQ2FibGUgVFYgVG93ZXIsCi0JCQkJTm8uOSBIb2kgU2hpbmcgUm9hZCwgVHN1ZW4gV2FuCi0JCQkJSE9ORyBLT05HCi0KLTAwLTEyLTZDICAgKGhleCkJCVZpc29uaWMgTHRkLgotMDAxMjZDICAgICAoYmFzZSAxNikJCVZpc29uaWMgTHRkLgotCQkJCTI0IEhhYmFyemVsIFN0LgotCQkJCVRlbCBBdml2ICA2OTcxMAotCQkJCUlTUkFFTAotCi0wMC0xMi02RCAgIChoZXgpCQlVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIEJlcmtlbGV5Ci0wMDEyNkQgICAgIChiYXNlIDE2KQkJVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLCBCZXJrZWxleQotCQkJCUVFQ1MgRGVwYXJ0bWVudAotCQkJCUJlcmtlbGV5IENBIDk0NzIwLTE3NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTZFICAgKGhleCkJCVNlaWRlbCBFbGVrdHJvbmlrIEdtYkggTmZnLktHCi0wMDEyNkUgICAgIChiYXNlIDE2KQkJU2VpZGVsIEVsZWt0cm9uaWsgR21iSCBOZmcuS0cKLQkJCQlGcmF1ZW50YWxlcnN0cmFzc2UgMTAwCi0JCQkJRGV1dHNjaGxhbmRzYmVyZyBTdGVpZXJtYXJrIDg1MzAKLQkJCQlBVVNUUklBCi0KLTAwLTEyLTZGICAgKGhleCkJCVJheXNvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMjZGICAgICAoYmFzZSAxNikJCVJheXNvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTFGIE5vLjkgUiZEIFJkLklJLCBTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW4tQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLTcwICAgKGhleCkJCU5HRVMgRGVucm8gU3lzdGVtcwotMDAxMjcwICAgICAoYmFzZSAxNikJCU5HRVMgRGVucm8gU3lzdGVtcwotCQkJCTkzMTggR2FpdGhlciBSb2FkCi0JCQkJR2FpdGhlcnNidXJnIE1EIDIwODc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi03MSAgIChoZXgpCQlNZWFzdXJlbWVudCBDb21wdXRpbmcgQ29ycAotMDAxMjcxICAgICAoYmFzZSAxNikJCU1lYXN1cmVtZW50IENvbXB1dGluZyBDb3JwCi0JCQkJMTYgQ29tbWVyY2UgQmx2ZAotCQkJCU1pZGRsZWJvcm8gTUEgMDIzNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTcyICAgKGhleCkJCVJlZHV4IENvbW11bmljYXRpb25zIEx0ZC4KLTAwMTI3MiAgICAgKGJhc2UgMTYpCQlSZWR1eCBDb21tdW5pY2F0aW9ucyBMdGQuCi0JCQkJUE9CIDEwMQotCQkJCU1vZGlpbiAgNzE3MDAKLQkJCQlJU1JBRUwKLQotMDAtMTItNzMgICAoaGV4KQkJU3Rva2UgSW5jCi0wMDEyNzMgICAgIChiYXNlIDE2KQkJU3Rva2UgSW5jCi0JCQkJMjE4OSBMZWdob3JuIFN0cmVldAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTc0ICAgKGhleCkJCU5JVCBsYWIKLTAwMTI3NCAgICAgKGJhc2UgMTYpCQlOSVQgbGFiCi0JCQkJU2tvcmlueSBzdHIuLCA2NS0zCi0JCQkJTWluc2sgTWluc2theWEgb2JsLiAyMjAwMTMKLQkJCQlCRUxBUlVTCi0KLTAwLTEyLTc1ICAgKGhleCkJCVNlbnRpbGxhIENvcnBvcmF0aW9uCi0wMDEyNzUgICAgIChiYXNlIDE2KQkJU2VudGlsbGEgQ29ycG9yYXRpb24KLQkJCQkyMDEgTWFyc2hhbGwgU3RyZWV0Ci0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi03NiAgIChoZXgpCQlDRyBQb3dlciBTeXN0ZW1zIElyZWxhbmQgTGltaXRlZAotMDAxMjc2ICAgICAoYmFzZSAxNikJCUNHIFBvd2VyIFN5c3RlbXMgSXJlbGFuZCBMaW1pdGVkCi0JCQkJSGVyYmVydCBIb3VzZS4sIEhhcm1vbnkgUm93LCAKLQkJCQlEdWJsaW4gIEQyCi0JCQkJSVJFTEFORAotCi0wMC0xMi03NyAgIChoZXgpCQlLb3Jlbml4IFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMTI3NyAgICAgKGJhc2UgMTYpCQlLb3Jlbml4IFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQkxMUYtMSwgTm8uIDEwOCwgTWluUXVhbiBSZC4KLQkJCQlYaW5kaWFuIENpdHkgVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItNzggICAoaGV4KQkJSW50ZXJuYXRpb25hbCBCYXIgQ29kZQotMDAxMjc4ICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgQmFyIENvZGUKLQkJCQkxNjAgT2FrIFN0cmVldAotCQkJCUdsYXN0b25idXJ5IENUIDA2MDMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi03OSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMTI3OSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OSBTb3V0aAotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItN0EgICAoaGV4KQkJU2FueXUgSW5kdXN0cnkgQ28uLEx0ZC4KLTAwMTI3QSAgICAgKGJhc2UgMTYpCQlTYW55dSBJbmR1c3RyeSBDby4sTHRkLgotCQkJCU1pZG9yaS1rdSBIYWt1c2FuMS0xMS0xMQotCQkJCVlva29oYW1hLXNoaSBLYW5hZ2F3YS1rZW4gMjI2LTAwMDYKLQkJCQlKQVBBTgotCi0wMC0xMi03QiAgIChoZXgpCQlWSUEgTmV0d29ya2luZyBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTI3QiAgICAgKGJhc2UgMTYpCQlWSUEgTmV0d29ya2luZyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4Riw1MzMsIENodW5nLUNoZW5nIFJvYWQsIEhzaW4tVGllbgotCQkJCVRhaXBlaSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi03QyAgIChoZXgpCQlTV0VHT04gQUIKLTAwMTI3QyAgICAgKGJhc2UgMTYpCQlTV0VHT04gQUIKLQkJCQlCb3ggMzAwCi0JCQkJS1ZBTlVNIFZBU1RSQSBHT1RBTEFORCBTRSA1MzUgMjMKLQkJCQlTV0VERU4KLQotMDAtMTItN0QgICAoaGV4KQkJTW9iaWxlQXJpYQotMDAxMjdEICAgICAoYmFzZSAxNikJCU1vYmlsZUFyaWEKLQkJCQk4MDAgVyBFbCBDYW1pbm8gUmVhbCAjMjQwCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItN0UgICAoaGV4KQkJRGlnaXRhbCBMaWZlc3R5bGVzIEdyb3VwLCBJbmMuCi0wMDEyN0UgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBMaWZlc3R5bGVzIEdyb3VwLCBJbmMuCi0JCQkJODAxIFNvdXRoIFNlbnRvdXMgQXZlLgotCQkJCUNpdHkgb2YgSW5kdXN0cnkgQ0EgOTE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTdGICAgKGhleCkJCUNpc2NvCi0wMDEyN0YgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItODAgICAoaGV4KQkJQ2lzY28KLTAwMTI4MCAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi04MSAgIChoZXgpCQlNYXJjaCBOZXR3b3JrcyBTLnAuQS4KLTAwMTI4MSAgICAgKGJhc2UgMTYpCQlNYXJjaCBOZXR3b3JrcyBTLnAuQS4KLQkJCQlWaWEgRGVpIExhdm9yYXRvcmkgQXV0b2JpYW5jaGkgbi4gMSwKLQkJCQlEZXNpbyBNaWxhbm8gMjAwMzMKLQkJCQlJVEFMWQotCi0wMC0xMi04MiAgIChoZXgpCQlRb3ZpYQotMDAxMjgyICAgICAoYmFzZSAxNikJCVFvdmlhCi0JCQkJNzQ3MCBOZXcgVGVjaG5vbG9neSBXYXkKLQkJCQlTdWl0ZSBFCi0JCQkJRnJlZGVyaWNrIE1EIDIxNzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi04MyAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMTI4MyAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xMi04NCAgIChoZXgpCQlMYWIzMyBTcmwKLTAwMTI4NCAgICAgKGJhc2UgMTYpCQlMYWIzMyBTcmwKLQkJCQlDLnNvIEYuIFBlcnJvbmUgMjQKLQkJCQlHZW5vYSBHRSAxNjE1MgotCQkJCUlUQUxZCi0KLTAwLTEyLTg1ICAgKGhleCkJCUdpem1vbmRvIEV1cm9wZSBMdGQKLTAwMTI4NSAgICAgKGJhc2UgMTYpCQlHaXptb25kbyBFdXJvcGUgTHRkCi0JCQkJMSBNZWFkb3cgR2F0ZSBBdmVudWUKLQkJCQlGYXJuYm9yb3VnaCBCdXNpbmVzcyBQYXJrCi0JCQkJRmFybmJvcm91Z2ggSGFtcHNoaXJlIEdVMTQgNkZHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTItODYgICAoaGV4KQkJRU5ERVZDTyBDT1JQCi0wMDEyODYgICAgIChiYXNlIDE2KQkJRU5ERVZDTyBDT1JQCi0JCQkJMzA3MDAgUkFOQ0hPIFZJRUpPIFJPQUQKLQkJCQlTQU4gSlVBTiBDQVBJU1RSQU5PIENBIDkyNjc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi04NyAgIChoZXgpCQlEaWdpdGFsIEV2ZXJ5d2hlcmUgVW50ZXJoYWx0dW5nc2VsZWt0cm9uaWsgR21iSAotMDAxMjg3ICAgICAoYmFzZSAxNikJCURpZ2l0YWwgRXZlcnl3aGVyZSBVbnRlcmhhbHR1bmdzZWxla3Ryb25payBHbWJICi0JCQkJTWFyaWEgR2FpbGVyIFN0cmFzc2UgMTYKLQkJCQlWaWxsYWNoIEthcm50ZW4gOTUwMAotCQkJCUFVU1RSSUEKLQotMDAtMTItODggICAoaGV4KQkJMldpcmUsIEluYwotMDAxMjg4ICAgICAoYmFzZSAxNikJCTJXaXJlLCBJbmMKLQkJCQkxNzA0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi04OSAgIChoZXgpCQlBZHZhbmNlIFN0ZXJpbGl6YXRpb24gUHJvZHVjdHMKLTAwMTI4OSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlIFN0ZXJpbGl6YXRpb24gUHJvZHVjdHMKLQkJCQkzMyBUZWNobm9sb2d5IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLThBICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxMjhBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NSBOLiBVUyBId3kgNDUKLQkJCQlSb29tIG5vLiBNVy0xMTMKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLThCICAgKGhleCkJCVNlbnNvcnkgTmV0d29ya3MgSW5jCi0wMDEyOEIgICAgIChiYXNlIDE2KQkJU2Vuc29yeSBOZXR3b3JrcyBJbmMKLQkJCQlMZXZlbCA2LCAxNDAgV2lsbGlhbSBTdAotCQkJCUVhc3QgU3lkbmV5IE5TVyAyMDExCi0JCQkJQVVTVFJBTElBCi0KLTAwLTEyLThDICAgKGhleCkJCVdvb2R3YXJkIEdvdmVybm9yCi0wMDEyOEMgICAgIChiYXNlIDE2KQkJV29vZHdhcmQgR292ZXJub3IKLQkJCQkxMDAwIEUuIERyYWtlIFJvYWQKLQkJCQlGdC4gQ29sbGlucyBDTyA4MDUyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItOEQgICAoaGV4KQkJU1RCIERhdGVuc2VydmljZSBHbWJICi0wMDEyOEQgICAgIChiYXNlIDE2KQkJU1RCIERhdGVuc2VydmljZSBHbWJICi0JCQkJV2VpbnNiZXJnc3RyYXNzZSAxOTAKLQkJCQlLb2xuIE5SVyA1MDgyNQotCQkJCUdFUk1BTlkKLQotMDAtMTItOEUgICAoaGV4KQkJUS1GcmVlIEFTQQotMDAxMjhFICAgICAoYmFzZSAxNikJCVEtRnJlZSBBU0EKLQkJCQlUaC4gT3dlc2Vuc2d0LiAzNWMKLQkJCQlUcm9uZGhlaW0gU1QgNzQ0MwotCQkJCU5PUldBWQotCi0wMC0xMi04RiAgIChoZXgpCQlNb250aWxpbwotMDAxMjhGICAgICAoYmFzZSAxNikJCU1vbnRpbGlvCi0JCQkJMSBtYXNraXQgc3QuCi0JCQkJSGVydHplbGlhICA0Njc2MwotCQkJCUlTUkFFTAotCi0wMC0xMi05MCAgIChoZXgpCQlLWU9XQSBFbGVjdHJpYyAmIE1hY2hpbmVyeSBDb3JwLgotMDAxMjkwICAgICAoYmFzZSAxNikJCUtZT1dBIEVsZWN0cmljICYgTWFjaGluZXJ5IENvcnAuCi0JCQkJNC04LTE2LE1hc3VpenVtaQotCQkJCUthbmF6YXdhIElzaGlrYXdhIDkyMS04MDI1Ci0JCQkJSkFQQU4KLQotMDAtMTItOTEgICAoaGV4KQkJS1dTIENvbXB1dGVyc3lzdGVtZSBHbWJICi0wMDEyOTEgICAgIChiYXNlIDE2KQkJS1dTIENvbXB1dGVyc3lzdGVtZSBHbWJICi0JCQkJQ2FybCBaZWlzcyBTdHIuIDEKLQkJCQlFdHRsaW5nZW4gQlcgNzYyNzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTkyICAgKGhleCkJCUdyaWZmaW4gVGVjaG5vbG9neQotMDAxMjkyICAgICAoYmFzZSAxNikJCUdyaWZmaW4gVGVjaG5vbG9neQotCQkJCTE5MzAgQWlyIExhbmUgRHJpdmUKLQkJCQlOYXNodmlsbGUgVE4gMzcyMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTkzICAgKGhleCkJCUdFIEVuZXJneQotMDAxMjkzICAgICAoYmFzZSAxNikJCUdFIEVuZXJneQotCQkJCTE1MDEgUm9hbm9rZSBCbHZkLgotCQkJCVJvb20gMjgzCi0JCQkJU2FsZW0gVkEgMjQxNTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTk0ICAgKGhleCkJCVNVTUlUT01PIEVMRUNUUklDIERFVklDRSBJTk5PVkFUSU9OUywgSU5DCi0wMDEyOTQgICAgIChiYXNlIDE2KQkJU1VNSVRPTU8gRUxFQ1RSSUMgREVWSUNFIElOTk9WQVRJT05TLCBJTkMKLQkJCQkxMDAwIEthbWlzdWtpYXdhcmEsU2hvd2EtY2hvCi0JCQkJTmFrYWtvbWEtZ3VuIFlhbWFuYXNoaSA0MDktMzg4MwotCQkJCUpBUEFOCi0KLTAwLTEyLTk1ICAgKGhleCkJCUFpd2FyZSBJbmMuCi0wMDEyOTUgICAgIChiYXNlIDE2KQkJQWl3YXJlIEluYy4KLQkJCQlKLVRvd2VyIDJGCi0JCQkJMS0xIE5pa2tvY2hvCi0JCQkJRnVjaHUtc2hpIFRva3lvIDE4My0wMDQ0Ci0JCQkJSkFQQU4KLQotMDAtMTItOTYgICAoaGV4KQkJQWRkbG9naXgKLTAwMTI5NiAgICAgKGJhc2UgMTYpCQlBZGRsb2dpeAotCQkJCTQ1OSBXYWxkCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi05NyAgIChoZXgpCQlPMk1pY3JvLCBJbmMuCi0wMDEyOTcgICAgIChiYXNlIDE2KQkJTzJNaWNybywgSW5jLgotCQkJCTMxMTggUGF0cmljayBIZW5yeSBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi05OCAgIChoZXgpCQlNSUNPIEVMRUNUUklDKFNIRU5aSEVOKSBMSU1JVEVECi0wMDEyOTggICAgIChiYXNlIDE2KQkJTUlDTyBFTEVDVFJJQyhTSEVOWkhFTikgTElNSVRFRAotCQkJCTIxL0YgQmxvY2sgQSwgSGFpbHJ1biBDb21wbGV4LCA2MDIxIFNoZW5OYW4gQmx2ZC4sIFNoZW5aaGVuLCBQUiBDaGluYS4KLQkJCQlTSEVOWkhFTiBHVUFOR0RPTkcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMTItOTkgICAoaGV4KQkJS3RlY2ggVGVsZWNvbW11bmljYXRpb25zIEluYwotMDAxMjk5ICAgICAoYmFzZSAxNikJCUt0ZWNoIFRlbGVjb21tdW5pY2F0aW9ucyBJbmMKLQkJCQkyMTU0MCBQcmFpcmllIFN0cmVldCBVbml0IEIKLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi05QSAgIChoZXgpCQlJUlQgRWxlY3Ryb25pY3MgUHR5IEx0ZAotMDAxMjlBICAgICAoYmFzZSAxNikJCUlSVCBFbGVjdHJvbmljcyBQdHkgTHRkCi0JCQkJMjYgSG90aGFtIFBhcmFkZQotCQkJCUFydGFybW9uIE5TVyAyMDY0Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTEyLTlCICAgKGhleCkJCUUyUyBFbGVjdHJvbmljIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgUy5MLgotMDAxMjlCICAgICAoYmFzZSAxNikJCUUyUyBFbGVjdHJvbmljIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgUy5MLgotCQkJCVNhbnQgRmVycmFuIDEwCi0JCQkJQmFyY2Vsb25hICAwODAzMQotCQkJCVNQQUlOCi0KLTAwLTEyLTlDICAgKGhleCkJCVl1bGluZXQKLTAwMTI5QyAgICAgKGJhc2UgMTYpCQlZdWxpbmV0Ci0JCQkJMTFGLCBTYW1ob21vb2xzYW4gQi9EIDI3NS02LCBZYW5namFlLWRvbmcKLQkJCQlTZW9jaG8gU2VvdWwgMTM3LTk0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi05RCAgIChoZXgpCQlGaXJzdCBJbnRlcm5hdGlvbmFsIENvbXB1dGVyIGRvIEJyYXNpbAotMDAxMjlEICAgICAoYmFzZSAxNikJCUZpcnN0IEludGVybmF0aW9uYWwgQ29tcHV0ZXIgZG8gQnJhc2lsCi0JCQkJUm9kb3ZpYSBCUiA0NTkKLQkJCQlrbSAxMjEgLSBEaXN0cml0byBJbmR1c3RyaWFsCi0JCQkJU2FudGEgUml0YSBkbyBTYXB1Y2FpIE1pbmFzIEdlcmFpcyAKLQkJCQlCUkFaSUwKLQotMDAtMTItOUUgICAoaGV4KQkJU3VyZiBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDEyOUUgICAgIChiYXNlIDE2KQkJU3VyZiBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJUm9vbSAzMTMsIDNGLCBCbGRnLjUyLCBOby4gMTk1LCBDaHVuZyBIc2luZyBSZC4sIFNlYyA0LCBDaHV0dW5nLCBIc2luQ2h1LCBUYWl3YW4KLQkJCQlIc2luQ2h1ICAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLTlGICAgKGhleCkJCVJBRSBTeXN0ZW1zLCBJbmMuCi0wMDEyOUYgICAgIChiYXNlIDE2KQkJUkFFIFN5c3RlbXMsIEluYy4KLQkJCQkxMzM5IE1vZmZldHQgUGFyayBEcml2ZQotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1BMCAgIChoZXgpCQlOZW9NZXJpZGlhbiBTZG4gQmhkCi0wMDEyQTAgICAgIChiYXNlIDE2KQkJTmVvTWVyaWRpYW4gU2RuIEJoZAotCQkJCTNBLTEsIFBlcmRhbmEgVGhlIFBsYWNlCi0JCQkJSmFsYW4gUEpVIDgvNUcKLQkJCQlCYW5kYXIgRGFtYW5zYXJhIFBlcmRhbmEgU2VsYW5nb3IgNDc4MjAKLQkJCQlNQUxBWVNJQQotCi0wMC0xMi1BMSAgIChoZXgpCQlCbHVlUGFja2V0IENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDAxMkExICAgICAoYmFzZSAxNikJCUJsdWVQYWNrZXQgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJMTBGLTEsIE5vLiA0MjAsIFNlYy4gMSwgS2VlbHVuZyBSZC4sIDExMCwKLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItQTIgICAoaGV4KQkJVklUQQotMDAxMkEyICAgICAoYmFzZSAxNikJCVZJVEEKLQkJCQlQTyBCb3ggMTk2NTgKLQkJCQlGb3VudGFpbiBIaWxscyBBWiA4NTI2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQTMgICAoaGV4KQkJVHJ1c3QgSW50ZXJuYXRpb25hbCBCLlYuCi0wMDEyQTMgICAgIChiYXNlIDE2KQkJVHJ1c3QgSW50ZXJuYXRpb25hbCBCLlYuCi0JCQkJTGFhbiB2YW4gQmFyY2Vsb25hIDYwMAotCQkJCURvcmRyZWNodCBadWlkIGhvbGxhbmQgMzMxNyBERAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTEyLUE0ICAgKGhleCkJCVRoaW5nTWFnaWMsIExMQwotMDAxMkE0ICAgICAoYmFzZSAxNikJCVRoaW5nTWFnaWMsIExMQwotCQkJCU9uZSBCcm9hZHdheQotCQkJCTE0dGggRmxvb3IKLQkJCQlDYW1icmlkZ2UgTUEgMDIxNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUE1ICAgKGhleCkJCVN0YXJnZW4sIEluYy4KLTAwMTJBNSAgICAgKGJhc2UgMTYpCQlTdGFyZ2VuLCBJbmMuCi0JCQkJMjI1IENlZGFyIEhpbGwgU3RyZWV0Ci0JCQkJTWFybGJvcm91Z2ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUE2ICAgKGhleCkJCURvbGJ5IEF1c3RyYWxpYQotMDAxMkE2ICAgICAoYmFzZSAxNikJCURvbGJ5IEF1c3RyYWxpYQotCQkJCUxldmVsIDYKLQkJCQkxMzYgQ2hhbG1lcnMgU3RyZWV0Ci0JCQkJU3VycnkgSGlsbHMgTlNXIDIwMTAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTItQTcgICAoaGV4KQkJSVNSIFRFQ0hOT0xPR0lFUyBJbmMKLTAwMTJBNyAgICAgKGJhc2UgMTYpCQlJU1IgVEVDSE5PTE9HSUVTIEluYwotCQkJCTExMDAsIHJ1ZSBOb3RyZS1EYW1lIE91ZXN0Ci0JCQkJTW9udHJlYWwgUXVlYmVjIEgzQyAxSzMKLQkJCQlDQU5BREEKLQotMDAtMTItQTggICAoaGV4KQkJaW50ZWMgR21iSAotMDAxMkE4ICAgICAoYmFzZSAxNikJCWludGVjIEdtYkgKLQkJCQlSYWhtZWRlc3RyLiA5MAotCQkJCUx1ZWRlbnNjaGVpZCBOUlcgNTg1MDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLUE5ICAgKGhleCkJCTNDb20gTHRkCi0wMDEyQTkgICAgIChiYXNlIDE2KQkJM0NvbSBMdGQKLQkJCQlQZW9wbGVidWlsZGluZyAyCi0JCQkJUGVvcGxlYnVpbGRpbmcgRXN0YXRlLCBNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEyLUFBICAgKGhleCkJCUlFRSwgSW5jLgotMDAxMkFBICAgICAoYmFzZSAxNikJCUlFRSwgSW5jLgotCQkJCTc3NDAgTGVtb25hIEF2ZW51ZQotCQkJCVZhbiBOdXlzLCBDQSA5MTQwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQUIgICAoaGV4KQkJV2lMaWZlLCBJbmMuCi0wMDEyQUIgICAgIChiYXNlIDE2KQkJV2lMaWZlLCBJbmMuCi0JCQkJMTMyIEUuIDEzMDY1IFMuLCBTdWl0ZSAxNTAKLQkJCQlEcmFwZXIgVVQgODQwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUFDICAgKGhleCkJCU9OVElNRVRFSyBJTkMuCi0wMDEyQUMgICAgIChiYXNlIDE2KQkJT05USU1FVEVLIElOQy4KLQkJCQk5RmwuLE93bmVyJ3MgVG93ZXIKLQkJCQkxNi01LCBTdW5hZS1Eb25nLCBCdW5kYW5nLUd1Ci0JCQkJU3VuZ25hbS1TaSBLeXVuZ2dpLURvIDQ2My04MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItQUQgICAoaGV4KQkJSURTIEdtYkgKLTAwMTJBRCAgICAgKGJhc2UgMTYpCQlJRFMgR21iSAotCQkJCU5vYmVsc3RyLCAxOAotCQkJCUV0dGxpbmdlbiBCYWRlbi1XdXJ0dGVtYmVyZyA3NjI3NQotCQkJCUdFUk1BTlkKLQotMDAtMTItQUUgICAoaGV4KQkJSExTIEhBUkQtTElORSBTb2x1dGlvbnMgSW5jLgotMDAxMkFFICAgICAoYmFzZSAxNikJCUhMUyBIQVJELUxJTkUgU29sdXRpb25zIEluYy4KLQkJCQk1MyBNYWluIFN0cmVldAotCQkJCURvd2xpbmcgT250YXJpbyBQME0gMVIwCi0JCQkJQ0FOQURBCi0KLTAwLTEyLUFGICAgKGhleCkJCUVMUFJPIFRlY2hub2xvZ2llcwotMDAxMkFGICAgICAoYmFzZSAxNikJCUVMUFJPIFRlY2hub2xvZ2llcwotCQkJCTkgLyAxMiBCaWxsYWJvbmcgU3QuCi0JCQkJU3RhZmZvcmQgUXVlZW5zbGFuZCA0MDUzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTEyLUIwICAgKGhleCkJCUVmb3JlIE95aiAgIChQbGMpCi0wMDEyQjAgICAgIChiYXNlIDE2KQkJRWZvcmUgT3lqICAgKFBsYykKLQkJCQlRdWFydGV0dG8gQnVzaW5lc3MgUGFyawotCQkJCUxpbm5vaXR1c3RpZSA0IEIKLQkJCQlFc3BvbyAgRkkgLSAwMjYwMAotCQkJCUZJTkxBTkQKLQotMDAtMTItQjEgICAoaGV4KQkJRGFpIE5pcHBvbiBQcmludGluZyBDby4sIEx0ZAotMDAxMkIxICAgICAoYmFzZSAxNikJCURhaSBOaXBwb24gUHJpbnRpbmcgQ28uLCBMdGQKLQkJCQkyLTgtMjEsQWthYmFuZS1taW5hbWkKLQkJCQlLaXRhLWt1IFRva3lvIDExNS0wMDQ0Ci0JCQkJSkFQQU4KLQotMDAtMTItQjIgICAoaGV4KQkJQVZPTElURVMgTFRELgotMDAxMkIyICAgICAoYmFzZSAxNikJCUFWT0xJVEVTIExURC4KLQkJCQkxODQgUEFSSyBBVkVOVUUKLQkJCQlMT05ET04gIE5XMTAgN1hMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTItQjMgICAoaGV4KQkJQWR2YW5jZSBXaXJlbGVzcyBUZWNobm9sb2d5IENvcnAuCi0wMDEyQjMgICAgIChiYXNlIDE2KQkJQWR2YW5jZSBXaXJlbGVzcyBUZWNobm9sb2d5IENvcnAuCi0JCQkJMTJGIE5vLiAyNy02LCBTZWMuIDIsIENodW5nIENoZW5nIEVhc3QgUm9hZAotCQkJCVRhbXNodWkgIDI1MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItQjQgICAoaGV4KQkJV29yayBNaWNyb3dhdmUgR21iSAotMDAxMkI0ICAgICAoYmFzZSAxNikJCVdvcmsgTWljcm93YXZlIEdtYkgKLQkJCQlSYWlmZmVpc2Vuc3RyYXNzZSAxMgotCQkJCUhvbHpraXJjaGVuICA4MzYwNwotCQkJCUdFUk1BTlkKLQotMDAtMTItQjUgICAoaGV4KQkJVmlhbHRhLCBJbmMuCi0wMDEyQjUgICAgIChiYXNlIDE2KQkJVmlhbHRhLCBJbmMuCi0JCQkJNDg0NjEgRnJlbW9udCBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUI2ICAgKGhleCkJCVNhbnRhIEJhcmJhcmEgSW5mcmFyZWQsIEluYy4KLTAwMTJCNiAgICAgKGJhc2UgMTYpCQlTYW50YSBCYXJiYXJhIEluZnJhcmVkLCBJbmMuCi0JCQkJMzAgUy4gQ2FsbGUgQ2VzYXIgQ2hhdmV6Ci0JCQkJU3VpdGUgRAotCQkJCVNhbnRhIEJhcmJhcmEgQ0EgOTMxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUI3ICAgKGhleCkJCVBUVyBGcmVpYnVyZwotMDAxMkI3ICAgICAoYmFzZSAxNikJCVBUVyBGcmVpYnVyZwotCQkJCUxvZXJyYWNoZXIgU3RyYXNzZSA3Ci0JCQkJRnJlaWJ1cmcgIDc5MTE1Ci0JCQkJR0VSTUFOWQotCi0wMC0xMi1COCAgIChoZXgpCQlHMiBNaWNyb3N5c3RlbXMKLTAwMTJCOCAgICAgKGJhc2UgMTYpCQlHMiBNaWNyb3N5c3RlbXMKLQkJCQk0MDggRXVjbGlkIEF2ZQotCQkJCU9ha2xhbmQgQ0EgOTQ2MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUI5ICAgKGhleCkJCUZ1c2lvbiBEaWdpdGFsIFRlY2hub2xvZ3kKLTAwMTJCOSAgICAgKGJhc2UgMTYpCQlGdXNpb24gRGlnaXRhbCBUZWNobm9sb2d5Ci0JCQkJVmljdG9yaWEgTWV3cywgMjMgTWlsbGZpZWxkIFJvYWQKLQkJCQlDb3R0aW5nbGV5IEJ1c2luZXNzIFBhcmsKLQkJCQlCaW5nbGV5IFdlc3QgWW9ya3NoaXJlIEJEMTYgMVBZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTItQkEgICAoaGV4KQkJRlNJIFN5c3RlbXMsIEluYy4KLTAwMTJCQSAgICAgKGJhc2UgMTYpCQlGU0kgU3lzdGVtcywgSW5jLgotCQkJCTU4NDcgQ291bnR5IFJvYWQgNDEKLQkJCQlGYXJtaW5ndG9uIE5ZIDE0NDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1CQiAgIChoZXgpCQlUZWxlY29tbXVuaWNhdGlvbnMgSW5kdXN0cnkgQXNzb2NpYXRpb24gVFItNDEgQ29tbWl0dGVlCi0wMDEyQkIgICAgIChiYXNlIDE2KQkJVGVsZWNvbW11bmljYXRpb25zIEluZHVzdHJ5IEFzc29jaWF0aW9uIFRSLTQxIENvbW1pdHRlZQotCQkJCTI1MDAgV2lsc29uIEJsdmQuLCBTdWl0ZSAzMDAKLQkJCQlBcmxpbmd0b24gVkEgMjIyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUJDICAgKGhleCkJCUVjaG9sYWIgTExDCi0wMDEyQkMgICAgIChiYXNlIDE2KQkJRWNob2xhYiBMTEMKLQkJCQkyNjcgQm9zdG9uIFJvYWQKLQkJCQlTdWl0ZSAxMQotCQkJCUJpbGxlcmljYSBNQSAwMTg2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQkQgICAoaGV4KQkJQXZhbnRlYyBNYW51ZmFjdHVyaW5nIExpbWl0ZWQKLTAwMTJCRCAgICAgKGJhc2UgMTYpCQlBdmFudGVjIE1hbnVmYWN0dXJpbmcgTGltaXRlZAotCQkJCVVuaXQgTCwgNy9GLCBDYW1lbHBhaW50IEJsZGcsIEJsb2NrIDMKLQkJCQk2MCBIb2kgWXVlbiBSb2FkLCBLd3VuIFRvbmcsIEtvd2xvb24KLQkJCQk4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMTItQkUgICAoaGV4KQkJQXN0ZWsgQ29ycG9yYXRpb24KLTAwMTJCRSAgICAgKGJhc2UgMTYpCQlBc3RlayBDb3Jwb3JhdGlvbgotCQkJCTUwNTUgQ29ycG9yYXRlIFBsYXphIERyaXZlCi0JCQkJQ29sb3JhZG8gU3ByaW5ncyBDb2xvcmFkbyA4MDkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQkYgICAoaGV4KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxMkJGICAgICAoYmFzZSAxNikJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk0RiwgTm8uIDksIFBhcmsgQXZlbnVlIElJCi0JCQkJU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLUMwICAgKGhleCkJCUhvdExhdmEgU3lzdGVtcywgSW5jLgotMDAxMkMwICAgICAoYmFzZSAxNikJCUhvdExhdmEgU3lzdGVtcywgSW5jLgotCQkJCTYzMjkgQ2hlbHRvbiBEcml2ZQotCQkJCU9ha2xhbmQgQ0EgOTQ2MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUMxICAgKGhleCkJCUNoZWNrIFBvaW50IFNvZnR3YXJlIFRlY2hub2xvZ2llcwotMDAxMkMxICAgICAoYmFzZSAxNikJCUNoZWNrIFBvaW50IFNvZnR3YXJlIFRlY2hub2xvZ2llcwotCQkJCTUgSGEnc29sZWxpbSBTdC4KLQkJCQlUZWwgQXZpdiAgNjc4OTcKLQkJCQlJU1JBRUwKLQotMDAtMTItQzIgICAoaGV4KQkJQXBleCBFbGVjdHJvbmljcyBGYWN0b3J5Ci0wMDEyQzIgICAgIChiYXNlIDE2KQkJQXBleCBFbGVjdHJvbmljcyBGYWN0b3J5Ci0JCQkJTm8uMyBJbmR1c3RyaWFsIFpvbmUsIE5vLjQgQmxvY2ssCi0JCQkJRnUneW9uZyBUb3duLCBCYW8nYW4gRGlzdHJpY3QKLQkJCQlTaGVuIFpoZW4gR3VhbmcgRG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi0wMC0xMi1DMyAgIChoZXgpCQlXSVQgUy5BLgotMDAxMkMzICAgICAoYmFzZSAxNikJCVdJVCBTLkEuCi0JCQkJMTM4IGF2ZW51ZSBMZW9uIEJlcmVuZ2VyCi0JCQkJU2FpbnQgTGF1cmVudCBkdSBWYXIgUEFDQSAwNjcwMAotCQkJCUZSQU5DRQotCi0wMC0xMi1DNCAgIChoZXgpCQlWaXNlb24sIEluYy4KLTAwMTJDNCAgICAgKGJhc2UgMTYpCQlWaXNlb24sIEluYy4KLQkJCQk4NDQ1IEZyZWVwb3J0IFBhcmt3YXkKLQkJCQlTdWl0ZSAyNDUKLQkJCQlJcnZpbmcgVGV4YXMgNzUwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUM1ICAgKGhleCkJCVYtU2hvdyAgVGVjaG5vbG9neSAoQ2hpbmEpIENvLixMdGQKLTAwMTJDNSAgICAgKGJhc2UgMTYpCQlWLVNob3cgIFRlY2hub2xvZ3kgKENoaW5hKSBDby4sTHRkCi0JCQkJN0YsIFRlbmdkYSBQbGF6YSwgTm8uMTY4Ci0JCQkJWGl6aGltZW4gV2FpIFN0cmVldCwKLQkJCQlIYWlEaWFuIERpc3RyaWN0LCBCZWlqaW5nIDEwMDA4OQotCQkJCUNISU5BCi0KLTAwLTEyLUM2ICAgKGhleCkJCVRHQyBBbWVyaWNhLCBJbmMKLTAwMTJDNiAgICAgKGJhc2UgMTYpCQlUR0MgQW1lcmljYSwgSW5jCi0JCQkJMjkwMSBUYXNtYW4gRHJpdmUsIFN1aXRlIDExMQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1DNyAgIChoZXgpCQlTRUNVUkFZIFRlY2hub2xvZ2llcyBMdGQuQ28uCi0wMDEyQzcgICAgIChiYXNlIDE2KQkJU0VDVVJBWSBUZWNobm9sb2dpZXMgTHRkLkNvLgotCQkJCVRpYW5qaW4gSGFpdGFpIEluZHVzdHJpYWwgQmFzZSBFcldlaSBSb2FkCi0JCQkJTm8uIDYgQmxvY2sgRiA4LTQwMQotCQkJCVRpYW5qaW4gIDMwMDM4NAotCQkJCUNISU5BCi0KLTAwLTEyLUM4ICAgKGhleCkJCVBlcmZlY3QgdGVjaAotMDAxMkM4ICAgICAoYmFzZSAxNikJCVBlcmZlY3QgdGVjaAotCQkJCTNGLE5vLjksTEFORTE3NSxOQU5LQU4gUkQuLAotCQkJCUxVSkhVIFRBT1lVQU4gMzM4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi1DOSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMTJDOSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1DQSAgIChoZXgpCQlNZWNoYXRyb25pYyBCcmljayBBcHMKLTAwMTJDQSAgICAgKGJhc2UgMTYpCQlNZWNoYXRyb25pYyBCcmljayBBcHMKLQkJCQlBbHNpb24gMgotCQkJCTY0MDAgU29uZGVyYm9yZyAKLQkJCQlERU5NQVJLCi0KLTAwLTEyLUNCICAgKGhleCkJCUNTUyBJbmMuCi0wMDEyQ0IgICAgIChiYXNlIDE2KQkJQ1NTIEluYy4KLQkJCQkxNTEgU3VwZXJpb3IgQmx2ZC4KLQkJCQlVbml0IDEzICYgMTQKLQkJCQlNaXNzaXNzYXVnYSBPbnRhcmlvIEw1VDJMMQotCQkJCUNBTkFEQQotCi0wMC0xMi1DQyAgIChoZXgpCQlCaXRhdGVrIENPLiwgTFRECi0wMDEyQ0MgICAgIChiYXNlIDE2KQkJQml0YXRlayBDTy4sIExURAotCQkJCTZGLTEsMTkwLFRhLVR1bmcgUm9hZCxTRUMuIDMsCi0JCQkJSHNpY2hpaCBUYWlwZWkgY291bnR5IDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItQ0QgICAoaGV4KQkJQVNFTSBTcEEKLTAwMTJDRCAgICAgKGJhc2UgMTYpCQlBU0VNIFNwQQotCQkJCVZpYSBCdWlhLCA0Ci0JCQkJQVJURUdOQSBVZGluZSBJLTMzMDExCi0JCQkJSVRBTFkKLQotMDAtMTItQ0UgICAoaGV4KQkJQWR2YW5jZWQgQ3liZXJuZXRpY3MgR3JvdXAKLTAwMTJDRSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBDeWJlcm5ldGljcyBHcm91cAotCQkJCTI5NTMgQnVua2VyIEhpbGwgTGFuZQotCQkJCVN1aXRlIDQwMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1DRiAgIChoZXgpCQlBY2N0b24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxMkNGICAgICAoYmFzZSAxNikJCUFjY3RvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJTm8uIDEgQ3JlYXRpb24gUmQuIElJSSwgU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLUQwICAgKGhleCkJCUdvc3Nlbi1NZXRyYXdhdHQtR21iSAotMDAxMkQwICAgICAoYmFzZSAxNikJCUdvc3Nlbi1NZXRyYXdhdHQtR21iSAotCQkJCVRob21hcy1NYW5uLVN0ci4gMTYtMjAKLQkJCQlOdXJuYmVyZyBCYXZhcmlhIDkwNDcxCi0JCQkJR0VSTUFOWQotCi0wMC0xMi1EMSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cyBJbmMKLTAwMTJEMSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cyBJbmMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsCi0JCQkJTVMgODcyMwotCQkJCURhbGxhcyBUZXhhcyA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRDIgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTJEMiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCU1TIDg3MjMKLQkJCQlEYWxsYXMgVGV4YXMgNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUQzICAgKGhleCkJCVpldHRhIFN5c3RlbXMsIEluYy4KLTAwMTJEMyAgICAgKGJhc2UgMTYpCQlaZXR0YSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTczMTEgMTM1dGggQVZFIE5FCi0JCQkJU3VpdGUgQjkwMAotCQkJCVdvb2RpbnZpbGxlIFdBIDk4MDcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1ENCAgIChoZXgpCQlQcmluY2V0b24gVGVjaG5vbG9neSwgTHRkCi0wMDEyRDQgICAgIChiYXNlIDE2KQkJUHJpbmNldG9uIFRlY2hub2xvZ3ksIEx0ZAotCQkJCUsuQS5JLiBCbGRnLiAzRgotCQkJCTMtOS01IEl3YW1vdG8tY2hvCi0JCQkJQ2hpeW9kYWt1IFRva3lvIDEwMS0wMDMyCi0JCQkJSkFQQU4KLQotMDAtMTItRDUgICAoaGV4KQkJTW90aW9uIFJlYWxpdHkgSW5jLgotMDAxMkQ1ICAgICAoYmFzZSAxNikJCU1vdGlvbiBSZWFsaXR5IEluYy4KLQkJCQkyMDAgTm9ydGggQ29iYiBQYXJrd2F5Ci0JCQkJU3VpdGUgMTQwCi0JCQkJTWFyaWV0dGEgR0EgMzAwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUQ2ICAgKGhleCkJCUppYW5nc3UgWWl0b25nIEhpZ2gtVGVjaCBDby4sTHRkCi0wMDEyRDYgICAgIChiYXNlIDE2KQkJSmlhbmdzdSBZaXRvbmcgSGlnaC1UZWNoIENvLixMdGQKLQkJCQlObyAyMTYgSHVhbmdoZSBSb2FkCi0JCQkJQ2hhbmdzaHUgSmlhbmdzdSAyMTU1MDAKLQkJCQlDSElOQQotCi0wMC0xMi1ENyAgIChoZXgpCQlJbnZlbnRvIE5ldHdvcmtzLCBJbmMuCi0wMDEyRDcgICAgIChiYXNlIDE2KQkJSW52ZW50byBOZXR3b3JrcywgSW5jLgotCQkJCTM3NyBTaW1hcmFubyBEcml2ZQotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1EOCAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIEdhbWVzIFN5c3RlbSBDby4sIEx0ZC4KLTAwMTJEOCAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIEdhbWVzIFN5c3RlbSBDby4sIEx0ZC4KLQkJCQlOby4xMzAsIFd1LUd1bmcgUmQuLCBXdS1HdSBJbmR1c3RyaWFsIFBhcmssCi0JCQkJVGFpcGVpICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLUQ5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTJEOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLURBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTJEQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLURCICAgKGhleCkJCVpJRUhMIGluZHVzdHJpZS1lbGVrdHJvbmlrIEdtYkggKyBDbyBLRwotMDAxMkRCICAgICAoYmFzZSAxNikJCVpJRUhMIGluZHVzdHJpZS1lbGVrdHJvbmlrIEdtYkggKyBDbyBLRwotCQkJCURhaW1sZXJzdHIuIDEzCi0JCQkJU2Nod2FlYmlzY2ggSGFsbCAgNzQ1MjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLURDICAgKGhleCkJCVN1bkNvcnAgSW5kdXN0cmlhbCBMaW1pdGVkCi0wMDEyREMgICAgIChiYXNlIDE2KQkJU3VuQ29ycCBJbmR1c3RyaWFsIExpbWl0ZWQKLQkJCQlOby42OCBHdW93ZWkgUm9hZCwKLQkJCQlMaWFudGFuZyBJbmR1c3RyaWFsIERpc3RyaWN0LCBTaGVuemhlbiwgCi0JCQkJQ0hJTkEKLQotMDAtMTItREQgICAoaGV4KQkJU2hlbmdxdSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0wMDEyREQgICAgIChiYXNlIDE2KQkJU2hlbmdxdSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0JCQkJTm8uMSBCdWlsZGluZyxOby4gNjkwIEJpYm8gUm9hZCxQdWRvbmcgTmV3IEFyZWEKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMDAtMTItREUgICAoaGV4KQkJUmFkaW8gQ29tcG9uZW50cyBTd2VkZW4gQUIKLTAwMTJERSAgICAgKGJhc2UgMTYpCQlSYWRpbyBDb21wb25lbnRzIFN3ZWRlbiBBQgotCQkJCVZpZGVyb2dhdGFuIDNCCi0JCQkJS2lzdGEgU3RvY2tob2xtIDE2NDIyCi0JCQkJU1dFREVOCi0KLTAwLTEyLURGICAgKGhleCkJCU5vdm9tYXRpYyBBRwotMDAxMkRGICAgICAoYmFzZSAxNikJCU5vdm9tYXRpYyBBRwotCQkJCVdpZW5lciBTdHJhc3NlIDE1OAotCQkJCUd1bXBvbGRza2lyY2hlbiBOaWVkZXJvc3RlcnJlaWNoIEEtMjM1MgotCQkJCUFVU1RSSUEKLQotMDAtMTItRTAgICAoaGV4KQkJQ29kYW4gTGltaXRlZAotMDAxMkUwICAgICAoYmFzZSAxNikJCUNvZGFuIExpbWl0ZWQKLQkJCQk4MSBHcmF2ZXMgU3RyZWV0Ci0JCQkJTmV3dG9uIFNvdXRoIDUwNzQKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTItRTEgICAoaGV4KQkJQWxsaWFudCBOZXR3b3JrcywgSW5jCi0wMDEyRTEgICAgIChiYXNlIDE2KQkJQWxsaWFudCBOZXR3b3JrcywgSW5jCi0JCQkJMTI1OSBCaXJjaHdvb2QgRHIuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1FMiAgIChoZXgpCQlBTEFYQUxBIE5ldHdvcmtzIENvcnBvcmF0aW9uCi0wMDEyRTIgICAgIChiYXNlIDE2KQkJQUxBWEFMQSBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotCQkJCTg5MCBLYXNoaW1hZGEsIFNhaXdhaS1rdQotCQkJCUthd2FzYWtpLXNoaSBLYW5hZ2F3YS1rZW4gMjEyLTAwNTgKLQkJCQlKQVBBTgotCi0wMC0xMi1FMyAgIChoZXgpCQlBZ2F0LVJULCBMdGQuCi0wMDEyRTMgICAgIChiYXNlIDE2KQkJQWdhdC1SVCwgTHRkLgotCQkJCTEwMSBwci4gTWlyYSAjMTIyMCwKLQkJCQlNb3Njb3cgIDEyOTA4NQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xMi1FNCAgIChoZXgpCQlaSUVITCBpbmR1c3RyaWUtZWxlY3Ryb25payBHbWJIICsgQ28gS0cKLTAwMTJFNCAgICAgKGJhc2UgMTYpCQlaSUVITCBpbmR1c3RyaWUtZWxlY3Ryb25payBHbWJIICsgQ28gS0cKLQkJCQlEYWltbGVyc3RyLiAxMwotCQkJCVNjaHdhZWJpc2NoIEhhbGwgIDc0NTIzCi0JCQkJR0VSTUFOWQotCi0wMC0xMi1FNSAgIChoZXgpCQlUaW1lIEFtZXJpY2EsIEluYy4KLTAwMTJFNSAgICAgKGJhc2UgMTYpCQlUaW1lIEFtZXJpY2EsIEluYy4KLQkJCQk1MSBXLiAzcmQgU3RyZWV0ICMzMTAKLQkJCQlUZW1wZSBBWiA4NTI4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRTYgICAoaGV4KQkJU1BFQ1RFQyBDT01QVVRFUiBDTy4sIExURC4KLTAwMTJFNiAgICAgKGJhc2UgMTYpCQlTUEVDVEVDIENPTVBVVEVSIENPLiwgTFRELgotCQkJCTZGLiwgTm8uIDkyLCBOYW5raW5nIEUuIFJkLiBTZWMuIDUsCi0JCQkJVGFpcGVpICAxMDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLUU3ICAgKGhleCkJCVByb2plY3RlayBOZXR3b3JraW5nIEVsZWN0cm9uaWNzIENvcnAuCi0wMDEyRTcgICAgIChiYXNlIDE2KQkJUHJvamVjdGVrIE5ldHdvcmtpbmcgRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQk1Ri05LCBOby4gMTYsIExhbmUgNjA5LCBTZWMuIDUsIENodW5nc2hpbiBSZC4sCi0JCQkJU2FuY2h1bmcsIFRhaXBlaSAgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi1FOCAgIChoZXgpCQlGcmF1bmhvZmVyIElNUwotMDAxMkU4ICAgICAoYmFzZSAxNikJCUZyYXVuaG9mZXIgSU1TCi0JCQkJRmlua2Vuc3RyYXNzZSA2MQotCQkJCUR1aXNidXJnIE5SVyA0NzA1NwotCQkJCUdFUk1BTlkKLQotMDAtMTItRTkgICAoaGV4KQkJQWJiZXkgU3lzdGVtcyBMdGQKLTAwMTJFOSAgICAgKGJhc2UgMTYpCQlBYmJleSBTeXN0ZW1zIEx0ZAotCQkJCUxldmVsIDQsIDIyMCBXaWxsaXMgU3QKLQkJCQlQTyBCb3ggMjctNDk3Ci0JCQkJV2VsbGluZ3RvbiAgNjAzMAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTEyLUVBICAgKGhleCkJCVRyYW5lCi0wMDEyRUEgICAgIChiYXNlIDE2KQkJVHJhbmUKLQkJCQk0ODMzIFdoaXRlIEJlYXIgUGFya3dheQotCQkJCVN0LiBQYXVsIE1OIDU1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1FQiAgIChoZXgpCQlSMkRJLCBMTEMKLTAwMTJFQiAgICAgKGJhc2UgMTYpCQlSMkRJLCBMTEMKLQkJCQkyNTc1IE5FIEthdGhyeW4gU3QuCi0JCQkJU3VpdGUgMTQKLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUVDICAgKGhleCkJCU1vdmFjb2xvciBiLnYuCi0wMDEyRUMgICAgIChiYXNlIDE2KQkJTW92YWNvbG9yIGIudi4KLQkJCQlLb3BlcnNsYWdlcnNzdHJhYXQgMzEKLQkJCQlTbmVlayBGcmllc2xhbmQgODYwMSBXTAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTEyLUVEICAgKGhleCkJCUFWRyBBZHZhbmNlZCBUZWNobm9sb2dpZXMKLTAwMTJFRCAgICAgKGJhc2UgMTYpCQlBVkcgQWR2YW5jZWQgVGVjaG5vbG9naWVzCi0JCQkJNDE0MCBVdGljYSBSaWRnZSBSb2FkCi0JCQkJQmV0dGVuZG9yZiBJQSA1MjcyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRUUgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTAwMTJFRSAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OAotCQkJCVNXRURFTgotCi0wMC0xMi1FRiAgIChoZXgpCQlPbmVBY2Nlc3MgU0EKLTAwMTJFRiAgICAgKGJhc2UgMTYpCQlPbmVBY2Nlc3MgU0EKLQkJCQkyOCBydWUgZGUgbGEgUmVkb3V0ZQotCQkJCUZvbnRlbmF5IGF1eCBSb3NlcyAgOTIyNjAKLQkJCQlGUkFOQ0UKLQotMDAtMTItRjAgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDEyRjAgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLXRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xMi1GMSAgIChoZXgpCQlJRk9URUMKLTAwMTJGMSAgICAgKGJhc2UgMTYpCQlJRk9URUMKLQkJCQlaQUMgQ2hhbXBmZXVpbGxldAotCQkJCUJQMjQ3Ci0JCQkJVk9JUk9OICAzODUwNwotCQkJCUZSQU5DRQotCi0wMC0xMi1GMiAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotMDAxMkYyICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUYzICAgKGhleCkJCWNvbm5lY3RCbHVlIEFCCi0wMDEyRjMgICAgIChiYXNlIDE2KQkJY29ubmVjdEJsdWUgQUIKLQkJCQlOb3JyYSBWYWxsZ2F0YW4gNjQKLQkJCQlNYWxtb2UgIFNFLTIxMSAyMgotCQkJCVNXRURFTgotCi0wMC0xMi1GNCAgIChoZXgpCQlCZWxjbyBJbnRlcm5hdGlvbmFsIENvLixMdGQuCi0wMDEyRjQgICAgIChiYXNlIDE2KQkJQmVsY28gSW50ZXJuYXRpb25hbCBDby4sTHRkLgotCQkJCTIxMiwgWWVva29rLURvbmcsIFdvbm1pLWd1Ci0JCQkJUHVjaHVuLVNpIEt5b25na2ktRG8gNDIwLTEwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi1GNSAgIChoZXgpCQlJbWFyZGEgTmV3IFplYWxhbmQgTGltaXRlZAotMDAxMkY1ICAgICAoYmFzZSAxNikJCUltYXJkYSBOZXcgWmVhbGFuZCBMaW1pdGVkCi0JCQkJU3VpdGUgRzE2LCBOYXRpb25hbCBJbm5vdmF0aW9uIENlbnRyZSwKLQkJCQlBdXN0cmFsaWFuIFRlY2hub2xvZ3kgUGFyaywKLQkJCQlFdmVsZWlnaCBOU1cgICAyMDE1Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMTItRjYgICAoaGV4KQkJTURLIENPLixMVEQuCi0wMDEyRjYgICAgIChiYXNlIDE2KQkJTURLIENPLixMVEQuCi0JCQkJMi02LTI3IEliYXJhbWUKLQkJCQlLYXNoaXdhemFraSBDaXR5IE5paWdhdGEgOTQ1MTM0MQotCQkJCUpBUEFOCi0KLTAwLTEyLUY3ICAgKGhleCkJCVhpYW1lbiBYaW5nbGlhbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMTJGNyAgICAgKGJhc2UgMTYpCQlYaWFtZW4gWGluZ2xpYW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJWGluZ2xpYW4gRWxlY3Ryb25pY3MgKFhpbmd0ZWwpIEJ1aWxkaW5nLENodWFuZ3hpbiBSb2FkLAotCQkJCVRvcmNoIEhpLVRlY2ggSW5kdXN0cmlhbCBEaXN0cmljdCwKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLTAwLTEyLUY4ICAgKGhleCkJCVdOSSBSZXNvdXJjZXMsIExMQwotMDAxMkY4ICAgICAoYmFzZSAxNikJCVdOSSBSZXNvdXJjZXMsIExMQwotCQkJCTIxNDYgQmVyaW5nIERyaXZlCi0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzMS0yMDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1GOSAgIChoZXgpCQlVUllVIFNFSVNBS1UsIExURC4KLTAwMTJGOSAgICAgKGJhc2UgMTYpCQlVUllVIFNFSVNBS1UsIExURC4KLQkJCQkxLTItMTEKLQkJCQlGVUtBRS1NSU5BTUkKLQkJCQlISUdBU0hJTkFSSS1LVSBPU0FLQSA1MzctMDAwMgotCQkJCUpBUEFOCi0KLTAwLTEyLUZBICAgKGhleCkJCVRIWCBMVEQKLTAwMTJGQSAgICAgKGJhc2UgMTYpCQlUSFggTFRECi0JCQkJNTIwMSBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTdWl0ZSAzMjAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRkIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMDAxMkZCICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQk0MTYsIE1hZXRhbi0zRG9uZywgWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24tQ2l0eSBHeWVvbmdnaS1EbyA0NDMtNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLUZDICAgKGhleCkJCVBMQU5FVCBTeXN0ZW0gQ28uLExURAotMDAxMkZDICAgICAoYmFzZSAxNikJCVBMQU5FVCBTeXN0ZW0gQ28uLExURAotCQkJCTR0aCBGbG9vciwgRGFlaGFuIEIvRCwgODczLTI5LAotCQkJCUJhbmdiYWU0LURvbmcsIFNlb2Noby1LdSwKLQkJCQlTZW91bCAgMTM3LTA2NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi1GRCAgIChoZXgpCQlPUFRJTVVTIElDIFMuQS4KLTAwMTJGRCAgICAgKGJhc2UgMTYpCQlPUFRJTVVTIElDIFMuQS4KLQkJCQlOQVdPSk9XU0tBIDExOAotCQkJCU5PV1kgU0FDWiBNQUxPUE9MU0tBIDMzLTMwMAotCQkJCVBPTEFORAotCi0wMC0xMi1GRSAgIChoZXgpCQlMZW5vdm8gTW9iaWxlIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBMdGQuCi0wMDEyRkUgICAgIChiYXNlIDE2KQkJTGVub3ZvIE1vYmlsZSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgTHRkLgotCQkJCVhpYW1lbiBPdmVyc2VhcyBDaGluZXNlIEVsZWN0cm9uaWMgU2NpZW5jZSBQYXJrLEh1b2p1IEhpZ2ggVGVjaG5vbG9neSBEZXZlbG9wbWVudCBab25lCi0JCQkJWElBIE1FTiBGVSBKSUFOIDM2MTAwOQotCQkJCUNISU5BCi0KLTAwLTEyLUZGICAgKGhleCkJCUxlbHkgSW5kdXN0cmllcyBOLlYuCi0wMDEyRkYgICAgIChiYXNlIDE2KQkJTGVseSBJbmR1c3RyaWVzIE4uVi4KLQkJCQlXZXZlcnNrYWRlIDExMAotCQkJCU1hYXNzbHVpcyBadWlkLUhvbGxhbmQgMzE0N1BBCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTMtMDAgICAoaGV4KQkJSVQtRkFDVE9SWSwgSU5DLgotMDAxMzAwICAgICAoYmFzZSAxNikJCUlULUZBQ1RPUlksIElOQy4KLQkJCQkxLTE2LTI2IFRBS0FHSSBNSU5BTUktS1UKLQkJCQlGVUtVT0tBLVNISSBGVUtVT0tBLUtFTiA4MTUtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTEzLTAxICAgKGhleCkJCUlyb25HYXRlIFMuTC4KLTAwMTMwMSAgICAgKGJhc2UgMTYpCQlJcm9uR2F0ZSBTLkwuCi0JCQkJQ1xBbGNhbGEgMjY4LCBwcmltZXJhIHBsYW50YQotCQkJCU1hZHJpZCAgMjgwMjcKLQkJCQlTUEFJTgotCi0wMC0xMy0wMiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMTMwMiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktdGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTEzLTAzICAgKGhleCkJCUdhdGVDb25uZWN0IFRlY2hub2xvZ2llcyBHbWJICi0wMDEzMDMgICAgIChiYXNlIDE2KQkJR2F0ZUNvbm5lY3QgVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlBZ2FzdHJhc3NlIDI0IFIyCi0JCQkJMTI0ODkgQmVybGluICAxMjQ4OQotCQkJCUdFUk1BTlkKLQotMDAtMTMtMDQgICAoaGV4KQkJRmxhaXJjb21tIFRlY2hub2xvZ2llcyBDby4gTFRECi0wMDEzMDQgICAgIChiYXNlIDE2KQkJRmxhaXJjb21tIFRlY2hub2xvZ2llcyBDby4gTFRECi0JCQkJMjA4OCBIdWFzaGFuIFJvYWQKLQkJCQlTb3V0aCBIdWl5aW4gQmxkZy4gIzIzMDYKLQkJCQlTaGFuZ2hhaSAgMjAwMDMwCi0JCQkJQ0hJTkEKLQotMDAtMTMtMDUgICAoaGV4KQkJRXBpY29tLCBJbmMuCi0wMDEzMDUgICAgIChiYXNlIDE2KQkJRXBpY29tLCBJbmMuCi0JCQkJUE8gQm94IDE2MTMwCi0JCQkJT2FrbGFuZCBDQSA5NDYxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMDYgICAoaGV4KQkJQWx3YXlzIE9uIFdpcmVsZXNzCi0wMDEzMDYgICAgIChiYXNlIDE2KQkJQWx3YXlzIE9uIFdpcmVsZXNzCi0JCQkJMzcwMSBLaXJieSBEcgotCQkJCVN1aXRlIDEwOTAKLQkJCQlIb3VzdG9uIFRYIDc3MDk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0wNyAgIChoZXgpCQlQYXJhdmlydHVhbCBDb3Jwb3JhdGlvbgotMDAxMzA3ICAgICAoYmFzZSAxNikJCVBhcmF2aXJ0dWFsIENvcnBvcmF0aW9uCi0JCQkJMjk1MyBCdW5rZXIgSGlsbCBMYW5lCi0JCQkJU3VpdGUgNDA2Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTA4ICAgKGhleCkJCU51dmVyYSBGdWVsIENlbGxzCi0wMDEzMDggICAgIChiYXNlIDE2KQkJTnV2ZXJhIEZ1ZWwgQ2VsbHMKLQkJCQkxMjkgQ29uY29yZCBSb2FkLCAjMQotCQkJCUJpbGxlcmljYSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMDkgICAoaGV4KQkJT2NlYW4gQnJvYWRiYW5kIE5ldHdvcmtzCi0wMDEzMDkgICAgIChiYXNlIDE2KQkJT2NlYW4gQnJvYWRiYW5kIE5ldHdvcmtzCi0JCQkJMjA3OCBXYWxzaCBBdmUsIFN1aXRlIEIKLQkJCQlTYW50YSBDbGFyYSBDYWxpZm9ybmlhIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0wQSAgIChoZXgpCQlOb3J0ZWwKLTAwMTMwQSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xMy0wQiAgIChoZXgpCQlNZXh0YWwgQi5WLgotMDAxMzBCICAgICAoYmFzZSAxNikJCU1leHRhbCBCLlYuCi0JCQkJRGUgVGllbmRlbiA0OAotCQkJCU51ZW5lbiBOb29yZCBCcmFiYW50IDU2NzRUQgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTEzLTBDICAgKGhleCkJCUhGIFN5c3RlbSBDb3Jwb3JhdGlvbgotMDAxMzBDICAgICAoYmFzZSAxNikJCUhGIFN5c3RlbSBDb3Jwb3JhdGlvbgotCQkJCTE1MjAtMSBBeXVrYWkKLQkJCQlTaGlyYXRha2EtTWFjaGkKLQkJCQlOaXNoaW9raXRhbWEtR3VuIFlhbWFnYXRhLUtlbiA5OTItMDc3MQotCQkJCUpBUEFOCi0KLTAwLTEzLTBEICAgKGhleCkJCUdBTElMRU8gQVZJT05JQ0EKLTAwMTMwRCAgICAgKGJhc2UgMTYpCQlHQUxJTEVPIEFWSU9OSUNBCi0JCQkJVklBTEUgRVVST1BBCi0JCQkJIE5FUlZJQU5PIE1JTEFOTyAyMDAxNAotCQkJCUlUQUxZCi0KLTAwLTEzLTBFICAgKGhleCkJCUZvY3Vzcml0ZSBBdWRpbyBFbmdpbmVlcmluZyBMaW1pdGVkCi0wMDEzMEUgICAgIChiYXNlIDE2KQkJRm9jdXNyaXRlIEF1ZGlvIEVuZ2luZWVyaW5nIExpbWl0ZWQKLQkJCQkxOSBMaW5jb2xuIFJvYWQKLQkJCQlDcmVzc2V4IEJ1c2luZXNzIFBhcmsKLQkJCQlIaWdoIFd5Y29tYmUgQnVja3MgSFAxMiAzRlgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMy0wRiAgIChoZXgpCQlFR0VNRU4gQmlsZ2lzYXlhciBNdWggU2FuIHZlIFRpYyBMVEQgU1RJCi0wMDEzMEYgICAgIChiYXNlIDE2KQkJRUdFTUVOIEJpbGdpc2F5YXIgTXVoIFNhbiB2ZSBUaWMgTFREIFNUSQotCQkJCUZldnppIENha21hayAyIFNvayAzMS9BCi0JCQkJS0laSUxBWQotCQkJCUFOS0FSQSBDQU5LQVlBIDA2NDQwCi0JCQkJVFVSS0VZCi0KLTAwLTEzLTEwICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAxMzEwICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkKLQkJCQlJcnZpbmUgQ0EgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTExICAgKGhleCkJCUFSUklTIEludGVybmF0aW9uYWwKLTAwMTMxMSAgICAgKGJhc2UgMTYpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0xMiAgIChoZXgpCQlBbWVkaWEgTmV0d29ya3MgSW5jLgotMDAxMzEyICAgICAoYmFzZSAxNikJCUFtZWRpYSBOZXR3b3JrcyBJbmMuCi0JCQkJMTAxIENyYXdmb3JkcyBDb3JuZXIgUmQKLQkJCQlIb2xtZGVsIE5KIDA3NzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0xMyAgIChoZXgpCQlHdWFuZ1pob3UgUG9zdCAmIFRlbGVjb20gRXF1aXBtZW50IGx0ZAotMDAxMzEzICAgICAoYmFzZSAxNikJCUd1YW5nWmhvdSBQb3N0ICYgVGVsZWNvbSBFcXVpcG1lbnQgbHRkCi0JCQkJMTM5IyBaaG9uZ3NoYW4gQXZlCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2MzAKLQkJCQlDSElOQQotCi0wMC0xMy0xNCAgIChoZXgpCQlBc2lhbWFqb3IgSW5jLgotMDAxMzE0ICAgICAoYmFzZSAxNikJCUFzaWFtYWpvciBJbmMuCi0JCQkJNkYtOSwgTm8uIDI2OCwgTGlhbi1DaGVuZyBSZC4sIEp1bmdoZSBDaXR5LAotCQkJCVRhaXBlaSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy0xNSAgIChoZXgpCQlTT05ZIENvbXB1dGVyIEVudGVydGFpbm1lbnQgaW5jLAotMDAxMzE1ICAgICAoYmFzZSAxNikJCVNPTlkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBpbmMsCi0JCQkJMi02LTIxIE1pbmFtaS1Bb3lhbWEsCi0JCQkJTWluYXRvLUt1IFRva3lvIDEwNy0wMDYyCi0JCQkJSkFQQU4KLQotMDAtMTMtMTYgICAoaGV4KQkJTC1TLUIgQnJvYWRjYXN0IFRlY2hub2xvZ2llcyBHbWJICi0wMDEzMTYgICAgIChiYXNlIDE2KQkJTC1TLUIgQnJvYWRjYXN0IFRlY2hub2xvZ2llcyBHbWJICi0JCQkJR3VzdGF2LVN0cmVzZW1hbm4tU3RyLiA4Ci0JCQkJQmluZ2VuIFJoZWlubGFuZC1QZmFseiA1NTQxMQotCQkJCUdFUk1BTlkKLQotMDAtMTMtMTcgICAoaGV4KQkJR04gTmV0Y29tIGFzCi0wMDEzMTcgICAgIChiYXNlIDE2KQkJR04gTmV0Y29tIGFzCi0JCQkJTWV0YWxidWVuIDY2Ci0JCQkJUC5PLkJveCAyMDEKLQkJCQlCYWxsZXJ1cCBTa292bHVuZGUgREstMjc1MAotCQkJCURFTk1BUksKLQotMDAtMTMtMTggICAoaGV4KQkJREdTVEFUSU9OIENvLiwgTHRkLgotMDAxMzE4ICAgICAoYmFzZSAxNikJCURHU1RBVElPTiBDby4sIEx0ZC4KLQkJCQlSbS40MDEsIEJsZGcuQSwgQnVuZGFuZyBUZWNobm8gUGFyayAxNTAsIFlhdGFwLURvbmcsIEJ1bmRhbmctR3UsIFN1bmduYW0tU2ksIEd5dW5nZ2ktRG8sIDQ2My03NjAsIEtvcmVhCi0JCQkJU3VuZ25hbSBHeXVuZ2dpIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtMTkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMzE5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMUEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMzFBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMUIgICAoaGV4KQkJQmVDZWxsIElubm92YXRpb25zIENvcnAuCi0wMDEzMUIgICAgIChiYXNlIDE2KQkJQmVDZWxsIElubm92YXRpb25zIENvcnAuCi0JCQkJMTJGLTksIE5vLiA3OSwgU2hpbi1UYWkgNXRoIFJkIFNlYyAxLAotCQkJCVNoaWgtY2hpaCwgVGFpcGVpIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtMUMgICAoaGV4KQkJTGl0ZVRvdWNoLCBJbmMuCi0wMDEzMUMgICAgIChiYXNlIDE2KQkJTGl0ZVRvdWNoLCBJbmMuCi0JCQkJMzQwMCBTb3V0aCBXZXN0IFRlbXBsZQotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0xRCAgIChoZXgpCQlTY2FudmFlZ3QgSW50ZXJuYXRpb25hbCBBL1MKLTAwMTMxRCAgICAgKGJhc2UgMTYpCQlTY2FudmFlZ3QgSW50ZXJuYXRpb25hbCBBL1MKLQkJCQlQLk8uUGVkZXJzZW5zIHZlaiAxOAotCQkJCUFhcmh1cyBKeWxsYW5kIDgyMDAgTgotCQkJCURFTk1BUksKLQotMDAtMTMtMUUgICAoaGV4KQkJUGVpa2VyIGFjdXN0aWMgR21iSCAmIENvLiBLRwotMDAxMzFFICAgICAoYmFzZSAxNikJCVBlaWtlciBhY3VzdGljIEdtYkggJiBDby4gS0cKLQkJCQlNYXgtUGxhbmNrLVN0cmFzc2UgMzIKLQkJCQlGcmllZHJpY2hzZG9yZiBIZXNzZW4gNjEzODEKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTFGICAgKGhleCkJCU54dFBoYXNlIFQmRCwgQ29ycC4KLTAwMTMxRiAgICAgKGJhc2UgMTYpCQlOeHRQaGFzZSBUJkQsIENvcnAuCi0JCQkJMzA0MCBFLiBCcm9hZHdheQotCQkJCVZhbmNvdXZlciBCQyBWNU0gMVo0Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLTIwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxMzIwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS10ZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTMtMjEgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDEzMjEgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTIyICAgKGhleCkJCURBUSBFbGVjdHJvbmljcywgSW5jLgotMDAxMzIyICAgICAoYmFzZSAxNikJCURBUSBFbGVjdHJvbmljcywgSW5jLgotCQkJCTI2MkIgT2xkIE5ldyBCcnVuc3dpY2sgUm9hZAotCQkJCVBpc2NhdGF3YXkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTIzICAgKGhleCkJCUNhcCBDby4sIEx0ZC4KLTAwMTMyMyAgICAgKGJhc2UgMTYpCQlDYXAgQ28uLCBMdGQuCi0JCQkJMTFGLDY4NC0yLGRldW5nY2hvbiAzLWRvbmcsZ2FuZ3Nlby1ndQotCQkJCVNlb3VsICAxNTctNzU0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTI0ICAgKGhleCkJCVNjaG5laWRlciBFbGVjdHJpYyBVbHRyYSBUZXJtaW5hbAotMDAxMzI0ICAgICAoYmFzZSAxNikJCVNjaG5laWRlciBFbGVjdHJpYyBVbHRyYSBUZXJtaW5hbAotCQkJCUluZHVzdHJpcGFya2VuIDMyCi0JCQkJQ29wZW5oYWdlbiAgMjc1MAotCQkJCURFTk1BUksKLQotMDAtMTMtMjUgICAoaGV4KQkJQ29ydGluYSBTeXN0ZW1zIEluYwotMDAxMzI1ICAgICAoYmFzZSAxNikJCUNvcnRpbmEgU3lzdGVtcyBJbmMKLQkJCQk4NDAgVyBDYWxpZm9ybmlhIEF2ZSwgU3VpdGUgMTAwCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0yNiAgIChoZXgpCQlFQ00gU3lzdGVtcyBMdGQKLTAwMTMyNiAgICAgKGJhc2UgMTYpCQlFQ00gU3lzdGVtcyBMdGQKLQkJCQlFbGxpZm9vdCBQYXJrCi0JCQkJQnVyc3R3aWNrCi0JCQkJSFVMTCBFYXN0IFlvcmtzaGlyZSBIVTEyIDlEWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEzLTI3ICAgKGhleCkJCURhdGEgQWNxdWlzaXRpb25zIGxpbWl0ZWQKLTAwMTMyNyAgICAgKGJhc2UgMTYpCQlEYXRhIEFjcXVpc2l0aW9ucyBsaW1pdGVkCi0JCQkJODQgR2Fzc29uIHN0cmVldAotCQkJCUNocmlzdGNodXJjaCAgCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMTMtMjggICAoaGV4KQkJV2VzdGVjaCBLb3JlYSBJbmMuLAotMDAxMzI4ICAgICAoYmFzZSAxNikJCVdlc3RlY2ggS29yZWEgSW5jLiwKLQkJCQk1NDgtOSwgR2Fqd2EzLURvbmcsU2VvLWt1LAotCQkJCUluY2hlb24gIDQwNC04MTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtMjkgICAoaGV4KQkJVlNTVCBDby4sIExURAotMDAxMzI5ICAgICAoYmFzZSAxNikJCVZTU1QgQ28uLCBMVEQKLQkJCQlzdWl0IDMyMDIsIEtvcmVhIFdvcmxkIFRyYWRlIENlbnRlciAxNTktMQotCQkJCVNhbXN1bmctRG9uZywgS2FuZ25hbS1HdQotCQkJCVNlb3VsICAxMzUtNzI5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTJBICAgKGhleCkJCVNpdHJvbmljcyBUZWxlY29tIFNvbHV0aW9ucwotMDAxMzJBICAgICAoYmFzZSAxNikJCVNpdHJvbmljcyBUZWxlY29tIFNvbHV0aW9ucwotCQkJCU1pY2hlbHNrYSA2MAotCQkJCVByYWd1ZSBQcmFndWUgNCAtIE1pY2hsZSAxNDAgMDAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0xMy0yQiAgIChoZXgpCQlQaG9lbml4IERpZ2l0YWwKLTAwMTMyQiAgICAgKGJhc2UgMTYpCQlQaG9lbml4IERpZ2l0YWwKLQkJCQk3NjUwIEVhc3QgRXZhbnMgUmQuIEJsZGcuIEEKLQkJCQlTY290dHNkYWxlIEF6IDg1MjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0yQyAgIChoZXgpCQlNQVogQnJhbmRlbmJ1cmcgR21iSAotMDAxMzJDICAgICAoYmFzZSAxNikJCU1BWiBCcmFuZGVuYnVyZyBHbWJICi0JCQkJTWllbGVzdHJhc3NlIDIKLQkJCQlXZXJkZXIgQnJhbmRlbmJ1cmcgMTQ1NDIKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTJEICAgKGhleCkJCWlXaXNlIENvbW11bmljYXRpb25zCi0wMDEzMkQgICAgIChiYXNlIDE2KQkJaVdpc2UgQ29tbXVuaWNhdGlvbnMKLQkJCQlVbml0IDNDLCBBcmRlbiBHcm92ZQotCQkJCVJhY2Vjb3Vyc2UgUmQsTW9udGFndSBHYXJkZW5zCi0JCQkJQ2FwZSBUb3duICA3NDQxCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTEzLTJFICAgKGhleCkJCUlUaWFuIENvcG9yYXRpb24KLTAwMTMyRSAgICAgKGJhc2UgMTYpCQlJVGlhbiBDb3BvcmF0aW9uCi0JCQkJNEYgWW91bmdobyBCZC4xNjA1LTEgU2VvY2hvLWRvbmcKLQkJCQlTZW9jaG8tZ3UKLQkJCQlTZW91bCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy0yRiAgIChoZXgpCQlJbnRlcmFjdGVrCi0wMDEzMkYgICAgIChiYXNlIDE2KQkJSW50ZXJhY3RlawotCQkJCVNpZ21hbCAyIEJMREcgI0MtMzE5LCAxOCBLdW1pLWRvbmcKLQkJCQlQdW5kYW5nLWt1Ci0JCQkJU2VvbmduYW0gS3l1bmctZ2kgNDYzLTc0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy0zMCAgIChoZXgpCQlFVVJPIFBST1RFQ1RJT04gU1VSVkVJTExBTkNFCi0wMDEzMzAgICAgIChiYXNlIDE2KQkJRVVSTyBQUk9URUNUSU9OIFNVUlZFSUxMQU5DRQotCQkJCTMwIFJ1ZSBkdSBEb3VicwotCQkJCVNUUkFTQk9VUkcgIDY3MTAwCi0JCQkJRlJBTkNFCi0KLTAwLTEzLTMxICAgKGhleCkJCUNlbGxQb2ludCBDb25uZWN0Ci0wMDEzMzEgICAgIChiYXNlIDE2KQkJQ2VsbFBvaW50IENvbm5lY3QKLQkJCQlCaWxsZWR2ZWogNAotCQkJCUNvcGVuaGFnZW4gIDIxMDAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLTMyICAgKGhleCkJCUJlaWppbmcgVG9wc2VjIE5ldHdvcmsgU2VjdXJpdHkgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTMzMiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFRvcHNlYyBOZXR3b3JrIFNlY3VyaXR5IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJSHVha29uZyBUb3dlcgotCQkJCU5vLiAxIFNoYW5nZGkgRWFzdCBSb2FkCi0JCQkJSGFpZGlhbiBEaXN0cmljdCBCZWlqaW5nIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTEzLTMzICAgKGhleCkJCUJhdWRUZWMgQ29ycG9yYXRpb24KLTAwMTMzMyAgICAgKGJhc2UgMTYpCQlCYXVkVGVjIENvcnBvcmF0aW9uCi0JCQkJMTJGLCBOTy4xODEsIFNlYy4gIDEuIFRhdHVuZyBSZC4sCi0JCQkJSHNpY2hpaCBUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy0zNCAgIChoZXgpCQlBcmthZG9zLCBJbmMuCi0wMDEzMzQgICAgIChiYXNlIDE2KQkJQXJrYWRvcywgSW5jLgotCQkJCTk0OCBVUyBIV1kgMjIKLQkJCQlOb3J0aCBQbGFpbmZpZWxkIE5KIDA3MDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0zNSAgIChoZXgpCQlWUyBJbmR1c3RyeSBCZXJoYWQKLTAwMTMzNSAgICAgKGJhc2UgMTYpCQlWUyBJbmR1c3RyeSBCZXJoYWQKLQkJCQlQbG8gNDcsIFNlbmFpIEluZC4gRXN0LiBJSSwKLQkJCQlTZW5haSBKb2hvciA4MTQwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTEzLTM2ICAgKGhleCkJCVRpYW5qaW4gNzEyIENvbW11bmljYXRpb24gQnJvYWRjYXN0aW5nIGNvLiwgbHRkLgotMDAxMzM2ICAgICAoYmFzZSAxNikJCVRpYW5qaW4gNzEyIENvbW11bmljYXRpb24gQnJvYWRjYXN0aW5nIGNvLiwgbHRkLgotCQkJCU5vLjE4NSwgWGluZGEgUm9hZCwgSGViZWkgRGlzdHJpY3QKLQkJCQlUaWFuamluICAzMDAxNDAKLQkJCQlDSElOQQotCi0wMC0xMy0zNyAgIChoZXgpCQlPcmllbnQgUG93ZXIgSG9tZSBOZXR3b3JrIEx0ZC4KLTAwMTMzNyAgICAgKGJhc2UgMTYpCQlPcmllbnQgUG93ZXIgSG9tZSBOZXR3b3JrIEx0ZC4KLQkJCQkzMDcgSGFyYm91ciBDZW50cmUsIFRvd2VyIDEsCi0JCQkJMSBIb2sgQ2hldW5nIFN0cmVldCwgSHVuZyBIb20KLQkJCQlIT05HIEtPTkcKLQotMDAtMTMtMzggICAoaGV4KQkJRlJFU0VOSVVTLVZJQUwKLTAwMTMzOCAgICAgKGJhc2UgMTYpCQlGUkVTRU5JVVMtVklBTAotCQkJCUxlIEdyYW5kIENoZW1pbgotCQkJCUJSRVpJTlMgIDM4NTkwCi0JCQkJRlJBTkNFCi0KLTAwLTEzLTM5ICAgKGhleCkJCUVMLU1FIEFHCi0wMDEzMzkgICAgIChiYXNlIDE2KQkJRUwtTUUgQUcKLQkJCQlHZXdlcmJlcmluZyAxCi0JCQkJQXUgaS4gZC4gSGFsbGVydGF1IEJheWVybiA4NDA3MgotCQkJCUdFUk1BTlkKLQotMDAtMTMtM0EgICAoaGV4KQkJVmFkYVRlY2ggSW5jLgotMDAxMzNBICAgICAoYmFzZSAxNikJCVZhZGFUZWNoIEluYy4KLQkJCQkxMTU0MCBTLiBFYXN0ZXJuIEF2ZW51ZQotCQkJCUhlbmRlcnNvbiBOZXZhZGEgODkwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTNCICAgKGhleCkJCVNwZWVkIERyYWdvbiBNdWx0aW1lZGlhIExpbWl0ZWQKLTAwMTMzQiAgICAgKGJhc2UgMTYpCQlTcGVlZCBEcmFnb24gTXVsdGltZWRpYSBMaW1pdGVkCi0JCQkJUm9vbSAxMzEyLCBWYW50YSBJbmR1c3RyaWFsIENlbnRyZSwKLQkJCQkzMyBUYWkgTGluIFBhaSBSb2FkLAotCQkJCUt3YWkgQ2h1bmcgTi5ULiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTMtM0MgICAoaGV4KQkJUVVJTlRST04gU1lTVEVNUyBJTkMuCi0wMDEzM0MgICAgIChiYXNlIDE2KQkJUVVJTlRST04gU1lTVEVNUyBJTkMuCi0JCQkJMjEwNSBTTy4gQkxPU1NFUiBST0FECi0JCQkJU0FOVEEgTUFSSUEgQ0FMSUZPUk5JQSA5MzQ1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtM0QgICAoaGV4KQkJTWljcm8gTWVtb3J5IEN1cnRpc3MgV3JpZ2h0IENvCi0wMDEzM0QgICAgIChiYXNlIDE2KQkJTWljcm8gTWVtb3J5IEN1cnRpc3MgV3JpZ2h0IENvCi0JCQkJOTU0MCBWYXNzYXIgQXZlbnVlCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtM0UgICAoaGV4KQkJTWV0YVN3aXRjaAotMDAxMzNFICAgICAoYmFzZSAxNikJCU1ldGFTd2l0Y2gKLQkJCQkxNDExIEhhcmJvciBCYXkgUGFya3dheQotCQkJCVN1aXRlIDEwMDMKLQkJCQlBbGFtZWRhIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0zRiAgIChoZXgpCQlFcHBlbmRvcmYgSW5zdHJ1bWVudGUgR21iSAotMDAxMzNGICAgICAoYmFzZSAxNikJCUVwcGVuZG9yZiBJbnN0cnVtZW50ZSBHbWJICi0JCQkJQmFya2hhdXNlbndlZyAxCi0JCQkJQWJ0bC4gSUgtRkUKLQkJCQlIYW1idXJnIERFIDIyMzM5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMy00MCAgIChoZXgpCQlBRC5FTCBzLnIubC4KLTAwMTM0MCAgICAgKGJhc2UgMTYpCQlBRC5FTCBzLnIubC4KLQkJCQl2aWEgUy4gUGVydGluaSw1Ci0JCQkJTWFydGVsbGFnbyBWRU5FWklBIDMwMDMwCi0JCQkJSVRBTFkKLQotMDAtMTMtNDEgICAoaGV4KQkJU2hhbmRvbmcgTmV3IEJlaXlhbmcgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkCi0wMDEzNDEgICAgIChiYXNlIDE2KQkJU2hhbmRvbmcgTmV3IEJlaXlhbmcgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJTk8uMTEgWGlud2VpIFJvYWQKLQkJCQlXZWloYWkgY2l0eSBTaGFuZG9uZyAyNjQyMDAKLQkJCQlDSElOQQotCi0wMC0xMy00MiAgIChoZXgpCQlWaXNpb24gUmVzZWFyY2gsIEluYy4KLTAwMTM0MiAgICAgKGJhc2UgMTYpCQlWaXNpb24gUmVzZWFyY2gsIEluYy4KLQkJCQkxMDAgRGV5IFJvYWQKLQkJCQlXYXluZSBOSiAwNzQ3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNDMgICAoaGV4KQkJTWF0c3VzaGl0YSBFbGVjdHJvbmljIENvbXBvbmVudHMgKEV1cm9wZSkgR21iSAotMDAxMzQzICAgICAoYmFzZSAxNikJCU1hdHN1c2hpdGEgRWxlY3Ryb25pYyBDb21wb25lbnRzIChFdXJvcGUpIEdtYkgKLQkJCQlaZXBwZWxpbnN0cmFzc2UgMTkKLQkJCQlMdWVuZWJ1cmcgTmllZGVyc2FjaHNlbiAyMTMzNwotCQkJCUdFUk1BTlkKLQotMDAtMTMtNDQgICAoaGV4KQkJRmFyZ28gRWxlY3Ryb25pY3MgSW5jLgotMDAxMzQ0ICAgICAoYmFzZSAxNikJCUZhcmdvIEVsZWN0cm9uaWNzIEluYy4KLQkJCQk2NTMzIEZseWluZyBDbG91ZCBEcml2ZQotCQkJCUVkZW4gUHJhaXJpZSBNTiA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNDUgICAoaGV4KQkJRWF0b24gQ29ycG9yYXRpb24KLTAwMTM0NSAgICAgKGJhc2UgMTYpCQlFYXRvbiBDb3Jwb3JhdGlvbgotCQkJCTQyMDEgTm9ydGggMjd0aCBTdHJlZXQKLQkJCQlNaWx3YXVrZWUgV2lzY29uc2luIDUzMjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy00NiAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMTM0NiAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQkyRiwgTm8uMjMzLTIsIFBhby1DaGlhbyBSb2FkCi0JCQkJSHNpbi1UaWVuLCBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy00NyAgIChoZXgpCQlCbHVlVHJlZSBXaXJlbGVzcyBEYXRhIEluYy4KLTAwMTM0NyAgICAgKGJhc2UgMTYpCQlCbHVlVHJlZSBXaXJlbGVzcyBEYXRhIEluYy4KLQkJCQkyNDI1IDQ2ZSBBdmVudWUKLQkJCQlMYWNoaW5lIFF1ZWJlYyBIOFQgM0M5Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLTQ4ICAgKGhleCkJCUFydGlsYSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMTM0OCAgICAgKGJhc2UgMTYpCQlBcnRpbGEgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJMkYuLCBOby4xLCBBbGxleSA4LCBTaXdlaSBMYW5lLCBaaG9uZ3poZW5nIFJkLiwKLQkJCQlYaW5kaWFuIENpdHkgVGFpcGVpIENvdW50eSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTQ5ICAgKGhleCkJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0wMDEzNDkgICAgIChiYXNlIDE2KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQlOby4gNiwgSW5ub3ZhdGlvbiBSb2FkIElJIFNjaWVuY2UgUGFyawotCQkJCUhzaW4tQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTRBICAgKGhleCkJCUVuZ2ltLCBJbmMuCi0wMDEzNEEgICAgIChiYXNlIDE2KQkJRW5naW0sIEluYy4KLQkJCQk0MCBOYWdvZyBQYXJrCi0JCQkJQWN0b24gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTRCICAgKGhleCkJCVRvR29sZGVuTmV0IFRlY2hub2xvZ3kgSW5jLgotMDAxMzRCICAgICAoYmFzZSAxNikJCVRvR29sZGVuTmV0IFRlY2hub2xvZ3kgSW5jLgotCQkJCTVGLTEgTm8uMjUsUHUtZGluZy4sCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtNEMgICAoaGV4KQkJWURUIFRlY2hub2xvZ3kgSW50ZXJuYXRpb25hbAotMDAxMzRDICAgICAoYmFzZSAxNikJCVlEVCBUZWNobm9sb2d5IEludGVybmF0aW9uYWwKLQkJCQkyRi4sIE5vLjIxOCwgUnVlaWd1YW5nIFJkLiwKLQkJCQlOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSwgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtNEQgICAoaGV4KQkJSVBDIHN5c3RlbXMKLTAwMTM0RCAgICAgKGJhc2UgMTYpCQlJUEMgc3lzdGVtcwotCQkJCW5vb3JkZWluZGUgNzIKLQkJCQlsZWltdWlkZW4gbm9vcmRob2xsYW5kIDI0NTEgQUgKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMy00RSAgIChoZXgpCQlWYWxveCBTeXN0ZW1zLCBJbmMuCi0wMDEzNEUgICAgIChiYXNlIDE2KQkJVmFsb3ggU3lzdGVtcywgSW5jLgotCQkJCSM3MDQsIEFjZSBUd2luIHRvd2VyIDIsIDIxMi0zMCwgR3Vyby0zZG9uZywgR3Vyby1ndQotCQkJCVNlb3VsICAxNTItNzc5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTRGICAgKGhleCkJCVRyYW56ZW8gV2lyZWxlc3MgVGVjaG5vbG9naWVzIEluYy4KLTAwMTM0RiAgICAgKGJhc2UgMTYpCQlUcmFuemVvIFdpcmVsZXNzIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMjAxNTUgU3Rld2FydCBDcmVzLgotCQkJCU1hcGxlIFJpZGdlIEJyaXRpc2ggQ29sdW1iaWEgVjJYIDBUNgotCQkJCUNBTkFEQQotCi0wMC0xMy01MCAgIChoZXgpCQlTaWx2ZXIgU3ByaW5nIE5ldHdvcmtzLCBJbmMKLTAwMTM1MCAgICAgKGJhc2UgMTYpCQlTaWx2ZXIgU3ByaW5nIE5ldHdvcmtzLCBJbmMKLQkJCQk1NzUgQnJvYWR3YXkgU3RyZWV0Ci0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy01MSAgIChoZXgpCQlOaWxlcyBBdWRpbyBDb3Jwb3JhdGlvbgotMDAxMzUxICAgICAoYmFzZSAxNikJCU5pbGVzIEF1ZGlvIENvcnBvcmF0aW9uCi0JCQkJMTIzMzEgU1cgMTMwdGggU3RyZWV0Ci0JCQkJTWlhbWkgRkwgMzMxODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTUyICAgKGhleCkJCU5henRlYywgSW5jLgotMDAxMzUyICAgICAoYmFzZSAxNikJCU5henRlYywgSW5jLgotCQkJCTgyMCBQYXJrIFR3byBEci4KLQkJCQlTdWdhciBMYW5kIFRYIDc3NDc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy01MyAgIChoZXgpCQlIWURBQyBGaWx0ZXJ0ZWNobmlrIEdNQkgKLTAwMTM1MyAgICAgKGJhc2UgMTYpCQlIWURBQyBGaWx0ZXJ0ZWNobmlrIEdNQkgKLQkJCQlJbmR1c3RyaWVnZWJpZXQKLQkJCQlTdWx6YmFjaC9TYWFyIFNhYXJsYW5kIDY2MjgwCi0JCQkJR0VSTUFOWQotCi0wMC0xMy01NCAgIChoZXgpCQlaY29tYXggVGVjaG5vbG9naWVzLCBJbmMuCi0wMDEzNTQgICAgIChiYXNlIDE2KQkJWmNvbWF4IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTk4IEZvcmQgUm9hZAotCQkJCVN1aXRlIDMtRgotCQkJCURlbnZpbGxlIE5KIDA3ODM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy01NSAgIChoZXgpCQlUT01FTiBDeWJlci1idXNpbmVzcyBTb2x1dGlvbnMsIEluYy4KLTAwMTM1NSAgICAgKGJhc2UgMTYpCQlUT01FTiBDeWJlci1idXNpbmVzcyBTb2x1dGlvbnMsIEluYy4KLQkJCQkyLTExLTE5IEtvaG5hbgotCQkJCU1pbmF0b2t1LWt1Ci0JCQkJVE9LWU8gIDEwOC0wMDc1Ci0JCQkJSkFQQU4KLQotMDAtMTMtNTYgICAoaGV4KQkJRkxJUiBSYWRpYXRpb24gR21iSAotMDAxMzU2ICAgICAoYmFzZSAxNikJCUZMSVIgUmFkaWF0aW9uIEdtYkgKLQkJCQlQaWVwZXJzYmVyZyAxMiwKLQkJCQlTb2xpbmdlbiBOUlcgNDI2NTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTU3ICAgKGhleCkJCVNveWFsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDEzNTcgICAgIChiYXNlIDE2KQkJU295YWwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxMEYsIE5vLiAyNywgTGFuZSAxNjksIEthbmduaW5nIFN0LiwgU2hpanIgQ2l0eSwKLQkJCQkyRiwgTm8uIDI3LCBMYW5lIDE2OSwgS2FuZ25pbmcgU3QuLCBTaGlqciBDaXR5LAotCQkJCVRhaXBlaSAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy01OCAgIChoZXgpCQlSZWFsbSBTeXN0ZW1zLCBJbmMuCi0wMDEzNTggICAgIChiYXNlIDE2KQkJUmVhbG0gU3lzdGVtcywgSW5jLgotCQkJCTkzNTAgU291dGggNTM1IEVhc3QKLQkJCQk5dGggRmxvb3IKLQkJCQlTYW5keSBVdGFoIDg0MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy01OSAgIChoZXgpCQlQcm9UZWxldmlzaW9uIFRlY2hub2xvZ2llcyBBL1MKLTAwMTM1OSAgICAgKGJhc2UgMTYpCQlQcm9UZWxldmlzaW9uIFRlY2hub2xvZ2llcyBBL1MKLQkJCQlNYXJpZWx1bmR2ZWogMTYsMgotCQkJCUhlcmxldiBDb3BlbmhhZ2VuIDI3MzAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLTVBICAgKGhleCkJCVByb2plY3QgVCZFIExpbWl0ZWQKLTAwMTM1QSAgICAgKGJhc2UgMTYpCQlQcm9qZWN0IFQmRSBMaW1pdGVkCi0JCQkJUm9vbSAzQywgMi9GLiBXYWggU2hpbmcgQ2VudGVyLAotCQkJCTExIFNoaW5nIFlpcCBTdHJlZXQsCi0JCQkJS3d1biBUb25nLCBLb3dsb29uLCA4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMTMtNUIgICAoaGV4KQkJUGFuZWxMaW5rIENpbmVtYSwgTExDCi0wMDEzNUIgICAgIChiYXNlIDE2KQkJUGFuZWxMaW5rIENpbmVtYSwgTExDCi0JCQkJMTA3MCBFIEFycXVlcyBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTVDICAgKGhleCkJCU9uU2l0ZSBTeXN0ZW1zLCBJbmMuCi0wMDEzNUMgICAgIChiYXNlIDE2KQkJT25TaXRlIFN5c3RlbXMsIEluYy4KLQkJCQkzOTAwIEZyZWVkb20gQ2lyY2xlCi0JCQkJU3VpdGUgMTAyCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQtMTIyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNUQgICAoaGV4KQkJTlRUUEMgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMTM1RCAgICAgKGJhc2UgMTYpCQlOVFRQQyBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTMtMjUgS2FuZGEgSmluYm8tY2hvCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDEtMDA1MQotCQkJCUpBUEFOCi0KLTAwLTEzLTVFICAgKGhleCkJCUVBQi9SV0kvSwotMDAxMzVFICAgICAoYmFzZSAxNikJCUVBQi9SV0kvSwotCQkJCUZhcm9nYXRhbiA2Ci0JCQkJU3RvY2tob2xtIEtpc3RhIDE2NCA4MAotCQkJCVNXRURFTgotCi0wMC0xMy01RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDEzNUYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy02MCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDEzNjAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy02MSAgIChoZXgpCQlCaW9zcGFjZSBDby4sIEx0ZC4KLTAwMTM2MSAgICAgKGJhc2UgMTYpCQlCaW9zcGFjZSBDby4sIEx0ZC4KLQkJCQkxMHRoIEZsb29yLCBQb29uZ2xpbSBCbGRnLCA4MjMgWWVva3NhbSAxLWRvbmcKLQkJCQlHYW5nbmFtLWd1IFNlb3VsIDEzNS03ODQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtNjIgICAoaGV4KQkJU2hpbkhldW5nIFByZWNpc2lvbiBDby4sIEx0ZC4KLTAwMTM2MiAgICAgKGJhc2UgMTYpCQlTaGluSGV1bmcgUHJlY2lzaW9uIENvLiwgTHRkLgotCQkJCURhZUhhIEJsZGcuIDQwMQotCQkJCTEwMS03IFNoaW5naWxEb25nCi0JCQkJWW91bmdEdW5nUG9HdSBTZW91bCAxNTAtMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTYzICAgKGhleCkJCVZlcmFzY2FwZSwgSW5jLgotMDAxMzYzICAgICAoYmFzZSAxNikJCVZlcmFzY2FwZSwgSW5jLgotCQkJCTExMDEgMzFzdCBTdC4sIFN1aXRlICMxOTAKLQkJCQlEb3duZXJzIEdyb3ZlIElMIDYwNTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy02NCAgIChoZXgpCQlQYXJhZGlnbSBUZWNobm9sb2d5IEluYy4uCi0wMDEzNjQgICAgIChiYXNlIDE2KQkJUGFyYWRpZ20gVGVjaG5vbG9neSBJbmMuLgotCQkJCTNGLCBOby4gMjg1LCBTZWMuMiwgVGktRGluZyBCbHZkIE5laS1IdSwKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtNjUgICAoaGV4KQkJTm9ydGVsCi0wMDEzNjUgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTMtNjYgICAoaGV4KQkJTmV0dXJpdHkgVGVjaG5vbG9naWVzIEluYy4KLTAwMTM2NiAgICAgKGJhc2UgMTYpCQlOZXR1cml0eSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTgzMCBTdGV3YXJ0IERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy02NyAgIChoZXgpCQlOYXJheW9uLiBDby4sIEx0ZC4KLTAwMTM2NyAgICAgKGJhc2UgMTYpCQlOYXJheW9uLiBDby4sIEx0ZC4KLQkJCQkjNTAyIEh5b2NoYW5nIFQvVyAxODEtMwotCQkJCUphbXNpbC1kb25nLCBTb25ncGEtZ3UKLQkJCQlTZW91bCAgMTM4LTIyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy02OCAgIChoZXgpCQlNYWVyc2sgRGF0YSBEZWZlbmNlCi0wMDEzNjggICAgIChiYXNlIDE2KQkJTWFlcnNrIERhdGEgRGVmZW5jZQotCQkJCUVsbGVnYWFyZHZlaiAyNQotCQkJCVNvZW5kZXJib3JnIERLIDY0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLTY5ICAgKGhleCkJCUhvbmRhIEVsZWN0cm9uIENvLiwgTEVELgotMDAxMzY5ICAgICAoYmFzZSAxNikJCUhvbmRhIEVsZWN0cm9uIENvLiwgTEVELgotCQkJCUthbmVtYXRzdSBCdWlsZGluZyAzIEZsb29yCi0JCQkJMi0xNC0xLCBLeW9iYXNoaSAgCi0JCQkJQ2h1by1rdSBUb2t5byAxMDQtMDAzMQotCQkJCUpBUEFOCi0KLTAwLTEzLTZBICAgKGhleCkJCUhhY2ggTGFuZ2UgU0EKLTAwMTM2QSAgICAgKGJhc2UgMTYpCQlIYWNoIExhbmdlIFNBCi0JCQkJNiwgcm91dGUgZGUgQ29tcG9pcwotCQkJCUNQIDIxMgotCQkJCVZFU0VOQVogR0VORVZBIDEyMjIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xMy02QiAgIChoZXgpCQlFLVRFQwotMDAxMzZCICAgICAoYmFzZSAxNikJCUUtVEVDCi0JCQkJMi0xNy0xNC01MDMgSGFrYXRhZWtpbWFlCi0JCQkJSGFrYXRha3UgRnVrdW9rYXNoaQotCQkJCUZ1a3Vva2EgRnVrdW9rYWtlbiA4MTItMDAxMQotCQkJCUpBUEFOCi0KLTAwLTEzLTZDICAgKGhleCkJCVRvbVRvbQotMDAxMzZDICAgICAoYmFzZSAxNikJCVRvbVRvbQotCQkJCU9vc3RlcmRva3NzdHJhYXQgMTE0Ci0JCQkJMTAxMSBESyBBbXN0ZXJkYW0gCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTMtNkQgICAoaGV4KQkJVGVudGFjdWx1cyBBQgotMDAxMzZEICAgICAoYmFzZSAxNikJCVRlbnRhY3VsdXMgQUIKLQkJCQlTdHVkaWVnYW5nZW4gMwotCQkJCU9zdGVyc3VuZCBKYW10bGFuZCBTRSAtIDgzMSA0MAotCQkJCVNXRURFTgotCi0wMC0xMy02RSAgIChoZXgpCQlUZWNobWV0cm8gQ29ycC4KLTAwMTM2RSAgICAgKGJhc2UgMTYpCQlUZWNobWV0cm8gQ29ycC4KLQkJCQk0Ri4gRG9uZ2FtIEIvRC4sIDI2NC01LCBZYW5nSmFlLURvbmcKLQkJCQlTZW9jaG8tS3UKLQkJCQlTZW91bCAgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy02RiAgIChoZXgpCQlQYWNrZXRNb3Rpb24sIEluYy4KLTAwMTM2RiAgICAgKGJhc2UgMTYpCQlQYWNrZXRNb3Rpb24sIEluYy4KLQkJCQkyMTIxIEVsIENhbWlubyBSZWFsCi0JCQkJMTB0aCBGbG9vcgotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNzAgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTM3MCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTMtNzEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTM3MSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTcyICAgKGhleCkJCURlbGwgSW5jLgotMDAxMzcyICAgICAoYmFzZSAxNikJCURlbGwgSW5jLgotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTczICAgKGhleCkJCUJMd2F2ZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAxMzczICAgICAoYmFzZSAxNikJCUJMd2F2ZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCTIzRkdILCBCbG9jayBBLFpoZW5ZZSBCdWlsZGluZyAsIEJhb0FuIE5hbiBSb2FkICwgTHVvSHUgLCBTaGVuemhlbiAsIENoaW5hCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTEzLTc0ICAgKGhleCkJCUF0aGVyb3MgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMTM3NCAgICAgKGJhc2UgMTYpCQlBdGhlcm9zIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNTQ4MCBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNzUgICAoaGV4KQkJQW1lcmljYW4gU2VjdXJpdHkgUHJvZHVjdHMgQ28uCi0wMDEzNzUgICAgIChiYXNlIDE2KQkJQW1lcmljYW4gU2VjdXJpdHkgUHJvZHVjdHMgQ28uCi0JCQkJMTE5MjUgUGFjaWZpYyBhdmUuCi0JCQkJRm9udGFuYSBDQSA5MjMzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNzYgICAoaGV4KQkJVGFib3IgRWxlY3Ryb25pY3MgTHRkLgotMDAxMzc2ICAgICAoYmFzZSAxNikJCVRhYm9yIEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQk5IEhhdGF0c2lhIFN0LgotCQkJCVRlbCBIYW5hbiAgMjAzMDIKLQkJCQlJU1JBRUwKLQotMDAtMTMtNzcgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDTy4sIExURAotMDAxMzc3ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ08uLCBMVEQKLQkJCQk0MTYsIE1hZXRhbiAzRG9uZywgWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24gQ2l0eSwgR2V5b25nZ2kgRG8sIEtvcmVhCi0JCQkJU3V3b24gR2V5b25nZ2kgNDQzNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTc4ICAgKGhleCkJCVFTQU4gVGVjaG5vbG9neSwgSW5jLgotMDAxMzc4ICAgICAoYmFzZSAxNikJCVFTQU4gVGVjaG5vbG9neSwgSW5jLgotCQkJCTJGLiwgTm8uMzEsIExhbmUgNTgzLCBSdWVpR3VhbmcgUmQuLCBOZWlodSBEaXN0LgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy03OSAgIChoZXgpCQlQT05ERVIgSU5GT1JNQVRJT04gSU5EVVNUUklFUyBMVEQuCi0wMDEzNzkgICAgIChiYXNlIDE2KQkJUE9OREVSIElORk9STUFUSU9OIElORFVTVFJJRVMgTFRELgotCQkJCTE0RixOby43NyxsYW5lNzAwLCBDaHVuZy1DaGVuZyBSb2FkCi0JCQkJSHNpbi1UaWVuIENpdHkgVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtN0EgICAoaGV4KQkJTmV0dm94IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDEzN0EgICAgIChiYXNlIDE2KQkJTmV0dm94IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uMjEtMSBTZWMuIDEgQ2h1bmcgSHVhIFdlc3QgUm9hZAotCQkJCVRhaW5hbiAgNzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy03QiAgIChoZXgpCQlNb3ZvbiBDb3Jwb3JhdGlvbgotMDAxMzdCICAgICAoYmFzZSAxNikJCU1vdm9uIENvcnBvcmF0aW9uCi0JCQkJNXRoLCBIeXVuanVrIEIvRAotCQkJCTE0MC0yOCwgU2Ftc3VuZy1kb25nLCBLYW5nbmFtLWt1Ci0JCQkJU2VvdWwgIDEzNS0wOTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtN0MgICAoaGV4KQkJS2FpY29tIGNvLiwgTHRkLgotMDAxMzdDICAgICAoYmFzZSAxNikJCUthaWNvbSBjby4sIEx0ZC4KLQkJCQkjMTA5LCBHYXlhbmcgVGVjaG5vIFRvd24gMTQ4NywgR2F5YW5nLWRvbmcsS2FuZ3NvLWd1Ci0JCQkJU2VvdWwgIDE1Ny04MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtN0QgICAoaGV4KQkJRHluYWxhYiwgSW5jLgotMDAxMzdEICAgICAoYmFzZSAxNikJCUR5bmFsYWIsIEluYy4KLQkJCQk1NTUgTGFuY2FzdGVyIEF2ZS4KLQkJCQlSZXlub2xkc2J1cmcgT0ggNDMwNjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTdFICAgKGhleCkJCUNvckVkZ2UgTmV0d29ya3MsIEluYy4KLTAwMTM3RSAgICAgKGJhc2UgMTYpCQlDb3JFZGdlIE5ldHdvcmtzLCBJbmMuCi0JCQkJNzYwMCBCb29uZSBBdmUgTgotCQkJCVN1aXRlIDEKLQkJCQlCcm9va2x5biBQYXJrIE1OIDU1NDI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy03RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDEzN0YgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy04MCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDEzODAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy04MSAgIChoZXgpCQlDSElQUyAmIFN5c3RlbXMsIEluYy4KLTAwMTM4MSAgICAgKGJhc2UgMTYpCQlDSElQUyAmIFN5c3RlbXMsIEluYy4KLQkJCQk0NzUwIFBhdHJpY2sgSGVucnkgRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDYWxpZm9ybmlhIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy04MiAgIChoZXgpCQlDZXRhY2VhIE5ldHdvcmtzIENvcnBvcmF0aW9uCi0wMDEzODIgICAgIChiYXNlIDE2KQkJQ2V0YWNlYSBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotCQkJCTM3MDggV2VzdCAzNnRoIEF2ZW51ZQotCQkJCVZhbmNvdXZlciBCcml0aXNoIENvbHVtYmlhIFY2TiAyUzQKLQkJCQlDQU5BREEKLQotMDAtMTMtODMgICAoaGV4KQkJQXBwbGljYXRpb24gVGVjaG5vbG9naWVzIGFuZCBFbmdpbmVlcmluZyBSZXNlYXJjaCBMYWJvcmF0b3J5Ci0wMDEzODMgICAgIChiYXNlIDE2KQkJQXBwbGljYXRpb24gVGVjaG5vbG9naWVzIGFuZCBFbmdpbmVlcmluZyBSZXNlYXJjaCBMYWJvcmF0b3J5Ci0JCQkJU2hpbmp1a3UgMS1jaG9tZSBCbGRnLgotCQkJCTEtMTAtNCwgU2hpbmp1a3UKLQkJCQlTaGluanVrdS1rdSBUb2t5byAxNjAtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTEzLTg0ICAgKGhleCkJCUFkdmFuY2VkIE1vdGlvbiBDb250cm9scwotMDAxMzg0ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIE1vdGlvbiBDb250cm9scwotCQkJCTM4MDUgQ2FsbGUgVGVjYXRlCi0JCQkJQ2FtYXJpbGxvIENhbGlmb3JuaWEgOTMwMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTg1ICAgKGhleCkJCUFkZC1PbiBUZWNobm9sb2d5IENvLiwgTFRELgotMDAxMzg1ICAgICAoYmFzZSAxNikJCUFkZC1PbiBUZWNobm9sb2d5IENvLiwgTFRELgotCQkJCTFGLCBOby4xMSwgTGFuZSAyMDYsIERhLUFuIFJvYWQgU2VjLiAxLAotCQkJCVRhaXBlaSAgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy04NiAgIChoZXgpCQlBQkIgSW5jLi9Ub3RhbGZsb3cKLTAwMTM4NiAgICAgKGJhc2UgMTYpCQlBQkIgSW5jLi9Ub3RhbGZsb3cKLQkJCQk3MDUxIEluZHVzdHJpYWwgQmx2ZC4KLQkJCQlCYXJ0bGVzdmlsbGUgT0sgNzQwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTg3ICAgKGhleCkJCTI3TSBUZWNobm9sb2dpZXMgQUIKLTAwMTM4NyAgICAgKGJhc2UgMTYpCQkyN00gVGVjaG5vbG9naWVzIEFCCi0JCQkJRGlza2V0dGdhdGFuIDExCi0JCQkJTGlua29waW5nICBTLTU4MyAzNQotCQkJCVNXRURFTgotCi0wMC0xMy04OCAgIChoZXgpCQlXaU1lZGlhIEFsbGlhbmNlCi0wMDEzODggICAgIChiYXNlIDE2KQkJV2lNZWRpYSBBbGxpYW5jZQotCQkJCTI0MDAgQ2FtaW5vIFJhbW9uCi0JCQkJU3VpdGUgMzc1Ci0JCQkJU2FuIFJhbW9uIENBIDk0NTgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy04OSAgIChoZXgpCQlSZWRlcyBkZSBUZWxlZm9uaWEgTW92aWwgUy5BLgotMDAxMzg5ICAgICAoYmFzZSAxNikJCVJlZGVzIGRlIFRlbGVmb25pYSBNb3ZpbCBTLkEuCi0JCQkJQy9QdWVydG8gZGUgbGEgTW9yY3VlcmEgMTQgQjQKLQkJCQlMZWdhbmVzIE1hZHJpZCAyODkxOAotCQkJCVNQQUlOCi0KLTAwLTEzLThBICAgKGhleCkJCVFJTkdEQU8gR09FUlRFSyBFTEVDVFJPTklDUyBDTy4sTFRELgotMDAxMzhBICAgICAoYmFzZSAxNikJCVFJTkdEQU8gR09FUlRFSyBFTEVDVFJPTklDUyBDTy4sTFRELgotCQkJCVJvb20gNjA1LElubm92YXRpb24gQnVpbGRpbmcsSGktdGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJUUlOR0RBTyBTSEFORE9ORyAyNjYwNjEKLQkJCQlDSElOQQotCi0wMC0xMy04QiAgIChoZXgpCQlQaGFudG9tIFRlY2hub2xvZ2llcyBMTEMKLTAwMTM4QiAgICAgKGJhc2UgMTYpCQlQaGFudG9tIFRlY2hub2xvZ2llcyBMTEMKLQkJCQk3ODI1IEZheSBBdmVudWUsIFN1aXRlIDIwMAotCQkJCUxhIEpvbGxhIENBIDkyMDM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy04QyAgIChoZXgpCQlLdW15b3VuZy5Dby5MdGQKLTAwMTM4QyAgICAgKGJhc2UgMTYpCQlLdW15b3VuZy5Dby5MdGQKLQkJCQlTZW91bCBLWSBidWlsZGluZywgNDAtMTcgSGFuZ2FuZyBSbywgM0dhLCBZb3VuZ3Nhbi1HdQotCQkJCVNlb3VsICAxNDAtODgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLThEICAgKGhleCkJCUtpbmdob2xkCi0wMDEzOEQgICAgIChiYXNlIDE2KQkJS2luZ2hvbGQKLQkJCQkxMUYsIE5vLiA5NjUsIEp1bmdqZW5nIFJkLgotCQkJCUp1bmdoZSBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy04RSAgIChoZXgpCQlGT0FCIEVsZWt0cm9uaWsgQUIKLTAwMTM4RSAgICAgKGJhc2UgMTYpCQlGT0FCIEVsZWt0cm9uaWsgQUIKLQkJCQlTYW5rdCBKb3JnZW5zIFZhZyA4Ci0JCQkJR290aGVuYnVyZyAgNDIyIDQ5Ci0JCQkJU1dFREVOCi0KLTAwLTEzLThGICAgKGhleCkJCUFzaWFyb2NrIEluY29ycG9yYXRpb24KLTAwMTM4RiAgICAgKGJhc2UgMTYpCQlBc2lhcm9jayBJbmNvcnBvcmF0aW9uCi0JCQkJUC5PLiBCb3g5NTcsIE9mZnNob3JlIEluY29ycG9yYXRpb25zIENlbnRyZQotCQkJCVJvYWQgVG93biBUb3J0b2xhIAotCQkJCVZJUkdJTiBJU0xBTkRTLCBCUklUSVNICi0KLTAwLTEzLTkwICAgKGhleCkJCVRlcm10ZWsgQ29tcHV0ZXIgQ28uLCBMdGQKLTAwMTM5MCAgICAgKGJhc2UgMTYpCQlUZXJtdGVrIENvbXB1dGVyIENvLiwgTHRkCi0JCQkJMkYsIE5vLiAxMDAsIExpIERlIFN0LiwKLQkJCQlDaHVuZyBIbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTkxICAgKGhleCkJCU9VRU4gQ08uLExURC4KLTAwMTM5MSAgICAgKGJhc2UgMTYpCQlPVUVOIENPLixMVEQuCi0JCQkJR290YW5kYSBOVCBCbGRnLjdGLAotCQkJCTUtMiBIaWdhc2hpIEdvdGFuZGEgNC1jaG9tZQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTEzLTkyICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotMDAxMzkyICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZW51ZQotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtOTMgICAoaGV4KQkJUGFudGEgU3lzdGVtcywgSW5jLgotMDAxMzkzICAgICAoYmFzZSAxNikJCVBhbnRhIFN5c3RlbXMsIEluYy4KLQkJCQkyMDQ1MCBTdGV2ZW5zIENyZWVrIEJsdmQuCi0JCQkJU3VpdGUgNDAwCi0JCQkJQ3VwZXJ0aW5vIENhbGlmb3JuaWEgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTk0ICAgKGhleCkJCUluZm9oYW5kIENvLixMdGQKLTAwMTM5NCAgICAgKGJhc2UgMTYpCQlJbmZvaGFuZCBDby4sTHRkCi0JCQkJS3JhbnotVGVjaG5vICMxMjA3LCA1NDQyLTEsIFNhbmdkYWV3b24tZG9uZywgSnVuZ3dvbi1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2Mi04MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtOTUgICAoaGV4KQkJY29uZ2F0ZWMgQUcKLTAwMTM5NSAgICAgKGJhc2UgMTYpCQljb25nYXRlYyBBRwotCQkJCUF1d2llc2Vuc3RyYXNzZSA1Ci0JCQkJRGVnZ2VuZG9yZiAgOTQ0NjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTk2ICAgKGhleCkJCUFjYmVsIFBvbHl0ZWNoIEluYy4KLTAwMTM5NiAgICAgKGJhc2UgMTYpCQlBY2JlbCBQb2x5dGVjaCBJbmMuCi0JCQkJTm8uMTU5LFNlYy4zLCBUYW0tS2luZyBSZC4sCi0JCQkJVGFtc3VpIFRhaXBlaSAyNTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTk3ICAgKGhleCkJCVhzaWdvIFN5c3RlbXMsIEluYy4KLTAwMTM5NyAgICAgKGJhc2UgMTYpCQlYc2lnbyBTeXN0ZW1zLCBJbmMuCi0JCQkJOTQwIFN0ZXdhcnQgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTk4ICAgKGhleCkJCVRyYWZmaWNTaW0gQ28uLEx0ZAotMDAxMzk4ICAgICAoYmFzZSAxNikJCVRyYWZmaWNTaW0gQ28uLEx0ZAotCQkJCTIzLTkgTWl0YS1iaXJ1IDJGLCBDaGl5b2RhIDMtY2hvbWUKLQkJCQlOYWthLWt1LCBOYWdveWEKLQkJCQlBaWNoaSBOb24gNDYwLTAwMTIKLQkJCQlKQVBBTgotCi0wMC0xMy05OSAgIChoZXgpCQlTVEFDIENvcnBvcmF0aW9uLgotMDAxMzk5ICAgICAoYmFzZSAxNikJCVNUQUMgQ29ycG9yYXRpb24uCi0JCQkJMi0xNi0zNyxmdWppbWkKLQkJCQlzYXlhbWEtc2hpIHNhaXRhbWEgMzUwLTEzMDYKLQkJCQlKQVBBTgotCi0wMC0xMy05QSAgIChoZXgpCQlLLXViaXF1ZSBJRCBDb3JwLgotMDAxMzlBICAgICAoYmFzZSAxNikJCUstdWJpcXVlIElEIENvcnAuCi0JCQkJWWFtYXNhbiBCbGRnLjhGLAotCQkJCU5paG9uYmFzaGkgSG9uY2hvMi02LTEzCi0JCQkJQ2h1by1rdSBUb2t5byAxMDMtMDAyMwotCQkJCUpBUEFOCi0KLTAwLTEzLTlCICAgKGhleCkJCWlvSU1BR0UgTHRkLgotMDAxMzlCICAgICAoYmFzZSAxNikJCWlvSU1BR0UgTHRkLgotCQkJCTMgTWFza2l0IFN0cmVldAotCQkJCUhlcnpsaXlhIFBpdHVhY2ggSUwgNDY3MzMKLQkJCQlJU1JBRUwKLQotMDAtMTMtOUMgICAoaGV4KQkJRXhhdmVyYSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTM5QyAgICAgKGJhc2UgMTYpCQlFeGF2ZXJhIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE5NSBOZXcgSGFtcHNoaXJlIEF2ZW51ZQotCQkJCVN1aXRlIDE1NQotCQkJCVBvcnRzbW91dGggTkggMDM4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTlEICAgKGhleCkJCU1hcnZlbGwgSGlzcGFuYSBTLkwuIAotMDAxMzlEICAgICAoYmFzZSAxNikJCU1hcnZlbGwgSGlzcGFuYSBTLkwuIAotCQkJCUMvIENoYXJsZXMgUm9iZXJ0IERhcndpbiwgMgotCQkJCVBhcmMgVGVjbm9sb2dpYyBQYXRlcm5hIDQ2OTgwCi0JCQkJU1BBSU4KLQotMDAtMTMtOUUgICAoaGV4KQkJQ2lhcmEgVGVjaG5vbG9naWVzIEluYy4KLTAwMTM5RSAgICAgKGJhc2UgMTYpCQlDaWFyYSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTkzMDAgVHJhbnMgQ2FuYWRhIEhpZ2h3YXkKLQkJCQlTYWludC1MYXVyZW50IFF1ZWJlYyBINFMgMUs1Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLTlGICAgKGhleCkJCUVsZWN0cm9uaWNzIERlc2lnbiBTZXJ2aWNlcywgQ28uLCBMdGQuCi0wMDEzOUYgICAgIChiYXNlIDE2KQkJRWxlY3Ryb25pY3MgRGVzaWduIFNlcnZpY2VzLCBDby4sIEx0ZC4KLQkJCQk1LTEwLTIwIFRva3VtYXJ1Ci0JCQkJSXRhYmFzaGkta3UgVG9reW8gMTc1LTAwODMKLQkJCQlKQVBBTgotCi0wMC0xMy1BMCAgIChoZXgpCQlBTEdPU1lTVEVNIENvLiwgTHRkLgotMDAxM0EwICAgICAoYmFzZSAxNikJCUFMR09TWVNURU0gQ28uLCBMdGQuCi0JCQkJNjU2IGtvYmlyYW8gbWloYXJhLWNobwotCQkJCXNha2FpIG9zYWthIDU4Ny0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMTMtQTEgICAoaGV4KQkJQ3JvdyBFbGVjdHJvbmljIEVuZ2VuZWVyaW5nCi0wMDEzQTEgICAgIChiYXNlIDE2KQkJQ3JvdyBFbGVjdHJvbmljIEVuZ2VuZWVyaW5nCi0JCQkJMTIgS2lubmVyZXQgc3QuCi0JCQkJQWlycG9ydCBDaXR5ICAKLQkJCQlJU1JBRUwKLQotMDAtMTMtQTIgICAoaGV4KQkJTWF4U3RyZWFtLCBJbmMKLTAwMTNBMiAgICAgKGJhc2UgMTYpCQlNYXhTdHJlYW0sIEluYwotCQkJCTM1NSBTb3V0aCA1MjAgV2VzdCBTdWl0ZSAxODAKLQkJCQlMaW5kb24gVXQgODQwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUEzICAgKGhleCkJCVNpZW1lbnMgQ29tIENQRSBEZXZpY2VzCi0wMDEzQTMgICAgIChiYXNlIDE2KQkJU2llbWVucyBDb20gQ1BFIERldmljZXMKLQkJCQk0ODQ5IEFscGhhIFJvYWQKLQkJCQlEYWxsYXMgVGV4YXMgNzUyNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUE0ICAgKGhleCkJCUtleUV5ZSBDb21tdW5pY2F0aW9ucwotMDAxM0E0ICAgICAoYmFzZSAxNikJCUtleUV5ZSBDb21tdW5pY2F0aW9ucwotCQkJCTk3ODUgR29ldGhlCi0JCQkJU2FjcmFtZW50byBDQSA5NTgyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQTUgICAoaGV4KQkJR2VuZXJhbCBTb2x1dGlvbnMsIExURC4KLTAwMTNBNSAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIFNvbHV0aW9ucywgTFRELgotCQkJCTU5MDIgU292ZXJlaWduIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzAzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQTYgICAoaGV4KQkJRXh0cmljb20gTHRkCi0wMDEzQTYgICAgIChiYXNlIDE2KQkJRXh0cmljb20gTHRkCi0JCQkJR2xpbCBZYW0KLQkJCQlIZXJ6bGlhICA0NjkwNQotCQkJCUlTUkFFTAotCi0wMC0xMy1BNyAgIChoZXgpCQlCQVRURUxMRSBNRU1PUklBTCBJTlNUSVRVVEUKLTAwMTNBNyAgICAgKGJhc2UgMTYpCQlCQVRURUxMRSBNRU1PUklBTCBJTlNUSVRVVEUKLQkJCQk1MDUgS0lORyBBVkUKLQkJCQlDT0xVTUJVUyBPSElPIDQzMjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1BOCAgIChoZXgpCQlUYW5pc3lzIFRlY2hub2xvZ3kKLTAwMTNBOCAgICAgKGJhc2UgMTYpCQlUYW5pc3lzIFRlY2hub2xvZ3kKLQkJCQkxMjIwMSBUZWNobm9sb2d5IEJsdmQuCi0JCQkJU3VpdGUgMTI1Ci0JCQkJQXVzdGluIFRYIDc4NzI3LTY2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUE5ICAgKGhleCkJCVNvbnkgQ29ycG9yYXRpb24KLTAwMTNBOSAgICAgKGJhc2UgMTYpCQlTb255IENvcnBvcmF0aW9uCi0JCQkJR290ZW55YW1hIFRlYyA1LTEtMgotCQkJCUtpdGFzaGluYWdhd2EsCi0JCQkJU2hpbmFnYXdhLWt1IFRva3lvIDE0MS0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMTMtQUEgICAoaGV4KQkJQUxTICAmIFRFQyBMdGQuCi0wMDEzQUEgICAgIChiYXNlIDE2KQkJQUxTICAmIFRFQyBMdGQuCi0JCQkJNiBCLiBLYXphY2h5YSBzdHIuCi0JCQkJU2FyYXRvdiBTYXJhdG92IHJlZ2lvbiA0MTA2MDAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTMtQUIgICAoaGV4KQkJVGVsZW1vdGl2ZSBBRwotMDAxM0FCICAgICAoYmFzZSAxNikJCVRlbGVtb3RpdmUgQUcKLQkJCQlCcmVpdHdpZXNlbgotCQkJCU11ZWhsaGF1c2VuIEJhZGVuIFd1ZXJ0dGVtYmVyZyA3MzM0NwotCQkJCUdFUk1BTlkKLQotMDAtMTMtQUMgICAoaGV4KQkJU3VubXl1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLTAwMTNBQyAgICAgKGJhc2UgMTYpCQlTdW5teXVuZyBFbGVjdHJvbmljcyBDby4sIExURAotCQkJCUxBUkdPLVBMQVpBIDhGLCBKYW5naGFuZy1Eb25nCi0JCQkJODU3LTEsIElsc2FuLUt1Ci0JCQkJS295YW5nIEt5dW5na2kgNDExLTgzNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy1BRCAgIChoZXgpCQlTZW5kbyBMdGQKLTAwMTNBRCAgICAgKGJhc2UgMTYpCQlTZW5kbyBMdGQKLQkJCQlIYXRjaGZvcmQgQnJvb2sKLQkJCQlIYXRjaGZvcmQgV2F5Ci0JCQkJQmlybWluZ2hhbSBXZXN0IE1pZGxhbmRzIEIyNiAzUloKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMy1BRSAgIChoZXgpCQlSYWRpYW5jZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTNBRSAgICAgKGJhc2UgMTYpCQlSYWRpYW5jZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkzNTAgV3lubiBEci4KLQkJCQlIdW50c3ZpbGxlIEFsYWJhbWEgMzU4MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUFGICAgKGhleCkJCU5VTUEgVGVjaG5vbG9neSxJbmMuCi0wMDEzQUYgICAgIChiYXNlIDE2KQkJTlVNQSBUZWNobm9sb2d5LEluYy4KLQkJCQk0RixObzc3OCxTZWMgNCxQYXRjaCBSZC4KLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtQjAgICAoaGV4KQkJSmFibG90cm9uCi0wMDEzQjAgICAgIChiYXNlIDE2KQkJSmFibG90cm9uCi0JCQkJUG9kIFNrYWxrb3UgMzMKLQkJCQlKYWJsb25lYyBuYWQgTmlzb3UgIDQ2NjAxCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMTMtQjEgICAoaGV4KQkJSW50ZWxsaWdlbnQgQ29udHJvbCBTeXN0ZW1zIChBc2lhKSBQdGUgTHRkCi0wMDEzQjEgICAgIChiYXNlIDE2KQkJSW50ZWxsaWdlbnQgQ29udHJvbCBTeXN0ZW1zIChBc2lhKSBQdGUgTHRkCi0JCQkJNzAgVWJpIENyZXNjZW50ICMwMS0xMgotCQkJCVViaSBUZWNoIFBhcmsKLQkJCQk0MDg1NzAKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTMtQjIgICAoaGV4KQkJQ2FyYWxsb24gTGltaXRlZAotMDAxM0IyICAgICAoYmFzZSAxNikJCUNhcmFsbG9uIExpbWl0ZWQKLQkJCQlTdHVkaW8gRzIwIFNoZXBoZXJkcyBCdWlsZGluZwotCQkJCVJvY2tsZXkgUm9hZAotCQkJCUxvbmRvbiBXMTQgMERBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTMtQjMgICAoaGV4KQkJRWNvbSBDb21tdW5pY2F0aW9ucyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxM0IzICAgICAoYmFzZSAxNikJCUVjb20gQ29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlGbG9vciA3LCBNYWNoaW5lcnkgSW5kdXN0cnkgQnVpbGRpbmcsIE5vLjIyLAotCQkJCUJhaXdhbnpodWFuZyBTdHJlZXQsIFhpY2hlbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAKLQkJCQlDSElOQQotCi0wMC0xMy1CNCAgIChoZXgpCQlBcHBlYXIgVFYKLTAwMTNCNCAgICAgKGJhc2UgMTYpCQlBcHBlYXIgVFYKLQkJCQlMaWxsZWFrZXJ2ZWllbiA2ZAotCQkJCVAuTy4gQm94IDggTGlsbGVha2VyCi0JCQkJTk8tMDIxNiBPc2xvIAotCQkJCU5PUldBWQotCi0wMC0xMy1CNSAgIChoZXgpCQlXYXZlc2F0Ci0wMDEzQjUgICAgIChiYXNlIDE2KQkJV2F2ZXNhdAotCQkJCTEzNzUsIFRyYW5zLUNhbmFkYSBIaWdod2F5Ci0JCQkJU3VpdGUgMzAwCi0JCQkJRG9ydmFsIFF1ZWJlYyBIOVAgMlc4Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLUI2ICAgKGhleCkJCVNsaW5nIE1lZGlhLCBJbmMuCi0wMDEzQjYgICAgIChiYXNlIDE2KQkJU2xpbmcgTWVkaWEsIEluYy4KLQkJCQkxODQwIEdhdGV3YXkgQ2VudGVyCi0JCQkJMm5kIEZsb29yCi0JCQkJU2FuIE1hdGVvIENBIDk0NDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1CNyAgIChoZXgpCQlTY2FudGVjaCBJRAotMDAxM0I3ICAgICAoYmFzZSAxNikJCVNjYW50ZWNoIElECi0JCQkJQW1lcnNmb29ydHNlc3RyYWF0IDEyNAotCQkJCVNvZXN0ZXJiZXJnIFV0cmVjaHQgMzc2OSBBTgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTEzLUI4ICAgKGhleCkJCVJ5Q28gRWxlY3Ryb25pYyBTeXN0ZW1zIExpbWl0ZWQKLTAwMTNCOCAgICAgKGJhc2UgMTYpCQlSeUNvIEVsZWN0cm9uaWMgU3lzdGVtcyBMaW1pdGVkCi0JCQkJVW5pdCBFLCBDYXJ0ZWwgQnVzaW5lc3MgRXN0YXRlCi0JCQkJRWRpbmJ1cmdoIFdheQotCQkJCUhhcmxvdyBFc3NleCBDTTIwIDJUVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEzLUI5ICAgKGhleCkJCUJNIFNQQQotMDAxM0I5ICAgICAoYmFzZSAxNikJCUJNIFNQQQotCQkJCVZJQSBNSUxBTk8gNTQvNTYKLQkJCQlSb3p6YW5vICAyMDA4OQotCQkJCUlUQUxZCi0KLTAwLTEzLUJBICAgKGhleCkJCVJlYWR5TGlua3MgSW5jCi0wMDEzQkEgICAgIChiYXNlIDE2KQkJUmVhZHlMaW5rcyBJbmMKLQkJCQk2NTk1IEVkZW52YWxlIEJvdWxldmFyZAotCQkJCVN1aXRlIDE4MAotCQkJCUVkZW4gUHJhaXJpZSBNTiA1NTM0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQkIgICAoaGV4KQkJU21hcnR2dWUgQ29ycG9yYXRpb24KLTAwMTNCQiAgICAgKGJhc2UgMTYpCQlTbWFydHZ1ZSBDb3Jwb3JhdGlvbgotCQkJCTEwMiBXb29kbW9udCBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlOYXNodmlsbGUgVE4gMzcyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUJDICAgKGhleCkJCUFydGltaSBMdGQKLTAwMTNCQyAgICAgKGJhc2UgMTYpCQlBcnRpbWkgTHRkCi0JCQkJQmV0amVtYW4gSG91c2UKLQkJCQkxMDQgSGlsbHMgUm9hZAotCQkJCUNhbWJyaWRnZSBDYW1icmlkZ2VzaGlyZSBDQjIgMUxRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTMtQkQgICAoaGV4KQkJSFlNQVRPTSBTQQotMDAxM0JEICAgICAoYmFzZSAxNikJCUhZTUFUT00gU0EKLQkJCQlab25lIEluZHVzdHJpZWxsZQotCQkJCTE3NSBydWUgZGUgTWFzc2FjYW4KLQkJCQlWRU5EQVJHVUVTIEhFUkFVTFQgMzQ3NDAKLQkJCQlGUkFOQ0UKLQotMDAtMTMtQkUgICAoaGV4KQkJVmlydHVhbCBDb25leGlvbnMKLTAwMTNCRSAgICAgKGJhc2UgMTYpCQlWaXJ0dWFsIENvbmV4aW9ucwotCQkJCTQxMCBydWUgU3QtTmljb2xhcywgc3VpdGUgNjAwCi0JCQkJTW9udHJlYWwgUXVlYmVjIEgyWSAyUDUKLQkJCQlDQU5BREEKLQotMDAtMTMtQkYgICAoaGV4KQkJTWVkaWEgU3lzdGVtIFBsYW5uaW5nIENvcnAuCi0wMDEzQkYgICAgIChiYXNlIDE2KQkJTWVkaWEgU3lzdGVtIFBsYW5uaW5nIENvcnAuCi0JCQkJNEYgVmVsY28tS3Vyb21vbiBCbGRnLgotCQkJCTMtMTQtNSBVZW5vLAotCQkJCVRhaXRvLWt1LCBUb2t5byAxMTAtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTEzLUMwICAgKGhleCkJCVRyaXggVGVjbm9sb2dpYSBMdGRhLgotMDAxM0MwICAgICAoYmFzZSAxNikJCVRyaXggVGVjbm9sb2dpYSBMdGRhLgotCQkJCVJ1YSBkYSBQYXosIDE5NTcgLSBDaGFjYXJhIFNhbnRvIEFudG9uaW8KLQkJCQlTYW8gUGF1bG8gIDA0NzEzLTAwMgotCQkJCUJSQVpJTAotCi0wMC0xMy1DMSAgIChoZXgpCQlBc29rYSBVU0EgQ29ycG9yYXRpb24KLTAwMTNDMSAgICAgKGJhc2UgMTYpCQlBc29rYSBVU0EgQ29ycG9yYXRpb24KLQkJCQk1NTggUGlsZ3JpbSBEcml2ZQotCQkJCVVuaXQgSAotCQkJCUZvc3RlciBDaXR5IENBIDk0NDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1DMiAgIChoZXgpCQlXQUNPTSBDby4sTHRkCi0wMDEzQzIgICAgIChiYXNlIDE2KQkJV0FDT00gQ28uLEx0ZAotCQkJCTItNTEwLTEgVG95b25vZGFpIE90b25lLW1hY2hpCi0JCQkJS2l0YXNhaXRhbWEtZ3VuIFNhaXRhbWEgMzQ5LTExNDgKLQkJCQlKQVBBTgotCi0wMC0xMy1DMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDEzQzMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1DNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDEzQzQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1DNSAgIChoZXgpCQlMSUdIVFJPTiBGSUJFUi1PUFRJQyBERVZJQ0VTIElOQy4KLTAwMTNDNSAgICAgKGJhc2UgMTYpCQlMSUdIVFJPTiBGSUJFUi1PUFRJQyBERVZJQ0VTIElOQy4KLQkJCQk1MS0xIE1vb25weXVuZy1Eb25nLCBUYWVkdWNrLUd1Ci0JCQkJVGFlam9uIDMwNi0yMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtQzYgICAoaGV4KQkJT3BlbkdlYXIsIEluYwotMDAxM0M2ICAgICAoYmFzZSAxNikJCU9wZW5HZWFyLCBJbmMKLQkJCQk3OTg0IFNvdXRoIFdlbGJ5IFBhcmsgIzEwMQotCQkJCVNhbHQgTGFrZSBDaXR5IFVUQUggODQwODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUM3ICAgKGhleCkJCUlPTk9TIENvLixMdGQuCi0wMDEzQzcgICAgIChiYXNlIDE2KQkJSU9OT1MgQ28uLEx0ZC4KLQkJCQkxLTM2LTE4IE1peWFzYWthCi0JCQkJU2V0YWdheWEta3UgVG9reW8gMTU2LTAwNTEKLQkJCQlKQVBBTgotCi0wMC0xMy1DOCAgIChoZXgpCQlQSVJFTExJIEJST0FEQkFORCBTT0xVVElPTlMgUy5QLkEuCi0wMDEzQzggICAgIChiYXNlIDE2KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TIFMuUC5BLgotCQkJCVZJQUxFIFNBUkNBIDIyMgotCQkJCU1JTEFOTyAgMjAxMjYKLQkJCQlJVEFMWQotCi0wMC0xMy1DOSAgIChoZXgpCQlCZXlvbmQgQWNoaWV2ZSBFbnRlcnByaXNlcyBMdGQuCi0wMDEzQzkgICAgIChiYXNlIDE2KQkJQmV5b25kIEFjaGlldmUgRW50ZXJwcmlzZXMgTHRkLgotCQkJCQotCQkJCVAuTy4gQm94IDk1NywgT2Zmc2hvcmUgSW5jb3Jwb3JhdGlvbnMgQ2VudHJlCi0JCQkJUm9hZCBUb3duIFRvcnRvbGEgCi0JCQkJVklSR0lOIElTTEFORFMsIEJSSVRJU0gKLQotMDAtMTMtQ0EgICAoaGV4KQkJUGljbyBEaWdpdGFsCi0wMDEzQ0EgICAgIChiYXNlIDE2KQkJUGljbyBEaWdpdGFsCi0JCQkJNjI2MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQ0IgICAoaGV4KQkJWmVuaXRlbCBOb3J3YXkgQVMKLTAwMTNDQiAgICAgKGJhc2UgMTYpCQlaZW5pdGVsIE5vcndheSBBUwotCQkJCVNhbmRha2VyIHYgMjQgYwotCQkJCVBPIEJveCA0NDk4Ci0JCQkJT3NsbyAwNDAzCi0JCQkJTk9SV0FZCi0KLTAwLTEzLUNDICAgKGhleCkJCVRhbGwgTWFwbGUgU3lzdGVtcwotMDAxM0NDICAgICAoYmFzZSAxNikJCVRhbGwgTWFwbGUgU3lzdGVtcwotCQkJCTg1IFNhcmF0b2dhIEF2ZSBTdWl0ZSAxMzkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQ0QgICAoaGV4KQkJTVRJIGNvLiBMVEQKLTAwMTNDRCAgICAgKGJhc2UgMTYpCQlNVEkgY28uIExURAotCQkJCTE2Ni0xMCBLYXJhay1kb25nCi0JCQkJUiZEIEdyb3VwIDMKLQkJCQlTb25ncGEta3UgU2VvdWwgMTM4LTgxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy1DRSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMTNDRSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktdGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTEzLUNGICAgKGhleCkJCTRBY2Nlc3MgQ29tbXVuaWNhdGlvbnMKLTAwMTNDRiAgICAgKGJhc2UgMTYpCQk0QWNjZXNzIENvbW11bmljYXRpb25zCi0JCQkJMSBOLiBMYVNhbGxlIFN0LgotCQkJCVN1aXRlIDIwMTUKLQkJCQlDaGljYWdvIElMIDYwNjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1EMCAgIChoZXgpCQl0KyBNZWRpY2FsIEx0ZAotMDAxM0QwICAgICAoYmFzZSAxNikJCXQrIE1lZGljYWwgTHRkCi0JCQkJMTc0RSBNaWx0b24gUGFyawotCQkJCUFiaW5nZG9uICBPWDE0IDRTRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEzLUQxICAgKGhleCkJCUtJUksgdGVsZWNvbSBBL1MKLTAwMTNEMSAgICAgKGJhc2UgMTYpCQlLSVJLIHRlbGVjb20gQS9TCi0JCQkJTGFuZ21hcmtzdmVqIDM0Ci0JCQkJSG9yc2VucyAgODcwMAotCQkJCURFTk1BUksKLQotMDAtMTMtRDIgICAoaGV4KQkJUEFHRSBJQkVSSUNBLCBTLkEuCi0wMDEzRDIgICAgIChiYXNlIDE2KQkJUEFHRSBJQkVSSUNBLCBTLkEuCi0JCQkJQVYuIERFIExBIElORFVTVFJJQSwgMjQKLQkJCQlUUkVTIENBTlRPUyBNQURSSUQgMjg3NjAKLQkJCQlTUEFJTgotCi0wMC0xMy1EMyAgIChoZXgpCQlNSUNSTy1TVEFSIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0wMDEzRDMgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotCQkJCU5PLiA2OSwgTEktREUgU1QuCi0JCQkJSlVORy1IRSBDSVRZIFRBSVBFSSBIU0lFTiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLUQ0ICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAxM0Q0ICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCU5vLjUgU2hpbmcgWWVoIFN0cmVldAotCQkJCUt3ZWkgU2hhbiBIc2lhbmcKLQkJCQlUYW8gWXVhbiBIc2llbiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy1ENSAgIChoZXgpCQlXaU5ldHdvcmtzIExURAotMDAxM0Q1ICAgICAoYmFzZSAxNikJCVdpTmV0d29ya3MgTFRECi0JCQkJMzIgTWFza2l0IFN0LgotCQkJCUhlcnplbGl5YSAgNDY3MzMKLQkJCQlJU1JBRUwKLQotMDAtMTMtRDYgICAoaGV4KQkJVElJIE5FVFdPUksgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDEzRDYgICAgIChiYXNlIDE2KQkJVElJIE5FVFdPUksgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTM4NSBBS1JPTiBTVFJFRVQKLQkJCQlDT1BJQUdVRSBOWSAxMTcyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRDcgICAoaGV4KQkJU1BJRENPTSBUZWNobm9sb2dpZXMgU0EKLTAwMTNENyAgICAgKGJhc2UgMTYpCQlTUElEQ09NIFRlY2hub2xvZ2llcyBTQQotCQkJCTEzNyBhdmVudWUgZHUgR2VuZXJhbCBMRUNMRVJDCi0JCQkJQk9VUkcgTEEgUkVJTkUgIDkyMzQwCi0JCQkJRlJBTkNFCi0KLTAwLTEzLUQ4ICAgKGhleCkJCVByaW5jZXRvbiBJbnN0cnVtZW50cwotMDAxM0Q4ICAgICAoYmFzZSAxNikJCVByaW5jZXRvbiBJbnN0cnVtZW50cwotCQkJCTM2NjAgUXVha2VyYnJpZGdlIFJvYWQKLQkJCQlUcmVudG9uIE5KIDA4NjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1EOSAgIChoZXgpCQlNYXRyaXggUHJvZHVjdCBEZXZlbG9wbWVudCwgSW5jLgotMDAxM0Q5ICAgICAoYmFzZSAxNikJCU1hdHJpeCBQcm9kdWN0IERldmVsb3BtZW50LCBJbmMuCi0JCQkJMTMgTm9ydGggQmlyZCBTdHJlZXQKLQkJCQlTdW4gUHJhaXJpZSBXSSA1MzU5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtREEgICAoaGV4KQkJRGlza3dhcmUgQ28uLCBMdGQKLTAwMTNEQSAgICAgKGJhc2UgMTYpCQlEaXNrd2FyZSBDby4sIEx0ZAotCQkJCTEtNC0xMiBLaWJhCi0JCQkJTmFrb2ppa2liYSBCbGRnLjVGCi0JCQkJS290by1rdSBUb2t5byAxMzUtMDA0MgotCQkJCUpBUEFOCi0KLTAwLTEzLURCICAgKGhleCkJCVNIT0VJIEVsZWN0cmljIENvLixMdGQKLTAwMTNEQiAgICAgKGJhc2UgMTYpCQlTSE9FSSBFbGVjdHJpYyBDby4sTHRkCi0JCQkJMS0yOS0yLFdha2FiYXlhc2hpCi0JCQkJU2V0YWdheWEta3UgVG9reW8gMTU0LTAwMjMKLQkJCQlKQVBBTgotCi0wMC0xMy1EQyAgIChoZXgpCQlJQlRFSyBJTkMuCi0wMDEzREMgICAgIChiYXNlIDE2KQkJSUJURUsgSU5DLgotCQkJCTE2RiwgMzAsIFBlaS1QaW5nIEVhc3QgUmQuLAotCQkJCVRhaXBlaSAgMTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy1ERCAgIChoZXgpCQlBYmJvdHQgRGlhZ25vc3RpY3MKLTAwMTNERCAgICAgKGJhc2UgMTYpCQlBYmJvdHQgRGlhZ25vc3RpY3MKLQkJCQk1NDQwIFBhdHJpY2sgSGVucnkgRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtREUgICAoaGV4KQkJQWRhcHQ0LCBMTEMKLTAwMTNERSAgICAgKGJhc2UgMTYpCQlBZGFwdDQsIExMQwotCQkJCTEwNTAgVyBOYXNhIEJsdmQsCi0JCQkJU3VpdGUgMTM0Ci0JCQkJTWVsYm91cm5lIEZMIDMyOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1ERiAgIChoZXgpCQlSeXZvciBDb3JwLgotMDAxM0RGICAgICAoYmFzZSAxNikJCVJ5dm9yIENvcnAuCi0JCQkJMTUxNDUgUmVkIEhpbGwgQXZlLgotCQkJCVN1aXRlIEIKLQkJCQlUdXN0aW4gQ0EgOTI3ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUUwICAgKGhleCkJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotMDAxM0UwICAgICAoYmFzZSAxNikJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTIyODgsIE9zaGlub2hhcmEsCi0JCQkJWWFzdS1zaGkgU2hpZ2EgNTIwLTIzOTMKLQkJCQlKQVBBTgotCi0wMC0xMy1FMSAgIChoZXgpCQlJcHJvYmUgQUIKLTAwMTNFMSAgICAgKGJhc2UgMTYpCQlJcHJvYmUgQUIKLQkJCQlGaW5sYW5kc2dhdGFuIDEyCi0JCQkJS2lzdGEgU0UtMTY0NzQKLQkJCQlTV0VERU4KLQotMDAtMTMtRTIgICAoaGV4KQkJR2VvVmlzaW9uIEluYy4KLTAwMTNFMiAgICAgKGJhc2UgMTYpCQlHZW9WaXNpb24gSW5jLgotCQkJCTEyRi4sTm8uMzE2LFNlYy4xLAotCQkJCU5laWh1IFJkLE5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLUUzICAgKGhleCkJCUNvVmkgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDEzRTMgICAgIChiYXNlIDE2KQkJQ29WaSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk2MzAwIEJyaWRnZXBvaW50IFBhcmt3YXkKLQkJCQlTdWl0ZSAzMDAsIEJsZGcuIElJCi0JCQkJQXVzdGluIFRleGFzIDc4NzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1FNCAgIChoZXgpCQlZQU5HSkFFIFNZU1RFTVMgQ09SUC4KLTAwMTNFNCAgICAgKGJhc2UgMTYpCQlZQU5HSkFFIFNZU1RFTVMgQ09SUC4KLQkJCQkxMjAyLiBIQU5TSElOIElUIFRPV0VSIEd1cm8tM0RvbmcsCi0JCQkJR3Vyby1HdQotCQkJCVNlb3VsIDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtRTUgICAoaGV4KQkJVEVOT1NZUywgSU5DLgotMDAxM0U1ICAgICAoYmFzZSAxNikJCVRFTk9TWVMsIElOQy4KLQkJCQlTZW9qaW4gQi9ELCAxNTY0LTEsIFNlb2Noby1kb25nLAotCQkJCVNlb2Noby1ndQotCQkJCVNlb3VsIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtRTYgICAoaGV4KQkJVGVjaG5vbHV0aW9uCi0wMDEzRTYgICAgIChiYXNlIDE2KQkJVGVjaG5vbHV0aW9uCi0JCQkJWnVpZGVsaWpraGFsZnJvbmQgMQotCQkJCUdPVURBIFpIIDI4MDEgREQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMy1FNyAgIChoZXgpCQlIYWxjcm8KLTAwMTNFNyAgICAgKGJhc2UgMTYpCQlIYWxjcm8KLQkJCQlTdWl0ZSAxLCBMZXZlbCAxCi0JCQkJOCBHcmVlbmhpbGwgUmQKLQkJCQlXYXl2aWxsZSBTb3V0aCBBdXN0cmFsaWEgNTAzNAotCQkJCUFVU1RSQUxJQQotCi0wMC0xMy1FOCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMTNFOCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktdGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTEzLUU5ICAgKGhleCkJCVZlcmlXYXZlLCBJbmMuCi0wMDEzRTkgICAgIChiYXNlIDE2KQkJVmVyaVdhdmUsIEluYy4KLQkJCQk5NjAwIFNXIE9hayBTdC4KLQkJCQlQb3J0bGFuZCBPUiA5NzIyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRUEgICAoaGV4KQkJS2Ftc3RydXAgQS9TCi0wMDEzRUEgICAgIChiYXNlIDE2KQkJS2Ftc3RydXAgQS9TCi0JCQkJSW5kdXN0cml2ZWogMjgKLQkJCQlTdGlsbGluZyAgODY2MAotCQkJCURFTk1BUksKLQotMDAtMTMtRUIgICAoaGV4KQkJU3lzbWFzdGVyIENvcnBvcmF0aW9uCi0wMDEzRUIgICAgIChiYXNlIDE2KQkJU3lzbWFzdGVyIENvcnBvcmF0aW9uCi0JCQkJNTgwMSBDaHJpc3RpZSBBdmUuCi0JCQkJU3VpdGUgNDAwCi0JCQkJRW1lcnl2aWxsZSBDQSA5NDYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRUMgICAoaGV4KQkJU3VuYmF5IFNvZnR3YXJlIEFHCi0wMDEzRUMgICAgIChiYXNlIDE2KQkJU3VuYmF5IFNvZnR3YXJlIEFHCi0JCQkJU2Vlc3RyYXNzZSA3OAotCQkJCVJ1ZXNjaGxpa29uIFpIIDg4MDMKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xMy1FRCAgIChoZXgpCQlQU0lBCi0wMDEzRUQgICAgIChiYXNlIDE2KQkJUFNJQQotCQkJCTUxNy0xMyBJbmR1c3BpcyA1dGgKLQkJCQlTYW5nRGFlV29uRG9uZyBKdW5nV29uR3UKLQkJCQlTdW5nTmFtIEt5dW5nR2kgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLUVFICAgKGhleCkJCUpCWCBEZXNpZ25zIEluYy4KLTAwMTNFRSAgICAgKGJhc2UgMTYpCQlKQlggRGVzaWducyBJbmMuCi0JCQkJUE8gQm94IDk3MDE1OAotCQkJCUJvY2EgUmF0b24gRkwgMzM0OTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUVGICAgKGhleCkJCUtpbmdqb24gRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQKLTAwMTNFRiAgICAgKGJhc2UgMTYpCQlLaW5nam9uIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJUm9vbSA4MjcsSHVhbmFuIERpYW5saSBCdWxkaW5nLE5vLjIwNTAKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDMxCi0JCQkJQ0hJTkEKLQotMDAtMTMtRjAgICAoaGV4KQkJV2F2ZWZyb250IFNlbWljb25kdWN0b3IKLTAwMTNGMCAgICAgKGJhc2UgMTYpCQlXYXZlZnJvbnQgU2VtaWNvbmR1Y3RvcgotCQkJCTQ3NDYgNDR0aCBBdmUgU1cKLQkJCQlTdWl0ZSAyMDEKLQkJCQlTZWF0dGxlIFdBIDk4MTE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1GMSAgIChoZXgpCQlBTU9EIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDEzRjEgICAgIChiYXNlIDE2KQkJQU1PRCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTJGLiwgTm8uIDE2LCBQcm9zcGVyaXR5IFJvYWQgSUkKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1LCAgMzAwNzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLUYyICAgKGhleCkJCUtsYXMgTHRkCi0wMDEzRjIgICAgIChiYXNlIDE2KQkJS2xhcyBMdGQKLQkJCQlCcmFjZXRvd24gQnVzaW5lc3MgUGFyawotCQkJCUNsb25lZSBDbyBNZWF0aCAKLQkJCQlJUkVMQU5ECi0KLTAwLTEzLUYzICAgKGhleCkJCUdpZ2EtYnl0ZSBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDEzRjMgICAgIChiYXNlIDE2KQkJR2lnYS1ieXRlIENvbW11bmljYXRpb25zIEluYy4KLQkJCQk4RiwgTm8uNDMsIEZ1LUhzaW4gUm9hZC4gSHNpbi1UaWVuCi0JCQkJVGFpcGVpIEhzaWVuICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLUY0ICAgKGhleCkJCVBzaXRlayAoUHR5KSBMdGQKLTAwMTNGNCAgICAgKGJhc2UgMTYpCQlQc2l0ZWsgKFB0eSkgTHRkCi0JCQkJVGhlIFZpbmV5YXJkcyBPZmZpY2UgRXN0YXRlCi0JCQkJOTkgSmlwIGRlIEphZ2VyIERyaXZlCi0JCQkJVHlnZXIgVmFsbGV5IENhcGUgVG93biA3NTMwCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTEzLUY1ICAgKGhleCkJCUFraW1iaSBTeXN0ZW1zCi0wMDEzRjUgICAgIChiYXNlIDE2KQkJQWtpbWJpIFN5c3RlbXMKLQkJCQkxNDAwIEZhc2hpb24gSXNsYW5kIEJsdmQKLQkJCQlTdWl0ZSA5MDAKLQkJCQlTYW4gTWF0ZW8gQ0EgOTQ0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUY2ICAgKGhleCkJCUNpbnRlY2gKLTAwMTNGNiAgICAgKGJhc2UgMTYpCQlDaW50ZWNoCi0JCQkJMjFhIHJvdXRlIGRlIGxhIHdhbnR6ZW5hdQotCQkJCUhvZW5oZWltICA2NzgwMAotCQkJCUZSQU5DRQotCi0wMC0xMy1GNyAgIChoZXgpCQlTTUMgTmV0d29ya3MsIEluYy4KLTAwMTNGNyAgICAgKGJhc2UgMTYpCQlTTUMgTmV0d29ya3MsIEluYy4KLQkJCQkzOCBUZXNsYQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRjggICAoaGV4KQkJRGV4IFNlY3VyaXR5IFNvbHV0aW9ucwotMDAxM0Y4ICAgICAoYmFzZSAxNikJCURleCBTZWN1cml0eSBTb2x1dGlvbnMKLQkJCQkxMCBKdW5jdGlvbiBSb2FkIFBhcmt0b3duCi0JCQkJMm5kIEZsb29yIEJQIEhvdXNlCi0JCQkJSm9oYW5uZXNidXJnIEd1dGVuZyAyMDAwCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTEzLUY5ICAgKGhleCkJCUNhdmVyYSBTeXN0ZW1zCi0wMDEzRjkgICAgIChiYXNlIDE2KQkJQ2F2ZXJhIFN5c3RlbXMKLQkJCQkyMzU1IE9ha2xhbmQgUmQsIFN1aXRlIzMzCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUZBICAgKGhleCkJCUxpZmVTaXplIENvbW11bmljYXRpb25zLCBJbmMKLTAwMTNGQSAgICAgKGJhc2UgMTYpCQlMaWZlU2l6ZSBDb21tdW5pY2F0aW9ucywgSW5jCi0JCQkJOTAxIFMuIE1vcGFjCi0JCQkJQmxkZyAzLCBTdWl0ZSAzMDAKLQkJCQlBdXN0aW4gVFggNzg3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUZCICAgKGhleCkJCVJLQyBJTlNUUlVNRU5UIElOQy4KLTAwMTNGQiAgICAgKGJhc2UgMTYpCQlSS0MgSU5TVFJVTUVOVCBJTkMuCi0JCQkJMTYtNiwgS3VnYWhhcmEgNS1jaG9tZSwKLQkJCQlPaHRhLWt1IFRva3lvIDE0Ni04NTE1Ci0JCQkJSkFQQU4KLQotMDAtMTMtRkMgICAoaGV4KQkJU2lDb3J0ZXgsIEluYwotMDAxM0ZDICAgICAoYmFzZSAxNikJCVNpQ29ydGV4LCBJbmMKLQkJCQkzIENsb2NrdG93ZXIgUGxhY2UKLQkJCQlTdWl0ZSAyMTAKLQkJCQlNYXluYXJkIE1BIDAxNzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1GRCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxM0ZEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xMy1GRSAgIChoZXgpCQlHUkFORFRFQyBFTEVDVFJPTklDIENPUlAuCi0wMDEzRkUgICAgIChiYXNlIDE2KQkJR1JBTkRURUMgRUxFQ1RST05JQyBDT1JQLgotCQkJCThGLE5PLjI2OCxMaWFuIENoZW5nIFJkLixDaHVuZyBIbyBDaXR5LAotCQkJCUhzaWVuIDIzNQotCQkJCVRhaXBlaSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy1GRiAgIChoZXgpCQlEYWdlLU1USSBvZiBNQywgSW5jLgotMDAxM0ZGICAgICAoYmFzZSAxNikJCURhZ2UtTVRJIG9mIE1DLCBJbmMuCi0JCQkJNzAxIE4uIFJvZXNrZSBBdmUuCi0JCQkJTWljaGlnYW4gQ2l0eSBJTiA0NjM2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMDAgICAoaGV4KQkJTUlORVJWQSBLT1JFQSBDTy4sIExURAotMDAxNDAwICAgICAoYmFzZSAxNikJCU1JTkVSVkEgS09SRUEgQ08uLCBMVEQKLQkJCQkjMjAzLCBTSCBTaWVubmUsIFNlb2h5ZW9uLURvbmcKLQkJCQlCdW5kYW5nLUd1Ci0JCQkJU2VvbmduYW0tU2kgR3llb25nZ2ktRG8gNDYzLTgyMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC0wMSAgIChoZXgpCQlSaXZlcnRyZWUgTmV0d29ya3MgQ29ycC4KLTAwMTQwMSAgICAgKGJhc2UgMTYpCQlSaXZlcnRyZWUgTmV0d29ya3MgQ29ycC4KLQkJCQlSIzMwNCwgSy1DZW50ZXIsIDE1OTEtOQotCQkJCUJ1cmltLWRvbmcsIERvbmdhaG4tZ3UKLQkJCQlBbnlhbmctc2kgS3l1bmdnaS1kbyA0MzEtODE1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LTAyICAgKGhleCkJCWtrLWVsZWN0cm9uaWMgYS9zCi0wMDE0MDIgICAgIChiYXNlIDE2KQkJa2stZWxlY3Ryb25pYyBhL3MKLQkJCQlDeXByZXN2ZWogNgotCQkJCUhlcm5pbmcgIDc0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTE0LTAzICAgKGhleCkJCVJlbmFzaXMsIExMQwotMDAxNDAzICAgICAoYmFzZSAxNikJCVJlbmFzaXMsIExMQwotCQkJCTE1MzAgTi4gU3RhdGUgU3QuCi0JCQkJU3VpdGUgRQotCQkJCUxlaGkgVVQgODQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTA0ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE0MDQgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0wNSAgIChoZXgpCQlPcGVuSUIsIEluYy4KLTAwMTQwNSAgICAgKGJhc2UgMTYpCQlPcGVuSUIsIEluYy4KLQkJCQlPcGVuRmFicmljcywgSW5jLiwgYy9vIFFMb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTIwNzEgU3RpZXJsaW4gQ291cnQsIFN1aXRlIDIwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMtNDY1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMDYgICAoaGV4KQkJR28gTmV0d29ya3MKLTAwMTQwNiAgICAgKGJhc2UgMTYpCQlHbyBOZXR3b3JrcwotCQkJCTEyNiBZaWdhbCBBbG9uIHN0LgotCQkJCVRlbCBBdml2ICA2NzQ0MwotCQkJCUlTUkFFTAotCi0wMC0xNC0wNyAgIChoZXgpCQlTcGVyaWFuIFByb3RlY3Rpb24gSW5zdHJ1bWVudGF0aW9uCi0wMDE0MDcgICAgIChiYXNlIDE2KQkJU3BlcmlhbiBQcm90ZWN0aW9uIEluc3RydW1lbnRhdGlvbgotCQkJCTY1MSBTb3V0aCBNYWluIFN0cmVldAotCQkJCU1pZGRsZXRvd24gQ1QgMDY0NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTA4ICAgKGhleCkJCUVrYSBTeXN0ZW1zIEluYy4KLTAwMTQwOCAgICAgKGJhc2UgMTYpCQlFa2EgU3lzdGVtcyBJbmMuCi0JCQkJMjAyNTEgQ2VudHVyeSBCbHZkCi0JCQkJU3VpdGUgMTIwCi0JCQkJR2VybWFudG93biBNRCAyMDg3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMDkgICAoaGV4KQkJTUFHTkVUSSBNQVJFTExJICAgUy5FLiBTLnAuQS4KLTAwMTQwOSAgICAgKGJhc2UgMTYpCQlNQUdORVRJIE1BUkVMTEkgICBTLkUuIFMucC5BLgotCQkJCVpJIE5vcmQsIEFsbGVlIGQnQXJnZW5zb24KLQkJCQlDSEFURUxMRVJBVUxUICA4NjEwMAotCQkJCUZSQU5DRQotCi0wMC0xNC0wQSAgIChoZXgpCQlXRVBJTyBDby4sIEx0ZC4KLTAwMTQwQSAgICAgKGJhc2UgMTYpCQlXRVBJTyBDby4sIEx0ZC4KLQkJCQkjMTEyNSwgT3B1czEsIEd1cm9kb25nY29tcGxleCBidWlsZGluZwotCQkJCTYxMS0yNixHdXJvLWRvbmcsR3Vyby1ndSwKLQkJCQlTZW91bCAgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC0wQiAgIChoZXgpCQlGSVJTVCBJTlRFUk5BVElPTkFMIENPTVBVVEVSLCBJTkMuCi0wMDE0MEIgICAgIChiYXNlIDE2KQkJRklSU1QgSU5URVJOQVRJT05BTCBDT01QVVRFUiwgSU5DLgotCQkJCUZJQyBCVUlMRElORywgTk8uMzAwLCBZQU5HIEdVQU5HIFNULiwKLQkJCQlORUlIVQotCQkJCVRBSVBFSSBDT1VOVFkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0wQyAgIChoZXgpCQlHS0IgQ0NUViBDTy4sIExURC4KLTAwMTQwQyAgICAgKGJhc2UgMTYpCQlHS0IgQ0NUViBDTy4sIExURC4KLQkJCQk3RiwgTm8uIDEsIExhbmUgNjQxLAotCQkJCVNoZW4gTGluZyBTb3V0aCBSZC4sCi0JCQkJVGEgWWEgSHNpYW5nLCBUQUlDSFVORyA0MjgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTBEICAgKGhleCkJCU5vcnRlbAotMDAxNDBEICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE0LTBFICAgKGhleCkJCU5vcnRlbAotMDAxNDBFICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE0LTBGICAgKGhleCkJCUZlZGVyYWwgU3RhdGUgVW5pdGFyeSBFbnRlcnByaXNlIExlbmluZ3JhZCBSJkQgSW5zdGl0dXRlIG9mCi0wMDE0MEYgICAgIChiYXNlIDE2KQkJRmVkZXJhbCBTdGF0ZSBVbml0YXJ5IEVudGVycHJpc2UgTGVuaW5ncmFkIFImRCBJbnN0aXR1dGUgb2YKLQkJCQkxMSBXYXJzaGF3c2theWEgU3QuCi0JCQkJU3QuIFBldGVyc2J1cmcgMTk2MTI4Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE0LTEwICAgKGhleCkJCVN1emhvdSBLZWRhIFRlY2hub2xvZ3kgQ08uLEx0ZAotMDAxNDEwICAgICAoYmFzZSAxNikJCVN1emhvdSBLZWRhIFRlY2hub2xvZ3kgQ08uLEx0ZAotCQkJCTEzMSxKaW5zaGFuIFJvYWQKLQkJCQlTdXpob3UgSmlhbmdTdSAyMTUwMTEKLQkJCQlDSElOQQotCi0wMC0xNC0xMSAgIChoZXgpCQlEZXV0c2NobWFubiBBdXRvbWF0aW9uIEdtYkggJiBDby4gS0cKLTAwMTQxMSAgICAgKGJhc2UgMTYpCQlEZXV0c2NobWFubiBBdXRvbWF0aW9uIEdtYkggJiBDby4gS0cKLQkJCQlDYXJsLVplaXNzLVN0ci4gOAotCQkJCUJhZCBDYW1iZXJnICBEIC0gNjU1MjAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTEyICAgKGhleCkJCVMtVEVDIGVsZWN0cm9uaWNzIEFHCi0wMDE0MTIgICAgIChiYXNlIDE2KQkJUy1URUMgZWxlY3Ryb25pY3MgQUcKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDQ5Ci0JCQkJWnVnIDYzMDAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNC0xMyAgIChoZXgpCQlUcmViaW5nICYgSGltc3RlZHQgUHJvemVzc2F1dG9tYXRpb24gR21iSCAmIENvLiBLRwotMDAxNDEzICAgICAoYmFzZSAxNikJCVRyZWJpbmcgJiBIaW1zdGVkdCBQcm96ZXNzYXV0b21hdGlvbiBHbWJIICYgQ28uIEtHCi0JCQkJV2lsaGVsbS1IZW5uZW1hbm4tU3RyLiAxMwotCQkJCVNjaHdlcmluIE1lY2tsZW5idXJnLVZvcnBvbW1lcm4gMTkwNjEKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTE0ICAgKGhleCkJCUp1bXBub2RlIFN5c3RlbXMgTExDLgotMDAxNDE0ICAgICAoYmFzZSAxNikJCUp1bXBub2RlIFN5c3RlbXMgTExDLgotCQkJCTgwMCBXYXNoaW5ndG9uIEF2ZSBOLgotCQkJCVN1aXRlIDMwOQotCQkJCU1pbm5lYXBvbGlzIE1OIDU1MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0xNSAgIChoZXgpCQlJbnRlYyBBdXRvbWF0aW9uIEluYy4KLTAwMTQxNSAgICAgKGJhc2UgMTYpCQlJbnRlYyBBdXRvbWF0aW9uIEluYy4KLQkJCQkyNzUxIEFyYnV0dXMgUmQuCi0JCQkJVmljdG9yaWEgQnJpdGlzaCBDb2x1bWJpYSBWOE4gNVg3Ci0JCQkJQ0FOQURBCi0KLTAwLTE0LTE2ICAgKGhleCkJCVNjb3NjaGUgSW5kdXN0cmllcywgSW5jLgotMDAxNDE2ICAgICAoYmFzZSAxNikJCVNjb3NjaGUgSW5kdXN0cmllcywgSW5jLgotCQkJCVBPIEJveCAyOTAxCi0JCQkJT3huYXJkIENBIDkzMDM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0xNyAgIChoZXgpCQlSU0UgSW5mb3JtYXRpb25zIFRlY2hub2xvZ2llIEdtYkgKLTAwMTQxNyAgICAgKGJhc2UgMTYpCQlSU0UgSW5mb3JtYXRpb25zIFRlY2hub2xvZ2llIEdtYkgKLQkJCQlTaWxiZXJiZXJnc3RyYXNzZSA5Ci0JCQkJV29sZnNiZXJnIEthcm50ZW4gOTQwMAotCQkJCUFVU1RSSUEKLQotMDAtMTQtMTggICAoaGV4KQkJQzRMaW5lCi0wMDE0MTggICAgIChiYXNlIDE2KQkJQzRMaW5lCi0JCQkJMTAwMSBIeXVuZGFpIFBhcmlzaWFuLAotCQkJCTkwNy0xMCBNb2s1LURvbmcKLQkJCQlZYW5nY2h1bi1HdSBTZW91bCAxNTgtMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LTE5ICAgKGhleCkJCVNJRFNBCi0wMDE0MTkgICAgIChiYXNlIDE2KQkJU0lEU0EKLQkJCQlQVE0gLSBUT1JSRVMgUVVFVkVETyAxCi0JCQkJVFJFUyBDQU5UT1MgTUFEUklEIDI4NzYwCi0JCQkJU1BBSU4KLQotMDAtMTQtMUEgICAoaGV4KQkJREVJQ1kgQ09SUE9SQVRJT04KLTAwMTQxQSAgICAgKGJhc2UgMTYpCQlERUlDWSBDT1JQT1JBVElPTgotCQkJCTMtMy02LFNha2FlLWNobyxIYW11cmEtc2hpLAotCQkJCVRva3lvIDIwNS0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMTQtMUIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNDFCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMUMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNDFDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMUQgICAoaGV4KQkJTHVzdCBBbnRyaWVic3RlY2huaWsgR21iSAotMDAxNDFEICAgICAoYmFzZSAxNikJCUx1c3QgQW50cmllYnN0ZWNobmlrIEdtYkgKLQkJCQlHZXdlcmJlc3RyYXNzZSA1LTkKLQkJCQlMYWhuYXUgSGVzc2VuIDM1NjMzCi0JCQkJR0VSTUFOWQotCi0wMC0xNC0xRSAgIChoZXgpCQlQLkEuIFNlbWksIEluYy4KLTAwMTQxRSAgICAgKGJhc2UgMTYpCQlQLkEuIFNlbWksIEluYy4KLQkJCQkzOTY1IEZyZWVkb20gQ2lyY2xlLCBGbCA4Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTFGICAgKGhleCkJCVN1bkt3YW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0wMDE0MUYgICAgIChiYXNlIDE2KQkJU3VuS3dhbmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLQkJCQkjMzY1KFRlY2huby1wYXJrLCAzMDEgZG9uZywgOTAxIGhvLCkgU2FtanVuZy1kb25nLCBPaGp1bmcta3UsCi0JCQkJQnVjaGVvbi1zaGkgS3l1bmdnaS1kbyA0MjEtODA5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LTIwICAgKGhleCkJCUctTGlua3MgbmV0d29ya2luZyBjb21wYW55Ci0wMDE0MjAgICAgIChiYXNlIDE2KQkJRy1MaW5rcyBuZXR3b3JraW5nIGNvbXBhbnkKLQkJCQkxRkwuIE5PLjE1LTQ5LCBNSU5HIERFUiBTRUNPTkQgUk9BRCwKLQkJCQlDSEkgRFUgRElTVFJJQ1QsCi0JCQkJS2VlbHVuZyAgMjA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0yMSAgIChoZXgpCQlUb3RhbCBXaXJlbGVzcyBUZWNobm9sb2dpZXMgUHRlLiBMdGQuCi0wMDE0MjEgICAgIChiYXNlIDE2KQkJVG90YWwgV2lyZWxlc3MgVGVjaG5vbG9naWVzIFB0ZS4gTHRkLgotCQkJCUJsayAxMDAzLCBCdWtpdCBNZXJhaCBDZW50cmFsLCAjMDQtMTgKLQkJCQlUZWNobm9wcmVuZXVyIENlbnRyZQotCQkJCTE1OTgzNgotCQkJCVNJTkdBUE9SRQotCi0wMC0xNC0yMiAgIChoZXgpCQlEZWxsIEluYy4KLTAwMTQyMiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0yMyAgIChoZXgpCQlKLVMgQ28uIE5FVVJPQ09NCi0wMDE0MjMgICAgIChiYXNlIDE2KQkJSi1TIENvLiBORVVST0NPTQotCQkJCUVuZXJnZXRpY2hlc2tpaSBwcm9lemQsIDYKLQkJCQlNb3Njb3cgIDExMTI1MAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xNC0yNCAgIChoZXgpCQlNZXJyeSBFbGVjdHJpY3MgQ08uLCBMVEQuCi0wMDE0MjQgICAgIChiYXNlIDE2KQkJTWVycnkgRWxlY3RyaWNzIENPLiwgTFRELgotCQkJCU5PLjIyLDIzcmQgUk9BRAotCQkJCVBBUksgVEFJQ0hVTkcsCi0JCQkJVEFJQ0hVTkcgQ0lUWSAgNDA4NTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTI1ICAgKGhleCkJCUdhbGFjdGljIENvbXB1dGluZyBDb3JwLgotMDAxNDI1ICAgICAoYmFzZSAxNikJCUdhbGFjdGljIENvbXB1dGluZyBDb3JwLgotCQkJCTEvRgotCQkJCTEyIExlZSBDaHVuZyBTdHJlZXQKLQkJCQlDaGFpIFdhbiBEaXN0cmljdCAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE0LTI2ICAgKGhleCkJCU5MIFRlY2hub2xvZ3kKLTAwMTQyNiAgICAgKGJhc2UgMTYpCQlOTCBUZWNobm9sb2d5Ci0JCQkJODAwIFR1cm5waWtlIFN0cmVldAotCQkJCVNURSAxMDAKLQkJCQlOb3J0aCBBbmRvdmVyIE1BIDAxODQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0yNyAgIChoZXgpCQlKYXp6TXV0YW50Ci0wMDE0MjcgICAgIChiYXNlIDE2KQkJSmF6ek11dGFudAotCQkJCTIgYWxsZWUgZHUgRG95ZW4gR2VvcmdlcyBCcnVzCi0JCQkJUGVzc2FjICAzMzYwMAotCQkJCUZSQU5DRQotCi0wMC0xNC0yOCAgIChoZXgpCQlWb2NvbGxlY3QsIEluYwotMDAxNDI4ICAgICAoYmFzZSAxNikJCVZvY29sbGVjdCwgSW5jCi0JCQkJNzAzIFJvZGkgUm9hZAotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTI5ICAgKGhleCkJCVYgQ2VudGVyIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMTQyOSAgICAgKGJhc2UgMTYpCQlWIENlbnRlciBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJN0YtNywgTk8uMzUsIEhzaW50YWkgUmQuCi0JCQkJSnViZWkgQ2l0eSBIc2luY2h1IDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtMkEgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uLCBMdGQKLTAwMTQyQSAgICAgKGJhc2UgMTYpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4sIEx0ZAotCQkJCU5vLjIyLCBBbGxleSAzOCwgTGFuZSA5MSwgU2VjLiAxLAotCQkJCU5laSBIdSBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTJCICAgKGhleCkJCUVkYXRhIENvbW11bmljYXRpb24gSW5jLgotMDAxNDJCICAgICAoYmFzZSAxNikJCUVkYXRhIENvbW11bmljYXRpb24gSW5jLgotCQkJCTJGLTEsIE5vLiA4NzIsIENodW5nLUNoZW5nIFJkCi0JCQkJQ2h1bmctSG8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTJDICAgKGhleCkJCUtvbmNlcHQgSW50ZXJuYXRpb25hbCwgSW5jLgotMDAxNDJDICAgICAoYmFzZSAxNikJCUtvbmNlcHQgSW50ZXJuYXRpb25hbCwgSW5jLgotCQkJCTI1MDAgRSBGb290aGlsbCBCbHZkLiAjNDA3Ci0JCQkJUGFzYWRlbmEgQ0EgOTExMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTJEICAgKGhleCkJCVRvcmFkZXggQUcKLTAwMTQyRCAgICAgKGJhc2UgMTYpCQlUb3JhZGV4IEFHCi0JCQkJQWx0c2FnZW5zdHJhc3NlIDUKLQkJCQlIb3J3IExVIDYwNDgKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNC0yRSAgIChoZXgpCQk3NyBFbGVrdHJvbmlrYSBLZnQuCi0wMDE0MkUgICAgIChiYXNlIDE2KQkJNzcgRWxla3Ryb25pa2EgS2Z0LgotCQkJCUZlaGVydmFyaSB1dCA5OC4KLQkJCQlCdWRhcGVzdCBILTExNjMKLQkJCQlIVU5HQVJZCi0KLTAwLTE0LTJGICAgKGhleCkJCVdpbGRQYWNrZXRzCi0wMDE0MkYgICAgIChiYXNlIDE2KQkJV2lsZFBhY2tldHMKLQkJCQkxMzQwIFRyZWF0IEJvdWxldmFyZAotCQkJCVN1aXRlIDUwMAotCQkJCVdhbG51dCBDcmVlayBDQSA5NDU5NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMzAgICAoaGV4KQkJVmlQb3dFUiwgSW5jCi0wMDE0MzAgICAgIChiYXNlIDE2KQkJVmlQb3dFUiwgSW5jCi0JCQkJOUYuLCBOby4yMDUtMywgU2VjLiAzLCBCZWlzaW4gUmQKLQkJCQlTaW5kaWFuIFRhaXBlaSBDb3VudHkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0zMSAgIChoZXgpCQlQREwgRWxlY3Ryb25pY3MgTHRkCi0wMDE0MzEgICAgIChiYXNlIDE2KQkJUERMIEVsZWN0cm9uaWNzIEx0ZAotCQkJCTgxIEF1c3RpbiBTdHJlZXQKLQkJCQlOYXBpZXIgSGF3a2VzIEJheSA0MDE1Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMTQtMzIgICAoaGV4KQkJVGFyYWxsYXggV2lyZWxlc3MsIEluYy4KLTAwMTQzMiAgICAgKGJhc2UgMTYpCQlUYXJhbGxheCBXaXJlbGVzcywgSW5jLgotCQkJCTEwIFdlc3QgMTAwIFNvdXRoLAotCQkJCVN1aXRlIDYwMAotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0zMyAgIChoZXgpCQlFbXBvd2VyIFRlY2hub2xvZ2llcyhDYW5hZGEpIEluYy4KLTAwMTQzMyAgICAgKGJhc2UgMTYpCQlFbXBvd2VyIFRlY2hub2xvZ2llcyhDYW5hZGEpIEluYy4KLQkJCQlVbml0IDQwNSAtIDU2MDAgUGFya3dvb2QgV2F5LAotCQkJCVJpY2htb25kIEJyaXRpc2ggQ29sdW1iaWEgVjZWIDJNMgotCQkJCUNBTkFEQQotCi0wMC0xNC0zNCAgIChoZXgpCQlLZXJpIFN5c3RlbXMsIEluYwotMDAxNDM0ICAgICAoYmFzZSAxNikJCUtlcmkgU3lzdGVtcywgSW5jCi0JCQkJU3VpdGUgMTAwCi0JCQkJMTUzMCBPYWtsYW5kIFJkCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTM1ICAgKGhleCkJCUNpdHlDb20gQ29ycC4KLTAwMTQzNSAgICAgKGJhc2UgMTYpCQlDaXR5Q29tIENvcnAuCi0JCQkJM0YuLCBOby41MzIsIFNlYy4gMiwKLQkJCQlKaG9uZ3NoYW4gUmQuCi0JCQkJSmhvbmdoZSBDaXR5IFRhaXBlaSBIc2llbiAyMzU1NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtMzYgICAoaGV4KQkJUXdlcnR5IEVsZWt0cm9uaWsgQUIKLTAwMTQzNiAgICAgKGJhc2UgMTYpCQlRd2VydHkgRWxla3Ryb25payBBQgotCQkJCUJhbGluZ2UgS2xvY2thcmdhcmQKLQkJCQlUeXN0YmVyZ2EgIDYxMCA2MAotCQkJCVNXRURFTgotCi0wMC0xNC0zNyAgIChoZXgpCQlHU1RlbGV0ZWNoIENvLixMdGQuCi0wMDE0MzcgICAgIChiYXNlIDE2KQkJR1NUZWxldGVjaCBDby4sTHRkLgotCQkJCTEzODUtMTQsIEp1YW4tRG9uZywgTmFtLWd1Ci0JCQkJSW5jaGVvbiA0MDItMjAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LTM4ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxNDM4ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5IFNvdXRoCi0JCQkJTVMwNzA0MDUKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0zOSAgIChoZXgpCQlCbG9uZGVyIFRvbmd1ZSBMYWJvcmF0b3JpZXMsIEluYy4KLTAwMTQzOSAgICAgKGJhc2UgMTYpCQlCbG9uZGVyIFRvbmd1ZSBMYWJvcmF0b3JpZXMsIEluYy4KLQkJCQlPbmUgSmFrZSBCcm93biBSb2FkCi0JCQkJT2xkIEJyaWRnZSBOZXcgSmVyc2V5IDA4ODU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0zQSAgIChoZXgpCQlSQVlUQUxLIElOVEVSTkFUSU9OQUwgU1JMCi0wMDE0M0EgICAgIChiYXNlIDE2KQkJUkFZVEFMSyBJTlRFUk5BVElPTkFMIFNSTAotCQkJCVN0LiBNYXJlY2NoaWEgNzkKLQkJCQlWZXJ1Y2NoaW8gKFJOKSA0NzgyNgotCQkJCUlUQUxZCi0KLTAwLTE0LTNCICAgKGhleCkJCVNlbnNvdmF0aW9uIEFHCi0wMDE0M0IgICAgIChiYXNlIDE2KQkJU2Vuc292YXRpb24gQUcKLQkJCQlMdWR3aWdzaGFmZW5lciBTdHIuIDI5Ci0JCQkJU3RvY2thY2ggQmFkZW4tV3VlcnR0ZW1iZXJnIDc4MzMzCi0JCQkJR0VSTUFOWQotCi0wMC0xNC0zQyAgIChoZXgpCQlSaGVpbm1ldGFsbCBDYW5hZGEgSW5jLgotMDAxNDNDICAgICAoYmFzZSAxNikJCVJoZWlubWV0YWxsIENhbmFkYSBJbmMuCi0JCQkJMjI1IGJvdWwgZHUgc2VtaW5haXJlIHN1ZAotCQkJCVN0LUplYW4tc3VyLVJpY2hlbGlldSBRdWViZWMgSjNCIDhFOQotCQkJCUNBTkFEQQotCi0wMC0xNC0zRCAgIChoZXgpCQlBZXZvZSBJbmMuCi0wMDE0M0QgICAgIChiYXNlIDE2KQkJQWV2b2UgSW5jLgotCQkJCTExRiwgTm8gMjMsIEtlZWx1bmcgUm9hZAotCQkJCVRhaXBlaSBIc2luWWkgRGlzdHJpY3QgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0zRSAgIChoZXgpCQlBaXJMaW5rIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDE0M0UgICAgIChiYXNlIDE2KQkJQWlyTGluayBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTMxNTkgQ29ycG9yYXRlIFBsYWNlCi0JCQkJSGF5d2FyZCBDQSA5NDU0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtM0YgICAoaGV4KQkJSG90d2F5IFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMTQzRiAgICAgKGJhc2UgMTYpCQlIb3R3YXkgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCU5vLiA4MSwgSHNpbiBUYWkgNXRoIFJvYWQgU2VjdGlvbiAxCi0JCQkJMTFGLTMKLQkJCQlTaGlKciBUYWlwZWkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC00MCAgIChoZXgpCQlBVE9NSUMgQ29ycG9yYXRpb24KLTAwMTQ0MCAgICAgKGJhc2UgMTYpCQlBVE9NSUMgQ29ycG9yYXRpb24KLQkJCQlNQU1QTyBCTERHCi0JCQkJMS0zLTExLEFTQUtVU0FCQVNISQotCQkJCVRBSVRPLUtVIFRPS1lPIDExMS0wMDUzCi0JCQkJSkFQQU4KLQotMDAtMTQtNDEgICAoaGV4KQkJSW5ub3ZhdGlvbiBTb3VuZCBUZWNobm9sb2d5IENvLiwgTFRELgotMDAxNDQxICAgICAoYmFzZSAxNikJCUlubm92YXRpb24gU291bmQgVGVjaG5vbG9neSBDby4sIExURC4KLQkJCQlCdWlsZGluZyAydGguLEN1aWhhaSBJbmR1c3RyaWFsIEFyZWEsCi0JCQkJSHVhaWRlLCBGdXlvbmcgVG93bgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi0wMC0xNC00MiAgIChoZXgpCQlBVFRPIENPUlBPUkFUSU9OCi0wMDE0NDIgICAgIChiYXNlIDE2KQkJQVRUTyBDT1JQT1JBVElPTgotCQkJCTEtMjUtMjMgSG9uZ28sCi0JCQkJQnVua3lvLWt1LAotCQkJCVRva3lvIDExMy04NDI1Ci0JCQkJSkFQQU4KLQotMDAtMTQtNDMgICAoaGV4KQkJQ29uc3VsdHJvbmljcyBFdXJvcGUgTHRkCi0wMDE0NDMgICAgIChiYXNlIDE2KQkJQ29uc3VsdHJvbmljcyBFdXJvcGUgTHRkCi0JCQkJRWxlY3Ryb24gV2F5Ci0JCQkJQ2hhbmRsZXJzIEZvcmQgSGFudHMgU081MyA0U0UKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNC00NCAgIChoZXgpCQlHcnVuZGZvcyBFbGVjdHJvbmljcwotMDAxNDQ0ICAgICAoYmFzZSAxNikJCUdydW5kZm9zIEVsZWN0cm9uaWNzCi0JCQkJQmlya2V2YWVuZ2V0IDItMTAKLQkJCQlCamVycmluZ2JybyAgREs4ODUwCi0JCQkJREVOTUFSSwotCi0wMC0xNC00NSAgIChoZXgpCQlUZWxlZm9uLUdyYWRuamEgZC5vLm8uCi0wMDE0NDUgICAgIChiYXNlIDE2KQkJVGVsZWZvbi1HcmFkbmphIGQuby5vLgotCQkJCVBsZXNpdmlja2EgMwotCQkJCVN2ZXRhIE5lZGVsamEgWnVwYW5pamEgWmFncmViYWNrYSAxMDQzMQotCQkJCUNST0FUSUEKLQotMDAtMTQtNDYgICAoaGV4KQkJU3VwZXJWaXNpb24gU29sdXRpb25zIExMQwotMDAxNDQ2ICAgICAoYmFzZSAxNikJCVN1cGVyVmlzaW9uIFNvbHV0aW9ucyBMTEMKLQkJCQk3NjIgSW5kdXN0cmlhbCBEci4KLQkJCQlFbG1odXJzdCBJTCA2MDEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNDcgICAoaGV4KQkJQk9BWiBJbmMuCi0wMDE0NDcgICAgIChiYXNlIDE2KQkJQk9BWiBJbmMuCi0JCQkJMjgyIFB1a29rLXJpIFNvbmdTYW4tbXlvbiBEYW5nemluLWd1biBDaHVuZ2NoZW9uZ25hbS1kbywgIDM0My04MzQKLQkJCQkjMzAxLCAxNDI5LTcgU2VvQ2hvLWRvbmcKLQkJCQlTZW91bCBTZW9DaG8tZ3UgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC00OCAgIChoZXgpCQlJbnZlbnRlYyBNdWx0aW1lZGlhICYgVGVsZWNvbSBDb3Jwb3JhdGlvbgotMDAxNDQ4ICAgICAoYmFzZSAxNikJCUludmVudGVjIE11bHRpbWVkaWEgJiBUZWxlY29tIENvcnBvcmF0aW9uCi0JCQkJNUYsTk8uMzk2LFNlYy4xIE5laS1IdSBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTQ5ICAgKGhleCkJCVNpY2h1YW4gQ2hhbmdob25nIEVsZWN0cmljIEx0ZC4KLTAwMTQ0OSAgICAgKGJhc2UgMTYpCQlTaWNodWFuIENoYW5naG9uZyBFbGVjdHJpYyBMdGQuCi0JCQkJTm8uMzUsRWFzdCBNaWFuWGluIFJvYWQKLQkJCQlNaWFuWWFuZyBTaUNodWFuIFBSQyA2MjEwMDAKLQkJCQlDSElOQQotCi0wMC0xNC00QSAgIChoZXgpCQlUYWl3YW4gVGhpY2stRmlsbSBJbmQuIENvcnAuCi0wMDE0NEEgICAgIChiYXNlIDE2KQkJVGFpd2FuIFRoaWNrLUZpbG0gSW5kLiBDb3JwLgotCQkJCU5PLjEyNixXdXUgR29uZyAybmQgUkQsCi0JCQkJV3V1IEd1dSBJbmR1c3RyaWFsIFpvbmUKLQkJCQlUYWlwZWkgSHNpZW4gIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtNEIgICAoaGV4KQkJSGlmbiwgSW5jLgotMDAxNDRCICAgICAoYmFzZSAxNikJCUhpZm4sIEluYy4KLQkJCQk3NTAgVW5pdmVyc2l0eSBBdmUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTRDICAgKGhleCkJCUdlbmVyYWwgTWV0ZXJzIENvcnAuCi0wMDE0NEMgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBNZXRlcnMgQ29ycC4KLQkJCQkxOTM1IERvbWluaW9uIFdheQotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ29sb3JhZG8gODA5MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTREICAgKGhleCkJCUludGVsbGlnZW50IFN5c3RlbXMKLTAwMTQ0RCAgICAgKGJhc2UgMTYpCQlJbnRlbGxpZ2VudCBTeXN0ZW1zCi0JCQkJMTExMDEgSm9obnMgSG9wa2lucyBSb2FkCi0JCQkJTGF1cmVsIE1EIDIwNzIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC00RSAgIChoZXgpCQlTUklTQQotMDAxNDRFICAgICAoYmFzZSAxNikJCVNSSVNBCi0JCQkJMzYvMSwgTmFraGltb3Zza2l5IHByLXQKLQkJCQlNb3Njb3cgMTE3MjE4Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE0LTRGICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbgotMDAxNDRGICAgICAoYmFzZSAxNikJCU9yYWNsZSBDb3Jwb3JhdGlvbgotCQkJCTE3IE5ldHdvcmsgQ2lyY2xlCi0JCQkJQmxkZy4gMTcsIFVNUEsxNy0xMzEKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC01MCAgIChoZXgpCQlIZWltIFN5c3RlbXMgR21iSAotMDAxNDUwICAgICAoYmFzZSAxNikJCUhlaW0gU3lzdGVtcyBHbWJICi0JCQkJRnJpZWRyaWNoIEViZXJ0IFN0cmFzc2UKLQkJCQlUZWNobm9sb2dpZVBhcmsKLQkJCQlCZXJnaXNjaCBHbGFkYmFjaCBOUlcgNTE0MjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTUxICAgKGhleCkJCUFwcGxlIENvbXB1dGVyIEluYy4KLTAwMTQ1MSAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlciBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJTVM6MzVHUE8KLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTUyICAgKGhleCkJCUNBTENVTEVYLElOQy4KLTAwMTQ1MiAgICAgKGJhc2UgMTYpCQlDQUxDVUxFWCxJTkMuCi0JCQkJMTMyIFcuIExBUyBDUlVDRVMgQVZFLgotCQkJCUxBUyBDUlVDRVMgTkVXIE1FWElDTyA4ODAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNTMgICAoaGV4KQkJQURWQU5URUNIIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0wMDE0NTMgICAgIChiYXNlIDE2KQkJQURWQU5URUNIIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0JCQkJIzEyMDIgQUNFIFRFQ0hOTyBUT1dFUiwgNjg0LTEKLQkJCQlEZXVuZ2Nob24tM0RvbmcsIEthbmdzZW8tS3UKLQkJCQlTZW91bCAxNTctNzIxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LTU0ICAgKGhleCkJCVN5bXdhdmUKLTAwMTQ1NCAgICAgKGJhc2UgMTYpCQlTeW13YXZlCi0JCQkJMTAyNTEgVmlzdGEgU29ycmVudG8gUGFya3dheQotCQkJCVN1aXRlIDEwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNTUgICAoaGV4KQkJQ29kZXIgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLTAwMTQ1NSAgICAgKGJhc2UgMTYpCQlDb2RlciBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgotCQkJCVRha2VkYSBCbGRnLCAxLTMwLTYgU2hpcmFzYWdpLAotCQkJCU5ha2Fuby1rdSBUb2t5byAxNjUtMDAzNQotCQkJCUpBUEFOCi0KLTAwLTE0LTU2ICAgKGhleCkJCUVkZ2UgUHJvZHVjdHMKLTAwMTQ1NiAgICAgKGJhc2UgMTYpCQlFZGdlIFByb2R1Y3RzCi0JCQkJMTA4MCBTb3V0aCBEZXBvdCBEcml2ZQotCQkJCU9nZGVuIFV0YWggODQ0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTU3ICAgKGhleCkJCVQtVklQUyBBUwotMDAxNDU3ICAgICAoYmFzZSAxNikJCVQtVklQUyBBUwotCQkJCU9zdGVuc2pvdmVpZW4gMTgKLQkJCQlPc2xvIE5PLTA2NjEKLQkJCQlOT1JXQVkKLQotMDAtMTQtNTggICAoaGV4KQkJSFMgQXV0b21hdGljIEFwUwotMDAxNDU4ICAgICAoYmFzZSAxNikJCUhTIEF1dG9tYXRpYyBBcFMKLQkJCQlCamVycmluZ2Jyb3ZlaiA3MAotCQkJCVJvZG92cmUgIDI2MTAKLQkJCQlERU5NQVJLCi0KLTAwLTE0LTU5ICAgKGhleCkJCU1vcmFtIENvLiwgTHRkLgotMDAxNDU5ICAgICAoYmFzZSAxNikJCU1vcmFtIENvLiwgTHRkLgotCQkJCTNGLCBNYW53b2wgQmxkZy4sIDEwMjItNAotCQkJCVlvdW5ndG9uZy1kb25nLCBZb3VuZ3RvbmctZ3UKLQkJCQlTdXdvbi1zaGkgR3lvdW5nZ2ktZG8gNDQzLTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC01QSAgIChoZXgpCQlOZXJhdGVjIEFHCi0wMDE0NUEgICAgIChiYXNlIDE2KQkJTmVyYXRlYyBBRwotCQkJCVJvc3N3aWVzc3RyYXNzZSAyOQotCQkJCUNILTg2MDggQnViaWtvbiBaSAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE0LTVCICAgKGhleCkJCVNlZWtlck5ldCBJbmMuCi0wMDE0NUIgICAgIChiYXNlIDE2KQkJU2Vla2VyTmV0IEluYy4KLQkJCQkzMDAgU2F0ZWxsaXRlIEJsdmQuCi0JCQkJU3V3YW5lZSBHZW9yZ2lhIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC01QyAgIChoZXgpCQlJbnRyb25pY3MgQi5WLgotMDAxNDVDICAgICAoYmFzZSAxNikJCUludHJvbmljcyBCLlYuCi0JCQkJSGVybWVzd2VnIDIyCi0JCQkJQmFybmV2ZWxkIEdlbGRlcmxhbmQgMzc3MSBORAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE0LTVEICAgKGhleCkJCVdKIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDE0NUQgICAgIChiYXNlIDE2KQkJV0ogQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk0MDEgUml2ZXIgT2FrcyBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTVFICAgKGhleCkJCUlCTSBDb3JwCi0wMDE0NUUgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTVGICAgKGhleCkJCUFESVRFQyBDTy4gTFRECi0wMDE0NUYgICAgIChiYXNlIDE2KQkJQURJVEVDIENPLiBMVEQKLQkJCQk0RiBIeW93b24gQi9ELCA5OS01LAotCQkJCUthcmFrLWRvbmcsU29uZ3BhLWd1Ci0JCQkJU2VvdWwgMTM4LTgwNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC02MCAgIChoZXgpCQlLeW9jZXJhIFdpcmVsZXNzIENvcnAuCi0wMDE0NjAgICAgIChiYXNlIDE2KQkJS3lvY2VyYSBXaXJlbGVzcyBDb3JwLgotCQkJCTEwMzAwIENhbXB1cyBQb2ludCBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNjEgICAoaGV4KQkJQ09ST05BIENPUlBPUkFUSU9OCi0wMDE0NjEgICAgIChiYXNlIDE2KQkJQ09ST05BIENPUlBPUkFUSU9OCi0JCQkJNy03LCBISUdBU0hJLVNISU5CTwotCQkJCVNBTkpPLVNISSBOSUlHQVRBIDk1NS04NTEwCi0JCQkJSkFQQU4KLQotMDAtMTQtNjIgICAoaGV4KQkJRGlnaXdlbGwgVGVjaG5vbG9neSwgaW5jCi0wMDE0NjIgICAgIChiYXNlIDE2KQkJRGlnaXdlbGwgVGVjaG5vbG9neSwgaW5jCi0JCQkJNEYsIE5vLjEsIFByb3NwZXJpdHkgMXN0IFJvYWQKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyayAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTYzICAgKGhleCkJCUlEQ1MgTi5WLgotMDAxNDYzICAgICAoYmFzZSAxNikJCUlEQ1MgTi5WLgotCQkJCUhlbGxlYmVlbWRlbiA5Ci0JCQkJSGFzc2VsdCBMaW1idXJnIDM1MDAKLQkJCQlCRUxHSVVNCi0KLTAwLTE0LTY0ICAgKGhleCkJCUNyeXB0b3NvZnQKLTAwMTQ2NCAgICAgKGJhc2UgMTYpCQlDcnlwdG9zb2Z0Ci0JCQkJTGVybW9udG92YSBzdHIsIDMKLQkJCQlQZW56YSByZWdpb24gNDQwMDI2Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE0LTY1ICAgKGhleCkJCU5vdm8gTm9yZGlzayBBL1MKLTAwMTQ2NSAgICAgKGJhc2UgMTYpCQlOb3ZvIE5vcmRpc2sgQS9TCi0JCQkJTm92byBBbGxlCi0JCQkJQmFnc3ZhZXJkICAyODgwCi0JCQkJREVOTUFSSwotCi0wMC0xNC02NiAgIChoZXgpCQlLbGVpbmhlbnogRWxla3Ryb25payBHbWJICi0wMDE0NjYgICAgIChiYXNlIDE2KQkJS2xlaW5oZW56IEVsZWt0cm9uaWsgR21iSAotCQkJCUdyZWluZXJiZXJnIDE0Ci0JCQkJTXVuaWNoICA4MTM3MQotCQkJCUdFUk1BTlkKLQotMDAtMTQtNjcgICAoaGV4KQkJQXJyb3dTcGFuIEluYy4KLTAwMTQ2NyAgICAgKGJhc2UgMTYpCQlBcnJvd1NwYW4gSW5jLgotCQkJCTQ2OTkgT2xkIElyb25zaWRlcyBEci4gU3VpdGUgMTAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTY4ICAgKGhleCkJCUNlbFBsYW4gSW50ZXJuYXRpb25hbCwgSW5jLgotMDAxNDY4ICAgICAoYmFzZSAxNikJCUNlbFBsYW4gSW50ZXJuYXRpb25hbCwgSW5jLgotCQkJCTE4MzUgQWxleGFuZGVyIEJlbGwgRHJpdmUKLQkJCQlzdWl0ZSAyMDAKLQkJCQlSZXN0b24gVkEgMjAxOTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTY5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTQ2OSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTZBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTQ2QSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTZCICAgKGhleCkJCUFuYWdyYW4sIEluYy4KLTAwMTQ2QiAgICAgKGJhc2UgMTYpCQlBbmFncmFuLCBJbmMuCi0JCQkJNTgwIE5vcnRoIFBhc3RvcmlhIEF2Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC02QyAgIChoZXgpCQlOZXRnZWFyIEluYy4KLTAwMTQ2QyAgICAgKGJhc2UgMTYpCQlOZXRnZWFyIEluYy4KLQkJCQk0NTAwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC02RCAgIChoZXgpCQlSRiBUZWNobm9sb2dpZXMKLTAwMTQ2RCAgICAgKGJhc2UgMTYpCQlSRiBUZWNobm9sb2dpZXMKLQkJCQkzMTI1IE4gMTI2dGggU3RyZWV0Ci0JCQkJQnJvb2tmaWVsZCBXSSA1MzAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNkUgICAoaGV4KQkJSC4gU3RvbGwgR21iSCAmIENvLiBLRwotMDAxNDZFICAgICAoYmFzZSAxNikJCUguIFN0b2xsIEdtYkggJiBDby4gS0cKLQkJCQlTdG9sbHdlZwotCQkJCVJldXRsaW5nZW4gRGV1dHNjaGxhbmQgNzI3NjAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTZGICAgKGhleCkJCUtvaGxlciBDbwotMDAxNDZGICAgICAoYmFzZSAxNikJCUtvaGxlciBDbwotCQkJCTQ0NCBIaWdobGFuZCBEcml2ZQotCQkJCU1TIDA3MgotCQkJCUtvaGxlciBXSSA1MzA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNzAgICAoaGV4KQkJUHJva29tIFNvZnR3YXJlIFNBCi0wMDE0NzAgICAgIChiYXNlIDE2KQkJUHJva29tIFNvZnR3YXJlIFNBCi0JCQkJQWwuIEplcm96b2xpbXNraWUgNjUvNzkKLQkJCQlXYXJzemF3YSBNYXpvd2llY2tpZSAwMC02OTcKLQkJCQlQT0xBTkQKLQotMDAtMTQtNzEgICAoaGV4KQkJRWFzdGVybiBBc2lhIFRlY2hub2xvZ3kgTGltaXRlZAotMDAxNDcxICAgICAoYmFzZSAxNikJCUVhc3Rlcm4gQXNpYSBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQkxM0YsIE5vLiA5OSwgU2VjLiAxLCBOYW5rYW4gUm9hZCwKLQkJCQlMdWNodSwgVGFveXVhbiAzMzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTcyICAgKGhleCkJCUNoaW5hIEJyb2FkYmFuZCBXaXJlbGVzcyBJUCBTdGFuZGFyZCBHcm91cAotMDAxNDcyICAgICAoYmFzZSAxNikJCUNoaW5hIEJyb2FkYmFuZCBXaXJlbGVzcyBJUCBTdGFuZGFyZCBHcm91cAotCQkJCVAuTy5CT1ggODgsV2VzdCBIaWdoLXRlY2gKLQkJCQlEZXZlbG9wbWVudCBDZW50ZXIsCi0JCQkJWGknYW4gU2hhYW4gWGkgNzEwMDc1Ci0JCQkJQ0hJTkEKLQotMDAtMTQtNzMgICAoaGV4KQkJQm9va2hhbSBJbmMKLTAwMTQ3MyAgICAgKGJhc2UgMTYpCQlCb29raGFtIEluYwotCQkJCTEwIEJyZXdlciBIdW50IFdheQotCQkJCUthbmF0YSBPTiBLMksgMkI1Ci0JCQkJQ0FOQURBCi0KLTAwLTE0LTc0ICAgKGhleCkJCUs0MCBFbGVjdHJvbmljcwotMDAxNDc0ICAgICAoYmFzZSAxNikJCUs0MCBFbGVjdHJvbmljcwotCQkJCTYwMCBUb2xsZ2F0ZSBSZC4gVW5pdCBBCi0JCQkJRWxnaW4gSUwgNjAxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTc1ICAgKGhleCkJCVdpbGluZSBOZXR3b3JrcywgSW5jLgotMDAxNDc1ICAgICAoYmFzZSAxNikJCVdpbGluZSBOZXR3b3JrcywgSW5jLgotCQkJCTc0MSBBbGV4YW5kZXIgUmQKLQkJCQlQcmluY2V0b24gTkogMDg1NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTc2ICAgKGhleCkJCU11bHRpQ29tIEluZHVzdHJpZXMgTGltaXRlZAotMDAxNDc2ICAgICAoYmFzZSAxNikJCU11bHRpQ29tIEluZHVzdHJpZXMgTGltaXRlZAotCQkJCVJvb20gMTIwNi03LCBNYW5oYXR0YW4gQ2VudGVyLAotCQkJCTggS3dhaSBDaGVvbmcgUmQuCi0JCQkJS3dhaSBDaHVuZywgTi5ULiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE0LTc3ICAgKGhleCkJCU5lcnRlYyAgSW5jLgotMDAxNDc3ICAgICAoYmFzZSAxNikJCU5lcnRlYyAgSW5jLgotCQkJCTk1MCBDb3dpZSBzdC4KLQkJCQlHcmFuYnkgUXVlYmVjIEoySiAxUDIKLQkJCQlDQU5BREEKLQotMDAtMTQtNzggICAoaGV4KQkJU2hlblpoZW4gVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDE0NzggICAgIChiYXNlIDE2KQkJU2hlblpoZW4gVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJMy9GLEJsZGcuUjEtQixIaS10ZWNoIEluZHVzdHJpYWwgUGFyaywKLQkJCQlTaGVubmFuIFJkLgotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xNC03OSAgIChoZXgpCQlORUMgTWFnbnVzIENvbW11bmljYXRpb25zLEx0ZC4KLTAwMTQ3OSAgICAgKGJhc2UgMTYpCQlORUMgTWFnbnVzIENvbW11bmljYXRpb25zLEx0ZC4KLQkJCQk0LTI4Ci0JCQkJTWl0YSAxLUNob21lCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwOC0wMDczCi0JCQkJSkFQQU4KLQotMDAtMTQtN0EgICAoaGV4KQkJRXVidXMgR21iSAotMDAxNDdBICAgICAoYmFzZSAxNikJCUV1YnVzIEdtYkgKLQkJCQlHb2xsaWVyc3RyLiA3MCAgQXVmZ2FuZyBFICA0LlN0b2NrCi0JCQkJTXVuaWNoIEJhdmFyaWEgODAzMzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTdCICAgKGhleCkJCUl0ZXJpcywgSW5jLgotMDAxNDdCICAgICAoYmFzZSAxNikJCUl0ZXJpcywgSW5jLgotCQkJCTE1MTUgUy4gTWFuY2hlc3RlciBBdmUuCi0JCQkJQW5haGVpbSBDQSA5MjgwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtN0MgICAoaGV4KQkJM0NvbSBMdGQKLTAwMTQ3QyAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cyBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTQtN0QgICAoaGV4KQkJQWVvbiBEaWdpdGFsIEludGVybmF0aW9uYWwKLTAwMTQ3RCAgICAgKGJhc2UgMTYpCQlBZW9uIERpZ2l0YWwgSW50ZXJuYXRpb25hbAotCQkJCTMxLTYsIFRoZSBCdW5kIENlbnRlcgotCQkJCTIyMiBZYW4gQW4gRS4gUmQKLQkJCQlTaGFuZ2hhaSBTSCAyMDAwMDIKLQkJCQlDSElOQQotCi0wMC0xNC03RSAgIChoZXgpCQlJbm5lcldpcmVsZXNzCi0wMDE0N0UgICAgIChiYXNlIDE2KQkJSW5uZXJXaXJlbGVzcwotCQkJCTExNTUgS2FzIERyaXZlLCBTdWl0ZSAyMDAKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC03RiAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDAxNDdGICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NwotCQkJCUVkZWdlbSBBbnR3ZXJwIEItMjY1MAotCQkJCUJFTEdJVU0KLQotMDAtMTQtODAgICAoaGV4KQkJSGl0YWNoaS1MRyBEYXRhIFN0b3JhZ2UgS29yZWEsIEluYwotMDAxNDgwICAgICAoYmFzZSAxNikJCUhpdGFjaGktTEcgRGF0YSBTdG9yYWdlIEtvcmVhLCBJbmMKLQkJCQkxOS0xLENoZW9uZ2hvLXJpCi0JCQkJSmlud3V5LU15dW4KLQkJCQlQeXVuZ3RhaWsgS3l1bmdnaS1EbyA0NTEtNzEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LTgxICAgKGhleCkJCU11bHRpbGluayBJbmMKLTAwMTQ4MSAgICAgKGJhc2UgMTYpCQlNdWx0aWxpbmsgSW5jCi0JCQkJNTgwIFRlcm5lcyBBdmUKLQkJCQlFbHlyaWEgT0ggNDQwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTgyICAgKGhleCkJCUdvQmFja1RWLCBJbmMKLTAwMTQ4MiAgICAgKGJhc2UgMTYpCQlHb0JhY2tUViwgSW5jCi0JCQkJOTM3IEhhbWlsdG9uIEF2ZW51ZQotCQkJCU1lbmxvIFBhcmsgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTgzICAgKGhleCkJCWVYUyBJbmMuCi0wMDE0ODMgICAgIChiYXNlIDE2KQkJZVhTIEluYy4KLQkJCQkxOTAwIEFsYW1lZGEgZGUgbGFzIFB1bGdhcwotCQkJCVN1aXRlIDEwMwotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtODQgICAoaGV4KQkJQ2VybWF0ZSBUZWNobm9sb2dpZXMgSW5jLgotMDAxNDg0ICAgICAoYmFzZSAxNikJCUNlcm1hdGUgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk3Ri0xLCBObyAxNjggTGllbi1DaGVuIFJkLgotCQkJCUNodW5nLUhvIENpdHkgVGFpcGVpIENvdW50eSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTg1ICAgKGhleCkJCUdpZ2EtQnl0ZQotMDAxNDg1ICAgICAoYmFzZSAxNikJCUdpZ2EtQnl0ZQotCQkJCU5vLjIxNSxOYW4tUGluZyBSb2FkLAotCQkJCVBpbi1KZW4gVGFveXVhbiAzMjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTg2ICAgKGhleCkJCUVjaG8gRGlnaXRhbCBBdWRpbyBDb3Jwb3JhdGlvbgotMDAxNDg2ICAgICAoYmFzZSAxNikJCUVjaG8gRGlnaXRhbCBBdWRpbyBDb3Jwb3JhdGlvbgotCQkJCTY0NTAgVmlhIFJlYWwgIzEKLQkJCQlDYXJwaW50ZXJpYSBDQSA5MzAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtODcgICAoaGV4KQkJQW1lcmljYW4gVGVjaG5vbG9neSBJbnRlZ3JhdG9ycwotMDAxNDg3ICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIFRlY2hub2xvZ3kgSW50ZWdyYXRvcnMKLQkJCQkxMzU4IFJvc2FsaWEgQXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTg4ICAgKGhleCkJCUFrb3JyaQotMDAxNDg4ICAgICAoYmFzZSAxNikJCUFrb3JyaQotCQkJCTMwNSBGb3N0ZXIgU3RyZWV0Ci0JCQkJTGl0dGxldG9uIE1BIDAxNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC04OSAgIChoZXgpCQlCMTU0MDIxMDAgLSBKQU5ERUksIFMuTC4KLTAwMTQ4OSAgICAgKGJhc2UgMTYpCQlCMTU0MDIxMDAgLSBKQU5ERUksIFMuTC4KLQkJCQlQT0wuIElORC4gUE9DT01BQ08sIEUtMjgKLQkJCQlMQSBDT1JVTkEgIDE1MTkwCi0JCQkJU1BBSU4KLQotMDAtMTQtOEEgICAoaGV4KQkJRWxpbiBFYmcgVHJhY3Rpb24gR21iaAotMDAxNDhBICAgICAoYmFzZSAxNikJCUVsaW4gRWJnIFRyYWN0aW9uIEdtYmgKLQkJCQlDdW1iZXJsYW5kc3RyYXNzZSAzMgotCQkJCVZpZW5uYSAgMTE0MAotCQkJCUFVU1RSSUEKLQotMDAtMTQtOEIgICAoaGV4KQkJR2xvYm8gRWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0wMDE0OEIgICAgIChiYXNlIDE2KQkJR2xvYm8gRWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0JCQkJSW5kdXN0cmllc3RyYXNzZSA0YQotCQkJCU5pZWRlcmxhdWVyIEJheWVybiA5NzYxOAotCQkJCUdFUk1BTlkKLQotMDAtMTQtOEMgICAoaGV4KQkJRm9ydHJlc3MgVGVjaG5vbG9naWVzCi0wMDE0OEMgICAgIChiYXNlIDE2KQkJRm9ydHJlc3MgVGVjaG5vbG9naWVzCi0JCQkJMiBUZWNobm9sb2d5IFBhcmsgRHJpdmUKLQkJCQlXZXN0Zm9yZCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtOEQgICAoaGV4KQkJQ3ViaWMgRGVmZW5zZSBTaW11bGF0aW9uIFN5c3RlbXMKLTAwMTQ4RCAgICAgKGJhc2UgMTYpCQlDdWJpYyBEZWZlbnNlIFNpbXVsYXRpb24gU3lzdGVtcwotCQkJCTIwMDEgVy4gT2FrcmlkZ2UgUm9hZAotCQkJCU9ybGFuZG8gRkwgMzI4MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LThFICAgKGhleCkJCVRlbGUgUG93ZXIgSW5jLgotMDAxNDhFICAgICAoYmFzZSAxNikJCVRlbGUgUG93ZXIgSW5jLgotCQkJCTEtNDYtMTUjQjFGCi0JCQkJQXNhaGlnYW9rYQotCQkJCU5lcmltYS1rdSBUb2t5byAxNzYtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTE0LThGICAgKGhleCkJCVByb3Ryb25pYyAoRmFyIEVhc3QpIEx0ZC4KLTAwMTQ4RiAgICAgKGJhc2UgMTYpCQlQcm90cm9uaWMgKEZhciBFYXN0KSBMdGQuCi0JCQkJUm0uIDI1MDQsIE5hbnlhbmcgUGxhemEsCi0JCQkJNTcgSHVuZyBUbyBSb2FkCi0JCQkJS3d1biBUb25nIEtvd2xvb24gODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE0LTkwICAgKGhleCkJCUFTUCBDb3Jwb3JhdGlvbgotMDAxNDkwICAgICAoYmFzZSAxNikJCUFTUCBDb3Jwb3JhdGlvbgotCQkJCTQ2NSBJbmR1c3RyaWFsIFBhcmsgUm9hZAotCQkJCUhhcnR3ZWxsIEdBIDMwNjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC05MSAgIChoZXgpCQlEYW5pZWxzIEVsZWN0cm9uaWNzIEx0ZC4KLTAwMTQ5MSAgICAgKGJhc2UgMTYpCQlEYW5pZWxzIEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQk0MyBFcmllIFN0Ci0JCQkJVmljdG9yaWEgQkMgVjhWIDFQOAotCQkJCUNBTkFEQQotCi0wMC0xNC05MiAgIChoZXgpCQlMaXRlb24sIE1vYmlsZSBNZWRpYSBTb2x1dGlvbiBTQlUKLTAwMTQ5MiAgICAgKGJhc2UgMTYpCQlMaXRlb24sIE1vYmlsZSBNZWRpYSBTb2x1dGlvbiBTQlUKLQkJCQk0RiwgMywgTGFuZSA3NjgsIFNlYy4gNCwKLQkJCQlQYXRlaCBSb2FkLAotCQkJCVRhaXBlaSAgMTE1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC05MyAgIChoZXgpCQlTeXN0aW1heCBTb2x1dGlvbnMKLTAwMTQ5MyAgICAgKGJhc2UgMTYpCQlTeXN0aW1heCBTb2x1dGlvbnMKLQkJCQkxMzAwIEUgTG9va291dCBEcml2ZQotCQkJCVJpY2hhcmRzb24gVGV4YXMgNzUwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTk0ICAgKGhleCkJCUVTVSBBRwotMDAxNDk0ICAgICAoYmFzZSAxNikJCUVTVSBBRwotCQkJCUx1a2Fzc3RyYXNzZSAyOQotCQkJCVN0LiBHYWxsZW4gIDkwMDgKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNC05NSAgIChoZXgpCQkyV2lyZSwgSW5jLgotMDAxNDk1ICAgICAoYmFzZSAxNikJCTJXaXJlLCBJbmMuCi0JCQkJMTcwNCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtOTYgICAoaGV4KQkJUGhvbmljIENvcnAuCi0wMDE0OTYgICAgIChiYXNlIDE2KQkJUGhvbmljIENvcnAuCi0JCQkJMTJ0aEZsLCA1OSBUdW5nIEhzaW5nIFJkCi0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTk3ICAgKGhleCkJCVpISVlVQU4gRWxldHJvbmljcyBjby4sbHRkLgotMDAxNDk3ICAgICAoYmFzZSAxNikJCVpISVlVQU4gRWxldHJvbmljcyBjby4sbHRkLgotCQkJCTIgRmxvb3IsIE5PLjMgQnVpbGRpbmcsIEh1YW5nemhvdSBJbmR1c3RyaWFsIEVzdGF0ZSwgQ2hlYmVpIFJvYWQsCi0JCQkJVGlhbmhlCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2NjAKLQkJCQlDSElOQQotCi0wMC0xNC05OCAgIChoZXgpCQlWaWtpbmcgRGVzaWduIFRlY2hub2xvZ3kKLTAwMTQ5OCAgICAgKGJhc2UgMTYpCQlWaWtpbmcgRGVzaWduIFRlY2hub2xvZ3kKLQkJCQkyRiwgTm8uMiwgTGFuZSA0MiwKLQkJCQlIb3UtR2FuZyBTdHJlZXQsIFNoaWgtTGluIERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTk5ICAgKGhleCkJCUhlbGljb21tIEluYwotMDAxNDk5ICAgICAoYmFzZSAxNikJCUhlbGljb21tIEluYwotCQkJCTE5NDcgQ2FtaW5vIFZpZGEgUm9ibGUKLQkJCQlTdWl0ZSAxMDkKLQkJCQlDYXJsc2JhZCBDQSA5MjAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtOUEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDE0OUEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4gVXMgSHd5IDQ1Ci0JCQkJUm0gTVcxMTMKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTlCICAgKGhleCkJCU5va290YSBDb21tdW5pY2F0aW9ucywgTExDCi0wMDE0OUIgICAgIChiYXNlIDE2KQkJTm9rb3RhIENvbW11bmljYXRpb25zLCBMTEMKLQkJCQkyMDAgR2FsbGVyaWEgUGFya3dheQotCQkJCVN1aXRlIDE4MjAKLQkJCQlBdGxhbnRhIEdlb3JnaWEgMzAzMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTlDICAgKGhleCkJCUhGIENvbXBhbnkKLTAwMTQ5QyAgICAgKGJhc2UgMTYpCQlIRiBDb21wYW55Ci0JCQkJTm9kZSBQYXJrIFRvdXJhaW5lCi0JCQkJQlAxIFRhdXhpZ255ICAzNzMxMAotCQkJCUZSQU5DRQotCi0wMC0xNC05RCAgIChoZXgpCQlTb3VuZCBJRCBJbmMuCi0wMDE0OUQgICAgIChiYXNlIDE2KQkJU291bmQgSUQgSW5jLgotCQkJCTM0MzAgV2VzdCBCYXlzaG9yZSBSb2FkCi0JCQkJUGFsbyBBbHRvIENhbGlmb3JuaWEgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTlFICAgKGhleCkJCVViT05FIENvLiwgTHRkCi0wMDE0OUUgICAgIChiYXNlIDE2KQkJVWJPTkUgQ28uLCBMdGQKLQkJCQlTaGlueW91bmcgQi5ELiA2MDIsIFNlb0h5ZW9uMi1Eb25nCi0JCQkJQnVuZGFuZy1HdQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2ctZG8gNDYzLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC05RiAgIChoZXgpCQlTeXN0ZW0gYW5kIENoaXBzLCBJbmMuCi0wMDE0OUYgICAgIChiYXNlIDE2KQkJU3lzdGVtIGFuZCBDaGlwcywgSW5jLgotCQkJCTRGLE5vLiAxLCBMYW5lIDUwLCBOYW5LYW5nIFJvYWQsIFNlY3Rpb24gMywKLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtQTAgICAoaGV4KQkJQWNjc2Vuc2UsIEluYy4KLTAwMTRBMCAgICAgKGJhc2UgMTYpCQlBY2NzZW5zZSwgSW5jLgotCQkJCTQ2MCBXYXJkIERyaXZlCi0JCQkJU3VpdGUgRTIKLQkJCQlTYW50YSBCYXJiYXJhIENhbGlmb3JuaWEgOTMxMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUExICAgKGhleCkJCVN5bmNocm9ub3VzIENvbW11bmljYXRpb24gQ29ycAotMDAxNEExICAgICAoYmFzZSAxNikJCVN5bmNocm9ub3VzIENvbW11bmljYXRpb24gQ29ycAotCQkJCTkgZmxvb3IsIE5vMTY4LCBSdWVpZ3VhbmcgUm9hZCwgTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtQTIgICAoaGV4KQkJQ29yZSBNaWNybyBTeXN0ZW1zIEluYy4KLTAwMTRBMiAgICAgKGJhc2UgMTYpCQlDb3JlIE1pY3JvIFN5c3RlbXMgSW5jLgotCQkJCVdhanVuIEJsZGcuIDZGLCAyLTIyLTIsIEtvaXNoaWthd2EKLQkJCQlCdW5reW8tS3UgVG9reW8gMTEyLTAwMDIKLQkJCQlKQVBBTgotCi0wMC0xNC1BMyAgIChoZXgpCQlWaXRlbGVjIEJWCi0wMDE0QTMgICAgIChiYXNlIDE2KQkJVml0ZWxlYyBCVgotCQkJCWthcGl0dGVsd2VnIDE4Ci0JCQkJUC5PLkJveCA2NTQzCi0JCQkJQnJlZGEgTkIgTkwgNDgyNyBIRwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE0LUE0ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0wMDE0QTQgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLQkJCQk1Ri0xLCA1IEhTSU4tQU4gUk9BRAotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTkNIVSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC1BNSAgIChoZXgpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTRBNSAgICAgKGJhc2UgMTYpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMSBKZW4gQWkgUm9hZAotCQkJCUhzaW5jaHUgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHVrb3UsIEhzaW5jaHUgIDMwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtQTYgICAoaGV4KQkJVGVyYW5ldGljcywgSW5jLgotMDAxNEE2ICAgICAoYmFzZSAxNikJCVRlcmFuZXRpY3MsIEluYy4KLQkJCQkzOTY1IEZyZWVkb20gQ2lyY2xlCi0JCQkJIFNpeHRoIEZsb29yCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUE3ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE0QTcgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIDE3OTBWCi0JCQkJREVOTUFSSwotCi0wMC0xNC1BOCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE0QTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1BOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE0QTkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1BQSAgIChoZXgpCQlBc2hseSBBdWRpbywgSW5jLgotMDAxNEFBICAgICAoYmFzZSAxNikJCUFzaGx5IEF1ZGlvLCBJbmMuCi0JCQkJODQ3IEhvbHQgUm9hZAotCQkJCVdlYnN0ZXIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUFCICAgKGhleCkJCVNlbmhhaSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDE0QUIgICAgIChiYXNlIDE2KQkJU2VuaGFpIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSbS4xMEEuIDI4L0YuU0VHUGxhemEgSHVhcWlhbmdiZWkgUm9hZAotCQkJCVNoZW5nemhlbiBHdWFuZ2RvbmcgNTE4MDMxCi0JCQkJQ0hJTkEKLQotMDAtMTQtQUMgICAoaGV4KQkJQm91bnRpZnVsIFdpRmkKLTAwMTRBQyAgICAgKGJhc2UgMTYpCQlCb3VudGlmdWwgV2lGaQotCQkJCTcwNyBXZXN0IDcwMCBTb3V0aAotCQkJCVdvb2RzIENyb3NzIFV0YWggODQwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUFEICAgKGhleCkJCUdhc3NuZXIgV2llZ2UtIHUuIE1lQT90ZWNobmlrIEdtYkgKLTAwMTRBRCAgICAgKGJhc2UgMTYpCQlHYXNzbmVyIFdpZWdlLSB1LiBNZUE/dGVjaG5payBHbWJICi0JCQkJTWk/b2VuY2huZXIgQnVuZGVzc3RyYWk/b2VlIDEyMyAgIAotCQkJCVNhbHpidXJnICBBLTUwMjAKLQkJCQlBVVNUUklBCi0KLTAwLTE0LUFFICAgKGhleCkJCVdpemxvZ2ljcyBDby4sIEx0ZC4KLTAwMTRBRSAgICAgKGJhc2UgMTYpCQlXaXpsb2dpY3MgQ28uLCBMdGQuCi0JCQkJUm0jMTMyMSwgU2FtY2hhbmcgUGxhemEsIDE3MywKLQkJCQlEb3doYS1Eb25nIE1hcG8tR3UsCi0JCQkJU2VvdWwgIDEyMS03NDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtQUYgICAoaGV4KQkJRGF0YXN5bSBJbmMuCi0wMDE0QUYgICAgIChiYXNlIDE2KQkJRGF0YXN5bSBJbmMuCi0JCQkJNDM1IEVsZ2luIFN0cmVldAotCQkJCUJyYW50Zm9yZCBPbnRhcmlvIE4zUzdQNQotCQkJCUNBTkFEQQotCi0wMC0xNC1CMCAgIChoZXgpCQlOYWVpbCBDb21tdW5pdHkKLTAwMTRCMCAgICAgKGJhc2UgMTYpCQlOYWVpbCBDb21tdW5pdHkKLQkJCQkjNTA2IEFjZVR3aW4gVG93ZXIgMSwgR3Vyby1Eb25nCi0JCQkJU2VvdWwgR3Vyby1HdSAxNTI3NzkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtQjEgICAoaGV4KQkJQXZpdGVjIEFCCi0wMDE0QjEgICAgIChiYXNlIDE2KQkJQXZpdGVjIEFCCi0JCQkJQm94IDcxMzkKLQkJCQlTVU5EQllCRVJHICBTRS0xNzQgMDcKLQkJCQlTV0VERU4KLQotMDAtMTQtQjIgICAoaGV4KQkJbUN1YmVsb2dpY3MgQ29ycG9yYXRpb24KLTAwMTRCMiAgICAgKGJhc2UgMTYpCQltQ3ViZWxvZ2ljcyBDb3Jwb3JhdGlvbgotCQkJCTRGLCBVbmlib29rcyBCL0QsIDUxNC0xLCBEb2dvay1Eb25nLCBLYW5nTmFtCi0JCQkJU2VvdWwgIDEzNS0yNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtQjMgICAoaGV4KQkJQ29yZVN0YXIgSW50ZXJuYXRpb25hbCBDb3JwCi0wMDE0QjMgICAgIChiYXNlIDE2KQkJQ29yZVN0YXIgSW50ZXJuYXRpb25hbCBDb3JwCi0JCQkJMTA0NCBTYW5keSBIaWxsIFJkCi0JCQkJSXJ3aW4gUEEgMTU2NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUI0ICAgKGhleCkJCUdlbmVyYWwgRHluYW1pY3MgVW5pdGVkIEtpbmdkb20gTHRkCi0wMDE0QjQgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBEeW5hbWljcyBVbml0ZWQgS2luZ2RvbSBMdGQKLQkJCQlDYXN0bGVoYW0gUm9hZAotCQkJCVN0IExlb25hcmRzIG9uIFNlYSBFYXN0IFN1c3NleCBUTjM4IDlOSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE0LUI1ICAgKGhleCkJCVBIWVNJT01FVFJJWCxJTkMKLTAwMTRCNSAgICAgKGJhc2UgMTYpCQlQSFlTSU9NRVRSSVgsSU5DCi0JCQkJMTAxIEJJTExFUklDQSBBVkUgIzUKLQkJCQlOLiBCSUxMRVJJQ0EgTUEgMDE4NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUI2ICAgKGhleCkJCUVuc3dlciBUZWNobm9sb2d5IEluYy4KLTAwMTRCNiAgICAgKGJhc2UgMTYpCQlFbnN3ZXIgVGVjaG5vbG9neSBJbmMuCi0JCQkJMUYgTm8uNzAgU2VjLjIgQ2h1bmcgU2h1biBTdC4KLQkJCQlUYWlwZWkgIDExNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtQjcgICAoaGV4KQkJQVIgSW5mb3RlayBJbmMuCi0wMDE0QjcgICAgIChiYXNlIDE2KQkJQVIgSW5mb3RlayBJbmMuCi0JCQkJOUYsIE5vLjE4NSwgR2FuZ1FpYW4gUm9hZAotCQkJCU5laUh1IFRlY2hub2xvZ3kgUGFyaywKLQkJCQlUYWlwZWkgIDExNDk0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC1COCAgIChoZXgpCQlIaWxsLVJvbQotMDAxNEI4ICAgICAoYmFzZSAxNikJCUhpbGwtUm9tCi0JCQkJMTEyNSBFLiBQZWFybCBTdHJlZXQKLQkJCQlCYXRlc3ZpbGxlIElOIDQ3MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1COSAgIChoZXgpCQlNU1RBUiBTRU1JQ09ORFVDVE9SCi0wMDE0QjkgICAgIChiYXNlIDE2KQkJTVNUQVIgU0VNSUNPTkRVQ1RPUgotCQkJCTExLTEzIHJ1ZSBSZW5lIEphY3F1ZXMKLQkJCQlJc3N5IGxlcyBNb3VsaW5lYXV4ICA5MjEzMAotCQkJCUZSQU5DRQotCi0wMC0xNC1CQSAgIChoZXgpCQlDYXJ2ZXJzIFNBIGRlIENWCi0wMDE0QkEgICAgIChiYXNlIDE2KQkJQ2FydmVycyBTQSBkZSBDVgotCQkJCUFsdmFyZXogZGVsIENhc3RpbGxvIDE1NTAKLQkJCQlDaGFwdWx0ZXBlYyBDb3VudHJ5Ci0JCQkJR3VhZGFsYWphcmEgSmFsaXNjbyA0NDYyMAotCQkJCU1FWElDTwotCi0wMC0xNC1CQiAgIChoZXgpCQlPcGVuIEludGVyZmFjZSBOb3J0aCBBbWVyaWNhCi0wMDE0QkIgICAgIChiYXNlIDE2KQkJT3BlbiBJbnRlcmZhY2UgTm9ydGggQW1lcmljYQotCQkJCTUwNiAybmQgQXZlbnVlLCBTdWl0ZSA0MjAKLQkJCQlTZWF0dGxlIFdBIDk4MTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1CQyAgIChoZXgpCQlTWU5FQ1RJQyBURUxFQ09NIEVYUE9SVFMgUFZULiBMVEQuCi0wMDE0QkMgICAgIChiYXNlIDE2KQkJU1lORUNUSUMgVEVMRUNPTSBFWFBPUlRTIFBWVC4gTFRELgotCQkJCTE5NiwgMXN0IE1haW4sIDNyZCBTdGFnZSwgNHRoIEJsb2NrCi0JCQkJQmFzYXZlc2h3YXIgTmFnYXIKLQkJCQlCQU5HQUxPUkUgIDU2MDA3OQotCQkJCUlORElBCi0KLTAwLTE0LUJEICAgKGhleCkJCWluY05FVFdPUktTLCBJbmMKLTAwMTRCRCAgICAgKGJhc2UgMTYpCQlpbmNORVRXT1JLUywgSW5jCi0JCQkJMTk4IEJyaWdodG9uIEF2ZQotCQkJCUxvbmcgQnJhbmNoIE5KIDA3NzQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1CRSAgIChoZXgpCQlXaW5rIGNvbW11bmljYXRpb24gdGVjaG5vbG9neSBDTy5MVEQKLTAwMTRCRSAgICAgKGJhc2UgMTYpCQlXaW5rIGNvbW11bmljYXRpb24gdGVjaG5vbG9neSBDTy5MVEQKLQkJCQlIdWlqaWFuZyBJbmQgQmxkaW5nIERhc2hpIFRvd24KLQkJCQlQYW55dSBEaXN0cmljdAotCQkJCUd1YW5nIHpob3UgR3VhbmcgZG9uZyA1MTE0MzAKLQkJCQlDSElOQQotCi0wMC0xNC1CRiAgIChoZXgpCQlDaXNjby1MaW5rc3lzIExMQwotMDAxNEJGICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMgTExDCi0JCQkJMTIxIFRoZW9yeSBEci4KLQkJCQlJcnZpbmUgQ0EgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUMwICAgKGhleCkJCVN5bXN0cmVhbSBUZWNobm9sb2d5IEdyb3VwIEx0ZAotMDAxNEMwICAgICAoYmFzZSAxNikJCVN5bXN0cmVhbSBUZWNobm9sb2d5IEdyb3VwIEx0ZAotCQkJCUxldmVsIDEsIDMgQ2hlc3RlciBTdHJlZXQKLQkJCQlPYWtsZWlnaCBWaWN0b3JpYSAzMTY2Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTE0LUMxICAgKGhleCkJCVUuUy4gUm9ib3RpY3MgQ29ycG9yYXRpb24KLTAwMTRDMSAgICAgKGJhc2UgMTYpCQlVLlMuIFJvYm90aWNzIENvcnBvcmF0aW9uCi0JCQkJOTM1IE5hdGlvbmFsIFBhcmt3YXkKLQkJCQlTY2hhdW1idXJnIElMIDYwMTczLTUxNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUMyICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxNEMyICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFRvbWJhbGwgUGFya3dheQotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQzMgICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5IExMQwotMDAxNEMzICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neSBMTEMKLQkJCQkxMjgwIERpc2MgRHJpdmUKLQkJCQlTaGFrb3BlZSBNTiA1NTM3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQzQgICAoaGV4KQkJVml0ZWxjb20gTW9iaWxlIFRlY2hub2xvZ3kKLTAwMTRDNCAgICAgKGJhc2UgMTYpCQlWaXRlbGNvbSBNb2JpbGUgVGVjaG5vbG9neQotCQkJCVBUQSwgQXZkYSwgSnVhbiBMb3BleiBQZW5hbHZlciwgbj8gNwotCQkJCTI5NTkwLCBDYW1wYW5pbGxhcwotCQkJCUNhbXBhbmlsbGFzLiBNYWxhZ2EuIAotCQkJCVNQQUlOCi0KLTAwLTE0LUM1ICAgKGhleCkJCUFsaXZlIFRlY2hub2xvZ2llcyBQdHkgTHRkCi0wMDE0QzUgICAgIChiYXNlIDE2KQkJQWxpdmUgVGVjaG5vbG9naWVzIFB0eSBMdGQKLQkJCQkxMSBUZWNobm9sb2d5IERyaXZlCi0JCQkJQXJ1bmRlbCBRdWVlbnNsYW5kIDQyMTQKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTQtQzYgICAoaGV4KQkJUXVpeGFudCBMdGQKLTAwMTRDNiAgICAgKGJhc2UgMTYpCQlRdWl4YW50IEx0ZAotCQkJCTYxQSBNb3VudCBQbGVhc2FudAotCQkJCUJpZ2dpbiBIaWxsCi0JCQkJRW5nbGFuZCBLZW50IFROMTYgM1RQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTQtQzcgICAoaGV4KQkJTm9ydGVsCi0wMDE0QzcgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTQtQzggICAoaGV4KQkJQ29udGVtcG9yYXJ5IFJlc2VhcmNoIENvcnAKLTAwMTRDOCAgICAgKGJhc2UgMTYpCQlDb250ZW1wb3JhcnkgUmVzZWFyY2ggQ29ycAotCQkJCTE3NjMwIERhdmVucG9ydCBSZAotCQkJCVNURSAxMTMKLQkJCQlEYWxsYXMgVFggNzUyNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUM5ICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotMDAxNEM5ICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTE3NDUgVGVjaG5vbG9neSBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQ0EgICAoaGV4KQkJS2V5IFJhZGlvIFN5c3RlbXMgTGltaXRlZAotMDAxNENBICAgICAoYmFzZSAxNikJCUtleSBSYWRpbyBTeXN0ZW1zIExpbWl0ZWQKLQkJCQlWZW51cyBIb3VzZQotCQkJCUNhbGxldmEgUGFyawotCQkJCUFsZGVybWFzdG9uIEJlcmtzaGlyZSBSRzcgOERBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTQtQ0IgICAoaGV4KQkJTGlmZVN5bmMgQ29ycG9yYXRpb24KLTAwMTRDQiAgICAgKGJhc2UgMTYpCQlMaWZlU3luYyBDb3Jwb3JhdGlvbgotCQkJCTEgRSBCcm93YXJkIEJvdWxldmFyZCwgU3VpdGUgMTcwMQotCQkJCUZvcnQgTGF1ZGVyZGFsZSBGbG9yaWRhIDMzMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1DQyAgIChoZXgpCQlaZXRlYywgSW5jLgotMDAxNENDICAgICAoYmFzZSAxNikJCVpldGVjLCBJbmMuCi0JCQkJODIyNiBCcmFja2VuIFBsYWNlIFNFCi0JCQkJU25vcXVhbG1pZSBXQSA5ODA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQ0QgICAoaGV4KQkJRGlnaXRhbFpvbmUgQ28uLCBMdGQuCi0wMDE0Q0QgICAgIChiYXNlIDE2KQkJRGlnaXRhbFpvbmUgQ28uLCBMdGQuCi0JCQkJTm8uIDEwMDEgRSZDIFZlbnR1cmVEcmVhbVRvd2VyMgotCQkJCTE5Ny0xMCBHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1DRSAgIChoZXgpCQlORiBDT1JQT1JBVElPTgotMDAxNENFICAgICAoYmFzZSAxNikJCU5GIENPUlBPUkFUSU9OCi0JCQkJNi0zLTIwLCBUc3VuYXNoaW1hLWhpZ2FzaGkKLQkJCQlLb2hva3Uta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjMtODUwOAotCQkJCUpBUEFOCi0KLTAwLTE0LUNGICAgKGhleCkJCUlOVklTSU8gQ29tbXVuaWNhdGlvbnMKLTAwMTRDRiAgICAgKGJhc2UgMTYpCQlJTlZJU0lPIENvbW11bmljYXRpb25zCi0JCQkJU3RhbWhvbG1lbiAxNTcKLQkJCQlIdmlkb3ZyZSAgMjY1MAotCQkJCURFTk1BUksKLQotMDAtMTQtRDAgICAoaGV4KQkJQlRJIFN5c3RlbXMgSW5jLgotMDAxNEQwICAgICAoYmFzZSAxNikJCUJUSSBTeXN0ZW1zIEluYy4KLQkJCQk1MCBOb3J0aHNpZGUgUm9hZAotCQkJCU90dGF3YSBPbnRhcmlvIEsySCA1WjYKLQkJCQlDQU5BREEKLQotMDAtMTQtRDEgICAoaGV4KQkJVFJFTkRuZXQKLTAwMTREMSAgICAgKGJhc2UgMTYpCQlUUkVORG5ldAotCQkJCTIwNjc1IE1hbmhhdHRhbiBQbGFjZQotCQkJCVRvcnJhbmNlIENBIDkwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1EMiAgIChoZXgpCQlLWVVLSSBDT1JQT1JBVElPTgotMDAxNEQyICAgICAoYmFzZSAxNikJCUtZVUtJIENPUlBPUkFUSU9OCi0JCQkJNC0xOS0xOCBTSElNSVpVLE1JTkFNSS1LVQotCQkJCUZVS1VPS0EgIDgxNS0wMDMxCi0JCQkJSkFQQU4KLQotMDAtMTQtRDMgICAoaGV4KQkJU0VQU0EKLTAwMTREMyAgICAgKGJhc2UgMTYpCQlTRVBTQQotCQkJCWNhbGxlIEFsYmF0cm9zLCA3IHkgOQotCQkJCVBvbC4gSW5kLiBMYSBFc3RhY2lvbgotCQkJCVBJTlRPIE1hZHJpZCAyODMyMAotCQkJCVNQQUlOCi0KLTAwLTE0LUQ0ICAgKGhleCkJCUsgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxNEQ0ICAgICAoYmFzZSAxNikJCUsgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTMyNSBHYW5iYXJhCi0JCQkJS2FtaS1tYWNoaQotCQkJCUthbWktZ3VuIE1peWFnaS1rZW4gOTgxLTQyNjMKLQkJCQlKQVBBTgotCi0wMC0xNC1ENSAgIChoZXgpCQlEYXRhbmcgVGVsZWNvbSBUZWNobm9sb2d5IENPLiAsIExDRCxPcHRpY2FsIENvbW11bmljYXRpb24gQnIKLTAwMTRENSAgICAgKGJhc2UgMTYpCQlEYXRhbmcgVGVsZWNvbSBUZWNobm9sb2d5IENPLiAsIExDRCxPcHRpY2FsIENvbW11bmljYXRpb24gQnIKLQkJCQkzcmQgRmxvb3IsQnVpbGRpbmcgOCxIaS1UZWNoIEluY3ViYXRpb24gUGFyaywKLQkJCQlOYW55YW54aWFuLFRpYW5mdSBBdmUsY2hlbmdkdSBIaS1UZWNoIFpvbmUsCi0JCQkJQ2hlbmdEdSBTaUNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLTAwLTE0LUQ2ICAgKGhleCkJCUplb25nbWluIEVsZWN0cm9uaWNzIENvLixMdGQuCi0wMDE0RDYgICAgIChiYXNlIDE2KQkJSmVvbmdtaW4gRWxlY3Ryb25pY3MgQ28uLEx0ZC4KLQkJCQkjNzEwLCBCeXVrc2FuIERpZ2l0YWwgVmFsbGV5IDIsCi0JCQkJS2FzYW4tRG9uZywgS2V1bWNoZW9uLUd1LAotCQkJCVNlb3VsICAxNTMgNzgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUQ3ICAgKGhleCkJCURhdGFzdG9yZSBUZWNobm9sb2d5IENvcnAKLTAwMTRENyAgICAgKGJhc2UgMTYpCQlEYXRhc3RvcmUgVGVjaG5vbG9neSBDb3JwCi0JCQkJOUYsIE5PLjEwLCBTRUMuMSwgQ2h1bmcgSHNpbmcgUkQuLCBXdS1LdQotCQkJCVRhaXBlaSBIc2llbiwgIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtRDggICAoaGV4KQkJYmlvLWxvZ2ljIFNBCi0wMDE0RDggICAgIChiYXNlIDE2KQkJYmlvLWxvZ2ljIFNBCi0JCQkJMSwgcnVlIGRlIGwnRXVyb3BlCi0JCQkJQ0xBSVggIDM4NjQwCi0JCQkJRlJBTkNFCi0KLTAwLTE0LUQ5ICAgKGhleCkJCUlQIEZhYnJpY3MsIEluYy4KLTAwMTREOSAgICAgKGJhc2UgMTYpCQlJUCBGYWJyaWNzLCBJbmMuCi0JCQkJMTQ5NjQgTlcgR3JlZW5icmllciBQYXJrd2F5Ci0JCQkJQmVhdmVydG9uIE9yZWdvbiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtREEgICAoaGV4KQkJSHVudGxlaWdoIEhlYWx0aGNhcmUKLTAwMTREQSAgICAgKGJhc2UgMTYpCQlIdW50bGVpZ2ggSGVhbHRoY2FyZQotCQkJCUh1bnRsZWlnaCBIZWFsdGhjYXJlIC0gRGlhZ25vc3RpYyBQcm9kdWN0cyBEaXZpc2lvbgotCQkJCTM1IFBvcnRtYW5tb29yIFJvYWQKLQkJCQlDYXJkaWZmICBDRjI0IDVITgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE0LURCICAgKGhleCkJCUVsbWEgVHJlbmV3IEVsZWN0cm9uaWMgR21iSAotMDAxNERCICAgICAoYmFzZSAxNikJCUVsbWEgVHJlbmV3IEVsZWN0cm9uaWMgR21iSAotCQkJCVN0dXR0Z2FydGVyIFN0cmFzc2UgMTEKLQkJCQlQZm9yemhlaW0gQlcgNzUxNzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LURDICAgKGhleCkJCUNvbW11bmljYXRpb24gU3lzdGVtIERlc2lnbiAmIE1hbnVmYWN0dXJpbmcgKENTRE0pCi0wMDE0REMgICAgIChiYXNlIDE2KQkJQ29tbXVuaWNhdGlvbiBTeXN0ZW0gRGVzaWduICYgTWFudWZhY3R1cmluZyAoQ1NETSkKLQkJCQlQb3N0YnVzIDE4MQotCQkJCUJ1c3N1bSBOSCAxNDAwIEFECi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTQtREQgICAoaGV4KQkJQ292ZXJnZW5jZSBJbmMuCi0wMDE0REQgICAgIChiYXNlIDE2KQkJQ292ZXJnZW5jZSBJbmMuCi0JCQkJT25lIENsb2NrIFRvd2VyIFBsYWNlLCBTdWl0ZSAyMDAKLQkJCQlNYXluYXJkIE1BIDAxNzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1ERSAgIChoZXgpCQlTYWdlIEluc3RydW1lbnRzIEluYy4KLTAwMTRERSAgICAgKGJhc2UgMTYpCQlTYWdlIEluc3RydW1lbnRzIEluYy4KLQkJCQkyNDAgQWlycG9ydCBCbHZkLgotCQkJCUZyZWVkb20gQ0EgOTUwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LURGICAgKGhleCkJCUhJLVAgVGVjaCBDb3Jwb3JhdGlvbgotMDAxNERGICAgICAoYmFzZSAxNikJCUhJLVAgVGVjaCBDb3Jwb3JhdGlvbgotCQkJCTEtMjctMjMgSGlnYXNoaXRva29yb3phd2EKLQkJCQlUb2tvcm96YXdhIFNhaXRhbWEgMzU5LTAwMjEKLQkJCQlKQVBBTgotCi0wMC0xNC1FMCAgIChoZXgpCQlMRVQnUyBDb3Jwb3JhdGlvbgotMDAxNEUwICAgICAoYmFzZSAxNikJCUxFVCdTIENvcnBvcmF0aW9uCi0JCQkJQmFuY2hvIEJsZGcuIDRGLCAyLTE4LTIwIE1hcnVub3VjaGksIE5ha2EKLQkJCQlOYWdveWEgQWljaGkgNDYwLTAwMDIKLQkJCQlKQVBBTgotCi0wMC0xNC1FMSAgIChoZXgpCQlEYXRhIERpc3BsYXkgQUcKLTAwMTRFMSAgICAgKGJhc2UgMTYpCQlEYXRhIERpc3BsYXkgQUcKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDEKLQkJCQlHZXJtZXJpbmcgQmF5ZXJuIDgyMTEwCi0JCQkJR0VSTUFOWQotCi0wMC0xNC1FMiAgIChoZXgpCQlkYXRhY29tIHN5c3RlbXMgaW5jLgotMDAxNEUyICAgICAoYmFzZSAxNikJCWRhdGFjb20gc3lzdGVtcyBpbmMuCi0JCQkJOSBhZGxlciBkcml2ZQotCQkJCWVhc3Qgc3lyYWN1c2Ugbi55LiAxMzA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRTMgICAoaGV4KQkJbW0tbGFiIEdtYkgKLTAwMTRFMyAgICAgKGJhc2UgMTYpCQltbS1sYWIgR21iSAotCQkJCVN0YW1taGVpbWVyIFN0cmFzc2UgMTAKLQkJCQlELTcwODA2Ci0JCQkJS29ybndlc3RoZWltICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LUU0ICAgKGhleCkJCUludGVncmFsIFRlY2hub2xvZ2llcwotMDAxNEU0ICAgICAoYmFzZSAxNikJCUludGVncmFsIFRlY2hub2xvZ2llcwotCQkJCTk4NTUgQ3Jvc3Nwb2ludCBCbHZkCi0JCQkJU3RlIDEyNgotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRTUgICAoaGV4KQkJQWx0aWNhc3QKLTAwMTRFNSAgICAgKGJhc2UgMTYpCQlBbHRpY2FzdAotCQkJCTE2dGggZmxvb3IsIE5hcmEgQmxkZywgMTMyOC0zCi0JCQkJU2VvY2hvLWRvbmcsIFNlb2Noby1ndSwKLQkJCQlTZW91bCAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUU2ICAgKGhleCkJCUFJTSBJbmZyYXJvdG1vZHVsZSBHbWJICi0wMDE0RTYgICAgIChiYXNlIDE2KQkJQUlNIEluZnJhcm90bW9kdWxlIEdtYkgKLQkJCQlTb2VmbGluZ2Vyc3RyLiAxMDAKLQkJCQlVbG0gQlcgODkwNzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LUU3ICAgKGhleCkJCVN0b2xpbngsLiBJbmMKLTAwMTRFNyAgICAgKGJhc2UgMTYpCQlTdG9saW54LC4gSW5jCi0JCQkJM0YgT2hjaGFuZyBCbGRnLiwgNjEgWWFuZ2phZS1kb25nCi0JCQkJU2VvY2hvLWd1Ci0JCQkJU2VvdWwgIDEzNy04ODkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtRTggICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTRFOCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUU5ICAgKGhleCkJCU5vcnRlY2ggSW50ZXJuYXRpb25hbAotMDAxNEU5ICAgICAoYmFzZSAxNikJCU5vcnRlY2ggSW50ZXJuYXRpb25hbAotCQkJCTMyQSBXaWdhbnRob3JwZSBSb2FkCi0JCQkJV2lsbG93dG9uIEh1YgotCQkJCVBpZXRlcm1hcnRpemJ1cmcgS3dhWnVsdSBOYXRhbCAzMjAxCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTE0LUVBICAgKGhleCkJCVMgRGlnbSBJbmMuIChTYWZlIFBhcmFkaWdtIEluYy4pCi0wMDE0RUEgICAgIChiYXNlIDE2KQkJUyBEaWdtIEluYy4gKFNhZmUgUGFyYWRpZ20gSW5jLikKLQkJCQk1RiwgU2hpbi1hbiBCbGRnLiA4OS04LAotCQkJCU1vb25qdW5nLURvbmcKLQkJCQlTb25ncGEtR3UgU2VvdWwgMTM4LTIwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1FQiAgIChoZXgpCQlBd2FyZVBvaW50IENvcnBvcmF0aW9uCi0wMDE0RUIgICAgIChiYXNlIDE2KQkJQXdhcmVQb2ludCBDb3Jwb3JhdGlvbgotCQkJCTg4OTkgVW5pdmVyc2l0eSBDZW50ZXIgTGFuZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRUMgICAoaGV4KQkJQWNybyBUZWxlY29tCi0wMDE0RUMgICAgIChiYXNlIDE2KQkJQWNybyBUZWxlY29tCi0JCQkJNzE0IFdvb2xpbSBlLUJpeiBDZW50ZXIgMTcwLTUgR3Vyby1kb25nCi0JCQkJR3Vyby1HdSBTZW91bCAxNTItNzY5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUVEICAgKGhleCkJCUFpcmFrLCBJbmMuCi0wMDE0RUQgICAgIChiYXNlIDE2KQkJQWlyYWssIEluYy4KLQkJCQkyMTY0MSBCZWF1bWVhZGUgQ2lyY2xlCi0JCQkJU3VpdGUgMzAwCi0JCQkJQXNoYnVybiBWaXJnaW5pYSAyMDE0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRUUgICAoaGV4KQkJV2VzdGVybiBEaWdpdGFsIFRlY2hub2xvZ2llcywgSW5jLgotMDAxNEVFICAgICAoYmFzZSAxNikJCVdlc3Rlcm4gRGlnaXRhbCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyMDUxMSBMYWtlIEZvcmVzdCBEci4KLQkJCQlMYWtlIEZvcmVzdCBDYSA5MjYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRUYgICAoaGV4KQkJVFplcm8gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDE0RUYgICAgIChiYXNlIDE2KQkJVFplcm8gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNDU1IFcuIE1hdWRlIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRjAgICAoaGV4KQkJQnVzaW5lc3MgU2VjdXJpdHkgT0wgQUIKLTAwMTRGMCAgICAgKGJhc2UgMTYpCQlCdXNpbmVzcyBTZWN1cml0eSBPTCBBQgotCQkJCUJveCAxMTAgNjUKLQkJCQlTdG9yYSBSYWJ5IEJ5YXZhZyA4OAotCQkJCUx1bmQgIDIyMCAxMQotCQkJCVNXRURFTgotCi0wMC0xNC1GMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE0RjEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1GMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE0RjIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1GMyAgIChoZXgpCQlWaVhTIFN5c3RlbXMgSW5jCi0wMDE0RjMgICAgIChiYXNlIDE2KQkJVmlYUyBTeXN0ZW1zIEluYwotCQkJCTIyMzUgU2hlcHBhcmQgQXZlIEVhc3QKLQkJCQlTdWl0ZTE3MDUKLQkJCQlUT1JPTlRPIE9OVEFSSU8gTTJKIDVCNQotCQkJCUNBTkFEQQotCi0wMC0xNC1GNCAgIChoZXgpCQlEZWtUZWMgRGlnaXRhbCBWaWRlbyBCLlYuCi0wMDE0RjQgICAgIChiYXNlIDE2KQkJRGVrVGVjIERpZ2l0YWwgVmlkZW8gQi5WLgotCQkJCVZhbiBSaWViZWVja3dlZyA0M0EKLQkJCQlIaWx2ZXJzdW0gTkggMTIxMkFFCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTQtRjUgICAoaGV4KQkJT1NJIFNlY3VyaXR5IERldmljZXMKLTAwMTRGNSAgICAgKGJhc2UgMTYpCQlPU0kgU2VjdXJpdHkgRGV2aWNlcwotCQkJCTE1ODAgSmF5a2VuIFdheQotCQkJCUNodWxhIFZpc3RhIENhbGlmb3JuaWEgOTE5MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUY2ICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MsIEluYy4KLTAwMTRGNiAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTE5NCBOLiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUY3ICAgKGhleCkJCUNyZXZpcwotMDAxNEY3ICAgICAoYmFzZSAxNikJCUNyZXZpcwotCQkJCUQtMTFGLCBEaWdpdGFsIEVtcGlyZSBCbGRnLiwgOTgwLTMKLQkJCQlZb3VuZ3RvbmcKLQkJCQlTdXdvbiAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUY4ICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YQotMDAxNEY4ICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgQXRsYW50YQotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlNUyA1LjIuNDI4Ci0JCQkJTGF3cmVuY2V2aWxsZSBHYSAzMDA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRjkgICAoaGV4KQkJVmFudGFnZSBDb250cm9scwotMDAxNEY5ICAgICAoYmFzZSAxNikJCVZhbnRhZ2UgQ29udHJvbHMKLQkJCQkxMDYxIFNvdXRoIDgwMCBFYXN0Ci0JCQkJT3JlbSBVVCA4NDA5NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRkEgICAoaGV4KQkJQXNHYSBTLkEuCi0wMDE0RkEgICAgIChiYXNlIDE2KQkJQXNHYSBTLkEuCi0JCQkJUm9kIFJvYmVydG8gTW9yZWlyYSBLbSAwNAotCQkJCVBhdWxpbmlhIFNhbyBQYXVsbyAxMzE0MC0wMDAKLQkJCQlCUkFaSUwKLQotMDAtMTQtRkIgICAoaGV4KQkJVGVjaG5pY2FsIFNvbHV0aW9ucyBJbmMuCi0wMDE0RkIgICAgIChiYXNlIDE2KQkJVGVjaG5pY2FsIFNvbHV0aW9ucyBJbmMuCi0JCQkJMS03MTU3IEhvbmV5bWFuIFN0cmVldAotCQkJCURlbHRhIEJDIFY0RyAxRTIKLQkJCQlDQU5BREEKLQotMDAtMTQtRkMgICAoaGV4KQkJRXh0YW5kb24sIEluYy4KLTAwMTRGQyAgICAgKGJhc2UgMTYpCQlFeHRhbmRvbiwgSW5jLgotCQkJCTM5MzUwIENpdmljIENlbnRlciBEcml2ZSBTdGUuIDE2MAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUZEICAgKGhleCkJCVRoZWN1cyBUZWNobm9sb2d5IENvcnAuCi0wMDE0RkQgICAgIChiYXNlIDE2KQkJVGhlY3VzIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkxNUYuLE5vLiA3OSxTZWMuIDEsU2ludGFpIDV0aCBSRC4sCi0JCQkJU2lqaGloIENpdHkgVGFpcGVpIENvdW50eSAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LUZFICAgKGhleCkJCUFydGVjaCBFbGVjdHJvbmljcwotMDAxNEZFICAgICAoYmFzZSAxNikJCUFydGVjaCBFbGVjdHJvbmljcwotCQkJCSMzMDEsIFlhbmdqYWUgQmxkZy4sIDI3Ni0yCi0JCQkJWWFuZ2phZS1Eb25nLCBTZW9jaG8tS3UKLQkJCQlTZW91bCAgMTM3LTg5NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1GRiAgIChoZXgpCQlQcmVjaXNlIEF1dG9tYXRpb24sIEluYy4KLTAwMTRGRiAgICAgKGJhc2UgMTYpCQlQcmVjaXNlIEF1dG9tYXRpb24sIEluYy4KLQkJCQkxNDAyIEFsZXhhbmRyYSBCbHZkCi0JCQkJQ3J5c3RhbCBMYWtlIElMIDYwMDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0wMCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMTUwMCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE1LTAxICAgKGhleCkJCUxleEJveAotMDAxNTAxICAgICAoYmFzZSAxNikJCUxleEJveAotCQkJCTMsIGF2ZW51ZSBEaWRpZXIgRGF1cmF0Ci0JCQkJVE9VTE9VU0UgIDMxNDAwCi0JCQkJRlJBTkNFCi0KLTAwLTE1LTAyICAgKGhleCkJCUJFVEEgdGVjaAotMDAxNTAyICAgICAoYmFzZSAxNikJCUJFVEEgdGVjaAotCQkJCTE1IHJ1ZSBkJ2Fwb2xsbwotCQkJCUwnVU5JT04gIDMxMjQwCi0JCQkJRlJBTkNFCi0KLTAwLTE1LTAzICAgKGhleCkJCVBST0ZJY29tbXMgcy5yLm8uCi0wMDE1MDMgICAgIChiYXNlIDE2KQkJUFJPRkljb21tcyBzLnIuby4KLQkJCQlUdXJnZW5ldm92YSA1Ci0JCQkJQnJubyBFVS9FdXJvcGUgNjE4IDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMTUtMDQgICAoaGV4KQkJR0FNRSBQTFVTIENPLiwgTFRELgotMDAxNTA0ICAgICAoYmFzZSAxNikJCUdBTUUgUExVUyBDTy4sIExURC4KLQkJCQkxNjQtNTcsIFllb25naHdhLWRvbmcsIEphbmdhbi1ndQotCQkJCVN1d29uIEd5ZW9uZ2dpLWRvIDQ0MC04MTgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMDUgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLTAwMTUwNSAgICAgKGJhc2UgMTYpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMDYgICAoaGV4KQkJTmVvIFBob3RvbmljcwotMDAxNTA2ICAgICAoYmFzZSAxNikJCU5lbyBQaG90b25pY3MKLQkJCQk5MTAgRS4gQ2FsaWZvcm5pYSBTdC4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTA3ICAgKGhleCkJCVJlbmFpc3NhbmNlIExlYXJuaW5nIEluYwotMDAxNTA3ICAgICAoYmFzZSAxNikJCVJlbmFpc3NhbmNlIExlYXJuaW5nIEluYwotCQkJCTI5MTEgUGVhY2ggU3RyZWV0Ci0JCQkJUE8gQm94IDgwMzYKLQkJCQlXaXNjb25zaW4gUmFwaWRzIFdpc2NvbnNpbiA1NDQ5NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMDggICAoaGV4KQkJR2xvYmFsIFRhcmdldCBFbnRlcnByaXNlIEluYwotMDAxNTA4ICAgICAoYmFzZSAxNikJCUdsb2JhbCBUYXJnZXQgRW50ZXJwcmlzZSBJbmMKLQkJCQk1RiwgTm8uIDE4NiwgU2VjLiAyLCBDaHVuZy1Ic2luZyBSZC4sCi0JCQkJSHNpbiBUaWVuLCBUYWlwZWkgY291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtMDkgICAoaGV4KQkJUGx1cyBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDE1MDkgICAgIChiYXNlIDE2KQkJUGx1cyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJT2ZmaWNlICMyMDUsICBHYXlhbmcgVGVjaG5vLXRvd24sCi0JCQkJR2F5YW5nIDMtIGRvbmcsIEdhbmdzZW8ta3UKLQkJCQlTZW91bCAxNTctODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTBBICAgKGhleCkJCVNvbm9hIFN5c3RlbXMsIEluYwotMDAxNTBBICAgICAoYmFzZSAxNikJCVNvbm9hIFN5c3RlbXMsIEluYwotCQkJCTM5MDAgRnJlZWRvbSBDaXJjbGUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMEIgICAoaGV4KQkJU0FHRSBJTkZPVEVDSCBMVEQuCi0wMDE1MEIgICAgIChiYXNlIDE2KQkJU0FHRSBJTkZPVEVDSCBMVEQuCi0JCQkJM0YsIE5vMzAsIElORFVTVFJZIEUuIDlUSCBSRC4sU0NJRU5DRS1CQVNFRAotCQkJCUlORFVTVFJJQUwgUEFSSwotCQkJCUhTSU4tQ0hVIFRBSVdBTiAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTBDICAgKGhleCkJCUFWTSBHbWJICi0wMDE1MEMgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotMDAtMTUtMEQgICAoaGV4KQkJSG9hbmEgTWVkaWNhbCwgSW5jLgotMDAxNTBEICAgICAoYmFzZSAxNikJCUhvYW5hIE1lZGljYWwsIEluYy4KLQkJCQk4MjggRm9ydCBTdHJlZXQgTWFsbAotCQkJCVN1aXRlIDYyMAotCQkJCUhvbm9sdWx1IEhJIDk2ODEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0wRSAgIChoZXgpCQlPUEVOQlJBSU4gVEVDSE5PTE9HSUVTIENPLiwgTFRELgotMDAxNTBFICAgICAoYmFzZSAxNikJCU9QRU5CUkFJTiBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJIzgwNCxBTllBTkcgSy1DRU5URVIsMTU5MS05ICwgQlVSSU0tRE9ORyxET05HQU4tR1UsCi0JCQkJQU5ZQU5HIEtZVU5HR0ktRE8gNDMxLTgxNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0wRiAgIChoZXgpCQltaW5nam9uZwotMDAxNTBGICAgICAoYmFzZSAxNikJCW1pbmdqb25nCi0JCQkJOEYsTk8uMSxMQU5FIDE2LFNaRSBDSFVBTiBST0FELFNFQy4yLFBBTkNISUFPIENJVFkuCi0JCQkJVEFJUEVJICAyMjAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTEwICAgKGhleCkJCVRlY2hzcGhlcmUgQ28uLCBMdGQKLTAwMTUxMCAgICAgKGJhc2UgMTYpCQlUZWNoc3BoZXJlIENvLiwgTHRkCi0JCQkJNEYsIFdvbmlsIEJsZGcuLCA5ODAtNTQsIEJhbmdiYWUtZG9uZywgU2VvQ2hvLWd1Ci0JCQkJU2VvdWwgMTM3LTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0xMSAgIChoZXgpCQlEYXRhIENlbnRlciBTeXN0ZW1zCi0wMDE1MTEgICAgIChiYXNlIDE2KQkJRGF0YSBDZW50ZXIgU3lzdGVtcwotCQkJCTE0ODAyIFZlbnR1cmUgRHJpdmUKLQkJCQlEYWxsYXMgVFggNzUyMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTEyICAgKGhleCkJCVp1cmljaCBVbml2ZXJzaXR5IG9mIEFwcGxpZWQgU2NpZW5jZXMKLTAwMTUxMiAgICAgKGJhc2UgMTYpCQladXJpY2ggVW5pdmVyc2l0eSBvZiBBcHBsaWVkIFNjaWVuY2VzCi0JCQkJVGVjaG5pa3Vtc3RyYXNzZSA5Ci0JCQkJV2ludGVydGh1ciBaSCBDSC04NDAxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTUtMTMgICAoaGV4KQkJRUZTIHNhcwotMDAxNTEzICAgICAoYmFzZSAxNikJCUVGUyBzYXMKLQkJCQlCUCAzNAotCQkJCU1JTExFUlkgIEYtNjkzOTAKLQkJCQlGUkFOQ0UKLQotMDAtMTUtMTQgICAoaGV4KQkJSHUgWmhvdSBOQVZBIE5ldHdvcmtzJkVsZWN0cm9uaWNzIEx0ZC4KLTAwMTUxNCAgICAgKGJhc2UgMTYpCQlIdSBaaG91IE5BVkEgTmV0d29ya3MmRWxlY3Ryb25pY3MgTHRkLgotCQkJCTMvRixOby4zMjgtNCxHdWFuZyBZdWFuIFJkLgotCQkJCUh1IFpob3UgWmhlIEppYW5nIDMxMzAwMAotCQkJCUNISU5BCi0KLTAwLTE1LTE1ICAgKGhleCkJCUxlaXBvbGQrQ28uR21iSAotMDAxNTE1ICAgICAoYmFzZSAxNikJCUxlaXBvbGQrQ28uR21iSAotCQkJCUtyZXV6d2llc2UgMTIKLQkJCQlSb2NrZW5oYXVzZW4gUkxQIEQtNjc4MDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTE2ICAgKGhleCkJCVVSSUVMIFNZU1RFTVMgSU5DLgotMDAxNTE2ICAgICAoYmFzZSAxNikJCVVSSUVMIFNZU1RFTVMgSU5DLgotCQkJCSMyMDQgQnl1Y2tzYW4gRGlnaXRhbHZhbGxleSAxc3QsIDIxMi0xNiwgR3Vyby1kb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMTcgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDE1MTcgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEpsbiBIaS1UZWNoICAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE1LTE4ICAgKGhleCkJCVNoZW56aGVuIDEwTU9PTlMgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDTy4sTHRkCi0wMDE1MTggICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gMTBNT09OUyBUZWNobm9sb2d5IERldmVsb3BtZW50IENPLixMdGQKLQkJCQlBZGQ6M0YsSHVheGluZyBidWlsZGluZywgUWlhb1hpYW5nIHJvYWQsCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODA1MwotCQkJCUNISU5BCi0KLTAwLTE1LTE5ICAgKGhleCkJCVN0b3JlQWdlIE5ldHdvcmtpbmcgVGVjaG5vbG9naWVzCi0wMDE1MTkgICAgIChiYXNlIDE2KQkJU3RvcmVBZ2UgTmV0d29ya2luZyBUZWNobm9sb2dpZXMKLQkJCQk2MyBCYXItWWVodWRhIHN0LgotCQkJCU5lc2hlciAgMzY2NTEKLQkJCQlJU1JBRUwKLQotMDAtMTUtMUEgICAoaGV4KQkJSHVudGVyIEVuZ2luZWVyaW5nIENvbXBhbnkKLTAwMTUxQSAgICAgKGJhc2UgMTYpCQlIdW50ZXIgRW5naW5lZXJpbmcgQ29tcGFueQotCQkJCTExMjUwIEh1bnRlciBEcml2ZQotCQkJCUJyaWRnZXRvbiBNaXNzb3VyaSA2MzA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMUIgICAoaGV4KQkJSXNpbG9uIFN5c3RlbXMgSW5jLgotMDAxNTFCICAgICAoYmFzZSAxNikJCUlzaWxvbiBTeXN0ZW1zIEluYy4KLQkJCQkzMTAxIFdlc3Rlcm4gQXZlbnVlCi0JCQkJU2VhdHRsZSBXQSA5ODEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMUMgICAoaGV4KQkJTEVORUNPCi0wMDE1MUMgICAgIChiYXNlIDE2KQkJTEVORUNPCi0JCQkJNnRoLixEb25nIE1vb24gR29vZCBNb3JuaW5nIFRvd2VyCi0JCQkJMTMyMyBCZWFrc2Vvay1Eb25nIElsc2FuLUd1Ci0JCQkJS3llb25nIEtpLURvIEdvWWFuZy1TaSA0MTEtODE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTFEICAgKGhleCkJCU0ySSBDT1JQT1JBVElPTgotMDAxNTFEICAgICAoYmFzZSAxNikJCU0ySSBDT1JQT1JBVElPTgotCQkJCUt5b25nZ2kgVmVudHVyZSBBbnlhbmcgdGVjaG5pY2FsIGNlbnRlciwgMTN0aCBGbG9vciwgNTcyLTUsIEFueWFuZyA4LURvbmcsIE1hbmFuLUd1Ci0JCQkJQW55YW5nLVNoaSBLeW9uZ2dpLURvIDQzMC03MzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMUUgICAoaGV4KQkJRXRoZXJuZXQgUG93ZXJsaW5rIFN0YW5kYXJkaXphdGlvbiBHcm91cCAoRVBTRykKLTAwMTUxRSAgICAgKGJhc2UgMTYpCQlFdGhlcm5ldCBQb3dlcmxpbmsgU3RhbmRhcmRpemF0aW9uIEdyb3VwIChFUFNHKQotCQkJCWMvbyBadXJpY2ggVW5pdmVyc2l0eSBvZiBBcHBsaWVkIFNjaWVuY2VzCi0JCQkJVGVjaG5pa3Vtc3RyYXNzZSA5Ci0JCQkJQ0gtODQwMSBXaW50ZXJ0aHVyIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE1LTFGICAgKGhleCkJCU11bHRpdmlzaW9uIEludGVsbGlnZW50IFN1cnZlaWxsYW5jZSAoSG9uZyBLb25nKSBMdGQKLTAwMTUxRiAgICAgKGJhc2UgMTYpCQlNdWx0aXZpc2lvbiBJbnRlbGxpZ2VudCBTdXJ2ZWlsbGFuY2UgKEhvbmcgS29uZykgTHRkCi0JCQkJMjYvRiwgQWl0a2VuIFZhbnNvbiBDZW50cmUsCi0JCQkJNjEgSG9pIFl1ZW4gUm9hZCwgS3d1biBUb25nLCBLb3dsb29uLAotCQkJCUhPTkcgS09ORwotCi0wMC0xNS0yMCAgIChoZXgpCQlSYWRpb2NyYWZ0cyBBUwotMDAxNTIwICAgICAoYmFzZSAxNikJCVJhZGlvY3JhZnRzIEFTCi0JCQkJU2FuZGFrZXJ2ZWllbiA2NAotCQkJCU9zbG8gMDQ4NAotCQkJCU5PUldBWQotCi0wMC0xNS0yMSAgIChoZXgpCQlIb3JvcXVhcnR6Ci0wMDE1MjEgICAgIChiYXNlIDE2KQkJSG9yb3F1YXJ0egotCQkJCUJQIDI1MQotCQkJCUZPTlRFTkFZIExFIENPTVRFIFZFTkRFRSA4NTIwNQotCQkJCUZSQU5DRQotCi0wMC0xNS0yMiAgIChoZXgpCQlEZWEgU2VjdXJpdHkKLTAwMTUyMiAgICAgKGJhc2UgMTYpCQlEZWEgU2VjdXJpdHkKLQkJCQlWaWEgTWFnZW50YSA5Ci0JCQkJTWFzc2EgTVMgNTQxMDAKLQkJCQlJVEFMWQotCi0wMC0xNS0yMyAgIChoZXgpCQlNZXRlb3IgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMTUyMyAgICAgKGJhc2UgMTYpCQlNZXRlb3IgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQkyMjYxNCA2NnRoIEF2ZW51ZSBTb3V0aAotCQkJCUtlbnQgV0EgOTgwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTI0ICAgKGhleCkJCU51bWF0aWNzLCBJbmMuCi0wMDE1MjQgICAgIChiYXNlIDE2KQkJTnVtYXRpY3MsIEluYy4KLQkJCQk0NjI4MCBEeWxhbiBEci4KLQkJCQlOb3ZpIE1pY2hpZ2FuIDQ4Mzc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0yNSAgIChoZXgpCQlDaGFtYmVybGFpbiBBY2Nlc3MgU29sdXRpb25zCi0wMDE1MjUgICAgIChiYXNlIDE2KQkJQ2hhbWJlcmxhaW4gQWNjZXNzIFNvbHV0aW9ucwotCQkJCTkxNjAgRS4gQmFoaWEgRHIuCi0JCQkJU2NvdHRzZGFsZSBBWiA4NTI2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMjYgICAoaGV4KQkJUmVtb3RlIFRlY2hub2xvZ2llcyBJbmMKLTAwMTUyNiAgICAgKGJhc2UgMTYpCQlSZW1vdGUgVGVjaG5vbG9naWVzIEluYwotCQkJCTc2NTEgQW5hZ3JhbSBEcml2ZQotCQkJCUVkZW4gUHJhaXJpZSBNTiA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMjcgICAoaGV4KQkJQmFsYm9hIEluc3RydW1lbnRzCi0wMDE1MjcgICAgIChiYXNlIDE2KQkJQmFsYm9hIEluc3RydW1lbnRzCi0JCQkJMTM4MiBCZWxsIEF2ZQotCQkJCVR1c3RpbiBDQSA5Mjc4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMjggICAoaGV4KQkJRmxvb2RsaWdodCBNZWRpY2FsIFByb2R1Y3RzIExMQyBkLmIuYS4gRmxvb2RsaWdodE1lZGFlcwotMDAxNTI4ICAgICAoYmFzZSAxNikJCUZsb29kbGlnaHQgTWVkaWNhbCBQcm9kdWN0cyBMTEMgZC5iLmEuIEZsb29kbGlnaHRNZWRhZXMKLQkJCQkxNDQwOCBXIDEwNVRIIFNUCi0JCQkJTEVORVhBIEtTIDY2MjE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0yOSAgIChoZXgpCQlOMyBDb3Jwb3JhdGlvbgotMDAxNTI5ICAgICAoYmFzZSAxNikJCU4zIENvcnBvcmF0aW9uCi0JCQkJIzQwMiBHd2FuZ015ZW9uZyBUZWNobm8gVG93bgotCQkJCTYyNi0zIENsdWxzYW4gMS1Eb25nLCBHd2FuZ015ZW9uZy1DaXR5Ci0JCQkJR3llb25nR2ktRG8gIDQyMy0wMzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMkEgICAoaGV4KQkJTm9raWEgR21iSAotMDAxNTJBICAgICAoYmFzZSAxNikJCU5va2lhIEdtYkgKLQkJCQlSZW5zaW5nc3RyLiAxNQotCQkJCUJvY2h1bSBOUlcgNDQ4MDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTJCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTUyQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTJDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTUyQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTJEICAgKGhleCkJCVRlblggTmV0d29ya3MsIExMQwotMDAxNTJEICAgICAoYmFzZSAxNikJCVRlblggTmV0d29ya3MsIExMQwotCQkJCTQ4NTUgV2lsZXkgUG9zdCBXYXkKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDExNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMkUgICAoaGV4KQkJUGFja2V0SG9wLCBJbmMuCi0wMDE1MkUgICAgIChiYXNlIDE2KQkJUGFja2V0SG9wLCBJbmMuCi0JCQkJMTMwMSBTaG9yZXdheSBSb2FkCi0JCQkJU3VpdGUgMjAwCi0JCQkJQmVsbW9udCBDYWxpZm9ybmlhIDk0MDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0yRiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxNTJGICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMzAgICAoaGV4KQkJQnVzLVRlY2gsIEluYy4KLTAwMTUzMCAgICAgKGJhc2UgMTYpCQlCdXMtVGVjaCwgSW5jLgotCQkJCTEyOSBNaWRkbGVzZXggVHVybnBpa2UKLQkJCQlCdXJsaW5ndG9uIE1hIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0zMSAgIChoZXgpCQlLT0NPTQotMDAxNTMxICAgICAoYmFzZSAxNikJCUtPQ09NCi0JCQkJNUYsIEtPQ09NIEJsZGcuLCAyNjAtNwotCQkJCVl1bWNoYW5nLURvbmcsIEthbmdzZW8tR3UKLQkJCQlTRU9VTCAgMTU3LTA0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0zMiAgIChoZXgpCQlDb25zdW1lciBUZWNobm9sb2dpZXMgR3JvdXAsIExMQwotMDAxNTMyICAgICAoYmFzZSAxNikJCUNvbnN1bWVyIFRlY2hub2xvZ2llcyBHcm91cCwgTExDCi0JCQkJMzUwMCBKb3JkYW4gT2FrcyBEci4KLQkJCQlFZmxhbmQgTkMgMjcyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTMzICAgKGhleCkJCU5BREFNLkNPLixMVEQKLTAwMTUzMyAgICAgKGJhc2UgMTYpCQlOQURBTS5DTy4sTFRECi0JCQkJIzkxLTMgV2FuZ3JpbS1MaQotCQkJCUJvbmdkYW0tRXVwCi0JCQkJSHdhc2VvbmcgR3llb25nZ2kgNDQ1LTg5NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0zNCAgIChoZXgpCQlBIEJFTFRST05JQ0EsIENvbXBhbmhpYSBkZSBDb211bmljYWNvZXMsIExkYQotMDAxNTM0ICAgICAoYmFzZSAxNikJCUEgQkVMVFJPTklDQSwgQ29tcGFuaGlhIGRlIENvbXVuaWNhY29lcywgTGRhCi0JCQkJUi4gRHIuIEpvc2UgQmFwdGlzdGEgZGUgU291c2EsIDI3Ci0JCQkJTGlzYm9uICAxNTQ5LTAwMiBMaXMKLQkJCQlQT1JUVUdBTAotCi0wMC0xNS0zNSAgIChoZXgpCQlPVEUgU3BhCi0wMDE1MzUgICAgIChiYXNlIDE2KQkJT1RFIFNwYQotCQkJCXZpYSBCYXJzYW50aSA4Ci0JCQkJRmxvcmVuY2UgRkkgNTAxMjcKLQkJCQlJVEFMWQotCi0wMC0xNS0zNiAgIChoZXgpCQlQb3dlcnRlY2ggY28uLEx0ZAotMDAxNTM2ICAgICAoYmFzZSAxNikJCVBvd2VydGVjaCBjby4sTHRkCi0JCQkJIzcwNSwgZG9uZ3lvdW5nIFZlbnR1cmVzdGVsLCAxOTktMzIKLQkJCQlBbnlhbmc3LWRvbmcsIE1hbmFuLWd1Ci0JCQkJQW55YW5nIENpdHkgS3lvdW5na2ktZG8gNDMwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0zNyAgIChoZXgpCQlWZW50dXMgTmV0d29ya3MKLTAwMTUzNyAgICAgKGJhc2UgMTYpCQlWZW50dXMgTmV0d29ya3MKLQkJCQk4MDAgQ29ubmVjdGljdXQgQXZlCi0JCQkJMXN0IGZsb29yIHdlc3QKLQkJCQlOb3J3YWxrIENUIDA2ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0zOCAgIChoZXgpCQlSRklELCBJbmMuCi0wMDE1MzggICAgIChiYXNlIDE2KQkJUkZJRCwgSW5jLgotCQkJCTE0MTAwIEVhc3QgSmV3ZWxsIEF2ZS4KLQkJCQlTdWl0ZSAxMgotCQkJCUF1cm9yYSBDTyA4MDAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMzkgICAoaGV4KQkJVGVjaG5vZHJpdmUgU1JMCi0wMDE1MzkgICAgIChiYXNlIDE2KQkJVGVjaG5vZHJpdmUgU1JMCi0JCQkJVmlhIExlb25hcmRvIGRhIFZpbmNpIDE2MgotCQkJCVRyZXp6YW5vIHN1bCBOYXZpZ2xpbyBNaWxhbm8gMjAwOTAKLQkJCQlJVEFMWQotCi0wMC0xNS0zQSAgIChoZXgpCQlTaGVuemhlbiBTeXNjYW4gVGVjaG5vbG9neSBDby4sTHRkLgotMDAxNTNBICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFN5c2NhbiBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJMTNGLCBPbHltcGljIFBsYXphLAotCQkJCVNoYW5nIGJhbyBSb2FkLCBGdXRpYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzNAotCQkJCUNISU5BCi0KLTAwLTE1LTNCICAgKGhleCkJCUVNSCBtZXRlcmluZyBHbWJIICYgQ28uIEtHCi0wMDE1M0IgICAgIChiYXNlIDE2KQkJRU1IIG1ldGVyaW5nIEdtYkggJiBDby4gS0cKLQkJCQlTdWVkcmluZyA1Ci0JCQkJV2l0dGVuYnVyZyBNZWNrbGVuYnVyZy1Wb3Jwb21tZXJuIDE5MjQzCi0JCQkJR0VSTUFOWQotCi0wMC0xNS0zQyAgIChoZXgpCQlLcHJvdGVjaCBDby4sIEx0ZC4KLTAwMTUzQyAgICAgKGJhc2UgMTYpCQlLcHJvdGVjaCBDby4sIEx0ZC4KLQkJCQkybmQgRmxvb3IsICMgMjAyLCBNeW91bmctamkgZS1TcGFjZSBJSQotCQkJCTIxOCwgQW4teWFuZyA3IERvbmcsIE1hbi1hbiBHdSwKLQkJCQlBbi15YW5nIENpdHkgR3llb25nLWdpIERvIDQzMC04MTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtM0QgICAoaGV4KQkJRUxJTSBQUk9EVUNUIENPLgotMDAxNTNEICAgICAoYmFzZSAxNikJCUVMSU0gUFJPRFVDVCBDTy4KLQkJCQk2MDItMiBHQVlBTkcgVEVDSE5PIFRPV04sIEdBWUFORywgMy1ET05HCi0JCQkJS0FOR1NFTy1HVSBTRU9VTCBLT1JFQQotCQkJCVNFT1VMIDE1Ny03OTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtM0UgICAoaGV4KQkJUS1NYXRpYyBTd2VkZW4gQUIKLTAwMTUzRSAgICAgKGJhc2UgMTYpCQlRLU1hdGljIFN3ZWRlbiBBQgotCQkJCU5lb25nYXRhbiA4Ci0JCQkJTW9sbmRhbCAgNDMxIDUzCi0JCQkJU1dFREVOCi0KLTAwLTE1LTNGICAgKGhleCkJCUFsY2F0ZWwgQWxlbmlhIFNwYWNlIEl0YWxpYQotMDAxNTNGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgQWxlbmlhIFNwYWNlIEl0YWxpYQotCQkJCVN0cmFkYSBQYWRhbmEgU3VwZXJpb3JlIDI5MAotCQkJCVZpbW9kcm9uZSBNSSAyMDA5MAotCQkJCUlUQUxZCi0KLTAwLTE1LTQwICAgKGhleCkJCU5vcnRlbAotMDAxNTQwICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE1LTQxICAgKGhleCkJCVN0cmF0YUxpZ2h0IENvbW11bmljYXRpb25zLCBJbmMuCi0wMDE1NDEgICAgIChiYXNlIDE2KQkJU3RyYXRhTGlnaHQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyMTA1IFMuIEJhc2NvbSBBdmVudWUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNDIgICAoaGV4KQkJTUlDUk9IQVJEIFMuUi5MLgotMDAxNTQyICAgICAoYmFzZSAxNikJCU1JQ1JPSEFSRCBTLlIuTC4KLQkJCQlWaWEgUHJpbW8gTWFnZ2lvIDM2Ci0JCQkJU2FuIFZpdHRvcmUgT2xvbmEgTWlsYW5vIDIwMDI4Ci0JCQkJSVRBTFkKLQotMDAtMTUtNDMgICAoaGV4KQkJQWJlcmRlZW4gVGVzdCBDZW50ZXIKLTAwMTU0MyAgICAgKGJhc2UgMTYpCQlBYmVyZGVlbiBUZXN0IENlbnRlcgotCQkJCTQwMCBDb2xsZXJhbiBSb2FkCi0JCQkJQmxkZy4gMzUwCi0JCQkJQWJlcmRlZW4gUHJvdmluZyBHcm91bmRzIE1EIDIxMDA1LTUwNTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTQ0ICAgKGhleCkJCWNvTS5zLmEudC4gQUcKLTAwMTU0NCAgICAgKGJhc2UgMTYpCQljb00ucy5hLnQuIEFHCi0JCQkJQmVzc2Vsc3RyLiAzCi0JCQkJTWFubmhlaW0gIEQtNjgyMTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTQ1ICAgKGhleCkJCVNFRUNPREUgQ28uLCBMdGQuCi0wMDE1NDUgICAgIChiYXNlIDE2KQkJU0VFQ09ERSBDby4sIEx0ZC4KLQkJCQk0dGggRmxvb3IsIEFtaW4gQmxkZy4sIDExMC0xLCBZYW5namFlZG9uZywgU2VvY2hvZ3UKLQkJCQlTZW91bCAgMTM3LTg5MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS00NiAgIChoZXgpCQlJVEcgV29ybGR3aWRlIFNkbiBCaGQKLTAwMTU0NiAgICAgKGJhc2UgMTYpCQlJVEcgV29ybGR3aWRlIFNkbiBCaGQKLQkJCQkyLCBKYWxhbiBBc3Rha2FVOC84MwotCQkJCVNla3N5ZW4gVTgsIEJ1a2l0IEplbHV0b25nCi0JCQkJU2hhaCBBbGFtIFNlbGFuZ29yIERhcnVsIEVoc2FuIDQwMTUwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTUtNDcgICAoaGV4KQkJQWlaZW4gU29sdXRpb25zIEluYy4KLTAwMTU0NyAgICAgKGJhc2UgMTYpCQlBaVplbiBTb2x1dGlvbnMgSW5jLgotCQkJCTEwRi0xLCBOby4yOSwgUHVkaW5nIFJkLgotCQkJCUhzaW5jaHUgSHNpbmNodSBDb3VudHkgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS00OCAgIChoZXgpCQlDVUJFIFRFQ0hOT0xPR0lFUwotMDAxNTQ4ICAgICAoYmFzZSAxNikJCUNVQkUgVEVDSE5PTE9HSUVTCi0JCQkJMTAsIHJ1ZSBkZXMgUm9zaWVyaXN0ZXMKLQkJCQlDSEFNUEFHTkUgQVUgTU9OVCBEJ09SIEZSQU5DRSA2OTQxMAotCQkJCUZSQU5DRQotCi0wMC0xNS00OSAgIChoZXgpCQlEaXh0YWwgQmlvbWVkaWNhIEluZC4gQ29tLiBMdGRhCi0wMDE1NDkgICAgIChiYXNlIDE2KQkJRGl4dGFsIEJpb21lZGljYSBJbmQuIENvbS4gTHRkYQotCQkJCVIuIEVuZy4gRnJhbmNpc2NvIFBpdHRhIEJyaXRvLCA3MDMKLQkJCQlTYW8gUGF1bG8gU1AgMDQ3NTMtMDgwCi0JCQkJQlJBWklMCi0KLTAwLTE1LTRBICAgKGhleCkJCVdBTlNISUggRUxFQ1RST05JQyBDTy4sIExURAotMDAxNTRBICAgICAoYmFzZSAxNikJCVdBTlNISUggRUxFQ1RST05JQyBDTy4sIExURAotCQkJCTNGIDcyLCBXVSBLT05HIDZ0aCBSRC4sCi0JCQkJV1UgS1UgSU5EVVNUUklBTCBESVNUUklDVCwKLQkJCQlUQUlQRUkgSFNJRU4gVEFJV0FOIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtNEIgICAoaGV4KQkJV29uZGUgUHJvdWQgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAxNTRCICAgICAoYmFzZSAxNikJCVdvbmRlIFByb3VkIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQkyMUYuLCBOby4xMDAsIFNlYy4xLCBTaGludGFpIDV0aCBSZAotCQkJCVNpamhpaCBjaXR5IFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS00QyAgIChoZXgpCQlTYXVuZGVycyBFbGVjdHJvbmljcwotMDAxNTRDICAgICAoYmFzZSAxNikJCVNhdW5kZXJzIEVsZWN0cm9uaWNzCi0JCQkJODIgSW5kdXN0cmlhbCBQYXJrIFJkCi0JCQkJU2FjbyBNRSAwNDA3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNEQgICAoaGV4KQkJTmV0cm9ub21lIFN5c3RlbXMsIEluYy4KLTAwMTU0RCAgICAgKGJhc2UgMTYpCQlOZXRyb25vbWUgU3lzdGVtcywgSW5jLgotCQkJCTE0NCBFbWVyeXZpbGxlIERyaXZlCi0JCQkJU3VpdGUgMjMwCi0JCQkJQ3JhbmJlcnJ5IFR3cC4gUEEgMTYwNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTRFICAgKGhleCkJCUlFQwotMDAxNTRFICAgICAoYmFzZSAxNikJCUlFQwotCQkJCTMsIHJ1ZSBkZSBWYXJlbWJlCi0JCQkJUC5PLiBCb3ggMTMxCi0JCQkJQ0ggLSAxMjExIEdFTkVWQSAyMAotCQkJCUdFUk1BTlkKLQotMDAtMTUtNEYgICAoaGV4KQkJb25lIFJGIFRlY2hub2xvZ3kKLTAwMTU0RiAgICAgKGJhc2UgMTYpCQlvbmUgUkYgVGVjaG5vbG9neQotCQkJCTEzNjAgUm91dGUgZGVzIERvbGluZXMKLQkJCQlCYXQgQjQgTGVzIENhcmRvdWxpbmVzCi0JCQkJVmFsYm9ubmUgU29waGlhLUFudGlwb2xpcyBQQUNBIDA2NTYwCi0JCQkJRlJBTkNFCi0KLTAwLTE1LTUwICAgKGhleCkJCU5pdHMgVGVjaG5vbG9neSBJbmMKLTAwMTU1MCAgICAgKGJhc2UgMTYpCQlOaXRzIFRlY2hub2xvZ3kgSW5jCi0JCQkJMkZMLiBOby4gOCBBbGxleSAxNiwgTGFuZSAyMzUsIEJhdWNoaWF1IFJkLiwKLQkJCQlTaGluZGlhbiBDaXR5IFRhaXBlaSBIc2llbiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTUxICAgKGhleCkJCVJhZGlvUHVsc2UgSW5jLgotMDAxNTUxICAgICAoYmFzZSAxNikJCVJhZGlvUHVsc2UgSW5jLgotCQkJCTJuZCBmbC4gSGFucyBCL0QsIDExMS01NQotCQkJCVNlb25nbmFlLWRvbmcsIEdhbmdkb25nLWd1Ci0JCQkJU2VvdWwgIDEzNC04ODMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtNTIgICAoaGV4KQkJV2ktR2VhciBJbmMuCi0wMDE1NTIgICAgIChiYXNlIDE2KQkJV2ktR2VhciBJbmMuCi0JCQkJMzQwIENodXJjaCBTdHJlZXQKLQkJCQlTdWl0ZSAxMAotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTUzICAgKGhleCkJCUN5dHljIENvcnBvcmF0aW9uCi0wMDE1NTMgICAgIChiYXNlIDE2KQkJQ3l0eWMgQ29ycG9yYXRpb24KLQkJCQkyNTAgQ2FtcHVzIERpdmUKLQkJCQlNYXJsYm9yb3VnaCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNTQgICAoaGV4KQkJQXRhbHVtIFdpcmVsZXNzIFMuQS4KLTAwMTU1NCAgICAgKGJhc2UgMTYpCQlBdGFsdW0gV2lyZWxlc3MgUy5BLgotCQkJCUMvIE9yZWxsYW5hIDUsIDE/IEkKLQkJCQlNYWRyaWQgIDI4MDA0Ci0JCQkJU1BBSU4KLQotMDAtMTUtNTUgICAoaGV4KQkJREZNIEdtYkgKLTAwMTU1NSAgICAgKGJhc2UgMTYpCQlERk0gR21iSAotCQkJCUxhaHJlciBTdHJhc3NlIDYKLQkJCQlMYWhyIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3NzkzMwotCQkJCUdFUk1BTlkKLQotMDAtMTUtNTYgICAoaGV4KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotMDAxNTU2ICAgICAoYmFzZSAxNikJCVNBR0VNIENPTU1VTklDQVRJT04KLQkJCQlMZSBQb25uYW50IGRlIFBhcmlzCi0JCQkJMjcgUnVlIExlYmxhbmMKLQkJCQlDRURFWCBQYXJpcyA3NTUxMgotCQkJCUZSQU5DRQotCi0wMC0xNS01NyAgIChoZXgpCQlPbGl2ZXR0aQotMDAxNTU3ICAgICAoYmFzZSAxNikJCU9saXZldHRpCi0JCQkJVmlhIEplcnZpcyA3NwotCQkJCUl2cmVhIFRvcmlubyAxMDAxNQotCQkJCUlUQUxZCi0KLTAwLTE1LTU4ICAgKGhleCkJCUZPWENPTk4KLTAwMTU1OCAgICAgKGJhc2UgMTYpCQlGT1hDT05OCi0JCQkJTm8uMiwybmQgRG9uZ0h1YW4gUm9hZCwxMHRoIFlvdVNvbmcKLQkJCQlJbmR1c3RyaWFsIERpc3RyaWN0LExvbmdIdWEgU3RyZWV0LEJhbydhbiwKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTA5Ci0JCQkJQ0hJTkEKLQotMDAtMTUtNTkgICAoaGV4KQkJU2VjdXJhcGxhbmUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDE1NTkgICAgIChiYXNlIDE2KQkJU2VjdXJhcGxhbmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTA4MDAgTi4gTWF2aW5lZSBEci4KLQkJCQlUdWNzb24gQVogODU3MzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTVBICAgKGhleCkJCURBSU5JUFBPTiBQSEFSTUFDRVVUSUNBTCBDTy4sIExURC4KLTAwMTU1QSAgICAgKGJhc2UgMTYpCQlEQUlOSVBQT04gUEhBUk1BQ0VVVElDQUwgQ08uLCBMVEQuCi0JCQkJMi02LTgsIERPU0hPTUFDSEksIENIVU8tS1UKLQkJCQlPU0FLQSBDSVRZIE9TQUtBIFBSRUYuIDU0MS04NTI0Ci0JCQkJSkFQQU4KLQotMDAtMTUtNUIgICAoaGV4KQkJU2FtcG8gQ29ycG9yYXRpb24KLTAwMTU1QiAgICAgKGJhc2UgMTYpCQlTYW1wbyBDb3Jwb3JhdGlvbgotCQkJCTIxNiBDaHVuZyBTaGFuIFJvYWQsCi0JCQkJU2VjLiAxLCBQYW5jaGlhbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuIDIyMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtNUMgICAoaGV4KQkJRHJlc3NlciBXYXluZQotMDAxNTVDICAgICAoYmFzZSAxNikJCURyZXNzZXIgV2F5bmUKLQkJCQkzODE0IEphcnJldHQgV2F5Ci0JCQkJQXVzdGluIFRleGFzIDc4NzI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS01RCAgIChoZXgpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLTAwMTU1RCAgICAgKGJhc2UgMTYpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLQkJCQlPbmUgTWljcm9zb2Z0IFdheQotCQkJCVJlZG1vbmQgV0EgOTgwNTItODMwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNUUgICAoaGV4KQkJTW9yZ2FuIFN0YW5sZXkKLTAwMTU1RSAgICAgKGJhc2UgMTYpCQlNb3JnYW4gU3RhbmxleQotCQkJCTc1MCA3dGggQXZlbnVlCi0JCQkJTmV3IFlvcmsgTlkgMTAwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTVGICAgKGhleCkJCUdyZWVuUGVhayBUZWNobm9sb2dpZXMKLTAwMTU1RiAgICAgKGJhc2UgMTYpCQlHcmVlblBlYWsgVGVjaG5vbG9naWVzCi0JCQkJTGluZGVzdHJhYXQgMTkKLQkJCQlaZWxlICA5MjQwCi0JCQkJQkVMR0lVTQotCi0wMC0xNS02MCAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMTU2MCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OSBTb3V0aAotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNjEgICAoaGV4KQkJSkpQbHVzIENvcnBvcmF0aW9uCi0wMDE1NjEgICAgIChiYXNlIDE2KQkJSkpQbHVzIENvcnBvcmF0aW9uCi0JCQkJNjc4IE1hc3NhY2h1c2V0dHMgQXZlCi0JCQkJU3VpdGUgNTAzCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1NjIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1NjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02NCAgIChoZXgpCQlCRUhSSU5HRVIgU3BlemllbGxlIFN0dWRpb3RlY2huaWsgR21iSAotMDAxNTY0ICAgICAoYmFzZSAxNikJCUJFSFJJTkdFUiBTcGV6aWVsbGUgU3R1ZGlvdGVjaG5payBHbWJICi0JCQkJSGFubnMtTWFydGluLVNjaGxleWVyLVN0ci4gMzYtMzgKLQkJCQlXaWxsaWNoICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTY1ICAgKGhleCkJCVhJQU1FTiBZRUFMSU5LIE5FVFdPUksgVEVDSE5PTE9HWSBDTy4sTFRECi0wMDE1NjUgICAgIChiYXNlIDE2KQkJWElBTUVOIFlFQUxJTksgTkVUV09SSyBURUNITk9MT0dZIENPLixMVEQKLQkJCQk3RiBIdWFsaWFuIEVsZWN0cm9uaWMgQkxERy41ODAgSmlhaGUgUm9hZCxYaWFtZW4gQ2hpbmEKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLTAwLTE1LTY2ICAgKGhleCkJCUEtRmlyc3QgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTU2NiAgICAgKGJhc2UgMTYpCQlBLUZpcnN0IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNUYsIE5vLiAxMTEtMiwgU2hpbi1UZWggUmQuLAotCQkJCVNhbi1DaHVuZyBDaXR5IFRhaXBlaSBTaGllbiAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTY3ICAgKGhleCkJCVJBRFdJTiBJbmMuCi0wMDE1NjcgICAgIChiYXNlIDE2KQkJUkFEV0lOIEluYy4KLQkJCQk5MDAgQ29ycG9yYXRlIERyaXZlCi0JCQkJTWFod2FoIE5KIDA3NDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02OCAgIChoZXgpCQlEaWxpdGhpdW0gTmV0d29ya3MKLTAwMTU2OCAgICAgKGJhc2UgMTYpCQlEaWxpdGhpdW0gTmV0d29ya3MKLQkJCQk1NDAxIE9sZCBSZWR3b29kIEh3eQotCQkJCVBldGFsdW1hIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02OSAgIChoZXgpCQlQRUNPIElJLCBJbmMuCi0wMDE1NjkgICAgIChiYXNlIDE2KQkJUEVDTyBJSSwgSW5jLgotCQkJCTcwNjAgSHVudGxleSBSb2FkCi0JCQkJQ29sdW1idXMgT0ggNDMyMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTZBICAgKGhleCkJCURHMkwgVGVjaG5vbG9naWVzIFB2dC4gTHRkLgotMDAxNTZBICAgICAoYmFzZSAxNikJCURHMkwgVGVjaG5vbG9naWVzIFB2dC4gTHRkLgotCQkJCUFNTCBDZW50ZXIgMSwgR25kLiBGbG9vciwgOCBNYWhhbCBJbmRsLiBFc3QuCi0JCQkJT2ZmLiBNYWhha2FsaSBDYXZlcyBSb2FkLCBBbmRoZXJpIEUKLQkJCQlNdW1iYWkgTWFoYXJhc2h0cmEgNDAwMDkzCi0JCQkJSU5ESUEKLQotMDAtMTUtNkIgICAoaGV4KQkJUGVyZmlzYW5zIE5ldHdvcmtzIENvcnAuCi0wMDE1NkIgICAgIChiYXNlIDE2KQkJUGVyZmlzYW5zIE5ldHdvcmtzIENvcnAuCi0JCQkJNDExOCAxNHRoIEF2ZW51ZQotCQkJCVVuaXQgNAotCQkJCU1hcmtoYW0gT250YXJpbyBMM1IgMEozCi0JCQkJQ0FOQURBCi0KLTAwLTE1LTZDICAgKGhleCkJCVNBTkUgU1lTVEVNIENPLiwgTFRECi0wMDE1NkMgICAgIChiYXNlIDE2KQkJU0FORSBTWVNURU0gQ08uLCBMVEQKLQkJCQlQaWthLUJ1aWxkaW5nIDRGICM4OTQgSG9neWUtRG9uZyBEb25nYW4tR1UKLQkJCQlBbnlhbmctc2kgS3l1bmdnaS1kbyA0MzEtODM2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTZEICAgKGhleCkJCVViaXF1aXRpIE5ldHdvcmtzIEluYy4KLTAwMTU2RCAgICAgKGJhc2UgMTYpCQlVYmlxdWl0aSBOZXR3b3JrcyBJbmMuCi0JCQkJNDk1IE1vbnRhZ3VlIEV4cHd5LgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02RSAgIChoZXgpCQlBLiBXLiBDb21tdW5pY2F0aW9uIFN5c3RlbXMgTHRkCi0wMDE1NkUgICAgIChiYXNlIDE2KQkJQS4gVy4gQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEx0ZAotCQkJCUNyb29rIEJhcm4KLQkJCQlUaGUgQ3Jvb2ssIFJvd2VsdG93bgotCQkJCUNhcmxpc2xlIEN1bWJyaWEgQ0E2IDZMSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LTZGICAgKGhleCkJCVhpcmFuZXQgQ29tbXVuaWNhdGlvbnMgR21iSAotMDAxNTZGICAgICAoYmFzZSAxNikJCVhpcmFuZXQgQ29tbXVuaWNhdGlvbnMgR21iSAotCQkJCUJlcnRvbHQtQnJlY2h0LUFsbGVlIDI0Ci0JCQkJRHJlc2RlbiBTYXhvbnkgMDEzMDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTcwICAgKGhleCkJCVN5bWJvbCBUZWNobm9sb2dpZXNXaG9sbHkgb3duZWQgU3Vic2lkaWFyeSBvZiBNb3Rvcm9sYQotMDAxNTcwICAgICAoYmFzZSAxNikJCVN5bWJvbCBUZWNobm9sb2dpZXNXaG9sbHkgb3duZWQgU3Vic2lkaWFyeSBvZiBNb3Rvcm9sYQotCQkJCU9uZSBNb3Rvcm9sYSBQbGF6YQotCQkJCUhvbHRzdmlsbGUgTlkgMTE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTcxICAgKGhleCkJCU5vbGFuIFN5c3RlbXMKLTAwMTU3MSAgICAgKGJhc2UgMTYpCQlOb2xhbiBTeXN0ZW1zCi0JCQkJMTU5NSBDbGVvIFNwcmluZ3MgRHIuCi0JCQkJU2FuIEpvc2UgQ2EuIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS03MiAgIChoZXgpCQlSZWQtTGVtb24KLTAwMTU3MiAgICAgKGJhc2UgMTYpCQlSZWQtTGVtb24KLQkJCQlVbml0IDQsIDkvRiwgUGFyYW1vdW50IEJ1aWxkaW5nCi0JCQkJTm8uIDEyLCBLYSBZaXAgU3RyZWV0Ci0JCQkJQ2hhaSBXYW4gIAotCQkJCUhPTkcgS09ORwotCi0wMC0xNS03MyAgIChoZXgpCQlOZXdTb2Z0ICBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDE1NzMgICAgIChiYXNlIDE2KQkJTmV3U29mdCAgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTNGLCAxOS0zLCBTYW5DaG9uZyBSRCwgTmFuS2FuZywKLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtNzQgICAoaGV4KQkJSG9yaXpvbiBTZW1pY29uZHVjdG9ycyBMdGQuCi0wMDE1NzQgICAgIChiYXNlIDE2KQkJSG9yaXpvbiBTZW1pY29uZHVjdG9ycyBMdGQuCi0JCQkJOSBIYW1lbm9maW0gU3QuCi0JCQkJUE9CIDIxOTIKLQkJCQlIZXJ6bGl5YSAgNDYxMjAKLQkJCQlJU1JBRUwKLQotMDAtMTUtNzUgICAoaGV4KQkJTmV2aXMgTmV0d29ya3MgSW5jLgotMDAxNTc1ICAgICAoYmFzZSAxNikJCU5ldmlzIE5ldHdvcmtzIEluYy4KLQkJCQkzOTQ1IEZyZWVkb20gQ2lyY2xlCi0JCQkJU3VpdGUgNzIwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTc2ICAgKGhleCkJCXNjaWwgYW5pbWFsIGNhcmUgY29tcGFueSBHbWJICi0wMDE1NzYgICAgIChiYXNlIDE2KQkJc2NpbCBhbmltYWwgY2FyZSBjb21wYW55IEdtYkgKLQkJCQlEaW5hLVdlaXNzbWFubi1BbGxlZSA2Ci0JCQkJVmllcm5oZWltIEhlc3NlbiA2ODUxOQotCQkJCUdFUk1BTlkKLQotMDAtMTUtNzcgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMKLTAwMTU3NyAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcwotCQkJCTMyMDAgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNzggICAoaGV4KQkJQXVkaW8gLyBWaWRlbyBJbm5vdmF0aW9ucwotMDAxNTc4ICAgICAoYmFzZSAxNikJCUF1ZGlvIC8gVmlkZW8gSW5ub3ZhdGlvbnMKLQkJCQlBMy0zMzc1IE5vcnRoIFNlcnZpY2UgUm9hZAotCQkJCUJ1cmxpbmd0b24gT04gTDdOIDNHMgotCQkJCUNBTkFEQQotCi0wMC0xNS03OSAgIChoZXgpCQlMdW5hdG9uZSBJbmR1c3RyaWVsbGUgRWxla3Ryb25payBHbWJICi0wMDE1NzkgICAgIChiYXNlIDE2KQkJTHVuYXRvbmUgSW5kdXN0cmllbGxlIEVsZWt0cm9uaWsgR21iSAotCQkJCVJlbm5iYWhud2VnIDU1Ci0JCQkJV2llbiAgMTIyMAotCQkJCUFVU1RSSUEKLQotMDAtMTUtN0EgICAoaGV4KQkJVGVsZWZpbiBTLnAuQS4KLTAwMTU3QSAgICAgKGJhc2UgMTYpCQlUZWxlZmluIFMucC5BLgotCQkJCVZpYSBBbGJlcmUgODcvQQotCQkJCVZlcm9uYSBWUiAzNzEzOAotCQkJCUlUQUxZCi0KLTAwLTE1LTdCICAgKGhleCkJCUxldXplIGVsZWN0cm9uaWMgR21iSCArIENvLiBLRwotMDAxNTdCICAgICAoYmFzZSAxNikJCUxldXplIGVsZWN0cm9uaWMgR21iSCArIENvLiBLRwotCQkJCUluIGRlciBCcmFpa2UgMQotCQkJCU93ZW4gQmFkZW4tV3VydHRlbWJlcmcgNzMyNzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTdDICAgKGhleCkJCURhdmUgTmV0d29ya3MsIEluYy4KLTAwMTU3QyAgICAgKGJhc2UgMTYpCQlEYXZlIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjE1MSBPJ3Rvb2wgQXZlbnVlCi0JCQkJU3VpdGUgSAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS03RCAgIChoZXgpCQlQT1NEQVRBIENPLiwgTFRELgotMDAxNTdEICAgICAoYmFzZSAxNikJCVBPU0RBVEEgQ08uLCBMVEQuCi0JCQkJMjc2LTIsU2VvaHllb24tZG9uZyxCdW5kYW5nLWd1LAotCQkJCVNlb25nbmFtLUNpdHkgS3llb25nZ2ktRG8gNDYzLTc3NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS03RSAgIChoZXgpCQlXZWlkbWk/b2VsbGVyIEludGVyZmFjZSBHbWJIICYgQ28uIEtHICAgCi0wMDE1N0UgICAgIChiYXNlIDE2KQkJV2VpZG1pP29lbGxlciBJbnRlcmZhY2UgR21iSCAmIENvLiBLRyAgIAotCQkJCUtsaW5nZW5iZXJnc3RyYWk/b2VlIDE2Ci0JCQkJRGV0bW9sZCAgMzI3NTggCi0JCQkJR0VSTUFOWQotCi0wMC0xNS03RiAgIChoZXgpCQlDaHVhbkcgSW50ZXJuYXRpb25hbCBIb2xkaW5nIENPLixMVEQuCi0wMDE1N0YgICAgIChiYXNlIDE2KQkJQ2h1YW5HIEludGVybmF0aW9uYWwgSG9sZGluZyBDTy4sTFRELgotCQkJCTFGLCBOTy4xMiwgQWxsZXkgMSwgTGFuZSAxMjUsIEd1b2xpYW4gU3RyZWV0IDRMaXJuLCBXdWhhbiBWaWxsYWdlCi0JCQkJVGFveXVhbiBMb25ndGFuIDMyNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtODAgICAoaGV4KQkJVS1XQVkgQ09SUE9SQVRJT04KLTAwMTU4MCAgICAgKGJhc2UgMTYpCQlVLVdBWSBDT1JQT1JBVElPTgotCQkJCTNGLTIsIE5PLiAxMjUsIExBTkUgMjM1LCBQQU8tQ0hJQU8KLQkJCQlIU0lOVElFTiBDSVRZIFRBSVBFSSBIU0lFTiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTgxICAgKGhleCkJCU1BS1VTIEluYy4KLTAwMTU4MSAgICAgKGJhc2UgMTYpCQlNQUtVUyBJbmMuCi0JCQkJNEYgRGFlZG8gQmxkZy4gNzQ4LTE0IFllb2tzYW0tZG9uZywgS2FuZ25hbS1ndQotCQkJCVNlb3VsIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtODIgICAoaGV4KQkJVFZvbmljcyBMdGQKLTAwMTU4MiAgICAgKGJhc2UgMTYpCQlUVm9uaWNzIEx0ZAotCQkJCVBlbm9jZWQgVGVjaG5vbG9neSBQYXJrCi0JCQkJUGVuY29lZCBNaWQgR2xhbSBDRjM1IDVIWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LTgzICAgKGhleCkJCUlWVCBjb3Jwb3JhdGlvbgotMDAxNTgzICAgICAoYmFzZSAxNikJCUlWVCBjb3Jwb3JhdGlvbgotCQkJCVNoYW5nZGkgWGlueGkgcm9hZCwgSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTE1LTg0ICAgKGhleCkJCVNjaGVuY2sgUHJvY2VzcyBHbWJICi0wMDE1ODQgICAgIChiYXNlIDE2KQkJU2NoZW5jayBQcm9jZXNzIEdtYkgKLQkJCQlQYWxsYXN3aWVzZW5zdHIuIDEwMAotCQkJCURhcm1zdGFkdCBIZXNzZW4gNjQyOTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTg1ICAgKGhleCkJCUFvbnZpc2lvbiBUZWNobm9sb3B5IENvcnAuCi0wMDE1ODUgICAgIChiYXNlIDE2KQkJQW9udmlzaW9uIFRlY2hub2xvcHkgQ29ycC4KLQkJCQkyRiwgTm8uIDU4LCBQYXJrIDJuZCBBdmUuIFNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS04NiAgIChoZXgpCQlYaWFtZW4gT3ZlcnNlYXMgQ2hpbmVzZSBFbGVjdHJvbmljIENvLiwgTHRkLgotMDAxNTg2ICAgICAoYmFzZSAxNikJCVhpYW1lbiBPdmVyc2VhcyBDaGluZXNlIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0JCQkJTm8uIDIyLCBIdWxpIFN0cmVldCwKLQkJCQlIdWxpIEluZHVzdHJpYWwgRGlzdHJpY3QKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLTAwLTE1LTg3ICAgKGhleCkJCVRha2VuYWthIFNlaXNha3VzaG8gQ28uLEx0ZAotMDAxNTg3ICAgICAoYmFzZSAxNikJCVRha2VuYWthIFNlaXNha3VzaG8gQ28uLEx0ZAotCQkJCTE3OCBISVNISUUKLQkJCQlISUdBU0hJLU9TQUtBIENJVFkgT1NBS0EgNTc4LTA5ODQKLQkJCQlKQVBBTgotCi0wMC0xNS04OCAgIChoZXgpCQlCYWxkYSBTb2x1dGlvbiBNYWxheXNpYSBTZG4gQmhkCi0wMDE1ODggICAgIChiYXNlIDE2KQkJQmFsZGEgU29sdXRpb24gTWFsYXlzaWEgU2RuIEJoZAotCQkJCTMgSmFsYW4gWmFyaWIgNgotCQkJCUthd2FzYW4gUGVyaW5kdXN0cmlhbiBaYXJpYgotCQkJCUxhaGF0LCBJcG9oIFBlcmFrIDMxNTAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTUtODkgICAoaGV4KQkJRC1NQVggVGVjaG5vbG9neSBDby4sTHRkCi0wMDE1ODkgICAgIChiYXNlIDE2KQkJRC1NQVggVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJN0YtNixOTy4yNixMaWFuIENoZW5nIFJELixDaHVuZy1IbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LThBICAgKGhleCkJCVNVUkVDT00gVGVjaG5vbG9neSBDb3JwLgotMDAxNThBICAgICAoYmFzZSAxNikJCVNVUkVDT00gVGVjaG5vbG9neSBDb3JwLgotCQkJCTZGLCBOby4gMTI1LCBTZWMuIDIsIERhdHVuZyBSZC4KLQkJCQlTaGlqciBDaXR5LCBUYWlwZWkgQ291bnR5ICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LThCICAgKGhleCkJCVBhcmsgQWlyIFN5c3RlbXMgTHRkCi0wMDE1OEIgICAgIChiYXNlIDE2KQkJUGFyayBBaXIgU3lzdGVtcyBMdGQKLQkJCQlOb3J0aGZpZWxkcwotCQkJCU1hcmtldCBEZWVwaW5nCi0JCQkJUGV0ZXJib3JvdWdoICBQRTYgOFVFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTUtOEMgICAoaGV4KQkJTGlhYiBBcFMKLTAwMTU4QyAgICAgKGJhc2UgMTYpCQlMaWFiIEFwUwotCQkJCU9lc3RyZSBBbGxlIDYKLQkJCQlTdG9ldnJpbmcgIERLLTk1MzAKLQkJCQlERU5NQVJLCi0KLTAwLTE1LThEICAgKGhleCkJCUplbm5pYyBMdGQKLTAwMTU4RCAgICAgKGJhc2UgMTYpCQlKZW5uaWMgTHRkCi0JCQkJRnVybml2YWwgU3RyZWV0Ci0JCQkJU2hlZmZpZWxkIFlvcmtzaGlyZSBTMSA0UVQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNS04RSAgIChoZXgpCQlQbHVzdGVrLklOQwotMDAxNThFICAgICAoYmFzZSAxNikJCVBsdXN0ZWsuSU5DCi0JCQkJMTNGLTEsTm8zKEJ1aWxkaW5nIEYpIFl1YW4gUXUgU3RyZWV0Ci0JCQkJVGFpcGVpIFl1YW4gUXUgMTE1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS04RiAgIChoZXgpCQlOVFQgQWR2YW5jZWQgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxNThGICAgICAoYmFzZSAxNikJCU5UVCBBZHZhbmNlZCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJU2hpbmp1a3UgTWl0c3VpIEJsZGcuIDItMS0xLCBOaXNoaS1zaGluanVrdQotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2My0wNDMxCi0JCQkJSkFQQU4KLQotMDAtMTUtOTAgICAoaGV4KQkJSGVjdHJvbmljIEdtYkgKLTAwMTU5MCAgICAgKGJhc2UgMTYpCQlIZWN0cm9uaWMgR21iSAotCQkJCUFsbG1lbmRzdHJhc3NlIDE1Ci0JCQkJQm9ubmRvcmYgQmFkZW4tV3VydHRlbWJlcmcgNzk4NDgKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTkxICAgKGhleCkJCVJMVyBJbmMuCi0wMDE1OTEgICAgIChiYXNlIDE2KQkJUkxXIEluYy4KLQkJCQkyMDI5IENhdG8gQXZlLgotCQkJCVN0YXRlIENvbGxlZ2UgUEEgMTY4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTkyICAgKGhleCkJCUZhY29tIFVLIEx0ZCAoTWVsa3NoYW0pCi0wMDE1OTIgICAgIChiYXNlIDE2KQkJRmFjb20gVUsgTHRkIChNZWxrc2hhbSkKLQkJCQlMYW5jYXN0ZXIgSG91c2UKLQkJCQlCb3dlcmhpbGwgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlNZWxrc2hhbSBXaWx0c2hpcmUgU04xMDRGQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LTkzICAgKGhleCkJCVU0RUEgVGVjaG5vbG9naWVzIEluYy4KLTAwMTU5MyAgICAgKGJhc2UgMTYpCQlVNEVBIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNDg4NjAgTWlsbW9udCBEcml2ZQotCQkJCVN1aXRlMTA3QwotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTk0ICAgKGhleCkJCUJJWE9MT04gQ08uLExURAotMDAxNTk0ICAgICAoYmFzZSAxNikJCUJJWE9MT04gQ08uLExURAotCQkJCTUwMi01MDgsRGlnaXRhbCBFbXBpcmUgQmxkZy4KLQkJCQk5ODAtMyBZZW9uZ3RvbmctRG9uZwotCQkJCVllb25ndG9uZy1HdSxTdXdvbiBHeWVvbmdnaS1EbyA0NDMtODEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTk1ICAgKGhleCkJCVF1ZXN0ZXIgVGFuZ2VudCBDb3Jwb3JhdGlvbgotMDAxNTk1ICAgICAoYmFzZSAxNikJCVF1ZXN0ZXIgVGFuZ2VudCBDb3Jwb3JhdGlvbgotCQkJCTIwMSAtIDk4NjUgV2VzdCBTYWFuaWNoIFJvYWQKLQkJCQlTaWRuZXkgQkMgVjhMIDVZOAotCQkJCUNBTkFEQQotCi0wMC0xNS05NiAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDE1OTYgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJU3V3YW5lZSBHQSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtOTcgICAoaGV4KQkJQUVUQSBBVURJTyBTWVNURU1TCi0wMDE1OTcgICAgIChiYXNlIDE2KQkJQUVUQSBBVURJTyBTWVNURU1TCi0JCQkJMTgtMjIsIGF2ZW51ZSBFZG91YXJkIEhlcnJpb3QKLQkJCQlLZXBsZXIgNAotCQkJCUxlIFBsZXNzaXMgUm9iaW5zb24gIDkyMzUwCi0JCQkJRlJBTkNFCi0KLTAwLTE1LTk4ICAgKGhleCkJCUtvbGVrdG9yIGdyb3VwCi0wMDE1OTggICAgIChiYXNlIDE2KQkJS29sZWt0b3IgZ3JvdXAKLQkJCQlWb2prb3ZhIDEwCi0JCQkJSWRyaWphICA1MjgwCi0JCQkJU0xPVkVOSUEKLQotMDAtMTUtOTkgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIExURAotMDAxNTk5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLQkJCQk0MTYsIE1hZXRhbi0zRG9uZywgWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24gR3llb25nZ2kgNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS05QSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxNTlBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtOUIgICAoaGV4KQkJTm9ydGVsCi0wMDE1OUIgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTUtOUMgICAoaGV4KQkJQi1LWVVORyBTWVNURU0gQ28uLEx0ZC4KLTAwMTU5QyAgICAgKGJhc2UgMTYpCQlCLUtZVU5HIFNZU1RFTSBDby4sTHRkLgotCQkJCSM4MTIsV09PTElNIEUtQklaIENFTlRFUiwxNzAtNQotCQkJCUdVUk8tRE9ORyBHVVJPLUdVIDE1Mi04NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtOUQgICAoaGV4KQkJTWluaWNvbSBBZHZhbmNlZCBTeXN0ZW1zIGx0ZAotMDAxNTlEICAgICAoYmFzZSAxNikJCU1pbmljb20gQWR2YW5jZWQgU3lzdGVtcyBsdGQKLQkJCQkxNiwgSGFydG9tIFN0LgotCQkJCUhhci1Ib3R6dmltCi0JCQkJSmVydXNhbGVtICA5MTQ1MAotCQkJCUlTUkFFTAotCi0wMC0xNS05RSAgIChoZXgpCQlNYWQgQ2F0eiBJbnRlcmFjdGl2ZSBJbmMKLTAwMTU5RSAgICAgKGJhc2UgMTYpCQlNYWQgQ2F0eiBJbnRlcmFjdGl2ZSBJbmMKLQkJCQlVbml0cyAzKzQgV2VzdCBQb2ludCBSb3cKLQkJCQlHcmVhdCBQYXJrIFJkLCBBbG1vbmRzYnVyeQotCQkJCUJyaXN0b2wgU291dGggR2xvdWNlc3RlcnNoaXJlIEJTMzIgNFFHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTUtOUYgICAoaGV4KQkJVGVyYXNjYWxhLCBJbmMuCi0wMDE1OUYgICAgIChiYXNlIDE2KQkJVGVyYXNjYWxhLCBJbmMuCi0JCQkJMTQ1IEJvZHdlbGwgU3RyZWV0Ci0JCQkJQXZvbiBNQSAwMjMyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQTAgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTVBMCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTUtQTEgICAoaGV4KQkJRUNBLVNJTlRFUlMKLTAwMTVBMSAgICAgKGJhc2UgMTYpCQlFQ0EtU0lOVEVSUwotCQkJCTUsIHJ1ZSBQYXVsIE1lc3BsZQotCQkJCVRPVUxPVVNFIENlZGV4IDAxIDMxMTA2Ci0JCQkJRlJBTkNFCi0KLTAwLTE1LUEyICAgKGhleCkJCUFSUklTIEludGVybmF0aW9uYWwKLTAwMTVBMiAgICAgKGJhc2UgMTYpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1BMyAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDE1QTMgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJU3V3YW5lZSBHQSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQTQgICAoaGV4KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotMDAxNUE0ICAgICAoYmFzZSAxNikJCUFSUklTIEludGVybmF0aW9uYWwKLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1aXRlIDMwMAotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUE1ICAgKGhleCkJCURDSSBDby4sIEx0ZC4KLTAwMTVBNSAgICAgKGJhc2UgMTYpCQlEQ0kgQ28uLCBMdGQuCi0JCQkJNHRoIEZsLiBTdXN1bmcgQi9ELCA4OTMtNAotCQkJCUppam9rLWRvbmcKLQkJCQlZdXNlb25nLWd1IERhZWplb24gMzA1LTMzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS1BNiAgIChoZXgpCQlEaWdpdGFsIEVsZWN0cm9uaWNzIFByb2R1Y3RzIEx0ZC4KLTAwMTVBNiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIEVsZWN0cm9uaWNzIFByb2R1Y3RzIEx0ZC4KLQkJCQlSb29tIDMwMSwgMyByZCBGbG9vciwgVHN1biBZaXAgQ2VudHJlCi0JCQkJNDEgVHN1biBZaXAgU3RyZWV0Ci0JCQkJS3d1biBUb25nICA4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMTUtQTcgICAoaGV4KQkJUm9iYXRlY2ggQUcKLTAwMTVBNyAgICAgKGJhc2UgMTYpCQlSb2JhdGVjaCBBRwotCQkJCVBpbGF0dXNyaW5nIDEwCi0JCQkJTXVyaSBBRyA1NjMwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTUtQTggICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTVBOCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOIFVzIEh3eSA0NQotCQkJCVJtIE1XMTEzCi0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1BOSAgIChoZXgpCQlLV0FORyBXT08gSSZDIENPLixMVEQKLTAwMTVBOSAgICAgKGJhc2UgMTYpCQlLV0FORyBXT08gSSZDIENPLixMVEQKLQkJCQk4OTgtMjMsIEhvZ3llLWRvbmcsRG9uZ2FuLWd1Ci0JCQkJQW55YW5nLXNpLEd5ZW9uZ2dpLWRvCi0JCQkJNDMxLTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS1BQSAgIChoZXgpCQlSZXh0ZWNobmlrIEludGVybmF0aW9uYWwgQ28uLAotMDAxNUFBICAgICAoYmFzZSAxNikJCVJleHRlY2huaWsgSW50ZXJuYXRpb25hbCBDby4sCi0JCQkJUm9vbSA1LTMsIE5vLjUxLCBTZWN0aW9uIDIsIEtlZWx1bmcgUm9hZAotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1BQiAgIChoZXgpCQlQUk8gQ08gU09VTkQgSU5DCi0wMDE1QUIgICAgIChiYXNlIDE2KQkJUFJPIENPIFNPVU5EIElOQwotCQkJCTIyNSBQQVJTT05TIFNUUkVFVAotCQkJCUtBTEFNQVpPTyBNSUNISUdBTiA0OTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQUMgICAoaGV4KQkJQ2FwZWxvbiBBQgotMDAxNUFDICAgICAoYmFzZSAxNikJCUNhcGVsb24gQUIKLQkJCQlKYWdlcmhvcm5zIHZhZyAxCi0JCQkJS3VuZ2VucyBLdXJ2YSBTdG9ja2hvbG0gUy0xNDEgNzUKLQkJCQlTV0VERU4KLQotMDAtMTUtQUQgICAoaGV4KQkJQWNjZWRpYW4gTmV0d29ya3MKLTAwMTVBRCAgICAgKGJhc2UgMTYpCQlBY2NlZGlhbiBOZXR3b3JrcwotCQkJCTQ4NzggTGV2eSwgc3VpdGUgMjAyCi0JCQkJc3VpdGUgMjAyCi0JCQkJU3QtTGF1cmVudCBRdWViZWMgSDlQIDJWNAotCQkJCUNBTkFEQQotCi0wMC0xNS1BRSAgIChoZXgpCQlreXVuZyBpbAotMDAxNUFFICAgICAoYmFzZSAxNikJCWt5dW5nIGlsCi0JCQkJd29hciByb25nLW15biB5b3VnYXRlLXJpIDEwMS0yCi0JCQkJcGFqdS1jaXR5IGd5ZW9uZyBnaSA0MTMtODEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LUFGICAgKGhleCkJCUF6dXJlV2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTVBRiAgICAgKGJhc2UgMTYpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJOEYuLCBOby45NCwgQmFvemhvbmcgUmQuLCBYaW5kaWFuCi0JCQkJVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LUIwICAgKGhleCkJCUFVVE9URUxFTkVUIENPLixMVEQKLTAwMTVCMCAgICAgKGJhc2UgMTYpCQlBVVRPVEVMRU5FVCBDTy4sTFRECi0JCQkJMkYsIDg5OC0yNCwgSG9neWUyLWRvbmcsIERvbmdhbi1ndQotCQkJCUFueWFuZy1DaXR5IEt5dW5nZ2ktZG8gNDMxLTgzNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS1CMSAgIChoZXgpCQlBbWJpZW50IENvcnBvcmF0aW9uCi0wMDE1QjEgICAgIChiYXNlIDE2KQkJQW1iaWVudCBDb3Jwb3JhdGlvbgotCQkJCTc5IENoYXBlbCBTdC4KLQkJCQlOZXd0b24gTUEgMDI0NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUIyICAgKGhleCkJCUFkdmFuY2VkIEluZHVzdHJpYWwgQ29tcHV0ZXIsIEluYy4KLTAwMTVCMiAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBJbmR1c3RyaWFsIENvbXB1dGVyLCBJbmMuCi0JCQkJMTc5NzAgRS4gQWpheCBDaXJjbGUKLQkJCQlDaXR5IG9mIEluZHVzdHJ5IENBIDkxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1CMyAgIChoZXgpCQlDYXJldGVjaCBBQgotMDAxNUIzICAgICAoYmFzZSAxNikJCUNhcmV0ZWNoIEFCCi0JCQkJTnlib3Jnc3ZhZ2VuIDE5NwotCQkJCUthbGl4ICA5NTI5MQotCQkJCVNXRURFTgotCi0wMC0xNS1CNCAgIChoZXgpCQlQb2x5bWFwICBXaXJlbGVzcyBMTEMKLTAwMTVCNCAgICAgKGJhc2UgMTYpCQlQb2x5bWFwICBXaXJlbGVzcyBMTEMKLQkJCQkzMTAgUy4gV2lsbGlhbXMgQmx2ZC4gU3RlLiAzNTAKLQkJCQlUdWNzb24gQVogODU3MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUI1ICAgKGhleCkJCUNJIE5ldHdvcmsgQ29ycC4KLTAwMTVCNSAgICAgKGJhc2UgMTYpCQlDSSBOZXR3b3JrIENvcnAuCi0JCQkJMkYgRGFpbmkgSW5vdWUgQmxkZwotCQkJCTEtNi02IEFrYXNha2EgTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwNy0wMDUyCi0JCQkJSkFQQU4KLQotMDAtMTUtQjYgICAoaGV4KQkJU2hpbk1heXdhIEluZHVzdHJpZXMsIEx0ZC4KLTAwMTVCNiAgICAgKGJhc2UgMTYpCQlTaGluTWF5d2EgSW5kdXN0cmllcywgTHRkLgotCQkJCTEtMSBTaGlubWVpd2EtY2hvCi0JCQkJVGFrYXJhenVrYSBIeW9nbyA2NjUtODU1MAotCQkJCUpBUEFOCi0KLTAwLTE1LUI3ICAgKGhleCkJCVRvc2hpYmEKLTAwMTVCNyAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LFN1ZWhpcm8tQ2hvCi0JCQkJT21lIFRva3lvIDE5ODg3MTAKLQkJCQlKQVBBTgotCi0wMC0xNS1COCAgIChoZXgpCQlUYWhvZQotMDAxNUI4ICAgICAoYmFzZSAxNikJCVRhaG9lCi0JCQkJdWwuIFVuaXdlcnN5dGVja2EgMQotCQkJCVdyb2NsYXcgIDUwOTUxCi0JCQkJUE9MQU5ECi0KLTAwLTE1LUI5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE1QjkgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjOTQtMQotCQkJCUltc29vLURvbmcKLQkJCQlHdW1pLUNpdHkgR3llb25nLUJ1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LUJBICAgKGhleCkJCWliYSBBRwotMDAxNUJBICAgICAoYmFzZSAxNikJCWliYSBBRwotCQkJCUtvZW5pZ3N3YXJ0ZXJzdHJhc3NlIDQ0Ci0JCQkJRnVlcnRoIEJhdmFyaWEgOTA3NjIKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LUJCICAgKGhleCkJCVNNQSBTb2xhciBUZWNobm9sb2d5IEFHCi0wMDE1QkIgICAgIChiYXNlIDE2KQkJU01BIFNvbGFyIFRlY2hub2xvZ3kgQUcKLQkJCQlTb25uZW5hbGxlZSAxCi0JCQkJTmllc3RldGFsIEhlc3NlbiAzNDI2NgotCQkJCUdFUk1BTlkKLQotMDAtMTUtQkMgICAoaGV4KQkJRGV2ZWxjbwotMDAxNUJDICAgICAoYmFzZSAxNikJCURldmVsY28KLQkJCQlPbG9mIFBhbG1lcyBBbGxlIDQwCi0JCQkJQWFyaHVzIE4gIDgyMDAKLQkJCQlERU5NQVJLCi0KLTAwLTE1LUJEICAgKGhleCkJCUdyb3VwIDQgVGVjaG5vbG9neSBMdGQKLTAwMTVCRCAgICAgKGJhc2UgMTYpCQlHcm91cCA0IFRlY2hub2xvZ3kgTHRkCi0JCQkJQ2hhbGxlbmdlIEhvdXNlCi0JCQkJSW50ZXJuYXRpb25hbCBEcml2ZQotCQkJCVRld2tlc2J1cnkgR2xvdWNlc3RlcnNoaXJlIEdMMjAgOFVRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTUtQkUgICAoaGV4KQkJSXF1YSBMdGQuCi0wMDE1QkUgICAgIChiYXNlIDE2KQkJSXF1YSBMdGQuCi0JCQkJSHl2b25pbmthdHUgMQotCQkJCVNhbG8gVmFyc2luYWlzLVN1b21pIDI0MjQwCi0JCQkJRklOTEFORAotCi0wMC0xNS1CRiAgIChoZXgpCQl0ZWNobmljb2IKLTAwMTVCRiAgICAgKGJhc2UgMTYpCQl0ZWNobmljb2IKLQkJCQk0IFJ1ZSBDYW1pbGxlIFNhaW50LVNhZW5zCi0JCQkJTEFORVNURVIgTW9yYmloYW4gNTY2MDIKLQkJCQlGUkFOQ0UKLQotMDAtMTUtQzAgICAoaGV4KQkJRElHSVRBTCBURUxFTUVESUEgQ08uLExURC4KLTAwMTVDMCAgICAgKGJhc2UgMTYpCQlESUdJVEFMIFRFTEVNRURJQSBDTy4sTFRELgotCQkJCTE3VEggRkxPT1IsIENISU5BIFlVU0UgQlVJTERJTkcsCi0JCQkJTk8gNjAxMyBTSEVOTkFOIFJPQUQsRlVUSUFOIERJU1RSSUNUCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTE1LUMxICAgKGhleCkJCVNPTlkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBpbmMsCi0wMDE1QzEgICAgIChiYXNlIDE2KQkJU09OWSBDb21wdXRlciBFbnRlcnRhaW5tZW50IGluYywKLQkJCQk2LTIxLDJDaG9tZQotCQkJCU1pbmFtaS1Bb3lhbWEKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA3LTAwNjIKLQkJCQlKQVBBTgotCi0wMC0xNS1DMiAgIChoZXgpCQkzTSBHZXJtYW55Ci0wMDE1QzIgICAgIChiYXNlIDE2KQkJM00gR2VybWFueQotCQkJCUNhcmwgU2NodXJ6IFN0ci4gMQotCQkJCU5ldXNzIE5SVyA0MTQ1MwotCQkJCUdFUk1BTlkKLQotMDAtMTUtQzMgICAoaGV4KQkJUnVmIFRlbGVtYXRpayBBRwotMDAxNUMzICAgICAoYmFzZSAxNikJCVJ1ZiBUZWxlbWF0aWsgQUcKLQkJCQlSdWV0aXN0cmFzc2UgMTMKLQkJCQlTY2hsaWVyZW4gWkggODk1MgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE1LUM0ICAgKGhleCkJCUZMT1ZFTCBDTy4sIExURC4KLTAwMTVDNCAgICAgKGJhc2UgMTYpCQlGTE9WRUwgQ08uLCBMVEQuCi0JCQkJVGhlIFRhY2hpaGkgYnVpbGRpbmcgTm8sMyBoYWxsLCA2LTEsIFNha2FlLWNobywKLQkJCQlUYWNoaWthd2Etc2hpCi0JCQkJVG9reW8gIDE5MC0wMDAzCi0JCQkJSkFQQU4KLQotMDAtMTUtQzUgICAoaGV4KQkJRGVsbCBJbmMKLTAwMTVDNSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUM2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTVDNiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUM3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTVDNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUM4ICAgKGhleCkJCUZsZXhpUGFuZWwgTHRkCi0wMDE1QzggICAgIChiYXNlIDE2KQkJRmxleGlQYW5lbCBMdGQKLQkJCQk3IGJpcyBydWUgTGFsbwotCQkJCVBhcmlzIDc1MDE2Ci0JCQkJRlJBTkNFCi0KLTAwLTE1LUM5ICAgKGhleCkJCUd1bXN0aXgsIEluYwotMDAxNUM5ICAgICAoYmFzZSAxNikJCUd1bXN0aXgsIEluYwotCQkJCTMxMzAgQWxwaW5lIFJvYWQKLQkJCQlTdWl0ZSAyODgtNjA2Ci0JCQkJUG9ydG9sYSBWYWxsZXkgQ0EgOTQwMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUNBICAgKGhleCkJCVRlcmFSZWNvbiwgSW5jLgotMDAxNUNBICAgICAoYmFzZSAxNikJCVRlcmFSZWNvbiwgSW5jLgotCQkJCTI5NTUgQ2FtcHVzIERyaXZlLCBTdWl0ZSAzMjUKLQkJCQlTYW4gTWF0ZW8gQ0EgOTQ0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUNCICAgKGhleCkJCVN1cmYgQ29tbXVuaWNhdGlvbiBTb2x1dGlvbnMgTHRkLgotMDAxNUNCICAgICAoYmFzZSAxNikJCVN1cmYgQ29tbXVuaWNhdGlvbiBTb2x1dGlvbnMgTHRkLgotCQkJCVAuTy4gQm94IDM0MwotCQkJCVNvbHRhbSBJbmR1c3RyaWFsIFpvbmUKLQkJCQlZb2tuZWFtICAyMDE2NAotCQkJCUlTUkFFTAotCi0wMC0xNS1DQyAgIChoZXgpCQlURVBDTyBVUVVFU1QsIExURC4KLTAwMTVDQyAgICAgKGJhc2UgMTYpCQlURVBDTyBVUVVFU1QsIExURC4KLQkJCQlTYW5ub21peWEgSW50ZXMgQmxkZy4gOEYKLQkJCQk3LTEtOCBJc29nYW1pLWRvcmksIENodW8ta3UKLQkJCQlLb2JlIEhZT0dPIDY1MS0wMDg2Ci0JCQkJSkFQQU4KLQotMDAtMTUtQ0QgICAoaGV4KQkJRXhhcnRlY2ggSW50ZXJuYXRpb25hbCBDb3JwLgotMDAxNUNEICAgICAoYmFzZSAxNikJCUV4YXJ0ZWNoIEludGVybmF0aW9uYWwgQ29ycC4KLQkJCQkzL0YsIE5vLjYyLCBMYW5lIDE4OCwgUnVlaSBHdWFuZyBSZC4sIE5laWh1Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LUNFICAgKGhleCkJCUFSUklTIEludGVybmF0aW9uYWwKLTAwMTVDRSAgICAgKGJhc2UgMTYpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DRiAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDE1Q0YgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJU3V3YW5lZSBHQSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtRDAgICAoaGV4KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotMDAxNUQwICAgICAoYmFzZSAxNikJCUFSUklTIEludGVybmF0aW9uYWwKLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1aXRlIDMwMAotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUQxICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDE1RDEgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUQyICAgKGhleCkJCVhhbnRlY2ggQ29ycG9yYXRpb24KLTAwMTVEMiAgICAgKGJhc2UgMTYpCQlYYW50ZWNoIENvcnBvcmF0aW9uCi0JCQkJMTMxMDAgVGVsZmFpciBBdmVudWUKLQkJCQlTZWNvbmQgRmxvb3IKLQkJCQlTeWxtYXIgQ0EgOTEzNDItMzU3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtRDMgICAoaGV4KQkJUGFudGVjaCZDdXJpdGVsIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDE1RDMgICAgIChiYXNlIDE2KQkJUGFudGVjaCZDdXJpdGVsIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTQ1MS0zNCwgU2VvY2hvLWRvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LUQ0ICAgKGhleCkJCUVtaXRvciBBQgotMDAxNUQ0ICAgICAoYmFzZSAxNikJCUVtaXRvciBBQgotCQkJCVNqb3Zpa3NiYWNrZW4gMTQKLQkJCQlTdG9ja2hvbG0gIDExNyA0MwotCQkJCVNXRURFTgotCi0wMC0xNS1ENSAgIChoZXgpCQlOSUNFVlQKLTAwMTVENSAgICAgKGJhc2UgMTYpCQlOSUNFVlQKLQkJCQlXYXJzaGF3c2tvZSBzaG9zc2UgMTI1Ci0JCQkJTW9zY293ICAxMTc0MDUKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTUtRDYgICAoaGV4KQkJT1NMaU5LIFNwLiB6IG8uby4KLTAwMTVENiAgICAgKGJhc2UgMTYpCQlPU0xpTksgU3AuIHogby5vLgotCQkJCXVsLiBNYXJzYSAyNwotCQkJCUdkYW5zayAgODAyOTkKLQkJCQlQT0xBTkQKLQotMDAtMTUtRDcgICAoaGV4KQkJUmV0aSBDb3Jwb3JhdGlvbgotMDAxNUQ3ICAgICAoYmFzZSAxNikJCVJldGkgQ29ycG9yYXRpb24KLQkJCQk2RixObyAxMywgTGFuZSAxMjAsIFNlYyAxLCBOZWlodSBSZC4sCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtRDggICAoaGV4KQkJSW50ZXJsaW5rIEVsZWN0cm9uaWNzCi0wMDE1RDggICAgIChiYXNlIDE2KQkJSW50ZXJsaW5rIEVsZWN0cm9uaWNzCi0JCQkJNTQ2IEZseW5uIFJvYWQKLQkJCQlDYW1hcmlsbG8gQ0EgOTMwMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUQ5ICAgKGhleCkJCVBLQyBFbGVjdHJvbmljcyBPeQotMDAxNUQ5ICAgICAoYmFzZSAxNikJCVBLQyBFbGVjdHJvbmljcyBPeQotCQkJCVBhanVuaWl0eW50aWUgNDMKLQkJCQlSQUFIRSAgOTIxMjAKLQkJCQlGSU5MQU5ECi0KLTAwLTE1LURBICAgKGhleCkJCUlSSVRFTCBBLkQuCi0wMDE1REEgICAgIChiYXNlIDE2KQkJSVJJVEVMIEEuRC4KLQkJCQlCYXRham5pY2tpIHB1dCAyMwotCQkJCUJlb2dyYWQgU2VyYmlhIDExMDgwCi0JCQkJWVVHT1NMQVZJQQotCi0wMC0xNS1EQiAgIChoZXgpCQlDYW5lc3RhIEluYy4KLTAwMTVEQiAgICAgKGJhc2UgMTYpCQlDYW5lc3RhIEluYy4KLQkJCQk5NjUgV2VzdCBNYXVkZSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ2FsaWZvcm5pYSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtREMgICAoaGV4KQkJS1QmQyBDby4sIEx0ZC4KLTAwMTVEQyAgICAgKGJhc2UgMTYpCQlLVCZDIENvLiwgTHRkLgotCQkJCTQ4Ny00LCBLVCZDIEJsZGcuCi0JCQkJQmFuZ0h3YS1Eb25nCi0JCQkJR2FuZ1Nlby1LdSBTZW91bCAxNTctODQ5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LUREICAgKGhleCkJCUlQIENvbnRyb2wgU3lzdGVtcyBMdGQuCi0wMDE1REQgICAgIChiYXNlIDE2KQkJSVAgQ29udHJvbCBTeXN0ZW1zIEx0ZC4KLQkJCQlVbml0IDE1LCBIaS1UZWNoIFZpbGxhZ2UsCi0JCQkJV2l0bmV5IFdheSwgQm9sZG9uIEJ1c2luZXNzIFBhcmssCi0JCQkJQm9sZG9uIFR5bmUgJiBXZWFyIE5FMzUgOVBFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTUtREUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTVERSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MCBWCi0JCQkJREVOTUFSSwotCi0wMC0xNS1ERiAgIChoZXgpCQlDbGl2ZXQgUy5wLkEuCi0wMDE1REYgICAgIChiYXNlIDE2KQkJQ2xpdmV0IFMucC5BLgotCQkJCXZpYSBDYW1wIExvbmMgMjUKLQkJCQlGZWx0cmUgQmVsbHVubyAzMjAzMAotCQkJCUlUQUxZCi0KLTAwLTE1LUUwICAgKGhleCkJCVNULUVyaWNzc29uCi0wMDE1RTAgICAgIChiYXNlIDE2KQkJU1QtRXJpY3Nzb24KLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCAgU0UtMjIxIDgzCi0JCQkJU1dFREVOCi0KLTAwLTE1LUUxICAgKGhleCkJCVBpY29jaGlwIEx0ZAotMDAxNUUxICAgICAoYmFzZSAxNikJCVBpY29jaGlwIEx0ZAotCQkJCVVwcGVyIEJvcm91Z2ggQ291cnQKLQkJCQlVcHBlciBCb3JvdWdoIFdhbGxzCi0JCQkJQmF0aCAgQkExIDFSRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LUUyICAgKGhleCkJCURyLkluZy4gSGVyYmVydCBLbmF1ZXIgR21iSAotMDAxNUUyICAgICAoYmFzZSAxNikJCURyLkluZy4gSGVyYmVydCBLbmF1ZXIgR21iSAotCQkJCUhlZ2F1ZXIgV2VnIDM4Ci0JCQkJQmVybGluICAxNDE2MwotCQkJCUdFUk1BTlkKLQotMDAtMTUtRTMgICAoaGV4KQkJRHJlYW0gVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uCi0wMDE1RTMgICAgIChiYXNlIDE2KQkJRHJlYW0gVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uCi0JCQkJRWJpc3UgUHJpbWUgU3F1YXJlLCAxLTEtMzkgSGlyb28KLQkJCQlTaGlidXlhLWt1IFRva3lvIDE1MC0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMTUtRTQgICAoaGV4KQkJWmltbWVyIEVsZWt0cm9tZWRpemluCi0wMDE1RTQgICAgIChiYXNlIDE2KQkJWmltbWVyIEVsZWt0cm9tZWRpemluCi0JCQkJSnVua2Vyc3N0cmFzc2UgOQotCQkJCU5ldS1VbG0gQmF5ZXJuIDg5MjMxCi0JCQkJR0VSTUFOWQotCi0wMC0xNS1FNSAgIChoZXgpCQlDaGVlcnRlayBJbmMuCi0wMDE1RTUgICAgIChiYXNlIDE2KQkJQ2hlZXJ0ZWsgSW5jLgotCQkJCU5vLjIsIER1LVNpbmcgRmlyc3QgUm9hZCwgU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1FNiAgIChoZXgpCQlNT0JJTEUgVEVDSE5JS0EgSW5jLgotMDAxNUU2ICAgICAoYmFzZSAxNikJCU1PQklMRSBURUNITklLQSBJbmMuCi0JCQkJU290b2JvcmkgU2t5IEJsZC4gNXRoIEZsb29yCi0JCQkJMi0xMSBJY2hpZ2F5YSBIb25tdXJhLWNobywKLQkJCQlTaGluanVrdS1rdSBUb2t5byAxNjItMDg0NQotCQkJCUpBUEFOCi0KLTAwLTE1LUU3ICAgKGhleCkJCVF1YW50ZWMgUHJvQXVkaW8KLTAwMTVFNyAgICAgKGJhc2UgMTYpCQlRdWFudGVjIFByb0F1ZGlvCi0JCQkJTGVvcG9sZHN0cmFzc2UgMTgKLQkJCQlNdW5jaGVuICBELTgwODAyCi0JCQkJR0VSTUFOWQotCi0wMC0xNS1FOCAgIChoZXgpCQlOb3J0ZWwKLTAwMTVFOCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNS1FOSAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMTVFOSAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQkyRiwgTm8uMjMzLTIsIFBhby1DaGlhbyBSb2FkCi0JCQkJSHNpbi1UaWVuLCBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1FQSAgIChoZXgpCQlUZWxsdW1hdCAoUHR5KSBMdGQKLTAwMTVFQSAgICAgKGJhc2UgMTYpCQlUZWxsdW1hdCAoUHR5KSBMdGQKLQkJCQk2NC83NCBXaGl0ZSBSb2FkCi0JCQkJUmV0cmVhdAotCQkJCUNhcGUgVG93biBXZXN0ZXJuIFByb3ZpbmNlIDc5NDUKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMTUtRUIgICAoaGV4KQkJWlRFIENPUlBPUkFUSU9OCi0wMDE1RUIgICAgIChiYXNlIDE2KQkJWlRFIENPUlBPUkFUSU9OCi0JCQkJNS9GLEEgV2luZyxaVEUgUGxhemEsS2VqaSBSb2FkIFNvdXRoLEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMTUtRUMgICAoaGV4KQkJQm9jYSBEZXZpY2VzIExMQwotMDAxNUVDICAgICAoYmFzZSAxNikJCUJvY2EgRGV2aWNlcyBMTEMKLQkJCQk2MzUzIFcuIFJvZ2VycyBDaXJjbGUgIzQKLQkJCQlCb2NhIFJhdG9uIEZsb3JpZGEgMzM0ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUVEICAgKGhleCkJCUZ1bGNydW0gTWljcm9zeXN0ZW1zLCBJbmMuCi0wMDE1RUQgICAgIChiYXNlIDE2KQkJRnVsY3J1bSBNaWNyb3N5c3RlbXMsIEluYy4KLQkJCQkyNjYzMCBBZ291cmEgUm9hZAotCQkJCUNhbGFiYXNhcyBDQSA5MTMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtRUUgICAoaGV4KQkJT21uZXggQ29udHJvbCBTeXN0ZW1zCi0wMDE1RUUgICAgIChiYXNlIDE2KQkJT21uZXggQ29udHJvbCBTeXN0ZW1zCi0JCQkJIzc0IC0gMTgzMyBDb2FzdCBNZXJpZGlhbiBSZC4KLQkJCQlQb3J0IENvcXVpdGxhbSBCQyBWM0MgNkc1Ci0JCQkJQ0FOQURBCi0KLTAwLTE1LUVGICAgKGhleCkJCU5FQyBUT0tJTiBDb3Jwb3JhdGlvbgotMDAxNUVGICAgICAoYmFzZSAxNikJCU5FQyBUT0tJTiBDb3Jwb3JhdGlvbgotCQkJCTExMjAsIFNoaW1va3V6YXdhCi0JCQkJU2FnYW1paGFyYSBLYW5hZ2F3YSAyMjktMTE5OAotCQkJCUpBUEFOCi0KLTAwLTE1LUYwICAgKGhleCkJCUVHTyBCVgotMDAxNUYwICAgICAoYmFzZSAxNikJCUVHTyBCVgotCQkJCVBhcmFkZSAxNQotCQkJCSdzLUhlcnRvZ2VuYm9zY2ggTm9vcmQtQnJhYmFudCA1MjExS0wKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNS1GMSAgIChoZXgpCQlLWUxJTksgQ29tbXVuaWNhdGlvbnMgQ29ycC4KLTAwMTVGMSAgICAgKGJhc2UgMTYpCQlLWUxJTksgQ29tbXVuaWNhdGlvbnMgQ29ycC4KLQkJCQk4Ri04LCBOby4gMzUxLCBTZWMuIDIsIFpob25nc2hhbiBSZC4sIFpob25naGUgQ2l0eQotCQkJCVRhaXBlaSBDb3VudHkKLQkJCQkyMzUwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtRjIgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDE1RjIgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJTm8uNSBTaGluZyBZZWggU3RyZWV0LEt3ZWkgU2hhbiBIc2lhbmcsVGFveXVhbgotCQkJCVRhaXBlaSAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1GMyAgIChoZXgpCQlQRUxUT1IgQUIKLTAwMTVGMyAgICAgKGJhc2UgMTYpCQlQRUxUT1IgQUIKLQkJCQlCb3ggMjM0MQotCQkJCVNFLTMzMSAwMiAgVkFSTkFNTyAgU0UtMzMxIDAyCi0JCQkJU1dFREVOCi0KLTAwLTE1LUY0ICAgKGhleCkJCUV2ZW50aWRlCi0wMDE1RjQgICAgIChiYXNlIDE2KQkJRXZlbnRpZGUKLQkJCQkxIEFsc2FuIFdheQotCQkJCUxpdHRsZSBGZXJyeSBOSiAwNzY0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtRjUgICAoaGV4KQkJU3VzdGFpbmFibGUgRW5lcmd5IFN5c3RlbXMKLTAwMTVGNSAgICAgKGJhc2UgMTYpCQlTdXN0YWluYWJsZSBFbmVyZ3kgU3lzdGVtcwotCQkJCSM1MDAsIDYwOSAxNHRoIFN0cmVldCBOVwotCQkJCUNhbGdhcnkgQWIgVDJUIDFQMwotCQkJCUNBTkFEQQotCi0wMC0xNS1GNiAgIChoZXgpCQlTQ0lFTkNFIEFORCBFTkdJTkVFUklORyBTRVJWSUNFUywgSU5DLgotMDAxNUY2ICAgICAoYmFzZSAxNikJCVNDSUVOQ0UgQU5EIEVOR0lORUVSSU5HIFNFUlZJQ0VTLCBJTkMuCi0JCQkJNDAxNSBQVUxBU0tJIFBJS0UgTlcKLQkJCQlIVU5UU1ZJTExFIEFMIDM1ODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1GNyAgIChoZXgpCQlXaW50ZWNyb25pY3MgTHRkLgotMDAxNUY3ICAgICAoYmFzZSAxNikJCVdpbnRlY3JvbmljcyBMdGQuCi0JCQkJTm8uIDcxNiwgMTFGLTMsIEp1bmcgSmVuZyBSZC4KLQkJCQlDaHVuZyBIbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LUY4ICAgKGhleCkJCUtpbmd0cm9uaWNzIEluZHVzdHJpYWwgQ28uIEx0ZC4KLTAwMTVGOCAgICAgKGJhc2UgMTYpCQlLaW5ndHJvbmljcyBJbmR1c3RyaWFsIENvLiBMdGQuCi0JCQkJUGVudGhvdXNlLCBDZW50dXJ5IENlbnRyZSwKLQkJCQk0NC00NiBIdW5nIFRvIFJvYWQsIEt3dW4gVG9uZwotCQkJCUtvd2xvb24gIAotCQkJCUhPTkcgS09ORwotCi0wMC0xNS1GOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1RjkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1GQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1RkEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1GQiAgIChoZXgpCQlzZXRleCBzY2hlcm11bHkgdGV4dGlsZSBjb21wdXRlciBnbWJoCi0wMDE1RkIgICAgIChiYXNlIDE2KQkJc2V0ZXggc2NoZXJtdWx5IHRleHRpbGUgY29tcHV0ZXIgZ21iaAotCQkJCUhhdXB0c3RyYXNzZSAyNQotCQkJCU1lbmdlcnNraXJjaGVuIEhlc3NlbiAzNTc5NAotCQkJCUdFUk1BTlkKLQotMDAtMTUtRkMgICAoaGV4KQkJTGl0dGVsZnVzZSBTdGFydGNvCi0wMDE1RkMgICAgIChiYXNlIDE2KQkJTGl0dGVsZnVzZSBTdGFydGNvCi0JCQkJMzcxNCBLaW5uZWFyIFBsCi0JCQkJU2Fza2F0b29uIFNLIFM3UCAwQTYKLQkJCQlDQU5BREEKLQotMDAtMTUtRkQgICAoaGV4KQkJQ29tcGxldGUgTWVkaWEgU3lzdGVtcwotMDAxNUZEICAgICAoYmFzZSAxNikJCUNvbXBsZXRlIE1lZGlhIFN5c3RlbXMKLQkJCQlHcm92ZSBQbGFjZQotCQkJCUN1Y2tmaWVsZCBMYW5lCi0JCQkJV2FybmluZ2xpZCBXZXN0IHN1c3NleCBSSDE3IDVTTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LUZFICAgKGhleCkJCVNDSElMTElORyBST0JPVElDUyBMTEMKLTAwMTVGRSAgICAgKGJhc2UgMTYpCQlTQ0hJTExJTkcgUk9CT1RJQ1MgTExDCi0JCQkJMjAxIENPVVNURUFVIFBMCi0JCQkJREFWSVMgQ0EgOTU2MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUZGICAgKGhleCkJCU5vdmF0ZWwgV2lyZWxlc3MsIEluYy4KLTAwMTVGRiAgICAgKGJhc2UgMTYpCQlOb3ZhdGVsIFdpcmVsZXNzLCBJbmMuCi0JCQkJOTY0NSBTY3JhbnRvbiBSb2FkCi0JCQkJU3VpdGUgMjA1Ci0JCQkJU2FuIERpZWdvIENhbGlmb3JuaWEgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTAwICAgKGhleCkJCUNlbGxlQnJpdGUgTW9iaWxlIFN5bmNocm9uaXphdGlvbgotMDAxNjAwICAgICAoYmFzZSAxNikJCUNlbGxlQnJpdGUgTW9iaWxlIFN5bmNocm9uaXphdGlvbgotCQkJCTI1IEJhc2VsIFN0LgotCQkJCVBPQiA3NTY1Ci0JCQkJUGV0YWNoIFRpa3ZhICA0OTE3MAotCQkJCUlTUkFFTAotCi0wMC0xNi0wMSAgIChoZXgpCQlCdWZmYWxvIEluYy4KLTAwMTYwMSAgICAgKGJhc2UgMTYpCQlCdWZmYWxvIEluYy4KLQkJCQk0LTE1IFNoaWJhdGEgaG9uZG9yaQotCQkJCU5hZ295YSBNaW5hbWkta3UsIEFpY2hpIDQ1Ny04NTIwCi0JCQkJSkFQQU4KLQotMDAtMTYtMDIgICAoaGV4KQkJQ0VZT04gVEVDSE5PTE9HWSBDTy4sTFRELgotMDAxNjAyICAgICAoYmFzZSAxNikJCUNFWU9OIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQkxM0YgU2Ftc3VuZyBJbnN1cmFuY2UgQi9ELiAjOTQyLTkKLQkJCQlJbmd5ZS1Eb25nLFBhbGRhbC1HdQotCQkJCVN1d29uLUNpdHkgR3llb25nZ2ktRG8gNDQyLTgzMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi0wMyAgIChoZXgpCQlDT09MS1NLWSBDby4sIExURAotMDAxNjAzICAgICAoYmFzZSAxNikJCUNPT0xLU0tZIENvLiwgTFRECi0JCQkJU2hpbmdzdW5nIG9mZmNldGVsIEE1MTEsIDE1ODgtMQotCQkJCVNlY2hvIFNlb3VsIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtMDQgICAoaGV4KQkJU2lncHJvCi0wMDE2MDQgICAgIChiYXNlIDE2KQkJU2lncHJvCi0JCQkJNjU1IFcgRXZlbHluIFNUCi0JCQkJU3VpdGUgMgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTA1ICAgKGhleCkJCVlPUktWSUxMRSBTT1VORCBJTkMuCi0wMDE2MDUgICAgIChiYXNlIDE2KQkJWU9SS1ZJTExFIFNPVU5EIElOQy4KLQkJCQk0NjI1IFdJVE1FUiBJTkRVU1RSSUFMIEVTVEFURQotCQkJCU5JQUdBUkEgRkFMTFMgTlkgMTQzMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTA2ICAgKGhleCkJCUlkZWFsIEluZHVzdHJpZXMKLTAwMTYwNiAgICAgKGJhc2UgMTYpCQlJZGVhbCBJbmR1c3RyaWVzCi0JCQkJOTE0NSBCYWxib2EgQXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0wNyAgIChoZXgpCQlDdXJ2ZXMgSW50ZXJuYXRpb25hbCBJbmMuCi0wMDE2MDcgICAgIChiYXNlIDE2KQkJQ3VydmVzIEludGVybmF0aW9uYWwgSW5jLgotCQkJCTEwMCBSaXRjaGllIFJvYWQKLQkJCQlXYWNvIFRleGFzIDc2NzEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0wOCAgIChoZXgpCQlTZXF1YW5zIENvbW11bmljYXRpb25zCi0wMDE2MDggICAgIChiYXNlIDE2KQkJU2VxdWFucyBDb21tdW5pY2F0aW9ucwotCQkJCTE5IExlIFBhcnZpcyBkZSBsYSBEZWZlbnNlCi0JCQkJQmF0aW1lbnQgQ2l0aUNlbnRlcgotCQkJCVBBUklTIExBIERFRkVOU0UgQ0VERVggOTIwNzMKLQkJCQlGUkFOQ0UKLQotMDAtMTYtMDkgICAoaGV4KQkJVW5pdGVjaCBlbGVjdHJvbmljcyBjby4sIGx0ZC4KLTAwMTYwOSAgICAgKGJhc2UgMTYpCQlVbml0ZWNoIGVsZWN0cm9uaWNzIGNvLiwgbHRkLgotCQkJCTVGLE5vLjEzNixMYW5lIDIzNSAsUGFvLWNoaWFvIFJkLiwKLQkJCQlIc2luLVRpZW4gY2l0eSBUYWlwZWkgSHNpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi0wQSAgIChoZXgpCQlTV0VFWCBFdXJvcGUgQlYKLTAwMTYwQSAgICAgKGJhc2UgMTYpCQlTV0VFWCBFdXJvcGUgQlYKLQkJCQlBbXBlcmV3ZWcgMwotCQkJCURlbGZ0IFp1aWQtSG9sbGFuZCAyNjI3IEJHCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTYtMEIgICAoaGV4KQkJVFZXb3JrcyBMTEMKLTAwMTYwQiAgICAgKGJhc2UgMTYpCQlUVldvcmtzIExMQwotCQkJCVR3byBCZWx2ZWRlcmUgUGxhY2UsICMyMDAKLQkJCQlNaWxsIFZhbGxleSBDQSA5NDk0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMEMgICAoaGV4KQkJTFBMICBERVZFTE9QTUVOVCBTLkEuIERFIEMuVgotMDAxNjBDICAgICAoYmFzZSAxNikJCUxQTCAgREVWRUxPUE1FTlQgUy5BLiBERSBDLlYKLQkJCQlMQUdPIEdJTkVCUkEgMzgwIFAzCi0JCQkJQ09MLiBGUkFOQ0lTQ08gSSBNQURFUk8KLQkJCQlELkYuIDExNDgwCi0JCQkJTUVYSUNPCi0KLTAwLTE2LTBEICAgKGhleCkJCUJlIEhlcmUgQ29ycG9yYXRpb24KLTAwMTYwRCAgICAgKGJhc2UgMTYpCQlCZSBIZXJlIENvcnBvcmF0aW9uCi0JCQkJMzkzMDAgQ2l2aWMgQ2VudGVyIERyLiwgU3VpdGUgMTgwCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMEUgICAoaGV4KQkJT3B0aWNhIFRlY2hub2xvZ2llcyBJbmMuCi0wMDE2MEUgICAgIChiYXNlIDE2KQkJT3B0aWNhIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMjA1MSBEb2d3b29kIFN0cmVldAotCQkJCVN1aXRlIDIxMAotCQkJCUxvdWlzdmlsbGUgQ08gODAwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTBGICAgKGhleCkJCUJBREdFUiBNRVRFUiBJTkMKLTAwMTYwRiAgICAgKGJhc2UgMTYpCQlCQURHRVIgTUVURVIgSU5DCi0JCQkJNDU0NSBXIEJST1dOIERFRVIgUkQKLQkJCQlNSUxXQVVLRUUgV0kgNTMyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTEwICAgKGhleCkJCUNhcmluYSBUZWNobm9sb2d5Ci0wMDE2MTAgICAgIChiYXNlIDE2KQkJQ2FyaW5hIFRlY2hub2xvZ3kKLQkJCQk2OTBBIERpc2NvdmVyeSBEcml2ZQotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTExICAgKGhleCkJCUFsdGVjb24gU3JsCi0wMDE2MTEgICAgIChiYXNlIDE2KQkJQWx0ZWNvbiBTcmwKLQkJCQlWaWEgRi5sbGkgQ2Fpcm9saSwgMTcKLQkJCQlMaXNzb25lIE1pbGFubyAyMDAzNQotCQkJCUlUQUxZCi0KLTAwLTE2LTEyICAgKGhleCkJCU90c3VrYSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMTYxMiAgICAgKGJhc2UgMTYpCQlPdHN1a2EgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJMS0xMCBTYXNhZ2Fva2EsIE1pbmFrdWNoaQotCQkJCWtvdWthIHNoaWdhIDUyOC0wMDYxCi0JCQkJSkFQQU4KLQotMDAtMTYtMTMgICAoaGV4KQkJTGlicmVTdHJlYW0gVGVjaG5vbG9naWVzIEluYy4KLTAwMTYxMyAgICAgKGJhc2UgMTYpCQlMaWJyZVN0cmVhbSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTg5NSBXYXZlcmxleSBTdHJlZXQKLQkJCQlTdWl0ZSAxMTAKLQkJCQlXaW5uaXBlZyBNYW5pdG9iYSBSM1QgNVA0Ci0JCQkJQ0FOQURBCi0KLTAwLTE2LTE0ICAgKGhleCkJCVBpY29zZWNvbmQgUHVsc2UgTGFicwotMDAxNjE0ICAgICAoYmFzZSAxNikJCVBpY29zZWNvbmQgUHVsc2UgTGFicwotCQkJCTI1MDAgNTV0aCBTdHJlZXQKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0xNSAgIChoZXgpCQlOaXR0YW4gQ29tcGFueSwgTGltaXRlZAotMDAxNjE1ICAgICAoYmFzZSAxNikJCU5pdHRhbiBDb21wYW55LCBMaW1pdGVkCi0JCQkJMTEtNiwgMS1jaG9tZSwgSGF0YWdheWEKLQkJCQlTaGlidXlhLWt1IFRva3lvIDE1MS04NTM1Ci0JCQkJSkFQQU4KLQotMDAtMTYtMTYgICAoaGV4KQkJQlJPV0FOIENPTU1VTklDQVRJT04gSU5DLgotMDAxNjE2ICAgICAoYmFzZSAxNikJCUJST1dBTiBDT01NVU5JQ0FUSU9OIElOQy4KLQkJCQlOby4xIEplbi1BaSBSb2FkLCBIc2luQ2h1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlIdUtvdSBIc2lhbmcgSHNpbkNodSBIc2llbiAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTE3ICAgKGhleCkJCU1TSQotMDAxNjE3ICAgICAoYmFzZSAxNikJCU1TSQotCQkJCU5vLjY5LCBMaS1EZSBTdCwgSnVuZy1IbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTE4ICAgKGhleCkJCUhJVklPTiBDby4sIEx0ZC4KLTAwMTYxOCAgICAgKGJhc2UgMTYpCQlISVZJT04gQ28uLCBMdGQuCi0JCQkJMkYuLCBBa3l1bmcgQmxkZy4sIDU0LTEwLCBNdW5qZW9uZy1kb25nLAotCQkJCVNvbmdwYS1HdSBTZW91bCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtMTkgICAoaGV4KQkJTGEgRmFjdG9yaWEgZGUgQ29tdW5pY2FjaW9uZXMgQXBsaWNhZGFzLFMuTC4KLTAwMTYxOSAgICAgKGJhc2UgMTYpCQlMYSBGYWN0b3JpYSBkZSBDb211bmljYWNpb25lcyBBcGxpY2FkYXMsUy5MLgotCQkJCUMvQWdyaWN1bHR1cmEsMTExCi0JCQkJVGVycmFzc2EgQmFyY2Vsb25hIDA4MjIzCi0JCQkJU1BBSU4KLQotMDAtMTYtMUEgICAoaGV4KQkJRGFtZXRyaWMgQUIKLTAwMTYxQSAgICAgKGJhc2UgMTYpCQlEYW1ldHJpYyBBQgotCQkJCUJveCAxMjAKLQkJCQlTa2FyaG9sbWVuIFN0b2NraG9sbSBTRS0xMjcyMwotCQkJCVNXRURFTgotCi0wMC0xNi0xQiAgIChoZXgpCQlNaWNyb25ldCBDb3Jwb3JhdGlvbgotMDAxNjFCICAgICAoYmFzZSAxNikJCU1pY3JvbmV0IENvcnBvcmF0aW9uCi0JCQkJMTc4OC0zODggTm9tdXJhIEhpcm9va2EKLQkJCQlTaGlvamlyaS1zaGkgTmFnYW5vLWtlbiAzOTktMDcwMgotCQkJCUpBUEFOCi0KLTAwLTE2LTFDICAgKGhleCkJCWU6Y3VlCi0wMDE2MUMgICAgIChiYXNlIDE2KQkJZTpjdWUKLQkJCQlGcmllZHJpY2gtTGlzdC1TdHJhc3NlIDIzCi0JCQkJUGFkZXJib3JuICAzMzEwMAotCQkJCUdFUk1BTlkKLQotMDAtMTYtMUQgICAoaGV4KQkJSW5ub3ZhdGl2ZSBXaXJlbGVzcyBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTYxRCAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aXZlIFdpcmVsZXNzIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwNDcgVmlzdGEgUGFyayBEci4KLQkJCQlTdWl0ZSBBCi0JCQkJRm9yZXN0IFZBIDI0NTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0xRSAgIChoZXgpCQlXb29qaW5uZXQKLTAwMTYxRSAgICAgKGJhc2UgMTYpCQlXb29qaW5uZXQKLQkJCQkyOTIgb3NhbiBkb25ndGFuCi0JCQkJaHdhc2Vvbmcga3lvbmdnaSA0NDUtODEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTFGICAgKGhleCkJCVNVTldBVkVURUMgQ28uLCBMdGQuCi0wMDE2MUYgICAgIChiYXNlIDE2KQkJU1VOV0FWRVRFQyBDby4sIEx0ZC4KLQkJCQkjODIzLCBLd2FueWFuZy1kb25nLCBEb25nYW4ta3UKLQkJCQlBbnlhbmctc2kgS3l1bmdraS1kbyA0MzEtMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTIwICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDE2MjAgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMTYtMjEgICAoaGV4KQkJQ29sb3JhZG8gVm5ldAotMDAxNjIxICAgICAoYmFzZSAxNikJCUNvbG9yYWRvIFZuZXQKLQkJCQkyNTUgRS4gNnRoIFN0LgotCQkJCUxvdmVsYW5kIENPIDgwNTM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0yMiAgIChoZXgpCQlCQkggU1lTVEVNUyBHTUJICi0wMDE2MjIgICAgIChiYXNlIDE2KQkJQkJIIFNZU1RFTVMgR01CSAotCQkJCUJvdHRnZXJzdHJhc3NlIDQwCi0JCQkJV2VpZGVuIGkuZC5PUGYuIEJheWVybiA5MjYzNwotCQkJCUdFUk1BTlkKLQotMDAtMTYtMjMgICAoaGV4KQkJSW50ZXJ2YWwgTWVkaWEKLTAwMTYyMyAgICAgKGJhc2UgMTYpCQlJbnRlcnZhbCBNZWRpYQotCQkJCTMyMDAgQXNoIFN0cmVldAotCQkJCVBhbG8gQWx0byBDQSA5NDMwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMjQgICAoaGV4KQkJVGVuZXJvcywgSW5jLgotMDAxNjI0ICAgICAoYmFzZSAxNikJCVRlbmVyb3MsIEluYy4KLQkJCQkyMTUgQ2FzdHJvIFN0LgotCQkJCTNyZCBGbG9vcgotCQkJCU10LiBWaWV3IENBIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0yNSAgIChoZXgpCQlJbXBpbmosIEluYy4KLTAwMTYyNSAgICAgKGJhc2UgMTYpCQlJbXBpbmosIEluYy4KLQkJCQk3MDEgTi4gMzR0aCBTdHJlZXQKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTZWF0dGxlIFdBIDk4MTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0yNiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxNjI2ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMjcgICAoaGV4KQkJZW1iZWRkZWQtbG9naWMgREVTSUdOIEFORCBNT1JFIEdtYkgKLTAwMTYyNyAgICAgKGJhc2UgMTYpCQllbWJlZGRlZC1sb2dpYyBERVNJR04gQU5EIE1PUkUgR21iSAotCQkJCUhhbnNlc3RyYXNzZSAyNAotCQkJCU11ZW5zdGVyIE5SVyA0ODE1MwotCQkJCUdFUk1BTlkKLQotMDAtMTYtMjggICAoaGV4KQkJVWx0cmEgRWxlY3Ryb25pY3MgTWFudWZhY3R1cmluZyBhbmQgQ2FyZCBTeXN0ZW1zCi0wMDE2MjggICAgIChiYXNlIDE2KQkJVWx0cmEgRWxlY3Ryb25pY3MgTWFudWZhY3R1cmluZyBhbmQgQ2FyZCBTeXN0ZW1zCi0JCQkJSGFtcHNoaXJlIFJvYWQKLQkJCQlHcmFuYnkgRXN0YXRlCi0JCQkJV2V5bW91dGggRG9yc2V0IERUNCA5WEQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNi0yOSAgIChoZXgpCQlOaXZ1cyBHbWJICi0wMDE2MjkgICAgIChiYXNlIDE2KQkJTml2dXMgR21iSAotCQkJCUltIFRhbGUgMgotCQkJCUVwcGluZ2VuIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3NTAzMQotCQkJCUdFUk1BTlkKLQotMDAtMTYtMkEgICAoaGV4KQkJQW50aWsgY29tcHV0ZXJzICYgY29tbXVuaWNhdGlvbnMgcy5yLm8uCi0wMDE2MkEgICAgIChiYXNlIDE2KQkJQW50aWsgY29tcHV0ZXJzICYgY29tbXVuaWNhdGlvbnMgcy5yLm8uCi0JCQkJUmF6dXNvdmEgMgotCQkJCUtvc2ljZSBTSyBTSy0wNDAwMQotCQkJCVNMT1ZBS0lBCi0KLTAwLTE2LTJCICAgKGhleCkJCVRvZ2FtaSBFbGVjdHJpYyBNZmcuY28uLEx0ZC4KLTAwMTYyQiAgICAgKGJhc2UgMTYpCQlUb2dhbWkgRWxlY3RyaWMgTWZnLmNvLixMdGQuCi0JCQkJMS0xIE9odGFrYXJhLUtpdGFtYWNoaQotCQkJCVNhZ2EuUFJGIDg0MC0wODAyCi0JCQkJSkFQQU4KLQotMDAtMTYtMkMgICAoaGV4KQkJWGFuYm9vCi0wMDE2MkMgICAgIChiYXNlIDE2KQkJWGFuYm9vCi0JCQkJMTE1IFdlc3QgMzB0aCwgNnRoIEZsCi0JCQkJTmV3IFlvcmsgTlkgMTAwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTJEICAgKGhleCkJCVNUTmV0IENvLiwgTHRkLgotMDAxNjJEICAgICAoYmFzZSAxNikJCVNUTmV0IENvLiwgTHRkLgotCQkJCVNoaW4td2hhIEJ1aWxkaW5nIDRGLCA5NTQtMjUKLQkJCQlLd2FueWFuZy1kb25nLCBEb25nYW4tZ3UKLQkJCQlBbnlhbmctc2kgS3l1bmdraS1kbyAgNDMxLTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi0yRSAgIChoZXgpCQlTcGFjZSBTaHV0dGxlIEhpLVRlY2ggQ28uLCBMdGQuCi0wMDE2MkUgICAgIChiYXNlIDE2KQkJU3BhY2UgU2h1dHRsZSBIaS1UZWNoIENvLiwgTHRkLgotCQkJCU5vLiAyMjYsIFd1LUhvIFN0LiwgV3UtTHVuZyBWaWxsYWdlLAotCQkJCUNoaXVuZy1MaW4gSHNpYW5nLAotCQkJCUhzaW5jaHUgSHNpZW4gIDMwNwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtMkYgICAoaGV4KQkJR2V1dGVicnVjayBHbWJICi0wMDE2MkYgICAgIChiYXNlIDE2KQkJR2V1dGVicnVjayBHbWJICi0JCQkJSW0gTmFzc2VuIDctOQotCQkJCVdpbmRoYWdlbiAgNTM1NzgKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LTMwICAgKGhleCkJCVZhdGl2IFRlY2hub2xvZ2llcwotMDAxNjMwICAgICAoYmFzZSAxNikJCVZhdGl2IFRlY2hub2xvZ2llcwotCQkJCTkzMzkgR2VuZXNlZSBBdmVudWUKLQkJCQlTdWl0ZSAxMzAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTMxICAgKGhleCkJCVh0ZWFtCi0wMDE2MzEgICAgIChiYXNlIDE2KQkJWHRlYW0KLQkJCQlyb29tIDgwMSwgTm8uMTAyIGludGVybmF0aW9uYWwgU2NpZW5jZSAmIFRlY2hvbG9neSBQYXJrCi0JCQkJTm8uMiBTaGFuZ0RpIEluZm8gUm9hZCwgSGFpRGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgODYxMAotCQkJCUNISU5BCi0KLTAwLTE2LTMyICAgKGhleCkJCVNBTVNVTkcgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDE2MzIgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQk0MTYsIE1FVEFOLTNET05HLAotCQkJCVlPVU5HVE9ORy1HVQotCQkJCVNVV09OIEtZVU5HS0ktRE8gNDQyLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi0zMyAgIChoZXgpCQlPeGZvcmQgRGlhZ25vc3RpY3MgTHRkLgotMDAxNjMzICAgICAoYmFzZSAxNikJCU94Zm9yZCBEaWFnbm9zdGljcyBMdGQuCi0JCQkJU2FuZHlicmFlCi0JCQkJV2hpdGViYXJuIERyLCBCb2FycyBIaWxsCi0JCQkJT3hmb3JkIE94b24uIE9YMSA1SEoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNi0zNCAgIChoZXgpCQlNYXRodGVjaCwgSW5jLgotMDAxNjM0ICAgICAoYmFzZSAxNikJCU1hdGh0ZWNoLCBJbmMuCi0JCQkJNjQwMiBBcmxpbmd0b24gQmx2ZC4sCi0JCQkJU3VpdGUgMTIwMAotCQkJCUZhbGxzIENodXJjaCBWaXJnaW5pYSAyMjA0Mi0yMzU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0zNSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMTYzNSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OSBTb3V0aAotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMzYgICAoaGV4KQkJUXVhbnRhIENvbXB1dGVyIEluYy4KLTAwMTYzNiAgICAgKGJhc2UgMTYpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotCQkJCU5vLiAyMTEsIFdlbiBId2EgMlJkLiwgS3VlaSBTaGFuIEhzaWFuZwotCQkJCVRhbyBZdWFuIFNoaWVuICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTM3ICAgKGhleCkJCUNpdGVsIFNybAotMDAxNjM3ICAgICAoYmFzZSAxNikJCUNpdGVsIFNybAotCQkJCVZpYSBMLiBHLiBDb2x1bWVsbGEsIDM2Ci0JCQkJTWlsYW4gTUkgMjAxMjgKLQkJCQlJVEFMWQotCi0wMC0xNi0zOCAgIChoZXgpCQlURUNPTSBDby4sIEx0ZC4KLTAwMTYzOCAgICAgKGJhc2UgMTYpCQlURUNPTSBDby4sIEx0ZC4KLQkJCQkyMyBSJkQgUm9hZCAyIFNjaWVuY2UgQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtMzkgICAoaGV4KQkJVUJJUVVBTSBDby4sTHRkCi0wMDE2MzkgICAgIChiYXNlIDE2KQkJVUJJUVVBTSBDby4sTHRkCi0JCQkJVGVjaG5vdmlsbCA0RiwyNzItMyBZYXRhcDMKLQkJCQlCdW5kYW5nCi0JCQkJU2VvbmduYW0gS3llb25nZ2kgNDYzLTgzNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi0zQSAgIChoZXgpCQlZVkVTIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDE2M0EgICAgIChiYXNlIDE2KQkJWVZFUyBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCU5vLjc0LCBGdXNpbmcgMm5kIFJkLgotCQkJCUd1ZWlzaGFuIFRhb3l1YW4gMzMzNzcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTNCICAgKGhleCkJCVZlcnRleFJTSS9HZW5lcmFsIER5bmFtaWNzCi0wMDE2M0IgICAgIChiYXNlIDE2KQkJVmVydGV4UlNJL0dlbmVyYWwgRHluYW1pY3MKLQkJCQkyMTIwIE9sZCBHYXRlc2J1cmcgUmQuCi0JCQkJU3RhdGUgY29sbGVnZSBQQSAxNjgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtM0MgICAoaGV4KQkJUmVib3ggQi5WLgotMDAxNjNDICAgICAoYmFzZSAxNikJCVJlYm94IEIuVi4KLQkJCQlIZW5kcmlrIEZpZ2Vld2VnIDFYCi0JCQkJSGFhcmxlbSBOb29yZC1Ib2xsYW5kIDIwMzEgQkoKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNi0zRCAgIChoZXgpCQlUc2luZ2h1YSBUb25nZmFuZyBMZWdlbmQgU2lsaWNvbiBUZWNoLiBDby4sIEx0ZC4KLTAwMTYzRCAgICAgKGJhc2UgMTYpCQlUc2luZ2h1YSBUb25nZmFuZyBMZWdlbmQgU2lsaWNvbiBUZWNoLiBDby4sIEx0ZC4KLQkJCQkyNkYgVFNJTkdIVUEgVE9OR0ZBTkcgSEktVEVDSCBQTEFaQQotCQkJCUJFSUpJTkcgIDEwMDA4MwotCQkJCUNISU5BCi0KLTAwLTE2LTNFICAgKGhleCkJCVhlbnNvdXJjZSwgSW5jLgotMDAxNjNFICAgICAoYmFzZSAxNikJCVhlbnNvdXJjZSwgSW5jLgotCQkJCTIzMDAgR2VuZyBSZC4KLQkJCQlTdWl0ZSAyNTAKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTNGICAgKGhleCkJCUNSZVRFIFNZU1RFTVMgSW5jLgotMDAxNjNGICAgICAoYmFzZSAxNikJCUNSZVRFIFNZU1RFTVMgSW5jLgotCQkJCTdGLE5vLjI1MCxTZWMuMyxQZWkgU2hlbiBSZC4sU2hlbiBLZW5nIEhzaWFuZwotCQkJCVRhaXBlaSBDb3VudHkgIDIyMjA0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi00MCAgIChoZXgpCQlBc21vYmlsZSBDb21tdW5pY2F0aW9uIEluYy4KLTAwMTY0MCAgICAgKGJhc2UgMTYpCQlBc21vYmlsZSBDb21tdW5pY2F0aW9uIEluYy4KLQkJCQlOby4xMSBMYW5lIDEyMCwgTGktVGUgUmQuLCBQZWl0b3UgMTEyLCBUYWlwZWksIFRhaXdhbiwgUi5PLkMKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNDEgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDE2NDEgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSwgU0VDLjEsVEFJUElORyBSRC4gCi0JCQkJVFNBT1RVRU4gTkFOVE9VIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi00MiAgIChoZXgpCQlQYW5nb2xpbgotMDAxNjQyICAgICAoYmFzZSAxNikJCVBhbmdvbGluCi0JCQkJOTUwMSBTYXRlbGxpdGUgQm91bGV2YXJkLCBTdWl0ZSAxMDkKLQkJCQlPcmxhbmRvIEZMIDMyODM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi00MyAgIChoZXgpCQlTdW5oaWxsbyBDb3Jwb3JhdGlvbgotMDAxNjQzICAgICAoYmFzZSAxNikJCVN1bmhpbGxvIENvcnBvcmF0aW9uCi0JCQkJNDQ0IEtlbGxleSBEcml2ZQotCQkJCVdlc3QgQmVybGluIE5ldyBKZXJzZXkgMDgwOTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTQ0ICAgKGhleCkJCUxJVEUtT04gVGVjaG5vbG9neSBDb3JwLgotMDAxNjQ0ICAgICAoYmFzZSAxNikJCUxJVEUtT04gVGVjaG5vbG9neSBDb3JwLgotCQkJCTE4RiwgTm8uMzkyLCBSdWV5IEt1YW5nIFJvYWQsIE5pZWh1LAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi00NSAgIChoZXgpCQlQb3dlciBEaXN0cmlidXRpb24sIEluYy4KLTAwMTY0NSAgICAgKGJhc2UgMTYpCQlQb3dlciBEaXN0cmlidXRpb24sIEluYy4KLQkJCQk0MjAwIE9ha2xleXMgQ3QuCi0JCQkJUmljaG1vbmQgVkEgMjMyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTQ2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTY0NiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTQ3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTY0NyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTQ4ICAgKGhleCkJCVNTRCBDb21wYW55IExpbWl0ZWQKLTAwMTY0OCAgICAgKGJhc2UgMTYpCQlTU0QgQ29tcGFueSBMaW1pdGVkCi0JCQkJMy0zLTQgSGlnYXNoaXlhZ3VyYQotCQkJCUt1c2F0c3UtY2l0eSBTaGlnYSA1MjUtMDA1NAotCQkJCUpBUEFOCi0KLTAwLTE2LTQ5ICAgKGhleCkJCVNldE9uZSBHbWJICi0wMDE2NDkgICAgIChiYXNlIDE2KQkJU2V0T25lIEdtYkgKLQkJCQlIZWdlbmhlaW1lciBTdHIuIDIKLQkJCQlXZWlsIGFtIFJoZWluIEJhZGVuIFd1ZXJ0ZW1iZXJnIEQtNzk1NzYKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LTRBICAgKGhleCkJCVZpYnJhdGlvbiBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMTY0QSAgICAgKGJhc2UgMTYpCQlWaWJyYXRpb24gVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJVmlidGVjaCBIb3VzZSwgQ2VudHJhbCBCb3VsZXZhcmQKLQkJCQlDZW50cmFsIFBhcmsKLQkJCQlMYXJiZXJ0IFNjb3RsYW5kIEZLNSA0UlUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNi00QiAgIChoZXgpCQlRdW9yaW9uIERhdGEgU3lzdGVtcyBHbWJICi0wMDE2NEIgICAgIChiYXNlIDE2KQkJUXVvcmlvbiBEYXRhIFN5c3RlbXMgR21iSAotCQkJCUFuIGRlciBLbGluZ2UgNgotCQkJCUVyZnVydCBUaHVyaW5naWEgOTkxOTUKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LTRDICAgKGhleCkJCVBMQU5FVCBJTlQgQ28uLCBMdGQKLTAwMTY0QyAgICAgKGJhc2UgMTYpCQlQTEFORVQgSU5UIENvLiwgTHRkCi0JCQkJOHRoIEZsb29yLCBTYWV1bSBCL0QsIDEzNjEtNQotCQkJCVNlb2Noby1Eb25nLCBTZW9jaG8tS3UKLQkJCQlTZW91bCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi00RCAgIChoZXgpCQlBbGNhdGVsIE5vcnRoIEFtZXJpY2EgSVAgRGl2aXNpb24KLTAwMTY0RCAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIE5vcnRoIEFtZXJpY2EgSVAgRGl2aXNpb24KLQkJCQk3MDEgRS4gTWlkZGxlZmllbGQgUkQuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNEUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTY0RSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTYtNEYgICAoaGV4KQkJV29ybGQgRXRobmljIEJyb2FkY2FzdGluIEluYy4KLTAwMTY0RiAgICAgKGJhc2UgMTYpCQlXb3JsZCBFdGhuaWMgQnJvYWRjYXN0aW4gSW5jLgotCQkJCTUwIENhbGlmb3JuaWEgU3RyZWV0LCBTdWl0ZSAxNTAwCi0JCQkJU2FuIEZyYW5jaXNjbyBDYWxpZm9ybmlhIDk0MTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi01MCAgIChoZXgpCQlIZXJsZXkgR2VuZXJhbCBNaWNyb3dhdmUgSXNyYWVsLiAKLTAwMTY1MCAgICAgKGJhc2UgMTYpCQlIZXJsZXkgR2VuZXJhbCBNaWNyb3dhdmUgSXNyYWVsLiAKLQkJCQlLSUJCVVRaIEVZQUwKLQkJCQlELk4uIEhBU0hBUk9OIEhBVElDSE9OCi0JCQkJNDU4NDAKLQkJCQlJU1JBRUwKLQotMDAtMTYtNTEgICAoaGV4KQkJRXhlbyBTeXN0ZW1zCi0wMDE2NTEgICAgIChiYXNlIDE2KQkJRXhlbyBTeXN0ZW1zCi0JCQkJMTY1MCwgcnVlIE1pY2hlbGluLCBzdWl0ZSAyMDEKLQkJCQlMYXZhbCBRdWViZWMgSDdMIDRSMwotCQkJCUNBTkFEQQotCi0wMC0xNi01MiAgIChoZXgpCQlIb2F0ZWNoIFRlY2hub2xvZ2llcywgSW5jLgotMDAxNjUyICAgICAoYmFzZSAxNikJCUhvYXRlY2ggVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMUYuLCBOby4yMjQsIEd1b3NoZW5nIFN0LgotCQkJCVpodWJlaSBIc2luQ2h1IEhzaWVuIDMwMjQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi01MyAgIChoZXgpCQlMRUdPIFN5c3RlbSBBL1MgSUUgRWxlY3Ryb25pY3MgRGl2aXNpb24KLTAwMTY1MyAgICAgKGJhc2UgMTYpCQlMRUdPIFN5c3RlbSBBL1MgSUUgRWxlY3Ryb25pY3MgRGl2aXNpb24KLQkJCQlBYXN0dmVqIDEKLQkJCQlCaWxsdW5kIEtvbW11bmUgNzE5MAotCQkJCURFTk1BUksKLQotMDAtMTYtNTQgICAoaGV4KQkJRmxleC1QIEluZHVzdHJpZXMgU2RuLiBCaGQuCi0wMDE2NTQgICAgIChiYXNlIDE2KQkJRmxleC1QIEluZHVzdHJpZXMgU2RuLiBCaGQuCi0JCQkJTm8uMTI4LTEyLTIsIE1lbmFyYSBVTU5PLAotCQkJCUphbGFuIE1hY2FsaXN0ZXIsCi0JCQkJR2VvcmdldG93biBQZW5hbmcgMTA0MDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xNi01NSAgIChoZXgpCQlGVUhPIFRFQ0hOT0xPR1kgQ28uLCBMVEQKLTAwMTY1NSAgICAgKGJhc2UgMTYpCQlGVUhPIFRFQ0hOT0xPR1kgQ28uLCBMVEQKLQkJCQlOby4gMzAsIExhbmUgNzI2LCBKaW5tYSBSZCwgU2VjLiAzCi0JCQkJQ2hhbmcgSHVhIFRhaXdhIDUwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNTYgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDE2NTYgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTYtNTcgICAoaGV4KQkJQWVnYXRlIEx0ZAotMDAxNjU3ICAgICAoYmFzZSAxNikJCUFlZ2F0ZSBMdGQKLQkJCQlUZWNobm9sb2d5IENlbnRyZQotCQkJCU1lbGJvdXJuIEhlcnRmb3Jkc2hpcmUgU0c4IDZEUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE2LTU4ICAgKGhleCkJCUZ1c2lvbnRlY2ggVGVjaG5vbG9naWVzIEluYy4KLTAwMTY1OCAgICAgKGJhc2UgMTYpCQlGdXNpb250ZWNoIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNkYsIE5vLjc4LCBDaGVuZyBLdW5nIFJkLiwgU2VjLiAxLAotCQkJCU5hbiBLYW5nCi0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTU5ICAgKGhleCkJCVouTS5QLiBSQURXQUcKLTAwMTY1OSAgICAgKGJhc2UgMTYpCQlaLk0uUC4gUkFEV0FHCi0JCQkJQnJhY2thIDI4IHN0cmVldAotCQkJCVJBRE9NIE1hem93aWVja2llIDI2LTYwMAotCQkJCVBPTEFORAotCi0wMC0xNi01QSAgIChoZXgpCQlIYXJtYW4gU3BlY2lhbHR5IEdyb3VwCi0wMDE2NUEgICAgIChiYXNlIDE2KQkJSGFybWFuIFNwZWNpYWx0eSBHcm91cAotCQkJCTMgT2FrIFBhcmsgRHJpdmUKLQkJCQlCZWRmb3JkIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi01QiAgIChoZXgpCQlHcmlwIEF1ZGlvCi0wMDE2NUIgICAgIChiYXNlIDE2KQkJR3JpcCBBdWRpbwotCQkJCTYzNDUgVy4gTG91aXNlIERyaXZlCi0JCQkJR2xlbmRhbGUgQXJpem9uYSA4NTMxMC00MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi01QyAgIChoZXgpCQlUcmFja2Zsb3cgTHRkCi0wMDE2NUMgICAgIChiYXNlIDE2KQkJVHJhY2tmbG93IEx0ZAotCQkJCTE2Ny0xNjkgS2Vuc2luZ3RvbiBIaWdoIFN0cmVldAotCQkJCUxvbmRvbiBFbmdsYW5kIFc4NlNICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtNUQgICAoaGV4KQkJQWlyRGVmZW5zZSwgSW5jLgotMDAxNjVEICAgICAoYmFzZSAxNikJCUFpckRlZmVuc2UsIEluYy4KLQkJCQk0ODAwIE5vcnRoIFBvaW50IFBrd3kKLQkJCQlTdGUgMTAwCi0JCQkJQWxwaGFyZXR0YSBHQSAzMDAyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNUUgICAoaGV4KQkJUHJlY2lzaW9uIEkvTwotMDAxNjVFICAgICAoYmFzZSAxNikJCVByZWNpc2lvbiBJL08KLQkJCQk0MDA1IE1pcmFuZGEgQXZlLiwgU3VpdGUgMjEwCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA0LTEyMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTVGICAgKGhleCkJCUZhaXJtb3VudCBBdXRvbWF0aW9uCi0wMDE2NUYgICAgIChiYXNlIDE2KQkJRmFpcm1vdW50IEF1dG9tYXRpb24KLQkJCQk0NjIxIFdlc3QgQ2hlc3RlciBQaWtlCi0JCQkJTmV3dG93biBTcXVhcmUgUEEgMTkwNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTYwICAgKGhleCkJCU5vcnRlbAotMDAxNjYwICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE2LTYxICAgKGhleCkJCU5vdmF0aXVtIFNvbHV0aW9ucyAoUCkgTHRkCi0wMDE2NjEgICAgIChiYXNlIDE2KQkJTm92YXRpdW0gU29sdXRpb25zIChQKSBMdGQKLQkJCQkzcmQgRmxvb3IsIFRlbXBsZSBUb3dlcnMsICM2NzIKLQkJCQlBbm5hIFNhbGFpLCBOYW5kYW5hbSwKLQkJCQlDaGVubmFpIFRhbWlsIE5hZHUgNjAwMDM1Ci0JCQkJSU5ESUEKLQotMDAtMTYtNjIgICAoaGV4KQkJTGl5dWggVGVjaG5vbG9neSBMdGQuCi0wMDE2NjIgICAgIChiYXNlIDE2KQkJTGl5dWggVGVjaG5vbG9neSBMdGQuCi0JCQkJN0YtMSwgTm8uIDkyLCBTZWMuIDEsIEhlaSBIdSBSZC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNjMgICAoaGV4KQkJS0JUIE1vYmlsZQotMDAxNjYzICAgICAoYmFzZSAxNikJCUtCVCBNb2JpbGUKLQkJCQk0RiwgUG9sYXJpcyBJLCAxNS0zLCBKZW9uZ2phLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSwgR3llb25nZ2ktZG8gNDYzLTgxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi02NCAgIChoZXgpCQlQcm9kLUVsIFNwQQotMDAxNjY0ICAgICAoYmFzZSAxNikJCVByb2QtRWwgU3BBCi0JCQkJVmlhIFBhbG1hbm92YSAxODUKLQkJCQlNaWxhbm8gTUkgMjAxMzIKLQkJCQlJVEFMWQotCi0wMC0xNi02NSAgIChoZXgpCQlDZWxsb24gRnJhbmNlCi0wMDE2NjUgICAgIChiYXNlIDE2KQkJQ2VsbG9uIEZyYW5jZQotCQkJCVJvdXRlIGQnQW5nZXJzIExlIE1hbnMgY2VkZXggOQotCQkJCUxlIE1hbnMgU2FydGhlIDcyMDgxCi0JCQkJRlJBTkNFCi0KLTAwLTE2LTY2ICAgKGhleCkJCVF1YW50aWVyIENvbW11bmljYXRpb24gSW5jLgotMDAxNjY2ICAgICAoYmFzZSAxNikJCVF1YW50aWVyIENvbW11bmljYXRpb24gSW5jLgotCQkJCTFGLCBOby4gMzYsIEluZHVzdHJ5IEUuIFJkIElWLAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBwYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNjcgICAoaGV4KQkJQS1URUMgU3Vic3lzdGVtIElOQy4KLTAwMTY2NyAgICAgKGJhc2UgMTYpCQlBLVRFQyBTdWJzeXN0ZW0gSU5DLgotCQkJCTRGLCBOby4gODYsIENodW5nLUhzaW5nIFJvYWQsIFNoaWpyIENpdHksCi0JCQkJVGFpcGVpIENvdW50eQotCQkJCTIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNjggICAoaGV4KQkJRWlzaGluIEVsZWN0cm9uaWNzCi0wMDE2NjggICAgIChiYXNlIDE2KQkJRWlzaGluIEVsZWN0cm9uaWNzCi0JCQkJTmlzaGlrdSBNaXlhc2hpdGEgMS0xOQotCQkJCUtvYmUgQ2l0eSBIeW9nbyBQcmVmZWN0dXJlIDY1MS0yMTQ2Ci0JCQkJSkFQQU4KLQotMDAtMTYtNjkgICAoaGV4KQkJTVJWIENvbW11bmljYXRpb24gKE5ldHdvcmtzKSBMVEQKLTAwMTY2OSAgICAgKGJhc2UgMTYpCQlNUlYgQ29tbXVuaWNhdGlvbiAoTmV0d29ya3MpIExURAotCQkJCVAuTyBCb3ggNjE0Ci0JCQkJWW9rbmVhbSAgMjA2OTIKLQkJCQlJU1JBRUwKLQotMDAtMTYtNkEgICAoaGV4KQkJVFBTCi0wMDE2NkEgICAgIChiYXNlIDE2KQkJVFBTCi0JCQkJMTQ1IHF1YWkgZGUgU3RhbGluZ3JhZAotCQkJCUlzc3kgTGVzIE1vdWxpbmVhdXggSWxlIGRlIEZyYW5jZSA5MjEzNwotCQkJCUZSQU5DRQotCi0wMC0xNi02QiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0wMDE2NkIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCTQxNixNYWV0YW4tM0RvbmcsWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24tQ2l0eSBLeWVvbmdnaS1EbyA0NDMtNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTZDICAgKGhleCkJCVNhbXN1bmcgRWxlY3RvbmljcyBEaWdpdGFsIFZpZGVvIFN5c3RlbSBEaXZpc2lvbgotMDAxNjZDICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3RvbmljcyBEaWdpdGFsIFZpZGVvIFN5c3RlbSBEaXZpc2lvbgotCQkJCTQxNiwgTWFldGFuLTNEb25nLFllb25ndG9uZy1HdQotCQkJCVN1d29uIEd5ZW9uZ2dpLURvIDQ0My03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtNkQgICAoaGV4KQkJWXVsb25nIENvbXB1dGVyIFRlbGVjb21tdW5pY2F0aW9uIFNjaWVudGlmaWMoc2hlbnpoZW4pQ28uLEx0Ci0wMDE2NkQgICAgIChiYXNlIDE2KQkJWXVsb25nIENvbXB1dGVyIFRlbGVjb21tdW5pY2F0aW9uIFNjaWVudGlmaWMoc2hlbnpoZW4pQ28uLEx0Ci0JCQkJOC9GLmhpZ2ggVGVjaCBQbGF6YSxUaWFuQW4gQ3liZXJwYXJrLENoZWdvbmdtaWFvCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTE2LTZFICAgKGhleCkJCUFyYml0cm9uIEluYy4KLTAwMTY2RSAgICAgKGJhc2UgMTYpCQlBcmJpdHJvbiBJbmMuCi0JCQkJOTcwNSBQYXR1eGVudCBXb29kcyBEcml2ZQotCQkJCUNvbHVtYmlhIE1EIDIxMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi02RiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxNjZGICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEpsbiBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE2LTcwICAgKGhleCkJCVNLTkVUIENvcnBvcmF0aW9uCi0wMDE2NzAgICAgIChiYXNlIDE2KQkJU0tORVQgQ29ycG9yYXRpb24KLQkJCQlGb250YW5hIFNoaW55b2tvaGFtYQotCQkJCVNoaW55b2tvaGFtYSAyLDE3LDIga29ob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0xNi03MSAgIChoZXgpCQlTeW1waG94IEluZm9ybWF0aW9uIENvLgotMDAxNjcxICAgICAoYmFzZSAxNikJCVN5bXBob3ggSW5mb3JtYXRpb24gQ28uCi0JCQkJMTVGLCBOby4gNTEsIFNlYy4gMywgTWluc2hlbmcgRS4gUm9hZAotCQkJCVRhaXBlaSBDaXR5ICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTcyICAgKGhleCkJCVplbndheSBlbnRlcnByaXNlIGx0ZAotMDAxNjcyICAgICAoYmFzZSAxNikJCVplbndheSBlbnRlcnByaXNlIGx0ZAotCQkJCTZGLiwgTm8uMjAsIExhbmUgMTUwLCBKaG9uZ3NpbmcgUmQuLCBTaWpoaWggQ2l0eQotCQkJCVRhaXBlaSAgODg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi03MyAgIChoZXgpCQlCdXJ5IEdtYkggJiBDby4gS0cKLTAwMTY3MyAgICAgKGJhc2UgMTYpCQlCdXJ5IEdtYkggJiBDby4gS0cKLQkJCQlSb2JlcnQtS29jaC1TdHIuIDEtNwotCQkJCUxvZWhuZSBHZXJtYW55IDMyNTg0Ci0JCQkJR0VSTUFOWQotCi0wMC0xNi03NCAgIChoZXgpCQlFdXJvQ0IgKFBoaWxzLiksIEluYy4KLTAwMTY3NCAgICAgKGJhc2UgMTYpCQlFdXJvQ0IgKFBoaWxzLiksIEluYy4KLQkJCQlTRkIgTm8uMgotCQkJCU1hY3RhbiBFY29ub21pYyBab25lIC0gSQotCQkJCUxhcHVsYXB1IENpdHkgQ2VidSA2MDE1Ci0JCQkJUEhJTElQUElORVMKLQotMDAtMTYtNzUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDE2NzUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4gVVMgSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElsbGlub2lzIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi03NiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxNjc2ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEpsbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTYtNzcgICAoaGV4KQkJQmlobCtXaWVkZW1hbm4gR21iSAotMDAxNjc3ICAgICAoYmFzZSAxNikJCUJpaGwrV2llZGVtYW5uIEdtYkgKLQkJCQlGbG9zc3dvZXJ0aHN0ci4gNDEKLQkJCQlNYW5uaGVpbSBCYWRlbiBXdXJ0ZW1iZXJnIDY4MTk5Ci0JCQkJR0VSTUFOWQotCi0wMC0xNi03OCAgIChoZXgpCQlTSEVOWkhFTiBCQU9BTiBHQU9LRSBFTEVDVFJPTklDUyBDTy4sIExURAotMDAxNjc4ICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIEJBT0FOIEdBT0tFIEVMRUNUUk9OSUNTIENPLiwgTFRECi0JCQkJR0FPS0UgSU5EVVNUUklBTCBQQVJLLCBOTy44IFRBTkdLRU5HIFJPQUQsIFNISVlBTiBUT1dOCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODEwOAotCQkJCUNISU5BCi0KLTAwLTE2LTc5ICAgKGhleCkJCWVPbiBDb21tdW5pY2F0aW9ucwotMDAxNjc5ICAgICAoYmFzZSAxNikJCWVPbiBDb21tdW5pY2F0aW9ucwotCQkJCTQxMDUgUm95YWwgRHJpdmUsIFN1aXRlIDEwMAotCQkJCUtlbm5lc2F3IEdlb3JnaWEgMzAxNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTdBICAgKGhleCkJCVNreXdvcnRoIE92ZXJzZWFzIER2ZWxvcG1lbnQgTHRkLgotMDAxNjdBICAgICAoYmFzZSAxNikJCVNreXdvcnRoIE92ZXJzZWFzIER2ZWxvcG1lbnQgTHRkLgotCQkJCVJvb20gMTUwNS0wNixXZXN0bGFuZHMgQ2VudHJlCi0JCQkJMjAgV2VzdGxhbmRzIFJvYWQsIFF1YXJyeSBCYXksCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE2LTdCICAgKGhleCkJCUhhdmVyJkJvZWNrZXIKLTAwMTY3QiAgICAgKGJhc2UgMTYpCQlIYXZlciZCb2Vja2VyCi0JCQkJQ2FybC1IYXZlci1QbGF0eiAzCi0JCQkJT2VsZGUgTlJXIDU5MzAyCi0JCQkJR0VSTUFOWQotCi0wMC0xNi03QyAgIChoZXgpCQlpUmV4IFRlY2hub2xvZ2llcyBCVgotMDAxNjdDICAgICAoYmFzZSAxNikJCWlSZXggVGVjaG5vbG9naWVzIEJWCi0JCQkJSGlnaFRlY2ggQ2FtcHVzCi0JCQkJQnVpbGRpbmcgNDYsIHJvb20gcC0wMDUKLQkJCQlFaW5kaG92ZW4gQnJhYmFudCA1NjU2QUUKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNi03RCAgIChoZXgpCQlTa3ktTGluZSBJbmZvcm1hdGlvbiBDby4sIEx0ZC4KLTAwMTY3RCAgICAgKGJhc2UgMTYpCQlTa3ktTGluZSBJbmZvcm1hdGlvbiBDby4sIEx0ZC4KLQkJCQk4Ri4sTm8uMzgsU2loeXVhbiBSZC4sCi0JCQkJU2luaWh1YW5nIFRhaXBlaSAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTdFICAgKGhleCkJCURJQk9TUy5DTy4sTFRECi0wMDE2N0UgICAgIChiYXNlIDE2KQkJRElCT1NTLkNPLixMVEQKLQkJCQkxMjYtMSwgR29uZ2Rhbi1kb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTkwMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi03RiAgIChoZXgpCQlCbHVlYmlyZCBTb2Z0IEluYy4KLTAwMTY3RiAgICAgKGJhc2UgMTYpCQlCbHVlYmlyZCBTb2Z0IEluYy4KLQkJCQk1NjItMjEgR2FuZ25hbS1ndSwKLQkJCQlTZW91bCAgMTM1LTg5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi04MCAgIChoZXgpCQlCYWxseSBHYW1pbmcgKyBTeXN0ZW1zCi0wMDE2ODAgICAgIChiYXNlIDE2KQkJQmFsbHkgR2FtaW5nICsgU3lzdGVtcwotCQkJCTk1MCBTYW5kaGlsbCBSb2FkCi0JCQkJUmVubyBOViA4OTUyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtODEgICAoaGV4KQkJVmVjdG9yIEluZm9ybWF0aWsgR21iSAotMDAxNjgxICAgICAoYmFzZSAxNikJCVZlY3RvciBJbmZvcm1hdGlrIEdtYkgKLQkJCQlJbmdlcnNoZWltZXIgU3RyLiAyNAotCQkJCVN0dXR0Z2FydCBCYWRlbi1XdWVydHRlbWJlcmcgNzA0OTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LTgyICAgKGhleCkJCVBybyBEZXgsIEluYwotMDAxNjgyICAgICAoYmFzZSAxNikJCVBybyBEZXgsIEluYwotCQkJCTE4MDAgTlcgMTY5dGggUGxhY2UKLQkJCQlDMTAwCi0JCQkJQmVhdmVydG9uIE9yZWdvbiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtODMgICAoaGV4KQkJV0VCSU8gSW50ZXJuYXRpb25hbCBDby4sLkx0ZC4KLTAwMTY4MyAgICAgKGJhc2UgMTYpCQlXRUJJTyBJbnRlcm5hdGlvbmFsIENvLiwuTHRkLgotCQkJCTIxRi4sTm8uMTcxIFNvbmdkZSBSZC4sU2lueWkgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExMDg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi04NCAgIChoZXgpCQlEb25qaW4gQ28uLEx0ZC4KLTAwMTY4NCAgICAgKGJhc2UgMTYpCQlEb25qaW4gQ28uLEx0ZC4KLQkJCQkyMUYsQ2FuZ3NvbmcgQnVpbGRpbmcsVGFpcmFuLEZ1dGlhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0xNi04NSAgIChoZXgpCQlFbGlzYSBPeWoKLTAwMTY4NSAgICAgKGJhc2UgMTYpCQlFbGlzYSBPeWoKLQkJCQlFbGVrdHJvbmlpa2thdGllIDQKLQkJCQk5MDU3MCBPdWx1IAotCQkJCUZJTkxBTkQKLQotMDAtMTYtODYgICAoaGV4KQkJS2FybCBTdG9yeiBJbWFnaW5nCi0wMDE2ODYgICAgIChiYXNlIDE2KQkJS2FybCBTdG9yeiBJbWFnaW5nCi0JCQkJMTc1IENyZW1vbmEgRHIuCi0JCQkJR29sZXRhIENBIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi04NyAgIChoZXgpCQlDaHViYiBDU0MtVmVuZG9yIEFQCi0wMDE2ODcgICAgIChiYXNlIDE2KQkJQ2h1YmIgQ1NDLVZlbmRvciBBUAotCQkJCU90dGF3YSBTVE4KLQkJCQlQLk8uIEJPWCA5ODMyCi0JCQkJT3R0YXdhICBLMUcgNlc2Ci0JCQkJQ0FOQURBCi0KLTAwLTE2LTg4ICAgKGhleCkJCVNlcnZlckVuZ2luZXMgTExDCi0wMDE2ODggICAgIChiYXNlIDE2KQkJU2VydmVyRW5naW5lcyBMTEMKLQkJCQkyMDkgTi4gRmFpciBPYWtzIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtODkgICAoaGV4KQkJUGlsa29yIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0wMDE2ODkgICAgIChiYXNlIDE2KQkJUGlsa29yIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJMzgxLFdvbmNodW4tRG9uZyxZZW91bmd0b25nLUd1Ci0JCQkJU3V3b24gS3l1bmcgS2ktRG8gNDQyLTM4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi04QSAgIChoZXgpCQlpZC1Db25maXJtIEluYwotMDAxNjhBICAgICAoYmFzZSAxNikJCWlkLUNvbmZpcm0gSW5jCi0JCQkJMTgwMCBCb3VsZGVyIFN0Ci0JCQkJU3VpdGUgNDAwCi0JCQkJRGVudmVyIENPIDgwMjExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi04QiAgIChoZXgpCQlQYXJhbGFuIENvcnBvcmF0aW9uCi0wMDE2OEIgICAgIChiYXNlIDE2KQkJUGFyYWxhbiBDb3Jwb3JhdGlvbgotCQkJCTQ2NTUgUnVmZm5lciBTdC4KLQkJCQlTYW4gRGllZ28gQ0EgOTIxMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LThDICAgKGhleCkJCURTTCBQYXJ0bmVyIEFTCi0wMDE2OEMgICAgIChiYXNlIDE2KQkJRFNMIFBhcnRuZXIgQVMKLQkJCQlIYXZyZXZlaWVuIDQ5Ci0JCQkJT3NsbyAgMDY4MAotCQkJCU5PUldBWQotCi0wMC0xNi04RCAgIChoZXgpCQlLT1JXSU4gQ08uLCBMdGQuCi0wMDE2OEQgICAgIChiYXNlIDE2KQkJS09SV0lOIENPLiwgTHRkLgotCQkJCTNyZCBGbG9vciwgSGFuYSBCbGRnLCAxMjMtNyBOb25oeXVuLWRvbmcKLQkJCQlLYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtOEUgICAoaGV4KQkJVmltaWNybyBjb3Jwb3JhdGlvbgotMDAxNjhFICAgICAoYmFzZSAxNikJCVZpbWljcm8gY29ycG9yYXRpb24KLQkJCQkxNS9GLFNoaW5pbmcgVG93ZXIsTm8uMzUseHVleXVhbgotCQkJCVJvYWQsSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4MwotCQkJCUNISU5BCi0KLTAwLTE2LThGICAgKGhleCkJCUdOIE5ldGNvbSBhcwotMDAxNjhGICAgICAoYmFzZSAxNikJCUdOIE5ldGNvbSBhcwotCQkJCU1ldGFsYnVlbiA2NgotCQkJCVAuTy5Cb3ggMjAxCi0JCQkJQmFsbGVydXAgU2tvdmx1bmRlIERLIC0gMjc1MAotCQkJCURFTk1BUksKLQotMDAtMTYtOTAgICAoaGV4KQkJSi1URUsgSU5DT1JQT1JBVElPTgotMDAxNjkwICAgICAoYmFzZSAxNikJCUotVEVLIElOQ09SUE9SQVRJT04KLQkJCQkyRi0xLCBOby4gODMsIFNlYy4gMiwgR29uZ0Rhb1d1IFJkLiwKLQkJCQlIc2luY2h1IENpdHkgIDMwMDcwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi05MSAgIChoZXgpCQlNb3Nlci1CYWVyIEFHCi0wMDE2OTEgICAgIChiYXNlIDE2KQkJTW9zZXItQmFlciBBRwotCQkJCVNwaXRhbHN0cmFzc2UgNwotCQkJCVN1bWlzd2FsZCBCRSAzNDU0Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTYtOTIgICAoaGV4KQkJU2NpZW50aWZpYy1BdGxhbnRhLCBJbmMuCi0wMDE2OTIgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYy1BdGxhbnRhLCBJbmMuCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCUFUTCAxLjMuNDczCi0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtOTMgICAoaGV4KQkJUG93ZXJMaW5rIFRlY2hub2xvZ3kgSW5jLgotMDAxNjkzICAgICAoYmFzZSAxNikJCVBvd2VyTGluayBUZWNobm9sb2d5IEluYy4KLQkJCQlOMC4gMTgsIEFsbGV5IDEsIExhbmUgMTUxLCBTZWMuIDEsIEpob25nc2luZyBSZC4sIFd1Z3UgVG93bnNoaXAKLQkJCQlUYWlwZWkgSHNpZW4gIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtOTQgICAoaGV4KQkJU2VubmhlaXNlciBDb21tdW5pY2F0aW9ucyBBL1MKLTAwMTY5NCAgICAgKGJhc2UgMTYpCQlTZW5uaGVpc2VyIENvbW11bmljYXRpb25zIEEvUwotCQkJCUxhbmdhZ2VyIDYKLQkJCQlTb2xyP2QgU3RyYW5kIENvcGVuaGFnZW4gMjY4MAotCQkJCURFTk1BUksKLQotMDAtMTYtOTUgICAoaGV4KQkJQVZDIFRlY2hub2xvZ3kgTGltaXRlZAotMDAxNjk1ICAgICAoYmFzZSAxNikJCUFWQyBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQk2L0YgRW50ZXJwcmlzZSBTcXVhcmUgSUlJCi0JCQkJMzkgV2FuZyBDaGl1IFJvYWQKLQkJCQlLb3dsb29uIEJheSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE2LTk2ICAgKGhleCkJCVFESSBUZWNobm9sb2d5IChILksuKSBMaW1pdGVkCi0wMDE2OTYgICAgIChiYXNlIDE2KQkJUURJIFRlY2hub2xvZ3kgKEguSy4pIExpbWl0ZWQKLQkJCQkxNi9GLCBTdGFuZGFyZCBDaGFydGVyZWQgQmFuayBCdWlsZGluZyA0LTRBCi0JCQkJRGVzIFZvZXV4IFJvYWQgQ2VudHJhbAotCQkJCUhvbmcgS29uZyAgCi0JCQkJQ0hJTkEKLQotMDAtMTYtOTcgICAoaGV4KQkJTkVDIENvcnBvcmF0aW9uCi0wMDE2OTcgICAgIChiYXNlIDE2KQkJTkVDIENvcnBvcmF0aW9uCi0JCQkJNy0xLCBTaGliYSA1LWNob21lIE1pbmF0by1rdSwKLQkJCQlUb2t5byAxMDgtODAwMQotCQkJCUpBUEFOCi0KLTAwLTE2LTk4ICAgKGhleCkJCVQmQSBNb2JpbGUgUGhvbmVzCi0wMDE2OTggICAgIChiYXNlIDE2KQkJVCZBIE1vYmlsZSBQaG9uZXMKLQkJCQk0L0YsIFNvdXRoIEJ1aWxkaW5nLE5vLjI5NjYsIEppbmtlIFJvYWQKLQkJCQlaaGFuZ2ppYW5nIEhpZ2gtVGVjayBQYXJrCi0JCQkJUHVkb25nIFNoYW5naGFpIDIwMTIwMwotCQkJCUNISU5BCi0KLTAwLTE2LTk5ICAgKGhleCkJCVRvbmljIERWQiBNYXJrZXRpbmcgTHRkCi0wMDE2OTkgICAgIChiYXNlIDE2KQkJVG9uaWMgRFZCIE1hcmtldGluZyBMdGQKLQkJCQlVbml0IEIsIDEwL0YsIFN1bW1pdCBCdWlsZGluZywKLQkJCQkzMCBNYW4gWXVlIFN0cmVldCwKLQkJCQlIdW5nIEhvbSBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0xNi05QSAgIChoZXgpCQlRdWFkcmljcyBMdGQKLTAwMTY5QSAgICAgKGJhc2UgMTYpCQlRdWFkcmljcyBMdGQKLQkJCQkxIEJyaWRld2VsbCBTdHJlZXQKLQkJCQlCcmlzdG9sICBCUzEgMkFBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtOUIgICAoaGV4KQkJQWxzdG9tIFRyYW5zcG9ydAotMDAxNjlCICAgICAoYmFzZSAxNikJCUFsc3RvbSBUcmFuc3BvcnQKLQkJCQkxMSwgMTMgYXZlbnVlIGRlIEJlbCBBaXIKLQkJCQlWaWxsZXVyYmFubmUgUmhvbmUgNjkxMDAKLQkJCQlGUkFOQ0UKLQotMDAtMTYtOUMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNjlDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtOUQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNjlEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtOUUgICAoaGV4KQkJVFYgT25lIEx0ZAotMDAxNjlFICAgICAoYmFzZSAxNikJCVRWIE9uZSBMdGQKLQkJCQlVbml0IFYgQ29udGluZW50YWwgQXBwcm9hY2gKLQkJCQlXZXN0d29vZCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCU1hcmdhdGUgS2VudCBDVDkgNEpHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtOUYgICAoaGV4KQkJVmltdHJvbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMTY5RiAgICAgKGJhc2UgMTYpCQlWaW10cm9uIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTdGLiwgTm8uOSwgQWxsZXkgMiwgTGFuZSAzNQotCQkJCUppaHUgUmQuCi0JCQkJTmVpaHUgRGlzdHJpY3QgVGFpcGVpIENpdHkgMTE0OTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUEwICAgKGhleCkJCUF1dG8tTWFza2luCi0wMDE2QTAgICAgIChiYXNlIDE2KQkJQXV0by1NYXNraW4KLQkJCQlTb3BoaWUgUmFkaWNocyBWZWkgNwotCQkJCUxJTExFU1RST00gQWtlcnNodXMgMjAwMwotCQkJCU5PUldBWQotCi0wMC0xNi1BMSAgIChoZXgpCQkzTGVhZiBOZXR3b3JrcwotMDAxNkExICAgICAoYmFzZSAxNikJCTNMZWFmIE5ldHdvcmtzCi0JCQkJMzI1NS0xIFNjb3R0IEJsdmQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQTIgICAoaGV4KQkJQ2VudHJhTGl0ZSBTeXN0ZW1zLCBJbmMuCi0wMDE2QTIgICAgIChiYXNlIDE2KQkJQ2VudHJhTGl0ZSBTeXN0ZW1zLCBJbmMuCi0JCQkJNjQyMCBXYWxsIFN0cmVldAotCQkJCU1vYmlsZSBBTCAzNjY5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQTMgICAoaGV4KQkJSW5nZXRlYW0gVHJhbnNtaXNzaW9uJkRpc3RyaWJ1dGlvbiwgUy5BLgotMDAxNkEzICAgICAoYmFzZSAxNikJCUluZ2V0ZWFtIFRyYW5zbWlzc2lvbiZEaXN0cmlidXRpb24sIFMuQS4KLQkJCQlDLyBVc2F1c3VhZ2EsIDcKLQkJCQlQb2wuIEFydHVuZHVhZ2EKLQkJCQlCYXNhdXJpIEJpemthaWEgNDg5NzAKLQkJCQlTUEFJTgotCi0wMC0xNi1BNCAgIChoZXgpCQlFenVyaW8gTHRkCi0wMDE2QTQgICAgIChiYXNlIDE2KQkJRXp1cmlvIEx0ZAotCQkJCVVuaXQgMgotCQkJCTEyNiBDb2xpbmRhbGUgQXZlbnVlCi0JCQkJTG9uZG9uICBOVzkgNUhECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtQTUgICAoaGV4KQkJVGFuZGJlcmcgU3RvcmFnZSBBU0EKLTAwMTZBNSAgICAgKGJhc2UgMTYpCQlUYW5kYmVyZyBTdG9yYWdlIEFTQQotCQkJCVBvc3Rib2tzIDE5MQotCQkJCTEzMjUgTHlzYWtlcgotCQkJCU5PUldBWQotCi0wMC0xNi1BNiAgIChoZXgpCQlEb3ZhZG8gRlotTExDCi0wMDE2QTYgICAgIChiYXNlIDE2KQkJRG92YWRvIEZaLUxMQwotCQkJCUFsLVRodXJheWEgVG93ZXIgMSwgb2ZmaWNlIDUwNAotCQkJCVAuTy4gQm94IDUwMDQyMgotCQkJCUR1YmFpICAKLQkJCQlVTklURUQgQVJBQiBFTUlSQVRFUwotCi0wMC0xNi1BNyAgIChoZXgpCQlBV0VUQSBHJlAKLTAwMTZBNyAgICAgKGJhc2UgMTYpCQlBV0VUQSBHJlAKLQkJCQlCdXJnLiBXaW5rZWxsYWFuIDMKLQkJCQlOb290ZG9ycCAgMjYzMSBIRwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE2LUE4ICAgKGhleCkJCUNXVCBDTy4sIExURC4KLTAwMTZBOCAgICAgKGJhc2UgMTYpCQlDV1QgQ08uLCBMVEQuCi0JCQkJMTBGIE5vLiA3NCBTZWMuIDEgQ2h1bmctSHVhIFJkLgotCQkJCVRhaXBlaSAgMTA4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1BOSAgIChoZXgpCQkyRUkKLTAwMTZBOSAgICAgKGJhc2UgMTYpCQkyRUkKLQkJCQlSdWEgZG9zIFJ1YmlzLCA3NyAtIEFzc3VtcGNhbwotCQkJCUFndWFzIGRlIExpbmRvaWEgU2FvIFBhdWxvIDEzOTQwLTAwMAotCQkJCUJSQVpJTAotCi0wMC0xNi1BQSAgIChoZXgpCQlLZWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEluYy4KLTAwMTZBQSAgICAgKGJhc2UgMTYpCQlLZWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEluYy4KLQkJCQk4LUJBTiBDSFVPVQotCQkJCUtPQkUgSFlPR08gNjUwLTAwMjQKLQkJCQlKQVBBTgotCi0wMC0xNi1BQiAgIChoZXgpCQlQQkktRGFuc2Vuc29yIEEvUwotMDAxNkFCICAgICAoYmFzZSAxNikJCVBCSS1EYW5zZW5zb3IgQS9TCi0JCQkJUm9lbm5lZGV2ZWogMTgKLQkJCQlSaW5nc3RlZCAgREstNDEwMAotCQkJCURFTk1BUksKLQotMDAtMTYtQUMgICAoaGV4KQkJVG9obyBUZWNobm9sb2d5IENvcnAuCi0wMDE2QUMgICAgIChiYXNlIDE2KQkJVG9obyBUZWNobm9sb2d5IENvcnAuCi0JCQkJSElHQVNISSA1LTEKLQkJCQlPUklaVVNISU1PTUFDSEkKLQkJCQlJTkFaQVdBLUNJVFkgQUlDSEkgNDkyLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xNi1BRCAgIChoZXgpCQlCVC1MaW5rcyBDb21wYW55IExpbWl0ZWQKLTAwMTZBRCAgICAgKGJhc2UgMTYpCQlCVC1MaW5rcyBDb21wYW55IExpbWl0ZWQKLQkJCQlSbSA4MDIsIE5hbiBGdW5nIENlbnRyZSwgMjY0LTI5OCBDYXN0bGUgUGVhayBSZAotCQkJCVRzdWVuIFdhbgotCQkJCUhPTkcgS09ORwotCi0wMC0xNi1BRSAgIChoZXgpCQlJTlZFTlRFTAotMDAxNkFFICAgICAoYmFzZSAxNikJCUlOVkVOVEVMCi0JCQkJMzUgcnVlIFRvdXJuZWZvcnQKLQkJCQlQQVJJUyAgNzUwMDUKLQkJCQlGUkFOQ0UKLQotMDAtMTYtQUYgICAoaGV4KQkJU2hlbnpoZW4gVW5pb24gTmV0d29ya3MgRXF1aXBtZW50IENvLixMdGQuCi0wMDE2QUYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gVW5pb24gTmV0d29ya3MgRXF1aXBtZW50IENvLixMdGQuCi0JCQkJWWloYWkgU3F1YXJlIGVhc3QgYnVpbGRpbmcgMjMwNywgQ2h1YW5neWUgcm9hZCwgTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTQKLQkJCQlDSElOQQotCi0wMC0xNi1CMCAgIChoZXgpCQlWSyBDb3Jwb3JhdGlvbgotMDAxNkIwICAgICAoYmFzZSAxNikJCVZLIENvcnBvcmF0aW9uCi0JCQkJVksgQi9ELCA1NDgtNiwgQW55YW5nIDhkb25nLCBNYW5hbi1ndQotCQkJCUFueWFuZyBLeW91bmdnaSA0MzAtODkwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi1CMSAgIChoZXgpCQlLQlMKLTAwMTZCMSAgICAgKGJhc2UgMTYpCQlLQlMKLQkJCQk4OCBydWUgUGllcnJlIFNlbWFyZAotCQkJCUJQIDU1Ci0JCQkJTW9pc3N5IGNlZGV4IElsZSBkZSBGcmFuY2UgNzc1NTIKLQkJCQlGUkFOQ0UKLQotMDAtMTYtQjIgICAoaGV4KQkJRHJpdmVDYW0gSW5jCi0wMDE2QjIgICAgIChiYXNlIDE2KQkJRHJpdmVDYW0gSW5jCi0JCQkJMzk1NCBNdXJwaHkgQ2FueW9uIFJvYWQKLQkJCQlTdWl0ZSBEMjA1Ci0JCQkJU2FuIERpZWdvIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1CMyAgIChoZXgpCQlQaG90b25pY2JyaWRnZXMgKENoaW5hKSBDby4sIEx0ZC4KLTAwMTZCMyAgICAgKGJhc2UgMTYpCQlQaG90b25pY2JyaWRnZXMgKENoaW5hKSBDby4sIEx0ZC4KLQkJCQlOby4gOTAwLCBZaXNoYW4gcm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMTYtQjQgICAoaGV4KQkJUFJJVkFURQotMDAxNkI0ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0xNi1CNSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxNkI1ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQjYgICAoaGV4KQkJQ2lzY28tTGlua3N5cwotMDAxNkI2ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMKLQkJCQkxMjEgVGhlb3J5Ci0JCQkJSXJ2aW5lIENBIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1CNyAgIChoZXgpCQlTZW91bCBDb21tdGVjaAotMDAxNkI3ICAgICAoYmFzZSAxNikJCVNlb3VsIENvbW10ZWNoCi0JCQkJNDQ4LTExLCBTZW9uZ25hZSAzZG9uZy4gR2FuZ2RvbmcgZ3UsCi0JCQkJU2VvdWwgIDEzNDAzMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi1COCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAxNkI4ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2thbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMTYtQjkgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZwotMDAxNkI5ICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkCi0JCQkJTVMgNTY2MgotCQkJCVJvc2V2aWxsZSBDQSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQkEgICAoaGV4KQkJV0VBVEhFUk5FV1MgSU5DLgotMDAxNkJBICAgICAoYmFzZSAxNikJCVdFQVRIRVJORVdTIElOQy4KLQkJCQlOQUtBU0UgMS0zIE1URwotCQkJCUNISUJBICAyNjItMDAzMgotCQkJCUpBUEFOCi0KLTAwLTE2LUJCICAgKGhleCkJCUxhdy1DaGFpbiBDb21wdXRlciBUZWNobm9sb2d5IENvIEx0ZAotMDAxNkJCICAgICAoYmFzZSAxNikJCUxhdy1DaGFpbiBDb21wdXRlciBUZWNobm9sb2d5IENvIEx0ZAotCQkJCTdGLTIsIDI4Ni00LCBoc2luIHlhIHJvYWQsIGNoaWVuIGNoZW4gZGlzdHJpY3QKLQkJCQlLYW9oc2l1bmcgIDgwNjczCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1CQyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxNkJDICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xNi1CRCAgIChoZXgpCQlBVEkgSW5kdXN0cmlhbCBBdXRvbWF0aW9uCi0wMDE2QkQgICAgIChiYXNlIDE2KQkJQVRJIEluZHVzdHJpYWwgQXV0b21hdGlvbgotCQkJCTEwMzEgR29vZHdvcnRoIERyaXZlCi0JCQkJQXBleCBOb3J0aCBDYXJvbGluYSAyNzUzOS0zODY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1CRSAgIChoZXgpCQlJTkZSQU5FVCwgSW5jLgotMDAxNkJFICAgICAoYmFzZSAxNikJCUlORlJBTkVULCBJbmMuCi0JCQkJOHRoIEZsb29yLCBDb3dlbGwgQi9ELCA2Ni0xCi0JCQkJQmFucG8tRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy0wNDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtQkYgICAoaGV4KQkJUGFsb0RFeCBHcm91cCBPeQotMDAxNkJGICAgICAoYmFzZSAxNikJCVBhbG9ERXggR3JvdXAgT3kKLQkJCQlQLk8uIEJveCA2NAotCQkJCU5haGtlbGFudGllIDE2MAotCQkJCVR1dXN1bGEgIDA0MzAxCi0JCQkJRklOTEFORAotCi0wMC0xNi1DMCAgIChoZXgpCQlTZW10ZWNoIENvcnBvcmF0aW9uCi0wMDE2QzAgICAgIChiYXNlIDE2KQkJU2VtdGVjaCBDb3Jwb3JhdGlvbgotCQkJCTIwMCBGbHlubiBSZAotCQkJCUNhbWFyaWxsbyBDYWxpZm9ybmlhIDkzMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DMSAgIChoZXgpCQlFbGVrc2VuIEx0ZAotMDAxNkMxICAgICAoYmFzZSAxNikJCUVsZWtzZW4gTHRkCi0JCQkJUGluZXdvb2QgU3R1ZGlvcwotCQkJCUl2ZXIgSGVhdGgKLQkJCQlJdmVyIEJ1Y2tzIFNMMCAwTkgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNi1DMiAgIChoZXgpCQlBdnRlYyBTeXN0ZW1zIEluYwotMDAxNkMyICAgICAoYmFzZSAxNikJCUF2dGVjIFN5c3RlbXMgSW5jCi0JCQkJMTQ0MzIgQWxiZW1hcmxlIFBvaW50IFBsYWNlCi0JCQkJQ2hhbnRpbGx5IFZpcmdpbmlhIDIwMTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DMyAgIChoZXgpCQlCQSBTeXN0ZW1zIEluYwotMDAxNkMzICAgICAoYmFzZSAxNikJCUJBIFN5c3RlbXMgSW5jCi0JCQkJNjg5NSBWaWEgRGVsIE9ybwotCQkJCVNhbiBKb3NlIENBIDk1MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DNCAgIChoZXgpCQlTaVJGIFRlY2hub2xvZ3ksIEluYy4KLTAwMTZDNCAgICAgKGJhc2UgMTYpCQlTaVJGIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyMTcgRGV2Y29uIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DNSAgIChoZXgpCQlTaGVuemhlbiBYaW5nIEZlbmcgSW5kdXN0cnkgQ28uLEx0ZAotMDAxNkM1ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFhpbmcgRmVuZyBJbmR1c3RyeSBDby4sTHRkCi0JCQkJRmxvb3IgMSAtIDQsIEJsb2NrIDI1LCBIb25ndGlhbiBKaW55dWFuIEluZHVzdHJpYWwsCi0JCQkJSG9uZ3RpYW4gUm9hZCBIdWFuZ3B1LCBTaGFqaW4sIEJhb2FuLAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA4NgotCQkJCUNISU5BCi0KLTAwLTE2LUM2ICAgKGhleCkJCU5vcnRoIEF0bGFudGljIEluZHVzdHJpZXMKLTAwMTZDNiAgICAgKGJhc2UgMTYpCQlOb3J0aCBBdGxhbnRpYyBJbmR1c3RyaWVzCi0JCQkJMTcwIFdpbGJ1ciBQbGFjZQotCQkJCUJvaGVtaWEgTlkgMTE3MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUM3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTZDNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUM4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTZDOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUM5ICAgKGhleCkJCU5BVCBTZWF0dGxlLCBJbmMuCi0wMDE2QzkgICAgIChiYXNlIDE2KQkJTkFUIFNlYXR0bGUsIEluYy4KLQkJCQkyMjEyNSAxN3RoIEF2ZSBTRQotCQkJCUJvdGhlbGwgV0EgOTgwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUNBICAgKGhleCkJCU5vcnRlbAotMDAxNkNBICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE2LUNCICAgKGhleCkJCUFwcGxlIENvbXB1dGVyCi0wMDE2Q0IgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIKLQkJCQkxIEluZmluaXRlIExvb3AgTVM6MzVHUE8KLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUNDICAgKGhleCkJCVhjdXRlIE1vYmlsZSBDb3JwLgotMDAxNkNDICAgICAoYmFzZSAxNikJCVhjdXRlIE1vYmlsZSBDb3JwLgotCQkJCTNGLiBOby4yNSwgQWxseTE1LCBMYW5lIDEyMCwgU2VjLjEsIE5laWh1IFJkLgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1DRCAgIChoZXgpCQlISUpJIEhJR0gtVEVDSCBDTy4sIExURC4KLTAwMTZDRCAgICAgKGJhc2UgMTYpCQlISUpJIEhJR0gtVEVDSCBDTy4sIExURC4KLQkJCQlPaGdhIDgxMzMKLQkJCQlIaWppCi0JCQkJSGF5YW1pIE9pdGEgODc5LTE1MDQKLQkJCQlKQVBBTgotCi0wMC0xNi1DRSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAxNkNFICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNjYsIENodW5nIFNoYW4gUmQuIFR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUNGICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0wMDE2Q0YgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC4gVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtRDAgICAoaGV4KQkJQVRlY2ggZWxla3Ryb25pa2EgZC5vLm8uCi0wMDE2RDAgICAgIChiYXNlIDE2KQkJQVRlY2ggZWxla3Ryb25pa2EgZC5vLm8uCi0JCQkJQmFjIHByaSBNYXRlcmlqaSAzMAotCQkJCU1hdGVyaWphIFNJIDYyNDIKLQkJCQlTTE9WRU5JQQotCi0wMC0xNi1EMSAgIChoZXgpCQlaQVQgYS5zLgotMDAxNkQxICAgICAoYmFzZSAxNikJCVpBVCBhLnMuCi0JCQkJSyBQb2RsZXNpIDU0MQotCQkJCVByaWJyYW0gVkkgIDI2MTgwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMTYtRDIgICAoaGV4KQkJQ2FzcGlhbgotMDAxNkQyICAgICAoYmFzZSAxNikJCUNhc3BpYW4KLQkJCQkxNzAgQmF5dGVjaCBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1EMyAgIChoZXgpCQlXaXN0cm9uIENvcnBvcmF0aW9uCi0wMDE2RDMgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotCQkJCTIxRiwgODgsIFNlYy4xLCBIc2luIFRhaSBXdSBSZC4sIEhzaWNoaWgsCi0JCQkJVGFpcGVpIEhzaWVuICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUQ0ICAgKGhleCkJCUNvbXBhbCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxNkQ0ICAgICAoYmFzZSAxNikJCUNvbXBhbCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTd0aCwgRkwsIE5vLiAzMTksIFNlYy4gNCwgUGEtVGVoIHJkLgotCQkJCVRhaXBlaSAgODg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1ENSAgIChoZXgpCQlTeW5jY29tIENvLiwgTHRkCi0wMDE2RDUgICAgIChiYXNlIDE2KQkJU3luY2NvbSBDby4sIEx0ZAotCQkJCSMzMDYgTXl1bmdpIGUtc3BhY2UgIDIxOC0yMAotCQkJCUFueWFuZzctZG9uZyBNYW5hbi1ndQotCQkJCUFueWFuZy1zaSBLeXVuZ2tpLWRvIDQzMC04MTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtRDYgICAoaGV4KQkJVERBIFRlY2ggUHR5IEx0ZAotMDAxNkQ2ICAgICAoYmFzZSAxNikJCVREQSBUZWNoIFB0eSBMdGQKLQkJCQkyMTAgLyA1NCBDdXJyaWUgU3RyZWV0Ci0JCQkJQWRlbGFpZGUgU291dGggQXVzdHJhbGlhIDUwMDAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTYtRDcgICAoaGV4KQkJU3Vud2F5cyBBRwotMDAxNkQ3ICAgICAoYmFzZSAxNikJCVN1bndheXMgQUcKLQkJCQlNYWNhaXJlc3RyLjMtNQotCQkJCUtvbnN0YW56IEJhZGVuIFd1cnR0ZW1iZXJnIDc4NDY3Ci0JCQkJR0VSTUFOWQotCi0wMC0xNi1EOCAgIChoZXgpCQlTZW5lYSBBQgotMDAxNkQ4ICAgICAoYmFzZSAxNikJCVNlbmVhIEFCCi0JCQkJRm9yZXRhZ3NhbGxlbiAxMgotCQkJCUFrZXJzYmVyZ2EgIDE4NDg0Ci0JCQkJU1dFREVOCi0KLTAwLTE2LUQ5ICAgKGhleCkJCU5JTkdCTyBCSVJEIENPLixMVEQuCi0wMDE2RDkgICAgIChiYXNlIDE2KQkJTklOR0JPIEJJUkQgQ08uLExURC4KLQkJCQlOby45OTkgRGFjaGVuZyBFYXN0IFJvYWQKLQkJCQlGZW5naHVhIFpoZWppYW5nIDMxNTUwMAotCQkJCUNISU5BCi0KLTAwLTE2LURBICAgKGhleCkJCUZ1dHJvbmljIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTAwMTZEQSAgICAgKGJhc2UgMTYpCQlGdXRyb25pYyBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJUm9vbSAxMDE2QSwgMTAvRi4sIFByb2ZpdCBJbmQuIEJsZGcuLAotCQkJCTEtMTUgS3dhaSBGdW5nIENyZXNjZW50LAotCQkJCUt3YWkgQ2h1bmcgIDAwMDAwCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE2LURCICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE2REIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWktQ2l0eSBHeWVvbmctQnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtREMgICAoaGV4KQkJQVJDSE9TCi0wMDE2REMgICAgIChiYXNlIDE2KQkJQVJDSE9TCi0JCQkJMTIgcnVlIEFNUEVSRQotCQkJCUlHTlkgRVNTT05ORVMgOTE0MzAKLQkJCQlGUkFOQ0UKLQotMDAtMTYtREQgICAoaGV4KQkJR2lnYWJlYW0gQ29ycG9yYXRpb24KLTAwMTZERCAgICAgKGJhc2UgMTYpCQlHaWdhYmVhbSBDb3Jwb3JhdGlvbgotCQkJCTQwNyBTcHJpbmdwYXJrIFBsYWNlCi0JCQkJU3RlIDkwMAotCQkJCUhlcm5kb24gVkEgMjAxNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LURFICAgKGhleCkJCUZBU1QgSW5jCi0wMDE2REUgICAgIChiYXNlIDE2KQkJRkFTVCBJbmMKLQkJCQk5MDUgSG9uZXlzcG90IFJkCi0JCQkJU3RyYXRmb3JkIENUIDA2NjE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1ERiAgIChoZXgpCQlMdW5kaW5vdmEgQUIKLTAwMTZERiAgICAgKGJhc2UgMTYpCQlMdW5kaW5vdmEgQUIKLQkJCQlEYWxieXZhZ2VuIDEKLQkJCQlMdW5kIFNrYWFuZSBTRS0yMjQgNjAKLQkJCQlTV0VERU4KLQotMDAtMTYtRTAgICAoaGV4KQkJM0NvbSBMdGQKLTAwMTZFMCAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cyBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtRTEgICAoaGV4KQkJU2lsaWNvblN0b3IsIEluYy4KLTAwMTZFMSAgICAgKGJhc2UgMTYpCQlTaWxpY29uU3RvciwgSW5jLgotCQkJCTQ4NDMwIExha2V2aWV3IEJsdmQuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRTIgICAoaGV4KQkJQW1lcmljYW4gRmliZXJ0ZWssIEluYy4KLTAwMTZFMiAgICAgKGJhc2UgMTYpCQlBbWVyaWNhbiBGaWJlcnRlaywgSW5jLgotCQkJCTEyMCBCZWxtb250IERyaXZlCi0JCQkJU29tZXJzZXQgTmV3IEplcnNleSAwODg3My0xMjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1FMyAgIChoZXgpCQlBU0tFWSBDT01QVVRFUiBDT1JQLgotMDAxNkUzICAgICAoYmFzZSAxNikJCUFTS0VZIENPTVBVVEVSIENPUlAuCi0JCQkJMTBGLCBOTy4xMTksIENISUVOS0FORyBSRC4sCi0JCQkJQ0hVTkctSE8sIFRBSVBFSSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1FNCAgIChoZXgpCQlWQU5HVUFSRCBTRUNVUklUWSBFTkdJTkVFUklORyBDT1JQLgotMDAxNkU0ICAgICAoYmFzZSAxNikJCVZBTkdVQVJEIFNFQ1VSSVRZIEVOR0lORUVSSU5HIENPUlAuCi0JCQkJMywgTEFORSAzMiwgS1NPIENISU5HIFJELgotCQkJCVlBTkdNRUkgVEFPWVVBTiAzMjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUU1ICAgKGhleCkJCUZPUkRMRVkgREVWRUxPUE1FTlQgTElNSVRFRAotMDAxNkU1ICAgICAoYmFzZSAxNikJCUZPUkRMRVkgREVWRUxPUE1FTlQgTElNSVRFRAotCQkJCVJPT00gNzA2LCA3VEggRkxPT1IsIFlVIFNVTkcgQk9PTiBCVUlMRElORywgMTA3LTExMSBERVMgVk9FVVggUk9BRCwgQ0VOVFJBTCwKLQkJCQlIT05HIEtPTkcKLQotMDAtMTYtRTYgICAoaGV4KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLTAwMTZFNiAgICAgKGJhc2UgMTYpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCVBpbi1KZW4gQ2l0eSwgVGFveXVhbgotCQkJCTMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtRTcgICAoaGV4KQkJRHluYW1peCBQcm9tb3Rpb25zIExpbWl0ZWQKLTAwMTZFNyAgICAgKGJhc2UgMTYpCQlEeW5hbWl4IFByb21vdGlvbnMgTGltaXRlZAotCQkJCTc4OC03OTAsIEZpbmNobGV5IFJvYWQKLQkJCQlMb25kb24gIE5XMTEgN1RKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtRTggICAoaGV4KQkJU2lnbWEgRGVzaWducywgSW5jLgotMDAxNkU4ICAgICAoYmFzZSAxNikJCVNpZ21hIERlc2lnbnMsIEluYy4KLQkJCQkxNzc4IE1jQ2FydGh5IEJsdmQuCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUU5ICAgKGhleCkJCVRpYmEgTWVkaWNhbCBJbmMKLTAwMTZFOSAgICAgKGJhc2UgMTYpCQlUaWJhIE1lZGljYWwgSW5jCi0JCQkJNTAyNCBMYWtld29vZCBEcml2ZQotCQkJCVBsYW5vIFRYIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1FQSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxNkVBICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggUGFyayAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsgS3VsaW0gMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xNi1FQiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxNkVCICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTYtRUMgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zIENvLiwgTHRkLgotMDAxNkVDICAgICAoYmFzZSAxNikJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcyBDby4sIEx0ZC4KLQkJCQlOby4gMjIsIEFsbGV5IDM4LCBMYW5lIDkxLCBTZWMuIDEsIE5laSBIdSBSb2FkLAotCQkJCVRhaXBlaSAgMTE0NDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUVEICAgKGhleCkJCURpZ2l0YWwgU2FmZXR5IFRlY2hub2xvZ2llcywgSW5jCi0wMDE2RUQgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBTYWZldHkgVGVjaG5vbG9naWVzLCBJbmMKLQkJCQk1MTEgRGF2aXMgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlNb3JyaXN2aWxsZSBOQyAyNzU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRUUgICAoaGV4KQkJUm95YWxEaWdpdGFsIEluYy4KLTAwMTZFRSAgICAgKGJhc2UgMTYpCQlSb3lhbERpZ2l0YWwgSW5jLgotCQkJCThGLiwgTm8uMzA4LCBTZWMuMSwgTmVpaHUgUmQuCi0JCQkJTmVpaHUgRGlzdHJpY3QsCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtRUYgICAoaGV4KQkJS29rbyBGaXRuZXNzLCBJbmMuCi0wMDE2RUYgICAgIChiYXNlIDE2KQkJS29rbyBGaXRuZXNzLCBJbmMuCi0JCQkJMTM2IExvbmd3YXRlciBEcml2ZQotCQkJCU5vcndlbGwgTUEgMDIwNjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUYwICAgKGhleCkJCURlbGwKLTAwMTZGMCAgICAgKGJhc2UgMTYpCQlEZWxsCi0JCQkJOTA5IEhlcm1vc2EgQ3QKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUYxICAgKGhleCkJCU9tbmlTZW5zZSwgTExDCi0wMDE2RjEgICAgIChiYXNlIDE2KQkJT21uaVNlbnNlLCBMTEMKLQkJCQkyIFJvYmluIERyaXZlCi0JCQkJTGFkeXMgSXNsYW5kIFNDIDI5OTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1GMiAgIChoZXgpCQlEbW9iaWxlIFN5c3RlbSBDby4sIEx0ZC4KLTAwMTZGMiAgICAgKGJhc2UgMTYpCQlEbW9iaWxlIFN5c3RlbSBDby4sIEx0ZC4KLQkJCQkyRiwgTm8uMTMtMjAsIFNlYy42LCBNaW5jeXVhbiBFLlJkLAotCQkJCU5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUYzICAgKGhleCkJCUNBU1QgSW5mb3JtYXRpb24gQ28uLCBMdGQKLTAwMTZGMyAgICAgKGJhc2UgMTYpCQlDQVNUIEluZm9ybWF0aW9uIENvLiwgTHRkCi0JCQkJNUYgTVNBIEJsZGcuIDg5MS00MyBEYWNjaGktRG9uZywKLQkJCQlnYW5nbmFtLUd1Ci0JCQkJU0VPVUwgIDEzNS0yODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtRjQgICAoaGV4KQkJRWlkaWNvbSBDby4sIEx0ZC4KLTAwMTZGNCAgICAgKGJhc2UgMTYpCQlFaWRpY29tIENvLiwgTHRkLgotCQkJCVBvbHljaGVtIEIvRCA0dGggRmxvb3IsIDkwMC0xCi0JCQkJS3dhbnlhbmctZG9uZywgRG9uZ2FuLWt1Ci0JCQkJQW55YW5nLXNpIEt5ZW9uZ2dpLWRvIDQzMS0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtRjUgICAoaGV4KQkJRGFsaWFuIEdvbGRlbiBIdWFsdSBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxNkY1ICAgICAoYmFzZSAxNikJCURhbGlhbiBHb2xkZW4gSHVhbHUgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4xIEh1YSBSb2FkLFFpeGlhbmxpbmcKLQkJCQlEYWxpYW4gTGlhb05pbmcgMTE2MDIzCi0JCQkJQ0hJTkEKLQotMDAtMTYtRjYgICAoaGV4KQkJVmlkZW8gUHJvZHVjdHMgR3JvdXAKLTAwMTZGNiAgICAgKGJhc2UgMTYpCQlWaWRlbyBQcm9kdWN0cyBHcm91cAotCQkJCTE2MDAgRW1lcnNvbiBBdmVudWUKLQkJCQlPeG5hcmQgQ2FsaWZvcm5pYSA5MzAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRjcgICAoaGV4KQkJTC0zIENvbW11bmljYXRpb25zLCBFbGVjdHJvZHluYW1pY3MsIEluYy4KLTAwMTZGNyAgICAgKGJhc2UgMTYpCQlMLTMgQ29tbXVuaWNhdGlvbnMsIEVsZWN0cm9keW5hbWljcywgSW5jLgotCQkJCTEyMDAgSGlja3MgUmQuCi0JCQkJUm9sbGluZyBNZWFkb3dzIElMIDYwMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1GOCAgIChoZXgpCQlBVklRVEVDSCBURUNITk9MT0dZIENPLiwgTFRELgotMDAxNkY4ICAgICAoYmFzZSAxNikJCUFWSVFURUNIIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJNkYgMTIsIExpLWhzaW4gUm9hZCwgU0JJUAotCQkJCUhzaW4tY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUY5ICAgKGhleCkJCUNFVFJUQSBQT1QsIGQuby5vLiwgS3JhbmoKLTAwMTZGOSAgICAgKGJhc2UgMTYpCQlDRVRSVEEgUE9ULCBkLm8uby4sIEtyYW5qCi0JCQkJUGxhbmluYSAzCi0JCQkJS3JhbmogU0kgNDAwMAotCQkJCVNMT1ZFTklBCi0KLTAwLTE2LUZBICAgKGhleCkJCUVDSSBUZWxlY29tIEx0ZC4KLTAwMTZGQSAgICAgKGJhc2UgMTYpCQlFQ0kgVGVsZWNvbSBMdGQuCi0JCQkJMzAgSGFzaXZpbSBTdC4KLQkJCQlQZXRhaCBUaWt2YSAgNDkxMzMKLQkJCQlJU1JBRUwKLQotMDAtMTYtRkIgICAoaGV4KQkJU0hFTlpIRU4gTVRDIENPLixMVEQuCi0wMDE2RkIgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gTVRDIENPLixMVEQuCi0JCQkJNS9GIEJlbll1YW4gQmxkZyw2MDE1IFNoZW5OYW4gUm9hZAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0xNi1GQyAgIChoZXgpCQlUT0hLRU4gQ08uLExURC4KLTAwMTZGQyAgICAgKGJhc2UgMTYpCQlUT0hLRU4gQ08uLExURC4KLQkJCQkyLTE2LTIwIFRhbWFnYXdhCi0JCQkJQ2hvZnUgVG9reW8gMTgyLTAwMjUKLQkJCQlKQVBBTgotCi0wMC0xNi1GRCAgIChoZXgpCQlKYXR5IEVsZWN0cm9uaWNzCi0wMDE2RkQgICAgIChiYXNlIDE2KQkJSmF0eSBFbGVjdHJvbmljcwotCQkJCUphdHkgQmxkZyAxMEYsIDE2NTktNSBCb25nY2h1bjExLURvbmcKLQkJCQlLd2FuYWstS3UKLQkJCQlTZW91bCAgMTUxLTgzMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi1GRSAgIChoZXgpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0wMDE2RkUgICAgIChiYXNlIDE2KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGksCi0JCQkJU29tYS1jaXR5LCBGdWt1c2hpbWEtcHJlZi4sIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTYtRkYgICAoaGV4KQkJV2FtaW4gT3B0b2NvbW0gTWZnIENvcnAKLTAwMTZGRiAgICAgKGJhc2UgMTYpCQlXYW1pbiBPcHRvY29tbSBNZmcgQ29ycAotCQkJCU5vLiAyMzkgUWlhb2hlIFJvYWQKLQkJCQlaaG9uZ2hlIENpdHkgVGFpcGVpIENvdW50eSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTAwICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE3MDAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVVMgSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0wMSAgIChoZXgpCQlLREUsIEluYy4KLTAwMTcwMSAgICAgKGJhc2UgMTYpCQlLREUsIEluYy4KLQkJCQlLREUgVE9XTiwgNDItNywgTWFuZ3dvbC1kb25nCi0JCQkJSGFuYW0gR3llb25nZ2ktZG8gNDY1LTE1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy0wMiAgIChoZXgpCQlPc3VuZyBNaWRpY29tIENvLiwgTHRkCi0wMDE3MDIgICAgIChiYXNlIDE2KQkJT3N1bmcgTWlkaWNvbSBDby4sIEx0ZAotCQkJCTIzMS0xOCwgRG9yaW0yLWRvbmcsCi0JCQkJU2VvdWwsIFlvdW5nZGV1bmdwby1ndSAxNTAtODMyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LTAzICAgKGhleCkJCU1PU0RBTiBJbnRlcm5hdGlvbiBDby4sTHRkCi0wMDE3MDMgICAgIChiYXNlIDE2KQkJTU9TREFOIEludGVybmF0aW9uIENvLixMdGQKLQkJCQlOby43NCBDaGVnZ3VuZyBTaGludHN1ZW4sU2hhbmh1YSBKZW4sCi0JCQkJVGFpbmFuICA3NDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTA0ICAgKGhleCkJCVNoaW5jbyBFbGVjdHJvbmljcyBHcm91cCBDby4sTHRkCi0wMDE3MDQgICAgIChiYXNlIDE2KQkJU2hpbmNvIEVsZWN0cm9uaWNzIEdyb3VwIENvLixMdGQKLQkJCQlOby41IFdhaWh1YW4gUm9hZAotCQkJCUNoYW5nemhvdSBKaWFuZ3N1IDIxMzAyMgotCQkJCUNISU5BCi0KLTAwLTE3LTA1ICAgKGhleCkJCU1ldGhvZGUgRWxlY3Ryb25pY3MKLTAwMTcwNSAgICAgKGJhc2UgMTYpCQlNZXRob2RlIEVsZWN0cm9uaWNzCi0JCQkJNzQwMSBXLiBXaWxzb24KLQkJCQlDaGljYWdvIElMIDYwNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0wNiAgIChoZXgpCQlUZWNoZmFpdGggV2lyZWxlc3MgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IExpbWl0ZWQuCi0wMDE3MDYgICAgIChiYXNlIDE2KQkJVGVjaGZhaXRoIFdpcmVsZXNzIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBMaW1pdGVkLgotCQkJCTIvRiBNOCBXZXN0IE5vLjEgSml1IFhpYW4gUWlhbyBEb25nIFJvYWQsCi0JCQkJQ2hhbyBZYW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDE2Ci0JCQkJQ0hJTkEKLQotMDAtMTctMDcgICAoaGV4KQkJSW5HcmlkLCBJbmMKLTAwMTcwNyAgICAgKGJhc2UgMTYpCQlJbkdyaWQsIEluYwotCQkJCTkyMCBDYXNzYXR0IFJkCi0JCQkJU3VpdGUgMjIwCi0JCQkJQmVyd3luIFBhIDE5MzEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0wOCAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMTcwOCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTA5ICAgKGhleCkJCUV4YWx0IENvbW11bmljYXRpb25zCi0wMDE3MDkgICAgIChiYXNlIDE2KQkJRXhhbHQgQ29tbXVuaWNhdGlvbnMKLQkJCQk1ODAgRGl2aXNpb24gU3RyZWV0Ci0JCQkJQ2FtcGJlbGwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTBBICAgKGhleCkJCUlORVcgRElHSVRBTCBDT01QQU5ZCi0wMDE3MEEgICAgIChiYXNlIDE2KQkJSU5FVyBESUdJVEFMIENPTVBBTlkKLQkJCQlTdXBwbHkgQnVyZWF1IDN0aCBmbG9vciBLVCZHIDIwMy0xLAotCQkJCVB5b25nIGNob24tZG9uZywgRGFlZGVvZwotCQkJCURhZWplb24gIDMwNi03MTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctMEIgICAoaGV4KQkJQ29udGVsYSwgSW5jLgotMDAxNzBCICAgICAoYmFzZSAxNikJCUNvbnRlbGEsIEluYy4KLQkJCQk2LTggU29vbmFlLWRvbmcsIEJ1bmRhbmctZ3UsCi0JCQkJNXRoIEZsb29yLCBLb3JlYSBGaXJzdCBCbGRnLiwKLQkJCQlTdW5nbmFtIEt5dW5nZ2ktZG8gNDYzLTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy0wQyAgIChoZXgpCQlUd2lnIENvbSBMdGQuIAotMDAxNzBDICAgICAoYmFzZSAxNikJCVR3aWcgQ29tIEx0ZC4gCi0JCQkJTWVyaW5paXR5bmthdHUgMTEKLQkJCQlTYWxvIDI0MDAKLQkJCQlGSU5MQU5ECi0KLTAwLTE3LTBEICAgKGhleCkJCUR1c3QgTmV0d29ya3MgSW5jLgotMDAxNzBEICAgICAoYmFzZSAxNikJCUR1c3QgTmV0d29ya3MgSW5jLgotCQkJCTMwNjk1IEh1bnR3b29kIEF2ZS4KLQkJCQlIYXl3YXJkIENhLiA5NDU0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMEUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNzBFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMEYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNzBGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMTAgICAoaGV4KQkJQ2FzYSBTeXN0ZW1zIEluYy4KLTAwMTcxMCAgICAgKGJhc2UgMTYpCQlDYXNhIFN5c3RlbXMgSW5jLgotCQkJCTEwLCBOZXcgRW5nbGFuZCBCdXNpbmVzcyBDZW50ZXIgRHIuCi0JCQkJU3VpdGUgMTEwCi0JCQkJQW5kb3ZlciBNQSAwMTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMTEgICAoaGV4KQkJR0UgSGVhbHRoY2FyZSBCaW8tU2NpZW5jZXMgQUIKLTAwMTcxMSAgICAgKGJhc2UgMTYpCQlHRSBIZWFsdGhjYXJlIEJpby1TY2llbmNlcyBBQgotCQkJCUJqb3JrZ2F0YW4gMzAKLQkJCQlVcHBzYWxhIFNFIDc1MTg0Ci0JCQkJU1dFREVOCi0KLTAwLTE3LTEyICAgKGhleCkJCUlTQ08gSW50ZXJuYXRpb25hbAotMDAxNzEyICAgICAoYmFzZSAxNikJCUlTQ08gSW50ZXJuYXRpb25hbAotCQkJCTEwMDEgQ2FtYnJpZGdlIERyaXZlCi0JCQkJRWxrIEdyb3ZlIFZpbGxhZ2UgSUwgNjAwMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTEzICAgKGhleCkJCVRpZ2VyIE5ldENvbQotMDAxNzEzICAgICAoYmFzZSAxNikJCVRpZ2VyIE5ldENvbQotCQkJCUotMTUgTXVkYW4gQ3VuLCBZaWppbmcgSHVheXVhbiwKLQkJCQlBaWd1byBSb2FkLCBMdW9odSBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAzCi0JCQkJQ0hJTkEKLQotMDAtMTctMTQgICAoaGV4KQkJQlIgQ29udHJvbHMgTmVkZXJsYW5kIGJ2Ci0wMDE3MTQgICAgIChiYXNlIDE2KQkJQlIgQ29udHJvbHMgTmVkZXJsYW5kIGJ2Ci0JCQkJQnJhbmRlcndlZyAxCi0JCQkJWndvbGxlIE92ZXJpanNzZWwgODA0MiBQRAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE3LTE1ICAgKGhleCkJCVFzdGlrCi0wMDE3MTUgICAgIChiYXNlIDE2KQkJUXN0aWsKLQkJCQlDYXJ0ZWwgQnVzaW5lc3MgRXN0YXRlCi0JCQkJRWRpbmJ1cmdoIFdheQotCQkJCUhhcmxvdyBFc3NleCBDTTIwIDJUVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE3LTE2ICAgKGhleCkJCVFubyBUZWNobm9sb2d5IEluYy4KLTAwMTcxNiAgICAgKGJhc2UgMTYpCQlRbm8gVGVjaG5vbG9neSBJbmMuCi0JCQkJNkYtMiwgTm8uMjUsIFB1ZGluZyBSb2FkCi0JCQkJSHNpbmNodSBUYWl3YW4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy0xNyAgIChoZXgpCQlMZWljYSBHZW9zeXN0ZW1zIEFHCi0wMDE3MTcgICAgIChiYXNlIDE2KQkJTGVpY2EgR2Vvc3lzdGVtcyBBRwotCQkJCUhlaW5yaWNoIFdpbGQgU3RyYXNzZQotCQkJCUhlZXJicnVnZyBTdC4gR2FsbGVuIENILTk0MzUKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNy0xOCAgIChoZXgpCQlWYW5zY28gRWxlY3Ryb25pY3MgT3kKLTAwMTcxOCAgICAgKGJhc2UgMTYpCQlWYW5zY28gRWxlY3Ryb25pY3MgT3kKLQkJCQlUaWlsZW5seW9qYW5rYXR1IDUKLQkJCQlGT1JTU0EgIDMwMTAxCi0JCQkJRklOTEFORAotCi0wMC0xNy0xOSAgIChoZXgpCQlBdWRpb0NvZGVzIFVTQSwgSW5jCi0wMDE3MTkgICAgIChiYXNlIDE2KQkJQXVkaW9Db2RlcyBVU0EsIEluYwotCQkJCTI3IFdvcmxkJ3MgRmFpciBEcml2ZQotCQkJCVNvbWVyc2V0IE5KIDA4ODczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0xQSAgIChoZXgpCQlXaW5lZ2FyZCBDb21wYW55Ci0wMDE3MUEgICAgIChiYXNlIDE2KQkJV2luZWdhcmQgQ29tcGFueQotCQkJCTMwMDAgS2lya3dvb2QgU3RyZWV0Ci0JCQkJQnVybGluZ3RvbiBJQSA1MjYwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMUIgICAoaGV4KQkJSW5ub3ZhdGlvbiBMYWIgQ29ycC4KLTAwMTcxQiAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aW9uIExhYiBDb3JwLgotCQkJCTEyRkwuLCBOby4gMjg1LCBTZWMuIDIsIFRpRGluZyBCbHZkLiwKLQkJCQlUYWlwZWkgIDExNDkzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy0xQyAgIChoZXgpCQlOVCBNaWNyb1N5c3RlbXMsIEluYy4KLTAwMTcxQyAgICAgKGJhc2UgMTYpCQlOVCBNaWNyb1N5c3RlbXMsIEluYy4KLQkJCQkxLTUtMy0yRiBUYW1hZ2F3YWRhaQotCQkJCVNldGFnYXlhIFRva3lvIDE1OC0wMDk2Ci0JCQkJSkFQQU4KLQotMDAtMTctMUQgICAoaGV4KQkJRElHSVQKLTAwMTcxRCAgICAgKGJhc2UgMTYpCQlESUdJVAotCQkJCVZpYSBQYXN0ZXVyICwgMS8zCi0JCQkJUy5QaWV0cm8gTW9zZXp6byBOT1ZBUkEgMjgwNjAKLQkJCQlJVEFMWQotCi0wMC0xNy0xRSAgIChoZXgpCQlUaGVvIEJlbm5pbmcgR21iSCAmIENvLiBLRwotMDAxNzFFICAgICAoYmFzZSAxNikJCVRoZW8gQmVubmluZyBHbWJIICYgQ28uIEtHCi0JCQkJTXVlbnN0ZXJzdHJhc3NlIDEzNS0xMzcKLQkJCQlCb2Nob2x0IE5SVyA0NjM5NwotCQkJCUdFUk1BTlkKLQotMDAtMTctMUYgICAoaGV4KQkJSU1WIENvcnBvcmF0aW9uCi0wMDE3MUYgICAgIChiYXNlIDE2KQkJSU1WIENvcnBvcmF0aW9uCi0JCQkJMi02LTEwIFRha2VqaW1hCi0JCQkJTmlzaGl5b2RvZ2F3YS1rdQotCQkJCU9zYWthICA1NTUtMDAxMQotCQkJCUpBUEFOCi0KLTAwLTE3LTIwICAgKGhleCkJCUltYWdlIFNlbnNpbmcgU3lzdGVtcywgSW5jLgotMDAxNzIwICAgICAoYmFzZSAxNikJCUltYWdlIFNlbnNpbmcgU3lzdGVtcywgSW5jLgotCQkJCTE2MDAgVW5pdmVyc2l0eSBBdmUuIFcuCi0JCQkJU3VpdGUgNTAwCi0JCQkJU3QuIFBhdWwgTU4gNTUxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTIxICAgKGhleCkJCUZJVFJFIFMucC5BLgotMDAxNzIxICAgICAoYmFzZSAxNikJCUZJVFJFIFMucC5BLgotCQkJCVZpYSBWYWxzb2xkYSwgMTUKLQkJCQlNSUxBTiBNSUxBTk8gMjAxNDIKLQkJCQlJVEFMWQotCi0wMC0xNy0yMiAgIChoZXgpCQlIYW5hemVkZXIgRWxlY3Ryb25pYyBHbWJICi0wMDE3MjIgICAgIChiYXNlIDE2KQkJSGFuYXplZGVyIEVsZWN0cm9uaWMgR21iSAotCQkJCUouTS4gRGltbWVsc3RyIDEwCi0JCQkJUmllZCBpLiBJLiBPYmVyb3N0ZXJyZWljaCA0OTEwCi0JCQkJQVVTVFJJQQotCi0wMC0xNy0yMyAgIChoZXgpCQlTdW1taXQgRGF0YSBDb21tdW5pY2F0aW9ucwotMDAxNzIzICAgICAoYmFzZSAxNikJCVN1bW1pdCBEYXRhIENvbW11bmljYXRpb25zCi0JCQkJNTI2IFNvdXRoIE1haW4gU3RyZWV0Ci0JCQkJU3VpdGUgODA1Ci0JCQkJQWtyb24gT2hpbyA0NDMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMjQgICAoaGV4KQkJU3R1ZGVyIFByb2Zlc3Npb25hbCBBdWRpbyBHbWJICi0wMDE3MjQgICAgIChiYXNlIDE2KQkJU3R1ZGVyIFByb2Zlc3Npb25hbCBBdWRpbyBHbWJICi0JCQkJQWx0aGFyZHN0cmFzc2UgMzAKLQkJCQlSZWdlbnNkb3JmIFp1cmljaCBDSC04MTA1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTctMjUgICAoaGV4KQkJTGlxdWlkIENvbXB1dGluZwotMDAxNzI1ICAgICAoYmFzZSAxNikJCUxpcXVpZCBDb21wdXRpbmcKLQkJCQkzNDAgVGVycnkgRm94IERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDNBMgotCQkJCUNBTkFEQQotCi0wMC0xNy0yNiAgIChoZXgpCQltMmMgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEx0ZC4KLTAwMTcyNiAgICAgKGJhc2UgMTYpCQltMmMgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEx0ZC4KLQkJCQkyNDAzLCAyNC9GLCBOYW55YW5nIFBsYXphCi0JCQkJNTcgSHVuZyBUbyBSb2FkCi0JCQkJS3d1bnRvbmcgSG9uZyBLb25nIDk5OSA5OTkKLQkJCQlDSElOQQotCi0wMC0xNy0yNyAgIChoZXgpCQlUaGVybW8gUmFtc2V5IEl0YWxpYSBzLnIubC4KLTAwMTcyNyAgICAgKGJhc2UgMTYpCQlUaGVybW8gUmFtc2V5IEl0YWxpYSBzLnIubC4KLQkJCQlTdHJhZGEgUml2b2x0YW5hIGttIDYvNwotCQkJCVJvZGFubyBNaWxhbm8gMjAwOTAKLQkJCQlJVEFMWQotCi0wMC0xNy0yOCAgIChoZXgpCQlTZWxleCBDb21tdW5pY2F0aW9ucwotMDAxNzI4ICAgICAoYmFzZSAxNikJCVNlbGV4IENvbW11bmljYXRpb25zCi0JCQkJVmlhIFBpZXJhZ29zdGluaSA4MAotCQkJCUdlbm92YSAgMTYxNTEKLQkJCQlJVEFMWQotCi0wMC0xNy0yOSAgIChoZXgpCQlVYmljb2QgQ28uTFRECi0wMDE3MjkgICAgIChiYXNlIDE2KQkJVWJpY29kIENvLkxURAotCQkJCTdGIENodW4tZ2luIEJsZGcsIDUzLTUgV29uaHlvLXJvCi0JCQkJWW9uZ3Nhbi1ndQotCQkJCVNlb3VsICAxNDAtNzE5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LTJBICAgKGhleCkJCVByb3dhcmUgVGVjaG5vbG9neSBDb3JwLgotMDAxNzJBICAgICAoYmFzZSAxNikJCVByb3dhcmUgVGVjaG5vbG9neSBDb3JwLgotCQkJCTZGbC4sIE5vLiA0LCBBbGxleSAxLCBMYW5lIDIzNSwgUGFvQ2hhbyBSZC4KLQkJCQlIc2luIFRpZW4gQ2l0eSBUYWlwZWkgSHNpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy0yQiAgIChoZXgpCQlHbG9iYWwgVGVjaG5vbG9naWVzIEluYy4KLTAwMTcyQiAgICAgKGJhc2UgMTYpCQlHbG9iYWwgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk0L0YgS2ljb3ggQmxkZy4sMTg4LTUsR3Vyby1Eb25nLEd1cm8tZ3UsCi0JCQkJU2VvdWwgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy0yQyAgIChoZXgpCQlUQUVKSU4gSU5GT1RFQ0gKLTAwMTcyQyAgICAgKGJhc2UgMTYpCQlUQUVKSU4gSU5GT1RFQ0gKLQkJCQk2RiBXb29saW0gZS1CaXogQ2VudGVyLCAxNzAtNQotCQkJCUd1cm8tRG9uZywgR3Vyby1HdSwKLQkJCQlTZW91bCAgMTUyLTc2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy0yRCAgIChoZXgpCQlBeGNlbiBQaG90b25pY3MgQ29ycG9yYXRpb24KLTAwMTcyRCAgICAgKGJhc2UgMTYpCQlBeGNlbiBQaG90b25pY3MgQ29ycG9yYXRpb24KLQkJCQk2RiwgTm8uIDExOSwgQmF1anVuZyBSZC4sCi0JCQkJU2hpbmRpYW4gQ2l0eSwgVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTJFICAgKGhleCkJCUZYQyBJbmMuCi0wMDE3MkUgICAgIChiYXNlIDE2KQkJRlhDIEluYy4KLQkJCQkxMC0xNiA2RiwgTmlob25iYXNoaSBUb21pemF3YS1DaG91LCBDaHVvLWt1Ci0JCQkJVG9reW8gIDEwMy0wMDA2Ci0JCQkJSkFQQU4KLQotMDAtMTctMkYgICAoaGV4KQkJTmV1TGlvbiBJbmNvcnBvcmF0ZWQKLTAwMTcyRiAgICAgKGJhc2UgMTYpCQlOZXVMaW9uIEluY29ycG9yYXRlZAotCQkJCTE2MDAgT2xkIENvdW50cnkgUm9hZAotCQkJCVBsYWludmlldyBOWSAxMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMzAgICAoaGV4KQkJQXV0b21hdGlvbiBFbGVjdHJvbmljcwotMDAxNzMwICAgICAoYmFzZSAxNikJCUF1dG9tYXRpb24gRWxlY3Ryb25pY3MKLQkJCQkxMTEgQmlnIEhvcm4gUmQuCi0JCQkJQ2FzcGVyIFd5IDgyNjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zMSAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTAwMTczMSAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQlOby41IFNoaW5nIFllaCBTdHJlZXQsS3dlaSBTaGFuIEhzaWFuZyxUYW95dWFuCi0JCQkJVGFpcGVpICAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTMyICAgKGhleCkJCVNjaWVuY2UtVGVjaG5pY2FsIENlbnRlciAiUklTU0EiCi0wMDE3MzIgICAgIChiYXNlIDE2KQkJU2NpZW5jZS1UZWNobmljYWwgQ2VudGVyICJSSVNTQSIKLQkJCQlzdC4gQWJyYW10c2V2c2thamEsIGguOQotCQkJCU1vc2NvdyAgMTI4NTcyCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE3LTMzICAgKGhleCkJCVNGUgotMDAxNzMzICAgICAoYmFzZSAxNikJCVNGUgotCQkJCTQyIFF1YWkgZHUgcG9pbnQgZHUgam91cgotCQkJCUJvdWxvZ25lIEJpbGxhbmNvdXJ0IEhhdXRzIGRlIFNlaW5lIDkyNjU5Ci0JCQkJRlJBTkNFCi0KLTAwLTE3LTM0ICAgKGhleCkJCUFEQyBUZWxlY29tbXVuaWNhdGlvbnMKLTAwMTczNCAgICAgKGJhc2UgMTYpCQlBREMgVGVsZWNvbW11bmljYXRpb25zCi0JCQkJNTQxIEUgVHJpbWJsZSBSb2FkICAgIAotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzQtMTIyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMzUgICAoaGV4KQkJUFJJVkFURQotMDAxNzM1ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0xNy0zNiAgIChoZXgpCQlpaVRyb24gSW5jLgotMDAxNzM2ICAgICAoYmFzZSAxNikJCWlpVHJvbiBJbmMuCi0JCQkJODggTWVyY3kgU3QuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMzcgICAoaGV4KQkJSW5kdXN0cmllIERpYWwgRmFjZSBTLnAuQS4KLTAwMTczNyAgICAgKGJhc2UgMTYpCQlJbmR1c3RyaWUgRGlhbCBGYWNlIFMucC5BLgotCQkJCXZpYSBDYW56bywgNAotCQkJCVBlc2NoaWVyYSBCb3Jyb21lbyBNaWxhbm8gMjAwNjgKLQkJCQlJVEFMWQotCi0wMC0xNy0zOCAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCi0wMDE3MzggICAgIChiYXNlIDE2KQkJSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwotCQkJCTEgQXpyaWVsaSBDZW50ZXIKLQkJCQlUZWwgQXZpdiAgNjcwMjEKLQkJCQlJU1JBRUwKLQotMDAtMTctMzkgICAoaGV4KQkJQnJpZ2h0IEhlYWRwaG9uZSBFbGVjdHJvbmljcyBDb21wYW55Ci0wMDE3MzkgICAgIChiYXNlIDE2KQkJQnJpZ2h0IEhlYWRwaG9uZSBFbGVjdHJvbmljcyBDb21wYW55Ci0JCQkJOEYsIDEwOSwgTGkgRGUgU3RyZWV0Ci0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgQ291bnR5IDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctM0EgICAoaGV4KQkJUmVhY2ggU3lzdGVtcyBJbmMuCi0wMDE3M0EgICAgIChiYXNlIDE2KQkJUmVhY2ggU3lzdGVtcyBJbmMuCi0JCQkJMTMzMCBCcm9hZHdheQotCQkJCVN1aXRlIDEyMDEKLQkJCQlPYWtsYW5kIENBIDk0NjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDE3M0IgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zQyAgIChoZXgpCQlFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucwotMDAxNzNDICAgICAoYmFzZSAxNikJCUV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zCi0JCQkJMzIyNSBEZW1pbmcgV2F5Ci0JCQkJU3VpdGUgMTIwCi0JCQkJTWlkZGxldG9uIFdJIDUzNTYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zRCAgIChoZXgpCQlOZW9sb2d5Ci0wMDE3M0QgICAgIChiYXNlIDE2KQkJTmVvbG9neQotCQkJCTEzMDAwIEdyZWdnIFN0cmVldCBTdWl0ZSBBCi0JCQkJUG93YXkgQ0EgOTIwNjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTNFICAgKGhleCkJCUxldWNvdHJvbkVxdWlwYW1lbnRvcyBMdGRhLgotMDAxNzNFICAgICAoYmFzZSAxNikJCUxldWNvdHJvbkVxdWlwYW1lbnRvcyBMdGRhLgotCQkJCVJ1YSBKb3JnZSBEaW9uaXNpbyBCYXJib3NhLCAzMTIKLQkJCQlTYW50YSBSaXRhIGRvIFNhcHVjYWkgTWluYXMgR2VyYWlzIDM3LjU0MC0wMDAKLQkJCQlCUkFaSUwKLQotMDAtMTctM0YgICAoaGV4KQkJQmVsa2luIENvcnBvcmF0aW9uCi0wMDE3M0YgICAgIChiYXNlIDE2KQkJQmVsa2luIENvcnBvcmF0aW9uCi0JCQkJNTAxIFcuIFdhbG51dCBTdHJlZXQKLQkJCQlDb21wdG9uIENBIDkwMjIwLTUyMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTQwICAgKGhleCkJCUJsdWJlcmkgR2FtaW5nIFRlY2hub2xvZ2llcyBJbmMKLTAwMTc0MCAgICAgKGJhc2UgMTYpCQlCbHViZXJpIEdhbWluZyBUZWNobm9sb2dpZXMgSW5jCi0JCQkJMjEyNSwgcnVlIExldGVuZHJlIFN1aXRlIDQyMAotCQkJCURydW1tb25kdmlsbGUgUXVlYmVjIEoyQyA3RzEKLQkJCQlDQU5BREEKLQotMDAtMTctNDEgICAoaGV4KQkJREVGSURFVgotMDAxNzQxICAgICAoYmFzZSAxNikJCURFRklERVYKLQkJCQkyNyBBdmVudWUgZGUgVmVyZHVuCi0JCQkJVmFudmVzICA5MjE3MAotCQkJCUZSQU5DRQotCi0wMC0xNy00MiAgIChoZXgpCQlGVUpJVFNVIExJTUlURUQKLTAwMTc0MiAgICAgKGJhc2UgMTYpCQlGVUpJVFNVIExJTUlURUQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiw0MDMKLQkJCQlLb3N1Z2ktY2hvIDEtY2hvbWUsTmFrYWhhcmEta3UKLQkJCQlLYXdhc2FraSBLYW5hZ2F3YSAyMTEtODU4OAotCQkJCUpBUEFOCi0KLTAwLTE3LTQzICAgKGhleCkJCURlY2sgU3JsCi0wMDE3NDMgICAgIChiYXNlIDE2KQkJRGVjayBTcmwKLQkJCQlWaWEgRmFiaW8gRmlsemkgMgotCQkJCU1pbGFuICAyMDEyNAotCQkJCUlUQUxZCi0KLTAwLTE3LTQ0ICAgKGhleCkJCUFyYW5lbyBMdGQuCi0wMDE3NDQgICAgIChiYXNlIDE2KQkJQXJhbmVvIEx0ZC4KLQkJCQkxMDMgTWVkaW5hdCBIYXllaHVkaW0KLQkJCQlIZXJ6bGl5YSAgNDY3MzMKLQkJCQlJU1JBRUwKLQotMDAtMTctNDUgICAoaGV4KQkJSU5OT1RaIENPLiwgTHRkCi0wMDE3NDUgICAgIChiYXNlIDE2KQkJSU5OT1RaIENPLiwgTHRkCi0JCQkJMTRGLCBQcmltZSBDZW50ZXIgNTQ2LTQgR3V1aS1Eb25nIEt3YW5nZ2luLUd1Ci0JCQkJU2VvdWwgU2VvdWwgMTQzLTIwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy00NiAgIChoZXgpCQlGcmVlZG9tOSBJbmMuCi0wMDE3NDYgICAgIChiYXNlIDE2KQkJRnJlZWRvbTkgSW5jLgotCQkJCTQxNDBCIFNMQURFVklFVyBDUkUuLAotCQkJCVVOSVQgNCwKLQkJCQlNSVNTSVNTQVVHQSwgT250YXJpbyBMNUw2QTEKLQkJCQlDQU5BREEKLQotMDAtMTctNDcgICAoaGV4KQkJVHJpbWJsZQotMDAxNzQ3ICAgICAoYmFzZSAxNikJCVRyaW1ibGUKLQkJCQkzNDUgU1cgQXZlcnkgQXZlCi0JCQkJQ29ydmFsbGlzIE9SIDk3MzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy00OCAgIChoZXgpCQlOZW9rb3JvcyBCcmFzaWwgTHRkYQotMDAxNzQ4ICAgICAoYmFzZSAxNikJCU5lb2tvcm9zIEJyYXNpbCBMdGRhCi0JCQkJUnVhIDg2LCBudW1lcm8gNTAxLCBTZXRvciBTdWwKLQkJCQlHb2lhbmlhIEdvaWFzIDc0MDgzLTMzMAotCQkJCUJSQVpJTAotCi0wMC0xNy00OSAgIChoZXgpCQlIWVVOREFFIFlPTkctTy1TQSBDTy4sTFRECi0wMDE3NDkgICAgIChiYXNlIDE2KQkJSFlVTkRBRSBZT05HLU8tU0EgQ08uLExURAotCQkJCTQ0OC0xMCwgSHl1Y2tqYWUgQi9EIFNlb25nbmFlLCBLYW5nZG9uZy1ndQotCQkJCVNlb3VsICAxMzQtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LTRBICAgKGhleCkJCVNPQ09NRUMKLTAwMTc0QSAgICAgKGJhc2UgMTYpCQlTT0NPTUVDCi0JCQkJcnVlIGRlIFdlc3Rob3VzZQotCQkJCUJFTkZFTEQgQ0VERVggIDY3MjM1Ci0JCQkJRlJBTkNFCi0KLTAwLTE3LTRCICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE3NEIgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTE3LTRDICAgKGhleCkJCU1pbGxpcG9yZQotMDAxNzRDICAgICAoYmFzZSAxNikJCU1pbGxpcG9yZQotCQkJCTEsIHJ1ZSBKYWNxdWVzIE1vbm9kCi0JCQkJUm9uZC1wb2ludCBkZXMgU2FuZ2xpZXJzCi0JCQkJR3V5YW5jb3VydCAgNzgyODAKLQkJCQlGUkFOQ0UKLQotMDAtMTctNEQgICAoaGV4KQkJRFlOQU1JQyBORVRXT1JLIEZBQ1RPUlksIElOQy4KLTAwMTc0RCAgICAgKGJhc2UgMTYpCQlEWU5BTUlDIE5FVFdPUksgRkFDVE9SWSwgSU5DLgotCQkJCTI2MjUwIEVERU4gTEFORElORyBSRC4KLQkJCQlIQVlXQVJEIENBIDk0NTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy00RSAgIChoZXgpCQlQYXJhbWEtdGVjaCBDby4sTHRkLgotMDAxNzRFICAgICAoYmFzZSAxNikJCVBhcmFtYS10ZWNoIENvLixMdGQuCi0JCQkJMi0xOS04LCBTaGFyeW8sIEhpZ2FzaGkta3UKLQkJCQlGdWt1b2thICA4MTItMDA2OAotCQkJCUpBUEFOCi0KLTAwLTE3LTRGICAgKGhleCkJCWlDYXRjaCBJbmMuCi0wMDE3NEYgICAgIChiYXNlIDE2KQkJaUNhdGNoIEluYy4KLQkJCQkxMEYtMiwgTm8uIDEwOSwgU2VjLiA2LCBNaW5jeXVhbiBFLiBSZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctNTAgICAoaGV4KQkJR1NJIEdyb3VwLCBNaWNyb0UgU3lzdGVtcwotMDAxNzUwICAgICAoYmFzZSAxNikJCUdTSSBHcm91cCwgTWljcm9FIFN5c3RlbXMKLQkJCQk4IEVyaWUgRHJpdmUKLQkJCQlOYXRpY2sgTUEgMDE3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTUxICAgKGhleCkJCU9ubGluZSBDb3Jwb3JhdGlvbgotMDAxNzUxICAgICAoYmFzZSAxNikJCU9ubGluZSBDb3Jwb3JhdGlvbgotCQkJCTIyRi0zLCBOby4gMzk4LCBIdWFuIFBlaSBSb2FkLAotCQkJCUNodW5nIExpIFRhb3l1YW4gMzIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy01MiAgIChoZXgpCQlEQUdTLCBJbmMKLTAwMTc1MiAgICAgKGJhc2UgMTYpCQlEQUdTLCBJbmMKLQkJCQlDLTUxMCwgV29vbGltIExpb24ncyBWYWxsZXksIDM3MS0yOCwgR2FzYW4gRG9uZywgR2V1bWNoZW9uIEt1Ci0JCQkJU2VvdWwgIDE1My03ODYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctNTMgICAoaGV4KQkJbkZvcmUgVGVjaG5vbG9neSBJbmMuCi0wMDE3NTMgICAgIChiYXNlIDE2KQkJbkZvcmUgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTBGLCA0MSBEb25nIFhpbmcgUmQsCi0JCQkJVGFpcGVpIFRhaXBlaSAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTU0ICAgKGhleCkJCUFya2lubyBIaVRPUCBDb3Jwb3JhdGlvbiBMaW1pdGVkCi0wMDE3NTQgICAgIChiYXNlIDE2KQkJQXJraW5vIEhpVE9QIENvcnBvcmF0aW9uIExpbWl0ZWQKLQkJCQkzRi4sIE5vLjgsIFNpbmdodWEgUmQuCi0JCQkJS3dlaSBTaGFuIEluZC4gUGFyawotCQkJCVRhb3l1YW4gQ2l0eSBUYW95dWFuIENvdW50eSAgMzMwNjgsCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy01NSAgIChoZXgpCQlHRSBTZWN1cml0eQotMDAxNzU1ICAgICAoYmFzZSAxNikJCUdFIFNlY3VyaXR5Ci0JCQkJMTIzNDUgU1cgTGV2ZXRvbiBEcml2ZQotCQkJCVR1YWxhdGluIE9SIDk3MDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy01NiAgIChoZXgpCQlWaW5jaSBMYWJzIE95Ci0wMDE3NTYgICAgIChiYXNlIDE2KQkJVmluY2kgTGFicyBPeQotCQkJCUZpbmxheXNvbmlua3VqYSAyMSBBCi0JCQkJVGFtcGVyZSBMYW5zaS1TdW9taSAzMzIxMAotCQkJCUZJTkxBTkQKLQotMDAtMTctNTcgICAoaGV4KQkJUklYIFRFQ0hOT0xPR1kgTElNSVRFRAotMDAxNzU3ICAgICAoYmFzZSAxNikJCVJJWCBURUNITk9MT0dZIExJTUlURUQKLQkJCQkxNyBEQUkgV0FORyBTVFJFRVQKLQkJCQlUQUkgUE8gSU5EVVNUUklBTCBFU1RBVEUKLQkJCQlUQUkgUE8gTkVXIFRFUlJJVE9SSUVTIAotCQkJCUhPTkcgS09ORwotCi0wMC0xNy01OCAgIChoZXgpCQlUaHJ1VmlzaW9uIEx0ZAotMDAxNzU4ICAgICAoYmFzZSAxNikJCVRocnVWaXNpb24gTHRkCi0JCQkJQ2VudHJhbCAxMjcsIE5vLjE4Ci0JCQkJTWlsdG9uIFBhcmsKLQkJCQlBYmluZ2RvbiBPeGZvcmRzaGlyZSBPWDE0IDRTQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE3LTU5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTc1OSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTVBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTc1QSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTVCICAgKGhleCkJCUFDUyBTb2x1dGlvbnMgU3dpdHplcmxhbmQgTHRkLgotMDAxNzVCICAgICAoYmFzZSAxNikJCUFDUyBTb2x1dGlvbnMgU3dpdHplcmxhbmQgTHRkLgotCQkJCUZyYW5rZW5zdHJhc3NlIDcwCi0JCQkJQmVybi0gQnVlbXBsaXogIDMwMTgKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNy01QyAgIChoZXgpCQlTSEFSUCBDT1JQT1JBVElPTgotMDAxNzVDICAgICAoYmFzZSAxNikJCVNIQVJQIENPUlBPUkFUSU9OCi0JCQkJMjItMjIsIE5BR0FJS0UtQ0hPLAotCQkJCUFCRU5PLUtVCi0JCQkJT1NBS0EgIDU0NS04NTIyCi0JCQkJSkFQQU4KLQotMDAtMTctNUQgICAoaGV4KQkJRG9uZ3NlbyBzeXN0ZW0uCi0wMDE3NUQgICAgIChiYXNlIDE2KQkJRG9uZ3NlbyBzeXN0ZW0uCi0JCQkJOTc0LTIxIE1hbnN1LWRvbmcgTmFtZG9uZy1ndQotCQkJCUluY2hlb24gSW4tQ2hlb24gNDA1LTg2NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy01RSAgIChoZXgpCQlaZWQtMwotMDAxNzVFICAgICAoYmFzZSAxNikJCVplZC0zCi0JCQkJNTAxIFZhbGxleSBXYXkKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctNUYgICAoaGV4KQkJWEVOT0xJTksgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDE3NUYgICAgIChiYXNlIDE2KQkJWEVOT0xJTksgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJMm5kIEZsLiwgSnVuZ3lvdSBCL0QgNzk3LTIyCi0JCQkJWWVva3NhbS1kb25nIEdhbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTkzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy02MCAgIChoZXgpCQlOYWl0byBEZW5zZWkgTWFjaGlkYSBNRkcuQ08uLExURAotMDAxNzYwICAgICAoYmFzZSAxNikJCU5haXRvIERlbnNlaSBNYWNoaWRhIE1GRy5DTy4sTFRECi0JCQkJMi0xNy0yOCBGdWNoaW5vYmUKLQkJCQlTYWdhbWloYXJhIEthbmFnYXdhIDIyOS0wMDA2Ci0JCQkJSkFQQU4KLQotMDAtMTctNjEgICAoaGV4KQkJWktTb2Z0d2FyZSBJbmMuCi0wMDE3NjEgICAgIChiYXNlIDE2KQkJWktTb2Z0d2FyZSBJbmMuCi0JCQkJWGlud2VpemFpLCBCYW50aWFuLCBMb25nZ2FuZyBkaXN0cmljdCxTaGVuemhlbiBDaGluYSA1MTgxMjkKLQkJCQlDSElOQQotCi0wMC0xNy02MiAgIChoZXgpCQlTb2xhciBUZWNobm9sb2d5LCBJbmMuCi0wMDE3NjIgICAgIChiYXNlIDE2KQkJU29sYXIgVGVjaG5vbG9neSwgSW5jLgotCQkJCTc2MjAgQ2V0cm9uaWEgUm9hZAotCQkJCUFsbGVudG93biBQQSAxODEwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctNjMgICAoaGV4KQkJRXNzZW50aWEgUy5wLkEuCi0wMDE3NjMgICAgIChiYXNlIDE2KQkJRXNzZW50aWEgUy5wLkEuCi0JCQkJVmlhIEcuQi4gVmljbywgMjkKLQkJCQlDZWxsYSAoUkUpIFJlZ2dpbyBFbWlsaWEgNDIwNDAKLQkJCQlJVEFMWQotCi0wMC0xNy02NCAgIChoZXgpCQlBVE1lZGlhIEdtYkgKLTAwMTc2NCAgICAgKGJhc2UgMTYpCQlBVE1lZGlhIEdtYkgKLQkJCQlTdHVobHNhdHplbmhhdXN3ZWcgNjkKLQkJCQlTYWFyYnJ1ZWNrZW4gU2FhcmxhbmQgNjYxMjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE3LTY1ICAgKGhleCkJCU5vcnRlbAotMDAxNzY1ICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNy02NiAgIChoZXgpCQlBY2NlbnNlIFRlY2hub2xvZ3ksIEluYy4KLTAwMTc2NiAgICAgKGJhc2UgMTYpCQlBY2NlbnNlIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkzNSBUYW5zdW1hY2hpCi0JCQkJU2hpbmp5dWt1LWt1IFRva3lvIDE2MjA4MzMKLQkJCQlKQVBBTgotCi0wMC0xNy02NyAgIChoZXgpCQlFYXJmb3JjZSBBUwotMDAxNzY3ICAgICAoYmFzZSAxNikJCUVhcmZvcmNlIEFTCi0JCQkJUC5PLkJveCA0Ci0JCQkJQnJ5bmUgIDQzNDkKLQkJCQlOT1JXQVkKLQotMDAtMTctNjggICAoaGV4KQkJWmlud2F2ZSBMdGQKLTAwMTc2OCAgICAgKGJhc2UgMTYpCQlaaW53YXZlIEx0ZAotCQkJCVppbndhdmUgTHRkLCBIYXJzdG9uIE1pbGwKLQkJCQlIYXJzdG9uCi0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCMiA1R0cKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy02OSAgIChoZXgpCQlDeW1waG9uaXggQ29ycAotMDAxNzY5ICAgICAoYmFzZSAxNikJCUN5bXBob25peCBDb3JwCi0JCQkJODg3MSBTLiBTYW5keSBQYXJrd2F5LCBTdWl0ZSAxNTAKLQkJCQlTYW5keSBVVCA4NDA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctNkEgICAoaGV4KQkJQXZhZ28gVGVjaG5vbG9naWVzCi0wMDE3NkEgICAgIChiYXNlIDE2KQkJQXZhZ28gVGVjaG5vbG9naWVzCi0JCQkJMzUwIFdlc3QgVHJpbWJsZSBSZAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy02QiAgIChoZXgpCQlLaXlvbiwgSW5jLgotMDAxNzZCICAgICAoYmFzZSAxNikJCUtpeW9uLCBJbmMuCi0JCQkJOTM4MSBKdWRpY2lhbCBEcml2ZQotCQkJCVN1aXRlIDE2MAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctNkMgICAoaGV4KQkJUGl2b3QzLCBJbmMuCi0wMDE3NkMgICAgIChiYXNlIDE2KQkJUGl2b3QzLCBJbmMuCi0JCQkJNjYwNSBDeXByZXNzd29vZCBEcml2ZSwgU3RlIDM1MAotCQkJCVNwcmluZyBUWCA3NzM3OS03NzQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy02RCAgIChoZXgpCQlDT1JFIENPUlBPUkFUSU9OCi0wMDE3NkQgICAgIChiYXNlIDE2KQkJQ09SRSBDT1JQT1JBVElPTgotCQkJCTEtMjItMywgU2FuZ2VuamF5YSwKLQkJCQlTZXRhZ2F5YS1rdSBUb2t5by10byAxNTQtODU1MgotCQkJCUpBUEFOCi0KLTAwLTE3LTZFICAgKGhleCkJCURVQ0FUSSBTSVNURU1JCi0wMDE3NkUgICAgIChiYXNlIDE2KQkJRFVDQVRJIFNJU1RFTUkKLQkJCQlWSUEgTUFSQ08gRU1JTElPIExFUElETywgMTgyCi0JCQkJQk9MT0dOQSAgNDAxMzIKLQkJCQlJVEFMWQotCi0wMC0xNy02RiAgIChoZXgpCQlQQVggQ29tcHV0ZXIgVGVjaG5vbG9neShTaGVuemhlbikgTHRkLgotMDAxNzZGICAgICAoYmFzZSAxNikJCVBBWCBDb21wdXRlciBUZWNobm9sb2d5KFNoZW56aGVuKSBMdGQuCi0JCQkJNC9GLCBOby4zIEJ1aWxkaW5nLCBTb2Z0d2FyZSBQYXJrLCBTZWNvbmQgQ2VudHJhbCBTY2llbmNlLVRlY2ggUm9hZCwgSGlnaC1UZWNoCi0JCQkJaW5kdXN0cmlhbCBQYXJrCi0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE3LTcwICAgKGhleCkJCUFydGkgSW5kdXN0cmlhbCBFbGVjdHJvbmljcyBMdGQuCi0wMDE3NzAgICAgIChiYXNlIDE2KQkJQXJ0aSBJbmR1c3RyaWFsIEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQlHZXItU2FuIFNpdGVzaSwgNjU3LiBTb2thawotCQkJCU5vOiA4MCwgRXJnYXppCi0JCQkJQW5rYXJhIFRSIDA2MzcwCi0JCQkJVFVSS0VZCi0KLTAwLTE3LTcxICAgKGhleCkJCUFQRCBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMTc3MSAgICAgKGJhc2UgMTYpCQlBUEQgQ29tbXVuaWNhdGlvbnMgTHRkCi0JCQkJTmV3bGFuZHMgQ2VudHJlCi0JCQkJSW5nbGVtaXJlIExhbmUKLQkJCQlIVUxMIEVhc3QgWW9ya3NoaXJlIEhVNiA3VFEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy03MiAgIChoZXgpCQlBU1RSTyBTdHJvYmVsIEtvbW11bmlrYXRpb25zc3lzdGVtZSBHbWJICi0wMDE3NzIgICAgIChiYXNlIDE2KQkJQVNUUk8gU3Ryb2JlbCBLb21tdW5pa2F0aW9uc3N5c3RlbWUgR21iSAotCQkJCU9sZWZhbnQgMS0zCi0JCQkJQmVyZ2lzY2ggR2xhZGJhY2ggTlJXIDUxNDI3Ci0JCQkJR0VSTUFOWQotCi0wMC0xNy03MyAgIChoZXgpCQlMYWtldHVuZSBUZWNobm9sb2dpZXMgQ28uIEx0ZAotMDAxNzczICAgICAoYmFzZSAxNikJCUxha2V0dW5lIFRlY2hub2xvZ2llcyBDby4gTHRkCi0JCQkJTm8uIDM4IFppamluZ2h1YSBSZC4gV2VzdGxha2UgRGlzdHJpY3QKLQkJCQlHdWRhbmcgSW5kdXN0cmlhbCBab25lIEJ1aWxkaW5nIDExLCA1RgotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMwotCQkJCUNISU5BCi0KLTAwLTE3LTc0ICAgKGhleCkJCUVsZXN0YSBHbWJICi0wMDE3NzQgICAgIChiYXNlIDE2KQkJRWxlc3RhIEdtYkgKLQkJCQlHb3R0bGllYiBEYWltbGVyIFN0cmFzc2UgMQotCQkJCUtvbnN0YW56ICA3ODQ2NwotCQkJCUdFUk1BTlkKLQotMDAtMTctNzUgICAoaGV4KQkJVFRFIEdlcm1hbnkgR21iSAotMDAxNzc1ICAgICAoYmFzZSAxNikJCVRURSBHZXJtYW55IEdtYkgKLQkJCQlIZXJtYW5uLVNjaHdlci1TdHIuIDMKLQkJCQlWaWxsaW5nZW4tU2Nod2VubmluZ2VuIEJhZGVuLVd1cnR0ZW1iZXJnIDc4MDQ4Ci0JCQkJR0VSTUFOWQotCi0wMC0xNy03NiAgIChoZXgpCQlNZXNvIFNjYWxlIERpYWdub3N0aWNzLCBMTEMKLTAwMTc3NiAgICAgKGJhc2UgMTYpCQlNZXNvIFNjYWxlIERpYWdub3N0aWNzLCBMTEMKLQkJCQk5MjM4IEdhaXRoZXIgUmQuCi0JCQkJR2FpdGhlcnNidXJnIE1EIDIwODc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy03NyAgIChoZXgpCQlPYnNpZGlhbiBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotMDAxNzc3ICAgICAoYmFzZSAxNikJCU9ic2lkaWFuIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0JCQkJRWRtb250b24gUmVzZWFyY2ggUGFyawotCQkJCVN1aXRlIDEwNiAgIDk2NTAtMjAgQXZlCi0JCQkJRWRtb250b24gQWxiZXJ0YSBUNk4xRzEKLQkJCQlDQU5BREEKLQotMDAtMTctNzggICAoaGV4KQkJQ2VudHJhbCBNdXNpYyBDby4KLTAwMTc3OCAgICAgKGJhc2UgMTYpCQlDZW50cmFsIE11c2ljIENvLgotCQkJCTA3MTEtMDcxMiBUb3dlciBELCBTT0hPIE5ldyBUb3duCi0JCQkJTm8uIDg4IEppYW5ndW8gUm9hZCwgQ2hhb3lhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwMjIKLQkJCQlDSElOQQotCi0wMC0xNy03OSAgIChoZXgpCQlRdWlja1RlbAotMDAxNzc5ICAgICAoYmFzZSAxNikJCVF1aWNrVGVsCi0JCQkJQ29ybmlzaGUgRWwtTmlsZSwgTWFhc2FyYQotCQkJCUNhaXJvICAxMTc0MwotCQkJCUVHWVBUCi0KLTAwLTE3LTdBICAgKGhleCkJCUFTU0EgQUJMT1kgQUIKLTAwMTc3QSAgICAgKGJhc2UgMTYpCQlBU1NBIEFCTE9ZIEFCCi0JCQkJVGhlcmVzIFN2ZW5zc29ucyBnYXRhIDE1Ci0JCQkJNDE3NTUgR290ZWJvcmcKLQkJCQlHb3RlYm9yZyAgNDE3NTUKLQkJCQlTV0VERU4KLQotMDAtMTctN0IgICAoaGV4KQkJQXphbGVhIE5ldHdvcmtzIGluYwotMDAxNzdCICAgICAoYmFzZSAxNikJCUF6YWxlYSBOZXR3b3JrcyBpbmMKLQkJCQk2NzMgUyBNaWxwaXRhcyBCbHZkCi0JCQkJU3VpdGUgMTA1Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTdDICAgKGhleCkJCVNtYXJ0bGluayBOZXR3b3JrIFN5c3RlbXMgTGltaXRlZAotMDAxNzdDICAgICAoYmFzZSAxNikJCVNtYXJ0bGluayBOZXR3b3JrIFN5c3RlbXMgTGltaXRlZAotCQkJCUwtNywgVmVybmEgRWxlY3Ryb25pYyBjaXR5Ci0JCQkJVmVybmEKLQkJCQlOYWdvYSBHb2EgNDAzIDcyMgotCQkJCUlORElBCi0KLTAwLTE3LTdEICAgKGhleCkJCUlEVCBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTAwMTc3RCAgICAgKGJhc2UgMTYpCQlJRFQgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0JCQkJQmxvY2sgQywgOS9GLCBLYWlzZXIgRXN0YXRlLCBQaGFzZSBJCi0JCQkJNDEgTWFuIFl1ZSBTdHJlZXQsIEh1bmdob20sIEtvd2xvb24KLQkJCQlIT05HIEtPTkcKLQotMDAtMTctN0UgICAoaGV4KQkJTWVzaGNvbSBUZWNobm9sb2dpZXMgSW5jLgotMDAxNzdFICAgICAoYmFzZSAxNikJCU1lc2hjb20gVGVjaG5vbG9naWVzIEluYy4KLQkJCQlNZXJpdHVsbGlua2F0dSAxIEMKLQkJCQlIZWxzaW5raSAgMDAxNzAKLQkJCQlGSU5MQU5ECi0KLTAwLTE3LTdGICAgKGhleCkJCVdvcmxkc21hcnQgUmV0ZWNoCi0wMDE3N0YgICAgIChiYXNlIDE2KQkJV29ybGRzbWFydCBSZXRlY2gKLQkJCQkyMyBIaS1UZWNoIENvdXJ0Ci0JCQkJRWlnaHQgTWlsZSBQbGFpbnMgUUxEIDQxMTMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTctODAgICAoaGV4KQkJQXBwbGllZCBCaW9zeXN0ZW1zIEIuVi4KLTAwMTc4MCAgICAgKGJhc2UgMTYpCQlBcHBsaWVkIEJpb3N5c3RlbXMgQi5WLgotCQkJCUJsayAzMywgTWFyc2lsaW5nIEluZHVzdHJpYWwgRXN0YXRlIFJvYWQgMywKLQkJCQkjMDUtMDMKLQkJCQk3MzkyNTYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTctODEgICAoaGV4KQkJR3JleXN0b25lIERhdGEgU3lzdGVtLCBJbmMuCi0wMDE3ODEgICAgIChiYXNlIDE2KQkJR3JleXN0b25lIERhdGEgU3lzdGVtLCBJbmMuCi0JCQkJNDA4MDAgRW5jeWNvcGVkaWEgQ2lyY2xlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctODIgICAoaGV4KQkJTG9CZW5uIEluYy4KLTAwMTc4MiAgICAgKGJhc2UgMTYpCQlMb0Jlbm4gSW5jLgotCQkJCTE1MCBLYXRpbWF2aWsgUm9hZAotCQkJCVN1aXRlIDIwMgotCQkJCU90dGF3YSBPbnRhcmlvIEsyTCAyTjIKLQkJCQlDQU5BREEKLQotMDAtMTctODMgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTc4MyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctODQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTc4NCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBId3kgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTg1ICAgKGhleCkJCVNwYXJyIEVsZWN0cm9uaWNzIEx0ZAotMDAxNzg1ICAgICAoYmFzZSAxNikJCVNwYXJyIEVsZWN0cm9uaWNzIEx0ZAotCQkJCVNwYXJyIEVsZWN0cm9uaWNzIEx0ZAotCQkJCTQzIEhNVCBNYWluIFJvYWQgTWF0aGlrZXJlCi0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAwNTQKLQkJCQlJTkRJQQotCi0wMC0xNy04NiAgIChoZXgpCQl3aXNlbWJlZAotMDAxNzg2ICAgICAoYmFzZSAxNikJCXdpc2VtYmVkCi0JCQkJODA4LCBoYW5zaW4gSVQgdG93ZXIsIDIzNSBndXJvMy1kb25nLCBndXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi03NjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctODcgICAoaGV4KQkJQnJvdGhlciwgQnJvdGhlciAmIFNvbnMgQXBTCi0wMDE3ODcgICAgIChiYXNlIDE2KQkJQnJvdGhlciwgQnJvdGhlciAmIFNvbnMgQXBTCi0JCQkJVmVkIEFtYWdlcmJhbmVuIDkKLQkJCQlDb3BlbmhhZ2VuIFMgIERLLTIzMDAKLQkJCQlERU5NQVJLCi0KLTAwLTE3LTg4ICAgKGhleCkJCVBoaWxpcHMgTGlnaHRpbmcgQlYKLTAwMTc4OCAgICAgKGJhc2UgMTYpCQlQaGlsaXBzIExpZ2h0aW5nIEJWCi0JCQkJTWF0aGlsZGVsYWFuIDEKLQkJCQlFaW5kaG92ZW4gTm9vcmQgQnJhYmFudCA1NjExIEJECi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTctODkgICAoaGV4KQkJWmVuaXRyb24gQ29ycG9yYXRpb24KLTAwMTc4OSAgICAgKGJhc2UgMTYpCQlaZW5pdHJvbiBDb3Jwb3JhdGlvbgotCQkJCU5vLiA4LCBMYW5lIDI1MCwgU2luaHUgMm5kIFJkLiwgTmVpaHUgRGlzdHJpY3QsCi0JCQkJVGFpcGVpICAxMTQ5NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctOEEgICAoaGV4KQkJREFSVFMgVEVDSE5PTE9HSUVTIENPUlAuCi0wMDE3OEEgICAgIChiYXNlIDE2KQkJREFSVFMgVEVDSE5PTE9HSUVTIENPUlAuCi0JCQkJMkYsTm8uMTE5LENoaWVuIEthbmcgUmQuLAotCQkJCUNodW5nLUhvIFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LThCICAgKGhleCkJCVRlbGVkeW5lIFRlY2hub2xvZ2llcyBJbmNvcnBvcmF0ZWQKLTAwMTc4QiAgICAgKGJhc2UgMTYpCQlUZWxlZHluZSBUZWNobm9sb2dpZXMgSW5jb3Jwb3JhdGVkCi0JCQkJMTIzMzMgV2VzdCBPbHltcGljIEJsdmQKLQkJCQlMb3MgQW5nZWxlcyBDQSA5MDA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctOEMgICAoaGV4KQkJSW5kZXBlbmRlbnQgV2l0bmVzcywgSW5jCi0wMDE3OEMgICAgIChiYXNlIDE2KQkJSW5kZXBlbmRlbnQgV2l0bmVzcywgSW5jCi0JCQkJMTUxNSBXZXN0IDIyMDAgU291dGgKLQkJCQlTdWl0ZSBFCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LThEICAgKGhleCkJCUNoZWNrcG9pbnQgU3lzdGVtcywgSW5jLgotMDAxNzhEICAgICAoYmFzZSAxNikJCUNoZWNrcG9pbnQgU3lzdGVtcywgSW5jLgotCQkJCTEwMSBXb2xmIERyaXZlCi0JCQkJVGhvcm9mYXJlIE5KIDA4MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy04RSAgIChoZXgpCQlHdW5uZWJvIENhc2ggQXV0b21hdGlvbiBBQgotMDAxNzhFICAgICAoYmFzZSAxNikJCUd1bm5lYm8gQ2FzaCBBdXRvbWF0aW9uIEFCCi0JCQkJRmFicmlrc2dhdGFuIDEwCi0JCQkJR290ZWJvcmcgIDQwMiAyNwotCQkJCVNXRURFTgotCi0wMC0xNy04RiAgIChoZXgpCQlOSU5HQk8gWUlET05HIEVMRUNUUk9OSUMgQ08uLExURC4KLTAwMTc4RiAgICAgKGJhc2UgMTYpCQlOSU5HQk8gWUlET05HIEVMRUNUUk9OSUMgQ08uLExURC4KLQkJCQlOby42NSBTaW1pbmcgRWFzdCBSZAotCQkJCVl1eWFvIENpdHksIFpoZWppYW5nIFByb3ZpbmNlIFpoZWppYW5nIFByb3ZpbmNlIENoaW5hIFAuQyAzMTU0MDAKLQkJCQlDSElOQQotCi0wMC0xNy05MCAgIChoZXgpCQlIWVVOREFJIERJR0lURUNIIENvLCBMdGQuCi0wMDE3OTAgICAgIChiYXNlIDE2KQkJSFlVTkRBSSBESUdJVEVDSCBDbywgTHRkLgotCQkJCTEzdGggRmwsIENob3VuZy1KaW4gQmxkZywgNTMtNQotCQkJCVdvbmh5by1ybyAzR2EsIFlvbmdzYW4tR3UKLQkJCQlTZW91bCAgMTQwLTcxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy05MSAgIChoZXgpCQlMaW5UZWNoIEdtYkgKLTAwMTc5MSAgICAgKGJhc2UgMTYpCQlMaW5UZWNoIEdtYkgKLQkJCQlGcmllZHJpY2gtRW5nZWxzLVN0ci4gMzUKLQkJCQlCZXJsaW4gIDEzMTU2Ci0JCQkJR0VSTUFOWQotCi0wMC0xNy05MiAgIChoZXgpCQlGYWxjb20gV2lyZWxlc3MgQ29tdW5pY2F0aW9ucyBHbWJoCi0wMDE3OTIgICAgIChiYXNlIDE2KQkJRmFsY29tIFdpcmVsZXNzIENvbXVuaWNhdGlvbnMgR21iaAotCQkJCUdld2VyYmVyaW5nIDYKLQkJCQlMYW5nZXdpZXNlbiBUaHVyaW5naWEgOTg3MDQKLQkJCQlHRVJNQU5ZCi0KLTAwLTE3LTkzICAgKGhleCkJCVRpZ2kgQ29ycG9yYXRpb24KLTAwMTc5MyAgICAgKGJhc2UgMTYpCQlUaWdpIENvcnBvcmF0aW9uCi0JCQkJMjA3MCBDaGFpbiBCcmlkZ2Ugcm9hZAotCQkJCVN1aXRlIEctMTAwCi0JCQkJVmllbm5hIFZhIDIyMTgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy05NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE3OTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy05NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE3OTUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy05NiAgIChoZXgpCQlSaXR0bWV5ZXIgQUcKLTAwMTc5NiAgICAgKGJhc2UgMTYpCQlSaXR0bWV5ZXIgQUcKLQkJCQlJbndpbGVycmllZHN0cmFzc2UgNTcKLQkJCQlQb3N0ZmFjaCA0NjQKLQkJCQlCYWFyIFpHIENILTYzNDEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNy05NyAgIChoZXgpCQlUZWxzeSBFbGV0dHJvbmljYSBTLnAuQS4KLTAwMTc5NyAgICAgKGJhc2UgMTYpCQlUZWxzeSBFbGV0dHJvbmljYSBTLnAuQS4KLQkJCQlDb3JzbyBTdml6emVyYSAxODUKLQkJCQlUb3Jpbm8gIDEwMTQ5Ci0JCQkJSVRBTFkKLQotMDAtMTctOTggICAoaGV4KQkJQXpvbmljIFRlY2hub2xvZ3kgQ28uLCBMVEQKLTAwMTc5OCAgICAgKGJhc2UgMTYpCQlBem9uaWMgVGVjaG5vbG9neSBDby4sIExURAotCQkJCTE1Ri0zLCBOby4gMTYzLCBTZWMuLCAxIEtlZWx1bmcgUmQuCi0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTk5ICAgKGhleCkJCVNtYXJUaXJlIFN5c3RlbXMgSW5jLgotMDAxNzk5ICAgICAoYmFzZSAxNikJCVNtYXJUaXJlIFN5c3RlbXMgSW5jLgotCQkJCVN1aXRlIDE1MAotCQkJCTEzMTUxIFZhbmllciBQbGFjZQotCQkJCVJpY2htb25kIEJDIFY2ViAySjEKLQkJCQlDQU5BREEKLQotMDAtMTctOUEgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDE3OUEgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTm8uIDI4OSwgU2luaHUgM3JkIFJkLiwgTmVpaHUgRGlzdHJpY3QsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTlCICAgKGhleCkJCUNoYW50IFNpbmNlcmUgQ08uLCBMVEQuCi0wMDE3OUIgICAgIChiYXNlIDE2KQkJQ2hhbnQgU2luY2VyZSBDTy4sIExURC4KLQkJCQk3Ri0yLE5PLjE4OCxTZWMgMyxUYSBUdW5nIFJvb2QsCi0JCQkJSHNpIENoaWggQ2l0eSBUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy05QyAgIChoZXgpCQlERVBSQUcgU0NIVUxaIEdNQkggdS4gQ08uCi0wMDE3OUMgICAgIChiYXNlIDE2KQkJREVQUkFHIFNDSFVMWiBHTUJIIHUuIENPLgotCQkJCUt1cmZ1cnN0ZW5yaW5nIDEyLjE4Ci0JCQkJQW1iZXJnIEJheWVybiA5MjIyNAotCQkJCUdFUk1BTlkKLQotMDAtMTctOUQgICAoaGV4KQkJS2VsbWFuIExpbWl0ZWQKLTAwMTc5RCAgICAgKGJhc2UgMTYpCQlLZWxtYW4gTGltaXRlZAotCQkJCVJhdGhkb3duIENsb3NlCi0JCQkJTGlzc3VlIEVhc3QgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlMaXNidXJuIENvLiBBbnRyaW0gQlQyOCAyUkIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy05RSAgIChoZXgpCQlTaXJpdCBJbmMKLTAwMTc5RSAgICAgKGJhc2UgMTYpCQlTaXJpdCBJbmMKLQkJCQkyNTI1IE1lcmlkaWFuIFBhcmt3YXkKLQkJCQlTdWl0ZSA2MAotCQkJCUR1cmhhbSBOQyAyNzcxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctOUYgICAoaGV4KQkJQXByaWNvcm4KLTAwMTc5RiAgICAgKGJhc2UgMTYpCQlBcHJpY29ybgotCQkJCTEyMTkxIEtpcmtoYW0gUkQKLQkJCQlQb3dheSBDYWxpZm9ybmlhIDkyMDY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1BMCAgIChoZXgpCQlSb2JvVGVjaCBzcmwKLTAwMTdBMCAgICAgKGJhc2UgMTYpCQlSb2JvVGVjaCBzcmwKLQkJCQlWaWEgTWF6emluaSA4MgotCQkJCVNhcnphbmEgKFNQKSAgSS0xOTAzOAotCQkJCUlUQUxZCi0KLTAwLTE3LUExICAgKGhleCkJCTNzb2Z0IGluYy4KLTAwMTdBMSAgICAgKGJhc2UgMTYpCQkzc29mdCBpbmMuCi0JCQkJc2hpbnlvdW5nIGJsZGcgNGYsIGNodW5nZGFtLWRvbmcsIGdhbmduYW0tZ3UKLQkJCQlzZW91bCAgMTM1LTEwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1BMiAgIChoZXgpCQlDYW1yaXZveCBMdGQuCi0wMDE3QTIgICAgIChiYXNlIDE2KQkJQ2Ftcml2b3ggTHRkLgotCQkJCVRoZSBKZWZmcmV5cyBCdWlsZGluZwotCQkJCUNvd2xleSBSb2FkCi0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCNCAwV1MKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy1BMyAgIChoZXgpCQlNSVggcy5yLmwuCi0wMDE3QTMgICAgIChiYXNlIDE2KQkJTUlYIHMuci5sLgotCQkJCVZpYSBDYWxkZXJhLCAyMQotCQkJCU1pbGFuICBJLTIwMTUzCi0JCQkJSVRBTFkKLQotMDAtMTctQTQgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDE3QTQgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUE1ICAgKGhleCkJCVJhbGluayBUZWNobm9sb2d5IENvcnAKLTAwMTdBNSAgICAgKGJhc2UgMTYpCQlSYWxpbmsgVGVjaG5vbG9neSBDb3JwCi0JCQkJU3VpdGUgMjE1LCBCbGRnIDUzLiAxOTUtNjEgU2VjLjQsIENodW5nIEhzaW5nIFJkLAotCQkJCUNodXR1bmcgSHNpbmNodSAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LUE2ICAgKGhleCkJCVlPU0lOIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDAxN0E2ICAgICAoYmFzZSAxNikJCVlPU0lOIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTZGLTIsIE5vLjE3LCBMYW4gMTc0LCBTaGluLU1pbmcgUm9hZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy1BNyAgIChoZXgpCQlNb2JpbGUgQ29tcHV0aW5nIFByb21vdGlvbiBDb25zb3J0aXVtCi0wMDE3QTcgICAgIChiYXNlIDE2KQkJTW9iaWxlIENvbXB1dGluZyBQcm9tb3Rpb24gQ29uc29ydGl1bQotCQkJCTMtNS0xMiBTaGliYS1Lb2VuCi0JCQkJTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwNS0wMDExCi0JCQkJSkFQQU4KLQotMDAtMTctQTggICAoaGV4KQkJRURNIENvcnBvcmF0aW9uCi0wMDE3QTggICAgIChiYXNlIDE2KQkJRURNIENvcnBvcmF0aW9uCi0JCQkJMy01LTIgSXRhYmFzaGkKLQkJCQlJdGFiYXNoaS1rdSBUb2t5byAxNzMtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTE3LUE5ICAgKGhleCkJCVNlbnRpdmlzaW9uCi0wMDE3QTkgICAgIChiYXNlIDE2KQkJU2VudGl2aXNpb24KLQkJCQlNYXJ5bmFyc2thIDE5YQotCQkJCVdhcnNhdyBNYXpvd2llY2tpZSAwMi02NzQKLQkJCQlQT0xBTkQKLQotMDAtMTctQUEgICAoaGV4KQkJZWxhYi1leHBlcmllbmNlIGluYy4KLTAwMTdBQSAgICAgKGJhc2UgMTYpCQllbGFiLWV4cGVyaWVuY2UgaW5jLgotCQkJCTEwNCBBbm90c3VwaWEKLQkJCQlBbm90c3VkYWkgNC02LTEKLQkJCQlUc3Utc2hpIG1pZSBwcmVmZWN0dXJlIDUxNC0wMTMxCi0JCQkJSkFQQU4KLQotMDAtMTctQUIgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDE3QUIgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTctQUMgICAoaGV4KQkJTydOZWlsIFByb2R1Y3QgRGV2ZWxvcG1lbnQgSW5jLgotMDAxN0FDICAgICAoYmFzZSAxNikJCU8nTmVpbCBQcm9kdWN0IERldmVsb3BtZW50IEluYy4KLQkJCQk4IE1hc29uCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1BRCAgIChoZXgpCQlBY2VOZXQgQ29ycG9yYXRpb24KLTAwMTdBRCAgICAgKGJhc2UgMTYpCQlBY2VOZXQgQ29ycG9yYXRpb24KLQkJCQk3Ri00LCBOby4xNDYsIFdlbi1TaGluIFJvYWQKLQkJCQlHdWVpc2hhbiBUQU9ZVUFOIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctQUUgICAoaGV4KQkJR0FJLVRyb25pY3MKLTAwMTdBRSAgICAgKGJhc2UgMTYpCQlHQUktVHJvbmljcwotCQkJCUJydW5lbCBEcml2ZQotCQkJCVN0cmV0dG9uIFBhcmsKLQkJCQlCdXJ0b24gVXBvbiBUcmVudCBTdGFmZm9yZHNoaXJlIERFMTMgMEJaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTctQUYgICAoaGV4KQkJRW5lcm1ldAotMDAxN0FGICAgICAoYmFzZSAxNikJCUVuZXJtZXQKLQkJCQlTYWx2ZXNlbmludGllCi0JCQkJSnlza2EgIEZJTi00MDQyMAotCQkJCUZJTkxBTkQKLQotMDAtMTctQjAgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTdCMCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTctQjEgICAoaGV4KQkJQUNJU1QgTWVkaWNhbCBTeXN0ZW1zLCBJbmMuCi0wMDE3QjEgICAgIChiYXNlIDE2KQkJQUNJU1QgTWVkaWNhbCBTeXN0ZW1zLCBJbmMuCi0JCQkJNzQ1MCBGbHlpbmcgQ2xvdWQgRHJpdmUKLQkJCQlTdWl0ZSAxNTAKLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUIyICAgKGhleCkJCVNLIFRlbGVzeXMKLTAwMTdCMiAgICAgKGJhc2UgMTYpCQlTSyBUZWxlc3lzCi0JCQkJNEYsIEt5dW5nZG9uZyBibGRnLCA0LTQsIFN1bmFlLURvbmcsIFB1bmRhbmctR3UKLQkJCQlTdW5nbmFtLUNpdHkgS3VuZ2dpLURvIDQ2My04MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctQjMgICAoaGV4KQkJQWZ0ZWsgSW5mb3N5cyBMaW1pdGVkCi0wMDE3QjMgICAgIChiYXNlIDE2KQkJQWZ0ZWsgSW5mb3N5cyBMaW1pdGVkCi0JCQkJUGF3YW4gQ29tcGxleAotCQkJCVNoZWVsYSBWaWhhciBDb2xvbnkKLQkJCQlQdW5lIE1haGFyYXNodHJhIDQxMSAwMzgKLQkJCQlJTkRJQQotCi0wMC0xNy1CNCAgIChoZXgpCQlSZW1vdGUgU2VjdXJpdHkgU3lzdGVtcywgTExDCi0wMDE3QjQgICAgIChiYXNlIDE2KQkJUmVtb3RlIFNlY3VyaXR5IFN5c3RlbXMsIExMQwotCQkJCTQ4MDYgVXBwZXIgQnJhbmRvbiBQbGFjZQotCQkJCU1hcmlldHRhIEdlb3JnaWEgMzAwNjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUI1ICAgKGhleCkJCVBlZXJsZXNzIFN5c3RlbXMgQ29ycG9yYXRpb24KLTAwMTdCNSAgICAgKGJhc2UgMTYpCQlQZWVybGVzcyBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJMjM4MSBSb3NlY3JhbnMgQXZlbnVlLCBTdWl0ZSA0MDAKLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1CNiAgIChoZXgpCQlBcXVhbnRpYQotMDAxN0I2ICAgICAoYmFzZSAxNikJCUFxdWFudGlhCi0JCQkJNzAwIFRhc21hbiBEci4KLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctQjcgICAoaGV4KQkJVG9uemUgVGVjaG5vbG9neSBDby4KLTAwMTdCNyAgICAgKGJhc2UgMTYpCQlUb256ZSBUZWNobm9sb2d5IENvLgotCQkJCTVGLTEwLCBOby42LCBMYW5lIDE4MCwKLQkJCQlTZWMgNiwgTWluY3l1YW4gRWFzdCBSb2FkCi0JCQkJVGFpcGVpICAxMTQ5MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctQjggICAoaGV4KQkJTk9WQVRST04gQ08uLCBMVEQuCi0wMDE3QjggICAgIChiYXNlIDE2KQkJTk9WQVRST04gQ08uLCBMVEQuCi0JCQkJIzYwMSBwb2xhcmlzIGJsZGcuLCAxNS0zIGplb25namEtZG9uZywgYnVuZGFuZy1ndQotCQkJCVNlb25nIE5hbSBHeWVvbmdnaSBEbyA0NjMtODExCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUI5ICAgKGhleCkJCUdhbWJybyBMdW5kaWEgQUIKLTAwMTdCOSAgICAgKGJhc2UgMTYpCQlHYW1icm8gTHVuZGlhIEFCCi0JCQkJQk9YIDEwMTAxCi0JCQkJTFVORCBTa2FuZSAyMjAxMAotCQkJCVNXRURFTgotCi0wMC0xNy1CQSAgIChoZXgpCQlTRURPIENPLiwgTFRELgotMDAxN0JBICAgICAoYmFzZSAxNikJCVNFRE8gQ08uLCBMVEQuCi0JCQkJMzAyLCBLVCBCbGRnLCAxQU5ORVgsIDM1LTEKLQkJCQlZZW9uZ2RldW5ncG8tZG9uZyA4Z2EsIFllb25nZGV1bmdwby1ndQotCQkJCVNlb3VsICAxNTAtMDM4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUJCICAgKGhleCkJCVN5cmlueCBJbmR1c3RyaWFsIEVsZWN0cm9uaWNzCi0wMDE3QkIgICAgIChiYXNlIDE2KQkJU3lyaW54IEluZHVzdHJpYWwgRWxlY3Ryb25pY3MKLQkJCQlEZSBGYWN0b3JpaiAxMwotCQkJCVp3YWFnIE5vb3JkIEhvbGxhbmQgMTY4OSBBSwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE3LUJDICAgKGhleCkJCVRvdWNodHVuZXMgTXVzaWMgQ29ycG9yYXRpb24KLTAwMTdCQyAgICAgKGJhc2UgMTYpCQlUb3VjaHR1bmVzIE11c2ljIENvcnBvcmF0aW9uCi0JCQkJMyBQbGFjZSBkdSBDb21tZXJjZQotCQkJCTR0aCBGbG9vcgotCQkJCU1vbnRyZWFsIFF1ZWJlYyBIM0UgMUg3Ci0JCQkJQ0FOQURBCi0KLTAwLTE3LUJEICAgKGhleCkJCVRpYmV0c3lzdGVtCi0wMDE3QkQgICAgIChiYXNlIDE2KQkJVGliZXRzeXN0ZW0KLQkJCQk2RiBJVCBDYXN0bGUgSUkgNTUwLTEgR2FzYW4tZG9uZwotCQkJCVNlb3VsIEdldW1jaGVvbi1ndSAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUJFICAgKGhleCkJCVRyYXRlYyBUZWxlY29tIEIuVi4KLTAwMTdCRSAgICAgKGJhc2UgMTYpCQlUcmF0ZWMgVGVsZWNvbSBCLlYuCi0JCQkJRGUgU21hbGxlIFppamRlIDEyCi0JCQkJVmVlbmVuZGFhbCAgTkwwLTM5MDMgTFAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNy1CRiAgIChoZXgpCQlDb2hlcmVudCBSZXNlYXJjaCBMaW1pdGVkCi0wMDE3QkYgICAgIChiYXNlIDE2KQkJQ29oZXJlbnQgUmVzZWFyY2ggTGltaXRlZAotCQkJCTggUHJpbmNlc3MgTWV3cwotCQkJCUhvcmFjZSBSb2FkCi0JCQkJS2luZ3N0b24gdXBvbiBUaGFtZXMgU3VycmV5IEtUMSAyU1oKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy1DMCAgIChoZXgpCQlQdXJlVGVjaCBTeXN0ZW1zLCBJbmMuCi0wMDE3QzAgICAgIChiYXNlIDE2KQkJUHVyZVRlY2ggU3lzdGVtcywgSW5jLgotCQkJCTIwNzUgVyBQaW5uYWNsZSBQZWFrIFJvYWQgIzEyMAotCQkJCVBob2VuaXggQVogODUwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUMxICAgKGhleCkJCUNNIFByZWNpc2lvbiBUZWNobm9sb2d5IExURC4KLTAwMTdDMSAgICAgKGJhc2UgMTYpCQlDTSBQcmVjaXNpb24gVGVjaG5vbG9neSBMVEQuCi0JCQkJMiBGbCwgTm8uIDE3NywgQ2hpZW4tRSBSb2FkLCBDaHVuZy1IbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LUMyICAgKGhleCkJCVBpcmVsbGkgQnJvYWRiYW5kIFNvbHV0aW9ucwotMDAxN0MyICAgICAoYmFzZSAxNikJCVBpcmVsbGkgQnJvYWRiYW5kIFNvbHV0aW9ucwotCQkJCXYuU2FyY2EgMjIyCi0JCQkJTWlsYW5vICAyMDEyNgotCQkJCUlUQUxZCi0KLTAwLTE3LUMzICAgKGhleCkJCUtURiBUZWNobm9sb2dpZXMgSW5jLgotMDAxN0MzICAgICAoYmFzZSAxNikJCUtURiBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTR0aCBGbC4sIENlbnRyYWwgVG93ZXIsIDI2NS0zLCBTZW9oeXVuLURvbmcKLQkJCQlCdW5kbmFnLUd1Ci0JCQkJU3VuZ25hbS1DaXR5IEt5dW5nZ2ktRG8gNDYzLTc2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1DNCAgIChoZXgpCQlRdWFudGEgTWljcm9zeXN0ZW1zLCBJTkMuCi0wMDE3QzQgICAgIChiYXNlIDE2KQkJUXVhbnRhIE1pY3Jvc3lzdGVtcywgSU5DLgotCQkJCTE4OCBXZW5od2EgMm5kIFJELiwgS3VlaXNoYW4gSHNpYW5nCi0JCQkJVGFveXVhbiBTaGllbiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy1DNSAgIChoZXgpCQlTb25pY1dBTEwKLTAwMTdDNSAgICAgKGJhc2UgMTYpCQlTb25pY1dBTEwKLQkJCQkxMTQzIEJvcnJlZ2FzIEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctQzYgICAoaGV4KQkJQ3Jvc3MgTWF0Y2ggVGVjaG5vbG9naWVzIEluYwotMDAxN0M2ICAgICAoYmFzZSAxNikJCUNyb3NzIE1hdGNoIFRlY2hub2xvZ2llcyBJbmMKLQkJCQk0MDAsIGJvdWwuIEplYW4tTGVzYWdlCi0JCQkJSGFsbCBPdWVzdCwgU3VpdGUgMzAKLQkJCQlRdWViZWMsIFFjICBHMUsgOFcxCi0JCQkJQ0FOQURBCi0KLTAwLTE3LUM3ICAgKGhleCkJCU1BUkEgU3lzdGVtcyBDb25zdWx0aW5nIEFCCi0wMDE3QzcgICAgIChiYXNlIDE2KQkJTUFSQSBTeXN0ZW1zIENvbnN1bHRpbmcgQUIKLQkJCQlJbnN0cnVtZW50dmFnZW4gNDUKLQkJCQlTdG9ja2hvbG0gIDEyNiA1MwotCQkJCVNXRURFTgotCi0wMC0xNy1DOCAgIChoZXgpCQlLeW9jZXJhIE1pdGEgQ29ycG9yYXRpb24KLTAwMTdDOCAgICAgKGJhc2UgMTYpCQlLeW9jZXJhIE1pdGEgQ29ycG9yYXRpb24KLQkJCQkyLTE0LTksIFRhbWFnYXdhZGFpCi0JCQkJU2V0YWdheWEtV2FyZAotCQkJCVRva3lvICAxNTgtODYxMAotCQkJCUpBUEFOCi0KLTAwLTE3LUM5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE3QzkgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQk0MTYsIE1hZXRhbi0zRG9uZywgWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24gR2V5b25nZ2ktRG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1DQSAgIChoZXgpCQlRaXNkYSBDb3Jwb3JhdGlvbgotMDAxN0NBICAgICAoYmFzZSAxNikJCVFpc2RhIENvcnBvcmF0aW9uCi0JCQkJMTU3IFNoYW4gWWluZyBSb2FkLAotCQkJCUd1ZWlTaGFuIFRhb3l1YW4sIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctQ0IgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAxN0NCICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE5vcnRoIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg5LTEyMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUNDICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50Ci0wMDE3Q0MgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQKLQkJCQk2MDEgRGF0YSBEci4KLQkJCQlNL1MgMzIwCi0JCQkJUGxhbm8gVFggNzUwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUNEICAgKGhleCkJCUNFQyBXaXJlbGVzcyBSJkQgTHRkLgotMDAxN0NEICAgICAoYmFzZSAxNikJCUNFQyBXaXJlbGVzcyBSJkQgTHRkLgotCQkJCVdlc3QgTTUgQnVpbGRpbmcsTm8uMSBFYXN0IFJvYWQKLQkJCQlKaXV4aWFucWlhbyBDaGFvIFlhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwMTYKLQkJCQlDSElOQQotCi0wMC0xNy1DRSAgIChoZXgpCQlNQiBJbnRlcm5hdGlvbmFsIFRlbGVjb20gTGFicyBzcmwKLTAwMTdDRSAgICAgKGJhc2UgMTYpCQlNQiBJbnRlcm5hdGlvbmFsIFRlbGVjb20gTGFicyBzcmwKLQkJCQlWaWEgTWlsYW5vIDI1NQotCQkJCUJhcmFuemF0ZSBkaSBCb2xsYXRlIE1pbGFubyAyMDAyMQotCQkJCUlUQUxZCi0KLTAwLTE3LUNGICAgKGhleCkJCWlNQ0EtR21iSAotMDAxN0NGICAgICAoYmFzZSAxNikJCWlNQ0EtR21iSAotCQkJCURvcmZzdHJhc3NlIDI4YgotCQkJCUl0emVob2UgU2NobGVzd2lnLUhvbHN0ZWluIDI1NTI0Ci0JCQkJR0VSTUFOWQotCi0wMC0xNy1EMCAgIChoZXgpCQlPcHRpY29tIENvbW11bmljYXRpb25zLCBMTEMKLTAwMTdEMCAgICAgKGJhc2UgMTYpCQlPcHRpY29tIENvbW11bmljYXRpb25zLCBMTEMKLQkJCQkxMDUwIENvbm5lY3RpY3V0IEF2ZW51ZSwgTlcKLQkJCQlTdWl0ZSAxMDAwCi0JCQkJV2FzaGluZ3RvbiBEQyAyMDAzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRDEgICAoaGV4KQkJTm9ydGVsCi0wMDE3RDEgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE3LUQyICAgKGhleCkJCVRISU5MSU5YIFBUWSBMVEQKLTAwMTdEMiAgICAgKGJhc2UgMTYpCQlUSElOTElOWCBQVFkgTFRECi0JCQkJMzEgQ2Fyd29vbGEgQ3Jlc2NlbnQKLQkJCQlNb29sb29sYWJhIFF1ZWVuc2xhbmQgNDU1NwotCQkJCUFVU1RSQUxJQQotCi0wMC0xNy1EMyAgIChoZXgpCQlFdHltb3RpYyBSZXNlYXJjaCwgSW5jLgotMDAxN0QzICAgICAoYmFzZSAxNikJCUV0eW1vdGljIFJlc2VhcmNoLCBJbmMuCi0JCQkJNjEgTWFydGluIExhbmUKLQkJCQlFbGsgR3JvdmUgVmlsbGFnZSBJTCA2MDA2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRDQgICAoaGV4KQkJTW9uc29vbiBNdWx0aW1lZGlhLCBJbmMKLTAwMTdENCAgICAgKGJhc2UgMTYpCQlNb25zb29uIE11bHRpbWVkaWEsIEluYwotCQkJCTE3MzAgU291dGggQW1waGxldHQgYmx2ZC4gU3VpdGUgMTAxCi0JCQkJU2FuIE1hdGVvIENBIDk0NDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1ENSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxN0Q1ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pLUNpdHkgR3llb25nLUJ1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUQ2ICAgKGhleCkJCUJsdWVjaGlwcyBNaWNyb2hvdXNlIENvLixMdGQuCi0wMDE3RDYgICAgIChiYXNlIDE2KQkJQmx1ZWNoaXBzIE1pY3JvaG91c2UgQ28uLEx0ZC4KLQkJCQkyMTIvMiBNLjEwIFRhbWJvbCBVbW9uZwotCQkJCUFtcGh1ciBNdWFuZwotCQkJCUxhbXBodW4gIDUxMTUwCi0JCQkJVEhBSUxBTkQKLQotMDAtMTctRDcgICAoaGV4KQkJSU9OIEdlb3BoeXNpY2FsIENvcnBvcmF0aW9uIEluYy4KLTAwMTdENyAgICAgKGJhc2UgMTYpCQlJT04gR2VvcGh5c2ljYWwgQ29ycG9yYXRpb24gSW5jLgotCQkJCTg1MCBEb3JvdGh5Ci0JCQkJU3VpdGUgNTEwCi0JCQkJUmljaGFyZHNvbiBUZXhhcyA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRDggICAoaGV4KQkJTWFnbnVtIFNlbWljb25kdWN0b3IsIEluYy4KLTAwMTdEOCAgICAgKGJhc2UgMTYpCQlNYWdudW0gU2VtaWNvbmR1Y3RvciwgSW5jLgotCQkJCTU5MSBZb3NlbWl0ZSBEcml2ZQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1EOSAgIChoZXgpCQlBQUkgQ29ycG9yYXRpb24KLTAwMTdEOSAgICAgKGJhc2UgMTYpCQlBQUkgQ29ycG9yYXRpb24KLQkJCQlQLk8uIEJveCAxMjYKLQkJCQlIdW50IFZhbGxleSBNYXJ5bGFuZCAyMTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctREEgICAoaGV4KQkJU3BhbnMgTG9naWMKLTAwMTdEQSAgICAgKGJhc2UgMTYpCQlTcGFucyBMb2dpYwotCQkJCTIwMSBTYW4gQW50b25pbyBDaXJjbGUKLQkJCQkjMjgwCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctREIgICAoaGV4KQkJQ0FOS08gVEVDSE5PTE9HSUVTIElOQy4KLTAwMTdEQiAgICAgKGJhc2UgMTYpCQlDQU5LTyBURUNITk9MT0dJRVMgSU5DLgotCQkJCTUgRkwuIERPTkcgU1VORyBCTERHLiAxNy04Ci0JCQkJWU9JRE8tRE9ORywgWUVPTkdERVVOR1BPLUtVCi0JCQkJU0VPVUwgIDE1MC04NzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctREMgICAoaGV4KQkJREFFTVlVTkcgWkVSTzEKLTAwMTdEQyAgICAgKGJhc2UgMTYpCQlEQUVNWVVORyBaRVJPMQotCQkJCSM4MDksSHlvc3VuZyBJbnRlbGxpYW4KLQkJCQkxNTk0LTEgR3dhbnlhbmctZG9uZyxEb25nYW4tZ3UKLQkJCQlBbnlhbmctc2kgR3llb25nZ2ktZG8gNDMxLTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1ERCAgIChoZXgpCQlDbGlwc2FsIEF1c3RyYWxpYQotMDAxN0REICAgICAoYmFzZSAxNikJCUNsaXBzYWwgQXVzdHJhbGlhCi0JCQkJMzMtMzcgUG9ydCBXYWtlZmllbGQgUmQKLQkJCQlHZXBwcyBDcm9zcyBTb3V0aCBBdXN0cmFsaWEgNTA5NAotCQkJCUFVU1RSQUxJQQotCi0wMC0xNy1ERSAgIChoZXgpCQlBZHZhbnRhZ2UgU2l4IEx0ZAotMDAxN0RFICAgICAoYmFzZSAxNikJCUFkdmFudGFnZSBTaXggTHRkCi0JCQkJMjA4IEdlb3JnZSBTdAotCQkJCVNoYXcKLQkJCQlPTERIQU0gTGFuY3MgT0wyIDhEUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE3LURGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTdERiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUUwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTdFMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUUxICAgKGhleCkJCURBQ09TIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMTdFMSAgICAgKGJhc2UgMTYpCQlEQUNPUyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJMTA0IERhZXJ5dW5nLVRlY2hub3Rvd24gSUlJIDQ0OAotCQkJCUdhc2FuLURvbmcKLQkJCQlTRU9VTCBLZXVtY2hlb24tR3UgMTUzLTc3MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1FMiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMTdFMiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FMyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0UzICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FNCAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U0ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FNSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U1ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FNiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U2ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FNyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U3ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FOCAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U4ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FOSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U5ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FQSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0VBICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FQiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0VCICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FQyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0VDICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FRCAgIChoZXgpCQlXb29Kb29JVCBMdGQuCi0wMDE3RUQgICAgIChiYXNlIDE2KQkJV29vSm9vSVQgTHRkLgotCQkJCUhhbmtvb2t0aXJlIEIvRCA0dGggZmxvb3IsIDUwMS0xOSwKLQkJCQlTaW53b2wyIC1kb25nLAotCQkJCVlhbmdjaGVvbi1ndSwgU2VvdWwgMTU4LTgzOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1FRSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxN0VFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRUYgICAoaGV4KQkJSUJNIENvcnAKLTAwMTdFRiAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTIwNTEgTWlzc2lvbiBDb2xsZWdlIEJsdmQgCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUYwICAgKGhleCkJCVNaQ09NIEJyb2FkYmFuZCBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxN0YwICAgICAoYmFzZSAxNikJCVNaQ09NIEJyb2FkYmFuZCBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCVJvb20gNjAyIE5vLjggQnVpbGRpbmcgLFNoZW56aGVuIFNvZnR3YXJlIFBhcmssCi0JCQkJSGktVGVjaCBDLlpvbmUgLE5hbnNoYW4gQXJlYQotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xNy1GMSAgIChoZXgpCQlSZW51IEVsZWN0cm9uaWNzIFB2dCBMdGQKLTAwMTdGMSAgICAgKGJhc2UgMTYpCQlSZW51IEVsZWN0cm9uaWNzIFB2dCBMdGQKLQkJCQlTciBObyAyLzYsIEJhbmVyIFJvYWQsCi0JCQkJQmFuZXIsCi0JCQkJUHVuZSBNYWhhcmFzaHRyYSA0MTEwNDUKLQkJCQlJTkRJQQotCi0wMC0xNy1GMiAgIChoZXgpCQlBcHBsZSBDb21wdXRlcgotMDAxN0YyICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyCi0JCQkJMSBJbmZpbml0ZSBMb29wIE1TOjM1R1BPCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1GMyAgIChoZXgpCQlIYXJyaXMgQ29ycGFyYXRpb24KLTAwMTdGMyAgICAgKGJhc2UgMTYpCQlIYXJyaXMgQ29ycGFyYXRpb24KLQkJCQkxMDI1IFdlc3QgTkFTQSBCbHZkCi0JCQkJTWVsYm91cm5lIEZMIDMyOTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1GNCAgIChoZXgpCQlaRVJPTiBBTExJQU5DRQotMDAxN0Y0ICAgICAoYmFzZSAxNikJCVpFUk9OIEFMTElBTkNFCi0JCQkJIDNGIERPT1JJIEJVSUxELiAyNDQtMTQgYnVuamksIFBvaS1kb25nLCBHYW5nbmFtLWd1Ci0JCQkJU0VPVUwgIDEzNS05NjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctRjUgICAoaGV4KQkJTElHIE5FT1BURUsKLTAwMTdGNSAgICAgKGJhc2UgMTYpCQlMSUcgTkVPUFRFSwotCQkJCTkyNiBHb3NhZWstZG9uZwotCQkJCUd3b25zZW9uLWd1Ci0JCQkJU3V3b24tc2kgR3llb25nZ2ktZG8gNDQxLTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1GNiAgIChoZXgpCQlQeXJhbWlkIE1lcmlkZW4gSW5jLgotMDAxN0Y2ICAgICAoYmFzZSAxNikJCVB5cmFtaWQgTWVyaWRlbiBJbmMuCi0JCQkJNDUgR3JhY2V5IEF2ZS4KLQkJCQlNZXJpZGVuIENUIDA2NDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1GNyAgIChoZXgpCQlDRU0gU29sdXRpb25zIFB2dCBMdGQKLTAwMTdGNyAgICAgKGJhc2UgMTYpCQlDRU0gU29sdXRpb25zIFB2dCBMdGQKLQkJCQk0OSxLYW5pamEgQmhhdmFuCi0JCQkJUmFjZSBDb3Vyc2UgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwIDAwMQotCQkJCUlORElBCi0KLTAwLTE3LUY4ICAgKGhleCkJCU1vdGVjaCBJbmR1c3RyaWVzIEluYy4KLTAwMTdGOCAgICAgKGJhc2UgMTYpCQlNb3RlY2ggSW5kdXN0cmllcyBJbmMuCi0JCQkJNkYsIE5vLiAyNDgsIFNlYy4gMywgUGVpLVNoZW4gUmQuLAotCQkJCVNoZW4tS2VuZyBIc2lhbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIyMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctRjkgICAoaGV4KQkJRm9yY29tIFNwLiB6IG8uby4KLTAwMTdGOSAgICAgKGJhc2UgMTYpCQlGb3Jjb20gU3AuIHogby5vLgotCQkJCUdham93YSA2Ci0JCQkJUG96bmFuIFdMS1AgNjAtODE1Ci0JCQkJUE9MQU5ECi0KLTAwLTE3LUZBICAgKGhleCkJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotMDAxN0ZBICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotCQkJCU9uZSBNaWNyb3NvZnQgV2F5Ci0JCQkJUkVELUIvMTA3MgotCQkJCVJlZG1vbmQgV2FzaGluZ3RvbiA5ODA1Mi02Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1GQiAgIChoZXgpCQlGQQotMDAxN0ZCICAgICAoYmFzZSAxNikJCUZBCi0JCQkJNjI4LTcsIER1bmdjaG9uLURvbmcKLQkJCQlTZW91bCBLYW5nc2VvLUt1IDE1Ny04MzgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctRkMgICAoaGV4KQkJU3VwcmVtYSBJbmMuCi0wMDE3RkMgICAgIChiYXNlIDE2KQkJU3VwcmVtYSBJbmMuCi0JCQkJMTZGIFBhcmt2aWV3IE9mZmljZSBUb3dlciwKLQkJCQlKZW9uZ2phLWRvbmcsIEJ1bmRhbmctZ3UsCi0JCQkJU2VvbmduYW0gR3llb25nZ2kgNDYzLTg2MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1GRCAgIChoZXgpCQlBbXVsZXQgSG90a2V5Ci0wMDE3RkQgICAgIChiYXNlIDE2KQkJQW11bGV0IEhvdGtleQotCQkJCUNhdmFsaWVyIFJvYWQKLQkJCQlIZWF0aGZpZWxkIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJSGVhdGhmaWVsZCBEZXZvbiBUUTEyIDZUUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE3LUZFICAgKGhleCkJCVRBTE9TIFNZU1RFTSBJTkMuCi0wMDE3RkUgICAgIChiYXNlIDE2KQkJVEFMT1MgU1lTVEVNIElOQy4KLQkJCQk2MTkxIENPUk5FUlNUT05FIENULiBTVEUgIzEwOQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRkYgICAoaGV4KQkJUExBWUxJTkUgQ28uLEx0ZC4KLTAwMTdGRiAgICAgKGJhc2UgMTYpCQlQTEFZTElORSBDby4sTHRkLgotCQkJCTEtNC0yMSBNT1RPQUtBU0FLQQotCQkJCU1JTkFUT0tVCi0JCQkJVE9LWU8gIDEwNy0wMDUxCi0JCQkJSkFQQU4KLQotMDAtMTgtMDAgICAoaGV4KQkJVU5JR1JBTkQgTFRECi0wMDE4MDAgICAgIChiYXNlIDE2KQkJVU5JR1JBTkQgTFRECi0JCQkJN0YtMiwgTm8uNDUsIEppbmdkZSBTdC4sIEpob25naGUgQ2l0eSwKLQkJCQlUYWlwZWkgQ291bnR5Ci0JCQkJMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0wMSAgIChoZXgpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotMDAxODAxICAgICAoYmFzZSAxNikJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wMiAgIChoZXgpCQlBbHBoYSBOZXR3b3JrcyBJbmMuCi0wMDE4MDIgICAgIChiYXNlIDE2KQkJQWxwaGEgTmV0d29ya3MgSW5jLgotCQkJCU5vLjggTGktc2hpbmcgU2V2ZW50aCBSb2FkLFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0wMyAgIChoZXgpCQlBcmNTb2Z0IFNoYW5naGFpIENvLiBMVEQKLTAwMTgwMyAgICAgKGJhc2UgMTYpCQlBcmNTb2Z0IFNoYW5naGFpIENvLiBMVEQKLQkJCQkyMHRoIEZsb29yLCBTdWl0ZSAoRUFTVCkgMjAwOCwgQ2hpbmEgTWVyY2hhbnRzIFBsYXphLCAzMzMKLQkJCQlTaGFuZ2hhaSAgMjAwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMTgtMDQgICAoaGV4KQkJRS1URUsgRElHSVRBTCBURUNITk9MT0dZIExJTUlURUQKLTAwMTgwNCAgICAgKGJhc2UgMTYpCQlFLVRFSyBESUdJVEFMIFRFQ0hOT0xPR1kgTElNSVRFRAotCQkJCVVOSVQxNTIwLDE1L0YuLFRPV0VSIDIsR1JBTkQgQ0VOVFVSWSBQTEFDRSwxOTMgUFJJTkNFIEVEV0FSRCBST0FEIFdFU1QsS09XTE9PTiwKLQkJCQlIT05HIEtPTkcKLQotMDAtMTgtMDUgICAoaGV4KQkJQmVpamluZyBJbkhhbmQgTmV0d29ya2luZyBUZWNobm9sb2d5IENvLixMdGQuCi0wMDE4MDUgICAgIChiYXNlIDE2KQkJQmVpamluZyBJbkhhbmQgTmV0d29ya2luZyBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJMy9GLEJ1aWxkaW5nIEEsR0VNIFRlY2hjaGVudGVyCi0JCQkJTm8sOSAzcmQgU3RyZWV0IG9mIFNoYW5nZGkKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0xOC0wNiAgIChoZXgpCQlIb2trZWkgSW5kdXN0cmllcyBDby4sIEx0ZC4KLTAwMTgwNiAgICAgKGJhc2UgMTYpCQlIb2trZWkgSW5kdXN0cmllcyBDby4sIEx0ZC4KLQkJCQlJbWFoaXJhIDQzMgotCQkJCUhha3VzYW4gSXNoaWthd2EgOTI0LTA4MjcKLQkJCQlKQVBBTgotCi0wMC0xOC0wNyAgIChoZXgpCQlGYW5zdGVsIENvcnAuCi0wMDE4MDcgICAgIChiYXNlIDE2KQkJRmFuc3RlbCBDb3JwLgotCQkJCTc0NjYgRS4gTW9udGUgQ3Jpc3RvIEF2ZS4KLQkJCQlTY290dHNkYWxlIEFyaXpvbmEgODUyNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTA4ICAgKGhleCkJCVNpZ2h0TG9naXgsIEluYy4KLTAwMTgwOCAgICAgKGJhc2UgMTYpCQlTaWdodExvZ2l4LCBJbmMuCi0JCQkJNzQ1IEFsZXhhbmRlciBSb2FkCi0JCQkJUHJpbmNldG9uIE5KIDA4NTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wOSAgIChoZXgpCQlDUkVTWU4KLTAwMTgwOSAgICAgKGJhc2UgMTYpCQlDUkVTWU4KLQkJCQk4LTIyLEphbXdvbi1kb25nCi0JCQkJU2VvdWwgU2VvY2hvLUd1ICMxMzctOTAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTBBICAgKGhleCkJCU1lcmFraSwgSW5jLgotMDAxODBBICAgICAoYmFzZSAxNikJCU1lcmFraSwgSW5jLgotCQkJCTk5IFJob2RlIElzbGFuZCBTdC4KLQkJCQlTYW4gRnJhbmNpc2NvLCBDQSA5NDEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtMEIgICAoaGV4KQkJQnJpbGxpYW50IFRlbGVjb21tdW5pY2F0aW9ucwotMDAxODBCICAgICAoYmFzZSAxNikJCUJyaWxsaWFudCBUZWxlY29tbXVuaWNhdGlvbnMKLQkJCQkzMDcgT3JjaGFyZCBDaXR5IERyLgotCQkJCVN1aXRlIDEwMgotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wQyAgIChoZXgpCQlPcHRlbGlhbiBBY2Nlc3MgTmV0d29ya3MKLTAwMTgwQyAgICAgKGJhc2UgMTYpCQlPcHRlbGlhbiBBY2Nlc3MgTmV0d29ya3MKLQkJCQkyMkEtMTA1MSBCYXh0ZXIgUm9hZAotCQkJCU90dGF3YSBPbnRhcmlvIEsyQyAzUDIKLQkJCQlDQU5BREEKLQotMDAtMTgtMEQgICAoaGV4KQkJVGVyYWJ5dGVzIFNlcnZlciBTdG9yYWdlIFRlY2ggQ29ycAotMDAxODBEICAgICAoYmFzZSAxNikJCVRlcmFieXRlcyBTZXJ2ZXIgU3RvcmFnZSBUZWNoIENvcnAKLQkJCQkxNDI1NyBFIERvbiBKdWxpYW4gUmQKLQkJCQlDaXR5IG9mIEluZHVzdHJ5IENBIDkxNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wRSAgIChoZXgpCQlBdmVnYSBTeXN0ZW1zCi0wMDE4MEUgICAgIChiYXNlIDE2KQkJQXZlZ2EgU3lzdGVtcwotCQkJCTU5IFZpY3RvcmlhIFN0cmVldAotCQkJCU1jTWFob25zIFBvaW50IE5TVyAyMDYwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTE4LTBGICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE4MEYgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgRGVubWFyayAxNzkwVgotCQkJCURFTk1BUksKLQotMDAtMTgtMTAgICAoaGV4KQkJSVBUcmFkZSBTLkEuCi0wMDE4MTAgICAgIChiYXNlIDE2KQkJSVBUcmFkZSBTLkEuCi0JCQkJUGFyYyBTY2llbnRpZmlxdWUKLQkJCQlBdmVudWUgZGVzIENoYXNzZXVycyBBcmRlbm5haXMsIDQKLQkJCQlTYXJ0LVRpbG1hbiBXYWxsb25pZSA0MDMxCi0JCQkJQkVMR0lVTQotCi0wMC0xOC0xMSAgIChoZXgpCQlOZXVyb3MgVGVjaG5vbG9neSBJbnRlcm5hdGlvbmFsLCBMTEMuCi0wMDE4MTEgICAgIChiYXNlIDE2KQkJTmV1cm9zIFRlY2hub2xvZ3kgSW50ZXJuYXRpb25hbCwgTExDLgotCQkJCTY1MCBXIExha2UgU3QKLQkJCQlTdWl0ZSAzMzAKLQkJCQlDaGljYWdvIElMIDYwNjYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0xMiAgIChoZXgpCQlCZWlqaW5nIFhpbndlaSBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDE4MTIgICAgIChiYXNlIDE2KQkJQmVpamluZyBYaW53ZWkgVGVsZWNvbSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVhpbndlaSBCbGRnLiwgTm8uIDcgWmhvbmdndWFuY3VuIFNvZnR3YXJlIFBhcmssCi0JCQkJTm8uIDggRG9uZ2JlaXdhbmcgV2VzdCBSb2FkCi0JCQkJSGFpZGlhbiBEaXN0cmljdCBCZWlqaW5nIDEwMDA5NAotCQkJCUNISU5BCi0KLTAwLTE4LTEzICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDE4MTMgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa2FuZSAyMjE4OAotCQkJCVNXRURFTgotCi0wMC0xOC0xNCAgIChoZXgpCQlNaXR1dG95byBDb3Jwb3JhdGlvbgotMDAxODE0ICAgICAoYmFzZSAxNikJCU1pdHV0b3lvIENvcnBvcmF0aW9uCi0JCQkJMjAtMSwgU2FrYWRvIDEtY2hvbWUsIFRha2F0c3Uta3UsCi0JCQkJS2F3YXNha2ktc2hpICAyMTMtODUzMwotCQkJCUpBUEFOCi0KLTAwLTE4LTE1ICAgKGhleCkJCUdaIFRlY2hub2xvZ2llcywgSW5jLgotMDAxODE1ICAgICAoYmFzZSAxNikJCUdaIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCVJvb20gMSwgNUYuLCBOby45NCwgQmFvamhvbmcgUmQuCi0JCQkJU2luZGlhbiBDaXR5Ci0JCQkJVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTE2ICAgKGhleCkJCVViaXhvbiBDby4sIEx0ZC4KLTAwMTgxNiAgICAgKGJhc2UgMTYpCQlVYml4b24gQ28uLCBMdGQuCi0JCQkJQ2hlb25nZG9uZyBCdWlsZGluZyAyRgotCQkJCTEzNDQtMjkgU2VvY2hvIGRvbmcgU2VvY2hvIGt1Ci0JCQkJU2VvdWwgIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtMTcgICAoaGV4KQkJRC4gRS4gU2hhdyBSZXNlYXJjaCwgTExDCi0wMDE4MTcgICAgIChiYXNlIDE2KQkJRC4gRS4gU2hhdyBSZXNlYXJjaCwgTExDCi0JCQkJMTIwIFcuIDQ1dGggU3QuLCAzM3JkIEZsb29yCi0JCQkJTmV3IFlvcmsgTlkgMTAwMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTE4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTgxOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTE5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTgxOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTFBICAgKGhleCkJCUFWZXJNZWRpYSBJbmZvcm1hdGlvbiBJbmMuCi0wMDE4MUEgICAgIChiYXNlIDE2KQkJQVZlck1lZGlhIEluZm9ybWF0aW9uIEluYy4KLQkJCQk3RiwgTm8uIDEzNywgSmlhbiBZaSBSZC4sCi0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0xQiAgIChoZXgpCQlUYWlKaW4gTWV0YWwgQ28uLCBMdGQuCi0wMDE4MUIgICAgIChiYXNlIDE2KQkJVGFpSmluIE1ldGFsIENvLiwgTHRkLgotCQkJCSM5NS05LCBIYW5nZG9uZzctR2EsIEpvb25nLUd1Ci0JCQkJSW4gQ2hlb24gIDQwMC0wMzcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtMUMgICAoaGV4KQkJRXh0ZXJpdHkgTGltaXRlZAotMDAxODFDICAgICAoYmFzZSAxNikJCUV4dGVyaXR5IExpbWl0ZWQKLQkJCQlSaWRnZSBXYXksIEhpbGxlbmQgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlEYWxnZXR5IEJheQotCQkJCUR1bmZlcm1saW5lIEZpZmUgS1kxMSA5SkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC0xRCAgIChoZXgpCQlBU0lBIEVMRUNUUk9OSUNTIENPLixMVEQKLTAwMTgxRCAgICAgKGJhc2UgMTYpCQlBU0lBIEVMRUNUUk9OSUNTIENPLixMVEQKLQkJCQk2MjAtMyBET0NIRU9OLURPTkcKLQkJCQlHV0FOR1NBTi1HVQotCQkJCUdXQU5HSlUgIDUwNi0zMDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtMUUgICAoaGV4KQkJR0RYIFRlY2hub2xvZ2llcyBMdGQuCi0wMDE4MUUgICAgIChiYXNlIDE2KQkJR0RYIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJNjEtNjMgQmFjayBTbmVkZG9uIFN0cmVldAotCQkJCVBhaXNsZXkgUmVuZnJld3NoaXJlIFBBMyAyREQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC0xRiAgIChoZXgpCQlQYWxtbWljcm8gQ29tbXVuaWNhdGlvbnMKLTAwMTgxRiAgICAgKGJhc2UgMTYpCQlQYWxtbWljcm8gQ29tbXVuaWNhdGlvbnMKLQkJCQlSb29tIDA2MTEsIEJsZGcuQiBUc2luZ2h1YSBUb25nZmFuZyBUZWNobm9sb2d5IFBsYXphCi0JCQkJMSBXYW5nemh1YW5nIFJvYWQKLQkJCQlCZWlqaW5nICAxMDAwODMKLQkJCQlDSElOQQotCi0wMC0xOC0yMCAgIChoZXgpCQl3NW5ldHdvcmtzCi0wMDE4MjAgICAgIChiYXNlIDE2KQkJdzVuZXR3b3JrcwotCQkJCTQ4Mzg5IEZyZW1vbnQgQmx2ZAotCQkJCVN1aXRlIDEwNgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTIxICAgKGhleCkJCVNJTkRPUklDT0gKLTAwMTgyMSAgICAgKGJhc2UgMTYpCQlTSU5ET1JJQ09ICi0JCQkJMjc3LTIyLCAyZ2EsIFN1bmdzdS1kb25nLCBTdW5nZG9uZy1ndSwKLQkJCQlTZW91bCAgMTMzLTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC0yMiAgIChoZXgpCQlDRUMgVEVMRUNPTSBDTy4sTFRELgotMDAxODIyICAgICAoYmFzZSAxNikJCUNFQyBURUxFQ09NIENPLixMVEQuCi0JCQkJMTB0aEZMLkNFQyBCdWlsZGluZyw2IFpob25nZ3VhbmN1biBTb3V0aCBTdHJlZXQKLQkJCQlCZWlqaW5nICAxMDAwODYKLQkJCQlDSElOQQotCi0wMC0xOC0yMyAgIChoZXgpCQlEZWx0YSBFbGVjdHJvbmljcywgSW5jLgotMDAxODIzICAgICAoYmFzZSAxNikJCURlbHRhIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMTg2IFJ1ZXkgS3VhbmcgUm9hZCwgTmVpaHUsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTI0ICAgKGhleCkJCUtpbWFsZGkgRWxlY3Ryb25pY3MsIFMuTC4KLTAwMTgyNCAgICAgKGJhc2UgMTYpCQlLaW1hbGRpIEVsZWN0cm9uaWNzLCBTLkwuCi0JCQkJQ3RyYS4gZGUgUnViaSwgMjkyIEIKLQkJCQlQb2wuIEluZC4gQ2FuIEd1aXRhcmQKLQkJCQlUZXJyYXNzYSBCYXJjZWxvbmEgMDgyMjgKLQkJCQlTUEFJTgotCi0wMC0xOC0yNSAgIChoZXgpCQlQUklWQVRFCi0wMDE4MjUgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTE4LTI2ICAgKGhleCkJCUNhbGUgQWNjZXNzIEFCCi0wMDE4MjYgICAgIChiYXNlIDE2KQkJQ2FsZSBBY2Nlc3MgQUIKLQkJCQlCb3ggMTMwNwotCQkJCVNvbG5hICBTRS0xNzEgMjUKLQkJCQlTV0VERU4KLQotMDAtMTgtMjcgICAoaGV4KQkJTkVDIFVOSUZJRUQgU09MVVRJT05TIE5FREVSTEFORCBCLlYuCi0wMDE4MjcgICAgIChiYXNlIDE2KQkJTkVDIFVOSUZJRUQgU09MVVRJT05TIE5FREVSTEFORCBCLlYuCi0JCQkJQU5UT04gUEhJTElQU1dFRyAxCi0JCQkJSElMVkVSU1VNIE5IIDEyMjNLWgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE4LTI4ICAgKGhleCkJCWUydiB0ZWNobm9sb2dpZXMgKFVLKSBsdGQuCi0wMDE4MjggICAgIChiYXNlIDE2KQkJZTJ2IHRlY2hub2xvZ2llcyAoVUspIGx0ZC4KLQkJCQkxMDYgV2F0ZXJob3VzZSBMYW5lCi0JCQkJQ2hlbG1zZm9yZCBFc3NleCBDTTEgMlFVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTgtMjkgICAoaGV4KQkJR2F0c29tZXRlcgotMDAxODI5ICAgICAoYmFzZSAxNikJCUdhdHNvbWV0ZXIKLQkJCQlDbGFlcyBUaWxseXdlZyAyCi0JCQkJSGFhcmxlbSBOb29yZC1Ib2xsYW5kIDIwMzEgQ1cKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xOC0yQSAgIChoZXgpCQlUYWl3YW4gVmlkZW8gJiBNb25pdG9yCi0wMDE4MkEgICAgIChiYXNlIDE2KQkJVGFpd2FuIFZpZGVvICYgTW9uaXRvcgotCQkJCTNGLCAxNDEgSmVuIEFpIFJkIFNlYy4gMwotCQkJCVRhaXBlaSBDaXR5ICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTJCICAgKGhleCkJCVNvZnRpZXIKLTAwMTgyQiAgICAgKGJhc2UgMTYpCQlTb2Z0aWVyCi0JCQkJVGlkaGFyIDMKLQkJCQlNaWxsZW5pdW0gYmxkZyBmbG9vciAxMQotCQkJCVJhJ2FuYW5hIG5vbmUgNDM2NjUKLQkJCQlJU1JBRUwKLQotMDAtMTgtMkMgICAoaGV4KQkJQXNjZW5kIE5ldHdvcmtzLCBJbmMuCi0wMDE4MkMgICAgIChiYXNlIDE2KQkJQXNjZW5kIE5ldHdvcmtzLCBJbmMuCi0JCQkJTm8uIDQgLSA0LCBMYW5lIDQxMywgQ2h1bmdDaGFuIFJvYWQsCi0JCQkJQmVuUXVhbyBDaXR5IFRhaXBlaSAyMjAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTJEICAgKGhleCkJCUFydGVjIEdyb3VwIE9VCi0wMDE4MkQgICAgIChiYXNlIDE2KQkJQXJ0ZWMgR3JvdXAgT1UKLQkJCQlUdXJpIDEwQwotCQkJCVRhbGxpbm4gSGFyanVtYWEgMTEzMTMKLQkJCQlFU1RPTklBCi0KLTAwLTE4LTJFICAgKGhleCkJCVhTdHJlYW1IRCwgTExDCi0wMDE4MkUgICAgIChiYXNlIDE2KQkJWFN0cmVhbUhELCBMTEMKLQkJCQk3OTAwQiBXZXN0cGFyayBEcml2ZQotCQkJCVN1aXRlIDIwMFQKLQkJCQlNY0xlYW4gVkEgMjIxMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTJGICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MkYgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTMwICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MzAgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTMxICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MzEgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTMyICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MzIgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTMzICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MzMgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTM0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MzQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTM1ICAgKGhleCkJCVRob3JhdGVjIC8gSVRDCi0wMDE4MzUgICAgIChiYXNlIDE2KQkJVGhvcmF0ZWMgLyBJVEMKLQkJCQkyNjU2IFBhdHRvbiBSb2FkCi0JCQkJUm9zZXZpbGxlIE1OIDU1MTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0zNiAgIChoZXgpCQlSZWxpYW5jZSBFbGVjdHJpYyBMaW1pdGVkCi0wMDE4MzYgICAgIChiYXNlIDE2KQkJUmVsaWFuY2UgRWxlY3RyaWMgTGltaXRlZAotCQkJCTItMy0yIEZ1a3V1cmEsIEthbmF6YXdhLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjM2LTg2NDEKLQkJCQlKQVBBTgotCi0wMC0xOC0zNyAgIChoZXgpCQlVbml2ZXJzYWwgQUJJVCBDby4sIEx0ZC4KLTAwMTgzNyAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgQUJJVCBDby4sIEx0ZC4KLQkJCQk3RiwgTm8uIDMyMyBZYW5nZ3VhbmcgU3QuLAotCQkJCU5laWh1IFRhaXBlaSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTM4ICAgKGhleCkJCVBhbkFjY2VzcyBDb21tdW5pY2F0aW9ucyxJbmMuCi0wMDE4MzggICAgIChiYXNlIDE2KQkJUGFuQWNjZXNzIENvbW11bmljYXRpb25zLEluYy4KLQkJCQlGbG9vciA4LFRvd2VyIEIsR2xvYmFsIFRyYWRlIENlbnRlciwzNiBCZWlzYW5odWFuZG9uZ2x1LERvbmdjaGVuZyBEaXN0cmljdAotCQkJCUJlaWppbmcgMTAwMDEzCi0JCQkJQ0hJTkEKLQotMDAtMTgtMzkgICAoaGV4KQkJQ2lzY28tTGlua3N5cyBMTEMKLTAwMTgzOSAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzIExMQwotCQkJCTEyMSBUaGVvcnkKLQkJCQlJcnZpbmUgQ0EgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTNBICAgKGhleCkJCVdlc3RlbGwgVGVjaG5vbG9naWVzCi0wMDE4M0EgICAgIChiYXNlIDE2KQkJV2VzdGVsbCBUZWNobm9sb2dpZXMKLQkJCQk3NTAgTi4gQ29tbW9ucyBEci4KLQkJCQlBdXJvcmEgSUwgNjA1MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTNCICAgKGhleCkJCUNFTklUUyBDby4sIEx0ZC4KLTAwMTgzQiAgICAgKGJhc2UgMTYpCQlDRU5JVFMgQ28uLCBMdGQuCi0JCQkJM0YsIFlhbmdqYWUgQmxkZy4sIDI2NC0zCi0JCQkJWWFuZ2phZS1Eb25nLCBTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC0zQyAgIChoZXgpCQlFbmNvcmUgU29mdHdhcmUgTGltaXRlZAotMDAxODNDICAgICAoYmFzZSAxNikJCUVuY29yZSBTb2Z0d2FyZSBMaW1pdGVkCi0JCQkJNkYgTGVvIENvbXBsZXgKLQkJCQk0NCBSZXNpZGVuY3kgQ3Jvc3MgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwMDI1Ci0JCQkJSU5ESUEKLQotMDAtMTgtM0QgICAoaGV4KQkJVmVydGV4IExpbmsgQ29ycG9yYXRpb24KLTAwMTgzRCAgICAgKGJhc2UgMTYpCQlWZXJ0ZXggTGluayBDb3Jwb3JhdGlvbgotCQkJCU1laXRldHN1IEZ1ZG9zYW4gVGFrZWJhc2hpIEJsZGcgNkYKLQkJCQkzLTE1IEthbmRhIE5pc2hpa2ljaG8KLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMS0wMDU0Ci0JCQkJSkFQQU4KLQotMDAtMTgtM0UgICAoaGV4KQkJRGlnaWxlbnQsIEluYwotMDAxODNFICAgICAoYmFzZSAxNikJCURpZ2lsZW50LCBJbmMKLQkJCQkyMTUgRS4gTWFpbiBTdC4KLQkJCQlTdWl0ZSBECi0JCQkJUHVsbG1hbiBXQSA5OTE2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtM0YgICAoaGV4KQkJMldpcmUsIEluYwotMDAxODNGICAgICAoYmFzZSAxNikJCTJXaXJlLCBJbmMKLQkJCQkxNzA0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00MCAgIChoZXgpCQkzIFBob2VuaXgsIEluYy4KLTAwMTg0MCAgICAgKGJhc2UgMTYpCQkzIFBob2VuaXgsIEluYy4KLQkJCQkxMzEzNSBMZWUgSmFja3NvbiBId3kKLQkJCQlTdWl0ZSAzMzAKLQkJCQlGYWlyZmF4IFZpcmdpbmlhIDIyMDMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00MSAgIChoZXgpCQlIaWdoIFRlY2ggQ29tcHV0ZXIgQ29ycAotMDAxODQxICAgICAoYmFzZSAxNikJCUhpZ2ggVGVjaCBDb21wdXRlciBDb3JwCi0JCQkJMjMgSHNpbiBIdWEgUmQuCi0JCQkJVGFveXVhbiAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC00MiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxODQyICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwIFYKLQkJCQlERU5NQVJLCi0KLTAwLTE4LTQzICAgKGhleCkJCURhd2V2aXNpb24gTHRkCi0wMDE4NDMgICAgIChiYXNlIDE2KQkJRGF3ZXZpc2lvbiBMdGQKLQkJCQkxOTcgSGlnaCBTdHJlZXQKLQkJCQlDb3R0ZW5oYW0gQ2FtYnJpZGdlIENCNCA4UlgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC00NCAgIChoZXgpCQlIZWFkcyBVcCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTg0NCAgICAgKGJhc2UgMTYpCQlIZWFkcyBVcCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyMDMzIENoZW5uYXVsdCBEcml2ZSwgU3VpdGUgMTAwCi0JCQkJQ2Fycm9sbHRvbiBUZXhhcyA3NTAwNi01MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00NSAgIChoZXgpCQlOUEwgUHVsc2FyIEx0ZC4KLTAwMTg0NSAgICAgKGJhc2UgMTYpCQlOUEwgUHVsc2FyIEx0ZC4KLQkJCQlaYWhhcm92YSwgMThhCi0JCQkJUGVuemEgIDQ0MDA0NAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xOC00NiAgIChoZXgpCQlDcnlwdG8gUy5BLgotMDAxODQ2ICAgICAoYmFzZSAxNikJCUNyeXB0byBTLkEuCi0JCQkJVi4gSXBpcm91IDQ1Ci0JCQkJTWFyb3VzaSBBdGhlbnMgMTUxMjUKLQkJCQlHUkVFQ0UKLQotMDAtMTgtNDcgICAoaGV4KQkJQWNlTmV0IFRlY2hub2xvZ3kgSW5jLgotMDAxODQ3ICAgICAoYmFzZSAxNikJCUFjZU5ldCBUZWNobm9sb2d5IEluYy4KLQkJCQkxMzMgVmllbm5hIERyLgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00OCAgIChoZXgpCQlWZWNpbWEgTmV0d29ya3MgSW5jLgotMDAxODQ4ICAgICAoYmFzZSAxNikJCVZlY2ltYSBOZXR3b3JrcyBJbmMuCi0JCQkJMTUwIENhcmRpbmFsIFBsYWNlCi0JCQkJU2Fza2F0b29uIFNrIFM3TCA2SDcKLQkJCQlDQU5BREEKLQotMDAtMTgtNDkgICAoaGV4KQkJUGlnZW9uIFBvaW50IFN5c3RlbXMKLTAwMTg0OSAgICAgKGJhc2UgMTYpCQlQaWdlb24gUG9pbnQgU3lzdGVtcwotCQkJCTIxOTEgUy4gRWwgQ2FtaW5vIFJlYWwKLQkJCQlTdWl0ZSAyMDkKLQkJCQlPY2VhbnNpZGUgQ0EgOTIwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTRBICAgKGhleCkJCUNhdGNoZXIsIEluYy4KLTAwMTg0QSAgICAgKGJhc2UgMTYpCQlDYXRjaGVyLCBJbmMuCi0JCQkJNTg2NCBPd2VucyBBdmUuCi0JCQkJU3VpdGUgMTAxCi0JCQkJQ2FybHNiYWQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTRCICAgKGhleCkJCUxhcyBWZWdhcyBHYW1pbmcsIEluYy4KLTAwMTg0QiAgICAgKGJhc2UgMTYpCQlMYXMgVmVnYXMgR2FtaW5nLCBJbmMuCi0JCQkJNDAwMCBXZXN0IEFsaSBCYWJhIExhbmUsIFN1aXRlIEQKLQkJCQlMYXMgVmVnYXMgTmV2YWRhIDg5MTE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00QyAgIChoZXgpCQlCb2dlbiBDb21tdW5pY2F0aW9ucwotMDAxODRDICAgICAoYmFzZSAxNikJCUJvZ2VuIENvbW11bmljYXRpb25zCi0JCQkJNTAgU3ByaW5nIFN0LgotCQkJCVJhbXNleSBOSiAwNzQ0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNEQgICAoaGV4KQkJTmV0Z2VhciBJbmMuCi0wMDE4NEQgICAgIChiYXNlIDE2KQkJTmV0Z2VhciBJbmMuCi0JCQkJNDUwMCBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNEUgICAoaGV4KQkJTGlhbmhlIFRlY2hub2xvZ2llcywgSW5jLgotMDAxODRFICAgICAoYmFzZSAxNikJCUxpYW5oZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkzRiwgIzExOSwgRGFIdSBTaGFuWmh1YW5nIFN0LgotCQkJCU5laWh1IERpc3RyaWN0IFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtNEYgICAoaGV4KQkJOCBXYXlzIFRlY2hub2xvZ3kgQ29ycC4KLTAwMTg0RiAgICAgKGJhc2UgMTYpCQk4IFdheXMgVGVjaG5vbG9neSBDb3JwLgotCQkJCTJGLTEsIE5vLiAyMTYsIFNlYy4gMywgUm9vc2V2ZWx0IFJkLgotCQkJCVRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTUwICAgKGhleCkJCVNlY2ZvbmUgS2Z0Ci0wMDE4NTAgICAgIChiYXNlIDE2KQkJU2VjZm9uZSBLZnQKLQkJCQk1MSBCZXJjc2VueWkgc3RyCi0JCQkJSmFzemJlcmVueSAgNTEwMAotCQkJCUhVTkdBUlkKLQotMDAtMTgtNTEgICAoaGV4KQkJU1dzb2Z0Ci0wMDE4NTEgICAgIChiYXNlIDE2KQkJU1dzb2Z0Ci0JCQkJMTM3NTUgU3VucmlzZSBWYWxsZXkgRHJpdmUsIFN1aXRlIDYwMAotCQkJCUhlcm5kb24gVkEgMjAxNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTUyICAgKGhleCkJCVN0b3JMaW5rIFNlbWljb25kdWN0b3JzLCBJbmMuCi0wMDE4NTIgICAgIChiYXNlIDE2KQkJU3RvckxpbmsgU2VtaWNvbmR1Y3RvcnMsIEluYy4KLQkJCQkxODA0IE4uIFNob3JlbGluZSBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAyNDAKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC01MyAgIChoZXgpCQlBdGVyYSBOZXR3b3JrcyBMVEQuCi0wMDE4NTMgICAgIChiYXNlIDE2KQkJQXRlcmEgTmV0d29ya3MgTFRELgotCQkJCTMxLCBIYWJhcnplbCBTdC4KLQkJCQlSYW1hdCBIYWNoYXlhbAotCQkJCVRlbC1Bdml2ICA2OTcxMAotCQkJCUlTUkFFTAotCi0wMC0xOC01NCAgIChoZXgpCQlBcmdhcmQgQ28uLCBMdGQKLTAwMTg1NCAgICAgKGJhc2UgMTYpCQlBcmdhcmQgQ28uLCBMdGQKLQkJCQkyNTcxIExhcmRwcmFvIFJkLgotCQkJCXdhbmd0aG9uZ2xhbmcgQmFuZ2tvayAxMDMxMAotCQkJCVRIQUlMQU5ECi0KLTAwLTE4LTU1ICAgKGhleCkJCUFlcm9tYXJpdGltZSBTeXN0ZW1iYXUgR21iSAotMDAxODU1ICAgICAoYmFzZSAxNikJCUFlcm9tYXJpdGltZSBTeXN0ZW1iYXUgR21iSAotCQkJCUx1ZHdpZy1FcmhhcmQtU3RyLiAxNgotCQkJCUQtODUzNzUgTmV1ZmFocm4gCi0JCQkJR0VSTUFOWQotCi0wMC0xOC01NiAgIChoZXgpCQlFeWVGaSwgSW5jCi0wMDE4NTYgICAgIChiYXNlIDE2KQkJRXllRmksIEluYwotCQkJCTE0OSBDb21tb253ZWFsdGggRHJpdmUKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC01NyAgIChoZXgpCQlVbmlsZXZlciBSJkQKLTAwMTg1NyAgICAgKGJhc2UgMTYpCQlVbmlsZXZlciBSJkQKLQkJCQlCbGRnLiA1MAotCQkJCVNoYXJuYnJvb2sKLQkJCQlCZWRmb3JkIEJlZGZvcmRzaGlyZSBNSzQ0IDFMUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE4LTU4ICAgKGhleCkJCVRhZ01hc3RlciBBQgotMDAxODU4ICAgICAoYmFzZSAxNikJCVRhZ01hc3RlciBBQgotCQkJCUtyb25ib3Jnc2dyYW5kIDEKLQkJCQlLaXN0YSBTdG9ja2hvbG0gUy0xNjQ4NwotCQkJCVNXRURFTgotCi0wMC0xOC01OSAgIChoZXgpCQlTdHJhd2JlcnJ5IExpbnV4IENvLixMdGQuCi0wMDE4NTkgICAgIChiYXNlIDE2KQkJU3RyYXdiZXJyeSBMaW51eCBDby4sTHRkLgotCQkJCTEtMjgtOC0yMDQgSGlnYXNoaWF5YXNlCi0JCQkJQWRhY2hpa3UgVG9reW8gMTIwLTAwMDQKLQkJCQlKQVBBTgotCi0wMC0xOC01QSAgIChoZXgpCQl1Q29udHJvbCwgSW5jLgotMDAxODVBICAgICAoYmFzZSAxNikJCXVDb250cm9sLCBJbmMuCi0JCQkJNTkxNCBXLiBDb3VydHlhcmQgRHJpdmUKLQkJCQlTdWl0ZSAyMTAKLQkJCQlBdXN0aW4gVFggNzg3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTVCICAgKGhleCkJCU5ldHdvcmsgQ2hlbWlzdHJ5LCBJbmMKLTAwMTg1QiAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIENoZW1pc3RyeSwgSW5jCi0JCQkJMTgwNCBFbWJhcmNhZGVybyBSZAotCQkJCVBhbG8gQWx0byBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNUMgICAoaGV4KQkJRURTIExhYiBQdGUgTHRkCi0wMDE4NUMgICAgIChiYXNlIDE2KQkJRURTIExhYiBQdGUgTHRkCi0JCQkJMjAgQXllciBSYWphaCBDcmVzY2VudAotCQkJCSMwOC0yNgotCQkJCTEzOTk2NAotCQkJCVNJTkdBUE9SRQotCi0wMC0xOC01RCAgIChoZXgpCQlUQUlHVUVOIFRFQ0hOT0xPR1kgKFNIRU4tWkhFTikgQ08uLCBMVEQuCi0wMDE4NUQgICAgIChiYXNlIDE2KQkJVEFJR1VFTiBURUNITk9MT0dZIChTSEVOLVpIRU4pIENPLiwgTFRELgotCQkJCU5vLiAyMywgVGhlIFRoaXJkIEluZHVzdHJpYWwgUGFyayBvZiBYaWEgVmlsbGFnZSwKLQkJCQlHb25nbWluZywgQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gQ2l0eSwgR3Vhbmdkb25nLCA4MTUxMDYKLQkJCQlDSElOQQotCi0wMC0xOC01RSAgIChoZXgpCQlOZXh0ZXJtIEluYy4KLTAwMTg1RSAgICAgKGJhc2UgMTYpCQlOZXh0ZXJtIEluYy4KLQkJCQkxLTEyLTMsIFNoaWJhdXJhLCBNaW5hdG8ta3UsCi0JCQkJVG9reW8gIDEwNS0wMDIzCi0JCQkJSkFQQU4KLQotMDAtMTgtNUYgICAoaGV4KQkJVEFDIEluYy4KLTAwMTg1RiAgICAgKGJhc2UgMTYpCQlUQUMgSW5jLgotCQkJCTY2IE5pc2hpaXNoaWdhdHN1Ym9jaG8gTmlzaGluYW5hanlvIFNoaW1vZ3lva3UKLQkJCQlLeW90byAgNjAwLTg4OTYKLQkJCQlKQVBBTgotCi0wMC0xOC02MCAgIChoZXgpCQlTSU0gVGVjaG5vbG9neSBHcm91cCBTaGFuZ2hhaSBTaW1jb20gTHRkLiwKLTAwMTg2MCAgICAgKGJhc2UgMTYpCQlTSU0gVGVjaG5vbG9neSBHcm91cCBTaGFuZ2hhaSBTaW1jb20gTHRkLiwKLQkJCQlTSU0gVGVjaG5vbG9neSBidWlsZGluZywKLQkJCQk3MDAgWWlzaGFuIFJkLCBTaGFuZ2hhaSAyMDAyMzMKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMTgtNjEgICAoaGV4KQkJT29tYSwgSW5jLgotMDAxODYxICAgICAoYmFzZSAxNikJCU9vbWEsIEluYy4KLQkJCQk1NTUgVW5pdmVyc2l0eSBBdmVudWUKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTYyICAgKGhleCkJCVNlYWdhdGUgVGVjaG5vbG9neQotMDAxODYyICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neQotCQkJCTEyODAgRGlzYyBEcml2ZQotCQkJCVNoYWtvcGVlIE1OIDU1Mzc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC02MyAgIChoZXgpCQlWZXJpdGVjaCBFbGVjdHJvbmljcyBMaW1pdGVkCi0wMDE4NjMgICAgIChiYXNlIDE2KQkJVmVyaXRlY2ggRWxlY3Ryb25pY3MgTGltaXRlZAotCQkJCThGLCA2NywgU2VjLiAxLCBaaG9uZ3NoYW4gUm9hZCwgWGluemh1YW5nLAotCQkJCVRhaXBlaSAgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC02NCAgIChoZXgpCQlDeWJlY3RlYyBJbmMuCi0wMDE4NjQgICAgIChiYXNlIDE2KQkJQ3liZWN0ZWMgSW5jLgotCQkJCTczMCwgcnVlIENvbW1lcmNpYWxlCi0JCQkJU3VpdGUgMjAwCi0JCQkJU3QtSmVhbi1DaHJ5c29zdG9tZSBRQyBHNlogMkM1Ci0JCQkJQ0FOQURBCi0KLTAwLTE4LTY1ICAgKGhleCkJCVNpZW1lbnMgSGVhbHRoY2FyZSBEaWFnbm9zdGljcyBNYW51ZmFjdHVyaW5nIEx0ZAotMDAxODY1ICAgICAoYmFzZSAxNikJCVNpZW1lbnMgSGVhbHRoY2FyZSBEaWFnbm9zdGljcyBNYW51ZmFjdHVyaW5nIEx0ZAotCQkJCU5vcnRoZXJuIFJvYWQKLQkJCQlDaGlsdG9uIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJU3VkYnVyeSBTdWZmb2xrIEMwMTAgMlhRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTgtNjYgICAoaGV4KQkJTGV1dHJvbiBWaXNpb24KLTAwMTg2NiAgICAgKGJhc2UgMTYpCQlMZXV0cm9uIFZpc2lvbgotCQkJCUluZHVzdHJpZXN0cmFzc2UgNTcKLQkJCQlHbGF0dGJydWdnIFpIIDgxNTIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xOC02NyAgIChoZXgpCQlFdm9sdXRpb24gUm9ib3RpY3MgUmV0YWlsCi0wMDE4NjcgICAgIChiYXNlIDE2KQkJRXZvbHV0aW9uIFJvYm90aWNzIFJldGFpbAotCQkJCTQzMyBOLiBGYWlyIE9ha3MgQXZlCi0JCQkJUGFzYWRlbmEgQ0EgOTExMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTY4ICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YSwgQSBDaXNjbyBDb21wYW55Ci0wMDE4NjggICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBBIENpc2NvIENvbXBhbnkKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNjkgICAoaGV4KQkJS0lOR0pJTQotMDAxODY5ICAgICAoYmFzZSAxNikJCUtJTkdKSU0KLQkJCQlOby4xMC0xOCwyLUNob21lCi0JCQkJSGlnYXNoaS1LYW5kYQotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xOC02QSAgIChoZXgpCQlHbG9iYWwgTGluayBEaWdpdGFsIFRlY2hub2xvZ3kgQ28sLkxURAotMDAxODZBICAgICAoYmFzZSAxNikJCUdsb2JhbCBMaW5rIERpZ2l0YWwgVGVjaG5vbG9neSBDbywuTFRECi0JCQkJUWliYW95aWRpbmcgSW5kLkFyZWEKLQkJCQlMaXVjaG9uZ3dlaSBXYW5qaWFuZyB0b3duCi0JCQkJRG9uZ2d1YW4gR3Vhbmdkb25nIDUyMzA1MQotCQkJCUNISU5BCi0KLTAwLTE4LTZCICAgKGhleCkJCVNhbWJ1IENvbW11bmljcyBDTy4sIExURC4KLTAwMTg2QiAgICAgKGJhc2UgMTYpCQlTYW1idSBDb21tdW5pY3MgQ08uLCBMVEQuCi0JCQkJMzhCLTFMIE5hbWRvbmcgSW5kdXN0cmlhbCBDb21wbGV4Ci0JCQkJNjI2IE5hbWNob24tZG9uZywgTmFtZG9uZy1ndQotCQkJCUluY2hlb24gIDQwNS0xMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtNkMgICAoaGV4KQkJTmVvbm9kZSBBQgotMDAxODZDICAgICAoYmFzZSAxNikJCU5lb25vZGUgQUIKLQkJCQlCaWJsaW90ZWtzZ2F0YW4gMTEsIDFzdCBmbG9vcgotCQkJCVN0b2NraG9sbSAgUy0xMTEgNDYKLQkJCQlTV0VERU4KLQotMDAtMTgtNkQgICAoaGV4KQkJWmhlbmppYW5nIFNhcHBoaXJlIEVsZWN0cm9uaWMgSW5kdXN0cnkgQ08uCi0wMDE4NkQgICAgIChiYXNlIDE2KQkJWmhlbmppYW5nIFNhcHBoaXJlIEVsZWN0cm9uaWMgSW5kdXN0cnkgQ08uCi0JCQkJV2VpIFNhbiBSb2FkLERpbmdtYW8gRGV2ZWxvcCBBcmVhCi0JCQkJemhlbmppYW5nIGppYW5nc3UgMjEyMDA5Ci0JCQkJQ0hJTkEKLQotMDAtMTgtNkUgICAoaGV4KQkJM0NvbSBMdGQKLTAwMTg2RSAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cy4gSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE4LTZGICAgKGhleCkJCVNldGhhIEluZHVzdHJpYSBFbGV0cm9uaWNhIExUREEKLTAwMTg2RiAgICAgKGJhc2UgMTYpCQlTZXRoYSBJbmR1c3RyaWEgRWxldHJvbmljYSBMVERBCi0JCQkJUnVhIEFsdmFybyBkZSBNYWNlZG8gMTM0Ci0JCQkJUGFyYWRhIGRlIEx1Y2FzCi0JCQkJUmlvIGRlIEphbmVpcm8gUkogMjEuMjUwLTYyMAotCQkJCUJSQVpJTAotCi0wMC0xOC03MCAgIChoZXgpCQlFMjggU2hhbmdoYWkgTGltaXRlZAotMDAxODcwICAgICAoYmFzZSAxNikJCUUyOCBTaGFuZ2hhaSBMaW1pdGVkCi0JCQkJMi9GIEVhc3Rlcm4gVG93ZXIKLQkJCQk2ODkgQmVpamluZyBSb2FkIChFYXN0KQotCQkJCVNoYW5naGFpICAyMDAwMDEKLQkJCQlDSElOQQotCi0wMC0xOC03MSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMTg3MSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzIgICAoaGV4KQkJRXhwZXJ0aXNlIEVuZ2luZWVyaW5nCi0wMDE4NzIgICAgIChiYXNlIDE2KQkJRXhwZXJ0aXNlIEVuZ2luZWVyaW5nCi0JCQkJNDE4NiBTb3JyZW50byBWYWxsZXkgQmx2ZCBTdWl0ZSAtSgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxODczICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxODc0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzUgICAoaGV4KQkJQW5hQ2lzZSBUZXN0bm9sb2d5IFB0ZSBMdGQKLTAwMTg3NSAgICAgKGJhc2UgMTYpCQlBbmFDaXNlIFRlc3Rub2xvZ3kgUHRlIEx0ZAotCQkJCTMgQmlzaGFuIFBsYWNlICMwMi0wNgotCQkJCUNQRiBCaXNoYW4gQnVpbGRpbmcKLQkJCQk1Nzk4MzgKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTgtNzYgICAoaGV4KQkJV293V2VlIEx0ZC4KLTAwMTg3NiAgICAgKGJhc2UgMTYpCQlXb3dXZWUgTHRkLgotCQkJCTkyIEdyYW52aWxsZSBSZC4gU3VpdGUgMzAxQS1DCi0JCQkJRW5lcmd5IFBsYXphCi0JCQkJVC5TLlQuIEVhc3QgS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTgtNzcgICAoaGV4KQkJQW1wbGV4IEEvUwotMDAxODc3ICAgICAoYmFzZSAxNikJCUFtcGxleCBBL1MKLQkJCQlTaWxrZWJvcmd2ZWogMgotCQkJCUFhcmh1cyBDICA4MDAwCi0JCQkJREVOTUFSSwotCi0wMC0xOC03OCAgIChoZXgpCQlNYWNrd2FyZSBHbWJICi0wMDE4NzggICAgIChiYXNlIDE2KQkJTWFja3dhcmUgR21iSAotCQkJCVNjaGFuemxlIDEzCi0JCQkJV2FpYmxpbmdlbiBCYWRlbi1XdXJ0dGVtYmVyZyA3MTMzMgotCQkJCUdFUk1BTlkKLQotMDAtMTgtNzkgICAoaGV4KQkJZFN5cwotMDAxODc5ICAgICAoYmFzZSAxNikJCWRTeXMKLQkJCQlTb2VmbGluZ2VyIFN0ci4gMTAwCi0JCQkJVWxtIEJXIDg5MDc3Ci0JCQkJR0VSTUFOWQotCi0wMC0xOC03QSAgIChoZXgpCQlXaXJlbW9sZAotMDAxODdBICAgICAoYmFzZSAxNikJCVdpcmVtb2xkCi0JCQkJNjAgV29vZGxhd24gU3QuCi0JCQkJV2VzdCBIYXJ0Zm9yZCBDVCAwNjExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtN0IgICAoaGV4KQkJNE5TWVMgQ28uIEx0ZC4KLTAwMTg3QiAgICAgKGJhc2UgMTYpCQk0TlNZUyBDby4gTHRkLgotCQkJCTNGLCBIYW5hIEJsZGcKLQkJCQkxMTgtMiwgT3J5dS1Eb25nCi0JCQkJR3Vyby1HdSBTZW91bCAxNTItMTAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTdDICAgKGhleCkJCUlOVEVSQ1JPU1MsIExMQwotMDAxODdDICAgICAoYmFzZSAxNikJCUlOVEVSQ1JPU1MsIExMQwotCQkJCU5vdm9zZWxvdiBzdHIuLCA1OC83Ci0JCQkJUnlhemFuICAzOTAwNDkKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTgtN0QgICAoaGV4KQkJQXJtb3JsaW5rIHNoYW5naGFpIENvLiBMdGQKLTAwMTg3RCAgICAgKGJhc2UgMTYpCQlBcm1vcmxpbmsgc2hhbmdoYWkgQ28uIEx0ZAotCQkJCU5PIDUxNSwgU2hlbmdmdSByb2FkCi0JCQkJU2hhbmdoYWkgIDIwMTEwOAotCQkJCUNISU5BCi0KLTAwLTE4LTdFICAgKGhleCkJCVJHQiBTcGVjdHJ1bQotMDAxODdFICAgICAoYmFzZSAxNikJCVJHQiBTcGVjdHJ1bQotCQkJCTk1MCBNYXJpbmEgVmlsbGFnZSBQa3d5Ci0JCQkJQWxhbWVkYSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtN0YgICAoaGV4KQkJWk9ESUFORVQKLTAwMTg3RiAgICAgKGJhc2UgMTYpCQlaT0RJQU5FVAotCQkJCTIzLCBydWUgZGVzIEZyYWlzZXR0ZXMKLQkJCQlQQUxBSVNFQVUgRVNTT05ORSA5MTEyMAotCQkJCUZSQU5DRQotCi0wMC0xOC04MCAgIChoZXgpCQlNYXhpbSBJbnRlZ3JhdGVkIENpcmN1aXRzCi0wMDE4ODAgICAgIChiYXNlIDE2KQkJTWF4aW0gSW50ZWdyYXRlZCBDaXJjdWl0cwotCQkJCTI5MDAgTGFrZXNpZGUgRHJpdmUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtODEgICAoaGV4KQkJQnV5YW5nIEVsZWN0cm9uaWNzIEluZHVzdHJpYWwgQ28uLCBMdGQKLTAwMTg4MSAgICAgKGJhc2UgMTYpCQlCdXlhbmcgRWxlY3Ryb25pY3MgSW5kdXN0cmlhbCBDby4sIEx0ZAotCQkJCTQzNC0xNDAsIE9yeXUtRG9uZwotCQkJCVNlby1LdQotCQkJCUluY2hlb24gIDQwNC0zMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtODIgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMTg4MiAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCUYxLTIwLFNlY3Rpb24gRixIdWF3ZWkgQmFzZSxCYW50aWFuLCBMb25nZ2FuZyBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi0wMC0xOC04MyAgIChoZXgpCQlGT1JNT1NBMjEgSU5DLgotMDAxODgzICAgICAoYmFzZSAxNikJCUZPUk1PU0EyMSBJTkMuCi0JCQkJOEYtNiwgTk8uMzUxLCBDSFVORyBTSEFOIFJELiwgU0VDLjIKLQkJCQlDSFVORyBITyBDSVRZCi0JCQkJVEFJUEVJICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTg0ICAgKGhleCkJCUZPTgotMDAxODg0ICAgICAoYmFzZSAxNikJCUZPTgotCQkJCUF2ZGEuIEJydXNlbGFzLCBuLiA3LCBQbGFudGEgMywgQWxjb2JlbmRhcwotCQkJCU1hZHJpZCAyODEwMAotCQkJCVNQQUlOCi0KLTAwLTE4LTg1ICAgKGhleCkJCUF2aWdpbG9uIENvcnBvcmF0aW9uCi0wMDE4ODUgICAgIChiYXNlIDE2KQkJQXZpZ2lsb24gQ29ycG9yYXRpb24KLQkJCQlCb3ggMzc4LCAxMDEgLSAxMDAxIFdlc3QgQnJvYWR3YXkKLQkJCQlWYW5jb3V2ZXIgQkMgVjZIIDRFNAotCQkJCUNBTkFEQQotCi0wMC0xOC04NiAgIChoZXgpCQlFTC1URUNILCBJTkMuCi0wMDE4ODYgICAgIChiYXNlIDE2KQkJRUwtVEVDSCwgSU5DLgotCQkJCUEtNzExLCBXT09MSU0gTElPTidTIFZBTExFWSwgMzcxLTI4Ci0JCQkJR0FTQU4tRE9ORywgR0VVTUNIRU9OLUdVLAotCQkJCVNFT1VMICAxNTAtODM0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTg3ICAgKGhleCkJCU1ldGFzeXN0ZW0gU3BBCi0wMDE4ODcgICAgIChiYXNlIDE2KQkJTWV0YXN5c3RlbSBTcEEKLQkJCQlWaWEgT2JlcmRhbiAxNgotCQkJCVJlZ2dpbyBFbWlsaWEgUkUgNDIxMDAKLQkJCQlJVEFMWQotCi0wMC0xOC04OCAgIChoZXgpCQlHT1RJVkUgYS5zLgotMDAxODg4ICAgICAoYmFzZSAxNikJCUdPVElWRSBhLnMuCi0JCQkJWmFtb2NrYSAzNAotCQkJCUJyYXRpc2xhdmEgIDgxMTAxCi0JCQkJU0xPVkFLSUEKLQotMDAtMTgtODkgICAoaGV4KQkJV2luTmV0IFNvbHV0aW9ucyBMaW1pdGVkCi0wMDE4ODkgICAgIChiYXNlIDE2KQkJV2luTmV0IFNvbHV0aW9ucyBMaW1pdGVkCi0JCQkJUm04MDQsIEtvcm5oaWxsIE1ldHJvIFRvd2VyLCBRdWFycnkgQmF5Ci0JCQkJSEsgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE4LThBICAgKGhleCkJCUluZmlub3ZhIExMQwotMDAxODhBICAgICAoYmFzZSAxNikJCUluZmlub3ZhIExMQwotCQkJCTUxIFN0b3V0cyBMYW5lLCBVbml0IDEgJiAyCi0JCQkJTW9ubW91dGggSnVuY3Rpb24gTmV3IEplcnNleSAwODg1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtOEIgICAoaGV4KQkJRGVsbAotMDAxODhCICAgICAoYmFzZSAxNikJCURlbGwKLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC04QyAgIChoZXgpCQlNb2JpbGUgQWN0aW9uIFRlY2hub2xvZ3kgSW5jLgotMDAxODhDICAgICAoYmFzZSAxNikJCU1vYmlsZSBBY3Rpb24gVGVjaG5vbG9neSBJbmMuCi0JCQkJNUYsIE5vLiAyMDUtMywgU2VjLiAzLCBCZWlzaGluIFJkLgotCQkJCVNoaW5kaWFuIENpdHksIFRhaXBlaSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC04RCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxODhEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICAxNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xOC04RSAgIChoZXgpCQlFa2FoYXUsIEluYy4KLTAwMTg4RSAgICAgKGJhc2UgMTYpCQlFa2FoYXUsIEluYy4KLQkJCQlUYWxsYmVyZ2lua2F0dSAyCi0JCQkJSEVMU0lOS0kgVVVTSU1BQSAwMDE4MAotCQkJCUZJTkxBTkQKLQotMDAtMTgtOEYgICAoaGV4KQkJTW9udGdvbWVyeSBUZWNobm9sb2d5LCBJbmMuCi0wMDE4OEYgICAgIChiYXNlIDE2KQkJTW9udGdvbWVyeSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJODAwIEVhc3QgQ29tbWVyY2UgU3RyZWV0Ci0JCQkJR3JlZW52aWxsZSBBTCAzNjAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtOTAgICAoaGV4KQkJUmFkaW9DT00sIHMuci5vLgotMDAxODkwICAgICAoYmFzZSAxNikJCVJhZGlvQ09NLCBzLnIuby4KLQkJCQlNaXNpa292YSAyMgotCQkJCUJyYXRpc2xhdmEgIDgxMSAwNgotCQkJCVNMT1ZBS0lBCi0KLTAwLTE4LTkxICAgKGhleCkJCVpob25nc2hhbiBHZW5lcmFsIEstbWF0ZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAxODkxICAgICAoYmFzZSAxNikJCVpob25nc2hhbiBHZW5lcmFsIEstbWF0ZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCTMvRiBCMSBCdWlsZGluZywgRnV3YW4gSW5kLiBab25lIFN1biBXZW4gRWFzdCBSb2FkCi0JCQkJWmhvbmdzaGFuIEd1YW5nZG9uZyA1Mjg0MDMKLQkJCQlDSElOQQotCi0wMC0xOC05MiAgIChoZXgpCQlhZHMtdGVjIEdtYkgKLTAwMTg5MiAgICAgKGJhc2UgMTYpCQlhZHMtdGVjIEdtYkgKLQkJCQlSYWlmZmVpc2Vuc3RyYXNzZSAxNAotCQkJCUxlaW5mZWxkZW4tRWNodGVyZGluZ2VuIEJhZGVuLVd1cnR0ZW1iZXJnIDcwNzcxCi0JCQkJR0VSTUFOWQotCi0wMC0xOC05MyAgIChoZXgpCQlTSEVOWkhFTiBQSE9UT04gQlJPQURCQU5EIFRFQ0hOT0xPR1kgQ08uLExURAotMDAxODkzICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIFBIT1RPTiBCUk9BREJBTkQgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJMi9GIEhpdmFjIEJMRCwydGggTGFuZ3NoYW4gUmQsTm9ydGggSGktVGVjaCBJbmR1c3RyaWFsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE4LTk0ICAgKGhleCkJCXppbW9jb20KLTAwMTg5NCAgICAgKGJhc2UgMTYpCQl6aW1vY29tCi0JCQkJM341RiwgQm9uZ1VpIEJsZGcsIDc2LTEsIE11bmplb25nLWRvbmcKLQkJCQlTb25ncGFndQotCQkJCVNlb3VsICAxMzgtMjAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTk1ICAgKGhleCkJCUhhbnN1biBUZWNobm9sb2dpZXMgSW5jLgotMDAxODk1ICAgICAoYmFzZSAxNikJCUhhbnN1biBUZWNobm9sb2dpZXMgSW5jLgotCQkJCVJvb20gMzAxLCBCdWlsZGluZyAxMDMsIFdhbmdqaW5na2VqaXl1YW4sIENoYW95YW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMTAyCi0JCQkJQ0hJTkEKLQotMDAtMTgtOTYgICAoaGV4KQkJR3JlYXQgV2VsbCBFbGVjdHJvbmljIExURAotMDAxODk2ICAgICAoYmFzZSAxNikJCUdyZWF0IFdlbGwgRWxlY3Ryb25pYyBMVEQKLQkJCQlUaGUgVGhpcmQgSW5kdXN0cmlhbCAgQXJlYQotCQkJCUd1YW5sYW4gVG93bgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMTAKLQkJCQlDSElOQQotCi0wMC0xOC05NyAgIChoZXgpCQlKRVNTLUxJTksgUFJPRFVDVFMgQ28uLCBMVEQKLTAwMTg5NyAgICAgKGJhc2UgMTYpCQlKRVNTLUxJTksgUFJPRFVDVFMgQ28uLCBMVEQKLQkJCQk5RiwgTm8uIDE3NiwgSmlhbi1ZaSBSZC4sIENodW5nIEhvIENpdHkKLQkJCQlUYWlwZWkgQ291bnR5ICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTk4ICAgKGhleCkJCUtJTkdTVEFURSBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotMDAxODk4ICAgICAoYmFzZSAxNikJCUtJTkdTVEFURSBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotCQkJCTEwRiwgTm8uNjktMTEsIFNlYy4yLCBDaHVuZyBDaGVuZyBFLiBSZC4sCi0JCQkJVGFtc2h1aSBUb3duCi0JCQkJVGFpcGVpIENvdW50eSAgMjUxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC05OSAgIChoZXgpCQlTaGVuWmhlbiBqaWVzaHVuIFNjaWVuY2UmVGVjaG5vbG9neSBJbmR1c3RyeSBDTyxMVEQuCi0wMDE4OTkgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gamllc2h1biBTY2llbmNlJlRlY2hub2xvZ3kgSW5kdXN0cnkgQ08sTFRELgotCQkJCUNoaW5hIEd1YW5nRG9uZyBzdGF0ZSBTaGVuemhlbiBDaXR5IEZ1dGlhbiBzZWN0aW9uIE5PMTcuIE1laWxpbiBSb2FkCi0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODA0OQotCQkJCUNISU5BCi0KLTAwLTE4LTlBICAgKGhleCkJCUhBTkEgTWljcm9uIEluYy4KLTAwMTg5QSAgICAgKGJhc2UgMTYpCQlIQU5BIE1pY3JvbiBJbmMuCi0JCQkJIzk1LTEgV29ubmFtLUxpLCBVbWJvbmctTXllb24KLQkJCQlDaHVuZy1OYW0sIFNvdXRoIEtvcmVhLgotCQkJCUFzYW4tQ2l0eSBDaHVuZy1OYW0gMzM2LTg2NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC05QiAgIChoZXgpCQlUaG9tc29uIEluYy4KLTAwMTg5QiAgICAgKGJhc2UgMTYpCQlUaG9tc29uIEluYy4KLQkJCQkxMDEgV2VzdCAxMDNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyOTAtMTEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtOUMgICAoaGV4KQkJV2VsZGV4IENvcnBvcmF0aW9uCi0wMDE4OUMgICAgIChiYXNlIDE2KQkJV2VsZGV4IENvcnBvcmF0aW9uCi0JCQkJNjc1MSBLYXRlbGxhIEF2ZW51ZQotCQkJCUN5cHJlc3MgQ0EgOTA2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTlEICAgKGhleCkJCU5hdmNhc3QgSW5jLgotMDAxODlEICAgICAoYmFzZSAxNikJCU5hdmNhc3QgSW5jLgotCQkJCVN1aXRlIDYxMiwgNjcxMSBNaXNzaXNzYXVnYSBSb2FkCi0JCQkJTWlzc2lzc2F1Z2EgT04gbTJyIDFhMwotCQkJCUNBTkFEQQotCi0wMC0xOC05RSAgIChoZXgpCQlPTU5JS0VZIEdtYkguCi0wMDE4OUUgICAgIChiYXNlIDE2KQkJT01OSUtFWSBHbWJILgotCQkJCUZlcmlodW1lcnN0cmFzc2UgMTMKLQkJCQlMaW56IFVwcGVyYXVzdHJpYSA0MDQwCi0JCQkJQVVTVFJJQQotCi0wMC0xOC05RiAgIChoZXgpCQlMZW5udGVrIENvcnBvcmF0aW9uCi0wMDE4OUYgICAgIChiYXNlIDE2KQkJTGVubnRlayBDb3Jwb3JhdGlvbgotCQkJCTRGLCAxMjUgR3VhbmdNaW5nIDNyZC4gUm9hZAotCQkJCUpodSBCZWkgSHNpbiBDaHUgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1BMCAgIChoZXgpCQlDaWVybWEgQXNjZW5zZXVycwotMDAxOEEwICAgICAoYmFzZSAxNikJCUNpZXJtYSBBc2NlbnNldXJzCi0JCQkJMTcgYXZlbnVlIGd1aWdsaW9uZGEgZGUgc2FpbnQgYWdhdGhlCi0JCQkJTmljZSBQQUNBIDA2MzAwCi0JCQkJRlJBTkNFCi0KLTAwLTE4LUExICAgKGhleCkJCVRpcWl0IENvbXB1dGVycywgSW5jLgotMDAxOEExICAgICAoYmFzZSAxNikJCVRpcWl0IENvbXB1dGVycywgSW5jLgotCQkJCTIyMTUgT2xkIFBhZ2UgTWlsbCBSZAotCQkJCVBhbG8gQWx0byBDQSA5NDMwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtQTIgICAoaGV4KQkJWElQIFRlY2hub2xvZ3kgQUIKLTAwMThBMiAgICAgKGJhc2UgMTYpCQlYSVAgVGVjaG5vbG9neSBBQgotCQkJCVBPIEJveCA0MzcKLQkJCQlKb25rb3BpbmcgU3dlZGVuIFNFLSA1NTEgMTYKLQkJCQlTV0VERU4KLQotMDAtMTgtQTMgICAoaGV4KQkJWklQUFkgVEVDSE5PTE9HWSBDT1JQLgotMDAxOEEzICAgICAoYmFzZSAxNikJCVpJUFBZIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkxMEYsIE5vLiA1MCwgTWluY3l1YW4gUmQuLCBTaW5kaWFuIENpdHkKLQkJCQlUYWlwZWkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtQTQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxlIERldmljZXMKLTAwMThBNCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGUgRGV2aWNlcwotCQkJCTYwMCBOLiBId3kgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUE1ICAgKGhleCkJCUFEaWdpdCBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMThBNSAgICAgKGJhc2UgMTYpCQlBRGlnaXQgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJUm0gRDMwMkUsTm8uMTg1IDNGLTIsS3VyLVdvbmcgUm9hZCwKLQkJCQlMdW5nLVRhbmcsCi0JCQkJVGFvLXl1YW4sICAzMjUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUE2ICAgKGhleCkJCVBlcnNpc3RlbnQgU3lzdGVtcywgTExDCi0wMDE4QTYgICAgIChiYXNlIDE2KQkJUGVyc2lzdGVudCBTeXN0ZW1zLCBMTEMKLQkJCQkxMTggTi4gSG93YXJkIFN0LiAjNzIKLQkJCQlCYWx0aW1vcmUgTUQgMjEyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUE3ICAgKGhleCkJCVlvZ2dpZSBTZWN1cml0eSBTeXN0ZW1zIExURC4KLTAwMThBNyAgICAgKGJhc2UgMTYpCQlZb2dnaWUgU2VjdXJpdHkgU3lzdGVtcyBMVEQuCi0JCQkJUC5QLkJveCAxNTYKLQkJCQlCZXRoIEhhbGV2eSAgNDI4NzAKLQkJCQlJU1JBRUwKLQotMDAtMTgtQTggICAoaGV4KQkJQW5OZWFsIFRlY2hub2xvZ3kgSW5jLgotMDAxOEE4ICAgICAoYmFzZSAxNikJCUFuTmVhbCBUZWNobm9sb2d5IEluYy4KLQkJCQlOby4zMC0xMSwgV3VuaHVhIFJkLiwgTWluc3lvbmcKLQkJCQlDaGlheWkgIDYyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtQTkgICAoaGV4KQkJRXRoZXJuZXQgRGlyZWN0IENvcnBvcmF0aW9uCi0wMDE4QTkgICAgIChiYXNlIDE2KQkJRXRoZXJuZXQgRGlyZWN0IENvcnBvcmF0aW9uCi0JCQkJMTlGLE5vLjM0NSBDaHVuZyBIbyBSb2FkLCBZdW5nIEhvIENpdHkKLQkJCQlUYWlwZWkgIDIzNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtQUEgICAoaGV4KQkJUHJvdGVjIEZpcmUgRGV0ZWN0aW9uIHBsYwotMDAxOEFBICAgICAoYmFzZSAxNikJCVByb3RlYyBGaXJlIERldGVjdGlvbiBwbGMKLQkJCQlQcm90ZWMgSG91c2UKLQkJCQlDaHVyY2hpbGwgV2F5Ci0JCQkJTmVsc29uIExhbmNhc2hpcmUgQkI5IDZSVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE4LUFCICAgKGhleCkJCUJFSUpJTkcgTEhXVCBNSUNST0VMRUNUUk9OSUNTIElOQy4KLTAwMThBQiAgICAgKGJhc2UgMTYpCQlCRUlKSU5HIExIV1QgTUlDUk9FTEVDVFJPTklDUyBJTkMuCi0JCQkJMTgvRixRVUFOVFVNIFBMQVpBLE5PLjI3IFpISSBDSFVOIFJELixIQUkgRElBTiBESVNUUklDVCxCRUlKSU5HCi0JCQkJQ0hJTkEKLQotMDAtMTgtQUMgICAoaGV4KQkJU2hhbmdoYWkgSmlhbyBEYSBISVNZUyBUZWNobm9sb2d5IENvLiBMdGQuCi0wMDE4QUMgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgSmlhbyBEYSBISVNZUyBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJN0YgSGFvcmFuIEhpVGVjaCBCbGRnLiwgTm8uMTk1NCBIdWFzaGFuIFJvYWQKLQkJCQlzaGFuZ2hhaSB4dWh1aSAyMDAwMzAKLQkJCQlDSElOQQotCi0wMC0xOC1BRCAgIChoZXgpCQlOSURFQyBTQU5LWU8gQ09SUE9SQVRJT04KLTAwMThBRCAgICAgKGJhc2UgMTYpCQlOSURFQyBTQU5LWU8gQ09SUE9SQVRJT04KLQkJCQk1MzI5LCBTaGltb3N1d2EtbWFjaGksIFN1d2EtZ3VuCi0JCQkJTmFnYW5vIDM5My04NTExCi0JCQkJSkFQQU4KLQotMDAtMTgtQUUgICAoaGV4KQkJVFZUIENPLixMVEQKLTAwMThBRSAgICAgKGJhc2UgMTYpCQlUVlQgQ08uLExURAotCQkJCTUvRixOb3J0aCBCbG9jayxDRSBMaWdodGluZyBIb3VzZQotCQkJCUhpLXRlY2ggUGFyaywgTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlzaGVuemhlbiBndWFuZ2RvbmcgNTE4MDI2Ci0JCQkJQ0hJTkEKLQotMDAtMTgtQUYgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMThBRiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaS1DaXR5IEd5ZW9uZy1CdWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1CMCAgIChoZXgpCQlOb3J0ZWwKLTAwMThCMCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTgtQjEgICAoaGV4KQkJSUJNIENvcnAKLTAwMThCMSAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTIwNTEgTWlzc2lvbiBDb2xsZWdlIEJsdmQgCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUIyICAgKGhleCkJCUFERVVOSVMgUkYKLTAwMThCMiAgICAgKGJhc2UgMTYpCQlBREVVTklTIFJGCi0JCQkJMjgzIFJ1ZSBORUVMCi0JCQkJQ1JPTExFUyBJU0VSRSAzODkyMAotCQkJCUZSQU5DRQotCi0wMC0xOC1CMyAgIChoZXgpCQlURUMgV2l6SG9tZSBDby4sIEx0ZC4KLTAwMThCMyAgICAgKGJhc2UgMTYpCQlURUMgV2l6SG9tZSBDby4sIEx0ZC4KLQkJCQkxOGZsLiwgSW4tU29uZyBibGRnLiwgMTk0LTE1LAotCQkJCUhlb2h5dW4tRG9uZywgMUdhLCBKdW5nLUd1Ci0JCQkJU2VvdWwgIDEwMC05NTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtQjQgICAoaGV4KQkJRGF3b24gTWVkaWEgSW5jLgotMDAxOEI0ICAgICAoYmFzZSAxNikJCURhd29uIE1lZGlhIEluYy4KLQkJCQlSbTUwMy4gd29vbGltIGUtYml6IGNlbnRlciAxNzAtNSwgR3VybzNkb25nIEd1cm9ndSwKLQkJCQlTZW91bCAgMTUyLTc2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1CNSAgIChoZXgpCQlNYWduYSBDYXJ0YQotMDAxOEI1ICAgICAoYmFzZSAxNikJCU1hZ25hIENhcnRhCi0JCQkJTmFyaXRhd2VnIDEyNgotCQkJCUFtc3RlcmRhbSBOb29yZCBIb2xsYW5kIDEwNDMgQ0EKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xOC1CNiAgIChoZXgpCQlTM0MsIEluYy4KLTAwMThCNiAgICAgKGJhc2UgMTYpCQlTM0MsIEluYy4KLQkJCQkxMDEwIFN0ZXdhcnQgRHIuCi0JCQkJU3Vubnl2YWxlIENhbGlmb3JuaWEgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUI3ICAgKGhleCkJCUQzIExFRCwgTExDCi0wMDE4QjcgICAgIChiYXNlIDE2KQkJRDMgTEVELCBMTEMKLQkJCQkzODAgTW91bnRhaW4gUmQKLQkJCQlTdWl0ZSAxNDEyCi0JCQkJVW5pb24gQ2l0eSBOSiAwNzA4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtQjggICAoaGV4KQkJTmV3IFZvaWNlIEludGVybmF0aW9uYWwgQUcKLTAwMThCOCAgICAgKGJhc2UgMTYpCQlOZXcgVm9pY2UgSW50ZXJuYXRpb25hbCBBRwotCQkJCVN0LiBHYWxsZXJzdHJhc3NlIDgKLQkJCQlMYWNoZW4gU1ogODg1MwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE4LUI5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMThCOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUJBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMThCQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUJCICAgKGhleCkJCUVsaXdlbGwgQ29udHJvbHMgc3JsCi0wMDE4QkIgICAgIChiYXNlIDE2KQkJRWxpd2VsbCBDb250cm9scyBzcmwKLQkJCQlWaWEgZGVsbCdJbmR1c3RyaWEsIDE1Ci0JCQkJUGlldmUgZCdBbHBhZ28gQmVsbHVubyAzMjAxMAotCQkJCUlUQUxZCi0KLTAwLTE4LUJDICAgKGhleCkJCVpBTyBOVlAgQm9saWQKLTAwMThCQyAgICAgKGJhc2UgMTYpCQlaQU8gTlZQIEJvbGlkCi0JCQkJUGlvbmVyc2theWEgc3RyLiwgNAotCQkJCUtvcm9seW92IE1vc2NvdyByZWdpb24gMTQxMDcwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE4LUJEICAgKGhleCkJCVNIRU5aSEVOIERWQldPUkxEIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDE4QkQgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gRFZCV09STEQgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQkyTkQgRkxPT1IsIEJVSUxESU5HIEEsIFFJTkdIVSBYSU5RSUFPIElORFVTVFJZIEFSRUEsCi0JCQkJTE9OR0hVQSwgQkFPIEFOIERJU1RSSUNUCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTE4LUJFICAgKGhleCkJCUFOU0EgQ29ycG9yYXRpb24KLTAwMThCRSAgICAgKGJhc2UgMTYpCQlBTlNBIENvcnBvcmF0aW9uCi0JCQkJMTdGLiwgTm8uNzM4LCBDaHVuZyBDaGVuZyBSZC4KLQkJCQlDaHVuZyBIbyBDaXR5LCBUYWlwZWkgQ291bnR5ICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUJGICAgKGhleCkJCUVzc2VuY2UgVGVjaG5vbG9neSBTb2x1dGlvbiwgSW5jLgotMDAxOEJGICAgICAoYmFzZSAxNikJCUVzc2VuY2UgVGVjaG5vbG9neSBTb2x1dGlvbiwgSW5jLgotCQkJCUIxLCBOby4gMjA3LCBCZWlzaW4gUmQuLCBTZWMuIDMKLQkJCQlTaW5kaWFuLCBUYWlwZWkgQ291bnR5ICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUMwICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE4QzAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1DMSAgIChoZXgpCQlBbG1pdGVjIEluZm9ybWF0aWNhIGUgQ29tZXJjaW8gTHRkYS4KLTAwMThDMSAgICAgKGJhc2UgMTYpCQlBbG1pdGVjIEluZm9ybWF0aWNhIGUgQ29tZXJjaW8gTHRkYS4KLQkJCQk0NjEsIEZyYW5jaXNjbyBkZSBNb3JhaXMgU3QuCi0JCQkJU2FvIFBhdWxvICAwNDcxNC0wMTAKLQkJCQlCUkFaSUwKLQotMDAtMTgtQzIgICAoaGV4KQkJRmlyZXRpZGUsIEluYwotMDAxOEMyICAgICAoYmFzZSAxNikJCUZpcmV0aWRlLCBJbmMKLQkJCQkxNjc5NSBMYXJrIEF2LCBTdWl0ZSAyMDAKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUMzICAgKGhleCkJCUMmUyBNaWNyb3dhdmUKLTAwMThDMyAgICAgKGJhc2UgMTYpCQlDJlMgTWljcm93YXZlCi0JCQkJU3VudGVjaCBDaXR5IDh0aCBmbG9vciwgU2FuZyBEYWUgV29uLURvbmcsIEp1bmcgV29uLUd1Ci0JCQkJU3VuZ25hbSBHeXVuZ2dpLURvIDgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LUM0ICAgKGhleCkJCVJhYmEgVGVjaG5vbG9naWVzIExMQwotMDAxOEM0ICAgICAoYmFzZSAxNikJCVJhYmEgVGVjaG5vbG9naWVzIExMQwotCQkJCTg4MzAgU3RhbmZvcmQgQmx2ZCBTdWl0ZSAyMDUKLQkJCQlDb2x1bWJpYSBNYXJ5bGFuZCAyMTA0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtQzUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMThDNSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTgtQzYgICAoaGV4KQkJT1BXIEZ1ZWwgTWFuYWdlbWVudCBTeXN0ZW1zCi0wMDE4QzYgICAgIChiYXNlIDE2KQkJT1BXIEZ1ZWwgTWFuYWdlbWVudCBTeXN0ZW1zCi0JCQkJNjkwMCBTYW50YSBGZSBEcml2ZQotCQkJCUhvZGdraW5zIElsbGlub2lzIDYwNTI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1DNyAgIChoZXgpCQlSZWFsIFRpbWUgQXV0b21hdGlvbgotMDAxOEM3ICAgICAoYmFzZSAxNikJCVJlYWwgVGltZSBBdXRvbWF0aW9uCi0JCQkJMjgyNSBOIE1heWZhaXIgUmQgU3RlIDExCi0JCQkJV2F1d2F0b3NhIFdJIDUzMjIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1DOCAgIChoZXgpCQlJU09OQVMgSW5jLgotMDAxOEM4ICAgICAoYmFzZSAxNikJCUlTT05BUyBJbmMuCi0JCQkJNjMyNSBHdW5wYXJrIERyaXZlCi0JCQkJU3VpdGUgMTAxCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtQzkgICAoaGV4KQkJRU9wcyBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMThDOSAgICAgKGJhc2UgMTYpCQlFT3BzIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJvb20gMjAwMSwgRmFpcm1vbnQgSG91c2UsCi0JCQkJOCBDb3R0b24gVHJlZSBEcml2ZSwgQ2VudHJhbCwKLQkJCQlIb25nIEtvbmcgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xOC1DQSAgIChoZXgpCQlWaXByaW5ldCBHbWJICi0wMDE4Q0EgICAgIChiYXNlIDE2KQkJVmlwcmluZXQgR21iSAotCQkJCUJhc2lsaWthc3RyYXNzZSAzCi0JCQkJQmluZ2VuIGFtIFJoZWluICA1NTQxMQotCQkJCUdFUk1BTlkKLQotMDAtMTgtQ0IgICAoaGV4KQkJVGVjb2Jlc3QgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDE4Q0IgICAgIChiYXNlIDE2KQkJVGVjb2Jlc3QgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJNTMvRi4sQmxvY2sgQSxVbml0ZWQgUGxhemEsCi0JCQkJTm8uNTAyMixCaW4gSGUgUm9hZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMjYKLQkJCQlDSElOQQotCi0wMC0xOC1DQyAgIChoZXgpCQlBWElPSE0gU0FTCi0wMDE4Q0MgICAgIChiYXNlIDE2KQkJQVhJT0hNIFNBUwotCQkJCTEgUlVFIEQnQVJDVUVJTAotCQkJCU1PTlRST1VHRSAgOTIxMjAKLQkJCQlGUkFOQ0UKLQotMDAtMTgtQ0QgICAoaGV4KQkJRXJhZSBFbGVjdHJvbmljcyBJbmR1c3RyeSBDby4sIEx0ZAotMDAxOENEICAgICAoYmFzZSAxNikJCUVyYWUgRWxlY3Ryb25pY3MgSW5kdXN0cnkgQ28uLCBMdGQKLQkJCQkjMzcxLTUxLCBHYXNhbi1kb25nCi0JCQkJR2V1bWNoZW4tZ3UgU2VvdWwgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1DRSAgIChoZXgpCQlEcmVhbXRlY2ggQ28uLCBMdGQKLTAwMThDRSAgICAgKGJhc2UgMTYpCQlEcmVhbXRlY2ggQ28uLCBMdGQKLQkJCQkjMzQwLTUsIFlhbmctZGFuZyBSaSwgSmlrLXNhbiBNeWVvbgotCQkJCUNoZW9uLWFuIHNpIENodW5nLU5hbSAzMzA4MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtQ0YgICAoaGV4KQkJQmFsZG9yIEVsZWN0cmljIENvbXBhbnkKLTAwMThDRiAgICAgKGJhc2UgMTYpCQlCYWxkb3IgRWxlY3RyaWMgQ29tcGFueQotCQkJCTYwMCBTLiBaZXJvIFN0LgotCQkJCUZvcnQgU21pdGggQVIgNzI5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUQwICAgKGhleCkJCUF0Um9hZCwgIEEgVHJpbWJsZSBDb21wYW55Ci0wMDE4RDAgICAgIChiYXNlIDE2KQkJQXRSb2FkLCAgQSBUcmltYmxlIENvbXBhbnkKLQkJCQk0NzA3MSBCYXlzaWRlIFBhcmt3YXkKLQkJCQlGcmVtb250IENhbGlmb3JuaWEgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUQxICAgKGhleCkJCVNpZW1lbnMgSG9tZSAmIE9mZmljZSBDb21tLiBEZXZpY2VzCi0wMDE4RDEgICAgIChiYXNlIDE2KQkJU2llbWVucyBIb21lICYgT2ZmaWNlIENvbW0uIERldmljZXMKLQkJCQk0ODQ5IEFscGhhIFJkLgotCQkJCURhbGxhcyBUZXhhcyA3NTI0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRDIgICAoaGV4KQkJSGlnaC1HYWluIEFudGVubmFzIExMQwotMDAxOEQyICAgICAoYmFzZSAxNikJCUhpZ2gtR2FpbiBBbnRlbm5hcyBMTEMKLQkJCQkxMTY3OSBTLiBDb3Jtb3JhbnQgQ2lyY2xlCi0JCQkJUGFya2VyIENPIDgwMTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1EMyAgIChoZXgpCQlURUFNQ0FTVAotMDAxOEQzICAgICAoYmFzZSAxNikJCVRFQU1DQVNUCi0JCQkJQ2VudHJlIEVzcGFjZSBQZXJmb3JtYW5jZQotCQkJCVNhaW50IEdyZWdvaXJlICAzNTc2OQotCQkJCUZSQU5DRQotCi0wMC0xOC1ENCAgIChoZXgpCQlVbmlmaWVkIERpc3BsYXkgSW50ZXJmYWNlIFNJRwotMDAxOEQ0ICAgICAoYmFzZSAxNikJCVVuaWZpZWQgRGlzcGxheSBJbnRlcmZhY2UgU0lHCi0JCQkJMTUyMDEgU1cgR3JlZW5icmllciBQYXJrd2F5Ci0JCQkJQmVhdmVydG9uIE9yZWdvbiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRDUgICAoaGV4KQkJUkVJR05DT00KLTAwMThENSAgICAgKGJhc2UgMTYpCQlSRUlHTkNPTQotCQkJCTE0RiBLYW1jbyBZYW5qYWUgVG93ZXIsIDk0OS0zCi0JCQkJRG9nb2sgMS1kb25nbSwgR2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtNzM5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LUQ2ICAgKGhleCkJCVN3aXJsbmV0IEEvUwotMDAxOEQ2ICAgICAoYmFzZSAxNikJCVN3aXJsbmV0IEEvUwotCQkJCURpcGxvbXZlaiAzODEKLQkJCQlMeW5nYnkgIERLLTI4MDAKLQkJCQlERU5NQVJLCi0KLTAwLTE4LUQ3ICAgKGhleCkJCUphdmFkIE5hdmlnYXRpb24gU3lzdGVtcyBJbmMuCi0wMDE4RDcgICAgIChiYXNlIDE2KQkJSmF2YWQgTmF2aWdhdGlvbiBTeXN0ZW1zIEluYy4KLQkJCQkxNzMxIFRlY2hub2xvZ3kgRHJpdmUsIFN1aXRlIDY4MAotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1EOCAgIChoZXgpCQlBUkNIIE1FVEVSIENvcnBvcmF0aW9uCi0wMDE4RDggICAgIChiYXNlIDE2KQkJQVJDSCBNRVRFUiBDb3Jwb3JhdGlvbgotCQkJCTRGLCBOby4zLTIsIEluZHVzdHJ5IEUuIFJkLgotCQkJCTksSHNpbmNodSBTY2llbmNlIFBhcmsKLQkJCQlIc2luY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUQ5ICAgKGhleCkJCVNhbnRvc2hhIEludGVybmF0b25hbCwgSW5jCi0wMDE4RDkgICAgIChiYXNlIDE2KQkJU2FudG9zaGEgSW50ZXJuYXRvbmFsLCBJbmMKLQkJCQkzODQzIFMuIEJyaXN0b2wgU3QuICMyNDIKLQkJCQlTYW50YSBBbmEgQ0EgOTI3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LURBICAgKGhleCkJCUFNQkVSIHdpcmVsZXNzIEdtYkgKLTAwMThEQSAgICAgKGJhc2UgMTYpCQlBTUJFUiB3aXJlbGVzcyBHbWJICi0JCQkJQWxiaW4tS29lYmlzLVN0ci4gMTgKLQkJCQlLb2VsbiAgNTExNDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE4LURCICAgKGhleCkJCUVQTCBUZWNobm9sb2d5IEx0ZAotMDAxOERCICAgICAoYmFzZSAxNikJCUVQTCBUZWNobm9sb2d5IEx0ZAotCQkJCUxvbmdEb25nLExvbmdnYW5nIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODExNgotCQkJCUNISU5BCi0KLTAwLTE4LURDICAgKGhleCkJCVByb3N0YXIgQ28uLCBMdGQuCi0wMDE4REMgICAgIChiYXNlIDE2KQkJUHJvc3RhciBDby4sIEx0ZC4KLQkJCQlBLTcwMyBUZWNobm90b3duLCAyNTAtMyBIYWd5ZS1kb25nLCBOb3dvbi1ndQotCQkJCVNlb3VsICAxMzktMjMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LUREICAgKGhleCkJCVNpbGljb25kdXN0IEVuZ2luZWVyaW5nIEx0ZAotMDAxOEREICAgICAoYmFzZSAxNikJCVNpbGljb25kdXN0IEVuZ2luZWVyaW5nIEx0ZAotCQkJCVBPIEJveCA3NC0yOTkKLQkJCQlNYXJrZXQgUmQKLQkJCQlBdWNrbGFuZCAgCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMTgtREUgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMThERSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTgtREYgICAoaGV4KQkJVGhlIE1vcmV5IENvcnBvcmF0aW9uCi0wMDE4REYgICAgIChiYXNlIDE2KQkJVGhlIE1vcmV5IENvcnBvcmF0aW9uCi0JCQkJMTAwIE1vcmV5IERyaXZlCi0JCQkJV29vZHJpZGdlIElMIDYwNTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1FMCAgIChoZXgpCQlBTkFWRU8KLTAwMThFMCAgICAgKGJhc2UgMTYpCQlBTkFWRU8KLQkJCQlMZXMgQ2FycmVzIGR1IHBhcmMKLQkJCQkxMCBydWUgZGVzIFJvc2llcmlzdGVzCi0JCQkJQ0hBTVBBR05FIGF1IE1PTlQgRCdPUiBSaG9uZSBGLTY5NDEwCi0JCQkJRlJBTkNFCi0KLTAwLTE4LUUxICAgKGhleCkJCVZlcmtlcmsgU2VydmljZSBTeXN0ZW1lbgotMDAxOEUxICAgICAoYmFzZSAxNikJCVZlcmtlcmsgU2VydmljZSBTeXN0ZW1lbgotCQkJCU1vbGVudmxpZXQgMQotCQkJCVp3aWpuZHJlY2h0IFp1aWQtSG9sbGFuZCBOTC0zMzM1TEgKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xOC1FMiAgIChoZXgpCQlUb3BkYXRhIFNpc3RlbWFzIGRlIEF1dG9tYWNhbyBMdGRhCi0wMDE4RTIgICAgIChiYXNlIDE2KQkJVG9wZGF0YSBTaXN0ZW1hcyBkZSBBdXRvbWFjYW8gTHRkYQotCQkJCVJ1YSBEciBDYXJ2YWxobyBDaGF2ZXMsIDY2MgotCQkJCUN1cml0aWJhIFBSIDgwLjIyMC0wMTAKLQkJCQlCUkFaSUwKLQotMDAtMTgtRTMgICAoaGV4KQkJVmlzdWFsZ2F0ZSBTeXN0ZW1zLCBJbmMuCi0wMDE4RTMgICAgIChiYXNlIDE2KQkJVmlzdWFsZ2F0ZSBTeXN0ZW1zLCBJbmMuCi0JCQkJNjQgQmFrZXJzZmllbGQgU3RyZWV0Ci0JCQkJVG9yb250byBPbnRhcmlvIE0zSiAyVzcKLQkJCQlDQU5BREEKLQotMDAtMTgtRTQgICAoaGV4KQkJWUlHVUFORwotMDAxOEU0ICAgICAoYmFzZSAxNikJCVlJR1VBTkcKLQkJCQkzL0ZMLkluZHVzdHJ5IHpvbmUsRnV4aW5saW4sSGFuZ2NoZW5nLFhpeGlhbmcsQmFvYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI2Ci0JCQkJQ0hJTkEKLQotMDAtMTgtRTUgICAoaGV4KQkJQWRob2NvIEFHCi0wMDE4RTUgICAgIChiYXNlIDE2KQkJQWRob2NvIEFHCi0JCQkJVGVjaG5vcGFyawotCQkJCUphZWdlcnN0ci4gMgotCQkJCVdpbnRlcnRodXIgWkggQ0gtODQwNiAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xOC1FNiAgIChoZXgpCQlDb21wdXRlciBIYXJkd2FyZSBEZXNpZ24gU0lBCi0wMDE4RTYgICAgIChiYXNlIDE2KQkJQ29tcHV0ZXIgSGFyZHdhcmUgRGVzaWduIFNJQQotCQkJCUR6ZWx6YXZhcyAxMjBpCi0JCQkJUmlnYSAgTFYtMTAyMQotCQkJCUxBVFZJQQotCi0wMC0xOC1FNyAgIChoZXgpCQlDYW1lbyBDb21tdW5pY2F0aW9ucywgSU5DLgotMDAxOEU3ICAgICAoYmFzZSAxNikJCUNhbWVvIENvbW11bmljYXRpb25zLCBJTkMuCi0JCQkJTk8uNDIsIFNlYy4gNiwgTWluY3l1YW4gRS4gUmQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUU4ICAgKGhleCkJCUhhY2V0cm9uIENvcnBvcmF0aW9uCi0wMDE4RTggICAgIChiYXNlIDE2KQkJSGFjZXRyb24gQ29ycG9yYXRpb24KLQkJCQlOby4gNTQyLAotCQkJCVNlYy4xLCBZYW5nLUhVIFJkLAotCQkJCVlhbmctTWVpLCBUYW8tWXVhbiwgMzI2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1FOSAgIChoZXgpCQlOdW1hdGEgQ29ycG9yYXRpb24KLTAwMThFOSAgICAgKGJhc2UgMTYpCQlOdW1hdGEgQ29ycG9yYXRpb24KLQkJCQk4LTItMzkgbmFua28taGlnYXNoaQotCQkJCVN1bWlub2Uta3UKLQkJCQlPc2FrYS1zaGkgT3Nha2EtZnUgNTU5LTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xOC1FQSAgIChoZXgpCQlBbGx0ZWMgR21iSAotMDAxOEVBICAgICAoYmFzZSAxNikJCUFsbHRlYyBHbWJICi0JCQkJQW4gZGVyIFRyYXZlIDI3LTMxCi0JCQkJU2VsbXNkb3JmIE1lY2tsZW5idXJnLVZvcnBvbW1lcm4gMjM5MjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE4LUVCICAgKGhleCkJCUJyb1ZpcyBXaXJlbGVzcyBOZXR3b3JrcwotMDAxOEVCICAgICAoYmFzZSAxNikJCUJyb1ZpcyBXaXJlbGVzcyBOZXR3b3JrcwotCQkJCTE5OTI1IFN0ZXZlbnMgQ3JlZWsgQmx2ZAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRUMgICAoaGV4KQkJV2VsZGluZyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDE4RUMgICAgIChiYXNlIDE2KQkJV2VsZGluZyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMjQ3NzUgQ3Jlc3R2aWV3IENvdXJ0Ci0JCQkJRmFybWluZ3RvbiBIaWxscyBNSSA0ODMzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRUQgICAoaGV4KQkJQWNjdXRlY2ggVWx0cmFzeXN0ZW1zIENvLiwgTHRkLgotMDAxOEVEICAgICAoYmFzZSAxNikJCUFjY3V0ZWNoIFVsdHJhc3lzdGVtcyBDby4sIEx0ZC4KLQkJCQkxMUYtNCwgTm8uIDE1MCwKLQkJCQlDSElFTi1ZSSBST0FELAotCQkJCUNIVU5HLUhPIENJVFksIFRBSVBFSSBIU0lFTiwgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1FRSAgIChoZXgpCQlWaWRlb2xvZ3kgSW1hZ2luZyBTb2x1dGlvbnMsIEluYy4KLTAwMThFRSAgICAgKGJhc2UgMTYpCQlWaWRlb2xvZ3kgSW1hZ2luZyBTb2x1dGlvbnMsIEluYy4KLQkJCQkzNyBNIExhcmsgSW5kdXN0cmlhbCBQYXJrd2F5Ci0JCQkJR3JlZW52aWxsZSBSSSAwMjgyOC0zMDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1FRiAgIChoZXgpCQlFc2NhcGUgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMThFRiAgICAgKGJhc2UgMTYpCQlFc2NhcGUgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyNjE1IFBhY2lmaWMgQ29hc3QgSHd5Ci0JCQkJU3RlIDMyOQotCQkJCUhlcm1vc2EgQmVhY2ggQ0EgOTAyNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUYwICAgKGhleCkJCUpPWVRPVE8gQ28uLCBMdGQuCi0wMDE4RjAgICAgIChiYXNlIDE2KQkJSk9ZVE9UTyBDby4sIEx0ZC4KLQkJCQkzRiBTdW5nd29vIEJsZGcuIDcxNy0zLCBTb29zZW8tRG9uZwotCQkJCUthbmduYW0tR3UKLQkJCQlTZW91bCAgMTM1LTIyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1GMSAgIChoZXgpCQlDaHVuaWNoaSBEZW5zaGkgQ28uLExURC4KLTAwMThGMSAgICAgKGJhc2UgMTYpCQlDaHVuaWNoaSBEZW5zaGkgQ28uLExURC4KLQkJCQkxIERlbmppeWFtYQotCQkJCU5hcnVtaSBjaG8gTWlkb3JpIGt1Ci0JCQkJTmFnb3lhIEFpY2hpIDQ1OC04NTI1Ci0JCQkJSkFQQU4KLQotMDAtMTgtRjIgICAoaGV4KQkJQmVpamluZyBUaWFueXUgQ29tbXVuaWNhdGlvbiBFcXVpcG1lbnQgQ28uLCBMdGQKLTAwMThGMiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFRpYW55dSBDb21tdW5pY2F0aW9uIEVxdWlwbWVudCBDby4sIEx0ZAotCQkJCTI3dGggRmxvb3IsIFRlbmdkYSBQbGF6YQotCQkJCVhpemhpbWVuZ3dhaSBTdHJlZXQsIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwNDQKLQkJCQlDSElOQQotCi0wMC0xOC1GMyAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTAwMThGMyAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91Ci0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUY0ICAgKGhleCkJCUVPIFRFQ0hOSUNTIENvLiwgTHRkLgotMDAxOEY0ICAgICAoYmFzZSAxNikJCUVPIFRFQ0hOSUNTIENvLiwgTHRkLgotCQkJCTg2NC00LCBLd2FueWFuZyAyLURvbmcKLQkJCQlEb25nYW4tR3UKLQkJCQlBbnlhbmcgS3llb25nZ2ktRG8gNDMxLTA2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1GNSAgIChoZXgpCQlTaGVuemhlbiBTdHJlYW1pbmcgVmlkZW8gVGVjaG5vbG9neSBDb21wYW55IExpbWl0ZWQKLTAwMThGNSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBTdHJlYW1pbmcgVmlkZW8gVGVjaG5vbG9neSBDb21wYW55IExpbWl0ZWQKLQkJCQk1L0YsIEJsb2NrIDMsIFNvZnR3YXJlIFBhcnQgTm8uMSwgS2VqaSBNaWRkbGUgMiBSb2FkLAotCQkJCVNoZW56aGVuIEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrCi0JCQkJU2hlbnpoZW4gR2F1bmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE4LUY2ICAgKGhleCkJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0wMDE4RjYgICAgIChiYXNlIDE2KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3Ci0JCQkJRWRlZ2VtIEFudHdlcnAgQi0yNjUwCi0JCQkJQkVMR0lVTQotCi0wMC0xOC1GNyAgIChoZXgpCQlLYW1lbGVvbiBUZWNobm9sb2dpZXMKLTAwMThGNyAgICAgKGJhc2UgMTYpCQlLYW1lbGVvbiBUZWNobm9sb2dpZXMKLQkJCQkyMTcsIHJ1ZSBTdCBIb25vcmUKLQkJCQlQYXJpcyAgNzUwMDEKLQkJCQlGUkFOQ0UKLQotMDAtMTgtRjggICAoaGV4KQkJQ2lzY28tTGlua3N5cyBMTEMKLTAwMThGOCAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ0EgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUY5ICAgKGhleCkJCVZWT05ELCBJbmMuCi0wMDE4RjkgICAgIChiYXNlIDE2KQkJVlZPTkQsIEluYy4KLQkJCQkzMDAwIEJyaWRnZSBQYXJrd2F5Ci0JCQkJU3VpdGUgMTAyCi0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1GQSAgIChoZXgpCQlZdXNoaW4gUHJlY2lzaW9uIEVxdWlwbWVudCBDby4sTHRkLgotMDAxOEZBICAgICAoYmFzZSAxNikJCVl1c2hpbiBQcmVjaXNpb24gRXF1aXBtZW50IENvLixMdGQuCi0JCQkJMTEtMjYwIEtPR0FIT05NQUNISQotCQkJCUZVU0hJTUktS1UKLQkJCQlLWU9UTyAgNjEyLTg0OTIgSkFQCi0JCQkJSkFQQU4KLQotMDAtMTgtRkIgICAoaGV4KQkJQ29tcHJvIFRlY2hub2xvZ3kKLTAwMThGQiAgICAgKGJhc2UgMTYpCQlDb21wcm8gVGVjaG5vbG9neQotCQkJCTMvRiBObyAxMiwgQWxsZXkgNiwgTGFuZSA0NSwgUGFvIFNoaW4gUmQKLQkJCQlIc2ludGllbiAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1GQyAgIChoZXgpCQlBbHRlYyBFbGVjdHJvbmljIEFHCi0wMDE4RkMgICAgIChiYXNlIDE2KQkJQWx0ZWMgRWxlY3Ryb25pYyBBRwotCQkJCUxlbmdnZW5iYWNoc3RyYXNzZSAzCi0JCQkJRmFocndlaWQgWnVyaWNoIENILTg5NTEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xOC1GRCAgIChoZXgpCQlPcHRpbWFsIFRlY2hub2xvZ2llcyBJbnRlcm5hdGlvbmFsIEluYy4KLTAwMThGRCAgICAgKGJhc2UgMTYpCQlPcHRpbWFsIFRlY2hub2xvZ2llcyBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQkxMiBTcGFuaXNoIE1haW4gRHJpdmUKLQkJCQlQTyBCb3ggRi00MjQwOS8zNTkKLQkJCQlGcmVlcG9ydCBHQkkgCi0JCQkJQkFIQU1BUwotCi0wMC0xOC1GRSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMThGRSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDYwMzA4Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRkYgICAoaGV4KQkJUG93ZXJRdWF0dHJvIENvLgotMDAxOEZGICAgICAoYmFzZSAxNikJCVBvd2VyUXVhdHRybyBDby4KLQkJCQlKYW5vcyB1LiAxNzUuCi0JCQkJQnVkYXBlc3QgIEgtMTE2MQotCQkJCUhVTkdBUlkKLQotMDAtMTktMDAgICAoaGV4KQkJSW50ZWxsaXZlcmVzZSAtIERCQSBWb2ljZWNvbQotMDAxOTAwICAgICAoYmFzZSAxNikJCUludGVsbGl2ZXJlc2UgLSBEQkEgVm9pY2Vjb20KLQkJCQk1OTAwIFdpbmR3YXJkIFBhcmt3YXkKLQkJCQlTdWl0ZSA1MDAKLQkJCQlBbHBoYXJldHRhIEdlb3JnaWEgMzAwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTAxICAgKGhleCkJCUYxTUVESUEKLTAwMTkwMSAgICAgKGJhc2UgMTYpCQlGMU1FRElBCi0JCQkJNjEwLCBLZXVta2FuZyBIaWdodGVjaCA/PywgMTM4LTEgU2FuZ2RhZXdvbi1Eb25nLCBKdW5nd29uLUd1Ci0JCQkJU2VvbmduYW0tU2kgR3llb25nZ2ktRG8gNDYyLTcwNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0wMiAgIChoZXgpCQlDYW1icmlkZ2UgQ29uc3VsdGFudHMgTHRkCi0wMDE5MDIgICAgIChiYXNlIDE2KQkJQ2FtYnJpZGdlIENvbnN1bHRhbnRzIEx0ZAotCQkJCVNjaWVuY2UgUGFyawotCQkJCU1pbHRvbiBSb2FkCi0JCQkJQ2FtYnJpZGdlIENhbWJzIENCNCAwRFcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOS0wMyAgIChoZXgpCQlCaWdmb290IE5ldHdvcmtzIEluYwotMDAxOTAzICAgICAoYmFzZSAxNikJCUJpZ2Zvb3QgTmV0d29ya3MgSW5jCi0JCQkJMzkyNSBXZXN0IEJyYWtlciBMYW5lCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0wNCAgIChoZXgpCQlXQiBFbGVjdHJvbmljcyBTcC4geiBvLm8uCi0wMDE5MDQgICAgIChiYXNlIDE2KQkJV0IgRWxlY3Ryb25pY3MgU3AuIHogby5vLgotCQkJCXVsLiBQb3puYW5za2EgMTI5LzEzMwotCQkJCU96YXJvdyBNYXpvd2llY2tpIE1hem93aWVja2llIDA1LTg1MAotCQkJCVBPTEFORAotCi0wMC0xOS0wNSAgIChoZXgpCQlTQ0hSQUNLIFNlY29uZXQgQUcKLTAwMTkwNSAgICAgKGJhc2UgMTYpCQlTQ0hSQUNLIFNlY29uZXQgQUcKLQkJCQlFaWJlc2JydW5uZXJnYXNzZSAxOAotCQkJCVdpZW4gT3N0ZXJyZWljaCAxMTIyCi0JCQkJQVVTVFJJQQotCi0wMC0xOS0wNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5MDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0wNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5MDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0wOCAgIChoZXgpCQlEdWF4ZXMgQ29ycG9yYXRpb24KLTAwMTkwOCAgICAgKGJhc2UgMTYpCQlEdWF4ZXMgQ29ycG9yYXRpb24KLQkJCQkyLTUsIEthc3VtaWdhc2VraSAzLWNob21lLCBDaGl5b2RhLWt1LgotCQkJCVRva3lvIEZvcmVpZ24gMTAwLTYwMTQKLQkJCQlKQVBBTgotCi0wMC0xOS0wOSAgIChoZXgpCQlEZXZpIEEvUwotMDAxOTA5ICAgICAoYmFzZSAxNikJCURldmkgQS9TCi0JCQkJVWx2ZWhhdmV2ZWogNjEKLQkJCQlWZWpsZSAgNzEwMAotCQkJCURFTk1BUksKLQotMDAtMTktMEEgICAoaGV4KQkJSEFTV0FSRSBJTkMuCi0wMDE5MEEgICAgIChiYXNlIDE2KQkJSEFTV0FSRSBJTkMuCi0JCQkJNC0xMi0zIEhJR0FTSEkKLQkJCQlLVU5JVEFDSEkgVE9LWU8gMTg2LTAwMDIKLQkJCQlKQVBBTgotCi0wMC0xOS0wQiAgIChoZXgpCQlTb3V0aGVybiBWaXNpb24gU3lzdGVtcywgSW5jLgotMDAxOTBCICAgICAoYmFzZSAxNikJCVNvdXRoZXJuIFZpc2lvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJODIxNSBNYWRpc29uIEJsdmQsIFN1aXRlIDE1MAotCQkJCU1hZGlzb24gQUwgMzU3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTBDICAgKGhleCkJCUVuY29yZSBFbGVjdHJvbmljcywgSW5jLgotMDAxOTBDICAgICAoYmFzZSAxNikJCUVuY29yZSBFbGVjdHJvbmljcywgSW5jLgotCQkJCTE2NDgzIE9sZCBWYWxsZXkgQmx2ZC4KLQkJCQlMYSBQdWVudGUgQ0EgOTE3NDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTBEICAgKGhleCkJCUlFRUUgMTM5NGMKLTAwMTkwRCAgICAgKGJhc2UgMTYpCQlJRUVFIDEzOTRjCi0JCQkJYy9vIDEzOTQgVHJhZGUgQXNzb2NpYXRpb24KLQkJCQkxNTYwIEVhc3QgU291dGhsYWtlIEJsdmQuLCBTdWl0ZSAyMjAKLQkJCQlTb3V0aGxha2UgVFggNzYwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTBFICAgKGhleCkJCUF0ZWNoIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDE5MEUgICAgIChiYXNlIDE2KQkJQXRlY2ggVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk0IEZsLiwgTm8uIDEwMywgU2VjIDIsIEppdXpvbmcgUmQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTBGICAgKGhleCkJCUFkdmFuc3VzIENvcnAuCi0wMDE5MEYgICAgIChiYXNlIDE2KQkJQWR2YW5zdXMgQ29ycC4KLQkJCQlOby41IFNoaW5nIFllaCBTdHJlZXQsIEt3ZWkgSHNpYW5nCi0JCQkJVGFveXVhbiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS0xMCAgIChoZXgpCQlLbmljayBFbGVrdHJvbmlzY2hlIE1lc3NnZXJhZXRlIEdtYkggJiBDby4gS0cKLTAwMTkxMCAgICAgKGJhc2UgMTYpCQlLbmljayBFbGVrdHJvbmlzY2hlIE1lc3NnZXJhZXRlIEdtYkggJiBDby4gS0cKLQkJCQlCZXVja2VzdHIuIDIyCi0JCQkJQmVybGluICAxNDE2MwotCQkJCUdFUk1BTlkKLQotMDAtMTktMTEgICAoaGV4KQkJSnVzdCBJbiBNb2JpbGUgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0wMDE5MTEgICAgIChiYXNlIDE2KQkJSnVzdCBJbiBNb2JpbGUgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0JCQkJNXRoIEZsb29yLCAybmQgQXJlYSwgSGFpd2FuZ3hpbmcgQnVpbGRpbmcsIDYyIFhpbmdndWFuZyBBdmUuLCBOLkhpZ2gtVGVjaCBQYXJrCi0JCQkJQ2hvbmdxaW5nICA0MDExMjEKLQkJCQlDSElOQQotCi0wMC0xOS0xMiAgIChoZXgpCQlXZWxjYXQgSW5jCi0wMDE5MTIgICAgIChiYXNlIDE2KQkJV2VsY2F0IEluYwotCQkJCUVhc3QgVG93ZXIgNkYsIFNoaW5hZ2F3YSBTZWFzaWRlLCA0LTEyLTgsIEhpZ2FzaGkgU2hpbmFnYXdhLCBTaGluYWdhd2EgU2VjdGlvbgotCQkJCVRva3lvICAxNDAtMDAwMgotCQkJCUpBUEFOCi0KLTAwLTE5LTEzICAgKGhleCkJCUNodWFuZy1ZaSBOZXR3b3JrIEVxdWlwbWVudCBDby5MdGQuCi0wMDE5MTMgICAgIChiYXNlIDE2KQkJQ2h1YW5nLVlpIE5ldHdvcmsgRXF1aXBtZW50IENvLkx0ZC4KLQkJCQkyMzggVGlhbk11U2hhbiBSZC4sIFdlc3QgTGFrZSBkaXN0cmljdAotCQkJCUhhbmdaaG91IFpoZUppYW5nIDMxMDAwMAotCQkJCUNISU5BCi0KLTAwLTE5LTE0ICAgKGhleCkJCVdpbml4IENvLiwgTHRkCi0wMDE5MTQgICAgIChiYXNlIDE2KQkJV2luaXggQ28uLCBMdGQKLQkJCQkzNjMgQW5nYWRlIEJsZGcuLCBZYW5namFlLWRvbmcKLQkJCQlTZW9jaG8tZ3UKLQkJCQlTZW91bCAgMTM3LTg5OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0xNSAgIChoZXgpCQlURUNPTSBDby4sIEx0ZC4KLTAwMTkxNSAgICAgKGJhc2UgMTYpCQlURUNPTSBDby4sIEx0ZC4KLQkJCQkyMyBSJkQgUm9hZCAyIFNjaWVuY2UgQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktMTYgICAoaGV4KQkJUGF5VGVjIEFHCi0wMDE5MTYgICAgIChiYXNlIDE2KQkJUGF5VGVjIEFHCi0JCQkJUm9zZW5nYXJ0ZW5zdHJhc3NlIDMKLQkJCQlab2xsaWtlcmJlcmcgWkggODEyNQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE5LTE3ICAgKGhleCkJCVBvc2lmbGV4IEluYy4KLTAwMTkxNyAgICAgKGJhc2UgMTYpCQlQb3NpZmxleCBJbmMuCi0JCQkJNiwgV3UtQ2h1YW4gUm9hZAotCQkJCVd1IEt1Ci0JCQkJVGFpcGVpIEhzaWVuICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTE4ICAgKGhleCkJCUludGVyYWN0aXZlIFdlYXIgQUcKLTAwMTkxOCAgICAgKGJhc2UgMTYpCQlJbnRlcmFjdGl2ZSBXZWFyIEFHCi0JCQkJUGV0ZXJzYnJ1bm5lciBTdHIuIDMKLQkJCQlTdGFybmJlcmcgQmF2YXJpYSA4MjMxOQotCQkJCUdFUk1BTlkKLQotMDAtMTktMTkgICAoaGV4KQkJQVNURUwgSW5jLgotMDAxOTE5ICAgICAoYmFzZSAxNikJCUFTVEVMIEluYy4KLQkJCQk1OS03IEphbmctZG9uZyBZdXN1bmctR3UKLQkJCQlEYWVqZW9uIENodW5nbmFtIDMwNS0zNDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktMUEgICAoaGV4KQkJSVJMSU5LCi0wMDE5MUEgICAgIChiYXNlIDE2KQkJSVJMSU5LCi0JCQkJSGFuWW91bmcgQi9EIDZGLCA0LTYKLQkJCQlNdW5qZW9uZy1kb25nLCBTb25wYS1rdQotCQkJCVNFT1VMICAxMzgtODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTFCICAgKGhleCkJCVNwdXRuaWsgRW5naW5lZXJpbmcgQUcKLTAwMTkxQiAgICAgKGJhc2UgMTYpCQlTcHV0bmlrIEVuZ2luZWVyaW5nIEFHCi0JCQkJSG9oZXdlZyA4NQotCQkJCUJpZWwtQmllbm5lIEJFICAyNTAyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTktMUMgICAoaGV4KQkJU2Vuc2ljYXN0IFN5c3RlbXMKLTAwMTkxQyAgICAgKGJhc2UgMTYpCQlTZW5zaWNhc3QgU3lzdGVtcwotCQkJCTIwMCBSZXNlcnZvaXIgU3QKLQkJCQlTdWl0ZSAxMDAKLQkJCQlOZWVkaGFtIE1BIDAyNDk0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0xRCAgIChoZXgpCQlOaW50ZW5kbyBDby4sTHRkLgotMDAxOTFEICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLixMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTktMUUgICAoaGV4KQkJQmV5b25kd2l6IENvLiwgTHRkLgotMDAxOTFFICAgICAoYmFzZSAxNikJCUJleW9uZHdpeiBDby4sIEx0ZC4KLQkJCQkzRiwgRGFlY2hhbmcgQmxkZy4sCi0JCQkJOC0yLCBTb29uYWUtZG9uZywgQnVuZGFuZy1ndQotCQkJCVN1bmduYW0gS3l1bmdraS1kbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTFGICAgKGhleCkJCU1pY3JvbGluayBjb21tdW5pY2F0aW9ucyBJbmMuCi0wMDE5MUYgICAgIChiYXNlIDE2KQkJTWljcm9saW5rIGNvbW11bmljYXRpb25zIEluYy4KLQkJCQk4RiAsIDMxICwgSHNpbnRhaSBSb2FkICwgQ2h1cGVpIENpdHkgLCBIc2luY2h1Ci0JCQkJQ2h1cGVpIFRhaXdhbiAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTIwICAgKGhleCkJCUtVTUUgZWxlY3RyaWMgQ28uLEx0ZC4KLTAwMTkyMCAgICAgKGJhc2UgMTYpCQlLVU1FIGVsZWN0cmljIENvLixMdGQuCi0JCQkJNC0yLTI0IEtpdGFrYXdhcmEKLQkJCQlJdGFtaS1jaXR5IEh5b3VnbyAKLQkJCQlKQVBBTgotCi0wMC0xOS0yMSAgIChoZXgpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4KLTAwMTkyMSAgICAgKGJhc2UgMTYpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4KLQkJCQlOby4yMixBbGxleSAzOCxMYW5lIDkxLCBTZWMuIDEsTmVpIEh1IFJvYWQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTIyICAgKGhleCkJCUNNIENvbWFuZG9zIExpbmVhcmVzCi0wMDE5MjIgICAgIChiYXNlIDE2KQkJQ00gQ29tYW5kb3MgTGluZWFyZXMKLQkJCQlBdiBFbmcgQWxiZXJ0byBkZSBaYWdvdHRpcywgNzYwCi0JCQkJSnVydWJhdHViYQotCQkJCVNhbyBQYXVsbyBTUCAwNDY3NS0wODUKLQkJCQlCUkFaSUwKLQotMDAtMTktMjMgICAoaGV4KQkJUGhvbmV4IEtvcmVhIENvLiwgTFRELgotMDAxOTIzICAgICAoYmFzZSAxNikJCVBob25leCBLb3JlYSBDby4sIExURC4KLQkJCQkzMy0zLCBHZW95ZW8tRG9uZwotCQkJCVNlb3VsIFNvbmdwYS1HdSAxMzgtODE0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTI0ICAgKGhleCkJCUxCTkwgIEVuZ2luZWVyaW5nCi0wMDE5MjQgICAgIChiYXNlIDE2KQkJTEJOTCAgRW5naW5lZXJpbmcKLQkJCQkxIEN5Y2xvdHJvbiBSZC4KLQkJCQlNUzQ2UjAxMjUKLQkJCQlCZXJrZWxleSBDQSA5NDcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMjUgICAoaGV4KQkJSW50ZWxpY2lzIENvcnBvcmF0aW9uCi0wMDE5MjUgICAgIChiYXNlIDE2KQkJSW50ZWxpY2lzIENvcnBvcmF0aW9uCi0JCQkJNDYzMyBPbGQgSXJvbnNpZGVzIERyaXZlLCBTdWl0ZSAxNTAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMjYgICAoaGV4KQkJQml0c0dlbiBDby4sIEx0ZC4KLTAwMTkyNiAgICAgKGJhc2UgMTYpCQlCaXRzR2VuIENvLiwgTHRkLgotCQkJCSM1MDIsIE93bmVyJ3MgVG93ZXIsICMxNi01LCBTdW5lYS1kb25nCi0JCQkJQnVuZGFuZy1ndSBTZW9uZ25hbS1zaSA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTI3ICAgKGhleCkJCUltQ29TeXMgTHRkCi0wMDE5MjcgICAgIChiYXNlIDE2KQkJSW1Db1N5cyBMdGQKLQkJCQlCdW5kZXNzdHJhc3NlIDUKLQkJCQladWcgWkcgNjMwMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE5LTI4ICAgKGhleCkJCVNpZW1lbnMgQUcsIFRyYW5zcG9ydGF0aW9uIFN5c3RlbXMKLTAwMTkyOCAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHLCBUcmFuc3BvcnRhdGlvbiBTeXN0ZW1zCi0JCQkJV2VybmVyLXZvbi1TaWVtZW5zLVN0cmFzc2UgNjcKLQkJCQlFcmxhbmdlbiAgOTEwNTIKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTI5ICAgKGhleCkJCTJNMkIgTW9udGFkb3JhIGRlIE1hcXVpbmFzIEJhaGlhIEJyYXNpbCBMVERBCi0wMDE5MjkgICAgIChiYXNlIDE2KQkJMk0yQiBNb250YWRvcmEgZGUgTWFxdWluYXMgQmFoaWEgQnJhc2lsIExUREEKLQkJCQlSdWEgRGphbG1hIGR1dHJhLCA2NjgsIFNldGUgUG9ydGFzCi0JCQkJU2FsdmFkb3IgQmFoaWEgNDAyNDAwODAKLQkJCQlCUkFaSUwKLQotMDAtMTktMkEgICAoaGV4KQkJQW50aW9wZSBBc3NvY2lhdGVzCi0wMDE5MkEgICAgIChiYXNlIDE2KQkJQW50aW9wZSBBc3NvY2lhdGVzCi0JCQkJMTggQ2xheSBTdHJlZXQKLQkJCQlGYWlyIEhhdmVuIE5ldyBKZXJzZXkgMDc3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTJCICAgKGhleCkJCUFjbGFyYSBSRiBTeXN0ZW1zIEluYy4KLTAwMTkyQiAgICAgKGJhc2UgMTYpCQlBY2xhcmEgUkYgU3lzdGVtcyBJbmMuCi0JCQkJMzA0MDAgU29sb24gUm9hZAotCQkJCVNvbG9uIE9IIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0yQyAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMTkyQyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0yRCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotMDAxOTJEICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJUmVuc2luZ3N0ci4gMTUKLQkJCQlCb2NodW0gTlJXIDQ0ODA3Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS0yRSAgIChoZXgpCQlTcGVjdHJhbCBJbnN0cnVtZW50cywgSW5jLgotMDAxOTJFICAgICAoYmFzZSAxNikJCVNwZWN0cmFsIEluc3RydW1lbnRzLCBJbmMuCi0JCQkJNDIwIE4gQm9uaXRhIEF2ZQotCQkJCVR1Y3NvbiBBWiA4NTc0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMkYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxOTJGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMzAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxOTMwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMzEgICAoaGV4KQkJQmFsbHVmZiBHbWJICi0wMDE5MzEgICAgIChiYXNlIDE2KQkJQmFsbHVmZiBHbWJICi0JCQkJU2NodXJ3YWxkc3RyLiA5Ci0JCQkJTmV1aGF1c2VuIEJXIDczNzY1Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS0zMiAgIChoZXgpCQlHdWRlIEFuYWxvZy0gdW5kIERpZ2lhbHN5c3RlbWUgR21iSAotMDAxOTMyICAgICAoYmFzZSAxNikJCUd1ZGUgQW5hbG9nLSB1bmQgRGlnaWFsc3lzdGVtZSBHbWJICi0JCQkJRWludHJhY2hzdHJhc3NlIDExMwotCQkJCUNvbG9nbmUgTlJXIDUwNjY4Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS0zMyAgIChoZXgpCQlTdHJpeCBTeXN0ZW1zLCBJbmMuCi0wMDE5MzMgICAgIChiYXNlIDE2KQkJU3RyaXggU3lzdGVtcywgSW5jLgotCQkJCTI2NjEwIEFnb3VyYSBSb2FkCi0JCQkJQ2FsYWJhc2FzIENBIDkxMzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0zNCAgIChoZXgpCQlUUkVORE9OIFRPVUNIIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMTkzNCAgICAgKGJhc2UgMTYpCQlUUkVORE9OIFRPVUNIIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkyRiBOby41LCBBbGxleSAyMiwgTGFuZSA1MTMsIFJ1ZWlndWFuZyBSZC4sIE5laWh1Ci0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktMzUgICAoaGV4KQkJRHVlcnIgRGVudGFsIEdtYkggJiBDby4gS0cKLTAwMTkzNSAgICAgKGJhc2UgMTYpCQlEdWVyciBEZW50YWwgR21iSCAmIENvLiBLRwotCQkJCUhvZXBmaWdoZWltZXIgU3RyYXNzZSAxNwotCQkJCUJpZXRpZ2hlaW0tQmlzc2luZ2VuIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3NDMyMQotCQkJCUdFUk1BTlkKLQotMDAtMTktMzYgICAoaGV4KQkJU1RFUkxJVEUgT1BUSUNBTCBURUNITk9MT0dJRVMgTElNSVRFRAotMDAxOTM2ICAgICAoYmFzZSAxNikJCVNURVJMSVRFIE9QVElDQUwgVEVDSE5PTE9HSUVTIExJTUlURUQKLQkJCQlFLTEsRS0yLCZFLTMKLQkJCQlNSURDICwgV0FMVUoKLQkJCQlBVVJBTkdBQkFEIE1BSEFSQVNUUkEgNDMxMTM2Ci0JCQkJSU5ESUEKLQotMDAtMTktMzcgICAoaGV4KQkJQ29tbWVyY2VHdWFyZCBBQgotMDAxOTM3ICAgICAoYmFzZSAxNikJCUNvbW1lcmNlR3VhcmQgQUIKLQkJCQlHdXN0YXZzbHVuZHN2IDE1MUEKLQkJCQlCUk9NTUEgIDE2NzE0Ci0JCQkJU1dFREVOCi0KLTAwLTE5LTM4ICAgKGhleCkJCVVNQiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMTkzOCAgICAgKGJhc2UgMTYpCQlVTUIgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJMTAxMCwgNSwgQUNFIFRlY2hubyBUb3dlciwgMTk3LTIyLCBHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUxLTc2NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0zOSAgIChoZXgpCQlHaWdhbWlwcwotMDAxOTM5ICAgICAoYmFzZSAxNikJCUdpZ2FtaXBzCi0JCQkJNXRoIEZsb29yLCBZYW5namFlIEJ1aWxkaW5nLCAyNjEsIFlhbmdqYWUtRG9uZwotCQkJCVNlb2Noby1HdSBTZW91bCAxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTNBICAgKGhleCkJCU9FU09MVVRJT05TCi0wMDE5M0EgICAgIChiYXNlIDE2KQkJT0VTT0xVVElPTlMKLQkJCQlUZWNobm9wYXJrLCA5NTgtMyBEYWVjaG9uLURvbmcsIEJ1ay1HdQotCQkJCUd3YW5nanUgQnVrLUd1IDUwMC03MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktM0IgICAoaGV4KQkJV2lsaWJveCBEZWxpYmVyYW50IEdyb3VwIExMQwotMDAxOTNCICAgICAoYmFzZSAxNikJCVdpbGlib3ggRGVsaWJlcmFudCBHcm91cCBMTEMKLQkJCQkxNDQwIER1dGNoIFZhbGxleSBQbGFjZQotCQkJCVN1aXRlIDExNTUKLQkJCQlBdGxhbnRhIEdBIDMwMzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0zQyAgIChoZXgpCQlIaWdoUG9pbnQgVGVjaG5vbG9naWVzIEluY29ycG9yYXRlZAotMDAxOTNDICAgICAoYmFzZSAxNikJCUhpZ2hQb2ludCBUZWNobm9sb2dpZXMgSW5jb3Jwb3JhdGVkCi0JCQkJMTE2MSBDYWRpbGxhYyBDb3VydAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0zRCAgIChoZXgpCQlHTUMgR3VhcmRpYW4gTW9iaWxpdHkgQ29ycC4KLTAwMTkzRCAgICAgKGJhc2UgMTYpCQlHTUMgR3VhcmRpYW4gTW9iaWxpdHkgQ29ycC4KLQkJCQlTdWl0ZSAyMDAKLQkJCQk0MyBBdXJpZ2EgRHIuCi0JCQkJT3R0YXdhIE9OIEsyRSA3WTgKLQkJCQlDQU5BREEKLQotMDAtMTktM0UgICAoaGV4KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TCi0wMDE5M0UgICAgIChiYXNlIDE2KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TCi0JCQkJVklBTEUgU0FSQ0EgMjIyCi0JCQkJTUlMQU5PICAyMDEyNgotCQkJCUlUQUxZCi0KLTAwLTE5LTNGICAgKGhleCkJCVJESSB0ZWNobm9sb2d5KFNoZW56aGVuKSBDby4sTFRECi0wMDE5M0YgICAgIChiYXNlIDE2KQkJUkRJIHRlY2hub2xvZ3koU2hlbnpoZW4pIENvLixMVEQKLQkJCQlCdWlsZGluZyBDMSZDMiwgIFhpbiBUYW5nIEluZHVzdHJpYWwgWm9uZSxFYXN0IEJhaVNoaVhpYSBWaWxsYWdlLCBGdXlvbmcgVG93biwgQmFvYW4gRGlzdHJpY3QKLQkJCQlTSEVOWkhFTiBHVUFOR0RPTkcgcHJvdmluY2UgNTE4MTAzCi0JCQkJQ0hJTkEKLQotMDAtMTktNDAgICAoaGV4KQkJUmFja2FibGUgU3lzdGVtcwotMDAxOTQwICAgICAoYmFzZSAxNikJCVJhY2thYmxlIFN5c3RlbXMKLQkJCQkxOTMzIE1pbG1vbnQgRHJpdmUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNDEgICAoaGV4KQkJUGl0bmV5IEJvd2VzLCBJbmMKLTAwMTk0MSAgICAgKGJhc2UgMTYpCQlQaXRuZXkgQm93ZXMsIEluYwotCQkJCTM1IFdhdGVydmlldyBEcml2ZQotCQkJCU1TQyAyNi0yMQotCQkJCVNoZWx0b24gQ1QgMDY0ODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTQyICAgKGhleCkJCU9OIFNPRlRXQVJFIElOVEVSTkFUSU9OQUwgTElNSVRFRAotMDAxOTQyICAgICAoYmFzZSAxNikJCU9OIFNPRlRXQVJFIElOVEVSTkFUSU9OQUwgTElNSVRFRAotCQkJCTlGLCBOTy4gMTcsIFNFQy4gMSwgQ0hFTkctVEUgUkQuCi0JCQkJVEFJUEVJICAxMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTQzICAgKGhleCkJCUJlbGRlbgotMDAxOTQzICAgICAoYmFzZSAxNikJCUJlbGRlbgotCQkJCTc5MyBGb3J0IE1pbGwgSGlnaHdheQotCQkJCUZvcnQgTWlsbCBTb3V0aCBDYXJvbGluYSAyOTcxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNDQgICAoaGV4KQkJRm9zc2lsIFBhcnRuZXJzLCBMLlAuCi0wMDE5NDQgICAgIChiYXNlIDE2KQkJRm9zc2lsIFBhcnRuZXJzLCBMLlAuCi0JCQkJMjI4MCBOLiBHcmVlbnZpbGxlIEF2ZS4KLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS00NSAgIChoZXgpCQlUZW4tVGVjIEluYy4KLTAwMTk0NSAgICAgKGJhc2UgMTYpCQlUZW4tVGVjIEluYy4KLQkJCQkxMTg1IERvbGx5IFBhcnRvbiBQa3d5Ci0JCQkJU2V2aWVydmlsbGUgVE4gMzc4NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTQ2ICAgKGhleCkJCUNpYW5ldCBJbmR1c3RyaWEgZSBDb21lcmNpbyBTL0EKLTAwMTk0NiAgICAgKGJhc2UgMTYpCQlDaWFuZXQgSW5kdXN0cmlhIGUgQ29tZXJjaW8gUy9BCi0JCQkJcm9kIFNDNDAxLCBrbTAxIFRlY25vcG9saXMvQWxmYW1hIDRvLiBBbmRhcgotCQkJCUZsb3JpYW5vcG9saXMgU2FudGEgQ2F0YXJpbmEgODgwMzAtOTAyCi0JCQkJQlJBWklMCi0KLTAwLTE5LTQ3ICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YSwgQSBDaXNjbyBDb21wYW55Ci0wMDE5NDcgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBBIENpc2NvIENvbXBhbnkKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJQVRMIDEuMy40NzMKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS00OCAgIChoZXgpCQlBaXJlU3BpZGVyIE5ldHdvcmtzCi0wMDE5NDggICAgIChiYXNlIDE2KQkJQWlyZVNwaWRlciBOZXR3b3JrcwotCQkJCTExNzEgTW9udGFndWUgRXhwcmVzcyBXYXkKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNDkgICAoaGV4KQkJVEVOVEVMICBDT01URUNIIENPLiwgTFRELgotMDAxOTQ5ICAgICAoYmFzZSAxNikJCVRFTlRFTCAgQ09NVEVDSCBDTy4sIExURC4KLQkJCQkzL0YuLCBOTy4gNDIsIExBTkUgODAsIFNFQy4gMywgTkFOLUtBTkcgUkQuLAotCQkJCVRBSVBFSSAgMTE1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS00QSAgIChoZXgpCQlURVNUTyBBRwotMDAxOTRBICAgICAoYmFzZSAxNikJCVRFU1RPIEFHCi0JCQkJVGVzdG8gU3RyYXNzZSAxCi0JCQkJTGVuemtpcmNoIEJhZGVuLVd1cnRlbWJlcmcgNzk4NTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTRCICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwMTk0QiAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMjcgUlVFIExFQkxBTkMKLQkJCQlQQVJJUyAgNzU1MTIKLQkJCQlGUkFOQ0UKLQotMDAtMTktNEMgICAoaGV4KQkJRnVqaWFuIFN0ZWxjb20gaW5mb3JtYXRpb24gJiBUZWNobm9sb2d5IENPLixMdGQKLTAwMTk0QyAgICAgKGJhc2UgMTYpCQlGdWppYW4gU3RlbGNvbSBpbmZvcm1hdGlvbiAmIFRlY2hub2xvZ3kgQ08uLEx0ZAotCQkJCTRGLEJ1aWxkaW5nIEEsU3RhcnQgU2NpZW5jZSBQYXJrLCBOby42OCxIb25nc2hhbnl1YW4gUmQKLQkJCQlGdXpob3UgRnVqaWFuIDM1MDAwMgotCQkJCUNISU5BCi0KLTAwLTE5LTREICAgKGhleCkJCUF2YWdvIFRlY2hub2xvZ2llcyBTZG4gQmhkCi0wMDE5NEQgICAgIChiYXNlIDE2KQkJQXZhZ28gVGVjaG5vbG9naWVzIFNkbiBCaGQKLQkJCQlCYXlhbiBMZXBhcyBGcmVlIEluZHVzdHJpYWwgWm9uZQotCQkJCUJheWFuIExlcGFzIFBlbmFuZyAxMTkwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE5LTRFICAgKGhleCkJCVVsdHJhIEVsZWN0cm9uaWNzIC0gVENTIChUYWN0aWNhbCBDb21tdW5pY2F0aW9uIFN5c3RlbXMpCi0wMDE5NEUgICAgIChiYXNlIDE2KQkJVWx0cmEgRWxlY3Ryb25pY3MgLSBUQ1MgKFRhY3RpY2FsIENvbW11bmljYXRpb24gU3lzdGVtcykKLQkJCQk1OTkwIENvdGUgRGUgTGllc3NlCi0JCQkJVE1SIFF1ZWJlYyBINFQgMVY3Ci0JCQkJQ0FOQURBCi0KLTAwLTE5LTRGICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE5NEYgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTE5LTUwICAgKGhleCkJCUhhcm1hbiBNdWx0aW1lZGlhCi0wMDE5NTAgICAgIChiYXNlIDE2KQkJSGFybWFuIE11bHRpbWVkaWEKLQkJCQk4NDAwIEJhbGJvYSBCbHZkLgotCQkJCU5vcnRocmlkZ2UgQ0EgOTEzMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTUxICAgKGhleCkJCU5FVENPTlMsIHMuci5vLgotMDAxOTUxICAgICAoYmFzZSAxNikJCU5FVENPTlMsIHMuci5vLgotCQkJCVN0YXJhIFZham5vcnNrYSAzNwotCQkJCUJyYXRpc2xhdmEgU2xvdmFraWEgODMxIDA0Ci0JCQkJU0xPVkFLSUEKLQotMDAtMTktNTIgICAoaGV4KQkJQUNPR0lUTyBDby4sIEx0ZAotMDAxOTUyICAgICAoYmFzZSAxNikJCUFDT0dJVE8gQ28uLCBMdGQKLQkJCQkjNTAxIFNoaW55b3VuZyBQYWxhY2UgVG93ZXIsIDI0Ni0yLCBTZW9oeXVuCi0JCQkJU3VuZ25hbSBLeXVuZ2dpIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktNTMgICAoaGV4KQkJQ2hhaW5sZWFkZXIgQ29tbXVuaWNhdGlvbnMgQ29ycC4KLTAwMTk1MyAgICAgKGJhc2UgMTYpCQlDaGFpbmxlYWRlciBDb21tdW5pY2F0aW9ucyBDb3JwLgotCQkJCTVGLCBOby4gNDAwLCBTZWMuIDIgQmFkZSBSZC4sCi0JCQkJVGFpcGVpICAxMDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTU0ICAgKGhleCkJCUxlYWYgQ29ycG9yYXRpb24uCi0wMDE5NTQgICAgIChiYXNlIDE2KQkJTGVhZiBDb3Jwb3JhdGlvbi4KLQkJCQlBbXV6ZSAxRgotCQkJCUhpZ2FzaGkgTmFydXNlIDM1LTEwCi0JCQkJSXNlaGFyYSBDaXR5IEthbmFnYXdhLVByZWYuIDI1OS0xMTE3Ci0JCQkJSkFQQU4KLQotMDAtMTktNTUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxOTU1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNTYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxOTU2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNTcgICAoaGV4KQkJU2FhZm5ldCBDYW5hZGEgSW5jLgotMDAxOTU3ICAgICAoYmFzZSAxNikJCVNhYWZuZXQgQ2FuYWRhIEluYy4KLQkJCQkxMDctMTA4OSBFYXN0IEtlbnQgQXZlIChOKQotCQkJCVZhbmNvdXZlciBCQyBWNVggNFY5Ci0JCQkJQ0FOQURBCi0KLTAwLTE5LTU4ICAgKGhleCkJCUJsdWV0b290aCBTSUcsIEluYy4KLTAwMTk1OCAgICAgKGJhc2UgMTYpCQlCbHVldG9vdGggU0lHLCBJbmMuCi0JCQkJNTAwIDEwOHRoIEF2ZW51ZSBORQotCQkJCVN1aXRlIDI1MAotCQkJCUJlbGxldnVlIFdBIDk4MDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS01OSAgIChoZXgpCQlTdGFjY2F0byBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDE5NTkgICAgIChiYXNlIDE2KQkJU3RhY2NhdG8gQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTYxOTUgTHVzayBCbHZkLgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNUEgICAoaGV4KQkJSmVuYWVyIEFudHJpZWJzdGVjaG5payBHbWJICi0wMDE5NUEgICAgIChiYXNlIDE2KQkJSmVuYWVyIEFudHJpZWJzdGVjaG5payBHbWJICi0JCQkJQnVjaGFlciBTdHJhc3NlIDEKLQkJCQlKZW5hIFRodWVyaW5nZW4gMDc3NDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTVCICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMDAxOTVCICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5PLjI4OSwgU2luaHUgM3JkIFJkLiwKLQkJCQlOZWlodSBEaXN0cmljdCwgVGFpcGVpIENpdHkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS01QyAgIChoZXgpCQlJbm5vdGVjaCBDb3Jwb3JhdGlvbgotMDAxOTVDICAgICAoYmFzZSAxNikJCUlubm90ZWNoIENvcnBvcmF0aW9uCi0JCQkJMy0xNy02Ci0JCQkJU2hpbi1Zb2tvaGFtYSwgS29ob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTg1ODAKLQkJCQlKQVBBTgotCi0wMC0xOS01RCAgIChoZXgpCQlTaGVuWmhlbiBYaW5IdWFUb25nIE9wdG8gRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxOTVEICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIFhpbkh1YVRvbmcgT3B0byBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJNUYsQmFvZGFaaG91LFNoYW5jaGVuZyBJbmR1c3RyaWFsIFpvbmUsQmFvQW4gRGlzdHJpY3QKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTA4Ci0JCQkJQ0hJTkEKLQotMDAtMTktNUUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTk1RSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTVGICAgKGhleCkJCVZhbGVtb3VudCBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAxOTVGICAgICAoYmFzZSAxNikJCVZhbGVtb3VudCBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotCQkJCTEyMDEtIDV0aCBBdmUKLQkJCQlQTyBCb3ggNjg3Ci0JCQkJVmFsZW1vdW50IEJDIFYwRTJaMAotCQkJCUNBTkFEQQotCi0wMC0xOS02MCAgIChoZXgpCQlEb0NvTW8gU3lzdGVtcywgSW5jLgotMDAxOTYwICAgICAoYmFzZSAxNikJCURvQ29NbyBTeXN0ZW1zLCBJbmMuCi0JCQkJTWVndXJvIFRlY2hubyBCbGRnLiAybmQgRmxvb3IKLQkJCQk0LTMxLTE4IE5pc2hpLUdvdGFuZGEKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xOS02MSAgIChoZXgpCQlCbGF1cHVua3QgR21iSAotMDAxOTYxICAgICAoYmFzZSAxNikJCUJsYXVwdW5rdCBHbWJICi0JCQkJUm9iZXJ0LUJvc2NoLVN0cmFzc2UgMjAwCi0JCQkJSGlsZGVzaGVpbSBIZXNzZW4gMzExMzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTYyICAgKGhleCkJCUNvbW1lcmNpYW50LCBMUAotMDAxOTYyICAgICAoYmFzZSAxNikJCUNvbW1lcmNpYW50LCBMUAotCQkJCTI5MDEgV2lsY3Jlc3QKLQkJCQlTdWl0ZSAyNTAKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS02MyAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotMDAxOTYzICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2thbmUgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTAwLTE5LTY0ICAgKGhleCkJCURvb3JraW5nIEluYy4KLTAwMTk2NCAgICAgKGJhc2UgMTYpCQlEb29ya2luZyBJbmMuCi0JCQkJMTIwIEdsYXNnb3cgU3QuCi0JCQkJSW5nbGV3b29kIENBLiA5MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNjUgICAoaGV4KQkJWXVIdWEgVGVsVGVjaCAoU2hhbmdIYWkpIENvLiwgTHRkLgotMDAxOTY1ICAgICAoYmFzZSAxNikJCVl1SHVhIFRlbFRlY2ggKFNoYW5nSGFpKSBDby4sIEx0ZC4KLQkJCQlZdUh1YSBSJkQgQnVpbGRpbmcsMjcgeGluIGppbiBxaWFvIHJvYWQsCi0JCQkJUHVkb25nLAotCQkJCVNIQU5HSEFJICAyMDEyMDYKLQkJCQlDSElOQQotCi0wMC0xOS02NiAgIChoZXgpCQlBc2lhcm9jayBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMTk2NiAgICAgKGJhc2UgMTYpCQlBc2lhcm9jayBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlQLk8uIEJveDk1NywgT2Zmc2hvcmUgSW5jb3Jwb3JhdGlvbnMgQ2VudHJlCi0JCQkJUm9hZCBUb3duIFRvcnRvbGEgCi0JCQkJVklSR0lOIElTTEFORFMsIEJSSVRJU0gKLQotMDAtMTktNjcgICAoaGV4KQkJVEVMREFUIFNwLkouCi0wMDE5NjcgICAgIChiYXNlIDE2KQkJVEVMREFUIFNwLkouCi0JCQkJS2lqb3dza2EgNDQKLQkJCQlOSVAgNTU0IDE5IDI2IDA0MgotCQkJCUJ5ZGdvc3pjeiB3b2ouIGt1amF3c2tvLXBvbW9yc2tpZSA4NS03MDMKLQkJCQlQT0xBTkQKLQotMDAtMTktNjggICAoaGV4KQkJRGlnaXRhbCBWaWRlbyBOZXR3b3JrcyhTaGFuZ2hhaSkgQ08uIExURC4KLTAwMTk2OCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFZpZGVvIE5ldHdvcmtzKFNoYW5naGFpKSBDTy4gTFRELgotCQkJCTl0aCBGbG9vcixIZWNodWFuIEJ1aWxkaW5nLCBOby4xMDI2IFlpU2hhbiBSZAotCQkJCVNoYW5naGFpICAyMDExMDMKLQkJCQlDSElOQQotCi0wMC0xOS02OSAgIChoZXgpCQlOb3J0ZWwKLTAwMTk2OSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTktNkEgICAoaGV4KQkJTWlrcm9NIEdtYkgKLTAwMTk2QSAgICAgKGJhc2UgMTYpCQlNaWtyb00gR21iSAotCQkJCURvdmVzdHIuIDEKLQkJCQlCZXJsaW4gIDEwNTg3Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS02QiAgIChoZXgpCQlEYW5wZXggQ29ycG9yYXRpb24KLTAwMTk2QiAgICAgKGJhc2UgMTYpCQlEYW5wZXggQ29ycG9yYXRpb24KLQkJCQkyMTE0IFJpbmd3b29kIEF2ZW51ZQotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTZDICAgKGhleCkJCUVUUk9WSVNJT04gVEVDSE5PTE9HWQotMDAxOTZDICAgICAoYmFzZSAxNikJCUVUUk9WSVNJT04gVEVDSE5PTE9HWQotCQkJCTJGLCAxOS01IFNhbiBDaHVuZyBSZC4sCi0JCQkJQmxvY2sgQywgTmFuIEthbmcgU29mdHdhcmUgUGFyaywgTmFuIEthbmcgRGlzdHJpY3QsCi0JCQkJVEFJUEVJICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTZEICAgKGhleCkJCVJheWJpdCBTeXN0ZW1zIEtvcmVhLCBJbmMKLTAwMTk2RCAgICAgKGJhc2UgMTYpCQlSYXliaXQgU3lzdGVtcyBLb3JlYSwgSW5jCi0JCQkJRHJlYW0gVG93ZXIgMTIyMQotCQkJCTkyMy0xNCwgTW9rZG9uZywgWWFuZ2NodW5rdQotCQkJCVNlb3VsICAxNTgtNzE4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTZFICAgKGhleCkJCU1ldGFjb20gKFB0eSkgTHRkLgotMDAxOTZFICAgICAoYmFzZSAxNikJCU1ldGFjb20gKFB0eSkgTHRkLgotCQkJCTYgTmRhYmVuaSBCdXNpbmVzcyBQYXJrCi0JCQkJSW55b25pIFN0ciwgTmRhYmVuaQotCQkJCUNhcGUgVG93biBXZXN0ZXJuIENhcGUgNzQwNQotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xOS02RiAgIChoZXgpCQlTZW5zb1BhcnQgR21iSAotMDAxOTZGICAgICAoYmFzZSAxNikJCVNlbnNvUGFydCBHbWJICi0JCQkJQW0gV2llZGVuYmFjaCAxCi0JCQkJV2llZGVuIEJhZGVuLVd1ZXJ0dGVtYmVyZyBELTc5Njk1Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS03MCAgIChoZXgpCQlaLUNvbSwgSW5jLgotMDAxOTcwICAgICAoYmFzZSAxNikJCVotQ29tLCBJbmMuCi0JCQkJN0YtMiwgTk8uOSwgUFJPU1BFUklUWSAxU1QgUkQuCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOQ0hVICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTcxICAgKGhleCkJCUd1YW5nemhvdSBVbmljb21wIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxOTcxICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBVbmljb21wIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTcvRixOb3J0aCBUb3dlcixKaW5zaGFuIEJ1aWxkaW5nLk5vLjI0OAotCQkJCVJkIFd1c2hhbiwgVGlhbmhlIERpc3RyaWN0Ci0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2MzAKLQkJCQlDSElOQQotCi0wMC0xOS03MiAgIChoZXgpCQlQbGV4dXMgKFhpYW1lbikgQ28uLGx0ZAotMDAxOTcyICAgICAoYmFzZSAxNikJCVBsZXh1cyAoWGlhbWVuKSBDby4sbHRkCi0JCQkJTm8uNiBYaWFuZ3hpbmcgMiBSb2FkCi0JCQkJWGlhbmd5dSBGcmVlIFRyYWRlIFpvbmUKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLTAwLTE5LTczICAgKGhleCkJCVpldWdtYSBTeXN0ZW1zCi0wMDE5NzMgICAgIChiYXNlIDE2KQkJWmV1Z21hIFN5c3RlbXMKLQkJCQlTdWl0ZSAyNTAKLQkJCQkxMzU3MSBDb21tZXJjZSBQYXJrd2F5Ci0JCQkJUmljaG1vbmQgQkMgVjZWIDJSMgotCQkJCUNBTkFEQQotCi0wMC0xOS03NCAgIChoZXgpCQlBYm9Db20gU3lzdGVtcywgSW5jLgotMDAxOTc0ICAgICAoYmFzZSAxNikJCUFib0NvbSBTeXN0ZW1zLCBJbmMuCi0JCQkJMUYgLCBOby4gMjEsIFlhbmZhIDJuZCBSZC4sIFNCSVAKLQkJCQlIc2luY2h1IENpdHkgSHNpbmNodSAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTc1ICAgKGhleCkJCUJlaWppbmcgSHVpc2VuIG5ldHdvcmtzIHRlY2hub2xvZ3kgSW5jCi0wMDE5NzUgICAgIChiYXNlIDE2KQkJQmVpamluZyBIdWlzZW4gbmV0d29ya3MgdGVjaG5vbG9neSBJbmMKLQkJCQlKaWEjMiBvZiBYaWxpIG9mIEJhaXl1biByb2FkLFhpY2hlbmcgZGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwNDUKLQkJCQlDSElOQQotCi0wMC0xOS03NiAgIChoZXgpCQlYaXBoZXIgVGVjaG5vbG9naWVzLCBMTEMKLTAwMTk3NiAgICAgKGJhc2UgMTYpCQlYaXBoZXIgVGVjaG5vbG9naWVzLCBMTEMKLQkJCQkxNTYgUml2ZXIgUm9hZAotCQkJCVdpbGxpbmd0b24gQ1QgMDYyNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTc3ICAgKGhleCkJCUFlcm9oaXZlIE5ldHdvcmtzLCBJbmMuCi0wMDE5NzcgICAgIChiYXNlIDE2KQkJQWVyb2hpdmUgTmV0d29ya3MsIEluYy4KLQkJCQkzMTUwLUMgQ29yb25hZG8gRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNzggICAoaGV4KQkJRGF0dW0gU3lzdGVtcywgSW5jLgotMDAxOTc4ICAgICAoYmFzZSAxNikJCURhdHVtIFN5c3RlbXMsIEluYy4KLQkJCQkzNjY2IFRpZmZhbmkgQ3QuCi0JCQkJU2FudGEgQ3J1eiBDQSA5NTA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNzkgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTk3OSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTktN0EgICAoaGV4KQkJTUFaZVQgR21iSAotMDAxOTdBICAgICAoYmFzZSAxNikJCU1BWmVUIEdtYkgKLQkJCQlHb2VzY2h3aXR6ZXIgU3RyLiAzMgotCQkJCUplbmEgIEQtMDc3NDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTdCICAgKGhleCkJCVBpY290ZXN0IENvcnAuCi0wMDE5N0IgICAgIChiYXNlIDE2KQkJUGljb3Rlc3QgQ29ycC4KLQkJCQk4Ri0xLCAyODYtOSwgSHNpbi1ZYSBSZC4sIDgwNjczCi0JCQkJS2FvaHNpdW5nICA4MDY3MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktN0MgICAoaGV4KQkJUmllZGVsIENvbW11bmljYXRpb25zIEdtYkgKLTAwMTk3QyAgICAgKGJhc2UgMTYpCQlSaWVkZWwgQ29tbXVuaWNhdGlvbnMgR21iSAotCQkJCVVlbGxlbmRhaGxlciBTdHIuIDM1MwotCQkJCVd1cHBlcnRhbCBOUlcgNDIxMDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTdEICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQKLTAwMTk3RCAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkCi0JCQkJNjYsIENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktN0UgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZAotMDAxOTdFICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQKLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS03RiAgIChoZXgpCQlQTEFOVFJPTklDUywgSU5DLgotMDAxOTdGICAgICAoYmFzZSAxNikJCVBMQU5UUk9OSUNTLCBJTkMuCi0JCQkJMzQ1IEVOQ0lOQUwgU1RSRUVUCi0JCQkJU0FOVEEgQ1JVWiBDQUxJRk9STklBIDk1MDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS04MCAgIChoZXgpCQlHcmlkcG9pbnQgU3lzdGVtcwotMDAxOTgwICAgICAoYmFzZSAxNikJCUdyaWRwb2ludCBTeXN0ZW1zCi0JCQkJNDA0MyBDYXJsaW5nIEF2ZW51ZSwgU3VpdGUgMjAwCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDJBMwotCQkJCUNBTkFEQQotCi0wMC0xOS04MSAgIChoZXgpCQlWaXZveCBJbmMKLTAwMTk4MSAgICAgKGJhc2UgMTYpCQlWaXZveCBJbmMKLQkJCQk0MCBTcGVlbiBTdHJlZXQKLQkJCQlTdWl0ZSA0MDIKLQkJCQlGcmFtaW5naGFtIE1BIDAxNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS04MiAgIChoZXgpCQlTbWFyRFRWCi0wMDE5ODIgICAgIChiYXNlIDE2KQkJU21hckRUVgotCQkJCTUzMSBBdmVudWUgZHUgU2VycG9sZXQKLQkJCQlaRSBBdGhlbGlhIDIKLQkJCQlMYSBDaW90YXQgRnJhbmNlIDEzIDcwNAotCQkJCUZSQU5DRQotCi0wMC0xOS04MyAgIChoZXgpCQlDQ1QgUiZEIExpbWl0ZWQKLTAwMTk4MyAgICAgKGJhc2UgMTYpCQlDQ1QgUiZEIExpbWl0ZWQKLQkJCQkxOC9GIENDVCBUZWxlY29tIEJ1aWxkaW5nCi0JCQkJMTEgV28gU2hpbmcgU3RyZWV0Ci0JCQkJRm90YW4sIFNoYXRpbiBOLlQuIDAwMDAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTktODQgICAoaGV4KQkJRVNUSUMgQ29ycG9yYXRpb24KLTAwMTk4NCAgICAgKGJhc2UgMTYpCQlFU1RJQyBDb3Jwb3JhdGlvbgotCQkJCTItNS05IEhhc2hpYmFoaWdhc2hpbm8tY2hvCi0JCQkJTW9yaWd1Y2hpIE9zYWthIDU3MC0wMDMxCi0JCQkJSkFQQU4KLQotMDAtMTktODUgICAoaGV4KQkJSVQgV2F0Y2hkb2dzLCBJbmMKLTAwMTk4NSAgICAgKGJhc2UgMTYpCQlJVCBXYXRjaGRvZ3MsIEluYwotCQkJCTEyODg1IFJlc2VhcmNoLCBTdWl0ZSAyMTBCCi0JCQkJQXVzdGluIFRYIDc4NzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS04NiAgIChoZXgpCQlDaGVuZyBIb25namlhbgotMDAxOTg2ICAgICAoYmFzZSAxNikJCUNoZW5nIEhvbmdqaWFuCi0JCQkJUm0uMjMwNUIuU2VnZSBQbGF6YSxIdWFxaWFuZyBOb3J0aCBSZC4sCi0JCQkJRnV0aWFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE5LTg3ICAgKGhleCkJCVBhbmFzb25pYyBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDE5ODcgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQk2MDAgU2FlZG8tY2hvLCBUc3V6dWtpLWt1LAotCQkJCVlva29oYW1hIENpdHkgS2FuYWdhd2EgUHJlZmVjdHVyZSAyMjQtODUzOQotCQkJCUpBUEFOCi0KLTAwLTE5LTg4ICAgKGhleCkJCVdpMldpLCBJbmMKLTAwMTk4OCAgICAgKGJhc2UgMTYpCQlXaTJXaSwgSW5jCi0JCQkJMjEwNyBOLiAxc3QgU3RyZWV0Ci0JCQkJU3VpdGUgNTQwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTg5ICAgKGhleCkJCVNvbml0cm9sIENvcnBvcmF0aW9uCi0wMDE5ODkgICAgIChiYXNlIDE2KQkJU29uaXRyb2wgQ29ycG9yYXRpb24KLQkJCQkxNzA3IE9ybGFuZG8gQ2VudHJhbCBQa3d5LgotCQkJCVN1aXRlIDUwMAotCQkJCU9ybGFuZG8gRkwgMzI4MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LThBICAgKGhleCkJCU5vcnRocm9wIEdydW1tYW4gU3lzdGVtcyBDb3JwLgotMDAxOThBICAgICAoYmFzZSAxNikJCU5vcnRocm9wIEdydW1tYW4gU3lzdGVtcyBDb3JwLgotCQkJCTcwNTUgVHJveSBIaWxsIERyaXZlCi0JCQkJRWxrcmlkZ2UgTWFyeWxhbmQgMjEwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LThCICAgKGhleCkJCU5vdmVyYSBPcHRpY3MgS29yZWEsIEluYy4KLTAwMTk4QiAgICAgKGJhc2UgMTYpCQlOb3ZlcmEgT3B0aWNzIEtvcmVhLCBJbmMuCi0JCQkJNDYzLTEgSmVvbiBNaW4gRG9uZyBZdXNlb25nIEd1Ci0JCQkJRGVhamVvbiAgMzA1LTgxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS04QyAgIChoZXgpCQlpWFNlYQotMDAxOThDICAgICAoYmFzZSAxNikJCWlYU2VhCi0JCQkJNTUgYXYgYXVndXN0ZSBSZW5vaXIKLQkJCQlNYXJseSBsZSBSb2kgIDc4MTYwCi0JCQkJRlJBTkNFCi0KLTAwLTE5LThEICAgKGhleCkJCU9jZWFuIE9wdGljcywgSW5jLgotMDAxOThEICAgICAoYmFzZSAxNikJCU9jZWFuIE9wdGljcywgSW5jLgotCQkJCTgzMCBEb3VnbGFzIEF2ZQotCQkJCUR1bmVkaW4gRkwgMzQ2OTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LThFICAgKGhleCkJCU90aWNvbiBBL1MKLTAwMTk4RSAgICAgKGJhc2UgMTYpCQlPdGljb24gQS9TCi0JCQkJS29uZ2ViYWtrZW4gOQotCQkJCVNtP3J1bSAgMjc2NQotCQkJCURFTk1BUksKLQotMDAtMTktOEYgICAoaGV4KQkJQWxjYXRlbCBCZWxsIE4uVi4KLTAwMTk4RiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIEJlbGwgTi5WLgotCQkJCUNvcGVybmljdXNsYWFuIDUwCi0JCQkJQW50d2VycCAgQi0yMDE4Ci0JCQkJQkVMR0lVTQotCi0wMC0xOS05MCAgIChoZXgpCQlFTE0gREFUQSBDby4sIEx0ZC4KLTAwMTk5MCAgICAgKGJhc2UgMTYpCQlFTE0gREFUQSBDby4sIEx0ZC4KLQkJCQkyLTE1IFRFQ0hOTy1QQVJLIDEtQ0hPTUUKLQkJCQlTSElNT05PUFBPUk8sIEFUU1VCRVRTVS1LVQotCQkJCVNBUFBPUk8gSE9LS0FJRE8gMDA0LTAwMTUKLQkJCQlKQVBBTgotCi0wMC0xOS05MSAgIChoZXgpCQlhdmluZm8KLTAwMTk5MSAgICAgKGJhc2UgMTYpCQlhdmluZm8KLQkJCQlKaWFodWl5dWFuIDcwMyxIdWFhbyBDZW50ZXIsMzEjIFppemh1eXVhbiBSb2FkLAotCQkJCUhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODkKLQkJCQlDSElOQQotCi0wMC0xOS05MiAgIChoZXgpCQlCbHVlc29ja2V0LCBJbmMKLTAwMTk5MiAgICAgKGJhc2UgMTYpCQlCbHVlc29ja2V0LCBJbmMKLQkJCQkxMCBOb3J0aCBBdmUKLQkJCQlCdXJsaW5ndG9uIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS05MyAgIChoZXgpCQlDaGFuZ3NodSBTd2l0Y2hnZWFyIE1GRy4gQ28uLEx0ZC4gKEZvcm1lciBDaGFuZ3NodSBTd2l0Y2hnZWEKLTAwMTk5MyAgICAgKGJhc2UgMTYpCQlDaGFuZ3NodSBTd2l0Y2hnZWFyIE1GRy4gQ28uLEx0ZC4gKEZvcm1lciBDaGFuZ3NodSBTd2l0Y2hnZWEKLQkJCQlOby4gOCBKaWFueWUgUm9hZAotCQkJCUNoYW5nc2h1IEppYW5nc3UgMjE1NTAwCi0JCQkJQ0hJTkEKLQotMDAtMTktOTQgICAoaGV4KQkJSm9yamluIFRlY2hub2xvZ2llcyBJbmMuCi0wMDE5OTQgICAgIChiYXNlIDE2KQkJSm9yamluIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNUYsIE5vLjI4LCBMYW5lMTQxLCBTaW5nLWFpIFJkLgotCQkJCU5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTk1ICAgKGhleCkJCUp1cm9uZyBIaS1UZWNoIChTdXpob3UpQ28ubHRkCi0wMDE5OTUgICAgIChiYXNlIDE2KQkJSnVyb25nIEhpLVRlY2ggKFN1emhvdSlDby5sdGQKLQkJCQkyNzUsWGluZyBMb25nIFN0cmVldD8/U3V6aG91IEluZHVkdHJpYWwgUGFyawotCQkJCVN1emhvdSBKaWFuZyBTdSAyMTUwMjEKLQkJCQlDSElOQQotCi0wMC0xOS05NiAgIChoZXgpCQlUdXJib0NoZWYgVGVjaG5vbG9naWVzIEluYy4KLTAwMTk5NiAgICAgKGJhc2UgMTYpCQlUdXJib0NoZWYgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk0MjQwIEludGVybmF0aW9uYWwgUGFya3dheQotCQkJCVN1aXRlIDEwNQotCQkJCUNhcnJvbGx0b24gVGV4YXMgNzUwMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTk3ICAgKGhleCkJCVNvZnQgRGV2aWNlIFNkbiBCaGQKLTAwMTk5NyAgICAgKGJhc2UgMTYpCQlTb2Z0IERldmljZSBTZG4gQmhkCi0JCQkJNjctMiBKYWxhbiAyLzI3RgotCQkJCUtMU0MgV2FuZ3NhIE1hanUKLQkJCQlLdWFsYSBMdW1wdXIgV1AgNTMzMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xOS05OCAgIChoZXgpCQlTQVRPIENPUlBPUkFUSU9OCi0wMDE5OTggICAgIChiYXNlIDE2KQkJU0FUTyBDT1JQT1JBVElPTgotCQkJCTEtMjA3LE9OQVJJLUNITywKLQkJCQlPTUlZQS1LVQotCQkJCVNBSVRBTUEtU0hJIFNBSVRBTUEgMzMwLTA4NTIKLQkJCQlKQVBBTgotCi0wMC0xOS05OSAgIChoZXgpCQlGdWppdHN1IFRlY2hub2xvZ3kgU29sdXRpb25zCi0wMDE5OTkgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBUZWNobm9sb2d5IFNvbHV0aW9ucwotCQkJCUJ1ZXJnZXJtZWlzdGVyLVVscmljaC1TdHJhc3NlIDEwMAotCQkJCUF1Z3NidXJnICA4NjE5OQotCQkJCUdFUk1BTlkKLQotMDAtMTktOUEgICAoaGV4KQkJRURPLUVWSQotMDAxOTlBICAgICAoYmFzZSAxNikJCUVETy1FVkkKLQkJCQk3MDY1IENvbHVtYmlhIEdhdGV3YXkgRHIuCi0JCQkJQ29sdW1iaWEgTUQgMjEwNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTlCICAgKGhleCkJCURpdmVyc2lmaWVkIFRlY2huaWNhbCBTeXN0ZW1zLCBJbmMuCi0wMDE5OUIgICAgIChiYXNlIDE2KQkJRGl2ZXJzaWZpZWQgVGVjaG5pY2FsIFN5c3RlbXMsIEluYy4KLQkJCQk5MDkgRWxlY3RyaWMgQXZlbnVlCi0JCQkJU3VpdGUgMjA2Ci0JCQkJU2VhbCBCZWFjaCBDYWxpZm9ybmlhIDkwNzQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS05QyAgIChoZXgpCQlDVFJJTkcKLTAwMTk5QyAgICAgKGJhc2UgMTYpCQlDVFJJTkcKLQkJCQkjNTE0LCBXb3JsZCBNZXJpZGlhbiBWZW50dXJlIENlbnRlciBJSQotCQkJCUdhc25hLWRvbmcKLQkJCQlLZXVtY2hlb24tZ3UgU2VvdWwgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS05RCAgIChoZXgpCQlWSVpJTywgSW5jLgotMDAxOTlEICAgICAoYmFzZSAxNikJCVZJWklPLCBJbmMuCi0JCQkJMzkgVGVzbGEKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTlFICAgKGhleCkJCVNIT1dBREVOU0hJIEVMRUNUUk9OSUNTLElOQy4KLTAwMTk5RSAgICAgKGJhc2UgMTYpCQlTSE9XQURFTlNISSBFTEVDVFJPTklDUyxJTkMuCi0JCQkJMTk3OCBISVJPT0tBLU5PTVVSQQotCQkJCVNISU9KSVJJLUNJVFkgTkFHQU5PLVBSRUYuIDM5OS0wNzAyCi0JCQkJSkFQQU4KLQotMDAtMTktOUYgICAoaGV4KQkJREtUIEEvUwotMDAxOTlGICAgICAoYmFzZSAxNikJCURLVCBBL1MKLQkJCQlGYW5vZXZlaiA2Ci0JCQkJS3IuIFNhYWJ5ICBESy00MDYwCi0JCQkJREVOTUFSSwotCi0wMC0xOS1BMCAgIChoZXgpCQlOSUhPTiBEQVRBIFNZU1RFTlMsIElOQy4KLTAwMTlBMCAgICAgKGJhc2UgMTYpCQlOSUhPTiBEQVRBIFNZU1RFTlMsIElOQy4KLQkJCQk2LTksIEtveW8tY2hvIG5ha2EKLQkJCQlIaWdhc2hpbmFkYS1rdQotCQkJCUtvYmUtc2hpIEh5b2dvIDY1OC0wMDMyCi0JCQkJSkFQQU4KLQotMDAtMTktQTEgICAoaGV4KQkJTEcgSU5GT1JNQVRJT04gJiBDT01NLgotMDAxOUExICAgICAoYmFzZSAxNikJCUxHIElORk9STUFUSU9OICYgQ09NTS4KLQkJCQk2MC0zOSxLYXNhbi1kb25nLEt1bWNob24ta3UKLQkJCQlTZW91bCAgMTUzLTAyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS1BMiAgIChoZXgpCQlPUkRZTiBURUNITk9MT0dJRVMKLTAwMTlBMiAgICAgKGJhc2UgMTYpCQlPUkRZTiBURUNITk9MT0dJRVMKLQkJCQlPem9uZSBNYW5heSBUZWNoIFBhcmssIAotCQkJCTJuZCBGbG9vciwgVG93ZXIgQiwgQmVndXIgSG9ibGksIEhvbmdhc2FuZHJhLCBIb3N1ciBSb2FkLCAKLQkJCQlCYW5nYWxvcmUgICA1NjAgMDY4Ci0JCQkJSU5ESUEKLQotMDAtMTktQTMgICAoaGV4KQkJYXN0ZWVsIGVsZWN0cm9uaXF1ZSBhdGxhbnRpcXVlCi0wMDE5QTMgICAgIChiYXNlIDE2KQkJYXN0ZWVsIGVsZWN0cm9uaXF1ZSBhdGxhbnRpcXVlCi0JCQkJemEgZGUgbGEgbGFuZGUgZGUgc2FpbnQgamVhbgotCQkJCWJwIDkwMTExCi0JCQkJc2FpbnRlIG1hcmllIGRlIHJlZG9uICAzNTYwMAotCQkJCUZSQU5DRQotCi0wMC0xOS1BNCAgIChoZXgpCQlBdXN0YXIgVGVjaG5vbG9neSAoaGFuZyB6aG91KSBDby4sTHRkCi0wMDE5QTQgICAgIChiYXNlIDE2KQkJQXVzdGFyIFRlY2hub2xvZ3kgKGhhbmcgemhvdSkgQ28uLEx0ZAotCQkJCTctNDAyLFdlc3QgTGFrZSBTb2Z0d2FyZSBQYXJ0Ci0JCQkJTm8gMSxKaWFnb25nIFJkLgotCQkJCUhhbmcgWmhvdSBaaGUgSmlhbmcgMzEwMDEyCi0JCQkJQ0hJTkEKLQotMDAtMTktQTUgICAoaGV4KQkJUmFkYXJGaW5kIENvcnBvcmF0aW9uCi0wMDE5QTUgICAgIChiYXNlIDE2KQkJUmFkYXJGaW5kIENvcnBvcmF0aW9uCi0JCQkJMjEwMCBHYXRld2F5IENlbnRyZSBCbHZkLiwgU3VpdGUgMTUwCi0JCQkJTW9ycmlzdmlsbGUgTkMgMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUE2ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxOUE2ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUE3ICAgKGhleCkJCUlUVS1UCi0wMDE5QTcgICAgIChiYXNlIDE2KQkJSVRVLVQKLQkJCQlQbGFjZSBkZXMgTmF0aW9ucwotCQkJCUdlbmV2YSAyMCAgQ0gtMTIxMQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE5LUE4ICAgKGhleCkJCVdpUXVlc3QgQ29tbXVuaWNhdGlvbnMKLTAwMTlBOCAgICAgKGJhc2UgMTYpCQlXaVF1ZXN0IENvbW11bmljYXRpb25zCi0JCQkJOTE1IEVudGVycHJpc2UgQmx2ZC4KLQkJCQlTdWl0ZSAyMDAKLQkJCQlBbGxlbiBUZXhhcyA3NTAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQTkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxOUE5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQUEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxOUFBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQUIgICAoaGV4KQkJUmF5Y29tIENPIC4sIExURAotMDAxOUFCICAgICAoYmFzZSAxNikJCVJheWNvbSBDTyAuLCBMVEQKLQkJCQlBLDMtNC9GTCwgQnVpbGRpbmcgMSwyNyBDaHVhbmd4aW4gUm9hZCwKLQkJCQlDaGFuZ3BpbmcgU2NpZW5jZSBQYXJrCi0JCQkJQmVpamluZyAgMTAyMjAwCi0JCQkJQ0hJTkEKLQotMDAtMTktQUMgICAoaGV4KQkJR1NQIFNZU1RFTVMgSW5jLgotMDAxOUFDICAgICAoYmFzZSAxNikJCUdTUCBTWVNURU1TIEluYy4KLQkJCQkxM0ZMLCAxMDEgRG9uZywgQ2h1bnVpIFRlY2hubyBQYXJrIDEsCi0JCQkJMjAwLTEsIENodW51aS1Eb25nLCBXb25taS1HVSwKLQkJCQlCdWNoZW9uLUNpdHkgR3llb25nZ2ktRG8gNDIwLTg1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS1BRCAgIChoZXgpCQlCT0JTVCBTQQotMDAxOUFEICAgICAoYmFzZSAxNikJCUJPQlNUIFNBCi0JCQkJcnRlIGRlcyBmbHVtZWF1eCA1MAotCQkJCUNhc2UgUG9zdGFsZSAxMDAxIExhdXNhbm5lCi0JCQkJUFJJTExZIFZEIDEwMDgKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xOS1BRSAgIChoZXgpCQlIb3BsaW5nIFRlY2hub2xvZ2llcyBiLnYuCi0wMDE5QUUgICAgIChiYXNlIDE2KQkJSG9wbGluZyBUZWNobm9sb2dpZXMgYi52LgotCQkJCUNhbWVyYXN0cmFhdCAxMAotCQkJCUFsbWVyZSBGbGV2b2xhbmQgMTMyMiBCQwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE5LUFGICAgKGhleCkJCVJpZ29sIFRlY2hub2xvZ2llcywgSW5jLgotMDAxOUFGICAgICAoYmFzZSAxNikJCVJpZ29sIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCU5vLiAxNTYgQ2FpIEhlIFZpbGxhZ2UsIFNoYSBIZSBUb3duCi0JCQkJQ2hhbmcgUGluZyBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMjIwNgotCQkJCUNISU5BCi0KLTAwLTE5LUIwICAgKGhleCkJCUhhbllhbmcgU3lzdGVtCi0wMDE5QjAgICAgIChiYXNlIDE2KQkJSGFuWWFuZyBTeXN0ZW0KLQkJCQk3MDFIbywgS29mb21vIFRlY2hubyBDZW50ZXIgSUksIDEyODktNQotCQkJCUp1bmd3YW5nLURvbmcKLQkJCQlTaGlodW5nLVNoaSBLeXVuZ2dpLURvIDQyOS04NTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktQjEgICAoaGV4KQkJQXJyb3c3IENvcnBvcmF0aW9uCi0wMDE5QjEgICAgIChiYXNlIDE2KQkJQXJyb3c3IENvcnBvcmF0aW9uCi0JCQkJS2FtaWppbWEgMy0yNy03Ci0JCQkJSGFtYW1hdHN1IFNoaXp1b2thIDQzMy04MTIyCi0JCQkJSkFQQU4KLQotMDAtMTktQjIgICAoaGV4KQkJWFluZXRzb2Z0IENvLixMdGQKLTAwMTlCMiAgICAgKGJhc2UgMTYpCQlYWW5ldHNvZnQgQ28uLEx0ZAotCQkJCU5PLjE1OFpoZW55dSBTdHJlZXQgSGlnaCBJbmR1c3RyaWVzIERldmVsb3BtZW50IGFyZWEKLQkJCQlDaGFuZ0NodW4gSmlMaW4gMTMwMDAwCi0JCQkJQ0hJTkEKLQotMDAtMTktQjMgICAoaGV4KQkJU3RhbmZvcmQgUmVzZWFyY2ggU3lzdGVtcwotMDAxOUIzICAgICAoYmFzZSAxNikJCVN0YW5mb3JkIFJlc2VhcmNoIFN5c3RlbXMKLQkJCQkxMjkwLUQgUmVhbXdvb2QgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1CNCAgIChoZXgpCQlWaWRlb0Nhc3QgTHRkLgotMDAxOUI0ICAgICAoYmFzZSAxNikJCVZpZGVvQ2FzdCBMdGQuCi0JCQkJR3lhcm1hdCB1LiA5OS9CCi0JCQkJQnVkYXBlc3QgIDExNDcKLQkJCQlIVU5HQVJZCi0KLTAwLTE5LUI1ICAgKGhleCkJCUZhbWFyIEZ1ZWd1aW5hIFMuQS4KLTAwMTlCNSAgICAgKGJhc2UgMTYpCQlGYW1hciBGdWVndWluYSBTLkEuCi0JCQkJUm9kbmV5IDcwCi0JCQkJQnVlbm9zIEFpcmVzICAxNDI3Ci0JCQkJQVJHRU5USU5BCi0KLTAwLTE5LUI2ICAgKGhleCkJCUV1cm8gRW1tZSBzLnIubC4KLTAwMTlCNiAgICAgKGJhc2UgMTYpCQlFdXJvIEVtbWUgcy5yLmwuCi0JCQkJVmlhIEJlbHZlZGVyZSwgMjQKLQkJCQlHYWxsaWF0ZSBMb21iYXJkbyBWYXJlc2UgMjEwMjAKLQkJCQlJVEFMWQotCi0wMC0xOS1CNyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxOUI3ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xOS1COCAgIChoZXgpCQlCb3VuZGFyeSBEZXZpY2VzCi0wMDE5QjggICAgIChiYXNlIDE2KQkJQm91bmRhcnkgRGV2aWNlcwotCQkJCTcyMDAgVy4gT2FrbGFuZAotCQkJCUNoYW5kbGVyIEFaIDg1MjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1COSAgIChoZXgpCQlEZWxsIEluYy4KLTAwMTlCOSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlNUyA4NTQ1Ci0JCQkJUm91bmQgUm9jayBUWCA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQkEgICAoaGV4KQkJUGFyYWRveCBTZWN1cml0eSBTeXN0ZW1zIEx0ZAotMDAxOUJBICAgICAoYmFzZSAxNikJCVBhcmFkb3ggU2VjdXJpdHkgU3lzdGVtcyBMdGQKLQkJCQk3ODAgSW5kdXN0cmlhbCBCbHZkCi0JCQkJU3QtRXVzdGFjaGUgUXVlYmVjIEo3UiA1VjMKLQkJCQlDQU5BREEKLQotMDAtMTktQkIgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDE5QkIgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA2MDMwOAotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUJDICAgKGhleCkJCUVMRUNUUk8gQ0hBTkNFIFNSTAotMDAxOUJDICAgICAoYmFzZSAxNikJCUVMRUNUUk8gQ0hBTkNFIFNSTAotCQkJCUNBUkhVRSAzMTc5Ci0JCQkJQVYuIEVWQSBQRVJPTiA3MDQ5Ci0JCQkJQ0FQSVRBTCBGRURFUkFMIEJVRU5PUyBBSVJFUyAxNDQwCi0JCQkJQVJHRU5USU5BCi0KLTAwLTE5LUJEICAgKGhleCkJCU5ldyBNZWRpYSBMaWZlCi0wMDE5QkQgICAgIChiYXNlIDE2KQkJTmV3IE1lZGlhIExpZmUKLQkJCQlIZWEgSnUgQmlsZCwgNUYsIDgzNy03LCBZZW9rc2FtLWRvbmcKLQkJCQlLYW5nbmFtLWd1IFNlb3VsIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktQkUgICAoaGV4KQkJQWx0YWkgVGVjaG5vbG9naWVzIExpbWl0ZWQKLTAwMTlCRSAgICAgKGJhc2UgMTYpCQlBbHRhaSBUZWNobm9sb2dpZXMgTGltaXRlZAotCQkJCVVuaXQgMTAzQiBhbmQgMTA1LCAxL0YsIEJsb2NrIDksCi0JCQkJSG9uZyBLb25nIFNjaWVuY2UgUGFyawotCQkJCVNoYXRpbiBOZXcgVGVycml0b3JpZXMgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE5LUJGICAgKGhleCkJCUNpdGl3YXkgdGVjaG5vbG9neSBDby4sbHRkCi0wMDE5QkYgICAgIChiYXNlIDE2KQkJQ2l0aXdheSB0ZWNobm9sb2d5IENvLixsdGQKLQkJCQlOby4yIEJ1aWxkaW5nLEppYSAzMixCZWloZXlhbiBBdmVudWUsRWFzdCBDaXR5Ci0JCQkJUGVpamluZyAgMTAwMDA2Ci0JCQkJQ0hJTkEKLQotMDAtMTktQzAgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDE5QzAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4uIEh3eSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQzEgICAoaGV4KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotMDAxOUMxICAgICAoYmFzZSAxNikJCUFscHMgRWxlY3RyaWMgQ28uLCBMdGQKLQkJCQkxLTItMSwgT2tpbm91Y2hpLAotCQkJCVNvbWEtY2l0eSBGdWt1c2hpbWEtcHJlZi4gOTc2LTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xOS1DMiAgIChoZXgpCQlFcXV1c3RlayBTb2x1dGlvbnMsIEluYy4KLTAwMTlDMiAgICAgKGJhc2UgMTYpCQlFcXV1c3RlayBTb2x1dGlvbnMsIEluYy4KLQkJCQkjMjg2IC0gNTQ4OSBCeXJuZSBSb2FkLAotCQkJCUJ1cm5hYnkgQkMgVjVKIDNKMQotCQkJCUNBTkFEQQotCi0wMC0xOS1DMyAgIChoZXgpCQlRdWFsaXRyb2wKLTAwMTlDMyAgICAgKGJhc2UgMTYpCQlRdWFsaXRyb2wKLQkJCQlXaWxkZmxvd2VyIFdheQotCQkJCUFwb2xsbyBSb2FkCi0JCQkJQmVsZmFzdCBDby4gQW50cmltIEJUMTIgNlRBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTktQzQgICAoaGV4KQkJSW5mb2NyeXB0IEluYy4KLTAwMTlDNCAgICAgKGJhc2UgMTYpCQlJbmZvY3J5cHQgSW5jLgotCQkJCTcxMSwgQllVQ0tTQU4gRElHSVRBTCBWQUxMRVkgMSAyMTItMTYsCi0JCQkJR3Vyby1ndQotCQkJCVNlb3VsICAxNTItMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LUM1ICAgKGhleCkJCVNPTlkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBpbmMsCi0wMDE5QzUgICAgIChiYXNlIDE2KQkJU09OWSBDb21wdXRlciBFbnRlcnRhaW5tZW50IGluYywKLQkJCQk2LTIxLDJDaG9tZQotCQkJCU1pbmFtaS1Bb3lhbWEKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA3LTAwNjIKLQkJCQlKQVBBTgotCi0wMC0xOS1DNiAgIChoZXgpCQlaVEUgQ29ycG9yYXRpb24KLTAwMTlDNiAgICAgKGJhc2UgMTYpCQlaVEUgQ29ycG9yYXRpb24KLQkJCQlUZWNobm9sb2d5IE1hbmFnZW1lbnQgRGVwYXJ0bWVudCwgCi0JCQkJMTIvRi4sIFpURSBSJkQgQnVpbGRpbmcsIEtlamluYW4gUm9hZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xOS1DNyAgIChoZXgpCQlDYW1icmlkZ2UgSW5kdXN0cmllcyhHcm91cCkgQ28uLEx0ZC4KLTAwMTlDNyAgICAgKGJhc2UgMTYpCQlDYW1icmlkZ2UgSW5kdXN0cmllcyhHcm91cCkgQ28uLEx0ZC4KLQkJCQlSb29tIDMwOSwzMzMgSG9uZyBRaWFvIFJvYWQKLQkJCQlTaGFuZ2hhaSAgMjAwMDMwCi0JCQkJQ0hJTkEKLQotMDAtMTktQzggICAoaGV4KQkJQW55REFUQSBDb3Jwb3JhdGlvbgotMDAxOUM4ICAgICAoYmFzZSAxNikJCUFueURBVEEgQ29ycG9yYXRpb24KLQkJCQkxODkwMiBCYXJkZWVuIEF2ZS4KLQkJCQlJcnZpbmUgQ0EgOTE2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUM5ICAgKGhleCkJCVMmQyBFTEVDVFJJQyBDT01QQU5ZCi0wMDE5QzkgICAgIChiYXNlIDE2KQkJUyZDIEVMRUNUUklDIENPTVBBTlkKLQkJCQkxMTM1IEFUTEFOVElDIEFWRQotCQkJCUFMQU1FREEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUNBICAgKGhleCkJCUJyb2FkYXRhIENvbW11bmljYXRpb25zLCBJbmMKLTAwMTlDQSAgICAgKGJhc2UgMTYpCQlCcm9hZGF0YSBDb21tdW5pY2F0aW9ucywgSW5jCi0JCQkJMjU0NSBXIDIzN3RoIFN0IFN0ZSBLCi0JCQkJVG9ycmFuY2UgQ2EgOTA1MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUNCICAgKGhleCkJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0wMDE5Q0IgICAgIChiYXNlIDE2KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQlOby4gNiwgSW5ub3ZhdGlvbiBSb2FkIElJCi0JCQkJSHNpbmNodSBTY2llbmNlIFBhcmssIEhzaW5jaHUgMzAwCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS1DQyAgIChoZXgpCQlSQ0cgKEhLKSBMdGQKLTAwMTlDQyAgICAgKGJhc2UgMTYpCQlSQ0cgKEhLKSBMdGQKLQkJCQk5L0YuLCBDb3JlIEMsIEN5YmVycG9ydCAzCi0JCQkJMTAwIEN5YmVycG9ydCBSZAotCQkJCUhPTkcgS09ORwotCi0wMC0xOS1DRCAgIChoZXgpCQlDaGVuZ2R1IGV0aGVyY29tIGluZm9ybWF0aW9uIHRlY2hub2xvZ3kgTHRkLgotMDAxOUNEICAgICAoYmFzZSAxNikJCUNoZW5nZHUgZXRoZXJjb20gaW5mb3JtYXRpb24gdGVjaG5vbG9neSBMdGQuCi0JCQkJU291dGggRXh0ZW5zaW9uIG9mIFRpYW5mdSBXaWRlIFJvYWQgTm8uNyBkZXBhcnRtZW50IHJvb20gMjAxCi0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLTAwLTE5LUNFICAgKGhleCkJCVByb2dyZXNzaXZlIEdhbWluZyBJbnRlcm5hdGlvbmFsCi0wMDE5Q0UgICAgIChiYXNlIDE2KQkJUHJvZ3Jlc3NpdmUgR2FtaW5nIEludGVybmF0aW9uYWwKLQkJCQk5MjAgUGlsb3QgUm9hZAotCQkJCUxhcyBWZWdhcyBOViA4OTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQ0YgICAoaGV4KQkJU0FMSUNSVSwgUy5BLgotMDAxOUNGICAgICAoYmFzZSAxNikJCVNBTElDUlUsIFMuQS4KLQkJCQlBdi4gU2VycmEgLCAxMDAKLQkJCQlTdGEuTWEuUGFsYXV0b3JkZXJhIEJhcmNlbG9uYSAwODQ2MAotCQkJCVNQQUlOCi0KLTAwLTE5LUQwICAgKGhleCkJCUNhdGhleGlzCi0wMDE5RDAgICAgIChiYXNlIDE2KQkJQ2F0aGV4aXMKLQkJCQlQTyBCb3ggMTA5MQotCQkJCVVtaGxhbmdhIFJvY2tzCi0JCQkJRHVyYmFuIEt3YVp1bHUgTmF0YWwgNDMyMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xOS1EMSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxOUQxICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xOS1EMiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxOUQyICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xOS1EMyAgIChoZXgpCQlUUkFLIE1pY3Jvd2F2ZQotMDAxOUQzICAgICAoYmFzZSAxNikJCVRSQUsgTWljcm93YXZlCi0JCQkJNDcyNiBFaXNlbmhvd2VyIEJsdmQKLQkJCQlUYW1wYSBGTCAzMzYzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRDQgICAoaGV4KQkJSUNYIFRlY2hub2xvZ2llcwotMDAxOUQ0ICAgICAoYmFzZSAxNikJCUlDWCBUZWNobm9sb2dpZXMKLQkJCQkzNDQwIEZyYW5jaXMtSHVnaGVzCi0JCQkJU3VpdGUgMTIwCi0JCQkJTGF2YWwgUXVlYmVjIEg3TCA1QTkKLQkJCQlDQU5BREEKLQotMDAtMTktRDUgICAoaGV4KQkJSVAgSW5ub3ZhdGlvbnMsIEluYy4KLTAwMTlENSAgICAgKGJhc2UgMTYpCQlJUCBJbm5vdmF0aW9ucywgSW5jLgotCQkJCTE1MTcgMTQ2dGggQXZlCi0JCQkJRG9yciBNSSA0OTMyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRDYgICAoaGV4KQkJTFMgQ2FibGUgTHRkLgotMDAxOUQ2ICAgICAoYmFzZSAxNikJCUxTIENhYmxlIEx0ZC4KLQkJCQkxMkYgTFMgVG93ZXIsIDEwMjYtNiwgSG9nZXktZG9uZwotCQkJCUFueWFuZy1zaSBHeWVvbmdnaS1kbyA0MzEtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LUQ3ICAgKGhleCkJCUZPUlRVTkVURUsgQ08uLCBMVEQKLTAwMTlENyAgICAgKGJhc2UgMTYpCQlGT1JUVU5FVEVLIENPLiwgTFRECi0JCQkJMTJGLCBOby4gNzUsIFNlYyAxLCBDaG9uZ3FpbmcgUy4gUmQuLAotCQkJCVpob25nemhlbmcgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktRDggICAoaGV4KQkJTUFYRk9SCi0wMDE5RDggICAgIChiYXNlIDE2KQkJTUFYRk9SCi0JCQkJI0UgODA5LCBCdW5kYW5nLCBUZWNobm8tUGFyawotCQkJCVlhdGFwLURvbmcsIEJ1bmdkYW5nLUd1Ci0JCQkJU2VvbmduYW0tQ2l0eSBHeWVvbmdnaS1EbyA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LUQ5ICAgKGhleCkJCVpldXRzY2hlbCBHbWJICi0wMDE5RDkgICAgIChiYXNlIDE2KQkJWmV1dHNjaGVsIEdtYkgKLQkJCQlIZWVyd2VnIDIKLQkJCQlUdWJpbmdlbi1IaXJzY2hhdSBCVyBELTcyMDcwCi0JCQkJR0VSTUFOWQotCi0wMC0xOS1EQSAgIChoZXgpCQlXZWxsdHJhbnMgTyZFIFRlY2hub2xvZ3kgQ28uICwgTHRkLgotMDAxOURBICAgICAoYmFzZSAxNikJCVdlbGx0cmFucyBPJkUgVGVjaG5vbG9neSBDby4gLCBMdGQuCi0JCQkJdGhlIDNyZCBGbG9vciwgYnVpbGRpbmcgQy1ELCBIaS10ZWNoIERpZ2l0YWwgSGFyYm9yLCBHdWFuZG9uZyBJbmR1c3RyaWFsIFBhcmsKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi0wMC0xOS1EQiAgIChoZXgpCQlNSUNSTy1TVEFSIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0wMDE5REIgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotCQkJCU5PLiA2OSwgTEktREUgU1QuLCBKVU5HLUhFIENJVFkKLQkJCQlUQUlQRUkgSFNJRU4gIDIzNQotCQkJCVRVVkFMVQotCi0wMC0xOS1EQyAgIChoZXgpCQlFTkVOU1lTIFRlY2hub2xvZ2llcwotMDAxOURDICAgICAoYmFzZSAxNikJCUVORU5TWVMgVGVjaG5vbG9naWVzCi0JCQkJTGUgR2VybWFuaXVtCi0JCQkJODAgQXZlbnVlIGRlcyBidXR0ZXMgZGUgQ29lc21lcwotCQkJCVJFTk5FUyBCcml0dGFueSAzNTcwMAotCQkJCUZSQU5DRQotCi0wMC0xOS1ERCAgIChoZXgpCQlGRUktWnlmZXIsIEluYy4KLTAwMTlERCAgICAgKGJhc2UgMTYpCQlGRUktWnlmZXIsIEluYy4KLQkJCQkxNTE1IFMuIE1hbmNoZXN0ZXIKLQkJCQlBbmFoZWltIENBIDkyODAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1ERSAgIChoZXgpCQlNT0JJVEVLCi0wMDE5REUgICAgIChiYXNlIDE2KQkJTU9CSVRFSwotCQkJCTVGLE5vLjYwLExhbmUgMzIxLFlhbmctS3dhbmcgU3RyZWV0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LURGICAgKGhleCkJCVRob21zb24gSW5jLgotMDAxOURGICAgICAoYmFzZSAxNikJCVRob21zb24gSW5jLgotCQkJCTEwMSBXZXN0IDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MC0xMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1FMCAgIChoZXgpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMTlFMCAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlTb3V0aCBCdWlsZGluZywgTm8uNSBLZXl1YW4gUm9hZAotCQkJCUNlbnRyYWwgWm9uZSwgU2NpZW5jZSAmIFRlY2hub2xvZ3kgUGFyawotCQkJCU5hbnNoYW4gU2hlbnpoZW4gNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMTktRTEgICAoaGV4KQkJTm9ydGVsCi0wMDE5RTEgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE5LUUyICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLTAwMTlFMiAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOLiBNYXRoaWxkYSBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1FMyAgIChoZXgpCQlBcHBsZSBDb21wdXRlciBJbmMuCi0wMDE5RTMgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDYWxpZm9ybmlhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1FNCAgIChoZXgpCQkyV2lyZSwgSW5jCi0wMDE5RTQgICAgIChiYXNlIDE2KQkJMldpcmUsIEluYwotCQkJCTE3MDQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUU1ICAgKGhleCkJCUx5bnggU3R1ZGlvIFRlY2hub2xvZ3ksIEluYy4KLTAwMTlFNSAgICAgKGJhc2UgMTYpCQlMeW54IFN0dWRpbyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTU0MCBCYXJ0b24gUmQgIyAyNjgKLQkJCQlSZWRsYW5kcyBDQSA5MjM3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRTYgICAoaGV4KQkJVE9ZTyBNRURJQyBDTy4sTFRELgotMDAxOUU2ICAgICAoYmFzZSAxNikJCVRPWU8gTUVESUMgQ08uLExURC4KLQkJCQkxLTE3LTIyIEtpdGFob3JpZSwgTmlzaGkta3UKLQkJCQlPc2FrYSAgNTUwLTAwMTQKLQkJCQlKQVBBTgotCi0wMC0xOS1FNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5RTcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1FOCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5RTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1FOSAgIChoZXgpCQlTLUluZm9ybWF0aW9uIFRlY2hub2xneSwgQ28uLCBMdGQuCi0wMDE5RTkgICAgIChiYXNlIDE2KQkJUy1JbmZvcm1hdGlvbiBUZWNobm9sZ3ksIENvLiwgTHRkLgotCQkJCVN1bmd3b28gQmxkZywgNzE3LTMgU3VzZW8tZG9uZywKLQkJCQlHYW5nbmFtLWd1LAotCQkJCVNlb3VsICAxMzUtODg0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LUVBICAgKGhleCkJCVRlcmFNYWdlIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMTlFQSAgICAgKGJhc2UgMTYpCQlUZXJhTWFnZSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJR29sZGVuIExhbmQgQnVpbGRpbmcgU3VpdGUgOTA3Ci0JCQkJMzIgTGlhbmcgTWEgQnJpZGdlIFJvYWQKLQkJCQlCZWlqaW5nICAxMDAwMTYKLQkJCQlDSElOQQotCi0wMC0xOS1FQiAgIChoZXgpCQlQeXJvbml4IEx0ZAotMDAxOUVCICAgICAoYmFzZSAxNikJCVB5cm9uaXggTHRkCi0JCQkJQnJhaXRod2VsbCBXYXkKLQkJCQlIZWxsYWJ5Ci0JCQkJUm90aGVyaGFtIFNvdXRoIFlvcmtzaGlyZSBTNjYgOFFZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTktRUMgICAoaGV4KQkJU2FnYW1vcmUgU3lzdGVtcywgSW5jLgotMDAxOUVDICAgICAoYmFzZSAxNikJCVNhZ2Ftb3JlIFN5c3RlbXMsIEluYy4KLQkJCQk1NSBNaWRkbGVzZXggU3RyZWV0Ci0JCQkJU3VpdGUgMjE3Ci0JCQkJTm9ydGggQ2hlbG1zZm9yZCBNQSAwMTg2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRUQgICAoaGV4KQkJQXhlc3N0ZWwgSW5jLgotMDAxOUVEICAgICAoYmFzZSAxNikJCUF4ZXNzdGVsIEluYy4KLQkJCQk2ODE1IEZsYW5kZXJzIFNyLgotCQkJCVN0ZSAyMTAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUVFICAgKGhleCkJCUNBUkxPIEdBVkFaWkkgQ09OVFJPTFMgU1BBLUNvbnRyb2xzIERpdmlzaW9uCi0wMDE5RUUgICAgIChiYXNlIDE2KQkJQ0FSTE8gR0FWQVpaSSBDT05UUk9MUyBTUEEtQ29udHJvbHMgRGl2aXNpb24KLQkJCQlWaWEgU2FmZm9yemUgOAotCQkJCUJFTExVTk8gQkwgSS0zMjEwMAotCQkJCUlUQUxZCi0KLTAwLTE5LUVGICAgKGhleCkJCVNIRU5aSEVOIExJTk5LSU5HIEVMRUNUUk9OSUNTIENPLixMVEQKLTAwMTlFRiAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBMSU5OS0lORyBFTEVDVFJPTklDUyBDTy4sTFRECi0JCQkJUm9vbSA5MDEsQiBCbG9jayxRaW5naHVhIEluZm9ybWF0aW9uIENlbnRlciBIaS10ZWMgcGFyayBOb3J0aCBEaXN0cmljdCxOYW5zaGFuIERpc3RyaWN0LFNoZW56aGVuCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE5LUYwICAgKGhleCkJCVVOSU9OTUFOIFRFQ0hOT0xPR1kgQ08uLExURAotMDAxOUYwICAgICAoYmFzZSAxNikJCVVOSU9OTUFOIFRFQ0hOT0xPR1kgQ08uLExURAotCQkJCTE4RiwgSFVBWUFORyBUT1dFUixZQU5EQVlJIFJPQUQKLQkJCQlIVUlaSE9VIEdVQU5HRE9ORyA1MTYwMDcKLQkJCQlDSElOQQotCi0wMC0xOS1GMSAgIChoZXgpCQlTdGFyIENvbW11bmljYXRpb24gTmV0d29yayBUZWNobm9sb2d5IENvLixMdGQKLTAwMTlGMSAgICAgKGJhc2UgMTYpCQlTdGFyIENvbW11bmljYXRpb24gTmV0d29yayBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkxMC9GLFRvd2VyIEIsU09ITyBOZXcgVG93bixOby44OCBqaWFuZ3VvUm9hZCxDaGFveWFuZyBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDAyMgotCQkJCUNISU5BCi0KLTAwLTE5LUYyICAgKGhleCkJCVRlcmFkeW5lIEsuSy4KLTAwMTlGMiAgICAgKGJhc2UgMTYpCQlUZXJhZHluZSBLLksuCi0JCQkJMjcyLTEzLCBIZWlzZWksIFRha2Fvbm8KLQkJCQlPenUtbWFjaGkKLQkJCQlLaWt1Y2hpLWd1biBLdW1hbW90byA4NjktMTIzMgotCQkJCUpBUEFOCi0KLTAwLTE5LUYzICAgKGhleCkJCUNldGlzLCBJbmMKLTAwMTlGMyAgICAgKGJhc2UgMTYpCQlDZXRpcywgSW5jCi0JCQkJNTAyNSBHYWxsZXkgUmQKLQkJCQlDb2xvcmFkbyBTcHJpbmdzIENPIDgwOTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1GNCAgIChoZXgpCQlDb252ZXJnZW5zIE95IEx0ZAotMDAxOUY0ICAgICAoYmFzZSAxNikJCUNvbnZlcmdlbnMgT3kgTHRkCi0JCQkJV2VzdGVuZGludGllIDk5IEIKLQkJCQlFc3BvbyBVdXNpbWFhIEZJTi0wMjE2MAotCQkJCUZJTkxBTkQKLQotMDAtMTktRjUgICAoaGV4KQkJSW1hZ2luYXRpb24gVGVjaG5vbG9naWVzIEx0ZAotMDAxOUY1ICAgICAoYmFzZSAxNikJCUltYWdpbmF0aW9uIFRlY2hub2xvZ2llcyBMdGQKLQkJCQladXJpY2ggSG91c2UKLQkJCQlDYW5hbCBXaGFyZgotCQkJCUxlZWRzIFdlc3QgWW9ya3NoaXJlIExTMTEgNURCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTktRjYgICAoaGV4KQkJQWNjb25ldCAoUFRFKSBMdGQKLTAwMTlGNiAgICAgKGJhc2UgMTYpCQlBY2NvbmV0IChQVEUpIEx0ZAotCQkJCU5vLiAxNiBBeWVyIFJhamFoIENyZXNjZW50Ci0JCQkJIyAwMy0wMwotCQkJCVNpbmdhcG9yZSAgMTM5OTY1Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTE5LUY3ICAgKGhleCkJCU9uc2V0IENvbXB1dGVyIENvcnBvcmF0aW9uCi0wMDE5RjcgICAgIChiYXNlIDE2KQkJT25zZXQgQ29tcHV0ZXIgQ29ycG9yYXRpb24KLQkJCQlQLk8uIEJveCAzNDUwCi0JCQkJUG9jYXNzZXQgTUEgMDI1NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUY4ICAgKGhleCkJCUVtYmVkZGVkIFN5c3RlbXMgRGVzaWduLCBJbmMuCi0wMDE5RjggICAgIChiYXNlIDE2KQkJRW1iZWRkZWQgU3lzdGVtcyBEZXNpZ24sIEluYy4KLQkJCQk2ODEwIERlZXJwYXRoIFJvYWQKLQkJCQlTdWl0ZSAzMDAKLQkJCQlFbGtyaWRnZSBNRCAyMTA3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRjkgICAoaGV4KQkJVERLLUxhbWJkYQotMDAxOUY5ICAgICAoYmFzZSAxNikJCVRESy1MYW1iZGEKLQkJCQk0MDUgRXNzZXggUm9hZAotCQkJCU5lcHR1bmUgTkogMDc3NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUZBICAgKGhleCkJCUNhYmxlIFZpc2lvbiBFbGVjdHJvbmljcyBDTy4sIExURC4KLTAwMTlGQSAgICAgKGJhc2UgMTYpCQlDYWJsZSBWaXNpb24gRWxlY3Ryb25pY3MgQ08uLCBMVEQuCi0JCQkJMTJGLTMsIE5vLjE2LCBDaGllbiBQYSBSZC4KLQkJCQlDaHVuZyBIbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LUZCICAgKGhleCkJCUJTa3lCIEx0ZAotMDAxOUZCICAgICAoYmFzZSAxNikJCUJTa3lCIEx0ZAotCQkJCTE2OSBLSU5HUyBST0FECi0JCQkJQlJFTlRXT09EIEVTU0VYIENNMTQgNEVGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTktRkMgICAoaGV4KQkJUFQuIFVmb2Frc2VzIFN1a3NlcyBMdWFyYmlhc2EKLTAwMTlGQyAgICAgKGJhc2UgMTYpCQlQVC4gVWZvYWtzZXMgU3Vrc2VzIEx1YXJiaWFzYQotCQkJCUpsLiBTdWx0YW4gSGFzYW51ZGluIE5vLiA0MQotCQkJCUtlYmF5b3JhbiBCYXJ1Ci0JCQkJSmFrYXJ0YSBTZWxhdGFuIERLSSBKYWthcnRhIDEyMTYwCi0JCQkJSU5ET05FU0lBCi0KLTAwLTE5LUZEICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAxOUZEICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTE5LUZFICAgKGhleCkJCVNIRU5aSEVOIFNFRUNPTU0gVEVDSE5PTE9HWSBDTy4sTFRELgotMDAxOUZFICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIFNFRUNPTU0gVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCVJvb20gNjA5LDQwNFlhbm5hbiBSb2FkCi0JCQkJU2hlblpoZW4gR3Vhbmdkb25nIDUxODAzMQotCQkJCUNISU5BCi0KLTAwLTE5LUZGICAgKGhleCkJCUZpbm56eW1lcwotMDAxOUZGICAgICAoYmFzZSAxNikJCUZpbm56eW1lcwotCQkJCTgwMCBXZXN0IEN1bW1pbmdzIFBhcmsKLQkJCQlTdWl0ZSA1NTUwCi0JCQkJV29idXJuIE1BIDAxODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0wMCAgIChoZXgpCQlNQVRSSVggSU5DLgotMDAxQTAwICAgICAoYmFzZSAxNikJCU1BVFJJWCBJTkMuCi0JCQkJQVMgYmxkLjMtMTMtMjAKLQkJCQlOaXNoaS1UZW1tYSBLaXRhLUt1Ci0JCQkJT3Nha2EgIDUzMC0wMDQ3Ci0JCQkJSkFQQU4KLQotMDAtMUEtMDEgICAoaGV4KQkJU21pdGhzIE1lZGljYWwKLTAwMUEwMSAgICAgKGJhc2UgMTYpCQlTbWl0aHMgTWVkaWNhbAotCQkJCTQzNTAgUml2ZXJncmVlbiBQYXJrd2F5Ci0JCQkJU3VpdGUgMjAwCi0JCQkJRHVsdXRoIEdBIDMwMDk2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0wMiAgIChoZXgpCQlTRUNVUkUgQ0FSRSBQUk9EVUNUUywgSU5DCi0wMDFBMDIgICAgIChiYXNlIDE2KQkJU0VDVVJFIENBUkUgUFJPRFVDVFMsIElOQwotCQkJCTM5IENIRU5FTEwgRFJJVkUKLQkJCQlDT05DT1JEIE5IIDAzMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0wMyAgIChoZXgpCQlBbmdlbCBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMUEwMyAgICAgKGJhc2UgMTYpCQlBbmdlbCBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkxNywgTGFuZSAxMzQsIFNob3UgU2hhbiBSb2FkLCBUYWkgU2hhbiwKLQkJCQlUYWlwZWkgIDI0MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtMDQgICAoaGV4KQkJSW50ZXJheSBTb2x1dGlvbnMgQlYKLTAwMUEwNCAgICAgKGJhc2UgMTYpCQlJbnRlcmF5IFNvbHV0aW9ucyBCVgotCQkJCU1yLiBXLk0uIE9wcGVkaWprIHZhbiBWZWVud2VnIDgKLQkJCQlCVVJHVU0gRnJpZXNsYW5kIDkyNTEgR0EKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xQS0wNSAgIChoZXgpCQlPUFRJQkFTRSBMVEQKLTAwMUEwNSAgICAgKGJhc2UgMTYpCQlPUFRJQkFTRSBMVEQKLQkJCQk3IFNoYW5rYXIgU3QuCi0JCQkJSGVyemxpeWEgSVNSQUVMIDQ2MTIwCi0JCQkJSVNSQUVMCi0KLTAwLTFBLTA2ICAgKGhleCkJCU9wVmlzdGEsIEluYy4KLTAwMUEwNiAgICAgKGJhc2UgMTYpCQlPcFZpc3RhLCBJbmMuCi0JCQkJODcwIE5vcnRoIE1jQ2FydGh5IEJsdmQuCi0JCQkJTWlscGl0YXMgQ2FsaWZvcm5pYSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMDcgICAoaGV4KQkJQXJlY29udCBWaXNpb24KLTAwMUEwNyAgICAgKGJhc2UgMTYpCQlBcmVjb250IFZpc2lvbgotCQkJCTI0MDAgTi4gTGluY29sbiBBdmUKLQkJCQlBbHRhZGVuYSBDQSA5MTAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMDggICAoaGV4KQkJRGFsbWFuIFRlY2huaWNhbCBTZXJ2aWNlcwotMDAxQTA4ICAgICAoYmFzZSAxNikJCURhbG1hbiBUZWNobmljYWwgU2VydmljZXMKLQkJCQkzNiBEdWtlIENsb3NlCi0JCQkJV2VzdCBXYXkKLQkJCQlBbmRvdmVyIEhhbXBzaGlyZSBTUDEwIDVBUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFBLTA5ICAgKGhleCkJCVdheWZhcmVyIFRyYW5zaXQgU3lzdGVtcyBMdGQKLTAwMUEwOSAgICAgKGJhc2UgMTYpCQlXYXlmYXJlciBUcmFuc2l0IFN5c3RlbXMgTHRkCi0JCQkJMTAgV2lsbGlzIFdheQotCQkJCUZsZWV0cyBJbnNkdXN0cmlhbCBFc3QKLQkJCQlQb29sZSBEb3JzZXQgQkgxNSAzU1MKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQS0wQSAgIChoZXgpCQlBZGFwdGl2ZSBNaWNyby1XYXJlIEluYy4KLTAwMUEwQSAgICAgKGJhc2UgMTYpCQlBZGFwdGl2ZSBNaWNyby1XYXJlIEluYy4KLQkJCQk2OTE3IElubm92YXRpb24gQmx2ZAotCQkJCUZvcnQgV2F5bmUgSU4gNDY4MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTBCICAgKGhleCkJCUJPTkEgVEVDSE5PTE9HWSBJTkMuCi0wMDFBMEIgICAgIChiYXNlIDE2KQkJQk9OQSBURUNITk9MT0dZIElOQy4KLQkJCQk0RiwgRS1QbGFjZSBCbGRnLiwgNzE5LTI0Ci0JCQkJWWVva3NhbS1Eb25nLCBHYW5nbmFtLUd1LAotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTBDICAgKGhleCkJCVN3ZS1EaXNoIFNhdGVsbGl0ZSBTeXN0ZW1zIEFCCi0wMDFBMEMgICAgIChiYXNlIDE2KQkJU3dlLURpc2ggU2F0ZWxsaXRlIFN5c3RlbXMgQUIKLQkJCQlUb3JnZ2F0YW4gMTUKLQkJCQlTb2xuYSBTdG9ja2hvbG0gU0UtMTcxIDA2Ci0JCQkJU1dFREVOCi0KLTAwLTFBLTBEICAgKGhleCkJCUhhbmRIZWxkIGVudGVydGFpbm1lbnQsIEluYy4KLTAwMUEwRCAgICAgKGJhc2UgMTYpCQlIYW5kSGVsZCBlbnRlcnRhaW5tZW50LCBJbmMuCi0JCQkJNTM5IEJyeWFudCBTdHJlZXQsIFN1aXRlIDQwMwotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTBFICAgKGhleCkJCUNoZW5nIFVlaSBQcmVjaXNpb24gSW5kdXN0cnkgQ28uLEx0ZAotMDAxQTBFICAgICAoYmFzZSAxNikJCUNoZW5nIFVlaSBQcmVjaXNpb24gSW5kdXN0cnkgQ28uLEx0ZAotCQkJCUp1bmRhIEluZHVzdHJ5IERpc3RyaWN0LCBEb25na2VuZyBUb3duLERvbmdndWFuIENpdHkKLQkJCQlEb25nR3VhbiBHdWFuZyBEb25nIDUyMzQ1NQotCQkJCUNISU5BCi0KLTAwLTFBLTBGICAgKGhleCkJCVNpc3RlbWFzIEF2YW56YWRvcyBkZSBDb250cm9sLCBTLkEuCi0wMDFBMEYgICAgIChiYXNlIDE2KQkJU2lzdGVtYXMgQXZhbnphZG9zIGRlIENvbnRyb2wsIFMuQS4KLQkJCQljYWxsZSBDb2xxdWlkZSA2Ci0JCQkJTGFzIFJvemFzIE1hZHJpZCAyODIzMAotCQkJCVNQQUlOCi0KLTAwLTFBLTEwICAgKGhleCkJCUxVQ0VOVCBUUkFOUyBFTEVDVFJPTklDUyBDTy4sTFRECi0wMDFBMTAgICAgIChiYXNlIDE2KQkJTFVDRU5UIFRSQU5TIEVMRUNUUk9OSUNTIENPLixMVEQKLQkJCQk5Ri0xLE5vLjE2LENoaWVuIFBhaCBSZC4KLQkJCQlDaHVuZyBIbyBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS0xMSAgIChoZXgpCQlHb29nbGUgSW5jLgotMDAxQTExICAgICAoYmFzZSAxNikJCUdvb2dsZSBJbmMuCi0JCQkJMTYwMCBBbXBoaXRoZWF0ZXIgUGFya3dheQotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTEyICAgKGhleCkJCUVzc2lsb3IKLTAwMUExMiAgICAgKGJhc2UgMTYpCQlFc3NpbG9yCi0JCQkJNjQgQmlzIEF2ZW51ZSBBdWJlcnQKLQkJCQk5NDMwMCBWaW5jZW5uZXMgCi0JCQkJRlJBTkNFCi0KLTAwLTFBLTEzICAgKGhleCkJCVdhbmxpZGEgR3JvdXAgQ28uLCBMVEQKLTAwMUExMyAgICAgKGJhc2UgMTYpCQlXYW5saWRhIEdyb3VwIENvLiwgTFRECi0JCQkJSmlhaGUgUm9hZCBOby42MTgKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLTAwLTFBLTE0ICAgKGhleCkJCVhpbiBIdWEgQ29udHJvbCBFbmdpbmVlcmluZyBDby4sTHRkLgotMDAxQTE0ICAgICAoYmFzZSAxNikJCVhpbiBIdWEgQ29udHJvbCBFbmdpbmVlcmluZyBDby4sTHRkLgotCQkJCTE2MCBXZW5qaW5nIFJkLiwgTWluaGFuZwotCQkJCVNoYW5naGFpICAyMDAwMjQ1Ci0JCQkJQ0hJTkEKLQotMDAtMUEtMTUgICAoaGV4KQkJZ2VtYWx0byBlLVBheW1lbnQKLTAwMUExNSAgICAgKGJhc2UgMTYpCQlnZW1hbHRvIGUtUGF5bWVudAotCQkJCTYgcnVlIGRlIGxhIFZlcnJlcmllCi0JCQkJTWV1ZG9uICA5MjE5NwotCQkJCUZSQU5DRQotCi0wMC0xQS0xNiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQTE2ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQS0xNyAgIChoZXgpCQlUZWFrIFRlY2hub2xvZ2llcywgSW5jLgotMDAxQTE3ICAgICAoYmFzZSAxNikJCVRlYWsgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjkwMSBUYXNtYW4gRHIuLCBTdGUuICMyMTAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMTggICAoaGV4KQkJQWR2YW5jZWQgU2ltdWxhdGlvbiBUZWNobm9sb2d5IGluYy4KLTAwMUExOCAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBTaW11bGF0aW9uIFRlY2hub2xvZ3kgaW5jLgotCQkJCTUwMEEgSHVudG1hciBQYXJrIERyaXZlCi0JCQkJSGVybmRvbiBWQSAyMDE3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMTkgICAoaGV4KQkJQ29tcHV0ZXIgRW5naW5lZXJpbmcgTGltaXRlZAotMDAxQTE5ICAgICAoYmFzZSAxNikJCUNvbXB1dGVyIEVuZ2luZWVyaW5nIExpbWl0ZWQKLQkJCQlQTyBCb3ggMjYtMjUKLQkJCQlFcHNvbQotCQkJCUF1Y2tsYW5kIEFLIDEzNDQKLQkJCQlORVcgWkVBTEFORAotCi0wMC0xQS0xQSAgIChoZXgpCQlHZW50ZXggQ29ycG9yYXRpb24vRWxlY3Ryby1BY291c3RpYyBQcm9kdWN0cwotMDAxQTFBICAgICAoYmFzZSAxNikJCUdlbnRleCBDb3Jwb3JhdGlvbi9FbGVjdHJvLUFjb3VzdGljIFByb2R1Y3RzCi0JCQkJMjQ1NiBCcm93biBBdmVudWUKLQkJCQlNYW5jaGVzdGVyIE5IIDAzMTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0xQiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMUExQiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0xQyAgIChoZXgpCQlHVCZUIEVuZ2luZWVyaW5nIFB0ZSBMdGQKLTAwMUExQyAgICAgKGJhc2UgMTYpCQlHVCZUIEVuZ2luZWVyaW5nIFB0ZSBMdGQKLQkJCQkyIEFuZyBNbyBLaW8gU3QuNjQsIEVjb24gQnVpbGRpbmcsICMwNC0wMAotCQkJCVNpbmdhcG9yZSA1NjkwODQKLQkJCQlTSU5HQVBPUkUKLQotMDAtMUEtMUQgICAoaGV4KQkJUENob21lIE9ubGluZSBJbmMuCi0wMDFBMUQgICAgIChiYXNlIDE2KQkJUENob21lIE9ubGluZSBJbmMuCi0JCQkJMTFGLCAxMDUsIFNlYy4gMiwgVHVuLUh3YSBTLiBSZC4KLQkJCQlUYWlwZWkgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS0xRSAgIChoZXgpCQlBcnViYSBOZXR3b3JrcwotMDAxQTFFICAgICAoYmFzZSAxNikJCUFydWJhIE5ldHdvcmtzCi0JCQkJMTMyMiBDcm9zc21hbiBBdgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMUYgICAoaGV4KQkJQ29hc3RhbCBFbnZpcm9ubWVudGFsIFN5c3RlbXMKLTAwMUExRiAgICAgKGJhc2UgMTYpCQlDb2FzdGFsIEVudmlyb25tZW50YWwgU3lzdGVtcwotCQkJCTgyMCBGaXJzdCBBdmVudWUgU291dGgKLQkJCQlTZWF0dGxlIHdhIDk4MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0yMCAgIChoZXgpCQlDTU9URUNIIENvLiBMdGQuCi0wMDFBMjAgICAgIChiYXNlIDE2KQkJQ01PVEVDSCBDby4gTHRkLgotCQkJCTVGIEV0cm9uaXggQmxkZy4gMTctMTAKLQkJCQlZb2lkby1Eb25nCi0JCQkJWW91bmdkdW5ncG8tR3UgU2VvdWwgMTUwLTg3NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS0yMSAgIChoZXgpCQlJbmRhYyBCLlYuCi0wMDFBMjEgICAgIChiYXNlIDE2KQkJSW5kYWMgQi5WLgotCQkJCUluc3RpdHV0ZW53ZWcgMTVBCi0JCQkJRW5zY2hlZGUgT3Zlcmlqc3NlbCA3NTIxIFBICi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUEtMjIgICAoaGV4KQkJZVEtMyBFbnR3aWNrbHVuZyBHbWJICi0wMDFBMjIgICAgIChiYXNlIDE2KQkJZVEtMyBFbnR3aWNrbHVuZyBHbWJICi0JCQkJTWFpYnVyZ2VyIFN0ci4gMzYKLQkJCQlMZWVyIE5pZWRlcnNhY2hzZW4gRC0yNjc4OQotCQkJCUdFUk1BTlkKLQotMDAtMUEtMjMgICAoaGV4KQkJSWNlIFF1YmUsIEluYwotMDAxQTIzICAgICAoYmFzZSAxNikJCUljZSBRdWJlLCBJbmMKLQkJCQkxNDEgV2lsc29uIEF2ZQotCQkJCUdyZWVuc2J1cmcgUGEgMTU2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTI0ICAgKGhleCkJCUdhbGF4eSBUZWxlY29tIFRlY2hub2xvZ2llcyBMdGQKLTAwMUEyNCAgICAgKGJhc2UgMTYpCQlHYWxheHkgVGVsZWNvbSBUZWNobm9sb2dpZXMgTHRkCi0JCQkJTm8uMjUsIFRoZSAxc3QgR2FveGluIFJvYWQKLQkJCQlYaSdhbiBDaXR5IFNoYW5ueGkgNzEwMDc1Ci0JCQkJQ0hJTkEKLQotMDAtMUEtMjUgICAoaGV4KQkJREVMVEEgRE9SRQotMDAxQTI1ICAgICAoYmFzZSAxNikJCURFTFRBIERPUkUKLQkJCQlCT05ORU1BSU4KLQkJCQlDT01CT1VSRyBCUkVUQUdORSAzNSAzNTI3MAotCQkJCUZSQU5DRQotCi0wMC0xQS0yNiAgIChoZXgpCQlEZWx0YW5vZGUgU29sdXRpb25zIEFCCi0wMDFBMjYgICAgIChiYXNlIDE2KQkJRGVsdGFub2RlIFNvbHV0aW9ucyBBQgotCQkJCUJveCA5MiAxODQKLQkJCQlTdG9ja2hvbG0gIDEyMCAwOQotCQkJCVNXRURFTgotCi0wMC0xQS0yNyAgIChoZXgpCQlVYmlzdGFyCi0wMDFBMjcgICAgIChiYXNlIDE2KQkJVWJpc3RhcgotCQkJCThGLCBTZW9uZ2RvIEJ1aWxkaW5nLCA1ODctMjMKLQkJCQlTaW5zYS1Eb25nLCBHYW5nbmFtLUd1Ci0JCQkJU2VvdWwgIDEzNS03NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtMjggICAoaGV4KQkJQVNXVCBDby4sIExURC4gVGFpd2FuIEJyYW5jaCBILksuCi0wMDFBMjggICAgIChiYXNlIDE2KQkJQVNXVCBDby4sIExURC4gVGFpd2FuIEJyYW5jaCBILksuCi0JCQkJN0YuLCBOby4zIExhbmUgOTEsIERvbmdtZWkgUmQuCi0JCQkJSHNpbmNodSAgMzAwNzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTI5ICAgKGhleCkJCVRlY2hzb25pYyBJbmR1c3RyaWVzIGQvYi9hIEh1bW1pbmJpcmQKLTAwMUEyOSAgICAgKGJhc2UgMTYpCQlUZWNoc29uaWMgSW5kdXN0cmllcyBkL2IvYSBIdW1taW5iaXJkCi0JCQkJMTIyMCBPbGQgQWxwaGFyZXR0YSBSZAotCQkJCVN1aXRlIDM0MAotCQkJCUFscGhhcmV0dGEgR0EgMzAwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTJBICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMUEyQSAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOby4gOSAsIFBhcmsgQXZlbnVlIElJLAotCQkJCVNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtMkIgICAoaGV4KQkJQXllY29tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFBMkIgICAgIChiYXNlIDE2KQkJQXllY29tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDI1LCBSJkQgUm9hZCAyLCBTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtMkMgICAoaGV4KQkJU0FURUMgQ28uLExURAotMDAxQTJDICAgICAoYmFzZSAxNikJCVNBVEVDIENvLixMVEQKLQkJCQkzNTgtNCwgUGFsZ29rMi1Eb25nLCBTYW5nbm9rLUd1Ci0JCQkJQW5zYW4tU2kgS3l1bmdraS1EbyA0MjYtMTkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTJEICAgKGhleCkJCVRoZSBOYXZ2byBHcm91cAotMDAxQTJEICAgICAoYmFzZSAxNikJCVRoZSBOYXZ2byBHcm91cAotCQkJCTQ0MDAgQmFrZXIgUm9hZAotCQkJCU1pbm5ldG9ua2EgTU4gNTUzNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTJFICAgKGhleCkJCVppb3ZhIENvcG9yYXRpb24KLTAwMUEyRSAgICAgKGJhc2UgMTYpCQlaaW92YSBDb3BvcmF0aW9uCi0JCQkJVW5pdCAzLCA3LTkgU2hlcnJpZmZzIHJvYWQKLQkJCQlMb25zZGFsZSBTLkEuIDUxNjAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUEtMkYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQTJGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMzAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQTMwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMzEgICAoaGV4KQkJU0NBTiBDT0lOIEluZHVzdHJpZXMgQUIKLTAwMUEzMSAgICAgKGJhc2UgMTYpCQlTQ0FOIENPSU4gSW5kdXN0cmllcyBBQgotCQkJCUphZ2Vyc2hpbGxnYXRhbiAyNgotCQkJCU1hbG1vZSBTa2FuZSAyMTM3NQotCQkJCVNXRURFTgotCi0wMC0xQS0zMiAgIChoZXgpCQlBQ1RJVkEgTVVMVElNRURJQQotMDAxQTMyICAgICAoYmFzZSAxNikJCUFDVElWQSBNVUxUSU1FRElBCi0JCQkJU0lDUCBDU0UKLQkJCQlTQU5UIEpPQU4gREVTUEkgQkFSQ0VMT05BIDA4OTcwCi0JCQkJU1BBSU4KLQotMDAtMUEtMzMgICAoaGV4KQkJQVNJIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDFBMzMgICAgIChiYXNlIDE2KQkJQVNJIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTA0MiBFIEd1YWRhbHVwZSBSZAotCQkJCVRlbXBlIEFaIDg1MjgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0zNCAgIChoZXgpCQlLb25rYSBHcm91cCBDby4sIEx0ZC4KLTAwMUEzNCAgICAgKGJhc2UgMTYpCQlLb25rYSBHcm91cCBDby4sIEx0ZC4KLQkJCQlPdmVyc2VhIENoaW5lc2UgVG93bixOYW5zaGFuLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTMKLQkJCQlDSElOQQotCi0wMC0xQS0zNSAgIChoZXgpCQlCQVJURUMgR21iSAotMDAxQTM1ICAgICAoYmFzZSAxNikJCUJBUlRFQyBHbWJICi0JCQkJU2NodWxzdHIuIDMwCi0JCQkJR290dGVzemVsbCBCYXZhcmlhIDk0MjM5Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS0zNiAgIChoZXgpCQlBaXBlcm1vbiBHbWJIICYgQ28uIEtHCi0wMDFBMzYgICAgIChiYXNlIDE2KQkJQWlwZXJtb24gR21iSCAmIENvLiBLRwotCQkJCVphbWRvcmZlciBTdHIuIDEwMAotCQkJCU11bmNoZW4KLQkJCQlNdW5pY2ggQmF2YXJpYSBELTgxNjc3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS0zNyAgIChoZXgpCQlMZWFyIENvcnBvcmF0aW9uCi0wMDFBMzcgICAgIChiYXNlIDE2KQkJTGVhciBDb3Jwb3JhdGlvbgotCQkJCUluZHVzdHJpZXN0cmFzc2UgNDgKLQkJCQlLcm9uYWNoIEJheWVybiA5NjMxNwotCQkJCUdFUk1BTlkKLQotMDAtMUEtMzggICAoaGV4KQkJU2FubWluYS1TQ0kKLTAwMUEzOCAgICAgKGJhc2UgMTYpCQlTYW5taW5hLVNDSQotCQkJCTEzMDAwIFNvdXRoIE1lbW9yaWFsIFBhcmt3YXkKLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0zOSAgIChoZXgpCQlNZXJ0ZW4gR21iSCZDb0tHCi0wMDFBMzkgICAgIChiYXNlIDE2KQkJTWVydGVuIEdtYkgmQ29LRwotCQkJCUZyaXR6LUtvdHotU3RyLiA4Ci0JCQkJV2llaGwgTlJXIDUxNjc0Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS0zQSAgIChoZXgpCQlEb25nYWhlbGVjb21tCi0wMDFBM0EgICAgIChiYXNlIDE2KQkJRG9uZ2FoZWxlY29tbQotCQkJCTY3OC0zLEplaWwtcmksWWFuZ2dpLW15dW4sQ2hlb2luLWd1Ci0JCQkJWW9uZ2luLXNpIEd5ZW9uZ2dpLWRvIDQ0OS04MjEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtM0IgICAoaGV4KQkJRG9haCBFbGVjb20gSW5jLgotMDAxQTNCICAgICAoYmFzZSAxNikJCURvYWggRWxlY29tIEluYy4KLQkJCQk4dGggZmwuIENlbnR1cnkgUGxhemEsIDI3Ny00MAotCQkJCVN1bmdzdS0yR2EgM0RvbmcKLQkJCQlTZW91bCAgMTMzLTEyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS0zQyAgIChoZXgpCQlUZWNobm93YXZlIEx0ZC4KLTAwMUEzQyAgICAgKGJhc2UgMTYpCQlUZWNobm93YXZlIEx0ZC4KLQkJCQlTYWt1cmFpIEJsZGcuMUYsCi0JCQkJMS0zNS02IE5ha2FjaG8KLQkJCQlNdXNhc2hpbm8tc2hpIFRva3lvIDE4MC0wMDA2Ci0JCQkJSkFQQU4KLQotMDAtMUEtM0QgICAoaGV4KQkJQWppbiBWaXNpb24gQ28uLEx0ZAotMDAxQTNEICAgICAoYmFzZSAxNikJCUFqaW4gVmlzaW9uIENvLixMdGQKLQkJCQkxNDA0LCBNYXJpby1Ub3dlciwgMjIyLTEyCi0JCQkJR3Vyby1kb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtM0UgICAoaGV4KQkJRmFzdGVyIFRlY2hub2xvZ3kgTExDCi0wMDFBM0UgICAgIChiYXNlIDE2KQkJRmFzdGVyIFRlY2hub2xvZ3kgTExDCi0JCQkJMTgxMiBBdmVudWUgRAotCQkJCVN1aXRlIDIwMgotCQkJCUthdHkgVGV4YXMgNzc0OTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTNGICAgKGhleCkJCWludGVsYnJhcwotMDAxQTNGICAgICAoYmFzZSAxNikJCWludGVsYnJhcwotCQkJCXJvZG92aWEgYnIgMTAxIGttIDIxMAotCQkJCWludGVsYnJhcwotCQkJCXNhbyBqb3NlIHNjIDg4MTA0ODAwCi0JCQkJQlJBWklMCi0KLTAwLTFBLTQwICAgKGhleCkJCUEtRk9VUiBURUNIIENPLiwgTFRELgotMDAxQTQwICAgICAoYmFzZSAxNikJCUEtRk9VUiBURUNIIENPLiwgTFRELgotCQkJCTZGLCBOby4gMTA4LCBNaW4tQ2h1YW4gUmQuLAotCQkJCUhzaW4tVGllbiBUYWlwZWkgMjMxNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTQxICAgKGhleCkJCUlOT0NPVkEgQ28uLEx0ZAotMDAxQTQxICAgICAoYmFzZSAxNikJCUlOT0NPVkEgQ28uLEx0ZAotCQkJCTVGIFNFT1VMIEJELjczNi0xNwotCQkJCVllb2tzYW0tRG9uZywgS2FuZ25hbS1LdSBTRU9VTCAxMzUtOTI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTQyICAgKGhleCkJCVRlY2hjaXR5IFRlY2hub2xvZ3kgY28uLCBMdGQuCi0wMDFBNDIgICAgIChiYXNlIDE2KQkJVGVjaGNpdHkgVGVjaG5vbG9neSBjby4sIEx0ZC4KLQkJCQk0RiwgTm8uIDQsIEFsbGV5IDEsIFN6dSBXZWkgTGFuZSwgQ2h1bmcgQ2hlbmcgUmQuLAotCQkJCUhzaW4gVGVpbiBDaXR5IFRhaXBlaSBIc2llbiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTQzICAgKGhleCkJCUxvZ2ljYWwgTGluayBDb21tdW5pY2F0aW9ucwotMDAxQTQzICAgICAoYmFzZSAxNikJCUxvZ2ljYWwgTGluayBDb21tdW5pY2F0aW9ucwotCQkJCTE5MDkgQ2VudHJhbCBEcml2ZSBTdWl0ZSAyMDUKLQkJCQlCZWRmb3JkIFRYIDc2MDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS00NCAgIChoZXgpCQlKV1RyYWRpbmcgQ28uLCBMdGQKLTAwMUE0NCAgICAgKGJhc2UgMTYpCQlKV1RyYWRpbmcgQ28uLCBMdGQKLQkJCQkxNTkwIEt3YW55YW5nLWRvbmcsIERvbmdhbi1rdQotCQkJCUFobnlhbmcgS3l1bmdraSAtIGRvIDQzMS0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtNDUgICAoaGV4KQkJR04gTmV0Y29tIGFzCi0wMDFBNDUgICAgIChiYXNlIDE2KQkJR04gTmV0Y29tIGFzCi0JCQkJTWV0YWxidWVuIDY2Ci0JCQkJUC5PLkJveCAyMDEKLQkJCQlCYWxsZXJ1cCBTa292bHVuZGUgREsgLSAyNzUwCi0JCQkJREVOTUFSSwotCi0wMC0xQS00NiAgIChoZXgpCQlEaWdpdGFsIE11bHRpbWVkaWEgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAxQTQ2ICAgICAoYmFzZSAxNikJCURpZ2l0YWwgTXVsdGltZWRpYSBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJRG9vcmltIEJsZGcsIDNyZCBGbCwgMTY0LTIxIFBvaS1Eb25nLAotCQkJCVNlb3VsIEthbmduYW0tR3UgMTM1LTk2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS00NyAgIChoZXgpCQlBZ2FtaSBTeXN0ZW1zLCBJbmMuCi0wMDFBNDcgICAgIChiYXNlIDE2KQkJQWdhbWkgU3lzdGVtcywgSW5jLgotCQkJCTEyNjkgSW5uc2JydWNrIERyaXZlCi0JCQkJU3Vubnl2YWxlIENhbGlmb3JuaWEgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTQ4ICAgKGhleCkJCVRha2Fjb20gQ29ycG9yYXRpb24KLTAwMUE0OCAgICAgKGJhc2UgMTYpCQlUYWthY29tIENvcnBvcmF0aW9uCi0JCQkJMzA0LTcwOSBBemEtTmlzaGl5YW5tYQotCQkJCU9yb3NoaS1jaG8KLQkJCQlUb2tpLXNoaSBHaWZ1LWtlbiA1MDktNTIwMgotCQkJCUpBUEFOCi0KLTAwLTFBLTQ5ICAgKGhleCkJCU1pY3JvIFZpc2lvbiBDby4sTFRECi0wMDFBNDkgICAgIChiYXNlIDE2KQkJTWljcm8gVmlzaW9uIENvLixMVEQKLQkJCQkxLTktMTUKLQkJCQlLYW5kb3VqaSBNaW5hbWkKLQkJCQlOaWlnYXRhLWNpdHkgTmlpZ2F0YS1rZW4gOTUwLTA5ODYKLQkJCQlKQVBBTgotCi0wMC0xQS00QSAgIChoZXgpCQlRdW1yYW5ldCBJbmMuCi0wMDFBNEEgICAgIChiYXNlIDE2KQkJUXVtcmFuZXQgSW5jLgotCQkJCTUzMCBMYWtlc2lkZSBEcml2ZQotCQkJCVN1aXRlIDIyMAotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS00QiAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMUE0QiAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDYwMzA4Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNEMgICAoaGV4KQkJQ3Jvc3Nib3cgVGVjaG5vbG9neSwgSW5jCi0wMDFBNEMgICAgIChiYXNlIDE2KQkJQ3Jvc3Nib3cgVGVjaG5vbG9neSwgSW5jCi0JCQkJNDE0NSBOLiBGaXJzdCBTdHJlZXQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNEQgICAoaGV4KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLTAwMUE0RCAgICAgKGJhc2UgMTYpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCQotCQkJCVBpbi1KZW4gVGFveXVhbiAzMjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTRFICAgKGhleCkJCU5USSBBRyAvIExpbk1vdAotMDAxQTRFICAgICAoYmFzZSAxNikJCU5USSBBRyAvIExpbk1vdAotCQkJCUhhZXJkbGlzdHJhc3NlIDE1Ci0JCQkJU3ByZWl0ZW5iYWNoIEFHIDg5NTcKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xQS00RiAgIChoZXgpCQlBVk0gR21iSAotMDAxQTRGICAgICAoYmFzZSAxNikJCUFWTSBHbWJICi0JCQkJQWx0LU1vYWJpdCA5NQotCQkJCUJlcmxpbiAgMTA1NTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLTUwICAgKGhleCkJCVBoZWVOZXQgVGVjaG5vbG9neSBDb3JwLgotMDAxQTUwICAgICAoYmFzZSAxNikJCVBoZWVOZXQgVGVjaG5vbG9neSBDb3JwLgotCQkJCVJtLiAzLCAyMEYsIE5vLiA3OSwgU2VjLiAxIEhzaW4gVGFpIFd1IFJkLgotCQkJCUhzaS1DaGloIFRhaXBlaSAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTUxICAgKGhleCkJCUFsZnJlZCBNYW5uIEZvdW5kYXRpb24KLTAwMUE1MSAgICAgKGJhc2UgMTYpCQlBbGZyZWQgTWFubiBGb3VuZGF0aW9uCi0JCQkJUC5PLiBCb3ggOTA1Ci0JCQkJU2FudGEgQ2xhcml0YSBDQSA5MTM4MC05MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS01MiAgIChoZXgpCQlNZXNobGlueCBXaXJlbGVzcyBJbmMuCi0wMDFBNTIgICAgIChiYXNlIDE2KQkJTWVzaGxpbnggV2lyZWxlc3MgSW5jLgotCQkJCTE0MTAgRyBBdmVudWUsIFN1aXRlIFQKLQkJCQlQbGFubyBUZXhhcyA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNTMgICAoaGV4KQkJWnlsYXlhCi0wMDFBNTMgICAgIChiYXNlIDE2KQkJWnlsYXlhCi0JCQkJNDQ0IE4uIEZyZWRlcmljayBBdmUuCi0JCQkJU3VpdGUgMzE4Ci0JCQkJR2FpdGhlcnNidXJnIE1EIDIwODc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS01NCAgIChoZXgpCQlIaXAgU2hpbmcgRWxlY3Ryb25pY3MgTHRkLgotMDAxQTU0ICAgICAoYmFzZSAxNikJCUhpcCBTaGluZyBFbGVjdHJvbmljcyBMdGQuCi0JCQkJVW5pdCAxLzIvMywgMjAvRiwgTmV3IFRyZWFzdXJlIENlbnRlcgotCQkJCTEwIE5nIEZvbmcgU3RyZWV0LCBTYW4gUG8gS29uZywgS293bG9vbgotCQkJCUhPTkcgS09ORwotCi0wMC0xQS01NSAgIChoZXgpCQlBQ0EtRGlnaXRhbCBDb3Jwb3JhdGlvbgotMDAxQTU1ICAgICAoYmFzZSAxNikJCUFDQS1EaWdpdGFsIENvcnBvcmF0aW9uCi0JCQkJMTcgRiwgTm8uIDg2Ni03LCBDaHVuZyBDaGVuZyBSZC4sCi0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgQ291bnR5IDIzNTg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS01NiAgIChoZXgpCQlWaWV3VGVsIENvLC4gTHRkLgotMDAxQTU2ICAgICAoYmFzZSAxNikJCVZpZXdUZWwgQ28sLiBMdGQuCi0JCQkJI0ItNTAyLEJ1bmRhbmcgVGVjaG5vIFBhcmsgMTQ4Ci0JCQkJWWFUYXAtRG9uZwotCQkJCUJ1bkRhbmctS3UsIFNlb25nTmFtLVNpIEd5ZW9uZ0dpLURvIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtNTcgICAoaGV4KQkJTWF0cml4IERlc2lnbiBHcm91cCwgTExDCi0wMDFBNTcgICAgIChiYXNlIDE2KQkJTWF0cml4IERlc2lnbiBHcm91cCwgTExDCi0JCQkJNTc0MSBQcm9zcGVjdCBEci4KLQkJCQlOZXdidXJnaCBJTiA0NzYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNTggICAoaGV4KQkJQ0NWIERldXRzY2hsYW5kIEdtYkggLSBDZWxlY3Ryb25pYyBlSGVhbHRoIERpdi4KLTAwMUE1OCAgICAgKGJhc2UgMTYpCQlDQ1YgRGV1dHNjaGxhbmQgR21iSCAtIENlbGVjdHJvbmljIGVIZWFsdGggRGl2LgotCQkJCU5vcmRsaWNodHN0cmFzc2UgNjMKLQkJCQlCZXJsaW4gIEQtMTM0MDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLTU5ICAgKGhleCkJCUlyY29uYQotMDAxQTU5ICAgICAoYmFzZSAxNikJCUlyY29uYQotCQkJCVVuaXQgNEItMSwgQ29ycG9yYXRlIFBhcmsKLQkJCQlCbGFuY2hhcmRzdG93biBEdWJsaW4gMTUKLQkJCQlJUkVMQU5ECi0KLTAwLTFBLTVBICAgKGhleCkJCUtvcmVhIEVsZWN0cmljIFBvd2VyIERhdGEgTmV0d29yayAgKEtETikgQ28uLCBMdGQKLTAwMUE1QSAgICAgKGJhc2UgMTYpCQlLb3JlYSBFbGVjdHJpYyBQb3dlciBEYXRhIE5ldHdvcmsgIChLRE4pIENvLiwgTHRkCi0JCQkJNjY1IE5BRVNPTi1ET05HLAotCQkJCUdZRU9OR0dJLURPIFVJV0FORy1TSSwgTkFFU09OLURPTkcgNDM3LTA4MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS01QiAgIChoZXgpCQlOZXRDYXJlIFNlcnZpY2UgQ28uLCBMdGQuCi0wMDFBNUIgICAgIChiYXNlIDE2KQkJTmV0Q2FyZSBTZXJ2aWNlIENvLiwgTHRkLgotCQkJCTUtMTMtMTYgU2hpbWl6dSwgQXNhaGkta3UKLQkJCQlPc2FrYSAgNTM1LTAwMjEKLQkJCQlKQVBBTgotCi0wMC0xQS01QyAgIChoZXgpCQlFdWNobmVyIEdtYkgrQ28uIEtHCi0wMDFBNUMgICAgIChiYXNlIDE2KQkJRXVjaG5lciBHbWJIK0NvLiBLRwotCQkJCUtvaGxoYW1tZXJzdHIuIDE2Ci0JCQkJTGVpbmZlbGRlbi1FY2h0ZXJkaW5nZW4gQlcgNzA3NzEKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLTVEICAgKGhleCkJCU1vYmlubm92YSBDb3JwLgotMDAxQTVEICAgICAoYmFzZSAxNikJCU1vYmlubm92YSBDb3JwLgotCQkJCTExRiwgODQ1LCBDSFVORyBTSEFOIFJECi0JCQkJVEFPWVVBTiAgMzMwNTkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTVFICAgKGhleCkJCVRoaW5jb20gVGVjaG5vbG9neSBDby4sTHRkCi0wMDFBNUUgICAgIChiYXNlIDE2KQkJVGhpbmNvbSBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkxN0YtMywgTm8uMzk4LCBIdWFuYmVpIFJkLiwKLQkJCQlaaG9uZ2xpIENpdHkgVGFveXVhbiBDb250cnkgMzIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS01RiAgIChoZXgpCQlLaXRXb3Jrcy5maSBMdGQuCi0wMDFBNUYgICAgIChiYXNlIDE2KQkJS2l0V29ya3MuZmkgTHRkLgotCQkJCVNub3dwb2xpcwotCQkJCVZ1b2thdHRpIEthaW51dSA4ODYxMAotCQkJCUZJTkxBTkQKLQotMDAtMUEtNjAgICAoaGV4KQkJV2F2ZSBFbGVjdHJvbmljcyBDby4sTHRkLgotMDAxQTYwICAgICAoYmFzZSAxNikJCVdhdmUgRWxlY3Ryb25pY3MgQ28uLEx0ZC4KLQkJCQkzdGggRmwuLERhZVNhbiBQbGF6YSBCL0QsR3V1bi1Eb25nLCAxMi0xLEd3b25zZW9uLUd1Ci0JCQkJU3V3b24tc2kgS3llb25nZ2ktRG8gNDQxLTgxNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS02MSAgIChoZXgpCQlQYWNTdGFyIENvcnAuCi0wMDFBNjEgICAgIChiYXNlIDE2KQkJUGFjU3RhciBDb3JwLgotCQkJCTE1MDU1IFNXIFNlcXVvaWEgUGt3eSwgU3VpdGUgMTAwCi0JCQkJUG9ydGxhbmQgT1IgOTcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTYyICAgKGhleCkJCURhdGEgUm9ib3RpY3MsIEluY29ycG9yYXRlZAotMDAxQTYyICAgICAoYmFzZSAxNikJCURhdGEgUm9ib3RpY3MsIEluY29ycG9yYXRlZAotCQkJCTE4ODEgTGFuZGluZ3MgRHIKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS02MyAgIChoZXgpCQlFbHN0ZXIgU29sdXRpb25zLCBMTEMsCi0wMDFBNjMgICAgIChiYXNlIDE2KQkJRWxzdGVyIFNvbHV0aW9ucywgTExDLAotCQkJCTIwOCBTb3V0aCBSb2dlcnMgTGFuZQotCQkJCVJhbGVpZ2ggTkMgMjc2MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTY0ICAgKGhleCkJCUlCTSBDb3JwCi0wMDFBNjQgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTY1ICAgKGhleCkJCVNlbHV4aXQKLTAwMUE2NSAgICAgKGJhc2UgMTYpCQlTZWx1eGl0Ci0JCQkJTnloYXZuc2dhZGUgOSwgMi5zYWwKLQkJCQlBYWxib3JnIE5vcmQgSnlsbGFuZCA5MDAwCi0JCQkJREVOTUFSSwotCi0wMC0xQS02NiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMUE2NiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS02NyAgIChoZXgpCQlJbmZpbml0ZSBRTCBTZG4gQmhkCi0wMDFBNjcgICAgIChiYXNlIDE2KQkJSW5maW5pdGUgUUwgU2RuIEJoZAotCQkJCUcuMDIsIEJsb2NrIEEsIERhdGFyYW4gSGFtb2RhbAotCQkJCU5vLjQsIEphbGFuIDEzLzQsIFNlY3QuIDEzLAotCQkJCVBldGFsaW5nIEpheWEgU2VsYW5nb3IgRGFydWwgRWhzYW4gNDYzMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xQS02OCAgIChoZXgpCQlXZWx0ZWMgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLTAwMUE2OCAgICAgKGJhc2UgMTYpCQlXZWx0ZWMgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQkyRiwgTm8uIDM1MSBZdW5nIEhvIFJkLgotCQkJCVRhaXBlaSBIc2llbgotCQkJCUNodW5nIEhvICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTY5ICAgKGhleCkJCVd1aGFuIFlhbmd0emUgT3B0aWNhbCBUZWNobm9sb2d5IENPLixMdGQuCi0wMDFBNjkgICAgIChiYXNlIDE2KQkJV3VoYW4gWWFuZ3R6ZSBPcHRpY2FsIFRlY2hub2xvZ3kgQ08uLEx0ZC4KLQkJCQk0IyxHdWFuc2hhbiAyIFJvYWQKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzMKLQkJCQlDSElOQQotCi0wMC0xQS02QSAgIChoZXgpCQlUcmFuemFzLCBJbmMuCi0wMDFBNkEgICAgIChiYXNlIDE2KQkJVHJhbnphcywgSW5jLgotCQkJCVF1ZWVucyB0b3dlciBDMTcKLQkJCQlNaW5hdG9taXJhaSAyLTMtNSBOaXNoaS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhLWtlbiAyMjAtNjIxNwotCQkJCUpBUEFOCi0KLTAwLTFBLTZCICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotMDAxQTZCICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTEFORSAzNTEsU2VjLjEsIFRBSVBJTkcgUkQuCi0JCQkJVFNBT1RVRU4sCi0JCQkJTkFOVE9VICA1NDI2MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNkMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQTZDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQTZEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNkUgICAoaGV4KQkJSW1wcm8gVGVjaG5vbG9naWVzCi0wMDFBNkUgICAgIChiYXNlIDE2KQkJSW1wcm8gVGVjaG5vbG9naWVzCi0JCQkJNDdCIEdpbGxpdHMgUmQKLQkJCQlQaW5ldG93biBLd2FadWx1LU5hdGFsIDM2MTAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMUEtNkYgICAoaGV4KQkJTUkuVEVMIHMuci5sLgotMDAxQTZGICAgICAoYmFzZSAxNikJCU1JLlRFTCBzLnIubC4KLQkJCQlWSUEgR1VJRE8gUk9TU0EsIDIyCi0JCQkJQ09STkFURSBEJ0FEREEgTUlMQU5PIDIwMDQwCi0JCQkJSVRBTFkKLQotMDAtMUEtNzAgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi0wMDFBNzAgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS03MSAgIChoZXgpCQlEaW9zdGVjaCBDby4sIEx0ZC4KLTAwMUE3MSAgICAgKGJhc2UgMTYpCQlEaW9zdGVjaCBDby4sIEx0ZC4KLQkJCQkxNTEtMjEsIEJ1ay1yaSwgTmFtc2EtbXllb24sCi0JCQkJQ2hlb2luLWd1Ci0JCQkJWW9uZ2luLWNpdHkgR3llb25nZ2ktZG8gNDQ5IDg4NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS03MiAgIChoZXgpCQlNb3NhcnQgU2VtaWNvbmR1Y3RvciBDb3JwLgotMDAxQTcyICAgICAoYmFzZSAxNikJCU1vc2FydCBTZW1pY29uZHVjdG9yIENvcnAuCi0JCQkJMjNGLiwgTm8uMzMsIFNlYy4xLAotCQkJCU1pbiBTaGVuZyBSZC4sIFBhbmNoaWFvIENpdHkKLQkJCQlUYWlwZWkgIDIyMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNzMgICAoaGV4KQkJR2VtdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFBNzMgICAgIChiYXNlIDE2KQkJR2VtdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDEgSmVuIEFpIFJvYWQsIEhzaW5jaHUgSW5kdXN0cmlhbCBQYXJrLCBIdWtvdSwKLQkJCQlIc2luY2h1ICAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTc0ICAgKGhleCkJCVByb2NhcmUgSW50ZXJuYXRpb25hbCBDbwotMDAxQTc0ICAgICAoYmFzZSAxNikJCVByb2NhcmUgSW50ZXJuYXRpb25hbCBDbwotCQkJCTVGLCBOby44OCwgSmhvdXppaCBTdHJlZXQsIE5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTc1ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDFBNzUgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa2FuZSAyMjE4OAotCQkJCVNXRURFTgotCi0wMC0xQS03NiAgIChoZXgpCQlTRFQgaW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTFRELgotMDAxQTc2ICAgICAoYmFzZSAxNikJCVNEVCBpbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMVEQuCi0JCQkJU2FtaWwgQi9CIDJGLCA1LTYzIEh5b2NoYW5nLWRvbmcKLQkJCQlZb25nc2FuLUt1LAotCQkJCVNlb3VsICAxNDAtODk2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTc3ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxQTc3ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTYwMCBOLiBId3kgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTc4ICAgKGhleCkJCXVidG9zCi0wMDFBNzggICAgIChiYXNlIDE2KQkJdWJ0b3MKLQkJCQlSbi4yMTMsIFdvb2xpbSBMaW9uPz9zIFZhbGxleSA/PywgIzY4MAotCQkJCXNlb3VsIEdhc2FuLWRvbmcgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS03OSAgIChoZXgpCQlURUxFQ09NVU5JQ0FUSU9OIFRFQ0hOT0xPR0lFUyBMVEQuCi0wMDFBNzkgICAgIChiYXNlIDE2KQkJVEVMRUNPTVVOSUNBVElPTiBURUNITk9MT0dJRVMgTFRELgotCQkJCTREIFpIVUtPVkEgQkxWLgotCQkJCU9ERVNTQSAgNjUxMjEKLQkJCQlVS1JBSU5FCi0KLTAwLTFBLTdBICAgKGhleCkJCUxpc21vcmUgSW5zdHJ1bWVudHMgTGltaXRlZAotMDAxQTdBICAgICAoYmFzZSAxNikJCUxpc21vcmUgSW5zdHJ1bWVudHMgTGltaXRlZAotCQkJCVVuaXQgMiBUcmlzdGFyIENlbnRyZSwgU3RhciBSb2FkCi0JCQkJUGFydHJpZGdlIEdyZWVuCi0JCQkJSG9yc2hhbSBXZXN0IFN1c3NleCBSSDEzIDhSQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFBLTdCICAgKGhleCkJCVRlbGVjbywgSW5jLgotMDAxQTdCICAgICAoYmFzZSAxNikJCVRlbGVjbywgSW5jLgotCQkJCTQzMCBXb29kcnVmZiBSZC4KLQkJCQlTdWl0ZSAzMDAKLQkJCQlHcmVlbnZpbGxlIFNDIDI5NjA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS03QyAgIChoZXgpCQlIaXJzY2htYW5uIE11bHRpbWVkaWEgQi5WLgotMDAxQTdDICAgICAoYmFzZSAxNikJCUhpcnNjaG1hbm4gTXVsdGltZWRpYSBCLlYuCi0JCQkJUGFtcHVzbGFhbiAxNzAKLQkJCQlXZWVzcCBOb29yZC1Ib2xsYW5kIDEzODIgSlMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xQS03RCAgIChoZXgpCQljeWJlci1ibHVlKEhLKUx0ZAotMDAxQTdEICAgICAoYmFzZSAxNikJCWN5YmVyLWJsdWUoSEspTHRkCi0JCQkJUm9vbSAxNDA4IGJsb2NrIEMgc3RhcnMgUGxhemEgSG9uZ0xpUm9hZCxGdVRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDI4Ci0JCQkJQ0hJTkEKLQotMDAtMUEtN0UgICAoaGV4KQkJTE4gU3JpdGhhaSBDb21tIEx0ZC4KLTAwMUE3RSAgICAgKGJhc2UgMTYpCQlMTiBTcml0aGFpIENvbW0gTHRkLgotCQkJCTcxLzEyIE0uNSwgQmFuZ25hLVRyYWQgUmQsIEtNLjUyLCBUaGFrYW0KLQkJCQlCYW5ncGFrb25nIENoYWNob2VuZ3NhbyAyNDEzMAotCQkJCVRIQUlMQU5ECi0KLTAwLTFBLTdGICAgKGhleCkJCUdDSSBTY2llbmNlJlRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMUE3RiAgICAgKGJhc2UgMTYpCQlHQ0kgU2NpZW5jZSZUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJTm8uMzgxLCBYaW5nYW5nemhvbmcgUm9hZCwKLQkJCQlndWFuZ3pob3UgZ3Vhbmdkb25nIDUxMDMxMAotCQkJCUNISU5BCi0KLTAwLTFBLTgwICAgKGhleCkJCVNvbnkgQ29ycG9yYXRpb24KLTAwMUE4MCAgICAgKGJhc2UgMTYpCQlTb255IENvcnBvcmF0aW9uCi0JCQkJR290ZW55YW1hIFRlYyA1LTEtMgotCQkJCUtpdGFzaGluYWdhd2EKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMDEKLQkJCQlKQVBBTgotCi0wMC0xQS04MSAgIChoZXgpCQlaZWxheAotMDAxQTgxICAgICAoYmFzZSAxNikJCVplbGF4Ci0JCQkJMm5kIGJ1aWQuLCAxQiwgWmF2b2Rza2F5YSBzdC4sCi0JCQkJTW9zY293ICAxMjQ2ODEKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUEtODIgICAoaGV4KQkJUFJPQkEgQnVpbGRpbmcgQXV0b21hdGlvbiBDby4sTFRECi0wMDFBODIgICAgIChiYXNlIDE2KQkJUFJPQkEgQnVpbGRpbmcgQXV0b21hdGlvbiBDby4sTFRECi0JCQkJUGVuZ2h1YW4gQnVpbGRpbmcgNTAxLCBTaGFuZ2RpIEVhc3QgUm9hZCAjMSwgSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0xQS04MyAgIChoZXgpCQlQZWdhc3VzIFRlY2hub2xvZ2llcyBJbmMuCi0wMDFBODMgICAgIChiYXNlIDE2KQkJUGVnYXN1cyBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTEwOCBQYXdub29rIEZhcm0gUmQuCi0JCQkJTGVub2lyIENpdHkgVE4gMzc3NzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTg0ICAgKGhleCkJCVYgT25lIE11bHRpbWVkaWEgUHRlIEx0ZAotMDAxQTg0ICAgICAoYmFzZSAxNikJCVYgT25lIE11bHRpbWVkaWEgUHRlIEx0ZAotCQkJCUJsayA1NCwgS2FsbGFuZyBCYWhydQotCQkJCSMwMi0wNAotCQkJCTMzOTMzNgotCQkJCVNJTkdBUE9SRQotCi0wMC0xQS04NSAgIChoZXgpCQlOViBNaWNoZWwgVmFuIGRlIFdpZWxlCi0wMDFBODUgICAgIChiYXNlIDE2KQkJTlYgTWljaGVsIFZhbiBkZSBXaWVsZQotCQkJCU0uIFZhbmRld2llbGVzdHJhYXQgNwotCQkJCU1hcmtlIFdlc3QtVmxhYW5kZXJlbiA4NTEwCi0JCQkJQkVMR0lVTQotCi0wMC0xQS04NiAgIChoZXgpCQlBZHZhbmNlZElPIFN5c3RlbXMgSW5jCi0wMDFBODYgICAgIChiYXNlIDE2KQkJQWR2YW5jZWRJTyBTeXN0ZW1zIEluYwotCQkJCTU5NSBIb3dlIFN0cmVldCwgU3VpdGUgNTAyCi0JCQkJVmFuY291dmVyIEJDIFY2QyAyVDUKLQkJCQlDQU5BREEKLQotMDAtMUEtODcgICAoaGV4KQkJQ2FuaG9sZCBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTAwMUE4NyAgICAgKGJhc2UgMTYpCQlDYW5ob2xkIEludGVybmF0aW9uYWwgTGltaXRlZAotCQkJCUZsYXQgNCwgMTMvRi4sIEJsb2NrIDQsIFRhaSBQaW5nIEluZHVzdHJpYWwgQ2VudHJlCi0JCQkJNTFBIFRpbmcgS29rIFJvYWQsIFRhaSBQbywgTi5ULiwKLQkJCQkwMDg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0xQS04OCAgIChoZXgpCQlWZW5lcmd5LENvLEx0ZAotMDAxQTg4ICAgICAoYmFzZSAxNikJCVZlbmVyZ3ksQ28sTHRkCi0JCQkJV2VzdCA2dGggRmxvb3IsTS04IEJ1aWxkaW5nIE1hcXVlbGluZyBab25lLAotCQkJCVNoZW56aGVuIEhpZ2gtVGVjaCBQYXJrLCBOYW5zaGFuIGRpc3RyaWN0LAotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi0wMC0xQS04OSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQTg5ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQS04QSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxQThBICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pLUNpdHkgR3llb25nLUJ1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLThCICAgKGhleCkJCUNIVU5JTCBFTEVDVFJJQyBJTkQuLCBDTy4KLTAwMUE4QiAgICAgKGJhc2UgMTYpCQlDSFVOSUwgRUxFQ1RSSUMgSU5ELiwgQ08uCi0JCQkJMzA4LEJ5dWNrU2FuIERpZ2l0YWwgVmFsbGV5LDEzMi03LEdhbWplb24tRG9uZyxTYXNhbmctR3UKLQkJCQlCdXNhbiBHeWVvbmdTYW5nTmFtRG8gNjE3LTgwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS04QyAgIChoZXgpCQlBc3Rhcm8gQUcKLTAwMUE4QyAgICAgKGJhc2UgMTYpCQlBc3Rhcm8gQUcKLQkJCQlBbWFsaWVuYmFkc3RyLiAzNgotCQkJCUJhdSAzM2EKLQkJCQlLYXJsc3J1aGUgQlcgNzYyMjcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLThEICAgKGhleCkJCUFWRUNTIEJlcmdlbiBHbWJICi0wMDFBOEQgICAgIChiYXNlIDE2KQkJQVZFQ1MgQmVyZ2VuIEdtYkgKLQkJCQlCaWxscm90aHN0ci4gMTEgYQotCQkJCUJlcmdlbiBhdWYgUnVnZW4gTS9WIDE4NTI4Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS04RSAgIChoZXgpCQkzV2F5IE5ldHdvcmtzIEx0ZAotMDAxQThFICAgICAoYmFzZSAxNikJCTNXYXkgTmV0d29ya3MgTHRkCi0JCQkJNzIwMCBDYW1icmlkZ2UgUmVzZWFyY2ggUGFyawotCQkJCVdhdGVyYmVhY2gKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0I1IDlUTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFBLThGICAgKGhleCkJCU5vcnRlbAotMDAxQThGICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xQS05MCAgIChoZXgpCQlUcm9waWNvIFNpc3RlbWFzIGUgVGVsZWNvbXVuaWNhY29lcyBkYSBBbWF6b25pYSBMVERBLgotMDAxQTkwICAgICAoYmFzZSAxNikJCVRyb3BpY28gU2lzdGVtYXMgZSBUZWxlY29tdW5pY2Fjb2VzIGRhIEFtYXpvbmlhIExUREEuCi0JCQkJUm9kLiAgQ2FtcGluYXMtTW9naS1NaXJpbSAoU1AgMzQwKSAgS20gMTE4LDUKLQkJCQlQb2xpcyBkZSBUZWNub2xvZ2lhIChDUHFEKS1QcmVkaW8gOUEKLQkJCQlDYW1waW5hcyBTYW8gUGF1bG8gMTMuMDg2LTkwMgotCQkJCUJSQVpJTAotCi0wMC0xQS05MSAgIChoZXgpCQlGdXNpb25EeW5hbWljIEx0ZC4KLTAwMUE5MSAgICAgKGJhc2UgMTYpCQlGdXNpb25EeW5hbWljIEx0ZC4KLQkJCQkxIEIuUy5SLiB0b3dlcnMsIDQtdGggZmxvb3IKLQkJCQkyIEJlbiBHdXJpb24gc3RyZWV0Ci0JCQkJUmFtYXQgR2FuICA1MjU3MwotCQkJCUlTUkFFTAotCi0wMC0xQS05MiAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTAwMUE5MiAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91Ci0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTkzICAgKGhleCkJCUVSQ08gTGV1Y2h0ZW4gR21iSAotMDAxQTkzICAgICAoYmFzZSAxNikJCUVSQ08gTGV1Y2h0ZW4gR21iSAotCQkJCUJyb2NraGF1c2VyIFdlZyA4MC04MgotCQkJCUx1ZGVuc2NoZWlkIE5SVyBELTU4NTA3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS05NCAgIChoZXgpCQlWb3Ryb25pYyBHbWJICi0wMDFBOTQgICAgIChiYXNlIDE2KQkJVm90cm9uaWMgR21iSAotCQkJCVNhYXJicnVlY2tlciBTdHIuIDgKLQkJCQlTdC4gSW5nYmVydCBTYWFybGFuZCA2NjM4NgotCQkJCUdFUk1BTlkKLQotMDAtMUEtOTUgICAoaGV4KQkJSGlzZW5zZSBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgVGVjaG5vbGlneSBDby4sTHRkLgotMDAxQTk1ICAgICAoYmFzZSAxNikJCUhpc2Vuc2UgTW9iaWxlIENvbW11bmljYXRpb25zIFRlY2hub2xpZ3kgQ28uLEx0ZC4KLQkJCQkxMSxKaWFuZ1hpIFJvYWQsCi0JCQkJUWluZ0RhbyBTaGFuRG9uZyAyNjYwNzEKLQkJCQlDSElOQQotCi0wMC0xQS05NiAgIChoZXgpCQlFQ0xFUiBTLkEuCi0wMDFBOTYgICAgIChiYXNlIDE2KQkJRUNMRVIgUy5BLgotCQkJCU1vdG9ycyAxNjYtMTY4Ci0JCQkJQmFyY2Vsb25hICAwODAzOAotCQkJCVNQQUlOCi0KLTAwLTFBLTk3ICAgKGhleCkJCWZpdGl2aXNpb24gdGVjaG5vbG9neSBJbmMuCi0wMDFBOTcgICAgIChiYXNlIDE2KQkJZml0aXZpc2lvbiB0ZWNobm9sb2d5IEluYy4KLQkJCQk4RiwgTm8uIDM1NiwgU2VjLiAxLCBOZWlodSBSZAotCQkJCU5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTk4ICAgKGhleCkJCUFzb3RlbCBDb21tdW5pY2F0aW9uIExpbWl0ZWQgVGFpd2FuIEJyYW5jaAotMDAxQTk4ICAgICAoYmFzZSAxNikJCUFzb3RlbCBDb21tdW5pY2F0aW9uIExpbWl0ZWQgVGFpd2FuIEJyYW5jaAotCQkJCTNHMTcsIE5vNSwgSHNpbiBZaSBSb2FkLCBTZWMuIDUKLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtOTkgICAoaGV4KQkJU21hcnR5IChIWikgSW5mb3JtYXRpb24gRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTAwMUE5OSAgICAgKGJhc2UgMTYpCQlTbWFydHkgKEhaKSBJbmZvcm1hdGlvbiBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCVlvbmdodWEgSW5kdXN0cmlhbCBEaXN0cmljdCxIdWlzaGVuIFJvYWQsWmhlbmxvbmcgVG93bgotCQkJCUh1aVpob3UgR3VhbmdEb25nIDUxNjIyNwotCQkJCUNISU5BCi0KLTAwLTFBLTlBICAgKGhleCkJCVNreXdvcnRoIERpZ2l0YWwgdGVjaG5vbG9neShzaGVuemhlbiljby5sdGQuCi0wMDFBOUEgICAgIChiYXNlIDE2KQkJU2t5d29ydGggRGlnaXRhbCB0ZWNobm9sb2d5KHNoZW56aGVuKWNvLmx0ZC4KLQkJCQkxM0YsQmxvY2sgQSxTa3l3b3J0aCBCdWlsZGluZyxHYW94aW4gQVZFLjEuUywKLQkJCQlOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xQS05QiAgIChoZXgpCQlBREVDICYgUGFydGVyIEFHCi0wMDFBOUIgICAgIChiYXNlIDE2KQkJQURFQyAmIFBhcnRlciBBRwotCQkJCVN0YWxkZW5iYWNoc3RyYXNzZSAzMAotCQkJCVBmYWVmZmlrb24gWkggODgwOAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFBLTlDICAgKGhleCkJCVJpZ2h0SGFuZCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMUE5QyAgICAgKGJhc2UgMTYpCQlSaWdodEhhbmQgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNjU0NSBOIE9sbXN0ZWQgQXZlbnVlCi0JCQkJQ2hpY2FnbyBJTCA2MDYzMS0xNDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS05RCAgIChoZXgpCQlTa2lwcGVyIFdpcmVsZXNzLCBJbmMuCi0wMDFBOUQgICAgIChiYXNlIDE2KQkJU2tpcHBlciBXaXJlbGVzcywgSW5jLgotCQkJCVNoaW5qdWt1LVN1bWl0b21vIEJsZGcuIDIwRgotCQkJCTItNi0xIE5pc2hpLVNoaW5qdWt1Ci0JCQkJU2hpbmp1a3UgVG9reW8gMTYzLTAyMjAKLQkJCQlKQVBBTgotCi0wMC0xQS05RSAgIChoZXgpCQlJQ09OIERpZ2l0YWwgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0wMDFBOUUgICAgIChiYXNlIDE2KQkJSUNPTiBEaWdpdGFsIEludGVybmF0aW9uYWwgTGltaXRlZAotCQkJCVN1aXRlMjIwOSwgMjIvRi4sIFNreUxpbmUgVG93ZXIsCi0JCQkJMzkgV2FuZyBLd29uZyBSb2FkLCBLb3dsb29uIEJheQotCQkJCUNISU5BCi0KLTAwLTFBLTlGICAgKGhleCkJCUEtTGluayBFdXJvcGUgTHRkCi0wMDFBOUYgICAgIChiYXNlIDE2KQkJQS1MaW5rIEV1cm9wZSBMdGQKLQkJCQlQLk8uQm94IDMKLQkJCQlFc3BvbyAgRkktMDI5NDEKLQkJCQlGSU5MQU5ECi0KLTAwLTFBLUEwICAgKGhleCkJCURlbGwgSW5jCi0wMDFBQTAgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksICBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1BMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFBQTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1BMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFBQTIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1BMyAgIChoZXgpCQlERUxPUk1FCi0wMDFBQTMgICAgIChiYXNlIDE2KQkJREVMT1JNRQotCQkJCTIgREVMT1JNRSBEUklWRQotCQkJCVlBUk1PVVRIIE1BSU5FIDA0MDk2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1BNCAgIChoZXgpCQlGdXR1cmUgVW5pdmVyc2l0eS1IYWtvZGF0ZQotMDAxQUE0ICAgICAoYmFzZSAxNikJCUZ1dHVyZSBVbml2ZXJzaXR5LUhha29kYXRlCi0JCQkJMTE2LTIgS2FtZWRhbmFrYW5vLWNobwotCQkJCUhha29kYXRlIEhva2thaWRvIDA0MS04NjU1Ci0JCQkJSkFQQU4KLQotMDAtMUEtQTUgICAoaGV4KQkJQlJOIFBob2VuaXgKLTAwMUFBNSAgICAgKGJhc2UgMTYpCQlCUk4gUGhvZW5peAotCQkJCTI1MDAgQXVndXN0aW5lIERyaXZlLCBTdWl0ZSAyMDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQTYgICAoaGV4KQkJVGVsZWZ1bmtlbiBSYWRpbyBDb21tdW5pY2F0aW9uIFN5c3RlbXMgR21iSCAmQ08uS0cKLTAwMUFBNiAgICAgKGJhc2UgMTYpCQlUZWxlZnVua2VuIFJhZGlvIENvbW11bmljYXRpb24gU3lzdGVtcyBHbWJIICZDTy5LRwotCQkJCUViZXJoYXJkLUZpbmNraC1TdHJhc3NlIDU1Ci0JCQkJVWxtIEJhZGVuLVd1cnR0ZW1iZXJnIDg5MDc1Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS1BNyAgIChoZXgpCQlUb3JpYW4gV2lyZWxlc3MKLTAwMUFBNyAgICAgKGJhc2UgMTYpCQlUb3JpYW4gV2lyZWxlc3MKLQkJCQkyMDQgSm9obnN0b24gU3RyZWV0Ci0JCQkJQ29sbGluZ3dvb2QgVmljdG9yaWEgMzA2NgotCQkJCUFVU1RSQUxJQQotCi0wMC0xQS1BOCAgIChoZXgpCQlNYW1peWEgRGlnaXRhbCBJbWFnaW5nIENvLiwgTHRkLgotMDAxQUE4ICAgICAoYmFzZSAxNikJCU1hbWl5YSBEaWdpdGFsIEltYWdpbmcgQ28uLCBMdGQuCi0JCQkJMi0xNC0yMiBVZW5vCi0JCQkJVGFpdG8ta3UgVG9reW8gMTEwLTAwMDUKLQkJCQlKQVBBTgotCi0wMC0xQS1BOSAgIChoZXgpCQlGVUpJQU4gU1RBUi1ORVQgQ09NTVVOSUNBVElPTiBDTy4sTFRECi0wMDFBQTkgICAgIChiYXNlIDE2KQkJRlVKSUFOIFNUQVItTkVUIENPTU1VTklDQVRJT04gQ08uLExURAotCQkJCTE5LTIyIyBCdWlsZGluZywgU3Rhci1uZXQgU2NpZW5jZSBQbGF6YSwgSnV5dWFuemhvdSwKLQkJCQk2MTggSmluc2hhbiBSb2FkLAotCQkJCUZVWkhPVSBGVUpJQU4gMzUwMDAyCi0JCQkJQ0hJTkEKLQotMDAtMUEtQUEgICAoaGV4KQkJQW5hbG9naWMgQ29ycC4KLTAwMUFBQSAgICAgKGJhc2UgMTYpCQlBbmFsb2dpYyBDb3JwLgotCQkJCTggQ2VudGVubmlhbCBEcml2ZQotCQkJCVBlYWJvZHkgTUEgMDE5NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUFCICAgKGhleCkJCWVXaW5ncyBzLnIubC4KLTAwMUFBQiAgICAgKGJhc2UgMTYpCQllV2luZ3Mgcy5yLmwuCi0JCQkJdmlhIFMuIFF1YXNpbW9kbyA0NgotCQkJCUNhc3RlbCBNYWdnaW9yZSBCb2xvZ25hIDQwMDEzCi0JCQkJSVRBTFkKLQotMDAtMUEtQUMgICAoaGV4KQkJQ29yZWxhdHVzIEFCCi0wMDFBQUMgICAgIChiYXNlIDE2KQkJQ29yZWxhdHVzIEFCCi0JCQkJVGVnbmVyZ2F0YW4gMzcKLQkJCQlTdG9ja2hvbG0gIDExMTYxCi0JCQkJU1dFREVOCi0KLTAwLTFBLUFEICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDFBQUQgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1BRSAgIChoZXgpCQlTYXZhbnQgU3lzdGVtcyBMTEMKLTAwMUFBRSAgICAgKGJhc2UgMTYpCQlTYXZhbnQgU3lzdGVtcyBMTEMKLQkJCQk3NzBBIE1haW4gU3QKLQkJCQlPc3RlcnZpbGxlIE1hc3NhY2h1c2V0dHMgMDI2NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUFGICAgKGhleCkJCUJMVVNFTlMgVEVDSE5PTE9HWQotMDAxQUFGICAgICAoYmFzZSAxNikJCUJMVVNFTlMgVEVDSE5PTE9HWQotCQkJCUVESUZJQ0lPIENOTCwtIEFWLgotCQkJCUZFUk5BTkRPIENBU0FTIE5PVk9BICxOPyAzN0IgMj8KLQkJCQkxNTcwNyAtIFNBTlRJQUdPIERFIENPTVBPU1RFTEEgQSBDT1JVTkEgCi0JCQkJU1BBSU4KLQotMDAtMUEtQjAgICAoaGV4KQkJU2lnbmFsIE5ldHdvcmtzIFB2dC4gTHRkLiwKLTAwMUFCMCAgICAgKGJhc2UgMTYpCQlTaWduYWwgTmV0d29ya3MgUHZ0LiBMdGQuLAotCQkJCU5vLjEyLCBLYWxwYXRhcnUgQXBhcnRtZW50cywKLQkJCQlSYWNlIENvdXJzZSBDcm9zcyBSb2FkLCBNYWRoYXZuYWdhciwKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDAwMQotCQkJCUlORElBCi0KLTAwLTFBLUIxICAgKGhleCkJCUFzaWEgUGFjaWZpYyBTYXRlbGxpdGUgSW5kdXN0cmllcyBDby4sIEx0ZC4KLTAwMUFCMSAgICAgKGJhc2UgMTYpCQlBc2lhIFBhY2lmaWMgU2F0ZWxsaXRlIEluZHVzdHJpZXMgQ28uLCBMdGQuCi0JCQkJOXRoIEZMLCBJVCBDYXN0bGUgMi1Eb25nLCAjNTUwLTEsIEdhc2FuLURvbmcsIEdldW1DaGVvbi1HdSwKLQkJCQlTZW91bCAgMTUzLTc2OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS1CMiAgIChoZXgpCQlDeWJlciBTb2x1dGlvbnMgSW5jLgotMDAxQUIyICAgICAoYmFzZSAxNikJCUN5YmVyIFNvbHV0aW9ucyBJbmMuCi0JCQkJNi02LTMsIE1pbmFtaSBZb3NoaW5hcmkKLQkJCQlBb2JhLWt1Ci0JCQkJU2VuZGFpIE1peWFnaS1rZW4gOTg5LTMyMDQKLQkJCQlKQVBBTgotCi0wMC0xQS1CMyAgIChoZXgpCQlWSVNJT05JVEUgSU5DLgotMDAxQUIzICAgICAoYmFzZSAxNikJCVZJU0lPTklURSBJTkMuCi0JCQkJIzcwNyBEYWVyeXVuZyBUZWNobm90b3duLTIgNTY5LTIxCi0JCQkJR2FzYW4tRG9uZyBHZXVtY2hlb24tR3UKLQkJCQlTZW91bCAgMTUzLTc3MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS1CNCAgIChoZXgpCQlGRkVJIEx0ZC4KLTAwMUFCNCAgICAgKGJhc2UgMTYpCQlGRkVJIEx0ZC4KLQkJCQlCbG9jayAyLCAgRWF0b24gQ291cnQKLQkJCQlFYXRvbiBSb2FkCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRmb3Jkc2hpcmUgSFAyIDdEUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFBLUI1ICAgKGhleCkJCUhvbWUgTmV0d29yayBTeXN0ZW0KLTAwMUFCNSAgICAgKGJhc2UgMTYpCQlIb21lIE5ldHdvcmsgU3lzdGVtCi0JCQkJMTA3LCBIeXVuZGFpIEktVmFsbHkKLQkJCQlTYW5nZGFld29uIDEoaWwpLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjItNzE0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLUI2ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDFBQjYgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMDggV2lsZCBCYXNpbiBTdGUgMzUwCi0JCQkJQXVzdGluIFRYIDc4NzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1CNyAgIChoZXgpCQlFdGhvcyBOZXR3b3JrcyBMVEQuCi0wMDFBQjcgICAgIChiYXNlIDE2KQkJRXRob3MgTmV0d29ya3MgTFRELgotCQkJCTIgTWFza2l0IFN0LgotCQkJCUJ1aWxkaW5nIEQsIFBPQm94IDQwOTAKLQkJCQlIZXJ6bGlhICA0Njc2NgotCQkJCUlTUkFFTAotCi0wMC0xQS1COCAgIChoZXgpCQlBbnNlcmkgQ29ycG9yYXRpb24KLTAwMUFCOCAgICAgKGJhc2UgMTYpCQlBbnNlcmkgQ29ycG9yYXRpb24KLQkJCQkzNUUgSW5kdXN0cmlhbCBXYXkKLQkJCQlTdWl0ZSAxMDEKLQkJCQlSb2NoZXN0ZXIgTkggMDM4NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUI5ICAgKGhleCkJCVBNQwotMDAxQUI5ICAgICAoYmFzZSAxNikJCVBNQwotCQkJCTU2LCBhdmVudWUgUmFzcGFpbAotCQkJCVNhaW50IE1hdXIgdmFsIGRlIG1hcm5lIDk0MTAwCi0JCQkJRlJBTkNFCi0KLTAwLTFBLUJBICAgKGhleCkJCUNhdG9uIE92ZXJzZWFzIExpbWl0ZWQKLTAwMUFCQSAgICAgKGJhc2UgMTYpCQlDYXRvbiBPdmVyc2VhcyBMaW1pdGVkCi0JCQkJUm9vbSAxMDIsIE5vLiAxMDEsIExhbmUgOTEKLQkJCQlFLVNoYW4gUm9hZCwgUHVkb25nIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMDEyNwotCQkJCUNISU5BCi0KLTAwLTFBLUJCICAgKGhleCkJCUZvbnRhbCBUZWNobm9sb2d5IEluY29ycG9yYXRpb24KLTAwMUFCQiAgICAgKGJhc2UgMTYpCQlGb250YWwgVGVjaG5vbG9neSBJbmNvcnBvcmF0aW9uCi0JCQkJUm0uNTIyLCBCbGRnLiA1MiwgMTk1LCBTZWMuIDQsIENodW5nSHNpbmcgUmQuLCBDaHV0dW5nCi0JCQkJSHNpbmNodSAgMzEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS1CQyAgIChoZXgpCQlVNEVBIFRlY2hub2xvZ2llcyBMdGQKLTAwMUFCQyAgICAgKGJhc2UgMTYpCQlVNEVBIFRlY2hub2xvZ2llcyBMdGQKLQkJCQlDaXR5IFBvaW50Ci0JCQkJVGVtcGxlIEdhdGUKLQkJCQlCcmlzdG9sICBCUzEgNlBMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUEtQkQgICAoaGV4KQkJSW1wYXRpY2EgSW5jLgotMDAxQUJEICAgICAoYmFzZSAxNikJCUltcGF0aWNhIEluYy4KLQkJCQkyMDUtMTcyNSBTdC4gTGF1cmVudCBCbHZkLgotCQkJCU90dGF3YSBPTiBLMUcgM1Y0Ci0JCQkJQ0FOQURBCi0KLTAwLTFBLUJFICAgKGhleCkJCUNPTVBVVEVSIEhJLVRFQ0ggSU5DLgotMDAxQUJFICAgICAoYmFzZSAxNikJCUNPTVBVVEVSIEhJLVRFQ0ggSU5DLgotCQkJCUhpZ2FzaGlVZW5vMy0xOC03Ci0JCQkJVGFpdG9rdSBUb2t5byAxMTAtMDAxNQotCQkJCUpBUEFOCi0KLTAwLTFBLUJGICAgKGhleCkJCVRSVU1QRiBMYXNlciBNYXJraW5nIFN5c3RlbXMgQUcKLTAwMUFCRiAgICAgKGJhc2UgMTYpCQlUUlVNUEYgTGFzZXIgTWFya2luZyBTeXN0ZW1zIEFHCi0JCQkJQXVzc2VyZmVsZAotCQkJCUdydWVzY2ggR1IgNzIxNAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFBLUMwICAgKGhleCkJCUpPWUJJRU4gVEVDSE5PTE9HSUVTIENPLiwgTFRELgotMDAxQUMwICAgICAoYmFzZSAxNikJCUpPWUJJRU4gVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCTE4Ri0xLCBOTy43MDAsIFpIT05HWkhFTkcgUkQuLAotCQkJCVpIT05HSEUgQ0lUWSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS1DMSAgIChoZXgpCQkzQ29tIEx0ZAotMDAxQUMxICAgICAoYmFzZSAxNikJCTNDb20gTHRkCi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQS1DMiAgIChoZXgpCQlZRUMgQ28uLEx0ZC4KLTAwMUFDMiAgICAgKGJhc2UgMTYpCQlZRUMgQ28uLEx0ZC4KLQkJCQk1NDMtOSBUc3VydW1hCi0JCQkJTWFjaGlkYSBUb2t5byAxOTQtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTFBLUMzICAgKGhleCkJCVNjaWVudGlmaWMtQXRsYW50YSwgSW5jCi0wMDFBQzMgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYy1BdGxhbnRhLCBJbmMKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJQVRMIDEuMy40NzMKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1DNCAgIChoZXgpCQkyV2lyZSwgSW5jCi0wMDFBQzQgICAgIChiYXNlIDE2KQkJMldpcmUsIEluYwotCQkJCTE3MDQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUM1ICAgKGhleCkJCUJyZWFraW5nUG9pbnQgU3lzdGVtcywgSW5jLgotMDAxQUM1ICAgICAoYmFzZSAxNikJCUJyZWFraW5nUG9pbnQgU3lzdGVtcywgSW5jLgotCQkJCTM5MDAgTi4gQ2FwaXRhbCBvZiBUZXhhcyBId3kKLQkJCQlTdWl0ZSAxODAKLQkJCQlBdXN0aW4gVFggNzg3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUM2ICAgKGhleCkJCU1pY3JvIENvbnRyb2wgRGVzaWducwotMDAxQUM2ICAgICAoYmFzZSAxNikJCU1pY3JvIENvbnRyb2wgRGVzaWducwotCQkJCTE3NDkwIENhcmlib3UgRHIKLQkJCQlNb251bWVudCBDby4gODAxMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUM3ICAgKGhleCkJCVVOSVBPSU5UCi0wMDFBQzcgICAgIChiYXNlIDE2KQkJVU5JUE9JTlQKLQkJCQk3RiBHd2FuZ3N1bmcgQmxkIDgzMS00NyBZZW9rU2FtLURvbmcKLQkJCQlLYW5nbmFtLUd1IFNlb3VsIDEzNS05MzYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtQzggICAoaGV4KQkJSVNMIChJbnN0cnVtZW50YXRpb24gU2NpZW50aWZpcXVlIGRlIExhYm9yYXRvaXJlKQotMDAxQUM4ICAgICAoYmFzZSAxNikJCUlTTCAoSW5zdHJ1bWVudGF0aW9uIFNjaWVudGlmaXF1ZSBkZSBMYWJvcmF0b2lyZSkKLQkJCQlJbXBhc3NlIGRlcyA0IHZlbnRzCi0JCQkJUGFyYyBkJ0FjdGl2aXRlIGRlIGxhIE1lc25pbGxpZXJlCi0JCQkJVkVSU09OIENBTFZBRE9TIDE0NzkwCi0JCQkJRlJBTkNFCi0KLTAwLTFBLUM5ICAgKGhleCkJCVNVWlVLRU4gQ08uLExURAotMDAxQUM5ICAgICAoYmFzZSAxNikJCVNVWlVLRU4gQ08uLExURAotCQkJCVNVWlVLRU4gVE9NRUkgQkxERy4KLQkJCQkyNiBISU1FV0FLQS1DSE8gTUVJVE8tS1UKLQkJCQlOQUdPWUEtU0kgQUlDSEktS0VOIDQ2NS0wMDQ1Ci0JCQkJSkFQQU4KLQotMDAtMUEtQ0EgICAoaGV4KQkJVGlsZXJhIENvcnBvcmF0aW9uCi0wMDFBQ0EgICAgIChiYXNlIDE2KQkJVGlsZXJhIENvcnBvcmF0aW9uCi0JCQkJMTkwMCBXZXN0IFBhcmsgRHJpdmUKLQkJCQlTdWl0ZSAyOTAKLQkJCQlXZXN0Ym9yb3VnaCBNQSAwMTU4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQ0IgICAoaGV4KQkJQXV0b2NvbSBQcm9kdWN0cyBMdGQKLTAwMUFDQiAgICAgKGJhc2UgMTYpCQlBdXRvY29tIFByb2R1Y3RzIEx0ZAotCQkJCVVuaXQgNCBUYWNoYnJvb2sgTGluaywgVGFjaGJyb29rIFBhcmsgRHJpdmUKLQkJCQlXYXJ3aWNrIFdhcndpY2tzaGlyZSBDVjM0IDZSSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFBLUNDICAgKGhleCkJCUNlbGVzdGlhbCBTZW1pY29uZHVjdG9yLCBMdGQKLTAwMUFDQyAgICAgKGJhc2UgMTYpCQlDZWxlc3RpYWwgU2VtaWNvbmR1Y3RvciwgTHRkCi0JCQkJVWdsYW5kIEhvdXNlLCBTb3V0aCBDaHVyY2ggU3RyZWV0LAotCQkJCSBDYXltYW4gSXNsYW5kcwotCQkJCUdlb3JnZSBUb3duLCAgQ2F5bWFuIElzbGFuZHMgMDAwMDAKLQkJCQlDQVlNQU4gSVNMQU5EUwotCi0wMC0xQS1DRCAgIChoZXgpCQlUaWRlbCBFbmdpbmVlcmluZyBMUAotMDAxQUNEICAgICAoYmFzZSAxNikJCVRpZGVsIEVuZ2luZWVyaW5nIExQCi0JCQkJMjAyNSBXIEJlbHQgTGluZSBSb2FkIFN1aXRlIDExNAotCQkJCUNhcnJvbGx0b24gVFggNzUwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUNFICAgKGhleCkJCVlVUElURVJVIENPUlBPUkFUSU9OCi0wMDFBQ0UgICAgIChiYXNlIDE2KQkJWVVQSVRFUlUgQ09SUE9SQVRJT04KLQkJCQkzLCBEYW5ub3VlLCBJd2F6dS1jaG8sIE9rYXpha2ktY2l0eSwgQWljaGkKLQkJCQlPa2F6YWtpIEFpY2hpIDQ0NC0yMTQ0Ci0JCQkJSkFQQU4KLQotMDAtMUEtQ0YgICAoaGV4KQkJQy5ULiBFTEVUVFJPTklDQQotMDAxQUNGICAgICAoYmFzZSAxNikJCUMuVC4gRUxFVFRST05JQ0EKLQkJCQlWaWEgQ2FkdXRpIGRpIE5hc3Npcml5YSA1IEIKLQkJCQlCYXJiZXJpbm8gVmFsIEQnRWxzYSAoRkkpICA1MDAyMQotCQkJCUlUQUxZCi0KLTAwLTFBLUQwICAgKGhleCkJCUFsYmlzIFRlY2hub2xvZ2llcyBBRwotMDAxQUQwICAgICAoYmFzZSAxNikJCUFsYmlzIFRlY2hub2xvZ2llcyBBRwotCQkJCUFsYmlzcmllZGVyc3RyYXNzZSAxOTkKLQkJCQlDSCA4MDQ3IFp1ZXJpY2ggCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUEtRDEgICAoaGV4KQkJRkFSR08gQ08uLCBMVEQuCi0wMDFBRDEgICAgIChiYXNlIDE2KQkJRkFSR08gQ08uLCBMVEQuCi0JCQkJNEYuIEtZRU1ZVU5HIEIvRAotCQkJCTE2NS00IFNBTVNVTkctRE9ORywgS0FOR05BTS1LVQotCQkJCVNFT1VMICAxMzUgODg1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLUQyICAgKGhleCkJCUVsZXRyb25pY2EgTml0cm9uIEx0ZGEKLTAwMUFEMiAgICAgKGJhc2UgMTYpCQlFbGV0cm9uaWNhIE5pdHJvbiBMdGRhCi0JCQkJUnVhIERyLiBVbGlzc2VzIEVzY29iYXIgNDE1Ci0JCQkJSmFyZGltIFZpc3RhIEFsZWdyZQotCQkJCUNhbWFuZHVjYWlhIE1pbmFzIEdlcmFpcyAzNzY1MC0wMDAKLQkJCQlCUkFaSUwKLQotMDAtMUEtRDMgICAoaGV4KQkJVmFtcCBMdGQuCi0wMDFBRDMgICAgIChiYXNlIDE2KQkJVmFtcCBMdGQuCi0JCQkJUE8gQm94IDgxMAotCQkJCVZhYXNhICA2NTEwMQotCQkJCUZJTkxBTkQKLQotMDAtMUEtRDQgICAoaGV4KQkJaVBPWCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxQUQ0ICAgICAoYmFzZSAxNikJCWlQT1ggVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxNUYtMSwgTm8uMTg2LCBKaWFuLVlpIFJkLiwgQ2h1bmctSG8gQ2l0eSwKLQkJCQlUYWlwZWkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtRDUgICAoaGV4KQkJS01DIENIQUlOIElORFVTVFJJQUwgQ08uLCBMVEQuCi0wMDFBRDUgICAgIChiYXNlIDE2KQkJS01DIENIQUlOIElORFVTVFJJQUwgQ08uLCBMVEQuCi0JCQkJN0YtOCwgTm8uIDgxLCBTdWktTGloIFJkLiwgSHNpbmNodQotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtRDYgICAoaGV4KQkJSklBR05TVSBBRVROQSBFTEVDVFJJQyBDTy4sTFRECi0wMDFBRDYgICAgIChiYXNlIDE2KQkJSklBR05TVSBBRVROQSBFTEVDVFJJQyBDTy4sTFRECi0JCQkJTk8uNTcxIFFJQU5IVSBST0FELFFJQU5RSUFPIElORFVTVFJZIFBBUkssV1VYSSxKSUFOR1NVLENISU5BCi0JCQkJV1VYSSBKSUFOR1NVIDIxNDE1MQotCQkJCUNISU5BCi0KLTAwLTFBLUQ3ICAgKGhleCkJCUNocmlzdGllIERpZ2l0YWwgU3lzdGVtcywgSW5jLgotMDAxQUQ3ICAgICAoYmFzZSAxNikJCUNocmlzdGllIERpZ2l0YWwgU3lzdGVtcywgSW5jLgotCQkJCTgwOSBXZWxsaW5ndG9uIFN0cmVldCBOb3J0aAotCQkJCUtpdGNoZW5lciBPbnRhcmlvIE4yRyA0WTcKLQkJCQlDQU5BREEKLQotMDAtMUEtRDggICAoaGV4KQkJQWxzdGVyQWVybyBHbWJICi0wMDFBRDggICAgIChiYXNlIDE2KQkJQWxzdGVyQWVybyBHbWJICi0JCQkJTHViZWNrZXIgU3RyYXNzZSAxCi0JCQkJSGFtYnVyZyAgMjIwODcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLUQ5ICAgKGhleCkJCUludGVybmF0aW9uYWwgQnJvYWRiYW5kIEVsZWN0cmljIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDFBRDkgICAgIChiYXNlIDE2KQkJSW50ZXJuYXRpb25hbCBCcm9hZGJhbmQgRWxlY3RyaWMgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyODUgRHVubG9wIEJsdmQuIFNXCi0JCQkJU3VpdGUgSwotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLURBICAgKGhleCkJCUJpei0yLU1lIEluYy4KLTAwMUFEQSAgICAgKGJhc2UgMTYpCQlCaXotMi1NZSBJbmMuCi0JCQkJMTMwMSBXZXN0IEVhdSBHYWxsaWUgQmx2ZAotCQkJCVN1aXRlIDEwNgotCQkJCU1lbGJvdXJuZSBGTCAzMjkzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtREIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUFEQiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBId3kgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLURDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFBREMgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFBLUREICAgKGhleCkJCVBlUFdhdmUgTHRkCi0wMDFBREQgICAgIChiYXNlIDE2KQkJUGVQV2F2ZSBMdGQKLQkJCQkxNy9GLiwgUGFyayBCdWlsZGluZywKLQkJCQk0NzYgQ2FzdGxlIFBlYWsgUm9hZAotCQkJCUNoZXVuZyBTaGEgV2FuIEtvd2xvb24gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFBLURFICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDFBREUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1ERiAgIChoZXgpCQlJbnRlcmFjdGl2ZXR2IFB0eSBMaW1pdGVkCi0wMDFBREYgICAgIChiYXNlIDE2KQkJSW50ZXJhY3RpdmV0diBQdHkgTGltaXRlZAotCQkJCVN1aXRlIDEwIExldmVsIDMKLQkJCQk1NiBCb3dtYW4gU3RyZWV0Ci0JCQkJUHlybW9udCwgU3lkbmV5IE5TVyAyMDA5Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFBLUUwICAgKGhleCkJCU15dGhvbG9neSBUZWNoIEV4cHJlc3MgSW5jLgotMDAxQUUwICAgICAoYmFzZSAxNikJCU15dGhvbG9neSBUZWNoIEV4cHJlc3MgSW5jLgotCQkJCTJGLCBOby4xMCwgTGFuZSAyMzUsIEJhbyBDaGlhbyByb2FkLAotCQkJCUhzaW4tVGllbi4KLQkJCQlUYWlwZWkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtRTEgICAoaGV4KQkJRURHRSBBQ0NFU1MgSU5DCi0wMDFBRTEgICAgIChiYXNlIDE2KQkJRURHRSBBQ0NFU1MgSU5DCi0JCQkJNTQ0MCBCRUFVTU9OVCBDRU5URVIgQkxWRAotCQkJCVNVSVRFIDQ5MAotCQkJCVRBTVBBIEZMIDMzNjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1FMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFBRTIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1FMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFBRTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1FNCAgIChoZXgpCQlNZWRpY2lzIFRlY2hub2xvZ2llcyBDb3Jwb3JhdGlvbgotMDAxQUU0ICAgICAoYmFzZSAxNikJCU1lZGljaXMgVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uCi0JCQkJMTE4MTggTm9ydGggQ3JlZWsgUGFya3dheSBOLgotCQkJCUJvdGhlbGwgV0EgOTgwMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUU1ICAgKGhleCkJCU12b3ggVGVjaG5vbG9naWVzIEluYy4KLTAwMUFFNSAgICAgKGJhc2UgMTYpCQlNdm94IFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMTkwNTAgUHJ1bmVyaWRnZSBBdmUKLQkJCQlTdGUuIDEyOAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRTYgICAoaGV4KQkJQXRsYW50YSBBZHZhbmNlZCBDb21tdW5pY2F0aW9ucyBIb2xkaW5ncyBMaW1pdGVkCi0wMDFBRTYgICAgIChiYXNlIDE2KQkJQXRsYW50YSBBZHZhbmNlZCBDb21tdW5pY2F0aW9ucyBIb2xkaW5ncyBMaW1pdGVkCi0JCQkJMTkwMCBXZXN0IE9hayBDaXJjbGUsIE1hcmlldHRhCi0JCQkJQXRsYW50YSBHZW9yZ2lhIDMwMDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1FNyAgIChoZXgpCQlBenRlayBOZXR3b3JrcywgSW5jLgotMDAxQUU3ICAgICAoYmFzZSAxNikJCUF6dGVrIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjQ3NyA1NXRoIFN0LiAjMjAyCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRTggICAoaGV4KQkJU2llbWVucyBFbnRlcnByaXNlIENvbW11bmljYXRpb25zIEdtYkggJiBDby4gS0cKLTAwMUFFOCAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEVudGVycHJpc2UgQ29tbXVuaWNhdGlvbnMgR21iSCAmIENvLiBLRwotCQkJCVNFTiBTQyBNQwotCQkJCUhvZm1hbm5zdHJhc3NlIDUxCi0JCQkJTXVuaWNoIDgxMzc5Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS1FOSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMUFFOSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xQS1FQSAgIChoZXgpCQlSYWRpbyBUZXJtaW5hbCBTeXN0ZW1zIFB0eSBMdGQKLTAwMUFFQSAgICAgKGJhc2UgMTYpCQlSYWRpbyBUZXJtaW5hbCBTeXN0ZW1zIFB0eSBMdGQKLQkJCQkxc3QgRmxvb3IKLQkJCQkxMDggRG9oZXJ0eXMgUm9hZAotCQkJCUxhdmVydG9uIE5vcnRoIFZpY3RvcmlhIDMwMjYKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUEtRUIgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMgSy5LLgotMDAxQUVCICAgICAoYmFzZSAxNikJCUFsbGllZCBUZWxlc2lzIEsuSy4KLQkJCQlOby4yIFRPQyBCbGRnLgotCQkJCTctMjEtMTEgTmlzaGktR290YW5kYQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAzMQotCQkJCUpBUEFOCi0KLTAwLTFBLUVDICAgKGhleCkJCUtldW1iZWUgRWxlY3Ryb25pY3MgQ28uLEx0ZC4KLTAwMUFFQyAgICAgKGJhc2UgMTYpCQlLZXVtYmVlIEVsZWN0cm9uaWNzIENvLixMdGQuCi0JCQkJMy0yNiwgSmFuZ3NhbmctZG9uZywgU2FuZ3Jvay1ndQotCQkJCUFuc2FuLXNpIEt5dW5na2ktZG8gNDI2LTQxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS1FRCAgIChoZXgpCQlJTkNPVEVDIEdtYkgKLTAwMUFFRCAgICAgKGJhc2UgMTYpCQlJTkNPVEVDIEdtYkgKLQkJCQlCbG9tZXN0cmFzc2UgMjUgLSAyNwotCQkJCUJpZWxlZmVsZCBOUlcgMzM2MDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLUVFICAgKGhleCkJCVNoZW56dGVjaCBMdGQKLTAwMUFFRSAgICAgKGJhc2UgMTYpCQlTaGVuenRlY2ggTHRkCi0JCQkJODEzLCA4RiwgSE9MTFlXT09EIFBMQVpBLCA2MTAgTkFUSEFOIFJPQUQsCi0JCQkJS09XTE9PTiAgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFBLUVGICAgKGhleCkJCUxvb3Bjb21tIFRlY2hub2xvZ3ksIEluYy4KLTAwMUFFRiAgICAgKGJhc2UgMTYpCQlMb29wY29tbSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMThGLTEsIE5vLiAxNTAsIEppYW4gWWkgUmQuLAotCQkJCUNodW5nLUhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtRjAgICAoaGV4KQkJQWxjYXRlbCAtIElQRAotMDAxQUYwICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgLSBJUEQKLQkJCQk3MDEgRS4gTWlkZGxlZmllbGQgUmQuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRjEgICAoaGV4KQkJRW1iZWRkZWQgQXJ0aXN0cyBBQgotMDAxQUYxICAgICAoYmFzZSAxNikJCUVtYmVkZGVkIEFydGlzdHMgQUIKLQkJCQlTb2RyYSBQcm9tZW5hZGVuIDUxCi0JCQkJTWFsbW9lICAyMTEgMzgKLQkJCQlTV0VERU4KLQotMDAtMUEtRjIgICAoaGV4KQkJRHluYXZpc2lvbnMgU2Nod2VpeiBBRwotMDAxQUYyICAgICAoYmFzZSAxNikJCUR5bmF2aXNpb25zIFNjaHdlaXogQUcKLQkJCQlGcmVpc2luZ2VyIExhbmRzdHJhc3NlIDIxCi0JCQkJRC04MDkzOSBNdWVuY2hlbiAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLUYzICAgKGhleCkJCVNhbXlvdW5nIEVsZWN0cm9uaWNzCi0wMDFBRjMgICAgIChiYXNlIDE2KQkJU2FteW91bmcgRWxlY3Ryb25pY3MKLQkJCQkxNDYtMSwgc2FuZ2RhZXdvbi1kb25nLCBqb29uZ3dvbi1ndQotCQkJCXN1bmduYW0tc2hpIEd5dW5nZ2ktZG8gNDYyLTgwNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS1GNCAgIChoZXgpCQlIYW5kcmVhbW5ldAotMDAxQUY0ICAgICAoYmFzZSAxNikJCUhhbmRyZWFtbmV0Ci0JCQkJIzEyMDkgTWFyaW9Ub3dlciwgMjIyLTEyCi0JCQkJR3Vyby1Eb25nLCBHdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtRjUgICAoaGV4KQkJUEVOVEFPTkUuIENPLiwgTFRELgotMDAxQUY1ICAgICAoYmFzZSAxNikJCVBFTlRBT05FLiBDTy4sIExURC4KLQkJCQlIeW8gQ2hhbmcgQmxkZywgM0YsIDEwMTMtNiwgSW5reWUtZG9uZyBQYWxkYWwtR3UsCi0JCQkJU3V3b24gQ2l0eSBHeXVuZ2dpLURvIDQyMi04MzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtRjYgICAoaGV4KQkJV292ZW4gU3lzdGVtcywgSW5jLgotMDAxQUY2ICAgICAoYmFzZSAxNikJCVdvdmVuIFN5c3RlbXMsIEluYy4KLQkJCQkyNDU1IEF1Z3VzdGluZSBEcml2ZQotCQkJCVN1aXRlIDIxMQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1GNyAgIChoZXgpCQlkYXRhc2NoYWx0IGUrYSBHbWJICi0wMDFBRjcgICAgIChiYXNlIDE2KQkJZGF0YXNjaGFsdCBlK2EgR21iSAotCQkJCUFuIGRlciBIdWxzaG9yc3QgNy05Ci0JCQkJTHViZWNrICAyMzU2OAotCQkJCUdFUk1BTlkKLQotMDAtMUEtRjggICAoaGV4KQkJQ29wbGV5IENvbnRyb2xzIENvcnBvcmF0aW9uCi0wMDFBRjggICAgIChiYXNlIDE2KQkJQ29wbGV5IENvbnRyb2xzIENvcnBvcmF0aW9uCi0JCQkJMjAgRGFuIFJvYWQKLQkJCQlDYW50b24gTUEgMDIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUY5ICAgKGhleCkJCUFlcm9WSXJvbm1lbnQgKEFWIEluYykKLTAwMUFGOSAgICAgKGJhc2UgMTYpCQlBZXJvVklyb25tZW50IChBViBJbmMpCi0JCQkJNDY4NSBJbmR1c3RyaWFsIFN0Ci0JCQkJUE8gQTE4MjcxCi0JCQkJU2ltaSBWYWxsZXkgQ0EgOTMwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUZBICAgKGhleCkJCVdlbGNoIEFsbHluLCBJbmMuCi0wMDFBRkEgICAgIChiYXNlIDE2KQkJV2VsY2ggQWxseW4sIEluYy4KLQkJCQk0NjE5IEpvcmRhbiBSb2FkCi0JCQkJUE8gQm94IDE4NwotCQkJCVNrYW5lYXRlbGVzIEZhbGxzIE5ZIDEzMTUzLTAxODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUZCICAgKGhleCkJCUpvYnkgSW5jLgotMDAxQUZCICAgICAoYmFzZSAxNikJCUpvYnkgSW5jLgotCQkJCTE1MzUgTWlzc2lvbiBTdC4KLQkJCQlGbG9vciAyCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRkMgICAoaGV4KQkJTW9kdXNMaW5rIENvcnBvcmF0aW9uCi0wMDFBRkMgICAgIChiYXNlIDE2KQkJTW9kdXNMaW5rIENvcnBvcmF0aW9uCi0JCQkJMjkwNSBQcmVzdG9ud29vZCBEcml2ZQotCQkJCVBsYW5vIFRleGFzIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1GRCAgIChoZXgpCQlFVk9MSVMKLTAwMUFGRCAgICAgKGJhc2UgMTYpCQlFVk9MSVMKLQkJCQkyOSBhdmVudWUgZGUgbGEgZm9udGFpbmUKLQkJCQlaSSBBbmdlcnMgYmVhdWNvdXplCi0JCQkJQmVhdWNvdXplICA0OTA3MAotCQkJCUZSQU5DRQotCi0wMC0xQS1GRSAgIChoZXgpCQlTT0ZBQ1JFQUwKLTAwMUFGRSAgICAgKGJhc2UgMTYpCQlTT0ZBQ1JFQUwKLQkJCQkxNDkgYXZlbnVlIGR1IE1BSU5FCi0JCQkJUEFSSVMgUmVnaW9uIFBhcmlzaWVubmUgNzUwMTQKLQkJCQlGUkFOQ0UKLQotMDAtMUEtRkYgICAoaGV4KQkJV2l6eW91bmcgVGVjaC4KLTAwMUFGRiAgICAgKGJhc2UgMTYpCQlXaXp5b3VuZyBUZWNoLgotCQkJCTlGLCBOby4gMjUsIFNlYy4gMSwgTmFuamluZyBFLiBSZC4KLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItMDAgICAoaGV4KQkJTmVvcG9zdCBUZWNobm9sb2dpZXMKLTAwMUIwMCAgICAgKGJhc2UgMTYpCQlOZW9wb3N0IFRlY2hub2xvZ2llcwotCQkJCTExMyBydWUgSmVhbi1NYXJpbiBOYXVkaW4KLQkJCQlCYWduZXV4ICA5MjIyMAotCQkJCUZSQU5DRQotCi0wMC0xQi0wMSAgIChoZXgpCQlBcHBsaWVkIFJhZGlvIFRlY2hub2xvZ2llcwotMDAxQjAxICAgICAoYmFzZSAxNikJCUFwcGxpZWQgUmFkaW8gVGVjaG5vbG9naWVzCi0JCQkJMTEyNCBTb3V0aCBTZXJ2aWNlIFJvYWQgV2VzdAotCQkJCU9ha3ZpbGxlIE9udGFyaW8gTDZMIDVUNwotCQkJCUNBTkFEQQotCi0wMC0xQi0wMiAgIChoZXgpCQlFRCBDby5MdGQKLTAwMUIwMiAgICAgKGJhc2UgMTYpCQlFRCBDby5MdGQKLQkJCQk1MTctMTUgU2FuZ0RhZVdvbi1Eb25nCi0JCQkJU2VvbmdOYW0tQ2l0eSBHeWVvbmdHaS1EbyA0NjItODA2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTAzICAgKGhleCkJCUFjdGlvbiBUZWNobm9sb2d5IChTWikgQ28uLCBMdGQKLTAwMUIwMyAgICAgKGJhc2UgMTYpCQlBY3Rpb24gVGVjaG5vbG9neSAoU1opIENvLiwgTHRkCi0JCQkJQWN0aW9uIFRlY2hub2xvZ3kgQnVpbGRpbmcgQmFveXVhbiBSb2FkLCBYaXhpYW5nLCBCYW8nYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAyCi0JCQkJQ0hJTkEKLQotMDAtMUItMDQgICAoaGV4KQkJQWZmaW5pdHkgSW50ZXJuYXRpb25hbCBTLnAuYQotMDAxQjA0ICAgICAoYmFzZSAxNikJCUFmZmluaXR5IEludGVybmF0aW9uYWwgUy5wLmEKLQkJCQlDLnNvIFNhdm9uYSA1MQotCQkJCVZpbGxhc3RlbGxvbmUgVG9yaW5vIEkxMDAyOQotCQkJCUlUQUxZCi0KLTAwLTFCLTA1ICAgKGhleCkJCVlNQyBBRwotMDAxQjA1ICAgICAoYmFzZSAxNikJCVlNQyBBRwotCQkJCVNvbm5lbnN0cmFzc2UgNAotCQkJCUtyZXV6bGluZ2VuIFRodXJnYXUgODI4MAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFCLTA2ICAgKGhleCkJCUF0ZWxpZXJzIFIuIExBVU1PTklFUgotMDAxQjA2ICAgICAoYmFzZSAxNikJCUF0ZWxpZXJzIFIuIExBVU1PTklFUgotCQkJCTExLCBydWUgZHUgQ2hlbml2YWwKLQkJCQlCUCAxCi0JCQkJTmVzbGVzIGxhIFZhbGxlZSBWYWwgZCdPaXNlIDk1NjkwCi0JCQkJRlJBTkNFCi0KLTAwLTFCLTA3ICAgKGhleCkJCU1lbmRvY2lubyBTb2Z0d2FyZQotMDAxQjA3ICAgICAoYmFzZSAxNikJCU1lbmRvY2lubyBTb2Z0d2FyZQotCQkJCTQ3MDAxIEJlbmVjaWEgU3QuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMDggICAoaGV4KQkJRGFuZm9zcyBEcml2ZXMgQS9TCi0wMDFCMDggICAgIChiYXNlIDE2KQkJRGFuZm9zcyBEcml2ZXMgQS9TCi0JCQkJVWxzbmFlcyAxCi0JCQkJR3JhYXN0ZW4gNjMwMCAKLQkJCQlERU5NQVJLCi0KLTAwLTFCLTA5ICAgKGhleCkJCU1hdHJpeCBUZWxlY29tIFB2dC4gTHRkLgotMDAxQjA5ICAgICAoYmFzZSAxNikJCU1hdHJpeCBUZWxlY29tIFB2dC4gTHRkLgotCQkJCTM5NCwgR0lEQywgTWFrYXJwdXJhLAotCQkJCVZhZG9kYXJhIEd1amFyYXQgMzkwMDEwCi0JCQkJSU5ESUEKLQotMDAtMUItMEEgICAoaGV4KQkJSW50ZWxsaWdlbnQgRGlzdHJpYnV0ZWQgQ29udHJvbHMgTHRkCi0wMDFCMEEgICAgIChiYXNlIDE2KQkJSW50ZWxsaWdlbnQgRGlzdHJpYnV0ZWQgQ29udHJvbHMgTHRkCi0JCQkJS2V5bmVzIEhvdXNlLCBDaGVzdGVyIFBhcmsKLQkJCQlBbGZyZXRvbiBSb2FkCi0JCQkJRGVyYnkgRGVyYnlzaGlyZSBERTIxIDRBUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLTBCICAgKGhleCkJCVBoaWRnZXRzIEluYy4KLTAwMUIwQiAgICAgKGJhc2UgMTYpCQlQaGlkZ2V0cyBJbmMuCi0JCQkJMjcxNUEgMTZBIFN0cmVldCBOLlcuCi0JCQkJQ2FsZ2FyeSBBbGJlcnRhIFQyTSAzUjcKLQkJCQlDQU5BREEKLQotMDAtMUItMEMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQjBDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMEQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQjBEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMEUgICAoaGV4KQkJSW5vVGVjIEdtYkggT3JnYW5pc2F0aW9uc3N5c3RlbWUKLTAwMUIwRSAgICAgKGJhc2UgMTYpCQlJbm9UZWMgR21iSCBPcmdhbmlzYXRpb25zc3lzdGVtZQotCQkJCUJpZWRyaWNoc3RyYXNzZSAxMQotCQkJCVdvZWxmZXJzaGVpbSBIZXNzZW4gRC02MTIwMAotCQkJCUdFUk1BTlkKLQotMDAtMUItMEYgICAoaGV4KQkJUGV0cmF0ZWMKLTAwMUIwRiAgICAgKGJhc2UgMTYpCQlQZXRyYXRlYwotCQkJCURlcmVjaCBIYS1TaGFyb24gMTIKLQkJCQlLZmFyIFNhYmEgU2hhcm9uIDQ0MjcxCi0JCQkJSVNSQUVMCi0KLTAwLTFCLTEwICAgKGhleCkJCVNoZW5aaGVuIEthbmcgSHVpIFRlY2hub2xvZ3kgQ28uLGx0ZAotMDAxQjEwICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIEthbmcgSHVpIFRlY2hub2xvZ3kgQ28uLGx0ZAotCQkJCUNoaW5hICBHdWFuZ0RvbmcKLQkJCQlUd28gcyxmbG9vciBCYW9BbiBEaXN0cmljdCBMb25nSHVhCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEwOQotCQkJCUNISU5BCi0KLTAwLTFCLTExICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMDAxQjExICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5PLjI4OSwgU2luaHUgM3JkIFJkLiwKLQkJCQlOZWlodSBEaXN0cmljdCwgVGFpcGVpIENpdHkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi0xMiAgIChoZXgpCQlBcHByaW9uCi0wMDFCMTIgICAgIChiYXNlIDE2KQkJQXBwcmlvbgotCQkJCU5hc2EgQW1lcyBSZXJlYXJjaCBDZW50ZXIKLQkJCQlQLk8uIEJveCA5NSBCdWlsZGluZyAxOSBTdWl0ZSAxMDAwCi0JCQkJTW9mZmV0dCBGaWVsZCBDYWxpZm9ybmlhIDk0MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0xMyAgIChoZXgpCQlJY3JvbiBUZWNobm9sb2dpZXMgQ29ycG9yYXRpb24KLTAwMUIxMyAgICAgKGJhc2UgMTYpCQlJY3JvbiBUZWNobm9sb2dpZXMgQ29ycG9yYXRpb24KLQkJCQkyMjEgLSA0NjY0IExvdWdoZWVkIEhpZ2h3YXkKLQkJCQlCdXJuYWJ5IEJDIFY1QyA1VDUKLQkJCQlDQU5BREEKLQotMDAtMUItMTQgICAoaGV4KQkJQ2FyZXggTGlnaHRpbmcgRXF1aXBtZW50IEZhY3RvcnkKLTAwMUIxNCAgICAgKGJhc2UgMTYpCQlDYXJleCBMaWdodGluZyBFcXVpcG1lbnQgRmFjdG9yeQotCQkJCTUwIENoYW5nIFRhbmcgUmQuLCBZYW4gVGlhbiBEaXN0cmljdCwKLQkJCQlGdW5na29uZywgRG9uZ0d1YW4KLQkJCQlHdWFuZ2RvbmcgcHJvdmluY2UgCi0JCQkJQ0hJTkEKLQotMDAtMUItMTUgICAoaGV4KQkJVm94dGVsLCBJbmMuCi0wMDFCMTUgICAgIChiYXNlIDE2KQkJVm94dGVsLCBJbmMuCi0JCQkJMTI3MjUgU1cgTWlsbGlrYW4gV2F5Ci0JCQkJU3VpdGUgMjMwCi0JCQkJQmVhdmVydG9uIE9SIDk3MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0xNiAgIChoZXgpCQlDZWx0cm8gTHRkLgotMDAxQjE2ICAgICAoYmFzZSAxNikJCUNlbHRybyBMdGQuCi0JCQkJQXpvcmltIEJ1c2luZXNzIFBhcmsKLQkJCQk5NCBFbSBIbW9zaGF2b3QgUm9hZC4KLQkJCQlQZXRhY2ggVGlrdmEgIDQ5NTI3Ci0JCQkJSVNSQUVMCi0KLTAwLTFCLTE3ICAgKGhleCkJCVBhbG8gQWx0byBOZXR3b3JrcwotMDAxQjE3ICAgICAoYmFzZSAxNikJCVBhbG8gQWx0byBOZXR3b3JrcwotCQkJCTIxMzAgR29sZCBTdHJlZXQgU3VpdGUgMjAwCi0JCQkJQWx2aXNvIENBIDk1MDIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0xOCAgIChoZXgpCQlUc3VrZW4gRWxlY3RyaWMgSW5kLiBDby4sTHRkCi0wMDFCMTggICAgIChiYXNlIDE2KQkJVHN1a2VuIEVsZWN0cmljIEluZC4gQ28uLEx0ZAotCQkJCTMtOSBBa2Vkb3VyaSBJenVtaS1rdQotCQkJCVNlbmRhaSBDaXR5IE1peWFnaSA5ODEtMzIwNgotCQkJCUpBUEFOCi0KLTAwLTFCLTE5ICAgKGhleCkJCUlFRUUgSSZNIFNvY2lldHkgVEM5IAotMDAxQjE5ICAgICAoYmFzZSAxNikJCUlFRUUgSSZNIFNvY2lldHkgVEM5IAotCQkJCTEwMCBCdXJlYXUgRHIuLCBNYWlsIFN0b3AgODIyMAotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg5OS04MjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0xQSAgIChoZXgpCQllLXRyZWVzIEphcGFuLCBJbmMuCi0wMDFCMUEgICAgIChiYXNlIDE2KQkJZS10cmVlcyBKYXBhbiwgSW5jLgotCQkJCU9vd2FkYS1jaG8gMi05LTIKLQkJCQlEYWl3YXVueXUgYmxkZyAzRgotCQkJCUhhY2hpb2ppLWNpdHkgVG9reW8gMTUwLTAwMDEKLQkJCQlKQVBBTgotCi0wMC0xQi0xQiAgIChoZXgpCQlTaWVtZW5zIEFHLAotMDAxQjFCICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQUcsCi0JCQkJSSBJQSBTQyBFV0sgUFUxLCBPZXN0bGljaGUgUmhlaW5icnVlY2tlbnN0cmFzc2UgNTAKLQkJCQk3NjE4MSwgS2FybHNydWhlIEJhZGVuIFd1ZXJ0dGVtYmVyZyAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLTFDICAgKGhleCkJCUNvaGVyZW50Ci0wMDFCMUMgICAgIChiYXNlIDE2KQkJQ29oZXJlbnQKLQkJCQkxMjgwIEJsdWVzIEhpbGxzIEF2ZS4KLQkJCQlCbG9vbWZpZWxkIENUIDA2MDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0xRCAgIChoZXgpCQlQaG9lbml4IEludGVybmF0aW9uYWwgQ28uLCBMdGQKLTAwMUIxRCAgICAgKGJhc2UgMTYpCQlQaG9lbml4IEludGVybmF0aW9uYWwgQ28uLCBMdGQKLQkJCQkxMUYuIE5vLjQyLTEsIFNlYy4xLCBaaG9uZ3lhbmcgTi4gUmQuIEJlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi0xRSAgIChoZXgpCQlIQVJUIENvbW11bmljYXRpb24gRm91bmRhdGlvbgotMDAxQjFFICAgICAoYmFzZSAxNikJCUhBUlQgQ29tbXVuaWNhdGlvbiBGb3VuZGF0aW9uCi0JCQkJU1RFIDEtMzUwCi0JCQkJOTM5MCBSZXNlYXJjaCBCbHZkCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0xRiAgIChoZXgpCQlERUxUQSAtIERhbmlzaCBFbGVjdHJvbmljcywgTGlnaHQgJiBBY291c3RpY3MKLTAwMUIxRiAgICAgKGJhc2UgMTYpCQlERUxUQSAtIERhbmlzaCBFbGVjdHJvbmljcywgTGlnaHQgJiBBY291c3RpY3MKLQkJCQlWZW5saWdoZWRzdmVqIDQKLQkJCQlIP3JzaG9sbSAgREstMjk3MAotCQkJCURFTk1BUksKLQotMDAtMUItMjAgICAoaGV4KQkJVFBpbmUgVGVjaG5vbG9neQotMDAxQjIwICAgICAoYmFzZSAxNikJCVRQaW5lIFRlY2hub2xvZ3kKLQkJCQkzRiwgTm8uMSwgQU4tSSBSZCwKLQkJCQlLZWVsdW5nICAxMTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTIxICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxQjIxICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUItMjIgICAoaGV4KQkJUGFsaXQgTWljcm9zeXN0ZW1zICggSC5LLikgTHRkLgotMDAxQjIyICAgICAoYmFzZSAxNikJCVBhbGl0IE1pY3Jvc3lzdGVtcyAoIEguSy4pIEx0ZC4KLQkJCQlSb29tIDQtNiwxMUYsTmFuIEZ1bmcgQ29tbWVyY2lhbCBDZW50ZXIKLQkJCQkxOSBMYW0gTG9rIFJvYWQsS293bG9vbiBCYXkKLQkJCQlLb3dsb29uICAxMTEKLQkJCQlIT05HIEtPTkcKLQotMDAtMUItMjMgICAoaGV4KQkJU2ltcGxlQ29tVG9vbHMKLTAwMUIyMyAgICAgKGJhc2UgMTYpCQlTaW1wbGVDb21Ub29scwotCQkJCTU5OCBJbmRpYW4gVHJhaWwgUmQgUy4KLQkJCQlTdWl0ZSAjMTAyCi0JCQkJSW5kaWFuIFRyYWlsIE5DIDI4MDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0yNCAgIChoZXgpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotMDAxQjI0ICAgICAoYmFzZSAxNikJCVF1YW50YSBDb21wdXRlciBJbmMuCi0JCQkJTm8uIDIxMSwgV2VuIEh3YSAybmQgUmQuLAotCQkJCUt1ZWkgU2hhbiBIc2lhbmcgVGFvIFl1YW4gU2hpZW4gMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi0yNSAgIChoZXgpCQlOb3J0ZWwKLTAwMUIyNSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUItMjYgICAoaGV4KQkJUk9OLVRlbGVjb20gWkFPCi0wMDFCMjYgICAgIChiYXNlIDE2KQkJUk9OLVRlbGVjb20gWkFPCi0JCQkJMTUgQSwgWmFyZWNobmF5YSBzdC4KLQkJCQlUcmVoZ29ybnkgQ2hlbHlhYmluc2sgcmVnaW9uIDQ1NjA4MAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xQi0yNyAgIChoZXgpCQlNZXJsaW4gQ1NJCi0wMDFCMjcgICAgIChiYXNlIDE2KQkJTWVybGluIENTSQotCQkJCTEyNjI1IERhbmllbHNvbiBDb3VydAotCQkJCVN1aXRlIDEwOQotCQkJCVBvd2F5IENBIDkyMDY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0yOCAgIChoZXgpCQlQT0xZR09OLCBKU0MKLTAwMUIyOCAgICAgKGJhc2UgMTYpCQlQT0xZR09OLCBKU0MKLQkJCQkzNy8xLCBLYXJsIE1hcnggc3RyLiwgZmxvb3IgNQotCQkJCVVmYSBCYXNoa29ydG9zdGFuIDQ1MDA3NwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xQi0yOSAgIChoZXgpCQlBdmFudGlzLkNvLixMdGQKLTAwMUIyOSAgICAgKGJhc2UgMTYpCQlBdmFudGlzLkNvLixMdGQKLQkJCQk1MDIgU0VPSUwgQkxERy4KLQkJCQkxNTQzLTggU0VPQ0hPLURPTkcsIFNFT0NITy1HVQotCQkJCVNFT1VMICAxMzItODcyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTJBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUIyQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTJCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUIyQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTJDICAgKGhleCkJCUFUUk9OIGVsZWN0cm9uaWMgR21iSAotMDAxQjJDICAgICAoYmFzZSAxNikJCUFUUk9OIGVsZWN0cm9uaWMgR21iSAotCQkJCUFtIFppZWdlbHN0YWRlbCAxMiArIDE0Ci0JCQkJTWFya3QgU2Nod2FiZW4gIDg1NTcwCi0JCQkJR0VSTUFOWQotCi0wMC0xQi0yRCAgIChoZXgpCQlNZWQtRW5nIFN5c3RlbXMgSW5jLgotMDAxQjJEICAgICAoYmFzZSAxNikJCU1lZC1FbmcgU3lzdGVtcyBJbmMuCi0JCQkJMjQwMCBTdC4gTGF1cmVudCBCbHZkLgotCQkJCU90dGF3YSBPbnRhcmlvIEsxRyA2QzQKLQkJCQlDQU5BREEKLQotMDAtMUItMkUgICAoaGV4KQkJU2lua3lvIEVsZWN0cm9uIEluYwotMDAxQjJFICAgICAoYmFzZSAxNikJCVNpbmt5byBFbGVjdHJvbiBJbmMKLQkJCQkzLTMtMjEgYXNhaGlnYW9rYQotCQkJCWhpbm8tY2l0eSBUb2t5byAxOTEtMDA2NQotCQkJCUpBUEFOCi0KLTAwLTFCLTJGICAgKGhleCkJCU5FVEdFQVIgSW5jLgotMDAxQjJGICAgICAoYmFzZSAxNikJCU5FVEdFQVIgSW5jLgotCQkJCTQ1MDAgR3JlYXQgQW1lcmljYSBQYXJrd2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTMwICAgKGhleCkJCVNvbGl0ZWNoIEluYy4KLTAwMUIzMCAgICAgKGJhc2UgMTYpCQlTb2xpdGVjaCBJbmMuCi0JCQkJMTgzOCBNYWluIFN0cmVldAotCQkJCVN0ZXZlbnN2aWxsZSBNRCAyMTY2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMzEgICAoaGV4KQkJTmV1cmFsIEltYWdlLiBDby4gTHRkLgotMDAxQjMxICAgICAoYmFzZSAxNikJCU5ldXJhbCBJbWFnZS4gQ28uIEx0ZC4KLQkJCQlBMzA3LCBDQVNJLCBPc2FrYSBVbml2LgotCQkJCTItMSwgWWFtYWRhLW9rYQotCQkJCVN1aXRhIGNpdHkgT3Nha2EgNTY1LTA4NzEKLQkJCQlKQVBBTgotCi0wMC0xQi0zMiAgIChoZXgpCQlRTG9naWMgQ29ycG9yYXRpb24KLTAwMUIzMiAgICAgKGJhc2UgMTYpCQlRTG9naWMgQ29ycG9yYXRpb24KLQkJCQkyNjY1MCBBbGlzbyBWaWVqbyBQYXJrd2F5Ci0JCQkJQWxpc28gVmllam8gQ2FsaWZvcm5pYSA5MjY1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMzMgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUIzMyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUItMzQgICAoaGV4KQkJRm9jdXMgU3lzdGVtIEluYy4KLTAwMUIzNCAgICAgKGJhc2UgMTYpCQlGb2N1cyBTeXN0ZW0gSW5jLgotCQkJCTE5Ri0xLCBOby4gMjY2IFdlbiBId2EgMm5kIFJkLiwgU2VjLiAxCi0JCQkJTGlua291IFRhaXBlaSBDb3VudHkgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi0zNSAgIChoZXgpCQlDaG9uZ1FpbmcgSklOT1UgU2NpZW5jZSAmIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ08uLEx0ZAotMDAxQjM1ICAgICAoYmFzZSAxNikJCUNob25nUWluZyBKSU5PVSBTY2llbmNlICYgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDTy4sTHRkCi0JCQkJQ2h1YW5neWV5dWFuIDIwOCMgS2V5dWFuIDNyZCBSb2FkIDEwNiMKLQkJCQkgSGktVGVjaCBEZXZlbG9wbWVudCBab25lCi0JCQkJQ2hvbmdxaW5nICA0MDAwMzAKLQkJCQlDSElOQQotCi0wMC0xQi0zNiAgIChoZXgpCQlUc3ViYXRhIEVuZ2luZWVyaW5nIENvLixMdGQuIChIZWFkIE9mZmljZSkKLTAwMUIzNiAgICAgKGJhc2UgMTYpCQlUc3ViYXRhIEVuZ2luZWVyaW5nIENvLixMdGQuIChIZWFkIE9mZmljZSkKLQkJCQlLb3lhbmFnaSAxLTIKLQkJCQlTZW5qdSBibGQuCi0JCQkJSWJhcmFraSBPc2FrYSA1NjctMDg1MgotCQkJCUpBUEFOCi0KLTAwLTFCLTM3ICAgKGhleCkJCUNvbXB1dGVjIE95Ci0wMDFCMzcgICAgIChiYXNlIDE2KQkJQ29tcHV0ZWMgT3kKLQkJCQlKdWhvbGFua2F0dSA4Ci0JCQkJUEwgNjYKLQkJCQlLb3V2b2xhIEt5bWkgNDUyMDAKLQkJCQlGSU5MQU5ECi0KLTAwLTFCLTM4ICAgKGhleCkJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuCi0wMDFCMzggICAgIChiYXNlIDE2KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURC4KLQkJCQlOTy4gMjUsIFRIRSAzUkQgQVZFTlVFCi0JCQkJS1VOU0hBTiBFWFBPUlQgUFJPQ0VTU0lORyBaT05FCi0JCQkJS1VOU0hBTiBDSVRZIFNVWkhPVSBQUk9WSU5DRSAyMTUzMDAKLQkJCQlDSElOQQotCi0wMC0xQi0zOSAgIChoZXgpCQlQcm94aWNhc3QKLTAwMUIzOSAgICAgKGJhc2UgMTYpCQlQcm94aWNhc3QKLQkJCQkzMTIgU3VubnlmaWVsZCBEcml2ZQotCQkJCVN1aXRlIDIwMAotCQkJCUdsZW5zaGF3IFBBIDE1MTE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0zQSAgIChoZXgpCQlTSU1TIENvcnAuCi0wMDFCM0EgICAgIChiYXNlIDE2KQkJU0lNUyBDb3JwLgotCQkJCVJBT04gQmxkZywgOUYsIDkyLTgsIFdvbmh5b3JvLTJnYSwgWW9uZ3Nhbi1ndQotCQkJCVNlb3VsICAxNDAtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTNCICAgKGhleCkJCVlpLVFpbmcgQ08uLCBMVEQKLTAwMUIzQiAgICAgKGJhc2UgMTYpCQlZaS1RaW5nIENPLiwgTFRECi0JCQkJMzEwIFJPT00sMTJGCi0JCQkJTk8uNS0xIEhFTkcgWUFORyBSRC4KLQkJCQlUQUlQRUkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItM0MgICAoaGV4KQkJU29mdHdhcmUgVGVjaG5vbG9naWVzIEdyb3VwLEluYy4KLTAwMUIzQyAgICAgKGJhc2UgMTYpCQlTb2Z0d2FyZSBUZWNobm9sb2dpZXMgR3JvdXAsSW5jLgotCQkJCTEwMzMwIFcuIFJvb3NldmVsdCBSb2FkCi0JCQkJU3VpdGUgMzEwCi0JCQkJV2VzY2hlc3RlciBJTCA2MDE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItM0QgICAoaGV4KQkJRXVyb1RlbCBTcGEKLTAwMUIzRCAgICAgKGJhc2UgMTYpCQlFdXJvVGVsIFNwYQotCQkJCXZpYWxlIE1hcnRpcmkgZGVsbGEgTGliZXJ0YSw0Ci0JCQkJTGlzc29uZSBNaWxhbiAyMDAzNQotCQkJCUlUQUxZCi0KLTAwLTFCLTNFICAgKGhleCkJCUN1cnRpcywgSW5jLgotMDAxQjNFICAgICAoYmFzZSAxNikJCUN1cnRpcywgSW5jLgotCQkJCTI0MDUgQW5uYXBvbGlzIExhbmUKLQkJCQlTdWl0ZSAyMjAKLQkJCQlNaW5uZWFwb2xpcyBNTiA1NTQ0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItM0YgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotMDAxQjNGICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkLgotCQkJCVJvc2V2aWxsZSBDYWxpZm9ybmlhIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi00MCAgIChoZXgpCQlOZXR3b3JrIEF1dG9tYXRpb24gbXhjIEFCCi0wMDFCNDAgICAgIChiYXNlIDE2KQkJTmV0d29yayBBdXRvbWF0aW9uIG14YyBBQgotCQkJCUJveCA3Mjk0Ci0JCQkJU3RvY2tob2xtICAxMDM5MAotCQkJCVNXRURFTgotCi0wMC0xQi00MSAgIChoZXgpCQlHZW5lcmFsIEluZmluaXR5IENvLixMdGQuCi0wMDFCNDEgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBJbmZpbml0eSBDby4sTHRkLgotCQkJCTNGLE5vLjE2OSwgWGluZy1haSBSZCwKLQkJCQlOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi00MiAgIChoZXgpCQlXaXNlICYgQmx1ZQotMDAxQjQyICAgICAoYmFzZSAxNikJCVdpc2UgJiBCbHVlCi0JCQkJIzcxNS0zIEFueWFuZyBNZWdhdmFsbGV5Ci0JCQkJNzk5IEd3YW55YW5nLURvbmcsIERvbmdhbi1HdQotCQkJCUFueWFuZy1TaSBHeXVuZ2dpLURvIDQzMS03NjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItNDMgICAoaGV4KQkJQmVpamluZyBERyBUZWxlY29tbXVuaWNhdGlvbnMgZXF1aXBtZW50IENvLixMdGQKLTAwMUI0MyAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIERHIFRlbGVjb21tdW5pY2F0aW9ucyBlcXVpcG1lbnQgQ28uLEx0ZAotCQkJCU5vLjUgSmlhbmd0YWkgUm9hZCwgQ2hhb3lhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwMTYKLQkJCQlDSElOQQotCi0wMC0xQi00NCAgIChoZXgpCQlTYW5EaXNrIENvcnBvcmF0aW9uCi0wMDFCNDQgICAgIChiYXNlIDE2KQkJU2FuRGlzayBDb3Jwb3JhdGlvbgotCQkJCTYwMSBNY0NhcnRoeSBCb3VsZXZhcmQKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNDUgICAoaGV4KQkJQUJCIEFTLCBEaXZpc2lvbiBBdXRvbWF0aW9uIFByb2R1Y3RzCi0wMDFCNDUgICAgIChiYXNlIDE2KQkJQUJCIEFTLCBEaXZpc2lvbiBBdXRvbWF0aW9uIFByb2R1Y3RzCi0JCQkJQmVyZ2VydmVpZW4gMTIKLQkJCQlQT0IgOTAKLQkJCQlCaWxsaW5nc3RhZCAgTk8tMTM3NQotCQkJCU5PUldBWQotCi0wMC0xQi00NiAgIChoZXgpCQlCbHVlb25lIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxQjQ2ICAgICAoYmFzZSAxNikJCUJsdWVvbmUgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJUm9vbSAzMDksMyBGbG9vciwgNDA0IEJ1aWxkaW5nLCBTaGFuZ0J1IGluZHVzdHJpYWwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDI4Ci0JCQkJQ0hJTkEKLQotMDAtMUItNDcgICAoaGV4KQkJRnV0YXJxdWUgQS9TCi0wMDFCNDcgICAgIChiYXNlIDE2KQkJRnV0YXJxdWUgQS9TCi0JCQkJQWFnYWRlIDE1QgotCQkJCUFhbGJvcmcgIDkwMDAKLQkJCQlERU5NQVJLCi0KLTAwLTFCLTQ4ICAgKGhleCkJCVNoZW56aGVuIExhbnRlY2ggRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDFCNDggICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gTGFudGVjaCBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkzMDYgUm9vbSwgTmFuc2hhbiBXYXRlciBCdWlsZGluZywKLQkJCQlOYW5oYWkgUm9hZCwgTmFuc2hhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTIKLQkJCQlDSElOQQotCi0wMC0xQi00OSAgIChoZXgpCQlSb2JlcnRzIFJhZGlvIGxpbWl0ZWQKLTAwMUI0OSAgICAgKGJhc2UgMTYpCQlSb2JlcnRzIFJhZGlvIGxpbWl0ZWQKLQkJCQlTd2ludG9uIFdvcmtzCi0JCQkJVGFsYm90IFJvYWQKLQkJCQlNZXhib3JvdWdoIFNvdXRoIFlvcmtzaGlyZSBTNjQgOEFKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItNEEgICAoaGV4KQkJVyZXIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDFCNEEgICAgIChiYXNlIDE2KQkJVyZXIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjkwMyBCdW5rZXIgSGlsbCBMYW5lCi0JCQkJU3VpdGUgMTA3Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTRCICAgKGhleCkJCVNBTklPTiBDby4sIEx0ZC4KLTAwMUI0QiAgICAgKGJhc2UgMTYpCQlTQU5JT04gQ28uLCBMdGQuCi0JCQkJIzIwOCBBQ0VURUNITk8gVE9XRVIsIDU1LTcsIE1VTExBRS1ET05HIDNHQSwKLQkJCQlZRU9OR0RFVU5HUE8tR1UgU0VPVUwgMTUwLTk5MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi00QyAgIChoZXgpCQlTaWdudGVjaAotMDAxQjRDICAgICAoYmFzZSAxNikJCVNpZ250ZWNoCi0JCQkJNjA5IFNlb25pbCBUZWNobm9waWEgNjA5Ci0JCQkJU2FuZ2RhZXdvbiAxRG9uZyBKdW5nd29uIGd1Ci0JCQkJU3VuZ25hbXNpIEt5dW5nZ2lkbyA0NjItMTIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTREICAgKGhleCkJCUFyZWNhIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMUI0RCAgICAgKGJhc2UgMTYpCQlBcmVjYSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJOEYuLCBOby4gMjIsIExhbmUgMzUsIEppLUh1IFJkLgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi00RSAgIChoZXgpCQlOYXZtYW4gTmV3IFplYWxhbmQKLTAwMUI0RSAgICAgKGJhc2UgMTYpCQlOYXZtYW4gTmV3IFplYWxhbmQKLQkJCQk3LTIxIEthd2FuYSBTdHJlZXQKLQkJCQlOb3J0aGNvdGUKLQkJCQlBdWNrbGFuZCAgMDYyNwotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTFCLTRGICAgKGhleCkJCUF2YXlhIEluYy4KLTAwMUI0RiAgICAgKGJhc2UgMTYpCQlBdmF5YSBJbmMuCi0JCQkJUm9vbSAxQSAzMDkKLQkJCQkzMDcgTWlkZGxldG93biBMaW5jcm9mdCBSZAotCQkJCUxpbmNyb2Z0IE5KIDA3NzM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi01MCAgIChoZXgpCQlOaXpobnkgTm92Z29yb2QgRmFjdG9yeSBuYW1lZCBhZnRlciBNLkZydW56ZSwgRlNVRSAoTlppRikKLTAwMUI1MCAgICAgKGJhc2UgMTYpCQlOaXpobnkgTm92Z29yb2QgRmFjdG9yeSBuYW1lZCBhZnRlciBNLkZydW56ZSwgRlNVRSAoTlppRikKLQkJCQkxNzQsIEdhZ2FyaW5hIEF2ZW51ZQotCQkJCU5pemhueSBOb3Znb3JvZCAgNjAzOTUwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFCLTUxICAgKGhleCkJCVZlY3RvciBUZWNobm9sb2d5IENvcnAuCi0wMDFCNTEgICAgIChiYXNlIDE2KQkJVmVjdG9yIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQlOby43LCBMYW5lMTIsIFlham91IFJvYWQuCi0JCQkJVHVjaGVuZyBUYWlwZWkgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi01MiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMUI1MiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi01MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFCNTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi01NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFCNTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi01NSAgIChoZXgpCQlIdXJjbyBBdXRvbWF0aW9uIEx0ZC4KLTAwMUI1NSAgICAgKGJhc2UgMTYpCQlIdXJjbyBBdXRvbWF0aW9uIEx0ZC4KLQkJCQk2RiwgTm8uIDMxLCBTaGludGFpIFJkLgotCQkJCUp1YmVpIENpdHksIEhzaW5jaHUgSHNpZW4gMzAyNDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTU2ICAgKGhleCkJCVRlaHV0aSBOZXR3b3JrcyBMdGQuCi0wMDFCNTYgICAgIChiYXNlIDE2KQkJVGVodXRpIE5ldHdvcmtzIEx0ZC4KLQkJCQkxLCBTaGVua2FyIFN0LgotCQkJCUhlcnR6bGl5YSAgNDYxMDUKLQkJCQlJU1JBRUwKLQotMDAtMUItNTcgICAoaGV4KQkJU0VNSU5ESUEgU1lTVEVNUyBQUklWQVRFIExJTUlURUQKLTAwMUI1NyAgICAgKGJhc2UgMTYpCQlTRU1JTkRJQSBTWVNURU1TIFBSSVZBVEUgTElNSVRFRAotCQkJCSMxMTA2LzksQS5NLkluZHVzdHJpYWwgRXN0YXRlLEdhcnZlYmhhaSBwYWx5YSwKLQkJCQk3dGggTWlsZSwgSG9zdXIgUm9hZCwKLQkJCQlCQU5HQUxPUkUgS0FSTkFUQUtBIDU2MDA2OAotCQkJCUlORElBCi0KLTAwLTFCLTU4ICAgKGhleCkJCUFDRSBDQUQgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLTAwMUI1OCAgICAgKGJhc2UgMTYpCQlBQ0UgQ0FEIEVudGVycHJpc2UgQ28uLCBMdGQuCi0JCQkJMkYsIE5vLiA5NCwgQmFvIENodW5nIFJvYWQsCi0JCQkJSHNpbiBUaWVuIENpdHksIFRhaXBlaSBIc2llbiAyMzE0NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItNTkgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTAwMUI1OSAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OAotCQkJCVNXRURFTgotCi0wMC0xQi01QSAgIChoZXgpCQlBcG9sbG8gSW1hZ2luZyBUZWNobm9sb2dpZXMsIEluYy4KLTAwMUI1QSAgICAgKGJhc2UgMTYpCQlBcG9sbG8gSW1hZ2luZyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxODU0NSBSYW5nZWxhbmQgUmQKLQkJCQlSYW1vbmEgQ0EgOTIwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTVCICAgKGhleCkJCTJXaXJlLCBJbmMuCi0wMDFCNUIgICAgIChiYXNlIDE2KQkJMldpcmUsIEluYy4KLQkJCQkxNzA0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi01QyAgIChoZXgpCQlBenVyZXRlYyBDby4sIEx0ZC4KLTAwMUI1QyAgICAgKGJhc2UgMTYpCQlBenVyZXRlYyBDby4sIEx0ZC4KLQkJCQkzRiwgTm8uOCwgQWxsZXkgOCwgTGFuZSA0NSwgQmFveGluZyBSZC4sCi0JCQkJWGluZGlhbiBDaXR5IFRhaXBlaSBDb3VudHkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi01RCAgIChoZXgpCQlWb2xvbGluayBQdHkgTHRkCi0wMDFCNUQgICAgIChiYXNlIDE2KQkJVm9sb2xpbmsgUHR5IEx0ZAotCQkJCUxldmVsIDIsIDU0MSBCbGFja2J1cm4gUm9hZAotCQkJCU1vdW50IFdhdmVybGV5IFZpY3RvcmlhIDMxNDkKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUItNUUgICAoaGV4KQkJQlBMIExpbWl0ZWQKLTAwMUI1RSAgICAgKGJhc2UgMTYpCQlCUEwgTGltaXRlZAotCQkJCUJQTCBUb3dlcnMKLQkJCQkxMywgS2FzdHVyYmEgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwMDAxCi0JCQkJSU5ESUEKLQotMDAtMUItNUYgICAoaGV4KQkJQWxpZW4gVGVjaG5vbG9neQotMDAxQjVGICAgICAoYmFzZSAxNikJCUFsaWVuIFRlY2hub2xvZ3kKLQkJCQkxODIyMCBCdXR0ZXJmaWVsZCBCbHZkLgotCQkJCU1vcmdhbiBIaWxsIENBIDk1MDM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi02MCAgIChoZXgpCQlOQVZJR09OIEFHCi0wMDFCNjAgICAgIChiYXNlIDE2KQkJTkFWSUdPTiBBRwotCQkJCUJlcmxpbmVyIFBsYXR6IDExCi0JCQkJV3VlcnpidXJnIEJhdmFyaWEgOTcwODAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLTYxICAgKGhleCkJCURpZ2l0YWwgQWNvdXN0aWNzLCBMTEMKLTAwMUI2MSAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIEFjb3VzdGljcywgTExDCi0JCQkJMzcgU2hlcndvb2QgVGVycmFjZQotCQkJCUxha2UgQmx1ZmYgSUwgNjAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTYyICAgKGhleCkJCUpIVCBPcHRvZWxlY3Ryb25pY3MgQ28uLEx0ZC4KLTAwMUI2MiAgICAgKGJhc2UgMTYpCQlKSFQgT3B0b2VsZWN0cm9uaWNzIENvLixMdGQuCi0JCQkJSGV0aWFuIEluZHVzdHJpYWwgUGFyayAycmQsSG91amllIFRvd24sIERvbmd1YW4sCi0JCQkJRG9uZ2d1YW4gR3Vhbmdkb25nIDUyMzk0NQotCQkJCUNISU5BCi0KLTAwLTFCLTYzICAgKGhleCkJCUFwcGxlIENvbXB1dGVyIEluYy4KLTAwMUI2MyAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlciBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENhbGlmb3JuaWEgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTY0ICAgKGhleCkJCUlzYWFjTGFuZEtvcmVhIENvLiwgTHRkLAotMDAxQjY0ICAgICAoYmFzZSAxNikJCUlzYWFjTGFuZEtvcmVhIENvLiwgTHRkLAotCQkJCVJtIDYwOCwgSGFuZ2FuZy1IeXVuZGFpLUh5ZWwgQmxkZy4gMi0zNiwKLQkJCQlIYW5nYW5nbm8gMi1nYSwgWW9uZ3Nhbi1ndSwKLQkJCQlTZW91bCAgMTQwLTg3MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi02NSAgIChoZXgpCQlDaGluYSBHcmlkY29tIENvLiwgTHRkCi0wMDFCNjUgICAgIChiYXNlIDE2KQkJQ2hpbmEgR3JpZGNvbSBDby4sIEx0ZAotCQkJCTIxL0YsIEh1YW5lbmcgQnVpbGRpbmcsIE5vLiAyMDY4IFNoZW5uYW4gTWFpbiBSb2FkCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDAwODYKLQkJCQlDSElOQQotCi0wMC0xQi02NiAgIChoZXgpCQlTZW5uaGVpc2VyIGVsZWN0cm9uaWMgR21iSCAmIENvLiBLRwotMDAxQjY2ICAgICAoYmFzZSAxNikJCVNlbm5oZWlzZXIgZWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0JCQkJQW0gTGFib3IgMQotCQkJCVdlZGVtYXJrIE5pZWRlcnNhY2hzZW4gMzA5MDAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLTY3ICAgKGhleCkJCVViaXF1aXN5cyBMdGQKLTAwMUI2NyAgICAgKGJhc2UgMTYpCQlVYmlxdWlzeXMgTHRkCi0JCQkJVGhlIFN0ZWxsYSBCdWlsZGluZwotCQkJCVdpbmRtaWxsIEhpbGwgQnVzaW5lc3MgUGFyawotCQkJCVN3aW5kb24gV2lsdHNoaXJlIFNONSA2TlgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi02OCAgIChoZXgpCQlNb2RubmV0IENvLiwgTHRkCi0wMDFCNjggICAgIChiYXNlIDE2KQkJTW9kbm5ldCBDby4sIEx0ZAotCQkJCTIxMzkgRGFlbXl1bmctRG9uZyBESVAgbWFpbiBCL0QgUm9vbSM1MDUsIE5hbWd1Ci0JCQkJRGFlZ3UgS3l1bmdzYW5nIEJvb2tkbyA3MDUtNzAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTY5ICAgKGhleCkJCUVxdWFsaW5lIENvcnBvcmF0aW9uCi0wMDFCNjkgICAgIChiYXNlIDE2KQkJRXF1YWxpbmUgQ29ycG9yYXRpb24KLQkJCQk5RiwgTm8uIDIzNCwgU2VjdGlvbiA0LCBDaGVuZy1EZSBSb2FkLAotCQkJCVRhaXBlaSBIc2llbiAyNTE2MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItNkEgICAoaGV4KQkJUG93ZXJ3YXZlIFRlY2hub2xvZ2llcyBTd2VkZW4gQUIKLTAwMUI2QSAgICAgKGJhc2UgMTYpCQlQb3dlcndhdmUgVGVjaG5vbG9naWVzIFN3ZWRlbiBBQgotCQkJCTE2NCAyNgotCQkJCUtpc3RhCi0JCQkJS25hcnJhcm5hc2dhdGFuIDcsIEtpc3RhICAKLQkJCQlTV0VERU4KLQotMDAtMUItNkIgICAoaGV4KQkJU3d5eCBTb2x1dGlvbnMgQUcKLTAwMUI2QiAgICAgKGJhc2UgMTYpCQlTd3l4IFNvbHV0aW9ucyBBRwotCQkJCUpvc2VwaC12b24tRnJhdW5ob2Zlci1zdHIuMTNhCi0JCQkJRG9ydG11bmQgTlJXIDQ0MjI3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQi02QyAgIChoZXgpCQlMb29rWCBEaWdpdGFsIE1lZGlhIEJWCi0wMDFCNkMgICAgIChiYXNlIDE2KQkJTG9va1ggRGlnaXRhbCBNZWRpYSBCVgotCQkJCVJvZWtlbnZlbGR3ZWcgMQotCQkJCUJydW5zc3VtIExpbWJ1cmcgNjQ0NkRLCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUItNkQgICAoaGV4KQkJTWlkdHJvbmljcywgSW5jLgotMDAxQjZEICAgICAoYmFzZSAxNikJCU1pZHRyb25pY3MsIEluYy4KLQkJCQk3MDAwIE1vbnJvZSBTdC4KLQkJCQlXaWxsb3dicm9vayBJTCA2MDUyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNkUgICAoaGV4KQkJQW51ZSBTeXN0ZW1zLCBJbmMuCi0wMDFCNkUgICAgIChiYXNlIDE2KQkJQW51ZSBTeXN0ZW1zLCBJbmMuCi0JCQkJOTExMSBKb2xseXZpbGxlIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTZGICAgKGhleCkJCVRlbGV0cmFrIEx0ZAotMDAxQjZGICAgICAoYmFzZSAxNikJCVRlbGV0cmFrIEx0ZAotCQkJCTIxNCBLZXBhIFJvYWQKLQkJCQlNaXNzaW9uIEJheQotCQkJCUF1Y2tsYW5kICAxMDcxCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMUItNzAgICAoaGV4KQkJSVJJIFViaXRlcSwgSU5DLgotMDAxQjcwICAgICAoYmFzZSAxNikJCUlSSSBVYml0ZXEsIElOQy4KLQkJCQlTaGluanVrdS1Ob211cmEgQmxkZy4gNDdGLAotCQkJCTEtMjYtMiBOaXNoaS1zaGluanVrdSwKLQkJCQlTaGluanVrdS1rdSBUb2t5byAxNjMtMDU0NwotCQkJCUpBUEFOCi0KLTAwLTFCLTcxICAgKGhleCkJCVRlbHVsYXIgQ29ycC4KLTAwMUI3MSAgICAgKGJhc2UgMTYpCQlUZWx1bGFyIENvcnAuCi0JCQkJMzExIFNvdXRoIFdhY2tlciBEcml2ZQotCQkJCVN1aXRlIDQzMDAKLQkJCQlDaGljYWdvIElMIDYwNjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi03MiAgIChoZXgpCQlTaWNlcCBzLnAuYS4KLTAwMUI3MiAgICAgKGJhc2UgMTYpCQlTaWNlcCBzLnAuYS4KLQkJCQlWaWEgY2FsYWJyaWEsIDE0Ci0JCQkJQ2VydGFsZG8gIDUwMDUyCi0JCQkJSVRBTFkKLQotMDAtMUItNzMgICAoaGV4KQkJRFRMIEJyb2FkY2FzdCBMdGQKLTAwMUI3MyAgICAgKGJhc2UgMTYpCQlEVEwgQnJvYWRjYXN0IEx0ZAotCQkJCUpvaG5zb24ncyBFc3RhdGUKLQkJCQlTaWx2ZXJkYWxlIFJvYWQKLQkJCQlIQVlFUyBNaWRkbGVzZXggVUIzIDNCQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLTc0ICAgKGhleCkJCU1pcmFMaW5rIENvcnBvcmF0aW9uCi0wMDFCNzQgICAgIChiYXNlIDE2KQkJTWlyYUxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMTEgU1cgNXRoIEF2ZS4KLQkJCQlTdGUuIDEwMDAKLQkJCQlQb3J0bGFuZCBPUiA5NzIwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNzUgICAoaGV4KQkJSHlwZXJtZWRpYSBTeXN0ZW1zCi0wMDFCNzUgICAgIChiYXNlIDE2KQkJSHlwZXJtZWRpYSBTeXN0ZW1zCi0JCQkJMkIgQmVyZ21hbiBTdC4KLQkJCQlSYWJiaW4gSW5kdXN0cmlhbCBQYXJrCi0JCQkJUmVob3ZvdCAgNzY3MDUKLQkJCQlJU1JBRUwKLQotMDAtMUItNzYgICAoaGV4KQkJUmlwY29kZSwgSW5jLgotMDAxQjc2ICAgICAoYmFzZSAxNikJCVJpcGNvZGUsIEluYy4KLQkJCQkxMTMwIEUuIEFyYXBhaG8gUm9hZAotCQkJCVN1aXRlIDQzNQotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTc3ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxQjc3ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUItNzggICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDFCNzggICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQltczA0MDgwMQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTc5ICAgKGhleCkJCUZBSVZFTEVZIFRSQU5TUE9SVAotMDAxQjc5ICAgICAoYmFzZSAxNikJCUZBSVZFTEVZIFRSQU5TUE9SVAotCQkJCVpJIGR1IGJvaXMgZGUgcGxhbnRlCi0JCQkJcnVlIGFtZWxpYSBlYXJoYXJ0Ci0JCQkJTEEgVklMTEUgQVVYIERBTUVTICAzNzcwMAotCQkJCUZSQU5DRQotCi0wMC0xQi03QSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMUI3QSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xQi03QiAgIChoZXgpCQlUaGUgVGludG9tZXRlciBMdGQKLTAwMUI3QiAgICAgKGJhc2UgMTYpCQlUaGUgVGludG9tZXRlciBMdGQKLQkJCQlTb2xhciBXYXkKLQkJCQlTb2xzdGljZSBQYXJrCi0JCQkJQW1lc2J1cnkgV2lsdHNoaXJlIFNQNCA3U1oKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi03QyAgIChoZXgpCQlBICYgUiBDYW1icmlkZ2UKLTAwMUI3QyAgICAgKGJhc2UgMTYpCQlBICYgUiBDYW1icmlkZ2UKLQkJCQlQZW1icm9rZSBBdmVudWUKLQkJCQlXYXRlcmJlYWNoCi0JCQkJQ2FtYnJpZGdlIENBTUJTIENCMjUgOVFSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItN0QgICAoaGV4KQkJQ1hSIEFuZGVyc29uIEphY29ic29uCi0wMDFCN0QgICAgIChiYXNlIDE2KQkJQ1hSIEFuZGVyc29uIEphY29ic29uCi0JCQkJUnVlIGRlIGwnb3JuZXR0ZQotCQkJCUFib25kYW50ICAyODQxMAotCQkJCUZSQU5DRQotCi0wMC0xQi03RSAgIChoZXgpCQlCZWNrbWFubiBHbWJICi0wMDFCN0UgICAgIChiYXNlIDE2KQkJQmVja21hbm4gR21iSAotCQkJCUJyYW5kdHN0ci4gMQotCQkJCUhvZXZlbGhvZiBOUlcgMzMxNjEKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLTdGICAgKGhleCkJCVRNTiBUZWNobm9sb2dpZXMgVGVsZWNvbXVuaWNhY29lcyBMdGRhCi0wMDFCN0YgICAgIChiYXNlIDE2KQkJVE1OIFRlY2hub2xvZ2llcyBUZWxlY29tdW5pY2Fjb2VzIEx0ZGEKLQkJCQlSdWEgTmlsemEsIDQyMgotCQkJCVNhbyBQYXVsbyBTUCAwMzY1MS0xMjAKLQkJCQlCUkFaSUwKLQotMDAtMUItODAgICAoaGV4KQkJTE9SRCBDb3Jwb3JhdGlvbgotMDAxQjgwICAgICAoYmFzZSAxNikJCUxPUkQgQ29ycG9yYXRpb24KLQkJCQkyMDAwIFdlc3QgR3JhbmR2aWV3IEJsdmQKLQkJCQlFcmllIFBhIDE2NTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi04MSAgIChoZXgpCQlEQVRBUSBJbnN0cnVtZW50cywgSW5jLgotMDAxQjgxICAgICAoYmFzZSAxNikJCURBVEFRIEluc3RydW1lbnRzLCBJbmMuCi0JCQkJMjQxIFNwcmluZ3NpZGUgRHJpdmUKLQkJCQlBa3JvbiBPaGlvIDQ0MzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi04MiAgIChoZXgpCQlUYWl3YW4gU2VtaWNvbmR1Y3RvciBDby4sIEx0ZC4KLTAwMUI4MiAgICAgKGJhc2UgMTYpCQlUYWl3YW4gU2VtaWNvbmR1Y3RvciBDby4sIEx0ZC4KLQkJCQkxMUYsIE5vLiAyMDUsIFNlYy4gMywgQmVpc2hpbiBSZCwKLQkJCQlTaGluZGlhbiBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi04MyAgIChoZXgpCQlGaW5zb2Z0IEx0ZAotMDAxQjgzICAgICAoYmFzZSAxNikJCUZpbnNvZnQgTHRkCi0JCQkJMTYtMTggSGF0dG9uIEdhcmRlbgotCQkJCUxvbmRvbiAgRUMxTiA4QVQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi04NCAgIChoZXgpCQlTY2FuIEVuZ2luZWVyaW5nIFRlbGVjb20KLTAwMUI4NCAgICAgKGJhc2UgMTYpCQlTY2FuIEVuZ2luZWVyaW5nIFRlbGVjb20KLQkJCQlTdm9ib2R5IHN0ci4gNzUKLQkJCQlWb3JvbmV6aCAgMzk0MDMwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFCLTg1ICAgKGhleCkJCU1BTiBEaWVzZWwgU0UKLTAwMUI4NSAgICAgKGJhc2UgMTYpCQlNQU4gRGllc2VsIFNFCi0JCQkJVGVnbGhvbG1zZ2FkZSA0MQotCQkJCUNvcGVuaGFnZW4gIDI0NTAKLQkJCQlERU5NQVJLCi0KLTAwLTFCLTg2ICAgKGhleCkJCUJvc2NoIEFjY2VzcyBTeXN0ZW1zIEdtYkgKLTAwMUI4NiAgICAgKGJhc2UgMTYpCQlCb3NjaCBBY2Nlc3MgU3lzdGVtcyBHbWJICi0JCQkJQ2hhcmxvdHRlbmJ1cmdlciBBbGxlZSA1MCAgICAgICAgICAgIAotCQkJCUFBQ0hFTiAgICBELTUyMDY4IAotCQkJCUdFUk1BTlkKLQotMDAtMUItODcgICAoaGV4KQkJRGVlcHNvdW5kIFRlY2guIENvLiwgTHRkCi0wMDFCODcgICAgIChiYXNlIDE2KQkJRGVlcHNvdW5kIFRlY2guIENvLiwgTHRkCi0JCQkJM0YgTm8uIDU3NiBTZWMuIDEsIE1pbnNoZW5nIE4uIFJkLiwgR3VlaXNoYW4gVG93bnNoaXAsCi0JCQkJVGFveXVhbiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi04OCAgIChoZXgpCQlEaXZpbmV0IEFjY2VzcyBUZWNobm9sb2dpZXMgTHRkCi0wMDFCODggICAgIChiYXNlIDE2KQkJRGl2aW5ldCBBY2Nlc3MgVGVjaG5vbG9naWVzIEx0ZAotCQkJCTR0aCBGbG9vciwgTWVkaWEgQ2VudGVyLAotCQkJCVNha2FhbCBOYWdhciwgQmFuZXIgUm9hZAotCQkJCVB1bmUgTWFoYXJhc2h0cmEgNDExMDA3Ci0JCQkJSU5ESUEKLQotMDAtMUItODkgICAoaGV4KQkJRU1aQSBWaXN1YWwgU2Vuc2UgTHRkLgotMDAxQjg5ICAgICAoYmFzZSAxNikJCUVNWkEgVmlzdWFsIFNlbnNlIEx0ZC4KLQkJCQkyMCBIYSd0YSdhcyBTdC4sIEJlaXRoIEhhcGFtb24KLQkJCQlzdWl0ZSAzOTEKLQkJCQlLZmFyIFNhYmEgIDQ0NDI1Ci0JCQkJSVNSQUVMCi0KLTAwLTFCLThBICAgKGhleCkJCTJNIEVsZWN0cm9uaWMgQS9TCi0wMDFCOEEgICAgIChiYXNlIDE2KQkJMk0gRWxlY3Ryb25pYyBBL1MKLQkJCQlNYWxlcnZlaiAxMAotCQkJCVRhYXN0cnVwICAyNjMwCi0JCQkJREVOTUFSSwotCi0wMC0xQi04QiAgIChoZXgpCQlORUMgQWNjZXNzVGVjaG5pY2EsIEx0ZC4KLTAwMUI4QiAgICAgKGJhc2UgMTYpCQlORUMgQWNjZXNzVGVjaG5pY2EsIEx0ZC4KLQkJCQk4MDAgU2hpbW9tYXRhCi0JCQkJS2FrZWdhd2EgU2hpenVva2EgNDM2LTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xQi04QyAgIChoZXgpCQlKTWljcm9uIFRlY2hub2xvZ3kgQ29ycC4KLTAwMUI4QyAgICAgKGJhc2UgMTYpCQlKTWljcm9uIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkxRiwgTm8uMTMsIElubm92YXRpb24gUm9hZCAxCi0JCQkJSHNpbmNodSBTY2llbmNlIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLThEICAgKGhleCkJCUVsZWN0cm9uaWMgQ29tcHV0ZXIgU3lzdGVtcywgSW5jLgotMDAxQjhEICAgICAoYmFzZSAxNikJCUVsZWN0cm9uaWMgQ29tcHV0ZXIgU3lzdGVtcywgSW5jLgotCQkJCTQxOCBEb25lZ2FsIERyaXZlCi0JCQkJVG93c29uIE1EIDIxMjg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi04RSAgIChoZXgpCQlIdWx1IFN3ZWRlbiBBQgotMDAxQjhFICAgICAoYmFzZSAxNikJCUh1bHUgU3dlZGVuIEFCCi0JCQkJQm94IDEyMzI4LCAxMDIyOAotCQkJCUtpc3RhIFN0b2NraG9sbSAxNjQgNDAKLQkJCQlTV0VERU4KLQotMDAtMUItOEYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQjhGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItOTAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQjkwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItOTEgICAoaGV4KQkJRUZLT04gQUcKLTAwMUI5MSAgICAgKGJhc2UgMTYpCQlFRktPTiBBRwotCQkJCUFuZHJpdHplciBSZWljaHNzdHJhc3NlIDY2Ci0JCQkJR3JheiBTdHlyaWEgODA0NQotCQkJCUFVU1RSSUEKLQotMDAtMUItOTIgICAoaGV4KQkJbC1hY291c3RpY3MKLTAwMUI5MiAgICAgKGJhc2UgMTYpCQlsLWFjb3VzdGljcwotCQkJCXBhcmMgZGUgbGEgZm9udGFpbmUgZGUgam91dmVuY2UKLQkJCQltYXJjb3Vzc2lzIGVzc29ubmUgOTE0NjIKLQkJCQlGUkFOQ0UKLQotMDAtMUItOTMgICAoaGV4KQkJSkMgRGVjYXV4IFNBIEROVAotMDAxQjkzICAgICAoYmFzZSAxNikJCUpDIERlY2F1eCBTQSBETlQKLQkJCQkyMSBydWUgY2xhdWRlIEJlcm5hcmQKLQkJCQlNQVVSRVBBUyAgNzgzMTAKLQkJCQlGUkFOQ0UKLQotMDAtMUItOTQgICAoaGV4KQkJVC5FLk0uQS4gUy5wLkEuCi0wMDFCOTQgICAgIChiYXNlIDE2KQkJVC5FLk0uQS4gUy5wLkEuCi0JCQkJdmlhIGRlbGxhIFNjaWVuemEgMjEgQS9DCi0JCQkJQ2FzdGVsbnVvdm8gUmFuZ29uZSBNb2RlbmEgNDEwNTEKLQkJCQlJVEFMWQotCi0wMC0xQi05NSAgIChoZXgpCQlWSURFTyBTWVNURU1TIFNSTAotMDAxQjk1ICAgICAoYmFzZSAxNikJCVZJREVPIFNZU1RFTVMgU1JMCi0JCQkJTG9jLiBHb3JpenpvLCAxNgotCQkJCTMzMDMwCi0JCQkJQ0FNSU5PIEFMIFRBR0xJQU1FTlRPIFVEIAotCQkJCUlUQUxZCi0KLTAwLTFCLTk2ICAgKGhleCkJCUdlbmVyYWwgU2Vuc2luZwotMDAxQjk2ICAgICAoYmFzZSAxNikJCUdlbmVyYWwgU2Vuc2luZwotCQkJCTEwOCBMaW5jb2xuIFN0LgotCQkJCUJvc3RvbiBNQSAwMjExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItOTcgICAoaGV4KQkJVmlvbGluIFRlY2hub2xvZ2llcwotMDAxQjk3ICAgICAoYmFzZSAxNikJCVZpb2xpbiBUZWNobm9sb2dpZXMKLQkJCQkzMyBXb29kIEF2ZSBTb3V0aAotCQkJCUlzZWxpbiBOSiAwODgzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItOTggICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMUI5OCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR1VNSSBHeWVvbmctQnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItOTkgICAoaGV4KQkJS1MgU3lzdGVtIEdtYkgKLTAwMUI5OSAgICAgKGJhc2UgMTYpCQlLUyBTeXN0ZW0gR21iSAotCQkJCUFsZXhhbmRlcnN0ci4gMzcKLQkJCQlNdWVsaGVpbSBOUlcgNDU0NzIKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLTlBICAgKGhleCkJCUFwb2xsbyBGaXJlIERldGVjdG9ycyBMdGQKLTAwMUI5QSAgICAgKGJhc2UgMTYpCQlBcG9sbG8gRmlyZSBEZXRlY3RvcnMgTHRkCi0JCQkJMzYgQnJvb2tzaWRlIFJvYWQKLQkJCQlIYXZhbnQgSGFtcHNoaXJlIFAwOSAxSlIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi05QiAgIChoZXgpCQlIb3NlLU1jQ2FubiBDb21tdW5pY2F0aW9ucwotMDAxQjlCICAgICAoYmFzZSAxNikJCUhvc2UtTWNDYW5uIENvbW11bmljYXRpb25zCi0JCQkJMTI0MSBXZXN0IE5ld3BvcnQgQ2VudGVyIERyaXZlCi0JCQkJRGVlcmZpZWxkIEJlYWNoIEZMIDMzNDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi05QyAgIChoZXgpCQlTQVRFTCBzcC4geiBvLm8uCi0wMDFCOUMgICAgIChiYXNlIDE2KQkJU0FURUwgc3AuIHogby5vLgotCQkJCVNjaHViZXJ0YSA3OQotCQkJCUdkYW5zayBwb21vcnNraWUgODAtMTcyCi0JCQkJUE9MQU5ECi0KLTAwLTFCLTlEICAgKGhleCkJCU5vdnVzIFNlY3VyaXR5IFNwLiB6IG8uby4KLTAwMUI5RCAgICAgKGJhc2UgMTYpCQlOb3Z1cyBTZWN1cml0eSBTcC4geiBvLm8uCi0JCQkJdWwuIFB1P2F3c2thIDQzMQotCQkJCVdhcnNhdyB3b2ouIG1hem93aWVja2llIDAyLTgwMQotCQkJCVBPTEFORAotCi0wMC0xQi05RSAgIChoZXgpCQlBU0tFWSAgQ09NUFVURVIgIENPUlAKLTAwMUI5RSAgICAgKGJhc2UgMTYpCQlBU0tFWSAgQ09NUFVURVIgIENPUlAKLQkJCQkxMEYsTk8uMTE5LENISUVOS0FORyBSRCwKLQkJCQlDSFVORy1ITyxUUElQRUkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItOUYgICAoaGV4KQkJQ2FseXB0ZWNoIFB0eSBMdGQKLTAwMUI5RiAgICAgKGJhc2UgMTYpCQlDYWx5cHRlY2ggUHR5IEx0ZAotCQkJCTUvNDg2IExvd2VyIEhlaWRlbGJlcmcgUm9hZAotCQkJCUhlaWRlbGJlcmcgVmljdG9yaWEgMzA4NAotCQkJCUFVU1RSQUxJQQotCi0wMC0xQi1BMCAgIChoZXgpCQlBd294Ci0wMDFCQTAgICAgIChiYXNlIDE2KQkJQXdveAotCQkJCTkzLCBQbGFjZSBQaWVycmUgRHVoZW0sCi0JCQkJTGVzIENlbnR1cmllcwotCQkJCTM0MDAwIE1vbnRwZWxsaWVyIAotCQkJCUZSQU5DRQotCi0wMC0xQi1BMSAgIChoZXgpCQlBbWljIEFCCi0wMDFCQTEgICAgIChiYXNlIDE2KQkJQW1pYyBBQgotCQkJCVVwcHNhbGEgc2NpZW5jZSBwYXJrCi0JCQkJRGFnIEhhbW1yc2tqb2xkcyB2YWcgNTIgQgotCQkJCVVwcHNhbGEgIDc1MTgzCi0JCQkJU1dFREVOCi0KLTAwLTFCLUEyICAgKGhleCkJCUlEUyBJbWFnaW5nIERldmVsb3BtZW50IFN5c3RlbXMgR21iSAotMDAxQkEyICAgICAoYmFzZSAxNikJCUlEUyBJbWFnaW5nIERldmVsb3BtZW50IFN5c3RlbXMgR21iSAotCQkJCURpbWJhY2hlciBTdHIuIDYKLQkJCQlPYmVyc3VsbSBCVyA3NDE4MgotCQkJCUdFUk1BTlkKLQotMDAtMUItQTMgICAoaGV4KQkJRmxleGl0IEdyb3VwIEdtYkgKLTAwMUJBMyAgICAgKGJhc2UgMTYpCQlGbGV4aXQgR3JvdXAgR21iSAotCQkJCUJyYXVoYXVzc3RyYXNzZSAxNAotCQkJCVNhbHpidXJnIFNhbHpidXJnIDUwMjAKLQkJCQlBVVNUUklBCi0KLTAwLTFCLUE0ICAgKGhleCkJCVMuQS5FIEFmaWtpbQotMDAxQkE0ICAgICAoYmFzZSAxNikJCVMuQS5FIEFmaWtpbQotCQkJCUtpYnV0eiBBZmlraW0KLQkJCQlLaWJ1dHogQWZpa2ltICAxNTE0OAotCQkJCUlTUkFFTAotCi0wMC0xQi1BNSAgIChoZXgpCQlNeXVuZ01pbiBTeXN0ZW1zLCBJbmMuCi0wMDFCQTUgICAgIChiYXNlIDE2KQkJTXl1bmdNaW4gU3lzdGVtcywgSW5jLgotCQkJCSM0MTAsRG9vc2FuIFZlbnR1cmUgRGltZSAyLWNoYSwxMzA3LTM3Ci0JCQkJS3dhbnlhbmctRG9uZywKLQkJCQlLeXVuZ2tpLWRvICA0MzEtMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLUE2ICAgKGhleCkJCWludG90ZWNoIGluYy4KLTAwMUJBNiAgICAgKGJhc2UgMTYpCQlpbnRvdGVjaCBpbmMuCi0JCQkJIDEzRiBETUMgUiZEIENlbnRlciBFMy0yIEJ1aWxkaW5nIExhbmQgRGV2ZWxvcG1lbnQgRGlzdHJpY3QgU2FuZ2FtLURvbmcKLQkJCQlNYXBvZ3UgU2VvdWwgMTIxLTI3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi1BNyAgIChoZXgpCQlMb3JpY2EgU29sdXRpb25zCi0wMDFCQTcgICAgIChiYXNlIDE2KQkJTG9yaWNhIFNvbHV0aW9ucwotCQkJCTI3NSBOb3J0aHBvaW50ZSBQYXJrd2F5Ci0JCQkJQW1oZXJzdCBOWSAxNDIyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQTggICAoaGV4KQkJVUJJJk1PQkksLkluYwotMDAxQkE4ICAgICAoYmFzZSAxNikJCVVCSSZNT0JJLC5JbmMKLQkJCQkzRiwgRHVpZG8gQmxkZywgIzI4OC01LCBZYW5namFlLURvbmcKLQkJCQlTZW9jaG8tR3UgU2VvdWwgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi1BOSAgIChoZXgpCQlCUk9USEVSIElORFVTVFJJRVMsIExURC4KLTAwMUJBOSAgICAgKGJhc2UgMTYpCQlCUk9USEVSIElORFVTVFJJRVMsIExURC4KLQkJCQlQcmludGluZyAmIFNvbHV0aW9ucyBDb21wYW55LCBEZXZlbG9wbWVudCBNYW5hZ2VtZW50IERlcHQuCi0JCQkJMTUtMSBOYWVzaGlyby1jaG8sIE1penVoby1rdQotCQkJCU5hZ295YSBBaWNoaSA0NjctODU2MQotCQkJCUpBUEFOCi0KLTAwLTFCLUFBICAgKGhleCkJCVhlbklDcyBudgotMDAxQkFBICAgICAoYmFzZSAxNikJCVhlbklDcyBudgotCQkJCUFtYmFjaHRlbmxhYW4gNDQKLQkJCQlMZXV2ZW4gVmxhYW1zLUJyYWJhbnQgQi0zMDAxCi0JCQkJQkVMR0lVTQotCi0wMC0xQi1BQiAgIChoZXgpCQlUZWxjaGVteSwgSW5jb3Jwb3JhdGVkCi0wMDFCQUIgICAgIChiYXNlIDE2KQkJVGVsY2hlbXksIEluY29ycG9yYXRlZAotCQkJCTI5MDUgUHJlbWllcmUgUGFya3dheQotCQkJCVN1aXRlIDI4MAotCQkJCUR1bHV0aCBHQSAzMDA5NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQUMgICAoaGV4KQkJQ3VydGlzcyBXcmlnaHQgQ29udHJvbHMgRW1iZWRkZWQgQ29tcHV0aW5nCi0wMDFCQUMgICAgIChiYXNlIDE2KQkJQ3VydGlzcyBXcmlnaHQgQ29udHJvbHMgRW1iZWRkZWQgQ29tcHV0aW5nCi0JCQkJMTAyMDEgV2F0ZXJpZGdlIENpcmNsZQotCQkJCVN1aXRlIDMwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQUQgICAoaGV4KQkJaUNvbnRyb2wgSW5jb3Jwb3JhdGVkCi0wMDFCQUQgICAgIChiYXNlIDE2KQkJaUNvbnRyb2wgSW5jb3Jwb3JhdGVkCi0JCQkJMzIzNSBLaWZlciBSb2FkCi0JCQkJU3VpdGUgMjYwCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQUUgICAoaGV4KQkJTWljcm8gQ29udHJvbCBTeXN0ZW1zLCBJbmMKLTAwMUJBRSAgICAgKGJhc2UgMTYpCQlNaWNybyBDb250cm9sIFN5c3RlbXMsIEluYwotCQkJCTU4NzcgRW50ZXJwcmlzZSBQYXJrd2F5Ci0JCQkJRm9ydCBNeWVycyBGbG9yaWRhIDMzOTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1BRiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQkFGICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQi1CMCAgIChoZXgpCQlCSEFSQVQgRUxFQ1RST05JQ1MKLTAwMUJCMCAgICAgKGJhc2UgMTYpCQlCSEFSQVQgRUxFQ1RST05JQ1MKLQkJCQlKQUxBSEFMTEkgUE9TVAotCQkJCUJBTkdBTE9SRSBLQVJOQVRBS0EgNTYwMDEzCi0JCQkJSU5ESUEKLQotMDAtMUItQjEgICAoaGV4KQkJV2lzdHJvbiBOZXdlYiBDb3JwLgotMDAxQkIxICAgICAoYmFzZSAxNikJCVdpc3Ryb24gTmV3ZWIgQ29ycC4KLQkJCQlOby4gMTAtMSwgTGktaHNpbiBSb2FkIEksIEhzaW5jaHUgU2NpZW5jZSBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItQjIgICAoaGV4KQkJSW50ZWxsZWN0IEludGVybmF0aW9uYWwgTlYKLTAwMUJCMiAgICAgKGJhc2UgMTYpCQlJbnRlbGxlY3QgSW50ZXJuYXRpb25hbCBOVgotCQkJCUtsZWluZSBLbG9vc3RlcnN0cmFhdCAyMwotCQkJCVphdmVudGVtIFZsYWFtc2UgYnJhYmFudCAxOTMyCi0JCQkJQkVMR0lVTQotCi0wMC0xQi1CMyAgIChoZXgpCQlDb25kYWxvIEdtYkgKLTAwMUJCMyAgICAgKGJhc2UgMTYpCQlDb25kYWxvIEdtYkgKLQkJCQlLb2hsc3RhdHQgMwotCQkJCUxpY2h0ZW5hdSBCYXZhcmlhIDg2NzA2Ci0JCQkJR0VSTUFOWQotCi0wMC0xQi1CNCAgIChoZXgpCQlBaXJ2b2QgTGltaXRlZAotMDAxQkI0ICAgICAoYmFzZSAxNikJCUFpcnZvZCBMaW1pdGVkCi0JCQkJSGVhdGhlciBIb3VzZQotCQkJCUhlYXRoZXIgUm9hZAotCQkJCVNhbmR5Zm9yZCBJbmQgRXN0IER1YmxpbiAxOCBEMTgKLQkJCQlJUkVMQU5ECi0KLTAwLTFCLUI1ICAgKGhleCkJCVpGIEVsZWN0cm9uaWNzIEdtYkgKLTAwMUJCNSAgICAgKGJhc2UgMTYpCQlaRiBFbGVjdHJvbmljcyBHbWJICi0JCQkJQ2hlcnJ5c3RyYXNzZSAxCi0JCQkJQXVlcmJhY2ggaS4gZC4gT3BmLiBCYXllcm4gRC05MTI3NQotCQkJCUdFUk1BTlkKLQotMDAtMUItQjYgICAoaGV4KQkJQmlyZCBFbGVjdHJvbmljIENvcnAuCi0wMDFCQjYgICAgIChiYXNlIDE2KQkJQmlyZCBFbGVjdHJvbmljIENvcnAuCi0JCQkJMzAzMDMgQXVyb3JhIFJvYWQKLQkJCQlTb2xvbiBPaGlvIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1CNyAgIChoZXgpCQlBbHRhIEhlaWdodHMgVGVjaG5vbG9neSBDb3JwLgotMDAxQkI3ICAgICAoYmFzZSAxNikJCUFsdGEgSGVpZ2h0cyBUZWNobm9sb2d5IENvcnAuCi0JCQkJMTA4IEFsdGEgSGVpZ2h0cyBDb3VydAotCQkJCUxvcyBHYXRvcyBDYWxpZm9ybmlhIDk1MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1COCAgIChoZXgpCQlCTFVFV0FZIEVMRUNUUk9OSUMgQ087TFRECi0wMDFCQjggICAgIChiYXNlIDE2KQkJQkxVRVdBWSBFTEVDVFJPTklDIENPO0xURAotCQkJCVdvcmtzaG9wIEIsRG9uZyBGZW5nIFZpbGxhZ2UsCi0JCQkJRnJvbnQgQmFpeXVuLEd1IFRhbmcgQW8KLQkJCQlIdWlaaG91IEd1YW5nRG9uZyA1MTYwMDgKLQkJCQlDSElOQQotCi0wMC0xQi1COSAgIChoZXgpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4KLTAwMUJCOSAgICAgKGJhc2UgMTYpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4KLQkJCQlOby4yMiwgQWxsZXkgMzgsIExhbmUgOTEgLCBTZWMuIDEgLCBOZWkgSHUgUm9hZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1CQSAgIChoZXgpCQlOb3J0ZWwKLTAwMUJCQSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUItQkIgICAoaGV4KQkJUkZUZWNoIENvLixMdGQKLTAwMUJCQiAgICAgKGJhc2UgMTYpCQlSRlRlY2ggQ28uLEx0ZAotCQkJCTMzOS0xNyBKd2FoYW5nLVJpLFdvbnNhbS1NeXVuLAotCQkJCUNoZW9pbi1HdQotCQkJCVlvbmdpbi1TaSBLeXVuZ2tpLURvIDQ0OS04NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItQkMgICAoaGV4KQkJU2lsdmVyIFBlYWsgU3lzdGVtcywgSW5jLgotMDAxQkJDICAgICAoYmFzZSAxNikJCVNpbHZlciBQZWFrIFN5c3RlbXMsIEluYy4KLQkJCQk0NzEgRWwgQ2FtaW5vIFJlYWwKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQkQgICAoaGV4KQkJRk1DIEtvbmdzYmVyZyBTdWJzZWEgQVMKLTAwMUJCRCAgICAgKGJhc2UgMTYpCQlGTUMgS29uZ3NiZXJnIFN1YnNlYSBBUwotCQkJCUtpcmtlZ2FhcmRzdmVpZW4gNDUKLQkJCQlLb25nc2JlcmcgQnVza2VydWQgMzYwMQotCQkJCU5PUldBWQotCi0wMC0xQi1CRSAgIChoZXgpCQlJQ09QIERpZ2l0YWwKLTAwMUJCRSAgICAgKGJhc2UgMTYpCQlJQ09QIERpZ2l0YWwKLQkJCQkxNjgwMSBXLiAxMTZ0aCBTdC4KLQkJCQlMZW5leGEgS1MgNjYyMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUJGICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwMUJCRiAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMTQgUnVlIFBhdWwgRGF1dGllcgotCQkJCVZlbGl6eSAgNzg0NTcKLQkJCQlGUkFOQ0UKLQotMDAtMUItQzAgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAxQkMwICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1DMSAgIChoZXgpCQlIT0xVWCBUZWNobm9sb2d5LCBJbmMuCi0wMDFCQzEgICAgIChiYXNlIDE2KQkJSE9MVVggVGVjaG5vbG9neSwgSW5jLgotCQkJCTFGLCBOby4gMzAsIFImRCBSZC4gSUksCi0JCQkJU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLUMyICAgKGhleCkJCUludGVncmF0ZWQgQ29udHJvbCBUZWNobm9sb2d5IExpbWl0aWVkCi0wMDFCQzIgICAgIChiYXNlIDE2KQkJSW50ZWdyYXRlZCBDb250cm9sIFRlY2hub2xvZ3kgTGltaXRpZWQKLQkJCQk2QyBBc2NlbnNpb24gUGxhY2UKLQkJCQlNYWlyYW5naSBCYXkKLQkJCQlBdWNrbGFuZCBBdWNrbGFuZCAwNzM1Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMUItQzMgICAoaGV4KQkJTW9iaXNvbHV0aW9uIENvLixMdGQKLTAwMUJDMyAgICAgKGJhc2UgMTYpCQlNb2Jpc29sdXRpb24gQ28uLEx0ZAotCQkJCTg0OC0xNgotCQkJCUd1eWVvbmctRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItQzQgICAoaGV4KQkJVWx0cmF0ZWMsIEluYy4KLTAwMUJDNCAgICAgKGJhc2UgMTYpCQlVbHRyYXRlYywgSW5jLgotCQkJCTQ1MCBTY2llbmNlIERyaXZlCi0JCQkJTWFkaXNvbiBXSSA1MzcxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQzUgICAoaGV4KQkJSUVFRSBSZWdpc3RyYXRpb24gQXV0aG9yaXR5Ci0wMDFCQzUgICAgIChiYXNlIDE2KQkJSUVFRSBSZWdpc3RyYXRpb24gQXV0aG9yaXR5Ci0JCQkJNDQ1IEhvZXMgTGFuZQotCQkJCVBpc2NhdGF3YXkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUM2ICAgKGhleCkJCVN0cmF0byBSZWNoZW56ZW50cnVtIEFHCi0wMDFCQzYgICAgIChiYXNlIDE2KQkJU3RyYXRvIFJlY2hlbnplbnRydW0gQUcKLQkJCQlQYXNjYWxzdHJhc3NlIDEwCi0JCQkJRC0xMDU4NyBCZXJsaW4gCi0JCQkJR0VSTUFOWQotCi0wMC0xQi1DNyAgIChoZXgpCQlTdGFyVmVkaWEgVGVjaG5vbG9neSBJbmMuCi0wMDFCQzcgICAgIChiYXNlIDE2KQkJU3RhclZlZGlhIFRlY2hub2xvZ3kgSW5jLgotCQkJCTNGLCBOby4gMjQ3LCBEb25lIFNlYy4gMSwgR3VhbmdtaW5nIDZ0aCBSZC4KLQkJCQlKaHViZWkgSHNpbi1DaHUgQ291bnR5IDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItQzggICAoaGV4KQkJTUlVUkEgQ08uLExURAotMDAxQkM4ICAgICAoYmFzZSAxNikJCU1JVVJBIENPLixMVEQKLQkJCQk4NjQtMSxIb2p5b3RzdWppCi0JCQkJTWF0c3V5YW1hIEVoaW1lIDc5OS0yNDMwCi0JCQkJSkFQQU4KLQotMDAtMUItQzkgICAoaGV4KQkJRlNOIERJU1BMQVkgSU5DCi0wMDFCQzkgICAgIChiYXNlIDE2KQkJRlNOIERJU1BMQVkgSU5DCi0JCQkJQmFla3N1ay1Eb25nIDExNDEtMSwgSWxzYW4gVGVjaG5vIFRvd24gMTAwOQotCQkJCUtveWFuZy1TaSwgSWxzYW4tR3UsIEt5ZW9uZ2dpLURvLCBSZXB1YmxpYyBvZiBLb3JlYQotCQkJCUtveWFuZy1zaSBLeWVvbmdnaS1EbyA0MTA3MjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItQ0EgICAoaGV4KQkJQmVpamluZyBSdW4gVGVjaG5vbG9neSBMVEQuIENvbXBhbnkKLTAwMUJDQSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFJ1biBUZWNobm9sb2d5IExURC4gQ29tcGFueQotCQkJCTQvRiwgSGFuZ3RpYW4gVGVjaG5vbG9neSBCdWlsZGluZwotCQkJCUJlaWppbmcgMTAwMDM3Ci0JCQkJQ0hJTkEKLQotMDAtMUItQ0IgICAoaGV4KQkJUEVNUEVLIFNZU1RFTVMgUFRZIExURAotMDAxQkNCICAgICAoYmFzZSAxNikJCVBFTVBFSyBTWVNURU1TIFBUWSBMVEQKLQkJCQlVTklUIDMgLyAxMyBIT1lMRSBBVkVOVUUKLQkJCQlDQVNUTEUgSElMTCBOU1cgMjE1NAotCQkJCUFVU1RSQUxJQQotCi0wMC0xQi1DQyAgIChoZXgpCQlLSU5HVEVLIENDVFYgQUxMSUFOQ0UgQ08uLCBMVEQuCi0wMDFCQ0MgICAgIChiYXNlIDE2KQkJS0lOR1RFSyBDQ1RWIEFMTElBTkNFIENPLiwgTFRELgotCQkJCTVGLTMsIE5PLiAxMDYsIFNFQy4gMywgSFNJTiBZSSBST0FECi0JCQkJVEFJUEVJICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLUNEICAgKGhleCkJCURBVklTQ09NTVMgKFMpIFBURSBMVEQKLTAwMUJDRCAgICAgKGJhc2UgMTYpCQlEQVZJU0NPTU1TIChTKSBQVEUgTFRECi0JCQkJQmxrIDcwIFViaSBDcmVzY2VudCAjMDEtMDcKLQkJCQlVYmkgVGVjaHBhcmsKLQkJCQk0MDg1NzAKLQkJCQlTSU5HQVBPUkUKLQotMDAtMUItQ0UgICAoaGV4KQkJTWVhc3VyZW1lbnQgRGV2aWNlcyBMdGQKLTAwMUJDRSAgICAgKGJhc2UgMTYpCQlNZWFzdXJlbWVudCBEZXZpY2VzIEx0ZAotCQkJCVNpbHZlcmJ1cm4gQ3Jlc2NlbnQKLQkJCQlCcmlkZ2Ugb2YgRG9uCi0JCQkJQWJlcmRlZW4gQWJlcmRlZW5zaGlyZSBBQjIzIDhFVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLUNGICAgKGhleCkJCURhdGF1cGlhIENvcnBvcmF0aW9uCi0wMDFCQ0YgICAgIChiYXNlIDE2KQkJRGF0YXVwaWEgQ29ycG9yYXRpb24KLQkJCQlPbmUgQWxld2lmZSBDZW50ZXIKLQkJCQlDYW1icmlkZ2UgTUEgMDIxNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUQwICAgKGhleCkJCUlERU5URUMgU09MVVRJT05TCi0wMDFCRDAgICAgIChiYXNlIDE2KQkJSURFTlRFQyBTT0xVVElPTlMKLQkJCQlIZXJ0enN0ci4gMTAKLQkJCQlXZWluaGVpbSAgNjk0NjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLUQxICAgKGhleCkJCVNPR0VTVE1BVElDCi0wMDFCRDEgICAgIChiYXNlIDE2KQkJU09HRVNUTUFUSUMKLQkJCQk0MDkgUm91dGUgZGUgbGEgR2FyZQotCQkJCUNIQVRFQVVORVVGIERFIEdBREFHTkUgUEFDQSA4NDQ3MAotCQkJCUZSQU5DRQotCi0wMC0xQi1EMiAgIChoZXgpCQlVTFRSQS1YIEFTSUEgUEFDSUZJQyBJbmMuCi0wMDFCRDIgICAgIChiYXNlIDE2KQkJVUxUUkEtWCBBU0lBIFBBQ0lGSUMgSW5jLgotCQkJCTUtMS0xNSBTb3Rva2FuZGEKLQkJCQlUb2t5byBDaGl5b2RhLWt1IDEwMS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMUItRDMgICAoaGV4KQkJTWF0c3VzaGl0YSBFbGVjdHJpYyBQYW5hc29uaWMgQVZDCi0wMDFCRDMgICAgIChiYXNlIDE2KQkJTWF0c3VzaGl0YSBFbGVjdHJpYyBQYW5hc29uaWMgQVZDCi0JCQkJMS0xNSBNYXRzdW8tY2hvCi0JCQkJNjc4LTUxOAotCQkJCUthZG9tYSBPc2FrYSA1NzEtODUwNAotCQkJCUpBUEFOCi0KLTAwLTFCLUQ0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUJENCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1ENSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFCRDUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItRDYgICAoaGV4KQkJS2VsdmluIEh1Z2hlcyBMdGQKLTAwMUJENiAgICAgKGJhc2UgMTYpCQlLZWx2aW4gSHVnaGVzIEx0ZAotCQkJCU5ldyBOb3J0aCBSb2FkCi0JCQkJSGFpbmF1bHQKLQkJCQlJbGZvcmQgRXNzZXggSUc2IDJVUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLUQ3ICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YSwgQSBDaXNjbyBDb21wYW55Ci0wMDFCRDcgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBBIENpc2NvIENvbXBhbnkKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJQVRMIDEuMy40NzMKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1EOCAgIChoZXgpCQlEVlRlbCBMVEQKLTAwMUJEOCAgICAgKGJhc2UgMTYpCQlEVlRlbCBMVEQKLQkJCQk1IFNhcGlyCi0JCQkJNDY4NTIgSGVyemVsaWEgCi0JCQkJSVNSQUVMCi0KLTAwLTFCLUQ5ICAgKGhleCkJCUVkZ2V3YXRlciBDb21wdXRlciBTeXN0ZW1zCi0wMDFCRDkgICAgIChiYXNlIDE2KQkJRWRnZXdhdGVyIENvbXB1dGVyIFN5c3RlbXMKLQkJCQkxMTI1IElubm92YXRpb24gRHJpdmUKLQkJCQlPdHRhd2EgT250YXJpbyBLMkstM0c2Ci0JCQkJQ0FOQURBCi0KLTAwLTFCLURBICAgKGhleCkJCVVUU3RhcmNvbSBJbmMKLTAwMUJEQSAgICAgKGJhc2UgMTYpCQlVVFN0YXJjb20gSW5jCi0JCQkJMTI3NSBIYXJib3IgQmF5IFBLV1kKLQkJCQlBbGFtZWRhIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1EQiAgIChoZXgpCQlWYWxlbyBWRUNTCi0wMDFCREIgICAgIChiYXNlIDE2KQkJVmFsZW8gVkVDUwotCQkJCTIgQXZlbnVlIEZlcm5hbmQgUG91aWxsb24KLQkJCQlFdXJvcGFyYwotCQkJCUNSRVRFSUwgSWxlIGRlIEZyYW5jZSA5NDA0MgotCQkJCUZSQU5DRQotCi0wMC0xQi1EQyAgIChoZXgpCQlWZW5jZXIgQ28uLCBMdGQuCi0wMDFCREMgICAgIChiYXNlIDE2KQkJVmVuY2VyIENvLiwgTHRkLgotCQkJCTIwRi0xLCBOby43NywgU2VjLjEsIEhzaW4gVGFpIFd1IFJkLiwKLQkJCQlIc2kgQ2hpaCBUYWlwZWkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1ERCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMUJERCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1ERSAgIChoZXgpCQlSZW5rdXMtSGVpbnosIEluYy4KLTAwMUJERSAgICAgKGJhc2UgMTYpCQlSZW5rdXMtSGVpbnosIEluYy4KLQkJCQkxOTIwMSBDb29rIFN0LgotCQkJCUZvb3RoaWxsIFJhbmNoIENBIDkyNjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1ERiAgIChoZXgpCQlJc2tyYSBNSVMKLTAwMUJERiAgICAgKGJhc2UgMTYpCQlJc2tyYSBNSVMKLQkJCQlManVibGphbnNrYSBjZXN0YSAyNGEKLQkJCQlLcmFuaiBTbG92ZW5pYSA0MDAwCi0JCQkJU0xPVkVOSUEKLQotMDAtMUItRTAgICAoaGV4KQkJVEVMRU5PVCBFTEVDVFJPTklDIEdtYkgKLTAwMUJFMCAgICAgKGJhc2UgMTYpCQlURUxFTk9UIEVMRUNUUk9OSUMgR21iSAotCQkJCVdpZXNlbnRhbHN0cmFzc2UgNDIKLQkJCQlBYWxlbiBCYWRlbi1XdXJ0dGVtYmVyZyA3MzQzNAotCQkJCUdFUk1BTlkKLQotMDAtMUItRTEgICAoaGV4KQkJVmlhTG9neQotMDAxQkUxICAgICAoYmFzZSAxNikJCVZpYUxvZ3kKLQkJCQkyNDAwIExpbmNvbG4gQXZlCi0JCQkJQWx0YWRlbmEgQ0EgOTEwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUUyICAgKGhleCkJCUFobkxhYixJbmMuCi0wMDFCRTIgICAgIChiYXNlIDE2KQkJQWhuTGFiLEluYy4KLQkJCQk2dGggRmwsIENDTU0gQmxkZywgMTIgWWVvdWlkby1kb25nCi0JCQkJU2VvdWwgIDE1MDg2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi1FMyAgIChoZXgpCQlIZWFsdGggSGVybyBOZXR3b3JrLCBJbmMuCi0wMDFCRTMgICAgIChiYXNlIDE2KQkJSGVhbHRoIEhlcm8gTmV0d29yaywgSW5jLgotCQkJCTIwMDAgU2VhcG9ydCBCbHZkLgotCQkJCVN1aXRlIDQwMAotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItRTQgICAoaGV4KQkJVE9XTkVUIFNSTAotMDAxQkU0ICAgICAoYmFzZSAxNikJCVRPV05FVCBTUkwKLQkJCQlWSUEgREVJIEZJTkFMRSwgMjAKLQkJCQk2MTA0MyBDQUdMSSAoUFUpIAotCQkJCUlUQUxZCi0KLTAwLTFCLUU1ICAgKGhleCkJCTgwMmF1dG9tYXRpb24gTGltaXRlZAotMDAxQkU1ICAgICAoYmFzZSAxNikJCTgwMmF1dG9tYXRpb24gTGltaXRlZAotCQkJCTE4IEZpcnN0IEF2ZW51ZQotCQkJCVdvcnRoaW5nIFdlc3QgU3Vzc2V4IEJOMTQgOU5KCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItRTYgICAoaGV4KQkJVlIgQUcKLTAwMUJFNiAgICAgKGJhc2UgMTYpCQlWUiBBRwotCQkJCVJ1dGlzdHJhc3NlIDE4Ci0JCQkJU2NobGllcmVuICBDSC04OTUyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUItRTcgICAoaGV4KQkJUG9zdGVrIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxQkU3ICAgICAoYmFzZSAxNikJCVBvc3RlayBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQlTdWl0ZSA1MTAsIFNoYW5naGFuZyBCdWlsZGluZwotCQkJCUhvbmdsaSBSb2FkCi0JCQkJU2hlbiBaaGVuIEd1YW5nIERvbmcgNTE4MDI4Ci0JCQkJQ0hJTkEKLQotMDAtMUItRTggICAoaGV4KQkJVWx0cmF0cm9uaWsgR21iSAotMDAxQkU4ICAgICAoYmFzZSAxNikJCVVsdHJhdHJvbmlrIEdtYkgKLQkJCQlHZXdlcmJlc3RyLiA1MgotCQkJCUhlcnJzY2hpbmcgQmF2YXJpYSBELTgyMjExCi0JCQkJR0VSTUFOWQotCi0wMC0xQi1FOSAgIChoZXgpCQlCcm9hZGNvbSBDb3Jwb3JhdGlvbgotMDAxQkU5ICAgICAoYmFzZSAxNikJCUJyb2FkY29tIENvcnBvcmF0aW9uCi0JCQkJMTYyMTUgQWx0b24gUGFya3dheQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItRUEgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFCRUEgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUItRUIgICAoaGV4KQkJRE1QIEVsZWN0cm9uaWNzIElOQy4KLTAwMUJFQiAgICAgKGJhc2UgMTYpCQlETVAgRWxlY3Ryb25pY3MgSU5DLgotCQkJCThGLiwgTm8uMTIsIFd1Y3l1YW4gN3RoIFJkLgotCQkJCVd1Z3UgVG93bnNoaXAKLQkJCQlUYWlwZWkgQ291bnR5ICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLUVDICAgKGhleCkJCU5ldGlvIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotMDAxQkVDICAgICAoYmFzZSAxNikJCU5ldGlvIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCTRGLTEsIE5vLiA1ODIsIFJ1ZWlndWFuZyBSZC4sIE5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQ5MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItRUQgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLTAwMUJFRCAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotCQkJCTE3NDUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1FRSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQkVFICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQi1FRiAgIChoZXgpCQlCbG9zc29tcyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMUJFRiAgICAgKGJhc2UgMTYpCQlCbG9zc29tcyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlCTEsyNSxIZW5nZmVuZyBJbmQuQ2l0eSxIZXpob3UKLQkJCQlYaXhpYW5nIFRvd24KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI2Ci0JCQkJQ0hJTkEKLQotMDAtMUItRjAgICAoaGV4KQkJVmFsdWUgUGxhdGZvcm1zIExpbWl0ZWQKLTAwMUJGMCAgICAgKGJhc2UgMTYpCQlWYWx1ZSBQbGF0Zm9ybXMgTGltaXRlZAotCQkJCVJtIDcxMi03MTMsIEJ1aWxkaW5nIDksIDUsIFNjaWVuY2UgUGFyayBXZXN0IEF2ZS4sCi0JCQkJSG9uZyBLb25nIFNjaWVuY2UgUGFyaywKLQkJCQlTaGF0aW4sICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUItRjEgICAoaGV4KQkJTmFuamluZyBTaWx2ZXJOZXQgU29mdHdhcmUgQ28uLCBMdGQuCi0wMDFCRjEgICAgIChiYXNlIDE2KQkJTmFuamluZyBTaWx2ZXJOZXQgU29mdHdhcmUgQ28uLCBMdGQuCi0JCQkJMy9GLCAxMCBidWlsZGluZywgTmFuamluZyBXb3JsZCBXaW5kb3cgVGVjaG5vbG9neSAmIFNvZnR3YXJlIFBhcmsKLQkJCQkxMiBEaW5nSHVhaU1lbiwgR3Vsb3UgRGlzdHJpY3QsIE5hbmppbmcKLQkJCQlOYW5qaW5nIEppYW5nc3UgMjEwMDEzCi0JCQkJQ0hJTkEKLQotMDAtMUItRjIgICAoaGV4KQkJS1dPUkxEIENPTVBVVEVSIENPLiwgTFRECi0wMDFCRjIgICAgIChiYXNlIDE2KQkJS1dPUkxEIENPTVBVVEVSIENPLiwgTFRECi0JCQkJTm8uIDExMywgSmlhbiAybmQgUmQuLAotCQkJCUpob25naGUgVGFpcGVpIGNvdW50eSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLUYzICAgKGhleCkJCVRSQU5TUkFESU8gU2VuZGVyU3lzdGVtZSBCZXJsaW4gQUcKLTAwMUJGMyAgICAgKGJhc2UgMTYpCQlUUkFOU1JBRElPIFNlbmRlclN5c3RlbWUgQmVybGluIEFHCi0JCQkJTWVydGVuc3N0cmFzc2UgNjMKLQkJCQlCZXJsaW4gMTM1ODcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLUY0ICAgKGhleCkJCUtFTldJTiBJTkRVU1RSSUFMKEhLKSBMVEQuCi0wMDFCRjQgICAgIChiYXNlIDE2KQkJS0VOV0lOIElORFVTVFJJQUwoSEspIExURC4KLQkJCQlSTS4xNTEyIDE1L0YgU0hBVElOIEdBTExFUklBCi0JCQkJMTgtMjQgU0hBTiBNRUkgU1QsIEZPVEFOCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFCLUY1ICAgKGhleCkJCVRlbGxpbmsgU2lzdGVtYXMgZGUgVGVsZWNvbXVuaWNhY2lvbiBTLkwuCi0wMDFCRjUgICAgIChiYXNlIDE2KQkJVGVsbGluayBTaXN0ZW1hcyBkZSBUZWxlY29tdW5pY2FjaW9uIFMuTC4KLQkJCQlDLyBNYXJpYSBUdWJhdSBOPyA1IEJham8gQgotCQkJCU1hZHJpZCAgMjgwNTAKLQkJCQlTUEFJTgotCi0wMC0xQi1GNiAgIChoZXgpCQlDT05XSVNFIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTHRkLgotMDAxQkY2ICAgICAoYmFzZSAxNikJCUNPTldJU0UgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMdGQuCi0JCQkJMkYgTm8uNDQsIFBhcmsgQXZlLiAyLCBIc2luY2h1IFNjaWVuY2UgUGFyawotCQkJCUhzaW5jaHUgQ2l0eSAgMzAwNzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLUY3ICAgKGhleCkJCUx1bmQgSVAgUHJvZHVjdHMgQUIKLTAwMUJGNyAgICAgKGJhc2UgMTYpCQlMdW5kIElQIFByb2R1Y3RzIEFCCi0JCQkJRGFsYnl2LiAxCi0JCQkJTHVuZCBTa2FuZSAyMjQgNjAKLQkJCQlTV0VERU4KLQotMDAtMUItRjggICAoaGV4KQkJRGlnaXRyYXggSW5jLgotMDAxQkY4ICAgICAoYmFzZSAxNikJCURpZ2l0cmF4IEluYy4KLQkJCQkyNDQzIFRyYW5zbWl0dGVyIFJkLAotCQkJCVN1aXRlIDIwNgotCQkJCVBhbmFtYSBDaXR5IEZMIDMyNDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1GOSAgIChoZXgpCQlJbnRlbGxpdGVjdCBXYXRlciBMdGQKLTAwMUJGOSAgICAgKGJhc2UgMTYpCQlJbnRlbGxpdGVjdCBXYXRlciBMdGQKLQkJCQlTdWl0ZSAxOSwgQmFzZXBvaW50IEJ1c2luZXNzIENlbnRyZQotCQkJCUF2aWF0aW9uIFBhcmsgV2VzdAotCQkJCUNocmlzdGNodXJjaCBEb3JzZXQgQkgyMyBeTlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi1GQSAgIChoZXgpCQlHLmkuTi4gbWJICi0wMDFCRkEgICAgIChiYXNlIDE2KQkJRy5pLk4uIG1iSAotCQkJCVJhaWZmZWlzZW5zdHIuIDE1Ci0JCQkJR3JpZXNoZWltIEhlc3NlbiA2NDM0NwotCQkJCUdFUk1BTlkKLQotMDAtMUItRkIgICAoaGV4KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotMDAxQkZCICAgICAoYmFzZSAxNikJCUFscHMgRWxlY3RyaWMgQ28uLCBMdGQKLQkJCQkxLTItMSwgT2tpbm91Y2hpCi0JCQkJU29tYS1jaXR5IEZ1a3VzaGltYS0tcHJlZiA5NzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTFCLUZDICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAxQkZDICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItRkQgICAoaGV4KQkJRGlnbnN5cyBJbmMuCi0wMDFCRkQgICAgIChiYXNlIDE2KQkJRGlnbnN5cyBJbmMuCi0JCQkJMTRGLCBEaWdpdGFsIEVtcGlyZSBCbGRnLiwgQi0xNDA4Ci0JCQkJWWVvbmd0b25nLWd1LAotCQkJCVN1d29uIEd5ZW9uZ2dpLWRvIDQ0My04MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItRkUgICAoaGV4KQkJWmF2aW8gSW5jLgotMDAxQkZFICAgICAoYmFzZSAxNikJCVphdmlvIEluYy4KLQkJCQlOby4xLExpc2luZyAxc3QgUmQuIFNjaWVuY2UgQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItRkYgICAoaGV4KQkJTWlsbGVubmlhIE1lZGlhIGluYy4KLTAwMUJGRiAgICAgKGJhc2UgMTYpCQlNaWxsZW5uaWEgTWVkaWEgaW5jLgotCQkJCTQyMDAgRGF5IFNwcmluZyBDVAotCQkJCVBsYWNlcnZpbGxlIENBIDk1NjY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0wMCAgIChoZXgpCQlFbnRyeSBQb2ludCwgTExDCi0wMDFDMDAgICAgIChiYXNlIDE2KQkJRW50cnkgUG9pbnQsIExMQwotCQkJCVAuTy4gQm94IDMzNTQKLQkJCQk5MzAgRWFzdCBMaW5jb2xuIFJvYWQKLQkJCQlJZGFobyBGYWxscyBJZGFobyA4MzQwMy0zMzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0wMSAgIChoZXgpCQlBQkIgT3kgRHJpdmVzCi0wMDFDMDEgICAgIChiYXNlIDE2KQkJQUJCIE95IERyaXZlcwotCQkJCUhpb21vdGllIDEzCi0JCQkJSGVsc2lua2kgIEZJLTAwMzgwCi0JCQkJRklOTEFORAotCi0wMC0xQy0wMiAgIChoZXgpCQlQYW5vIExvZ2ljCi0wMDFDMDIgICAgIChiYXNlIDE2KQkJUGFubyBMb2dpYwotCQkJCTIwMDAgU2VhcG9ydCBEcml2ZSwgU3VpdGUgMjAwCi0JCQkJU3VpdGUgMjAwCi0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0wMyAgIChoZXgpCQlCZXR0eSBUViBUZWNobm9sb2d5IEFHCi0wMDFDMDMgICAgIChiYXNlIDE2KQkJQmV0dHkgVFYgVGVjaG5vbG9neSBBRwotCQkJCUhhcmR0dXJtc3RyYXNzZSAyCi0JCQkJWnVyaWNoICA4MDAwNQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFDLTA0ICAgKGhleCkJCUFpcmdhaW4sIEluYy4KLTAwMUMwNCAgICAgKGJhc2UgMTYpCQlBaXJnYWluLCBJbmMuCi0JCQkJMTkzMCBQYWxvbWFyIFBvaW50IFdheQotCQkJCVN1aXRlIDEwNwotCQkJCUNhcmxzYmFkIENBIDkyMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0wNSAgIChoZXgpCQlOb25pbiBNZWRpY2FsIEluYy4KLTAwMUMwNSAgICAgKGJhc2UgMTYpCQlOb25pbiBNZWRpY2FsIEluYy4KLQkJCQkxMzcwMCAxc3QgQXZlbnVlIE5vcnRoCi0JCQkJUGx5bW91dGggTU4gNTU0NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTA2ICAgKGhleCkJCVNpZW1lbnMgTnVtZXJpY2FsIENvbnRyb2wgTHRkLiwgTmFuamluZwotMDAxQzA2ICAgICAoYmFzZSAxNikJCVNpZW1lbnMgTnVtZXJpY2FsIENvbnRyb2wgTHRkLiwgTmFuamluZwotCQkJCU5vLiAxOCBTaWVtZW5zIFJvYWQsIEppYW5nbmluZyBEZXZlbG9wbWVudCBab25lCi0JCQkJTmFuamluZyBKaWFuZ1N1IDIxMTEwMAotCQkJCUNISU5BCi0KLTAwLTFDLTA3ICAgKGhleCkJCUN3bGludXggTGltaXRlZAotMDAxQzA3ICAgICAoYmFzZSAxNikJCUN3bGludXggTGltaXRlZAotCQkJCVVuaXQgMTM4LCAxMy9GLCBXZXN3aWNrIENvbW1lcmNpYWwgQnVpbGRpbmcsCi0JCQkJMTQ3LTE1MSBRdWVlbidzIFJvYWQgRWFzdCwKLQkJCQlXYW4gQ2hhaSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFDLTA4ICAgKGhleCkJCUVjaG8zNjAsIEluYy4KLTAwMUMwOCAgICAgKGJhc2UgMTYpCQlFY2hvMzYwLCBJbmMuCi0JCQkJMjEwMDAgQXRsYW50aWMgQmx2ZAotCQkJCVN1aXRlIDYwMAotCQkJCUR1bGxlcyBWQSAyMDE2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMDkgICAoaGV4KQkJU0FFIEVsZWN0cm9uaWMgQ28uLEx0ZC4KLTAwMUMwOSAgICAgKGJhc2UgMTYpCQlTQUUgRWxlY3Ryb25pYyBDby4sTHRkLgotCQkJCTIzL0YsWWluZyBMb25nIFpoYW4gWWUgQnVpbGRpbmcsCi0JCQkJTm8uNjAyNSwgU2hlbiBOYW4gUm9hZCxGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZyBEb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTFDLTBBICAgKGhleCkJCVNoZW56aGVuIEFFRSBUZWNobm9sb2d5IENvLixMdGQuCi0wMDFDMEEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQUVFIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQkxc3QgRmxvb3IgQiBCdWlsZGluZywgU2hlbnpoZW4sCi0JCQkJVHNpbmdodWEgSGktVGVjaCBQYXJrLCBOYW5zaGFuIEhpLVRlY2ggUGFyayBOb3J0aCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUMtMEIgICAoaGV4KQkJU21hcnRBbnQgVGVsZWNvbQotMDAxQzBCICAgICAoYmFzZSAxNikJCVNtYXJ0QW50IFRlbGVjb20KLQkJCQkyRiwgTm8uIDY2OSwgU2VjLiA0LCBDaHVuZyBIc2luZyBSZC4sIENodXR1bmcKLQkJCQlIc2luY2h1ICAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTBDICAgKGhleCkJCVRBTklUQSBDb3Jwb3JhdGlvbgotMDAxQzBDICAgICAoYmFzZSAxNikJCVRBTklUQSBDb3Jwb3JhdGlvbgotCQkJCTEtMTQtMixNYWVuby1jaG8KLQkJCQlJdGFiYXNoaS1rdQotCQkJCVRva3lvICAxNzQtODYzMAotCQkJCUpBUEFOCi0KLTAwLTFDLTBEICAgKGhleCkJCUctVGVjaG5vbG9neSwgSW5jLgotMDAxQzBEICAgICAoYmFzZSAxNikJCUctVGVjaG5vbG9neSwgSW5jLgotCQkJCTE2NTMgU3RhbmZvcmQgU3RyZWV0Ci0JCQkJU2FudGEgTW9uaWNhIENBIDkwNDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0wRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFDMEUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMEYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQzBGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTEwICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAxQzEwICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUMxMSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTEyICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDFDMTIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVVMgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSWxsaW5vaXMgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTEzICAgKGhleCkJCU9QVFNZUyBURUNITk9MT0dZIENPLiwgTFRELgotMDAxQzEzICAgICAoYmFzZSAxNikJCU9QVFNZUyBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCVNVSVRFIEItODAyIEJVTkRBTkcgVEVDSE5PIFBBUksKLQkJCQlZQVRBUC1ET05HLCBCVU5EQU5HLUtVCi0JCQkJU0VPTkdOQU0tU0kgR1lFT05HR0ktRE8gNDYzLTc2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy0xNCAgIChoZXgpCQlWTXdhcmUsIEluYwotMDAxQzE0ICAgICAoYmFzZSAxNikJCVZNd2FyZSwgSW5jCi0JCQkJMzQwMSBIaWxsdmlldyBBdmVudWUKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTE1ICAgKGhleCkJCVRYUCBDb3Jwb3JhdGlvbgotMDAxQzE1ICAgICAoYmFzZSAxNikJCVRYUCBDb3Jwb3JhdGlvbgotCQkJCTEyOTkgQ29tbWVyY2UgRHIuCi0JCQkJUmljaGFyZHNvbiBUZXhhcyA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTYgICAoaGV4KQkJVGh5c3NlbktydXBwIEVsZXZhdG9yCi0wMDFDMTYgICAgIChiYXNlIDE2KQkJVGh5c3NlbktydXBwIEVsZXZhdG9yCi0JCQkJOTI4MCBDcmVzdHd5biBIaWxscyBEcml2ZQotCQkJCU1lbXBoaXMgVE4gMzgxMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTE3ICAgKGhleCkJCU5vcnRlbAotMDAxQzE3ICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xQy0xOCAgIChoZXgpCQlTaWNlcnQgUy5yLkwuCi0wMDFDMTggICAgIChiYXNlIDE2KQkJU2ljZXJ0IFMuci5MLgotCQkJCVZpYSBCZXJuYXJkaW5vIEFsaW1lbmEsIDEyOAotCQkJCVJvbWUgIDAwMTczCi0JCQkJSVRBTFkKLQotMDAtMUMtMTkgICAoaGV4KQkJc2VjdW5ldCBTZWN1cml0eSBOZXR3b3JrcyBBRwotMDAxQzE5ICAgICAoYmFzZSAxNikJCXNlY3VuZXQgU2VjdXJpdHkgTmV0d29ya3MgQUcKLQkJCQlLcm9ucHJpbnplbnN0cmFzc2UgMzAKLQkJCQlFc3NlbiBOUlcgNDUxMjgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLTFBICAgKGhleCkJCVRob21hcyBJbnN0cnVtZW50YXRpb24sIEluYwotMDAxQzFBICAgICAoYmFzZSAxNikJCVRob21hcyBJbnN0cnVtZW50YXRpb24sIEluYwotCQkJCTEzMyBMYW5kaW5nIFJkCi0JCQkJQ2FwZSBNYXkgQ291cnQgSG91c2UgTkogMDgyMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTFCICAgKGhleCkJCUh5cGVyc3RvbmUgR21iSAotMDAxQzFCICAgICAoYmFzZSAxNikJCUh5cGVyc3RvbmUgR21iSAotCQkJCUxpbmUtRWlkLVN0ci4gMwotCQkJCUtvbnN0YW56IEJhZGVuLVd1cnR0ZW1iZXJnIDc4NDY3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQy0xQyAgIChoZXgpCQlDZW50ZXIgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEdtYkgKLTAwMUMxQyAgICAgKGJhc2UgMTYpCQlDZW50ZXIgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEdtYkgKLQkJCQlJZ25hei1Lb2Vjay1TdHJhc3NlIDE5Ci0JCQkJVmllbm5hICBBLTEyMTAKLQkJCQlBVVNUUklBCi0KLTAwLTFDLTFEICAgKGhleCkJCUNIRU5aSE9VIEdPU1BFTEwgRElHSVRBTCBURUNITk9MT0dZIENPLixMVEQKLTAwMUMxRCAgICAgKGJhc2UgMTYpCQlDSEVOWkhPVSBHT1NQRUxMIERJR0lUQUwgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJQkFJTFVUQU5HLFNVWElBTiBESVNUUklDVCwKLQkJCQlDSEVOWkhPVSBIVU5BTiA0MjMwMjUKLQkJCQlDSElOQQotCi0wMC0xQy0xRSAgIChoZXgpCQllbXRyaW9uIEdtYkgKLTAwMUMxRSAgICAgKGJhc2UgMTYpCQllbXRyaW9uIEdtYkgKLQkJCQlHcmVzY2hiYWNoc3RyYXNzZSAxMgotCQkJCUthcmxzcnVoZSBCYWRlbiBXdWVydHRlbWJlcmcgNzYyMjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLTFGICAgKGhleCkJCVF1ZXN0IFJldGFpbCBUZWNobm9sb2d5IFB0eSBMdGQKLTAwMUMxRiAgICAgKGJhc2UgMTYpCQlRdWVzdCBSZXRhaWwgVGVjaG5vbG9neSBQdHkgTHRkCi0JCQkJMzctMzkgV2Fsc2ggU3RyZWV0Ci0JCQkJVGhlYmFydG9uIFNBIDUwMzEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUMtMjAgICAoaGV4KQkJQ0xCIEJlbmVsdXgKLTAwMUMyMCAgICAgKGJhc2UgMTYpCQlDTEIgQmVuZWx1eAotCQkJCVJhbWdhdHNld2VnIDE3Ci0JCQkJUmFhbXNkb25rc3ZlZXIgTkJSIDQ5NDEgVk4KLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xQy0yMSAgIChoZXgpCQlOdWNzYWZlIEluYy4KLTAwMUMyMSAgICAgKGJhc2UgMTYpCQlOdWNzYWZlIEluYy4KLQkJCQk2MDEgT2FrIFJpZGdlIFR1cm5waWtlCi0JCQkJT2FrIFJpZGdlIFRlbm5lc3NlZSAzNzgzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMjIgICAoaGV4KQkJQWVyaXMgRWxldHRyb25pY2Egcy5yLmwuCi0wMDFDMjIgICAgIChiYXNlIDE2KQkJQWVyaXMgRWxldHRyb25pY2Egcy5yLmwuCi0JCQkJWm9uYSBJbmQubGUgVmFsbGVjdXBhCi0JCQkJQ29sb25uZWxsYSBUZXJhbW8gNjQwMTAKLQkJCQlJVEFMWQotCi0wMC0xQy0yMyAgIChoZXgpCQlEZWxsIEluYwotMDAxQzIzICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCAgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMjQgICAoaGV4KQkJRm9ybW9zYSBXaXJlbGVzcyBTeXN0ZW1zIENvcnAuCi0wMDFDMjQgICAgIChiYXNlIDE2KQkJRm9ybW9zYSBXaXJlbGVzcyBTeXN0ZW1zIENvcnAuCi0JCQkJTm8uIDQwOCwgR3VhbmRvbmcgUmQuLAotCQkJCUhzaW5DaHUgQ2l0eSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy0yNSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0wMDFDMjUgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtMjYgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotMDAxQzI2ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQk2NixDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTI3ICAgKGhleCkJCVN1bmVsbCBFbGVjdHJvbmljcyBDby4KLTAwMUMyNyAgICAgKGJhc2UgMTYpCQlTdW5lbGwgRWxlY3Ryb25pY3MgQ28uCi0JCQkJM3JkIEZsb29yLEJsZGcuNTE0LEJhR3VhIFJkCi0JCQkJRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3Vhbmdkb25nIDUxODAyOQotCQkJCUNISU5BCi0KLTAwLTFDLTI4ICAgKGhleCkJCVNwaGFpcm9uIFRlY2hub2xvZ2llcyBHbWJIIAotMDAxQzI4ICAgICAoYmFzZSAxNikJCVNwaGFpcm9uIFRlY2hub2xvZ2llcyBHbWJIIAotCQkJCVBoaWxpcHAtUmVpcy1TdHJhc3NlIDEKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCQkJCUJhdXR6ZW4gU2F4b255IDAyNjI1ICAgIAotCQkJCUdFUk1BTlkKLQotMDAtMUMtMjkgICAoaGV4KQkJQ09SRSBESUdJVEFMIEVMRUNUUk9OSUNTIENPLiwgTFRECi0wMDFDMjkgICAgIChiYXNlIDE2KQkJQ09SRSBESUdJVEFMIEVMRUNUUk9OSUNTIENPLiwgTFRECi0JCQkJMTAwNiMgMTAyIENIVU5VSVRFQ0hOT1BBUksgMjAwLTEKLQkJCQlDSFVOVUktRE9ORywgV09OTUktR1UKLQkJCQlCVUNIRU9OLUNJVFkgR1lVTkdHSS1ETyA0MjAtODU3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTJBICAgKGhleCkJCUVudmlzYWNvciBUZWNobm9sb2dpZXMgSW5jLgotMDAxQzJBICAgICAoYmFzZSAxNikJCUVudmlzYWNvciBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTE0ODQ1LTYgWW9uZ2UgU3RyZWV0LCBTdWl0ZSAzMTAKLQkJCQlBdXJvcmEgT04gTDRHIDZIOAotCQkJCUNBTkFEQQotCi0wMC0xQy0yQiAgIChoZXgpCQlBbGVydG1lLmNvbSBMaW1pdGVkCi0wMDFDMkIgICAgIChiYXNlIDE2KQkJQWxlcnRtZS5jb20gTGltaXRlZAotCQkJCTI3LTI4IEJyaWRnZSBTdHJlZXQKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0IyIDFVSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFDLTJDICAgKGhleCkJCVN5bmFwc2UKLTAwMUMyQyAgICAgKGJhc2UgMTYpCQlTeW5hcHNlCi0JCQkJMTMyIEV4cG9ydCBDaXJjbGUKLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0yRCAgIChoZXgpCQlGbGV4UmFkaW8gU3lzdGVtcwotMDAxQzJEICAgICAoYmFzZSAxNikJCUZsZXhSYWRpbyBTeXN0ZW1zCi0JCQkJODkwMCBNYXJ5YmFuayBEci4KLQkJCQlBdXN0aW4gVFggNzg3NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTJFICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLTAwMUMyRSAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZAotCQkJCVJvc2V2aWxsZSBDQSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMkYgICAoaGV4KQkJUGZpc3RlciBHbWJICi0wMDFDMkYgICAgIChiYXNlIDE2KQkJUGZpc3RlciBHbWJICi0JCQkJU3RhdHpsaW5nZXIgU3RyYXNzZSA3MAotCQkJCUF1Z3NidXJnIEJhdmFyaWEgODYxNjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLTMwICAgKGhleCkJCU1vZGUgTGlnaHRpbmcgKFVLICkgTHRkLgotMDAxQzMwICAgICAoYmFzZSAxNikJCU1vZGUgTGlnaHRpbmcgKFVLICkgTHRkLgotCQkJCVRoZSBNYWx0aW5ncwotCQkJCTYzIEhpZ2ggU3RyZWV0Ci0JCQkJV2FyZSBIZXJ0Zm9yZHNoaXJlIFNHMTIgOUFECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtMzEgICAoaGV4KQkJTW9iaWxlIFhQIFRlY2hub2xvZ3kgQ28uLCBMVEQKLTAwMUMzMSAgICAgKGJhc2UgMTYpCQlNb2JpbGUgWFAgVGVjaG5vbG9neSBDby4sIExURAotCQkJCVJvb20gTm8uMjUwNixUcmktdG93ZXIgQyBidWlsZGluZyxOby42Nj8/WmhvbmdndWFuY3VuIEVhc3QgUm9hZCxIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMUMtMzIgICAoaGV4KQkJVGVsaWFuIENvcnBvcmF0aW9uCi0wMDFDMzIgICAgIChiYXNlIDE2KQkJVGVsaWFuIENvcnBvcmF0aW9uCi0JCQkJNEZMLiBOYW1qZW9uIEJsZGcuIDUzLTMgSGFhbmRvbmcKLQkJCQlLd2FuZ215dW5nc2kgS3lvdW5na2lkbyA0MjMwNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtMzMgICAoaGV4KQkJU3V0cm9uCi0wMDFDMzMgICAgIChiYXNlIDE2KQkJU3V0cm9uCi0JCQkJMjEzMDAgUmlkZ2V0b3AgQ2lyCi0JCQkJU3RlcmxpbmcgVkEgMjAxNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTM0ICAgKGhleCkJCUhVRVkgQ0hJQU8gSU5URVJOQVRJT05BTCBDTy4sIExURC4KLTAwMUMzNCAgICAgKGJhc2UgMTYpCQlIVUVZIENISUFPIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0JCQkJNUYsIE5PLiA2NDktMSwKLQkJCQlDSFVORyBDSEVORyBSRC4sCi0JCQkJSFNJTiBDSFVBTkcgQ0lUWSBUQUlQRUkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy0zNSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQzM1ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwVgotCQkJCURFTk1BUksKLQotMDAtMUMtMzYgICAoaGV4KQkJaU5FV2lUIE5WCi0wMDFDMzYgICAgIChiYXNlIDE2KQkJaU5FV2lUIE5WCi0JCQkJU2NoYWxpZW5ob2V2ZWRyZWVmIDIwRAotCQkJCU1lY2hlbGVuIEFudHdlcnAgMjgwMAotCQkJCUJFTEdJVU0KLQotMDAtMUMtMzcgICAoaGV4KQkJQ2FsbHBvZCwgSW5jLgotMDAxQzM3ICAgICAoYmFzZSAxNikJCUNhbGxwb2QsIEluYy4KLQkJCQk4NTAgVy4gSmFja3NvbgotCQkJCVN1aXRlIDI2MAotCQkJCUNoaWNhZ28gSUwgNjA2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTM4ICAgKGhleCkJCUJpby1SYWQgTGFib3JhdG9yaWVzLCBJbmMuCi0wMDFDMzggICAgIChiYXNlIDE2KQkJQmlvLVJhZCBMYWJvcmF0b3JpZXMsIEluYy4KLQkJCQkyNDUgV2ludGVyIFN0LgotCQkJCVN1aXRlIDEwMAotCQkJCVdhbHRoYW0gTUEgMDI0NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTM5ICAgKGhleCkJCVMgTmV0c3lzdGVtcyBJbmMuCi0wMDFDMzkgICAgIChiYXNlIDE2KQkJUyBOZXRzeXN0ZW1zIEluYy4KLQkJCQkxMEYgU3VuZ3dvbiBCbGRnLiwgMTQxIFNhbXN1bmctRG9uZwotCQkJCUthbmduYW0tS3UKLQkJCQlTZW91bCAgMTM1LTcxNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy0zQSAgIChoZXgpCQlFbGVtZW50IExhYnMsIEluYy4KLTAwMUMzQSAgICAgKGJhc2UgMTYpCQlFbGVtZW50IExhYnMsIEluYy4KLQkJCQkzMzUwIFNjb3R0IEJvdWxldmFyZAotCQkJCUJ1aWxkaW5nICMyCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTNCICAgKGhleCkJCUFtUm9hZCBUZWNobm9sb2d5IEluYy4KLTAwMUMzQiAgICAgKGJhc2UgMTYpCQlBbVJvYWQgVGVjaG5vbG9neSBJbmMuCi0JCQkJMThGLTMgTm8uIDE1MCAsIENoaWVuIEkgUmQKLQkJCQlDaHVuZyBIbyBUYWlwZWkgSHNpZW4gMjM1MTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTNDICAgKGhleCkJCVNlb24gRGVzaWduIEluYy4KLTAwMUMzQyAgICAgKGJhc2UgMTYpCQlTZW9uIERlc2lnbiBJbmMuCi0JCQkJMTExLTNCIEJ1cmJpZGdlIFN0cmVldAotCQkJCUNvcXVpdGxhbSBCQyBWM0sgN0IyCi0JCQkJQ0FOQURBCi0KLTAwLTFDLTNEICAgKGhleCkJCVdhdmVTdG9ybQotMDAxQzNEICAgICAoYmFzZSAxNikJCVdhdmVTdG9ybQotCQkJCTQwIHJ1ZSBkJ09yYWRvdXItc3VyLUdsYW5lCi0JCQkJUGFyaXMgSWxlLWRlLUZyYW5jZSA3NTAxNQotCQkJCUZSQU5DRQotCi0wMC0xQy0zRSAgIChoZXgpCQlFQ0tleSBMaW1pdGVkCi0wMDFDM0UgICAgIChiYXNlIDE2KQkJRUNLZXkgTGltaXRlZAotCQkJCVBPIEJveCAxMjggMDU3Ci0JCQkJUmVtdWVyYQotCQkJCUF1Y2tsYW5kICAxMDUwCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMUMtM0YgICAoaGV4KQkJSW50ZXJuYXRpb25hbCBQb2xpY2UgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDFDM0YgICAgIChiYXNlIDE2KQkJSW50ZXJuYXRpb25hbCBQb2xpY2UgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNDE1MCBTLiA4N3RoIEUuIEF2ZW51ZQotCQkJCVR1bHNhIE9LIDc0MTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy00MCAgIChoZXgpCQlWREctU2VjdXJpdHkgYnYKLTAwMUM0MCAgICAgKGJhc2UgMTYpCQlWREctU2VjdXJpdHkgYnYKLQkJCQlSYWRvbnN0cmFhdCAxMC0xNAotCQkJCVpvZXRlcm1lZXIgWkggMjcxOCBUQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFDLTQxICAgKGhleCkJCXNjZW10ZWMgVHJhbnNwb25kZXIgVGVjaG5vbG9neSBHbWJICi0wMDFDNDEgICAgIChiYXNlIDE2KQkJc2NlbXRlYyBUcmFuc3BvbmRlciBUZWNobm9sb2d5IEdtYkgKLQkJCQlHZXdlcmJlcGFya3N0ci4gMjAKLQkJCQlSZWljaHNob2YgTlJXIDUxNTgwCi0JCQkJR0VSTUFOWQotCi0wMC0xQy00MiAgIChoZXgpCQlQYXJhbGxlbHMsIEluYy4KLTAwMUM0MiAgICAgKGJhc2UgMTYpCQlQYXJhbGxlbHMsIEluYy4KLQkJCQk2NjAgU1cgMzloIFN0cmVldAotCQkJCVN1aXRlIDIwNQotCQkJCVJlbnRvbiBXQSA5ODA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNDMgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDFDNDMgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTQ0ICAgKGhleCkJCUJvc2NoIFNlY3VyaXR5IFN5c3RlbXMgQlYKLTAwMUM0NCAgICAgKGJhc2UgMTYpCQlCb3NjaCBTZWN1cml0eSBTeXN0ZW1zIEJWCi0JCQkJS2FwaXR0ZWx3ZWcgMTAKLQkJCQk0ODI3IEhHICBCcmVkYSBCcmFiYW50IDQ4MjcKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xQy00NSAgIChoZXgpCQlDaGVuYnJvIE1pY29tIENvLiwgTHRkLgotMDAxQzQ1ICAgICAoYmFzZSAxNikJCUNoZW5icm8gTWljb20gQ28uLCBMdGQuCi0JCQkJMTVGbC4sIE5vLiAxNTAsIEppYW4gWWkgUm9hZAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtNDYgICAoaGV4KQkJUVRVTQotMDAxQzQ2ICAgICAoYmFzZSAxNikJCVFUVU0KLQkJCQkjNTA3IEJ5dWNrc2FuL0t5dW5naW4gRGlnaXRhbCBWYWxsZXkgMiA0ODEtMTAKLQkJCQlHYXNhbi1kb25nIEdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtNzgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTQ3ICAgKGhleCkJCUhhbmd6aG91IEhvbGx5c3lzIEF1dG9tYXRpb24gQ28uLCBMdGQKLTAwMUM0NyAgICAgKGJhc2UgMTYpCQlIYW5nemhvdSBIb2xseXN5cyBBdXRvbWF0aW9uIENvLiwgTHRkCi0JCQkJTm8uMTAgTWlkZGxlIFJvYWQsIEppYW5jYWljaGVuZywgSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwOTYKLQkJCQlDSElOQQotCi0wMC0xQy00OCAgIChoZXgpCQlXaURlRmksIEluYy4KLTAwMUM0OCAgICAgKGJhc2UgMTYpCQlXaURlRmksIEluYy4KLQkJCQkxMzMzIEdhdGV3YXkgQmx2ZAotCQkJCVN1aXRlIDEwMTIKLQkJCQlNZWxib3VybmUgRkwgMzI5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTQ5ICAgKGhleCkJCVpvbHRhbiBUZWNobm9sb2d5IEluYy4KLTAwMUM0OSAgICAgKGJhc2UgMTYpCQlab2x0YW4gVGVjaG5vbG9neSBJbmMuCi0JCQkJNEYsIE5vLjMwLCBXdW5zaSBTdC4KLQkJCQlKaHViZWkgSHNpbmNodSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTRBICAgKGhleCkJCUFWTSBHbWJICi0wMDFDNEEgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotMDAtMUMtNEIgICAoaGV4KQkJR2VuZXI4LCBJbmMuCi0wMDFDNEIgICAgIChiYXNlIDE2KQkJR2VuZXI4LCBJbmMuCi0JCQkJODk3IEluZGVwZW5kZW5jZSBBdmUKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy00QyAgIChoZXgpCQlQZXRyb3Rlc3QgSW5zdHJ1bWVudHMKLTAwMUM0QyAgICAgKGJhc2UgMTYpCQlQZXRyb3Rlc3QgSW5zdHJ1bWVudHMKLQkJCQlMdWR3aWctRXJoYXJkLVJpbmcgMTMKLQkJCQlEYWhsZXdpdHogQkJHIDE1ODI3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQy00RCAgIChoZXgpCQlaZWV0b28sIEluYy4KLTAwMUM0RCAgICAgKGJhc2UgMTYpCQlaZWV0b28sIEluYy4KLQkJCQkxMjggR3JlYXQgUm9hZAotCQkJCUJlZGZvcmQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTRFICAgKGhleCkJCVRBU0EgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0wMDFDNEUgICAgIChiYXNlIDE2KQkJVEFTQSBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLQkJCQk1Rj8/QnVpbGRpbmcyPz9Oby4xMjk1ICxYaW4gSmlucWlhbyBSb2FkLAotCQkJCVNoYW5naGFpICAyMDEyMDYKLQkJCQlDSElOQQotCi0wMC0xQy00RiAgIChoZXgpCQlNQUNBQiBBQgotMDAxQzRGICAgICAoYmFzZSAxNikJCU1BQ0FCIEFCCi0JCQkJVmFubmhvZ3NnYXRhbiA3Ci0JCQkJVHJlbGxlYm9yZyAgMjMxNjYKLQkJCQlTV0VERU4KLQotMDAtMUMtNTAgICAoaGV4KQkJVENMIFRlY2hub2x5IEVsZWN0cm9uaWNzKEh1aXpob3UpQ28uLEx0ZAotMDAxQzUwICAgICAoYmFzZSAxNikJCVRDTCBUZWNobm9seSBFbGVjdHJvbmljcyhIdWl6aG91KUNvLixMdGQKLQkJCQkxMC9GLCBCbG9jayBBICwgVENMIFRvd2VyCi0JCQkJMSBHYW94aW4gTmFuIFJvYWQsIE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUMtNTEgICAoaGV4KQkJQ2VsZW5vIENvbW11bmljYXRpb25zCi0wMDFDNTEgICAgIChiYXNlIDE2KQkJQ2VsZW5vIENvbW11bmljYXRpb25zCi0JCQkJMjIgWmFyaGluIFN0cmVldAotCQkJCVJhJ2FuYW5hICA0MzY2NQotCQkJCUlTUkFFTAotCi0wMC0xQy01MiAgIChoZXgpCQlWSVNJT05FRSBTUkwKLTAwMUM1MiAgICAgKGJhc2UgMTYpCQlWSVNJT05FRSBTUkwKLQkJCQlWSUFMRSBERUxMQSBSRVBVQkJMSUNBLCAyMgotCQkJCVZJTExPUkJBIFRSRVZJU08gMzEwNTAKLQkJCQlJVEFMWQotCi0wMC0xQy01MyAgIChoZXgpCQlTeW5lcmd5IExpZ2h0aW5nIENvbnRyb2xzCi0wMDFDNTMgICAgIChiYXNlIDE2KQkJU3luZXJneSBMaWdodGluZyBDb250cm9scwotCQkJCU9uZSBMaXRob25pYSBXYXkKLQkJCQlDb255ZXJzIEdBIDMwMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01NCAgIChoZXgpCQlIaWxsc3RvbmUgTmV0d29ya3MgSW5jCi0wMDFDNTQgICAgIChiYXNlIDE2KQkJSGlsbHN0b25lIE5ldHdvcmtzIEluYwotCQkJCUEtMTkwNSBlLVdpbmcgQ2VudGVyCi0JCQkJWmhpY2h1biBSb2FkLCBIYWlkaWFuCi0JCQkJQmVpamluZyAgMTAwMDg2Ci0JCQkJQ0hJTkEKLQotMDAtMUMtNTUgICAoaGV4KQkJU2hlbnpoZW4gS2FpZmEgVGVjaG5vbG9neSBDby4KLTAwMUM1NSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBLYWlmYSBUZWNobm9sb2d5IENvLgotCQkJCTcwMDYgQ2FpdGlhbiBSb2FkLCBGdXRpYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzNQotCQkJCUNISU5BCi0KLTAwLTFDLTU2ICAgKGhleCkJCVBhZG8gU3lzdGVtcywgSW5jLgotMDAxQzU2ICAgICAoYmFzZSAxNikJCVBhZG8gU3lzdGVtcywgSW5jLgotCQkJCSM3MDYgTG9hZGxhbmQgRVogVG93ZXIgMTUzCi0JCQkJR3VtaS1Eb25nLCBCdW5kYW5nLUd1Ci0JCQkJU3VuZ05hbSBHeXVuZyBnaS1EbyA0NjMtODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTU3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUM1NyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFDNTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNTkgICAoaGV4KQkJREVWT04gSVQKLTAwMUM1OSAgICAgKGJhc2UgMTYpCQlERVZPTiBJVAotCQkJCTExMDAgRklSU1QgQVZFTlVFCi0JCQkJU1VJVEUgMTAwCi0JCQkJS0lORyBPRiBQUlVTU0lBIFBBIDE5NDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01QSAgIChoZXgpCQlBZHZhbmNlZCBSZWxheSBDb3Jwb3JhdGlvbgotMDAxQzVBICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFJlbGF5IENvcnBvcmF0aW9uCi0JCQkJMTg5NiBDb2x1bWJpYSBTdAotCQkJCUV1Z2VuZSBPUiA5NzQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNUIgICAoaGV4KQkJQ2h1YmIgRWxlY3Ryb25pYyBTZWN1cml0eSBTeXN0ZW1zIEx0ZAotMDAxQzVCICAgICAoYmFzZSAxNikJCUNodWJiIEVsZWN0cm9uaWMgU2VjdXJpdHkgU3lzdGVtcyBMdGQKLQkJCQlTaGFkc3dvcnRoIFJvYWQKLQkJCQlCbGFja2J1cm4gTGFuY2FzaGlyZSBCQjEgMlBSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtNUMgICAoaGV4KQkJSW50ZWdyYXRlZCBNZWRpY2FsIFN5c3RlbXMsIEluYy4KLTAwMUM1QyAgICAgKGJhc2UgMTYpCQlJbnRlZ3JhdGVkIE1lZGljYWwgU3lzdGVtcywgSW5jLgotCQkJCTE5ODQgT2Jpc3BvIEF2ZW51ZQotCQkJCVNpZ25hbCBIaWxsIENBIDkwNzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01RCAgIChoZXgpCQlMZWljYSBNaWNyb3N5c3RlbXMKLTAwMUM1RCAgICAgKGJhc2UgMTYpCQlMZWljYSBNaWNyb3N5c3RlbXMKLQkJCQlQT0JveCA4MAotCQkJCTUxNSBDb2xkaGFtcyBMYW5lCi0JCQkJQ2FtYnJpZGdlICBDQjEgM1laCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtNUUgICAoaGV4KQkJQVNUT04gRnJhbmNlCi0wMDFDNUUgICAgIChiYXNlIDE2KQkJQVNUT04gRnJhbmNlCi0JCQkJMTUxIEF2ZW51ZSBHYWxsaWVuaQotCQkJCUJBR05PTEVUIGlsZSBkZSBmcmFuY2UgOTMxNzcKLQkJCQlGUkFOQ0UKLQotMDAtMUMtNUYgICAoaGV4KQkJV2lubGFuZCBFbGVjdHJvbmljcywgSW5jLgotMDAxQzVGICAgICAoYmFzZSAxNikJCVdpbmxhbmQgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkxOTUwIEV4Y2VsIERyaXZlCi0JCQkJTWFua2F0byBNTiA1NjAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNjAgICAoaGV4KQkJQ1NQIEZyb250aWVyIFRlY2hub2xvZ2llcyxJbmMuCi0wMDFDNjAgICAgIChiYXNlIDE2KQkJQ1NQIEZyb250aWVyIFRlY2hub2xvZ2llcyxJbmMuCi0JCQkJMy0yLTMsU2FzYXp1a2EKLQkJCQlTaGlidXlhLWt1IFRva3lvIDE1MS0wMDczCi0JCQkJSkFQQU4KLQotMDAtMUMtNjEgICAoaGV4KQkJR2FsYXh5IFRlY2hub2xvZ3kgKEhLKSBMdGQuCi0wMDFDNjEgICAgIChiYXNlIDE2KQkJR2FsYXh5IFRlY2hub2xvZ3kgKEhLKSBMdGQuCi0JCQkJVW5pdCA4MDIsIDgvRiwgU2h1aSBIaW5nIENlbnRyZSwgMTMgU2hldW5nIFl1ZXQgUm9hZCwKLQkJCQlLb3dsb29uIEJheSAgS2xuLiwgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFDLTYyICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIEluYwotMDAxQzYyICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIEluYwotCQkJCTYwLTM5LCBHYXNhbi1Eb25nCi0JCQkJS3VtY2hvbi1HdQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTYzICAgKGhleCkJCVRSVUVOCi0wMDFDNjMgICAgIChiYXNlIDE2KQkJVFJVRU4KLQkJCQk0RiBTQU1XT04gQkxERy4sIDQ1MS03Ci0JCQkJIEJBTkdCQUUtRE9ORywgU0VPQ0hPLUdVCi0JCQkJU0VPVUwgIDEzNy04MTgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtNjQgICAoaGV4KQkJQ2VsbG5ldCtIdW50Ci0wMDFDNjQgICAgIChiYXNlIDE2KQkJQ2VsbG5ldCtIdW50Ci0JCQkJNjQzNiBDb3VudHkgUm9hZCAxMQotCQkJCVBlcXVvdCBMYWtlcyBNaW5uZXNvdGEgNTY0NzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTY1ICAgKGhleCkJCUpvZVNjYW4sIEluYy4KLTAwMUM2NSAgICAgKGJhc2UgMTYpCQlKb2VTY2FuLCBJbmMuCi0JCQkJMTE5IEUgOHRoIFN0LgotCQkJCVZhbmNvdXZlciBXQSA5ODY2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNjYgICAoaGV4KQkJVUNBTVAgQ08uLExURAotMDAxQzY2ICAgICAoYmFzZSAxNikJCVVDQU1QIENPLixMVEQKLQkJCQkjMTAxNSwgS29sb24gU2NpZW5jZSBWYWxsZXkgPz8KLQkJCQlTZW91bCBHdXJvLURvbmcsR3Vyby1ndSwgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy02NyAgIChoZXgpCQlQdW1wa2luIE5ldHdvcmtzLCBJbmMuCi0wMDFDNjcgICAgIChiYXNlIDE2KQkJUHVtcGtpbiBOZXR3b3JrcywgSW5jLgotCQkJCTNGTCBKdW5nSG8gQmxkZywgMTA4LTQgU2FuZ2RvLURvbmcsIERvbmdqYWstR3UKLQkJCQlTRU9VTCAgMTU2LTAzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy02OCAgIChoZXgpCQlBbmh1aSBTdW4gQ3JlYXRlIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0wMDFDNjggICAgIChiYXNlIDE2KQkJQW5odWkgU3VuIENyZWF0ZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCU5PLjE5OSBYaWFuZ3poYW5nIFJvYWQKLQkJCQlIZWZlaSBBbmh1aSAyMzAwODgKLQkJCQlDSElOQQotCi0wMC0xQy02OSAgIChoZXgpCQlQYWNrZXQgVmlzaW9uIEx0ZAotMDAxQzY5ICAgICAoYmFzZSAxNikJCVBhY2tldCBWaXNpb24gTHRkCi0JCQkJU0MgSG91c2UKLQkJCQlWYW53YWxsIFJvYWQKLQkJCQlNYWlkZW5oZWFkIEJlcmtzIFNMNiA0VUIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQy02QSAgIChoZXgpCQlXZWlzcyBFbmdpbmVlcmluZyBMdGQuCi0wMDFDNkEgICAgIChiYXNlIDE2KQkJV2Vpc3MgRW5naW5lZXJpbmcgTHRkLgotCQkJCUZsb3Jhc3RyYXNzZSA0MgotCQkJCVVzdGVyIFpIIDg2MTAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xQy02QiAgIChoZXgpCQlDT1ZBWCAgQ28uIEx0ZAotMDAxQzZCICAgICAoYmFzZSAxNikJCUNPVkFYICBDby4gTHRkCi0JCQkJMy0yNy0yMiBraXRhaGFuYWRhLWNobyBraXRha3UKLQkJCQlzYWthaS1zaGkgb29zYWthIDU5MS04MDAyCi0JCQkJSkFQQU4KLQotMDAtMUMtNkMgICAoaGV4KQkJSmFiaWwgQ2lyY3VpdCAoR3Vhbmd6aG91KSBMaW1pdGVkCi0wMDFDNkMgICAgIChiYXNlIDE2KQkJSmFiaWwgQ2lyY3VpdCAoR3Vhbmd6aG91KSBMaW1pdGVkCi0JCQkJMTI4LCBKdW4gQ2hlbmcgUm9hZCx1YW5nemhvdSBFY29ub21pYyBhbmQgVGVjaG5vbG9naWNhbCBEZXZlbG9wbWVudCBEaXN0cmljdAotCQkJCUd1YW5nZG9uZyBQcm92aW5jZQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNTMwCi0JCQkJQ0hJTkEKLQotMDAtMUMtNkQgICAoaGV4KQkJS1lPSFJJVFNVIEVMRUNUUk9OSUMgSU5EVVNUUlkgQ08uLCBMVEQuCi0wMDFDNkQgICAgIChiYXNlIDE2KQkJS1lPSFJJVFNVIEVMRUNUUk9OSUMgSU5EVVNUUlkgQ08uLCBMVEQuCi0JCQkJMi01LTEsIE5JUFBPTkJBU0hJLU5JU0hJLAotCQkJCU5BTklXQS1LVQotCQkJCU9TQUtBICA1NTYtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTFDLTZFICAgKGhleCkJCU5ld2J1cnkgTmV0d29ya3MsIEluYy4KLTAwMUM2RSAgICAgKGJhc2UgMTYpCQlOZXdidXJ5IE5ldHdvcmtzLCBJbmMuCi0JCQkJNDE5IEJveWxzdG9uIFN0cmVldAotCQkJCUJvc3RvbiBNQSAwMjExNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNkYgICAoaGV4KQkJRW1maXQgTHRkCi0wMDFDNkYgICAgIChiYXNlIDE2KQkJRW1maXQgTHRkCi0JCQkJS29udHRpc2VudGllIDggQgotCQkJCVZhYWpha29za2kgIDQwODAwCi0JCQkJRklOTEFORAotCi0wMC0xQy03MCAgIChoZXgpCQlOT1ZBQ09NTSBMVERBCi0wMDFDNzAgICAgIChiYXNlIDE2KQkJTk9WQUNPTU0gTFREQQotCQkJCVJVQSBCRUlKVUksIDcwCi0JCQkJU0FOVE8gQU1BUk8KLQkJCQlTQU8gUEFVTE8gIDA0Njg5LTAwMAotCQkJCUJSQVpJTAotCi0wMC0xQy03MSAgIChoZXgpCQlFbWVyZ2VudCBFbGVjdHJvbmljcwotMDAxQzcxICAgICAoYmFzZSAxNikJCUVtZXJnZW50IEVsZWN0cm9uaWNzCi0JCQkJQmxkZyAyIExldmVsIDMgU3VpdGUgMzA1Ci0JCQkJMjU5MSBXZXhmb3JkLUJheW5lIFJvYWQKLQkJCQlTZXdpY2tsZXkgUEEgMTUxNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTcyICAgKGhleCkJCU1heWVyICYgQ2llIEdtYkggJiBDbyBLRwotMDAxQzcyICAgICAoYmFzZSAxNikJCU1heWVyICYgQ2llIEdtYkggJiBDbyBLRwotCQkJCUVtaWwgTWF5ZXIgU3RyYXNzZSAxMAotCQkJCUFsYnN0YWR0IEJhZGVuIFd1cnR0ZW1iZXJnIDcyNDYxCi0JCQkJR0VSTUFOWQotCi0wMC0xQy03MyAgIChoZXgpCQlBcmlzdGEgTmV0d29ya3MsIEluYy4KLTAwMUM3MyAgICAgKGJhc2UgMTYpCQlBcmlzdGEgTmV0d29ya3MsIEluYy4KLQkJCQkyNzUgTWlkZGxlZmllbGQgUm9hZCwgU3RlIDUwCi0JCQkJTWVubG8gUGFyayBDYWxpZm9ybmlhIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy03NCAgIChoZXgpCQlTeXN3YW4gVGVjaG5vbG9naWVzIEluYy4KLTAwMUM3NCAgICAgKGJhc2UgMTYpCQlTeXN3YW4gVGVjaG5vbG9naWVzIEluYy4KLQkJCQkyMDUwIEJlYXZlcmNyZWVrIFJvYWQKLQkJCQlTdWl0ZSAxMDEgIzM4OAotCQkJCU9yZWdvbiBDaXR5IE9yZWdvbiA5NzA0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNzUgICAoaGV4KQkJUkYgU3lzdGVtcyBHbWJICi0wMDFDNzUgICAgIChiYXNlIDE2KQkJUkYgU3lzdGVtcyBHbWJICi0JCQkJRWluc3RlaW5zdHJhc3NlIDExCi0JCQkJVmllcm5oZWltIEhlc3NlbiBEIDY4NTE5Ci0JCQkJR0VSTUFOWQotCi0wMC0xQy03NiAgIChoZXgpCQlUaGUgV2FuZHN3b3J0aCBHcm91cCBMdGQKLTAwMUM3NiAgICAgKGJhc2UgMTYpCQlUaGUgV2FuZHN3b3J0aCBHcm91cCBMdGQKLQkJCQlBbGJlcnQgRHJpdmUKLQkJCQlTaGVlcndhdGVyCi0JCQkJV29raW5nIFN1cnJleSBHVTIxIDVTRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFDLTc3ICAgKGhleCkJCVByb2R5cwotMDAxQzc3ICAgICAoYmFzZSAxNikJCVByb2R5cwotCQkJCUMvVHJpZ28gNTQgUG9sLiBJbmQuIFBvbHZvcmFuY2EKLQkJCQlMZWdhbmVzIE1BRFJJRCAyODkxNAotCQkJCVNQQUlOCi0KLTAwLTFDLTc4ICAgKGhleCkJCVdZUExBWSBTQVMKLTAwMUM3OCAgICAgKGJhc2UgMTYpCQlXWVBMQVkgU0FTCi0JCQkJMjAwIGF2ZW51ZSBkZSBQcm92ZW5jZQotCQkJCUFMTEFVQ0ggQmRSIDEzMTkwCi0JCQkJRlJBTkNFCi0KLTAwLTFDLTc5ICAgKGhleCkJCUNvaGVzaXZlIEZpbmFuY2lhbCBUZWNobm9sb2dpZXMgTExDCi0wMDFDNzkgICAgIChiYXNlIDE2KQkJQ29oZXNpdmUgRmluYW5jaWFsIFRlY2hub2xvZ2llcyBMTEMKLQkJCQkyMDAgU291dGggV2Fja2VyIERyLgotCQkJCVN1aXRlIDE1MDAKLQkJCQlDaGljYWdvIElMIDYwNjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy03QSAgIChoZXgpCQlQZXJmZWN0b25lIE5ldHdhcmUgQ29tcGFueSBMdGQKLTAwMUM3QSAgICAgKGJhc2UgMTYpCQlQZXJmZWN0b25lIE5ldHdhcmUgQ29tcGFueSBMdGQKLQkJCQlVbml0IDgxNSwgU3VuIEZ1bmcgQ2VudHJlLAotCQkJCUt3b2sgU2h1aSBSZCwKLQkJCQlLd2FpIENodW5nICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUMtN0IgICAoaGV4KQkJQ2FzdGxlbmV0IFRlY2hub2xvZ3kgSW5jLgotMDAxQzdCICAgICAoYmFzZSAxNikJCUNhc3RsZW5ldCBUZWNobm9sb2d5IEluYy4KLQkJCQlOby42NCwgQ2h1bmctU2hhbiBSZC4KLQkJCQlUdS1DaGVuZyBDaXR5IFRhaXBlaSAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTdDICAgKGhleCkJCVBFUlEgU1lTVEVNUyBDT1JQT1JBVElPTgotMDAxQzdDICAgICAoYmFzZSAxNikJCVBFUlEgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTI2MDAgTElCRVJFVFkgQVZFTlVFCi0JCQkJUC5PLiBCT1ggMjYwMAotCQkJCVBJVFRTQlVSR0ggUEEgMTUyMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTdEICAgKGhleCkJCUV4Y2VscG9pbnQgTWFudWZhY3R1cmluZyBQdGUgTHRkCi0wMDFDN0QgICAgIChiYXNlIDE2KQkJRXhjZWxwb2ludCBNYW51ZmFjdHVyaW5nIFB0ZSBMdGQKLQkJCQkxNSwgQ2hhbmdpIEJ1c2luZXNzIFBhcmsKLQkJCQlDZW50cmFsIDEsIDV0aCBMZXZlbAotCQkJCTQ4NjA1NwotCQkJCVNJTkdBUE9SRQotCi0wMC0xQy03RSAgIChoZXgpCQlUb3NoaWJhCi0wMDFDN0UgICAgIChiYXNlIDE2KQkJVG9zaGliYQotCQkJCTItOSxTdWVoaXJvLUNobwotCQkJCU9tZSBUb2t5byAxOTg4NzEwCi0JCQkJSkFQQU4KLQotMDAtMUMtN0YgICAoaGV4KQkJQ2hlY2sgUG9pbnQgU29mdHdhcmUgVGVjaG5vbG9naWVzCi0wMDFDN0YgICAgIChiYXNlIDE2KQkJQ2hlY2sgUG9pbnQgU29mdHdhcmUgVGVjaG5vbG9naWVzCi0JCQkJM0EgSmFib3RpbnNreSBTdC4KLQkJCQlEaWFtb25kIFRvd2VyCi0JCQkJUmFtYXQgR2FuICA1MjUyMAotCQkJCUlTUkFFTAotCi0wMC0xQy04MCAgIChoZXgpCQlOZXcgQnVzaW5lc3MgRGl2aXNpb24vUmhlYS1JbmZvcm1hdGlvbiBDTy4sIExURC4KLTAwMUM4MCAgICAgKGJhc2UgMTYpCQlOZXcgQnVzaW5lc3MgRGl2aXNpb24vUmhlYS1JbmZvcm1hdGlvbiBDTy4sIExURC4KLQkJCQk0RiA1OTQgWWVvbmcgUHVuZyBCbGRnLCBHdWV1aS1Eb25nCi0JCQkJU2VvdWwgR3dhbmdqaW4tR3UgMTQzLTIwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy04MSAgIChoZXgpCQlOZXh0R2VuIFZlbnR1cmkgTFRECi0wMDFDODEgICAgIChiYXNlIDE2KQkJTmV4dEdlbiBWZW50dXJpIExURAotCQkJCVRlY2huaXVtIDIKLQkJCQlLaW5ncyBSb2FkCi0JCQkJU3dhbnNlYSBXZXN0IEdsYW1vcmdhbiBTQTE4UEoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQy04MiAgIChoZXgpCQlHZW5ldyBUZWNobm9sb2dpZXMKLTAwMUM4MiAgICAgKGJhc2UgMTYpCQlHZW5ldyBUZWNobm9sb2dpZXMKLQkJCQkzQTMgQnVpbGRpbmcgQjEsIEN5YmVyLXRlY2ggWm9uZSwKLQkJCQlHYW94aW4gQXZlLiA3UywgSGktdGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTFDLTgzICAgKGhleCkJCU5ldyBMZXZlbCBUZWxlY29tIENvLiwgTHRkLgotMDAxQzgzICAgICAoYmFzZSAxNikJCU5ldyBMZXZlbCBUZWxlY29tIENvLiwgTHRkLgotCQkJCUlOTk9QTEVYIDEtNzAzCi0JCQkJMzcxLTQ3LCAgR2FzYW4tRG9uZywgR2V1bWNoZW9uLUd1Ci0JCQkJU2VvdWwgIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtODQgICAoaGV4KQkJU1RMIFNvbHV0aW9uIENvLixMdGQuCi0wMDFDODQgICAgIChiYXNlIDE2KQkJU1RMIFNvbHV0aW9uIENvLixMdGQuCi0JCQkJIzcxMCwgV29ybGQgTWVyaWRpYW4gVmVudHVyZSBDZW50ZXIgSQotCQkJCTYwLTI0LCBHYXNhbi1kb25nLCBHZXVtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUyNzgxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTg1ICAgKGhleCkJCUV1bmljb3JuCi0wMDFDODUgICAgIChiYXNlIDE2KQkJRXVuaWNvcm4KLQkJCQkyMjYtMTYgdW5ibyBiL2Qgc3Vja2Nob24tZG9uZyBzb25ncGEtZ3UKLQkJCQlzZW91bCAgMTM4ODQ1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTg2ICAgKGhleCkJCUNyYW5pdGUgU3lzdGVtcywgSW5jLgotMDAxQzg2ICAgICAoYmFzZSAxNikJCUNyYW5pdGUgU3lzdGVtcywgSW5jLgotCQkJCTEyMSBBbGJyaWdodCBXYXkKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTg3ICAgKGhleCkJCVVyaXZlciBJbmMuCi0wMDFDODcgICAgIChiYXNlIDE2KQkJVXJpdmVyIEluYy4KLQkJCQkzcmQuLCBGbC4sIEJvZ3dhbmcgQmxkZy4sIFBvaS1kb25nLCAyMzgtNyBHYW5nbmFtLWd1LAotCQkJCVNlb3VsICAxMzUtOTY0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTg4ICAgKGhleCkJCVRSQU5TWVNURU0gSU5DLgotMDAxQzg4ICAgICAoYmFzZSAxNikJCVRSQU5TWVNURU0gSU5DLgotCQkJCU5vLiAxLTIsIExpLUhzaW4gUmQgMSwgU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTg5ICAgKGhleCkJCUZvcmNlIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDFDODkgICAgIChiYXNlIDE2KQkJRm9yY2UgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQlQTyBCb3ggMjUwMjg2Ci0JCQkJUGxhbm8gVFggNzUwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLThBICAgKGhleCkJCUNpcnJhc2NhbGUgQ29ycG9yYXRpb24KLTAwMUM4QSAgICAgKGJhc2UgMTYpCQlDaXJyYXNjYWxlIENvcnBvcmF0aW9uCi0JCQkJOTQ0OSBDYXJyb2xsIFBhcmsgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLThCICAgKGhleCkJCU1KIElubm92YXRpb25zIEx0ZC4KLTAwMUM4QiAgICAgKGJhc2UgMTYpCQlNSiBJbm5vdmF0aW9ucyBMdGQuCi0JCQkJMzMzIFd5ZWNyb2Z0IFJvYWQKLQkJCQlVbml0IDMKLQkJCQlPYWt2aWxsZSBPbnRhcmlvIEw2SyAySDIKLQkJCQlDQU5BREEKLQotMDAtMUMtOEMgICAoaGV4KQkJRElBTCBURUNITk9MT0dZIExURC4KLTAwMUM4QyAgICAgKGJhc2UgMTYpCQlESUFMIFRFQ0hOT0xPR1kgTFRELgotCQkJCTZGLTQsIE5PLjE4LCBMQU5FLjYwOSwgU0VDLjUsIENIT05HU0lOIFJELiwKLQkJCQlTQU5DSE9ORyBDSVRZIFRBSVBFSSBDT1VOVFkgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy04RCAgIChoZXgpCQlNZXNhIEltYWdpbmcKLTAwMUM4RCAgICAgKGJhc2UgMTYpCQlNZXNhIEltYWdpbmcKLQkJCQlCYWRlbmVyc3RyYXNzZSA1NjkKLQkJCQladXJpY2ggWkggODA0OAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFDLThFICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50IElQRAotMDAxQzhFICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50IElQRAotCQkJCTcwMSBFLiBNaWRkbGVmaWVsZCBSZC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy04RiAgIChoZXgpCQlBZHZhbmNlZCBFbGVjdHJvbmljIERlc2lnbiwgSW5jLgotMDAxQzhGICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIEVsZWN0cm9uaWMgRGVzaWduLCBJbmMuCi0JCQkJMzQ0IEpvaG4gTCBEaWV0c2NoIEJsdmQuLCBVbml0ICMyCi0JCQkJTm9ydGggQXR0bGVib3JvIE1BIDAyNzYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy05MCAgIChoZXgpCQlFbXBhY2tldCBDb3Jwb3JhdGlvbgotMDAxQzkwICAgICAoYmFzZSAxNikJCUVtcGFja2V0IENvcnBvcmF0aW9uCi0JCQkJT3Nha2kgS0kgYmxkZy4KLQkJCQkxLTE5LTEwIE9zYWtpCi0JCQkJU2hpbmFnYXdhIFRva3lvIDE0MS0wMDMyCi0JCQkJSkFQQU4KLQotMDAtMUMtOTEgICAoaGV4KQkJR2VmZW4gSW5jLgotMDAxQzkxICAgICAoYmFzZSAxNikJCUdlZmVuIEluYy4KLQkJCQkyMDYwMCBOb3JkaG9mZiBTdHJlZXQKLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy05MiAgIChoZXgpCQlUZXJ2ZWxhCi0wMDFDOTIgICAgIChiYXNlIDE2KQkJVGVydmVsYQotCQkJCTQzIE5hZ29nIFBhcmsKLQkJCQlTdWl0ZSAyMDEKLQkJCQlBY3RvbiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtOTMgICAoaGV4KQkJRXhhRGlnbSBJbmMKLTAwMUM5MyAgICAgKGJhc2UgMTYpCQlFeGFEaWdtIEluYwotCQkJCTI4NzEgUHVsbG1hbiBTdAotCQkJCVNhbnRhIEFuYSBDQSA5MjcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtOTQgICAoaGV4KQkJTEktQ09SIEJpb3NjaWVuY2VzCi0wMDFDOTQgICAgIChiYXNlIDE2KQkJTEktQ09SIEJpb3NjaWVuY2VzCi0JCQkJNDY0NyBTdXBlcmlvciBTdHJlZXQKLQkJCQlMaW5jb2xuIE5FIDY4NTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy05NSAgIChoZXgpCQlPcHRpY29tbSBDb3Jwb3JhdGlvbgotMDAxQzk1ICAgICAoYmFzZSAxNikJCU9wdGljb21tIENvcnBvcmF0aW9uCi0JCQkJNjgyNyBOYW5jeSBSaWRnZSBEcgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtOTYgICAoaGV4KQkJTGlua3dpc2UgVGVjaG5vbG9neSBQdGUgTHRkCi0wMDFDOTYgICAgIChiYXNlIDE2KQkJTGlua3dpc2UgVGVjaG5vbG9neSBQdGUgTHRkCi0JCQkJQmxrIDMsIEFuZyBNbyBLaW8gSW5kdXN0cmlhbCBQYXJrIDJBCi0JCQkJIzA2LTAzLiBBTUsgVGVjaCBJCi0JCQkJNTY4MDUwCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTFDLTk3ICAgKGhleCkJCUVuenl0ZWsgVGVjaG5vbG9neSBJbmMuLAotMDAxQzk3ICAgICAoYmFzZSAxNikJCUVuenl0ZWsgVGVjaG5vbG9neSBJbmMuLAotCQkJCTdGLCBOby4zNSwgSHN1ZWggRnUgUmQuLAotCQkJCUhzaW5jaHUgIDMwMCwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTk4ICAgKGhleCkJCUxVQ0tZIFRFQ0hOT0xPR1kgKEhLKSBDT01QQU5ZIExJTUlURUQKLTAwMUM5OCAgICAgKGJhc2UgMTYpCQlMVUNLWSBURUNITk9MT0dZIChISykgQ09NUEFOWSBMSU1JVEVECi0JCQkJRkxBVC9STSAxNTAzIDE1L0YgSVNMQU5EIEJFVkVSTEVZIE5PIDEgR1JFQVQgR0VPUkdFIFNUUkVFVCBDQVVTRVdBWSBCQVkKLQkJCQk5OTkwNzcKLQkJCQlIT05HIEtPTkcKLQotMDAtMUMtOTkgICAoaGV4KQkJU2h1bnJhIFNvZnR3YXJlIEx0ZC4KLTAwMUM5OSAgICAgKGJhc2UgMTYpCQlTaHVucmEgU29mdHdhcmUgTHRkLgotCQkJCTIwIEhhdGEnYXMgU3QuCi0JCQkJS2VmYXItU2FiYSAgNDQ0MjUKLQkJCQlJU1JBRUwKLQotMDAtMUMtOUEgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUM5QSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUMtOUIgICAoaGV4KQkJRkVJRyBFTEVDVFJPTklDIEdtYkgKLTAwMUM5QiAgICAgKGJhc2UgMTYpCQlGRUlHIEVMRUNUUk9OSUMgR21iSAotCQkJCUxhbmdlIFN0cmFzc2UgNAotCQkJCVdlaWxidXJnIEhlc3NlbiAzNTc4MQotCQkJCUdFUk1BTlkKLQotMDAtMUMtOUMgICAoaGV4KQkJTm9ydGVsCi0wMDFDOUMgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFDLTlEICAgKGhleCkJCUxpZWN0aGkgQUcKLTAwMUM5RCAgICAgKGJhc2UgMTYpCQlMaWVjdGhpIEFHCi0JCQkJMTAgVW50ZXJob2x6IFN0cmVldAotCQkJCUtyaWVnc3RldHRlbiBTb2xvdGh1cm4gNDU2NgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFDLTlFICAgKGhleCkJCUR1YWx0ZWNoIElUIEFCCi0wMDFDOUUgICAgIChiYXNlIDE2KQkJRHVhbHRlY2ggSVQgQUIKLQkJCQlCYW5laGFnc2dhdGFuIDFGCi0JCQkJR09USEVOQlVSRyBWYXN0cmEgR290YWxhbmQgNDE0NTEKLQkJCQlTV0VERU4KLQotMDAtMUMtOUYgICAoaGV4KQkJUmF6b3JzdHJlYW0sIExMQwotMDAxQzlGICAgICAoYmFzZSAxNikJCVJhem9yc3RyZWFtLCBMTEMKLQkJCQkyMzgxLUMgUmVuYWlzc2FuY2UgRHJpdmUKLQkJCQlMYXMgVmVnYXMgTlYgODkxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUEwICAgKGhleCkJCVByb2R1Y3Rpb24gUmVzb3VyY2UgR3JvdXAsIExMQwotMDAxQ0EwICAgICAoYmFzZSAxNikJCVByb2R1Y3Rpb24gUmVzb3VyY2UgR3JvdXAsIExMQwotCQkJCTUzOSBUZW1wbGUgSGlsbCBSb2FkCi0JCQkJTmV3IFdpbmRzb3IgTlkgMTI1NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUExICAgKGhleCkJCUFLQU1BSSBURUNITk9MT0dJRVMsIElOQy4KLTAwMUNBMSAgICAgKGJhc2UgMTYpCQlBS0FNQUkgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJOCBDQU1CUklER0UgQ0VOVEVSCi0JCQkJQ0FNQlJJREdFIE1BIDAyMTQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1BMiAgIChoZXgpCQlQSVJFTExJIEJST0FEQkFORCBTT0xVVElPTlMKLTAwMUNBMiAgICAgKGJhc2UgMTYpCQlQSVJFTExJIEJST0FEQkFORCBTT0xVVElPTlMKLQkJCQlWSUFMRSBTQVJDQSAyMjIKLQkJCQlNSUxBTk8gIDIwMTI2Ci0JCQkJSVRBTFkKLQotMDAtMUMtQTMgICAoaGV4KQkJVGVycmEKLTAwMUNBMyAgICAgKGJhc2UgMTYpCQlUZXJyYQotCQkJCURyYXVneXN0ZXMgc3RyLiAyMgotCQkJCUthdW5hcyAgTFQtNTEyNTYKLQkJCQlMSVRIVUFOSUEKLQotMDAtMUMtQTQgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLTAwMUNBNCAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNrYW5lIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTAwLTFDLUE1ICAgKGhleCkJCVp5Z28gQ29ycG9yYXRpb24KLTAwMUNBNSAgICAgKGJhc2UgMTYpCQlaeWdvIENvcnBvcmF0aW9uCi0JCQkJMjEgTGF1cmVsIEJyb29rIFJkLgotCQkJCU1pZGRsZWZpZWxkIENUIDA2NDU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1BNiAgIChoZXgpCQlXaW40TkVUCi0wMDFDQTYgICAgIChiYXNlIDE2KQkJV2luNE5FVAotCQkJCTEzMDEgS09MT04gRGlnaXRhbCBUb3dlciwKLQkJCQkyMjItNyBLdXJvLWRvbmcKLQkJCQlLdXJvLWd1IFNlb3VsIDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtQTcgICAoaGV4KQkJSW50ZXJuYXRpb25hbCBRdWFydHogTGltaXRlZAotMDAxQ0E3ICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgUXVhcnR6IExpbWl0ZWQKLQkJCQkybmQgRmxvb3IsIDIsIERhaSBXYW5nIFN0cmVldCwKLQkJCQlUYWkgUG8gSW5kdXN0cmlhbCBFc3RhdGUsIFRhaSBQbywgTi5ULgotCQkJCUhvbmcgS29uZyA4NTIKLQkJCQlDSElOQQotCi0wMC0xQy1BOCAgIChoZXgpCQlBaXJUaWVzIFdpcmVsZXNzIE5ldHdvcmtzCi0wMDFDQTggICAgIChiYXNlIDE2KQkJQWlyVGllcyBXaXJlbGVzcyBOZXR3b3JrcwotCQkJCUJ1eXVrZGVyZSBDYWQgTm8gMTAzIEthdCA1Ci0JCQkJTWVjaWRpeWVrb3ksIElzdGFuYnVsIDM0NDYwCi0JCQkJVFVSS0VZCi0KLTAwLTFDLUE5ICAgKGhleCkJCUF1ZGlvbWF0aWNhIFNybAotMDAxQ0E5ICAgICAoYmFzZSAxNikJCUF1ZGlvbWF0aWNhIFNybAotCQkJCVZpYSBNYW5mcmVkaSAxMgotCQkJCUZsb3JlbmNlIEl0YWx5IDUwMTM2Ci0JCQkJSVRBTFkKLQotMDAtMUMtQUEgICAoaGV4KQkJQmVsbG9uIFB0eSBMdGQKLTAwMUNBQSAgICAgKGJhc2UgMTYpCQlCZWxsb24gUHR5IEx0ZAotCQkJCVVuaXQgMTIvMTItMTggVmljdG9yaWEgU3QgRWFzdAotCQkJCUxpZGNvbWJlIE5TVyAyMDAwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTFDLUFCICAgKGhleCkJCU1leWVyIFNvdW5kIExhYm9yYXRvcmllcywgSW5jLgotMDAxQ0FCICAgICAoYmFzZSAxNikJCU1leWVyIFNvdW5kIExhYm9yYXRvcmllcywgSW5jLgotCQkJCTI4MzIgU2FuIFBhYmxvIEF2ZS4KLQkJCQlCZXJrZWxleSBDQSA5NDcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQUMgICAoaGV4KQkJUW5pcSBUZWNobm9sb2d5IENvcnAuCi0wMDFDQUMgICAgIChiYXNlIDE2KQkJUW5pcSBUZWNobm9sb2d5IENvcnAuCi0JCQkJNUYsIE5vLjEzMywgU2VjLjQsIE1pbnNoZW5nIEUuIFJkLiwKLQkJCQlTb25nc2hhbiBEaXN0cmljdCwKLQkJCQlUYWlwZWkgIDEwNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtQUQgICAoaGV4KQkJV3VoYW4gVGVsZWNvbW11bmljYXRpb24gRGV2aWNlcyBDby4sTHRkCi0wMDFDQUQgICAgIChiYXNlIDE2KQkJV3VoYW4gVGVsZWNvbW11bmljYXRpb24gRGV2aWNlcyBDby4sTHRkCi0JCQkJODggWW91a2V5dWFuIFJvYWQsSG9uZ3NoYW4gRGlzdHJpY3QKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi0wMC0xQy1BRSAgIChoZXgpCQlXaUNob3J1cywgSW5jLgotMDAxQ0FFICAgICAoYmFzZSAxNikJCVdpQ2hvcnVzLCBJbmMuCi0JCQkJMzU5MCBOIDFzdCBTdHJlZXQsIFN1aXRlIDMwMAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1BRiAgIChoZXgpCQlQbGF0byBOZXR3b3JrcyBJbmMuCi0wMDFDQUYgICAgIChiYXNlIDE2KQkJUGxhdG8gTmV0d29ya3MgSW5jLgotCQkJCTI4NTUgS2lmZXIgUm9hZAotCQkJCVN1aXRlIDIwNAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFDQjAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQjEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQ0IxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUIyICAgKGhleCkJCUJQVCBTUEEKLTAwMUNCMiAgICAgKGJhc2UgMTYpCQlCUFQgU1BBCi0JCQkJVmlhIFN0YXppb25lLDQ4Ci0JCQkJU2VzdG8gYWwgUmVnaGVuYSBQb3JkZW5vbmUgMzMwNzkKLQkJCQlJVEFMWQotCi0wMC0xQy1CMyAgIChoZXgpCQlBUFBMRSwgSU5DCi0wMDFDQjMgICAgIChiYXNlIDE2KQkJQVBQTEUsIElOQwotCQkJCTEgSU5GSU5JVEUgTE9PUAotCQkJCUNVUEVSVElOTyBDQUxJRk9STklBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CNCAgIChoZXgpCQlJcmlkaXVtIFNhdGVsbGl0ZSBMTEMKLTAwMUNCNCAgICAgKGJhc2UgMTYpCQlJcmlkaXVtIFNhdGVsbGl0ZSBMTEMKLQkJCQk4NDQwIFMuIFJpdmVyIFBhcmt3YXkKLQkJCQlUZW1wZSBBWiA4NTI4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQjUgICAoaGV4KQkJTmVpaHVhIE5ldHdvcmsgVGVjaG5vbG9neSBDby4sTFRELihOSE4pCi0wMDFDQjUgICAgIChiYXNlIDE2KQkJTmVpaHVhIE5ldHdvcmsgVGVjaG5vbG9neSBDby4sTFRELihOSE4pCi0JCQkJUGxvdCBYaW5tZWkgUm9hZCAxMDItUSxOZXcgRGlzdHJpY3QKLQkJCQlXdVhpIEppYW5nc3UgMjE0MDI4Ci0JCQkJQ0hJTkEKLQotMDAtMUMtQjYgICAoaGV4KQkJRHV6b24gQ05UIENvLiwgTHRkLgotMDAxQ0I2ICAgICAoYmFzZSAxNikJCUR1em9uIENOVCBDby4sIEx0ZC4KLQkJCQkxNHRoIEZsb29yLCBJUkUgYnVpbGRpbmcgMgotCQkJCVlhbmdweXVuZy1kb25nIDRnYSwgWW91bmdkdW5ncG8tZ3UKLQkJCQlTZW91bCAgMTUwLTk2NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy1CNyAgIChoZXgpCQlVU0MgRGlnaUFyayBDb3Jwb3JhdGlvbgotMDAxQ0I3ICAgICAoYmFzZSAxNikJCVVTQyBEaWdpQXJrIENvcnBvcmF0aW9uCi0JCQkJNkYgVGVubm96IENlbnRyYWwgVG93ZXIgMi0yLTI0IEhpZ2FzaGlzaGluYWdhd2EKLQkJCQlUb2t5byBTaGluYWdhd2Eta3UgMTQwLTAwMDIKLQkJCQlKQVBBTgotCi0wMC0xQy1COCAgIChoZXgpCQlDQkMgQ28uLCBMdGQKLTAwMUNCOCAgICAgKGJhc2UgMTYpCQlDQkMgQ28uLCBMdGQKLQkJCQkyLTE1LTEzLCBUc3VraXNoaW1hLCBDaHVvLWt1Ci0JCQkJVG9reW8gIDEwNC0wMDUyCi0JCQkJSkFQQU4KLQotMDAtMUMtQjkgICAoaGV4KQkJS1dBTkcgU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLTAwMUNCOSAgICAgKGJhc2UgMTYpCQlLV0FORyBTVU5HIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTIwMSwgV09STEQgVkVOVFVSRSBUT1dOIDYwLTI0LCBHQVNBTi1ET05HIEdFVU1DSFVOLUdVLAotCQkJCVNFT1VMICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLUJBICAgKGhleCkJCVZlclNjaWVudCwgSW5jLgotMDAxQ0JBICAgICAoYmFzZSAxNikJCVZlclNjaWVudCwgSW5jLgotCQkJCTc3MDAgRXF1aXRhYmxlIERyaXZlCi0JCQkJU3VpdGUgMTAwCi0JCQkJRWRlbiBQcmFpcmllIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CQiAgIChoZXgpCQlNdXNpY2lhbkxpbmsKLTAwMUNCQiAgICAgKGJhc2UgMTYpCQlNdXNpY2lhbkxpbmsKLQkJCQkyNDAxIENvcnkgQXZlLgotCQkJCVNhbiBKb3NlIENBIDk1MTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CQyAgIChoZXgpCQlDYXN0R3JhYmJlciwgTExDCi0wMDFDQkMgICAgIChiYXNlIDE2KQkJQ2FzdEdyYWJiZXIsIExMQwotCQkJCTY1MDcgV2lsa2lucyBBdmVudWUKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CRCAgIChoZXgpCQlFenplIE1vYmlsZSBUZWNoLiwgSW5jLgotMDAxQ0JEICAgICAoYmFzZSAxNikJCUV6emUgTW9iaWxlIFRlY2guLCBJbmMuCi0JCQkJM0YsIEJ1Ym11c2EgQmxkZy4sIDE1MS0zMQotCQkJCU5vbmh5dW4tZG9uZywgS2FuZ25hbS1rdQotCQkJCVNlb3VsIDEzNS04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtQkUgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFDQkUgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gS1lPVE8gNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xQy1CRiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMUNCRiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFDLUMwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxQ0MwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUMtQzEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDFDQzEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4uIFVTIDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElsbGlub2lzIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1DMiAgIChoZXgpCQlQYXJ0IElJIFJlc2VhcmNoLCBJbmMuCi0wMDFDQzIgICAgIChiYXNlIDE2KQkJUGFydCBJSSBSZXNlYXJjaCwgSW5jLgotCQkJCTQ2MDEgRS4gQWlycG9ydCBEci4KLQkJCQlPbnRhcmlvIENBIDkxNzYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1DMyAgIChoZXgpCQlQYWNlIHBsYwotMDAxQ0MzICAgICAoYmFzZSAxNikJCVBhY2UgcGxjCi0JCQkJU2FsdHMgTWlsbAotCQkJCVZpY3RvcmlhIFJvYWQKLQkJCQlCcmFkZm9yZCBXZXN0IFlvcmtzaGlyZSBCRDE4IDNMRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFDLUM0ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxQ0M0ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJbXMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1DNSAgIChoZXgpCQkzQ09NIExURAotMDAxQ0M1ICAgICAoYmFzZSAxNikJCTNDT00gTFRECi0JCQkJM0NvbSBFdXJvcGUgTHRkLCBQZW9wbGVidWlsZGluZyAyCi0JCQkJUGVvcGxlYnVpbGRpbmcgRXN0YXRlLCBNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFDLUM2ICAgKGhleCkJCVByb1N0b3IgU3lzdGVtcwotMDAxQ0M2ICAgICAoYmFzZSAxNikJCVByb1N0b3IgU3lzdGVtcwotCQkJCTU1NTUgQ2VudHJhbCBBdmVudWUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCb3VsZGVyIENvbG9yYWRvIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1DNyAgIChoZXgpCQlSZW1icmFuZHQgVGVjaG5vbG9naWVzLCBMTEMgZC9iL2EgUkVNU1RSRUFNCi0wMDFDQzcgICAgIChiYXNlIDE2KQkJUmVtYnJhbmR0IFRlY2hub2xvZ2llcywgTExDIGQvYi9hIFJFTVNUUkVBTQotCQkJCTE0MCBTb3V0aCBCZXZlcmx5IERyaXZlCi0JCQkJU3VpdGUgMjAzCi0JCQkJQmV2ZXJseSBIaWxscyBDQSA5MDIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQzggICAoaGV4KQkJSU5EVVNUUk9OSUMgSW5kdXN0cmllLUVsZWN0cm9uaWMgR21iSCAmIENvLiBLRwotMDAxQ0M4ICAgICAoYmFzZSAxNikJCUlORFVTVFJPTklDIEluZHVzdHJpZS1FbGVjdHJvbmljIEdtYkggJiBDby4gS0cKLQkJCQlDYXJsLUphY29iLUtvbGItV2VnIDEKLQkJCQlXZXJ0aGVpbSBCYWRlbi1XdWVydHRlbWJlcmcgOTc4NzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLUM5ICAgKGhleCkJCUthaXNlIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMUNDOSAgICAgKGJhc2UgMTYpCQlLYWlzZSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uNjc4LCBXdW5zeXVlIFJkLiwgWnVveWluZyBEaXN0cmljdCwKLQkJCQlLYW9oc2l1bmcgIDgxMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtQ0EgICAoaGV4KQkJU2hhbmdoYWkgR2FvemhpIFNjaWVuY2UgJiBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLgotMDAxQ0NBICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEdhb3poaSBTY2llbmNlICYgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDby4KLQkJCQlOby4yODMgUWluIEppYW5nIFJkLiBTaGFuZ2hhaSxDaGluYQotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi0wMC0xQy1DQiAgIChoZXgpCQlGb3J0aCBDb3Jwb3JhdGlvbiBQdWJsaWMgQ29tcGFueSBMaW1pdGVkCi0wMDFDQ0IgICAgIChiYXNlIDE2KQkJRm9ydGggQ29ycG9yYXRpb24gUHVibGljIENvbXBhbnkgTGltaXRlZAotCQkJCTIyNi8xMiwxMywxNiBQYWhvbHlvdGhpbiBSb2FkCi0JCQkJU2Ftc2VubmFpLCBQYXlhdGhhaQotCQkJCUJhbmdrb2sgIDEwNDAwCi0JCQkJVEhBSUxBTkQKLQotMDAtMUMtQ0MgICAoaGV4KQkJUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQKLTAwMUNDQyAgICAgKGJhc2UgMTYpCQlSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZAotCQkJCTMwNSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi0wMC0xQy1DRCAgIChoZXgpCQlBbGVrdHJvbmEgQ29ycG9yYXRpb24KLTAwMUNDRCAgICAgKGJhc2UgMTYpCQlBbGVrdHJvbmEgQ29ycG9yYXRpb24KLQkJCQk5NSBIYXRoYXdheSBTdHJlZXQsIFN1aXRlIDEwCi0JCQkJUHJvdmlkZW5jZSBSSSAwMjkwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQ0UgICAoaGV4KQkJQnkgVGVjaGRlc2lnbgotMDAxQ0NFICAgICAoYmFzZSAxNikJCUJ5IFRlY2hkZXNpZ24KLQkJCQlDLyBNYXJxdWVzIGRlIEFodW1hZGEgMTEKLQkJCQlNYWRyaWQgIDI4MDI4Ci0JCQkJU1BBSU4KLQotMDAtMUMtQ0YgICAoaGV4KQkJTElNRVRFSwotMDAxQ0NGICAgICAoYmFzZSAxNikJCUxJTUVURUsKLQkJCQkjMjEzLTEsIEJ5dWNrc2FuIERpZ2l0YWwgVmFsbGV5IElJLCA0ODAtMTAsIEdhc2FuLWRvbmcsCi0JCQkJR2V1bWNoZW4tZ3UKLQkJCQlTZW91bCAgMTUzLTc4MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy1EMCAgIChoZXgpCQlDaXJjbGVvbmUgQ28uLEx0ZC4KLTAwMUNEMCAgICAgKGJhc2UgMTYpCQlDaXJjbGVvbmUgQ28uLEx0ZC4KLQkJCQk4NjAtMSxOb2RhCi0JCQkJQmVwcHUtc2hpIE9vaXRhLWtlbiA4NzQtMDAxNgotCQkJCUpBUEFOCi0KLTAwLTFDLUQxICAgKGhleCkJCVdhdmVzIEF1ZGlvIExURAotMDAxQ0QxICAgICAoYmFzZSAxNikJCVdhdmVzIEF1ZGlvIExURAotCQkJCUF6cmlsZWkgQ2VudGVyIDMsIFRyaWFuZ2xlIHRvd2VyCi0JCQkJMzJuZCBmbG9vcgotCQkJCVRlbCBBdml2IENlbnRyYWwgNjcwMjMKLQkJCQlJU1JBRUwKLQotMDAtMUMtRDIgICAoaGV4KQkJS2luZyBDaGFtcGlvbiAoSG9uZyBLb25nKSBMaW1pdGVkCi0wMDFDRDIgICAgIChiYXNlIDE2KQkJS2luZyBDaGFtcGlvbiAoSG9uZyBLb25nKSBMaW1pdGVkCi0JCQkJVW5pdCAxNTIwLCAxNS9GLCBQaGFzZSAxLCBNZXRybyBDZW50cmUsCi0JCQkJMzIgTGFtIEhpbmcgU3RyZWV0LCBLb3dsb29uIEJheSwKLQkJCQlLb3dsb29uICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUMtRDMgICAoaGV4KQkJWlAgRW5naW5lZXJpbmcgU0VMCi0wMDFDRDMgICAgIChiYXNlIDE2KQkJWlAgRW5naW5lZXJpbmcgU0VMCi0JCQkJdmlhIEFyZGl0byBEZXNpbywgNjAKLQkJCQlUZWNub3BvbG8gVGlidXJ0aW5vCi0JCQkJUk9NRSAgMDAxMzEKLQkJCQlJVEFMWQotCi0wMC0xQy1ENCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQ0Q0ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQy1ENSAgIChoZXgpCQlaZWVWZWUsIEluYy4KLTAwMUNENSAgICAgKGJhc2UgMTYpCQlaZWVWZWUsIEluYy4KLQkJCQkxIE1vbmFyY2ggRHJpdmUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlMaXR0bGV0b24gTUEgMDE0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUQ2ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFDRDYgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFDLUQ3ICAgKGhleCkJCUhhcm1hbi9CZWNrZXIgQXV0b21vdGl2ZSBTeXN0ZW1zIEdtYkgKLTAwMUNENyAgICAgKGJhc2UgMTYpCQlIYXJtYW4vQmVja2VyIEF1dG9tb3RpdmUgU3lzdGVtcyBHbWJICi0JCQkJQmVja2VyLUdvcmluZy1TdHIuIDE2Ci0JCQkJS2FybHNiYWQgQmFkZW4gLSBXdXJ0dGVtYmVyZyA3NjMwNwotCQkJCUdFUk1BTlkKLQotMDAtMUMtRDggICAoaGV4KQkJQmx1ZUFudCBXaXJlbGVzcwotMDAxQ0Q4ICAgICAoYmFzZSAxNikJCUJsdWVBbnQgV2lyZWxlc3MKLQkJCQkyNDUgU3QuS2lsZGEgUmQsIFN0IEtpbGRhCi0JCQkJTWVsYm91cm5lIFZpY3RvcmlhIDMxODIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUMtRDkgICAoaGV4KQkJR2xvYmFsVG9wIFRlY2hub2xvZ3kgSW5jLgotMDAxQ0Q5ICAgICAoYmFzZSAxNikJCUdsb2JhbFRvcCBUZWNobm9sb2d5IEluYy4KLQkJCQkxNiBOYW4ta2UgOXRoIFJkLiBTY2llbmNlLWJhc2UgSW5kdXN0cmlhbCBQYXJrLAotCQkJCVNoYW5IdWEgVGFpbmFuIGNvdW50eSA3NDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLURBICAgKGhleCkJCUV4ZWdpbiBUZWNobm9sb2dpZXMgTGltaXRlZAotMDAxQ0RBICAgICAoYmFzZSAxNikJCUV4ZWdpbiBUZWNobm9sb2dpZXMgTGltaXRlZAotCQkJCTIwNCAtIDIwNzEgS2luZ3N3YXkgQXZlbnVlCi0JCQkJUG9ydCBDb3F1aXRsYW0gQkMgVjNDIDZOMgotCQkJCUNBTkFEQQotCi0wMC0xQy1EQiAgIChoZXgpCQlDQVJQT0lOVCBDTy4sTFRECi0wMDFDREIgICAgIChiYXNlIDE2KQkJQ0FSUE9JTlQgQ08uLExURAotCQkJCTEzNDAtNiwgTmFtZ2FuZyBCbGQgN0YsIFNlb2Noby1Eb25nCi0JCQkJU2VvY2hvLUt1LAotCQkJCVNFT1VMICAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLURDICAgKGhleCkJCUN1c3RvbSBDb21wdXRlciBTZXJ2aWNlcywgSW5jLgotMDAxQ0RDICAgICAoYmFzZSAxNikJCUN1c3RvbSBDb21wdXRlciBTZXJ2aWNlcywgSW5jLgotCQkJCTEwMjAgU3ByaW5nIENpdHkgRHJpdmUKLQkJCQlXYXVrZXNoYSBXSSA1MzE4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtREQgICAoaGV4KQkJQ09XQkVMTCBFTkdJTkVFUklORyBDTy4sIExURC4KLTAwMUNERCAgICAgKGJhc2UgMTYpCQlDT1dCRUxMIEVOR0lORUVSSU5HIENPLiwgTFRELgotCQkJCTE3MzktMSBOYWdhdG9ybwotCQkJCVNBS1UgTmFnYW5vIDM4NS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMUMtREUgICAoaGV4KQkJSW50ZXJhY3RpdmUgTXVsdGltZWRpYSBlWGNoYW5nZSBJbmMuCi0wMDFDREUgICAgIChiYXNlIDE2KQkJSW50ZXJhY3RpdmUgTXVsdGltZWRpYSBlWGNoYW5nZSBJbmMuCi0JCQkJTk8uIDE2NSBXZW5saW4gUm9hZC4KLQkJCQlUYWlwZWkgVGFpd2FuIDExMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtREYgICAoaGV4KQkJQmVsa2luIEludGVybmF0aW9uYWwgSW5jLgotMDAxQ0RGICAgICAoYmFzZSAxNikJCUJlbGtpbiBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQk1MDEgVy4gV2FsbnV0IFN0LgotCQkJCUNvbXB0b24gQ2EgOTAyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUUwICAgKGhleCkJCURBU0FOIFRQUwotMDAxQ0UwICAgICAoYmFzZSAxNikJCURBU0FOIFRQUwotCQkJCUhVTUFYIFZpbGxhZ2UgNkYsIDExLTQgU3VuYWUtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtRTEgICAoaGV4KQkJSU5EUkEgU0lTVEVNQVMsIFMuQS4KLTAwMUNFMSAgICAgKGJhc2UgMTYpCQlJTkRSQSBTSVNURU1BUywgUy5BLgotCQkJCUN0cmEuIGRlIExvZWNoZXMsIG4uPyA5Ci0JCQkJVE9SUkVKT04gREUgQVJET1ogTUFEUklEIDI4ODUwCi0JCQkJU1BBSU4KLQotMDAtMUMtRTIgICAoaGV4KQkJQXR0ZXJvIFRlY2gsIExMQy4KLTAwMUNFMiAgICAgKGJhc2UgMTYpCQlBdHRlcm8gVGVjaCwgTExDLgotCQkJCTEzMTUgRGlyZWN0b3JzIFJvdyAtIFN1aXRlIDEwNwotCQkJCUZvcnQgV2F5bmUgSW5kaWFuYSA0NjgwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRTMgICAoaGV4KQkJT3B0aW1lZGljYWwgU3lzdGVtcwotMDAxQ0UzICAgICAoYmFzZSAxNikJCU9wdGltZWRpY2FsIFN5c3RlbXMKLQkJCQkyMzUgSGVtYnJlZSBQYXJrIERyaXZlCi0JCQkJUm9zd2VsbCBHQSAzMDA3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRTQgICAoaGV4KQkJRWxlU3kgSlNDCi0wMDFDRTQgICAgIChiYXNlIDE2KQkJRWxlU3kgSlNDCi0JCQkJQWx0YXlza2F5YSBzdHJlZXQsIDE2MWEKLQkJCQlUb21zayBvYmxhc3QgNjM0MDIxCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFDLUU1ICAgKGhleCkJCU1CUyBFbGVjdHJvbmljIFN5c3RlbXMgR21iSAotMDAxQ0U1ICAgICAoYmFzZSAxNikJCU1CUyBFbGVjdHJvbmljIFN5c3RlbXMgR21iSAotCQkJCVJpbmdzdHJhc3NlIDMKLQkJCQk4MjMxOSBTdGFybmJlcmcgQmF2YXJpYSA4MjMxOQotCQkJCUdFUk1BTlkKLQotMDAtMUMtRTYgICAoaGV4KQkJSU5ORVMKLTAwMUNFNiAgICAgKGJhc2UgMTYpCQlJTk5FUwotCQkJCTgwIGF2ZW51ZSBkZXMgQnV0dGVzIGRlIENvZXNtZXMKLQkJCQlSRU5ORVMgIDM1NzAwCi0JCQkJRlJBTkNFCi0KLTAwLTFDLUU3ICAgKGhleCkJCVJvY29uIFBMQyBSZXNlYXJjaCBDZW50cmUKLTAwMUNFNyAgICAgKGJhc2UgMTYpCQlSb2NvbiBQTEMgUmVzZWFyY2ggQ2VudHJlCi0JCQkJMjEgVmVrIDU2QSBzdHIuCi0JCQkJU29maWEgIDE3MDAKLQkJCQlCVUxHQVJJQQotCi0wMC0xQy1FOCAgIChoZXgpCQlDdW1taW5zIEluYwotMDAxQ0U4ICAgICAoYmFzZSAxNikJCUN1bW1pbnMgSW5jCi0JCQkJMTQwMCA3M3JkIEF2ZSBORQotCQkJCUZyaWRsZXkgTU4gNTU0MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUU5ICAgKGhleCkJCUdhbGF4eSBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMUNFOSAgICAgKGJhc2UgMTYpCQlHYWxheHkgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJOS9GIFdpbiBGdWxsIENvbW1lcmljYWwgQnVpbGRpbmcsIDE3Mi0xNzYgV2luZyBMb2sgU3RyZWV0LAotCQkJCVNoZXVuZyBXYW4sICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUMtRUEgICAoaGV4KQkJU2NpZW50aWZpYy1BdGxhbnRhLCBJbmMKLTAwMUNFQSAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljLUF0bGFudGEsIEluYwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlBVEwgMi5ULjYwMwotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUVCICAgKGhleCkJCU5vcnRlbAotMDAxQ0VCICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xQy1FQyAgIChoZXgpCQlNb2JpbGVzb2Z0IChBdXN0LikgUHR5IEx0ZAotMDAxQ0VDICAgICAoYmFzZSAxNikJCU1vYmlsZXNvZnQgKEF1c3QuKSBQdHkgTHRkCi0JCQkJU3VpdGUgMiwgMjctMzUgR3Jvc3Zlbm9yIFN0cmVldAotCQkJCU5ldXRyYWwgQmF5Ci0JCQkJU3lkbmV5IE5TVyAyMDg5Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFDLUVEICAgKGhleCkJCUVOVklST05ORU1FTlQgU0EKLTAwMUNFRCAgICAgKGJhc2UgMTYpCQlFTlZJUk9OTkVNRU5UIFNBCi0JCQkJMTExIGJkLiBSb2Jlc3BpZXJyZQotCQkJCVBPSVNTWSBZdmVsaW5lcyA3ODMwMAotCQkJCUZSQU5DRQotCi0wMC0xQy1FRSAgIChoZXgpCQlTSEFSUCBDb3Jwb3JhdGlvbgotMDAxQ0VFICAgICAoYmFzZSAxNikJCVNIQVJQIENvcnBvcmF0aW9uCi0JCQkJMjItMjIsTmFnYWlrZS1jaG8sQWJlbm8ta3UKLQkJCQlPc2FrYSAgNTQ1LTg1MjIKLQkJCQlKQVBBTgotCi0wMC0xQy1FRiAgIChoZXgpCQlQcmltYXggRWxlY3Ryb25pY3MgTFRECi0wMDFDRUYgICAgIChiYXNlIDE2KQkJUHJpbWF4IEVsZWN0cm9uaWNzIExURAotCQkJCTY2OSwgUnVleSBLdWFuZyBSb2FkLCBOZWlodQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy1GMCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMUNGMCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOTy4yODksIFNpbmh1IDNyZCBSZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QsIFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtRjEgICAoaGV4KQkJU1VQb1ggVGVjaG5vbG9neSBDby4gLCBMVEQuCi0wMDFDRjEgICAgIChiYXNlIDE2KQkJU1VQb1ggVGVjaG5vbG9neSBDby4gLCBMVEQuCi0JCQkJN0YsIDQxOSAsIENodW5nIFNhbiBSZC4gLCBTZWMgMgotCQkJCUNodW5nIEhvIFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLUYyICAgKGhleCkJCVRlbmxvbiBUZWNobm9sb2d5IENvLixMdGQuCi0wMDFDRjIgICAgIChiYXNlIDE2KQkJVGVubG9uIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQk0L0YuLFNoZW5odWEgQmxkZyxOby4zMTU1LEJpbmhlIFJvYWQsRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzMwotCQkJCUNISU5BCi0KLTAwLTFDLUYzICAgKGhleCkJCUVWUyBCUk9BRENBU1QgRVFVSVBNRU5UCi0wMDFDRjMgICAgIChiYXNlIDE2KQkJRVZTIEJST0FEQ0FTVCBFUVVJUE1FTlQKLQkJCQlMaWVnZSBTY2llbmNlIFBhcmsKLQkJCQlydWUgQm9pcyBTdCBKZWFuIDE2Ci0JCQkJT3VncmVlIExpZWdlIDQxMDIKLQkJCQlCRUxHSVVNCi0KLTAwLTFDLUY0ICAgKGhleCkJCU1lZGlhIFRlY2hub2xvZ3kgU3lzdGVtcyBJbmMKLTAwMUNGNCAgICAgKGJhc2UgMTYpCQlNZWRpYSBUZWNobm9sb2d5IFN5c3RlbXMgSW5jCi0JCQkJNzY2IExha2VmaWVsZCBSb2FkCi0JCQkJVW5pdCBGCi0JCQkJV2VzdGxha2UgVmlsbGFnZSBDQSA5MTM3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRjUgICAoaGV4KQkJV2lzZWJsdWUgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDFDRjUgICAgIChiYXNlIDE2KQkJV2lzZWJsdWUgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJUm0gRzUsIDUvRiwgS2luZ3Nmb3JkIEluZHVzdHJpYWwgQnVpbGRpbmcgUGhhc2UgSUksIDI2LTMyIEt3YWkgSGVpIFN0cmVldCwKLQkJCQlLd2FpIENodW5nIE4uVC4gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFDLUY2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUNGNiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1GNyAgIChoZXgpCQlBdWRpb1NjaWVuY2UKLTAwMUNGNyAgICAgKGJhc2UgMTYpCQlBdWRpb1NjaWVuY2UKLQkJCQk3Mjkgd2VzdCAxNnRoIHN0Ci0JCQkJU3VpdGUgQzIKLQkJCQlDb3N0YSBNZXNhIENhbGlmb3JuaWEgOTI2MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUY4ICAgKGhleCkJCVBhcmFkZSBUZWNobm9sb2dpZXMsIEx0ZC4KLTAwMUNGOCAgICAgKGJhc2UgMTYpCQlQYXJhZGUgVGVjaG5vbG9naWVzLCBMdGQuCi0JCQkJQy9PIFBhcmFkZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk1MzAgTGFrZXNpZGUgRHIuIFN1aXRlIDIzMAotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRjkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQ0Y5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUZBICAgKGhleCkJCUFsYXJtLmNvbQotMDAxQ0ZBICAgICAoYmFzZSAxNikJCUFsYXJtLmNvbQotCQkJCTgxNTAgTGVlc2J1cmcgUGlrZQotCQkJCVN1aXRlIDE0MDAKLQkJCQlWaWVubmEgVkEgMjIxODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUZCICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDFDRkIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1GQyAgIChoZXgpCQlTdW1pbmV0IENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0wMDFDRkMgICAgIChiYXNlIDE2KQkJU3VtaW5ldCBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyAoU2hhbmdoYWkpIENvLiwgTHRkLgotCQkJCTRGLCAzQmxkLiA2NDcgTG9uZywgU29uZ1RhbyBSb2FkLCBaaGFuZ0ppYW5nIEhpLVRlY2ggUGFyawotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi0wMC0xQy1GRCAgIChoZXgpCQlVbml2ZXJzYWwgRWxlY3Ryb25pY3MKLTAwMUNGRCAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgRWxlY3Ryb25pY3MKLQkJCQk2MTAxIEdhdGV3YXkgRHJpdmUKLQkJCQlDeXByZXNzIENhbGlmb3JuaWEgOTA2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUZFICAgKGhleCkJCVF1YXJ0aWNzIEluYwotMDAxQ0ZFICAgICAoYmFzZSAxNikJCVF1YXJ0aWNzIEluYwotCQkJCTE1MjQxIExhZ3VuYSBDYW55b24gUm9hZAotCQkJCVN0ZSAyMDAKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUZGICAgKGhleCkJCU5hcGVyYSBOZXR3b3JrcyBJbmMKLTAwMUNGRiAgICAgKGJhc2UgMTYpCQlOYXBlcmEgTmV0d29ya3MgSW5jCi0JCQkJNzY4MyBTRSAyN3RoCi0JCQkJU3VpdGUgMTIwCi0JCQkJTWVyY2VyIElzbGFuZCBXQSA5ODA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMDAgICAoaGV4KQkJQnJpdm8gU3lzdGVtcywgTExDCi0wMDFEMDAgICAgIChiYXNlIDE2KQkJQnJpdm8gU3lzdGVtcywgTExDCi0JCQkJNDMzMCBFYXN0IFdlc3QgSGlnaHdheQotCQkJCVN1aXRlIDI1MAotCQkJCUJldGhlc2RhIE1EIDIwODE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0wMSAgIChoZXgpCQlOZXB0dW5lIERpZ2l0YWwKLTAwMUQwMSAgICAgKGJhc2UgMTYpCQlOZXB0dW5lIERpZ2l0YWwKLQkJCQlNZWRuYXJvZG5pIG1lam5pIHByZWhvZCA2Ci0JCQkJVnJ0b2piYSBOb3ZhIEdvcmljYSA1MjkwCi0JCQkJU0xPVkVOSUEKLQotMDAtMUQtMDIgICAoaGV4KQkJQ3liZXJ0ZWNoIFRlbGVjb20gRGV2ZWxvcG1lbnQKLTAwMUQwMiAgICAgKGJhc2UgMTYpCQlDeWJlcnRlY2ggVGVsZWNvbSBEZXZlbG9wbWVudAotCQkJCUhhemVua29vZyAyNQotCQkJCUFsa21hYXIgTm9vcmQgSG9sbGFuZCAxODIyIEJTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUQtMDMgICAoaGV4KQkJRGVzaWduIFNvbHV0aW9ucyBJbmMuCi0wMDFEMDMgICAgIChiYXNlIDE2KQkJRGVzaWduIFNvbHV0aW9ucyBJbmMuCi0JCQkJODEgRGF2aWQgTG92ZSBQbGFjZQotCQkJCUdvbGV0YSBDYSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMDQgICAoaGV4KQkJWmlwaXQgV2lyZWxlc3MsIEluYy4KLTAwMUQwNCAgICAgKGJhc2UgMTYpCQlaaXBpdCBXaXJlbGVzcywgSW5jLgotCQkJCTQ5IFNhbHRlcnMgUm9hZC4KLQkJCQlTdWl0ZSA2Ci0JCQkJR3JlZW52aWxsZSBTQyAyOTYwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMDUgICAoaGV4KQkJaUxpZ2h0Ci0wMDFEMDUgICAgIChiYXNlIDE2KQkJaUxpZ2h0Ci0JCQkJVW5pdCA0IEVudGVycHJpc2UgQ2VudHJlCi0JCQkJUm9ndWVzIEhpbGwKLQkJCQlQZW5zaHVyc3QgS2VudCBUTjExIDhCRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFELTA2ICAgKGhleCkJCUhNIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDFEMDYgICAgIChiYXNlIDE2KQkJSE0gRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkxNDExMCBTdG93ZSBEcml2ZQotCQkJCVBvd2F5IENBIDkyMDY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0wNyAgIChoZXgpCQlTaGVuemhlbiBTYW5nIEZlaSBDb25zdW1lciBDb21tdW5pY2F0aW9ucyBDby4sTHRkCi0wMDFEMDcgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU2FuZyBGZWkgQ29uc3VtZXIgQ29tbXVuaWNhdGlvbnMgQ28uLEx0ZAotCQkJCTExIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgUm9hZCwKLQkJCQlTY2llbmNlIGFuZCBUZWNobm9sb2d5IEluZHVzdHJpYWwgUGFyayBOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xRC0wOCAgIChoZXgpCQlKSUFOR1NVIFlJTkhFIEVMRUNUUk9OSUNTIENPLiwgTFRECi0wMDFEMDggICAgIChiYXNlIDE2KQkJSklBTkdTVSBZSU5IRSBFTEVDVFJPTklDUyBDTy4sIExURAotCQkJCTE4OCBOQU5IVUFOIFJPQUQKLQkJCQlUQU5HUUlBTwotCQkJCVpIQU5HSklBR0FORyBKSUFOR1NVIDIxNTYxMQotCQkJCUNISU5BCi0KLTAwLTFELTA5ICAgKGhleCkJCURlbGwgSW5jCi0wMDFEMDkgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTBBICAgKGhleCkJCURhdmlzIEluc3RydW1lbnRzLCBJbmMuCi0wMDFEMEEgICAgIChiYXNlIDE2KQkJRGF2aXMgSW5zdHJ1bWVudHMsIEluYy4KLQkJCQkzNDY1IERpYWJsbyBBdmUuCi0JCQkJSGF5d2FyZCBDQSA5NDU0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMEIgICAoaGV4KQkJUG93ZXIgU3RhbmRhcmRzIExhYgotMDAxRDBCICAgICAoYmFzZSAxNikJCVBvd2VyIFN0YW5kYXJkcyBMYWIKLQkJCQkxMjAxIE1hcmluYSBWaWxsYWdlIFBhcmt3YXkgIzEwMQotCQkJCUFsYW1lZGEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTBDICAgKGhleCkJCU1vYmlsZUNvbXBpYQotMDAxRDBDICAgICAoYmFzZSAxNikJCU1vYmlsZUNvbXBpYQotCQkJCURvbmd3b24gQmxkZywgNzI1LTMwLCBZZW9rc2FtLWRvbmcsIEdhbmduYW0tZ3UsCi0JCQkJU2VvdWwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtMEQgICAoaGV4KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IGluYy4KLTAwMUQwRCAgICAgKGJhc2UgMTYpCQlTb255IENvbXB1dGVyIEVudGVydGFpbm1lbnQgaW5jLgotCQkJCTYtMjEsMkNob21lCi0JCQkJTWluYW1pLUFveWFtYQotCQkJCU1pbmF0by1LdSBUb2t5byAxMDctMDA2MgotCQkJCUpBUEFOCi0KLTAwLTFELTBFICAgKGhleCkJCUFnYXBoYSBUZWNobm9sb2d5IGNvLiwgTHRkLgotMDAxRDBFICAgICAoYmFzZSAxNikJCUFnYXBoYSBUZWNobm9sb2d5IGNvLiwgTHRkLgotCQkJCTlGIE5vLjEyMSwgU2hpbmdkZSBSZC4sCi0JCQkJU2FuY2h1bmcgQ2l0eSBUYWlwZWkgQ291bnR5IDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtMEYgICAoaGV4KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDFEMEYgICAgIChiYXNlIDE2KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJMy9GLCBCbGRnLiBSMS1CLAotCQkJCUhpLXRlY2ggSW5kdXN0cmlhbCBQYXJrLCBTaGVubmFuIFJkLiwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUQtMTAgICAoaGV4KQkJTGlnaHRIYXVzIExvZ2ljLCBJbmMuCi0wMDFEMTAgICAgIChiYXNlIDE2KQkJTGlnaHRIYXVzIExvZ2ljLCBJbmMuCi0JCQkJMTI2LTEwMjAgTWFpbmxhbmQgU3RyZWV0Ci0JCQkJVmFuY291dmVyIEJDIFY2QiAyVDQKLQkJCQlDQU5BREEKLQotMDAtMUQtMTEgICAoaGV4KQkJQW5hbG9ndWUgJiBNaWNybyBMdGQKLTAwMUQxMSAgICAgKGJhc2UgMTYpCQlBbmFsb2d1ZSAmIE1pY3JvIEx0ZAotCQkJCUxha2VzaWRlIEhvdXNlCi0JCQkJTGFrZXNpZGUKLQkJCQlMbGFudGFybmFtIEluZHVzdHJpYWwgUGFyayBDd21icmFuIE5QNDQgM1hTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUQtMTIgICAoaGV4KQkJUk9ITSBDTy4sIExURC4KLTAwMUQxMiAgICAgKGJhc2UgMTYpCQlST0hNIENPLiwgTFRELgotCQkJCTIxIFNhaWluLU1pem9zYWtpLWNobywKLQkJCQlVa3lvLWt1LAotCQkJCUt5b3RvLXNoaSBLWU9UTyA2MTUtODU4NQotCQkJCUpBUEFOCi0KLTAwLTFELTEzICAgKGhleCkJCU5leHRHVFYKLTAwMUQxMyAgICAgKGJhc2UgMTYpCQlOZXh0R1RWCi0JCQkJMTNGIEJ5dWNrc2FuL0t5dW5naW4gRGlnaXRhbCBWYWxsZXkgbGwKLQkJCQlHYXNhbi1kb25nLCBHZXVtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC0xNCAgIChoZXgpCQlTUEVSQURUT05FIElORk9STUFUSU9OIFRFQ0hOT0xPR1kgTElNSVRFRAotMDAxRDE0ICAgICAoYmFzZSAxNikJCVNQRVJBRFRPTkUgSU5GT1JNQVRJT04gVEVDSE5PTE9HWSBMSU1JVEVECi0JCQkJUm9vbSAxMDAxIE5PLjQxOCBHdWkgUGluZyBSb2FkLAotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi0wMC0xRC0xNSAgIChoZXgpCQlTaGVuemhlbiBEb2xwaGluIEVsZWN0cm9uaWMgQ28uLCBMdGQKLTAwMUQxNSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBEb2xwaGluIEVsZWN0cm9uaWMgQ28uLCBMdGQKLQkJCQlCdWlsZGluZzIxLEJhb3l1YW4sIE5vLjEgSW5kdXN0cmlhbCBab25lLAotCQkJCVhpeGlhbmcsIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi0wMC0xRC0xNiAgIChoZXgpCQlFZml4bwotMDAxRDE2ICAgICAoYmFzZSAxNikJCUVmaXhvCi0JCQkJNSBhdmVudWUgZGUgU2FpbnQgTWVuZXQKLQkJCQlJbW1ldWJsZSBBeGlvbWUsIEJhdCBCCi0JCQkJTUFSU0VJTExFIFBBQ0EgMTMwMTEKLQkJCQlGUkFOQ0UKLQotMDAtMUQtMTcgICAoaGV4KQkJRGlnaXRhbCBTa3kgQ29ycG9yYXRpb24KLTAwMUQxNyAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFNreSBDb3Jwb3JhdGlvbgotCQkJCTUtNS0xNSBTb3Rva2FuZGEsCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDEtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTFELTE4ICAgKGhleCkJCVBvd2VyIElubm92YXRpb24gR21iSAotMDAxRDE4ICAgICAoYmFzZSAxNikJCVBvd2VyIElubm92YXRpb24gR21iSAotCQkJCVJlaGxhbmQgMgotCQkJCUFjaGltIE5pZWRlcnNhY2hzZW4gMjg4MzIKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELTE5ICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMUQxOSAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOby4gOSAsIFBhcmsgQXZlbnVlIElJLAotCQkJCVNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtMUEgICAoaGV4KQkJT3Zpc0xpbmsgUy5BLgotMDAxRDFBICAgICAoYmFzZSAxNikJCU92aXNMaW5rIFMuQS4KLQkJCQlDL0FuZHJlcyBPYmlzcG8sIDM3LiBQbC4gNC4KLQkJCQlNYWRyaWQgIDI4MDQzCi0JCQkJU1BBSU4KLQotMDAtMUQtMUIgICAoaGV4KQkJU2FuZ2VhbiBFbGVjdHJvbmljcyBJbmMuCi0wMDFEMUIgICAgIChiYXNlIDE2KQkJU2FuZ2VhbiBFbGVjdHJvbmljcyBJbmMuCi0JCQkJTm8uIDE4LCBMYW5lIDcsIExpLURlIHN0cmVldAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtMUMgICAoaGV4KQkJR2VubmV0IHMuYS4KLTAwMUQxQyAgICAgKGJhc2UgMTYpCQlHZW5uZXQgcy5hLgotCQkJCTIgTWVzb2dlaW9uIGF2ZS4KLQkJCQlQaXJnb3MgQXRoaW5vbgotCQkJCUF0aGVucyBBdHRpa2kgMTE1MjcKLQkJCQlHUkVFQ0UKLQotMDAtMUQtMUQgICAoaGV4KQkJSW50ZXItTSBDb3Jwb3JhdGlvbgotMDAxRDFEICAgICAoYmFzZSAxNikJCUludGVyLU0gQ29ycG9yYXRpb24KLQkJCQk2NTMtNSBCYW5naGFrLURvbmcsIERvYm9uZy1LdQotCQkJCVNlb3VsICAxMzItODQ2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELTFFICAgKGhleCkJCUtZVVNIVSBURU4gQ08uLExURAotMDAxRDFFICAgICAoYmFzZSAxNikJCUtZVVNIVSBURU4gQ08uLExURAotCQkJCTIzNjAgWVVOT0tJTU9UT01BQ0hJCi0JCQkJU0FTRUJPLUNpdHkgTkFHQVNBS0kgUHJlZmVjdHVyZSA4NTctMDExNQotCQkJCUpBUEFOCi0KLTAwLTFELTFGICAgKGhleCkJCVNpYXVsaXUgVGF1cm8gVGVsZXZpem9yaWFpLCBKU0MKLTAwMUQxRiAgICAgKGJhc2UgMTYpCQlTaWF1bGl1IFRhdXJvIFRlbGV2aXpvcmlhaSwgSlNDCi0JCQkJUHJhbW9uZXMsMTUKLQkJCQlTaWF1bGlhaSAgTFQtNTczMTgKLQkJCQlMSVRIVUFOSUEKLQotMDAtMUQtMjAgICAoaGV4KQkJQ09NVFJFTkQgQ08uCi0wMDFEMjAgICAgIChiYXNlIDE2KQkJQ09NVFJFTkQgQ08uCi0JCQkJM0YtMSAxMCBMQU5FIDYwOSBDSFVORyBIU0lOIFJPQUQsIFNFQyA1LCBTQU4gQ0hVTkcgQ0lUWSwgVEFJUEVJIFRBSVdBTiAyNDEKLQkJCQlUQUlQRUkgIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtMjEgICAoaGV4KQkJQWxjYWQgU0wKLTAwMUQyMSAgICAgKGJhc2UgMTYpCQlBbGNhZCBTTAotCQkJCVBvbC4gSW5kLiBBcnJlY2hlLVVnYWxkZSwgMQotCQkJCUlydW4gR3VpcHV6Y29hIEUtMjAzMDUKLQkJCQlTUEFJTgotCi0wMC0xRC0yMiAgIChoZXgpCQlGb3NzIEFuYWx5dGljYWwgQS9TCi0wMDFEMjIgICAgIChiYXNlIDE2KQkJRm9zcyBBbmFseXRpY2FsIEEvUwotCQkJCVNsYW5nZXJ1cGdhZGUgNjkKLQkJCQlIaWxsZXI/ZCBTZWVsYW5kIDM0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTFELTIzICAgKGhleCkJCVNFTlNVUyAKLTAwMUQyMyAgICAgKGJhc2UgMTYpCQlTRU5TVVMgCi0JCQkJNDQgQ0FTVElMSUFOIERSSVZFCi0JCQkJR09MRVRBIENBTElGT1JOSUEgOTMxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTI0ICAgKGhleCkJCUFjbGFyYSBQb3dlci1MaW5lIFN5c3RlbXMgSW5jLgotMDAxRDI0ICAgICAoYmFzZSAxNikJCUFjbGFyYSBQb3dlci1MaW5lIFN5c3RlbXMgSW5jLgotCQkJCTk0NSBIb3JuZXQgRHJpdmUKLQkJCQlIYXplbHdvb2QgTU8gNjMwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTI1ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxRDI1ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC0yNiAgIChoZXgpCQlSb2NrcmlkZ2Vzb3VuZCBUZWNobm9sb2d5IENvLgotMDAxRDI2ICAgICAoYmFzZSAxNikJCVJvY2tyaWRnZXNvdW5kIFRlY2hub2xvZ3kgQ28uCi0JCQkJRnVtaW4gSW5kdXN0cmlhbCBQYXJrLCBIb3VqaWUgVG93bgotCQkJCURvbmcgR3VhbiBHdWFuZyBEb25nIDUyMzk1NgotCQkJCUNISU5BCi0KLTAwLTFELTI3ICAgKGhleCkJCU5BQy1JTlRFUkNPTQotMDAxRDI3ICAgICAoYmFzZSAxNikJCU5BQy1JTlRFUkNPTQotCQkJCUMuIFFVSU5URUxBLCAyNyBQT1JUQUwgNCBMT0NBTAotCQkJCVZJR08gUE9OVEVWRURSQSAzNjIwOQotCQkJCVNQQUlOCi0KLTAwLTFELTI4ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDFEMjggICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMUQtMjkgICAoaGV4KQkJRG9ybyBBQgotMDAxRDI5ICAgICAoYmFzZSAxNikJCURvcm8gQUIKLQkJCQlNYWdpc3RyYXRzdmFnZW4gMTAKLQkJCQlMdW5kICAyMjYgNDMKLQkJCQlTV0VERU4KLQotMDAtMUQtMkEgICAoaGV4KQkJVGlkZXdheSBFbGVjdHJvbmljIExURAotMDAxRDJBICAgICAoYmFzZSAxNikJCVRpZGV3YXkgRWxlY3Ryb25pYyBMVEQKLQkJCQlaaGlKaSBJbmR1c3RyaWFsICBBcmVhICxKaW5ZZSBSb2FkCi0JCQkJQjQgRG9uZy4ga3VpeW9uZyBUb3duCi0JCQkJc2hlbmd6aGVuIGxvbmdnYW5nIGd1YW5nZG9uZyA1MTgxMTkKLQkJCQlDSElOQQotCi0wMC0xRC0yQiAgIChoZXgpCQlXdWhhbiBQb250IFRlY2hub2xvZ3kgQ08uICwgTFRECi0wMDFEMkIgICAgIChiYXNlIDE2KQkJV3VoYW4gUG9udCBUZWNobm9sb2d5IENPLiAsIExURAotCQkJCUJ1aWxkaW5nIEUsIEd1YW5kb25nIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgSW5kdXN0cnkgIFBhcmssCi0JCQkJRWFzdCBMYWtlIEhpZ2ggVGVjaG5vbG9neSBEZXZlbG9wbWVudCBab25lLAotCQkJCVd1aGFuIEh1YmVpIDQzMDA3NAotCQkJCUNISU5BCi0KLTAwLTFELTJDICAgKGhleCkJCVdhdmV0cmVuZCBUZWNobm9sb2dpZXMgKFB0eSkgTGltaXRlZAotMDAxRDJDICAgICAoYmFzZSAxNikJCVdhdmV0cmVuZCBUZWNobm9sb2dpZXMgKFB0eSkgTGltaXRlZAotCQkJCVdhdmV0cmVuZCBIb3VzZSwgQnVpbGRpbmcgODE2LzMKLQkJCQlIYW1tZXRzIENyb3NzaW5nIE9mZmljZSBQYXJrLFNlbGJvdXJuZSByb2FkLCBmb3Vyd2F5cwotCQkJCUdhdXRlbmcgIDIwMjEKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMUQtMkQgICAoaGV4KQkJUHlsb25lLCBJbmMuCi0wMDFEMkQgICAgIChiYXNlIDE2KQkJUHlsb25lLCBJbmMuCi0JCQkJNEYgTmFrYW5vIEJsZGcuIDQtMzAtOCBLaXRhLVNoaW5qdWt1Ci0JCQkJU2hpbmp1a3Uta3UsIFRva3lvIDE2OS0wMDc0Ci0JCQkJSkFQQU4KLQotMDAtMUQtMkUgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi0wMDFEMkUgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMkYgICAoaGV4KQkJUXVhbnR1bVZpc2lvbiBDb3Jwb3JhdGlvbgotMDAxRDJGICAgICAoYmFzZSAxNikJCVF1YW50dW1WaXNpb24gQ29ycG9yYXRpb24KLQkJCQkzMzUgUGxhbnRhdGlvbiBXYXkKLQkJCQlSb3N3ZWxsIEdhIDMwMDc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0zMCAgIChoZXgpCQlZWCBXaXJlbGVzcyBTLkEuCi0wMDFEMzAgICAgIChiYXNlIDE2KQkJWVggV2lyZWxlc3MgUy5BLgotCQkJCUF2LiBWaWN1bmEgTWFja2VubmEgIzQ4NjAKLQkJCQlFZGlmaWNpbyA1MTIsIHBpc28gMy4gTWFjdWwKLQkJCQlTYW50aWFnbyAgODU4MDcxMAotCQkJCUNISUxFCi0KLTAwLTFELTMxICAgKGhleCkJCUhJR0hQUk8gSU5URVJOQVRJT05BTCBSJkQgQ08sLkxURC4KLTAwMUQzMSAgICAgKGJhc2UgMTYpCQlISUdIUFJPIElOVEVSTkFUSU9OQUwgUiZEIENPLC5MVEQuCi0JCQkJM0YsTm8uMjk1LFJ1aUd1YW5nIFJkLE5laSBIdSwKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtMzIgICAoaGV4KQkJTG9uZ2theSBDb21tdW5pY2F0aW9uICYgVGVjaG5vbG9neSAoU2hhbmdoYWkpIENvLiBMdGQKLTAwMUQzMiAgICAgKGJhc2UgMTYpCQlMb25na2F5IENvbW11bmljYXRpb24gJiBUZWNobm9sb2d5IChTaGFuZ2hhaSkgQ28uIEx0ZAotCQkJCU5vLjUgQnVpbGRpbmcsIFVuaXQgMiwgTGFuZSAyOTkgQmlzaGVuZyBSZCwKLQkJCQlTaGFuZ2hhaSAgMjAxMjA0Ci0JCQkJQ0hJTkEKLQotMDAtMUQtMzMgICAoaGV4KQkJTWF2ZXJpY2sgU3lzdGVtcyBJbmMuCi0wMDFEMzMgICAgIChiYXNlIDE2KQkJTWF2ZXJpY2sgU3lzdGVtcyBJbmMuCi0JCQkJOTA4LCBEYWVydW5ncG9zdHRvd2VyIDItY2hhLCAxODItMTMKLQkJCQlHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTc5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC0zNCAgIChoZXgpCQlTWVJJUyBUZWNobm9sb2d5IENvcnAKLTAwMUQzNCAgICAgKGJhc2UgMTYpCQlTWVJJUyBUZWNobm9sb2d5IENvcnAKLQkJCQkyMSBGLTIsICBOTy4gMTIsICBTRUMuIDEsICBUYWlqdW5nZ2FuZyBSZC4KLQkJCQlUYWljaHVuZyAgNDAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC0zNSAgIChoZXgpCQlWaWNvbmljcyBFbGVjdHJvbmljcyBJbmMuCi0wMDFEMzUgICAgIChiYXNlIDE2KQkJVmljb25pY3MgRWxlY3Ryb25pY3MgSW5jLgotCQkJCTkyNDUgTGFuZ2VsaWVyCi0JCQkJU2FpbnQgTGVvbmFyZCBRdWViZWMgSDFQM0s5Ci0JCQkJQ0FOQURBCi0KLTAwLTFELTM2ICAgKGhleCkJCUVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE9GIElORElBIExJTUlURUQKLTAwMUQzNiAgICAgKGJhc2UgMTYpCQlFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBPRiBJTkRJQSBMSU1JVEVECi0JCQkJQ09OVFJPTCBBTkQgQVVUT01BVElPTiBESVZJU0lPTi0zCi0JCQkJRUNJTCBQT1NUCi0JCQkJSFlERVJBQkFEIEFOREhSQSBQUkFERVNIIDUwMCAwNjIKLQkJCQlJTkRJQQotCi0wMC0xRC0zNyAgIChoZXgpCQlUaGFsZXMtUGFuZGEgVHJhbnNwb3J0YXRpb24gU3lzdGVtCi0wMDFEMzcgICAgIChiYXNlIDE2KQkJVGhhbGVzLVBhbmRhIFRyYW5zcG9ydGF0aW9uIFN5c3RlbQotCQkJCTZ0aCBmbG9vciwgSFVJSklFIFBsYXphLCAyNjggWmhvbmdzaGFuIFJkLgotCQkJCW5hbmppbmcgamlhbmdzdSAyMTAwMDgKLQkJCQlDSElOQQotCi0wMC0xRC0zOCAgIChoZXgpCQlTZWFnYXRlIFRlY2hub2xvZ3kKLTAwMUQzOCAgICAgKGJhc2UgMTYpCQlTZWFnYXRlIFRlY2hub2xvZ3kKLQkJCQkxMjgwIERpc2MgRHJpdmUKLQkJCQlTaGFrb3BlZSBNTiA1NTM3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMzkgICAoaGV4KQkJTU9PSEFESUdJVEFMIENPLiwgTFRECi0wMDFEMzkgICAgIChiYXNlIDE2KQkJTU9PSEFESUdJVEFMIENPLiwgTFRECi0JCQkJU2VvdWwgSGlnaHRlY2ggVmVudHVyZSBDZW50ZXIgQy0zMDcgNjQ3LTI2Ci0JCQkJRGV1bmdjaG9uLURvbmcgR2FuZ3Nlby1HdQotCQkJCVNFT1VMICAxNTctMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELTNBICAgKGhleCkJCW1oIGFjb3VzdGljcyBMTEMKLTAwMUQzQSAgICAgKGJhc2UgMTYpCQltaCBhY291c3RpY3MgTExDCi0JCQkJMjVBIFN1bW1pdCBBdmUKLQkJCQlTdW1taXQgTkogMDc5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTNCICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFEM0IgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFELTNDICAgKGhleCkJCU11c2NsZSBDb3Jwb3JhdGlvbgotMDAxRDNDICAgICAoYmFzZSAxNikJCU11c2NsZSBDb3Jwb3JhdGlvbgotCQkJCTItNS0zNSwgS2lrYXdhLWhpZ2FzaGkKLQkJCQlPc2FrYSAgNTMyLTAwMTIKLQkJCQlKQVBBTgotCi0wMC0xRC0zRCAgIChoZXgpCQlBdmlkeW5lIENvcnBvcmF0aW9uCi0wMDFEM0QgICAgIChiYXNlIDE2KQkJQXZpZHluZSBDb3Jwb3JhdGlvbgotCQkJCTIwMiBXZXN0IERyCi0JCQkJTWVsYm91cm5lIEZMIDMyOTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0zRSAgIChoZXgpCQlTQUtBIFRFQ0hOTyBTQ0lFTkNFIENPLixMVEQKLTAwMUQzRSAgICAgKGJhc2UgMTYpCQlTQUtBIFRFQ0hOTyBTQ0lFTkNFIENPLixMVEQKLQkJCQlOaXNoaSAxMDUtMQotCQkJCUtpdGF6dWthLW1hY2hpCi0JCQkJS2FuYXphd2EgSXNoaWthd2EgOTIwLTAzNjcKLQkJCQlKQVBBTgotCi0wMC0xRC0zRiAgIChoZXgpCQlNaXRyb24gUHR5IEx0ZAotMDAxRDNGICAgICAoYmFzZSAxNikJCU1pdHJvbiBQdHkgTHRkCi0JCQkJVW5pdCAxMQotCQkJCTEyLTE4IENsYXJlbmRvbiBTdHJlZXQKLQkJCQlBcnRhcm1vbiBOU1cgMjA2NQotCQkJCUFVU1RSQUxJQQotCi0wMC0xRC00MCAgIChoZXgpCQlMaXZpbmcgSW5kZXBlbmRlbnRseSBHcm91cCwgSW5jLgotMDAxRDQwICAgICAoYmFzZSAxNikJCUxpdmluZyBJbmRlcGVuZGVudGx5IEdyb3VwLCBJbmMuCi0JCQkJNzY3IFRoaXJkIEF2ZSwgMTR0aCBGbG9vcgotCQkJCU5ldyBZb3JrIE5ZIDEwMDE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC00MSAgIChoZXgpCQlIYXJkeSBJbnN0cnVtZW50cwotMDAxRDQxICAgICAoYmFzZSAxNikJCUhhcmR5IEluc3RydW1lbnRzCi0JCQkJMzg2MCBDYWxsZSBGb3J0dW5hZGEKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTQyICAgKGhleCkJCU5vcnRlbAotMDAxRDQyICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xRC00MyAgIChoZXgpCQlTaGVuemhlbiBHLWxpbmsgRGlnaXRhbCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxRDQzICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEctbGluayBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNEYsIEUgQnVpbGRpbmcsSHVhY2h1YW5nIERhIFRlY2hub2xvZ3kgWm9uZSAsSGFuZ2NoZW5nIEhpZ2h3YXksR3VzaHUsWGl4aWFuZyAsCi0JCQkJc2hlbnpoZW4gR3VhbmdEb25nIDUxODEyNgotCQkJCUNISU5BCi0KLTAwLTFELTQ0ICAgKGhleCkJCUtyb2huZQotMDAxRDQ0ICAgICAoYmFzZSAxNikJCUtyb2huZQotCQkJCUtlcmtlcGxhYXQgMTIKLQkJCQlEb3JkcmVjaHQgWkggMzMxMyBMQwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFELTQ1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUQ0NSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC00NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFENDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNDcgICAoaGV4KQkJQ292b3RlIEdtYkggJiBDbyBLRwotMDAxRDQ3ICAgICAoYmFzZSAxNikJCUNvdm90ZSBHbWJIICYgQ28gS0cKLQkJCQlSaXR0ZXJodWZlbiAzMAotCQkJCUJlcmxpbiAgMTQxNjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELTQ4ICAgKGhleCkJCVNlbnNvci1UZWNobmlrIFdpZWRlbWFubiBHbWJICi0wMDFENDggICAgIChiYXNlIDE2KQkJU2Vuc29yLVRlY2huaWsgV2llZGVtYW5uIEdtYkgKLQkJCQlBbSBCYXJlbndhbGQgNgotCQkJCUthdWZiZXVyZW4gQmF5ZXJuIDg3NjAwCi0JCQkJR0VSTUFOWQotCi0wMC0xRC00OSAgIChoZXgpCQlJbm5vdmF0aW9uIFdpcmVsZXNzIEluYy4KLTAwMUQ0OSAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aW9uIFdpcmVsZXNzIEluYy4KLQkJCQk0Ri0xLCBOTy44MSwgU0hVRUlMSSBSRC4KLQkJCQlIU0lOQ0hVICAzMDA1OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtNEEgICAoaGV4KQkJQ2FyZXN0cmVhbSBIZWFsdGgsIEluYy4KLTAwMUQ0QSAgICAgKGJhc2UgMTYpCQlDYXJlc3RyZWFtIEhlYWx0aCwgSW5jLgotCQkJCTE1MCBWZXJvbmEgU3RyZWV0Ci0JCQkJUm9jaGVzdHNlciBOWSAxNDYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNEIgICAoaGV4KQkJR3JpZCBDb25uZWN0IEluYy4KLTAwMUQ0QiAgICAgKGJhc2UgMTYpCQlHcmlkIENvbm5lY3QgSW5jLgotCQkJCTE2MzAgVy4gRGllaGwgUmQKLQkJCQlOYXBlcnZpbGxlIElMIDYwNTYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC00QyAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudAotMDAxRDRDICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50Ci0JCQkJNjAxIERhdGEgRHJpdmUKLQkJCQlNL1MgMzIwCi0JCQkJUGxhbm8gVFggNzUwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTREICAgKGhleCkJCUFkYXB0aXZlIFJlY29nbml0aW9uIEh1bmdhcnksIEluYwotMDAxRDREICAgICAoYmFzZSAxNikJCUFkYXB0aXZlIFJlY29nbml0aW9uIEh1bmdhcnksIEluYwotCQkJCUtpcmFseWhhZ28gdGVyIDgtOQotCQkJCUJ1ZGFwZXN0IEV1cm9wZSAxMTI2Ci0JCQkJSFVOR0FSWQotCi0wMC0xRC00RSAgIChoZXgpCQlUQ00gTW9iaWxlIExMQwotMDAxRDRFICAgICAoYmFzZSAxNikJCVRDTSBNb2JpbGUgTExDCi0JCQkJOTIxOCBNZXRjYWxmLAotCQkJCVN1aXRlICMyOTMKLQkJCQlPdmVybGFuZCBQYXJrIEthbnNhcyA2NjIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNEYgICAoaGV4KQkJQXBwbGUgQ29tcHV0ZXIgSW5jLgotMDAxRDRGICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ2FsaWZvcm5pYSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNTAgICAoaGV4KQkJU1BJTkVUSVggU0EKLTAwMUQ1MCAgICAgKGJhc2UgMTYpCQlTUElORVRJWCBTQQotCQkJCVBhcmMgU2NpZW50aWZpcXVlIGRlIGwnRVBGTCwgQmF0aW1lbnQgQwotCQkJCUxhdXNhbm5lIFZEIDEwMTUKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRC01MSAgIChoZXgpCQlCYWJjb2NrICYgV2lsY294IFBvd2VyIEdlbmVyYXRpb24gR3JvdXAsIEluYwotMDAxRDUxICAgICAoYmFzZSAxNikJCUJhYmNvY2sgJiBXaWxjb3ggUG93ZXIgR2VuZXJhdGlvbiBHcm91cCwgSW5jCi0JCQkJMTE4NjQgQ2Fub24gQmx2ZCwgU3VpdGUgMTA1Ci0JCQkJTmV3cG9ydCBOZXdzIFZBIDIzNjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC01MiAgIChoZXgpCQlEZWZ6b25lIEIuVi4KLTAwMUQ1MiAgICAgKGJhc2UgMTYpCQlEZWZ6b25lIEIuVi4KLQkJCQlUcmFuc3BvcnRjZW50cnVtIDEwCi0JCQkJRW5zY2hlZGUgT3Zlcmlqc3NlbCA3NTQ3IFJXCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUQtNTMgICAoaGV4KQkJUyZPIEVsZWN0cm9uaWNzIChNYWxheXNpYSkgU2RuLiBCaGQuCi0wMDFENTMgICAgIChiYXNlIDE2KQkJUyZPIEVsZWN0cm9uaWNzIChNYWxheXNpYSkgU2RuLiBCaGQuCi0JCQkJTG90IDIwMiwgQmFrYXIgQXJhbmcKLQkJCQlJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCTA4MDAwIFN1bmdhaSBQZXRhbmkgS2VkYWggCi0JCQkJTUFMQVlTSUEKLQotMDAtMUQtNTQgICAoaGV4KQkJU3VubmljIFRlY2hub2xvZ3kgJiBNZXJjaGFuZGlzZSBJTkMuCi0wMDFENTQgICAgIChiYXNlIDE2KQkJU3VubmljIFRlY2hub2xvZ3kgJiBNZXJjaGFuZGlzZSBJTkMuCi0JCQkJNkYsIE5PLjc0LFpIT1UtWiBTVC4sCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTU1ICAgKGhleCkJCVpBTlRBWiwgSW5jCi0wMDFENTUgICAgIChiYXNlIDE2KQkJWkFOVEFaLCBJbmMKLQkJCQk1NzU4IFcuIExhcyBQb3NpdGFzIEF2ZW51ZQotCQkJCVBsZWFzYW50b24gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTU2ICAgKGhleCkJCUtyYW1lciBFbGVjdHJvbmljcyBMdGQuCi0wMDFENTYgICAgIChiYXNlIDE2KQkJS3JhbWVyIEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQkzIEFtIFZlT2xhbW8gU3RyZWV0Ci0JCQkJSmVydXNhbGVtICA5NTQ2MwotCQkJCUlTUkFFTAotCi0wMC0xRC01NyAgIChoZXgpCQlDQUVURUMgTWVzc3RlY2huaWsKLTAwMUQ1NyAgICAgKGJhc2UgMTYpCQlDQUVURUMgTWVzc3RlY2huaWsKLQkJCQlTY2hsb3Nzc3RyYXNzZSA5NWEKLQkJCQlPbGNoaW5nIEJheWVybiA4MjE0MAotCQkJCUdFUk1BTlkKLQotMDAtMUQtNTggICAoaGV4KQkJQ1EgSW5jCi0wMDFENTggICAgIChiYXNlIDE2KQkJQ1EgSW5jCi0JCQkJNUYsIE5vLiA0MywgTGFuZSA3NiwgUnVpIEd1YW5nIFJvYWQKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtNTkgICAoaGV4KQkJTWl0cmEgRW5lcmd5ICYgSW5mcmFzdHJ1Y3R1cmUKLTAwMUQ1OSAgICAgKGJhc2UgMTYpCQlNaXRyYSBFbmVyZ3kgJiBJbmZyYXN0cnVjdHVyZQotCQkJCUJvdWxldmFyZCBkZSBsJ0V1cm9wZSAxMzEKLQkJCQkxMzAxIFdhdnJlIAotCQkJCUJFTEdJVU0KLQotMDAtMUQtNUEgICAoaGV4KQkJMldpcmUgSW5jLgotMDAxRDVBICAgICAoYmFzZSAxNikJCTJXaXJlIEluYy4KLQkJCQkxNzA0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiAgSm9zZSBDYWxpZm9ybmlhIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC01QiAgIChoZXgpCQlUZWN2YW4gSW5mb3JtYXRpY2EgTHRkYQotMDAxRDVCICAgICAoYmFzZSAxNikJCVRlY3ZhbiBJbmZvcm1hdGljYSBMdGRhCi0JCQkJUnVhIEd1YWljdXJ1cywgMTQ1Ci0JCQkJVmlsYSBDb25jZWljYW8KLQkJCQlEaWFkZW1hIFNhbyBQYXVsbyAwOTkxMS02MzAKLQkJCQlCUkFaSUwKLQotMDAtMUQtNUMgICAoaGV4KQkJVG9tIENvbW11bmljYXRpb24gSW5kdXN0cmlhbCBDby4sTHRkLgotMDAxRDVDICAgICAoYmFzZSAxNikJCVRvbSBDb21tdW5pY2F0aW9uIEluZHVzdHJpYWwgQ28uLEx0ZC4KLQkJCQkxMTczIE5pcHBhLWNob2ggS29ob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIzLTAwNTcKLQkJCQlKQVBBTgotCi0wMC0xRC01RCAgIChoZXgpCQlDb250cm9sIER5bmFtaWNzIFB0eS4gTHRkLgotMDAxRDVEICAgICAoYmFzZSAxNikJCUNvbnRyb2wgRHluYW1pY3MgUHR5LiBMdGQuCi0JCQkJUE8gQm94IDYzNgotCQkJCU1PUkxFWSBXZXN0ZXJuIEF1c3RyYWxpYSA2OTQzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTFELTVFICAgKGhleCkJCUNPTUlORyBNRURJQSBDT1JQLgotMDAxRDVFICAgICAoYmFzZSAxNikJCUNPTUlORyBNRURJQSBDT1JQLgotCQkJCUJPTkEgQmxkLiA0dGggRmwuLCA1NDgtMTgKLQkJCQlEb2dvay0xRG9uZywgS2FuZ25hbS1LdSwKLQkJCQlTZW91bCAgMTM1LTE1OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC01RiAgIChoZXgpCQlPdmVyU3BlZWQgU0FSTAotMDAxRDVGICAgICAoYmFzZSAxNikJCU92ZXJTcGVlZCBTQVJMCi0JCQkJMTUsIGFsbGVlIGR1IEJvaXMgQ2FpbGxleQotCQkJCUxlIFRodWl0LVNpZ25vbCBOb3JtYW5kaWUgMjczNzAKLQkJCQlGUkFOQ0UKLQotMDAtMUQtNjAgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDFENjAgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC02MSAgIChoZXgpCQlCSUogQ29ycG9yYXRpb24KLTAwMUQ2MSAgICAgKGJhc2UgMTYpCQlCSUogQ29ycG9yYXRpb24KLQkJCQk3RiBUYWthbWl6YXdhIEJ1aWxkaW5nLDItNy0xMCwKLQkJCQlLaXRhc2Fpd2FpLE5pc2hpCi0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIwLTAwMDQKLQkJCQlKQVBBTgotCi0wMC0xRC02MiAgIChoZXgpCQlJblBoYXNlIFRlY2hub2xvZ2llcwotMDAxRDYyICAgICAoYmFzZSAxNikJCUluUGhhc2UgVGVjaG5vbG9naWVzCi0JCQkJMjAwMCBQaWtlIFJvYWQKLQkJCQlMb25nbW9udCBDb2xvcmFkbyA4MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNjMgICAoaGV4KQkJTWllbGUgJiBDaWUuIEtHCi0wMDFENjMgICAgIChiYXNlIDE2KQkJTWllbGUgJiBDaWUuIEtHCi0JCQkJQ2FybC1NaWVsZS1TdHIuIDI5Ci0JCQkJR3V0ZXJzbG9oICAzMzMzMgotCQkJCUdFUk1BTlkKLQotMDAtMUQtNjQgICAoaGV4KQkJQWRhbSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zIEludCBMdGQKLTAwMUQ2NCAgICAgKGJhc2UgMTYpCQlBZGFtIENvbW11bmljYXRpb25zIFN5c3RlbXMgSW50IEx0ZAotCQkJCVRoZSBNaXNzaW9uCi0JCQkJV2VsbGluZ3RvbiBTdHJlZXQKLQkJCQlTdG9ja3BvcnQgQ2hlc2hpcmUgU0sxIDNBSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFELTY1ICAgKGhleCkJCU1pY3Jvd2F2ZSBSYWRpbyBDb21tdW5pY2F0aW9ucwotMDAxRDY1ICAgICAoYmFzZSAxNikJCU1pY3Jvd2F2ZSBSYWRpbyBDb21tdW5pY2F0aW9ucwotCQkJCTEwMSBCaWxsZXJpY2EgQXZlbXVlLCBCbGRnIDYKLQkJCQlOLiBCaWxsZXJpY2EgTUEgMDE4NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTY2ICAgKGhleCkJCUh5dW5kYWkgVGVsZWNvbQotMDAxRDY2ICAgICAoYmFzZSAxNikJCUh5dW5kYWkgVGVsZWNvbQotCQkJCUh5dW5kYWkgVGVsZWNvbSBCbGRnLiwgNDI3My0xMiwgU2hpbmdpbC1Eb25nLCBZb3VuZ2R1bmdwby1HdSwKLQkJCQlTZW91bCAgMTUwLTg1OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC02NyAgIChoZXgpCQlBTUVDCi0wMDFENjcgICAgIChiYXNlIDE2KQkJQU1FQwotCQkJCTlGLE5vLjM2MCxSdWVsIEd1YW5nIFJkLE5laWh1Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTY4ICAgKGhleCkJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0wMDFENjggICAgIChiYXNlIDE2KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3IEIKLQkJCQlFZGVnZW0gQW50d2VycCBCLTI2NTAKLQkJCQlCRUxHSVVNCi0KLTAwLTFELTY5ICAgKGhleCkJCUtub3JyLUJyZW1zZSBBRwotMDAxRDY5ICAgICAoYmFzZSAxNikJCUtub3JyLUJyZW1zZSBBRwotCQkJCU1vb3NhY2hlciBTdHIuIDgwCi0JCQkJTXVlbmNoZW4gQlkgODA4MDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELTZBICAgKGhleCkJCUFscGhhIE5ldHdvcmtzIEluYy4KLTAwMUQ2QSAgICAgKGJhc2UgMTYpCQlBbHBoYSBOZXR3b3JrcyBJbmMuCi0JCQkJTm8uOCBMaS1zaGluZyBTZXZlbnRoIFJvYWQsU2NpZW5jZS1iYXNlZAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtNkIgICAoaGV4KQkJTW90b3JvbGEgKGZvcm1lcmx5IE5ldG9waWEsIEluYwotMDAxRDZCICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIChmb3JtZXJseSBOZXRvcGlhLCBJbmMKLQkJCQk2MDAxIFNoZWxsbW91bmQgU3QKLQkJCQk0dGggRmxvb3IKLQkJCQlFbWVyeXZpbGxlIENBIDk0NjA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC02QyAgIChoZXgpCQlDbGFyaVBoeSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxRDZDICAgICAoYmFzZSAxNikJCUNsYXJpUGh5IENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTYgVGVjaG5vbG9neSBEci4sIFN1aXRlIDE2NQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNkQgICAoaGV4KQkJQ29uZmlkYW50IEludGVybmF0aW9uYWwgTExDCi0wMDFENkQgICAgIChiYXNlIDE2KQkJQ29uZmlkYW50IEludGVybmF0aW9uYWwgTExDCi0JCQkJMjUzMCBNZXJpZGlhbiBQa3d5Ci0JCQkJRHVyaGFtIE5vcnRoIENhcm9saW5hIDI3NzEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC02RSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRDZFICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFELTZGICAgKGhleCkJCUNoYWluem9uZSBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDFENkYgICAgIChiYXNlIDE2KQkJQ2hhaW56b25lIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlDaGFpbnpvbmUgVGVjaC4gSW5kIFBhcmssIE5hbnhpbiAxc3QgUmQuCi0JCQkJR3VpY2hlbmcgTmFuaGFpCi0JCQkJRm9zaGFuIEd1YW5nZG9uZyA1MjgyMDAKLQkJCQlDSElOQQotCi0wMC0xRC03MCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFENzAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNzEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRDcxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTcyICAgKGhleCkJCVdpc3Ryb24gQ29ycG9yYXRpb24KLTAwMUQ3MiAgICAgKGJhc2UgMTYpCQlXaXN0cm9uIENvcnBvcmF0aW9uCi0JCQkJMjFGLCA4OCwgU2VjLjEsIEhzaW4gVGFpIFd1IFJkLiwgSHNpY2hpaCwKLQkJCQlUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC03MyAgIChoZXgpCQlCdWZmYWxvIEluYy4KLTAwMUQ3MyAgICAgKGJhc2UgMTYpCQlCdWZmYWxvIEluYy4KLQkJCQkxNSxTaGliYXRhIEhvbmRvcmkgNC1jaG9tZSwKLQkJCQlNaW5hbWkta3UKLQkJCQlOYWdveWEgQWljaGkgUHJlZi4gNDU3LTg1MjAKLQkJCQlKQVBBTgotCi0wMC0xRC03NCAgIChoZXgpCQlUaWFuamluIENoaW5hLVNpbGljb24gTWljcm9lbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMUQ3NCAgICAgKGJhc2UgMTYpCQlUaWFuamluIENoaW5hLVNpbGljb24gTWljcm9lbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkzMDEsM0YgQnVpbGRpbmcgMjExLE5vLjIxNCBIb25ncWkgUm9hZCwgTmFua2FpIERpc3RyaWN0LCBUaWFuamluIENoaW5hCi0JCQkJVGlhbmppbiAgMzAwMTkwCi0JCQkJQ0hJTkEKLQotMDAtMUQtNzUgICAoaGV4KQkJUmFkaW9zY2FwZSBQTEMKLTAwMUQ3NSAgICAgKGJhc2UgMTYpCQlSYWRpb3NjYXBlIFBMQwotCQkJCTEgQWxiYW55IFRlcnJhY2UKLQkJCQlSZWdlbnQncyBQYXJrIExvbmRvbiBOVzEgNERTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUQtNzYgICAoaGV4KQkJRXllaGVpZ2h0IEx0ZC4KLTAwMUQ3NiAgICAgKGJhc2UgMTYpCQlFeWVoZWlnaHQgTHRkLgotCQkJCVVuaXQgMzQsIFBhcmsgSG91c2UKLQkJCQkxNS0xOSBHcmVlbmhpbGwgQ3Jlc2NlbnQKLQkJCQlXYXRmb3JkIEhlcnRzIFdEMTggOFBICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUQtNzcgICAoaGV4KQkJTlNHYXRlCi0wMDFENzcgICAgIChiYXNlIDE2KQkJTlNHYXRlCi0JCQkJUm0gMTMwNCwgMzkgS2lycGljaG5heWEgU3RyZWV0Ci0JCQkJTW9zY293ICAxMDUxODcKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUQtNzggICAoaGV4KQkJSW52ZW5nbyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMdGQKLTAwMUQ3OCAgICAgKGJhc2UgMTYpCQlJbnZlbmdvIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTMvRixOby5UMi1CLEhpZ2gtVGVjaCBJbmR1c3RyaWFsIFBhcmsgU291dGgKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUQtNzkgICAoaGV4KQkJU0lHTkFNQVggTExDCi0wMDFENzkgICAgIChiYXNlIDE2KQkJU0lHTkFNQVggTExDCi0JCQkJMTA5MCBWZXJtb250IEF2ZW51ZQotCQkJCVdhc2hpbmd0b24gV2FzaGluZ3RvbiBELkMuIDIwMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC03QSAgIChoZXgpCQlXaWRlYmFuZCBTZW1pY29uZHVjdG9yLCBJbmMuCi0wMDFEN0EgICAgIChiYXNlIDE2KQkJV2lkZWJhbmQgU2VtaWNvbmR1Y3RvciwgSW5jLgotCQkJCTEzNTAgUGVhciBBdmUKLQkJCQlTdWl0ZSBDCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtN0IgICAoaGV4KQkJSWNlIEVuZXJneSwgSW5jLgotMDAxRDdCICAgICAoYmFzZSAxNikJCUljZSBFbmVyZ3ksIEluYy4KLQkJCQk5MzUxIEVhc3RtYW4gUGFyayBEcml2ZQotCQkJCVN1aXRlIEIKLQkJCQlXaW5kc29yIENvbG9yYWRvIDgwNTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC03QyAgIChoZXgpCQlBQkUgRWxldHRyb25pY2EgUy5wLkEuCi0wMDFEN0MgICAgIChiYXNlIDE2KQkJQUJFIEVsZXR0cm9uaWNhIFMucC5BLgotCQkJCVZpYSBMZW9uYXJkbyBkYSBWaW5jaSwgOTIKLQkJCQlDQVJBVkFHR0lPIEJHIDI0MDQzCi0JCQkJSVRBTFkKLQotMDAtMUQtN0QgICAoaGV4KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLTAwMUQ3RCAgICAgKGJhc2UgMTYpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCVBpbi1KZW4gQ2l0eSwgVGFveXVhbiwKLQkJCQlQaW4tSmVuIFRhb3l1YW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC03RSAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTAwMUQ3RSAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTdGICAgKGhleCkJCVRla3JvbiBJbnRlcm5hdGlvbmFsIEx0ZAotMDAxRDdGICAgICAoYmFzZSAxNikJCVRla3JvbiBJbnRlcm5hdGlvbmFsIEx0ZAotCQkJCTQwOSBDdWJhIFN0cmVldCwgQWxpY2V0b3duCi0JCQkJUE8gQm94IDMxLTI4NQotCQkJCUxvd2VyIEh1dHQgV2VsbGluZ3RvbiA1MDEwCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMUQtODAgICAoaGV4KQkJQmVpamluZyBIdWFodWFuIEVsZXRyb25pY3MgQ28uLEx0ZAotMDAxRDgwICAgICAoYmFzZSAxNikJCUJlaWppbmcgSHVhaHVhbiBFbGV0cm9uaWNzIENvLixMdGQKLQkJCQlOby4yNixTaGFuZ2RpIDZ0aCBTdC5IYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTFELTgxICAgKGhleCkJCUdVQU5HWkhPVSBHQVRFV0FZIEVMRUNUUk9OSUNTIENPLiwgTFRECi0wMDFEODEgICAgIChiYXNlIDE2KQkJR1VBTkdaSE9VIEdBVEVXQVkgRUxFQ1RST05JQ1MgQ08uLCBMVEQKLQkJCQlCMjAjLDRGLE5vLjkgSmlhbmdvbmcgUm9hZCxUaWFuaGUgU29mdHdhcmUgUGFyayxUaWFuaGUgRGlzdHJpY3QsCi0JCQkJR1VBTkdaSE9VIEd1YW5nZG9uZyA1MTA2NjUKLQkJCQlDSElOQQotCi0wMC0xRC04MiAgIChoZXgpCQlHTiBBL1MgKEdOIE5ldGNvbSBBL1MpCi0wMDFEODIgICAgIChiYXNlIDE2KQkJR04gQS9TIChHTiBOZXRjb20gQS9TKQotCQkJCUxhdXRydXBiamVyZyA3Ci0JCQkJUC5PLkJveCA5OQotCQkJCUJhbGxlcnVwICBESyAtIDI3NTAKLQkJCQlERU5NQVJLCi0KLTAwLTFELTgzICAgKGhleCkJCUVtaXRlY2ggQ29ycG9yYXRpb24KLTAwMUQ4MyAgICAgKGJhc2UgMTYpCQlFbWl0ZWNoIENvcnBvcmF0aW9uCi0JCQkJMkYsTm8uNy0xLEluZHVzdHJ5IEUsUmQuOQotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtODQgICAoaGV4KQkJR2F0ZXdheSwgSW5jLgotMDAxRDg0ICAgICAoYmFzZSAxNikJCUdhdGV3YXksIEluYy4KLQkJCQk2MTAgR2F0ZXdheSBEcml2ZQotCQkJCVAuTy4gQm94IDIwMDAKLQkJCQlOb3J0aCBTaW91eCBDaXR5IFNvdXRoIERha290YSA1NzA0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtODUgICAoaGV4KQkJQ2FsbCBEaXJlY3QgQ2VsbHVsYXIgU29sdXRpb25zCi0wMDFEODUgICAgIChiYXNlIDE2KQkJQ2FsbCBEaXJlY3QgQ2VsbHVsYXIgU29sdXRpb25zCi0JCQkJU3VpdGUgMTQ1LCBOYXRpb25hbCBJbm5vdmF0aW9uIENlbnRyZQotCQkJCUF1c3RyYWxpYW4gVGVjaG5vbG9neSBQYXJrCi0JCQkJRXZlbGVpZ2ggTlNXIDE0MzAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUQtODYgICAoaGV4KQkJU2hpbndhIEluZHVzdHJpZXMoQ2hpbmEpIEx0ZC4KLTAwMUQ4NiAgICAgKGJhc2UgMTYpCQlTaGlud2EgSW5kdXN0cmllcyhDaGluYSkgTHRkLgotCQkJCTggUGluZ25hbnpob25nIFJvYWQsIFBpbmduYW4gSW5kdXN0cmlhbCBQYXJrLCBaaG9uZ2thaSBOby40IFJvYWQsCi0JCQkJSHVpemhvdSBDaXR5IEd1YW5nZG9uZyBQcm92aW5jZSA1MTYwMDYKLQkJCQlDSElOQQotCi0wMC0xRC04NyAgIChoZXgpCQlWaWdUZWNoIExhYnMgU2RuIEJoZAotMDAxRDg3ICAgICAoYmFzZSAxNikJCVZpZ1RlY2ggTGFicyBTZG4gQmhkCi0JCQkJNDUtMTEgVGhlIEJvdWxldmFyZCBNaWQgVmFsbGV5IENpdHkKLQkJCQlMaW5na2FyYW4gU3llZCBQdXRyYQotCQkJCUt1YWxhIEx1bXB1ciBTZWxhbmdvciA1OTIwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFELTg4ICAgKGhleCkJCUNsZWFyd2lyZQotMDAxRDg4ICAgICAoYmFzZSAxNikJCUNsZWFyd2lyZQotCQkJCTQ0MDAgQ2FyaWxsb24gUG9pbnQKLQkJCQlLaXJrbGFuZCBXYXNoaW5ndG9uIDk4MDMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC04OSAgIChoZXgpCQlWYXVsdFN0b3IgQ29ycG9yYXRpb24KLTAwMUQ4OSAgICAgKGJhc2UgMTYpCQlWYXVsdFN0b3IgQ29ycG9yYXRpb24KLQkJCQkxMDEwIEJyaW9zbyBEcml2ZQotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELThBICAgKGhleCkJCVRlY2hUcmV4IEluYwotMDAxRDhBICAgICAoYmFzZSAxNikJCVRlY2hUcmV4IEluYwotCQkJCTYyMjEgSGlnaHdheSA3LCBVbml0IDEyCi0JCQkJV29vZGJyaWRnZSBPbnRhbGlvIEw0SCAwSzgKLQkJCQlDQU5BREEKLQotMDAtMUQtOEIgICAoaGV4KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TCi0wMDFEOEIgICAgIChiYXNlIDE2KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TCi0JCQkJVklBTEUgU0FSQ0EgMjIyCi0JCQkJTUlMQU5PICAyMDEyNgotCQkJCUlUQUxZCi0KLTAwLTFELThDICAgKGhleCkJCUxhIENyb3NzZSBUZWNobm9sb2d5IExURAotMDAxRDhDICAgICAoYmFzZSAxNikJCUxhIENyb3NzZSBUZWNobm9sb2d5IExURAotCQkJCTI4MDkgTG9zZXkgQmx2ZC4gU28uCi0JCQkJTGEgQ3Jvc3NlIFdJIDU0NjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC04RCAgIChoZXgpCQlSYXl0ZWsgR21iSAotMDAxRDhEICAgICAoYmFzZSAxNikJCVJheXRlayBHbWJICi0JCQkJQmxhbmtlbmJ1cmdlciBTdHIuIDEzNQotCQkJCUJlcmxpbiAgMTMxMjcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELThFICAgKGhleCkJCUFsZXJlb24sIEluYy4KLTAwMUQ4RSAgICAgKGJhc2UgMTYpCQlBbGVyZW9uLCBJbmMuCi0JCQkJNzYwMCBOLiBDYXBpdGFsIG9mIFRleGFzIEh3eQotCQkJCUJsZGcgQywgIzIwMAotCQkJCUF1c3RpbiBUWCA3ODczMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtOEYgICAoaGV4KQkJUHVyZVdhdmUgTmV0d29ya3MKLTAwMUQ4RiAgICAgKGJhc2UgMTYpCQlQdXJlV2F2ZSBOZXR3b3JrcwotCQkJCTI2NjAtQyBNYXJpbmUgV2F5Ci0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtOTAgICAoaGV4KQkJRU1DTyBGbG93IFN5c3RlbXMKLTAwMUQ5MCAgICAgKGJhc2UgMTYpCQlFTUNPIEZsb3cgU3lzdGVtcwotCQkJCTIxNTAgTWlsbGVyIERyaXZlCi0JCQkJTG9uZ21vbnQgQ08gODA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTkxICAgKGhleCkJCURpZ2l0aXplLCBJbmMKLTAwMUQ5MSAgICAgKGJhc2UgMTYpCQlEaWdpdGl6ZSwgSW5jCi0JCQkJMTU4IEVkaXNvbiBSb2FkCi0JCQkJTGFrZSBIb3BhdGNvbmcgTmV3IEplcnNleSAwNzg0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtOTIgICAoaGV4KQkJTUlDUk8tU1RBUiBJTlQnTCBDTy4sTFRELgotMDAxRDkyICAgICAoYmFzZSAxNikJCU1JQ1JPLVNUQVIgSU5UJ0wgQ08uLExURC4KLQkJCQlOby42OSxMaS1EZSBTdCxKdW5nLUhvIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC05MyAgIChoZXgpCQlNb2RhY29tCi0wMDFEOTMgICAgIChiYXNlIDE2KQkJTW9kYWNvbQotCQkJCUppbnN1ayBCdWlsZGluZyAxNTM2LTcKLQkJCQlTZW9jaG8tRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy0wNzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtOTQgICAoaGV4KQkJQ2xpbWF4IFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMUQ5NCAgICAgKGJhc2UgMTYpCQlDbGltYXggVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCU5vLiAyNTgsIEhzaW4gSHUgMm5kIFJvYWQKLQkJCQlOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSBDaXR5IFRhaXBlaSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTk1ICAgKGhleCkJCUZsYXNoLCBJbmMuCi0wMDFEOTUgICAgIChiYXNlIDE2KQkJRmxhc2gsIEluYy4KLQkJCQkzNzAzIE4uIDIwMHRoIFN0LgotCQkJCUVsa2hvcm4gTkUgNjgwMjItMjkyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtOTYgICAoaGV4KQkJV2F0Y2hHdWFyZCBWaWRlbwotMDAxRDk2ICAgICAoYmFzZSAxNikJCVdhdGNoR3VhcmQgVmlkZW8KLQkJCQkzMDAxIFN1bW1pdCBBdmUuCi0JCQkJUGxhbm8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTk3ICAgKGhleCkJCUFsZXJ0dXMgVGVjaG5vbG9naWVzIExMQwotMDAxRDk3ICAgICAoYmFzZSAxNikJCUFsZXJ0dXMgVGVjaG5vbG9naWVzIExMQwotCQkJCTExNzg1IEJlbHRzdmlsbGUgRHJpdmUKLQkJCQlTdWl0ZSAxMzI1Ci0JCQkJQmVsdHN2aWxsZSBNRCAyMDcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtOTggICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUQ5OCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUQtOTkgICAoaGV4KQkJQ3lhbiBPcHRpYywgSW5jLgotMDAxRDk5ICAgICAoYmFzZSAxNikJCUN5YW4gT3B0aWMsIEluYy4KLQkJCQkxMzkwIE4uIE1jRG93ZWxsIEJsdmQKLQkJCQlTdWl0ZSBHLTMyNwotCQkJCVBldGFsdW1hIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC05QSAgIChoZXgpCQlHT0RFWCBJTlRFUk5BVElPTkFMIENPLiwgTFRECi0wMDFEOUEgICAgIChiYXNlIDE2KQkJR09ERVggSU5URVJOQVRJT05BTCBDTy4sIExURAotCQkJCTRGLiBOTy4xNjgsIExpYW4tQ2hlbmcgUm9hZCBDaHVuZy1IbyBDaXR5LAotCQkJCVRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTlCICAgKGhleCkJCUhva3V5byBBdXRvbWF0aWMgQ28uLCBMdGQuCi0wMDFEOUIgICAgIChiYXNlIDE2KQkJSG9rdXlvIEF1dG9tYXRpYyBDby4sIEx0ZC4KLQkJCQlOaWl0YWthIDEtMTAtOQotCQkJCVlvZG9nYXdhLUt1Ci0JCQkJT3Nha2EgIDUzMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMUQtOUMgICAoaGV4KQkJUm9ja3dlbGwgQXV0b21hdGlvbgotMDAxRDlDICAgICAoYmFzZSAxNikJCVJvY2t3ZWxsIEF1dG9tYXRpb24KLQkJCQkxIEFsbGVuLUJyYWRsZXkgRHJpdmUKLQkJCQlDUy1DMjM5Ci0JCQkJTWF5ZmllbGQgSGVpZ2h0cyBPaGlvIDQ0MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC05RCAgIChoZXgpCQlBUlRKT1kgSU5URVJOQVRJT05BTCBMSU1JVEVECi0wMDFEOUQgICAgIChiYXNlIDE2KQkJQVJUSk9ZIElOVEVSTkFUSU9OQUwgTElNSVRFRAotCQkJCVJvb20gMTYwMSxOby4yMzkgWmhvbmdYaW5nIFJvYWQsTHVvSHUgRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAxCi0JCQkJQ0hJTkEKLQotMDAtMUQtOUUgICAoaGV4KQkJQVhJT04gVEVDSE5PTE9HSUVTCi0wMDFEOUUgICAgIChiYXNlIDE2KQkJQVhJT04gVEVDSE5PTE9HSUVTCi0JCQkJMTUxIFJVRSBQQVJDIElOTk9WQVRJT04KLQkJCQlMQSBQT0NBVElFUkUgUVVFQkVDIEcwUjFaMAotCQkJCUNBTkFEQQotCi0wMC0xRC05RiAgIChoZXgpCQlNQVRUICAgUi5QLlRyYWN6eW5zY3kgU3AuSi4KLTAwMUQ5RiAgICAgKGJhc2UgMTYpCQlNQVRUICAgUi5QLlRyYWN6eW5zY3kgU3AuSi4KLQkJCQlQb2xub2NuYSA0NAotCQkJCUtvc2NpYW4gd2llbGtvcG9sc2tpZSBQTC02NDAwMAotCQkJCVBPTEFORAotCi0wMC0xRC1BMCAgIChoZXgpCQlIZW5nIFl1IEVsZWN0cm9uaWMgTWFudWZhY3R1cmluZyBDb21wYW55IExpbWl0ZWQKLTAwMURBMCAgICAgKGJhc2UgMTYpCQlIZW5nIFl1IEVsZWN0cm9uaWMgTWFudWZhY3R1cmluZyBDb21wYW55IExpbWl0ZWQKLQkJCQlSb29tIDEwMDQsIEhTSCBNb25na29rIFBsYXphLAotCQkJCTc5NC04MDIgTmF0aGFuIFJvYWQsCi0JCQkJS293bG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFELUExICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMURBMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1BMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFEQTIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQTMgICAoaGV4KQkJU2FiaU9zbwotMDAxREEzICAgICAoYmFzZSAxNikJCVNhYmlPc28KLQkJCQkxODkgUyBTdGF0ZSBTdWl0ZSAjMjUwCi0JCQkJQ2xlYXJmaWVsZCBVdGFoIDg0MDE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1BNCAgIChoZXgpCQlIYW5nemhvdSBTeXN0ZW0gVGVjaG5vbG9neSBDTy4sIExURAotMDAxREE0ICAgICAoYmFzZSAxNikJCUhhbmd6aG91IFN5c3RlbSBUZWNobm9sb2d5IENPLiwgTFRECi0JCQkJUk9PTSBBMTUwNSBIdWFYaW5nIHRpbWVzIHBsYXphLE5PIDQ3OCBXZW5zYW4gUm9hZAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMgotCQkJCUNISU5BCi0KLTAwLTFELUE1ICAgKGhleCkJCVdCIEVsZWN0cm9uaWNzCi0wMDFEQTUgICAgIChiYXNlIDE2KQkJV0IgRWxlY3Ryb25pY3MKLQkJCQlMYW5nZWxhbmRzdmVqIDFBCi0JCQkJSGVybmluZyBIZXJuaW5nIDc0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTFELUE2ICAgKGhleCkJCU1lZGlhIE51bWVyaWNzIExpbWl0ZWQKLTAwMURBNiAgICAgKGJhc2UgMTYpCQlNZWRpYSBOdW1lcmljcyBMaW1pdGVkCi0JCQkJUm9kZW5iYWNoZXIgQ2hhdXNzZWUgNgotCQkJCUhhbmF1IEhlc3NlbiA2MzQ1NwotCQkJCUdFUk1BTlkKLQotMDAtMUQtQTcgICAoaGV4KQkJU2VhbWxlc3MgSW50ZXJuZXQKLTAwMURBNyAgICAgKGJhc2UgMTYpCQlTZWFtbGVzcyBJbnRlcm5ldAotCQkJCTIwNTAgUnVzc2V0dCBXYXkgU3VpdGUgMzM4Ci0JCQkJQ2Fyc29uIENpdHkgTmV2YWRhIDg5NzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1BOCAgIChoZXgpCQlUYWthaGF0YSBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDFEQTggICAgIChiYXNlIDE2KQkJVGFrYWhhdGEgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCTExODgsS3Vib3RhLEt1Ym90YS1tYWNoaQotCQkJCVlvbmV6YXdhLXNoaSBZYW1hZ2F0YS1QcmVmLiA5OTItMDAwMwotCQkJCUpBUEFOCi0KLTAwLTFELUE5ICAgKGhleCkJCUNhc3RsZXMgVGVjaG5vbG9neSwgQ28uLCBMVEQKLTAwMURBOSAgICAgKGJhc2UgMTYpCQlDYXN0bGVzIFRlY2hub2xvZ3ksIENvLiwgTFRECi0JCQkJMkYsIE5vLjIwNSwgU2VjIDMgQmVpc2hpbiBSZC4sCi0JCQkJSHNpbi1UaWVuIENpdHkgVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtQUEgICAoaGV4KQkJRHJheVRlayBDb3JwLgotMDAxREFBICAgICAoYmFzZSAxNikJCURyYXlUZWsgQ29ycC4KLQkJCQlOby4gMjYsIEZ1LVNoaW5nIFJvYWQKLQkJCQlIdUtvdSBDb3VudHksIEhzaW4tQ2h1IEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW4tQ2h1ICAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELUFCICAgKGhleCkJCVN3aXNzUXVhbCBMaWNlbnNlIEFHCi0wMDFEQUIgICAgIChiYXNlIDE2KQkJU3dpc3NRdWFsIExpY2Vuc2UgQUcKLQkJCQlCYWFyZXJzdHJhc3NlIDc4Ci0JCQkJWnVnIFBvc3RmYWNoIDExNwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFELUFDICAgKGhleCkJCUdpZ2Ftb24gU3lzdGVtcyBMTEMKLTAwMURBQyAgICAgKGJhc2UgMTYpCQlHaWdhbW9uIFN5c3RlbXMgTExDCi0JCQkJNTk4IEdpYnJhbHRhciBEcml2ZQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1BRCAgIChoZXgpCQlTaW5vdGVjaCBFbmdpbmVlcmluZyBDb25zdWx0YW50cywgSW5jLiAgR2VvdGVjaG5pY2FsIEVuZ2luZWUKLTAwMURBRCAgICAgKGJhc2UgMTYpCQlTaW5vdGVjaCBFbmdpbmVlcmluZyBDb25zdWx0YW50cywgSW5jLiAgR2VvdGVjaG5pY2FsIEVuZ2luZWUKLQkJCQlCYXNlbWVudCBOby43IExhbmUgMjYsIFlhdC1TZW4gUmQuCi0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELUFFICAgKGhleCkJCUNIQU5HIFRTRU5HIFRFQ0hOT0xPR1kgQ08uLCBMVEQKLTAwMURBRSAgICAgKGJhc2UgMTYpCQlDSEFORyBUU0VORyBURUNITk9MT0dZIENPLiwgTFRECi0JCQkJMkYgTk8uMTYwIEJBQ0sgQlVJTERJTkcsIExFTiBDSEVORyBSRC4sIENIVU5HIEhPIENJVFkKLQkJCQlUQUlQRUkgSFNJRU4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC1BRiAgIChoZXgpCQlOb3J0ZWwKLTAwMURBRiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUQtQjAgICAoaGV4KQkJRnVKaWFuIEhlbmdUb25nIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxREIwICAgICAoYmFzZSAxNikJCUZ1SmlhbiBIZW5nVG9uZyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4xNC04MDQsQnVpbGRpbmcgMixKaW5YaXVGdUNoZW5nLE5vLjMzOCxIdWFMaW4gUm9hZAotCQkJCUZ1WmhvdSBDaXR5IEZ1SmlhbiBQcm92aW5jZSAzNTAwMDEKLQkJCQlDSElOQQotCi0wMC0xRC1CMSAgIChoZXgpCQlDcmVzY2VuZG8gTmV0d29ya3MKLTAwMURCMSAgICAgKGJhc2UgMTYpCQlDcmVzY2VuZG8gTmV0d29ya3MKLQkJCQk2IFlvbmkgTmV0YW55YWh1IFN0LgotCQkJCU9yLVllaHVkYSAgNjAzNzYKLQkJCQlJU1JBRUwKLQotMDAtMUQtQjIgICAoaGV4KQkJSE9LS0FJRE8gRUxFQ1RSSUMgRU5HSU5FRVJJTkcgQ08uLExURC4KLTAwMURCMiAgICAgKGJhc2UgMTYpCQlIT0tLQUlETyBFTEVDVFJJQyBFTkdJTkVFUklORyBDTy4sTFRELgotCQkJCVNvdXRoMTUtV2VzdDIzCi0JCQkJTmFucG9yby1DaG8gSG9ra2FpZG8gMDY5LTAyMTUKLQkJCQlKQVBBTgotCi0wMC0xRC1CMyAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDFEQjMgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQKLQkJCQlSb3NldmlsbGUgQ0EgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUI0ICAgKGhleCkJCUtVTUhPIEVORyBDTy4sTFRECi0wMDFEQjQgICAgIChiYXNlIDE2KQkJS1VNSE8gRU5HIENPLixMVEQKLQkJCQk0OTgtMTMsIEhZVU5EQUkgQi9EIDVGCi0JCQkJUFlFT05HUkkgMy1ET05HLCBTRU8tR1UKLQkJCQlEQUVHVSAgNzAzLTgzNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC1CNSAgIChoZXgpCQlKdW5pcGVyIG5ldHdvcmtzCi0wMDFEQjUgICAgIChiYXNlIDE2KQkJSnVuaXBlciBuZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1CNiAgIChoZXgpCQlCZXN0Q29tbSBOZXR3b3JrcywgSW5jLgotMDAxREI2ICAgICAoYmFzZSAxNikJCUJlc3RDb21tIE5ldHdvcmtzLCBJbmMuCi0JCQkJNDQwMCBFLiBCcm9hZHdheSBCbHZkLgotCQkJCVN1aXRlIDIwMQotCQkJCVR1Y3NvbiBBWiA4NTcxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQjcgICAoaGV4KQkJVGVuZHJpbCBOZXR3b3JrcywgSW5jLgotMDAxREI3ICAgICAoYmFzZSAxNikJCVRlbmRyaWwgTmV0d29ya3MsIEluYy4KLQkJCQk1NzAwLUQgRmxhdGlyb24gUGFya3dheQotCQkJCVN1aXRlIDU3MDAtRAotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUI4ICAgKGhleCkJCUludG90byBJbmMuCi0wMDFEQjggICAgIChiYXNlIDE2KQkJSW50b3RvIEluYy4KLQkJCQkzMTAwIERlIExhIENydXogQmx2ZC4gICMzMDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQjkgICAoaGV4KQkJV2VsbHNwcmluZyBXaXJlbGVzcwotMDAxREI5ICAgICAoYmFzZSAxNikJCVdlbGxzcHJpbmcgV2lyZWxlc3MKLQkJCQkxMDcgTWFnZWxsYSBDb3VydAotCQkJCU5vcnRoIFdhbGVzIFBhIDE5NDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1CQSAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0wMDFEQkEgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMsNS0xLTEyLAotCQkJCUtpdGFzaGluYWdhd2EKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMDEKLQkJCQlKQVBBTgotCi0wMC0xRC1CQiAgIChoZXgpCQlEeW5hbWljIFN5c3RlbSBFbGVjdHJvbmljcyBDb3JwLgotMDAxREJCICAgICAoYmFzZSAxNikJCUR5bmFtaWMgU3lzdGVtIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJNUYsTk8sOSxMQU5FIDEzMCxTRUMgMSxLVUFOR0cgRlUgUkQuU0FOIENIVU5HIENJVFksCi0JCQkJVGFpcGVpIEhzaWVuIDI0MTU4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC1CQyAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMURCQyAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xRC1CRCAgIChoZXgpCQlWZXJzYW1lZCBJbmMuCi0wMDFEQkQgICAgIChiYXNlIDE2KQkJVmVyc2FtZWQgSW5jLgotCQkJCTIgQmx1ZSBIaWxsIFBsYXphCi0JCQkJUGVhcmwgUml2ZXIgTlkgMTA5NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUJFICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxREJFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQkYgICAoaGV4KQkJUmFkaWllbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDFEQkYgICAgIChiYXNlIDE2KQkJUmFkaWllbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjA4NC1BIFdhbHNoIEF2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DMCAgIChoZXgpCQlFbnBoYXNlIEVuZXJneQotMDAxREMwICAgICAoYmFzZSAxNikJCUVucGhhc2UgRW5lcmd5Ci0JCQkJMjAxIDFzdCBTdHJlZXQsIFN1aXRlIDExMQotCQkJCVBldGFsdW1hIENBIDk0OTUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DMSAgIChoZXgpCQlBdWRpbmF0ZSBQdHkgTAotMDAxREMxICAgICAoYmFzZSAxNikJCUF1ZGluYXRlIFB0eSBMCi0JCQkJTGV2ZWwgMSwgNDU4IFdhdHRsZSBTdAotCQkJCVVsdGltbyBOU1cgMjAwNwotCQkJCUFVU1RSQUxJQQotCi0wMC0xRC1DMiAgIChoZXgpCQlYT1JURUMgT1kKLTAwMURDMiAgICAgKGJhc2UgMTYpCQlYT1JURUMgT1kKLQkJCQlIb3l0YW1vbnRpZSA2Ci0JCQkJTGVtcGFhbGEgUGlya2FubWFhIDMzODgwCi0JCQkJRklOTEFORAotCi0wMC0xRC1DMyAgIChoZXgpCQlSSUtPUiBUViwgTHRkCi0wMDFEQzMgICAgIChiYXNlIDE2KQkJUklLT1IgVFYsIEx0ZAotCQkJCUtvc3RvbWFyb3Zza3kgcGVyLiwzCi0JCQkJTW9zY293ICAxMDUxMjAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUQtQzQgICAoaGV4KQkJQUlPSSBTeXN0ZW1zIENvLiwgTHRkLgotMDAxREM0ICAgICAoYmFzZSAxNikJCUFJT0kgU3lzdGVtcyBDby4sIEx0ZC4KLQkJCQlLRFggT21vcmksIEJsZGcuIDhGCi0JCQkJMS02LTggT21vcmkgS2l0YSwgT3RhLWt1Ci0JCQkJVG9reW8gIDE0My0wMDE2Ci0JCQkJSkFQQU4KLQotMDAtMUQtQzUgICAoaGV4KQkJQmVpamluZyBKaWF4dW4gRmVpaG9uZyBFbGVjdHJpY2lhbCBDby4sIEx0ZC4KLTAwMURDNSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEppYXh1biBGZWlob25nIEVsZWN0cmljaWFsIENvLiwgTHRkLgotCQkJCUVsZWN0cmljYWwgQnVpbGRpbmcsTm8uIDMxIEppYW9kYSBFYXN0IFJvYWQsCi0JCQkJQmVpamluZyBIYWlkaWFuIERpc3RyaWN0LCAxMDAwNDQKLQkJCQlDSElOQQotCi0wMC0xRC1DNiAgIChoZXgpCQlTTlIgSW5jLgotMDAxREM2ICAgICAoYmFzZSAxNikJCVNOUiBJbmMuCi0JCQkJVkJJQyBUMjIzaG8sIElDVSwgMTAzLTYgTXVuamktZG9uZywgWW91c2VvbmctZ3UKLQkJCQlEYWVqZW9uICAzMDUtNzMyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELUM3ICAgKGhleCkJCUwtMyBDb21tdW5pY2F0aW9ucyBHZW5ldmEgQWVyb3NwYWNlCi0wMDFEQzcgICAgIChiYXNlIDE2KQkJTC0zIENvbW11bmljYXRpb25zIEdlbmV2YSBBZXJvc3BhY2UKLQkJCQk0MjQwIEludGVybmF0aW9uYWwgUGFya3dheQotCQkJCVN1aXRlIDEwMAotCQkJCUNhcnJvbGx0b24gVGV4YXMgNzUwMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUM4ICAgKGhleCkJCVNjYWRhTWV0cmNzLCBMTEMuCi0wMDFEQzggICAgIChiYXNlIDE2KQkJU2NhZGFNZXRyY3MsIExMQy4KLQkJCQk1OTUgVmlzdGEgSGlsbHMgQ291cnQKLQkJCQlFdXJla2EgTWlzc291cmkgNjMwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUM5ICAgKGhleCkJCUdhaW5TcGFuIENvcnAuCi0wMDFEQzkgICAgIChiYXNlIDE2KQkJR2FpblNwYW4gQ29ycC4KLQkJCQlQLk8uIEJveCAyMjM1ODAKLQkJCQlDYXJtZWwgQ0EgOTM5MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUNBICAgKGhleCkJCVBBViBFbGVjdHJvbmljcyBMaW1pdGVkCi0wMDFEQ0EgICAgIChiYXNlIDE2KQkJUEFWIEVsZWN0cm9uaWNzIExpbWl0ZWQKLQkJCQk3IExhdmVyb2NrIFJvYWQKLQkJCQlTdGlybGluZyBSb2FkIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJQWlyZHJpZSBMYW5hcmtzaGlyZSBNTDYgN1VECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUQtQ0IgICAoaGV4KQkJRXhlbnMgRGV2ZWxvcG1lbnQgT3kKLTAwMURDQiAgICAgKGJhc2UgMTYpCQlFeGVucyBEZXZlbG9wbWVudCBPeQotCQkJCUthdXBwYWthdHUgMzYKLQkJCQlLYWphYW5pIEthaW51dSA4NzEwMAotCQkJCUZJTkxBTkQKLQotMDAtMUQtQ0MgICAoaGV4KQkJSGV0cmEgU2VjdXJlIFNvbHV0aW9ucwotMDAxRENDICAgICAoYmFzZSAxNikJCUhldHJhIFNlY3VyZSBTb2x1dGlvbnMKLQkJCQkyMzUwIENvbW1lcmNlIFBhcmsgRHIuCi0JCQkJUGFsbSBCYXkgRkwgMzI5MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUNEICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDFEQ0QgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUNFICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDFEQ0UgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUNGICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDFEQ0YgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUQwICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDFERDAgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUQxICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDFERDEgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUQyICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDFERDIgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUQzICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDFERDMgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUQ0ICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDFERDQgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUQ1ICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDFERDUgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUQ2ICAgKGhleCkJCUFSUklTIEdyb3VwLCBJbmMuCi0wMDFERDYgICAgIChiYXNlIDE2KQkJQVJSSVMgR3JvdXAsIEluYy4KLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUQ3ICAgKGhleCkJCUFsZ29saXRoCi0wMDFERDcgICAgIChiYXNlIDE2KQkJQWxnb2xpdGgKLQkJCQk0MDAgSXNhYmV5Ci0JCQkJU2FpbnQtTGF1cmVudCBRYyBINFQgMVYzCi0JCQkJQ0FOQURBCi0KLTAwLTFELUQ4ICAgKGhleCkJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotMDAxREQ4ICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotCQkJCU9uZSBNaWNyb3NvZnQgV2F5Ci0JCQkJUmVkbW9uZCBXYXNoaW5ndG9uIDk4MDUyLTYzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUQ5ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby4sTHRkLgotMDAxREQ5ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby4sTHRkLgotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC1EQSAgIChoZXgpCQlNaWtyb2VsZWt0cm9uaWthIHNwb2wuIHMgci4gby4KLTAwMUREQSAgICAgKGJhc2UgMTYpCQlNaWtyb2VsZWt0cm9uaWthIHNwb2wuIHMgci4gby4KLQkJCQlEcmFieSA4NDkKLQkJCQlWeXNva2UgTXl0byBDWiA1NjYgMDEKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0xRC1EQiAgIChoZXgpCQlDLUJFTCBDb3Jwb3JhdGlvbgotMDAxRERCICAgICAoYmFzZSAxNikJCUMtQkVMIENvcnBvcmF0aW9uCi0JCQkJRnV0YWJhY2hvIDM1LTEyCi0JCQkJNkYgT2thZGEgQmlsZGcKLQkJCQlJdGFiYXNoaS1rdSBUb2t5byAxNzMtMDAxMQotCQkJCUpBUEFOCi0KLTAwLTFELURDICAgKGhleCkJCUhhbmdaaG91IERlQ2hhbmdMb25nIFRlY2gmSW5mbyBDby4sTHRkCi0wMDFEREMgICAgIChiYXNlIDE2KQkJSGFuZ1pob3UgRGVDaGFuZ0xvbmcgVGVjaCZJbmZvIENvLixMdGQKLQkJCQlSb29tIDExMDIsS2VKaSBNYW5zaW9uLAotCQkJCUVhc3QgU29mdHdhcmUgUGFyayw5MCBXZW5TYW4gUm9hZC4KLQkJCQlIYW5nWmhvdSBaaGVKaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi0wMC0xRC1ERCAgIChoZXgpCQlEQVQgSC5LLiBMSU1JVEVECi0wMDFEREQgICAgIChiYXNlIDE2KQkJREFUIEguSy4gTElNSVRFRAotCQkJCVN1aXRlIDE0MDUgMTQvRi4sIENpdHkgUGxhemEgNCwgVGFpIEtvbyBXYW4gUmQsCi0JCQkJVGFpIEtvbyBTaGluZyBIb25nIEtvbmcgSXNsYW5kIDA2NDgyOAotCQkJCUhPTkcgS09ORwotCi0wMC0xRC1ERSAgIChoZXgpCQlaaGVqaWFuZyBCcm9hZGNhc3QmVGVsZXZpc2lvbiBUZWNobm9sb2d5IENvLixMdGQuCi0wMDFEREUgICAgIChiYXNlIDE2KQkJWmhlamlhbmcgQnJvYWRjYXN0JlRlbGV2aXNpb24gVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCUJ1aWxkaW5nIE5vLjE2LFhpZG91bWVuIEluZHVzdHJ5IFBhcmssV2VueWkgUm9hZCwKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi0wMC0xRC1ERiAgIChoZXgpCQlTdW5pdGVjIEVudGVycHJpc2UgQ28uLCBMdGQuCi0wMDFEREYgICAgIChiYXNlIDE2KQkJU3VuaXRlYyBFbnRlcnByaXNlIENvLiwgTHRkLgotCQkJCTNGLiwgTm8uIDk4LTEsIE1pbmN5dWFuIFJkLgotCQkJCVNpbmRpYW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtRTAgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFERTAgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRC1FMSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMURFMSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFELUUyICAgKGhleCkJCVJhZGlvbm9yIENvbW11bmljYXRpb25zCi0wMDFERTIgICAgIChiYXNlIDE2KQkJUmFkaW9ub3IgQ29tbXVuaWNhdGlvbnMKLQkJCQlJbmd2YWxkIFlzdGdhYXJkcyB2ZWcgMjMKLQkJCQlUcm9uZGhlaW0gVFJEIDcwNDYKLQkJCQlOT1JXQVkKLQotMDAtMUQtRTMgICAoaGV4KQkJSW50dWljb20KLTAwMURFMyAgICAgKGJhc2UgMTYpCQlJbnR1aWNvbQotCQkJCTE4ODAgUy4gRmxhdGlyb24gQ3QuCi0JCQkJU3VpdGUgUgotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUU0ICAgKGhleCkJCVZpc2lvbmVlcmVkIEltYWdlIFN5c3RlbXMKLTAwMURFNCAgICAgKGJhc2UgMTYpCQlWaXNpb25lZXJlZCBJbWFnZSBTeXN0ZW1zCi0JCQkJMTA1NjEgR2FyZGVuIEdyb3ZlIEJsdmQKLQkJCQlHYXJkZW4gR3JvdmUgQ2FsaWZvcm5pYSA5Mjg0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRTUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxREU1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUU2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMURFNiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1FNyAgIChoZXgpCQlNYXJpbmUgU29uaWMgVGVjaG5vbG9neSwgTHRkLgotMDAxREU3ICAgICAoYmFzZSAxNikJCU1hcmluZSBTb25pYyBUZWNobm9sb2d5LCBMdGQuCi0JCQkJNTUwOCBHZW9yZ2UgV2FzaGluZ3RvbiBNZW1vcmlhbCBIaWdod2F5Ci0JCQkJUC5PLiBCb3ggNzMwCi0JCQkJV2hpdGUgTWFyc2ggVmlyZ2luaWEgMjMxODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUU4ICAgKGhleCkJCU5pa2tvIERlbmtpIFRzdXNoaW4gQ29tcGFueShORFRDKQotMDAxREU4ICAgICAoYmFzZSAxNikJCU5pa2tvIERlbmtpIFRzdXNoaW4gQ29tcGFueShORFRDKQotCQkJCTQ0MCBLYW1vc2hpZGEtdG93biwgQW9iYS1rdQotCQkJCVlva29oYW1hICAyMjctMDAzMwotCQkJCUpBUEFOCi0KLTAwLTFELUU5ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFERTkgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFELUVBICAgKGhleCkJCUNvbW10ZXN0IEluc3RydW1lbnRzIEx0ZAotMDAxREVBICAgICAoYmFzZSAxNikJCUNvbW10ZXN0IEluc3RydW1lbnRzIEx0ZAotCQkJCUxldmVsIDIsIDIyIE1vb3Job3VzZSBBdmUKLQkJCQlDaHJpc3RjaHVyY2ggQ2FudGVyYnVyeSA4MjQzCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMUQtRUIgICAoaGV4KQkJRElORUMgSW50ZXJuYXRpb25hbAotMDAxREVCICAgICAoYmFzZSAxNikJCURJTkVDIEludGVybmF0aW9uYWwKLQkJCQlSdWUgZGUgbGEgR2FyZSwgMzAKLQkJCQlCUkFJTkUgTCdBTExFVUQgQlJBQkFOVCBXQUxMT04gMTQyMAotCQkJCUJFTEdJVU0KLQotMDAtMUQtRUMgICAoaGV4KQkJTWFydXN5cwotMDAxREVDICAgICAoYmFzZSAxNikJCU1hcnVzeXMKLQkJCQlFdW5zdW5nIEJsZGcuIDVGCi0JCQkJNTMtOCBDaHVuZ0RhbS1Eb25nIEthbmdOYW0tS3UKLQkJCQlTZW91bCAgMTM1LTc2MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC1FRCAgIChoZXgpCQlHcmlkIE5ldCwgSW5jLgotMDAxREVEICAgICAoYmFzZSAxNikJCUdyaWQgTmV0LCBJbmMuCi0JCQkJMzQwIEJyYW5uYW4gU3RyZWV0Ci0JCQkJU3VpdGUgNTAxCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRUUgICAoaGV4KQkJTkVYVFZJU0lPTiBTSVNURU1BUyBESUdJVEFJUyBERSBURUxFVklTQU8gTFREQS4KLTAwMURFRSAgICAgKGJhc2UgMTYpCQlORVhUVklTSU9OIFNJU1RFTUFTIERJR0lUQUlTIERFIFRFTEVWSVNBTyBMVERBLgotCQkJCUFsYW1lZGEgUmlvIE5lZ3JvLCAxMDMwIC0gMTlvLiBhbmRhciBjb25qLiAxOTA0Ci0JCQkJQmFydWVyaSBTYW8gUGF1bG8gMDY0NTQtMDAwCi0JCQkJQlJBWklMCi0KLTAwLTFELUVGICAgKGhleCkJCVRSSU1NLCBJTkMuCi0wMDFERUYgICAgIChiYXNlIDE2KQkJVFJJTU0sIElOQy4KLQkJCQk0MDcgUkFJTFJPQUQgU1RSRUVUCi0JCQkJQlVUTkVSIE5DIDI3NTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1GMCAgIChoZXgpCQlWaWRpZW50IFN5c3RlbXMsIEluYy4KLTAwMURGMCAgICAgKGJhc2UgMTYpCQlWaWRpZW50IFN5c3RlbXMsIEluYy4KLQkJCQk0MDAwIEJ1cnRvbiBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk0MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1GMSAgIChoZXgpCQlJbnRlZ28gU3lzdGVtcywgSW5jLgotMDAxREYxICAgICAoYmFzZSAxNikJCUludGVnbyBTeXN0ZW1zLCBJbmMuCi0JCQkJNTM0MyBCb3dkZW4gUm9hZAotCQkJCUphY2tzb252aWxsZSBGTCAzMjIxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRjIgICAoaGV4KQkJTmV0ZmxpeCwgSW5jLgotMDAxREYyICAgICAoYmFzZSAxNikJCU5ldGZsaXgsIEluYy4KLQkJCQkxMDAgV2luY2hlc3RlciBDaXJjbGUKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUYzICAgKGhleCkJCVNCUyBTY2llbmNlICYgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAxREYzICAgICAoYmFzZSAxNikJCVNCUyBTY2llbmNlICYgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCVcyLUI1LzYgSGlnaC10ZWNoIGluZHVzdHJpYWwgcGFyawotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xRC1GNCAgIChoZXgpCQlNYWdlbGxhbiBUZWNobm9sb2d5IFB0eSBMaW1pdGVkCi0wMDFERjQgICAgIChiYXNlIDE2KQkJTWFnZWxsYW4gVGVjaG5vbG9neSBQdHkgTGltaXRlZAotCQkJCTY1IEpvaG5zdG9uIFN0cmVldAotCQkJCUFubmFuZGFsZSBOU1cgMjAwMAotCQkJCUFVU1RSQUxJQQotCi0wMC0xRC1GNSAgIChoZXgpCQlTdW5zaGluZSBDbyxMVEQKLTAwMURGNSAgICAgKGJhc2UgMTYpCQlTdW5zaGluZSBDbyxMVEQKLQkJCQkxLTMtNSBLb2ppbWFjaGkKLQkJCQlDaGl5b2RhLWt1Ci0JCQkJVE9LWU8gS2FudG8gcmVnaW9uIDEwMi0wMDgzCi0JCQkJSkFQQU4KLQotMDAtMUQtRjYgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDFERjYgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELUY3ICAgKGhleCkJCVIuIFNUQUhMIFNjaGFsdGdlcmF0ZSBHbWJICi0wMDFERjcgICAgIChiYXNlIDE2KQkJUi4gU1RBSEwgU2NoYWx0Z2VyYXRlIEdtYkgKLQkJCQlhbSBCYWhuaG9mIDMwCi0JCQkJV2FsZGVuYnVyZyBCYWRlbiBXdXJ0dGVtYmVyZyA3NDYzOAotCQkJCUdFUk1BTlkKLQotMDAtMUQtRjggICAoaGV4KQkJV2VicHJvIFZpc2lvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDFERjggICAgIChiYXNlIDE2KQkJV2VicHJvIFZpc2lvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOby41NzMsIENpbmdwaW5nIFJkLgotCQkJCUFucGluZyBEaXN0cmljdCAgNzA4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC1GOSAgIChoZXgpCQlDeWJpb3Ryb25pY3MgKEZhciBFYXN0KSBMaW1pdGVkCi0wMDFERjkgICAgIChiYXNlIDE2KQkJQ3liaW90cm9uaWNzIChGYXIgRWFzdCkgTGltaXRlZAotCQkJCVVuaXQgMTkwNiwgRWFzdGVybiBDZW50cmUsCi0JCQkJMTA2NSBLaW5nJ3MgUm9hZCwKLQkJCQlRdWFycnkgQmF5ICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUQtRkEgICAoaGV4KQkJRnVqaWFuIExBTkRJIENvbW1lcmNpYWwgRXF1aXBtZW50IENvLixMdGQKLTAwMURGQSAgICAgKGJhc2UgMTYpCQlGdWppYW4gTEFOREkgQ29tbWVyY2lhbCBFcXVpcG1lbnQgQ28uLEx0ZAotCQkJCUJ1aWxkaW5nIDIzLHRoZSAxc3Qgc2VjdGlvbixTb2Z0d2FyZSBHYXJkZW4KLQkJCQlOby44OSBTb2Z0d2FyZSBSb2FkLAotCQkJCUZ1emhvdSBGdWppYW4gMzUwMDAzCi0JCQkJQ0hJTkEKLQotMDAtMUQtRkIgICAoaGV4KQkJTkVUQ0xFVVMgU3lzdGVtcyBDb3Jwb3JhdGlvbgotMDAxREZCICAgICAoYmFzZSAxNikJCU5FVENMRVVTIFN5c3RlbXMgQ29ycG9yYXRpb24KLQkJCQkzRiwgRGFpaWNoaS1tYWVkYSBCbGRnLgotCQkJCTMtNS0zLCBZYW1hdG8taGlnYXNoaQotCQkJCVlhbWF0by1zaGkgIDI0Mi0wMDE3Ci0JCQkJSkFQQU4KLQotMDAtMUQtRkMgICAoaGV4KQkJS1NJQwotMDAxREZDICAgICAoYmFzZSAxNikJCUtTSUMKLQkJCQkjNkYsIEtvcmVhIEZlZGVyYXRpb24gb2YgVGVhY2hlcidzIEFzc29jaWF0aW9ucywgMTE0LTEsIFRhZUJvbmctUm8sCi0JCQkJU2VvdWwgU2VvY2hvLUt1IDEzNy03MTUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtRkQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMURGRCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUQtRkUgICAoaGV4KQkJUGFsbSwgSW5jCi0wMDFERkUgICAgIChiYXNlIDE2KQkJUGFsbSwgSW5jCi0JCQkJOTUwIFdlc3QgTWF1ZGUgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1GRiAgIChoZXgpCQlOZXR3b3JrIENyaXRpY2FsIFNvbHV0aW9ucyBMdGQKLTAwMURGRiAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIENyaXRpY2FsIFNvbHV0aW9ucyBMdGQKLQkJCQkxMkIgU291dGh2aWV3IFBhcmsKLQkJCQlDYXZlcnNoYW0KLQkJCQlSZWFkaW5nIEJlcmtzaGlyZSBSRzQ1QUYKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRS0wMCAgIChoZXgpCQlTaGFudG91IEluc3RpdHV0ZSBvZiBVbHRyYXNvbmljIEluc3RydW1lbnRzCi0wMDFFMDAgICAgIChiYXNlIDE2KQkJU2hhbnRvdSBJbnN0aXR1dGUgb2YgVWx0cmFzb25pYyBJbnN0cnVtZW50cwotCQkJCU5vLjc3LCBKaW5zaGEgUm9hZCwKLQkJCQlTaGFudG91IEd1YW5nZG9uZyA1MTUwNDEKLQkJCQlDSElOQQotCi0wMC0xRS0wMSAgIChoZXgpCQlSZW5lc2FzIFRlY2hub2xvZ3kgU2FsZXMgQ28uLCBMdGQuCi0wMDFFMDEgICAgIChiYXNlIDE2KQkJUmVuZXNhcyBUZWNobm9sb2d5IFNhbGVzIENvLiwgTHRkLgotCQkJCTItNi0yCi0JCQkJT3RlbWFjaGkKLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMUUtMDIgICAoaGV4KQkJU291Z291IEtlaWtha3UgS291Z3lvdSBDby4sTHRkLgotMDAxRTAyICAgICAoYmFzZSAxNikJCVNvdWdvdSBLZWlrYWt1IEtvdWd5b3UgQ28uLEx0ZC4KLQkJCQlISzIgYmxkLiAyLTIxLTEwCi0JCQkJTmlzaGlvZ2ltaW5hbWkKLQkJCQlTdWdpbmFtaWt1IFRva3lvIDE2Ny0wMDUzCi0JCQkJSkFQQU4KLQotMDAtMUUtMDMgICAoaGV4KQkJTGlDb21tIENvLiwgTHRkLgotMDAxRTAzICAgICAoYmFzZSAxNikJCUxpQ29tbSBDby4sIEx0ZC4KLQkJCQk5MDgtMSBTRU8tUkksIElET05HLU1ZRU9OCi0JCQkJWU9OR0lOLVNJIEdZRU9OR0dJLURPIDQ0OS04MzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMDQgICAoaGV4KQkJSGFuc29uIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0wMDFFMDQgICAgIChiYXNlIDE2KQkJSGFuc29uIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0JCQkJOTgxMCBWYXJpZWwgQXZlLgotCQkJCUNoYXRzd29ydGggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTA1ICAgKGhleCkJCVhzZWVkIFRlY2hub2xvZ2llcyAmIENvbXB1dGluZwotMDAxRTA1ICAgICAoYmFzZSAxNikJCVhzZWVkIFRlY2hub2xvZ2llcyAmIENvbXB1dGluZwotCQkJCVRvcGF6IEhvdXNlLCBNQVRBTQotCQkJCTUgTmFodW0gSGF0IFN0LgotCQkJCUhhaWZhICAzOTEwMAotCQkJCUlTUkFFTAotCi0wMC0xRS0wNiAgIChoZXgpCQlXSUJSQUlOCi0wMDFFMDYgICAgIChiYXNlIDE2KQkJV0lCUkFJTgotCQkJCTMwNiBKRUkgUGxhdHMgQi9EIDQ1OS0xMSBHYXNhbi1kb25nLCBHZXVtY2hlb24tZ3UKLQkJCQlTRU9VTCAgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS0wNyAgIChoZXgpCQlXaW55IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFFMDcgICAgIChiYXNlIDE2KQkJV2lueSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTMwNS0zMDMsIEJ1Y2hlb24gVGVjaG5vLXBhcmssICMzNjUKLQkJCQlTYW1qZW9uZy1kb25nLCBPamVvbmctZ3UKLQkJCQlCdWNoZW9uIEd5ZW9uZ2dpLWRvIDQyMS03NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMDggICAoaGV4KQkJQ2VudGVjIE5ldHdvcmtzIEluYwotMDAxRTA4ICAgICAoYmFzZSAxNikJCUNlbnRlYyBOZXR3b3JrcyBJbmMKLQkJCQlTY2llbmNlIFBsYXphIDEwRiAsIDMyOCBBaXJwb3J0IFJkCi0JCQkJU3V6aG91IEluZHVzdHJpYWwgUGFyawotCQkJCVN1emhvdSBKaWFuZ3N1IDIxNTAyMQotCQkJCUNISU5BCi0KLTAwLTFFLTA5ICAgKGhleCkJCVpFRkFURUsgQ28uLExURAotMDAxRTA5ICAgICAoYmFzZSAxNikJCVpFRkFURUsgQ28uLExURAotCQkJCTMyNi00IEdhc2FuZG9uZywgR2V1bWNoZW9uZ3UKLQkJCQlTZW91bCAgMTUzLTgwMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS0wQSAgIChoZXgpCQlTeWJhIFRlY2ggTGltaXRlZAotMDAxRTBBICAgICAoYmFzZSAxNikJCVN5YmEgVGVjaCBMaW1pdGVkCi0JCQkJUk0xMzAxLCBWYW50YSBJbmR1c3RyaWFsIENlbnRyZSwKLQkJCQkyMS0zMyBUYWkgTGluIFBhaSBSZC4KLQkJCQlLd2FpIENodW5nICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUUtMEIgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDFFMEIgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTBDICAgKGhleCkJCVNoZXJ3b29kIEluZm9ybWF0aW9uIFBhcnRuZXJzLCBJbmMuCi0wMDFFMEMgICAgIChiYXNlIDE2KQkJU2hlcndvb2QgSW5mb3JtYXRpb24gUGFydG5lcnMsIEluYy4KLQkJCQkxMTIwIFcsIDEyMm5kIEF2ZSwgU3RlIDMwMAotCQkJCVdlc3RtaW5zdGVyIENPIDgwMjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0wRCAgIChoZXgpCQlNaWNyYW4gTHRkLgotMDAxRTBEICAgICAoYmFzZSAxNikJCU1pY3JhbiBMdGQuCi0JCQkJVmVyc2hpbmluYSBzdC4gNDcKLQkJCQlUb21zayBUb21zayBSZWdpb24gNjM0MDM0Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFFLTBFICAgKGhleCkJCU1BWEkgVklFVyBIT0xESU5HUyBMSU1JVEVECi0wMDFFMEUgICAgIChiYXNlIDE2KQkJTUFYSSBWSUVXIEhPTERJTkdTIExJTUlURUQKLQkJCQlTdWl0ZSAyMzAyLDIzL0YgR3JlYXQgRWFnbGUgQ2VudHJlLCAyMyBIYXJib3VyIFJvYWQsIFdhbmNoYWkKLQkJCQlIb25nIEtvbmcgIAotCQkJCUNISU5BCi0KLTAwLTFFLTBGICAgKGhleCkJCUJyaW90IEludGVybmF0aW9uYWwKLTAwMUUwRiAgICAgKGJhc2UgMTYpCQlCcmlvdCBJbnRlcm5hdGlvbmFsCi0JCQkJMiBydWUgcm9nZXIgQm9ubmV0Ci0JCQkJUG9udCBkZSBsJ0FyY2hlIEV1cmUgMjczNDAKLQkJCQlGUkFOQ0UKLQotMDAtMUUtMTAgICAoaGV4KQkJU2hlblpoZW4gSHVhd2VpIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvLixMdGQuCi0wMDFFMTAgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gSHVhd2VpIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJSFVBV0VJIElORFVTVFJJQUwgUEsgQkFOVElBTiwgTE9OR0dBTkcgRElTVCBTSEVOWkhFTgotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgwNzcKLQkJCQlDSElOQQotCi0wMC0xRS0xMSAgIChoZXgpCQlFTEVMVVggSU5URVJOQVRJT05BTCBMVEQKLTAwMUUxMSAgICAgKGJhc2UgMTYpCQlFTEVMVVggSU5URVJOQVRJT05BTCBMVEQKLQkJCQkzRi4sIE5PLjEwMyBDSE9XIFRaRSBTVFJFRVQKLQkJCQlORUktSFUgRElTVFJJQ1QgKDExNCkKLQkJCQlUQUlQRUkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtMTIgICAoaGV4KQkJRWNvbGFiCi0wMDFFMTIgICAgIChiYXNlIDE2KQkJRWNvbGFiCi0JCQkJNjU1IExvbmUgT2FrIERyaXZlCi0JCQkJUmVzZWFyY2ggQ2VudGVyIERvY2sgLS0gRjQ0MTYKLQkJCQlFYWdhbiBNTiA1NTEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMTMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRTEzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTE0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUUxNCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0xNSAgIChoZXgpCQlCZWVjaCBIaWxsIEVsZWN0cm9uaWNzCi0wMDFFMTUgICAgIChiYXNlIDE2KQkJQmVlY2ggSGlsbCBFbGVjdHJvbmljcwotCQkJCUJlZWNoY3JvZnQsIEJlZWNoIEhpbGwgUm9hZAotCQkJCUJlZWNoIEhpbGwKLQkJCQlSZWFkaW5nIEJlcmtzaGlyZSBSRzcgMkFVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtMTYgICAoaGV4KQkJS2V5dHJvbml4Ci0wMDFFMTYgICAgIChiYXNlIDE2KQkJS2V5dHJvbml4Ci0JCQkJVW5nYXJnYXNzZSA2NC02Ni8xLzEwOQotCQkJCVZpZW5uYSAgMTAzMAotCQkJCUFVU1RSSUEKLQotMDAtMUUtMTcgICAoaGV4KQkJU1ROIEJWCi0wMDFFMTcgICAgIChiYXNlIDE2KQkJU1ROIEJWCi0JCQkJQW1lcmlrYXdlZyA0Ci0JCQkJSHVsc3QgWmVlbGFuZCA0NTYxIFBCCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUUtMTggICAoaGV4KQkJUmFkaW8gQWN0aXZpdHkgc3JsCi0wMDFFMTggICAgIChiYXNlIDE2KQkJUmFkaW8gQWN0aXZpdHkgc3JsCi0JCQkJVmlhIFBvbnRlIE51b3ZvIDgKLQkJCQlNaWxhbm8gTUkgMjAxMjgKLQkJCQlJVEFMWQotCi0wMC0xRS0xOSAgIChoZXgpCQlHVFJJCi0wMDFFMTkgICAgIChiYXNlIDE2KQkJR1RSSQotCQkJCU0vUyAwODIxCi0JCQkJQXRsYW50YSBHQSAzMDMzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMUEgICAoaGV4KQkJQmVzdCBTb3VyY2UgVGFpd2FuIEluYy4KLTAwMUUxQSAgICAgKGJhc2UgMTYpCQlCZXN0IFNvdXJjZSBUYWl3YW4gSW5jLgotCQkJCTJGLCBOby4xNiwgTGFuZSA1NiwgSmhvbmdqaGVuZyBXLiBSZC4sCi0JCQkJSmh1YmVpIENpdHksIEhzaW5jaHUgQ291bnR5IDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtMUIgICAoaGV4KQkJRGlnaXRhbCBTdHJlYW0gVGVjaG5vbG9neSwgSW5jLgotMDAxRTFCICAgICAoYmFzZSAxNikJCURpZ2l0YWwgU3RyZWFtIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk0LDUsNnRoIEZsLiwgVGFlQ2hhbmcgQi9ELCA0NTEtMQotCQkJCVN1bmdOYWUtRG9uZywgR2FuZ0RvbmctS3UKLQkJCQlTZW91bCAgMTM0LTAzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS0xQyAgIChoZXgpCQlTV1MgQXVzdHJhbGlhIFB0eSBMaW1pdGVkCi0wMDFFMUMgICAgIChiYXNlIDE2KQkJU1dTIEF1c3RyYWxpYSBQdHkgTGltaXRlZAotCQkJCTIzIFNjYW5sb24gRHJpdmUKLQkJCQlFcHBpbmcgVmljdG9yaWEgMzA3NgotCQkJCUFVU1RSQUxJQQotCi0wMC0xRS0xRCAgIChoZXgpCQlFYXN0IENvYXN0IERhdGFjb20sIEluYy4KLTAwMUUxRCAgICAgKGJhc2UgMTYpCQlFYXN0IENvYXN0IERhdGFjb20sIEluYy4KLQkJCQkyNDUgR3VzIEhpcHAgQmx2ZC4sIFNURSAzCi0JCQkJUm9ja2xlZGdlIEZMIDMyOTU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0xRSAgIChoZXgpCQlIb25leXdlbGwgTGlmZSBTYWZldHkKLTAwMUUxRSAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgTGlmZSBTYWZldHkKLQkJCQkxMiBDbGludG9udmlsbGUgUm9hZAotCQkJCU5vcnRoZm9yZCBDVCAwNDIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0xRiAgIChoZXgpCQlOb3J0ZWwKLTAwMUUxRiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUUtMjAgICAoaGV4KQkJSW50ZXJ0YWluIEluYy4KLTAwMUUyMCAgICAgKGJhc2UgMTYpCQlJbnRlcnRhaW4gSW5jLgotCQkJCVN1aXRlIDYwOCBMRyBFY2xhdC0yLCAyNDUtNCBTZW9oeXVuLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTdW5nbmdtLXNoaSBLeXVuZ2dpLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMjEgICAoaGV4KQkJUWlzZGEgQ28uCi0wMDFFMjEgICAgIChiYXNlIDE2KQkJUWlzZGEgQ28uCi0JCQkJMTU3IFNoYW4tWWluZyBSb2FkLCBHdWVpc2hhbgotCQkJCVRhb3l1YW4gIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtMjIgICAoaGV4KQkJQVJWT08gSW1hZ2luZyBQcm9kdWN0cyBCVgotMDAxRTIyICAgICAoYmFzZSAxNikJCUFSVk9PIEltYWdpbmcgUHJvZHVjdHMgQlYKLQkJCQlQTyBCb3ggNDM5Ci0JCQkJV29lcmRlbiBVVCAzNDQwIEFLCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUUtMjMgICAoaGV4KQkJRWxlY3Ryb25pYyBFZHVjYXRpb25hbCBEZXZpY2VzLCBJbmMKLTAwMUUyMyAgICAgKGJhc2UgMTYpCQlFbGVjdHJvbmljIEVkdWNhdGlvbmFsIERldmljZXMsIEluYwotCQkJCTE5MDMgUyBHcmFudCBTdAotCQkJCURlbnZlciBDTyA4MDIxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMjQgICAoaGV4KQkJWmhlamlhbmcgQmVsbCBUZWNobm9sb2d5IENvLixsdGQKLTAwMUUyNCAgICAgKGJhc2UgMTYpCQlaaGVqaWFuZyBCZWxsIFRlY2hub2xvZ3kgQ28uLGx0ZAotCQkJCTYgWGlkb3VtZW4gUmQuIFdlc3QgTGFrZSBkaXN0cmljdAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMgotCQkJCUNISU5BCi0KLTAwLTFFLTI1ICAgKGhleCkJCUludGVrIERpZ2l0YWwgSW5jCi0wMDFFMjUgICAgIChiYXNlIDE2KQkJSW50ZWsgRGlnaXRhbCBJbmMKLQkJCQkxMTAxLCAxMXRoIEZsLiwgQW55YW5nIEstY2VudGVyIGJ1aWxkaW5nLCAxNTkxLTkKLQkJCQlHd2FueWFuZy1kb25nLCBEb25nYW4tZ3UKLQkJCQlBbnlhbmcgR3llb25nZ2ktZG8gNDMxLTgxNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS0yNiAgIChoZXgpCQlEaWdpZnJpZW5kcyBDby4gTHRkCi0wMDFFMjYgICAgIChiYXNlIDE2KQkJRGlnaWZyaWVuZHMgQ28uIEx0ZAotCQkJCUpveWFuZyBCL0QgNnRoIEZsb29yCi0JCQkJMTEzIFNhbXN1bmctZG9uZywgS2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtMDkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTI3ICAgKGhleCkJCVNCTiBURUNIIENvLixMdGQuCi0wMDFFMjcgICAgIChiYXNlIDE2KQkJU0JOIFRFQ0ggQ28uLEx0ZC4KLQkJCQkjNzA2IEluZHVzdHJpYWwgQWNhZGVtaWMgQ2VudGVyLCBLb25rdWsgVW5pdmVyc2l0eSwgSHdheWFuZy1kb25nLCBHd2FuZ2ppbi1ndQotCQkJCVNlb3VsICAxNDMtNzAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTI4ICAgKGhleCkJCUx1bWV4aXMgQ29ycG9yYXRpb24KLTAwMUUyOCAgICAgKGJhc2UgMTYpCQlMdW1leGlzIENvcnBvcmF0aW9uCi0JCQkJMzE4NCBBaXJ3YXkgQXZlIEJsZGcgRAotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTI5ICAgKGhleCkJCUh5cGVydGhlcm0gSW5jCi0wMDFFMjkgICAgIChiYXNlIDE2KQkJSHlwZXJ0aGVybSBJbmMKLQkJCQkxNSBHcmVhdCBIb2xsb3cgUmQKLQkJCQlQTyBCb3ggNTAxMAotCQkJCUhhbm92ZXIgTkggMDM3NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTJBICAgKGhleCkJCU5ldGdlYXIgSW5jLgotMDAxRTJBICAgICAoYmFzZSAxNikJCU5ldGdlYXIgSW5jLgotCQkJCTQ1MDAgR3JlYXQgQW1lcmljYSBQYXJrd2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTJCICAgKGhleCkJCVJhZGlvIFN5c3RlbXMgRGVzaWduLCBJbmMuCi0wMDFFMkIgICAgIChiYXNlIDE2KQkJUmFkaW8gU3lzdGVtcyBEZXNpZ24sIEluYy4KLQkJCQk2MDEgSGVyb24gRHJpdmUKLQkJCQlMb2dhbiBUd3AgTmV3IEplcnNleSAwODA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMkMgICAoaGV4KQkJQ3lWZXJzZSBDb3Jwb3JhdGlvbgotMDAxRTJDICAgICAoYmFzZSAxNikJCUN5VmVyc2UgQ29ycG9yYXRpb24KLQkJCQlTaG91dG91IFJvdWt1YmFua2FuIEJsZGcuIDRGCi0JCQkJMS0yOC00LCBTaG91dG91Ci0JCQkJU2hpYnV5YS1rdSBUb2t5byAxNTAtMDA0NgotCQkJCUpBUEFOCi0KLTAwLTFFLTJEICAgKGhleCkJCVNUSU0KLTAwMUUyRCAgICAgKGJhc2UgMTYpCQlTVElNCi0JCQkJWkFDIGxlcyBDT1VTVEVMTElFUlMKLQkJCQk2IFJ1ZSBkZSBMJ0FCUklWQURPCi0JCQkJQ0FTVFJJRVMgSEVSQVVMVCAzNDE2MAotCQkJCUZSQU5DRQotCi0wMC0xRS0yRSAgIChoZXgpCQlTSVJUSSBTLnAuQS4KLTAwMUUyRSAgICAgKGJhc2UgMTYpCQlTSVJUSSBTLnAuQS4KLQkJCQlWaWEgU3RhbWlyYSBkJ0FuY29uYSA5Ci0JCQkJTUlMQU4gIDIwMTI3Ci0JCQkJSVRBTFkKLQotMDAtMUUtMkYgICAoaGV4KQkJRGlNb3RvIFB0eSBMdGQKLTAwMUUyRiAgICAgKGJhc2UgMTYpCQlEaU1vdG8gUHR5IEx0ZAotCQkJCTcgTWVsamFyZW4gUGxhY2UKLQkJCQlCdWRlcmltIFF1ZWVuc2xhbmQgNDU1NgotCQkJCUFVU1RSQUxJQQotCi0wMC0xRS0zMCAgIChoZXgpCQlTaGlyZWVuIEluYwotMDAxRTMwICAgICAoYmFzZSAxNikJCVNoaXJlZW4gSW5jCi0JCQkJODUzMSBaaWdneSBMYW5lCi0JCQkJR2FpdGhlcnNidXJnIE1EIDIwODc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0zMSAgIChoZXgpCQlJTkZPTUFSSyBDTy4sTFRELgotMDAxRTMxICAgICAoYmFzZSAxNikJCUlORk9NQVJLIENPLixMVEQuCi0JCQkJNUYuLEdlb3duIEJsZGcuLDEzNjAtNTMKLQkJCQlTZW91bCBTZW9jaG8tZG9uZyxTZW9jaG8tZ3UgMTM3LTg2MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS0zMiAgIChoZXgpCQlaZW5zeXMKLTAwMUUzMiAgICAgKGJhc2UgMTYpCQlaZW5zeXMKLQkJCQlFbWRydXB2ZWogMjYKLQkJCQlDb3BlbmhhZ2VuIE8gIERLLTIxMDAKLQkJCQlERU5NQVJLCi0KLTAwLTFFLTMzICAgKGhleCkJCUludmVudGVjIENvcnBvcmF0aW9uCi0wMDFFMzMgICAgIChiYXNlIDE2KQkJSW52ZW50ZWMgQ29ycG9yYXRpb24KLQkJCQlJbnZlbnRlYyBCdWlsZGluZywgNjYgSG91LUthbmcgU3RyZWV0Ci0JCQkJU2hpbi1MaW4gRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtMzQgICAoaGV4KQkJQ3J5cHRvTWV0cmljcwotMDAxRTM0ICAgICAoYmFzZSAxNikJCUNyeXB0b01ldHJpY3MKLQkJCQkxNjAgTWljaGFlbCBDb3dwbGFuZCBEcgotCQkJCU90dGF3YSBPbnRhcmlvIEsyTSAxUDYKLQkJCQlDQU5BREEKLQotMDAtMUUtMzUgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFFMzUgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gS1lPVE8gNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xRS0zNiAgIChoZXgpCQlJUFRFCi0wMDFFMzYgICAgIChiYXNlIDE2KQkJSVBURQotCQkJCUdlbGVlbmxhYW4gNQotCQkJCUdlbmsgTGltYnVyZyAzNjAwCi0JCQkJQkVMR0lVTQotCi0wMC0xRS0zNyAgIChoZXgpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMUUzNyAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQkxNDEsIExBTkUgMzUxLCBTRUMuMSxUQUlQSU5HIFJELgotCQkJCVRTQU9UVUVOCi0JCQkJTkFOVE9VIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS0zOCAgIChoZXgpCQlCbHVlY2FyZCBTb2Z0d2FyZSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxRTM4ICAgICAoYmFzZSAxNikJCUJsdWVjYXJkIFNvZnR3YXJlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJRC04MDEgU2hhbmdkaSBTY2llbmNlIEJ1aWxkaW5nCi0JCQkJTm8uOCBTaGFuZ2RpIFdlc3QgUm9hZAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTFFLTM5ICAgKGhleCkJCUNvbXN5cyBDb21tdW5pY2F0aW9uIEx0ZC4KLTAwMUUzOSAgICAgKGJhc2UgMTYpCQlDb21zeXMgQ29tbXVuaWNhdGlvbiBMdGQuCi0JCQkJOSBIYW1lbm9maW0gc3QuCi0JCQkJSGVyemVsaWEgIDQ2NzI1Ci0JCQkJSVNSQUVMCi0KLTAwLTFFLTNBICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFFM0EgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUUtM0IgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUUzQiAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUUtM0MgICAoaGV4KQkJTHluZ2JveCBNZWRpYSBBQgotMDAxRTNDICAgICAoYmFzZSAxNikJCUx5bmdib3ggTWVkaWEgQUIKLQkJCQlEaXNrZXR0Z2F0YW4gMTFCCi0JCQkJTGlua29waW5nICBTRS01ODMzNQotCQkJCVNXRURFTgotCi0wMC0xRS0zRCAgIChoZXgpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0wMDFFM0QgICAgIChiYXNlIDE2KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGkKLQkJCQlTb21hIGNpdHkgRnVrdXNoaW0tcHJlZiA5NzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTFFLTNFICAgKGhleCkJCUtNVyBJbmMuCi0wMDFFM0UgICAgIChiYXNlIDE2KQkJS01XIEluYy4KLQkJCQk2NSBZb3VuZ2NodW4tcmksIERvbmd0YW4tbXl1bgotCQkJCUh3YXN1bmctc2kgS3l1bmdraS1kbyA0NDUtODEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTNGICAgKGhleCkJCVRyZWxsaXNXYXJlIFRlY2hub2xvZ2llcywgSW5jLgotMDAxRTNGICAgICAoYmFzZSAxNikJCVRyZWxsaXNXYXJlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE2NTE2IFZpYSBFc3ByaWxsbywgU3VpdGUgMzAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS00MCAgIChoZXgpCQlTaGFuZ2hhaSBEYXJlR2xvYmFsIFRlY2hub2xvZ2llcyAgQ28uLEx0ZC4KLTAwMUU0MCAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBEYXJlR2xvYmFsIFRlY2hub2xvZ2llcyAgQ28uLEx0ZC4KLQkJCQkyMkYsIGxuZm8gVGVjaCBCdWlsZGluZywgTk8uMTU1NSBLb25namlhbmcgUm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAwMDkyCi0JCQkJQ0hJTkEKLQotMDAtMUUtNDEgICAoaGV4KQkJTWljcm93YXZlIENvbW11bmljYXRpb24gJiBDb21wb25lbnQsIEluYy4KLTAwMUU0MSAgICAgKGJhc2UgMTYpCQlNaWNyb3dhdmUgQ29tbXVuaWNhdGlvbiAmIENvbXBvbmVudCwgSW5jLgotCQkJCSMyMDQsIFdPT0xJTSBMSU9OYFMgVkFMTEVZIDIsIDY4MAotCQkJCUdhc2FuLURvbmcsIEdldW1jaG9uLUdVCi0JCQkJU2VvdWwgIDE1MC03ODcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtNDIgICAoaGV4KQkJVGVsdG9uaWthCi0wMDFFNDIgICAgIChiYXNlIDE2KQkJVGVsdG9uaWthCi0JCQkJWmlybXVudSAyNwotCQkJCVZpbG5pdXMgIExUIC0gMDkxMDUKLQkJCQlMSVRIVUFOSUEKLQotMDAtMUUtNDMgICAoaGV4KQkJQUlTSU4gQVcgQ08uLExURC4KLTAwMUU0MyAgICAgKGJhc2UgMTYpCQlBSVNJTiBBVyBDTy4sTFRELgotCQkJCTYtMTggSEFSQVlBTUEKLQkJCQlPS0EtQ0hPCi0JCQkJT0tBWkFLSSBBSUNISSA0NDQtODU2NAotCQkJCUpBUEFOCi0KLTAwLTFFLTQ0ICAgKGhleCkJCVNBTlRFQwotMDAxRTQ0ICAgICAoYmFzZSAxNikJCVNBTlRFQwotCQkJCUFuIGRlciBTdHJ1c2JlayAzMQotCQkJCUFocmVuc2J1cmcgU2NobGVzd2lnIEhvbHN0ZWluIDIyOTI2Ci0JCQkJR0VSTUFOWQotCi0wMC0xRS00NSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotMDAxRTQ1ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTAwLTFFLTQ2ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDFFNDYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS00NyAgIChoZXgpCQlQVC4gSGFyaWZmIERheWEgVHVuZ2dhbCBFbmdpbmVlcmluZwotMDAxRTQ3ICAgICAoYmFzZSAxNikJCVBULiBIYXJpZmYgRGF5YSBUdW5nZ2FsIEVuZ2luZWVyaW5nCi0JCQkJSmwuIFNvZWthcm5vIEhhdHRhIE5vLiA0NTAKLQkJCQlCYW5kdW5nIEphd2EgQmFyYXQgNDAyNjYKLQkJCQlJTkRPTkVTSUEKLQotMDAtMUUtNDggICAoaGV4KQkJV2ktTGlua3MKLTAwMUU0OCAgICAgKGJhc2UgMTYpCQlXaS1MaW5rcwotCQkJCTMzMiBBeWlvdSBzdHJlZXQKLQkJCQlMaW1hc3NvbCAgMzcyNQotCQkJCUNZUFJVUwotCi0wMC0xRS00OSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFNDkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNEEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRTRBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTRCICAgKGhleCkJCUNpdHkgVGhlYXRyaWNhbAotMDAxRTRCICAgICAoYmFzZSAxNikJCUNpdHkgVGhlYXRyaWNhbAotCQkJCTQ3NSBCYXJlbGwgQXZlCi0JCQkJQ2FybHN0YWR0IE5ldyBKZXJzZXkgMDcwNzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTRDICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby4sIEx0ZC4KLTAwMUU0QyAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uLCBMdGQuCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTREICAgKGhleCkJCVdlbGtpbiBTY2llbmNlcywgTExDCi0wMDFFNEQgICAgIChiYXNlIDE2KQkJV2Vsa2luIFNjaWVuY2VzLCBMTEMKLQkJCQkxMDIgUy4gVGVqb24gU3QsIFN1aXRlIDIwMAotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ08gODA5MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTRFICAgKGhleCkJCURBS08gRURWLUluZ2VuaWV1ci0gdW5kIFN5c3RlbWhhdXMgR21iSAotMDAxRTRFICAgICAoYmFzZSAxNikJCURBS08gRURWLUluZ2VuaWV1ci0gdW5kIFN5c3RlbWhhdXMgR21iSAotCQkJCUVybnN0LUhhZWNrZWwtUGxhdHogNS82Ci0JCQkJSmVuYSBUaHVyaW5naWEgMDc3NDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTFFLTRGICAgKGhleCkJCURlbGwgSW5jLgotMDAxRTRGICAgICAoYmFzZSAxNikJCURlbGwgSW5jLgotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNTAgICAoaGV4KQkJQkFUVElTVE9OSSBSRVNFQVJDSAotMDAxRTUwICAgICAoYmFzZSAxNikJCUJBVFRJU1RPTkkgUkVTRUFSQ0gKLQkJCQlQQVJDTyBET05JQ0EgNTYKLQkJCQlGSVNDSUFOTyBTQUxFUk5PIDg0MDg0Ci0JCQkJSVRBTFkKLQotMDAtMUUtNTEgICAoaGV4KQkJQ29udmVydGVyIEluZHVzdHJ5IFNybAotMDAxRTUxICAgICAoYmFzZSAxNikJCUNvbnZlcnRlciBJbmR1c3RyeSBTcmwKLQkJCQlWaWEgRXVjbGlkZSwgMTIKLQkJCQlGb3JsaScgRkMgNDcxMDAKLQkJCQlJVEFMWQotCi0wMC0xRS01MiAgIChoZXgpCQlBcHBsZSBDb21wdXRlciBJbmMKLTAwMUU1MiAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlciBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ2FsaWZvcm5pYSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNTMgICAoaGV4KQkJRnVydGhlciBUZWNoIENvLiwgTFRECi0wMDFFNTMgICAgIChiYXNlIDE2KQkJRnVydGhlciBUZWNoIENvLiwgTFRECi0JCQkJOEYsTk8gNDIxLCBTdW5nc2hhbiBSRC4sVGFpcGVpLCBUYWl3bixSLk8uQy4KLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtNTQgICAoaGV4KQkJVE9ZTyBFTEVDVFJJQyBDb3Jwb3JhdGlvbgotMDAxRTU0ICAgICAoYmFzZSAxNikJCVRPWU8gRUxFQ1RSSUMgQ29ycG9yYXRpb24KLQkJCQkxLTM5IEhJS0lTQVdBCi0JCQkJS0FHSVlBLUNITwotCQkJCUtBU1VHQUkgQUlDSEkgNDgwLTAzOTMKLQkJCQlKQVBBTgotCi0wMC0xRS01NSAgIChoZXgpCQlDT1dPTiBTWVNURU1TLEluYy4KLTAwMUU1NSAgICAgKGJhc2UgMTYpCQlDT1dPTiBTWVNURU1TLEluYy4KLQkJCQk2dGggRmwuIENPV09OIFRPV0VSLDY4OS0zLAotCQkJCVllb2tzYW0tRG9uZyxHYW5nbmFtLUd1LAotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTU2ICAgKGhleCkJCUJhbGx5IFd1bGZmIEVudGVydGFpbm1lbnQgR21iSAotMDAxRTU2ICAgICAoYmFzZSAxNikJCUJhbGx5IFd1bGZmIEVudGVydGFpbm1lbnQgR21iSAotCQkJCU1heWJhY2h1ZmVyIDQ4LTUxCi0JCQkJQmVybGluICAxMjA0NQotCQkJCUdFUk1BTlkKLQotMDAtMUUtNTcgICAoaGV4KQkJQUxDT01BLCBzcG9sLiBzIHIuby4KLTAwMUU1NyAgICAgKGJhc2UgMTYpCQlBTENPTUEsIHNwb2wuIHMgci5vLgotCQkJCUtsdWtvdmljZSAzMTMsIFByYWhhIC0gNQotCQkJCVByYWhhICAxNTIgMDAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0xRS01OCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMUU1OCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOTy4yODksIFNpbmh1IDNyZCBSZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QsIFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtNTkgICAoaGV4KQkJU2lsaWNvbiBUdXJua2V5IEV4cHJlc3MsIExMQwotMDAxRTU5ICAgICAoYmFzZSAxNikJCVNpbGljb24gVHVybmtleSBFeHByZXNzLCBMTEMKLQkJCQk3NDkgTWluZXIgUm9hZAotCQkJCUhpZ2hsYW5kIEhlaWdodHMgT2hpbyA0NDE0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNUEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUU1QSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTVCICAgKGhleCkJCVVuaXRyb24gQ29tcGFueSwgSW5jLgotMDAxRTVCICAgICAoYmFzZSAxNikJCVVuaXRyb24gQ29tcGFueSwgSW5jLgotCQkJCTEwOTI1IE1pbGxlciBSb2FkCi0JCQkJRGFsbGFzIFRYIDc1MjM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS01QyAgIChoZXgpCQlSQiBHZW5lcmFsRWtvbm9taWsKLTAwMUU1QyAgICAgKGJhc2UgMTYpCQlSQiBHZW5lcmFsRWtvbm9taWsKLQkJCQlCdWxldmFyIGRlc3BvdGEgc3RlZmFuYSA1OWEKLQkJCQlCZW9ncmFkIFNlcmJpYSAxMTAwMAotCQkJCVlVR09TTEFWSUEKLQotMDAtMUUtNUQgICAoaGV4KQkJSG9sb3N5cyBkLm8uby4KLTAwMUU1RCAgICAgKGJhc2UgMTYpCQlIb2xvc3lzIGQuby5vLgotCQkJCU1hdGlqZSBHdXBjYSA3Ci0JCQkJT3Jvc2xhdmplICA0OTI0MwotCQkJCUNST0FUSUEKLQotMDAtMUUtNUUgICAoaGV4KQkJQ09tcHV0aW1lIEx0ZC4KLTAwMUU1RSAgICAgKGJhc2UgMTYpCQlDT21wdXRpbWUgTHRkLgotCQkJCTE3L0YgR3JlYXQgRWFnbGUgQ2VudHJlCi0JCQkJMjMgSGFyYm91ciBSb2FkCi0JCQkJV2FuY2hhaSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLTVGICAgKGhleCkJCUt3aWtCeXRlLCBMTEMKLTAwMUU1RiAgICAgKGJhc2UgMTYpCQlLd2lrQnl0ZSwgTExDCi0JCQkJMjQzMCBXLiAxMnRoIFN0cmVldAotCQkJCVRlbXBlIEFaIDg1MjgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS02MCAgIChoZXgpCQlEaWdpdGFsIExpZ2h0aW5nIFN5c3RlbXMsIEluYwotMDAxRTYwICAgICAoYmFzZSAxNikJCURpZ2l0YWwgTGlnaHRpbmcgU3lzdGVtcywgSW5jCi0JCQkJMTIzMDIgU3cgMTI4dGggY3QsICAgIzEwNQotCQkJCU1pYW1pIEZMIDMzMTg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS02MSAgIChoZXgpCQlJVEVDIEdtYkgKLTAwMUU2MSAgICAgKGJhc2UgMTYpCQlJVEVDIEdtYkgKLQkJCQlMYXNzbml0enRoYWwgMzAwCi0JCQkJQS04MjAwICBHbGVpc2RvcmYKLQkJCQlBVVNUUklBCi0KLTAwLTFFLTYyICAgKGhleCkJCVNpZW1vbgotMDAxRTYyICAgICAoYmFzZSAxNikJCVNpZW1vbgotCQkJCTI3IFNpZW1vbiBDb21wYW55IERyaXZlCi0JCQkJV2F0ZXJ0b3duIENUIDA2Nzk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS02MyAgIChoZXgpCQlWaWJyby1NZXRlciBTQQotMDAxRTYzICAgICAoYmFzZSAxNikJCVZpYnJvLU1ldGVyIFNBCi0JCQkJUm91dGUgZGUgTW9uY29yIDQKLQkJCQlGcmlib3VyZyAgQ0gtMTcwMQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFFLTY0ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxRTY0ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUUtNjUgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFFNjUgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRS02NiAgIChoZXgpCQlSRVNPTCBFbGVrdHJvbmlzY2hlIFJlZ2VsdW5nZW4gR21iSAotMDAxRTY2ICAgICAoYmFzZSAxNikJCVJFU09MIEVsZWt0cm9uaXNjaGUgUmVnZWx1bmdlbiBHbWJICi0JCQkJSGVpc2thbXBzdHIuIDEwCi0JCQkJSGF0dGluZ2VuIE5SVyA0NTUyNwotCQkJCUdFUk1BTlkKLQotMDAtMUUtNjcgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFFNjcgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRS02OCAgIChoZXgpCQlRdWFudGEgQ29tcHV0ZXIKLTAwMUU2OCAgICAgKGJhc2UgMTYpCQlRdWFudGEgQ29tcHV0ZXIKLQkJCQlOTy4gMjExLCBXRU4gSFdBIDJSRC4sIEtVRUkgU0hBTiBIU0lBTkcKLQkJCQlUQUlQRUkgVEFPIFlVQU4gU0hJRU4gMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS02OSAgIChoZXgpCQlUaG9tc29uIEluYy4KLTAwMUU2OSAgICAgKGJhc2UgMTYpCQlUaG9tc29uIEluYy4KLQkJCQkxMDEgV2VzdC4gMTAzcmQgU3RyZWV0Ci0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS02QSAgIChoZXgpCQlCZWlqaW5nIEJsdWV4b24gVGVjaG5vbG9neSBDby4sTHRkCi0wMDFFNkEgICAgIChiYXNlIDE2KQkJQmVpamluZyBCbHVleG9uIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCUppbnFpdXpoaWNodW4gNy0zMDEsWmhpY2h1biBSZC4sCi0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4OAotCQkJCUNISU5BCi0KLTAwLTFFLTZCICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YSwgQSBDaXNjbyBDb21wYW55Ci0wMDFFNkIgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBBIENpc2NvIENvbXBhbnkKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNkMgICAoaGV4KQkJQ2FyYm9uIE1vdW50YWluIExMQwotMDAxRTZDICAgICAoYmFzZSAxNikJCUNhcmJvbiBNb3VudGFpbiBMTEMKLQkJCQk0ODIwIEZpc2hlciBSb2FkCi0JCQkJQXRoZW5zIE9IIDQ1NzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS02RCAgIChoZXgpCQlJVCBSJkQgQ2VudGVyCi0wMDFFNkQgICAgIChiYXNlIDE2KQkJSVQgUiZEIENlbnRlcgotCQkJCTQ2MS0yNSwgSmVvbm1pbi1kb25nLFl1c2VvbmctR3UKLQkJCQlEYWVqZW9uICAzMDUtODExCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTZFICAgKGhleCkJCVNoZW56aGVuIEZpcnN0IE1pbGUgQ29tbXVuaWNhdGlvbnMgTHRkCi0wMDFFNkUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gRmlyc3QgTWlsZSBDb21tdW5pY2F0aW9ucyBMdGQKLQkJCQk1dGggRmxvb3IsIEJsb2NrIFIzLUEKLQkJCQlIaWdoLVRlY2ggSW5kdXN0cmlhbCBQYXJrCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTFFLTZGICAgKGhleCkJCU1hZ25hLVBvd2VyIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDFFNkYgICAgIChiYXNlIDE2KQkJTWFnbmEtUG93ZXIgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkzOSBSb3lhbCBSb2FkCi0JCQkJRmxlbWluZ3RvbiBOSiAwODgyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNzAgICAoaGV4KQkJQ29iaGFtIERlZmVuY2UgQ29tbXVuaWNhdGlvbnMgTHRkCi0wMDFFNzAgICAgIChiYXNlIDE2KQkJQ29iaGFtIERlZmVuY2UgQ29tbXVuaWNhdGlvbnMgTHRkCi0JCQkJSGFzbGluZ2RlbiBSb2FkCi0JCQkJQmxhY2tidXJuIExhbmNhc2hpcmUgQkIxIDJFRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFFLTcxICAgKGhleCkJCUlnZWFDYXJlIFN5c3RlbXMgSW5jLgotMDAxRTcxICAgICAoYmFzZSAxNikJCUlnZWFDYXJlIFN5c3RlbXMgSW5jLgotCQkJCTkxIEdyYW50b24gRHJpdmUKLQkJCQlSaWNobW9uZCBIaWxsIE9udGFyaW8gTDRCIDJONQotCQkJCUNBTkFEQQotCi0wMC0xRS03MiAgIChoZXgpCQlQQ1MKLTAwMUU3MiAgICAgKGJhc2UgMTYpCQlQQ1MKLQkJCQlSVUUgU0FJTlQgRVhVUEVSWQotCQkJCUJQNzAzMjIKLQkJCQlMRVNDQVIgUFlSRU5FRVMgQVRMQU5USVFVRVMgNjQyMzAKLQkJCQlGUkFOQ0UKLQotMDAtMUUtNzMgICAoaGV4KQkJWlRFIENPUlBPUkFUSU9OCi0wMDFFNzMgICAgIChiYXNlIDE2KQkJWlRFIENPUlBPUkFUSU9OCi0JCQkJMTIvRiBaVEUgUGxhemEsS2VqaSBSb2FkIFNvdXRoLEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrLE5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR1VBTkdET05HIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTFFLTc0ICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwMUU3NCAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMTQgUnVlIFBhdWwgRGF1dGllcgotCQkJCVZlbGl6eSAgNzg0NTcKLQkJCQlGUkFOQ0UKLQotMDAtMUUtNzUgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MKLTAwMUU3NSAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcwotCQkJCTYwLTM5LEthc2FuLWRvbmcsS3VtY2hvbi1rdQotCQkJCVNlb3VsICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTc2ICAgKGhleCkJCVRoZXJtbyBGaXNoZXIgU2NpZW50aWZpYwotMDAxRTc2ICAgICAoYmFzZSAxNikJCVRoZXJtbyBGaXNoZXIgU2NpZW50aWZpYwotCQkJCTIyMTUgR3JhbmQgQXZlbnVlIFBhcmt3YXkKLQkJCQlBdXN0aW4gVGV4YXMgNzg3MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTc3ICAgKGhleCkJCUFpcjJBcHAKLTAwMUU3NyAgICAgKGJhc2UgMTYpCQlBaXIyQXBwCi0JCQkJNTAgT2xkIEZvcmdlIFJkCi0JCQkJSGFub3ZlciBNQSAwMjMzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNzggICAoaGV4KQkJT3dpdGVrIFRlY2hub2xvZ3kgTHRkLiwKLTAwMUU3OCAgICAgKGJhc2UgMTYpCQlPd2l0ZWsgVGVjaG5vbG9neSBMdGQuLAotCQkJCU5vLjIsIExhbmUgNzgsIENpbmdzaGFuIDZ0aCBTdC4sCi0JCQkJWWFuZ21laSBUb3duc2hpcCwKLQkJCQlUYW95dWFuIENvdW50eSAgMzI2NTcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTc5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUU3OSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS03QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFN0EgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtN0IgICAoaGV4KQkJUi5JLkNPLiBTLnIubC4KLTAwMUU3QiAgICAgKGJhc2UgMTYpCQlSLkkuQ08uIFMuci5sLgotCQkJCXZpYSBBZHJpYXRpY2EsIDE3Ci0JCQkJQ2FzdGVsZmlkYXJkbyBBTiA2MDAyMgotCQkJCUlUQUxZCi0KLTAwLTFFLTdDICAgKGhleCkJCVRhaXdpY2sgTGltaXRlZAotMDAxRTdDICAgICAoYmFzZSAxNikJCVRhaXdpY2sgTGltaXRlZAotCQkJCTUvRi4sIEJsb2NrIEUsIEhpbmcgWWlwIEZhY3RvcnkgQmxkZy4sCi0JCQkJMzEgSGluZyBZaXAgU3RyZWV0LiwgS3d1biBUb25nLCBLbG4uLCBISy4KLQkJCQlDaGluYSA4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMUUtN0QgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDFFN0QgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTdFICAgKGhleCkJCU5vcnRlbAotMDAxRTdFICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xRS03RiAgIChoZXgpCQlDQk0gb2YgQW1lcmljYQotMDAxRTdGICAgICAoYmFzZSAxNikJCUNCTSBvZiBBbWVyaWNhCi0JCQkJMTQ1NSBXZXN0IE5ld3BvcnQgQ2VudGVyIERyaXZlCi0JCQkJRGVlcmZpZWxkIEJlYWNoIEZsb3JpZGEgMzM0NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTgwICAgKGhleCkJCUxhc3QgTWlsZSBMdGQuCi0wMDFFODAgICAgIChiYXNlIDE2KQkJTGFzdCBNaWxlIEx0ZC4KLQkJCQkxMi9GIFZJUCBDb21tZXJjaWFsIENlbnRyZQotCQkJCTEyMCBDYW50b24gUm9hZAotCQkJCVRzaW1zaGF0c3VpICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUUtODEgICAoaGV4KQkJQ05CIFRlY2hub2xvZ3kgSW5jLgotMDAxRTgxICAgICAoYmFzZSAxNikJCUNOQiBUZWNobm9sb2d5IEluYy4KLQkJCQkjNzAxIFN0YXIgVmFsbGV5LCA2MC0xMSBHYXNhbi1Eb25nLAotCQkJCUdldW1jaGVvbi1HdQotCQkJCVNlb3VsICAxNTM3NzcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtODIgICAoaGV4KQkJUGxpYW50IFRlY2hub2xvZ3ksIEluYy4KLTAwMUU4MiAgICAgKGJhc2UgMTYpCQlQbGlhbnQgVGVjaG5vbG9neSwgSW5jLgotCQkJCTYzMCBBbGRlciBEcml2ZSwKLQkJCQlTdWl0ZSAyMDIKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtODMgICAoaGV4KQkJTEFOL01BTiBTdGFuZGFyZHMgQXNzb2NpYXRpb24gKExNU0MpCi0wMDFFODMgICAgIChiYXNlIDE2KQkJTEFOL01BTiBTdGFuZGFyZHMgQXNzb2NpYXRpb24gKExNU0MpCi0JCQkJQy9PIElFRUUgU3RhbmRhcmRzIEFzc29jaWF0aW9uCi0JCQkJNDQ1IEhvZXMgTGFuZSwKLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS04NCAgIChoZXgpCQlQaWthIFRlY2hub2xvZ2llcyBJbmMuCi0wMDFFODQgICAgIChiYXNlIDE2KQkJUGlrYSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTUzNSBMZWdnZXQgRHJpdmUKLQkJCQlTdWl0ZSA0MDAKLQkJCQlPdHRhd2EgT250YXJpbyBLMksgM0I4Ci0JCQkJQ0FOQURBCi0KLTAwLTFFLTg1ICAgKGhleCkJCUxhZ290ZWsgQ29ycG9yYXRpb24KLTAwMUU4NSAgICAgKGJhc2UgMTYpCQlMYWdvdGVrIENvcnBvcmF0aW9uCi0JCQkJMTE2NjEgU0UgMXN0IFN0LiAjMjA4Ci0JCQkJQmVsbGV2dWUgV0EgOTgwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTg2ICAgKGhleCkJCU1FTCBDby4sTHRkLgotMDAxRTg2ICAgICAoYmFzZSAxNikJCU1FTCBDby4sTHRkLgotCQkJCVRzdWthZ29zaGkgNS01LTEsV2FyYWJpLXNoaSxTYWl0YW1hLEphcG5hCi0JCQkJV2FyYWJpIFNhaXRhbWEgMzM1LTAwMDIKLQkJCQlKQVBBTgotCi0wMC0xRS04NyAgIChoZXgpCQlSZWFsZWFzZSBMaW1pdGVkCi0wMDFFODcgICAgIChiYXNlIDE2KQkJUmVhbGVhc2UgTGltaXRlZAotCQkJCTE1L0YsIE1vcnJpc29uIENvbW1lcmNpYWwgQnVpbGRpbmcKLQkJCQkzMSBNb3JyaXNvbiBIaWxsIFJvYWQKLQkJCQlXYW5DaGFpICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUUtODggICAoaGV4KQkJQU5ET1IgU1lTVEVNIFNVUFBPUlQgQ08uLCBMVEQuCi0wMDFFODggICAgIChiYXNlIDE2KQkJQU5ET1IgU1lTVEVNIFNVUFBPUlQgQ08uLCBMVEQuCi0JCQkJTWluYW1pLVNoaW5hZ2F3YSAyLTE1LTgKLQkJCQlTaW5hZ2F3YSBUb2t5byAxNDAtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTFFLTg5ICAgKGhleCkJCUNSRlMgTGltaXRlZAotMDAxRTg5ICAgICAoYmFzZSAxNikJCUNSRlMgTGltaXRlZAotCQkJCUJ1aWxkaW5nIDcyMDAKLQkJCQlDYW1icmlkZ2UgUmVzZWFyY2ggUGFyawotCQkJCVdhdGVyYmVhY2ggQ2FtYnJpZGdlc2hpcmUgQ0IyNSA5VEwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRS04QSAgIChoZXgpCQllQ29weSwgSW5jCi0wMDFFOEEgICAgIChiYXNlIDE2KQkJZUNvcHksIEluYwotCQkJCTEgT3JhY2xlIERyCi0JCQkJTmFzaHVhIE5IIDAzMDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS04QiAgIChoZXgpCQlJbmZyYSBBY2Nlc3MgS29yZWEgQ28uLCBMdGQuCi0wMDFFOEIgICAgIChiYXNlIDE2KQkJSW5mcmEgQWNjZXNzIEtvcmVhIENvLiwgTHRkLgotCQkJCTlGIERhZXlhbmcgQi9ELAotCQkJCTczNS0xMSBCb25nY2h1biAxZG9uZywKLQkJCQlLd2FuYWstZ3UsIFNlb3VsIDE1MS04MzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtOEMgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDFFOEMgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS04RCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxRThEICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIFVTIDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElsbGlub2lzIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS04RSAgIChoZXgpCQlIdW5rZWxlciBBRwotMDAxRThFICAgICAoYmFzZSAxNikJCUh1bmtlbGVyIEFHCi0JCQkJQmFobmhvZnN0cmFzc2UgMzEKLQkJCQlXaWtvbiBDSCA0ODA2Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUUtOEYgICAoaGV4KQkJQ0FOT04gSU5DLgotMDAxRThGICAgICAoYmFzZSAxNikJCUNBTk9OIElOQy4KLQkJCQkzLTMwLTIKLQkJCQlTaGltb21hcnVrbwotCQkJCU9odGEtS3UgVG9reW8gMTQ2LTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xRS05MCAgIChoZXgpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMgQ28KLTAwMUU5MCAgICAgKGJhc2UgMTYpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMgQ28KLQkJCQlOby4yMzksIFNlYy4gMiwgVGkgRGluZyBCbHZkCi0JCQkJVGFpcGVpICAxMTQ5MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtOTEgICAoaGV4KQkJS0lNSU4gRWxlY3Ryb25pYyBDby4sIEx0ZC4KLTAwMUU5MSAgICAgKGJhc2UgMTYpCQlLSU1JTiBFbGVjdHJvbmljIENvLiwgTHRkLgotCQkJCTI5My00LCBEb25nZGFuLURvbmcKLQkJCQlHdW1pLWNpdHkgR3llb25nQnVrIDczMC05MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtOTIgICAoaGV4KQkJSkVVTElOIFMuQS4KLTAwMUU5MiAgICAgKGJhc2UgMTYpCQlKRVVMSU4gUy5BLgotCQkJCVpJIE4/MQotCQkJCXJ1ZSBKYWNxdWVzIE1vbm9kCi0JCQkJRXZyZXV4ICBGMjcwMTkKLQkJCQlGUkFOQ0UKLQotMDAtMUUtOTMgICAoaGV4KQkJQ2lyaVRlY2ggU3lzdGVtcyBJbmMKLTAwMUU5MyAgICAgKGJhc2UgMTYpCQlDaXJpVGVjaCBTeXN0ZW1zIEluYwotCQkJCTkyMCBIaWxsdmlldyBDdAotCQkJCSMxNzAKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtOTQgICAoaGV4KQkJU1VQRVJDT00gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDAxRTk0ICAgICAoYmFzZSAxNikJCVNVUEVSQ09NIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQk4RiwgTk8gMTAwLTEsIE1pbmctQ2h1YW4gUmQuCi0JCQkJU2hpbmcgVGllbiBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS05NSAgIChoZXgpCQlTSUdNQUxJTksKLTAwMUU5NSAgICAgKGJhc2UgMTYpCQlTSUdNQUxJTksKLQkJCQlEb29TYW4gVmVudHVyZURpZ20gMTAyOCwKLQkJCQkxMjYtMSBQeXVuZ2Nob24tZG9uZywgRG9uZ2FuLUt1Ci0JCQkJQW55YW5nLUNpdHkgS3l1bmdnaS1kbyA0MzEtMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTk2ICAgKGhleCkJCVNlcHVyYSBQbGMKLTAwMUU5NiAgICAgKGJhc2UgMTYpCQlTZXB1cmEgUGxjCi0JCQkJUmFkaW8gSG91c2UKLQkJCQlTdCBBbmRyZXdzIFJvYWQKLQkJCQlDYW1icmlkZ2UgQ0FNQlJJREdFU0hJUkUgQ0I0IDFHUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFFLTk3ICAgKGhleCkJCU1lZGl1bSBMaW5rIFN5c3RlbSBUZWNobm9sb2d5IENPLiwgTFRELAotMDAxRTk3ICAgICAoYmFzZSAxNikJCU1lZGl1bSBMaW5rIFN5c3RlbSBUZWNobm9sb2d5IENPLiwgTFRELAotCQkJCTExRi4tMiwgTm8uNywgQWxsZXkgOTIsIExhbmUgNzcsIFNlYy4gNCwgU2luaGFpIFJkLiwKLQkJCQlXdW5zaGFuIERpc3RyaWN0LCBUYWlwZWkgMTE2OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTk4ICAgKGhleCkJCUdyZWVuTGluZSBDb21tdW5pY2F0aW9ucwotMDAxRTk4ICAgICAoYmFzZSAxNikJCUdyZWVuTGluZSBDb21tdW5pY2F0aW9ucwotCQkJCUFscmFiaWFoLCBBbHJhYmVlYSBzdHJlZXQKLQkJCQlCdWlsZGluZyA4LCBQLk8uIEJveCA5MjEKLQkJCQlBbW1hbiBDZW50cmFsIFJlZ2lvbiAxMTk1MwotCQkJCUpPUkRBTgotCi0wMC0xRS05OSAgIChoZXgpCQlWYW50YW5vbCBJbmR1c3RyaWFsIENvcnBvcmF0aW9uCi0wMDFFOTkgICAgIChiYXNlIDE2KQkJVmFudGFub2wgSW5kdXN0cmlhbCBDb3Jwb3JhdGlvbgotCQkJCTlGLCBOTyAzMSAuIFNoaW4tVGFpIFJvYWQKLQkJCQlKdWJlaSBDaXR5IFNoaW5jaHUgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS05QSAgIChoZXgpCQlIQU1JTFRPTiBCb25hZHV6IEFHCi0wMDFFOUEgICAgIChiYXNlIDE2KQkJSEFNSUxUT04gQm9uYWR1eiBBRwotCQkJCVZpYSBDcnVzY2ggOAotCQkJCUJvbmFkdXogR3JhdWJ1ZW5kZW4gNzQwMgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFFLTlCICAgKGhleCkJCVNhbi1FaXNoYSwgTHRkLgotMDAxRTlCICAgICAoYmFzZSAxNikJCVNhbi1FaXNoYSwgTHRkLgotCQkJCTItMSBFYmFyYSA1LWNob21lCi0JCQkJU2hpbmFnYXdhLWt1IFRva3lvIDE0Mi04NjExCi0JCQkJSkFQQU4KLQotMDAtMUUtOUMgICAoaGV4KQkJRmlkdXN0cm9uIElOQwotMDAxRTlDICAgICAoYmFzZSAxNikJCUZpZHVzdHJvbiBJTkMKLQkJCQlOTy43NzAtNiwgSmhvbmdpaGVuZyBSZC4KLQkJCQlKaG9uZ2hlIENpdHkgVGFpcGVpIENvdW50eSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTlEICAgKGhleCkJCVJlY2FsbCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMUU5RCAgICAgKGJhc2UgMTYpCQlSZWNhbGwgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTMwIEVudGVycHJpc2UgQXZlLgotCQkJCVN1aXRlIEYKLQkJCQlQYWxtIEJheSBGTCAzMjkwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtOUUgICAoaGV4KQkJZGRtIGhvcHQgKyBzY2h1bGVyIEdtYmggKyBDby4gS0cKLTAwMUU5RSAgICAgKGJhc2UgMTYpCQlkZG0gaG9wdCArIHNjaHVsZXIgR21iaCArIENvLiBLRwotCQkJCUtvZW5pZ3NiZXJnZXIgU3RyYXNzZSAxMgotCQkJCVJvdHR3ZWlsIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3ODYyNgotCQkJCUdFUk1BTlkKLQotMDAtMUUtOUYgICAoaGV4KQkJVmlzaW9uZWVyaW5nIFN5c3RlbXMsIEluYy4KLTAwMUU5RiAgICAgKGJhc2UgMTYpCQlWaXNpb25lZXJpbmcgU3lzdGVtcywgSW5jLgotCQkJCTU5MzEgU2VhIExpb24gUGxhY2UKLQkJCQlTdWl0ZSAxMDkKLQkJCQlDYXJsc2JhZCBDYWxpZm9ybmlhIDkyMDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1BMCAgIChoZXgpCQlYTE4tdAotMDAxRUEwICAgICAoYmFzZSAxNikJCVhMTi10Ci0JCQkJSG9vZ3N0cmFhdCA1MgotCQkJCVB1dHRlIEFudHdlcnAgQjI1ODAKLQkJCQlCRUxHSVVNCi0KLTAwLTFFLUExICAgKGhleCkJCUJydW5hdGEgYS9zCi0wMDFFQTEgICAgIChiYXNlIDE2KQkJQnJ1bmF0YSBhL3MKLQkJCQlWZXN0ZXJsdW5kdmVqIDE0Ci0JCQkJSGVybGV2ICAyNzMwCi0JCQkJREVOTUFSSwotCi0wMC0xRS1BMiAgIChoZXgpCQlTeW14IFN5c3RlbXMsIEluYy4KLTAwMUVBMiAgICAgKGJhc2UgMTYpCQlTeW14IFN5c3RlbXMsIEluYy4KLQkJCQk2MzIwIE5XIDg0dGggQXZlbnVlCi0JCQkJTWlhbWkgRmxvcmlkYSAzMzE2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQTMgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUVBMyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUUtQTQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUVBNCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUUtQTUgICAoaGV4KQkJUk9CT1RPVVMsIEluYy4KLTAwMUVBNSAgICAgKGJhc2UgMTYpCQlST0JPVE9VUywgSW5jLgotCQkJCU5leCBDZW50ZXItMjAxKExhYi4pLCBTSyBuIFRlY2hub3BhcmsKLQkJCQlTYW5nZGFld29uLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjItMTIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLUE2ICAgKGhleCkJCUJlc3QgSVQgV29ybGQgKEluZGlhKSBQdnQuIEx0ZC4KLTAwMUVBNiAgICAgKGJhc2UgMTYpCQlCZXN0IElUIFdvcmxkIChJbmRpYSkgUHZ0LiBMdGQuCi0JCQkJODcvNzAvOTMgTWlzdHJ5IEluZHVzdHJpYWwgQ29tcGxleCwKLQkJCQlNSURDIENyb3NzIFJvYWQgJ0EnLCBBbmRoZXJpIChFYXN0KQotCQkJCU11bWJhaSBNYWhhcmFzaHRyYSA0MDAwOTMKLQkJCQlJTkRJQQotCi0wMC0xRS1BNyAgIChoZXgpCQlBY3Rpb25UZWMgRWxlY3Ryb25pY3MsIEluYwotMDAxRUE3ICAgICAoYmFzZSAxNikJCUFjdGlvblRlYyBFbGVjdHJvbmljcywgSW5jCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1BOCAgIChoZXgpCQlEYXRhbmcgTW9iaWxlIENvbW11bmljYXRpb25zIEVxdWlwbWVudCBDTy4sTFRECi0wMDFFQTggICAgIChiYXNlIDE2KQkJRGF0YW5nIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBFcXVpcG1lbnQgQ08uLExURAotCQkJCU5vLjI5LFh1ZXl1YW4gUmQuLEhhaWRpYW4gRGlzdHJpY3QsQmVpamluZywxMDAwODMgUC5SLkNoaW5hCi0JCQkJQmVpamluZyAgMTAwMDgzCi0JCQkJQ0hJTkEKLQotMDAtMUUtQTkgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFFQTkgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gS1lPVE8gNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xRS1BQSAgIChoZXgpCQlFLVNlbnphIFRlY2hub2xvZ2llcyBHbWJICi0wMDFFQUEgICAgIChiYXNlIDE2KQkJRS1TZW56YSBUZWNobm9sb2dpZXMgR21iSAotCQkJCUJsYXJlcnN0cmFzc2UgNTYKLQkJCQlLb25zdGFueiBCVyA3ODQ2MgotCQkJCUdFUk1BTlkKLQotMDAtMUUtQUIgICAoaGV4KQkJVGVsZVdlbGwgT3kKLTAwMUVBQiAgICAgKGJhc2UgMTYpCQlUZWxlV2VsbCBPeQotCQkJCUFsYWhvdGllIDE0IGIKLQkJCQlKYXJ2ZW5wYWEgVXVzaW1hYSAwNDQzMAotCQkJCUZJTkxBTkQKLQotMDAtMUUtQUMgICAoaGV4KQkJQXJtYWRldXMgU3lzdGVtcwotMDAxRUFDICAgICAoYmFzZSAxNikJCUFybWFkZXVzIFN5c3RlbXMKLQkJCQlUZWNobm9wb2xlIC0gIDQwLCBydWUgTWFyYyBTZWd1aW4KLQkJCQlCUCAyMTE4Ci0JCQkJTVVMSE9VU0UgY2VkZXggSGF1dC1SaGluIDY4MDYwCi0JCQkJRlJBTkNFCi0KLTAwLTFFLUFEICAgKGhleCkJCVdpbmd0ZWNoIEdyb3VwIExpbWl0ZWQKLTAwMUVBRCAgICAgKGJhc2UgMTYpCQlXaW5ndGVjaCBHcm91cCBMaW1pdGVkCi0JCQkJNnRoIGZsb29yLCBVbml0IEcsIE5vLjY2OCwgRWFzdCBCZWlqaW5nIFJvYWQsCi0JCQkJU2hhbmdoYWkgIDIwMDAwMQotCQkJCUNISU5BCi0KLTAwLTFFLUFFICAgKGhleCkJCUNvbnRpbmVudGFsIEF1dG9tb3RpdmUgU3lzdGVtcwotMDAxRUFFICAgICAoYmFzZSAxNikJCUNvbnRpbmVudGFsIEF1dG9tb3RpdmUgU3lzdGVtcwotCQkJCTIxNDQwIFdlc3QgTGFrZSBDb29rIFJvYWQKLQkJCQlEZWVyIFBhcmsgSUwgNjAwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUFGICAgKGhleCkJCU9waGlyIE9wdHJvbmljcyBMdGQKLTAwMUVBRiAgICAgKGJhc2UgMTYpCQlPcGhpciBPcHRyb25pY3MgTHRkCi0JCQkJUE9CIDQ1MDIxCi0JCQkJSmVydXNhbGVtICA5MTQ1MAotCQkJCUlTUkFFTAotCi0wMC0xRS1CMCAgIChoZXgpCQlJbWVzRCBFbGVjdHJvbmljYSBTLkwuCi0wMDFFQjAgICAgIChiYXNlIDE2KQkJSW1lc0QgRWxlY3Ryb25pY2EgUy5MLgotCQkJCUVudGVuY2EgODEKLQkJCQlCYXJjZWxvbmEgIDA4MDE1Ci0JCQkJU1BBSU4KLQotMDAtMUUtQjEgICAoaGV4KQkJQ3J5cHRzb2Z0IFB0eSBMdGQKLTAwMUVCMSAgICAgKGJhc2UgMTYpCQlDcnlwdHNvZnQgUHR5IEx0ZAotCQkJCVAuTy4gQm94IDYzODkKLQkJCQlGYWlyZmllbGQgR2FyZGVucyBRdWVlbnNsYW5kIDQxMDMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUUtQjIgICAoaGV4KQkJTEcgaW5ub3RlawotMDAxRUIyICAgICAoYmFzZSAxNikJCUxHIGlubm90ZWsKLQkJCQlIYW55YW5nIFVuaXYuIDEyNzEsIFNhLWRvbmcsIFNhbmdyb2stZ3UKLQkJCQlBbnNhbi1zaSBHeWVvbmdnaS1kbyA0MjYtNzkxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLUIzICAgKGhleCkJCVByaW1leCBXaXJlbGVzcwotMDAxRUIzICAgICAoYmFzZSAxNikJCVByaW1leCBXaXJlbGVzcwotCQkJCTk2NSBXZWxscyBTdHJlZXQKLQkJCQlMYWtlIEdlbmV2YSBXSSA1MzE0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQjQgICAoaGV4KQkJVU5JRkFUIFRFQ0hOT0xPR1kgTFRELgotMDAxRUI0ICAgICAoYmFzZSAxNikJCVVOSUZBVCBURUNITk9MT0dZIExURC4KLQkJCQk3L0ZMT09SIFNVSSBIT05HIElORC4gQkxERy4sCi0JCQkJNTQ3LTU0OSBDQVNUTEUgUEVBSyBST0FECi0JCQkJS1dBSSBDSFVORywgTi5ULiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUUtQjUgICAoaGV4KQkJRXZlciBTcGFya2xlIFRlY2hub2xvZ2llcyBMdGQKLTAwMUVCNSAgICAgKGJhc2UgMTYpCQlFdmVyIFNwYXJrbGUgVGVjaG5vbG9naWVzIEx0ZAotCQkJCVVuaXQgNDAzLCBOYW4gRnVuZyBDb21tZXJjaWFsIENlbnRyZQotCQkJCTE5LCBMYW0gTG9rIFN0LgotCQkJCUtvd2xvb24gQmF5IEtvd2xvb24gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLUI2ICAgKGhleCkJCVRBRyBIZXVlciBTQQotMDAxRUI2ICAgICAoYmFzZSAxNikJCVRBRyBIZXVlciBTQQotCQkJCVJ1ZSBMb3Vpcy1Kb3NlcGggQ2hldnJvbGV0IDZBCi0JCQkJbGEgQ2hhdXgtZGUtRm9uZHMgTkUgMjMwMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFFLUI3ICAgKGhleCkJCVRCVGVjaCwgQ28uLCBMdGQuCi0wMDFFQjcgICAgIChiYXNlIDE2KQkJVEJUZWNoLCBDby4sIEx0ZC4KLQkJCQkxMTA5LCBIeXVuZGFpIEtyaW0sIDEzMzAtMTgsIFNlb2Noby1kb25nLAotCQkJCVNlb2Noby1HdSwKLQkJCQlTZW91bCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS1COCAgIChoZXgpCQlGb3J0aXMsIEluYy4KLTAwMUVCOCAgICAgKGJhc2UgMTYpCQlGb3J0aXMsIEluYy4KLQkJCQkjNTAyIFRlY2hubyBwbGF6YSwgMTQ5LTEwIFlhdGFwLWRvbmcsCi0JCQkJQnVuZGFuZy1ndSwKLQkJCQlTZW9uZ25hbS1zaSwgR3llb25nZ2ktZG8sIDQ2My04MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtQjkgICAoaGV4KQkJU2luZyBGYWkgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDFFQjkgICAgIChiYXNlIDE2KQkJU2luZyBGYWkgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJTm8uNzAwLCBLYW9oc2l1bmcgVW5pdmVyc2l0eSBSZC4sIE5hbi1UenUgRGlzdC4KLQkJCQlOVUsgQWR2YW5jZWQgQnVzaW5lc3MgSW5jdWJhdGlvbiBDZW50ZXIKLQkJCQlLYW9oc2l1bmcgIDgxMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtQkEgICAoaGV4KQkJSGlnaCBEZW5zaXR5IERldmljZXMgQVMKLTAwMUVCQSAgICAgKGJhc2UgMTYpCQlIaWdoIERlbnNpdHkgRGV2aWNlcyBBUwotCQkJCVZlc3RyZSBTdHJhbmRnYXRlIDI2Ci0JCQkJS3Jpc3RpYW5zYW5kICA0NjExCi0JCQkJTk9SV0FZCi0KLTAwLTFFLUJCICAgKGhleCkJCUJMVUVMSUdIVCBURUNITk9MT0dZIElOQy4KLTAwMUVCQiAgICAgKGJhc2UgMTYpCQlCTFVFTElHSFQgVEVDSE5PTE9HWSBJTkMuCi0JCQkJNjQ3MiBDQU1ERU4gQVZFLiwgU1VJVEUgMTAyQgotCQkJCVNBTiBKT1NFIENBIDk1MTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1CQyAgIChoZXgpCQlXSU5URUNIIEFVVE9NQVRJT04gQ08uLExURC4KLTAwMUVCQyAgICAgKGJhc2UgMTYpCQlXSU5URUNIIEFVVE9NQVRJT04gQ08uLExURC4KLQkJCQkjMTExNSwgVEFFS1dBTkcgQkxWRC4KLQkJCQlZT1VOR1JPTkctRE9ORywgWU9VTkdUT05HLUdVCi0JCQkJU1VXT04tU0kgS1lVTkdHSSA0NDMtODE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLUJEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUVCRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1CRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFQkUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQkYgICAoaGV4KQkJSGFhcyBBdXRvbWF0aW9uIEluYy4KLTAwMUVCRiAgICAgKGJhc2UgMTYpCQlIYWFzIEF1dG9tYXRpb24gSW5jLgotCQkJCTI4MDAgU3R1cmdpcyBSZAotCQkJCU94bmFyZCBDQSA5MzAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQzAgICAoaGV4KQkJTWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLgotMDAxRUMwICAgICAoYmFzZSAxNikJCU1pY3JvY2hpcCBUZWNobm9sb2d5IEluYy4KLQkJCQkyMzU1IFcuIENoYW5kbGVyIEJsdmQuLAotCQkJCUNoYW5kbGVyIEFaIDg1MjI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1DMSAgIChoZXgpCQkzQ09NIEVVUk9QRSBMVEQKLTAwMUVDMSAgICAgKGJhc2UgMTYpCQkzQ09NIEVVUk9QRSBMVEQKLQkJCQlQZW9wbGVidWlsZGluZyAyCi0JCQkJTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhFUlRTLiBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtQzIgICAoaGV4KQkJQXBwbGUsIEluYwotMDAxRUMyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluaWZpbnRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUMzICAgKGhleCkJCUtvemlvLCBJbmMuCi0wMDFFQzMgICAgIChiYXNlIDE2KQkJS296aW8sIEluYy4KLQkJCQkyNDAwIFRyYWRlIENlbnRyZSBBdmUKLQkJCQlMb25nbW9udCBDTyA4MDUwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQzQgICAoaGV4KQkJQ2VsaW8gQ29ycAotMDAxRUM0ICAgICAoYmFzZSAxNikJCUNlbGlvIENvcnAKLQkJCQkyNjUgRSAxMDAgUyAgIyAyODAKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQzUgICAoaGV4KQkJTWlkZGxlIEF0bGFudGljIFByb2R1Y3RzIEluYwotMDAxRUM1ICAgICAoYmFzZSAxNikJCU1pZGRsZSBBdGxhbnRpYyBQcm9kdWN0cyBJbmMKLQkJCQkzMDAgRmFpcmZpZWxkIFJvYWQKLQkJCQlGYWlyZmllbGQgTkogMDcwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUM2ICAgKGhleCkJCU9idml1cyBIb2xkaW5ncyBMTEMKLTAwMUVDNiAgICAgKGJhc2UgMTYpCQlPYnZpdXMgSG9sZGluZ3MgTExDCi0JCQkJMjA4MTEgTlcgQ29ybmVsbCBSb2FkCi0JCQkJU3VpdGUgNzAwCi0JCQkJSGlsbHNib3JvIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1DNyAgIChoZXgpCQkyV2lyZQotMDAxRUM3ICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTcwNCBBdXRvbWF0aW9uIFBya3d5Ci0JCQkJU2FuIEpvc2UgQ2EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUM4ICAgKGhleCkJCVJhcGlkIE1vYmlsZSAoUHR5KSBMdGQKLTAwMUVDOCAgICAgKGJhc2UgMTYpCQlSYXBpZCBNb2JpbGUgKFB0eSkgTHRkCi0JCQkJQnVpbGRpbmcgQyxELEUgQXBleCBDb3Jwb3JhdGUgUGFyawotCQkJCVF1aW50aW4gQnJhbmQgU3RyZWV0LCBQZXJzZXF1b3IgVGVjaG5vcGFyawotCQkJCVByZXRvcmlhIEdhdXRlbmcgMDAyMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xRS1DOSAgIChoZXgpCQlEZWxsIEluYwotMDAxRUM5ICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1DQSAgIChoZXgpCQlOb3J0ZWwKLTAwMUVDQSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUUtQ0IgICAoaGV4KQkJIlJQQyAiRW5lcmdvYXV0b21hdGlrYSIgTHRkCi0wMDFFQ0IgICAgIChiYXNlIDE2KQkJIlJQQyAiRW5lcmdvYXV0b21hdGlrYSIgTHRkCi0JCQkJS3Jhc25va2F6YXJtZW5uYXlhIHN0LiwgMTMvMQotCQkJCU1vc2NvdyAgMTExMjUwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFFLUNDICAgKGhleCkJCUNEVkkKLTAwMUVDQyAgICAgKGJhc2UgMTYpCQlDRFZJCi0JCQkJMzEgQXZlbnVlIGR1IEdlbmVyYWwgTGVjbGVyYwotCQkJCVBBTlRJTiBJbGUgZGUgRnJhbmNlIDkzNTAwCi0JCQkJRlJBTkNFCi0KLTAwLTFFLUNEICAgKGhleCkJCUtZTEFORAotMDAxRUNEICAgICAoYmFzZSAxNikJCUtZTEFORAotCQkJCU5vOTUgQnVpbGRpbmcsCi0JCQkJU291dGhlYXN0IENvcm5lciBvZiBYaXNhbnFpIEJyaWRnZSwKLQkJCQlIYWlkaWFuIEJlaWppbmcgMTAwMDk2Ci0JCQkJQ0hJTkEKLQotMDAtMUUtQ0UgICAoaGV4KQkJQklTQSBUZWNobm9sb2dpZXMgKEhvbmcgS29uZykgTGltaXRlZAotMDAxRUNFICAgICAoYmFzZSAxNikJCUJJU0EgVGVjaG5vbG9naWVzIChIb25nIEtvbmcpIExpbWl0ZWQKLQkJCQkxMTAyLCBUcmFucyBBc2lhIENlbnRyZSwKLQkJCQkxOCBLaW4gSG9uZyBTdHJlZXQsCi0JCQkJS3dhaSBDaHVuZyAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLUNGICAgKGhleCkJCVBISUxJUFMgRUxFQ1RST05JQ1MgVUsgTFRECi0wMDFFQ0YgICAgIChiYXNlIDE2KQkJUEhJTElQUyBFTEVDVFJPTklDUyBVSyBMVEQKLQkJCQlQSElMSVBTIENFTlRSRQotCQkJCUdVSUxERk9SRCBCVVNJTkVTUyBQQVJLCi0JCQkJR1VJTERGT1JEIFNVUlJFWSBHVTIgOFhICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtRDAgICAoaGV4KQkJQ09OTkVYSVVNCi0wMDFFRDAgICAgIChiYXNlIDE2KQkJQ09OTkVYSVVNCi0JCQkJMzkgTCdBTEJBUkVERQotCQkJCUFVWklFTExFICAzMTY1MAotCQkJCUZSQU5DRQotCi0wMC0xRS1EMSAgIChoZXgpCQlLZXlwcm9jZXNzb3IgQi5WLgotMDAxRUQxICAgICAoYmFzZSAxNikJCUtleXByb2Nlc3NvciBCLlYuCi0JCQkJUGFhc2hldXZlbHdlZyAyMAotCQkJCUFtc3RlcmRhbSBOSCAxMTA1IEJKCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUUtRDIgICAoaGV4KQkJUmF5IFNoaW5lIFZpZGVvIFRlY2hub2xvZ3kgSW5jCi0wMDFFRDIgICAgIChiYXNlIDE2KQkJUmF5IFNoaW5lIFZpZGVvIFRlY2hub2xvZ3kgSW5jCi0JCQkJNkYsTm8uOTgsU2VjLjEsWGludGFpIDV0aCBSZC4KLQkJCQlYaXpoaSBDaXR5IFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS1EMyAgIChoZXgpCQlEb3QgVGVjaG5vbG9neSBJbnQnbCBDby4sIEx0ZC4KLTAwMUVEMyAgICAgKGJhc2UgMTYpCQlEb3QgVGVjaG5vbG9neSBJbnQnbCBDby4sIEx0ZC4KLQkJCQlVbml0IDEwMDEsIEZvdXJzZWFzIEJ1aWxkaW5nIDIwOC0yMTIsIE5hdGhhbiBSb2FkCi0JCQkJS293bG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLUQ0ICAgKGhleCkJCURvYmxlIEVuZ2luZWVyaW5nCi0wMDFFRDQgICAgIChiYXNlIDE2KQkJRG9ibGUgRW5naW5lZXJpbmcKLQkJCQk4NSBXYWxudXQgU3RyZWV0Ci0JCQkJV2F0ZXJ0b3duIE1hc3NhY2h1c2V0dHMgMDI0NzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUQ1ICAgKGhleCkJCVRla29uLUF1dG9tYXRpY3MKLTAwMUVENSAgICAgKGJhc2UgMTYpCQlUZWtvbi1BdXRvbWF0aWNzCi0JCQkJWmVsZW5vZ3JhZCwgNTEyLTI5Ci0JCQkJTW9zY293ICAxMjQ0ODIKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUUtRDYgICAoaGV4KQkJQWxlbnRlYyAmIE9yaW9uIEFCCi0wMDFFRDYgICAgIChiYXNlIDE2KQkJQWxlbnRlYyAmIE9yaW9uIEFCCi0JCQkJQm94IDEwOAotCQkJCTEzMiAyMyBTYWx0c2pvLUJvbyAKLQkJCQlTV0VERU4KLQotMDAtMUUtRDcgICAoaGV4KQkJSC1TdHJlYW0gV2lyZWxlc3MsIEluYy4KLTAwMUVENyAgICAgKGJhc2UgMTYpCQlILVN0cmVhbSBXaXJlbGVzcywgSW5jLgotCQkJCTI1OTUgRWFzdCBCYXlzaG9yZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJUGFsbyBBbHRvIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1EOCAgIChoZXgpCQlEaWdpdGFsIFVuaXRlZCBJbmMuCi0wMDFFRDggICAgIChiYXNlIDE2KQkJRGlnaXRhbCBVbml0ZWQgSW5jLgotCQkJCTlGLCBOby4yMjAsIEdhbmdjaWFuIFJkLgotCQkJCVRhaXBlaSAgMTE0NDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLUQ5ICAgKGhleCkJCU1pdHN1YmlzaGkgUHJlY2lzaW9uIENvLixMVGQuCi0wMDFFRDkgICAgIChiYXNlIDE2KQkJTWl0c3ViaXNoaSBQcmVjaXNpb24gQ28uLExUZC4KLQkJCQkzNDUgS0FNSU1BQ0hJWUEKLQkJCQlLQU1BS1VSQS1DaXR5IEtBTkFHQVdBLVByZWZlY3R1cmUgMjQ3LTg1MDUKLQkJCQlKQVBBTgotCi0wMC0xRS1EQSAgIChoZXgpCQlXZXNlbWFubiBFbGVrdHJvdGVjaG5pZWsgQi5WLgotMDAxRURBICAgICAoYmFzZSAxNikJCVdlc2VtYW5uIEVsZWt0cm90ZWNobmllayBCLlYuCi0JCQkJRHJvb2dibG9lbSAzMQotCQkJCVJvdHRlcmRhbSBadWlkLUhvbGxhbmQgMzA2OCBBVwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFFLURCICAgKGhleCkJCUdpa2VuIFRyYXN0ZW0gQ28uLCBMdGQuCi0wMDFFREIgICAgIChiYXNlIDE2KQkJR2lrZW4gVHJhc3RlbSBDby4sIEx0ZC4KLQkJCQk0LTEgVGFrZWRhIERhbmthd2FyYWNobyBGdXNoaW1pa3UKLQkJCQlLeW90byAgNjEyLTg0MTQKLQkJCQlKQVBBTgotCi0wMC0xRS1EQyAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotMDAxRURDICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTAwLTFFLUREICAgKGhleCkJCVdBU0tPIFMuQS4KLTAwMUVERCAgICAgKGJhc2UgMTYpCQlXQVNLTyBTLkEuCi0JCQkJQmVyYmVja2llZ28gNgotCQkJCUdsaXdpY2UgU2lsZXNpYSA0NC0xMDAKLQkJCQlQT0xBTkQKLQotMDAtMUUtREUgICAoaGV4KQkJQllEIENPTVBBTlkgTElNSVRFRAotMDAxRURFICAgICAoYmFzZSAxNikJCUJZRCBDT01QQU5ZIExJTUlURUQKLQkJCQlOTy4xLEJhb3BpbmcgUm9hZCxCYW9sb25nIEluZHVzdHJpYWwgVG93bixMb25nZ2FuZwotCQkJCVNIRU4gWkhFTiBHdWFuZ2RvbmcgNTE4MTE2Ci0JCQkJQ0hJTkEKLQotMDAtMUUtREYgICAoaGV4KQkJTWFzdGVyIEluZHVzdHJpYWxpemF0aW9uIENlbnRlciBLaXN0YQotMDAxRURGICAgICAoYmFzZSAxNikJCU1hc3RlciBJbmR1c3RyaWFsaXphdGlvbiBDZW50ZXIgS2lzdGEKLQkJCQlUb3JzaGFtbnNnYXRhbiAzNgotCQkJCUtpc3RhCi0JCQkJU3RvY2tob2xtICBTRS0xNjQgODAKLQkJCQlTV0VERU4KLQotMDAtMUUtRTAgICAoaGV4KQkJVXJtZXQgRG9tdXMgU3BBCi0wMDFFRTAgICAgIChiYXNlIDE2KQkJVXJtZXQgRG9tdXMgU3BBCi0JCQkJVmlhIEJvbG9nbmEgMTg4L0MKLQkJCQlUb3Jpbm8gVE8gSS0xMDE1NAotCQkJCUlUQUxZCi0KLTAwLTFFLUUxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxRUUxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS1FMiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMUVFMiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtRTMgICAoaGV4KQkJVCZXIEVsZWN0cm9uaWNzIChTaGVuWmhlbikgQ28uLEx0ZAotMDAxRUUzICAgICAoYmFzZSAxNikJCVQmVyBFbGVjdHJvbmljcyAoU2hlblpoZW4pIENvLixMdGQKLQkJCQkyRiBCYWl5aW5nIEJ1aWxkaW5nLCBOby4xOSwgTmFuaGFpUmQuLCBOYW5zaGFuIERpc3QKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDUyCi0JCQkJQ0hJTkEKLQotMDAtMUUtRTQgICAoaGV4KQkJQUNTIFNvbHV0aW9ucyBGcmFuY2UKLTAwMUVFNCAgICAgKGJhc2UgMTYpCQlBQ1MgU29sdXRpb25zIEZyYW5jZQotCQkJCVJ1ZSBDbGF1ZGUgQ2hhcHBlCi0JCQkJR3VpbGhlcmFuZCBHcmFuZ2VzIEFyZGVjaGUgMDc1MDMKLQkJCQlGUkFOQ0UKLQotMDAtMUUtRTUgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi0wMDFFRTUgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1FNiAgIChoZXgpCQlTaGVuemhlbiBBZHZhbmNlZCBWaWRlbyBJbmZvLVRlY2ggQ28uLCBMdGQuCi0wMDFFRTYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQWR2YW5jZWQgVmlkZW8gSW5mby1UZWNoIENvLiwgTHRkLgotCQkJCVRpYW54aWFuZyAxMUEsICBUaWFuJ2FuIEN5YmVyIFBhcmsgLCBGdXRpYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQ4Ci0JCQkJQ0hJTkEKLQotMDAtMUUtRTcgICAoaGV4KQkJRXBpYyBTeXN0ZW1zIEluYwotMDAxRUU3ICAgICAoYmFzZSAxNikJCUVwaWMgU3lzdGVtcyBJbmMKLQkJCQkzOTAgUy4gQWJib3R0IEF2ZQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1FOCAgIChoZXgpCQlNeXRlawotMDAxRUU4ICAgICAoYmFzZSAxNikJCU15dGVrCi0JCQkJMTUxIExhZmF5ZXR0ZSBTdHIgMyBGbAotCQkJCU5ldyBZb3JrIE5ZIDEwMDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1FOSAgIChoZXgpCQlTdG9uZXJpZGdlIEVsZWN0cm9uaWNzIEFCCi0wMDFFRTkgICAgIChiYXNlIDE2KQkJU3RvbmVyaWRnZSBFbGVjdHJvbmljcyBBQgotCQkJCUdhcmRzZm9nZGV2YWdlbiAxOEEKLQkJCQlCcm9tbWEgU3RvY2tob2xtIDE2OCA2NgotCQkJCVNXRURFTgotCi0wMC0xRS1FQSAgIChoZXgpCQlTZW5zb3IgU3dpdGNoLCBJbmMuCi0wMDFFRUEgICAgIChiYXNlIDE2KQkJU2Vuc29yIFN3aXRjaCwgSW5jLgotCQkJCTkwMCBOb3J0aHJvcCBSb2FkCi0JCQkJV2FsbGluZ2ZvcmQgQ1QgMDY0OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUVCICAgKGhleCkJCVRhbGstQS1QaG9uZSBDby4KLTAwMUVFQiAgICAgKGJhc2UgMTYpCQlUYWxrLUEtUGhvbmUgQ28uCi0JCQkJNTAxMyBOLiBLZWR6aWUgQXZlLgotCQkJCUNoaWNhZ28gSUwgNjA2MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUVDICAgKGhleCkJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuCi0wMDFFRUMgICAgIChiYXNlIDE2KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURC4KLQkJCQlOTy4gMjUsIFRIRSAzUkQgU3RyZWV0Ci0JCQkJS1VOU0hBTiBFWFBPUlQgUFJPQ0VTU0lORyBaT05FCi0JCQkJS1VOU0hBTiBDSVRZIFNVWkhPVSBQUk9WSU5DRSAyMTUzMDAKLQkJCQlDSElOQQotCi0wMC0xRS1FRCAgIChoZXgpCQlBZHZlbnRpcSBMdGQuCi0wMDFFRUQgICAgIChiYXNlIDE2KQkJQWR2ZW50aXEgTHRkLgotCQkJCVRlY2hub2xvZ3kgSG91c2UKLQkJCQlUcmFmYWxnYXIgV2F5Ci0JCQkJQmFyIEhpbGwgQ2FtYnMuIENCMyA4U1EKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRS1FRSAgIChoZXgpCQlFVEwgU3lzdGVtcyBMdGQKLTAwMUVFRSAgICAgKGJhc2UgMTYpCQlFVEwgU3lzdGVtcyBMdGQKLQkJCQlDb2xkd2VsbCBSYWRpbyBTdGF0aW9uCi0JCQkJTWFkbGV5Ci0JCQkJSGVyZWZvcmQgSGVyZWZvcmRzaGlyZSBIUjIgOU5FCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtRUYgICAoaGV4KQkJQ2FudHJvbmljIEludGVybmF0aW9uYWwgTGltaXRlZAotMDAxRUVGICAgICAoYmFzZSAxNikJCUNhbnRyb25pYyBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLQkJCQlVbml0IDUxNS01MTYsIEJ1aWxkaW5nIDE1LCBFYXN0IFdpbmcsIE5vIDggU2NpZW5jZSBQYXJrIFdlc3QgQXZlbnVlLCBIb25nIEtvbmcgU2NpZW5jZSBQYXJrIFBoYXNlIElJCi0JCQkJU2hhdGluIE5ldyBUZXJyaXRvcmllcyA4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMUUtRjAgICAoaGV4KQkJR2lnYWZpbiBOZXR3b3JrcwotMDAxRUYwICAgICAoYmFzZSAxNikJCUdpZ2FmaW4gTmV0d29ya3MKLQkJCQkxOTA1MCBQcnVuZXJpZGdlCi0JCQkJU3VpdGUgMjAwCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1GMSAgIChoZXgpCQlTZXJ2aW1hdAotMDAxRUYxICAgICAoYmFzZSAxNikJCVNlcnZpbWF0Ci0JCQkJWkFFVCBMZXMgSGFpZXMKLQkJCQlSdWUgQmVub2l0IEZyYWNob24KLQkJCQlTdCBNYXhpbWluIE9pc2UgNjA3NDAKLQkJCQlGUkFOQ0UKLQotMDAtMUUtRjIgICAoaGV4KQkJTWljcm8gTW90aW9uIEluYwotMDAxRUYyICAgICAoYmFzZSAxNikJCU1pY3JvIE1vdGlvbiBJbmMKLQkJCQk3MDcwIFdpbmNoZXN0ZXIgQ2lyY2xlCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtRjMgICAoaGV4KQkJRnJvbTIKLTAwMUVGMyAgICAgKGJhc2UgMTYpCQlGcm9tMgotCQkJCTJGLCBNZXN0ZXIgaW5jCi0JCQkJMTY4Ny0zLCBTaW5pbC1kb25nCi0JCQkJRGFlamVvbiAgMzA2LTIzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS1GNCAgIChoZXgpCQlMLTMgQ29tbXVuaWNhdGlvbnMgRGlzcGxheSBTeXN0ZW1zCi0wMDFFRjQgICAgIChiYXNlIDE2KQkJTC0zIENvbW11bmljYXRpb25zIERpc3BsYXkgU3lzdGVtcwotCQkJCTEzNTUgQmx1ZWdyYXNzIExha2VzIFBhcmt3YXkKLQkJCQlBbHBoYXJldHRhIEdBIDMwMDA0LTg0NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUY1ICAgKGhleCkJCUhpdGVrIEF1dG9tYXRlZCBJbmMuCi0wMDFFRjUgICAgIChiYXNlIDE2KQkJSGl0ZWsgQXV0b21hdGVkIEluYy4KLQkJCQlSb29tIEMzLTkwMSwgTm8uMzgzLCBIdWFtZW4gU2hpamlhCi0JCQkJV2Vuc2FubHUgUm9hZCwKLQkJCQlIYW5nemhvdSAgMzEwMDEyCi0JCQkJQ0hJTkEKLQotMDAtMUUtRjYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRUY2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUY3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUVGNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1GOCAgIChoZXgpCQlFbWZpbml0eSBJbmMuCi0wMDFFRjggICAgIChiYXNlIDE2KQkJRW1maW5pdHkgSW5jLgotCQkJCTExMSBFbG0gU3RyZWV0Ci0JCQkJU3VpdGUgMjAxCi0JCQkJU3VkYnVyeSBPbnRhcmlvIFAzQzFUMwotCQkJCUNBTkFEQQotCi0wMC0xRS1GOSAgIChoZXgpCQlQYXNjb20gS29tbXVuaWthdGlvbnMgc3lzdGVtZSBHbWJILgotMDAxRUY5ICAgICAoYmFzZSAxNikJCVBhc2NvbSBLb21tdW5pa2F0aW9ucyBzeXN0ZW1lIEdtYkguCi0JCQkJVGVjaG5vbG9naWVzdHIuIDQKLQkJCQlBcmJpbmcgVXBwZXIgQXVzdHJpYSA0MzMyCi0JCQkJQVVTVFJJQQotCi0wMC0xRS1GQSAgIChoZXgpCQlQUk9URUkgTHRkLgotMDAxRUZBICAgICAoYmFzZSAxNikJCVBST1RFSSBMdGQuCi0JCQkJNjBBIEIuU2FtcHNvbmlldnNreSwgIEJ1c2luZXNzIENlbnRlcgotCQkJCVN0LlBldGVyc2J1cmcgUlUgMTk0MDQ0Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFFLUZCICAgKGhleCkJCVRyaW8gTW90aW9uIFRlY2hub2xvZ3kgTHRkCi0wMDFFRkIgICAgIChiYXNlIDE2KQkJVHJpbyBNb3Rpb24gVGVjaG5vbG9neSBMdGQKLQkJCQlTaGFubm9uIFdheQotCQkJCVRld2tlc2J1cnkgR2xvdWNlc3RlcnNoaXJlIEdMMjAgOE5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtRkMgICAoaGV4KQkJSlNDICJNQVNTQS1LIgotMDAxRUZDICAgICAoYmFzZSAxNikJCUpTQyAiTUFTU0EtSyIKLQkJCQkxNSwgQSwgUGlyb2dvdnNrYXlhIG5hYi4KLQkJCQlTYWludC1QZXRlcnNidXJnIExlbmluZ3JhZHNraXkgcmVnLiAxOTQwNDQKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUUtRkQgICAoaGV4KQkJTWljcm9iaXQgMi4wIEFCCi0wMDFFRkQgICAgIChiYXNlIDE2KQkJTWljcm9iaXQgMi4wIEFCCi0JCQkJTnlzdGFkZW4gMQotCQkJCUtBTElYICA5NTI2MQotCQkJCVNXRURFTgotCi0wMC0xRS1GRSAgIChoZXgpCQlMRVZFTCBzLnIuby4KLTAwMUVGRSAgICAgKGJhc2UgMTYpCQlMRVZFTCBzLnIuby4KLQkJCQlQbGhvdnNrYSAxOTk3Ci0JCQkJTmFjaG9kICA1NDcgMDEKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0xRS1GRiAgIChoZXgpCQlNdWVsbGVyLUVsZWt0cm9uaWsgR21iSCAmIENvLiBLRwotMDAxRUZGICAgICAoYmFzZSAxNikJCU11ZWxsZXItRWxla3Ryb25payBHbWJIICYgQ28uIEtHCi0JCQkJRnJhbnotS2xlaW5lLVN0ci4gMTgKLQkJCQlTYWx6a290dGVuIE5SVyAzMzE1NAotCQkJCUdFUk1BTlkKLQotMDAtMUYtMDAgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUYwMCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MFYKLQkJCQlERU5NQVJLCi0KLTAwLTFGLTAxICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFGMDEgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTB2Ci0JCQkJREVOTUFSSwotCi0wMC0xRi0wMiAgIChoZXgpCQlQaXhlbG1ldHJpeCBDb3Jwb3JhdGlvbiBQdGUgTHRkCi0wMDFGMDIgICAgIChiYXNlIDE2KQkJUGl4ZWxtZXRyaXggQ29ycG9yYXRpb24gUHRlIEx0ZAotCQkJCTMxIEtha2kgQnVraXQgUm9hZCAzCi0JCQkJIzA3LTAzLCBUZWNobGluawotCQkJCTQxNzgxOAotCQkJCVNJTkdBUE9SRQotCi0wMC0xRi0wMyAgIChoZXgpCQlOVU0gQUcKLTAwMUYwMyAgICAgKGJhc2UgMTYpCQlOVU0gQUcKLQkJCQlCYXR0ZW5odXNzdHJhc3NlIDE2Ci0JCQkJVGV1ZmVuIEFSIDkwNTMKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRi0wNCAgIChoZXgpCQlHcmFuY2ggTHRkLgotMDAxRjA0ICAgICAoYmFzZSAxNikJCUdyYW5jaCBMdGQuCi0JCQkJNDAgS29yb2xldmEgc3RyLgotCQkJCTUzIFBpc2FyZXZhIHN0ci4KLQkJCQlOb3Zvc2liaXJzayBOU08gNjMwMDE1Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFGLTA1ICAgKGhleCkJCWlUQVMgVGVjaG5vbG9neSBDb3JwLgotMDAxRjA1ICAgICAoYmFzZSAxNikJCWlUQVMgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLiA3NSwgU2h1aXl1YW4gU3QuCi0JCQkJSHNpbmNodSBDaXR5ICAzMDA2OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtMDYgICAoaGV4KQkJSW50ZWdyYXRlZCBEaXNwYXRjaCBTb2x1dGlvbnMKLTAwMUYwNiAgICAgKGJhc2UgMTYpCQlJbnRlZ3JhdGVkIERpc3BhdGNoIFNvbHV0aW9ucwotCQkJCTY0NSBNb3VudGFpbiBBdmUKLQkJCQlXeWNrb2ZmIE5KIDA3NDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0wNyAgIChoZXgpCQlBWlRFUSBNb2JpbGUKLTAwMUYwNyAgICAgKGJhc2UgMTYpCQlBWlRFUSBNb2JpbGUKLQkJCQlTdWl0ZSAyMTAsIDUyNSBVbml2ZXJzaXR5IEF2ZQotCQkJCVBhbG8gQWx0byBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMDggICAoaGV4KQkJUklTQ08gTFRECi0wMDFGMDggICAgIChiYXNlIDE2KQkJUklTQ08gTFRECi0JCQkJMzIgSGFjaGFyb3NoZXQgU3QKLQkJCQlLaXJpYXQgTWFsYWNoaSAgODMxMDEKLQkJCQlJU1JBRUwKLQotMDAtMUYtMDkgICAoaGV4KQkJSkFTVEVDIENPLiwgTFRELgotMDAxRjA5ICAgICAoYmFzZSAxNikJCUpBU1RFQyBDTy4sIExURC4KLQkJCQlKYXN0ZWMgQi9ELCA5Mi03Ci0JCQkJS3VtLWdvayBEb25nLCBCb29uLURhbmcgR3UKLQkJCQlTZW9uZy1uYW0gU2kgIEt5dW5nLWdpIERvIDQ2My04MDQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtMEEgICAoaGV4KQkJTm9ydGVsCi0wMDFGMEEgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJMTgzMCBNYXRoZXNvbiBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAxCi0JCQkJTWlzc2lzc2F1Z2EgT250YXJpbyBMNFcgMEIzCi0JCQkJQ0FOQURBCi0KLTAwLTFGLTBCICAgKGhleCkJCUZlZGVyYWwgU3RhdGUgVW5pdGFyeSBFbnRlcnByaXNlIEluZHVzdHJpYWwgVW5pb24iRWxlY3Ryb3ByaWJvciIKLTAwMUYwQiAgICAgKGJhc2UgMTYpCQlGZWRlcmFsIFN0YXRlIFVuaXRhcnkgRW50ZXJwcmlzZSBJbmR1c3RyaWFsIFVuaW9uIkVsZWN0cm9wcmlib3IiCi0JCQkJCi0JCQkJUGVuemEgIDQ0MDAxMQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRi0wQyAgIChoZXgpCQlJbnRlbGxpZ2VudCBEaWdpdGFsIFNlcnZpY2VzIEdtYkgKLTAwMUYwQyAgICAgKGJhc2UgMTYpCQlJbnRlbGxpZ2VudCBEaWdpdGFsIFNlcnZpY2VzIEdtYkgKLQkJCQlHcmV2ZXNtdWVobGVuZXIgU3RyYXNzZSA4Ci0JCQkJTWFsbGVudGluIE1lY2tsZW5idXJnLVZvcnBvbW1lcm4gMjM2MzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTBEICAgKGhleCkJCUwzIENvbW11bmljYXRpb25zIC0gVGVsZW1ldHJ5IFdlc3QKLTAwMUYwRCAgICAgKGJhc2UgMTYpCQlMMyBDb21tdW5pY2F0aW9ucyAtIFRlbGVtZXRyeSBXZXN0Ci0JCQkJOTAyMCBCYWxib2EgQXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0wRSAgIChoZXgpCQlKYXBhbiBLeWFzdGVtIENvLiwgTHRkCi0wMDFGMEUgICAgIChiYXNlIDE2KQkJSmFwYW4gS3lhc3RlbSBDby4sIEx0ZAotCQkJCTEtNC00Ci0JCQkJTmlzaGlraS1jaG8KLQkJCQlUYWNoaWthd2EgVG9reW8gMTkwLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0xRi0wRiAgIChoZXgpCQlTZWxlY3QgRW5naW5lZXJlZCBTeXN0ZW1zCi0wMDFGMEYgICAgIChiYXNlIDE2KQkJU2VsZWN0IEVuZ2luZWVyZWQgU3lzdGVtcwotCQkJCTc5OTEgVy4gMjYgQXZlCi0JCQkJSGlhbGVhaCBGbG9yaWRhIDMzMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0xMCAgIChoZXgpCQlUT0xFRE8gRE8gQlJBU0lMIElORFVTVFJJQSBERSBCQUxBTkNBUyAgTFREQQotMDAxRjEwICAgICAoYmFzZSAxNikJCVRPTEVETyBETyBCUkFTSUwgSU5EVVNUUklBIERFIEJBTEFOQ0FTICBMVERBCi0JCQkJUlVBIE1BTk9FTCBDUkVNT05FU0ksIDEKLQkJCQlFU1RSQURBIFNBTVVFTCBBSVpFTUJFUkcsIDM0NQotCQkJCVNBTyBCRVJOQVJETyBETyBDQU1QTyBTUCAwOTg1MS05MDAKLQkJCQlCUkFaSUwKLQotMDAtMUYtMTEgICAoaGV4KQkJT1BFTk1PS08sIElOQy4KLTAwMUYxMSAgICAgKGJhc2UgMTYpCQlPUEVOTU9LTywgSU5DLgotCQkJCTdGLCBObyAzMDAsIFlhbmcgR3VhbmcgU3RyZWV0Ci0JCQkJTmVpSHUKLQkJCQlUYWlwZWkgIDExNDkxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0xMiAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi0wMDFGMTIgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTEzICAgKGhleCkJCVMuJiBBLlMuIEx0ZC4KLTAwMUYxMyAgICAgKGJhc2UgMTYpCQlTLiYgQS5TLiBMdGQuCi0JCQkJQm91dHJvcyBCbGRnLiAxc3QgYnNtdAotCQkJCUdoYWJpIFN0cmVldAotCQkJCUJlaXJ1dCAgMjA2NyA3ODA4Ci0JCQkJTEVCQU5PTgotCi0wMC0xRi0xNCAgIChoZXgpCQlOZXhHCi0wMDFGMTQgICAgIChiYXNlIDE2KQkJTmV4RwotCQkJCTVGIFNlb3VsIEFjYWRlbXkgQmxkZywgRGFlY2hpLURvbmcsIEdhbmduYW0tR3UsCi0JCQkJU2VvdWwgIDEzNS0yODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtMTUgICAoaGV4KQkJQmlvc2NyeXB0IEluYwotMDAxRjE1ICAgICAoYmFzZSAxNikJCUJpb3NjcnlwdCBJbmMKLQkJCQk1MDUgQ29jaHJhbmUgRHJpdmUKLQkJCQlNYXJraGFtIE9udGFyaW8gTDNSIDhFMwotCQkJCUNBTkFEQQotCi0wMC0xRi0xNiAgIChoZXgpCQlXaXN0cm9uIENvcnBvcmF0aW9uCi0wMDFGMTYgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotCQkJCTIxRiwgODgsIFNlYy4xLEhzaW4gVGFpIFd1IFJkLiwgSHNpY2hpaCwKLQkJCQlUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0xNyAgIChoZXgpCQlJRFggQ29tcGFueSwgTHRkLgotMDAxRjE3ICAgICAoYmFzZSAxNikJCUlEWCBDb21wYW55LCBMdGQuCi0JCQkJNi0yOC0xMSBTaHVrdWdhd2FyYSwgVGFuYS1rdQotCQkJCUthd2FzYWtpLVNoaSBLYW5hZ2F3YS1LZW4gMjE0MDAyMQotCQkJCUpBUEFOCi0KLTAwLTFGLTE4ICAgKGhleCkJCUhha3VzYW4uTWZnLkNvLC5MdGQKLTAwMUYxOCAgICAgKGJhc2UgMTYpCQlIYWt1c2FuLk1mZy5DbywuTHRkCi0JCQkJVG9taW4tS291Z3lvdS1Ja2VidWt1cm8gQkxELjVGCi0JCQkJMi0yNi01ICBNaW5hbWktSWtlYnVrdXJvCi0JCQkJVG9zaW1hIFdhcmQgVG9reW8tTWV0LiAxNzEtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTFGLTE5ICAgKGhleCkJCUJFTi1SSSBFTEVDVFJPTklDQSBTLkEuCi0wMDFGMTkgICAgIChiYXNlIDE2KQkJQkVOLVJJIEVMRUNUUk9OSUNBIFMuQS4KLQkJCQlQT0wuIElORC4gVkVOVE9SUk8gREVMIENBTk8KLQkJCQlDLy4gTE9aT1lBIDgKLQkJCQlBTENPUkNPTiBNQURSSUQgMjg5MjUKLQkJCQlTUEFJTgotCi0wMC0xRi0xQSAgIChoZXgpCQlQcm9taW52ZXN0Ci0wMDFGMUEgICAgIChiYXNlIDE2KQkJUHJvbWludmVzdAotCQkJCTcsIEJvYnJ1aXNrYXlhIHVsaWNhCi0JCQkJU2FpbnQtUGV0ZXJzYnVyZyBOb3J0aC1XZXN0IEZlZGVyYWwgRGlzdHJpY3QgMTk1MDA5Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFGLTFCICAgKGhleCkJCVJveWFsVGVrIENvbXBhbnkgTHRkLgotMDAxRjFCICAgICAoYmFzZSAxNikJCVJveWFsVGVrIENvbXBhbnkgTHRkLgotCQkJCVN1aXRlIDlGLTEsIE5vLiAxMDcxLCBDaHVuZyBDaGVuZyBSZC4KLQkJCQlUYW95dWFuIFNoaWVuIFRhb3l1YW4gMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0xQyAgIChoZXgpCQlLT0JJU0hJIEVMRUNUUklDIENvLixMdGQuCi0wMDFGMUMgICAgIChiYXNlIDE2KQkJS09CSVNISSBFTEVDVFJJQyBDby4sTHRkLgotCQkJCTE4MDUtMQotCQkJCUthbWl5YQotCQkJCUtvdW5vc3Utc2hpIFNhaXRhbWEta2VuIDM2NS0wMDI3Ci0JCQkJSkFQQU4KLQotMDAtMUYtMUQgICAoaGV4KQkJQXRsYXMgTWF0ZXJpYWwgVGVzdGluZyBUZWNobm9sb2d5IExMQwotMDAxRjFEICAgICAoYmFzZSAxNikJCUF0bGFzIE1hdGVyaWFsIFRlc3RpbmcgVGVjaG5vbG9neSBMTEMKLQkJCQk0MTE0IE4uIFJhdmVuc3dvb2QgQXZlLgotCQkJCUNoaWNhZ28gSUwgNjA2MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTFFICAgKGhleCkJCUFzdGVjIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMUYxRSAgICAgKGJhc2UgMTYpCQlBc3RlYyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJMTJGLCBOby4yLCBKaWFuIEJhIFJkLgotCQkJCUNodW5nIEhvIFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLTFGICAgKGhleCkJCUVkaW1heCBUZWNobm9sb2d5IENvLiBMdGQuCi0wMDFGMUYgICAgIChiYXNlIDE2KQkJRWRpbWF4IFRlY2hub2xvZ3kgQ28uIEx0ZC4KLQkJCQlOby4gMywgV3UtQ2h1YW4gM3JkIFJvYWQsIFd1LUt1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlUYWlwZWkgSHNpZW4gMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0yMCAgIChoZXgpCQlMb2dpdGVjaCBFdXJvcGUgU0EKLTAwMUYyMCAgICAgKGJhc2UgMTYpCQlMb2dpdGVjaCBFdXJvcGUgU0EKLQkJCQlNb3VsaW4gZHUgQ2hvYyBECi0JCQkJUm9tYW5lbCBzdXIgTW9yZ2VzIENIIDExMjIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRi0yMSAgIChoZXgpCQlJbm5lciBNb25nb2xpYSBZaW4gQW4gU2NpZW5jZSAmIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uLEwKLTAwMUYyMSAgICAgKGJhc2UgMTYpCQlJbm5lciBNb25nb2xpYSBZaW4gQW4gU2NpZW5jZSAmIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uLEwKLQkJCQlZaW5BbiBCdWlsZGluZyBZaXdlaSBSb2FkLlJ1WWkKLQkJCQlEZXZlbG9wbWVudCBab25lLEhvaGhvdAotCQkJCUJlaWppbmcgIDAxMDAxMAotCQkJCUNISU5BCi0KLTAwLTFGLTIyICAgKGhleCkJCUZpYmVyeG9uLCBJbmMuCi0wMDFGMjIgICAgIChiYXNlIDE2KQkJRmliZXJ4b24sIEluYy4KLQkJCQk1MjAxIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVN1aXRlIDM0MAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0yMyAgIChoZXgpCQlJbnRlcmFjb3VzdGljcwotMDAxRjIzICAgICAoYmFzZSAxNikJCUludGVyYWNvdXN0aWNzCi0JCQkJRHJlamVydmFlbmdldCA4Ci0JCQkJQXNzZW5zIERLIDU2MTAKLQkJCQlERU5NQVJLCi0KLTAwLTFGLTI0ICAgKGhleCkJCURJR0lUVklFVyBURUNITk9MT0dZIENPLiwgTFRELgotMDAxRjI0ICAgICAoYmFzZSAxNikJCURJR0lUVklFVyBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCU5PLiAxNC0yMiwgVElBTi1GVSAsCi0JCQkJU0FOU0lBIFRPV05TSElQLAotCQkJCVRBSVBFSSBDT1VOVFkgIDIzNwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtMjUgICAoaGV4KQkJTUJTIEdtYkgKLTAwMUYyNSAgICAgKGJhc2UgMTYpCQlNQlMgR21iSAotCQkJCVJvbWVyc3RyYXNzZSAxNQotCQkJCUtyZWZlbGQgTm9yZHJoZWluLVdlc3RmYWxlbiA0NzgwOQotCQkJCUdFUk1BTlkKLQotMDAtMUYtMjYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRjI2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTI3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUYyNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0yOCAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDFGMjggICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQKLQkJCQlSb3NldmlsbGUgQ0EgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTI5ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxRjI5ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDIKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0yQSAgIChoZXgpCQlBQ0NNCi0wMDFGMkEgICAgIChiYXNlIDE2KQkJQUNDTQotCQkJCU9ib3VyIEluZHVzdHJpYWwgQ2l0eSwgSW5kdXN0cmlhbCB6b25lIEEsIGxvdDE0LCBibG9jayAxMjAwNi4KLQkJCQlDYWlybyAgCi0JCQkJRUdZUFQKLQotMDAtMUYtMkIgICAoaGV4KQkJT3JhbmdlIExvZ2ljCi0wMDFGMkIgICAgIChiYXNlIDE2KQkJT3JhbmdlIExvZ2ljCi0JCQkJIzcwNiBBY2VUZWNobm9Ub3dlciAxMC1jaGEsNDcwLTUKLQkJCQlHYXNhbi1kb25nIEdldW1jaGVvbi1ndQotCQkJCVNFT1VMICAxNTMtNzg5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTJDICAgKGhleCkJCVN0YXJicmlkZ2UgTmV0d29ya3MKLTAwMUYyQyAgICAgKGJhc2UgMTYpCQlTdGFyYnJpZGdlIE5ldHdvcmtzCi0JCQkJMzI2NSBNZXJpZGlhbiBQYXJrd2F5Ci0JCQkJU3VpdGUgMTM0Ci0JCQkJV2VzdG9uIEZMIDMzMzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0yRCAgIChoZXgpCQlFbGVjdHJvLU9wdGljYWwgSW1hZ2luZywgSW5jLgotMDAxRjJEICAgICAoYmFzZSAxNikJCUVsZWN0cm8tT3B0aWNhbCBJbWFnaW5nLCBJbmMuCi0JCQkJNDMwMCBGb3J0dW5lIFBsYWNlLCBTdWl0ZSBDCi0JCQkJV2VzdCBNZWxib3VybmUgRkwgMzI5MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTJFICAgKGhleCkJCVRyaWFuZ2xlIFJlc2VhcmNoIEludCdsIFB0ZSBMdGQKLTAwMUYyRSAgICAgKGJhc2UgMTYpCQlUcmlhbmdsZSBSZXNlYXJjaCBJbnQnbCBQdGUgTHRkCi0JCQkJMTAgVWJpIENyZXNjZW50ICMwNS04MwotCQkJCVViaSBUZWNocGFyayBTRyA0MDg2NjQKLQkJCQlTSU5HQVBPUkUKLQotMDAtMUYtMkYgICAoaGV4KQkJQmVya2VyIEdtYkggJiBDby4gS0cKLTAwMUYyRiAgICAgKGJhc2UgMTYpCQlCZXJrZXIgR21iSCAmIENvLiBLRwotCQkJCUtsYWdlYmFjaCAzOAotCQkJCVNjaGFsa3NtdWVobGUgTlJXIDU4NTc5Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi0zMCAgIChoZXgpCQlUcmF2ZWxwaW5nCi0wMDFGMzAgICAgIChiYXNlIDE2KQkJVHJhdmVscGluZwotCQkJCQotCQkJCUxlaXB6aWdlciBTdHIuIDQ2Ci0JCQkJQ2hlbW5pdHogU2F4b255IDA5MTEzCi0JCQkJR0VSTUFOWQotCi0wMC0xRi0zMSAgIChoZXgpCQlSYWRpb2NvbXAKLTAwMUYzMSAgICAgKGJhc2UgMTYpCQlSYWRpb2NvbXAKLQkJCQlLcmFrZXN2ZWogMTcKLQkJCQlIaWxsZXJvZWQgQ29wZW5oYWdlbiAzNDAwCi0JCQkJREVOTUFSSwotCi0wMC0xRi0zMiAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMUYzMiAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyBLWU9UTyA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTFGLTMzICAgKGhleCkJCU5ldGdlYXIgSW5jLgotMDAxRjMzICAgICAoYmFzZSAxNikJCU5ldGdlYXIgSW5jLgotCQkJCTQ1MDAgR3JlYXQgQW1lcmljYSBQa3d5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTM0ICAgKGhleCkJCUx1bmcgSHdhIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxRjM0ICAgICAoYmFzZSAxNikJCUx1bmcgSHdhIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTNGLCAyNDgsIFBlaSBTaGVuZyBSZC4gU2VjLiAzLAotCQkJCVNoZW5nIEtlbmcKLQkJCQlUYWlwZWkgSHNpZW4gMjIyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0zNSAgIChoZXgpCQlBSVI4MDIgTExDCi0wMDFGMzUgICAgIChiYXNlIDE2KQkJQUlSODAyIExMQwotCQkJCTExNjkgQmFueW9uIENvdXJ0Ci0JCQkJTmFwZXJ2aWxsZSBJTCA2MDU0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMzYgICAoaGV4KQkJQmVsbHdpbiBJbmZvcm1hdGlvbiBDby4gTHRkLiwKLTAwMUYzNiAgICAgKGJhc2UgMTYpCQlCZWxsd2luIEluZm9ybWF0aW9uIENvLiBMdGQuLAotCQkJCTE3Ri0xLE5vLjEyOCxDaHVuZyBEZSBSZC4KLQkJCQlUYWljaHVuZyAgNDA0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0zNyAgIChoZXgpCQlHZW5lc2lzIEkmQwotMDAxRjM3ICAgICAoYmFzZSAxNikJCUdlbmVzaXMgSSZDCi0JCQkJIzUxNSBsaXNhbnRla2V1bm90YXVuCi0JCQkJMTE0MS0xIEJhZWtzZW9rLURvbmcsIGxpc2FuZG9uZy1HdQotCQkJCUdveWFuZyBHeWVvbmdnaSA0MTAtNzIyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTM4ICAgKGhleCkJCVBPU0lUUk9OCi0wMDFGMzggICAgIChiYXNlIDE2KQkJUE9TSVRST04KLQkJCQlFU1RSQURBIFRFTEVCUkFTLVVOSUNBTVAsIEtNMCw5NyAtIENKLjAxCi0JCQkJQkFJUlJPOiBDSURBREUgVU5JVkVSU0lUQVJJQQotCQkJCUNBTVBJTkFTIFNBTyBQQVVMTyAxMzA4NC05NzEKLQkJCQlCUkFaSUwKLQotMDAtMUYtMzkgICAoaGV4KQkJQ29uc3RydWNjaW9uZXMgeSBBdXhpbGlhciBkZSBGZXJyb2NhcnJpbGVzLCBTLkEuCi0wMDFGMzkgICAgIChiYXNlIDE2KQkJQ29uc3RydWNjaW9uZXMgeSBBdXhpbGlhciBkZSBGZXJyb2NhcnJpbGVzLCBTLkEuCi0JCQkJQy8gSi5NLiBJdHVycmlveiwgMjYKLQkJCQlCZWFzYWluIEd1aXB1emNvYSBFLTIwMjAwCi0JCQkJU1BBSU4KLQotMDAtMUYtM0EgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLiwgTHRkLgotMDAxRjNBICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby4sIEx0ZC4KLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLTNCICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxRjNCICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUYtM0MgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFGM0MgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRi0zRCAgIChoZXgpCQlRYml0IEdtYkgKLTAwMUYzRCAgICAgKGJhc2UgMTYpCQlRYml0IEdtYkgKLQkJCQlTdGVnd2llc2Vuc3RyYXNzZSAzMgotCQkJCUJydWNoc2FsIEdlcm1hbnkgNzY2NDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTNFICAgKGhleCkJCVJQLVRlY2huaWsgZS5LLgotMDAxRjNFICAgICAoYmFzZSAxNikJCVJQLVRlY2huaWsgZS5LLgotCQkJCUhlcm1hbm4tU3RhdWRpbmdlci1TdHIuIDEwLTE2Ci0JCQkJUm9kZ2F1IEhlc3NlbiA2MzExMAotCQkJCUdFUk1BTlkKLQotMDAtMUYtM0YgICAoaGV4KQkJQVZNIEdtYkgKLTAwMUYzRiAgICAgKGJhc2UgMTYpCQlBVk0gR21iSAotCQkJCUFsdC1Nb2FiaXQgOTUKLQkJCQlCZXJsaW4gIDEwNTU5Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi00MCAgIChoZXgpCQlTcGVha2VyY3JhZnQgSW5jLgotMDAxRjQwICAgICAoYmFzZSAxNikJCVNwZWFrZXJjcmFmdCBJbmMuCi0JCQkJOTQwIENvbHVtYmlhIEF2ZS4sCi0JCQkJUml2ZXJzaWRlIENBIDkyNTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00MSAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLTAwMUY0MSAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00MiAgIChoZXgpCQlFdGhlcnN0YWNrIFB0eSBMdGQKLTAwMUY0MiAgICAgKGJhc2UgMTYpCQlFdGhlcnN0YWNrIFB0eSBMdGQKLQkJCQkyMDEgTmF0aW9uYWwgSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQlBdXN0cmFsaWFuIFRlY2hub2xvZ3kgUGFyayBOU1cgMjIzNAotCQkJCUFVU1RSQUxJQQotCi0wMC0xRi00MyAgIChoZXgpCQlFTlRFUyBFTEVLVFJPTklLCi0wMDFGNDMgICAgIChiYXNlIDE2KQkJRU5URVMgRUxFS1RST05JSwotCQkJCVkuIER1ZHVsbHUgT3JnLiBTYW4uIEJvbC4gQW5kIFNhbmF5aSBTaXQuIE5vLjYKLQkJCQlVbXJhbml5ZQotCQkJCUlzdGFuYnVsIER1ZHVsbHUgMzQ3NzUKLQkJCQlUVVJLRVkKLQotMDAtMUYtNDQgICAoaGV4KQkJR0UgVHJhbnNwb3J0YXRpb24gU3lzdGVtcwotMDAxRjQ0ICAgICAoYmFzZSAxNikJCUdFIFRyYW5zcG9ydGF0aW9uIFN5c3RlbXMKLQkJCQkyOTAxIEVhc3QgTGFrZSBSb2FkCi0JCQkJRXJpZSBQQSAxNjUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtNDUgICAoaGV4KQkJRW50ZXJhc3lzCi0wMDFGNDUgICAgIChiYXNlIDE2KQkJRW50ZXJhc3lzCi0JCQkJNTAgTWludXRlbWFuIFJvYWQKLQkJCQlBbmRvdmVyIE1BIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00NiAgIChoZXgpCQlOb3J0ZWwKLTAwMUY0NiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRleGFzIDc1MDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00NyAgIChoZXgpCQlNQ1MgTG9naWMgSW5jLgotMDAxRjQ3ICAgICAoYmFzZSAxNikJCU1DUyBMb2dpYyBJbmMuCi0JCQkJNkYuIFNhbWhvIENlbnRlciBCIEJsZGcuLCAyNzUtNgotCQkJCVlhbmdqYWUtRG9uZywgU2VjaG8tS3UKLQkJCQlTZW91bCAgMTM3LTk0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi00OCAgIChoZXgpCQlNb2ppeCBJbmMuCi0wMDFGNDggICAgIChiYXNlIDE2KQkJTW9qaXggSW5jLgotCQkJCTExMDc1IFNhbnRhIE1vbmljYSBCbHZkLgotCQkJCVN1aXRlIDM1MAotCQkJCUxvcyBBbmdlbGVzIENhIDkwMDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00OSAgIChoZXgpCQlFdXJvc2F0IERpc3RyaWJ1dGlvbiBMdGQKLTAwMUY0OSAgICAgKGJhc2UgMTYpCQlFdXJvc2F0IERpc3RyaWJ1dGlvbiBMdGQKLQkJCQk1IE94Z2F0ZSBDZW50cmUKLQkJCQlPeGdhdGUgTGFuZQotCQkJCUxvbmRvbiAgTlcyIDdKQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFGLTRBICAgKGhleCkJCUFsYmVudGlhIFN5c3RlbXMgUy5BLgotMDAxRjRBICAgICAoYmFzZSAxNikJCUFsYmVudGlhIFN5c3RlbXMgUy5BLgotCQkJCUFsYmFsYSAxMwotCQkJCU1hZHJpZCAgMjgwMzcKLQkJCQlTUEFJTgotCi0wMC0xRi00QiAgIChoZXgpCQlMaW5lYWdlIFBvd2VyCi0wMDFGNEIgICAgIChiYXNlIDE2KQkJTGluZWFnZSBQb3dlcgotCQkJCTMwMDAgU2t5bGluZSBEci4KLQkJCQlNZXNxdWl0ZSBUWCA3NTE0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtNEMgICAoaGV4KQkJUm9zZW1hbiBFbmdpbmVlcmluZyBMdGQKLTAwMUY0QyAgICAgKGJhc2UgMTYpCQlSb3NlbWFuIEVuZ2luZWVyaW5nIEx0ZAotCQkJCTY1IFdlaXptYW4gU3RyZWV0Ci0JCQkJR2l2YXRhaW0gSXNyYWVsIDUzNDY4Ci0JCQkJSVNSQUVMCi0KLTAwLTFGLTREICAgKGhleCkJCVNlZ25ldGljcyBMTEMKLTAwMUY0RCAgICAgKGJhc2UgMTYpCQlTZWduZXRpY3MgTExDCi0JCQkJU2hraXBlcnNraSBwcm90b2sgMTQKLQkJCQlTYWludC1QZXRlcnNidXJnICAxOTkxMDYKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUYtNEUgICAoaGV4KQkJQ29uTWVkIExpbnZhdGVjCi0wMDFGNEUgICAgIChiYXNlIDE2KQkJQ29uTWVkIExpbnZhdGVjCi0JCQkJMTEzMTEgQ29uY2VwdCBCbHZkLgotCQkJCUxhcmdvIEZMIDMzNzczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00RiAgIChoZXgpCQlUaGlua3dhcmUgQ28uIEx0ZC4KLTAwMUY0RiAgICAgKGJhc2UgMTYpCQlUaGlua3dhcmUgQ28uIEx0ZC4KLQkJCQkxNUZMLCBIYW5taSBUb3dlciwgNDUsCi0JCQkJQmFuZ2ktRG9uZywgU29uZ3BhLWd1Ci0JCQkJU2VvdWwgIDEzOC03MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtNTAgICAoaGV4KQkJU3dpc3NkaXMgQUcKLTAwMUY1MCAgICAgKGJhc2UgMTYpCQlTd2lzc2RpcyBBRwotCQkJCUdyYXN3ZWcgNwotCQkJCVNjaHdhcnpoYWV1c2VybiBCRSA0OTExCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUYtNTEgICAoaGV4KQkJSEQgQ29tbXVuaWNhdGlvbnMgQ29ycAotMDAxRjUxICAgICAoYmFzZSAxNikJCUhEIENvbW11bmljYXRpb25zIENvcnAKLQkJCQkyMTgwIEZpZnRoIEF2ZQotCQkJCVJvbmtvbmtvbWEgTlkgMTE3NzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTUyICAgKGhleCkJCVVWVCBVbnRlcm5laG1lbnNiZXJhdHVuZyBmdXIgVmVya2VociB1bmQgVGVjaG5payBHbWJICi0wMDFGNTIgICAgIChiYXNlIDE2KQkJVVZUIFVudGVybmVobWVuc2JlcmF0dW5nIGZ1ciBWZXJrZWhyIHVuZCBUZWNobmlrIEdtYkgKLQkJCQlKb3NlZnNzdHIuNTQtNTYKLQkJCQlNYWlueiBSTFAgNTUxMTgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTUzICAgKGhleCkJCUdFTUFDIEdlc2VsbHNjaGFmdCBmdXIgTWlrcm9lbGVrdHJvbmlrYW53ZW5kdW5nIENoZW1uaXR6IG1iSAotMDAxRjUzICAgICAoYmFzZSAxNikJCUdFTUFDIEdlc2VsbHNjaGFmdCBmdXIgTWlrcm9lbGVrdHJvbmlrYW53ZW5kdW5nIENoZW1uaXR6IG1iSAotCQkJCVp3aWNrYXVlciBTdHIuIDIyNwotCQkJCUNoZW1uaXR6IFNhY2hzZW4gMDkxMTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTU0ICAgKGhleCkJCUxvcmV4IFRlY2hub2xvZ3kgSW5jLgotMDAxRjU0ICAgICAoYmFzZSAxNikJCUxvcmV4IFRlY2hub2xvZ3kgSW5jLgotCQkJCTMwMCBBbGRlbiBSb2FkCi0JCQkJTWFya2hhbSBPbnRhcmlvIEwzUjRDMQotCQkJCUNBTkFEQQotCi0wMC0xRi01NSAgIChoZXgpCQlIb25leXdlbGwgU2VjdXJpdHkgKENoaW5hKSBDby4sIEx0ZC4KLTAwMUY1NSAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgU2VjdXJpdHkgKENoaW5hKSBDby4sIEx0ZC4KLQkJCQlCbG9jayAyOCwgU2VjdGlvbiAyLCBIdWFpICBEZSBDdWkgR2FuZyBJbmR1c3RyaWFsICBFc3RhdGUsIEZ1IFlvbmcsIEJhbyBBbiwgU2hlblpoZW4sIFAuUi4gQ2hpbmEKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTAzCi0JCQkJQ0hJTkEKLQotMDAtMUYtNTYgICAoaGV4KQkJRElHSVRBTCBGT1JFQ0FTVAotMDAxRjU2ICAgICAoYmFzZSAxNikJCURJR0lUQUwgRk9SRUNBU1QKLQkJCQk1dGggRmwuLCA1MDcsIEUmQyBWZW50dXJlIERyZWFtIFRvd2VyIElJSSwgMTk3LTMzCi0JCQkJR3VybyAzLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCBHeXVuZ2dpLWRvIDE1Mi03MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtNTcgICAoaGV4KQkJUGhvbmlrIElubm92YXRpb24gQ28uLExURAotMDAxRjU3ICAgICAoYmFzZSAxNikJCVBob25payBJbm5vdmF0aW9uIENvLixMVEQKLQkJCQkyOS8xNjcgTW9vMiwgMzQ1IFJkLCBMYW1wbywKLQkJCQlCYW5nYnVhdGhvbmcKLQkJCQlOb250aGFidXJpICAxMTExMAotCQkJCVRIQUlMQU5ECi0KLTAwLTFGLTU4ICAgKGhleCkJCUVNSCBFbmVyZ2llbWVzc3RlY2huaWsgR21iSAotMDAxRjU4ICAgICAoYmFzZSAxNikJCUVNSCBFbmVyZ2llbWVzc3RlY2huaWsgR21iSAotCQkJCVZvciBkZW0gSGFzc2VsIDIKLQkJCQlCcmFja2VsIE5pZWRlcnNhY2hzZW4gMjE0MzgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTU5ICAgKGhleCkJCUtyb25iYWNrIFRyYWNlcnMKLTAwMUY1OSAgICAgKGJhc2UgMTYpCQlLcm9uYmFjayBUcmFjZXJzCi0JCQkJYy9vIElISywgTTE0NgotCQkJCUxhdXRydXB2YW5nIDE1Ci0JCQkJQmFsbGVydXAgQ29wZW5oYWdlbiAyNzUwCi0JCQkJREVOTUFSSwotCi0wMC0xRi01QSAgIChoZXgpCQlCZWNrd2l0aCBFbGVjdHJpYyBDby4KLTAwMUY1QSAgICAgKGJhc2UgMTYpCQlCZWNrd2l0aCBFbGVjdHJpYyBDby4KLQkJCQk2MTkwIDExOHRoIEF2ZSBObwotCQkJCUxhcmdvIEZsb3JpZGEgMzM3NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTVCICAgKGhleCkJCUFwcGxlLCBJbmMuCi0wMDFGNUIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlNUyAzNS1HUE8KLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTVDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFGNUMgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFGLTVEICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFGNUQgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFGLTVFICAgKGhleCkJCUR5bmEgVGVjaG5vbG9neSBDby4sTHRkLgotMDAxRjVFICAgICAoYmFzZSAxNikJCUR5bmEgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCUhhb0hhaSBCdWlsZGluZyAxRixOby43LDV0aCBTdHJlZXQsU2hhbmdkaSwKLQkJCQlIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMUYtNUYgICAoaGV4KQkJQmxhdGFuZCBHbWJICi0wMDFGNUYgICAgIChiYXNlIDE2KQkJQmxhdGFuZCBHbWJICi0JCQkJTGljaHRlbmJlcmdzdHJhc3NlIDgKLQkJCQlHYXJjaGluZyBCYXZhcmlhIDg1NzQ4Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi02MCAgIChoZXgpCQlDT01QQVNTIFNZU1RFTVMgQ09SUC4KLTAwMUY2MCAgICAgKGJhc2UgMTYpCQlDT01QQVNTIFNZU1RFTVMgQ09SUC4KLQkJCQk2RiwgTm8uIDQxMywgU2VjLiAyLCBUaS1EaW5nIEJsdmQuLAotCQkJCVRhaXBlaSBOZWlodURpc3QgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi02MSAgIChoZXgpCQlUYWxlbnQgQ29tbXVuaWNhdGlvbiBOZXR3b3JrcyBJbmMuCi0wMDFGNjEgICAgIChiYXNlIDE2KQkJVGFsZW50IENvbW11bmljYXRpb24gTmV0d29ya3MgSW5jLgotCQkJCVJtLiA5MTAgUiZGIFBsYXphLCAjNzYsIEh1YW5ncHUgQXZlLiBXZXN0LAotCQkJCUd1YW5nemhvdSAoQ2FudG9uKSBHdWFuZ2RvbmcgUHJvdmluY2UgNTEwMzYwCi0JCQkJQ0hJTkEKLQotMDAtMUYtNjIgICAoaGV4KQkJSlNDICJTdGlsc29mdCIKLTAwMUY2MiAgICAgKGJhc2UgMTYpCQlKU0MgIlN0aWxzb2Z0IgotCQkJCU1heWFrb3Zza29nbyAxNQotCQkJCVN0YXZyb3BvbCAgMzU1MDAwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFGLTYzICAgKGhleCkJCUpTQyBHb29kd2luLUV1cm9wYQotMDAxRjYzICAgICAoYmFzZSAxNikJCUpTQyBHb29kd2luLUV1cm9wYQotCQkJCTIwLzUgTWFya3Npc3Rza2F5YSBzdC4KLQkJCQlNb3Njb3cgIDEwOTE0NwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRi02NCAgIChoZXgpCQlCZWlqaW5nIEF1dGVsYW4gVGVjaG5vbG9neSBJbmMuCi0wMDFGNjQgICAgIChiYXNlIDE2KQkJQmVpamluZyBBdXRlbGFuIFRlY2hub2xvZ3kgSW5jLgotCQkJCVJvb20gQi0xMkIwMSwgS2VzaGkgUGxhemEsIFhpbnhpIHJvYWQsCi0JCQkJU2hhbmdkaSBwYXJrLEhhaWRpYW4sCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMUYtNjUgICAoaGV4KQkJS09SRUEgRUxFQ1RSSUMgVEVSTUlOQUwgQ08uLCBMVEQuCi0wMDFGNjUgICAgIChiYXNlIDE2KQkJS09SRUEgRUxFQ1RSSUMgVEVSTUlOQUwgQ08uLCBMVEQuCi0JCQkJIzctMzggU09OR0RPLURPTkcKLQkJCQlZRU9OU1UtR1UgSU5DSEVPTiA0MDYtODQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTY2ICAgKGhleCkJCVBMQU5BUiBMTEMKLTAwMUY2NiAgICAgKGJhc2UgMTYpCQlQTEFOQVIgTExDCi0JCQkJMzIsIEVsa2luYSBzdHIKLQkJCQlDaGVseWFiaW5zayBTVSA0NTQwOTEKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUYtNjcgICAoaGV4KQkJSGl0YWNoaSxMdGQuCi0wMDFGNjcgICAgIChiYXNlIDE2KQkJSGl0YWNoaSxMdGQuCi0JCQkJTWluYW1pb2kgNi0yNy0xOCwgU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gMTQwLTg1NzIKLQkJCQlKQVBBTgotCi0wMC0xRi02OCAgIChoZXgpCQlNYXJ0aW5zc29uIEVsZWt0cm9uaWsgQUIKLTAwMUY2OCAgICAgKGJhc2UgMTYpCQlNYXJ0aW5zc29uIEVsZWt0cm9uaWsgQUIKLQkJCQlCb3ggOTA2MAotCQkJCUhhZ2Vyc3RlbiBTdG9ja2hvbG0gMTI2IDA5Ci0JCQkJU1dFREVOCi0KLTAwLTFGLTY5ICAgKGhleCkJCVBpbmdvb2QgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMUY2OSAgICAgKGJhc2UgMTYpCQlQaW5nb29kIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJUm0xOTE3LCBTb3V0aCBCbG9jaywgQ2FuZ3NvbmcgQmxkZy4sIFRhaXJhbiBJbmR1c3RyaWFsIFpvbmUsIEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0xRi02QSAgIChoZXgpCQlQYWNrZXRGbHV4IFRlY2hub2xvZ2llcywgSW5jLgotMDAxRjZBICAgICAoYmFzZSAxNikJCVBhY2tldEZsdXggVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNTAgMTF0aCBBdmVudWUKLQkJCQlIZWxlbmEgTVQgNTk2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTZCICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzCi0wMDFGNkIgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MKLQkJCQk2MC0zOSxLYXNhbi1kb25nLEt1bWNob24ta3UKLQkJCQlTZW91bCAgMTUzLTAyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi02QyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFGNkMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtNkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRjZEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTZFICAgKGhleCkJCVZ0ZWNoIEVuZ2luZWVyaW5nIENvcnBvcmF0aW9uCi0wMDFGNkUgICAgIChiYXNlIDE2KQkJVnRlY2ggRW5naW5lZXJpbmcgQ29ycG9yYXRpb24KLQkJCQkyMCBOZXcgRW5nbGFuZCBCdXNpbmVzcyBDZW50ZXIKLQkJCQlBbmRvdmVyIE1BIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi02RiAgIChoZXgpCQlGdWppYW4gU3VubmFkYSBDb21tdW5pY2F0aW9uIENvLixMdGQuCi0wMDFGNkYgICAgIChiYXNlIDE2KQkJRnVqaWFuIFN1bm5hZGEgQ29tbXVuaWNhdGlvbiBDby4sTHRkLgotCQkJCTcvRj8/TWFpbiBCdWlsZGluZz8/RnVqaWFuIFRvcmNoIEhpLVRlY2ggSW5ub3ZhdGlvbiBQYXJrPz8jNjExIEluZHVzdHJpYWwgUm9hZD8/IEZ1emhvdT8/UFJDIDM1MDAwMgotCQkJCTcjIEJ1aWxkaW5nIEIgRGlzdHJpY3QsIFNvZnR3YXJlIFBhcmssIFRvbmdQYW4gUm9hZCBGdXpob3UsIFBSQyAzNTAwMDMKLQkJCQlGdXpob3UgRnVqaWFuIDM1MDAwMgotCQkJCUNISU5BCi0KLTAwLTFGLTcwICAgKGhleCkJCUJvdGlrIFRlY2hub2xvZ2llcyBMVEQKLTAwMUY3MCAgICAgKGJhc2UgMTYpCQlCb3RpayBUZWNobm9sb2dpZXMgTFRECi0JCQkJVHJ1ZG92YXlhLCAxCi0JCQkJUGVyZXNsYXZsLVphbGVzc2t5IFlhcm9zbGF2c2theWEgMTUyMDIwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFGLTcxICAgKGhleCkJCXhHIFRlY2hub2xvZ3ksIEluYy4KLTAwMUY3MSAgICAgKGJhc2UgMTYpCQl4RyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjQwIFMuIFBpbmVhcHBsZSBBdmVudWUKLQkJCQlTdWl0ZSA3MDEKLQkJCQlTYXJhc290YSBGTCAzNDIzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtNzIgICAoaGV4KQkJUWluZ0RhbyBIaXBob25lIFRlY2hub2xvZ3kgQ28sLkx0ZAotMDAxRjcyICAgICAoYmFzZSAxNikJCVFpbmdEYW8gSGlwaG9uZSBUZWNobm9sb2d5IENvLC5MdGQKLQkJCQlOTy4xMDYsSmlhbmdYaSBSb2FkCi0JCQkJUWluZ0RhbyBTaGFuRG9uZyAyNjYwNzEKLQkJCQlDSElOQQotCi0wMC0xRi03MyAgIChoZXgpCQlUZXJhdmlldyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxRjczICAgICAoYmFzZSAxNikJCVRlcmF2aWV3IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMjNGLCBOby4gMjktNSwgU2VjLiAyLCBKaG9uZ2poZW5nIEUuIFJvYWQsCi0JCQkJRGFuc2h1aSBUb3duc2hpcCwKLQkJCQlUYWlwZWkgQ291bnR5ICAyNTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLTc0ICAgKGhleCkJCUVpZ2VuIERldmVsb3BtZW50Ci0wMDFGNzQgICAgIChiYXNlIDE2KQkJRWlnZW4gRGV2ZWxvcG1lbnQKLQkJCQkxODA3IFcxMHRoIEF2ZQotCQkJCVZhbmNvdXZlciBCQyBWNkogMkE5Ci0JCQkJQ0FOQURBCi0KLTAwLTFGLTc1ICAgKGhleCkJCUdpQmFobiBNZWRpYQotMDAxRjc1ICAgICAoYmFzZSAxNikJCUdpQmFobiBNZWRpYQotCQkJCTE4MTYgUm9zZWRhbGUgU3VzZW8tZG9uZwotCQkJCUthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTg4NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi03NiAgIChoZXgpCQlBaXJMb2dpYyBTeXN0ZW1zIEluYy4KLTAwMUY3NiAgICAgKGJhc2UgMTYpCQlBaXJMb2dpYyBTeXN0ZW1zIEluYy4KLQkJCQkzMDIyIFBlbGVrZSBTdC5TdWl0ZSAxCi0JCQkJTGlodSdlIEhJIDk2NzY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi03NyAgIChoZXgpCQlIRU9MIERFU0lHTgotMDAxRjc3ICAgICAoYmFzZSAxNikJCUhFT0wgREVTSUdOCi0JCQkJMSBiZCBkJ2FybW9yCi0JCQkJTEFOTklPTiBCUkVUQUdORSAyMjMwMAotCQkJCUZSQU5DRQotCi0wMC0xRi03OCAgIChoZXgpCQlCbHVlIEZveCBQb3JpbmkgVGV4dGlsZQotMDAxRjc4ICAgICAoYmFzZSAxNikJCUJsdWUgRm94IFBvcmluaSBUZXh0aWxlCi0JCQkJMTIwOCBQb2ludGUgQ2VudHJlIERyaXZlCi0JCQkJU1RFIDIwMAotCQkJCUNoYXR0YW5vb2dhIFROIDM3NDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi03OSAgIChoZXgpCQlMb2RhbSBFbGVjdHJvbmljcyBBL1MKLTAwMUY3OSAgICAgKGJhc2UgMTYpCQlMb2RhbSBFbGVjdHJvbmljcyBBL1MKLQkJCQlLYWVydmVqIDc3Ci0JCQkJUz9uZGVyYm9yZyBBbHMgREstNjQwMAotCQkJCURFTk1BUksKLQotMDAtMUYtN0EgICAoaGV4KQkJV2lXaWRlIEluYy4KLTAwMUY3QSAgICAgKGJhc2UgMTYpCQlXaVdpZGUgSW5jLgotCQkJCTEwQjEwLCBIdWEgSmllIFBsYXphCi0JCQkJIzEzIERhIFpob25nIFNpLCBIYWlkaWFuCi0JCQkJQmVpamluZyAgMTAwMDg5Ci0JCQkJQ0hJTkEKLQotMDAtMUYtN0IgICAoaGV4KQkJVGVjaE5leGlvbiBMdGQuCi0wMDFGN0IgICAgIChiYXNlIDE2KQkJVGVjaE5leGlvbiBMdGQuCi0JCQkJMTdGLTEsIE5vLiAxNiwgSmlhbiBCYSBSb2FkLAotCQkJCUNodW5nIEhvICBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi03QyAgIChoZXgpCQlXaXRlbGNvbSBBUwotMDAxRjdDICAgICAoYmFzZSAxNikJCVdpdGVsY29tIEFTCi0JCQkJVmVyZnRzZ3QgMTAKLQkJCQlNb3NzIE9zdGZvbGQgMTUxMQotCQkJCU5PUldBWQotCi0wMC0xRi03RCAgIChoZXgpCQllbWJlZGRlZCB3aXJlbGVzcyBHbWJICi0wMDFGN0QgICAgIChiYXNlIDE2KQkJZW1iZWRkZWQgd2lyZWxlc3MgR21iSAotCQkJCVNvZmxpbmdlciBTdHIuIDEwMAotCQkJCVVsbSBCVyA4OTA3NwotCQkJCUdFUk1BTlkKLQotMDAtMUYtN0UgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUY3RSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtN0YgICAoaGV4KQkJUGhhYnJpeCBMaW1pdGVkCi0wMDFGN0YgICAgIChiYXNlIDE2KQkJUGhhYnJpeCBMaW1pdGVkCi0JCQkJQmxpbmRtYW5zIEdhdGUgQ290dGFnZQotCQkJCVdvb2x0b24gSGlsbAotCQkJCU5ld2J1cnkgSGFtcHNoaXJlIFJHMjAgOVhCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUYtODAgICAoaGV4KQkJTHVjYXMgSG9sZGluZyBidgotMDAxRjgwICAgICAoYmFzZSAxNikJCUx1Y2FzIEhvbGRpbmcgYnYKLQkJCQlEb21laW4gMjgKLQkJCQlHZW1lcnQgTkIgNTQyMUFSCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUYtODEgICAoaGV4KQkJQWNjZWwgU2VtaWNvbmR1Y3RvciBDb3JwCi0wMDFGODEgICAgIChiYXNlIDE2KQkJQWNjZWwgU2VtaWNvbmR1Y3RvciBDb3JwCi0JCQkJMUYsTWFpbmJsZGcsMTQ5IENodW4gWGlhbyBSb2FkLAotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi0wMC0xRi04MiAgIChoZXgpCQlDYWwtQ29tcCBFbGVjdHJvbmljcyAmIENvbW11bmljYXRpb25zIENvLiwgTHRkCi0wMDFGODIgICAgIChiYXNlIDE2KQkJQ2FsLUNvbXAgRWxlY3Ryb25pY3MgJiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZAotCQkJCTNGLCAjMjA1LCBTZWMuMyBQZWloc2luIFJkLgotCQkJCUhzaW50ZWluIFRhaXBlaSBDb3VudHkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi04MyAgIChoZXgpCQlUZWxlcGxhbiBUZWNobm9sb2d5IFNlcnZpY2VzIFNkbiBCaGQKLTAwMUY4MyAgICAgKGJhc2UgMTYpCQlUZWxlcGxhbiBUZWNobm9sb2d5IFNlcnZpY2VzIFNkbiBCaGQKLQkJCQkyNTgwLCBUaW5na2F0IFBlcnVzYWhhYW4gNEIKLQkJCQlab24gUGVyZGFnYW5nYW4gQmViYXMgRHVhCi0JCQkJUGVyYWkgUGVuYW5nIDEzNjAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUYtODQgICAoaGV4KQkJR2lnbGUgU2VtaWNvbmR1Y3RvcgotMDAxRjg0ICAgICAoYmFzZSAxNikJCUdpZ2xlIFNlbWljb25kdWN0b3IKLQkJCQlCYXJjZWxvbmEgQWN0aXZhIC0gVml2ZXJvIEdsb3JpYXMKLQkJCQlMbGFjdW5hIDE2MgotCQkJCUJhcmNlbG9uYSAgMDgwMTgKLQkJCQlTUEFJTgotCi0wMC0xRi04NSAgIChoZXgpCQlBcHJpdmEgSVNTLCBMTEMKLTAwMUY4NSAgICAgKGJhc2UgMTYpCQlBcHJpdmEgSVNTLCBMTEMKLQkJCQk2OTAwIEUgQ2FtZWxiYWNrIFJkCi0JCQkJU3VpdGUgNzAwCi0JCQkJU2NvdHRzZGFsZSBBWiA4NTI1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtODYgICAoaGV4KQkJZGlnRWNvcgotMDAxRjg2ICAgICAoYmFzZSAxNikJCWRpZ0Vjb3IKLQkJCQkxNjI1IE4uIDExMDAgVy4KLQkJCQlTcHJpbmd2aWxsZSBVVCA4NDY2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtODcgICAoaGV4KQkJU2t5ZGlnaXRhbCBJbmMuCi0wMDFGODcgICAgIChiYXNlIDE2KQkJU2t5ZGlnaXRhbCBJbmMuCi0JCQkJIzI4LTkgV29uaHlvcm8xLWdhLCBZb25nc2FuLWd1LAotCQkJCVNlb3VsICAxNDAtODQ2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTg4ICAgKGhleCkJCUZNUyBGb3JjZSBNZWFzdXJpbmcgU3lzdGVtcyBBRwotMDAxRjg4ICAgICAoYmFzZSAxNikJCUZNUyBGb3JjZSBNZWFzdXJpbmcgU3lzdGVtcyBBRwotCQkJCUFzcHN0cmFzc2UgNgotCQkJCU9iZXJnbGF0dCBadXJpY2ggODE1NAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFGLTg5ICAgKGhleCkJCVNpZ25hbGlvbiBHbWJICi0wMDFGODkgICAgIChiYXNlIDE2KQkJU2lnbmFsaW9uIEdtYkgKLQkJCQlTdWRoYXVzd2VnIDUKLQkJCQlEcmVzZGVuIFNheG9ueSAwMTA5OQotCQkJCUdFUk1BTlkKLQotMDAtMUYtOEEgICAoaGV4KQkJRWxsaW9uIERpZ2l0YWwgSW5jLgotMDAxRjhBICAgICAoYmFzZSAxNikJCUVsbGlvbiBEaWdpdGFsIEluYy4KLQkJCQlTdWl0ZSA4MDksIFNpY294IFRvd2VyLCA1MTMtMTQsIFNhbmdkYWV3b24tZG9uZywgSnVuZ3dvbi1ndQotCQkJCVN1bmduYW0tY2l0eSBLeW9uZ2dpLWRvIDQyNi03MjYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtOEIgICAoaGV4KQkJQ2FjaGUgSVEKLTAwMUY4QiAgICAgKGJhc2UgMTYpCQlDYWNoZSBJUQotCQkJCTg4MzQgTm9ydGggQ2FwaXRhbCBvZiBUZXhhcyBId3kKLQkJCQlBdXN0aW4gVGV4YXMgNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLThDICAgKGhleCkJCUNDUyBJbmMuCi0wMDFGOEMgICAgIChiYXNlIDE2KQkJQ0NTIEluYy4KLQkJCQlTaGltb2RhY2hpdXJpLWFnYXJ1Ci0JCQkJS2FyYXN1bWEtZG9yaSwgS2FtaWd5by1rdQotCQkJCUt5b3RvIEt5b3RvIDYwMi04MDExCi0JCQkJSkFQQU4KLQotMDAtMUYtOEQgICAoaGV4KQkJSW5nZW5pZXVyYnVlcm8gU3RhcmsgR21iSCB1bmQgS28uIEtHCi0wMDFGOEQgICAgIChiYXNlIDE2KQkJSW5nZW5pZXVyYnVlcm8gU3RhcmsgR21iSCB1bmQgS28uIEtHCi0JCQkJUnVkb2xmLURpZXNlbC1TdHJhc3NlIDQ0Ci0JCQkJTGFpY2hpbmdlbiBCVyA4OTE1MAotCQkJCUdFUk1BTlkKLQotMDAtMUYtOEUgICAoaGV4KQkJTWV0cmlzIFVTQSBJbmMuCi0wMDFGOEUgICAgIChiYXNlIDE2KQkJTWV0cmlzIFVTQSBJbmMuCi0JCQkJMTI3MDEgR3JhbmQgUml2ZXIKLQkJCQlCcmlnaHRvbiBNSSA0ODExNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtOEYgICAoaGV4KQkJU2hhbmdoYWkgQmVsbG1hbm4gRGlnaXRhbCBTb3VyY2UgQ28uLEx0ZC4KLTAwMUY4RiAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBCZWxsbWFubiBEaWdpdGFsIFNvdXJjZSBDby4sTHRkLgotCQkJCTQwNC00MDggTWFpbiBCZCwgRkRVU1AsIE5vLjExIEd1b3RhaSBSZC4KLQkJCQlTaGFuZ2hhaSAgMjAwNDMzCi0JCQkJQ0hJTkEKLQotMDAtMUYtOTAgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLTAwMUY5MCAgICAgKGJhc2UgMTYpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtOTEgICAoaGV4KQkJREJTIExvZGdpbmcgVGVjaG5vbG9naWVzLCBMTEMKLTAwMUY5MSAgICAgKGJhc2UgMTYpCQlEQlMgTG9kZ2luZyBUZWNobm9sb2dpZXMsIExMQwotCQkJCTIxMTk2IExpbWJlcgotCQkJCU1pc3Npb24gVmllam8gQ0EgOTI2OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTkyICAgKGhleCkJCVZpZGVvSVEsIEluYy4KLTAwMUY5MiAgICAgKGJhc2UgMTYpCQlWaWRlb0lRLCBJbmMuCi0JCQkJMjEzIEJ1cmxpbmd0b24gUm9hZAotCQkJCVN1aXRlIDEwNAotCQkJCUJlZGZvcmQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTkzICAgKGhleCkJCVhpb3RlY2ggQ29ycG9yYXRpb24KLTAwMUY5MyAgICAgKGJhc2UgMTYpCQlYaW90ZWNoIENvcnBvcmF0aW9uCi0JCQkJNjQ1NSBGbHlpbmcgQ2xvdWQgRHJpdmUKLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTk0ICAgKGhleCkJCUxhc2NhciBFbGVjdHJvbmljcyBMdGQKLTAwMUY5NCAgICAgKGJhc2UgMTYpCQlMYXNjYXIgRWxlY3Ryb25pY3MgTHRkCi0JCQkJTW9kdWxlIEhvdXNlCi0JCQkJV2hpdGVwYXJpc2gKLQkJCQlOciBTYWxpc2J1cnkgV2lsdHNoaXJlIFNQNSAyU0oKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRi05NSAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0wMDFGOTUgICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCTE0IFJ1ZSBQYXVsIERhdXRpZXIKLQkJCQlWZWxpenkgIDc4NDU3Ci0JCQkJRlJBTkNFCi0KLTAwLTFGLTk2ICAgKGhleCkJCUFQUk9URUNIIENPLkxURAotMDAxRjk2ICAgICAoYmFzZSAxNikJCUFQUk9URUNIIENPLkxURAotCQkJCUtPTE9ORElHSVRBTCBUT1dFUiBBU1RPTiAyMDEsIDUwNS0xNAotCQkJCUdBU0FOLURPTkcsS1VNQ0hPTi1HVQotCQkJCVNFT1VMICBLU1hYIDAwMjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtOTcgICAoaGV4KQkJQkVSVEFOQSBTUkwKLTAwMUY5NyAgICAgKGJhc2UgMTYpCQlCRVJUQU5BIFNSTAotCQkJCVZJQUxFIEdBTElMRU8gRkVSUkFSSVMgMjcKLQkJCQlCUlVJTk8gVE9SSU5PIDEwMDkwCi0JCQkJSVRBTFkKLQotMDAtMUYtOTggICAoaGV4KQkJREFJSUNISS1ERU5UU1UgTFRELgotMDAxRjk4ICAgICAoYmFzZSAxNikJCURBSUlDSEktREVOVFNVIExURC4KLQkJCQlPT01PUkkgNjkwLTEKLQkJCQlLQU5JIEdJRlUgNTA5LTAyMzgKLQkJCQlKQVBBTgotCi0wMC0xRi05OSAgIChoZXgpCQlTRVJPTklDUyBjby5sdGQKLTAwMUY5OSAgICAgKGJhc2UgMTYpCQlTRVJPTklDUyBjby5sdGQKLQkJCQkjNDAxIFRlY2hub3BvbGlzLAotCQkJCTcxMUhvc2FuLWRvbmcsIERhbHNlby1ndQotCQkJCURhZWd1IEd5ZW9uZy1idWsgNzA0LTIzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi05QSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMUY5QSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyLTQzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTlCICAgKGhleCkJCVBPU0JSTwotMDAxRjlCICAgICAoYmFzZSAxNikJCVBPU0JSTwotCQkJCVNoaW55b3VuZ0d0b3dlciA2RiwgMjcxLTEKLQkJCQlTZW9oeXVuLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBLeXVuZ2dpLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtOUMgICAoaGV4KQkJTEVEQ08KLTAwMUY5QyAgICAgKGJhc2UgMTYpCQlMRURDTwotCQkJCTQ3ODAxIFcgQW5jaG9yIENvdXJ0Ci0JCQkJUGx5bW91dGggTUkgNDgxNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTlEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUY5RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi05RSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFGOUUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtOUYgICAoaGV4KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLTAwMUY5RiAgICAgKGJhc2UgMTYpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotCQkJCVByaW5zIEJvdWRld2lqbmxhYW4gNDcKLQkJCQlFZGVnZW0gQW50d2VycCBCLTI2NTAKLQkJCQlCRUxHSVVNCi0KLTAwLTFGLUEwICAgKGhleCkJCUExMCBOZXR3b3JrcwotMDAxRkEwICAgICAoYmFzZSAxNikJCUExMCBOZXR3b3JrcwotCQkJCTIzMDkgQmVyaW5nIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUExICAgKGhleCkJCUd0cmFuIEluYwotMDAxRkExICAgICAoYmFzZSAxNikJCUd0cmFuIEluYwotCQkJCTI2NTEgTGF2ZXJ5IENvdXJ0Ci0JCQkJTmV3YnVyeSBQYXJrIENBIDkxMzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BMiAgIChoZXgpCQlEYXRyb24gV29ybGQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMUZBMiAgICAgKGJhc2UgMTYpCQlEYXRyb24gV29ybGQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkzMDMwIEVudGVycHJpc2UgQ291cnQKLQkJCQlWaXN0YSBDYWxpZm9ybmlhIDkyMDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BMyAgIChoZXgpCQlUJlcgRWxlY3Ryb25pY3MoU2hlbnpoZW4pQ28uLEx0ZC4KLTAwMUZBMyAgICAgKGJhc2UgMTYpCQlUJlcgRWxlY3Ryb25pY3MoU2hlbnpoZW4pQ28uLEx0ZC4KLQkJCQkyRixCYWl5aW5nIEJ1aWxkaW5nLCBOby4xMDE5LAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNjcKLQkJCQlDSElOQQotCi0wMC0xRi1BNCAgIChoZXgpCQlTaGVuWmhlbiBHb25namluIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMUZBNCAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBHb25namluIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQk0RixCYWl5aW5nIEJ1aWxkaW5nLCBOby4xMDE5LE5hbmhhaSBSRCxTaGVrb3UsCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA2NwotCQkJCUNISU5BCi0KLTAwLTFGLUE1ICAgKGhleCkJCUJsdWUtV2hpdGUgSW5kdXN0cmllcwotMDAxRkE1ICAgICAoYmFzZSAxNikJCUJsdWUtV2hpdGUgSW5kdXN0cmllcwotCQkJCTUzMDAgQnVzaW5lc3MgRHJpdmUKLQkJCQlIdW50aW5ndG9uIEJlYWNoIENBIDkyNjQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BNiAgIChoZXgpCQlTdGlsbyBzcmwKLTAwMUZBNiAgICAgKGJhc2UgMTYpCQlTdGlsbyBzcmwKLQkJCQlWaWEgQmVzYW5hLCA0Ci0JCQkJMjAxMjIgTWlsYW5vIAotCQkJCUlUQUxZCi0KLTAwLTFGLUE3ICAgKGhleCkJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBJbmMuCi0wMDFGQTcgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4KLQkJCQkyLTYtMjEgTWluYW1pLUFveWFtYSwKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA3LTAwNjIKLQkJCQlKQVBBTgotCi0wMC0xRi1BOCAgIChoZXgpCQlTbWFydCBFbmVyZ3kgSW5zdHJ1bWVudHMgSW5jLgotMDAxRkE4ICAgICAoYmFzZSAxNikJCVNtYXJ0IEVuZXJneSBJbnN0cnVtZW50cyBJbmMuCi0JCQkJMjk3IExha2VzaG9yZSBSb2FkIEVhc3QKLQkJCQlVbml0IDEKLQkJCQlPYWt2aWxsZSBPbnRhcmlvIEw2SiAxSjMKLQkJCQlDQU5BREEKLQotMDAtMUYtQTkgICAoaGV4KQkJQXRsYW50YSBEVEgsIEluYy4KLTAwMUZBOSAgICAgKGJhc2UgMTYpCQlBdGxhbnRhIERUSCwgSW5jLgotCQkJCTUzODggTmV3IFBlYWNodHJlZSBSZAotCQkJCUNoYW1ibGVlIEdBIDMwMzQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BQSAgIChoZXgpCQlUYXNlb24sIEluYy4KLTAwMUZBQSAgICAgKGJhc2UgMTYpCQlUYXNlb24sIEluYy4KLQkJCQkgMzA5OSBOLiBGaXJzdCBTdHJlZXQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQUIgICAoaGV4KQkJSS5TIEhJR0ggVEVDSC5JTkMKLTAwMUZBQiAgICAgKGJhc2UgMTYpCQlJLlMgSElHSCBURUNILklOQwotCQkJCTYwMy0xLFN1bmdib24tcmksRGFlc28tbXl1bgotCQkJCUV1bXN1bmctZ3VuIENodW5nY2hlb25nYnVrLWRvIDM2OS04MjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtQUMgICAoaGV4KQkJR29vZG1pbGwgU3lzdGVtcyBMdGQKLTAwMUZBQyAgICAgKGJhc2UgMTYpCQlHb29kbWlsbCBTeXN0ZW1zIEx0ZAotCQkJCVNpbmlrYWxsaW9udGllIDEwCi0JCQkJRXNwb28gVXVzaW1hYSAwMjYzMAotCQkJCUZJTkxBTkQKLQotMDAtMUYtQUQgICAoaGV4KQkJQnJvd24gSW5ub3ZhdGlvbnMsIEluYwotMDAxRkFEICAgICAoYmFzZSAxNikJCUJyb3duIElubm92YXRpb25zLCBJbmMKLQkJCQkzNjkgQ29uZ3Jlc3MgU3RyZWV0Ci0JCQkJRm91cnRoIEZsb29yCi0JCQkJQm9zdG9uIE1BIDAyMjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BRSAgIChoZXgpCQlCbGljayBTb3V0aCBBZnJpY2EgKFB0eSkgTHRkCi0wMDFGQUUgICAgIChiYXNlIDE2KQkJQmxpY2sgU291dGggQWZyaWNhIChQdHkpIEx0ZAotCQkJCVBPIEJveCAxOTA4Ci0JCQkJUml2b25pYQotCQkJCUpvaGFubmVzYnVyZyBHYXV0ZW5nIDIxMDgKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMUYtQUYgICAoaGV4KQkJTmV4dElPLCBJbmMuCi0wMDFGQUYgICAgIChiYXNlIDE2KQkJTmV4dElPLCBJbmMuCi0JCQkJMTI0MDEgUmVzZWFyY2ggQmx2ZC4KLQkJCQlCbGRnLiAyIFN1aXRlIDIwMAotCQkJCUF1c3RpbiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQjAgICAoaGV4KQkJVGltZUlQUywgSW5jLgotMDAxRkIwICAgICAoYmFzZSAxNikJCVRpbWVJUFMsIEluYy4KLQkJCQkzNTIyIE4gQ29tb3RhcmEgU3QKLQkJCQlXaWNoaXRhIEtTIDY3MjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CMSAgIChoZXgpCQlDeWJlcnRlY2ggSW5jLgotMDAxRkIxICAgICAoYmFzZSAxNikJCUN5YmVydGVjaCBJbmMuCi0JCQkJOTM1IEhvcnNoYW0gUmQKLQkJCQlVbml0IEkKLQkJCQlIb3JzaGFtIFBBIDE5MDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CMiAgIChoZXgpCQlTb250aGVpbSBJbmR1c3RyaWUgRWxla3Ryb25payBHbWJICi0wMDFGQjIgICAgIChiYXNlIDE2KQkJU29udGhlaW0gSW5kdXN0cmllIEVsZWt0cm9uaWsgR21iSAotCQkJCURpZXNlbHN0cmFzc2UgNwotCQkJCUtlbXB0ZW4gQWxsZ2FldSBCYXZhcmlhIEQtODc0MzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLUIzICAgKGhleCkJCTJXaXJlCi0wMDFGQjMgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CNCAgIChoZXgpCQlTbWFydFNoYXJlIFN5c3RlbXMKLTAwMUZCNCAgICAgKGJhc2UgMTYpCQlTbWFydFNoYXJlIFN5c3RlbXMKLQkJCQlUb2Jha3N2ZWplbiAyNSwgMS4gdGguCi0JCQkJU29lYm9yZyAgREstMjg2MAotCQkJCURFTk1BUksKLQotMDAtMUYtQjUgICAoaGV4KQkJSS9PIEludGVyY29ubmVjdCBJbmMuCi0wMDFGQjUgICAgIChiYXNlIDE2KQkJSS9PIEludGVyY29ubmVjdCBJbmMuCi0JCQkJMTIwMiBFIFdha2VoYW0gQXZlCi0JCQkJU2FudGEgQW5hIENBIDkyNzA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CNiAgIChoZXgpCQlDaGkgTGluIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFGQjYgICAgIChiYXNlIDE2KQkJQ2hpIExpbiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLjE4LCBTaGVuZyBMaSAxc3QgU3QuLCBKZW4gVGUgSHNpYW5nLAotCQkJCVRhaW5hbiBUYWl3YW4gNzE3NTgKLQkJCQlDSElOQQotCi0wMC0xRi1CNyAgIChoZXgpCQlXaU1hdGUgVGVjaG5vbG9naWVzIENvcnAuCi0wMDFGQjcgICAgIChiYXNlIDE2KQkJV2lNYXRlIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCTE0QSBCdWlsZGluZyAyLCBHdWltaWFvIEdhcmRlbiwgTmFuZ3VhbmdsdSwgTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTQKLQkJCQlDSElOQQotCi0wMC0xRi1COCAgIChoZXgpCQlVbml2ZXJzYWwgUmVtb3RlIENvbnRyb2wsIEluYy4KLTAwMUZCOCAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgUmVtb3RlIENvbnRyb2wsIEluYy4KLQkJCQk1MDAgTWFtYXJvbmVjayBBdmVudWUKLQkJCQlTdWl0ZSA1MDIKLQkJCQlIYXJyaXNvbiBOWSAxMDUyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQjkgICAoaGV4KQkJUGFsdHJvbmljcwotMDAxRkI5ICAgICAoYmFzZSAxNikJCVBhbHRyb25pY3MKLQkJCQkxMTQ1IFBhbHRyb25pY3MgQ3QKLQkJCQlDcnlzdGFsIExha2UgSUwgNjAwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUJBICAgKGhleCkJCUJvWW91bmcgVGVjaC4gJiBNYXJrZXRpbmcsIEluYy4KLTAwMUZCQSAgICAgKGJhc2UgMTYpCQlCb1lvdW5nIFRlY2guICYgTWFya2V0aW5nLCBJbmMuCi0JCQkJWW91bmdkZXVuZ3BvLUd1IE11bnJhZTNnYSA4NC0yCi0JCQkJRG9uZ2d1ayBNZXJ0aWFuIDYwMgotCQkJCVNlb3VsICAxNTAtMDkzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLUJCICAgKGhleCkJCVhlbmF0ZWNoIENvLixMVEQKLTAwMUZCQiAgICAgKGJhc2UgMTYpCQlYZW5hdGVjaCBDby4sTFRECi0JCQkJIDUxNC0yIFlhIFRhYi1Eb25nIEJ1biBEYW5nIEd1Ci0JCQkJU2VvbmcgbmFtc2kgR3lvbmcgZ2ktZG8gNDYzLTgzOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi1CQyAgIChoZXgpCQlFVkdBIENvcnBvcmF0aW9uCi0wMDFGQkMgICAgIChiYXNlIDE2KQkJRVZHQSBDb3Jwb3JhdGlvbgotCQkJCTI5MDAgU2F0dXJuIFN0LgotCQkJCVN1aXRlIEIKLQkJCQlCcmVhIENBIDkyODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CRCAgIChoZXgpCQlLeW9jZXJhIFdpcmVsZXNzIENvcnAuCi0wMDFGQkQgICAgIChiYXNlIDE2KQkJS3lvY2VyYSBXaXJlbGVzcyBDb3JwLgotCQkJCTEwMzAwIENhbXB1cyBQb2ludCBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQkUgICAoaGV4KQkJU2hlbnpoZW4gTW9wbmV0IEluZHVzdHJpYWwgQ28uLEx0ZAotMDAxRkJFICAgICAoYmFzZSAxNikJCVNoZW56aGVuIE1vcG5ldCBJbmR1c3RyaWFsIENvLixMdGQKLQkJCQlGIDMuTm8uMyBLZXl1YW4gUmQuCi0JCQkJU2hlbnpoZW4gTmFuc2hhbiBTY2llbmNlJkluZHVzdHJ5IFBhcmsKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUYtQkYgICAoaGV4KQkJRnVsaHVhIE1pY3JvZWxlY3Ryb25pY3MgQ29ycC4gVGFpd2FuIEJyYW5jaAotMDAxRkJGICAgICAoYmFzZSAxNikJCUZ1bGh1YSBNaWNyb2VsZWN0cm9uaWNzIENvcnAuIFRhaXdhbiBCcmFuY2gKLQkJCQkxRiwgTm8uMTIsIFImRCBSb2FkLAotCQkJCVNjaWVuY2UtYmFzZWQgSW5kLiBQYXJrLAotCQkJCUhzaW4tQ2h1LCAzMDAgIDg4NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtQzAgICAoaGV4KQkJQ29udHJvbCBFeHByZXNzIEZpbmxhbmQgT3kKLTAwMUZDMCAgICAgKGJhc2UgMTYpCQlDb250cm9sIEV4cHJlc3MgRmlubGFuZCBPeQotCQkJCUxhaXRhYXRzaWxsYW50aWUgMwotCQkJCVNhdm9ubGlubmEgIDU3MTcwCi0JCQkJRklOTEFORAotCi0wMC0xRi1DMSAgIChoZXgpCQlIYW5sb25nIFRlY2hub2xvZ3kgQ28uLExURAotMDAxRkMxICAgICAoYmFzZSAxNikJCUhhbmxvbmcgVGVjaG5vbG9neSBDby4sTFRECi0JCQkJUk0uMjIyMCxCbG9jayBCLE5ldyBDZW50dXJ5IFBsYXphLDEgVGFpIFBpbmcgTmFuIFJvYWQsCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMDAwMgotCQkJCUNISU5BCi0KLTAwLTFGLUMyICAgKGhleCkJCUpvdyBUb25nIFRlY2hub2xvZ3kgQ28gTHRkCi0wMDFGQzIgICAgIChiYXNlIDE2KQkJSm93IFRvbmcgVGVjaG5vbG9neSBDbyBMdGQKLQkJCQk0NiBMYW5lIDMzNyBDaHVuZyBDaGVuZyBSZAotCQkJCVl1bmcgS2FuZyBDaXR5IFRhaW5hbiBDb3VudHkgNzEwNjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLUMzICAgKGhleCkJCVNtYXJ0U3luY2gsIEluYwotMDAxRkMzICAgICAoYmFzZSAxNikJCVNtYXJ0U3luY2gsIEluYwotCQkJCTQ0MDAgT2xkIENhbnRvbiBSZAotCQkJCVN1aXRlIDMwMAotCQkJCUphY2tzb24gTVMgMzkyMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUM0ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxRkM0ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUM1ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAxRkM1ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUYtQzYgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDFGQzYgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSxUYWlwZWkgMTEyCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLUM3ICAgKGhleCkJCUNhc2lvIEhpdGFjaGkgTW9iaWxlIENvbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDFGQzcgICAgIChiYXNlIDE2KQkJQ2FzaW8gSGl0YWNoaSBNb2JpbGUgQ29tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQkyLTIyOS0xLCBTYWt1cmFnYW9rYQotCQkJCUhpZ2FzaGl5YW1hdG8tc2hpIFRva3lvIDIwNy04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUYtQzggICAoaGV4KQkJVXAtVG9kYXkgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMUZDOCAgICAgKGJhc2UgMTYpCQlVcC1Ub2RheSBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTcvRi4sIFVuaWZ5IENvbW1lcmNpYWwgJiBJbmR1c3RyaWFsIEJ1aWxkaW5nCi0JCQkJMzEgVGFpIFlpcCBTdHJlZXQsIEt3dW4gVG9uZywKLQkJCQlLb3dsb29uICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUYtQzkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRkM5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUNBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUZDQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1DQiAgIChoZXgpCQlOSVcgU29sdXRpb25zCi0wMDFGQ0IgICAgIChiYXNlIDE2KQkJTklXIFNvbHV0aW9ucwotCQkJCVAuTy4gQm94IDYyCi0JCQkJT25lIFRyZWUgSGlsbCBTb3V0aCBBdXN0cmFsaWEgNTExNAotCQkJCUFVU1RSQUxJQQotCi0wMC0xRi1DQyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMUZDQyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtQ0QgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMDAxRkNEICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtQ0UgICAoaGV4KQkJUVRFQ0ggTExDCi0wMDFGQ0UgICAgIChiYXNlIDE2KQkJUVRFQ0ggTExDCi0JCQkJTm92b3phdm9kc2theWEgc3QuIDE4IGJ1aWxkLiAxCi0JCQkJTW9zY293IE1vc2NvdyByZWdpb24gMTIxMzA5Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFGLUNGICAgKGhleCkJCU1TSSBUZWNobm9sb2d5IEdtYkgKLTAwMUZDRiAgICAgKGJhc2UgMTYpCQlNU0kgVGVjaG5vbG9neSBHbWJICi0JCQkJSGFuYXVlciBMYW5kc3RyYXNzZSAzMjgtMzMwCi0JCQkJRnJhbmtmdXJ0IGFtIE1haW4gSGVzc2VuIDYwMzE0Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi1EMCAgIChoZXgpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotMDAxRkQwICAgICAoYmFzZSAxNikJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0JCQkJTm8uMjE1LE5hbi1QaW5nIFJvYWQsCi0JCQkJUGluLUplbiBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtRDEgICAoaGV4KQkJT1BURVggQ08uLExURC4KLTAwMUZEMSAgICAgKGJhc2UgMTYpCQlPUFRFWCBDTy4sTFRELgotCQkJCTUtOC0xMgotCQkJCU9nb3RvCi0JCQkJT3RzdSBTaGlnYSA1MjAtMDEwMQotCQkJCUpBUEFOCi0KLTAwLTFGLUQyICAgKGhleCkJCUNPTU1URUNIIFRFQ0hOT0xPR1kgTUFDQU8gQ09NTUVSQ0lBTCBPRkZTSE9SRSBMVEQuCi0wMDFGRDIgICAgIChiYXNlIDE2KQkJQ09NTVRFQ0ggVEVDSE5PTE9HWSBNQUNBTyBDT01NRVJDSUFMIE9GRlNIT1JFIExURC4KLQkJCQkzMSxUQUkgWUlQIFNUUkVFVCwgNy9GIEtXVU4gVE9ORywKLQkJCQlLT1dMT09OLCBIT05HS09ORyAKLQkJCQlDSElOQQotCi0wMC0xRi1EMyAgIChoZXgpCQlSSVZBIE5ldHdvcmtzIEluYy4KLTAwMUZEMyAgICAgKGJhc2UgMTYpCQlSSVZBIE5ldHdvcmtzIEluYy4KLQkJCQk1NTUgUml2YSBBdmUKLQkJCQlFYXN0IEJydW5zd2ljayBOSiAwODgxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRDQgICAoaGV4KQkJNElQTkVULCBJTkMuCi0wMDFGRDQgICAgIChiYXNlIDE2KQkJNElQTkVULCBJTkMuCi0JCQkJMzgxMjkgQ0FNQlJJREdFIENPVVJUCi0JCQkJRlJFTU9OVCBDQSA5NDUzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRDUgICAoaGV4KQkJTUlDUk9SSVNDIHMuci5vLgotMDAxRkQ1ICAgICAoYmFzZSAxNikJCU1JQ1JPUklTQyBzLnIuby4KLQkJCQlEZWxuaWNrYSAyMjIKLQkJCQlKaWNpbiBrcmFsb3ZlaHJhZGVja3kga3JhaiA1MDYwMQotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTFGLUQ2ICAgKGhleCkJCVNoZW56aGVuIEFsbHl3bGwKLTAwMUZENiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBBbGx5d2xsCi0JCQkJS2VqaXl1YW4gTmFuc2hhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xRi1ENyAgIChoZXgpCQlURUxFUkFEIFNBCi0wMDFGRDcgICAgIChiYXNlIDE2KQkJVEVMRVJBRCBTQQotCQkJCTIsIGF2ZW51ZSBkZSBsYSBidXR0ZSBhdXggY2FpbGxlcwotCQkJCUFOR0xFVCAgNjQ2MDAKLQkJCQlGUkFOQ0UKLQotMDAtMUYtRDggICAoaGV4KQkJQS1UUlVTVCBDT01QVVRFUiBDT1JQT1JBVElPTgotMDAxRkQ4ICAgICAoYmFzZSAxNikJCUEtVFJVU1QgQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQkzRi4sIE5PLjM2MSwgRlVTSU5HIDFTVCBSRC4sIEdVRUlTSEFOIFRPV05TSElQLAotCQkJCVRBT1lVQU4gIDMzMzc1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi1EOSAgIChoZXgpCQlSU0QgQ29tbXVuaWNhdGlvbnMgTHRkCi0wMDFGRDkgICAgIChiYXNlIDE2KQkJUlNEIENvbW11bmljYXRpb25zIEx0ZAotCQkJCTggQm9ycm93bWVhZG93IFJvYWQKLQkJCQlTcHJpbmdrZXJzZSBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCVN0aXJsaW5nIFNjb3RsYW5kIEZLNyA3VVcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRi1EQSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMUZEQSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1EQiAgIChoZXgpCQlOZXR3b3JrIFN1cHBseSBDb3JwLiwKLTAwMUZEQiAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIFN1cHBseSBDb3JwLiwKLQkJCQkxOTM4IE5BS0FEQUlSQSBLQU5BRQotCQkJCUlJREEgTkFHQU5PIDM5NS0wODAxCi0JCQkJSkFQQU4KLQotMDAtMUYtREMgICAoaGV4KQkJTW9iaWxlIFNhZmUgVHJhY2sgTHRkCi0wMDFGREMgICAgIChiYXNlIDE2KQkJTW9iaWxlIFNhZmUgVHJhY2sgTHRkCi0JCQkJTmllbWVua2F0dSA3MwotCQkJCTE1MTQ5IExhaHRpIAotCQkJCUZJTkxBTkQKLQotMDAtMUYtREQgICAoaGV4KQkJR0RJIExMQwotMDAxRkREICAgICAoYmFzZSAxNikJCUdESSBMTEMKLQkJCQlPbmUgTWlkQW1lcmljYSBQbGF6YQotCQkJCVN1aXRlIDEwMTAKLQkJCQlPYWticm9vayBUZXJyYWNlIElMIDYwMTgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1ERSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRkRFICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRi1ERiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRkRGICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRi1FMCAgIChoZXgpCQlFZGdlVmVsb2NpdHkgQ29ycAotMDAxRkUwICAgICAoYmFzZSAxNikJCUVkZ2VWZWxvY2l0eSBDb3JwCi0JCQkJMyBCb3VyYm9uIFN0cmVldAotCQkJCVBlYWJvZHkgTUEgMDE5NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUUxICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0wMDFGRTEgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi1FMiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAxRkUyICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNjYsIENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtRTMgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MKLTAwMUZFMyAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcwotCQkJCTYwLTM5LEthc2FuLWRvbmcsS3VtY2hvbi1rdSwKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi1FNCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAxRkU0ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2thbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMUYtRTUgICAoaGV4KQkJSW4tQ2lyY3VpdCBHbWJICi0wMDFGRTUgICAgIChiYXNlIDE2KQkJSW4tQ2lyY3VpdCBHbWJICi0JCQkJS29uaWdzYnJ1Y2tlciBTdHJhc3NlIDY5Ci0JCQkJRHJlc2RlbiAgMDEwOTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLUU2ICAgKGhleCkJCUFscGhpb24gQ29ycG9yYXRpb24KLTAwMUZFNiAgICAgKGJhc2UgMTYpCQlBbHBoaW9uIENvcnBvcmF0aW9uCi0JCQkJMTk2IFByaW5jZXRvbiBIaWdodHN0b3duIFJvYWQKLQkJCQlTdWl0ZSAxQQotCQkJCVByaW5jZXRvbiBKdW5jdGlvbiBOZXcgSmVyc2V5IDA4NTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1FNyAgIChoZXgpCQlTaW1ldAotMDAxRkU3ICAgICAoYmFzZSAxNikJCVNpbWV0Ci0JCQkJU3RyYWRhIGRlbCBQb3J0b25lIDEyOQotCQkJCUdydWdsaWFzY28gVG9yaW5vIDEwMDk1Ci0JCQkJSVRBTFkKLQotMDAtMUYtRTggICAoaGV4KQkJS1VSVVNVR0FXQSBFbGVjdHJvbmljcyBJbmR1c3RyeSBJbmMsLgotMDAxRkU4ICAgICAoYmFzZSAxNikJCUtVUlVTVUdBV0EgRWxlY3Ryb25pY3MgSW5kdXN0cnkgSW5jLC4KLQkJCQkyRiwgNTItNSwgTm9nYXRhIDZjaG9tZQotCQkJCU5ha2Fuby1LdSBUT0tZTyAxNjUtMDAyNwotCQkJCUpBUEFOCi0KLTAwLTFGLUU5ICAgKGhleCkJCVByaW50cmV4LCBJbmMuCi0wMDFGRTkgICAgIChiYXNlIDE2KQkJUHJpbnRyZXgsIEluYy4KLQkJCQkyNzYgRWFzdCBHaXNoIFJvYWQKLQkJCQlTYW4gSm9zZSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRUEgICAoaGV4KQkJQXBwbGllZCBNZWRpYSBUZWNobm9sb2dpZXMgQ29ycG9yYXRpb24KLTAwMUZFQSAgICAgKGJhc2UgMTYpCQlBcHBsaWVkIE1lZGlhIFRlY2hub2xvZ2llcyBDb3Jwb3JhdGlvbgotCQkJCTQwOTEgQU1UQyBDZW50ZXIgRHJpdmUKLQkJCQlDbGVhcndhdGVyIEZMIDMzNzY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1FQiAgIChoZXgpCQlUcmlvIERhdGFjb20gUHR5IEx0ZAotMDAxRkVCICAgICAoYmFzZSAxNikJCVRyaW8gRGF0YWNvbSBQdHkgTHRkCi0JCQkJNDEgQXN0ZXIgQXZlbnVlCi0JCQkJQ2FycnVtIERvd25zIFZpY3RvcmlhIDMyMDEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUYtRUMgICAoaGV4KQkJU3luYXBzZSBlbGVjdHJvbmlxdWUKLTAwMUZFQyAgICAgKGJhc2UgMTYpCQlTeW5hcHNlIGVsZWN0cm9uaXF1ZQotCQkJCTEwMTAsIDdlIEF2ZW51ZQotCQkJCUdyYW5kLU1lcmUgUXVlYmVjIEc5VCAyQjgKLQkJCQlDQU5BREEKLQotMDAtMUYtRUQgICAoaGV4KQkJVGVjYW4gU3lzdGVtcyBJbmMuCi0wMDFGRUQgICAgIChiYXNlIDE2KQkJVGVjYW4gU3lzdGVtcyBJbmMuCi0JCQkJMjQ1MCBaYW5rZXIgUm9hZAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1FRSAgIChoZXgpCQl1YmlzeXMgdGVjaG5vbG9naWVzIEdtYkgKLTAwMUZFRSAgICAgKGJhc2UgMTYpCQl1YmlzeXMgdGVjaG5vbG9naWVzIEdtYkgKLQkJCQlBbSBXZWhyaGFobiA0NQotCQkJCUR1c3NlbGRvcmYgTlJXIDQwMjExCi0JCQkJR0VSTUFOWQotCi0wMC0xRi1FRiAgIChoZXgpCQlTSElOU0VJIElORFVTVFJJRVMgQ08uLExURAotMDAxRkVGICAgICAoYmFzZSAxNikJCVNISU5TRUkgSU5EVVNUUklFUyBDTy4sTFRECi0JCQkJNC0xMi0xNSxIT1JJRlVORSwgS0lUQS1LVSwKLQkJCQlUT0tPWU8gIDExNC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMUYtRjAgICAoaGV4KQkJQXVkaW8gUGFydG5lcnNoaXAKLTAwMUZGMCAgICAgKGJhc2UgMTYpCQlBdWRpbyBQYXJ0bmVyc2hpcAotCQkJCUdhbGxlcnkgQ291cnQKLQkJCQlIYW5rZXkgUGxhY2UKLQkJCQlMb25kb24gIFNFMSA0QkIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRi1GMSAgIChoZXgpCQlQYXJhZG94IEhlbGxhcyBTLkEuCi0wMDFGRjEgICAgIChiYXNlIDE2KQkJUGFyYWRveCBIZWxsYXMgUy5BLgotCQkJCTMgS29yaW50aG95IFN0Ci0JCQkJTWV0YW1vcmZvc2kKLQkJCQlBdGhlbnMgQXR0aWtpIDE0NDUxCi0JCQkJR1JFRUNFCi0KLTAwLTFGLUYyICAgKGhleCkJCVZJQSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMUZGMiAgICAgKGJhc2UgMTYpCQlWSUEgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMUYsIDUzMSwgQ2h1bmctQ2hlbmcgUm9hZAotCQkJCUhzaW4tVGllbiBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi1GMyAgIChoZXgpCQlBcHBsZSwgSW5jCi0wMDFGRjMgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRjQgICAoaGV4KQkJUG93ZXIgTW9uaXRvcnMsIEluYy4KLTAwMUZGNCAgICAgKGJhc2UgMTYpCQlQb3dlciBNb25pdG9ycywgSW5jLgotCQkJCTgwMCBOb3J0aCBNYWluIFN0cmVldAotCQkJCU10LiBDcmF3Zm9yZCBWaXJnaW5pYSAyMjg0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRjUgICAoaGV4KQkJS29uZ3NiZXJnIERlZmVuY2UgJiBBZXJvc3BhY2UKLTAwMUZGNSAgICAgKGJhc2UgMTYpCQlLb25nc2JlcmcgRGVmZW5jZSAmIEFlcm9zcGFjZQotCQkJCU9sYXYgQnJ1bmJvcmdzIHZlaSA2Ci0JCQkJQmlsbGluZ3N0YWQgIDEzOTYKLQkJCQlOT1JXQVkKLQotMDAtMUYtRjYgICAoaGV4KQkJUFMgQXVkaW8gSW50ZXJuYXRpb25hbAotMDAxRkY2ICAgICAoYmFzZSAxNikJCVBTIEF1ZGlvIEludGVybmF0aW9uYWwKLQkJCQk0ODI2IFN0ZXJsaW5nIERyaXZlCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRjcgICAoaGV4KQkJTmFrYWppbWEgQWxsIFByZWNpc2lvbiBDby4sIEx0ZC4KLTAwMUZGNyAgICAgKGJhc2UgMTYpCQlOYWthamltYSBBbGwgUHJlY2lzaW9uIENvLiwgTHRkLgotCQkJCUthbWktR29teW8xNDgwCi0JCQkJU2FrYWtpLU1hY2hpCi0JCQkJSGFuaXNoaW5hLUd1biBOYWdhbm8tS2VuIDM4OS0wNjA2Ci0JCQkJSkFQQU4KLQotMDAtMUYtRjggICAoaGV4KQkJU2llbWVucyBBRywgU2VjdG9yIEluZHVzdHJ5LCBEcml2ZSBUZWNobm9sb2dpZXMsIE1vdGlvbiBDb250cm9sIFN5c3RlbXMKLTAwMUZGOCAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHLCBTZWN0b3IgSW5kdXN0cnksIERyaXZlIFRlY2hub2xvZ2llcywgTW90aW9uIENvbnRyb2wgU3lzdGVtcwotCQkJCUZyYXVlbmF1cmFjaGVyc3RyYXNzZSA4MAotCQkJCUVybGFuZ2VuIEJhdmFyaWEgOTEwNTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLUY5ICAgKGhleCkJCUFkdmFuY2VkIEtub3dsZWRnZSBBc3NvY2lhdGVzCi0wMDFGRjkgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgS25vd2xlZGdlIEFzc29jaWF0ZXMKLQkJCQkzMzUwIFNjb3R0IEJsdmQsIFN1aXRlIDQwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQtMzExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRkEgICAoaGV4KQkJQ29yZXRyZWUsIENvLCBMdGQKLTAwMUZGQSAgICAgKGJhc2UgMTYpCQlDb3JldHJlZSwgQ28sIEx0ZAotCQkJCSM1MDIgSVQgVmVudHVyZSBUb3duLCA2OTQKLQkJCQlUYXByaWItZG9uZywgWXVzdW5nLUd1Ci0JCQkJRGFlamVvbiAgMzA1LTUxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi1GQiAgIChoZXgpCQlHcmVlbiBQYWNrZXQgQmhkCi0wMDFGRkIgICAgIChiYXNlIDE2KQkJR3JlZW4gUGFja2V0IEJoZAotCQkJCUxvdCAxLTQsIEluY3ViYXRvciAyLCBUZWNobm9sb2d5IFBhcmsgTWFsYXlzaWEKLQkJCQlMZWJ1aHJheWEgUHVjaG9uZyAtIFNnIEJlc2ksIEJ1a2l0IEphbGlsCi0JCQkJS3VhbGEgTHVtcHVyIFdpbGF5YWggUGVyc2VrdXR1YW4gNTcwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRi1GQyAgIChoZXgpCQlSaWNjaXVzK1NvaG4gR21iSAotMDAxRkZDICAgICAoYmFzZSAxNikJCVJpY2NpdXMrU29obiBHbWJICi0JCQkJSGF5bmF1ZXIgU3RyLiA0OQotCQkJCUJlcmxpbiAgMTIyNDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLUZEICAgKGhleCkJCUluZGlnbyBNb2JpbGUgVGVjaG5vbG9naWVzIENvcnAuCi0wMDFGRkQgICAgIChiYXNlIDE2KQkJSW5kaWdvIE1vYmlsZSBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQkxMUYsIE5vMjIsIExhbjQwNyxUaURpbmcgQmx2ZCBTZWN0aW9uMiwgTmVpaHUgVGVjaG5vbG9neSBQYXJrCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtRkUgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotMDAxRkZFICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkCi0JCQkJUm9zZXZpbGxlIENBIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1GRiAgIChoZXgpCQlSZXNwaXJvbmljcywgSW5jLgotMDAxRkZGICAgICAoYmFzZSAxNikJCVJlc3Bpcm9uaWNzLCBJbmMuCi0JCQkJMTc0MCBHb2xkZW4gTWlsZSBIaWdod2F5Ci0JCQkJTW9ucm9ldmlsbGUgUEEgMTUxNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTAwICAgKGhleCkJCUxFWE1BUksgSU5URVJOQVRJT05BTCwgSU5DLgotMDAyMDAwICAgICAoYmFzZSAxNikJCUxFWE1BUksgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTc0MCBORVcgQ0lSQ0xFIFJPQUQKLQkJCQlCTERHLiAzNQotCQkJCUxFWElOR1RPTiBLWSA0MDU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMDEgICAoaGV4KQkJRFNQIFNPTFVUSU9OUywgSU5DLgotMDAyMDAxICAgICAoYmFzZSAxNikJCURTUCBTT0xVVElPTlMsIElOQy4KLQkJCQkyNDY0IEVNQkFSQ0FERVJPIFdBWQotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMDIgICAoaGV4KQkJU0VSSVRFQ0ggRU5URVJQUklTRSBDTy4sIExURC4KLTAwMjAwMiAgICAgKGJhc2UgMTYpCQlTRVJJVEVDSCBFTlRFUlBSSVNFIENPLiwgTFRELgotCQkJCUZMLiAxODIsIE5PLiA1MzEtMQotCQkJCUNIVU5HIENIRU5HIFJPQUQgSFNJTiBUSUVOIENJVFkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtMDMgICAoaGV4KQkJUElYRUwgUE9XRVIgTFRELgotMDAyMDAzICAgICAoYmFzZSAxNikJCVBJWEVMIFBPV0VSIExURC4KLQkJCQlVbml0IDUgQ29sbGVnZSBCdXNpbmVzcyBQYXJrCi0JCQkJQ29sZGhhbXMgTGFuZQotCQkJCUNBTUJSSURHRSAgQ0IxIDNIRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIwLTA0ICAgKGhleCkJCVlBTUFUQUtFLUhPTkVZV0VMTCBDTy4sIExURC4KLTAwMjAwNCAgICAgKGJhc2UgMTYpCQlZQU1BVEFLRS1IT05FWVdFTEwgQ08uLCBMVEQuCi0JCQkJNTQgU1VaVUtBV0EsIElTRUhBUkEKLQkJCQlLQU5BR0FXQSAyNTktMTEgIAotCQkJCUpBUEFOCi0KLTAwLTIwLTA1ICAgKGhleCkJCVNJTVBMRSBURUNITk9MT0dZCi0wMDIwMDUgICAgIChiYXNlIDE2KQkJU0lNUExFIFRFQ0hOT0xPR1kKLQkJCQkzMDAxIERBSU1MRVIgUk9BRAotCQkJCVNBTlRBIEFOQSBDQSA5MjcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMDYgICAoaGV4KQkJR0FSUkVUVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAyMDA2ICAgICAoYmFzZSAxNikJCUdBUlJFVFQgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk0ODUzMSBXQVJNU1BSSU5HUyBCTFZELgotCQkJCUZSRU1PTlQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTA3ICAgKGhleCkJCVNGQSwgSU5DLgotMDAyMDA3ICAgICAoYmFzZSAxNikJCVNGQSwgSU5DLgotCQkJCTE0MDEgTUNDT1JNSUNLIERSSVZFCi0JCQkJTEFORE9WRVIgTUQgMjA3ODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTA4ICAgKGhleCkJCUNBQkxFICYgQ09NUFVURVIgVEVDSE5PTE9HWQotMDAyMDA4ICAgICAoYmFzZSAxNikJCUNBQkxFICYgQ09NUFVURVIgVEVDSE5PTE9HWQotCQkJCTE1NTUgU08uIFNJTkNMQUlSIFNUUkVFVAotCQkJCUFOQUhFSU0gQ0EgOTI4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTA5ICAgKGhleCkJCVBBQ0tBUkQgQkVMTCBFTEVDLiwgSU5DLgotMDAyMDA5ICAgICAoYmFzZSAxNikJCVBBQ0tBUkQgQkVMTCBFTEVDLiwgSU5DLgotCQkJCTk0MjUgQ0FOT0dBIEFWRU5VRQotCQkJCUNIQVRTV09SVEggQ0EgOTEzMjExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0wQSAgIChoZXgpCQlTT1VSQ0UtQ09NTSBDT1JQLgotMDAyMDBBICAgICAoYmFzZSAxNikJCVNPVVJDRS1DT01NIENPUlAuCi0JCQkJMjUwMjAgVy4gQVZFTlVFIFNUQU5GT1JECi0JCQkJVU5JVCAxODAKLQkJCQlWQUxFTkNJQSBDQSA5MTM1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMEIgICAoaGV4KQkJT0NUQUdPTiBTWVNURU1TIENPUlAuCi0wMDIwMEIgICAgIChiYXNlIDE2KQkJT0NUQUdPTiBTWVNURU1TIENPUlAuCi0JCQkJNjUxMCBXLiA5MVNUIEFWRU5VRQotCQkJCVdFU1RNSU5TVEVSIENPIDgwMDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0wQyAgIChoZXgpCQlBREFTVFJBIFNZU1RFTVMgQ09SUC4KLTAwMjAwQyAgICAgKGJhc2UgMTYpCQlBREFTVFJBIFNZU1RFTVMgQ09SUC4KLQkJCQkyODMxMCBJTkRVU1RSSUFMIEJMVkQuLVNURS1LCi0JCQkJSEFZV0FSRCBDQSA5NDU0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMEQgICAoaGV4KQkJQ0FSTCBaRUlTUwotMDAyMDBEICAgICAoYmFzZSAxNikJCUNBUkwgWkVJU1MKLQkJCQlQT1NURkFDSCAxMzgwCi0JCQkJQUJULiAgMS1FTCA3MzQ0NCBPQkVSS09DSEVOCi0JCQkJR0VSTUFOWQotCi0wMC0yMC0wRSAgIChoZXgpCQlTQVRFTExJVEUgVEVDSE5PTE9HWSBNR01ULCBJTkMKLTAwMjAwRSAgICAgKGJhc2UgMTYpCQlTQVRFTExJVEUgVEVDSE5PTE9HWSBNR01ULCBJTkMKLQkJCQkzNTMwIEhZTEFORCBBVkVOVUUKLQkJCQlDT1NUQSBNRVNBIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0wRiAgIChoZXgpCQlUQU5CQUMgQ08uLCBMVEQuCi0wMDIwMEYgICAgIChiYXNlIDE2KQkJVEFOQkFDIENPLiwgTFRELgotCQkJCVNBS1VSQUkgREFJIDIgQkcKLQkJCQkyNy00IElSSVlBIDEtQ0hPTUUgVEFJVE8tS1UgVE9LWU8gMTEwCi0JCQkJSkFQQU4KLQotMDAtMjAtMTAgICAoaGV4KQkJSkVPTCBTWVNURU0gVEVDSE5PTE9HWSBDTy4gTFRECi0wMDIwMTAgICAgIChiYXNlIDE2KQkJSkVPTCBTWVNURU0gVEVDSE5PTE9HWSBDTy4gTFRECi0JCQkJMy0xLTIgTXVzYXNoaW5vCi0JCQkJQWtpc2hpbWEtc2hpIFRva3lvIDE5Ni04NTU4Ci0JCQkJSkFQQU4KLQotMDAtMjAtMTEgICAoaGV4KQkJQ0FOT1BVUyBDTy4sIExURC4KLTAwMjAxMSAgICAgKGJhc2UgMTYpCQlDQU5PUFVTIENPLiwgTFRELgotCQkJCUtPQkUgSEktVEVDSCBQQVJLCi0JCQkJMS0yLTIgTVVST1RBTkkgTklTSEktS1UgS09CRQotCQkJCTY1MS0yMiBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLTEyICAgKGhleCkJCUNBTVRST05JQ1MgTUVESUNBTCBTWVNURU1TCi0wMDIwMTIgICAgIChiYXNlIDE2KQkJQ0FNVFJPTklDUyBNRURJQ0FMIFNZU1RFTVMKLQkJCQlQLk8uIEJPWCA5NTAKLQkJCQlIQVJUTEFORCBXSSA1MzAyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMTMgICAoaGV4KQkJRElWRVJTSUZJRUQgVEVDSE5PTE9HWSwgSU5DLgotMDAyMDEzICAgICAoYmFzZSAxNikJCURJVkVSU0lGSUVEIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkxMTIgRS4gU1RBVEUgU1RSRUVUCi0JCQkJUklER0VMQU5EIE1TIDM5MTU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0xNCAgIChoZXgpCQlHTE9CQUwgVklFVyBDTy4sIExURC4KLTAwMjAxNCAgICAgKGJhc2UgMTYpCQlHTE9CQUwgVklFVyBDTy4sIExURC4KLQkJCQk0RiwgTk8uIDIzLCBMQU5FIDMwNgotCQkJCUZVLVRFSCAxIFJELiBIU0ktQ0hJSCwgVEFJUEVJLCBIU0lFTgotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIwLTE1ICAgKGhleCkJCUFDVElTIENPTVBVVEVSIFNBCi0wMDIwMTUgICAgIChiYXNlIDE2KQkJQUNUSVMgQ09NUFVURVIgU0EKLQkJCQkxNiBDSEVNSU4gREVTIEFVTFgKLQkJCQkxMjI4IFBMQU4gTEVTIE9WQVRFUwotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjAtMTYgICAoaGV4KQkJU0hPV0EgRUxFQ1RSSUMgV0lSRSAmIENBQkxFIENPCi0wMDIwMTYgICAgIChiYXNlIDE2KQkJU0hPV0EgRUxFQ1RSSUMgV0lSRSAmIENBQkxFIENPCi0JCQkJTk8uIDIwLTI1LCBTRUlTSElOIDgtQ0hPTUUKLQkJCQlTQUdBTUlIQVJBLCBLQU5BR0FXQQotCQkJCTIyOSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLTE3ICAgKGhleCkJCU9SQk9URUNICi0wMDIwMTcgICAgIChiYXNlIDE2KQkJT1JCT1RFQ0gKLQkJCQlJTkRVU1RSSUFMIFpPTkUKLQkJCQlQLk8uIEJPWCAyMTUgNzA2NTEgIFlBVk5FCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTIwLTE4ICAgKGhleCkJCUNJUyBURUNITk9MT0dZIElOQy4KLTAwMjAxOCAgICAgKGJhc2UgMTYpCQlDSVMgVEVDSE5PTE9HWSBJTkMuCi0JCQkJRkwuIDktMSwgTk8uIDk0LCBQQU8gQ0hVTkcgUkQuCi0JCQkJSFNJTiBUSUVOIENJVFkKLQkJCQlUQUlQRUkgSFNJRU4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtMTkgICAoaGV4KQkJT0hMRVIgR21iSAotMDAyMDE5ICAgICAoYmFzZSAxNikJCU9ITEVSIEdtYkgKLQkJCQlNQVlCQUNIU1RSQVNFIDMwCi0JCQkJNzEzMzIgV0FJQkxJTkdFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC0yMC0xQSAgIChoZXgpCQlNUlYgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMjAxQSAgICAgKGJhc2UgMTYpCQlNUlYgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyMDQxNSBOb3JkaG9mZiBTdC4KLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0xQiAgIChoZXgpCQlOT1JUSEVSTiBURUxFQ09NL05FVFdPUksKLTAwMjAxQiAgICAgKGJhc2UgMTYpCQlOT1JUSEVSTiBURUxFQ09NL05FVFdPUksKLQkJCQlTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMjUwIFNJRE5FWSBTVFJFRVQgQkVMTEVWSUxMRSwgT05UQVJJTwotCQkJCUs4TiA1QjcKLQkJCQlDQU5BREEKLQotMDAtMjAtMUMgICAoaGV4KQkJRVhDRUwsIElOQy4KLTAwMjAxQyAgICAgKGJhc2UgMTYpCQlFWENFTCwgSU5DLgotCQkJCTM1NSBPTEQgUExZTU9VVEggUk9BRAotCQkJCVNBR0FNT1JFIEJFQUNIIE1BIDAyNTYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0xRCAgIChoZXgpCQlLQVRBTkEgUFJPRFVDVFMKLTAwMjAxRCAgICAgKGJhc2UgMTYpCQlLQVRBTkEgUFJPRFVDVFMKLQkJCQlUSEUgU1RVRElPLCBRVUFSUlkgSElMTCBCT1gsCi0JCQkJV0lMVFNISVJFIFNOMTQgOUhUICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC0xRSAgIChoZXgpCQlORVRRVUVTVCBDT1JQT1JBVElPTgotMDAyMDFFICAgICAoYmFzZSAxNikJCU5FVFFVRVNUIENPUlBPUkFUSU9OCi0JCQkJNTIzIEZFTExPV1NISVAgUk9BRC1TVEUuIzIwNQotCQkJCU1ULiBMQVVSRUwgTkogMDgwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTFGICAgKGhleCkJCUJFU1QgUE9XRVIgVEVDSE5PTE9HWSwgSU5DLgotMDAyMDFGICAgICAoYmFzZSAxNikJCUJFU1QgUE9XRVIgVEVDSE5PTE9HWSwgSU5DLgotCQkJCVAuTy4gQk9YIDI4MAotCQkJCU5FQ0VEQUggV0kgNTQ2NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTIwICAgKGhleCkJCU1FR0FUUk9OIENPTVBVVEVSIElORFVTVFJJRVMgUFRZLCBMVEQuCi0wMDIwMjAgICAgIChiYXNlIDE2KQkJTUVHQVRST04gQ09NUFVURVIgSU5EVVNUUklFUyBQVFksIExURC4KLQkJCQkKLQkJCQlVTklUIDIsICA2Mi02NCBDSEFSVEVSIFNUUkVFVCBSSU5HV09PRCBWCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLTIxICAgKGhleCkJCUFMR09SSVRITVMgU09GVFdBUkUgUFZULiBMVEQuCi0wMDIwMjEgICAgIChiYXNlIDE2KQkJQUxHT1JJVEhNUyBTT0ZUV0FSRSBQVlQuIExURC4KLQkJCQk4MyBKT0xMWSBNQUtFUiBDSEFNQkVSUyBJSQotCQkJCU5BUklNQU4gUE9JTlQgQk9NQkFZICA0MDAwMjEKLQkJCQlJTkRJQQotCQkJCUlORElBCi0KLTAwLTIwLTIyICAgKGhleCkJCU5NUyBDb21tdW5pY2F0aW9ucwotMDAyMDIyICAgICAoYmFzZSAxNikJCU5NUyBDb21tdW5pY2F0aW9ucwotCQkJCTEwMCBDcm9zc2luZyBCb3VsZXZhcmQKLQkJCQlGcmFtaW5naGFtIE1BIDAxNzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yMyAgIChoZXgpCQlULkMuIFRFQ0hOT0xPR0lFUyBQVFkuIExURAotMDAyMDIzICAgICAoYmFzZSAxNikJCVQuQy4gVEVDSE5PTE9HSUVTIFBUWS4gTFRECi0JCQkJNi82MCBGQUlSRk9SRCBSRC4KLQkJCQlQQURTVE9XICBOU1cyMjExCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLTI0ICAgKGhleCkJCVBBQ0lGSUMgQ09NTVVOSUNBVElPTiBTQ0lFTkNFUwotMDAyMDI0ICAgICAoYmFzZSAxNikJCVBBQ0lGSUMgQ09NTVVOSUNBVElPTiBTQ0lFTkNFUwotCQkJCTk2NDUgU0NSQU5UT04gUk9BRAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMjUgICAoaGV4KQkJQ09OVFJPTCBURUNITk9MT0dZLCBJTkMuCi0wMDIwMjUgICAgIChiYXNlIDE2KQkJQ09OVFJPTCBURUNITk9MT0dZLCBJTkMuCi0JCQkJNTczNCBNSURETEVCUk9PSyBQSUtFCi0JCQkJS05PWFZJTExFIFROIDM3OTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yNiAgIChoZXgpCQlBTUtMWSBTWVNURU1TLCBJTkMuCi0wMDIwMjYgICAgIChiYXNlIDE2KQkJQU1LTFkgU1lTVEVNUywgSU5DLgotCQkJCTE1ODAxIFJPQ0tGSUVMRCBCTFZELiwgI1AKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTI3ICAgKGhleCkJCU1JTkcgRk9SVFVORSBJTkRVU1RSWSBDTy4sIExURAotMDAyMDI3ICAgICAoYmFzZSAxNikJCU1JTkcgRk9SVFVORSBJTkRVU1RSWSBDTy4sIExURAotCQkJCTRGLCBOTy4gODAwIENIVU5HIENIRU5HIFJELAotCQkJCUNIVU5HIEhPIENJVFksIFRBSVBFSSBIU0lFTgotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC0yOCAgIChoZXgpCQlXRVNUIEVHRyBTWVNURU1TLCBJTkMuCi0wMDIwMjggICAgIChiYXNlIDE2KQkJV0VTVCBFR0cgU1lTVEVNUywgSU5DLgotCQkJCTY1IEhJR0ggUklER0UgUk9BRC1TVEUuIzI4NgotCQkJCVNUQU1GT1JEIENUIDA2OTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yOSAgIChoZXgpCQlURUxFUFJPQ0VTU0lORyBQUk9EVUNUUywgSU5DLgotMDAyMDI5ICAgICAoYmFzZSAxNikJCVRFTEVQUk9DRVNTSU5HIFBST0RVQ1RTLCBJTkMuCi0JCQkJNDU2NSBFLiBJTkRVU1RSSUFMIFNUUkVFVAotCQkJCUJVSUxESU5HICM3SwotCQkJCVNJTUkgVkFMTEVZIENBIDkzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yQSAgIChoZXgpCQlOLlYuIERaSU5FCi0wMDIwMkEgICAgIChiYXNlIDE2KQkJTi5WLiBEWklORQotCQkJCUtPTklORyBMRU9QT0xEIElJSSBMQUFOIDIKLQkJCQlCIC0gODUwMCBLT1JUUklKSwotCQkJCUJFTEdJVU0KLQkJCQlCRUxHSVVNCi0KLTAwLTIwLTJCICAgKGhleCkJCUFEVkFOQ0VEIFRFTEVDT01NVU5JQ0FUSU9OUyBNT0RVTEVTLCBMVEQuCi0wMDIwMkIgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgVEVMRUNPTU1VTklDQVRJT05TIE1PRFVMRVMsIExURC4KLQkJCQkKLQkJCQlNT1VOVCBQTEVBU0FOVCBIT1VTRSBIVU5USU5HRE9OIFJPQUQsCi0JCQkJQ2FtYnJpZGdlIENCMyBPQkwgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIwLTJDICAgKGhleCkJCVdFTExUUk9OSVggQ08uLCBMVEQuCi0wMDIwMkMgICAgIChiYXNlIDE2KQkJV0VMTFRST05JWCBDTy4sIExURC4KLQkJCQkzRiwgTk8uIDM2LTEsIEhXQU5HIEhTSSBTVFJFRVQKLQkJCQlTSElOLUxJTiBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtMkQgICAoaGV4KQkJVEFJWU8gQ09SUE9SQVRJT04KLTAwMjAyRCAgICAgKGJhc2UgMTYpCQlUQUlZTyBDT1JQT1JBVElPTgotCQkJCTEtMi02IFNBTk5PSCwgT0hUQS1LVQotCQkJCVRPS1lPCi0JCQkJMTQzIAotCQkJCUpBUEFOCi0KLTAwLTIwLTJFICAgKGhleCkJCURBWVNUQVIgRElHSVRBTAotMDAyMDJFICAgICAoYmFzZSAxNikJCURBWVNUQVIgRElHSVRBTAotCQkJCTU1NTYgQVRMQU5UQSBISUdIV0FZCi0JCQkJRkxPV0VSWSBCUkFOQ0ggR0EgMzA1NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTJGICAgKGhleCkJCVpFVEEgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwMjAyRiAgICAgKGJhc2UgMTYpCQlaRVRBIENPTU1VTklDQVRJT05TLCBMVEQuCi0JCQkJWkVOSVRIIEhPVVNFCi0JCQkJR1JFU0ZPUkQgSU5EVVNUUklBTCBQQVJLCi0JCQkJV1JFWEhBTSwgQ0xXWUQsIExMMTIgOExYICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC0zMCAgIChoZXgpCQlBTkFMT0cgJiBESUdJVEFMIFNZU1RFTVMKLTAwMjAzMCAgICAgKGJhc2UgMTYpCQlBTkFMT0cgJiBESUdJVEFMIFNZU1RFTVMKLQkJCQkxLzIgTEFWRUxMRSBST0FECi0JCQkJQkFOR0FMT1JFIC0gNTYwMDAxCi0JCQkJSU5ESUEKLQkJCQlJTkRJQQotCi0wMC0yMC0zMSAgIChoZXgpCQlFUlRFQyBHbWJICi0wMDIwMzEgICAgIChiYXNlIDE2KQkJRVJURUMgR21iSAotCQkJCUFNIFBFU1RBTE9aWklSSU5HIDI0Ci0JCQkJRC05MTA1OCBFUkxBTkdFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC0yMC0zMiAgIChoZXgpCQlBTENBVEVMIFRBSVNFTAotMDAyMDMyICAgICAoYmFzZSAxNikJCUFMQ0FURUwgVEFJU0VMCi0JCQkJNCwgTUlORyBTSEVORyBTVFJFRVQgVFUtQ0hFTkcKLQkJCQlJTkRVU1RSSUFMIERJU1RSSUNUIFRBSVBFSSBIU0lFSAotCQkJCVRBSVdBTiBST0MKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIwLTMzICAgKGhleCkJCVNZTkFQU0UgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIwMzMgICAgIChiYXNlIDE2KQkJU1lOQVBTRSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk0ODIyIEFMQkVNQVJMRSBST0FELCAjMTA0Ci0JCQkJQ0hBUkxPVFRFIE5DIDI4MjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0zNCAgIChoZXgpCQlST1RFQyBJTkRVU1RSSUVBVVRPTUFUSU9OIEdNQkgKLTAwMjAzNCAgICAgKGJhc2UgMTYpCQlST1RFQyBJTkRVU1RSSUVBVVRPTUFUSU9OIEdNQkgKLQkJCQlHVVRFTkJFUkdTVFIuIDE1Ci0JCQkJNzY0MzcgUkFTVEFUVAotCQkJCUdFUk1BTlkKLQotMDAtMjAtMzUgICAoaGV4KQkJSUJNIENvcnAKLTAwMjAzNSAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMzYgICAoaGV4KQkJQk1DIFNPRlRXQVJFCi0wMDIwMzYgICAgIChiYXNlIDE2KQkJQk1DIFNPRlRXQVJFCi0JCQkJMTYwMCBDSVRZIFdFU1QgQkxWRC4sICMxNjAwCi0JCQkJSE9VU1RPTiBUWCA3NzA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMzcgICAoaGV4KQkJU0VBR0FURSBURUNITk9MT0dZCi0wMDIwMzcgICAgIChiYXNlIDE2KQkJU0VBR0FURSBURUNITk9MT0dZCi0JCQkJODAwMSBFLiBCTE9PTUlOR1RPTiBGV1kKLQkJCQlNL1MgLSBNUFMwNDMKLQkJCQlCTE9PTUlOR1RPTiBNTiA1NTQyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMzggICAoaGV4KQkJVk1FIE1JQ1JPU1lTVEVNUyBJTlRFUk5BVElPTkFMIENPUlBPUkFUSU9OCi0wMDIwMzggICAgIChiYXNlIDE2KQkJVk1FIE1JQ1JPU1lTVEVNUyBJTlRFUk5BVElPTkFMIENPUlBPUkFUSU9OCi0JCQkJMTIwOTAgUy4gTUVNT1JJQUwgUEFSS1dBWQotCQkJCUhVTlRTVklMTEUgQUwgMzU4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTM5ICAgKGhleCkJCVNDSU5FVFMKLTAwMjAzOSAgICAgKGJhc2UgMTYpCQlTQ0lORVRTCi0JCQkJMTU3NSBURU5BS0EgLSBTVEUjIE44Ci0JCQkJU1VOTllWQUxFIENBIDk0MDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0zQSAgIChoZXgpCQlESUdJVEFMIEJJME1FVFJJQ1MgSU5DLgotMDAyMDNBICAgICAoYmFzZSAxNikJCURJR0lUQUwgQkkwTUVUUklDUyBJTkMuCi0JCQkJNTYwMCBST1dMQU5EIFJPQUQtIFNURS4jMjA1Ci0JCQkJTUlOTkVUT05LQSBNTiA1NTM2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtM0IgICAoaGV4KQkJV0lTRE0gTFRELgotMDAyMDNCICAgICAoYmFzZSAxNikJCVdJU0RNIExURC4KLQkJCQlTVC4gSk9ITlMgSU5OT1ZBVElPTiBDRU5UUkUKLQkJCQlDT1dMRVkgUk9BRCBDQU1CUklER0UgIENCNCA0V1MKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtM0MgICAoaGV4KQkJRVVST1RJTUUgQUIKLTAwMjAzQyAgICAgKGJhc2UgMTYpCQlFVVJPVElNRSBBQgotCQkJCUJPWCAyNzcKLQkJCQlTLTUzMjI0IFNLQVJBCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTIwLTNEICAgKGhleCkJCUhvbmV5d2VsbCBFQ0MKLTAwMjAzRCAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgRUNDCi0JCQkJMTk4NSBEb3VnbGFzIERyaXZlCi0JCQkJTU4xMC0xMjFBCi0JCQkJR29sZGVuIFZhbGxleSBNTiA1NTQyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtM0UgICAoaGV4KQkJTG9naUNhbiBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjAzRSAgICAgKGJhc2UgMTYpCQlMb2dpQ2FuIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE1MCBLQVJMIENMQVJLIFJPQUQKLQkJCQlFRE1PTlRPTiwgQUxCRVJUQSBUNk4gMUUyICAKLQkJCQlDQU5BREEKLQotMDAtMjAtM0YgICAoaGV4KQkJSlVLSSBDT1JQT1JBVElPTgotMDAyMDNGICAgICAoYmFzZSAxNikJCUpVS0kgQ09SUE9SQVRJT04KLQkJCQk4LTItMSBLT0tVUllPLUNITwotCQkJCUNIT0ZVLVNISSBUT0tZTyAgMTgyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0yMC00MCAgIChoZXgpCQlNb3Rvcm9sYSBCcm9hZGJhbmQgQ29tbXVuaWNhdGlvbnMgU2VjdG9yCi0wMDIwNDAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgQnJvYWRiYW5kIENvbW11bmljYXRpb25zIFNlY3RvcgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTQxICAgKGhleCkJCURBVEEgTkVUCi0wMDIwNDEgICAgIChiYXNlIDE2KQkJREFUQSBORVQKLQkJCQlTVVdPTiBQLk8uIEJPWCAxMDYsIFNVV09OCi0JCQkJS1lVTkdHSS1ETwotCQkJCUtPUkVBIDQ0MC02MDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjAtNDIgICAoaGV4KQkJREFUQU1FVFJJQ1MgQ09SUC4KLTAwMjA0MiAgICAgKGJhc2UgMTYpCQlEQVRBTUVUUklDUyBDT1JQLgotCQkJCTg5NjYgQ09NQU5DSEUgQVZFLgotCQkJCUNIQVRTV09SVEggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTQzICAgKGhleCkJCU5FVVJPTiBDT01QQU5ZIExJTUlURUQKLTAwMjA0MyAgICAgKGJhc2UgMTYpCQlORVVST04gQ09NUEFOWSBMSU1JVEVECi0JCQkJMTUgS1dBSSBZSSBST0FELCAgQkxPQ0sgMiwKLQkJCQkyMVNUIEZMT09SLCBGTEFUIEIKLQkJCQlLV0FJIENIVU5HLCAgIE4uVC4gIAotCQkJCUhPTkcgS09ORwotCi0wMC0yMC00NCAgIChoZXgpCQlHRU5JVEVDSCBQVFkgTFRECi0wMDIwNDQgICAgIChiYXNlIDE2KQkJR0VOSVRFQ0ggUFRZIExURAotCQkJCVAuTy4gQk9YIDE5NgotCQkJCUFTUVVJVEggTlNXIDIwNzcKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjAtNDUgICAoaGV4KQkJSU9OIE5ldHdvcmtzLCBJbmMuCi0wMDIwNDUgICAgIChiYXNlIDE2KQkJSU9OIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTU1MSBTb3V0aCBXYXNoaW5ndG9uIEF2ZS4KLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC00NiAgIChoZXgpCQlDSVBSSUNPLCBJTkMuCi0wMDIwNDYgICAgIChiYXNlIDE2KQkJQ0lQUklDTywgSU5DLgotCQkJCTI4MDAgQ0FNUFVTIERSSVZFLS1TVUlURSAjNjAKLQkJCQlQTFlNT1VUSCBNTiA1NTQ0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNDcgICAoaGV4KQkJU1RFSU5CUkVDSEVSIENPUlAuCi0wMDIwNDcgICAgIChiYXNlIDE2KQkJU1RFSU5CUkVDSEVSIENPUlAuCi0JCQkJMzAgTk9SVEggQVZFTlVFCi0JCQkJQlVSTElOR1RPTiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNDggICAoaGV4KQkJTWFyY29uaSBDb21tdW5pY2F0aW9ucwotMDAyMDQ4ICAgICAoYmFzZSAxNikJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMKLQkJCQkxMDAwIEZvcmUgRHJpdmUKLQkJCQlXYXJyZW5kYWxlIFBBIDE1MDg2LTc1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTQ5ICAgKGhleCkJCUNPTVRST04sIElOQy4KLTAwMjA0OSAgICAgKGJhc2UgMTYpCQlDT01UUk9OLCBJTkMuCi0JCQkJU0FOQ0FUSEVSSU5BIEJMREcuCi0JCQkJMzYtMTIgU0hJTkpVS1UgMS1DSE9NRSBTSElOSlVLVS1LVQotCQkJCVRPS1lPIDE2MCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLTRBICAgKGhleCkJCVBST05FVCBHTUJICi0wMDIwNEEgICAgIChiYXNlIDE2KQkJUFJPTkVUIEdNQkgKLQkJCQlLQVJMU1RSQVNTRSA0OQotCQkJCUQtNzgwNSBGIFZJTExJTkdFTi1TQ0hXRU5OSU5HRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0yMC00QiAgIChoZXgpCQlBVVRPQ09NUFVURVIgQ08uLCBMVEQuCi0wMDIwNEIgICAgIChiYXNlIDE2KQkJQVVUT0NPTVBVVEVSIENPLiwgTFRELgotCQkJCU5PLiAxOCwgUEVJIFlVQU4gUk9BRAotCQkJCUNIVU5HLUxJIENJVFksIFRBTy1ZVUFOIEhTSUVOCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIwLTRDICAgKGhleCkJCU1JVFJPTiBDT01QVVRFUiBQVEUgTFRELgotMDAyMDRDICAgICAoYmFzZSAxNikJCU1JVFJPTiBDT01QVVRFUiBQVEUgTFRELgotCQkJCTEwMjAgSE9VR0FORyBBVkVOVUUgMSAjMDMtMzUwNAotCQkJCVNJTkdBUE9SRSAxOTUzCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTIwLTREICAgKGhleCkJCUlOT1ZJUyBHTUJICi0wMDIwNEQgICAgIChiYXNlIDE2KQkJSU5PVklTIEdNQkgKLQkJCQlIQU5OUy1CUkFVTiBTVFJBU1NFIDUwCi0JCQkJODUzNzUgTkVVRkFIUk4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0yMC00RSAgIChoZXgpCQlORVRXT1JLIFNFQ1VSSVRZIFNZU1RFTVMsIElOQy4KLTAwMjA0RSAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFNFQ1VSSVRZIFNZU1RFTVMsIElOQy4KLQkJCQk5NDAxIFdBUExFUyBTVFJFRVQsU1RFLiAjMTAwCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC00RiAgIChoZXgpCQlERVVUU0NIRSBBRVJPU1BBQ0UgQUcKLTAwMjA0RiAgICAgKGJhc2UgMTYpCQlERVVUU0NIRSBBRVJPU1BBQ0UgQUcKLQkJCQlHRVNDSEFFRlRTRkVMRAotCQkJCVZFUlRFSURJR1VORyBVTkQgWklWSUxFIFNZU1RFTSA4MTY2MyBNVUUKLQkJCQlCVU5ERVNSRVBVQkxJSyBERVVUU0NITEFORAotCQkJCUdFUk1BTlkKLQotMDAtMjAtNTAgICAoaGV4KQkJS09SRUEgQ09NUFVURVIgSU5DLgotMDAyMDUwICAgICAoYmFzZSAxNikJCUtPUkVBIENPTVBVVEVSIElOQy4KLQkJCQk0NjksIERBRUhFVU5HLURPTkcKLQkJCQlNQVBPLUdVLCBTRU9VTAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIwLTUxICAgKGhleCkJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi0wMDIwNTEgICAgIChiYXNlIDE2KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMjcgSmV0cGxleCBDaXJjbGUKLQkJCQlNYWRpc29uIEFMIDM1NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC01MiAgIChoZXgpCQlSQUdVTEEgU1lTVEVNUwotMDAyMDUyICAgICAoYmFzZSAxNikJCVJBR1VMQSBTWVNURU1TCi0JCQkJNDU0MCBTLiBKVVBJVEVSIERSSVZFCi0JCQkJU0FMVCBMQUtFIENJVFkgVVQgODQxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTUzICAgKGhleCkJCUhVTlRTVklMTEUgTUlDUk9TWVNURU1TLCBJTkMuCi0wMDIwNTMgICAgIChiYXNlIDE2KQkJSFVOVFNWSUxMRSBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQlQLk8uIEJPWCAxMjQxNQotCQkJCUhVTlRTVklMTEUgQUwgMzU4MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTU0ICAgKGhleCkJCVN5Y2Ftb3JlIE5ldHdvcmtzCi0wMDIwNTQgICAgIChiYXNlIDE2KQkJU3ljYW1vcmUgTmV0d29ya3MKLQkJCQkyMjAgTWlsbCBSZAotCQkJCUNoZWxtc2ZvcmQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTU1ICAgKGhleCkJCUFMVEVDSCBDTy4sIExURC4KLTAwMjA1NSAgICAgKGJhc2UgMTYpCQlBTFRFQ0ggQ08uLCBMVEQuCi0JCQkJT0hJU0hJIEJMREcuLCAyLTIzLTExCi0JCQkJTklTSEktTklQUE9SSSwgQVJBS0FXQS1LVQotCQkJCSBUT0tZTyAxMTYgIAotCQkJCUpBUEFOCi0KLTAwLTIwLTU2ICAgKGhleCkJCU5FT1BST0RVQ1RTCi0wMDIwNTYgICAgIChiYXNlIDE2KQkJTkVPUFJPRFVDVFMKLQkJCQkyNSBDSEFQTUFOIFNUUkVFVAotCQkJCUJMQUNLQlVSTiBOT1JUSCBWSUNUT1JJQSAzMTMwCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLTU3ICAgKGhleCkJCVRJVFpFIERBVEVOVEVDSE5JSyBHbWJICi0wMDIwNTcgICAgIChiYXNlIDE2KQkJVElUWkUgREFURU5URUNITklLIEdtYkgKLQkJCQlESUVTRUxTVFJBU1NFIDEwCi0JCQkJRFMtNzEyNzIgUkVOTklOR0VOLTIgIAotCQkJCUdFUk1BTlkKLQotMDAtMjAtNTggICAoaGV4KQkJQUxMSUVEIFNJR05BTCBJTkMuCi0wMDIwNTggICAgIChiYXNlIDE2KQkJQUxMSUVEIFNJR05BTCBJTkMuCi0JCQkJUk9VVEUgNDYKLQkJCQlURVRFUkJPUk8gTkogMDc2MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTU5ICAgKGhleCkJCU1JUk8gQ09NUFVURVIgUFJPRFVDVFMgQUcKLTAwMjA1OSAgICAgKGJhc2UgMTYpCQlNSVJPIENPTVBVVEVSIFBST0RVQ1RTIEFHCi0JCQkJQ0FSTCBNSUVMRSBTVFIuIDQKLQkJCQlELTM4MTEyIEJSQVVOU0NIV0VJRyAgCi0JCQkJR0VSTUFOWQotCi0wMC0yMC01QSAgIChoZXgpCQlDT01QVVRFUiBJREVOVElDUwotMDAyMDVBICAgICAoYmFzZSAxNikJCUNPTVBVVEVSIElERU5USUNTCi0JCQkJNSBTSEFXTVVUIFJPQUQKLQkJCQlDQU5UT04gTUEgMDIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTVCICAgKGhleCkJCUtlbnRyb3gsIExMQwotMDAyMDVCICAgICAoYmFzZSAxNikJCUtlbnRyb3gsIExMQwotCQkJCTIwMDEwIE5XIFRhbmFzYm91cm5lIERyLgotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNUMgICAoaGV4KQkJSW50ZXJOZXQgU3lzdGVtcyBvZiBGbG9yaWRhLCBJbmMuCi0wMDIwNUMgICAgIChiYXNlIDE2KQkJSW50ZXJOZXQgU3lzdGVtcyBvZiBGbG9yaWRhLCBJbmMuCi0JCQkJUC5PLiBCT1ggNTc4Ci0JCQkJQ1JFU1RWSUVXIEZMIDMyNTM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC01RCAgIChoZXgpCQlOQU5PTUFUSUMgT1kKLTAwMjA1RCAgICAgKGJhc2UgMTYpCQlOQU5PTUFUSUMgT1kKLQkJCQlQVUlTVE9MQU4gUkFJVFRJIDQKLQkJCQkwMDc2MCBIRUxTSU5LSQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTIwLTVFICAgKGhleCkJCUNBU1RMRSBST0NLLCBJTkMuCi0wMDIwNUUgICAgIChiYXNlIDE2KQkJQ0FTVExFIFJPQ0ssIElOQy4KLQkJCQkyMCBTT1VUSCBTQU5UQSBDUlVaIEFWRS4KLQkJCQlTVUlURSAjMzEwCi0JCQkJTE9TIEdBVE9TIENBIDk1MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC01RiAgIChoZXgpCQlHQU1NQURBVEEgQ09NUFVURVIgR01CSAotMDAyMDVGICAgICAoYmFzZSAxNikJCUdBTU1BREFUQSBDT01QVVRFUiBHTUJICi0JCQkJR1VURU5CRVJHU1RSLiAxMwotCQkJCTgyMTY4IFBVQ0hIRUlNCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMjAtNjAgICAoaGV4KQkJQUxDQVRFTCBJVEFMSUEgUy5wLkEuCi0wMDIwNjAgICAgIChiYXNlIDE2KQkJQUxDQVRFTCBJVEFMSUEgUy5wLkEuCi0JCQkJVklBIFRSRU5UTywgMzAKLQkJCQkyMDA1OSBWSU1FUkNBVEUgKE1JKSAgCi0JCQkJSVRBTFkKLQotMDAtMjAtNjEgICAoaGV4KQkJR2FycmV0dENvbSwgSW5jLgotMDAyMDYxICAgICAoYmFzZSAxNikJCUdhcnJldHRDb20sIEluYy4KLQkJCQk5OTEgQU5OQVBPTElTIFdBWQotCQkJCU5vcnRoIEFuZG92ZXIgTUEgMDE4NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTYyICAgKGhleCkJCVNDT1JQSU9OIExPR0lDLCBMVEQuCi0wMDIwNjIgICAgIChiYXNlIDE2KQkJU0NPUlBJT04gTE9HSUMsIExURC4KLQkJCQkxOSBCUk9PS1NJREUgUk9BRAotCQkJCU9YSEVZLCBXQVRGT1JECi0JCQkJSEVSVFMgV0QxIDRCVyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtNjMgICAoaGV4KQkJV0lQUk8gSU5GT1RFQ0ggTFRELgotMDAyMDYzICAgICAoYmFzZSAxNikJCVdJUFJPIElORk9URUNIIExURC4KLQkJCQlVTklUUyA0Ny00OCwgU0RGIEJMT0NLIFZJSQotCQkJCU1FUFosIEtBREFQUEVSSSBNQURSQVMtNjAwMDQ1Ci0JCQkJSU5ESUEKLQotMDAtMjAtNjQgICAoaGV4KQkJUFJPVEVDIE1JQ1JPU1lTVEVNUywgSU5DLgotMDAyMDY0ICAgICAoYmFzZSAxNikJCVBST1RFQyBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQkyOTcgTEFCUk9TU0UKLQkJCQlQT0lOVEUtQ0xBSVJFLCBRVUVCRUMgSDlSIDFBMyAgCi0JCQkJQ0FOQURBCi0KLTAwLTIwLTY1ICAgKGhleCkJCVNVUEVSTkVUIE5FVFdPUktJTkcgSU5DLgotMDAyMDY1ICAgICAoYmFzZSAxNikJCVNVUEVSTkVUIE5FVFdPUktJTkcgSU5DLgotCQkJCTE2IFRPWkVSRVQgSEEnQVJFVFogU1QuCi0JCQkJVEVMLUFWSVYgNjc4OTEgIAotCQkJCUlTUkFFTAotCi0wMC0yMC02NiAgIChoZXgpCQlHRU5FUkFMIE1BR0lDLCBJTkMuCi0wMDIwNjYgICAgIChiYXNlIDE2KQkJR0VORVJBTCBNQUdJQywgSU5DLgotCQkJCTI0NjUgTEFUSEFNIFNUUkVFVAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTY3ICAgKGhleCkJCVBSSVZBVEUKLTAwMjA2NyAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMjAtNjggICAoaGV4KQkJSVNEWU5FCi0wMDIwNjggICAgIChiYXNlIDE2KQkJSVNEWU5FCi0JCQkJMTEgUk9YQlVSWSBBVkVOVUUKLQkJCQlOQVRJQ0sgTUEgMDE3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTY5ICAgKGhleCkJCUlTRE4gU1lTVEVNUyBDT1JQT1JBVElPTgotMDAyMDY5ICAgICAoYmFzZSAxNikJCUlTRE4gU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTgzMjAgT0xEIENPVVJUSE9VU0UgUkQuCi0JCQkJU1VJVEUgIzIwMwotCQkJCVZJRU5OQSBWQSAyMjE4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNkEgICAoaGV4KQkJT1NBS0EgQ09NUFVURVIgQ09SUC4KLTAwMjA2QSAgICAgKGJhc2UgMTYpCQlPU0FLQSBDT01QVVRFUiBDT1JQLgotCQkJCTItOCBLT1lBQ0hPVSBORVlBR0FXLVNISQotCQkJCU9TQUtBIDU3MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMjAtNkIgICAoaGV4KQkJS09OSUNBIE1JTk9MVEEgSE9MRElOR1MsIElOQy4KLTAwMjA2QiAgICAgKGJhc2UgMTYpCQlLT05JQ0EgTUlOT0xUQSBIT0xESU5HUywgSU5DLgotCQkJCTEtNi0xLCBNYXJ1bm91Y2hpLAotCQkJCUNoaXlvZGEta3UKLQkJCQlUb2t5byAgMTAwLTAwMDUKLQkJCQlKQVBBTgotCi0wMC0yMC02QyAgIChoZXgpCQlFVkVSR1JFRU4gVEVDSE5PTE9HWSBDT1JQLgotMDAyMDZDICAgICAoYmFzZSAxNikJCUVWRVJHUkVFTiBURUNITk9MT0dZIENPUlAuCi0JCQkJMjMxIEVNRVJTT04gU1RSRUVUCi0JCQkJUEFMTyBBTFRPIENBIDk0MzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC02RCAgIChoZXgpCQlEQVRBIFJBQ0UsIElOQy4KLTAwMjA2RCAgICAgKGJhc2UgMTYpCQlEQVRBIFJBQ0UsIElOQy4KLQkJCQkxMTU1MCBJSC0xMFdFU1QgIFNURSMzOTUKLQkJCQlTQU4gQU5UT05JTyBUWCA3ODIzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNkUgICAoaGV4KQkJWEFDVCwgSU5DLgotMDAyMDZFICAgICAoYmFzZSAxNikJCVhBQ1QsIElOQy4KLQkJCQlQLk8uIEJPWCA1NQotCQkJCUFSR1lMRSBUWCA3NjIyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNkYgICAoaGV4KQkJRkxPV1BPSU5UIENPUlBPUkFUSU9OCi0wMDIwNkYgICAgIChiYXNlIDE2KQkJRkxPV1BPSU5UIENPUlBPUkFUSU9OCi0JCQkJNzI5MSBDT1JPTkFETyBEUklWRSwgU1RFIyA0Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTcwICAgKGhleCkJCUhZTkVULCBMVEQuCi0wMDIwNzAgICAgIChiYXNlIDE2KQkJSFlORVQsIExURC4KLQkJCQkxMDIgSkFCT1RJTlNLWSBTVC4KLQkJCQlQTyBCT1ggMzYzOAotCQkJCVBFVEFDSCBUSUtWQSA0OTEzMCAgCi0JCQkJSVNSQUVMCi0KLTAwLTIwLTcxICAgKGhleCkJCUlCUiBHTUJICi0wMDIwNzEgICAgIChiYXNlIDE2KQkJSUJSIEdNQkgKLQkJCQlLT0hMRVJTVFIuIDQ1Ci0JCQkJRC00NjI4NiBET1JTVEVOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTcyICAgKGhleCkJCVdPUktMSU5LIElOTk9WQVRJT05TCi0wMDIwNzIgICAgIChiYXNlIDE2KQkJV09SS0xJTksgSU5OT1ZBVElPTlMKLQkJCQkyNDUyIEFSTVNUUk9ORyBTVFJFRVQKLQkJCQlMSVZFUk1PUkUgQ0EgOTQ1NU8KLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTczICAgKGhleCkJCUZVU0lPTiBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDIwNzMgICAgIChiYXNlIDE2KQkJRlVTSU9OIFNZU1RFTVMgQ09SUE9SQVRJT04KLQkJCQk3NjAwIFNUQU5ESVNIIFBMQUNFCi0JCQkJUk9DS1ZJTExFIE1EIDIwODU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC03NCAgIChoZXgpCQlTVU5HV09PTiBTWVNURU1TCi0wMDIwNzQgICAgIChiYXNlIDE2KQkJU1VOR1dPT04gU1lTVEVNUwotCQkJCVlVU1VOIEJMREcuNDQtNAotCQkJCVNBTVNVTkctRE9ORyBLQU5HTkFNLUtVLCBTRU9VTCAxMzUtMDkwCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjAtNzUgICAoaGV4KQkJTU9UT1JPTEEgQ09NTVVOSUNBVElPTiBJU1JBRUwKLTAwMjA3NSAgICAgKGJhc2UgMTYpCQlNT1RPUk9MQSBDT01NVU5JQ0FUSU9OIElTUkFFTAotCQkJCTMgS1JFTUVORVRTS0kgU1RSRUVUCi0JCQkJUE9CIDI1MDE2Ci0JCQkJVEVMLUFWSVYgIDYxMjUwICAKLQkJCQlJU1JBRUwKLQotMDAtMjAtNzYgICAoaGV4KQkJUkVVRE8gQ09SUE9SQVRJT04KLTAwMjA3NiAgICAgKGJhc2UgMTYpCQlSRVVETyBDT1JQT1JBVElPTgotCQkJCTQtMS0xMCBTSElOU0FOCi0JCQkJTkFHQU9LQSBDSVRZLCBOSUlHQVRBIDk0MC0yMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMjAtNzcgICAoaGV4KQkJS0FSRElPUyBTWVNURU1TIENPUlAuCi0wMDIwNzcgICAgIChiYXNlIDE2KQkJS0FSRElPUyBTWVNURU1TIENPUlAuCi0JCQkJMjYgTiBTVU1NSVQgQVZFLgotCQkJCUdBSVRIRVJTQlVSRyBNRCAyMDg3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNzggICAoaGV4KQkJUlVOVE9QLCBJTkMuCi0wMDIwNzggICAgIChiYXNlIDE2KQkJUlVOVE9QLCBJTkMuCi0JCQkJNS9GLCBOTy4gMTAsIEFMTEVZIDgsIExBTkUgNDUKLQkJCQlQQU8gU0hJTiBST0FELCBIU0lOVElFTiBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC03OSAgIChoZXgpCQlNSUtST04gR01CSAotMDAyMDc5ICAgICAoYmFzZSAxNikJCU1JS1JPTiBHTUJICi0JCQkJQlJFU0xBVUVSU1RSLiAxLTMKLQkJCQk4NTM4NiBFQ0hJTkcgIAotCQkJCUdFUk1BTlkKLQotMDAtMjAtN0EgICAoaGV4KQkJV2lTRSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAyMDdBICAgICAoYmFzZSAxNikJCVdpU0UgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkxMzAgS05PV0xFUyBEUklWRQotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtN0IgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMjA3QiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCTIxMTEgTkUgMjV0aCBBdmVudWUKLQkJCQlKRjMtNDIwCi0JCQkJSGlsbHNib3JvIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC03QyAgIChoZXgpCQlBVVRFQyBHbWJICi0wMDIwN0MgICAgIChiYXNlIDE2KQkJQVVURUMgR21iSAotCQkJCUJBSE5IT0ZTVFIuIDU3Ci0JCQkJNTUyMzQgRlJBTUVSU0hFSU0gIAotCQkJCUdFUk1BTlkKLQotMDAtMjAtN0QgICAoaGV4KQkJQURWQU5DRUQgQ09NUFVURVIgQVBQTElDQVRJT05TCi0wMDIwN0QgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgQ09NUFVURVIgQVBQTElDQVRJT05TCi0JCQkJMTA3IFBFTk5TIFRSQUlMCi0JCQkJTkVXVE9XTiBQQSAxODk0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtN0UgICAoaGV4KQkJRklORUNPTSBDby4sIEx0ZC4KLTAwMjA3RSAgICAgKGJhc2UgMTYpCQlGSU5FQ09NIENvLiwgTHRkLgotCQkJCTExMDggSFdBS09LLURPTkcsIEtBTkdTRU8tS1UKLQkJCQlTRU9VTCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIwLTdGICAgKGhleCkJCUtZT0VJIFNBTkdZTyBDTy4sIExURC4KLTAwMjA3RiAgICAgKGJhc2UgMTYpCQlLWU9FSSBTQU5HWU8gQ08uLCBMVEQuCi0JCQkJRElSLiAmIEdFTidMIE1HUi5JTkQuIFNZU1RFTVMKLQkJCQkyMC00LCBTSE9UTyAyLUNIT01FIFNISUJVWUEtS1UKLQkJCQlUT0tZTwotCQkJCUpBUEFOCi0KLTAwLTIwLTgwICAgKGhleCkJCVNZTkVSR1kgKFVLKSBMVEQuCi0wMDIwODAgICAgIChiYXNlIDE2KQkJU1lORVJHWSAoVUspIExURC4KLQkJCQlIQVJUQ1JBTiBIT1VTRQotCQkJCUNBUlBFTkRFUlMgUEFSSywKLQkJCQlXQVRGT1JEIEhFUlRTLiAgV0QxIDVFWiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtODEgICAoaGV4KQkJVElUQU4gRUxFQ1RST05JQ1MKLTAwMjA4MSAgICAgKGJhc2UgMTYpCQlUSVRBTiBFTEVDVFJPTklDUwotCQkJCTMwMzMgU0NJRU5DRSBQQVJLIFJPQUQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTgyICAgKGhleCkJCU9ORUFDIENPUlBPUkFUSU9OCi0wMDIwODIgICAgIChiYXNlIDE2KQkJT05FQUMgQ09SUE9SQVRJT04KLQkJCQkyNzk0NCBOLiBCUkFETEVZIFJELgotCQkJCUxJQkVSVFlWSUxMRSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtODMgICAoaGV4KQkJUFJFU1RJQ09NIElOQ09SUE9SQVRFRAotMDAyMDgzICAgICAoYmFzZSAxNikJCVBSRVNUSUNPTSBJTkNPUlBPUkFURUQKLQkJCQkzMjc1LCAxU1QgU1RSRUVULCBTVEUuICMxCi0JCQkJU1QtSFVCRVJUIChRVUVCRUMpCi0JCQkJQ0FOQURBIEozWSA4WTYKLQkJCQlDQU5BREEKLQotMDAtMjAtODQgICAoaGV4KQkJT0NFIFBSSU5USU5HIFNZU1RFTVMsIEdNQkgKLTAwMjA4NCAgICAgKGJhc2UgMTYpCQlPQ0UgUFJJTlRJTkcgU1lTVEVNUywgR01CSAotCQkJCVNJRU1FTlNBTExFRSAyCi0JCQkJRC04NTU4NiBQT0lORwotCQkJCUdFUk1BTlkKLQotMDAtMjAtODUgICAoaGV4KQkJRVhJREUgRUxFQ1RST05JQ1MKLTAwMjA4NSAgICAgKGJhc2UgMTYpCQlFWElERSBFTEVDVFJPTklDUwotCQkJCVAuTy4gQk9YICA1ODE4OQotCQkJCVJBTEVJR0ggTkMgMjc2NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTg2ICAgKGhleCkJCU1JQ1JPVEVDSCBFTEVDVFJPTklDUyBMSU1JVEVECi0wMDIwODYgICAgIChiYXNlIDE2KQkJTUlDUk9URUNIIEVMRUNUUk9OSUNTIExJTUlURUQKLQkJCQlMQU5DQVNURVIgUk9BRAotCQkJCUNSRVNTRVggSU5EVVNUUklBTCBFU1RBVEUgSElHSCBXWUNPTUJFLAotCQkJCUtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC04NyAgIChoZXgpCQlNRU1PVEVDLCBJTkMuCi0wMDIwODcgICAgIChiYXNlIDE2KQkJTUVNT1RFQywgSU5DLgotCQkJCTc3NTUgSGVucmktQm91cmFzc2EKLQkJCQlNT05UUkVBTCwgUVVFQkVDICAgSDRTIDFQNwotCQkJCUNBTkFEQQotCi0wMC0yMC04OCAgIChoZXgpCQlHTE9CQUwgVklMTEFHRSBDT01NVU5JQ0FUSU9OCi0wMDIwODggICAgIChiYXNlIDE2KQkJR0xPQkFMIFZJTExBR0UgQ09NTVVOSUNBVElPTgotCQkJCTExNDQgRUFTVCBBUlFVRVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC04OSAgIChoZXgpCQlUM1BMVVMgTkVUV09SS0lORywgSU5DLgotMDAyMDg5ICAgICAoYmFzZSAxNikJCVQzUExVUyBORVRXT1JLSU5HLCBJTkMuCi0JCQkJMjg0MCBTQU4gVE9NQVMgRVhQUkVTU1dBWQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC04QSAgIChoZXgpCQlTT05JWCBDT01NVU5JQ0FUSU9OUywgTFRELgotMDAyMDhBICAgICAoYmFzZSAxNikJCVNPTklYIENPTU1VTklDQVRJT05TLCBMVEQuCi0JCQkJV0lMS0lOU09OIFJPQUQKLQkJCQlDSVJFTkNFU1RFUiwgR0xPUy4gR0w3IDFZVAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC04QiAgIChoZXgpCQlMQVBJUyBURUNITk9MT0dJRVMsIElOQy4KLTAwMjA4QiAgICAgKGJhc2UgMTYpCQlMQVBJUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMTAwIE1BUklOQSBWSUxMQUdFIFBLV1kKLQkJCQlTVUlURSAjMTAwCi0JCQkJQUxBTUVEQSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOEMgICAoaGV4KQkJR0FMQVhZIE5FVFdPUktTLCBJTkMuCi0wMDIwOEMgICAgIChiYXNlIDE2KQkJR0FMQVhZIE5FVFdPUktTLCBJTkMuCi0JCQkJOTM0OCBERSBTT1RPIEFWRU5VRQotCQkJCUNIQVRTV09SVEggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLThEICAgKGhleCkJCUNNRCBURUNITk9MT0dZCi0wMDIwOEQgICAgIChiYXNlIDE2KQkJQ01EIFRFQ0hOT0xPR1kKLQkJCQkxIFZBTkRFUkJJTFQKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLThFICAgKGhleCkJCUNIRVZJTiBTT0ZUV0FSRSBFTkcuIExURC4KLTAwMjA4RSAgICAgKGJhc2UgMTYpCQlDSEVWSU4gU09GVFdBUkUgRU5HLiBMVEQuCi0JCQkJMiBCT1JPVUdIR0FURSwgT1RMRVksCi0JCQkJTEVFRFMsIFdFU1QsIFlPUktTSElSRQotCQkJCUxTMjEgM0FMIFVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtOEYgICAoaGV4KQkJRUNJIFRFTEVDT00gTFRELgotMDAyMDhGICAgICAoYmFzZSAxNikJCUVDSSBURUxFQ09NIExURC4KLQkJCQlIQVNJVklNIFNULiAzMCwKLQkJCQlQRVRBQ0gtVElLVkEgNDkxMzMgIAotCQkJCUlTUkFFTAotCi0wMC0yMC05MCAgIChoZXgpCQlBRFZBTkNFRCBDT01QUkVTU0lPTiBURUNITk9MT0dZLCBJTkMuCi0wMDIwOTAgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgQ09NUFJFU1NJT04gVEVDSE5PTE9HWSwgSU5DLgotCQkJCTgyMCBGTFlOTiBST0FECi0JCQkJQ0FNQVJJTExPIENBIDkzMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC05MSAgIChoZXgpCQlKMTI1LCBOQVRJT05BTCBTRUNVUklUWSBBR0VOQ1kKLTAwMjA5MSAgICAgKGJhc2UgMTYpCQlKMTI1LCBOQVRJT05BTCBTRUNVUklUWSBBR0VOQ1kKLQkJCQk5ODAwIFNBVkFHRSBST0FECi0JCQkJRlQuIE1FQURFIE1EIDIwNzU1LTYwMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTkyICAgKGhleCkJCUNIRVNTIEVOR0lORUVSSU5HIEIuVi4KLTAwMjA5MiAgICAgKGJhc2UgMTYpCQlDSEVTUyBFTkdJTkVFUklORyBCLlYuCi0JCQkJTklFVVdFIEdSQUNIVCA3NAotCQkJCTIwMTEgTkogSEFBUkxFTQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIwLTkzICAgKGhleCkJCUxBTkRJTkdTIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMjA5MyAgICAgKGJhc2UgMTYpCQlMQU5ESU5HUyBURUNITk9MT0dZIENPUlAuCi0JCQkJMTYzIFdBVEVSIFNUUkVFVAotCQkJCU1FUlJJTEwgQkxPQ0sgVU5JVCBBMgotCQkJCUVYRVRFUiBOSCAwMzgzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOTQgICAoaGV4KQkJQ1VCSVggQ09SUE9SQVRJT04KLTAwMjA5NCAgICAgKGJhc2UgMTYpCQlDVUJJWCBDT1JQT1JBVElPTgotCQkJCTI4MDAgTE9DS0hFRUQgV0FZCi0JCQkJQ0FSU09OIENJVFkgTlYgODk3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTk1ICAgKGhleCkJCVJJVkEgRUxFQ1RST05JQ1MKLTAwMjA5NSAgICAgKGJhc2UgMTYpCQlSSVZBIEVMRUNUUk9OSUNTCi0JCQkJVU5JVCAxNywgQkFSUlNGT0xEIFJELgotCQkJCVdJTkdBVEVTIElORFVTVFJJQUwgUEFSSyBXRVNUSE9VR0hUT04sIEIKLQkJCQlMQU5DQVNISVJFIEVOR0xBTkQgQkw1IDNYVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIwLTk2ICAgKGhleCkJCUludmVuc3lzCi0wMDIwOTYgICAgIChiYXNlIDE2KQkJSW52ZW5zeXMKLQkJCQkxMzU0IENsaWZmb3JkIEF2ZW51ZQotCQkJCUxvdmVzIFBhcmsgSUwgNjExMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTk3ICAgKGhleCkJCUFQUExJRUQgU0lHTkFMIFRFQ0hOT0xPR1kKLTAwMjA5NyAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIFNJR05BTCBURUNITk9MT0dZCi0JCQkJMTYwIFNPQlJBTlRFIFdBWQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOTggICAoaGV4KQkJSEVDVFJPTklDIEFCCi0wMDIwOTggICAgIChiYXNlIDE2KQkJSEVDVFJPTklDIEFCCi0JCQkJQk9YIDMwMDIKLQkJCQlTLTc1MDAzIFVQUFNBTEEgIAotCQkJCVNXRURFTgotCi0wMC0yMC05OSAgIChoZXgpCQlCT04gRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDIwOTkgICAgIChiYXNlIDE2KQkJQk9OIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTQtNCAyOCwgTUlaVURPLUNITwotCQkJCUFNQUdBU0FLSSwgNjYxCi0JCQkJSFlPR08gSFlPR08gSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0yMC05QSAgIChoZXgpCQlUSEUgM0RPIENPTVBBTlkKLTAwMjA5QSAgICAgKGJhc2UgMTYpCQlUSEUgM0RPIENPTVBBTlkKLQkJCQk2MDAgR0FMVkVTVE9OIERSSVZFCi0JCQkJUkVEV09PRCBDSVRZIENBIDk0MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC05QiAgIChoZXgpCQlFUlNBVCBFTEVDVFJPTklDIEdNQkgKLTAwMjA5QiAgICAgKGJhc2UgMTYpCQlFUlNBVCBFTEVDVFJPTklDIEdNQkgKLQkJCQlIQUFSQkVSR1NUUi4gNjEKLQkJCQlELTk5MDk3IEVSRlVSVAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTlDICAgKGhleCkJCVBSSU1BUlkgQUNDRVNTIENPUlAuCi0wMDIwOUMgICAgIChiYXNlIDE2KQkJUFJJTUFSWSBBQ0NFU1MgQ09SUC4KLQkJCQkxMDA4MCBDQVJST0xMIENBTllPTiBSRAotCQkJCVNBTiBESUVHTyBDQSA5MjEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOUQgICAoaGV4KQkJTElQUEVSVCBBVVRPTUFUSU9OU1RFQ0hOSUsKLTAwMjA5RCAgICAgKGJhc2UgMTYpCQlMSVBQRVJUIEFVVE9NQVRJT05TVEVDSE5JSwotCQkJCUQtNjgxNjUgTUFOTkhFSU0KLQkJCQlLUkFQUE1VRUhMU1RSLiAzNAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTlFICAgKGhleCkJCUJST1dOJ1MgT1BFUkFUSU5HIFNZU1RFTSBTRVJWSUNFUywgTFRELgotMDAyMDlFICAgICAoYmFzZSAxNikJCUJST1dOJ1MgT1BFUkFUSU5HIFNZU1RFTSBTRVJWSUNFUywgTFRELgotCQkJCVNULiBBR05FUyBIT1VTRSwgQ1JFU1NXRUxMIFBLLAotCQkJCUJMQUNLSEVBVEgsIExvbmRvbiBTRTMgOVJEICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC05RiAgIChoZXgpCQlNRVJDVVJZIENPTVBVVEVSIFNZU1RFTVMsIElOQy4KLTAwMjA5RiAgICAgKGJhc2UgMTYpCQlNRVJDVVJZIENPTVBVVEVSIFNZU1RFTVMsIElOQy4KLQkJCQkxOTkgUklWRVJORUNLIFJPQUQKLQkJCQlDSEVMTVNGT1JEIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1BMCAgIChoZXgpCQlPQSBMQUJPUkFUT1JZIENPLiwgTFRELgotMDAyMEEwICAgICAoYmFzZSAxNikJCU9BIExBQk9SQVRPUlkgQ08uLCBMVEQuCi0JCQkJMjI4IEtBTUlNQUNISVlBIEtBTUFLVVJBCi0JCQkJS0FOQUdBV0EgMjQ3Ci0JCQkJSkFQQU4KLQotMDAtMjAtQTEgICAoaGV4KQkJRE9WQVRST04KLTAwMjBBMSAgICAgKGJhc2UgMTYpCQlET1ZBVFJPTgotCQkJCVBST0RVQ1RTIERJVklTSU9OCi0JCQkJMTE5OCBCT1NUT04gQVZFTlVFCi0JCQkJTE9OR01PTlQgQ08gODA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUEyICAgKGhleCkJCUdBTENPTSBORVRXT1JLSU5HIExURC4KLTAwMjBBMiAgICAgKGJhc2UgMTYpCQlHQUxDT00gTkVUV09SS0lORyBMVEQuCi0JCQkJUC5PLiBCT1ggMTU2OAotCQkJCVJBTUFUIEhBU0hBUk9OIDQ3MTEzICAKLQkJCQlJU1JBRUwKLQotMDAtMjAtQTMgICAoaGV4KQkJRElWSUNPTSBJTkMuCi0wMDIwQTMgICAgIChiYXNlIDE2KQkJRElWSUNPTSBJTkMuCi0JCQkJNTgwIENPVFRPTldPT0QgRFJJVkUKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQTQgICAoaGV4KQkJTVVMVElQT0lOVCBORVRXT1JLUwotMDAyMEE0ICAgICAoYmFzZSAxNikJCU1VTFRJUE9JTlQgTkVUV09SS1MKLQkJCQkxOSBEQVZJUyBEUklWRQotCQkJCUJFTE1PTlQgQ0EgOTQwMDItMzAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQTUgICAoaGV4KQkJQVBJIEVOR0lORUVSSU5HCi0wMDIwQTUgICAgIChiYXNlIDE2KQkJQVBJIEVOR0lORUVSSU5HCi0JCQkJMjY4OSBQT1BMQVJXT09EIFdBWQotCQkJCVNBTiBKT1NFIENBIDk1MTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1BNiAgIChoZXgpCQlQcm94aW0gV2lyZWxlc3MKLTAwMjBBNiAgICAgKGJhc2UgMTYpCQlQcm94aW0gV2lyZWxlc3MKLQkJCQkxNTYxIEJ1Y2tleWUgRHJpdmUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQTcgICAoaGV4KQkJUEFJUkdBSU4gVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIwQTcgICAgIChiYXNlIDE2KQkJUEFJUkdBSU4gVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTQ0MDIgRlJBTktMSU4gQVZFTlVFCi0JCQkJVFVTVElOIENBIDkyNjgwLTcwMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUE4ICAgKGhleCkJCVNBU1QgVEVDSE5PTE9HWSBDT1JQLgotMDAyMEE4ICAgICAoYmFzZSAxNikJCVNBU1QgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTIyNSBPTEQgTkVXIEJSVU5TV0lDSyBSRC4KLQkJCQlTVUlURSAjMTAxCi0JCQkJUElTQ0FUQVdBWSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQTkgICAoaGV4KQkJV0hJVEUgSE9SU0UgSU5EVVNUUklBTAotMDAyMEE5ICAgICAoYmFzZSAxNikJCVdISVRFIEhPUlNFIElORFVTVFJJQUwKLQkJCQk0Ri4gTk8uMTYsIEFMTEVZIDU2LCBMQU5FIDE4MQotCQkJCVNFQy40LCBDSFVORyBIU0lBTyBFQVNUIFJPQUQgVEFJUEVJCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC1BQSAgIChoZXgpCQlESUdJTUVESUEgVklTSU9OIExURC4KLTAwMjBBQSAgICAgKGJhc2UgMTYpCQlESUdJTUVESUEgVklTSU9OIExURC4KLQkJCQlDUkFXTEVZIENPVVJUCi0JCQkJV0lOQ0hFU1RFUiwgSEFNUFNISVJFCi0JCQkJU08yMSAyUUEgVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC1BQiAgIChoZXgpCQlNSUNSTyBJTkRVU1RSSUVTIENPUlAuCi0wMDIwQUIgICAgIChiYXNlIDE2KQkJTUlDUk8gSU5EVVNUUklFUyBDT1JQLgotCQkJCTgzOTkgR1JFRU4gTUVBRE9XUyBEUi4gTi4KLQkJCQlXRVNURVJWSUxMRSBPSCA0MzA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQUMgICAoaGV4KQkJSU5URVJGTEVYIERBVEVOU1lTVEVNRSBHTUJICi0wMDIwQUMgICAgIChiYXNlIDE2KQkJSU5URVJGTEVYIERBVEVOU1lTVEVNRSBHTUJICi0JCQkJR1JPQldJRVNFTlNUUkFTRSAyNAotCQkJCVctNzIwMSBEVVJDSEhBVVNFTgotCQkJCVdFU1RHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0yMC1BRCAgIChoZXgpCQlMSU5RIFNZU1RFTVMKLTAwMjBBRCAgICAgKGJhc2UgMTYpCQlMSU5RIFNZU1RFTVMKLQkJCQlQLk8uIEJPWCAxMTA0MAotCQkJCVRVQ1NPTiBBWiA4NTczNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQUUgICAoaGV4KQkJT1JORVQgREFUQSBDT01NVU5JQ0FUSU9OIFRFQ0guCi0wMDIwQUUgICAgIChiYXNlIDE2KQkJT1JORVQgREFUQSBDT01NVU5JQ0FUSU9OIFRFQ0guCi0JCQkJUC5PLiBCT1ggMzIzCi0JCQkJQ0FSTUlFTCAgMjAxMDAKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMjAtQUYgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDAyMEFGICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUIwICAgKGhleCkJCUdBVEVXQVkgREVWSUNFUywgSU5DLgotMDAyMEIwICAgICAoYmFzZSAxNikJCUdBVEVXQVkgREVWSUNFUywgSU5DLgotCQkJCTI0NDAgU1RBTldFTEwgRFJJVkUKLQkJCQlDT05DT1JEIENBIDk0NTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1CMSAgIChoZXgpCQlDT01URUNIIFJFU0VBUkNIIElOQy4KLTAwMjBCMSAgICAgKGJhc2UgMTYpCQlDT01URUNIIFJFU0VBUkNIIElOQy4KLQkJCQkyNDI3MSBUQUhPRQotCQkJCUxBR1VOQSBOSUdVRUwgQ0EgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUIyICAgKGhleCkJCUdLRCBHZXNlbGxzY2hhZnQgRnVyIEtvbW11bmlrYXRpb24gVW5kIERhdGVudGVjaG5pawotMDAyMEIyICAgICAoYmFzZSAxNikJCUdLRCBHZXNlbGxzY2hhZnQgRnVyIEtvbW11bmlrYXRpb24gVW5kIERhdGVudGVjaG5pawotCQkJCQotCQkJCVNBQVJCVVJHRVIgUklORyAxMC0xMgotCQkJCTY4MjI5IE1BTk5IRUlNICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLUIzICAgKGhleCkJCVNDTFRFQyBDT01NVU5JQ0FUSU9OUyBTWVNURU1TCi0wMDIwQjMgICAgIChiYXNlIDE2KQkJU0NMVEVDIENPTU1VTklDQVRJT05TIFNZU1RFTVMKLQkJCQkzIEFQT0xMTyBQTEFDRQotCQkJCUxBTkUgQ09WRSBOLlMuVy4gMjA2NgotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC0yMC1CNCAgIChoZXgpCQlURVJNQSBFTEVLVFJPTklLIEFTCi0wMDIwQjQgICAgIChiYXNlIDE2KQkJVEVSTUEgRUxFS1RST05JSyBBUwotCQkJCUhPVk1BUktFTiA0LAotCQkJCURLLTg1MjAgTFlTVFJVUCAgCi0JCQkJREVOTUFSSwotCi0wMC0yMC1CNSAgIChoZXgpCQlZQVNLQVdBIEVMRUNUUklDIENPUlBPUkFUSU9OCi0wMDIwQjUgICAgIChiYXNlIDE2KQkJWUFTS0FXQSBFTEVDVFJJQyBDT1JQT1JBVElPTgotCQkJCTItMSBLVVJPU0FLSS1TSElST0lTSEkKLQkJCQlZQUhBVEFOSVNISS1LVSBLSVRBS1lVU0hVLUNJVFkKLQkJCQlKQVBBTgotCi0wMC0yMC1CNiAgIChoZXgpCQlBR0lMRSBORVRXT1JLUywgSU5DLgotMDAyMEI2ICAgICAoYmFzZSAxNikJCUFHSUxFIE5FVFdPUktTLCBJTkMuCi0JCQkJMjAwIEJBS0VSIEFWRU5VRQotCQkJCUNPTkNPUkQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUI3ICAgKGhleCkJCU5BTUFRVUEgQ09NUFVURVJXQVJFCi0wMDIwQjcgICAgIChiYXNlIDE2KQkJTkFNQVFVQSBDT01QVVRFUldBUkUKLQkJCQlQLk8uIEJPWCA3MTU1Ci0JCQkJU1RFTExFTiBCT1NDSCA3NTk5Ci0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTIwLUI4ICAgKGhleCkJCVBSSU1FIE9QVElPTiwgSU5DLgotMDAyMEI4ICAgICAoYmFzZSAxNikJCVBSSU1FIE9QVElPTiwgSU5DLgotCQkJCTIzNDEgVy4gMjA1VEggU1RSRUVUICMxMTYKLQkJCQlUT1JSQU5DRSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQjkgICAoaGV4KQkJTUVUUklDT00sIElOQy4KLTAwMjBCOSAgICAgKGJhc2UgMTYpCQlNRVRSSUNPTSwgSU5DLgotCQkJCTk4MCBVTklWRVJTSVRZIEFWRU5VRQotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQkEgICAoaGV4KQkJQ0VOVEVSIEZPUiBISUdIIFBFUkZPUk1BTkNFCi0wMDIwQkEgICAgIChiYXNlIDE2KQkJQ0VOVEVSIEZPUiBISUdIIFBFUkZPUk1BTkNFCi0JCQkJQ09NUFVUSU5HIE9GIFdQSQotCQkJCVNVSVRFICMxNzAgMjkzIEJPU1RPTiBQT1NUIFJPQUQgVy4KLQkJCQlNQVJMQk9STyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQkIgICAoaGV4KQkJWkFYIENPUlBPUkFUSU9OCi0wMDIwQkIgICAgIChiYXNlIDE2KQkJWkFYIENPUlBPUkFUSU9OCi0JCQkJMjAtMTIgT0dJS1VCTyA1LUNIT01FCi0JCQkJU1VHSU5BTUktS1UgVE9LWU8KLQkJCQkxNjcgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0yMC1CQyAgIChoZXgpCQlMb25nIFJlYWNoIE5ldHdvcmtzIFB0eSBMdGQKLTAwMjBCQyAgICAgKGJhc2UgMTYpCQlMb25nIFJlYWNoIE5ldHdvcmtzIFB0eSBMdGQKLQkJCQlVbml0IDMsIDExOC0xMjIgQm93ZGVuIFN0Ci0JCQkJTUVBRE9XQkFOSyBOU1cgMjExNCAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLUJEICAgKGhleCkJCU5JT0JSQVJBIFIgJiBEIENPUlBPUkFUSU9OCi0wMDIwQkQgICAgIChiYXNlIDE2KQkJTklPQlJBUkEgUiAmIEQgQ09SUE9SQVRJT04KLQkJCQlQTyBCT1ggMzQxOAotCQkJCUpPUExJTiBNTyA2NDgwMy0zNDE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1CRSAgIChoZXgpCQlMQU4gQUNDRVNTIENPUlAuCi0wMDIwQkUgICAgIChiYXNlIDE2KQkJTEFOIEFDQ0VTUyBDT1JQLgotCQkJCTI3MzAgTU9OVEVSRVkgU1RSRUVULCBTVEUuIzEwMgotCQkJCVRPUlJBTkNFIENBIDkwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1CRiAgIChoZXgpCQlBRUhSIFRFU1QgU1lTVEVNUwotMDAyMEJGICAgICAoYmFzZSAxNikJCUFFSFIgVEVTVCBTWVNURU1TCi0JCQkJMTY2NyBQTFlNT1VUSCBTVFJFRVQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DMCAgIChoZXgpCQlQVUxTRSBFTEVDVFJPTklDUywgSU5DLgotMDAyMEMwICAgICAoYmFzZSAxNikJCVBVTFNFIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJNTcwNiBGUkVERVJJQ0sgQVZFTlVFCi0JCQkJUk9DS1ZJTExFIE1EIDIwODUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DMSAgIChoZXgpCQlTQVhBLCBJbmMuCi0wMDIwQzEgICAgIChiYXNlIDE2KQkJU0FYQSwgSW5jLgotCQkJCU5CRiBQbGF0aW51bSBUb3dlciAxLTE3LTMgU2hpcm9rYW5lCi0JCQkJTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwOC04MDUwCi0JCQkJSkFQQU4KLQotMDAtMjAtQzIgICAoaGV4KQkJVEVYQVMgTUVNT1JZIFNZU1RFTVMsIElOQy4KLTAwMjBDMiAgICAgKGJhc2UgMTYpCQlURVhBUyBNRU1PUlkgU1lTVEVNUywgSU5DLgotCQkJCTExMjAwIFdFU1RIRUlNRVIgUkQtU1RFIzEwMDAKLQkJCQlIT1VTVE9OIFRYIDc3MDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DMyAgIChoZXgpCQlDT1VOVEVSIFNPTFVUSU9OUyBMVEQuCi0wMDIwQzMgICAgIChiYXNlIDE2KQkJQ09VTlRFUiBTT0xVVElPTlMgTFRELgotCQkJCTI2MyBIRUFHRSBST0FECi0JCQkJUklQTEVZLCBERVJCWVMgREU1IDNHSCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtQzQgICAoaGV4KQkJSU5FVCxJTkMuCi0wMDIwQzQgICAgIChiYXNlIDE2KQkJSU5FVCxJTkMuCi0JCQkJODAxIEUuIENBTVBCRUxMLVNURS4jMzMwCi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQzUgICAoaGV4KQkJRUFHTEUgVEVDSE5PTE9HWQotMDAyMEM1ICAgICAoYmFzZSAxNikJCUVBR0xFIFRFQ0hOT0xPR1kKLQkJCQkyODY1IFpBTktFUiBST0FECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUM2ICAgKGhleCkJCU5FQ1RFQwotMDAyMEM2ICAgICAoYmFzZSAxNikJCU5FQ1RFQwotCQkJCVJBTUEgVkkgUk9BRAotCQkJCVJBSlRIRVZJIEJBTkdLT0sgIDEwNDAwCi0JCQkJVEhBSUxBTkQKLQkJCQlUSEFJTEFORAotCi0wMC0yMC1DNyAgIChoZXgpCQlBS0FJIFByb2Zlc3Npb25hbCBNLkkuIENvcnAuCi0wMDIwQzcgICAgIChiYXNlIDE2KQkJQUtBSSBQcm9mZXNzaW9uYWwgTS5JLiBDb3JwLgotCQkJCTEtMywgSGlyYW51bWEgMS1DaG9tZSwKLQkJCQlOaXNoaS1rdSwgWW9rb2hhbWEsCi0JCQkJMjIwLTAwMjMgCi0JCQkJSkFQQU4KLQotMDAtMjAtQzggICAoaGV4KQkJTEFSU0NPTSBJTkNPUlBPUkFURUQKLTAwMjBDOCAgICAgKGJhc2UgMTYpCQlMQVJTQ09NIElOQ09SUE9SQVRFRAotCQkJCTQ2MDAgUEFUUklDSyBIRU5SWSBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DOSAgIChoZXgpCQlWSUNUUk9OIEJWCi0wMDIwQzkgICAgIChiYXNlIDE2KQkJVklDVFJPTiBCVgotCQkJCVBPQiAzMQotCQkJCU5MIDk3MDAgQUEgR1JPTklOR0VOCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjAtQ0EgICAoaGV4KQkJRElHSVRBTCBPQ0VBTgotMDAyMENBICAgICAoYmFzZSAxNikJCURJR0lUQUwgT0NFQU4KLQkJCQkxMTIwNiBUSE9NUFNPTiBBVkVOVUUKLQkJCQlMRU5FWEEgS1MgNjYyMTktMjMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQ0IgICAoaGV4KQkJUFJFVEVDIEVMRUNUUk9OSUNTIENPUlAuCi0wMDIwQ0IgICAgIChiYXNlIDE2KQkJUFJFVEVDIEVMRUNUUk9OSUNTIENPUlAuCi0JCQkJMzk4OTkgQkFMRU5USU5FIERSLgotCQkJCVNVSVRFICMzMDUKLQkJCQlORVdBUksgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUNDICAgKGhleCkJCURJR0lUQUwgU0VSVklDRVMsIExURC4KLTAwMjBDQyAgICAgKGJhc2UgMTYpCQlESUdJVEFMIFNFUlZJQ0VTLCBMVEQuCi0JCQkJOSBXQVlURSBTVFJFRVQKLQkJCQlDT1NIQU0gSEFNUFNISVJFCi0JCQkJRU5HTEFORCBQTzYgM0JTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtQ0QgICAoaGV4KQkJSFlCUklEIE5FVFdPUktTLCBJTkMuCi0wMDIwQ0QgICAgIChiYXNlIDE2KQkJSFlCUklEIE5FVFdPUktTLCBJTkMuCi0JCQkJMTAyMDEgQlVCQiBST0FECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0LTQxNjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUNFICAgKGhleCkJCUxPR0lDQUwgREVTSUdOIEdST1VQLCBJTkMuCi0wMDIwQ0UgICAgIChiYXNlIDE2KQkJTE9HSUNBTCBERVNJR04gR1JPVVAsIElOQy4KLQkJCQk2MzAxIENIQVBFTCBISUxMIFJPQUQKLQkJCQlSQUxFSUdIIE5DIDI3NjA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DRiAgIChoZXgpCQlURVNUICYgTUVBU1VSRU1FTlQgU1lTVEVNUyBJTkMKLTAwMjBDRiAgICAgKGJhc2UgMTYpCQlURVNUICYgTUVBU1VSRU1FTlQgU1lTVEVNUyBJTkMKLQkJCQkyMDQ1IFNJVEtBIENPVVJUCi0JCQkJTE9WRUxBTkQgQ08gODA1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUQwICAgKGhleCkJCVZFUlNBTFlOWCBDT1JQT1JBVElPTgotMDAyMEQwICAgICAoYmFzZSAxNikJCVZFUlNBTFlOWCBDT1JQT1JBVElPTgotCQkJCTg5NTAgQ0FSTEVZIENJUkNMRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRDEgICAoaGV4KQkJTUlDUk9DT01QVVRFUiBTWVNURU1TIChNKSBTRE4uCi0wMDIwRDEgICAgIChiYXNlIDE2KQkJTUlDUk9DT01QVVRFUiBTWVNURU1TIChNKSBTRE4uCi0JCQkJMjMtMjUsIEpBTEFOIEpFSkFLQSBUVUpVSAotCQkJCVRBTUFOIE1BTFVSSSwgQ0hFUkFTIDU1MTAwIEtVQUxBIExVTVBVUgotCQkJCU1BTEFZU0lBCi0JCQkJTUFMQVlTSUEKLQotMDAtMjAtRDIgICAoaGV4KQkJUkFEIERBVEEgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwMjBEMiAgICAgKGJhc2UgMTYpCQlSQUQgREFUQSBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCTggSEFORUNIT1NIRVQgU1RSRUVUCi0JCQkJVEVMLUFWSVYgIDY5NzEwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTIwLUQzICAgKGhleCkJCU9TVCAoT1VFU1QgU1RBTkRBUkQgVEVMRU1BVElRVQotMDAyMEQzICAgICAoYmFzZSAxNikJCU9TVCAoT1VFU1QgU1RBTkRBUkQgVEVMRU1BVElRVQotCQkJCVJVRSBEVSBCQVMgVklMTEFHRQotCQkJCUJQIDE1OCwgWi5JLiBTVUQtRVNUIDM1NTE1IENFU1NPTi1TRVZJR04KLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMjAtRDQgICAoaGV4KQkJQ0FCTEVUUk9OIC0gWkVJVFRORVQgSU5DLgotMDAyMEQ0ICAgICAoYmFzZSAxNikJCUNBQkxFVFJPTiAtIFpFSVRUTkVUIElOQy4KLQkJCQkzNSBJTkRVU1RSSUFMIFdBWQotCQkJCVAuTy4gQk9YIDUwMDUKLQkJCQlST0hFU1RFUiBOSCAwMzg2Ni01MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1ENSAgIChoZXgpCQlWSVBBIEdNQkgKLTAwMjBENSAgICAgKGJhc2UgMTYpCQlWSVBBIEdNQkgKLQkJCQlXRVRURVJLUkVVWiAyNwotCQkJCUQtOTEwNTggRVJMQU5HRU4KLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLUQ2ICAgKGhleCkJCUJSRUVaRUNPTQotMDAyMEQ2ICAgICAoYmFzZSAxNikJCUJSRUVaRUNPTQotCQkJCUFUSURJTSBURUNITk9MT0dJQ0FMIFBLLUJMREcuMwotCQkJCVRFTC1BVklWICA2MTEzMQotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0yMC1ENyAgIChoZXgpCQlKQVBBTiBNSU5JQ09NUFVURVIgU1lTVEVNUyBDTy4sIEx0ZC4KLTAwMjBENyAgICAgKGJhc2UgMTYpCQlKQVBBTiBNSU5JQ09NUFVURVIgU1lTVEVNUyBDTy4sIEx0ZC4KLQkJCQkzLTMzLTE4IFRBS0FJRE9ISUdBU0hJCi0JCQkJU1VHSU5BTUktS1UKLQkJCQlUT0tZTyAxNjggIAotCQkJCUpBUEFOCi0KLTAwLTIwLUQ4ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyMEQ4ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTQ0MDEgR3JlYXQgQW1lcmljYSBQa3d5LgotCQkJCVNhbnRhIENsYXJhIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1EOSAgIChoZXgpCQlQQU5BU09OSUMgVEVDSE5PTE9HSUVTLCBJTkMuL01JRUNPLVVTCi0wMDIwRDkgICAgIChiYXNlIDE2KQkJUEFOQVNPTklDIFRFQ0hOT0xPR0lFUywgSU5DLi9NSUVDTy1VUwotCQkJCTE3MDMgTi4gUkFOREFMTCBSRC4KLQkJCQlFTEdJTiBJTCA2MDEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtREEgICAoaGV4KQkJQWxjYXRlbCBOb3J0aCBBbWVyaWNhIEVTRAotMDAyMERBICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTm9ydGggQW1lcmljYSBFU0QKLQkJCQkyNjgwMSBXZXN0IEFnb3VyYSBSb2FkCi0JCQkJQ0FMQUJBU0FTIENBIDkxMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1EQiAgIChoZXgpCQlYTkVUIFRFQ0hOT0xPR1ksIElOQy4KLTAwMjBEQiAgICAgKGJhc2UgMTYpCQlYTkVUIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk0MjYgUy4gSElMTFZJRVcgRFJJVkUKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtREMgICAoaGV4KQkJREVOU0lUUk9OIFRBSVdBTiBMVEQuCi0wMDIwREMgICAgIChiYXNlIDE2KQkJREVOU0lUUk9OIFRBSVdBTiBMVEQuCi0JCQkJS1lPV0EgTkFOQUJBTktBTiA1RgotCQkJCTEtMTEtNSBPTU9SSS1LSVRBIE9UQS1LVSwgIFRPS1lPIDE0MwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMjAtREQgICAoaGV4KQkJQ3liZXJ0ZWMgUHR5IEx0ZAotMDAyMEREICAgICAoYmFzZSAxNikJCUN5YmVydGVjIFB0eSBMdGQKLQkJCQlVbml0IDExLCA0MSBIaWdnaW5ib3RoYW0gUm9hZAotCQkJCUdsYWRlc3ZpbGxlIE5TVyAyMTExCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLURFICAgKGhleCkJCUpBUEFOIERJR0lUQUwgTEFCT1JBVCdZIENPLkxURAotMDAyMERFICAgICAoYmFzZSAxNikJCUpBUEFOIERJR0lUQUwgTEFCT1JBVCdZIENPLkxURAotCQkJCUpETCBLQVdBU0FLSSBSICYgRCBDRU5URVIKLQkJCQkxMC0xIE1JTkFNSS1LVVJPS0FXQSBBU0FPLUtVLCBLQVdBU0tBS0ktCi0JCQkJS0FOQUdBV0EtS0VOICAyMTUKLQkJCQlKQVBBTgotCi0wMC0yMC1ERiAgIChoZXgpCQlLWU9TQU4gRUxFQ1RSSUMgTUZHLiBDTy4sIExURC4KLTAwMjBERiAgICAgKGJhc2UgMTYpCQlLWU9TQU4gRUxFQ1RSSUMgTUZHLiBDTy4sIExURC4KLQkJCQkyLTI5LCBIRUlBTi1DSE8sIFRTVVJVTUktS1UKLQkJCQlZT0tPSEFNQSwgMjMwCi0JCQkJSkFQQU4KLQotMDAtMjAtRTAgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDIwRTAgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlLgotCQkJCVN1bm55dmFsZS4gQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUUxICAgKGhleCkJCUFMQU1BUiBFTEVDVFJPTklDUwotMDAyMEUxICAgICAoYmFzZSAxNikJCUFMQU1BUiBFTEVDVFJPTklDUwotCQkJCTQ4OSBESVZJU0lPTiBTVFJFRVQKLQkJCQlDQU1QQkVMTCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRTIgICAoaGV4KQkJSU5GT1JNQVRJT04gUkVTT1VSQ0UgRU5HSU5FRVJJTkcKLTAwMjBFMiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBSRVNPVVJDRSBFTkdJTkVFUklORwotCQkJCTgwMjkgQ09SUE9SQVRFIERSSVZFCi0JCQkJQkFMVElNT1JFIE1EIDIxMjM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FMyAgIChoZXgpCQlNQ0QgS0VOQ09NIENPUlBPUkFUSU9OCi0wMDIwRTMgICAgIChiYXNlIDE2KQkJTUNEIEtFTkNPTSBDT1JQT1JBVElPTgotCQkJCTIwOTUwIENBU1RMRSBST0NLIFJPQUQKLQkJCQlMQUdVTkEgQkVBQ0ggQ0EgOTI2NTEtMTExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRTQgICAoaGV4KQkJSFNJTkcgVEVDSCBFTlRFUlBSSVNFIENPLiwgTFRECi0wMDIwRTQgICAgIChiYXNlIDE2KQkJSFNJTkcgVEVDSCBFTlRFUlBSSVNFIENPLiwgTFRECi0JCQkJTk8uIDIsIExBTkUgMTI4LCBTRUMuIDIKLQkJCQlDSFVORyBTSEFOIE4uIFJELgotCQkJCVRFSVBFSSwgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtRTUgICAoaGV4KQkJQVBFWCBEQVRBLCBJTkMuCi0wMDIwRTUgICAgIChiYXNlIDE2KQkJQVBFWCBEQVRBLCBJTkMuCi0JCQkJNjYyNCBPV0VOUyBEUklWRQotCQkJCVBMRUFTQU5UT04gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUU2ICAgKGhleCkJCUxJREtPUElORyBNQUNISU5FIFRPT0xTIEFCCi0wMDIwRTYgICAgIChiYXNlIDE2KQkJTElES09QSU5HIE1BQ0hJTkUgVE9PTFMgQUIKLQkJCQlCT1ggOTEwCi0JCQkJNTMxIDE5IExJREtPUElORwotCQkJCVNXRURFTgotCi0wMC0yMC1FNyAgIChoZXgpCQlCJlcgTlVDTEVBUiBTRVJWSUNFIENPTVBBTlkKLTAwMjBFNyAgICAgKGJhc2UgMTYpCQlCJlcgTlVDTEVBUiBTRVJWSUNFIENPTVBBTlkKLQkJCQlTUEVDSUFMIFBST0RVQ1RTICYgSU5URUcuU1ZDUy4KLQkJCQkxNTUgTUlMTCBSSURHRSBST0FECi0JCQkJTFlOQ0hCVVJHIFZBIDI0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FOCAgIChoZXgpCQlEQVRBVFJFSyBDT1JQT1JBVElPTgotMDAyMEU4ICAgICAoYmFzZSAxNikJCURBVEFUUkVLIENPUlBPUkFUSU9OCi0JCQkJNDUwNSBXWUxBTkQgRFJJVkUKLQkJCQlFTEtIQVJUIElOIDQ2NTE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FOSAgIChoZXgpCQlEQU5URUwKLTAwMjBFOSAgICAgKGJhc2UgMTYpCQlEQU5URUwKLQkJCQlQLk8uIEJPWCA1NTAxMwotCQkJCTI5OTEgTk9SVEggQVJHWUxFIEFWRS4KLQkJCQlGUkVTTk8gQ0EgOTM3MjctMTM4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRUEgICAoaGV4KQkJRUZGSUNJRU5UIE5FVFdPUktTLCBJTkMuCi0wMDIwRUEgICAgIChiYXNlIDE2KQkJRUZGSUNJRU5UIE5FVFdPUktTLCBJTkMuCi0JCQkJNDIwMSBTUFJJTkcgVkFMTEVZIFJPQUQKLQkJCQlTVUlURSAjMTIwMAotCQkJCURBTExBUyBUWCA3NTI0NC0zNjY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FQiAgIChoZXgpCQlDSU5DSU5OQVRJIE1JQ1JPV0FWRSwgSU5DLgotMDAyMEVCICAgICAoYmFzZSAxNikJCUNJTkNJTk5BVEkgTUlDUk9XQVZFLCBJTkMuCi0JCQkJT05FIE1JQ1JPV0FWRSBQTEFaQQotCQkJCUNJTkNJTk5BVEkgT0ggNDUyNDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUVDICAgKGhleCkJCVRFQ0hXQVJFIFNZU1RFTVMgQ09SUC4KLTAwMjBFQyAgICAgKGJhc2UgMTYpCQlURUNIV0FSRSBTWVNURU1TIENPUlAuCi0JCQkJIzEwMCAtIDEyMDUxIEhPUlNFU0hPRSBXQVkKLQkJCQlSSUNITU9ORCwgQi5DLiBDQU5BREEKLQkJCQlWN0EgNFY0Ci0JCQkJQ0FOQURBCi0KLTAwLTIwLUVEICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLiwgTFRELgotMDAyMEVEICAgICAoYmFzZSAxNikJCUdJR0EtQllURSBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTM2NSBDTE9WRVJMRUFGCi0JCQkJQkFMRFdJTiBQQVJLIENBIDkxNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FRSAgIChoZXgpCQlHVEVDSCBDT1JQT1JBVElPTgotMDAyMEVFICAgICAoYmFzZSAxNikJCUdURUNIIENPUlBPUkFUSU9OCi0JCQkJNTUgVEVDSE5PTE9HWSBXQVkKLQkJCQlXRVNUIEdSRUVOV0lDSCBSSSAwMjgxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRUYgICAoaGV4KQkJVVNDIENPUlBPUkFUSU9OCi0wMDIwRUYgICAgIChiYXNlIDE2KQkJVVNDIENPUlBPUkFUSU9OCi0JCQkJNi00LCBPU0FLSSAxLUNIT01FCi0JCQkJU0hJTkFHQVdBLUtVIFRPS1lPLAotCQkJCTE0MSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLUYwICAgKGhleCkJCVVOSVZFUlNBTCBNSUNST0VMRUNUUk9OSUNTIENPLgotMDAyMEYwICAgICAoYmFzZSAxNikJCVVOSVZFUlNBTCBNSUNST0VMRUNUUk9OSUNTIENPLgotCQkJCTMsIDI3VEggUkQuLCBUQUlDSFVORyBJTkQuUEFSSwotCQkJCVRBSUNIVU4KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtRjEgICAoaGV4KQkJQUxUT1MgSU5ESUEgTElNSVRFRAotMDAyMEYxICAgICAoYmFzZSAxNikJCUFMVE9TIElORElBIExJTUlURUQKLQkJCQlELTYwLCBPS0xITEEgSU5EVVNUUklBTAotCQkJCUFSRUEsIFBIQVNFIDEgTkVXIERFTEhJIC0xMTAwMjAKLQkJCQlJTkRJQQotCQkJCUlORElBCi0KLTAwLTIwLUYyICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbiAKLTAwMjBGMiAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24gCi0JCQkJNTAwIE9yYWNsZSBQYXJrd2F5Ci0JCQkJUmVkd29vZCBTaG9yZXMgQ0EgOTUwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUYzICAgKGhleCkJCVJBWU5FVCBDT1JQT1JBVElPTgotMDAyMEYzICAgICAoYmFzZSAxNikJCVJBWU5FVCBDT1JQT1JBVElPTgotCQkJCTE1NSBDT05TVElUVVRJT04gRFJJVkUKLQkJCQlNRU5MTyBQQVJLIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1GNCAgIChoZXgpCQlTUEVDVFJJWCBDT1JQT1JBVElPTgotMDAyMEY0ICAgICAoYmFzZSAxNikJCVNQRUNUUklYIENPUlBPUkFUSU9OCi0JCQkJMTA2IFdJTE1PVCBST0FELCBTVUlURSAyNTAKLQkJCQlERUVSRklFTEQgSUwgNjAwMTUtNTE1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRjUgICAoaGV4KQkJUEFOREFURUwgQUcKLTAwMjBGNSAgICAgKGJhc2UgMTYpCQlQQU5EQVRFTCBBRwotCQkJCUZBU0FORU5XRUcgMjUKLQkJCQlELTIyMTQ1ICBIQU1CVVJHCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMjAtRjYgICAoaGV4KQkJTkVUIFRFSyAgQU5EIEtBUkxORVQsIElOQy4KLTAwMjBGNiAgICAgKGJhc2UgMTYpCQlORVQgVEVLICBBTkQgS0FSTE5FVCwgSU5DLgotCQkJCUxJVFRMRSBTVFJFQU1TCi0JCQkJVEhFIEFCQk9UU0JST09LLCBCT1VSTkUgRU5EIEJVQ0tTLCBTTDggNQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtRjcgICAoaGV4KQkJQ1lCRVJEQVRBIENPUlBPUkFUSU9OCi0wMDIwRjcgICAgIChiYXNlIDE2KQkJQ1lCRVJEQVRBIENPUlBPUkFUSU9OCi0JCQkJMyBKdXN0aW4gQ291cnQKLQkJCQlNT05URVJFWSBDQSA5Mzk0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRjggICAoaGV4KQkJQ0FSUkVSQSBDT01QVVRFUlMsIElOQy4KLTAwMjBGOCAgICAgKGJhc2UgMTYpCQlDQVJSRVJBIENPTVBVVEVSUywgSU5DLgotCQkJCTIzMTgxIFZFUkRVR08gRFJJVkUtU1RFLiMxMDVBCi0JCQkJTEFHVU5BIEhJTExTIENBIDkyNjUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1GOSAgIChoZXgpCQlQQVJBTElOSyBORVRXT1JLUywgSU5DLgotMDAyMEY5ICAgICAoYmFzZSAxNikJCVBBUkFMSU5LIE5FVFdPUktTLCBJTkMuCi0JCQkJNEYsIE5PLiAyNywgU0VDLjMsIFBBVEVIIFJELgotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC1GQSAgIChoZXgpCQlHREUgU1lTVEVNUywgSU5DLgotMDAyMEZBICAgICAoYmFzZSAxNikJCUdERSBTWVNURU1TLCBJTkMuCi0JCQkJUC5PLiBCT1ggODU0NjggLSBCTERHLiM2MQotCQkJCVNBTiBESUVHTyBDQSA5MjE4Ni01NDY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1GQiAgIChoZXgpCQlPQ1RFTCBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDAyMEZCICAgICAoYmFzZSAxNikJCU9DVEVMIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJMTAwMSBNVVJQSFkgUkFOQ0ggUkQKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRkMgICAoaGV4KQkJTUFUUk9YCi0wMDIwRkMgICAgIChiYXNlIDE2KQkJTUFUUk9YCi0JCQkJMTA1NSBTVC4gUkVHSVMsCi0JCQkJRE9SVkFMLCBRVUVCRUMgIEg5UC0yVDQgIAotCQkJCUNBTkFEQQotCi0wMC0yMC1GRCAgIChoZXgpCQlJVFYgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIwRkQgICAgIChiYXNlIDE2KQkJSVRWIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTY4MDAgT1dFTlNNT1VUSCBBVkUuICAjMjMwCi0JCQkJQ0FOT0dBIFBBUksgQ0EgOTEzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUZFICAgKGhleCkJCVRPUFdBUkUgSU5DLiAvIEdSQU5EIENPTVBVVEVSCi0wMDIwRkUgICAgIChiYXNlIDE2KQkJVE9QV0FSRSBJTkMuIC8gR1JBTkQgQ09NUFVURVIKLQkJCQlDT1JQT1JBVElPTgotCQkJCUIxLCBOTy4gOSwgTEFORSA1MCBTRUNUSU9OIDMsIE5BTiBLQU5HIFIKLQkJCQlUQUlQRUkgIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtRkYgICAoaGV4KQkJU1lNTUVUUklDQUwgVEVDSE5PTE9HSUVTCi0wMDIwRkYgICAgIChiYXNlIDE2KQkJU1lNTUVUUklDQUwgVEVDSE5PTE9HSUVTCi0JCQkJNTAwIEhVTlRNQVIgUEFSSyBEUklWRQotCQkJCUhFUk5ET04gVkEgMjIwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTAwICAgKGhleCkJCUdlbVRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyMTAwICAgICAoYmFzZSAxNikJCUdlbVRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLjEgSmVuIEFpIFJvYWQsIEhzaW5jaHUgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUh1a291LCBIc2luY2h1IDMwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtMDEgICAoaGV4KQkJQXBsaWNhY2lvbmVzIEVsZWN0cm9uaWNhcyBRdWFzYXIgKEFFUSkKLTAwMjEwMSAgICAgKGJhc2UgMTYpCQlBcGxpY2FjaW9uZXMgRWxlY3Ryb25pY2FzIFF1YXNhciAoQUVRKQotCQkJCUMvUmV5IFBhc3RvciA0MAotCQkJCVBvbGlnb25vIEluZHVzdHJpYWwgQnV0YXJxdWUKLQkJCQlMZWdhbmVzIE1hZHJpZCAyODkxNAotCQkJCVNQQUlOCi0KLTAwLTIxLTAyICAgKGhleCkJCVVwZGF0ZUxvZ2ljIEluYy4KLTAwMjEwMiAgICAgKGJhc2UgMTYpCQlVcGRhdGVMb2dpYyBJbmMuCi0JCQkJMiBXaWxsb3cgU3RyZWV0LCBTdWl0ZSAxMDEKLQkJCQlTb3V0aGJvcm91Z2ggTUEgMDE3NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTAzICAgKGhleCkJCUdISSBFbGVjdHJvbmljcywgTExDCi0wMDIxMDMgICAgIChiYXNlIDE2KQkJR0hJIEVsZWN0cm9uaWNzLCBMTEMKLQkJCQkzNTU1NSBHYXJmaWVsZCBSZC4KLQkJCQlTdWl0ZSA0QgotCQkJCUNsaW50b24gVG93bnNoaXAgTUkgNDgwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTA0ICAgKGhleCkJCUdpZ2FzZXQgQ29tbXVuaWNhdGlvbnMgR21iSAotMDAyMTA0ICAgICAoYmFzZSAxNikJCUdpZ2FzZXQgQ29tbXVuaWNhdGlvbnMgR21iSAotCQkJCUZyYW5rZW5zdHJhc3NlIDIKLQkJCQk0NjM5NSBCb2Nob2x0IAotCQkJCUdFUk1BTlkKLQotMDAtMjEtMDUgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTAwMjEwNSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTcwMSBFLiBNaWRkbGVmaWVsZCBSZC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0wNiAgIChoZXgpCQlSSU0gVGVzdGluZyBTZXJ2aWNlcwotMDAyMTA2ICAgICAoYmFzZSAxNikJCVJJTSBUZXN0aW5nIFNlcnZpY2VzCi0JCQkJNDQwIFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT04gTjJMIDVSOQotCQkJCUNBTkFEQQotCi0wMC0yMS0wNyAgIChoZXgpCQlTZW93b25pbnRlY2ggQ28gTHRkLgotMDAyMTA3ICAgICAoYmFzZSAxNikJCVNlb3dvbmludGVjaCBDbyBMdGQuCi0JCQkJNjg5LTQ3IEdldW1qZW9uZ2RvbmcKLQkJCQlHdW5wb3NpIEt5b3VuZ2tpZG8gNDM2LTg2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS0wOCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyMTA4ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yMS0wOSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyMTA5ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yMS0wQSAgIChoZXgpCQlieWQ6c2lnbiBDb3Jwb3JhdGlvbgotMDAyMTBBICAgICAoYmFzZSAxNikJCWJ5ZDpzaWduIENvcnBvcmF0aW9uCi0JCQkJMi0xMC02IFRzdWtpamkKLQkJCQlCUFMgU1FVQVJFIDJGCi0JCQkJQ2h1by1rdSBUb2t5byAxMDQtMDA0NQotCQkJCUpBUEFOCi0KLTAwLTIxLTBCICAgKGhleCkJCUdFTUlOSSBUUkFaRSBSRklEIFBWVC4gTFRELgotMDAyMTBCICAgICAoYmFzZSAxNikJCUdFTUlOSSBUUkFaRSBSRklEIFBWVC4gTFRELgotCQkJCTEsIERSLiBSQU5HQSBST0FECi0JCQkJQUxXQVJQRVQKLQkJCQlDSEVOTkFJIFRBTUlMTkFEVSA2MDAwMTgKLQkJCQlJTkRJQQotCi0wMC0yMS0wQyAgIChoZXgpCQlDeW10ZWMgU3lzdGVtcywgSW5jLgotMDAyMTBDICAgICAoYmFzZSAxNikJCUN5bXRlYyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTA4NDUgT2xpdmUgQm91bGV2ZWFyZAotCQkJCVN1aXRlIDMwNgotCQkJCVN0IExvdWlzIE1PIDYzMTQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0wRCAgIChoZXgpCQlTQU1TSU4gSU5OT1RFQwotMDAyMTBEICAgICAoYmFzZSAxNikJCVNBTVNJTiBJTk5PVEVDCi0JCQkJU0FSSVlVTkRPTkcgSUxTQU5ET05HLUdVCi0JCQkJMjUyLTIzCi0JCQkJR09ZQU5HIEtZVU5HR0kgNDExNTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTBFICAgKGhleCkJCU9ycGFrIFN5c3RlbXMgTC5ULkQuCi0wMDIxMEUgICAgIChiYXNlIDE2KQkJT3JwYWsgU3lzdGVtcyBMLlQuRC4KLQkJCQkzMSBMZWNoaSBTdAotCQkJCUJuZWkgLSBCcmFrICA1MTExNAotCQkJCUlTUkFFTAotCi0wMC0yMS0wRiAgIChoZXgpCQlDZXJuaXVtIENvcnAKLTAwMjEwRiAgICAgKGJhc2UgMTYpCQlDZXJuaXVtIENvcnAKLQkJCQkxOTQzIElzYWFjIE5ld3RvbiBTcQotCQkJCVN1aXRlIDIwMAotCQkJCVJlc3RvbiBWQSAyMDE5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMTAgICAoaGV4KQkJQ2xlYXJib3ggU3lzdGVtcwotMDAyMTEwICAgICAoYmFzZSAxNikJCUNsZWFyYm94IFN5c3RlbXMKLQkJCQlVbml0IDExLCAxMi0xNCBCZWF1bW9udCBSb2FkCi0JCQkJTXQgS3VyaW5nLUdhaSBOU1cgMjA4MAotCQkJCUFVU1RSQUxJQQotCi0wMC0yMS0xMSAgIChoZXgpCQlVbmlwaG9uZSBJbmMuCi0wMDIxMTEgICAgIChiYXNlIDE2KQkJVW5pcGhvbmUgSW5jLgotCQkJCTc5NSBNYWluIFN0cmVldAotCQkJCUhhbGYgTW9vbiBCYXkgQ0EgOTQwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTEyICAgKGhleCkJCVdJU0NPTSBTWVNURU0gQ08uLExURAotMDAyMTEyICAgICAoYmFzZSAxNikJCVdJU0NPTSBTWVNURU0gQ08uLExURAotCQkJCTEwMCBKaWFuZ2p1biBSb2FkLEppYW5nbmluZywKLQkJCQlOYW5qaW5nICAyMTExMDAKLQkJCQlDSElOQQotCi0wMC0yMS0xMyAgIChoZXgpCQlQYWR0ZWMgUy9BCi0wMDIxMTMgICAgIChiYXNlIDE2KQkJUGFkdGVjIFMvQQotCQkJCVJvYWQgQ2FtcGluYXMgTW9naS1NaXJpbSBrbSAxMTgsNQotCQkJCUNhbXBpbmFzIFNhbyBQYXVsbyAxMzA4Ni05MDIKLQkJCQlCUkFaSUwKLQotMDAtMjEtMTQgICAoaGV4KQkJSHlsYWIgVGVjaG5vbG9neSBJbmMuCi0wMDIxMTQgICAgIChiYXNlIDE2KQkJSHlsYWIgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTVGLTIuLE5vLjg3MixKaG9uZ2poZW5nIFJkLgotCQkJCUpob25naGUgQ2l0eSwgVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtMTUgICAoaGV4KQkJUEhZV0UgU3lzdGVtZSBHbWJIICYgQ28uIEtHCi0wMDIxMTUgICAgIChiYXNlIDE2KQkJUEhZV0UgU3lzdGVtZSBHbWJIICYgQ28uIEtHCi0JCQkJUm9iZXJ0LUJvc2NoLUJyZWl0ZSAxMAotCQkJCUdvZXR0aW5nZW4gTmllZGVyc2FjaHNlbiAzNzA3OQotCQkJCUdFUk1BTlkKLQotMDAtMjEtMTYgICAoaGV4KQkJVHJhbnNjb24gRWxlY3Ryb25pYyBTeXN0ZW1zLCBzcG9sLiBzIHIuIG8uCi0wMDIxMTYgICAgIChiYXNlIDE2KQkJVHJhbnNjb24gRWxlY3Ryb25pYyBTeXN0ZW1zLCBzcG9sLiBzIHIuIG8uCi0JCQkJS3ZhcGlsb3ZhIDIxMzMKLQkJCQlGcnlkZWstTWlzdGVrICA3MzgwMgotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTIxLTE3ICAgKGhleCkJCVRlbGxvcmQKLTAwMjExNyAgICAgKGJhc2UgMTYpCQlUZWxsb3JkCi0JCQkJR3Vyb2d1IEd1cm9kb25nIDE3MC01IFdvb2xpbSBlLUJpeiBDZW50ZXIgNzA5Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMTggICAoaGV4KQkJQXRoZW5hIFRlY2gsIEluYy4KLTAwMjExOCAgICAgKGJhc2UgMTYpCQlBdGhlbmEgVGVjaCwgSW5jLgotCQkJCTM3MjEgTWFjaW50b3NoIERyCi0JCQkJVmludCBIaWxsIFRlY2ggUGFyawotCQkJCVdhcnJlbnRvbiBWQSAyMDE4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMTkgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvLU1lY2hhbmljcwotMDAyMTE5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryby1NZWNoYW5pY3MKLQkJCQkzMTQsIE1ldGFuIDMgZG9uZwotCQkJCVN1d29uIEt5dW5nLWdpIGRvIDQ0My03NDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMUEgICAoaGV4KQkJTEluVGVjaCBDb3Jwb3JhdGlvbgotMDAyMTFBICAgICAoYmFzZSAxNikJCUxJblRlY2ggQ29ycG9yYXRpb24KLQkJCQlLcmFzbm9rYXphcm1lbm5heWEgc3QuLCAxMgotCQkJCU1vc2NvdyAgMTExMjUwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTIxLTFCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjExQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0xQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIxMUMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMUQgICAoaGV4KQkJRGF0YWxpbmUgQUIKLTAwMjExRCAgICAgKGJhc2UgMTYpCQlEYXRhbGluZSBBQgotCQkJCUthdHJpbmVkYWxzZ2F0YW4gNTMKLQkJCQlCT1JBUyAgUy01MDQ1MQotCQkJCVNXRURFTgotCi0wMC0yMS0xRSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMTFFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMUYgICAoaGV4KQkJU0hJTlNVTkcgREVMVEFURUNIIENPLixMVEQuCi0wMDIxMUYgICAgIChiYXNlIDE2KQkJU0hJTlNVTkcgREVMVEFURUNIIENPLixMVEQuCi0JCQkJNDQtMTAKLQkJCQlVTkdOQU0tRE9ORwotCQkJCUNIQU5HV09OLUNJVFkgS1lVTkdOQU0tRE8gNjQxLTI5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS0yMCAgIChoZXgpCQlTZXF1ZWwgVGVjaG5vbG9naWVzCi0wMDIxMjAgICAgIChiYXNlIDE2KQkJU2VxdWVsIFRlY2hub2xvZ2llcwotCQkJCTI5NTEgQ2xldmVsYW5kIEF2ZSBOCi0JCQkJUm9zZXZpbGxlIE1OIDU1MTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0yMSAgIChoZXgpCQlWUm1hZ2ljIEdtYkgKLTAwMjEyMSAgICAgKGJhc2UgMTYpCQlWUm1hZ2ljIEdtYkgKLQkJCQlBdWd1c3RhYW5sYWdlIDMyCi0JCQkJTWFubmhlaW0gQlcgNjgxNjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLTIyICAgKGhleCkJCUNoaXAtcHJvIEx0ZC4KLTAwMjEyMiAgICAgKGJhc2UgMTYpCQlDaGlwLXBybyBMdGQuCi0JCQkJNUYuLTQsIE5vLjYzLCBTaXdlaSBSZC4sIE5vcnRoIERpc3RyaWN0LAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtMjMgICAoaGV4KQkJQWVyb3NhdCBBdmlvbmljcwotMDAyMTIzICAgICAoYmFzZSAxNikJCUFlcm9zYXQgQXZpb25pY3MKLQkJCQk2MiBTdGF0ZSBSZC4KLQkJCQkxMDFBIFN1aXRlIDJCCi0JCQkJQW1oZXJzdCBOSCAwMzAzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMjQgICAoaGV4KQkJT3B0b3MgUGxjCi0wMDIxMjQgICAgIChiYXNlIDE2KQkJT3B0b3MgUGxjCi0JCQkJUXVlZW5zZmVycnkgSG91c2UKLQkJCQlDYXJuZWdpZSBCdXNpbmVzcyBDYW1wdXMKLQkJCQlEdW5mZXJtbGluZSBGaWZlIEtZMTEgOEdSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjEtMjUgICAoaGV4KQkJS1VLIEpFIFRPTkcgU0hJTiBDby4sTFRECi0wMDIxMjUgICAgIChiYXNlIDE2KQkJS1VLIEpFIFRPTkcgU0hJTiBDby4sTFRECi0JCQkJNDc2LTMKLQkJCQlKYWtKZW9uLURvbmcsCi0JCQkJSW5jaGVvbiBLd2FuZ3lvdWstU2kgNDA3LTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS0yNiAgIChoZXgpCQlTaGVuemhlbiBUb3JjaCBFcXVpcG1lbnQgQ28uLCBMdGQuCi0wMDIxMjYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gVG9yY2ggRXF1aXBtZW50IENvLiwgTHRkLgotCQkJCUZsb29yIDUsIEJsb2NrIDMsIExpbWluZyBJbmR1c3RyaWFsIERpc3RyaWN0LCBaaG9uZ3NoYW55dWFuIFJvYWQsIE5hbnNoYW4sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1MgotCQkJCUNISU5BCi0KLTAwLTIxLTI3ICAgKGhleCkJCVRQLUxJTksgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjEyNyAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJU291dGggQnVpbGRpbmcsIE5vLjUgS2V5dWFuIFJvYWQsIENlbnRyYWwgWm9uZSwKLQkJCQlTY2llbmNlICYgVGVjaG5vbG9neSBQYXJrLE5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjEtMjggICAoaGV4KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0wMDIxMjggICAgIChiYXNlIDE2KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0JCQkJMTcgTmV0d29yayBDaXJjbGUKLQkJCQlCdWlsZGluZyAxNywgVU1QSzE3LTEzMQotCQkJCU1lbmxvIFBhcmsgQ0EgOTUwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTI5ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAyMTI5ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMkEgICAoaGV4KQkJQXVkaW92b3ggQ29ycG9yYXRpb24KLTAwMjEyQSAgICAgKGJhc2UgMTYpCQlBdWRpb3ZveCBDb3Jwb3JhdGlvbgotCQkJCTE1MCBNYXJjdXMgQmx2ZAotCQkJCUhhdXBwYXVnZSBOWSAxMTc4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMkIgICAoaGV4KQkJTVNBIEF1ZXIKLTAwMjEyQiAgICAgKGJhc2UgMTYpCQlNU0EgQXVlcgotCQkJCVRoaWVtYW5uc3RyLiAxCi0JCQkJQmVybGluICAxMjA1OQotCQkJCUdFUk1BTlkKLQotMDAtMjEtMkMgICAoaGV4KQkJU2VtSW5kaWEgU3lzdGVtIFByaXZhdGUgTGltaXRlZAotMDAyMTJDICAgICAoYmFzZSAxNikJCVNlbUluZGlhIFN5c3RlbSBQcml2YXRlIExpbWl0ZWQKLQkJCQlOby4gMTEwNi85LCBBLk0gSW5kdXN0cmlhbCBFc3RhdGUsIEdhcnZlYmhhdmlwYWx5YQotCQkJCTd0aCBtaWxlLCBIb3N1ciBSb2FkCi0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAgMDY4Ci0JCQkJSU5ESUEKLQotMDAtMjEtMkQgICAoaGV4KQkJU0NJTU9MRVggQ09SUE9SQVRJT04KLTAwMjEyRCAgICAgKGJhc2UgMTYpCQlTQ0lNT0xFWCBDT1JQT1JBVElPTgotCQkJCTI0MzAsIFNhaWpvdSwgU2hvd2EtY2hvCi0JCQkJTmFrYWtvbWEtZ3VuLCBZYW1hbmFzaGkgIDQwOS0zODY2Ci0JCQkJSkFQQU4KLQotMDAtMjEtMkUgICAoaGV4KQkJZHJlc2Rlbi1lbGVrdHJvbmlrCi0wMDIxMkUgICAgIChiYXNlIDE2KQkJZHJlc2Rlbi1lbGVrdHJvbmlrCi0JCQkJR2xhc2V3YWxkdHN0cmFzc2UgMjIKLQkJCQlEcmVzZGVuIFNheG9ueSBELTAxMjc3Ci0JCQkJR0VSTUFOWQotCi0wMC0yMS0yRiAgIChoZXgpCQlQaG9lYmUgTWljcm8gSW5jLgotMDAyMTJGICAgICAoYmFzZSAxNikJCVBob2ViZSBNaWNybyBJbmMuCi0JCQkJNDc2MDYgS2F0byBSZAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTMwICAgKGhleCkJCUtlaWNvIEhpZ2h0ZWNoIEluYy4KLTAwMjEzMCAgICAgKGJhc2UgMTYpCQlLZWljbyBIaWdodGVjaCBJbmMuCi0JCQkJQWNlIHR3aW4gdG93ZXIgSSwgMTJ0aCBGbC4KLQkJCQkyMTItMSwgR3Vyby1kb25nLCBndXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMzEgICAoaGV4KQkJQmx5bmtlIEluYy4KLTAwMjEzMSAgICAgKGJhc2UgMTYpCQlCbHlua2UgSW5jLgotCQkJCTEzMyBSaWNobW9uZCBTdC4gV2VzdAotCQkJCVN1aXRlIDYwMAotCQkJCVRvcm9udG8gT250YXJpbyBNNUggMkwzCi0JCQkJQ0FOQURBCi0KLTAwLTIxLTMyICAgKGhleCkJCU1hc3RlcmNsb2NrLCBJbmMuCi0wMDIxMzIgICAgIChiYXNlIDE2KQkJTWFzdGVyY2xvY2ssIEluYy4KLQkJCQkyNDg0IFdlc3QgQ2xheSBTdC4KLQkJCQlTdC4gQ2hhcmxlcyBNTyA2MzMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMzMgICAoaGV4KQkJQnVpbGRpbmcgQiwgSW5jCi0wMDIxMzMgICAgIChiYXNlIDE2KQkJQnVpbGRpbmcgQiwgSW5jCi0JCQkJMTAwMCBOVyA2NXRoIFN0cmVldCwgU3VpdGUgMzAwCi0JCQkJRnQuIExhdWRlcmRhbGUgRkwgMzMzMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTM0ICAgKGhleCkJCUJyYW5keXdpbmUgQ29tbXVuaWNhdGlvbnMKLTAwMjEzNCAgICAgKGJhc2UgMTYpCQlCcmFuZHl3aW5lIENvbW11bmljYXRpb25zCi0JCQkJMTE1MyBXYXJuZXIgQXZlCi0JCQkJVHVzdGluIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zNSAgIChoZXgpCQlBTENBVEVMLUxVQ0VOVAotMDAyMTM1ICAgICAoYmFzZSAxNikJCUFMQ0FURUwtTFVDRU5UCi0JCQkJUmFtaXJleiBkZSBQcmFkbyA1Ci0JCQkJTWFkcmlkICAyODA0NQotCQkJCVNQQUlOCi0KLTAwLTIxLTM2ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIxMzYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVVMgSGlnaHdheSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMzcgICAoaGV4KQkJQmF5IENvbnRyb2xzLCBMTEMKLTAwMjEzNyAgICAgKGJhc2UgMTYpCQlCYXkgQ29udHJvbHMsIExMQwotCQkJCTY1MjggV2VhdGhlcmZpZWxkIEN0Ci0JCQkJTWF1bWVlIE9IIDQzNTM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zOCAgIChoZXgpCQlDZXBoZWlkCi0wMDIxMzggICAgIChiYXNlIDE2KQkJQ2VwaGVpZAotCQkJCTkwNCBDYXJpYmJlYW4gRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTM5ICAgKGhleCkJCUVzY2hlcmxvZ2ljIEluYy4KLTAwMjEzOSAgICAgKGJhc2UgMTYpCQlFc2NoZXJsb2dpYyBJbmMuCi0JCQkJMTQ4MSBSb3NlYmFuayBSZC4KLQkJCQlQaWNrZXJpbmcgT250YXJpbyBMMVYgMVAzCi0JCQkJQ0FOQURBCi0KLTAwLTIxLTNBICAgKGhleCkJCVdpbmNoZXN0ZXIgU3lzdGVtcyBJbmMuCi0wMDIxM0EgICAgIChiYXNlIDE2KQkJV2luY2hlc3RlciBTeXN0ZW1zIEluYy4KLQkJCQkxMDEgQmlsbGVyaWNhIEF2ZW51ZQotCQkJCUJsZGcgNSBzdWl0ZSAxMDEKLQkJCQlCaWxsZXJpY2EsIE1BIDAxODYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zQiAgIChoZXgpCQlCZXJrc2hpcmUgUHJvZHVjdHMsIEluYwotMDAyMTNCICAgICAoYmFzZSAxNikJCUJlcmtzaGlyZSBQcm9kdWN0cywgSW5jCi0JCQkJUE8gQm94IDI4MTkKLQkJCQlDdW1taW5nIEdBIDMwMDI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zQyAgIChoZXgpCQlBbGlwaENvbQotMDAyMTNDICAgICAoYmFzZSAxNikJCUFsaXBoQ29tCi0JCQkJMTUwIEV4ZWN1dGl2ZSBQYXJrIEJsdmQKLQkJCQlTdWl0ZSA0NTUwCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtM0QgICAoaGV4KQkJQ2VybWV0ZWsgTWljcm9lbGVjdHJvbmljcywgSW5jLgotMDAyMTNEICAgICAoYmFzZSAxNikJCUNlcm1ldGVrIE1pY3JvZWxlY3Ryb25pY3MsIEluYy4KLQkJCQkzNzQgVHVycXVvaXNlIFN0cmVldAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zRSAgIChoZXgpCQlUb21Ub20KLTAwMjEzRSAgICAgKGJhc2UgMTYpCQlUb21Ub20KLQkJCQlPb3N0ZXJkb2tzc3RyYWF0IDExNAotCQkJCUFtc3RlcmRhbSBOb3J0aCBIb2xsYW5kIDEwMTEgREsKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMS0zRiAgIChoZXgpCQlBLVRlYW0gVGVjaG5vbG9neSBMdGQuCi0wMDIxM0YgICAgIChiYXNlIDE2KQkJQS1UZWFtIFRlY2hub2xvZ3kgTHRkLgotCQkJCVJtLiAxNjA4LCAxNi9GLiwgTWV0cm9wb2xlIFNxdWFyZSwKLQkJCQkyIE9uIFlpdSBTdC4sIFNoYXRpbiwKLQkJCQlOZXcgVGVycml0b3JpZXMsICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMjEtNDAgICAoaGV4KQkJRU4gVGVjaG5vbG9naWVzIEluYy4KLTAwMjE0MCAgICAgKGJhc2UgMTYpCQlFTiBUZWNobm9sb2dpZXMgSW5jLgotCQkJCUdldW1ib2sgQmxkZy4gOUYsIEJhbmQteWktZG9uZyA0NS0yLCBTb25ncGEtZ3UKLQkJCQlTZW91bCAgMTM4LTgyOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS00MSAgIChoZXgpCQlSQURMSVZFCi0wMDIxNDEgICAgIChiYXNlIDE2KQkJUkFETElWRQotCQkJCTQgSGFuZWNob3NoZXQgU3QuCi0JCQkJVGVsIEF2aXYgIDY5NzEwCi0JCQkJSVNSQUVMCi0KLTAwLTIxLTQyICAgKGhleCkJCUFkdmFuY2VkIENvbnRyb2wgU3lzdGVtcyBkb28KLTAwMjE0MiAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBDb250cm9sIFN5c3RlbXMgZG9vCi0JCQkJQnVsZXZhciBab3JhbmEgRGppbmRqaWNhIDhhCi0JCQkJQmVsZ3JhZGUgU2VyYmlhIDExMDcwCi0KLTAwLTIxLTQzICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIxNDMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS00NCAgIChoZXgpCQlTUyBUZWxlY29tcwotMDAyMTQ0ICAgICAoYmFzZSAxNikJCVNTIFRlbGVjb21zCi0JCQkJMjMgQm90aGEgQXZlbnVlCi0JCQkJTHl0dGVsdG9uIE1hbm9yCi0JCQkJQ2VudHVyaW9uIEdhdXRlbmcgMDE0MAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0yMS00NSAgIChoZXgpCQlTZW1wdGlhbiBUZWNobm9sb2dpZXMgTHRkLgotMDAyMTQ1ICAgICAoYmFzZSAxNikJCVNlbXB0aWFuIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJTm8uIDgwOSwgIFRvd2VyIEIsIFNoaSBKaSBLZSBNYW8KLQkJCQlOby4gNjYgUmQuIFpob25nZ3VhbiBDdW4gRG9uZwotCQkJCUJlaWppbmcgIDEwMDE5MAotCQkJCUNISU5BCi0KLTAwLTIxLTQ2ICAgKGhleCkJCVNDSSBUZWNobm9sb2d5Ci0wMDIxNDYgICAgIChiYXNlIDE2KQkJU0NJIFRlY2hub2xvZ3kKLQkJCQlQT0IgMTAwMAotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTQ3ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyMTQ3ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTIxLTQ4ICAgKGhleCkJCUthY28gU29sYXIgS29yZWEKLTAwMjE0OCAgICAgKGJhc2UgMTYpCQlLYWNvIFNvbGFyIEtvcmVhCi0JCQkJQ2h1bmctd29uLWt1IFNhbmctZGVhLXdvbi1kb25nIDMzMy0xCi0JCQkJU29uZ25hbSBLeXVuZy1raWRvIDQ2Mi04MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtNDkgICAoaGV4KQkJQ2hpbmEgRGFoZW5nIEdyb3VwICxJbmMuCi0wMDIxNDkgICAgIChiYXNlIDE2KQkJQ2hpbmEgRGFoZW5nIEdyb3VwICxJbmMuCi0JCQkJMTJGIERhaGVuZyBTY2llbmNlICYgVGVjaG5vbG9neSBUb3dlciAsTk8uMyBTdXpob3UgU3RyLgotCQkJCUJlaWppbmcgIDEwMDA4MAotCQkJCUNISU5BCi0KLTAwLTIxLTRBICAgKGhleCkJCVBpeGVsIFZlbG9jaXR5LCBJbmMKLTAwMjE0QSAgICAgKGJhc2UgMTYpCQlQaXhlbCBWZWxvY2l0eSwgSW5jCi0JCQkJMzkxNyBSZXNlYXJjaCBQYXJrIERyLgotCQkJCVN1aXRlIEI3Ci0JCQkJQW5uIEFyYm9yIE1JIDQ4MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS00QiAgIChoZXgpCQlTaGVuemhlbiBIQU1QIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLixMdGQKLTAwMjE0QiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBIQU1QIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4zMDItMzAzLDMgRmxvb3IsRGlzdHJpY3QgQSxUQ0wgVG93ZXIsR2FveGluIE5hbiBZaSBSb2FkLE5hblNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjEtNEMgICAoaGV4KQkJU0FNU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLTAwMjE0QyAgICAgKGJhc2UgMTYpCQlTQU1TVU5HIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTQxNiwgTUVUQU4tM0RPTkcsCi0JCQkJWU9VTkdUT05HLUdVCi0JCQkJU1VXT04gS1lVTkdLSS1ETyA0NDItNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTREICAgKGhleCkJCUd1YW5nemhvdSBTa3l0b25lIFRyYW5zbWlzc2lvbiBUZWNobm9sb2d5IENvbS4gTHRkLgotMDAyMTREICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBTa3l0b25lIFRyYW5zbWlzc2lvbiBUZWNobm9sb2d5IENvbS4gTHRkLgotCQkJCTMvRiBXZXN0LCBCbG9jayA0LCBIdWFuZ3pob3UKLQkJCQlJbmR1c3RyaWFsIFBhcmssIENoZWJlaSBSb2FkLgotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYwCi0JCQkJQ0hJTkEKLQotMDAtMjEtNEUgICAoaGV4KQkJR1MgWXVhc2EgUG93ZXIgU3VwcGx5IEx0ZC4KLTAwMjE0RSAgICAgKGJhc2UgMTYpCQlHUyBZdWFzYSBQb3dlciBTdXBwbHkgTHRkLgotCQkJCTEsIElub2JhbmJhLWNobywgTmlzaGlub3NobywgS2lzc2hvaW4sIE1pbmFtaS1rdSwKLQkJCQlLeW90byAgNjAxLTg1MjAKLQkJCQlKQVBBTgotCi0wMC0yMS00RiAgIChoZXgpCQlBTFBTIEVsZWN0cmljIENvLiwgTHRkCi0wMDIxNEYgICAgIChiYXNlIDE2KQkJQUxQUyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGkKLQkJCQlTb21hIGNpdHkgRnVrdXNoaW1hIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjEtNTAgICAoaGV4KQkJRVlFVklFVyBFTEVDVFJPTklDUwotMDAyMTUwICAgICAoYmFzZSAxNikJCUVZRVZJRVcgRUxFQ1RST05JQ1MKLQkJCQkzIEZsb29yLCBOby4gODYsIEt1bmcgWWVoIDMyIFJvYWQKLQkJCQlUQUlDSFVORyAgNDA3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMS01MSAgIChoZXgpCQlNaWxsaW5ldCBDby4sIEx0ZC4KLTAwMjE1MSAgICAgKGJhc2UgMTYpCQlNaWxsaW5ldCBDby4sIEx0ZC4KLQkJCQkyRiwgV2VzdCBCdWlsZGluZywgSVQgVmVudHVyZSBUb3dlciwgNzgsIEdhcmFrYm9uLURvbmcKLQkJCQlTb25ncGEtZ3UgU2VvdWwgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS01MiAgIChoZXgpCQlHZW5lcmFsIFNhdGVsbGl0ZSBSZXNlYXJjaCAmIERldmVsb3BtZW50IExpbWl0ZWQKLTAwMjE1MiAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIFNhdGVsbGl0ZSBSZXNlYXJjaCAmIERldmVsb3BtZW50IExpbWl0ZWQKLQkJCQlMaXQuICJFIiwgYnVpbGRpbmcgMiwgNCBOb3ZvbGFkb3poc2theWEgc3RyCi0JCQkJU2FpbnQgUGV0ZXJzYnVyZyAgMTk3MTEwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTIxLTUzICAgKGhleCkJCVNlYU1pY3JvIEluYy4KLTAwMjE1MyAgICAgKGJhc2UgMTYpCQlTZWFNaWNybyBJbmMuCi0JCQkJMzI1MCBKYXkgU3RyZWV0Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTU0ICAgKGhleCkJCUQtVEFDUSBTb2x1dGlvbnMgTHRkCi0wMDIxNTQgICAgIChiYXNlIDE2KQkJRC1UQUNRIFNvbHV0aW9ucyBMdGQKLQkJCQlKYW1lcyBXYXR0IEJ1aWxkaW5nCi0JCQkJU0VUUAotCQkJCUVhc3QgS2lsYnJpZGUgTGFuYXJrc2hpcmUgRzc1IDBRRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIxLTU1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjE1NSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS01NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIxNTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNTcgICAoaGV4KQkJTmF0aW9uYWwgRGF0YWNhc3QsIEluYy4KLTAwMjE1NyAgICAgKGJhc2UgMTYpCQlOYXRpb25hbCBEYXRhY2FzdCwgSW5jLgotCQkJCTIxMDAgQ3J5c3RhbCBEcml2ZSwgU3VpdGUgNzUwCi0JCQkJQXJsaW5ndG9uIFZBIDIyMjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS01OCAgIChoZXgpCQlTdHlsZSBGbHlpbmcgVGVjaG5vbG9neSBDby4KLTAwMjE1OCAgICAgKGJhc2UgMTYpCQlTdHlsZSBGbHlpbmcgVGVjaG5vbG9neSBDby4KLQkJCQkyMi9GLEN5YmVyIFRvd2VyIEIsTm8uMiBaaG9uZyBHdWFuIEN1biBTb3V0aCBTdHJlZXQsSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwODYKLQkJCQlDSElOQQotCi0wMC0yMS01OSAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi0wMDIxNTkgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTi4gTWF0aGlsZGEgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS01QSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMjE1QSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAyCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNUIgICAoaGV4KQkJSW5vdGl2ZQotMDAyMTVCICAgICAoYmFzZSAxNikJCUlub3RpdmUKLQkJCQlEZSBQaW5ja2FydCA1NAotCQkJCU51ZW5lbiBOb29yZCBCcmFiYW50IDU2NzQgQ0MKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMS01QyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjE1QyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTIxLTVEICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyMTVEICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjEtNUUgICAoaGV4KQkJSUJNIENvcnAKLTAwMjE1RSAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNUYgICAoaGV4KQkJSUhTRSBHbWJICi0wMDIxNUYgICAgIChiYXNlIDE2KQkJSUhTRSBHbWJICi0JCQkJTWF5YmFjaHN0cmFzc2UgMTEKLQkJCQlPYmVydGV1cmluZ2VuIEJhZGVuLVd1cnR0ZW1iZXJnIDg4MDk0Ci0JCQkJR0VSTUFOWQotCi0wMC0yMS02MCAgIChoZXgpCQlIaWRlYSBTb2x1dGlvbnMgQ28uIEx0ZC4KLTAwMjE2MCAgICAgKGJhc2UgMTYpCQlIaWRlYSBTb2x1dGlvbnMgQ28uIEx0ZC4KLQkJCQk0RiwgRG8mQ2FuIGhvdXNlIERsZGcuLCAjNjU2LTE2ODMsIFNlb25nc3UgMS1nYSAyLWRvbmcsIFNlb25nZG9uZy1ndQotCQkJCVNlb3VsICA2NTYtMTY4MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS02MSAgIChoZXgpCQlZb3VybmV0IEluYy4KLTAwMjE2MSAgICAgKGJhc2UgMTYpCQlZb3VybmV0IEluYy4KLQkJCQlLVCBSJkQgQ2VudGVyCi0JCQkJMTcgVW15ZW9uLWRvbmcsIFNlb2Noby1ndQotCQkJCVNlb3VsICAxMzctNzkyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTYyICAgKGhleCkJCU5vcnRlbAotMDAyMTYyICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTE4MzAgTWF0aGVzb24gQm91bGV2YXJkCi0JCQkJU3VpdGUgMQotCQkJCU1pc3Npc3NhdWdhIE9udGFyaW8gTDRXIDBCMwotCQkJCUNBTkFEQQotCi0wMC0yMS02MyAgIChoZXgpCQlBU0tFWSBDT01QVVRFUiBDT1JQCi0wMDIxNjMgICAgIChiYXNlIDE2KQkJQVNLRVkgQ09NUFVURVIgQ09SUAotCQkJCTEwRixOTy4xMTkuQ0hJRU5LQU5HIFJELENIVU5HLUhPLAotCQkJCVRBSVBFSSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIxLTY0ICAgKGhleCkJCVNwZWNpYWwgRGVzaWduIEJ1cmVhdSBmb3IgU2Vpc21pYyBJbnN0cnVtZW50YXRpb24KLTAwMjE2NCAgICAgKGJhc2UgMTYpCQlTcGVjaWFsIERlc2lnbiBCdXJlYXUgZm9yIFNlaXNtaWMgSW5zdHJ1bWVudGF0aW9uCi0JCQkJMTI5LCBLcmFpbnlheWEgU3RyLgotCQkJCVNhcmF0b3YgU2FyYXRvdiByZWdpb24gNDEwMDE5Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTIxLTY1ICAgKGhleCkJCVByZXNzdGVrIEluYy4KLTAwMjE2NSAgICAgKGJhc2UgMTYpCQlQcmVzc3RlayBJbmMuCi0JCQkJNTUgRXhlY3V0aXZlIERyaXZlCi0JCQkJSHVkc29uIE5ldyBIYW1wc2hpcmUgMDMwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTY2ICAgKGhleCkJCU5vdkF0ZWwgSW5jLgotMDAyMTY2ICAgICAoYmFzZSAxNikJCU5vdkF0ZWwgSW5jLgotCQkJCTExMjAgLSA2OCBBdmUgTkUKLQkJCQlDYWxnYXJ5IEFsYmVydGEgVDJFIDhTNQotCQkJCUNBTkFEQQotCi0wMC0yMS02NyAgIChoZXgpCQlIV0EgSklOIFQmSSBDb3JwLgotMDAyMTY3ICAgICAoYmFzZSAxNikJCUhXQSBKSU4gVCZJIENvcnAuCi0JCQkJNUYuLCBTRUhXQSBCbGRnIDE2NC0yNCwgUG9pLWRvbmcsIEdhbmduYW0tZ3UsIFNlb3VsLCBLb3JlYQotCQkJCUdhbmduYW0tZ3UgU2VvdWwgMTM1LTk2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS02OCAgIChoZXgpCQlpVmVpYSwgTExDCi0wMDIxNjggICAgIChiYXNlIDE2KQkJaVZlaWEsIExMQwotCQkJCTUxIEZyYW5rbGluIFN0cmVldAotCQkJCVN1aXRlIDMwMQotCQkJCUFubmFwb2xpcyBNRCAyMTQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNjkgICAoaGV4KQkJUHJvbG9naXgsIExMQy4KLTAwMjE2OSAgICAgKGJhc2UgMTYpCQlQcm9sb2dpeCwgTExDLgotCQkJCTE3MjE3IE5FIDEzM3JkIFBsYWNlCi0JCQkJUmVkbW9uZCBXYXNoaW5ndG9uIDk4MDUyLTIxNTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTZBICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyMTZBICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjEtNkIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDIxNkIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yMS02QyAgIChoZXgpCQlPRFZBCi0wMDIxNkMgICAgIChiYXNlIDE2KQkJT0RWQQotCQkJCTQyMjAgVmFyc2l0eSBEcml2ZQotCQkJCVN1aXRlIEEKLQkJCQlBbm4gQXJib3IgTUkgNDgxMDgtNTAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNkQgICAoaGV4KQkJU29sdGVjaCBDby4sIEx0ZC4KLTAwMjE2RCAgICAgKGJhc2UgMTYpCQlTb2x0ZWNoIENvLiwgTHRkLgotCQkJCSMzMC0zLDNGCi0JCQkJV29uaHlvcm8yLUthCi0JCQkJWW9uZ3NhbiBLdSBTZW91bCAxNDA4MzcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtNkUgICAoaGV4KQkJRnVuY3Rpb24gQVRJIChIdWl6aG91KSBUZWxlY29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDIxNkUgICAgIChiYXNlIDE2KQkJRnVuY3Rpb24gQVRJIChIdWl6aG91KSBUZWxlY29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJTm8uIDgsIEh1aXRhaSBSb2FkLCBIdWl0YWkgSW5kdXN0cmlhbCBab25lCi0JCQkJSHVpemhvdSBDaXR5IEd1YW5nZG9uZyBQcm92aW5jZSA1MTYwMDYKLQkJCQlDSElOQQotCi0wMC0yMS02RiAgIChoZXgpCQlTeW1Db20sIEluYy4KLTAwMjE2RiAgICAgKGJhc2UgMTYpCQlTeW1Db20sIEluYy4KLQkJCQkyODgwIE5vcnRoIFBsYXphIERyaXZlCi0JCQkJUmFwaWQgQ2l0eSBTRCA1NzcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNzAgICAoaGV4KQkJRGVsbCBJbmMKLTAwMjE3MCAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNzEgICAoaGV4KQkJV2VzdW5nIFROQyBDby4sIEx0ZC4KLTAwMjE3MSAgICAgKGJhc2UgMTYpCQlXZXN1bmcgVE5DIENvLiwgTHRkLgotCQkJCTEwMi0xNDA5LCBCdWNoZW9uIENodW51aSBUZWNobm9wYXJrIDFzdCwKLQkJCQkyMDAtMSwgQ2h1bnVpLWRvbmcsIFdvbm1pLUd1Ci0JCQkJQnVjaGVvbi1DaXR5LCBHeWVvbmdnZ2ktRG8gNDIwLTg1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS03MiAgIChoZXgpCQlTZW91bHRlayBWYWxsZXkKLTAwMjE3MiAgICAgKGJhc2UgMTYpCQlTZW91bHRlayBWYWxsZXkKLQkJCQlCYW5nLWkgRG9uZyA1MS01LCBTb25ncGEKLQkJCQlTZW91bCAgMTM4LTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS03MyAgIChoZXgpCQlJb24gVG9ycmVudCBTeXN0ZW1zLCBJbmMuCi0wMDIxNzMgICAgIChiYXNlIDE2KQkJSW9uIFRvcnJlbnQgU3lzdGVtcywgSW5jLgotCQkJCTM3IFNvdW5kdmlldyBSZAotCQkJCVN1aXRlICAyCi0JCQkJR3VpbGZvcmQgQ1QgMDY0MzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTc0ICAgKGhleCkJCUF2YUxBTiBXaXJlbGVzcwotMDAyMTc0ICAgICAoYmFzZSAxNikJCUF2YUxBTiBXaXJlbGVzcwotCQkJCTk1OCBTYW4gTGVhbmRybyBBdmUsIFN1aXRlIDkwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTc1ICAgKGhleCkJCVBhY2lmaWMgU2F0ZWxsaXRlIEludGVybmF0aW9uYWwgTHRkLgotMDAyMTc1ICAgICAoYmFzZSAxNikJCVBhY2lmaWMgU2F0ZWxsaXRlIEludGVybmF0aW9uYWwgTHRkLgotCQkJCTIwL0YgVGFpIFR1bmcgQnVpbGRpbmcsCi0JCQkJOCBGbGVtaW5nIFJvYWQsCi0JCQkJV2FuY2hhaSAgMTAwMDAwCi0JCQkJSE9ORyBLT05HCi0KLTAwLTIxLTc2ICAgKGhleCkJCVlNYXggVGVsZWNvbSBMdGQuCi0wMDIxNzYgICAgIChiYXNlIDE2KQkJWU1heCBUZWxlY29tIEx0ZC4KLQkJCQkxMSBNb3NoZSBMZXZpIHN0ci4KLQkJCQlVTUkgQnVpbGRpbmcKLQkJCQlSaXNob24gTGUgWmlvbiAgNzU2NTgKLQkJCQlJU1JBRUwKLQotMDAtMjEtNzcgICAoaGV4KQkJVy4gTC4gR29yZSAmIEFzc29jaWF0ZXMKLTAwMjE3NyAgICAgKGJhc2UgMTYpCQlXLiBMLiBHb3JlICYgQXNzb2NpYXRlcwotCQkJCTQwMiBWaWV2ZXMgV2F5Ci0JCQkJRWxrdG9uIE1EIDIxOTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS03OCAgIChoZXgpCQlNYXR1c2NoZWsgTWVzc3RlY2huaWsgR21iSAotMDAyMTc4ICAgICAoYmFzZSAxNikJCU1hdHVzY2hlayBNZXNzdGVjaG5payBHbWJICi0JCQkJV2VybmVyIEhlaXNlbmJlcmcgU3RyYXNzZSAxNAotCQkJCUFsc2RvcmYgTlJXIDUyNDc3Ci0JCQkJR0VSTUFOWQotCi0wMC0yMS03OSAgIChoZXgpCQlJT0dFQVIsIEluYy4KLTAwMjE3OSAgICAgKGJhc2UgMTYpCQlJT0dFQVIsIEluYy4KLQkJCQkyMyBIdWJibGUKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTdBICAgKGhleCkJCVNlamluIEVsZWN0cm9uLCBJbmMuCi0wMDIxN0EgICAgIChiYXNlIDE2KQkJU2VqaW4gRWxlY3Ryb24sIEluYy4KLQkJCQlTSiBUZWNobm92aWxsZQotCQkJCTR0aCBGbG9vciBSb29tIDQxMiwgNjAtMTkgS2FTYW4tRG9uZywgS2V1bUNob24tS3UKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS03QiAgIChoZXgpCQlCYXN0ZWMgQUIKLTAwMjE3QiAgICAgKGJhc2UgMTYpCQlCYXN0ZWMgQUIKLQkJCQlIYXN0dmFnZW4gNEEKLQkJCQlNYWxtbyBNIDIxMiAzNQotCQkJCVNXRURFTgotCi0wMC0yMS03QyAgIChoZXgpCQkyV2lyZQotMDAyMTdDICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtN0QgICAoaGV4KQkJUFlYSVMgUy5SLkwuCi0wMDIxN0QgICAgIChiYXNlIDE2KQkJUFlYSVMgUy5SLkwuCi0JCQkJQy9PIERJUC4gSU5GT1JNQVRJQ0EgRSBTSVNURU1JU1RJQ0EgLSBVTklWRVJTSVRZIE9GIFBBVklBCi0JCQkJVklBIEZFUlJBVEEgMQotCQkJCVBBVklBICAyNzEwMAotCQkJCUlUQUxZCi0KLTAwLTIxLTdFICAgKGhleCkJCVRlbGl0IENvbW11bmljYXRpb24gcy5wLmEKLTAwMjE3RSAgICAgKGJhc2UgMTYpCQlUZWxpdCBDb21tdW5pY2F0aW9uIHMucC5hCi0JCQkJVmlhIHN0YXppb25lIGRpIHByb3NlY2NvIDVCCi0JCQkJU0dPTklDTyBUcmllc3RlIDM0MDEwCi0JCQkJSVRBTFkKLQotMDAtMjEtN0YgICAoaGV4KQkJSW50cmFjbyBUZWNobm9sb2d5IFB0ZSBMdGQKLTAwMjE3RiAgICAgKGJhc2UgMTYpCQlJbnRyYWNvIFRlY2hub2xvZ3kgUHRlIEx0ZAotCQkJCTc1MGUgQ2hhaSBDaGVlIFJvYWQgIzA1LTAxCi0JCQkJU2luZ2Fwb3JlICA0NjkwMDA1Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTIxLTgwICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIxODAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS04MSAgIChoZXgpCQlTaTIgTWljcm9zeXN0ZW1zIExpbWl0ZWQKLTAwMjE4MSAgICAgKGJhc2UgMTYpCQlTaTIgTWljcm9zeXN0ZW1zIExpbWl0ZWQKLQkJCQlObyA4NCwgU3kgTm8gMTUwLCBFUElQLCBXaGl0ZWZpZWxkIEluZHVzdHJpYWwgQXJlYQotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwMDY2Ci0JCQkJSU5ESUEKLQotMDAtMjEtODIgICAoaGV4KQkJU2FuZExpbmtzIFN5c3RlbXMsIEx0ZC4KLTAwMjE4MiAgICAgKGJhc2UgMTYpCQlTYW5kTGlua3MgU3lzdGVtcywgTHRkLgotCQkJCVAuTy5Cb3ggNDYyOQotCQkJCVBldGFoLVRpcXdhIElzcmFlbCA0OTI3NwotCQkJCUlTUkFFTAotCi0wMC0yMS04MyAgIChoZXgpCQlWQVRFQ0ggSFlEUk8KLTAwMjE4MyAgICAgKGJhc2UgMTYpCQlWQVRFQ0ggSFlEUk8KLQkJCQlXaWVuZXJiZXJnc3RyYXNzZSA0MQotCQkJCU9iamVjdCBECi0JCQkJVmllbm5hICBBLTExMjAKLQkJCQlBVVNUUklBCi0KLTAwLTIxLTg0ICAgKGhleCkJCVBPV0VSU09GVCBTUkwKLTAwMjE4NCAgICAgKGJhc2UgMTYpCQlQT1dFUlNPRlQgU1JMCi0JCQkJVklBIEVOUklDTyBDT05USSwgNQotCQkJCVNDQU5ESUNDSSBGSSA1MDAxOAotCQkJCUlUQUxZCi0KLTAwLTIxLTg1ICAgKGhleCkJCU1JQ1JPLVNUQVIgSU5UJ0wgQ08uLExURC4KLTAwMjE4NSAgICAgKGJhc2UgMTYpCQlNSUNSTy1TVEFSIElOVCdMIENPLixMVEQuCi0JCQkJTm8uNjksTGktRGUgU3QsSnVuZy1IbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIxLTg2ICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkCi0wMDIxODYgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQKLQkJCQkxNDEsIExhbmUgMzUxLCBTZWMuMSwgVGFpcGluZyBSb2FkLAotCQkJCVRTQU9UVUVOIAotCQkJCU5BTlRPVSAgNTQyNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIxLTg3ICAgKGhleCkJCUltYWNzIEdtYkgKLTAwMjE4NyAgICAgKGJhc2UgMTYpCQlJbWFjcyBHbWJICi0JCQkJTWl0dGVsZmVsZHN0cmFzc2UgMjUKLQkJCQlLb3Jud2VzdGhlaW0gR2VybWFueSBELTcwODA2Ci0JCQkJR0VSTUFOWQotCi0wMC0yMS04OCAgIChoZXgpCQlFTUMgQ29ycG9yYXRpb24KLTAwMjE4OCAgICAgKGJhc2UgMTYpCQlFTUMgQ29ycG9yYXRpb24KLQkJCQkyNDIxIE1pc3Npb24gQ29sbGVnZSBCbHZkCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTg5ICAgKGhleCkJCUFwcFRlY2gsIEluYy4KLTAwMjE4OSAgICAgKGJhc2UgMTYpCQlBcHBUZWNoLCBJbmMuCi0JCQkJMzYzIEdyZXlob3VuZCBQYXNzCi0JCQkJQ2FybWVsIEluZGlhbmEgNDYwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLThBICAgKGhleCkJCUVsZWN0cm9uaWMgRGVzaWduIGFuZCBNYW51ZmFjdHVyaW5nIENvbXBhbnkKLTAwMjE4QSAgICAgKGJhc2UgMTYpCQlFbGVjdHJvbmljIERlc2lnbiBhbmQgTWFudWZhY3R1cmluZyBDb21wYW55Ci0JCQkJMzEgTWlsbHJhY2UgRHIKLQkJCQlMeW5jaGJ1cmcgVkEgMjQ1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLThCICAgKGhleCkJCVdlc2NvbiBUZWNobm9sb2d5LCBJbmMuCi0wMDIxOEIgICAgIChiYXNlIDE2KQkJV2VzY29uIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk0NjU1LTE3MCBPbGQgSXJvbnNpZGVzIERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtOEMgICAoaGV4KQkJVG9wQ29udHJvbCBHTUJICi0wMDIxOEMgICAgIChiYXNlIDE2KQkJVG9wQ29udHJvbCBHTUJICi0JCQkJRW56ZW5iZXJnd2VnIDI0L0EKLQkJCQlUZXJsYW4gKEJaKSAgMzkwMTgKLQkJCQlJVEFMWQotCi0wMC0yMS04RCAgIChoZXgpCQlBUCBSb3V0ZXIgSW5kLiBFbGV0cm9uaWNhIExUREEKLTAwMjE4RCAgICAgKGJhc2UgMTYpCQlBUCBSb3V0ZXIgSW5kLiBFbGV0cm9uaWNhIExUREEKLQkJCQlBdi4gTG9tYW50byBKdW5pb3IsIDEwMDAKLQkJCQlCYWlycm8gUG9udGFsCi0JCQkJSWxoZXVzIEJhaGlhIDQ1NjU0LTAwMAotCQkJCUJSQVpJTAotCi0wMC0yMS04RSAgIChoZXgpCQlNRUtJQ1MgQ08uLCBMVEQuCi0wMDIxOEUgICAgIChiYXNlIDE2KQkJTUVLSUNTIENPLiwgTFRELgotCQkJCUluZHVzdHJpYWwgWm9uZSA4NjEtMTAsIFRhZWd5ZS1Eb25nCi0JCQkJQ2h1bmNob24gS2FuZ3dvbiAyMDAtOTQ0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLThGICAgKGhleCkJCUF2YW50Z2FyZGUgQWNvdXN0aWMgTGF1dHNwcmVjaGVyc3lzdGVtZSBHbWJICi0wMDIxOEYgICAgIChiYXNlIDE2KQkJQXZhbnRnYXJkZSBBY291c3RpYyBMYXV0c3ByZWNoZXJzeXN0ZW1lIEdtYkgKLQkJCQlOaWJlbHVuZ2Vuc3RyLiAzNDkKLQkJCQlMYXV0ZXJ0YWwgLSBSZWljaGVuYmFjaCBIZXNzZW4gRC02NDY4NgotCQkJCUdFUk1BTlkKLQotMDAtMjEtOTAgICAoaGV4KQkJR29saWF0aCBTb2x1dGlvbnMKLTAwMjE5MCAgICAgKGJhc2UgMTYpCQlHb2xpYXRoIFNvbHV0aW9ucwotCQkJCTMwODIgU3RlcmxpbmcgQ2lyY2xlCi0JCQkJQm91bGRlciBDb2xvcmFkbyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtOTEgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDIxOTEgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTk8uMjg5LCBTaW5odSAzcmQgUkQuCi0JCQkJTmVpaHUgRGlzdHJpY3QgVGFpcGVpIENpdHkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMS05MiAgIChoZXgpCQlCYW9kaW5nIEdhbGF4eSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgIENvLixMdGQKLTAwMjE5MiAgICAgKGJhc2UgMTYpCQlCYW9kaW5nIEdhbGF4eSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgIENvLixMdGQKLQkJCQlOTy45MSBGZW5nZmFuIFJkLixHYW9LYWkgRGlzdHJpY3QsQmFvZGluZyBDaXR5LEhlYmVpIFByb3YuQ2hpbmEgMDcxMDUxCi0JCQkJQmFvZGluZyBDaXR5IEhlYmVpIFByb3YuIDA3MTA1MQotCQkJCUNISU5BCi0KLTAwLTIxLTkzICAgKGhleCkJCVZpZGVvZm9uIE1WCi0wMDIxOTMgICAgIChiYXNlIDE2KQkJVmlkZW9mb24gTVYKLQkJCQk2IEJsYWNrb2FrIE1ld3MKLQkJCQlOZXd0b3duIFBBIDE4OTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS05NCAgIChoZXgpCQlQaW5nIENvbW11bmljYXRpb24KLTAwMjE5NCAgICAgKGJhc2UgMTYpCQlQaW5nIENvbW11bmljYXRpb24KLQkJCQlTYW5kYWtlcnZlaWVuIDI0QwotCQkJCU9zbG8gIDA0NzMKLQkJCQlOT1JXQVkKLQotMDAtMjEtOTUgICAoaGV4KQkJR1dEIE1lZGlhIExpbWl0ZWQKLTAwMjE5NSAgICAgKGJhc2UgMTYpCQlHV0QgTWVkaWEgTGltaXRlZAotCQkJCTEwIExlZWRzIFJvYWQKLQkJCQlTaGVmZmllbGQgU291dGggWW9ya3NoaXJlIFM5IDNUWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIxLTk2ICAgKGhleCkJCVRlbHNleSAgUy5wLkEuCi0wMDIxOTYgICAgIChiYXNlIDE2KQkJVGVsc2V5ICBTLnAuQS4KLQkJCQlWaWFsZSBkZWxsJ0luZHVzdHJpYSwgMQotCQkJCVF1aW50byBEaVRyZXZpc28gMzEwNTUKLQkJCQlJVEFMWQotCi0wMC0yMS05NyAgIChoZXgpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTQotMDAyMTk3ICAgICAoYmFzZSAxNikJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNCi0JCQkJTk8uMjM5LCBTZWMuIDIsIFRpIERpbmcgQmx2ZC4sCi0JCQkJVGFpcGVpICAxMTQ5MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtOTggICAoaGV4KQkJVGhhaSBSYWRpbyBDbywgTFRECi0wMDIxOTggICAgIChiYXNlIDE2KQkJVGhhaSBSYWRpbyBDbywgTFRECi0JCQkJSGktVGVjaCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCTc4NyBNMDAgMSBCYWFubGFuZSBTdWIgRGlzdHJpY3QgQmFuZyBQYS1JbiBEaXN0cmljdAotCQkJCUF5dXR0aGF5YSAgMTMxNjAKLQkJCQlUSEFJTEFORAotCi0wMC0yMS05OSAgIChoZXgpCQlWYWNvbiBQbGMKLTAwMjE5OSAgICAgKGJhc2UgMTYpCQlWYWNvbiBQbGMKLQkJCQlQLk8uQm94IDI1Ci0JCQkJVmFhc2EgIDY1MzgwCi0JCQkJRklOTEFORAotCi0wMC0yMS05QSAgIChoZXgpCQlDYW1icmlkZ2UgVmlzdWFsIE5ldHdvcmtzIEx0ZAotMDAyMTlBICAgICAoYmFzZSAxNikJCUNhbWJyaWRnZSBWaXN1YWwgTmV0d29ya3MgTHRkCi0JCQkJNjEgU2Vsd3luIFJvYWQKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0IzIDlFQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIxLTlCICAgKGhleCkJCURlbGwgSW5jCi0wMDIxOUIgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTlDICAgKGhleCkJCUhvbmV5d2xkIFRlY2hub2xvZ3kgQ29ycC4KLTAwMjE5QyAgICAgKGJhc2UgMTYpCQlIb25leXdsZCBUZWNobm9sb2d5IENvcnAuCi0JCQkJTm8uNDAsSHN1ZWgtRnUgUmQuCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMS05RCAgIChoZXgpCQlBZGVzeXMgQlYKLTAwMjE5RCAgICAgKGJhc2UgMTYpCQlBZGVzeXMgQlYKLQkJCQlNb2xlbndlZXIgNAotCQkJCVdhdGVyaW5nZW4gWnVpZCBIb2xsYW5kIDIyOTEgTlIKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMS05RSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAyMTlFICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2thbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjEtOUYgICAoaGV4KQkJU0FURUwgT1kKLTAwMjE5RiAgICAgKGJhc2UgMTYpCQlTQVRFTCBPWQotCQkJCU1lcmluaWl0eW5rYXR1IDE3Ci0JCQkJU0FMTyBMYW5zaS1TdW9tZW4gTGFhbmkgMjQxMDAKLQkJCQlGSU5MQU5ECi0KLTAwLTIxLUEwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjFBMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1BMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIxQTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQTIgICAoaGV4KQkJRUtFLUVsZWN0cm9uaWNzIEx0ZC4KLTAwMjFBMiAgICAgKGJhc2UgMTYpCQlFS0UtRWxlY3Ryb25pY3MgTHRkLgotCQkJCVBpaXNwYW5wb3J0dGkgNwotCQkJCUVTUE9PICAwMjI0MAotCQkJCUZJTkxBTkQKLQotMDAtMjEtQTMgICAoaGV4KQkJTWljcm9taW50Ci0wMDIxQTMgICAgIChiYXNlIDE2KQkJTWljcm9taW50Ci0JCQkJMTExIENvbW1lcmNlIFN0Ci0JCQkJTGFrZSBNYXJ5IEZMIDMyNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1BNCAgIChoZXgpCQlEYmlpIE5ldHdvcmtzCi0wMDIxQTQgICAgIChiYXNlIDE2KQkJRGJpaSBOZXR3b3JrcwotCQkJCTIyMTcgVmlhIEJsYW5jYQotCQkJCU9jZWFuc2lkZSBDQSA5MjA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQTUgICAoaGV4KQkJRVJMUGhhc2UgUG93ZXIgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMjFBNSAgICAgKGJhc2UgMTYpCQlFUkxQaGFzZSBQb3dlciBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTc0IFNjdXJmaWVsZCBCbHZkLgotCQkJCVdpbm5pcGVnIE1hbml0b2JhIFIzWSAxRzQKLQkJCQlDQU5BREEKLQotMDAtMjEtQTYgICAoaGV4KQkJVmlkZW90ZWMgU3BhCi0wMDIxQTYgICAgIChiYXNlIDE2KQkJVmlkZW90ZWMgU3BhCi0JCQkJVmlhIEZyaXVsaSw2Ci0JCQkJU2NoaW8gVmljZW56YSAzNjAxNQotCQkJCUlUQUxZCi0KLTAwLTIxLUE3ICAgKGhleCkJCUhhbnRsZSBTeXN0ZW0gQ28uLCBMdGQuCi0wMDIxQTcgICAgIChiYXNlIDE2KQkJSGFudGxlIFN5c3RlbSBDby4sIEx0ZC4KLQkJCQk0ODEtMTAgQnl1Y2tzYW4gRGlnaXRhbCBWYWxseSBJSSwgUk0gMTUxMQotCQkJCUdhc2FuLURvbmcsIEd1bWNob24tR3UKLQkJCQlTZW91bCBDaXR5IFNlb3VsIDE1My03ODMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtQTggICAoaGV4KQkJVGVsZXBob25pY3MgQ29ycG9yYXRpb24KLTAwMjFBOCAgICAgKGJhc2UgMTYpCQlUZWxlcGhvbmljcyBDb3Jwb3JhdGlvbgotCQkJCTgxNSBCcm9hZCBIb2xsb3cgUm9hZAotCQkJCUZhcm1pbmdkYWxlIE5ldyBZb3JrIDExNzkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1BOSAgIChoZXgpCQlNb2JpbGluayBUZWxlY29tIENvLixMdGQKLTAwMjFBOSAgICAgKGJhc2UgMTYpCQlNb2JpbGluayBUZWxlY29tIENvLixMdGQKLQkJCQkyOTItMyBTaW5kYW5nLXJpLCBTYW5kb25nLW15dW4KLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtODUzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLUFBICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIxQUEgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIxLUFCICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIxQUIgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAgVgotCQkJCURFTk1BUksKLQotMDAtMjEtQUMgICAoaGV4KQkJSW5mcmFyZWQgSW50ZWdyYXRlZCBTeXN0ZW1zIEx0ZAotMDAyMUFDICAgICAoYmFzZSAxNikJCUluZnJhcmVkIEludGVncmF0ZWQgU3lzdGVtcyBMdGQKLQkJCQlQYXJrIENpcmNsZSwgVGl0aGUgQmFybiBXYXkKLQkJCQlTd2FuIFZhbGxleQotCQkJCU5vcnRoYW1wdG9uIE5vcnRoYW50cyBOTjQgOUJHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjEtQUQgICAoaGV4KQkJTm9yZGljIElEIE95Ci0wMDIxQUQgICAgIChiYXNlIDE2KQkJTm9yZGljIElEIE95Ci0JCQkJTXlsbHlvamFua2F0dSAyQQotCQkJCVNBTE8gIEZJTi0yNDEwMAotCQkJCUZJTkxBTkQKLQotMDAtMjEtQUUgICAoaGV4KQkJQUxDQVRFTC1MVUNFTlQgRlJBTkNFIC0gV1RECi0wMDIxQUUgICAgIChiYXNlIDE2KQkJQUxDQVRFTC1MVUNFTlQgRlJBTkNFIC0gV1RECi0JCQkJNy05LCBBdmVudWUgTW9yYW5lIFNhdWxuaWVyCi0JCQkJQlAgNTcKLQkJCQlWRUxJWlkgIDc4MTQxCi0JCQkJRlJBTkNFCi0KLTAwLTIxLUFGICAgKGhleCkJCVJhZGlvIEZyZXF1ZW5jeSBTeXN0ZW1zCi0wMDIxQUYgICAgIChiYXNlIDE2KQkJUmFkaW8gRnJlcXVlbmN5IFN5c3RlbXMKLQkJCQlLYWJlbGthbXAgMjAKLQkJCQlIYW5ub3ZlciAgMzAxNzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLUIwICAgKGhleCkJCVR5Y28gVGVsZWNvbW11bmljYXRpb25zCi0wMDIxQjAgICAgIChiYXNlIDE2KQkJVHljbyBUZWxlY29tbXVuaWNhdGlvbnMKLQkJCQkxMDExIFBhd3R1Y2tldCBCbHZkCi0JCQkJTG93ZWxsIE1hc3NhY2h1c2V0dHMgMDE4NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUIxICAgKGhleCkJCURJR0lUQUwgU09MVVRJT05TIExURAotMDAyMUIxICAgICAoYmFzZSAxNikJCURJR0lUQUwgU09MVVRJT05TIExURAotCQkJCVRzYXJpZ3JhZHNrbyBTaG9zZSA3a20gQkxWRAotCQkJCUhpIFRlY2ggUGFyayBJem90LAotCQkJCVNvZmlhIFNvZmlhIDE3ODQKLQkJCQlCVUxHQVJJQQotCi0wMC0yMS1CMiAgIChoZXgpCQlGaWJlcmJsYXplIEEvUwotMDAyMUIyICAgICAoYmFzZSAxNikJCUZpYmVyYmxhemUgQS9TCi0JCQkJS2lsZGV2YW5nc3ZlaiA5Ci0JCQkJR29lZGVydXAKLQkJCQlSb3NraWxkZSAgNDAwMAotCQkJCURFTk1BUksKLQotMDAtMjEtQjMgICAoaGV4KQkJUm9zcyBDb250cm9scwotMDAyMUIzICAgICAoYmFzZSAxNikJCVJvc3MgQ29udHJvbHMKLQkJCQlPbmUgUm9zcyBXYXkKLQkJCQlMYXZvbmlhIEdBIDMwNTUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1CNCAgIChoZXgpCQlBUFJPIE1FRElBIENPLiwgTFRECi0wMDIxQjQgICAgIChiYXNlIDE2KQkJQVBSTyBNRURJQSBDTy4sIExURAotCQkJCSMxMy01LERvZGFuZy1Eb25nLFdvbm1pLUd1LAotCQkJCUJ1Y2hlb24tQ2l0eSBLeXVuZ2dpLURvIDQyMC04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtQjUgICAoaGV4KQkJVnlybyBHYW1lcyBMaW1pdGVkCi0wMDIxQjUgICAgIChiYXNlIDE2KQkJVnlybyBHYW1lcyBMaW1pdGVkCi0JCQkJMTQgU3QuIFN0ZXBoZW4ncyBHcmVlbgotCQkJCUR1YmxpbiAgMgotCQkJCUlSRUxBTkQKLQotMDAtMjEtQjYgICAoaGV4KQkJVHJpYWN0YSBQb3dlciBUZWNobm9sb2dpZXMgSW5jLgotMDAyMUI2ICAgICAoYmFzZSAxNikJCVRyaWFjdGEgUG93ZXIgVGVjaG5vbG9naWVzIEluYy4KLQkJCQlCb3ggNTgyLCA3IE1pbGwgU3RyZWV0Ci0JCQkJQWxtb250ZSBPbnRhcmlvIEswQSAxQTAKLQkJCQlDQU5BREEKLQotMDAtMjEtQjcgICAoaGV4KQkJTGV4bWFyayBJbnRlcm5hdGlvbmFsIEluYy4KLTAwMjFCNyAgICAgKGJhc2UgMTYpCQlMZXhtYXJrIEludGVybmF0aW9uYWwgSW5jLgotCQkJCTc0MCBXZXN0IE5ldyBDaXJjbGUgUm9hZAotCQkJCUxleGluZ3RvbiBLWSA0MDU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQjggICAoaGV4KQkJSW5waGkgQ29ycG9yYXRpb24KLTAwMjFCOCAgICAgKGJhc2UgMTYpCQlJbnBoaSBDb3Jwb3JhdGlvbgotCQkJCTIzOTMgVG93bnNHYXRlIFJkLiwgU3VpdGUgMTAxCi0JCQkJV2VzdGxha2UgVmlsbGFnZSBDQSA5MTM2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQjkgICAoaGV4KQkJVW5pdmVyc2FsIERldmljZXMgSW5jLgotMDAyMUI5ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBEZXZpY2VzIEluYy4KLQkJCQk1MzUzIFlhcm1vdXRoIEF2ZS4gIzIwOQotCQkJCUVuY2lubyBDQSA5MTMxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQkEgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMjFCQSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQkIgICAoaGV4KQkJUmlrZW4gS2Vpa2kgQ28uLCBMdGQuCi0wMDIxQkIgICAgIChiYXNlIDE2KQkJUmlrZW4gS2Vpa2kgQ28uLCBMdGQuCi0JCQkJIDItNy02IEF6dXNhd2EKLQkJCQlJdGFiYXNoaS1LdSBUb2t5byAxNzQtODc0NAotCQkJCUpBUEFOCi0KLTAwLTIxLUJDICAgKGhleCkJCVpBTEEgQ09NUFVURVIKLTAwMjFCQyAgICAgKGJhc2UgMTYpCQlaQUxBIENPTVBVVEVSCi0JCQkJRUwgQk9VTkkKLQkJCQlBTk5BQkEgIDIzMDAwCi0JCQkJQUxHRVJJQQotCi0wMC0yMS1CRCAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjFCRCAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yMS1CRSAgIChoZXgpCQlDaXNjbywgU2VydmljZSBQcm92aWRlciBWaWRlbyBUZWNobm9sb2d5IEdyb3VwCi0wMDIxQkUgICAgIChiYXNlIDE2KQkJQ2lzY28sIFNlcnZpY2UgUHJvdmlkZXIgVmlkZW8gVGVjaG5vbG9neSBHcm91cAotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlNYWlsIFN0b3AgMi5ULjYwMwotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUJGICAgKGhleCkJCUhpdGFjaGkgSGlnaC1UZWNoIENvbnRyb2wgU3lzdGVtcyBDb3Jwb3JhdGlvbgotMDAyMUJGICAgICAoYmFzZSAxNikJCUhpdGFjaGkgSGlnaC1UZWNoIENvbnRyb2wgU3lzdGVtcyBDb3Jwb3JhdGlvbgotCQkJCTUwMCxNaXl1LWNobwotCQkJCU1pdG8tc2hpIEliYXJha2kta2VuIDMxOS0wMzE2Ci0JCQkJSkFQQU4KLQotMDAtMjEtQzAgICAoaGV4KQkJTW9iaWxlIEFwcGxpYW5jZSwgSW5jLgotMDAyMUMwICAgICAoYmFzZSAxNikJCU1vYmlsZSBBcHBsaWFuY2UsIEluYy4KLQkJCQkjODE5IEtyYW56IFRlY2hubywKLQkJCQlTYW5nZGFld29uLTEgRG9uZywgSnVuZ3dvbi1HdQotCQkJCVNlb25nIG5hbSBHeWVvbmdnaS1EbyA0NjItNzI5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLUMxICAgKGhleCkJCUFCQiBPeSAvIERpc3RyaWJ1dGlvbiBBdXRvbWF0aW9uCi0wMDIxQzEgICAgIChiYXNlIDE2KQkJQUJCIE95IC8gRGlzdHJpYnV0aW9uIEF1dG9tYXRpb24KLQkJCQlQTyBCb3ggNjk5Ci0JCQkJVmFhc2EgIEZJLTY1MTAxCi0JCQkJRklOTEFORAotCi0wMC0yMS1DMiAgIChoZXgpCQlHTCBDb21tdW5pY2F0aW9ucyBJbmMKLTAwMjFDMiAgICAgKGJhc2UgMTYpCQlHTCBDb21tdW5pY2F0aW9ucyBJbmMKLQkJCQk4MTggV2VzdCBEaWFtb25kIEF2ZQotCQkJCVRoaXJkIEZsb29yCi0JCQkJR2FpdGhlcnNidXJnIE1EIDIwODc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1DMyAgIChoZXgpCQlDT1JORUxMIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDIxQzMgICAgIChiYXNlIDE2KQkJQ09STkVMTCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTc5MTUgTi4gODFzdCBTdHJlZXQKLQkJCQlNaWx3YXVrZWUgV2lzY29uc2luIDUzMjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1DNCAgIChoZXgpCQlDb25zaWxpdW0gQUIKLTAwMjFDNCAgICAgKGJhc2UgMTYpCQlDb25zaWxpdW0gQUIKLQkJCQlWYXN0cmEgRmlubmJvZGF2YWdlbiAyLTQKLQkJCQlOYWNrYSBTdG9ja2hvbG0gMTMxMzEKLQkJCQlTV0VERU4KLQotMDAtMjEtQzUgICAoaGV4KQkJM0RTUCBDb3JwCi0wMDIxQzUgICAgIChiYXNlIDE2KQkJM0RTUCBDb3JwCi0JCQkJMTYyNzEgTGFndW5hIENhbnlvbiBSb2FkCi0JCQkJU3VpdGUgMjAwCi0JCQkJSXJ2aW5lLCBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQzYgICAoaGV4KQkJQ1NKIEdsb2JhbCwgSW5jLgotMDAyMUM2ICAgICAoYmFzZSAxNikJCUNTSiBHbG9iYWwsIEluYy4KLQkJCQk5dGggRmwuIFNhbXdoYW4gQmxkZy4gQW5uZXgsIDE3LTI2IFllb3VpZG8tZG9uZywKLQkJCQlZb3VuZ2RldW5ncG8tR3UKLQkJCQlTZW91bCAgMTUwLTg3NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS1DNyAgIChoZXgpCQlSdXNzb3VuZAotMDAyMUM3ICAgICAoYmFzZSAxNikJCVJ1c3NvdW5kCi0JCQkJNSBGb3JiZXMgUm9hZAotCQkJCU5ld21hcmtldCBOSCAwMzg1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQzggICAoaGV4KQkJTE9IVUlTIE5ldHdvcmtzCi0wMDIxQzggICAgIChiYXNlIDE2KQkJTE9IVUlTIE5ldHdvcmtzCi0JCQkJMjY4MSBUViBNb25zdGVyCi0JCQkJVm90bGFhbiA0MDggVm90bGFhbiAzMQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIxLUM5ICAgKGhleCkJCVdhdmVjb20gQXNpYSBQYWNpZmljIExpbWl0ZWQKLTAwMjFDOSAgICAgKGJhc2UgMTYpCQlXYXZlY29tIEFzaWEgUGFjaWZpYyBMaW1pdGVkCi0JCQkJMjAxIEJpby1JbmZvcm1hdGljcyBDZW50cmUsICBOby4yIFNjaWVuY2UgUGFyayBXZXN0IEF2ZQotCQkJCUhvbmcgS29uZyBTY2llbmNlIFBhcmssIFNoYXRpbiwgTlQKLQkJCQlIT05HIEtPTkcKLQotMDAtMjEtQ0EgICAoaGV4KQkJQVJUIFN5c3RlbSBDby4sIEx0ZC4KLTAwMjFDQSAgICAgKGJhc2UgMTYpCQlBUlQgU3lzdGVtIENvLiwgTHRkLgotCQkJCU1vYmlsZSBUZWNobm8gQmxkZyBSb29tIDkxMAotCQkJCTU3My0xMywgQm9raHllb24tZG9uZywgQnVrLWd1Ci0JCQkJRGFlLUd1ICA3MDItMDIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLUNCICAgKGhleCkJCVNNUyBURUNOT0xPR0lBIEVMRVRST05JQ0EgTFREQQotMDAyMUNCICAgICAoYmFzZSAxNikJCVNNUyBURUNOT0xPR0lBIEVMRVRST05JQ0EgTFREQQotCQkJCUF2LiBQaXJhbWlkZSwgNjYxCi0JCQkJRElBREVNQSBTQU8gUEFVTE8gMDk5NzAzMzAKLQkJCQlCUkFaSUwKLQotMDAtMjEtQ0MgICAoaGV4KQkJRmxleHRyb25pY3MgSW50ZXJuYXRpb25hbAotMDAyMUNDICAgICAoYmFzZSAxNikJCUZsZXh0cm9uaWNzIEludGVybmF0aW9uYWwKLQkJCQkyMjQxIEx1bmR5IEF2ZS4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQ0QgICAoaGV4KQkJTGl2ZVRWCi0wMDIxQ0QgICAgIChiYXNlIDE2KQkJTGl2ZVRWCi0JCQkJMTMzMyBHYXRld2F5IERyaXZlLCBTdWl0ZSAxMDA3Ci0JCQkJTWVsYm91cm5lIEZsb3JpZGEgMzI5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUNFICAgKGhleCkJCU5UQy1NZXRyb3RlawotMDAyMUNFICAgICAoYmFzZSAxNikJCU5UQy1NZXRyb3RlawotCQkJCTksIE5ldnpvcm92b3kgc3RyZWV0Ci0JCQkJU2FpbnQtUGV0ZXJzYnVyZyAgMTkyMTQ4Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTIxLUNGICAgKGhleCkJCVRoZSBDcnlwdG8gR3JvdXAKLTAwMjFDRiAgICAgKGJhc2UgMTYpCQlUaGUgQ3J5cHRvIEdyb3VwCi0JCQkJWnVnZXJzdHJhc3NlIDQyCi0JCQkJU3RlaW5oYXVzZW4gWnVnIDYzMTIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0yMS1EMCAgIChoZXgpCQlHbG9iYWwgRGlzcGxheSBTb2x1dGlvbnMgU3BhCi0wMDIxRDAgICAgIChiYXNlIDE2KQkJR2xvYmFsIERpc3BsYXkgU29sdXRpb25zIFNwYQotCQkJCVZpYSBUZXp6ZSwgMjAvQQotCQkJCVZBVCBJVDAyOTQwMTgwMjQ5Ci0JCQkJQ29ybmVkbyBWaWNlbnRpbm8gVmljZW56YSAzNjA3MwotCQkJCUlUQUxZCi0KLTAwLTIxLUQxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAyMUQxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS1EMiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMjFEMiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtRDMgICAoaGV4KQkJQk9DT00gU0VDVVJJVFkoQVNJQSBQQUNJRklDKSBMSU1JVEVECi0wMDIxRDMgICAgIChiYXNlIDE2KQkJQk9DT00gU0VDVVJJVFkoQVNJQSBQQUNJRklDKSBMSU1JVEVECi0JCQkJRmxyLjMsTk8uMjksIzY5IEd1aXFpbmcgUkQKLQkJCQlDaGluYQotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi0wMC0yMS1ENCAgIChoZXgpCQlWb2xsbWVyIFdlcmtlIEdtYkgKLTAwMjFENCAgICAgKGJhc2UgMTYpCQlWb2xsbWVyIFdlcmtlIEdtYkgKLQkJCQlNYXNjaGluZW5mYWJyaWsKLQkJCQlCaWJlcmFjaCBCYWRlbi1XdXJ0dGVtYmVyZyA4ODQwMAotCQkJCUdFUk1BTlkKLQotMDAtMjEtRDUgICAoaGV4KQkJWDJFIEdtYkgKLTAwMjFENSAgICAgKGJhc2UgMTYpCQlYMkUgR21iSAotCQkJCVJhaWZmZWlzZW5zdHJhc3NlIDkKLQkJCQlXaW5kZW4gUmhlaW5sYW5kLVBmYWx6IDc2ODcyCi0JCQkJR0VSTUFOWQotCi0wMC0yMS1ENiAgIChoZXgpCQlMWEkgQ29uc29ydGl1bQotMDAyMUQ2ICAgICAoYmFzZSAxNikJCUxYSSBDb25zb3J0aXVtCi0JCQkJUC5PLiBCb3ggMTAxNgotCQkJCU5pd290IENPIDgwNTQ0LTEwMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUQ3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjFENyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1EOCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIxRDggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRDkgICAoaGV4KQkJU0VLT05JQyBDT1JQT1JBVElPTgotMDAyMUQ5ICAgICAoYmFzZSAxNikJCVNFS09OSUMgQ09SUE9SQVRJT04KLQkJCQk3LTI0LTE0Ci0JCQkJT0laVU1JLUdBS1VFTi1DSE8KLQkJCQlORVJJTUEtS1UgVE9LWU8gMTc4LTg2ODYKLQkJCQlKQVBBTgotCi0wMC0yMS1EQSAgIChoZXgpCQlBdXRvbWF0aW9uIFByb2R1Y3RzIEdyb3VwIEluYy4KLTAwMjFEQSAgICAgKGJhc2UgMTYpCQlBdXRvbWF0aW9uIFByb2R1Y3RzIEdyb3VwIEluYy4KLQkJCQkxMDI1IFdlc3QgMTcwMCBOb3J0aAotCQkJCUxvZ2FuIFV0YWggODQzMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLURCICAgKGhleCkJCVNhbnRhY2hpIFZpZGVvIFRlY2hub2xvZ3kgKFNoZW56aGVuKSBDby4sIEx0ZC4KLTAwMjFEQiAgICAgKGJhc2UgMTYpCQlTYW50YWNoaSBWaWRlbyBUZWNobm9sb2d5IChTaGVuemhlbikgQ28uLCBMdGQuCi0JCQkJU2FudGFjaGkgQnVpbGRpbmcsIzE0IEthaWZlbmcgUm9hZCxNZWlsaW4sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0OQotCQkJCUNISU5BCi0KLTAwLTIxLURDICAgKGhleCkJCVRFQ05PQUxBUk0gUy5yLmwuCi0wMDIxREMgICAgIChiYXNlIDE2KQkJVEVDTk9BTEFSTSBTLnIubC4KLQkJCQlWaWEgQ2lyaWUnCi0JCQkJU2FuIE1hdXJvIFRvcmluZXNlIFRvcmlubyAxMDA5OQotCQkJCUlUQUxZCi0KLTAwLTIxLUREICAgKGhleCkJCU5vcnRoc3RhciBTeXN0ZW1zIENvcnAKLTAwMjFERCAgICAgKGJhc2UgMTYpCQlOb3J0aHN0YXIgU3lzdGVtcyBDb3JwCi0JCQkJNUYsIE5vLjIwMCBHYW5nIFFpYW4gUmQKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtREUgICAoaGV4KQkJRmlyZXBybyBXaXJlbGVzcwotMDAyMURFICAgICAoYmFzZSAxNikJCUZpcmVwcm8gV2lyZWxlc3MKLQkJCQkyNywgWmFtcnVkcHVyIENvbW11bml0eSBDZW50ZXIsCi0JCQkJS2FpbGFzaCBDb2xvbnkKLQkJCQlOZXcgRGVsaGkgSGFyeWFuYSAxMTAwMjAKLQkJCQlJTkRJQQotCi0wMC0yMS1ERiAgIChoZXgpCQlNYXJ0aW4gQ2hyaXN0IEdtYkgKLTAwMjFERiAgICAgKGJhc2UgMTYpCQlNYXJ0aW4gQ2hyaXN0IEdtYkgKLQkJCQlBbiBkZXIgVW50ZXJlbiBTb2VzZSA1MAotCQkJCU9zdGVyb2RlIE5pZWRlcnNhY2hzZW4gMzc1MjAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLUUwICAgKGhleCkJCUNvbW1BZ2lsaXR5IEx0ZAotMDAyMUUwICAgICAoYmFzZSAxNikJCUNvbW1BZ2lsaXR5IEx0ZAotCQkJCUlubm92YXRpb24gQ2VudHJlCi0JCQkJRXBpbmFsIFdheQotCQkJCUxvdWdoYm9yb3VnaCBMZWljcyBMRTExIDNFSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIxLUUxICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyMUUxICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVFggNzUwODItNDM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRTIgICAoaGV4KQkJQ3JlYXRpdmUgRWxlY3Ryb25pYyBHbWJICi0wMDIxRTIgICAgIChiYXNlIDE2KQkJQ3JlYXRpdmUgRWxlY3Ryb25pYyBHbWJICi0JCQkJTG9yY2hlciBTdHJhc3NlIDUyCi0JCQkJQmlyZW5iYWNoIEJhZGVuLVd1cnR0ZW1iZXJnIDczMTAyCi0JCQkJR0VSTUFOWQotCi0wMC0yMS1FMyAgIChoZXgpCQlTZXJpYWxUZWsgTExDCi0wMDIxRTMgICAgIChiYXNlIDE2KQkJU2VyaWFsVGVrIExMQwotCQkJCTE2MzAgT2FrbGFuZCBSZAotCQkJCVN1aXRlIEExMTcKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRTQgICAoaGV4KQkJSS1XSU4KLTAwMjFFNCAgICAgKGJhc2UgMTYpCQlJLVdJTgotCQkJCTI3IFJ1ZSBkZXMgRWNvbmRlYXV4Ci0JCQkJRVBJTkFZIFNVUiBTRUlORSBTZWluZSBTYWludCBEZW5pcyA5MzgwMAotCQkJCUZSQU5DRQotCi0wMC0yMS1FNSAgIChoZXgpCQlEaXNwbGF5IFNvbHV0aW9uIEFHCi0wMDIxRTUgICAgIChiYXNlIDE2KQkJRGlzcGxheSBTb2x1dGlvbiBBRwotCQkJCVRhbGhvZnN0ci4gMzJhCi0JCQkJR2lsY2hpbmcgRCA4MjIwNQotCQkJCUdFUk1BTlkKLQotMDAtMjEtRTYgICAoaGV4KQkJU3RhcmxpZ2h0IFZpZGVvIExpbWl0ZWQKLTAwMjFFNiAgICAgKGJhc2UgMTYpCQlTdGFybGlnaHQgVmlkZW8gTGltaXRlZAotCQkJCTUvRi4sIFNoaW5nIERhbyBJbmR1c3RyaWFsIEJ1aWxkaW5nLAotCQkJCTIzMiBBYmVyZGVlbiBNYWluIFJvYWQsCi0JCQkJSE9ORyBLT05HCi0KLTAwLTIxLUU3ICAgKGhleCkJCUluZm9ybWF0aWNzIFNlcnZpY2VzIENvcnBvcmF0aW9uCi0wMDIxRTcgICAgIChiYXNlIDE2KQkJSW5mb3JtYXRpY3MgU2VydmljZXMgQ29ycG9yYXRpb24KLQkJCQkxNDAsIE5lZ2luIEJsZGcuLAotCQkJCU1pcmRhbWFkIEJsdmQKLQkJCQlUZWhyYW4gIDE1NDk1MzQ1MTEKLQkJCQlJUkFOLCBJU0xBTUlDIFJFUFVCTElDIE9GCi0KLTAwLTIxLUU4ICAgKGhleCkJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotMDAyMUU4ICAgICAoYmFzZSAxNikJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTEwLTEsIEhpZ2FzaGlrb3RhcmkgMS1jaG9tZQotCQkJCU5hZ2Fva2FreW8tc2hpIEt5b3RvIDYxNy04NTU1Ci0JCQkJSkFQQU4KLQotMDAtMjEtRTkgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyMUU5ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUVBICAgKGhleCkJCUJ5c3Ryb25pYyBMYXNlciBBRwotMDAyMUVBICAgICAoYmFzZSAxNikJCUJ5c3Ryb25pYyBMYXNlciBBRwotCQkJCUluZHVzdHJpZXN0ci4gMjEKLQkJCQkzMzYyIE5pZWRlcm9ueiAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0yMS1FQiAgIChoZXgpCQlFU1AgU1lTVEVNUywgTExDCi0wMDIxRUIgICAgIChiYXNlIDE2KQkJRVNQIFNZU1RFTVMsIExMQwotCQkJCTE0MjIgRWFzdCBGb3VydGggU3RyZWV0Ci0JCQkJQ2hhcmxvdHRlIE5DIDI4MjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1FQyAgIChoZXgpCQlTb2x1dHJvbmljIEdtYkgKLTAwMjFFQyAgICAgKGJhc2UgMTYpCQlTb2x1dHJvbmljIEdtYkgKLQkJCQlLdWVmZXJzdHJhc3NlIDE4Ci0JCQkJS29lbmdlbiAgNzMyNTcKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLUVEICAgKGhleCkJCVRlbGVnZXNpcwotMDAyMUVEICAgICAoYmFzZSAxNikJCVRlbGVnZXNpcwotCQkJCTg0IFN0YXRpb24gUm9hZAotCQkJCU1hcmxvdyBCdWNrcyBTTDcgMU5YCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjEtRUUgICAoaGV4KQkJRnVsbCBTcGVjdHJ1bSBJbmMuCi0wMDIxRUUgICAgIChiYXNlIDE2KQkJRnVsbCBTcGVjdHJ1bSBJbmMuCi0JCQkJMTE0OSBDaGVzdG51dCBTdHJlZXQsIFN1aXRlIDEwMAotCQkJCU1lbmxvIFBhcmsgQ2FsaWZvcm5pYSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRUYgICAoaGV4KQkJS2Fwc3lzCi0wMDIxRUYgICAgIChiYXNlIDE2KQkJS2Fwc3lzCi0JCQkJNzkwIEF2IGR1IERvY3RldXIgTWF1cmljZSBEb25hdAotCQkJCUxlIE1hcmNvIFBvbG8gQTEKLQkJCQkwNjI1MCBNb3VnaW5zIFNvcGhpYSBBbnRpcG9saXMgCi0JCQkJRlJBTkNFCi0KLTAwLTIxLUYwICAgKGhleCkJCUVXMyBUZWNobm9sb2dpZXMgTExDCi0wMDIxRjAgICAgIChiYXNlIDE2KQkJRVczIFRlY2hub2xvZ2llcyBMTEMKLQkJCQkyMCBIb21lc3RlYWQgVmlsbGFnZSBEcml2ZQotCQkJCVdhcndpY2sgTlkgMTA5OTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUYxICAgKGhleCkJCVR1dHVzIERhdGEgQUIKLTAwMjFGMSAgICAgKGJhc2UgMTYpCQlUdXR1cyBEYXRhIEFCCi0JCQkJU3ZhcmR2YWdlbiAxMQotCQkJCURhbmRlcnlkIFN0b2NraG9sbSAxODIzMwotCQkJCVNXRURFTgotCi0wMC0yMS1GMiAgIChoZXgpCQlFQVNZM0NBTEwgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDIxRjIgICAgIChiYXNlIDE2KQkJRUFTWTNDQUxMIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJvb20gMTkwMy02LCAxOS9GLiwgSElORyBZSVAgQ29tbWVyY2lhbCBDZW50cmUKLQkJCQkyNzItMjg0IERFUyBWT0VVWCBSb2FkIENlbnRyYWwKLQkJCQlIb25nIEtvbmcgIDk5OTA3NwotCQkJCUNISU5BCi0KLTAwLTIxLUYzICAgKGhleCkJCVNpMTQgU3BBCi0wMDIxRjMgICAgIChiYXNlIDE2KQkJU2kxNCBTcEEKLQkJCQlWaWEgVG9tbWFzZW8gNzcKLQkJCQlQYWRvdmEgUEQgMzUxMzEKLQkJCQlJVEFMWQotCi0wMC0yMS1GNCAgIChoZXgpCQlJTlJhbmdlIFN5c3RlbXMsIEluYwotMDAyMUY0ICAgICAoYmFzZSAxNikJCUlOUmFuZ2UgU3lzdGVtcywgSW5jCi0JCQkJMjIwIExha2Vtb250IFBhcmsgQmx2ZAotCQkJCUFsdG9vbmEgUEEgMTY2MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUY1ICAgKGhleCkJCVdlc3Rlcm4gRW5ncmF2ZXJzIFN1cHBseSwgSW5jLgotMDAyMUY1ICAgICAoYmFzZSAxNikJCVdlc3Rlcm4gRW5ncmF2ZXJzIFN1cHBseSwgSW5jLgotCQkJCTE3NjIxIE4gQmxhY2sgQ2FueW9uIEhpZ2h3YXkKLQkJCQlQaG9lbml4IEFaIDg1MDIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1GNiAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMjFGNiAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQk5MDAgQ2hlbG1zZm9yZCBTdHJlZXQKLQkJCQlMb3dlbGwgTUEgMDE4NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUY3ICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLTAwMjFGNyAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZAotCQkJCVJvc2V2aWxsZSBDQSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRjggICAoaGV4KQkJRW5zZW8sIEluYy4KLTAwMjFGOCAgICAgKGJhc2UgMTYpCQlFbnNlbywgSW5jLgotCQkJCTQwMSBJbnRlcm5hdGlvbmFsIFBhcmt3YXkKLQkJCQlTdWl0ZSAxMDAKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1GOSAgIChoZXgpCQlXSVJFQ09NIFRlY2hub2xvZ2llcwotMDAyMUY5ICAgICAoYmFzZSAxNikJCVdJUkVDT00gVGVjaG5vbG9naWVzCi0JCQkJMTM1LCBydWUgSmFjcXVlcyBDaGFybGVzCi0JCQkJT0xJVkVUIExvaXJldCA0NTE2NgotCQkJCUZSQU5DRQotCi0wMC0yMS1GQSAgIChoZXgpCQlBNFNQIFRlY2hub2xvZ2llcyBMdGQuCi0wMDIxRkEgICAgIChiYXNlIDE2KQkJQTRTUCBUZWNobm9sb2dpZXMgTHRkLgotCQkJCUtlaWxhcmFudGEgMTkgRAotCQkJCUVzcG9vIFV1c2ltYWEgMDIxNTAKLQkJCQlGSU5MQU5ECi0KLTAwLTIxLUZCICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzCi0wMDIxRkIgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MKLQkJCQk2MC0zOSxLYXNhbi1kb25nLEt1bWNob24ta3UsCi0JCQkJU2VvdWwgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtRkMgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjFGQyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjEtRkQgICAoaGV4KQkJRFNUQSBTLkwuCi0wMDIxRkQgICAgIChiYXNlIDE2KQkJRFNUQSBTLkwuCi0JCQkJTWFqYWRhIDQKLQkJCQlUcmVzIENhbnRvcyBNYWRyaWQgMjg3NjAKLQkJCQlTUEFJTgotCi0wMC0yMS1GRSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyMUZFICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yMS1GRiAgIChoZXgpCQlDeWZyb3d5IFBvbHNhdCBTQQotMDAyMUZGICAgICAoYmFzZSAxNikJCUN5ZnJvd3kgUG9sc2F0IFNBCi0JCQkJP3ViaW5vd2EgNEEKLQkJCQlXYXJzYXcgTWF6b3dpZWNraWUgMDMtODc4Ci0JCQkJUE9MQU5ECi0KLTAwLTIyLTAwICAgKGhleCkJCUlCTSBDb3JwCi0wMDIyMDAgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkyMDUxIE1pc3Npb24gQ29sbGVnZSBCbHZkIAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0wMSAgIChoZXgpCQlBa3N5cyBOZXR3b3JrcyBJbmMKLTAwMjIwMSAgICAgKGJhc2UgMTYpCQlBa3N5cyBOZXR3b3JrcyBJbmMKLQkJCQk0MjgsIDM1NTMgLSAzMSBTdHJlZXQgTlcKLQkJCQlDYWxnYXJ5ICBUMkwgMks3Ci0JCQkJQ0FOQURBCi0KLTAwLTIyLTAyICAgKGhleCkJCUV4Y2l0byBFbGVrdHJvbmlrIGkgU2thbmUgQUIKLTAwMjIwMiAgICAgKGJhc2UgMTYpCQlFeGNpdG8gRWxla3Ryb25payBpIFNrYW5lIEFCCi0JCQkJQm94IDEyNgotCQkJCUxvZGRla29waW5nZSAgMjQ2IDIyCi0JCQkJU1dFREVOCi0KLTAwLTIyLTAzICAgKGhleCkJCUdsZW5zb3VuZCBFbGVjdHJvbmljcyBMdGQKLTAwMjIwMyAgICAgKGJhc2UgMTYpCQlHbGVuc291bmQgRWxlY3Ryb25pY3MgTHRkCi0JCQkJMSAtIDYgQnJvb2tzIFBsYWNlCi0JCQkJTWFpZHN0b25lIEtlbnQgTUUxNyAxVU4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi0wNCAgIChoZXgpCQlLT1JBVEVLCi0wMDIyMDQgICAgIChiYXNlIDE2KQkJS09SQVRFSwotCQkJCUdldW1qZW9uZy1kb25nCi0JCQkJR3VucG8tc2kgR3llb25nZ2ktZG8gNDM1LTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi0wNSAgIChoZXgpCQlXZUxpbmsgU29sdXRpb25zLCBJbmMuCi0wMDIyMDUgICAgIChiYXNlIDE2KQkJV2VMaW5rIFNvbHV0aW9ucywgSW5jLgotCQkJCTNGLCBOby4gODgsIFNlYy4gMSwgTmVpLUh1IFJkLgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi0wNiAgIChoZXgpCQlDeWJlcmR5bmUgSW5jLgotMDAyMjA2ICAgICAoYmFzZSAxNikJCUN5YmVyZHluZSBJbmMuCi0JCQkJNTA0P0BDNDktMgotCQkJCVRzdWt1YmEtc2hpIEliYXJha2kta2VuIDMwNS0wODE3Ci0JCQkJSkFQQU4KLQotMDAtMjItMDcgICAoaGV4KQkJSW50ZW5vIEJyb2FkYmFuZCBUZWNobm9sb2d5IEFCCi0wMDIyMDcgICAgIChiYXNlIDE2KQkJSW50ZW5vIEJyb2FkYmFuZCBUZWNobm9sb2d5IEFCCi0JCQkJRHJpdmhqdWxzdmFnZW4gMjIKLQkJCQlTdG9ja2hvbG0gU0UgMTI2MzAKLQkJCQlTV0VERU4KLQotMDAtMjItMDggICAoaGV4KQkJQ2VydGljb20gQ29ycAotMDAyMjA4ICAgICAoYmFzZSAxNikJCUNlcnRpY29tIENvcnAKLQkJCQk1NTIwIEV4cGxvcmVyIERyaXZlLCA0dGggRmxvb3IKLQkJCQlNaXNzaXNzYXVnYSBPTiBMNFcgNUwxCi0JCQkJQ0FOQURBCi0KLTAwLTIyLTA5ICAgKGhleCkJCU9tcm9uIEhlYWx0aGNhcmUgQ28uLCBMdGQKLTAwMjIwOSAgICAgKGJhc2UgMTYpCQlPbXJvbiBIZWFsdGhjYXJlIENvLiwgTHRkCi0JCQkJMjQgWWFtYW5vc2hpdGEtY2hvIFlhbWFub3VjaGkKLQkJCQlVa3lva3UKLQkJCQlLeW90byAgNjE1MDA4NAotCQkJCUpBUEFOCi0KLTAwLTIyLTBBICAgKGhleCkJCU9uTGl2ZSwgSW5jCi0wMDIyMEEgICAgIChiYXNlIDE2KQkJT25MaXZlLCBJbmMKLQkJCQkxODEgTHl0dG9uIEF2ZQotCQkJCVBhbG8gQWx0byBDYWxpZm9ybmlhIDk0MzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0wQiAgIChoZXgpCQlOYXRpb25hbCBTb3VyY2UgQ29kaW5nIENlbnRlcgotMDAyMjBCICAgICAoYmFzZSAxNikJCU5hdGlvbmFsIFNvdXJjZSBDb2RpbmcgQ2VudGVyCi0JCQkJU3VpdGUgNzAxLFBvd2VyIENyZWF0aXZlIEEsTm8uMQotCQkJCVNoYW5nZGkgRWFzdCBSb2FkLEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0yMi0wQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIyMEMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMEQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMjBEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTBFICAgKGhleCkJCUluZGlnbyBTZWN1cml0eSBDby4sIEx0ZC4KLTAwMjIwRSAgICAgKGJhc2UgMTYpCQlJbmRpZ28gU2VjdXJpdHkgQ28uLCBMdGQuCi0JCQkJMm5kIEZsb29yLCAyNzctMTY5IFN1bmdzb28yLUdhLCBTdW5nZG9uZy1HdQotCQkJCVNlb3VsICAxMzMtODMyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLTBGICAgKGhleCkJCU1vQ0EgKE11bHRpbWVkaWEgb3ZlciBDb2F4IEFsbGlhbmNlKQotMDAyMjBGICAgICAoYmFzZSAxNikJCU1vQ0EgKE11bHRpbWVkaWEgb3ZlciBDb2F4IEFsbGlhbmNlKQotCQkJCTkwIEludmVybmVzcyBDaXJjbGUgRWFzdAotCQkJCUVuZ2xld29vZCBDQSA5NDU4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMTAgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjIxMCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTExICAgKGhleCkJCVJvaGF0aSBTeXN0ZW1zCi0wMDIyMTEgICAgIChiYXNlIDE2KQkJUm9oYXRpIFN5c3RlbXMKLQkJCQkxMTkyIEJvcnJlZ2FzIEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMTIgICAoaGV4KQkJQ0FJIE5ldHdvcmtzLCBJbmMuCi0wMDIyMTIgICAgIChiYXNlIDE2KQkJQ0FJIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTcxNSBFLiBXaWxzaGlyZSBBdmVudWUKLQkJCQlTVEUgNzE5Ci0JCQkJU2FudGEgQW5hIENhbGlmb3JuaWEgOTI3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTEzICAgKGhleCkJCVBDSSBDT1JQT1JBVElPTgotMDAyMjEzICAgICAoYmFzZSAxNikJCVBDSSBDT1JQT1JBVElPTgotCQkJCU5vLjI1LCBMYW5lIDY2LCBIZWJlaSAxc3QgU3QuLCAgQmVpdHVuIERpc3RyaWN0Ci0JCQkJVGFpY2h1bmcgIDQwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItMTQgICAoaGV4KQkJUklOTkFJIEtPUkVBCi0wMDIyMTQgICAgIChiYXNlIDE2KQkJUklOTkFJIEtPUkVBCi0JCQkJNTYwLTIsIFNoaWJqb25nLTFkb25nLCBQdXB5b3VuZy1ndQotCQkJCTV0aCBSZXNlYXJjaCBUZWFtCi0JCQkJUHVweW91bmctZ3UgSW5jaGVvbiA0MDMtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLTE1ICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAyMjE1ICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTE2ICAgKGhleCkJCVNISUJBVVJBIFZFTkRJTkcgTUFDSElORSBDT1JQT1JBVElPTgotMDAyMjE2ICAgICAoYmFzZSAxNikJCVNISUJBVVJBIFZFTkRJTkcgTUFDSElORSBDT1JQT1JBVElPTgotCQkJCUVraW1hZS1jaG8xMy0xMAotCQkJCU9iYW1hLXNoaSBGdWt1aS1rZW4gOTE3LTAwNzcKLQkJCQlKQVBBTgotCi0wMC0yMi0xNyAgIChoZXgpCQlOZWF0IEVsZWN0cm9uaWNzCi0wMDIyMTcgICAgIChiYXNlIDE2KQkJTmVhdCBFbGVjdHJvbmljcwotCQkJCVZhcnV2YWdlbiAyCi0JCQkJTG9kZGVrb3BpbmdlIFNrYW5lIFNFLTI0NjQyCi0JCQkJU1dFREVOCi0KLTAwLTIyLTE4ICAgKGhleCkJCVZlcml2dWUgSW5jLgotMDAyMjE4ICAgICAoYmFzZSAxNikJCVZlcml2dWUgSW5jLgotCQkJCTMgQ2FybGlzbGUgUm9hZAotCQkJCVdlc3Rmb3JkIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0xOSAgIChoZXgpCQlEZWxsIEluYwotMDAyMjE5ICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0xQSAgIChoZXgpCQlBdWRpbyBQcmVjaXNpb24KLTAwMjIxQSAgICAgKGJhc2UgMTYpCQlBdWRpbyBQcmVjaXNpb24KLQkJCQk1NzUwIFNXIEFyY3RpYyBEcml2ZQotCQkJCUJlYXZlcnRvbiBPUiA5NzAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMUIgICAoaGV4KQkJTW9yZWdhIFN5c3RlbXMKLTAwMjIxQiAgICAgKGJhc2UgMTYpCQlNb3JlZ2EgU3lzdGVtcwotCQkJCTU3NzAgSHVyb250YXJpbyBTdHJlZXQKLQkJCQlTdWl0ZSA1MDEKLQkJCQlNaXNzaXNzYXVnYSBPbnRhcmlvIEw1UiAzRzUKLQkJCQlDQU5BREEKLQotMDAtMjItMUMgICAoaGV4KQkJUFJJVkFURQotMDAyMjFDICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yMi0xRCAgIChoZXgpCQlGcmVlZ2VuZSBUZWNobm9sb2d5IExURAotMDAyMjFEICAgICAoYmFzZSAxNikJCUZyZWVnZW5lIFRlY2hub2xvZ3kgTFRECi0JCQkJMy9GICxDIEJMREcsV2VpcGVuZ2RhIEluZHVzdHJpYWwgUGFyawotCQkJCWxvbmdrb3UgaW5kdXN0cmlhbCBhcmVhLGJhby1hbiBkaXN0cmljdAotCQkJCVNoZW56aGVuIEdvbmdkb25nIDUxODEwOQotCQkJCUNISU5BCi0KLTAwLTIyLTFFICAgKGhleCkJCU1lZGlhIERldmljZXMgQ28uLCBMdGQuCi0wMDIyMUUgICAgIChiYXNlIDE2KQkJTWVkaWEgRGV2aWNlcyBDby4sIEx0ZC4KLQkJCQlSbTEwMDIgQWNlIFRlY2hub1Rvd2VyKDl0aCkgMzQ1LTMwCi0JCQkJS2FzYW4tZG9uZywgS3VtY2hvbi1rdQotCQkJCVNlb3VsICAxNTMtODAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLTFGICAgKGhleCkJCWVTYW5nIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMjIxRiAgICAgKGJhc2UgMTYpCQllU2FuZyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJIzEtODE3LCBJVCBDYXN0bGUgNTUwLTEsIEdhc2FuLURvbmcsCi0JCQkJR2V1bWNoZW9uLUd1LAotCQkJCVNlb3VsICAxNTMtNzY4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLTIwICAgKGhleCkJCU1pdGFjIFRlY2hub2xvZ3kgQ29ycAotMDAyMjIwICAgICAoYmFzZSAxNikJCU1pdGFjIFRlY2hub2xvZ3kgQ29ycAotCQkJCTl0aCBGbC4sICM3NSwgTWluLXNoZW5nIEUuIFJvYWQsIFNlYy4gMywKLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItMjEgICAoaGV4KQkJSVRPSCBERU5LSSBDTyxMVEQuCi0wMDIyMjEgICAgIChiYXNlIDE2KQkJSVRPSCBERU5LSSBDTyxMVEQuCi0JCQkJMTE0Ni0yLCBBc2F6dW1hLWNobwotCQkJCUthc2FpIEh5b2dvIDY3OS0wMTgwCi0JCQkJSkFQQU4KLQotMDAtMjItMjIgICAoaGV4KQkJU2NoYWZmbmVyIERldXRzY2hsYW5kIEdtYkggCi0wMDIyMjIgICAgIChiYXNlIDE2KQkJU2NoYWZmbmVyIERldXRzY2hsYW5kIEdtYkggCi0JCQkJTmk/b2VydGluZ2VuIEJyYW5jaAotCQkJCVJhaWR3YW5nZXIgU3RyLiAxMiAKLQkJCQlOaT9vZXJ0aW5nZW4gQlcgRC03MjYyMiAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTIzICAgKGhleCkJCVRpbWVLZWVwaW5nIFN5c3RlbXMsIEluYy4KLTAwMjIyMyAgICAgKGJhc2UgMTYpCQlUaW1lS2VlcGluZyBTeXN0ZW1zLCBJbmMuCi0JCQkJMzA3MDAgQmFpbmJyaWRnZSBSb2FkCi0JCQkJU3VpdGUgSAotCQkJCVNvbG9uIE9IIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0yNCAgIChoZXgpCQlHb29kIFdpbGwgSW5zdHJ1bWVudCBDby4sIEx0ZC4KLTAwMjIyNCAgICAgKGJhc2UgMTYpCQlHb29kIFdpbGwgSW5zdHJ1bWVudCBDby4sIEx0ZC4KLQkJCQlOby4gNy0xIEpob25nc2luZyBSb2FkLAotCQkJCVR1Y2hlbmcgQ2l0eQotCQkJCVRhaXBlaSAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi0yNSAgIChoZXgpCQlUaGFsZXMgQXZpb25pY3MgTHRkCi0wMDIyMjUgICAgIChiYXNlIDE2KQkJVGhhbGVzIEF2aW9uaWNzIEx0ZAotCQkJCTg2IEJ1c2hleSBSb2FkCi0JCQkJUmF5bmVzIFBhcmsKLQkJCQlMb25kb24gIFNXMjAgMEpXCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItMjYgICAoaGV4KQkJQXZhYWssIEluYy4KLTAwMjIyNiAgICAgKGJhc2UgMTYpCQlBdmFhaywgSW5jLgotCQkJCTk2NDUgU2NyYW50b24gUmQuLCBTdWl0ZSAxMTAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTI3ICAgKGhleCkJCXV2LWVsZWN0cm9uaWMgR21iSAotMDAyMjI3ICAgICAoYmFzZSAxNikJCXV2LWVsZWN0cm9uaWMgR21iSAotCQkJCUdyb3Nzd2llc2Vuc3RyYXNzZSAyMAotCQkJCUR1cmNoaGF1c2VuIEJhZGVuLVd1cnR0ZW1iZXJnIDc4NTkxCi0JCQkJR0VSTUFOWQotCi0wMC0yMi0yOCAgIChoZXgpCQlCcmVlemUgSW5ub3ZhdGlvbnMgTHRkLgotMDAyMjI4ICAgICAoYmFzZSAxNikJCUJyZWV6ZSBJbm5vdmF0aW9ucyBMdGQuCi0JCQkJSGFyIEhvdHp2aW0sIFAuTy4gQm94IDQ1Mzk3Ci0JCQkJSmVydXNhbGVtIElzcmFlbCA5MTQ1MQotCQkJCUlTUkFFTAotCi0wMC0yMi0yOSAgIChoZXgpCQlDb21wdW1lZGljcyBMdGQKLTAwMjIyOSAgICAgKGJhc2UgMTYpCQlDb21wdW1lZGljcyBMdGQKLQkJCQkzMCAtIDQwIEZsb2NraGFydCBTdHJlZXQKLQkJCQlBYmJvdHNmb3JkIFZpY3RvcmlhIDMwNjcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjItMkEgICAoaGV4KQkJU291bmRFYXIgQS9TCi0wMDIyMkEgICAgIChiYXNlIDE2KQkJU291bmRFYXIgQS9TCi0JCQkJUmVudGVtZXN0ZXJ2ZWogODAKLQkJCQlDb3BlbmhhZ2VuIE5WIERlbm1hcmsgREstMjQwMAotCQkJCURFTk1BUksKLQotMDAtMjItMkIgICAoaGV4KQkJTnVjb21tLCBJbmMuCi0wMDIyMkIgICAgIChiYXNlIDE2KQkJTnVjb21tLCBJbmMuCi0JCQkJMTAxIEJpbGJ5IFJvYWQKLQkJCQlIYWNrZXR0c3Rvd24gTkogMDc4NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTJDICAgKGhleCkJCUNldG9uIENvcnAKLTAwMjIyQyAgICAgKGJhc2UgMTYpCQlDZXRvbiBDb3JwCi0JCQkJODI1OSAxMjJuZCBBdmUgTkUsIFN1aXRlIDI3NQotCQkJCUtpcmtsYW5kIFdhc2hpbmd0b24gOTgwMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTJEICAgKGhleCkJCVNNQyBOZXR3b3JrcyBJbmMuCi0wMDIyMkQgICAgIChiYXNlIDE2KQkJU01DIE5ldHdvcmtzIEluYy4KLQkJCQkyMCBNYXNvbgotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMkUgICAoaGV4KQkJbWFpbnRlY2ggR21iSAotMDAyMjJFICAgICAoYmFzZSAxNikJCW1haW50ZWNoIEdtYkgKLQkJCQlTZWV3ZWcgNjAKLQkJCQlIb2NoYmVyZyBCYXZhcmlhIDk3MjA0Ci0JCQkJR0VSTUFOWQotCi0wMC0yMi0yRiAgIChoZXgpCQlPcGVuIEdyaWQgQ29tcHV0aW5nLCBJbmMuCi0wMDIyMkYgICAgIChiYXNlIDE2KQkJT3BlbiBHcmlkIENvbXB1dGluZywgSW5jLgotCQkJCTQwMzAtMSBXZXN0IEJyYWtlciBMYW5lIFNURTEzMAotCQkJCUF1c3RpbiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMzAgICAoaGV4KQkJRnV0dXJlTG9naWMgSW5jLgotMDAyMjMwICAgICAoYmFzZSAxNikJCUZ1dHVyZUxvZ2ljIEluYy4KLQkJCQk0MjUgRS4gQ29sb3JhZG8gU3QuLCBTdGUuIDEwMAotCQkJCUdsZW5kYWxlIENBIDkxMjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0zMSAgIChoZXgpCQlTTVQmQyBDby4sIEx0ZC4KLTAwMjIzMSAgICAgKGJhc2UgMTYpCQlTTVQmQyBDby4sIEx0ZC4KLQkJCQkyRnIuIEhha3NhbiBCbGRnLiAxMTAsIEd3YW5namFuZy1kb25nLCBHd2FuZ2ppbi1ndQotCQkJCVNlb3VsICAxNDMtODAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLTMyICAgKGhleCkJCURlc2lnbiBEZXNpZ24gVGVjaG5vbG9neSBMdGQKLTAwMjIzMiAgICAgKGJhc2UgMTYpCQlEZXNpZ24gRGVzaWduIFRlY2hub2xvZ3kgTHRkCi0JCQkJVW5pdCA5LCBBc2ggUm9hZCBTb3V0aAotCQkJCVdyZXhoYW0gSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlXcmV4aGFtIE5vcnRoIFdhbGVzIExMMTMgOVVHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItMzMgICAoaGV4KQkJUGlyZWxsaSBCcm9hZGJhbmQgU29sdXRpb25zCi0wMDIyMzMgICAgIChiYXNlIDE2KQkJUGlyZWxsaSBCcm9hZGJhbmQgU29sdXRpb25zCi0JCQkJVklBTEUgU0FSQ0EgMjIyCi0JCQkJTUlMQU5PICAyMDEyNgotCQkJCUlUQUxZCi0KLTAwLTIyLTM0ICAgKGhleCkJCUNvcnZlbnRpcyBJbmMuCi0wMDIyMzQgICAgIChiYXNlIDE2KQkJQ29ydmVudGlzIEluYy4KLQkJCQkxNDEwIEVuZXJneSBQYXJrIERyLiBTdWl0ZSAjMQotCQkJCVN0LiBQYXVsIE1pbm5lc290YSA1NTEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMzUgICAoaGV4KQkJU3RydWt0b24gU3lzdGVtcyBidgotMDAyMjM1ICAgICAoYmFzZSAxNikJCVN0cnVrdG9uIFN5c3RlbXMgYnYKLQkJCQlXZXN0a2FuYWFsZGlqayAyCi0JCQkJVXRyZWNodCAgMzU0MiBEQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIyLTM2ICAgKGhleCkJCVZFQ1RPUiBTUC4gWiBPLk8uCi0wMDIyMzYgICAgIChiYXNlIDE2KQkJVkVDVE9SIFNQLiBaIE8uTy4KLQkJCQlLUlpFTU9XQSA2Ci0JCQkJR0RZTklBICA4MS01NzcKLQkJCQlQT0xBTkQKLQotMDAtMjItMzcgICAoaGV4KQkJU2hpbmhpbnQgR3JvdXAKLTAwMjIzNyAgICAgKGJhc2UgMTYpCQlTaGluaGludCBHcm91cAotCQkJCVVuaXQgMTUwNiwgMTUvRiwgTmFueWFuZyBQbGF6YSwsIDU3IEh1bmcgVG8gUm9hZCwKLQkJCQlLd3VuIFRvbmcsIEtsbgotCQkJCUhPTkcgS09ORwotCi0wMC0yMi0zOCAgIChoZXgpCQlMT0dJUExVUwotMDAyMjM4ICAgICAoYmFzZSAxNikJCUxPR0lQTFVTCi0JCQkJMSwgUlVFIENMRU1FTlQgQURFUgotCQkJCUItNjA0MSBHT1NTRUxFSUVTCi0JCQkJR09TU0VMSUVTIEhBSU5BVVQgQi02MDQxCi0JCQkJQkVMR0lVTQotCi0wMC0yMi0zOSAgIChoZXgpCQlJbmRpYW5hIExpZmUgU2NpZW5jZXMgSW5jb3Jwb3JhdGVkCi0wMDIyMzkgICAgIChiYXNlIDE2KQkJSW5kaWFuYSBMaWZlIFNjaWVuY2VzIEluY29ycG9yYXRlZAotCQkJCTg4NzUgQmFzaCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSW5kaWFuYSA0NjI1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItM0EgICAoaGV4KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBDaXNjbyBTUFZUIEdyb3VwCi0wMDIyM0EgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBDaXNjbyBTUFZUIEdyb3VwCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGFya3dheQotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTNCICAgKGhleCkJCUNvbW11bmljYXRpb24gTmV0d29ya3MsIExMQwotMDAyMjNCICAgICAoYmFzZSAxNikJCUNvbW11bmljYXRpb24gTmV0d29ya3MsIExMQwotCQkJCTMgQ29ycG9yYXRlIERyaXZlCi0JCQkJRGFuYnVyeSBDVCAwNjgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItM0MgICAoaGV4KQkJUkFUSU8gRW50d2lja2x1bmdlbiBHbWJICi0wMDIyM0MgICAgIChiYXNlIDE2KQkJUkFUSU8gRW50d2lja2x1bmdlbiBHbWJICi0JCQkJTHVkd2lnLUVyaGFyZC1TdHJhc3NlIDIyCi0JCQkJSGFtYnVyZyAgMjA0NTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTNEICAgKGhleCkJCUp1bXBHZW4gU3lzdGVtcywgTExDCi0wMDIyM0QgICAgIChiYXNlIDE2KQkJSnVtcEdlbiBTeXN0ZW1zLCBMTEMKLQkJCQkyMTExIFBhbG9tYXIgQWlycG9ydCBSZCwgU3RlIDE0MAotCQkJCUNhcmxzYmFkIENBIDkyMDExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0zRSAgIChoZXgpCQlJUlRyYW5zIEdtYkgKLTAwMjIzRSAgICAgKGJhc2UgMTYpCQlJUlRyYW5zIEdtYkgKLQkJCQlFaW5zdGVpbnN0cmFzc2UgMTQKLQkJCQlVbnRlcnNjaGxlaXNzaGVpbSBCQVlFUk4gODU3MTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTNGICAgKGhleCkJCU5ldGdlYXIgSW5jLgotMDAyMjNGICAgICAoYmFzZSAxNikJCU5ldGdlYXIgSW5jLgotCQkJCTQ1MDAgR3JlYXQgQW1lcmljYSBQa3kKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNDAgICAoaGV4KQkJVW5pdmVyc2FsIFRlbGVjb20gUy9BCi0wMDIyNDAgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIFRlbGVjb20gUy9BCi0JCQkJQXZlbmlkYSBQYXVsaXN0YSwgMjQ0NCAtIDE3IGFuZGFyCi0JCQkJU2FvIFBhdWxvICAwMTMxMC0zMDAKLQkJCQlCUkFaSUwKLQotMDAtMjItNDEgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyMjQxICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTQyICAgKGhleCkJCUFsYWNyb24gSW5jLgotMDAyMjQyICAgICAoYmFzZSAxNikJCUFsYWNyb24gSW5jLgotCQkJCTcxIFNwaXQgQnJvb2sgUmQuCi0JCQkJU3VpdGUgMjA0Ci0JCQkJTmFzaHVhIE5IIDAzMDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi00MyAgIChoZXgpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDIyNDMgICAgIChiYXNlIDE2KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCThGLiwgTm8uIDk0LCBCYW96aG9uZyBSZC4sIFhpbmRpYW4KLQkJCQlUYWlwZWkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItNDQgICAoaGV4KQkJQ2hlbmdkdSBMaW5rb24gQ29tbXVuaWNhdGlvbnMgRGV2aWNlIENvLiwgTHRkCi0wMDIyNDQgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSBMaW5rb24gQ29tbXVuaWNhdGlvbnMgRGV2aWNlIENvLiwgTHRkCi0JCQkJNWYtMDIsIEp1bnRvbmcgQnVpbGRpbmcsIE5vLiA1MyxTaHVhbmdmZW5nIFJvYWQsIFd1aG91IERpc3RyaWN0LAotCQkJCUNoZW5nZHUgU2ljaHVhbiA2MTAwNDEKLQkJCQlDSElOQQotCi0wMC0yMi00NSAgIChoZXgpCQlMZWluZSAmIExpbmRlIEFCCi0wMDIyNDUgICAgIChiYXNlIDE2KQkJTGVpbmUgJiBMaW5kZSBBQgotCQkJCUJveCA4Ci0JCQkJU3RyYW5nbmFzIFNvZGVybWFubGFuZCBTRS02NDUgMjEKLQkJCQlTV0VERU4KLQotMDAtMjItNDYgICAoaGV4KQkJRXZvYyBJbnRlbGxpZ2VudCBUZWNobm9sb2d5IENvLixMdGQuCi0wMDIyNDYgICAgIChiYXNlIDE2KQkJRXZvYyBJbnRlbGxpZ2VudCBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJTm8uMzEgR2FveGluIENlbnRlcmFsIEF2ZW51ZSA0dGggUm9hZCxOYW5zaGFuIERpc3RyaWN0IFNoZW56aGVuIENpdHkKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjItNDcgICAoaGV4KQkJREFDIEVOR0lORUVSSU5HIENPLiwgTFRELgotMDAyMjQ3ICAgICAoYmFzZSAxNikJCURBQyBFTkdJTkVFUklORyBDTy4sIExURC4KLQkJCQkxLTUgT3lhbmFnaS1jaG8KLQkJCQlLYW1pdG9iYSwgTWluYW1pLWt1Ci0JCQkJS3lvdG8gIDYwMS04MTI4Ci0JCQkJSkFQQU4KLQotMDAtMjItNDggICAoaGV4KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0wMDIyNDggICAgIChiYXNlIDE2KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0JCQkJT25lIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTItNjM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNDkgICAoaGV4KQkJSE9NRSBNVUxUSUVORVJHWSBTTAotMDAyMjQ5ICAgICAoYmFzZSAxNikJCUhPTUUgTVVMVElFTkVSR1kgU0wKLQkJCQlDQVBJVEFOIEhBWUEgMQotCQkJCUVESUZJQ0lPIEVVQ09DRU5UUk8gQkFKTwotCQkJCU1BRFJJRCAgMjgwMjAKLQkJCQlTUEFJTgotCi0wMC0yMi00QSAgIChoZXgpCQlSQVlMQVNFIEFHCi0wMDIyNEEgICAgIChiYXNlIDE2KQkJUkFZTEFTRSBBRwotCQkJCUFyZ2Vsc3JpZWRlciBGZWxkIDItNAotCQkJCVdlc3NsaW5nIEJhdmFyaWEgODIyMzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTRCICAgKGhleCkJCUFJUlRFQ0ggVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIyNEIgICAgIChiYXNlIDE2KQkJQUlSVEVDSCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxOWZsLTQsIG5vLjc3LCBIc2luIFRhaSBXdSBSZC4sIHNlYy4xLCBIc2luLUNoaWgKLQkJCQlUYWlwZWkgIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItNEMgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDIyNEMgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjItNEQgICAoaGV4KQkJTUlUQUMgSU5URVJOQVRJT05BTCBDT1JQLgotMDAyMjREICAgICAoYmFzZSAxNikJCU1JVEFDIElOVEVSTkFUSU9OQUwgQ09SUC4KLQkJCQk2VEggRkwuLCBOTzE4NywgVElESU5HIEJMVkQuLCBTRUMuIDIKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItNEUgICAoaGV4KQkJU0VFbmVyZ3kgQ29ycC4KLTAwMjI0RSAgICAgKGJhc2UgMTYpCQlTRUVuZXJneSBDb3JwLgotCQkJCTRGLCBOby42MSwgRG9uZ3NpbmcgUkQuCi0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTRGICAgKGhleCkJCUJ5em9ybyBOZXR3b3JrcyBMdGQuCi0wMDIyNEYgICAgIChiYXNlIDE2KQkJQnl6b3JvIE5ldHdvcmtzIEx0ZC4KLQkJCQlSb29tIDVBMSxCbG9jayBBLCBLZXNoaSBQbGF6YSxOby4gMjhBIEluZm8uIFJvYWQsCi0JCQkJSGFpRGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTIyLTUwICAgKGhleCkJCVBvaW50IFNpeCBXaXJlbGVzcywgTExDCi0wMDIyNTAgICAgIChiYXNlIDE2KQkJUG9pbnQgU2l4IFdpcmVsZXNzLCBMTEMKLQkJCQkyMzMzIEFsdW1uaSBQYXJrIFBsYXphCi0JCQkJU3VpdGUgMzA1Ci0JCQkJTGV4aW5ndG9uIEtZIDQwNTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi01MSAgIChoZXgpCQlMdW1hc2Vuc2UgVGVjaG5vbG9naWVzCi0wMDIyNTEgICAgIChiYXNlIDE2KQkJTHVtYXNlbnNlIFRlY2hub2xvZ2llcwotCQkJCTMwMzMgU2NvdHQgQmx2ZC4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNTIgICAoaGV4KQkJWk9MTCBMaWZlY29yIENvcnBvcmF0aW9uCi0wMDIyNTIgICAgIChiYXNlIDE2KQkJWk9MTCBMaWZlY29yIENvcnBvcmF0aW9uCi0JCQkJMTIxIEZyZWVwb3J0IFJvYWQKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi01MyAgIChoZXgpCQlFbnRvcmlhbiBUZWNobm9sb2dpZXMKLTAwMjI1MyAgICAgKGJhc2UgMTYpCQlFbnRvcmlhbiBUZWNobm9sb2dpZXMKLQkJCQk4OTAwIFNob2FsIENyZWVrIEJsdmQKLQkJCQlBdXN0aW4gVFggNzg3NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTU0ICAgKGhleCkJCUJpZ2Vsb3cgQWVyb3NwYWNlCi0wMDIyNTQgICAgIChiYXNlIDE2KQkJQmlnZWxvdyBBZXJvc3BhY2UKLQkJCQkxODk5IFcuIEJyb29rcyBBdmUKLQkJCQlOb3J0aCBMYXMgVmVnYXMgTlYgODkwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTU1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjI1NSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi01NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIyNTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNTcgICAoaGV4KQkJM0NvbSBFdXJvcGUgTHRkCi0wMDIyNTcgICAgIChiYXNlIDE2KQkJM0NvbSBFdXJvcGUgTHRkCi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCU1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cy4gSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIyLTU4ICAgKGhleCkJCVRhaXlvIFl1ZGVuIENvLiwgTHRkLgotMDAyMjU4ICAgICAoYmFzZSAxNikJCVRhaXlvIFl1ZGVuIENvLiwgTHRkLgotCQkJCTgtMSwgU2FrYWUtY2hvCi0JCQkJVGFrYXNha2ktc2hpIEd1bm1hLWtlbiAzNzAtODUyMgotCQkJCUpBUEFOCi0KLTAwLTIyLTU5ICAgKGhleCkJCUd1YW5nemhvdSBOZXcgUG9zdGNvbSBFcXVpcG1lbnQgQ28uLEx0ZC4KLTAwMjI1OSAgICAgKGJhc2UgMTYpCQlHdWFuZ3pob3UgTmV3IFBvc3Rjb20gRXF1aXBtZW50IENvLixMdGQuCi0JCQkJTm8uMz8/R3VhbmdwdXhpIFJvYWQsR3Vhbmd6aG91IFNjaWVuY2UgQ2l0eSwKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTAwLTIyLTVBICAgKGhleCkJCUdhcmRlIFNlY3VyaXR5IEFCCi0wMDIyNUEgICAgIChiYXNlIDE2KQkJR2FyZGUgU2VjdXJpdHkgQUIKLQkJCQlCb3ggNzgKLQkJCQlTb2RlcmhhbW4gIFMtODI2IDIyCi0JCQkJU1dFREVOCi0KLTAwLTIyLTVCICAgKGhleCkJCVRlcmFkaWNpIENvcnBvcmF0aW9uCi0wMDIyNUIgICAgIChiYXNlIDE2KQkJVGVyYWRpY2kgQ29ycG9yYXRpb24KLQkJCQkjNTAwIC0gNDQwMCBEb21pbmlvbiBTdC4KLQkJCQlCdXJuYWJ5IEJDIFY1RyAkRzMKLQkJCQlDQU5BREEKLQotMDAtMjItNUMgICAoaGV4KQkJTXVsdGltZWRpYSAmIENvbW11bmljYXRpb24gVGVjaG5vbG9neQotMDAyMjVDICAgICAoYmFzZSAxNikJCU11bHRpbWVkaWEgJiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kKLQkJCQlEaWdpdGFsIEVtcGlyZSBELTgwMSAjOTgwLTMKLQkJCQlZZW9uZ1RvbmctRG9uZwotCQkJCVN1d29uLUNpdHkgS3llb25nR2ktRG8gNDQzLTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi01RCAgIChoZXgpCQlEaWdpY2FibGUgTmV0d29yayBJbmRpYSBQdnQuIEx0ZC4KLTAwMjI1RCAgICAgKGJhc2UgMTYpCQlEaWdpY2FibGUgTmV0d29yayBJbmRpYSBQdnQuIEx0ZC4KLQkJCQk3QiwgU2hhaCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCU9mZi4gVmVlcmEgRGVzYWkgUm9hZCwKLQkJCQlBbmRoZXJpIC0gV2VzdCwgTXVtYmFpLiBNYWhhcmFzaHRyYSA0MDAgMDUzCi0JCQkJSU5ESUEKLQotMDAtMjItNUUgICAoaGV4KQkJVXdpbiBUZWNobm9sb2dpZXMgQ28uLExURAotMDAyMjVFICAgICAoYmFzZSAxNikJCVV3aW4gVGVjaG5vbG9naWVzIENvLixMVEQKLQkJCQkyRixOby4yMi5SJkQgUkQgSUksU0JJUAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItNUYgICAoaGV4KQkJTGl0ZW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMjI1RiAgICAgKGJhc2UgMTYpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLDkwLENoaWVuIDEgUm9hZCxDaHVuZ0hvLAotCQkJCVRhaXBlaSBIc2llbiwgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTYwICAgKGhleCkJCUFGUkVFWSBJbmMuCi0wMDIyNjAgICAgIChiYXNlIDE2KQkJQUZSRUVZIEluYy4KLQkJCQk2RiwgTm8uMjQ5LCBDaGllbiBJIFJvYWQKLQkJCQlDaHVuZyBIbyBDaXR5IFRhaXBlaSBDb3VudHkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi02MSAgIChoZXgpCQlGcm9udGllciBTaWxpY29uIEx0ZAotMDAyMjYxICAgICAoYmFzZSAxNikJCUZyb250aWVyIFNpbGljb24gTHRkCi0JCQkJR2xlbmVhZ2xlcywgVGhlIEJlbGZyeQotCQkJCUNvbG9uaWFsIFdheQotCQkJCVdhdGZvcmQgSGVydGZvcmRzaGlyZSBXRDI0IDRXSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIyLTYyICAgKGhleCkJCUJFUCBNYXJpbmUKLTAwMjI2MiAgICAgKGJhc2UgMTYpCQlCRVAgTWFyaW5lCi0JCQkJMTMgVGFybmRhbGUgR3JvdmUgQWxiYW55Ci0JCQkJTm9ydGggU2hvcmUKLQkJCQlBdWNrbGFuZCAgMDYzMgotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTIyLTYzICAgKGhleCkJCUtvb3MgVGVjaG5pY2FsIFNlcnZpY2VzLCBJbmMuCi0wMDIyNjMgICAgIChiYXNlIDE2KQkJS29vcyBUZWNobmljYWwgU2VydmljZXMsIEluYy4KLQkJCQkxMDI1IEdyZWVud29vZCBCbHZkLgotCQkJCVN1aXRlIDM5MQotCQkJCUxha2UgTWFyeSBGTCAzMjc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNjQgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDIyNjQgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMgotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTY1ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIyNjUgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIyLTY2ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIyNjYgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIyLTY3ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyMjY3ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVGV4YXMgNzUwODItNDM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNjggICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMjI2OCAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCTY2LCBDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTY5ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0wMDIyNjkgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi02QSAgIChoZXgpCQlIb25leXdlbGwKLTAwMjI2QSAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwKLQkJCQk4ODQwIEV2ZXJncmVlbiBCbHZkLgotCQkJCU1pbm5lYXBvbGlzIE1OIDU1NDMzLTYwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTZCICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAyMjZCICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNkMgICAoaGV4KQkJTGlua1Nwcml0ZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjI2QyAgICAgKGJhc2UgMTYpCQlMaW5rU3ByaXRlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE0MTAgQ2Fubm9uIE1vdW50YWluIERyCi0JCQkJTG9uZ21vbnQgQ08gODA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTZEICAgKGhleCkJCVNoZW56aGVuIEdJRUMgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDIyNkQgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gR0lFQyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkyNC9GLCBYaU5pYW4gQ2VudGVyLCBTaGVuTmFuIFJvYWQgNjAyMSMsIEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyBQcm92aW5jZSA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0yMi02RSAgIChoZXgpCQlHb3dlbGwgRWxlY3Ryb25pYyBMaW1pdGVkCi0wMDIyNkUgICAgIChiYXNlIDE2KQkJR293ZWxsIEVsZWN0cm9uaWMgTGltaXRlZAotCQkJCVJvb20gMzYwMSAsMzYgRmxvb3IsR29sZGVuIENlbnRyYWwgVG93ZXIsSmludGlhbiBSb2FkLEZ1dGlhbiBDZW50cmFsIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgwNDgKLQkJCQlDSElOQQotCi0wMC0yMi02RiAgIChoZXgpCQkzb25lZGF0YSBUZWNobm9sb2d5IENvLiBMdGQuCi0wMDIyNkYgICAgIChiYXNlIDE2KQkJM29uZWRhdGEgVGVjaG5vbG9neSBDby4gTHRkLgotCQkJCTMvRiwgQi8yLCBKaXV4aWFuZ2xpbmcgSW5kdXN0cmlhbCBEaXN0cmljdCwgWGlsaSBUb3duLCBOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTUKLQkJCQlDSElOQQotCi0wMC0yMi03MCAgIChoZXgpCQlBQksgTm9ydGggQW1lcmljYSwgTExDCi0wMDIyNzAgICAgIChiYXNlIDE2KQkJQUJLIE5vcnRoIEFtZXJpY2EsIExMQwotCQkJCTQ0MCBOb3J0aCBXb2xmZSBSZC4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTcxICAgKGhleCkJCUphZ2VyIENvbXB1dGVyZ2VzdGV1ZXJ0ZSBNZXNzdGVjaG5payBHbWJICi0wMDIyNzEgICAgIChiYXNlIDE2KQkJSmFnZXIgQ29tcHV0ZXJnZXN0ZXVlcnRlIE1lc3N0ZWNobmlrIEdtYkgKLQkJCQlSaGVpbnN0cmFzc2UgMi00Ci0JCQkJTG9yc2NoIEhlc3NlbiA2NDY1MwotCQkJCUdFUk1BTlkKLQotMDAtMjItNzIgICAoaGV4KQkJQW1lcmljYW4gTWljcm8tRnVlbCBEZXZpY2UgQ29ycC4KLTAwMjI3MiAgICAgKGJhc2UgMTYpCQlBbWVyaWNhbiBNaWNyby1GdWVsIERldmljZSBDb3JwLgotCQkJCTIxODEgQnVjaGFuYW4gTG9vcAotCQkJCUZlcm5kYWxlIFdBIDk4MjQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi03MyAgIChoZXgpCQlUZWNod2F5Ci0wMDIyNzMgICAgIChiYXNlIDE2KQkJVGVjaHdheQotCQkJCVJtIDEwMDIsIERhZWh5dW4gVGVjaG5vIFdvcmxkIEJkLAotCQkJCTE3NCwgT2p1bi1Eb25nLAotCQkJCVVpd2FuZy1TaSwgS3l1bmdraS1EbyA0MzctODIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLTc0ICAgKGhleCkJCUZhbWlseVBob25lIEFCCi0wMDIyNzQgICAgIChiYXNlIDE2KQkJRmFtaWx5UGhvbmUgQUIKLQkJCQlBbmNrYXJncmlwc2dhdGFuIDMKLQkJCQlNYWxtbyAgMjExMTkKLQkJCQlTV0VERU4KLQotMDAtMjItNzUgICAoaGV4KQkJQmVsa2luIEludGVybmF0aW9uYWwsIEluYy4KLTAwMjI3NSAgICAgKGJhc2UgMTYpCQlCZWxraW4gSW50ZXJuYXRpb25hbCwgSW5jLgotCQkJCTUwMSBXLiBXYWxudXQgU3QuCi0JCQkJQ29tcHRvbiBDQS4gOTAyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTc2ICAgKGhleCkJCVRyaXBsZSBFWUUgQi5WLgotMDAyMjc2ICAgICAoYmFzZSAxNikJCVRyaXBsZSBFWUUgQi5WLgotCQkJCVZhYXNzZW5zZXdlZyA3MQotCQkJCUVtc3QgIDgxNjYgQVQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMi03NyAgIChoZXgpCQlORUMgQXVzdHJhbGlhIFB0eSBMdGQKLTAwMjI3NyAgICAgKGJhc2UgMTYpCQlORUMgQXVzdHJhbGlhIFB0eSBMdGQKLQkJCQk2NDktNjU1IFNwcmluZ3ZhbGUgUmQKLQkJCQlNdWxncmF2ZSBWaWN0b3JpYSAzMTcwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIyLTc4ICAgKGhleCkJCVNoZW56aGVuICBUb25nZmFuZyBNdWx0aW1lZGlhICBUZWNobm9sb2d5IENvLixMdGQuCi0wMDIyNzggICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gIFRvbmdmYW5nIE11bHRpbWVkaWEgIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQk5dGggRmxvb3IsQnVpbGRpbmcgI0QsVG9uZ2ZhbmcgSW5mb3JtYXRpb24gSGFyYm91cixIaWdoLXRlY2ggSW5kdXN0cmlhbCBQYXJrLExhbmdzaGFuIFJELCBOYW5TaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuZyBHdWFuZ0RvbmcgNTE4MDU4Ci0JCQkJQ0hJTkEKLQotMDAtMjItNzkgICAoaGV4KQkJTmlwcG9uIENvbmx1eCBDby4sIEx0ZC4KLTAwMjI3OSAgICAgKGJhc2UgMTYpCQlOaXBwb24gQ29ubHV4IENvLiwgTHRkLgotCQkJCTUtMy04LCBDaGl5b2RhCi0JCQkJU2FrYWRvLXNoaSBTYWl0YW1hIDM1MC0wMjE0Ci0JCQkJSkFQQU4KLQotMDAtMjItN0EgICAoaGV4KQkJVGVsZWNvbSBEZXNpZ24KLTAwMjI3QSAgICAgKGJhc2UgMTYpCQlUZWxlY29tIERlc2lnbgotCQkJCVphIFJlbW9yYQotCQkJCVZvaWUgUm9tYWluZQotCQkJCTMzMTcwIEdyYWRpZ25hbiAKLQkJCQlGUkFOQ0UKLQotMDAtMjItN0IgICAoaGV4KQkJQXBvZ2VlIExhYnMsIEluYy4KLTAwMjI3QiAgICAgKGJhc2UgMTYpCQlBcG9nZWUgTGFicywgSW5jLgotCQkJCTIxMCBTLiAzcmQgU3QuCi0JCQkJTm9ydGggV2FsZXMgUEEgMTk0NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTdDICAgKGhleCkJCVdvb3JpIFNNVCBDby4sbHRkCi0wMDIyN0MgICAgIChiYXNlIDE2KQkJV29vcmkgU01UIENvLixsdGQKLQkJCQk2NDktMixTdXdvbGFtLXJpLFNlb3Rhbi1NeXVuCi0JCQkJUHlvbmd0YWVrIEt5b25nZ2ktRG8gNDUxLTg1MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi03RCAgIChoZXgpCQlZRSBEQVRBIElOQy4KLTAwMjI3RCAgICAgKGJhc2UgMTYpCQlZRSBEQVRBIElOQy4KLQkJCQkxODIgU2hpbmtvCi0JCQkJSXJ1bWEgU2FpdGFtYSAzNTgtMDA1NQotCQkJCUpBUEFOCi0KLTAwLTIyLTdFICAgKGhleCkJCUNoZW5nZHUgMzBLYWl0aWFuIENvbW11bmljYXRpb24gSW5kdXN0cnkgQ28uTHRkCi0wMDIyN0UgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSAzMEthaXRpYW4gQ29tbXVuaWNhdGlvbiBJbmR1c3RyeSBDby5MdGQKLQkJCQlOby42IENodWFuZ3llIFJvYWQKLQkJCQlDaGVuZ2R1IFNpY2h1YW4gNjEwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMjItN0YgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi0wMDIyN0YgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItODAgICAoaGV4KQkJQTJCIEVsZWN0cm9uaWNzIEFCCi0wMDIyODAgICAgIChiYXNlIDE2KQkJQTJCIEVsZWN0cm9uaWNzIEFCCi0JCQkJQm94IDE0Ci0JCQkJTW90YWxhICBTLTU5MSAyMQotCQkJCVNXRURFTgotCi0wMC0yMi04MSAgIChoZXgpCQlEYWludHJlZSBOZXR3b3JrcyBJbmMKLTAwMjI4MSAgICAgKGJhc2UgMTYpCQlEYWludHJlZSBOZXR3b3JrcyBJbmMKLQkJCQkzMzQwIFdhbG51dCBBdmUKLQkJCQlTdWl0ZSAyNzUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi04MiAgIChoZXgpCQk4MDg2IExpbWl0ZWQKLTAwMjI4MiAgICAgKGJhc2UgMTYpCQk4MDg2IExpbWl0ZWQKLQkJCQkxNyBMb3dmaWVsZCBMYW5lCi0JCQkJQmFsZGVydG9uCi0JCQkJTmV3YXJrIE5vdHRzIE5HMjQgM0hKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItODMgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAyMjgzICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi04NCAgIChoZXgpCQlERVNBWSBBJlYgU0NJRU5DRSBBTkQgVEVDSE5PTE9HWSBDTy4sTFRECi0wMDIyODQgICAgIChiYXNlIDE2KQkJREVTQVkgQSZWIFNDSUVOQ0UgQU5EIFRFQ0hOT0xPR1kgQ08uLExURAotCQkJCURFU0FZIDNyZCBab25lLENoZW5qaWFuZywKLQkJCQlIdWl6aG91IEd1YW5nZG9uZyA1MTYyMjkKLQkJCQlDSElOQQotCi0wMC0yMi04NSAgIChoZXgpCQlOT01VUyBDT01NIFNZU1RFTVMKLTAwMjI4NSAgICAgKGJhc2UgMTYpCQlOT01VUyBDT01NIFNZU1RFTVMKLQkJCQk2MDEsIEd1bmphbiBUb3dlciwKLQkJCQlPZmYuIEFsZW1iaWMgR29yd2EgUm9hZAotCQkJCUJhcm9kYSBHdWphcmF0IDM5MDAyMwotCQkJCUlORElBCi0KLTAwLTIyLTg2ICAgKGhleCkJCUFTVFJPTgotMDAyMjg2ICAgICAoYmFzZSAxNikJCUFTVFJPTgotCQkJCU91ZGVob29nZXZlZW5zZWRpamsgNAotCQkJCUR3aW5nZWxvbyBEcmVudGhlIDc5OTFQRAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIyLTg3ICAgKGhleCkJCVRpdGFuIFdpcmVsZXNzIExMQwotMDAyMjg3ICAgICAoYmFzZSAxNikJCVRpdGFuIFdpcmVsZXNzIExMQwotCQkJCTM5MTQgR2F0dGlzIFNjaG9vbCBSZAotCQkJCVN1aXRlIDEwMgotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2NjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTg4ICAgKGhleCkJCVNhZ3JhZCwgSW5jLgotMDAyMjg4ICAgICAoYmFzZSAxNikJCVNhZ3JhZCwgSW5jLgotCQkJCTc1MSBOb3J0aCBEcml2ZQotCQkJCU1lbGJvdXJuZSBGTCAzMjkzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItODkgICAoaGV4KQkJT3B0b3NlY3VyaXR5IEluYy4KLTAwMjI4OSAgICAgKGJhc2UgMTYpCQlPcHRvc2VjdXJpdHkgSW5jLgotCQkJCTUwNSwgQm91bC4gZHUgUGFyYyBUZWNobm9sb2dpcXVlCi0JCQkJUXVlYmVjICBHMVAgNFM5Ci0JCQkJQ0FOQURBCi0KLTAwLTIyLThBICAgKGhleCkJCVRlcmF0cm9uaWsgZWxla3Ryb25pc2NoZSBzeXN0ZW1lIGdtYmgKLTAwMjI4QSAgICAgKGJhc2UgMTYpCQlUZXJhdHJvbmlrIGVsZWt0cm9uaXNjaGUgc3lzdGVtZSBnbWJoCi0JCQkJS2FybC1VbHJpY2gtU3RyYXNzZSAxCi0JCQkJR3Jvc3MtVW1zdGFkdCAgRC02NDgyMwotCQkJCUdFUk1BTlkKLQotMDAtMjItOEIgICAoaGV4KQkJS2Vuc2luZ3RvbiBDb21wdXRlciBQcm9kdWN0cyBHcm91cAotMDAyMjhCICAgICAoYmFzZSAxNikJCUtlbnNpbmd0b24gQ29tcHV0ZXIgUHJvZHVjdHMgR3JvdXAKLQkJCQkzMzMgVHdpbiBEb2xwaGluIERyLgotCQkJCVNpeHRoIEZsb29yCi0JCQkJUmVkd29vZCBTaG9yZXMgQ0EgOTQwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLThDICAgKGhleCkJCVBob3RvbiBFdXJvcGUgR21iSAotMDAyMjhDICAgICAoYmFzZSAxNikJCVBob3RvbiBFdXJvcGUgR21iSAotCQkJCUp1bGljaGVyIFN0cmFzc2UgMzc2Ci0JCQkJQWFjaGVuIE5vcmRyaGVpbi1XZXN0ZmFsZW4gNTIwNzAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLThEICAgKGhleCkJCUdCUyBMYWJvcmF0b3JpZXMgTExDCi0wMDIyOEQgICAgIChiYXNlIDE2KQkJR0JTIExhYm9yYXRvcmllcyBMTEMKLQkJCQkyMzI1IER1bGxlcyBDb3JuZXIgQmx2ZAotCQkJCUhlcm5kb24gVkEgMjAxNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLThFICAgKGhleCkJCVRWLU5VTUVSSUMKLTAwMjI4RSAgICAgKGJhc2UgMTYpCQlUVi1OVU1FUklDCi0JCQkJMjQtMjYgcnVlIExvdWlzIEFybWFuZAotCQkJCVBhcmlzICA3NTAxNQotCQkJCUZSQU5DRQotCi0wMC0yMi04RiAgIChoZXgpCQlDTlJTCi0wMDIyOEYgICAgIChiYXNlIDE2KQkJQ05SUwotCQkJCU1SQ1QKLQkJCQkxIHBsYWNlIEFyaXN0aWRlIEJyaWFuZAotCQkJCU1ldWRvbiBJbGUgZGUgRnJhbmNlIDkyMTk1Ci0JCQkJRlJBTkNFCi0KLTAwLTIyLTkwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjI5MCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi05MSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIyOTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItOTIgICAoaGV4KQkJQ2luZXRhbAotMDAyMjkyICAgICAoYmFzZSAxNikJCUNpbmV0YWwKLQkJCQk4NjUxIENhc3RsZSBQYXJrCi0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi05MyAgIChoZXgpCQlaVEUgQ29ycG9yYXRpb24KLTAwMjI5MyAgICAgKGJhc2UgMTYpCQlaVEUgQ29ycG9yYXRpb24KLQkJCQkxMi9GIHp0ZSBwbGF6YSxrZWppIFJvYWQgU291dGgsSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yMi05NCAgIChoZXgpCQlLeW9jZXJhIENvcnBvcmF0aW9uCi0wMDIyOTQgICAgIChiYXNlIDE2KQkJS3lvY2VyYSBDb3Jwb3JhdGlvbgotCQkJCTItMS0xLEthZ2FoYXJhCi0JCQkJVHN1enVraS1rdQotCQkJCVlva29oYW1hLXNoaSBLYW5hZ2F3YSAyMjQtODUwMgotCQkJCUpBUEFOCi0KLTAwLTIyLTk1ICAgKGhleCkJCVNHTSBUZWNobm9sb2d5IGZvciBsaWdodGluZyBzcGEKLTAwMjI5NSAgICAgKGJhc2UgMTYpCQlTR00gVGVjaG5vbG9neSBmb3IgbGlnaHRpbmcgc3BhCi0JCQkJVmlhIFBpbyBMYSBUb3JyZSAxCi0JCQkJVGF2dWxsaWEgUFUgNjEwMTAKLQkJCQlJVEFMWQotCi0wMC0yMi05NiAgIChoZXgpCQlMaW5vV2F2ZSBDb3Jwb3JhdGlvbgotMDAyMjk2ICAgICAoYmFzZSAxNikJCUxpbm9XYXZlIENvcnBvcmF0aW9uCi0JCQkJMTAwMS0xMDEgQ2hhbXBsYWluIEF2ZW51ZQotCQkJCUJ1cmxpbmd0b24gT25hdGFyaW8gTDdMIDVaNAotCQkJCUNBTkFEQQotCi0wMC0yMi05NyAgIChoZXgpCQlYTU9TIFNlbWljb25kdWN0b3IKLTAwMjI5NyAgICAgKGJhc2UgMTYpCQlYTU9TIFNlbWljb25kdWN0b3IKLQkJCQlWZW50dXJlcnMgSG91c2UKLQkJCQlLaW5nIFN0cmVldAotCQkJCUJyaXN0b2wgIEJTMSA0UEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi05OCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAyMjk4ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2thbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjItOTkgICAoaGV4KQkJU2VhTWljcm8gSW5jLgotMDAyMjk5ICAgICAoYmFzZSAxNikJCVNlYU1pY3JvIEluYy4KLQkJCQk0Njc3IE9sZCBJcm9uc2lkZXMgRHIuLAotCQkJCVN1aXRlIDMxMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi05QSAgIChoZXgpCQlMYXN0YXIsIEluYy4KLTAwMjI5QSAgICAgKGJhc2UgMTYpCQlMYXN0YXIsIEluYy4KLQkJCQkzNTU1IEtldHRlcmluZyBCTFZELgotCQkJCU1vcmFpbmUgT2hpbyA0NTQzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItOUIgICAoaGV4KQkJQXZlckxvZ2ljIFRlY2hub2xvZ2llcywgSW5jLgotMDAyMjlCICAgICAoYmFzZSAxNikJCUF2ZXJMb2dpYyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk3Ri0yLCBOby4yLCBMYW5lIDI1OCwgUnVpIEd1YW5nIFJkLiwgTmVpLUh1IERpc3QuLAotCQkJCVRhaXBlaSBUYWl3YW4gMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi05QyAgIChoZXgpCQlWZXJpc21vIE5ldHdvcmtzIEluYwotMDAyMjlDICAgICAoYmFzZSAxNikJCVZlcmlzbW8gTmV0d29ya3MgSW5jCi0JCQkJMjk1IEJlcm5hbmRvIEF2ZW51ZQotCQkJCVN0ZSAjIDMwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTlEICAgKGhleCkJCVBZVU5HLUhXQSBJTkQuQ08uLExURAotMDAyMjlEICAgICAoYmFzZSAxNikJCVBZVU5HLUhXQSBJTkQuQ08uLExURAotCQkJCTIzMC0xCi0JCQkJRHVja3dvby1SSSwgUGFsdGFuLU1ZVU4KLQkJCQlIV0FTVU5HLVNJIEtZVU5HR0ktRE8gNDQ1LTkxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi05RSAgIChoZXgpCQlTb2NpYWwgQWlkIFJlc2VhcmNoIENvLiwgTHRkLgotMDAyMjlFICAgICAoYmFzZSAxNikJCVNvY2lhbCBBaWQgUmVzZWFyY2ggQ28uLCBMdGQuCi0JCQkJU291dGggMywgV2VzdCAxMCwgQ2h1by1rdQotCQkJCTdGLCBGdWt1eWFtYS1NaW5hbWktM2p5b3UgQnVpbGQuCi0JCQkJU2FwcG9ybyBIb2trYWlkbyAwNjAtMDA2MwotCQkJCUpBUEFOCi0KLTAwLTIyLTlGICAgKGhleCkJCVNlbnN5cyBUcmFmZmljIEFCCi0wMDIyOUYgICAgIChiYXNlIDE2KQkJU2Vuc3lzIFRyYWZmaWMgQUIKLQkJCQlTbG90dHNnYXRhbiAxNAotCQkJCUJveCAyMTc0Ci0JCQkJSm9ua29waW5nIFNtYWxhbmQgNTUzMjIKLQkJCQlTV0VERU4KLQotMDAtMjItQTAgICAoaGV4KQkJRGVscGhpIENvcnBvcmF0aW9uCi0wMDIyQTAgICAgIChiYXNlIDE2KQkJRGVscGhpIENvcnBvcmF0aW9uCi0JCQkJTS9DLTQ4MC00MDUtMjU1Ci0JCQkJNTgyMCBEZWxwaGkgRHJpdmUKLQkJCQlUcm95IE1JIDQ4NDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1BMSAgIChoZXgpCQlIdWF3ZWkgU3ltYW50ZWMgVGVjaG5vbG9naWVzIENvLixMdGQuCi0wMDIyQTEgICAgIChiYXNlIDE2KQkJSHVhd2VpIFN5bWFudGVjIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCUJ1aWxkaW5nIDEsVGhlIFdlc3QgWm9uZSBTY2llbmNlIFBhcmsgb2YgVUVTVEMsTm8uODgsVGlhbmNoZW4gUm9hZAotCQkJCUNoZW5nZHUgU2ljaHVhbiA2MTE3MzEKLQkJCQlDSElOQQotCi0wMC0yMi1BMiAgIChoZXgpCQlYdHJhbXVzIFRlY2hub2xvZ2llcwotMDAyMkEyICAgICAoYmFzZSAxNikJCVh0cmFtdXMgVGVjaG5vbG9naWVzCi0JCQkJNXRoIEZsLiwgTm8uIDEwMiwgTGlkZSBTdC4sCi0JCQkJWmhvbmdoZSBDaXR5IFRhaXBlaSBDb3VudHkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi1BMyAgIChoZXgpCQlDYWxpZm9ybmlhIEVhc3Rlcm4gTGFib3JhdG9yaWVzCi0wMDIyQTMgICAgIChiYXNlIDE2KQkJQ2FsaWZvcm5pYSBFYXN0ZXJuIExhYm9yYXRvcmllcwotCQkJCTQ1OTAgUGF0cmljayBIZW5yeSBEci4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQTQgICAoaGV4KQkJMldpcmUKLTAwMjJBNCAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUE1ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDIyQTUgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUE2ICAgKGhleCkJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBBbWVyaWNhCi0wMDIyQTYgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEFtZXJpY2EKLQkJCQk5MTkgRWFzdCBIaWxsc2RhbGUgQmx2ZAotCQkJCUZvc3RlciBDaXR5IENhbGlmb3JuaWEgOTQ0MDQtMjE3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQTcgICAoaGV4KQkJVHljbyBFbGVjdHJvbmljcyBBTVAgR21iSAotMDAyMkE3ICAgICAoYmFzZSAxNikJCVR5Y28gRWxlY3Ryb25pY3MgQU1QIEdtYkgKLQkJCQlBbXBlcmVzdHIuIDEyLTE0Ci0JCQkJQmVuc2hlaW0gSGVzc2VuIDY0NjI1Ci0JCQkJR0VSTUFOWQotCi0wMC0yMi1BOCAgIChoZXgpCQlPdW1hbiBGaW5sYW5kIE95Ci0wMDIyQTggICAgIChiYXNlIDE2KQkJT3VtYW4gRmlubGFuZCBPeQotCQkJCVZvaW1hdGllIDYKLQkJCQlLZW1wZWxlICBGSU4tOTA0NDAKLQkJCQlGSU5MQU5ECi0KLTAwLTIyLUE5ICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIEluYwotMDAyMkE5ICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIEluYwotCQkJCTYwLTM5LEdhc2FuLWRvbmcKLQkJCQlHdW1jaG9uLWd1Ci0JCQkJU2VvdWwgIDE1My0wMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItQUEgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDIyQUEgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjItQUIgICAoaGV4KQkJU2hlbnpoZW4gVHVyYm9zaWdodCBUZWNobm9sb2d5IEx0ZAotMDAyMkFCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFR1cmJvc2lnaHQgVGVjaG5vbG9neSBMdGQKLQkJCQlVbml0IEMtOEEsU2hlbm5hbiBHYXJkZW4gQmxkZyxIaWdodGVjaCBQYXJrLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjItQUMgICAoaGV4KQkJSGFuZ3pob3UgU2l5dWFuIFRlY2guIENvLiwgTHRkCi0wMDIyQUMgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgU2l5dWFuIFRlY2guIENvLiwgTHRkCi0JCQkJNSBGLCBUb3dlciBCLCBOby4gMzcsIFhpYW5nIFl1YW4gUm9hZAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMgotCQkJCUNISU5BCi0KLTAwLTIyLUFEICAgKGhleCkJCVRFTEVTSVMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIyQUQgICAgIChiYXNlIDE2KQkJVEVMRVNJUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkyODE4MSBSaXZlciBEcml2ZQotCQkJCUNpcmNsZXZpbGxlIE9oaW8gNDMxMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUFFICAgKGhleCkJCU1hdHRlbCBJbmMuCi0wMDIyQUUgICAgIChiYXNlIDE2KQkJTWF0dGVsIEluYy4KLQkJCQkzMzMgQ29udGluZW50YWwgQmx2ZC4KLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1BRiAgIChoZXgpCQlTYWZldHkgVmlzaW9uCi0wMDIyQUYgICAgIChiYXNlIDE2KQkJU2FmZXR5IFZpc2lvbgotCQkJCTYxMDAgVy4gU2FtIEhvdXN0b24gUGt3eS4gTm9ydGgKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CMCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMjJCMCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFNpbmh1IDNyZCBSRC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QsIFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItQjEgICAoaGV4KQkJRWxiaXQgU3lzdGVtcwotMDAyMkIxICAgICAoYmFzZSAxNikJCUVsYml0IFN5c3RlbXMKLQkJCQlQT0IgNTM5Ci0JCQkJSGFpZmEgIDMxMDUzCi0JCQkJSVNSQUVMCi0KLTAwLTIyLUIyICAgKGhleCkJCTRSRiBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMjJCMiAgICAgKGJhc2UgMTYpCQk0UkYgQ29tbXVuaWNhdGlvbnMgTHRkCi0JCQkJMjYgR2xvdmVyIFN0cmVldAotCQkJCU5nYXVyYW5nYSBXZWxsaW5ndG9uIDYwMzUKLQkJCQlORVcgWkVBTEFORAotCi0wMC0yMi1CMyAgIChoZXgpCQlTZWkgUy5wLkEuCi0wMDIyQjMgICAgIChiYXNlIDE2KQkJU2VpIFMucC5BLgotCQkJCVZpYSBSdWZmaWxsaSwgMQotCQkJCUN1cm5vIEJlcmdhbW8gMjQwMzUKLQkJCQlJVEFMWQotCi0wMC0yMi1CNCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMkI0ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIFUuUy4gSGlnaHdheSA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQjUgICAoaGV4KQkJTk9WSVRBCi0wMDIyQjUgICAgIChiYXNlIDE2KQkJTk9WSVRBCi0JCQkJM0YzMDEsTmFtc3VuZyBCL0QgMzQwLTMwCi0JCQkJR2FzYW4tRG9uZwotCQkJCUdldW1jaGVvbi1HdSBTZW91bCAxNTMtNzgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLUI2ICAgKGhleCkJCVN1cGVyZmxvdyBUZWNobm9sb2dpZXMgR3JvdXAKLTAwMjJCNiAgICAgKGJhc2UgMTYpCQlTdXBlcmZsb3cgVGVjaG5vbG9naWVzIEdyb3VwCi0JCQkJNDA2MCBEaXhvbiBTdHJlZXQKLQkJCQlEZXMgTW9pbmVzIElBIDUwMjY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CNyAgIChoZXgpCQlHU1MgR3J1bmRpZyBTQVQtU3lzdGVtcyBHbWJICi0wMDIyQjcgICAgIChiYXNlIDE2KQkJR1NTIEdydW5kaWcgU0FULVN5c3RlbXMgR21iSAotCQkJCUJldXRoZXJuZXIgU3RyYXNzZSA0MwotCQkJCU51ZXJuYmVyZyBCYXllcm4gOTA0NzEKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUI4ICAgKGhleCkJCU5vcmNvdHQKLTAwMjJCOCAgICAgKGJhc2UgMTYpCQlOb3Jjb3R0Ci0JCQkJQnJvb2tmaWVsZCBIb3VzZQotCQkJCUdyaW1zZGl0Y2ggTGFuZSBvZmYgVGFycG9ybGV5IFJvYWQKLQkJCQlOb3Jjb3R0IEJyb29rIENoZXNoaXJlIFdBNCA0RUEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi1COSAgIChoZXgpCQlBbmFsb2dpeCBTZW1pbmNvbmR1Y3RvciwgSW5jCi0wMDIyQjkgICAgIChiYXNlIDE2KQkJQW5hbG9naXggU2VtaW5jb25kdWN0b3IsIEluYwotCQkJCTMyMTEgU2NvdHQgQmx2ZC4sIFN1aXRlIDEwMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CQSAgIChoZXgpCQlIVVRIIEVsZWt0cm9uaWsgU3lzdGVtZSBHbWJICi0wMDIyQkEgICAgIChiYXNlIDE2KQkJSFVUSCBFbGVrdHJvbmlrIFN5c3RlbWUgR21iSAotCQkJCUVjaHRlcm5hY2hlciBTdHIuIDEwCi0JCQkJVHJvaXNkb3JmLVNwaWNoIE5SVyA1Mzg0MgotCQkJCUdFUk1BTlkKLQotMDAtMjItQkIgICAoaGV4KQkJYmV5ZXJkeW5hbWljIEdtYkggJiBDby4gS0cKLTAwMjJCQiAgICAgKGJhc2UgMTYpCQliZXllcmR5bmFtaWMgR21iSCAmIENvLiBLRwotCQkJCVRoZXJlc2llbnN0ci4gOAotCQkJCUhlaWxicm9ubiAgNzQwNzIKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUJDICAgKGhleCkJCUpEU1UgRnJhbmNlIFNBUwotMDAyMkJDICAgICAoYmFzZSAxNikJCUpEU1UgRnJhbmNlIFNBUwotCQkJCTM0IHJ1ZSBOZWNrZXIKLQkJCQlTQUlOVCBFVElFTk5FIExPSVJFIDQyMDAwCi0JCQkJRlJBTkNFCi0KLTAwLTIyLUJEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjJCRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIyQkUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQkYgICAoaGV4KQkJU2llQW1wIEdyb3VwIG9mIENvbXBhbmllcwotMDAyMkJGICAgICAoYmFzZSAxNikJCVNpZUFtcCBHcm91cCBvZiBDb21wYW5pZXMKLQkJCQkyIEFuZyBNbyBLaW8gU3RyZWV0IDY0Ci0JCQkJQW5nIE1vIEtpbyBJbmR1c3RyaWFsIFBhcmsgMywgVW5pdCAwMi0wMUQgRWNvbiBCdWlsZGluZwotCQkJCVNpbmdhcG9yZSAgNTY5MDg0Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTIyLUMwICAgKGhleCkJCVNoZW56aGVuIEZvcmNlbGluayBFbGVjdHJvbmljIENvLCBMdGQKLTAwMjJDMCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBGb3JjZWxpbmsgRWxlY3Ryb25pYyBDbywgTHRkCi0JCQkJMm5kIGFuZCAzcmQgZmxvb3IsIEhhc3NlIG1hbnVmYWN0dXJlIGJ1aWxkaW5nLCBIYXNlZSBpbmR1c3RyaWFsIHBhcmsKLQkJCQlCYW54dWVnYW5nIGluZHVzdHJpYWwgYXJlYSwgTG9uZ2dhbmcgZGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTEyCi0JCQkJQ0hJTkEKLQotMDAtMjItQzEgICAoaGV4KQkJQWN0aXZlIFN0b3JhZ2UgSW5jLgotMDAyMkMxICAgICAoYmFzZSAxNikJCUFjdGl2ZSBTdG9yYWdlIEluYy4KLQkJCQkyMjk1IEplZmZlcnNvbiBTdHJlZXQKLQkJCQlUb3JyYW5jZSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQzIgICAoaGV4KQkJUHJvdmlldyBFbGV0cm9uaWNhIGRvIEJyYXNpbCBMVERBCi0wMDIyQzIgICAgIChiYXNlIDE2KQkJUHJvdmlldyBFbGV0cm9uaWNhIGRvIEJyYXNpbCBMVERBCi0JCQkJUi4gQWNhcmEsIDIwMyAtIERpc3RyaXRvIEluZHVzdHJpYWwKLQkJCQlNYW5hdXMgQW1hem9uYXMgNjkwNzUtMDMwCi0JCQkJQlJBWklMCi0KLTAwLTIyLUMzICAgKGhleCkJCVplZXBvcnQgVGVjaG5vbG9neSBJbmMuCi0wMDIyQzMgICAgIChiYXNlIDE2KQkJWmVlcG9ydCBUZWNobm9sb2d5IEluYy4KLQkJCQkxRixObzIzMSxYaWFuemhlbmcgMm5kIFJkLgotCQkJCUhzaW5DaHUgVGFpd2FuIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItQzQgICAoaGV4KQkJZXBybyBHbWJICi0wMDIyQzQgICAgIChiYXNlIDE2KQkJZXBybyBHbWJICi0JCQkJSm9lYmtlc3dlZyAzCi0JCQkJR3JvbmF1IE5SVyA0ODU5OQotCQkJCUdFUk1BTlkKLQotMDAtMjItQzUgICAoaGV4KQkJSU5GT1JTT04gQ28sTHRkLgotMDAyMkM1ICAgICAoYmFzZSAxNikJCUlORk9SU09OIENvLEx0ZC4KLQkJCQlSb29tIDcwNCxUb3dlciBCMSwgQ2hhbmdZdWFuVGlhbkRpIFBsYXphCi0JCQkJU3VaaG91IFN0cmVldCwgSGFpRGlhbiBEaXN0cmljdAotCQkJCUJlaUppbmcgQ2l0eSAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMjItQzYgICAoaGV4KQkJU3V0dXMgSW5jCi0wMDIyQzYgICAgIChiYXNlIDE2KQkJU3V0dXMgSW5jCi0JCQkJMzAxLTM5OTkgSGVubmluZyBEcml2ZQotCQkJCUJ1cm5hYnkgQnJpdGlzaCBDb2x1bWJpYSBWNUMgNlA5Ci0JCQkJQ0FOQURBCi0KLTAwLTIyLUM3ICAgKGhleCkJCVNFR0dFUiBNaWNyb2NvbnRyb2xsZXIgR21iSCAmIENvLiBLRwotMDAyMkM3ICAgICAoYmFzZSAxNikJCVNFR0dFUiBNaWNyb2NvbnRyb2xsZXIgR21iSCAmIENvLiBLRwotCQkJCUluIGRlbiBXZWlkZW4gMTEKLQkJCQlIaWxkZW4gTlJXIDQwNzIxCi0JCQkJR0VSTUFOWQotCi0wMC0yMi1DOCAgIChoZXgpCQlBcHBsaWVkIEluc3RydW1lbnRzCi0wMDIyQzggICAgIChiYXNlIDE2KQkJQXBwbGllZCBJbnN0cnVtZW50cwotCQkJCUVkaXNvbndlZyAzOWQKLQkJCQlWbGlzc2luZ2VuIFplZWxhbmQgTkwtNDM4Mk5WCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjItQzkgICAoaGV4KQkJTGVub3JkLCBCYXVlciAmIENvIEdtYkgKLTAwMjJDOSAgICAgKGJhc2UgMTYpCQlMZW5vcmQsIEJhdWVyICYgQ28gR21iSAotCQkJCURvaGxlbnN0ciAzMgotCQkJCU9iZXJoYXVzZW4gTlJXIDQ2MTQ1Ci0JCQkJR0VSTUFOWQotCi0wMC0yMi1DQSAgIChoZXgpCQlBbnZpeiBCaW9tZXRyaWMgVGVjaC4gQ28uLCBMdGQuCi0wMDIyQ0EgICAgIChiYXNlIDE2KQkJQW52aXogQmlvbWV0cmljIFRlY2guIENvLiwgTHRkLgotCQkJCTV0aCBGbG9vciwgNDI5OSBKaW5kdSBSb2FkLAotCQkJCVNoYW5naGFpICAyMDExMDgKLQkJCQlDSElOQQotCi0wMC0yMi1DQiAgIChoZXgpCQlJT05PREVTIEluYy4KLTAwMjJDQiAgICAgKGJhc2UgMTYpCQlJT05PREVTIEluYy4KLQkJCQkxNTU1IEF2ZW5pcgotCQkJCVN1aXRlIDEwMwotCQkJCUxhdmFsIFF1ZWJlYyBIN1MyTjUKLQkJCQlDQU5BREEKLQotMDAtMjItQ0MgICAoaGV4KQkJU2NpTG9nLCBJbmMuCi0wMDIyQ0MgICAgIChiYXNlIDE2KQkJU2NpTG9nLCBJbmMuCi0JCQkJODg0NSBTb3V0aCBHcmVlbnZpZXcgRHJpdmUKLQkJCQlTdWl0ZSA0Ci0JCQkJTWlkZGxldG9uIFdpc2NvbnNpbiA1MzU2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQ0QgICAoaGV4KQkJQXJlZCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyMkNEICAgICAoYmFzZSAxNikJCUFyZWQgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk2Ri04IE5vLjgzIFNlYy4xLCBOYW5rYW4gUmQuIEx1emh1IFNoaWFuZwotCQkJCVRhb3l1YW4gQ291bnR5IFRhaXdhbiAzMzg1OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItQ0UgICAoaGV4KQkJQ2lzY28sIFNlcnZpY2UgUHJvdmlkZXIgVmlkZW8gVGVjaG5vbG9neSBHcm91cAotMDAyMkNFICAgICAoYmFzZSAxNikJCUNpc2NvLCBTZXJ2aWNlIFByb3ZpZGVyIFZpZGVvIFRlY2hub2xvZ3kgR3JvdXAKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQ0YgICAoaGV4KQkJUExBTkVYIENvbW11bmljYXRpb25zIElOQwotMDAyMkNGICAgICAoYmFzZSAxNikJCVBMQU5FWCBDb21tdW5pY2F0aW9ucyBJTkMKLQkJCQkyRiBGP0VOSVNTQVkgRWJpc3UgQmxkZzMtMTYtMwotCQkJCVNoaWJ1eWEta3UgVG9reW8gMTUwLTAwMTEKLQkJCQlKQVBBTgotCi0wMC0yMi1EMCAgIChoZXgpCQlQb2xhciBFbGVjdHJvIE95Ci0wMDIyRDAgICAgIChiYXNlIDE2KQkJUG9sYXIgRWxlY3RybyBPeQotCQkJCVByb2Zlc3NvcmludGllIDUKLQkJCQlLZW1wZWxlIE91bHUgOTA0NDAKLQkJCQlGSU5MQU5ECi0KLTAwLTIyLUQxICAgKGhleCkJCUFsYnJlY2h0IEp1bmcgR21iSCAmIENvLiBLRwotMDAyMkQxICAgICAoYmFzZSAxNikJCUFsYnJlY2h0IEp1bmcgR21iSCAmIENvLiBLRwotCQkJCVZvbG1lc3RyYXNzZSAxCi0JCQkJU2NoYWxrc211aGxlIE5SVyA1ODU3OQotCQkJCUdFUk1BTlkKLQotMDAtMjItRDIgICAoaGV4KQkJQWxsIEVhcnRoIENvbWVyY2lvIGRlIEVsZXRyb25pY29zIExUREEuCi0wMDIyRDIgICAgIChiYXNlIDE2KQkJQWxsIEVhcnRoIENvbWVyY2lvIGRlIEVsZXRyb25pY29zIExUREEuCi0JCQkJUnVhIEJlbnRvIGRlIEFycnVkYSBDYW1hcmdvCi0JCQkJMjcwIC0gSmQuIFNhbnRhbmEKLQkJCQlDYW1waW5hcyBTYW8gUGF1bG8gMTMwODgtNjUwCi0JCQkJQlJBWklMCi0KLTAwLTIyLUQzICAgKGhleCkJCUh1Yi1UZWNoCi0wMDIyRDMgICAgIChiYXNlIDE2KQkJSHViLVRlY2gKLQkJCQk3NywgSW1hZS1kb25nCi0JCQkJQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04MjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItRDQgICAoaGV4KQkJQ29tV29ydGggQ28uLCBMdGQuCi0wMDIyRDQgICAgIChiYXNlIDE2KQkJQ29tV29ydGggQ28uLCBMdGQuCi0JCQkJMi0zNS03IE5pc2hpbWFnb21lCi0JCQkJT2h0YS1rdSBUb2t5byAxNDMtMDAyNgotCQkJCUpBUEFOCi0KLTAwLTIyLUQ1ICAgKGhleCkJCUVhdG9uIENvcnAuIEVsZWN0cmljYWwgR3JvdXAgRGF0YSBDZW50ZXIgU29sdXRpb25zIC0gUHVsaXp6aQotMDAyMkQ1ICAgICAoYmFzZSAxNikJCUVhdG9uIENvcnAuIEVsZWN0cmljYWwgR3JvdXAgRGF0YSBDZW50ZXIgU29sdXRpb25zIC0gUHVsaXp6aQotCQkJCTMyMDAgUy4gU3VzYW4gU3QuCi0JCQkJU2FudGEgQW5hIENBIDkyNzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1ENiAgIChoZXgpCQlDeXBhayBBQgotMDAyMkQ2ICAgICAoYmFzZSAxNikJCUN5cGFrIEFCCi0JCQkJUC5PLiBCT1ggMjMzMgotCQkJCUZ1bmNrZW5zIEdyYW5kIDEKLQkJCQlTdG9ja2hvbG0gIDEwMyAxOAotCQkJCVNXRURFTgotCi0wMC0yMi1ENyAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjJENyAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yMi1EOCAgIChoZXgpCQlTaGVuemhlbiBHU1QgU2VjdXJpdHkgYW5kIFNhZmV0eSBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMjJEOCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBHU1QgU2VjdXJpdHkgYW5kIFNhZmV0eSBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlSb29tIDUwMixCdWlsZGluZyA2IG9mIEt1cGFpIEluZm9tYXRpb24gSGFyYm91ciwKLQkJCQlOby4yIE1lbmd4aSBSb2FkLCBITlRJQShOb3J0aCBhcmVhKSxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTIyLUQ5ICAgKGhleCkJCUZvcnRleCBJbmR1c3RyaWFsIEx0ZC4KLTAwMjJEOSAgICAgKGJhc2UgMTYpCQlGb3J0ZXggSW5kdXN0cmlhbCBMdGQuCi0JCQkJRmxhdCAxNiwgMTIgL0YuLFBhY2lmaWMgVHJhZGUgQ2VudHJlCi0JCQkJMiBLYWkgSGluZyBSb2FkLEtvd2xvb24gQmF5LAotCQkJCUtvd2xvb24gSG9uZyBLb25nIDg1MgotCQkJCUNISU5BCi0KLTAwLTIyLURBICAgKGhleCkJCUFOQVRFSywgTExDCi0wMDIyREEgICAgIChiYXNlIDE2KQkJQU5BVEVLLCBMTEMKLQkJCQkzMjE5IEVhc3QgQ2FtZWxiYWNrIFJvYWQKLQkJCQlTdWl0ZSA1MDIKLQkJCQlQaG9lbml4IEFaIDg1MDE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1EQiAgIChoZXgpCQlUcmFuc2xvZ2ljIENvcnBvcmF0aW9uCi0wMDIyREIgICAgIChiYXNlIDE2KQkJVHJhbnNsb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTEwODI1IEUuIDQ3dGggQXZlbnVlCi0JCQkJRGVudmVyIENvbG9yYWRvIDgwMjM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1EQyAgIChoZXgpCQlWaWdpbCBIZWFsdGggU29sdXRpb25zIEluYy4KLTAwMjJEQyAgICAgKGJhc2UgMTYpCQlWaWdpbCBIZWFsdGggU29sdXRpb25zIEluYy4KLQkJCQkyMTAyLTQ0NjQgTWFya2hhbSBTdAotCQkJCVZpY3RvcmlhIEJDIFY4WiA3WDgKLQkJCQlDQU5BREEKLQotMDAtMjItREQgICAoaGV4KQkJUHJvdGVjdGEgRWxlY3Ryb25pY3MgTHRkCi0wMDIyREQgICAgIChiYXNlIDE2KQkJUHJvdGVjdGEgRWxlY3Ryb25pY3MgTHRkCi0JCQkJS2VzbWFyayBzdHIgNy9BCi0JCQkJQnVkYXBlc3QgSHVuZ2FyeSAxMTU4Ci0JCQkJSFVOR0FSWQotCi0wMC0yMi1ERSAgIChoZXgpCQlPUFBPIERpZ2l0YWwsIEluYy4KLTAwMjJERSAgICAgKGJhc2UgMTYpCQlPUFBPIERpZ2l0YWwsIEluYy4KLQkJCQkyNjI5QiBUZXJtaW5hbCBCbHZkCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItREYgICAoaGV4KQkJVEFNVVogTW9uaXRvcnMKLTAwMjJERiAgICAgKGJhc2UgMTYpCQlUQU1VWiBNb25pdG9ycwotCQkJCVRpZWRlbmthbXAgMTYKLQkJCQlIZW5zdGVkdC1VbHpidXJnIFNIIDI0NTU4Ci0JCQkJR0VSTUFOWQotCi0wMC0yMi1FMCAgIChoZXgpCQlBdGxhbnRpYyBTb2Z0d2FyZSBUZWNobm9sb2dpZXMgUy5yLkwuCi0wMDIyRTAgICAgIChiYXNlIDE2KQkJQXRsYW50aWMgU29mdHdhcmUgVGVjaG5vbG9naWVzIFMuci5MLgotCQkJCVZpYSBNYXJ0aW5vIEJhc3NpLCA5Ci0JCQkJTWlsYW5vICAyMDE0OAotCQkJCUlUQUxZCi0KLTAwLTIyLUUxICAgKGhleCkJCVpPUlQgTGFicywgTExDLgotMDAyMkUxICAgICAoYmFzZSAxNikJCVpPUlQgTGFicywgTExDLgotCQkJCTQ0SCBEb3ZlciBQb2ludCBSb2FkCi0JCQkJRG92ZXIgTkggMDM4MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUUyICAgKGhleCkJCVdBQlRFQyBUcmFuc2l0IERpdmlzaW9uCi0wMDIyRTIgICAgIChiYXNlIDE2KQkJV0FCVEVDIFRyYW5zaXQgRGl2aXNpb24KLQkJCQkxMzAgUmlkZ2V2aWV3IENpcmNsZQotCQkJCUR1bmNhbiBTQyAyOTMzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItRTMgICAoaGV4KQkJQW1lcmlnb24KLTAwMjJFMyAgICAgKGJhc2UgMTYpCQlBbWVyaWdvbgotCQkJCTIxNjgwIEhhZ2dlcnR5IFJvYWQKLQkJCQlTdWl0ZSAxMDEKLQkJCQlOb3J0aHZpbGxlIE1pY2hpZ2FuIDQ4MTY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1FNCAgIChoZXgpCQlBUEFTUyBURUNITk9MT0dZIENPLiwgTFRELgotMDAyMkU0ICAgICAoYmFzZSAxNikJCUFQQVNTIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJMkYsIE5vLiAyNjcsIFNlYy4gMywgQ2hlbmdkZSBSZC4sCi0JCQkJRGF0b25nIERpc3RyaWN0Ci0JCQkJVEVJUEVJICAxMTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLUU1ICAgKGhleCkJCUZpc2hlci1Sb3NlbW91bnQgU3lzdGVtcyBJbmMuCi0wMDIyRTUgICAgIChiYXNlIDE2KQkJRmlzaGVyLVJvc2Vtb3VudCBTeXN0ZW1zIEluYy4KLQkJCQkxMjMwMSBSZXNlYXJjaCBCbHZkCi0JCQkJQnVpbGRpbmcgMwotCQkJCUF1c3RpbiBUZXhhcyA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItRTYgICAoaGV4KQkJSW50ZWxsaWdlbnQgRGF0YQotMDAyMkU2ICAgICAoYmFzZSAxNikJCUludGVsbGlnZW50IERhdGEKLQkJCQlFZGYuIEludmVyaW5ub3ZhIGE/PyBBdmRhLiBQdW50byBNb2JpLCA0LiBQYXJxdWUgQ2llbnRBLWZpY28gVGVjbm9sQT9naWNvCi0JCQkJVEVDTk9BTENBTEE/LiBDcnRhLiBOYWNpb25hbCBJSSBNYWRyaWQtQmFyY2Vsb25hIEttLiAzMSw2MDAKLQkJCQlBbGNhbEE/IGRlIEhlbmFyZXMgTWFkcmlkIDI4ODA1Ci0JCQkJU1BBSU4KLQotMDAtMjItRTcgICAoaGV4KQkJV1BTIFBhcmtpbmcgU3lzdGVtcwotMDAyMkU3ICAgICAoYmFzZSAxNikJCVdQUyBQYXJraW5nIFN5c3RlbXMKLQkJCQlIb2V2ZW53ZWcgMTEKLQkJCQlFaW5kaG92ZW4gTm9vcmQtQnJhYmFudCA1NjUyIEFXCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjItRTggICAoaGV4KQkJQXBwbGl0aW9uIENvLiwgTHRkLgotMDAyMkU4ICAgICAoYmFzZSAxNikJCUFwcGxpdGlvbiBDby4sIEx0ZC4KLQkJCQk1MDktMSwgQnVuZGFuZyBUZWNobm8gUGFyayBELWRvbmcsCi0JCQkJMTUxIFlhdGFwLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ05hbSBLeXVuZ2dpLWRvIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItRTkgICAoaGV4KQkJUHJvVmlzaW9uIENvbW11bmljYXRpb25zCi0wMDIyRTkgICAgIChiYXNlIDE2KQkJUHJvVmlzaW9uIENvbW11bmljYXRpb25zCi0JCQkJMSBQb3J0bGFuZCBTcXVhcmUKLQkJCQlCcmlzdG9sICBCUzIgOFJSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItRUEgICAoaGV4KQkJUnVzdGVsY29tIEluYy4KLTAwMjJFQSAgICAgKGJhc2UgMTYpCQlSdXN0ZWxjb20gSW5jLgotCQkJCUdhcmFnbml5IHByb2V6ZCwgMQotCQkJCVN0Li1QZXRlcnNidXJnICAxOTIyODgKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjItRUIgICAoaGV4KQkJRGF0YSBSZXNwb25zIEEvUwotMDAyMkVCICAgICAoYmFzZSAxNikJCURhdGEgUmVzcG9ucyBBL1MKLQkJCQlFbGxla2FlciA2Ci0JCQkJSGVybGV2ICAyNzMwCi0JCQkJREVOTUFSSwotCi0wMC0yMi1FQyAgIChoZXgpCQlJREVBTEJUIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwMjJFQyAgICAgKGJhc2UgMTYpCQlJREVBTEJUIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQk2Ri4sIE5PLjgsIExBTkUgMzQ1LCBZQU5HR1VBTkcgU1QuLCBORUlIVSBESVNUUklDVAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi1FRCAgIChoZXgpCQlUU0kgUG93ZXIgQ29ycG9yYXRpb24KLTAwMjJFRCAgICAgKGJhc2UgMTYpCQlUU0kgUG93ZXIgQ29ycG9yYXRpb24KLQkJCQkxMTAzIFdlc3QgUGllcmNlIEF2ZW51ZQotCQkJCUFudGlnbyBXSSA1NDQwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItRUUgICAoaGV4KQkJQWxnbyBDb21tdW5pY2F0aW9uIFByb2R1Y3RzIEx0ZAotMDAyMkVFICAgICAoYmFzZSAxNikJCUFsZ28gQ29tbXVuaWNhdGlvbiBQcm9kdWN0cyBMdGQKLQkJCQk0NTAwIEJlZWRpZSBTdHJlZXQKLQkJCQlCdXJuYWJ5IEJDIFY1SiA1TDIKLQkJCQlDQU5BREEKLQotMDAtMjItRUYgICAoaGV4KQkJSWJpcyBUZWssIExMQwotMDAyMkVGICAgICAoYmFzZSAxNikJCUliaXMgVGVrLCBMTEMKLQkJCQk5MTIgUGl0dHNidXJnaCBSb2FkCi0JCQkJQnV0bGVyIFBBIDE2MDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1GMCAgIChoZXgpCQkzIEdyZWVucyBBdmlhdGlvbiBMaW1pdGVkCi0wMDIyRjAgICAgIChiYXNlIDE2KQkJMyBHcmVlbnMgQXZpYXRpb24gTGltaXRlZAotCQkJCTEwIEhlZGluZ2hhbSBDbG9zZQotCQkJCU1hY2NsZXNmaWVsZCAgU0sxMCAzTFoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi1GMSAgIChoZXgpCQlQUklWQVRFCi0wMDIyRjEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTIyLUYyICAgKGhleCkJCVN1blBvd2VyIENvcnAKLTAwMjJGMiAgICAgKGJhc2UgMTYpCQlTdW5Qb3dlciBDb3JwCi0JCQkJMTQxNCBIYXJib3VyIFdheSBTb3V0aAotCQkJCVJpY2htb25kIENBIDk0ODA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1GMyAgIChoZXgpCQlTSEFSUCBDT1JQT1JBVElPTgotMDAyMkYzICAgICAoYmFzZSAxNikJCVNIQVJQIENPUlBPUkFUSU9OCi0JCQkJMjItMjIsTmFnYWlrZS1jaG8sCi0JCQkJQWJlbm8tS1UsCi0JCQkJT3Nha2EsIDU0NS04NTIyLAotCQkJCUpBUEFOCi0KLTAwLTIyLUY0ICAgKGhleCkJCUFNUEFLIFRlY2hub2xvZ3ksIEluYy4KLTAwMjJGNCAgICAgKGJhc2UgMTYpCQlBTVBBSyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJTm8uIDgtMSwgTmFueXVhbiAybmQgUmQuCi0JCQkJSmhvbmdsaSBUYW95dWFuIDMyMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItRjUgICAoaGV4KQkJQWR2YW5jZWQgUmVhbHRpbWUgVHJhY2tpbmcgR21iSAotMDAyMkY1ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFJlYWx0aW1lIFRyYWNraW5nIEdtYkgKLQkJCQlBbSBPZWZlcmwgNgotCQkJCVdlaWxoZWltIEJheWVybiBELTgyMzYyCi0JCQkJR0VSTUFOWQotCi0wMC0yMi1GNiAgIChoZXgpCQlTeXJhY3VzZSBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotMDAyMkY2ICAgICAoYmFzZSAxNikJCVN5cmFjdXNlIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0JCQkJNjIyNSBSdW5uaW5nIFJpZGdlIFJvYWQKLQkJCQlOb3J0aCBTeXJhY3VzZSBOWSAxMzIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItRjcgICAoaGV4KQkJQ29uY2VwdHJvbmljCi0wMDIyRjcgICAgIChiYXNlIDE2KQkJQ29uY2VwdHJvbmljCi0JCQkJRGF0YWJhbmt3ZWcgNwotCQkJCUFNRVJTRk9PUlQgdXRyZWNodCAzODIxIEFMCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjItRjggICAoaGV4KQkJUElNQSBFbGVjdHJvbmljIFN5c3RlbXMgTHRkLgotMDAyMkY4ICAgICAoYmFzZSAxNikJCVBJTUEgRWxlY3Ryb25pYyBTeXN0ZW1zIEx0ZC4KLQkJCQk1IEhhdHpvcmVmIFN0LgotCQkJCUhvbG9uICA1ODg1NgotCQkJCUlTUkFFTAotCi0wMC0yMi1GOSAgIChoZXgpCQlQb2xsaW4gRWxlY3Ryb25pYyBHbWJICi0wMDIyRjkgICAgIChiYXNlIDE2KQkJUG9sbGluIEVsZWN0cm9uaWMgR21iSAotCQkJCU1heC1Qb2xsaW4tU3RyLiAxCi0JCQkJUGZvZXJyaW5nICA4NTEwNAotCQkJCUdFUk1BTlkKLQotMDAtMjItRkEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDIyRkEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yMi1GQiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjJGQiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTIyLUZDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIyRkMgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIyLUZEICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIyRkQgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIyLUZFICAgKGhleCkJCU1pY3JvcHJvY2Vzc29yIERlc2lnbnMgSW5jCi0wMDIyRkUgICAgIChiYXNlIDE2KQkJTWljcm9wcm9jZXNzb3IgRGVzaWducyBJbmMKLQkJCQk2NSBMb25nbWVhZG93IERyaXZlCi0JCQkJUE8gQm94IDE2MAotCQkJCVNoZWxidXJuZSBWZXJtb250IDA1NDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1GRiAgIChoZXgpCQlOSVZJUyBMTEMKLTAwMjJGRiAgICAgKGJhc2UgMTYpCQlOSVZJUyBMTEMKLQkJCQkxMDAwIENpcmNsZSA3NQotCQkJCVN1aXRlIDMwMAotCQkJCUF0bGFudGEgR0EgMzAzMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTAwICAgKGhleCkJCUNheWVlIENvbXB1dGVyIEx0ZC4KLTAwMjMwMCAgICAgKGJhc2UgMTYpCQlDYXllZSBDb21wdXRlciBMdGQuCi0JCQkJVW5pdHMgMTAwMi0xMDAzLCAxMC9GLCBKb2luLUluIEhhbmcgU2luZyBDZW50cmUKLQkJCQk3MS03NSBDb250YWluZXIgUG9ydCBSb2FkCi0JCQkJS3dhaSBDaHVuZyBOLlQgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTIzLTAxICAgKGhleCkJCVdpdHJvbiBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMjMwMSAgICAgKGJhc2UgMTYpCQlXaXRyb24gVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJNi9GLCBYaW4gUnVpIEJ1aWxkaW5nLCAzMiBUYW8gSHVhIFJvYWQsIEZ1dGlhbiBGcmVlIFRyYWRlIFpvbmUsCi0JCQkJU2hlbnpoZW4gODYKLQkJCQlDSElOQQotCi0wMC0yMy0wMiAgIChoZXgpCQlDb2JhbHQgRGlnaXRhbCwgSW5jLgotMDAyMzAyICAgICAoYmFzZSAxNikJCUNvYmFsdCBEaWdpdGFsLCBJbmMuCi0JCQkJMjQwNiBFYXN0IFVuaXZlcnNpdHkgQXZlbnVlCi0JCQkJVXJiYW5hIElMIDYxODAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0wMyAgIChoZXgpCQlMSVRFLU9OIElUIENvcnBvcmF0aW9uCi0wMDIzMDMgICAgIChiYXNlIDE2KQkJTElURS1PTiBJVCBDb3Jwb3JhdGlvbgotCQkJCTE0RiwgTm8uIDM5MiwgUnVleSBLdWFuZyBSb2FkLCBOZWlodQotCQkJCVRhaXBlaSBDaXR5ICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTA0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjMwNCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0wNSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzMDUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMDYgICAoaGV4KQkJQUxQUyBFbGVjdHJpYyBDby4sIEx0ZAotMDAyMzA2ICAgICAoYmFzZSAxNikJCUFMUFMgRWxlY3RyaWMgQ28uLCBMdGQKLQkJCQkxLTItMSwgT2tpbm91Y2hpCi0JCQkJU29tYSBjaXR5IEZ1a3VzaGltYSA5NzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTIzLTA3ICAgKGhleCkJCUZVVFVSRSBJTk5PVkFUSU9OIFRFQ0ggQ08uLExURAotMDAyMzA3ICAgICAoYmFzZSAxNikJCUZVVFVSRSBJTk5PVkFUSU9OIFRFQ0ggQ08uLExURAotCQkJCTMxMiAzLURPTkcsIEdXQU5HTVlVTkcgSU5EVVNUUklBTCBDT01QTEVYIDIwMQotCQkJCUhBQU4tRE9ORwotCQkJCUdXQU5HTVlVTkcgR1lVTkdHSSA0MjMwNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtMDggICAoaGV4KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAyMzA4ICAgICAoYmFzZSAxNikJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk0Ri4sIE5vLiA5ICwgUGFyayBBdmVudWUgSUksCi0JCQkJU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSBUYWl3YW4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy0wOSAgIChoZXgpCQlKYW5hbSBUZWNobm9sb2dpZXMgTExDCi0wMDIzMDkgICAgIChiYXNlIDE2KQkJSmFuYW0gVGVjaG5vbG9naWVzIExMQwotCQkJCTEwMCBDcm9zc3dheXMgUGFyayBXZXN0Ci0JCQkJU3VpdGUgMTA1Ci0JCQkJV29vZGJ1cnkgTlkgMTE3OTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTBBICAgKGhleCkJCUFSQlVSRyBHbWJIICYgQ28gS0cKLTAwMjMwQSAgICAgKGJhc2UgMTYpCQlBUkJVUkcgR21iSCAmIENvIEtHCi0JCQkJQXJ0aHVyIEhlaGwgU3RyYXNzZQotCQkJCUxvc3NidXJnICBELTcyMjkwCi0JCQkJR0VSTUFOWQotCi0wMC0yMy0wQiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMzBCICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMEMgICAoaGV4KQkJQ0xPVkVSIEVMRUNUUk9OSUNTIENPLixMVEQuCi0wMDIzMEMgICAgIChiYXNlIDE2KQkJQ0xPVkVSIEVMRUNUUk9OSUNTIENPLixMVEQuCi0JCQkJQUtFTk8gMzA2LTEKLQkJCQlPQkFUQSBDaHlvdQotCQkJCUlTRSBDaXR5IE1JRSBQcmVmZWN0dXJlIDUxOS0wNTAxCi0JCQkJSkFQQU4KLQotMDAtMjMtMEQgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDIzMEQgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJMjIyMSBMYWtlc2lkZSBCbHZkCi0JCQkJUmljaGFyZHNvbiBUZXhhcyA3NTA4Mi00Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0wRSAgIChoZXgpCQlHb3JiYSBBRwotMDAyMzBFICAgICAoYmFzZSAxNikJCUdvcmJhIEFHCi0JCQkJU2FuZGFja2Vyc3RyYXNzZQotCQkJCU9iZXJidXJlbiBTRyBDSCAtIDkyNDUKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0yMy0wRiAgIChoZXgpCQlIaXJzY2ggRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLTAwMjMwRiAgICAgKGJhc2UgMTYpCQlIaXJzY2ggRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLQkJCQkxOTAwIENhcm5lZ2llLCBCbGRnIEIKLQkJCQlTYW50YSBBbmEgQ0EgOTI3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTEwICAgKGhleCkJCUxOQyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyMzEwICAgICAoYmFzZSAxNikJCUxOQyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTE5RiwgTm8uIDc4LTIsIFNlYy4gMywgVGFpY2h1bmcgS2FuZyBSZC4KLQkJCQlUYWljaHVuZyAgNDA3NjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTExICAgKGhleCkJCUdsb3Njb20gQ28uLCBMdGQuCi0wMDIzMTEgICAgIChiYXNlIDE2KQkJR2xvc2NvbSBDby4sIEx0ZC4KLQkJCQkjNTA3IENoYW5naHl1biBCbGRnLgotCQkJCTk2MC0xIEhvZ3llLWRvbmcKLQkJCQlBbnlhbmcgQ2l0eSBLeXVuZ2dvLWRvIDQzMS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtMTIgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyMzEyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTEzICAgKGhleCkJCVFvb2wgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMjMxMyAgICAgKGJhc2UgMTYpCQlRb29sIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJR290YW5kYSBOby4zIEhhbmF0YW5pIEJsZGcgM0YsCi0JCQkJNS0yOC05LEhpZ2FzaGktZ290YW5kYQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTIzLTE0ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyMzE0ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjMtMTUgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDIzMTUgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yMy0xNiAgIChoZXgpCQlLSVNBTiBFTEVDVFJPTklDUyBDTwotMDAyMzE2ICAgICAoYmFzZSAxNikJCUtJU0FOIEVMRUNUUk9OSUNTIENPCi0JCQkJMzE3LTE1Ci0JCQkJU1VORyBTVSAyR0EgM0RPTkcKLQkJCQlTRU9VTkctRE9ORyBHVSBTRU9VTCAxMzMtMTIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTE3ICAgKGhleCkJCUxhc2VyY3JhZnQgSW5jCi0wMDIzMTcgICAgIChiYXNlIDE2KQkJTGFzZXJjcmFmdCBJbmMKLQkJCQkxNDUwIE9ha2Jyb29rIERyaXZlCi0JCQkJU3VpdGUgOTAwCi0JCQkJTm9yY3Jvc3MgR0EgMzAwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTE4ICAgKGhleCkJCVRvc2hpYmEKLTAwMjMxOCAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LFN1ZWhpcm8tQ2hvCi0JCQkJT21lIFRva3lvIDE5ODg3MTAKLQkJCQlKQVBBTgotCi0wMC0yMy0xOSAgIChoZXgpCQlTaWVsb3ggTExDCi0wMDIzMTkgICAgIChiYXNlIDE2KQkJU2llbG94IExMQwotCQkJCTE3MCBFYXN0IE5pbnRoIEF2ZS4KLQkJCQlSdW5uZW1lZGUgTkogMDgwNzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTFBICAgKGhleCkJCUlURiBDby4sIEx0ZC4KLTAwMjMxQSAgICAgKGJhc2UgMTYpCQlJVEYgQ28uLCBMdGQuCi0JCQkJMi0yLTExIE5pc2hpa2ktY2hvCi0JCQkJVGFjaGlrYXdhLXNoaSBUb2t5byAxOTAtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTIzLTFCICAgKGhleCkJCURhbmFoZXIgTW90aW9uIC0gS29sbG1vcmdlbgotMDAyMzFCICAgICAoYmFzZSAxNikJCURhbmFoZXIgTW90aW9uIC0gS29sbG1vcmdlbgotCQkJCTIwMSBXLiBSb2NrIFJvYWQKLQkJCQlSYWRmb3JkIFZBIDI0MTQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0xQyAgIChoZXgpCQlGb3VyaWVyIFN5c3RlbXMgTHRkLgotMDAyMzFDICAgICAoYmFzZSAxNikJCUZvdXJpZXIgU3lzdGVtcyBMdGQuCi0JCQkJMTYgSGFtZWxhY2hhIFN0Ci0JCQkJUm9zaCBIYWF5aW4gIDQ4MDkxCi0JCQkJSVNSQUVMCi0KLTAwLTIzLTFEICAgKGhleCkJCURlbHRhY29tIEVsZWN0cm9uaWNzIEx0ZAotMDAyMzFEICAgICAoYmFzZSAxNikJCURlbHRhY29tIEVsZWN0cm9uaWNzIEx0ZAotCQkJCTJGLFpJVCw3a20gVHphcmlncmFkc2tvIFNob3NlCi0JCQkJU29maWEgU29maWEtZ3JhZCAxNzg0Ci0JCQkJQlVMR0FSSUEKLQotMDAtMjMtMUUgICAoaGV4KQkJQ2V6emVyIE11bHRpbWVkaWEgVGVjaG5vbG9naWVzCi0wMDIzMUUgICAgIChiYXNlIDE2KQkJQ2V6emVyIE11bHRpbWVkaWEgVGVjaG5vbG9naWVzCi0JCQkJUGVwaW5pZXJlIGQnZW50cmVwcmlzZXMgQ1JFQVRJQwotCQkJCTExNSBydWUgQ2xhdWRlIENoYXBwZQotCQkJCVBsb3V6YW5lICAyOTI4MAotCQkJCUZSQU5DRQotCi0wMC0yMy0xRiAgIChoZXgpCQlHdWFuZ2RhIEVsZWN0cm9uaWMgJiBUZWxlY29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLiwgTHRkLgotMDAyMzFGICAgICAoYmFzZSAxNikJCUd1YW5nZGEgRWxlY3Ryb25pYyAmIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi0JCQkJIzggR2FvcGVuZ2RvbmcgUm9hZCwgR2FveGluIERpc3RyaWN0Ci0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLTAwLTIzLTIwICAgKGhleCkJCU5pY2lyYSBOZXR3b3JrcwotMDAyMzIwICAgICAoYmFzZSAxNikJCU5pY2lyYSBOZXR3b3JrcwotCQkJCTM2MDAgVy4gQmF5c2hvcmUgUmQuLCAKLQkJCQlTdWl0ZSAyMDUKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTIxICAgKGhleCkJCUF2aXRlY2ggSW50ZXJuYXRpb25hbCBDb3JwCi0wMDIzMjEgICAgIChiYXNlIDE2KQkJQXZpdGVjaCBJbnRlcm5hdGlvbmFsIENvcnAKLQkJCQkxNTMzMyBORSA5MHRoIFN0cmVldAotCQkJCVJlZG1vbmQgV0EgOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTIyICAgKGhleCkJCUtJU1MgVGVrbmljYWwgU29sdXRpb25zLCBJbmMuCi0wMDIzMjIgICAgIChiYXNlIDE2KQkJS0lTUyBUZWtuaWNhbCBTb2x1dGlvbnMsIEluYy4KLQkJCQkxNTgzIFMuIE5hdmFqbyBXYXkKLQkJCQlDaGFuZGxlciBBcml6b25hIDg1Mjg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0yMyAgIChoZXgpCQlaeWxpbiBBUwotMDAyMzIzICAgICAoYmFzZSAxNikJCVp5bGluIEFTCi0JCQkJQXVnbGVuZHNkYWxlbiA3OAotCQkJCVN0YXZhbmdlciAgNDAxNwotCQkJCU5PUldBWQotCi0wMC0yMy0yNCAgIChoZXgpCQlHLVBSTyBDT01QVVRFUgotMDAyMzI0ICAgICAoYmFzZSAxNikJCUctUFJPIENPTVBVVEVSCi0JCQkJZmlyc3QgYXJyYW5nZSBDLCBZaW5nSHUgaW5kdXN0cmlhbCBlc3RhdGUKLQkJCQlRaW5nWGkgQ291bnRyeQotCQkJCURvbmdHdWFuIENpdHkgR3VhbmdEb25nIFByb3ZpbmNlIDUyMzY0OAotCQkJCUNISU5BCi0KLTAwLTIzLTI1ICAgKGhleCkJCUlPTEFOIEhvbGRpbmcKLTAwMjMyNSAgICAgKGJhc2UgMTYpCQlJT0xBTiBIb2xkaW5nCi0JCQkJTW9uIFBsYWlzaXIgMjYKLQkJCQlFdHRlbiBMZXVyICA0ODc5QU4KLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMy0yNiAgIChoZXgpCQlGdWppdHN1IExpbWl0ZWQKLTAwMjMyNiAgICAgKGJhc2UgMTYpCQlGdWppdHN1IExpbWl0ZWQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiwKLQkJCQk0MDMsIEtvc3VnaS1jaG8gMS1jaG9tZSxOYWthaGFyYS1rdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMS0wMDYzCi0JCQkJSkFQQU4KLQotMDAtMjMtMjcgICAoaGV4KQkJU2hvdXlvIEVsZWN0cm9uaWNzIENPLiwgTFRECi0wMDIzMjcgICAgIChiYXNlIDE2KQkJU2hvdXlvIEVsZWN0cm9uaWNzIENPLiwgTFRECi0JCQkJNEYuLCBOby44LCBMYW5lIDM0NSwgWWFuZyBLdW5nIFN0LgotCQkJCVRhaXBlaSAgMTE0OTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTI4ICAgKGhleCkJCUFMQ09OIFRFTEVDT01NVU5JQ0FUSU9OUyBDTy4sIExURC4KLTAwMjMyOCAgICAgKGJhc2UgMTYpCQlBTENPTiBURUxFQ09NTVVOSUNBVElPTlMgQ08uLCBMVEQuCi0JCQkJMm5kIEZMLCBOTyA0ODAtNSwgU0VDLiA2LCBZRU4tUElORyBOLiBSRC4sCi0JCQkJU0hJSC1MSU4KLQkJCQlUQUlQRUkgVEFJV0FOIDExMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtMjkgICAoaGV4KQkJRERSZHJpdmUgTExDCi0wMDIzMjkgICAgIChiYXNlIDE2KQkJRERSZHJpdmUgTExDCi0JCQkJMTEwNzYgRWxhdGkgU3QKLQkJCQlOb3J0aGdsZW5uIENPIDgwMjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0yQSAgIChoZXgpCQllb25hcyBJVC1CZXJhdHVuZyB1bmQgLUVudHdpY2tsdW5nIEdtYkgKLTAwMjMyQSAgICAgKGJhc2UgMTYpCQllb25hcyBJVC1CZXJhdHVuZyB1bmQgLUVudHdpY2tsdW5nIEdtYkgKLQkJCQlHcmVpZmVuaGFnZW5lciBTdHIuIDU0Ci0JCQkJQmVybGluICAxMDQzNwotCQkJCUdFUk1BTlkKLQotMDAtMjMtMkIgICAoaGV4KQkJSVJEIEEvUwotMDAyMzJCICAgICAoYmFzZSAxNikJCUlSRCBBL1MKLQkJCQlLdWxsaW5nZ2FkZSAzMQotCQkJCVN2ZW5kYm9yZyBGeW4gNTcwMAotCQkJCURFTk1BUksKLQotMDAtMjMtMkMgICAoaGV4KQkJU2VudGljYXJlCi0wMDIzMkMgICAgIChiYXNlIDE2KQkJU2VudGljYXJlCi0JCQkJMTYxIFdvcmNlc3RlciBSZAotCQkJCVN1aXRlIDMwNQotCQkJCUZyYW1pbmdoYW0gTUEgMDE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTJEICAgKGhleCkJCVNhbmRGb3JjZQotMDAyMzJEICAgICAoYmFzZSAxNikJCVNhbmRGb3JjZQotCQkJCTEyOTUwIFNhcmF0b2dhIEF2ZS4KLQkJCQlTYXJhdG9nYSBDYWxpZm9ybmlhIDk1MDcwLTQ2NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTJFICAgKGhleCkJCUtlZGFoIEVsZWN0cm9uaWNzIEVuZ2luZWVyaW5nLCBMTEMKLTAwMjMyRSAgICAgKGJhc2UgMTYpCQlLZWRhaCBFbGVjdHJvbmljcyBFbmdpbmVlcmluZywgTExDCi0JCQkJWmVsZW5vZ3JhZCwgNDQ1Ci0JCQkJTW9zY293ICAxMjQ0OTgKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjMtMkYgICAoaGV4KQkJQWR2YW5jZWQgQ2FyZCBTeXN0ZW1zIEx0ZC4KLTAwMjMyRiAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBDYXJkIFN5c3RlbXMgTHRkLgotCQkJCVVuaXQgMjAxMC0xMywgQ2hldmFsaWVyIENvbW1lcmNpYWwgQ2VudHJlLAotCQkJCTggV2FuZyBIb2kgUm9hZCwKLQkJCQlLb3dsb29uIEJheSwgU0FSIAotCQkJCUhPTkcgS09ORwotCi0wMC0yMy0zMCAgIChoZXgpCQlESVpJUElBLCBJTkMuCi0wMDIzMzAgICAgIChiYXNlIDE2KQkJRElaSVBJQSwgSU5DLgotCQkJCTE1dGggRmxvb3IsIEVhc3QgV2luZywgSVQgVmVudHVyZSBUb3dlcgotCQkJCTc4IEdhcmFrLWRvbmcsIFNvbmdwYS1HdSwKLQkJCQlTZW91bCAgMTM4MTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTMxICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyMzMxICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjMtMzIgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyMzMyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTMzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjMzMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0zNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzMzQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMzUgICAoaGV4KQkJTGlua2ZsZXggQ28uLEx0ZAotMDAyMzM1ICAgICAoYmFzZSAxNikJCUxpbmtmbGV4IENvLixMdGQKLQkJCQk1Ri4gTWluIFlvdW5nIEJsZGcuIDE3NS0yCi0JCQkJTm9uaHllb24tRG9uZywgR2FuZ25hbS1HdQotCQkJCVNlb3VsICAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTM2ICAgKGhleCkJCU1FVEVMIHMuci5vLgotMDAyMzM2ICAgICAoYmFzZSAxNikJCU1FVEVMIHMuci5vLgotCQkJCVZlbGthIEplc2VuaWNlIDEyNQotCQkJCVZlbGthIEplc2VuaWNlIE5hY2hvZCA1NTIyNAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTIzLTM3ICAgKGhleCkJCUdsb2JhbCBTdGFyIFNvbHV0aW9ucyBVTEMKLTAwMjMzNyAgICAgKGJhc2UgMTYpCQlHbG9iYWwgU3RhciBTb2x1dGlvbnMgVUxDCi0JCQkJNDYwMCBKYWNvbWJzIFJvYWQKLQkJCQlSaWNobW9uZCBCQyBWNlYgM0IxCi0JCQkJQ0FOQURBCi0KLTAwLTIzLTM4ICAgKGhleCkJCU9KLUVsZWN0cm9uaWNzIEEvUwotMDAyMzM4ICAgICAoYmFzZSAxNikJCU9KLUVsZWN0cm9uaWNzIEEvUwotCQkJCVN0ZW5hZ2VyIDEzQgotCQkJCVM/bmRlcmJvcmcgIDY0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTIzLTM5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTAwMjMzOSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTNBICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAyMzNBICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy0zQiAgIChoZXgpCQlDLU1hdGljIFN5c3RlbXMgTHRkCi0wMDIzM0IgICAgIChiYXNlIDE2KQkJQy1NYXRpYyBTeXN0ZW1zIEx0ZAotCQkJCVdhcnJlbiBDb3VydAotCQkJCVBhcmsgUm9hZAotCQkJCUNyb3dib3JvdWdoIEVhc3QgU3Vzc2V4IFRONiAyUVgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMy0zQyAgIChoZXgpCQlBbGZsZXgKLTAwMjMzQyAgICAgKGJhc2UgMTYpCQlBbGZsZXgKLQkJCQlCbGF1dy1yb29kbGFhbiAzMDAKLQkJCQlaT0VURVJNRUVSICAyNzE4IFNLCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjMtM0QgICAoaGV4KQkJbm92ZXJvIEdtYkgKLTAwMjMzRCAgICAgKGJhc2UgMTYpCQlub3Zlcm8gR21iSAotCQkJCVJlbnNpbmdzdHJhc3NlIDE1Ci0JCQkJQm9jaHVtICA0NDgwNwotCQkJCUdFUk1BTlkKLQotMDAtMjMtM0UgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQtSVBECi0wMDIzM0UgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQtSVBECi0JCQkJNzAxIEUuIE1pZGRsZWZpZWxkIFJkLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTNGICAgKGhleCkJCVB1cmVjaG9pY2UgSW5jCi0wMDIzM0YgICAgIChiYXNlIDE2KQkJUHVyZWNob2ljZSBJbmMKLQkJCQkxMTQ4MSBSdXBwIERyaXZlCi0JCQkJQnVybnN2aWxsZSBNTiA1NTMzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNDAgICAoaGV4KQkJTWlYIFRlbGVtYXRpY3MKLTAwMjM0MCAgICAgKGJhc2UgMTYpCQlNaVggVGVsZW1hdGljcwotCQkJCUJsYWF1d2tsaXAgT2ZmaWNlIFBhcmsgMgotCQkJCUNuciBTdHJhbmQgJiBXZWJlcnN2YWxsZWkgUmQKLQkJCQlTdGVsbGVuYm9zY2ggV2VzdGVybiBDYXBlIDc2MDAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMjMtNDEgICAoaGV4KQkJU2llbWVucyBBRwotMDAyMzQxICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQUcKLQkJCQlJbmR1c3RyeSBTZWN0b3IsIEJ1aWxkaW5nIFRlY2hub2xvZ2llcyBEaXZpc2lvbgotCQkJCUkgQlQgREUgU1AsIFNpZW1lbnNhbGxlZSA4NAotCQkJCUthcmxzcnVoZSBEZXV0c2NobGFuZCBELTc2MTg3Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy00MiAgIChoZXgpCQlDb2ZmZWUgRXF1aXBtZW50IENvbXBhbnkKLTAwMjM0MiAgICAgKGJhc2UgMTYpCQlDb2ZmZWUgRXF1aXBtZW50IENvbXBhbnkKLQkJCQk0MjE2IDZ0aCBBdmUgTlcKLQkJCQlTZWF0dGxlIFdBIDk4MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy00MyAgIChoZXgpCQlURU0gQUcKLTAwMjM0MyAgICAgKGJhc2UgMTYpCQlURU0gQUcKLQkJCQlUcmlzdHN0cmFzc2UgOAotCQkJCUNodXIgIDcwMDcKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0yMy00NCAgIChoZXgpCQlPYmplY3RpdmUgSW50ZXJmYWNlIFN5c3RlbXMKLTAwMjM0NCAgICAgKGJhc2UgMTYpCQlPYmplY3RpdmUgSW50ZXJmYWNlIFN5c3RlbXMKLQkJCQkxMzg3MyBQYXJrIENlbnRlciBSZAotCQkJCVN1aXRlIDM2MAotCQkJCUhlcm5kb24gVkEgMjAxNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTQ1ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDIzNDUgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa2FuZSAyMjE4OAotCQkJCVNXRURFTgotCi0wMC0yMy00NiAgIChoZXgpCQlWZXN0YWMKLTAwMjM0NiAgICAgKGJhc2UgMTYpCQlWZXN0YWMKLQkJCQlQLk8uIEJveCA3MzU4Ci0JCQkJU2hyZXdzYnVyeSBOSiAwNzcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNDcgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotMDAyMzQ3ICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkCi0JCQkJUm9zZXZpbGxlIENhbGlmb3JuaWEgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTQ4ICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwMjM0OCAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMTQgUnVlIFBhdWwgRGF1dGllcgotCQkJCVZlbGl6eSAgNzg0NTcKLQkJCQlGUkFOQ0UKLQotMDAtMjMtNDkgICAoaGV4KQkJSGVsbWhvbHR6IENlbnRyZSBCZXJsaW4gZm9yIE1hdGVyaWFsIGFuZCBFbmVyZ3kKLTAwMjM0OSAgICAgKGJhc2UgMTYpCQlIZWxtaG9sdHogQ2VudHJlIEJlcmxpbiBmb3IgTWF0ZXJpYWwgYW5kIEVuZXJneQotCQkJCURlcGFydG1lbnQgRk1ECi0JCQkJR2xpZW5pY2tlciBTdHJhc3NlIDEwMAotCQkJCUJlcmxpbiAgMTQxMDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTRBICAgKGhleCkJCVBSSVZBVEUKLTAwMjM0QSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMjMtNEIgICAoaGV4KQkJSW55dWFuIFRlY2hub2xvZ3kgSW5jLgotMDAyMzRCICAgICAoYmFzZSAxNikJCUlueXVhbiBUZWNobm9sb2d5IEluYy4KLQkJCQlOby4gMywgU2luZ3llIFN0LiwKLQkJCQlHdWVpc2hhbiBUb3duc2hpcAotCQkJCVRhb3l1YW4gQ291bnR5ICAzMzM0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtNEMgICAoaGV4KQkJS1RDIEFCCi0wMDIzNEMgICAgIChiYXNlIDE2KQkJS1RDIEFCCi0JCQkJRiBPIFBldGVyc29ucyBnYXRhIDYKLQkJCQlWYXN0cmEgRnJvbHVuZGEgR290aGVuYnVyZyBTRS00MjEzMQotCQkJCVNXRURFTgotCi0wMC0yMy00RCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAyMzREICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNjYsIENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gVGFpd2FuIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtNEUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMjM0RSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtY2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gVGFpd2FuIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtNEYgICAoaGV4KQkJTHVtaW5vdXMgUG93ZXIgVGVjaG5vbG9naWVzIFB2dC4gTHRkLgotMDAyMzRGICAgICAoYmFzZSAxNikJCUx1bWlub3VzIFBvd2VyIFRlY2hub2xvZ2llcyBQdnQuIEx0ZC4KLQkJCQlDOC1DOSwgQ29tbXVuaXR5IENlbnRlciwKLQkJCQlCZWhpbmQgSmFuYWsgQ2luZW1hLCBKYW5ha3B1cmksCi0JCQkJTmV3IERlbGhpICAxMTAwNTgKLQkJCQlJTkRJQQotCi0wMC0yMy01MCAgIChoZXgpCQlMeW5UZWMKLTAwMjM1MCAgICAgKGJhc2UgMTYpCQlMeW5UZWMKLQkJCQk4NDAxIE1lbHJvc2UgRHJpdmUKLQkJCQlMZW5leGEgS1MgNjYyMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTUxICAgKGhleCkJCTJXaXJlCi0wMDIzNTEgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy01MiAgIChoZXgpCQlEQVRBU0VOU09SIFMucC5BLgotMDAyMzUyICAgICAoYmFzZSAxNikJCURBVEFTRU5TT1IgUy5wLkEuCi0JCQkJVmlhIExhdmlubywgMjY1Ci0JCQkJTW9udGUgU2FuIFBpZXRybyAoQk8pICA0MDA1MAotCQkJCUlUQUxZCi0KLTAwLTIzLTUzICAgKGhleCkJCUYgRSBUIEVsZXR0cm9uaWNhIHNuYwotMDAyMzUzICAgICAoYmFzZSAxNikJCUYgRSBUIEVsZXR0cm9uaWNhIHNuYwotCQkJCVZpYSBBLk1hbnpvbmkgMTQvYQotCQkJCUNQMzAzIFBQVFQgUG9nZ2lib25zaSBDZW50cm8KLQkJCQlQb2dnaWJvbnNpIFNpZW5hIDUzMDM2Ci0JCQkJSVRBTFkKLQotMDAtMjMtNTQgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDIzNTQgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwKLQkJCQlUYWlwZWkgVGFpd2FuIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtNTUgICAoaGV4KQkJS2luY28gQXV0b21hdGlvbihTaGFuZ2hhaSkgTHRkLgotMDAyMzU1ICAgICAoYmFzZSAxNikJCUtpbmNvIEF1dG9tYXRpb24oU2hhbmdoYWkpIEx0ZC4KLQkJCQlCbGRnMSwgTm8uMTM4NywgWmhhbmdkb25nIFJvYWQsCi0JCQkJWmhhbmdqaWFuZyBIaS10ZWNoIFBhcmssIFB1ZG9uZy4KLQkJCQlTaGFuZ2hhaSAyMDEyMDMKLQkJCQlDSElOQQotCi0wMC0yMy01NiAgIChoZXgpCQlQYWNrZXQgRm9yZW5zaWNzIExMQwotMDAyMzU2ICAgICAoYmFzZSAxNikJCVBhY2tldCBGb3JlbnNpY3MgTExDCi0JCQkJNDIwIFMgU21pdGggUmQKLQkJCQlUZW1wZSBBWiA4NTI4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNTcgICAoaGV4KQkJUGl0cm9ub3QgVGVjaG5vbG9naWVzIGFuZCBFbmdpbmVlcmluZyBQLlQuRS4gTHRkLgotMDAyMzU3ICAgICAoYmFzZSAxNikJCVBpdHJvbm90IFRlY2hub2xvZ2llcyBhbmQgRW5naW5lZXJpbmcgUC5ULkUuIEx0ZC4KLQkJCQk4IEhhdHV0IHN0Ci0JCQkJUGFyZGVzaXlhICA0MjgxNQotCQkJCUlTUkFFTAotCi0wMC0yMy01OCAgIChoZXgpCQlTWVNURUwgU0EKLTAwMjM1OCAgICAgKGJhc2UgMTYpCQlTWVNURUwgU0EKLQkJCQlaSSBERSBCRUxMRSBBSVJFCi0JCQkJQlAgMzEKLQkJCQlBWVRSRSAgMTc0NDAKLQkJCQlGUkFOQ0UKLQotMDAtMjMtNTkgICAoaGV4KQkJQmVuY2htYXJrIEVsZWN0cm9uaWNzICggVGhhaWxhbmQgKSBQdWJsaWMgQ29tcGFueSBMaW1pdGVkCi0wMDIzNTkgICAgIChiYXNlIDE2KQkJQmVuY2htYXJrIEVsZWN0cm9uaWNzICggVGhhaWxhbmQgKSBQdWJsaWMgQ29tcGFueSBMaW1pdGVkCi0JCQkJOTQgTW9vIDEsIEhpLVRlY2ggSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlCYW5sYW5lCi0JCQkJQmFuZyBQYS1pbiBBeXVkaGF5YSAxMzE2MAotCQkJCVRIQUlMQU5ECi0KLTAwLTIzLTVBICAgKGhleCkJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMdGQuCi0wMDIzNUEgICAgIChiYXNlIDE2KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIEx0ZC4KLQkJCQlOTyAyNSwgVGhlIDNyZCBzdHJlZXQsCi0JCQkJS3VhblNoYW4gRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCUt1YW5TaGFuIFNVWkhPVSAyMTUzMDAKLQkJCQlDSElOQQotCi0wMC0yMy01QiAgIChoZXgpCQlHdWxmc3RyZWFtCi0wMDIzNUIgICAgIChiYXNlIDE2KQkJR3VsZnN0cmVhbQotCQkJCTMyIEx1bW11cyBEcml2ZQotCQkJCVJEQyBMYWIgUi0wOAotCQkJCVNhdmFubmFoIEdBIDMxNDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy01QyAgIChoZXgpCQlBcHJpdXMsIEluYy4KLTAwMjM1QyAgICAgKGJhc2UgMTYpCQlBcHJpdXMsIEluYy4KLQkJCQk0NDAgTi4gV29sZmUgUmQKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTVEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjM1RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy01RSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzNUUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNUYgICAoaGV4KQkJU2lsaWNvbiBNaWNybyBTZW5zb3JzIEdtYkgKLTAwMjM1RiAgICAgKGJhc2UgMTYpCQlTaWxpY29uIE1pY3JvIFNlbnNvcnMgR21iSAotCQkJCUdyZW56c3RyYXNzZSAyOCAvIEdlYmF1ZGUgMzIKLQkJCQlEcmVzZGVuIFNheG9ueSAwMTEwOQotCQkJCUdFUk1BTlkKLQotMDAtMjMtNjAgICAoaGV4KQkJTG9va2l0IFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMjM2MCAgICAgKGJhc2UgMTYpCQlMb29raXQgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCUZMIDggU2Vhc2hvcmUgTWFuc2lvbgotCQkJCUJhbydhbiBDQkQgRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAwCi0JCQkJQ0hJTkEKLQotMDAtMjMtNjEgICAoaGV4KQkJVW5pZ2VuIENvcnBvcmF0aW9uCi0wMDIzNjEgICAgIChiYXNlIDE2KQkJVW5pZ2VuIENvcnBvcmF0aW9uCi0JCQkJNDUzODggV2FybSBTcHJpbmdzIEJsdmQKLQkJCQlGcmVtb250IENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy02MiAgIChoZXgpCQlHb2xkbGluZSBDb250cm9scwotMDAyMzYyICAgICAoYmFzZSAxNikJCUdvbGRsaW5lIENvbnRyb2xzCi0JCQkJNjEgV2hpdGVjYXAgRHIKLQkJCQlOb3J0aCBLaW5nc3Rvd24gUkkgMDI4NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTYzICAgKGhleCkJCVpodWhhaSBSYXlTaGFycCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyMzYzICAgICAoYmFzZSAxNikJCVpodWhhaSBSYXlTaGFycCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLjExOSBvZiBIdWF3ZWkgUm9hZCwgUWlhbnNoYW4gU2NpZW5jZSAmIFRlY2hub2xvZ3kgUGFyaywKLQkJCQlaaHVoYWkgR3Vhbmdkb25nIDUxOTA3MAotCQkJCUNISU5BCi0KLTAwLTIzLTY0ICAgKGhleCkJCVBvd2VyIEluc3RydW1lbnRzIFB0ZSBMdGQKLTAwMjM2NCAgICAgKGJhc2UgMTYpCQlQb3dlciBJbnN0cnVtZW50cyBQdGUgTHRkCi0JCQkJQkxLIDQwIFRPSCBHVUFOIFJEIEVBU1QsICMwMS02MiBFTlRFUlBSSVNFIEhVQgotCQkJCTYwODU4MgotCQkJCVNJTkdBUE9SRQotCi0wMC0yMy02NSAgIChoZXgpCQlFTEtBLUVsZWt0cm9uaWsgR21iSAotMDAyMzY1ICAgICAoYmFzZSAxNikJCUVMS0EtRWxla3Ryb25payBHbWJICi0JCQkJVGFsc3RyYXNzZSAxMDQKLQkJCQlMdWRlbnNjaGVpZCBOUlcgNTg1MTUKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTY2ICAgKGhleCkJCUJlaWppbmcgU2lhc3VuIEVsZWN0cm9uaWMgU3lzdGVtIENvLixMdGQuCi0wMDIzNjYgICAgIChiYXNlIDE2KQkJQmVpamluZyBTaWFzdW4gRWxlY3Ryb25pYyBTeXN0ZW0gQ28uLEx0ZC4KLQkJCQlSbS4xMDE4IEh1YXRpYW4gQmxkZywgTm8uNiBCZWkgWGlhb21hY2hhbmcKLQkJCQlIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDM4Ci0JCQkJQ0hJTkEKLQotMDAtMjMtNjcgICAoaGV4KQkJVW5pQ29udHJvbHMgYS5zLgotMDAyMzY3ICAgICAoYmFzZSAxNikJCVVuaUNvbnRyb2xzIGEucy4KLQkJCQlLcmVuaWNrYSAyMjU3Ci0JCQkJUHJhZ3VlIDEwICAxMDAgMDAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0yMy02OCAgIChoZXgpCQlNb3Rvcm9sYQotMDAyMzY4ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhCi0JCQkJMSBNb3Rvcm9sYSBQbGF6YQotCQkJCUhvbHRzdmlsbGUgTlkgMTE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTY5ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAyMzY5ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNkEgICAoaGV4KQkJQ2xlYXJBY2Nlc3MsIEluYy4KLTAwMjM2QSAgICAgKGJhc2UgMTYpCQlDbGVhckFjY2VzcywgSW5jLgotCQkJCTEzMDEgTkUgMTQ0dGggU3RyZWV0Ci0JCQkJU3VpdGUgMTE5Ci0JCQkJVmFuY291dmVyIFdBIDk4Njg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy02QiAgIChoZXgpCQlYZW1iZWRkZWQsIEluYy4KLTAwMjM2QiAgICAgKGJhc2UgMTYpCQlYZW1iZWRkZWQsIEluYy4KLQkJCQkxMDUwIEhpZ2hsYW5kIERyCi0JCQkJU3VpdGUgRQotCQkJCUFubiBBcmJvciBNSSA0ODEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNkMgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyMzZDICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTZEICAgKGhleCkJCVJlc01lZCBMdGQKLTAwMjM2RCAgICAgKGJhc2UgMTYpCQlSZXNNZWQgTHRkCi0JCQkJMSwgRWxpemFiZXRoIE1hY2FydGh1ciBEcml2ZQotCQkJCUJlbGxhIFZpc3RhIE5TVyAyMTUzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIzLTZFICAgKGhleCkJCUJ1cnN0ZXIgR21iSCAmIENvIEtHCi0wMDIzNkUgICAgIChiYXNlIDE2KQkJQnVyc3RlciBHbWJIICYgQ28gS0cKLQkJCQlUYWxzdHJhc3NlIDEtNQotCQkJCUdlcm5zYmFjaCBCYWRlbi1XdXJ0dGVtYmVyZyA3NjU5MwotCQkJCUdFUk1BTlkKLQotMDAtMjMtNkYgICAoaGV4KQkJREFRIFN5c3RlbQotMDAyMzZGICAgICAoYmFzZSAxNikJCURBUSBTeXN0ZW0KLQkJCQk3MDktMSwgQnVuZGFuZyBUZWNobm8gUGFyayBBLURvbmcsCi0JCQkJWWF0YXAtRG9uZywgQnVuZGFuZy1HdQotCQkJCVN1bmduYW0tU2kgS3l1bmdnaS1EbywgNDYzLTc2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy03MCAgIChoZXgpCQlTbmVsbAotMDAyMzcwICAgICAoYmFzZSAxNikJCVNuZWxsCi0JCQkJSGFydG1hbiBIb3VzZQotCQkJCURhbmVoaWxsCi0JCQkJUmVhZGluZyBCZXJrcyBSRzYgNFBCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjMtNzEgICAoaGV4KQkJU09BTSBTeXN0ZWwKLTAwMjM3MSAgICAgKGJhc2UgMTYpCQlTT0FNIFN5c3RlbAotCQkJCTE4Mi0xMywgRGFlcnVuZyBQb3N0IFRvd2VyIElJLCAxNTA0Ci0JCQkJU2VvdWwgR3Vyby1kb25nLCBHdXJvLWd1IDE1Mi04NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtNzIgICAoaGV4KQkJTU9SRSBTVEFSIElORFVTVFJJQUwgR1JPVVAgTElNSVRFRAotMDAyMzcyICAgICAoYmFzZSAxNikJCU1PUkUgU1RBUiBJTkRVU1RSSUFMIEdST1VQIExJTUlURUQKLQkJCQlSbTEyMjEtMTIyNSwgRjEyIFNhbmdkYSBTY2llbmNlIGFuZCBUZWNobm9sb2d5IEJ1aWxkaW5nICwKLQkJCQlLZWppIFJvYWQgLCBIaS1UZWNoIEluZHVzdHJpYWwgUGFyaywKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjMtNzMgICAoaGV4KQkJR3JpZElyb24gU3lzdGVtcywgSW5jLgotMDAyMzczICAgICAoYmFzZSAxNikJCUdyaWRJcm9uIFN5c3RlbXMsIEluYy4KLQkJCQk3MjYgUGFsb21hciBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTc0ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIzNzQgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy03NSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMzc1ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNzYgICAoaGV4KQkJSFRDIENvcnBvcmF0aW9uCi0wMDIzNzYgICAgIChiYXNlIDE2KQkJSFRDIENvcnBvcmF0aW9uCi0JCQkJTm8uMjMgWGluZ2h1YSBSb2FkCi0JCQkJVGFveXVhbiBDaXR5Ci0JCQkJVGFveXVhbiBDb3VudHkgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtNzcgICAoaGV4KQkJSXNvdGVrIEVsZWN0cm9uaWNzIEx0ZAotMDAyMzc3ICAgICAoYmFzZSAxNikJCUlzb3RlayBFbGVjdHJvbmljcyBMdGQKLQkJCQk5IENsYXl0b24gV29vZCBCYW5rCi0JCQkJV2VzdCBQYXJrIFJpbmcgUm9hZAotCQkJCUxlZWRzICBMUzE2IDZRWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIzLTc4ICAgKGhleCkJCUdOIE5ldGNvbSBBL1MKLTAwMjM3OCAgICAgKGJhc2UgMTYpCQlHTiBOZXRjb20gQS9TCi0JCQkJTGF1dHJ1cGJqZXJnIDcKLQkJCQlQLk8uQm94IDk5Ci0JCQkJQmFsbGVydXAgIERLIC0gMjc1MAotCQkJCURFTk1BUksKLQotMDAtMjMtNzkgICAoaGV4KQkJVW5pb24gQnVzaW5lc3MgTWFjaGluZXMgQ28uIEx0ZC4KLTAwMjM3OSAgICAgKGJhc2UgMTYpCQlVbmlvbiBCdXNpbmVzcyBNYWNoaW5lcyBDby4gTHRkLgotCQkJCVVuaXQgMiwgMi9GLCBCbG9jayBBLCBIb25nIEtvbmcgSW5kdXN0cmlhbCBDZW50cmUsCi0JCQkJNDg5LTQ5MSBDYXN0bGUgUGVhayBSb2FkLAotCQkJCUxhaSBDaGkgS29rIEtvd2xvb24gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTIzLTdBICAgKGhleCkJCVJJTQotMDAyMzdBICAgICAoYmFzZSAxNikJCVJJTQotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi0wMC0yMy03QiAgIChoZXgpCQlXSERJIExMQwotMDAyMzdCICAgICAoYmFzZSAxNikJCVdIREkgTExDCi0JCQkJMjM1MCBNaXNzaW9uIENvbGxlZ2UgQmx2ZC4KLQkJCQlTdWl0ZSA1MDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtN0MgICAoaGV4KQkJTkVPVElPTgotMDAyMzdDICAgICAoYmFzZSAxNikJCU5FT1RJT04KLQkJCQlaSSBsZXMgUGFsdWRzCi0JCQkJMTY1LCBhdmVudWUgZHUgTWFyaW4gQmxhbmMKLQkJCQlBVUJBR05FICBGLTEzNDAwCi0JCQkJRlJBTkNFCi0KLTAwLTIzLTdEICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAyMzdEICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDIKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy03RSAgIChoZXgpCQlFTFNURVIgR01CSAotMDAyMzdFICAgICAoYmFzZSAxNikJCUVMU1RFUiBHTUJICi0JCQkJS1VIQlJVRUNLRU5TVFJBU1NFIDItNAotCQkJCUhBTUVMTiAgMzE3ODUKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTdGICAgKGhleCkJCVBMQU5UUk9OSUNTCi0wMDIzN0YgICAgIChiYXNlIDE2KQkJUExBTlRST05JQ1MKLQkJCQkzNDUgRU5DSU5BTCBTVAotCQkJCVNBTlRBIENSVVogQ0EgOTUwNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTgwICAgKGhleCkJCU5hbm90ZXEKLTAwMjM4MCAgICAgKGJhc2UgMTYpCQlOYW5vdGVxCi0JCQkJIFBPIEJveCA3OTkxCi0JCQkJMSBQaWV0ZXIgU3RyZWV0LCBIaWdodmVsZCBQYXJrCi0JCQkJQ2VudHVyaW9uIEdhdXRlbmcgMDA0NgotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0yMy04MSAgIChoZXgpCQlMZW5nZGEgVGVjaG5vbG9neShYaWFtZW4pIENvLixMdGQuCi0wMDIzODEgICAgIChiYXNlIDE2KQkJTGVuZ2RhIFRlY2hub2xvZ3koWGlhbWVuKSBDby4sTHRkLgotCQkJCTUvRiwgNDcgSGFpamluZyBTb3V0aCAybmQgUm9hZCxYaWFtZW4gRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSwgSGFpY2FuZyBEaXN0cmljdCwKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAyNgotCQkJCUNISU5BCi0KLTAwLTIzLTgyICAgKGhleCkJCUxpaCBSb25nIEVsZWN0cm9uaWMgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLTAwMjM4MiAgICAgKGJhc2UgMTYpCQlMaWggUm9uZyBFbGVjdHJvbmljIEVudGVycHJpc2UgQ28uLCBMdGQuCi0JCQkJTm8uIDIsIExhbmUgMzg3LCBIc2luIFNodSBSZC4KLQkJCQlIc2luIENodWFuZyBDaXR5LCBUYWlwZWkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy04MyAgIChoZXgpCQlJbk1hZ2UgU3lzdGVtcyBJbmMKLTAwMjM4MyAgICAgKGJhc2UgMTYpCQlJbk1hZ2UgU3lzdGVtcyBJbmMKLQkJCQkzMjU1LTEgU2NvdHQgQmx2ZCwgIzEwNAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy04NCAgIChoZXgpCQlHR0ggRW5naW5lZXJpbmcgcy5yLmwuCi0wMDIzODQgICAgIChiYXNlIDE2KQkJR0dIIEVuZ2luZWVyaW5nIHMuci5sLgotCQkJCVZpYSBBZ3VjY2hpIDg0LzIKLQkJCQlCb2xvZ25hICA0MDEzMwotCQkJCUlUQUxZCi0KLTAwLTIzLTg1ICAgKGhleCkJCUFOVElQT0RFCi0wMDIzODUgICAgIChiYXNlIDE2KQkJQU5USVBPREUKLQkJCQk1IFJVRSBERSBET1VBSQotCQkJCVBBUklTIElMRSBERSBGUkFOQ0UgNzUwMDkKLQkJCQlGUkFOQ0UKLQotMDAtMjMtODYgICAoaGV4KQkJVG91ciAmIEFuZGVyc3NvbiBBQgotMDAyMzg2ICAgICAoYmFzZSAxNikJCVRvdXIgJiBBbmRlcnNzb24gQUIKLQkJCQlBbm5lbHVuZAotCQkJCUxqdW5nICA1MjQgODAKLQkJCQlTV0VERU4KLQotMDAtMjMtODcgICAoaGV4KQkJVGhpbmtGbG9vZCwgSW5jLgotMDAyMzg3ICAgICAoYmFzZSAxNikJCVRoaW5rRmxvb2QsIEluYy4KLQkJCQkxMzggQ2xhZmxpbiBTdAotCQkJCUJlbG1vbnQgTUEgMDI0NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTg4ICAgKGhleCkJCVYuVC4gVGVsZW1hdGljYSBTLnAuYS4KLTAwMjM4OCAgICAgKGJhc2UgMTYpCQlWLlQuIFRlbGVtYXRpY2EgUy5wLmEuCi0JCQkJVmlhIEdvcmt5LCAyMQotCQkJCVNhbiBHaXVsaWFubyBNaWxhbmVzZSBNaWxhbm8gMjAwOTgKLQkJCQlJVEFMWQotCi0wMC0yMy04OSAgIChoZXgpCQlIQU5HWkhPVSBIM0MgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAyMzg5ICAgICAoYmFzZSAxNikJCUhBTkdaSE9VIEgzQyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJT3JpZW50YWwgRWxlY3Ryb25pY3MgQmxkZy4sICMyLCBDaHVhbmd5ZSBSb2FkPz9TaGFuZ2RpIEluZm9ybWF0aW9uIEluZHVzdHJ5IEJhc2UsCi0JCQkJSGFpZGlhbiBEaXN0cmljdCwgQmVpamluZywgUC5SLkNoaW5hCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMjMtOEEgICAoaGV4KQkJQ2llbmEgQ29ycG9yYXRpb24KLTAwMjM4QSAgICAgKGJhc2UgMTYpCQlDaWVuYSBDb3Jwb3JhdGlvbgotCQkJCTkyMCBFbGtyaWRnZSBMYW5kaW5nCi0JCQkJTGludGhpY3VtIE1EIDIxMDkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy04QiAgIChoZXgpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotMDAyMzhCICAgICAoYmFzZSAxNikJCVF1YW50YSBDb21wdXRlciBJbmMuCi0JCQkJTk8uIDIxMSwgV0VOIEhXQSAyUkQuLEtVRUkgU0hBTiBIU0lBTkcsIFRBTyBZVUFOIFNISUVOLAotCQkJCVRBSVBFSSBUQUlXQU4gMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy04QyAgIChoZXgpCQlQUklWQVRFCi0wMDIzOEMgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTIzLThEICAgKGhleCkJCVRlY2hubyBEZXNpZ24gQ28uLCBMdGQuCi0wMDIzOEQgICAgIChiYXNlIDE2KQkJVGVjaG5vIERlc2lnbiBDby4sIEx0ZC4KLQkJCQkzMTItMgotCQkJCVRvcmlrbywgTmlzaGloYXJhLW11cmEKLQkJCQlBc28tZ3VuIEt1bWFtb3RvLWtlbiA4NjEtMjQwMQotCQkJCUpBUEFOCi0KLTAwLTIzLThFICAgKGhleCkJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUwotMDAyMzhFICAgICAoYmFzZSAxNikJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUwotCQkJCVZJQUxFIFNBUkNBIDIyMgotCQkJCU1JTEFOTyAgMjAxMjYKLQkJCQlJVEFMWQotCi0wMC0yMy04RiAgIChoZXgpCQlOSURFQyBDT1BBTCBDT1JQT1JBVElPTgotMDAyMzhGICAgICAoYmFzZSAxNikJCU5JREVDIENPUEFMIENPUlBPUkFUSU9OCi0JCQkJMi0xOC0xMCxTSElNVVJBCi0JCQkJSVRBQkFTSEktS1UgVE9LWU8gMTc0LTg1NTAKLQkJCQlKQVBBTgotCi0wMC0yMy05MCAgIChoZXgpCQlBbGdvbHdhcmUgQ29ycG9yYXRpb24KLTAwMjM5MCAgICAgKGJhc2UgMTYpCQlBbGdvbHdhcmUgQ29ycG9yYXRpb24KLQkJCQkxM0YtNSwgTm8uIDc3LCBTZWMuIDEsIFNpbnRhaSA1dGggUmQuLAotCQkJCVNpamhpaCBDaXR5LAotCQkJCVRhaXBlaSBDb3VudHkgVGFpd2FuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtOTEgICAoaGV4KQkJTWF4aWFuCi0wMDIzOTEgICAgIChiYXNlIDE2KQkJTWF4aWFuCi0JCQkJMjF0aCBGbC4gS0lOUyB0b3dlciwgMjUtMQotCQkJCUplb25qYS1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0tY2l0eSBHeWVvbmdnaS1kbyA0NjMtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTkyICAgKGhleCkJCVByb3RldXMgSW5kdXN0cmllcyBJbmMuCi0wMDIzOTIgICAgIChiYXNlIDE2KQkJUHJvdGV1cyBJbmR1c3RyaWVzIEluYy4KLQkJCQkzNDAgUGlvbmVlciBXYXkKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy05MyAgIChoZXgpCQlBSklORVhURUsKLTAwMjM5MyAgICAgKGJhc2UgMTYpCQlBSklORVhURUsKLQkJCQk5LTMsIEhvbGltZG9uZywgRGFsc2VvZ3UKLQkJCQlEYWVndSAgNzA0LTI0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy05NCAgIChoZXgpCQlTYW1qZW9uCi0wMDIzOTQgICAgIChiYXNlIDE2KQkJU2FtamVvbgotCQkJCSMxMzEzLTEgSm9pbC1SaSwgU2FtZG9uZy1NeWV1bixVbGp1LUd1bgotCQkJCVVsc2FuIENpdHkgU291dGggS29yZWEgNjg5LTkzNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy05NSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMzk1ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtOTYgICAoaGV4KQkJQU5ERVMgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDAyMzk2ICAgICAoYmFzZSAxNikJCUFOREVTIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQkyRixOby4gMSwgTGktSHNpbiBGaXJzdCBSb2FkLAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgVGFpd2FuIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtOTcgICAoaGV4KQkJV2VzdGVsbCBUZWNobm9sb2dpZXMgSW5jLgotMDAyMzk3ICAgICAoYmFzZSAxNikJCVdlc3RlbGwgVGVjaG5vbG9naWVzIEluYy4KLQkJCQkxMTg1MiBQcmVzbGV5IENyCi0JCQkJUGxhaW5maWVsZCBJTCA2MDU4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtOTggICAoaGV4KQkJU2t5IENvbnRyb2wKLTAwMjM5OCAgICAgKGJhc2UgMTYpCQlTa3kgQ29udHJvbAotCQkJCXVsLiBTdm9ybm9zdGkgNDEKLQkJCQlCcmF0aXNsYXZhIEJBIDgyIDEwNwotCQkJCVNMT1ZBS0lBCi0KLTAwLTIzLTk5ICAgKGhleCkJCVZEIERpdmlzaW9uLCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLgotMDAyMzk5ICAgICAoYmFzZSAxNikJCVZEIERpdmlzaW9uLCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLgotCQkJCTQxNiwgTWFldGFuLTNkb25nLCB5ZW9uZ3RvbmctZ3UsIFN1d29uLWNpdHkKLQkJCQlLb3JlYQotCQkJCVN1d29uICA0NDMtNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTlBICAgKGhleCkJCUVhc3lEYXRhIFNvZnR3YXJlIEdtYkgKLTAwMjM5QSAgICAgKGJhc2UgMTYpCQlFYXN5RGF0YSBTb2Z0d2FyZSBHbWJICi0JCQkJU3RlaW5iYWNoZXIgU3RyYXNzZSAxNC0yNAotCQkJCUVzY2hib3JuIC8gVHMuIEhlc3NlbiBELTY1NzYwCi0JCQkJR0VSTUFOWQotCi0wMC0yMy05QiAgIChoZXgpCQlFbHN0ZXIgU29sdXRpb25zLCBMTEMKLTAwMjM5QiAgICAgKGJhc2UgMTYpCQlFbHN0ZXIgU29sdXRpb25zLCBMTEMKLQkJCQkyMDggU291dGggUm9nZXJzIExhbmUKLQkJCQlSYWxlaWdoIE5vcnRoIENhcm9saW5hIDI3NjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy05QyAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi0wMDIzOUMgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTlEICAgKGhleCkJCU1hcG93ZXIgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTAwMjM5RCAgICAgKGJhc2UgMTYpCQlNYXBvd2VyIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJTm8uIDUwIE1pbnF1YW4gUm9hZAotCQkJCUx1emh1IFNoaWFuZwotCQkJCVRhb3l1YW4gQ291bnR5ICAzMzg0NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtOUUgICAoaGV4KQkJSmlhbmdzdSBMZW1vdGUgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkCi0wMDIzOUUgICAgIChiYXNlIDE2KQkJSmlhbmdzdSBMZW1vdGUgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkCi0JCQkJTWVuZ2xhbiBJbmR1c3RyaWFsIFBhcmssWXVzaGFuCi0JCQkJQ2hhbmdzaHUgSmlhbmdzdSAyMTU1MDAKLQkJCQlDSElOQQotCi0wMC0yMy05RiAgIChoZXgpCQlJbnN0aXR1dCBmdXIgUHJ1ZnRlY2huaWsKLTAwMjM5RiAgICAgKGJhc2UgMTYpCQlJbnN0aXR1dCBmdXIgUHJ1ZnRlY2huaWsKLQkJCQlTY2h1bHN0ci4gMwotCQkJCVRvZHRlbndlaXMgQmF5ZXJuIDg2NDQ3Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy1BMCAgIChoZXgpCQlIYW5hIENOUyBDby4sIExURC4KLTAwMjNBMCAgICAgKGJhc2UgMTYpCQlIYW5hIENOUyBDby4sIExURC4KLQkJCQlUYWVqYW5nLWRvbmcgMTcyMC01MiBUYWVqYW5nLU5vbmdHb25nLURhbmppCi0JCQkJV29uanUgR2FuZ3dvbi1kbyAyMjAtOTYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUExICAgKGhleCkJCVRyZW5kIEVsZWN0cm9uaWNzIEx0ZAotMDAyM0ExICAgICAoYmFzZSAxNikJCVRyZW5kIEVsZWN0cm9uaWNzIEx0ZAotCQkJCUd1dCBOby4gMzUwCi0JCQkJVmlsbGFnZSAtIEJoYWxnYW9uCi0JCQkJQXVyYW5hZ2FiYWQgTWFoYXJhc2h0cmEgNDMxMjEwCi0JCQkJSU5ESUEKLQotMDAtMjMtQTIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjNBMiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUEzICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIzQTMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1BNCAgIChoZXgpCQlOZXcgQ29uY2VwdHMgRGV2ZWxvcG1lbnQgQ29ycC4KLTAwMjNBNCAgICAgKGJhc2UgMTYpCQlOZXcgQ29uY2VwdHMgRGV2ZWxvcG1lbnQgQ29ycC4KLQkJCQkyNjUwIEJyaWRnZSBMYW5lCi0JCQkJV29vZHN0b2NrIElMIDYwMDk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1BNSAgIChoZXgpCQlTYWdlVFYsIExMQwotMDAyM0E1ICAgICAoYmFzZSAxNikJCVNhZ2VUViwgTExDCi0JCQkJOTgwMCBTLiBMYSBDaWVuZWdhIEJsdmQKLQkJCQlTdWl0ZSA5MDUKLQkJCQlJbmdsZXdvb2QgQ0EgOTAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUE2ICAgKGhleCkJCUUtTW9uCi0wMDIzQTYgICAgIChiYXNlIDE2KQkJRS1Nb24KLQkJCQlPbmUgT3hmb3JkIFZhbGxleSwgU3VpdGUgNDE4Ci0JCQkJTGFuZ2hvcm5lIFBBIDE5MDQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1BNyAgIChoZXgpCQlSZWRwaW5lIFNpZ25hbHMsIEluYy4KLTAwMjNBNyAgICAgKGJhc2UgMTYpCQlSZWRwaW5lIFNpZ25hbHMsIEluYy4KLQkJCQlQbG90IDg3LCBTYWdhciBTb2NpZXR5Ci0JCQkJQmFuamFyYSBIaWxscyBSb2FkIE5vLiAyCi0JCQkJSHlkZXJhYmFkIEFQIDUwMDAzNAotCQkJCUlORElBCi0KLTAwLTIzLUE4ICAgKGhleCkJCU1hcnNoYWxsIEVsZWN0cm9uaWNzCi0wMDIzQTggICAgIChiYXNlIDE2KQkJTWFyc2hhbGwgRWxlY3Ryb25pY3MKLQkJCQkxOTEwIEUgTWFwbGUgQXZlCi0JCQkJRWwgU2VndW5kbyBDYSA5MDI0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQTkgICAoaGV4KQkJQmVpamluZyBEZXRpYW5xdWFuIEVsZWN0cm9tZWNoYW5pY2FsIEVxdWlwbWVudCBDby4sIEx0ZAotMDAyM0E5ICAgICAoYmFzZSAxNikJCUJlaWppbmcgRGV0aWFucXVhbiBFbGVjdHJvbWVjaGFuaWNhbCBFcXVpcG1lbnQgQ28uLCBMdGQKLQkJCQlOby4gMiBDaGFwZW5nIFJvYWQsIEhhaWRpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDkxCi0JCQkJQ0hJTkEKLQotMDAtMjMtQUEgICAoaGV4KQkJSEZSLCBJbmMuCi0wMDIzQUEgICAgIChiYXNlIDE2KQkJSEZSLCBJbmMuCi0JCQkJNUYsIEhhbmEgRVogVG93ZXIKLQkJCQkxNTgsIEd1bWktZG9uZywgQnVuZGFuZy1ndQotCQkJCVN1bmduYW0tc2kgS3l1bmdnaS1kbyA0NjMtODcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUFCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjNBQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1BQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzQUMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQUQgICAoaGV4KQkJWG1hcmsgQ29ycG9yYXRpb24KLTAwMjNBRCAgICAgKGJhc2UgMTYpCQlYbWFyayBDb3Jwb3JhdGlvbgotCQkJCTMwOSBMZWdnZXQgIERyaXZlCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDNBMwotCQkJCUNBTkFEQQotCi0wMC0yMy1BRSAgIChoZXgpCQlEZWxsIEluYy4KLTAwMjNBRSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUFGICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIzQUYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVS5TLiBIaWdod2F5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElsbGlub2lzIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1CMCAgIChoZXgpCQlDT01YSU9OIFRlY2hub2xvZ3kgSW5jLgotMDAyM0IwICAgICAoYmFzZSAxNikJCUNPTVhJT04gVGVjaG5vbG9neSBJbmMuCi0JCQkJMTFGLCBOby4gMTExLCBTZWMgMiwgS2VlbHVuZyBSZC4sIFNpbnlpIERpc3RyaWMKLQkJCQlUYWlwZWkgVGFpd2FuIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtQjEgICAoaGV4KQkJTG9uZ2NoZWVyIFRlY2hub2xvZ3kgKFNpbmdhcG9yZSkgUHRlIEx0ZAotMDAyM0IxICAgICAoYmFzZSAxNikJCUxvbmdjaGVlciBUZWNobm9sb2d5IChTaW5nYXBvcmUpIFB0ZSBMdGQKLQkJCQk0MyBLYWtpIEJ1a2l0IFZpZXcsICAjMDQtMDEgICwKLQkJCQlLYWtpIEJ1a2l0IFRlY2ggUGFyayBJSSwKLQkJCQk0MTU5NzAKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjMtQjIgICAoaGV4KQkJSW50ZWxsaWdlbnQgTWVjaGF0cm9uaWMgU3lzdGVtcyBJbmMKLTAwMjNCMiAgICAgKGJhc2UgMTYpCQlJbnRlbGxpZ2VudCBNZWNoYXRyb25pYyBTeXN0ZW1zIEluYwotCQkJCTE2MSBSb2dlciBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4ySiAxQjEKLQkJCQlDQU5BREEKLQotMDAtMjMtQjMgICAoaGV4KQkJTHl5biBBQgotMDAyM0IzICAgICAoYmFzZSAxNikJCUx5eW4gQUIKLQkJCQlJREVPTiBTY2llbmNlIFBhcmsKLQkJCQlTY2hlZWxldmFnZW4gMTcKLQkJCQlMdW5kICAyMjMgNzAKLQkJCQlTV0VERU4KLQotMDAtMjMtQjQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjNCNCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gdiAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjMtQjUgICAoaGV4KQkJT1JUQU5BIExURAotMDAyM0I1ICAgICAoYmFzZSAxNikJCU9SVEFOQSBMVEQKLQkJCQlPU1RJTSBLT0NBU0lOQU4gU0FOQVlJIFNJVEVTSQotCQkJCTEzLiBTT0tBSyBOTzozNy0zOSBZLiBNQUhBTExFCi0JCQkJQU5LQVJBICAwNjM3MAotCQkJCVRVUktFWQotCi0wMC0yMy1CNiAgIChoZXgpCQlTRUNVUklURSBDT01NVU5JQ0FUSU9OUyAvIEhPTkVZV0VMTAotMDAyM0I2ICAgICAoYmFzZSAxNikJCVNFQ1VSSVRFIENPTU1VTklDQVRJT05TIC8gSE9ORVlXRUxMCi0JCQkJRk9OVCBERSBMJ09STUUKLQkJCQkxMTk4IEFWIERVIERPQ1RFVVIgRE9OQVQKLQkJCQlNT1VHSU5TIEZSQU5DRSAwNjI1MAotCQkJCUZSQU5DRQotCi0wMC0yMy1CNyAgIChoZXgpCQlRLUxpZ2h0IENvLiwgTHRkLgotMDAyM0I3ICAgICAoYmFzZSAxNikJCVEtTGlnaHQgQ28uLCBMdGQuCi0JCQkJMTc4LTEgV29vZ3llLVJpLCBTYW5nZG9uZy1NeXVuLAotCQkJCUdpbWhhZS1TaSBHeXVuZ3NhbmdOYW0tRG8gNjIxLTgxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy1COCAgIChoZXgpCQlTaWNodWFuIEppdXpob3UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLixMdGQKLTAwMjNCOCAgICAgKGJhc2UgMTYpCQlTaWNodWFuIEppdXpob3UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4yNTkgSml1emhvdSBSb2FkLAotCQkJCU1pYW55YW5nIFNpY2h1YW4gNjIxMDAwCi0JCQkJQ0hJTkEKLQotMDAtMjMtQjkgICAoaGV4KQkJRUFEUyBEZXV0c2NobGFuZCBHbWJICi0wMDIzQjkgICAgIChiYXNlIDE2KQkJRUFEUyBEZXV0c2NobGFuZCBHbWJICi0JCQkJV2lsbHkgTWVzc2Vyc2NobWl0dCBTdHIuCi0JCQkJT3R0b2JydW5uIEJhdmFyaWEgODU1MjEKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLUJBICAgKGhleCkJCUNocm9tYQotMDAyM0JBICAgICAoYmFzZSAxNikJCUNocm9tYQotCQkJCTY4LCBId2EtWWEgMXN0IFJkLiwgSHdhLVlhIFRlY2huaWNhbCBQYXJrLAotCQkJCUt1ZWktU2hhbiBIc2lhbmcsCi0JCQkJVGFveXVhbiBIc2llbiBUYWl3YW4gMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy1CQiAgIChoZXgpCQlTY2htaXR0IEluZHVzdHJpZXMKLTAwMjNCQiAgICAgKGJhc2UgMTYpCQlTY2htaXR0IEluZHVzdHJpZXMKLQkJCQkyNzY1IE5XIE5pY29sYWkgU3QKLQkJCQlQb3J0bGFuZCBPcmVnb24gOTcyMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUJDICAgKGhleCkJCUVRLVNZUyBHbWJICi0wMDIzQkMgICAgIChiYXNlIDE2KQkJRVEtU1lTIEdtYkgKLQkJCQlIaW50ZXIgZGVuIEdhcnRlbiAxNWIKLQkJCQlUcmV1ZW5icmlldHplbiBPVCBGZWxkaGVpbSBCcmFuZGVuYnVyZyAxNDkyOQotCQkJCUdFUk1BTlkKLQotMDAtMjMtQkQgICAoaGV4KQkJRGlnaXRhbCBBbGx5LCBJbmMuCi0wMDIzQkQgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBBbGx5LCBJbmMuCi0JCQkJMTIxOCBWYWxsZXkgUmlkZ2UgRHJpdmUKLQkJCQlHcmFpbiBWYWxsZXkgTU8gNjQwMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUJFICAgKGhleCkJCUNpc2NvIFNQVlRHCi0wMDIzQkUgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQkYgICAoaGV4KQkJTWFpbnBpbmUsIEluYy4KLTAwMjNCRiAgICAgKGJhc2UgMTYpCQlNYWlucGluZSwgSW5jLgotCQkJCVBPIEJveCAyNDEKLQkJCQlXaWxzb252aWxsZSBPcmVnb24gOTcwNzAtMDI0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQzAgICAoaGV4KQkJQnJvYWR3YXkgTmV0d29ya3MKLTAwMjNDMCAgICAgKGJhc2UgMTYpCQlCcm9hZHdheSBOZXR3b3JrcwotCQkJCTE3NTQgVGVjaG5vbG9neSBEcml2ZSwgU3VpdGUgMjA4Ci0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQzEgICAoaGV4KQkJU2VjdXJpdGFzIERpcmVjdCBBQgotMDAyM0MxICAgICAoYmFzZSAxNikJCVNlY3VyaXRhcyBEaXJlY3QgQUIKLQkJCQlLYWxlbmRlZ2F0YW4gMjYKLQkJCQlNYWxtbyAgMjAzMjAKLQkJCQlTV0VERU4KLQotMDAtMjMtQzIgICAoaGV4KQkJU0FNU1VORyBFbGVjdHJvbmljcy4gQ28uIExURAotMDAyM0MyICAgICAoYmFzZSAxNikJCVNBTVNVTkcgRWxlY3Ryb25pY3MuIENvLiBMVEQKLQkJCQkxOXRoIEZsLiwgS29yZWEgTGlmZSBCbGRnLiAxMzM4LTEyCi0JCQkJU2VvY2hvIDIgRG9uZyBTZW9jaG8tZ3UgRG9tYXN0aWMgU2FsZXMmIE1hcmtldGluZyBEaXZpc2lvbgotCQkJCVNlb3VsICAxMzctODYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUMzICAgKGhleCkJCUxvZ01lSW4sIEluYy4KLTAwMjNDMyAgICAgKGJhc2UgMTYpCQlMb2dNZUluLCBJbmMuCi0JCQkJNTAwIFVuaWNvcm4gUGFyayBEcml2ZQotCQkJCVdvYnVybiBNYXNzYWNodXNldHRzIDAxODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1DNCAgIChoZXgpCQlMdXggTHVtZW4KLTAwMjNDNCAgICAgKGJhc2UgMTYpCQlMdXggTHVtZW4KLQkJCQlLZXJuZW5lcmdpZXN0cmFhdCA1M0EKLQkJCQlXaWxyaWprIEFudHdlcnAgMjYxMAotCQkJCUJFTEdJVU0KLQotMDAtMjMtQzUgICAoaGV4KQkJUmFkaWF0aW9uIFNhZmV0eSBhbmQgQ29udHJvbCBTZXJ2aWNlcyBJbmMKLTAwMjNDNSAgICAgKGJhc2UgMTYpCQlSYWRpYXRpb24gU2FmZXR5IGFuZCBDb250cm9sIFNlcnZpY2VzIEluYwotCQkJCTkxIFBvcnRzbW91dGggQXZlCi0JCQkJU3RyYXRoYW0gTmV3IEhhbXBzaGlyZSAwMzg4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQzYgICAoaGV4KQkJU01DIENvcnBvcmF0aW9uCi0wMDIzQzYgICAgIChiYXNlIDE2KQkJU01DIENvcnBvcmF0aW9uCi0JCQkJNC0yLTIsIEtpbnVub2RhaQotCQkJCVRzdWt1YmEgTWlyYWktc2hpIEliYXJha2kta2VuIDMwMC0yNDkzCi0JCQkJSkFQQU4KLQotMDAtMjMtQzcgICAoaGV4KQkJQVZTeXN0ZW0KLTAwMjNDNyAgICAgKGJhc2UgMTYpCQlBVlN5c3RlbQotCQkJCXVsLiBGcmllZGxlaW5hIDQKLQkJCQlLcmFrb3cgbWE/b3BvbHNraWUgMzAtMDA5Ci0JCQkJUE9MQU5ECi0KLTAwLTIzLUM4ICAgKGhleCkJCVRFQU0tUgotMDAyM0M4ICAgICAoYmFzZSAxNikJCVRFQU0tUgotCQkJCUdyYWdkYW5za2kgc3RyLjExMSwgQSwgOS1OCi0JCQkJU3QuIFBldGVyc2J1cmcgIDE5NTI2NQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yMy1DOSAgIChoZXgpCQlTaWNodWFuIFRpYW55aSBJbmZvcm1hdGlvbiBTY2llbmNlICYgVGVjaG5vbG9neSBTdG9jayBDTy4sTFRECi0wMDIzQzkgICAgIChiYXNlIDE2KQkJU2ljaHVhbiBUaWFueWkgSW5mb3JtYXRpb24gU2NpZW5jZSAmIFRlY2hub2xvZ3kgU3RvY2sgQ08uLExURAotCQkJCU5vLjEsSG90IFNwcmluZyBIaWdod2F5LERheWkgQ291bnR5Ci0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMTMzMAotCQkJCUNISU5BCi0KLTAwLTIzLUNBICAgKGhleCkJCUJlaGluZCBUaGUgU2V0LCBMTEMKLTAwMjNDQSAgICAgKGJhc2UgMTYpCQlCZWhpbmQgVGhlIFNldCwgTExDCi0JCQkJMjE4NSBLbm9sbHdvb2QgRHIuCi0JCQkJQm91bGRlciBDTyA4MDMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQ0IgICAoaGV4KQkJU2hlbnpoZW4gRnVsbC1qb2luIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAyM0NCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEZ1bGwtam9pbiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQk5L0YsTm8uMSxYaW5ydWkgUm9hZCxIb3VydWkgLFhpeGlhbmcgVG93biwgQmFvJ2FuIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTIzLUNDICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyM0NDICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTIzLUNEICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotMDAyM0NEICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCVNvdXRoIEJ1aWxkaW5nLCBOby41IEtleXVhbiBSb2FkLCBDZW50cmFsIFpvbmUsCi0JCQkJU2NpZW5jZSAmIFRlY2hub2xvZ3kgUGFyayBOYW5zaGFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTIzLUNFICAgKGhleCkJCUtJVEEgREVOU0hJIENPUlBPUkFUSU9OCi0wMDIzQ0UgICAgIChiYXNlIDE2KQkJS0lUQSBERU5TSEkgQ09SUE9SQVRJT04KLQkJCQkxMkYgVE9LWU8tTklTSElJS0VCVUtVUk8gQmlsZy4sCi0JCQkJMS03LTcsIE5pc2hpLWlrZWJ1a3VybwotCQkJCVRvc2hpbWEta3UsIFRva3lvIDE3MS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMjMtQ0YgICAoaGV4KQkJQ1VNTUlOUy1BTExJU09OIENPUlAuCi0wMDIzQ0YgICAgIChiYXNlIDE2KQkJQ1VNTUlOUy1BTExJU09OIENPUlAuCi0JCQkJODkxIEZFRUhBTlZJTExFIERSSVZFCi0JCQkJTVQuIFBST1NQRUNUIElMIDYwMDU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1EMCAgIChoZXgpCQlVbmlsb2MgVVNBIEluYy4KLTAwMjNEMCAgICAgKGJhc2UgMTYpCQlVbmlsb2MgVVNBIEluYy4KLQkJCQkzMzMzIE1pY2hlbHNvbiBEcml2ZQotCQkJCVN1aXRlIDYwMAotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRDEgICAoaGV4KQkJVFJHCi0wMDIzRDEgICAgIChiYXNlIDE2KQkJVFJHCi0JCQkJV2lzbWEgS29zZ29ybyAxM3RoIEZsb29yCi0JCQkJSmwuIE1ILiBUaGFtcmluIDUzCi0JCQkJSmFrYXJ0YSBQdXNhdCAgMTAzNTAKLQkJCQlJTkRPTkVTSUEKLQotMDAtMjMtRDIgICAoaGV4KQkJSW5oYW5kIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDIzRDIgICAgIChiYXNlIDE2KQkJSW5oYW5kIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMzAgV2VzdCBHdWRlIERyaXZlCi0JCQkJU3VpdGUgNTUwCi0JCQkJUm9ja3ZpbGxlIE1hcnlsYW5kIDIwODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1EMyAgIChoZXgpCQlBaXJMaW5rIFdpRmkgTmV0d29ya2luZyBDb3JwLgotMDAyM0QzICAgICAoYmFzZSAxNikJCUFpckxpbmsgV2lGaSBOZXR3b3JraW5nIENvcnAuCi0JCQkJMTlGLTEgUm9vbSBBICwgTm8uOTcsIFNlYyA0LCBDaHVuZyBIc2luIFJkLiwKLQkJCQlTYW4gQ2h1bmcgQ2l0eSwgVGFpcGVpIEhzaWVuIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtRDQgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMjNENCAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRDUgICAoaGV4KQkJV0FSRU1BIGVsZWN0cm9uaWMgR21iSAotMDAyM0Q1ICAgICAoYmFzZSAxNikJCVdBUkVNQSBlbGVjdHJvbmljIEdtYkgKLQkJCQlEaWxsYmVyZyAzMwotCQkJCU1hcmt0aGVpZGVuZmVsZCBCYXZhcmlhIDk3ODI4Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy1ENiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMVEQKLTAwMjNENiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMVEQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtRDcgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMDAyM0Q3ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtRDggICAoaGV4KQkJQmFsbC1JdCBPeQotMDAyM0Q4ICAgICAoYmFzZSAxNikJCUJhbGwtSXQgT3kKLQkJCQlVdXNpa2F0dSAyNCBHIDc2Ci0JCQkJT3VsdSAgOTAxMDAKLQkJCQlGSU5MQU5ECi0KLTAwLTIzLUQ5ICAgKGhleCkJCUJhbm5lciBFbmdpbmVlcmluZwotMDAyM0Q5ICAgICAoYmFzZSAxNikJCUJhbm5lciBFbmdpbmVlcmluZwotCQkJCTk3MTQgMTB0aCBBdmUuIE4uCi0JCQkJUGx5bW91dGggTU4gNTU0NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLURBICAgKGhleCkJCUluZHVzdHJpYWwgQ29tcHV0ZXIgU291cmNlIChEZXV0c2NobGFuZClHbWJICi0wMDIzREEgICAgIChiYXNlIDE2KQkJSW5kdXN0cmlhbCBDb21wdXRlciBTb3VyY2UgKERldXRzY2hsYW5kKUdtYkgKLQkJCQlNYXJpZS1DdXJpZS1TdHJhc3NlIDkKLQkJCQlQdWxoZWltIE5SVyA1MDI1OQotCQkJCUdFUk1BTlkKLQotMDAtMjMtREIgICAoaGV4KQkJc2F4bmV0IGdtYmgKLTAwMjNEQiAgICAgKGJhc2UgMTYpCQlzYXhuZXQgZ21iaAotCQkJCVdpbGx5LUJyYW5kdC1SaW5nIDEKLQkJCQlPZWxzbml0eiBTYWNoc2VuIDA4NjA2Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy1EQyAgIChoZXgpCQlCZW5laW4sIEluYwotMDAyM0RDICAgICAoYmFzZSAxNikJCUJlbmVpbiwgSW5jCi0JCQkJSHlvamFjaG9uamVzYW5nZ2EyMjggQjksIDI5NywKLQkJCQlzZW9oeXVuLWRvbmcsIGJ1bmRhbmctZ3UKLQkJCQlTZW5nbmFtLXNpIEt5dW5nZ2ktZG8gNDYzLTgxOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy1ERCAgIChoZXgpCQlFTEdJTiBTLkEuCi0wMDIzREQgICAgIChiYXNlIDE2KQkJRUxHSU4gUy5BLgotCQkJCVJVQSBCQVJBTyBERSBDQU1QSU5BUywgMzA1Ci0JCQkJQ0FNUE9TIEVMSVNFT1MKLQkJCQlTQU8gUEFVTE8gIDAxMjAxLTkwMQotCQkJCUJSQVpJTAotCi0wMC0yMy1ERSAgIChoZXgpCQlBbnN5bmMgSW5jLgotMDAyM0RFICAgICAoYmFzZSAxNikJCUFuc3luYyBJbmMuCi0JCQkJNDk3MCBSb2JlcnQgSiBNYXR0aGV3cyBQa3kKLQkJCQlTdWl0ZSAxNjAKLQkJCQlFbCBEb3JhZG8gSGlsbHMgQ0EgOTU3NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLURGICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjNERiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1FMCAgIChoZXgpCQlJTk8gVGhlcmFwZXV0aWNzIExMQwotMDAyM0UwICAgICAoYmFzZSAxNikJCUlOTyBUaGVyYXBldXRpY3MgTExDCi0JCQkJMjkwMiBEYWlyeSBEcml2ZQotCQkJCU1hZGlzb24gV0kgNTM3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUUxICAgKGhleCkJCUNhdmVuYSBJbWFnZSBQcm9kdWN0cyBBQgotMDAyM0UxICAgICAoYmFzZSAxNikJCUNhdmVuYSBJbWFnZSBQcm9kdWN0cyBBQgotCQkJCU55dG9ycHN2YWdlbiAyNgotCQkJCVRhYnkgU3RvY2tob2xtIHNlLTE4MyA1MwotCQkJCVNXRURFTgotCi0wMC0yMy1FMiAgIChoZXgpCQlTRUEgU2lnbmFsaXNhdGlvbgotMDAyM0UyICAgICAoYmFzZSAxNikJCVNFQSBTaWduYWxpc2F0aW9uCi0JCQkJMjAtMjIgUnVlIFBpZXJyZSBNZW5kZXMgRnJhbmNlCi0JCQkJQlAgMjMxCi0JCQkJVmF1bHggZW4gVmVsaW4gQ0VERVggIDY5NTE1Ci0JCQkJRlJBTkNFCi0KLTAwLTIzLUUzICAgKGhleCkJCU1pY3JvdHJvbmljIEFHCi0wMDIzRTMgICAgIChiYXNlIDE2KQkJTWljcm90cm9uaWMgQUcKLQkJCQlEdWVubmVybnN0cmFzc2UgMzIKLQkJCQlPZW5zaW5nZW4gU29sb3RodXJuIDQ3MDIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0yMy1FNCAgIChoZXgpCQlJUG5lY3QgY28uIGx0ZC4KLTAwMjNFNCAgICAgKGJhc2UgMTYpCQlJUG5lY3QgY28uIGx0ZC4KLQkJCQk4MDggYWxiYXRyb3NzIEIvRCAyMzctMTgKLQkJCQlHYXNhbi1kb25nLCBHZXVtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy1FNSAgIChoZXgpCQlJUGFYaW9tIE5ldHdvcmtzCi0wMDIzRTUgICAgIChiYXNlIDE2KQkJSVBhWGlvbSBOZXR3b3JrcwotCQkJCUFzdG9uIENvdXJ0Ci0JCQkJS2luZ3NtZWFkIEJ1c2luZXNzIFBhcmssIEZyZWRlcmljayBQbGFjZQotCQkJCUhpZ2ggV3ljb21iZSBCdWNraW5naGFtc2hpcmUgSFAxMSAxTEEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMy1FNiAgIChoZXgpCQlQaXJrdXMsIEluYy4KLTAwMjNFNiAgICAgKGJhc2UgMTYpCQlQaXJrdXMsIEluYy4KLQkJCQkyRiwxLTEtMgotCQkJCVNoaW11cmEKLQkJCQlJdGFiYXNoaS1rdSBUb2t5byAxNzQtMDA1NgotCQkJCUpBUEFOCi0KLTAwLTIzLUU3ICAgKGhleCkJCUhpbmtlIEEvUwotMDAyM0U3ICAgICAoYmFzZSAxNikJCUhpbmtlIEEvUwotCQkJCVRpbmdiamVyZ3ZlaiAyCi0JCQkJQmphZXZlcnNrb3YgIERLLTQ2MzIKLQkJCQlERU5NQVJLCi0KLTAwLTIzLUU4ICAgKGhleCkJCURlbWNvIENvcnAuCi0wMDIzRTggICAgIChiYXNlIDE2KQkJRGVtY28gQ29ycC4KLQkJCQkjOTE5LCBEb29zYW4gVmVudHVyZWRpZ20sIDEyNi0xCi0JCQkJUHl1bmdjaG9uLURvbmcsIERvbmdhbi1LdQotCQkJCUFueWFuZy1TaSBLeXVuZ2tpLURvIDQzMS0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtRTkgICAoaGV4KQkJRjUgTmV0d29ya3MsIEluYy4KLTAwMjNFOSAgICAgKGJhc2UgMTYpCQlGNSBOZXR3b3JrcywgSW5jLgotCQkJCTQwMSBFbGxpb3R0IEF2ZS4gVy4KLQkJCQlTZWF0dGxlIFdBIDk4MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1FQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzRUEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRUIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyM0VCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUVDICAgKGhleCkJCUFsZ29yaXRobWl4IEdtYkgKLTAwMjNFQyAgICAgKGJhc2UgMTYpCQlBbGdvcml0aG1peCBHbWJICi0JCQkJS2xldHRnYXVzdHJhc3NlIDIxCi0JCQkJV2FsZHNodXQtVGllbmdlbiBCVyA3OTc2MQotCQkJCUdFUk1BTlkKLQotMDAtMjMtRUQgICAoaGV4KQkJTW90b3JvbGEgQ0hTCi0wMDIzRUQgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgQ0hTCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRUUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjNFRSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUVGICAgKGhleCkJCVp1ZW5kIFN5c3RlbXRlY2huaWsgQUcKLTAwMjNFRiAgICAgKGJhc2UgMTYpCQladWVuZCBTeXN0ZW10ZWNobmlrIEFHCi0JCQkJSW5kdXN0cmllc3RyYXNzZSA4Ci0JCQkJQWx0c3RhZXR0ZW4gU0cgOTQ1MAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTIzLUYwICAgKGhleCkJCVNoYW5naGFpIEppbmdoYW4gV2VpZ2hpbmcgQXBwYXJhdHVzIENvLiBMdGQuCi0wMDIzRjAgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgSmluZ2hhbiBXZWlnaGluZyBBcHBhcmF0dXMgQ28uIEx0ZC4KLQkJCQlCdWlsZGluZyA1OCwgTm8uOTkgQ2h1bmd1YW5nIFJvYWQsIFhpbnpodWFuZyBJbmR1c3RyaWFsIFpvbmUsTWluaGFuZywKLQkJCQlTaGFuZ2hhaSAgMjAxMTA4Ci0JCQkJQ0hJTkEKLQotMDAtMjMtRjEgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLTAwMjNGMSAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNrYW5lIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTAwLTIzLUYyICAgKGhleCkJCVRWTG9naWMKLTAwMjNGMiAgICAgKGJhc2UgMTYpCQlUVkxvZ2ljCi0JCQkJc3VpdGUgOTE0IEFDRSBUZWNobm8gVG93ZXItOXRoCi0JCQkJR2FzYW4tZG9uZwotCQkJCUdldW1jaGVvbi1ndSBTRU9VTCAxNTMtNzgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUYzICAgKGhleCkJCUdsb2NvbSwgSW5jLgotMDAyM0YzICAgICAoYmFzZSAxNikJCUdsb2NvbSwgSW5jLgotCQkJCTIyIEZpcnN0ZmllbGQgUm9hZAotCQkJCVN1aXRlIDEyNQotCQkJCUdhaXRoZXJzYnVyZyBNYXJ5bGFuZCAyMDg3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRjQgICAoaGV4KQkJTWFzdGVybmF1dAotMDAyM0Y0ICAgICAoYmFzZSAxNikJCU1hc3Rlcm5hdXQKLQkJCQk0LCBydWUgQ2hhcmxlcyBDcm9zCi0JCQkJTG91dmllcnMgIDI3NDA3Ci0JCQkJRlJBTkNFCi0KLTAwLTIzLUY1ICAgKGhleCkJCVdJTE8gU0UKLTAwMjNGNSAgICAgKGJhc2UgMTYpCQlXSUxPIFNFCi0JCQkJTm9ydGtpcmNoZW5zdHIuIDEwMAotCQkJCUQgLSA0NDI2MyBEb3J0bXVuZCBOUlcgNDQyNjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLUY2ICAgKGhleCkJCVNvZnR3ZWxsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDIzRjYgICAgIChiYXNlIDE2KQkJU29mdHdlbGwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk0RiwgTm8uIDQxOSwgSmhvbmdoZSBSZC4sIFlvbmdoZSBDaXR5LAotCQkJCVRhaXBlaSBDb3VudHkgIDIzNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtRjcgICAoaGV4KQkJUFJJVkFURQotMDAyM0Y3ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yMy1GOCAgIChoZXgpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotMDAyM0Y4ICAgICAoYmFzZSAxNikJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJTk8uNiBJbm5vdmF0aW9uIFJvYWQgSUksCi0JCQkJU2NpZW5jZSBQYXJrLAotCQkJCUhzaW4tQ2h1LCBUYWl3YW4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy1GOSAgIChoZXgpCQlEb3VibGUtVGFrZSBTb2Z0d2FyZSwgSU5DLgotMDAyM0Y5ICAgICAoYmFzZSAxNikJCURvdWJsZS1UYWtlIFNvZnR3YXJlLCBJTkMuCi0JCQkJODQ3MCBBbGxpc29uIFBvaW50ZSBCbHZkCi0JCQkJU3VpdGUgMzAwCi0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1GQSAgIChoZXgpCQlSRyBOZXRzLCBJbmMuCi0wMDIzRkEgICAgIChiYXNlIDE2KQkJUkcgTmV0cywgSW5jLgotCQkJCTEwMDAgRS4gV2lsbGlhbSBTdHJlZXQKLQkJCQlTdWl0ZSAyMDQKLQkJCQlDYXJzb24gQ2l0eSBOViA4OTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRkIgICAoaGV4KQkJSVAgRGF0YXRlbCwgSW5jLgotMDAyM0ZCICAgICAoYmFzZSAxNikJCUlQIERhdGF0ZWwsIEluYy4KLQkJCQkxMzExMCBTb3V0aHdlc3QgRnJlZXdheQotCQkJCVN1Z2FyIExhbmQgVGV4YXMgNzc0NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUZDICAgKGhleCkJCVVsdHJhIFN0ZXJlbyBMYWJzLCBJbmMKLTAwMjNGQyAgICAgKGJhc2UgMTYpCQlVbHRyYSBTdGVyZW8gTGFicywgSW5jCi0JCQkJMTgxIEJvbmV0dGkgRHJpdmUKLQkJCQlTYW4gTHVpcyBPYmlzcG8gQ0EgOTM0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUZEICAgKGhleCkJCUFGVCBBdGxhcyBGYWhyemV1Z3RlY2huaWsgR21iSAotMDAyM0ZEICAgICAoYmFzZSAxNikJCUFGVCBBdGxhcyBGYWhyemV1Z3RlY2huaWsgR21iSAotCQkJCUdld2VyYmVzdHIuIDE0Ci0JCQkJV2VyZG9obCAgNTg3OTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLUZFICAgKGhleCkJCUJpb2RldmljZXMsIFNBCi0wMDIzRkUgICAgIChiYXNlIDE2KQkJQmlvZGV2aWNlcywgU0EKLQkJCQlSdWEgNSBkZSBPdXR1YnJvIDMwOQotCQkJCVBvcnRvICA0MTAwLTE3NQotCQkJCVBPUlRVR0FMCi0KLTAwLTIzLUZGICAgKGhleCkJCUJlaWppbmcgSFRUQyBUZWNobm9sb2d5IEx0ZC4KLTAwMjNGRiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEhUVEMgVGVjaG5vbG9neSBMdGQuCi0JCQkJQi0xM0QtMyBLZXNoaSBCdWlsZGluZyxKaWEgTm8uMjggWGlueGkgUm9hZCxTSEFOR0RJIElUIEluZHVzdHJ5IEJhc2UKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0yNC0wMCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMjQwMCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0wMSAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMjQwMSAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFhpbmh1IDNyZC4KLQkJCQlOZWlodSBEaXN0cmljdCBUYWlwZWkgQ2l0eSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTAyICAgKGhleCkJCU9wLVRlY3Rpb24gR21iSAotMDAyNDAyICAgICAoYmFzZSAxNikJCU9wLVRlY3Rpb24gR21iSAotCQkJCUJvcnNpZ3N0cmFzc2UgODAKLQkJCQlIZWluc2JlcmcgR2VybWFueSA1MjUyNQotCQkJCUdFUk1BTlkKLQotMDAtMjQtMDMgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjQwMyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjQtMDQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjQwNCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjQtMDUgICAoaGV4KQkJRGlsb2cgTm9yZGljIEFCCi0wMDI0MDUgICAgIChiYXNlIDE2KQkJRGlsb2cgTm9yZGljIEFCCi0JCQkJRmFrdG9ydmFnZW4gOQotCQkJCUt1bmdzYmFja2EgSGFsbGFuZCA0MzkgMzQKLQkJCQlTV0VERU4KLQotMDAtMjQtMDYgICAoaGV4KQkJUG9pbnRtb2JpbGUKLTAwMjQwNiAgICAgKGJhc2UgMTYpCQlQb2ludG1vYmlsZQotCQkJCTMwMSxXb3JsZCBNZXJpZGlhbiBWZXJ0dXJlIENlbnRlci0xIDYwLTI0Ci0JCQkJR2FzYW4tZG9uZwotCQkJCVNlb3VsIEdldW1jaGVvbi1ndSAxNTM3ODEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtMDcgICAoaGV4KQkJVEVMRU0gU0FTCi0wMDI0MDcgICAgIChiYXNlIDE2KQkJVEVMRU0gU0FTCi0JCQkJMTYsIFJVRSBERSBMJ0VUQU5HCi0JCQkJR0lFUkVTIFJIT05FIEFMUEVTIDM4NjEwCi0JCQkJRlJBTkNFCi0KLTAwLTI0LTA4ICAgKGhleCkJCVBhY2lmaWMgQmlvc2NpZW5jZXMKLTAwMjQwOCAgICAgKGJhc2UgMTYpCQlQYWNpZmljIEJpb3NjaWVuY2VzCi0JCQkJMTUwNSBBZGFtcyBEcml2ZQotCQkJCU1lbmxvIFBhcmsgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTA5ICAgKGhleCkJCVRoZSBUb3JvIENvbXBhbnkKLTAwMjQwOSAgICAgKGJhc2UgMTYpCQlUaGUgVG9ybyBDb21wYW55Ci0JCQkJNTgyNSBKYXNtaW5lIFN0cmVldAotCQkJCVJpdmVyc2lkZSBDQSA5MjUwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMEEgICAoaGV4KQkJVVMgQmV2ZXJhZ2UgTmV0Ci0wMDI0MEEgICAgIChiYXNlIDE2KQkJVVMgQmV2ZXJhZ2UgTmV0Ci0JCQkJMTAwMSBXLiBGYXlldHRlIFN0cmVldAotCQkJCTNBCi0JCQkJU3lyYWN1c2UgTlkgMTMyMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTBCICAgKGhleCkJCVZpcnR1YWwgQ29tcHV0ZXIgSW5jLgotMDAyNDBCICAgICAoYmFzZSAxNikJCVZpcnR1YWwgQ29tcHV0ZXIgSW5jLgotCQkJCTMgTEFOIERyaXZlCi0JCQkJV2VzdGZvcmQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTBDICAgKGhleCkJCURFTEVDIEdtYkgKLTAwMjQwQyAgICAgKGJhc2UgMTYpCQlERUxFQyBHbWJICi0JCQkJUnVoZXdlZyAxNy0yMQotCQkJCUdvbGxoZWltIFJoZWlubGFuZC1QZmFseiA2NzMwNwotCQkJCUdFUk1BTlkKLQotMDAtMjQtMEQgICAoaGV4KQkJT25lUGF0aCBOZXR3b3JrcyBMVEQuCi0wMDI0MEQgICAgIChiYXNlIDE2KQkJT25lUGF0aCBOZXR3b3JrcyBMVEQuCi0JCQkJOCBIYXJ0b20gU3QKLQkJCQlKZXJ1c2FsZW0gIDkxNDUwCi0JCQkJSVNSQUVMCi0KLTAwLTI0LTBFICAgKGhleCkJCUludmVudGVjIEJlc3RhIENvLiwgTHRkLgotMDAyNDBFICAgICAoYmFzZSAxNikJCUludmVudGVjIEJlc3RhIENvLiwgTHRkLgotCQkJCTEwRkwsIE5vLjM2LCBMYW5lIDUxMywgUnVpIEd1YW5nIFJvYWQsIE5laSBIdSBEaXN0LgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC0wRiAgIChoZXgpCQlJc2hpaSBUb29sICYgRW5naW5lZXJpbmcgQ29ycG9yYXRpb24KLTAwMjQwRiAgICAgKGJhc2UgMTYpCQlJc2hpaSBUb29sICYgRW5naW5lZXJpbmcgQ29ycG9yYXRpb24KLQkJCQkyLTUtNjAgSGlnYXNoaS1PbWljaGkKLQkJCQlPaXRhICA4NzAtMDgyMwotCQkJCUpBUEFOCi0KLTAwLTI0LTEwICAgKGhleCkJCU5VRVRFUSBUZWNobm9sb2d5LEluYy4KLTAwMjQxMCAgICAgKGJhc2UgMTYpCQlOVUVURVEgVGVjaG5vbG9neSxJbmMuCi0JCQkJMTFGLCBOby4gMTEyLCBTZWMuIDEsIFpob25nLVhpYW8gRSBSZC4KLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMTEgICAoaGV4KQkJUGhhcm1hU21hcnQgTExDCi0wMDI0MTEgICAgIChiYXNlIDE2KQkJUGhhcm1hU21hcnQgTExDCi0JCQkJMzQ5NSBXaW50b24gUGxhY2UKLQkJCQlCbGRnIEEsIFN1aXRlIDEKLQkJCQlSb2NoZXN0ZXIgTlkgMTQ2MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTEyICAgKGhleCkJCUJlbmlnbiBUZWNobm9sb2dpZXMgQ28sIEx0ZC4KLTAwMjQxMiAgICAgKGJhc2UgMTYpCQlCZW5pZ24gVGVjaG5vbG9naWVzIENvLCBMdGQuCi0JCQkJNTA0IHJvb20sIDVGLCBTb3V0aCBidWlsZGluZywgRm9yc2FmZSBUb3dlciwKLQkJCQlTb3V0aCBPbmUgU3RyZWV0LCBIaS1UZWNoIFpvbmUsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTI0LTEzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjQxMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0xNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI0MTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMTUgICAoaGV4KQkJTWFnbmV0aWMgQXV0b2NvbnRyb2wgR21iSAotMDAyNDE1ICAgICAoYmFzZSAxNikJCU1hZ25ldGljIEF1dG9jb250cm9sIEdtYkgKLQkJCQlHcmllbm1hdHQgMjAKLQkJCQlTY2hvcGZoZWltICBELTc5NjUwCi0JCQkJR0VSTUFOWQotCi0wMC0yNC0xNiAgIChoZXgpCQlBbnkgVXNlCi0wMDI0MTYgICAgIChiYXNlIDE2KQkJQW55IFVzZQotCQkJCUxHIEFQVCAyMTEtMTgwNSwKLQkJCQlTaGluYm9uZy1Eb25nLCBTdWppLUd1LAotCQkJCVlvbmdpbiBDaXR5IEd5ZW9uZy1HaSBQcm92aW5jZSA0NDgtMTUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTE3ICAgKGhleCkJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0wMDI0MTcgICAgIChiYXNlIDE2KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3Ci0JCQkJRWRlZ2VtIC0gQW50d2VycCAgQi0yNjUwCi0JCQkJQkVMR0lVTQotCi0wMC0yNC0xOCAgIChoZXgpCQlOZXh0d2F2ZSBTZW1pY29uZHVjdG9yCi0wMDI0MTggICAgIChiYXNlIDE2KQkJTmV4dHdhdmUgU2VtaWNvbmR1Y3RvcgotCQkJCTM2MTEgVmFsbGV5IENlbnRyZSBEcgotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMTkgICAoaGV4KQkJUFJJVkFURQotMDAyNDE5ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yNC0xQSAgIChoZXgpCQlSZWQgQmVldGxlIEluYy4KLTAwMjQxQSAgICAgKGJhc2UgMTYpCQlSZWQgQmVldGxlIEluYy4KLQkJCQk4OTggU2lsYXMgRGVhbmUgSGlnaHdheQotCQkJCVdldGhlcnNmaWVsZCBDVCAwNjEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMUIgICAoaGV4KQkJaVdPVyBDb21tdW5pY2F0aW9ucyBQdGUgTHRkCi0wMDI0MUIgICAgIChiYXNlIDE2KQkJaVdPVyBDb21tdW5pY2F0aW9ucyBQdGUgTHRkCi0JCQkJMSBMb3JvbmcgMiBUb2EgUGF5b2ggIzA0LTAxCi0JCQkJWWVsbG93IFBhZ2VzIEJ1aWxkaW5nCi0JCQkJMzE5NjM3Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTI0LTFDICAgKGhleCkJCUZ1R2FuZyBFbGVjdHJvbmljIChERykgQ28uLEx0ZAotMDAyNDFDICAgICAoYmFzZSAxNikJCUZ1R2FuZyBFbGVjdHJvbmljIChERykgQ28uLEx0ZAotCQkJCUluZHVzdHJ5IFN0cmVldCwgRG9uZy1LZW5nCi0JCQkJR3VhbmcgRG9uZyBQcm92aW5jZQotCQkJCURvbmcgR3VhbiBDaXR5ICA1MjM0NDgKLQkJCQlDSElOQQotCi0wMC0yNC0xRCAgIChoZXgpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotMDAyNDFEICAgICAoYmFzZSAxNikJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0JCQkJTm8uMjE1LE5hbi1QaW5nIFJvYWQsCi0JCQkJUGluLUplbiBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMUUgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDI0MUUgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjQtMUYgICAoaGV4KQkJRENULURlbHRhIEdtYkgKLTAwMjQxRiAgICAgKGJhc2UgMTYpCQlEQ1QtRGVsdGEgR21iSAotCQkJCUJvZGFucnVlY2tzdHJhc3NlIDEKLQkJCQlCb2RtYW4gLSBMdWR3aWdzaGFmZW4gQmFkZW4gLSBXdXJ0dGVtYmVyZyA3ODM1MQotCQkJCUdFUk1BTlkKLQotMDAtMjQtMjAgICAoaGV4KQkJTmV0VVAgSW5jLgotMDAyNDIwICAgICAoYmFzZSAxNikJCU5ldFVQIEluYy4KLQkJCQlPbG9mIFBhbG1lIHN0LiwgMSwgc2VjdC4gNwotCQkJCU1vc2NvdyAgMTE5MzExCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTI0LTIxICAgKGhleCkJCU1JQ1JPLVNUQVIgSU5UJ0wgQ08uLCBMVEQuCi0wMDI0MjEgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlQnTCBDTy4sIExURC4KLQkJCQlOby42OSwgTGktRGUgU3QKLQkJCQlKdW5nLUhvIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMjIgICAoaGV4KQkJS25hcHAgTG9naXN0aWsgQXV0b21hdGlvbiBHbWJICi0wMDI0MjIgICAgIChiYXNlIDE2KQkJS25hcHAgTG9naXN0aWsgQXV0b21hdGlvbiBHbWJICi0JCQkJR3VudGVyLUtuYXBwLVN0cmFzc2UgNS03Ci0JCQkJSGFydCBiZWkgR3JheiBTdHlyaWEgODA3NQotCQkJCUFVU1RSSUEKLQotMDAtMjQtMjMgICAoaGV4KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcyAoU2hhbmdoYWkpIEluYy4KLTAwMjQyMyAgICAgKGJhc2UgMTYpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgSW5jLgotCQkJCU5PLiA4LCBMQU5FIDY2LCBDSEVOR0JBTyBSRC4KLQkJCQlNQUxVIENPVU5UWSwgSklBRElORyBESVNUUklDVCwKLQkJCQlTSEFOR0hBSSAgMjAxODAxCi0JCQkJQ0hJTkEKLQotMDAtMjQtMjQgICAoaGV4KQkJQXhpcyBOZXR3b3JrIFRlY2hub2xvZ3kKLTAwMjQyNCAgICAgKGJhc2UgMTYpCQlBeGlzIE5ldHdvcmsgVGVjaG5vbG9neQotCQkJCVVuaXQgMTAsIE1pZHNoaXJlcyBCdXMgUGFyawotCQkJCVNtZWF0b24gQ2xvc2UKLQkJCQlBeWxlc2J1cnkgQnVja3MgSFAxOSA4SEwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNC0yNSAgIChoZXgpCQlTaGVuemhlbnNoaSBjaHVhbmd6aGljaGVuZyBUZWNobm9sb2d5IENvLixMdGQKLTAwMjQyNSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbnNoaSBjaHVhbmd6aGljaGVuZyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQk1dGggRmxvb3IsQmxvY2syLDI1dGggQnVpbGRpbmcsSW5kdXN0cmlhbCBab25lIFdlc3QgS2V5dWFuIFNjaS10ZWNoIEdhcmRlbiBOYW5zaGFuIERpc3RyaWNoLFNoZW56aGVuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTI0LTI2ICAgKGhleCkJCU5PSE1JIEJPU0FJIExURC4KLTAwMjQyNiAgICAgKGJhc2UgMTYpCQlOT0hNSSBCT1NBSSBMVEQuCi0JCQkJNy0zLEt1ZGFuLU1pbmFtaSA0LUNob21lLAotCQkJCUNoaXlvZGEta3UKLQkJCQlUb2t5byAgMTAyLTgyNzcKLQkJCQlKQVBBTgotCi0wMC0yNC0yNyAgIChoZXgpCQlTU0kgQ09NUFVURVIgQ09SUAotMDAyNDI3ICAgICAoYmFzZSAxNikJCVNTSSBDT01QVVRFUiBDT1JQCi0JCQkJNEYsIE5PNCwgTEFORSAyMzUsIEJBTyBDSElBTyBST0FECi0JCQkJSFNJTiBUSUVOIFRBSVBFSSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTI4ICAgKGhleCkJCUVuZXJneUlDVAotMDAyNDI4ICAgICAoYmFzZSAxNikJCUVuZXJneUlDVAotCQkJCVRoZW9kb29yIFNldmVuc2xhYW4gMTA0YQotCQkJCUtvcnRyaWprICA4NTAwCi0JCQkJQkVMR0lVTQotCi0wMC0yNC0yOSAgIChoZXgpCQlNSyBNQVNURVIgSU5DLgotMDAyNDI5ICAgICAoYmFzZSAxNikJCU1LIE1BU1RFUiBJTkMuCi0JCQkJNkYsIC0xLCBOTy4gMTEwLFNFQy4gMywgSkhPTkdTSEFOIFJELiwKLQkJCQlKSE9ORy1IRSBDSVRZLCBUQUlQRUkgQ09VTlRZIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMkEgICAoaGV4KQkJSGl0dGl0ZSBNaWNyb3dhdmUgQ29ycG9yYXRpb24KLTAwMjQyQSAgICAgKGJhc2UgMTYpCQlIaXR0aXRlIE1pY3Jvd2F2ZSBDb3Jwb3JhdGlvbgotCQkJCTIwIEFscGhhIFJkCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMkIgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLixMdGQuCi0wMDI0MkIgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLixMdGQuCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiBUYWl3YW4gMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC0yQyAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAyNDJDICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC0yRSAgIChoZXgpCQlEYXRhc3RyaXAgSW5jLgotMDAyNDJFICAgICAoYmFzZSAxNikJCURhdGFzdHJpcCBJbmMuCi0JCQkJMSBXYXRlcnZpZXcgRHJpdmUKLQkJCQlTdWl0ZSAxMDMKLQkJCQlTaGVsdG9uIENUIDA2NDg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0yRiAgIChoZXgpCQlWaXJ0ZW5TeXMgSW5jCi0wMDI0MkYgICAgIChiYXNlIDE2KQkJVmlydGVuU3lzIEluYwotCQkJCTg3MDUgTmltYnVzIEF2ZSBTdGUgMTAwCi0JCQkJQmVhdmVydG9uIE9SIDk3MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0zMCAgIChoZXgpCQlSdWJ5IFRlY2ggQ29ycC4KLTAwMjQzMCAgICAgKGJhc2UgMTYpCQlSdWJ5IFRlY2ggQ29ycC4KLQkJCQkzRiwgTk8uIDEsIExhbmUgNTAsIE5hbiBLYW5nIFJvYWQsIFNlYy4gMywKLQkJCQlUYWlwZWkgIDExNTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC0zMSAgIChoZXgpCQlVbmktdiBjby4sbHRkCi0wMDI0MzEgICAgIChiYXNlIDE2KQkJVW5pLXYgY28uLGx0ZAotCQkJCTUvRixDT0ZDTyBQcm9wZXJ0eSBUb3dlciwKLQkJCQl0aGUgM3JkIEFyZWEsIEJhbydhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjYKLQkJCQlDSElOQQotCi0wMC0yNC0zMiAgIChoZXgpCQlOZW9zdGFyIFRlY2hub2xvZ3kgQ28uLExURAotMDAyNDMyICAgICAoYmFzZSAxNikJCU5lb3N0YXIgVGVjaG5vbG9neSBDby4sTFRECi0JCQkJOEYuLCBOby4xMDIsIFNlYy4gMSwgU2ludGFpIDV0aCBSZC4KLQkJCQlTaWpoaWggQ2l0eSBUYWlwZWkgMjIxNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTMzICAgKGhleCkJCUFscHMgRWxlY3RyaWMgQ28uLCBMdGQKLTAwMjQzMyAgICAgKGJhc2UgMTYpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0JCQkJMS0yLTEsIE9raW5vdWNoaQotCQkJCVNvbWEgY2l0eSBGdWt1c2hpbWEta2VuIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjQtMzQgICAoaGV4KQkJTGVjdHJvc29uaWNzLCBJbmMuCi0wMDI0MzQgICAgIChiYXNlIDE2KQkJTGVjdHJvc29uaWNzLCBJbmMuCi0JCQkJNTgxIExhc2VyIFJkLgotCQkJCVJpbyBSYW5jaG8gTk0gODcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTM1ICAgKGhleCkJCVdJREUgQ09SUE9SQVRJT04KLTAwMjQzNSAgICAgKGJhc2UgMTYpCQlXSURFIENPUlBPUkFUSU9OCi0JCQkJTEVBREVSUyBUT1dFUiA3VEggRkwuLCBHT01BRS1ET05HLCBHSUhFVU5HLUdVCi0JCQkJWU9OR0lOIEdZRU9OR0dJIDQ0Ni05MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtMzYgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyNDM2ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTM3ICAgKGhleCkJCU1vdG9yb2xhIC0gQlNHCi0wMDI0MzcgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgLSBCU0cKLQkJCQkxMTAxIE1hcmluYSBWaWxsYWdlIFBrd3kKLQkJCQlTdGUgMjAwCi0JCQkJQWxhbWVkYSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMzggICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLTAwMjQzOCAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotCQkJCTE3NDUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0zOSAgIChoZXgpCQlFc3NlbnRpYWwgVmlld2luZyBTeXN0ZW1zIExpbWl0ZWQKLTAwMjQzOSAgICAgKGJhc2UgMTYpCQlFc3NlbnRpYWwgVmlld2luZyBTeXN0ZW1zIExpbWl0ZWQKLQkJCQlIaWxsaW5ndG9uIFBhcmsgSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQkxIEFpbnNsaWUgUm9hZAotCQkJCUdsYXNnb3cgUmVuZnJld3NoaXJlIEc1MiA0UlUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNC0zQSAgIChoZXgpCQlMdWRsIEVsZWN0cm9uaWMgUHJvZHVjdHMKLTAwMjQzQSAgICAgKGJhc2UgMTYpCQlMdWRsIEVsZWN0cm9uaWMgUHJvZHVjdHMKLQkJCQkxNzEgQnJhZHkgQXZlCi0JCQkJSGF3dGhvcm5lIE5ZIDEwNTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0zQiAgIChoZXgpCQlDU1NJIChTKSBQdGUgTHRkCi0wMDI0M0IgICAgIChiYXNlIDE2KQkJQ1NTSSAoUykgUHRlIEx0ZAotCQkJCTcwIEJlbmRlbWVlciBSb2FkIFVuaXQgMDQtMDQKLQkJCQkzMzk5NDAKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjQtM0MgICAoaGV4KQkJUy5BLkEuQS4KLTAwMjQzQyAgICAgKGJhc2UgMTYpCQlTLkEuQS5BLgotCQkJCVouQS4gQ3JvaXggU2FpbnQgTWF0aGlldQotCQkJCUdBTExBUkRPTiBFdXJlIGV0IExvaXIgMjgzMjAKLQkJCQlGUkFOQ0UKLQotMDAtMjQtM0QgICAoaGV4KQkJRW1lcnNvbiBBcHBsaWFuY2UgTW90b3JzIGFuZCBDb250cm9scwotMDAyNDNEICAgICAoYmFzZSAxNikJCUVtZXJzb24gQXBwbGlhbmNlIE1vdG9ycyBhbmQgQ29udHJvbHMKLQkJCQkxOTAxIFNvdXRoIFN0LgotCQkJCUVsZ2luIElMIDYwMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0zRiAgIChoZXgpCQlTdG9yd2l6ZSwgSW5jLgotMDAyNDNGICAgICAoYmFzZSAxNikJCVN0b3J3aXplLCBJbmMuCi0JCQkJMTEgQWxhdGxlZiBTdC4KLQkJCQlZZWh1ZCAgNTYyMTYKLQkJCQlJU1JBRUwKLQotMDAtMjQtNDAgICAoaGV4KQkJSGFsbyBNb25pdG9yaW5nLCBJbmMuCi0wMDI0NDAgICAgIChiYXNlIDE2KQkJSGFsbyBNb25pdG9yaW5nLCBJbmMuCi0JCQkJNTE1IFNwYXJrbWFuIERyLgotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTQxICAgKGhleCkJCVdhbnpsIE1ldGFsbHdhcmVuZmFicmlrIEdtYkgKLTAwMjQ0MSAgICAgKGJhc2UgMTYpCQlXYW56bCBNZXRhbGx3YXJlbmZhYnJpayBHbWJICi0JCQkJQnViZXNoZWltZXIgU3RyYXNzZSA0Ci0JCQkJTGVpcGhlaW0gQmF2YXJpYSA4OTM0MAotCQkJCUdFUk1BTlkKLQotMDAtMjQtNDIgICAoaGV4KQkJQXhvbmEgTGltaXRlZAotMDAyNDQyICAgICAoYmFzZSAxNikJCUF4b25hIExpbWl0ZWQKLQkJCQkxNDggR3JlZW4gTGFuZQotCQkJCVN0LiBBbGJhbnMgSGVydHMgQUwzIDZFVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI0LTQzICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyNDQzICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVFggNzUwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTQ0ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyNDQ0ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjQtNDUgICAoaGV4KQkJTGlxdWlkeFN0cmVhbSBTeXN0ZW1zIEluYy4KLTAwMjQ0NSAgICAgKGJhc2UgMTYpCQlMaXF1aWR4U3RyZWFtIFN5c3RlbXMgSW5jLgotCQkJCTg0ODAgQm91bC4gRHUgR29sZgotCQkJCU1vbnRyZWFsIFF1ZWJlYyBIMUogM0ExCi0JCQkJQ0FOQURBCi0KLTAwLTI0LTQ2ICAgKGhleCkJCU1NQiBSZXNlYXJjaCBJbmMuCi0wMDI0NDYgICAgIChiYXNlIDE2KQkJTU1CIFJlc2VhcmNoIEluYy4KLQkJCQkzNSBQcmluY2UgQXJ0aHVyIEF2ZS4KLQkJCQlUb3JvbnRvIE9udGFyaW8gTTVSIDFCMgotCQkJCUNBTkFEQQotCi0wMC0yNC00NyAgIChoZXgpCQlLYXp0ZWsgU3lzdGVtcwotMDAyNDQ3ICAgICAoYmFzZSAxNikJCUthenRlayBTeXN0ZW1zCi0JCQkJMTcgQnJvbWZpZWxkIFJvYWQKLQkJCQlBY3RvbiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNDggICAoaGV4KQkJU3BpZGVyQ2xvdWQgV2lyZWxlc3MsIEluYwotMDAyNDQ4ICAgICAoYmFzZSAxNikJCVNwaWRlckNsb3VkIFdpcmVsZXNzLCBJbmMKLQkJCQkzOTAwIEZyZWVkb20gQ2lyY2xlLCBTdWl0ZSAxMDQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNDkgICAoaGV4KQkJU2hlbiBaaGVuIExpdGUgU3RhciBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDI0NDkgICAgIChiYXNlIDE2KQkJU2hlbiBaaGVuIExpdGUgU3RhciBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJWGluZ2hvbmcgU2NpZW5jZSBQYXJrLDFzdCBJbmQuQXJlYSwKLQkJCQlGZW5naHVhbmdndWFuZywgWGl4aWFuZyxCYW9hbiBBcmVhCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEwMgotCQkJCUNISU5BCi0KLTAwLTI0LTRBICAgKGhleCkJCVZveWFudCBJbnRlcm5hdGlvbmFsCi0wMDI0NEEgICAgIChiYXNlIDE2KQkJVm95YW50IEludGVybmF0aW9uYWwKLQkJCQk0NDQgQ2FzdHJvIFN0Ci0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNEIgICAoaGV4KQkJUEVSQ0VQVFJPTiBJTkMKLTAwMjQ0QiAgICAgKGJhc2UgMTYpCQlQRVJDRVBUUk9OIElOQwotCQkJCTQ3ODI3IEhBTFlBUkQgRFIKLQkJCQlQTyAjQ0M2NzM0OAotCQkJCVBMWU1PVVRIIE1JIDQ4MTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC00QyAgIChoZXgpCQlTb2xhcnRyb24gTWV0cm9sb2d5IEx0ZAotMDAyNDRDICAgICAoYmFzZSAxNikJCVNvbGFydHJvbiBNZXRyb2xvZ3kgTHRkCi0JCQkJU3RleW5pbmcgV2F5Ci0JCQkJQm9nbm9yIFJlZ2lzIFdlc3QgU3Vzc2V4IFBPMjAgOVNUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjQtNEQgICAoaGV4KQkJSG9ra2FpZG8gRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLTAwMjQ0RCAgICAgKGJhc2UgMTYpCQlIb2trYWlkbyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgotCQkJCTEtMSBFYXN0IDEwIE5vcnRoIDEwCi0JCQkJSGlnYXNoaS1rdQotCQkJCVNhcHBvcm8gSG9ra2FpZG8gMDY1LTAwMTAKLQkJCQlKQVBBTgotCi0wMC0yNC00RSAgIChoZXgpCQlSYWRDaGlwcywgSW5jLgotMDAyNDRFICAgICAoYmFzZSAxNikJCVJhZENoaXBzLCBJbmMuCi0JCQkJNDIyIEVhc3QgVmVybWlqbyBBdmUuCi0JCQkJU3VpdGUgNDAxCi0JCQkJQ29sb3JhZG8gU3ByaW5ncyBDTyA4MDkwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNEYgICAoaGV4KQkJQXNhbnRyb24gVGVjaG5vbG9naWVzIEx0ZC4KLTAwMjQ0RiAgICAgKGJhc2UgMTYpCQlBc2FudHJvbiBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTNGLTEsIE5vLjMwIEppaGUgUmQuLCAxMTEKLQkJCQlTaGlobGluIERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTE2NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtNTAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNDUwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTUxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjQ1MSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC01MiAgIChoZXgpCQlTaWxpY29uIFNvZnR3YXJlIEdtYkgKLTAwMjQ1MiAgICAgKGJhc2UgMTYpCQlTaWxpY29uIFNvZnR3YXJlIEdtYkgKLQkJCQlTdGV1YmVuc3RyLiA0NgotCQkJCU1hbm5oZWltIEJhZGVuLVd1cnR0ZW1iZXJnIDY4MTYzCi0JCQkJR0VSTUFOWQotCi0wMC0yNC01MyAgIChoZXgpCQlJbml0cmEgZC5vLm8uCi0wMDI0NTMgICAgIChiYXNlIDE2KQkJSW5pdHJhIGQuby5vLgotCQkJCVNsb21za292YSAzMwotCQkJCUxqdWJsamFuYSAgMTAwMAotCQkJCVNMT1ZFTklBCi0KLTAwLTI0LTU0ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLTAwMjQ1NCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4gM0RvbmcsIFllb25ndG9uZy1HdSwKLQkJCQlTdXdvbiBHeWVvbmdnaS1EbyA0NDM3NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNTUgICAoaGV4KQkJTXVMb2dpYyBCVgotMDAyNDU1ICAgICAoYmFzZSAxNikJCU11TG9naWMgQlYKLQkJCQlPbGl2aWVyIHZhbiBOb29ydHN0cmFhdCA0Ci0JCQkJU2NoaWVkYW0gWkggMzEyNExBCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjQtNTYgICAoaGV4KQkJMldpcmUKLTAwMjQ1NiAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTU4ICAgKGhleCkJCVBBIEJhc3Rpb24gQ0MKLTAwMjQ1OCAgICAgKGJhc2UgMTYpCQlQQSBCYXN0aW9uIENDCi0JCQkJOTcsIGxpdGVyIEssIEJ1ZGR5b25ub3Zza3kgYXZlLgotCQkJCVJvc3Rvdi1vbi1Eb24gIDM0NDAxMQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yNC01OSAgIChoZXgpCQlBQkIgU1RPVFotS09OVEFLVCBHbWJICi0wMDI0NTkgICAgIChiYXNlIDE2KQkJQUJCIFNUT1RaLUtPTlRBS1QgR21iSAotCQkJCUVwcGVsaGVpbWVyIFN0cmFzc2UgODIKLQkJCQlTVE8vS0UxCi0JCQkJSGVpZGVsYmVyZyAgNjkxMjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LTVBICAgKGhleCkJCU5hbmppbmcgUGFuZGEgRWxlY3Ryb25pY3MgQ29tcGFueSBMaW1pdGVkCi0wMDI0NUEgICAgIChiYXNlIDE2KQkJTmFuamluZyBQYW5kYSBFbGVjdHJvbmljcyBDb21wYW55IExpbWl0ZWQKLQkJCQlaaG9uZ3NoYW4gRWFzdFJvYWQgMzAxLAotCQkJCU5BTkpJTkcgSklBTkdTVSAyMTAwMTYKLQkJCQlDSElOQQotCi0wMC0yNC01QiAgIChoZXgpCQlSQUlET04gVEVDSE5PTE9HWSwgSU5DLgotMDAyNDVCICAgICAoYmFzZSAxNikJCVJBSURPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJNEYtOCwgTk8uMTYsIExhbmUgNjA5LCBTZWMuNSwgQ2h1bmctSHNpbiBSZC4sCi0JCQkJU2FuLUNodW5nIENpdHkgVGFpcGVpIGNvdW50eSwgMjQxNTkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTVDICAgKGhleCkJCURlc2lnbi1Db20gVGVjaG5vbG9naWVzIFB0eS4gTHRkLgotMDAyNDVDICAgICAoYmFzZSAxNikJCURlc2lnbi1Db20gVGVjaG5vbG9naWVzIFB0eS4gTHRkLgotCQkJCTE0IFJlZGxhbmQgRHJpdmUKLQkJCQlNaXRjaGFtIFZpY3RvcmlhIDMxMzIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjQtNUQgICAoaGV4KQkJVGVyYmVyZyBiZXN0dXJpbmdzdGVjaG5pZWsgQi5WLgotMDAyNDVEICAgICAoYmFzZSAxNikJCVRlcmJlcmcgYmVzdHVyaW5nc3RlY2huaWVrIEIuVi4KLQkJCQlMYWdlIERpamstTm9vcmQgMwotCQkJCUlKc3NlbHN0ZWluIFV0cmVjaHQgMzQwMSBWQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI0LTVFICAgKGhleCkJCUhpdmlzaW9uIENvLixsdGQKLTAwMjQ1RSAgICAgKGJhc2UgMTYpCQlIaXZpc2lvbiBDby4sbHRkCi0JCQkJMjIwMS0yMjAyLCBDT0ZDTyBQcm9wZXJ0eSBUb3dlciwKLQkJCQkzcmQgQmFvJ2FuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwMQotCQkJCUNISU5BCi0KLTAwLTI0LTVGICAgKGhleCkJCVZpbmUgVGVsZWNvbSBDTy4sTHRkLgotMDAyNDVGICAgICAoYmFzZSAxNikJCVZpbmUgVGVsZWNvbSBDTy4sTHRkLgotCQkJCTE5MS00LCA0RiwgQW55YW5nLWRvbmcsIE1hbmFuLWd1Ci0JCQkJQW55YW5nLXNpIEd5ZW9uZ2dpLWRvIDQzMC0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjAgICAoaGV4KQkJR2lhdmFsIFNjaWVuY2UgRGV2ZWxvcG1lbnQgQ28uIEx0ZC4KLTAwMjQ2MCAgICAgKGJhc2UgMTYpCQlHaWF2YWwgU2NpZW5jZSBEZXZlbG9wbWVudCBDby4gTHRkLgotCQkJCTU4IEJlaSBTaSBIdWFuIFhpIFJkCi0JCQkJSWRlYWwgUGxhemEsIFN1aXRlIDQxMwotCQkJCUJlaWppbmcgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMjQtNjEgICAoaGV4KQkJU2hpbiBXYW5nIFRlY2guCi0wMDI0NjEgICAgIChiYXNlIDE2KQkJU2hpbiBXYW5nIFRlY2guCi0JCQkJNjMyLTYyLCBHdXJvLURvbmcsIEd1cm8tR3UKLQkJCQkxMDUtSG8sIEMtRG9uZywgR3Vyb2N1bGF0aW9uIERlcHQuCi0JCQkJU2VvdWwgIDE1Mi04NjYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjIgICAoaGV4KQkJUmF5em9uZSBDb3Jwb3JhdGlvbgotMDAyNDYyICAgICAoYmFzZSAxNikJCVJheXpvbmUgQ29ycG9yYXRpb24KLQkJCQkjMjAwOCwgQi1Eb25nLCBTYW1obyBCTERHCi0JCQkJWWFuZ2phZTItRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy05NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjMgICAoaGV4KQkJUGh5YnJpZGdlIEluYwotMDAyNDYzICAgICAoYmFzZSAxNikJCVBoeWJyaWRnZSBJbmMKLQkJCQkxMjAwIFNwZWVycyBSb2FkCi0JCQkJVW5pdCAzNwotCQkJCU9ha3ZpbGxlIE9udGFyaW8gTDZMMlg0Ci0JCQkJQ0FOQURBCi0KLTAwLTI0LTY0ICAgKGhleCkJCUJyaWRnZSBUZWNobm9sb2dpZXMgQ28gQVMKLTAwMjQ2NCAgICAgKGJhc2UgMTYpCQlCcmlkZ2UgVGVjaG5vbG9naWVzIENvIEFTCi0JCQkJTT9sbGVwYXJrZW4gNAotCQkJCU9zbG8gIDA0NTkKLQkJCQlOT1JXQVkKLQotMDAtMjQtNjUgICAoaGV4KQkJRWxlbnRlYwotMDAyNDY1ICAgICAoYmFzZSAxNikJCUVsZW50ZWMKLQkJCQk0MDEtMTMgQ2h1bmdneWUtUmksRG9uZ3Rhbi1NeXVuCi0JCQkJSHdhc3VuZyBLeXVuZ2dpIDQ0NS04MTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjYgICAoaGV4KQkJVW5pdHJvbiBudgotMDAyNDY2ICAgICAoYmFzZSAxNikJCVVuaXRyb24gbnYKLQkJCQlGcmFucmtpamtsYWFuIDI3Ci0JCQkJUG9wZXJpbmdlIFctdmwgODk3MAotCQkJCUJFTEdJVU0KLQotMDAtMjQtNjcgICAoaGV4KQkJQU9DIEludGVybmF0aW9uYWwgKEV1cm9wZSkgR21iSAotMDAyNDY3ICAgICAoYmFzZSAxNikJCUFPQyBJbnRlcm5hdGlvbmFsIChFdXJvcGUpIEdtYkgKLQkJCQlMYWhuc3RyYXNzZSA4NkEKLQkJCQlCZXJsaW4gIDEyMDU1Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC02OCAgIChoZXgpCQlTdW1hdmlzaW9uIFRlY2hub2xvZ2llcyBDby4sTHRkCi0wMDI0NjggICAgIChiYXNlIDE2KQkJU3VtYXZpc2lvbiBUZWNobm9sb2dpZXMgQ28uLEx0ZAotCQkJCTZGLCBCbG9jayBBMiwgUG93ZXIgQ3JlYXRpdmUgQnVpbGRpbmcsTm8uMSBTaGFuZ2RpIEVhc3QgUm9hZCwgSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTI0LTY5ICAgKGhleCkJCVNtYXJ0IERvb3JwaG9uZXMKLTAwMjQ2OSAgICAgKGJhc2UgMTYpCQlTbWFydCBEb29ycGhvbmVzCi0JCQkJU3BpZXZlbGRzdHJhYXQgMjQKLQkJCQlMb2tlcmVuICA5MTYwCi0JCQkJQkVMR0lVTQotCi0wMC0yNC02QSAgIChoZXgpCQlTb2xpZCBZZWFyIENvLiwgTHRkLgotMDAyNDZBICAgICAoYmFzZSAxNikJCVNvbGlkIFllYXIgQ28uLCBMdGQuCi0JCQkJMkYtMSwgTm8uIDk0LCBCYW8tY2h1bmcgUm9hZCwKLQkJCQlIc2luLXRpZW4gQ2l0eSBUYWlwZWkgSHNpZW4gMjMxNDcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTZCICAgKGhleCkJCUNvdmlhLCBJbmMuCi0wMDI0NkIgICAgIChiYXNlIDE2KQkJQ292aWEsIEluYy4KLQkJCQlCZW5leCBTLTMgQmxkZy4sIDMtMjAtOCwgU2hpbnlva29oYW1hLEtvaG9rdS1rdSwKLQkJCQlZb2tvaGFtYS1jaXR5IEthbmFnYXdhLXByZWYuIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMjQtNkMgICAoaGV4KQkJQVJVQkEgTkVUV09SS1MsIElOQy4KLTAwMjQ2QyAgICAgKGJhc2UgMTYpCQlBUlVCQSBORVRXT1JLUywgSU5DLgotCQkJCTEzNDQgQ3Jvc3NtYW4gQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC02RCAgIChoZXgpCQlXZWluemllcmwgRW5naW5lZXJpbmcgR21iSAotMDAyNDZEICAgICAoYmFzZSAxNikJCVdlaW56aWVybCBFbmdpbmVlcmluZyBHbWJICi0JCQkJQmFobmhvZnN0ci4gNgotCQkJCVR5cmxhY2hpbmcgQmF2YXJpYSA4NDU1OAotCQkJCUdFUk1BTlkKLQotMDAtMjQtNkUgICAoaGV4KQkJUGhpaG9uZyBVU0EgQ29ycC4KLTAwMjQ2RSAgICAgKGJhc2UgMTYpCQlQaGlob25nIFVTQSBDb3JwLgotCQkJCTQ3ODAwIEZyZW1vbnQgQmx2ZC4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC02RiAgIChoZXgpCQlPbmRhIENvbW11bmljYXRpb24gc3BhCi0wMDI0NkYgICAgIChiYXNlIDE2KQkJT25kYSBDb21tdW5pY2F0aW9uIHNwYQotCQkJCXZpYSBkZWwgbGF2b3JvIDkKLQkJCQlwb3JkZW5vbmUgIDMzMTcwCi0JCQkJSVRBTFkKLQotMDAtMjQtNzAgICAoaGV4KQkJQVVST1RFQ0ggdWx0cmFzb3VuZCBBUy4KLTAwMjQ3MCAgICAgKGJhc2UgMTYpCQlBVVJPVEVDSCB1bHRyYXNvdW5kIEFTLgotCQkJCVN2aW5nZW4gMQotCQkJCVR5ZGFsIFNyLVRyIE4tNzU5MAotCQkJCU5PUldBWQotCi0wMC0yNC03MSAgIChoZXgpCQlGdXNpb24gTXVsdGlTeXN0ZW1zIGRiYSBGdXNpb24taW8KLTAwMjQ3MSAgICAgKGJhc2UgMTYpCQlGdXNpb24gTXVsdGlTeXN0ZW1zIGRiYSBGdXNpb24taW8KLQkJCQk2MzUwIFMuIDMwMDAgRS4sIDZ0aCBmbG9vcgotCQkJCVNhbHQgbGFrZSBDaXR5IFVUIDg0MTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC03MiAgIChoZXgpCQlSZURyaXZlbiBQb3dlciBJbmMuCi0wMDI0NzIgICAgIChiYXNlIDE2KQkJUmVEcml2ZW4gUG93ZXIgSW5jLgotCQkJCTI0QSBCYXRoIFJkLgotCQkJCUlyb3F1b2lzIE9udGFyaW8gSzBFIDFLMAotCQkJCUNBTkFEQQotCi0wMC0yNC03MyAgIChoZXgpCQkzQ29tIEV1cm9wZSBMdGQKLTAwMjQ3MyAgICAgKGJhc2UgMTYpCQkzQ29tIEV1cm9wZSBMdGQKLQkJCQlQZW9wbGUgQnVpbGRpbmcgMgotCQkJCU1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cy4gSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI0LTc0ICAgKGhleCkJCUF1dHJvbmljYSBGaXJlIEFuZCBTZWN1cmlydHkKLTAwMjQ3NCAgICAgKGJhc2UgMTYpCQlBdXRyb25pY2EgRmlyZSBBbmQgU2VjdXJpcnR5Ci0JCQkJSGFha29uIFZJSSdzIGcuNAotCQkJCVRyb25kaGVpbSBOLTc0ODMKLQkJCQlOT1JXQVkKLQotMDAtMjQtNzUgICAoaGV4KQkJQ29tcGFzcyBTeXN0ZW0oRW1iZWRkZWQgRGVwdC4pCi0wMDI0NzUgICAgIChiYXNlIDE2KQkJQ29tcGFzcyBTeXN0ZW0oRW1iZWRkZWQgRGVwdC4pCi0JCQkJMTQwMyBBQ0UgVGVjaG5vVG93ZXIgOHRoCi0JCQkJMTkxLTcsIEd1cm8tZG9uZywgR3Vyby1HdQotCQkJCVNlb3VsICAxNTItMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTc2ICAgKGhleCkJCVRBUC50dgotMDAyNDc2ICAgICAoYmFzZSAxNikJCVRBUC50dgotCQkJCTE2dzM2MSBTb3V0aCBGcm9udGFnZSBSb2FkCi0JCQkJU3VpdGUgMTI4Ci0JCQkJQnVyciBSaWRnZSBJTCA2MDUyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNzcgICAoaGV4KQkJVGliYm8gVGVjaG5vbG9neQotMDAyNDc3ICAgICAoYmFzZSAxNikJCVRpYmJvIFRlY2hub2xvZ3kKLQkJCQk5Ri0zLCBObyAzMSwgTGFuZSAxNjksIEthbmctTmluZyBTdC4sCi0JCQkJSHNpLUNoaWggVGFpcGVpIEhzaWVuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtNzggICAoaGV4KQkJTWFnIFRlY2ggRWxlY3Ryb25pY3MgQ28gTGltaXRlZAotMDAyNDc4ICAgICAoYmFzZSAxNikJCU1hZyBUZWNoIEVsZWN0cm9uaWNzIENvIExpbWl0ZWQKLQkJCQlGbGF0IC8gUm9vbSBUNzggR09GIEJhbmdrb2sgQnVpbGRpbmcKLQkJCQkxOCBCb25oYW0gU3RyYW5kIFdlc3QKLQkJCQlTaGV1bmcgV2FuIEhLIAotCQkJCUhPTkcgS09ORwotCi0wMC0yNC03OSAgIChoZXgpCQlPcHRlYyBEaXNwbGF5cywgSW5jLgotMDAyNDc5ICAgICAoYmFzZSAxNikJCU9wdGVjIERpc3BsYXlzLCBJbmMuCi0JCQkJNTI4IFMuIDZ0aCBBdmVudWUKLQkJCQlDaXR5IG9mIEluZHVzdHJ5IENhbGlmb3JuaWEgOTE3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTdBICAgKGhleCkJCUZVIFlJIENIRU5HIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDI0N0EgICAgIChiYXNlIDE2KQkJRlUgWUkgQ0hFTkcgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxM0YsIE5vLiAxMDUtMSwgSmlsaW4gUmQuLCBMdWp1IFNoaWFuZywKLQkJCQlUYW95dWFuICAzMzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTdCICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0wMDI0N0IgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLQkJCQk3NjAgTm9ydGggTWFyeSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTdDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI0N0MgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTBWCi0JCQkJREVOTUFSSwotCi0wMC0yNC03RCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNDdEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yNC03RSAgIChoZXgpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZAotMDAyNDdFICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkCi0JCQkJMTQxLCBMQU5FIDM1MSxTRUMuMSwgIFRBSVBJTkcgUkQuCi0JCQkJVFNBT1RVRU4KLQkJCQlOQU5UT1UgNTQyNjEKLQkJCQlUQU5aQU5JQSwgVU5JVEVEIFJFUFVCTElDIE9GCi0KLTAwLTI0LTdGICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyNDdGICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVFggNzUwODItNDM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtODAgICAoaGV4KQkJTWV0ZW9jb250cm9sIEdtYkgKLTAwMjQ4MCAgICAgKGJhc2UgMTYpCQlNZXRlb2NvbnRyb2wgR21iSAotCQkJCVNwaWNoZXJlcnN0cmFzc2UgNDgKLQkJCQlBdWdzYnVyZyBCYXZhcmlhIDg2MTUyCi0JCQkJR0VSTUFOWQotCi0wMC0yNC04MSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMjQ4MSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAyCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtODIgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi0wMDI0ODIgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtODMgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MKLTAwMjQ4MyAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcwotCQkJCTYwLTM5LEthc2FuLWRvbmcsS3VtY2hvbi1rdSwKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNC04NCAgIChoZXgpCQlCYW5nIGFuZCBPbHVmc2VuIE1lZGljb20gYS9zCi0wMDI0ODQgICAgIChiYXNlIDE2KQkJQmFuZyBhbmQgT2x1ZnNlbiBNZWRpY29tIGEvcwotCQkJCUdpbXNpbmdsdW5kdmVqIDIwCi0JCQkJU3RydWVyIERLIERLNzYwMAotCQkJCURFTk1BUksKLQotMDAtMjQtODUgICAoaGV4KQkJQ29udGVYdHJlYW0gTHRkCi0wMDI0ODUgICAgIChiYXNlIDE2KQkJQ29udGVYdHJlYW0gTHRkCi0JCQkJOTQgRW0tSGFNb3NoYXZvdAotCQkJCVBPQiAzMjQ2Ci0JCQkJUGV0YWNoLVRpa3ZhICA0OTUyNwotCQkJCUlTUkFFTAotCi0wMC0yNC04NiAgIChoZXgpCQlEZXNpZ25BcnQgTmV0d29ya3MKLTAwMjQ4NiAgICAgKGJhc2UgMTYpCQlEZXNpZ25BcnQgTmV0d29ya3MKLQkJCQk0IEhhJ2hhcm9zaGV0IFN0Ci0JCQkJUC5PLiBCb3ggMjI3OAotCQkJCVJhJ2FuYW5hICA0MzEwMQotCQkJCUlTUkFFTAotCi0wMC0yNC04NyAgIChoZXgpCQlCbGFja2JvYXJkIEluYy4KLTAwMjQ4NyAgICAgKGJhc2UgMTYpCQlCbGFja2JvYXJkIEluYy4KLQkJCQkyMjYwMSBOb3J0aCAxOXRoIEF2ZW51ZQotCQkJCVN1aXRlIDIwMAotCQkJCVBob2VuaXggQVogODUwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTg4ICAgKGhleCkJCUNlbnRyZSBGb3IgRGV2ZWxvcG1lbnQgT2YgVGVsZW1hdGljcwotMDAyNDg4ICAgICAoYmFzZSAxNikJCUNlbnRyZSBGb3IgRGV2ZWxvcG1lbnQgT2YgVGVsZW1hdGljcwotCQkJCUIwMSwgRWxlY3Ryb25pYyBDaXR5LCBQaGFzZSAxCi0JCQkJSG9zdXIgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwMTAwCi0JCQkJSU5ESUEKLQotMDAtMjQtODkgICAoaGV4KQkJVm9kYWZvbmUgT21uaXRlbCBOLlYuCi0wMDI0ODkgICAgIChiYXNlIDE2KQkJVm9kYWZvbmUgT21uaXRlbCBOLlYuCi0JCQkJVmlhIEplcnZpcyAxMwotCQkJCTEwMDE1IEl2cmVhIFRvcmlubwotCQkJCUlUQUxZCi0KLTAwLTI0LThBICAgKGhleCkJCUthZ2EgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDI0OEEgICAgIChiYXNlIDE2KQkJS2FnYSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQlIb25nbyAyLTItOQotCQkJCUJ1bmt5by1rdQotCQkJCVRva3lvIDExMy04NTAzCi0JCQkJSkFQQU4KLQotMDAtMjQtOEIgICAoaGV4KQkJSFlCVVMgQ08uLCBMVEQuCi0wMDI0OEIgICAgIChiYXNlIDE2KQkJSFlCVVMgQ08uLCBMVEQuCi0JCQkJUm0jIDcwMSwgRGFlcnVuZyBQb3N0IFRvd2VyIDFzdAotCQkJCTIxMi04LCBHdXJvLTNkb25nLCBHdXJvLWd1Ci0JCQkJU0VPVUwgIDE1Mi03OTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtOEMgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDI0OEMgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtOEQgICAoaGV4KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4KLTAwMjQ4RCAgICAgKGJhc2UgMTYpCQlTb255IENvbXB1dGVyIEVudGVydGFpbm1lbnQgSW5jLgotCQkJCTItNi0yMSBNaW5hbWktQW95YW1hLAotCQkJCU1pbmF0by1rdSBUb2t5byAxMDctMDA2MgotCQkJCUpBUEFOCi0KLTAwLTI0LThFICAgKGhleCkJCUluZm93YXJlIFpSdC4KLTAwMjQ4RSAgICAgKGJhc2UgMTYpCQlJbmZvd2FyZSBaUnQuCi0JCQkJSHVzZWcgdS4gMTAvYQotCQkJCUJ1ZGFwZXN0ICAxMjIzCi0JCQkJSFVOR0FSWQotCi0wMC0yNC04RiAgIChoZXgpCQlETy1NT05JWAotMDAyNDhGICAgICAoYmFzZSAxNikJCURPLU1PTklYCi0JCQkJIzUwMSwgS29yZWFuYSBCL0QKLQkJCQk3LTUsIFN1bmFlLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA4MgotCQkJCUtPUkVBLCBERU1PQ1JBVElDIFBFT1BMRSdTIFJFUFVCTEkKLQotMDAtMjQtOTAgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTFRECi0wMDI0OTAgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTFRECi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTkxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTAwMjQ5MSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTkyICAgKGhleCkJCU1vdG9yb2xhLCBCcm9hZGJhbmQgU29sdXRpb25zIEdyb3VwCi0wMDI0OTIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEJyb2FkYmFuZCBTb2x1dGlvbnMgR3JvdXAKLQkJCQkxMTAxIE1hcmluYSBWaWxsYWdlIFBhcmt3YXkKLQkJCQlTdWl0ZSAyMDAKLQkJCQlBbGFtZWRhIENBIDk0NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC05MyAgIChoZXgpCQlNb3Rvcm9sYSwgSW5jCi0wMDI0OTMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYwotCQkJCTExMDEgTWFyaW5hIFZpbGxhZ2UgUGFya3dheQotCQkJCVN1aXRlIDIwMAotCQkJCUFsYW1lZGEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTk0ICAgKGhleCkJCVNoZW56aGVuIEJhb3hpbiBUZWNoIENPLiwgTHRkLgotMDAyNDk0ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEJhb3hpbiBUZWNoIENPLiwgTHRkLgotCQkJCTZGIEh1YWxlIEJMREcuLCBaaG9uZ2hhbmdiZWkgUmQuLAotCQkJCUZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgwMjgKLQkJCQlDSElOQQotCi0wMC0yNC05NSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyNDk1ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIFUuUy4gSGlnaHdheSA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtOTYgICAoaGV4KQkJR2luemluZ2VyIGVsZWN0cm9uaWMgc3lzdGVtcwotMDAyNDk2ICAgICAoYmFzZSAxNikJCUdpbnppbmdlciBlbGVjdHJvbmljIHN5c3RlbXMKLQkJCQlHZXdlcmJlZ2ViaWV0IFBpcmF0aCAxNgotCQkJCVdlbmcgVXBwZXIgQXVzdHJpYSA0OTUyCi0JCQkJQVVTVFJJQQotCi0wMC0yNC05NyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI0OTcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtOTggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNDk4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTk5ICAgKGhleCkJCUFxdWlsYSBUZWNobm9sb2dpZXMKLTAwMjQ5OSAgICAgKGJhc2UgMTYpCQlBcXVpbGEgVGVjaG5vbG9naWVzCi0JCQkJODQyOUEgV2FzaGluZ3RvbiBQbGFjZSBORQotCQkJCUFsYnVxdWVycXVlIE5NIDg3MTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC05QSAgIChoZXgpCQlCZWlqaW5nIFpob25nY2h1YW5nIFRlbGVjb21tdW5pY2F0aW9uIFRlc3QgQ28uLCBMdGQuCi0wMDI0OUEgICAgIChiYXNlIDE2KQkJQmVpamluZyBaaG9uZ2NodWFuZyBUZWxlY29tbXVuaWNhdGlvbiBUZXN0IENvLiwgTHRkLgotCQkJCTEyLTE0LEJsb2NrIEMsQmVpamluZyBJbnRlcm5hdGlvbmFsIEJ1aWxkaW5nLCMxOCxaaG9uZyBHdWFuIEN1biBOYW4gUm9hZCwKLQkJCQlIYWkgRGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4MQotCQkJCUNISU5BCi0KLTAwLTI0LTlCICAgKGhleCkJCUFjdGlvbiBTdGFyIEVudGVycHJpc2UgQ28uLCBMdGQuCi0wMDI0OUIgICAgIChiYXNlIDE2KQkJQWN0aW9uIFN0YXIgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQkxMEYsIE5vLjE1OSwgVGEtVHVuZyBSZC4sIFNlYy4yCi0JCQkJSHNpY2hpaCBUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC05QyAgIChoZXgpCQlCaW1lbmcgQ29tdW5pY2F0aW9uIFN5c3RlbSBDby4gTHRkCi0wMDI0OUMgICAgIChiYXNlIDE2KQkJQmltZW5nIENvbXVuaWNhdGlvbiBTeXN0ZW0gQ28uIEx0ZAotCQkJCUxldmVsIDE2L2YsIFRvd2VyIEIsU2lub3RyYW5zIFBsYXphLE5vLjQzLCBYaSBaaGkgTWVuIE5vcnRoZXJuIFJvYWQsSGFpIGRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwNDQKLQkJCQlDSElOQQotCi0wMC0yNC05RCAgIChoZXgpCQlORVMgVGVjaG5vbG9neSBJbmMuCi0wMDI0OUQgICAgIChiYXNlIDE2KQkJTkVTIFRlY2hub2xvZ3kgSW5jLgotCQkJCSMyMDUgQUNFIFRlY2hub3Rvd2VyIDEwLCA0NzAtNSBHYXNhbi1kb25nCi0JCQkJR2V1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My03ODkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtOUUgICAoaGV4KQkJQURDLUVsZWt0cm9uaWsgR21iSAotMDAyNDlFICAgICAoYmFzZSAxNikJCUFEQy1FbGVrdHJvbmlrIEdtYkgKLQkJCQlPc3RpbmdzdHJhc3NlIDEzYgotCQkJCUhhbW0gTlJXIEQtNTkwNjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LTlGICAgKGhleCkJCVJJTSBUZXN0aW5nIFNlcnZpY2VzCi0wMDI0OUYgICAgIChiYXNlIDE2KQkJUklNIFRlc3RpbmcgU2VydmljZXMKLQkJCQk0NDAgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCA1UjkKLQkJCQlDQU5BREEKLQotMDAtMjQtQTAgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjRBMCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUExICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDI0QTEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1BMiAgIChoZXgpCQlIb25nIEtvbmcgTWlkZGxld2FyZSBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMjRBMiAgICAgKGJhc2UgMTYpCQlIb25nIEtvbmcgTWlkZGxld2FyZSBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlSb29tIDEzMTUgLExlaWdodG9uIENlbnRyZSw3NyBMZWlnaHRvbiBSb2FkCi0JCQkJQ2F1c2V3YXkgQmF5ICA4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMjQtQTMgICAoaGV4KQkJU29uaW0gVGVjaG5vbG9naWVzIEluYwotMDAyNEEzICAgICAoYmFzZSAxNikJCVNvbmltIFRlY2hub2xvZ2llcyBJbmMKLQkJCQkxODc1IFMuR3JhbnQgU3RyZWV0Ci0JCQkJU3RlIzYyMAotCQkJCVNhbm1hdGVvIENBIDk0NDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1BNCAgIChoZXgpCQlTaWtsdSBDb21tdW5pY2F0aW9uCi0wMDI0QTQgICAgIChiYXNlIDE2KQkJU2lrbHUgQ29tbXVuaWNhdGlvbgotCQkJCTcgU2hvaGFtIFN0LiwgLCAzcmQgRmxvb3IKLQkJCQlQZXRhaCBUaWt2YSAgNDk1MTcKLQkJCQlJU1JBRUwKLQotMDAtMjQtQTUgICAoaGV4KQkJQnVmZmFsbyBJbmMuCi0wMDI0QTUgICAgIChiYXNlIDE2KQkJQnVmZmFsbyBJbmMuCi0JCQkJMTUsIFNoaWJhdGEgSG9uZG9yaSA0LWNob21lCi0JCQkJTWluYW1pLWt1LE5hZ295YSBBaWNoaSBQcmVmLiA0NTctODUyMAotCQkJCUpBUEFOCi0KLTAwLTI0LUE2ICAgKGhleCkJCVRFTEVTVEFSIERJR0lUQUwgR21iSAotMDAyNEE2ICAgICAoYmFzZSAxNikJCVRFTEVTVEFSIERJR0lUQUwgR21iSAotCQkJCVZ1bGthbmhvaGUgLyBCNDEwCi0JCQkJRHJlaXMgLSBCcnVjayAgNTQ1NTIKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LUE3ICAgKGhleCkJCUFkdmFuY2VkIFZpZGVvIENvbW11bmljYXRpb25zIEluYy4KLTAwMjRBNyAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBWaWRlbyBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJNjMzIFcgNXRoIFN0cmVldAotCQkJCTY4MDAKLQkJCQlMb3MgQW5nZWxlcyBDQSA5MDAxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQTggICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotMDAyNEE4ICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkCi0JCQkJUm9zZXZpbGxlIENhbGlmb3JuaWEgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUE5ICAgKGhleCkJCUFnIExlYWRlciBUZWNobm9sb2d5Ci0wMDI0QTkgICAgIChiYXNlIDE2KQkJQWcgTGVhZGVyIFRlY2hub2xvZ3kKLQkJCQkyMjAyIFMgUml2ZXJzaWRlIERyLgotCQkJCVBPIEJveCAyMzQ4Ci0JCQkJQW1lcyBJQSA1MDAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQUEgICAoaGV4KQkJRHljb3IgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMjRBQSAgICAgKGJhc2UgMTYpCQlEeWNvciBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTE4NTEgOTQgU3RyZWV0Ci0JCQkJRWRtb250b24gQWxiZXJ0YSBUNk4gMUU2Ci0JCQkJQ0FOQURBCi0KLTAwLTI0LUFCICAgKGhleCkJCUE3IEVuZ2luZWVyaW5nLCBJbmMuCi0wMDI0QUIgICAgIChiYXNlIDE2KQkJQTcgRW5naW5lZXJpbmcsIEluYy4KLQkJCQkxMjEyNyBLaXJraGFtIFJvYWQgU3VpdGUgMTAxCi0JCQkJUG93YXkgQ0EgOTIwNjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUFDICAgKGhleCkJCUhhbmd6aG91IERQdGVjaCBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDI0QUMgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgRFB0ZWNoIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlIdWFyb25nIFNoaWRhaSBCbGQuLCBOTy4zODgwLEppYW5nLU5hbiBBdmVudWUsIEJpbmppYW5nIERpc3RyaWN0Ci0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDUxCi0JCQkJQ0hJTkEKLQotMDAtMjQtQUQgICAoaGV4KQkJQWRvbGYgVGhpZXMgR21iaCAmIENvLiBLRwotMDAyNEFEICAgICAoYmFzZSAxNikJCUFkb2xmIFRoaWVzIEdtYmggJiBDby4gS0cKLQkJCQlIYXVwdHN0ci4gNzYKLQkJCQlHb3R0aW5nZW4gIDM3MDgzCi0JCQkJR0VSTUFOWQotCi0wMC0yNC1BRSAgIChoZXgpCQlNb3JwaG8KLTAwMjRBRSAgICAgKGJhc2UgMTYpCQlNb3JwaG8KLQkJCQkxOCBjaGF1c3NlZSBKdWxlcyBDZXNhcgotCQkJCU9TTlkgIDk1NTIwCi0JCQkJRlJBTkNFCi0KLTAwLTI0LUFGICAgKGhleCkJCUVjaG9TdGFyIFRlY2hub2xvZ2llcwotMDAyNEFGICAgICAoYmFzZSAxNikJCUVjaG9TdGFyIFRlY2hub2xvZ2llcwotCQkJCTk0IEludmVybmVzcyBDaXJjbGUKLQkJCQlFbmdsZXdvb2QgQ08gODAxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUIwICAgKGhleCkJCUVTQUIgQUIKLTAwMjRCMCAgICAgKGJhc2UgMTYpCQlFU0FCIEFCCi0JCQkJQm94IDgwMDQKLQkJCQlMaW5kaG9sbXNhbGxlbiA5Ci0JCQkJR290aGVuYnVyZyAgU0UtNDAyIDc3Ci0JCQkJU1dFREVOCi0KLTAwLTI0LUIxICAgKGhleCkJCUNvdWxvbWIgVGVjaG5vbG9naWVzCi0wMDI0QjEgICAgIChiYXNlIDE2KQkJQ291bG9tYiBUZWNobm9sb2dpZXMKLQkJCQkxNjkyIERlbGwgQXZlCi0JCQkJQ2FtcGJlbGwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUIyICAgKGhleCkJCU5ldGdlYXIKLTAwMjRCMiAgICAgKGJhc2UgMTYpCQlOZXRnZWFyCi0JCQkJMzUwIEVhc3QgUGx1bWVyaWEgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQjMgICAoaGV4KQkJR3JhZi1TeXRlY28gR21iSCAmIENvLiBLRwotMDAyNEIzICAgICAoYmFzZSAxNikJCUdyYWYtU3l0ZWNvIEdtYkggJiBDby4gS0cKLQkJCQlLYWlzZXJzdHIuIDE4Ci0JCQkJVHVuaW5nZW4gQmFkZW4tV3VydHRlbWJlcmcgNzg2MDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LUI0ICAgKGhleCkJCUVTQ0FUUk9OSUMgR21iSAotMDAyNEI0ICAgICAoYmFzZSAxNikJCUVTQ0FUUk9OSUMgR21iSAotCQkJCVd1ZXJ6YnVyZ2VyIFN0ci4gOAotCQkJCUxhYXR6ZW4gTG93ZXIgU2F4b255IDMwODgwCi0JCQkJR0VSTUFOWQotCi0wMC0yNC1CNSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMjRCNSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyLTQzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUI2ICAgKGhleCkJCVNlYWdhdGUgVGVjaG5vbG9neQotMDAyNEI2ICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neQotCQkJCTEyODAgRGlzYyBEcml2ZQotCQkJCVNoYWtvcGVlIE1OIDU1Mzc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1CNyAgIChoZXgpCQlHcmlkUG9pbnQsIEluYy4KLTAwMjRCNyAgICAgKGJhc2UgMTYpCQlHcmlkUG9pbnQsIEluYy4KLQkJCQkyODAxIENsYXJlbmRvbiBCbHZkLgotCQkJCVN1aXRlIDEwMAotCQkJCUFybGluZ3RvbiBWQSAyMjIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQjggICAoaGV4KQkJZnJlZSBhbGxpYW5jZSBzZG4gYmhkCi0wMDI0QjggICAgIChiYXNlIDE2KQkJZnJlZSBhbGxpYW5jZSBzZG4gYmhkCi0JCQkJQi0zLTIgUGxhemEgRGFtYXMKLQkJCQlTcmkgSGFydGFtYXMKLQkJCQlLdWFsYSBMdW1wdXIgV1AgNTA0ODAKLQkJCQlNQUxBWVNJQQotCi0wMC0yNC1COSAgIChoZXgpCQlXdWhhbiBIaWdoZWFzeSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uTHRkCi0wMDI0QjkgICAgIChiYXNlIDE2KQkJV3VoYW4gSGlnaGVhc3kgRWxlY3Ryb25pYyBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLkx0ZAotCQkJCUJsZGcgQTIgT3B0aWNzIFZhbGxleSBTb2Z0d2FyZSBQYXJrLEd1YW5zaGFuIDFzdCBSZCwKLQkJCQlXdWhhbiBIdWJlaSA0MzAwMzMKLQkJCQlDSElOQQotCi0wMC0yNC1CQSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAyNEJBICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1CQiAgIChoZXgpCQlDRU5UUkFMIENvcnBvcmF0aW9uCi0wMDI0QkIgICAgIChiYXNlIDE2KQkJQ0VOVFJBTCBDb3Jwb3JhdGlvbgotCQkJCU5JU1NPIDE3IEJsZGcuN0YgMi0xNC0zMAotCQkJCVNoaW55b2tvaGFtYSBLb3Vob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0yNC1CQyAgIChoZXgpCQlIdVJvYiBDby4sTHRkCi0wMDI0QkMgICAgIChiYXNlIDE2KQkJSHVSb2IgQ28uLEx0ZAotCQkJCTIxMjEsIEplb25nd2FuZy1Eb25nCi0JCQkJU2loZXVuZy1TaSBHeWVvbmdnaS1EbyA0MjktNzkzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LUJEICAgKGhleCkJCUhhaW56bCBJbmR1c3RyaWVzeXN0ZW1lIEdtYkgKLTAwMjRCRCAgICAgKGJhc2UgMTYpCQlIYWluemwgSW5kdXN0cmllc3lzdGVtZSBHbWJICi0JCQkJSW5kdXN0cmllemVpbGUgNTYKLQkJCQlQb3N0ZmFjaCAxMDAKLQkJCQlMaW56IFVwcGVyIEF1c3RyaWEgNDAyMQotCQkJCUFVU1RSSUEKLQotMDAtMjQtQkUgICAoaGV4KQkJU29ueSBDb3Jwb3JhdGlvbgotMDAyNEJFICAgICAoYmFzZSAxNikJCVNvbnkgQ29ycG9yYXRpb24KLQkJCQlHb3RlbnlhbWEgVGVjLiA1LTEtMTIKLQkJCQlLaXRhc2hpbmFnYXdhCi0JCQkJU2hpbmFnYXdhLWt1IFRva3lvIDE0MS0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMjQtQkYgICAoaGV4KQkJQ0lBVAotMDAyNEJGICAgICAoYmFzZSAxNikJCUNJQVQKLQkJCQkzMCwgQXZlbnVlIEplYW4gRmFsY29ubmllcgotCQkJCUN1bG96ICAwMTM1MAotCQkJCUZSQU5DRQotCi0wMC0yNC1DMCAgIChoZXgpCQlOVEkgQ09NT0RPIElOQwotMDAyNEMwICAgICAoYmFzZSAxNikJCU5USSBDT01PRE8gSU5DCi0JCQkJUm0jNTAyLCBLYW5neW9uZyBCbGRnLCBTdW5nbmFtLWRvbmcKLQkJCQlDaGV1bmd3b24tZ3UKLQkJCQlTdW5nbmFtLXNpIEt5dW5nZ2ktZG8gNDYyLTgyNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNC1DMSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyNEMxICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJTm8uMTE4NyBCaW5BbiBSb2FkLCBCaW5qaWFuZyBEaXN0cmljdCwKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwNTMKLQkJCQlDSElOQQotCi0wMC0yNC1DMiAgIChoZXgpCQlBc3VtbyBDby4sTHRkLgotMDAyNEMyICAgICAoYmFzZSAxNikJCUFzdW1vIENvLixMdGQuCi0JCQkJT3lhLUtpdGEgMS0zLTEKLQkJCQlFQklOQS1DSVRZIEtBTkFHQVdBLVBSRUYuIDI0My0wNDE5Ci0JCQkJSkFQQU4KLQotMDAtMjQtQzMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNEMzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUM0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjRDNCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1DNSAgIChoZXgpCQlNZXJpZGlhbiBBdWRpbyBMaW1pdGVkCi0wMDI0QzUgICAgIChiYXNlIDE2KQkJTWVyaWRpYW4gQXVkaW8gTGltaXRlZAotCQkJCTExIExhdGhhbSBSb2FkCi0JCQkJSHVudGluZ2RvbiBDYW1icyBQRTI5IDZZRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI0LUM2ICAgKGhleCkJCUhhZ2VyIEVsZWN0cm8gU0FTCi0wMDI0QzYgICAgIChiYXNlIDE2KQkJSGFnZXIgRWxlY3RybyBTQVMKLQkJCQkxMzIsIGJvdWxldmFyZCBkJ0V1cm9wZQotCQkJCU9iZXJuYWkgQmFzLVJoaW4gNjcyMTUKLQkJCQlGUkFOQ0UKLQotMDAtMjQtQzcgICAoaGV4KQkJTW9iaWxhcm0gTHRkCi0wMDI0QzcgICAgIChiYXNlIDE2KQkJTW9iaWxhcm0gTHRkCi0JCQkJNzY4IENhbm5pbmcgSGlnaHdheQotCQkJCUFwcGxlY3Jvc3MKLQkJCQlXZXN0ZXJuIEF1c3RyYWxpYSA2MTUzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTI0LUM4ICAgKGhleCkJCUJyb2FkYmFuZCBTb2x1dGlvbnMgR3JvdXAKLTAwMjRDOCAgICAgKGJhc2UgMTYpCQlCcm9hZGJhbmQgU29sdXRpb25zIEdyb3VwCi0JCQkJMTEwMSBNYXJpbmEgVmlsbGFnZSBQYXJrd2F5Ci0JCQkJQWxhbWVkYSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQzkgICAoaGV4KQkJQnJvYWRiYW5kIFNvbHV0aW9ucyBHcm91cAotMDAyNEM5ICAgICAoYmFzZSAxNikJCUJyb2FkYmFuZCBTb2x1dGlvbnMgR3JvdXAKLQkJCQkxMTAxIE1hcmluYSBWaWxsYWdlIFBhcmt3YXkKLQkJCQlBbGFtZWRhIENBIDk0NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1DQSAgIChoZXgpCQlUb2JpaSBUZWNobm9sb2d5IEFCCi0wMDI0Q0EgICAgIChiYXNlIDE2KQkJVG9iaWkgVGVjaG5vbG9neSBBQgotCQkJCUthcmxzcm92YWdlbiAyRAotCQkJCURhbmRlcnlkICAxODI1MwotCQkJCVNXRURFTgotCi0wMC0yNC1DQiAgIChoZXgpCQlBdXRvbmV0IE1vYmlsZQotMDAyNENCICAgICAoYmFzZSAxNikJCUF1dG9uZXQgTW9iaWxlCi0JCQkJMjIzNSBNZXJjdXJ5IFdheSBTdGUuIDE0NQotCQkJCVNhbnRhIFJvc2EgQ0EgOTU0MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUNDICAgKGhleCkJCUZhc2NpbmF0aW9ucyBUb3lzIGFuZCBHaWZ0cywgSW5jLgotMDAyNENDICAgICAoYmFzZSAxNikJCUZhc2NpbmF0aW9ucyBUb3lzIGFuZCBHaWZ0cywgSW5jLgotCQkJCTE5MjI0IERlcyBNb2luZXMgV2F5IFMKLQkJCQlTdGUgMTAwCi0JCQkJU2VhdHRsZSBXYXNoaW5ndG9uIDk4MTQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1DRCAgIChoZXgpCQlXaWxsb3cgR2FyYWdlLCBJbmMuCi0wMDI0Q0QgICAgIChiYXNlIDE2KQkJV2lsbG93IEdhcmFnZSwgSW5jLgotCQkJCTY4IFdpbGxvdyBSZC4KLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1DRSAgIChoZXgpCQlFeGVsdGVjaCBJbmMKLTAwMjRDRSAgICAgKGJhc2UgMTYpCQlFeGVsdGVjaCBJbmMKLQkJCQk3MzE3IEphY2sgTmV3ZWxsIEJsdmQgTm9ydGgKLQkJCQlGb3J0IFdvcnRoIFRYIDc2MTE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1DRiAgIChoZXgpCQlJbnNjYXBlIERhdGEgQ29ycG9yYXRpb24KLTAwMjRDRiAgICAgKGJhc2UgMTYpCQlJbnNjYXBlIERhdGEgQ29ycG9yYXRpb24KLQkJCQkxNjExIFNvdXRoIE1haW4gU3RyZWV0Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUQwICAgKGhleCkJCVNoZW56aGVuIFNPR09PRCBJbmR1c3RyeSBDTy4sTFRELgotMDAyNEQwICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFNPR09PRCBJbmR1c3RyeSBDTy4sTFRELgotCQkJCVNPR09PRCBTY2llbmNlIFBhcmssQXZpYXRpb24gUm9hZCxYaVhpYW5nIFRvd24sQmFvJ2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nemhvdSA1MTgxMDIKLQkJCQlDSElOQQotCi0wMC0yNC1EMSAgIChoZXgpCQlUaG9tc29uIEluYy4KLTAwMjREMSAgICAgKGJhc2UgMTYpCQlUaG9tc29uIEluYy4KLQkJCQkxMDEgV2VzdCAxMDNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyOTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUQyICAgKGhleCkJCUFza2V5IENvbXB1dGVyCi0wMDI0RDIgICAgIChiYXNlIDE2KQkJQXNrZXkgQ29tcHV0ZXIKLQkJCQkxMEYsTk8uMTE5LENISUVOS0FORyBSRCxDSFVORy1ITyxUQUlQRUksCi0JCQkJVEFJV0FOIFRBSVBFSSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LUQzICAgKGhleCkJCVFVQUxJQ0EgSW5jLgotMDAyNEQzICAgICAoYmFzZSAxNikJCVFVQUxJQ0EgSW5jLgotCQkJCTUtMjktMTUsVG95bywKLQkJCQlLb3RvLWt1LAotCQkJCVRva3lvICAxMzUtMDAxNgotCQkJCUpBUEFOCi0KLTAwLTI0LUQ0ICAgKGhleCkJCUZSRUVCT1ggU0EKLTAwMjRENCAgICAgKGJhc2UgMTYpCQlGUkVFQk9YIFNBCi0JCQkJOCBydWUgZGUgbGEgVmlsbGUgbCdFdmVxdWUKLQkJCQlQQVJJUyBJZEYgNzUwMDgKLQkJCQlGUkFOQ0UKLQotMDAtMjQtRDUgICAoaGV4KQkJV2lud2FyZCBJbmR1c3RyaWFsIExpbWl0ZWQKLTAwMjRENSAgICAgKGJhc2UgMTYpCQlXaW53YXJkIEluZHVzdHJpYWwgTGltaXRlZAotCQkJCVJtLjcsIFAgRmxvb3IsIFRvd2VyIEEsCi0JCQkJSHVuZyBIb20gQ29tbWVyY2lhbCBDZW50cmUsCi0JCQkJSG9uZ0tvbmcgIDg1MgotCQkJCUNISU5BCi0KLTAwLTI0LUQ2ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyNEQ2ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjQtRDcgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDI0RDcgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yNC1EOCAgIChoZXgpCQlJbFN1bmcgUHJlY2lzaW9uCi0wMDI0RDggICAgIChiYXNlIDE2KQkJSWxTdW5nIFByZWNpc2lvbgotCQkJCTE4Mi0yLCBKZWdpLXJpLCBKZW9uZ25hbS1teWVvbgotCQkJCUh3YW5zZW9uZy1zaSBHeWVvbmdnaS1kbyA0NDUtOTY0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LUQ5ICAgKGhleCkJCUJJQ09NLCBJbmMuCi0wMDI0RDkgICAgIChiYXNlIDE2KQkJQklDT00sIEluYy4KLQkJCQk3NTUgTWFpbiBTdHJlZXQKLQkJCQlCdWlsZGluZyAzCi0JCQkJTW9ucm9lIENUIDA2NDY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1EQSAgIChoZXgpCQlJbm5vdmFyIFN5c3RlbXMgTGltaXRlZAotMDAyNERBICAgICAoYmFzZSAxNikJCUlubm92YXIgU3lzdGVtcyBMaW1pdGVkCi0JCQkJMTIxNTUgQ29tbWlzc2lvbmVyIERyaXZlCi0JCQkJUE8gQm94IDY2OAotCQkJCU5vcnRoIEphY2tzb24gT2hpbyA0NDQ1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtREIgICAoaGV4KQkJQWxjb2hvbCBNb25pdG9yaW5nIFN5c3RlbXMKLTAwMjREQiAgICAgKGJhc2UgMTYpCQlBbGNvaG9sIE1vbml0b3JpbmcgU3lzdGVtcwotCQkJCTEyNDEgVy4gTWluZXJhbCBBdmVudWUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlMaXR0bGV0b24gQ08gODAxMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LURDICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLTAwMjREQyAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtREQgICAoaGV4KQkJQ2VudHJhaywgSW5jLgotMDAyNEREICAgICAoYmFzZSAxNikJCUNlbnRyYWssIEluYy4KLQkJCQkyMDcgUGVubnMgVHJhaWwKLQkJCQlOZXd0b3duIFBBIDE4OTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1ERSAgIChoZXgpCQlHTE9CQUwgVGVjaG5vbG9neSBJbmMuCi0wMDI0REUgICAgIChiYXNlIDE2KQkJR0xPQkFMIFRlY2hub2xvZ3kgSW5jLgotCQkJCU5vLjE2OCxTaGFuc2hhbiBSZC4sIFdhbmdjaHVuIEluZHVzdHJpYWwgUGFyaywKLQkJCQlOaW5nYm8gIDMxNTE3NgotCQkJCUNISU5BCi0KLTAwLTI0LURGICAgKGhleCkJCURpZ2l0YWxib3ggRXVyb3BlIEdtYkgKLTAwMjRERiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsYm94IEV1cm9wZSBHbWJICi0JCQkJU2FuZHN0cmFzc2UgNjUKLQkJCQlSYXRpbmdlbiAgNDA4NzgKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LUUwICAgKGhleCkJCURTIFRlY2gsIExMQwotMDAyNEUwICAgICAoYmFzZSAxNikJCURTIFRlY2gsIExMQwotCQkJCTIyMTAgSHV0dG9uIERyaXZlCi0JCQkJU3VpdGUgMTAwCi0JCQkJQ2Fycm9sbHRvbiBUWCA3NTAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtRTEgICAoaGV4KQkJQ29udmV5IENvbXB1dGVyIENvcnAuCi0wMDI0RTEgICAgIChiYXNlIDE2KQkJQ29udmV5IENvbXB1dGVyIENvcnAuCi0JCQkJMTMwMiBFLiBDb2xsaW5zIEJsdmQuCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtRTIgICAoaGV4KQkJSEFTRUdBV0EgRUxFQ1RSSUMgQ08uLExURC4KLTAwMjRFMiAgICAgKGJhc2UgMTYpCQlIQVNFR0FXQSBFTEVDVFJJQyBDTy4sTFRELgotCQkJCTUtNi0yMCBTSElPRQotCQkJCUxJR0hUTklORyBURUNITk9MT0dZIENFTlRFUgotCQkJCUFNQUdBU0FLSSBIWU9HTyA2NjEtMDk3NgotCQkJCUpBUEFOCi0KLTAwLTI0LUUzICAgKGhleCkJCUNBTyBHcm91cAotMDAyNEUzICAgICAoYmFzZSAxNikJCUNBTyBHcm91cAotCQkJCTQ2MjggV2VzdCBTa3loYXdrIERyaXZlCi0JCQkJV2VzdCBKb3JkYW4gVVQgODQwODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUU0ICAgKGhleCkJCVdpdGhpbmdzCi0wMDI0RTQgICAgIChiYXNlIDE2KQkJV2l0aGluZ3MKLQkJCQkzN2JpcyBydWUgZHUgR2VuZXJhbCBMZWNsZXJjCi0JCQkJSXNzeSBsZXMgTW91bGluZWF1eCAgOTI0NDIKLQkJCQlGUkFOQ0UKLQotMDAtMjQtRTUgICAoaGV4KQkJU2VlciBUZWNobm9sb2d5LCBJbmMKLTAwMjRFNSAgICAgKGJhc2UgMTYpCQlTZWVyIFRlY2hub2xvZ3ksIEluYwotCQkJCTI2ODEgUGFybGV5cyBXYXkKLQkJCQlTdWl0ZSAyMDEKLQkJCQlTYWx0IExha2UgQ2l0eSBVdGFoIDg0MTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1FNiAgIChoZXgpCQlJbiBNb3Rpb24gVGVjaG5vbG9neSBJbmMuCi0wMDI0RTYgICAgIChiYXNlIDE2KQkJSW4gTW90aW9uIFRlY2hub2xvZ3kgSW5jLgotCQkJCSMzNTAsIDYyNSBBZ25lcyBTdHJlZXQKLQkJCQlOZXcgV2VzdG1pbnN0ZXIgQkMgVjNNIDVZNAotCQkJCUNBTkFEQQotCi0wMC0yNC1FNyAgIChoZXgpCQlQbGFzdGVyIE5ldHdvcmtzCi0wMDI0RTcgICAgIChiYXNlIDE2KQkJUGxhc3RlciBOZXR3b3JrcwotCQkJCTkzNSBIYW1pbHRvbiBBdmVudWUKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1LTE0MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUU4ICAgKGhleCkJCURlbGwgSW5jLgotMDAyNEU4ICAgICAoYmFzZSAxNikJCURlbGwgSW5jLgotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtRTkgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4sIFN0b3JhZ2UgU3lzdGVtIERpdmlzaW9uCi0wMDI0RTkgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4sIFN0b3JhZ2UgU3lzdGVtIERpdmlzaW9uCi0JCQkJNDE2LCBNYWV0YW4gM0RvbmcsIFllb25ndG9uZy1HdQotCQkJCVN1d29uIENpdHkgR2V5b25nZ2kgRG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNC1FQSAgIChoZXgpCQlpcmlzLUdtYkggaW5mcmFyZWQgJiBpbnRlbGxpZ2VudCBzZW5zb3JzCi0wMDI0RUEgICAgIChiYXNlIDE2KQkJaXJpcy1HbWJIIGluZnJhcmVkICYgaW50ZWxsaWdlbnQgc2Vuc29ycwotCQkJCU9zdGVuZHN0cmFzc2UgMS0xNAotCQkJCUJlcmxpbiAgMTI0NTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LUVCICAgKGhleCkJCUNsZWFyUGF0aCBOZXR3b3JrcywgSW5jLgotMDAyNEVCICAgICAoYmFzZSAxNikJCUNsZWFyUGF0aCBOZXR3b3JrcywgSW5jLgotCQkJCTE5NDAgRS4gTWFyaXBvc2EgQXZlLgotCQkJCVN1aXRlIDE1MAotCQkJCUVsIFNlZ3VuZG8gQ0EgOTAyNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUVDICAgKGhleCkJCVVuaXRlZCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMdGQuCi0wMDI0RUMgICAgIChiYXNlIDE2KQkJVW5pdGVkIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQk1L0YsOXRoIEJ1aWxkaW5nLFNvZnR3YXJlIFBhcmssMm5kIEtlamktemhvbmcgUm9hZCxIaWdoLVRlY2ggSW5kdXN0cmlhbCBQYXJrCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTI0LUVEICAgKGhleCkJCVlUIEVsZWMuIENvLC5MdGQuCi0wMDI0RUQgICAgIChiYXNlIDE2KQkJWVQgRWxlYy4gQ28sLkx0ZC4KLQkJCQlCbG9jayBCLDIgRmxvb3IgLEJhbyBZaW5nIEluZHVzdHJpYWwgRGlzdHJpY3QsCi0JCQkJTG9uZyBHYW5nIExvbmdYaSwKLQkJCQlXdSBMaWFuIEx1IFNoZW56aGVuIDUxODExNgotCQkJCUNISU5BCi0KLTAwLTI0LUVFICAgKGhleCkJCVd5bm1heCBJbmMuCi0wMDI0RUUgICAgIChiYXNlIDE2KQkJV3lubWF4IEluYy4KLQkJCQkxOEYuLCBOby4gNzUsIFNlYy4gMSwgWGluVGFpIDV0aCAgUmQuLAotCQkJCVhpemhpICBDaXR5LCBUYWlwZWkgQ291bnR5IDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtRUYgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLTAwMjRFRiAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kICAyMjE4OAotCQkJCVNXRURFTgotCi0wMC0yNC1GMCAgIChoZXgpCQlTZWFub2RlcwotMDAyNEYwICAgICAoYmFzZSAxNikJCVNlYW5vZGVzCi0JCQkJQmF0aW1lbnQgUGxhdG9uCi0JCQkJMjUgQnZkIFZpY3RvciBIdWdvCi0JCQkJQ29sb21pZXJzICAzMTc3MAotCQkJCUZSQU5DRQotCi0wMC0yNC1GMSAgIChoZXgpCQlTaGVuemhlbiBGYW5oYWkgU2FuamlhbmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDI0RjEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gRmFuaGFpIFNhbmppYW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTNGPz9HdWFuZ2NhaSBYaW50aWFuZGkgQnVpbGRpbmcsTmFuc2hhbiBSZCxOYW5zaGFuLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTQKLQkJCQlDSElOQQotCi0wMC0yNC1GMiAgIChoZXgpCQlVbmlwaG9uZSBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMjRGMiAgICAgKGJhc2UgMTYpCQlVbmlwaG9uZSBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQlOby4gMjUsIENodS1LdW5nIDNyZCBMYW5lLCBDaHUtSG91IFRzdW5nLCBKZW4tV3UgSHNpYW5nLAotCQkJCUthb2hzaXVuZyBIc2llbiAgODE0NDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LUYzICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyNEYzICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjQtRjQgICAoaGV4KQkJS2FtaW5hcmlvIFRlY2hub2xvZ2llcyBMdGQuCi0wMDI0RjQgICAgIChiYXNlIDE2KQkJS2FtaW5hcmlvIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJWWF0YW0gSW5kdXN0cmlhbCBQYXJrCi0JCQkJQ1BDIEJ1aWxkaW5nCi0JCQkJWW9rbmVhbSBJU1JBRUwgMjA2OTIKLQkJCQlJU1JBRUwKLQotMDAtMjQtRjUgICAoaGV4KQkJTkRTIFN1cmdpY2FsIEltYWdpbmcKLTAwMjRGNSAgICAgKGJhc2UgMTYpCQlORFMgU3VyZ2ljYWwgSW1hZ2luZwotCQkJCTU3NTAgSGVsbHllciBBdmUuCi0JCQkJU2FuIEpvc2UgQ0EuIDk1MTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1GNiAgIChoZXgpCQlNSVlPU0hJIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OCi0wMDI0RjYgICAgIChiYXNlIDE2KQkJTUlZT1NISSBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotCQkJCTMtMTMtMjEgS1VTSElSTwotCQkJCUtBV0FOSVNISS1DSVRZIEhZT0dPLVBSRUYuIDY2Ni0wMDI0Ci0JCQkJSkFQQU4KLQotMDAtMjQtRjcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNEY3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUY4ICAgKGhleCkJCVRlY2huaWNhbCBTb2x1dGlvbnMgQ29tcGFueSBMdGQuCi0wMDI0RjggICAgIChiYXNlIDE2KQkJVGVjaG5pY2FsIFNvbHV0aW9ucyBDb21wYW55IEx0ZC4KLQkJCQlCb3ggMzE3NTAKLQkJCQlXaGl0ZWhvcnNlIFl1a29uIFkxQSA2TDMKLQkJCQlDQU5BREEKLQotMDAtMjQtRjkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNEY5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUZBICAgKGhleCkJCUhpbGdlciB1LiBLZXJuIEdNQkgKLTAwMjRGQSAgICAgKGJhc2UgMTYpCQlIaWxnZXIgdS4gS2VybiBHTUJICi0JCQkJS2FlZmVydGFsZXIgU3RyYXNzZSAyNTMtMjU1Ci0JCQkJTWFubmhlaW0gQmFkZW4tV3VlcnR0ZW1iZXJnIDY4MTY3Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC1GQiAgIChoZXgpCQlQUklWQVRFCi0wMDI0RkIgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTI0LUZDICAgKGhleCkJCVF1b1BpbiBDby4sIEx0ZC4KLTAwMjRGQyAgICAgKGJhc2UgMTYpCQlRdW9QaW4gQ28uLCBMdGQuCi0JCQkJIzEwOSwgUiZEIENlbnRlciBmb3IgQWR2YW5jZWQgVGVjaG5vbG9neSA2OCBZYXRhcC1kb25nIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbSBLeXVuZ2tpLWRvIDQ2My04MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtRkQgICAoaGV4KQkJUHJvc2lsaWVudCBUZWNobm9sb2dpZXMgQUIKLTAwMjRGRCAgICAgKGJhc2UgMTYpCQlQcm9zaWxpZW50IFRlY2hub2xvZ2llcyBBQgotCQkJCUFyc3RhYW5nc3ZhZ2VuIDI1ICgzcmQgZmxvb3IpLCAoQm94IDQ3MjMxKQotCQkJCVN0b2NraG9sbSAgU0UtMTAwNzQKLQkJCQlTV0VERU4KLQotMDAtMjQtRkUgICAoaGV4KQkJQVZNIEdtYkgKLTAwMjRGRSAgICAgKGJhc2UgMTYpCQlBVk0gR21iSAotCQkJCUFsdC1Nb2FiaXQgOTUKLQkJCQlCZXJsaW4gIDEwNTU5Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC1GRiAgIChoZXgpCQlRTG9naWMgQ29ycG9yYXRpb24KLTAwMjRGRiAgICAgKGJhc2UgMTYpCQlRTG9naWMgQ29ycG9yYXRpb24KLQkJCQkyNjY1MCBBbGlzbyBWaWVqbyBQYXJrd2F5Ci0JCQkJQWxpc28gVmllam8gQ0EgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTAwICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjUwMCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0wMSAgIChoZXgpCQlKU0MgIlN1cGVydGVsIgotMDAyNTAxICAgICAoYmFzZSAxNikJCUpTQyAiU3VwZXJ0ZWwiCi0JCQkJMzhBIFBldHJvZ3JhZHNrYXlhIGVtYi4KLQkJCQlTdC5QZXRlcnNidXJnICAxOTcxMDEKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjUtMDIgICAoaGV4KQkJTmF0dXJhbFBvaW50Ci0wMDI1MDIgICAgIChiYXNlIDE2KQkJTmF0dXJhbFBvaW50Ci0JCQkJUE8gQm94IDIzMTcKLQkJCQlDb3J2YWxsaXMgT1IgOTczMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTAzICAgKGhleCkJCUlCTSBDb3JwCi0wMDI1MDMgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkyMDUxIE1pc3Npb24gQ29sbGVnZSBCbHZkIAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0wNCAgIChoZXgpCQlWYWxpYW50IENvbW11bmljYXRpb25zIExpbWl0ZWQKLTAwMjUwNCAgICAgKGJhc2UgMTYpCQlWYWxpYW50IENvbW11bmljYXRpb25zIExpbWl0ZWQKLQkJCQk3MS0xIFNoaXZhamkgTWFyZwotCQkJCU5ldyBEZWxoaSBEZWxoaSAxMTAwMTUKLQkJCQlJTkRJQQotCi0wMC0yNS0wNSAgIChoZXgpCQlla3MgRW5nZWwgR21iSCAmIENvLiBLRwotMDAyNTA1ICAgICAoYmFzZSAxNikJCWVrcyBFbmdlbCBHbWJIICYgQ28uIEtHCi0JCQkJU2NodWV0emVuc3RyYXNzZSAyCi0JCQkJV2VuZGVuLUhpbGxtaWNrZSBOUlcgNTc0ODIKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTA2ICAgKGhleCkJCUEuSS4gQU5USVRBQ0NIRUdHSU8gSVRBTElBIFNSTAotMDAyNTA2ICAgICAoYmFzZSAxNikJCUEuSS4gQU5USVRBQ0NIRUdHSU8gSVRBTElBIFNSTAotCQkJCVZJQ09MTyBERUxMRSBEQU1FIDQKLQkJCQlCT0xPR05BICA0MDEyNAotCQkJCUlUQUxZCi0KLTAwLTI1LTA3ICAgKGhleCkJCUFTVEFLIEluYy4KLTAwMjUwNyAgICAgKGJhc2UgMTYpCQlBU1RBSyBJbmMuCi0JCQkJMTkxMSBIYXJ0b2cgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMDggICAoaGV4KQkJTWFxdWV0IENhcmRpb3B1bG1vbmFyeSBBRwotMDAyNTA4ICAgICAoYmFzZSAxNikJCU1hcXVldCBDYXJkaW9wdWxtb25hcnkgQUcKLQkJCQlIZWNoaW5nZXIgU3RyYXNzZSAzOAotCQkJCUhpcnJsaW5nZW4gIDcyMTQ1Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS0wOSAgIChoZXgpCQlTSEFSRVRST05JQyBHcm91cCBMVEQKLTAwMjUwOSAgICAgKGJhc2UgMTYpCQlTSEFSRVRST05JQyBHcm91cCBMVEQKLQkJCQlTaGFKaW5nLEJhbydhbiBab25lLAotCQkJCVNoZW5aaGVuIEd1YW5nZG9uZyA1MTgxMDQKLQkJCQlDSElOQQotCi0wMC0yNS0wQSAgIChoZXgpCQlTZWN1cml0eSBFeHBlcnQgQ28uIEx0ZAotMDAyNTBBICAgICAoYmFzZSAxNikJCVNlY3VyaXR5IEV4cGVydCBDby4gTHRkCi0JCQkJOEYtMywgTm8uMiwgSmlhbiA4dGggUmQuLAotCQkJCUpob25naGUgVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjUtMEIgICAoaGV4KQkJQ0VOVFJPRkFDVE9SICBJTkMKLTAwMjUwQiAgICAgKGJhc2UgMTYpCQlDRU5UUk9GQUNUT1IgIElOQwotCQkJCVJvYWQgVG93biwgVG9ydG9sYSwgUC5PLkJveCAzMTYxLAotCQkJCVRvcnRvbGEgIDE5NDI5NQotCQkJCVZJUkdJTiBJU0xBTkRTLCBCUklUSVNICi0KLTAwLTI1LTBDICAgKGhleCkJCUVuZXJ0cmFjCi0wMDI1MEMgICAgIChiYXNlIDE2KQkJRW5lcnRyYWMKLQkJCQk5NCBSaXZlciBSZAotCQkJCVN1aXRlIDEwMAotCQkJCUh1ZHNvbiBOSCAwMzA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMEQgICAoaGV4KQkJR1pUIFRlbGtvbS1UZWxtb3Igc3AuIHogby5vLgotMDAyNTBEICAgICAoYmFzZSAxNikJCUdaVCBUZWxrb20tVGVsbW9yIHNwLiB6IG8uby4KLQkJCQlNaWNraWV3aWN6YSA1LzcKLQkJCQlHZGFuc2sgcG9tb3Jza2llIDgwLTQyNQotCQkJCVBPTEFORAotCi0wMC0yNS0wRSAgIChoZXgpCQlndCBnZXJtYW4gdGVsZW1hdGljcyBnbWJoCi0wMDI1MEUgICAgIChiYXNlIDE2KQkJZ3QgZ2VybWFuIHRlbGVtYXRpY3MgZ21iaAotCQkJCVJhbmtlc3RyYXNzZSAyNgotCQkJCUJlcmxpbiAgRC0xMDc4OQotCQkJCUdFUk1BTlkKLQotMDAtMjUtMEYgICAoaGV4KQkJT24tUmFtcCBXaXJlbGVzcywgSW5jLgotMDAyNTBGICAgICAoYmFzZSAxNikJCU9uLVJhbXAgV2lyZWxlc3MsIEluYy4KLQkJCQkxNjg4NSBXZXN0IEJlcm5hcmRvIERyaXZlCi0JCQkJU3VpdGUgMjU1Ci0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0xMCAgIChoZXgpCQlQaWNvLVRlc2xhIE1hZ25ldGljIFRoZXJhcGllcwotMDAyNTEwICAgICAoYmFzZSAxNikJCVBpY28tVGVzbGEgTWFnbmV0aWMgVGhlcmFwaWVzCi0JCQkJNzg1MiBTb3V0aCBFbGF0aQotCQkJCSMyMDIKLQkJCQlMaXR0bGV0b24gQ08gODAxMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTExICAgKGhleCkJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotMDAyNTExICAgICAoYmFzZSAxNikJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotCQkJCU5PLiAyMzksIFNlYy4gMiwgVGkgRGluZyBCbHZkLgotCQkJCVRhaXBlaSBUYWl3YW4gMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTEyICAgKGhleCkJCVpURSBDb3Jwb3JhdGlvbgotMDAyNTEyICAgICAoYmFzZSAxNikJCVpURSBDb3Jwb3JhdGlvbgotCQkJCTEyRiwgUiZEIEJ1aWxkaW5nLCBadGUsIEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTI1LTEzICAgKGhleCkJCUNYUCBESUdJVEFMIEJWCi0wMDI1MTMgICAgIChiYXNlIDE2KQkJQ1hQIERJR0lUQUwgQlYKLQkJCQlEZSBSZXVsdmVyIDk3QQotCQkJCUVuc2NoZWRlICA3NTQ0UlQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yNS0xNCAgIChoZXgpCQlQQyBXb3J0aCBJbnQnbCBDby4sIEx0ZC4KLTAwMjUxNCAgICAgKGJhc2UgMTYpCQlQQyBXb3J0aCBJbnQnbCBDby4sIEx0ZC4KLQkJCQkxOEYsIE5vLjEwMCwgSHNpbi1UYWktV3UgUmQuLCBTZWMuIDEsCi0JCQkJSHNpLUNoaWgsIFRhaXBlaSAyMjEwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjUtMTUgICAoaGV4KQkJU0ZSCi0wMDI1MTUgICAgIChiYXNlIDE2KQkJU0ZSCi0JCQkJNDIgUXVhaSBkdSBwb2ludCBkdSBqb3VyCi0JCQkJQm91bG9nbmUgYmlsbGFuY291cnQgLiA5MjY1OQotCQkJCUZSQU5DRQotCi0wMC0yNS0xNiAgIChoZXgpCQlJbnRlZ3JhdGVkIERlc2lnbiBUb29scywgSW5jLgotMDAyNTE2ICAgICAoYmFzZSAxNikJCUludGVncmF0ZWQgRGVzaWduIFRvb2xzLCBJbmMuCi0JCQkJMTIwMiBFIFBhcmsgQXZlbnVlCi0JCQkJVGFsbGFoYXNzZWUgRkwgMzIzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTE3ICAgKGhleCkJCVZlbm50aXMsIExMQwotMDAyNTE3ICAgICAoYmFzZSAxNikJCVZlbm50aXMsIExMQwotCQkJCTExMzAxIEphbWVzIFN0cmVldAotCQkJCUhvbGxhbmQgTUkgNDk0MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTE4ICAgKGhleCkJCVBvd2VyIFBMVVMgQ29tbXVuaWNhdGlvbnMgQUcKLTAwMjUxOCAgICAgKGJhc2UgMTYpCQlQb3dlciBQTFVTIENvbW11bmljYXRpb25zIEFHCi0JCQkJQW0gRXhlcnppZXJwbGF0eiAyCi0JCQkJTWFubmhlaW0gQmFkZW4gV3VlcnR0ZW1iZXJnIDY4MTY3Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS0xOSAgIChoZXgpCQlWaWFhcyBJbmMKLTAwMjUxOSAgICAgKGJhc2UgMTYpCQlWaWFhcyBJbmMKLQkJCQkzMTc1IFNvdXRoIFdpbmNoZXN0ZXIgQmx2ZAotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0xQSAgIChoZXgpCQlQc2liZXIgRGF0YSBTeXN0ZW1zIEluYy4KLTAwMjUxQSAgICAgKGJhc2UgMTYpCQlQc2liZXIgRGF0YSBTeXN0ZW1zIEluYy4KLQkJCQk3MDc1LUsgTWlzc2lvbiBHb3JnZSBSZAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMUIgICAoaGV4KQkJUGhpbGlwcyBDYXJlU2VydmFudAotMDAyNTFCICAgICAoYmFzZSAxNikJCVBoaWxpcHMgQ2FyZVNlcnZhbnQKLQkJCQlIaWdoIFRlY2ggQ2FtcHVzIDI3Ci0JCQkJRWluZGhvdmVuIE5vb3JkLUJyYWJhbnQgNTY1NiBBRQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI1LTFDICAgKGhleCkJCUVEVAotMDAyNTFDICAgICAoYmFzZSAxNikJCUVEVAotCQkJCTE0MDAgU1cgQ29tcHRvbgotCQkJCVN1aXRlIDMxNQotCQkJCUJlYXZlcnRvbiBPUiA5NzAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMUQgICAoaGV4KQkJRFNBIEVuY29yZSwgTExDCi0wMDI1MUQgICAgIChiYXNlIDE2KQkJRFNBIEVuY29yZSwgTExDCi0JCQkJNTAgUG9jb25vIFJkCi0JCQkJQnJvb2tmaWVsZCBDVCAwNjgwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMUUgICAoaGV4KQkJUk9URUwgVEVDSE5PTE9HSUVTCi0wMDI1MUUgICAgIChiYXNlIDE2KQkJUk9URUwgVEVDSE5PTE9HSUVTCi0JCQkJQ0VWSVpMSURFUkUgMTQuQ0QgTk86Mi8xOSBCQUxHQVQKLQkJCQlBTktBUkEgIDA2NTIwCi0JCQkJVFVSS0VZCi0KLTAwLTI1LTFGICAgKGhleCkJCVpZTlVTIFZJU0lPTiBJTkMuCi0wMDI1MUYgICAgIChiYXNlIDE2KQkJWllOVVMgVklTSU9OIElOQy4KLQkJCQkxLTEtNy0xQQotCQkJCVNBR0FNSUhBUkEgS0FOQUdBV0EgMjI5LTAwMzkKLQkJCQlKQVBBTgotCi0wMC0yNS0yMCAgIChoZXgpCQlTTUEgUmFpbHdheSBUZWNobm9sb2d5IEdtYkgKLTAwMjUyMCAgICAgKGJhc2UgMTYpCQlTTUEgUmFpbHdheSBUZWNobm9sb2d5IEdtYkgKLQkJCQlNaXJhbXN0ci4gODcKLQkJCQlLYXNzZWwgSGVzc2UgMzQxMjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTIxICAgKGhleCkJCUxvZ2l0ZWsgRWxlY3Ryb25pYyBTeXN0ZW1zLCBJbmMuCi0wMDI1MjEgICAgIChiYXNlIDE2KQkJTG9naXRlayBFbGVjdHJvbmljIFN5c3RlbXMsIEluYy4KLQkJCQk1NjIyIEVkZ2Vtb29yIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMjIgICAoaGV4KQkJQVNSb2NrIEluY29ycG9yYXRpb24KLTAwMjUyMiAgICAgKGJhc2UgMTYpCQlBU1JvY2sgSW5jb3Jwb3JhdGlvbgotCQkJCTJGLiwgTm8uIDM3LCBTZWMuIDIsIEpob25neWFuZyBTLiBSZC4sIEJlaXRvdSBEaXN0cmljdCwKLQkJCQlUYWlwZWkgVGFpd2FuIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjUtMjMgICAoaGV4KQkJT0NQIEluYy4KLTAwMjUyMyAgICAgKGJhc2UgMTYpCQlPQ1AgSW5jLgotCQkJCTE4NDk1IFMgRGl4aWUgSHd5ICAgIFBNQiAxMDcKLQkJCQlNaWFtaSBGbG9yaWRhIDMzMTU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0yNCAgIChoZXgpCQlMaWdodGNvbW0gVGVjaG5vbG9neSBDby4sIEx0ZAotMDAyNTI0ICAgICAoYmFzZSAxNikJCUxpZ2h0Y29tbSBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJOS9GLixIaS1UZWNoIFZlbnR1cmUgUGFyayBUb3dlciBBLAotCQkJCVRpYW4gYW4gQ3liZXIgUGFyayxGdXRpYW4KLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMjUtMjUgICAoaGV4KQkJQ1RFUkEgTmV0d29ya3MgTHRkLgotMDAyNTI1ICAgICAoYmFzZSAxNikJCUNURVJBIE5ldHdvcmtzIEx0ZC4KLQkJCQkyNCBJbWJlciBTdC4KLQkJCQlQZXRhY2gtVGlrdmEgIDQ5NTExMQotCQkJCUlTUkFFTAotCi0wMC0yNS0yNiAgIChoZXgpCQlHZW51aW5lIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMjUyNiAgICAgKGJhc2UgMTYpCQlHZW51aW5lIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlLbGluZ2VsbmJlcmcgQmxkZy4KLQkJCQkxLTEzLTEyIFNoaW4tWW9rb2hhbWEgS291aG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMjUtMjcgICAoaGV4KQkJQml0cm9kZSBDb3JwLgotMDAyNTI3ICAgICAoYmFzZSAxNikJCUJpdHJvZGUgQ29ycC4KLQkJCQkxNjQyIE1hbnVmYWN0dXJlcnMgRHIuCi0JCQkJRmVudG9uIE1PIDYzMDI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0yOCAgIChoZXgpCQlEYWlkbyBTaWduYWwgQ28uLCBMdGQuCi0wMDI1MjggICAgIChiYXNlIDE2KQkJRGFpZG8gU2lnbmFsIENvLiwgTHRkLgotCQkJCTItMjAtMgotCQkJCU5ha2Fpa2VnYW1pCi0JCQkJT2h0YS1rdSBUT0tZTyAxNDYtODY3OAotCQkJCUpBUEFOCi0KLTAwLTI1LTI5ICAgKGhleCkJCUNPTUVMSVQgR1JPVVAgUy5QLkEKLTAwMjUyOSAgICAgKGJhc2UgMTYpCQlDT01FTElUIEdST1VQIFMuUC5BCi0JCQkJRE9OIEFSUklHT05JIE4uIDUKLQkJCQlTQU4gTE9SRU5aTywgUk9WRVRUQSBCRVJHQU1PIDI0MDIwCi0JCQkJSVRBTFkKLQotMDAtMjUtMkEgICAoaGV4KQkJQ2hlbmdkdSBHZWVZYSBUZWNobm9sb2d5IENvLixMVEQKLTAwMjUyQSAgICAgKGJhc2UgMTYpCQlDaGVuZ2R1IEdlZVlhIFRlY2hub2xvZ3kgQ28uLExURAotCQkJCTUwIFNodXhpIFJvYWQsCi0JCQkJQ2hlbmdkdSBTaUNodWFuIDYxMDA5MQotCQkJCUNISU5BCi0KLTAwLTI1LTJCICAgKGhleCkJCVN0aXJsaW5nIEVuZXJneSBTeXN0ZW1zCi0wMDI1MkIgICAgIChiYXNlIDE2KQkJU3RpcmxpbmcgRW5lcmd5IFN5c3RlbXMKLQkJCQlTYW5kaWEgTmF0aW9uYWwgTGFicyAtIE5TVFRGCi0JCQkJUE8gQm94IDU4MDAgTVMgMTEyNwotCQkJCUFsYnVxdWVycXVlIE5NIDg3MTg1LTExMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTJDICAgKGhleCkJCUVudG91cmFnZSBTeXN0ZW1zLCBJbmMuCi0wMDI1MkMgICAgIChiYXNlIDE2KQkJRW50b3VyYWdlIFN5c3RlbXMsIEluYy4KLQkJCQk3OTAxIEpvbmVzIEJyYW5jaCBEcml2ZQotCQkJCVN1aXRlIDcwMAotCQkJCU1jTGVhbiBWaXJnaW5pYSAyMjEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMkQgICAoaGV4KQkJS2lyeXVuZyBFbGVjdHJvbmljcwotMDAyNTJEICAgICAoYmFzZSAxNikJCUtpcnl1bmcgRWxlY3Ryb25pY3MKLQkJCQlLaXJ5dW5nIEJsZGcuIDY4Ni03MCwgU2luZGFlYmFuZy1kb25nCi0JCQkJRG9uZ2phay1ndSwKLQkJCQlTZW91bCAgMTU2LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS0yRSAgIChoZXgpCQlDaXNjbyBTUFZURwotMDAyNTJFICAgICAoYmFzZSAxNikJCUNpc2NvIFNQVlRHCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTJGICAgKGhleCkJCUVuZXJneSwgSW5jLgotMDAyNTJGICAgICAoYmFzZSAxNikJCUVuZXJneSwgSW5jLgotCQkJCTMyOTcgUGFjaWZpYyBTdHJlZXQKLQkJCQlDaGFybGVzdG9uIFNDIDI5NDE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0zMCAgIChoZXgpCQlBZXRhcyBTeXN0ZW1zIEluYy4KLTAwMjUzMCAgICAgKGJhc2UgMTYpCQlBZXRhcyBTeXN0ZW1zIEluYy4KLQkJCQkzQTMsIE5vLiAxLCBMaUhzaW4gUm9hZCBJCi0JCQkJSHNpbkNodSBUYWl3YW4gMzAwNzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTMxICAgKGhleCkJCUNsb3VkIEVuZ2luZXMsIEluYy4KLTAwMjUzMSAgICAgKGJhc2UgMTYpCQlDbG91ZCBFbmdpbmVzLCBJbmMuCi0JCQkJODU3IE1vbnRnb21lcnkgU3RyZWV0Ci0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMzIgICAoaGV4KQkJRGlnaXRhbCBSZWNvcmRlcnMKLTAwMjUzMiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFJlY29yZGVycwotCQkJCTQwMTggUGF0cmlvdCBEcml2ZQotCQkJCVN1aXRlIDEwMAotCQkJCUR1cmhhbSBOQyAyNzcwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMzMgICAoaGV4KQkJV0lUVEVOU1RFSU4gQUcKLTAwMjUzMyAgICAgKGJhc2UgMTYpCQlXSVRURU5TVEVJTiBBRwotCQkJCVdhbHRlci1XaXR0ZW5zdGVpbi1TdHIuIDEKLQkJCQlJZ2Vyc2hlaW0gIDk3OTk5Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS0zNSAgIChoZXgpCQlNaW5pbWF4IEdtYkggJiBDbyBLRwotMDAyNTM1ICAgICAoYmFzZSAxNikJCU1pbmltYXggR21iSCAmIENvIEtHCi0JCQkJSW5kdXN0cmllc3RyYXNzZSAxMC8xMgotCQkJCUJhZCBPbGRlc2xvZSBTSCAyMzg0MAotCQkJCUdFUk1BTlkKLQotMDAtMjUtMzYgICAoaGV4KQkJT2tpIEVsZWN0cmljIEluZHVzdHJ5IENvLiwgTHRkLgotMDAyNTM2ICAgICAoYmFzZSAxNikJCU9raSBFbGVjdHJpYyBJbmR1c3RyeSBDby4sIEx0ZC4KLQkJCQkxLTE2LTggQ2h1b3UKLQkJCQlXYXJhYmktc2hpIFNhaXRhbWEgMzM1LTg1MTAKLQkJCQlKQVBBTgotCi0wMC0yNS0zNyAgIChoZXgpCQlSdW5jb20gVGVjaG5vbG9naWVzIEx0ZC4KLTAwMjUzNyAgICAgKGJhc2UgMTYpCQlSdW5jb20gVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQkxMSBNb3NoZSBMZXZpIFN0ci4gMTF0aCBGbHIuCi0JCQkJVU1JIEJ1aWxkaW5nCi0JCQkJUmlzaG9uIExlIFppb24gIDc1NjU4Ci0JCQkJSVNSQUVMCi0KLTAwLTI1LTM4ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuLCBNZW1vcnkgRGl2aXNpb24KLTAwMjUzOCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLiwgTWVtb3J5IERpdmlzaW9uCi0JCQkJU2FuICMxNiBCYW53b2wtRG9uZywgVGFlYW4tR3UKLQkJCQlId2FzdW5nIENpdHkgR3llb25nZ2kgRG8gNDQ1LTcwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS0zOSAgIChoZXgpCQlJZlRBIEdtYkgKLTAwMjUzOSAgICAgKGJhc2UgMTYpCQlJZlRBIEdtYkgKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDMzCi0JCQkJR3JvZWJlbnplbGwgQmF2YXJpYSA4MjE5NAotCQkJCUdFUk1BTlkKLQotMDAtMjUtM0EgICAoaGV4KQkJQ0VWQSwgTHRkLgotMDAyNTNBICAgICAoYmFzZSAxNikJCUNFVkEsIEx0ZC4KLQkJCQkyIE1hc2tpdCBTdHJlZXQuCi0JCQkJUC5PLiBCb3ggMjA2OAotCQkJCUhlcnplbGlhICA0NjEyMAotCQkJCUlTUkFFTAotCi0wMC0yNS0zQiAgIChoZXgpCQlkaW4gRGlldG1hciBOb2NrZXIgRmFjaWxpdHltYW5hZ2VtZW50IEdtYkgKLTAwMjUzQiAgICAgKGJhc2UgMTYpCQlkaW4gRGlldG1hciBOb2NrZXIgRmFjaWxpdHltYW5hZ2VtZW50IEdtYkgKLQkJCQlLb3R6aW5hc3RyYXNzZSA1Ci0JCQkJTGlueiBVcHBlciBBdXN0cmlhIDQwMzAKLQkJCQlBVVNUUklBCi0KLTAwLTI1LTNDICAgKGhleCkJCTJXaXJlCi0wMDI1M0MgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0zRCAgIChoZXgpCQlEUlMgQ29uc29saWRhdGVkIENvbnRyb2xzCi0wMDI1M0QgICAgIChiYXNlIDE2KQkJRFJTIENvbnNvbGlkYXRlZCBDb250cm9scwotCQkJCTIxIFNvdXRoIFN0cmVldAotCQkJCURhbmJ1cnkgQ1QgMDY4MTAtODE0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtM0UgICAoaGV4KQkJU2Vuc3VzIE1ldGVyaW5nIFN5c3RlbXMKLTAwMjUzRSAgICAgKGJhc2UgMTYpCQlTZW5zdXMgTWV0ZXJpbmcgU3lzdGVtcwotCQkJCTk5NDEgVy4gRW1lcmFsZCBTdHJlZXQKLQkJCQlCb2lzZSBJZGFobyA4MzcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNDAgICAoaGV4KQkJUXVhc2FyIFRlY2hub2xvZ2llcywgSW5jLgotMDAyNTQwICAgICAoYmFzZSAxNikJCVF1YXNhciBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNzAxIEJhcnJldHQgTGFrZXMgQm91bGV2YXJkCi0JCQkJU3VpdGUgMTYwCi0JCQkJS2VubmVzYXcgR0EgMzAxNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTQxICAgKGhleCkJCU1hcXVldCBDcml0aWNhbCBDYXJlIEFCCi0wMDI1NDEgICAgIChiYXNlIDE2KQkJTWFxdWV0IENyaXRpY2FsIENhcmUgQUIKLQkJCQlSb250Z2VudmFnZW4gMgotCQkJCVNvbG5hICBTRS0xNzEgOTUKLQkJCQlTV0VERU4KLQotMDAtMjUtNDIgICAoaGV4KQkJUGl0dGFzb2Z0Ci0wMDI1NDIgICAgIChiYXNlIDE2KQkJUGl0dGFzb2Z0Ci0JCQkJIzkxMyBEYWVyeXVuZyBUZWNobm8gVG93biA4dGggNDgxLTExZ2EKLQkJCQlHYXNhbi1kb25nCi0JCQkJR2V1bWNoZW9uLWd1IFNlb3VsIDE1My03NzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtNDMgICAoaGV4KQkJTU9ORVlURUNICi0wMDI1NDMgICAgIChiYXNlIDE2KQkJTU9ORVlURUNICi0JCQkJUnVhIEd1aXJhdGluZ2EgOTMxIHVuLiAxMDMKLQkJCQlDaGFjYXJhIEluZ2xlc2EKLQkJCQlTYW8gUGF1bG8gU1AgMDQxNDEtMDAxCi0JCQkJQlJBWklMCi0KLTAwLTI1LTQ0ICAgKGhleCkJCUxvSmFjayBDb3Jwb3JhdGlvbgotMDAyNTQ0ICAgICAoYmFzZSAxNikJCUxvSmFjayBDb3Jwb3JhdGlvbgotCQkJCTc4MCBEZWRoYW0gU3RyZWV0Ci0JCQkJTUEgMDIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTQ1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjU0NSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS00NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI1NDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNDcgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjU0NyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjUtNDggICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjU0OCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjUtNDkgICAoaGV4KQkJSmVvcmljaCBUZWNoLiBDby4sTHRkLgotMDAyNTQ5ICAgICAoYmFzZSAxNikJCUplb3JpY2ggVGVjaC4gQ28uLEx0ZC4KLQkJCQk0Ri4sIE5vLjYsIExuLiA3MCwgU2VjLiAyLCBBY2FkZW1pYSBSZC4sIE5hbmdhbmcgRGlzdHJpY3QsIFRhaXBlaSBDaXR5IDExNSwgVGFpd2FuIChSLk8uQy4pCi0JCQkJVGFpcGVpIFRhaXdhbiAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTRBICAgKGhleCkJCVJpbmdDdWJlIFRlY2hub2xvZ2llcywgSW5jLgotMDAyNTRBICAgICAoYmFzZSAxNikJCVJpbmdDdWJlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwMCBXZXN0IEV2ZWx5biBBdmUsIFN1aXRlIDIxMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTRCICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjU0QiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJY3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS00QyAgIChoZXgpCQlWaWRlb24gQ2VudHJhbCwgSW5jLgotMDAyNTRDICAgICAoYmFzZSAxNikJCVZpZGVvbiBDZW50cmFsLCBJbmMuCi0JCQkJMjE3MSBTYW5keSBEcml2ZQotCQkJCVN0YXRlIENvbGxlZ2UgUEEgMTY4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTREICAgKGhleCkJCVNpbmdhcG9yZSBUZWNobm9sb2dpZXMgRWxlY3Ryb25pY3MgTGltaXRlZAotMDAyNTREICAgICAoYmFzZSAxNikJCVNpbmdhcG9yZSBUZWNobm9sb2dpZXMgRWxlY3Ryb25pY3MgTGltaXRlZAotCQkJCTI0IEFuZyBNbyBLaW8KLQkJCQlTdHJlZXQgNjUKLQkJCQk1NjkwNjEKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjUtNEUgICAoaGV4KQkJVmVydGV4IFdpcmVsZXNzIENvLiwgTHRkLgotMDAyNTRFICAgICAoYmFzZSAxNikJCVZlcnRleCBXaXJlbGVzcyBDby4sIEx0ZC4KLQkJCQk1RiwgU2VvaHllb24gUGxhemEsIDI1NC01LCBTZW9oeWVvbi1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0tc2kgR3llb25nZ2ktZG8gNDYzLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS00RiAgIChoZXgpCQlFTEVUVFJPTEFCIFNybAotMDAyNTRGICAgICAoYmFzZSAxNikJCUVMRVRUUk9MQUIgU3JsCi0JCQkJVmlhIERlbGwnSW5kdXN0cmlhIDI1Ci0JCQkJU2FuIFZlbmRlbWlhbm8gVHJldmlzbyAzMTAyMAotCQkJCUlUQUxZCi0KLTAwLTI1LTUwICAgKGhleCkJCVJpdmVyYmVkIFRlY2hub2xvZ3kKLTAwMjU1MCAgICAgKGJhc2UgMTYpCQlSaXZlcmJlZCBUZWNobm9sb2d5Ci0JCQkJMTI1IENhbWJyaWRnZSBQYXJrIERyaXZlCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS01MSAgIChoZXgpCQlTRS1FbGVrdHJvbmljIEdtYkgKLTAwMjU1MSAgICAgKGJhc2UgMTYpCQlTRS1FbGVrdHJvbmljIEdtYkgKLQkJCQlFeXRoc3RyLiAxNgotCQkJCUdvZXBwaW5nZW4gIDczMDM3Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS01MiAgIChoZXgpCQlWWEkgQ09SUE9SQVRJT04KLTAwMjU1MiAgICAgKGJhc2UgMTYpCQlWWEkgQ09SUE9SQVRJT04KLQkJCQlPbmUgRnJvbnQgU3JlZXQKLQkJCQlSb2xsaW5zZm9yZCBOSCAwMzg2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNTMgICAoaGV4KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TCi0wMDI1NTMgICAgIChiYXNlIDE2KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TCi0JCQkJVklBTEUgU0FSQ0EgMjIyCi0JCQkJTUlMQU5PIElUQUxZIDIwMTI2Ci0JCQkJSVRBTFkKLQotMDAtMjUtNTQgICAoaGV4KQkJUGl4ZWw4IE5ldHdvcmtzCi0wMDI1NTQgICAgIChiYXNlIDE2KQkJUGl4ZWw4IE5ldHdvcmtzCi0JCQkJMjIgR3JlYXQgT2FrcyBCbHZkLCBTdWl0ZSAxNTAKLQkJCQlTYW4gSm9zZSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNTUgICAoaGV4KQkJVmlzb25pYyBUZWNobm9sb2dpZXMgMTk5MyBMdGQKLTAwMjU1NSAgICAgKGJhc2UgMTYpCQlWaXNvbmljIFRlY2hub2xvZ2llcyAxOTkzIEx0ZAotCQkJCTIzIEhhYmFyemVsIHN0JwotCQkJCVRlbCAtIEF2aXYgIDY5NzEwCi0JCQkJSVNSQUVMCi0KLTAwLTI1LTU2ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0wMDI1NTYgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLQkJCQlOby4xOTI1LCBOYW5sZSBSb2FkCi0JCQkJU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUKLQkJCQlTaGFuZ0hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMDAtMjUtNTcgICAoaGV4KQkJUmVzZWFyY2ggSW4gTW90aW9uCi0wMDI1NTcgICAgIChiYXNlIDE2KQkJUmVzZWFyY2ggSW4gTW90aW9uCi0JCQkJNDQwIFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgNVc5Ci0JCQkJQ0FOQURBCi0KLTAwLTI1LTU4ICAgKGhleCkJCU1QRURJQQotMDAyNTU4ICAgICAoYmFzZSAxNikJCU1QRURJQQotCQkJCVNoaW55b3VuZyBUb3dlciAxMkYgMjQ2LTIKLQkJCQlTZW9oeWVvbi1kaW5nIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaS1kbyA0NjMtODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LTU5ICAgKGhleCkJCVN5cGhhbiBUZWNobm9sb2dpZXMgTHRkCi0wMDI1NTkgICAgIChiYXNlIDE2KQkJU3lwaGFuIFRlY2hub2xvZ2llcyBMdGQKLQkJCQlUaGUgV2F0ZXJtaWxsCi0JCQkJQnJvdWdodG9uIEhhbGwKLQkJCQlTa2lwdG9uIE5vcnRoIFlvcmtzaGlyZSBCRDIzIDNBRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI1LTVBICAgKGhleCkJCVRhbnRhbHVzIFN5c3RlbXMgQ29ycC4KLTAwMjU1QSAgICAgKGJhc2UgMTYpCQlUYW50YWx1cyBTeXN0ZW1zIENvcnAuCi0JCQkJMzAxLTM0ODAgR2lsbW9yZSBXYXkKLQkJCQlCdXJuYWJ5IEJDIFY1RyA0WTEKLQkJCQlDQU5BREEKLQotMDAtMjUtNUIgICAoaGV4KQkJQ29hY2hDb21tLCBMTEMKLTAwMjU1QiAgICAgKGJhc2UgMTYpCQlDb2FjaENvbW0sIExMQwotCQkJCTIwNSBUZWNobm9sb2d5IFBhcmt3YXkKLQkJCQlBdWJ1cm4gQUwgMzY4MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTVDICAgKGhleCkJCU5FQyBDb3Jwb3JhdGlvbgotMDAyNTVDICAgICAoYmFzZSAxNikJCU5FQyBDb3Jwb3JhdGlvbgotCQkJCTE3NTMsIFNoaW1vbnVtYWJlLCBOYWthaGFyYS1LdSwgS2F3YXNha2kKLQkJCQlLYW5hZ2F3YSAgMjExLTg2NjYKLQkJCQlKQVBBTgotCi0wMC0yNS01RCAgIChoZXgpCQlNb3JuaW5nc3RhciBDb3Jwb3JhdGlvbgotMDAyNTVEICAgICAoYmFzZSAxNikJCU1vcm5pbmdzdGFyIENvcnBvcmF0aW9uCi0JCQkJOTA1NSBHdWlsZm9yZCBSZC4KLQkJCQlTdWl0ZSBHCi0JCQkJQ29sdW1iaWEgTUQgMjEwNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTVFICAgKGhleCkJCVNoYW5naGFpIERhcmUgVGVjaG5vbG9naWVzIENvLixMdGQuCi0wMDI1NUUgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgRGFyZSBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLQkJCQkyMkYsSW5mbyBUZWNoIEJ1aWxkaW5nLCBOby4xNTU1LEtvbmdqaWFuZyBSb2FkLAotCQkJCVNoYW5naGFpIDIwMDA5MgotCQkJCUNISU5BCi0KLTAwLTI1LTVGICAgKGhleCkJCVNlblRlYyBBRwotMDAyNTVGICAgICAoYmFzZSAxNikJCVNlblRlYyBBRwotCQkJCVJpbmdzdHJhc3NlIDM5Ci0JCQkJVGhlcndpbCAgNDEwNgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTI1LTYwICAgKGhleCkJCUlicmlkZ2UgTmV0d29ya3MgJiBDb21tdW5pY2F0aW9ucyBMdGQuCi0wMDI1NjAgICAgIChiYXNlIDE2KQkJSWJyaWRnZSBOZXR3b3JrcyAmIENvbW11bmljYXRpb25zIEx0ZC4KLQkJCQkyOCxCZWRmb3JkIFJvYWQgRWFzdCBIYW0KLQkJCQlMb25kb24gIEU2IDJOTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI1LTYxICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLTAwMjU2MSAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZC4KLQkJCQlSb3NldmlsbGUgQ2FsaWZvcm5pYSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNjIgICAoaGV4KQkJaW50ZXJicm8gQ28uIEx0ZC4KLTAwMjU2MiAgICAgKGJhc2UgMTYpCQlpbnRlcmJybyBDby4gTHRkLgotCQkJCTZGIEpveWFuZyBCL0QsIDExMyBTYW1zZW9uZy1Eb25nLCBHYW5nbmFtLUd1Ci0JCQkJU2VvdWwgIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtNjMgICAoaGV4KQkJTHV4dGVyYSBJbmMKLTAwMjU2MyAgICAgKGJhc2UgMTYpCQlMdXh0ZXJhIEluYwotCQkJCTIzMjAuIENhbWlubyBWaWRhIFJvYmxlCi0JCQkJU3VpdGUgMTAwCi0JCQkJQ2FybHNiYWQgQ0EgOTIwMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTY0ICAgKGhleCkJCURlbGwgSW5jLgotMDAyNTY0ICAgICAoYmFzZSAxNikJCURlbGwgSW5jLgotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNjUgICAoaGV4KQkJVml6aW1heCBJbmMuCi0wMDI1NjUgICAgIChiYXNlIDE2KQkJVml6aW1heCBJbmMuCi0JCQkJMjI4NCwgcnVlIGRlIGxhIFByb3ZpbmNlCi0JCQkJTG9uZ3VldWlsIFF1ZWJlYyBKNEcgMUcxCi0JCQkJQ0FOQURBCi0KLTAwLTI1LTY2ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAyNTY2ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS02NyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0wMDI1NjcgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS02OCAgIChoZXgpCQlTaGVuemhlbiBIdWF3ZWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLTAwMjU2OCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBIdWF3ZWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDgKLQkJCQlDSElOQQotCi0wMC0yNS02OSAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0wMDI1NjkgICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCTE0IFJ1ZSBQYXVsIERhdXRpZXIKLQkJCQlWZWxpenkgIDc4NDU3Ci0JCQkJRlJBTkNFCi0KLTAwLTI1LTZBICAgKGhleCkJCWluSVQgLSBJbnN0aXR1dCBJbmR1c3RyaWFsIElUCi0wMDI1NkEgICAgIChiYXNlIDE2KQkJaW5JVCAtIEluc3RpdHV0IEluZHVzdHJpYWwgSVQKLQkJCQlMaWViaWdzdHJhc3NlIDg3Ci0JCQkJTGVtZ28gTm9ydGhyaGluZS1XZXN0ZmFsaWEgMzI2NTcKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTZCICAgKGhleCkJCUFURU5JWCBFLkUuIHMuci5sLgotMDAyNTZCICAgICAoYmFzZSAxNikJCUFURU5JWCBFLkUuIHMuci5sLgotCQkJCVZpYSBUb3JyaWNlbGxpLCAxNS9iCi0JCQkJVkVST05BIFZSIDM3MTM1Ci0JCQkJSVRBTFkKLQotMDAtMjUtNkMgICAoaGV4KQkJIkF6aW11dCIgUHJvZHVjdGlvbiBBc3NvY2lhdGlvbiBKU0MKLTAwMjU2QyAgICAgKGJhc2UgMTYpCQkiQXppbXV0IiBQcm9kdWN0aW9uIEFzc29jaWF0aW9uIEpTQwotCQkJCTItQiBBdGFldmEgU3RyZWV0Ci0JCQkJTWFraGFjaGthbGEgRGFnZXN0YW4gMzY3MDA1Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTI1LTZEICAgKGhleCkJCUJyb2FkYmFuZCBGb3J1bQotMDAyNTZEICAgICAoYmFzZSAxNikJCUJyb2FkYmFuZCBGb3J1bQotCQkJCTQ4Mzc3IEZyZW1vbnQgQm91bGV2YXJkCi0JCQkJU3VpdGUgMTE3Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNkUgICAoaGV4KQkJVmFuIEJyZWRhIEIuVi4KLTAwMjU2RSAgICAgKGJhc2UgMTYpCQlWYW4gQnJlZGEgQi5WLgotCQkJCU1lcmN1cml1c3dlZyAyMQotCQkJCUJydW1tZW4gR2VsZGVybGFuZCA2OTcxIEdWCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjUtNkYgICAoaGV4KQkJRGFudGhlcm0gUG93ZXIKLTAwMjU2RiAgICAgKGJhc2UgMTYpCQlEYW50aGVybSBQb3dlcgotCQkJCU1hcmllbmx5c3R2ZWogNjUKLQkJCQlTa2l2ZSAgNzgwMAotCQkJCURFTk1BUksKLQotMDAtMjUtNzAgICAoaGV4KQkJRWFzdGVybiBDb21tdW5pY2F0aW9ucyBDb21wYW55IExpbWl0ZWQKLTAwMjU3MCAgICAgKGJhc2UgMTYpCQlFYXN0ZXJuIENvbW11bmljYXRpb25zIENvbXBhbnkgTGltaXRlZAotCQkJCU5vLjM5OCBXZW5zYW4gUm9hZCwKLQkJCQlOby42NiBEb25neGluIFJvYWQsUiZEIGJ1aWxkaW5nLEIzMTEKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTMKLQkJCQlDSElOQQotCi0wMC0yNS03MSAgIChoZXgpCQlaaGVqaWFuZyBUaWFubGUgRGlnaXRhbCBFbGVjdHJpYyBDby4sTHRkCi0wMDI1NzEgICAgIChiYXNlIDE2KQkJWmhlamlhbmcgVGlhbmxlIERpZ2l0YWwgRWxlY3RyaWMgQ28uLEx0ZAotCQkJCU5vLjggVGlhbmxlIFJkLEVjb25vbWljIERldmVsb3BtZW50IFpvbmUKLQkJCQlTaGVuZ3pob3UgWmhlamlhbmcgMzEyNDAwCi0JCQkJQ0hJTkEKLQotMDAtMjUtNzIgICAoaGV4KQkJTmVtby1RIEludGVybmF0aW9uYWwgQUIKLTAwMjU3MiAgICAgKGJhc2UgMTYpCQlOZW1vLVEgSW50ZXJuYXRpb25hbCBBQgotCQkJCUJveCAyMTAKLQkJCQlTb2xsZW50dW5hICAxOTEyMwotCQkJCVNXRURFTgotCi0wMC0yNS03MyAgIChoZXgpCQlTVCBFbGVjdHJvbmljcyAoSW5mby1TZWN1cml0eSkgUHRlIEx0ZAotMDAyNTczICAgICAoYmFzZSAxNikJCVNUIEVsZWN0cm9uaWNzIChJbmZvLVNlY3VyaXR5KSBQdGUgTHRkCi0JCQkJMTAwLCBKdXJvbmcgRWFzdCBTdHJlZXQgMjEsIFNUIEVsZWN0cm9uaWNzIEp1cm9uZyBFYXN0IEJsZGcKLQkJCQk2MDk2MDIKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjUtNzQgICAoaGV4KQkJS1VOSU1JIE1FRElBIERFVklDRSBDby4sIEx0ZC4KLTAwMjU3NCAgICAgKGJhc2UgMTYpCQlLVU5JTUkgTUVESUEgREVWSUNFIENvLiwgTHRkLgotCQkJCTMgS0lUQU1BQ0hJREEgWUFNQVpBS0kKLQkJCQlLVU5JTUksIERBVEUgRlVLVVNISU1BIDk2OS0xNzcxCi0JCQkJSkFQQU4KLQotMDAtMjUtNzUgICAoaGV4KQkJRmliZXJQbGV4IEluYwotMDAyNTc1ICAgICAoYmFzZSAxNikJCUZpYmVyUGxleCBJbmMKLQkJCQkxMDg0MC00MTIgR3VpbGZvcmQgUmQKLQkJCQlBbm5hcG9saXMgSnVuY3Rpb24gTUQgMjA3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTc2ICAgKGhleCkJCU5FTEkgVEVDSE5PTE9HSUVTCi0wMDI1NzYgICAgIChiYXNlIDE2KQkJTkVMSSBURUNITk9MT0dJRVMKLQkJCQlSb3V0ZSBOYXRpb25hbGUKLQkJCQlJbW1ldWJsZSBPcmNoaXMKLQkJCQlMRSBSSEVVICAzNTY1MAotCQkJCUZSQU5DRQotCi0wMC0yNS03NyAgIChoZXgpCQlELUJPWCBUZWNobm9sb2dpZXMKLTAwMjU3NyAgICAgKGJhc2UgMTYpCQlELUJPWCBUZWNobm9sb2dpZXMKLQkJCQkyMTcyIGRlIGxhIFByb3ZpbmNlCi0JCQkJTG9uZ3VldWlsIFF1ZWJlYyBKNEcgMVI3Ci0JCQkJQ0FOQURBCi0KLTAwLTI1LTc4ICAgKGhleCkJCUpTQyAiQ29uY2VybiAiU296dmV6ZGllIgotMDAyNTc4ICAgICAoYmFzZSAxNikJCUpTQyAiQ29uY2VybiAiU296dmV6ZGllIgotCQkJCVBsZWtoYW5vdnNrYXlhIHN0LiwgMTQKLQkJCQlWb3JvbmV6aCAgMzk0MDE4Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTI1LTc5ICAgKGhleCkJCUogJiBGIExhYnMKLTAwMjU3OSAgICAgKGJhc2UgMTYpCQlKICYgRiBMYWJzCi0JCQkJMTIxNCBXLiBCb3N0b24gUG9zdCBSb2FkCi0JCQkJTWFtYXJvbmVjayBOWSAxMDU0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtN0EgICAoaGV4KQkJQ0FNQ08gUHJvZHVrdGlvbnMtIHVuZCBWZXJ0cmllYnMtR21iSCBmdXIgQmVzY2hhbGx1bmdzLSB1bmQgQmVsZXVjaHR1bmdzYW5sYWdlbgotMDAyNTdBICAgICAoYmFzZSAxNikJCUNBTUNPIFByb2R1a3Rpb25zLSB1bmQgVmVydHJpZWJzLUdtYkggZnVyIEJlc2NoYWxsdW5ncy0gdW5kIEJlbGV1Y2h0dW5nc2FubGFnZW4KLQkJCQlGaXNjaHBpY2tlIDUKLQkJCQlXZW5kZW4gTlJXIDU3NDgyCi0JCQkJR0VSTUFOWQotCi0wMC0yNS03QiAgIChoZXgpCQlTVEogIEVMRUNUUk9OSUNTICBQVlQgIExURAotMDAyNTdCICAgICAoYmFzZSAxNikJCVNUSiAgRUxFQ1RST05JQ1MgIFBWVCAgTFRECi0JCQkJWC0yNCBPS0hMQSAgSU5EVVNUUklBTCAgQVJFQQotCQkJCVBIQVNFIC0gMgotCQkJCU5FVyAgREVMSEkgREVMSEkgMTEwIDAyMAotCQkJCUlORElBCi0KLTAwLTI1LTdDICAgKGhleCkJCUh1YWNoZW50ZWwgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDby4sIEx0ZAotMDAyNTdDICAgICAoYmFzZSAxNikJCUh1YWNoZW50ZWwgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDby4sIEx0ZAotCQkJCTc0NyBYaW5ZdSBSZC4gSGlnaC1UZWNoIFpvbmUKLQkJCQlKaW5hbiBTaGFuZG9uZyBQcm92aW5jZSAyNTAxMDEKLQkJCQlDSElOQQotCi0wMC0yNS03RCAgIChoZXgpCQlQb2ludFJlZCBUZWxlY29tIFByaXZhdGUgTHRkLgotMDAyNTdEICAgICAoYmFzZSAxNikJCVBvaW50UmVkIFRlbGVjb20gUHJpdmF0ZSBMdGQuCi0JCQkJMTVGIC0gNS4sIE5vLiAxMDcxLCBaaG9uZ3poZW5nIFJvYWQsCi0JCQkJVGFveXVhbiBDaXR5IDMzMCAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS03RSAgIChoZXgpCQlORVcgUE9TIFRlY2hub2xvZ3kgTGltaXRlZAotMDAyNTdFICAgICAoYmFzZSAxNikJCU5FVyBQT1MgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJNkZSTSwgNkYsIENoaW5hIEVjb25vbWljIFRyYWRlIEJ1aWxkaW5nCi0JCQkJN1JkIFppemh1LCBaaHV6aWxpbiwgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTI1LTdGICAgKGhleCkJCUNhbGxUZWNoU29sdXRpb24gQ28uLEx0ZAotMDAyNTdGICAgICAoYmFzZSAxNikJCUNhbGxUZWNoU29sdXRpb24gQ28uLEx0ZAotCQkJCSMxMjMsRGFld29vcHJ1Z2lvIEIvRCwzNDQtMSwgU2VvZ3lvLURvbmcsTWFwby1ndQotCQkJCVNlb3VsICAxMjEtODM3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LTgwICAgKGhleCkJCUVxdWlwc29uIFMuQS4KLTAwMjU4MCAgICAgKGJhc2UgMTYpCQlFcXVpcHNvbiBTLkEuCi0JCQkJUG9saWdvbm8gSW5kLiBMWkFsdGVybwotCQkJCUF2ZGEuIFNhbGVyLCAxNAotCQkJCVNpbGxhIFZhbGVuY2lhIDQ2NDYwCi0JCQkJU1BBSU4KLQotMDAtMjUtODEgICAoaGV4KQkJeC1zdGFyIG5ldHdvcmtzIEluYy4KLTAwMjU4MSAgICAgKGJhc2UgMTYpCQl4LXN0YXIgbmV0d29ya3MgSW5jLgotCQkJCTFGLE5PMS0yLENodW5nY2hpbmcgUy5SZC5TZWMgMwotCQkJCVRhaXBlaSAgMTAwNzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTgyICAgKGhleCkJCU1ha3NhdCBUZWNobm9sb2dpZXMgKFApIEx0ZAotMDAyNTgyICAgICAoYmFzZSAxNikJCU1ha3NhdCBUZWNobm9sb2dpZXMgKFApIEx0ZAotCQkJCUQtMTAvNiwgT2tobGEsIFBoYXNlLUkKLQkJCQlOZXcgRGVsaGkgIDExMDAyMAotCQkJCUlORElBCi0KLTAwLTI1LTgzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjU4MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS04NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI1ODQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtODUgICAoaGV4KQkJS09LVVlPIFMmVCBDby4sIEx0ZC4KLTAwMjU4NSAgICAgKGJhc2UgMTYpCQlLT0tVWU8gUyZUIENvLiwgTHRkLgotCQkJCTEtOC0zNQotCQkJCUtvbmFuCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwOC04NzEwCi0JCQkJSkFQQU4KLQotMDAtMjUtODYgICAoaGV4KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDI1ODYgICAgIChiYXNlIDE2KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJQnVpbGRpbmcgNywgU2Vjb25kIFBhcnQsIEhvbmdodWFsaW5nIEluZHVzdHJpYWwgWm9uZQotCQkJCVhpbGkgdG93biwgTmFuc2hhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNS04NyAgIChoZXgpCQlWaXRhbGl0eSwgSW5jLgotMDAyNTg3ICAgICAoYmFzZSAxNikJCVZpdGFsaXR5LCBJbmMuCi0JCQkJT25lIEJyb2Fkd2F5Ci0JCQkJMTR0aCBGbG9vcgotCQkJCUNhbWJyaWRnZSBNQSAwMjE0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtODggICAoaGV4KQkJR2VuaWUgSW5kdXN0cmllcywgSW5jLgotMDAyNTg4ICAgICAoYmFzZSAxNikJCUdlbmllIEluZHVzdHJpZXMsIEluYy4KLQkJCQkxODYyMCBORSA2N3RoIEN0Ci0JCQkJUmVkbW9uZCBXQSA5ODA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtODkgICAoaGV4KQkJSGlsbHMgSW5kdXN0cmllcyBMaW1pdGVkCi0wMDI1ODkgICAgIChiYXNlIDE2KQkJSGlsbHMgSW5kdXN0cmllcyBMaW1pdGVkCi0JCQkJNSBDYW1icmlhIFJvYWQKLQkJCQlLZXlzYm9yb3VnaAotCQkJCU1lbGJvdXJuZSBWSUMgMzE3MwotCQkJCUFVU1RSQUxJQQotCi0wMC0yNS04QSAgIChoZXgpCQlQb2xlL1plcm8gQ29ycG9yYXRpb24KLTAwMjU4QSAgICAgKGJhc2UgMTYpCQlQb2xlL1plcm8gQ29ycG9yYXRpb24KLQkJCQk1NTMwIFVuaW9uIENlbnRyZSBEcml2ZQotCQkJCVdlc3QgQ2hlc3RlciBPSCA0NTA2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtOEIgICAoaGV4KQkJTWVsbGFub3ggVGVjaG5vbG9naWVzIEx0ZAotMDAyNThCICAgICAoYmFzZSAxNikJCU1lbGxhbm94IFRlY2hub2xvZ2llcyBMdGQKLQkJCQkzNTAgT2FrbWVhZCBQYXJrd2F5Ci0JCQkJU3Vubnl2YWxlLCBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtOEMgICAoaGV4KQkJRVNVUyBFTEVLVFJPTklLIFNBTi4gVkUgRElTLiBUSUMuIExURC4gU1RJLgotMDAyNThDICAgICAoYmFzZSAxNikJCUVTVVMgRUxFS1RST05JSyBTQU4uIFZFIERJUy4gVElDLiBMVEQuIFNUSS4KLQkJCQlFU0VOU0VISVIgTUFIQUxMRVNJIEtVUktDVUxFUiBDQURERVNJCi0JCQkJU0FGSVIgU09LQUsgTk86MTEvMSBEVURVTExVIFVNUkFOSVlFCi0JCQkJSVNUQU5CVUwgIDM0Nzc2Ci0JCQkJVFVSS0VZCi0KLTAwLTI1LThEICAgKGhleCkJCUhhaWVyCi0wMDI1OEQgICAgIChiYXNlIDE2KQkJSGFpZXIKLQkJCQlOby4xLEhhaWVyIFJvYWQKLQkJCQlRaW5nZGFvIFNoYW5kb25nIDI2NjEwMQotCQkJCUNISU5BCi0KLTAwLTI1LThFICAgKGhleCkJCVRoZSBXZWF0aGVyIENoYW5uZWwKLTAwMjU4RSAgICAgKGJhc2UgMTYpCQlUaGUgV2VhdGhlciBDaGFubmVsCi0JCQkJTWFpbCBTdG9wIDUwMAotCQkJCTMwMCBJbnRlcnN0YXRlIE5vcnRoIFBrd3kKLQkJCQlBdGxhbnRhIEdBIDMwMzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS04RiAgIChoZXgpCQlUcmlkZW50IE1pY3Jvc3lzdGVtcywgSW5jLgotMDAyNThGICAgICAoYmFzZSAxNikJCVRyaWRlbnQgTWljcm9zeXN0ZW1zLCBJbmMuCi0JCQkJMzQwOCBHYXJyZXR0IERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTkwICAgKGhleCkJCVN1cGVyIE1pY3JvIENvbXB1dGVyLCBJbmMuCi0wMDI1OTAgICAgIChiYXNlIDE2KQkJU3VwZXIgTWljcm8gQ29tcHV0ZXIsIEluYy4KLQkJCQk5ODAgUm9jayBBdmVudWUKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS05MSAgIChoZXgpCQlORVhURUssIEluYy4KLTAwMjU5MSAgICAgKGJhc2UgMTYpCQlORVhURUssIEluYy4KLQkJCQk0MTAgRG91Z2xhc3MgU3RyZWV0Ci0JCQkJUmVhZGluZyBQQSAxOTYwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtOTIgICAoaGV4KQkJR3Vhbmd6aG91IFNoaXJ1aSBFbGVjdHJvbmljIENvLiwgTHRkCi0wMDI1OTIgICAgIChiYXNlIDE2KQkJR3Vhbmd6aG91IFNoaXJ1aSBFbGVjdHJvbmljIENvLiwgTHRkCi0JCQkJMzAxRCwgTm8uOSwgQ2FpcGluIFJvYWQsCi0JCQkJR3Vhbmd6aG91IFNjaWVuY2UgUGFyawotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYzCi0JCQkJQ0hJTkEKLQotMDAtMjUtOTMgICAoaGV4KQkJRGF0TmV0IEluZm9ybWF0aWthaSBLZnQuCi0wMDI1OTMgICAgIChiYXNlIDE2KQkJRGF0TmV0IEluZm9ybWF0aWthaSBLZnQuCi0JCQkJSGV0dmV6ZXIgdS4gNS4KLQkJCQlTemlnZXRzemVudG1pa2xvcyBQZXN0IG1lZ3llIDIzMTAKLQkJCQlIVU5HQVJZCi0KLTAwLTI1LTk0ICAgKGhleCkJCUV1cm9kZXNpZ24gQkcgTFRECi0wMDI1OTQgICAgIChiYXNlIDE2KQkJRXVyb2Rlc2lnbiBCRyBMVEQKLQkJCQkxNS0xNyBUaW50aWF2YSBTdHIuLAotCQkJCVNvZmlhICAxMTEzCi0JCQkJQlVMR0FSSUEKLQotMDAtMjUtOTUgICAoaGV4KQkJTm9ydGh3ZXN0IFNpZ25hbCBTdXBwbHksIEluYwotMDAyNTk1ICAgICAoYmFzZSAxNikJCU5vcnRod2VzdCBTaWduYWwgU3VwcGx5LCBJbmMKLQkJCQkxMjk2NSBTVyBIZXJtYW4gUmQKLQkJCQlUdWFsYXRpbiBPUiA5NzA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtOTYgICAoaGV4KQkJR0lHQVZJU0lPTiBzcmwKLTAwMjU5NiAgICAgKGJhc2UgMTYpCQlHSUdBVklTSU9OIHNybAotCQkJCVZpYSBGaWdpbmksIDE2Ci0JCQkJTXVnZ2lvIE1pbGFubyAyMDA1MwotCQkJCUlUQUxZCi0KLTAwLTI1LTk3ICAgKGhleCkJCUthbGtpIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzCi0wMDI1OTcgICAgIChiYXNlIDE2KQkJS2Fsa2kgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMKLQkJCQkjMTQ3LDJuZCBGbG9vciwgQW5hbnRhUHVzaHBhIEJ1aWxkaW5nLAotCQkJCTV0aCBNYWluIFJvYWQsN3RoIFNlY3RvcixIU1IgTGF5b3V0Ci0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAwMzQKLQkJCQlJTkRJQQotCi0wMC0yNS05OCAgIChoZXgpCQlaaG9uZyBTaGFuIENpdHkgTGl0YWkgRWxlY3Ryb25pYyBJbmR1c3RyaWFsIENvLiBMdGQKLTAwMjU5OCAgICAgKGJhc2UgMTYpCQlaaG9uZyBTaGFuIENpdHkgTGl0YWkgRWxlY3Ryb25pYyBJbmR1c3RyaWFsIENvLiBMdGQKLQkJCQlOby4zIEluZHVzdHJpYWwgRGlzdHJpY3QsIFd1Z3Vpc2hhbiwgQ2hlbmcgZ3VpIFJvYWQKLQkJCQlaaG9uZyBzaGFuIENpdHkgR3VhbmcgZG9uZyBQcm92aW5jZSA1Mjg0NTgKLQkJCQlDSElOQQotCi0wMC0yNS05OSAgIChoZXgpCQlIZWRvbiBlLmQuIEIuVi4KLTAwMjU5OSAgICAgKGJhc2UgMTYpCQlIZWRvbiBlLmQuIEIuVi4KLQkJCQlFbGVrdHJvbmljYXdlZyAxNQotCQkJCURlbGZ0IFp1aWQgSG9sbGFuZCAyNjI4IFhHCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjUtOUEgICAoaGV4KQkJQ0VTdHJvbmljcyBHbWJICi0wMDI1OUEgICAgIChiYXNlIDE2KQkJQ0VTdHJvbmljcyBHbWJICi0JCQkJRnJpZWRyaWNoc3RyLiAyNDMKLQkJCQlWZWxiZXJ0ICA0MjU1MQotCQkJCUdFUk1BTlkKLQotMDAtMjUtOUIgICAoaGV4KQkJQmVpamluZyBQS1VOSVRZIE1pY3Jvc3lzdGVtcyBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDI1OUIgICAgIChiYXNlIDE2KQkJQmVpamluZyBQS1VOSVRZIE1pY3Jvc3lzdGVtcyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJMTF0aCBGbG9vciwgUmVzb3VyY2UgUGxhemEsIE5vLjE1MSBOb3J0aCBaaG9uZ2d1YW5jdW4gU3RyZWV0Ci0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4MAotCQkJCUNISU5BCi0KLTAwLTI1LTlDICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAyNTlDICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtOUQgICAoaGV4KQkJUFJJVkFURQotMDAyNTlEICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yNS05RSAgIChoZXgpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAyNTlFICAgICAoYmFzZSAxNikJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJQjEtNyxIdWF3ZWkgQmFzZSxCYW50aWFuLCBMb25nZ2FuZyBEaXN0cmljdCxTaGVuWmhlbixHdWFuZ0RvbmcsQ0hJTkEKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotMDAtMjUtOUYgICAoaGV4KQkJVGVjaG5vRGlnaXRhbCBUZWNobm9sb2dpZXMgR21iSAotMDAyNTlGICAgICAoYmFzZSAxNikJCVRlY2hub0RpZ2l0YWwgVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlIYWVzc2xlcnN0ci4gOAotCQkJCUVyZnVydCBUaHVyaW5naWEgOTkwOTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LUEwICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyNUEwICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTI1LUExICAgKGhleCkJCUVuYWxhc3lzCi0wMDI1QTEgICAgIChiYXNlIDE2KQkJRW5hbGFzeXMKLQkJCQkyNTAgQXZlbmlkYSBDYW1waWxsbwotCQkJCUNhbGV4aWNvIENhbGlmb3JuaWEgOTIyMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUEyICAgKGhleCkJCUFsdGEgRGVmaW5pY2lvbiBMSU5DRU8gUy5MLgotMDAyNUEyICAgICAoYmFzZSAxNikJCUFsdGEgRGVmaW5pY2lvbiBMSU5DRU8gUy5MLgotCQkJCU1hcmlhIGRlIEx1bmEgMTEsIG5hdmUgNAotCQkJCVphcmFnb3phICBFcy01MDAxOAotCQkJCVNQQUlOCi0KLTAwLTI1LUEzICAgKGhleCkJCVRyaW1heCBXaXJlbGVzcywgSW5jLgotMDAyNUEzICAgICAoYmFzZSAxNikJCVRyaW1heCBXaXJlbGVzcywgSW5jLgotCQkJCTI2NzUgUyBIb3JzZXNob2UgRHIKLQkJCQlTdWl0ZSA0MDEKLQkJCQlOYXBsZXMgRkwgMzQxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUE0ICAgKGhleCkJCUV1cm9EZXNpZ24gZW1iZWRkZWQgdGVjaG5vbG9naWVzIEdtYkgKLTAwMjVBNCAgICAgKGJhc2UgMTYpCQlFdXJvRGVzaWduIGVtYmVkZGVkIHRlY2hub2xvZ2llcyBHbWJICi0JCQkJV2FsZHN0cmFzc2UgNEEKLQkJCQlLaXJjaGRvcmYgYS5kLiBBbXBlciBCYXllcm4gODU0MTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LUE1ICAgKGhleCkJCVdhbG51dCBNZWRpYSBOZXR3b3JrCi0wMDI1QTUgICAgIChiYXNlIDE2KQkJV2FsbnV0IE1lZGlhIE5ldHdvcmsKLQkJCQk0NDAgTiBXb2xmZSBSZAotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQTYgICAoaGV4KQkJQ2VudHJhbCBOZXR3b3JrIFNvbHV0aW9uIENvLiwgTHRkLgotMDAyNUE2ICAgICAoYmFzZSAxNikJCUNlbnRyYWwgTmV0d29yayBTb2x1dGlvbiBDby4sIEx0ZC4KLQkJCQk1ODQtMSwgUGFqYW5nLURvbmcsIEphbmdBbi1HdQotCQkJCVN1d29uLVNpLCBLeXVuZ2dpLURvIDQ0MC04NTQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtQTcgICAoaGV4KQkJQ29tdmVyZ2UsIEluYy4KLTAwMjVBNyAgICAgKGJhc2UgMTYpCQlDb212ZXJnZSwgSW5jLgotCQkJCTUzOTAgVHJpYW5nbGUgUGFya3dheQotCQkJCVN1aXRlIDMwMAotCQkJCU5vcmNyb3NzIEdBIDMwMDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1BOCAgIChoZXgpCQlLb250cm9uIChCZWlKaW5nKSBUZWNobm9sb2d5IENvLixMdGQKLTAwMjVBOCAgICAgKGJhc2UgMTYpCQlLb250cm9uIChCZWlKaW5nKSBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkxNyBCdWlsZGluZywgQmxvY2sgIzEsQUJQLiAgMTg4IFdlc3Rlcm4gU291dGggNHRoIFJpbmcgUm9hZAotCQkJCUJlaUppbmcgIDEwMDA3MAotCQkJCUNISU5BCi0KLTAwLTI1LUE5ICAgKGhleCkJCVNoYW5naGFpIEVtYmVkd2F5IEluZm9ybWF0aW9uIFRlY2hub2xvZ2llcyBDby4sTHRkCi0wMDI1QTkgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgRW1iZWR3YXkgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIENvLixMdGQKLQkJCQkyRixCdWlsZGluZyA5LEx1amlhenVpIFNvZnR3YXJlIFBhcmssIE5vLjIwLExhbmUgOTEsRSdTaGFuIFJvYWQKLQkJCQlTaGFuZ2hhaSAgMjAwMTI3Ci0JCQkJQ0hJTkEKLQotMDAtMjUtQUEgICAoaGV4KQkJQmVpamluZyBTb3VsIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMjVBQSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFNvdWwgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCVJvb20gNjA2LFhpbnpoZW5nIE9mZmljZSBCdWlsZGluZwotCQkJCU5vLjEgQ2hhbmd3YSBNaWRkbGUgU3RyZWV0LEhhaWRpYW4gRGlzdHJpY3QuCi0JCQkJQkVJSklORyAgMTAwMDg5Ci0JCQkJQ0hJTkEKLQotMDAtMjUtQUIgICAoaGV4KQkJQUlPIExDRCBQQyBCVSAvIFRQVgotMDAyNUFCICAgICAoYmFzZSAxNikJCUFJTyBMQ0QgUEMgQlUgLyBUUFYKLQkJCQkxMEYuLCBOby4sIDIzMCwgTGlhbmNoZW5nIFJkLgotCQkJCVpob25naGUgQ2l0eSBUYWlwZWkgVGFpd2FuIDIzNTUzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1BQyAgIChoZXgpCQlJLVRlY2ggY29ycG9yYXRpb24KLTAwMjVBQyAgICAgKGJhc2UgMTYpCQlJLVRlY2ggY29ycG9yYXRpb24KLQkJCQkxLTE1IFNoaW4tb2dhd2EgbWFjaGkKLQkJCQlTaGluanl1a3Uta3UgVG9reW8gMTYyLTA4MTQKLQkJCQlKQVBBTgotCi0wMC0yNS1BRCAgIChoZXgpCQlNYW51ZmFjdHVyaW5nIFJlc291cmNlcyBJbnRlcm5hdGlvbmFsCi0wMDI1QUQgICAgIChiYXNlIDE2KQkJTWFudWZhY3R1cmluZyBSZXNvdXJjZXMgSW50ZXJuYXRpb25hbAotCQkJCTE2MDAgVW5pb24gSGlsbCBSb2FkCi0JCQkJQWxwaGFyZXR0YSBHQSAzMDAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQUUgICAoaGV4KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0wMDI1QUUgICAgIChiYXNlIDE2KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0JCQkJT25lIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTItNjM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQUYgICAoaGV4KQkJQ09NRklMRSBUZWNobm9sb2d5Ci0wMDI1QUYgICAgIChiYXNlIDE2KQkJQ09NRklMRSBUZWNobm9sb2d5Ci0JCQkJR3VybyA1IGRvbmcsIEd1cm8tZ3UKLQkJCQkxMDQtNQotCQkJCVNlb3VsICAxNTItODQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUIwICAgKGhleCkJCVNjaG1hcnR6IEluYwotMDAyNUIwICAgICAoYmFzZSAxNikJCVNjaG1hcnR6IEluYwotCQkJCTIzMDcgVmFsZXJpYW4gVHJsCi0JCQkJUm91bmQgUm9jayBUWCA3ODY2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQjEgICAoaGV4KQkJTWF5YS1DcmVhdGlvbiBDb3Jwb3JhdGlvbgotMDAyNUIxICAgICAoYmFzZSAxNikJCU1heWEtQ3JlYXRpb24gQ29ycG9yYXRpb24KLQkJCQkzRiwgQnVpbGRpbmcgTS0xMCwgQ2VudHJlIG9kIEhpLVRlY2ggSW5kLiBEaXN0LgotCQkJCVNoZW56aGVuICA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNS1CMiAgIChoZXgpCQlMRkstTGVua2ZsdWdrb3JwZXJzeXN0ZW1lIEdtYkgKLTAwMjVCMiAgICAgKGJhc2UgMTYpCQlMRkstTGVua2ZsdWdrb3JwZXJzeXN0ZW1lIEdtYkgKLQkJCQlMYW5kc2h1dGVyIFN0cmFzc2UgIDI2Ci0JCQkJVW50ZXJzY2hsZWlzc2hlaW0gQmF2YXJpYSA4NTcxNgotCQkJCUdFUk1BTlkKLQotMDAtMjUtQjMgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDI1QjMgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1TIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1CNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI1QjQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQjUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNUI1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUI2ICAgKGhleCkJCVRlbGVjb20gRk0KLTAwMjVCNiAgICAgKGJhc2UgMTYpCQlUZWxlY29tIEZNCi0JCQkJODk1IFBseW1vdXRoIFJvYWQKLQkJCQlTbG91Z2ggQmVya3MgU0wxIDRMUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI1LUI3ICAgKGhleCkJCUNvc3RhciAgZWxlY3Ryb25pY3MsIGluYy4sCi0wMDI1QjcgICAgIChiYXNlIDE2KQkJQ29zdGFyICBlbGVjdHJvbmljcywgaW5jLiwKLQkJCQkzZmwsLTEgbm8gMTMsbGFuZSAxMjAsbmVpLWh1IHJvYWQgc2VjLjEsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LUI4ICAgKGhleCkJCUFnaWxlIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDI1QjggICAgIChiYXNlIDE2KQkJQWdpbGUgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkxMjQyNyBSZW53aWNrIERyCi0JCQkJUmFuY2hvIEN1Y2Ftb25nYSBDYWxpZm9ybmlhIDkxNzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1COSAgIChoZXgpCQlBZ2lsaW5rIFN5c3RlbXMgQ29ycC4KLTAwMjVCOSAgICAgKGJhc2UgMTYpCQlBZ2lsaW5rIFN5c3RlbXMgQ29ycC4KLQkJCQkjMzAwLTEyNzUgV2VzdCA2dGggQXZlCi0JCQkJVmFuY291dmVyIEJDIFY2SCAxQTYKLQkJCQlDQU5BREEKLQotMDAtMjUtQkEgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQgSVBECi0wMDI1QkEgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQgSVBECi0JCQkJNzAxIEUuIE1pZGRsZWZpZWxkIFJkLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUJCICAgKGhleCkJCUlOTkVSSU5UIENvLiwgTHRkLgotMDAyNUJCICAgICAoYmFzZSAxNikJCUlOTkVSSU5UIENvLiwgTHRkLgotCQkJCURvbmd5b3VuZyBDZW50cmFsVG93ZXIgIzIwMiwgR2V1bWp1bmctZG9uZywKLQkJCQlHdW5wby1zaSxLeXVuZ2dpLWRvLDQzNS0wNTAgU291dGggS09SRUEuCi0JCQkJR3VucG8tc2kgS3l1bmdnaS1kbyA0MzAwNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtQkMgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyNUJDICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUJEICAgKGhleCkJCUl0YWxkYXRhIEluZ2VnbmVyaWEgZGVsbCdJZGVhIFMucC5BLgotMDAyNUJEICAgICAoYmFzZSAxNikJCUl0YWxkYXRhIEluZ2VnbmVyaWEgZGVsbCdJZGVhIFMucC5BLgotCQkJCXZpYWxlIEVyb2kgZGkgQ2VmYWxvbmlhIDEyMwotCQkJCVJvbWEgIDAwMTI4Ci0JCQkJSVRBTFkKLQotMDAtMjUtQkUgICAoaGV4KQkJVGVrdHJhcCBTeXN0ZW1zIEluYy4KLTAwMjVCRSAgICAgKGJhc2UgMTYpCQlUZWt0cmFwIFN5c3RlbXMgSW5jLgotCQkJCTE1IEJ1dGVhdSBTdC4KLQkJCQlTdWl0ZSAyMzAtOQotCQkJCUdhdGluZWF1IFF1ZWJlYyBKOFogMVY0Ci0JCQkJQ0FOQURBCi0KLTAwLTI1LUJGICAgKGhleCkJCVdpcmVsZXNzIENhYmxlcyBJbmMuCi0wMDI1QkYgICAgIChiYXNlIDE2KQkJV2lyZWxlc3MgQ2FibGVzIEluYy4KLQkJCQkyODgwIFphbmtlciBSZCwgU3RlIDIwMwotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1DMCAgIChoZXgpCQlaaWxsaW9uVFYgQ29ycG9yYXRpb24KLTAwMjVDMCAgICAgKGJhc2UgMTYpCQlaaWxsaW9uVFYgQ29ycG9yYXRpb24KLQkJCQkxMTcwIEtpZmVyIFJvYWQKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUMxICAgKGhleCkJCU5hd29vIEtvcmVhIENvcnAuCi0wMDI1QzEgICAgIChiYXNlIDE2KQkJTmF3b28gS29yZWEgQ29ycC4KLQkJCQk0RmwuLCBIYW53b24gQmxkZy4sIDYtMSwgU3VuYWUtZG9uZywgQnVuZGFuZy1ndSwKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUMyICAgKGhleCkJCVJpbmdCZWxsIENvLixMdGQuCi0wMDI1QzIgICAgIChiYXNlIDE2KQkJUmluZ0JlbGwgQ28uLEx0ZC4KLQkJCQkxMDU4NiBLaW5nR2VvcmdlIEh3eQotCQkJCVN1cnJleSBCLkMgVjNUIDJYMwotCQkJCUNBTkFEQQotCi0wMC0yNS1DMyAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMjVDMyAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlDQVJSRVRFUkEgQkFTRSBBRVJFQSAjIDU4NTAKLQkJCQlaYXBvcGFuIEphbGlzY28gNDQxMzAKLQkJCQlNRVhJQ08KLQotMDAtMjUtQzQgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi0wMDI1QzQgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQzUgICAoaGV4KQkJU3RhciBMaW5rIENvbW11bmljYXRpb24gUHZ0LiBMdGQuCi0wMDI1QzUgICAgIChiYXNlIDE2KQkJU3RhciBMaW5rIENvbW11bmljYXRpb24gUHZ0LiBMdGQuCi0JCQkJSFIxMTQvNiAmIEhyMTMyLzYsIFB1bHByZWhsYWRwdXIsCi0JCQkJU3VyYWoga3VuZCBSb2FkLCBOZWFyIEJhZGFycHVyLAotCQkJCU5ldyBEZWxoaSAgMTEwMDQ0Ci0JCQkJSU5ESUEKLQotMDAtMjUtQzYgICAoaGV4KQkJa2FzZXJjb3JwLCBsdGQKLTAwMjVDNiAgICAgKGJhc2UgMTYpCQlrYXNlcmNvcnAsIGx0ZAotCQkJCVNvdXRoIDIwLEdhb2J1IFJvYWQsR2FvYnUgVG93bgotCQkJCURvbmd3YW4gR3Vhbmdkb25nIDUyMzAwMAotCQkJCUNISU5BCi0KLTAwLTI1LUM3ICAgKGhleCkJCWFsdGVrIENvcnBvcmF0aW9uCi0wMDI1QzcgICAgIChiYXNlIDE2KQkJYWx0ZWsgQ29ycG9yYXRpb24KLQkJCQkzRiwgTm8uIDEwLCBMaS1Ic2luIFJvYWQsIFNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjUtQzggICAoaGV4KQkJUy1BY2Nlc3MgR21iSAotMDAyNUM4ICAgICAoYmFzZSAxNikJCVMtQWNjZXNzIEdtYkgKLQkJCQlPYmVyaGF1c2Vuc3RyYXNzZSA0NwotCQkJCVdldHRzd2lsIGEvQSBadWVyaWNoIDg5MDcKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0yNS1DOSAgIChoZXgpCQlTSEVOWkhFTiBIVUFQVSBESUdJVEFMIENPLiwgTFRECi0wMDI1QzkgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gSFVBUFUgRElHSVRBTCBDTy4sIExURAotCQkJCUZ1dGlhbiBEaXN0cmljdCxDaGVnb25nbWlhbyxUaWFuQW4gQ3liZXJwYXJrCi0JCQkJMTcvRiBFYXN0LEhpZ2gtVGVjaCBQbGF6YSwgUGhhc2UgP28KLQkJCQlTaGVuWmhlbiBHdWFuZ2RvbmcgUHJvdmluY2UgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMjUtQ0EgICAoaGV4KQkJTFMgUmVzZWFyY2gsIExMQwotMDAyNUNBICAgICAoYmFzZSAxNikJCUxTIFJlc2VhcmNoLCBMTEMKLQkJCQlXNjYgTjIyMCBDb21tZXJjZSBDb3VydAotCQkJCUNlZGFyYnVyZyBXSSA1MzAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQ0IgICAoaGV4KQkJUmVpbmVyIFNDVAotMDAyNUNCICAgICAoYmFzZSAxNikJCVJlaW5lciBTQ1QKLQkJCQlSZWluZXIgS2FydGVuZ2VyYXRlIEdtYkggJiBDby4gS0cuCi0JCQkJR29ldGhlc3RyLiAxNAotCQkJCUZ1cnR3YW5nZW4gIDc4MTIwCi0JCQkJR0VSTUFOWQotCi0wMC0yNS1DQyAgIChoZXgpCQlNb2JpbGUgQ29tbXVuaWNhdGlvbnMgS29yZWEgSW5jb3Jwb3JhdGVkCi0wMDI1Q0MgICAgIChiYXNlIDE2KQkJTW9iaWxlIENvbW11bmljYXRpb25zIEtvcmVhIEluY29ycG9yYXRlZAotCQkJCTEwMTEtMTAxMiwgU3V3b24gSGlnaCBWZW50dXJlIFZhbGxleSwKLQkJCQk5NTggR29zYWVrLWRvbmcsIEd3b25zZW9uLWd1LAotCQkJCVN1d29uLXNpLCBHeWVvbmdnaS1kbywgNDQxLTM2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS1DRCAgIChoZXgpCQlTa3lsYW5lIE9wdGljcwotMDAyNUNEICAgICAoYmFzZSAxNikJCVNreWxhbmUgT3B0aWNzCi0JCQkJUnVlIGQnQXJsb24sIDYKLQkJCQlXaW5kaG9mICA4Mzk5Ci0JCQkJTFVYRU1CT1VSRwotCi0wMC0yNS1DRSAgIChoZXgpCQlJbm5lclNwYWNlCi0wMDI1Q0UgICAgIChiYXNlIDE2KQkJSW5uZXJTcGFjZQotCQkJCVBPIEJveCAyMTg2Ci0JCQkJR3JhbmQgUmFwaWRzIE1JIDQ5NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1DRiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNUNGICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yNS1EMCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNUQwICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJIENvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjUtRDEgICAoaGV4KQkJRWFzdGVjaCBFbGVjdHJvbmljcyAoVGFpd2FuKSBJbmMuCi0wMDI1RDEgICAgIChiYXNlIDE2KQkJRWFzdGVjaCBFbGVjdHJvbmljcyAoVGFpd2FuKSBJbmMuCi0JCQkJMTNGLCBOby4gOTksIFNlYy4gMSwgTmFua2FuIFJvYWQsIEx1Y2h1IFNoaWFuZwotCQkJCVRhb3l1YW4gSHNpZW4gMzM4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1EMiAgIChoZXgpCQlJbnBlZ1Zpc2lvbiBDby4sIEx0ZAotMDAyNUQyICAgICAoYmFzZSAxNikJCUlucGVnVmlzaW9uIENvLiwgTHRkCi0JCQkJMjI2LTMsIEJ1Z29rLWRvbmcsIEdldW1qZW9uZy1ndSwKLQkJCQlCdXNhbiAgNjA5LTMyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS1EMyAgIChoZXgpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMKLTAwMjVEMyAgICAgKGJhc2UgMTYpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMKLQkJCQk4RiAuLCBOby45NCwgQmFvemhvbmcgUmQuCi0JCQkJWGluZGlhbiBDaXR5ICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LUQ0ICAgKGhleCkJCUZvcnRyZXNzIFRlY2hub2xvZ2llcwotMDAyNUQ0ICAgICAoYmFzZSAxNikJCUZvcnRyZXNzIFRlY2hub2xvZ2llcwotCQkJCTIgVGVjaG5vbG9neSBQYXJrIERyCi0JCQkJV2VzdGZvcmQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUQ1ICAgKGhleCkJCVJvYm9uaWNhIChQdHkpIEx0ZAotMDAyNUQ1ICAgICAoYmFzZSAxNikJCVJvYm9uaWNhIChQdHkpIEx0ZAotCQkJCTQxIFBhcmsgQXZlbnVlIE5vcnRoCi0JCQkJSGlnaHdheSBCdXNpbmVzcyBQYXJrCi0JCQkJQ2VudHVyaW9uIEdhdXRlbmcgMDA0NgotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0yNS1ENiAgIChoZXgpCQlUaGUgS3JvZ2VyIENvLgotMDAyNUQ2ICAgICAoYmFzZSAxNikJCVRoZSBLcm9nZXIgQ28uCi0JCQkJMTE0NTAgR3Jvb21zIFJvYWQKLQkJCQlCbHVlIEFzaCBPSCA0NTI0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtRDcgICAoaGV4KQkJQ0VETwotMDAyNUQ3ICAgICAoYmFzZSAxNikJCUNFRE8KLQkJCQlWaWRlbnNrYSAxMjcKLQkJCQlCUk5PICA2MTkwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTI1LUQ4ICAgKGhleCkJCUtPUkVBIE1BSU5URU5BTkNFCi0wMDI1RDggICAgIChiYXNlIDE2KQkJS09SRUEgTUFJTlRFTkFOQ0UKLQkJCQkzRiBIQUVMSU0gQlVJRElORyAxMDMtNywgR1VSTy01RE9ORwotCQkJCUdVUk8tR1UsCi0JCQkJU0VPVUwgIDE1Mi04NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtRDkgICAoaGV4KQkJRGF0YUZhYiBTeXN0ZW1zIEluYy4KLTAwMjVEOSAgICAgKGJhc2UgMTYpCQlEYXRhRmFiIFN5c3RlbXMgSW5jLgotCQkJCTM4NS0zIEhvbmd6dW4gUm9hZAotCQkJCVBpbmd6aGVuIENpdHkgVGFveXVhbiBDb3VudHkgMzI0NjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LURBICAgKGhleCkJCVNlY3VyYSBLZXkKLTAwMjVEQSAgICAgKGJhc2UgMTYpCQlTZWN1cmEgS2V5Ci0JCQkJMjAzMDEgTm9yZGhvZmYgU3QuCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtREIgICAoaGV4KQkJQVRJIEVsZWN0cm9uaWNzKFNoZW56aGVuKSBDby4sIExURAotMDAyNURCICAgICAoYmFzZSAxNikJCUFUSSBFbGVjdHJvbmljcyhTaGVuemhlbikgQ28uLCBMVEQKLQkJCQkyRiwxc3QgQnVsaWRpbmcsVGFuZ3lhbnNoYW4gSW5kdXN0cmlhbCBQYXJrLAotCQkJCVRhbmdrZW5nIFZpbGxhZ2UsU2hpeWFuIFRvd24sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwOAotCQkJCUNISU5BCi0KLTAwLTI1LURDICAgKGhleCkJCVN1bWl0b21vIEVsZWN0cmljIE5ldHdvcmtzLCBJbmMKLTAwMjVEQyAgICAgKGJhc2UgMTYpCQlTdW1pdG9tbyBFbGVjdHJpYyBOZXR3b3JrcywgSW5jCi0JCQkJMS0xLTMsIFNoaW1heWEsIEtvbm9oYW5hLWt1Ci0JCQkJT3Nha2EgT3Nha2EgUHJlZmVjdHVyZSA1NTQtMDAyNAotCQkJCUpBUEFOCi0KLTAwLTI1LUREICAgKGhleCkJCVNVTk5ZVEVLIElORk9STUFUSU9OIENPLiwgTFRELgotMDAyNUREICAgICAoYmFzZSAxNikJCVNVTk5ZVEVLIElORk9STUFUSU9OIENPLiwgTFRELgotCQkJCTEyRiwgTk8uIDg4LCBIU0lOLVRFIFJPQUQKLQkJCQlTQU4gQ0hVTkcgQ0lUWQotCQkJCVRBSVBFSSBIU0lFTiAgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1ERSAgIChoZXgpCQlQcm9iaXRzIENvLiwgTFRELgotMDAyNURFICAgICAoYmFzZSAxNikJCVByb2JpdHMgQ28uLCBMVEQuCi0JCQkJIzE1MDIsIEtvbG9uIFNjaWVuY2UgVmFsbGV5IElJLCA4MTEKLQkJCQlHdXJvLURvbmcsIEd1cm8tR3UsCi0JCQkJU2VvdWwgIDE1Mi04NzgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtREYgICAoaGV4KQkJUFJJVkFURQotMDAyNURGICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yNS1FMCAgIChoZXgpCQlDZWVkVGVjIFNkbiBCaGQKLTAwMjVFMCAgICAgKGJhc2UgMTYpCQlDZWVkVGVjIFNkbiBCaGQKLQkJCQkzMDMtNC01LCBLcnlzdGFsIFBvaW50IEJ1c2luZXNzIENlbnRlcgotCQkJCUJheWFuIExlcGFzIFBlbmFuZyAxMTkwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTI1LUUxICAgKGhleCkJCVNIQU5HSEFJIFNFRVlPTyBFTEVDVFJPTklDICYgVEVDSE5PTE9HWSBDTy4sIExURAotMDAyNUUxICAgICAoYmFzZSAxNikJCVNIQU5HSEFJIFNFRVlPTyBFTEVDVFJPTklDICYgVEVDSE5PTE9HWSBDTy4sIExURAotCQkJCVJNNzAxLFhJTidBTiBCVUlMRElORyw5OSBUSUFOWkhPVSBSRCxYVUhVSSBESVNUUklDVCxTSEFOR0hBSQotCQkJCVNIQU5HSEFJICAyMDAyMzMKLQkJCQlDSElOQQotCi0wMC0yNS1FMiAgIChoZXgpCQlFdmVyc3ByaW5nIEluZHVzdHJ5IENvLiwgTHRkLgotMDAyNUUyICAgICAoYmFzZSAxNikJCUV2ZXJzcHJpbmcgSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJN0YuLCBOby4gNjA5LCBTZWMgMSwgV2Fuc2hvdSBSZC4KLQkJCQlHdWVpc2hhbiBUb3duc2hpcCBUYW95dWFuIENvdW50eSAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LUUzICAgKGhleCkJCUhhbnNoaW5pdCBJbmMuCi0wMDI1RTMgICAgIChiYXNlIDE2KQkJSGFuc2hpbml0IEluYy4KLQkJCQlEb25nLVdvbiBCbGQgM0YsIDM5NS0xMywgR2FsLU1hIDIsIFNlby1HdQotCQkJCURhZWplb24gIDMwMi04MDkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtRTQgICAoaGV4KQkJT01OSS1XaUZpLCBMTEMKLTAwMjVFNCAgICAgKGJhc2UgMTYpCQlPTU5JLVdpRmksIExMQwotCQkJCTEwNyBQaW5lIEhpbGwgUm9hZAotCQkJCUJlcndpY2sgTWFpbmUgMDM5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUU1ICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIEluYwotMDAyNUU1ICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIEluYwotCQkJCTYwLTM5ICxHYXNhbi1Eb25nCi0JCQkJR3VtY2hvbi1ndQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUU2ICAgKGhleCkJCUJlbGdpYW4gTW9uaXRvcmluZyBTeXN0ZW1zIGJ2YmEKLTAwMjVFNiAgICAgKGJhc2UgMTYpCQlCZWxnaWFuIE1vbml0b3JpbmcgU3lzdGVtcyBidmJhCi0JCQkJVGguIFNldmVuc2xhYW4gMTA2Ci0JCQkJS29ydHJpamsgV1ZMIDg1MDAKLQkJCQlCRUxHSVVNCi0KLTAwLTI1LUU3ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDI1RTcgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCAgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjUtRTggICAoaGV4KQkJSWRhaG8gVGVjaG5vbG9neQotMDAyNUU4ICAgICAoYmFzZSAxNikJCUlkYWhvIFRlY2hub2xvZ3kKLQkJCQkzOTAgV2FrYXJhIHdheQotCQkJCVNhbHQgbGFrZSBDaXR5IFVUIDg0MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1FOSAgIChoZXgpCQlpLW1hdGUgRGV2ZWxvcG1lbnQsIEluYy4KLTAwMjVFOSAgICAgKGJhc2UgMTYpCQlpLW1hdGUgRGV2ZWxvcG1lbnQsIEluYy4KLQkJCQk4MzgzIDE1OHRoIEF2ZS4gTi5FLiwgU3VpdGUgMzAwLCBSZWRtb25kLAotCQkJCVdBIDk4MDUyLTM4NzEKLQkJCQlXYXNoaW5ndG9uIFdBIDk4MDUyLTM4NzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUVBICAgKGhleCkJCUlwaGlvbiBCVgotMDAyNUVBICAgICAoYmFzZSAxNikJCUlwaGlvbiBCVgotCQkJCVdpbGxlbXN0cmFhdCAxMDYKLQkJCQlFaW5kaG92ZW4gIDU2MTZHRQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI1LUVCICAgKGhleCkJCVJldXRlY2ggUmFkYXIgU3lzdGVtcyAoUFRZKSBMdGQKLTAwMjVFQiAgICAgKGJhc2UgMTYpCQlSZXV0ZWNoIFJhZGFyIFN5c3RlbXMgKFBUWSkgTHRkCi0JCQkJMzUgRWxlY3Ryb24gQXZlbnVlCi0JCQkJVGVjaG5vcGFyawotCQkJCVN0ZWxsZW5ib3NjaCBXZXN0ZXJuIENhcGUgNzYwMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0yNS1FQyAgIChoZXgpCQlIdW1hbndhcmUKLTAwMjVFQyAgICAgKGJhc2UgMTYpCQlIdW1hbndhcmUKLQkJCQk0NDUgcnVlIGR1IFBhcmMgSW5kdXN0cmllbAotCQkJCUxvbmd1ZXVpbCBRdWViZWMgSjRIIDNWNwotCQkJCUNBTkFEQQotCi0wMC0yNS1FRCAgIChoZXgpCQlOdVZvIFRlY2hub2xvZ2llcyBMTEMKLTAwMjVFRCAgICAgKGJhc2UgMTYpCQlOdVZvIFRlY2hub2xvZ2llcyBMTEMKLQkJCQkzMDE1IEt1c3RvbSBEcml2ZQotCQkJCUhlYnJvbiBLWSA0MTA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtRUUgICAoaGV4KQkJQXZ0ZXggTHRkCi0wMDI1RUUgICAgIChiYXNlIDE2KQkJQXZ0ZXggTHRkCi0JCQkJVW5pdCBHNSBDYXBpdGFsIEJ1c2luZXNzIFBhcmsKLQkJCQlQYXJrd2F5Ci0JCQkJQ2FyZGlmZiAgQ0YzIDJQWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI1LUVGICAgKGhleCkJCUktVEVDIENvLiwgTHRkLgotMDAyNUVGICAgICAoYmFzZSAxNikJCUktVEVDIENvLiwgTHRkLgotCQkJCTcvRixLQVdBUkFNQUNISSBLT1lPIEJMREcuMy00LTMsS0FXQVJBTUNISSxDSFVPLUtVLAotCQkJCU9TQUtBICA1NDEtMDA0OAotCQkJCUpBUEFOCi0KLTAwLTI1LUYwICAgKGhleCkJCVN1Z2EgRWxlY3Ryb25pY3MgTGltaXRlZAotMDAyNUYwICAgICAoYmFzZSAxNikJCVN1Z2EgRWxlY3Ryb25pY3MgTGltaXRlZAotCQkJCVVuaXRzIDE5MDQtMTkwNywgQ2hldmFsaWVyIENvbW1lcmNpYWwgQ2VudHJlLAotCQkJCTggV2FuZyBIb2kgUm9hZCwgLAotCQkJCUtvd2xvb24gQmF5IEhvbmcgS29uZyAKLQkJCQlDSElOQQotCi0wMC0yNS1GMSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyNUYxICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtRjIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjVGMiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUYzICAgKGhleCkJCU5vcmR3ZXN0ZGV1dHNjaGUgWmFobGVycmV2aXNpb24KLTAwMjVGMyAgICAgKGJhc2UgMTYpCQlOb3Jkd2VzdGRldXRzY2hlIFphaGxlcnJldmlzaW9uCi0JCQkJSW5nLiBBdWcuIEtuZW1leWVyIEdtYkggJiBDby4gS0cKLQkJCQlIZWlkZXdlZyAzMwotCQkJCUJhZCBMYWVyIE5pZWRlcnNhY2hzZW4gNDkxOTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LUY0ICAgKGhleCkJCUtvQ28gQ29ubmVjdG9yIEFHCi0wMDI1RjQgICAgIChiYXNlIDE2KQkJS29DbyBDb25uZWN0b3IgQUcKLQkJCQlNYXJpZW5zdHJhc3NlIDEyCi0JCQkJQmVybGluICAxMDExNwotCQkJCUdFUk1BTlkKLQotMDAtMjUtRjUgICAoaGV4KQkJRFZTIEtvcmVhLCBDby4sIEx0ZAotMDAyNUY1ICAgICAoYmFzZSAxNikJCURWUyBLb3JlYSwgQ28uLCBMdGQKLQkJCQk0OTctMywgU2FuZ0hhLURvbmcsIEdpaGV1bmctZ3UKLQkJCQlSJkQgSGFyZHdhcmUgMlRlYW0KLQkJCQlZb25nLUluIGNpdHkgR3llb25nZ2ktZG8gNDQ2LTkxNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS1GNiAgIChoZXgpCQluZXRUQUxLLmNvbSwgSW5jLgotMDAyNUY2ICAgICAoYmFzZSAxNikJCW5ldFRBTEsuY29tLCBJbmMuCi0JCQkJMTEwMCBOVyAxNjNSRCBEUklWRQotCQkJCVNVSVRFIEItNAotCQkJCU5PUlRIIE1JQU1JIEJFQUNIIEZMIDMzMTY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1GNyAgIChoZXgpCQlBbnNhbGRvIFNUUyBVU0EKLTAwMjVGNyAgICAgKGJhc2UgMTYpCQlBbnNhbGRvIFNUUyBVU0EKLQkJCQkxMDAwIFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlVbmlvbiBTd2l0Y2ggJiBTaWduYWwgQnVpbGRpbmcKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1GOSAgIChoZXgpCQlHTUsgZWxlY3Ryb25pYyBkZXNpZ24gR21iSAotMDAyNUY5ICAgICAoYmFzZSAxNikJCUdNSyBlbGVjdHJvbmljIGRlc2lnbiBHbWJICi0JCQkJRGFpbWxlcnN0ci4gOAotCQkJCVdlcm5iZXJnLUtvZWJsaXR6IEJhdmFyaWEgRC05MjUzMwotCQkJCUdFUk1BTlkKLQotMDAtMjUtRkEgICAoaGV4KQkJSiZNIEFuYWx5dGlrIEFHCi0wMDI1RkEgICAgIChiYXNlIDE2KQkJSiZNIEFuYWx5dGlrIEFHCi0JCQkJV2lsbHktTWVzc2Vyc2NobWl0dC1TdHJhc3NlIDgKLQkJCQlFc3NpbmdlbiBCVyA3MzQ1NwotCQkJCUdFUk1BTlkKLQotMDAtMjUtRkIgICAoaGV4KQkJVHVuc3RhbGwgSGVhbHRoY2FyZSBBL1MKLTAwMjVGQiAgICAgKGJhc2UgMTYpCQlUdW5zdGFsbCBIZWFsdGhjYXJlIEEvUwotCQkJCVN0cm9lbW1lbiA2Ci0JCQkJTm9lcnJlc3VuZGJ5ICA5NDAwCi0JCQkJREVOTUFSSwotCi0wMC0yNS1GQyAgIChoZXgpCQlFTkRBIEVORFVTVFJJWUVMIEVMRUtUUk9OSUsgTFRELiBTVEkuCi0wMDI1RkMgICAgIChiYXNlIDE2KQkJRU5EQSBFTkRVU1RSSVlFTCBFTEVLVFJPTklLIExURC4gU1RJLgotCQkJCVkuIER1ZHVsbHUgQmFyYmFyb3MgQy4gS3V0dXAgUy4gTm8uIDIwCi0JCQkJVW1yYW5peWUKLQkJCQlJc3RhbmJ1bCAgMzQ3NzUKLQkJCQlUVVJLRVkKLQotMDAtMjUtRkQgICAoaGV4KQkJT0JSIENlbnRydW0gVGVjaG5pa2kgTW9yc2tpZWogUy5BLgotMDAyNUZEICAgICAoYmFzZSAxNikJCU9CUiBDZW50cnVtIFRlY2huaWtpIE1vcnNraWVqIFMuQS4KLQkJCQlEaWNrbWFuYSA2MgotCQkJCUdkeW5pYSAgODEtMTA5Ci0JCQkJUE9MQU5ECi0KLTAwLTI1LUZFICAgKGhleCkJCVBpbG90IEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCi0wMDI1RkUgICAgIChiYXNlIDE2KQkJUGlsb3QgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLQkJCQlOby4gMiwgVHp1LUNoaWFuZyAzcmQgUm9hZCwgQ2h1bmctTGkgSW5kdXN0cmlhbCBab25lLAotCQkJCVRhb3l1YW4gIEhzaWVuIDMyMDYzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1GRiAgIChoZXgpCQlDcmVOb3ZhIFRlY2hub2xvZ3kgR21iSAotMDAyNUZGICAgICAoYmFzZSAxNikJCUNyZU5vdmEgVGVjaG5vbG9neSBHbWJICi0JCQkJQW4gZGVyIFNjaGluZGhvaGwgNwotCQkJCVN1bHpiYWNoIEhlc3NlbiA2NTg0MwotCQkJCUdFUk1BTlkKLQotMDAtMjYtMDAgICAoaGV4KQkJVEVBQyBBdXN0cmFsaWEgUHR5IEx0ZC4KLTAwMjYwMCAgICAgKGJhc2UgMTYpCQlURUFDIEF1c3RyYWxpYSBQdHkgTHRkLgotCQkJCTc1IE5vcnRoZ2F0ZSBEcml2ZQotCQkJCVRob21hc3Rvd24gVmljdG9yaWEgMzA3NAotCQkJCUFVU1RSQUxJQQotCi0wMC0yNi0wMSAgIChoZXgpCQlQUklWQVRFCi0wMDI2MDEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTI2LTAyICAgKGhleCkJCVNNQVJUIFRlbXBzIExMQwotMDAyNjAyICAgICAoYmFzZSAxNikJCVNNQVJUIFRlbXBzIExMQwotCQkJCTMwMyBTIEJ5cmtpdCBTdAotCQkJCU1pc2hhd2FrYSBJTiA0NjU0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMDMgICAoaGV4KQkJU2hlbnpoZW4gV2lzdGFyIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMjYwMyAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBXaXN0YXIgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCVJtOTE5LCBTY2llbmNlICZUZWNobm9sb2d5IFNlcnZpY2UgQ2VudGVyCi0JCQkJTm8uMSBRaWxpbiBSZAotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjYtMDQgICAoaGV4KQkJQXVkaW8gUHJvY2Vzc2luZyBUZWNobm9sb2d5IEx0ZAotMDAyNjA0ICAgICAoYmFzZSAxNikJCUF1ZGlvIFByb2Nlc3NpbmcgVGVjaG5vbG9neSBMdGQKLQkJCQlXaGl0ZXJvY2sgQnVzaW5lc3MgUGFyawotCQkJCTcyOSBTcHJpbmdmaWVsZCBSb2FkCi0JCQkJQmVsZmFzdCBDb3VudHkgQW50cmltIEJUMTIgN0ZQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjYtMDUgICAoaGV4KQkJQ0MgU3lzdGVtcyBBQgotMDAyNjA1ICAgICAoYmFzZSAxNikJCUNDIFN5c3RlbXMgQUIKLQkJCQlCb3ggODMKLQkJCQlBbGZ0YSBTd2VkZW4gODIyMjIKLQkJCQlTV0VERU4KLQotMDAtMjYtMDYgICAoaGV4KQkJUkFVTUZFTEQgR21iSAotMDAyNjA2ICAgICAoYmFzZSAxNikJCVJBVU1GRUxEIEdtYkgKLQkJCQlSZWljaGVuYmVyZ2VyIFN0ci4gMTI0Ci0JCQkJQmVybGluICAxMDk5OQotCQkJCUdFUk1BTlkKLQotMDAtMjYtMDcgICAoaGV4KQkJRW5hYmxpbmcgVGVjaG5vbG9neSBQdHkgTHRkCi0wMDI2MDcgICAgIChiYXNlIDE2KQkJRW5hYmxpbmcgVGVjaG5vbG9neSBQdHkgTHRkCi0JCQkJMjMvNDQgS2luZ3MgUGFyayBSb2FkCi0JCQkJV2VzdCBQZXJ0aCBXZXN0ZXJuIEF1c3RyYWxpYSA2MDA1Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTI2LTA4ICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjYwOCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wOSAgIChoZXgpCQlQaHlsbGlzIENvLiwgTHRkLgotMDAyNjA5ICAgICAoYmFzZSAxNikJCVBoeWxsaXMgQ28uLCBMdGQuCi0JCQkJOXRoIEZsLiwgUm9vbSAzLzQsIE5vLiA1MiwgU2VjLiAyLCBDaHVuZyBTaGFuIE5vcnRoIFJvYWQsCi0JCQkJVGFpcGVpICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTBBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjYwQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2MEIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMEMgICAoaGV4KQkJRGF0YXJhbQotMDAyNjBDICAgICAoYmFzZSAxNikJCURhdGFyYW0KLQkJCQkxODYgUHJpbmNldG9uIFJkLgotCQkJCUJsZGcuIDNBCi0JCQkJV2VzdCBXaW5kc29yIE5KIDA4NTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wRCAgIChoZXgpCQlNaWNyb25ldGljcywgSW5jLgotMDAyNjBEICAgICAoYmFzZSAxNikJCU1pY3JvbmV0aWNzLCBJbmMuCi0JCQkJMjYgSGFtcHNoaXJlIERyCi0JCQkJSHVkc29uIE5IIDAzMDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wRSAgIChoZXgpCQlBYmxhemUgU3lzdGVtcywgTExDCi0wMDI2MEUgICAgIChiYXNlIDE2KQkJQWJsYXplIFN5c3RlbXMsIExMQwotCQkJCTUyMyBXZXN0IFZhbGxleSBSb2FkCi0JCQkJV2F5bmUgUGVubnN5bHZhbmlhIDE5MDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wRiAgIChoZXgpCQlMaW5uIFByb2R1Y3RzIEx0ZAotMDAyNjBGICAgICAoYmFzZSAxNikJCUxpbm4gUHJvZHVjdHMgTHRkCi0JCQkJR2xhc2dvdyBSb2FkCi0JCQkJV2F0ZXJmb290Ci0JCQkJR2xhc2dvdyAgRzc2IDBFUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI2LTEwICAgKGhleCkJCUFwYWNld2F2ZSBUZWNobm9sb2dpZXMKLTAwMjYxMCAgICAgKGJhc2UgMTYpCQlBcGFjZXdhdmUgVGVjaG5vbG9naWVzCi0JCQkJNDgzODkgRnJlbW9udCBCbHZkLCBTVEUjMTAwCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMTEgICAoaGV4KQkJTGljZXJhIEFCCi0wMDI2MTEgICAgIChiYXNlIDE2KQkJTGljZXJhIEFCCi0JCQkJVGVrbmlrcmluZ2VuIDFDCi0JCQkJTGlua29waW5nICA1ODMzMAotCQkJCVNXRURFTgotCi0wMC0yNi0xMiAgIChoZXgpCQlTcGFjZSBFeHBsb3JhdGlvbiBUZWNobm9sb2dpZXMKLTAwMjYxMiAgICAgKGJhc2UgMTYpCQlTcGFjZSBFeHBsb3JhdGlvbiBUZWNobm9sb2dpZXMKLQkJCQkxIFJvY2tldCBSb2FkCi0JCQkJSGF3dGhvcm5lIENBIDkwMjUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0xMyAgIChoZXgpCQlFbmdlbCBBeGlsIFMuTC4KLTAwMjYxMyAgICAgKGJhc2UgMTYpCQlFbmdlbCBBeGlsIFMuTC4KLQkJCQlQdWlnIGRlbHMgVHVkb25zLCA2Ci0JCQkJUG9sLiBJbmR1c3RyaWFsIFNhbnRpZ2EKLQkJCQlCYXJiZXJhIGRlbCBWYWxsZXMgQmFyY2Vsb25hIDA4MjEwCi0JCQkJU1BBSU4KLQotMDAtMjYtMTQgICAoaGV4KQkJS1RORgotMDAyNjE0ICAgICAoYmFzZSAxNikJCUtUTkYKLQkJCQkyMDQsRGFlcnl1bmd0ZWNobm90b3duMSwzMjcsR2FzYW4tRG9uZywKLQkJCQlHZXVtY2hlb24tR3UsCi0JCQkJU2VvdWwgIDE1My03NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtMTUgICAoaGV4KQkJVGVyYWNvbSBMaW1pdGVkCi0wMDI2MTUgICAgIChiYXNlIDE2KQkJVGVyYWNvbSBMaW1pdGVkCi0JCQkJQi04NAotCQkJCVNlY3RvciAtIDYwCi0JCQkJTm9pZGEgVXR0YXIgUHJhZGVzaCAyMDEzMDEKLQkJCQlJTkRJQQotCi0wMC0yNi0xNiAgIChoZXgpCQlSb3NlbW91bnQgSW5jLgotMDAyNjE2ICAgICAoYmFzZSAxNikJCVJvc2Vtb3VudCBJbmMuCi0JCQkJODIwMCBNYXJrZXQgQm91bGV2YXJkCi0JCQkJQ2hhbmhhc3NlbiBNTiA1NTMxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMTcgICAoaGV4KQkJT0VNIFdvcmxkd2lkZQotMDAyNjE3ICAgICAoYmFzZSAxNikJCU9FTSBXb3JsZHdpZGUKLQkJCQkyOTIwIEtlbGx5IEF2ZQotCQkJCVdhdGVydG93biBTRCA1NzIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMTggICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDI2MTggICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdQotCQkJCVRhaXBlaSBUYWl3YW4gMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi0xOSAgIChoZXgpCQlGUkMKLTAwMjYxOSAgICAgKGJhc2UgMTYpCQlGUkMKLQkJCQkxNTExIFNvdXRoIEJlbmphbWluIEF2ZW51ZQotCQkJCU1hc29uIENpdHkgSUEgNTA0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTFBICAgKGhleCkJCUZlbXRvY29tbSBTeXN0ZW0gVGVjaG5vbG9neSBDb3JwLgotMDAyNjFBICAgICAoYmFzZSAxNikJCUZlbXRvY29tbSBTeXN0ZW0gVGVjaG5vbG9neSBDb3JwLgotCQkJCTJGLi0yLE5vLjI4LCBUYWl5dWFuIFN0LiwKLQkJCQlKaHViZWkgQ2l0eSwgSHNpbmNodSBDb3VudHJ5LCAzMDI4OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtMUIgICAoaGV4KQkJTEFVUkVMIEJBTksgTUFDSElORVMgQ08uLCBMVEQuCi0wMDI2MUIgICAgIChiYXNlIDE2KQkJTEFVUkVMIEJBTksgTUFDSElORVMgQ08uLCBMVEQuCi0JCQkJMTItNgotCQkJCWhpZ2FzaGl0YWJhdGEgMS1DaG9tZQotCQkJCUtpdGEtS3UgVG9reW8gMTE0LTAwMTMKLQkJCQlKQVBBTgotCi0wMC0yNi0xQyAgIChoZXgpCQlORU9WSUEgSU5DLgotMDAyNjFDICAgICAoYmFzZSAxNikJCU5FT1ZJQSBJTkMuCi0JCQkJNTAzIExPVFRFIElUIENBU1RMRSAxRE9ORyw1NTAtMQotCQkJCUdBU0FOLURPTkcsIEdFVU1DSEVPTi1HVQotCQkJCVNFT1VMICAxNTMtNzY4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTFEICAgKGhleCkJCUNPUCBTRUNVUklUWSBTWVNURU0gQ09SUC4KLTAwMjYxRCAgICAgKGJhc2UgMTYpCQlDT1AgU0VDVVJJVFkgU1lTVEVNIENPUlAuCi0JCQkJNH43RiwgTm8uNSwgTGFuZSAxMzAsIE1pbi1DaHVuZyBSZC4sCi0JCQkJSHNpbiBUaWVuIENpdHkKLQkJCQlUYWlwZWkgIDIzMTQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi0xRSAgIChoZXgpCQlRSU5HQkFORyBFTEVDKFNaKSBDTy4sIExURAotMDAyNjFFICAgICAoYmFzZSAxNikJCVFJTkdCQU5HIEVMRUMoU1opIENPLiwgTFRECi0JCQkJTm8uIDIsIHFpbWluIFJkLiBOb3J0aCBEaXN0cmljdCwgSGlnaC10ZWNoIEluZHVzdHJpYWwgUGFyaywgTmFuc2hhbiwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjYtMUYgICAoaGV4KQkJU0FFIE1hZ25ldGljcyAoSC5LLikgTHRkLgotMDAyNjFGICAgICAoYmFzZSAxNikJCVNBRSBNYWduZXRpY3MgKEguSy4pIEx0ZC4KLQkJCQlTQUUgVGVjaG5vbG9neSBDZW50cmUKLQkJCQk2IFNjaWVuY2UgUGFyayBFYXN0IEF2ZW51ZQotCQkJCUhvbmcgS29uZyBTY2llbmNlIFBhcmsgU2hhdGluLCBOZXcgVGVycml0b3JpZXMgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTI2LTIwICAgKGhleCkJCUlTR1VTIEdtYkgKLTAwMjYyMCAgICAgKGJhc2UgMTYpCQlJU0dVUyBHbWJICi0JCQkJT2JlcmRvcmZzdHJhc3NlIDE4IC0gMjIKLQkJCQlWUyAtIFNjaHdlbm5pbmdlbiBCVyA3ODA1NAotCQkJCUdFUk1BTlkKLQotMDAtMjYtMjEgICAoaGV4KQkJSW50ZWxpQ2xvdWQgVGVjaG5vbG9neSBJbmMuCi0wMDI2MjEgICAgIChiYXNlIDE2KQkJSW50ZWxpQ2xvdWQgVGVjaG5vbG9neSBJbmMuCi0JCQkJODk1IERvdmUgU3QuCi0JCQkJU3RlLiAzMDAKLQkJCQlOZXdwb3J0IEJlYWNoIENBIDkyNjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0yMiAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELgotMDAyNjIyICAgICAoYmFzZSAxNikJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuCi0JCQkJTk8uIDI1LCBUSEUgM1JEIFN0cmVldCBLVU5TSEFOIEVYUE9SVCBQUk9DRVNTSU5HIFpPTkUKLQkJCQlLVU5TSEFOIFNVWkhPVSAyMTUzMDAKLQkJCQlDSElOQQotCi0wMC0yNi0yMyAgIChoZXgpCQlKUkQgQ29tbXVuaWNhdGlvbiBJbmMKLTAwMjYyMyAgICAgKGJhc2UgMTYpCQlKUkQgQ29tbXVuaWNhdGlvbiBJbmMKLQkJCQkxNi9GLCBUQ0wgVG93ZXIsIEdhb3hpbiBOYW55aSBSb2FkLCBOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTI2LTI0ICAgKGhleCkJCVRob21zb24gSW5jLgotMDAyNjI0ICAgICAoYmFzZSAxNikJCVRob21zb24gSW5jLgotCQkJCTEwMSBXZXN0IDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMjUgICAoaGV4KQkJTWVkaWFTcHV0bmlrCi0wMDI2MjUgICAgIChiYXNlIDE2KQkJTWVkaWFTcHV0bmlrCi0JCQkJWWFyb3NsYXZza29lIHNob3NzZSwgMTksCi0JCQkJTW9zY293ICAxMjkzMzcKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjYtMjYgICAoaGV4KQkJR2VvcGh5c2ljYWwgU3VydmV5IFN5c3RlbXMsIEluYy4KLTAwMjYyNiAgICAgKGJhc2UgMTYpCQlHZW9waHlzaWNhbCBTdXJ2ZXkgU3lzdGVtcywgSW5jLgotCQkJCTEyIEluZHVzdHJpYWwgV2F5Ci0JCQkJU2FsZW0gTkggMDMwNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTI3ICAgKGhleCkJCVRydWVzZWxsCi0wMDI2MjcgICAgIChiYXNlIDE2KQkJVHJ1ZXNlbGwKLQkJCQkzMDEgU3VuZ3l1biBCbGRnLCA4OS0yCi0JCQkJWWFuZ2phZS1kb25nLAotCQkJCVNlb2Noby1ndSwgU2VvdWwgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi0yOCAgIChoZXgpCQljb21wYW55dGVjIGF1dG9tYWNhbyBlIGNvbnRyb2xlIGx0ZGEKLTAwMjYyOCAgICAgKGJhc2UgMTYpCQljb21wYW55dGVjIGF1dG9tYWNhbyBlIGNvbnRyb2xlIGx0ZGEKLQkJCQlSdWEgTWFyY2lsaW8gRGlhcyAzMDA1Ci0JCQkJUGVsb3RhcyBSaW8gR3JhbmRlIGRvIFN1bCA5NjAyMC00ODAKLQkJCQlCUkFaSUwKLQotMDAtMjYtMjkgICAoaGV4KQkJSnVwaG9vbiBTeXN0ZW0gU29mdHdhcmUgSW5jLgotMDAyNjI5ICAgICAoYmFzZSAxNikJCUp1cGhvb24gU3lzdGVtIFNvZnR3YXJlIEluYy4KLQkJCQlSb29tIDkxMCxCdWlsZGluZyAyCi0JCQkJU2hhbmdkb25nIEludGVybmF0aW9uIEJ1aWxkaW5nLEppYW5nZG9uZyBEaXN0cmljdAotCQkJCU5pbmdibyBaaGVqaWFuZyAzMTUwNDEKLQkJCQlDSElOQQotCi0wMC0yNi0yQSAgIChoZXgpCQlQcm94ZW5zZSwgTExDCi0wMDI2MkEgICAgIChiYXNlIDE2KQkJUHJveGVuc2UsIExMQwotCQkJCTY4OSBOVyBTdG9uZXBpbmUgRHIKLQkJCQlCZW5kIE9yZWdvbiA5NzcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMkIgICAoaGV4KQkJV29uZ3MgRWxlY3Ryb25pY3MgQ28uIEx0ZC4KLTAwMjYyQiAgICAgKGJhc2UgMTYpCQlXb25ncyBFbGVjdHJvbmljcyBDby4gTHRkLgotCQkJCVdhbmZlbmcgSW5kLiBFc2F0YSwgU2hhamluZywgQmFvYW4sCi0JCQkJU2hlbnpoZW4gR3VhbmcgRG9uZyA1MTgxMDQKLQkJCQlDSElOQQotCi0wMC0yNi0yQyAgIChoZXgpCQlJS1QgQWR2YW5jZWQgVGVjaG5vbG9naWVzIHMuci5vLgotMDAyNjJDICAgICAoYmFzZSAxNikJCUlLVCBBZHZhbmNlZCBUZWNobm9sb2dpZXMgcy5yLm8uCi0JCQkJUGlzZWNrZWhvIDMzNC8xOQotCQkJCVByYWhhIDUgIDE1MDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMjYtMkQgICAoaGV4KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotMDAyNjJEICAgICAoYmFzZSAxNikJCVdpc3Ryb24gQ29ycG9yYXRpb24KLQkJCQkyMUYsIDg4LCBTZWMuMSwgSHNpbiBUYWkgV3UgUmQuLCBIc2ljaGloLAotCQkJCVRhaXBlaSBIc2llbiBUYWl3YW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi0yRSAgIChoZXgpCQlDaGVuZ2R1IEppdXpob3UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEluYwotMDAyNjJFICAgICAoYmFzZSAxNikJCUNoZW5nZHUgSml1emhvdSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgSW5jCi0JCQkJQTIgQnVpbGRpbmcsVGlhbmZ1IFNvZnR3YXJlIFBhcmsKLQkJCQlOby43NjUsTWlkIFRpYW5mdSBBdmVudWUsSGlnaC10ZWNoIGluZHVzdHJpYWwgRGV2ZWxvcG1lbnQgWm9uZQotCQkJCUNoZW5nZHUgU2ljaHVhbiA2MTAwNDEKLQkJCQlDSElOQQotCi0wMC0yNi0yRiAgIChoZXgpCQlIQU1BTUFUU1UgVE9BIEVMRUNUUk9OSUNTCi0wMDI2MkYgICAgIChiYXNlIDE2KQkJSEFNQU1BVFNVIFRPQSBFTEVDVFJPTklDUwotCQkJCTkxNjItMQotCQkJCU1JWUFLT0RBLUNITwotCQkJCUhBTUFNQVRTVSBTSVpVT0tBIDQzMS0yMTAyCi0JCQkJSkFQQU4KLQotMDAtMjYtMzAgICAoaGV4KQkJQUNPUkVMIFMuQS5TCi0wMDI2MzAgICAgIChiYXNlIDE2KQkJQUNPUkVMIFMuQS5TCi0JCQkJMywgUnVlIFBhdWwgTEFOR0VWSU4KLQkJCQlTQUlOVC1QRVJBWSAgRi0wNzEzMAotCQkJCUZSQU5DRQotCi0wMC0yNi0zMSAgIChoZXgpCQlDT01NVEFDVCBMVEQKLTAwMjYzMSAgICAgKGJhc2UgMTYpCQlDT01NVEFDVCBMVEQKLQkJCQlOYWhhbCBTbmlyIDEwCi0JCQkJUE8gQm94IDE2OQotCQkJCVlhem5lICA4MTEwMQotCQkJCUlTUkFFTAotCi0wMC0yNi0zMiAgIChoZXgpCQlJbnN0cnVtZW50YXRpb24gVGVjaG5vbG9naWVzIGQuZC4KLTAwMjYzMiAgICAgKGJhc2UgMTYpCQlJbnN0cnVtZW50YXRpb24gVGVjaG5vbG9naWVzIGQuZC4KLQkJCQlWZWxpa2EgcG90IDIyCi0JCQkJU29sa2FuIE5vdmEgR29yaWNhIDUyNTAKLQkJCQlTTE9WRU5JQQotCi0wMC0yNi0zMyAgIChoZXgpCQlNSVIgLSBNZWRpY2FsIEludGVybmF0aW9uYWwgUmVzZWFyY2gKLTAwMjYzMyAgICAgKGJhc2UgMTYpCQlNSVIgLSBNZWRpY2FsIEludGVybmF0aW9uYWwgUmVzZWFyY2gKLQkJCQlWaWEgZGVsIE1hZ2dpb2xpbm8gMTI1Ci0JCQkJUm9tZSBSTSAwMDE1NQotCQkJCUlUQUxZCi0KLTAwLTI2LTM0ICAgKGhleCkJCUluZmluZXRhIFN5c3RlbXMsIEluYwotMDAyNjM0ICAgICAoYmFzZSAxNikJCUluZmluZXRhIFN5c3RlbXMsIEluYwotCQkJCTI4NzAgWmFua2VyIFJkCi0JCQkJU3VpdGUgMTAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTM1ICAgKGhleCkJCUJsdWV0ZWNobml4IEdtYkgKLTAwMjYzNSAgICAgKGJhc2UgMTYpCQlCbHVldGVjaG5peCBHbWJICi0JCQkJV2FpZGhhdXNlbnN0ci4gMy8xOQotCQkJCVZpZW5uYSAgMTE0MAotCQkJCUFVU1RSSUEKLQotMDAtMjYtMzYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjYzNiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMzcgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvLU1lY2hhbmljcwotMDAyNjM3ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryby1NZWNoYW5pY3MKLQkJCQkzMTQsIE1ldGFuIGRvbmcKLQkJCQlTdXdvbiBLeXVuZy1raSBkbyA0NDMtNzQzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTM4ICAgKGhleCkJCVhpYSBNZW4gSm95YXRlY2ggQ28uLCBMdGQuCi0wMDI2MzggICAgIChiYXNlIDE2KQkJWGlhIE1lbiBKb3lhdGVjaCBDby4sIEx0ZC4KLQkJCQlSb29tIDMwNCwgMjh0aCBCdWlsZGluZywgR3VhbnJpIFJvYWQsIFhpYW1lbiBTb2Z0d2FyZSBQYXJrCi0JCQkJWGlhbWVuIEZ1amlhbiBQcm92aW5jZSAzNjEwMDgKLQkJCQlDSElOQQotCi0wMC0yNi0zOSAgIChoZXgpCQlULk0uIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDI2MzkgICAgIChiYXNlIDE2KQkJVC5NLiBFbGVjdHJvbmljcywgSW5jLgotCQkJCTQ1IE1haW4gU3QKLQkJCQlCb3lsc3RvbiBNQSAwMTUwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtM0EgICAoaGV4KQkJRGlnaXRlYyBTeXN0ZW1zCi0wMDI2M0EgICAgIChiYXNlIDE2KQkJRGlnaXRlYyBTeXN0ZW1zCi0JCQkJQzVBLzI1NywgMXN0IEZsb29yCi0JCQkJSmFuYWtwdXJpCi0JCQkJTmV3IERlbGhpIERlbGhpIDExMDA1OAotCQkJCUlORElBCi0KLTAwLTI2LTNCICAgKGhleCkJCU9uYm5ldGVjaAotMDAyNjNCICAgICAoYmFzZSAxNikJCU9uYm5ldGVjaAotCQkJCTUwNiwgU2Ftc3VuZyBJVCBWYWxsZXksIDE5Ny01Ci0JCQkJR3Vyby1Eb25nCi0JCQkJR3Vyby1HdSBTZW91bCAxNTItODQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTNDICAgKGhleCkJCUJhY2htYW5uIEdtYkggJiBDby4gS0cKLTAwMjYzQyAgICAgKGJhc2UgMTYpCQlCYWNobWFubiBHbWJIICYgQ28uIEtHCi0JCQkJRXJuc3RoYWxkZW5zdHJhc3NlIDMzCi0JCQkJU3R1dHRnYXJ0IEJXIDcwNTY1Ci0JCQkJR0VSTUFOWQotCi0wMC0yNi0zRCAgIChoZXgpCQlNSUEgQ29ycG9yYXRpb24KLTAwMjYzRCAgICAgKGJhc2UgMTYpCQlNSUEgQ29ycG9yYXRpb24KLQkJCQkxLTMtMTUgWW9zaGluby1jaG8sIE1pbmFtaS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIzMi0wMDE0Ci0JCQkJSkFQQU4KLQotMDAtMjYtM0UgICAoaGV4KQkJVHJhcGV6ZSBOZXR3b3JrcwotMDAyNjNFICAgICAoYmFzZSAxNikJCVRyYXBlemUgTmV0d29ya3MKLQkJCQk1NzUzIFdlc3QgTGFzIFBvc2l0YXMgQmx2ZC4KLQkJCQlQbGVhc2FudG9uIENhbGlmb3JuaWEgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTNGICAgKGhleCkJCUxJT1MgVGVjaG5vbG9neSBHbWJICi0wMDI2M0YgICAgIChiYXNlIDE2KQkJTElPUyBUZWNobm9sb2d5IEdtYkgKLQkJCQlTY2hhbnplbnN0cmFzc2UgMzkKLQkJCQlCdWlsZGluZyBEOS1EMTMKLQkJCQlLb2xuIEdlcm1hbnkgRC01MTA2MwotCQkJCUdFUk1BTlkKLQotMDAtMjYtNDAgICAoaGV4KQkJQmF1c3RlbSBCcm9hZGJhbmQgVGVjaG5vbG9naWVzLCBMdGQuCi0wMDI2NDAgICAgIChiYXNlIDE2KQkJQmF1c3RlbSBCcm9hZGJhbmQgVGVjaG5vbG9naWVzLCBMdGQuCi0JCQkJOTEwIFF1YW50dW0gUGxhemEKLQkJCQlOby4yMyBaaGljaHVuIFJvYWQKLQkJCQlCZWlqaW5nICAxMDAxOTEKLQkJCQlDSElOQQotCi0wMC0yNi00MSAgIChoZXgpCQlNb3Rvcm9sYSwgSW5jCi0wMDI2NDEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYwotCQkJCTExMDEgTWFyaW5hIFZpbGxhZ2UgUGFya3dheQotCQkJCVN1aXRlIDIwMAotCQkJCUFsYW1lZGEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTQyICAgKGhleCkJCU1vdG9yb2xhLCBJbmMKLTAwMjY0MiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSwgSW5jCi0JCQkJMTEwMSBNYXJpbmEgVmlsbGFnZSBQYXJrd2F5Ci0JCQkJU3VpdGUgMjAwCi0JCQkJQWxhbWVkYSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNDMgICAoaGV4KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotMDAyNjQzICAgICAoYmFzZSAxNikJCUFscHMgRWxlY3RyaWMgQ28uLCBMdGQKLQkJCQkxLTItMSxPa2lub3VjaGkKLQkJCQlTb21hLWNpdHkgRnVrdXNoaW1hLWtlbiA5NzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTI2LTQ0ICAgKGhleCkJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0wMDI2NDQgICAgIChiYXNlIDE2KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3Ci0JCQkJRWRlZ2VtIEFudHdlcnAgQi0yNjUwCi0JCQkJQkVMR0lVTQotCi0wMC0yNi00NSAgIChoZXgpCQlDaXJjb250cm9sIFMuQS4KLTAwMjY0NSAgICAgKGJhc2UgMTYpCQlDaXJjb250cm9sIFMuQS4KLQkJCQlMZXBhbnQgNDMKLQkJCQlUZXJyYXNzYSBCYXJjZWxvbmEgMDgyMjMKLQkJCQlTUEFJTgotCi0wMC0yNi00NiAgIChoZXgpCQlTSEVOWUFORyBUT05HRkFORyBNVUxUSU1FRElBIFRFQ0hOT0xPR1kgQ09NUEFOWSBMSU1JVEVECi0wMDI2NDYgICAgIChiYXNlIDE2KQkJU0hFTllBTkcgVE9OR0ZBTkcgTVVMVElNRURJQSBURUNITk9MT0dZIENPTVBBTlkgTElNSVRFRAotCQkJCU5vLjEwIFBpbmcgTmFuIEVhc3QgUm9hZAotCQkJCUh1bm5hbiBOZXcgRGlzdHJpY3QuCi0JCQkJU2hlbnlhbmcgTGlhbyBOaW5nIDExMDAxNAotCQkJCUNISU5BCi0KLTAwLTI2LTQ3ICAgKGhleCkJCVdGRSBURUNITk9MT0dZIENPUlAuCi0wMDI2NDcgICAgIChiYXNlIDE2KQkJV0ZFIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkxN0YgTk8uMjM4LENoaW4tSHVhIE4gUmQsCi0JCQkJVGFpY2h1bmcgIDQwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtNDggICAoaGV4KQkJRW1pdGVjaCBDb3JwLgotMDAyNjQ4ICAgICAoYmFzZSAxNikJCUVtaXRlY2ggQ29ycC4KLQkJCQlOby4gMTU2LTVBLCBDaGVuZ0dvbmcgMXN0IFN0LiwKLQkJCQlKaHViZWkgQ2l0eSBIc2luY2h1IENvdW50eSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTRBICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjY0QSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNEMgICAoaGV4KQkJU2hhbmdoYWkgRGlnaVZpc2lvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyNjRDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERpZ2lWaXNpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMzMzIEd1YW5namkgUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDA4MwotCQkJCUNISU5BCi0KLTAwLTI2LTREICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMjY0RCAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOby4gOSAsIFBhcmsgQXZlbnVlIElJICwKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyayAsCi0JCQkJSHNpbmNodSBUYWl3YW4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi00RSAgIChoZXgpCQlSYWlsICYgUm9hZCBQcm90ZWMgR21iSAotMDAyNjRFICAgICAoYmFzZSAxNikJCVJhaWwgJiBSb2FkIFByb3RlYyBHbWJICi0JCQkJTm9yZGVyaG9mZW5kZW4gMTItMTMKLQkJCQlGbGVuc2J1cmcgIDI0OTM3Ci0JCQkJR0VSTUFOWQotCi0wMC0yNi00RiAgIChoZXgpCQlLcnVnZXImR290aGUgR21iSAotMDAyNjRGICAgICAoYmFzZSAxNikJCUtydWdlciZHb3RoZSBHbWJICi0JCQkJQXR6ZW5kb3JmZXIgU3RyYXNzZSAxOQotCQkJCVN0YXNzZnVydCBTYWNoc2VuIEFuaGFsdCAzOTQxOAotCQkJCUdFUk1BTlkKLQotMDAtMjYtNTAgICAoaGV4KQkJMldpcmUKLTAwMjY1MCAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTUxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjY1MSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi01MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2NTIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNTMgICAoaGV4KQkJRGF5U2VxdWVycmEgQ29ycG9yYXRpb24KLTAwMjY1MyAgICAgKGJhc2UgMTYpCQlEYXlTZXF1ZXJyYSBDb3Jwb3JhdGlvbgotCQkJCTE1NCBDb29wZXIgUm9hZAotCQkJCVN1aXRlICM5MDIKLQkJCQlXZXN0IEJlcmxpbiBOSiAwODA5MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNTQgICAoaGV4KQkJM0NvbSBDb3Jwb3JhdGlvbgotMDAyNjU0ICAgICAoYmFzZSAxNikJCTNDb20gQ29ycG9yYXRpb24KLQkJCQk1MzUzIEJldHN5IFJvc3MgRHJpdmUKLQkJCQlCbGRnIDE0LCBNL1MgMTQyNQotCQkJCVNhbnRhIENsYXJhIENhbGlmb3JuaWEgOTUwNTQtMTE2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNTUgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDI2NTUgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1zIDA2MDMwMgotCQkJCUhvdXN0b24gVGV4YXMgNzcwOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTU2ICAgKGhleCkJCVNhbnNvbmljIEVsZWN0cm9uaWNzIFVTQQotMDAyNjU2ICAgICAoYmFzZSAxNikJCVNhbnNvbmljIEVsZWN0cm9uaWNzIFVTQQotCQkJCTk5NTAgQmFsZHdpbiBQbGFjZQotCQkJCUVsIE1vbnRlIENhaWxmb3JuaWEgOTE3MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTU3ICAgKGhleCkJCU9PTyBOUFAgRUtSQQotMDAyNjU3ICAgICAoYmFzZSAxNikJCU9PTyBOUFAgRUtSQQotCQkJCUkuWWFrb3ZsZXZhIFN0LiwgMwotCQkJCUNoZWJva3NhcnkgQ2h1dmFzaCBSZXB1YmxpYyA0MjgwMDMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjYtNTggICAoaGV4KQkJVC1QbGF0Zm9ybXMgKEN5cHJ1cykgTGltaXRlZAotMDAyNjU4ICAgICAoYmFzZSAxNikJCVQtUGxhdGZvcm1zIChDeXBydXMpIExpbWl0ZWQKLQkJCQlUaGVtaXN0b2tsaSBEZXJ2aSAzLCBKdWxpYSBIb3VzZQotCQkJCU5pY29zaWEgIFAuQy4tMTA2NgotCQkJCUNZUFJVUwotCi0wMC0yNi01OSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjY1OSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yNi01QSAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMjY1QSAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFNpbmh1IDNyZCBSZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtNUIgICAoaGV4KQkJSGl0cm9uIFRlY2hub2xvZ2llcy4gSW5jCi0wMDI2NUIgICAgIChiYXNlIDE2KQkJSGl0cm9uIFRlY2hub2xvZ2llcy4gSW5jCi0JCQkJTm8uIDEtOCwgTGlzaW5nIDFzdCBSZC4gSHNpbmNodSBTY2llbmNlIFBhcmssCi0JCQkJSHNpbi1jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtNUMgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotMDAyNjVDICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLTAwLTI2LTVEICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTAwMjY1RCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTVFICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTAwMjY1RSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi0wMC0yNi01RiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMjY1RiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtNjAgICAoaGV4KQkJTG9naXdheXMKLTAwMjY2MCAgICAgKGJhc2UgMTYpCQlMb2dpd2F5cwotCQkJCTI0LzI2IHJ1ZSBMb3VpcyBBUk1BTkQKLQkJCQlQQVJJUyAgNzUwMTUKLQkJCQlGUkFOQ0UKLQotMDAtMjYtNjEgICAoaGV4KQkJSXJ1bXRlayBDby4sIEx0ZC4KLTAwMjY2MSAgICAgKGJhc2UgMTYpCQlJcnVtdGVrIENvLiwgTHRkLgotCQkJCUFwdCA3MDggIDUxMy0yMiBKb29uZ2lsIEVpbmVzIFBsYXR6Ci0JCQkJU2FuZ2RhZXdvbi1kb25nLCBKdW5nd29uLUd1Ci0JCQkJU2VvbmduYW0tQ2l0eSBHeXVuZ2dpLWRvIDQ2Mi0xMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtNjIgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLTAwMjY2MiAgICAgKGJhc2UgMTYpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNjMgICAoaGV4KQkJU2hlbnpoZW4gSHVpdGFpd2VpIFRlY2guIEx0ZCwgY28uCi0wMDI2NjMgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gSHVpdGFpd2VpIFRlY2guIEx0ZCwgY28uCi0JCQkJSmlhbkRhIEJ1aWxkaW5nLDUwMS01MDIKLQkJCQlLZXdlaSBOby4gMQotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi0wMC0yNi02NCAgIChoZXgpCQlDb3JlIFN5c3RlbSBKYXBhbgotMDAyNjY0ICAgICAoYmFzZSAxNikJCUNvcmUgU3lzdGVtIEphcGFuCi0JCQkJQnVuc2h1IEJsZGcsMi0yNy02LE15b2ppbgotCQkJCUhhY2hpb2ppIFRva3lvIDE5MjAwNDYKLQkJCQlKQVBBTgotCi0wMC0yNi02NSAgIChoZXgpCQlQcm90ZWN0ZWRMb2dpYyBDb3Jwb3JhdGlvbgotMDAyNjY1ICAgICAoYmFzZSAxNikJCVByb3RlY3RlZExvZ2ljIENvcnBvcmF0aW9uCi0JCQkJUE8gQm94IDY3NzA3Ci0JCQkJQWxidXF1ZXJxdWUgTk0gODcxOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTY2ICAgKGhleCkJCUVGTSBOZXR3b3JrcwotMDAyNjY2ICAgICAoYmFzZSAxNikJCUVGTSBOZXR3b3JrcwotCQkJCTZGIEJlbnBvc3JhIElJIEIvRCAxODAyLTEKLQkJCQlCb2plb25nLWRvbmcgR2loZXVuZy1ndSwKLQkJCQlZb25nIEluIEt5dW5nZ2ktZG8gNDQ2LTkxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi02NyAgIChoZXgpCQlDQVJFQ09NIENPLixMVEQuCi0wMDI2NjcgICAgIChiYXNlIDE2KQkJQ0FSRUNPTSBDTy4sTFRELgotCQkJCTMtMzUtNAotCQkJCVRhbWFnYXdhCi0JCQkJQ2hvZnUgVG9reW8gMTgyLTAwMjUKLQkJCQlKQVBBTgotCi0wMC0yNi02OCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNjY4ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yNi02OSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNjY5ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yNi02QSAgIChoZXgpCQlFU1NFTlNJVU0gTlYKLTAwMjY2QSAgICAgKGJhc2UgMTYpCQlFU1NFTlNJVU0gTlYKLQkJCQlHYXN0b24gR2VlbnNsYWFuIDkKLQkJCQlMRVVWRU4gVkwgQlJBQkFOVCAzMDAxCi0JCQkJQkVMR0lVTQotCi0wMC0yNi02QiAgIChoZXgpCQlTSElORSBVTklPTiBFTlRFUlBSSVNFIExJTUlURUQKLTAwMjY2QiAgICAgKGJhc2UgMTYpCQlTSElORSBVTklPTiBFTlRFUlBSSVNFIExJTUlURUQKLQkJCQlVTklUIDEyMTEsIDEyRkwuLCBDSEVWQUxJRVIgQ09NTUVSQ0lBTCBDRU5URVIsCi0JCQkJTk8uOCBXQU5HIEhPSSBST0FELCBLT1dMT09OQkFZCi0JCQkJS09XTE9PTiAgTklMCi0JCQkJSE9ORyBLT05HCi0KLTAwLTI2LTZDICAgKGhleCkJCUludmVudGVjCi0wMDI2NkMgICAgIChiYXNlIDE2KQkJSW52ZW50ZWMKLQkJCQlJbnZlbnRlYyBCdWlsZGluZywgNjYgSG91LUthbmcgU3RyZWV0IFNoaWgtTGluIERpc3RyaWN0LAotCQkJCVRhaXBlaSAgMTExCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi02RCAgIChoZXgpCQlNb2JpbGVBY2Nlc3MgTmV0d29ya3MKLTAwMjY2RCAgICAgKGJhc2UgMTYpCQlNb2JpbGVBY2Nlc3MgTmV0d29ya3MKLQkJCQk4MzkxIE9sZCBDb3VydGhvdXNlIFJkLgotCQkJCVN1aXRlIDMwMAotCQkJCVZpZW5uYSBWQSAyMjE4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNkUgICAoaGV4KQkJTmlzc2hvLWRlbmtpIENvLixMVEQuCi0wMDI2NkUgICAgIChiYXNlIDE2KQkJTmlzc2hvLWRlbmtpIENvLixMVEQuCi0JCQkJMy03LTYsY2hpZG9yaQotCQkJCW9odGEgVG9reW8gMTQ2LTAwODMKLQkJCQlKQVBBTgotCi0wMC0yNi02RiAgIChoZXgpCQlDb29yZGl3aXNlIFRlY2hub2xvZ3kgQ29ycC4KLTAwMjY2RiAgICAgKGJhc2UgMTYpCQlDb29yZGl3aXNlIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkyRi4sIE5vLjEyMywgU2VjLiAxLCBMaW91amlhIDV0aCBSZC4KLQkJCQlKaHViZWkgQ2l0eSwgSHNpbmNodSBDb3VudHkgIDMwMjcyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi03MCAgIChoZXgpCQlDaW5jaCBDb25uZWN0b3JzCi0wMDI2NzAgICAgIChiYXNlIDE2KQkJQ2luY2ggQ29ubmVjdG9ycwotCQkJCTE3MDAgRmlubGV5IFJvYWQKLQkJCQlMb21iYXJkIElMIDYwMTQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi03MSAgIChoZXgpCQlBVVRPVklTSU9OIENvLiwgTHRkCi0wMDI2NzEgICAgIChiYXNlIDE2KQkJQVVUT1ZJU0lPTiBDby4sIEx0ZAotCQkJCVNoaW5zZWdhZSBZQlMgQmxkZy4gMTAyCi0JCQkJMjI3LTEsIFlvbmdkYXAtRG9uZwotCQkJCVNlb25nZG9uZy1ndSBTZW91bCAxMzMtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTcyICAgKGhleCkJCUFBTVAgb2YgQW1lcmljYQotMDAyNjcyICAgICAoYmFzZSAxNikJCUFBTVAgb2YgQW1lcmljYQotCQkJCTEzMTkwIDU2dGggQ291cnQKLQkJCQlTdWl0ZSA0MDEKLQkJCQlDbGVhcndhdGVyIEZsb3JpZGEgMzM3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTczICAgKGhleCkJCVJJQ09IIENPTVBBTlkgTFRELgotMDAyNjczICAgICAoYmFzZSAxNikJCVJJQ09IIENPTVBBTlkgTFRELgotCQkJCTgxMCBTSElNT0lNQUlaVU1JCi0JCQkJRWJpbmEgQ2l0eSBLQU5BR0FXQSBQUkVGIDI0My0wNDYwCi0JCQkJSkFQQU4KLQotMDAtMjYtNzQgICAoaGV4KQkJRWxlY3Ryb25pYyBTb2x1dGlvbnMsIEluYy4KLTAwMjY3NCAgICAgKGJhc2UgMTYpCQlFbGVjdHJvbmljIFNvbHV0aW9ucywgSW5jLgotCQkJCTEzNTUgSG9yaXpvbiBBdmVudWUKLQkJCQlMYWZheWV0dGUgQ08gODAwMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTc1ICAgKGhleCkJCUF6dGVjaCBFbGVjdHJvbmljcyBQdGUgTHRkCi0wMDI2NzUgICAgIChiYXNlIDE2KQkJQXp0ZWNoIEVsZWN0cm9uaWNzIFB0ZSBMdGQKLQkJCQkzMSBVYmkgUm9hZCAxCi0JCQkJQXp0ZWNoIEJ1aWxkaW5nCi0JCQkJU2luZ2Fwb3JlICA0MDg2OTQKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjYtNzYgICAoaGV4KQkJQ09NTWlkdCBBUwotMDAyNjc2ICAgICAoYmFzZSAxNikJCUNPTU1pZHQgQVMKLQkJCQlLaWtyZWdhdGEgNTctNTkKLQkJCQlMZXZhbmdlciBOb3JkLVRyb2VuZGVsYWcgNzYwMAotCQkJCU5PUldBWQotCi0wMC0yNi03NyAgIChoZXgpCQlERUlGIEEvUwotMDAyNjc3ICAgICAoYmFzZSAxNikJCURFSUYgQS9TCi0JCQkJRnJpc2VuYm9yZ3ZlaiAzMwotCQkJCVNraXZlICA3ODAwCi0JCQkJREVOTUFSSwotCi0wMC0yNi03OCAgIChoZXgpCQlMb2dpYyBJbnN0cnVtZW50IFNBCi0wMDI2NzggICAgIChiYXNlIDE2KQkJTG9naWMgSW5zdHJ1bWVudCBTQQotCQkJCTQzLCBBdmVudWUgZGUgbCdFdXJvcGUKLQkJCQlCUCA2MDAxMgotCQkJCURvbW9udCAgOTUzMzAKLQkJCQlGUkFOQ0UKLQotMDAtMjYtNzkgICAoaGV4KQkJRXVwaG9uaWMgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDI2NzkgICAgIChiYXNlIDE2KQkJRXVwaG9uaWMgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMi01LTEwIFNoaW4teW9rb2hhbWEsIEtvdWhva3Uta3UKLQkJCQlZb2tvaGFtYSAgMjIyLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0yNi03QSAgIChoZXgpCQl3dWhhbiBob25neGluIHRlbGVjb21tdW5pY2F0aW9uIHRlY2hub2xvZ2llcyBjby4sbHRkCi0wMDI2N0EgICAgIChiYXNlIDE2KQkJd3VoYW4gaG9uZ3hpbiB0ZWxlY29tbXVuaWNhdGlvbiB0ZWNobm9sb2dpZXMgY28uLGx0ZAotCQkJCU5vLjUgRG9ueGluIFJvYWQsV3VoYW4gRWFzdCBMYWtlIEhpZ2gtVGVjaCBEZXZlbG9wbWVudCBab25lCi0JCQkJV3VoYW4gSHViZWkgNDMwMDczCi0JCQkJQ0hJTkEKLQotMDAtMjYtN0IgICAoaGV4KQkJR1NJIEhlbG1ob2x0enplbnRydW0gZnVyIFNjaHdlcmlvbmVuZm9yc2NodW5nIEdtYkgKLTAwMjY3QiAgICAgKGJhc2UgMTYpCQlHU0kgSGVsbWhvbHR6emVudHJ1bSBmdXIgU2Nod2VyaW9uZW5mb3JzY2h1bmcgR21iSAotCQkJCVBsYW5ja3N0cmFzc2UgMQotCQkJCURhcm1zdGFkdCBIZXNzZW4gNjQyOTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTI2LTdDICAgKGhleCkJCU1ldHotV2Vya2UgR21iSCAmIENvIEtHCi0wMDI2N0MgICAgIChiYXNlIDE2KQkJTWV0ei1XZXJrZSBHbWJIICYgQ28gS0cKLQkJCQlPaG1zdHJhc3NlIDU1Ci0JCQkJWmlybmRvcmYgIDkwNTEzCi0JCQkJR0VSTUFOWQotCi0wMC0yNi03RCAgIChoZXgpCQlBLU1heCBUZWNobm9sb2d5IE1hY2FvIENvbW1lcmNpYWwgT2Zmc2hvcmUgQ29tcGFueSBMaW1pdGVkCi0wMDI2N0QgICAgIChiYXNlIDE2KQkJQS1NYXggVGVjaG5vbG9neSBNYWNhbyBDb21tZXJjaWFsIE9mZnNob3JlIENvbXBhbnkgTGltaXRlZAotCQkJCUF2ZW5pZGEgRGEgUHJhaWEgR3JhbmRlIE5vLiA0MDkKLQkJCQlFZGlmaWNpbyBEb3MgU2Vydmljb3MgSnVyaWRpY29zIERhIENoaW5hIDVBCi0JCQkJTWFjYXUgIAotCQkJCUNISU5BCi0KLTAwLTI2LTdFICAgKGhleCkJCVBhcnJvdCBTQQotMDAyNjdFICAgICAoYmFzZSAxNikJCVBhcnJvdCBTQQotCQkJCTE3NCBxdWFpIGRlIEplbW1hcGVzCi0JCQkJUGFyaXMgIDc4MTAwCi0JCQkJRlJBTkNFCi0KLTAwLTI2LTdGICAgKGhleCkJCVplbnRlcmlvIEFCCi0wMDI2N0YgICAgIChiYXNlIDE2KQkJWmVudGVyaW8gQUIKLQkJCQlEaXNrZXR0Z2F0YW4gMTFCCi0JCQkJTGlua29waW5nICA1ODMzNQotCQkJCVNXRURFTgotCi0wMC0yNi04MCAgIChoZXgpCQlMb2NraWUgSW5ub3ZhdGlvbiBQdHkgTHRkCi0wMDI2ODAgICAgIChiYXNlIDE2KQkJTG9ja2llIElubm92YXRpb24gUHR5IEx0ZAotCQkJCVVuaXQgMjQKLQkJCQkyLTEyIFRlbXBsZSBTdHJlZXQKLQkJCQlBc2h3b29kIFZJQ1RPUklBIDMxNDcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjYtODEgICAoaGV4KQkJSW50ZXJzcGlybyBBQgotMDAyNjgxICAgICAoYmFzZSAxNikJCUludGVyc3Bpcm8gQUIKLQkJCQlCb3ggMTAwNjAKLQkJCQlMaWRpbmdvICAxODExMAotCQkJCVNXRURFTgotCi0wMC0yNi04MiAgIChoZXgpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjY4MiAgICAgKGJhc2UgMTYpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4xIEplbiBBaSBSb2FkLCBIc2luY2h1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1IFRhaXdhbiAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTgzICAgKGhleCkJCUFqb2hvIEVudGVycHJpc2UgQ28uLCBMdGQuCi0wMDI2ODMgICAgIChiYXNlIDE2KQkJQWpvaG8gRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQkxRi4sIE5vLjMwMC0zLCBTZWMuIDMsIEhvcGluZyBXLiBSZC4sIFdhbi1IdWEgMTA4Ci0JCQkJVGFpcGVpIFRhaXdhbiAxMDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTg0ICAgKGhleCkJCUtJU0FOIFNZU1RFTQotMDAyNjg0ICAgICAoYmFzZSAxNikJCUtJU0FOIFNZU1RFTQotCQkJCVlVQ0hFT04gUEFDVE9QSUEgNjIzLCBBTllBTkc3Ci0JCQkJQU5ZQU5HIEdZRU9OR0dJIDQzMC03MjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtODUgICAoaGV4KQkJRGlnaXRhbCBJbm5vdmF0aW9uCi0wMDI2ODUgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBJbm5vdmF0aW9uCi0JCQkJVHJhdmJhbmV2ZWllbiA2Ci0JCQkJVHJvbmRoZWltICA3MDQ0Ci0JCQkJTk9SV0FZCi0KLTAwLTI2LTg2ICAgKGhleCkJCVF1YW50ZW5uYSBDb21tdW5jYXRpb25zLCBJbmMuCi0wMDI2ODYgICAgIChiYXNlIDE2KQkJUXVhbnRlbm5hIENvbW11bmNhdGlvbnMsIEluYy4KLQkJCQkzNDUwIFcuIFdhcnJlbiBBdmUuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtODcgICAoaGV4KQkJQUxMSUVEIFRFTEVTSVMsIEsuSyBjb3JlZ2EgZGl2aXNpb24uCi0wMDI2ODcgICAgIChiYXNlIDE2KQkJQUxMSUVEIFRFTEVTSVMsIEsuSyBjb3JlZ2EgZGl2aXNpb24uCi0JCQkJMS0xOS0yMCwgU2hpbnlva29oYW1hCi0JCQkJS291aG9rdS1rdQotCQkJCVlva29oYW1hLWNpdHkgS2FuYWdhd2Eta2VuIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMjYtODggICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAyNjg4ICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi04OSAgIChoZXgpCQlHZW5lcmFsIER5bmFtaWNzIFJvYm90aWMgU3lzdGVtcwotMDAyNjg5ICAgICAoYmFzZSAxNikJCUdlbmVyYWwgRHluYW1pY3MgUm9ib3RpYyBTeXN0ZW1zCi0JCQkJMTIzMSBUZWNoIENvdXJ0Ci0JCQkJV2VzdG1pbnN0ZXIgTUQgMjExNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LThBICAgKGhleCkJCVRlcnJpZXIgU0MgTHRkCi0wMDI2OEEgICAgIChiYXNlIDE2KQkJVGVycmllciBTQyBMdGQKLQkJCQlTdHJldHRpdCBGYXJtCi0JCQkJU25vbGwgSGF0Y2ggUm9hZAotCQkJCUVhc3QgUGVja2hhbSBLZW50IFROMTIgNUVFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjYtOEIgICAoaGV4KQkJR3Vhbmd6aG91IEVzY2VuZSBDb21wdXRlciBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMjY4QiAgICAgKGJhc2UgMTYpCQlHdWFuZ3pob3UgRXNjZW5lIENvbXB1dGVyIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJvb20gMjA5LCBOby41NC01NiBZdWVoZSBCdWlsZGluZywgSHVhY3VpIFN0cmVldCwgVGlhbmhlIEluZHVzdHJpYWwgUGFyawotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgUHJvdmluY2UgNTEwMDY1Ci0JCQkJQ0hJTkEKLQotMDAtMjYtOEMgICAoaGV4KQkJU3RhckxlYWYgTHRkLgotMDAyNjhDICAgICAoYmFzZSAxNikJCVN0YXJMZWFmIEx0ZC4KLQkJCQlDaGFzdG9uIEhvdXNlLCBNaWxsIENvdXJ0Ci0JCQkJR3JlYXQgU2hlbGZvcmQKLQkJCQlDYW1icmlkZ2UgIENCMjIgNUxECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjYtOEQgICAoaGV4KQkJQ2VsbFRlbCBTLnAuQS4KLTAwMjY4RCAgICAgKGJhc2UgMTYpCQlDZWxsVGVsIFMucC5BLgotCQkJCVZpYSBSb21hbm8gNzIKLQkJCQlTY2FybWFnbm8gVG9yaW5vIDEwMDEwCi0JCQkJSVRBTFkKLQotMDAtMjYtOEUgICAoaGV4KQkJQWx0YSBTb2x1dGlvbnMsIEluYy4KLTAwMjY4RSAgICAgKGJhc2UgMTYpCQlBbHRhIFNvbHV0aW9ucywgSW5jLgotCQkJCTExMzA1IFJhbmNobyBCZXJuYXJkbyBSb2FkCi0JCQkJU3VpdGUgMTA0Ci0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi04RiAgIChoZXgpCQlNVEEgU3BBCi0wMDI2OEYgICAgIChiYXNlIDE2KQkJTVRBIFNwQQotCQkJCVZpYWxlIGRlbGwgSW5kdXN0cmlhIDEyCi0JCQkJQ29kb2dubyBMT0RJIDI2ODQ1Ci0JCQkJSVRBTFkKLQotMDAtMjYtOTAgICAoaGV4KQkJSSBETyBJVAotMDAyNjkwICAgICAoYmFzZSAxNikJCUkgRE8gSVQKLQkJCQkxMzA4LCBXb29saW1MaW9uczJuZCBEb2tzYW4gU3RhdGlvbgotCQkJCVNlb3VsICAxNTMtNzg3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTkxICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwMjY5MSAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMTQgUnVlIFBhdWwgRGF1dGllcgotCQkJCVZlbGl6eSAgNzg0NTcKLQkJCQlGUkFOQ0UKLQotMDAtMjYtOTIgICAoaGV4KQkJTWl0c3ViaXNoaSBFbGVjdHJpYyBDby4KLTAwMjY5MiAgICAgKGJhc2UgMTYpCQlNaXRzdWJpc2hpIEVsZWN0cmljIENvLgotCQkJCTItNy0zIE1hcnVub3VjaGkKLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMC04MzEwCi0JCQkJSkFQQU4KLQotMDAtMjYtOTMgICAoaGV4KQkJUVZpZGl1bSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjY5MyAgICAgKGJhc2UgMTYpCQlRVmlkaXVtIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEyOTg5IENoYXBhcnJhbCBSaWRnZSBSZAotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtOTQgICAoaGV4KQkJU2Vuc2NpZW50IEx0ZAotMDAyNjk0ICAgICAoYmFzZSAxNikJCVNlbnNjaWVudCBMdGQKLQkJCQlVbml0IDIsIEJsb2NrIEEsIEFyZW5hIEJ1c2luZXNzIENlbnRyZQotCQkJCUhvbHkgUm9vZCBDbG9zZQotCQkJCVBvb2xlIERvcnNldCBCSDE3IDdGSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI2LTk1ICAgKGhleCkJCVpUIEdyb3VwIEludCdsIEluYwotMDAyNjk1ICAgICAoYmFzZSAxNikJCVpUIEdyb3VwIEludCdsIEluYwotCQkJCTM1MCBNZWFkb3dsYW5kcyBQYXJrd2F5Ci0JCQkJU2VjYXVjdXMgTkogMDcwOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTk2ICAgKGhleCkJCU5PT0xJWCBDby4sIEx0ZAotMDAyNjk2ICAgICAoYmFzZSAxNikJCU5PT0xJWCBDby4sIEx0ZAotCQkJCURBRUNIQU5HIEIvRCAzRiwgOC0yIFNVTkFFLURPTkcKLQkJCQlCVURBTkctR1UKLQkJCQlTVU5HTkFNLVNJIEtZVU5HR0ktRE8gNDYzLTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi05NyAgIChoZXgpCQlDaGVldGFoIFRlY2hub2xvZ2llcywgTC5QLgotMDAyNjk3ICAgICAoYmFzZSAxNikJCUNoZWV0YWggVGVjaG5vbG9naWVzLCBMLlAuCi0JCQkJMzgxIE1hbnNmaWVsZCBBdmVudWUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi05OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2OTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtOTkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNjk5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTlBICAgKGhleCkJCWNhcmluYSBzeXN0ZW0gY28uLCBsdGQuCi0wMDI2OUEgICAgIChiYXNlIDE2KQkJY2FyaW5hIHN5c3RlbSBjby4sIGx0ZC4KLQkJCQkxLTUtMiBNaW5hdG9qaW1hLW1pbmFtaW1hY2hpCi0JCQkJQ2h1by1rdQotCQkJCUtvYmUgSHlvZ28gNjUwLTAwNDcKLQkJCQlKQVBBTgotCi0wMC0yNi05QiAgIChoZXgpCQlTT0tSQVQgTHRkLgotMDAyNjlCICAgICAoYmFzZSAxNikJCVNPS1JBVCBMdGQuCi0JCQkJVm9sa29uc2tvZ28gMgotCQkJCUlya3V0c2sgIDY2NDAwNwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yNi05QyAgIChoZXgpCQlJVFVTIEpBUEFOIENPLiBMVEQKLTAwMjY5QyAgICAgKGJhc2UgMTYpCQlJVFVTIEpBUEFOIENPLiBMVEQKLQkJCQk3RiBTaGlua2F3YSBCL0QKLQkJCQkxLTEtNyBTaGlua2F3YQotCQkJCUNodW9rdSBUb2t5byAxMDQwMDMzCi0JCQkJSkFQQU4KLQotMDAtMjYtOUQgICAoaGV4KQkJTTJNbmV0IENvLiwgTHRkLgotMDAyNjlEICAgICAoYmFzZSAxNikJCU0yTW5ldCBDby4sIEx0ZC4KLQkJCQk2MDcgRG93bnRvd24gQmxkLiAxMDQzLTEgSG9neWUtRG9uZyBEb25nYW4tR3UKLQkJCQlBbnlhbmctQ2l0eSBLeXVuZ2dpLURvIDQzMS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtOUUgICAoaGV4KQkJUXVhbnRhIENvbXB1dGVyIEluYwotMDAyNjlFICAgICAoYmFzZSAxNikJCVF1YW50YSBDb21wdXRlciBJbmMKLQkJCQlOTy4gMjExLCBXRU4gSFdBIDJSRC4sIEtVRUkgU0hBTiBIU0lBTkcsIFRBSVBFSSwgU0hJRU4KLQkJCQlUQU8gWVVBTiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi05RiAgIChoZXgpCQlQUklWQVRFCi0wMDI2OUYgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTI2LUEwICAgKGhleCkJCW1vYmxpYwotMDAyNkEwICAgICAoYmFzZSAxNikJCW1vYmxpYwotCQkJCTdGLCAyNzEtMSwgU2VvaHllb24tZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEt5ZW9uZ2dpLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtQTEgICAoaGV4KQkJTWVnZ2VyCi0wMDI2QTEgICAgIChiYXNlIDE2KQkJTWVnZ2VyCi0JCQkJNDI3MSBCcm9uemUgV2F5Ci0JCQkJRGFsbGFzIFRleGFzIDc1MjM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1BMiAgIChoZXgpCQlJbnN0cnVtZW50YXRpb24gVGVjaG5vbG9neSBTeXN0ZW1zCi0wMDI2QTIgICAgIChiYXNlIDE2KQkJSW5zdHJ1bWVudGF0aW9uIFRlY2hub2xvZ3kgU3lzdGVtcwotCQkJCTE5MzYwIEJ1c2luZXNzIENlbnRlciBEcml2ZQotCQkJCU5vcnRocmlkZ2UgQ0EgOTEzMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUEzICAgKGhleCkJCUZRIEluZ2VuaWVyaWEgRWxlY3Ryb25pY2EgUy5BLgotMDAyNkEzICAgICAoYmFzZSAxNikJCUZRIEluZ2VuaWVyaWEgRWxlY3Ryb25pY2EgUy5BLgotCQkJCUNvcnNlZ2EgMzcyIDEgMgotCQkJCUJhcmNlbG9uYSAgMDgwMzcKLQkJCQlTUEFJTgotCi0wMC0yNi1BNCAgIChoZXgpCQlOb3Z1cyBQcm9kdXRvcyBFbGV0cm9uaWNvcyBMdGRhCi0wMDI2QTQgICAgIChiYXNlIDE2KQkJTm92dXMgUHJvZHV0b3MgRWxldHJvbmljb3MgTHRkYQotCQkJCVJ1YSBBbHZhcm8gQ2hhdmVzLCAxNTUKLQkJCQlCYWlycm8gRmxvcmVzdGEKLQkJCQlQb3J0byBBbGVncmUgUlMgOTAyMjAtMDQwCi0JCQkJQlJBWklMCi0KLTAwLTI2LUE1ICAgKGhleCkJCU1JQ1JPUk9CT1QuQ08uLExURAotMDAyNkE1ICAgICAoYmFzZSAxNikJCU1JQ1JPUk9CT1QuQ08uLExURAotCQkJCTE2Ny0zIEd1bmdweWVvbmctcmkKLQkJCQlEb2NoZW9rLW15ZW9uCi0JCQkJR3dhbmdqdS1zaSBHeWVvbmdnaS1EbyA0NjQtODgxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUE2ICAgKGhleCkJCVRSSVhFTEwKLTAwMjZBNiAgICAgKGJhc2UgMTYpCQlUUklYRUxMCi0JCQkJNDYwLCBSdWUgZHUgcG9tbWFyaW4KLQkJCQlNT0lSQU5TICAzODIxMAotCQkJCUZSQU5DRQotCi0wMC0yNi1BNyAgIChoZXgpCQlDT05ORUNUIFNSTAotMDAyNkE3ICAgICAoYmFzZSAxNikJCUNPTk5FQ1QgU1JMCi0JCQkJVmlhIENlcm5haWEsIDExCi0JCQkJTWlsYW4gIDIwMTIxCi0JCQkJSVRBTFkKLQotMDAtMjYtQTggICAoaGV4KQkJREFFSEFQIEhZUEVSLVRFQ0gKLTAwMjZBOCAgICAgKGJhc2UgMTYpCQlEQUVIQVAgSFlQRVItVEVDSAotCQkJCU1lZ2EgY2VudGVyICMxMTA4LCBTSyBUZWNobm8tUGFyaywgIzE5MC0xLCBTYW5nZGFld29uLURvbmcsIEp1bmd3b24tR3UKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaS1EbyA0NjItODA3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUE5ICAgKGhleCkJCVN0cm9uZyBUZWNobm9sb2dpZXMgUHR5IEx0ZAotMDAyNkE5ICAgICAoYmFzZSAxNikJCVN0cm9uZyBUZWNobm9sb2dpZXMgUHR5IEx0ZAotCQkJCTYwIFdlZGdld29vZCBSb2FkCi0JCQkJSGFsbGFtIFZpY3RvcmlhIDM4MDMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjYtQUEgICAoaGV4KQkJS2VubWVjIE1lY2hhbmljYWwgRW5naW5lZXJpbmcgQ28uLCBMdGQuCi0wMDI2QUEgICAgIChiYXNlIDE2KQkJS2VubWVjIE1lY2hhbmljYWwgRW5naW5lZXJpbmcgQ28uLCBMdGQuCi0JCQkJM0YsIE5vLiA5NywgU2VjLjIgTmFuLUthbmcgUmQuLAotCQkJCVRhaXBlaSAgMTE1NzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LUFCICAgKGhleCkJCVNFSUtPIEVQU09OIENPUlBPUkFUSU9OCi0wMDI2QUIgICAgIChiYXNlIDE2KQkJU0VJS08gRVBTT04gQ09SUE9SQVRJT04KLQkJCQkzLTMtNSBPV0EKLQkJCQlTVVdBLVNISSBOQUdBTk8tS0VOIDM5Mi04NTAyCi0JCQkJSkFQQU4KLQotMDAtMjYtQUMgICAoaGV4KQkJU2hhbmdoYWkgTFVTVEVSIFRlcmFiYW5kIHBob3RvbmljIENvLiwgTHRkLgotMDAyNkFDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIExVU1RFUiBUZXJhYmFuZCBwaG90b25pYyBDby4sIEx0ZC4KLQkJCQlGNCwgTm8uMzkgQ2hlbmdaaG9uZyBSZC4KLQkJCQlKaWFEaW5nIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMTgwMAotCQkJCUNISU5BCi0KLTAwLTI2LUFEICAgKGhleCkJCUFyYWRhIFN5c3RlbXMsIEluYy4KLTAwMjZBRCAgICAgKGJhc2UgMTYpCQlBcmFkYSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTAyNCBNb3JzZSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUFFICAgKGhleCkJCVdpcmVsZXNzIE1lYXN1cmVtZW50IEx0ZAotMDAyNkFFICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIE1lYXN1cmVtZW50IEx0ZAotCQkJCVRoZSBDcmVzY2VudAotCQkJCUVNU1dPUlRIICBQTzEwIDhKUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI2LUFGICAgKGhleCkJCUR1ZWxjbyBBL1MKLTAwMjZBRiAgICAgKGJhc2UgMTYpCQlEdWVsY28gQS9TCi0JCQkJTW9tbWFya3ZlaiA1Ci0JCQkJVm9sbGVydXAKLQkJCQlTb2VuZGVyYm9yZyBTb2VuZGVyanlsbGFuZCBESzY0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTI2LUIwICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjZCMCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1CMSAgIChoZXgpCQlOYXZpcyBBdXRvIE1vdGl2ZSBTeXN0ZW1zLCBJbmMuCi0wMDI2QjEgICAgIChiYXNlIDE2KQkJTmF2aXMgQXV0byBNb3RpdmUgU3lzdGVtcywgSW5jLgotCQkJCTNyZCBGTE9PUiwgSFlVTkRBSSBBUVVBIFBBTEFDRSA3ODUsIFdPTyAxLURPTkcsIEhBRVVOREFFR1UKLQkJCQlCVVNBTiAgNjEyLTgyMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi1CMiAgIChoZXgpCQlTZXRyaXggQUcKLTAwMjZCMiAgICAgKGJhc2UgMTYpCQlTZXRyaXggQUcKLQkJCQlUaGVyZXNpZW5zdHJhc3NlIDYtOAotCQkJCU11ZW5jaGVuIEJheWVybiA4MDMzMwotCQkJCUdFUk1BTlkKLQotMDAtMjYtQjMgICAoaGV4KQkJVGhhbGVzIENvbW11bmljYXRpb25zIEluYwotMDAyNkIzICAgICAoYmFzZSAxNikJCVRoYWxlcyBDb21tdW5pY2F0aW9ucyBJbmMKLQkJCQkyMjYwNSBHYXRld2F5IENlbnRlciBEcml2ZQotCQkJCUNsYXJrc2J1cmcgTUQgMjA4NzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUI0ICAgKGhleCkJCUZvcmQgTW90b3IgQ29tcGFueQotMDAyNkI0ICAgICAoYmFzZSAxNikJCUZvcmQgTW90b3IgQ29tcGFueQotCQkJCTIwMzAwIFJvdHVuZGEgRHJpdmUKLQkJCQlCdWlsZGluZyAjNSwgMkUwOTkKLQkJCQlEZWFyYm9ybiBNSSA0ODEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQjUgICAoaGV4KQkJSUNPTU0gVGVsZSBMdGQKLTAwMjZCNSAgICAgKGJhc2UgMTYpCQlJQ09NTSBUZWxlIEx0ZAotCQkJCTMwNCwgVHJlbmRzZXQgVG93ZXJzLAotCQkJCVJhb2QgIyAyLCBCYW5qYXJhIEhpbGxzCi0JCQkJSHlkZXJhYmFkIEFQIDUwMDAzNAotCQkJCUlORElBCi0KLTAwLTI2LUI2ICAgKGhleCkJCUFza2V5IENvbXB1dGVyCi0wMDI2QjYgICAgIChiYXNlIDE2KQkJQXNrZXkgQ29tcHV0ZXIKLQkJCQkxMEYsTk8uMTE5LENISUVOS0FORyBSRCxDSFVORy1ITwotCQkJCVRBSVBFSSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi1CNyAgIChoZXgpCQlLaW5nc3RvbiBUZWNobm9sb2d5IENvbXBhbnksIEluYy4KLTAwMjZCNyAgICAgKGJhc2UgMTYpCQlLaW5nc3RvbiBUZWNobm9sb2d5IENvbXBhbnksIEluYy4KLQkJCQkxNzYwMCBOZXdob3BlIFN0LgotCQkJCUZvdW50YWluIFZhbGxleSBDQSA5MjcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQjggICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLTAwMjZCOCAgICAgKGJhc2UgMTYpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQjkgICAoaGV4KQkJRGVsbCBJbmMKLTAwMjZCOSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQkEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjZCQSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLCBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQkIgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyNkJCICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gIENBCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1CQyAgIChoZXgpCQlHZW5lcmFsIEphY2sgVGVjaG5vbG9neSBMdGQuCi0wMDI2QkMgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBKYWNrIFRlY2hub2xvZ3kgTHRkLgotCQkJCVRoZSBBcmVhIG9mIEFkbWluaXN0cmF0aW9uIG9mIExpYW4gQmVpLAotCQkJCUNoYW5nIFBpbmcKLQkJCQlEb25nIEd1YW4gR3VhbmcgRG9uZyA1MjM1ODAKLQkJCQlDSElOQQotCi0wMC0yNi1CRCAgIChoZXgpCQlKVEVDIENhcmQgJiBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotMDAyNkJEICAgICAoYmFzZSAxNikJCUpURUMgQ2FyZCAmIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0JCQkJRGFibyBCbGRnLCA0RiwgNjEtMSwgR3llc3UtZG9uZywgU29zYS1ndQotCQkJCUJ1Y2hlb24gR3l1bmdnaS1kbyA0MjItMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUJFICAgKGhleCkJCVNjaG9vbmRlcmJlZWsgRWxla3Ryb25pY2EgU3lzdGVtZW4gQi5WLgotMDAyNkJFICAgICAoYmFzZSAxNikJCVNjaG9vbmRlcmJlZWsgRWxla3Ryb25pY2EgU3lzdGVtZW4gQi5WLgotCQkJCVJvZ2dlc3RyYWF0IDMtNQotCQkJCU5pZXV3IFZlbm5lcCBOb29yZCBIb2xsYW5kIDIxNTNHQwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI2LUJGICAgKGhleCkJCVNoZW5aaGVuIFRlbW9iaSBTY2llbmNlJlRlY2ggRGV2ZWxvcG1lbnQgQ28uLEx0ZAotMDAyNkJGICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIFRlbW9iaSBTY2llbmNlJlRlY2ggRGV2ZWxvcG1lbnQgQ28uLEx0ZAotCQkJCTRGbG9vckcsIEppbnJ1biBUb3dlciwgNjAxOSBTaGVubmFuIFJvYWQKLQkJCQlGdVRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuWmhlbiAgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjYtQzAgICAoaGV4KQkJRW5lcmd5SHViCi0wMDI2QzAgICAgIChiYXNlIDE2KQkJRW5lcmd5SHViCi0JCQkJMjMyIDNyZCBTdCBDMjAxCi0JCQkJQnJvb2tseW4gTlkgMTEyMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUMxICAgKGhleCkJCUFSVFJBWSBDTy4sIExURC4KLTAwMjZDMSAgICAgKGJhc2UgMTYpCQlBUlRSQVkgQ08uLCBMVEQuCi0JCQkJNUYgVWVubyBCbGRnLCAxLTE3LTUgS291ZW5qaWtpdGEsCi0JCQkJU3VnaW5hbWkta3UsCi0JCQkJVG9reW8gIDE2Ni0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMjYtQzIgICAoaGV4KQkJU0NESSBDby4gTFRECi0wMDI2QzIgICAgIChiYXNlIDE2KQkJU0NESSBDby4gTFRECi0JCQkJIzQ1MSwgSGFnYWwtRG9uZywgR2loZXVuZy1HdSwKLQkJCQlZb25naW4tU2kgR3llb25nZ2ktRG8gNDQ2LTkzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi1DMyAgIChoZXgpCQlJbnNpZ2h0ZWsgQ29ycC4KLTAwMjZDMyAgICAgKGJhc2UgMTYpCQlJbnNpZ2h0ZWsgQ29ycC4KLQkJCQk1RixOTy43NTUsQ2h1bmcgQ2hlbmcgUmQuLAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtQzQgICAoaGV4KQkJQ2FkbW9zIG1pY3Jvc3lzdGVtcyBTLnIubC4KLTAwMjZDNCAgICAgKGJhc2UgMTYpCQlDYWRtb3MgbWljcm9zeXN0ZW1zIFMuci5sLgotCQkJCVZpYSBQaWV0cm8gRnJhdHRpbmksIDI1NQotCQkJCVJvbWEgIDAwMTQ5Ci0JCQkJSVRBTFkKLQotMDAtMjYtQzUgICAoaGV4KQkJR3Vhbmdkb25nIEdvc3VuIFRlbGVjb21tdW5pY2F0aW9ucyBDby4sTHRkCi0wMDI2QzUgICAgIChiYXNlIDE2KQkJR3Vhbmdkb25nIEdvc3VuIFRlbGVjb21tdW5pY2F0aW9ucyBDby4sTHRkCi0JCQkJR3Vhbmdkb25nIHNvZnR3YXJlIHBhcmsgRCwgTm8uMTEsIENhaVBpbmcgcm9hZCAsIEd1YW5nemhvdSBzY2llbmNlIGNpdHkKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTAwLTI2LUM2ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyNkM2ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjYtQzcgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDI2QzcgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yNi1DOCAgIChoZXgpCQlTeXN0ZW0gU2Vuc29yCi0wMDI2QzggICAgIChiYXNlIDE2KQkJU3lzdGVtIFNlbnNvcgotCQkJCTM4MjUgT2hpbyBBdmVudWUKLQkJCQlTYWludCBDaGFybGVzIElMIDYwMTc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1DOSAgIChoZXgpCQlQcm92ZW50aXggU3lzdGVtcywgSW5jLgotMDAyNkM5ICAgICAoYmFzZSAxNikJCVByb3ZlbnRpeCBTeXN0ZW1zLCBJbmMuCi0JCQkJNDUxOCBWYWxsZXlkYWxlIFJvYWQKLQkJCQlTdWl0ZSAyMDIKLQkJCQlCaXJtaW5naGFtIEFMIDM1MjQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1DQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2Q0EgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQ0IgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNkNCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUNDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI2Q0MgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAgVgotCQkJCURFTk1BUksKLQotMDAtMjYtQ0QgICAoaGV4KQkJUHVycGxlQ29tbSwgSW5jLgotMDAyNkNEICAgICAoYmFzZSAxNikJCVB1cnBsZUNvbW0sIEluYy4KLQkJCQkyNjIwIEF1Z3VzdGluZSBEci4sIFN0ZS4gMTAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUNFICAgKGhleCkJCUtvenVtaSBVU0EgQ29ycC4KLTAwMjZDRSAgICAgKGJhc2UgMTYpCQlLb3p1bWkgVVNBIENvcnAuCi0JCQkJMzAwNSBIYXJ0cmlkZ2UgVGVycmFjZQotCQkJCVdlbGxpbmd0b24gRkwgMzM0MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUNGICAgKGhleCkJCURFS0EgUiZECi0wMDI2Q0YgICAgIChiYXNlIDE2KQkJREVLQSBSJkQKLQkJCQkzNDAgQ29tbWVyY2lhbCBTdHJlZXQKLQkJCQlNYW5jaGVzdGVyIE5IIDAzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1EMCAgIChoZXgpCQlTZW1paGFsZgotMDAyNkQwICAgICAoYmFzZSAxNikJCVNlbWloYWxmCi0JCQkJdWwuIFJhY2lib3Jza2EgMTVELzMyCi0JCQkJS3Jha293ICAzMC0zODQKLQkJCQlQT0xBTkQKLQotMDAtMjYtRDEgICAoaGV4KQkJUyBTcXVhcmVkIElubm92YXRpb25zIEluYy4KLTAwMjZEMSAgICAgKGJhc2UgMTYpCQlTIFNxdWFyZWQgSW5ub3ZhdGlvbnMgSW5jLgotCQkJCTY4MDctMTA0IFN0cmVldAotCQkJCUVkbW9udG9uIEFCIFQ2SCAyTDUKLQkJCQlDQU5BREEKLQotMDAtMjYtRDIgICAoaGV4KQkJUGN1YmUgU3lzdGVtcywgSW5jLgotMDAyNkQyICAgICAoYmFzZSAxNikJCVBjdWJlIFN5c3RlbXMsIEluYy4KLQkJCQkxODU3IE8nVG9vbGUgTGFuZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1EMyAgIChoZXgpCQlaZW5vIEluZm9ybWF0aW9uIFN5c3RlbQotMDAyNkQzICAgICAoYmFzZSAxNikJCVplbm8gSW5mb3JtYXRpb24gU3lzdGVtCi0JCQkJIzE0MDQgQS1Eb25nIERpZ2l0YWwgRW1waXJlIEJsZGcsIDk4MC0zLCBZb3VuZ3RvbmctZG9uZywgWW91bmd0b25nLWd1Ci0JCQkJU3V3b24gQ2l0eSBHeWVvbmdnaS1EbyA0NDMtNzAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUQ0ICAgKGhleCkJCUlSQ0EgU3BBCi0wMDI2RDQgICAgIChiYXNlIDE2KQkJSVJDQSBTcEEKLQkJCQlWaWFsZSBWZW5lemlhIDMxIC0gQy5QLiAyNDgKLQkJCQlTYW4gVmVuZGVtaWFubyAoVHJldmlzbykgSXRhbHkgMzEwMjAKLQkJCQlJVEFMWQotCi0wMC0yNi1ENSAgIChoZXgpCQlPcnkgU29sdWNvZXMgZW0gQ29tZXJjaW8gZGUgSW5mb3JtYXRpY2EgTHRkYS4KLTAwMjZENSAgICAgKGJhc2UgMTYpCQlPcnkgU29sdWNvZXMgZW0gQ29tZXJjaW8gZGUgSW5mb3JtYXRpY2EgTHRkYS4KLQkJCQlBdi4gVW5pc2lub3MsIDYxNQotCQkJCVNhbyBMZW9wb2xkbyBSUyA5MzAyMjAwMAotCQkJCUJSQVpJTAotCi0wMC0yNi1ENiAgIChoZXgpCQlOaW5nYm8gQW5keSBPcHRvZWxlY3Ryb25pYyBDby4sIEx0ZC4KLTAwMjZENiAgICAgKGJhc2UgMTYpCQlOaW5nYm8gQW5keSBPcHRvZWxlY3Ryb25pYyBDby4sIEx0ZC4KLQkJCQlMYW5qaWFuZyBTdHJlZXQgSW5kdXN0cmlhbCBab25lCi0JCQkJWXV5YW8gWmhlamlhbmcgMzE1NDAwCi0JCQkJQ0hJTkEKLQotMDAtMjYtRDcgICAoaGV4KQkJWGlhbWVuIEJCIEVsZWN0cm9uICYgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjZENyAgICAgKGJhc2UgMTYpCQlYaWFtZW4gQkIgRWxlY3Ryb24gJiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTMwMywgQW5neWUgQnVpbGRpbmcsIFRvcmNoIEhpZ2gtdGVjaCBEZXZlbG9wbWVudCBab25lCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDkKLQkJCQlDSElOQQotCi0wMC0yNi1EOCAgIChoZXgpCQlNYWdpYyBQb2ludCBJbmMuCi0wMDI2RDggICAgIChiYXNlIDE2KQkJTWFnaWMgUG9pbnQgSW5jLgotCQkJCVN1aXRlIDIwMywgQnVpbGRpbmcgMTcsIE5vLiAyOTUgTGluIE5hbiBSb2FkLCBQdWRvbmcgU29mdHdhcmUgUGFyayBTYW5saW4gV29ybGQgRXhwbyBCbG9jawotCQkJCVNoYW5naGFpICAyMDAwMTI2Ci0JCQkJQ0hJTkEKLQotMDAtMjYtRDkgICAoaGV4KQkJUGFjZSBwbGMKLTAwMjZEOSAgICAgKGJhc2UgMTYpCQlQYWNlIHBsYwotCQkJCVNhbHRzIE1pbGwKLQkJCQlWaWN0b3JpYSBSb2FkCi0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQxOCAzTEYKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNi1EQSAgIChoZXgpCQlVbml2ZXJzYWwgTWVkaWEgQ29ycG9yYXRpb24gL1Nsb3Zha2lhLyBzLnIuby4KLTAwMjZEQSAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgTWVkaWEgQ29ycG9yYXRpb24gL1Nsb3Zha2lhLyBzLnIuby4KLQkJCQlNaWNraWV3aWN6b3ZhIDcxMDQvMTQKLQkJCQlCcmF0aXNsYXZhICA4MTEgMDcKLQkJCQlTTE9WQUtJQQotCi0wMC0yNi1EQiAgIChoZXgpCQlJb25pY3MgRU1TIEluYy4KLTAwMjZEQiAgICAgKGJhc2UgMTYpCQlJb25pY3MgRU1TIEluYy4KLQkJCQlDYXJtZWxyYXkgSW5kdXN0cmlhbCBQYXJrIDIsIEJyZ3kuIFR1bG8KLQkJCQlDYWxhbWJhIExhZ3VuYSA0MDI3Ci0JCQkJUEhJTElQUElORVMKLQotMDAtMjYtREMgICAoaGV4KQkJT3B0aWNhbCBTeXN0ZW1zIERlc2lnbgotMDAyNkRDICAgICAoYmFzZSAxNikJCU9wdGljYWwgU3lzdGVtcyBEZXNpZ24KLQkJCQk3LzEgVnVrbyBQbGFjZQotCQkJCVdhcnJpZXdvb2QgTlNXIDIxMDIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjYtREQgICAoaGV4KQkJRml2YWwgQ29ycG9yYXRpb24KLTAwMjZERCAgICAgKGJhc2UgMTYpCQlGaXZhbCBDb3Jwb3JhdGlvbgotCQkJCXJvb20gMjAxLTcgc2FnaXR0YXJpdXMgQgotCQkJCXd1eGkgc29mdHdhcmUgcGFyawotCQkJCWppYW5nc3UgcHJvdmluY2UgMjE0MDI4Ci0JCQkJQ0hJTkEKLQotMDAtMjYtREUgICAoaGV4KQkJRkRJIE1BVEVMRUMKLTAwMjZERSAgICAgKGJhc2UgMTYpCQlGREkgTUFURUxFQwotCQkJCVJvdXRlIGRlIHNhaW50IHN5bXBob3JpZW4KLQkJCQlCUCA2OQotCQkJCUxlcyBsYW5kZXMgR2VudXNzb24gIDg1MTMwCi0JCQkJRlJBTkNFCi0KLTAwLTI2LURGICAgKGhleCkJCVRhaURvYyBUZWNobm9sb2d5IENvcnAuCi0wMDI2REYgICAgIChiYXNlIDE2KQkJVGFpRG9jIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk3RiwgTm8uIDEyNywgV3Vnb25nIDJuZCBSZC4sIDI0ODg4IFd1Z3UgVG93bnNoaXAKLQkJCQlUYWlwZWkgQ291bnR5IFRhaXdhbiAyNDg4OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtRTAgICAoaGV4KQkJQVNJVEVRCi0wMDI2RTAgICAgIChiYXNlIDE2KQkJQVNJVEVRCi0JCQkJNUYsIERPTkdZT1VORyBCbGRnLDM4Mi02LFlhdGFwIGRvbmcKLQkJCQlCdW5kYW5nIEd1LAotCQkJCVN1bmcgTmFtIHNpIEt5b3VuZ2dpLWRvIDQ2My04MjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtRTEgICAoaGV4KQkJU3RhbmZvcmQgVW5pdmVyc2l0eSwgT3BlbkZsb3cgR3JvdXAKLTAwMjZFMSAgICAgKGJhc2UgMTYpCQlTdGFuZm9yZCBVbml2ZXJzaXR5LCBPcGVuRmxvdyBHcm91cAotCQkJCTM1MyBTZXJyYSBNYWxsCi0JCQkJRUUgLSBDb21wdXRlciBTeXN0ZW1zIExhYm9yYXRvcnkKLQkJCQlTdGFuZm9yZCBDQSA5NDMwNS05MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1FMiAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotMDAyNkUyICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAtMzksR2FzYW4tZG9uZyxHdW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUUzICAgKGhleCkJCURUSQotMDAyNkUzICAgICAoYmFzZSAxNikJCURUSQotCQkJCVJ1ZSBkZSBsYSBnYXJlLCAzNQotCQkJCU5BTklOTkUgTkFNVVIgNTEwMAotCQkJCUJFTEdJVU0KLQotMDAtMjYtRTQgICAoaGV4KQkJQ0FOQUwgT1ZFUlNFQVMKLTAwMjZFNCAgICAgKGJhc2UgMTYpCQlDQU5BTCBPVkVSU0VBUwotCQkJCTQ4IHF1YWkgZHUgcG9pbnQgZHUgam91cgotCQkJCUJvdWxvZ25lLUJpbGxhbmNvdXJ0ICA5MjY1OQotCQkJCUZSQU5DRQotCi0wMC0yNi1FNSAgIChoZXgpCQlBRUcgUG93ZXIgU29sdXRpb25zCi0wMDI2RTUgICAgIChiYXNlIDE2KQkJQUVHIFBvd2VyIFNvbHV0aW9ucwotCQkJCUVtaWwgU2llcG1hbm5zdHIuIDMyCi0JCQkJV2Fyc3RlaW4gTlJXIDU5NTgxCi0JCQkJR0VSTUFOWQotCi0wMC0yNi1FNiAgIChoZXgpCQlWaXNpb25oaXRlY2ggQ28uLCBMdGQuCi0wMDI2RTYgICAgIChiYXNlIDE2KQkJVmlzaW9uaGl0ZWNoIENvLiwgTHRkLgotCQkJCVZpc2lvbiBibGRnLiAxNTAtMwotCQkJCVNpbWdvay1Eb25nLCBXb25taS1LdQotCQkJCUJ1Y2hvbiBLeXVuZ2dpLURvIDQyMC04MjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtRTcgICAoaGV4KQkJU2hhbmdoYWkgT05MQU4gQ29tbXVuaWNhdGlvbiBUZWNoLiBDby4sIEx0ZC4KLTAwMjZFNyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBPTkxBTiBDb21tdW5pY2F0aW9uIFRlY2guIENvLiwgTHRkLgotCQkJCTNGLCA2QywgTm8uIDE2NTgsIEd1bWVpIFJvYWQsIFh1aHVpIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTAwLTI2LUU4ICAgKGhleCkJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotMDAyNkU4ICAgICAoYmFzZSAxNikJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTEwLTEsIEhpZ2FzaGlrb3RhcmkgMS1jaG9tZQotCQkJCU5hZ2Fva2FreW8tc2hpIEt5b3RvIDYxNy04NTU1Ci0JCQkJSkFQQU4KLQotMDAtMjYtRTkgICAoaGV4KQkJU1AgQ29ycAotMDAyNkU5ICAgICAoYmFzZSAxNikJCVNQIENvcnAKLQkJCQlHdXJvIDMtZG9uZyAsR3Vyby1ndQotCQkJCUFjZSBUZWNobm8gOCBDaGEgMTMwNQotCQkJCVNlb3VsICAxNTItNzgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUVBICAgKGhleCkJCUNoZWVyY2hpcCBFbGVjdHJvbmljIFRlY2hub2xvZ3kgKFNoYW5nSGFpKSBDby4sIEx0ZC4KLTAwMjZFQSAgICAgKGJhc2UgMTYpCQlDaGVlcmNoaXAgRWxlY3Ryb25pYyBUZWNobm9sb2d5IChTaGFuZ0hhaSkgQ28uLCBMdGQuCi0JCQkJUk9PTSAxMjAyLCBOTy4gNTEsIDcgQXJlYSwgTk8uIDE0NjcgQ0FPQkFPIFJPQUQ7Ci0JCQkJTUlOSEFORyBBUkVBCi0JCQkJU0hBTkdIQUkgIDIwMTEwMQotCQkJCUNISU5BCi0KLTAwLTI2LUVCICAgKGhleCkJCUFkdmFuY2VkIFNwZWN0cnVtIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDI2RUIgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgU3BlY3RydW0gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxRi4sIE5vLjY3IEpob25namhlbmcgUmQuCi0JCQkJU2luamh1YW5nIFRhaXdhbiAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LUVDICAgKGhleCkJCUxlZ3JhbmQgSG9tZSBTeXN0ZW1zLCBJbmMKLTAwMjZFQyAgICAgKGJhc2UgMTYpCQlMZWdyYW5kIEhvbWUgU3lzdGVtcywgSW5jCi0JCQkJMzAxIEZ1bGxpbmcgTWlsbCBSZAotCQkJCVN1aXRlIEcKLQkJCQlNaWRkbGV0b3duIFBBIDE3MDU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1FRCAgIChoZXgpCQl6dGUgY29ycG9yYXRpb24KLTAwMjZFRCAgICAgKGJhc2UgMTYpCQl6dGUgY29ycG9yYXRpb24KLQkJCQkxMi9GIHp0ZSBwbGF6YSxrZWppIFJvYWQgU291dGgsSEktVGVjaCBJbmR1c3RyaWFsIFBhcmssTmFuc2hhbiBEaXN0cmljdAotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNi1FRSAgIChoZXgpCQlUS00gR21iSAotMDAyNkVFICAgICAoYmFzZSAxNikJCVRLTSBHbWJICi0JCQkJU2NobG9zc3N0cmFzc2UgMTIzCi0JCQkJTW9uY2hlbmdsYWRiYWNoIE5SVyA0MTIzOAotCQkJCUdFUk1BTlkKLQotMDAtMjYtRUYgICAoaGV4KQkJVGVjaG5vbG9neSBBZHZhbmNlbWVudCBHcm91cCwgSW5jLgotMDAyNkVGICAgICAoYmFzZSAxNikJCVRlY2hub2xvZ3kgQWR2YW5jZW1lbnQgR3JvdXAsIEluYy4KLQkJCQkyMjM1NSBUYWcgV2F5Ci0JCQkJRHVsbGVzIFZBIDIwMTY2LTkzMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUYwICAgKGhleCkJCWNUcml4cyBJbnRlcm5hdGlvbmFsIEdtYkguCi0wMDI2RjAgICAgIChiYXNlIDE2KQkJY1RyaXhzIEludGVybmF0aW9uYWwgR21iSC4KLQkJCQlMaWVmZXJpbmdlciBIYXVwdHN0ci4gMTQwCi0JCQkJU2FsemJ1cmcgU2FsemJ1cmcgNTAyMAotCQkJCUFVU1RSSUEKLQotMDAtMjYtRjEgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotMDAyNkYxICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkLgotCQkJCVJvc2V2aWxsZSBDYWxpZm9ybmlhIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1GMiAgIChoZXgpCQlOZXRnZWFyCi0wMDI2RjIgICAgIChiYXNlIDE2KQkJTmV0Z2VhcgotCQkJCTM1MCBFYXN0IFBsdW1lcmlhIERyaXZlCi0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtRjMgICAoaGV4KQkJU01DIE5ldHdvcmtzCi0wMDI2RjMgICAgIChiYXNlIDE2KQkJU01DIE5ldHdvcmtzCi0JCQkJMjAgTWFzb24KLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUY0ICAgKGhleCkJCU5lc3NsYWIKLTAwMjZGNCAgICAgKGJhc2UgMTYpCQlOZXNzbGFiCi0JCQkJNDg5LTIgTWFldGFuIDMtZG9uZywgWWVvbmcgVG9uZy1ndQotCQkJCVN1d29uLXNpIEd5ZW9uZ2dpLWRvIDQ0My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtRjUgICAoaGV4KQkJWFJQTFVTIEluYy4KLTAwMjZGNSAgICAgKGJhc2UgMTYpCQlYUlBMVVMgSW5jLgotCQkJCSM4MDUgQWNlIFRlY2hubyBUb3dlciAybmQgMTk3LTE3Ci0JCQkJR3VybzNEb25nLCBHdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi03NjYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtRjYgICAoaGV4KQkJTWlsaXRhcnkgQ29tbXVuaWNhdGlvbiBJbnN0aXR1dGUKLTAwMjZGNiAgICAgKGJhc2UgMTYpCQlNaWxpdGFyeSBDb21tdW5pY2F0aW9uIEluc3RpdHV0ZQotCQkJCXVsLiBXYXJzemF3c2thIDIyQQotCQkJCVplZ3J6ZSAgMDUtMTMwCi0JCQkJUE9MQU5ECi0KLTAwLTI2LUY3ICAgKGhleCkJCUluZm9zeXMgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMjZGNyAgICAgKGJhc2UgMTYpCQlJbmZvc3lzIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJNDQsIEVsZWN0cm9uaWNzIENpdHkKLQkJCQlIb3N1ciBSb2FkCi0JCQkJQmFuZ2Fsb3JlIEthcm5ha2F0YSA1NjAxMDAKLQkJCQlJTkRJQQotCi0wMC0yNi1GOCAgIChoZXgpCQlHb2xkZW4gSGlnaHdheSBJbmR1c3RyeSBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLTAwMjZGOCAgICAgKGJhc2UgMTYpCQlHb2xkZW4gSGlnaHdheSBJbmR1c3RyeSBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLQkJCQlGbG9vciA3LCBCbG9jayA4LCBWaXNpb24gU2hlbnpoZW4gQnVzaW5lc3MgUGFyaywgTm8uOSBHYW94aW4gOXRoIFNvdXRoIFJvYWQKLQkJCQlTaGVuemhlbiBIaS10ZWNoIEluZHVzdHJpYWwgUGFyaywgTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIENpdHkgR3Vhbmdkb25nIFByb3ZpbmNlIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTI2LUY5ICAgKGhleCkJCVMuRS5NLiBzcmwKLTAwMjZGOSAgICAgKGJhc2UgMTYpCQlTLkUuTS4gc3JsCi0JCQkJdmlhIExlY2NvLCA2MQotCQkJCVZpbWVyY2F0ZSBNb256YSBCcmlhbnphIDIwMDU5Ci0JCQkJSVRBTFkKLQotMDAtMjYtRkEgICAoaGV4KQkJQmFuZFJpY2ggSW5jLgotMDAyNkZBICAgICAoYmFzZSAxNikJCUJhbmRSaWNoIEluYy4KLQkJCQk3Ri4sIE5vLjE4OCwgQmFvY2lhbyBSb2FkCi0JCQkJU2luZGlhbiBDaXR5IFRhaXBlaSAyMzE0NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtRkIgICAoaGV4KQkJQWlyRGlvIFdpcmVsZXNzLCBJbmMuCi0wMDI2RkIgICAgIChiYXNlIDE2KQkJQWlyRGlvIFdpcmVsZXNzLCBJbmMuCi0JCQkJMTMtNSwgTm8uIDc5LCBTZWMuIDEsIEhzaW4gVGFpIFd1IFJvYWQKLQkJCQlIc2ljaGloIENpdHksIFRhaXBlaSBDb3VudHkgVGFpd2FuIDIyMTAxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi1GQyAgIChoZXgpCQlBY1NpUCBUZWNobm9sb2d5IENvcnAuCi0wMDI2RkMgICAgIChiYXNlIDE2KQkJQWNTaVAgVGVjaG5vbG9neSBDb3JwLgotCQkJCTNGLiwgTm8uMjIsIERhbGluIFJkLiwKLQkJCQlUYW95dWFuIENpdHksIFRhb3l1YW4gQ291bnR5IDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtRkQgICAoaGV4KQkJSW50ZXJhY3RpdmUgSW50ZWxsaWdlbmNlCi0wMDI2RkQgICAgIChiYXNlIDE2KQkJSW50ZXJhY3RpdmUgSW50ZWxsaWdlbmNlCi0JCQkJNzYwMSBJbnRlcmFjdGl2ZSBXYXkKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyNzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUZFICAgKGhleCkJCU1LRCBUZWNobm9sb2d5IEluYy4KLTAwMjZGRSAgICAgKGJhc2UgMTYpCQlNS0QgVGVjaG5vbG9neSBJbmMuCi0JCQkJIFIuQjgsIE5vLjEgTGlzaW5nIDFzdCAgUmQuLAotCQkJCUhzaW5jaHUgIDMwMDc4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi1GRiAgIChoZXgpCQlSZXNlYXJjaCBJbiBNb3Rpb24KLTAwMjZGRiAgICAgKGJhc2UgMTYpCQlSZXNlYXJjaCBJbiBNb3Rpb24KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMDAtMjctMDAgICAoaGV4KQkJU2hlbnpoZW4gU2lnbGVudCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyNzAwICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFNpZ2xlbnQgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlCVUlMRElORyBBOCxUQU5HTEFORyBJTkRVU1RSSUFMIFpPTkUsWElMSSxOQU5TSEFOCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTI3LTAxICAgKGhleCkJCUlOQ09zdGFydGVjIEdtYkgKLTAwMjcwMSAgICAgKGJhc2UgMTYpCQlJTkNPc3RhcnRlYyBHbWJICi0JCQkJUmhlaW5zdHIuIDE3Ci0JCQkJVGVsdG93IEdlcm1hbnkgMTQ1MTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTI3LTAyICAgKGhleCkJCVNvbGFyRWRnZSBUZWNobm9sb2dpZXMKLTAwMjcwMiAgICAgKGJhc2UgMTYpCQlTb2xhckVkZ2UgVGVjaG5vbG9naWVzCi0JCQkJMSBBYmJhIEViYW4gU3QuCi0JCQkJUE9CIDEyNzY2Ci0JCQkJSGVyemVsaWEgIDQ2NzI1Ci0JCQkJSVNSQUVMCi0KLTAwLTI3LTAzICAgKGhleCkJCVRlc3RlY2ggRWxlY3Ryb25pY3MgUHRlIEx0ZAotMDAyNzAzICAgICAoYmFzZSAxNikJCVRlc3RlY2ggRWxlY3Ryb25pY3MgUHRlIEx0ZAotCQkJCUJsb2NrIDExOCwgIzA1LTExMCwKLQkJCQlBbGp1bmllZCBBdmUgMgotCQkJCVNpbmdhcG9yZSAgMzgwMTE4Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTI3LTA0ICAgKGhleCkJCUFjY2VsZXJhdGVkIENvbmNlcHRzLCBMTEMKLTAwMjcwNCAgICAgKGJhc2UgMTYpCQlBY2NlbGVyYXRlZCBDb25jZXB0cywgTExDCi0JCQkJNDAxNyBXIERyIE1hcnRpbiBMdXRoZXIgS2luZyBKciBCbHZkCi0JCQkJVGFtcGEgRkwgMzM2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI3LTA1ICAgKGhleCkJCVNlY3Ryb25pYwotMDAyNzA1ICAgICAoYmFzZSAxNikJCVNlY3Ryb25pYwotCQkJCVouSS4gTGVzIFNhdWxuaWVycwotCQkJCVNhaW50ZS1NYXVyZSBkZSBUb3VyYWluZSAgMzc4MDAKLQkJCQlGUkFOQ0UKLQotMDAtMjctMDYgICAoaGV4KQkJWU9JU1lTCi0wMDI3MDYgICAgIChiYXNlIDE2KQkJWU9JU1lTCi0JCQkJMzA5LTUyIFNVTkdTVS0yR0EsIDFET05HLCBTVU5HRE9ORy1HVQotCQkJCVNFT1VMICAxMzMtODI3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI3LTA3ICAgKGhleCkJCUxpZnQgQ29tcGxleCBEUywgSlNDCi0wMDI3MDcgICAgIChiYXNlIDE2KQkJTGlmdCBDb21wbGV4IERTLCBKU0MKLQkJCQltaWtyb3JheW9uIEdvcnNreSwgNgotCQkJCU5vdm9zaWJpcnNrICA2MzAwNzMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjctMDggICAoaGV4KQkJTm9yZGlhZyBBU0EKLTAwMjcwOCAgICAgKGJhc2UgMTYpCQlOb3JkaWFnIEFTQQotCQkJCUZyeXNqYXZlaWVuIDQwCi0JCQkJT3NsbyAgMDg4NAotCQkJCU5PUldBWQotCi0wMC0yNy0wOSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjcwOSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yNy0wQSAgIChoZXgpCQlJRUUgUy5BLgotMDAyNzBBICAgICAoYmFzZSAxNikJCUlFRSBTLkEuCi0JCQkJWkFFIFdlaWVyZ2V3YW4KLQkJCQkxMSwgcnVlIEVkbW9uZCBSZXV0ZXIKLQkJCQlDb250ZXJuICBMLTUzMjYKLQkJCQlMVVhFTUJPVVJHCi0KLTAwLTI3LTBCICAgKGhleCkJCUFkdXJhIFRlY2hub2xvZ2llcwotMDAyNzBCICAgICAoYmFzZSAxNikJCUFkdXJhIFRlY2hub2xvZ2llcwotCQkJCTI4IFNlY29uZCBTdHJlZXQKLQkJCQk0dGggRmxvb3IKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNy0wQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI3MEMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjctMEQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNzBEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI3LTBFICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyNzBFICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjctMEYgICAoaGV4KQkJRW52aXNpb25ub3ZhdGlvbiBJbmMKLTAwMjcwRiAgICAgKGJhc2UgMTYpCQlFbnZpc2lvbm5vdmF0aW9uIEluYwotCQkJCTQgV2FyZWhhbSBEcml2ZQotCQkJCU1pc3Npc3NhdWdhIE9udGFyaW8gTDVNIDFCNgotCQkJCUNBTkFEQQotCi0wMC0yNy0xMCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjcxMCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTI3LTExICAgKGhleCkJCUxhblBybyBJbmMKLTAwMjcxMSAgICAgKGJhc2UgMTYpCQlMYW5Qcm8gSW5jCi0JCQkJMTg4MCBOVyA5M0F2Ci0JCQkJTWlhbWkgRmxvcmlkYSAzMzE3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjctMTIgICAoaGV4KQkJTWF4VmlzaW9uIExMQwotMDAyNzEyICAgICAoYmFzZSAxNikJCU1heFZpc2lvbiBMTEMKLQkJCQk0OTUgUHJvZHVjdGlvbiBBdmUKLQkJCQlNYWRpc29uIEFMIDM1NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNy0xMyAgIChoZXgpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMjcxMyAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQkxNDEsIExBTkUgMzUxLCBTRUMuMSwgVEFJUElORyBSRC4KLQkJCQlUU0FPVFVFTgotCQkJCU5BTlRPVSA1NDI2MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjctMTQgICAoaGV4KQkJR3JhaW5tdXN0YXJkcywgQ28sbHRkLgotMDAyNzE0ICAgICAoYmFzZSAxNikJCUdyYWlubXVzdGFyZHMsIENvLGx0ZC4KLQkJCQlIRUlXQSBNSyBCbGRnLDItNDgtNCxOaWhvbmJhc2hpLUhhbWEtY2hvCi0JCQkJQ2h1by1rdSwKLQkJCQlUb2t5byAgMTAzLTAwMDcKLQkJCQlKQVBBTgotCi0wMC0yNy0xNSAgIChoZXgpCQlSZWJvdW5kIFRlbGVjb20uIENvLiwgTHRkCi0wMDI3MTUgICAgIChiYXNlIDE2KQkJUmVib3VuZCBUZWxlY29tLiBDby4sIEx0ZAotCQkJCTEyRixCdWlsZGluZyBOby44MixOby4xMTk4LE5vcnRoIFFpbnpob3UgUmQsCi0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTAwLTI3LTE2ICAgKGhleCkJCUFkYWNoaS1TeW9rYWkgQ28uLCBMdGQuCi0wMDI3MTYgICAgIChiYXNlIDE2KQkJQWRhY2hpLVN5b2thaSBDby4sIEx0ZC4KLQkJCQkyMjgtMiBIYXphbWEgTWFraQotCQkJCUZ1a3VjaGl5YW1hLXNoaSBLeW90byA2MjAtMDkxMwotCQkJCUpBUEFOCi0KLTAwLTI3LTE3ICAgKGhleCkJCUNFIERpZ2l0YWwoWmhlbmppYW5nKUNvLixMdGQKLTAwMjcxNyAgICAgKGJhc2UgMTYpCQlDRSBEaWdpdGFsKFpoZW5qaWFuZylDby4sTHRkCi0JCQkJV2VpIDMgUm9hZCwgRGluZ21hbywgRWNvLkRldi5ab25lLAotCQkJCUppYW5nc3UKLQkJCQlaaGVuamlhbmcgIDIxMjAwOQotCQkJCUNISU5BCi0KLTAwLTI3LTE4ICAgKGhleCkJCVN1emhvdSBORVcgU0VBVU5JT04gVmlkZW8gVGVjaG5vbG9neSBDby4sTHRkCi0wMDI3MTggICAgIChiYXNlIDE2KQkJU3V6aG91IE5FVyBTRUFVTklPTiBWaWRlbyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkzODMgSmluZ21hbyBSb2FkLCBJbmR1c3RyeSBQYXJrCi0JCQkJU3V6aG91IEppYW5nc3UgMjE1MDIxCi0JCQkJQ0hJTkEKLQotMDAtMjctMTkgICAoaGV4KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0wMDI3MTkgICAgIChiYXNlIDE2KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJQnVpbGRpbmcgNywgU2Vjb25kIFBhcnQsIEhvbmdodWFsaW5nIEluZHVzdHJpYWwgWm9uZSwgWGlsaSB0b3duCi0JCQkJTmFuc2hhbgotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNy0xQSAgIChoZXgpCQlHZWVub3ZvIFRlY2hub2xvZ3kgTHRkLgotMDAyNzFBICAgICAoYmFzZSAxNikJCUdlZW5vdm8gVGVjaG5vbG9neSBMdGQuCi0JCQkJVW5pdCA0MDIsIDQvRi4sIFRvd2VyIEksU0hVSSBRSU5HIE1VIEhVQSBZVUFOLAotCQkJCUhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODAKLQkJCQlDSElOQQotCi0wMC0yNy0xQiAgIChoZXgpCQlBbGVjIFNpY2hlcmhlaXRzc3lzdGVtZSBHbWJICi0wMDI3MUIgICAgIChiYXNlIDE2KQkJQWxlYyBTaWNoZXJoZWl0c3N5c3RlbWUgR21iSAotCQkJCUZyaWVkcmljaC1Ib2Vsc2NoZXItU3RyYXNzZSAzNjcKLQkJCQlEb3J0bXVuZCAgNDQzMjgKLQkJCQlHRVJNQU5ZCi0KLTAwLTI3LTFDICAgKGhleCkJCU1FUkNVUlkgQ09SUE9SQVRJT04KLTAwMjcxQyAgICAgKGJhc2UgMTYpCQlNRVJDVVJZIENPUlBPUkFUSU9OCi0JCQkJNTMxLTYsIEdhandhZG9uZywKLQkJCQlTZW9ndQotCQkJCUluY2hlb24gIDQwNC0yNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjctMUQgICAoaGV4KQkJQ29tYmEgVGVsZWNvbSBTeXN0ZW1zIChDaGluYSkgTHRkLgotMDAyNzFEICAgICAoYmFzZSAxNikJCUNvbWJhIFRlbGVjb20gU3lzdGVtcyAoQ2hpbmEpIEx0ZC4KLQkJCQkxMCBTaGVuemhvdSBSb2FkCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2NjMKLQkJCQlDSElOQQotCi0wMC0yNy0xRSAgIChoZXgpCQlYYWd5bCBDb21tdW5pY2F0aW9ucwotMDAyNzFFICAgICAoYmFzZSAxNikJCVhhZ3lsIENvbW11bmljYXRpb25zCi0JCQkJMTY2NyBNYXJyb25pZXIgQ3J0Ci0JCQkJQ3VtYmVybGFuZCBPbnRhcmlvIEs0QyAxQzIKLQkJCQlDQU5BREEKLQotMDAtMjctMUYgICAoaGV4KQkJTUlQUk8gRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTAwMjcxRiAgICAgKGJhc2UgMTYpCQlNSVBSTyBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCTgxNCxQZWlrYW5nIFJvYWQKLQkJCQlDaGlheWkgIDYwMDk2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNy0yMCAgIChoZXgpCQlORVctU09MIENPTQotMDAyNzIwICAgICAoYmFzZSAxNikJCU5FVy1TT0wgQ09NCi0JCQkJQnVjaGVvbiBUZWNub3BhcmsgNDAzLTYwMgotCQkJCVlha2RhZS1kb25nIFdvbm1pLWd1Ci0JCQkJQnVjaGVvbiBjaXR5IEt5b3VuZ2tpLWRvIDQyMC03MzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjctMjEgICAoaGV4KQkJU2hlbnpoZW4gQmFvYW4gRmVuZGEgSW5kdXN0cmlhbCBDby4sIEx0ZAotMDAyNzIxICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEJhb2FuIEZlbmRhIEluZHVzdHJpYWwgQ28uLCBMdGQKLQkJCQlGZW5kYSBIaS1UZWNoIFBhcmsKLQkJCQlaaG91c2hpIFJvYWQsIFNoaXlhbgotCQkJCUJhb2FuIFNoZW56aGVuIDUxODEwOAotCQkJCUNISU5BCi0KLTAwLTI3LTIyICAgKGhleCkJCVViaXF1aXRpIE5ldHdvcmtzCi0wMDI3MjIgICAgIChiYXNlIDE2KQkJVWJpcXVpdGkgTmV0d29ya3MKLQkJCQk5MSBFLiBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI3LUY4ICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0wMDI3RjggICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLQkJCQkxNzQ1IFRlY2hub2xvZ3kgRHIKLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMDAgICAoaGV4KQkJQUxMV0VMTCBURUNITk9MT0dZIENPUlAuCi0wMDMwMDAgICAgIChiYXNlIDE2KQkJQUxMV0VMTCBURUNITk9MT0dZIENPUlAuCi0JCQkJNEYsICMxNSwgTEFORTMsIFNFQy4yCi0JCQkJQ0hJRU4gS1dPIE4uIFJPQUQgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTAxICAgKGhleCkJCVNNUAotMDAzMDAxICAgICAoYmFzZSAxNikJCVNNUAotCQkJCTIyLCBSVUUgREVTIENPU01PTkFVVEVTCi0JCQkJMzE0MDAgVE9VTE9VU0UKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMzAtMDIgICAoaGV4KQkJRXhwYW5kIE5ldHdvcmtzCi0wMDMwMDIgICAgIChiYXNlIDE2KQkJRXhwYW5kIE5ldHdvcmtzCi0JCQkJQXRpZGltIFRlY2ggUGFyaywgQmxkZy4gNAotCQkJCVAuTy4gQm94IDU4MTQyCi0JCQkJVGVsLUF2aXYgNjE1ODAgIAotCQkJCUlTUkFFTAotCi0wMC0zMC0wMyAgIChoZXgpCQlQaGFzeXMgTHRkLgotMDAzMDAzICAgICAoYmFzZSAxNikJCVBoYXN5cyBMdGQuCi0JCQkJIzEwMC05NDA0IDQxc3QgQXZlbnVlCi0JCQkJRWRtb250b24gQWxiZXJ0YSBUNlggMVIyIAotCQkJCUNBTkFEQQotCi0wMC0zMC0wNCAgIChoZXgpCQlMRUFEVEVLIFJFU0VBUkNIIElOQy4KLTAwMzAwNCAgICAgKGJhc2UgMTYpCQlMRUFEVEVLIFJFU0VBUkNIIElOQy4KLQkJCQkxOEYsIE5vLjE2NiwgQ2hpZW4tWWkgUm9hZAotCQkJCUNodW5nLUhvIFRhaXBlaSwKLQkJCQlIc2llbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0wNSAgIChoZXgpCQlGdWppdHN1IFNpZW1lbnMgQ29tcHV0ZXJzCi0wMDMwMDUgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBTaWVtZW5zIENvbXB1dGVycwotCQkJCUJ1ZXJnZXJtZWlzdGVyIHVscmljaCAxMDAKLQkJCQk4NjE5OSBBdWdzYnVyZyAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC0wNiAgIChoZXgpCQlTVVBFUlBPV0VSIENPTVBVVEVSCi0wMDMwMDYgICAgIChiYXNlIDE2KQkJU1VQRVJQT1dFUiBDT01QVVRFUgotCQkJCUVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCU5PLiAyMCBXVS1HT05HIDZUSCBST0FEIFdVLUtVIElORFVTVFInTAotCQkJCVRhaXBlaSAyNDggIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtMDcgICAoaGV4KQkJT1BUSSwgSU5DLgotMDAzMDA3ICAgICAoYmFzZSAxNikJCU9QVEksIElOQy4KLQkJCQkxNDQwIE1DQ0FSVEhZIEJMVkQuCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTA4ICAgKGhleCkJCUFWSU8gRElHSVRBTCwgSU5DLgotMDAzMDA4ICAgICAoYmFzZSAxNikJCUFWSU8gRElHSVRBTCwgSU5DLgotCQkJCTk1NyBJTkRVU1RSSUFMIFJPQUQKLQkJCQlTQU4gQ0FSTE9TIENBIDk0MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0wOSAgIChoZXgpCQlUYWNoaW9uIE5ldHdvcmtzLCBJbmMuCi0wMDMwMDkgICAgIChiYXNlIDE2KQkJVGFjaGlvbiBOZXR3b3JrcywgSW5jLgotCQkJCTIgTWVyaWRpYW4gUm9hZAotCQkJCUVhdG9udG93biBOSiAwNzcyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMEEgICAoaGV4KQkJQVpURUNIIEVsZWN0cm9uaWNzIFB0ZSBMdGQKLTAwMzAwQSAgICAgKGJhc2UgMTYpCQlBWlRFQ0ggRWxlY3Ryb25pY3MgUHRlIEx0ZAotCQkJCTMxIFVCSSBST0FEIDEKLQkJCQlBWlRFQ0ggQlVJTERJTkcKLQkJCQk0MDg2OTQKLQkJCQlTSU5HQVBPUkUKLQotMDAtMzAtMEIgICAoaGV4KQkJbVBIQVNFIFRlY2hub2xvZ2llcywgSW5jLgotMDAzMDBCICAgICAoYmFzZSAxNikJCW1QSEFTRSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyNTAgMTR0aCBTdHJlZXQKLQkJCQlHQ0FUVCBCbGRnLiAtIFJvb20gIzI0OEEKLQkJCQlBdGxhbnRhIEdBIDMwMzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0wQyAgIChoZXgpCQlDT05HUlVFTkNZLCBMVEQuCi0wMDMwMEMgICAgIChiYXNlIDE2KQkJQ09OR1JVRU5DWSwgTFRELgotCQkJCTIzIEhBU0lWSU0gU1RSRUVUCi0JCQkJUE9CIDc4MTMKLQkJCQlQRVRBSC1USUtWQSA0OTE3MCAgCi0JCQkJSVNSQUVMCi0KLTAwLTMwLTBEICAgKGhleCkJCU1NQyBUZWNobm9sb2d5LCBJbmMuCi0wMDMwMEQgICAgIChiYXNlIDE2KQkJTU1DIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkjMTUwMiwgU2VvdWwgVmVudHVyZSBUb3duLCBBanUgQmxkZwotCQkJCTY3OS01LCBZZW9rc2FtLURvbmcsIEthbmduYW0tR3UKLQkJCQlTZW91bCAxMzUtMDgwICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtMEUgICAoaGV4KQkJS2xvdHogRGlnaXRhbCBBRwotMDAzMDBFICAgICAoYmFzZSAxNikJCUtsb3R6IERpZ2l0YWwgQUcKLQkJCQlIYW5zLVN0aWVzc2JlcmdlcnN0ci4gMkEKLQkJCQlELTg1NTQwIEhhYXIgIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtMEYgICAoaGV4KQkJSU1UIC0gSW5mb3JtYXRpb24gTWFuYWdlbWVudCBUCi0wMDMwMEYgICAgIChiYXNlIDE2KQkJSU1UIC0gSW5mb3JtYXRpb24gTWFuYWdlbWVudCBUCi0JCQkJR2V3ZXJiZXN0cmFzc2UgOAotCQkJCUNILTk0NzAgQnVjaHMgIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTMwLTEwICAgKGhleCkJCVZJU0lPTkVUSUNTIElOVEVSTkFUSU9OQUwKLTAwMzAxMCAgICAgKGJhc2UgMTYpCQlWSVNJT05FVElDUyBJTlRFUk5BVElPTkFMCi0JCQkJM0YsIE5PLiAzLCBQUk9TUEVSSVRZIFJPQUQgMQotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLIEhTSU5DSFUKLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0xMSAgIChoZXgpCQlITVMgRklFTERCVVMgU1lTVEVNUyBBQgotMDAzMDExICAgICAoYmFzZSAxNikJCUhNUyBGSUVMREJVUyBTWVNURU1TIEFCCi0JCQkJUElMRUZFTFRTR0FUQU4gOTMtOTUKLQkJCQkzMDI1MCBIQUxNU1NUQUQKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtMzAtMTIgICAoaGV4KQkJRElHSVRBTCBFTkdJTkVFUklORyBMVEQuCi0wMDMwMTIgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFTkdJTkVFUklORyBMVEQuCi0JCQkJMiBUUkVOQ0ggUk9BRCwgTUFMTFVTSwotCQkJCUJFTEZBU1QgQlQzNiA0VFkKLQkJCQlOT1JUSEVSTiBJUkVMQU5ECi0JCQkJSVJFTEFORAotCi0wMC0zMC0xMyAgIChoZXgpCQlORUMgQ29ycG9yYXRpb24KLTAwMzAxMyAgICAgKGJhc2UgMTYpCQlORUMgQ29ycG9yYXRpb24KLQkJCQkxLTEwIE5pc3NoaW5jaG8sIEZ1Y2h1Ci0JCQkJVG9reW8gMTgzLTg1MDEgIAotCQkJCUpBUEFOCi0KLTAwLTMwLTE0ICAgKGhleCkJCURJVklPLCBJTkMuCi0wMDMwMTQgICAgIChiYXNlIDE2KQkJRElWSU8sIElOQy4KLQkJCQk5OTcgRS4gQVJRVUVTIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMTUgICAoaGV4KQkJQ1AgQ0xBUkUgQ09SUC4KLTAwMzAxNSAgICAgKGJhc2UgMTYpCQlDUCBDTEFSRSBDT1JQLgotCQkJCTc4IENIRVJSWSBISUxMIERSSVZFCi0JCQkJQkVWRVJMWSBNQSAwMTkxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMTYgICAoaGV4KQkJSVNISURBIENPLiwgTFRELgotMDAzMDE2ICAgICAoYmFzZSAxNikJCUlTSElEQSBDTy4sIExURC4KLQkJCQk5NTktMSBTSElNT01BR0FSSQotCQkJCVJJVFRPLUNITyBLVVJJVEEtR1VOIFNISUdBICA1MjAtMzAyNgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMzAtMTcgICAoaGV4KQkJQmx1ZUFyYyBVSyBMdGQKLTAwMzAxNyAgICAgKGJhc2UgMTYpCQlCbHVlQXJjIFVLIEx0ZAotCQkJCVF1ZWVuc2dhdGUgSG91c2UKLQkJCQlDb29raGFtIFJvYWQKLQkJCQlCcmFja25lbGwgIFJHMTIgMVJCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMzAtMTggICAoaGV4KQkJSmV0d2F5IEluZm9ybWF0aW9uIENvLiwgTHRkLgotMDAzMDE4ICAgICAoYmFzZSAxNikJCUpldHdheSBJbmZvcm1hdGlvbiBDby4sIEx0ZC4KLQkJCQk0RiwgTm8uIDE2OCwgTEkgVEhFIFNULgotCQkJCUNodW5nIEhvIENpdHkgMjM1IFRhaXBlaSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTE5ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMzAxOSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMUEgICAoaGV4KQkJU01BUlRCUklER0VTIFBURS4gTFRELgotMDAzMDFBICAgICAoYmFzZSAxNikJCVNNQVJUQlJJREdFUyBQVEUuIExURC4KLQkJCQk3NDUgVG9hIFBheW9oIExvcm9uZyA1Ci0JCQkJIzA0LTAxCi0JCQkJMzE5NDU1Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTMwLTFCICAgKGhleCkJCVNIVVRUTEUsIElOQy4KLTAwMzAxQiAgICAgKGJhc2UgMTYpCQlTSFVUVExFLCBJTkMuCi0JCQkJNUYsIE5vLiAzNCwgTGFuZSA2MAotCQkJCVdlbi1IdSBTdC4sIE5laS1IdSBEaXN0LiwKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtMUMgICAoaGV4KQkJQUxUVkFURVIgQUlSREFUQSBTWVNURU1TCi0wMDMwMUMgICAgIChiYXNlIDE2KQkJQUxUVkFURVIgQUlSREFUQSBTWVNURU1TCi0JCQkJR01CSCAmIENPLiBLRwotCQkJCVJJRU1FTlNUUkFTU0UgMzAgNzQ5MDYgQkFEIFJBUFBFTkFVCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMzAtMUQgICAoaGV4KQkJU0tZU1RSRUFNLCBJTkMuCi0wMDMwMUQgICAgIChiYXNlIDE2KQkJU0tZU1RSRUFNLCBJTkMuCi0JCQkJNDU1IERlR3VpZ25lIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2LTM4MzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTFFICAgKGhleCkJCTNDT00gRXVyb3BlIEx0ZC4KLTAwMzAxRSAgICAgKGJhc2UgMTYpCQkzQ09NIEV1cm9wZSBMdGQuCi0JCQkJM0NPTSBDZW50cmUKLQkJCQlCb3VuZGFyeSBXYXksIEhlbWVsIEhlbXBzdGVhZAotCQkJCUhlcnRzLiAgSFAyIDdZVSAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMzAtMUYgICAoaGV4KQkJT1BUSUNBTCBORVRXT1JLUywgSU5DLgotMDAzMDFGICAgICAoYmFzZSAxNikJCU9QVElDQUwgTkVUV09SS1MsIElOQy4KLQkJCQkxNjYgQkFZUE9JTlRFIFBBUktXQVkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMjAgICAoaGV4KQkJVFNJLCBJbmMuLgotMDAzMDIwICAgICAoYmFzZSAxNikJCVRTSSwgSW5jLi4KLQkJCQk1MDAgQ2FyZGlnYW4gUm9hZAotCQkJCVNob3JldmlldyBNTiA1NTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMjEgICAoaGV4KQkJSFNJTkcgVEVDSC4gRU5URVJQUklTRSBDTy4sTFRECi0wMDMwMjEgICAgIChiYXNlIDE2KQkJSFNJTkcgVEVDSC4gRU5URVJQUklTRSBDTy4sTFRECi0JCQkJMkYsIE5PLiAyMiwgQUxMTEVZIDM4LCBMQU5FIDkxCi0JCQkJU0VDLiAxLCBORUkgSFUgUk9BRAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0yMiAgIChoZXgpCQlGb25nIEthaSBJbmR1c3RyaWFsIENvLiwgTHRkLgotMDAzMDIyICAgICAoYmFzZSAxNikJCUZvbmcgS2FpIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJNEYtMywgTm8uIDEzLCBXdSBDaHVhbiAxc3QgUm9hZAotCQkJCUhzaW4gQ2h1YW5nIENpdHksIFRhaXBlaSBIc2llbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0yMyAgIChoZXgpCQlDT0dFTlQgQ09NUFVURVIgU1lTVEVNUywgSU5DLgotMDAzMDIzICAgICAoYmFzZSAxNikJCUNPR0VOVCBDT01QVVRFUiBTWVNURU1TLCBJTkMuCi0JCQkJMTAgUklWRVIgUk9BRCAtIFNURS4gIzIwNQotCQkJCVVYQlJJREdFIE1BIDAxNTY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0yNCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDMwMjQgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRSAtU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMjUgICAoaGV4KQkJQ0hFQ0tPVVQgQ09NUFVURVIgU1lTVEVNUywgTFRECi0wMDMwMjUgICAgIChiYXNlIDE2KQkJQ0hFQ0tPVVQgQ09NUFVURVIgU1lTVEVNUywgTFRECi0JCQkJVE9XTlNFTkQgRkFSTSBST0FECi0JCQkJSE9VR0hUT04gUkVHSVMsIERVTlNUQUJMRSBCRURGT1JEU0hJUkUKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTMwLTI2ICAgKGhleCkJCUhlaVRlbCBEaWdpdGFsIFZpZGVvIEdtYkgKLTAwMzAyNiAgICAgKGJhc2UgMTYpCQlIZWlUZWwgRGlnaXRhbCBWaWRlbyBHbWJICi0JCQkJU3R1dGhhZ2VuIDI1Ci0JCQkJMjQxMTMgTW9sZnNlZQotCQkJCUdFUk1BTlkKLQotMDAtMzAtMjcgICAoaGV4KQkJS0VSQkFOR08sIElOQy4KLTAwMzAyNyAgICAgKGJhc2UgMTYpCQlLRVJCQU5HTywgSU5DLgotCQkJCTIxNzcxIFNURVZFTlMgQ1JFRUsgQkxWRC4gIzEwMAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMjggICAoaGV4KQkJRkFTRSBTYWxkYXR1cmEgc3JsCi0wMDMwMjggICAgIChiYXNlIDE2KQkJRkFTRSBTYWxkYXR1cmEgc3JsCi0JCQkJVi5SLiBCZXJuYXJkaSA1Ci0JCQkJMTAwNDIgU3R1cGluaXFpLU5pY2hlbGlubwotCQkJCVRPUklOTyAgCi0JCQkJSVRBTFkKLQotMDAtMzAtMjkgICAoaGV4KQkJT1BJQ09NCi0wMDMwMjkgICAgIChiYXNlIDE2KQkJT1BJQ09NCi0JCQkJUk9PTSAjMzAyLCBTVFlMRSBGQUNUT1JZIDE1MQotCQkJCVlBVEFCLURPTkcsIEJVTkRBTkctR1UgU1VOR05BTS1TSSwgS1lVTkcKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC0yQSAgIChoZXgpCQlTT1VUSEVSTiBJTkZPUk1BVElPTgotMDAzMDJBICAgICAoYmFzZSAxNikJCVNPVVRIRVJOIElORk9STUFUSU9OCi0JCQkJU1lTVEVNLCBJTkMuCi0JCQkJTk8uOCwgUiZEIFJELiBJViBTQ0lFTkNFLUJBU0VEIElORFVTVFJJQQotCQkJCUhTSU5DSFUgVEFJV0FOLCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTJCICAgKGhleCkJCUlOQUxQIE5FVFdPUktTLCBJTkMuCi0wMDMwMkIgICAgIChiYXNlIDE2KQkJSU5BTFAgTkVUV09SS1MsIElOQy4KLQkJCQlNRVJJRURXRUcgNwotCQkJCUNILTMxNzIgTklFREVSV0FOR0VOCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0zMC0yQyAgIChoZXgpCQlTWUxBTlRSTyBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDMwMkMgICAgIChiYXNlIDE2KQkJU1lMQU5UUk8gU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTE2ODYgREVMTCBBVkVOVUUKLQkJCQlDQU1QQkVMTCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMkQgICAoaGV4KQkJUVVBTlRVTSBCUklER0UgQ09NTVVOSUNBVElPTlMKLTAwMzAyRCAgICAgKGJhc2UgMTYpCQlRVUFOVFVNIEJSSURHRSBDT01NVU5JQ0FUSU9OUwotCQkJCU9ORSBISUdIIFNUUkVFVAotCQkJCU5PUlRIIEFORE9WRVIgTUEgMDE4NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTJFICAgKGhleCkJCUhvZnQgJiBXZXNzZWwgQUcKLTAwMzAyRSAgICAgKGJhc2UgMTYpCQlIb2Z0ICYgV2Vzc2VsIEFHCi0JCQkJUm90ZW5idXJnZXIgU3RyYXNzZSAyMAotCQkJCTMwNjU5IEhhbm5vdmVyICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTJGICAgKGhleCkJCUdFIEF2aWF0aW9uIFN5c3RlbQotMDAzMDJGICAgICAoYmFzZSAxNikJCUdFIEF2aWF0aW9uIFN5c3RlbQotCQkJCTMyOTAgUGF0dGVyc29uIEF2ZS4sIFMuRS4KLQkJCQlHcmFuZCBSYXBpZHMgTUkgNDk1MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTMwICAgKGhleCkJCUhBUk1PTklYIENPUlBPUkFUSU9OCi0wMDMwMzAgICAgIChiYXNlIDE2KQkJSEFSTU9OSVggQ09SUE9SQVRJT04KLQkJCQkxNzU1IE9TR09PRCBTVFJFRVQKLQkJCQlOT1JUSCBBTkRPVkVSIE1BIDAxODQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0zMSAgIChoZXgpCQlMSUdIVFdBVkUgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMzAzMSAgICAgKGJhc2UgMTYpCQlMSUdIVFdBVkUgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkyNjEgUEVQRSdTIEZBUk0gUk9BRAotCQkJCU1JTEZPUkQgQ1QgMDY0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTMyICAgKGhleCkJCU1hZ2ljUmFtLCBJbmMuCi0wMDMwMzIgICAgIChiYXNlIDE2KQkJTWFnaWNSYW0sIEluYy4KLQkJCQkxODUwIEJldmVybHkgQmx2ZC4KLQkJCQlMb3MgQW5nZWxlcyBDQSA5MDA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMzMgICAoaGV4KQkJT1JJRU5UIFRFTEVDT00gQ08uLCBMVEQuCi0wMDMwMzMgICAgIChiYXNlIDE2KQkJT1JJRU5UIFRFTEVDT00gQ08uLCBMVEQuCi0JCQkJTUlTVU5HIEJVTERJTkcgMTE1LTcKLQkJCQlOT05IWVVOLURPTkcsIEtBTkdNQU4tS1UgU0VPVUwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC0zNCAgIChoZXgpCQlTRVQgRU5HSU5FRVJJTkcKLTAwMzAzNCAgICAgKGJhc2UgMTYpCQlTRVQgRU5HSU5FRVJJTkcKLQkJCQkxNTc1MCBWSU5FWUFSRCBCTFZELiBTVEUuICMxMDAKLQkJCQlNT1JHQU4gSElMTCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMzUgICAoaGV4KQkJQ29ybmluZyBJbmNvcnBvcmF0ZWQKLTAwMzAzNSAgICAgKGJhc2UgMTYpCQlDb3JuaW5nIEluY29ycG9yYXRlZAotCQkJCURhdGEgQ2VudGVyCi0JCQkJTS9TIC0gU1AtV1ctMDEKLQkJCQlDb3JuaW5nIE5ZIDE0ODMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0zNiAgIChoZXgpCQlSTVAgRUxFS1RST05JS1NZU1RFTUUgR01CSAotMDAzMDM2ICAgICAoYmFzZSAxNikJCVJNUCBFTEVLVFJPTklLU1lTVEVNRSBHTUJICi0JCQkJSEFOTlMtTUFSVElOLVNDSExFJ1ItU1RSLjEyLTE0Ci0JCQkJRC00Nzg3NyBXSUxMSUNILU1VTkNISEVJREUKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0zMC0zNyAgIChoZXgpCQlQYWNrYXJkIEJlbGwgTmVjIFNlcnZpY2VzCi0wMDMwMzcgICAgIChiYXNlIDE2KQkJUGFja2FyZCBCZWxsIE5lYyBTZXJ2aWNlcwotCQkJCTI5OSBhdmVudWUgUGF0dG9uLCBCUCA2NDUKLQkJCQk0OTAwNiBBbmdlcnMgQ2VkZXggMDEgIAotCQkJCUZSQU5DRQotCi0wMC0zMC0zOCAgIChoZXgpCQlYQ1AsIElOQy4KLTAwMzAzOCAgICAgKGJhc2UgMTYpCQlYQ1AsIElOQy4KLQkJCQk0MCBFTE0gU1RSRUVUCi0JCQkJRFJZREVOIE5ZIDEzMDUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0zOSAgIChoZXgpCQlTT0ZUQk9PSyBQUkVTUwotMDAzMDM5ICAgICAoYmFzZSAxNikJCVNPRlRCT09LIFBSRVNTCi0JCQkJNzc0NSBIRVJTQ0hFTCBBVkVOVUUKLQkJCQlMQSBKT0xMQSBDQSA5MjAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtM0EgICAoaGV4KQkJTUFBVEVMCi0wMDMwM0EgICAgIChiYXNlIDE2KQkJTUFBVEVMCi0JCQkJNDk1IFJVRSBERSBQT01NQVJJTgotCQkJCTM4MzYwIFZPUkVQUEUgIAotCQkJCUZSQU5DRQotCi0wMC0zMC0zQiAgIChoZXgpCQlQb3dlckNvbSBUZWNobm9sb2d5Ci0wMDMwM0IgICAgIChiYXNlIDE2KQkJUG93ZXJDb20gVGVjaG5vbG9neQotCQkJCTJGLCBOby4gMzQsIEluZHVzdHJ5IEUuIFJvYWQgSVYKLQkJCQlIc2luY2h1IFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAzMDAgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtM0MgICAoaGV4KQkJT05OVE8gQ09SUC4KLTAwMzAzQyAgICAgKGJhc2UgMTYpCQlPTk5UTyBDT1JQLgotCQkJCTEyRi0yLCAgTk8uIDE2MQotCQkJCVNVTkcgVEVIIFJELiwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTNEICAgKGhleCkJCUlWQSBDT1JQT1JBVElPTgotMDAzMDNEICAgICAoYmFzZSAxNikJCUlWQSBDT1JQT1JBVElPTgotCQkJCTI5IEhVRFNPTiBST0FECi0JCQkJU1VEQlVSWSBNQSAwMTc3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtM0UgICAoaGV4KQkJUmFkY29tIEx0ZC4KLTAwMzAzRSAgICAgKGJhc2UgMTYpCQlSYWRjb20gTHRkLgotCQkJCTEyIEhhbmVjaG9zaGV0IFN0cmVldAotCQkJCVRlbC1Bdml2IDY5NzEwICAKLQkJCQlJU1JBRUwKLQotMDAtMzAtM0YgICAoaGV4KQkJVHVyYm9Db21tIFRlY2ggSW5jLgotMDAzMDNGICAgICAoYmFzZSAxNikJCVR1cmJvQ29tbSBUZWNoIEluYy4KLQkJCQk0Ri0yLCBObyAxNzEsIFN1bmctVGNoIFJvYWQKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtNDAgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAzMDQwICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUgLVNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTQxICAgKGhleCkJCVNBRUpJTiBUICYgTSBDTy4sIExURC4KLTAwMzA0MSAgICAgKGJhc2UgMTYpCQlTQUVKSU4gVCAmIE0gQ08uLCBMVEQuCi0JCQkJMk5EIEZMLiwgU0FFSklOIEJMREcuIDY4OQotCQkJCUlMV09OLURPTkcsIEtBTkdOQU0tR1UsIFNFT1VMCi0JCQkJMTM1LTIzMCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC00MiAgIChoZXgpCQlEZVRlV2UtRGV1dHNjaGUgVGVsZXBob253ZXJrZQotMDAzMDQyICAgICAoYmFzZSAxNikJCURlVGVXZS1EZXV0c2NoZSBUZWxlcGhvbndlcmtlCi0JCQkJWmV1Z2hvZnN0cmFzc2UgMQotCQkJCUQtMTA5OTcgQmVybGluICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTQzICAgKGhleCkJCUlEUkVBTSBURUNITk9MT0dJRVMsIFBURS4gTFRELgotMDAzMDQzICAgICAoYmFzZSAxNikJCUlEUkVBTSBURUNITk9MT0dJRVMsIFBURS4gTFRELgotCQkJCTU0IEtBTExBTkcgQkFIUlUsICMwMi0xNAotCQkJCVNJTkdBUE9SRSAzMzkzMzYKLQkJCQlTSU5HQVBPUkUKLQkJCQlTSU5HQVBPUkUKLQotMDAtMzAtNDQgICAoaGV4KQkJQ3JhZGxlUG9pbnQsIEluYwotMDAzMDQ0ICAgICAoYmFzZSAxNikJCUNyYWRsZVBvaW50LCBJbmMKLQkJCQk4MDUgVy4gRnJhbmtsaW4gU3QuCi0JCQkJQm9pc2UgSUQgODM3MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTQ1ICAgKGhleCkJCVZpbGxhZ2UgTmV0d29ya3MsIEluYy4gKFZOSSkKLTAwMzA0NSAgICAgKGJhc2UgMTYpCQlWaWxsYWdlIE5ldHdvcmtzLCBJbmMuIChWTkkpCi0JCQkJMTAwIFZpbGxhZ2UgQ291cnQgLSBTdGUuICMzMDEKLQkJCQlIYXpsZXQgTkogMDc3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTQ2ICAgKGhleCkJCUNvbnRyb2xsZWQgRWxlY3Ryb25pYyBNYW5hZ2VtZQotMDAzMDQ2ICAgICAoYmFzZSAxNikJCUNvbnRyb2xsZWQgRWxlY3Ryb25pYyBNYW5hZ2VtZQotCQkJCVVuaXQgNCBSYXZlbmhpbGwgQnVzaW5lc3MgUGFyawotCQkJCVJhdmVuaGlsbCBSb2FkCi0JCQkJQmVsZmFzdCAgCi0JCQkJSVJFTEFORAotCi0wMC0zMC00NyAgIChoZXgpCQlOSVNTRUkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDMwNDcgICAgIChiYXNlIDE2KQkJTklTU0VJIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTMyIE1JWUFXQUtFLCBTSElNT05PSVNISUtJLUNITwotCQkJCU5BS0FHQVdBLUtVLCBOQUdPWUEgNDU0LTA5NDUKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTMwLTQ4ICAgKGhleCkJCVN1cGVybWljcm8gQ29tcHV0ZXIsIEluYy4KLTAwMzA0OCAgICAgKGJhc2UgMTYpCQlTdXBlcm1pY3JvIENvbXB1dGVyLCBJbmMuCi0JCQkJMjA1MSBKdW5jdGlvbiBBdmVudWUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNDkgICAoaGV4KQkJQlJZQU5UIFRFQ0hOT0xPR1ksIExURC4KLTAwMzA0OSAgICAgKGJhc2UgMTYpCQlCUllBTlQgVEVDSE5PTE9HWSwgTFRELgotCQkJCVAuTy4gQk9YIDY5NTU3Ci0JCQkJQlJZQU5TVE9OLCAyMDIxCi0JCQkJU09VVEggQUZSSUNBCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTMwLTRBICAgKGhleCkJCUZyYXVuaG9mZXIgSVBNUwotMDAzMDRBICAgICAoYmFzZSAxNikJCUZyYXVuaG9mZXIgSVBNUwotCQkJCU1hcmlhLVJlaWNoZS1TdHJhc3NlIDIKLQkJCQkwMTEwOQotCQkJCUdFUk1BTlkKLQotMDAtMzAtNEIgICAoaGV4KQkJT1JCQUNPTSBTWVNURU1TLCBJTkMuCi0wMDMwNEIgICAgIChiYXNlIDE2KQkJT1JCQUNPTSBTWVNURU1TLCBJTkMuCi0JCQkJMTcwNCBUQVlMT1JTIExBTkUKLQkJCQlDSU5OQU1JTlNPTiBOSiAwODA3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNEMgICAoaGV4KQkJQVBQSUFOIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDMwNEMgICAgIChiYXNlIDE2KQkJQVBQSUFOIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJODAgQ0VOVFJBTCBTVFJFRVQKLQkJCQlCT1hCT1JPVUdIIE1BIDAxNzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC00RCAgIChoZXgpCQlFU0kKLTAwMzA0RCAgICAgKGJhc2UgMTYpCQlFU0kKLQkJCQkyNjAxIFN1bW1pdCBBdmVudWUKLQkJCQlQbGFubyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNEUgICAoaGV4KQkJQlVTVEVDIFBST0RVQ1RJT04gTFRELgotMDAzMDRFICAgICAoYmFzZSAxNikJCUJVU1RFQyBQUk9EVUNUSU9OIExURC4KLQkJCQlXT1JMRCBBVklBVElPTiBQQVJLCi0JCQkJU2hhbm5vbiBDb3VudHkgQ2xhcmUgCi0JCQkJSVJFTEFORAotCi0wMC0zMC00RiAgIChoZXgpCQlQTEFORVQgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAzMDRGICAgICAoYmFzZSAxNikJCVBMQU5FVCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMTFGLCBOby4gOTYsIE1pbi1DaHVhbiBSb2FkCi0JCQkJSHNpbi1UaWVuIFRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC01MCAgIChoZXgpCQlWZXJzYSBUZWNobm9sb2d5Ci0wMDMwNTAgICAgIChiYXNlIDE2KQkJVmVyc2EgVGVjaG5vbG9neQotCQkJCTQ0MzAgRS4gTWlyYWxvbWEgQXZlLiwgLSBTdGUuCi0JCQkJQW5haGVpbSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNTEgICAoaGV4KQkJT1JCSVQgQVZJT05JQyAmIENPTU1VTklDQVRJT04KLTAwMzA1MSAgICAgKGJhc2UgMTYpCQlPUkJJVCBBVklPTklDICYgQ09NTVVOSUNBVElPTgotCQkJCVNZU1RFTVMsIExURC4KLQkJCQlQLk8uIEJPWCAzMTcxIElORFVTVFJJQUwgWk9ORSwgTkVUQU5ZQSA0Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTMwLTUyICAgKGhleCkJCUVMQVNUSUMgTkVUV09SS1MKLTAwMzA1MiAgICAgKGJhc2UgMTYpCQlFTEFTVElDIE5FVFdPUktTCi0JCQkJNjEyMCBXSU5EV0FSRCBQQVJLV0FZIC1TVEUjMTAwCi0JCQkJQUxQSEFSRVRUQSBHQSAzMDAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNTMgICAoaGV4KQkJQmFzbGVyIEFHCi0wMDMwNTMgICAgIChiYXNlIDE2KQkJQmFzbGVyIEFHCi0JCQkJQW4gRGVyIFN0cnVzYmVrIDYwLTYyCi0JCQkJMjI5MjYgQWhyZW5zYnVyZyAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC01NCAgIChoZXgpCQlDQVNUTEVORVQgVEVDSE5PTE9HWSwgSU5DLgotMDAzMDU0ICAgICAoYmFzZSAxNikJCUNBU1RMRU5FVCBURUNITk9MT0dZLCBJTkMuCi0JCQkJTk8uIDEzMCBXVS1LVU5HIFJELiwKLQkJCQlXVS1LVSBIU0lBTkcgVEFJUEVJIEhTSUVOCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTU1ICAgKGhleCkJCVJlbmVzYXMgVGVjaG5vbG9neSBBbWVyaWNhLCBJbmMuCi0wMDMwNTUgICAgIChiYXNlIDE2KQkJUmVuZXNhcyBUZWNobm9sb2d5IEFtZXJpY2EsIEluYy4KLQkJCQk0NTAgSG9sZ2VyIFdheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC01NiAgIChoZXgpCQlCZWNrIElQQyBHbWJICi0wMDMwNTYgICAgIChiYXNlIDE2KQkJQmVjayBJUEMgR21iSAotCQkJCUdydW5pbmdlciBXZWcgMjQKLQkJCQlELTM1NDE1IFBvaGxoZWltIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtNTcgICAoaGV4KQkJUVRlbE5ldCwgSW5jLgotMDAzMDU3ICAgICAoYmFzZSAxNikJCVFUZWxOZXQsIEluYy4KLQkJCQk0MDAgLSAzMTE1IDEydGggU3RyZWV0IE5FCi0JCQkJQ2FsZ2FyeSBBbGJlcnRhIFQyRSA3SjIKLQkJCQlDQU5BREEKLQotMDAtMzAtNTggICAoaGV4KQkJQVBJIE1PVElPTgotMDAzMDU4ICAgICAoYmFzZSAxNikJCUFQSSBNT1RJT04KLQkJCQk0NSBIQVpFTFdPT0QgRFJJVkUKLQkJCQlBTUhFUlNUIE5ZIDE0MjI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC01OSAgIChoZXgpCQlLT05UUk9OIENPTVBBQ1QgQ09NUFVURVJTIEFHCi0wMDMwNTkgICAgIChiYXNlIDE2KQkJS09OVFJPTiBDT01QQUNUIENPTVBVVEVSUyBBRwotCQkJCU5vcmRzdHJhc3NlIDExL0YKLQkJCQkgTFVURVJCQUNIICA0NTQyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMzAtNUEgICAoaGV4KQkJVEVMR0VOIENPUlBPUkFUSU9OCi0wMDMwNUEgICAgIChiYXNlIDE2KQkJVEVMR0VOIENPUlBPUkFUSU9OCi0JCQkJMzEwMSBTT1ZFUkVJR04gRFIuIC0gU1RFLgotCQkJCUxBTlNJTkcgTUkgNDg5MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTVCICAgKGhleCkJCVRva28gSW5jLgotMDAzMDVCICAgICAoYmFzZSAxNikJCVRva28gSW5jLgotCQkJCTE4IENPTUlHQVlBLCBUU1VSVUdBU0hJTUEtU0hJCi0JCQkJU0FJVEFNQS1LRU4KLQkJCQlKQVBBTiAzNTAtMjI4MQotCQkJCUpBUEFOCi0KLTAwLTMwLTVDICAgKGhleCkJCVNNQVIgTGFib3JhdG9yaWVzIENvcnAuCi0wMDMwNUMgICAgIChiYXNlIDE2KQkJU01BUiBMYWJvcmF0b3JpZXMgQ29ycC4KLQkJCQkxMDk2MCBNaWxscmlkZ2UgTm9ydGggLSBTdGUuICMxMDcKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC01RCAgIChoZXgpCQlESUdJVFJBIFNZU1RFTVMsIElOQy4KLTAwMzA1RCAgICAgKGJhc2UgMTYpCQlESUdJVFJBIFNZU1RFTVMsIElOQy4KLQkJCQk4LTYxLCBHQVdPTC1ET05HCi0JCQkJWU9OR1NBTi1LVSBTRU9VTAotCQkJCUtPUkVBIDE0MC0xNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtNUUgICAoaGV4KQkJQWJlbGtvIElubm92YXRpb24KLTAwMzA1RSAgICAgKGJhc2UgMTYpCQlBYmVsa28gSW5ub3ZhdGlvbgotCQkJCUJveCA4MDgKLQkJCQlTLTk3MTI1IEx1bGVhICAKLQkJCQlTV0VERU4KLQotMDAtMzAtNUYgICAoaGV4KQkJSGFzc2VsYmxhZAotMDAzMDVGICAgICAoYmFzZSAxNikJCUhhc3NlbGJsYWQKLQkJCQlIZWpyZXZlaiAzMAotCQkJCUNvcGVuaGFnZW4gTlYgREstMjQwMAotCQkJCURFTk1BUksKLQotMDAtMzAtNjAgICAoaGV4KQkJUG93ZXJmaWxlLCBJbmMuCi0wMDMwNjAgICAgIChiYXNlIDE2KQkJUG93ZXJmaWxlLCBJbmMuCi0JCQkJMzM1MCBUaG9tYXMgUm9hZAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0LTIwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTYxICAgKGhleCkJCU1vYnlURUwKLTAwMzA2MSAgICAgKGJhc2UgMTYpCQlNb2J5VEVMCi0JCQkJNDMwMSBDb25uZWN0aWN1dCBBdmUuIE5XCi0JCQkJU3RlLiAjNDU0Ci0JCQkJV2FzaGluZ3RvbiBEQyAyMDAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNjIgICAoaGV4KQkJUEFUSCAxIE5FVFdPUksgVEVDSE5PTCdTIElOQy4KLTAwMzA2MiAgICAgKGJhc2UgMTYpCQlQQVRIIDEgTkVUV09SSyBURUNITk9MJ1MgSU5DLgotCQkJCTM2MzYgTk9CRUwgRFJJVkUgLSBTVEUuICMyNzUKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTYzICAgKGhleCkJCVNBTlRFUkEgU1lTVEVNUywgSU5DLgotMDAzMDYzICAgICAoYmFzZSAxNikJCVNBTlRFUkEgU1lTVEVNUywgSU5DLgotCQkJCTI5MDEgU1VNTUlUIEFWRU5VRSAtIFNURS4gIzEwMAotCQkJCVBMQU5PIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC02NCAgIChoZXgpCQlBRExJTksgVEVDSE5PTE9HWSwgSU5DLgotMDAzMDY0ICAgICAoYmFzZSAxNikJCUFETElOSyBURUNITk9MT0dZLCBJTkMuCi0JCQkJOUYsIE5PLiAxNjYsIEpJRU4tWUkgUi5ELgotCQkJCUNIVU5HLUhPIENJVFkgVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTY1ICAgKGhleCkJCUFQUExFIENPTVBVVEVSLCBJTkMuCi0wMDMwNjUgICAgIChiYXNlIDE2KQkJQVBQTEUgQ09NUFVURVIsIElOQy4KLQkJCQkyMDY1MCBWQUxMRVkgR1JFRU4gRFJJVkUKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTY2ICAgKGhleCkJCVJGTQotMDAzMDY2ICAgICAoYmFzZSAxNikJCVJGTQotCQkJCTMwNzkgUHJlbWllcmUgUGt3eQotCQkJCVN1aXRlIDE0MAotCQkJCUR1bHV0aCBHQSAzMDA5NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNjcgICAoaGV4KQkJQklPU1RBUiBNSUNST1RFQ0ggSU5UJ0wgQ09SUC4KLTAwMzA2NyAgICAgKGJhc2UgMTYpCQlCSU9TVEFSIE1JQ1JPVEVDSCBJTlQnTCBDT1JQLgotCQkJCTJGTC4gTk8uIDEwOC0yIE1JTiBDSFVBTiBST0FECi0JCQkJSFNJTiBUSUVOIENJVFksIFRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC02OCAgIChoZXgpCQlDWUJFUk5FVElDUyBURUNILiBDTy4sIExURC4KLTAwMzA2OCAgICAgKGJhc2UgMTYpCQlDWUJFUk5FVElDUyBURUNILiBDTy4sIExURC4KLQkJCQlEQUlUT0ggQkxERy4gNEYgMy0zMi0xCi0JCQkJVEFLQURBLCBUT1NISU1BLUtVLCBUT0tZTwotCQkJCUpBUEFOIDE3MS0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMzAtNjkgICAoaGV4KQkJSU1QQUNDVCBURUNITk9MT0dZIENPUlAuCi0wMDMwNjkgICAgIChiYXNlIDE2KQkJSU1QQUNDVCBURUNITk9MT0dZIENPUlAuCi0JCQkJMkYsIE5PLiAxMiwgUiZEIFJELiBJSQotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLIEhTSU4tQ0hVCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTZBICAgKGhleCkJCVBFTlRBIE1FRElBIENPLiwgTFRELgotMDAzMDZBICAgICAoYmFzZSAxNikJCVBFTlRBIE1FRElBIENPLiwgTFRELgotCQkJCUUtNTA0IEJ1bmRhbmcgVGVjaG5vcGFyaywxNTEKLQkJCQlZYXRvcC1kb25nIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaS1kbyAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtNkIgICAoaGV4KQkJQ01PUyBTWVNURU1TLCBJTkMuCi0wMDMwNkIgICAgIChiYXNlIDE2KQkJQ01PUyBTWVNURU1TLCBJTkMuCi0JCQkJMjM0NDAgSEFXVEhPUk5FIEJMVkQtU1RFICMyOTAKLQkJCQlUT1JSQU5DRSBDQSA5MDUwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNkMgICAoaGV4KQkJSGl0ZXggSG9sZGluZyBHbWJICi0wMDMwNkMgICAgIChiYXNlIDE2KQkJSGl0ZXggSG9sZGluZyBHbWJICi0JCQkJR3Jlc2NoYmFjaHN0ci4gMTIKLQkJCQk3NjIyOSBLYXJsc3J1aGUgIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtNkQgICAoaGV4KQkJTFVDRU5UIFRFQ0hOT0xPR0lFUwotMDAzMDZEICAgICAoYmFzZSAxNikJCUxVQ0VOVCBURUNITk9MT0dJRVMKLQkJCQkzMDAgQkFLRVIgQVZFTlVFIC0gU1RFLiAjMTAwCi0JCQkJQ09OQ09SRCBNQSAwMTc0Mi0yMTY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC02RSAgIChoZXgpCQlIRVdMRVRUIFBBQ0tBUkQKLTAwMzA2RSAgICAgKGJhc2UgMTYpCQlIRVdMRVRUIFBBQ0tBUkQKLQkJCQkxMTAwMCBXT0xGRSBST0FECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC02RiAgIChoZXgpCQlTRVlFT04gVEVDSC4gQ08uLCBMVEQuCi0wMDMwNkYgICAgIChiYXNlIDE2KQkJU0VZRU9OIFRFQ0guIENPLiwgTFRELgotCQkJCU5BTUNIRU9OIEJMREcuIDZGLAotCQkJCURBRUNISS1ET05HLCA5NTctMDEzIEtBTkdOQU0tR1UsIFNFT1VMCi0JCQkJS09SRUEgMTM1LTI4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC03MCAgIChoZXgpCQkxTmV0IENvcnBvcmF0aW9uCi0wMDMwNzAgICAgIChiYXNlIDE2KQkJMU5ldCBDb3Jwb3JhdGlvbgotCQkJCTM0NyBFbGl6YWJldGggQXZlbnVlIC0gU3RlLiAjMTAwCi0JCQkJU29tZXJzZXQgTkogMDg4NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTcxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMzA3MSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXYgLSBTSkEtMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC03MiAgIChoZXgpCQlJbnRlbGxpYnl0ZSBJbmMuCi0wMDMwNzIgICAgIChiYXNlIDE2KQkJSW50ZWxsaWJ5dGUgSW5jLgotCQkJCUNhbmFkYSBUcnVzdCBUb3dlciAtIEJDRSBQbGFjZQotCQkJCTE2MSBCYXkgU3QuIDI3dGggRmxvb3IsCi0JCQkJVG9yb250byBPbnRhcmlvIE01SiAyUzEKLQkJCQlDQU5BREEKLQotMDAtMzAtNzMgICAoaGV4KQkJSW50ZXJuYXRpb25hbCBNaWNyb3N5c3RlbXMsIEluCi0wMDMwNzMgICAgIChiYXNlIDE2KQkJSW50ZXJuYXRpb25hbCBNaWNyb3N5c3RlbXMsIEluCi0JCQkJNTIxIFZhbGxleSBXYXkKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNzQgICAoaGV4KQkJRVFVSUlORVQgTFRELgotMDAzMDc0ICAgICAoYmFzZSAxNikJCUVRVUlJTkVUIExURC4KLQkJCQlFRElTT04gSE9VU0UKLQkJCQlFRElTT04gUk9BRAotCQkJCSBTV0lORE9OLCBTTjMgNUpBICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0zMC03NSAgIChoZXgpCQlBRFRFQ0gKLTAwMzA3NSAgICAgKGJhc2UgMTYpCQlBRFRFQ0gKLQkJCQlSVUUgRFUgVkFMIFNUIExBTUJFUlQgMTkxIC8gaQotCQkJCSBTRVJBSU5HICA0MTAwCi0JCQkJQkVMR0lVTQotCi0wMC0zMC03NiAgIChoZXgpCQlBa2FtYmEgQ29ycG9yYXRpb24KLTAwMzA3NiAgICAgKGJhc2UgMTYpCQlBa2FtYmEgQ29ycG9yYXRpb24KLQkJCQkxNTU5NSBMb3MgR2F0b3MgQmx2ZC4KLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTc3ICAgKGhleCkJCU9OUFJFTSBORVRXT1JLUwotMDAzMDc3ICAgICAoYmFzZSAxNikJCU9OUFJFTSBORVRXT1JLUwotCQkJCTQyNTAxIEFMQlJBRSBTVFJFRVQKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC03OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDMwNzggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTc5ICAgKGhleCkJCUNRT1MsIElOQy4KLTAwMzA3OSAgICAgKGJhc2UgMTYpCQlDUU9TLCBJTkMuCi0JCQkJMjUgTUFVQ0hMWSAgLSBTVEUuICMzMjkKLQkJCQlJUlZJTkUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTdBICAgKGhleCkJCUFkdmFuY2VkIFRlY2hub2xvZ3kgJiBTeXN0ZW1zCi0wMDMwN0EgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgVGVjaG5vbG9neSAmIFN5c3RlbXMKLQkJCQlZb2tvaGFtYSBCdXNpbmVzcyBQYXJrIEVhc3QgVG93ZXIgOUYsCi0JCQkJMTM0IEdvdWRvLWNobywgSG9kb2dheWEta3UsIFlva29oYW1hLCBLYQotCQkJCTI0MC0wMDA1Ci0JCQkJSkFQQU4KLQotMDAtMzAtN0IgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAzMDdCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUgLSBTSkEtMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC03QyAgIChoZXgpCQlBRElEIFNBCi0wMDMwN0MgICAgIChiYXNlIDE2KQkJQURJRCBTQQotCQkJCTcwIFJVIEFOQVRPTEUgRlJBTkNFCi0JCQkJOTIgMzAwIExFVkFMTE9JUy1QRVJSRVQgQ0VERVggIAotCQkJCUZSQU5DRQotCi0wMC0zMC03RCAgIChoZXgpCQlHUkUgQU1FUklDQSwgSU5DLgotMDAzMDdEICAgICAoYmFzZSAxNikJCUdSRSBBTUVSSUNBLCBJTkMuCi0JCQkJNDI1IEhBUkJPUiBCTFZELgotCQkJCUJFTE1PTlQgQ0EgOTQwMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTdFICAgKGhleCkJCVJlZGZsZXggQ29tbXVuaWNhdGlvbiBTeXN0ZW1zCi0wMDMwN0UgICAgIChiYXNlIDE2KQkJUmVkZmxleCBDb21tdW5pY2F0aW9uIFN5c3RlbXMKLQkJCQkxMS0yOSBFYXN0ZXJuIFJvYWQKLQkJCQlTb3V0aCBNZWxib3VybmUgVmljdG9yaWEgMzIwNSAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMzAtN0YgICAoaGV4KQkJSVJMQU4gTFRELgotMDAzMDdGICAgICAoYmFzZSAxNikJCUlSTEFOIExURC4KLQkJCQkxIEhBVEFNQVIgU1RSRUVUCi0JCQkJUC5PLiBCT1ggMjg4IFlPS05FQU0gMjA2OTIKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMzAtODAgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAzMDgwICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUgLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04MSAgIChoZXgpCQlBTFRPUyBDJkMKLTAwMzA4MSAgICAgKGJhc2UgMTYpCQlBTFRPUyBDJkMKLQkJCQkxNTAtMDEwIFJNLiAxMDEyLCA0NC0xCi0JCQkJREFFIFlPVU5HIEIvRCwgWU9WSURPLURPTkcgWU9VTkdDSFVOR1BPLQotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTMwLTgyICAgKGhleCkJCVRBSUhBTiBFTEVDVFJJQyBXSVJFIENPLiwgTFRELgotMDAzMDgyICAgICAoYmFzZSAxNikJCVRBSUhBTiBFTEVDVFJJQyBXSVJFIENPLiwgTFRELgotCQkJCUNvbW11bmljYXRpb24gRW5naW5lZXJpbmcgVGVhbQotCQkJCTk5NiBTaWhldW5nLURvbmcgS2V5bSBDaGVvbi1rdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtODMgICAoaGV4KQkJSXZyb24gU3lzdGVtcwotMDAzMDgzICAgICAoYmFzZSAxNikJCUl2cm9uIFN5c3RlbXMKLQkJCQkxOS0yMCBZT1JLIFJPQUQKLQkJCQlEVU4gTEFPR0hBSVJFIENPVU5UWSBEVUJMSU4KLQkJCQlJUkVMQU5ECi0JCQkJSVJFTEFORAotCi0wMC0zMC04NCAgIChoZXgpCQlBTExJRUQgVEVMRVNZTiBJTlRFUk5BSU9OQUwKLTAwMzA4NCAgICAgKGJhc2UgMTYpCQlBTExJRUQgVEVMRVNZTiBJTlRFUk5BSU9OQUwKLQkJCQlDT1JQT1JBVElPTgotCQkJCTk2MCBTVEVXQVJUIERSSVZFLCAgU1RFLgotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtODUgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAzMDg1ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtODYgICAoaGV4KQkJVHJhbnNpc3RvciBEZXZpY2VzLCBJbmMuCi0wMDMwODYgICAgIChiYXNlIDE2KQkJVHJhbnNpc3RvciBEZXZpY2VzLCBJbmMuCi0JCQkJMzZBIE5ld2J1cmdoIFJvYWQKLQkJCQlIYWNrZXR0c3Rvd24gTkogMDc4NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTg3ICAgKGhleCkJCVZFR0EgR1JJRVNIQUJFUiBLRwotMDAzMDg3ICAgICAoYmFzZSAxNikJCVZFR0EgR1JJRVNIQUJFUiBLRwotCQkJCUFNIEhPSEVOU1RFSU4gMTEzCi0JCQkJNzc3NjEgU0NIVUxUQUNICi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMzAtODggICAoaGV4KQkJU2lhcmEgU3lzdGVtcywgSW5jLgotMDAzMDg4ICAgICAoYmFzZSAxNikJCVNpYXJhIFN5c3RlbXMsIEluYy4KLQkJCQkzMDAgRmVyZ3Vzb24gRHJpdmUgLSAybmQgRmxvb3IKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04OSAgIChoZXgpCQlTcGVjdHJhcG9pbnQgV2lyZWxlc3MsIExMQwotMDAzMDg5ICAgICAoYmFzZSAxNikJCVNwZWN0cmFwb2ludCBXaXJlbGVzcywgTExDCi0JCQkJMTEyNSBFLiBDb2xsaW5zIEJsdmQuCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtOEEgICAoaGV4KQkJTklDT1RSQSBTSVNURU1JIFMuUC5BCi0wMDMwOEEgICAgIChiYXNlIDE2KQkJTklDT1RSQSBTSVNURU1JIFMuUC5BCi0JCQkJNDEgVmlhIFByaW1vIE1hZ2dpbwotCQkJCUJhcmFuemF0ZSAoTUkpIDIwMDIxCi0JCQkJSVRBTFkKLQotMDAtMzAtOEIgICAoaGV4KQkJQnJpeCBOZXR3b3JrcwotMDAzMDhCICAgICAoYmFzZSAxNikJCUJyaXggTmV0d29ya3MKLQkJCQkzMDAgQ29uY29yZCBSb2FkCi0JCQkJQmlsbGVyaWNhIE1BIDAxODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04QyAgIChoZXgpCQlRdWFudHVtIENvcnBvcmF0aW9uCi0wMDMwOEMgICAgIChiYXNlIDE2KQkJUXVhbnR1bSBDb3Jwb3JhdGlvbgotCQkJCTEwMTI1IEZlZGVyYWwgRHJpdmUKLQkJCQlDb2xvcmFkbyBTcHJpbmdzIENPIDgwOTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04RCAgIChoZXgpCQlQaW5uYWNsZSBTeXN0ZW1zLCBJbmMuCi0wMDMwOEQgICAgIChiYXNlIDE2KQkJUGlubmFjbGUgU3lzdGVtcywgSW5jLgotCQkJCUZyYW5rZnVydGVyIFN0ci4gM2MKLQkJCQlELTM4MTIyIEJyYXVuc2Nod2VpZyAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLThFICAgKGhleCkJCUNST1NTIE1BVENIIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAzMDhFICAgICAoYmFzZSAxNikJCUNST1NTIE1BVENIIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTM5NjAgUkNBIEJsdmQuLCBTdWl0ZSA2MDAxCi0JCQkJUGFsbSBCZWFjaCBGTCAzMzQxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtOEYgICAoaGV4KQkJTUlDUklMT1IsIEluYy4KLTAwMzA4RiAgICAgKGJhc2UgMTYpCQlNSUNSSUxPUiwgSW5jLgotCQkJCTE3IExha2VzaWRlIE9mZmljZSBQYXJrCi0JCQkJNjA3IE5vcnRoIEF2ZW51ZQotCQkJCVdha2VmaWVsZCBNQSAwMTg4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtOTAgICAoaGV4KQkJQ1lSQSBURUNITk9MT0dJRVMsIElOQy4KLTAwMzA5MCAgICAgKGJhc2UgMTYpCQlDWVJBIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTgwMDAgQ0FQV0VMTCBEUklWRQotCQkJCU9BS0xBTkQgQ0EgOTQ2MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTkxICAgKGhleCkJCVRBSVdBTiBGSVJTVCBMSU5FIEVMRUMuIENPUlAuCi0wMDMwOTEgICAgIChiYXNlIDE2KQkJVEFJV0FOIEZJUlNUIExJTkUgRUxFQy4gQ09SUC4KLQkJCQk0MCBDaHVuZy1TaGFuIFJvYWQKLQkJCQlUdS1DaGVuZyBJbmR1c3RyaWFsIFBhcmsKLQkJCQlUYWlwZWkgQ291bnR5ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTkyICAgKGhleCkJCU1vZHVOT1JNIEdtYkgKLTAwMzA5MiAgICAgKGJhc2UgMTYpCQlNb2R1Tk9STSBHbWJICi0JCQkJTGFuZ3J1dGlzdHJhc3NlIDMzCi0JCQkJQ0gtODg0MCBFaW5zbGVkZWxuICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0zMC05MyAgIChoZXgpCQlTb25uZXQgVGVjaG5vbG9naWVzLCBJbmMKLTAwMzA5MyAgICAgKGJhc2UgMTYpCQlTb25uZXQgVGVjaG5vbG9naWVzLCBJbmMKLQkJCQk4IEF1dHJ5Ci0JCQkJSXJ2aW5lLCBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtOTQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAzMDk0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUgLSBTSkEtMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05NSAgIChoZXgpCQlQcm9jb21wIEluZm9ybWF0aWNzLCBMdGQuCi0wMDMwOTUgICAgIChiYXNlIDE2KQkJUHJvY29tcCBJbmZvcm1hdGljcywgTHRkLgotCQkJCTVGLCA2OS0xMCwgU2VjLiAyLAotCQkJCUNodW5nIENoZW5nIEUuIFJvYWQKLQkJCQlUYW1zaHVpLCBUYWlwZWksIEhzaWVuICBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTk2ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMzA5NiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtOTcgICAoaGV4KQkJQUIgUmVnaW4KLTAwMzA5NyAgICAgKGJhc2UgMTYpCQlBQiBSZWdpbgotCQkJCUJveCAzNjYKLQkJCQlTRS0yNjEyMyBMYW5kc2tyb25hIAotCQkJCVNXRURFTgotCi0wMC0zMC05OCAgIChoZXgpCQlHbG9iYWwgQ29udmVyZ2luZyBUZWNobm9sb2dpZXMKLTAwMzA5OCAgICAgKGJhc2UgMTYpCQlHbG9iYWwgQ29udmVyZ2luZyBUZWNobm9sb2dpZXMKLQkJCQkxODAwIFByZXN0b24gUGFyayBCbHZkLgotCQkJCVN1aXRlICMyNTAKLQkJCQlQbGFubyBUWCA3NTA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtOTkgICAoaGV4KQkJQk9FTklHIFVORCBLQUxMRU5CQUNIIE9IRwotMDAzMDk5ICAgICAoYmFzZSAxNikJCUJPRU5JRyBVTkQgS0FMTEVOQkFDSCBPSEcKLQkJCQlBTSBTUE9FUktFTCAxMDAKLQkJCQk0NDIyNyBET1JUTVVORAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTlBICAgKGhleCkJCUFTVFJPIFRFUlJBIENPUlAuCi0wMDMwOUEgICAgIChiYXNlIDE2KQkJQVNUUk8gVEVSUkEgQ09SUC4KLQkJCQkxMTUyNiBTT1JSRU5UTyBWQUxMRVkgUk9BRAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtOUIgICAoaGV4KQkJU21hcnR3YXJlCi0wMDMwOUIgICAgIChiYXNlIDE2KQkJU21hcnR3YXJlCi0JCQkJNDkgQVYgQXJpc3RpZGUKLQkJCQlCcmlhbmQKLQkJCQk5MjE2MCBBbnRvbnkgIAotCQkJCUZSQU5DRQotCi0wMC0zMC05QyAgIChoZXgpCQlUaW1pbmcgQXBwbGljYXRpb25zLCBJbmMuCi0wMDMwOUMgICAgIChiYXNlIDE2KQkJVGltaW5nIEFwcGxpY2F0aW9ucywgSW5jLgotCQkJCTQ3NzUgV2FsbnV0IFN0LgotCQkJCVN1aXRlIDFCCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtOUQgICAoaGV4KQkJTmltYmxlIE1pY3Jvc3lzdGVtcywgSW5jLgotMDAzMDlEICAgICAoYmFzZSAxNikJCU5pbWJsZSBNaWNyb3N5c3RlbXMsIEluYy4KLQkJCQk1MCBDaHVyY2ggU3RyZWV0IC0gNXRoIEZsb29yCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05RSAgIChoZXgpCQlXT1JLQklUIENPUlBPUkFUSU9OLgotMDAzMDlFICAgICAoYmFzZSAxNikJCVdPUktCSVQgQ09SUE9SQVRJT04uCi0JCQkJMS0yLTIgQ2h1b3UsIFlhbWF0bwotCQkJCUthbmFnYXdhICAyNDItMDAyMSAgCi0JCQkJSkFQQU4KLQotMDAtMzAtOUYgICAoaGV4KQkJQU1CRVIgTkVUV09SS1MKLTAwMzA5RiAgICAgKGJhc2UgMTYpCQlBTUJFUiBORVRXT1JLUwotCQkJCTI0NzUgQVVHVVNUSU5FIERSLgotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1BMCAgIChoZXgpCQlUWUNPIFNVQk1BUklORSBTWVNURU1TLCBMVEQuCi0wMDMwQTAgICAgIChiYXNlIDE2KQkJVFlDTyBTVUJNQVJJTkUgU1lTVEVNUywgTFRELgotCQkJCTI1MCBJTkRVU1RSSUFMIFdBWSBXRVNUCi0JCQkJRUFUT05UT1dOIE5KIDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1BMSAgIChoZXgpCQlXRUJHQVRFIEluYy4KLTAwMzBBMSAgICAgKGJhc2UgMTYpCQlXRUJHQVRFIEluYy4KLQkJCQk0RiwgUGlrYSBCbGRnLiwgODk0LTIwLCBIb3lrZSAyLWRvbmcKLQkJCQlEb25nYW4tS3UsCi0JCQkJQW55YW5nLVNpIEt5dW5nZ2ktRG8gCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTMwLUEyICAgKGhleCkJCUxpZ2h0bmVyIEVuZ2luZWVyaW5nCi0wMDMwQTIgICAgIChiYXNlIDE2KQkJTGlnaHRuZXIgRW5naW5lZXJpbmcKLQkJCQk4NTUxIExhIEpvbGxhIFNob3JlcyBEcgotCQkJCUxhIEpvbGxhIENBIDkyMDM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1BMyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDMwQTMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRSAtU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQTQgICAoaGV4KQkJV29vZHdpbmQgQ29tbXVuaWNhdGlvbnMgU3lzdGVtCi0wMDMwQTQgICAgIChiYXNlIDE2KQkJV29vZHdpbmQgQ29tbXVuaWNhdGlvbnMgU3lzdGVtCi0JCQkJMjAzMDAgQ2VudHVyeSBCbHZkLiwgU3VpdGUgMjAwQgotCQkJCUdlcm1hbnRvd24gTUQgMjA4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUE1ICAgKGhleCkJCUFDVElWRSBQT1dFUgotMDAzMEE1ICAgICAoYmFzZSAxNikJCUFDVElWRSBQT1dFUgotCQkJCTExNTI1IFNUT05FSE9MTE9XIC0gU1RFLiMyNTUKLQkJCQlBVVNUSU4gVFggNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUE2ICAgKGhleCkJCVZJQU5FVCBURUNITk9MT0dJRVMsIExURC4KLTAwMzBBNiAgICAgKGJhc2UgMTYpCQlWSUFORVQgVEVDSE5PTE9HSUVTLCBMVEQuCi0JCQkJOCBIQUNIQVJBU0ggU1RSRUVUCi0JCQkJUkFNQVQgSEFTSEFST04gNDcyNjIKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMzAtQTcgICAoaGV4KQkJU0NIV0VJVFpFUiBFTkdJTkVFUklORwotMDAzMEE3ICAgICAoYmFzZSAxNikJCVNDSFdFSVRaRVIgRU5HSU5FRVJJTkcKLQkJCQlMQUJPUkFUT1JJRVMsIElOQy4KLQkJCQkyMzUwIE5FIEhPUEtJTlMgQ09VUlQKLQkJCQlQVUxMTUFOIFdBIDk5MTYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1BOCAgIChoZXgpCQlPTCdFIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDMwQTggICAgIChiYXNlIDE2KQkJT0wnRSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTE5NjIgWkFOS0VSIFJPQUQKLQkJCQlTQU4gSk9TRSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQTkgICAoaGV4KQkJTmV0aXZlcnNlLCBJbmMuCi0wMDMwQTkgICAgIChiYXNlIDE2KQkJTmV0aXZlcnNlLCBJbmMuCi0JCQkJMTAwIENlbnR1cnkgQ2VudGVyIENvdXJ0Ci0JCQkJU3VpdGUgIzYwMAotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1BQSAgIChoZXgpCQlBWFVTIE1JQ1JPU1lTVEVNUywgSU5DLgotMDAzMEFBICAgICAoYmFzZSAxNikJCUFYVVMgTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJMkYtNCwgTk8uMTgvTi4gNjA5LCBTRUMuIDUKLQkJCQlDSFVOLUhTSU4gUk9BRCwgU0FOIENIVU5HIFRBSVBFSSBDT1VOVFkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtQUIgICAoaGV4KQkJREVMVEEgTkVUV09SS1MsIElOQy4KLTAwMzBBQiAgICAgKGJhc2UgMTYpCQlERUxUQSBORVRXT1JLUywgSU5DLgotCQkJCTgsIEtPTiBKQU4gV0VTVCBST0FECi0JCQkJTElVVFUgSU5EVVNUUklBTCBaT05FIEtFRUxVTkcKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtQUMgICAoaGV4KQkJU3lzdGVtZSBMYXVlciBHbWJIICYgQ28uLCBMdGQuCi0wMDMwQUMgICAgIChiYXNlIDE2KQkJU3lzdGVtZSBMYXVlciBHbWJIICYgQ28uLCBMdGQuCi0JCQkJS2VsdGVyc3RyYXNzZSA1OQotCQkJCTcyNjY5IFVudGVyZW5zaW5nZW4gIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtQUQgICAoaGV4KQkJU0hBTkdIQUkgQ09NTVVOSUNBVElPTgotMDAzMEFEICAgICAoYmFzZSAxNikJCVNIQU5HSEFJIENPTU1VTklDQVRJT04KLQkJCQlURUNITk9MT0dJRVMgQ0VOVEVSCi0JCQkJMTUgR1VJLVFJTkcgUk9BRCBTSEFOR0hBSSAyMDAyMzMKLQkJCQlQLlIuIENISU5BCi0JCQkJQ0hJTkEKLQotMDAtMzAtQUUgICAoaGV4KQkJVGltZXMgTiBTeXN0ZW0sIEluYy4KLTAwMzBBRSAgICAgKGJhc2UgMTYpCQlUaW1lcyBOIFN5c3RlbSwgSW5jLgotCQkJCTE4MjYgS3JhbWVyIExhbmUgLSBTdGUuCi0JCQkJQXVzdGluIFRYIDc4NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1BRiAgIChoZXgpCQlIb25leXdlbGwgR21iSAotMDAzMEFGICAgICAoYmFzZSAxNikJCUhvbmV5d2VsbCBHbWJICi0JCQkJQm9lYmxpbmdlciBTdHIuIDE3Ci0JCQkJUC5PLiBCb3ggMTE2NAotCQkJCUQtNzEwOTggU2Nob2VuYWljaCAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC1CMCAgIChoZXgpCQlDb252ZXJnZW5ldCBUZWNobm9sb2dpZXMKLTAwMzBCMCAgICAgKGJhc2UgMTYpCQlDb252ZXJnZW5ldCBUZWNobm9sb2dpZXMKLQkJCQkyMjIyIFRyYWRlIFpvbmUgQm91bGV2YXJkCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUIxICAgKGhleCkJCVRydW5rTmV0Ci0wMDMwQjEgICAgIChiYXNlIDE2KQkJVHJ1bmtOZXQKLQkJCQlBdWJlcmdlbnZpbGxlciBBbGxlZSA1MQotCQkJCURpZWJ1cmcgIEQtNjQ4MDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLUIyICAgKGhleCkJCUwtMyBTb25vbWEgRU8KLTAwMzBCMiAgICAgKGJhc2UgMTYpCQlMLTMgU29ub21hIEVPCi0JCQkJNDI4IEF2aWF0aW9uIEJsdmQKLQkJCQlTYW50YSBSb3NhIENBIDk1NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1CMyAgIChoZXgpCQlTYW4gVmFsbGV5IFN5c3RlbXMsIEluYy4KLTAwMzBCMyAgICAgKGJhc2UgMTYpCQlTYW4gVmFsbGV5IFN5c3RlbXMsIEluYy4KLQkJCQkyMTA1IFMuIEJhc2NvbSBBdmUuIC0gU3RlLiAjMzkwCi0JCQkJQ2FtcGJlbGwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUI0ICAgKGhleCkJCUlOVEVSU0lMIENPUlAuCi0wMDMwQjQgICAgIChiYXNlIDE2KQkJSU5URVJTSUwgQ09SUC4KLQkJCQlQLk8uIEJPWCA4ODMKLQkJCQkyNDAxIFBBTE0gQkFZIFJPQUQKLQkJCQlNRUxCT1VSTkUgRkwgMzI5MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUI1ICAgKGhleCkJCVRhZGlyYW4gTWljcm93YXZlIE5ldHdvcmtzCi0wMDMwQjUgICAgIChiYXNlIDE2KQkJVGFkaXJhbiBNaWNyb3dhdmUgTmV0d29ya3MKLQkJCQk0MDAwIEdyZWVuYnJpYXIgRHJpdmUKLQkJCQlTdGFmZm9yZCBUWCA3NzQ3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQjYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAzMEI2ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUgLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1CNyAgIChoZXgpCQlUZWxldHJvbCBTeXN0ZW1zLCBJbmMuCi0wMDMwQjcgICAgIChiYXNlIDE2KQkJVGVsZXRyb2wgU3lzdGVtcywgSW5jLgotCQkJCVRlY2hub2xvZ3kgQ2VudGVyCi0JCQkJMjg2IENvbW1lcmNpYWwgU3RyZWV0Ci0JCQkJTWFuY2hlc3RlciBOSCAwMzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQjggICAoaGV4KQkJUml2ZXJEZWx0YSBOZXR3b3JrcwotMDAzMEI4ICAgICAoYmFzZSAxNikJCVJpdmVyRGVsdGEgTmV0d29ya3MKLQkJCQlUaHJlZSBIaWdod29vZCBEcml2ZSBFYXN0Ci0JCQkJVGV3a3NidXJ5IE1BIDAxODc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1COSAgIChoZXgpCQlFQ1RFTAotMDAzMEI5ICAgICAoYmFzZSAxNikJCUVDVEVMCi0JCQkJMjIyNDAgQ09NU0FUIERSSVZFCi0JCQkJQ0xBUktTQlVSRyBNRCAyMDg3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQkEgICAoaGV4KQkJQUMmVCBTWVNURU0gQ08uLCBMVEQuCi0wMDMwQkEgICAgIChiYXNlIDE2KQkJQUMmVCBTWVNURU0gQ08uLCBMVEQuCi0JCQkJUk9PTSA3MDIsIEtFVU0tV0hBIFBMQVpBCi0JCQkJMTE0Mi01LCBTQU5CT04tRE9ORyBLT09OUE8tU0hJLCBLWU9OR0tJLQotCQkJCTQzNS0wNDAgU09VVEggS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtQkIgICAoaGV4KQkJQ2FjaGVGbG93LCBJbmMuCi0wMDMwQkIgICAgIChiYXNlIDE2KQkJQ2FjaGVGbG93LCBJbmMuCi0JCQkJNjUwIEFsbWFub3IgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUJDICAgKGhleCkJCU9wdHJvbmljIEFHCi0wMDMwQkMgICAgIChiYXNlIDE2KQkJT3B0cm9uaWMgQUcKLQkJCQl1bnRlcmVnZ2Vyc3RyYXNzZSA1MwotCQkJCTk0MDMgR29sZGFjaCAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMzAtQkQgICAoaGV4KQkJQkVMS0lOIENPTVBPTkVOVFMKLTAwMzBCRCAgICAgKGJhc2UgMTYpCQlCRUxLSU4gQ09NUE9ORU5UUwotCQkJCTUwMSBXRVNUIFdBTE5VVCBTVFJFRVQKLQkJCQlDT01QVE9OIENBIDkwMjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1CRSAgIChoZXgpCQlDaXR5LU5ldCBUZWNobm9sb2d5LCBJbmMuCi0wMDMwQkUgICAgIChiYXNlIDE2KQkJQ2l0eS1OZXQgVGVjaG5vbG9neSwgSW5jLgotCQkJCTEzNSBFLiBDaGVzbnV0IEF2ZS4sIFN0ZS4KLQkJCQlNb25yb3ZpYSBDQSA5MTAxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQkYgICAoaGV4KQkJTVVMVElEQVRBIEdNQkgKLTAwMzBCRiAgICAgKGJhc2UgMTYpCQlNVUxUSURBVEEgR01CSAotCQkJCUFMU0ZFTERFUiBTVFIuIDMKLQkJCQlELTY0Mjg5IERBUk1TVEFEVAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLUMwICAgKGhleCkJCUxhcmEgVGVjaG5vbG9neSwgSW5jLgotMDAzMEMwICAgICAoYmFzZSAxNikJCUxhcmEgVGVjaG5vbG9neSwgSW5jLgotCQkJCTIzNDUgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUMxICAgKGhleCkJCUhFV0xFVFQtUEFDS0FSRAotMDAzMEMxICAgICAoYmFzZSAxNikJCUhFV0xFVFQtUEFDS0FSRAotCQkJCTExMDAwIFdPTEZFIFJPQUQKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUMyICAgKGhleCkJCUNPTU9ORQotMDAzMEMyICAgICAoYmFzZSAxNikJCUNPTU9ORQotCQkJCVBhcmMgRGUgTWFydGljb3QKLQkJCQkzMzYxMCBDZXN0YXMgIAotCQkJCUZSQU5DRQotCi0wMC0zMC1DMyAgIChoZXgpCQlGTFVFQ0tJR0VSIEVMRUtUUk9OSUsgQUcKLTAwMzBDMyAgICAgKGJhc2UgMTYpCQlGTFVFQ0tJR0VSIEVMRUtUUk9OSUsgQUcKLQkJCQlLSVJDSEJBUkdTVFJBU1NFIDIwMQotCQkJCUNILTM0MDAgQlVSR0RPUkYKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTMwLUM0ICAgKGhleCkJCUNhbm9uIEltYWdpbmcgU3lzdGVtcyBJbmMuCi0wMDMwQzQgICAgIChiYXNlIDE2KQkJQ2Fub24gSW1hZ2luZyBTeXN0ZW1zIEluYy4KLQkJCQkxLTI0IFlvbmV5YW1hLCBDaHVvLWt1Ci0JCQkJTmlpZ2F0YS1zaGkgTmlpZ2F0YSA5NTAtMDkxNgotCQkJCUpBUEFOCi0KLTAwLTMwLUM1ICAgKGhleCkJCUNBREVOQ0UgREVTSUdOIFNZU1RFTVMKLTAwMzBDNSAgICAgKGJhc2UgMTYpCQlDQURFTkNFIERFU0lHTiBTWVNURU1TCi0JCQkJQ0FOQURBLCBMVEQuCi0JCQkJMjQwLTExMzAgTU9SUklTT04gRFJJVkUgT1RUQVdBLCBPTlRBUklPCi0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTMwLUM2ICAgKGhleCkJCUNPTlRST0wgU09MVVRJT05TLCBJTkMuCi0wMDMwQzYgICAgIChiYXNlIDE2KQkJQ09OVFJPTCBTT0xVVElPTlMsIElOQy4KLQkJCQkyMDEgODVUSCBBVkVOVUUgTlcKLQkJCQlNSU5ORUFQT0xJUyBNTiA1NTQzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQzcgICAoaGV4KQkJTWFjcm9tYXRlIENvcnAuCi0wMDMwQzcgICAgIChiYXNlIDE2KQkJTWFjcm9tYXRlIENvcnAuCi0JCQkJOEYsVW5pdmVyc2FsIENlbnRlcixOdW1iZXIgMTc5Ci0JCQkJU2VjLjEsVGEtVHVuZyBSb2FkLCBIc2ktQ2hpaAotCQkJCVRhaXBlaSBIc2llbiAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLUM4ICAgKGhleCkJCUdBRCBMSU5FLCBMVEQuCi0wMDMwQzggICAgIChiYXNlIDE2KQkJR0FEIExJTkUsIExURC4KLQkJCQlCRUlUIFJPS0FSIEhBUiBIT1RaVklNCi0JCQkJSkVSVVNBTEVNCi0JCQkJSVNSQUVMCi0KLTAwLTMwLUM5ICAgKGhleCkJCUx1eE4sIE4KLTAwMzBDOSAgICAgKGJhc2UgMTYpCQlMdXhOLCBOCi0JCQkJNTcwIE1hdWRlIENvdXJ0Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1DQSAgIChoZXgpCQlEaXNjb3ZlcnkgQ29tCi0wMDMwQ0EgICAgIChiYXNlIDE2KQkJRGlzY292ZXJ5IENvbQotCQkJCTQ5MzUgQ2VudHVyeSBTdHJlZXQKLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1DQiAgIChoZXgpCQlPTU5JIEZMT1cgQ09NUFVURVJTLCBJTkMuCi0wMDMwQ0IgICAgIChiYXNlIDE2KQkJT01OSSBGTE9XIENPTVBVVEVSUywgSU5DLgotCQkJCTEwNzAxIENPUlBPUkFURSBEUklWRS1TVEUuIzMwMAotCQkJCVNUQUZGT1JEIFRYIDc3NDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1DQyAgIChoZXgpCQlUZW5vciBOZXR3b3JrcywgSW5jLgotMDAzMENDICAgICAoYmFzZSAxNikJCVRlbm9yIE5ldHdvcmtzLCBJbmMuCi0JCQkJNTAgTmFnb2cgUGFyawotCQkJCUFjdG9uIE1BIDAxNzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1DRCAgIChoZXgpCQlDT05FWEFOVCBTWVNURU1TLCBJTkMuCi0wMDMwQ0QgICAgIChiYXNlIDE2KQkJQ09ORVhBTlQgU1lTVEVNUywgSU5DLgotCQkJCTQzMTEgSkFNQk9SRUUgUk9BRAotCQkJCU5FV1BPUlQgQkVBQ0ggQ0EgOTI2NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNFICAgKGhleCkJCVphZmZpcmUKLTAwMzBDRSAgICAgKGJhc2UgMTYpCQlaYWZmaXJlCi0JCQkJMjYzMCBPcmNoYXJkIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNC0yMDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1DRiAgIChoZXgpCQlUV08gVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDMwQ0YgICAgIChiYXNlIDE2KQkJVFdPIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTQxOSBTQVJHT04gV0FZCi0JCQkJSE9SU0hBTSBQQSAxOTA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRDAgICAoaGV4KQkJVGVsbGFicwotMDAzMEQwICAgICAoYmFzZSAxNikJCVRlbGxhYnMKLQkJCQkxNzUwIEZvdW5kZXIncyBQYXJrd2F5Ci0JCQkJU3VpdGUgMTAwCi0JCQkJQWxwaGFyZXR0YSBHQSAzMDAwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRDEgICAoaGV4KQkJSU5PVkEgQ09SUE9SQVRJT04KLTAwMzBEMSAgICAgKGJhc2UgMTYpCQlJTk9WQSBDT1JQT1JBVElPTgotCQkJCTExMCBBVk9OIFNUUkVFVAotCQkJCUNIQVJMT1RURVNWSUxFIFZBIDIyOTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1EMiAgIChoZXgpCQlXSU4gVEVDSE5PTE9HSUVTLCBDTy4sIExURC4KLTAwMzBEMiAgICAgKGJhc2UgMTYpCQlXSU4gVEVDSE5PTE9HSUVTLCBDTy4sIExURC4KLQkJCQk0Ri02LCBOby4gODEsIFNlYy4gMQotCQkJCUhzaW4gVGFpIFd1IFJvYWQsIEhzaS1DaGkKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtRDMgICAoaGV4KQkJQWdpbGVudCBUZWNobm9sb2dpZXMKLTAwMzBEMyAgICAgKGJhc2UgMTYpCQlBZ2lsZW50IFRlY2hub2xvZ2llcwotCQkJCTE1MDEgUGFnZSBNaWxsIFJvYWQKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDQtMTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRDQgICAoaGV4KQkJQUFFIFN5c3RlbXMsIEluYwotMDAzMEQ0ICAgICAoYmFzZSAxNikJCUFBRSBTeXN0ZW1zLCBJbmMKLQkJCQk2NDIgTm9ydGggUGFzdG9yaWEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1ENSAgIChoZXgpCQlEUmVzZWFyY2ggR21iSAotMDAzMEQ1ICAgICAoYmFzZSAxNikJCURSZXNlYXJjaCBHbWJICi0JCQkJT3R0by1TY2htaXJnYWwtU3RyLjMKLQkJCQkxMDMxOSBCZXJsaW4gIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtRDYgICAoaGV4KQkJTVNDIFZFUlRSSUVCUyBHTUJICi0wMDMwRDYgICAgIChiYXNlIDE2KQkJTVNDIFZFUlRSSUVCUyBHTUJICi0JCQkJSU5EVVNUUklFU1RSLiAxNgotCQkJCUQtNzYyOTcgU1RVVEVOU0VFCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMzAtRDcgICAoaGV4KQkJSW5ub3ZhdGl2ZSBTeXN0ZW1zLCBMLkwuQy4KLTAwMzBENyAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aXZlIFN5c3RlbXMsIEwuTC5DLgotCQkJCTEwMDAgSW5ub3ZhdGl2ZSBEcml2ZQotCQkJCU1pdGNoZWxsIFNEIDU3MzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1EOCAgIChoZXgpCQlTSVRFSwotMDAzMEQ4ICAgICAoYmFzZSAxNikJCVNJVEVLCi0JCQkJVklBIE1PTlRFIEZJT1JJTk8gOQotCQkJCTM3MDU3IC0gUy4gR0lPVkFOTkkgTFVQLiBWRVJPTkEKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTMwLUQ5ICAgKGhleCkJCURBVEFDT1JFIFNPRlRXQVJFIENPUlAuCi0wMDMwRDkgICAgIChiYXNlIDE2KQkJREFUQUNPUkUgU09GVFdBUkUgQ09SUC4KLQkJCQlDT1JQT1JBVEUgUEFSSwotCQkJCTYyNjEgTlcgNlRIIFdBWSAjMTEwCi0JCQkJRk9SVCBMQVVERVJEQUxFIEZMIDMzMzA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1EQSAgIChoZXgpCQlDT01UUkVORCBDTy4KLTAwMzBEQSAgICAgKGJhc2UgMTYpCQlDT01UUkVORCBDTy4KLQkJCQkzRi0xIDEwIExBTkUgNjA5IENIVU5HCi0JCQkJSFNJTiBST0FELCBTRUMgNSwgU0FOIENIVU5HIENJVFksIFRBSVBFSQotCQkJCVRBSVdBTiAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLURCICAgKGhleCkJCU1pbmRyZWFkeSBTb2x1dGlvbnMsIEluYy4KLTAwMzBEQiAgICAgKGJhc2UgMTYpCQlNaW5kcmVhZHkgU29sdXRpb25zLCBJbmMuCi0JCQkJMjgwMCBNYXJpZS1DdXJpZSBBdmVudWUKLQkJCQlTYWludC1MYXVyZW50Ci0JCQkJUXVlYmVjICBINFMgMkMyCi0JCQkJQ0FOQURBCi0KLTAwLTMwLURDICAgKGhleCkJCVJJR0hURUNIIENPUlBPUkFUSU9OCi0wMDMwREMgICAgIChiYXNlIDE2KQkJUklHSFRFQ0ggQ09SUE9SQVRJT04KLQkJCQk0RiwgTk8uIDM1MSwgQ0hVTkctU0hVTiBSRC4KLQkJCQlTRUMuIDIsIENIVU5HLUhPIENJVFkgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLUREICAgKGhleCkJCUlORElHSVRBIENPUlBPUkFUSU9OCi0wMDMwREQgICAgIChiYXNlIDE2KQkJSU5ESUdJVEEgQ09SUE9SQVRJT04KLQkJCQkzMCBDb3Jwb3JhdGUgUGFyayBEcml2ZQotCQkJCVN1aXRlIDMxMAotCQkJCUlydmluZSBDQSA5MjYwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtREUgICAoaGV4KQkJV0FHTyBLb250YWt0dGVjaG5payBHbWJICi0wMDMwREUgICAgIChiYXNlIDE2KQkJV0FHTyBLb250YWt0dGVjaG5payBHbWJICi0JCQkJSGFuc2FzdHJhc3NlIDI3Ci0JCQkJMzI0MjMgTWluZGVuICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLURGICAgKGhleCkJCUtCL1RFTCBURUxFQ09NVU5JQ0FDSU9ORVMKLTAwMzBERiAgICAgKGJhc2UgMTYpCQlLQi9URUwgVEVMRUNPTVVOSUNBQ0lPTkVTCi0JCQkJUy5BLiBERSBDLlYuCi0JCQkJVE9SUkUgVEVMTUVYIDQgIFBJU08sIFBMQVpBIENVSUNVSUxDTwotCQkJCU1leGljbyBDaXR5IDE0MDYwICAKLQkJCQlNRVhJQ08KLQotMDAtMzAtRTAgICAoaGV4KQkJT1hGT1JEIFNFTUlDT05EVUNUT1IgTFRELgotMDAzMEUwICAgICAoYmFzZSAxNikJCU9YRk9SRCBTRU1JQ09ORFVDVE9SIExURC4KLQkJCQkyNSBNSUxUT04gUEFSSwotCQkJCUFiaW5nZG9uIE94b24gT1gxNCA0U0gKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0zMC1FMSAgIChoZXgpCQlOZXR3b3JrIEVxdWlwbWVudCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMzBFMSAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIEVxdWlwbWVudCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk2OTAwIFBhc2VvIFBhZHJlIFBhcmt3YXkKLQkJCQlGcmVtb250IENBIDk0NTU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1FMiAgIChoZXgpCQlHQVJORVQgU1lTVEVNUyBDTy4sIExURC4KLTAwMzBFMiAgICAgKGJhc2UgMTYpCQlHQVJORVQgU1lTVEVNUyBDTy4sIExURC4KLQkJCQlTdW5nd29uIEJsZGcuIDU0NS03Ci0JCQkJRG9nb2stRG9uZywgS2FuZ25hbS1HdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtRTMgICAoaGV4KQkJU0VET05BIE5FVFdPUktTIENPUlAuCi0wMDMwRTMgICAgIChiYXNlIDE2KQkJU0VET05BIE5FVFdPUktTIENPUlAuCi0JCQkJMTBBIEhFQVJTVCBXQVkKLQkJCQlLQU5BVEEsICBPTlRBUklPCi0JCQkJQ0FOQURBIEsyTCAyUDQKLQkJCQlDQU5BREEKLQotMDAtMzAtRTQgICAoaGV4KQkJQ0hJWU9EQSBTWVNURU0gUklLRU4KLTAwMzBFNCAgICAgKGJhc2UgMTYpCQlDSElZT0RBIFNZU1RFTSBSSUtFTgotCQkJCTItNywgS0FOREEtTklTSElLSS1DSE8KLQkJCQlDSElZT0RBLUtVIFRPS1lPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0zMC1FNSAgIChoZXgpCQlBbXBlciBEYXRvcyBTLkEuCi0wMDMwRTUgICAgIChiYXNlIDE2KQkJQW1wZXIgRGF0b3MgUy5BLgotCQkJCUMvTWFyY29uaSBuKjMgIChQVE0pCi0JCQkJVHJlcyBDYW50b3MKLQkJCQkyODc2MCBNYWRyaWQgIAotCQkJCVNQQUlOCi0KLTAwLTMwLUU2ICAgKGhleCkJCURyYWVnZXIgTWVkaWNhbCBTeXN0ZW1zLCBJbmMuCi0wMDMwRTYgICAgIChiYXNlIDE2KQkJRHJhZWdlciBNZWRpY2FsIFN5c3RlbXMsIEluYy4KLQkJCQk2IFRlY2ggRHJpdmUKLQkJCQlBbmRvdmVyIE1BIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1FNyAgIChoZXgpCQlDTkYgTU9CSUxFIFNPTFVUSU9OUywgSU5DLgotMDAzMEU3ICAgICAoYmFzZSAxNikJCUNORiBNT0JJTEUgU09MVVRJT05TLCBJTkMuCi0JCQkJNzcyMiBFLiBHUkFZIFJPQUQKLQkJCQlTQ09UVFNEQUxFIEFaIDg1MjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1FOCAgIChoZXgpCQlFTlNJTSBDT1JQLgotMDAzMEU4ICAgICAoYmFzZSAxNikJCUVOU0lNIENPUlAuCi0JCQkJMTIxNSBUZXJyYSBCZWxsYSBBdmUuCi0JCQkJTW91bnRhaW52aWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1FOSAgIChoZXgpCQlHTUEgQ09NTVVOSUNBVElPTiBNQU5VRkFDVCdHCi0wMDMwRTkgICAgIChiYXNlIDE2KQkJR01BIENPTU1VTklDQVRJT04gTUFOVUZBQ1QnRwotCQkJCU1BUktFVElORywgKDE5OTEpIExURC4KLQkJCQkxMDIgSkFCVVRJTlNLSSBTVFJFRVQgS0lSWUFUIEFSSUUsIFBFVEFDCi0JCQkJSVNSQUVMIElTUkFFTCA0OTEzMAotCQkJCUlTUkFFTAotCi0wMC0zMC1FQSAgIChoZXgpCQlUZXJhRm9yY2UgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAzMEVBICAgICAoYmFzZSAxNikJCVRlcmFGb3JjZSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMTEwMCBFWEVDVVRJVkUgRFJJVkUKLQkJCQlSSUNIQVJEU09OIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1FQiAgIChoZXgpCQlUVVJCT05FVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAzMEVCICAgICAoYmFzZSAxNikJCVRVUkJPTkVUIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTlGLTEsIE5PLiAxNzEsIFNVTkctVEVIIFJPQUQKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtRUMgICAoaGV4KQkJQk9SR0FSRFQKLTAwMzBFQyAgICAgKGJhc2UgMTYpCQlCT1JHQVJEVAotCQkJCURJRVNFTFNUUi4gMTUKLQkJCQlENzE2NjUgVkFJSElOR0VOL0VOWgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLUVEICAgKGhleCkJCUV4cGVydCBNYWduZXRpY3MgQ29ycC4KLTAwMzBFRCAgICAgKGJhc2UgMTYpCQlFeHBlcnQgTWFnbmV0aWNzIENvcnAuCi0JCQkJMTIvRi4sIFVuaXQgRCwgTVRHIEJsZGcuLCAxLTMsIE5ha2FzZQotCQkJCU1paGFtYS1rdSwgQ2hpYmEtY2l0eSwgMjYxLTg1MDEgIAotCQkJCUpBUEFOCi0KLTAwLTMwLUVFICAgKGhleCkJCURTRyBUZWNobm9sb2d5LCBJbmMuCi0wMDMwRUUgICAgIChiYXNlIDE2KQkJRFNHIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk2Ri00IE5vLiAyNzAsIENod2lnIEhzaWFvCi0JCQkJRWFzdCBSb2FkLCBTZWMuIDQKLQkJCQkgVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLUVGICAgKGhleCkJCU5FT04gVEVDSE5PTE9HWSwgSU5DLgotMDAzMEVGICAgICAoYmFzZSAxNikJCU5FT04gVEVDSE5PTE9HWSwgSU5DLgotCQkJCTg1IFdFU1QgTU9OVEFHVUUgRVhQUkVTU1dBWQotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1GMCAgIChoZXgpCQlVbmlmb3JtIEluZHVzdHJpYWwgQ29ycC4KLTAwMzBGMCAgICAgKGJhc2UgMTYpCQlVbmlmb3JtIEluZHVzdHJpYWwgQ29ycC4KLQkJCQkxOEYsIDE3MSwgU2h1bmcgVGVoIFJvYWQKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtRjEgICAoaGV4KQkJQWNjdG9uIFRlY2hub2xvZ3kgQ29ycC4KLTAwMzBGMSAgICAgKGJhc2UgMTYpCQlBY2N0b24gVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLiAxLCBDcmVhdGlvbiBSZC4gSVYKLQkJCQlTLkcuWi5QCi0JCQkJSHNpbmNodSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1GMiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDMwRjIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRSAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgODUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUYzICAgKGhleCkJCUF0IFdvcmsgQ29tcHV0ZXJzCi0wMDMwRjMgICAgIChiYXNlIDE2KQkJQXQgV29yayBDb21wdXRlcnMKLQkJCQlQLk8uIEJveCA5NDcKLQkJCQlDb3J2YWxsaXMgT1IgOTczMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUY0ICAgKGhleCkJCVNUQVJET1QgVEVDSE5PTE9HSUVTCi0wMDMwRjQgICAgIChiYXNlIDE2KQkJU1RBUkRPVCBURUNITk9MT0dJRVMKLQkJCQk2ODIwLUggT1JBTkdFIFRIT1JQRSBBVkUuCi0JCQkJQlVFTkEgUEFSSyBDQSA5MDYyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRjUgICAoaGV4KQkJV2lsZCBMYWIuIEx0ZC4KLTAwMzBGNSAgICAgKGJhc2UgMTYpCQlXaWxkIExhYi4gTHRkLgotCQkJCTEtMzMtMTctNjA0IEhhcmF5YW1hCi0JCQkJVXJhd2EgQ2l0eSBTYWl0YW1hIHByaWYuIDMzNi0wOTMxIAotCQkJCUpBUEFOCi0KLTAwLTMwLUY2ICAgKGhleCkJCVNFQ1VSRUxPR0lYIENPUlBPUkFUSU9OCi0wMDMwRjYgICAgIChiYXNlIDE2KQkJU0VDVVJFTE9HSVggQ09SUE9SQVRJT04KLQkJCQkxMzc1MCBTQU4gUEVEUk8KLQkJCQlTQU4gQU5UT05JTyBUWCA3ODIzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRjcgICAoaGV4KQkJUkFNSVggSU5DLgotMDAzMEY3ICAgICAoYmFzZSAxNikJCVJBTUlYIElOQy4KLQkJCQkxNjcyIERPTkxPTiBTVFJFRVQKLQkJCQlWRU5UVVJBIENBIDkzMDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1GOCAgIChoZXgpCQlEeW5hcHJvIFN5c3RlbXMsIEluYy4KLTAwMzBGOCAgICAgKGJhc2UgMTYpCQlEeW5hcHJvIFN5c3RlbXMsIEluYy4KLQkJCQk4MDAgQ2FybGV0b24gQ291cnQKLQkJCQlBbm5hY2lzIElzbGFuZAotCQkJCU5ldyBXZXN0bWluc3RlciBCcml0aXNoIENvbHVtYmlhIFYzTSA2TDMgCi0JCQkJQ0FOQURBCi0KLTAwLTMwLUY5ICAgKGhleCkJCVNvbGxhZSBTeXN0ZW1zIENvLiwgTHRkLgotMDAzMEY5ICAgICAoYmFzZSAxNikJCVNvbGxhZSBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTYwNyBJbmNoZW8gSVQgVG93ZXIKLQkJCQk1OTItNSwgRG9od2EtMS1kb25nCi0JCQkJTmFtLWd1IEluY2hlb24gCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTMwLUZBICAgKGhleCkJCVRFTElDQSwgSU5DLgotMDAzMEZBICAgICAoYmFzZSAxNikJCVRFTElDQSwgSU5DLgotCQkJCTczNCBGT1JFU1QgU1RSRUVULCBCTERHLgotCQkJCVNVSVRFICMxMDAKLQkJCQlNQVJMQk9STyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRkIgICAoaGV4KQkJQVpTIFRlY2hub2xvZ3kgQUcKLTAwMzBGQiAgICAgKGJhc2UgMTYpCQlBWlMgVGVjaG5vbG9neSBBRwotCQkJCVN0ZWluYmVpc3N0cmFzc2UgMi00Ci0JCQkJNzI1MTAgU3RldHRlbiBBLksuTS4gIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtRkMgICAoaGV4KQkJVGVyYXdhdmUgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMzBGQyAgICAgKGJhc2UgMTYpCQlUZXJhd2F2ZSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTMwNjk1IEh1bnR3b29kIEF2ZW51ZQotCQkJCUhheXdhcmQgQ0EgOTQ1NDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUZEICAgKGhleCkJCUlOVEVHUkFURUQgU1lTVEVNUyBERVNJR04KLTAwMzBGRCAgICAgKGJhc2UgMTYpCQlJTlRFR1JBVEVEIFNZU1RFTVMgREVTSUdOCi0JCQkJMzY1MC1HIENFTlRSRSBDSVJDTEUgRFJJVkUKLQkJCQlGT1JUIE1JTEwgU0MgMjk3MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUZFICAgKGhleCkJCURTQSBHbWJICi0wMDMwRkUgICAgIChiYXNlIDE2KQkJRFNBIEdtYkgKLQkJCQlQYXNjYWxzdHIuIDI4Ci0JCQkJNTIwNzYgQWFjaGVuICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLUZGICAgKGhleCkJCURBVEFGQUIgU1lTVEVNUywgSU5DLgotMDAzMEZGICAgICAoYmFzZSAxNikJCURBVEFGQUIgU1lTVEVNUywgSU5DLgotCQkJCVJPT00gIzE5MTAsIDE5RiwgTk8uIDMzMwotCQkJCUtFRUxVTkcgUk9BRCBTRUMuIDEsIFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMy02QyAgIChoZXgpCQlTeW5hcFNlbnNlIENvcnBvcmF0aW9uCi0wMDMzNkMgICAgIChiYXNlIDE2KQkJU3luYXBTZW5zZSBDb3Jwb3JhdGlvbgotCQkJCTIzNjUgSXJvbiBQb2ludCBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlGb2xzb20gQ0EgOTU2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTM0LUYxICAgKGhleCkJCVJhZGljb20gUmVzZWFyY2gsIEluYy4KLTAwMzRGMSAgICAgKGJhc2UgMTYpCQlSYWRpY29tIFJlc2VhcmNoLCBJbmMuCi0JCQkJMjE0OCBCZXJpbmcgRHJpdmUKLQkJCQlTYW4gSm9zZSBDYSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzUtMzIgICAoaGV4KQkJRWxlY3Ryby1NZXRyaWNzIENvcnBvcmF0aW9uCi0wMDM1MzIgICAgIChiYXNlIDE2KQkJRWxlY3Ryby1NZXRyaWNzIENvcnBvcmF0aW9uCi0JCQkJMjMxIEVudGVycHJpc2UgUm9hZAotCQkJCUpvaG5zdG93biBOZXcgWW9yayAxMjA5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtM0EtOTggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAzQTk4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtM0EtOTkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAzQTk5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtM0EtOUEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAzQTlBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtM0EtOUIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAzQTlCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtM0EtOUMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAzQTlDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtM0EtOUQgICAoaGV4KQkJTkVDIEFjY2Vzc1RlY2huaWNhLCBMdGQuCi0wMDNBOUQgICAgIChiYXNlIDE2KQkJTkVDIEFjY2Vzc1RlY2huaWNhLCBMdGQuCi0JCQkJODAwIFNoaW1vbWF0YQotCQkJCUtha2VnYXdhIFNoaXp1b2thIDQzNi04NTAxCi0JCQkJSkFQQU4KLQotMDAtM0EtQUYgICAoaGV4KQkJQmx1ZUJpdCBMdGQuCi0wMDNBQUYgICAgIChiYXNlIDE2KQkJQmx1ZUJpdCBMdGQuCi0JCQkJVW5pdCBCLCAyMS9GLiwgNzggSHVuZyBUbyBSb2FkLAotCQkJCUt3dW4gVG9uZywgCi0JCQkJS293bG9vbiwgICAKLQkJCQlIT05HIEtPTkcKLQotMDAtM0MtQzUgICAoaGV4KQkJV09OV09PIEVuZ2luZWVyaW5nIENvLiwgTHRkCi0wMDNDQzUgICAgIChiYXNlIDE2KQkJV09OV09PIEVuZ2luZWVyaW5nIENvLiwgTHRkCi0JCQkJN0YgMjAxLCBUZWNobm8tUGFyayBTc2FuZ1lvbmcgSUlJLCAKLQkJCQkzNi0xIFNhbWplb25nLWRvbmcgT2plb25nLWd1LAotCQkJCUJ1Y2hlb24gQ2l0eSBHeWVvbmdnaS1EbyA0MjEtODA4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTNELTQxICAgKGhleCkJCUhhdHRlbGFuZCBDb21wdXRlciBBUwotMDAzRDQxICAgICAoYmFzZSAxNikJCUhhdHRlbGFuZCBDb21wdXRlciBBUwotCQkJCUFhbXNvc2VuCi0JCQkJTmVkcmUgVmF0cyBSb2dhbGFuZCA1NTc4Ci0JCQkJTk9SV0FZCi0KLTAwLTQwLTAwICAgKGhleCkJCVBDSSBDT01QT05FTlRFUyBEQSBBTVpPTklBIExURAotMDA0MDAwICAgICAoYmFzZSAxNikJCVBDSSBDT01QT05FTlRFUyBEQSBBTVpPTklBIExURAotCQkJCVJVQSBKT1NFRiBLUllTUwotCQkJCTEyOSAtIFNBTyBQQVVMTyAtIFNQCi0JCQkJMDExNDAgQlJBU0lMCi0JCQkJQlJBWklMCi0KLTAwLTQwLTAxICAgKGhleCkJCVpZWEVMIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDQwMDEgICAgIChiYXNlIDE2KQkJWllYRUwgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk0RiwgMTExLCBDSFVORyBTSEFOIE4uIFJPQUQKLQkJCQlTRUMgMiwgIFRBSVBFSQotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTAyICAgKGhleCkJCVBFUkxFIFNZU1RFTVMgTElNSVRFRAotMDA0MDAyICAgICAoYmFzZSAxNikJCVBFUkxFIFNZU1RFTVMgTElNSVRFRAotCQkJCTYwIFJFTkZSRVcgRFJJVkUKLQkJCQlNQVJLSEFNIE9OVEFSSU8KLQkJCQlDQU5BREEgTDNSIDBFMQotCQkJCUNBTkFEQQotCi0wMC00MC0wMyAgIChoZXgpCQlFbWVyc29uIFByb2Nlc3MgTWFuYWdlbWVudCBQb3dlciAmIFdhdGVyIFNvbHV0aW9ucywgSW5jLgotMDA0MDAzICAgICAoYmFzZSAxNikJCUVtZXJzb24gUHJvY2VzcyBNYW5hZ2VtZW50IFBvd2VyICYgV2F0ZXIgU29sdXRpb25zLCBJbmMuCi0JCQkJMjAwIEJldGEgRHJpdmUKLQkJCQlQSVRUU0JVUkdIIFBBIDE1MjM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0wNCAgIChoZXgpCQlJQ00gQ08uIExURC4KLTAwNDAwNCAgICAgKGJhc2UgMTYpCQlJQ00gQ08uIExURC4KLQkJCQk0LTItOSBOSUhPTkJBU0hJIE5BTklXQS1LVQotCQkJCU9TQUtBLCAoNTU2KQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtMDUgICAoaGV4KQkJQU5JIENPTU1VTklDQVRJT05TIElOQy4KLTAwNDAwNSAgICAgKGJhc2UgMTYpCQlBTkkgQ09NTVVOSUNBVElPTlMgSU5DLgotCQkJCTggQU5aSU8KLQkJCQlJUlZJTkUgQ0EgOTI3MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTA2ICAgKGhleCkJCVNBTVBPIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwNDAwNiAgICAgKGJhc2UgMTYpCQlTQU1QTyBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJMjYtMiBUSU5HLUhVLAotCQkJCVRBLUtBTkcgVFNVTiBLVUVJLVNIQU4gSFNJQU5HLCBUQU9ZVUFOIEgKLQkJCQkzMzMzNCBUQUlXQU4gMzMzMzQgVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtMDcgICAoaGV4KQkJVEVMTUFUIElORk9STUFUSVFVRQotMDA0MDA3ICAgICAoYmFzZSAxNikJCVRFTE1BVCBJTkZPUk1BVElRVUUKLQkJCQk2IFJVRSBERSBMJ0lORFVTVFJJRQotCQkJCUJQIDEyICA2ODM2MCBTT1VMVFoKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNDAtMDggICAoaGV4KQkJQSBQTFVTIElORk8gQ09SUE9SQVRJT04KLTAwNDAwOCAgICAgKGJhc2UgMTYpCQlBIFBMVVMgSU5GTyBDT1JQT1JBVElPTgotCQkJCTVGLCBOTy4yLCBMQU5FIDIzNQotCQkJCUJBTyBDSElBTyBST0FEIEhTSU4gVElFTiwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTA5ICAgKGhleCkJCVRBQ0hJQkFOQSBURUNUUk9OIENPLiwgTFRELgotMDA0MDA5ICAgICAoYmFzZSAxNikJCVRBQ0hJQkFOQSBURUNUUk9OIENPLiwgTFRELgotCQkJCVNZU1RFTUFUSUMgRVFVSVBNRU5UIERJVklTSU9OCi0JCQkJMi0yLTUgSElHQVNISVlBTUEsIE1FR1VST0tVIFRPS1lPLCAxNTMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTBBICAgKGhleCkJCVBJVk9UQUwgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDQwMEEgICAgIChiYXNlIDE2KQkJUElWT1RBTCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMDAgVy4gUklOQ09OIEFWRU5VRS1TVEUgIzIxMQotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0wQiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDQwMEIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTBDICAgKGhleCkJCUdFTkVSQUwgTUlDUk8gU1lTVEVNUywgSU5DLgotMDA0MDBDICAgICAoYmFzZSAxNikJCUdFTkVSQUwgTUlDUk8gU1lTVEVNUywgSU5DLgotCQkJCVAuTy4gQk9YIDM2ODkKLQkJCQlSQU5DSE8gQ1VDQU1PTkdBIENBIDkxNzI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0wRCAgIChoZXgpCQlMQU5ORVQgREFUQSBDT01NVU5JQ0FUSU9OUyxMVEQKLTAwNDAwRCAgICAgKGJhc2UgMTYpCQlMQU5ORVQgREFUQSBDT01NVU5JQ0FUSU9OUyxMVEQKLQkJCQlBVElESU0gVEVDSE5PTE9HJ0wgUEFSSywgQkcuIzMKLQkJCQlURUwgQVZJViA2MTEzMQotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC00MC0wRSAgIChoZXgpCQlNRU1PVEVDLCBJTkMuCi0wMDQwMEUgICAgIChiYXNlIDE2KQkJTUVNT1RFQywgSU5DLgotCQkJCTc3NTUgSGVucmktQm91cmFzc2EKLQkJCQlNT05UUkVBTCwgUVVFQkVDICAgSDRTIDFQNwotCQkJCUNBTkFEQQotCi0wMC00MC0wRiAgIChoZXgpCQlEQVRBQ09NIFRFQ0hOT0xPR0lFUwotMDA0MDBGICAgICAoYmFzZSAxNikJCURBVEFDT00gVEVDSE5PTE9HSUVTCi0JCQkJMTEwMDEgMzFTVCBQTEFDRSBXRVNUCi0JCQkJRVZFUkVUVCBXQSA5ODIwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMTAgICAoaGV4KQkJU09OSUMgU1lTVEVNUywgSU5DLgotMDA0MDEwICAgICAoYmFzZSAxNikJCVNPTklDIFNZU1RFTVMsIElOQy4KLQkJCQk1NzUgUEFTVE9SSUEgTk9SVEggQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMTEgICAoaGV4KQkJQU5ET1ZFUiBDT05UUk9MUyBDT1JQT1JBVElPTgotMDA0MDExICAgICAoYmFzZSAxNikJCUFORE9WRVIgQ09OVFJPTFMgQ09SUE9SQVRJT04KLQkJCQkzMDAgQlJJQ0tTVE9ORSBTUVVBUkUKLQkJCQlBTkRPVkVSIE1BIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xMiAgIChoZXgpCQlXSU5EQVRBLCBJTkMuCi0wMDQwMTIgICAgIChiYXNlIDE2KQkJV0lOREFUQSwgSU5DLgotCQkJCTEwIEJFQVJGT09UIFJPQUQKLQkJCQlOT1JUSEJPUk8gTUEgMDE1MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTEzICAgKGhleCkJCU5UVCBEQVRBIENPTU0uIFNZU1RFTVMgQ09SUC4KLTAwNDAxMyAgICAgKGJhc2UgMTYpCQlOVFQgREFUQSBDT01NLiBTWVNURU1TIENPUlAuCi0JCQkJREVWRUxPUE1FTlQgSEVBRFFVQVJURVJTCi0JCQkJVE9ZT1NVIENFTlRFUiBCTERHLiwgMy0zLTMgVE9ZT1NVLCBLT1RPLQotCQkJCVRPS1lPIDEzNSBUT0tZTyAxMzUgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0xNCAgIChoZXgpCQlDT01TT0ZUIEdNQkgKLTAwNDAxNCAgICAgKGJhc2UgMTYpCQlDT01TT0ZUIEdNQkgKLQkJCQlXQUNISEFVU1NUUi4gNUEKLQkJCQk3NTAwIEtBUkxTUlVIRSA0MQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLTE1ICAgKGhleCkJCUFTQ09NIElORlJBU1lTIEFHCi0wMDQwMTUgICAgIChiYXNlIDE2KQkJQVNDT00gSU5GUkFTWVMgQUcKLQkJCQlEUFQuIEVBU08gMzcyNgotCQkJCUdMVVRaLUJMT1RaSEVJTVNUUi4gMSBDSC00NTAzICBTT0xPVEhVUk4KLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTQwLTE2ICAgKGhleCkJCUFEQyAtIEdsb2JhbCBDb25uZWN0aXZpdHkgU29sdXRpb25zIERpdmlzaW9uCi0wMDQwMTYgICAgIChiYXNlIDE2KQkJQURDIC0gR2xvYmFsIENvbm5lY3Rpdml0eSBTb2x1dGlvbnMgRGl2aXNpb24KLQkJCQlQLk8uIEJveCAxMTAxCi0JCQkJTWlubmVhcG9saXMgTU4gNTU0NDAtMTEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMTcgICAoaGV4KQkJU2lsZXggVGVjaG5vbG9neSBBbWVyaWNhCi0wMDQwMTcgICAgIChiYXNlIDE2KQkJU2lsZXggVGVjaG5vbG9neSBBbWVyaWNhCi0JCQkJMTU3IFdlc3QgNzA2NSBTb3V0aAotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MDQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xOCAgIChoZXgpCQlBRE9CRSBTWVNURU1TLCBJTkMuCi0wMDQwMTggICAgIChiYXNlIDE2KQkJQURPQkUgU1lTVEVNUywgSU5DLgotCQkJCTE1ODUgQ0hBUkxFU1RPTiBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMTkgICAoaGV4KQkJQUVPTiBTWVNURU1TLCBJTkMuCi0wMDQwMTkgICAgIChiYXNlIDE2KQkJQUVPTiBTWVNURU1TLCBJTkMuCi0JCQkJODQwMSBXQVNISU5HVE9OIFBMQUNFIE5FCi0JCQkJQUxCVVFVRVJRVUUgTk0gODcxMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTFBICAgKGhleCkJCUZVSkkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDQwMUEgICAgIChiYXNlIDE2KQkJRlVKSSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQlORVcgWVVSQUtVQ0hPIEJMREcKLQkJCQkxMi0xIFlVUkFLVUNITyAxLUNIT01FIENISVlPREEtS1UsIFRPS1lPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0xQiAgIChoZXgpCQlQUklOVEVSIFNZU1RFTVMgQ09SUC4KLTAwNDAxQiAgICAgKGJhc2UgMTYpCQlQUklOVEVSIFNZU1RFTVMgQ09SUC4KLQkJCQkyMDcgUEVSUlkgUEFSS1dBWQotCQkJCUdBSVRIRVJTQlVSRyBNRCAyMDg3Ny0yMTQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xQyAgIChoZXgpCQlBU1QgUkVTRUFSQ0gsIElOQy4KLTAwNDAxQyAgICAgKGJhc2UgMTYpCQlBU1QgUkVTRUFSQ0gsIElOQy4KLQkJCQlNUyAyLTc4Ci0JCQkJMTYxNSBBTFRPTiBQQVJLV0FZCi0JCQkJSVJWSU5FIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xRCAgIChoZXgpCQlJTlZJU0lCTEUgU09GVFdBUkUsIElOQy4KLTAwNDAxRCAgICAgKGJhc2UgMTYpCQlJTlZJU0lCTEUgU09GVFdBUkUsIElOQy4KLQkJCQkxMTQyIENIRVNTIERSSVZFCi0JCQkJRk9TVEVSIENJVFkgQ0EgOTQ0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTFFICAgKGhleCkJCUlDQwotMDA0MDFFICAgICAoYmFzZSAxNikJCUlDQwotCQkJCTgyMzAgTU9OVEdPTUVSWSBST0FECi0JCQkJQ0lOQ0lOTkFUSSBPSCA0NTIzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMUYgICAoaGV4KQkJQ09MT1JHUkFQSCBMVEQKLTAwNDAxRiAgICAgKGJhc2UgMTYpCQlDT0xPUkdSQVBIIExURAotCQkJCVVOSVQgMiwgTUFSUyBIT1VTRQotCQkJCUNBTExFVkEgUEFSSywgQUxERVJNQVNUT04gTlIuIFJFQURJTkcsIEIKLQkJCQlSRzcgNFFXIC0gVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC0yMCAgIChoZXgpCQlURSBDb25uZWN0aXZpdHkgTHRkLgotMDA0MDIwICAgICAoYmFzZSAxNikJCVRFIENvbm5lY3Rpdml0eSBMdGQuCi0JCQkJS2lubWVsIFBhcmsKLQkJCQlCb2RlbHd5ZGRhbiBSSFlMIExMMTggNVRaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtMjEgICAoaGV4KQkJUkFTVEVSIEdSQVBISUNTCi0wMDQwMjEgICAgIChiYXNlIDE2KQkJUkFTVEVSIEdSQVBISUNTCi0JCQkJMjg1IE4uIFdPTEZFIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTIyICAgKGhleCkJCUtMRVZFUiBDT01QVVRFUlMsIElOQy4KLTAwNDAyMiAgICAgKGJhc2UgMTYpCQlLTEVWRVIgQ09NUFVURVJTLCBJTkMuCi0JCQkJMTAyOCBXLiBNQVVERSBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTIzICAgKGhleCkJCUxPR0lDIENPUlBPUkFUSU9OCi0wMDQwMjMgICAgIChiYXNlIDE2KQkJTE9HSUMgQ09SUE9SQVRJT04KLQkJCQkzLTE0LTEwIE1FSUpJLVNFSU1FSSBCVUlMRElORwotCQkJCU1JVEEgTUlOQVRPLUtVIFRPS1lPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0yNCAgIChoZXgpCQlDT01QQUMgSU5DLgotMDA0MDI0ICAgICAoYmFzZSAxNikJCUNPTVBBQyBJTkMuCi0JCQkJMTYtNyBOSUhPTkJBU0kgSEFNQUNITyAzLUNITwotCQkJCUNIVU8tS1UsIFRPS1lPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0yNSAgIChoZXgpCQlNT0xFQ1VMQVIgRFlOQU1JQ1MKLTAwNDAyNSAgICAgKGJhc2UgMTYpCQlNT0xFQ1VMQVIgRFlOQU1JQ1MKLQkJCQk4ODAgRUFTVCBBUlFVRVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2LTQ1MzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTI2ICAgKGhleCkJCUJ1ZmZhbG8sIEluYwotMDA0MDI2ICAgICAoYmFzZSAxNikJCUJ1ZmZhbG8sIEluYwotCQkJCU1FTENPIEhJLVRFQ0ggQ0VOVEVSLAotCQkJCTQtMTUgIFNoaWJhdGEsIEhvbmRvcmksIAotCQkJCU1JTkFNSS1LVSwgTkFHT1lBIEFpY2hpIDQ1Ny04NTIwCi0JCQkJSkFQQU4KLQotMDAtNDAtMjcgICAoaGV4KQkJU01DIE1BU1NBQ0hVU0VUVFMsIElOQy4KLTAwNDAyNyAgICAgKGJhc2UgMTYpCQlTTUMgTUFTU0FDSFVTRVRUUywgSU5DLgotCQkJCTI1IFdBTEtFUlMgQlJPT0sgRFJJVkUKLQkJCQlSRUFESU5HIE1BIDAxODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0yOCAgIChoZXgpCQlORVRDT01NIExJTUlURUQKLTAwNDAyOCAgICAgKGJhc2UgMTYpCQlORVRDT01NIExJTUlURUQKLQkJCQkzIE9MWU1QSUMgQlVTSU5FU1MgQ0VOVFJFCi0JCQkJUEFZQ09DS0UgUk9BRCBCQVNJTERPTiwgRVNTRVggU1MxNCAzRVgKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTI5ICAgKGhleCkJCUNPTVBFWAotMDA0MDI5ICAgICAoYmFzZSAxNikJCUNPTVBFWAotCQkJCUIuUC4gMzUKLQkJCQk3NDM3MSBQUklOR1ktRlJBTkNFCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTQwLTJBICAgKGhleCkJCUNBTk9HQS1QRVJLSU5TCi0wMDQwMkEgICAgIChiYXNlIDE2KQkJQ0FOT0dBLVBFUktJTlMKLQkJCQkyMTAxMiBMQVNTRU4gU1RSRUVUCi0JCQkJQ0hBVFNXT1JUSCBDQSA5MTMxMS00MjQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0yQiAgIChoZXgpCQlUUklHRU0gQ09NUFVURVIsIElOQy4KLTAwNDAyQiAgICAgKGJhc2UgMTYpCQlUUklHRU0gQ09NUFVURVIsIElOQy4KLQkJCQlLSVNVTkcgQi9EIDRGLCA3ODQtNgotCQkJCVlFT0tTQU0tRE9ORywgS0FOR05BTS1HVQotCQkJCVNFT1VMIEtPUkVBIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNDAtMkMgICAoaGV4KQkJSVNJUyBESVNUUklCVVRFRCBTWVNURU1TLCBJTkMuCi0wMDQwMkMgICAgIChiYXNlIDE2KQkJSVNJUyBESVNUUklCVVRFRCBTWVNURU1TLCBJTkMuCi0JCQkJMTExIFNPVVRIIENBWVVHQSBTVFJFRVQKLQkJCQlTVUlURSAjMjAwCi0JCQkJSVRIQUNBIE5ZIDE0ODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0yRCAgIChoZXgpCQlIQVJSSVMgQURBQ09NIENPUlBPUkFUSU9OCi0wMDQwMkQgICAgIChiYXNlIDE2KQkJSEFSUklTIEFEQUNPTSBDT1JQT1JBVElPTgotCQkJCTExMDAgVkVOVFVSRSBDT1VSVAotCQkJCUNBUlJPTExUT04gVFggNzUwMDYtNTQxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMkUgICAoaGV4KQkJUFJFQ0lTSU9OIFNPRlRXQVJFLCBJTkMuCi0wMDQwMkUgICAgIChiYXNlIDE2KQkJUFJFQ0lTSU9OIFNPRlRXQVJFLCBJTkMuCi0JCQkJNjAwIFMgRkVERVJBTCBIV1kgU1RFCi0JCQkJREVFUkZJRUxEIEJFQUNIIEZMIDMzNDQxLTQxOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTJGICAgKGhleCkJCVhMTlQgREVTSUdOUyBJTkMuCi0wMDQwMkYgICAgIChiYXNlIDE2KQkJWExOVCBERVNJR05TIElOQy4KLQkJCQkxNTA1MCBBVkVOVUUgT0YgU0NJRU5DRQotCQkJCVNVSVRFIDIwMAotCQkJCVNBTiBESUVHTyBDQSA5MjEyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMzAgICAoaGV4KQkJR0sgQ09NUFVURVIKLTAwNDAzMCAgICAgKGJhc2UgMTYpCQlHSyBDT01QVVRFUgotCQkJCUJBU0xFUiBTVFJBU1NFIDEwMwotCQkJCUQtNzgwMCBGUkVJQlVSRwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLTMxICAgKGhleCkJCUtPS1VTQUkgRUxFQ1RSSUMgQ08uLCBMVEQKLTAwNDAzMSAgICAgKGJhc2UgMTYpCQlLT0tVU0FJIEVMRUNUUklDIENPLiwgTFRECi0JCQkJMi0xIFlBU1VVQ0hJCi0JCQkJWUFUU1VPLU1BQ0hJIE5FSUdVTgotCQkJCVRPWUFNQSA5MzktMjMgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0zMiAgIChoZXgpCQlESUdJVEFMIENPTU1VTklDQVRJT05TCi0wMDQwMzIgICAgIChiYXNlIDE2KQkJRElHSVRBTCBDT01NVU5JQ0FUSU9OUwotCQkJCUFTU09DSUFURVMsIElOQy4KLQkJCQkyMDEwIEZPUlRVTkUgRFJJVkUsICMxMDEKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMzMgICAoaGV4KQkJQUREVFJPTiBURUNITk9MT0dZIENPLiwgTFRELgotMDA0MDMzICAgICAoYmFzZSAxNikJCUFERFRST04gVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQk0NjU2MCBGUkVNT05UIEJMVkQuICMzMDMKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zNCAgIChoZXgpCQlCVVNURUsgQ09SUE9SQVRJT04KLTAwNDAzNCAgICAgKGJhc2UgMTYpCQlCVVNURUsgQ09SUE9SQVRJT04KLQkJCQk0MTUxIEJVUlRPTiBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zNSAgIChoZXgpCQlPUENPTQotMDA0MDM1ICAgICAoYmFzZSAxNikJCU9QQ09NCi0JCQkJMTIxNSBXLiBDUk9TQlkgUkQuCi0JCQkJQ0FSUk9MTFRPTiBUWCA3NTAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMzYgICAoaGV4KQkJVFJJQkUgQ09NUFVURVIgV09SS1MsIElOQy4KLTAwNDAzNiAgICAgKGJhc2UgMTYpCQlUUklCRSBDT01QVVRFUiBXT1JLUywgSU5DLgotCQkJCTExOTUgUEFSSyBBVkVOVUUtU1RFICMyMTEKLQkJCQlFTUVSWVZJTExFIENBIDk0NjA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zNyAgIChoZXgpCQlTRUEtSUxBTiwgSU5DLgotMDA0MDM3ICAgICAoYmFzZSAxNikJCVNFQS1JTEFOLCBJTkMuCi0JCQkJMTQ2MDIgTk9SVEggVVMgSElHSFdBWSAjMzEKLQkJCQlDQVJNRUwgSU4gNDYwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTM4ICAgKGhleCkJCVRBTEVOVCBFTEVDVFJJQyBJTkNPUlBPUkFURUQKLTAwNDAzOCAgICAgKGJhc2UgMTYpCQlUQUxFTlQgRUxFQ1RSSUMgSU5DT1JQT1JBVEVECi0JCQkJM1JEIEZMLiwgTk8uIDI2MCwgUEEgVEVIIFJPQUQKLQkJCQlTRUMuIDIgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTM5ICAgKGhleCkJCU9QVEVDIERBSUlDSEkgREVOS08gQ08uLCBMVEQuCi0wMDQwMzkgICAgIChiYXNlIDE2KQkJT1BURUMgREFJSUNISSBERU5LTyBDTy4sIExURC4KLQkJCQlGSUJFUiBPUFRJQ1MgJiBURUxFQ09NLiBESVYuCi0JCQkJMy0xLTEgTUFSVU5PVUNISSBDSElZT0RBS1UgVE9LWU8gMTAwCi0JCQkJSkFQQU4KLQotMDAtNDAtM0EgICAoaGV4KQkJSU1QQUNUIFRFQ0hOT0xPR0lFUwotMDA0MDNBICAgICAoYmFzZSAxNikJCUlNUEFDVCBURUNITk9MT0dJRVMKLQkJCQk2IFJVRSBERSBMJ0FDQURJRQotCQkJCVouQS4gQ09VUlRBQk9FVUYgOTE5NTMgTEVTIFVMSVMgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNDAtM0IgICAoaGV4KQkJU1lORVJKRVQgSU5URVJOQVRJT05BTCBDT1JQLgotMDA0MDNCICAgICAoYmFzZSAxNikJCVNZTkVSSkVUIElOVEVSTkFUSU9OQUwgQ09SUC4KLQkJCQk1RiwgTk8gMzUsIEtVQU5HIEZVIFMuIFJPQUQKLQkJCQlUQUlQRUksCi0JCQkJVEFJV0FOIFIuIE8uIEMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC0zQyAgIChoZXgpCQlGT1JLUywgSU5DLgotMDA0MDNDICAgICAoYmFzZSAxNikJCUZPUktTLCBJTkMuCi0JCQkJMS0yNy00IElSSVlBLAotCQkJCUlSSVlBIDEtMjctNCBUQUlUTywKLQkJCQkxMTAgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0zRCAgIChoZXgpCQlURVJBREFUQQotMDA0MDNEICAgICAoYmFzZSAxNikJCVRFUkFEQVRBCi0JCQkJMTAwIE4uIFNFUFVMVkVEQSBCTFZELgotCQkJCUVMIFNFR1VORE8gQ0EgOTAyNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTNFICAgKGhleCkJCVJBU1RFUiBPUFMgQ09SUE9SQVRJT04KLTAwNDAzRSAgICAgKGJhc2UgMTYpCQlSQVNURVIgT1BTIENPUlBPUkFUSU9OCi0JCQkJMjUwMCBXQUxTSCBBVkVOVUUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtM0YgICAoaGV4KQkJU1NBTkdZT05HIENPTVBVVEVSIFNZU1RFTVMKLTAwNDAzRiAgICAgKGJhc2UgMTYpCQlTU0FOR1lPTkcgQ09NUFVURVIgU1lTVEVNUwotCQkJCUNPUlBPUkFUSU9OCi0JCQkJNjAtMSwgM0dBLCBDSFVOR01VLVJPLCBKVU5HLUdVIFNFT1VMCi0JCQkJS09SRUEgMTAwLTcwNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC00MC00MCAgIChoZXgpCQlSSU5HIEFDQ0VTUywgSU5DLgotMDA0MDQwICAgICAoYmFzZSAxNikJCVJJTkcgQUNDRVNTLCBJTkMuCi0JCQkJOTU3LVIgSU5EVVNUUklBTCBST0FECi0JCQkJU0FOIENBUkxPUyBDQSA5NDA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNDEgICAoaGV4KQkJRlVKSUtVUkEgTFRELgotMDA0MDQxICAgICAoYmFzZSAxNikJCUZVSklLVVJBIExURC4KLQkJCQkxLTUtMSwgS0lCQSwgS09UTy1LVQotCQkJCVRPS1lPIDEzNQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtNDIgICAoaGV4KQkJTi5BLlQuIEdNQkgKLTAwNDA0MiAgICAgKGJhc2UgMTYpCQlOLkEuVC4gR01CSAotCQkJCUdPRVRIRVNUUi4gMgotCQkJCTUyMTAgVFJPSVNET1JGLVNJRUdMQVIKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC00MyAgIChoZXgpCQlOb2tpYSBTaWVtZW5zIE5ldHdvcmtzIEdtYkggJiBDby4gS0cuCi0wMDQwNDMgICAgIChiYXNlIDE2KQkJTm9raWEgU2llbWVucyBOZXR3b3JrcyBHbWJIICYgQ28uIEtHLgotCQkJCVdlcm5lci12b24tU2llbWVucyBTdHIuIDItNgotCQkJCUJydWNoc2FsIEJhZGVuLVd1cnRlbWJlcmcgNzY2NDYKLQkJCQlGSU5MQU5ECi0KLTAwLTQwLTQ0ICAgKGhleCkJCVFOSVggQ09NUFVURVIgQ08uLCBMVEQuCi0wMDQwNDQgICAgIChiYXNlIDE2KQkJUU5JWCBDT01QVVRFUiBDTy4sIExURC4KLQkJCQk4LDlGIEtPUkVBTiBURUFDSEVSJ1MgTVVULkJMREcKLQkJCQkzNS0zLCBZRU9VSURPX0RPTkcsIFlFT05HREVVTkdQT19HVQotCQkJCVNFT1VMIEtPUkVBIDE1MC0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNDAtNDUgICAoaGV4KQkJVFdJTkhFQUQgQ09SUE9SQVRJT04KLTAwNDA0NSAgICAgKGJhc2UgMTYpCQlUV0lOSEVBRCBDT1JQT1JBVElPTgotCQkJCTE1MzcgQ0VOVFJFIFBPSU5URSBEUklWRQotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC00NiAgIChoZXgpCQlVREMgUkVTRUFSQ0ggTElNSVRFRAotMDA0MDQ2ICAgICAoYmFzZSAxNikJCVVEQyBSRVNFQVJDSCBMSU1JVEVECi0JCQkJOEEgS0lORyBXQU4gSU5EVVNUUklBTCBCTERHLgotCQkJCTU0IEhVTkcgVE8gUk9BRCwgS1dVTiBUT05HCi0JCQkJSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLTQwLTQ3ICAgKGhleCkJCVdJTkQgUklWRVIgU1lTVEVNUwotMDA0MDQ3ICAgICAoYmFzZSAxNikJCVdJTkQgUklWRVIgU1lTVEVNUwotCQkJCTEwMTAgQVRMQU5USUMgQVZFTlVFCi0JCQkJQUxBTUVEQSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNDggICAoaGV4KQkJU01EIElORk9STUFUSUNBIFMuQS4KLTAwNDA0OCAgICAgKGJhc2UgMTYpCQlTTUQgSU5GT1JNQVRJQ0EgUy5BLgotCQkJCUxBUkdPIE1PVklNRU5UTyBEQVMgRk9SQ0FTCi0JCQkJQVJNQURBUywgNCBBTEZSQUdJREUsICAyNzAwIEFNQURPUkEKLQkJCQlQT1JUVUdBTAotCQkJCVBPUlRVR0FMCi0KLTAwLTQwLTQ5ICAgKGhleCkJCVRFR0lNRU5UQSBBRwotMDA0MDQ5ICAgICAoYmFzZSAxNikJCVRFR0lNRU5UQSBBRwotCQkJCUZPUlJFTlNUUkFTU0UKLQkJCQlDSC02MzQzIFJPVEtSRVVaCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC00MC00QSAgIChoZXgpCQlXRVNUIEFVU1RSQUxJQU4gREVQQVJUTUVOVAotMDA0MDRBICAgICAoYmFzZSAxNikJCVdFU1QgQVVTVFJBTElBTiBERVBBUlRNRU5UCi0JCQkJT0YgRU1QTE9ZTUVOVCAoREVWRVQpCi0JCQkJTEVWRVIgMiwgMTUxIFJPWUFMIFNULiBFQVNUIFBFUlRIICA2MDAxCi0JCQkJV0VTVEVSTiBBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtNDAtNEIgICAoaGV4KQkJTUFQTEUgQ09NUFVURVIgU1lTVEVNUwotMDA0MDRCICAgICAoYmFzZSAxNikJCU1BUExFIENPTVBVVEVSIFNZU1RFTVMKLQkJCQlQLk8uIEJPWCAxMDA1MAotCQkJCVNULiBKT0hOJ1MsIE5GCi0JCQkJQ0FOQURBIEFMQSA0TDUKLQkJCQlDQU5BREEKLQotMDAtNDAtNEMgICAoaGV4KQkJSFlQRVJURUMgUFRZIExURC4KLTAwNDA0QyAgICAgKGJhc2UgMTYpCQlIWVBFUlRFQyBQVFkgTFRELgotCQkJCVAuTy4gQk9YIDE3ODIKLQkJCQlNQUNRVUFSSUUgQ0VOVFJFIE5TVywgMjExMwotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC00MC00RCAgIChoZXgpCQlURUxFQ09NTVVOSUNBVElPTlMgVEVDSE5JUVVFUwotMDA0MDREICAgICAoYmFzZSAxNikJCVRFTEVDT01NVU5JQ0FUSU9OUyBURUNITklRVUVTCi0JCQkJTS9TCi0JCQkJMjA0MDAgT0JTRVJWQVRJT04gRFJJVkUKLQkJCQlHRVJNQU5UT1dOIE1EIDIwODc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC00RSAgIChoZXgpCQlGTFVFTlQsIElOQy4KLTAwNDA0RSAgICAgKGJhc2UgMTYpCQlGTFVFTlQsIElOQy4KLQkJCQk1OTQgV09SQ0VTVEVSIFJPQUQtU1RFLiMzMDgKLQkJCQlOQVRJQ0sgTUEgMDE3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTRGICAgKGhleCkJCVNQQUNFICYgTkFWQUwgV0FSRkFSRSBTWVNURU1TCi0wMDQwNEYgICAgIChiYXNlIDE2KQkJU1BBQ0UgJiBOQVZBTCBXQVJGQVJFIFNZU1RFTVMKLQkJCQlOVVdDCi0JCQkJQ09ERSAyMjIyLCAgQkxERyAxMTcxLTMKLQkJCQlORVdQT1JUIFJJIDAyODQxLTUwNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTUwICAgKGhleCkJCUlST05JQ1MsIElOQ09SUE9SQVRFRAotMDA0MDUwICAgICAoYmFzZSAxNikJCUlST05JQ1MsIElOQ09SUE9SQVRFRAotCQkJCTc2NyBXQVJSRU4gUkQKLQkJCQlJVEhBQ0EgTi5ZLiAxNDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNTEgICAoaGV4KQkJR1JBQ0lMSVMsIElOQy4KLTAwNDA1MSAgICAgKGJhc2UgMTYpCQlHUkFDSUxJUywgSU5DLgotCQkJCTYyMyBQQUxBQ0UgU1RSRUVUCi0JCQkJQVVST1JBIElMIDYwNTA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC01MiAgIChoZXgpCQlTVEFSIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA0MDUyICAgICAoYmFzZSAxNikJCVNUQVIgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNTE1IFNIQVcgUk9BRAotCQkJCVNURVJMSU5HIFZBIDIyMDc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC01MyAgIChoZXgpCQlBTVBSTyBDT01QVVRFUlMKLTAwNDA1MyAgICAgKGJhc2UgMTYpCQlBTVBSTyBDT01QVVRFUlMKLQkJCQk5OTAgQUxNT05ET1IgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC01NCAgIChoZXgpCQlDT05ORUNUSU9OIE1BQ0hJTkVTIFNFUlZJQ0VTCi0wMDQwNTQgICAgIChiYXNlIDE2KQkJQ09OTkVDVElPTiBNQUNISU5FUyBTRVJWSUNFUwotCQkJCTEyIEhFTlNIQVcgU1RSRUVUCi0JCQkJV09CVVJOIE1BIDAxODAxLTQ2NjY2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNTUgICAoaGV4KQkJTUVUUk9OSVggR01CSAotMDA0MDU1ICAgICAoYmFzZSAxNikJCU1FVFJPTklYIEdNQkgKLQkJCQlORVVFIEtOT0NIRU5IQVVFUlNUUkFCRSA1Ci0JCQkJRC0zMzAwIEJSQVVOU0NIV0VJRwotCQkJCVdFU1QgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtNTYgICAoaGV4KQkJTUNNIEpBUEFOIExURC4KLTAwNDA1NiAgICAgKGJhc2UgMTYpCQlNQ00gSkFQQU4gTFRELgotCQkJCVNZVVVLQUVOIEJMRC4gMi0xMS0xCi0JCQkJS09NQVpBV0EgU0VUQUdBWUEtS1UgVE9LWU8gMTU0Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC01NyAgIChoZXgpCQlMT0NLSEVFRCAtIFNBTkRFUlMKLTAwNDA1NyAgICAgKGJhc2UgMTYpCQlMT0NLSEVFRCAtIFNBTkRFUlMKLQkJCQlEQU5JRUwgV0VCU1RFUiBISUdIV0FZIFNPVVRICi0JCQkJUC5PLiBCT1ggODY4Ci0JCQkJTkFTSFVBIE5IIDAzMDYxLTA4NjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTU4ICAgKGhleCkJCUtST05PUywgSU5DLgotMDA0MDU4ICAgICAoYmFzZSAxNikJCUtST05PUywgSU5DLgotCQkJCTQwMCBGSUZUSCBBVkVOVUUKLQkJCQlXQUxUSEFNIE1BIDAyMTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC01OSAgIChoZXgpCQlZT1NISURBIEtPR1lPIEsuIEsuCi0wMDQwNTkgICAgIChiYXNlIDE2KQkJWU9TSElEQSBLT0dZTyBLLiBLLgotCQkJCVRFQ0hOSUNBTCBSRVNFQVJDSCBERVBULgotCQkJCTIwMCBZT1NISURBIEtVUk9CRSBDSVRZIFRPWUFNQSBQUkVGLgotCQkJCTkzOSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTVBICAgKGhleCkJCUdPTERTVEFSIElORk9STUFUSU9OICYgQ09NTS4KLTAwNDA1QSAgICAgKGJhc2UgMTYpCQlHT0xEU1RBUiBJTkZPUk1BVElPTiAmIENPTU0uCi0JCQkJNTMzLCBIT0dBRS1ET05HLCBBTllBTkctU0hJCi0JCQkJS1lPTkdLSS1ETyA0MzAtMDgwCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNDAtNUIgICAoaGV4KQkJRlVOQVNTRVQgTElNSVRFRAotMDA0MDVCICAgICAoYmFzZSAxNikJCUZVTkFTU0VUIExJTUlURUQKLQkJCQlPUkNIQVJEUywgMTQgVE9XTlNFTkQKLQkJCQlTT01FUlNFVCBUQTE5IE9BVSBJTE1JTlNURVIKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTVDICAgKGhleCkJCUZVVFVSRSBTWVNURU1TLCBJTkMuCi0wMDQwNUMgICAgIChiYXNlIDE2KQkJRlVUVVJFIFNZU1RFTVMsIElOQy4KLQkJCQlST09NIDEwMiBET05HIEJBTkcgQi9ELAotCQkJCVlFT0cgU0FNLURPTkcgNzQwLTUsIEtBTkcgTkFNLUtVCi0JCQkJU0VPVUwgMTMwLTA4MCBTRU9VTCAxMzAtMDgwIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTQwLTVEICAgKGhleCkJCVNUQVItVEVLLCBJTkMuCi0wMDQwNUQgICAgIChiYXNlIDE2KQkJU1RBUi1URUssIElOQy4KLQkJCQk3MSBMWU1BTiBTVFJFRVQKLQkJCQlOT1JUSEJPUk8gTUEgMDE1MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTVFICAgKGhleCkJCU5PUlRIIEhJTExTIElTUkFFTAotMDA0MDVFICAgICAoYmFzZSAxNikJCU5PUlRIIEhJTExTIElTUkFFTAotCQkJCVAuTy4gQk9YIDEyODAKLQkJCQlZT0tORUFNIDIwNjkyCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTQwLTVGICAgKGhleCkJCUFGRSBDT01QVVRFUlMgTFRELgotMDA0MDVGICAgICAoYmFzZSAxNikJCUFGRSBDT01QVVRFUlMgTFRELgotCQkJCTYyIEFOQ0hPUkFHRSBST0FECi0JCQkJU1VUVE9OIENPTERGSUVMRCBXRVNUIE1JRExBTkRTIEI3NCAyUEcKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTYwICAgKGhleCkJCUNPTUVOREVDIExURAotMDA0MDYwICAgICAoYmFzZSAxNikJCUNPTUVOREVDIExURAotCQkJCUVOVEVSUFJJU0UgV0FZLAotCQkJCUFTVE9OIFNDSUVOQ0UgUEFSSywgQVNUT04gVFJJQU5HTEUKLQkJCQlCSVJNSU5HSEFNIEJJUk1JTkdIQU0gRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTYxICAgKGhleCkJCURBVEFURUNIIEVOVEVSUFJJU0VTIENPLiwgTFRELgotMDA0MDYxICAgICAoYmFzZSAxNikJCURBVEFURUNIIEVOVEVSUFJJU0VTIENPLiwgTFRELgotCQkJCShMSU4gS09VIElORFVTVFJJQUwgWk9ORSBTRUMsNAotCQkJCTI3LCBIU0ktU0hJSCBMQUtFIFJPQUQgS1VFSS1TSEFOIEhTSUFORwotCQkJCVRBT1lVQU4gQ09VTlRZIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTYyICAgKGhleCkJCUUtU1lTVEVNUywgSU5DLi9HQVJMQU5EIERJVi4KLTAwNDA2MiAgICAgKGJhc2UgMTYpCQlFLVNZU1RFTVMsIElOQy4vR0FSTEFORCBESVYuCi0JCQkJUC5PLiBCT1ggNjYwMDIzCi0JCQkJTUFJTCBTVE9QIDYzMDAwCi0JCQkJREFMTEFTIFRYIDc1MjY2LTAwMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTYzICAgKGhleCkJCVZJQSBURUNITk9MT0dJRVMsIElOQy4KLTAwNDA2MyAgICAgKGJhc2UgMTYpCQlWSUEgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNTAyMCBCUkFORElOIENPVVJUCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNjQgICAoaGV4KQkJS0xBIElOU1RSVU1FTlRTIENPUlBPUkFUSU9OCi0wMDQwNjQgICAgIChiYXNlIDE2KQkJS0xBIElOU1RSVU1FTlRTIENPUlBPUkFUSU9OCi0JCQkJMTYwIFJJTyBST0JMRVMKLQkJCQlTQU4gSk9TRSBDQSA5NTE2MS05MDU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC02NSAgIChoZXgpCQlHVEUgU1BBQ0VORVQKLTAwNDA2NSAgICAgKGJhc2UgMTYpCQlHVEUgU1BBQ0VORVQKLQkJCQkxNzAwIE9MRCBNRUFET1cgUk9BRAotCQkJCU1DTEVBTiBWQSAyMjEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNjYgICAoaGV4KQkJSElUQUNISSBDQUJMRSwgTFRELgotMDA0MDY2ICAgICAoYmFzZSAxNikJCUhJVEFDSEkgQ0FCTEUsIExURC4KLQkJCQlPUFRPIEVMRUNUUk9OSUMgU1lTVEVNIExBQgotCQkJCTg4MCBJU0FHT1pBVy1DSE8sIEhJVEFDSEktU0hJIElCQVJBS0ktS0UKLQkJCQkzMTktMTQgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC02NyAgIChoZXgpCQlPTU5JQllURSBDT1JQT1JBVElPTgotMDA0MDY3ICAgICAoYmFzZSAxNikJCU9NTklCWVRFIENPUlBPUkFUSU9OCi0JCQkJMjQ1IFdFU1QgUk9PU0VWRUxUIFJPQUQKLQkJCQlXRVNUIENISUNBR08gSUwgNjAxODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTY4ICAgKGhleCkJCUVYVEVOREVEIFNZU1RFTVMKLTAwNDA2OCAgICAgKGJhc2UgMTYpCQlFWFRFTkRFRCBTWVNURU1TCi0JCQkJNjEyMyBOT1JUSCBNRUVLRVIgQVZFTlVFCi0JCQkJQk9JU0UgSUQgODM3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTY5ICAgKGhleCkJCUxFTUNPTSBTWVNURU1TLCBJTkMuCi0wMDQwNjkgICAgIChiYXNlIDE2KQkJTEVNQ09NIFNZU1RFTVMsIElOQy4KLQkJCQkyMTA0IFdFU1QgUEVPUklBIEFWRU5VRQotCQkJCVBIT0VOSVggQVogODUwMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTZBICAgKGhleCkJCUtFTlRFSyBJTkZPUk1BVElPTiBTWVNURU1TLElOQwotMDA0MDZBICAgICAoYmFzZSAxNikJCUtFTlRFSyBJTkZPUk1BVElPTiBTWVNURU1TLElOQwotCQkJCTI5NDUgV0lMREVSTkVTUyBQTEFDRQotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTZCICAgKGhleCkJCVNZU0dFTgotMDA0MDZCICAgICAoYmFzZSAxNikJCVNZU0dFTgotCQkJCTU1NiBHSUJSQUxUQVIgRFJJVkUKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNkMgICAoaGV4KQkJQ09QRVJOSVFVRQotMDA0MDZDICAgICAoYmFzZSAxNikJCUNPUEVSTklRVUUKLQkJCQk2LCBNQUlMIERFIEwnRVVST1BFIEJQIDI1Ci0JCQkJNzgxNzAgTEEgQ0VMTEUtU0FJTlQtQ0xPVUQKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNDAtNkQgICAoaGV4KQkJTEFOQ08sIElOQy4KLTAwNDA2RCAgICAgKGJhc2UgMTYpCQlMQU5DTywgSU5DLgotCQkJCTgwMCBXRVNUIEFJUlBPUlQgRlJFRVdBWQotCQkJCVNVSVRFICMxMTAwCi0JCQkJSVJWSU5HIFRYIDc1MDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC02RSAgIChoZXgpCQlDT1JPTExBUlksIElOQy4KLTAwNDA2RSAgICAgKGJhc2UgMTYpCQlDT1JPTExBUlksIElOQy4KLQkJCQkyODAyIEtFTFZJTgotCQkJCUlSVklORSBDQSA5MjcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNkYgICAoaGV4KQkJU1lOQyBSRVNFQVJDSCBJTkMuCi0wMDQwNkYgICAgIChiYXNlIDE2KQkJU1lOQyBSRVNFQVJDSCBJTkMuCi0JCQkJNyBTVFVERUJBS0VSCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC03MCAgIChoZXgpCQlJTlRFUldBUkUgQ08uLCBMVEQuCi0wMDQwNzAgICAgIChiYXNlIDE2KQkJSU5URVJXQVJFIENPLiwgTFRELgotCQkJCTdGIEtVREFOIE5FVyBDRU5UUkFMIEJMREcuLAotCQkJCTEtNC01IEtVREFOLUtJVEEsIENISVlPREEtS1UKLQkJCQlUT0tZTyAxMDIgVE9LWU8gMTAyIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtNzEgICAoaGV4KQkJQVRNIENPTVBVVEVSIEdNQkgKLTAwNDA3MSAgICAgKGJhc2UgMTYpCQlBVE0gQ09NUFVURVIgR01CSAotCQkJCUJVQ0tMRVNUUi4gMS01LFBPU1RGQUNIIDEwMTA0MwotCQkJCUQ3NzUwIEtPTlNUQU5aCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtNzIgICAoaGV4KQkJQXBwbGllZCBJbm5vdmF0aW9uIEluYy4KLTAwNDA3MiAgICAgKGJhc2UgMTYpCQlBcHBsaWVkIElubm92YXRpb24gSW5jLgotCQkJCTU4MDAgSW5ub3ZhdGlvbiBEcml2ZQotCQkJCUR1YmxpbiBPSCA0MzAxNi0zMjcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC03MyAgIChoZXgpCQlCQVNTIEFTU09DSUFURVMKLTAwNDA3MyAgICAgKGJhc2UgMTYpCQlCQVNTIEFTU09DSUFURVMKLQkJCQk0MzUgVEFTU08gU1RSRUVULCBTVEUuICMzMjUKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTc0ICAgKGhleCkJCUNBQkxFIEFORCBXSVJFTEVTUwotMDA0MDc0ICAgICAoYmFzZSAxNikJCUNBQkxFIEFORCBXSVJFTEVTUwotCQkJCUNPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTkxOSBHQUxMT1dTIFJPQUQKLQkJCQlWSUVOTkEgVkEgMjIxODItMzk2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNzUgICAoaGV4KQkJTS1UUkFERSAoVUspIExURAotMDA0MDc1ICAgICAoYmFzZSAxNikJCU0tVFJBREUgKFVLKSBMVEQKLQkJCQkxMS0xMiBOT1JUSEZJRUxEIFBST1NQRUNUCi0JCQkJUFVUTkVZIEJSSURHRSBST0FEIExPTkRPTiBTVzE4IDFIUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtNzYgICAoaGV4KQkJU3VuIENvbnZlcnNpb24gVGVjaG5vbG9naWVzCi0wMDQwNzYgICAgIChiYXNlIDE2KQkJU3VuIENvbnZlcnNpb24gVGVjaG5vbG9naWVzCi0JCQkJMTAwIENvbW1lcmNlIEJvdWxldmFyZAotCQkJCVF1YWtlcnRvd24gUEEgNzg5NTEtMjIzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNzcgICAoaGV4KQkJTUFYVE9OIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwNDA3NyAgICAgKGJhc2UgMTYpCQlNQVhUT04gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCTRGSywgMjQ5LCBTRUMuIDMsCi0JCQkJQ0hVTkcgSFNJQU8gRS4gUkQuLCBUQUlQRUkKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTc4ICAgKGhleCkJCVdFQVJORVMgQVVUT01BVElPTiBQVEUgTFRECi0wMDQwNzggICAgIChiYXNlIDE2KQkJV0VBUk5FUyBBVVRPTUFUSU9OIFBURSBMVEQKLQkJCQk4MDEgTE9ST05HIDcsIFRPQSBQQVlPSAotCQkJCVNJTkdBUE9SRSAxMjMxCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTQwLTc5ICAgKGhleCkJCUpVS08gTUFOVUZBQ1RVUkUgQ09NUEFOWSwgTFRELgotMDA0MDc5ICAgICAoYmFzZSAxNikJCUpVS08gTUFOVUZBQ1RVUkUgQ09NUEFOWSwgTFRELgotCQkJCUZMQVQgQywgM1JEIEZMT09SLCBDRFcgQkxERy4KLQkJCQkzODggQ0FTVExFIFBFQUsgUk9BRCwgVFNVRU4gV0FOLCBOLlQuCi0JCQkJSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLTQwLTdBICAgKGhleCkJCVNPQ0lFVEUgRCdFWFBMT0lUQVRJT04gRFUgQ05JVAotMDA0MDdBICAgICAoYmFzZSAxNikJCVNPQ0lFVEUgRCdFWFBMT0lUQVRJT04gRFUgQ05JVAotCQkJCTIgR0xBQ0UgREUgTEEgREVGRU5TRSA5MjA1MwotCQkJCVBBUklTLUxBLURFRkVOU0UKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNDAtN0IgICAoaGV4KQkJU0NJRU5USUZJQyBBVExBTlRBCi0wMDQwN0IgICAgIChiYXNlIDE2KQkJU0NJRU5USUZJQyBBVExBTlRBCi0JCQkJSW5mb3JtYXRpb24gVGVjaG5vbG9neQotCQkJCTQzMTEgQ29tbXVuaWNhdGlvbnMgRHJpdmUgTWFpbCBDb2RlOiAgMzAKLQkJCQlOb3Jjcm9zcyBHQSAzMDA5MS02ODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC03QyAgIChoZXgpCQlRVU1FIENPUlBPUkFUSU9OCi0wMDQwN0MgICAgIChiYXNlIDE2KQkJUVVNRSBDT1JQT1JBVElPTgotCQkJCTUwMCBZT1NFTUlURSBEUklWRSwgTS9TLTI5Ci0JCQkJTUlMUElUQVMgQ0EgOTUwMzUtNTQyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtN0QgICAoaGV4KQkJRVhURU5TSU9OIFRFQ0hOT0xPR1kgQ09SUC4KLTAwNDA3RCAgICAgKGJhc2UgMTYpCQlFWFRFTlNJT04gVEVDSE5PTE9HWSBDT1JQLgotCQkJCTMwIEhPTExJUyBTVFJFRVQKLQkJCQlGUkFNSU5HSEFNIE1BIDAxNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC03RSAgIChoZXgpCQlFVkVSR1JFRU4gU1lTVEVNUywgSU5DLgotMDA0MDdFICAgICAoYmFzZSAxNikJCUVWRVJHUkVFTiBTWVNURU1TLCBJTkMuCi0JCQkJMTIwIExBTkRJTkcgQ09VUlQtU1VJVEUKLQkJCQlOT1ZBVE8gQ0EgOTQ5NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTdGICAgKGhleCkJCUZMSVIgU3lzdGVtcwotMDA0MDdGICAgICAoYmFzZSAxNikJCUZMSVIgU3lzdGVtcwotCQkJCUJPWCAzCi0JCQkJMTgyLTExICBEQU5ERVJZRAotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC00MC04MCAgIChoZXgpCQlBVEhFTklYIENPUlBPUkFUSU9OCi0wMDQwODAgICAgIChiYXNlIDE2KQkJQVRIRU5JWCBDT1JQT1JBVElPTgotCQkJCTY3NSBBTE1BTk9SIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtODEgICAoaGV4KQkJTUFOTkVTTUFOTiBTQ0FOR1JBUEhJQyBHTUJICi0wMDQwODEgICAgIChiYXNlIDE2KQkJTUFOTkVTTUFOTiBTQ0FOR1JBUEhJQyBHTUJICi0JCQkJUklTU0VORVIgU1RSQVNTRSAxMTItMTE0Ci0JCQkJVy0yMDAwIFdFREVMCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtODIgICAoaGV4KQkJTEFCT1JBVE9SWSBFUVVJUE1FTlQgQ09SUC4KLTAwNDA4MiAgICAgKGJhc2UgMTYpCQlMQUJPUkFUT1JZIEVRVUlQTUVOVCBDT1JQLgotCQkJCTEtNy0zIE1JTkFUT01BQ0hJCi0JCQkJVFVDSElVUkEtQ0lUWSBJQkFSQUdJLUtFTiwKLQkJCQkzMDAgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC04MyAgIChoZXgpCQlUREEgSU5EVVNUUklBIERFIFBST0RVVE9TCi0wMDQwODMgICAgIChiYXNlIDE2KQkJVERBIElORFVTVFJJQSBERSBQUk9EVVRPUwotCQkJCUVMRVRST05JQ09TIFMuQS4KLQkJCQlSVUUgQUdPU1RJTk8gVE9HTkVSSSwgOTIgMDQ2OTAgLSBTQU8gUEFVCi0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLTQwLTg0ICAgKGhleCkJCUhPTkVZV0VMTCBBQ1MKLTAwNDA4NCAgICAgKGJhc2UgMTYpCQlIT05FWVdFTEwgQUNTCi0JCQkJCi0JCQkJNTEyIFZpcmdpbmlhIERyaXZlCi0JCQkJRm9ydCBXYXNoaW5ndG9uIFBBIDE5MDM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC04NSAgIChoZXgpCQlTQUFCIElOU1RSVU1FTlRTIEFCCi0wMDQwODUgICAgIChiYXNlIDE2KQkJU0FBQiBJTlNUUlVNRU5UUyBBQgotCQkJCVAuTy4gQk9YIDEwMTcKLQkJCQlTLTU1MSAxMSBKT05LT1BJTkcKLQkJCQlTV0VERU4KLQotMDAtNDAtODYgICAoaGV4KQkJTUlDSEVMUyAmIEtMRUJFUkhPRkYgQ09NUFVURVIKLTAwNDA4NiAgICAgKGJhc2UgMTYpCQlNSUNIRUxTICYgS0xFQkVSSE9GRiBDT01QVVRFUgotCQkJCUdBVEhFIDExNwotCQkJCTU2MDAgV1VQUEVSVEFMIDEKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC04NyAgIChoZXgpCQlVQklUUkVYIENPUlBPUkFUSU9OCi0wMDQwODcgICAgIChiYXNlIDE2KQkJVUJJVFJFWCBDT1JQT1JBVElPTgotCQkJCTE5VEggRkxPT1IsIDE1NSBDQVJMVE9OIFNUUkVFVAotCQkJCVdJTk5JUEVHLCBNQU5JVE9CQQotCQkJCUNBTkFEQSBSM0MgM0g4Ci0JCQkJQ0FOQURBCi0KLTAwLTQwLTg4ICAgKGhleCkJCU1PQklVUyBURUNITk9MT0dJRVMsIElOQy4KLTAwNDA4OCAgICAgKGJhc2UgMTYpCQlNT0JJVVMgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNTgzNSBET1lMRSBTVFJFRVQKLQkJCQlFTUVSWVZJTExFIENBIDk0NjA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC04OSAgIChoZXgpCQlNRUlERU5TSEEgQ09SUE9SQVRJT04KLTAwNDA4OSAgICAgKGJhc2UgMTYpCQlNRUlERU5TSEEgQ09SUE9SQVRJT04KLQkJCQlGQUNUT1JZIE5PLjQsIDUxNSBLQU1JTkFLQU1JWk8KLQkJCQlISUdBU0hJIE1BS0FETyBOVU1BWlUtQ0lUWSBTSElaVU9LQS1QUkVGCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC04QSAgIChoZXgpCQlUUFMgVEVMRVBST0NFU1NJTkcgU1lTLiBHTUJICi0wMDQwOEEgICAgIChiYXNlIDE2KQkJVFBTIFRFTEVQUk9DRVNTSU5HIFNZUy4gR01CSAotCQkJCVNDSFdBREVSTVVDSExTVFJBU1NFIDQtOAotCQkJCVctODUwMSBDQURPTFpCVVJHCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtOEIgICAoaGV4KQkJUkFZTEFOIENPUlBPUkFUSU9OCi0wMDQwOEIgICAgIChiYXNlIDE2KQkJUkFZTEFOIENPUlBPUkFUSU9OCi0JCQkJMTIwIElOREVQRU5ERU5DRSBEUklWRQotCQkJCU1FTkxPIFBBUksgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLThDICAgKGhleCkJCUFYSVMgQ09NTVVOSUNBVElPTlMgQUIKLTAwNDA4QyAgICAgKGJhc2UgMTYpCQlBWElTIENPTU1VTklDQVRJT05TIEFCCi0JCQkJU0NIRUVMRVZBR0VOIDE2Ci0JCQkJUy0yMjMgNzAgTFVORAotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC00MC04RCAgIChoZXgpCQlUSEUgR09PRFlFQVIgVElSRSAmIFJVQkJFUiBDTy4KLTAwNDA4RCAgICAgKGJhc2UgMTYpCQlUSEUgR09PRFlFQVIgVElSRSAmIFJVQkJFUiBDTy4KLQkJCQkxMTQ0IEVBU1QgTUFSS0VUIFNUUkVFVAotCQkJCUFLUk9OIE9IIDQ0MzE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC04RSAgIChoZXgpCQlESUdJTE9HLCBJTkMuCi0wMDQwOEUgICAgIChiYXNlIDE2KQkJRElHSUxPRywgSU5DLgotCQkJCTIzNjAgTUFSWUxBTkQgUk9BRAotCQkJCVdJTExPVyBHUk9WRSBQQSAxOTA5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOEYgICAoaGV4KQkJV00tREFUQSBNSU5GTyBBQgotMDA0MDhGICAgICAoYmFzZSAxNikJCVdNLURBVEEgTUlORk8gQUIKLQkJCQlPTE9GIEFTS0xVTkRTIEdBVEEgMTQKLQkJCQlCT1ggMjA2NSA0MjEgMDIgR09URUJPUkcKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtNDAtOTAgICAoaGV4KQkJQU5TRUwgQ09NTVVOSUNBVElPTlMKLTAwNDA5MCAgICAgKGJhc2UgMTYpCQlBTlNFTCBDT01NVU5JQ0FUSU9OUwotCQkJCTE3MDEgSlVOQ1RJT04gQ09VUlQKLQkJCQlTQU4gSk9TRSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOTEgICAoaGV4KQkJUFJPQ09NUCBJTkRVU1RSSUEgRUxFVFJPTklDQQotMDA0MDkxICAgICAoYmFzZSAxNikJCVBST0NPTVAgSU5EVVNUUklBIEVMRVRST05JQ0EKLQkJCQlBVi4gS0VOS0lUSSBTSU1PTU9UTywgNzY3Ci0JCQkJMDUzNDcgLSBTQU8gUEFVTE8gLyBTUAotCQkJCUJSQVpJTAotCQkJCUJSQVpJTAotCi0wMC00MC05MiAgIChoZXgpCQlBU1AgQ09NUFVURVIgUFJPRFVDVFMsIElOQy4KLTAwNDA5MiAgICAgKGJhc2UgMTYpCQlBU1AgQ09NUFVURVIgUFJPRFVDVFMsIElOQy4KLQkJCQkxNjAgU0FOIEdBQlJJRUwgRFJJVkUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTkzICAgKGhleCkJCVBBWERBVEEgTkVUV09SS1MgTFRELgotMDA0MDkzICAgICAoYmFzZSAxNikJCVBBWERBVEEgTkVUV09SS1MgTFRELgotCQkJCUNPTU1VTklDQVRJT05TIEhPVVNFLAotCQkJCUZST0dNT1JFIFJPQUQgSEVNRUwgSEVNUFNURUFELCBIRVJUUyBIUDMKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtOTQgICAoaGV4KQkJU0hPR1JBUEhJQ1MsIElOQy4KLTAwNDA5NCAgICAgKGJhc2UgMTYpCQlTSE9HUkFQSElDUywgSU5DLgotCQkJCTE4OTAgTi4gU0hPUkVMSU5FIEJMVkQuCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOTUgICAoaGV4KQkJUi5QLlQuIElOVEVSR1JPVVBTIElOVCdMIExURC4KLTAwNDA5NSAgICAgKGJhc2UgMTYpCQlSLlAuVC4gSU5URVJHUk9VUFMgSU5UJ0wgTFRELgotCQkJCTlGLCA1MCBNSU4gQ0hVQU4gUkQKLQkJCQlIU0lOIFRJRU4sIFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC05NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDQwOTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOTcgICAoaGV4KQkJREFURVggRElWSVNJT04gT0YKLTAwNDA5NyAgICAgKGJhc2UgMTYpCQlEQVRFWCBESVZJU0lPTiBPRgotCQkJCUlOU1RSVU1FTlRBUklVTSBDT1JQLgotCQkJCVAuTy4gQk9YIDQ0NiwgU0YtMDAxMDEgSEVMU0lOS0kKLQkJCQlGSU5MQU5ECi0JCQkJRklOTEFORAotCi0wMC00MC05OCAgIChoZXgpCQlEUkVTU0xFUiBHTUJIICYgQ08uCi0wMDQwOTggICAgIChiYXNlIDE2KQkJRFJFU1NMRVIgR01CSCAmIENPLgotCQkJCUtBQ0tFUlRTVFJBU1NFIDEwCi0JCQkJRC01MjA3MiBBQUNIRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC05OSAgIChoZXgpCQlORVdHRU4gU1lTVEVNUyBDT1JQLgotMDA0MDk5ICAgICAoYmFzZSAxNikJCU5FV0dFTiBTWVNURU1TIENPUlAuCi0JCQkJMTc1ODAgTkVXSE9QRSBTVFJFRVQKLQkJCQlGT1VOVEFJTiBWQUxMRVkgQ0EgOTI3MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTlBICAgKGhleCkJCU5FVFdPUksgRVhQUkVTUywgSU5DLgotMDA0MDlBICAgICAoYmFzZSAxNikJCU5FVFdPUksgRVhQUkVTUywgSU5DLgotCQkJCTIyMDAgR1JFRU4gUk9BRCAtIFNURQotCQkJCUFOTiBBUkJPUiBNSSA0ODE3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOUIgICAoaGV4KQkJSEFMIENPTVBVVEVSIFNZU1RFTVMgSU5DLgotMDA0MDlCICAgICAoYmFzZSAxNikJCUhBTCBDT01QVVRFUiBTWVNURU1TIElOQy4KLQkJCQkxMzE1IERFTEwgQVZFTlVFCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTlDICAgKGhleCkJCVRSQU5TV0FSRQotMDA0MDlDICAgICAoYmFzZSAxNikJCVRSQU5TV0FSRQotCQkJCTIxLCBSVUUgRFUgOCBNQUkgMTk0NQotCQkJCTk0MTEwNyBBUkNVRUlMCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTQwLTlEICAgKGhleCkJCURJR0lCT0FSRCwgSU5DLgotMDA0MDlEICAgICAoYmFzZSAxNikJCURJR0lCT0FSRCwgSU5DLgotCQkJCTY0MDAgRkxZSU5HIENMT1VEIERSSVZFCi0JCQkJRURFTiBQUkFJUklFIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC05RSAgIChoZXgpCQlDT05DVVJSRU5UIFRFQ0hOT0xPR0lFUyAgTFRELgotMDA0MDlFICAgICAoYmFzZSAxNikJCUNPTkNVUlJFTlQgVEVDSE5PTE9HSUVTICBMVEQuCi0JCQkJNjU0IFRIRSBDUkVTQ0VOVAotCQkJCUNPTENIRVNURVIgQlVTSU5FU1MgUEFSSyBDT0xDSEVTVEVSLCBFU1MKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTlGICAgKGhleCkJCVRlbGNvIFN5c3RlbXMsIEluYy4gCi0wMDQwOUYgICAgIChiYXNlIDE2KQkJVGVsY28gU3lzdGVtcywgSW5jLiAKLQkJCQkxNSBCZXJrc2hpcmUgUm9hZAotCQkJCU1hbnNmaWVsZCwgTUEgMDIwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUEwICAgKGhleCkJCUdPTERTVEFSIENPLiwgTFRELgotMDA0MEEwICAgICAoYmFzZSAxNikJCUdPTERTVEFSIENPLiwgTFRELgotCQkJCTYgR0EgM0IgTVVOTEFFIFlFT05HREVVTkdQTwotCQkJCVNFT1VMCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNDAtQTEgICAoaGV4KQkJRVJHTyBDT01QVVRJTkcKLTAwNDBBMSAgICAgKGJhc2UgMTYpCQlFUkdPIENPTVBVVElORwotCQkJCU9ORSBJTlRFUkNPTlRJTkVOVEFMIFdBWQotCQkJCVBFQUJPRFkgTUEgMDE5NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUEyICAgKGhleCkJCUtJTkdTVEFSIFRFQ0hOT0xPR1kgSU5DLgotMDA0MEEyICAgICAoYmFzZSAxNikJCUtJTkdTVEFSIFRFQ0hOT0xPR1kgSU5DLgotCQkJCTEtM0YsIE5PLiAxODUsIFNFQy4gMywKLQkJCQlDSEVORyBURUggUk9BRAotCQkJCVRBSVBFSSBUQUlXQU4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtQTMgICAoaGV4KQkJTUlDUk9VTklUWSBTWVNURU1TIEVOR0lORUVSSU5HCi0wMDQwQTMgICAgIChiYXNlIDE2KQkJTUlDUk9VTklUWSBTWVNURU1TIEVOR0lORUVSSU5HCi0JCQkJMjU1IENBU1BJQU4gRFJJVkUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODktMTAxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQTQgICAoaGV4KQkJUk9TRSBFTEVDVFJPTklDUwotMDA0MEE0ICAgICAoYmFzZSAxNikJCVJPU0UgRUxFQ1RST05JQ1MKLQkJCQlQLk8uIEJPWCA3NDI1NzEKLQkJCQlIT1VTVE9OIFRYIDc3Mjc0LTI1NzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUE1ICAgKGhleCkJCUNMSU5JQ09NUCBJTlRMLgotMDA0MEE1ICAgICAoYmFzZSAxNikJCUNMSU5JQ09NUCBJTlRMLgotCQkJCTQ1MTAgRVhFQ0NVVElWRSBEUklWRS1TVEUuIzIwMAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQTYgICAoaGV4KQkJQ3JheSwgSW5jLgotMDA0MEE2ICAgICAoYmFzZSAxNikJCUNyYXksIEluYy4KLQkJCQk2NTVGIExPTkUgT0FLIERSSVZFCi0JCQkJRUFHQU4gTU4gNTUxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUE3ICAgKGhleCkJCUlUQVVURUMgUEhJTENPIFMuQS4KLTAwNDBBNyAgICAgKGJhc2UgMTYpCQlJVEFVVEVDIFBISUxDTyBTLkEuCi0JCQkJR1JVUE8gSVRBVVRFQyBQSElMQ08KLQkJCQlSVUEgU0FOVEEgQ0FUQVJJTkEsIDEgMDMwODYtMDIwIFNBTyBQQVVMCi0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLTQwLUE4ICAgKGhleCkJCUlNRiBJTlRFUk5BVElPTkFMIExURC4KLTAwNDBBOCAgICAgKGJhc2UgMTYpCQlJTUYgSU5URVJOQVRJT05BTCBMVEQuCi0JCQkJTk8uNSAyL0YgS0lOR1NGT1JEIElORC4gQ0VOVFJFCi0JCQkJMTMgV0FORyBIT0kgUk9BRCBLT1dMT09OIEJBWSwgS09XTE9PTgotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC00MC1BOSAgIChoZXgpCQlEQVRBQ09NIElOQy4KLTAwNDBBOSAgICAgKGJhc2UgMTYpCQlEQVRBQ09NIElOQy4KLQkJCQkxNDYgSElHSFdBWSBST1VURSAzNCAtIFNURSAyNTAKLQkJCQlIT0xNREVMIE5KIDA3NzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1BQSAgIChoZXgpCQlWQUxNRVQgQVVUT01BVElPTiBJTkMuCi0wMDQwQUEgICAgIChiYXNlIDE2KQkJVkFMTUVUIEFVVE9NQVRJT04gSU5DLgotCQkJCVAuTy4gQk9YIDIzNwotCQkJCVNGLTMzMTAxIFRBTVBFUkUKLQkJCQlGSU5MQU5ECi0JCQkJRklOTEFORAotCi0wMC00MC1BQiAgIChoZXgpCQlST0xBTkQgREcgQ09SUE9SQVRJT04KLTAwNDBBQiAgICAgKGJhc2UgMTYpCQlST0xBTkQgREcgQ09SUE9SQVRJT04KLQkJCQkxMjI3IE9LVUJPLUNITywgSEFNQU1BVFNVLVNISQotCQkJCVNISVpVT0tBLUtFTgotCQkJCTQzMiBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLUFDICAgKGhleCkJCVNVUEVSIFdPUktTVEFUSU9OLCBJTkMuCi0wMDQwQUMgICAgIChiYXNlIDE2KQkJU1VQRVIgV09SS1NUQVRJT04sIElOQy4KLQkJCQkyMTkwIFBBUkFHT04gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQUQgICAoaGV4KQkJU01BIFJFR0VMU1lTVEVNRSBHTUJICi0wMDQwQUQgICAgIChiYXNlIDE2KQkJU01BIFJFR0VMU1lTVEVNRSBHTUJICi0JCQkJSEFOTk9WRVJTQ0hFIFNUUi4gMS01Ci0JCQkJRCAzNTAxIE5JRVNURVRBTAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLUFFICAgKGhleCkJCURFTFRBIENPTlRST0xTLCBJTkMuCi0wMDQwQUUgICAgIChiYXNlIDE2KQkJREVMVEEgQ09OVFJPTFMsIElOQy4KLQkJCQkxMzUyMCA3OFRIIEFWRU5VRQotCQkJCVNVUlJFWSwgQi5DLgotCQkJCUNBTkFEQSBWM1cgOEo2Ci0JCQkJQ0FOQURBCi0KLTAwLTQwLUFGICAgKGhleCkJCURJR0lUQUwgUFJPRFVDVFMsIElOQy4KLTAwNDBBRiAgICAgKGJhc2UgMTYpCQlESUdJVEFMIFBST0RVQ1RTLCBJTkMuCi0JCQkJNDExIFdBVkVSTFkgT0FLUyBST0FECi0JCQkJV0FMVEhBTSBNQSAwMjE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQjAgICAoaGV4KQkJQllURVggQ09SUE9SQVRJT04sIEVOR0lORUVSSU5HCi0wMDQwQjAgICAgIChiYXNlIDE2KQkJQllURVggQ09SUE9SQVRJT04sIEVOR0lORUVSSU5HCi0JCQkJMTM4NzMgUEFSSyBDRU5URVIgUk9BRAotCQkJCUhFUk5ET04gVkEgMjIwNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUIxICAgKGhleCkJCUNPRE9OSUNTIElOQy4KLTAwNDBCMSAgICAgKGJhc2UgMTYpCQlDT0RPTklDUyBJTkMuCi0JCQkJMTc5OTEgRU5HTEVXT09EIERSSVZFCi0JCQkJTUlERExFQlVSRyBIVFMgT0ggNDQxMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUIyICAgKGhleCkJCVNZU1RFTUZPUlNDSFVORwotMDA0MEIyICAgICAoYmFzZSAxNikJCVNZU1RFTUZPUlNDSFVORwotCQkJCUtPTklHU1RSQVNTRSAzM0EKLQkJCQk1MzAwIEJPTk4gMQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLUIzICAgKGhleCkJCVBhclRlY2ggSW5jLgotMDA0MEIzICAgICAoYmFzZSAxNikJCVBhclRlY2ggSW5jLgotCQkJCTgzODMgU2VuZWNhIFR1cm5waWtlCi0JCQkJTkVXIEhBUlRGT1JEIE5ZIDEzNDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1CNCAgIChoZXgpCQlORVhUQ09NIEsuSy4KLTAwNDBCNCAgICAgKGJhc2UgMTYpCQlORVhUQ09NIEsuSy4KLQkJCQkxLTEyLTEgU0hJQlVZQQotCQkJCVNISUJVWUEtS1UsIFRPS1lPLCAxNTAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLUI1ICAgKGhleCkJCVZJREVPIFRFQ0hOT0xPR1kgQ09NUFVURVJTIExURAotMDA0MEI1ICAgICAoYmFzZSAxNikJCVZJREVPIFRFQ0hOT0xPR1kgQ09NUFVURVJTIExURAotCQkJCTMzL0YuLCBCTE9DSyAjMSwKLQkJCQlUQUkgUElORyBJTkRVU1RSSUFMIENFTlRFUiA1NyBUSU5HIEtPSyBSCi0JCQkJTi5ULiBIT05HIEtPTkcKLQkJCQlIT05HIEtPTkcKLQotMDAtNDAtQjYgICAoaGV4KQkJQ09NUFVURVJNICBDT1JQT1JBVElPTgotMDA0MEI2ICAgICAoYmFzZSAxNikJCUNPTVBVVEVSTSAgQ09SUE9SQVRJT04KLQkJCQkxMTEgV09PRCBTVFJFRVQKLQkJCQlQSVRUU0JVUkdIIFBBIDE1MjIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1CNyAgIChoZXgpCQlTVEVBTFRIIENPTVBVVEVSIFNZU1RFTVMKLTAwNDBCNyAgICAgKGJhc2UgMTYpCQlTVEVBTFRIIENPTVBVVEVSIFNZU1RFTVMKLQkJCQkyMzQxIFJFR0lOQSBDVC4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQjggICAoaGV4KQkJSURFQSBBU1NPQ0lBVEVTCi0wMDQwQjggICAgIChiYXNlIDE2KQkJSURFQSBBU1NPQ0lBVEVTCi0JCQkJMjkgRFVOSEFNIFJPQUQKLQkJCQlCSUxMRVJJQ0EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUI5ICAgKGhleCkJCU1BQ1EgRUxFQ1RST05JUVVFIFNBCi0wMDQwQjkgICAgIChiYXNlIDE2KQkJTUFDUSBFTEVDVFJPTklRVUUgU0EKLQkJCQlSVUUgREUgTCdBRVJPTkVGIDIKLQkJCQlCIC0gMTE0MCBCUlVTU0VMUwotCQkJCUJFTEdJVU0KLQkJCQlCRUxHSVVNCi0KLTAwLTQwLUJBICAgKGhleCkJCUFMTElBTlQgQ09NUFVURVIgU1lTVEVNUyBDT1JQLgotMDA0MEJBICAgICAoYmFzZSAxNikJCUFMTElBTlQgQ09NUFVURVIgU1lTVEVNUyBDT1JQLgotCQkJCU9ORSBNT05BUkNIIERSSVZFCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1CQiAgIChoZXgpCQlHT0xEU1RBUiBDQUJMRSBDTy4sIExURC4KLTAwNDBCQiAgICAgKGJhc2UgMTYpCQlHT0xEU1RBUiBDQUJMRSBDTy4sIExURC4KLQkJCQk1NTUsIEhPR1lFLURPTkcsIEFOWUFORy1TSEkKLQkJCQlLWVVOR0tJLURPLCA0MzAtMDgwCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNDAtQkMgICAoaGV4KQkJQUxHT1JJVEhNSUNTIExURC4KLTAwNDBCQyAgICAgKGJhc2UgMTYpCQlBTEdPUklUSE1JQ1MgTFRELgotCQkJCTMgRFJBWVRPTiBQQVJLCi0JCQkJTE9ORE9OIE41IDFOVQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC1CRCAgIChoZXgpCQlTVEFSTElHSFQgTkVUV09SS1MsIElOQy4KLTAwNDBCRCAgICAgKGJhc2UgMTYpCQlTVEFSTElHSFQgTkVUV09SS1MsIElOQy4KLQkJCQk0NDQgQ0FTVFJPIFNUUkVFVCBTVEUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1CRSAgIChoZXgpCQlCT0VJTkcgREVGRU5TRSAmIFNQQUNFCi0wMDQwQkUgICAgIChiYXNlIDE2KQkJQk9FSU5HIERFRkVOU0UgJiBTUEFDRQotCQkJCVAuTy4gQk9YIDM5OTkKLQkJCQlNQUlMIFNUT1AgODgtMTIKLQkJCQlTRUFUVExFIFdBIDk4MTI0LTI0OTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUJGICAgKGhleCkJCUNIQU5ORUwgU1lTVEVNUyBJTlRFUk4nTCBJTkMuCi0wMDQwQkYgICAgIChiYXNlIDE2KQkJQ0hBTk5FTCBTWVNURU1TIElOVEVSTidMIElOQy4KLQkJCQk5MyBTTy4gTEEgUEFURVJBIExBTkUKLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DMCAgIChoZXgpCQlWSVNUQSBDT05UUk9MUyBDT1JQT1JBVElPTgotMDA0MEMwICAgICAoYmFzZSAxNikJCVZJU1RBIENPTlRST0xTIENPUlBPUkFUSU9OCi0JCQkJMjc4MjUgRlJFTU9OVCBDT1VSVAotCQkJCVZBTEVOQ0lBIENBIDkxMzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DMSAgIChoZXgpCQlCSVpFUkJBLVdFUktFIFdJTEhFSU0gS1JBVVQKLTAwNDBDMSAgICAgKGJhc2UgMTYpCQlCSVpFUkJBLVdFUktFIFdJTEhFSU0gS1JBVVQKLQkJCQlHTUJIICYgQ08uIEtHLAotCQkJCVdJTEhFTE0tS1JBVVQtU1RSLiA2NSBQLk8uIEJPWCAxMDAxNjQKLQkJCQlELTc0NjAgQkFMSU5HRU4gRC03NDYwIEJBTElOR0VOIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLUMyICAgKGhleCkJCUFQUExJRUQgQ09NUFVUSU5HIERFVklDRVMKLTAwNDBDMiAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIENPTVBVVElORyBERVZJQ0VTCi0JCQkJQUxFUEggUEFSSwotCQkJCTEwMCBTT1VUSCBDQU1QVVMgRFJJVkUKLQkJCQlURVJSRSBIQVVURSBJTiA0NzgwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQzMgICAoaGV4KQkJRklTQ0hFUiBBTkQgUE9SVEVSIENPLgotMDA0MEMzICAgICAoYmFzZSAxNikJCUZJU0NIRVIgQU5EIFBPUlRFUiBDTy4KLQkJCQkxMjUgRS4gQ09VTlRZIExJTkUgUk9BRAotCQkJCVdBUk1JTlNURVIgUEEgMTg5NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUM0ICAgKGhleCkJCUtJTktFSSBTWVNURU0gQ09SUE9SQVRJT04KLTAwNDBDNCAgICAgKGJhc2UgMTYpCQlLSU5LRUkgU1lTVEVNIENPUlBPUkFUSU9OCi0JCQkJMS0yMi0xNywgS0FNSUtJVEEsIEhJUkFOT0tVCi0JCQkJT1NBS0EsIDU0NwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtQzUgICAoaGV4KQkJTUlDT00gQ09NTVVOSUNBVElPTlMgSU5DLgotMDA0MEM1ICAgICAoYmFzZSAxNikJCU1JQ09NIENPTU1VTklDQVRJT05TIElOQy4KLQkJCQk0MTAwIExPUyBBTkdFTEVTIEFWRU5VRQotCQkJCVNJTUkgVkFMTEVZIENBIDkzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DNiAgIChoZXgpCQlGSUJFUk5FVCBSRVNFQVJDSCwgSU5DLgotMDA0MEM2ICAgICAoYmFzZSAxNikJCUZJQkVSTkVUIFJFU0VBUkNILCBJTkMuCi0JCQkJMSBUQVJBIEJPVUxFVkFSRC0jNDA1Ci0JCQkJTkFTSFVBIE5IIDAzMDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DNyAgIChoZXgpCQlSVUJZIFRFQ0ggQ09SUE9SQVRJT04KLTAwNDBDNyAgICAgKGJhc2UgMTYpCQlSVUJZIFRFQ0ggQ09SUE9SQVRJT04KLQkJCQk2Ri0xLCBOTy4zLCBMQU5FIDI1MCwKLQkJCQlTRUMuIDUgTkFOS0lORyBFLlJPQUQKLQkJCQlUQUlQRUkgVEFJV0FOLCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLUM4ICAgKGhleCkJCU1JTEFOIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwNDBDOCAgICAgKGJhc2UgMTYpCQlNSUxBTiBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJODk0IFJPU1MgRFJJVkUtLVNURSAjMTA1Ci0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DOSAgIChoZXgpCQlOQ1VCRQotMDA0MEM5ICAgICAoYmFzZSAxNikJCU5DVUJFCi0JCQkJOTE5IEVBU1QgSElMTFNEQUxFIEJMVkQuCi0JCQkJU1VJVEUgMjAwCi0JCQkJRk9TVEVSIENJVFkgQ0EgOTQ0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUNBICAgKGhleCkJCUZJUlNUIElOVEVSTkFUJ0wgQ09NUFVURVIsIElOQwotMDA0MENBICAgICAoYmFzZSAxNikJCUZJUlNUIElOVEVSTkFUJ0wgQ09NUFVURVIsIElOQwotCQkJCUZJQyBCdWlsZGluZwotCQkJCU5vIDMwMCBZYW5nIEd1YW5nIFN0cmVldAotCQkJCU5laWh1IFRhaXBlaSAxMTQgVGFpcGVpIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtQ0IgICAoaGV4KQkJTEFOV0FOIFRFQ0hOT0xPR0lFUwotMDA0MENCICAgICAoYmFzZSAxNikJCUxBTldBTiBURUNITk9MT0dJRVMKLQkJCQkxNTY2IExBIFBSQURFUkEgRFJJVkUKLQkJCQlDQU1QQkVMTCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQ0MgICAoaGV4KQkJU0lMQ09NIE1BTlVGJ0cgVEVDSE5PTE9HWSBJTkMuCi0wMDQwQ0MgICAgIChiYXNlIDE2KQkJU0lMQ09NIE1BTlVGJ0cgVEVDSE5PTE9HWSBJTkMuCi0JCQkJNTYyMCBUSU1CRVJMRUEgQk9VTEVWQVJECi0JCQkJTUlTU0lTU0FVR0EsIE9OVEFSSU8KLQkJCQlDQU5BREEgTDRXIDRNNgotCQkJCUNBTkFEQQotCi0wMC00MC1DRCAgIChoZXgpCQlURVJBIE1JQ1JPU1lTVEVNUywgSU5DLgotMDA0MENEICAgICAoYmFzZSAxNikJCVRFUkEgTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJMjUwMCBHUkVBVCBBTUVSSUNBIFBBUktXQVkKLQkJCQlTVEUuICMyNTAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQ0UgICAoaGV4KQkJTkVULVNPVVJDRSwgSU5DLgotMDA0MENFICAgICAoYmFzZSAxNikJCU5FVC1TT1VSQ0UsIElOQy4KLQkJCQkxMjY1IEVMIENBTUlOTyBSRUFMCi0JCQkJU1VJVEUgMTAxCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUNGICAgKGhleCkJCVNUUkFXQkVSUlkgVFJFRSwgSU5DLgotMDA0MENGICAgICAoYmFzZSAxNikJCVNUUkFXQkVSUlkgVFJFRSwgSU5DLgotCQkJCTE2MCBTT1VUSCBXT0xGRSBST0FECi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1EMCAgIChoZXgpCQlNSVRBQyBJTlRFUk5BVElPTkFMIENPUlAuCi0wMDQwRDAgICAgIChiYXNlIDE2KQkJTUlUQUMgSU5URVJOQVRJT05BTCBDT1JQLgotCQkJCThUSCBGTC4gNTg1IE1JTkcgU0hFTkcgRS4gUkQuCi0JCQkJVEFJUEVJCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC1EMSAgIChoZXgpCQlGVUtVREEgREVOU0hJIENPLiwgTFRELgotMDA0MEQxICAgICAoYmFzZSAxNikJCUZVS1VEQSBERU5TSEkgQ08uLCBMVEQuCi0JCQkJUiAmIEQgREVQQVJUTUVOVCBOTy4gMQotCQkJCTM1LTgsIEhPTkdPIDItQ0hPTUUsIEJVTktZTy1LVSBUT0tZTyAxMTMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLUQyICAgKGhleCkJCVBBR0lORSBDT1JQT1JBVElPTgotMDA0MEQyICAgICAoYmFzZSAxNikJCVBBR0lORSBDT1JQT1JBVElPTgotCQkJCTE5NjEtQSBDT05DT1VSU0UgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRDMgICAoaGV4KQkJS0lNUFNJT04gSU5URVJOQVRJT05BTCBDT1JQLgotMDA0MEQzICAgICAoYmFzZSAxNikJCUtJTVBTSU9OIElOVEVSTkFUSU9OQUwgQ09SUC4KLQkJCQk0NzAxIFBBVFJJQ0sgSEVOUlkgRFJJVkUKLQkJCQlTVUlURSA0MDEKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRDQgICAoaGV4KQkJR0FHRSBUQUxLRVIgQ09SUC4KLTAwNDBENCAgICAgKGJhc2UgMTYpCQlHQUdFIFRBTEtFUiBDT1JQLgotCQkJCTEzNjgwIE5FIDE2VEggU1RSRUVUCi0JCQkJQkVMTEVWVUUgV0EgOTgwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUQ1ICAgKGhleCkJCVNhcnRvcml1cyBNZWNoYXRyb25pY3MgVCZIIEdtYkggCi0wMDQwRDUgICAgIChiYXNlIDE2KQkJU2FydG9yaXVzIE1lY2hhdHJvbmljcyBUJkggR21iSCAKLQkJCQlXRUVOREVSIExBTkRTVFI6IDk0IC0gMTA4Ci0JCQkJMzQwMCBHT1RUSU5HRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC1ENiAgIChoZXgpCQlMT0NBTUFUSU9OIEIuVi4KLTAwNDBENiAgICAgKGJhc2UgMTYpCQlMT0NBTUFUSU9OIEIuVi4KLQkJCQlQT1NUQk9YIDM2MAotCQkJCTc1MDAgQUogRU5TQ0hFREUKLQkJCQlIT0xMQU5ECi0JCQkJTkVUSEVSTEFORFMKLQotMDAtNDAtRDcgICAoaGV4KQkJU1RVRElPIEdFTiBJTkMuCi0wMDQwRDcgICAgIChiYXNlIDE2KQkJU1RVRElPIEdFTiBJTkMuCi0JCQkJMy0xMi04IFRBS0FOQVdBICMyMDIKLQkJCQlNSU5BVE9LVSwgVE9LWU8gMTA4Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC1EOCAgIChoZXgpCQlPQ0VBTiBPRkZJQ0UgQVVUT01BVElPTiBMVEQuCi0wMDQwRDggICAgIChiYXNlIDE2KQkJT0NFQU4gT0ZGSUNFIEFVVE9NQVRJT04gTFRELgotCQkJCTRUSCAmIDVUSCBGTE9PUiwgS0FERVIgQkxERy4KLQkJCQkyMiBLQUkgQ0hFVU5HIFJPQUQgS09XTE9PTiBCQVksIEtPV0xPT04KLQkJCQlIT05HIEtPTkcKLQkJCQlIT05HIEtPTkcKLQotMDAtNDAtRDkgICAoaGV4KQkJQU1FUklDQU4gTUVHQVRSRU5EUyBJTkMuCi0wMDQwRDkgICAgIChiYXNlIDE2KQkJQU1FUklDQU4gTUVHQVRSRU5EUyBJTkMuCi0JCQkJNjE0NUYgTiBCRUxUIFBBUktXQVkKLQkJCQlOT1JDUk9TUyBHQSAzMDA3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtREEgICAoaGV4KQkJVEVMU1BFQyBMVEQKLTAwNDBEQSAgICAgKGJhc2UgMTYpCQlURUxTUEVDIExURAotCQkJCUxBTkNBU1RFUiBQQVJLRVIgUk9BRAotCQkJCVJPQ0hFU1RFUiBBSVJQT1JULCBST0NIRVNURVIgS0VOVCBNRTEgM1EKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtREIgICAoaGV4KQkJQURWQU5DRUQgVEVDSE5JQ0FMIFNPTFVUSU9OUwotMDA0MERCICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIFRFQ0hOSUNBTCBTT0xVVElPTlMKLQkJCQk4MDUwIFNFTUlOT0xFIE9GRklDRSBDRU5URVIKLQkJCQlTVUlURSAyMTAKLQkJCQlTRU1JTk9MRSBGTCAzNDY0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtREMgICAoaGV4KQkJVFJJVEVDIEVMRUNUUk9OSUMgR01CSAotMDA0MERDICAgICAoYmFzZSAxNikJCVRSSVRFQyBFTEVDVFJPTklDIEdNQkgKLQkJCQlST0JFUlQgS09DSCBTVFIuIDM1Ci0JCQkJRDY1MDAgTUFJTlogNDIKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC1ERCAgIChoZXgpCQlIT05HIFRFQ0hOT0xPR0lFUwotMDA0MEREICAgICAoYmFzZSAxNikJCUhPTkcgVEVDSE5PTE9HSUVTCi0JCQkJNTMyIFdFRERFTEwgRFJJVkUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLURFICAgKGhleCkJCUVsc2FnIERhdGFtYXQgc3BhCi0wMDQwREUgICAgIChiYXNlIDE2KQkJRWxzYWcgRGF0YW1hdCBzcGEKLQkJCQlFTFNBRyBTLlAuQS4KLQkJCQlWSUEgRy4gUFVDQ0lOSSwgMgotCQkJCUdFTk9WQSAgMTYxNTQKLQkJCQlJVEFMWQotCi0wMC00MC1ERiAgIChoZXgpCQlESUdBTE9HIFNZU1RFTVMsIElOQy4KLTAwNDBERiAgICAgKGJhc2UgMTYpCQlESUdBTE9HIFNZU1RFTVMsIElOQy4KLQkJCQkzMTgwIFNPVVRIIDE2NlRIIFNUUkVFVAotCQkJCU5FVyBCRVJMSU4gV0kgNTMxNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUUwICAgKGhleCkJCUFUT01XSURFIExURC4KLTAwNDBFMCAgICAgKGJhc2UgMTYpCQlBVE9NV0lERSBMVEQuCi0JCQkJMjMgVEhFIEdSRUVOV0FZCi0JCQkJT1JQSU5HVE9OIEJSNSAyQVkKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLUUxICAgKGhleCkJCU1BUk5FUiBJTlRFUk5BVElPTkFMLCBJTkMuCi0wMDQwRTEgICAgIChiYXNlIDE2KQkJTUFSTkVSIElOVEVSTkFUSU9OQUwsIElOQy4KLQkJCQkxNjE3IDkzUkQgTEFORSBORQotCQkJCUJMQUlORSBNTiA1NTQ0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRTIgICAoaGV4KQkJTUVTQSBSSURHRSBURUNITk9MT0dJRVMsIElOQy4KLTAwNDBFMiAgICAgKGJhc2UgMTYpCQlNRVNBIFJJREdFIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTY3MjUgTUVTQSBSSURHRSBST0FELVNURSMxMDAKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUUzICAgKGhleCkJCVFVSU4gU1lTVEVNUyBMVEQKLTAwNDBFMyAgICAgKGJhc2UgMTYpCQlRVUlOIFNZU1RFTVMgTFRECi0JCQkJT0FLTEFORFMgQlVTSU5FU1MgQ0VOVFJFCi0JCQkJT0FLTEFORFMgUEFSSywgV09LSU5HSEFNIEJFUktTICBSRzExIDJGRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtRTQgICAoaGV4KQkJRS1NIFRFQ0hOT0xPR1ksIElOQy4KLTAwNDBFNCAgICAgKGJhc2UgMTYpCQlFLU0gVEVDSE5PTE9HWSwgSU5DLgotCQkJCTkyNDUgU09VVEhXRVNUIE5JTUJVUyBBVkUuCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1FNSAgIChoZXgpCQlTWUJVUyBDT1JQT1JBVElPTgotMDA0MEU1ICAgICAoYmFzZSAxNikJCVNZQlVTIENPUlBPUkFUSU9OCi0JCQkJMjMwMCBUQUxMIFBJTkUgRFJJVkUtU1RFLiAjMTAwCi0JCQkJTEFSR08gRkwgMzQ2NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUU2ICAgKGhleCkJCUMuQS5FLk4uCi0wMDQwRTYgICAgIChiYXNlIDE2KQkJQy5BLkUuTi4KLQkJCQkyLCBDSEVNSU4gTEFURVJBTAotCQkJCUY5NDI5MCBWSUxMRU5FVVZFIExFIFJPSQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC00MC1FNyAgIChoZXgpCQlBUk5PUyBJTlNUUlVNRU5UUyAmIENPTVBVVEVSCi0wMDQwRTcgICAgIChiYXNlIDE2KQkJQVJOT1MgSU5TVFJVTUVOVFMgJiBDT01QVVRFUgotCQkJCVNZU1RFTVMgKEdST1VQKSBDTy4sIExURC4KLQkJCQk0L0YuLCBFVVJFS0EgSU5ELiBCTERHLiwgMS0xNyBTQUkgTEFVIEtPCi0JCQkJVFNVRU4gV0FOIE4uVC4gSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLTQwLUU4ICAgKGhleCkJCUNIQVJMRVMgUklWRVIgREFUQSBTWVNURU1TLElOQwotMDA0MEU4ICAgICAoYmFzZSAxNikJCUNIQVJMRVMgUklWRVIgREFUQSBTWVNURU1TLElOQwotCQkJCTk4MyBDT05DT1JEIFNUUkVFVAotCQkJCUZSQU1JTkdIQU0gTUEgMDE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUU5ICAgKGhleCkJCUFDQ09SRCBTWVNURU1TLCBJTkMuCi0wMDQwRTkgICAgIChiYXNlIDE2KQkJQUNDT1JEIFNZU1RFTVMsIElOQy4KLQkJCQk1NzIgVkFMTEVZIFdBWQotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1FQSAgIChoZXgpCQlQTEFJTiBUUkVFIFNZU1RFTVMgSU5DCi0wMDQwRUEgICAgIChiYXNlIDE2KQkJUExBSU4gVFJFRSBTWVNURU1TIElOQwotCQkJCUNISUVGIEVYRUNUVVZJRSBPRkZJQ0VSCi0JCQkJNTkgSUJFUiBST0FELCBTVElUVFNWSUxMRSBPTlRBUklPIEsyUyAxRQotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC00MC1FQiAgIChoZXgpCQlNQVJUSU4gTUFSSUVUVEEgQ09SUE9SQVRJT04KLTAwNDBFQiAgICAgKGJhc2UgMTYpCQlNQVJUSU4gTUFSSUVUVEEgQ09SUE9SQVRJT04KLQkJCQkxMjUwNiBMQUtFIFVOREVSSElMTAotCQkJCU9STEFORE8gRkwgMzI4MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUVDICAgKGhleCkJCU1JS0FTQSBTWVNURU0gRU5HSU5FRVJJTkcKLTAwNDBFQyAgICAgKGJhc2UgMTYpCQlNSUtBU0EgU1lTVEVNIEVOR0lORUVSSU5HCi0JCQkJQ08uLCBMVEQuCi0JCQkJMS0zLTEwLCBNSU5BTUktU0hJTk1BQ0hJLCBDSFVPLUtVLCBPU0FLQQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtRUQgICAoaGV4KQkJTkVUV09SSyBDT05UUk9MUyBJTlQnTkFUTCBJTkMuCi0wMDQwRUQgICAgIChiYXNlIDE2KQkJTkVUV09SSyBDT05UUk9MUyBJTlQnTkFUTCBJTkMuCi0JCQkJOSBXT09ETEFXTiBHUkVFTgotCQkJCUNIQVJMT1RURSBOQyAyODIxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRUUgICAoaGV4KQkJT1BUSU1FTQotMDA0MEVFICAgICAoYmFzZSAxNikJCU9QVElNRU0KLQkJCQkyOTcgTi4gQkVSTkFSRE8gQVZFTlVFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0My01MjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1FRiAgIChoZXgpCQlIWVBFUkNPTSwgSU5DLgotMDA0MEVGICAgICAoYmFzZSAxNikJCUhZUEVSQ09NLCBJTkMuCi0JCQkJMjg1MSBXRVNUIEtBVEhMRUVOIFJPQUQKLQkJCQlQSE9FTklYIEFaIDg1MDIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1GMCAgIChoZXgpCQlNaWNyb0JyYWluLEluYy4KLTAwNDBGMCAgICAgKGJhc2UgMTYpCQlNaWNyb0JyYWluLEluYy4KLQkJCQlZdXphbiBCbGRnLiA0RiwKLQkJCQkyMDUsS2lidXRha2UsTmFnYWt1dGUmIzgyMDg7IENobywKLQkJCQlBaWNoaS1ndW4gQUlDSEkgIDQ4MC0xMTE3Ci0JCQkJSkFQQU4KLQotMDAtNDAtRjEgICAoaGV4KQkJQ0hVTyBFTEVDVFJPTklDUyBDTy4sIExURC4KLTAwNDBGMSAgICAgKGJhc2UgMTYpCQlDSFVPIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTEtOS05LCBNT1RPSE9OR08tQ0hPCi0JCQkJSEFDSElPSkktU0hJIFRPS1lPIDE5MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtRjIgICAoaGV4KQkJSkFOSUNIICYgS0xBU1MgQ09NUFVURVJURUNITklLCi0wMDQwRjIgICAgIChiYXNlIDE2KQkJSkFOSUNIICYgS0xBU1MgQ09NUFVURVJURUNITklLCi0JCQkJWlVNIEFMVEVOIFpPTExIQVVTIDIwCi0JCQkJVy01NjAwIFdVUFBFUlRBTCAyCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtRjMgICAoaGV4KQkJTkVUQ09SCi0wMDQwRjMgICAgIChiYXNlIDE2KQkJTkVUQ09SCi0JCQkJODUwIEFVQlVSTiBDT1VSVAotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUY0ICAgKGhleCkJCUNBTUVPIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDQwRjQgICAgIChiYXNlIDE2KQkJQ0FNRU8gQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk3MSBTUElUQlJPT0sgUk9BRCwgU1RFICM0MTAKLQkJCQlOQVNIVUEgTkggMDMwNjAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1GNSAgIChoZXgpCQlPRU0gRU5HSU5FUwotMDA0MEY1ICAgICAoYmFzZSAxNikJCU9FTSBFTkdJTkVTCi0JCQkJMTE5MCBERUxMIEFWRU5VRSwgU1RFLgotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1GNiAgIChoZXgpCQlLQVRST04gQ09NUFVURVJTIElOQy4KLTAwNDBGNiAgICAgKGJhc2UgMTYpCQlLQVRST04gQ09NUFVURVJTIElOQy4KLQkJCQk0IEZMLiBOTy4gMiwgQUxMRVkgMjMKLQkJCQlMQU5FIDkxIFNFQy4gMSBORUkgSFUgUk9BRAotCQkJCVRBSVBFSSBUQUlQRUkgVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC1GNyAgIChoZXgpCQlQb2xhcm9pZCBDb3Jwb3JhdGlvbgotMDA0MEY3ICAgICAoYmFzZSAxNikJCVBvbGFyb2lkIENvcnBvcmF0aW9uCi0JCQkJMzAwIEJha2VyIEF2ZW51ZQotCQkJCUNvbmNvcmQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUY4ICAgKGhleCkJCVNZU1RFTUhBVVMgRElTQ09NCi0wMDQwRjggICAgIChiYXNlIDE2KQkJU1lTVEVNSEFVUyBESVNDT00KLQkJCQlESVNUUklCVVRFRCBDT01QVVRJTkcgR01CSAotCQkJCVJPRVJNT05ERVJTVFIuIDYxNSBELTUxMDAgQUFDSEVOCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtRjkgICAoaGV4KQkJQ09NQklORVQKLTAwNDBGOSAgICAgKGJhc2UgMTYpCQlDT01CSU5FVAotCQkJCTMzMyBXLiBFTCBDQU1JTk8gUkVBTC1TVEUjMzEwCi0JCQkJU1VOTllWQUxFIENBIDk0MDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1GQSAgIChoZXgpCQlNSUNST0JPQVJEUywgSU5DLgotMDA0MEZBICAgICAoYmFzZSAxNikJCU1JQ1JPQk9BUkRTLCBJTkMuCi0JCQkJMzEtOCwgVEFLQVNFQ0hPLEZVTkFCQVNISS1DSVRZCi0JCQkJQ0hJQkEgMjczIENISUJBIDI3MyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLUZCICAgKGhleCkJCUNBU0NBREUgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwNDBGQiAgICAgKGJhc2UgMTYpCQlDQVNDQURFIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJUFJPRFVDVElPTiBRVUFMSVRZIEVOR0lORUVSCi0JCQkJMjM5IExJVFRMRVRPTiBST0FELVVOSVQgNEEKLQkJCQlXRVNURk9SRCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRkMgICAoaGV4KQkJSUJSIENPTVBVVEVSIFRFQ0hOSUsgR01CSAotMDA0MEZDICAgICAoYmFzZSAxNikJCUlCUiBDT01QVVRFUiBURUNITklLIEdNQkgKLQkJCQlGUkFOS0ZVUlRFUiBTVFIuIDExNAotCQkJCUQgNjA1NiBIRVVTRU5TVEFNTQotCQkJCVdFU1QgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtRkQgICAoaGV4KQkJTFhFCi0wMDQwRkQgICAgIChiYXNlIDE2KQkJTFhFCi0JCQkJMzAzIFJFU0VBUkNIIERSSVZFCi0JCQkJTk9SQ1JPU1MgR0EgMzAwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUZFICAgKGhleCkJCVNZTVBMRVggQ09NTVVOSUNBVElPTlMKLTAwNDBGRSAgICAgKGJhc2UgMTYpCQlTWU1QTEVYIENPTU1VTklDQVRJT05TCi0JCQkJNSBSRVNFQVJDSCBEUklWRQotCQkJCUFOTiBBUkJPUiBNSSA0ODEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRkYgICAoaGV4KQkJVEVMRUJJVCBDT1JQT1JBVElPTgotMDA0MEZGICAgICAoYmFzZSAxNikJCVRFTEVCSVQgQ09SUE9SQVRJT04KLQkJCQkxMzE1IENIRVNBUEVBS0UgVEVSUkFDRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OS0xMTAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00Mi01MiAgIChoZXgpCQlSTFggVGVjaG5vbG9naWVzCi0wMDQyNTIgICAgIChiYXNlIDE2KQkJUkxYIFRlY2hub2xvZ2llcwotCQkJCTI1MjMxIEdyb2dyYW5zIE1pbGwgUmQKLQkJCQlTdWl0ZSA2MDAKLQkJCQlUaGUgV29vZGxhbmRzIFR4IDc3MzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00NS0wMSAgIChoZXgpCQlWZXJzdXMgVGVjaG5vbG9neSwgSW5jLgotMDA0NTAxICAgICAoYmFzZSAxNikJCVZlcnN1cyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjYwMCBNaWxsZXIgQ3JlZWsgUm9hZAotCQkJCVRyYXZlcnNlIENpdHkgTUkgNDk2ODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTAwICAgKGhleCkJCU5FWE8gQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwNTAwMCAgICAgKGJhc2UgMTYpCQlORVhPIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMk5EIEZMLiwgMTYwLCBNSU5HQ0hVIFJPQUQKLQkJCQlIU0lOQ0hVIENJVFkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtMDEgICAoaGV4KQkJWUFNQVNISVRBIFNZU1RFTVMgQ09SUC4KLTAwNTAwMSAgICAgKGJhc2UgMTYpCQlZQU1BU0hJVEEgU1lTVEVNUyBDT1JQLgotCQkJCTUtNy0xMiBJS0VHQU1JCi0JCQkJT1RBLUtVIFRPS1lPICAKLQkJCQlKQVBBTgotCi0wMC01MC0wMiAgIChoZXgpCQlPTU5JU0VDIEFHCi0wMDUwMDIgICAgIChiYXNlIDE2KQkJT01OSVNFQyBBRwotCQkJCVJJRVRTVFJBU1NFIDE0Ci0JCQkJQ0gtODEwOCBEQUVMTElLT04gIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTUwLTAzICAgKGhleCkJCUdSRVRBRyBNQUNCRVRIIEFHCi0wMDUwMDMgICAgIChiYXNlIDE2KQkJR1JFVEFHIE1BQ0JFVEggQUcKLQkJCQlBTFRIQVJEU1RSQVNTRSA3MAotCQkJCUNILTgxMDUgUkVHRU5TRE9SRiAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtNTAtMDQgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDA1MDA0ICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTA2ICAgKGhleCkJCVRBQyBBQgotMDA1MDA2ICAgICAoYmFzZSAxNikJCVRBQyBBQgotCQkJCUpBR0VSU0hJTExHQVRPTiAxOAotCQkJCTIxMzc1IE1BTE1PICAKLQkJCQlTV0VERU4KLQotMDAtNTAtMDcgICAoaGV4KQkJU0lFTUVOUyBURUxFQ09NTVVOSUNBVElPTiBTWVNURU1TIExJTUlURUQKLTAwNTAwNyAgICAgKGJhc2UgMTYpCQlTSUVNRU5TIFRFTEVDT01NVU5JQ0FUSU9OIFNZU1RFTVMgTElNSVRFRAotCQkJCU5PLiA5MCwgU0VDLiAxLCBDSElFTiBLVU8gTk9SVEggUk9BRAotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC0wOCAgIChoZXgpCQlUSVZBIE1JQ1JPQ09NUFVURVIgQ09SUC4gKFRNQykKLTAwNTAwOCAgICAgKGJhc2UgMTYpCQlUSVZBIE1JQ1JPQ09NUFVURVIgQ09SUC4gKFRNQykKLQkJCQk0ODU1MCBGUkVNT05UIEJMVkQuCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMDkgICAoaGV4KQkJUEhJTElQUyBCUk9BREJBTkQgTkVUV09SS1MKLTAwNTAwOSAgICAgKGJhc2UgMTYpCQlQSElMSVBTIEJST0FEQkFORCBORVRXT1JLUwotCQkJCTY0IFBFUklNRVRFUiBDRU5UUkUgRUFTVAotCQkJCUFUTEFOVEEgR0EgMzAzNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTBBICAgKGhleCkJCUlSSVMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDUwMEEgICAgIChiYXNlIDE2KQkJSVJJUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQlXRVNUTU9SRUxBTkQgSU5EVVNSSUFMIFBBUksKLQkJCQlSLlIuIDEyICBCT1ggMzYKLQkJCQlHUkVFTlNCVVJHIFBBIDE1NjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0wQiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwMEIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlNL1MgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0wQyAgIChoZXgpCQllLVRlayBMYWJzLCBJbmMuCi0wMDUwMEMgICAgIChiYXNlIDE2KQkJZS1UZWsgTGFicywgSW5jLgotCQkJCTEwNTcgRUFTVCBIRU5SSUVUVEEgUkQuCi0JCQkJUk9DSEVTVEVSIE5ZIDE0NjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0wRCAgIChoZXgpCQlTQVRPUkkgRUxFQ1RPUklDIENPLiwgTFRELgotMDA1MDBEICAgICAoYmFzZSAxNikJCVNBVE9SSSBFTEVDVE9SSUMgQ08uLCBMVEQuCi0JCQkJVElHVVNBREFJIDM4LTggIE1JRE9SSS1LVQotCQkJCVlPS09IQU1BLCBLQU5BR0FXQSAgCi0JCQkJSkFQQU4KLQotMDAtNTAtMEUgICAoaGV4KQkJQ0hST01BVElTIE5FVFdPUktTLCBJTkMuCi0wMDUwMEUgICAgIChiYXNlIDE2KQkJQ0hST01BVElTIE5FVFdPUktTLCBJTkMuCi0JCQkJMyBCRVRIRVNEQSBNRVRSTyBDRU5URVIKLQkJCQlCRVRIRVNEQSBNRCAyMDgxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMEYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDBGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0xMCAgIChoZXgpCQlOb3ZhTkVUIExlYXJuaW5nLCBJbmMuCi0wMDUwMTAgICAgIChiYXNlIDE2KQkJTm92YU5FVCBMZWFybmluZywgSW5jLgotCQkJCTEyNSBXLiBDSFVSQ0ggU1RSRUVULVNURS4gIzMwMAotCQkJCUNIQU1QQUlHTiBJTCA2MTgyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMTIgICAoaGV4KQkJQ0JMIC0gR01CSAotMDA1MDEyICAgICAoYmFzZSAxNikJCUNCTCAtIEdNQkgKLQkJCQlEQVJNU1RBRURURVIgU1RSLiA4MQotCQkJCUQtNjQ4MzkgTVVFTlNURVIgIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtMTMgICAoaGV4KQkJQ2hhcGFycmFsIE5ldHdvcmsgU3RvcmFnZQotMDA1MDEzICAgICAoYmFzZSAxNikJCUNoYXBhcnJhbCBOZXR3b3JrIFN0b3JhZ2UKLQkJCQk3NDIwIEUuIERyeSBDcmVlayBQYXJrd2F5Ci0JCQkJTG9uZ21vbnQgQ08gODA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTE0ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTAxNCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJTS9TLyBTSkEtMgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0xNSAgIChoZXgpCQlCUklHSFQgU1RBUiBFTkdJTkVFUklORwotMDA1MDE1ICAgICAoYmFzZSAxNikJCUJSSUdIVCBTVEFSIEVOR0lORUVSSU5HCi0JCQkJMTkgRU5GSUVMRCBEUklWRQotCQkJCUFORE9WRVIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTE2ICAgKGhleCkJCVNTVC9XT09ESEVBRCBJTkRVU1RSSUVTCi0wMDUwMTYgICAgIChiYXNlIDE2KQkJU1NUL1dPT0RIRUFEIElORFVTVFJJRVMKLQkJCQk1MCBOT1JUSExBTkQgUk9BRAotCQkJCVdBVEVSTE9PCi0JCQkJT05UQVJJTyBOMlYgMU4zICAKLQkJCQlDQU5BREEKLQotMDAtNTAtMTcgICAoaGV4KQkJUlNSIFMuUi5MLgotMDA1MDE3ICAgICAoYmFzZSAxNikJCVJTUiBTLlIuTC4KLQkJCQlWSUEgU0lOSUdBR0xJQSwgMzgKLQkJCQlMVVJBVEUgQ0FDQ0lWSU8gKENPKQotCQkJCTIyMDc1IElUQUxZCi0JCQkJSVRBTFkKLQotMDAtNTAtMTggICAoaGV4KQkJQU1JVCwgSW5jLgotMDA1MDE4ICAgICAoYmFzZSAxNikJCUFNSVQsIEluYy4KLQkJCQlOby4zMiwgSHVhbmdvbmcgUmQuLAotCQkJCVlvbmdrYW5nIENpdHksIFRhaW5hbiBDb3VudHkgNzEwNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTE5ICAgKGhleCkJCVNQUklORyBUSURFIE5FVFdPUktTLCBJTkMuCi0wMDUwMTkgICAgIChiYXNlIDE2KQkJU1BSSU5HIFRJREUgTkVUV09SS1MsIElOQy4KLQkJCQk4NSBTV0FOU09OIFJPQUQKLQkJCQlCT1hCT1JPVUdIIE1BIDAxNzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0xQSAgIChoZXgpCQlJUWluVmlzaW9uCi0wMDUwMUEgICAgIChiYXNlIDE2KQkJSVFpblZpc2lvbgotCQkJCTMzMTIyIFZhbGxlIFJvYWQKLQkJCQlTYW4gSnVhbiBDYXBpc3RyYW5vIENBIDkyNjc1LTQ4NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTFCICAgKGhleCkJCUFCTCBDQU5BREEsIElOQy4KLTAwNTAxQiAgICAgKGJhc2UgMTYpCQlBQkwgQ0FOQURBLCBJTkMuCi0JCQkJODU1MCBDT1RFIERFIExJRVNTRQotCQkJCVNULUxBVVJFTlQgKFFVRUJFQykgSDRUIDFIMiAgCi0JCQkJQ0FOQURBCi0KLTAwLTUwLTFDICAgKGhleCkJCUpBVE9NIFNZU1RFTVMsIElOQy4KLTAwNTAxQyAgICAgKGJhc2UgMTYpCQlKQVRPTSBTWVNURU1TLCBJTkMuCi0JCQkJOTkgTUlDSEFFTCBDT1dQTEFORCBEUklWRQotCQkJCUtBTkFUQQotCQkJCU9OVEFSSU8sIEsyTSAxWDMgIAotCQkJCUNBTkFEQQotCi0wMC01MC0xRSAgIChoZXgpCQlNaXJhbmRhIFRlY2hub2xvZ2llcywgSW5jLgotMDA1MDFFICAgICAoYmFzZSAxNikJCU1pcmFuZGEgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMzQ5OSwgRG91Z2xhcyBCLiBGbG9yZWFuaQotCQkJCVNhbml0LUxhdXJlbnQsIFFDCi0JCQkJSDRTIDJDNiAKLQkJCQlDQU5BREEKLQotMDAtNTAtMUYgICAoaGV4KQkJTVJHIFNZU1RFTVMsIExURC4KLTAwNTAxRiAgICAgKGJhc2UgMTYpCQlNUkcgU1lTVEVNUywgTFRELgotCQkJCVdJTExPVyBIT1VTRSwgU0xBRCBST0FECi0JCQkJU1RST1VECi0JCQkJR0xPUy4gIEdMNSAxUUcgRW5nbGFuZCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtMjAgICAoaGV4KQkJTUVESUFTVEFSIENPLiwgTFRELgotMDA1MDIwICAgICAoYmFzZSAxNikJCU1FRElBU1RBUiBDTy4sIExURC4KLQkJCQkzRkwsIFNPSFVOIEJMREcuCi0JCQkJOTUxLTMzIERPR09LLURPTkcsIEtBTkdOQU0tS1UgU0VPVUwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC01MC0yMSAgIChoZXgpCQlFSVMgSU5URVJOQVRJT05BTCwgSU5DLgotMDA1MDIxICAgICAoYmFzZSAxNikJCUVJUyBJTlRFUk5BVElPTkFMLCBJTkMuCi0JCQkJMTM1MSBXQVNISU5HVE9OIEJMVkQuCi0JCQkJU1RBTUZPUkQgQ1QgMDY5MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTIyICAgKGhleCkJCVpPTkVUIFRFQ0hOT0xPR1ksIElOQy4KLTAwNTAyMiAgICAgKGJhc2UgMTYpCQlaT05FVCBURUNITk9MT0dZLCBJTkMuCi0JCQkJODMwIFJPT00sIEJMREcuIDUzLCAxOTUsIFNFQy40Ci0JCQkJQ0hVTkcgSFNJVU5HIFJELCBDSFVUVU5HCi0JCQkJSFNJTkNIQSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC0yMyAgIChoZXgpCQlQRyBERVNJR04gRUxFQ1RST05JQ1MsIElOQy4KLTAwNTAyMyAgICAgKGJhc2UgMTYpCQlQRyBERVNJR04gRUxFQ1RST05JQ1MsIElOQy4KLQkJCQk0ODcwMCBTVFJVQ1RVUkFMIERSSVZFCi0JCQkJQ0hFU1RFUkZJRUxEIE1JIDQ4MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0yNCAgIChoZXgpCQlOQVZJQyBTWVNURU1TLCBJTkMuCi0wMDUwMjQgICAgIChiYXNlIDE2KQkJTkFWSUMgU1lTVEVNUywgSU5DLgotCQkJCTc0IENSRVNDRU5UIFNUUkVFVAotCQkJCU5FRURIQU0gTUEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTI2ICAgKGhleCkJCUNPU1lTVEVNUywgSU5DLgotMDA1MDI2ICAgICAoYmFzZSAxNikJCUNPU1lTVEVNUywgSU5DLgotCQkJCTEyNjMgT0FLTUVBRCBQQVJLV0FZCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0yNyAgIChoZXgpCQlHRU5JQ09NIENPUlBPUkFUSU9OCi0wMDUwMjcgICAgIChiYXNlIDE2KQkJR0VOSUNPTSBDT1JQT1JBVElPTgotCQkJCTkwMCBDTE9QUEVSIFJPQUQgLSBTVEUuICMxMTAKLQkJCQlHQUlUSEVSU0JVUkcgTUQgMjA4NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTI4ICAgKGhleCkJCUFWQUwgQ09NTVVOSUNBVElPTlMKLTAwNTAyOCAgICAgKGJhc2UgMTYpCQlBVkFMIENPTU1VTklDQVRJT05TCi0JCQkJMTc3NyBOT1JUSCBDQUxJRk9STklBIEJMVkQuCi0JCQkJV0FMTlVUIENSRUVLIENBIDk0NTk2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0yOSAgIChoZXgpCQkxMzk0IFBSSU5URVIgV09SS0lORyBHUk9VUAotMDA1MDI5ICAgICAoYmFzZSAxNikJCTEzOTQgUFJJTlRFUiBXT1JLSU5HIEdST1VQCi0JCQkJUC5PLiBCT1ggMjMxNTgKLQkJCQlTQU4gSk9TRSBDQSA5NTE1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMkEgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDJBICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQlNL1MgU0pBLTIKLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMkIgICAoaGV4KQkJR0VOUkFEIExURC4KLTAwNTAyQiAgICAgKGJhc2UgMTYpCQlHRU5SQUQgTFRELgotCQkJCU9SSU9OIEJVU0lORVNTIFBBUksKLQkJCQlCSVJESEFMTCBMQU5FIFNUT0NLUE9SVCwgQ0hFU0hJUkUKLQkJCQlVTklURUQgS0lOR0RPTSBTSzMgT1hHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtMkMgICAoaGV4KQkJU09ZTyBDT01QVVRFUiwgSU5DLgotMDA1MDJDICAgICAoYmFzZSAxNikJCVNPWU8gQ09NUFVURVIsIElOQy4KLQkJCQlOTy4gMjEgV1UtS1VORyA1IFJELgotCQkJCUhTSU5HIENIVUFORyBDSVRZIFRBSVBFSSBIU0lFTgotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC0yRCAgIChoZXgpCQlBQ0NFTCwgSU5DLgotMDA1MDJEICAgICAoYmFzZSAxNikJCUFDQ0VMLCBJTkMuCi0JCQkJMUYsIE5PLiA3LCBSJkQgMVNUIFJPQUQKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtMkUgICAoaGV4KQkJQ0FNQkVYIENPUlBPUkFUSU9OCi0wMDUwMkUgICAgIChiYXNlIDE2KQkJQ0FNQkVYIENPUlBPUkFUSU9OCi0JCQkJMTE1IEZsYW5kZXJzIFJvYWQKLQkJCQlXZXN0Ym9yb3VnaCBNQSAwMTU4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMkYgICAoaGV4KQkJVG9sbEJyaWRnZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwNTAyRiAgICAgKGJhc2UgMTYpCQlUb2xsQnJpZGdlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTg3MiBIRVJNT1NBIERSSVZFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zMCAgIChoZXgpCQlGVVRVUkUgUExVUyBTWVNURU1TCi0wMDUwMzAgICAgIChiYXNlIDE2KQkJRlVUVVJFIFBMVVMgU1lTVEVNUwotCQkJCTM2IE9MREUgRU5HTElTSCBSRC4KLQkJCQlCRURGT1JEIE5IIDAzMTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zMSAgIChoZXgpCQlBRVJPRkxFWCBMQUJPUkFUT1JJRVMsIElOQy4KLTAwNTAzMSAgICAgKGJhc2UgMTYpCQlBRVJPRkxFWCBMQUJPUkFUT1JJRVMsIElOQy4KLQkJCQkzNSBTT1VUSCBTRVJWSUNFIFJPQUQKLQkJCQlQTEFJTlZJRVcgTlkgMTE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTMyICAgKGhleCkJCVBJQ0FaTyBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA1MDMyICAgICAoYmFzZSAxNikJCVBJQ0FaTyBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTYxIERBR0dFVFQgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMzMgICAoaGV4KQkJTUFZQU4gTkVUV09SS1MKLTAwNTAzMyAgICAgKGJhc2UgMTYpCQlNQVlBTiBORVRXT1JLUwotCQkJCTMzNTAgU0NPVFQgQkxWRC4gLSBCTERHLiAjOQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zNiAgIChoZXgpCQlORVRDQU0sIExURC4KLTAwNTAzNiAgICAgKGJhc2UgMTYpCQlORVRDQU0sIExURC4KLQkJCQk2MDcxIE4uIFBBU0VPIFpBTERJVkFSCi0JCQkJVFVDU09OIEFaIDg1NzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zNyAgIChoZXgpCQlLT0dBIEVMRUNUUk9OSUNTIENPLgotMDA1MDM3ICAgICAoYmFzZSAxNikJCUtPR0EgRUxFQ1RST05JQ1MgQ08uCi0JCQkJNS04LTEwLCBURUhBUkEsIFJJVFRPLUNITwotCQkJCUtVUklUQSBHVU4KLQkJCQlTSElHQSwgNDIwLTMwNDcgIAotCQkJCUpBUEFOCi0KLTAwLTUwLTM4ICAgKGhleCkJCURBSU4gVEVMRUNPTSBDTy4sIExURC4KLTAwNTAzOCAgICAgKGJhc2UgMTYpCQlEQUlOIFRFTEVDT00gQ08uLCBMVEQuCi0JCQkJMk5EIEZsci4sIE9ILVNVTkcgQkxERy4gIzItMjgKLQkJCQlZQU5HSkFFLURPTkcsIFNFT0NITy1HVSBTRU9VTCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNTAtMzkgICAoaGV4KQkJTUFSSU5FUiBORVRXT1JLUwotMDA1MDM5ICAgICAoYmFzZSAxNikJCU1BUklORVIgTkVUV09SS1MKLQkJCQkxNTg1IFMuIE1BTkNIRVNURVIgQVZFLgotCQkJCUFOQUhFSU0gQ0EgOTI4MDItMjkwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtM0EgICAoaGV4KQkJREFUT05HIEVMRUNUUk9OSUNTIExURC4KLTAwNTAzQSAgICAgKGJhc2UgMTYpCQlEQVRPTkcgRUxFQ1RST05JQ1MgTFRELgotCQkJCUNMQVlUT04gV09PRCBDTE9TRQotCQkJCVdFU1QgUEFSSwotCQkJCUxlZWRzIExTMTYgNlFFICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC0zQiAgIChoZXgpCQlNRURJQUZJUkUgQ09SUE9SQVRJT04KLTAwNTAzQiAgICAgKGJhc2UgMTYpCQlNRURJQUZJUkUgQ09SUE9SQVRJT04KLQkJCQkxMTMxNyBGUkVERVJJQ0sgQVZFTlVFCi0JCQkJQkVMVFNWSUxMRSBNRCAyMDcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtM0MgICAoaGV4KQkJVFNJTkdIVUEgTk9WRUwgRUxFQ1RST05JQ1MKLTAwNTAzQyAgICAgKGJhc2UgMTYpCQlUU0lOR0hVQSBOT1ZFTCBFTEVDVFJPTklDUwotCQkJCUNPLiwgTFRELgotCQkJCVJPT00gMTIwNSwgSFVBWUUgQlVJTERJTkcgVFNJTkdIVUEgVU5JVkUKLQkJCQkxMDAwODQgMTAwMDg0IENISU5BCi0JCQkJQ0hJTkEKLQotMDAtNTAtM0UgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDNFICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJTS9TLyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTNGICAgKGhleCkJCUFOQ0hPUiBHQU1FUwotMDA1MDNGICAgICAoYmFzZSAxNikJCUFOQ0hPUiBHQU1FUwotCQkJCTgxNSBQSUxPVCBST0FELCBTdWl0ZSBHCi0JCQkJTEFTIFZFR0FTIE5WIDg5MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC00MCAgIChoZXgpCQlQYW5hc29uaWMgRWxlY3RyaWMgV29ya3MgQ28uLCBMdGQuCi0wMDUwNDAgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIEVsZWN0cmljIFdvcmtzIENvLiwgTHRkLgotCQkJCVRzdS1GYWN0b3J5LCAxNjY4LCBGdWppa2F0YQotCQkJCVRzdS1zaGkgTWllLWtlbiA1MTQtODU1NQotCQkJCUpBUEFOCi0KLTAwLTUwLTQxICAgKGhleCkJCUNvcmV0cm9uaWMgQ29ycG9yYXRpb24KLTAwNTA0MSAgICAgKGJhc2UgMTYpCQlDb3JldHJvbmljIENvcnBvcmF0aW9uCi0JCQkJTk8uMTEsIExJIEhTSU4gUkQuCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSElTTkNIVQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtNDIgICAoaGV4KQkJU0NJIE1BTlVGQUNUVVJJTkcgU0lOR0FQT1JFIFBURSwgTFRELgotMDA1MDQyICAgICAoYmFzZSAxNikJCVNDSSBNQU5VRkFDVFVSSU5HIFNJTkdBUE9SRSBQVEUsIExURC4KLQkJCQkzIERFUE9UIENMT1NFCi0JCQkJU0lOR0FQT1JFIDEwOTg0MCAKLQkJCQlTSU5HQVBPUkUKLQotMDAtNTAtNDMgICAoaGV4KQkJTUFSVkVMTCBTRU1JQ09ORFVDVE9SLCBJTkMuCi0wMDUwNDMgICAgIChiYXNlIDE2KQkJTUFSVkVMTCBTRU1JQ09ORFVDVE9SLCBJTkMuCi0JCQkJNjQ1IEFMTUFOT1IgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC00NCAgIChoZXgpCQlBU0FDQSBDT1JQT1JBVElPTgotMDA1MDQ0ICAgICAoYmFzZSAxNikJCUFTQUNBIENPUlBPUkFUSU9OCi0JCQkJNDIwIENPUlBPUkFURSBDSVJDTEUsIFVuaXQgSAotCQkJCUdPTERFTiBDTyA4MDQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNDUgICAoaGV4KQkJUklPV09SS1MgU09MVVRJT05TLCBJTkMuCi0wMDUwNDUgICAgIChiYXNlIDE2KQkJUklPV09SS1MgU09MVVRJT05TLCBJTkMuCi0JCQkJNEYsIE5PLjI4LCBMQU5FIDU4MwotCQkJCUpVSS1LV0FORyBST0FEIFRBSVBFSSwgIDExNDU3Ci0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTQ2ICAgKGhleCkJCU1FTklDWCBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotMDA1MDQ2ICAgICAoYmFzZSAxNikJCU1FTklDWCBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotCQkJCU5PLjksIE1JTkcgVFNVTiBST0FECi0JCQkJQ0hVVFVORywgSFNJTkNIVQotCQkJCVRBSVdBTiAzMTAgVEFJV0FOIDMxMCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTQ3ICAgKGhleCkJCVBSSVZBVEUKLTAwNTA0NyAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtNTAtNDggICAoaGV4KQkJSU5GT0xJQlJJQQotMDA1MDQ4ICAgICAoYmFzZSAxNikJCUlORk9MSUJSSUEKLQkJCQk0MTEgV0FWRVJMWSBPQUtTIFJELVNURSAjMzIzCi0JCQkJV0FMVEhBTSBNQSAwMjE1NC04NDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC00OSAgIChoZXgpCQlBcmJvciBOZXR3b3JrcyBJbmMKLTAwNTA0OSAgICAgKGJhc2UgMTYpCQlBcmJvciBOZXR3b3JrcyBJbmMKLQkJCQk2IE9tbmkgV2F5Ci0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNEEgICAoaGV4KQkJRUxURUNPIEEuUy4KLTAwNTA0QSAgICAgKGJhc2UgMTYpCQlFTFRFQ08gQS5TLgotCQkJCVJPU0lOU0tBIENFU1RBICBQLk8uIEJPWCBDLTkKLQkJCQkwMTAwMSBaSUxJTkEKLQkJCQlTTE9WQUtJQQotCQkJCVNMT1ZBS0lBCi0KLTAwLTUwLTRCICAgKGhleCkJCUJBUkNPTkVUIE4uVi4KLTAwNTA0QiAgICAgKGJhc2UgMTYpCQlCQVJDT05FVCBOLlYuCi0JCQkJTFVJUEFBUkRTVFJBQVQgMTIKLQkJCQk4NTAwIEtPUlRSSUpLCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtNTAtNEMgICAoaGV4KQkJR2FsaWwgTW90aW9uIENvbnRyb2wKLTAwNTA0QyAgICAgKGJhc2UgMTYpCQlHYWxpbCBNb3Rpb24gQ29udHJvbAotCQkJCTI3MCBUZWNobm9sb2d5IFdheQotCQkJCVJvY2tsaW4gQ0EgOTU3NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTREICAgKGhleCkJCVRva3lvIEVsZWN0cm9uIERldmljZSBMaW1pdGVkCi0wMDUwNEQgICAgIChiYXNlIDE2KQkJVG9reW8gRWxlY3Ryb24gRGV2aWNlIExpbWl0ZWQKLQkJCQkxLCBIaWdhc2hpa2F0YS1tYWNoaSwgVHN1enVraS1rdSwKLQkJCQlZb2tvaGFtYS1zaGkgS2FuYWdhd2Eta2VuIAotCQkJCUpBUEFOCi0KLTAwLTUwLTRFICAgKGhleCkJCVNJRVJSQSBNT05JVE9SIENPUlAuCi0wMDUwNEUgICAgIChiYXNlIDE2KQkJU0lFUlJBIE1PTklUT1IgQ09SUC4KLQkJCQkxOTkxIFRBUk9CIENPVVJUCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTRGICAgKGhleCkJCU9MRU5DT00gRUxFQ1RST05JQ1MKLTAwNTA0RiAgICAgKGJhc2UgMTYpCQlPTEVOQ09NIEVMRUNUUk9OSUNTCi0JCQkJU09MVEFNIElORFVTVFJJQUwgUEFSSwotCQkJCVAuTy4gQk9YIDE5NgotCQkJCVlPS05FQU0gMjA2OTIgIAotCQkJCUlTUkFFTAotCi0wMC01MC01MCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwNTAgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTEgICAoaGV4KQkJSVdBVFNVIEVMRUNUUklDIENPLiwgTFRELgotMDA1MDUxICAgICAoYmFzZSAxNikJCUlXQVRTVSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQk3LTQxLCBLVUdBWUFNQSAxLUNIT01FCi0JCQkJU1VHSU5BTUktS1UsIFRPS1lPIDE2OC04NTAxICAKLQkJCQlKQVBBTgotCi0wMC01MC01MiAgIChoZXgpCQlUSUFSQSBORVRXT1JLUywgSU5DLgotMDA1MDUyICAgICAoYmFzZSAxNikJCVRJQVJBIE5FVFdPUktTLCBJTkMuCi0JCQkJMTEzIEZPT1JJRVIgQVZFTlVFCi0JCQkJRlJFTU9OVCBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDUzICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFLVNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTQgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDU0ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQlNL1MgU0pBLTIKLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTUgICAoaGV4KQkJRE9NUyBBL1MKLTAwNTA1NSAgICAgKGJhc2UgMTYpCQlET01TIEEvUwotCQkJCUZPUk1FUlZBTkdFTiAyOAotCQkJCURLLTI2MDAgR0xPU1RSVVAKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC01MC01NiAgIChoZXgpCQlWTXdhcmUsIEluYy4KLTAwNTA1NiAgICAgKGJhc2UgMTYpCQlWTXdhcmUsIEluYy4KLQkJCQkzNDAxIEhpbGx2aWV3IEF2ZW51ZQotCQkJCVBBTE8gQUxUTyBDQSA5NDMwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTcgICAoaGV4KQkJQlJPQURCQU5EIEFDQ0VTUyBTWVNURU1TCi0wMDUwNTcgICAgIChiYXNlIDE2KQkJQlJPQURCQU5EIEFDQ0VTUyBTWVNURU1TCi0JCQkJMjAxIEZPUkVTVCBTVFJFRVQKLQkJCQlNQVJMQk9ST1VHSCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTggICAoaGV4KQkJVmVnYVN0cmVhbSBHcm91cCBMaW10ZWQKLTAwNTA1OCAgICAgKGJhc2UgMTYpCQlWZWdhU3RyZWFtIEdyb3VwIExpbXRlZAotCQkJCUFzbWVjIENlbnRyZSwgRWFnbGUgSG91c2UKLQkJCQlUaGUgUmluZwotCQkJCUJyYWNrbmVsbCBCZXJrc2hpcmUgUkcxMiAxSEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC01OSAgIChoZXgpCQlpQkFITgotMDA1MDU5ICAgICAoYmFzZSAxNikJCWlCQUhOCi0JCQkJMTA3NTcgUy4gUml2ZXIgRnJvbnQgUGFya3dheQotCQkJCVN1aXRlIDMwMAotCQkJCVNvdXRoIEpvcmRhbiBVVCA4NDA5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNUEgICAoaGV4KQkJTkVUV09SSyBBTENIRU1ZLCBJTkMuCi0wMDUwNUEgICAgIChiYXNlIDE2KQkJTkVUV09SSyBBTENIRU1ZLCBJTkMuCi0JCQkJMTUyMS41IFBBQ0lGSUMgQVZFTlVFCi0JCQkJU0FOVEEgQ1JVWiBDQSA5NTA2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNUIgICAoaGV4KQkJS0FXQVNBS0kgTFNJIFUuUy5BLiwgSU5DLgotMDA1MDVCICAgICAoYmFzZSAxNikJCUtBV0FTQUtJIExTSSBVLlMuQS4sIElOQy4KLQkJCQkyNTcwIE5PUlRIRklSU1QgU1RSRUVUCi0JCQkJU1VJVEUgIzMwMQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC01QyAgIChoZXgpCQlUVU5ETyBDT1JQT1JBVElPTgotMDA1MDVDICAgICAoYmFzZSAxNikJCVRVTkRPIENPUlBPUkFUSU9OCi0JCQkJNyBHSUJPUkVJIElTUkFFTCBTVFJFRVQKLQkJCQlOQVRBTllBIDQyNTA0ICAKLQkJCQlJU1JBRUwKLQotMDAtNTAtNUUgICAoaGV4KQkJRElHSVRFSyBNSUNST0xPR0lDIFMuQS4KLTAwNTA1RSAgICAgKGJhc2UgMTYpCQlESUdJVEVLIE1JQ1JPTE9HSUMgUy5BLgotCQkJCVNBTlQgSk9BTiBERSBMQSBTQUxMRSA2Ci0JCQkJRTA4MDIyIEJBUkNFTE9OQQotCQkJCVNQQUlOCi0JCQkJU1BBSU4KLQotMDAtNTAtNUYgICAoaGV4KQkJQlJBTkQgSU5OT1ZBVE9SUwotMDA1MDVGICAgICAoYmFzZSAxNikJCUJSQU5EIElOTk9WQVRPUlMKLQkJCQlERSBQSU5DSyBBUlQgNTQKLQkJCQk1Njc0IENDIE5VRU5FTiAgCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtNTAtNjAgICAoaGV4KQkJVEFOREJFUkcgVEVMRUNPTSBBUwotMDA1MDYwICAgICAoYmFzZSAxNikJCVRBTkRCRVJHIFRFTEVDT00gQVMKLQkJCQlQaGlsaXAgUGVkZXJzZW5zIHZlaSAyMAotCQkJCTEzNjEgTHlzYWtlciAKLQkJCQlOT1JXQVkKLQotMDAtNTAtNjIgICAoaGV4KQkJS09VV0VMTCBFTEVDVFJPTklDUyBDT1JQLiAgKioKLTAwNTA2MiAgICAgKGJhc2UgMTYpCQlLT1VXRUxMIEVMRUNUUk9OSUNTIENPUlAuICAqKgotCQkJCTdGLCBOTy45OSwgTkFOLUtBTkcgUk9BRAotCQkJCVNFQy4gMywgVEFJUEVJCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC02MyAgIChoZXgpCQlPWSBDT01TRUwgU1lTVEVNIEFCCi0wMDUwNjMgICAgIChiYXNlIDE2KQkJT1kgQ09NU0VMIFNZU1RFTSBBQgotCQkJCVRFR0VMQlJVS1NHQVRBTiA1LTcKLQkJCQlGSU4tNjUxMDAgVkFTQSAgCi0JCQkJRklOTEFORAotCi0wMC01MC02NCAgIChoZXgpCQlDQUUgRUxFQ1RST05JQ1MKLTAwNTA2NCAgICAgKGJhc2UgMTYpCQlDQUUgRUxFQ1RST05JQ1MKLQkJCQlQLk8uIEJPWCAxODAwCi0JCQkJU1QuIExBVVJFTlQsIFFVRUJFQyBINEwgNFg0ICAKLQkJCQlDQU5BREEKLQotMDAtNTAtNjUgICAoaGV4KQkJVERLLUxhbWJkYSBDb3Jwb3JhdGlvbgotMDA1MDY1ICAgICAoYmFzZSAxNikJCVRESy1MYW1iZGEgQ29ycG9yYXRpb24KLQkJCQkzNi0xIEthc3VtaW5vc2F0bwotCQkJCUFtaS1NYWNoaSBJbmFzaGlraS1HdW4gSWJhcmFraSwgMzAwLTAzOTYKLQkJCQlKQVBBTgotCi0wMC01MC02NiAgIChoZXgpCQlBdGVjb00gR21iSCBhZHZhbmNlZCB0ZWxlY29tdW5pY2F0aW9uIG1vZHVsZXMKLTAwNTA2NiAgICAgKGJhc2UgMTYpCQlBdGVjb00gR21iSCBhZHZhbmNlZCB0ZWxlY29tdW5pY2F0aW9uIG1vZHVsZXMKLQkJCQlLQUlTRVJTVFIuIDEwMAotCQkJCUQtNTIxMzQgSEVSWk9HRU5SQVRIICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLTY3ICAgKGhleCkJCUFFUk9DT01NLCBJTkMuCi0wMDUwNjcgICAgIChiYXNlIDE2KQkJQUVST0NPTU0sIElOQy4KLQkJCQkxMzI1NiBXLiA5OFRIIFNUUkVFVAotCQkJCUxFTkVYQSBLUyA2NjIxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNjggICAoaGV4KQkJRUxFQ1RST05JQyBJTkRVU1RSSUVTIEFTU09DSUFUSU9OCi0wMDUwNjggICAgIChiYXNlIDE2KQkJRUxFQ1RST05JQyBJTkRVU1RSSUVTIEFTU09DSUFUSU9OCi0JCQkJMjUwMCBXSUxTT04gQkxWRC4KLQkJCQlBUkxJTkdUT04gVkEgMjIyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTY5ICAgKGhleCkJCVBpeFN0cmVhbSBJbmNvcnBvcmF0ZWQKLTAwNTA2OSAgICAgKGJhc2UgMTYpCQlQaXhTdHJlYW0gSW5jb3Jwb3JhdGVkCi0JCQkJMTgwIENPTFVNQklBIFNULiBXLgotCQkJCVdBVEVSTE9PCi0JCQkJT250YXJpbyBOMkwgM0wzICAKLQkJCQlDQU5BREEKLQotMDAtNTAtNkEgICAoaGV4KQkJRURFVkEsIElOQy4KLTAwNTA2QSAgICAgKGJhc2UgMTYpCQlFREVWQSwgSU5DLgotCQkJCTI5OCBTLiBTVU5OWVZBTEUgQVZFLiAtICMyMDgKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTZCICAgKGhleCkJCVNQWC1BVEVHCi0wMDUwNkIgICAgIChiYXNlIDE2KQkJU1BYLUFURUcKLQkJCQk4MDIgUy4gTUFJTiBTVFJFRVQKLQkJCQlXQVlMQU5EIE1JIDQ5MzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC02QyAgIChoZXgpCQlCZWlqZXIgRWxlY3Ryb25pY3MgUHJvZHVjdHMgQUIKLTAwNTA2QyAgICAgKGJhc2UgMTYpCQlCZWlqZXIgRWxlY3Ryb25pY3MgUHJvZHVjdHMgQUIKLQkJCQlCb3ggNDI2Ci0JCQkJU0UtMjAxIDI0IE1hbG1vZSAKLQkJCQlTV0VERU4KLQotMDAtNTAtNkQgICAoaGV4KQkJVklERU9KRVQgU1lTVEVNUwotMDA1MDZEICAgICAoYmFzZSAxNikJCVZJREVPSkVUIFNZU1RFTVMKLQkJCQlJTlRFUk5BVElPTkFMIElOQy4KLQkJCQkxNTAwIE1JVFRFTCBCTFZELgotCQkJCVdPT0REQUxFIElMIDYwMDkxLTEwNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTZFICAgKGhleCkJCUNPUkRFUiBFTkdJTkVFUklORyBDT1JQT1JBVElPTgotMDA1MDZFICAgICAoYmFzZSAxNikJCUNPUkRFUiBFTkdJTkVFUklORyBDT1JQT1JBVElPTgotCQkJCTE1MSBLQUxNVVMgRFJJVkUgLSBTVEUgI0ExMDMKLQkJCQlDT1NUQSBNRVNBIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC02RiAgIChoZXgpCQlHLUNPTk5FQ1QKLTAwNTA2RiAgICAgKGJhc2UgMTYpCQlHLUNPTk5FQ1QKLQkJCQlQLk8uIEJPWCAyMjAwCi0JCQkJSEVSWkxJWUEgNDYxMjAgIAotCQkJCUlTUkFFTAotCi0wMC01MC03MCAgIChoZXgpCQlDSEFJTlRFQ0ggQ09NUFVURVIgQ08uLCBMVEQuCi0wMDUwNzAgICAgIChiYXNlIDE2KQkJQ0hBSU5URUNIIENPTVBVVEVSIENPLiwgTFRELgotCQkJCTVUSCBGLCBBTExFWSAyLCBMQU5FIDIyMgotCQkJCUxJRU4tQ0hFTkcgUkQuLCBDSFVORy1ITyBUQUlQRUktSFNJRU4KLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC03MSAgIChoZXgpCQlBSVdBIENPLiwgTFRELgotMDA1MDcxICAgICAoYmFzZSAxNikJCUFJV0EgQ08uLCBMVEQuCi0JCQkJMS0xMSwgS0FNSVRPTUFUU1VSSSA0LUNIT01FCi0JCQkJVVRTVU5PTUlZQS1TSEksIFRPQ0hJR0ktS0VOIDMyMC04NSAgCi0JCQkJSkFQQU4KLQotMDAtNTAtNzIgICAoaGV4KQkJQ09SVklTIENPUlBPUkFUSU9OCi0wMDUwNzIgICAgIChiYXNlIDE2KQkJQ09SVklTIENPUlBPUkFUSU9OCi0JCQkJODMyMCBHVUlMRk9SRCBST0FECi0JCQkJQ09MVU1CSUEgTUQgMjEwNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTczICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTA3MyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCU0vUyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTc0ICAgKGhleCkJCUFEVkFOQ0VEIEhJLVRFQ0ggQ09SUC4KLTAwNTA3NCAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBISS1URUNIIENPUlAuCi0JCQkJMTk5MCBFQVNUIEdSQU5EIEFWRS4KLQkJCQlFTCBTRUdVTkRPIENBIDkwNTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC03NSAgIChoZXgpCQlLRVNUUkVMIFNPTFVUSU9OUwotMDA1MDc1ICAgICAoYmFzZSAxNikJCUtFU1RSRUwgU09MVVRJT05TCi0JCQkJMjM3MCBDSEFSTEVTVE9OIFJPQUQKLQkJCQlNVC4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNzYgICAoaGV4KQkJSUJNIENvcnAKLTAwNTA3NiAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQIE8gQm94IDEyMTk1Ci0JCQkJUmVlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTc3ICAgKGhleCkJCVBST0xJRklDIFRFQ0hOT0xPR1ksIElOQy4KLTAwNTA3NyAgICAgKGJhc2UgMTYpCQlQUk9MSUZJQyBURUNITk9MT0dZLCBJTkMuCi0JCQkJNkYgMSwgTEFORSA1MSwgU0VDIDEKLQkJCQlOQU4tQ0hBTiBST0FEIFRBSVBFSQotCQkJCTEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtNzggICAoaGV4KQkJTUVHQVRPTiBIT1VTRSwgTFRELgotMDA1MDc4ICAgICAoYmFzZSAxNikJCU1FR0FUT04gSE9VU0UsIExURC4KLQkJCQlaSVA6IDIyNCBOTy4xLTMtNSBOQUtBTUFDSElCQUkKLQkJCQlUU1VEVUtJIFdBUkQKLQkJCQlZT0tPSEFNQSAgCi0JCQkJSkFQQU4KLQotMDAtNTAtNzkgICAoaGV4KQkJUFJJVkFURQotMDA1MDc5ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC01MC03QSAgIChoZXgpCQlYUEVFRCwgSU5DLgotMDA1MDdBICAgICAoYmFzZSAxNikJCVhQRUVELCBJTkMuCi0JCQkJNDY5OSBPTEQgSVJPTlNJREVTIERSSVZFCi0JCQkJU1VJVEUgIzMwMAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC03QiAgIChoZXgpCQlNRVJMT1QgQ09NTVVOSUNBVElPTlMKLTAwNTA3QiAgICAgKGJhc2UgMTYpCQlNRVJMT1QgQ09NTVVOSUNBVElPTlMKLQkJCQlCRVJLU0hJUkUgQ09SUE9SQVRFIFBBUksKLQkJCQk0IEJFUktTSElSRSBCTFZELgotCQkJCUJFVEhFTCBDVCAwNjgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtN0MgICAoaGV4KQkJVklERU9DT04gQUcKLTAwNTA3QyAgICAgKGJhc2UgMTYpCQlWSURFT0NPTiBBRwotCQkJCUFMQkVSVC1TQ0hXRUlUWkVSLVNUUi4gNjQKLQkJCQlELTgxNzM1IE1VTklDSAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLTdEICAgKGhleCkJCUlGUAotMDA1MDdEICAgICAoYmFzZSAxNikJCUlGUAotCQkJCUxFU1NJTkdTVFIuIDQKLQkJCQlELTc4MzE1IFJBRE9MRlpFTEwgIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtN0UgICAoaGV4KQkJTkVXRVIgVEVDSE5PTE9HWQotMDA1MDdFICAgICAoYmFzZSAxNikJCU5FV0VSIFRFQ0hOT0xPR1kKLQkJCQk0ODQ4IFdFU1QgSVJWSU5HIFNULgotCQkJCVdJQ0hJVEEgS1MgNjcyMDktMjYyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtN0YgICAoaGV4KQkJRHJheVRlayBDb3JwLgotMDA1MDdGICAgICAoYmFzZSAxNikJCURyYXlUZWsgQ29ycC4KLQkJCQkyNiwgRnVzaGluZyBSZC4KLQkJCQlIc2luY2h1IEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW5jaHUgSHVrb3UgMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC04MCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwODAgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCU0vUyBTSkEtMgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC04MSAgIChoZXgpCQlNVVJBVEEgTUFDSElORVJZLCBMVEQuCi0wMDUwODEgICAgIChiYXNlIDE2KQkJTVVSQVRBIE1BQ0hJTkVSWSwgTFRELgotCQkJCTEzNiwgVEFLRURBLU1VS0FJU0hJUk8tQ0hPCi0JCQkJRlVTSElNSS1LVSwgS1lPVE8gNjEyLTg2ODYgIAotCQkJCUpBUEFOCi0KLTAwLTUwLTgyICAgKGhleCkJCUZPUkVTU09OIENPUlBPUkFUSU9OCi0wMDUwODIgICAgIChiYXNlIDE2KQkJRk9SRVNTT04gQ09SUE9SQVRJT04KLQkJCQkzRiwgTk8uOSBTRUMuMQotCQkJCUNIQU5HIEFOIEVBU1QgUk9BRAotCQkJCVRBSVBFSSAxMDQwNCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC04MyAgIChoZXgpCQlHSUxCQVJDTywgSU5DLgotMDA1MDgzICAgICAoYmFzZSAxNikJCUdJTEJBUkNPLCBJTkMuCi0JCQkJUE9CIDIyMDg3Ci0JCQkJR1JFRU5TQk9STyBOQyAyNzQyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtODQgICAoaGV4KQkJQVRMIFBST0RVQ1RTCi0wMDUwODQgICAgIChiYXNlIDE2KQkJQVRMIFBST0RVQ1RTCi0JCQkJMjgwMSBLRUxWSU4gQVZFTlVFCi0JCQkJSVJWSU5FIENBIDkyNjE0LTU4NzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTg2ICAgKGhleCkJCVRFTEtPTSBTQSwgTFRELgotMDA1MDg2ICAgICAoYmFzZSAxNikJCVRFTEtPTSBTQSwgTFRELgotCQkJCVRFTEtPTSBMQUJPUkFUT1JZCi0JCQkJUC4gQkFHIFg3NAotCQkJCVBSRVRPUklBICAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtNTAtODcgICAoaGV4KQkJVEVSQVNBS0kgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDUwODcgICAgIChiYXNlIDE2KQkJVEVSQVNBS0kgRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJNy0yLTEwIEhBTk5BTi1DSE8gQUJFTk8tS1UKLQkJCQlPU0FLQSwgNTQ1LTAwMjEgIAotCQkJCUpBUEFOCi0KLTAwLTUwLTg4ICAgKGhleCkJCUFNQU5PIENPUlBPUkFUSU9OCi0wMDUwODggICAgIChiYXNlIDE2KQkJQU1BTk8gQ09SUE9SQVRJT04KLQkJCQkyNzUsIE1BTUVETy1DSE8KLQkJCQlLT1VIT0tVLUtVLCBZT0tPSEFNQQotCQkJCTIyMi04NTU4ICAKLQkJCQlKQVBBTgotCi0wMC01MC04OSAgIChoZXgpCQlTQUZFVFkgTUFOQUdFTUVOVCBTWVNURU1TCi0wMDUwODkgICAgIChiYXNlIDE2KQkJU0FGRVRZIE1BTkFHRU1FTlQgU1lTVEVNUwotCQkJCUJSQU5ERVJJSlNUUkFBVCA2Ci0JCQkJNTIyMyBBUyAnUy1IRVJUT0dFTkJPU0NIJyAgTkVUSEVSTEFORFMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC01MC04QiAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwNTA4QiAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtOEMgICAoaGV4KQkJUlNJIFNZU1RFTVMKLTAwNTA4QyAgICAgKGJhc2UgMTYpCQlSU0kgU1lTVEVNUwotCQkJCTU1NTUgVy4gNzhUSCBTVFJFRVQsIFN1aXRlIEYKLQkJCQlFRElOQSBNTiA1NTQzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtOEQgICAoaGV4KQkJQUJJVCBDT01QVVRFUiBDT1JQT1JBVElPTgotMDA1MDhEICAgICAoYmFzZSAxNikJCUFCSVQgQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQkzRi03LCBOTy4gNzksIFNFQy4xCi0JCQkJSFNJTiBUQUkgV1UgUk9BRCwgSFNJIENISQotCQkJCVRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC04RSAgIChoZXgpCQlPUFRJTUFUSU9OLCBJTkMuCi0wMDUwOEUgICAgIChiYXNlIDE2KQkJT1BUSU1BVElPTiwgSU5DLgotCQkJCVAuTy4gQk9YIDE0MzU3Ci0JCQkJSFVOVFNWSUxMRSBBTCAzNTgxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtOEYgICAoaGV4KQkJQVNJVEEgVEVDSE5PTE9HSUVTIElOVCdMIExURC4KLTAwNTA4RiAgICAgKGJhc2UgMTYpCQlBU0lUQSBURUNITk9MT0dJRVMgSU5UJ0wgTFRELgotCQkJCVVOSVQgMiBCQUxMWUJSSVQgQlVTSU5FU1MgUEFSSwotCQkJCUdBTFdBWQotCQkJCUlSRUxBTkQKLQotMDAtNTAtOTAgICAoaGV4KQkJRENUUkkKLTAwNTA5MCAgICAgKGJhc2UgMTYpCQlEQ1RSSQotCQkJCU5PLjQwIFhVRSBZVUFOIFJECi0JCQkJSEFJRElBTiBESVNUUklDVCBCRUlKSU5HLCAxMDAwODMsIFAuUi4KLQkJCQlDSElOQQotCQkJCUNISU5BCi0KLTAwLTUwLTkxICAgKGhleCkJCU5FVEFDQ0VTUywgSU5DLgotMDA1MDkxICAgICAoYmFzZSAxNikJCU5FVEFDQ0VTUywgSU5DLgotCQkJCTE4IEtFRVdBWURJTiBEUklWRQotCQkJCVNBTEVNIE5IIDAzMDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC05MiAgIChoZXgpCQlSSUdBS1UgSU5EVVNUUklBTCBDT1JQT1JBVElPTgotMDA1MDkyICAgICAoYmFzZSAxNikJCVJJR0FLVSBJTkRVU1RSSUFMIENPUlBPUkFUSU9OCi0JCQkJMTQtOCBBS0FPSkktQ0hPCi0JCQkJVEFLQVRTVUtJLVNISSwgT1NBS0EgNTY5LTExNDYgIAotCQkJCUpBUEFOCi0KLTAwLTUwLTkzICAgKGhleCkJCUJPRUlORwotMDA1MDkzICAgICAoYmFzZSAxNikJCUJPRUlORwotCQkJCTMzNzAgTWlyYWxvbWEgQXZlbnVlCi0JCQkJQW5haGVpbSBDQSA5MjgwMy0zMTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC05NCAgIChoZXgpCQlQQUNFIHBsYwotMDA1MDk0ICAgICAoYmFzZSAxNikJCVBBQ0UgcGxjCi0JCQkJVklDVE9SSUEgUkQsIFNBTFRBSVJFCi0JCQkJU0hJUExFWSwgVy4gWU9SS1NISVJFIEJSQURGT1JEICBCRDI4IDNMRgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC05NSAgIChoZXgpCQlQRVJBQ09NIE5FVFdPUktTCi0wMDUwOTUgICAgIChiYXNlIDE2KQkJUEVSQUNPTSBORVRXT1JLUwotCQkJCTEzMDAwIFdFU1RPTiBQQVJLV0FZCi0JCQkJU1VJVEUgIzEwNQotCQkJCUNBUlkgTkMgMjc1MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTk2ICAgKGhleCkJCVNBTElYIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA1MDk2ICAgICAoYmFzZSAxNikJCVNBTElYIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTkwNCBXSU5EIFJJVkVSIExBTkUtIFNURS4gIzEwMQotCQkJCUdBSVRIRVJTQlVSRyBNRCAyMDg3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtOTcgICAoaGV4KQkJTU1DLUVNQkVEREVEIENPTVBVVEVSVEVDSE5JSyBHbWJICi0wMDUwOTcgICAgIChiYXNlIDE2KQkJTU1DLUVNQkVEREVEIENPTVBVVEVSVEVDSE5JSyBHbWJICi0JCQkJVUxSSUNIU0JFUkdFUlNUUi4gMTcKLQkJCQlELTk0NDY5IERFR0dFTkRPUkYgIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtOTggICAoaGV4KQkJR0xPQkFMT09QLCBMVEQuCi0wMDUwOTggICAgIChiYXNlIDE2KQkJR0xPQkFMT09QLCBMVEQuCi0JCQkJMTIgSEFTSEFST04gUk9BRAotCQkJCUtGQVIgU0FCQSA0NDI2OSAgCi0JCQkJSVNSQUVMCi0KLTAwLTUwLTk5ICAgKGhleCkJCTNDT00gRVVST1BFLCBMVEQuCi0wMDUwOTkgICAgIChiYXNlIDE2KQkJM0NPTSBFVVJPUEUsIExURC4KLQkJCQlCT1VOREFSWSBXQVkKLQkJCQlIRU1FTCBIRU1QU1RFQUQKLQkJCQlIRVJUUy4gSFAyIDdZVSAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtOUEgICAoaGV4KQkJVEFHIEVMRUNUUk9OSUMgU1lTVEVNUwotMDA1MDlBICAgICAoYmFzZSAxNikJCVRBRyBFTEVDVFJPTklDIFNZU1RFTVMKLQkJCQlHRU5FU0lTIEJVU0lORVNTIFBBUksKLQkJCQlBbGJlcnQgRHJpdmUKLQkJCQlXT0tJTkcsIFNVUlJFWSBHVTIxIDVSVyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtOUIgICAoaGV4KQkJU1dJVENIQ09SRSBBQgotMDA1MDlCICAgICAoYmFzZSAxNikJCVNXSVRDSENPUkUgQUIKLQkJCQlQT1NJVElPTkVOIDE1MwotCQkJCTExNSA3NCBTVE9DS0hPTE0KLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtNTAtOUMgICAoaGV4KQkJQkVUQSBSRVNFQVJDSAotMDA1MDlDICAgICAoYmFzZSAxNikJCUJFVEEgUkVTRUFSQ0gKLQkJCQlCRVRBU1RSLiAxCi0JCQkJODU3NzQgVU5URVJGT0VIUklORyAgCi0JCQkJR0VSTUFOWQotCi0wMC01MC05RCAgIChoZXgpCQlUSEUgSU5EVVNUUkVFIEIuVi4KLTAwNTA5RCAgICAgKGJhc2UgMTYpCQlUSEUgSU5EVVNUUkVFIEIuVi4KLQkJCQlQLk8uIEJPWCA0NjIKLQkJCQk1NjAwIEFMIEVJTkRIT1ZFTgotCQkJCVRIRSBORVRIRVJMQU5EUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTUwLTlFICAgKGhleCkJCUxlcyBUZWNobm9sb2dpZXMgU29mdEFjb3VzdGlrIEluYy4KLTAwNTA5RSAgICAgKGJhc2UgMTYpCQlMZXMgVGVjaG5vbG9naWVzIFNvZnRBY291c3RpayBJbmMuCi0JCQkJCi0JCQkJMzkwLCBSVUUgU0FJTlQtVkFMTElFUiBFU1QsIDR0aCBmbG9vcgotCQkJCVF1ZWJlYyBHMUsgIDNQNiAgCi0JCQkJQ0FOQURBCi0KLTAwLTUwLTlGICAgKGhleCkJCUhPUklaT04gQ09NUFVURVIKLTAwNTA5RiAgICAgKGJhc2UgMTYpCQlIT1JJWk9OIENPTVBVVEVSCi0JCQkJVFJJTklUWSBCTERHLiA0LTIyLTcKLQkJCQlOSVNISS1BWkFCVSwgTUlOQVRPLUtVCi0JCQkJIFRPS1lPIDEwNiAgCi0JCQkJSkFQQU4KLQotMDAtNTAtQTAgICAoaGV4KQkJREVMVEEgQ09NUFVURVIgU1lTVEVNUywgSU5DLgotMDA1MEEwICAgICAoYmFzZSAxNikJCURFTFRBIENPTVBVVEVSIFNZU1RFTVMsIElOQy4KLQkJCQkxMTcxOSBORSA5NVRIIFNUUkVFVCAtIFNURS4KLQkJCQlWQU5DT1VWRVIgV0EgOTg2ODItMjQ0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQTEgICAoaGV4KQkJQ0FSTE8gR0FWQVpaSSwgSU5DLgotMDA1MEExICAgICAoYmFzZSAxNikJCUNBUkxPIEdBVkFaWkksIElOQy4KLQkJCQkyMjIgUEVOTkJSSUdIVCBEUi4gLSBTVEUuIzIxMAotCQkJCUhPVVNUT04gVFggNzcwOTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUEyICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTBBMiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRSAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQTMgICAoaGV4KQkJVHJhbnNNZWRpYSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDA1MEEzICAgICAoYmFzZSAxNikJCVRyYW5zTWVkaWEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyMCBHUkVBVCBPQUtTIEJMVkQuLCAjMjEwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUE0ICAgKGhleCkJCUlPIFRFQ0gsIElOQy4KLTAwNTBBNCAgICAgKGJhc2UgMTYpCQlJTyBURUNILCBJTkMuCi0JCQkJMjU5NzEgQ0FOTk9OIFJPQUQKLQkJCQlDTEVWRUxBTkQgT0ggNDQxNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUE1ICAgKGhleCkJCUNBUElUT0wgQlVTSU5FU1MgU1lTVEVNUywgTFRELgotMDA1MEE1ICAgICAoYmFzZSAxNikJCUNBUElUT0wgQlVTSU5FU1MgU1lTVEVNUywgTFRELgotCQkJCTQzLzQ0IFJJVkVSU0lERQotCQkJCVNJUiBUSE9NQVMgTE9OR0xFWSBST0FECi0JCQkJUk9DSEVTVEVSLCBLRU5UIEVuZ2xhbmQgTUUyIDREUCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC1BNiAgIChoZXgpCQlPUFRST05JQ1MKLTAwNTBBNiAgICAgKGJhc2UgMTYpCQlPUFRST05JQ1MKLQkJCQkxNzUgQ1JFTU9OQSBEUklWRQotCQkJCUdPTEVUQSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQTcgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MEE3ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJTS9TIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQTggICAoaGV4KQkJT3BlbkNvbiBTeXN0ZW1zLCBJbmMuCi0wMDUwQTggICAgIChiYXNlIDE2KQkJT3BlbkNvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJMzc3IEhPRVMgTEFORQotCQkJCVBJU0NBVEFXQVkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUE5ICAgKGhleCkJCU1PTERBVCBXSVJFTEVTUyBURUNITk9MR0lFUwotMDA1MEE5ICAgICAoYmFzZSAxNikJCU1PTERBVCBXSVJFTEVTUyBURUNITk9MR0lFUwotCQkJCTMgU0hJTU9OIElTUkFFTEkgU1RSRUVUCi0JCQkJUklTSE9OIExFIFpJT04gNzU2NTQKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtNTAtQUEgICAoaGV4KQkJS09OSUNBIE1JTk9MVEEgSE9MRElOR1MsIElOQy4KLTAwNTBBQSAgICAgKGJhc2UgMTYpCQlLT05JQ0EgTUlOT0xUQSBIT0xESU5HUywgSU5DLgotCQkJCTEtNi0xLCBNYXJ1bm91Y2hpLAotCQkJCUNoaXlvZGEta3UKLQkJCQlUb2t5byAgMTAwLTAwMDUKLQkJCQlKQVBBTgotCi0wMC01MC1BQiAgIChoZXgpCQlOQUxURUMsIEluYy4KLTAwNTBBQiAgICAgKGJhc2UgMTYpCQlOQUxURUMsIEluYy4KLQkJCQkxLTEtMTUsIE5ha2Fub2dvLCBTaGltaXp1LWt1Ci0JCQkJU2hpenVva2Etc2hpIFNoaXp1b2thIDQyNC0wODg4Ci0JCQkJSkFQQU4KLQotMDAtNTAtQUMgICAoaGV4KQkJTUFQTEUgQ09NUFVURVIgQ09SUE9SQVRJT04KLTAwNTBBQyAgICAgKGJhc2UgMTYpCQlNQVBMRSBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTJGLCBOTy4gMTg0LCBTRUMuIDIKLQkJCQlDSEFORy1BTiBFLiBSRC4KLQkJCQlUYWlwZWkgIAotCQkJCVRBSklLSVNUQU4KLQotMDAtNTAtQUQgICAoaGV4KQkJQ29tbVVuaXF1ZSBXaXJlbGVzcyBDb3JwLgotMDA1MEFEICAgICAoYmFzZSAxNikJCUNvbW1VbmlxdWUgV2lyZWxlc3MgQ29ycC4KLQkJCQkxMDcwIE1BUklOQSBWSUxMQUdFIFBBUktXQVkKLQkJCQlTVUlURSAjMjA2Ci0JCQkJQUxBTUVEQSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQUUgICAoaGV4KQkJSVdBS0kgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDUwQUUgICAgIChiYXNlIDE2KQkJSVdBS0kgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJMSwgS0FNQU5PTUFFCi0JCQkJSk9CQU4tS0FNSVlVTkFHQVlBLU1BQ0hJCi0JCQkJSVdBS0ktQ0lUWSwgRlVLVVNISU1BIDk3Mi04MzIyIDk3Mi04MzIyIAotCQkJCUpBUEFOCi0KLTAwLTUwLUFGICAgKGhleCkJCUlOVEVSR09OLCBJTkMuCi0wMDUwQUYgICAgIChiYXNlIDE2KQkJSU5URVJHT04sIElOQy4KLQkJCQk1ODAwIFJBTkNIRVNURVIgRFJJVkUKLQkJCQlIT1VTVE9OIFRYIDc3MDM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1CMCAgIChoZXgpCQlURUNITk9MT0dZIEFUTEFOVEEgQ09SUE9SQVRJT04KLTAwNTBCMCAgICAgKGJhc2UgMTYpCQlURUNITk9MT0dZIEFUTEFOVEEgQ09SUE9SQVRJT04KLQkJCQk1MDAgU3VnYXIgTWlsbCBSb2FkCi0JCQkJU3VpdGUgMjAyQQotCQkJCUF0bGFudGEgR0EgMzAzNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUIxICAgKGhleCkJCUdJRERJTkdTICYgTEVXSVMKLTAwNTBCMSAgICAgKGJhc2UgMTYpCQlHSURESU5HUyAmIExFV0lTCi0JCQkJNjYwIFMuIE1JTElUQVJZIFJELgotCQkJCUZPTkQgRFUgTEFDIFdJIDU0OTM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1CMiAgIChoZXgpCQlCUk9ERUwgQVVUT01BVElPTgotMDA1MEIyICAgICAoYmFzZSAxNikJCUJST0RFTCBBVVRPTUFUSU9OCi0JCQkJRGlzdGVsYnVzY2ggMjQKLQkJCQk0MjU0OSBWZWxiZXJ0IAotCQkJCUdFUk1BTlkKLQotMDAtNTAtQjMgICAoaGV4KQkJVk9JQ0VCT0FSRCBDT1JQT1JBVElPTgotMDA1MEIzICAgICAoYmFzZSAxNikJCVZPSUNFQk9BUkQgQ09SUE9SQVRJT04KLQkJCQkzMTUxIFdFU1QgRklGVEggU1RSRUVUCi0JCQkJT1hOQVJEIENBIDkzMDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1CNCAgIChoZXgpCQlTQVRDSFdFTEwgQ09OVFJPTCBTWVNURU1TLCBMVEQKLTAwNTBCNCAgICAgKGJhc2UgMTYpCQlTQVRDSFdFTEwgQ09OVFJPTCBTWVNURU1TLCBMVEQKLQkJCQlQLk8uIEJPWCA1NywgIDk0IEZBUk5IQU0gUk9BRAotCQkJCVNMT1VHSCwKLQkJCQlCRVJLU0hJUkUgU0wxIDRVSCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtQjUgICAoaGV4KQkJRklDSEVULUJBVUNIRQotMDA1MEI1ICAgICAoYmFzZSAxNikJCUZJQ0hFVC1CQVVDSEUKLQkJCQkxNS0xNyBBVkUuIE1PUkFORS1TQVVMTklFUgotCQkJCTc4MTQwIFZFTElaWQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC01MC1CNiAgIChoZXgpCQlHT09EIFdBWSBJTkQuIENPLiwgTFRELgotMDA1MEI2ICAgICAoYmFzZSAxNikJCUdPT0QgV0FZIElORC4gQ08uLCBMVEQuCi0JCQkJNUYsIE5PLjgsIEFMTEVZIDYsCi0JCQkJTEFORSA0NSBQQU8tSFNJTiBSRC4tSFNJTiBUSUVOIFRBSVBFSSBIUwotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLUI3ICAgKGhleCkJCUJPU0VSIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDUwQjcgICAgIChiYXNlIDE2KQkJQk9TRVIgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQkxNUYtNiwgNzcgSFNJTiBUQUkgV1UgUk9BRAotCQkJCVNFQy4gMSwgSFNJLUNISQotCQkJCVRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC1COCAgIChoZXgpCQlJTk9WQSBDT01QVVRFUlMgR01CSCAmIENPLiBLRwotMDA1MEI4ICAgICAoYmFzZSAxNikJCUlOT1ZBIENPTVBVVEVSUyBHTUJIICYgQ08uIEtHCi0JCQkJU1VERVRFTlNUUkFTU0UgNQotCQkJCTg3NjAwIEtBVUZCRVVSRU4gIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtQjkgICAoaGV4KQkJWElUUk9OIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA1MEI5ICAgICAoYmFzZSAxNikJCVhJVFJPTiBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk2Mjk1LUQgRkVSUklTIFNRVUFSRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQkEgICAoaGV4KQkJRC1MSU5LCi0wMDUwQkEgICAgIChiYXNlIDE2KQkJRC1MSU5LCi0JCQkJMkYsIE5PLiAyMzNMLTIsIFBBTy1DSElBTyBSRC4KLQkJCQlIc2luLVRpZW4gMjMxCi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLUJCICAgKGhleCkJCUNNUyBURUNITk9MT0dJRVMKLTAwNTBCQiAgICAgKGJhc2UgMTYpCQlDTVMgVEVDSE5PTE9HSUVTCi0JCQkJMTM5NTUgRkFSTUlOR1RPTiBSQU9ECi0JCQkJTElWT05JQSBNSSA0ODE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQkMgICAoaGV4KQkJSEFNTUVSIFNUT1JBR0UgU09MVVRJT05TCi0wMDUwQkMgICAgIChiYXNlIDE2KQkJSEFNTUVSIFNUT1JBR0UgU09MVVRJT05TCi0JCQkJODQ1MCBDRU5UUkFMIEFWRU5VRQotCQkJCU5FV0FSSyBDQSA5NDU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQkQgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MEJEICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1CRSAgIChoZXgpCQlGQVNUIE1VTFRJTUVESUEgQUcKLTAwNTBCRSAgICAgKGJhc2UgMTYpCQlGQVNUIE1VTFRJTUVESUEgQUcKLQkJCQlSVUVERVNIRUlNRVJTVFIuIDExLTEzCi0JCQkJODA2ODYgTVVOSUNIICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLUJGICAgKGhleCkJCU1ldGFsbGlnZW5jZSBUZWNobm9sb2d5IENvcnAuCi0wMDUwQkYgICAgIChiYXNlIDE2KQkJTWV0YWxsaWdlbmNlIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQlOTy45LCBQQVJLIEFWRU5VRSBJSQotCQkJCVNDSUVOQ0UtQkFTRSBJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOLUNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC1DMCAgIChoZXgpCQlHQVRBTiwgSU5DLgotMDA1MEMwICAgICAoYmFzZSAxNikJCUdBVEFOLCBJTkMuCi0JCQkJNTkzMyBDT1JPTkFETyBMQU5FCi0JCQkJUExFQVNBTlRPTiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQzEgICAoaGV4KQkJR0VNRkxFWCBORVRXT1JLUywgTFRELgotMDA1MEMxICAgICAoYmFzZSAxNikJCUdFTUZMRVggTkVUV09SS1MsIExURC4KLQkJCQkyMzAtNjY1MSBGUkFTRVJXT09EIFBMLgotCQkJCVJJQ0hNT05ELCBCLkMuCi0JCQkJQ0FOQURBIFY2VyAxSjMKLQkJCQlDQU5BREEKLQotMDAtNTAtQzIgICAoaGV4KQkJSUVFRSBSRUdJU1RSQVRJT04gQVVUSE9SSVRZCi0wMDUwQzIgICAgIChiYXNlIDE2KQkJSUVFRSBSRUdJU1RSQVRJT04gQVVUSE9SSVRZCi0JCQkJNDQ1IEhPRVMgTEFORQotCQkJCVBJU0NBVEFXQVkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUM0ICAgKGhleCkJCUlNRAotMDA1MEM0ICAgICAoYmFzZSAxNikJCUlNRAotCQkJCUhFUkJTVFJBU1NFIDgKLQkJCQlELTgyMTc4IFBVQ0hIRUlNICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLUM1ICAgKGhleCkJCUFEUyBUZWNobm9sb2dpZXMsIEluYwotMDA1MEM1ICAgICAoYmFzZSAxNikJCUFEUyBUZWNobm9sb2dpZXMsIEluYwotCQkJCTEyNjI3IEhpZGRlbmNyZWVrIFdheQotCQkJCUNlcnJpdG9zIENBIDkwNzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1DNiAgIChoZXgpCQlMT09QIFRFTEVDT01NVU5JQ0FUSU9OIElOVEVSTkFUSU9OQUwsIElOQy4KLTAwNTBDNiAgICAgKGJhc2UgMTYpCQlMT09QIFRFTEVDT01NVU5JQ0FUSU9OIElOVEVSTkFUSU9OQUwsIElOQy4KLQkJCQkyRiwgTk8uIDIyLCBQUk9TUEVSSVRZIFJELiAyCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIU0lOQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLUM4ICAgKGhleCkJCSBBZGRvbmljcyBUZWNobm9sb2dpZXMsIEluYy4KLTAwNTBDOCAgICAgKGJhc2UgMTYpCQkgQWRkb25pY3MgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTkxOCBKdW5jdGlvbiBBdmUuLAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1DOSAgIChoZXgpCQlNQVNQUk8gREVOS09IIENPUlAuCi0wMDUwQzkgICAgIChiYXNlIDE2KQkJTUFTUFJPIERFTktPSCBDT1JQLgotCQkJCUFTQURBIE5JU1NISU4gQUlDSEkKLQkJCQk0NzAtMDE5NAotCQkJCUpBUEFOCi0KLTAwLTUwLUNBICAgKGhleCkJCU5FVCBUTyBORVQgVEVDSE5PTE9HSUVTCi0wMDUwQ0EgICAgIChiYXNlIDE2KQkJTkVUIFRPIE5FVCBURUNITk9MT0dJRVMKLQkJCQk2ODAgQ0VOVFJBTCBBVkVOVUUgLSBTVEUuICMzMDEKLQkJCQlET1ZFUiBOSCAwMzgyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQ0IgICAoaGV4KQkJSkVUVEVSCi0wMDUwQ0IgICAgIChiYXNlIDE2KQkJSkVUVEVSCi0JCQkJR1JBRVRFUlNUUkFTU0UgMgotCQkJCUQ3MTY0MiAgTFVEV0lHU0JVUkcKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLUNDICAgKGhleCkJCVhZUkFURVgKLTAwNTBDQyAgICAgKGJhc2UgMTYpCQlYWVJBVEVYCi0JCQkJTUFJTCBQT0lOVDogMjYvMTM7IERFUFQ6ICBTVE9SQUdFIFNZU1RFTQotCQkJCUxhbmdzdG9uZSBSb2FkCi0JCQkJSGF2YW50IFBPOSAxU0EgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTUwLUNEICAgKGhleCkJCURJR0lBTlNXRVIgQS9TCi0wMDUwQ0QgICAgIChiYXNlIDE2KQkJRElHSUFOU1dFUiBBL1MKLQkJCQlTS0FMSFVTRSA1Ci0JCQkJOTI0MCBOSUJFCi0JCQkJREVOTUFSSwotCi0wMC01MC1DRSAgIChoZXgpCQlMRyBJTlRFUk5BVElPTkFMIENPUlAuCi0wMDUwQ0UgICAgIChiYXNlIDE2KQkJTEcgSU5URVJOQVRJT05BTCBDT1JQLgotCQkJCUxHIFRXSU4gVE9XRVJTCi0JCQkJMjAgWU9JRE8tRE9ORywgWU9VTkdEVU5HUE8tR1UKLQkJCQlTRU9VTCwgIDE1MC02MDYgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC01MC1DRiAgIChoZXgpCQlWQU5MSU5LIENPTU1VTklDQVRJT04gVEVDSE5PTE9HWSBSRVNFQVJDSCBJTlNUSVRVVEUKLTAwNTBDRiAgICAgKGJhc2UgMTYpCQlWQU5MSU5LIENPTU1VTklDQVRJT04gVEVDSE5PTE9HWSBSRVNFQVJDSCBJTlNUSVRVVEUKLQkJCQkyMTAgWUFESSBPRkZJQ0UgQlVJTERJTkcKLQkJCQkgTk8uIDQ4IEJFSSBTQU4gSHVhbiBaaG9uZyBMdQotCQkJCUJFSUpJTkcgMTAwMDg4ICAKLQkJCQlDSElOQQotCi0wMC01MC1EMCAgIChoZXgpCQlNSU5FUlZBIFNZU1RFTVMKLTAwNTBEMCAgICAgKGJhc2UgMTYpCQlNSU5FUlZBIFNZU1RFTVMKLQkJCQkxNTg1IENIQVJMRVNUT04gUk9BRAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgODQ5NDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUQxICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTBEMSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCU0vUyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUQyICAgKGhleCkJCUNNQyBFbGVjdHJvbmljcyBJbmMKLTAwNTBEMiAgICAgKGJhc2UgMTYpCQlDTUMgRWxlY3Ryb25pY3MgSW5jCi0JCQkJNjAwIERyLkZyZWRlcmlrLVBoaWxpcHMgQmx2ZAotCQkJCU1vbnRyZWFsICBRQyBINE0gMlM5Ci0JCQkJQ0FOQURBCi0KLTAwLTUwLUQzICAgKGhleCkJCURJR0lUQUwgQVVESU8gUFJPQ0VTU0lORyBQVFkuIExURC4KLTAwNTBEMyAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEFVRElPIFBST0NFU1NJTkcgUFRZLiBMVEQuCi0JCQkJUE8gQk9YIDQwCi0JCQkJQ09OQ09SRCBXRVNUCi0JCQkJTlNXIDIxMzggIAotCQkJCUFVU1RSQUxJQQotCi0wMC01MC1ENCAgIChoZXgpCQlKT09IT05HIElORk9STUFUSU9OICYKLTAwNTBENCAgICAgKGJhc2UgMTYpCQlKT09IT05HIElORk9STUFUSU9OICYKLQkJCQlDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCUpVTkdOQU0gQi9ELCA3MjEtMzkgWUVPS1NBTS1ET05HLCBLQU5HTkEKLQkJCQlTRU9VTCBTRU9VTCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC01MC1ENSAgIChoZXgpCQlBRCBTWVNURU1TIENPUlAuCi0wMDUwRDUgICAgIChiYXNlIDE2KQkJQUQgU1lTVEVNUyBDT1JQLgotCQkJCTEtNC0xLCBOQUtBQ0hPLCBNVVNBU0hJTk8gQ0lUWQotCQkJCVRPS1lPIDE4MC0wMDA2ICAKLQkJCQlKQVBBTgotCi0wMC01MC1ENiAgIChoZXgpCQlBVExBUyBDT1BDTyBUT09MUyBBQgotMDA1MEQ2ICAgICAoYmFzZSAxNikJCUFUTEFTIENPUENPIFRPT0xTIEFCCi0JCQkJCi0JCQkJUy0xMDUgMjMgU1RPQ0tIT0xNICAKLQkJCQlTV0VERU4KLQotMDAtNTAtRDcgICAoaGV4KQkJVEVMU1RSQVQKLTAwNTBENyAgICAgKGJhc2UgMTYpCQlURUxTVFJBVAotCQkJCTM2MDAgQVZFTlVFCi0JCQkJUExBTk8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUQ4ICAgKGhleCkJCVVOSUNPUk4gQ09NUFVURVIgQ09SUC4KLTAwNTBEOCAgICAgKGJhc2UgMTYpCQlVTklDT1JOIENPTVBVVEVSIENPUlAuCi0JCQkJNyBGTC4sICBOTy4gOTYgS1dBTkcgRlUgTk9SVEggUk9BRAotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC1EOSAgIChoZXgpCQlFTkdFVFJPTi1FTkdFTkhBUklBIEVMRVRST05JQ0EgSU5ELiBlIENPTS4gTFREQQotMDA1MEQ5ICAgICAoYmFzZSAxNikJCUVOR0VUUk9OLUVOR0VOSEFSSUEgRUxFVFJPTklDQSBJTkQuIGUgQ09NLiBMVERBCi0JCQkJVklBIFNPQ1JBVEVTIE0uIEJJVFRFTkNPVVJULCAxMDk5Ci0JCQkJMzIwMTAtMDEwIENvbnRhZ2VtIE1HICAKLQkJCQlCUkFaSUwKLQotMDAtNTAtREEgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDA1MERBICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJTVM6IDQyMjAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtREIgICAoaGV4KQkJQ09OVEVNUE9SQVJZIENPTlRST0wKLTAwNTBEQiAgICAgKGJhc2UgMTYpCQlDT05URU1QT1JBUlkgQ09OVFJPTAotCQkJCVNZU1RFTVMsIElOQy4KLQkJCQkyNDMxIENVUlRJU1MgU1RSRUVUCi0JCQkJRE9XTkVSUyBHUk9WRSBJTCA2MDUxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtREMgICAoaGV4KQkJVEFTIFRFTEVGT05CQVUgQS4gU0NIV0FCRSBHTUJIICYgQ08uIEtHCi0wMDUwREMgICAgIChiYXNlIDE2KQkJVEFTIFRFTEVGT05CQVUgQS4gU0NIV0FCRSBHTUJIICYgQ08uIEtHCi0JCQkJCi0JCQkJTEFOR01BQVIgMjUKLQkJCQlELTQxMjM4IE1PTkNIRU5HTEFEQkFDSCAgCi0JCQkJR0VSTUFOWQotCi0wMC01MC1ERCAgIChoZXgpCQlTRVJSQSBTT0xEQURVUkEsIFMuQS4KLTAwNTBERCAgICAgKGJhc2UgMTYpCQlTRVJSQSBTT0xEQURVUkEsIFMuQS4KLQkJCQlQT0wuIElORC4gWk9OQSBGUkFOQ0EsCi0JCQkJU0VDVE9SIEMsIENBTExFIEQsIE4uIDI5IDA4MDQwIEJBUkNFTE9OQQotCQkJCVNQQUlOCi0JCQkJU1BBSU4KLQotMDAtNTAtREUgICAoaGV4KQkJU0lHTlVNIFNZU1RFTVMgQ09SUC4KLTAwNTBERSAgICAgKGJhc2UgMTYpCQlTSUdOVU0gU1lTVEVNUyBDT1JQLgotCQkJCTEyMTEgRmx5bm4gUmQsCi0JCQkJIzEwNAotCQkJCUNhbWFyaWxsbyBDQSA5MzAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtREYgICAoaGV4KQkJQWlyRmliZXIsIEluYy4KLTAwNTBERiAgICAgKGJhc2UgMTYpCQlBaXJGaWJlciwgSW5jLgotCQkJCVAuTy4gQk9YIDUwMjE0OAotCQkJCVNBTiBESUVHTyBDQSA5MjE1MC0yMTQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1FMSAgIChoZXgpCQlOUyBURUNIIEVMRUNUUk9OSUNTIFNETiBCSEQKLTAwNTBFMSAgICAgKGJhc2UgMTYpCQlOUyBURUNIIEVMRUNUUk9OSUNTIFNETiBCSEQKLQkJCQlOTy4gMjEgJiAyMyBKQUxBTiBDQU5HR0lIIDEwCi0JCQkJVEFNQU4gUEVSSU5EVVNUUklBTiBDRU1FUkxBTkcKLQkJCQk4MTgwMCBVbHUgVGlyYW0tSm9ob3IgQmFocnUgIAotCQkJCU1BTEFZU0lBCi0KLTAwLTUwLUUyICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTBFMiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRSAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRTMgICAoaGV4KQkJTW90b3JvbGEsIEluYy4KLTAwNTBFMyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSwgSW5jLgotCQkJCTI0NTAgV2Fsc2ggQXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUU0ICAgKGhleCkJCUFQUExFIENPTVBVVEVSLCBJTkMuCi0wMDUwRTQgICAgIChiYXNlIDE2KQkJQVBQTEUgQ09NUFVURVIsIElOQy4KLQkJCQkyMDY1MCBWQUxMRVkgR1JFRU4gRFIuCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1FNiAgIChoZXgpCQlIQUtVU0FOIENPUlBPUkFUSU9OCi0wMDUwRTYgICAgIChiYXNlIDE2KQkJSEFLVVNBTiBDT1JQT1JBVElPTgotCQkJCUogVE9XRVIsIDEtMSwgTklLS09VLUNITwotCQkJCUZVQ0hVLVNISSBUT0tZTyAxODMtMDA0NAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNTAtRTcgICAoaGV4KQkJUEFSQURJU0UgSU5OT1ZBVElPTlMgKEFTSUEpCi0wMDUwRTcgICAgIChiYXNlIDE2KQkJUEFSQURJU0UgSU5OT1ZBVElPTlMgKEFTSUEpCi0JCQkJUFRFLiBMVEQuCi0JCQkJMjUgU0VSQU5HT09OIE5PUlRIIEFWRS4gNSA2VEggRkxPT1IgVVJBQwotCQkJCVNJTkdBUE9SRSA1NTQ5MTQKLQkJCQlTSU5HQVBPUkUKLQotMDAtNTAtRTggICAoaGV4KQkJTk9NQURJWCBJTkMuCi0wMDUwRTggICAgIChiYXNlIDE2KQkJTk9NQURJWCBJTkMuCi0JCQkJMjcwMSBPQ0VBTiBQQVJLIEJMVkQuLVNURS4jMjMxCi0JCQkJU0FOVEEgTU9OSUNBIENBIDkwNDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1FQSAgIChoZXgpCQlYRUwgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwNTBFQSAgICAgKGJhc2UgMTYpCQlYRUwgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxNzEwMSBFLiBPSElPIERSSVZFCi0JCQkJQVVST1JBIENPIDgwMDE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1FQiAgIChoZXgpCQlBTFBIQS1UT1AgQ09SUE9SQVRJT04KLTAwNTBFQiAgICAgKGJhc2UgMTYpCQlBTFBIQS1UT1AgQ09SUE9SQVRJT04KLQkJCQkxOUYuLCBOTy4gMiwgTEFORSAxNTAKLQkJCQlTRUMuIDUsIEhTSU4tWUkgUk9BRAotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC1FQyAgIChoZXgpCQlPTElDT00gQS9TCi0wMDUwRUMgICAgIChiYXNlIDE2KQkJT0xJQ09NIEEvUwotCQkJCU5ZQlJPVkVKIDExNAotCQkJCURLLTI4MDAgTFlOR0JZCi0JCQkJREVOTUFSSwotCi0wMC01MC1FRCAgIChoZXgpCQlBTkRBIE5FVFdPUktTCi0wMDUwRUQgICAgIChiYXNlIDE2KQkJQU5EQSBORVRXT1JLUwotCQkJCTI5MjEgQ09QUEVSIFJPQUQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRUUgICAoaGV4KQkJVEVLIERJR0lURUwgQ09SUE9SQVRJT04KLTAwNTBFRSAgICAgKGJhc2UgMTYpCQlURUsgRElHSVRFTCBDT1JQT1JBVElPTgotCQkJCTIwMDEwIENFTlRVUlkgQkxWRC4gIzMwMAotCQkJCUdFUk1BTlRPV04gTUQgMjA4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUVGICAgKGhleCkJCVNQRSBTeXN0ZW1oYXVzIEdtYkgKLTAwNTBFRiAgICAgKGJhc2UgMTYpCQlTUEUgU3lzdGVtaGF1cyBHbWJICi0JCQkJV0FMRFNUUkFTU0UgNwotCQkJCTYzMTUwIEhFVVNFTlNUQU1NICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLUYwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTBGMCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCU0vUyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUYxICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi0wMDUwRjEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQk5NCBFbS1IYW1vc2hhdm90IFdheS4KLQkJCQlQYXJrIEF6b3JpbSxQLk8uIEJveCAxMDA5NwotCQkJCVBldGFjaC1UaWt2YSAgCi0JCQkJSVNSQUVMCi0KLTAwLTUwLUYyICAgKGhleCkJCU1JQ1JPU09GVCBDT1JQLgotMDA1MEYyICAgICAoYmFzZSAxNikJCU1JQ1JPU09GVCBDT1JQLgotCQkJCU9ORSBNSUNST1NPRlQgV0FZCi0JCQkJUkVETU9ORCBXQSA5ODA1Mi02Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1GMyAgIChoZXgpCQlHTE9CQUwgTkVUIElORk9STUFUSU9OIENPLiwgTHRkLgotMDA1MEYzICAgICAoYmFzZSAxNikJCUdMT0JBTCBORVQgSU5GT1JNQVRJT04gQ08uLCBMdGQuCi0JCQkJTk9SVEggVE9XRVItIFJNIDEzMDUKLQkJCQlXT1JMRCBUUkFERSBDRU5UUkUgQ09NUExFWCBOTy4zNzEtMzc1LCBICi0JCQkJR1VBTkcgWkhPVSA1MTAwOTUgIAotCQkJCUNISU5BCi0KLTAwLTUwLUY0ICAgKGhleCkJCVNJR01BVEVLIEdNQkggJiBDTy4gS0cKLTAwNTBGNCAgICAgKGJhc2UgMTYpCQlTSUdNQVRFSyBHTUJIICYgQ08uIEtHCi0JCQkJQS01MTEyIExBTVBSRUNIVFNIQVVTRU4sCi0JCQkJQlVSTU9PU0VSIFNUUkFTU0UgMTAKLQkJCQlBVVNUUklBCi0JCQkJQVVTVFJJQQotCi0wMC01MC1GNiAgIChoZXgpCQlQQU4tSU5URVJOQVRJT05BTCBJTkRVU1RSSUFMIENPUlAuCi0wMDUwRjYgICAgIChiYXNlIDE2KQkJUEFOLUlOVEVSTkFUSU9OQUwgSU5EVVNUUklBTCBDT1JQLgotCQkJCUdGLCBOTy4gMTc2LCBDSEFORyBDSFVOIFJELgotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC1GNyAgIChoZXgpCQlWRU5UVVJFIE1BTlVGQUNUVVJJTkcgKFNJTkdBUE9SRSkgTFRELgotMDA1MEY3ICAgICAoYmFzZSAxNikJCVZFTlRVUkUgTUFOVUZBQ1RVUklORyAoU0lOR0FQT1JFKSBMVEQuCi0JCQkJCi0JCQkJNTAwNiBBTkcgTU8gS0lPIEFWRU5VRQotCQkJCSMwNS0wMSBUZWNocGxhY2UgSUkgIDU2OTg3MwotCQkJCVNJTkdBUE9SRQotCi0wMC01MC1GOCAgIChoZXgpCQlFTlRSRUdBIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA1MEY4ICAgICAoYmFzZSAxNikJCUVOVFJFR0EgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMjU2OTEgQVRMQU5USUMgT0NFQU4gRFJJVkUKLQkJCQlTVUlURSAjMTgKLQkJCQlMQUtFIEZPUkVTVCBDQSA5MjYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRjkgICAoaGV4KQkJU0VOU09STUFUSUMgQUNECi0wMDUwRjkgICAgIChiYXNlIDE2KQkJU0VOU09STUFUSUMgQUNECi0JCQkJNzAgV0VTVFZJRVcgU1RSRUVUCi0JCQkJTEVYSU5HVE9OIE1BIDAyMTczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1GQSAgIChoZXgpCQlPWFRFTCwgTFRELgotMDA1MEZBICAgICAoYmFzZSAxNikJCU9YVEVMLCBMVEQuCi0JCQkJVEhFIE1BUktFVCBQTEFDRQotCQkJCURJRENPVAotCQkJCTBYMTEgN0xFIEVuZ2xhbmQgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTUwLUZCICAgKGhleCkJCVZTSyBFTEVDVFJPTklDUwotMDA1MEZCICAgICAoYmFzZSAxNikJCVZTSyBFTEVDVFJPTklDUwotCQkJCVZFTkVUSUVMQUFOIDM5Ci0JCQkJODUzMCBIQVJFTEJFS0UKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC01MC1GQyAgIChoZXgpCQlFRElNQVggVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwNTBGQyAgICAgKGJhc2UgMTYpCQlFRElNQVggVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQkzIFdVLUNIVU4gM3JkIFJPQUQKLQkJCQlXdS1LdSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlUQUlQRUkgSHNpZW4gIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtRkQgICAoaGV4KQkJVklTSU9OQ09NTSBDTy4sIExURC4KLTAwNTBGRCAgICAgKGJhc2UgMTYpCQlWSVNJT05DT01NIENPLiwgTFRELgotCQkJCTQsIDVGLCBEQUVXT04gQi9ECi0JCQkJMTk4LTgsIFNFT0JJTkdHTy1ET05HCi0JCQkJWU9OR1NBTi1HVSwgU0VPVUwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC01MC1GRSAgIChoZXgpCQlQQ1RWbmV0IEFTQQotMDA1MEZFICAgICAoYmFzZSAxNikJCVBDVFZuZXQgQVNBCi0JCQkJU1RSQU5EVkVJTEVOIDUwCi0JCQkJTi0xMzI0IExZU0FLRVIgIAotCQkJCU5PUldBWQotCi0wMC01MC1GRiAgIChoZXgpCQlIQUtLTyBFTEVDVFJPTklDUyBDTy4sIExURC4KLTAwNTBGRiAgICAgKGJhc2UgMTYpCQlIQUtLTyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQkyMzgsIEtBTUlLQVNISVdBTk8tTUFDSEkKLQkJCQlNQVRUTy1TSEksIElTSElLQVdBIDkyNC0wMDM1ICAKLQkJCQlKQVBBTgotCi0wMC01Mi0xOCAgIChoZXgpCQlXdXhpIEtlYm9kYSBFbGVjdHJvbiBDby5MdGQKLTAwNTIxOCAgICAgKGJhc2UgMTYpCQlXdXhpIEtlYm9kYSBFbGVjdHJvbiBDby5MdGQKLQkJCQlOby4xNTUgQ2h1bmh1aSBSb2FkLCBYaXNoYW4gRGlzdHJpY3QsIAotCQkJCVd1eGkgSmlhbmdzdSAyMTQxMDEKLQkJCQlDSElOQQotCi0wMC01NC1BRiAgIChoZXgpCQlDb250aW5lbnRhbCBBdXRvbW90aXZlIFN5c3RlbXMgSW5jLgotMDA1NEFGICAgICAoYmFzZSAxNikJCUNvbnRpbmVudGFsIEF1dG9tb3RpdmUgU3lzdGVtcyBJbmMuCi0JCQkJMjE0NDAgVy4gTGFrZSBDb29rIFJkLgotCQkJCURlZXIgUGFyayBJTCA2MDAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMDAgICAoaGV4KQkJWFlDT00gSU5DLgotMDA2MDAwICAgICAoYmFzZSAxNikJCVhZQ09NIElOQy4KLQkJCQk3NTAgTi4gTUFQTEUKLQkJCQlTQUxJTkUgTUkgNDgxNzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTAxICAgKGhleCkJCUlubm9TeXMsIEluYy4KLTAwNjAwMSAgICAgKGJhc2UgMTYpCQlJbm5vU3lzLCBJbmMuCi0JCQkJMzA5NSBSSUNITU9ORCBQS1dZICMyMDcKLQkJCQlSSUNITU9ORCBDQSA5NDgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMDIgICAoaGV4KQkJU0NSRUVOIFNVQlRJVExJTkcgU1lTVEVNUywgTFRECi0wMDYwMDIgICAgIChiYXNlIDE2KQkJU0NSRUVOIFNVQlRJVExJTkcgU1lTVEVNUywgTFRECi0JCQkJVEhFIE9MRCBSRUNUT1JZCi0JCQkJQ0hVUkNIIExBTkUKLQkJCQlDTEFZRE9OIElQU1dJQ0ggIElQNiBPRVEgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtMDMgICAoaGV4KQkJVEVSQU9LQSBXRUlHSCBTWVNURU0gUFRFLCBMVEQuCi0wMDYwMDMgICAgIChiYXNlIDE2KQkJVEVSQU9LQSBXRUlHSCBTWVNURU0gUFRFLCBMVEQuCi0JCQkJM0EgVFVBUyBBVkVOVUUgOAotCQkJCVNJTkdBUE9SRSA2MzkxMjggCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTYwLTA0ICAgKGhleCkJCUNPTVBVVEFET1JFUyBNT0RVTEFSRVMgU0EKLTAwNjAwNCAgICAgKGJhc2UgMTYpCQlDT01QVVRBRE9SRVMgTU9EVUxBUkVTIFNBCi0JCQkJQVZEQSBNT05URVNJRVJSQSBTL04KLQkJCQlFRElGSUNJTyBDT05HUkVTT1MgMzE0Ci0JCQkJNDEwMjAtU0VWSUxMQSAgCi0JCQkJU1BBSU4KLQotMDAtNjAtMDUgICAoaGV4KQkJRkVFREJBQ0sgREFUQSBMVEQuCi0wMDYwMDUgICAgIChiYXNlIDE2KQkJRkVFREJBQ0sgREFUQSBMVEQuCi0JCQkJUEFSSyBST0FECi0JCQkJQ1JPV0JPUk9VR0gKLQkJCQlFQVNUIFNVU1NFWCwgVE42IDJRUiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtMDYgICAoaGV4KQkJU09URUMgQ08uLCBMVEQKLTAwNjAwNiAgICAgKGJhc2UgMTYpCQlTT1RFQyBDTy4sIExURAotCQkJCVlPS09IQU1BIEJBU0hBTUlDSEkgQkxERy4sCi0JCQkJNC01NSBPSFRBLUNITyBOQUtBLUtVCi0JCQkJWU9LT0hBTUEgIDIzMSAgCi0JCQkJSkFQQU4KLQotMDAtNjAtMDcgICAoaGV4KQkJQUNSRVMgR0FNSU5HLCBJTkMuCi0wMDYwMDcgICAgIChiYXNlIDE2KQkJQUNSRVMgR0FNSU5HLCBJTkMuCi0JCQkJODE1IE5XIDlUSCBTVFJFRVQKLQkJCQlDT1JWQUxMSVMgT1IgOTczMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTA4ICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwNjAwOCAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCQVlGUk9OVCBQTEFaQQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0wOSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDYwMDkgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0wQSAgIChoZXgpCQlTT1JEIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMDYwMEEgICAgIChiYXNlIDE2KQkJU09SRCBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTIwLTcsIE1BU0FHTyA1LUNIT01FCi0JCQkJTUlIQU1BLUtVLCBDSElCQS1TSEkKLQkJCQlDSElCQSAyNjEgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTBCICAgKGhleCkJCUxPR1dBUkUgR21iSAotMDA2MDBCICAgICAoYmFzZSAxNikJCUxPR1dBUkUgR21iSAotCQkJCVNDSFdFREVOU1RSLiA5Ci0JCQkJRC0xMzM1OSBCRVJMSU4gIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtMEMgICAoaGV4KQkJRXVyb3RlY2ggSW5jLgotMDA2MDBDICAgICAoYmFzZSAxNikJCUV1cm90ZWNoIEluYy4KLQkJCQkxMDI2MCBPbGQgQ29sdW1iaWEgUm9hZAotCQkJCUNPTFVNQklBIE1EIDIxMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0wRCAgIChoZXgpCQlEaWdpdGFsIExvZ2ljIEdtYkgKLTAwNjAwRCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIExvZ2ljIEdtYkgKLQkJCQlTdGFobHdlcmtzdHIuIDI1Ci0JCQkJTXVkZXJzYmFjaCAgNTc1NTUKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLTBFICAgKGhleCkJCVdBVkVORVQgSU5URVJOQVRJT05BTCwgSU5DLgotMDA2MDBFICAgICAoYmFzZSAxNikJCVdBVkVORVQgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTU4MjUgS0VOTkVEWSBST0FECi0JCQkJTUlTU0lTU0FVR0EsIE9OVEFSSU8gTDRaIDJHMyAgCi0JCQkJQ0FOQURBCi0KLTAwLTYwLTBGICAgKGhleCkJCVdFU1RFTEwsIElOQy4KLTAwNjAwRiAgICAgKGJhc2UgMTYpCQlXRVNURUxMLCBJTkMuCi0JCQkJNzUgRVhFQ1VUSVZFIERSSVZFCi0JCQkJQVVST1JBIElMIDYwNTA0LTQxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTEwICAgKGhleCkJCU5FVFdPUksgTUFDSElORVMsIElOQy4KLTAwNjAxMCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIE1BQ0hJTkVTLCBJTkMuCi0JCQkJMjU1IE9MRCBORVcgQlJVTlNXSUNLIFJELiwgIyBOMzIwCi0JCQkJUElTQ0FUQVdBWSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMTEgICAoaGV4KQkJQ1JZU1RBTCBTRU1JQ09ORFVDVE9SIENPUlAuCi0wMDYwMTEgICAgIChiYXNlIDE2KQkJQ1JZU1RBTCBTRU1JQ09ORFVDVE9SIENPUlAuCi0JCQkJUC5PLiBCT1ggMTc4NDcKLQkJCQlBVVNUSU4gVFggNzg3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTEyICAgKGhleCkJCVBPV0VSIENPTVBVVElORyBDT1JQT1JBVElPTgotMDA2MDEyICAgICAoYmFzZSAxNikJCVBPV0VSIENPTVBVVElORyBDT1JQT1JBVElPTgotCQkJCTEwMjYxIEJVQkIgUk9BRAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMTMgICAoaGV4KQkJTkVUU1RBTCBNQVNDSElORU4gQUcKLTAwNjAxMyAgICAgKGJhc2UgMTYpCQlORVRTVEFMIE1BU0NISU5FTiBBRwotCQkJCUlORFVTVFJJRVNUUkFTU0UKLQkJCQlDSC04NzUyIE5BRUZFTFMgIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTYwLTE0ICAgKGhleCkJCUVERUMgQ08uLCBMVEQuCi0wMDYwMTQgICAgIChiYXNlIDE2KQkJRURFQyBDTy4sIExURC4KLQkJCQk5RiBPRiBULk8uQy4gQlVJTERJTkcKLQkJCQk3LTIyLTE3IE5JU0hJR09UQU5EQQotCQkJCVNISU5BR0FXQUtVLCAgVE9LWU8gIAotCQkJCUpBUEFOCi0KLTAwLTYwLTE1ICAgKGhleCkJCU5FVDJORVQgQ09SUE9SQVRJT04KLTAwNjAxNSAgICAgKGJhc2UgMTYpCQlORVQyTkVUIENPUlBPUkFUSU9OCi0JCQkJMTMxIENPT0xJREdFIFNUUkVFVAotCQkJCUhVRFNPTiBNQSAwMTc0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMTYgICAoaGV4KQkJQ0xBUklJT04KLTAwNjAxNiAgICAgKGJhc2UgMTYpCQlDTEFSSUlPTgotCQkJCUNPU0xJTiBEUklWRQotCQkJCU1haWwgU3RvcCBDMjUKLQkJCQlTT1VUSEJPUk8gTUEgMDE3NzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTE3ICAgKGhleCkJCVRPS0lNRUMgSU5DLgotMDA2MDE3ICAgICAoYmFzZSAxNikJCVRPS0lNRUMgSU5DLgotCQkJCTItMTYsIE1JTkFNSS1LQU1BVEEsIE9IVEEtS1UKLQkJCQlUT0tZTyAxNDQgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTE4ICAgKGhleCkJCVNURUxMQVIgT05FIENPUlBPUkFUSU9OCi0wMDYwMTggICAgIChiYXNlIDE2KQkJU1RFTExBUiBPTkUgQ09SUE9SQVRJT04KLQkJCQk1MDAgMTA4VEggQVZFLiBORS0tU1RFLiAjMjIwMAotCQkJCUJFTExFVlVFIFdBIDk4MDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0xOSAgIChoZXgpCQlSb2NoZSBEaWFnbm9zdGljcwotMDA2MDE5ICAgICAoYmFzZSAxNikJCVJvY2hlIERpYWdub3N0aWNzCi0JCQkJOTExNSBIYWd1ZSBSb2FkCi0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjUwLTA0NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTFBICAgKGhleCkJCUtFSVRITEVZIElOU1RSVU1FTlRTCi0wMDYwMUEgICAgIChiYXNlIDE2KQkJS0VJVEhMRVkgSU5TVFJVTUVOVFMKLQkJCQkzMDUwMCBCQUlOQlJJREdFIFJELgotCQkJCVNPTE9OIE9IIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0xQiAgIChoZXgpCQlNRVNBIEVMRUNUUk9OSUNTCi0wMDYwMUIgICAgIChiYXNlIDE2KQkJTUVTQSBFTEVDVFJPTklDUwotCQkJCTEzMjMgNjFTVCBTVFJFRVQKLQkJCQlFTUVSWVZJTExFIENBIDk0NjA4LTIxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTFDICAgKGhleCkJCVRFTFhPTiBDT1JQT1JBVElPTgotMDA2MDFDICAgICAoYmFzZSAxNikJCVRFTFhPTiBDT1JQT1JBVElPTgotCQkJCTMzMzAgVy4gTUFSS0VUIFNUUkVFVAotCQkJCVBPIEJPWCA1NTgyCi0JCQkJQUtST04gT0ggNDQzMzQtMDU4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMUQgICAoaGV4KQkJTFVDRU5UIFRFQ0hOT0xPR0lFUwotMDA2MDFEICAgICAoYmFzZSAxNikJCUxVQ0VOVCBURUNITk9MT0dJRVMKLQkJCQkxMDEgQ1JBV0ZPUkRTIENPUk5FUiBSRC4KLQkJCQlST09NICA0Sy0zMjEKLQkJCQlIT0xNREVMIE5KIDA3NzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0xRSAgIChoZXgpCQlTT0ZUTEFCLCBJTkMuCi0wMDYwMUUgICAgIChiYXNlIDE2KQkJU09GVExBQiwgSU5DLgotCQkJCVAuTy4gQk9YIDgKLQkJCQlDSElNTkVZIFJPQ0sgQ08gODExMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTFGICAgKGhleCkJCVNUQUxMSU9OIFRFQ0hOT0xPR0lFUwotMDA2MDFGICAgICAoYmFzZSAxNikJCVNUQUxMSU9OIFRFQ0hOT0xPR0lFUwotCQkJCTMzIFdPT0RTVE9DSyBST0FECi0JCQkJVE9PV09ORyBRLUwtRC0gNDA2NiAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTYwLTIwICAgKGhleCkJCVBJVk9UQUwgTkVUV09SS0lORywgSU5DLgotMDA2MDIwICAgICAoYmFzZSAxNikJCVBJVk9UQUwgTkVUV09SS0lORywgSU5DLgotCQkJCTcyNDYgU0hBUk9OIERSLiwgU1RFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTIxICAgKGhleCkJCURTQyBDT1JQT1JBVElPTgotMDA2MDIxICAgICAoYmFzZSAxNikJCURTQyBDT1JQT1JBVElPTgotCQkJCVJFQ1JVSVQtU0hJTk9IVFNVS0EgQkxERy4sCi0JCQkJMi0yNS0xNSBNSU5BTUlPSFRTVUtBLCBUT1NISU1BLUtVLAotCQkJCVRPS1lPIDE3MCAgCi0JCQkJSkFQQU4KLQotMDAtNjAtMjIgICAoaGV4KQkJVklDT00gU1lTVEVNUywgSU5DLgotMDA2MDIyICAgICAoYmFzZSAxNikJCVZJQ09NIFNZU1RFTVMsIElOQy4KLQkJCQkxOTYxIExBTkRJTkdTIERSSVZFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjMgICAoaGV4KQkJUEVSSUNPTSBTRU1JQ09ORFVDVE9SIENPUlAuCi0wMDYwMjMgICAgIChiYXNlIDE2KQkJUEVSSUNPTSBTRU1JQ09ORFVDVE9SIENPUlAuCi0JCQkJMjM4MCBCRVJJTkcgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjQgICAoaGV4KQkJR1JBRElFTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDYwMjQgICAgIChiYXNlIDE2KQkJR1JBRElFTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMiBNT1VOVCBST1lBTCBBVkVOVUUKLQkJCQlNQVJMQk9STyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjUgICAoaGV4KQkJQUNUSVZFIElNQUdJTkcgUExDCi0wMDYwMjUgICAgIChiYXNlIDE2KQkJQUNUSVZFIElNQUdJTkcgUExDCi0JCQkJSEFUVE9SSSBIT1VTRQotCQkJCVZBTldBTEwgQlVTSU5FU1MgUEFSSwotCQkJCU1BSURFTkhFQUQgQmVya3NoaXJlIFNMNiA0VUIgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtMjYgICAoaGV4KQkJVklLSU5HIE1vZHVsYXIgU29sdXRpb25zCi0wMDYwMjYgICAgIChiYXNlIDE2KQkJVklLSU5HIE1vZHVsYXIgU29sdXRpb25zCi0JCQkJMTEgQ09MVU1CSUEKLQkJCQlMQUdVTkEgSElMTFMgQ0EgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTI3ICAgKGhleCkJCVN1cGVyaW9yIE1vZHVsYXIgUHJvZHVjdHMKLTAwNjAyNyAgICAgKGJhc2UgMTYpCQlTdXBlcmlvciBNb2R1bGFyIFByb2R1Y3RzCi0JCQkJR2VuZXJhbCBUZWNobm9sb2d5IERpdmlzaW9uCi0JCQkJNDE1IFBJTkVEQSBDT1VSVAotCQkJCU1FTEJPVVJORSBGTCAzMjk0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjggICAoaGV4KQkJTUFDUk9WSVNJT04gQ09SUE9SQVRJT04KLTAwNjAyOCAgICAgKGJhc2UgMTYpCQlNQUNST1ZJU0lPTiBDT1JQT1JBVElPTgotCQkJCTI4MzAgRGUgTGEgQ3J1eiBCb3VsZXZhcmQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjkgICAoaGV4KQkJQ0FSWSBQRVJJUEhFUkFMUyBJTkMuCi0wMDYwMjkgICAgIChiYXNlIDE2KQkJQ0FSWSBQRVJJUEhFUkFMUyBJTkMuCi0JCQkJMTkwIENPTE9OTkFERSBST0FEIFMsIFVOSVQgOQotCQkJCU5FUEVBTiwgT05UQVJJTyBLMkUgN0o1ICAKLQkJCQlDQU5BREEKLQotMDAtNjAtMkEgICAoaGV4KQkJU1lNSUNST04gQ09NUFVURVIgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwNjAyQSAgICAgKGJhc2UgMTYpCQlTWU1JQ1JPTiBDT01QVVRFUiBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCVVOSVQgNCBHUkVFTiBMQU5FIEJVU0lORVNTIFBBUksKLQkJCQkyMzggR3JlZW4gbGFuZQotCQkJCUxvbmRvbiBTRTkgM1RMICAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTJCICAgKGhleCkJCVBFQUsgQVVESU8KLTAwNjAyQiAgICAgKGJhc2UgMTYpCQlQRUFLIEFVRElPCi0JCQkJMTc5MCAzMFRIIFNUUkVFVCBTVEUgIzQxNAotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTJDICAgKGhleCkJCUxJTlggRGF0YSBUZXJtaW5hbHMsIEluYy4KLTAwNjAyQyAgICAgKGJhc2UgMTYpCQlMSU5YIERhdGEgVGVybWluYWxzLCBJbmMuCi0JCQkJNjI1IERJR0lUQUwgRFJJVkUtU1RFICMxMDAKLQkJCQlQTEFOTyBUWCA3NTA3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMkQgICAoaGV4KQkJQUxFUlRPTiBURUNITk9MT0dJRVMsIElOQy4KLTAwNjAyRCAgICAgKGJhc2UgMTYpCQlBTEVSVE9OIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTY2NzAgMTg1VEggQVZFLiBOLkUuCi0JCQkJUkVETU9ORCBXQSA5ODA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMkUgICAoaGV4KQkJQ1lDTEFERVMgQ09SUE9SQVRJT04KLTAwNjAyRSAgICAgKGJhc2UgMTYpCQlDWUNMQURFUyBDT1JQT1JBVElPTgotCQkJCTQxOTM0IENIUklTVFkgU1RSRUVUCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMkYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA2MDJGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMzAgICAoaGV4KQkJVklMTEFHRSBUUk9OSUMgRU5UV0lDS0xVTkcKLTAwNjAzMCAgICAgKGJhc2UgMTYpCQlWSUxMQUdFIFRST05JQyBFTlRXSUNLTFVORwotCQkJCVdFTExXRUcgOTUKLQkJCQkzMTE1NyBTQVJTVEVEVCAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC0zMSAgIChoZXgpCQlIUksgU1lTVEVNUwotMDA2MDMxICAgICAoYmFzZSAxNikJCUhSSyBTWVNURU1TCi0JCQkJUC5PLiBCT1ggNTE0Ci0JCQkJV0VTVFZJTExFIDM2MzAgIAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC02MC0zMiAgIChoZXgpCQlJLUNVQkUsIElOQy4KLTAwNjAzMiAgICAgKGJhc2UgMTYpCQlJLUNVQkUsIElOQy4KLQkJCQkyMzI4LUMgV0FMU0ggQVZFTlVFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTMzICAgKGhleCkJCUFDVUlUWSBJTUFHSU5HLCBJTkMuCi0wMDYwMzMgICAgIChiYXNlIDE2KQkJQUNVSVRZIElNQUdJTkcsIElOQy4KLQkJCQk5IFRPV05TRU5EIFdFU1QKLQkJCQlOQVNIVUEgTkggMDMwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTM0ICAgKGhleCkJCVJPQkVSVCBCT1NDSCBHbWJICi0wMDYwMzQgICAgIChiYXNlIDE2KQkJUk9CRVJUIEJPU0NIIEdtYkgKLQkJCQlQT1NUQk9YIDExIDYyCi0JCQkJRC02NDcwMSBFUkJBQ0ggIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtMzUgICAoaGV4KQkJREFMTEFTIFNFTUlDT05EVUNUT1IsIElOQy4KLTAwNjAzNSAgICAgKGJhc2UgMTYpCQlEQUxMQVMgU0VNSUNPTkRVQ1RPUiwgSU5DLgotCQkJCTQ0MDEgU09VVEggQkVMVFdPT0QgUEFSS1dBWQotCQkJCURBTExBUyBUWCA3NTI0NC0zMjkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0zNiAgIChoZXgpCQlBSVQgQXVzdHJpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kgR21iSAotMDA2MDM2ICAgICAoYmFzZSAxNikJCUFJVCBBdXN0cmlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSBHbWJICi0JCQkJRG9uYXUtQ2l0eS1TdHJhc3NlIDEKLQkJCQlWaWVubmEgIDEyMjAKLQkJCQlBVVNUUklBCi0KLTAwLTYwLTM3ICAgKGhleCkJCU5YUCBTZW1pY29uZHVjdG9ycwotMDA2MDM3ICAgICAoYmFzZSAxNikJCU5YUCBTZW1pY29uZHVjdG9ycwotCQkJCU1pbGxicm9vayBUZWNobm9sb2d5IENhbXB1cwotCQkJCU1pbGxicm9vayBTb3V0aGFtcHRvbiBTTzE1IDBESgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTYwLTM4ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDA2MDM4ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCUdsb2JhbCBPcGVyYXRpb25zIEVuZ2luZWVyaW5nCi0JCQkJRGVwIDY4MDAgUHJvZ3JhbSBNYW5hZ2VyIDgyMDAgRGl4aWUgUm9hZAotCQkJCUJyYW1wdG9uIE9udGFyaW8gMTZUIDVQNiAKLQkJCQlDQU5BREEKLQotMDAtNjAtMzkgICAoaGV4KQkJU2FuQ29tIFRlY2hub2xvZ3ksIEluYy4KLTAwNjAzOSAgICAgKGJhc2UgMTYpCQlTYW5Db20gVGVjaG5vbG9neSwgSW5jLgotCQkJCTc3MTkgV09PRCBIT0xMT1cgRFJJVkUKLQkJCQlTVUlURSAjMTU2Ci0JCQkJQVVTVElOIFRYIDc4NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0zQSAgIChoZXgpCQlRVUlDSyBDT05UUk9MUyBMVEQuCi0wMDYwM0EgICAgIChiYXNlIDE2KQkJUVVJQ0sgQ09OVFJPTFMgTFRELgotCQkJCURVUkhBTSBIT1VTRSwgV0FSV0lDSyBDT1VSVAotCQkJCVBBUksgUk9BRCwgTUlERExFVE9OCi0JCQkJTUFOQ0hFU1RFUiAgTTI0IDFBRSAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtM0IgICAoaGV4KQkJQU1URUMgc3BhCi0wMDYwM0IgICAgIChiYXNlIDE2KQkJQU1URUMgc3BhCi0JCQkJTE9DLiBTLiBNQVJUSU5PCi0JCQkJNTMwMjUgUElBTkNBU1RBR05BSU8gKFNJRU5BKSAgCi0JCQkJSVRBTFkKLQotMDAtNjAtM0MgICAoaGV4KQkJSEFHSVdBUkEgU1lTLUNPTSBDTy4sIExURC4KLTAwNjAzQyAgICAgKGJhc2UgMTYpCQlIQUdJV0FSQSBTWVMtQ09NIENPLiwgTFRELgotCQkJCTItNC0zIE5JU0hJS0kgTkFLQS1LVQotCQkJCU5BR09ZQQotCQkJCUFJQ0hJIDQ2MCAgCi0JCQkJSkFQQU4KLQotMDAtNjAtM0QgICAoaGV4KQkJM0NYCi0wMDYwM0QgICAgIChiYXNlIDE2KQkJM0NYCi0JCQkJMjA4NSBIQU1JTFRPTiBBVkUuLCAtU1RFLiMyMjAKLQkJCQlTQU4gSk9TRSBDQSA5NTEyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtM0UgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA2MDNFICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtM0YgICAoaGV4KQkJUEFUQVBTQ08gREVTSUdOUwotMDA2MDNGICAgICAoYmFzZSAxNikJCVBBVEFQU0NPIERFU0lHTlMKLQkJCQk1MzUwIFBBUlRORVJTIENPVVJUCi0JCQkJRlJFREVSSUNLIE1EIDIxNzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00MCAgIChoZXgpCQlORVRSTyBDT1JQLgotMDA2MDQwICAgICAoYmFzZSAxNikJCU5FVFJPIENPUlAuCi0JCQkJMzEyMCBTQ09UVCBCTFZELgotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00MSAgIChoZXgpCQlZb2tvZ2F3YSBFbGVjdHJpYyBDb3Jwb3JhdGlvbgotMDA2MDQxICAgICAoYmFzZSAxNikJCVlva29nYXdhIEVsZWN0cmljIENvcnBvcmF0aW9uCi0JCQkJMi05LTMxIE5ha2FjaG8sIE11c2FzaGluby1zaGkKLQkJCQlUb2t5byAxODAtODc1MCAgCi0JCQkJSkFQQU4KLQotMDAtNjAtNDIgICAoaGV4KQkJVEtTIChVU0EpLCBJTkMuCi0wMDYwNDIgICAgIChiYXNlIDE2KQkJVEtTIChVU0EpLCBJTkMuCi0JCQkJMTIwMSBDT01NRVJDRQotCQkJCVJJQ0hBUkRTT04gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTQzICAgKGhleCkJCWlEaXJlY3QsIElOQy4KLTAwNjA0MyAgICAgKGJhc2UgMTYpCQlpRGlyZWN0LCBJTkMuCi0JCQkJMTM4NjUgU3VucmlzZSBWYWxseSBEcml2ZQotCQkJCVN1aXRlIDEwMAotCQkJCUhlcm5kb24gVkEgMjAxNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTQ0ICAgKGhleCkJCUxJVFRPTi9QT0xZLVNDSUVOVElGSUMKLTAwNjA0NCAgICAgKGJhc2UgMTYpCQlMSVRUT04vUE9MWS1TQ0lFTlRJRklDCi0JCQkJMjIwMCBTT1VUSCBNQUlOIFNUUkVFVAotCQkJCUJMQUNLU0JVUkcgVkEgMjQwNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTQ1ICAgKGhleCkJCVBBVEhMSUdIVCBURUNITk9MT0dJRVMKLTAwNjA0NSAgICAgKGJhc2UgMTYpCQlQQVRITElHSFQgVEVDSE5PTE9HSUVTCi0JCQkJNzY3IFdBUlJFTiBST0FECi0JCQkJSVRIQUNBIE5ZIDE0ODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00NiAgIChoZXgpCQlWTUVUUk8sIElOQy4KLTAwNjA0NiAgICAgKGJhc2UgMTYpCQlWTUVUUk8sIElOQy4KLQkJCQkxODgwIERBSVJZIEFTSEZPUkQtIFNURSAjNTM1Ci0JCQkJSE9VU1RPTiBUWCA3NzA3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNDcgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA2MDQ3ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNDggICAoaGV4KQkJRU1DIENPUlBPUkFUSU9OCi0wMDYwNDggICAgIChiYXNlIDE2KQkJRU1DIENPUlBPUkFUSU9OCi0JCQkJMTcxIFNPVVRIIFNULiwKLQkJCQlIT1BLSU5UT04gTUEgMDE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTQ5ICAgKGhleCkJCVZJTkEgVEVDSE5PTE9HSUVTCi0wMDYwNDkgICAgIChiYXNlIDE2KQkJVklOQSBURUNITk9MT0dJRVMKLQkJCQk2IFVOSU9OIFNRVUFSRSAtIFNURSBGCi0JCQkJVU5JT04gQ0lUWSBDQSA5NDU4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNEEgICAoaGV4KQkJU0FJQyBJREVBUyBHUk9VUAotMDA2MDRBICAgICAoYmFzZSAxNikJCVNBSUMgSURFQVMgR1JPVVAKLQkJCQk3MTIwIENPTFVNQklBIEdBVEVXQVkgRFJJVkUKLQkJCQlDT0xVTUJJQSBNRCAyMTA0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNEIgICAoaGV4KQkJU2FmZS1jb20gR21iSCAmIENvLiBLRwotMDA2MDRCICAgICAoYmFzZSAxNikJCVNhZmUtY29tIEdtYkggJiBDby4gS0cKLQkJCQlCdXJnIExpY2h0ZW5mZWxzCi0JCQkJMzUxMDQgTGljaHRlbmZlbHMgIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtNEMgICAoaGV4KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotMDA2MDRDICAgICAoYmFzZSAxNikJCVNBR0VNIENPTU1VTklDQVRJT04KLQkJCQkyNyBSVUUgTEVCTEFOQwotCQkJCUNFREVYIDE1IFBBUklTIDc1NTEyCi0JCQkJRlJBTkNFCi0KLTAwLTYwLTREICAgKGhleCkJCU1NQyBORVRXT1JLUywgSU5DLgotMDA2MDREICAgICAoYmFzZSAxNikJCU1NQyBORVRXT1JLUywgSU5DLgotCQkJCTExMzQgRUFTVCBBUlFVRVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2LTQ2MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTRFICAgKGhleCkJCUNZQ0xFIENPTVBVVEVSIENPUlBPUkFUSU9OLCBJTkMuCi0wMDYwNEUgICAgIChiYXNlIDE2KQkJQ1lDTEUgQ09NUFVURVIgQ09SUE9SQVRJT04sIElOQy4KLQkJCQkyMDI0NSBTVEVWRU5TIENSRUVLIEJMVkQuCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00RiAgIChoZXgpCQlTVVpVS0kgTUZHLiBDTy4sIExURC4KLTAwNjA0RiAgICAgKGJhc2UgMTYpCQlTVVpVS0kgTUZHLiBDTy4sIExURC4KLQkJCQk1NTItNTEgQUpJR0FVUkEKLQkJCQlISVRBQ0hJTkFLQQotCQkJCUlCQVJBS0ksIDMxMS0xMiAgCi0JCQkJSkFQQU4KLQotMDAtNjAtNTAgICAoaGV4KQkJSU5URVJOSVggSU5DLgotMDA2MDUwICAgICAoYmFzZSAxNikJCUlOVEVSTklYIElOQy4KLQkJCQk1OS0xMCBUQUtBS1VSQS1DSE8KLQkJCQlIQUNISU9KSQotCQkJCVRPS1lPIDE5MiAKLQkJCQlKQVBBTgotCi0wMC02MC01MSAgIChoZXgpCQlRVUFMSVRZIFNFTUlDT05EVUNUT1IKLTAwNjA1MSAgICAgKGJhc2UgMTYpCQlRVUFMSVRZIFNFTUlDT05EVUNUT1IKLQkJCQk4NTEgTUFSVElOIEFWRU5VRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC01MiAgIChoZXgpCQlQRVJJUEhFUkFMUyBFTlRFUlBSSVNFIENPLiwgTHRkLgotMDA2MDUyICAgICAoYmFzZSAxNikJCVBFUklQSEVSQUxTIEVOVEVSUFJJU0UgQ08uLCBMdGQuCi0JCQkJM0YsIE5PLjEwLCBBTExFWSA2LCBMQU5FIDQ1Ci0JCQkJUEFPIFNISU4gUk9BRCwgSFNJTiBUSUVOIENJVFkKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNjAtNTMgICAoaGV4KQkJVE9ZT0RBIE1BQ0hJTkUgV09SS1MsIExURC4KLTAwNjA1MyAgICAgKGJhc2UgMTYpCQlUT1lPREEgTUFDSElORSBXT1JLUywgTFRELgotCQkJCTEtNyBLSVRBSklaT1lBTUEgTk9EQUNIT1UKLQkJCQlLQVJJWUEgQ0lUWSwgQUlDSEkgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTU0ICAgKGhleCkJCUNPTlRST0xXQVJFIEdNQkgKLTAwNjA1NCAgICAgKGJhc2UgMTYpCQlDT05UUk9MV0FSRSBHTUJICi0JCQkJV0FMRFNUUkFTU0UgOTIKLQkJCQk2MzEyOCBESUVUWkVOQkFDSCAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC01NSAgIChoZXgpCQlDT1JORUxMIFVOSVZFUlNJVFkKLTAwNjA1NSAgICAgKGJhc2UgMTYpCQlDT1JORUxMIFVOSVZFUlNJVFkKLQkJCQkxMTAgTUFQTEUgQVZFTlVFCi0JCQkJSVRIQUNBIE5ZIDE0ODUwLTQ5MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTU2ICAgKGhleCkJCU5FVFdPUksgVE9PTFMsIElOQy4KLTAwNjA1NiAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFRPT0xTLCBJTkMuCi0JCQkJMjk3NSBCT1dFUlMgQVZFTlVFLCAjMjAyCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEtMDk1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNTcgICAoaGV4KQkJTVVSQVRBIE1BTlVGQUNUVVJJTkcgQ08uLCBMVEQuCi0wMDYwNTcgICAgIChiYXNlIDE2KQkJTVVSQVRBIE1BTlVGQUNUVVJJTkcgQ08uLCBMVEQuCi0JCQkJMS0xOC0xIEhBS1VTQU4gTUlET1JJLUtVCi0JCQkJWU9LT0hBTUEgIDIyNiAgCi0JCQkJSkFQQU4KLQotMDAtNjAtNTggICAoaGV4KQkJQ09QUEVSIE1PVU5UQUlOIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDYwNTggICAgIChiYXNlIDE2KQkJQ09QUEVSIE1PVU5UQUlOIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNjY1MCBMVVNLIEJMVkQuLVNURSAjQjEwMwotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNTkgICAoaGV4KQkJVEVDSE5JQ0FMIENPTU1VTklDQVRJT05TIENPUlAuCi0wMDYwNTkgICAgIChiYXNlIDE2KQkJVEVDSE5JQ0FMIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJMTAwIERPTUlOTyBEUklWRQotCQkJCUNPTkNPUkQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTVBICAgKGhleCkJCUNFTENPUkUsIElOQy4KLTAwNjA1QSAgICAgKGJhc2UgMTYpCQlDRUxDT1JFLCBJTkMuCi0JCQkJODAwMSBDRU5URVJWSUVXIFBBUktXQVkKLQkJCQlTVUlURSAjMjAxCi0JCQkJTUVNUEhJUyBUTiAzODAxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNUIgICAoaGV4KQkJSW50cmFTZXJ2ZXIgVGVjaG5vbG9neSwgSW5jLgotMDA2MDVCICAgICAoYmFzZSAxNikJCUludHJhU2VydmVyIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxMjUgSE9QUElORyBCUk9PSyBQQVJLCi0JCQkJSE9MTElTVE9OIE1BIDAxNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC01QyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDYwNUMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC01RCAgIChoZXgpCQlTQ0FOSVZBTFZFIENPUlAuCi0wMDYwNUQgICAgIChiYXNlIDE2KQkJU0NBTklWQUxWRSBDT1JQLgotCQkJCTE3MjIgTi4gTUFEU09OIFNUUkVFVAotCQkJCUxJQkVSVFkgTEFLRSBXQSA5OTAxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNUUgICAoaGV4KQkJTElCRVJUWSBURUNITk9MT0dZIE5FVFdPUktJTkcKLTAwNjA1RSAgICAgKGJhc2UgMTYpCQlMSUJFUlRZIFRFQ0hOT0xPR1kgTkVUV09SS0lORwotCQkJCVAuTy4gQk9YIDExNTY2Ci0JCQkJSEFURklFTEQsIFBSRVRPUklBIDAwMjggIAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC02MC01RiAgIChoZXgpCQlOSVBQT04gVU5JU09GVCBDT1JQT1JBVElPTgotMDA2MDVGICAgICAoYmFzZSAxNikJCU5JUFBPTiBVTklTT0ZUIENPUlBPUkFUSU9OCi0JCQkJQlIgTklOR1lPQ0hPIDEsMi0xMy05Ci0JCQkJTklIT05CQVNISS1OSU5HWU9DSE8sIENIVU8tS1UKLQkJCQlUT0tZTyAxMDMgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTYwICAgKGhleCkJCURBV05JTkcgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDYwNjAgICAgIChiYXNlIDE2KQkJREFXTklORyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk0MDkgTUFTT04gUk9BRAotCQkJCUZBSVJQT1JUIE5ZIDE0NDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC02MSAgIChoZXgpCQlXSElTVExFIENPTU1VTklDQVRJT05TIENPUlAuCi0wMDYwNjEgICAgIChiYXNlIDE2KQkJV0hJU1RMRSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotCQkJCTExMCBNQVJTSCBEUklWRS1TVEUgIzEwMAotCQkJCUZPU1RFUiBDSVRZIENBIDk0NDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC02MiAgIChoZXgpCQlURUxFU1lOQywgSU5DLgotMDA2MDYyICAgICAoYmFzZSAxNikJCVRFTEVTWU5DLCBJTkMuCi0JCQkJNTU1NSBPQUtCUk9PSyBQS1dZLVNURSAjMTEwCi0JCQkJTk9SQ1JPU1MgR0EgMzAwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTYzICAgKGhleCkJCVBTSU9OIERBQ09NIFBMQy4KLTAwNjA2MyAgICAgKGJhc2UgMTYpCQlQU0lPTiBEQUNPTSBQTEMuCi0JCQkJUFNJT04gREFDT00gSE9VU0UKLQkJCQlQUkVTTEVZIFdBWSwKLQkJCQlDUk9XTkhJTEwgTUlMVE9OIEtFWU5FUyAgTUs4IDBFRiAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC02MC02NCAgIChoZXgpCQlORVRDT01NIExJTUlURUQKLTAwNjA2NCAgICAgKGJhc2UgMTYpCQlORVRDT01NIExJTUlURUQKLQkJCQlQTyBCT1ggMzc5Ci0JCQkJTk9SVEggUllERSwgTlNXLCAyMTEzICAKLQkJCQlBVVNUUkFMSUEKLQotMDAtNjAtNjUgICAoaGV4KQkJQkVSTkVDS0VSICYgUkFJTkVSIElORFVTVFJJRS1FTEVLVFJPTklDIEdtYkgKLTAwNjA2NSAgICAgKGJhc2UgMTYpCQlCRVJORUNLRVIgJiBSQUlORVIgSU5EVVNUUklFLUVMRUtUUk9OSUMgR21iSAotCQkJCUVHR0VMU0JFUkcgMTIwCi0JCQkJNTE0MiBFR0dFTFNCRVJHICAKLQkJCQlBVVNUUklBCi0KLTAwLTYwLTY2ICAgKGhleCkJCUxBQ1JPSVggVHJhZmljCi0wMDYwNjYgICAgIChiYXNlIDE2KQkJTEFDUk9JWCBUcmFmaWMKLQkJCQkxIGVyZSBBdmVudWUsIDExIGVtZSBydWUKLQkJCQkwNjUxNiBDQVJST1MgIAotCQkJCUZSQU5DRQotCi0wMC02MC02NyAgIChoZXgpCQlBQ0VSIE5FVFhVUyBJTkMuCi0wMDYwNjcgICAgIChiYXNlIDE2KQkJQUNFUiBORVRYVVMgSU5DLgotCQkJCTVGLTMsIDUgSFNJTiBBTk4gUk9BRCAgU0JJUAotCQkJCUhTSU5DSFUgMzAwICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTYwLTY4ICAgKGhleCkJCURpYWxvZ2ljIENvcnBvcmF0aW9uCi0wMDYwNjggICAgIChiYXNlIDE2KQkJRGlhbG9naWMgQ29ycG9yYXRpb24KLQkJCQk5ODAwIENhdmVuZGlzaCBCbHZkLCA1dGggRmxvb3IKLQkJCQlNb250cmVhbCBRdWViZWMgSDRNIDJWOQotCQkJCUNBTkFEQQotCi0wMC02MC02OSAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLTAwNjA2OSAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLQkJCQkxNzQ1IFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNkEgICAoaGV4KQkJTUlUU1VCSVNISSBXSVJFTEVTUyBDT01NVU5JQ0FUSU9OUy4gSU5DLgotMDA2MDZBICAgICAoYmFzZSAxNikJCU1JVFNVQklTSEkgV0lSRUxFU1MgQ09NTVVOSUNBVElPTlMuIElOQy4KLQkJCQkyMDAxIENIRVJSWSBEUklWRQotCQkJCUJSQVNFTFRPTiBHQSAzMDUxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNkIgICAoaGV4KQkJU3luY2xheWVyIEluYy4KLTAwNjA2QiAgICAgKGJhc2UgMTYpCQlTeW5jbGF5ZXIgSW5jLgotCQkJCTEtMjAgSGltZWdhb2thCi0JCQkJS2FuaS1DaXR5Ci0JCQkJR0lGVSA1MDktMDI0OSAgCi0JCQkJSkFQQU4KLQotMDAtNjAtNkMgICAoaGV4KQkJQVJFU0NPTQotMDA2MDZDICAgICAoYmFzZSAxNikJCUFSRVNDT00KLQkJCQkyODMzIEpVTkNUSU9OIEFWRS4gLSBTVEUgIzIwNgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC02RCAgIChoZXgpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQLgotMDA2MDZEICAgICAoYmFzZSAxNikJCURJR0lUQUwgRVFVSVBNRU5UIENPUlAuCi0JCQkJNTUwIEtJTkcgU1RSRUVUCi0JCQkJTS9TIExLRzEtMy9BMTAKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTZFICAgKGhleCkJCURBVklDT00gU0VNSUNPTkRVQ1RPUiwgSU5DLgotMDA2MDZFICAgICAoYmFzZSAxNikJCURBVklDT00gU0VNSUNPTkRVQ1RPUiwgSU5DLgotCQkJCTI0NTcgQVVHVVNUSU5FIERSSVZFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTZGICAgKGhleCkJCUNMQVJJT04gQ09SUE9SQVRJT04gT0YgQU1FUklDQQotMDA2MDZGICAgICAoYmFzZSAxNikJCUNMQVJJT04gQ09SUE9SQVRJT04gT0YgQU1FUklDQQotCQkJCTE3IExBS0VTSURFIE9GRklDRSBQQVJLCi0JCQkJNjA3IE5PUlRIIEFWRU5VRQotCQkJCVdBS0VGSUVMRCBNQSAwMTg4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNzAgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA2MDcwICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNzEgICAoaGV4KQkJTUlEQVMgTEFCLCBJTkMuCi0wMDYwNzEgICAgIChiYXNlIDE2KQkJTUlEQVMgTEFCLCBJTkMuCi0JCQkJNCBLQVRBTUFDSEksCi0JCQkJU0hJTkpVS1UtS1UKLQkJCQlUT0tZTyAxNjAgCi0JCQkJSkFQQU4KLQotMDAtNjAtNzIgICAoaGV4KQkJVlhMIElOU1RSVU1FTlRTLCBMSU1JVEVECi0wMDYwNzIgICAgIChiYXNlIDE2KQkJVlhMIElOU1RSVU1FTlRTLCBMSU1JVEVECi0JCQkJUExPVCBOTy4gMTcsIEtPTkFQUEFOQSBBR1JBSEFSQQotCQkJCUVMRUNUUk9OSUMgQ0lUWQotCQkJCUJBTkdBTE9SRSAtICA1NjEgMjI5ICAKLQkJCQlJTkRJQQotCi0wMC02MC03MyAgIChoZXgpCQlSRURDUkVFSyBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA2MDczICAgICAoYmFzZSAxNikJCVJFRENSRUVLIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMzkwMCBORVdQQVJLIE1BTEwgUk9BRAotCQkJCU5FV0FSSyBDQSA5NDU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNzQgICAoaGV4KQkJUVNDIEFVRElPIFBST0RVQ1RTCi0wMDYwNzQgICAgIChiYXNlIDE2KQkJUVNDIEFVRElPIFBST0RVQ1RTCi0JCQkJMTY3NSBNQUNBUlRIVVIgQkxWRC4KLQkJCQlDT1NUQSBNRVNBIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03NSAgIChoZXgpCQlQRU5URUssIElOQy4KLTAwNjA3NSAgICAgKGJhc2UgMTYpCQlQRU5URUssIElOQy4KLQkJCQkxIFBBUksgV0FZCi0JCQkJVVBQRVIgU0FERExFIFJJVkVSIE5KIDA3NDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03NiAgIChoZXgpCQlTQ0hMVU1CRVJHRVIgVEVDSE5PTE9HSUVTIFJFVEFJTCBQRVRST0xFVU0gU1lTVEVNUwotMDA2MDc2ICAgICAoYmFzZSAxNikJCVNDSExVTUJFUkdFUiBURUNITk9MT0dJRVMgUkVUQUlMIFBFVFJPTEVVTSBTWVNURU1TCi0JCQkJODI1LU0gR1JFRU5CUklFUiBDSVJDTEUKLQkJCQlDSEVTQVBFQUtFIFZBIDIzMzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03NyAgIChoZXgpCQlQUklTQSBORVRXT1JLUwotMDA2MDc3ICAgICAoYmFzZSAxNikJCVBSSVNBIE5FVFdPUktTCi0JCQkJNjYyMCBNZXNhIFJpZGdlIFJvYWQsCi0JCQkJU3VpdGUgMjAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03OCAgIChoZXgpCQlQT1dFUiBNRUFTVVJFTUVOVCBMVEQuCi0wMDYwNzggICAgIChiYXNlIDE2KQkJUE9XRVIgTUVBU1VSRU1FTlQgTFRELgotCQkJCTIxOTUgS0VBVElORyBDUk9TUyBST0FECi0JCQkJU0FBTklDSFRPTiwgQi5DLiBWOE0gMkE1ICAKLQkJCQlDQU5BREEKLQotMDAtNjAtNzkgICAoaGV4KQkJTWFpbnN0cmVhbSBEYXRhLCBJbmMuCi0wMDYwNzkgICAgIChiYXNlIDE2KQkJTWFpbnN0cmVhbSBEYXRhLCBJbmMuCi0JCQkJMzc1IENoaXBldGEgV2F5LCBTdWl0ZSBCCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTdBICAgKGhleCkJCURWUyBHbWJICi0wMDYwN0EgICAgIChiYXNlIDE2KQkJRFZTIEdtYkgKLQkJCQlLUkVQRU5TVFJBU1NFIDgKLQkJCQlELTMwMTY1IEhBTk5PVkVSICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLTdCICAgKGhleCkJCUZPUkUgU1lTVEVNUywgSU5DLgotMDA2MDdCICAgICAoYmFzZSAxNikJCUZPUkUgU1lTVEVNUywgSU5DLgotCQkJCTEwMDAgRk9SRSBEUklWRQotCQkJCVdBUlJFTkRBTEUgUEEgMTUwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTdDICAgKGhleCkJCVdhdmVBY2Nlc3MsIEx0ZC4KLTAwNjA3QyAgICAgKGJhc2UgMTYpCQlXYXZlQWNjZXNzLCBMdGQuCi0JCQkJUC5PLiBCT1ggMjQ3MwotCQkJCTEwIEhBWUVaSVJBIFNUUkVFVAotCQkJCVJBJ0FOQU5BIDQzNjYzICAKLQkJCQlJU1JBRUwKLQotMDAtNjAtN0QgICAoaGV4KQkJU0VOVElFTlQgTkVUV09SS1MgSU5DLgotMDA2MDdEICAgICAoYmFzZSAxNikJCVNFTlRJRU5UIE5FVFdPUktTIElOQy4KLQkJCQkyMjAxIENBTlRVIENPVVJULVNURSAjMjA1Ci0JCQkJU0FSQVNPVEEgRkwgMzQyMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTdFICAgKGhleCkJCUdJR0FMQUJTLCBJTkMuCi0wMDYwN0UgICAgIChiYXNlIDE2KQkJR0lHQUxBQlMsIElOQy4KLQkJCQkyOTAgU0FOVEEgQU5BIENPVVJUCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03RiAgIChoZXgpCQlBVVJPUkEgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDYwN0YgICAgIChiYXNlIDE2KQkJQVVST1JBIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTE3NiBTRUNPTkQgQVZFTlVFCi0JCQkJV0FMVEhBTSBNQSAwMjE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtODAgICAoaGV4KQkJTUlDUk9UUk9OSVggREFUQUNPTSBMVEQuCi0wMDYwODAgICAgIChiYXNlIDE2KQkJTUlDUk9UUk9OSVggREFUQUNPTSBMVEQuCi0JCQkJMjAwIEFCRVJERUVOIERSSVZFCi0JCQkJTE9ORE9OLCBPTlRBUklPIE41ViA0TjIgIAotCQkJCUNBTkFEQQotCi0wMC02MC04MSAgIChoZXgpCQlUVi9DT00gSU5URVJOQVRJT05BTAotMDA2MDgxICAgICAoYmFzZSAxNikJCVRWL0NPTSBJTlRFUk5BVElPTkFMCi0JCQkJMTY1MTYgVklBIEVTUFJJTExPCi0JCQkJU0FOIERJRUdPIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04MiAgIChoZXgpCQlOT1ZBTElOSyBURUNITk9MT0dJRVMsIElOQy4KLTAwNjA4MiAgICAgKGJhc2UgMTYpCQlOT1ZBTElOSyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk0ODUxMSBXQVJNIFNQUklOR1MgQkxWRC4gIzIwOAotCQkJCUZSRU1PTlQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTgzICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNjA4MyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTg0ICAgKGhleCkJCURJR0lUQUwgVklERU8KLTAwNjA4NCAgICAgKGJhc2UgMTYpCQlESUdJVEFMIFZJREVPCi0JCQkJNDkyMCBBVkFMT04gUklER0UgUEtXWQotCQkJCVNVSVRFICM2MDAKLQkJCQlOT1JDUk9TUyBHQSAzMDA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtODUgICAoaGV4KQkJU3RvcmFnZSBDb25jZXB0cwotMDA2MDg1ICAgICAoYmFzZSAxNikJCVN0b3JhZ2UgQ29uY2VwdHMKLQkJCQkxNDM1MiBDaGFtYmVyIFJvYWQKLQkJCQlUdXN0aW4gQ0EgOTI3ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTg2ICAgKGhleCkJCUxPR0lDIFJFUExBQ0VNRU5UIFRFQ0guIExURC4KLTAwNjA4NiAgICAgKGJhc2UgMTYpCQlMT0dJQyBSRVBMQUNFTUVOVCBURUNILiBMVEQuCi0JCQkJMTQgQVJLV1JJR0hUIFJPQUQKLQkJCQlSRUFESU5HIEJFUktTIFJHMjBMUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtODcgICAoaGV4KQkJS0FOU0FJIEVMRUNUUklDIENPLiwgTFRELgotMDA2MDg3ICAgICAoYmFzZSAxNikJCUtBTlNBSSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQk2LTE0LTkgTUlET1JJSSwgQVNBTUlOQU1JLUtVCi0JCQkJSElST1NISU1BIDczMS0wMSAgCi0JCQkJSkFQQU4KLQotMDAtNjAtODggICAoaGV4KQkJV0hJVEUgTU9VTlRBSU4gRFNQLCBJTkMuCi0wMDYwODggICAgIChiYXNlIDE2KQkJV0hJVEUgTU9VTlRBSU4gRFNQLCBJTkMuCi0JCQkJNDEwIEFNSEVSU1QgU1RSRUVULVNURSAjMzI1Ci0JCQkJTkFTSFVBIE5IIDAzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04OSAgIChoZXgpCQlYQVRBCi0wMDYwODkgICAgIChiYXNlIDE2KQkJWEFUQQotCQkJCTE1MSBFQVNUIENMSUZGIFJPQUQtU1RFLiMxMAotCQkJCUJVUk5TVklMTEUgTU4gNTUzMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLThBICAgKGhleCkJCUNJVEFERUwgQ09NUFVURVIKLTAwNjA4QSAgICAgKGJhc2UgMTYpCQlDSVRBREVMIENPTVBVVEVSCi0JCQkJMjkgQVJNT1JZIFJECi0JCQkJTUlMRk9SRCBNQSAwMzA1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOEIgICAoaGV4KQkJQ29uZmVyVGVjaCBJbnRlcm5hdGlvbmFsCi0wMDYwOEIgICAgIChiYXNlIDE2KQkJQ29uZmVyVGVjaCBJbnRlcm5hdGlvbmFsCi0JCQkJMTIxMTAgTi4gUEVDT1MgU1RSRUVUCi0JCQkJV0VTVE1JTlNURVIgQ08gODAyMzQtMjA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOEMgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDA2MDhDICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTItODE0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOEQgICAoaGV4KQkJVU5JUFVMU0UgQ09SUC4KLTAwNjA4RCAgICAgKGJhc2UgMTYpCQlVTklQVUxTRSBDT1JQLgotCQkJCTItNywgU0VOR0VOREFJLU5JU0hJCi0JCQkJS09TSElHQVlBLUNJVFkKLQkJCQlTQUlUQU1BIDM0MyAgCi0JCQkJSk9SREFOCi0KLTAwLTYwLThFICAgKGhleCkJCUhFIEVMRUNUUk9OSUNTLCBURUNITk9MT0dJRSAmIFNZU1RFTVRFQ0hOSUsgR21iSAotMDA2MDhFICAgICAoYmFzZSAxNikJCUhFIEVMRUNUUk9OSUNTLCBURUNITk9MT0dJRSAmIFNZU1RFTVRFQ0hOSUsgR21iSAotCQkJCUFNIEdORUlTRU5BVUZMT1QgOAotCQkJCSBELTY2NTM4IE5FVU5ISVJDSEVOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLThGICAgKGhleCkJCVRFS1JBTSBURUNITk9MT0dZIENPLiwgTFRELgotMDA2MDhGICAgICAoYmFzZSAxNikJCVRFS1JBTSBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCUIxLCBOTy4gMTcsIExBTkUgMTU5LCBTRUMuIDYKLQkJCQlST09TRVZFTFQgUkQsCi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTYwLTkwICAgKGhleCkJCUFydGl6YSBOZXR3b3JrcyBJbmMKLTAwNjA5MCAgICAgKGJhc2UgMTYpCQlBcnRpemEgTmV0d29ya3MgSW5jCi0JCQkJRmFyZXQgVGFjaGlrYXdhIENlbnRlciBTcXVhcmUsIDItMzYtMiBBa2Vib25vLWNobywgCi0JCQkJVGFjaGlrYXdhLXNoaSwgVG9reW8gIDE5MC0wMDEyCi0JCQkJSkFQQU4KLQotMDAtNjAtOTEgICAoaGV4KQkJRklSU1QgUEFDSUZJQyBORVRXT1JLUywgSU5DLgotMDA2MDkxICAgICAoYmFzZSAxNikJCUZJUlNUIFBBQ0lGSUMgTkVUV09SS1MsIElOQy4KLQkJCQk4NzEgRk9YIExBTkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOTIgICAoaGV4KQkJTUlDUk8vU1lTLCBJTkMuCi0wMDYwOTIgICAgIChiYXNlIDE2KQkJTUlDUk8vU1lTLCBJTkMuCi0JCQkJMzQ0NyBPQ0VBTiBWSUVXIEJMVkQuCi0JCQkJR0xFTkRBTEUgQ0EgOTEyMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTkzICAgKGhleCkJCVZBUklBTgotMDA2MDkzICAgICAoYmFzZSAxNikJCVZBUklBTgotCQkJCTI3MDAgTUlUQ0hFTEwgRFIuCi0JCQkJV0FMTlVUIEdSRUVLIENBIDk0NTk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05NCAgIChoZXgpCQlJQk0gQ29ycAotMDA2MDk0ICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVBPIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOTUgICAoaGV4KQkJQUNDVS1USU1FIFNZU1RFTVMsIElOQy4KLTAwNjA5NSAgICAgKGJhc2UgMTYpCQlBQ0NVLVRJTUUgU1lTVEVNUywgSU5DLgotCQkJCTQyMCBTT01FUlMgUk9BRAotCQkJCUVMTElOR1RPTiBDVCAwNjAyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOTYgICAoaGV4KQkJVC5TLiBNSUNST1RFQ0ggSU5DLgotMDA2MDk2ICAgICAoYmFzZSAxNikJCVQuUy4gTUlDUk9URUNIIElOQy4KLQkJCQkyMDgxOCBISUdHSU5TIENPVVJUCi0JCQkJVE9SUkFOQ0UgQ0EgOTA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTk3ICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwNjA5NyAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCQVlGUk9OVCBQTEFaQQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05OCAgIChoZXgpCQlIVCBDT01NVU5JQ0FUSU9OUwotMDA2MDk4ICAgICAoYmFzZSAxNikJCUhUIENPTU1VTklDQVRJT05TCi0JCQkJNDQ4MCBTSE9QUElORyBMQU5FCi0JCQkJU0lNSSBWQUxMRVkgQ0EgOTMwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTk5ICAgKGhleCkJCVNCRSwgSW5jLgotMDA2MDk5ICAgICAoYmFzZSAxNikJCVNCRSwgSW5jLgotCQkJCTIzMDUgQ2FtaW5vIFJhbW9uCi0JCQkJU3VpdGUgMjAwCi0JCQkJU2FuIFJhbW9uIENBIDk0NTgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05QSAgIChoZXgpCQlOSksgVEVDSE5PIENPLgotMDA2MDlBICAgICAoYmFzZSAxNikJCU5KSyBURUNITk8gQ08uCi0JCQkJTjEtMjUgS0FNSVlBU0FUTwotCQkJCUtPTUFUU1UgICM5MjMgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTlCICAgKGhleCkJCUFTVFJPLU1FRCwgSU5DLgotMDA2MDlCICAgICAoYmFzZSAxNikJCUFTVFJPLU1FRCwgSU5DLgotCQkJCTYwMCBFQVNUIEdSRUVOV0lDSCBBVkUuCi0JCQkJV0VTVCBXQVJXSUNLIFJJIDAyODkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05QyAgIChoZXgpCQlQZXJraW4tRWxtZXIgSW5jb3Jwb3JhdGVkCi0wMDYwOUMgICAgIChiYXNlIDE2KQkJUGVya2luLUVsbWVyIEluY29ycG9yYXRlZAotCQkJCTcxMCBCcmlkZ2Vwb3J0IEF2ZS4KLQkJCQlTaGVsdG9uIENUIDA2NDg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05RCAgIChoZXgpCQlQTUkgRk9PRCBFUVVJUE1FTlQgR1JPVVAKLTAwNjA5RCAgICAgKGJhc2UgMTYpCQlQTUkgRk9PRCBFUVVJUE1FTlQgR1JPVVAKLQkJCQk3MDEgUklER0UgQVZFTlVFCi0JCQkJVFJPWSBPSCA0NTM3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOUUgICAoaGV4KQkJQVNDIFgzIC0gSU5GT1JNQVRJT04gVEVDSE5PTE9HWSBTVEFOREFSRFMgU0VDUkVUQVJJQVRTCi0wMDYwOUUgICAgIChiYXNlIDE2KQkJQVNDIFgzIC0gSU5GT1JNQVRJT04gVEVDSE5PTE9HWSBTVEFOREFSRFMgU0VDUkVUQVJJQVRTCi0JCQkJMTI1MCBFWUUgU1RSRUVUIE5XIC0gU1RFICMyMDAKLQkJCQlXQVNISU5HVE9OIERDIDIwMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05RiAgIChoZXgpCQlQSEFTVCBDT1JQT1JBVElPTgotMDA2MDlGICAgICAoYmFzZSAxNikJCVBIQVNUIENPUlBPUkFUSU9OCi0JCQkJNzkgV0VTVCA0NTAwIFNPVVRIIC0gQkxERy4jMTQKLQkJCQlTQUxUIExBS0UgQ0lUWSBVVCA4NDEwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQTAgICAoaGV4KQkJU1dJVENIRUQgTkVUV09SSyBURUNITk9MT0dJRVMsIElOQy4KLTAwNjBBMCAgICAgKGJhc2UgMTYpCQlTV0lUQ0hFRCBORVRXT1JLIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTEzODA1IDFTVCBBVkVOVUUgTk9SVEgKLQkJCQlQTFlNT1VUSCBNTiA1NTQ0MS01NDU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1BMSAgIChoZXgpCQlWUE5ldCwgSW5jLgotMDA2MEExICAgICAoYmFzZSAxNikJCVZQTmV0LCBJbmMuCi0JCQkJNTU1IE4uIE1BVEhJTERBIEFWRS4sLVNURSAjMTEwCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1BMiAgIChoZXgpCQlOSUhPTiBVTklTWVMgTElNSVRFRCBDTy4KLTAwNjBBMiAgICAgKGJhc2UgMTYpCQlOSUhPTiBVTklTWVMgTElNSVRFRCBDTy4KLQkJCQlQLk8uIEJPWCAxMzUKLQkJCQlUT0tZTy1UTywgIEtPVVRPVS1LVQotCQkJCVNISU5PTk9NRSAxLTEwLTkgIAotCQkJCUpBUEFOCi0KLTAwLTYwLUEzICAgKGhleCkJCUNPTlRJTlVVTSBURUNITk9MT0dZIENPUlAuCi0wMDYwQTMgICAgIChiYXNlIDE2KQkJQ09OVElOVVVNIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkyMjAgQ09OVElOVVVNIERSSVZFCi0JCQkJRkxFVENIRVIgTkMgMjg3MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUE0ICAgKGhleCkJCUdSSU5BS0VSIFNZU1RFTSBURUNITk9MT0dJRVMKLTAwNjBBNCAgICAgKGJhc2UgMTYpCQlHUklOQUtFUiBTWVNURU0gVEVDSE5PTE9HSUVTCi0JCQkJQk9YIDkxMi01NjEKLQkJCQlTSUxWRVJUT04gIDAxMjcgIAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC02MC1BNSAgIChoZXgpCQlQRVJGT1JNQU5DRSBURUxFQ09NIENPUlAuCi0wMDYwQTUgICAgIChiYXNlIDE2KQkJUEVSRk9STUFOQ0UgVEVMRUNPTSBDT1JQLgotCQkJCTEwIENBUkxTT04gUk9BRAotCQkJCVJPQ0hFU1RFUiBOWSAxNDYxMC0xMDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1BNiAgIChoZXgpCQlQQVJUSUNMRSBNRUFTVVJJTkcgU1lTVEVNUwotMDA2MEE2ICAgICAoYmFzZSAxNikJCVBBUlRJQ0xFIE1FQVNVUklORyBTWVNURU1TCi0JCQkJNTQ3NSBBSVJQT1JUIEJMVkQuCi0JCQkJQk9VTERFUiBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQTcgICAoaGV4KQkJTUlDUk9TRU5TIEdtYkggJiBDTy4gS0cKLTAwNjBBNyAgICAgKGJhc2UgMTYpCQlNSUNST1NFTlMgR21iSCAmIENPLiBLRwotCQkJCUt1ZWZlcnN0cmFzc2UgMTYKLQkJCQlELTU5MDY3IEhhbW0gIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtQTggICAoaGV4KQkJVElET01BVCBBQgotMDA2MEE4ICAgICAoYmFzZSAxNikJCVRJRE9NQVQgQUIKLQkJCQkKLQkJCQlTLTEyMDg5IFNUT0NLSE9MTSAgCi0JCQkJU1dFREVOCi0KLTAwLTYwLUE5ICAgKGhleCkJCUdFU1lURUMgTWJICi0wMDYwQTkgICAgIChiYXNlIDE2KQkJR0VTWVRFQyBNYkgKLQkJCQlQQVNDQUxTVFJBU1NFIDYKLQkJCQlEIDUyMDc2IEFBQ0hFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC1BQSAgIChoZXgpCQlJTlRFTExJR0VOVCBERVZJQ0VTIElOQy4gKElESSkKLTAwNjBBQSAgICAgKGJhc2UgMTYpCQlJTlRFTExJR0VOVCBERVZJQ0VTIElOQy4gKElESSkKLQkJCQkxNzE4LUwgQkVMTU9OVCBBVkVOVUUKLQkJCQlCQUxUSU1PUkUgTUQgMjEyNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUFCICAgKGhleCkJCUxBUlNDT00gSU5DT1JQT1JBVEVECi0wMDYwQUIgICAgIChiYXNlIDE2KQkJTEFSU0NPTSBJTkNPUlBPUkFURUQKLQkJCQkxODQ1IE1DQ0FORExFU1MgRFJJVkUKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQUMgICAoaGV4KQkJUkVTSUxJRU5DRSBDT1JQT1JBVElPTgotMDA2MEFDICAgICAoYmFzZSAxNikJCVJFU0lMSUVOQ0UgQ09SUE9SQVRJT04KLQkJCQkxNzU1IEVNQkFSQ0FERVJPIFJPQUQtU1RFICMxMjAKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUFEICAgKGhleCkJCU1lZ2FDaGlwcyBDb3Jwb3JhdGlvbgotMDA2MEFEICAgICAoYmFzZSAxNikJCU1lZ2FDaGlwcyBDb3Jwb3JhdGlvbgotCQkJCTQtMS02LE1peWFoYXJhCi0JCQkJWW9kb2dhd2Eta3UKLQkJCQlPc2FrYSA1MzItMDAwMwotCQkJCUpBUEFOCi0KLTAwLTYwLUFFICAgKGhleCkJCVRSSU8gSU5GT1JNQVRJT04gU1lTVEVNUyBBQgotMDA2MEFFICAgICAoYmFzZSAxNikJCVRSSU8gSU5GT1JNQVRJT04gU1lTVEVNUyBBQgotCQkJCUZPR0RFVkFHRU4gNEIKLQkJCQlTLTE4MyA2NCBUQUJZIAotCQkJCVNXRURFTgotCi0wMC02MC1BRiAgIChoZXgpCQlQQUNJRklDIE1JQ1JPIERBVEEsIElOQy4KLTAwNjBBRiAgICAgKGJhc2UgMTYpCQlQQUNJRklDIE1JQ1JPIERBVEEsIElOQy4KLQkJCQkxNjc1MSBNSUxMSUtBTiBBVkVOVUUKLQkJCQlJUlZJTkUgQ0EgOTI3MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUIwICAgKGhleCkJCUhFV0xFVFQtUEFDS0FSRCBDTy4KLTAwNjBCMCAgICAgKGJhc2UgMTYpCQlIRVdMRVRULVBBQ0tBUkQgQ08uCi0JCQkJTVMgNDJMRQotCQkJCTEwMDAwIFdPTEZFIFJPQUQKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUIxICAgKGhleCkJCUlOUFVUL09VVFBVVCwgSU5DLgotMDA2MEIxICAgICAoYmFzZSAxNikJCUlOUFVUL09VVFBVVCwgSU5DLgotCQkJCTEyMzAwIFBBUkMgQ1JFU1QgRFJJVkUKLQkJCQlTVEFGRk9SRCBUWCA3NzQ3Ny0yNDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1CMiAgIChoZXgpCQlQUk9DRVNTIENPTlRST0wgQ09SUC4KLTAwNjBCMiAgICAgKGJhc2UgMTYpCQlQUk9DRVNTIENPTlRST0wgQ09SUC4KLQkJCQk2ODc1IE1JTU1TIERSSVZFCi0JCQkJQVRMQU5UQSBHQSAzMDM0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQjMgICAoaGV4KQkJWi1DT00sIElOQy4KLTAwNjBCMyAgICAgKGJhc2UgMTYpCQlaLUNPTSwgSU5DLgotCQkJCTdGLTIsIE5PLjksIFBST1NQRVJJVFkgMVNUIFJELgotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC02MC1CNCAgIChoZXgpCQlHTEVOQVlSRSBSJkQgSU5DLgotMDA2MEI0ICAgICAoYmFzZSAxNikJCUdMRU5BWVJFIFImRCBJTkMuCi0JCQkJMTU3MCBLT09URU5BWSBTVFJFRVQKLQkJCQlWQU5DT1VWRVIsIEJDIFY1SyA1QjggIAotCQkJCUNBTkFEQQotCi0wMC02MC1CNSAgIChoZXgpCQlLRUJBIEdtYkgKLTAwNjBCNSAgICAgKGJhc2UgMTYpCQlLRUJBIEdtYkgKLQkJCQlHRVdFUkJFUEFSSyBVUkZBSFIKLQkJCQlBLTQwNDEgTElOWiAgCi0JCQkJQVVTVFJJQQotCi0wMC02MC1CNiAgIChoZXgpCQlMQU5EIENPTVBVVEVSIENPLiwgTFRELgotMDA2MEI2ICAgICAoYmFzZSAxNikJCUxBTkQgQ09NUFVURVIgQ08uLCBMVEQuCi0JCQkJNy00LTE3IE5JU0hJTkFLQUpJTUEKLQkJCQlZT0RPR0FXQUtVIDUzMiAgCi0JCQkJSkFQQU4KLQotMDAtNjAtQjcgICAoaGV4KQkJQ0hBTk5FTE1BVElDLCBJTkMuCi0wMDYwQjcgICAgIChiYXNlIDE2KQkJQ0hBTk5FTE1BVElDLCBJTkMuCi0JCQkJMTcwMCBHSUxMRVNQSUUgV0FZCi0JCQkJRUwgQ0FKT04gQ0EgOTIwMjAtMDkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQjggICAoaGV4KQkJQ09SRUxJUyBJbmMuCi0wMDYwQjggICAgIChiYXNlIDE2KQkJQ09SRUxJUyBJbmMuCi0JCQkJMTI2MDcgSGlkZGVuY3JlZWsgV2F5Ci0JCQkJQ2Vycml0b3MgQ0EgOTA3MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUI5ICAgKGhleCkJCU5FQyBJbmZyb250aWEgQ29ycG9yYXRpb24KLTAwNjBCOSAgICAgKGJhc2UgMTYpCQlORUMgSW5mcm9udGlhIENvcnBvcmF0aW9uCi0JCQkJMi02LTEsS2l0YW1pa2F0YSxUYWthdHN1LWt1Ci0JCQkJS2F3YXNha2kgIDIxMy04NTExCi0JCQkJSkFQQU4KLQotMDAtNjAtQkEgICAoaGV4KQkJU0FIQVJBIE5FVFdPUktTLCBJTkMuCi0wMDYwQkEgICAgIChiYXNlIDE2KQkJU0FIQVJBIE5FVFdPUktTLCBJTkMuCi0JCQkJMzM1IEhJR0hMQU5EIEFWRS4KLQkJCQlDSEVTSElSRSBDVCAwNjQxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQkIgICAoaGV4KQkJQ0FCTEVUUk9OIC0gTkVUTElOSywgSU5DLgotMDA2MEJCICAgICAoYmFzZSAxNikJCUNBQkxFVFJPTiAtIE5FVExJTkssIElOQy4KLQkJCQkzNSBJTkRVU1RSSUFMIFdBWQotCQkJCVAuTy4gQk9YIDUwMDUKLQkJCQlST0NIRVNURVIgTkggMDM4NjYtNTAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQkMgICAoaGV4KQkJS2V1bllvdW5nIEVsZWN0cm9uaWNzICYgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwNjBCQyAgICAgKGJhc2UgMTYpCQlLZXVuWW91bmcgRWxlY3Ryb25pY3MgJiBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotCQkJCTMyNS03NiwgREFFSEVVTkctRE9ORywgTUFQTy1HVSwKLQkJCQlTRU9VTCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTYwLUJEICAgKGhleCkJCUhVQkJFTEwtUFVMU0VDT00KLTAwNjBCRCAgICAgKGJhc2UgMTYpCQlIVUJCRUxMLVBVTFNFQ09NCi0JCQkJMjkwMCBUT1dFUlZJRVcgUk9BRAotCQkJCUhFUk5ET04gVkEgMjEwNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUJFICAgKGhleCkJCVdFQlRST05JQ1MKLTAwNjBCRSAgICAgKGJhc2UgMTYpCQlXRUJUUk9OSUNTCi0JCQkJM0ItMSAgOC0yLTEyCi0JCQkJTklTSEktR09UQU5EQQotCQkJCVNISU5BR0FXQS1LVSBUT0tZTyAxNDEgIAotCQkJCUpBUEFOCi0KLTAwLTYwLUJGICAgKGhleCkJCU1BQ1JBSUdPUiBTWVNURU1TLCBJTkMuCi0wMDYwQkYgICAgIChiYXNlIDE2KQkJTUFDUkFJR09SIFNZU1RFTVMsIElOQy4KLQkJCQlQTyBCT1ggMTAwOAotCQkJCUJST09LTElORSBWSUxMQUdFIE1BIDAyMTQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1DMCAgIChoZXgpCQlOZXJhIE5ldHdvcmtzIEFTCi0wMDYwQzAgICAgIChiYXNlIDE2KQkJTmVyYSBOZXR3b3JrcyBBUwotCQkJCUtva3N0YWR2ZWllbiAyMwotCQkJCUJlcmdlbiAgNTAyMAotCQkJCU5PUldBWQotCi0wMC02MC1DMSAgIChoZXgpCQlXYXZlU3BhbiBDb3Jwb3JhdGlvbgotMDA2MEMxICAgICAoYmFzZSAxNikJCVdhdmVTcGFuIENvcnBvcmF0aW9uCi0JCQkJNTAwIE4uIEJFUk5BUkRPIEFWRS4KLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1DMiAgIChoZXgpCQlNUEwgQUcKLTAwNjBDMiAgICAgKGJhc2UgMTYpCQlNUEwgQUcKLQkJCQlUYWVmZXJuc3RyYXNzZSAyMAotCQkJCUNILTU0MDUgRGFldHR3aWwgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtNjAtQzMgICAoaGV4KQkJTkVUVklTSU9OIENPUlBPUkFUSU9OCi0wMDYwQzMgICAgIChiYXNlIDE2KQkJTkVUVklTSU9OIENPUlBPUkFUSU9OCi0JCQkJTVMjIDFBCi0JCQkJT05FIENPTUFDIExPT1AKLQkJCQlST05LT05LT01BIE5ZIDExNzc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1DNCAgIChoZXgpCQlTT0xJVE9OIFNZU1RFTVMgSy5LLgotMDA2MEM0ICAgICAoYmFzZSAxNikJCVNPTElUT04gU1lTVEVNUyBLLksuCi0JCQkJMi00LTMgU0hJTkpVS1UsIFNISU5KVUtVLUtVCi0JCQkJVE9LWU8gMTYwICAKLQkJCQlKQVBBTgotCi0wMC02MC1DNSAgIChoZXgpCQlBTkNPVCBDT1JQLgotMDA2MEM1ICAgICAoYmFzZSAxNikJCUFOQ09UIENPUlAuCi0JCQkJMTE1IENPTlNUSVRVVElPTiBEUi4KLQkJCQlNRU5MTyBQQVJLIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1DNiAgIChoZXgpCQlEQ1MgQUcKLTAwNjBDNiAgICAgKGJhc2UgMTYpCQlEQ1MgQUcKLQkJCQlTQUxaQUNIU1RSQVNTIDMxCi0JCQkJRC0xNDEyOSAgQkVSTElOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLUM3ICAgKGhleCkJCUFNQVRJIENPTU1VTklDQVRJT05TIENPUlAuCi0wMDYwQzcgICAgIChiYXNlIDE2KQkJQU1BVEkgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQkyMDQzIFNBTUFSSVRBTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1DOCAgIChoZXgpCQlLVUtBIFdFTERJTkcgU1lTVEVNUyAmIFJPQk9UUwotMDA2MEM4ICAgICAoYmFzZSAxNikJCUtVS0EgV0VMRElORyBTWVNURU1TICYgUk9CT1RTCi0JCQkJQkxVRUNIRVJTVFJBU1NFIDE0NAotCQkJCURFUFQuIFJFLVNICi0JCQkJRC04NjE2NSBBVUdTQlVSRyAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC1DOSAgIChoZXgpCQlDb250cm9sTmV0LCBJbmMuCi0wMDYwQzkgICAgIChiYXNlIDE2KQkJQ29udHJvbE5ldCwgSW5jLgotCQkJCTc0NyBDQU1ERU4sIFNURS4gQQotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1DQSAgIChoZXgpCQlIQVJNT05JQyBTWVNURU1TIElOQ09SUE9SQVRFRAotMDA2MENBICAgICAoYmFzZSAxNikJCUhBUk1PTklDIFNZU1RFTVMgSU5DT1JQT1JBVEVECi0JCQkJMTk5IDFTVCBTVFJFRVQgLSBTVEUgIzMwMgotCQkJCUxPUyBBTFRPUyBDQSA5NDAyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQ0IgICAoaGV4KQkJSElUQUNISSBaT1NFTiBDT1JQT1JBVElPTgotMDA2MENCICAgICAoYmFzZSAxNikJCUhJVEFDSEkgWk9TRU4gQ09SUE9SQVRJT04KLQkJCQkzLTQsIFNBS1VSQUpJTUEgMS1DSE9NRQotCQkJCUtPTk9IQU5BLUtVLCBPU0FLQSA1NTQgIAotCQkJCUpBUEFOCi0KLTAwLTYwLUNDICAgKGhleCkJCUVNVFJBSywgSU5DT1JQT1JBVEVECi0wMDYwQ0MgICAgIChiYXNlIDE2KQkJRU1UUkFLLCBJTkNPUlBPUkFURUQKLQkJCQk3MTUwIENBTVBVUyBEUklWRSwgU1RFICMxODAKLQkJCQlDT0xPUkFETyBTUFJJTkdTIENPIDgwOTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1DRCAgIChoZXgpCQlWaWRlb1NlcnZlciwgSW5jLgotMDA2MENEICAgICAoYmFzZSAxNikJCVZpZGVvU2VydmVyLCBJbmMuCi0JCQkJNSBGT1JCRVMgUk9BRAotCQkJCUxFWElOR1RPTiBNQSAwMjE3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQ0UgICAoaGV4KQkJQUNDTEFJTSBDT01NVU5JQ0FUSU9OUwotMDA2MENFICAgICAoYmFzZSAxNikJCUFDQ0xBSU0gQ09NTVVOSUNBVElPTlMKLQkJCQk1MDAwIE9MRCBJUk9OU0lERVMgRFJJVkUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQ0YgICAoaGV4KQkJQUxURU9OIE5FVFdPUktTLCBJTkMuCi0wMDYwQ0YgICAgIChiYXNlIDE2KQkJQUxURU9OIE5FVFdPUktTLCBJTkMuCi0JCQkJNTAgR1JFQVQgT0FLUyBCTFZELgotCQkJCVNBTiBKT1NFIENBIDk1MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1EMCAgIChoZXgpCQlTTk1QIFJFU0VBUkNIIElOQ09SUE9SQVRFRAotMDA2MEQwICAgICAoYmFzZSAxNikJCVNOTVAgUkVTRUFSQ0ggSU5DT1JQT1JBVEVECi0JCQkJMzAwMSBLSU1CRVJMSU4gSEVJR0hUUyBST0FECi0JCQkJS05PWFZJTExFIFROIDM3OTIwLTk3MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUQxICAgKGhleCkJCUNBU0NBREUgQ09NTVVOSUNBVElPTlMKLTAwNjBEMSAgICAgKGJhc2UgMTYpCQlDQVNDQURFIENPTU1VTklDQVRJT05TCi0JCQkJNiBURUNITk9MT0dZIFBBUksgRFJJVkUKLQkJCQlXRVNURk9SRCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRDIgICAoaGV4KQkJTFVDRU5UIFRFQ0hOT0xPR0lFUyBUQUlXQU4gVEVMRUNPTU1VTklDQVRJT05TIENPLiwgTFRELgotMDA2MEQyICAgICAoYmFzZSAxNikJCUxVQ0VOVCBURUNITk9MT0dJRVMgVEFJV0FOIFRFTEVDT01NVU5JQ0FUSU9OUyBDTy4sIExURC4KLQkJCQkjMiwgSU5OT1ZBVElPTiBST0FEIElJCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOIENIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC02MC1EMyAgIChoZXgpCQlBVCZUCi0wMDYwRDMgICAgIChiYXNlIDE2KQkJQVQmVAotCQkJCTEwMSBDUkFXRk9SRFMgQ09STkVSIFJPQUQsIFJkLiAxSjMyMQotCQkJCVAuTy4gQk9YIDMwMzAKLQkJCQlIT0xNREVMIE5KIDA3NzMzLTMwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUQ0ICAgKGhleCkJCUVMREFUIENPTU1VTklDQVRJT04gTFRELgotMDA2MEQ0ICAgICAoYmFzZSAxNikJCUVMREFUIENPTU1VTklDQVRJT04gTFRELgotCQkJCTEwIEhBS0lTSE9OIFNUUkVFVAotCQkJCUJORUktQlJBSyAgNTEyMDMgIAotCQkJCUlTUkFFTAotCi0wMC02MC1ENSAgIChoZXgpCQlNSVlBQ0hJIFRFQ0hOT1MgQ09SUC4KLTAwNjBENSAgICAgKGJhc2UgMTYpCQlNSVlBQ0hJIFRFQ0hOT1MgQ09SUC4KLQkJCQk5NS0zLCBGVVRBU1VaVUtBCi0JCQkJTk9EQSBDSVRZLCBDSElCQSwgMjc4ICAKLQkJCQlKQVBBTgotCi0wMC02MC1ENiAgIChoZXgpCQlOb3ZBdGVsIFdpcmVsZXNzIFRlY2hub2xvZ2llcyBMdGQuCi0wMDYwRDYgICAgIChiYXNlIDE2KQkJTm92QXRlbCBXaXJlbGVzcyBUZWNobm9sb2dpZXMgTHRkLgotCQkJCVNVSVRFIDIwMCwgNjcxNS04VEggU1RSRUVUIE5FCi0JCQkJQ0FMR0FSWSwgQUxCRVJUQSBUMkUgOE00ICAKLQkJCQlDQU5BREEKLQotMDAtNjAtRDcgICAoaGV4KQkJRUNPTEUgUE9MWVRFQ0hOSVFVRSBGRURFUkFMRSBERSBMQVVTQU5ORSAoRVBGTCkKLTAwNjBENyAgICAgKGJhc2UgMTYpCQlFQ09MRSBQT0xZVEVDSE5JUVVFIEZFREVSQUxFIERFIExBVVNBTk5FIChFUEZMKQotCQkJCUVDVUJMRU5TCi0JCQkJQ0gtMTAxNSBMQVVTQU5ORSAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtNjAtRDggICAoaGV4KQkJRUxNSUMgU1lTVEVNUywgSU5DLgotMDA2MEQ4ICAgICAoYmFzZSAxNikJCUVMTUlDIFNZU1RFTVMsIElOQy4KLQkJCQlEQUktSUNISSBTRUlNRUkgQkxERy4KLQkJCQk0LTU5IEJFTlRFTi1ET1JJLCBOQUtBLUtVCi0JCQkJWU9LT0hBTUEgMjMxICAKLQkJCQlKQVBBTgotCi0wMC02MC1EOSAgIChoZXgpCQlUUkFOU1lTIE5FVFdPUktTIElOQy4KLTAwNjBEOSAgICAgKGJhc2UgMTYpCQlUUkFOU1lTIE5FVFdPUktTIElOQy4KLQkJCQkzNDAzIEdSSUZGSVRICi0JCQkJU1QuIExBVVJFTlQsIFFVRUJFQyBINFQgMVc1ICAKLQkJCQlDQU5BREEKLQotMDAtNjAtREEgICAoaGV4KQkJSkJNIEVMRUNUUk9OSUNTIENPLgotMDA2MERBICAgICAoYmFzZSAxNikJCUpCTSBFTEVDVFJPTklDUyBDTy4KLQkJCQk0NjQ1IExhR3VhcmRpYW4gRHJpdmUKLQkJCQlTVC4gTE9VSVMgTU8gNjMxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLURCICAgKGhleCkJCU5UUCBFTEVLVFJPTklLIEEvUwotMDA2MERCICAgICAoYmFzZSAxNikJCU5UUCBFTEVLVFJPTklLIEEvUwotCQkJCUtOQVBIT0xNIDcKLQkJCQlESy0yNzMwIEhFUkxFViAgCi0JCQkJREVOTUFSSwotCi0wMC02MC1EQyAgIChoZXgpCQlUb3lvIE5ldHdvcmsgU3lzdGVtcyAgJiBTeXN0ZW0gSW50ZWdyYXRpb24gQ28uIExURAotMDA2MERDICAgICAoYmFzZSAxNikJCVRveW8gTmV0d29yayBTeXN0ZW1zICAmIFN5c3RlbSBJbnRlZ3JhdGlvbiBDby4gTFRECi0JCQkJMTggTmlob24tb2RvcmksTmFrYS1rdQotCQkJCVlva29oYW1hLCBLYW5hZ2F3YSAgMjMxLTAwMjEKLQkJCQlKQVBBTgotCi0wMC02MC1ERCAgIChoZXgpCQlNWVJJQ09NLCBJTkMuCi0wMDYwREQgICAgIChiYXNlIDE2KQkJTVlSSUNPTSwgSU5DLgotCQkJCTMyNUIgTi4gU0FOVEEgQU5JVEEgQVZFLgotCQkJCUFSQ0FESUEgQ0EgOTEwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLURFICAgKGhleCkJCUtheXNlci1UaHJlZGUgR21iSAotMDA2MERFICAgICAoYmFzZSAxNikJCUtheXNlci1UaHJlZGUgR21iSAotCQkJCVdvbGZyYXRzaGF1c2VyIFN0ci4gNDgKLQkJCQlELTgxMzc5IE11bmljaCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLURGICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotMDA2MERGICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTE3NDUgVGVjaG5vbG9neSBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRTAgICAoaGV4KQkJQVhJT00gVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwNjBFMCAgICAgKGJhc2UgMTYpCQlBWElPTSBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTNGLCAxNCwgTEFORSAyMzUKLQkJCQlQQU8gQ0hJQU8gUk9BRCwgSFNJTiBUSUVOCi0JCQkJVEFJUEVJIEhTSUVOICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTYwLUUxICAgKGhleCkJCU9SQ0tJVCBDT01NVU5JQ0FUSU9OUyBMVEQuCi0wMDYwRTEgICAgIChiYXNlIDE2KQkJT1JDS0lUIENPTU1VTklDQVRJT05TIExURC4KLQkJCQkzOCBOQUhBTEFUIFlJWkhBSyBTVFJFRVQKLQkJCQlURUwtQVZJViAgNjc0NDggIAotCQkJCUlTUkFFTAotCi0wMC02MC1FMiAgIChoZXgpCQlRVUVTVCBFTkdJTkVFUklORyAmIERFVkVMT1BNRU5UCi0wMDYwRTIgICAgIChiYXNlIDE2KQkJUVVFU1QgRU5HSU5FRVJJTkcgJiBERVZFTE9QTUVOVAotCQkJCTEzNDUgRUFTVCBST0NLIFdSRU4gUk9BRAotCQkJCVBIT0VOSVggQVogODUwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUUzICAgKGhleCkJCUFSQklOIElOU1RSVU1FTlRTCi0wMDYwRTMgICAgIChiYXNlIDE2KQkJQVJCSU4gSU5TVFJVTUVOVFMKLQkJCQkzMjA2IExPTkdNSVJFIERSSVZFCi0JCQkJQ09MTEVHRSBTVEFUSU9OIFRYIDc3ODQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1FNCAgIChoZXgpCQlDT01QVVNFUlZFLCBJTkMuCi0wMDYwRTQgICAgIChiYXNlIDE2KQkJQ09NUFVTRVJWRSwgSU5DLgotCQkJCTUwMDAgQVJMSU5HVE9OIENFTlRSRSBCTFZELgotCQkJCVAuTy4gQk9YIDIwMjEyCi0JCQkJQ09MVU1CVVMgT0ggNDMyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUU1ICAgKGhleCkJCUZVSkkgQVVUT01BVElPTiBDTy4sIExURC4KLTAwNjBFNSAgICAgKGJhc2UgMTYpCQlGVUpJIEFVVE9NQVRJT04gQ08uLCBMVEQuCi0JCQkJMy0yMy0xMCwgTkVHSVNISQotCQkJCVVSQVdBLVNISSwgMzM2IFNBSVRBTUEgIAotCQkJCUpBUEFOCi0KLTAwLTYwLUU2ICAgKGhleCkJCVNIT01JVEkgU1lTVEVNUyBJTkNPUlBPUkFURUQKLTAwNjBFNiAgICAgKGJhc2UgMTYpCQlTSE9NSVRJIFNZU1RFTVMgSU5DT1JQT1JBVEVECi0JCQkJMjA5OSBHQVRFV0FZIFBMQUNFIC0gU1RFLiMyMjAKLQkJCQlTQU4gSk9TRSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRTcgICAoaGV4KQkJUkFOREFUQQotMDA2MEU3ICAgICAoYmFzZSAxNikJCVJBTkRBVEEKLQkJCQlQTyBCT1ggMjA5Ci0JCQkJSEFXVEhPUk4gIFZJQyAgMzEyMiAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTYwLUU4ICAgKGhleCkJCUhJVEFDSEkgQ09NUFVURVIgUFJPRFVDVFMgKEFNRVJJQ0EpLCBJTkMuCi0wMDYwRTggICAgIChiYXNlIDE2KQkJSElUQUNISSBDT01QVVRFUiBQUk9EVUNUUyAoQU1FUklDQSksIElOQy4KLQkJCQkzMTAxIFRBU01BTiBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1FOSAgIChoZXgpCQlBVE9QIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA2MEU5ICAgICAoYmFzZSAxNikJCUFUT1AgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJU1VJVEUgMzA1LCBOTy4gNDcsIFBBUksgQVZFTlVFIElJLAotCQkJCSBTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgMzAwNDcgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNjAtRUEgICAoaGV4KQkJU3RyZWFtTG9naWMKLTAwNjBFQSAgICAgKGJhc2UgMTYpCQlTdHJlYW1Mb2dpYwotCQkJCTIxMzI5IE5PUkRIT0ZGIFNUUkVFVAotCQkJCUNIQVRTV09SVEggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUVCICAgKGhleCkJCUZPVVJUSFRSQUNLIFNZU1RFTVMKLTAwNjBFQiAgICAgKGJhc2UgMTYpCQlGT1VSVEhUUkFDSyBTWVNURU1TCi0JCQkJVU5JVCAzIFRIRSBTWUNBTU9SRVMKLQkJCQkyNyBNSUxMIFJPQUQKLQkJCQlNQVJMT1cgLSBTTDcgMVFCICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC02MC1FQyAgIChoZXgpCQlIRVJNQVJZIE9QVE8gRUxFQ1RST05JQ1MgSU5DLgotMDA2MEVDICAgICAoYmFzZSAxNikJCUhFUk1BUlkgT1BUTyBFTEVDVFJPTklDUyBJTkMuCi0JCQkJMjAxLTQwNTAgR1JBVkVMRVkgU1QKLQkJCQlCVVJOQUJZLCBCQyBWNUMtM1Q2ICAKLQkJCQlDQU5BREEKLQotMDAtNjAtRUQgICAoaGV4KQkJUklDQVJETyBURVNUIEFVVE9NQVRJT04gTFRELgotMDA2MEVEICAgICAoYmFzZSAxNikJCVJJQ0FSRE8gVEVTVCBBVVRPTUFUSU9OIExURC4KLQkJCQlMT1dFU01PT1IgV0hBUkYKLQkJCQlXT1JDRVNURVIsIFdSMTJSUyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtRUUgICAoaGV4KQkJQVBPTExPCi0wMDYwRUUgICAgIChiYXNlIDE2KQkJQVBPTExPCi0JCQkJMzYxMCBCSVJDSCBTVFJFRVQtLVNURSAjMTAwCi0JCQkJTkVXUE9SVCBCRUFDSCBDQSA5MjY2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRUYgICAoaGV4KQkJRkxZVEVDSCBURUNITk9MT0dZIENPLiwgTFRELgotMDA2MEVGICAgICAoYmFzZSAxNikJCUZMWVRFQ0ggVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQlOby4xNjggU2luZy1haSBSZC4sIE5laWh1IERpc3RyaWN0Ci0JCQkJVEFJUEVJIENJVFkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNjAtRjAgICAoaGV4KQkJSk9ITlNPTiAmIEpPSE5TT04gTUVESUNBTCwgSU5DCi0wMDYwRjAgICAgIChiYXNlIDE2KQkJSk9ITlNPTiAmIEpPSE5TT04gTUVESUNBTCwgSU5DCi0JCQkJNDExMCBHRU9SR0UgUkQuCi0JCQkJVEFNUEEgRkwgMzM2MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUYxICAgKGhleCkJCUVYUCBDT01QVVRFUiwgSU5DLgotMDA2MEYxICAgICAoYmFzZSAxNikJCUVYUCBDT01QVVRFUiwgSU5DLgotCQkJCTE0MSBFSUxFRU4gV0FZCi0JCQkJU1lPU1NFVCBOWSAxMTc5MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRjIgICAoaGV4KQkJTEFTRVJHUkFQSElDUywgSU5DLgotMDA2MEYyICAgICAoYmFzZSAxNikJCUxBU0VSR1JBUEhJQ1MsIElOQy4KLQkJCQkyMCBBREEKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUYzICAgKGhleCkJCVBlcmZvcm1hbmNlIEFuYWx5c2lzIEJyb2FkYmFuZCwgU3BpcmVudCBwbGMKLTAwNjBGMyAgICAgKGJhc2UgMTYpCQlQZXJmb3JtYW5jZSBBbmFseXNpcyBCcm9hZGJhbmQsIFNwaXJlbnQgcGxjCi0JCQkJMjczNDkgQWdvdXJhIFJvYWQKLQkJCQlDYWxhYmFzYXMgSGlsbHMgQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUY0ICAgKGhleCkJCUFEVkFOQ0VEIENPTVBVVEVSIFNPTFVUSU9OUywgSW5jLgotMDA2MEY0ICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIENPTVBVVEVSIFNPTFVUSU9OUywgSW5jLgotCQkJCTEyNjc1IERBTklFTFNPTiBDT1VSVAotCQkJCVNVSVRFICM0MDcKLQkJCQlQT1dBWSBDQSA5MjA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRjUgICAoaGV4KQkJSUNPTiBXRVNULCBJTkMuCi0wMDYwRjUgICAgIChiYXNlIDE2KQkJSUNPTiBXRVNULCBJTkMuCi0JCQkJMzM0MiBTT1VUSCAzMDAgRUFTVAotCQkJCVNBTFQgTEFLRSBDSVRZIFVUIDg0MTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GNiAgIChoZXgpCQlORVhURVNUIENPTU1VTklDQVRJT05TIFBST0RVQ1RTLCBJTkMuCi0wMDYwRjYgICAgIChiYXNlIDE2KQkJTkVYVEVTVCBDT01NVU5JQ0FUSU9OUyBQUk9EVUNUUywgSU5DLgotCQkJCVRXTyBNSUQgQU1FUklDQSBQTEFaQSwgU1RFLjUwMAotCQkJCU9BS0JST09LIFRFUlJBQ0UgSUwgNjAxODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUY3ICAgKGhleCkJCURBVEFGVVNJT04gU1lTVEVNUwotMDA2MEY3ICAgICAoYmFzZSAxNikJCURBVEFGVVNJT04gU1lTVEVNUwotCQkJCVAuTy4gQk9YIDU4MgotCQkJCVNURUxMRU5CT1NDSCwgIDc1OTkgIAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC02MC1GOCAgIChoZXgpCQlMb3JhbiBJbnRlcm5hdGlvbmFsIFRlY2hub2xvZ2llcyBJbmMuCi0wMDYwRjggICAgIChiYXNlIDE2KQkJTG9yYW4gSW50ZXJuYXRpb25hbCBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTk1NSBHUkVFTiBWQUxMRVkgQ1JFU0NFTlQKLQkJCQlTVUlURSAjMTY1Ci0JCQkJT1RUQVdBLCBPTlRBUklPIEsyQyAzVjQgIAotCQkJCUNBTkFEQQotCi0wMC02MC1GOSAgIChoZXgpCQlESUFNT05EIExBTkUgQ09NTVVOSUNBVElPTlMKLTAwNjBGOSAgICAgKGJhc2UgMTYpCQlESUFNT05EIExBTkUgQ09NTVVOSUNBVElPTlMKLQkJCQkxMzEwIFJFRFdPT0QgV0FZIC0gU1RFLgotCQkJCVBFVEFMVU1BIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GQSAgIChoZXgpCQlFRFVDQVRJT05BTCBURUNITk9MT0dZIFJFU09VUkNFUywgSU5DLgotMDA2MEZBICAgICAoYmFzZSAxNikJCUVEVUNBVElPTkFMIFRFQ0hOT0xPR1kgUkVTT1VSQ0VTLCBJTkMuCi0JCQkJMTc0MiBDSFVSQ0ggU1RSRUVUCi0JCQkJSE9MQlJPT0sgTlkgMTE3NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUZCICAgKGhleCkJCVBBQ0tFVEVFUiwgSU5DLgotMDA2MEZCICAgICAoYmFzZSAxNikJCVBBQ0tFVEVFUiwgSU5DLgotCQkJCTEwMjAxIE4uIERFIEFOWkEgQk9VTEVWQVJECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GQyAgIChoZXgpCQlDT05TRVJWQVRJT04gVEhST1VHSCBJTk5PVkFUSU9OIExURC4KLTAwNjBGQyAgICAgKGJhc2UgMTYpCQlDT05TRVJWQVRJT04gVEhST1VHSCBJTk5PVkFUSU9OIExURC4KLQkJCQkxMDQwIFdISVBQTEUgU1QuLSBTVEUuICMyMjUKLQkJCQlQUkVTQ09UVCBBWiA4NjMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRkQgICAoaGV4KQkJTmV0SUNzLCBJbmMuCi0wMDYwRkQgICAgIChiYXNlIDE2KQkJTmV0SUNzLCBJbmMuCi0JCQkJNDIgTkFHT0cgUEFSSwotCQkJCUFDVE9OIE1BIDAxNzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GRSAgIChoZXgpCQlMWU5YIFNZU1RFTSBERVZFTE9QRVJTLCBJTkMuCi0wMDYwRkUgICAgIChiYXNlIDE2KQkJTFlOWCBTWVNURU0gREVWRUxPUEVSUywgSU5DLgotCQkJCTE3NU4gTkVXIEJPU1RPTiBTVFJFRVQKLQkJCQlXT0JVUk4gTUEgMDE4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUZGICAgKGhleCkJCVF1VmlzLCBJbmMuCi0wMDYwRkYgICAgIChiYXNlIDE2KQkJUXVWaXMsIEluYy4KLQkJCQkyOTIxIFNXIFdBTkFNQUtFUiBEUklWRQotCQkJCVNVSVRFICMxMDcKLQkJCQlUT1BFS0EgS1MgNjY2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTY0LTQwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwNjQ0MCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTZELUZCICAgKGhleCkJCVZ1dHJpeCAoVUspIEx0ZAotMDA2REZCICAgICAoYmFzZSAxNikJCVZ1dHJpeCAoVUspIEx0ZAotCQkJCVVuaXQgMSBSZWQgTG9kZ2UgQnVzaW5lc3MgUGFyawotCQkJCVdhcmxleXMgTGFuZQotCQkJCVdlc3Rvbi1zdXBlci1tYXJlIE5vcnRoIFNvbWVyc2V0IEJTMjQgN1ROCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNzAtQjAgICAoaGV4KQkJTS9BLUNPTSBJTkMuIENPTVBBTklFUwotMDA3MEIwICAgICAoYmFzZSAxNikJCU0vQS1DT00gSU5DLiBDT01QQU5JRVMKLQkJCQkxMTcxNyBFWFBMT1JBVElPTiBMQU5FCi0JCQkJR0VSTUFOVE9XTiBNRCAyMDc2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNzAtQjMgICAoaGV4KQkJREFUQSBSRUNBTEwgTFRELgotMDA3MEIzICAgICAoYmFzZSAxNikJCURBVEEgUkVDQUxMIExURC4KLQkJCQlTT05ERVMgUExBQ0UKLQkJCQlET1JLSU5HIFNVUlJFWSBSSDQgM0VGCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC03Mi05OCAgIChoZXgpCQlLQU9OIE1FRElBIENvLiwgTHRkLgotMDA3Mjk4ICAgICAoYmFzZSAxNikJCUtBT04gTUVESUEgQ28uLCBMdGQuCi0JCQkJS2Fvbm1lZGlhIEJ1aWxkaW5nLCA1MTMtNAotCQkJCVlhdGFwLURvbmcsIEJ1bmRhbmctR3UKLQkJCQlTdW5nbmFtLUNpdHkgS3lvbmdnaS1EbyA0NjMtODM5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTc4LTlFICAgKGhleCkJCVNBR0VNQ09NCi0wMDc4OUUgICAgIChiYXNlIDE2KQkJU0FHRU1DT00KLQkJCQkyNTAgcm91dGUgZGUgbCdFbXBlcmV1cgotCQkJCVJVRUlMIE1BTE1BSVNPTiAgOTI4NDgKLQkJCQlGUkFOQ0UKLQotMDAtN0YtMjggICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLTAwN0YyOCAgICAgKGJhc2UgMTYpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMDAgICAoaGV4KQkJTVVMVElURUNIIFNZU1RFTVMsIElOQy4KLTAwODAwMCAgICAgKGJhc2UgMTYpCQlNVUxUSVRFQ0ggU1lTVEVNUywgSU5DLgotCQkJCTIyMDUgV09PREFMRSBEUklWRQotCQkJCU1PVU5EUyBWSUVXIE1OIDU1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0wMSAgIChoZXgpCQlQRVJJUEhPTklDUyBDT1JQT1JBVElPTgotMDA4MDAxICAgICAoYmFzZSAxNikJCVBFUklQSE9OSUNTIENPUlBPUkFUSU9OCi0JCQkJNDAwMCBWRVRFUkFOUyBNRU1PUklBTCBISUdIV0FZCi0JCQkJQk9IRU1JQSBORVcgWU9SSyAxMTcxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMDIgICAoaGV4KQkJU0FURUxDT00gKFVLKSBMVEQKLTAwODAwMiAgICAgKGJhc2UgMTYpCQlTQVRFTENPTSAoVUspIExURAotCQkJCVRFQ0hOT0xPR1kgVFJBTlNGRVIgQ0VOVFJFCi0JCQkJU0lMV09PRCBQQVJLLCBCVUNLSFVSU1QgUk9BRCBBU0NPVCwgQkVSSwotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0wMyAgIChoZXgpCQlIWVRFQyBFTEVDVFJPTklDUyBMVEQuCi0wMDgwMDMgICAgIChiYXNlIDE2KQkJSFlURUMgRUxFQ1RST05JQ1MgTFRELgotCQkJCTUgQ1JBRE9DSyBST0FECi0JCQkJUkVBRElORyBCRVJLUyBSRzUgNERYCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLTA0ICAgKGhleCkJCUFOVExPVyBDT01NVU5JQ0FUSU9OUywgTFRELgotMDA4MDA0ICAgICAoYmFzZSAxNikJCUFOVExPVyBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCTQgQ09MVEhST1AgV0FZCi0JCQkJVEhBVENIQU0gUkcxOSA0TFcKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtMDUgICAoaGV4KQkJQ0FDVFVTIENPTVBVVEVSIElOQy4KLTAwODAwNSAgICAgKGJhc2UgMTYpCQlDQUNUVVMgQ09NUFVURVIgSU5DLgotCQkJCTExMjAgTUVUUk9DUkVTVCBEUklWRQotCQkJCVNVSVRFIDEwMwotCQkJCUNBUlJPTExUT04gVFggNzUwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTA2ICAgKGhleCkJCUNPTVBVQUREIENPUlBPUkFUSU9OCi0wMDgwMDYgICAgIChiYXNlIDE2KQkJQ09NUFVBREQgQ09SUE9SQVRJT04KLQkJCQlFTkdJTkVFUklORwotCQkJCTEyMzAzIFRFQ0hOT0xPR1kgQkxWRC4KLQkJCQlBVVNUSU4gVFggNzg3MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTA3ICAgKGhleCkJCURMT0cgTkMtU1lTVEVNRQotMDA4MDA3ICAgICAoYmFzZSAxNikJCURMT0cgTkMtU1lTVEVNRQotCQkJCVdFUk5FUi1WT04tU0lFTUVOUyBTVFJBU1NFIDEzCi0JCQkJRC04MDM3LCBPTENISU5HCi0JCQkJR0VSTUFOWQotCi0wMC04MC0wOCAgIChoZXgpCQlEWU5BVEVDSCBDT01QVVRFUiBTWVNURU1TCi0wMDgwMDggICAgIChiYXNlIDE2KQkJRFlOQVRFQ0ggQ09NUFVURVIgU1lTVEVNUwotCQkJCTI4MCBCRVJOQVJETyBBVkVOVUUKLQkJCQlQLk8uIEJPWCA3NDAwCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDAzOS03NDAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0wOSAgIChoZXgpCQlKVVBJVEVSIFNZU1RFTVMsIElOQy4KLTAwODAwOSAgICAgKGJhc2UgMTYpCQlKVVBJVEVSIFNZU1RFTVMsIElOQy4KLQkJCQkzMDczIFRFQUdBUkRFTiBTVFJFRVQKLQkJCQlTQU4gTEVBTkRSTyBDQSA5NDU3Ny01NzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0wQSAgIChoZXgpCQlKQVBBTiBDT01QVVRFUiBDT1JQLgotMDA4MDBBICAgICAoYmFzZSAxNikJCUpBUEFOIENPTVBVVEVSIENPUlAuCi0JCQkJTC4gSy4gQkxERy4gSElHQVNISSBLQU5EQQotCQkJCTItNi05IENISVlPREEtS1UgVE9LWU8gMTAxCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC0wQiAgIChoZXgpCQlDU0sgQ09SUE9SQVRJT04KLTAwODAwQiAgICAgKGJhc2UgMTYpCQlDU0sgQ09SUE9SQVRJT04KLQkJCQkxOEYgTUFUU1VTSElUQSBJTVAgQkxERywKLQkJCQkxLTMtNyBTSElST01JIENIVU8tS1UgT1NBS0EKLQkJCQlKQVBBTiA1NDAKLQkJCQlKQVBBTgotCi0wMC04MC0wQyAgIChoZXgpCQlWSURFQ09NIExJTUlURUQKLTAwODAwQyAgICAgKGJhc2UgMTYpCQlWSURFQ09NIExJTUlURUQKLQkJCQlORVdUT1dOIEVTVEFURQotCQkJCUhFTkxFWS1PTi1USEFNRVMgT1hPTiAgUkc5IDFIRwotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0wRCAgIChoZXgpCQlWT1NTV0lOS0VMIEYuVS4KLTAwODAwRCAgICAgKGJhc2UgMTYpCQlWT1NTV0lOS0VMIEYuVS4KLQkJCQlBTSBKT1NURU5IT0YgMTUKLQkJCQlELTQxMzAgTU9FUlMKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC04MC0wRSAgIChoZXgpCQlBVExBTlRJWCBDT1JQT1JBVElPTgotMDA4MDBFICAgICAoYmFzZSAxNikJCUFUTEFOVElYIENPUlBPUkFUSU9OCi0JCQkJNTQwMSBOVyBCUk9LRU5TT1VORCBCTFZELgotCQkJCUJPQ0EgUkFUT04gRkwgMzM0MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTBGICAgKGhleCkJCVNUQU5EQVJEIE1JQ1JPU1lTVEVNUwotMDA4MDBGICAgICAoYmFzZSAxNikJCVNUQU5EQVJEIE1JQ1JPU1lTVEVNUwotCQkJCTMwMCBLRU5ORURZIERSSVZFCi0JCQkJSEFVUFBBVUdFIE5ZIDExNzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xMCAgIChoZXgpCQlDT01NT0RPUkUgSU5URVJOQVRJT05BTAotMDA4MDEwICAgICAoYmFzZSAxNikJCUNPTU1PRE9SRSBJTlRFUk5BVElPTkFMCi0JCQkJMTIwMCBXSUxTT04gRFJJVkUKLQkJCQlXRVNUIENIRVNURVIgUEEgMTkzODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTExICAgKGhleCkJCURJR0lUQUwgU1lTVEVNUyBJTlQnTC4gSU5DLgotMDA4MDExICAgICAoYmFzZSAxNikJCURJR0lUQUwgU1lTVEVNUyBJTlQnTC4gSU5DLgotCQkJCTc2NTkgMTc4VEggUEwuIE5FCi0JCQkJUC5PLiBCT1ggOTA4Ci0JCQkJUkVETU9ORCBXQSA5ODA3My0wOTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xMiAgIChoZXgpCQlJTlRFR1JBVEVEIE1FQVNVUkVNRU5UIFNZU1RFTVMKLTAwODAxMiAgICAgKGJhc2UgMTYpCQlJTlRFR1JBVEVEIE1FQVNVUkVNRU5UIFNZU1RFTVMKLQkJCQk5NTI1IFNXIEdFTUlOSSBEUklWRQotCQkJCUJFQVZFUlRPTiBPUiA5NzAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMTMgICAoaGV4KQkJVEhPTUFTLUNPTlJBRCBDT1JQT1JBVElPTgotMDA4MDEzICAgICAoYmFzZSAxNikJCVRIT01BUy1DT05SQUQgQ09SUE9SQVRJT04KLQkJCQkxOTA4LVIgS1JBTUVSIExBTkUKLQkJCQlBVVNUSU4gVFggNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTE0ICAgKGhleCkJCUVTUFJJVCBTWVNURU1TCi0wMDgwMTQgICAgIChiYXNlIDE2KQkJRVNQUklUIFNZU1RFTVMKLQkJCQkxNEYsIE5PLiAxLCBTRUMuIDQKLQkJCQlOQU4gS0lORyBFQVNUIFJPQUQgMTA1NjkgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTgwLTE1ICAgKGhleCkJCVNFSUtPIFNZU1RFTVMsIElOQy4KLTAwODAxNSAgICAgKGJhc2UgMTYpCQlTRUlLTyBTWVNURU1TLCBJTkMuCi0JCQkJU1lTVEVNUyBERVZFTE9QTUVOVCBESVZJU0lPTgotCQkJCTUtNCBIQUNDSE9CT1JJIDQtQ0hPVU1FIENIVVVPVS1LVSBUT0tPWU8KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTE2ICAgKGhleCkJCVdBTkRFTCBBTkQgR09MVEVSTUFOTgotMDA4MDE2ICAgICAoYmFzZSAxNikJCVdBTkRFTCBBTkQgR09MVEVSTUFOTgotCQkJCTEwMzAgU1dBQklBIENPVVJUCi0JCQkJUkVTRUFSQ0ggVFJJQU5HTEUgUEFSSwotCQkJCU5DIDI3NzA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xNyAgIChoZXgpCQlQRlUgTElNSVRFRAotMDA4MDE3ICAgICAoYmFzZSAxNikJCVBGVSBMSU1JVEVECi0JCQkJTkVUV09SSyBTRUMuCi0JCQkJNjU4LTEsIFRTVVJVTUEgTUFDSElEQS1TSEksIFRPS1lPIDE5NC0wMAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtMTggICAoaGV4KQkJS09CRSBTVEVFTCwgTFRELgotMDA4MDE4ICAgICAoYmFzZSAxNikJCUtPQkUgU1RFRUwsIExURC4KLQkJCQlLT0JFIElTVVpVIFJFQ1JVSVQgQkxERy4KLQkJCQk3VEggRkxPT1IgMi0yLCA0LUNIT01FLCBLVU1PSS1ET1JJLCBDSFVPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC0xOSAgIChoZXgpCQlEQVlOQSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA4MDE5ICAgICAoYmFzZSAxNikJCURBWU5BIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNTAgU09VVEggTUFJTiBTVFJFRVQtIzUzMAotCQkJCVNBTFQgTEFLRSBDSVRZIFVUQUggODQxNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTFBICAgKGhleCkJCUJFTEwgQVRMQU5USUMKLTAwODAxQSAgICAgKGJhc2UgMTYpCQlCRUxMIEFUTEFOVElDCi0JCQkJTjkyIFcxNDYxMiAgQU5USE9OWSBBVkVOVUUKLQkJCQlNRU5PTU9ORUUgRkFMTFMgV0kgNTMwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTFCICAgKGhleCkJCUtPRElBSyBURUNITk9MT0dZCi0wMDgwMUIgICAgIChiYXNlIDE2KQkJS09ESUFLIFRFQ0hOT0xPR1kKLQkJCQkyMzQwIEhBUlJJUyBXQVkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMUMgICAoaGV4KQkJTkVXUE9SVCBTWVNURU1TIFNPTFVUSU9OUwotMDA4MDFDICAgICAoYmFzZSAxNikJCU5FV1BPUlQgU1lTVEVNUyBTT0xVVElPTlMKLQkJCQk0MDE5IFdFU1RFUkxZIEFWRU5VRQotCQkJCVNVSVRFIDEwMwotCQkJCU5FV1BPUlQgQkVBQ0ggQ0EgOTI2NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTFEICAgKGhleCkJCUlOVEVHUkFURUQgSU5GRVJFTkNFIE1BQ0hJTkVTCi0wMDgwMUQgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBJTkZFUkVOQ0UgTUFDSElORVMKLQkJCQkxNDY4IEVBU1QgS0FURUxMQQotCQkJCUFOQUhFSU0gQ0EgOTI4MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTFFICAgKGhleCkJCVhJTkVUUk9OLCBJTkMuCi0wMDgwMUUgICAgIChiYXNlIDE2KQkJWElORVRST04sIElOQy4KLQkJCQkyMzMwIEIuIFdBTFNIIEFWRS4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMUYgICAoaGV4KQkJS1JVUFAgQVRMQVMgRUxFQ1RST05JSyBHTUJICi0wMDgwMUYgICAgIChiYXNlIDE2KQkJS1JVUFAgQVRMQVMgRUxFQ1RST05JSyBHTUJICi0JCQkJUC5PLiBCT1ggNDQ4NTQ1Ci0JCQkJRC0yODAwIEJSRU1FTiA0NAotCQkJCUdFUk1BTlkKLQotMDAtODAtMjAgICAoaGV4KQkJTkVUV09SSyBQUk9EVUNUUwotMDA4MDIwICAgICAoYmFzZSAxNikJCU5FVFdPUksgUFJPRFVDVFMKLQkJCQlESVZJU0lPTiBPRiBBTkRSRVcgQ09SUE9SQVRJT04KLQkJCQkyNzcxIFBMQVpBIERFTCBBTU8zCi0JCQkJVE9SUkFOQ0UgQ0EgOTA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTIxICAgKGhleCkJCUFsY2F0ZWwgQ2FuYWRhIEluYy4KLTAwODAyMSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIENhbmFkYSBJbmMuCi0JCQkJMzQ5IFRlcnJ5IEZveCBEcml2ZQotCQkJCUthbmF0YSBPbnRhcmlvIEsySyAyVjYKLQkJCQlDQU5BREEKLQotMDAtODAtMjIgICAoaGV4KQkJU0NBTi1PUFRJQ1MKLTAwODAyMiAgICAgKGJhc2UgMTYpCQlTQ0FOLU9QVElDUwotCQkJCTIwMSBURUNITk9MT0dZIERSSVZFCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yMyAgIChoZXgpCQlJTlRFR1JBVEVEIEJVU0lORVNTIE5FVFdPUktTCi0wMDgwMjMgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBCVVNJTkVTUyBORVRXT1JLUwotCQkJCTFCTiBUSEUgU1lTVEVNUyBDRU5UUkUKLQkJCQkxNCwgQlJJREdFR0FURSBCVVNJTkVTUyBQQVJLLCBHQVRFSE9VU0UKLQkJCQlCVUNLUyBIUDE5IDNYTiAtIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0yNCAgIChoZXgpCQlLQUxQQU5BLCBJTkMuCi0wMDgwMjQgICAgIChiYXNlIDE2KQkJS0FMUEFOQSwgSU5DLgotCQkJCTExNTQgRUFTVCBBUlFVRVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yNSAgIChoZXgpCQlTVE9MTE1BTk4gR01CSAotMDA4MDI1ICAgICAoYmFzZSAxNikJCVNUT0xMTUFOTiBHTUJICi0JCQkJTUFYLUJSQVVFUi1BTExFRSA4MQotCQkJCUQtMjAwMCBIQU1CVVJHIDUwCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtODAtMjYgICAoaGV4KQkJTkVUV09SSyBQUk9EVUNUUyBDT1JQT1JBVElPTgotMDA4MDI2ICAgICAoYmFzZSAxNikJCU5FVFdPUksgUFJPRFVDVFMgQ09SUE9SQVRJT04KLQkJCQkxNDQwIFdFU1QgQ09MT1JBRE8gQkxWRC4KLQkJCQlQQVNBREVOQSBDQSA5MTEwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMjcgICAoaGV4KQkJQURBUFRJVkUgU1lTVEVNUywgSU5DLgotMDA4MDI3ICAgICAoYmFzZSAxNikJCUFEQVBUSVZFIFNZU1RFTVMsIElOQy4KLQkJCQkxNDAwIE4uVy4gQ09NUFRPTiBEUklWRQotCQkJCVNVSVRFIDM0MAotCQkJCUJFQVZFUlRPTiBPUiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMjggICAoaGV4KQkJVFJBRFBPU1QgKEhLKSBMVEQKLTAwODAyOCAgICAgKGJhc2UgMTYpCQlUUkFEUE9TVCAoSEspIExURAotCQkJCTUvRiwgU1RBUiBDRU5UUkUKLQkJCQk0NDMtNDUxIENBU1RMRSBQRUFLIFJPQUQgS1dBSSBDSFVORywgTi5UCi0JCQkJSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLTgwLTI5ICAgKGhleCkJCUVBR0xFIFRFQ0hOT0xPR1ksIElOQy4KLTAwODAyOSAgICAgKGJhc2UgMTYpCQlFQUdMRSBURUNITk9MT0dZLCBJTkMuCi0JCQkJNjgwMCBPUkFOR0VUSE9SUEUgQVZFLlVOSVQKLQkJCQlCVUVOQSBQQVJLIENBIDkwNjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yQSAgIChoZXgpCQlURVNUIFNZU1RFTVMgJiBTSU1VTEFUSU9OUyBJTkMKLTAwODAyQSAgICAgKGJhc2UgMTYpCQlURVNUIFNZU1RFTVMgJiBTSU1VTEFUSU9OUyBJTkMKLQkJCQkzMjQyOSBJTkRVU1RSSUFMIERSSVZFCi0JCQkJTUFESVNPTiBIRUlHSFRTIE1JIDQ4MDcxLTE1MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTJCICAgKGhleCkJCUlOVEVHUkFURUQgTUFSS0VUSU5HIENPCi0wMDgwMkIgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBNQVJLRVRJTkcgQ08KLQkJCQkxMzYwIEJPUkRFQVVYIERSSVZFCi0JCQkJQkxERy4gIzQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTJDICAgKGhleCkJCVRIRSBTQUdFIEdST1VQIFBMQwotMDA4MDJDICAgICAoYmFzZSAxNikJCVRIRSBTQUdFIEdST1VQIFBMQwotCQkJCVNBR0UgSE9VU0UsIEJFTlRPTiBQQVJLIFJPQUQKLQkJCQlORVdDQVNUTEUgVVBPTiBUWU5FIE5FNyA3TFoKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLTJEICAgKGhleCkJCVhZTE9HSUNTIElOQwotMDA4MDJEICAgICAoYmFzZSAxNikJCVhZTE9HSUNTIElOQwotCQkJCTUzIFRISVJEIEFWRU5VRQotCQkJCUJVUkxJTkdUT04gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTJFICAgKGhleCkJCUNBU1RMRSBST0NLIENPTVBVVElORwotMDA4MDJFICAgICAoYmFzZSAxNikJCUNBU1RMRSBST0NLIENPTVBVVElORwotCQkJCTIwODM3IEJPWUNFIExBTkUKLQkJCQlTQVJBVE9HQSBDQSA5NTA3MC00ODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yRiAgIChoZXgpCQlOQVRJT05BTCBJTlNUUlVNRU5UUyBDT1JQLgotMDA4MDJGICAgICAoYmFzZSAxNikJCU5BVElPTkFMIElOU1RSVU1FTlRTIENPUlAuCi0JCQkJMTE1MDAgTm9ydGggTW9wYWMgRXhwcmVzc3dheQotCQkJCUFVU1RJTiBUWCA3ODc1OS0zNTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0zMCAgIChoZXgpCQlORVhVUyBFTEVDVFJPTklDUwotMDA4MDMwICAgICAoYmFzZSAxNikJCU5FWFVTIEVMRUNUUk9OSUNTCi0JCQkJMzkgU1BSSU5HRklFTEQgUk9BRAotCQkJCUNBTUJSSURHRSBDQjQgMUFECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0zMSAgIChoZXgpCQlCQVNZUywgQ09SUC4KLTAwODAzMSAgICAgKGJhc2UgMTYpCQlCQVNZUywgQ09SUC4KLQkJCQk1MDEgTUFDQVJBIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMzIgICAoaGV4KQkJQUNDRVNTIENPLiwgTFRELgotMDA4MDMyICAgICAoYmFzZSAxNikJCUFDQ0VTUyBDTy4sIExURC4KLQkJCQlISUVJLUtVREFOIEJMREcuIEIxCi0JCQkJMy04LTExIEtVREFOLU1JTkFNSSwgQ0hJWU9EQS1LVSwgVE9LWU8gMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtMzMgICAoaGV4KQkJRU1TIEF2aWF0aW9uLCBJbmMuCi0wMDgwMzMgICAgIChiYXNlIDE2KQkJRU1TIEF2aWF0aW9uLCBJbmMuCi0JCQkJMTIxIFdISVRURU5EQUxFIERSSVZFCi0JCQkJU3VpdGUgQQotCQkJCU1PT1JFU1RPV04gTkogMDgwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTM0ICAgKGhleCkJCVNNVCBHT1VQSUwKLTAwODAzNCAgICAgKGJhc2UgMTYpCQlTTVQgR09VUElMCi0JCQkJMyBSVUUgREVTIEFSQ0hJVkVTCi0JCQkJOTQwMDAgQ1JFVEVJTAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC04MC0zNSAgIChoZXgpCQlURUNITk9MT0dZIFdPUktTLCBJTkMuCi0wMDgwMzUgICAgIChiYXNlIDE2KQkJVEVDSE5PTE9HWSBXT1JLUywgSU5DLgotCQkJCTQwMzAgQlJBS0VSIExBTkUgIzM1MAotCQkJCUFVU1RJTiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMzYgICAoaGV4KQkJUkVGTEVYIE1BTlVGQUNUVVJJTkcgU1lTVEVNUwotMDA4MDM2ICAgICAoYmFzZSAxNikJCVJFRkxFWCBNQU5VRkFDVFVSSU5HIFNZU1RFTVMKLQkJCQlVTklUIEQsIFRIRSBGTEVNSU5HIENFTlRSRSwKLQkJCQlGTEVNSU5HIFdBWSwgQ1JBV0xFWSBXRVNUIFNVU1NFWCBSSDEwIDJOCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLTM3ICAgKGhleCkJCUVyaWNzc29uIEdyb3VwCi0wMDgwMzcgICAgIChiYXNlIDE2KQkJRXJpY3Nzb24gR3JvdXAKLQkJCQlUZWxlZm9uYWt0aWVib2xhZ2V0Ci0JCQkJTE0gRXJpY3Nzb24gQ29ycC4gMTI2IDI1IFNUT0NLSE9MTQotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC04MC0zOCAgIChoZXgpCQlEQVRBIFJFU0VBUkNIICYgQVBQTElDQVRJT05TCi0wMDgwMzggICAgIChiYXNlIDE2KQkJREFUQSBSRVNFQVJDSCAmIEFQUExJQ0FUSU9OUwotCQkJCTkwNDEgRVhFQ1VUSVZFIFBBUksgRFIuCi0JCQkJU1VJVEUgMjAwCi0JCQkJS05PWFZJTExFIFROIDM3OTIzLTQ2MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTM5ICAgKGhleCkJCUFMQ0FURUwgU1RDIEFVU1RSQUxJQQotMDA4MDM5ICAgICAoYmFzZSAxNikJCUFMQ0FURUwgU1RDIEFVU1RSQUxJQQotCQkJCTI1Mi0yODAgQk9UQU5ZIFJPQUQKLQkJCQlBTEVYQU5EUklBLCBOU1cgMjAxNQotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC04MC0zQSAgIChoZXgpCQlWQVJJVFlQRVIsIElOQy4KLTAwODAzQSAgICAgKGJhc2UgMTYpCQlWQVJJVFlQRVIsIElOQy4KLQkJCQk5MDAgTUlERExFU0VYIFRVUk5QSUtFCi0JCQkJQklMTEVSSUNBIE1BIDAxODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0zQiAgIChoZXgpCQlBUFQgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwODAzQiAgICAgKGJhc2UgMTYpCQlBUFQgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk5NjA3IERSLiBQRVJSWSBST0FECi0JCQkJSUpBTVNWSUxMRSBNRCAyMTc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtM0MgICAoaGV4KQkJVFZTIEVMRUNUUk9OSUNTIExURAotMDA4MDNDICAgICAoYmFzZSAxNikJCVRWUyBFTEVDVFJPTklDUyBMVEQKLQkJCQk0NCwgTUlMTEVSIFJPQUQKLQkJCQlCQU5HQUxPUkUgNTYwIDA1MgotCQkJCUlORElBCi0JCQkJSU5ESUEKLQotMDAtODAtM0QgICAoaGV4KQkJU1VSSUdJS0VOIENPLiwgIExURC4KLTAwODAzRCAgICAgKGJhc2UgMTYpCQlTVVJJR0lLRU4gQ08uLCAgTFRELgotCQkJCVlPVVRIIEJMREcsIDQtMS05IFNISU5KVUtVCi0JCQkJU0hJTkpVS1UtS1UsIFRPS1lPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC0zRSAgIChoZXgpCQlTWU5FUk5FVElDUwotMDA4MDNFICAgICAoYmFzZSAxNikJCVNZTkVSTkVUSUNTCi0JCQkJODUgUkFOR0VXQVkgUk9BRAotCQkJCU5PUlRIIEJJTExFUklDQSBNQSAwMTg2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtM0YgICAoaGV4KQkJVEFUVU5HIENPTVBBTlkKLTAwODAzRiAgICAgKGJhc2UgMTYpCQlUQVRVTkcgQ09NUEFOWQotCQkJCTIyIENIVU5HU0hBTkcgTi4gUkQuIDNSRCBTRUMuCi0JCQkJVEFJUEVJIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTgwLTQwICAgKGhleCkJCUpPSE4gRkxVS0UgTUFOVUZBQ1RVUklORyBDTy4KLTAwODA0MCAgICAgKGJhc2UgMTYpCQlKT0hOIEZMVUtFIE1BTlVGQUNUVVJJTkcgQ08uCi0JCQkJUC5PLiBCT1ggQzkwOTAtTS9TIDI0NEYKLQkJCQlFVkVSRVRUIFdBIDk4MjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00MSAgIChoZXgpCQlWRUIgS09NQklOQVQgUk9CT1RST04KLTAwODA0MSAgICAgKGJhc2UgMTYpCQlWRUIgS09NQklOQVQgUk9CT1RST04KLQkJCQlHUlVOQUVSIFNUUkFCRSAyLCBEUkVTREVOIDgwMTAKLQkJCQlHRFIgRUFTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC04MC00MiAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIKLTAwODA0MiAgICAgKGJhc2UgMTYpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIKLQkJCQkyOTAwIFMuIERpYWJsbyBXYXkKLQkJCQlUZW1wZSBBWiA4NTI4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNDMgICAoaGV4KQkJTkVUV09STEQsIElOQy4KLTAwODA0MyAgICAgKGJhc2UgMTYpCQlORVRXT1JMRCwgSU5DLgotCQkJCUtBTkRBIDMgQU1FUkVYIEJMREcuCi0JCQkJMy0xMCBLQU5EQUpJTkJPQ0hPIENISVlPREEtS1UgICAgVE9LWU8gMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtNDQgICAoaGV4KQkJU1lTVEVDSCBDT01QVVRFUiBDT1JQLgotMDA4MDQ0ICAgICAoYmFzZSAxNikJCVNZU1RFQ0ggQ09NUFVURVIgQ09SUC4KLQkJCQk2NDY1IE5BTkNZIFJJREdFIERSSVZFCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00NSAgIChoZXgpCQlNQVRTVVNISVRBIEVMRUNUUklDIElORC4gQ08KLTAwODA0NSAgICAgKGJhc2UgMTYpCQlNQVRTVVNISVRBIEVMRUNUUklDIElORC4gQ08KLQkJCQlDT01QVVRFUiBESVZJU0lPTgotCQkJCTEwMDYsIEtBRE9NQSwKLQkJCQlPU0FLQSA1NzEgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC00NiAgIChoZXgpCQlVTklWRVJTSVRZIE9GIFRPUk9OVE8KLTAwODA0NiAgICAgKGJhc2UgMTYpCQlVTklWRVJTSVRZIE9GIFRPUk9OVE8KLQkJCQlERVBULiBPRiBFTEVDVFJJQ0FMIEVOR0lOJ0lORwotCQkJCTEwIEtJTkdTIENPTExFR0UgUkQuIFRPUk9OVE8sIE9OVEFSSU8gTTUKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtODAtNDcgICAoaGV4KQkJSU4tTkVUIENPUlAuCi0wMDgwNDcgICAgIChiYXNlIDE2KQkJSU4tTkVUIENPUlAuCi0JCQkJMTY3MjAgV0VTVCBCRVJOQVJETyBEUklWRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyNy0xOTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00OCAgIChoZXgpCQlDT01QRVggSU5DT1JQT1JBVEVECi0wMDgwNDggICAgIChiYXNlIDE2KQkJQ09NUEVYIElOQ09SUE9SQVRFRAotCQkJCTQwNTUgRUFTVCBMQSBQQUxNQQotCQkJCVVOSVQKLQkJCQlBTkFIRUlNIENBIDkyODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00OSAgIChoZXgpCQlOSVNTSU4gRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDgwNDkgICAgIChiYXNlIDE2KQkJTklTU0lOIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTQ3LCBVTUVaVSAtIFRBS0FTRSAtIENITwotCQkJCVVLWU8tS1UsIEtZT1RPLCA2MTUKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTRBICAgKGhleCkJCVBSTy1MT0cKLTAwODA0QSAgICAgKGJhc2UgMTYpCQlQUk8tTE9HCi0JCQkJMTIgVVBQRVIgUkFHU0RBTEUgRFJJVkUKLQkJCQlNT05URVJFWSBDQSA5Mzk0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNEIgICAoaGV4KQkJRUFHTEUgVEVDSE5PTE9HSUVTIFBUWS5MVEQuCi0wMDgwNEIgICAgIChiYXNlIDE2KQkJRUFHTEUgVEVDSE5PTE9HSUVTIFBUWS5MVEQuCi0JCQkJNzAgS0VZUyBST0FECi0JCQkJTU9PUkFCQklOICBWSUMuIDMxODkKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtODAtNEMgICAoaGV4KQkJQ09OVEVDIENPLiwgTFRELgotMDA4MDRDICAgICAoYmFzZSAxNikJCUNPTlRFQyBDTy4sIExURC4KLQkJCQkzLTktMzEsIEhJTUVTQVRPCi0JCQkJTklTSElZT0RPR0FXQS1LVSBPU0FLQSwgNTU1Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC00RCAgIChoZXgpCQlDWUNMT05FIE1JQ1JPU1lTVEVNUywgSU5DLgotMDA4MDREICAgICAoYmFzZSAxNikJCUNZQ0xPTkUgTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJMjUgU0NJRU5DRSBQQVJLCi0JCQkJTkVXIEhBVkVOIENUIDA2NTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00RSAgIChoZXgpCQlBUEVYIENPTVBVVEVSIENPTVBBTlkKLTAwODA0RSAgICAgKGJhc2UgMTYpCQlBUEVYIENPTVBVVEVSIENPTVBBTlkKLQkJCQk0NTAwIDE1MFRIIEFWRU5VRSwgTkUKLQkJCQlSRURNT05EIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00RiAgIChoZXgpCQlEQUlLSU4gSU5EVVNUUklFUywgTFRELgotMDA4MDRGICAgICAoYmFzZSAxNikJCURBSUtJTiBJTkRVU1RSSUVTLCBMVEQuCi0JCQkJRUxFQ1RST05JQ1MgRElWSVNJT04KLQkJCQlTSElHQSBQTEFOVCAxMDAwLTIgT0hUQU5JIE9LQU1PVE8tQ0hPLCBLCi0JCQkJSkFQQU4gNTI1Ci0JCQkJSkFQQU4KLQotMDAtODAtNTAgICAoaGV4KQkJWklBVEVDSCBDT1JQT1JBVElPTgotMDA4MDUwICAgICAoYmFzZSAxNikJCVpJQVRFQ0ggQ09SUE9SQVRJT04KLQkJCQkzNDMzIFJPQkVSVE8gQ09VUlQKLQkJCQlTQU4gTFVJUyBPQklTUE8gQ0EgOTM0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTUxICAgKGhleCkJCUZJQkVSTVVYCi0wMDgwNTEgICAgIChiYXNlIDE2KQkJRklCRVJNVVgKLQkJCQk5MzEwIFRPUEFOR0EgQ0FOWU9OIEJMVkQuCi0JCQkJQ0hBVFNXT1JUSCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNTIgICAoaGV4KQkJVEVDSE5JQ0FMTFkgRUxJVEUgQ09OQ0VQVFMKLTAwODA1MiAgICAgKGJhc2UgMTYpCQlURUNITklDQUxMWSBFTElURSBDT05DRVBUUwotCQkJCTI2MTUgUEFDSUZJQyBDT0FTVCBISUdIV0FZCi0JCQkJSEVSTU9TQSBCRUFDSCBDQSA5MDI1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNTMgICAoaGV4KQkJSU5URUxMSUNPTSwgSU5DLgotMDA4MDUzICAgICAoYmFzZSAxNikJCUlOVEVMTElDT00sIElOQy4KLQkJCQkyMDQxNSBOT1JESE9GRiBTVFJFRVQKLQkJCQlDSEFUU1dPUlRIIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC01NCAgIChoZXgpCQlGUk9OVElFUiBURUNITk9MT0dJRVMgQ09SUC4KLTAwODA1NCAgICAgKGJhc2UgMTYpCQlGUk9OVElFUiBURUNITk9MT0dJRVMgQ09SUC4KLQkJCQkxMDIwMSBOTy4gUFQuIFdBU0hJTkdUT04gUk9BRAotCQkJCU1FUVVPTiBXSSA1MzA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNTUgICAoaGV4KQkJRkVSTUlMQUIKLTAwODA1NSAgICAgKGJhc2UgMTYpCQlGRVJNSUxBQgotCQkJCVAuTy4gQk9YIDUwMCwgTVMtMjM0Ci0JCQkJQkFUQVZJQSBJTCA2MDUxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNTYgICAoaGV4KQkJU1BISU5YIEVMRUtUUk9OSUsgR01CSAotMDA4MDU2ICAgICAoYmFzZSAxNikJCVNQSElOWCBFTEVLVFJPTklLIEdNQkgKLQkJCQlXQUxETUFUVEVOU1RSLCAxMwotCQkJCTc4MDggV0FMREtJUkNIIDMgUkFQUEVORUNLU1RSQUJFIDEKLQkJCQlXRVNUIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLTU3ICAgKGhleCkJCUFEU09GVCwgTFRELgotMDA4MDU3ICAgICAoYmFzZSAxNikJCUFEU09GVCwgTFRELgotCQkJCUltIEJhdW1nYXJ0ZW4gNgotCQkJCU1PSExJTiBDSC00MzEzIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTgwLTU4ICAgKGhleCkJCVBSSU5URVIgU1lTVEVNUyBDT1JQT1JBVElPTgotMDA4MDU4ICAgICAoYmFzZSAxNikJCVBSSU5URVIgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTIwNyBQQVJSWSBQQVJLV0FZCi0JCQkJR0FJVEhFUlNCVVJHIE1EIDIwODc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC01OSAgIChoZXgpCQlTVEFOTEVZIEVMRUNUUklDIENPLiwgTFRECi0wMDgwNTkgICAgIChiYXNlIDE2KQkJU1RBTkxFWSBFTEVDVFJJQyBDTy4sIExURAotCQkJCVImRCBMQUJPUkFUT1JZCi0JCQkJMS0zLTEgRURBLU5JU0hJLCBNSURPUkktS1UsIFlPS09IQU1BLVNISQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtNUEgICAoaGV4KQkJVFVMSVAgQ09NUFVURVJTIElOVEVSTkFUJ0wgQi5WCi0wMDgwNUEgICAgIChiYXNlIDE2KQkJVFVMSVAgQ09NUFVURVJTIElOVEVSTkFUJ0wgQi5WCi0JCQkJUC5PLiBCT1ggMzMzMwotCQkJCTUyMDMgREggJ1MtSEVSVE9HRU5CT1NDSAotCQkJCVRIRSBORVRIRVJMQU5EUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTgwLTVCICAgKGhleCkJCUNPTkRPUiBTWVNURU1TLCBJTkMuCi0wMDgwNUIgICAgIChiYXNlIDE2KQkJQ09ORE9SIFNZU1RFTVMsIElOQy4KLQkJCQkyMTMzIFNBTUFSSUxUQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNUMgICAoaGV4KQkJQUdJTElTIENPUlBPUkFUSU9OCi0wMDgwNUMgICAgIChiYXNlIDE2KQkJQUdJTElTIENPUlBPUkFUSU9OCi0JCQkJMTEwMSBTQU4gQU5UT05JTyBST0FECi0JCQkJU1VJVEUgMTAxCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0My0xMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC01RCAgIChoZXgpCQlDQU5TVEFSCi0wMDgwNUQgICAgIChiYXNlIDE2KQkJQ0FOU1RBUgotCQkJCTM5MDAgVklDVE9SSUEgUEFSSyBBVkVOVUUKLQkJCQlOT1JUSCBZT1JLIE9OVEFSSU8sIENBTkFEQQotCQkJCU0ySCAzSDcKLQkJCQlDQU5BREEKLQotMDAtODAtNUUgICAoaGV4KQkJTFNJIExPR0lDIENPUlBPUkFUSU9OCi0wMDgwNUUgICAgIChiYXNlIDE2KQkJTFNJIExPR0lDIENPUlBPUkFUSU9OCi0JCQkJMTU1MSBNQ0NBUlRIWSBCT1VMRVZBUkQKLQkJCQlNUyBHODEzCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTVGICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDA4MDVGICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC02MCAgIChoZXgpCQlORVRXT1JLIElOVEVSRkFDRSBDT1JQT1JBVElPTgotMDA4MDYwICAgICAoYmFzZSAxNikJCU5FVFdPUksgSU5URVJGQUNFIENPUlBPUkFUSU9OCi0JCQkJMTUwMTkgV0VTVCA5NSBTVFJFRVQKLQkJCQlMRU5FWEEgS1MgNjYyMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTYxICAgKGhleCkJCUxJVFRPTiBTWVNURU1TLCBJTkMuCi0wMDgwNjEgICAgIChiYXNlIDE2KQkJTElUVE9OIFNZU1RFTVMsIElOQy4KLQkJCQlNL1MgNDQtMjAKLQkJCQkyOTg1MSBBR09VUkEgUk9BRAotCQkJCUFHT1VSQSBISUxMUyBDQSA5MTMwMS0wNTAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC02MiAgIChoZXgpCQlJTlRFUkZBQ0UgIENPLgotMDA4MDYyICAgICAoYmFzZSAxNikJCUlOVEVSRkFDRSAgQ08uCi0JCQkJOC0yNiBPWlUgNS1DSE9NRSBNSU5BTUktS1UKLQkJCQlISVJPU0hJTUEgNzMyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC02MyAgIChoZXgpCQlIaXJzY2htYW5uIEF1dG9tYXRpb24gYW5kIENvbnRyb2wgR21iSAotMDA4MDYzICAgICAoYmFzZSAxNikJCUhpcnNjaG1hbm4gQXV0b21hdGlvbiBhbmQgQ29udHJvbCBHbWJICi0JCQkJU3R1dHRnYXJ0ZXIgU3RyYXNzZSA0NS01MSAKLQkJCQlOZWNrYXJ0ZW56bGluZ2VuICAgRC03MjY1NCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLTY0ICAgKGhleCkJCVdZU0UgVEVDSE5PTE9HWQotMDA4MDY0ICAgICAoYmFzZSAxNikJCVdZU0UgVEVDSE5PTE9HWQotCQkJCTM0NzEgTk9SVEggRklSU1QgU1RSRUVUIE0vUwotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC02NSAgIChoZXgpCQlDWUJFUkdSQVBISUMgU1lTVEVNUyBQVFkgTFRELgotMDA4MDY1ICAgICAoYmFzZSAxNikJCUNZQkVSR1JBUEhJQyBTWVNURU1TIFBUWSBMVEQuCi0JCQkJMjkwIEJVUldPT0QgUk9BRAotCQkJCUhBV1RIT1JOLCBWSUNUT1JJQSAzMTIyCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTgwLTY2ICAgKGhleCkJCUFSQ09NIENPTlRST0wgU1lTVEVNUywgTFRELgotMDA4MDY2ICAgICAoYmFzZSAxNikJCUFSQ09NIENPTlRST0wgU1lTVEVNUywgTFRELgotCQkJCVVOSVQgOCwgQ0xJRlRPTiBST0FECi0JCQkJQ0FNQlJJREdFIENCSSA0V0gKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLTY3ICAgKGhleCkJCVNRVUFSRSBEIENPTVBBTlkKLTAwODA2NyAgICAgKGJhc2UgMTYpCQlTUVVBUkUgRCBDT01QQU5ZCi0JCQkJNDA0MSBOT1JUSCBSSUNIQVJEIFNUUkVFVAotCQkJCVAuTy4gQk9YIDQ3MgotCQkJCU1JTFdBVUtFRSBXSSA1MzIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNjggICAoaGV4KQkJWUFNQVRFQ0ggU0NJRU5USUZJQyBMVEQuCi0wMDgwNjggICAgIChiYXNlIDE2KQkJWUFNQVRFQ0ggU0NJRU5USUZJQyBMVEQuCi0JCQkJMTI1NSBMQUlSRCwgU1VJVEUgMjYwCi0JCQkJTU9OVFJFQUwsIFFVRUJFQyBIM1AgMlQxCi0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTgwLTY5ICAgKGhleCkJCUNPTVBVVE9ORSBTWVNURU1TCi0wMDgwNjkgICAgIChiYXNlIDE2KQkJQ09NUFVUT05FIFNZU1RFTVMKLQkJCQkxMTAwIE5PUlRITUVBRE9XIFBBUktXQVkKLQkJCQlTVUlURSAxNTAKLQkJCQlST1NXRUxMIEdBIDMwMDc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC02QSAgIChoZXgpCQlFUkkgKEVNUEFDIFJFU0VBUkNIIElOQy4pCi0wMDgwNkEgICAgIChiYXNlIDE2KQkJRVJJIChFTVBBQyBSRVNFQVJDSCBJTkMuKQotCQkJCTQ3NTYwIFNFQUJSSURHRSBEUklWRQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTZCICAgKGhleCkJCVNDSE1JRCBURUxFQ09NTVVOSUNBVElPTgotMDA4MDZCICAgICAoYmFzZSAxNikJCVNDSE1JRCBURUxFQ09NTVVOSUNBVElPTgotCQkJCUJJTlpTVFJBU1NFIDM1LAotCQkJCUNILTgwNDUgWlVSSUNICi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC04MC02QyAgIChoZXgpCQlDRUdFTEVDIFBST0pFQ1RTIExURAotMDA4MDZDICAgICAoYmFzZSAxNikJCUNFR0VMRUMgUFJPSkVDVFMgTFRECi0JCQkJREVQVC4gTURELAotCQkJCUJPVUdIVE9OIFJELCAgUlVHQlkgV0FSS1MsIENPMjEgMUJVCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLTZEICAgKGhleCkJCUNFTlRVUlkgU1lTVEVNUyBDT1JQLgotMDA4MDZEICAgICAoYmFzZSAxNikJCUNFTlRVUlkgU1lTVEVNUyBDT1JQLgotCQkJCTItOC0xMiBNSU5BTUktQ0hPCi0JCQkJS09LVUJVTkpJLVNISSwgVE9LWU8KLQkJCQkxODUgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC02RSAgIChoZXgpCQlOSVBQT04gU1RFRUwgQ09SUE9SQVRJT04KLTAwODA2RSAgICAgKGJhc2UgMTYpCQlOSVBQT04gU1RFRUwgQ09SUE9SQVRJT04KLQkJCQkzMS0xIFNISU5LQVdBIDItQ0hPVU1FCi0JCQkJQ0hVTy1LVSBUT0tZTyAxMDQKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTZGICAgKGhleCkJCU9ORUxBTiBMVEQuCi0wMDgwNkYgICAgIChiYXNlIDE2KQkJT05FTEFOIExURC4KLQkJCQlQLk8uIEJPWCAxMDcKLQkJCQlIRU5MRVkgT04gVEhBTUVTIE9YRk9SRFNISVJFIFJHOSAzTk9RCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC03MCAgIChoZXgpCQlDT01QVVRBRE9SQVMgTUlDUk9OCi0wMDgwNzAgICAgIChiYXNlIDE2KQkJQ09NUFVUQURPUkFTIE1JQ1JPTgotCQkJCUdVRVJSRVJPIDIwMDEgLSAxOQotCQkJCUlSQVBVQVRPIEdUTyAgMzY2NjAKLQkJCQlNRVhJQ08KLQkJCQlNRVhJQ08KLQotMDAtODAtNzEgICAoaGV4KQkJU0FJIFRFQ0hOT0xPR1kKLTAwODA3MSAgICAgKGJhc2UgMTYpCQlTQUkgVEVDSE5PTE9HWQotCQkJCTQyMjQgQ0FNUFVTIFBPSU5UIENPVVJUCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxLTE1MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTcyICAgKGhleCkJCU1JQ1JPUExFWCBTWVNURU1TIExURC4KLTAwODA3MiAgICAgKGJhc2UgMTYpCQlNSUNST1BMRVggU1lTVEVNUyBMVEQuCi0JCQkJMTA0LTIwNzEgS2luZ3N3YXkKLQkJCQlQb3J0IENvcXVpdGxhbSwgIEJDIFYzQyA2TjIKLQkJCQlDQU5BREEKLQotMDAtODAtNzMgICAoaGV4KQkJRFdCIEFTU09DSUFURVMKLTAwODA3MyAgICAgKGJhc2UgMTYpCQlEV0IgQVNTT0NJQVRFUwotCQkJCTkzNjAgU1cgR0VNSU5JIERSSVZFCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDA1LTcxNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTc0ICAgKGhleCkJCUZJU0hFUiBDT05UUk9MUwotMDA4MDc0ICAgICAoYmFzZSAxNikJCUZJU0hFUiBDT05UUk9MUwotCQkJCTE3MTIgQ0VOVFJFIENSRUVLIERSSVZFCi0JCQkJQVVTVElOIFRYIDc4NzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC03NSAgIChoZXgpCQlQQVJTWVRFQyBHTUJICi0wMDgwNzUgICAgIChiYXNlIDE2KQkJUEFSU1lURUMgR01CSAotCQkJCUpVRUxJQ0hFUiBTVFIuIDMzOAotCQkJCUQ1MTAwIEFBQ0hFTgotCQkJCUYuUi4gR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtODAtNzYgICAoaGV4KQkJTUNOQwotMDA4MDc2ICAgICAoYmFzZSAxNikJCU1DTkMKLQkJCQlQLk8uIEJPWCAxMjg4OQotCQkJCVJUUCBOQyAyNzcwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNzcgICAoaGV4KQkJQlJPVEhFUiBJTkRVU1RSSUVTLCBMVEQuCi0wMDgwNzcgICAgIChiYXNlIDE2KQkJQlJPVEhFUiBJTkRVU1RSSUVTLCBMVEQuCi0JCQkJUkVTRUFSQ0ggTEFCT1JBVE9SWQotCQkJCTktMzUgSE9SSVRBLURPUkksIE1JWlVITy1LVSBOQUdPWUEsIDQ2NwotCQkJCUpBUEFOCi0KLTAwLTgwLTc4ICAgKGhleCkJCVBSQUNUSUNBTCBQRVJJUEhFUkFMUywgSU5DLgotMDA4MDc4ICAgICAoYmFzZSAxNikJCVBSQUNUSUNBTCBQRVJJUEhFUkFMUywgSU5DLgotCQkJCTM3NSBDT05FSk8gUklER0UgQVZFTlVFCi0JCQkJVEhPVVNBTkQgT0FLUyBDQSA5MTM2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNzkgICAoaGV4KQkJTUlDUk9CVVMgREVTSUdOUyBMVEQuCi0wMDgwNzkgICAgIChiYXNlIDE2KQkJTUlDUk9CVVMgREVTSUdOUyBMVEQuCi0JCQkJVFJFQURBV0FZIEhJTEwKLQkJCQlMT1VEV0FURVIgSElHSCBXWUNPTUJFIEJVQ0tTIEhQMTAgOVFMCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC03QSAgIChoZXgpCQlBSVRFQ0ggU1lTVEVNUyBMVEQuCi0wMDgwN0EgICAgIChiYXNlIDE2KQkJQUlURUNIIFNZU1RFTVMgTFRELgotCQkJCTMwODAgT0xDT1RUIFNUUkVFVAotCQkJCVNVSVRFIDEwNUEKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtN0IgICAoaGV4KQkJQVJURUwgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwODA3QiAgICAgKGJhc2UgMTYpCQlBUlRFTCBDT01NVU5JQ0FUSU9OUyBDT1JQLgotCQkJCTIyIEtBTkUgSU5EVVNUUklBTCBEUklWRQotCQkJCUhVRFNPTiBNQSAwMTc0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtN0MgICAoaGV4KQkJRklCRVJDT00sIElOQy4KLTAwODA3QyAgICAgKGJhc2UgMTYpCQlGSUJFUkNPTSwgSU5DLgotCQkJCTMzNTMgT1JBTkdFIEFWRU5VRSBORQotCQkJCVJPQU5PS0UgVkEgMjQwMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTdEICAgKGhleCkJCUVRVUlOT1ggU1lTVEVNUyBJTkMuCi0wMDgwN0QgICAgIChiYXNlIDE2KQkJRVFVSU5PWCBTWVNURU1TIElOQy4KLQkJCQkxNDI2MCBTVyAxMTlUSCBBVkVOVUUKLQkJCQlNSUFNSSBGTCAzMzE4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtN0UgICAoaGV4KQkJU09VVEhFUk4gUEFDSUZJQyBMVEQuCi0wMDgwN0UgICAgIChiYXNlIDE2KQkJU09VVEhFUk4gUEFDSUZJQyBMVEQuCi0JCQkJU0FOV0EgQkxERy4sIDItMTYtMjAKLQkJCQlNSU5BTUlTQUlXQUkgTklTSEkgWU9LT0hBTUEKLQkJCQlKQVBBTiBKQVBBTiAyMjAKLQkJCQlKQVBBTgotCi0wMC04MC03RiAgIChoZXgpCQlEWS00IElOQ09SUE9SQVRFRAotMDA4MDdGICAgICAoYmFzZSAxNikJCURZLTQgSU5DT1JQT1JBVEVECi0JCQkJMzMzIFBBTExBRElVTSBEUklWRSwgTVMgMzEyCi0JCQkJS0FOQVRBLCBPTlRBUklPLCBLMlYgMUE2Ci0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTgwLTgwICAgKGhleCkJCURBVEFNRURJQSBDT1JQT1JBVElPTgotMDA4MDgwICAgICAoYmFzZSAxNikJCURBVEFNRURJQSBDT1JQT1JBVElPTgotCQkJCTc0MDEgQ0VOVFJBTCBISUdIV0FZCi0JCQkJUEVOTlNBVUtFTiBOSiAwODEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtODEgICAoaGV4KQkJS0VOREFMTCBTUVVBUkUgUkVTRUFSQ0ggQ09SUC4KLTAwODA4MSAgICAgKGJhc2UgMTYpCQlLRU5EQUxMIFNRVUFSRSBSRVNFQVJDSCBDT1JQLgotCQkJCTE3MCBUUkFDRVIgTEFORQotCQkJCVdBTFRIQU0gTUEgMDIxNTQtMTM3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtODIgICAoaGV4KQkJUEVQIE1PRFVMQVIgQ09NUFVURVJTIEdNQkgKLTAwODA4MiAgICAgKGJhc2UgMTYpCQlQRVAgTU9EVUxBUiBDT01QVVRFUlMgR01CSAotCQkJCUFQRkVMU1RSQU5HRVIgU1RSLiAxNgotCQkJCUQgLSA4OTUwIEtBVUZCRVVSRU4KLQkJCQlXRVNUIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLTgzICAgKGhleCkJCUFNREFITAotMDA4MDgzICAgICAoYmFzZSAxNikJCUFNREFITAotCQkJCTEyNTAgRUFTVCBBUlFVRVMgQVZFTlVFCi0JCQkJTS9TIDI4NiBQLk8uIEJPWCAzNDcwCi0JCQkJU1VOTllWQUxFIENBIDk0MDg4LTM0NzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTg0ICAgKGhleCkJCVRIRSBDTE9VRCBJTkMuCi0wMDgwODQgICAgIChiYXNlIDE2KQkJVEhFIENMT1VEIElOQy4KLQkJCQlDTE9VRCBCTERHLgotCQkJCTcxLTEsIENIRU9ORy1EQU0gRE9ORyBLQU5HLU5BTSBLVSwgU0VPVUwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC04MC04NSAgIChoZXgpCQlILVRIUkVFIFNZU1RFTVMgQ09SUE9SQVRJT04KLTAwODA4NSAgICAgKGJhc2UgMTYpCQlILVRIUkVFIFNZU1RFTVMgQ09SUE9SQVRJT04KLQkJCQkxMDAgUEFSSyBEUklWRSwgU1VJVEUgMjA0Ci0JCQkJUkVTRUFSQ0ggVFJJQU5HTEUgUEFSSwotCQkJCU5DIDI3NzA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC04NiAgIChoZXgpCQlDT01QVVRFUiBHRU5FUkFUSU9OIElOQy4KLTAwODA4NiAgICAgKGJhc2UgMTYpCQlDT01QVVRFUiBHRU5FUkFUSU9OIElOQy4KLQkJCQkzODU1IFBSRVNJREVOVElBTCBQQVJLV0FZCi0JCQkJQVRMQU5UQSBHQSAzMDM0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtODcgICAoaGV4KQkJT0tJIEVMRUNUUklDIElORFVTVFJZIENPLiwgTFRECi0wMDgwODcgICAgIChiYXNlIDE2KQkJT0tJIEVMRUNUUklDIElORFVTVFJZIENPLiwgTFRECi0JCQkJMTAtMyBTSElCQVVSQSA0LUNIT01FCi0JCQkJTUlOQVRPLUtVLCBUT0tZTyAxMDgKLQkJCQlKQVBBTgotCi0wMC04MC04OCAgIChoZXgpCQlWSUNUT1IgQ09NUEFOWSBPRiBKQVBBTiwgTFRELgotMDA4MDg4ICAgICAoYmFzZSAxNikJCVZJQ1RPUiBDT01QQU5ZIE9GIEpBUEFOLCBMVEQuCi0JCQkJNTgtNyBTSElOTUVJLUNITywgWU9LT1NVS0EKLQkJCQlLQU5BR0FXQSAgIDIzOQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtODkgICAoaGV4KQkJVEVDTkVUSUNTIChQVFkpIExURC4KLTAwODA4OSAgICAgKGJhc2UgMTYpCQlURUNORVRJQ1MgKFBUWSkgTFRELgotCQkJCVAuTy4gQk9YL1BPU0JVUyA1NjQxMgotCQkJCVBJTkVHT1dSSUUsIDIxMjMKLQkJCQlTT1VUSCBBRlJJQ0EKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtODAtOEEgICAoaGV4KQkJU1VNTUlUIE1JQ1JPU1lTVEVNUyBDT1JQLgotMDA4MDhBICAgICAoYmFzZSAxNikJCVNVTU1JVCBNSUNST1NZU1RFTVMgQ09SUC4KLQkJCQk3MTAgTEFLRVdBWS1TVEUuIzE1MAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLThCICAgKGhleCkJCURBQ09MTCBMSU1JVEVECi0wMDgwOEIgICAgIChiYXNlIDE2KQkJREFDT0xMIExJTUlURUQKLQkJCQlEQUNPTEwgSE9VU0UsIEdBUkRORVJTIExBTkUKLQkJCQlCQVRIR0FURSBXRVNUIExPVEhJQU4KLQkJCQlTQ09UTEFORCBFSDQ4IDFUUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLThDICAgKGhleCkJCU5ldFNjb3V0IFN5c3RlbXMsIEluYy4KLTAwODA4QyAgICAgKGJhc2UgMTYpCQlOZXRTY291dCBTeXN0ZW1zLCBJbmMuCi0JCQkJMTUwMSBNQUlOIFNUUkVFVAotCQkJCVNVSVRFICM0MAotCQkJCVRFV0tTQlVSWSBNQSAwMTg3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtOEQgICAoaGV4KQkJV0VTVENPQVNUIFRFQ0hOT0xPR1kgQi5WLgotMDA4MDhEICAgICAoYmFzZSAxNikJCVdFU1RDT0FTVCBURUNITk9MT0dZIEIuVi4KLQkJCQlQLk8uIEJPWCAzMzE3Ci0JCQkJMjYwMSBESCBERUxGVAotCQkJCU5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtODAtOEUgICAoaGV4KQkJUkFEU1RPTkUgVEVDSE5PTE9HWQotMDA4MDhFICAgICAoYmFzZSAxNikJCVJBRFNUT05FIFRFQ0hOT0xPR1kKLQkJCQlXQVRFUiBMQU5FLCBUT1dDRVNURVIKLQkJCQlOT1JUSEFOVFMgTk4xMiA3Sk4KLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtOEYgICAoaGV4KQkJQy4gSVRPSCBFTEVDVFJPTklDUywgSU5DLgotMDA4MDhGICAgICAoYmFzZSAxNikJCUMuIElUT0ggRUxFQ1RST05JQ1MsIElOQy4KLQkJCQkyNTA1IE1DQ0FCRSBXQVkKLQkJCQlJUlZJTkUgQ0EgOTI3MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTkwICAgKGhleCkJCU1JQ1JPVEVLIElOVEVSTkFUSU9OQUwsIElOQy4KLTAwODA5MCAgICAgKGJhc2UgMTYpCQlNSUNST1RFSyBJTlRFUk5BVElPTkFMLCBJTkMuCi0JCQkJMzMwMCBOVyAyMTFUSCBURVJSQUNFCi0JCQkJSElMTFNCT1IgT1IgOTcxMjQtNzEzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtOTEgICAoaGV4KQkJVE9LWU8gRUxFQ1RSSUMgQ08uLExURAotMDA4MDkxICAgICAoYmFzZSAxNikJCVRPS1lPIEVMRUNUUklDIENPLixMVEQKLQkJCQkxMC0xNCBVQ0hJS0FOREEKLQkJCQkxLUNIT01FIENISVlPREEtS1UKLQkJCQlUT0tZTyBKQVBBTiAxMDEKLQkJCQlKQVBBTgotCi0wMC04MC05MiAgIChoZXgpCQlTaWxleCBUZWNobm9sb2d5LCBJbmMuCi0wMDgwOTIgICAgIChiYXNlIDE2KQkJU2lsZXggVGVjaG5vbG9neSwgSW5jLgotCQkJCTItMy0xIEhpa2FyaWRhaSwKLQkJCQlTZWlrYS1jaG8KLQkJCQlLeW90byAgNjE5LTAyMzcKLQkJCQlKQVBBTgotCi0wMC04MC05MyAgIChoZXgpCQlYWVJPTiBDT1JQT1JBVElPTgotMDA4MDkzICAgICAoYmFzZSAxNikJCVhZUk9OIENPUlBPUkFUSU9OCi0JCQkJNzg2NCBMSUxZIENPVVJUCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC05NCAgIChoZXgpCQlBTEZBIExBVkFMIEFVVE9NQVRJT04gQUIKLTAwODA5NCAgICAgKGJhc2UgMTYpCQlBTEZBIExBVkFMIEFVVE9NQVRJT04gQUIKLQkJCQlBRE4KLQkJCQlTLTIwNSAyMiBNQUxNTwotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC04MC05NSAgIChoZXgpCQlCQVNJQyBNRVJUT04gSEFOREVMU0dFUy5NLkIuSC4KLTAwODA5NSAgICAgKGJhc2UgMTYpCQlCQVNJQyBNRVJUT04gSEFOREVMU0dFUy5NLkIuSC4KLQkJCQlEVVJDSExBU1MtU1RSQVNTRSA0MgotCQkJCUEgLSA5MDIwIEtMQUdFTkZVUlQKLQkJCQlBVVNUUklBCi0JCQkJQVVTVFJJQQotCi0wMC04MC05NiAgIChoZXgpCQlIVU1BTiBERVNJR05FRCBTWVNURU1TLCBJTkMuCi0wMDgwOTYgICAgIChiYXNlIDE2KQkJSFVNQU4gREVTSUdORUQgU1lTVEVNUywgSU5DLgotCQkJCTQyMSBGRUhFTEVZIERSSVZFCi0JCQkJS0lORyBPRiBQUlVTU0lBIFBBIDE5NDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC05NyAgIChoZXgpCQlDRU5UUkFMUCBBVVRPTUFUSVNNRVMKLTAwODA5NyAgICAgKGJhc2UgMTYpCQlDRU5UUkFMUCBBVVRPTUFUSVNNRVMKLQkJCQkyMSwgUlVFIE1BUkNFTCBQQUdOT0wgNjk2OTQKLQkJCQlWRU5JU1NJRVVYIENFREVYCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTgwLTk4ICAgKGhleCkJCVRESyBDT1JQT1JBVElPTgotMDA4MDk4ICAgICAoYmFzZSAxNikJCVRESyBDT1JQT1JBVElPTgotCQkJCUNPUlAuIFImRCBERVBULiBURUNILiBIRFFURVJTLgotCQkJCTItMTUtNywgSElHQVNISS1PV0FEQSwgSUNISUtBV0EtU0hJCi0JCQkJQ0hJQkEtS0VOIDI3MiwgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC05OSAgIChoZXgpCQlLTE9DS05FUiBNT0VMTEVSIElQQwotMDA4MDk5ICAgICAoYmFzZSAxNikJCUtMT0NLTkVSIE1PRUxMRVIgSVBDCi0JCQkJRlJJVFotS09UWi1TVFIuIDgKLQkJCQlQLk8uIEJPWCAxMyA4MCBELTUyNzYgV0lFSEwgMS1CT01JRwotCQkJCVdFU1QgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtODAtOUEgICAoaGV4KQkJTk9WVVMgTkVUV09SS1MgTFRECi0wMDgwOUEgICAgIChiYXNlIDE2KQkJTk9WVVMgTkVUV09SS1MgTFRECi0JCQkJSk9ITiBTQ09UVCBIT1VTRQotCQkJCU1BUktFVCBTVFJFRVQgQlJBQ0tORUxMLCBCRVJLVyAgUkcxMiAxSkIKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtOUIgICAoaGV4KQkJSlVTVFNZU1RFTSBDT1JQT1JBVElPTgotMDA4MDlCICAgICAoYmFzZSAxNikJCUpVU1RTWVNURU0gQ09SUE9SQVRJT04KLQkJCQkzLTQ2IE9LSU5PSEFNQUhJR0FTSEkKLQkJCQlUT0tVU0lNQVNISSA3NzAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTlDICAgKGhleCkJCUxVWENPTSwgSU5DLgotMDA4MDlDICAgICAoYmFzZSAxNikJCUxVWENPTSwgSU5DLgotCQkJCTMyNDkgTEFVUkVMVklFVyBDT1VSVAotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTlEICAgKGhleCkJCUNvbW1zY3JhZnQgTHRkLgotMDA4MDlEICAgICAoYmFzZSAxNikJCUNvbW1zY3JhZnQgTHRkLgotCQkJCVBPIEJPWCAxNjAKLQkJCQlCRU5UTEVZLCBXLkEuIDYxMDIKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtODAtOUUgICAoaGV4KQkJREFUVVMgR01CSAotMDA4MDlFICAgICAoYmFzZSAxNikJCURBVFVTIEdNQkgKLQkJCQlJTkRVU1RSSUVTVFIuIDIKLQkJCQlELTUxMDIgV1VSU0VMRU4vQUFDSEVOCi0JCQkJV0VTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC04MC05RiAgIChoZXgpCQlBTENBVEVMIEJVU0lORVNTIFNZU1RFTVMKLTAwODA5RiAgICAgKGJhc2UgMTYpCQlBTENBVEVMIEJVU0lORVNTIFNZU1RFTVMKLQkJCQk1NCwgQVZFTlVFIEpFQU4gSkFVUkVTCi0JCQkJOTI3MDcgQ09MT01CRVMgQ0VERVgKLQkJCQlGUkFOQ0UKLQotMDAtODAtQTAgICAoaGV4KQkJRURJU0EgSEVXTEVUVCBQQUNLQVJEIFMvQQotMDA4MEEwICAgICAoYmFzZSAxNikJCUVESVNBIEhFV0xFVFQgUEFDS0FSRCBTL0EKLQkJCQlBTEFNRURBIFJJTyBORUdSTywKLQkJCQk3NTAtQUxQSEFWSUxMRSAwNjQ1NC0wMDAgIEJBUlVFUkkgU1AKLQkJCQlCUkFaSUwKLQkJCQlCUkFaSUwKLQotMDAtODAtQTEgICAoaGV4KQkJTUlDUk9URVNULCBJTkMuCi0wMDgwQTEgICAgIChiYXNlIDE2KQkJTUlDUk9URVNULCBJTkMuCi0JCQkJNDc0NyBOLiAyMk5EIFNUUkVFVAotCQkJCVBIT0VOSVggQVogODUwMTYtNDcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQTIgICAoaGV4KQkJQ1JFQVRJVkUgRUxFQ1RST05JQyBTWVNURU1TCi0wMDgwQTIgICAgIChiYXNlIDE2KQkJQ1JFQVRJVkUgRUxFQ1RST05JQyBTWVNURU1TCi0JCQkJNzAgUk9VVEUgRFUgUE9OVCAtIEJVVElOCi0JCQkJQ0gtMTIxMyBQRVRJVC1MQU5DWSBHRU5FVkEKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTgwLUEzICAgKGhleCkJCUxhbnRyb25peAotMDA4MEEzICAgICAoYmFzZSAxNikJCUxhbnRyb25peAotCQkJCTE1MzUzIEJhcnJhbmNhIFBhcmt3YXkKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUE0ICAgKGhleCkJCUxJQkVSVFkgRUxFQ1RST05JQ1MKLTAwODBBNCAgICAgKGJhc2UgMTYpCQlMSUJFUlRZIEVMRUNUUk9OSUNTCi0JCQkJMzMyIEhBUkJPUiBXQVkKLQkJCQlTT1VUSCBTQU4gRlJBTkNJU0NPIENBIDk0MDgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BNSAgIChoZXgpCQlTUEVFRCBJTlRFUk5BVElPTkFMCi0wMDgwQTUgICAgIChiYXNlIDE2KQkJU1BFRUQgSU5URVJOQVRJT05BTAotCQkJCTEzMjAgQVJCT0xJVEEgRFIuCi0JCQkJTEEgSEFCUkEgQ0EgOTA2MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUE2ICAgKGhleCkJCVJFUFVCTElDIFRFQ0hOT0xPR1ksIElOQy4KLTAwODBBNiAgICAgKGJhc2UgMTYpCQlSRVBVQkxJQyBURUNITk9MT0dZLCBJTkMuCi0JCQkJUC5PLiBCT1ggMTQxMDA2Ci0JCQkJQVVTVElOIFRYIDc4NzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BNyAgIChoZXgpCQlIb25leXdlbGwgSW50ZXJuYXRpb25hbCBJbmMKLTAwODBBNyAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgSW50ZXJuYXRpb25hbCBJbmMKLQkJCQlWYW5jb3V2ZXIgQ2VudGVyIG9mIEV4Y2VsbGVuY2UgCi0JCQkJNTAwIEJyb29rc2JhbmsgQXZlbnVlIAotCQkJCU5vcnRoIFZhbmNvdXZlciAgVjdKIDNTNCAKLQkJCQlDQU5BREEKLQotMDAtODAtQTggICAoaGV4KQkJVklUQUNPTSBDT1JQT1JBVElPTgotMDA4MEE4ICAgICAoYmFzZSAxNikJCVZJVEFDT00gQ09SUE9SQVRJT04KLQkJCQkxMzMwIENIQVJMRVNUT04gUk9BRAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUE5ICAgKGhleCkJCUNMRUFSUE9JTlQgUkVTRUFSQ0gKLTAwODBBOSAgICAgKGJhc2UgMTYpCQlDTEVBUlBPSU5UIFJFU0VBUkNICi0JCQkJMTkwIE5PUlRIIE1BSU4gU1RSRUVUCi0JCQkJTkFUSUNLIE1BCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BQSAgIChoZXgpCQlNQVhQRUVECi0wMDgwQUEgICAgIChiYXNlIDE2KQkJTUFYUEVFRAotCQkJCTExMjAgQ0hFU1MgRFJJVkUKLQkJCQlGT1NURVIgQ0lUWSBDQSA5NDQwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQUIgICAoaGV4KQkJRFVLQU5FIE5FVFdPUksgSU5URUdSQVRJT04KLTAwODBBQiAgICAgKGJhc2UgMTYpCQlEVUtBTkUgTkVUV09SSyBJTlRFR1JBVElPTgotCQkJCTI5MDAgRFVLQU5FIERSSVZFCi0JCQkJU1QuIENIQVJMRVMgSUwgNjAxNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUFDICAgKGhleCkJCUlNTE9HSVgsIERJVklTSU9OIE9GIEdFTkVTWVMKLTAwODBBQyAgICAgKGJhc2UgMTYpCQlJTUxPR0lYLCBESVZJU0lPTiBPRiBHRU5FU1lTCi0JCQkJMTkwMCBTVU1NSVQgVE9XRVIgQkxWRC5TVEUjNzcwCi0JCQkJT1JMQU5ETyBGTCAzMjgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQUQgICAoaGV4KQkJQ05FVCBURUNITk9MT0dZLCBJTkMuCi0wMDgwQUQgICAgIChiYXNlIDE2KQkJQ05FVCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMjE5OSBaQU5LRVIgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BRSAgIChoZXgpCQlIVUdIRVMgTkVUV09SSyBTWVNURU1TCi0wMDgwQUUgICAgIChiYXNlIDE2KQkJSFVHSEVTIE5FVFdPUksgU1lTVEVNUwotCQkJCTExNzE3IEVYUExPUkFUSU9OIExBTkUKLQkJCQlHRVJNQU5UT1dOIE1EIDIwODc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BRiAgIChoZXgpCQlBTExVTUVSIENPLiwgTFRELgotMDA4MEFGICAgICAoYmFzZSAxNikJCUFMTFVNRVIgQ08uLCBMVEQuCi0JCQkJMi04LTggQ0hVTy1DSE8sIE1FR1VSTy1LVQotCQkJCVRPS1lPIDE1MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtQjAgICAoaGV4KQkJQURWQU5DRUQgSU5GT1JNQVRJT04KLTAwODBCMCAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBJTkZPUk1BVElPTgotCQkJCVRFQ0hOT0xPR1ksIElOQy4KLQkJCQk1RiAxLTItNiBOSUhPTkJBU0hJLUhPTkNITyBDSFVPLUtVLCAgVE9LCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1CMSAgIChoZXgpCQlTT0ZUQ09NIEEvUwotMDA4MEIxICAgICAoYmFzZSAxNikJCVNPRlRDT00gQS9TCi0JCQkJU1RVRElFU1RSQUVERSAyMQotCQkJCURLIDE0NTUgQ09QRU5OSEFHRU4gSy4KLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC04MC1CMiAgIChoZXgpCQlORVRXT1JLIEVRVUlQTUVOVCBURUNITk9MT0dJRVMKLTAwODBCMiAgICAgKGJhc2UgMTYpCQlORVRXT1JLIEVRVUlQTUVOVCBURUNITk9MT0dJRVMKLQkJCQk2OTAwIFBBU0VPIFBBRFJFIFBBUktXQVkKLQkJCQlGUkVNT05UIENBIDk0NTU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1CMyAgIChoZXgpCQlBVkFMIERBVEEgQ09SUE9SQVRJT04KLTAwODBCMyAgICAgKGJhc2UgMTYpCQlBVkFMIERBVEEgQ09SUE9SQVRJT04KLQkJCQlNQUNISURBIEVOR0lORUVSSU5HIENFTlRFUgotCQkJCTE3NTctMSBLQU5BSS1DSE8gTUFDSElEQSBDSVRZIFRPS1lPIEpBUEEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUI0ICAgKGhleCkJCVNPUEhJQSBTWVNURU1TCi0wMDgwQjQgICAgIChiYXNlIDE2KQkJU09QSElBIFNZU1RFTVMKLQkJCQkzMzM3IEtJRkVSIFJPQUQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQjUgICAoaGV4KQkJVU5JVEVEIE5FVFdPUktTIElOQy4KLTAwODBCNSAgICAgKGJhc2UgMTYpCQlVTklURUQgTkVUV09SS1MgSU5DLgotCQkJCTIxNzggUEFSQUdPTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1CNiAgIChoZXgpCQlUSEVNSVMgQ09NUFVURVIKLTAwODBCNiAgICAgKGJhc2UgMTYpCQlUSEVNSVMgQ09NUFVURVIKLQkJCQk2NjgxIE9XRU5TIERSSVZFCi0JCQkJUExFQVNPTlRPTiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQjcgICAoaGV4KQkJU1RFTExBUiBDT01QVVRFUgotMDA4MEI3ICAgICAoYmFzZSAxNikJCVNURUxMQVIgQ09NUFVURVIKLQkJCQk5NSBXRUxMUyBBVkVOVUUKLQkJCQlORVdUT04gTUEgMDIxNTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUI4ICAgKGhleCkJCUJVRywgSU5DT1JQT1JBVEVECi0wMDgwQjggICAgIChiYXNlIDE2KQkJQlVHLCBJTkNPUlBPUkFURUQKLQkJCQkxLTE0IFRFQ0hOTy1QQVJLICAxLUNIT01FCi0JCQkJU0hJTU9OT1BQT1JPLCBBVFNVQkVUU1UtS1UgU0FQUE9STyAwMDQsCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1COSAgIChoZXgpCQlBUkNIRSBURUNITk9MSUdJRVMgSU5DLgotMDA4MEI5ICAgICAoYmFzZSAxNikJCUFSQ0hFIFRFQ0hOT0xJR0lFUyBJTkMuCi0JCQkJNDg1MDIgS0FUTyBST0FECi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMgTUlOT1IgT1VUTFlJTkcgSVNMQU4KLQotMDAtODAtQkEgICAoaGV4KQkJU1BFQ0lBTElYIChBU0lBKSBQVEUsIExURAotMDA4MEJBICAgICAoYmFzZSAxNikJCVNQRUNJQUxJWCAoQVNJQSkgUFRFLCBMVEQKLQkJCQkzIFdJTlRFUlNFTExTIFJPQUQKLQkJCQlCWUZMRUVUIFNVUlJFWSAgS1QxNDdMRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtQkIgICAoaGV4KQkJSFVHSEVTIExBTiBTWVNURU1TCi0wMDgwQkIgICAgIChiYXNlIDE2KQkJSFVHSEVTIExBTiBTWVNURU1TCi0JCQkJMTIyNSBDSEFSTEVTVE9OIFJPQUQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1CQyAgIChoZXgpCQlISVRBQ0hJIEVOR0lORUVSSU5HIENPLiwgTFRECi0wMDgwQkMgICAgIChiYXNlIDE2KQkJSElUQUNISSBFTkdJTkVFUklORyBDTy4sIExURAotCQkJCTQtOC0yNiwgT01JS0FDSE8KLQkJCQlISVRBQ0hJIENJVFkgSUJBUkFLSSBQUkVGRUNUVVJFIDMxOS0xMgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtQkQgICAoaGV4KQkJVEhFIEZVUlVLQVdBIEVMRUNUUklDIENPLiwgTFRECi0wMDgwQkQgICAgIChiYXNlIDE2KQkJVEhFIEZVUlVLQVdBIEVMRUNUUklDIENPLiwgTFRECi0JCQkJNi0xLCBNQVJVTk9VQ0hJIDItQ0hPTUUKLQkJCQlDSElZT0RBLUtVLCBUT0tZTwotCQkJCTEwMCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUJFICAgKGhleCkJCUFSSUVTIFJFU0VBUkNICi0wMDgwQkUgICAgIChiYXNlIDE2KQkJQVJJRVMgUkVTRUFSQ0gKLQkJCQk0Njc5MSBGUkVNT05EIEJMVkQuCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQkYgICAoaGV4KQkJVEFLQU9LQSBFTEVDVFJJQyBNRkcuIENPLiBMVEQuCi0wMDgwQkYgICAgIChiYXNlIDE2KQkJVEFLQU9LQSBFTEVDVFJJQyBNRkcuIENPLiBMVEQuCi0JCQkJS0FOREEgQlJBTkNIIE9GRklDRSBUT05FTgotCQkJCTItMS0xMSwgU0FSVUdBS1UtQ0hPIENISVlPREEtS1UsIFRPS1lPLAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtQzAgICAoaGV4KQkJUEVOUklMIERBVEFDT01NCi0wMDgwQzAgICAgIChiYXNlIDE2KQkJUEVOUklMIERBVEFDT01NCi0JCQkJMTMwMCBRVUlOQ0UgT1JDSEFSRCBCTFZELgotCQkJCUdBSVRIRVJTQlVSRyBNRCAyMDg3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQzEgICAoaGV4KQkJTEFORVggQ09SUE9SQVRJT04KLTAwODBDMSAgICAgKGJhc2UgMTYpCQlMQU5FWCBDT1JQT1JBVElPTgotCQkJCTEwNzI3IFRVQ0tFUiBTVFJFRVQKLQkJCQlCRUxUU1ZJTExFIE1EIDIwNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DMiAgIChoZXgpCQlJRUVFIDgwMi4xIENPTU1JVFRFRQotMDA4MEMyICAgICAoYmFzZSAxNikJCUlFRUUgODAyLjEgQ09NTUlUVEVFCi0JCQkJODAyLjEgQ2hhaXIsIGMvbyBJRUVFIFN0YW5kYXJkcyBBc3NvY2lhdGlvbgotCQkJCTQ0NSBIb2VzIExhbmUKLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DMyAgIChoZXgpCQlCSUNDIElORk9STUFUSU9OIFNZU1RFTVMgJiBTVkMKLTAwODBDMyAgICAgKGJhc2UgMTYpCQlCSUNDIElORk9STUFUSU9OIFNZU1RFTVMgJiBTVkMKLQkJCQk1MDAgQ0FQQUJJTElUWSBHUkVFTiwgTFVUT04KLQkJCQlCRURGT1JEU0hJUkUKLQkJCQlFTkdMQU5EIExVMSAzTFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC1DNCAgIChoZXgpCQlET0NVTUVOVCBURUNITk9MT0dJRVMsIElOQy4KLTAwODBDNCAgICAgKGJhc2UgMTYpCQlET0NVTUVOVCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMzAwIENIQVJMRVNUT04gUk9BRAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUM1ICAgKGhleCkJCU5PVkVMTENPIERFIE1FWElDTwotMDA4MEM1ICAgICAoYmFzZSAxNikJCU5PVkVMTENPIERFIE1FWElDTwotCQkJCUNPTlNUSVRVWUVOVEVTIE5PLiA5MDcKLQkJCQlDT0wuIExPTUFTIEFMVEFTCi0JCQkJMTE5NTAgTUVYSUNPIDExOTUwIE1FWElDTyBELkYuCi0JCQkJTUVYSUNPCi0KLTAwLTgwLUM2ICAgKGhleCkJCU5BVElPTkFMIERBVEFDT01NIENPUlBPUkFUSU9OCi0wMDgwQzYgICAgIChiYXNlIDE2KQkJTkFUSU9OQUwgREFUQUNPTU0gQ09SUE9SQVRJT04KLQkJCQkyRiwgMjgsIElORFVTVFJZIEVBU1QgOVRIIFJELgotCQkJCVNDSUVOQ0UgUEFSSywgSFNJTi1DSFUKLQkJCQlUQUlXQU4gIDMwMDc3IFRBSVdBTiAgMzAwNzcgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC04MC1DNyAgIChoZXgpCQlYSVJDT00KLTAwODBDNyAgICAgKGJhc2UgMTYpCQlYSVJDT00KLQkJCQkyNjAyNSBNVVJFQVUgUk9BRAotCQkJCUNBTEFCQVNBUyBDQSA5MTMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQzggICAoaGV4KQkJRC1MSU5LIFNZU1RFTVMsIElOQy4KLTAwODBDOCAgICAgKGJhc2UgMTYpCQlELUxJTksgU1lTVEVNUywgSU5DLgotCQkJCTUzIERpc2NvdmVyIERyLgotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQzkgICAoaGV4KQkJQUxCRVJUQSBNSUNST0VMRUNUUk9OSUMgQ0VOVFJFCi0wMDgwQzkgICAgIChiYXNlIDE2KQkJQUxCRVJUQSBNSUNST0VMRUNUUk9OSUMgQ0VOVFJFCi0JCQkJMzE4LCAxMTMxNSAtIDg3IEFWRU5VRQotCQkJCUVETU9OVE9OLCBBQiBUNkcgMkMyCi0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTgwLUNBICAgKGhleCkJCU5FVENPTSBSRVNFQVJDSCBJTkNPUlBPUkFURUQKLTAwODBDQSAgICAgKGJhc2UgMTYpCQlORVRDT00gUkVTRUFSQ0ggSU5DT1JQT1JBVEVECi0JCQkJMjAxIFRFQ0hOT0xPR1kgRFJJVkUKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUNCICAgKGhleCkJCUZBTENPIERBVEEgUFJPRFVDVFMKLTAwODBDQiAgICAgKGJhc2UgMTYpCQlGQUxDTyBEQVRBIFBST0RVQ1RTCi0JCQkJNDQwIFBPVFJFUk8gQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2LTQxOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUNDICAgKGhleCkJCU1JQ1JPV0FWRSBCWVBBU1MgU1lTVEVNUwotMDA4MENDICAgICAoYmFzZSAxNikJCU1JQ1JPV0FWRSBCWVBBU1MgU1lTVEVNUwotCQkJCTI1IEJSQUlOVFJFRSBISUxMIE9GRklDRSBQQVJLCi0JCQkJQlJBSU5UUkVFIE1BIDAyMTg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DRCAgIChoZXgpCQlNSUNST05JQ1MgQ09NUFVURVIsIElOQy4KLTAwODBDRCAgICAgKGJhc2UgMTYpCQlNSUNST05JQ1MgQ09NUFVURVIsIElOQy4KLQkJCQk0NTM2NSBOT1JUSFBPUlQgTE9PUCBXRVNUCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQ0UgICAoaGV4KQkJQlJPQURDQVNUIFRFTEVWSVNJT04gU1lTVEVNUwotMDA4MENFICAgICAoYmFzZSAxNikJCUJST0FEQ0FTVCBURUxFVklTSU9OIFNZU1RFTVMKLQkJCQlQLk8uIEJPWCAzMDgxNgotCQkJCVNBTFQgTEFLRSBDSVRZLCBVVEFICi0JCQkJVXRhaCA4NDEzMC0wODE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DRiAgIChoZXgpCQlFTUJFRERFRCBQRVJGT1JNQU5DRSBJTkMuCi0wMDgwQ0YgICAgIChiYXNlIDE2KQkJRU1CRURERUQgUEVSRk9STUFOQ0UgSU5DLgotCQkJCTMzODUgU0NPVFQgQkxWRC4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NC0zMTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1EMCAgIChoZXgpCQlDT01QVVRFUiBQRVJJUEhFUkFMUywgSU5DLgotMDA4MEQwICAgICAoYmFzZSAxNikJCUNPTVBVVEVSIFBFUklQSEVSQUxTLCBJTkMuCi0JCQkJNjY3IFJBTkNITyBDT05FSk8gQkxWRC4KLQkJCQlORVdCVVJZIFBBUksgQ0EgOTEzMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUQxICAgKGhleCkJCUtJTVRST04gQ09SUE9SQVRJT04KLTAwODBEMSAgICAgKGJhc2UgMTYpCQlLSU1UUk9OIENPUlBPUkFUSU9OCi0JCQkJMTcwOSBKVU5DVElPTiBDT1VSVAotCQkJCUJVSUxESU5HIDM4MAotCQkJCVNBTiBKT1NFIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1EMiAgIChoZXgpCQlTSElOTklIT05ERU5LTyBDTy4sIExURC4KLTAwODBEMiAgICAgKGJhc2UgMTYpCQlTSElOTklIT05ERU5LTyBDTy4sIExURC4KLQkJCQk2LTggTklTSElURU5NQSAyIENIT01FCi0JCQkJS0lUQS1LVSwgT1NBS0EgNTMwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1EMyAgIChoZXgpCQlTSElWQSBDT1JQLgotMDA4MEQzICAgICAoYmFzZSAxNikJCVNISVZBIENPUlAuCi0JCQkJMjA1IEJVUkxJTkdUT04gUk9BRAotCQkJCUJFREZPUkQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUQ0ICAgKGhleCkJCUNIQVNFIFJFU0VBUkNIIExURC4KLTAwODBENCAgICAgKGJhc2UgMTYpCQlDSEFTRSBSRVNFQVJDSCBMVEQuCi0JCQkJNyBDSElORUhBTSBCVVNJTkVTUyBQQVJLCi0JCQkJQkFTSU5HU1RPS0UsIFJHIDI0IE9XRAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC1ENSAgIChoZXgpCQlDQURSRSBURUNITk9MT0dJRVMKLTAwODBENSAgICAgKGJhc2UgMTYpCQlDQURSRSBURUNITk9MT0dJRVMKLQkJCQkxOTU0NSBOVyBWT04gTkVVTUFOTiBEUklWRQotCQkJCUJFQVZFUlRPTiBPUiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRDYgICAoaGV4KQkJTlVWT1RFQ0gsIElOQy4KLTAwODBENiAgICAgKGJhc2UgMTYpCQlOVVZPVEVDSCwgSU5DLgotCQkJCTIwMTUgQlJJREdFV0FZLCBTVUlURSAyMDQKLQkJCQlTQVVTQUxJVE8gQ0EgOTQ5NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUQ3ICAgKGhleCkJCUZhbnR1bSBFbmdpbmVlcmluZwotMDA4MEQ3ICAgICAoYmFzZSAxNikJCUZhbnR1bSBFbmdpbmVlcmluZwotCQkJCQotCQkJCVAuTy4gQm94IDE1MDkKLQkJCQlSb2Nrd2FsbCBUWCA3NTA4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRDggICAoaGV4KQkJTkVUV09SSyBQRVJJUEhFUkFMUyBJTkMuCi0wMDgwRDggICAgIChiYXNlIDE2KQkJTkVUV09SSyBQRVJJUEhFUkFMUyBJTkMuCi0JCQkJMjg5MCBaT05LRVIgUk9BRCBTVUlURSAyMDkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRDkgICAoaGV4KQkJRU1LIEVsZWt0cm9uaWsgR21iSCAmIENvLiBLRwotMDA4MEQ5ICAgICAoYmFzZSAxNikJCUVNSyBFbGVrdHJvbmlrIEdtYkggJiBDby4gS0cKLQkJCQlPYmVyZSBCZXJnc3RyYXNzZSAxNgotCQkJCTc1MzM1IERvYmVsIAotCQkJCUdFUk1BTlkKLQotMDAtODAtREEgICAoaGV4KQkJQlJVRUwgJiBLSkFFUgotMDA4MERBICAgICAoYmFzZSAxNikJCUJSVUVMICYgS0pBRVIKLQkJCQkxOCwgTkFFUlVNIEhPVkVER0FERQotCQkJCURLLTI4NTAgTkFFUlVNCi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtODAtREIgICAoaGV4KQkJR1JBUEhPTiBDT1JQT1JBVElPTgotMDA4MERCICAgICAoYmFzZSAxNikJCUdSQVBIT04gQ09SUE9SQVRJT04KLQkJCQkxNTA2IERFTEwgQVZFIC0gIwotCQkJCUNBTVBCRUxMIENBIDk1MDA4LTY5MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLURDICAgKGhleCkJCVBJQ0tFUiBJTlRFUk5BVElPTkFMCi0wMDgwREMgICAgIChiYXNlIDE2KQkJUElDS0VSIElOVEVSTkFUSU9OQUwKLQkJCQk1OTUgTUlORVIgUk9BRAotCQkJCUNMRVZFTEFORCBPSCA0NDE0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtREQgICAoaGV4KQkJR01YIElOQy9HSU1JWAotMDA4MEREICAgICAoYmFzZSAxNikJCUdNWCBJTkMvR0lNSVgKLQkJCQkzMjIzIEFSTk9MRCBMQU5FCi0JCQkJTk9SVEhCUk9PSyBJTCA2MDA2Mi0yNDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1ERSAgIChoZXgpCQlHSVBTSSBTLkEuCi0wMDgwREUgICAgIChiYXNlIDE2KQkJR0lQU0kgUy5BLgotCQkJCTIsQkQgVkFVQkFOIC0gQi5QLiAyNjgKLQkJCQk3ODA1MyBTVC4gUVVFTlRJTiBFTiBZVkVMSU5FUyBDRURFWAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC04MC1ERiAgIChoZXgpCQlBREMgQ09ERU5PTEwgVEVDSE5PTE9HWSBDT1JQLgotMDA4MERGICAgICAoYmFzZSAxNikJCUFEQyBDT0RFTk9MTCBURUNITk9MT0dZIENPUlAuCi0JCQkJMjAwIENPUlBPUkFURSBCTFZELiBTTy4KLQkJCQlZT05LRVJTIE5ZIDEwNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1FMCAgIChoZXgpCQlYVFAgU1lTVEVNUywgSU5DLgotMDA4MEUwICAgICAoYmFzZSAxNikJCVhUUCBTWVNURU1TLCBJTkMuCi0JCQkJMTkwMCBTVEFURSBTVFJFRVQgLCBTVEUKLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1FMSAgIChoZXgpCQlTVE1JQ1JPRUxFQ1RST05JQ1MKLTAwODBFMSAgICAgKGJhc2UgMTYpCQlTVE1JQ1JPRUxFQ1RST05JQ1MKLQkJCQkxMDAwIEFaVEVDIFdFU1QKLQkJCQlBTE1PTkRTQlVSWSBCUklTVE9MIEJTMzIgNFNRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtRTIgICAoaGV4KQkJVC5ELkkuIENPLiwgTFRELgotMDA4MEUyICAgICAoYmFzZSAxNikJCVQuRC5JLiBDTy4sIExURC4KLQkJCQlERVZFTE9QTUVOVCBESVYuICAjMyBGVUpJIEJMREcKLQkJCQkxLTMtMTMgSVRBQ0hJQk9SSSBOSVNISS1LVSBPU0FLQSA1NTAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUUzICAgKGhleCkJCUNPUkFMIE5FVFdPUksgQ09SUE9SQVRJT04KLTAwODBFMyAgICAgKGJhc2UgMTYpCQlDT1JBTCBORVRXT1JLIENPUlBPUkFUSU9OCi0JCQkJKE5PVyBCQVkgTkVUV09SS1MpCi0JCQkJNDQwMSBHUkVBVCBBTUVSSUNBTiBQS1dZIE0vUzogU0MwMS0wNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyLTgxODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUU0ICAgKGhleCkJCU5PUlRIV0VTVCBESUdJVEFMIFNZU1RFTVMsIElOQwotMDA4MEU0ICAgICAoYmFzZSAxNikJCU5PUlRIV0VTVCBESUdJVEFMIFNZU1RFTVMsIElOQwotCQkJCVAuTy4gQk9YIDE1Mjg4Ci0JCQkJU0VBVFRMRSBXQSA5ODExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRTUgICAoaGV4KQkJTFNJIExvZ2ljIENvcnBvcmF0aW9uCi0wMDgwRTUgICAgIChiYXNlIDE2KQkJTFNJIExvZ2ljIENvcnBvcmF0aW9uCi0JCQkJMzcxOCBOLiBSb2NrIFJvYWQKLQkJCQlXaWNoaXRhIEtTIDY3MjI2LTEzOTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUU2ICAgKGhleCkJCVBFRVIgTkVUV09SS1MsIElOQy4KLTAwODBFNiAgICAgKGJhc2UgMTYpCQlQRUVSIE5FVFdPUktTLCBJTkMuCi0JCQkJMzM1MCBTQ09UVCBCTFZELiBCTERHLiAxNAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1FNyAgIChoZXgpCQlMWU5XT09EIFNDSUVOVElGSUMgREVWLiBMVEQuCi0wMDgwRTcgICAgIChiYXNlIDE2KQkJTFlOV09PRCBTQ0lFTlRJRklDIERFVi4gTFRELgotCQkJCUZBUk5IQU0gVFJBRElORyBFU1RBVEUKLQkJCQlGQVJOSEFNLCBTVVJSRVksIEdVOSA5Tk4KLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLUU4ICAgKGhleCkJCUNVTVVMVVMgQ09SUE9SQVRJSU9OCi0wMDgwRTggICAgIChiYXNlIDE2KQkJQ1VNVUxVUyBDT1JQT1JBVElJT04KLQkJCQkyMzUwMCBNRVJDQU5USUxFIFJPQUQKLQkJCQlDTEVWRUxBTkQgT0ggNDQxMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUU5ICAgKGhleCkJCU1hZGdlIEx0ZC4KLTAwODBFOSAgICAgKGJhc2UgMTYpCQlNYWRnZSBMdGQuCi0JCQkJTWFkZ2UgSG91c2UKLQkJCQlQcmlvcnMgV2F5Ci0JCQkJTWFpbmRlbmhlYWQgQmVya3NoaXJlIFNMNiAySFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC1FQSAgIChoZXgpCQlBRFZBIE9wdGljYWwgTmV0d29ya2luZyBMdGQuCi0wMDgwRUEgICAgIChiYXNlIDE2KQkJQURWQSBPcHRpY2FsIE5ldHdvcmtpbmcgTHRkLgotCQkJCU9uZSBUZWNobm9sb2d5IFBhcmt3YXkgU291dGgKLQkJCQlOb3Jjcm9zcyBHQSAzMDA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRUIgICAoaGV4KQkJQ09NUENPTlRST0wgQi5WLgotMDA4MEVCICAgICAoYmFzZSAxNikJCUNPTVBDT05UUk9MIEIuVi4KLQkJCQlTVFJBVFVNU0VEIEszMQotCQkJCTU2MTEgTkIgRUlOREhPVkVOCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtODAtRUMgICAoaGV4KQkJU1VQRVJDT01QVVRJTkcgU09MVVRJT05TLCBJTkMuCi0wMDgwRUMgICAgIChiYXNlIDE2KQkJU1VQRVJDT01QVVRJTkcgU09MVVRJT05TLCBJTkMuCi0JCQkJNjE3NSBOQU5DWSBSSURHRSBCTFZELgotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRUQgICAoaGV4KQkJSVEgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDgwRUQgICAgIChiYXNlIDE2KQkJSVEgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTE4MTEgTkUgRklSU1QgU1RSRUVUCi0JCQkJU1VJVEUgMjAxCi0JCQkJQkVMTEVWVUUgV0EgOTgwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUVFICAgKGhleCkJCVRIT01TT04gQ1NGCi0wMDgwRUUgICAgIChiYXNlIDE2KQkJVEhPTVNPTiBDU0YKLQkJCQk1MSBFU1BMQU5BREUgRFUgR0VORVJBTAotCQkJCURFIEdBVUxMRSA5MjA0NSAtIFBBUklTIExBICBERUZFTlNFIC0gQ0UKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtODAtRUYgICAoaGV4KQkJUkFUSU9OQUwKLTAwODBFRiAgICAgKGJhc2UgMTYpCQlSQVRJT05BTAotCQkJCTMzMjAgU0NPVFQgQk9VTEVWQVJECi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUYwICAgKGhleCkJCVBhbmFzb25pYyBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwODBGMCAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJNC0xLTYyIE1pbm9zaGltYSBIYWthdGEgRnVrdW9rYQotCQkJCTgxMi04NTMxCi0JCQkJSkFQQU4KLQotMDAtODAtRjEgICAoaGV4KQkJT1BVUyBTWVNURU1TCi0wMDgwRjEgICAgIChiYXNlIDE2KQkJT1BVUyBTWVNURU1TCi0JCQkJMzAwMCBDT1JPTkFETyBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GMiAgIChoZXgpCQlSQVlDT00gU1lTVEVNUyBJTkMKLTAwODBGMiAgICAgKGJhc2UgMTYpCQlSQVlDT00gU1lTVEVNUyBJTkMKLQkJCQkxNjUyNSBTSEVSTUFOIFdBWSAjQy04Ci0JCQkJVkFOIE5VWVMgQ0EgOTE0MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUYzICAgKGhleCkJCVNVTiBFTEVDVFJPTklDUyBDT1JQLgotMDA4MEYzICAgICAoYmFzZSAxNikJCVNVTiBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTI1MCBBU0FISSBLT0NISU5PLUNITwotCQkJCUtPTkFOLUNJVFkgQUlDSEkKLQkJCQk0ODMgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1GNCAgIChoZXgpCQlURUxFTUVDQU5JUVVFIEVMRUNUUklRVUUKLTAwODBGNCAgICAgKGJhc2UgMTYpCQlURUxFTUVDQU5JUVVFIEVMRUNUUklRVUUKLQkJCQkzMyBCSVMgQVZFTlVFLAotCQkJCURVIE1BUkVDSEFMIEpPRkZSRSA5MjAwMiBOQU5URVJSRSBDRURFWAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC04MC1GNSAgIChoZXgpCQlRdWFudGVsIEx0ZAotMDA4MEY1ICAgICAoYmFzZSAxNikJCVF1YW50ZWwgTHRkCi0JCQkJVHVybnBpa2UgUm9hZAotCQkJCU5ld2J1cnkgQmVya3NoaXJlIFJHMTQgMk5YCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtRjYgICAoaGV4KQkJU1lORVJHWSBNSUNST1NZU1RFTVMKLTAwODBGNiAgICAgKGJhc2UgMTYpCQlTWU5FUkdZIE1JQ1JPU1lTVEVNUwotCQkJCTk2MDUgU0NSQU5UT04gUk9BRC1TVEUgIzcwMAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMS0xNzczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GNyAgIChoZXgpCQlaRU5JVEggRUxFQ1RST05JQ1MKLTAwODBGNyAgICAgKGJhc2UgMTYpCQlaRU5JVEggRUxFQ1RST05JQ1MKLQkJCQkxMDAwIE1JTFdBVUtFRSBBVkVOVUUKLQkJCQlHTEVOVklFVyBJTCA2MDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRjggICAoaGV4KQkJTUlaQVIsIElOQy4KLTAwODBGOCAgICAgKGJhc2UgMTYpCQlNSVpBUiwgSU5DLgotCQkJCTE0MTkgRFVOTiBEUklWRQotCQkJCUNBUlJPTExUT04gVFggNzUwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUY5ICAgKGhleCkJCUhFVVJJS09OIENPUlBPUkFUSU9OCi0wMDgwRjkgICAgIChiYXNlIDE2KQkJSEVVUklLT04gQ09SUE9SQVRJT04KLQkJCQk4MzEwIEVYQ0VMU0lPUiBEUklWRQotCQkJCU1BRElTT04gV0kgNTM3MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUZBICAgKGhleCkJCVJXVCBHTUJICi0wMDgwRkEgICAgIChiYXNlIDE2KQkJUldUIEdNQkgKLQkJCQlUQUxBTkdFUlNUUi4gNS03Ci0JCQkJRCAtIDgwMzMgS1JBSUxMSU5HCi0JCQkJV0VTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC04MC1GQiAgIChoZXgpCQlCVk0gTElNSVRFRAotMDA4MEZCICAgICAoYmFzZSAxNikJCUJWTSBMSU1JVEVECi0JCQkJSE9CQiBMQU5FCi0JCQkJSEVER0UgRU5EIFNPVVRIQU1QVE9OCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC1GQyAgIChoZXgpCQlBVkFUQVIgQ09SUE9SQVRJT04KLTAwODBGQyAgICAgKGJhc2UgMTYpCQlBVkFUQVIgQ09SUE9SQVRJT04KLQkJCQk2NSBTT1VUSCBTVFJFRVQKLQkJCQlIT1BLSU5UT04gTUEgMDE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUZEICAgKGhleCkJCUVYU0NFRUQgQ09SUFJBVElPTgotMDA4MEZEICAgICAoYmFzZSAxNikJCUVYU0NFRUQgQ09SUFJBVElPTgotCQkJCTEtMTUtMTIsIEtJVEFLQVNFLCBTQUlXQUktS1UKLQkJCQlLQVdBU0FLSS1DSVRZLCAyMTEgS0FOQUdBV0EKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUZFICAgKGhleCkJCUFaVVJFIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA4MEZFICAgICAoYmFzZSAxNikJCUFaVVJFIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTYzIFNPVVRIIFNUUkVFVAotCQkJCUhPUEtJTlRPTiBNQSAwMTc0OC0yMjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GRiAgIChoZXgpCQlTT0MuIERFIFRFTEVJTkZPUk1BVElRVUUgUlRDCi0wMDgwRkYgICAgIChiYXNlIDE2KQkJU09DLiBERSBURUxFSU5GT1JNQVRJUVVFIFJUQwotCQkJCVAuTy4gQk9YIDk1NSBQTEFDRSBEVSBQQVJDCi0JCQkJMzAwIExFTy1QQVJJU1RBVSAgICBTVUlURSA3MjUgTU9OVFJFQUwgKAotCQkJCUNBTkFEQSBIMlcgMk4xCi0JCQkJQ0FOQURBCi0KLTAwLThDLTEwICAgKGhleCkJCUJsYWNrIEJveCBDb3JwLgotMDA4QzEwICAgICAoYmFzZSAxNikJCUJsYWNrIEJveCBDb3JwLgotCQkJCTEwMDAgUGFyayBEcml2ZQotCQkJCUxhd3JlbmNlIFBBIDE1MDU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04Qy1GQSAgIChoZXgpCQlJbnZlbnRlYyBDb3Jwb3JhdGlvbgotMDA4Q0ZBICAgICAoYmFzZSAxNikJCUludmVudGVjIENvcnBvcmF0aW9uCi0JCQkJTm8uIDI1NSwgSmVuLUhvIFJvYWQgU2VjLiAyLCAzMzU0NywKLQkJCQlUYWNoaSBUYW95dWFuIDMzNTQ3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC04RC00RSAgIChoZXgpCQlDSlNDIE5JSSBTVFQKLTAwOEQ0RSAgICAgKGJhc2UgMTYpCQlDSlNDIE5JSSBTVFQKLQkJCQlOLkxlbmluZ3JhZHNrYXlhIHN0ciwgMTAKLQkJCQlTbW9sZW5zayAgMjE0MDEyCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTkwLTAwICAgKGhleCkJCURJQU1PTkQgTVVMVElNRURJQQotMDA5MDAwICAgICAoYmFzZSAxNikJCURJQU1PTkQgTVVMVElNRURJQQotCQkJCTMxMiBTRSBTVE9ORU1JTEwgRFJJVkUKLQkJCQlTVUlURSAjMTUwCi0JCQkJVkFOQ09VVkVSIFdBIDk4Njg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0wMSAgIChoZXgpCQlOSVNISU1VIEVMRUNUUk9OSUNTIElORFVTVFJJRVMgQ08uLCBMVEQuCi0wMDkwMDEgICAgIChiYXNlIDE2KQkJTklTSElNVSBFTEVDVFJPTklDUyBJTkRVU1RSSUVTIENPLiwgTFRELgotCQkJCTcwMCBUQVRFTk8gTUlUQUdBV0EtQ0hPCi0JCQkJS0FOWkFLSS1HVU4gU0FHQSBQUkVGLiAgCi0JCQkJSkFQQU4KLQotMDAtOTAtMDIgICAoaGV4KQkJQUxMR09OIEFCCi0wMDkwMDIgICAgIChiYXNlIDE2KQkJQUxMR09OIEFCCi0JCQkJR0FSREFUT1JHRVQgMQotCQkJCTQxMiA1MCBHT1RFQk9SRyAKLQkJCQlTV0VERU4KLQotMDAtOTAtMDMgICAoaGV4KQkJQVBMSU8KLTAwOTAwMyAgICAgKGJhc2UgMTYpCQlBUExJTwotCQkJCTE4IEF2ZW51ZSBEdSA4IE1haSAxOTQ1Ci0JCQkJOTUyMDAgU0FSQ0VMTEVTCi0JCQkJRlJBTkNFCi0KLTAwLTkwLTA0ICAgKGhleCkJCTNDT00gRVVST1BFIExURC4KLTAwOTAwNCAgICAgKGJhc2UgMTYpCQkzQ09NIEVVUk9QRSBMVEQuCi0JCQkJM0NPTSBDRU5UUkUsIEJPVU5EQVJZIFdBWQotCQkJCUhFTUVMIEhFTVBTVEVBRAotCQkJCUhFUlRTLiAgSFAyIDdZVSAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtMDUgICAoaGV4KQkJUFJPVEVDSCBTWVNURU1TIENPLiwgTFRELgotMDA5MDA1ICAgICAoYmFzZSAxNikJCVBST1RFQ0ggU1lTVEVNUyBDTy4sIExURC4KLQkJCQk1RiwgTk8uIDM0LCBMQU5FIDgwLCBTRUMuIDMKLQkJCQlOQU5LQU5HIFJPQUQKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtMDYgICAoaGV4KQkJSEFNQU1BVFNVIFBIT1RPTklDUyBLLksuCi0wMDkwMDYgICAgIChiYXNlIDE2KQkJSEFNQU1BVFNVIFBIT1RPTklDUyBLLksuCi0JCQkJODEyIEpPS08tQ0hPCi0JCQkJSEFNQU1BVFNVICA0MzEtMzE5NgotCQkJCUpBUEFOCi0KLTAwLTkwLTA3ICAgKGhleCkJCURPTUVYIFRFQ0hOT0xPR1kgQ09SUC4KLTAwOTAwNyAgICAgKGJhc2UgMTYpCQlET01FWCBURUNITk9MT0dZIENPUlAuCi0JCQkJTk8uIDIsIFRFQ0hOT0xPR1kgUkQuIDEKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCSBIU0lOQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTA4ICAgKGhleCkJCUhhbkEgU3lzdGVtcyBJbmMuCi0wMDkwMDggICAgIChiYXNlIDE2KQkJSGFuQSBTeXN0ZW1zIEluYy4KLQkJCQlFQUhPIEIvRCA3NDAtMQotCQkJCVlFT0sgU0FNLURPTkcsIEtBTkdOQU0tS1UKLQkJCQlTRU9VTCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTkwLTA5ICAgKGhleCkJCWkgQ29udHJvbHMsIEluYy4KLTAwOTAwOSAgICAgKGJhc2UgMTYpCQlpIENvbnRyb2xzLCBJbmMuCi0JCQkJMm5kIEZsLCBJJ1BhcmsgMzAyLCAxMSBKZW9uZ2phLURvbmcsCi0JCQkJQnVuZGFuZy1HVSwgU2VvbmduYW0sCi0JCQkJR3llb25nZ2ktRG8gNDYzLTg1OSAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtOTAtMEEgICAoaGV4KQkJUFJPVE9OIEVMRUNUUk9OSUMgSU5EVVNUUklBTCBDTy4sIExURC4KLTAwOTAwQSAgICAgKGJhc2UgMTYpCQlQUk9UT04gRUxFQ1RST05JQyBJTkRVU1RSSUFMIENPLiwgTFRELgotCQkJCQotCQkJCTRGLCA0NSwgU0VDVElPTiAxLCBTQU4tTUlOIFJECi0JCQkJUGFuY2hpYW8sIFRhaXBlaSBDb3VudHkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtMEIgICAoaGV4KQkJTEFOTkVSIEVMRUNUUk9OSUNTLCBJTkMuCi0wMDkwMEIgICAgIChiYXNlIDE2KQkJTEFOTkVSIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJOEYtNCwgTk8uIDc3LCBTRUMuIDEKLQkJCQlIU0lOIFRBSSBXVSBSRC4sIEhTSUNISUgKLQkJCQlUQUlQRUkgSFNJRU4gCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC0wQyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwMEMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUgLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTBEICAgKGhleCkJCU92ZXJsYW5kIFN0b3JhZ2UgSW5jLgotMDA5MDBEICAgICAoYmFzZSAxNikJCU92ZXJsYW5kIFN0b3JhZ2UgSW5jLgotCQkJCTQ4MjAgT3ZlcmxhbmQgQXZlbnVlCi0JCQkJU0FOIERJRUdPIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0wRSAgIChoZXgpCQlIQU5ETElOSyBURUNITk9MT0dJRVMsIElOQy4KLTAwOTAwRSAgICAgKGJhc2UgMTYpCQlIQU5ETElOSyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk1RiwgMjQtMiwgSW5kdXN0cnkgRS4gUm9hZCBJViwKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1IDMwMDc3ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTBGICAgKGhleCkJCUtBV0FTQUtJIEhFQVZZIElORFVTVFJJRVMsIExURAotMDA5MDBGICAgICAoYmFzZSAxNikJCUtBV0FTQUtJIEhFQVZZIElORFVTVFJJRVMsIExURAotCQkJCUVMRUMuICYgQ09OVFJPTCBURUNIIENFTlRFUgotCQkJCTEtMSBLQVdBU0FLSS1DSE8gQUtBU0hJIDY3My04NjY2Ci0JCQkJSkFQQU4KLQotMDAtOTAtMTAgICAoaGV4KQkJU0lNVUxBVElPTiBMQUJPUkFUT1JJRVMsIElOQy4KLTAwOTAxMCAgICAgKGJhc2UgMTYpCQlTSU1VTEFUSU9OIExBQk9SQVRPUklFUywgSU5DLgotCQkJCTEwMDc4IFRZTEVSIFBMQUNFICNBCi0JCQkJSUpBTVNWSUxMRSBNRCAyMTc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMTEgICAoaGV4KQkJV0FWVHJhY2UsIEluYy4KLTAwOTAxMSAgICAgKGJhc2UgMTYpCQlXQVZUcmFjZSwgSW5jLgotCQkJCTE1NTUgMTMyTkQgQVZFLiBORQotCQkJCUJFTExFVlVFIFdBIDk4MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0xMiAgIChoZXgpCQlHTE9CRVNQQU4gU0VNSUNPTkRVQ1RPUiwgSU5DLgotMDA5MDEyICAgICAoYmFzZSAxNikJCUdMT0JFU1BBTiBTRU1JQ09ORFVDVE9SLCBJTkMuCi0JCQkJMTAwIFNDSFVMWiBEUklWRQotCQkJCVJFRCBCQU5LIE5KIDA3NzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0xMyAgIChoZXgpCQlTQU1TQU4gQ09SUC4KLTAwOTAxMyAgICAgKGJhc2UgMTYpCQlTQU1TQU4gQ09SUC4KLQkJCQlFTEVDVFJPTklDUyAmIENPTU0gRElWSVNJT04KLQkJCQlTQU1TQU4gQkxERy4sIDUwNi03LCBBTVNBLURPTkcKLQkJCQlLYW5nZG9uZy1HdSBTZW91bCAxMzQtMDUwIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC05MC0xNCAgIChoZXgpCQlST1RPUksgSU5TVFJVTUVOVFMsIExURC4KLTAwOTAxNCAgICAgKGJhc2UgMTYpCQlST1RPUksgSU5TVFJVTUVOVFMsIExURC4KLQkJCQlDSEFVTCBFTkQgTEFORQotCQkJCUxVVE9OIEJFREZPUkRTSElSRQotCQkJCUxVNCA4RVogRW5nbGFuZCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC05MC0xNSAgIChoZXgpCQlDRU5USUdSQU0gQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwOTAxNSAgICAgKGJhc2UgMTYpCQlDRU5USUdSQU0gQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQk5MSBFQVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0xNiAgIChoZXgpCQlaQUMKLTAwOTAxNiAgICAgKGJhc2UgMTYpCQlaQUMKLQkJCQlTdGk/b2V2ZXN0ci4gOQotCQkJCUQtMzExNDEgSGlsZGVzaGVpbSAgCi0JCQkJR0VSTUFOWQotCi0wMC05MC0xNyAgIChoZXgpCQlaeXBjb20sIEluYwotMDA5MDE3ICAgICAoYmFzZSAxNikJCVp5cGNvbSwgSW5jCi0JCQkJMjg0MDAgS29ob3V0ZWsgV2F5Ci0JCQkJU3VpdGUgMTcwCi0JCQkJVW5pb24gQ2l0eSBDQSA5NDU4Ny0xMjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0xOCAgIChoZXgpCQlJVE8gRUxFQ1RSSUMgSU5EVVNUUlkgQ08sIExURC4KLTAwOTAxOCAgICAgKGJhc2UgMTYpCQlJVE8gRUxFQ1RSSUMgSU5EVVNUUlkgQ08sIExURC4KLQkJCQk0LTI2LTEyIE1FSUVLSSBOQUtBTVVSQS1LVQotCQkJCU5BR09ZQS1DSVRZIEFJQ0hJIDQ1MC0wMDAyICAKLQkJCQlKQVBBTgotCi0wMC05MC0xOSAgIChoZXgpCQlIRVJNRVMgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDkwMTkgICAgIChiYXNlIDE2KQkJSEVSTUVTIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTMtMi0xMiBZVVNISU1BLCBCVU5LWU8tS1UKLQkJCQlUT0tZTywgMTEzLTAwMzQgIAotCQkJCUpBUEFOCi0KLTAwLTkwLTFBICAgKGhleCkJCVVOSVNQSEVSRSBTT0xVVElPTlMKLTAwOTAxQSAgICAgKGJhc2UgMTYpCQlVTklTUEhFUkUgU09MVVRJT05TCi0JCQkJNSBDQVJMSVNMRSBST0FECi0JCQkJV0VTVEZPUkQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTFCICAgKGhleCkJCURJR0lUQUwgQ09OVFJPTFMKLTAwOTAxQiAgICAgKGJhc2UgMTYpCQlESUdJVEFMIENPTlRST0xTCi0JCQkJMzA1IFBJT05FRVIgQkxWRC4KLQkJCQlTUFJJTkdCT1JPIE9IIDQ1MDY2LTExMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTFDICAgKGhleCkJCW1wcyBTb2Z0d2FyZSBHbWJoCi0wMDkwMUMgICAgIChiYXNlIDE2KQkJbXBzIFNvZnR3YXJlIEdtYmgKLQkJCQlMVURXSUdTVFIgMzYKLQkJCQk4NTU1MSBLSVJDSEhFSU0gIAotCQkJCUdFUk1BTlkKLQotMDAtOTAtMUQgICAoaGV4KQkJUEVDIChOWikgTFRELgotMDA5MDFEICAgICAoYmFzZSAxNikJCVBFQyAoTlopIExURC4KLQkJCQkyIFNUQVRJT04gUk9BRAotCQkJCVAuTy4gQk9YIDMwOAotCQkJCU1BUlRPTiAgCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtOTAtMUUgICAoaGV4KQkJU2VsZXN0YSBJbmdlZ25lcmlhIFMucC5BLgotMDA5MDFFICAgICAoYmFzZSAxNikJCVNlbGVzdGEgSW5nZWduZXJpYSBTLnAuQS4KLQkJCQl2aWEgZGkgRnJhbmNpYSwgMjgKLQkJCQlHZW5vdmEgIDE2MTQ5Ci0JCQkJSVRBTFkKLQotMDAtOTAtMUYgICAoaGV4KQkJQURURUMgUFJPRFVDVElPTlMsIElOQy4KLTAwOTAxRiAgICAgKGJhc2UgMTYpCQlBRFRFQyBQUk9EVUNUSU9OUywgSU5DLgotCQkJCTQwOCBSVVNTRUxMIFNUUkVFVAotCQkJCU5BU0hWSUxMRSBUTiAzNzIwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMjAgICAoaGV4KQkJUEhJTElQUyBBTkFMWVRJQ0FMIFgtUkFZIEIuVi4KLTAwOTAyMCAgICAgKGJhc2UgMTYpCQlQSElMSVBTIEFOQUxZVElDQUwgWC1SQVkgQi5WLgotCQkJCUxFTFlXRUcgMQotCQkJCTc2MDIgRUEgQUxNRUxPICAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC05MC0yMSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwMjEgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFIuIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0yMiAgIChoZXgpCQlJVkVYCi0wMDkwMjIgICAgIChiYXNlIDE2KQkJSVZFWAotCQkJCTQyOTUgSU5URVJOQVRJT05BTCBCTFZELgotCQkJCVNVSVRFCi0JCQkJTk9SQ1JPU1MgR0EgMzAwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTIzICAgKGhleCkJCVpJTE9HIElOQy4KLTAwOTAyMyAgICAgKGJhc2UgMTYpCQlaSUxPRyBJTkMuCi0JCQkJOTEwIEVhc3QgSGFtaWx0b24gQXZlLgotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0yNCAgIChoZXgpCQlQSVBFTElOS1MsIElOQy4KLTAwOTAyNCAgICAgKGJhc2UgMTYpCQlQSVBFTElOS1MsIElOQy4KLQkJCQkyNzEwIFdBTFNIIEFWRS4sIFNURSAjMzAwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTI1ICAgKGhleCkJCUJBRSBTeXN0ZW1zIEF1c3RyYWxpYSAoRWxlY3Ryb25pYyBTeXN0ZW1zKSBQdHkgTHRkCi0wMDkwMjUgICAgIChiYXNlIDE2KQkJQkFFIFN5c3RlbXMgQXVzdHJhbGlhIChFbGVjdHJvbmljIFN5c3RlbXMpIFB0eSBMdGQKLQkJCQkzIFNlY29uZCBBdmUKLQkJCQlNYXdzb24gTGFrZXMgU291dGggQXVzdHJhbGlhIDUwOTUKLQkJCQlBVVNUUkFMSUEKLQotMDAtOTAtMjYgICAoaGV4KQkJQURWQU5DRUQgU1dJVENISU5HIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDkwMjYgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgU1dJVENISU5HIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJODMzMCBCT09ORSBCT1VMRVZBUkQtLTVUSCBGTC4KLQkJCQlWSUVOTkEgVkEgMjIxODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTI3ICAgKGhleCkJCUlOVEVMIENPUlBPUkFUSU9OCi0wMDkwMjcgICAgIChiYXNlIDE2KQkJSU5URUwgQ09SUE9SQVRJT04KLQkJCQlIRjEtMDYKLQkJCQk1MjAwIE4uRS4gRUxBTSBZT1VORyBQQVJLV0FZCi0JCQkJSElMTFNCT1JPIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0yOCAgIChoZXgpCQlOSVBQT04gU0lHTkFMIENPLiwgTFRELgotMDA5MDI4ICAgICAoYmFzZSAxNikJCU5JUFBPTiBTSUdOQUwgQ08uLCBMVEQuCi0JCQkJMTEgSElSQUlERS1LT0dJTy1EQU5DSEkKLQkJCQlVSVNVTk9NSVlBIFRPQ0hJR0kgMzIxLTg2NTEgIAotCQkJCUpBUEFOCi0KLTAwLTkwLTI5ICAgKGhleCkJCUNSWVBUTyBBRwotMDA5MDI5ICAgICAoYmFzZSAxNikJCUNSWVBUTyBBRwotCQkJCVAuTy4gQk9YCi0JCQkJQ0gtNjMwMSBadWcgIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTkwLTJBICAgKGhleCkJCUNPTU1VTklDQVRJT04gREVWSUNFUywgSU5DLgotMDA5MDJBICAgICAoYmFzZSAxNikJCUNPTU1VTklDQVRJT04gREVWSUNFUywgSU5DLgotCQkJCTg1IEZ1bHRvbiBTdHJlZXQKLQkJCQlCb29udG9uIE5KIDA3MDA1LTE5MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTJCICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTAyQiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJU0pBLTIKLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMkMgICAoaGV4KQkJREFUQSAmIENPTlRST0wgRVFVSVBNRU5UIExURC4KLTAwOTAyQyAgICAgKGJhc2UgMTYpCQlEQVRBICYgQ09OVFJPTCBFUVVJUE1FTlQgTFRELgotCQkJCUNPVU5UWSBGQVJNLCBXRU5ET1ZFUiBSRC4KLQkJCQlTVE9LRSBNQU5ERVZJTExFCi0JCQkJQlVDS1MuIEhQMjIgU1RBICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC05MC0yRCAgIChoZXgpCQlEQVRBIEVMRUNUUk9OSUNTIChBVVNULikgUFRZLCBMVEQuCi0wMDkwMkQgICAgIChiYXNlIDE2KQkJREFUQSBFTEVDVFJPTklDUyAoQVVTVC4pIFBUWSwgTFRELgotCQkJCTcgU0VJU01JQyBDT1VSVAotCQkJCVJPV1ZJTExFCi0JCQkJVklDVE9SSUEgMzE3OCAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTkwLTJFICAgKGhleCkJCU5BTUNPIExJTUlURUQKLTAwOTAyRSAgICAgKGJhc2UgMTYpCQlOQU1DTyBMSU1JVEVECi0JCQkJMS0xLTMyIFNISU4tVVJBU0hJTUEtQ0hPCi0JCQkJS0FOQUdBV0EtS1UsIFlPS09IQU1BCi0JCQkJS0FOQUdBV0EgMjIxLTAwMzEgIAotCQkJCUpBUEFOCi0KLTAwLTkwLTJGICAgKGhleCkJCU5FVENPUkUgU1lTVEVNUywgSU5DLgotMDA5MDJGICAgICAoYmFzZSAxNikJCU5FVENPUkUgU1lTVEVNUywgSU5DLgotCQkJCTE4NyBCQUxMQVJEVkFMRSBTVFJFRVQKLQkJCQlXSUxNSU5HVE9OIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0zMCAgIChoZXgpCQlIT05FWVdFTEwtREFUSU5HCi0wMDkwMzAgICAgIChiYXNlIDE2KQkJSE9ORVlXRUxMLURBVElORwotCQkJCVZJQSBUSU5UT1JFVFRPLCAxNQotCQkJCTIxMDEyIENBU1NBTk8gTUFHTkFHTyAoVkEpICAKLQkJCQlJVEFMWQotCi0wMC05MC0zMSAgIChoZXgpCQlNWVNUSUNPTSwgTFRELgotMDA5MDMxICAgICAoYmFzZSAxNikJCU1ZU1RJQ09NLCBMVEQuCi0JCQkJUC5PLiA4MzY0Ci0JCQkJTkFUQU5JQSA0MjUwNCAgCi0JCQkJSVNSQUVMCi0KLTAwLTkwLTMyICAgKGhleCkJCVBFTENPTUJFIEdST1VQIExURC4KLTAwOTAzMiAgICAgKGJhc2UgMTYpCQlQRUxDT01CRSBHUk9VUCBMVEQuCi0JCQkJTUFJTiBST0FECi0JCQkJRE9WRVJDT1VSVCwgSEFSV0lDSAotCQkJCUVTU0VYIEMwMTIgNExQIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLTMzICAgKGhleCkJCUlOTk9WQVBIT05FIEFHCi0wMDkwMzMgICAgIChiYXNlIDE2KQkJSU5OT1ZBUEhPTkUgQUcKLQkJCQlCb2VibGluZ2VyIFN0ci4gNzYKLQkJCQlTSU5ERUxGSU5HRU4gIEQ3MTA2NQotCQkJCUdFUk1BTlkKLQotMDAtOTAtMzQgICAoaGV4KQkJSU1BR0lDLCBJTkMuCi0wMDkwMzQgICAgIChiYXNlIDE2KQkJSU1BR0lDLCBJTkMuCi0JCQkJMjM1IFdlc3QgUm9hZCAjNwotCQkJCVBvcnRzbW91dGggTkggMDM4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTM1ICAgKGhleCkJCUFMUEhBIFRFTEVDT00sIElOQy4KLTAwOTAzNSAgICAgKGJhc2UgMTYpCQlBTFBIQSBURUxFQ09NLCBJTkMuCi0JCQkJMkYsIE5PLjIsIExJIEhTSU4gUk9BRAotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTi1DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtMzYgICAoaGV4KQkJZW5zLCBpbmMuCi0wMDkwMzYgICAgIChiYXNlIDE2KQkJZW5zLCBpbmMuCi0JCQkJUC5PLiBCT1ggMTkyMDcKLQkJCQlSQUxFSUdIIE5DIDI3NjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0zNyAgIChoZXgpCQlBQ1VDT01NLCBJTkMuCi0wMDkwMzcgICAgIChiYXNlIDE2KQkJQUNVQ09NTSwgSU5DLgotCQkJCTQ2MzMgT0xEIElST05TSURFUyAtIFNURSAjMzEwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTM4ICAgKGhleCkJCUZPVU5UQUlOIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA5MDM4ICAgICAoYmFzZSAxNikJCUZPVU5UQUlOIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTUwIFJBTkRPTFBIIFJPQUQKLQkJCQlTT01FUlNFVCBOSiAwODg3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMzkgICAoaGV4KQkJU0hBU1RBIE5FVFdPUktTCi0wMDkwMzkgICAgIChiYXNlIDE2KQkJU0hBU1RBIE5FVFdPUktTCi0JCQkJMjQ5IEhVTUJPTERUIENPVVJUCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5LTEzMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTNBICAgKGhleCkJCU5JSE9OIE1FRElBIFRPT0wgSU5DLgotMDA5MDNBICAgICAoYmFzZSAxNikJCU5JSE9OIE1FRElBIFRPT0wgSU5DLgotCQkJCTE4NzUgT1lBTUEtQ0hPCi0JCQkJWU9LS0FJQ0hJLUNJVFkKLQkJCQlNSUUgNTEyLTExMDIgIAotCQkJCUpBUEFOCi0KLTAwLTkwLTNCICAgKGhleCkJCVRyaUVNUyBSZXNlYXJjaCBMYWIsIEluYy4KLTAwOTAzQiAgICAgKGJhc2UgMTYpCQlUcmlFTVMgUmVzZWFyY2ggTGFiLCBJbmMuCi0JCQkJMTI3NSBOLiBUVVNUSU4gQVZFTlVFCi0JCQkJQU5BSEVJTSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtM0MgICAoaGV4KQkJQVRMQU5USUMgTkVUV09SSyBTWVNURU1TCi0wMDkwM0MgICAgIChiYXNlIDE2KQkJQVRMQU5USUMgTkVUV09SSyBTWVNURU1TCi0JCQkJSU1NRVVCTEUgIktlbm5lZHkiCi0JCQkJWklURVIgQVZFTlVFIEpGIEtFTk5FRFkKLQkJCQkzMzcwMCBNRVJJR05BQyAKLQkJCQlGUkFOQ0UKLQotMDAtOTAtM0QgICAoaGV4KQkJQklPUEFDIFNZU1RFTVMsIElOQy4KLTAwOTAzRCAgICAgKGJhc2UgMTYpCQlCSU9QQUMgU1lTVEVNUywgSU5DLgotCQkJCTQyIEFFUk8gQ0FNSU5PCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtM0UgICAoaGV4KQkJTi5WLiBQSElMSVBTIElORFVTVFJJQUwgQUNUSVZJVElFUwotMDA5MDNFICAgICAoYmFzZSAxNikJCU4uVi4gUEhJTElQUyBJTkRVU1RSSUFMIEFDVElWSVRJRVMKLQkJCQkKLQkJCQlJTlRFUkxFVVZFTkxBQU4gNzQtNzYKLQkJCQlCLTMwMDEgTEVVVkVOICAKLQkJCQlCRUxHSVVNCi0KLTAwLTkwLTNGICAgKGhleCkJCUFaVEVDIFJBRElPTUVESUEKLTAwOTAzRiAgICAgKGJhc2UgMTYpCQlBWlRFQyBSQURJT01FRElBCi0JCQkJMzEsIFJVRSBEVSBDSEVNSU5ERUZFUgotCQkJCTY3MjAwIFNUUkFTQk9VUkcgIAotCQkJCUZSQU5DRQotCi0wMC05MC00MCAgIChoZXgpCQlTaWVtZW5zIE5ldHdvcmsgQ29udmVyZ2VuY2UgTExDCi0wMDkwNDAgICAgIChiYXNlIDE2KQkJU2llbWVucyBOZXR3b3JrIENvbnZlcmdlbmNlIExMQwotCQkJCVRlbiBUZWNobm9sb2d5IFBhcmsgRHJpdmUKLQkJCQlXZXN0Zm9yZCBNQSAwMTg4Ni0zMTQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC00MSAgIChoZXgpCQlBUFBMSUVEIERJR0lUQUwgQUNDRVNTCi0wMDkwNDEgICAgIChiYXNlIDE2KQkJQVBQTElFRCBESUdJVEFMIEFDQ0VTUwotCQkJCTk4NTUgU0NSQU5UT04gUk9BRAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNDIgICAoaGV4KQkJRUNDUywgSW5jLgotMDA5MDQyICAgICAoYmFzZSAxNikJCUVDQ1MsIEluYy4KLQkJCQlPTkUgU0hFSUxBIERSSVZFCi0JCQkJVElOVE9OIEZBTExTIE5KIDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC00MyAgIChoZXgpCQlOSUNISUJFSSBERU5TSEkgQ08uLCBMVEQuCi0wMDkwNDMgICAgIChiYXNlIDE2KQkJTklDSElCRUkgREVOU0hJIENPLiwgTFRELgotCQkJCTEtMTMtMTAgU0hJUk9HQU5FICBDSFVPLUtVCi0JCQkJRlVLVU9LQS1DSVRZICAKLQkJCQlKQVBBTgotCi0wMC05MC00NCAgIChoZXgpCQlBU1NVUkVEIERJR0lUQUwsIElOQy4KLTAwOTA0NCAgICAgKGJhc2UgMTYpCQlBU1NVUkVEIERJR0lUQUwsIElOQy4KLQkJCQk5LTExIEdPTERTTUlUSCBTVC4KLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTQ1ICAgKGhleCkJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMKLTAwOTA0NSAgICAgKGJhc2UgMTYpCQlNYXJjb25pIENvbW11bmljYXRpb25zCi0JCQkJMTAwMCBGb3JlIERyaXZlCi0JCQkJV2FycmVuZGFsZSBQQSAxNTA4Ni03NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC00NiAgIChoZXgpCQlERVhEWU5FLCBMVEQuCi0wMDkwNDYgICAgIChiYXNlIDE2KQkJREVYRFlORSwgTFRELgotCQkJCTE1IE1BUktFVCBQTC4KLQkJCQlDSVJFTkNFU1RFUgotCQkJCUdMT0NFU1RFUlNISVJFIEdMNyAyUEIgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLTQ3ICAgKGhleCkJCUdJR0EgRkFTVCBFLiBMVEQuCi0wMDkwNDcgICAgIChiYXNlIDE2KQkJR0lHQSBGQVNUIEUuIExURC4KLQkJCQkxNEYsIE5PLjExMiwgU0VDLiAxCi0JCQkJSFNJTi1UQUkgV1UgUkQuCi0JCQkJSHNpLUNoaWggVGFpcGVpIEhzaWVuIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtNDggICAoaGV4KQkJWkVBTCBDT1JQT1JBVElPTgotMDA5MDQ4ICAgICAoYmFzZSAxNikJCVpFQUwgQ09SUE9SQVRJT04KLQkJCQkzMDEsIEhJUkFJS0UKLQkJCQlOQUdBS1VURS1DSE8sIEFJQ0hJLVBSRUYuIDQ4MC0xMTU1ICAKLQkJCQlKQVBBTgotCi0wMC05MC00OSAgIChoZXgpCQlFTlRSSURJQSBDT1JQT1JBVElPTgotMDA5MDQ5ICAgICAoYmFzZSAxNikJCUVOVFJJRElBIENPUlBPUkFUSU9OCi0JCQkJMTAxIFBBUksgQ0VOVEVSIFBMQVpBCi0JCQkJU1VJVEUgIzUwMAotCQkJCVNBTiBKT1NFIENBIDk1MTEzLTIyMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTRBICAgKGhleCkJCUNPTkNVUiBTWVNURU0gVEVDSE5PTE9HSUVTCi0wMDkwNEEgICAgIChiYXNlIDE2KQkJQ09OQ1VSIFNZU1RFTSBURUNITk9MT0dJRVMKLQkJCQkyNTI1IFdBTExJTkdXT09EIERSLi1TVEUuICM4MDQKLQkJCQlBVVNUSU4gVFggNzg3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTRCICAgKGhleCkJCUdlbVRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotMDA5MDRCICAgICAoYmFzZSAxNikJCUdlbVRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiAxIEplbiBBaSBSb2FkLAotCQkJCUhzaW5jaHUgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUh1a291LCBIc2luY2h1LCBUYWl3YW4gMzAzNTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTRDICAgKGhleCkJCUVQSUdSQU0sIElOQy4KLTAwOTA0QyAgICAgKGJhc2UgMTYpCQlFUElHUkFNLCBJTkMuCi0JCQkJODcwIFdFU1QgTUFVREUgQVZFLgotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNEQgICAoaGV4KQkJU1BFQyBTLkEuCi0wMDkwNEQgICAgIChiYXNlIDE2KQkJU1BFQyBTLkEuCi0JCQkJQ0FTUCAxNzIgMy1CCi0JCQkJMDgwMTMgQkFSQ0VMT05BICAKLQkJCQlTUEFJTgotCi0wMC05MC00RSAgIChoZXgpCQlERUxFTSBCVgotMDA5MDRFICAgICAoYmFzZSAxNikJCURFTEVNIEJWCi0JCQkJTFVDSFRIQVZFTiBXRUcgNDIKLQkJCQk1NjU3IEVCIEVJTkRIT1ZFTiAgCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtOTAtNEYgICAoaGV4KQkJQUJCIFBPV0VSIFQmRCBDT01QQU5ZLCBJTkMuCi0wMDkwNEYgICAgIChiYXNlIDE2KQkJQUJCIFBPV0VSIFQmRCBDT01QQU5ZLCBJTkMuCi0JCQkJNzAzNiBTTk9XRFJJRlQgUk9BRAotCQkJCUFMTEVOVE9XTiBQQSAxODEwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNTAgICAoaGV4KQkJVEVMRVNURSBPWQotMDA5MDUwICAgICAoYmFzZSAxNikJCVRFTEVTVEUgT1kKLQkJCQlTRVBPTktBVFUgMQotCQkJCUxJVFRPSU5FTiAgRklOLTIwNjYwCi0JCQkJRklOTEFORAotCi0wMC05MC01MSAgIChoZXgpCQlVTFRJTUFURSBURUNITk9MT0dZIENPUlAuCi0wMDkwNTEgICAgIChiYXNlIDE2KQkJVUxUSU1BVEUgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTEwMCBSQVdTT04gUk9BRAotCQkJCVZJQ1RPUiBOWSAxNDU2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNTIgICAoaGV4KQkJU0VMQ09NIEVMRVRUUk9OSUNBIFMuUi5MLgotMDA5MDUyICAgICAoYmFzZSAxNikJCVNFTENPTSBFTEVUVFJPTklDQSBTLlIuTC4KLQkJCQlWSUEgR1JBTkRJLCA1Ci0JCQkJNDAwMTMgQ0FTVEVMTUFHR0lPUkUgQk8gIAotCQkJCUlUQUxZCi0KLTAwLTkwLTUzICAgKGhleCkJCURBRVdPTyBFTEVDVFJPTklDUyBDTy4sIExURC4KLTAwOTA1MyAgICAgKGJhc2UgMTYpCQlEQUVXT08gRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJRElUIFJFU0VBUkNIIENFTlRFUgotCQkJCURBRVdPTyBDRU5URVIgNTQxIE5BTURBRU1VTk5PIDUtR0EKLQkJCQlDSFVORy1HVSBTRU9VTCAxMDAtNzE0IAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC05MC01NCAgIChoZXgpCQlJTk5PVkFUSVZFIFNFTUlDT05EVUNUT1JTLCBJTkMKLTAwOTA1NCAgICAgKGJhc2UgMTYpCQlJTk5PVkFUSVZFIFNFTUlDT05EVUNUT1JTLCBJTkMKLQkJCQkyNTcwIFcuIEVMIENBTUlOTyBSRUFMCi0JCQkJU1VJVEUgIzIwNQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTU1ICAgKGhleCkJCVBBUktFUiBIQU5OSUZJTiBDT1JQT1JBVElPTiBDT01QVU1PVE9SIERJVklTSU9OCi0wMDkwNTUgICAgIChiYXNlIDE2KQkJUEFSS0VSIEhBTk5JRklOIENPUlBPUkFUSU9OIENPTVBVTU9UT1IgRElWSVNJT04KLQkJCQk1NTAwIEJVU0lORVNTIFBBUksgRFJJVkUKLQkJCQlST0hORVJUIFBBUksgQ0EgOTQ5MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTU2ICAgKGhleCkJCVRFTEVTVFJFQU0sIElOQy4KLTAwOTA1NiAgICAgKGJhc2UgMTYpCQlURUxFU1RSRUFNLCBJTkMuCi0JCQkJODQ4IEdPTEQgRkxBVCBSRC4sIFNVSVRFIDEKLQkJCQlORVZBREEgQ0lUWSBDQSA5NTk1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNTcgICAoaGV4KQkJQUFOZXRjb20sIEluYy4KLTAwOTA1NyAgICAgKGJhc2UgMTYpCQlBQU5ldGNvbSwgSW5jLgotCQkJCTQ5NDkgTElCRVJUWSBMQU5FIC0gU1RFLiAjMjAwCi0JCQkJQUxMRU5UT1dOIFBBIDE4MTA2LTkwMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTU4ICAgKGhleCkJCVVsdHJhIEVsZWN0cm9uaWNzIEx0ZC4sIENvbW1hbmQgYW5kIENvbnRyb2wgU3lzdGVtcwotMDA5MDU4ICAgICAoYmFzZSAxNikJCVVsdHJhIEVsZWN0cm9uaWNzIEx0ZC4sIENvbW1hbmQgYW5kIENvbnRyb2wgU3lzdGVtcwotCQkJCUtOQVZFUyBCRUVDSCBCVVNJTkVTUyBDRU5UUkUKLQkJCQlMT1VEV0FURVIsIEhJR0ggV1lDT01CRQotCQkJCUJVQ0tJTkdIQU1TSElSRSBIUDEwIDlVVCBFbmdsYW5kIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLTU5ICAgKGhleCkJCVRFTEVDT00gREVWSUNFIEsuSy4KLTAwOTA1OSAgICAgKGJhc2UgMTYpCQlURUxFQ09NIERFVklDRSBLLksuCi0JCQkJU0FOTUlZQU5BR0EgQkxERy4gM0YsIDEtNS0xMgotCQkJCU1PVE9BS0FTQUtBLCBNSU5BVE8tS1UKLQkJCQlUT0tZTyAxMDcgCi0JCQkJSkFQQU4KLQotMDAtOTAtNUEgICAoaGV4KQkJREVBUkJPUk4gR1JPVVAsIElOQy4KLTAwOTA1QSAgICAgKGJhc2UgMTYpCQlERUFSQk9STiBHUk9VUCwgSU5DLgotCQkJCTI3MDA3IEhJTExTIFRFQ0ggQ1QuCi0JCQkJRkFSTUlOR1RPTiBISUxMUyBNSSA0ODMzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNUIgICAoaGV4KQkJUkFZTU9ORCBBTkQgTEFFIEVOR0lORUVSSU5HCi0wMDkwNUIgICAgIChiYXNlIDE2KQkJUkFZTU9ORCBBTkQgTEFFIEVOR0lORUVSSU5HCi0JCQkJMjA4IENPTU1FUkNFIERSLiwgIFVOSVQgIzNDCi0JCQkJRk9SVCBDT0xMSU5TIENPIDgwNTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC01QyAgIChoZXgpCQlFRE1JCi0wMDkwNUMgICAgIChiYXNlIDE2KQkJRURNSQotCQkJCTYyNiBPTEQgR1lNUElFIFJPQUQKLQkJCQlOQVJBTkdCQSBRTEQgNDUwNCAKLQkJCQlBVVNUUkFMSUEKLQotMDAtOTAtNUQgICAoaGV4KQkJTkVUQ09NIFNJQ0hFUkhFSVRTVEVDSE5JSyBHbWJICi0wMDkwNUQgICAgIChiYXNlIDE2KQkJTkVUQ09NIFNJQ0hFUkhFSVRTVEVDSE5JSyBHbWJICi0JCQkJQk9QUFNUUkFTU0UgMzgKLQkJCQk1NTExOCBNQUlOWgotCQkJCUdFUk1BTlkKLQotMDAtOTAtNUUgICAoaGV4KQkJUkFVTEFORC1CT1JHIENPUlBPUkFUSU9OCi0wMDkwNUUgICAgIChiYXNlIDE2KQkJUkFVTEFORC1CT1JHIENPUlBPUkFUSU9OCi0JCQkJMzQ1MCBXLiBPQUtUT04gU1QuCi0JCQkJU0tPS0lFIElMIDYwMDc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC01RiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwNUYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCVNKQS0yCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTYwICAgKGhleCkJCVNZU1RFTSBDUkVBVEUgQ09SUC4KLTAwOTA2MCAgICAgKGJhc2UgMTYpCQlTWVNURU0gQ1JFQVRFIENPUlAuCi0JCQkJMy0xMy02IFlPU0hJS0FXQSBCTEQuCi0JCQkJS0ltc2hpIFNVTUlEQS1LVQotCQkJCVRPS1lPICAKLQkJCQlKQVBBTgotCi0wMC05MC02MSAgIChoZXgpCQlQQUNJRklDIFJFU0VBUkNIICYgRU5HSU5FRVJJTkcgQ09SUE9SQVRJT04KLTAwOTA2MSAgICAgKGJhc2UgMTYpCQlQQUNJRklDIFJFU0VBUkNIICYgRU5HSU5FRVJJTkcgQ09SUE9SQVRJT04KLQkJCQkyMDcwIExBUyBQQUxNQVMgRFJJVkUKLQkJCQlDQVJMU0JBRCBDQSA5MjAwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNjIgICAoaGV4KQkJSUNQIFZPUlRFWCBDT01QVVRFUlNZU1RFTUUgR21iSAotMDA5MDYyICAgICAoYmFzZSAxNikJCUlDUCBWT1JURVggQ09NUFVURVJTWVNURU1FIEdtYkgKLQkJCQlGQUxURVJTVFJBU1NFIDUxLTUzCi0JCQkJRCA3NDIyMyBGTEVJTiAgCi0JCQkJR0VSTUFOWQotCi0wMC05MC02MyAgIChoZXgpCQlDT0hFUkVOVCBDT01NVU5JQ0FUSU9OUyBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDkwNjMgICAgIChiYXNlIDE2KQkJQ09IRVJFTlQgQ09NTVVOSUNBVElPTlMgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTQ1MDg1IFVOSVZFUlNJVFkgRFJJVkUKLQkJCQlBU0hCVVJOIFZBIDIwMTQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC02NCAgIChoZXgpCQlUaG9tc29uIEluYy4KLTAwOTA2NCAgICAgKGJhc2UgMTYpCQlUaG9tc29uIEluYy4KLQkJCQkxMDEgV2VzdCAxMDNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyOTAtMTEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNjUgICAoaGV4KQkJRklOSVNBUiBDT1JQT1JBVElPTgotMDA5MDY1ICAgICAoYmFzZSAxNikJCUZJTklTQVIgQ09SUE9SQVRJT04KLQkJCQkxMzg5IE1vZmZldHQgUGFyayBEcgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNjYgICAoaGV4KQkJVHJvaWthIE5ldHdvcmtzLCBJbmMuCi0wMDkwNjYgICAgIChiYXNlIDE2KQkJVHJvaWthIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjgyOSBUb3duc2dhdGUgUm9hZCwKLQkJCQlTdWl0ZSAyMDAKLQkJCQlXZXN0bGFrZSBWaWxsYWdlIENBIDkxMzYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC02NyAgIChoZXgpCQlXYWxrQWJvdXQgQ29tcHV0ZXJzLCBJbmMuCi0wMDkwNjcgICAgIChiYXNlIDE2KQkJV2Fsa0Fib3V0IENvbXB1dGVycywgSW5jLgotCQkJCTI2NTUgTi4gT0NFQU4gRFJJVkUtLVNURS4gIzUxMAotCQkJCVNJTkdFUiBJU0xBTkQgRkwgMzM0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTY4ICAgKGhleCkJCURWVCBDT1JQLgotMDA5MDY4ICAgICAoYmFzZSAxNikJCURWVCBDT1JQLgotCQkJCTE2NzAgT0FLQlJPT0sgRFIuIC0gU1RFLiAjMzMwCi0JCQkJTk9SQ1JPU1MgR0EgMzAwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTY5ICAgKGhleCkJCUpVTklQRVIgTkVUV09SS1MsIElOQy4KLTAwOTA2OSAgICAgKGJhc2UgMTYpCQlKVU5JUEVSIE5FVFdPUktTLCBJTkMuCi0JCQkJMTE5NCBOLiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODktMTIwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNkEgICAoaGV4KQkJVFVSTlNUT05FIFNZU1RFTVMsIElOQy4KLTAwOTA2QSAgICAgKGJhc2UgMTYpCQlUVVJOU1RPTkUgU1lTVEVNUywgSU5DLgotCQkJCTI3NCBGZXJndXNvbiBEcml2ZQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTZCICAgKGhleCkJCUFQUExJRUQgUkVTT1VSQ0VTLCBJTkMuCi0wMDkwNkIgICAgIChiYXNlIDE2KQkJQVBQTElFRCBSRVNPVVJDRVMsIElOQy4KLQkJCQk5ODIxIFdJRE1FUiBST0FECi0JCQkJTEVORVhBIEtTIDY2MjE1LTEyMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTZDICAgKGhleCkJCVNhcnRvcml1cyBIYW1idXJnIEdtYkgKLTAwOTA2QyAgICAgKGJhc2UgMTYpCQlTYXJ0b3JpdXMgSGFtYnVyZyBHbWJICi0JCQkJTWVpZW5kb3JmZXJzdHIuIDIwNQotCQkJCUhhbWJ1cmcgIEQtMjIxNDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTkwLTZEICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTA2RCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4gLSAgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC02RSAgIChoZXgpCQlQUkFYT04sIElOQy4KLTAwOTA2RSAgICAgKGJhc2UgMTYpCQlQUkFYT04sIElOQy4KLQkJCQkxNzAwIERFTEwgQVZFTlVFCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTZGICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTA2RiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4gLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTcwICAgKGhleCkJCU5FTyBORVRXT1JLUywgSU5DLgotMDA5MDcwICAgICAoYmFzZSAxNikJCU5FTyBORVRXT1JLUywgSU5DLgotCQkJCTEwMzAwIEJSRU4gUk9BRCBFQVNUCi0JCQkJTUlOTkVUT05LQSBNTiA1NTM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNzEgICAoaGV4KQkJQXBwbGllZCBJbm5vdmF0aW9uIEluYy4KLTAwOTA3MSAgICAgKGJhc2UgMTYpCQlBcHBsaWVkIElubm92YXRpb24gSW5jLgotCQkJCTU4MDAgSW5ub3ZhdGlvbiBEcml2ZQotCQkJCUR1YmxpbiBPSCA0MzAxNi0zMjcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC03MiAgIChoZXgpCQlTSU1SQUQgQVMKLTAwOTA3MiAgICAgKGJhc2UgMTYpCQlTSU1SQUQgQVMKLQkJCQlQLk8uIEJPWCAxMTEKLQkJCQkzMTkxIEhPUlRFTiAKLQkJCQlOT1JXQVkKLQotMDAtOTAtNzMgICAoaGV4KQkJR0FJTyBURUNITk9MT0dZCi0wMDkwNzMgICAgIChiYXNlIDE2KQkJR0FJTyBURUNITk9MT0dZCi0JCQkJT0FLLVlPS09IQU1BIEJMREcuCi0JCQkJMi0xNS0xMCBLSVRBLVNBSVdBSSwKLQkJCQlOSVNISS1LVSBZT0tPSEFNQS1DSVRZIEthbmFnYXdhIAotCQkJCUpBUEFOCi0KLTAwLTkwLTc0ICAgKGhleCkJCUFSR09OIE5FVFdPUktTLCBJTkMuCi0wMDkwNzQgICAgIChiYXNlIDE2KQkJQVJHT04gTkVUV09SS1MsIElOQy4KLQkJCQkyNSBQT1JURVIgUk9BRAotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNzUgICAoaGV4KQkJTkVDIERPIEJSQVNJTCBTLkEuCi0wMDkwNzUgICAgIChiYXNlIDE2KQkJTkVDIERPIEJSQVNJTCBTLkEuCi0JCQkJUk9ET1ZJQSBQUkVTSURFTlRFIERVVFJBLCBLTSAyMTgKLQkJCQlDVU1CSUNBLUdVQVJVTEhPUwotCQkJCVNBTyBQQVVMTy1TUCBDRVAgLSAwNzIxMC05MDIgCi0JCQkJQlJBWklMCi0KLTAwLTkwLTc2ICAgKGhleCkJCUZNVCBBSVJDUkFGVCBHQVRFIFNVUFBPUlQgU1lTVEVNUyBBQgotMDA5MDc2ICAgICAoYmFzZSAxNikJCUZNVCBBSVJDUkFGVCBHQVRFIFNVUFBPUlQgU1lTVEVNUyBBQgotCQkJCQotCQkJCURBTEFTTElOR0FOIDgKLQkJCQlTRS0yMzEgMzIgVFJFTExFQk9SRyAgCi0JCQkJU1dFREVOCi0KLTAwLTkwLTc3ICAgKGhleCkJCUFEVkFOQ0VEIEZJQlJFIENPTU1VTklDQVRJT05TCi0wMDkwNzcgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgRklCUkUgQ09NTVVOSUNBVElPTlMKLQkJCQlQTyBCT1ggIzc1MTIzOQotCQkJCTEgV0lMTE9XQlJPT0sgQ1QKLQkJCQlQRVRBTFVNQSBDQSA5NDk3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNzggICAoaGV4KQkJTUVSIFRFTEVNQU5BR0VNRU5UIFNPTFVUSU9OUywgTFRELgotMDA5MDc4ICAgICAoYmFzZSAxNikJCU1FUiBURUxFTUFOQUdFTUVOVCBTT0xVVElPTlMsIExURC4KLQkJCQk1IEhBVFNPUkVGIFNUUi4KLQkJCQlJTkQuIEFSRUEKLQkJCQlIT0xPTiAgCi0JCQkJSVNSQUVMCi0KLTAwLTkwLTc5ICAgKGhleCkJCUNsZWFyT25lLCBJbmMuCi0wMDkwNzkgICAgIChiYXNlIDE2KQkJQ2xlYXJPbmUsIEluYy4KLQkJCQkyOTkgV0FTSElOR1RPTiBTVFJFRVQKLQkJCQlXT0JVUk4gTUEgMDE4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTdBICAgKGhleCkJCVBvbHljb20sIEluYy4KLTAwOTA3QSAgICAgKGJhc2UgMTYpCQlQb2x5Y29tLCBJbmMuCi0JCQkJNTc1NSBDRU5UUkFMIEFWRU5VRQotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTdCICAgKGhleCkJCUUtVEVDSCwgSU5DLgotMDA5MDdCICAgICAoYmFzZSAxNikJCUUtVEVDSCwgSU5DLgotCQkJCTMwLCBSJkQgUk9BRCAyCi0JCQkJU0NJRU5DRSBQQVJLCi0JCQkJSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC03QyAgIChoZXgpCQlESUdJVEFMQ0FTVCwgSU5DLgotMDA5MDdDICAgICAoYmFzZSAxNikJCURJR0lUQUxDQVNULCBJTkMuCi0JCQkJNTAzLCBJTEtXQU5HIEJMREcuLCAxNjU2LTIKLQkJCQlTRU9DSE8tRE9ORwotCQkJCVNFT0NITy1LVSAgU0VPVUwgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTkwLTdEICAgKGhleCkJCUxha2UgQ29tbXVuaWNhdGlvbnMKLTAwOTA3RCAgICAgKGJhc2UgMTYpCQlMYWtlIENvbW11bmljYXRpb25zCi0JCQkJQmVlY2ggSG91c2UsIEdyZWVuaGlsbHMgUm9hZAotCQkJCUR1YmxpbiAyNAotCQkJCUlSRUxBTkQKLQotMDAtOTAtN0UgICAoaGV4KQkJVkVUUk9OSVggQ09SUC4KLTAwOTA3RSAgICAgKGJhc2UgMTYpCQlWRVRST05JWCBDT1JQLgotCQkJCTIwMzAgQUxBTUVERSBQQURSRSBTRVJSQQotCQkJCVNBTlRBIEJBUkJBUkEgQ0EgOTMxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTdGICAgKGhleCkJCVdhdGNoR3VhcmQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDkwN0YgICAgIChiYXNlIDE2KQkJV2F0Y2hHdWFyZCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk1MDUgRmlmdGggQXZlIFNvdXRoCi0JCQkJU3VpdGUgNTAwCi0JCQkJU2VhdHRsZSBXQSA5ODEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtODAgICAoaGV4KQkJTk9UIExJTUlURUQsIElOQy4KLTAwOTA4MCAgICAgKGJhc2UgMTYpCQlOT1QgTElNSVRFRCwgSU5DLgotCQkJCTUwMCBBTExFUlRPTiBTVFJFRVQsIFNURSAjMTAyCi0JCQkJUkVEV09PRCBDSVRZIENBIDk0MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC04MSAgIChoZXgpCQlBTE9IQSBORVRXT1JLUywgSU5DLgotMDA5MDgxICAgICAoYmFzZSAxNikJCUFMT0hBIE5FVFdPUktTLCBJTkMuCi0JCQkJMTAwMUEgTydSRUlMTFkgQVZFTlVFCi0JCQkJUC5PLiBCT1ggMjk0NzIKLQkJCQlTQU4gRlJBTkNJU0NPIENBIDk0MTI5LTA0NzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTgyICAgKGhleCkJCUZPUkNFIElOU1RJVFVURQotMDA5MDgyICAgICAoYmFzZSAxNikJCUZPUkNFIElOU1RJVFVURQotCQkJCVBBUksgQUxMRSAzNDUKLQkJCQlESy0yNjA1IEJST0VOREJZICAKLQkJCQlERU5NQVJLCi0KLTAwLTkwLTgzICAgKGhleCkJCVRVUkJPIENPTU1VTklDQVRJT04sIElOQy4KLTAwOTA4MyAgICAgKGJhc2UgMTYpCQlUVVJCTyBDT01NVU5JQ0FUSU9OLCBJTkMuCi0JCQkJNEYtMiwgTk8uIDE3MSwgU1VORy1URUggUk9BRAotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC04NCAgIChoZXgpCQlBVEVDSCBTWVNURU0KLTAwOTA4NCAgICAgKGJhc2UgMTYpCQlBVEVDSCBTWVNURU0KLQkJCQk0RiBEQUVCT09ORyBCTERHLiAxNDUxLTc4Ci0JCQkJU0VPQ0hPLURPTkcgU0VPQ0hPLUtVCi0JCQkJIFNFT1VMICAxMzctMDcwICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtOTAtODUgICAoaGV4KQkJR09MREVOIEVOVEVSUFJJU0VTLCBJTkMuCi0wMDkwODUgICAgIChiYXNlIDE2KQkJR09MREVOIEVOVEVSUFJJU0VTLCBJTkMuCi0JCQkJNDQ1MCBXRVNUIEVBVSBHQUxMSUUgQkxWRC4KLQkJCQkyNTAgUEVSSU1FVEVSIENFTlRFUgotCQkJCU1FTEJPVVJORSBGTCAzMjkzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtODYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MDg2ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLiAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtODcgICAoaGV4KQkJSVRJUwotMDA5MDg3ICAgICAoYmFzZSAxNikJCUlUSVMKLQkJCQlDRU5UUkUgRVNQQUNFIFBFUkZPUk1BTkNFCi0JCQkJQUxQSEFTSVMtQkFUSU1FTlQgQzEKLQkJCQkzNTc2OSBTQUlOVC1HUkVHT0lSRSBDRURFWCAgCi0JCQkJRlJBTkNFCi0KLTAwLTkwLTg4ICAgKGhleCkJCUJBWEFMTCBTRUNVUklUWSBMVEQuCi0wMDkwODggICAgIChiYXNlIDE2KQkJQkFYQUxMIFNFQ1VSSVRZIExURC4KLQkJCQlVTklUIDEgQ0FTVExFSElMTAotCQkJCUhPUlNFRklFTEQgV0FZLCBCUkVEQlVSWSBQQVJLIElORC4gRXN0YXQKLQkJCQlTVE9DS1BPUlQgR3JlYXQgQnJpdGFpbiBTSzYgMlNWIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLTg5ICAgKGhleCkJCVNPRlRDT00gTUlDUk9TWVNURU1TLCBJTkMuCi0wMDkwODkgICAgIChiYXNlIDE2KQkJU09GVENPTSBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQk0NzUwOSBTRUFCUklER0UgRFJJVkUKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC04QSAgIChoZXgpCQlCQVlMWSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA5MDhBICAgICAoYmFzZSAxNikJCUJBWUxZIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTA1IEdSRUVOIENPVVJUCi0JCQkJQUpBWCBPbnRhcmlvICBMMVMgNlc5IAotCQkJCUNBTkFEQQotCi0wMC05MC04QiAgIChoZXgpCQlQRlUgU3lzdGVtcywgSW5jLgotMDA5MDhCICAgICAoYmFzZSAxNikJCVBGVSBTeXN0ZW1zLCBJbmMuCi0JCQkJMjYwMCBGZXJuYnJvb2sgTGFuZQotCQkJCVN1aXRlIDEzMAotCQkJCVBseW1vdXRoIE1OIDU1NDQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC04QyAgIChoZXgpCQlFVFJFTkQgRUxFQ1RST05JQ1MsIElOQy4KLTAwOTA4QyAgICAgKGJhc2UgMTYpCQlFVFJFTkQgRUxFQ1RST05JQ1MsIElOQy4KLQkJCQkyRiwgMjIgSU5EVVNUUlkgRS4gOVRIIFJPQUQKLQkJCQlIU0lOQ0hVIFNDSUVOQ0UgUEFSSwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtOEQgICAoaGV4KQkJVklDS0VSUyBFTEVDVFJPTklDUyBTWVNURU1TCi0wMDkwOEQgICAgIChiYXNlIDE2KQkJVklDS0VSUyBFTEVDVFJPTklDUyBTWVNURU1TCi0JCQkJMTE1MSBXLiBNQVNPTi1NT1JST1cgUkQuCi0JCQkJTEVCQU5PTiBPSCA0NTAzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOEUgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzIEJyb2FkYmFuZCBBY2Nlc3MKLTAwOTA4RSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MgQnJvYWRiYW5kIEFjY2VzcwotCQkJCTM5NjYwIEV1cmVrYSBEcml2ZQotCQkJCU5ld2FyayBDQSA5NDU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOEYgICAoaGV4KQkJQVVESU8gQ09ERVMgTFRELgotMDA5MDhGICAgICAoYmFzZSAxNikJCUFVRElPIENPREVTIExURC4KLQkJCQkzQSBORVRBTllBSFUgU1RSRUVUCi0JCQkJT1IgWUVIVURBIDYwMjU2ICAKLQkJCQlJU1JBRUwKLQotMDAtOTAtOTAgICAoaGV4KQkJSS1CVVMKLTAwOTA5MCAgICAgKGJhc2UgMTYpCQlJLUJVUwotCQkJCTkxNzQgU0tZIFBBUksgQ09VUlQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTkxICAgKGhleCkJCURpZ2l0YWxTY2FwZSwgSW5jLgotMDA5MDkxICAgICAoYmFzZSAxNikJCURpZ2l0YWxTY2FwZSwgSW5jLgotCQkJCTYgTU9SR0FOICAtIFNURS4jMTAwCi0JCQkJSVJWSU5FIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC05MiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwOTIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlNL1MgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC05MyAgIChoZXgpCQlOQU5BTyBDT1JQT1JBVElPTgotMDA5MDkzICAgICAoYmFzZSAxNikJCU5BTkFPIENPUlBPUkFUSU9OCi0JCQkJMTUzIFNISU1PS0FTSElXQU5PLCBNQVRUTwotCQkJCUlTSElLQVdBIDkyNC04NTY2ICAKLQkJCQlKQVBBTgotCi0wMC05MC05NCAgIChoZXgpCQlPU1BSRVkgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDkwOTQgICAgIChiYXNlIDE2KQkJT1NQUkVZIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTYwMCBBSVJQT1JUIEJMVkQuIC0gU1RFLiAjOTAwCi0JCQkJTU9SUklTVklMTEUgTkMgMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTk1ICAgKGhleCkJCVVOSVZFUlNBTCBBVklPTklDUwotMDA5MDk1ICAgICAoYmFzZSAxNikJCVVOSVZFUlNBTCBBVklPTklDUwotCQkJCTExMzUxIFdJTExPV1MgUk9BRCBORQotCQkJCVJFRE1PTkQgV0EgOTgwNTItMjU1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOTYgICAoaGV4KQkJQVNLRVkgQ09NUFVURVIgQ09SUC4KLTAwOTA5NiAgICAgKGJhc2UgMTYpCQlBU0tFWSBDT01QVVRFUiBDT1JQLgotCQkJCTJGLCBOTy4gMiwgTEFORSA0OTcKLQkJCQlDSFVORy1DSEVORyBSRC4sIEhTSU4tVElFTgotCQkJCVRBSVBFSSAgMjMxMzYgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtOTcgICAoaGV4KQkJU3ljYW1vcmUgTmV0d29ya3MKLTAwOTA5NyAgICAgKGJhc2UgMTYpCQlTeWNhbW9yZSBOZXR3b3JrcwotCQkJCTIyMCBNaWxsIFJkCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOTggICAoaGV4KQkJU0JDIERFU0lHTlMsIElOQy4KLTAwOTA5OCAgICAgKGJhc2UgMTYpCQlTQkMgREVTSUdOUywgSU5DLgotCQkJCTMwNzctSCBMRUVNQU4gRkVSUlkgUk9BRAotCQkJCUhVTlRTVklMTEUgQUwgMzU4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTk5ICAgKGhleCkJCUFMTElFRCBURUxFU0lTLCBLLksuCi0wMDkwOTkgICAgIChiYXNlIDE2KQkJQUxMSUVEIFRFTEVTSVMsIEsuSy4KLQkJCQlOTy4gMiAgVE9DIEJVSUxESU5HLCA3LTIxLTExTmlzaGktR290YW5kCi0JCQkJU2hpbmFnYXdhLUt1IFRva3lvIDE0MSAKLQkJCQlKQVBBTgotCi0wMC05MC05QSAgIChoZXgpCQlPTkUgV09STEQgU1lTVEVNUywgSU5DLgotMDA5MDlBICAgICAoYmFzZSAxNikJCU9ORSBXT1JMRCBTWVNURU1TLCBJTkMuCi0JCQkJMTE0NCBFQVNUIEFSUVVFUyBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTlCICAgKGhleCkJCUlNQUpFCi0wMDkwOUIgICAgIChiYXNlIDE2KQkJSU1BSkUKLQkJCQlHb3RhdmVya3NnYXRhbiA2QQotCQkJCUdvdGhlbmJ1cmcgIDQxNyA1NQotCQkJCVNXRURFTgotCi0wMC05MC05QyAgIChoZXgpCQlNb3Rvcm9sYSwgSW5jLgotMDA5MDlDICAgICAoYmFzZSAxNikJCU1vdG9yb2xhLCBJbmMuCi0JCQkJMjQ1MCBXYWxzaCBBdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOUQgICAoaGV4KQkJTm92YVRlY2ggUHJvY2VzcyBTb2x1dGlvbnMsIExMQwotMDA5MDlEICAgICAoYmFzZSAxNikJCU5vdmFUZWNoIFByb2Nlc3MgU29sdXRpb25zLCBMTEMKLQkJCQkxMTUwMCBDcm9ucmlkZ2UgRHJpdmUKLQkJCQlTdWl0ZSAxMTAKLQkJCQlPd2luZ3MgTWlsbHMgTUQgMjExMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTlFICAgKGhleCkJCUNyaXRpY2FsIElPLCBMTEMKLTAwOTA5RSAgICAgKGJhc2UgMTYpCQlDcml0aWNhbCBJTywgTExDCi0JCQkJNDg1IEUuIDE3dGggU3RyZWV0Ci0JCQkJU3VpdGUgMjAxMAotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTlGICAgKGhleCkJCURJR0ktREFUQSBDT1JQT1JBVElPTgotMDA5MDlGICAgICAoYmFzZSAxNikJCURJR0ktREFUQSBDT1JQT1JBVElPTgotCQkJCTg5MjAtRCBSb3V0ZSAxMDgKLQkJCQlDb2x1bWJpYSBNRCAyMTA0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQTAgICAoaGV4KQkJOFg4IElOQy4KLTAwOTBBMCAgICAgKGJhc2UgMTYpCQk4WDggSU5DLgotCQkJCTI0NDUgTUlTU0lPTiBDT0xMRUdFIEJMVkQuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUExICAgKGhleCkJCUZseWluZyBQaWcgU3lzdGVtcy9IaWdoIEVuZCBTeXN0ZW1zIEluYy4KLTAwOTBBMSAgICAgKGJhc2UgMTYpCQlGbHlpbmcgUGlnIFN5c3RlbXMvSGlnaCBFbmQgU3lzdGVtcyBJbmMuCi0JCQkJMjEwNSBHcmFjeSBGYXJtcyBMYW5lCi0JCQkJQXVzdGluIFRYIDc4NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1BMiAgIChoZXgpCQlDWUJFUlRBTiBURUNITk9MT0dZLCBJTkMuCi0wMDkwQTIgICAgIChiYXNlIDE2KQkJQ1lCRVJUQU4gVEVDSE5PTE9HWSwgSU5DLgotCQkJCUJMREcuNTMsIDE5NS01NiBTRUMuIDQsCi0JCQkJQ0hVTkcgSFNJTkcgUk9BRCwKLQkJCQlDSFVUVU5HIEhTSU5DSFUgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1BMyAgIChoZXgpCQlDb3JlY2VzcyBJbmMuCi0wMDkwQTMgICAgIChiYXNlIDE2KQkJQ29yZWNlc3MgSW5jLgotCQkJCTEzNS03MjYsIEtlb3B5dW5nIEItVG93biAxRiwgMjAzLCBOb25oeXUKLQkJCQlLYW5nbmFtLWd1LAotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtOTAtQTQgICAoaGV4KQkJQUxUSUdBIE5FVFdPUktTCi0wMDkwQTQgICAgIChiYXNlIDE2KQkJQUxUSUdBIE5FVFdPUktTCi0JCQkJMTI0IEdST1ZFIFNUUkVFVAotCQkJCUZSQU5LTElOIE1BIDAyMDM4LTMyMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUE1ICAgKGhleCkJCVNQRUNUUkEgTE9HSUMKLTAwOTBBNSAgICAgKGJhc2UgMTYpCQlTUEVDVFJBIExPR0lDCi0JCQkJMTcwMCBOLiA1NVRIIFNUUkVFVAotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUE2ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTBBNiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4gLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUE3ICAgKGhleCkJCUNMSUVOVEVDIENPUlBPUkFUSU9OCi0wMDkwQTcgICAgIChiYXNlIDE2KQkJQ0xJRU5URUMgQ09SUE9SQVRJT04KLQkJCQk4MTc1IFMuIFZJUkdJTklBIFNULgotCQkJCVNVSVRFICM4NTAtMjQ5Ci0JCQkJUkVOTyBOViA4OTUxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQTggICAoaGV4KQkJTmluZVRpbGVzIE5ldHdvcmtzLCBMdGQuCi0wMDkwQTggICAgIChiYXNlIDE2KQkJTmluZVRpbGVzIE5ldHdvcmtzLCBMdGQuCi0JCQkJOSBTdGF0aW9uIFJvYWQKLQkJCQlXYXRlcmJlYWNoIENhbWJyaWRnZSBDQjUgOUhUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtQTkgICAoaGV4KQkJV0VTVEVSTiBESUdJVEFMCi0wMDkwQTkgICAgIChiYXNlIDE2KQkJV0VTVEVSTiBESUdJVEFMCi0JCQkJMTU5OSBOT1JUSCBCUk9BRFdBWQotCQkJCVJPQ0hFU1RFUiBNTiA1NTkwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQUEgICAoaGV4KQkJSU5ESUdPIEFDVElWRSBWSVNJT04gU1lTVEVNUyBMSU1JVEVECi0wMDkwQUEgICAgIChiYXNlIDE2KQkJSU5ESUdPIEFDVElWRSBWSVNJT04gU1lTVEVNUyBMSU1JVEVECi0JCQkJVEhFIEVESU5CVVJHSCBURUNITk9QT0xFCi0JCQkJQkFTSCBMT0FOCi0JCQkJRWRpbmJ1cmdoIEVIMjYgT1BKICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC05MC1BQiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwQUIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUgICBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUFDICAgKGhleCkJCU9QVElWSVNJT04sIElOQy4KLTAwOTBBQyAgICAgKGJhc2UgMTYpCQlPUFRJVklTSU9OLCBJTkMuCi0JCQkJMzQ1MCBISUxMVklFVyBBVkVOVUUKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUFEICAgKGhleCkJCUFTUEVDVCBFTEVDVFJPTklDUywgSU5DLgotMDA5MEFEICAgICAoYmFzZSAxNikJCUFTUEVDVCBFTEVDVFJPTklDUywgSU5DLgotCQkJCTEyNzQwIEVBUkhBUlQgQVZFLgotCQkJCUFVQlVSTiBDQSA5NTYwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQUUgICAoaGV4KQkJSVRBTFRFTCBTLnAuQS4KLTAwOTBBRSAgICAgKGJhc2UgMTYpCQlJVEFMVEVMIFMucC5BLgotCQkJCUxPQ0FMSVRBJyBCT1NDSEVUVE8KLQkJCQk2NzEwMCBMJ0FRVUlMQSAgCi0JCQkJSVRBTFkKLQotMDAtOTAtQUYgICAoaGV4KQkJSi4gTU9SSVRBIE1GRy4gQ09SUC4KLTAwOTBBRiAgICAgKGJhc2UgMTYpCQlKLiBNT1JJVEEgTUZHLiBDT1JQLgotCQkJCTY4MCBISUdBU0hJSEFNQSBNSU5BTUktQ0hPCi0JCQkJRlVTSElNSS1LVSwgS1lPVE8gNjEyLTgyMTMgCi0JCQkJSkFQQU4KLQotMDAtOTAtQjAgICAoaGV4KQkJVkFERU0KLTAwOTBCMCAgICAgKGJhc2UgMTYpCQlWQURFTQotCQkJCTE5NjAgWkFOS0VSIFJECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUIxICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTBCMSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4gLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUIyICAgKGhleCkJCUFWSUNJIFNZU1RFTVMgSU5DLgotMDA5MEIyICAgICAoYmFzZSAxNikJCUFWSUNJIFNZU1RFTVMgSU5DLgotCQkJCTEyIEVMSVpBQkVUSCBEUklWRQotCQkJCUNIRUxNU0ZPUkQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUIzICAgKGhleCkJCUFHUkFOQVQgU1lTVEVNUwotMDA5MEIzICAgICAoYmFzZSAxNikJCUFHUkFOQVQgU1lTVEVNUwotCQkJCTEzNDUgTUFJTiBTVFJFRVQKLQkJCQlXQUxUSEFNIE1BIDAyMTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1CNCAgIChoZXgpCQlXSUxMT1dCUk9PSyBURUNITk9MT0dJRVMKLTAwOTBCNCAgICAgKGJhc2UgMTYpCQlXSUxMT1dCUk9PSyBURUNITk9MT0dJRVMKLQkJCQk3MTIwIEhBWVZFTkhVUlNUIEFWRS4tU1RFLiM0MDEKLQkJCQlWQU4gTlVZUyBDQSA5MTQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQjUgICAoaGV4KQkJTklLT04gQ09SUE9SQVRJT04KLTAwOTBCNSAgICAgKGJhc2UgMTYpCQlOSUtPTiBDT1JQT1JBVElPTgotCQkJCUVsZWN0cm9uaWMgSW1hZ2luZyBEaXZpc2lvbiwgRGVzaWduaW5nIEQKLQkJCQkxLTYtMywgTklTSEktT0hJLCBTSElOQUdBV0EtS1UKLQkJCQlUT0tZTyAxNDAtODYwMSAgCi0JCQkJSkFQQU4KLQotMDAtOTAtQjYgICAoaGV4KQkJRklCRVggU1lTVEVNUwotMDA5MEI2ICAgICAoYmFzZSAxNikJCUZJQkVYIFNZU1RFTVMKLQkJCQk1MzUwIE9MRCBSRURXT09EIEhJR0hXQVkKLQkJCQlQRVRBTFVNQSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQjcgICAoaGV4KQkJRElHSVRBTCBMSUdIVFdBVkUsIElOQy4KLTAwOTBCNyAgICAgKGJhc2UgMTYpCQlESUdJVEFMIExJR0hUV0FWRSwgSU5DLgotCQkJCTYwMSBDTEVWRUxBTkQgU1RSRUVULSA1VEggRkwuCi0JCQkJQ0xFQVJXQVRFUiBGTCAzMzc1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQjggICAoaGV4KQkJUk9IREUgJiBTQ0hXQVJaIEdNQkggJiBDTy4gS0cKLTAwOTBCOCAgICAgKGJhc2UgMTYpCQlST0hERSAmIFNDSFdBUlogR01CSCAmIENPLiBLRwotCQkJCVBPU1RGQUNIOiA4MCAxNCA2OS9BQlQuOiAzQ0sKLQkJCQlELTgxNjE0IE1VTkNIRU4gIAotCQkJCUdFUk1BTlkKLQotMDAtOTAtQjkgICAoaGV4KQkJQkVSQU4gSU5TVFJVTUVOVFMgTFRELgotMDA5MEI5ICAgICAoYmFzZSAxNikJCUJFUkFOIElOU1RSVU1FTlRTIExURC4KLQkJCQlIQVRDSE1PT1IgSU5EVVNUUklBTCBFU1RBVEUKLQkJCQlUT1JSSU5HVE9OCi0JCQkJTiBERVZPTiBFWDM4IDdIUCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtQkEgICAoaGV4KQkJVkFMSUQgTkVUV09SS1MsIElOQy4KLTAwOTBCQSAgICAgKGJhc2UgMTYpCQlWQUxJRCBORVRXT1JLUywgSU5DLgotCQkJCTYgQ1JPTVdFTEwgIzEwMgotCQkJCUlSVklORSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQkIgICAoaGV4KQkJVEFJTkVUIENPTU1VTklDQVRJT04gU1lTVEVNIENvcnAuCi0wMDkwQkIgICAgIChiYXNlIDE2KQkJVEFJTkVUIENPTU1VTklDQVRJT04gU1lTVEVNIENvcnAuCi0JCQkJMyBGTCwgTk8uIDYsIEFMTEVZIDIzLCBMQU5FIDkxIFNFQy4gMQotCQkJCU5laS1IdSBSb2FkCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLUJDICAgKGhleCkJCVRFTEVNQU5OIENPLiwgTFRELgotMDA5MEJDICAgICAoYmFzZSAxNikJCVRFTEVNQU5OIENPLiwgTFRELgotCQkJCTZGIERPTkdTSU4gQkxERy4KLQkJCQk1NDMsIERPR09LLURPTkcsIEtBTkdOQU0tS1UKLQkJCQlTRU9VTCwgMTM1LTI3MCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTkwLUJEICAgKGhleCkJCU9NTklBIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDkwQkQgICAgIChiYXNlIDE2KQkJT01OSUEgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMDAgTklDS0VSU09OIFJPQUQKLQkJCQlNQVJMQk9ST1VHSCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQkUgICAoaGV4KQkJSUJDL0lOVEVHUkFURUQgQlVTSU5FU1MgQ09NUFVURVJTCi0wMDkwQkUgICAgIChiYXNlIDE2KQkJSUJDL0lOVEVHUkFURUQgQlVTSU5FU1MgQ09NUFVURVJTCi0JCQkJMjY4NSBDIFBBUksgQ0VOVEVSIERSSVZFCi0JCQkJU0lNSSBWQUxMRVkgQ0EgOTMwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUJGICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTBCRiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRSAgIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQzAgICAoaGV4KQkJSy5KLiBMQVcgRU5HSU5FRVJTLCBJTkMuCi0wMDkwQzAgICAgIChiYXNlIDE2KQkJSy5KLiBMQVcgRU5HSU5FRVJTLCBJTkMuCi0JCQkJNDIzMDAgVy4gTklORSBNSUxFIFJPQUQKLQkJCQlOT1ZJIE1JIDQ4Mzc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1DMSAgIChoZXgpCQlQZWNvIElJLCBJbmMuCi0wMDkwQzEgICAgIChiYXNlIDE2KQkJUGVjbyBJSSwgSW5jLgotCQkJCTcwNjAgSHVudGxleSBSb2FkCi0JCQkJQ29sdW1idXMgT0ggNDMyMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUMyICAgKGhleCkJCUpLIG1pY3Jvc3lzdGVtcywgSW5jLgotMDA5MEMyICAgICAoYmFzZSAxNikJCUpLIG1pY3Jvc3lzdGVtcywgSW5jLgotCQkJCTEyNzUgWVVCQSBBVkVOVUUKLQkJCQlTQU4gUEFCTE8gQ0EgOTQ4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUMzICAgKGhleCkJCVRPUElDIFNFTUlDT05EVUNUT1IgQ09SUC4KLTAwOTBDMyAgICAgKGJhc2UgMTYpCQlUT1BJQyBTRU1JQ09ORFVDVE9SIENPUlAuCi0JCQkJMTFGLTEsIE5PLiAyLCBXVS1MSU4gUkQuCi0JCQkJSFNJTi1DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtQzQgICAoaGV4KQkJSkFWRUxJTiBTWVNURU1TLCBJTkMuCi0wMDkwQzQgICAgIChiYXNlIDE2KQkJSkFWRUxJTiBTWVNURU1TLCBJTkMuCi0JCQkJMTg4MSBMQU5HTEVZIEFWRS4KLQkJCQlJUlZJTkUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUM1ICAgKGhleCkJCUlOVEVSTkVUIE1BR0lDLCBJTkMuCi0wMDkwQzUgICAgIChiYXNlIDE2KQkJSU5URVJORVQgTUFHSUMsIElOQy4KLQkJCQk2NDUwIExVU0sgQkxWRC4tU1RFLiAjRS0yMDEKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUM2ICAgKGhleCkJCU9QVElNIFNZU1RFTVMsIElOQy4KLTAwOTBDNiAgICAgKGJhc2UgMTYpCQlPUFRJTSBTWVNURU1TLCBJTkMuCi0JCQkJODIwMSBHUkVFTlNCT1JPIERSLi1TVEUuICMxMDAwCi0JCQkJTUNMRUFOIFZBIDIyMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1DNyAgIChoZXgpCQlJQ09NIElOQy4KLTAwOTBDNyAgICAgKGJhc2UgMTYpCQlJQ09NIElOQy4KLQkJCQk2LTktMTYgS0FNSUhJR0FTSEkKLQkJCQlISVJBTk8tS1UsIE9TQUtBICAKLQkJCQlKQVBBTgotCi0wMC05MC1DOCAgIChoZXgpCQlXQVZFUklERVIgQ09NTVVOSUNBVElPTlMgKENBTkFEQSkgSU5DLgotMDA5MEM4ICAgICAoYmFzZSAxNikJCVdBVkVSSURFUiBDT01NVU5JQ0FUSU9OUyAoQ0FOQURBKSBJTkMuCi0JCQkJCi0JCQkJQnJpdGlzaCBDb2x1bWJpYSBWMUUgNFI5IAotCQkJCUNBTkFEQQotCi0wMC05MC1DOSAgIChoZXgpCQlEUEFDIFRlY2hub2xvZ2llcwotMDA5MEM5ICAgICAoYmFzZSAxNikJCURQQUMgVGVjaG5vbG9naWVzCi0JCQkJNzMyMSBMaW5jb2xuIFdheQotCQkJCUdhcmRlbiBHcm92ZSBDQSA5Mjg0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQ0EgICAoaGV4KQkJQUNDT1JEIFZJREVPIFRFTEVDT01NVU5JQ0FUSU9OUywgTFRELgotMDA5MENBICAgICAoYmFzZSAxNikJCUFDQ09SRCBWSURFTyBURUxFQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQkxMCwgTUFSVElOIEdFSEwgU1RSLCBQTyBCT1ggMzU2NAotCQkJCVBldGFjaC1UaWt2YSA0OTEzMCAgCi0JCQkJSVNSQUVMCi0KLTAwLTkwLUNCICAgKGhleCkJCVdpcmVsZXNzIE9uTGluZSwgSW5jLgotMDA5MENCICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIE9uTGluZSwgSW5jLgotCQkJCTQ0MTAgRUwgQ0FNSU5PIFJFQUwsICBTVEUgIzEwMQotCQkJCUxPUyBBTFRPUyBDQSA5NDAyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQ0MgICAoaGV4KQkJUGxhbmV4IENvbW11bmljYXRpb25zCi0wMDkwQ0MgICAgIChiYXNlIDE2KQkJUGxhbmV4IENvbW11bmljYXRpb25zCi0JCQkJMkYgRkVOSVNTQVkgRWJpc3UgQmxkZwotCQkJCTMtMTYtMyBIaWdhc2hpLAotCQkJCVNoaWJ1eWEta3UsIFRva3lvIDE1MC0wMDExCi0JCQkJSkFQQU4KLQotMDAtOTAtQ0QgICAoaGV4KQkJRU5ULUVNUFJFU0EgTkFDSU9OQUwgREUgVEVMRUNPTU1VTklDQUNPRVMsIFMuQS4KLTAwOTBDRCAgICAgKGJhc2UgMTYpCQlFTlQtRU1QUkVTQSBOQUNJT05BTCBERSBURUxFQ09NTVVOSUNBQ09FUywgUy5BLgotCQkJCVIuIEVORyBGUkVERVJJQ08gVUxSSUNIIC0gIEFQQVJUQURPIDMwODEKLQkJCQlHdWFyZGVpcmFzIC0gNDQ3MCBNb3JlaXJhIE1haWEgIAotCQkJCVBPUlRVR0FMCi0KLTAwLTkwLUNFICAgKGhleCkJCVRFVFJBIEdtYkgKLTAwOTBDRSAgICAgKGJhc2UgMTYpCQlURVRSQSBHbWJICi0JCQkJR0VXRVJCRVBBUksgIkFtV2FsZCIgNAotCQkJCUQtOTg2OTMgSUxNRU5BVSAgCi0JCQkJR0VSTUFOWQotCi0wMC05MC1DRiAgIChoZXgpCQlOT1JURUwKLTAwOTBDRiAgICAgKGJhc2UgMTYpCQlOT1JURUwKLQkJCQkyNTAgU0lETkVZIFNUUkVFVAotCQkJCUJlbGxldmlsbGUgT250YXJpbyBLOE4gNUI3IAotCQkJCUNBTkFEQQotCi0wMC05MC1EMCAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDA5MEQwICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NwotCQkJCUItMjY1MCBFREVHRU0gIAotCQkJCUJFTEdJVU0KLQotMDAtOTAtRDEgICAoaGV4KQkJTEVJQ0hVIEVOVEVSUFJJU0UgQ08uLCBMVEQuCi0wMDkwRDEgICAgIChiYXNlIDE2KQkJTEVJQ0hVIEVOVEVSUFJJU0UgQ08uLCBMVEQuCi0JCQkJOEYsIE5PLiAyMDMsIFBBLVRFSCBST0FELCBTRUMuMgotCQkJCVRBSVBFSSBDSVRZCi0JCQkJVEFJV0FOIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtRDIgICAoaGV4KQkJQVJURUwgVklERU8gU1lTVEVNUwotMDA5MEQyICAgICAoYmFzZSAxNikJCUFSVEVMIFZJREVPIFNZU1RFTVMKLQkJCQkyMzcgQ0VEQVIgSElMTCBTVC4KLQkJCQlNQVJMQk9STyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRDMgICAoaGV4KQkJR0lFU0VDS0UgJiBERVZSSUVOVCBHbWJICi0wMDkwRDMgICAgIChiYXNlIDE2KQkJR0lFU0VDS0UgJiBERVZSSUVOVCBHbWJICi0JCQkJUFJJTlpSRUdFTlRFTlNUUkFTU0UgMTU5Ci0JCQkJRC04MTY3NyAgTVVOQ0hFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC05MC1ENCAgIChoZXgpCQlCaW5kVmlldyBEZXZlbG9wbWVudCBDb3JwLgotMDA5MEQ0ICAgICAoYmFzZSAxNikJCUJpbmRWaWV3IERldmVsb3BtZW50IENvcnAuCi0JCQkJMzM1NSBXRVNUIEFMQUJBTUEgIzEyMDAKLQkJCQlIT1VTVE9OIFRYIDc3MDk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1ENSAgIChoZXgpCQlFVVBIT05JWCwgSU5DLgotMDA5MEQ1ICAgICAoYmFzZSAxNikJCUVVUEhPTklYLCBJTkMuCi0JCQkJMjIwIFBPUlRBR0UgQVZFLgotCQkJCVBBTE8gQUxUTyBDQSA5NDMwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRDYgICAoaGV4KQkJQ1JZU1RBTCBHUk9VUAotMDA5MEQ2ICAgICAoYmFzZSAxNikJCUNSWVNUQUwgR1JPVVAKLQkJCQk4NTAgS0FDRU5BIFJELgotCQkJCUhJQVdBVEhBIElBIDUyMjMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1ENyAgIChoZXgpCQlOZXRCb29zdCBDb3JwLgotMDA5MEQ3ICAgICAoYmFzZSAxNikJCU5ldEJvb3N0IENvcnAuCi0JCQkJMzkwIENBTUJSSURHRSBBVkVOVUUKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDYtMTUwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRDggICAoaGV4KQkJV0hJVEVDUk9TUyBTWVNURU1TCi0wMDkwRDggICAgIChiYXNlIDE2KQkJV0hJVEVDUk9TUyBTWVNURU1TCi0JCQkJM0EgV0FURVJTSURFIFBBUkssIENPT0tIQU0gUkQKLQkJCQlCUkFDS05FTEwKLQkJCQlCRVJLU0hJUkUgUkcxMiAxUkIgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLUQ5ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTBEOSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCU0vUy8gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1EQSAgIChoZXgpCQlEWU5BUkMsIElOQy4KLTAwOTBEQSAgICAgKGJhc2UgMTYpCQlEWU5BUkMsIElOQy4KLQkJCQkxODg3IExBTkRJTkdTIERSSVZFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtREIgICAoaGV4KQkJTkVYVCBMRVZFTCBDT01NVU5JQ0FUSU9OUwotMDA5MERCICAgICAoYmFzZSAxNikJCU5FWFQgTEVWRUwgQ09NTVVOSUNBVElPTlMKLQkJCQk2MDg1IFNUQVRFIEZBUk0gRFJJVkUKLQkJCQlST0hORVJUIFBBUksgQ0EgOTQ5MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLURDICAgKGhleCkJCVRFQ08gSU5GT1JNQVRJT04gU1lTVEVNUwotMDA5MERDICAgICAoYmFzZSAxNikJCVRFQ08gSU5GT1JNQVRJT04gU1lTVEVNUwotCQkJCUNPLiwgTFRELgotCQkJCTI4NDEgSlVOQ1RJT04gQVZFLiwgU1RFLiAjMTE2Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUREICAgKGhleCkJCVRIRSBNSUhBUlUgQ09NTVVOSUNBVElPTlMgQ08uLCBMVEQuCi0wMDkwREQgICAgIChiYXNlIDE2KQkJVEhFIE1JSEFSVSBDT01NVU5JQ0FUSU9OUyBDTy4sIExURC4KLQkJCQkKLQkJCQkxMjg1LCBJV0FTRSwgS0FNQUtVUkEtQ0lUWQotCQkJCUtBTkFHQVdBICAKLQkJCQlKQVBBTgotCi0wMC05MC1ERSAgIChoZXgpCQlDQVJES0VZIFNZU1RFTVMsIElOQy4KLTAwOTBERSAgICAgKGJhc2UgMTYpCQlDQVJES0VZIFNZU1RFTVMsIElOQy4KLQkJCQkxNzU3IFRBUE8gQ0FOWU9OIFJPQUQKLQkJCQlTSU1JIFZBTExFWSBDQSA5MzA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtREYgICAoaGV4KQkJTUlUU1VCSVNISSBDSEVNSUNBTCBBTUVSSUNBLCBJTkMuCi0wMDkwREYgICAgIChiYXNlIDE2KQkJTUlUU1VCSVNISSBDSEVNSUNBTCBBTUVSSUNBLCBJTkMuCi0JCQkJNDQ1IElORElPIFdBWQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRTAgICAoaGV4KQkJU1lTVFJBTiBDT1JQLgotMDA5MEUwICAgICAoYmFzZSAxNikJCVNZU1RSQU4gQ09SUC4KLQkJCQk0MTI2IExJTkRFTiBBVkVOVUUKLQkJCQlEQVlUT04gT0ggNDU0MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUUxICAgKGhleCkJCVRFTEVOQSBTLlAuQS4KLTAwOTBFMSAgICAgKGJhc2UgMTYpCQlURUxFTkEgUy5QLkEuCi0JCQkJVklBIFNBVk9OQSwgMTQ2Ci0JCQkJMjAxNDQgTUlMQU5PICAKLQkJCQlJVEFMWQotCi0wMC05MC1FMiAgIChoZXgpCQlESVNUUklCVVRFRCBQUk9DRVNTSU5HIFRFQ0hOT0xPR1kKLTAwOTBFMiAgICAgKGJhc2UgMTYpCQlESVNUUklCVVRFRCBQUk9DRVNTSU5HIFRFQ0hOT0xPR1kKLQkJCQkxNDAgQ0FOREFDRSBEUklWRQotCQkJCU9STEFORE8gRkwgMzI3NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUUzICAgKGhleCkJCUFWRVggRUxFQ1RST05JQ1MgSU5DLgotMDA5MEUzICAgICAoYmFzZSAxNikJCUFWRVggRUxFQ1RST05JQ1MgSU5DLgotCQkJCTQ4MDcgQlJBREZPUkQgRFJJVkUKLQkJCQlIVU5UU1ZJTExFIEFMIDM1ODA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1FNCAgIChoZXgpCQlORUMgQU1FUklDQSwgSU5DLgotMDA5MEU0ICAgICAoYmFzZSAxNikJCU5FQyBBTUVSSUNBLCBJTkMuCi0JCQkJMzEwMCBOLkUuIFNIVVRFIFJPQUQKLQkJCQlISUxMU0JPUk8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUU1ICAgKGhleCkJCVRFS05FTUEsIElOQy4KLTAwOTBFNSAgICAgKGJhc2UgMTYpCQlURUtORU1BLCBJTkMuCi0JCQkJMjY1NiBFLiBCQVlTSE9SRSBST0FECi0JCQkJUEFMTyBBTFRPIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1FNiAgIChoZXgpCQlBTGkgQ29ycG9yYXRpb24KLTAwOTBFNiAgICAgKGJhc2UgMTYpCQlBTGkgQ29ycG9yYXRpb24KLQkJCQk2RiwgMjQ2IE5laUh1IFJvYWQsIFNlYy4gMQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1FNyAgIChoZXgpCQlIT1JTQ0ggRUxFS1RST05JSyBBRwotMDA5MEU3ICAgICAoYmFzZSAxNikJCUhPUlNDSCBFTEVLVFJPTklLIEFHCi0JCQkJSEFBR0VSU1RSQVNTRQotCQkJCVBPU1RGQUNICi0JCQkJQ0gtOTQ3MyBHQU1TICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC05MC1FOCAgIChoZXgpCQlNT1hBIFRFQ0hOT0xPR0lFUyBDT1JQLiwgTFRELgotMDA5MEU4ICAgICAoYmFzZSAxNikJCU1PWEEgVEVDSE5PTE9HSUVTIENPUlAuLCBMVEQuCi0JCQkJN0YsIE5PLiAyLCBBTFk2LCBMTiAyMzUKLQkJCQlQQU8tQ0hJQU8gUkQsCi0JCQkJU0hJRU5HLVRJRU4gQ0lUWSBUQUlQRUkgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1FOSAgIChoZXgpCQlKQU5aIENPTVBVVEVSIEFHCi0wMDkwRTkgICAgIChiYXNlIDE2KQkJSkFOWiBDT01QVVRFUiBBRwotCQkJCUltIERvcmVuZXIgRmVsZCA4Ci0JCQkJRC0zMzEwMCBQYWRlcmJvcm4gCi0JCQkJR0VSTUFOWQotCi0wMC05MC1FQSAgIChoZXgpCQlBTFBIQSBURUNITk9MT0dJRVMsIElOQy4KLTAwOTBFQSAgICAgKGJhc2UgMTYpCQlBTFBIQSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkzNzY3IEFMUEhBIFdBWQotCQkJCUJFTExJTkdIQU0gV0EgOTgyMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUVCICAgKGhleCkJCVNFTlRSWSBURUxFQ09NIFNZU1RFTVMKLTAwOTBFQiAgICAgKGJhc2UgMTYpCQlTRU5UUlkgVEVMRUNPTSBTWVNURU1TCi0JCQkJODY2NCBDT01NRVJDRSBDT1VSVAotCQkJCUJVUk5BQlkgQkMgVjVBIDRONyAKLQkJCQlDQU5BREEKLQotMDAtOTAtRUMgICAoaGV4KQkJUFlSRVNDT00KLTAwOTBFQyAgICAgKGJhc2UgMTYpCQlQWVJFU0NPTQotCQkJCTMgQUxMRUUgRFUgTU9VTElOCi0JCQkJNjY2ODAgQ0FOT0hFUyAgCi0JCQkJRlJBTkNFCi0KLTAwLTkwLUVEICAgKGhleCkJCUNFTlRSQUwgU1lTVEVNIFJFU0VBUkNIIENPLiwgTFRELgotMDA5MEVEICAgICAoYmFzZSAxNikJCUNFTlRSQUwgU1lTVEVNIFJFU0VBUkNIIENPLiwgTFRELgotCQkJCTQtMTMtMiBISVlPU0hJQ0hPCi0JCQkJS09LVUJVTkpJLUNJVFkgVE9LWU8gMTg1MDAwMzIgCi0JCQkJSkFQQU4KLQotMDAtOTAtRUUgICAoaGV4KQkJUEVSU09OQUwgQ09NTVVOSUNBVElPTlMgVEVDSE5PTE9HSUVTCi0wMDkwRUUgICAgIChiYXNlIDE2KQkJUEVSU09OQUwgQ09NTVVOSUNBVElPTlMgVEVDSE5PTE9HSUVTCi0JCQkJNTAgU1RJTEVTIFJPQUQKLQkJCQlTQUxFTSBOSCAwMzA3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRUYgICAoaGV4KQkJSU5URUdSSVgsIElOQy4KLTAwOTBFRiAgICAgKGJhc2UgMTYpCQlJTlRFR1JJWCwgSU5DLgotCQkJCTIwMDEgQ09SUE9SQVRFIENFTlRFUiBEUklWRQotCQkJCU5FV0JVUlkgUEFSSyBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRjAgICAoaGV4KQkJSGFybW9uaWMgVmlkZW8gU3lzdGVtcyBMdGQuCi0wMDkwRjAgICAgIChiYXNlIDE2KQkJSGFybW9uaWMgVmlkZW8gU3lzdGVtcyBMdGQuCi0JCQkJMTkgQUxPTiBIQVRBVk9SIFNUUkVFVAotCQkJCVpvbmUgMywgUE8gQm94IDM2MDAKLQkJCQlDQUVTQVJFQSAgSW5kdXN0cmlhbCBQYXJrICAzODkwMAotCQkJCUlTUkFFTAotCi0wMC05MC1GMSAgIChoZXgpCQlET1QgSElMTCBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDkwRjEgICAgIChiYXNlIDE2KQkJRE9UIEhJTEwgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTYzMDUgRWwgQ2FtaW5vIFJlYWwKLQkJCQlDYXJsc2JhZCBDQSA5MjAwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRjIgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MEYyICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1GMyAgIChoZXgpCQlBU1BFQ1QgQ09NTVVOSUNBVElPTlMKLTAwOTBGMyAgICAgKGJhc2UgMTYpCQlBU1BFQ1QgQ09NTVVOSUNBVElPTlMKLQkJCQkxMzEwIFJpZGRlciBQYXJrIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEtMjMxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRjQgICAoaGV4KQkJTElHSFROSU5HIElOU1RSVU1FTlRBVElPTgotMDA5MEY0ICAgICAoYmFzZSAxNikJCUxJR0hUTklORyBJTlNUUlVNRU5UQVRJT04KLQkJCQlCT1ZFUkVTU0VTIDUwCi0JCQkJMTAxMCBMQVVTQU5ORSAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtOTAtRjUgICAoaGV4KQkJQ0xFVk8gQ08uCi0wMDkwRjUgICAgIChiYXNlIDE2KQkJQ0xFVk8gQ08uCi0JCQkJMzUsIFdVLUdPTiA2VEggUk9BRAotCQkJCVdVLUtVIElORFVTVFJJQUwgUEFSSwotCQkJCVRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1GNiAgIChoZXgpCQlFU0NBTEFURSBORVRXT1JLUywgSU5DLgotMDA5MEY2ICAgICAoYmFzZSAxNikJCUVTQ0FMQVRFIE5FVFdPUktTLCBJTkMuCi0JCQkJNiBIVUdIRVMKLQkJCQlJUlZJTkUgQ0EgOTI2MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUY3ICAgKGhleCkJCU5CQVNFIENPTU1VTklDQVRJT05TIExURC4KLTAwOTBGNyAgICAgKGJhc2UgMTYpCQlOQkFTRSBDT01NVU5JQ0FUSU9OUyBMVEQuCi0JCQkJSU5EVVNUUklBTCBQQVJLCi0JCQkJWU9RTkVBTSBJTElUIFAuTy4gQk9YIDExNAotCQkJCUlTUkFFTAotCi0wMC05MC1GOCAgIChoZXgpCQlNRURJQVRSSVggVEVMRUNPTQotMDA5MEY4ICAgICAoYmFzZSAxNikJCU1FRElBVFJJWCBURUxFQ09NCi0JCQkJNDIyOSBHQVJMT0NLCi0JCQkJU0hFUkJST09LRQotCQkJCVFVRUJFQyBKMUwgMkM4ICAKLQkJCQlDQU5BREEKLQotMDAtOTAtRjkgICAoaGV4KQkJTEVJVENICi0wMDkwRjkgICAgIChiYXNlIDE2KQkJTEVJVENICi0JCQkJMTAgRFlBUyBST0FECi0JCQkJRE9OIE1JTExTCi0JCQkJT05UQVJJTyBNM0IgMVY1ICAKLQkJCQlDQU5BREEKLQotMDAtOTAtRkEgICAoaGV4KQkJRU1VTEVYIENvcnAKLTAwOTBGQSAgICAgKGJhc2UgMTYpCQlFTVVMRVggQ29ycAotCQkJCTMzMzMgU3VzYW4gU3RyZWV0Ci0JCQkJQ29zdGEgTWVzYSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRkIgICAoaGV4KQkJUE9SVFdFTEwsIElOQy4KLTAwOTBGQiAgICAgKGJhc2UgMTYpCQlQT1JUV0VMTCwgSU5DLgotCQkJCTdGLTQsIE5PLiAxNjAsIFNFQy4gNgotCQkJCU1JTkctQ0hVQU5HIEUuIFJELgotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1GQyAgIChoZXgpCQlORVRXT1JLIENPTVBVVElORyBERVZJQ0VTCi0wMDkwRkMgICAgIChiYXNlIDE2KQkJTkVUV09SSyBDT01QVVRJTkcgREVWSUNFUwotCQkJCTMwMSBSQVZFTkRBTEUgRFJJVkUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1GRCAgIChoZXgpCQlDb3BwZXJDb20sIEluYy4KLTAwOTBGRCAgICAgKGJhc2UgMTYpCQlDb3BwZXJDb20sIEluYy4KLQkJCQkzMjU1LTEgU0NPVFQgQkxWRC4sLS1TVEUuIzEwMwotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1GRSAgIChoZXgpCQlFTEVDT00gQ08uLCBMVEQuICAoTEFORUVEIERJVi4pCi0wMDkwRkUgICAgIChiYXNlIDE2KQkJRUxFQ09NIENPLiwgTFRELiAgKExBTkVFRCBESVYuKQotCQkJCVNVTUlUT01PIEZVRE9TQU4KLQkJCQlISUdBU0hJIElLRUJVS1VSTyBCTERHLiA2RiwgMy0xMy0yIEhJR0FTCi0JCQkJVE9TSElNQS1LVSBUT0tZTyAxNzAtMDAxMyAKLQkJCQlKQVBBTgotCi0wMC05MC1GRiAgIChoZXgpCQlURUxMVVMgVEVDSE5PTE9HWSBJTkMuCi0wMDkwRkYgICAgIChiYXNlIDE2KQkJVEVMTFVTIFRFQ0hOT0xPR1kgSU5DLgotCQkJCTQwOTkwIEVOQ1lDTE9QRURJQSBDSVIuCi0JCQkJRlJFTU9OVCBDQSA5NDUzOC0yNDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MS1ENiAgIChoZXgpCQlDcnlzdGFsIEdyb3VwLCBJbmMuCi0wMDkxRDYgICAgIChiYXNlIDE2KQkJQ3J5c3RhbCBHcm91cCwgSW5jLgotCQkJCTg1MCBLYWNlbmEgUmQuCi0JCQkJSGlhd2F0aGEgSUEgNTIyMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkzLTYzICAgKGhleCkJCVVuaS1MaW5rIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDkzNjMgICAgIChiYXNlIDE2KQkJVW5pLUxpbmsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk3LTUsIE5vLjY2LCBTZWMuMiwgTmFuLUthbiBSZC4sIEx1LUNodSBIc2lhbmcsCi0JCQkJVGFveXVhbiAgMzM4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05Ny1GRiAgIChoZXgpCQlIZWltYW5uIFNlbnNvciBHbWJICi0wMDk3RkYgICAgIChiYXNlIDE2KQkJSGVpbWFubiBTZW5zb3IgR21iSAotCQkJCUdyZW56c3RyYXNzZSAyMgotCQkJCURyZXNkZW4gU2FjaHNlbiAwMTEwOQotCQkJCUdFUk1BTlkKLQotMDAtOUQtOEUgICAoaGV4KQkJQ0FSRElBQyBSRUNPUkRFUlMsIElOQy4KLTAwOUQ4RSAgICAgKGJhc2UgMTYpCQlDQVJESUFDIFJFQ09SREVSUywgSU5DLgotCQkJCTM0IFNDQVJCT1JPIFJPQUQKLQkJCQlMT05ET04gIE40IDRMIFUKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLTAwICAgKGhleCkJCUNFTlRJTExJT04gTkVUV09SS1MsIElOQy4KLTAwQTAwMCAgICAgKGJhc2UgMTYpCQlDRU5USUxMSU9OIE5FVFdPUktTLCBJTkMuCi0JCQkJMzU5IFJBVkVOREFMRSBEUklWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTAxICAgKGhleCkJCURSUyBTaWduYWwgU29sdXRpb25zCi0wMEEwMDEgICAgIChiYXNlIDE2KQkJRFJTIFNpZ25hbCBTb2x1dGlvbnMKLQkJCQk3MDAgUXVpbmNlIE9yY2hhcmQgUm9hZAotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg3OC0xNzk0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0wMiAgIChoZXgpCQlMRUVEUyAmIE5PUlRIUlVQIEFVU1RSQUxJQSBQVFkgTFRECi0wMEEwMDIgICAgIChiYXNlIDE2KQkJTEVFRFMgJiBOT1JUSFJVUCBBVVNUUkFMSUEgUFRZIExURAotCQkJCVBPIEJPWCA0MDA5Ci0JCQkJRUlHSFQgTUlMRSBQTEFJTlMgIFFMRCA0MTEzICAKLQkJCQlBVVNUUkFMSUEKLQotMDAtQTAtMDMgICAoaGV4KQkJU2llbWVucyBTd2l0emVybGFuZCBMdGQuLCBJIEIgVCBIVlAKLTAwQTAwMyAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIFN3aXR6ZXJsYW5kIEx0ZC4sIEkgQiBUIEhWUAotCQkJCUJ1aWxkaW5nIFRlY2hub2xvZ2llcyBEaXZpc2lvbiwgSW50ZXJuYXRpb25hbCBIZWFkcXVhcnRlcnMKLQkJCQlJIEJUIEhWUCBTWVMgUkQgRVUgR3ViZWxzdHJhc3NlIDIyCi0JCQkJWnVnICA2MzAxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtQTAtMDQgICAoaGV4KQkJTkVUUE9XRVIsIElOQy4KLTAwQTAwNCAgICAgKGJhc2UgMTYpCQlORVRQT1dFUiwgSU5DLgotCQkJCTU0NSBPQUtNRUFEIFBBUktXQVkKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTA1ICAgKGhleCkJCURBTklFTCBJTlNUUlVNRU5UUywgTFRELgotMDBBMDA1ICAgICAoYmFzZSAxNikJCURBTklFTCBJTlNUUlVNRU5UUywgTFRELgotCQkJCVRST0xMU1RSQVNTRSAzMwotCQkJCUNILTg0MDAgV0lOVEVSVEhVUiAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtQTAtMDYgICAoaGV4KQkJSU1BR0UgREFUQSBQUk9DRVNTSU5HIFNZU1RFTSBHUk9VUAotMDBBMDA2ICAgICAoYmFzZSAxNikJCUlNQUdFIERBVEEgUFJPQ0VTU0lORyBTWVNURU0gR1JPVVAKLQkJCQlTSElOVE9ZT0ZVVEEgMi0xCi0JCQkJS0FTSElXQS1DSVRZLCBDSElCQSAyNzcgIAotCQkJCUpBUEFOCi0KLTAwLUEwLTA3ICAgKGhleCkJCUFQRVhYIFRFQ0hOT0xPR1ksIElOQy4KLTAwQTAwNyAgICAgKGJhc2UgMTYpCQlBUEVYWCBURUNITk9MT0dZLCBJTkMuCi0JCQkJNTA2IFMuIDExVEgKLQkJCQlQTyBCT1ggOTI5MQotCQkJCUJPSVNFIElEIDgzNzA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0wOCAgIChoZXgpCQlORVRDT1JQCi0wMEEwMDggICAgIChiYXNlIDE2KQkJTkVUQ09SUAotCQkJCTggUExBQ0UgT0YgQ09NTUVSQ0UtLVNURSAjMjAwCi0JCQkJQlJPU1NBUkQsIFFVRUJFQwotCQkJCUNBTkFEQSBKNFcgM0gyCi0JCQkJQ0FOQURBCi0KLTAwLUEwLTA5ICAgKGhleCkJCVdISVRFVFJFRSBORVRXT1JLCi0wMEEwMDkgICAgIChiYXNlIDE2KQkJV0hJVEVUUkVFIE5FVFdPUksKLQkJCQlURUNITk9MT0dJRVMsIElOQy4KLQkJCQkzMjAwIEFTSCBTVFJFRVQKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTBBICAgKGhleCkJCUFpcnNwYW4KLTAwQTAwQSAgICAgKGJhc2UgMTYpCQlBaXJzcGFuCi0JCQkJVW5pdHJvbmljcyBCdWlsZGluZywgQXJhdmEgU3RyZWV0LCBBaXJwb3J0IENpdHkKLQkJCQlQT0IgMTk5Ci0JCQkJNzAxMDAKLQkJCQlJU1JBRUwKLQotMDAtQTAtMEIgICAoaGV4KQkJQ09NUFVURVggQ08uLCBMVEQuCi0wMEEwMEIgICAgIChiYXNlIDE2KQkJQ09NUFVURVggQ08uLCBMVEQuCi0JCQkJNDMyLTEzIEdPSllPQkFTSEktSElHQVNISSA0LUNIWU9NRQotCQkJCSBISUdBU0hJWUFNQUtVLCBLWU9UTy1DSVRZIDYwNSAgCi0JCQkJSkFQQU4KLQotMDAtQTAtMEMgICAoaGV4KQkJS0lOR01BWCBURUNITk9MT0dZLCBJTkMuCi0wMEEwMEMgICAgIChiYXNlIDE2KQkJS0lOR01BWCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMkZMLiwgTk8uIDQsIExBTkUgOTAyLCBTRUMuMgotCQkJCUtVQU5HIEZVIFJELiwgSFNJTi1DSFUgQ0lUWQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQTAtMEQgICAoaGV4KQkJVEhFIFBBTkRBIFBST0pFQ1QKLTAwQTAwRCAgICAgKGJhc2UgMTYpCQlUSEUgUEFOREEgUFJPSkVDVAotCQkJCTUyMDEgQ09OR1JFU1MgQVZFLiAtIEMtMTAwCi0JCQkJQk9DQSBSQVRPTiBGTCAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMEUgICAoaGV4KQkJVklTVUFMIE5FVFdPUktTLCBJTkMuCi0wMEEwMEUgICAgIChiYXNlIDE2KQkJVklTVUFMIE5FVFdPUktTLCBJTkMuCi0JCQkJMjA5MiBHQUlUSEVSIFJPQUQtIFNURSAjMjIwCi0JCQkJUk9DS1ZJTExFIE1EIDIwODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0wRiAgIChoZXgpCQlCcm9hZGJhbmQgVGVjaG5vbG9naWVzCi0wMEEwMEYgICAgIChiYXNlIDE2KQkJQnJvYWRiYW5kIFRlY2hub2xvZ2llcwotCQkJCVAuTy4gQm94IDEzNzM3Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyaywgTkMgMjc3MDktMzczNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMTAgICAoaGV4KQkJU1lTTE9HSUMgREFURU5URUNITklLIEFHCi0wMEEwMTAgICAgIChiYXNlIDE2KQkJU1lTTE9HSUMgREFURU5URUNITklLIEFHCi0JCQkJQnJ1Z2dlcnN0cmFzc2UgNjkKLQkJCQlDSC01NDAwIEJhZGVuICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC1BMC0xMSAgIChoZXgpCQlNVVRPSCBJTkRVU1RSSUVTIExURC4KLTAwQTAxMSAgICAgKGJhc2UgMTYpCQlNVVRPSCBJTkRVU1RSSUVTIExURC4KLQkJCQkyNTMgS0FOQUdBV0EtS0VOLAotCQkJCUNISUdBU0FLSS1TSEkgU0hJTU9NQUNISVlBIDEtMy0xCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1BMC0xMiAgIChoZXgpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuIAotMDBBMDEyICAgICAoYmFzZSAxNikJCVRlbGNvIFN5c3RlbXMsIEluYy4gCi0JCQkJMTUgQmVya3NoaXJlIFJvYWQKLQkJCQlNYW5zZmllbGQsIE1BIDAyMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0xMyAgIChoZXgpCQlURUxUUkVORCBMVEQuCi0wMEEwMTMgICAgIChiYXNlIDE2KQkJVEVMVFJFTkQgTFRELgotCQkJCVJJTkdXQVkgSE9VU0UsIEJFTEwgUk9BRAotCQkJCURBTkVTSElMTCwKLQkJCQlCQVNJTkdTVE9LRSBIQU1QU0hJUkUgUkcyNCA4RiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtMTQgICAoaGV4KQkJQ1NJUgotMDBBMDE0ICAgICAoYmFzZSAxNikJCUNTSVIKLQkJCQlQLk8uIEJPWCAzOTUKLQkJCQlQUkVUT1JJQSAwMDAxCi0JCQkJU09VVEggQUZSSUNBCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLUEwLTE1ICAgKGhleCkJCVdZTEUKLTAwQTAxNSAgICAgKGJhc2UgMTYpCQlXWUxFCi0JCQkJMzAwMCBCT1dFUlMgQVZFTlVFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTE2ICAgKGhleCkJCU1JQ1JPUE9MSVMgQ09SUC4KLTAwQTAxNiAgICAgKGJhc2UgMTYpCQlNSUNST1BPTElTIENPUlAuCi0JCQkJMjEyMTEgTk9SREhPRkYgU1RSRUVUCi0JCQkJQ0hBVFNXT1JUSCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMTcgICAoaGV4KQkJSiBCIE0gQ09SUE9SQVRJT04KLTAwQTAxNyAgICAgKGJhc2UgMTYpCQlKIEIgTSBDT1JQT1JBVElPTgotCQkJCTEwLTEsIEFSQU1PVE9TSElOIE1BQ0hJCi0JCQkJSElHQVNISSBPU0FLQQotCQkJCTU3NwotCQkJCUpBUEFOCi0KLTAwLUEwLTE4ICAgKGhleCkJCUNSRUFUSVZFIENPTlRST0xMRVJTLCBJTkMuCi0wMEEwMTggICAgIChiYXNlIDE2KQkJQ1JFQVRJVkUgQ09OVFJPTExFUlMsIElOQy4KLQkJCQkxMjggS0VORFJJQ0sgTEFORQotCQkJCVBJQ0FZVU5FIE1TIDM5NDY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0xOSAgIChoZXgpCQlORUJVTEEgQ09OU1VMVEFOVFMsIElOQy4KLTAwQTAxOSAgICAgKGJhc2UgMTYpCQlORUJVTEEgQ09OU1VMVEFOVFMsIElOQy4KLQkJCQkxNDQ5IERVTkNBTiBEUklWRQotCQkJCURFTFRBLCBCQyBWNEwgMVI1ICAKLQkJCQlDQU5BREEKLQotMDAtQTAtMUEgICAoaGV4KQkJQklOQVIgRUxFS1RST05JSyBBQgotMDBBMDFBICAgICAoYmFzZSAxNikJCUJJTkFSIEVMRUtUUk9OSUsgQUIKLQkJCQlNQUdORVRVQUdFTiAxOAotCQkJCVMtNDYxMzggVFJPTExIQVRUQU4KLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtQTAtMUIgICAoaGV4KQkJUFJFTUlTWVMgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQTAxQiAgICAgKGJhc2UgMTYpCQlQUkVNSVNZUyBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTQ4NjY0IE1JTE1PTlQgRFJJVkUKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0xQyAgIChoZXgpCQlOQVNDRU5UIE5FVFdPUktTIENPUlBPUkFUSU9OCi0wMEEwMUMgICAgIChiYXNlIDE2KQkJTkFTQ0VOVCBORVRXT1JLUyBDT1JQT1JBVElPTgotCQkJCTI3NyBNQUlOIFNUUkVFVCwgIDNSRCBGTFIuCi0JCQkJTUFSTEJPUk8gTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTFEICAgKGhleCkJCVNJWE5FVAotMDBBMDFEICAgICAoYmFzZSAxNikJCVNJWE5FVAotCQkJCVAuTy4gQk9YIDc2NwotCQkJCUNMSUZUT04gUEFSSyBOWSAxMjA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMUUgICAoaGV4KQkJRVNUIENPUlBPUkFUSU9OCi0wMEEwMUUgICAgIChiYXNlIDE2KQkJRVNUIENPUlBPUkFUSU9OCi0JCQkJMTIwIFJPWUFMTCBTVFJFRVQKLQkJCQlDQU5UT04gTUEgMDIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTFGICAgKGhleCkJCVRSSUNPUkQgU1lTVEVNUywgSU5DLgotMDBBMDFGICAgICAoYmFzZSAxNikJCVRSSUNPUkQgU1lTVEVNUywgSU5DLgotCQkJCTI4MDAgTk9SVEhXRVNUIEJPVUxFVkFSRAotCQkJCVBMWU1PVVRIIE1OIDU1NDQxLTI2MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTIwICAgKGhleCkJCUNJVElDT1JQL1RUSQotMDBBMDIwICAgICAoYmFzZSAxNikJCUNJVElDT1JQL1RUSQotCQkJCTMxMDAgT0NFQU4gUEFSSyBCTFZELgotCQkJCVNBTlRBIE1PTklDQSBDQSA5MDQwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMjEgICAoaGV4KQkJR2VuZXJhbCBEeW5hbWljcwotMDBBMDIxICAgICAoYmFzZSAxNikJCUdlbmVyYWwgRHluYW1pY3MKLQkJCQlDb21tdW5pY2F0aW9uIFN5c3RlbXMKLQkJCQk3N0EgU3RyZWV0Ci0JCQkJTmVlZGhhbSBIZWlnaHRzIE1BIDAyNDk0LTI4OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTIyICAgKGhleCkJCUNFTlRSRSBGT1IgREVWRUxPUE1FTlQgT0YgQURWQU5DRUQgQ09NUFVUSU5HCi0wMEEwMjIgICAgIChiYXNlIDE2KQkJQ0VOVFJFIEZPUiBERVZFTE9QTUVOVCBPRiBBRFZBTkNFRCBDT01QVVRJTkcKLQkJCQlVTklWRVJTSVRZIE9GIFBPT05BIENBTVBVUwotCQkJCUdBTkVTSCBLSElORCwgUHVuZSAtIDQxMSAwMDggIAotCQkJCUlORElBCi0KLTAwLUEwLTIzICAgKGhleCkJCUFQUExJRUQgQ1JFQVRJVkUgVEVDSE5PTE9HWSwgSU5DLgotMDBBMDIzICAgICAoYmFzZSAxNikJCUFQUExJRUQgQ1JFQVRJVkUgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTI2MjYgTE9NQkFSRFkgTEFORS0tU1RFLiMxMDcKLQkJCQlEQUxMQVMgVFggNzUyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTI0ICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwQTAyNCAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCQVlGUk9OVCBQTEFaQQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0yNSAgIChoZXgpCQlSRURDT00gTEFCUyBJTkMuCi0wMEEwMjUgICAgIChiYXNlIDE2KQkJUkVEQ09NIExBQlMgSU5DLgotCQkJCU9ORSBSRURDT00gQ0VOVEVSCi0JCQkJVklDVE9SIE5ZIDE0NTY0LTA5OTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTI2ICAgKGhleCkJCVRFTERBVCwgUy5BLgotMDBBMDI2ICAgICAoYmFzZSAxNikJCVRFTERBVCwgUy5BLgotCQkJCVBBUlFVRSBURUNOT0xPR0lDTyBNQURSSUQKLQkJCQkyODc2MCBUQUNTIENBTiBUT1MgKE1BRFJJRCkgIAotCQkJCVNQQUlOCi0KLTAwLUEwLTI3ICAgKGhleCkJCUZJUkVQT1dFUiBTWVNURU1TLCBJTkMuCi0wMEEwMjcgICAgIChiYXNlIDE2KQkJRklSRVBPV0VSIFNZU1RFTVMsIElOQy4KLQkJCQkxOTAgSU5ERVBFTkRFTkNFIERSSVZFCi0JCQkJTUVOTE8gUEFSSyBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMjggICAoaGV4KQkJQ09OTkVSIFBFUklQSEVSQUxTCi0wMEEwMjggICAgIChiYXNlIDE2KQkJQ09OTkVSIFBFUklQSEVSQUxTCi0JCQkJMzA2MSBaQU5LRVIgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTIxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTI5ICAgKGhleCkJCUNPVUxURVIgQ09SUE9SQVRJT04KLTAwQTAyOSAgICAgKGJhc2UgMTYpCQlDT1VMVEVSIENPUlBPUkFUSU9OCi0JCQkJMTE4MDAgUy5XLiAxNDdUSCBBVkUuCi0JCQkJTUlBTUkgRkwgMzMxOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTJBICAgKGhleCkJCVRSQU5DRUxMIFNZU1RFTVMKLTAwQTAyQSAgICAgKGJhc2UgMTYpCQlUUkFOQ0VMTCBTWVNURU1TCi0JCQkJMzE4MCBERSBMQSBDUlVaIEJMVkQuLVNURSMyMDAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NC0yNDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0yQiAgIChoZXgpCQlUUkFOU0lUSU9OUyBSRVNFQVJDSCBDT1JQLgotMDBBMDJCICAgICAoYmFzZSAxNikJCVRSQU5TSVRJT05TIFJFU0VBUkNIIENPUlAuCi0JCQkJU0hFTFRFUiBST0NLIExBTkUKLQkJCQlEQU5CVVJZIENUIDA2ODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0yQyAgIChoZXgpCQlpbnRlcldBVkUgQ29tbXVuaWNhdGlvbnMKLTAwQTAyQyAgICAgKGJhc2UgMTYpCQlpbnRlcldBVkUgQ29tbXVuaWNhdGlvbnMKLQkJCQk2NTYgQkFJUiBJU0xBTkQgQkxWRC4tU1RFLiMxMDgKLQkJCQlSRURXT09EIENJVFkgQ0EgOTQwNjMtMjcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMkQgICAoaGV4KQkJMTM5NCBUcmFkZSBBc3NvY2lhdGlvbgotMDBBMDJEICAgICAoYmFzZSAxNikJCTEzOTQgVHJhZGUgQXNzb2NpYXRpb24KLQkJCQkzOTI1IFdFU1QgQlJBS0VSIExBTkUKLQkJCQlBVVNUSU4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTJFICAgKGhleCkJCUJSQU5EIENPTU1VTklDQVRJT05TLCBMVEQuCi0wMEEwMkUgICAgIChiYXNlIDE2KQkJQlJBTkQgQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQlFTlRFUlBSSVNFIEhPVVNFLCBDSElWRVJTIFdBWSwKLQkJCQlISVNUT04sIENBTUJSSURHRSBDQjQgNFpSICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC0yRiAgIChoZXgpCQlQSVJFTExJIENBVkkKLTAwQTAyRiAgICAgKGJhc2UgMTYpCQlQSVJFTExJIENBVkkKLQkJCQlWSUFMRSBTQVJDQSAyMjIKLQkJCQkyMDEyNiBNSUxBTiAgCi0JCQkJSVRBTFkKLQotMDAtQTAtMzAgICAoaGV4KQkJQ0FQVE9SIE5WL1NBCi0wMEEwMzAgICAgIChiYXNlIDE2KQkJQ0FQVE9SIE5WL1NBCi0JCQkJREUgSEVORSAxMwotCQkJCUItMTc4MCBXRU1NRUwKLQkJCQlCRUxHSVVNCi0KLTAwLUEwLTMxICAgKGhleCkJCUhBWkVMVElORSBDT1JQT1JBVElPTiwgTVMgMS0xNwotMDBBMDMxICAgICAoYmFzZSAxNikJCUhBWkVMVElORSBDT1JQT1JBVElPTiwgTVMgMS0xNwotCQkJCTQ1MCBFLiBQVUxBU0tJIFJPQUQKLQkJCQlHUkVFTkxBV04gTlkgMTE3NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTMyICAgKGhleCkJCUdFUyBTSU5HQVBPUkUgUFRFLiBMVEQuCi0wMEEwMzIgICAgIChiYXNlIDE2KQkJR0VTIFNJTkdBUE9SRSBQVEUuIExURC4KLQkJCQkxNCBTVU5HRUkgS0FEVVQgQVZFTlVFCi0JCQkJU0lOR0FQT1JFIDI1NzIKLQkJCQlTSU5HQVBPUkUKLQotMDAtQTAtMzMgICAoaGV4KQkJaW1jIE1lQnN5c3RlbWUgR21iSAotMDBBMDMzICAgICAoYmFzZSAxNikJCWltYyBNZUJzeXN0ZW1lIEdtYkgKLQkJCQlWT0xUQVNUUkFTU0UgNQotCQkJCUQtMTMzNTUgQkVSTElOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLTM0ICAgKGhleCkJCUFYRUwKLTAwQTAzNCAgICAgKGJhc2UgMTYpCQlBWEVMCi0JCQkJMTYsIEFWRU5VRSBEVSBRVUVCRUMKLQkJCQlaLkEuIENPVVJUQUJPRVVGIDkxOTYyIExFUyBVTElTCi0JCQkJRlJBTkNFCi0KLTAwLUEwLTM1ICAgKGhleCkJCUNZTElOSyBDT1JQT1JBVElPTgotMDBBMDM1ICAgICAoYmFzZSAxNikJCUNZTElOSyBDT1JQT1JBVElPTgotCQkJCTMxMzEgSkFZIFNUUkVFVAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0zNiAgIChoZXgpCQlBUFBMSUVEIE5FVFdPUksgVEVDSE5PTE9HWQotMDBBMDM2ICAgICAoYmFzZSAxNikJCUFQUExJRUQgTkVUV09SSyBURUNITk9MT0dZCi0JCQkJMzE5IExJVFRMRVRPTiBST0FELS1TVEUgIzEwMQotCQkJCVdFU1RGT1JEIE1BIDAxODg2LTQxMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTM3ICAgKGhleCkJCU1pbmRyYXkgRFMgVVNBLCBJbmMuCi0wMEEwMzcgICAgIChiYXNlIDE2KQkJTWluZHJheSBEUyBVU0EsIEluYy4KLQkJCQk4MDAgTWFjYXJ0aHVyIEJsdmQuCi0JCQkJTWFod2FoIE5KIDA3NDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0zOCAgIChoZXgpCQlFTUFJTCBFTEVDVFJPTklDUwotMDBBMDM4ICAgICAoYmFzZSAxNikJCUVNQUlMIEVMRUNUUk9OSUNTCi0JCQkJUC5PLiBCT1ggMTU0Ci0JCQkJTU9PUk9PTEJBUkssIDMxMzggIAotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC0zOSAgIChoZXgpCQlST1NTIFRFQ0hOT0xPR1ksIElOQy4KLTAwQTAzOSAgICAgKGJhc2UgMTYpCQlST1NTIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk1MzE2IEhXWSAyOTAgV0VTVCAtIFNURS4gIzUwMAotCQkJCUFVU1RJTiBUWCA3ODczNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtM0EgICAoaGV4KQkJS1VCT1RFSyBDT1JQT1JBVElPTgotMDBBMDNBICAgICAoYmFzZSAxNikJCUtVQk9URUsgQ09SUE9SQVRJT04KLQkJCQk1NiBOSVNISUFLRVRBLUNITywgSElHQVNISUtVSk8KLQkJCQlNSU5BTUktS1UsIEtZT1RPIDYwMQotCQkJCUpBUEFOCi0KLTAwLUEwLTNCICAgKGhleCkJCVRPU0hJTiBFTEVDVFJJQyBDTy4sIExURC4KLTAwQTAzQiAgICAgKGJhc2UgMTYpCQlUT1NISU4gRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJM0ZMLiBSSVZFUi1TVE9ORSAzUkQuIEJMRy4yMzQKLQkJCQlNSVpPTk9LVUNISSwgVEFLQVRTVS1LViwgS0FXQVNBS0ktU0hJLAotCQkJCTIxMyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUEwLTNDICAgKGhleCkJCUVHJkcgTlVDTEVBUiBJTlNUUlVNRU5UUwotMDBBMDNDICAgICAoYmFzZSAxNikJCUVHJkcgTlVDTEVBUiBJTlNUUlVNRU5UUwotCQkJCTEwMCBNSURMQU5EIFJPQUQKLQkJCQlPQUsgUklER0UgVE4gMzc4MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTNEICAgKGhleCkJCU9QVE8tMjIKLTAwQTAzRCAgICAgKGJhc2UgMTYpCQlPUFRPLTIyCi0JCQkJNDMwNDQgQlVTSU5FU1MgUEFSSyBEUi4KLQkJCQlURU1FQ1VMQSBDQSA5MjU5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtM0UgICAoaGV4KQkJQVRNIEZPUlVNCi0wMEEwM0UgICAgIChiYXNlIDE2KQkJQVRNIEZPUlVNCi0JCQkJV09STERXSURFIEhFQURRVUFSVEVSUwotCQkJCTMwMyBWSU5UQUdFIFBBUksgRFJJVkUKLQkJCQlGT1NURVIgQ0lUWSBDQSA5NDQwNC0xMTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0zRiAgIChoZXgpCQlDT01QVVRFUiBTT0NJRVRZIE1JQ1JPUFJPQ0VTU09SICYgTUlDUk9QUk9DRVNTT1IgU1RBTkRBUkRTIEMKLTAwQTAzRiAgICAgKGJhc2UgMTYpCQlDT01QVVRFUiBTT0NJRVRZIE1JQ1JPUFJPQ0VTU09SICYgTUlDUk9QUk9DRVNTT1IgU1RBTkRBUkRTIEMKLQkJCQklIEFQUExFIENPTVBVVEVSLCBJTkMuCi0JCQkJIDEgSU5GSU5JVEUgTE9PUCwKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTQwICAgKGhleCkJCUFQUExFIENPTVBVVEVSCi0wMEEwNDAgICAgIChiYXNlIDE2KQkJQVBQTEUgQ09NUFVURVIKLQkJCQkyMDY1MCBWQUxMRVkgR1JFRU4gRFJJVkUKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTQxICAgKGhleCkJCUlORklDT04KLTAwQTA0MSAgICAgKGJhc2UgMTYpCQlJTkZJQ09OCi0JCQkJMiBUZWNobm9sb2d5IFBsYWNlCi0JCQkJRS4gU3lyYWN1c2UgTlkgMTMwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTQyICAgKGhleCkJCVNQVVIgUFJPRFVDVFMgQ09SUC4KLTAwQTA0MiAgICAgKGJhc2UgMTYpCQlTUFVSIFBST0RVQ1RTIENPUlAuCi0JCQkJOTI4OCBXLiBFTUVSQUxEIFNUUkVFVAotCQkJCUJPSVNFIElEIDgzNzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC00MyAgIChoZXgpCQlBTUVSSUNBTiBURUNITk9MT0dZIExBQlMsIElOQy4KLTAwQTA0MyAgICAgKGJhc2UgMTYpCQlBTUVSSUNBTiBURUNITk9MT0dZIExBQlMsIElOQy4KLQkJCQkxMTUgV0VTVCAzUkQgU1RSRUVUCi0JCQkJTE9XRVIgTEVWRUwKLQkJCQlTVEVWRU5TVklMTEUgTVQgNTk4NzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTQ0ICAgKGhleCkJCU5UVCBJVCBDTy4sIExURC4KLTAwQTA0NCAgICAgKGJhc2UgMTYpCQlOVFQgSVQgQ08uLCBMVEQuCi0JCQkJCi0JCQkJS0FOTkFJLVdJU0UgQkxERy4sIDItOS0xIEZVUk9VLUNITywgTkFLQQotCQkJCTIzMSAKLQkJCQlKQVBBTgotCi0wMC1BMC00NSAgIChoZXgpCQlQSE9FTklYIENPTlRBQ1QgR01CSCAmIENPLgotMDBBMDQ1ICAgICAoYmFzZSAxNikJCVBIT0VOSVggQ09OVEFDVCBHTUJIICYgQ08uCi0JCQkJUE9TVEZBQ0ggMTM0MQotCQkJCUQtMzI4MTkgQkxPTUJFUkcKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1BMC00NiAgIChoZXgpCQlTQ0lURVggQ09SUC4gTFRELgotMDBBMDQ2ICAgICAoYmFzZSAxNikJCVNDSVRFWCBDT1JQLiBMVEQuCi0JCQkJUC5PLkJPWCAzMzAKLQkJCQlIRVJaTElBIEIgNDYxMDMKLQkJCQlJU1JBRUwKLQotMDAtQTAtNDcgICAoaGV4KQkJSU5URUdSQVRFRCBGSVRORVNTIENPUlAuCi0wMEEwNDcgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBGSVRORVNTIENPUlAuCi0JCQkJMjYgNlRIIFNUUkVFVAotCQkJCVNUQU1GT1JEIENUIDA2OTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC00OCAgIChoZXgpCQlRVUVTVEVDSCwgTFRELgotMDBBMDQ4ICAgICAoYmFzZSAxNikJCVFVRVNURUNILCBMVEQuCi0JCQkJRUFTVEhFQVRIIEFWRU5VRQotCQkJCVdPS0lOR0hBTQotCQkJCUJFUktTLCBSRzExIDJQUCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtNDkgICAoaGV4KQkJRElHSVRFQ0ggSU5EVVNUUklFUywgSU5DLgotMDBBMDQ5ICAgICAoYmFzZSAxNikJCURJR0lURUNIIElORFVTVFJJRVMsIElOQy4KLQkJCQlQTyBCT1ggMjI2NwotCQkJCTU1IEtFTk9TSUEgQVZFTlVFCi0JCQkJREFOQlVSWSBDVCAwNjgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNEEgICAoaGV4KQkJTklTU0hJTiBFTEVDVFJJQyBDTy4sIExURC4KLTAwQTA0QSAgICAgKGJhc2UgMTYpCQlOSVNTSElOIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTUsIE1FT1RPR09TSEksIE1VVFNVU0hJLAotCQkJCVNISUtBVFNVLUNZTywgTklTSElLQVNVR0FJLAotCQkJCUFJQ0hJIDQ4MSAgCi0JCQkJSkFQQU4KLQotMDAtQTAtNEIgICAoaGV4KQkJVEZMIExBTiBJTkMuCi0wMEEwNEIgICAgIChiYXNlIDE2KQkJVEZMIExBTiBJTkMuCi0JCQkJOUYsIE5PLiA0OTkgQ0hVTkcgQ0hFTkcgUk9BRAotCQkJCVNISUgtTElOIERJU1RSSUNULCBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQTAtNEMgICAoaGV4KQkJSU5OT1ZBVElWRSBTWVNURU1TICYgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEEwNEMgICAgIChiYXNlIDE2KQkJSU5OT1ZBVElWRSBTWVNURU1TICYgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNDg1MTEgV0FSTSBTUFJJTkdTIEJMVkQuCi0JCQkJU1VJVEUgICMgMjExQwotCQkJCUZSRU1PTlQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTREICAgKGhleCkJCUVEQSBJTlNUUlVNRU5UUywgSU5DLgotMDBBMDREICAgICAoYmFzZSAxNikJCUVEQSBJTlNUUlVNRU5UUywgSU5DLgotCQkJCTQgVEhPUk5DTElGRkUgUEFSSyBEUklWRQotCQkJCVRPUk9OVE8sIE9OVEFSSU8KLQkJCQlNNEggMUgxCi0JCQkJQ0FOQURBCi0KLTAwLUEwLTRFICAgKGhleCkJCVZPRUxLRVIgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEEwNEUgICAgIChiYXNlIDE2KQkJVk9FTEtFUiBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkyMiBORVcgQk9TVE9OIENPVVJUCi0JCQkJREFOVklMTEUgQ0EgOTQ1MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTRGICAgKGhleCkJCUFNRVJJVEVDIENPUlAuCi0wMEEwNEYgICAgIChiYXNlIDE2KQkJQU1FUklURUMgQ09SUC4KLQkJCQk3NjAgQVJST1cgR1JBTkQgQ0lSQ0xFCi0JCQkJQ09WSU5BIENBIDkxNzIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC01MCAgIChoZXgpCQlDWVBSRVNTIFNFTUlDT05EVUNUT1IKLTAwQTA1MCAgICAgKGJhc2UgMTYpCQlDWVBSRVNTIFNFTUlDT05EVUNUT1IKLQkJCQkzOTAxIE5PUlRIIEZJUlNUIFNUUkVFVAotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC01MSAgIChoZXgpCQlBTkdJQSBDT01NVU5JQ0FUSU9OUy4gSU5DLgotMDBBMDUxICAgICAoYmFzZSAxNikJCUFOR0lBIENPTU1VTklDQVRJT05TLiBJTkMuCi0JCQkJNDQxIEVBU1QgQkFZIEJMVkQuCi0JCQkJUFJPVk8gVVRBSCA4NDYwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNTIgICAoaGV4KQkJU1RBTklMSVRFIEVMRUNUUk9OSUNTIFBUWS4gTFRECi0wMEEwNTIgICAgIChiYXNlIDE2KQkJU1RBTklMSVRFIEVMRUNUUk9OSUNTIFBUWS4gTFRECi0JCQkJNDI0LCBMQU5FIENPVkUgUk9BRAotCQkJCU5PUlRIIFJZREUgTlNXIDIxMTMgIAotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC01MyAgIChoZXgpCQlDT01QQUNUIERFVklDRVMsIElOQy4KLTAwQTA1MyAgICAgKGJhc2UgMTYpCQlDT01QQUNUIERFVklDRVMsIElOQy4KLQkJCQkxNjc5NSBMQVJLIEFWRU5VRQotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNTQgICAoaGV4KQkJUFJJVkFURQotMDBBMDU0ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC1BMC01NSAgIChoZXgpCQlEYXRhIERldmljZSBDb3Jwb3JhdGlvbgotMDBBMDU1ICAgICAoYmFzZSAxNikJCURhdGEgRGV2aWNlIENvcnBvcmF0aW9uCi0JCQkJMTA1IFdpbGJ1ciBQbGFjZQotCQkJCUJvaGVtaWEgTlkgMTE3MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTU2ICAgKGhleCkJCU1JQ1JPUFJPU1MKLTAwQTA1NiAgICAgKGJhc2UgMTYpCQlNSUNST1BST1NTCi0JCQkJMzMsIFJVRSBHQU5UT0lTCi0JCQkJNTkwMDAgTElMTEUgIAotCQkJCUZSQU5DRQotCi0wMC1BMC01NyAgIChoZXgpCQlMQU5DT00gU3lzdGVtcyBHbWJICi0wMEEwNTcgICAgIChiYXNlIDE2KQkJTEFOQ09NIFN5c3RlbXMgR21iSAotCQkJCUFkZW5hdWVyIFN0ci4yMCAvQjIKLQkJCQlELTUyMDcwIEFBQ0hFTgotCQkJCVd1cnNlbGVuICA1MjE0NgotCQkJCUdFUk1BTlkKLQotMDAtQTAtNTggICAoaGV4KQkJR0xPUlksIExURC4KLTAwQTA1OCAgICAgKGJhc2UgMTYpCQlHTE9SWSwgTFRELgotCQkJCTEtMy0xIFNISU1PVEVOTywgSElNRUpJCi0JCQkJSFlPR08gUFJFRi4gNjcwICAKLQkJCQlKQVBBTgotCi0wMC1BMC01OSAgIChoZXgpCQlIQU1JTFRPTiBIQUxMTUFSSwotMDBBMDU5ICAgICAoYmFzZSAxNikJCUhBTUlMVE9OIEhBTExNQVJLCi0JCQkJMjEwNSBMVU5EWSBBVkVOVUUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNUEgICAoaGV4KQkJS09GQVggSU1BR0UgUFJPRFVDVFMKLTAwQTA1QSAgICAgKGJhc2UgMTYpCQlLT0ZBWCBJTUFHRSBQUk9EVUNUUwotCQkJCTMgSkVOTkVSIFNUUkVFVAotCQkJCUlSVklORSBDQSA5MjcxOC0zODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC01QiAgIChoZXgpCQlNQVJRVUlQLCBJTkMuCi0wMEEwNUIgICAgIChiYXNlIDE2KQkJTUFSUVVJUCwgSU5DLgotCQkJCTEyNDUgRS4gV0FTSElOR1RPTiBBVkUuCi0JCQkJTUFESVNPTiBXSSA1MzcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNUMgICAoaGV4KQkJSU5WRU5UT1JZIENPTlZFUlNJT04sIElOQy4vCi0wMEEwNUMgICAgIChiYXNlIDE2KQkJSU5WRU5UT1JZIENPTlZFUlNJT04sIElOQy4vCi0JCQkJTkVLT1RFQ0ggRElWSVNJT04KLQkJCQkxMDIgVElERSBNSUxMIFJPQUQgLVNVSVRFICMgNgotCQkJCUhBTVBUT04gTkggMDM4NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTVEICAgKGhleCkJCUNTIENPTVBVVEVSIFNZU1RFTUUgR21iSAotMDBBMDVEICAgICAoYmFzZSAxNikJCUNTIENPTVBVVEVSIFNZU1RFTUUgR21iSAotCQkJCUlTQVJTVFJBU1NFIDMsCi0JCQkJODIwNjUgQkFJRVJCUlVOTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1BMC01RSAgIChoZXgpCQlNWVJJQUQgTE9HSUMgSU5DLgotMDBBMDVFICAgICAoYmFzZSAxNikJCU1ZUklBRCBMT0dJQyBJTkMuCi0JCQkJMTEwOSBTUFJJTkcgU1RSRUVUCi0JCQkJU0lMVkVSIFNQUklORyBNRCAyMDkxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNUYgICAoaGV4KQkJQlRHIEVsZWN0cm9uaWNzIERlc2lnbiBCVgotMDBBMDVGICAgICAoYmFzZSAxNikJCUJURyBFbGVjdHJvbmljcyBEZXNpZ24gQlYKLQkJCQlQLk8uIEJveCAxNTQzCi0JCQkJMzI2MAotCQkJCUJBIE91ZCBCZWlqZXJsYW5kICAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC1BMC02MCAgIChoZXgpCQlBQ0VSIFBFUklQSEVSQUxTLCBJTkMuCi0wMEEwNjAgICAgIChiYXNlIDE2KQkJQUNFUiBQRVJJUEhFUkFMUywgSU5DLgotCQkJCTlGLCAxMzUgQ0hJQU4gS1VPIE4uIFJELiBTRUMgMgotCQkJCVRBSVBFSSwgIDEwNDc5Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1BMC02MSAgIChoZXgpCQlQVVJJVEFOIEJFTk5FVFQKLTAwQTA2MSAgICAgKGJhc2UgMTYpCQlQVVJJVEFOIEJFTk5FVFQKLQkJCQkyMjAwIEZBUkFEQVkgQVZFTlVFCi0JCQkJQ0FSTFNCQUQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTYyICAgKGhleCkJCUFFUyBQUk9EQVRBCi0wMEEwNjIgICAgIChiYXNlIDE2KQkJQUVTIFBST0RBVEEKLQkJCQkyNDkgQkFMQ0FUVEEgUk9BRAotCQkJCUJBTENBVFRBCi0JCQkJV0VTVEVSTiBBVVNUUkFMSUEgNjAyMQotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC02MyAgIChoZXgpCQlKUkwgU1lTVEVNUywgSU5DLgotMDBBMDYzICAgICAoYmFzZSAxNikJCUpSTCBTWVNURU1TLCBJTkMuCi0JCQkJODMwNSBIV1kgNzEgV0VTVAotCQkJCUFVU1RJTiBUWCA3ODczNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNjQgICAoaGV4KQkJS1ZCL0FOQUxFQ1QKLTAwQTA2NCAgICAgKGJhc2UgMTYpCQlLVkIvQU5BTEVDVAotCQkJCTk0MjAgSkVST05JTU8gUk9BRAotCQkJCUlSVklORSBDQSA5MjcxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNjUgICAoaGV4KQkJU3ltYW50ZWMgQ29ycG9yYXRpb24KLTAwQTA2NSAgICAgKGJhc2UgMTYpCQlTeW1hbnRlYyBDb3Jwb3JhdGlvbgotCQkJCTIwMzMwIFN0ZXZlbnMgQ3JlZWsgQmx2ZC4KLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTY2ICAgKGhleCkJCUlTQSBDTy4sIExURC4KLTAwQTA2NiAgICAgKGJhc2UgMTYpCQlJU0EgQ08uLCBMVEQuCi0JCQkJU0hJTkpVS1UgTEFNQkRBWCBCTERHLiA1Ri4sCi0JCQkJMi00LTEyIE9LVUJPLCBTSElOSlVLVS1LVSBUT0tZTwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQTAtNjcgICAoaGV4KQkJTkVUV09SSyBTRVJWSUNFUyBHUk9VUAotMDBBMDY3ICAgICAoYmFzZSAxNikJCU5FVFdPUksgU0VSVklDRVMgR1JPVVAKLQkJCQkzNDIxIENPTU1JU1NJT04gQ09VUlQtU1RFICMyMDIKLQkJCQlXT09EQlJJREdFIFZBIDIyMTkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC02OCAgIChoZXgpCQlCSFAgTElNSVRFRAotMDBBMDY4ICAgICAoYmFzZSAxNikJCUJIUCBMSU1JVEVECi0JCQkJR1BPIEJPWCA4NkEKLQkJCQlNRUxCT1VSTkUgMzAwMSBWSUNUT1JJQQotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC02OSAgIChoZXgpCQlTeW1tZXRyaWNvbSwgSW5jLgotMDBBMDY5ICAgICAoYmFzZSAxNikJCVN5bW1ldHJpY29tLCBJbmMuCi0JCQkJMzc1MCBXZXN0d2luZCBCbHZkLgotCQkJCVNhbnRhIFJvc2EgQ0EgOTU0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTZBICAgKGhleCkJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi0wMEEwNkEgICAgIChiYXNlIDE2KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMjcgSmV0cGxleCBDaXJjbGUKLQkJCQlNYWRpc29uIEFMIDM1NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC02QiAgIChoZXgpCQlETVMgRE9SU0NIIE1JS1JPU1lTVEVNIEdNQkgKLTAwQTA2QiAgICAgKGJhc2UgMTYpCQlETVMgRE9SU0NIIE1JS1JPU1lTVEVNIEdNQkgKLQkJCQlIT0xNTFVFQ0sgMTMtMTUKLQkJCQlELTI0OTcyIFNURUlOQkVSUUtJUkNIRQotCQkJCUdFUk1BTlkKLQotMDAtQTAtNkMgICAoaGV4KQkJU0hJTkRFTkdFTiBFTEVDVFJJQyBNRkcuIENPLiwgTFRELgotMDBBMDZDICAgICAoYmFzZSAxNikJCVNISU5ERU5HRU4gRUxFQ1RSSUMgTUZHLiBDTy4sIExURC4KLQkJCQkxMC0xMywgTUlOQU1JLUNITywgSEFOTk9VLUNJVFkKLQkJCQlTQUlUQU1BIDM1NyAgCi0JCQkJSk9SREFOCi0KLTAwLUEwLTZEICAgKGhleCkJCU1BTk5FU01BTk4gVEFMTFkgQ09SUE9SQVRJT04KLTAwQTA2RCAgICAgKGJhc2UgMTYpCQlNQU5ORVNNQU5OIFRBTExZIENPUlBPUkFUSU9OCi0JCQkJUC5PLiBCT1ggOTcwMTgKLQkJCQlLRU5UIFdBIDk4MDY0LTk3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTZFICAgKGhleCkJCUFVU1RST04sIElOQy4KLTAwQTA2RSAgICAgKGJhc2UgMTYpCQlBVVNUUk9OLCBJTkMuCi0JCQkJUC5PLiBCT1ggMTQ3NjYKLQkJCQlBVVNUSU4gVFggNzg3NjEtNDc2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNkYgICAoaGV4KQkJVEhFIEFQUENPTiBHUk9VUCwgSU5DLgotMDBBMDZGICAgICAoYmFzZSAxNikJCVRIRSBBUFBDT04gR1JPVVAsIElOQy4KLQkJCQkyMyBSSUNITU9ORCBTVFJFRVQKLQkJCQlST0NIRVNURVIgTlkgMTQ2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTcwICAgKGhleCkJCUNPQVNUQ09NCi0wMEEwNzAgICAgIChiYXNlIDE2KQkJQ09BU1RDT00KLQkJCQkxMTUxIEhBUkJPUiBCQVkgUEFSS1dBWQotCQkJCUFMQU1FREEgQ0EgOTQ1MDItNjUxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNzEgICAoaGV4KQkJVklERU8gTE9UVEVSWSBURUNITk9MT0dJRVMsSU5DCi0wMEEwNzEgICAgIChiYXNlIDE2KQkJVklERU8gTE9UVEVSWSBURUNITk9MT0dJRVMsSU5DCi0JCQkJMjMxMSBTT1VUSCA3VEggQVZFTlVFCi0JCQkJQk9aRU1BTiBNVCA1OTcxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNzIgICAoaGV4KQkJT1ZBVElPTiBTWVNURU1TIExURC4KLTAwQTA3MiAgICAgKGJhc2UgMTYpCQlPVkFUSU9OIFNZU1RFTVMgTFRELgotCQkJCUdSRUFUIEhBU0VMRVkgVFJBRC4gRVNULgotCQkJCUdSRUFUIEhBU0VMRVksICBPWEZPUkRTSElSRSBPWDkgN1BGCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC03MyAgIChoZXgpCQlDT00yMSwgSU5DLgotMDBBMDczICAgICAoYmFzZSAxNikJCUNPTTIxLCBJTkMuCi0JCQkJMjExMyBMQU5ESU5HUyBEUklWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTc0ICAgKGhleCkJCVBFUkNFUFRJT04gVEVDSE5PTE9HWQotMDBBMDc0ICAgICAoYmFzZSAxNikJCVBFUkNFUFRJT04gVEVDSE5PTE9HWQotCQkJCTQwIFNIQVdNVVQgUk9BRAotCQkJCUNBTlRPTiBNQSAwMjAyMS0xNDA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03NSAgIChoZXgpCQlNSUNST04gVEVDSE5PTE9HWSwgSU5DLgotMDBBMDc1ICAgICAoYmFzZSAxNikJCU1JQ1JPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJODAwMCBTLiBGZWRlcmFsIFdheQotCQkJCVAuTy4gQm94IDYKLQkJCQlCb2lzZSBJRCA4MzcwNy0wMDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03NiAgIChoZXgpCQlDQVJEV0FSRSBMQUIsIElOQy4KLTAwQTA3NiAgICAgKGJhc2UgMTYpCQlDQVJEV0FSRSBMQUIsIElOQy4KLQkJCQkyODUgU09CUkFOVEUgV0FZLCBTVEUuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03NyAgIChoZXgpCQlGVUpJVFNVIE5FWElPTiwgSU5DLgotMDBBMDc3ICAgICAoYmFzZSAxNikJCUZVSklUU1UgTkVYSU9OLCBJTkMuCi0JCQkJMjg5IEdSRUFUIFJPQUQKLQkJCQlBQ1RPTiBNQSAwMTcyMC00NzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03OCAgIChoZXgpCQlNYXJjb25pIENvbW11bmljYXRpb25zCi0wMEEwNzggICAgIChiYXNlIDE2KQkJTWFyY29uaSBDb21tdW5pY2F0aW9ucwotCQkJCTEwMDAgRm9yZSBEcml2ZQotCQkJCVdhcnJlbmRhbGUgUEEgMTUwODYtNzUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNzkgICAoaGV4KQkJQUxQUyBFTEVDVFJJQyAoVVNBKSwgSU5DLgotMDBBMDc5ICAgICAoYmFzZSAxNikJCUFMUFMgRUxFQ1RSSUMgKFVTQSksIElOQy4KLQkJCQkzNTUzIE5PUlRIIDFTVCBTVFJFRVQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtN0EgICAoaGV4KQkJQURWQU5DRUQgUEVSSVBIRVJBTFMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEEwN0EgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgUEVSSVBIRVJBTFMgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJCi0JCQkJS09KSU1BIEJVSUxESU5HLCAxMDMxIEZVSklTQVdBCi0JCQkJRlVKSVNBV0EtU0hJLCBLQU5BR0FXQS1LRU4gMjUxICAKLQkJCQlKQVBBTgotCi0wMC1BMC03QiAgIChoZXgpCQlEQVdOIENPTVBVVEVSIElOQ09SUE9SQVRJT04KLTAwQTA3QiAgICAgKGJhc2UgMTYpCQlEQVdOIENPTVBVVEVSIElOQ09SUE9SQVRJT04KLQkJCQk2IEtFWFVFWVVBTiBTT1VUSCBST0FECi0JCQkJWkhPTkcgR1VBTiBDVU4gQkVJSklORyAxMDAwODAKLQkJCQlDSElOQQotCi0wMC1BMC03QyAgIChoZXgpCQlUT05ZQU5HIE5ZTE9OIENPLiwgTFRELgotMDBBMDdDICAgICAoYmFzZSAxNikJCVRPTllBTkcgTllMT04gQ08uLCBMVEQuCi0JCQkJRUxFQ1RST05JQyBSRVNFQVJDSCBMQUIKLQkJCQkxODMsIEhPR0UtRE9ORywgRE9OR0FOLUdVCi0JCQkJQU5ZQU5HLUNJVFksIEtZVU5HS0ktRE8gNDMwLTA4MCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUEwLTdEICAgKGhleCkJCVNFRVEgVEVDSE5PTE9HWSwgSU5DLgotMDBBMDdEICAgICAoYmFzZSAxNikJCVNFRVEgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTQ3MTMxIEJBWVNJREUgUEFSS1dBWQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTdFICAgKGhleCkJCUFWSUQgVEVDSE5PTE9HWSwgSU5DLgotMDBBMDdFICAgICAoYmFzZSAxNikJCUFWSUQgVEVDSE5PTE9HWSwgSU5DLgotCQkJCU1FVFJPUE9MSVRBTiBURUNITk9MT0dZIFBBUksKLQkJCQlPTkUgUEFSSyBXRVNUCi0JCQkJVEVXS1NCVVJZIE1BIDAxODc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03RiAgIChoZXgpCQlHU00tU1lOVEVMLCBMVEQuCi0wMEEwN0YgICAgIChiYXNlIDE2KQkJR1NNLVNZTlRFTCwgTFRELgotCQkJCVZJQ1RPUklBIFdPUktTLCBRVUVFTlMgTUlMTCBSRAotCQkJCUhVRERFUlNGSUVMRCBXRVNUIFlPUktTSElSRQotCQkJCUhEMSAzUEcgRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLTgwICAgKGhleCkJCVNCRSwgSW5jLgotMDBBMDgwICAgICAoYmFzZSAxNikJCVNCRSwgSW5jLgotCQkJCTQwMDAgRXhlY3V0aXZlIFBhcmt3YXkKLQkJCQlTdWl0ZSAyMDAKLQkJCQlTYW4gUmFtb24gQ0EgOTQ1ODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTgxICAgKGhleCkJCUFMQ0FURUwgREFUQSBORVRXT1JLUwotMDBBMDgxICAgICAoYmFzZSAxNikJCUFMQ0FURUwgREFUQSBORVRXT1JLUwotCQkJCTEyNTAyIFNVTlJJU0UgVkFMTEVZIERSSVZFCi0JCQkJUkVTVE9OIFZBIDIyMDk2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC04MiAgIChoZXgpCQlOS1QgRUxFS1RST05JSyBBL1MKLTAwQTA4MiAgICAgKGJhc2UgMTYpCQlOS1QgRUxFS1RST05JSyBBL1MKLQkJCQlOS1QgQUxMRSA4NQotCQkJCURLLTI2MDUgQlJPTkRCWQotCQkJCURFTk1BUksKLQotMDAtQTAtODMgICAoaGV4KQkJQVNJTU1QSE9OWSBUVVJLRVkKLTAwQTA4MyAgICAgKGJhc2UgMTYpCQlBU0lNTVBIT05ZIFRVUktFWQotCQkJCUVMRUNUUk9OSUNTLCBMVEQuCi0JCQkJIzE2MC4yNjAgLSA2NjUxIEVMTUJSSURHRSBXQVkgUklDSE1PTkQgQgotCQkJCVY3QyA0TjEKLQkJCQlDQU5BREEKLQotMDAtQTAtODQgICAoaGV4KQkJRGF0YXBsZXggUHR5IEx0ZAotMDBBMDg0ICAgICAoYmFzZSAxNikJCURhdGFwbGV4IFB0eSBMdGQKLQkJCQlMZXZlbCAyLCA3MSBFcHBpbmcgUmQsCi0JCQkJTk9SVEggIFJZREUgTlNXIDIxMTMKLQkJCQlBVVNUUkFMSUEKLQotMDAtQTAtODUgICAoaGV4KQkJUFJJVkFURQotMDBBMDg1ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC1BMC04NiAgIChoZXgpCQlBTUJFUiBXQVZFIFNZU1RFTVMsIElOQy4KLTAwQTA4NiAgICAgKGJhc2UgMTYpCQlBTUJFUiBXQVZFIFNZU1RFTVMsIElOQy4KLQkJCQk0MDMgTUFTU0FDSFVTRVRUUyBBVkVOVUUKLQkJCQlTVUlURSAjMjAyCi0JCQkJQUNUT04gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTg3ICAgKGhleCkJCVphcmxpbmsgU2VtaWNvbmR1Y3RvciBMdGQuCi0wMEEwODcgICAgIChiYXNlIDE2KQkJWmFybGluayBTZW1pY29uZHVjdG9yIEx0ZC4KLQkJCQlDaGVuZXkgTWFub3IsIFN3aW5kb24KLQkJCQlXaWx0c2hpcmUgU04yIDJRVyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtODggICAoaGV4KQkJRVNTRU5USUFMIENPTU1VTklDQVRJT05TCi0wMEEwODggICAgIChiYXNlIDE2KQkJRVNTRU5USUFMIENPTU1VTklDQVRJT05TCi0JCQkJNDM3NCBBTEVYQU5ERVIgQkxWRC4gTkUtU1RFCi0JCQkJQUxCVVFVRVJRVUUgTk0gODcxMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTg5ICAgKGhleCkJCVhQT0lOVCBURUNITk9MT0dJRVMsIElOQy4KLTAwQTA4OSAgICAgKGJhc2UgMTYpCQlYUE9JTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJOTAyIENMSU5UIE1PT1JFIFJELi1TVEUjMTMyCi0JCQkJQk9DQSBSQVRPTiBGTCAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOEEgICAoaGV4KQkJQlJPT0tUUk9VVCBURUNITk9MT0dZLCBJTkMuCi0wMEEwOEEgICAgIChiYXNlIDE2KQkJQlJPT0tUUk9VVCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTQ0IEdPVUxEIFNUUkVFVC0gU1VJVEUgIzIwMAotCQkJCU5FRURIQU0gTUEgMDIxOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLThCICAgKGhleCkJCUFTVE9OIEVMRUNUUk9OSUMgREVTSUdOUyBMVEQuCi0wMEEwOEIgICAgIChiYXNlIDE2KQkJQVNUT04gRUxFQ1RST05JQyBERVNJR05TIExURC4KLQkJCQkxMjMvMTI3IERFRVBDVVQgQlJJREdFIFJPQUQKLQkJCQlERUVQQ1VULCAgQ0FNQkVSTEVZIFNVUlJFWSwgR1UxNiA2U0QKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtOEMgICAoaGV4KQkJTXVsdGlNZWRpYSBMQU5zLCBJbmMuCi0wMEEwOEMgICAgIChiYXNlIDE2KQkJTXVsdGlNZWRpYSBMQU5zLCBJbmMuCi0JCQkJNTYwMCBFWEVDVVRJVkUgQ0VOVEVSIERSSVZFCi0JCQkJU1VJVEUgIzMxMgotCQkJCUNIQVJMT1RURSBOQyAyODIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOEQgICAoaGV4KQkJSkFDT01PIENPUlBPUkFUSU9OCi0wMEEwOEQgICAgIChiYXNlIDE2KQkJSkFDT01PIENPUlBPUkFUSU9OCi0JCQkJMjY5MDAgRS4gUElOSyBISUxMIFJPQUQKLQkJCQlJTkRFUEVOREVOQ0UgTU8gNjQwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLThFICAgKGhleCkJCUNoZWNrIFBvaW50IFNvZnR3YXJlIFRlY2hub2xvZ2llcwotMDBBMDhFICAgICAoYmFzZSAxNikJCUNoZWNrIFBvaW50IFNvZnR3YXJlIFRlY2hub2xvZ2llcwotCQkJCTgzMzMgUmlkZ2Vwb2ludCBEci4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlJcnZpbmcgVFggNzUwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLThGICAgKGhleCkJCURFU0tORVQgU1lTVEVNUywgSU5DLgotMDBBMDhGICAgICAoYmFzZSAxNikJCURFU0tORVQgU1lTVEVNUywgSU5DLgotCQkJCTgwIEJVU0lORVNTIFBBUksgRFJJVkUKLQkJCQlBUk1PTksgTlkgMTA1MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTkwICAgKGhleCkJCVRpbWVTdGVwIENvcnBvcmF0aW9uCi0wMEEwOTAgICAgIChiYXNlIDE2KQkJVGltZVN0ZXAgQ29ycG9yYXRpb24KLQkJCQkzNTkgVEVSUlkgRk9YIERSSVZFCi0JCQkJS0FOQVRBLCBPTlRBUklPIEsySyAyRTcgIAotCQkJCUNBTkFEQQotCi0wMC1BMC05MSAgIChoZXgpCQlBUFBMSUNPTSBJTlRFUk5BVElPTkFMCi0wMEEwOTEgICAgIChiYXNlIDE2KQkJQVBQTElDT00gSU5URVJOQVRJT05BTAotCQkJCTQzLCBSVUUgTUFaQUdSQU4KLQkJCQk3NjMyMCBDQVVERUJFQy1MRVMtRUxCRVVGCi0JCQkJRlJBTkNFCi0KLTAwLUEwLTkyICAgKGhleCkJCUguIEJPTExNQU5OIE1BTlVGQUNUVVJFUlMsIExURAotMDBBMDkyICAgICAoYmFzZSAxNikJCUguIEJPTExNQU5OIE1BTlVGQUNUVVJFUlMsIExURAotCQkJCTI2IFZJQ1RPUklBIFdBWQotCQkJCUJVUkdFU1MgSElMTCBXLiBTVVNTRVggUkggMTUgOU5GCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC05MyAgIChoZXgpCQlCL0UgQUVST1NQQUNFLCBJbmMuCi0wMEEwOTMgICAgIChiYXNlIDE2KQkJQi9FIEFFUk9TUEFDRSwgSW5jLgotCQkJCTE3NDgxIFJFRCBISUxMCi0JCQkJSVJWSU5FIENBIDkyNzE0LTU2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTk0ICAgKGhleCkJCUNPTVNBVCBDT1JQT1JBVElPTgotMDBBMDk0ICAgICAoYmFzZSAxNikJCUNPTVNBVCBDT1JQT1JBVElPTgotCQkJCTIyMzAwIENPTVNBVCBEUklWRQotCQkJCUNMQVJLU0JVUkcgTUQgMjA4NzEtOTQ3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOTUgICAoaGV4KQkJQUNBQ0lBIE5FVFdPUktTLCBJTkMuCi0wMEEwOTUgICAgIChiYXNlIDE2KQkJQUNBQ0lBIE5FVFdPUktTLCBJTkMuCi0JCQkJODMxIFdPQlVSTiBTVFJFRVQKLQkJCQlXSUxNSU5HVE9OIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC05NiAgIChoZXgpCQlNSVRVTUkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMEEwOTYgICAgIChiYXNlIDE2KQkJTUlUVU1JIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTgtOC0yLCAgS09LVVJZTy1DSE8KLQkJCQlDSE9GVS1TSEkgVE9LWU8gMTgyICAKLQkJCQlKQVBBTgotCi0wMC1BMC05NyAgIChoZXgpCQlKQyBJTkZPUk1BVElPTiBTWVNURU1TCi0wMEEwOTcgICAgIChiYXNlIDE2KQkJSkMgSU5GT1JNQVRJT04gU1lTVEVNUwotCQkJCTQ0ODcgVEVDSE5PTE9HWSBEUklWRQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgtNjM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOTggICAoaGV4KQkJTmV0QXBwCi0wMEEwOTggICAgIChiYXNlIDE2KQkJTmV0QXBwCi0JCQkJNDk1IEVhc3QgSmF2YSBEcml2ZQotCQkJCVN1bm55dmFsZSwgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTk5ICAgKGhleCkJCUstTkVUIExURC4KLTAwQTA5OSAgICAgKGJhc2UgMTYpCQlLLU5FVCBMVEQuCi0JCQkJU0FERExFUlMgSE9VU0UKLQkJCQkxMDAgUkVBRElORyBSRC4KLQkJCQlZQVRFTEVZLCBTVVJSRVkgR1UxNyA3UlggIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLTlBICAgKGhleCkJCU5JSE9OIEtPSERFTiBBTUVSSUNBCi0wMEEwOUEgICAgIChiYXNlIDE2KQkJTklIT04gS09IREVOIEFNRVJJQ0EKLQkJCQkyNDQ2IERVUE9OVCBEUklWRQotCQkJCUlSVklORSBDQSA5MjcxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOUIgICAoaGV4KQkJUVBTWCBDT01NVU5JQ0FUSU9OUywgTFRELgotMDBBMDlCICAgICAoYmFzZSAxNikJCVFQU1ggQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQkzMyBSSUNIQVJEU09OIFNUUkVFVAotCQkJCVdFU1QgUEVSVEggNjAwNQotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC05QyAgIChoZXgpCQlYeXBsZXgsIEluYy4KLTAwQTA5QyAgICAgKGJhc2UgMTYpCQlYeXBsZXgsIEluYy4KLQkJCQkyNSBGT1NURVIgU1RSRUVUCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC05RCAgIChoZXgpCQlKT0hOQVRIT04gRlJFRU1BTiBURUNITk9MT0dJRVMKLTAwQTA5RCAgICAgKGJhc2UgMTYpCQlKT0hOQVRIT04gRlJFRU1BTiBURUNITk9MT0dJRVMKLQkJCQlQLk8uIEJPWCA4ODAxMTQKLQkJCQlTQU4gRlJBTkNJU0NPIENBIDk0MTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC05RSAgIChoZXgpCQlJQ1RWCi0wMEEwOUUgICAgIChiYXNlIDE2KQkJSUNUVgotCQkJCTE0NjAwIFdJTkNIRVNURVIgQkxWRC4KLQkJCQlMT1MgR0FUT1MgQ0EgOTUwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTlGICAgKGhleCkJCUNPTU1WSVNJT04gQ09SUC4KLTAwQTA5RiAgICAgKGJhc2UgMTYpCQlDT01NVklTSU9OIENPUlAuCi0JCQkJNTEwIExPR1VFIEFWRS4KLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1BMCAgIChoZXgpCQlDT01QQUNUIERBVEEsIExURC4KLTAwQTBBMCAgICAgKGJhc2UgMTYpCQlDT01QQUNUIERBVEEsIExURC4KLQkJCQk1OCBESVRUT04gV0FMSwotCQkJCUNBTUJSSURHRSBDQjUgOFFFICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC1BMSAgIChoZXgpCQlFUElDIERBVEEgSU5DLgotMDBBMEExICAgICAoYmFzZSAxNikJCUVQSUMgREFUQSBJTkMuCi0JCQkJNzI4MCBSSVZFUiBST0FECi0JCQkJUklDSE1PTkQsICBCLkMuCi0JCQkJQ0FOQURBIFY2WCAxWDUKLQkJCQlDQU5BREEKLQotMDAtQTAtQTIgICAoaGV4KQkJRElHSUNPTSBTLlAuQS4KLTAwQTBBMiAgICAgKGJhc2UgMTYpCQlESUdJQ09NIFMuUC5BLgotCQkJCVZJQSBWT0xUQSAzOQotCQkJCTIxMDEwIENBUkRBTk8gQUwgQ0FNUE8gKFZBKQotCQkJCUlUQUxZCi0KLTAwLUEwLUEzICAgKGhleCkJCVJFTElBQkxFIFBPV0VSIE1FVEVSUwotMDBBMEEzICAgICAoYmFzZSAxNikJCVJFTElBQkxFIFBPV0VSIE1FVEVSUwotCQkJCTQwMCBCTE9TU09NIEhJTEwgUk9BRAotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMi00NTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1BNCAgIChoZXgpCQlNSUNST1MgU1lTVEVNUywgSU5DLgotMDBBMEE0ICAgICAoYmFzZSAxNikJCU1JQ1JPUyBTWVNURU1TLCBJTkMuCi0JCQkJMTIwMDAgQkFMVElNT1JFIEFWRU5VRQotCQkJCUJFTFRTVklMTEUgTUQgMjA3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUE1ICAgKGhleCkJCVRFS05PUiBNSUNST1NZU1RFTUUsIElOQy4KLTAwQTBBNSAgICAgKGJhc2UgMTYpCQlURUtOT1IgTUlDUk9TWVNURU1FLCBJTkMuCi0JCQkJNjE2IENVUkUgQk9JVklOCi0JCQkJQk9JU0JSSUFORCBRVUVCRUMKLQkJCQlKN0cgMkE3Ci0JCQkJQ0FOQURBCi0KLTAwLUEwLUE2ICAgKGhleCkJCU0uSS4gU1lTVEVNUywgSy5LLgotMDBBMEE2ICAgICAoYmFzZSAxNikJCU0uSS4gU1lTVEVNUywgSy5LLgotCQkJCTItNy0xMi0zMDggU2F0c3VraWdhb2thCi0JCQkJSWtlZGEtU2hpIE9zYWthIDU2My0wMDI5Ci0JCQkJSkFQQU4KLQotMDAtQTAtQTcgICAoaGV4KQkJVk9SQVggQ09SUE9SQVRJT04KLTAwQTBBNyAgICAgKGJhc2UgMTYpCQlWT1JBWCBDT1JQT1JBVElPTgotCQkJCTEwMzEgRUFTVCBEVUFORSBBVkVOVUUsIFNURSBICi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1BOCAgIChoZXgpCQlSRU5FWCBDT1JQT1JBVElPTgotMDBBMEE4ICAgICAoYmFzZSAxNikJCVJFTkVYIENPUlBPUkFUSU9OCi0JCQkJMjc1MCBLSUxMQVJORVkgRFJJVkUKLQkJCQlXT09EQlJJREdFIFZBIDIyMTkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1BOSAgIChoZXgpCQlOQVZURUwgQ09NTVVOSUNBVElPTlMgSU5DLgotMDBBMEE5ICAgICAoYmFzZSAxNikJCU5BVlRFTCBDT01NVU5JQ0FUSU9OUyBJTkMuCi0JCQkJNTUgUkVORlJFVyBEUklWRQotCQkJCU1BUktIQU0sIE9OVEFSSU8gTDNSIDhIMyAgCi0JCQkJQ0FOQURBCi0KLTAwLUEwLUFBICAgKGhleCkJCVNQQUNFTEFCUyBNRURJQ0FMCi0wMEEwQUEgICAgIChiYXNlIDE2KQkJU1BBQ0VMQUJTIE1FRElDQUwKLQkJCQk1MTUwIDIyMCBBdmUgU0UKLQkJCQlJc3NhcXVhaCBXQSA5ODAyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQUIgICAoaGV4KQkJTkVUQ1MgSU5GT1JNQVRJT05TVEVDSE5JSyBHTUJICi0wMEEwQUIgICAgIChiYXNlIDE2KQkJTkVUQ1MgSU5GT1JNQVRJT05TVEVDSE5JSyBHTUJICi0JCQkJS0FUSEFSSU5FTlNUUkFTU0UgMTctMTgKLQkJCQlELTEwNzExIEJFUkxJTiwKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1BMC1BQyAgIChoZXgpCQlHSUxBVCBTQVRFTExJVEUgTkVUV09SS1MsIExURC4KLTAwQTBBQyAgICAgKGJhc2UgMTYpCQlHSUxBVCBTQVRFTExJVEUgTkVUV09SS1MsIExURC4KLQkJCQkyNEEgSEFCQVJaRUwgU1RSRUVUCi0JCQkJVEVMIEFWSVYgIDY5NzEwCi0JCQkJSVNSQUVMCi0KLTAwLUEwLUFEICAgKGhleCkJCU1BUkNPTkkgU1BBCi0wMEEwQUQgICAgIChiYXNlIDE2KQkJTUFSQ09OSSBTUEEKLQkJCQlWSUEgTkVHUk9ORSwgMUEKLQkJCQkxNjE1MyBHRU5PVkEgQ09STklHTElBTk8gIAotCQkJCUlUQUxZCi0KLTAwLUEwLUFFICAgKGhleCkJCU5VQ09NIFNZU1RFTVMsIElOQy4KLTAwQTBBRSAgICAgKGJhc2UgMTYpCQlOVUNPTSBTWVNURU1TLCBJTkMuCi0JCQkJOUYtNiwgTk8gNCwgTEFORQotCQkJCTYwOSBDSFVORyBIU0lOIFJPQUQsIFNFQy4gNSwgU0FOIENIVU5HIEMKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQTAtQUYgICAoaGV4KQkJV01TIElORFVTVFJJRVMKLTAwQTBBRiAgICAgKGJhc2UgMTYpCQlXTVMgSU5EVVNUUklFUwotCQkJCTM0MDEgTi4gQ0FMSUZPUk5JQQotCQkJCUNISUNBR08gSUwgNjA2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUIwICAgKGhleCkJCUktTyBEQVRBIERFVklDRSwgSU5DLgotMDBBMEIwICAgICAoYmFzZSAxNikJCUktTyBEQVRBIERFVklDRSwgSU5DLgotCQkJCTI0LTEsIFNBS1VSQURBLU1BQ0hJCi0JCQkJS0FOQVpBV0EsIElTSElLQVdBIDkyMCAgCi0JCQkJSkFQQU4KLQotMDAtQTAtQjEgICAoaGV4KQkJRklSU1QgVklSVFVBTCBDT1JQT1JBVElPTgotMDBBMEIxICAgICAoYmFzZSAxNikJCUZJUlNUIFZJUlRVQUwgQ09SUE9SQVRJT04KLQkJCQkzMzkzIE9DVEFWSVVTIERSLi1TVEUuIyAxMDIKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjIgICAoaGV4KQkJU0hJTUEgU0VJS0kKLTAwQTBCMiAgICAgKGJhc2UgMTYpCQlTSElNQSBTRUlLSQotCQkJCTg1LCBTQUtBVEEgV0FLQVlBTUEtQ0lUWQotCQkJCVdBS0FZQU1BIDY0MQotCQkJCUpBUEFOCi0KLTAwLUEwLUIzICAgKGhleCkJCVpZS1JPTklYCi0wMEEwQjMgICAgIChiYXNlIDE2KQkJWllLUk9OSVgKLQkJCQk3MjQ4IFNPVVRIIFRVQ1NPTiBXQVkKLQkJCQlFTkdMRVdPT0QgQ08gODAxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUI0ICAgKGhleCkJCVRFWEFTIE1JQ1JPU1lTVEVNUywgSU5DLgotMDBBMEI0ICAgICAoYmFzZSAxNikJCVRFWEFTIE1JQ1JPU1lTVEVNUywgSU5DLgotCQkJCTU5NTkgQ09SUE9SQVRFIERSSVZFCi0JCQkJSE9VU1RPTiBUWCA3NzAzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjUgICAoaGV4KQkJM0ggVEVDSE5PTE9HWQotMDBBMEI1ICAgICAoYmFzZSAxNikJCTNIIFRFQ0hOT0xPR1kKLQkJCQkzMzc1IFNDT1RUIEJMVkQuICMzMzYKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjYgICAoaGV4KQkJU0FOUklUWiBBVVRPTUFUSU9OIENPLiwgTFRELgotMDBBMEI2ICAgICAoYmFzZSAxNikJCVNBTlJJVFogQVVUT01BVElPTiBDTy4sIExURC4KLQkJCQk0LTIxIE1JTkFNSSBOQVJVU0UKLQkJCQlNQUNISURBIENJVFkgVE9LWU8gIDE5NAotCQkJCUpBUEFOCi0KLTAwLUEwLUI3ICAgKGhleCkJCUNPUkRBTlQsIElOQy4KLTAwQTBCNyAgICAgKGJhc2UgMTYpCQlDT1JEQU5ULCBJTkMuCi0JCQkJMTE0MDAgQ09NTUVSQ0UgUEFSSyBEUi4KLQkJCQlSRVNUT04gVkEgMjIwOTEtMTUwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjggICAoaGV4KQkJU1lNQklPUyBMT0dJQyBJTkMuCi0wMEEwQjggICAgIChiYXNlIDE2KQkJU1lNQklPUyBMT0dJQyBJTkMuCi0JCQkJMjAwMSBEYW5maWVsZCBDdC4KLQkJCQlGb3J0IENvbGxpbnMgQ08gODA1MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUI5ICAgKGhleCkJCUVBR0xFIFRFQ0hOT0xPR1ksIElOQy4KLTAwQTBCOSAgICAgKGJhc2UgMTYpCQlFQUdMRSBURUNITk9MT0dZLCBJTkMuCi0JCQkJNjgwMCBPUkFOR0VUSE9SUEUgQVZFLiwgVU5JVCBBCi0JCQkJQlVFTkEgUEFSSyBDQSA5MDYyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQkEgICAoaGV4KQkJUEFUVE9OIEVMRUNUUk9OSUNTIENPLgotMDBBMEJBICAgICAoYmFzZSAxNikJCVBBVFRPTiBFTEVDVFJPTklDUyBDTy4KLQkJCQk3NjIyIFJJQ0tFTkJBQ0tFUiBEUklWRQotCQkJCUdBSVRIRVJTQlVSRyBNRCAyMDg3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQkIgICAoaGV4KQkJSElMQU4gR01CSAotMDBBMEJCICAgICAoYmFzZSAxNikJCUhJTEFOIEdNQkgKLQkJCQlIQUlELVVORC1ORVUtU1RSQVNTRSA3Ci0JCQkJRC03NjEzMSBLQVJMU1JVSEUKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLUJDICAgKGhleCkJCVZJQVNBVCwgSU5DT1JQT1JBVEVECi0wMEEwQkMgICAgIChiYXNlIDE2KQkJVklBU0FULCBJTkNPUlBPUkFURUQKLQkJCQk2MTU1IEVsIENhbWlubyBSZWFsCi0JCQkJQ2FybHNiYWQgQ2EgOTIwMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUJEICAgKGhleCkJCUktVEVDSCBDT1JQLgotMDBBMEJEICAgICAoYmFzZSAxNikJCUktVEVDSCBDT1JQLgotCQkJCTEwMjAwIFZBTExFWSBWSUVXIFJPQUQKLQkJCQlFREVOIFBSQUlSSUUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUJFICAgKGhleCkJCUlOVEVHUkFURUQgQ0lSQ1VJVCBTWVNURU1TLCBJTkMuIENPTU1VTklDQVRJT05TIEdST1VQCi0wMEEwQkUgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBDSVJDVUlUIFNZU1RFTVMsIElOQy4gQ09NTVVOSUNBVElPTlMgR1JPVVAKLQkJCQkxMjcxIFBBUktNT09SIEFWRU5VRQotCQkJCVNBTiBKT1NFIENBIDk1MTI2LTM0NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUJGICAgKGhleCkJCVdJUkVMRVNTIERBVEEgR1JPVVAgTU9UT1JPTEEKLTAwQTBCRiAgICAgKGJhc2UgMTYpCQlXSVJFTEVTUyBEQVRBIEdST1VQIE1PVE9ST0xBCi0JCQkJMTIwMSBFLiBXSUxFWSBST0FECi0JCQkJU0NIQVVNQlVSRyBJTCA2MDE3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQzAgICAoaGV4KQkJRElHSVRBTCBMSU5LIENPUlAuCi0wMEEwQzAgICAgIChiYXNlIDE2KQkJRElHSVRBTCBMSU5LIENPUlAuCi0JCQkJMjE3IEhVTUJPTERUIENPVVJUCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1DMSAgIChoZXgpCQlPUlRJVlVTIE1FRElDQUwgQUIKLTAwQTBDMSAgICAgKGJhc2UgMTYpCQlPUlRJVlVTIE1FRElDQUwgQUIKLQkJCQlCT1ggNTEzCi0JCQkJUy0xODMyNSBUQUJZCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLUEwLUMyICAgKGhleCkJCVIuQS4gU1lTVEVNUyBDTy4sIExURC4KLTAwQTBDMiAgICAgKGJhc2UgMTYpCQlSLkEuIFNZU1RFTVMgQ08uLCBMVEQuCi0JCQkJMTg1MC0zIEhJUk9PS0FOT01VUkEKLQkJCQlTSElPSklSSS1TSEksIE5BR0FNTyAzOTktMDcKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUEwLUMzICAgKGhleCkJCVVOSUNPTVBVVEVSIEdNQkgKLTAwQTBDMyAgICAgKGJhc2UgMTYpCQlVTklDT01QVVRFUiBHTUJICi0JCQkJTElNQlVSR0VSIFNUUkFTU0UgNDgKLQkJCQlELTYxNDc2IEtST05CRVJHIEkuVC5TLgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLUM0ICAgKGhleCkJCUNSSVNUSUUgRUxFQ1RST05JQ1MgTFRELgotMDBBMEM0ICAgICAoYmFzZSAxNikJCUNSSVNUSUUgRUxFQ1RST05JQ1MgTFRELgotCQkJCUJPTkQnUyBNSUxMCi0JCQkJU1RPTkVIT1VTRQotCQkJCUdMT1VDRVNURVJTSElSRSBHTDEwIDNSRyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtQzUgICAoaGV4KQkJWllYRUwgQ09NTVVOSUNBVElPTgotMDBBMEM1ICAgICAoYmFzZSAxNikJCVpZWEVMIENPTU1VTklDQVRJT04KLQkJCQkyTkQgRkxSLiwgIDU4IFBBUksgQVZFTlVFIElJCi0JCQkJU0NJRU5DRSBCQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOQ0hVIDMwMDc3ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUEwLUM2ICAgKGhleCkJCVFVQUxDT01NIElOQ09SUE9SQVRFRAotMDBBMEM2ICAgICAoYmFzZSAxNikJCVFVQUxDT01NIElOQ09SUE9SQVRFRAotCQkJCSA1Nzc1IE1vcmVob3VzZSBEcgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQzcgICAoaGV4KQkJVEFESVJBTiBURUxFQ09NTVVOSUNBVElPTlMKLTAwQTBDNyAgICAgKGJhc2UgMTYpCQlUQURJUkFOIFRFTEVDT01NVU5JQ0FUSU9OUwotCQkJCVAuTy4gQk9YIDUwMAotCQkJCVBFVEFILVRJS1ZBIDQ5MTA0ICAKLQkJCQlJU1JBRUwKLQotMDAtQTAtQzggICAoaGV4KQkJQURUUkFOIElOQy4KLTAwQTBDOCAgICAgKGJhc2UgMTYpCQlBRFRSQU4gSU5DLgotCQkJCTkwMSBFWFBMT1JFUiBCTFZELgotCQkJCUhVTlRTVklMTEUgQUwgMzU4MDYtMjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQzkgICAoaGV4KQkJSU5URUwgQ09SUE9SQVRJT04gLSBIRjEtMDYKLTAwQTBDOSAgICAgKGJhc2UgMTYpCQlJTlRFTCBDT1JQT1JBVElPTiAtIEhGMS0wNgotCQkJCTUyMDAgTkUgRUxBTSBZT1VORyBQQVJLV0FZCi0JCQkJSElMTFNCT1JPIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1DQSAgIChoZXgpCQlGVUpJVFNVIERFTlNPIExURC4KLTAwQTBDQSAgICAgKGJhc2UgMTYpCQlGVUpJVFNVIERFTlNPIExURC4KLQkJCQkzMDU1IE9SQ0hBUkQgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQ0IgICAoaGV4KQkJQVJLIFRFTEVDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBBMENCICAgICAoYmFzZSAxNikJCUFSSyBURUxFQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMjQgQ0FSTUVOIExBTkUtLVNVSVRFCi0JCQkJU0FOVEEgTUFSSUEgQ0EgOTM0NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUNDICAgKGhleCkJCUxJVEUtT04gQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQTBDQyAgICAgKGJhc2UgMTYpCQlMSVRFLU9OIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNzIwIFMuIEhJTExWSUVXIERSSVZFCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUNEICAgKGhleCkJCURSLiBKT0hBTk5FUyBIRUlERU5IQUlOIEdtYkgKLTAwQTBDRCAgICAgKGJhc2UgMTYpCQlEUi4gSk9IQU5ORVMgSEVJREVOSEFJTiBHbWJICi0JCQkJRFIuLUpPSEFOTkVTLUhFSURFTkhBSU4gU1RSLgotCQkJCTgzMzAxIFRSQVVOUkVVVCAgCi0JCQkJR0VSTUFOWQotCi0wMC1BMC1DRSAgIChoZXgpCQlFY2Vzc2EKLTAwQTBDRSAgICAgKGJhc2UgMTYpCQlFY2Vzc2EKLQkJCQkyODAwIENhbXB1cyBEcml2ZSAKLQkJCQlTdWl0ZSAxNDAKLQkJCQlQbHltb3V0aCBNTiA1NTQ0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQ0YgICAoaGV4KQkJU09UQVMsIElOQy4KLTAwQTBDRiAgICAgKGJhc2UgMTYpCQlTT1RBUywgSU5DLgotCQkJCTIgUkVTRUFSQ0ggUExBQ0UsIFNURS4KLQkJCQlST0NLVklMTEUgTUQgMjA4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUQwICAgKGhleCkJCVRFTiBYIFRFQ0hOT0xPR1ksIElOQy4KLTAwQTBEMCAgICAgKGJhc2UgMTYpCQlURU4gWCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTMwOTEgUE9ORCBTUFJJTkdTIFJPQUQsIFN1aXRlIEItMjAwCi0JCQkJQVVTVElOIFRYIDc4NzI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1EMSAgIChoZXgpCQlJTlZFTlRFQyBDT1JQT1JBVElPTgotMDBBMEQxICAgICAoYmFzZSAxNikJCUlOVkVOVEVDIENPUlBPUkFUSU9OCi0JCQkJSU5WRU5URUMgQlVJTERJTkcKLQkJCQk2NiBIT1UtS0FORyBTVFJFRVQgU0hJLUxJTiBESVNUUklDVCwgVEFJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUEwLUQyICAgKGhleCkJCUFMTElFRCBURUxFU0lTIElOVEVSTkFUSU9OQUwgQ09SUE9SQVRJT04KLTAwQTBEMiAgICAgKGJhc2UgMTYpCQlBTExJRUQgVEVMRVNJUyBJTlRFUk5BVElPTkFMIENPUlBPUkFUSU9OCi0JCQkJOTUwIEtJRkVSIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUQzICAgKGhleCkJCUlOU1RFTSBDT01QVVRFUiBTWVNURU1TLCBMVEQuCi0wMEEwRDMgICAgIChiYXNlIDE2KQkJSU5TVEVNIENPTVBVVEVSIFNZU1RFTVMsIExURC4KLQkJCQlXQUxUT04gSU5EVVNUUklBTCBFU1RBVEUKLQkJCQlTVE9ORSwgU1RBRkZPUkRTSElSRSBTVDE1IE9MVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLUQ0ICAgKGhleCkJCVJBRElPTEFOLCAgSU5DLgotMDBBMEQ0ICAgICAoYmFzZSAxNikJCVJBRElPTEFOLCAgSU5DLgotCQkJCTQ1NCBERUdVSUdORSBEUklWRSAtIFNURQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRDUgICAoaGV4KQkJU0lFUlJBIFdJUkVMRVNTIElOQy4KLTAwQTBENSAgICAgKGJhc2UgMTYpCQlTSUVSUkEgV0lSRUxFU1MgSU5DLgotCQkJCTEzODExIFdpcmVsZXNzIFdheQotCQkJCVJJQ0hNT05EIEIuQy4gVjZWIDNBNAotCQkJCUNBTkFEQQotCi0wMC1BMC1ENiAgIChoZXgpCQlTQkUsIElOQy4KLTAwQTBENiAgICAgKGJhc2UgMTYpCQlTQkUsIElOQy4KLQkJCQkyMzA1IENhbWlubyBSYW1vbgotCQkJCVNBTiBSQU1PTiBDQSA5NDU4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRDcgICAoaGV4KQkJS0FTVEVOIENIQVNFIEFQUExJRUQgUkVTRUFSQ0gKLTAwQTBENyAgICAgKGJhc2UgMTYpCQlLQVNURU4gQ0hBU0UgQVBQTElFRCBSRVNFQVJDSAotCQkJCTUxMDAgT1JCSVRPUiBEUklWRQotCQkJCU1JU1NJU1NBVUdBLCBPTlRBUklPCi0JCQkJTDRXIDRaNAotCQkJCUNBTkFEQQotCi0wMC1BMC1EOCAgIChoZXgpCQlTUEVDVFJBIC0gVEVLCi0wMEEwRDggICAgIChiYXNlIDE2KQkJU1BFQ1RSQSAtIFRFSwotCQkJCU9VVEdBTkcgTEFORQotCQkJCVBJQ0tFUklORyBOT1JUSCBZT1JLU0hJUkUKLQkJCQlFTkdMQU5EIFkwMTggRkpBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtRDkgICAoaGV4KQkJQ09OVkVYIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMEEwRDkgICAgIChiYXNlIDE2KQkJQ09OVkVYIENPTVBVVEVSIENPUlBPUkFUSU9OCi0JCQkJMzAwMCBXQVRFUlZJRVcgUEFSS1dBWQotCQkJCVAuTy4gQk9YIDgzMzg1MQotCQkJCVJJQ0hBUkRTT04gVFggNzUwODMtMzg1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtREEgICAoaGV4KQkJSU5URUdSQVRFRCBTWVNURU1TIFRlY2hub2xvZ3ksIEluYy4KLTAwQTBEQSAgICAgKGJhc2UgMTYpCQlJTlRFR1JBVEVEIFNZU1RFTVMgVGVjaG5vbG9neSwgSW5jLgotCQkJCTQ2MDEgUFJFU0lERU5UUyBEUklWRQotCQkJCVNVSVRFICMyMTAKLQkJCQlMQU5IQU0gTUQgMjA3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLURCICAgKGhleCkJCUZJU0hFUiAmIFBBWUtFTCBQUk9EVUNUSU9OCi0wMEEwREIgICAgIChiYXNlIDE2KQkJRklTSEVSICYgUEFZS0VMIFBST0RVQ1RJT04KLQkJCQlNQUNISU5FUlkgTElNSVRFRAotCQkJCVAuTy4gQk9YIDU4LTIyMywgR1JFRU5NT1VOVCBBVUNLTEFORAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLUEwLURDICAgKGhleCkJCU8uTi4gRUxFQ1RST05JQyBDTy4sIExURC4KLTAwQTBEQyAgICAgKGJhc2UgMTYpCQlPLk4uIEVMRUNUUk9OSUMgQ08uLCBMVEQuCi0JCQkJMy0yMC0yNywgVEFSVU1JCi0JCQkJU1VJVEEsIE9TQUtBIDU2NCAgCi0JCQkJSkFQQU4KLQotMDAtQTAtREQgICAoaGV4KQkJQVpPTklYIENPUlBPUkFUSU9OCi0wMEEwREQgICAgIChiYXNlIDE2KQkJQVpPTklYIENPUlBPUkFUSU9OCi0JCQkJOTAwIE1JRERMRVNFWCBUVVJOUElLRQotCQkJCUJMREcuCi0JCQkJQklMTEVSSUNBIE1BIDAxODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1ERSAgIChoZXgpCQlZQU1BSEEgQ09SUE9SQVRJT04KLTAwQTBERSAgICAgKGJhc2UgMTYpCQlZQU1BSEEgQ09SUE9SQVRJT04KLQkJCQlFTEVDVFJPTklDIERFVklDRVMgRElWSVNJT04KLQkJCQkyMDMgTUFUU1VOT0tJSklNQSBUT1lPT0tBLU1VUkEgSVdBVEEtR1VOCi0JCQkJNDM4LTAxCi0JCQkJSkFQQU4KLQotMDAtQTAtREYgICAoaGV4KQkJU1RTIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBBMERGICAgICAoYmFzZSAxNikJCVNUUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMzc2NSBTVC4gQ0hBUkxFUyBST0NLIFJELgotCQkJCVNVSVRFICMxMDgKLQkJCQlCUklER0VUT04gTU8gNjMwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUUwICAgKGhleCkJCVRFTk5ZU09OIFRFQ0hOT0xPR0lFUyBQVFkgTFRECi0wMEEwRTAgICAgIChiYXNlIDE2KQkJVEVOTllTT04gVEVDSE5PTE9HSUVTIFBUWSBMVEQKLQkJCQkxNCBCVVNJTkVTUyBQQVJLIERSSVZFCi0JCQkJTk9UVElORyBISUxMCi0JCQkJVklDVE9SSUEgLSAzMTY4ICAKLQkJCQlBVVNUUkFMSUEKLQotMDAtQTAtRTEgICAoaGV4KQkJV0VTVFBPUlQgUkVTRUFSQ0ggQVNTT0NJQVRFUywgSU5DLgotMDBBMEUxICAgICAoYmFzZSAxNikJCVdFU1RQT1JUIFJFU0VBUkNIIEFTU09DSUFURVMsIElOQy4KLQkJCQk2MTAyIEFSTElOR1RPTgotCQkJCVJBWVRPV04gTU8gNjQxMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUUyICAgKGhleCkJCUtlaXNva3VnaWtlbiBDb3Jwb3JhdGlvbgotMDBBMEUyICAgICAoYmFzZSAxNikJCUtlaXNva3VnaWtlbiBDb3Jwb3JhdGlvbgotCQkJCTIwMjEtNSBIb3VzaGFrdWppCi0JCQkJVGFrYW5lemF3YS1tYWNoaQotCQkJCVNoaW95YS1ndW4gVG9jaGlnaSAzMjktMTIzMwotCQkJCUpBUEFOCi0KLTAwLUEwLUUzICAgKGhleCkJCVhLTCBTWVNURU1TIENPUlAuCi0wMEEwRTMgICAgIChiYXNlIDE2KQkJWEtMIFNZU1RFTVMgQ09SUC4KLQkJCQk4NDIwIDE1NFRIIEFWRS4gTkUKLQkJCQlSRURNT05EIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1FNCAgIChoZXgpCQlPUFRJUVVFU1QKLTAwQTBFNCAgICAgKGJhc2UgMTYpCQlPUFRJUVVFU1QKLQkJCQkyMDQ5MCBCVVNJTkVTUyBQQVJLV0FZCi0JCQkJV0FMTlVUIENBIDkxNzg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1FNSAgIChoZXgpCQlOSEMgQ09NTVVOSUNBVElPTlMKLTAwQTBFNSAgICAgKGJhc2UgMTYpCQlOSEMgQ09NTVVOSUNBVElPTlMKLQkJCQk1NDUwIENPVEUgREUgTElFU1NFCi0JCQkJTU9OVFJFQUwsIFFVRUJFQyBINFAgMUE1Ci0JCQkJQ0FOQURBCi0KLTAwLUEwLUU2ICAgKGhleCkJCURJQUxPR0lDIENPUlBPUkFUSU9OCi0wMEEwRTYgICAgIChiYXNlIDE2KQkJRElBTE9HSUMgQ09SUE9SQVRJT04KLQkJCQkxNTE1IFJPVVRFIDEwCi0JCQkJUEFSU0lQUEFOWSBOSiAwNzA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRTcgICAoaGV4KQkJQ0VOVFJBTCBEQVRBIENPUlBPUkFUSU9OCi0wMEEwRTcgICAgIChiYXNlIDE2KQkJQ0VOVFJBTCBEQVRBIENPUlBPUkFUSU9OCi0JCQkJMTYwMiBORVdUT04gRFJJVkUKLQkJCQlDSEFNUEFJR04gSUwgNjE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUU4ICAgKGhleCkJCVJFVVRFUlMgSE9MRElOR1MgUExDCi0wMEEwRTggICAgIChiYXNlIDE2KQkJUkVVVEVSUyBIT0xESU5HUyBQTEMKLQkJCQk4NSwgRkxFRVQgU1RSRUVUCi0JCQkJTE9ORE9OICBFQzRQIDRBSgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC1FOSAgIChoZXgpCQlFTEVDVFJPTklDIFJFVEFJTElORyBTWVNURU1TIElOVEVSTkFUSU9OQUwKLTAwQTBFOSAgICAgKGJhc2UgMTYpCQlFTEVDVFJPTklDIFJFVEFJTElORyBTWVNURU1TIElOVEVSTkFUSU9OQUwKLQkJCQkzNzIgREFOQlVSWSBST0FECi0JCQkJV0lMVE9OIENUIDA2ODk3LTI1MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUVBICAgKGhleCkJCUVUSEVSQ09NIENPUlAuCi0wMEEwRUEgICAgIChiYXNlIDE2KQkJRVRIRVJDT00gQ09SUC4KLQkJCQk0NTk5MCBIT1RDSEtJU1MgU1QuCi0JCQkJRlJFRU1PTlQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUVCICAgKGhleCkJCUVuY29yZSBOZXR3b3JrcywgSW5jLgotMDBBMEVCICAgICAoYmFzZSAxNikJCUVuY29yZSBOZXR3b3JrcywgSW5jLgotCQkJCTM4MDAgQ29uY29yZGUgUGFya3dheSwKLQkJCQlTdWl0ZSAxNTAwCi0JCQkJQ2hhbnRpbGx5LCBWQSAyMDE1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRUMgICAoaGV4KQkJVFJBTlNNSVRUT04gTFRELgotMDBBMEVDICAgICAoYmFzZSAxNikJCVRSQU5TTUlUVE9OIExURC4KLQkJCQlTTUlTQlkgUk9BRAotCQkJCUFTSEJZIERFIExBIFpPVUNICi0JCQkJTEVJQ0VTVEVSU0hJUkUgTEU2NSAyVUcgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLUVEICAgKGhleCkJCUJyb29rcyBBdXRvbWF0aW9uLCBJbmMuCi0wMEEwRUQgICAgIChiYXNlIDE2KQkJQnJvb2tzIEF1dG9tYXRpb24sIEluYy4KLQkJCQkxNSBFbGl6YWJldGggRHJpdmUKLQkJCQlDaGVsbXNmb3JkIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1FRSAgIChoZXgpCQlOQVNIT0JBIE5FVFdPUktTCi0wMEEwRUUgICAgIChiYXNlIDE2KQkJTkFTSE9CQSBORVRXT1JLUwotCQkJCTktMTEgR09MRFNNSVRIIFNULgotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRUYgICAoaGV4KQkJTFVDSURBVEEgTFRELgotMDBBMEVGICAgICAoYmFzZSAxNikJCUxVQ0lEQVRBIExURC4KLQkJCQlMVUNJREFUQSBIT1VTRQotCQkJCVNFTFdZTiBDTE9TRSwKLQkJCQlHUkVBVCBTSEVMRk9SRCBDQU1CUklER0UgIENCMiA1SEEgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtRjAgICAoaGV4KQkJVE9ST05UTyBNSUNST0VMRUNUUk9OSUNTIElOQy4KLTAwQTBGMCAgICAgKGJhc2UgMTYpCQlUT1JPTlRPIE1JQ1JPRUxFQ1RST05JQ1MgSU5DLgotCQkJCTUxNDkgQlJBRENPIEJPVUxFVkFSRAotCQkJCU1JU1NJU1NBVUdBLCBPTlRBUklPCi0JCQkJTDRXIDJBNgotCQkJCUNBTkFEQQotCi0wMC1BMC1GMSAgIChoZXgpCQlNVEkKLTAwQTBGMSAgICAgKGJhc2UgMTYpCQlNVEkKLQkJCQk0OTA1IEUuIExBIFBBTE1BIEFWRU5VRQotCQkJCUFOQUhFSU0gQ0EgOTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUYyICAgKGhleCkJCUlORk9URUsgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQTBGMiAgICAgKGJhc2UgMTYpCQlJTkZPVEVLIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTExIEFOWkEgQkxWRC4sICMyMDMKLQkJCQlCVVJMSU5HQU1FIENBIDk0MDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GMyAgIChoZXgpCQlTVEFVQkxJCi0wMEEwRjMgICAgIChiYXNlIDE2KQkJU1RBVUJMSQotCQkJCTE4MyBSVUUgREVTIFVTSU5FUwotCQkJCUJQIDcwIEY3NDIxMCBGQVZFUkdFUwotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC1BMC1GNCAgIChoZXgpCQlHRQotMDBBMEY0ICAgICAoYmFzZSAxNikJCUdFCi0JCQkJVy02NTcKLQkJCQkzMDAwIE4uIEdSQU5EVklFVyBCTFZELgotCQkJCVdBVUtFU0hBIFdJIDUzMTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GNSAgIChoZXgpCQlSQURHVUFSRCBMVEQuCi0wMEEwRjUgICAgIChiYXNlIDE2KQkJUkFER1VBUkQgTFRELgotCQkJCTggSEFORUNIT1NIRVQgU1RSRUVUCi0JCQkJVEVMLUFWSVYgIDY5NzEwICAKLQkJCQlJU1JBRUwKLQotMDAtQTAtRjYgICAoaGV4KQkJQXV0b0dhcyBTeXN0ZW1zIEluYy4KLTAwQTBGNiAgICAgKGJhc2UgMTYpCQlBdXRvR2FzIFN5c3RlbXMgSW5jLgotCQkJCVAuTy4gQk9YIDY5NTcKLQkJCQlBQklPTEVORSBUWCA3OTYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRjcgICAoaGV4KQkJVi5JIENPTVBVVEVSIENPUlAuCi0wMEEwRjcgICAgIChiYXNlIDE2KQkJVi5JIENPTVBVVEVSIENPUlAuCi0JCQkJNTMxIEVOQ0lOSVRBUyBCTFZELS0jMTE0Ci0JCQkJRU5DSU5JVEFTIENBIDkyMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GOCAgIChoZXgpCQlTWU1CT0wgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEEwRjggICAgIChiYXNlIDE2KQkJU1lNQk9MIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTExMDEgU09VVEggV0lOQ0hFU1RFUiBCTFZELgotCQkJCVNVSVRFICAjIEItMTEwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUY5ICAgKGhleCkJCUJJTlRFQyBDT01NVU5JQ0FUSU9OUyBHTUJICi0wMEEwRjkgICAgIChiYXNlIDE2KQkJQklOVEVDIENPTU1VTklDQVRJT05TIEdNQkgKLQkJCQlTVUVEV0VTVFBBUksgOTQKLQkJCQk5MDQ0OSBOVUVSTkJFUkcgIAotCQkJCUdFUk1BTlkKLQotMDAtQTAtRkEgICAoaGV4KQkJTWFyY29uaSBDb21tdW5pY2F0aW9uIEdtYkgKLTAwQTBGQSAgICAgKGJhc2UgMTYpCQlNYXJjb25pIENvbW11bmljYXRpb24gR21iSAotCQkJCUdlcmJlcnN0cmFzc2UgMzMKLQkJCQlELTcxNTIyIEJhY25rbmFuZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLUZCICAgKGhleCkJCVRPUkFZIEVOR0lORUVSSU5HIENPLiwgTFRELgotMDBBMEZCICAgICAoYmFzZSAxNikJCVRPUkFZIEVOR0lORUVSSU5HIENPLiwgTFRELgotCQkJCTEtNDUsIE9FIDEtQ0hPTUUsIE9UU1UgQ0lUWQotCQkJCVNISUdBLAotCQkJCTUyMC0yMSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUEwLUZDICAgKGhleCkJCUlNQUdFIFNDSUVOQ0VTLCBJTkMuCi0wMEEwRkMgICAgIChiYXNlIDE2KQkJSU1BR0UgU0NJRU5DRVMsIElOQy4KLQkJCQk3NTAwIElOTk9WQVRJT04gV0FZCi0JCQkJTUFTT04gT0ggNDUwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUZEICAgKGhleCkJCVNDSVRFWCBESUdJVEFMIFBSSU5USU5HLCBJTkMuCi0wMEEwRkQgICAgIChiYXNlIDE2KQkJU0NJVEVYIERJR0lUQUwgUFJJTlRJTkcsIElOQy4KLQkJCQkzMTAwIFJFU0VBUkNIIEJMVkQuCi0JCQkJREFZVE9OIE9IIDQ1NDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GRSAgIChoZXgpCQlCT1NUT04gVEVDSE5PTE9HWSwgSU5DLgotMDBBMEZFICAgICAoYmFzZSAxNikJCUJPU1RPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTAwIFFVQU5OQVBPV0lUVCBQQVJLV0FZCi0JCQkJV0FLRUZJRUxEIE1BIDAxODgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GRiAgIChoZXgpCQlURUxMQUJTIE9QRVJBVElPTlMsIElOQy4KLTAwQTBGRiAgICAgKGJhc2UgMTYpCQlURUxMQUJTIE9QRVJBVElPTlMsIElOQy4KLQkJCQkxMDAwIFJFTUlOR1RPTiBCTFZELgotCQkJCUJPTElOR0JST09LICBJTCAgNjA0NDAKLQkJCQk2MDQ0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTEtREUgICAoaGV4KQkJU2hlblpoZW4gU2hpSHVhIFRlY2hub2xvZ3kgQ08uLExURAotMDBBMURFICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIFNoaUh1YSBUZWNobm9sb2d5IENPLixMVEQKLQkJCQlSb29tNTA1LDUvRiBUc2luZ1lpIEJ1aWxkaW5nLExhbmdTaGFuIDJlZCBSb2FkLEhpZ2gtVGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA1MgotCQkJCUNISU5BCi0KLTAwLUEyLURBICAgKGhleCkJCUlOQVQgR21iSAotMDBBMkRBICAgICAoYmFzZSAxNikJCUlOQVQgR21iSAotCQkJCU9zdGVuZHN0ci4gNTBBCi0JCQkJTnVyZW1iZXJnIEJhdmFyaWEgOTA0ODIKLQkJCQlHRVJNQU5ZCi0KLTAwLUFBLTAwICAgKGhleCkJCUlOVEVMIENPUlBPUkFUSU9OCi0wMEFBMDAgICAgIChiYXNlIDE2KQkJSU5URUwgQ09SUE9SQVRJT04KLQkJCQk1MjAwIE5FIEVMQU0gWU9VTkcgUEFSS1dBWQotCQkJCUhJTExTQk9STyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQUEtMDEgICAoaGV4KQkJSU5URUwgQ09SUE9SQVRJT04KLTAwQUEwMSAgICAgKGJhc2UgMTYpCQlJTlRFTCBDT1JQT1JBVElPTgotCQkJCQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQUEtMDIgICAoaGV4KQkJSU5URUwgQ09SUE9SQVRJT04KLTAwQUEwMiAgICAgKGJhc2UgMTYpCQlJTlRFTCBDT1JQT1JBVElPTgotCQkJCQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQUEtM0MgICAoaGV4KQkJT0xJVkVUVEkgVEVMRUNPTSBTUEEgKE9MVEVDTykKLTAwQUEzQyAgICAgKGJhc2UgMTYpCQlPTElWRVRUSSBURUxFQ09NIFNQQSAoT0xURUNPKQotCQkJCTEwMDYyIE1JTExFUiBBVkUuLVNURS4jMjA0Ci0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC0wOSAgIChoZXgpCQlHcmFzcyBWYWxsZXkgR3JvdXAKLTAwQjAwOSAgICAgKGJhc2UgMTYpCQlHcmFzcyBWYWxsZXkgR3JvdXAKLQkJCQlQLk8uIEJveCA1OTkwMDAKLQkJCQlOZXZhZGEgQ2l0eSBDQSA5NTk1OS03OTAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC0xNyAgIChoZXgpCQlJbmZvR2VhciBUZWNobm9sb2d5IENvcnAuCi0wMEIwMTcgICAgIChiYXNlIDE2KQkJSW5mb0dlYXIgVGVjaG5vbG9neSBDb3JwLgotCQkJCTIwNTUgV29vZHNpZGUgUm9hZAotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtMTkgICAoaGV4KQkJQ2FzaS1SdXNjbwotMDBCMDE5ICAgICAoYmFzZSAxNikJCUNhc2ktUnVzY28KLQkJCQkxMTU1IEJyb2tlbiBTb3VuZCBQa3d5Ci0JCQkJQm9jYSBSYXRvbiBGTCAzMzQ5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtMUMgICAoaGV4KQkJV2VzdHBvcnQgVGVjaG5vbG9naWVzCi0wMEIwMUMgICAgIChiYXNlIDE2KQkJV2VzdHBvcnQgVGVjaG5vbG9naWVzCi0JCQkJMTUgQ2FwZWxsYSBDb3VydCwgVW5pdCAxMTYKLQkJCQlOZXBlYW4gT250YXJpbyAKLQkJCQlDQU5BREEKLQotMDAtQjAtMUUgICAoaGV4KQkJUmFudGljIExhYnMsIEluYy4KLTAwQjAxRSAgICAgKGJhc2UgMTYpCQlSYW50aWMgTGFicywgSW5jLgotCQkJCTcwMiBCcmF6b3MsICBTdWl0ZSAjNTAwCi0JCQkJQXVzdGluIFRYIDc4NzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC0yQSAgIChoZXgpCQlPUlNZUyBHbWJICi0wMEIwMkEgICAgIChiYXNlIDE2KQkJT1JTWVMgR21iSAotCQkJCUFtIFN0YWR0Z3JhYmVuIDI1Ci0JCQkJRC04ODY3NyBNYXJrZG9yZiAgCi0JCQkJR0VSTUFOWQotCi0wMC1CMC0yRCAgIChoZXgpCQlWaWFHYXRlIFRlY2hub2xvZ2llcywgSW5jLgotMDBCMDJEICAgICAoYmFzZSAxNikJCVZpYUdhdGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNzQ1IFJvdXRlIDIwMi8yMDYKLQkJCQlTdWl0ZSA1Ci0JCQkJQnJpZGdld2F0ZXIgTkogMDg4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTMzICAgKGhleCkJCU9BTyAiSXpoZXZza2l5IHJhZGlvemF2b2QiCi0wMEIwMzMgICAgIChiYXNlIDE2KQkJT0FPICJJemhldnNraXkgcmFkaW96YXZvZCIKLQkJCQkxOSBCYXppc25heWEgc3RyZWV0Ci0JCQkJSXpoZXZzayBVZG11cnQgUmVwdWJsaWMgNDI2MDM0Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLUIwLTNCICAgKGhleCkJCUhpUSBOZXR3b3JrcwotMDBCMDNCICAgICAoYmFzZSAxNikJCUhpUSBOZXR3b3JrcwotCQkJCTI0NzUgQXVndXN0aW5lIERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTQ4ICAgKGhleCkJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDBCMDQ4ICAgICAoYmFzZSAxNikJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTg2MTYgRnJlZXBvcnQgUGFya3dheQotCQkJCU1TIEEyCi0JCQkJSXJ2aW5nIFRYIDc1MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC00QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwNEEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTUyICAgKGhleCkJCUF0aGVyb3MgQ29tbXVuaWNhdGlvbnMKLTAwQjA1MiAgICAgKGJhc2UgMTYpCQlBdGhlcm9zIENvbW11bmljYXRpb25zCi0JCQkJNTk1NSBULkcuIExlZSBCbHZkLCBTdGUuIDYwMAotCQkJCU9jYWxhIEZMIDMyODIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC02NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwNjQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTY5ICAgKGhleCkJCUhvbmV3ZWxsIE95Ci0wMEIwNjkgICAgIChiYXNlIDE2KQkJSG9uZXdlbGwgT3kKLQkJCQlQLk8uIEJveCAxNjgsIEZJTi03ODIwMQotCQkJCVZhcmthdXMKLQkJCQlGSU5MQU5ECi0KLTAwLUIwLTZEICAgKGhleCkJCUpvbmVzIEZ1dHVyZXggSW5jLgotMDBCMDZEICAgICAoYmFzZSAxNikJCUpvbmVzIEZ1dHVyZXggSW5jLgotCQkJCTM3MTUgQXRoZXJ0b24gUm9hZAotCQkJCVJvY2tsaW4gQ0EgOTU3NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTgwICAgKGhleCkJCU1hbm5lc21hbm4gSXB1bHN5cyBCLlYuCi0wMEIwODAgICAgIChiYXNlIDE2KQkJTWFubmVzbWFubiBJcHVsc3lzIEIuVi4KLQkJCQlCb3JkZXdpamtsYWFuIDE4Ci0JCQkJMjU5MSBYUiBUaGUgSGFndWUgIAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLUIwLTg2ICAgKGhleCkJCUxvY1NvZnQgTGltaXRlZAotMDBCMDg2ICAgICAoYmFzZSAxNikJCUxvY1NvZnQgTGltaXRlZAotCQkJCTcgQnJpZ2h0IFN0cmVldAotCQkJCUNsaXRoZXJvZSBMYW5jYXNoaXJlIEJCNyAxTlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1CMC04RSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwOEUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtOTEgICAoaGV4KQkJVHJhbnNtZXRhIENvcnAuCi0wMEIwOTEgICAgIChiYXNlIDE2KQkJVHJhbnNtZXRhIENvcnAuCi0JCQkJMzk0MCBGcmVlZG9tIENpcmNsZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC05NCAgIChoZXgpCQlBbGFyaXMsIEluYy4KLTAwQjA5NCAgICAgKGJhc2UgMTYpCQlBbGFyaXMsIEluYy4KLQkJCQk0NzMzOCBGcmVtb250IEJvdWxldmFyZAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTlBICAgKGhleCkJCU1vcnJvdyBUZWNobm9sb2dpZXMgQ29ycC4KLTAwQjA5QSAgICAgKGJhc2UgMTYpCQlNb3Jyb3cgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJMjMwMCBUYWxsIFBpbmVzIERyaXZlCi0JCQkJTGFyZ28gRkwgMzM3NzEtNTM0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtOUQgICAoaGV4KQkJUG9pbnQgR3JleSBSZXNlYXJjaCBJbmMuCi0wMEIwOUQgICAgIChiYXNlIDE2KQkJUG9pbnQgR3JleSBSZXNlYXJjaCBJbmMuCi0JCQkJMzA1LTE4NDcgV2VzdCBCcm9hZHdheQotCQkJCVZhbmNvdXZlciBCcml0aXNoIENvbHVtYmlhIFY2SiAxWTYgCi0JCQkJQ0FOQURBCi0KLTAwLUIwLUFDICAgKGhleCkJCVNJQUUtTWljcm9lbGV0dHJvbmljYSBTLnAuQS4KLTAwQjBBQyAgICAgKGJhc2UgMTYpCQlTSUFFLU1pY3JvZWxldHRyb25pY2EgUy5wLkEuCi0JCQkJVmlhIE1pY2hlbGFuZ2VsbyBCdW9uYXJyb3RpLCAyMQotCQkJCTIwMDkzIENvbG9nbm8gTS4gKE1sKSAgCi0JCQkJSVRBTFkKLQotMDAtQjAtQUUgICAoaGV4KQkJU3ltbWV0cmljb20KLTAwQjBBRSAgICAgKGJhc2UgMTYpCQlTeW1tZXRyaWNvbQotCQkJCTIzMDAgT3JjaGFyZCBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLUIzICAgKGhleCkJCVhzdHJlYW1pcyBQTEMKLTAwQjBCMyAgICAgKGJhc2UgMTYpCQlYc3RyZWFtaXMgUExDCi0JCQkJTWFnZGFsZW4gQ2VudHJlCi0JCQkJT3hmb3JkIFNjaWVuY2UgUGFyawotCQkJCU94Zm9yZCAwWDQgNEdBICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1CMC1DMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwQzIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLUM3ICAgKGhleCkJCVRlbGxhYnMgT3BlcmF0aW9ucywgSW5jLgotMDBCMEM3ICAgICAoYmFzZSAxNikJCVRlbGxhYnMgT3BlcmF0aW9ucywgSW5jLgotCQkJCU9uZSBUZWxsYWJzIENlbnRlcgotCQkJCTE0MTUgV2VzdCBEaWVobCBSb2FkCi0JCQkJTmFwZXJ2aWxsZSBJTCA2MDU2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtQ0UgICAoaGV4KQkJVEVDSE5PTE9HWSBSRVNDVUUKLTAwQjBDRSAgICAgKGJhc2UgMTYpCQlURUNITk9MT0dZIFJFU0NVRQotCQkJCTQ2IEF2ZW51ZSBkZXMgU3BlcmVzIEx1bWllcmUKLQkJCQk3ODE5IFRyb3BwZXMgIAotCQkJCUZSQU5DRQotCi0wMC1CMC1EMCAgIChoZXgpCQlEZWxsIENvbXB1dGVyIENvcnAuCi0wMEIwRDAgICAgIChiYXNlIDE2KQkJRGVsbCBDb21wdXRlciBDb3JwLgotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVFggNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLURCICAgKGhleCkJCU5leHRjZWxsLCBJbmMuCi0wMEIwREIgICAgIChiYXNlIDE2KQkJTmV4dGNlbGwsIEluYy4KLQkJCQk2NTEgRWFzdCAxOHRoIFN0cmVldAotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC1ERiAgIChoZXgpCQlSRUxEQVRBIEluYwotMDBCMERGICAgICAoYmFzZSAxNikJCVJFTERBVEEgSW5jCi0JCQkJMTcxOSBSb3V0ZSAxMCAgLSAgU3VpdGUgIzIwOQotCQkJCVBhcnNpcHBhbnkgTkogMDcwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLUU3ICAgKGhleCkJCUJyaXRpc2ggRmVkZXJhbCBMdGQuCi0wMEIwRTcgICAgIChiYXNlIDE2KQkJQnJpdGlzaCBGZWRlcmFsIEx0ZC4KLQkJCQlDYXN0bGUgTWlsbCBXb3JrcwotCQkJCUR1ZGxleSBEWTEgNERBIEVuZ2xhbmQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQjAtRUMgICAoaGV4KQkJRUFDRU0KLTAwQjBFQyAgICAgKGJhc2UgMTYpCQlFQUNFTQotCQkJCUF2ZW51ZSBMb3Vpc2UgMTQwLCBCdGUgNgotCQkJCUItMTA1MCBCUlVTU0VMUyAgCi0JCQkJQkVMR0lVTQotCi0wMC1CMC1FRSAgIChoZXgpCQlBamlsZSBTeXN0ZW1zLCBJbmMuCi0wMEIwRUUgICAgIChiYXNlIDE2KQkJQWppbGUgU3lzdGVtcywgSW5jLgotCQkJCTIwNCBDb2xsaW5zIFJkIE5FCi0JCQkJU3VpdGUgMTAwCi0JCQkJQ2VkYXIgUmFwaWRzIElBIDUyNDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC1GMCAgIChoZXgpCQlDQUxZIE5FVFdPUktTCi0wMEIwRjAgICAgIChiYXNlIDE2KQkJQ0FMWSBORVRXT1JLUwotCQkJCTI5NSBTYW50YSBBbm5hIENvdXJ0Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC1GNSAgIChoZXgpCQlOZXRXb3J0aCBUZWNobm9sb2dpZXMsIEluYy4KLTAwQjBGNSAgICAgKGJhc2UgMTYpCQlOZXRXb3J0aCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMDAwIEdlcm1hbnRvd24gUGlrZQotCQkJCWxkZy4gSi0xCi0JCQkJUGx5bW91dGggTWV0dGluZyBQQSAxOTQ2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjMtNDIgICAoaGV4KQkJTWFjcm9TQU4gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDBCMzQyICAgICAoYmFzZSAxNikJCU1hY3JvU0FOIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlSb29tIDEwMiwgTm8uMiBCdWlsZGluZwotCQkJCTMwMSBCaW4gWGluZyBSb2FkLEJpbmppYW5nIERpc3RyaWN0Ci0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDUyCi0JCQkJQ0hJTkEKLQotMDAtQjUtRDYgICAoaGV4KQkJT21uaWJpdCBJbmMuCi0wMEI1RDYgICAgIChiYXNlIDE2KQkJT21uaWJpdCBJbmMuCi0JCQkJMi03LTksIFNvdG8tS2FuZGEKLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtQkEtQzAgICAoaGV4KQkJQmlvbWV0cmljIEFjY2VzcyBDb21wYW55Ci0wMEJBQzAgICAgIChiYXNlIDE2KQkJQmlvbWV0cmljIEFjY2VzcyBDb21wYW55Ci0JCQkJMjU1NSBOb3J0aCBJSCAzNQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2NjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUJCLTAxICAgKGhleCkJCU9DVE9USE9SUEUgQ09SUC4KLTAwQkIwMSAgICAgKGJhc2UgMTYpCQlPQ1RPVEhPUlBFIENPUlAuCi0JCQkJMjg1IFdFU1QgR1JFRU4gU1RSRUVUCi0JCQkJUEFTQURFTkEgQ0EgOTExMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUJCLThFICAgKGhleCkJCUhNRSBDby4sIEx0ZC4KLTAwQkI4RSAgICAgKGJhc2UgMTYpCQlITUUgQ28uLCBMdGQuCi0JCQkJTm8uMjAwICwgTGlhbyBCZWkgU3RyLixTYW4gTWluIERpc3QuLAotCQkJCUthb2hzaXVuZyAgODA3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1CQi1GMCAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEJCRjAgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQkQtMjcgICAoaGV4KQkJRXhhciBDb3JwLgotMDBCRDI3ICAgICAoYmFzZSAxNikJCUV4YXIgQ29ycC4KLQkJCQk0ODcyMCBLYXRvIFJkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUJELTNBICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0wMEJEM0EgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1NzAKLQkJCQlGSU5MQU5ECi0KLTAwLUMwLTAwICAgKGhleCkJCUxBTk9QVElDUywgTFRELgotMDBDMDAwICAgICAoYmFzZSAxNikJCUxBTk9QVElDUywgTFRELgotCQkJCVAuTy4gQk9YIDE4NAotCQkJCU1JR0RBTCBIQS1FTUVLCi0JCQkJSVNSQUVMIElTUkFFTCAxMDU1MQotCQkJCUlTUkFFTAotCi0wMC1DMC0wMSAgIChoZXgpCQlESUFURUsgUEFUSUVOVCBNQU5BR01FTlQKLTAwQzAwMSAgICAgKGJhc2UgMTYpCQlESUFURUsgUEFUSUVOVCBNQU5BR01FTlQKLQkJCQlTWVNURU1TLCBJTkMuCi0JCQkJNTcyMCBPQkVSTElOIERSSVZFCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxLTE3MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTAyICAgKGhleCkJCVNFUkNPTU0gQ09SUE9SQVRJT04KLTAwQzAwMiAgICAgKGJhc2UgMTYpCQlTRVJDT01NIENPUlBPUkFUSU9OCi0JCQkJM0YsTk8uODEsWVUtWUlIIFJPQUQsQ0hVLU5BTiBDSEVOCi0JCQkJTUlBTy1MSUggSFNVQU4gMzUwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1DMC0wMyAgIChoZXgpCQlHTE9CQUxORVQgQ09NTVVOSUNBVElPTlMKLTAwQzAwMyAgICAgKGJhc2UgMTYpCQlHTE9CQUxORVQgQ09NTVVOSUNBVElPTlMKLQkJCQk5MTIsIFBMQUNFIFRSQU5TIENBTkFEQQotCQkJCUxPTkdVRVVJTCwgUUMKLQkJCQlDQU5BREEgSjRHIDJNMQotCQkJCUNBTkFEQQotCi0wMC1DMC0wNCAgIChoZXgpCQlKQVBBTiBCVVNJTkVTUyBDT01QVVRFUiBDTy5MVEQKLTAwQzAwNCAgICAgKGJhc2UgMTYpCQlKQVBBTiBCVVNJTkVTUyBDT01QVVRFUiBDTy5MVEQKLQkJCQkxMzY4IEZVVE9PLUNITywgS09IT0tVLUtVCi0JCQkJWU9LT0hBTUEtQ0lUWQotCQkJCTIyMiBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTA1ICAgKGhleCkJCUxJVklOR1NUT04gRU5URVJQUklTRVMsIElOQy4KLTAwQzAwNSAgICAgKGJhc2UgMTYpCQlMSVZJTkdTVE9OIEVOVEVSUFJJU0VTLCBJTkMuCi0JCQkJNjkyMCBLT0xMIENFTlRFUiBQQVJLV0FZICMyMjAKLQkJCQlQTEVBU0FOVE9OIENBIDk0NTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0wNiAgIChoZXgpCQlOSVBQT04gQVZJT05JQ1MgQ08uLCBMVEQuCi0wMEMwMDYgICAgIChiYXNlIDE2KQkJTklQUE9OIEFWSU9OSUNTIENPLiwgTFRELgotCQkJCUlORFVTVFJJQUwgU1lTVEVNIERJVklTSU9OCi0JCQkJMjgtMiwgSE9OR09IIDItQ0hPTUUsIFNFWUEtS1UgWU9LT0hBTUEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTA3ICAgKGhleCkJCVBJTk5BQ0xFIERBVEEgU1lTVEVNUywgSU5DLgotMDBDMDA3ICAgICAoYmFzZSAxNikJCVBJTk5BQ0xFIERBVEEgU1lTVEVNUywgSU5DLgotCQkJCTEzNTAgV0VTVCBGSUZUSCBBVkVOVUUKLQkJCQlDT0xVTUJVUyBPSCA0MzIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMDggICAoaGV4KQkJU0VDTyBTUkwKLTAwQzAwOCAgICAgKGJhc2UgMTYpCQlTRUNPIFNSTAotCQkJCVZJQSBDQUxBTUFORFJFSSA5MQotCQkJCTUyMTAwIEFSRVpaTwotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtQzAtMDkgICAoaGV4KQkJS1QgVEVDSE5PTE9HWSAoUykgUFRFIExURAotMDBDMDA5ICAgICAoYmFzZSAxNikJCUtUIFRFQ0hOT0xPR1kgKFMpIFBURSBMVEQKLQkJCQlLVCBCVUlMRElORwotCQkJCTEwMEUgUEFTSVIgUEFOSkFORyBST0FECi0JCQkJU0lOR0FQT1JFIDA1MTEKLQkJCQlTSU5HQVBPUkUKLQotMDAtQzAtMEEgICAoaGV4KQkJTUlDUk8gQ1JBRlQKLTAwQzAwQSAgICAgKGJhc2UgMTYpCQlNSUNSTyBDUkFGVAotCQkJCTItNC0zIE5JU0hJRlVSVU1BVFNVCi0JCQkJT0tBWUFNQSBDSVRZIE9LQVlBTUEgUFJFRi4gNzAwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC0wQiAgIChoZXgpCQlOT1JDT05UUk9MIEEuUy4KLTAwQzAwQiAgICAgKGJhc2UgMTYpCQlOT1JDT05UUk9MIEEuUy4KLQkJCQlQLk8uIEJPWCAxMDI0Ci0JCQkJTi0zMTk0IEhPUlRFTgotCQkJCU5PUldBWQotCQkJCU5PUldBWQotCi0wMC1DMC0wQyAgIChoZXgpCQlSRUxJQSBURUNITk9MR0lFUwotMDBDMDBDICAgICAoYmFzZSAxNikJCVJFTElBIFRFQ0hOT0xHSUVTCi0JCQkJMUYuLCBOTy4gMjQsIElORFVTVFJZIEUuIDlUSAotCQkJCVJELiwgU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTi0KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtMEQgICAoaGV4KQkJQURWQU5DRUQgTE9HSUMgUkVTRUFSQ0gsIElOQy4KLTAwQzAwRCAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBMT0dJQyBSRVNFQVJDSCwgSU5DLgotCQkJCTk0MDEgSkVST05JTU8KLQkJCQlJUlZJTkUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTBFICAgKGhleCkJCVBTSVRFQ0gsIElOQy4KLTAwQzAwRSAgICAgKGJhc2UgMTYpCQlQU0lURUNILCBJTkMuCi0JCQkJMTgzNjggQkFORElMSUVSIENJUkNMRQotCQkJCUZPVU5UQUlOIFZBTExFWSBDQSA5MjcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMEYgICAoaGV4KQkJUVVBTlRVTSBTT0ZUV0FSRSBTWVNURU1TIExURC4KLTAwQzAwRiAgICAgKGJhc2UgMTYpCQlRVUFOVFVNIFNPRlRXQVJFIFNZU1RFTVMgTFRELgotCQkJCTE3NSBURVJSRU5DRSBNQVRUSEVXUyBDUkVTQ0VOVAotCQkJCUtBTkFUQSwgT05UQVJJTyBDQU5BREEKLQkJCQlLMkwgM1Q1Ci0JCQkJQ0FOQURBCi0KLTAwLUMwLTEwICAgKGhleCkJCUhJUkFLQVdBIEhFV1RFQ0ggQ09SUC4KLTAwQzAxMCAgICAgKGJhc2UgMTYpCQlISVJBS0FXQSBIRVdURUNIIENPUlAuCi0JCQkJN0YsIEJMREcuQiwgT01PUkkgQkVMTFBPUlQKLQkJCQk2LTI2LTIsIE1JTkFNSS1PSSxTSElOQUdBV0EtS1UgVE9LWU8gMTQwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC0xMSAgIChoZXgpCQlJTlRFUkFDVElWRSBDT01QVVRJTkcgREVWSUNFUwotMDBDMDExICAgICAoYmFzZSAxNikJCUlOVEVSQUNUSVZFIENPTVBVVElORyBERVZJQ0VTCi0JCQkJMTczNSBURUNITk9MT0dZIERSSVZFLVNURSAjNzIwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTEyICAgKGhleCkJCU5FVFNQQU4gQ09SUE9SQVRJT04KLTAwQzAxMiAgICAgKGJhc2UgMTYpCQlORVRTUEFOIENPUlBPUkFUSU9OCi0JCQkJMTQxMSBFLiBDQU1QQkVMTCBSRAotCQkJCVNVSVRFICMxMDAwCi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMTMgICAoaGV4KQkJTkVUUklYCi0wMEMwMTMgICAgIChiYXNlIDE2KQkJTkVUUklYCi0JCQkJMTM1OTUgRFVMTEVTIFRFQ0hOT0xPR1kgRFJJVkUKLQkJCQlIRVJORE9OIFZBIDIyMDcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0xNCAgIChoZXgpCQlURUxFTUFUSUNTIENBTEFCQVNBUyBJTlQnTCxJTkMKLTAwQzAxNCAgICAgKGJhc2UgMTYpCQlURUxFTUFUSUNTIENBTEFCQVNBUyBJTlQnTCxJTkMKLQkJCQkyNjYzMCBBR09VUkEgUk9BRAotCQkJCUNBTEFCQVNBUyBDQSA5MTMwMi0xOTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0xNSAgIChoZXgpCQlORVcgTUVESUEgQ09SUE9SQVRJT04KLTAwQzAxNSAgICAgKGJhc2UgMTYpCQlORVcgTUVESUEgQ09SUE9SQVRJT04KLQkJCQkxNTM3NSBCQVJSQU5DQSBQQVJLV0FZCi0JCQkJQlVJTERJTkcKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTE2ICAgKGhleCkJCUVMRUNUUk9OSUMgVEhFQVRSRSBDT05UUk9MUwotMDBDMDE2ICAgICAoYmFzZSAxNikJCUVMRUNUUk9OSUMgVEhFQVRSRSBDT05UUk9MUwotCQkJCTMwMzAgTEFVUkEgTEFORQotCQkJCU1JRERMRVRPTiBXSSA1MzU2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMTcgICAoaGV4KQkJRmx1a2UgQ29ycG9yYXRpb24KLTAwQzAxNyAgICAgKGJhc2UgMTYpCQlGbHVrZSBDb3Jwb3JhdGlvbgotCQkJCTY5MjAgU2Vhd2F5IEJsdmQuCi0JCQkJRXZlcmV0dCBXQSA5ODIwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMTggICAoaGV4KQkJTEFOQVJUIENPUlBPUkFUSU9OCi0wMEMwMTggICAgIChiYXNlIDE2KQkJTEFOQVJUIENPUlBPUkFUSU9OCi0JCQkJMTQ1IFJPU0VNQVJZIFNUUkVFVAotCQkJCU5FRURIQU0gTUEgMDIxOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTE5ICAgKGhleCkJCUxFQVAgVEVDSE5PTE9HWSwgSU5DLgotMDBDMDE5ICAgICAoYmFzZSAxNikJCUxFQVAgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTIwCi0JCQkJQlVSTElOR1RPTiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMUEgICAoaGV4KQkJQ09ST01FVFJJQ1MgTUVESUNBTCBTWVNURU1TCi0wMEMwMUEgICAgIChiYXNlIDE2KQkJQ09ST01FVFJJQ1MgTUVESUNBTCBTWVNURU1TCi0JCQkJNjEgQkFSTkVTIFBBUksgUk9BRCBOT1JUSAotCQkJCVdBTExJTkdGT1JEIENUIDA2NDkyLTAzMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTFCICAgKGhleCkJCVNPQ0tFVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBDMDFCICAgICAoYmFzZSAxNikJCVNPQ0tFVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTI4MjMgV0hJUFBMRSBSRC4KLQkJCQlVTklPTiBDSVRZIENBIDk0NTg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0xQyAgIChoZXgpCQlJTlRFUkxJTksgQ09NTVVOSUNBVElPTlMgTFRELgotMDBDMDFDICAgICAoYmFzZSAxNikJCUlOVEVSTElOSyBDT01NVU5JQ0FUSU9OUyBMVEQuCi0JCQkJQlJVTkVMIFJPQUQsCi0JCQkJR09SU0UgTEFORSBJTkRVU1RSSUFMIEVTVEFURSBDTEFDVE9OLU9OLQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC0xRCAgIChoZXgpCQlHUkFORCBKVU5DVElPTiBORVRXT1JLUywgSU5DLgotMDBDMDFEICAgICAoYmFzZSAxNikJCUdSQU5EIEpVTkNUSU9OIE5FVFdPUktTLCBJTkMuCi0JCQkJMzEwMSBXSElQUExFIFJELiwgIzI3Ci0JCQkJVU5JT04gQ0lUWSBDQSA5NDU4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMUUgICAoaGV4KQkJTEEgRlJBTkNBSVNFIERFUyBKRVVYCi0wMEMwMUUgICAgIChiYXNlIDE2KQkJTEEgRlJBTkNBSVNFIERFUyBKRVVYCi0JCQkJQ0VOVFJFIERFIFJPVVNTWS9EVEkKLQkJCQk3NzIzMCBST1VTU1ktTEUtVklFVVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtQzAtMUYgICAoaGV4KQkJUy5FLlIuQy5FLkwuCi0wMEMwMUYgICAgIChiYXNlIDE2KQkJUy5FLlIuQy5FLkwuCi0JCQkJQi5QLiA0MzkKLQkJCQk0NDQ3NCBDQVJRVUVGT1UgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtQzAtMjAgICAoaGV4KQkJQVJDTyBFTEVDVFJPTklDLCBDT05UUk9MIExURC4KLTAwQzAyMCAgICAgKGJhc2UgMTYpCQlBUkNPIEVMRUNUUk9OSUMsIENPTlRST0wgTFRELgotCQkJCTI3NTAgTk9SVEggMjlUSCBBVkUuLVNURS4jMzE2Ci0JCQkJSE9MTFlXT09EIEZMIDMzMDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0yMSAgIChoZXgpCQlORVRFWFBSRVNTCi0wMEMwMjEgICAgIChiYXNlIDE2KQkJTkVURVhQUkVTUwotCQkJCTk4OSBFQVNUIEhJTExTREFMRSBCTFZELgotCQkJCVNVSVRFICMyOTAKLQkJCQlGT1NURVIgQ0lUWSBDQSA5NDQwNC0yMTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0yMiAgIChoZXgpCQlMQVNFUk1BU1RFUiBURUNITk9MT0dJRVMsIElOQy4KLTAwQzAyMiAgICAgKGJhc2UgMTYpCQlMQVNFUk1BU1RFUiBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk3MTU2IFNIQURZIE9BSyBST0FECi0JCQkJRURFTiBQUkFJUklFIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0yMyAgIChoZXgpCQlUVVRBTktIQU1PTiBFTEVDVFJPTklDUwotMDBDMDIzICAgICAoYmFzZSAxNikJCVRVVEFOS0hBTU9OIEVMRUNUUk9OSUNTCi0JCQkJMjQ0NiBFU1RBTkQgV0FZCi0JCQkJUExFQVNBTlQgSElMTCBDQSA5NDUyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMjQgICAoaGV4KQkJRURFTiBTSVNURU1BUyBERSBDT01QVVRBQ0FPIFNBCi0wMEMwMjQgICAgIChiYXNlIDE2KQkJRURFTiBTSVNURU1BUyBERSBDT01QVVRBQ0FPIFNBCi0JCQkJUlVBIERPIE9VVklET1IgMTIxIDUgQU5EQVIKLQkJCQlSSU8gREUgSkFORUlSTwotCQkJCUJSQVpJTAotCQkJCUJSQVpJTAotCi0wMC1DMC0yNSAgIChoZXgpCQlEQVRBUFJPRFVDVFMgQ09SUE9SQVRJT04KLTAwQzAyNSAgICAgKGJhc2UgMTYpCQlEQVRBUFJPRFVDVFMgQ09SUE9SQVRJT04KLQkJCQk2MjE5IERFU09UTyBBVkVOVUUKLQkJCQlXT09ETEFORCBISUxMUyBDQSA5MTM2NS0wNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0yNiAgIChoZXgpCQlMQU5TIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMEMwMjYgICAgIChiYXNlIDE2KQkJTEFOUyBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTE1MyBNSU5UU1UgUkQuIDJGLCBUQU9ZVUFOLAotCQkJCVRBSVdBTiBSLiBPLiBDLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtMjcgICAoaGV4KQkJQ0lQSEVSIFNZU1RFTVMsIElOQy4KLTAwQzAyNyAgICAgKGJhc2UgMTYpCQlDSVBIRVIgU1lTVEVNUywgSU5DLgotCQkJCTE4MDAgTlcgMTY5dGggUGxhY2UKLQkJCQlTdWl0ZSBCLTEwMAotCQkJCUJlYXZlcnRvbiBPUiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMjggICAoaGV4KQkJSkFTQ08gQ09SUE9SQVRJT04KLTAwQzAyOCAgICAgKGJhc2UgMTYpCQlKQVNDTyBDT1JQT1JBVElPTgotCQkJCTI5NjctNSBJU0hJS0FXQS1DSE8sCi0JCQkJSEFDSElPSkktU0hJIFRPS1lPIDE5MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtMjkgICAoaGV4KQkJTmV4YW5zIERldXRzY2hsYW5kIEdtYkggLSBBTlMKLTAwQzAyOSAgICAgKGJhc2UgMTYpCQlOZXhhbnMgRGV1dHNjaGxhbmQgR21iSCAtIEFOUwotCQkJCUJvbm5lbmJyb2ljaGVyIFN0ci4gMTAwCi0JCQkJNDEyMzggTW9lbmNoZW5nbGFkYmFjaAotCQkJCUdFUk1BTlkKLQotMDAtQzAtMkEgICAoaGV4KQkJT0hLVVJBIEVMRUNUUklDIENPLiwgTFRELgotMDBDMDJBICAgICAoYmFzZSAxNikJCU9IS1VSQSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQkyLTkwLTIwIFNISVJBS08gV0FLTyBDSVRZCi0JCQkJU0FJVEFNQSBQUkVGLgotCQkJCTM1MS0wMSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTJCICAgKGhleCkJCUdFUkxPRkYgR0VTRUxMU0NIQUZUIEZVUgotMDBDMDJCICAgICAoYmFzZSAxNikJCUdFUkxPRkYgR0VTRUxMU0NIQUZUIEZVUgotCQkJCUVMRUtST05JU0NIRSBTWVNURU1FTlRXSUNLTFVORwotCQkJCUZBU0FORU5XRUcgMjUgVy0yMDAwIEhBTUJVUkcgNzMKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1DMC0yQyAgIChoZXgpCQlDRU5UUlVNIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEMwMkMgICAgIChiYXNlIDE2KQkJQ0VOVFJVTSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTI4ODAgWkFOS0VSIFJPQUQtU1RFICMxMDgKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMkQgICAoaGV4KQkJRlVKSSBQSE9UTyBGSUxNIENPLiwgTFRELgotMDBDMDJEICAgICAoYmFzZSAxNikJCUZVSkkgUEhPVE8gRklMTSBDTy4sIExURC4KLQkJCQk3OTggTUlZQU5PREFJIEtBSVNFSS1NQUNISQotCQkJCUFTSElHQVJBLUtBTUktR1VOIEtBTkFHQVdBCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC0yRSAgIChoZXgpCQlORVRXSVoKLTAwQzAyRSAgICAgKGJhc2UgMTYpCQlORVRXSVoKLQkJCQkyNiBHT0xPTUIgU1RSRUVUCi0JCQkJSEFJRkEgIDMzMzkxCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLUMwLTJGICAgKGhleCkJCU9LVU1BIENPUlBPUkFUSU9OCi0wMEMwMkYgICAgIChiYXNlIDE2KQkJT0tVTUEgQ09SUE9SQVRJT04KLQkJCQlPR1VDSEktQ0hPLCBOSVdBLUdVTgotCQkJCUFJQ0hJIDQ4MC0wMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtMzAgICAoaGV4KQkJSU5URUdSQVRFRCBFTkdJTkVFUklORyBCLiBWLgotMDBDMDMwICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgRU5HSU5FRVJJTkcgQi4gVi4KLQkJCQlFTExFUk1BTlNUUkFBVCAxNQotCQkJCTEwOTkgQlcgQU1TVEVSREFNCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtQzAtMzEgICAoaGV4KQkJREVTSUdOIFJFU0VBUkNIIFNZU1RFTVMsIElOQy4KLTAwQzAzMSAgICAgKGJhc2UgMTYpCQlERVNJR04gUkVTRUFSQ0ggU1lTVEVNUywgSU5DLgotCQkJCTkyNSBFLiBFWEVDVVRJVkUgUEFSSyBEUi4KLQkJCQlTVUlURQotCQkJCVNBTFQgTEFLRSBDSVRZIFVUIDg0MTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0zMiAgIChoZXgpCQlJLUNVQkVEIExJTUlURUQKLTAwQzAzMiAgICAgKGJhc2UgMTYpCQlJLUNVQkVEIExJTUlURUQKLQkJCQlVTklUIEoxLCBUSEUgUE9BRERPQ0tTCi0JCQkJMzQ3IENIRVJSWSBISU5UT04gUk9BRCBDQU1CUklER0UKLQkJCQlDQjEgNERIIENCMSA0REggRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLTMzICAgKGhleCkJCVRFTEVCSVQgQ09NTVVOSUNBVElPTlMgQVBTCi0wMEMwMzMgICAgIChiYXNlIDE2KQkJVEVMRUJJVCBDT01NVU5JQ0FUSU9OUyBBUFMKLQkJCQlTS0FOREVSQk9SR1ZFSiAyMzQKLQkJCQlESy04MjYwIFZJQlkKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC1DMC0zNCAgIChoZXgpCQlUUkFOU0FDVElPTiBORVRXT1JLCi0wMEMwMzQgICAgIChiYXNlIDE2KQkJVFJBTlNBQ1RJT04gTkVUV09SSwotCQkJCVNFUlZJQ0VTLCBJTkMuCi0JCQkJT01OSUxJTksgQ09NTVVOSUNBVElPTlMgRElWLiAzMTAxIFRFQ0hOTwotCQkJCUxBTlNJTkcgTUkgNDg5MTAtODM1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMzUgICAoaGV4KQkJUVVJTlRBUiBDT01QQU5ZCi0wMEMwMzUgICAgIChiYXNlIDE2KQkJUVVJTlRBUiBDT01QQU5ZCi0JCQkJMzcwIEFNQVBPTEEgQVZFLiwgU1RFLiMxMDYKLQkJCQlUT1JSQU5DRSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMzYgICAoaGV4KQkJUkFZVEVDSCBFTEVDVFJPTklDIENPUlAuCi0wMEMwMzYgICAgIChiYXNlIDE2KQkJUkFZVEVDSCBFTEVDVFJPTklDIENPUlAuCi0JCQkJMkYsIE5PLjYsIExBTkUgNDk3Ci0JCQkJQ0hVTkcgQ0hFTkcgUkQsIEhTSU4gVElFTiBDSVRZIFRBSVBFSSBIUwotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLTM3ICAgKGhleCkJCURZTkFURU0KLTAwQzAzNyAgICAgKGJhc2UgMTYpCQlEWU5BVEVNCi0JCQkJMTU3OTUgUk9DS0ZJRUxEIEJMVkQuCi0JCQkJU1VJVEUKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTM4ICAgKGhleCkJCVJBU1RFUiBJTUFHRSBQUk9DRVNTSU5HIFNZU1RFTQotMDBDMDM4ICAgICAoYmFzZSAxNikJCVJBU1RFUiBJTUFHRSBQUk9DRVNTSU5HIFNZU1RFTQotCQkJCTQ2NjUgTkFVVElMVVMgQ09VUlQgU09VVEgKLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0zOSAgIChoZXgpCQlUZXJpZGlhbiBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uCi0wMEMwMzkgICAgIChiYXNlIDE2KQkJVGVyaWRpYW4gU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlvbgotCQkJCTY0NDAgT2FrIENhbnlvbgotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtM0EgICAoaGV4KQkJTUVOLU1JS1JPIEVMRUtUUk9OSUsgR01CSAotMDBDMDNBICAgICAoYmFzZSAxNikJCU1FTi1NSUtSTyBFTEVLVFJPTklLIEdNQkgKLQkJCQlXSUVTRU5UQUxTVFJBU1NFIDQwCi0JCQkJVy04NTAwIE5VRVJOQkVSRyA5MAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUMwLTNCICAgKGhleCkJCU1VTFRJQUNDRVNTIENPTVBVVElORyBDT1JQLgotMDBDMDNCICAgICAoYmFzZSAxNikJCU1VTFRJQUNDRVNTIENPTVBVVElORyBDT1JQLgotCQkJCTUzNTAgSE9MTElTVEVSIEFWRS4sIFNURS4KLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0zQyAgIChoZXgpCQlUT1dFUiBURUNIIFMuUi5MLgotMDBDMDNDICAgICAoYmFzZSAxNikJCVRPV0VSIFRFQ0ggUy5SLkwuCi0JCQkJVklBIFJJRE9MRkkgNiw4Ci0JCQkJNTYxMjQgUElTQQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtQzAtM0QgICAoaGV4KQkJV0lFU0VNQU5OICYgVEhFSVMgR01CSAotMDBDMDNEICAgICAoYmFzZSAxNikJCVdJRVNFTUFOTiAmIFRIRUlTIEdNQkgKLQkJCQlXSVRURU5FUiBTVFIuIDMxMgotCQkJCTU2MDAgV1VQUEVSVEFMIDIKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1DMC0zRSAgIChoZXgpCQlGQS4gR0VCUi4gSEVMTEVSIEdNQkgKLTAwQzAzRSAgICAgKGJhc2UgMTYpCQlGQS4gR0VCUi4gSEVMTEVSIEdNQkgKLQkJCQlQLk8uIEJPWCAxNDI4LCBERVAuIEVFNwotCQkJCTc0NDAgTlVSVElOR0VOCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQzAtM0YgICAoaGV4KQkJU1RPUkVTIEFVVE9NQVRFRCBTWVNURU1TLCBJTkMuCi0wMEMwM0YgICAgIChiYXNlIDE2KQkJU1RPUkVTIEFVVE9NQVRFRCBTWVNURU1TLCBJTkMuCi0JCQkJMTM2MCBBREFNUyBST0FECi0JCQkJQkVOU0FMRU0gUEEgMTkwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTQwICAgKGhleCkJCUVDQ0kKLTAwQzA0MCAgICAgKGJhc2UgMTYpCQlFQ0NJCi0JCQkJMTUwNzAtQiBBVkVOVUUgT0YgU0NJRU5DRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNDEgICAoaGV4KQkJRElHSVRBTCBUUkFOU01JU1NJT04gU1lTVEVNUwotMDBDMDQxICAgICAoYmFzZSAxNikJCURJR0lUQUwgVFJBTlNNSVNTSU9OIFNZU1RFTVMKLQkJCQk0ODMwIFJJVkVSIEdSRUVOIFBBUktXQVkKLQkJCQlEVUxVVEggR0EgMzAxMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTQyICAgKGhleCkJCURBVEFMVVggQ09SUC4KLTAwQzA0MiAgICAgKGJhc2UgMTYpCQlEQVRBTFVYIENPUlAuCi0JCQkJMjgzNiBDRVNTTkEgRFJJVkUKLQkJCQlXSU5DSEVTVEVSIFZBIDIyNjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00MyAgIChoZXgpCQlTVFJBVEFDT00KLTAwQzA0MyAgICAgKGJhc2UgMTYpCQlTVFJBVEFDT00KLQkJCQkxNDAwIFBBUktNT09SIEFWRU5VRQotCQkJCVNBTiBKT1NFIENBIDk1MTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00NCAgIChoZXgpCQlFTUNPTSBDT1JQT1JBVElPTgotMDBDMDQ0ICAgICAoYmFzZSAxNikJCUVNQ09NIENPUlBPUkFUSU9OCi0JCQkJODQwIEFWRU5VRQotCQkJCVBMQU5PIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00NSAgIChoZXgpCQlJU09MQVRJT04gU1lTVEVNUywgTFRELgotMDBDMDQ1ICAgICAoYmFzZSAxNikJCUlTT0xBVElPTiBTWVNURU1TLCBMVEQuCi0JCQkJMjYgU0lYIFBPSU5UIFJPQUQKLQkJCQlUT1JPTlRPLCBPTlRBUklPCi0JCQkJQ0FOQURBIE04WiAyVzkKLQkJCQlDQU5BREEKLQotMDAtQzAtNDYgICAoaGV4KQkJQmx1ZSBDaGlwIFRlY2hub2xvZ3kgTHRkCi0wMEMwNDYgICAgIChiYXNlIDE2KQkJQmx1ZSBDaGlwIFRlY2hub2xvZ3kgTHRkCi0JCQkJQ2hvd2xleSBPYWsgTGFuZQotCQkJCVRhdHRlbmhhbGwKLQkJCQlDaGVzdGVyIENoZXNoaXJlIENIMyA5RVgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC00NyAgIChoZXgpCQlVTklNSUNSTyBTWVNURU1TLCBJTkMuCi0wMEMwNDcgICAgIChiYXNlIDE2KQkJVU5JTUlDUk8gU1lTVEVNUywgSU5DLgotCQkJCTQ0MzgyIFMuIEdSSU1NRVIgQkxWRC4KLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00OCAgIChoZXgpCQlCQVkgVEVDSE5JQ0FMIEFTU09DSUFURVMKLTAwQzA0OCAgICAgKGJhc2UgMTYpCQlCQVkgVEVDSE5JQ0FMIEFTU09DSUFURVMKLQkJCQkyMDAgTi4gU0VDT05EIFNUUkVFVAotCQkJCVAuTy4gQk9YIDM4NwotCQkJCUJBWSBTVC4gTE9VSVMgTVMgMzk1MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTQ5ICAgKGhleCkJCVUuUy4gUk9CT1RJQ1MsIElOQy4KLTAwQzA0OSAgICAgKGJhc2UgMTYpCQlVLlMuIFJPQk9USUNTLCBJTkMuCi0JCQkJODEwMCBOT1JUSCBNQ0NPUk1JQ0sgQkxWRC4KLQkJCQlTS09LSUUgSUwgNjAwNzYtMjk5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNEEgICAoaGV4KQkJR1JPVVAgMjAwMCBBRwotMDBDMDRBICAgICAoYmFzZSAxNikJCUdST1VQIDIwMDAgQUcKLQkJCQlQLk8uIEJPWCAzMzEKLQkJCQlUQU5OQUdFUlRFTlNUUi4gOSBDSC04NjM1IERVUk5URU4KLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLUMwLTRCICAgKGhleCkJCUNSRUFUSVZFIE1JQ1JPU1lTVEVNUwotMDBDMDRCICAgICAoYmFzZSAxNikJCUNSRUFUSVZFIE1JQ1JPU1lTVEVNUwotCQkJCTksIEFWRU5VRSBEVSBDQU5BREEKLQkJCQlQQVJDIEhJR0hURUMgNiBaLkEuIERFIENPVVJUQUJPRVVGCi0JCQkJOTE5NjYgTEVTIFVMSVMtLS1GUkFOQwotCQkJCUZSQU5DRQotCi0wMC1DMC00QyAgIChoZXgpCQlERVBBUlRNRU5UIE9GIEZPUkVJR04gQUZGQUlSUwotMDBDMDRDICAgICAoYmFzZSAxNikJCURFUEFSVE1FTlQgT0YgRk9SRUlHTiBBRkZBSVJTCi0JCQkJJiBUUkFERQotCQkJCUFETUlOSVNUUkFUSVZFIEJVSUxESU5HIFBBUktFUyBQTEFDRSwgIFAKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtQzAtNEQgICAoaGV4KQkJTUlURUMsIElOQy4KLTAwQzA0RCAgICAgKGJhc2UgMTYpCQlNSVRFQywgSU5DLgotCQkJCUJSLUtBTUVJRE8gMSBCVUlMRElORwotCQkJCVotMzMtMSwgS0FNRUlETywgS09VVE9VLUtVIFRPS1lPLCAxMzYKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTRFICAgKGhleCkJCUNPTVRST0wgQ09SUE9SQVRJT04KLTAwQzA0RSAgICAgKGJhc2UgMTYpCQlDT01UUk9MIENPUlBPUkFUSU9OCi0JCQkJMjY3NSBQQVRUT04gUk9BRAotCQkJCVNULiBQQVVMIE1OIDU1MTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00RiAgIChoZXgpCQlERUxMIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMEMwNEYgICAgIChiYXNlIDE2KQkJREVMTCBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTE4MDcgV0VTVCBCUkFLRVIgTEFORS1CTERHLgotCQkJCUFVU1RJTiBUWCA3ODc1OC0zNjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01MCAgIChoZXgpCQlUT1lPIERFTktJIFNFSVpPIEsuSy4KLTAwQzA1MCAgICAgKGJhc2UgMTYpCQlUT1lPIERFTktJIFNFSVpPIEsuSy4KLQkJCQk0LTYtMzIgSElHQVNISUtBU0hJV0FHQVlBCi0JCQkJRUJJTkFTSEkKLQkJCQlLQU5BR0FXQSBKQVBBTiAyNDMtMDQKLQkJCQlKQVBBTgotCi0wMC1DMC01MSAgIChoZXgpCQlBRFZBTkNFRCBJTlRFR1JBVElPTiBSRVNFQVJDSAotMDBDMDUxICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIElOVEVHUkFUSU9OIFJFU0VBUkNICi0JCQkJMjE4OCBERUwgRlJBTkNPIFNUUkVFVAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01MiAgIChoZXgpCQlCVVJSLUJST1dOCi0wMEMwNTIgICAgIChiYXNlIDE2KQkJQlVSUi1CUk9XTgotCQkJCVAuTy4gQk9YIDExNDAwCi0JCQkJVFVDU09OIEFaIDg1NzM0LTE0MDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTUzICAgKGhleCkJCUFzcGVjdCBTb2Z0d2FyZSBJbmMuCi0wMEMwNTMgICAgIChiYXNlIDE2KQkJQXNwZWN0IFNvZnR3YXJlIEluYy4KLQkJCQk2IFRlY2hub2xvZ3kgUGFyayBEcml2ZQotCQkJCVdlc3Rmb3JkIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01NCAgIChoZXgpCQlORVRXT1JLIFBFUklQSEVSQUxTLCBMVEQuCi0wMEMwNTQgICAgIChiYXNlIDE2KQkJTkVUV09SSyBQRVJJUEhFUkFMUywgTFRELgotCQkJCTRUSCBGTE9PUiwgMTcgQk9XQVRFUiBSRC4KLQkJCQlXRVNUTUlOU1RFUiBJTkRVU1RSSUFMIEVTVEFURSBMT05ET04gU0UKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtNTUgICAoaGV4KQkJTU9EVUxBUiBDT01QVVRJTkcgVEVDSE5PTE9HSUVTCi0wMEMwNTUgICAgIChiYXNlIDE2KQkJTU9EVUxBUiBDT01QVVRJTkcgVEVDSE5PTE9HSUVTCi0JCQkJMjM1MiBNQUlOIFNUUkVFVAotCQkJCUNPTkNPUkQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTU2ICAgKGhleCkJCVNPTUVMRUMKLTAwQzA1NiAgICAgKGJhc2UgMTYpCQlTT01FTEVDCi0JCQkJQlAgNzAxMCAtIDk1MDUwCi0JCQkJQ0VSR1kgUE9OVE9JU0UgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtQzAtNTcgICAoaGV4KQkJTVlDTyBFTEVDVFJPTklDUwotMDBDMDU3ICAgICAoYmFzZSAxNikJCU1ZQ08gRUxFQ1RST05JQ1MKLQkJCQlNVVNTRVJPTkdSQU5EIDFHCi0JCQkJUy03NTYgVVBQU0FMQQotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC1DMC01OCAgIChoZXgpCQlEQVRBRVhQRVJUIENPUlAuCi0wMEMwNTggICAgIChiYXNlIDE2KQkJREFUQUVYUEVSVCBDT1JQLgotCQkJCTExNTYgU09OT1BSQSBDT1VSVE4tS0FORyBSRC4KLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTU5ICAgKGhleCkJCURFTlNPIENPUlBPUkFUSU9OCi0wMEMwNTkgICAgIChiYXNlIDE2KQkJREVOU08gQ09SUE9SQVRJT04KLQkJCQkxLTEsIFNob3dhLWNobywKLQkJCQlLYXJpeWEtc2hpLCBBaWNoaSA0NDgtODY2MQotCQkJCUpBUEFOCi0KLTAwLUMwLTVBICAgKGhleCkJCVNFTUFQSE9SRSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDBDMDVBICAgICAoYmFzZSAxNikJCVNFTUFQSE9SRSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotCQkJCTIxNyBIVU1CT0xEVCBDT1VSVAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OS0xMzAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01QiAgIChoZXgpCQlORVRXT1JLUyBOT1JUSFdFU1QsIElOQy4KLTAwQzA1QiAgICAgKGJhc2UgMTYpCQlORVRXT1JLUyBOT1JUSFdFU1QsIElOQy4KLQkJCQlQLk8uIEJPWCAxMTg4Ci0JCQkJSVNTQVFVQUggV0EgOTgwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTVDICAgKGhleCkJCUVMT05FWCBQTEMKLTAwQzA1QyAgICAgKGJhc2UgMTYpCQlFTE9ORVggUExDCi0JCQkJMiBBUFNMRVkgV0FZCi0JCQkJTE9ORE9OLCBOVzIgN0hGCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC01RCAgIChoZXgpCQlMJk4gVEVDSE5PTE9HSUVTCi0wMEMwNUQgICAgIChiYXNlIDE2KQkJTCZOIFRFQ0hOT0xPR0lFUwotCQkJCTI4OTkgQUdPVVJBIFJPQUQgIzE5NgotCQkJCVdFU1RMQUtFIFZJTExBR0UgQ0EgOTEzNjEtMzIwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNUUgICAoaGV4KQkJVkFSSS1MSVRFLCBJTkMuCi0wMEMwNUUgICAgIChiYXNlIDE2KQkJVkFSSS1MSVRFLCBJTkMuCi0JCQkJMjAxIFJFR0FMIFJPVwotCQkJCURBTExBUyBUWCA3NTI0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNUYgICAoaGV4KQkJRklORS1QQUwgQ09NUEFOWSBMSU1JVEVECi0wMEMwNUYgICAgIChiYXNlIDE2KQkJRklORS1QQUwgQ09NUEFOWSBMSU1JVEVECi0JCQkJUk0uIDksIDExRiwgS0lOR1NGT1JEIElORC4gQ1RSCi0JCQkJMTMsIFdBTkcgSE9JIFJPQUQgS09XTE9PTiBCQVksIEtMTgotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC1DMC02MCAgIChoZXgpCQlJRCBTQ0FORElOQVZJQSBBUwotMDBDMDYwICAgICAoYmFzZSAxNikJCUlEIFNDQU5ESU5BVklBIEFTCi0JCQkJUC5PLiBCT1ggNDIyNwotCQkJCU4tNTAyOCBCRVJHRU4KLQkJCQlOT1JXQVkKLQkJCQlOT1JXQVkKLQotMDAtQzAtNjEgICAoaGV4KQkJU09MRUNURUsgQ09SUE9SQVRJT04KLTAwQzA2MSAgICAgKGJhc2UgMTYpCQlTT0xFQ1RFSyBDT1JQT1JBVElPTgotCQkJCTYzNzAgTkFOQ1kgUklER0UgRFIuLVNURS4jMTA5Ci0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02MiAgIChoZXgpCQlJTVBVTFNFIFRFQ0hOT0xPR1kKLTAwQzA2MiAgICAgKGJhc2UgMTYpCQlJTVBVTFNFIFRFQ0hOT0xPR1kKLQkJCQkyMTAgREFITE9ORUdBIFNULiMyMDQKLQkJCQlDVU1NSU5HIEdBIDMwMTMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02MyAgIChoZXgpCQlNT1JOSU5HIFNUQVIgVEVDSE5PTE9HSUVTLCBJTkMKLTAwQzA2MyAgICAgKGJhc2UgMTYpCQlNT1JOSU5HIFNUQVIgVEVDSE5PTE9HSUVTLCBJTkMKLQkJCQkxNzYwIFpPTExJTkdFUiBST0FECi0JCQkJQ09MVU1CVVMgT0ggNDMyMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTY0ICAgKGhleCkJCUdFTkVSQUwgREFUQUNPTU0gSU5ELiBJTkMuCi0wMEMwNjQgICAgIChiYXNlIDE2KQkJR0VORVJBTCBEQVRBQ09NTSBJTkQuIElOQy4KLQkJCQlQQVJLIFJPQUQgRVhURU5TSU9OCi0JCQkJUC5PLiBCT1ggMTI5OQotCQkJCU1JRERMRUJVUlkgQ1QgMDY3NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTY1ICAgKGhleCkJCVNDT1BFIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEMwNjUgICAgIChiYXNlIDE2KQkJU0NPUEUgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMDAgT1RJUyBTVFJFRVQKLQkJCQlOT1JUSEJPUk8gTUEgMDE1MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTY2ICAgKGhleCkJCURPQ1VQT0lOVCwgSU5DLgotMDBDMDY2ICAgICAoYmFzZSAxNikJCURPQ1VQT0lOVCwgSU5DLgotCQkJCTI3MDEgQkFZVklFVyBEUklWRQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTY3ICAgKGhleCkJCVVOSVRFRCBCQVJDT0RFIElORFVTVFJJRVMKLTAwQzA2NyAgICAgKGJhc2UgMTYpCQlVTklURUQgQkFSQ09ERSBJTkRVU1RSSUVTCi0JCQkJMTIyNDAgSU5ESUFOIENSRUVLIENPVVJUCi0JCQkJQkVMVFNWSUxMRSBNRCAyMDcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNjggICAoaGV4KQkJSE1FIENsZWFyLUNvbSBMVEQuCi0wMEMwNjggICAgIChiYXNlIDE2KQkJSE1FIENsZWFyLUNvbSBMVEQuCi0JCQkJNzQwMCBCZWFjaCBEcml2ZQotCQkJCVdhdGVyYmVhY2gKLQkJCQlDYW1icmlkZ2VzaGlyZSAgQ0IyNSA5VFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC02OSAgIChoZXgpCQlBeHhjZWxlcmEgQnJvYWRiYW5kIFdpcmVsZXNzCi0wMEMwNjkgICAgIChiYXNlIDE2KQkJQXh4Y2VsZXJhIEJyb2FkYmFuZCBXaXJlbGVzcwotCQkJCTExMSBDYXN0aWxpYW4gRHJpdmUKLQkJCQlTYW50YSBCYXJiYXJhIENBIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02QSAgIChoZXgpCQlaQUhORVItRUxFS1RSSUsgR01CSCAmIENPLiBLRwotMDBDMDZBICAgICAoYmFzZSAxNikJCVpBSE5FUi1FTEVLVFJJSyBHTUJIICYgQ08uIEtHCi0JCQkJUC5PLiBCT1ggMTg0NgotCQkJCVRIVUVSSU5HRVIgU1RSQVNTRSAxMiBEVy04NjQwIEtST05BQ0gtR1UKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1DMC02QiAgIChoZXgpCQlPU0kgUExVUyBDT1JQT1JBVElPTgotMDBDMDZCICAgICAoYmFzZSAxNikJCU9TSSBQTFVTIENPUlBPUkFUSU9OCi0JCQkJMi0xLTIzIE5BS0FNRUdVUk8KLQkJCQlNRUdVUk8tS1UsIFRPS1lPICAxNTMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTZDICAgKGhleCkJCVNWRUMgQ09NUFVURVIgQ09SUC4KLTAwQzA2QyAgICAgKGJhc2UgMTYpCQlTVkVDIENPTVBVVEVSIENPUlAuCi0JCQkJM0YsIDUzMS0xIENIVU5HIENIRU5HIFJELgotCQkJCUhTSU4tVElFTiBDSVRZLCBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtNkQgICAoaGV4KQkJQk9DQSBSRVNFQVJDSCwgSU5DLgotMDBDMDZEICAgICAoYmFzZSAxNikJCUJPQ0EgUkVTRUFSQ0gsIElOQy4KLQkJCQk2NDAxIENPTkdSRVNTIEFWRU5VRQotCQkJCUJPQ0EgUkFUT04gRkwgMzM0ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTZFICAgKGhleCkJCUhBRlQgVEVDSE5PTE9HWSwgSU5DLgotMDBDMDZFICAgICAoYmFzZSAxNikJCUhBRlQgVEVDSE5PTE9HWSwgSU5DLgotCQkJCURBSU5JLURPSE8gQkxERy4KLQkJCQkzLUNIT01FIDI0LTcgTklOT01JWUEgVFNVS1VCQSBJQkFSQUdJCi0JCQkJMzA1IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtNkYgICAoaGV4KQkJS09NQVRTVSBMVEQuCi0wMEMwNkYgICAgIChiYXNlIDE2KQkJS09NQVRTVSBMVEQuCi0JCQkJMjU5NyBTSElOT01JWUEgSElSQVRTVUtBLVNISQotCQkJCUtBTkFHQVdBIDI1NAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtNzAgICAoaGV4KQkJU0VDVFJBIFNFQ1VSRS1UUkFOU01JU1NJT04gQUIKLTAwQzA3MCAgICAgKGJhc2UgMTYpCQlTRUNUUkEgU0VDVVJFLVRSQU5TTUlTU0lPTiBBQgotCQkJCVRFS05JS1JJTkdFTiAyCi0JCQkJUy01ODMgMzAgTElOS09QSU5HCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLUMwLTcxICAgKGhleCkJCUFSRUFORVggQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQzA3MSAgICAgKGJhc2UgMTYpCQlBUkVBTkVYIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMzMzMyBPQ1RBVklVUyBEUklWRSBVTklUIEMKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNzIgICAoaGV4KQkJS05YIExURC4KLTAwQzA3MiAgICAgKGJhc2UgMTYpCQlLTlggTFRELgotCQkJCUhPTExJTkdXT09EIEhPVVNFCi0JCQkJV0VTVCBDSEVWSU4gUk9BRCBPVExFWSwgVy4gWU9SS1NISVJFCi0JCQkJTFMyMSAzSEEgVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC03MyAgIChoZXgpCQlYRURJQSBDT1JQT1JBVElPTgotMDBDMDczICAgICAoYmFzZSAxNikJCVhFRElBIENPUlBPUkFUSU9OCi0JCQkJMzAxIEJBTExBUkRWQUxFIFNUUkVFVAotCQkJCVdJTE1JTkdUT04gTUEgMDE4ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTc0ICAgKGhleCkJCVRPWU9EQSBBVVRPTUFUSUMgTE9PTQotMDBDMDc0ICAgICAoYmFzZSAxNikJCVRPWU9EQSBBVVRPTUFUSUMgTE9PTQotCQkJCVdPUktTLCBMVEQuCi0JCQkJMi0xLCBUT1lPREEtQ0hPLCBLQVJJWUEtU0hJIEFJQ0hJLUtFTgotCQkJCTQ0OCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTc1ICAgKGhleCkJCVhBTlRFIENPUlBPUkFUSU9OCi0wMEMwNzUgICAgIChiYXNlIDE2KQkJWEFOVEUgQ09SUE9SQVRJT04KLQkJCQkyNTU5IEVNT0dFTkUgU1RSRUVUCi0JCQkJTU9CSUxFIEFMIDM2NjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC03NiAgIChoZXgpCQlJLURBVEEgSU5URVJOQVRJT05BTCBBLVMKLTAwQzA3NiAgICAgKGJhc2UgMTYpCQlJLURBVEEgSU5URVJOQVRJT05BTCBBLVMKLQkJCQkzNS00MyBWQURTVFJVUFZFSgotCQkJCURLLTI4ODAgQkFHU1ZBRVJECi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtQzAtNzcgICAoaGV4KQkJREFFV09PIFRFTEVDT00gTFRELgotMDBDMDc3ICAgICAoYmFzZSAxNikJCURBRVdPTyBURUxFQ09NIExURC4KLQkJCQlQUk9EVUNUUyBERVNJR04gREVQVC4gMQotCQkJCVBST0RVQ1RTIERFU0lHTiBDRU5URVIgU09DSE8uIFAuTy4gQk9YIDEKLQkJCQlTRU9VTCBTRU9VTCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1DMC03OCAgIChoZXgpCQlDT01QVVRFUiBTWVNURU1TIEVOR0lORUVSSU5HCi0wMEMwNzggICAgIChiYXNlIDE2KQkJQ09NUFVURVIgU1lTVEVNUyBFTkdJTkVFUklORwotCQkJCTQ2NzkxIEZSRU1PTlQgQkxWRC4KLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC03OSAgIChoZXgpCQlGT05TWVMgQ08uLExURC4KLTAwQzA3OSAgICAgKGJhc2UgMTYpCQlGT05TWVMgQ08uLExURC4KLQkJCQkyMDktNSwgWUFOR0pBRSwgU0VPQ0hPCi0JCQkJU0VPVUwgIEEzNzEzMAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUMwLTdBICAgKGhleCkJCVBSSVZBIEIuVi4KLTAwQzA3QSAgICAgKGJhc2UgMTYpCQlQUklWQSBCLlYuCi0JCQkJUC5PLiBCT1ggMTgKLQkJCQkyNjc4ICBaRyBERSBMSUVSIChaLUgpCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtQzAtN0IgICAoaGV4KQkJQVNDRU5EIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEMwN0IgICAgIChiYXNlIDE2KQkJQVNDRU5EIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTcwMSBIQVJCT1IgQkFZIFBBUktXQVkKLQkJCQlBTEFNRURBIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC03QyAgIChoZXgpCQlISUdIVEVDSCBJTkZPUk1BVElPTgotMDBDMDdDICAgICAoYmFzZSAxNikJCUhJR0hURUNIIElORk9STUFUSU9OCi0JCQkJU1lTVEVNIExURC4KLQkJCQlVTklUIDcsIDIvRiwgUE8gTFVORyBDRU5UUkUgMTEgV0FORyBDSElVCi0JCQkJSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLUMwLTdEICAgKGhleCkJCVJJU0MgREVWRUxPUE1FTlRTIExURC4KLTAwQzA3RCAgICAgKGJhc2UgMTYpCQlSSVNDIERFVkVMT1BNRU5UUyBMVEQuCi0JCQkJMTE3IEhBVEZJRUxEIFJPQUQKLQkJCQlTVC4gQUxCQU5TLCBIRVJUUyBBTDE0SjUKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtN0UgICAoaGV4KQkJS1VCT1RBIENPUlBPUkFUSU9OIEVMRUNUUk9OSUMKLTAwQzA3RSAgICAgKGJhc2UgMTYpCQlLVUJPVEEgQ09SUE9SQVRJT04gRUxFQ1RST05JQwotCQkJCURFVklDRSBERVBULgotCQkJCTItMzUsIEpJTk1VLUNITywgWUFPLUNJVFkgT1NBS0EgUFJFRi4KLQkJCQlKQVBBTiAjNTgxCi0JCQkJSkFQQU4KLQotMDAtQzAtN0YgICAoaGV4KQkJTlVQT04gQ09NUFVUSU5HIENPUlAuCi0wMEMwN0YgICAgIChiYXNlIDE2KQkJTlVQT04gQ09NUFVUSU5HIENPUlAuCi0JCQkJMTM5MSBXQVJORVIgQVZFLiwgLVNVSVRFCi0JCQkJVFVTVElOIENBIDkyNjgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04MCAgIChoZXgpCQlORVRTVEFSLCBJTkMuCi0wMEMwODAgICAgIChiYXNlIDE2KQkJTkVUU1RBUiwgSU5DLgotCQkJCUNFREFSIEJVU0lORVNTIENFTlRFUgotCQkJCTE4MDEgRS4gNzlUSCBTVFJFRVQKLQkJCQlNSU5ORUFQT0xJUyBNTiA1NTQyNS0xMjM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04MSAgIChoZXgpCQlNRVRST0RBVEEgTFRELgotMDBDMDgxICAgICAoYmFzZSAxNikJCU1FVFJPREFUQSBMVEQuCi0JCQkJQkxFTkhFSU0gSE9VU0UKLQkJCQlDUkFCVFJFRSBPRkZJQ0UgVklMTEFHRSBFVkVSU0xFWSBXQVksIEVHCi0JCQkJVFcyMCA4UlkgVFcyMCA4UlkgRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLTgyICAgKGhleCkJCU1PT1JFIFBST0RVQ1RTIENPLgotMDBDMDgyICAgICAoYmFzZSAxNikJCU1PT1JFIFBST0RVQ1RTIENPLgotCQkJCVNVTU5FWVRPV04gUElLRQotCQkJCVNQUklORyBIT1VTRSBQQSAxOTQ3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtODMgICAoaGV4KQkJVFJBQ0UgTU9VTlRBSU4gUFJPRFVDVFMsIElOQy4KLTAwQzA4MyAgICAgKGJhc2UgMTYpCQlUUkFDRSBNT1VOVEFJTiBQUk9EVUNUUywgSU5DLgotCQkJCTEwNDAgRUFTVCBCUk9LQVcgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04NCAgIChoZXgpCQlEQVRBIExJTksgQ09SUC4gTFRELgotMDBDMDg0ICAgICAoYmFzZSAxNikJCURBVEEgTElOSyBDT1JQLiBMVEQuCi0JCQkJMy0xNS0zIE1JRE9SSUNITwotCQkJCVRPS09ST1pBV0EtQ0lUWSBTQUlUQU1BICAzNTkKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTg1ICAgKGhleCkJCUVMRUNUUk9OSUNTIEZPUiBJTUFHSU5HLCBJTkMuCi0wMEMwODUgICAgIChiYXNlIDE2KQkJRUxFQ1RST05JQ1MgRk9SIElNQUdJTkcsIElOQy4KLQkJCQkyODU1IENBTVBVUyBEUklWRQotCQkJCVNBTiBNQVRFTyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtODYgICAoaGV4KQkJVEhFIExZTksgQ09SUE9SQVRJT04KLTAwQzA4NiAgICAgKGJhc2UgMTYpCQlUSEUgTFlOSyBDT1JQT1JBVElPTgotCQkJCTEwMSBRVUVFTlMgRFJJVkUKLQkJCQlLSU5HIE9GIFBSVVNTSUEgUEEgMTk0MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTg3ICAgKGhleCkJCVVVTkVUIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBDMDg3ICAgICAoYmFzZSAxNikJCVVVTkVUIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTMxMTAgRkFJUlZJRVcgUEFSSyBEUi4gIzU3MAotCQkJCUZBTExTIENIVVJDSCBWQSAyMjA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtODggICAoaGV4KQkJRUtGIEVMRUtUUk9OSUsgR01CSAotMDBDMDg4ICAgICAoYmFzZSAxNikJCUVLRiBFTEVLVFJPTklLIEdNQkgKLQkJCQlQSElMSVBQLVJFSVMtU1RSLiA0Ci0JCQkJNDcwMCBIQU1NCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQzAtODkgICAoaGV4KQkJVEVMSU5EVVMgRElTVFJJQlVUSU9OCi0wMEMwODkgICAgIChiYXNlIDE2KQkJVEVMSU5EVVMgRElTVFJJQlVUSU9OCi0JCQkJR0VMREVOQUFLU0VCQUFOIDMzNQotCQkJCTMwMDEgSEVWRVJMRUUKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC1DMC04QSAgIChoZXgpCQlMYXV0ZXJiYWNoIEdtYkgKLTAwQzA4QSAgICAgKGJhc2UgMTYpCQlMYXV0ZXJiYWNoIEdtYkgKLQkJCQlBbHRsYXVmc3RyLiA0MCwKLQkJCQlIaT9vZWhlbmtpcmNoZW4tU2llZ2VydHNicnVubiwgODU2MzUKLQkJCQlHRVJNQU5ZCi0KLTAwLUMwLThCICAgKGhleCkJCVJJU1EgTU9EVUxBUiBTWVNURU1TLCBJTkMuCi0wMEMwOEIgICAgIChiYXNlIDE2KQkJUklTUSBNT0RVTEFSIFNZU1RFTVMsIElOQy4KLQkJCQkzOTg5OSBCQUxFTlRJTkUgRFJJVkUtU1RFICMzNzUKLQkJCQlORVdBUksgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLThDICAgKGhleCkJCVBFUkZPUk1BTkNFIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBDMDhDICAgICAoYmFzZSAxNikJCVBFUkZPUk1BTkNFIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTMxNSBTQ0lFTkNFIFBBUktXQVkKLQkJCQlST0NIRVNURVIgTlkgMTQ2MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLThEICAgKGhleCkJCVRST05JWCBQUk9EVUNUIERFVkVMT1BNRU5UCi0wMEMwOEQgICAgIChiYXNlIDE2KQkJVFJPTklYIFBST0RVQ1QgREVWRUxPUE1FTlQKLQkJCQk0OTA4IEUuIE1DRE9XRUxMIFJELiBTVEUuIzEwMAotCQkJCVBIT0VOSVggQVogODUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLThFICAgKGhleCkJCU5FVFdPUksgSU5GT1JNQVRJT04gVEVDSE5PTE9HWQotMDBDMDhFICAgICAoYmFzZSAxNikJCU5FVFdPUksgSU5GT1JNQVRJT04gVEVDSE5PTE9HWQotCQkJCTEwNDMwIFMuIERFIEFOWkEgQkxWRC4KLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLThGICAgKGhleCkJCVBhbmFzb25pYyBFbGVjdHJpYyBXb3JrcyBDby4sIEx0ZC4KLTAwQzA4RiAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgRWxlY3RyaWMgV29ya3MgQ28uLCBMdGQuCi0JCQkJVHN1LUZhY3RvcnkKLQkJCQkxNjY4IEZ1amlrYXRhIFRzdS1zaGkKLQkJCQlNaWUta2VuIDUxNC04NTU1IAotCQkJCUpBUEFOCi0KLTAwLUMwLTkwICAgKGhleCkJCVBSQUlNIFMuUi5MLgotMDBDMDkwICAgICAoYmFzZSAxNikJCVBSQUlNIFMuUi5MLgotCQkJCVZJQSBNQUNDQU5JLCAxNjkKLQkJCQkzODEwMCBUUkVOVE8gKFROKQotCQkJCUlUQUxZCi0KLTAwLUMwLTkxICAgKGhleCkJCUpBQklMIENJUkNVSVQsIElOQy4KLTAwQzA5MSAgICAgKGJhc2UgMTYpCQlKQUJJTCBDSVJDVUlULCBJTkMuCi0JCQkJMzIyNzUgTUFMTFkgUk9BRAotCQkJCU1BRElTT04gSEVJR0hUUyBNSSA0ODA3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOTIgICAoaGV4KQkJTUVOTkVOIE1FRElDQUwgSU5DLgotMDBDMDkyICAgICAoYmFzZSAxNikJCU1FTk5FTiBNRURJQ0FMIElOQy4KLQkJCQkxMDEyMyBNQUlOIFNUUkVFVAotCQkJCUNMQVJFTkNFIE5ZIDE0MDMxLTIwOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTkzICAgKGhleCkJCUFMVEEgUkVTRUFSQ0ggQ09SUC4KLTAwQzA5MyAgICAgKGJhc2UgMTYpCQlBTFRBIFJFU0VBUkNIIENPUlAuCi0JCQkJNjE0IFNPVVRIIEZFREVSQUwgSElHSFdBWQotCQkJCURFRVJGSUVMRCBCRUFDSCBGTCAzMzQ0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOTQgICAoaGV4KQkJVk1YIElOQy4KLTAwQzA5NCAgICAgKGJhc2UgMTYpCQlWTVggSU5DLgotCQkJCTIxMTUgTydORUwgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOTUgICAoaGV4KQkJWk5ZWAotMDBDMDk1ICAgICAoYmFzZSAxNikJCVpOWVgKLQkJCQk0ODQyMSBNaWxtb250IERyaXZlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOTYgICAoaGV4KQkJVEFNVVJBIENPUlBPUkFUSU9OCi0wMEMwOTYgICAgIChiYXNlIDE2KQkJVEFNVVJBIENPUlBPUkFUSU9OCi0JCQkJQ09NTVVOSUNBVElPTiBTWVNURU1TIERJVi4KLQkJCQkxOS00MyBISUdBU0hJIE9JWlVNSSAxIENIT01FIE5FUklNQS1LVSwKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTk3ICAgKGhleCkJCUFSQ0hJUEVMIFNBCi0wMEMwOTcgICAgIChiYXNlIDE2KQkJQVJDSElQRUwgU0EKLQkJCQkxIFJVRSBEVSBCVUxMT1oKLQkJCQlGIDc0OTQwIEFOTkVDWS1MRS1WSUVVWAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC1DMC05OCAgIChoZXgpCQlDSFVOVEVYIEVMRUNUUk9OSUMgQ08uLCBMVEQuCi0wMEMwOTggICAgIChiYXNlIDE2KQkJQ0hVTlRFWCBFTEVDVFJPTklDIENPLiwgTFRELgotCQkJCTZGLiwgTk8uMiwgQUxMRVkgNiwgTEFORSAyMzUKLQkJCQlQQU8gQ0hJQU8gUkQuLCBIU0lOIFRJRU4sIFRBSVBFSSBIU0lFTgotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1DMC05OSAgIChoZXgpCQlZT1NISUtJIElORFVTVFJJQUwgQ08uLExURC4KLTAwQzA5OSAgICAgKGJhc2UgMTYpCQlZT1NISUtJIElORFVTVFJJQUwgQ08uLExURC4KLQkJCQkxLTM4IE1BVFNVR0FTQUtJIDItQ0hPTUUKLQkJCQlZT05FWkFXQSBZQU1BR0FUQQotCQkJCTk5MiBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTlBICAgKGhleCkJCVBIT1RPTklDUyBDT1JQT1JBVElPTgotMDBDMDlBICAgICAoYmFzZSAxNikJCVBIT1RPTklDUyBDT1JQT1JBVElPTgotCQkJCTI5NDAgTk9SVEggRklSU1QgU1RSRUVUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjMtMjAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOUIgICAoaGV4KQkJUkVMSUFOQ0UgQ09NTS9URUMsIFItVEVDCi0wMEMwOUIgICAgIChiYXNlIDE2KQkJUkVMSUFOQ0UgQ09NTS9URUMsIFItVEVDCi0JCQkJU1lTVEVNUyBJTkMuCi0JCQkJMjEwMCBSRUxJQU5DRSBQQVJLV0FZLCAgTVMgMjIKLQkJCQlCRURGT1JEIFRYIDc2MDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC05QyAgIChoZXgpCQlISU9LSSBFLkUuIENPUlBPUkFUSU9OCi0wMEMwOUMgICAgIChiYXNlIDE2KQkJSElPS0kgRS5FLiBDT1JQT1JBVElPTgotCQkJCTgxIEtvaXp1bWksIFVlZGEsIE5hZ2FubwotCQkJCUNoaXlvZGEta3UKLQkJCQlUb2t5byAgMzg2LTExOTIKLQkJCQlKQVBBTgotCi0wMC1DMC05RCAgIChoZXgpCQlESVNUUklCVVRFRCBTWVNURU1TIElOVCdMLCBJTkMKLTAwQzA5RCAgICAgKGJhc2UgMTYpCQlESVNUUklCVVRFRCBTWVNURU1TIElOVCdMLCBJTkMKLQkJCQk1MzEgV0VTVCBST09TRVZMRVQgUkQsIFNURSAjMgotCQkJCVdIRUFUT04gSUwgNjAxODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTlFICAgKGhleCkJCUNBQ0hFIENPTVBVVEVSUywgSU5DLgotMDBDMDlFICAgICAoYmFzZSAxNikJCUNBQ0hFIENPTVBVVEVSUywgSU5DLgotCQkJCTQ2NjAwIExBTkRJTkcgUEFSS1dBWQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTlGICAgKGhleCkJCVFVQU5UQSBDT01QVVRFUiwgSU5DLgotMDBDMDlGICAgICAoYmFzZSAxNikJCVFVQU5UQSBDT01QVVRFUiwgSU5DLgotCQkJCTdGLiwgMTE2LCBIT1UtS0FORyBTVC4sCi0JCQkJU0hJSC1MSU4gRElTVC4gVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLUEwICAgKGhleCkJCUFEVkFOQ0UgTUlDUk8gUkVTRUFSQ0gsIElOQy4KLTAwQzBBMCAgICAgKGJhc2UgMTYpCQlBRFZBTkNFIE1JQ1JPIFJFU0VBUkNILCBJTkMuCi0JCQkJMjA0NSBDT1JQT1JBVEUgQ09VUlQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQTEgICAoaGV4KQkJVE9LWU8gREVOU0hJIFNFS0VJIENPLgotMDBDMEExICAgICAoYmFzZSAxNikJCVRPS1lPIERFTlNISSBTRUtFSSBDTy4KLQkJCQkyNTUtMSBSRU5LT0pJLCBUQU1BLVNISQotCQkJCVRPS1lPCi0JCQkJSkFQQU4gMjA2Ci0JCQkJSkFQQU4KLQotMDAtQzAtQTIgICAoaGV4KQkJSU5URVJNRURJVU0gQS9TCi0wMEMwQTIgICAgIChiYXNlIDE2KQkJSU5URVJNRURJVU0gQS9TCi0JCQkJT0RJTlNWRUogMTkKLQkJCQlESy0yNjAwIEdMT1NUUlVQCi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtQzAtQTMgICAoaGV4KQkJRFVBTCBFTlRFUlBSSVNFUyBDT1JQT1JBVElPTgotMDBDMEEzICAgICAoYmFzZSAxNikJCURVQUwgRU5URVJQUklTRVMgQ09SUE9SQVRJT04KLQkJCQk5VEggRkxPT1IgNDggTkFOLUtBTkcgUk9BRAotCQkJCVNFQy4zLCBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtQTQgICAoaGV4KQkJVU5JR1JBRiBPWQotMDBDMEE0ICAgICAoYmFzZSAxNikJCVVOSUdSQUYgT1kKLQkJCQlSVVVLSU5USUUgMTgKLQkJCQkwMjMyMCBFU1AwMAotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLUMwLUE1ICAgKGhleCkJCURJQ0tFTlMgREFUQSBTWVNURU1TCi0wMEMwQTUgICAgIChiYXNlIDE2KQkJRElDS0VOUyBEQVRBIFNZU1RFTVMKLQkJCQkxMTc1IE5PUlRITUVBRE9XIFBLV1ktU1RFICMxNTAKLQkJCQlST1NXRUxMIEdBIDMwMDc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1BNiAgIChoZXgpCQlFWElDT00gQVVTVFJBTElBIFBUWS4gTFRECi0wMEMwQTYgICAgIChiYXNlIDE2KQkJRVhJQ09NIEFVU1RSQUxJQSBQVFkuIExURAotCQkJCTQ0LTQ2IE1BTkRBUklOIFNUUkVFVAotCQkJCVZJTExBV09PRCBOU1cgMjE2MwotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC1DMC1BNyAgIChoZXgpCQlTRUVMIExURC4KLTAwQzBBNyAgICAgKGJhc2UgMTYpCQlTRUVMIExURC4KLQkJCQkzIFlPVU5HIFNRVUFSRQotCQkJCUxJVklOR1NUT04gIEVINTQgIDlCSgotCQkJCVNDT1RMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtQTggICAoaGV4KQkJR1ZDIENPUlBPUkFUSU9OCi0wMEMwQTggICAgIChiYXNlIDE2KQkJR1ZDIENPUlBPUkFUSU9OCi0JCQkJMTk2MSBDT05DT1VSU0UgRFJJVkUtU1RFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUE5ICAgKGhleCkJCUJBUlJPTiBNQ0NBTk4gTFRELgotMDBDMEE5ICAgICAoYmFzZSAxNikJCUJBUlJPTiBNQ0NBTk4gTFRELgotCQkJCUJFTUFDIEhPVVNFCi0JCQkJRklGVEggQVZFTlVFLCBMRVRDSFdPUlRIIEhFUlRTLiwgU0c2IDJIRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtQUEgICAoaGV4KQkJU0lMSUNPTiBWQUxMRVkgQ09NUFVURVIKLTAwQzBBQSAgICAgKGJhc2UgMTYpCQlTSUxJQ09OIFZBTExFWSBDT01QVVRFUgotCQkJCTQ0MSBOLiBXSElTTUFOIFJELiwgQkxERy4jMTMKLQkJCQlNVC4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQUIgICAoaGV4KQkJVGVsY28gU3lzdGVtcywgSW5jLgotMDBDMEFCICAgICAoYmFzZSAxNikJCVRlbGNvIFN5c3RlbXMsIEluYy4KLQkJCQkxNSBCZXJrc2hpcmUgUm9hZAotCQkJCU1hbnNmaWVsZCwgTUEgMDIwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUFDICAgKGhleCkJCUdBTUJJVCBDT01QVVRFUiBDT01NVU5JQ0FUSU9OUwotMDBDMEFDICAgICAoYmFzZSAxNikJCUdBTUJJVCBDT01QVVRFUiBDT01NVU5JQ0FUSU9OUwotCQkJCVNPTFRBTSBJTkRVU1RSSUFMIFBBUksKLQkJCQlQLk8uIEJPWCAxMDcgWU9LTkVBTSAyMDY5MgotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC1DMC1BRCAgIChoZXgpCQlNQVJCRU4gQ09NTVVOSUNBVElPTiBTWVNURU1TCi0wMEMwQUQgICAgIChiYXNlIDE2KQkJTUFSQkVOIENPTU1VTklDQVRJT04gU1lTVEVNUwotCQkJCTEgUlVFIERVIEJPSVMgQ0hBTEFORAotCQkJCUxJU1NFUyA5MTAyOSBFVlJZIENFREVYCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLUMwLUFFICAgKGhleCkJCVRPV0VSQ09NIENPLiBJTkMuIERCQSBQQyBIT1VTRQotMDBDMEFFICAgICAoYmFzZSAxNikJCVRPV0VSQ09NIENPLiBJTkMuIERCQSBQQyBIT1VTRQotCQkJCTg0MSBFLiBBUlRFU0lBIEJMVkQuCi0JCQkJQ0FSU09OIENBIDkwNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1BRiAgIChoZXgpCQlURUtMT0dJWCBJTkMuCi0wMEMwQUYgICAgIChiYXNlIDE2KQkJVEVLTE9HSVggSU5DLgotCQkJCTIxMDAgTUVBRE9XVkFMRSBCT1VMRVZBUkQKLQkJCQlNSVNTSVNTQVVHQSwgT05UQVJJTywKLQkJCQlDQU5BREEgTDVOIDdKOQotCQkJCUNBTkFEQQotCi0wMC1DMC1CMCAgIChoZXgpCQlHQ0MgVEVDSE5PTE9HSUVTLElOQy4KLTAwQzBCMCAgICAgKGJhc2UgMTYpCQlHQ0MgVEVDSE5PTE9HSUVTLElOQy4KLQkJCQk1ODAgV0lOVEVSIFNUUkVFVAotCQkJCVdBTFRIQU0gTUEgMDIxNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUIxICAgKGhleCkJCUdFTklVUyBORVQgQ08uCi0wMEMwQjEgICAgIChiYXNlIDE2KQkJR0VOSVVTIE5FVCBDTy4KLQkJCQk0RiwgSEFOU09PIEIvRCAyMTAtNQotCQkJCVlBTkdKQUUtRE9ORywgU0VPQ0hPLUdVIFNFT1VMCi0JCQkJU09VVEggS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtQzAtQjIgICAoaGV4KQkJTk9SQU5EIENPUlBPUkFUSU9OCi0wMEMwQjIgICAgIChiYXNlIDE2KQkJTk9SQU5EIENPUlBPUkFUSU9OCi0JCQkJNTUwIDJORCBTVFJFRVQgU0UKLQkJCQlDRURBUiBSQVBJRFMgSUEgNTI0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUIzICAgKGhleCkJCUNPTVNUQVQgREFUQUNPTU0gQ09SUE9SQVRJT04KLTAwQzBCMyAgICAgKGJhc2UgMTYpCQlDT01TVEFUIERBVEFDT01NIENPUlBPUkFUSU9OCi0JCQkJMTcyMCBTUEVDVFJVTSBEUklWRQotCQkJCUxBV1JFTkNFVklMTEUgR0EgMzAyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUI0ICAgKGhleCkJCU1ZU09OIFRFQ0hOT0xPR1ksIElOQy4KLTAwQzBCNCAgICAgKGJhc2UgMTYpCQlNWVNPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJMkYsIE5PLiAzLCBJTkRVU1RSWSBFLiBSRC5JVgotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLIEhTSU5DSFUsICgKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLUI1ICAgKGhleCkJCUNPUlBPUkFURSBORVRXT1JLIFNZU1RFTVMsSU5DLgotMDBDMEI1ICAgICAoYmFzZSAxNikJCUNPUlBPUkFURSBORVRXT1JLIFNZU1RFTVMsSU5DLgotCQkJCTU3MTEgU0lYIEZPUktTIFJPQUQtLVNURSAjMzA2Ci0JCQkJUkFMRUlHSCBOQyAyNzYwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQjYgICAoaGV4KQkJT3ZlcmxhbmQgU3RvcmFnZSwgSW5jLgotMDBDMEI2ICAgICAoYmFzZSAxNikJCU92ZXJsYW5kIFN0b3JhZ2UsIEluYy4KLQkJCQk0ODIwIE92ZXJsYW5kIEF2ZW51ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQjcgICAoaGV4KQkJQU1FUklDQU4gUE9XRVIgQ09OVkVSU0lPTiBDT1JQCi0wMEMwQjcgICAgIChiYXNlIDE2KQkJQU1FUklDQU4gUE9XRVIgQ09OVkVSU0lPTiBDT1JQCi0JCQkJMjY3IEJPU1RPTiBST0FEICMyCi0JCQkJTk9SVEggQklMTEVSSUNBIE1BIDAxODYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1COCAgIChoZXgpCQlGUkFTRVInUyBISUxMIExURC4KLTAwQzBCOCAgICAgKGJhc2UgMTYpCQlGUkFTRVInUyBISUxMIExURC4KLQkJCQkyNzUwMiBXLiBHSUxMIFJPQUQKLQkJCQlQLk8uIEJPWCAxODkKLQkJCQlNT1JSSVNUT1dOIEFaIDg1MzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1COSAgIChoZXgpCQlGVU5LIFNPRlRXQVJFLCBJTkMuCi0wMEMwQjkgICAgIChiYXNlIDE2KQkJRlVOSyBTT0ZUV0FSRSwgSU5DLgotCQkJCTIyMiBUSElSRCBTVFJFRVQKLQkJCQlDQU1CUklER0UgTUEgMDIxNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUJBICAgKGhleCkJCU5FVFZBTlRBR0UKLTAwQzBCQSAgICAgKGJhc2UgMTYpCQlORVRWQU5UQUdFCi0JCQkJMjAxIENPTlRJTkVOVEFMIEJMVkQuLVNURS4jMjAxCi0JCQkJRUwgU0VDVU5ETyBDQSA5MDI0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQkIgICAoaGV4KQkJRk9SVkFMIENSRUFUSVZFLCBJTkMuCi0wMEMwQkIgICAgIChiYXNlIDE2KQkJRk9SVkFMIENSRUFUSVZFLCBJTkMuCi0JCQkJMy0yNy0xMiBIT05HTwotCQkJCUJVTktZTy1LVSBUT0tZTyAgMTEzCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC1CQyAgIChoZXgpCQlURUxFQ09NIEFVU1RSQUxJQS9DU1NDCi0wMEMwQkMgICAgIChiYXNlIDE2KQkJVEVMRUNPTSBBVVNUUkFMSUEvQ1NTQwotCQkJCUxPQ0tFRCBCQUcgODgxMgotCQkJCVNPVVRIQ09BU1QgTUFJTCBDRU5UUkUgMjUyMSBOLlMuVy4KLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtQzAtQkQgICAoaGV4KQkJSU5FWCBURUNITk9MT0dJRVMsIElOQy4KLTAwQzBCRCAgICAgKGJhc2UgMTYpCQlJTkVYIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTMzNTAgU0NPVFQgQkxWRC4KLQkJCQlCTERHLiMyOQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1CRSAgIChoZXgpCQlBTENBVEVMIC0gU0VMCi0wMEMwQkUgICAgIChiYXNlIDE2KQkJQUxDQVRFTCAtIFNFTAotCQkJCUxPUkVOWiBTVFIuCi0JCQkJNzAwMCBTVFVUVEdBUlQgNDAKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1DMC1CRiAgIChoZXgpCQlURUNITk9MT0dZIENPTkNFUFRTLCBMVEQuCi0wMEMwQkYgICAgIChiYXNlIDE2KQkJVEVDSE5PTE9HWSBDT05DRVBUUywgTFRELgotCQkJCUdSQU5HRSBFU1RBVEUKLQkJCQlDV01CUkFOLCBHV0VOVCwgTlA0NCAzWFIKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLUMwICAgKGhleCkJCVNIT1JFIE1JQ1JPU1lTVEVNUywgSU5DLgotMDBDMEMwICAgICAoYmFzZSAxNikJCVNIT1JFIE1JQ1JPU1lTVEVNUywgSU5DLgotCQkJCTIzIFBPQ0FIT05UQVMgQVZFTlVFCi0JCQkJT0NFQU5QT1JUIE5KIDA3NzU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1DMSAgIChoZXgpCQlRVUFEL0dSQVBISUNTLCBJTkMuCi0wMEMwQzEgICAgIChiYXNlIDE2KQkJUVVBRC9HUkFQSElDUywgSU5DLgotCQkJCU42MyBXMjMwNzUgSFdZIDc0Ci0JCQkJU1VTU0VYIFdJIDUzMDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1DMiAgIChoZXgpCQlJTkZJTklURSBORVRXT1JLUyBMVEQuCi0wMEMwQzIgICAgIChiYXNlIDE2KQkJSU5GSU5JVEUgTkVUV09SS1MgTFRELgotCQkJCTE5IEJST09LU0lERSBST0FELCBPWEhFWQotCQkJCVdBVEZPUkQsIEhFUlRTICBXRDEgNEJXIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLUMzICAgKGhleCkJCUFDVVNPTiBDT01QVVRFRCBTT05PR1JBUEhZCi0wMEMwQzMgICAgIChiYXNlIDE2KQkJQUNVU09OIENPTVBVVEVEIFNPTk9HUkFQSFkKLQkJCQkxMjIwIENIQVJMRVNUT04gUk9BRAotCQkJCVAuTy4gQk9YIDczOTMKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDM5LTczOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUM0ICAgKGhleCkJCUNPTVBVVEVSIE9QRVJBVElPTkFMCi0wMEMwQzQgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgT1BFUkFUSU9OQUwKLQkJCQlSRVFVSVJFTUVOVCBBTkFMWVNUUyBMVEQKLQkJCQlDT1JBTCBIT1VTRSwgMjc0QSBISUdIIFNUUkVFVCBBTERFUlNIT1QsCi0JCQkJR1UxMiA0TFogR1UxMiA0TFogRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLUM1ICAgKGhleCkJCVNJRCBJTkZPUk1BVElDQQotMDBDMEM1ICAgICAoYmFzZSAxNikJCVNJRCBJTkZPUk1BVElDQQotCQkJCVJVQSBEUi4gR0VSQUxETyBDQU1QT1MgTU9SRUlSQQotCQkJCTI0MCAtIDUgQU5EQVIgQ0VQIDA0NTcxLTAyMCBTQU8gUEFVTE8gLQotCQkJCUJSQVpJTAotCQkJCUJSQVpJTAotCi0wMC1DMC1DNiAgIChoZXgpCQlQRVJTT05BTCBNRURJQSBDT1JQLgotMDBDMEM2ICAgICAoYmFzZSAxNikJCVBFUlNPTkFMIE1FRElBIENPUlAuCi0JCQkJMS03LTcgTVkgQkxERy4gSElSQVRTVUtBCi0JCQkJU0hJTkFHQVdBLCAgVE9LWU8gMTQyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC1DNyAgIChoZXgpCQlTUEFSS1RSVU0gTUlDUk9TWVNURU1TLCBJTkMuCi0wMEMwQzcgICAgIChiYXNlIDE2KQkJU1BBUktUUlVNIE1JQ1JPU1lTVEVNUywgSU5DLgotCQkJCTI4NjAgWkFOS0VSIFJPQUQsICBTVEUuIzIxMAotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1DOCAgIChoZXgpCQlNSUNSTyBCWVRFIFBUWS4gTFRELgotMDBDMEM4ICAgICAoYmFzZSAxNikJCU1JQ1JPIEJZVEUgUFRZLiBMVEQuCi0JCQkJMTk3IFNIRVJCT1VSTkUgUkQuCi0JCQkJTU9OVE1PUkVOQ1kgTUVMQk9VUk5FIFZJQwotCQkJCUFVU1RSQUxJQSAzMDk0Ci0JCQkJQVVTVFJBTElBCi0KLTAwLUMwLUM5ICAgKGhleCkJCUVMU0FHIEJBSUxFWSBQUk9DRVNTCi0wMEMwQzkgICAgIChiYXNlIDE2KQkJRUxTQUcgQkFJTEVZIFBST0NFU1MKLQkJCQlBVVRPTUFUSU9OCi0JCQkJMjk4MDEgRVVDTElEIEFWRU5VRSBNUy0zUzEKLQkJCQlXSUNLTElGRkUgT0ggNDQwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUNBICAgKGhleCkJCUFMRkEsIElOQy4KLTAwQzBDQSAgICAgKGJhc2UgMTYpCQlBTEZBLCBJTkMuCi0JCQkJMTEtMSwgSU5EVVNUUlkgRUFTVCBST0FEIElWCi0JCQkJU0NJRU5DRSBCQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTkNIVQotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtQ0IgICAoaGV4KQkJQ09OVFJPTCBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0wMEMwQ0IgICAgIChiYXNlIDE2KQkJQ09OVFJPTCBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJMjUgU09VVEggU1RSRUVUCi0JCQkJSE9QS0lOVE9OIE1BIDAxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1DQyAgIChoZXgpCQlURUxFU0NJRU5DRVMgQ08gU1lTVEVNUywgSU5DLgotMDBDMENDICAgICAoYmFzZSAxNikJCVRFTEVTQ0lFTkNFUyBDTyBTWVNURU1TLCBJTkMuCi0JCQkJMzUxIE5FVyBBTEJBTlkgUkQuCi0JCQkJTU9PUkVTVE9XTiBOSiAwODA1Ny0xMTc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1DRCAgIChoZXgpCQlDT01FTFRBLCBTLkEuCi0wMEMwQ0QgICAgIChiYXNlIDE2KQkJQ09NRUxUQSwgUy5BLgotCQkJCUFWREEuIFBBUkMgVEVDTk9MT0dJQywgNAotCQkJCTA4MjkwIENFUkRBTllPTEEgREVMIFZBTExFUyBCQVJDRUxPTkEKLQkJCQlTUEFJTgotCQkJCVNQQUlOCi0KLTAwLUMwLUNFICAgKGhleCkJCUNFSSBTWVNURU1TICYgRU5HSU5FRVJJTkcgUFRFCi0wMEMwQ0UgICAgIChiYXNlIDE2KQkJQ0VJIFNZU1RFTVMgJiBFTkdJTkVFUklORyBQVEUKLQkJCQlCTEsgNzMgIzAyLTE4IEFZRVIgUkFKQUggQ1JFU0MKLQkJCQlBWUVSIFJBSkFIIElORFVTVFJJQUwgRVNUQVRFCi0JCQkJU0lOR0FQT1JFIDA1MTMKLQkJCQlTSU5HQVBPUkUKLQotMDAtQzAtQ0YgICAoaGV4KQkJSU1BVFJBTiBWT0lNQSBPWQotMDBDMENGICAgICAoYmFzZSAxNikJCUlNQVRSQU4gVk9JTUEgT1kKLQkJCQlJVk8KLQkJCQlQLk8uIEJPWCAzNDAgMDIxNTEgRVNQT08KLQkJCQlGSU5MQU5ECi0JCQkJRklOTEFORAotCi0wMC1DMC1EMCAgIChoZXgpCQlSQVRPQyBTWVNURU0gSU5DLgotMDBDMEQwICAgICAoYmFzZSAxNikJCVJBVE9DIFNZU1RFTSBJTkMuCi0JCQkJQVNBSEkgTkFNQkEgQkxERy4KLQkJCQkxLTYtMTQgU0hJS0lUU1UgSElHQVNISSBOQU5JV0FLVSBPU0FLQSBDCi0JCQkJNTU2IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtRDEgICAoaGV4KQkJQ09NVFJFRSBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0wMEMwRDEgICAgIChiYXNlIDE2KQkJQ09NVFJFRSBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJNUYtNywgTk8uIDEsIEZVLUhTSU5HIE5PUlRIIFJECi0JCQkJVEFJUEVJCi0JCQkJVEFJV0FOIFIuTy5DLgotCQkJCUNISU5BCi0KLTAwLUMwLUQyICAgKGhleCkJCVNZTlRFTExFQ1QsIElOQy4KLTAwQzBEMiAgICAgKGJhc2UgMTYpCQlTWU5URUxMRUNULCBJTkMuCi0JCQkJMTU4MTAgTi4gMjhUSCBBVkVOVUUKLQkJCQlQSE9FTklYIEFaIDg1MDIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1EMyAgIChoZXgpCQlPTFlNUFVTIElNQUdFIFNZU1RFTVMsIElOQy4KLTAwQzBEMyAgICAgKGJhc2UgMTYpCQlPTFlNUFVTIElNQUdFIFNZU1RFTVMsIElOQy4KLQkJCQkxNTI3MSBCQVJSQU5DQSBQQVJLV0FZCi0JCQkJSVJWSU5FIENBIDkyNzE4LTIyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUQ0ICAgKGhleCkJCUFYT04gTkVUV09SS1MsIElOQy4KLTAwQzBENCAgICAgKGJhc2UgMTYpCQlBWE9OIE5FVFdPUktTLCBJTkMuCi0JCQkJMTA0IFNQUlVDRSBTVFJFRVQKLQkJCQlXQVRFUlRPV04gTUEgMDIxNzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUQ1ICAgKGhleCkJCVdlcmJlYWdlbnR1ciBKdXJnZW4gU2llYmVydAotMDBDMEQ1ICAgICAoYmFzZSAxNikJCVdlcmJlYWdlbnR1ciBKdXJnZW4gU2llYmVydAotCQkJCUltIEtsb3N0ZXJnYXJ0ZW4gOAotCQkJCUQtNTAzMjEgQnJ1aGwgIAotCQkJCUdFUk1BTlkKLQotMDAtQzAtRDYgICAoaGV4KQkJSjEgU1lTVEVNUywgSU5DLgotMDBDMEQ2ICAgICAoYmFzZSAxNikJCUoxIFNZU1RFTVMsIElOQy4KLQkJCQkzIERVTldPT0RZIFBBUkstU1RFLiMxMDMKLQkJCQlBVExBTlRBIEdBIDMwMzM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1ENyAgIChoZXgpCQlUQUlXQU4gVFJBRElORyBDRU5URVIgREJBCi0wMEMwRDcgICAgIChiYXNlIDE2KQkJVEFJV0FOIFRSQURJTkcgQ0VOVEVSIERCQQotCQkJCVRUQyBDT01QVVRFUiBQUk9EVUNUUwotCQkJCTMyNDQgTi4gU0tZV0FZIENJUkNMRSAjMTAyCi0JCQkJSVJWSU5HIFRYIDc1MDM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1EOCAgIChoZXgpCQlVTklWRVJTQUwgREFUQSBTWVNURU1TCi0wMEMwRDggICAgIChiYXNlIDE2KQkJVU5JVkVSU0FMIERBVEEgU1lTVEVNUwotCQkJCTUwMDAgQlJBREZPUkQgRFJJVkUKLQkJCQlIVU5UU1ZJTExFIEFMIDM1ODA1LTE5OTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUQ5ICAgKGhleCkJCVFVSU5URSBORVRXT1JLIENPTkZJREVOVElBTElUWQotMDBDMEQ5ICAgICAoYmFzZSAxNikJCVFVSU5URSBORVRXT1JLIENPTkZJREVOVElBTElUWQotCQkJCUVRVUlQTUVOVCBJTkMuCi0JCQkJMjA3IC0gMTIxIERJTURBUyBTVFJFRVQgRUFTVCBCRUxMRVZJTExFLAotCQkJCUNBTkFEQSBLOE4gMUMzCi0JCQkJQ0FOQURBCi0KLTAwLUMwLURBICAgKGhleCkJCU5JQ0UgU1lTVEVNUyBMVEQuCi0wMEMwREEgICAgIChiYXNlIDE2KQkJTklDRSBTWVNURU1TIExURC4KLQkJCQkzIFRFVlVPVCBIQSdBUkVUWiBTVAotCQkJCVRFTCBBVklWICA2OTU0NgotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC1DMC1EQiAgIChoZXgpCQlJUEMgQ09SUE9SQVRJT04gKFBURSkgTFRELgotMDBDMERCICAgICAoYmFzZSAxNikJCUlQQyBDT1JQT1JBVElPTiAoUFRFKSBMVEQuCi0JCQkJMTIyIEVVTk9TIEFWRS4sIDcgIzA1LTEwCi0JCQkJU0lOR0FQT1JFIDE0NDAKLQkJCQlTSU5HQVBPUkUKLQotMDAtQzAtREMgICAoaGV4KQkJRU9TIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBDMERDICAgICAoYmFzZSAxNikJCUVPUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkzOTQ1IEZSRUVET00gQ0lSQ0xFLCBTVEUuIzc3MAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1ERCAgIChoZXgpCQlRTG9naWMgQ29ycG9yYXRpb24KLTAwQzBERCAgICAgKGJhc2UgMTYpCQlRTG9naWMgQ29ycG9yYXRpb24KLQkJCQk2MzIxIEJ1cnkgRHIuCi0JCQkJRWRlbiBQcmFyaWUgTU4gNTUzNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLURFICAgKGhleCkJCVpDT01NLCBJTkMuCi0wMEMwREUgICAgIChiYXNlIDE2KQkJWkNPTU0sIElOQy4KLQkJCQkxMDUwIEMgRUFTVCBEVUFORSBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLURGICAgKGhleCkJCUtZRSBTeXN0ZW1zIENvcnAuCi0wMEMwREYgICAgIChiYXNlIDE2KQkJS1lFIFN5c3RlbXMgQ29ycC4KLQkJCQlOby4gNDkyIFNlYyA1LCBDaHVuZyBIc2luIFJvYWQKLQkJCQlUYWlwZWkgSHNpZW4gMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1DMC1FMCAgIChoZXgpCQlEU0MgQ09NTVVOSUNBVElPTiBDT1JQLgotMDBDMEUwICAgICAoYmFzZSAxNikJCURTQyBDT01NVU5JQ0FUSU9OIENPUlAuCi0JCQkJMTAwMCBDT0lUIFJPQUQsICBNUyNBRFZQIDMKLQkJCQlQTEFOTyBUWCA3NTA3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRTEgICAoaGV4KQkJU09OSUMgU09MVVRJT05TCi0wMEMwRTEgICAgIChiYXNlIDE2KQkJU09OSUMgU09MVVRJT05TCi0JCQkJMTg5MSBFLiBGUkFOQ0lTQ08gQkxWRC4KLQkJCQlTQU4gUkFGQUVMIENBIDk0OTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1FMiAgIChoZXgpCQlDQUxDT01QLCBJTkMuCi0wMEMwRTIgICAgIChiYXNlIDE2KQkJQ0FMQ09NUCwgSU5DLgotCQkJCTI0MTEgVy4gTEFQQUxNQSBBVkVOVUUKLQkJCQlQLk8uIEJPWCAzMjUwLCBNUzIyCi0JCQkJQU5BSEVJTSBDQSA5MjgwMy0zMjUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1FMyAgIChoZXgpCQlPU0lURUNIIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEMwRTMgICAgIChiYXNlIDE2KQkJT1NJVEVDSCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTY3OSBTT1VUSEdBVEUgRFJJVkUKLQkJCQlHVUVMUEgsIE9OVEFSSU8KLQkJCQlDQU5BREEgTjFHIDRTMgotCQkJCUNBTkFEQQotCi0wMC1DMC1FNCAgIChoZXgpCQlTSUVNRU5TIEJVSUxESU5HCi0wMEMwRTQgICAgIChiYXNlIDE2KQkJU0lFTUVOUyBCVUlMRElORwotCQkJCVRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTEwMDAgREVFUkZJRUxEIFBBUktXQVkKLQkJCQlCVUZGQUxPIEdST1ZFIElMIDYwMDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1FNSAgIChoZXgpCQlHRVNQQUMsIFMuQS4KLTAwQzBFNSAgICAgKGJhc2UgMTYpCQlHRVNQQUMsIFMuQS4KLQkJCQlDSEVNSU4gREVTIEFVTFggMTgKLQkJCQlDSC0xMjI4IEdFTkVWQQotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtQzAtRTYgICAoaGV4KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLTAwQzBFNiAgICAgKGJhc2UgMTYpCQlWZXJpbGluayBDb3Jwb3JhdGlvbgotCQkJCTEyNyBKZXRwbGV4IENpcmNsZQotCQkJCU1hZGlzb24gQUwgMzU3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUU3ICAgKGhleCkJCUZJQkVSREFUQSBBQgotMDBDMEU3ICAgICAoYmFzZSAxNikJCUZJQkVSREFUQSBBQgotCQkJCVAuTy4gQk9YIDIwMDk1Ci0JCQkJUy0xNjEwMiBCUk9NTUEKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtQzAtRTggICAoaGV4KQkJUExFWENPTSwgSU5DLgotMDBDMEU4ICAgICAoYmFzZSAxNikJCVBMRVhDT00sIElOQy4KLQkJCQk2NSBNT1JFTEFORCBST0FERU5VWUUKLQkJCQlTSU1JIFZBTExFWSBDQSA5MzA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRTkgICAoaGV4KQkJT0FLIFNPTFVUSU9OUywgTFRELgotMDBDMEU5ICAgICAoYmFzZSAxNikJCU9BSyBTT0xVVElPTlMsIExURC4KLQkJCQlCUk9BRFdBWSBIT1VTRQotCQkJCTE0OS0xNTEgU1QgTkVPVFMgUkQsIEhBUkRXSUNLIENBTUJSSURHRQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC1FQSAgIChoZXgpCQlBUlJBWSBURUNITk9MT0dZIExURC4KLTAwQzBFQSAgICAgKGJhc2UgMTYpCQlBUlJBWSBURUNITk9MT0dZIExURC4KLQkJCQkxNDUgRlJJTUxFWSBST0FECi0JCQkJQ0FNQkVSTEVZLCBTVVJSRVkKLQkJCQlFTkdMQU5EIEdVMTUgMlBTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtRUIgICAoaGV4KQkJU0VIIENPTVBVVEVSVEVDSE5JSyBHTUJICi0wMEMwRUIgICAgIChiYXNlIDE2KQkJU0VIIENPTVBVVEVSVEVDSE5JSyBHTUJICi0JCQkJU3VlZHJpbmcgMTEKLQkJCQlQLk8uIEJPWCAxNDA4MjkgRC0zMzYyOCBCaWVsZWZlbGQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1DMC1FQyAgIChoZXgpCQlEQVVQSElOIFRFQ0hOT0xPR1kKLTAwQzBFQyAgICAgKGJhc2UgMTYpCQlEQVVQSElOIFRFQ0hOT0xPR1kKLQkJCQk0NTAgRUlTRU5IT1dFUiBMQU5FIE5PUlRICi0JCQkJTE9NQkFSRCBJTCA2MDE0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRUQgICAoaGV4KQkJVVMgQVJNWSBFTEVDVFJPTklDCi0wMEMwRUQgICAgIChiYXNlIDE2KQkJVVMgQVJNWSBFTEVDVFJPTklDCi0JCQkJUFJPVklORyBHUk9VTkQKLQkJCQkxODM4IFBBU0VPIFNBTiBMVUlTCi0JCQkJU0lFUlJBIFZJU1RBIEFaIDg1NjM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1FRSAgIChoZXgpCQlLWU9DRVJBIENPUlBPUkFUSU9OCi0wMEMwRUUgICAgIChiYXNlIDE2KQkJS1lPQ0VSQSBDT1JQT1JBVElPTgotCQkJCTItMTQtOSBUQU1BR0FXQURBSQotCQkJCVNFVEFHQVlBLUtVLCBUT0tZTwotCQkJCTE1OCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLUVGICAgKGhleCkJCUFCSVQgQ09SUE9SQVRJT04KLTAwQzBFRiAgICAgKGJhc2UgMTYpCQlBQklUIENPUlBPUkFUSU9OCi0JCQkJMjktMTEgSElSQU9LQS1DSE8KLQkJCQlIQUNISU9VSkktU0hJIFRPS1lPCi0JCQkJMTkyIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtRjAgICAoaGV4KQkJS0lOR1NUT04gVEVDSE5PTE9HWSBDT1JQLgotMDBDMEYwICAgICAoYmFzZSAxNikJCUtJTkdTVE9OIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkxNzYwMCBORVdIT1BFIFNUUkVFVAotCQkJCUZPVU5UQUlOIFZBTExFWSBDQSA5MjcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRjEgICAoaGV4KQkJU0hJTktPIEVMRUNUUklDIENPLiwgTFRELgotMDBDMEYxICAgICAoYmFzZSAxNikJCVNISU5LTyBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQlDT01QVVRFUiBTWVNURU0gRElWSVNJT04KLQkJCQkxNTAgTU9UT1lBU0hJS0ksIFNBTllBLUNITyBUT1lPSEFTSEktU0hJCi0JCQkJSkFQQU4gNDQxLTMxCi0JCQkJSkFQQU4KLQotMDAtQzAtRjIgICAoaGV4KQkJVFJBTlNJVElPTiBORVRXT1JLUwotMDBDMEYyICAgICAoYmFzZSAxNikJCVRSQU5TSVRJT04gTkVUV09SS1MKLQkJCQk2NDc1IENJVFkgV0VTVCBQQVJLV0FZCi0JCQkJTUlOTkVBUE9MSVMgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUYzICAgKGhleCkJCU5FVFdPUksgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwQzBGMyAgICAgKGJhc2UgMTYpCQlORVRXT1JLIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJNTUwMSBHUkVFTiBWQUxMRVkgRFJJVkUKLQkJCQlCTE9PTUlOR1RPTiBNTiA1NTQzNy0xMDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GNCAgIChoZXgpCQlJTlRFUkxJTksgU1lTVEVNIENPLiwgTFRELgotMDBDMEY0ICAgICAoYmFzZSAxNikJCUlOVEVSTElOSyBTWVNURU0gQ08uLCBMVEQuCi0JCQkJSU5URVJMSU5LIEIvRCwgNDc2LTIwCi0JCQkJU0VPR1lPLURPTkcsIE1BUE8tS1UgU0VPVUwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1DMC1GNSAgIChoZXgpCQlNRVRBQ09NUCwgSU5DLgotMDBDMEY1ICAgICAoYmFzZSAxNikJCU1FVEFDT01QLCBJTkMuCi0JCQkJMTA5ODkgVklBIEZST05URVJBCi0JCQkJU0FOIERJRUdPIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GNiAgIChoZXgpCQlDRUxBTiBURUNITk9MT0dZIElOQy4KLTAwQzBGNiAgICAgKGJhc2UgMTYpCQlDRUxBTiBURUNITk9MT0dZIElOQy4KLQkJCQlOTy4gMTAxLCBNSU4tSFNJQU5HIFNULgotCQkJCUhTSU4tQ0hVIENJVFkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCUNISU5BCi0KLTAwLUMwLUY3ICAgKGhleCkJCUVOR0FHRSBDT01NVU5JQ0FUSU9OLCBJTkMuCi0wMEMwRjcgICAgIChiYXNlIDE2KQkJRU5HQUdFIENPTU1VTklDQVRJT04sIElOQy4KLQkJCQk5MDUzIFNPUVVFTCBEUklWRQotCQkJCUFQVE9TIENBIDk1MDAzLTQwMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUY4ICAgKGhleCkJCUFCT1VUIENPTVBVVElORyBJTkMuCi0wMEMwRjggICAgIChiYXNlIDE2KQkJQUJPVVQgQ09NUFVUSU5HIElOQy4KLQkJCQlQLk8uIEJPWCAxNzIKLQkJCQlCRUxNT05UIE1BIDAyMTc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GOSAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIKLTAwQzBGOSAgICAgKGJhc2UgMTYpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIKLQkJCQkyOTAwIFMuIERpYWJsbyBXYXkgU3VpdGUgMTkwCi0JCQkJVGVtcGUgQVogODUyODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUZBICAgKGhleCkJCUNBTkFSWSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBDMEZBICAgICAoYmFzZSAxNikJCUNBTkFSWSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTE4NTEgWkFOS0VSIFJPQUQKLQkJCQlTQU4gSk9TRSBDQSA5NTExMi00MjEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GQiAgIChoZXgpCQlBRFZBTkNFRCBURUNITk9MT0dZIExBQlMKLTAwQzBGQiAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBURUNITk9MT0dZIExBQlMKLQkJCQkyMjEwMCBCT1RIRUxMIEhJR0hXQVkgUy5FLgotCQkJCVAuTy4gQk9YIDMwMDMKLQkJCQlCT1RIRUxMIFdBIDk4MDQxLTMwMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUZDICAgKGhleCkJCUVMQVNUSUMgUkVBTElUWSwgSU5DLgotMDBDMEZDICAgICAoYmFzZSAxNikJCUVMQVNUSUMgUkVBTElUWSwgSU5DLgotCQkJCTkyNSBTVEVXQVJUIFNUUkVFVAotCQkJCU1BRElTT04gV0kgNTM3MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUZEICAgKGhleCkJCVBST1NVTQotMDBDMEZEICAgICAoYmFzZSAxNikJCVBST1NVTQotCQkJCTEyIFJVRSBTQURJLUNBUk5PVAotCQkJCTk0MzcwICBOT0lTRUFVCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLUMwLUZFICAgKGhleCkJCUFQVEVDIENPTVBVVEVSIFNZU1RFTVMsIElOQy4KLTAwQzBGRSAgICAgKGJhc2UgMTYpCQlBUFRFQyBDT01QVVRFUiBTWVNURU1TLCBJTkMuCi0JCQkJUC5PLiBCT1ggNjc1MAotCQkJCVBPUlRMQU5EIE9SIDk3MjI4LTY3NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUZGICAgKGhleCkJCURPVCBISUxMIFNZU1RFTVMgQ09SUE9SQVRJT04KLTAwQzBGRiAgICAgKGJhc2UgMTYpCQlET1QgSElMTCBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJNjMwNSBFbCBDYW1pbm8gUmVhbAotCQkJCUNhcmxzYmFkIENBIDkyMDA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DQi1CRCAgIChoZXgpCQlDYW1icmlkZ2UgQnJvYWRiYW5kIE5ldHdvcmtzIEx0ZC4KLTAwQ0JCRCAgICAgKGJhc2UgMTYpCQlDYW1icmlkZ2UgQnJvYWRiYW5kIE5ldHdvcmtzIEx0ZC4KLQkJCQlTZWx3eW4gSG91c2UgQ2FtYnJpZGdlIEJ1c2luZXNzIFBhcmsKLQkJCQlDYW1icmlkZ2UgQnVzaW5lc3MgUGFyawotCQkJCUNhbWJyaWRnZSAgQ0I0IDBXWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUNGLTFDICAgKGhleCkJCUNPTU1VTklDQVRJT04gTUFDSElORVJZIENPUlAuCi0wMENGMUMgICAgIChiYXNlIDE2KQkJQ09NTVVOSUNBVElPTiBNQUNISU5FUlkgQ09SUC4KLQkJCQkxMjI2IEFOQUNBUEEKLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0wMCAgIChoZXgpCQlGRVJSQU4gU0NJRU5USUZJQywgSU5DLgotMDBEMDAwICAgICAoYmFzZSAxNikJCUZFUlJBTiBTQ0lFTlRJRklDLCBJTkMuCi0JCQkJMTE1NTggU09SUkVOVE8gVkFMTEVZIFJPQUQKLQkJCQlTVUlURSAgIzEKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTAxICAgKGhleCkJCVZTVCBURUNITk9MT0dJRVMsIElOQy4KLTAwRDAwMSAgICAgKGJhc2UgMTYpCQlWU1QgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTI1IE5BR09HIFBBUksKLQkJCQlBQ1RPTiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMDIgICAoaGV4KQkJRElURUNIIENPUlBPUkFUSU9OCi0wMEQwMDIgICAgIChiYXNlIDE2KQkJRElURUNIIENPUlBPUkFUSU9OCi0JCQkJODI1IEVBU1QgTUlERExFRklFTEQgUkQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0wMyAgIChoZXgpCQlDT01EQSBFTlRFUlBSSVNFUyBDT1JQLgotMDBEMDAzICAgICAoYmFzZSAxNikJCUNPTURBIEVOVEVSUFJJU0VTIENPUlAuCi0JCQkJMkYsIE5PLiA1MDEtMTgsIENIVU5HQ0hFTiBST0FECi0JCQkJSFNJTlRJRU4sIFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUk9DCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC0wNCAgIChoZXgpCQlQRU5UQUNPTSBMVEQuCi0wMEQwMDQgICAgIChiYXNlIDE2KQkJUEVOVEFDT00gTFRELgotCQkJCTggSEFTQUROQU9UIFNUUkVFVAotCQkJCVAuTy4gQk9YIDEyMTA5IEhFUlpMSUEgNDY3MzMKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtRDAtMDUgICAoaGV4KQkJWkhTIFpFSVRNQU5BR0VNRU5UU1lTVEVNRQotMDBEMDA1ICAgICAoYmFzZSAxNikJCVpIUyBaRUlUTUFOQUdFTUVOVFNZU1RFTUUKLQkJCQlIQVJELVVORCBTT0ZUV0FSRSBHTUJICi0JCQkJS1JFVVpCRVJHRVIgUklORyA1NiA2NTIwNSBXSUVTQkFERU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC0wNiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEQwMDYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0wNyAgIChoZXgpCQlNSUMgQVNTT0NJQVRFUywgSU5DLgotMDBEMDA3ICAgICAoYmFzZSAxNikJCU1JQyBBU1NPQ0lBVEVTLCBJTkMuCi0JCQkJMTUxMC0xLCBLQUlET0tJCi0JCQkJVEFNQSwgVE9LWU8KLQkJCQlKQVBBTiBKQVBBTiAyMDYtMDAxMgotCQkJCUpBUEFOCi0KLTAwLUQwLTA4ICAgKGhleCkJCU1BQ1RFTEwgQ09SUE9SQVRJT04KLTAwRDAwOCAgICAgKGJhc2UgMTYpCQlNQUNURUxMIENPUlBPUkFUSU9OCi0JCQkJNzAwMCBDQU1FUk9OIFJPQUQKLQkJCQlBVVNUSU4gVFggNzg3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTA5ICAgKGhleCkJCUhTSU5HIFRFQ0guIEVOVEVSUFJJU0UgQ08uIExURAotMDBEMDA5ICAgICAoYmFzZSAxNikJCUhTSU5HIFRFQ0guIEVOVEVSUFJJU0UgQ08uIExURAotCQkJCU5PLjIsIExBTkUgMTI4LCBTRUMuIDIKLQkJCQlDSFVORyBTSEFOIE4uIFJELiBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtMEEgICAoaGV4KQkJTEFOQUNDRVNTIFRFTEVDT00gUy5BLgotMDBEMDBBICAgICAoYmFzZSAxNikJCUxBTkFDQ0VTUyBURUxFQ09NIFMuQS4KLQkJCQlHUkFOIFZJQSA4LTEwICA0ICAxCi0JCQkJMDg5MDItIEwnSE9TUElUQUxFVCBERSBMTE9CUkVHQVQKLQkJCQlTUEFJTgotCQkJCVNQQUlOCi0KLTAwLUQwLTBCICAgKGhleCkJCVJISyBURUNITk9MT0dZLCBJTkMuCi0wMEQwMEIgICAgIChiYXNlIDE2KQkJUkhLIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkxMDUwIEVBU1QgTUFQTEUgUk9BRAotCQkJCVRST1kgTUkgNDgwODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTBDICAgKGhleCkJCVNOSUpERVIgTUlDUk8gU1lTVEVNUwotMDBEMDBDICAgICAoYmFzZSAxNikJCVNOSUpERVIgTUlDUk8gU1lTVEVNUwotCQkJCVAuTy4gQk9YIDMwMAotCQkJCU5MLTU3NTAgQUggREVVUk5FCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtRDAtMEQgICAoaGV4KQkJTUlDUk9NRVJJVElDUyBJTlNUUlVNRU5UCi0wMEQwMEQgICAgIChiYXNlIDE2KQkJTUlDUk9NRVJJVElDUyBJTlNUUlVNRU5UCi0JCQkJQ09SUE9SQVRJT04KLQkJCQlPTkUgTUlDUk9NRUVSSVRJQ1MgRFJJVkUKLQkJCQlOT1JDUk9TUyBHQSAzMDA5My0xODc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0wRSAgIChoZXgpCQlQTFVSSVMsIElOQy4KLTAwRDAwRSAgICAgKGJhc2UgMTYpCQlQTFVSSVMsIElOQy4KLQkJCQkxMDQ1NSBCQU5ETEVZIERSSVZFCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0wRiAgIChoZXgpCQlTUEVFQ0ggREVTSUdOIEdNQkgKLTAwRDAwRiAgICAgKGJhc2UgMTYpCQlTUEVFQ0ggREVTSUdOIEdNQkgKLQkJCQlJTkRVU1RSSUVTVFIuIDEKLQkJCQlELTgyMTEwIEdFUk1FUklORwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLTEwICAgKGhleCkJCUNPTlZFUkdFTlQgTkVUV09SS1MsIElOQy4KLTAwRDAxMCAgICAgKGJhc2UgMTYpCQlDT05WRVJHRU5UIE5FVFdPUktTLCBJTkMuCi0JCQkJMiBISUdIV09PRCBEUklWRQotCQkJCVRFV0tTQlVSWSBNQSAwMTg3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMTEgICAoaGV4KQkJUFJJU00gVklERU8sIElOQy4KLTAwRDAxMSAgICAgKGJhc2UgMTYpCQlQUklTTSBWSURFTywgSU5DLgotCQkJCTE1ODUxIERBTExBUyBQQVJLV0FZLVNURS4jMTA2MAotCQkJCUFERElTT04gVFggNzUwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTEyICAgKGhleCkJCUdBVEVXT1JLUyBDT1JQLgotMDBEMDEyICAgICAoYmFzZSAxNikJCUdBVEVXT1JLUyBDT1JQLgotCQkJCTc2MzEgTU9SUk8gUk9BRAotCQkJCUFUQVNDQURFUk8gQ0EgOTM0MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTEzICAgKGhleCkJCVBSSU1FWCBBRVJPU1BBQ0UgQ09NUEFOWQotMDBEMDEzICAgICAoYmFzZSAxNikJCVBSSU1FWCBBRVJPU1BBQ0UgQ09NUEFOWQotCQkJCVAuTy4gQk9YIDk3MDA5Ci0JCQkJMTE0NDEgV0lMTE9XUyBST0FEIE5FCi0JCQkJUkVETU9ORCBXQSA5ODA3My05NzA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0xNCAgIChoZXgpCQlST09ULCBJTkMuCi0wMEQwMTQgICAgIChiYXNlIDE2KQkJUk9PVCwgSU5DLgotCQkJCThGIFRPQzIgQmxkZywgNy0yMS0xMSBOaXNoaS1Hb3RhbmRhCi0JCQkJU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gMTQxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC1EMC0xNSAgIChoZXgpCQlVTklWRVggTUlDUk9URUNITk9MT0dZIENPUlAuCi0wMEQwMTUgICAgIChiYXNlIDE2KQkJVU5JVkVYIE1JQ1JPVEVDSE5PTE9HWSBDT1JQLgotCQkJCTIsIFRaRS1DSElBTkcgM1JEIFJPQUQKLQkJCQlDSFVORy1MSSBJTkRVU1RSSUFMIFBBUkssIENIVU5HLUxJCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC0xNiAgIChoZXgpCQlTQ00gTUlDUk9TWVNURU1TLCBJTkMuCi0wMEQwMTYgICAgIChiYXNlIDE2KQkJU0NNIE1JQ1JPU1lTVEVNUywgSU5DLgotCQkJCTE2MCBLTk9XTEVTIERSSVZFCi0JCQkJTE9TIEdBVE9TIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0xNyAgIChoZXgpCQlTWU5URUNIIElORk9STUFUSU9OIENPLiwgTFRELgotMDBEMDE3ICAgICAoYmFzZSAxNikJCVNZTlRFQ0ggSU5GT1JNQVRJT04gQ08uLCBMVEQuCi0JCQkJOEYsIDIxMCwgVEEtVFVORyBSRC4sIFNFQy4gMwotCQkJCUhTSS1DSElILCBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4gVEFJV0FOIFJPQwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtMTggICAoaGV4KQkJUVdFUy4gQ09NLCBJTkMuCi0wMEQwMTggICAgIChiYXNlIDE2KQkJUVdFUy4gQ09NLCBJTkMuCi0JCQkJMTQ3NDIgTkVXUE9SVCBBVkUuIC0gU1RFLiAjMjAzCi0JCQkJVFVTVElOIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0xOSAgIChoZXgpCQlEQUlOSVBQT04gU0NSRUVOIENPUlBPUkFURQotMDBEMDE5ICAgICAoYmFzZSAxNikJCURBSU5JUFBPTiBTQ1JFRU4gQ09SUE9SQVRFCi0JCQkJUkVQUkVTRU5UQVRJVkVTIE9GIEFNRVJJQ0EsSU5DCi0JCQkJMTc5NDIgQ09XQU4gQVZFTlVFCi0JCQkJSVJWSU5FIENBIDkyNjE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0xQSAgIChoZXgpCQlVUk1FVCAgVExDIFMuUC5BLgotMDBEMDFBICAgICAoYmFzZSAxNikJCVVSTUVUICBUTEMgUy5QLkEuCi0JCQkJVklBIERJIENBU1RFTCBST01BTk8gMTY3Ci0JCQkJMDAxMjggLSBST01BCi0JCQkJSVRBTFkKLQotMDAtRDAtMUIgICAoaGV4KQkJTUlNQUtJIEVOR0lORUVSSU5HIENPLiwgTFRELgotMDBEMDFCICAgICAoYmFzZSAxNikJCU1JTUFLSSBFTkdJTkVFUklORyBDTy4sIExURC4KLQkJCQk1LTktNDEgS0lUQSBTSElOQUdBV0EKLQkJCQlTSElOQUdBV0EtS1UgVE9LWU8gMTQxLTAwMDEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUQwLTFDICAgKGhleCkJCVNCUyBURUNITk9MT0dJRVMsCi0wMEQwMUMgICAgIChiYXNlIDE2KQkJU0JTIFRFQ0hOT0xPR0lFUywKLQkJCQlDT05ORUNUSVZJVFkgUFJPRFVDVFMKLQkJCQkxMjg0IENPUlBPUkFURSBDRU5URVIgRFJJVkUKLQkJCQlTVC4gUEFVTCBNTiA1NTEyMS0xMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0xRCAgIChoZXgpCQlGVVJVTk8gRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMEQwMUQgICAgIChiYXNlIDE2KQkJRlVSVU5PIEVMRUNUUklDIENPLiwgTFRELgotCQkJCU5PLiA5LTUyLCBBU0hJSEFSQS1DSE8KLQkJCQlOSVNISU5PTUlZQS1DSVRZCi0JCQkJNjYyLTg1ODAgCi0JCQkJSkFQQU4KLQotMDAtRDAtMUUgICAoaGV4KQkJUElOR1RFTCBDT1JQLgotMDBEMDFFICAgICAoYmFzZSAxNikJCVBJTkdURUwgQ09SUC4KLQkJCQk3NzMgV0lOVEVSIFNUUkVFVAotCQkJCU4uIEFORE9WRVIgTUEgMDE4NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTFGICAgKGhleCkJCUNUQU0gUFRZLiBMVEQuCi0wMEQwMUYgICAgIChiYXNlIDE2KQkJQ1RBTSBQVFkuIExURC4KLQkJCQkzOTkgSElHSCBTVFJFRVQKLQkJCQlBU0hCVVJUT04gMzE0NyBWSUNUT1JJQQotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC1EMC0yMCAgIChoZXgpCQlBSU0gU1lTVEVNLCBJTkMuCi0wMEQwMjAgICAgIChiYXNlIDE2KQkJQUlNIFNZU1RFTSwgSU5DLgotCQkJCTRUSCBGTE9PUiBDSFVOR1dPTyBCL0QgMjE5LTEKLQkJCQlQT1lFRS1ET05HLCBHQU5HTkFNLUtVIFNFT0wsIDEzNS0yMDAKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC0yMSAgIChoZXgpCQlSRUdFTlQgRUxFQ1RST05JQ1MgQ09SUC4KLTAwRDAyMSAgICAgKGJhc2UgMTYpCQlSRUdFTlQgRUxFQ1RST05JQ1MgQ09SUC4KLQkJCQkyMDAgQ0VOVEVOTklBTCBBVkUuLVNURS4gIzIwMQotCQkJCVBJU0NBVEFXQVkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTIyICAgKGhleCkJCUlOQ1JFRElCTEUgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEQwMjIgICAgIChiYXNlIDE2KQkJSU5DUkVESUJMRSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxNjAwIEhJQ0tTIFJPQUQKLQkJCQlST0xMSU5HIE1FQURPV1MgSUwgNjAwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTIzICAgKGhleCkJCUlORk9SVFJFTkQgVEVDSE5PTE9HWSwgSU5DLgotMDBEMDIzICAgICAoYmFzZSAxNikJCUlORk9SVFJFTkQgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTEwRiwgTk8uIDMzIFNBTi1NSU4gUkQuCi0JCQkJU0VDLiAyIFBBTkNISUFPIENJVFkgVEFJUEVJIEhTSUVOCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC0yNCAgIChoZXgpCQlDb2duZXggQ29ycG9yYXRpb24KLTAwRDAyNCAgICAgKGJhc2UgMTYpCQlDb2duZXggQ29ycG9yYXRpb24KLQkJCQlNb2R1bGFyIFZpc2lvbiBTeXN0ZW1zIERpdmlzaW9uCi0JCQkJSW4tU2lnaHQgUHJvZHVjdHMgR3JvdXAgMTU4NjUgU1cgNzR0aCBBdgotCQkJCVBvcnRsYW5kIE9SIDk3MjI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0yNSAgIChoZXgpCQlYUk9TU1RFQ0gsIElOQy4KLTAwRDAyNSAgICAgKGJhc2UgMTYpCQlYUk9TU1RFQ0gsIElOQy4KLQkJCQlIQUJET05HIEIvRCA1RiAyMTAtMgotCQkJCVlBTkdKQUUtRE9ORywgU0VPQ0hPLUtVIFNFT1VMCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtRDAtMjYgICAoaGV4KQkJSElSU0NITUFOTiBBVVNUUklBIEdNQkgKLTAwRDAyNiAgICAgKGJhc2UgMTYpCQlISVJTQ0hNQU5OIEFVU1RSSUEgR01CSAotCQkJCU9CRVJFUiBQQVNQRUxTV0VHIDYgLSA4Ci0JCQkJNjgzMCBSQU5LV0VJTC1CUkVERVJJUwotCQkJCUFVU1RSSUEKLQkJCQlBVVNUUklBCi0KLTAwLUQwLTI3ICAgKGhleCkJCUFQUExJRUQgQVVUT01BVElPTiwgSU5DLgotMDBEMDI3ICAgICAoYmFzZSAxNikJCUFQUExJRUQgQVVUT01BVElPTiwgSU5DLgotCQkJCVAuTy4gQk9YIDk5OTkKLQkJCQlCQVJUTEVTVklMTEUgT0sgNzQwMDUtOTk5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMjggICAoaGV4KQkJT01ORU9OIFZJREVPIE5FVFdPUktTCi0wMEQwMjggICAgIChiYXNlIDE2KQkJT01ORU9OIFZJREVPIE5FVFdPUktTCi0JCQkJOTY1IFN0ZXdhcnQgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYtMzkxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMjkgICAoaGV4KQkJV0FLRUZFUk4gRk9PRCBDT1JQT1JBVElPTgotMDBEMDI5ICAgICAoYmFzZSAxNikJCVdBS0VGRVJOIEZPT0QgQ09SUE9SQVRJT04KLQkJCQkyMzAgUkFSSVRBTiBDRU5URVIgUEFSS1dBWQotCQkJCUVESVNPTiBOSiAwODgzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMkEgICAoaGV4KQkJVm94ZW50IFN5c3RlbXMgTHRkLgotMDBEMDJBICAgICAoYmFzZSAxNikJCVZveGVudCBTeXN0ZW1zIEx0ZC4KLQkJCQlVbml0IDIsIFJvd2FuIEhvdXNlCi0JCQkJU2hlbGRvbiBCdXNpbmVzcyBQYXJrCi0JCQkJQ2hpcHBlbmhhbSBXaWx0c2hpcmUgU04xNCAwU1EKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC0yQiAgIChoZXgpCQlKRVRDRUxMLCBJTkMuCi0wMEQwMkIgICAgIChiYXNlIDE2KQkJSkVUQ0VMTCwgSU5DLgotCQkJCTE3MyBDT05TVElUVVRJT04gRFJJVkUKLQkJCQlNRU5MTyBQQVJLIENBIDk0MDI1LTExMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTJDICAgKGhleCkJCUNBTVBCRUxMIFNDSUVOVElGSUMsIElOQy4KLTAwRDAyQyAgICAgKGJhc2UgMTYpCQlDQU1QQkVMTCBTQ0lFTlRJRklDLCBJTkMuCi0JCQkJODE1IFcuIDE4MDAgTi4KLQkJCQlMT0dBTiBVVCA4NDMyMS0xNzg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0yRCAgIChoZXgpCQlBREVNQ08KLTAwRDAyRCAgICAgKGJhc2UgMTYpCQlBREVNQ08KLQkJCQkxNjUgRUlMRUVOIFdBWQotCQkJCVNZT1NTRVQgTlkgMTE3OTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTJFICAgKGhleCkJCUNPTU1VTklDQVRJT04gQVVUT01BVElPTiBDT1JQLgotMDBEMDJFICAgICAoYmFzZSAxNikJCUNPTU1VTklDQVRJT04gQVVUT01BVElPTiBDT1JQLgotCQkJCTExODAgTUNERVJNT1RUIERSSVZFCi0JCQkJV0VTVCBDSEVTVEVSIFBBIDE5MzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0yRiAgIChoZXgpCQlWTFNJIFRFQ0hOT0xPR1kgSU5DLgotMDBEMDJGICAgICAoYmFzZSAxNikJCVZMU0kgVEVDSE5PTE9HWSBJTkMuCi0JCQkJODM3NSBTLiBSSVZFUiBQQVJLV0FZCi0JCQkJVEVNUEUgQVogODUyODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTMwICAgKGhleCkJCVNhZmV0cmFuIFN5c3RlbXMgQ29ycAotMDBEMDMwICAgICAoYmFzZSAxNikJCVNhZmV0cmFuIFN5c3RlbXMgQ29ycAotCQkJCTEwNjU1IDd0aCBTdHJlZXQKLQkJCQlSYW5jaG8gQ3VjYW1vbmdhIENBIDkxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0zMSAgIChoZXgpCQlJTkRVU1RSSUFMIExPR0lDIENPUlBPUkFUSU9OCi0wMEQwMzEgICAgIChiYXNlIDE2KQkJSU5EVVNUUklBTCBMT0dJQyBDT1JQT1JBVElPTgotCQkJCTE1IFBJRURNT05UIENFTlRFUi1TVEUgIzcwMAotCQkJCUFUTEFOVEEgR0EgMzAzMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTMyICAgKGhleCkJCVlBTk8gRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMEQwMzIgICAgIChiYXNlIDE2KQkJWUFOTyBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQk3LTMtMSBJQlVLSURBSUhJR0FTSElNQUNISQotCQkJCU5JU0hJLUtVLCBLT0JFLCA2NTEtMjI0MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtRDAtMzMgICAoaGV4KQkJREFMSUFOIERBWElBTiBORVRXT1JLCi0wMEQwMzMgICAgIChiYXNlIDE2KQkJREFMSUFOIERBWElBTiBORVRXT1JLCi0JCQkJU1lTVEVNIENPLiwgTFRELgotCQkJCTk4IFNIRU5HTEkgUkQgWElHQU5HIERJU1RSSUNUIERBTElBTiwgUC4KLQkJCQlDSElOQQotCQkJCUNISU5BCi0KLTAwLUQwLTM0ICAgKGhleCkJCU9STUVDIFNZU1RFTVMgQ09SUC4KLTAwRDAzNCAgICAgKGJhc2UgMTYpCQlPUk1FQyBTWVNURU1TIENPUlAuCi0JCQkJMTkgTElOREVOIFBBUksKLQkJCQlST0NIRVNURVIgTlkgMTQ2MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTM1ICAgKGhleCkJCUJFSEFWSU9SIFRFQ0guIENPTVBVVEVSIENPUlAuCi0wMEQwMzUgICAgIChiYXNlIDE2KQkJQkVIQVZJT1IgVEVDSC4gQ09NUFVURVIgQ09SUC4KLQkJCQkyMEYtQiwgTm8uOTgsIFNlYy4gMSwKLQkJCQlTaW50YWkgNXRoIFJkLgotCQkJCVNpamhpaCBDaXR5IFRhaXBlaSBDb3VudHkgMjIxMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTM2ICAgKGhleCkJCVRFQ0hOT0xPR1kgQVRMQU5UQSBDT1JQLgotMDBEMDM2ICAgICAoYmFzZSAxNikJCVRFQ0hOT0xPR1kgQVRMQU5UQSBDT1JQLgotCQkJCTE0MSBXLiBXSUVVQ0EgUkQuIE4uRS4KLQkJCQlTVUlURSAjMzAwCi0JCQkJQVRMQU5UQSBHQSAzMDM0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMzcgICAoaGV4KQkJUGFjZSBGcmFuY2UKLTAwRDAzNyAgICAgKGJhc2UgMTYpCQlQYWNlIEZyYW5jZQotCQkJCTMzIHJ1ZSBkZSBWZXJkdW4KLQkJCQk5MjE1MCBTdXJlc25lcyAKLQkJCQlGUkFOQ0UKLQotMDAtRDAtMzggICAoaGV4KQkJRklWRU1FUkUsIExURC4KLTAwRDAzOCAgICAgKGJhc2UgMTYpCQlGSVZFTUVSRSwgTFRELgotCQkJCVVOSVQgMS1IRVJPTiBJTkRVU1RSSUFMIEVTVEFURQotCQkJCUJBU0lOR1NUT0tFIFJPQUQgU1BFTkNFUlMgV09PRCwgIFJFQURJTkcKLQkJCQlSRzcgMVBKIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC0zOSAgIChoZXgpCQlVVElMSUNPTSwgSU5DLgotMDBEMDM5ICAgICAoYmFzZSAxNikJCVVUSUxJQ09NLCBJTkMuCi0JCQkJMzIzIExPVkUgUExBQ0UKLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTEyLTMyODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTNBICAgKGhleCkJCVpPTkVXT1JYLCBJTkMuCi0wMEQwM0EgICAgIChiYXNlIDE2KQkJWk9ORVdPUlgsIElOQy4KLQkJCQk0MDkyNSBDT1VOVFkgQ0VOVEVSIERSSVZFCi0JCQkJU1VJVEUgIzIwMAotCQkJCVRFTUVDVUxBIENBIDkyNTkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0zQiAgIChoZXgpCQlWSVNJT04gUFJPRFVDVFMgUFRZLiBMVEQuCi0wMEQwM0IgICAgIChiYXNlIDE2KQkJVklTSU9OIFBST0RVQ1RTIFBUWS4gTFRELgotCQkJCVNFQ09ORCBBVkVOVUUsIFRFQ0hOT0xPR1kgUEFSSwotCQkJCU1BV1NPTiBMQUtFUwotCQkJCUFVU1RSQUxJQSA1MDk1Ci0JCQkJQVVTVFJBTElBCi0KLTAwLUQwLTNDICAgKGhleCkJCVZpZW8sIEluYy4KLTAwRDAzQyAgICAgKGJhc2UgMTYpCQlWaWVvLCBJbmMuCi0JCQkJMTI0MTYgSHltZWFkb3cgRHJpdmUsCi0JCQkJU3VpdGUgMjAwCi0JCQkJQXVzdGluIFRYIDc4NzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0zRCAgIChoZXgpCQlHQUxJTEVPIFRFQ0hOT0xPR1ksIExURC4KLTAwRDAzRCAgICAgKGJhc2UgMTYpCQlHQUxJTEVPIFRFQ0hOT0xPR1ksIExURC4KLQkJCQlNT1NIQVYgTUFOT0YKLQkJCQlELk4uIE1JU0dBViAyMDE4NAotCQkJCUlTUkFFTAotCi0wMC1EMC0zRSAgIChoZXgpCQlST0NLRVRDSElQUywgSU5DLgotMDBEMDNFICAgICAoYmFzZSAxNikJCVJPQ0tFVENISVBTLCBJTkMuCi0JCQkJNzkwMSBYRVJYRVMgQVZFLiBTLgotCQkJCU1JTk5FQVBPTElTIE1OIDU1NDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0zRiAgIChoZXgpCQlBTUVSSUNBTiBDT01NVU5JQ0FUSU9OCi0wMEQwM0YgICAgIChiYXNlIDE2KQkJQU1FUklDQU4gQ09NTVVOSUNBVElPTgotCQkJCVRFQ0hOT0xJR0lFUyBJTlRFUk5BVElPTkFMIElOQwotCQkJCTMyMCBQUk9GRVNTSU9OQUwgQ0VOVEVSIERSLiBTVUlURSAjMTAwCi0JCQkJUk9ITkVSVCBQQVJLIENBIDk0OTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC00MCAgIChoZXgpCQlTWVNNQVRFIENPLiwgTFRELgotMDBEMDQwICAgICAoYmFzZSAxNikJCVNZU01BVEUgQ08uLCBMVEQuCi0JCQkJMTA5MSBXT0xQWU9ORy1ET05HCi0JCQkJU0VPLUdVLCBERUFKQ09OIDMwMi0yODAKLQkJCQlTT1VUSCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC00MSAgIChoZXgpCQlBTUlHTyBURUNITk9MT0dZIENPLiwgTFRELgotMDBEMDQxICAgICAoYmFzZSAxNikJCUFNSUdPIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJNEYtMUIsIE5PLjEyLCBMQU5FIDYwOSwgU0VDLjUsCi0JCQkJQ0hVTkcgSFNJTiBST0FELCBTQU4gQ0hVTkcgVEFJUEVJIEhTSUVOCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTQyICAgKGhleCkJCU1BSExPIEdNQkggJiBDTy4gVUcKLTAwRDA0MiAgICAgKGJhc2UgMTYpCQlNQUhMTyBHTUJIICYgQ08uIFVHCi0JCQkJRE9OQVVTVFJBU1NFIDEyCi0JCQkJRC05MzM0MiBTQUFML0RPTkFVCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtNDMgICAoaGV4KQkJWk9OQUwgUkVUQUlMIERBVEEgU1lTVEVNUwotMDBEMDQzICAgICAoYmFzZSAxNikJCVpPTkFMIFJFVEFJTCBEQVRBIFNZU1RFTVMKLQkJCQkyNCBGT1JUSCBTVFJFRVQKLQkJCQlFRElOQlVSR0gKLQkJCQlTQ09UTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTQ0ICAgKGhleCkJCUFMSURJQU4gTkVUV09SS1MsIElOQy4KLTAwRDA0NCAgICAgKGJhc2UgMTYpCQlBTElESUFOIE5FVFdPUktTLCBJTkMuCi0JCQkJMTMzMCBXLiBNSURETEVGSUVMRCBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNDUgICAoaGV4KQkJS1ZBU0VSIEFCCi0wMEQwNDUgICAgIChiYXNlIDE2KQkJS1ZBU0VSIEFCCi0JCQkJQk9YIDQwNzYKLQkJCQk1MTEgMDQgS0lOTkFIVUxUCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLUQwLTQ2ICAgKGhleCkJCURPTEJZIExBQk9SQVRPUklFUywgSU5DLgotMDBEMDQ2ICAgICAoYmFzZSAxNikJCURPTEJZIExBQk9SQVRPUklFUywgSU5DLgotCQkJCTEwMCBQb3RyZXJvIEF2ZW51ZQotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDMtNDkzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNDcgICAoaGV4KQkJWE4gVEVDSE5PTE9HSUVTCi0wMEQwNDcgICAgIChiYXNlIDE2KQkJWE4gVEVDSE5PTE9HSUVTCi0JCQkJUC5PLiBCT1ggMzUwCi0JCQkJQ0hFTkVZIFdBIDk5MDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC00OCAgIChoZXgpCQlFQ1RPTiwgSU5DLgotMDBEMDQ4ICAgICAoYmFzZSAxNikJCUVDVE9OLCBJTkMuCi0JCQkJNTE2OCBDQU1QVVMgRFJJVkUKLQkJCQlQTFlNT1VUSCBNRUVUSU5HIFBBIDE5NDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC00OSAgIChoZXgpCQlJTVBSRVNTVEVLIENPLiwgTFRELgotMDBEMDQ5ICAgICAoYmFzZSAxNikJCUlNUFJFU1NURUsgQ08uLCBMVEQuCi0JCQkJNkYsIFNQRUNJQUxUWSBDT05TVFJVQ1RJT04gQ1RSCi0JCQkJMTI5MCwgU1VOU0FOLURPTkcsU08tR1UKLQkJCQkzMDItMTIwIEtPUkVBIChSRVAuKQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC00QSAgIChoZXgpCQlQUkVTRU5DRSBURUNITk9MT0dZIEdNQkgKLTAwRDA0QSAgICAgKGJhc2UgMTYpCQlQUkVTRU5DRSBURUNITk9MT0dZIEdNQkgKLQkJCQkrIENPLiBLRwotCQkJCVNFTkRFTkhPUlNURVIgU1RSLiAzMiBELTQ4MzE3IERSRU5TVEVJTkYKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC00QiAgIChoZXgpCQlMQSBDSUUgR1JPVVAgUy5BLgotMDBEMDRCICAgICAoYmFzZSAxNikJCUxBIENJRSBHUk9VUCBTLkEuCi0JCQkJMTcgUlVFIEFNUEVSRQotCQkJCTkxMzQ5IE1BU1NZIENFREVYCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLUQwLTRDICAgKGhleCkJCUVVUk9URUwgVEVMRUNPTSBMVEQuCi0wMEQwNEMgICAgIChiYXNlIDE2KQkJRVVST1RFTCBURUxFQ09NIExURC4KLQkJCQlDQU5JU1RFUiBIT1VTRQotCQkJCUpFV1JZIFNUUkVFVCBXSU5DSEVTVEVSIEIwMjMgOFNBCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC00RCAgIChoZXgpCQlESVYgT0YgUkVTRUFSQ0ggJiBTVEFUSVNUSUNTCi0wMEQwNEQgICAgIChiYXNlIDE2KQkJRElWIE9GIFJFU0VBUkNIICYgU1RBVElTVElDUwotCQkJCUJPRyBPRiBUSEUgRkVERVJBTCBSRVNFUlZFIFNZUwotCQkJCU1BSUwgU1RPUCA5NiAyMFRIICYKLQkJCQlXQVNISU5HVE9OIERDIDIwNTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC00RSAgIChoZXgpCQlMT0dJQkFHCi0wMEQwNEUgICAgIChiYXNlIDE2KQkJTE9HSUJBRwotCQkJCTIsIFJ1ZSBkZSBsYSBNYW5kaW5pZXJlCi0JCQkJNzIzMDAgU0FCTEUvU0FSVEhFCi0JCQkJRlJBTkNFCi0KLTAwLUQwLTRGICAgKGhleCkJCUJJVFJPTklDUywgSU5DLgotMDBEMDRGICAgICAoYmFzZSAxNikJCUJJVFJPTklDUywgSU5DLgotCQkJCVAuTy4gQk9YIDIyMjkwCi0JCQkJTEVISUdIIFZBTExFWSBQQSAxODAwMi0yMjkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC01MCAgIChoZXgpCQlJU0tSQVRFTAotMDBEMDUwICAgICAoYmFzZSAxNikJCUlTS1JBVEVMCi0JCQkJTEpVQkxKQU5TS0EgQy4gMjRBCi0JCQkJNDAwMCBLUkFOSgotCQkJCVNMT1ZFTklBCi0JCQkJU0xPVkVOSUEKLQotMDAtRDAtNTEgICAoaGV4KQkJTzIgTUlDUk8sIElOQy4KLTAwRDA1MSAgICAgKGJhc2UgMTYpCQlPMiBNSUNSTywgSU5DLgotCQkJCTI5MDEgVEFTTUFOIERSSVZFLCBTVEUuIzIwNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC01MiAgIChoZXgpCQlBU0NFTkQgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRDA1MiAgICAgKGJhc2UgMTYpCQlBU0NFTkQgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQlPTkUgQVNDRU5EIFBMQVpBCi0JCQkJMTcwMSBIQVJCT1IgQkFZIFBBUktXQVkKLQkJCQlBTEFNRURBIENBIDk0NTAyLTMwMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTUzICAgKGhleCkJCUNPTk5FQ1RFRCBTWVNURU1TCi0wMEQwNTMgICAgIChiYXNlIDE2KQkJQ09OTkVDVEVEIFNZU1RFTVMKLQkJCQkxMjYgVy4gRklHVUVST0EgU1RSRUVUCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNTQgICAoaGV4KQkJU0FTIElOU1RJVFVURSBJTkMuCi0wMEQwNTQgICAgIChiYXNlIDE2KQkJU0FTIElOU1RJVFVURSBJTkMuCi0JCQkJU0FTIENBTVBVUyBEUklWRSwgUjQKLQkJCQlDQVJZIE5DIDI3NTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC01NSAgIChoZXgpCQlLQVRIUkVJTi1XRVJLRSBLRwotMDBEMDU1ICAgICAoYmFzZSAxNikJCUtBVEhSRUlOLVdFUktFIEtHCi0JCQkJQU5UT04tS0FUSFJFSU4tU1RSQVNTIDEtMwotCQkJCUQtODMwMDQgUk9TRU5IRUlNCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtNTYgICAoaGV4KQkJU09NQVQgQ09SUE9SQVRJT04KLTAwRDA1NiAgICAgKGJhc2UgMTYpCQlTT01BVCBDT1JQT1JBVElPTgotCQkJCTcwMiBLSUxMQVJORVkgU1RSRUVUCi0JCQkJVVJCQU5BIElMIDYxODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC01NyAgIChoZXgpCQlVTFRSQUssIElOQy4KLTAwRDA1NyAgICAgKGJhc2UgMTYpCQlVTFRSQUssIElOQy4KLQkJCQkxMzAxIFdBVEVSUyBSSURHRSBEUklWRQotCQkJCUxFV0lTVklMTEUgVFggNzUwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTU4ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDA1OCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTU5ICAgKGhleCkJCUFNQklUIE1JQ1JPU1lTVEVNUyBDT1JQLgotMDBEMDU5ICAgICAoYmFzZSAxNikJCUFNQklUIE1JQ1JPU1lTVEVNUyBDT1JQLgotCQkJCTVGLTEsIDUgSFNJTi1BTiBST0FECi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTkNIVQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC01QSAgIChoZXgpCQlTWU1CSU9OSUNTLCBMVEQuCi0wMEQwNUEgICAgIChiYXNlIDE2KQkJU1lNQklPTklDUywgTFRELgotCQkJCVNULiBKT0hOJ1MgSU5OT1ZBVElPTiBQQVJLCi0JCQkJQ0FNQlJJREdFICBDQjQgMFdTCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTVCICAgKGhleCkJCUFDUk9MT09QIE1PVElPTiBDT05UUk9MCi0wMEQwNUIgICAgIChiYXNlIDE2KQkJQUNST0xPT1AgTU9USU9OIENPTlRST0wKLQkJCQlTWVNURU1TCi0JCQkJMzY1MCBDSEVTVE5VVCBTVC4gTi4KLQkJCQlDSEFTS0EgTU4gNTUzMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTVDICAgKGhleCkJCVRFQ0hOT1RSRU5EIFNZU1RFTVRFQ0hOSUsgR01CSAotMDBEMDVDICAgICAoYmFzZSAxNikJCVRFQ0hOT1RSRU5EIFNZU1RFTVRFQ0hOSUsgR01CSAotCQkJCVdJTEhFTE0tV09MRkYtU1RSQVNTRSA2Ci0JCQkJR0VSLTk5MDk5IEVSRlVSVAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLTVEICAgKGhleCkJCUlOVEVMTElXT1JYWCwgSU5DLgotMDBEMDVEICAgICAoYmFzZSAxNikJCUlOVEVMTElXT1JYWCwgSU5DLgotCQkJCTE4MTkgTUFJTiBTVFJFRVQsICBTVEUgIzExMDEKLQkJCQlTQVJBU09UQSBGTCAzNDIzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNUUgICAoaGV4KQkJU1RSQVRBQkVBTSBURUNITk9MT0dZLCBJTkMuCi0wMEQwNUUgICAgIChiYXNlIDE2KQkJU1RSQVRBQkVBTSBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTk0MyBMQU5ESU5HUyBEUklWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTVGICAgKGhleCkJCVZBTENPTSwgSU5DLgotMDBEMDVGICAgICAoYmFzZSAxNikJCVZBTENPTSwgSU5DLgotCQkJCTExMTEgSU5EVVNUUlkgQVZFTlVFCi0JCQkJUk9BTk9LRSBWQSAyNDAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNjAgICAoaGV4KQkJUGFuYXNvbmljIEV1cm9wZSBMdGQuCi0wMEQwNjAgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIEV1cm9wZSBMdGQuCi0JCQkJTEFCT1JBVE9SSUVTIEdNQkgKLQkJCQlNT05aQVNUUi4gNEMgRC02MzIyNSBMQU5HRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC02MSAgIChoZXgpCQlUUkVNT04gRU5URVJQUklTRVMgQ08uLCBMVEQuCi0wMEQwNjEgICAgIChiYXNlIDE2KQkJVFJFTU9OIEVOVEVSUFJJU0VTIENPLiwgTFRELgotCQkJCTE1RiwgTk8uIDExNiwgU0VDLiAxCi0JCQkJSFNJTi1UQUkgNVRIIFJPQUQgSFNJQ0hJSCwgVEFJUEVJIENPVU5UWQotCQkJCVRBSVdBTiBUQUlXQU4gUk9DCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC02MiAgIChoZXgpCQlESUdJR1JBTQotMDBEMDYyICAgICAoYmFzZSAxNikJCURJR0lHUkFNCi0JCQkJUEFSQyBERSBQUkUgTUlMTElFVAotCQkJCTM4MzMwIE1PTlRCT05OT1QKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtRDAtNjMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMDYzICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNjQgICAoaGV4KQkJTVVMVElURUwKLTAwRDA2NCAgICAgKGJhc2UgMTYpCQlNVUxUSVRFTAotCQkJCTI5MDUgUlVFIERFIENFTExFUwotCQkJCVFVRUJFQyBDSVRZLCBRVUVCRUMgUFJPVklOQ0UKLQkJCQlDQU5BREEgQ0FOQURBIEcyQy0xVzcKLQkJCQlDQU5BREEKLQotMDAtRDAtNjUgICAoaGV4KQkJVE9LTyBFTEVDVFJJQwotMDBEMDY1ICAgICAoYmFzZSAxNikJCVRPS08gRUxFQ1RSSUMKLQkJCQk0MDA4IEtVUk9IQU1BLCBIQVNVREEtU0hJCi0JCQkJU0FJVEFNQSAzNDktMDE5MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtRDAtNjYgICAoaGV4KQkJV0lOVFJJU1MgRU5HSU5FRVJJTkcgQ09SUC4KLTAwRDA2NiAgICAgKGJhc2UgMTYpCQlXSU5UUklTUyBFTkdJTkVFUklORyBDT1JQLgotCQkJCTYzNDQgRkVSUklTIFNRVUFSRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNjcgICAoaGV4KQkJQ0FNUElPIENPTU1VTklDQVRJT05TCi0wMEQwNjcgICAgIChiYXNlIDE2KQkJQ0FNUElPIENPTU1VTklDQVRJT05TCi0JCQkJMjAzMyBHQVRFV0FZIFBMLCBTVUlURSAjNjAwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTY4ICAgKGhleCkJCUlXSUxMIENPUlBPUkFUSU9OCi0wMEQwNjggICAgIChiYXNlIDE2KQkJSVdJTEwgQ09SUE9SQVRJT04KLQkJCQlOTy4xMCwgV1UtQ0hVQU4gMyBSRCwKLQkJCQlIU0lOLUNIVUFOIENJVFkgVEFJUEVJCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC02OSAgIChoZXgpCQlURUNITk9MT0dJQyBTWVNURU1TCi0wMEQwNjkgICAgIChiYXNlIDE2KQkJVEVDSE5PTE9HSUMgU1lTVEVNUwotCQkJCTE2NjEwIEUuIExBU0VSIERSSVZFLVNURS4gIzEwCi0JCQkJRk9VTlRBSU4gSElMTFMgQVogODUyNjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTZBICAgKGhleCkJCUxJTktVUCBTWVNURU1TIENPUlBPUkFUSU9OCi0wMEQwNkEgICAgIChiYXNlIDE2KQkJTElOS1VQIFNZU1RFTVMgQ09SUE9SQVRJT04KLQkJCQkxMTkwIENPTEVNQU4gQVZFLi0gU1RFICMyQwotCQkJCVNBTiBKT1NFIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC02QiAgIChoZXgpCQlTUiBURUxFQ09NIElOQy4KLTAwRDA2QiAgICAgKGJhc2UgMTYpCQlTUiBURUxFQ09NIElOQy4KLQkJCQk4MTUwIFRyYW5zIENhbmFkYSBIaWdod2F5Ci0JCQkJTW9udHJlYWwKLQkJCQlRdWViZWMgIEg0UyAxTTUKLQkJCQlDQU5BREEKLQotMDAtRDAtNkMgICAoaGV4KQkJU0hBUkVXQVZFLCBJTkMuCi0wMEQwNkMgICAgIChiYXNlIDE2KQkJU0hBUkVXQVZFLCBJTkMuCi0JCQkJNTE3NSBISUxMU0RBTEUgQ0lSQ0xFCi0JCQkJRUwgRE9SQURPIEhJTExTIENBIDk1NzYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC02RCAgIChoZXgpCQlBQ1JJU09OLCBJTkMuCi0wMEQwNkQgICAgIChiYXNlIDE2KQkJQUNSSVNPTiwgSU5DLgotCQkJCTIwIEVNUElSRSBCTFZELgotCQkJCU1PT05BQ0hJRSBOSiAwNzA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNkUgICAoaGV4KQkJVFJFTkRWSUVXIFJFQ09SREVSUyBMVEQuCi0wMEQwNkUgICAgIChiYXNlIDE2KQkJVFJFTkRWSUVXIFJFQ09SREVSUyBMVEQuCi0JCQkJNCBBSVJGSUVMRCBXQVkKLQkJCQlDSFJJU1RDSFVSQ0ggRE9SU0VUIEJIMjMgM1RTCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC02RiAgIChoZXgpCQlLTUMgQ09OVFJPTFMKLTAwRDA2RiAgICAgKGJhc2UgMTYpCQlLTUMgQ09OVFJPTFMKLQkJCQlQLk8uIEJPWCA0OTcKLQkJCQkxOTQ3NiBORVcgUEFSSVMgSU5EVVNUUklBTCBEUi4KLQkJCQlORVcgUEFSSVMgSU4gNDY1NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTcwICAgKGhleCkJCUxPTkcgV0VMTCBFTEVDVFJPTklDUyBDT1JQLgotMDBEMDcwICAgICAoYmFzZSAxNikJCUxPTkcgV0VMTCBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTRGLCBOTy4gNTktMSwgVFNBTyBESSBXRUkKLQkJCQlTSEVOR0tFTkcgSFNJQU5HLCBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4gMjIyIFRBSVdBTiAyMjIgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC03MSAgIChoZXgpCQlFQ0hFTE9OIENPUlAuCi0wMEQwNzEgICAgIChiYXNlIDE2KQkJRUNIRUxPTiBDT1JQLgotCQkJCTU1MCBNZXJpZGlhbiBBdmVudWUKLQkJCQlTYW4gSm9zZSBDQSA5NTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNzIgICAoaGV4KQkJQlJPQURMT0dJQwotMDBEMDcyICAgICAoYmFzZSAxNikJCUJST0FETE9HSUMKLQkJCQk0NjMgUy4gTUlMUElUQVMgQkxWRC4KLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNzMgICAoaGV4KQkJQUNOIEFEVkFOQ0VEIENPTU1VTklDQVRJT05TCi0wMEQwNzMgICAgIChiYXNlIDE2KQkJQUNOIEFEVkFOQ0VEIENPTU1VTklDQVRJT05TCi0JCQkJTkVUV09SS1MgU0EKLQkJCQlSVUUgRFUgUFVJVFMtR09ERVQgQkEgQ0gtMjAwMCBORVVDSEFURUwKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLUQwLTc0ICAgKGhleCkJCVRBUVVBIFNZU1RFTVMsIElOQy4KLTAwRDA3NCAgICAgKGJhc2UgMTYpCQlUQVFVQSBTWVNURU1TLCBJTkMuCi0JCQkJMTYwMCBGQUxNT1VUSCBSRC4gLSBTVEUKLQkJCQlDRU5URVJWSUxMRSBNQSAwMjYzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNzUgICAoaGV4KQkJQUxBUklTIE1FRElDQUwgU1lTVEVNUywgSU5DLgotMDBEMDc1ICAgICAoYmFzZSAxNikJCUFMQVJJUyBNRURJQ0FMIFNZU1RFTVMsIElOQy4KLQkJCQlQLk8uIEJPWCA4NTMzNQotCQkJCTEwMjIxIFdBVEVSSURHRSBDSVJDTEUKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEtMjczMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNzYgICAoaGV4KQkJIEJhbmsgb2YgQW1lcmljYQotMDBEMDc2ICAgICAoYmFzZSAxNikJCSBCYW5rIG9mIEFtZXJpY2EKLQkJCQkxMTAwIE1lcnJpbGwgRHJpdmUKLQkJCQlQZW5uaW5ndG9uIE5KIDA4NTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC03NyAgIChoZXgpCQlMVUNFTlQgVEVDSE5PTE9HSUVTCi0wMEQwNzcgICAgIChiYXNlIDE2KQkJTFVDRU5UIFRFQ0hOT0xPR0lFUwotCQkJCUNMSUVOVCBBQ0NFU1MgQlVTSU5FU1MgVU5JVAotCQkJCTEwMSBDUkFXRk9SRFMgQ09STkVSIFJPQUQgUk9PTSAjMUUtNDM3QUwKLQkJCQlIT0xNREVMIE5KIDA3NzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC03OCAgIChoZXgpCQlFbHRleCBvZiBTd2VkZW4gQUIKLTAwRDA3OCAgICAgKGJhc2UgMTYpCQlFbHRleCBvZiBTd2VkZW4gQUIKLQkJCQlCb3ggMjQKLQkJCQkyODMgMjEgT1NCWSAgCi0JCQkJU1dFREVOCi0KLTAwLUQwLTc5ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDA3OSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTdBICAgKGhleCkJCUFNQVFVRVNUIENPTVBVVEVSIENPUlAuCi0wMEQwN0EgICAgIChiYXNlIDE2KQkJQU1BUVVFU1QgQ09NUFVURVIgQ09SUC4KLQkJCQk4L0YsIDc5IEhTSU4tVEFJCi0JCQkJNVRIIFJPQUQsIFNFQy4gMSBIUzEtQ0hJSCwgVEFJUEVJCi0JCQkJVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtN0IgICAoaGV4KQkJQ09NQ0FNIElOVEVSTkFUSU9OQUwgSU5DCi0wMEQwN0IgICAgIChiYXNlIDE2KQkJQ09NQ0FNIElOVEVSTkFUSU9OQUwgSU5DCi0JCQkJMTE0MCBNY0Rlcm1vdHQgRHJpdmUgU3VpdGUgMjAwCi0JCQkJV0VTVCBDSEVTVEVSIFBBIDE5MzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC03QyAgIChoZXgpCQlLT1lPIEVMRUNUUk9OSUNTIElOQy4gQ08uLExURC4KLTAwRDA3QyAgICAgKGJhc2UgMTYpCQlLT1lPIEVMRUNUUk9OSUNTIElOQy4gQ08uLExURC4KLQkJCQkxLTE3MSBURU5KSU4tQ0hPIEtPREFJUkEKLQkJCQlUT0tZTyAgMTg3LTAwMDQKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUQwLTdEICAgKGhleCkJCUNPU0lORSBDT01NVU5JQ0FUSU9OUwotMDBEMDdEICAgICAoYmFzZSAxNikJCUNPU0lORSBDT01NVU5JQ0FUSU9OUwotCQkJCTEyMDAgQlJJREdFIFBBUktXQVkKLQkJCQlSRURXT09EIENJVFkgQ0EgOTQwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTdFICAgKGhleCkJCUtFWUNPUlAgTFRELgotMDBEMDdFICAgICAoYmFzZSAxNikJCUtFWUNPUlAgTFRELgotCQkJCVAuTy4gQk9YIDE5OQotCQkJCUNIQVRTV09PRCBOU1cgMjA1NwotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC1EMC03RiAgIChoZXgpCQlTVFJBVEVHWSAmIFRFQ0hOT0xPR1ksIExJTUlURUQKLTAwRDA3RiAgICAgKGJhc2UgMTYpCQlTVFJBVEVHWSAmIFRFQ0hOT0xPR1ksIExJTUlURUQKLQkJCQlTdWl0ZSA0LjIsIENsaWZ0b24gSGVpZ2h0cwotCQkJCVRyaWFuZ2xlIFdlc3QKLQkJCQlCcmlzdG9sIEJTOCAxRUoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC04MCAgIChoZXgpCQlFWEFCWVRFIENPUlBPUkFUSU9OCi0wMEQwODAgICAgIChiYXNlIDE2KQkJRVhBQllURSBDT1JQT1JBVElPTgotCQkJCTE2ODUgMzhUSCBTVFJFRVQKLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04MSAgIChoZXgpCQlSVEQgRW1iZWRkZWQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMEQwODEgICAgIChiYXNlIDE2KQkJUlREIEVtYmVkZGVkIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwMyBJbm5vdmF0aW9uIEJsdmQuCi0JCQkJU3RhdGUgQ29sbGVnZSBQQSAxNjgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtODIgICAoaGV4KQkJSU9XQVZFIElOQy4KLTAwRDA4MiAgICAgKGJhc2UgMTYpCQlJT1dBVkUgSU5DLgotCQkJCTEwMTAgV0lTQ09OU0lOIEFWRU5VRQotCQkJCVdBU0hJTkdUT04gREMgMjAwMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTgzICAgKGhleCkJCUlOVkVSVEVYLCBJTkMuCi0wMEQwODMgICAgIChiYXNlIDE2KQkJSU5WRVJURVgsIElOQy4KLQkJCQkxMDEyIE1PUlNFIEFWRU5VRS0gU1RFLiM5Ci0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04NCAgIChoZXgpCQlORVhDT01NIFNZU1RFTVMsIElOQy4KLTAwRDA4NCAgICAgKGJhc2UgMTYpCQlORVhDT01NIFNZU1RFTVMsIElOQy4KLQkJCQlTVUlUICNOQUwtOTAzLAotCQkJCVNVTkdOQU0gVEVDSE5PLVBBUksgMTQ4IFlBVEFQLURPTkcsIEJVTkQKLQkJCQlTVU5HTkFNLUNJVFkgU1VOR05BTS1DSVRZIEtZVU5HR0ktRE8sSwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC04NSAgIChoZXgpCQlPVElTIEVMRVZBVE9SIENPTVBBTlkKLTAwRDA4NSAgICAgKGJhc2UgMTYpCQlPVElTIEVMRVZBVE9SIENPTVBBTlkKLQkJCQk1IEZBUk0gU1BSSU5HUyBSRC4KLQkJCQlGQVJNSU5HVE9OIENUIDA2MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04NiAgIChoZXgpCQlGT1ZFT04sIElOQy4KLTAwRDA4NiAgICAgKGJhc2UgMTYpCQlGT1ZFT04sIElOQy4KLQkJCQkyODIwIFNhbiBUb21hcyBFeHByZXNzd2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTg3ICAgKGhleCkJCU1JQ1JPRklSU1QgSU5DLgotMDBEMDg3ICAgICAoYmFzZSAxNikJCU1JQ1JPRklSU1QgSU5DLgotCQkJCTExIEVBU1QgT0FLIFNUUkVFVAotCQkJCU9BS0xBTkQgTkogMDc0MzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTg4ICAgKGhleCkJCU1vdG9yb2xhLCBJbmMuCi0wMEQwODggICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYy4KLQkJCQkyNDUwIFdhbHNoIEF2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04OSAgIChoZXgpCQlEWU5BQ09MT1IsIElOQy4KLTAwRDA4OSAgICAgKGJhc2UgMTYpCQlEWU5BQ09MT1IsIElOQy4KLQkJCQlOby4xMTYsIFpob3V6aSBTdC4sIE5laWh1IERpc3QuCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtOEEgICAoaGV4KQkJUEhPVFJPTiBVU0EKLTAwRDA4QSAgICAgKGJhc2UgMTYpCQlQSE9UUk9OIFVTQQotCQkJCTExMDEgUy4gV0lOQ0hFU1RFUiBCTFZELgotCQkJCVNVSVRFICNELTE0NAotCQkJCVNBTiBKT1NFIENBIDk1MTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04QiAgIChoZXgpCQlBRFZBIE9wdGljYWwgTmV0d29ya2luZyBMdGQKLTAwRDA4QiAgICAgKGJhc2UgMTYpCQlBRFZBIE9wdGljYWwgTmV0d29ya2luZyBMdGQKLQkJCQlDTElGVE9OIFRFQ0hOT0xPR1kgQ0VOVFJFCi0JCQkJQ0xJRlRPTiBNT09SCi0JCQkJWU9SSyBOT1JUSCBZT1JLU0hJUkUgWU8zMCA0R1UKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC04QyAgIChoZXgpCQlHRU5PQSBURUNITk9MT0dZLCBJTkMuCi0wMEQwOEMgICAgIChiYXNlIDE2KQkJR0VOT0EgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTU0MDEgVEVDSCBDSVJDTEUKLQkJCQlNT09SUEFSSyBDQSA5MzAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOEQgICAoaGV4KQkJUEhPRU5JWCBHUk9VUCwgSU5DLgotMDBEMDhEICAgICAoYmFzZSAxNikJCVBIT0VOSVggR1JPVVAsIElOQy4KLQkJCQkxMjMgTUFSQ1VTIEJMVkQuCi0JCQkJSEFVUFBBVUdFIE5ZIDExNzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04RSAgIChoZXgpCQlOVklTSU9OIElOQy4KLTAwRDA4RSAgICAgKGJhc2UgMTYpCQlOVklTSU9OIElOQy4KLQkJCQkxMjUgQ1JPV04gUE9JTlQgQ09VUlQKLQkJCQlHUkFTUyBWQUxMRVkgQ0EgOTU5NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLThGICAgKGhleCkJCUFSREVOVCBURUNITk9MT0dJRVMsIElOQy4KLTAwRDA4RiAgICAgKGJhc2UgMTYpCQlBUkRFTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMjUwIE4uIFdPTEZFIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTkwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDA5MCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTkxICAgKGhleCkJCVNNQVJUU0FOIFNZU1RFTVMsIElOQy4KLTAwRDA5MSAgICAgKGJhc2UgMTYpCQlTTUFSVFNBTiBTWVNURU1TLCBJTkMuCi0JCQkJNDY1NSBPTEQgSVJPTlNJREVTIERSLiAjNDgwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTkyICAgKGhleCkJCUdMRU5BWVJFIFdFU1RFUk4gTVVMVElQTEVYCi0wMEQwOTIgICAgIChiYXNlIDE2KQkJR0xFTkFZUkUgV0VTVEVSTiBNVUxUSVBMRVgKLQkJCQkxMTk2IEJPUlJFR0FTIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOTMgICAoaGV4KQkJVFEgLSBDT01QT05FTlRTIEdNQkgKLTAwRDA5MyAgICAgKGJhc2UgMTYpCQlUUSAtIENPTVBPTkVOVFMgR01CSAotCQkJCUdVVCBERUxMSU5HIC0gTVVITFNUUiAyCi0JCQkJRC04MjIyOSBTRUVGRUxECi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtOTQgICAoaGV4KQkJVElNRUxJTkUgVklTVEEsIElOQy4KLTAwRDA5NCAgICAgKGJhc2UgMTYpCQlUSU1FTElORSBWSVNUQSwgSU5DLgotCQkJCTE3NTUtQiBMQSBDT1NUQSBNRUFET1dTIERSSVZFCi0JCQkJU0FOIE1BUkNPUyBDQSA5MjA2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOTUgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQsIEVudGVycHJpc2UgQnVzaW5lc3MgR3JvdXAKLTAwRDA5NSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudCwgRW50ZXJwcmlzZSBCdXNpbmVzcyBHcm91cAotCQkJCTI2ODAxIFdlc3QgQWdvdXJhIFJvYWQKLQkJCQlDQUxBQkFTQVMgQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTk2ICAgKGhleCkJCTNDT00gRVVST1BFIExURC4KLTAwRDA5NiAgICAgKGJhc2UgMTYpCQkzQ09NIEVVUk9QRSBMVEQuCi0JCQkJQk9VTkRBUlkgV0FZCi0JCQkJSEVNRUwgSEVNUFNURUFEIEhFUlRTLiBIUDIgN1lVCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC05NyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEQwOTcgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCU0vUyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC05OCAgIChoZXgpCQlQaG90b24gRHluYW1pY3MgQ2FuYWRhIEluYy4KLTAwRDA5OCAgICAgKGJhc2UgMTYpCQlQaG90b24gRHluYW1pY3MgQ2FuYWRhIEluYy4KLQkJCQkyMjEgV2hpdGVoYWxsIERyaXZlCi0JCQkJTWFya2hhbSwgT250YXJpbwotCQkJCUwzUiA5VDEKLQkJCQlDQU5BREEKLQotMDAtRDAtOTkgICAoaGV4KQkJRUxDQVJEIE9ZCi0wMEQwOTkgICAgIChiYXNlIDE2KQkJRUxDQVJEIE9ZCi0JCQkJUC5PLiBCT1ggMTIwL0JFQ0tFUklOVElDIDM4Ci0JCQkJNTEyMDEgS0FOR0FTTklFTUkKLQkJCQlGSU5MQU5ECi0JCQkJRklOTEFORAotCi0wMC1EMC05QSAgIChoZXgpCQlGSUxBTkVUIENPUlBPUkFUSU9OCi0wMEQwOUEgICAgIChiYXNlIDE2KQkJRklMQU5FVCBDT1JQT1JBVElPTgotCQkJCTkzMSBCZW5lY2lhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOUIgICAoaGV4KQkJU1BFQ1RFTCBMVEQuCi0wMEQwOUIgICAgIChiYXNlIDE2KQkJU1BFQ1RFTCBMVEQuCi0JCQkJMjEgU1RJTExPUkdBTiBJTkRVU1RSSUFMIFBBUksKLQkJCQlTVElMTE9SR0FOLCBDTy4gRFVCTElOCi0JCQkJSVJFTEFORAotCQkJCUlSRUxBTkQKLQotMDAtRDAtOUMgICAoaGV4KQkJS0FQQURJQSBDT01NVU5JQ0FUSU9OUwotMDBEMDlDICAgICAoYmFzZSAxNikJCUtBUEFESUEgQ09NTVVOSUNBVElPTlMKLQkJCQkzOTI1IFdFU1QgQlJPS0VSIExBTkUKLQkJCQlBVVNUSU4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTlEICAgKGhleCkJCVZFUklTIElORFVTVFJJRVMKLTAwRDA5RCAgICAgKGJhc2UgMTYpCQlWRVJJUyBJTkRVU1RSSUVTCi0JCQkJMTA4MzEgU1cgQ0FTQ0FERQotCQkJCVBPUlRMQU5EIE9SIDk3MjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC05RSAgIChoZXgpCQkyV0lSRSwgSU5DLgotMDBEMDlFICAgICAoYmFzZSAxNikJCTJXSVJFLCBJTkMuCi0JCQkJNjk0IFRBU01BTiBEUklWRQotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC05RiAgIChoZXgpCQlOT1ZURUsgVEVTVCBTWVNURU1TCi0wMEQwOUYgICAgIChiYXNlIDE2KQkJTk9WVEVLIFRFU1QgU1lTVEVNUwotCQkJCTIxNzAgUEFSQUdPTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BMCAgIChoZXgpCQlNSVBTIERFTk1BUksKLTAwRDBBMCAgICAgKGJhc2UgMTYpCQlNSVBTIERFTk1BUksKLQkJCQlMQVVUUlVQVkFORyAyQgotCQkJCTI3NTAgQkFMTEVSVVAKLQkJCQlESyAtIERFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLUQwLUExICAgKGhleCkJCU9TS0FSIFZJRVJMSU5HIEdNQkggKyBDTy4gS0cKLTAwRDBBMSAgICAgKGJhc2UgMTYpCQlPU0tBUiBWSUVSTElORyBHTUJIICsgQ08uIEtHCi0JCQkJUFJFVFpGRUxERVIgU1RSLiAyMQotCQkJCTkxMzIwIEVCRVJNQU5OU1RBRFQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC1BMiAgIChoZXgpCQlJTlRFR1JBVEVEIERFVklDRQotMDBEMEEyICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgREVWSUNFCi0JCQkJVEVDSE5PTE9HWSwgSU5DLgotCQkJCTI5NzUgU1RFTkRFUiBXQVkgIE0vUyAwLTMxOAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BMyAgIChoZXgpCQlWT0NBTCBEQVRBLCBJTkMuCi0wMEQwQTMgICAgIChiYXNlIDE2KQkJVk9DQUwgREFUQSwgSU5DLgotCQkJCTE3MDEgTiBHUkVFTlZJTExFICMzMDQKLQkJCQlSSUNIQVJEU09OIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BNCAgIChoZXgpCQlBTEFOVFJPIENPTU1VTklDQVRJT05TCi0wMEQwQTQgICAgIChiYXNlIDE2KQkJQUxBTlRSTyBDT01NVU5JQ0FUSU9OUwotCQkJCTE0MSBTVE9OWSBDSVJDTEUsICBTVEUuICMyMTAKLQkJCQlTQU5UQVJPU0EgQ0EgOTU0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUE1ICAgKGhleCkJCUFNRVJJQ0FOIEFSSVVNCi0wMEQwQTUgICAgIChiYXNlIDE2KQkJQU1FUklDQU4gQVJJVU0KLQkJCQkxNDI4MSBDSEFNQkVSUyBST0FECi0JCQkJVFVTVElOIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BNiAgIChoZXgpCQlMQU5CSVJEIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMEQwQTYgICAgIChiYXNlIDE2KQkJTEFOQklSRCBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCVJPT00gQS0yMTEsIFMuQi5JLgotCQkJCTY0Ny0yNiwgREVVTkdDSE9OLURPTkcsIEtBTkdTRU8tR1UsICBTRU8KLQkJCQlLT1JFQSAxNTctMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLUE3ICAgKGhleCkJCVRPS1lPIFNPS0tJIEtFTktZVUpPIENPLiwgTFRELgotMDBEMEE3ICAgICAoYmFzZSAxNikJCVRPS1lPIFNPS0tJIEtFTktZVUpPIENPLiwgTFRELgotCQkJCTgtMiwgTUlOQU1JLU9ISSA2LUNIT01FCi0JCQkJU0hJTkFHQVdBLUtVIFRPS1lPCi0JCQkJSkFQQU4gMTQwLTg1NjAKLQkJCQlKQVBBTgotCi0wMC1EMC1BOCAgIChoZXgpCQlORVRXT1JLIEVOR0lORVMsIElOQy4KLTAwRDBBOCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIEVOR0lORVMsIElOQy4KLQkJCQk2MSBQTEVBU0FOVCBTVFJFRVQKLQkJCQlSQU5ET0xQSCBNQSAwMjM2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQTkgICAoaGV4KQkJU0hJTkFOTyBLRU5TSEkgQ08uLCBMVEQuCi0wMEQwQTkgICAgIChiYXNlIDE2KQkJU0hJTkFOTyBLRU5TSEkgQ08uLCBMVEQuCi0JCQkJRUxFQ1RST05JQyBFUVVJUE1FTlQgRElWSVNJT04KLQkJCQk2LTE1LTI2LCBDSFVPLCBVRURBLVNISSBOQUdBTk8tS0VOLCAzODYtCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC1BQSAgIChoZXgpCQlDSEFTRSBDT01NVU5JQ0FUSU9OUwotMDBEMEFBICAgICAoYmFzZSAxNikJCUNIQVNFIENPTU1VTklDQVRJT05TCi0JCQkJU1QuIExFT05BUkRTIFJPQUQKLQkJCQlFQVNUIFNIRUVOIExPTkRPTiBTVzE2IDdMWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRDAtQUIgICAoaGV4KQkJREVMVEFLQUJFTCBURUxFQ09NIENWCi0wMEQwQUIgICAgIChiYXNlIDE2KQkJREVMVEFLQUJFTCBURUxFQ09NIENWCi0JCQkJSEFOWkVXRUcgMTQKLQkJCQkyODAzIE1DIEdPVURBCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtRDAtQUMgICAoaGV4KQkJR1JBWVNPTiBXSVJFTEVTUwotMDBEMEFDICAgICAoYmFzZSAxNikJCUdSQVlTT04gV0lSRUxFU1MKLQkJCQkxNDAgVklTVEEgQ0VOVFJFIERSSVZFCi0JCQkJRk9SRVNUIFZBIDI0NTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BRCAgIChoZXgpCQlUTCBJTkRVU1RSSUVTCi0wMEQwQUQgICAgIChiYXNlIDE2KQkJVEwgSU5EVVNUUklFUwotCQkJCTI1NDEgVFJBQ1kgUk9BRAotCQkJCU5PUlRIV09PRCBPSCA0MzYxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQUUgICAoaGV4KQkJT1JFU0lTIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEQwQUUgICAgIChiYXNlIDE2KQkJT1JFU0lTIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTQ2NzAgTlcgR1JFRU5CUklFUiBQS1dZCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BRiAgIChoZXgpCQlDVVRMRVItSEFNTUVSLCBJTkMuCi0wMEQwQUYgICAgIChiYXNlIDE2KQkJQ1VUTEVSLUhBTU1FUiwgSU5DLgotCQkJCVBNUCBDRU5URVIKLQkJCQkyNDAgVklTVEEgUEFSSyBEUklWRQotCQkJCVBJVFRTQlVSR0ggUEEgMTUyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUIwICAgKGhleCkJCUJJVFNXSVRDSCBMVEQuCi0wMEQwQjAgICAgIChiYXNlIDE2KQkJQklUU1dJVENIIExURC4KLQkJCQkzIE1FQURPVyBDT1VSVCwgQU1PUyBST0FECi0JCQkJTUVBRE9XSEFMTCwgU0hFRkZJRUxEIFM5IDFCWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRDAtQjEgICAoaGV4KQkJT01FR0EgRUxFQ1RST05JQ1MgU0EKLTAwRDBCMSAgICAgKGJhc2UgMTYpCQlPTUVHQSBFTEVDVFJPTklDUyBTQQotCQkJCVJPVVRFIERFIFNPTEVVUkUgNjgKLQkJCQlDSC0yNTAwIEJJRU5ORSA0Ci0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC1EMC1CMiAgIChoZXgpCQlYSU9URUNIIENPUlBPUkFUSU9OCi0wMEQwQjIgICAgIChiYXNlIDE2KQkJWElPVEVDSCBDT1JQT1JBVElPTgotCQkJCTY0NTUgRkxZSU5HIENMT1VEIERSSVZFCi0JCQkJRURFTiBQUkFJUklFIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1CMyAgIChoZXgpCQlEUlMgRkxJR0hUIFNBRkVUWSBBTkQKLTAwRDBCMyAgICAgKGJhc2UgMTYpCQlEUlMgRkxJR0hUIFNBRkVUWSBBTkQKLQkJCQlDT01NVU5JQ0FUSU9OUwotCQkJCTQwIENPTkNPVVJTRSBHQVRFIE5FUEVBTgotCQkJCUNBTkFEQSBLMkUgOEE2Ci0JCQkJQ0FOQURBCi0KLTAwLUQwLUI0ICAgKGhleCkJCUtBVFNVSklNQSBDTy4sIExURC4KLTAwRDBCNCAgICAgKGJhc2UgMTYpCQlLQVRTVUpJTUEgQ08uLCBMVEQuCi0JCQkJMS02LTEtLCBTSElSQVRPUkkKLQkJCQlLQVRTVVNISUtBLUtVIFRPS1lPIDEyNS0wMDYzCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC1CNSAgIChoZXgpCQlJUHJpY290IGZvcm1lcmx5IERvdENvbQotMDBEMEI1ICAgICAoYmFzZSAxNikJCUlQcmljb3QgZm9ybWVybHkgRG90Q29tCi0JCQkJMTAtMTIsIGF2ZW51ZSBkZSBWZXJkdW4KLQkJCQlMYS1HYXJlbm5lLUNvbG9tYmVzICBGLTkyMjUwCi0JCQkJRlJBTkNFCi0KLTAwLUQwLUI2ICAgKGhleCkJCUNSRVNDRU5UIE5FVFdPUktTLCBJTkMuCi0wMEQwQjYgICAgIChiYXNlIDE2KQkJQ1JFU0NFTlQgTkVUV09SS1MsIElOQy4KLQkJCQkyMDEgUklWRVJORUNLIFJPQUQKLQkJCQlDSEVMTVNGT1JEIE1BIDAxODQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1CNyAgIChoZXgpCQlJTlRFTCBDT1JQT1JBVElPTgotMDBEMEI3ICAgICAoYmFzZSAxNikJCUlOVEVMIENPUlBPUkFUSU9OCi0JCQkJNTIwMCBORSBFTEFNIFlPVU5HIFBBUktXQVkKLQkJCQlIRjEtMDgKLQkJCQlISUxMU0JPUk8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUI4ICAgKGhleCkJCUlvbWVnYSBDb3Jwb3JhdGlvbgotMDBEMEI4ICAgICAoYmFzZSAxNikJCUlvbWVnYSBDb3Jwb3JhdGlvbgotCQkJCQotCQkJCUNBTkFEQQotCi0wMC1EMC1COSAgIChoZXgpCQlNSUNST1RFSyBJTlRFUk5BVElPTkFMLCBJTkMuCi0wMEQwQjkgICAgIChiYXNlIDE2KQkJTUlDUk9URUsgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCU5PLiA2IElORFVTVFJZIEVBU1QgUk9BRCAzCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTkNIVQotCQkJCVRBSVdBTiAzMDA3NyBUQUlXQU4gMzAwNzcgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC1CQSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEQwQkEgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRS0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQkIgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMEJCICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUgIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUJDICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDBCQyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFLVNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUJEICAgKGhleCkJCVNpbGljb24gSW1hZ2UgR21iSAotMDBEMEJEICAgICAoYmFzZSAxNikJCVNpbGljb24gSW1hZ2UgR21iSAotCQkJCUdhcmJzZW5lciBMYW5kc3RyLiAxMAotCQkJCUQtMzA0MTkgSGFubm92ZXIKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLUJFICAgKGhleCkJCUVNVVRFQyBJTkMuCi0wMEQwQkUgICAgIChiYXNlIDE2KQkJRU1VVEVDIElOQy4KLQkJCQlQLk8uIEJPWCAzMDM1Ci0JCQkJRVZFUkVUVCBXQSA5ODIwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQkYgICAoaGV4KQkJUElWT1RBTCBURUNITk9MT0dJRVMKLTAwRDBCRiAgICAgKGJhc2UgMTYpCQlQSVZPVEFMIFRFQ0hOT0xPR0lFUwotCQkJCTcwIFMuIExBS0UgQVZFTlVFIC0gU1RFLiAjOTAwCi0JCQkJUEFTQURFTkEgQ0EgOTExMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUMwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDBDMCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSLiAgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQzEgICAoaGV4KQkJSEFSTU9OSUMgREFUQSBTWVNURU1TLCBMVEQuCi0wMEQwQzEgICAgIChiYXNlIDE2KQkJSEFSTU9OSUMgREFUQSBTWVNURU1TLCBMVEQuCi0JCQkJMTAgQkVJVCBTSEFNQUkgU1RSRUVUCi0JCQkJVEVMLUFWSVYKLQkJCQlJU1JBRUwgNjcwMTgKLQkJCQlJU1JBRUwKLQotMDAtRDAtQzIgICAoaGV4KQkJQkFMVEhBWkFSIFRFQ0hOT0xPR1kgQUIKLTAwRDBDMiAgICAgKGJhc2UgMTYpCQlCQUxUSEFaQVIgVEVDSE5PTE9HWSBBQgotCQkJCUFOS0RBTU1TR0FUQU4gMjQKLQkJCQlTLTE3MTQzIFNPTE5BCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLUQwLUMzICAgKGhleCkJCVZJVklEIFRFQ0hOT0xPR1kgUFRFLCBMVEQuCi0wMEQwQzMgICAgIChiYXNlIDE2KQkJVklWSUQgVEVDSE5PTE9HWSBQVEUsIExURC4KLQkJCQkxMDAzIEJVS0lUIE1FUkFIIENFTlRSQUwKLQkJCQkjMDMtMDksIFMxNTk4MzYKLQkJCQlTSU5HQVBPUkUKLQkJCQlTSU5HQVBPUkUKLQotMDAtRDAtQzQgICAoaGV4KQkJVEVSQVRFQ0ggQ09SUE9SQVRJT04KLTAwRDBDNCAgICAgKGJhc2UgMTYpCQlURVJBVEVDSCBDT1JQT1JBVElPTgotCQkJCTIyMyBNSURETEVTRVggVFJQSy4KLQkJCQlCVVJMSU5HVE9OIE1BIDAxODAzLTMzMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUM1ICAgKGhleCkJCUNPTVBVVEFUSU9OQUwgU1lTVEVNUywgSU5DLgotMDBEMEM1ICAgICAoYmFzZSAxNikJCUNPTVBVVEFUSU9OQUwgU1lTVEVNUywgSU5DLgotCQkJCTgzNSBJTk5PVkFUSU9OIERSSVZFCi0JCQkJS05PWFZJTExFIFROIDM3OTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1DNiAgIChoZXgpCQlUSE9NQVMgJiBCRVRUUyBDT1JQLgotMDBEMEM2ICAgICAoYmFzZSAxNikJCVRIT01BUyAmIEJFVFRTIENPUlAuCi0JCQkJVGhvbWFzICYgQmV0dHMgQXVzdC4gUHR5LiBMdGQuCi0JCQkJMjNhIE55cmFuZyBTdHJlZXQKLQkJCQlMaWRjb21iZSBOZXcgU291dGggV2FsZXMgOTI2MTgKLQkJCQlBVVNUUkFMSUEKLQotMDAtRDAtQzcgICAoaGV4KQkJUEFUSFdBWSwgSU5DLgotMDBEMEM3ICAgICAoYmFzZSAxNikJCVBBVEhXQVksIElOQy4KLQkJCQk3NzcgQkVUQSBEUklWRQotCQkJCU1BWUZJRUxEIFZJTExBR0UgT0ggNDQxNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUM4ICAgKGhleCkJCVByZXZhcyBBL1MKLTAwRDBDOCAgICAgKGJhc2UgMTYpCQlQcmV2YXMgQS9TCi0JCQkJRnJlZGVyaWtza2FqIDYKLQkJCQlESy0yNDUwIEs/YmVuaGF2biBTViAKLQkJCQlERU5NQVJLCi0KLTAwLUQwLUM5ICAgKGhleCkJCUFEVkFOVEVDSCBDTy4sIExURC4KLTAwRDBDOSAgICAgKGJhc2UgMTYpCQlBRFZBTlRFQ0ggQ08uLCBMVEQuCi0JCQkJRkwuIDQsIE5PLiAgMTA4LTMKLQkJCQlNSU5HLUNIVUFOIFJPQUQgU0hJTkctVElFTiBDSVRZCi0JCQkJVEFJUEVJIFRBSVBFSSBUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLUNBICAgKGhleCkJCUludHJpbnN5YyBTb2Z0d2FyZSBJbnRlcm5hdGlvbmFsIEluYy4KLTAwRDBDQSAgICAgKGJhc2UgMTYpCQlJbnRyaW5zeWMgU29mdHdhcmUgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJNzAwIFdlc3QgUGVuZGVyIFN0cmVldAotCQkJCTEwdGggZmxvb3IKLQkJCQlWYW5jb3V2ZXIgQi5DLiBWNkMgMUc4Ci0JCQkJQ0FOQURBCi0KLTAwLUQwLUNCICAgKGhleCkJCURBU0FOIENPLiwgTFRELgotMDBEMENCICAgICAoYmFzZSAxNikJCURBU0FOIENPLiwgTFRELgotCQkJCTZGLCBLT1NNTyBUT1dFUgotCQkJCTEwMDIsIERBRUNISS1ET05HLCBLQU5HTkFNLUtVIFNFT1VMCi0JCQkJS09SRUEgKFpJUCAxMzUtMjgwKQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC1DQyAgIChoZXgpCQlURUNITk9MT0dJRVMgTFlSRSBJTkMuCi0wMEQwQ0MgICAgIChiYXNlIDE2KQkJVEVDSE5PTE9HSUVTIExZUkUgSU5DLgotCQkJCTEyMDAgU1QtSkVBTi1CQVBUSVNURSwKLQkJCQlTVUlURSAjMTIwIFFVRUJFQywgUVVFQkVDCi0JCQkJQ0FOQURBIEcyRSA1RTgKLQkJCQlDQU5BREEKLQotMDAtRDAtQ0QgICAoaGV4KQkJQVRBTiBURUNITk9MT0dZIElOQy4KLTAwRDBDRCAgICAgKGJhc2UgMTYpCQlBVEFOIFRFQ0hOT0xPR1kgSU5DLgotCQkJCSM1LCBBTExFWSAxOCwgTEFORSA4MSwKLQkJCQlDSElFTiBLQU5HLCAyTkQgUk9BRCBISU5DSFUKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtQ0UgICAoaGV4KQkJQVNZU1QgRUxFQ1RST05JQwotMDBEMENFICAgICAoYmFzZSAxNikJCUFTWVNUIEVMRUNUUk9OSUMKLQkJCQlCUk9ESVNDRSA3LCAxMEMgVFJaSU4KLQkJCQkxMjM2IFRSWklOCi0JCQkJU0xPVkVOSUEKLQkJCQlTTE9WRU5JQQotCi0wMC1EMC1DRiAgIChoZXgpCQlNT1JFVE9OIEJBWQotMDBEMENGICAgICAoYmFzZSAxNikJCU1PUkVUT04gQkFZCi0JCQkJMTIvOTcgSklKQVdTIFNUUkVFVAotCQkJCVNVTU5FUiBQQVJLLiA0MDc0IFFMRC4KLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtRDAtRDAgICAoaGV4KQkJWkhPTkdYSU5HIFRFTEVDT00gTFRELgotMDBEMEQwICAgICAoYmFzZSAxNikJCVpIT05HWElORyBURUxFQ09NIExURC4KLQkJCQk4LTlGIEJVSUxESU5HIDU0LDMwMSMKLQkJCQlaSE9ORyBTSEFOIERPTkdMVSwgTkFOSklORyBQUkMsIFBDPTIxMDAwCi0JCQkJQ0hJTkEKLQkJCQlDSElOQQotCi0wMC1EMC1EMSAgIChoZXgpCQlTeWNhbW9yZSBOZXR3b3JrcwotMDBEMEQxICAgICAoYmFzZSAxNikJCVN5Y2Ftb3JlIE5ldHdvcmtzCi0JCQkJMjIwIE1pbGwgUmQKLQkJCQlDaGVsbXNmb3JkIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1EMiAgIChoZXgpCQlFUElMT0cgQ09SUE9SQVRJT04KLTAwRDBEMiAgICAgKGJhc2UgMTYpCQlFUElMT0cgQ09SUE9SQVRJT04KLQkJCQk1MDAgQ09SUE9SQVRFIENJUkNMRSAtIFNURS4KLQkJCQlHT0xERU4gQ08gODA0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUQzICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDBEMyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJTS9TIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUQ0ICAgKGhleCkJCVYtQklUUywgSU5DLgotMDBEMEQ0ICAgICAoYmFzZSAxNikJCVYtQklUUywgSU5DLgotCQkJCTIxNTAgVFJBREUgWk9ORSBCTFZELgotCQkJCVNVSVRFICMxMDUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRDUgICAoaGV4KQkJR1JVTkRJRyBBRwotMDBEMEQ1ICAgICAoYmFzZSAxNikJCUdSVU5ESUcgQUcKLQkJCQlLVVJHQVJURU5TR1RSRUVUIDM3Ci0JCQkJRC05MDc2MiBGVUVSVEgvQkFZRVJOCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtRDYgICAoaGV4KQkJQUVUSFJBIFRFTEVDT01VTklDQVpJT05JCi0wMEQwRDYgICAgIChiYXNlIDE2KQkJQUVUSFJBIFRFTEVDT01VTklDQVpJT05JCi0JCQkJVklBIE1BVFRFTyBSSUNDSSwgMTAKLQkJCQk2MDAyMCBBTkNPTkEKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLUQwLUQ3ICAgKGhleCkJCUIyQzIsIElOQy4KLTAwRDBENyAgICAgKGJhc2UgMTYpCQlCMkMyLCBJTkMuCi0JCQkJMjAyMCBDSEFMTEVOR0VSIERSSVZFLQotCQkJCVNVSVRFICMxMDEKLQkJCQlBTEFNRURBIENBIDk0NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1EOCAgIChoZXgpCQkzQ29tIENvcnBvcmF0aW9uCi0wMEQwRDggICAgIChiYXNlIDE2KQkJM0NvbSBDb3Jwb3JhdGlvbgotCQkJCTIxMzMgTEVHSE9STiBTVFJFRVQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1EOSAgIChoZXgpCQlERURJQ0FURUQgTUlDUk9DT01QVVRFUlMKLTAwRDBEOSAgICAgKGJhc2UgMTYpCQlERURJQ0FURUQgTUlDUk9DT01QVVRFUlMKLQkJCQlHUk9VUCwgTFRELgotCQkJCTExIE9BSyBTVFJFRVQsIFBFTkRMRUJVUlkgU1dJTlRPTiwgTUFOQ0gKLQkJCQlNMjc0RkwgVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC1EQSAgIChoZXgpCQlUQUlDT00gREFUQSBTWVNURU1TIENPLiwgTFRELgotMDBEMERBICAgICAoYmFzZSAxNikJCVRBSUNPTSBEQVRBIFNZU1RFTVMgQ08uLCBMVEQuCi0JCQkJNDUsIFdVLUtVTkcgNSBST0FECi0JCQkJV1UtS1UgSU5ELiBQQVZLIFRBSVBFSS1IU0lFTgotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtREIgICAoaGV4KQkJTUNRVUFZIElOVEVSTkFUSU9OQUwKLTAwRDBEQiAgICAgKGJhc2UgMTYpCQlNQ1FVQVkgSU5URVJOQVRJT05BTAotCQkJCTEzNjAwIElORFVTVFJJQUwgUEFSSyBCTFZELgotCQkJCU1JTk5FQVBPTElTIE1OIDU1NDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1EQyAgIChoZXgpCQlNT0RVTEFSIE1JTklORyBTWVNURU1TLCBJTkMuCi0wMEQwREMgICAgIChiYXNlIDE2KQkJTU9EVUxBUiBNSU5JTkcgU1lTVEVNUywgSU5DLgotCQkJCTMyODkgRS4gSEVNSVNQSEVSRSBMT09QCi0JCQkJVFVDU09OIEFaIDg1NzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1ERCAgIChoZXgpCQlTVU5SSVNFIFRFTEVDT00sIElOQy4KLTAwRDBERCAgICAgKGJhc2UgMTYpCQlTVU5SSVNFIFRFTEVDT00sIElOQy4KLQkJCQkyMiBHUkVBVCBPQUtTIEJMVkQuCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLURFICAgKGhleCkJCVBISUxJUFMgTVVMVElNRURJQSBORVRXT1JLCi0wMEQwREUgICAgIChiYXNlIDE2KQkJUEhJTElQUyBNVUxUSU1FRElBIE5FVFdPUksKLQkJCQlTWVNURU1TIEdNQkgKLQkJCQlGSUNIVEVTVFJBU1NFIDFBIEQtMDI2MDEgQkFVVFpFTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLURGICAgKGhleCkJCUtVWlVNSSBFTEVDVFJPTklDUywgSU5DLgotMDBEMERGICAgICAoYmFzZSAxNikJCUtVWlVNSSBFTEVDVFJPTklDUywgSU5DLgotCQkJCTI4LTYgSUlKSU1BLUNIWU8sIFNBS0FFLUtVCi0JCQkJWU9LT0hBTUEtU0hJIEtBTkFHQVdBLCAyNDQtMDg0MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtRDAtRTAgICAoaGV4KQkJRE9PSU4gRUxFQ1RST05JQ1MgQ08uCi0wMEQwRTAgICAgIChiYXNlIDE2KQkJRE9PSU4gRUxFQ1RST05JQ1MgQ08uCi0JCQkJRE9PSU4gQkxERy4gMTYtNiwgU09PTkFFLURPTkcKLQkJCQlCVU5EQU5HLUdVLCBTVU5HTkFNLVNJIEtZVU5HR0ktRE8KLQkJCQlLT1JFQSA0NjMtMDIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLUUxICAgKGhleCkJCUFWSU9OSVRFSyBJU1JBRUwgSU5DLgotMDBEMEUxICAgICAoYmFzZSAxNikJCUFWSU9OSVRFSyBJU1JBRUwgSU5DLgotCQkJCTEgRVRHQVIgU1RSRUVUCi0JCQkJVElSQVQgIENBUk1FTCAgMzkxMjAKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtRDAtRTIgICAoaGV4KQkJTVJUIE1JQ1JPLCBJTkMuCi0wMEQwRTIgICAgIChiYXNlIDE2KQkJTVJUIE1JQ1JPLCBJTkMuCi0JCQkJMTQwMDAgUy4gTUlMSVRBUlkgVFJBSUwKLQkJCQlERUxSQVkgQkVBQ0ggRkwgMzM0ODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUUzICAgKGhleCkJCUVMRS1DSEVNIEVOR0lORUVSSU5HIENPLiwgTFRELgotMDBEMEUzICAgICAoYmFzZSAxNikJCUVMRS1DSEVNIEVOR0lORUVSSU5HIENPLiwgTFRELgotCQkJCVdJTkRTVE9ORSBPRkZJQ0UKLQkJCQkxLTgwMywgMjc1LTIgWUFOR0pVRS1ET05HLCBTRU9DSE8tS1UKLQkJCQlTRU9VTCAxMzctMTMwIFNFT1VMIDEzNy0xMzAgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtRDAtRTQgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMEU0ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRTUgICAoaGV4KQkJU09MSURVTSBTWVNURU1TIENPUlAuCi0wMEQwRTUgICAgIChiYXNlIDE2KQkJU09MSURVTSBTWVNURU1TIENPUlAuCi0JCQkJOTQwIEJFTEZBU1QgUk9BRCAxUy4yMTcKLQkJCQlPVFRBV0EsIE9OVEFSSU8gSzFHIDRBMgotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC1EMC1FNiAgIChoZXgpCQlJQk9ORCBJTkMuCi0wMEQwRTYgICAgIChiYXNlIDE2KQkJSUJPTkQgSU5DLgotCQkJCTMxNjAsIERFIExBIENSVVogQkxWRC4KLQkJCQlTVUlURSAjMTAxCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUU3ICAgKGhleCkJCVZDT04gVEVMRUNPTU1VTklDQVRJT04gTFRELgotMDBEMEU3ICAgICAoYmFzZSAxNikJCVZDT04gVEVMRUNPTU1VTklDQVRJT04gTFRELgotCQkJCTIyIE1BU0tJVCBTVFJFRVQKLQkJCQlIRVJaTElZQSAgNDY3MzMKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtRDAtRTggICAoaGV4KQkJTUFDIFNZU1RFTSBDTy4sIExURC4KLTAwRDBFOCAgICAgKGJhc2UgMTYpCQlNQUMgU1lTVEVNIENPLiwgTFRELgotCQkJCVImRCBJTlNUSVRVVEUKLQkJCQlNQUMgU1lTVEVNIENPLiwgTFRELiAyMTktMiBBTkFORzctRE9ORywKLQkJCQlLWVVOR0tJLURPIEtPUkVBLCA0MzAtMDE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLUU5ICAgKGhleCkJCUFkdmFudGFnZSBDZW50dXJ5IFRlbGVjb21tdW5pY2F0aW9uIENvcnAuCi0wMEQwRTkgICAgIChiYXNlIDE2KQkJQWR2YW50YWdlIENlbnR1cnkgVGVsZWNvbW11bmljYXRpb24gQ29ycC4KLQkJCQk0RiwgNDEsIFR1bmdoc2luIFJkLgotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC1FQSAgIChoZXgpCQlORVhUT05FIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEQwRUEgICAgIChiYXNlIDE2KQkJTkVYVE9ORSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTk3MDAgR1JFQVQgU0VORUNBIEhHSFdZCi0JCQkJUk9DS1ZJTExFIE1EIDIwODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1FQiAgIChoZXgpCQlMSUdIVEVSQSBORVRXT1JLUywgSU5DLgotMDBEMEVCICAgICAoYmFzZSAxNikJCUxJR0hURVJBIE5FVFdPUktTLCBJTkMuCi0JCQkJMTAyMDEgQlVCQiBST0FECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1FQyAgIChoZXgpCQlOQUtBWU8gVEVMRUNPTU1VTklDQVRJT05TLCBJTkMKLTAwRDBFQyAgICAgKGJhc2UgMTYpCQlOQUtBWU8gVEVMRUNPTU1VTklDQVRJT05TLCBJTkMKLQkJCQkxLTMtMiBTT1VKWUEtTUFDSEkKLQkJCQlNQUVCQVNISS1TSEkgR1VOTUEsIDM3MS0wODUzCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC1FRCAgIChoZXgpCQlYSU9YCi0wMEQwRUQgICAgIChiYXNlIDE2KQkJWElPWAotCQkJCTE1MCBET1cgU1RSRUVUCi0JCQkJTUFOQ0hFU1RFUiBOSCAwMzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRUUgICAoaGV4KQkJRElDVEFQSE9ORSBDT1JQT1JBVElPTgotMDBEMEVFICAgICAoYmFzZSAxNikJCURJQ1RBUEhPTkUgQ09SUE9SQVRJT04KLQkJCQkzMTkxIEJST0FEQlJJREdFIEFWRS4KLQkJCQlTVFJBVEZPUkQgQ1QgMDY2MTQtMjU1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRUYgICAoaGV4KQkJSUdUCi0wMEQwRUYgICAgIChiYXNlIDE2KQkJSUdUCi0JCQkJOTI5NSBQUk9UT1RZUEUgRFJJVkUKLQkJCQlSRU5PIE5WIDg5NTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1GMCAgIChoZXgpCQlDT05WSVNJT04gVEVDSE5PTE9HWSBHTUJICi0wMEQwRjAgICAgIChiYXNlIDE2KQkJQ09OVklTSU9OIFRFQ0hOT0xPR1kgR01CSAotCQkJCVJFQkVOUklORyAzMwotCQkJCUQtMzgxMDYgQlJBVU5TQ0hXRUlHCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtRjEgICAoaGV4KQkJU0VHQSBFTlRFUlBSSVNFUywgTFRELgotMDBEMEYxICAgICAoYmFzZSAxNikJCVNFR0EgRU5URVJQUklTRVMsIExURC4KLQkJCQkxMi0xNCBISUdBU0hJS09VSklZQSAyLUNIT01FCi0JCQkJT0hUQS1LVSBUT0tZTyAxNDQtODUzMgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtRDAtRjIgICAoaGV4KQkJTU9OVEVSRVkgTkVUV09SS1MKLTAwRDBGMiAgICAgKGJhc2UgMTYpCQlNT05URVJFWSBORVRXT1JLUwotCQkJCTE5MDkgTi4gR0xFTlZJTExFIERSSVZFCi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRjMgICAoaGV4KQkJU09MQVJJIERJIFVESU5FIFNQQQotMDBEMEYzICAgICAoYmFzZSAxNikJCVNPTEFSSSBESSBVRElORSBTUEEKLQkJCQlWSUEgR0lOTyBQSUVSSSAyOQotCQkJCTMzMTAwIFVESU5FCi0JCQkJSVRBTFkKLQkJCQlJVEFMWQotCi0wMC1EMC1GNCAgIChoZXgpCQlDQVJJTlRISUFOIFRFQ0ggSU5TVElUVVRFCi0wMEQwRjQgICAgIChiYXNlIDE2KQkJQ0FSSU5USElBTiBURUNIIElOU1RJVFVURQotCQkJCVJJQ0hBUkQtV0FHTkVSIFNUUi4gMTkKLQkJCQk5NTAwIFZJTExBQ0gKLQkJCQlBVVNUUklBCi0JCQkJQVVTVFJJQQotCi0wMC1EMC1GNSAgIChoZXgpCQlPUkFOR0UgTUlDUk8sIElOQy4KLTAwRDBGNSAgICAgKGJhc2UgMTYpCQlPUkFOR0UgTUlDUk8sIElOQy4KLQkJCQkxNDAwIE4uIExBS0VWSUVXIEFWRS4KLQkJCQlBTkFIRUlNIENBIDkyODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1GNiAgIChoZXgpCQlBbGNhdGVsIENhbmFkYQotMDBEMEY2ICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgQ2FuYWRhCi0JCQkJNjAwIE1hcmNoIFJvYWQKLQkJCQlLYW5hdGEsIE9udGFyaW8KLQkJCQlLMksgMkU2Ci0JCQkJQ0FOQURBCi0KLTAwLUQwLUY3ICAgKGhleCkJCU5FWFQgTkVUUyBDT1JQT1JBVElPTgotMDBEMEY3ICAgICAoYmFzZSAxNikJCU5FWFQgTkVUUyBDT1JQT1JBVElPTgotCQkJCU1JVEEgS09LVVNBSSBCTERHLiAxN0YKLQkJCQkxLTQtMjggTUlUQSBNSU5BVE8tS1UgVE9LWU8gMTA4LTAwNzMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUQwLUY4ICAgKGhleCkJCUZVSklBTiBTVEFSIFRFUk1JTkFMCi0wMEQwRjggICAgIChiYXNlIDE2KQkJRlVKSUFOIFNUQVIgVEVSTUlOQUwKLQkJCQlERVZJQ0UgQ08uLCBMVEQuCi0JCQkJRlVFUiBJTkRVU1RSSUFMIFpPTkUgU1RBUiBTQ0lFTkNFICYgVEVDSAotCQkJCUZVWkhPVSBGVUpJQU4sIENISU5BIDM1MDAwMgotCQkJCUNISU5BCi0KLTAwLUQwLUY5ICAgKGhleCkJCUFDVVRFIENPTU1VTklDQVRJT05TIENPUlAuCi0wMEQwRjkgICAgIChiYXNlIDE2KQkJQUNVVEUgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQlOTy4gMSwgQ1JFQVRJT04gUk9BRCBJSUkKLQkJCQlTQ0lFTkNFIEJBU0VEIElORFVTVFJJQUwgUEFSSyBIU0lOQ0hVIDMwCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC1GQSAgIChoZXgpCQlUaGFsZXMgZS1TZWN1cml0eSBMdGQuCi0wMEQwRkEgICAgIChiYXNlIDE2KQkJVGhhbGVzIGUtU2VjdXJpdHkgTHRkLgotCQkJCU1lYWRvdyBWaWV3IEhvdXNlLCBDcmVuZG9uIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJTG9uZyBDcmVuZG9uCi0JCQkJQXlsZXNidXJ5IEJ1Y2tpbmdoYW1zaGlyZSBIUDE4IDlFUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLUZCICAgKGhleCkJCVRFSyBNSUNST1NZU1RFTVMsIElOQ09SUE9SQVRFRAotMDBEMEZCICAgICAoYmFzZSAxNikJCVRFSyBNSUNST1NZU1RFTVMsIElOQ09SUE9SQVRFRAotCQkJCU9ORSBOT1JUSCBBVkVOVUUKLQkJCQlCVVJMSU5HVE9OIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1GQyAgIChoZXgpCQlHUkFOSVRFIE1JQ1JPU1lTVEVNUwotMDBEMEZDICAgICAoYmFzZSAxNikJCUdSQU5JVEUgTUlDUk9TWVNURU1TCi0JCQkJMTAyMDIgTi4gRU5URVJQUklTRSBEUklWRQotCQkJCU1FUVVPTiBXSSA1MzA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRkQgICAoaGV4KQkJT1BUSU1BIFRFTEUuQ09NLCBJTkMuCi0wMEQwRkQgICAgIChiYXNlIDE2KQkJT1BUSU1BIFRFTEUuQ09NLCBJTkMuCi0JCQkJMjAwLTkwIEFsbHN0YXRlIFBhcmt3YXkKLQkJCQlNYXJraGFtIE9OIEwzUiA2SDMKLQkJCQlDQU5BREEKLQotMDAtRDAtRkUgICAoaGV4KQkJQVNUUkFMIFBPSU5UCi0wMEQwRkUgICAgIChiYXNlIDE2KQkJQVNUUkFMIFBPSU5UCi0JCQkJQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkyNyBJTkRVU1RSSUFMIEFWRS4sLVNURS4gIzMKLQkJCQlDSEVMTVNGT1JEIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1GRiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEQwRkYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMS0xQyAgIChoZXgpCQlBQ0VURUwKLTAwRDExQyAgICAgKGJhc2UgMTYpCQlBQ0VURUwKLQkJCQkjMTAwNiwgV29ybGQgTWVyZGlhbiAyLWNoYSwgNDI2LTUsCi0JCQkJR2FzYW4tZG9uZywgR2V1bWNoZW9uLWd1LAotCQkJCVNlb3VsICAxNTMtNzU5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQzLThEICAgKGhleCkJCUhvdGVsIFRlY2hub2xvZ3kgTmV4dCBHZW5lcmF0aW9uCi0wMEQzOEQgICAgIChiYXNlIDE2KQkJSG90ZWwgVGVjaG5vbG9neSBOZXh0IEdlbmVyYXRpb24KLQkJCQk2NTAgRS4gQWxnb25xdWluIFJvYWQKLQkJCQlTdGUgMjA3Ci0JCQkJU2NoYXVtYnVyZyBJTCA2MDE3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREItNDUgICAoaGV4KQkJVEhBTVdBWSBDTy4sTFRELgotMDBEQjQ1ICAgICAoYmFzZSAxNikJCVRIQU1XQVkgQ08uLExURC4KLQkJCQkzLTktMgotCQkJCUltYWl6dW1pCi0JCQkJRnVqaSBTaGl6dW9rYSA0MTctMDAwMQotCQkJCUpBUEFOCi0KLTAwLURELTAwICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwMCAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wMSAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMDEgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMDIgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDAyICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTAzICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwMyAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wNCAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMDQgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMDUgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDA1ICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTA2ICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwNiAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wNyAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMDcgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMDggICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDA4ICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTA5ICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwOSAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wQSAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMEEgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMEIgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDBCICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTBDICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwQyAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wRCAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMEQgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMEUgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDBFICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTBGICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwRiAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0wMCAgIChoZXgpCQlGdWppdHN1IExpbWl0ZWQKLTAwRTAwMCAgICAgKGJhc2UgMTYpCQlGdWppdHN1IExpbWl0ZWQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiwKLQkJCQlLb3N1Z2ktY2hvIDEtY2hvbWUsTmFrYWhhcmEta3UKLQkJCQlLQVdBU0FLSSAyMTEtODggS2FuYWdhd2EgCi0JCQkJSkFQQU4KLQotMDAtRTAtMDEgICAoaGV4KQkJU1RSQU5EIExJR0hUSU5HIExJTUlURUQKLTAwRTAwMSAgICAgKGJhc2UgMTYpCQlTVFJBTkQgTElHSFRJTkcgTElNSVRFRAotCQkJCUdSQU5UIFdBWQotCQkJCUlTTEVXT1JUSAotCQkJCU1JRERMRVNFWCBFbmdsYW5kIFRXNyA1UUQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtMDIgICAoaGV4KQkJQ1JPU1NST0FEUyBTWVNURU1TLCBJTkMuCi0wMEUwMDIgICAgIChiYXNlIDE2KQkJQ1JPU1NST0FEUyBTWVNURU1TLCBJTkMuCi0JCQkJOTM5MCBSRVNFQVJDSCBCTFZELgotCQkJCVNVSVRFIDItMzAwCi0JCQkJQVVTVElOIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0wMyAgIChoZXgpCQlOT0tJQSBXSVJFTEVTUyBCVVNJTkVTUyBDT01NVU4KLTAwRTAwMyAgICAgKGJhc2UgMTYpCQlOT0tJQSBXSVJFTEVTUyBCVVNJTkVTUyBDT01NVU4KLQkJCQlBQ0NFU1MgUE9JTlQgUFJPRFVDVFMgR1JPVVAKLQkJCQlVTklUIDYsIENBTUJSSURHRSBCVVMgUEFSSyBNSUxUT04gUkQsIENBCi0JCQkJQ0I0IDBXUyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtMDQgICAoaGV4KQkJUE1DLVNJRVJSQSwgSU5DLgotMDBFMDA0ICAgICAoYmFzZSAxNikJCVBNQy1TSUVSUkEsIElOQy4KLQkJCQkxMDUtODU1NSBCQVhURVIgUExBQ0UKLQkJCQlCVVJOQUJZLCBCQyBWNUEgNFY3ICAKLQkJCQlDQU5BREEKLQotMDAtRTAtMDUgICAoaGV4KQkJVEVDSE5JQ0FMIENPUlAuCi0wMEUwMDUgICAgIChiYXNlIDE2KQkJVEVDSE5JQ0FMIENPUlAuCi0JCQkJMjItNiBNSU5BTUkgU0VOR0VOQ0hPCi0JCQkJTklTSElLVSBZT0tPSEFNQSBDSVRZCi0JCQkJS0FOQUdBV0EgIAotCQkJCUpBUEFOCi0KLTAwLUUwLTA2ICAgKGhleCkJCVNJTElDT04gSU5URUdSQVRFRCBTWVMuIENPUlAuCi0wMEUwMDYgICAgIChiYXNlIDE2KQkJU0lMSUNPTiBJTlRFR1JBVEVEIFNZUy4gQ09SUC4KLQkJCQkxNiwgQ1JFQVRJT04gUkQuIEkKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU4gQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLTA3ICAgKGhleCkJCUF2YXlhIEVDUyBMdGQKLTAwRTAwNyAgICAgKGJhc2UgMTYpCQlBdmF5YSBFQ1MgTHRkCi0JCQkJVW5pdCAxIFN0ZXJsaW5nIENvdXJ0LCBNdW5kZWxscwotCQkJCVdlbHd5biBHYXJkZW4gQ2l0eSBIZXJ0IEFMNyAxTFoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC0wOCAgIChoZXgpCQlBTUFaSU5HIENPTlRST0xTISBJTkMuCi0wMEUwMDggICAgIChiYXNlIDE2KQkJQU1BWklORyBDT05UUk9MUyEgSU5DLgotCQkJCTE2MTUgV1lBVFQgRFJJVkUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMDkgICAoaGV4KQkJTUFSQVRIT04gVEVDSE5PTE9HSUVTIENPUlAuCi0wMEUwMDkgICAgIChiYXNlIDE2KQkJTUFSQVRIT04gVEVDSE5PTE9HSUVTIENPUlAuCi0JCQkJMTMwMCBNQVNTQUNIVVNFVFRTIEFWRU5VRQotCQkJCUJPWEJPUk9VR0ggTUEgMDE3MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTBBICAgKGhleCkJCURJQkEsIElOQy4KLTAwRTAwQSAgICAgKGJhc2UgMTYpCQlESUJBLCBJTkMuCi0JCQkJMzM1NSBFRElTT04gV0FZCi0JCQkJTUVOTE8gUEFSSyBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMEIgICAoaGV4KQkJUk9PRlRPUCBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDBFMDBCICAgICAoYmFzZSAxNikJCVJPT0ZUT1AgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQk0NjggUEFDTyBEUklWRQotCQkJCUxPUyBBTFRPUyBDQSA5NDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMEMgICAoaGV4KQkJTU9UT1JPTEEKLTAwRTAwQyAgICAgKGJhc2UgMTYpCQlNT1RPUk9MQQotCQkJCTU0MDEgTi4gQkVBQ0ggU1QuICBTMjQzCi0JCQkJRlQuIFdPUlRIIFRYIDc2MTM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0wRCAgIChoZXgpCQlSQURJQU5UIFNZU1RFTVMKLTAwRTAwRCAgICAgKGJhc2UgMTYpCQlSQURJQU5UIFNZU1RFTVMKLQkJCQkxMDAwIEFMREVSTUFOIERSLgotCQkJCUFMUEhBUkVUVEEgR0EgMzAyMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTBFICAgKGhleCkJCUFWQUxPTiBJTUFHSU5HIFNZU1RFTVMsIElOQy4KLTAwRTAwRSAgICAgKGJhc2UgMTYpCQlBVkFMT04gSU1BR0lORyBTWVNURU1TLCBJTkMuCi0JCQkJMzEzMyBJTkRJQU4gUk9BRAotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTBGICAgKGhleCkJCVNIQU5HSEFJIEJBVUQgREFUQQotMDBFMDBGICAgICAoYmFzZSAxNikJCVNIQU5HSEFJIEJBVUQgREFUQQotCQkJCUNPTU1VTklDQVRJT04gREVWRUxPUE1FTlQgQ09SUAotCQkJCTNGLCBHT0xEIExVQ0sgQlVJTERJTkcgMjUwNyBQVURPTkcgUk9BRAotCQkJCVNIQU5HSEFJICAKLQkJCQlDSElOQQotCi0wMC1FMC0xMCAgIChoZXgpCQlIRVNTIFNCLUFVVE9NQVRFTkJBVSBHbWJICi0wMEUwMTAgICAgIChiYXNlIDE2KQkJSEVTUyBTQi1BVVRPTUFURU5CQVUgR21iSAotCQkJCUhJTkRFTkJVUkdTVFJBU1NFIDI3LTI5Ci0JCQkJRC03MTEwNiBNQUdTVEFEVCAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC0xMSAgIChoZXgpCQlVbmlkZW4gQ29ycG9yYXRpb24KLTAwRTAxMSAgICAgKGJhc2UgMTYpCQlVbmlkZW4gQ29ycG9yYXRpb24KLQkJCQkyLTEyLTcgSGF0Y2hvYm9yaSwKLQkJCQlDaHVvLWt1IFRva3lvIDEwNC04NTEyCi0JCQkJSkFQQU4KLQotMDAtRTAtMTIgICAoaGV4KQkJUExVVE8gVEVDSE5PTE9HSUVTIElOVEVSTkFUSU9OQUwgSU5DLgotMDBFMDEyICAgICAoYmFzZSAxNikJCVBMVVRPIFRFQ0hOT0xPR0lFUyBJTlRFUk5BVElPTkFMIElOQy4KLQkJCQkyNTExIDU1VEggU1RSRUVUCi0JCQkJQk9VTERFUiBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMTMgICAoaGV4KQkJRUFTVEVSTiBFTEVDVFJPTklDIENPLiwgTFRELgotMDBFMDEzICAgICAoYmFzZSAxNikJCUVBU1RFUk4gRUxFQ1RST05JQyBDTy4sIExURC4KLQkJCQlOTy4gNCwgU0hJTi1MT05HIFJPQUQsCi0JCQkJS1dFSS1TSEFOIElORFVTVFJJQUwgQVJFQQotCQkJCVRBTy1ZVUFOICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLTE0ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTAxNCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTE1ICAgKGhleCkJCUhFSVdBIENPUlBPUkFUSU9OCi0wMEUwMTUgICAgIChiYXNlIDE2KQkJSEVJV0EgQ09SUE9SQVRJT04KLQkJCQkyLTMwMTQtOCwgSElST1NBV0EtQ0hPCi0JCQkJS0lSWVUtU0hJCi0JCQkJR1VOTUEgUFJFRi4gMzc2ICAKLQkJCQlKQVBBTgotCi0wMC1FMC0xNiAgIChoZXgpCQlSQVBJRCBDSVRZIENPTU1VTklDQVRJT05TCi0wMEUwMTYgICAgIChiYXNlIDE2KQkJUkFQSUQgQ0lUWSBDT01NVU5JQ0FUSU9OUwotCQkJCTU1NSBDTFlERSBBVkUuCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMTcgICAoaGV4KQkJRVhYQUNUIEdtYkgKLTAwRTAxNyAgICAgKGJhc2UgMTYpCQlFWFhBQ1QgR21iSAotCQkJCVJIRUlOU1RSQVNFIDcKLQkJCQlELTQxODM2IEhVQ0tFTEhPVkVOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLTE4ICAgKGhleCkJCUFTVVNURUsgQ09NUFVURVIgSU5DLgotMDBFMDE4ICAgICAoYmFzZSAxNikJCUFTVVNURUsgQ09NUFVURVIgSU5DLgotCQkJCTE1MCBMSS1URSBSRC4KLQkJCQlQRUlUT1UsIFRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1FMC0xOSAgIChoZXgpCQlJTkcuIEdJT1JEQU5PIEVMRVRUUk9OSUNBCi0wMEUwMTkgICAgIChiYXNlIDE2KQkJSU5HLiBHSU9SREFOTyBFTEVUVFJPTklDQQotCQkJCVZJQSBQSUVUUk8gQ09TU0EgIDExNS8xMgotCQkJCTEwMTQ2LVRPUklOTyAgCi0JCQkJSVRBTFkKLQotMDAtRTAtMUEgICAoaGV4KQkJQ09NVEVDIFNZU1RFTVMuIENPLiwgTFRELgotMDBFMDFBICAgICAoYmFzZSAxNikJCUNPTVRFQyBTWVNURU1TLiBDTy4sIExURC4KLQkJCQk0MDQtOSBDSE9VTkdDSEVOLURPTkcKLQkJCQlCVVBZT1VORy1LVSwgSU5DSE9OICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtRTAtMUIgICAoaGV4KQkJU1BIRVJFIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEUwMUIgICAgIChiYXNlIDE2KQkJU1BIRVJFIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMiBFTkVSR1kgRFJJVkUKLQkJCQlMQUtFIEJMVUZGIElMIDYwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0xQyAgIChoZXgpCQlDcmFkbGVwb2ludCwgSW5jCi0wMEUwMUMgICAgIChiYXNlIDE2KQkJQ3JhZGxlcG9pbnQsIEluYwotCQkJCTExOTkgU2hvcmVsaW5lIExhbmUKLQkJCQlTdWl0ZSAzMDEKLQkJCQlCb2lzZSBJRCA4MzcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMUQgICAoaGV4KQkJV2ViVFYgTkVUV09SS1MsIElOQy4KLTAwRTAxRCAgICAgKGJhc2UgMTYpCQlXZWJUViBORVRXT1JLUywgSU5DLgotCQkJCTMwNSBMWVRUT04gQVZFLgotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMUUgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBFMDFFICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMUYgICAoaGV4KQkJQVZJRElBIFN5c3RlbXMsIEluYy4KLTAwRTAxRiAgICAgKGJhc2UgMTYpCQlBVklESUEgU3lzdGVtcywgSW5jLgotCQkJCTEzNSBOT1JUSCBQTEFJTlMgSU5EVVNUUklBTCBSRAotCQkJCVdBTExJTkdGT1JEIENUIDA2NDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0yMCAgIChoZXgpCQlURUNOT01FTiBPWQotMDBFMDIwICAgICAoYmFzZSAxNikJCVRFQ05PTUVOIE9ZCi0JCQkJUC5PLiBCT1ggOTMKLQkJCQlGSU4tMDIyNzEgRVNQT08gIAotCQkJCUZJTkxBTkQKLQotMDAtRTAtMjEgICAoaGV4KQkJRlJFRUdBVEUgQ09SUC4KLTAwRTAyMSAgICAgKGJhc2UgMTYpCQlGUkVFR0FURSBDT1JQLgotCQkJCTcxMCBMQUtFV0FZICBTVEUuIzIzMAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMjIgICAoaGV4KQkJQW5hbG9nIERldmljZXMgSW5jLgotMDBFMDIyICAgICAoYmFzZSAxNikJCUFuYWxvZyBEZXZpY2VzIEluYy4KLQkJCQk3NzcgQmF5IFN0cmVldAotCQkJCVN1aXRlIDIzMDMKLQkJCQlUb3JvbnRvIE9udGFyaW8gTTVHIDJDOAotCQkJCUNBTkFEQQotCi0wMC1FMC0yMyAgIChoZXgpCQlURUxSQUQKLTAwRTAyMyAgICAgKGJhc2UgMTYpCQlURUxSQUQKLQkJCQlQLk8uIEJPWCA1MAotCQkJCUxPRCA3MTEwMCAgCi0JCQkJSVNSQUVMCi0KLTAwLUUwLTI0ICAgKGhleCkJCUdBRFpPT1ggTkVUV09SS1MKLTAwRTAyNCAgICAgKGJhc2UgMTYpCQlHQURaT09YIE5FVFdPUktTCi0JCQkJNTg1MCBIRUxMWUVSIEFWRU5VRQotCQkJCVNBTiBKT1NFIENBIDk1MTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0yNSAgIChoZXgpCQlkaXQgQ28uLCBMdGQuCi0wMEUwMjUgICAgIChiYXNlIDE2KQkJZGl0IENvLiwgTHRkLgotCQkJCVByZW1pZXIgVG95b2NobyBCdWlsZGluZwotCQkJCTIzLTIxIFRveW8gMy1jaG9tZSwKLQkJCQlLb3RvLWt1IFRva3lvIDEzNS0wMDU2Ci0JCQkJSkFQQU4KLQotMDAtRTAtMjYgICAoaGV4KQkJUmVkbGFrZSBNQVNEIExMQwotMDBFMDI2ICAgICAoYmFzZSAxNikJCVJlZGxha2UgTUFTRCBMTEMKLQkJCQkzNDQwIEUuIFByaXRhbm5pYSBEci4KLQkJCQlTdWl0ZSAxMjQKLQkJCQlUdXNjb24gQVogODU3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTI3ICAgKGhleCkJCURVWCwgSU5DLgotMDBFMDI3ICAgICAoYmFzZSAxNikJCURVWCwgSU5DLgotCQkJCTUtMTgtMTksIE5JU0hJS0FNQVRBLCBPVEEtS1UKLQkJCQlUT0tZTy1UTywgMTQ0ICAKLQkJCQlKQVBBTgotCi0wMC1FMC0yOCAgIChoZXgpCQlBUFRJWCBDT1JQT1JBVElPTgotMDBFMDI4ICAgICAoYmFzZSAxNikJCUFQVElYIENPUlBPUkFUSU9OCi0JCQkJMjg4MCBOLiBGSVJTVCBTVFJFRVQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMjkgICAoaGV4KQkJU1RBTkRBUkQgTUlDUk9TWVNURU1TIENPUlAuCi0wMEUwMjkgICAgIChiYXNlIDE2KQkJU1RBTkRBUkQgTUlDUk9TWVNURU1TIENPUlAuCi0JCQkJNiBIVUdIRVMKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTJBICAgKGhleCkJCVRBTkRCRVJHIFRFTEVWSVNJT04gQVMKLTAwRTAyQSAgICAgKGJhc2UgMTYpCQlUQU5EQkVSRyBURUxFVklTSU9OIEFTCi0JCQkJUEhJTElQIFBFREVSU0VOUyBWIDIwCi0JCQkJTi0xMzI0IExZU0FLRVIgIAotCQkJCU5PUldBWQotCi0wMC1FMC0yQiAgIChoZXgpCQlFWFRSRU1FIE5FVFdPUktTCi0wMEUwMkIgICAgIChiYXNlIDE2KQkJRVhUUkVNRSBORVRXT1JLUwotCQkJCTEwNDYwIEJBTkRMRVkgRFJJVkUKLQkJCQlDVVBFUklOVDAgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTJDICAgKGhleCkJCUFTVCBDT01QVVRFUgotMDBFMDJDICAgICAoYmFzZSAxNikJCUFTVCBDT01QVVRFUgotCQkJCTE2MjE1IEFMVE9OIFBBUktXQVkKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTJEICAgKGhleCkJCUlubm9NZWRpYUxvZ2ljLCBJbmMuCi0wMEUwMkQgICAgIChiYXNlIDE2KQkJSW5ub01lZGlhTG9naWMsIEluYy4KLQkJCQkzNjUzIENIRU1JTiBDSEFNQkxZCi0JCQkJTE9OR1VFVUlMLCBRVUVCRUMgSjRMIEo0TCAgSU45Ci0JCQkJQ0FOQURBCi0KLTAwLUUwLTJFICAgKGhleCkJCVNQQyBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotMDBFMDJFICAgICAoYmFzZSAxNikJCVNQQyBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotCQkJCTItMS0zIFNISUJBU0FLSSwgQ0hPRlUtU0hJCi0JCQkJVE9LWU8sIDE4MiAgCi0JCQkJSkFQQU4KLQotMDAtRTAtMkYgICAoaGV4KQkJTUNOUyBIT0xESU5HUywgTC5QLgotMDBFMDJGICAgICAoYmFzZSAxNikJCU1DTlMgSE9MRElOR1MsIEwuUC4KLQkJCQlUQ0ksIElOQy4tVEVDSE5PTE9HWSBWRU5UVVJFUwotCQkJCVAuTy4gQk9YIDU2MzAKLQkJCQlERU5WRVIgQ08gODAyMTctNTYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMzAgICAoaGV4KQkJTUVMSVRBIElOVEVSTkFUSU9OQUwgQ09SUC4KLTAwRTAzMCAgICAgKGJhc2UgMTYpCQlNRUxJVEEgSU5URVJOQVRJT05BTCBDT1JQLgotCQkJCTUwNTEgUEVBQ0hUUkVFIENPUk5FUlMgQ0lSQ0xFCi0JCQkJTk9SQ1JPU1MgR0EgMzAwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTMxICAgKGhleCkJCUhBR0lXQVJBIEVMRUNUUklDIENPLiwgTFRELgotMDBFMDMxICAgICAoYmFzZSAxNikJCUhBR0lXQVJBIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTcsIFNISU1PS09GVUtBREEsIEFTQURBLUNITwotCQkJCU5JU1NISU4tU0hJLCBBSUNISSAgNDcwLTAxICAKLQkJCQlKQVBBTgotCi0wMC1FMC0zMiAgIChoZXgpCQlNSVNZUyBGSU5BTkNJQUwgU1lTVEVNUywgTFRELgotMDBFMDMyICAgICAoYmFzZSAxNikJCU1JU1lTIEZJTkFOQ0lBTCBTWVNURU1TLCBMVEQuCi0JCQkJQlVDS0hPTFQgRFJJVkUsCi0JCQkJV0FSTkRPTiwgV09SQ0VTVEVSIFdSNDlTUiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtMzMgICAoaGV4KQkJRS5FLlAuRC4gR21iSAotMDBFMDMzICAgICAoYmFzZSAxNikJCUUuRS5QLkQuIEdtYkgKLQkJCQlST0VNRVItU1RSQVNTRSA0Ci0JCQkJODUyMjkgTUFSS1QgSU5ERVJTRE9SRiAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC0zNCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwMzQgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0zNSAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIKLTAwRTAzNSAgICAgKGJhc2UgMTYpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIKLQkJCQkyOTAwIFMuIERpYWJsbyBXYXkKLQkJCQlUZW1wZSBBWiA4NTI4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMzYgICAoaGV4KQkJUElPTkVFUiBDT1JQT1JBVElPTgotMDBFMDM2ICAgICAoYmFzZSAxNikJCVBJT05FRVIgQ09SUE9SQVRJT04KLQkJCQkyNjEwIEhhbmF6b25vIDQtQ2hvbWUKLQkJCQlUb2tvcm96YXdhLVNoaQotCQkJCVNhaXRhbWEgUHJlZmVjdHVyZSwgMzU5LTggIAotCQkJCUpBUEFOCi0KLTAwLUUwLTM3ICAgKGhleCkJCUNFTlRVUlkgQ09SUE9SQVRJT04KLTAwRTAzNyAgICAgKGJhc2UgMTYpCQlDRU5UVVJZIENPUlBPUkFUSU9OCi0JCQkJMi0yOC01LCBUYWl0bwotCQkJCVRBSVRPLUtVLCBUT0tZTyAxMDEKLQkJCQlKQVBBTgotCi0wMC1FMC0zOCAgIChoZXgpCQlQUk9YSU1BIENPUlBPUkFUSU9OCi0wMEUwMzggICAgIChiYXNlIDE2KQkJUFJPWElNQSBDT1JQT1JBVElPTgotCQkJCTk0NDAgQ0FSUk9MTCBQQVJLIERSSVZFCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxLTIyOTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTM5ICAgKGhleCkJCVBBUkFEWU5FIENPUlAuCi0wMEUwMzkgICAgIChiYXNlIDE2KQkJUEFSQURZTkUgQ09SUC4KLQkJCQk4NTQ1IDEyNlRIIEFWRU5VRSBOT1JUSAotCQkJCUxBUkdPIEZMIDMzNzczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0zQSAgIChoZXgpCQlDQUJMRVRST04gU1lTVEVNUywgSU5DLgotMDBFMDNBICAgICAoYmFzZSAxNikJCUNBQkxFVFJPTiBTWVNURU1TLCBJTkMuCi0JCQkJMzUgSU5EVVNUUklBTCBXQVkgLSBCTERHLiAjMzYKLQkJCQlST0NIRVNURVIgTkggMDM4NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTNCICAgKGhleCkJCVBST01JTkVUIENPUlBPUkFUSU9OCi0wMEUwM0IgICAgIChiYXNlIDE2KQkJUFJPTUlORVQgQ09SUE9SQVRJT04KLQkJCQkxMTAgVFVSTlBJS0UgUkQuIC0gU1RFLiAjMjA4Ci0JCQkJV0VTVEJPUk9VR0ggTUEgMDE1ODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTNDICAgKGhleCkJCUFkdmFuU3lzCi0wMEUwM0MgICAgIChiYXNlIDE2KQkJQWR2YW5TeXMKLQkJCQkxMTUwIFJJTkdXT09EIENPVVJUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTNEICAgKGhleCkJCUZPQ09OIEVMRUNUUk9OSUMgU1lTVEVNUyBBL1MKLTAwRTAzRCAgICAgKGJhc2UgMTYpCQlGT0NPTiBFTEVDVFJPTklDIFNZU1RFTVMgQS9TCi0JCQkJREFNVkFORywgUE8gQk9YIDI2OQotCQkJCURLLTY0MDAgU09OREVSQk9SRyAgCi0JCQkJREVOTUFSSwotCi0wMC1FMC0zRSAgIChoZXgpCQlBTEZBVEVDSCwgSU5DLgotMDBFMDNFICAgICAoYmFzZSAxNikJCUFMRkFURUNILCBJTkMuCi0JCQkJU0hJTi1PU0FLQSBFSVRPIEJMREcuCi0JCQkJNC0xNS0xOCBOSVNISU5BS0FKSU1BLCBZT0RPR0FXQS1LVSwKLQkJCQlPU0FLQSAgCi0JCQkJSkFQQU4KLQotMDAtRTAtM0YgICAoaGV4KQkJSkFUT04gQ09SUE9SQVRJT04KLTAwRTAzRiAgICAgKGJhc2UgMTYpCQlKQVRPTiBDT1JQT1JBVElPTgotCQkJCTU1NiBTT1VUSCBNSUxQSVRBUyBCTFZELgotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC00MCAgIChoZXgpCQlEZXNrU3RhdGlvbiBUZWNobm9sb2d5LCBJbmMuCi0wMEUwNDAgICAgIChiYXNlIDE2KQkJRGVza1N0YXRpb24gVGVjaG5vbG9neSwgSW5jLgotCQkJCTE1NzI5IENPTExFR0UgQkxWRC4KLQkJCQlMRU5FWEEgS1MgNjYyMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTQxICAgKGhleCkJCUNTUEkKLTAwRTA0MSAgICAgKGJhc2UgMTYpCQlDU1BJCi0JCQkJNDMgTWFubmluZyBSZC4KLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTQyICAgKGhleCkJCVBhY29tIFN5c3RlbXMgTHRkLgotMDBFMDQyICAgICAoYmFzZSAxNikJCVBhY29tIFN5c3RlbXMgTHRkLgotCQkJCVVOSVQgMjIgMzgvNDYgU09VVEggU1QuCi0JCQkJUllEQUxNRVJFIDIxMTYgTlNXIAotCQkJCUFVU1RSQUxJQQotCi0wMC1FMC00MyAgIChoZXgpCQlWaXRhbENvbQotMDBFMDQzICAgICAoYmFzZSAxNikJCVZpdGFsQ29tCi0JCQkJMTUyMjIgREVMIEFNTyBBVkUuCi0JCQkJVFVTVElOIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC00NCAgIChoZXgpCQlMU0lDUyBDT1JQT1JBVElPTgotMDBFMDQ0ICAgICAoYmFzZSAxNikJCUxTSUNTIENPUlBPUkFUSU9OCi0JCQkJMy04LTMgTklOT01JWUEsIFRTS1VLVUJBLVNISQotCQkJCUlCQVJBR0ktS0VOLCAzMDUgIAotCQkJCUpBUEFOCi0KLTAwLUUwLTQ1ICAgKGhleCkJCVRPVUNIV0FWRSwgSU5DLgotMDBFMDQ1ICAgICAoYmFzZSAxNikJCVRPVUNIV0FWRSwgSU5DLgotCQkJCTk5NCBTQU4gQU5UT05JTyBSRC4KLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTQ2ICAgKGhleCkJCUJFTlRMWSBORVZBREEgQ09SUC4KLTAwRTA0NiAgICAgKGJhc2UgMTYpCQlCRU5UTFkgTkVWQURBIENPUlAuCi0JCQkJUE8gQk9YIDE1NwotCQkJCU1JTkRFTiBOViA4OTQyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNDcgICAoaGV4KQkJSW5Gb2N1cyBDb3Jwb3JhdGlvbgotMDBFMDQ3ICAgICAoYmFzZSAxNikJCUluRm9jdXMgQ29ycG9yYXRpb24KLQkJCQkyNzUwMCBTVyBQYXJrd2F5IEF2ZW51ZQotCQkJCVdpbHNvbnZpbGxlIE9SIDk3MDcwLTgyMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTQ4ICAgKGhleCkJCVNETCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBFMDQ4ICAgICAoYmFzZSAxNikJCVNETCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCVAuTy4gQk9YIDEzMDMKLQkJCQlFQVNUT04gTUEgMDIzMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTQ5ICAgKGhleCkJCU1JQ1JPV0kgRUxFQ1RST05JQyBHbWJICi0wMEUwNDkgICAgIChiYXNlIDE2KQkJTUlDUk9XSSBFTEVDVFJPTklDIEdtYkgKLQkJCQlaVVNBTVNUUkFTU0UgOAotCQkJCUQgODYxNjUgQVVHU0JVUkcgIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtNEEgICAoaGV4KQkJRU5IQU5DRUQgTUVTU0FHSU5HIFNZU1RFTVMsIElOQwotMDBFMDRBICAgICAoYmFzZSAxNikJCUVOSEFOQ0VEIE1FU1NBR0lORyBTWVNURU1TLCBJTkMKLQkJCQkyNTAgV0VTVCBTT1VUSExBS0UgQkxWRC4KLQkJCQlTT1VUSExBS0UgVFggNzYwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTRCICAgKGhleCkJCUpVTVAgSU5EVVNUUklFTExFIENPTVBVVEVSVEVDSE5JSyBHbWJICi0wMEUwNEIgICAgIChiYXNlIDE2KQkJSlVNUCBJTkRVU1RSSUVMTEUgQ09NUFVURVJURUNITklLIEdtYkgKLQkJCQkKLQkJCQlWRUlMQ0hFTkdBU1NFIDcKLQkJCQlEOTQ0NjkgREVHR0VORE9SRiAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC00QyAgIChoZXgpCQlSRUFMVEVLIFNFTUlDT05EVUNUT1IgQ09SUC4KLTAwRTA0QyAgICAgKGJhc2UgMTYpCQlSRUFMVEVLIFNFTUlDT05EVUNUT1IgQ09SUC4KLQkJCQkxRiwgTk8uIDExLCBJTkRVU1RSWSBFLiBSRC4gSVgKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgMzAwICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLTREICAgKGhleCkJCUlOVEVSTkVUIElOSVRJQVRJVkUgSkFQQU4sIElOQwotMDBFMDREICAgICAoYmFzZSAxNikJCUlOVEVSTkVUIElOSVRJQVRJVkUgSkFQQU4sIElOQwotCQkJCTEtNCwgU0FOQkFOLUNITywgQ0hJWU9EQS1LVQotCQkJCVRPS1lPIDEwMiAKLQkJCQlKQVBBTgotCi0wMC1FMC00RSAgIChoZXgpCQlTQU5ZTyBERU5LSSBDTy4sIExURC4KLTAwRTA0RSAgICAgKGJhc2UgMTYpCQlTQU5ZTyBERU5LSSBDTy4sIExURC4KLQkJCQk4MTItMywgU2hpbW9ub2dvdSwgVWVkYS1TaGkKLQkJCQlOYWdhbm8gIDM4Ni0xMjExCi0JCQkJSkFQQU4KLQotMDAtRTAtNEYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBFMDRGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNTAgICAoaGV4KQkJRVhFQ1VUT05FIElORk9STUFUSU9OIFNZU1RFTVMsIElOQy4KLTAwRTA1MCAgICAgKGJhc2UgMTYpCQlFWEVDVVRPTkUgSU5GT1JNQVRJT04gU1lTVEVNUywgSU5DLgotCQkJCTQ3OCBXSEVFTEVSUyBGQVJNUyBST0FECi0JCQkJTUlMRk9SRCBDVCAwNjQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNTEgICAoaGV4KQkJVEFMWCBDT1JQT1JBVElPTgotMDBFMDUxICAgICAoYmFzZSAxNikJCVRBTFggQ09SUE9SQVRJT04KLQkJCQkxODUwIEJPUk1BTiBDT1VSVAotCQkJCVNULiBMT1VJUyBNTyA2MzE0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNTIgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLTAwRTA1MiAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotCQkJCTE3NDUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC01MyAgIChoZXgpCQlDRUxMUE9SVCBMQUJTLCBJTkMuCi0wMEUwNTMgICAgIChiYXNlIDE2KQkJQ0VMTFBPUlQgTEFCUywgSU5DLgotCQkJCTg4NSBBUkFQQUhPRSBBVkUuLAotCQkJCUJPVUxERVIgQ08gODAzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTU0ICAgKGhleCkJCUtPREFJIEhJVEVDIENPLiwgTFRELgotMDBFMDU0ICAgICAoYmFzZSAxNikJCUtPREFJIEhJVEVDIENPLiwgTFRELgotCQkJCTItNDUgT05VTUEgSEFOWVUgQ0lUWQotCQkJCVNBSVRBTUEuMzQ4ICAKLQkJCQlKQVBBTgotCi0wMC1FMC01NSAgIChoZXgpCQlJTkdFTklFUklBIEVMRUNUUk9OSUNBIENPTUVSQ0lBTCBJTkVMQ09NIFMuQS4KLTAwRTA1NSAgICAgKGJhc2UgMTYpCQlJTkdFTklFUklBIEVMRUNUUk9OSUNBIENPTUVSQ0lBTCBJTkVMQ09NIFMuQS4KLQkJCQlDTC4gUElRVUVSIE5PLjMKLQkJCQkyODAzMyBNQURSSUQgIAotCQkJCVNQQUlOCi0KLTAwLUUwLTU2ICAgKGhleCkJCUhPTE9OVEVDSCBDT1JQT1JBVElPTgotMDBFMDU2ICAgICAoYmFzZSAxNikJCUhPTE9OVEVDSCBDT1JQT1JBVElPTgotCQkJCTIwMzkgU0FNQVJJVEFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTU3ICAgKGhleCkJCUhBTiBNSUNST1RFTEVDT00uIENPLiwgTFRELgotMDBFMDU3ICAgICAoYmFzZSAxNikJCUhBTiBNSUNST1RFTEVDT00uIENPLiwgTFRELgotCQkJCUZBU0hJT04gQkQuLCAzUkQgRlIsCi0JCQkJMTE5NCwgRE9PTlNBTiAyCi0JCQkJRE9ORyBTRU8tR1UsIFRBRUpPTiBLT1JFQSAzMDItMTczIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1FMC01OCAgIChoZXgpCQlQSEFTRSBPTkUgREVOTUFSSyBBL1MKLTAwRTA1OCAgICAgKGJhc2UgMTYpCQlQSEFTRSBPTkUgREVOTUFSSyBBL1MKLQkJCQlST1NLSUxERVZFSiAzOQotCQkJCURLLTIwMDAgRlJFREVSSUtTQkVSRyAgCi0JCQkJREVOTUFSSwotCi0wMC1FMC01OSAgIChoZXgpCQlDT05UUk9MTEVEIEVOVklST05NRU5UUywgTFRELgotMDBFMDU5ICAgICAoYmFzZSAxNikJCUNPTlRST0xMRUQgRU5WSVJPTk1FTlRTLCBMVEQuCi0JCQkJNTkwIEJFUlJZIFNUUkVFVAotCQkJCVdJTk5FUEVHIFIzSCBPUjkgIAotCQkJCUNBTkFEQQotCi0wMC1FMC01QSAgIChoZXgpCQlHQUxFQSBORVRXT1JLIFNFQ1VSSVRZCi0wMEUwNUEgICAgIChiYXNlIDE2KQkJR0FMRUEgTkVUV09SSyBTRUNVUklUWQotCQkJCTIgUExBQ0UgZHUgQ09NTUVSQ0UgLSBTVEUgIzMyMAotCQkJCUJST1NTQVJELCBRVUVCRUMgSjRXIDJUOCAgCi0JCQkJQ0FOQURBCi0KLTAwLUUwLTVCICAgKGhleCkJCVdFU1QgRU5EIFNZU1RFTVMgQ09SUC4KLTAwRTA1QiAgICAgKGJhc2UgMTYpCQlXRVNUIEVORCBTWVNURU1TIENPUlAuCi0JCQkJMzkgV0lOTkVSJ1MgQ0lSQ0xFIERSLiwKLQkJCQlBUk5QUklPUiwgT05UQVJJTyAgICBLN1MgM0c5ICAKLQkJCQlDQU5BREEKLQotMDAtRTAtNUMgICAoaGV4KQkJTUFUU1VTSElUQSBLT1RPQlVLSSBFTEVDVFJPTklDUyBJTkRVU1RSSUVTLCBMVEQuCi0wMEUwNUMgICAgIChiYXNlIDE2KQkJTUFUU1VTSElUQSBLT1RPQlVLSSBFTEVDVFJPTklDUyBJTkRVU1RSSUVTLCBMVEQuCi0JCQkJMjQ3LCBGVUtVVEFLRSBTQUlKTwotCQkJCUVISU1FLCA3OTMgIAotCQkJCUpBUEFOCi0KLTAwLUUwLTVEICAgKGhleCkJCVVOSVRFQyBDTy4sIExURC4KLTAwRTA1RCAgICAgKGJhc2UgMTYpCQlVTklURUMgQ08uLCBMVEQuCi0JCQkJS0lTT0dBV0EtQ0hPICBJQ0hJTk9UT1JJIDI0Ci0JCQkJSEFHVVJJLUdVTiBBSUNISSA0OTMgIAotCQkJCUpBUEFOCi0KLTAwLUUwLTVFICAgKGhleCkJCUpBUEFOIEFWSUFUSU9OIEVMRUNUUk9OSUNTIElORFVTVFJZLCBMVEQuCi0wMEUwNUUgICAgIChiYXNlIDE2KQkJSkFQQU4gQVZJQVRJT04gRUxFQ1RST05JQ1MgSU5EVVNUUlksIExURC4KLQkJCQkKLQkJCQkzLTEtMSBNVVNBU0hJTk8gQUtJU0hJTUEtU0hJCi0JCQkJVE9LWU8gMTk2IEpBUEFOIAotCQkJCUpBUEFOCi0KLTAwLUUwLTVGICAgKGhleCkJCWUtTmV0LCBJbmMuCi0wMEUwNUYgICAgIChiYXNlIDE2KQkJZS1OZXQsIEluYy4KLQkJCQkxMjMyNSBIWU1FQURPVyBEUklWRQotCQkJCVNVSVRFICMyLTIwMAotCQkJCUFVU1RJTiBUWCA3ODc1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNjAgICAoaGV4KQkJU0hFUldPT0QKLTAwRTA2MCAgICAgKGJhc2UgMTYpCQlTSEVSV09PRAotCQkJCTIxMDU2IEZPUkJFUyBTVFJFRVQKLQkJCQlIQVlXQVJEIENBIDk0NTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02MSAgIChoZXgpCQlFZGdlUG9pbnQgTmV0d29ya3MsIEluYy4KLTAwRTA2MSAgICAgKGJhc2UgMTYpCQlFZGdlUG9pbnQgTmV0d29ya3MsIEluYy4KLQkJCQkyMjM4IE1BUlRJTiBBVkVOVUUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNjIgICAoaGV4KQkJSE9TVCBFTkdJTkVFUklORwotMDBFMDYyICAgICAoYmFzZSAxNikJCUhPU1QgRU5HSU5FRVJJTkcKLQkJCQkyMDAgRUFTVCBNQUlOIFNUUkVFVCAtU1RFLiM3MDAKLQkJCQlKT0hOU09OIENJVFkgVE4gMzc2MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTYzICAgKGhleCkJCUNBQkxFVFJPTiAtIFlBR08gU1lTVEVNUywgSU5DLgotMDBFMDYzICAgICAoYmFzZSAxNikJCUNBQkxFVFJPTiAtIFlBR08gU1lTVEVNUywgSU5DLgotCQkJCTM1IElORFVTVFJJQUwgV0FZCi0JCQkJUC5PLiBCT1ggNTAwNQotCQkJCVJPQ0hFU1RFUiBOSCAwMzg2Ni01MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02NCAgIChoZXgpCQlTQU1TVU5HIEVMRUNUUk9OSUNTCi0wMEUwNjQgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFTEVDVFJPTklDUwotCQkJCTk5IFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02NSAgIChoZXgpCQlPUFRJQ0FMIEFDQ0VTUyBJTlRFUk5BVElPTkFMCi0wMEUwNjUgICAgIChiYXNlIDE2KQkJT1BUSUNBTCBBQ0NFU1MgSU5URVJOQVRJT05BTAotCQkJCTUwMCBXRVNUIENVTU1JTkdTIFBMLiAjMzQwMAotCQkJCVdPQlVSTiBNQSAwMTgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNjYgICAoaGV4KQkJUHJvTWF4IFN5c3RlbXMsIEluYy4KLTAwRTA2NiAgICAgKGJhc2UgMTYpCQlQcm9NYXggU3lzdGVtcywgSW5jLgotCQkJCTE2IFRFQ0hOT0xPR1kgRFJJVkUtLUJMREcuIzEwNgotCQkJCUlSVklORSBDQSA5MjY1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNjcgICAoaGV4KQkJZWFjIEFVVE9NQVRJT04tQ09OU1VMVElORyBHbWJICi0wMEUwNjcgICAgIChiYXNlIDE2KQkJZWFjIEFVVE9NQVRJT04tQ09OU1VMVElORyBHbWJICi0JCQkJSEVSTVNET1JGRVIgREFNTSAyMjIKLQkJCQk3MzQ2NyBCRVJMSU4gIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtNjggICAoaGV4KQkJTUVSUklNQUMgU1lTVEVNUyBJTkMuCi0wMEUwNjggICAgIChiYXNlIDE2KQkJTUVSUklNQUMgU1lTVEVNUyBJTkMuCi0JCQkJMjE0NCBNQyBDT1kgUk9BRAotCQkJCUNBUlJPTExUT04gVFggNzUwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTY5ICAgKGhleCkJCUpBWUNPUgotMDBFMDY5ICAgICAoYmFzZSAxNikJCUpBWUNPUgotCQkJCTk3NzUgVE9XTkUgQ0VOVFJFIERSSVZFCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02QSAgIChoZXgpCQlLQVBTQ0ggQUcKLTAwRTA2QSAgICAgKGJhc2UgMTYpCQlLQVBTQ0ggQUcKLQkJCQlXQUdFTlNFSUxHQVNTRSAxCi0JCQkJMTEyMC1WSUVOTkEgIAotCQkJCUFVU1RSSUEKLQotMDAtRTAtNkIgICAoaGV4KQkJVyZHIFNQRUNJQUwgUFJPRFVDVFMKLTAwRTA2QiAgICAgKGJhc2UgMTYpCQlXJkcgU1BFQ0lBTCBQUk9EVUNUUwotCQkJCVNDRUlOQ0UgUEFSSyBFSU5ESE9WSU4gNTA0OQotCQkJCTU2OTIgRUIgU09OCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtRTAtNkMgICAoaGV4KQkJQUVQIFN5c3RlbXMgSW50ZXJuYXRpb25hbCBMdGQKLTAwRTA2QyAgICAgKGJhc2UgMTYpCQlBRVAgU3lzdGVtcyBJbnRlcm5hdGlvbmFsIEx0ZAotCQkJCUZvY3VzIDMxLCBXZXN0IFdpbmcKLQkJCQlDbGV2ZWxhbmQgUm9hZAotCQkJCUhlbWVsIEhlbXN0ZWFkIEhlcnRzIEVuZ2xhbmQgSFAyIDdCVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUUwLTZEICAgKGhleCkJCUNPTVBVV0FSRSBDT1JQT1JBVElPTgotMDBFMDZEICAgICAoYmFzZSAxNikJCUNPTVBVV0FSRSBDT1JQT1JBVElPTgotCQkJCU9uZSBDYW1wdXMgTWFydGl1cwotCQkJCURldHJvaXQgTUkgNDgyMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTZFICAgKGhleCkJCUZBUiBTWVNURU1TIFMucC5BLgotMDBFMDZFICAgICAoYmFzZSAxNikJCUZBUiBTWVNURU1TIFMucC5BLgotCQkJCVZJQSBGLiBaRU5JIDgKLQkJCQkzODY4IFJPVkVSRVRPIChUTikgIAotCQkJCUlUQUxZCi0KLTAwLUUwLTZGICAgKGhleCkJCU1vdG9yb2xhLCBJbmMuCi0wMEUwNkYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYy4KLQkJCQkyNDUwIFdhbHNoIEF2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03MCAgIChoZXgpCQlESCBURUNITk9MT0dZCi0wMEUwNzAgICAgIChiYXNlIDE2KQkJREggVEVDSE5PTE9HWQotCQkJCTMwMDMgUk9MTElFIEdBVEVTIERSSVZFCi0JCQkJUEFTTyBST0JMRVMgQ0EgOTM0NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTcxICAgKGhleCkJCUVQSVMgTUlDUk9DT01QVVRFUgotMDBFMDcxICAgICAoYmFzZSAxNikJCUVQSVMgTUlDUk9DT01QVVRFUgotCQkJCTcyNDU4IEFMQlNUQURUCi0JCQkJTEFVVExJTkdFUiBTVFJBU1NFIDE0NwotCQkJCTcyNDU4IEFMQlNUQURUICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLTcyICAgKGhleCkJCUxZTksKLTAwRTA3MiAgICAgKGJhc2UgMTYpCQlMWU5LCi0JCQkJUkFCSU4gQlVJTERJTkcKLQkJCQlURVJBRElPTiBJTkRVU1RSSUFMIFBBUksKLQkJCQlELk4uIE1JU0dBViAyMDEgIAotCQkJCUlTUkFFTAotCi0wMC1FMC03MyAgIChoZXgpCQlOQVRJT05BTCBBTVVTRU1FTlQgTkVUV09SSywgSU5DLgotMDBFMDczICAgICAoYmFzZSAxNikJCU5BVElPTkFMIEFNVVNFTUVOVCBORVRXT1JLLCBJTkMuCi0JCQkJNDAxIE4uIE1JQ0hJR0FOIEFWRU5VRQotCQkJCUNISUNBR08gSUwgNjA2MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTc0ICAgKGhleCkJCVRJRVJOQU4gQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRTA3NCAgICAgKGJhc2UgMTYpCQlUSUVSTkFOIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTEwMjUgUk9TRUxMRSBTVC4KLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTc1ICAgKGhleCkJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi0wMEUwNzUgICAgIChiYXNlIDE2KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMjcgSmV0cGxleCBDaXJjbGUKLQkJCQlNYWRpc29uIEFMIDM1NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03NiAgIChoZXgpCQlERVZFTE9QTUVOVCBDT05DRVBUUywgSU5DLgotMDBFMDc2ICAgICAoYmFzZSAxNikJCURFVkVMT1BNRU5UIENPTkNFUFRTLCBJTkMuCi0JCQkJMTAwMCBOLiBCUk9BRCBTVFJFRVQKLQkJCQlMQU5TREFMRSBQQSAxOTQ0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNzcgICAoaGV4KQkJV0VCR0VBUiwgSU5DLgotMDBFMDc3ICAgICAoYmFzZSAxNikJCVdFQkdFQVIsIElOQy4KLQkJCQkxMjYzIE9BS01FQUQgUEtXWQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNzggICAoaGV4KQkJQkVSS0VMRVkgTkVUV09SS1MKLTAwRTA3OCAgICAgKGJhc2UgMTYpCQlCRVJLRUxFWSBORVRXT1JLUwotCQkJCTY4MyBSSVZFUiBPQUtTIFBBUktXQVkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNzkgICAoaGV4KQkJQS5ULk4uUi4KLTAwRTA3OSAgICAgKGJhc2UgMTYpCQlBLlQuTi5SLgotCQkJCUJQIDk2NgotCQkJCTkxOTc2IENPVVJUQUJPRVVGICAKLQkJCQlGUkFOQ0UKLQotMDAtRTAtN0EgICAoaGV4KQkJTUlLUk9ESURBS1QgQUIKLTAwRTA3QSAgICAgKGJhc2UgMTYpCQlNSUtST0RJREFLVCBBQgotCQkJCVNraWZmZXJ2YWdlbiA0OAotCQkJCUxVTkQgIFNFMjI0NzgKLQkJCQlTV0VERU4KLQotMDAtRTAtN0IgICAoaGV4KQkJQkFZIE5FVFdPUktTCi0wMEUwN0IgICAgIChiYXNlIDE2KQkJQkFZIE5FVFdPUktTCi0JCQkJMTI1IE5BR09HIFBBUksKLQkJCQlBQ1RPTiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtN0MgICAoaGV4KQkJTUVUVExFUi1UT0xFRE8sIElOQy4KLTAwRTA3QyAgICAgKGJhc2UgMTYpCQlNRVRUTEVSLVRPTEVETywgSU5DLgotCQkJCTExNTAgREVBUkJPUk4gRFJJVkUKLQkJCQlXT1JUSElOR1RPTiBPSCA0MzA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtN0QgICAoaGV4KQkJTkVUUk9OSVgsIElOQy4KLTAwRTA3RCAgICAgKGJhc2UgMTYpCQlORVRST05JWCwgSU5DLgotCQkJCTM0MCBUSE9SIFBMQUNFCi0JCQkJQlJFQSBDQSA5MjgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtN0UgICAoaGV4KQkJV0FMVCBESVNORVkgSU1BR0lORUVSSU5HCi0wMEUwN0UgICAgIChiYXNlIDE2KQkJV0FMVCBESVNORVkgSU1BR0lORUVSSU5HCi0JCQkJMTQwMSBGTE9XRVIgU1QuCi0JCQkJR0xFTkRBTEUgQ0EgOTEyMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTdGICAgKGhleCkJCUxPR0lTVElTVEVNIHMuci5sLgotMDBFMDdGICAgICAoYmFzZSAxNikJCUxPR0lTVElTVEVNIHMuci5sLgotCQkJCVZJQSBQQU5DSUFUSUNISSA5NC8xOAotCQkJCTUwMTI3IEZJUkVOWkUgIAotCQkJCUlUQUxZCi0KLTAwLUUwLTgwICAgKGhleCkJCUNPTlRST0wgUkVTT1VSQ0VTIENPUlBPUkFUSU9OCi0wMEUwODAgICAgIChiYXNlIDE2KQkJQ09OVFJPTCBSRVNPVVJDRVMgQ09SUE9SQVRJT04KLQkJCQkxNi0wMCBQT0xMSVRUIERSSVZFCi0JCQkJRkFJUiBMQVdOIE5KIDA3NDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC04MSAgIChoZXgpCQlUWUFOIENPTVBVVEVSIENPUlAuCi0wMEUwODEgICAgIChiYXNlIDE2KQkJVFlBTiBDT01QVVRFUiBDT1JQLgotCQkJCTMyODggTEFVUkVWSUVXIENUCi0JCQkJRlJFTU9OVCBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtODIgICAoaGV4KQkJQU5FUk1BCi0wMEUwODIgICAgIChiYXNlIDE2KQkJQU5FUk1BCi0JCQkJU0NIQUFQU0RSSUVTIDI1Ci0JCQkJMjI2MCBXRVNURVJMTyAgCi0JCQkJQkVMR0lVTQotCi0wMC1FMC04MyAgIChoZXgpCQlKQVRPIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBFMDgzICAgICAoYmFzZSAxNikJCUpBVE8gVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNTA1IEVBU1QgSFVOVExBTkQgRFIuIFNURSAjNTUwCi0JCQkJQVVTVElOIFRYIDc4NzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC04NCAgIChoZXgpCQlDT01QVUxJVEUgUiZECi0wMEUwODQgICAgIChiYXNlIDE2KQkJQ09NUFVMSVRFIFImRAotCQkJCTMgSEFST1NIRVQgU1RSLiBORVcgSU5ELiBaT05FCi0JCQkJUkFNQVQtSEFTSEFST04gNDcyNzkgIAotCQkJCUlTUkFFTAotCi0wMC1FMC04NSAgIChoZXgpCQlHTE9CQUwgTUFJTlRFQ0gsIElOQy4KLTAwRTA4NSAgICAgKGJhc2UgMTYpCQlHTE9CQUwgTUFJTlRFQ0gsIElOQy4KLQkJCQk2NDY4IENJVFkgV0VTVCBQQVJLV0FZCi0JCQkJRURFTiBQUkFJUklFIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC04NiAgIChoZXgpCQlDWUJFWCBDT01QVVRFUiBQUk9EVUNUUwotMDBFMDg2ICAgICAoYmFzZSAxNikJCUNZQkVYIENPTVBVVEVSIFBST0RVQ1RTCi0JCQkJNDkxMiBSRVNFQVJDSCBEUklWRQotCQkJCUhVTlRTVklMTEUgQUwgMzU4MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTg3ICAgKGhleCkJCUxlQ3JveSAtIE5ldHdvcmtpbmcgUHJvZHVjdGlvbnMgRGl2aXNpb24KLTAwRTA4NyAgICAgKGJhc2UgMTYpCQlMZUNyb3kgLSBOZXR3b3JraW5nIFByb2R1Y3Rpb25zIERpdmlzaW9uCi0JCQkJMjUgQlVSTElOR1RPTiBNQUxMIFJPQUQKLQkJCQlCVVJMSU5HVE9OIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC04OCAgIChoZXgpCQlMVFggQ09SUE9SQVRJT04KLTAwRTA4OCAgICAgKGJhc2UgMTYpCQlMVFggQ09SUE9SQVRJT04KLQkJCQkxNDUgVU5JVkVSU0lUWSBBVkVOVUUKLQkJCQlXRVNUV09PRCBNQSAwMjA5MC0yMzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC04OSAgIChoZXgpCQlJT04gTmV0d29ya3MsIEluYy4KLTAwRTA4OSAgICAgKGJhc2UgMTYpCQlJT04gTmV0d29ya3MsIEluYy4KLQkJCQkxNTUxIFNvdXRoIFdhc2hpbmd0b24gQXZlLgotCQkJCVBpc2NhdGF3YXkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLThBICAgKGhleCkJCUdFQyBBVkVSWSwgTFRELgotMDBFMDhBICAgICAoYmFzZSAxNikJCUdFQyBBVkVSWSwgTFRELgotCQkJCUZPVU5EUlkgTEFORQotCQkJCVNNRVRIV0lDSywgV0FSTEVZCi0JCQkJV0VTVCBNSURMQU5EUywgQjY2IDJMUCBFbmdsYW5kIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUUwLThCICAgKGhleCkJCVFMb2dpYyBDb3JwLgotMDBFMDhCICAgICAoYmFzZSAxNikJCVFMb2dpYyBDb3JwLgotCQkJCTI2NjAwIExhZ3VuYSBIaWxscyBEci4KLQkJCQlBbGlzbyBWaWVqbyBDQSA5MjY1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOEMgICAoaGV4KQkJTkVPUEFSQURJR00gTEFCUywgSU5DLgotMDBFMDhDICAgICAoYmFzZSAxNikJCU5FT1BBUkFESUdNIExBQlMsIElOQy4KLQkJCQkxNzM1IE4uIEZJUlNUIFNULiwgIFNURSAjMTA4Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLThEICAgKGhleCkJCVBSRVNTVVJFIFNZU1RFTVMsIElOQy4KLTAwRTA4RCAgICAgKGJhc2UgMTYpCQlQUkVTU1VSRSBTWVNURU1TLCBJTkMuCi0JCQkJMzQgUkVTRUFSQ0ggRFJJVkUKLQkJCQlIQU1QVE9OIFZBIDIzNjY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC04RSAgIChoZXgpCQlVVFNUQVJDT00KLTAwRTA4RSAgICAgKGJhc2UgMTYpCQlVVFNUQVJDT00KLQkJCQkzMyBXT09EIEFWRS4gU09VVEgKLQkJCQlJU0VMSU4gTkogMDg4MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLThGICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTA4RiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTkwICAgKGhleCkJCUJFQ0tNQU4gTEFCLiBBVVRPTUFUSU9OIERJVi4KLTAwRTA5MCAgICAgKGJhc2UgMTYpCQlCRUNLTUFOIExBQi4gQVVUT01BVElPTiBESVYuCi0JCQkJOTAgQk9ST0xJTkUgUk9BRAotCQkJCUFMTEVOREFMRSBOSiAwNzQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOTEgICAoaGV4KQkJTEcgRUxFQ1RST05JQ1MsIElOQy4KLTAwRTA5MSAgICAgKGJhc2UgMTYpCQlMRyBFTEVDVFJPTklDUywgSU5DLgotCQkJCTE2LCBXT09NWUVPTi1ET05HLAotCQkJCVNFT0NITy1HVSwgU0VPVUwsIDEzNy0xNDAsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtRTAtOTIgICAoaGV4KQkJQURNVEVLIElOQ09SUE9SQVRFRAotMDBFMDkyICAgICAoYmFzZSAxNikJCUFETVRFSyBJTkNPUlBPUkFURUQKLQkJCQkxOTYyIFpBTktFUiBST0FECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTkzICAgKGhleCkJCUFDS0ZJTiBORVRXT1JLUwotMDBFMDkzICAgICAoYmFzZSAxNikJCUFDS0ZJTiBORVRXT1JLUwotCQkJCTU3NSBOLiBQQVNUT1JJQSBBVkUuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC05NCAgIChoZXgpCQlPU0FJIFNSTAotMDBFMDk0ICAgICAoYmFzZSAxNikJCU9TQUkgU1JMCi0JCQkJVklBIFRPUklOTwotCQkJCTYwMy1JVlJFQSAoVE8pICAKLQkJCQlJVEFMWQotCi0wMC1FMC05NSAgIChoZXgpCQlBRFZBTkNFRC1WSVNJT04gVEVDSE5PTEdJRVMgQ09SUC4KLTAwRTA5NSAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRC1WSVNJT04gVEVDSE5PTEdJRVMgQ09SUC4KLQkJCQk4Ri0xLCA4NyBTRUNUSU9OIDMsIENIVU5HIFlBTkcgUkQsCi0JCQkJVHUgQ2hlbmcgVGFpcGVpIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtOTYgICAoaGV4KQkJU0hJTUFEWlUgQ09SUE9SQVRJT04KLTAwRTA5NiAgICAgKGJhc2UgMTYpCQlTSElNQURaVSBDT1JQT1JBVElPTgotCQkJCTEsIE5JU0hJTk9LWU8tS1VXQUJBUkFDSE8KLQkJCQlOQUtBR1lPLUtVLCBLWU9UTyA2MDQgIAotCQkJCUpBUEFOCi0KLTAwLUUwLTk3ICAgKGhleCkJCUNBUlJJRVIgQUNDRVNTIENPUlBPUkFUSU9OCi0wMEUwOTcgICAgIChiYXNlIDE2KQkJQ0FSUklFUiBBQ0NFU1MgQ09SUE9SQVRJT04KLQkJCQk1Mzk1IFBFQVJMIFBBUktXQVkKLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC05OCAgIChoZXgpCQlBYm9Db20gU3lzdGVtcywgSW5jLgotMDBFMDk4ICAgICAoYmFzZSAxNikJCUFib0NvbSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTJGLTMsIE5PLiAzMzMsIFNFQy4gMQotCQkJCUdVQU4tRlUgUk9BRAotCQkJCUhTSU4tQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLTk5ICAgKGhleCkJCVNBTVNPTiBBRwotMDBFMDk5ICAgICAoYmFzZSAxNikJCVNBTVNPTiBBRwotCQkJCVdFSVNNVUxMRVJTVFIuIDMKLQkJCQlELTYwMzE0IEZSQU5LRlVSVCAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC05QSAgIChoZXgpCQlQb3NpdHJvbiBJbmMuCi0wMEUwOUEgICAgIChiYXNlIDE2KQkJUG9zaXRyb24gSW5jLgotCQkJCTUxMDEgQnVjaGFuIFN0cmVldAotCQkJCVN1aXRlIDIyMAotCQkJCU1vbnRyZWFsLCBRdWViZWMgSDRQIDJSOQotCQkJCUNBTkFEQQotCi0wMC1FMC05QiAgIChoZXgpCQlFTkdBR0UgTkVUV09SS1MsIElOQy4KLTAwRTA5QiAgICAgKGJhc2UgMTYpCQlFTkdBR0UgTkVUV09SS1MsIElOQy4KLQkJCQkzMTYgTi4gTUlMV0FVS0VFIFNULiwgU1RFLiMyMTQKLQkJCQlNSUxXQVVLRUUgV0kgNTMyMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTlDICAgKGhleCkJCU1JSQotMDBFMDlDICAgICAoYmFzZSAxNikJCU1JSQotCQkJCUxFIHBhcmMgZHUgTU9VTElOCi0JCQkJMiwgZ3JhbmRlIHJ1ZSBQcm9sb25nZWUKLQkJCQlGOTU2NTAgUFVJU0VVWC1QT1RPSVNFICAKLQkJCQlGUkFOQ0UKLQotMDAtRTAtOUQgICAoaGV4KQkJU0FSTk9GRiBDT1JQT1JBVElPTgotMDBFMDlEICAgICAoYmFzZSAxNikJCVNBUk5PRkYgQ09SUE9SQVRJT04KLQkJCQlDTiA1MzAwCi0JCQkJUFJJTkNFVE9OIE5KIDA4NTQzLTUzMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTlFICAgKGhleCkJCVFVQU5UVU0gQ09SUE9SQVRJT04KLTAwRTA5RSAgICAgKGJhc2UgMTYpCQlRVUFOVFVNIENPUlBPUkFUSU9OCi0JCQkJNTAwIE1jQ2FydGh5IEJvdWxldmFyZAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC05RiAgIChoZXgpCQlQSVhFTCBWSVNJT04KLTAwRTA5RiAgICAgKGJhc2UgMTYpCQlQSVhFTCBWSVNJT04KLQkJCQk0MyBOQUdPRyBQQVJLCi0JCQkJQUNUT04gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUEwICAgKGhleCkJCVdJTFRST04gQ08uCi0wMEUwQTAgICAgIChiYXNlIDE2KQkJV0lMVFJPTiBDTy4KLQkJCQk0OTAgSkFSVklTIERSSVZFCi0JCQkJTU9SR0FOIEhJTEwgQ0EgOTUwMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUExICAgKGhleCkJCUhJTUEgUEFVTCBISUxERUJSQU5EVCBHbWJIIENvLiBLRwotMDBFMEExICAgICAoYmFzZSAxNikJCUhJTUEgUEFVTCBISUxERUJSQU5EVCBHbWJIIENvLiBLRwotCQkJCQotCQkJCVBPU1RCT1ggMTI2MQotCQkJCUQtNjg3NzcgQlJVRUhMIE5FQVIgTUFOTkhFSU0gCi0JCQkJR0VSTUFOWQotCi0wMC1FMC1BMiAgIChoZXgpCQlNSUNST1NMQVRFIElOQy4KLTAwRTBBMiAgICAgKGJhc2UgMTYpCQlNSUNST1NMQVRFIElOQy4KLQkJCQk5NjI1IElHTkFDRSAtIFNURS4gRAotCQkJCUJST1NTQVJEICBRQyBKNFkgMlAzICAKLQkJCQlDQU5BREEKLQotMDAtRTAtQTMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBFMEEzICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQTQgICAoaGV4KQkJRVNBT1RFIFMucC5BLgotMDBFMEE0ICAgICAoYmFzZSAxNikJCUVTQU9URSBTLnAuQS4KLQkJCQl2aWEgZGkgQ0FDSU9MTEUsIDE1Ci0JCQkJNTAxMjcgRkxPUkVOQ0UgIAotCQkJCUlUQUxZCi0KLTAwLUUwLUE1ICAgKGhleCkJCUNvbUNvcmUgU2VtaWNvbmR1Y3RvciwgSW5jLgotMDBFMEE1ICAgICAoYmFzZSAxNikJCUNvbUNvcmUgU2VtaWNvbmR1Y3RvciwgSW5jLgotCQkJCTQ1MDUgTEFTIFZJUkdFTkVTLCBTdWl0ZSAyMDIKLQkJCQlDQUxBQkFTQVMgQ0EgOTEzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUE2ICAgKGhleCkJCVRFTE9HWSBORVRXT1JLUywgSU5DLgotMDBFMEE2ICAgICAoYmFzZSAxNikJCVRFTE9HWSBORVRXT1JLUywgSU5DLgotCQkJCTIwMjUwIENFTlRVUlkgQkxWRC4KLQkJCQlHRVJNQU5UT1dOIE1EIDIwODc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1BNyAgIChoZXgpCQlJUEMgSU5GT1JNQVRJT04gU1lTVEVNUywgSU5DLgotMDBFMEE3ICAgICAoYmFzZSAxNikJCUlQQyBJTkZPUk1BVElPTiBTWVNURU1TLCBJTkMuCi0JCQkJTUVUUk8gQ0VOVEVSCi0JCQkJT05FIFNUQVRJT04gUExBQ0UKLQkJCQlTVEFNRk9SRCBDVCAwNjkwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQTggICAoaGV4KQkJU0FUIEdtYkggJiBDby4KLTAwRTBBOCAgICAgKGJhc2UgMTYpCQlTQVQgR21iSCAmIENvLgotCQkJCVJVVEhORVJHQVNTRSAxCi0JCQkJVklFTk5BIEEtMTIxMCAgCi0JCQkJQVVTVFJJQQotCi0wMC1FMC1BOSAgIChoZXgpCQlGVU5BSSBFTEVDVFJJQyBDTy4sIExURC4KLTAwRTBBOSAgICAgKGJhc2UgMTYpCQlGVU5BSSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQk3LTEsIE5BS0FHQUlUTyA3LUNIT01FLCBEQUlUTwotCQkJCU9TQUtBICA1NzQgIAotCQkJCUpBUEFOCi0KLTAwLUUwLUFBICAgKGhleCkJCUVMRUNUUk9TT05JQyBMVEQuCi0wMEUwQUEgICAgIChiYXNlIDE2KQkJRUxFQ1RST1NPTklDIExURC4KLQkJCQlIQVdMRVkgTUlMTCwgSEFXTEVZIFJELgotCQkJCURBUlRGT1JELCBLRU5UIERBMiA3U1kgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUUwLUFCICAgKGhleCkJCURJTUFUIFMuQS4KLTAwRTBBQiAgICAgKGJhc2UgMTYpCQlESU1BVCBTLkEuCi0JCQkJQy9CSVNDQUlBIDM4MyAzCi0JCQkJMDgwMjMgIEJBUkNFTE9OQSAgCi0JCQkJU1BBSU4KLQotMDAtRTAtQUMgICAoaGV4KQkJTUlEU0NPLCBJTkMuCi0wMEUwQUMgICAgIChiYXNlIDE2KQkJTUlEU0NPLCBJTkMuCi0JCQkJNzEwIFJPVVRFIDQ2IEVBU1QKLQkJCQlGQUlSRklFTEQgTkogMDcwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUFEICAgKGhleCkJCUVFUyBURUNITk9MT0dZLCBMVEQuCi0wMEUwQUQgICAgIChiYXNlIDE2KQkJRUVTIFRFQ0hOT0xPR1ksIExURC4KLQkJCQkyNSBFQVNUV0FZUwotCQkJCVdJVEhBTSwgRVNTRVgsIENNOCAzQUwgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUUwLUFFICAgKGhleCkJCVhBUVRJIENPUlBPUkFUSU9OCi0wMEUwQUUgICAgIChiYXNlIDE2KQkJWEFRVEkgQ09SUE9SQVRJT04KLQkJCQkgMTYzMCBPQUtMQU5EIFJELiAjQS0yMTQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQUYgICAoaGV4KQkJR0VORVJBTCBEWU5BTUlDUyBJTkZPUk1BVElPTiBTWVNURU1TCi0wMEUwQUYgICAgIChiYXNlIDE2KQkJR0VORVJBTCBEWU5BTUlDUyBJTkZPUk1BVElPTiBTWVNURU1TCi0JCQkJQ09NUFVUSU5HIERFVklDRVMsIExURC4KLQkJCQkgMzE5MCBGQUlSVklFVyBQQQotCQkJCUZBTExTIENIVVJDSCBWQSAyMjA0Mi00NTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CMCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwQjAgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CMSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudCwgRW50ZXJwcmlzZSBCdXNpbmVzcyBHcm91cAotMDBFMEIxICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50LCBFbnRlcnByaXNlIEJ1c2luZXNzIEdyb3VwCi0JCQkJMjY4MDEgV2VzdCBBZ291cmEgUm9hZAotCQkJCUNhbGFiYXNhcyBDQSA5MTMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQjIgICAoaGV4KQkJVEVMTUFYIENPTU1VTklDQVRJT05TIENPUlAuCi0wMEUwQjIgICAgIChiYXNlIDE2KQkJVEVMTUFYIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJNDY1MTUgTEFORElORyBQQVJLV0FZCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQjMgICAoaGV4KQkJRXRoZXJXQU4gU3lzdGVtcywgSW5jLgotMDBFMEIzICAgICAoYmFzZSAxNikJCUV0aGVyV0FOIFN5c3RlbXMsIEluYy4KLQkJCQkxNCBIVUdIRVMsICBTVEUuQi0xMDUKLQkJCQlJUlZJTkUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUI0ICAgKGhleCkJCVRFQ0hOTyBTQ09QRSBDTy4sIExURC4KLTAwRTBCNCAgICAgKGJhc2UgMTYpCQlURUNITk8gU0NPUEUgQ08uLCBMVEQuCi0JCQkJMTMtNi03IEtJU0hJTUFUSSBVUkFXQVNJCi0JCQkJU0FJVEFNQSAzMzYgIAotCQkJCUpBUEFOCi0KLTAwLUUwLUI1ICAgKGhleCkJCUFSREVOVCBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDBFMEI1ICAgICAoYmFzZSAxNikJCUFSREVOVCBDT01NVU5JQ0FUSU9OUyBDT1JQLgotCQkJCTM4MDEgWkFOS0VSIFJPQUQsICBTdWl0ZSBBCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUI2ICAgKGhleCkJCUVudHJhZGEgTmV0d29ya3MKLTAwRTBCNiAgICAgKGJhc2UgMTYpCQlFbnRyYWRhIE5ldHdvcmtzCi0JCQkJOTAyMCBKVU5DVElPTiBEUklWRQotCQkJCUFOTkFQT0xJUyBKVU5DVElPTiBNRCAyMDcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQjcgICAoaGV4KQkJUEkgR1JPVVAsIExURC4KLTAwRTBCNyAgICAgKGJhc2UgMTYpCQlQSSBHUk9VUCwgTFRELgotCQkJCU1JTFRPTiBIQUxMLCBDSFVSQ0ggTEFORQotCQkJCU1JTFRPTiwgQ0FNQlJJREdFIENCQSA2QUIgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUUwLUI4ICAgKGhleCkJCUdBVEVXQVkgMjAwMAotMDBFMEI4ICAgICAoYmFzZSAxNikJCUdBVEVXQVkgMjAwMAotCQkJCTYxMCBHQVRFV0FZIERSSVZFCi0JCQkJTi4gU0lPVVggQ0lUWSBTRCA1NzA0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQjkgICAoaGV4KQkJQllBUyBTWVNURU1TCi0wMEUwQjkgICAgIChiYXNlIDE2KQkJQllBUyBTWVNURU1TCi0JCQkJMjI1MCBNT05ST0UgU1RSRUVULCAgIzM3MQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CQSAgIChoZXgpCQlCRVJHSE9GIEFVVE9NQVRJT05TVEVDSE5JSyBHbWJICi0wMEUwQkEgICAgIChiYXNlIDE2KQkJQkVSR0hPRiBBVVRPTUFUSU9OU1RFQ0hOSUsgR21iSAotCQkJCUhBUlJFVCBTVFJBU1NFIDEKLQkJCQlEIDcyODAwIEVOSU5HRU4gIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtQkIgICAoaGV4KQkJTkJYIENPUlBPUkFUSU9OCi0wMEUwQkIgICAgIChiYXNlIDE2KQkJTkJYIENPUlBPUkFUSU9OCi0JCQkJMTAwIEJSSUNLU1RPTkUgU1FVQVJFCi0JCQkJQU5ET1ZFUiBNQSAwMTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQkMgICAoaGV4KQkJU1lNT04gQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRTBCQyAgICAgKGJhc2UgMTYpCQlTWU1PTiBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTEwNzAxIENPUlBPUkFURSBEUi4tU1RFLiAjMjkwCi0JCQkJU1RBRkZPUkQgVFggNzc0NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUJEICAgKGhleCkJCUlOVEVSRkFDRSBTWVNURU1TLCBJTkMuCi0wMEUwQkQgICAgIChiYXNlIDE2KQkJSU5URVJGQUNFIFNZU1RFTVMsIElOQy4KLQkJCQk1ODU1IElOVEVSRkFDRSBEUklWRQotCQkJCUFOTiBBUkJPUiBNSSA0ODEwMy05NTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CRSAgIChoZXgpCQlHRU5ST0NPIElOVEVSTkFUSU9OQUwsIElOQy4KLTAwRTBCRSAgICAgKGJhc2UgMTYpCQlHRU5ST0NPIElOVEVSTkFUSU9OQUwsIElOQy4KLQkJCQkyNTUgRU5ERVJTIENPVVJUCi0JCQkJU0xJTkdFUiBXSSA1MzA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQkYgICAoaGV4KQkJVE9SUkVOVCBORVRXT1JLSU5HIFRFQ0hOT0xPR0lFUyBDT1JQLgotMDBFMEJGICAgICAoYmFzZSAxNikJCVRPUlJFTlQgTkVUV09SS0lORyBURUNITk9MT0dJRVMgQ09SUC4KLQkJCQk4MTgxIFBST0ZFU1NJT05BTCBQTEFDRQotCQkJCVNVSVRFICMxNjAKLQkJCQlMQU5ET1ZFUiBNRCAyMDc4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQzAgICAoaGV4KQkJU0VJV0EgRUxFQ1RSSUMgTUZHLiBDTy4sIExURC4KLTAwRTBDMCAgICAgKGJhc2UgMTYpCQlTRUlXQSBFTEVDVFJJQyBNRkcuIENPLiwgTFRELgotCQkJCTg2IFRBUkFEQSBTSElOLUlLRSwKLQkJCQlKT1lPLAotCQkJCUtZT1RPIFBSRUZFQ1RVUkUgIAotCQkJCUpBUEFOCi0KLTAwLUUwLUMxICAgKGhleCkJCU1FTU9SRVggVEVMRVggSkFQQU4sIExURC4KLTAwRTBDMSAgICAgKGJhc2UgMTYpCQlNRU1PUkVYIFRFTEVYIEpBUEFOLCBMVEQuCi0JCQkJWUFFU1VHVUNISSBLQUlLQU4sIDEtNy0yMAotCQkJCVlBRVNVLCBDSFVPLUtVCi0JCQkJVE9LWU8gMTAzICAKLQkJCQlKQVBBTgotCi0wMC1FMC1DMiAgIChoZXgpCQlORUNTWSBTLnAuQS4KLTAwRTBDMiAgICAgKGJhc2UgMTYpCQlORUNTWSBTLnAuQS4KLQkJCQlWSUEgTElTQk9OQSAyOAotCQkJCTM1MDIwIFBBRE9WQSAgCi0JCQkJSVRBTFkKLQotMDAtRTAtQzMgICAoaGV4KQkJU0FLQUkgU1lTVEVNIERFVkVMT1BNRU5UIENPUlAuCi0wMEUwQzMgICAgIChiYXNlIDE2KQkJU0FLQUkgU1lTVEVNIERFVkVMT1BNRU5UIENPUlAuCi0JCQkJUE9SVFVTIENFTlRFUiBCTEQuLCA0LTQ1LTEKLQkJCQlFQklTVUpJTUEtQ0hPLCAgU0FLQUktQ0lUWQotCQkJCU9TQUtBLUZVLCA1OTAgIAotCQkJCUpBUEFOCi0KLTAwLUUwLUM0ICAgKGhleCkJCUhPUk5FUiBFTEVDVFJJQywgSU5DLgotMDBFMEM0ICAgICAoYmFzZSAxNikJCUhPUk5FUiBFTEVDVFJJQywgSU5DLgotCQkJCTE1MjEgRS4gV0FTSElOR1RPTiBTVC4KLQkJCQlJTkRJQU5BUE9MSVMgSU4gNDYyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUM1ICAgKGhleCkJCUJDT00gRUxFQ1RST05JQ1MgSU5DLgotMDBFMEM1ICAgICAoYmFzZSAxNikJCUJDT00gRUxFQ1RST05JQ1MgSU5DLgotCQkJCTggRkwsIE5PLiA2NCwgQU4gSE8gUk9BRCwgU0VDLiAyCi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLUM2ICAgKGhleCkJCUxJTksySVQsIEwuTC5DLgotMDBFMEM2ICAgICAoYmFzZSAxNikJCUxJTksySVQsIEwuTC5DLgotCQkJCTQyNTYgQkVDSyBBVkVOVUUKLQkJCQlTVFVESU8gQ0lUWSBDQSA5MTYwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQzcgICAoaGV4KQkJRVVST1RFQ0ggU1JMCi0wMEUwQzcgICAgIChiYXNlIDE2KQkJRVVST1RFQ0ggU1JMCi0JCQkJVklBIEpBQ09QTyBMSU5VU1NJTyAxCi0JCQkJMzMwMzAgQU1BUk9PIChVRCkgIAotCQkJCUlUQUxZCi0KLTAwLUUwLUM4ICAgKGhleCkJCVZJUlRVQUwgQUNDRVNTLCBMVEQuCi0wMEUwQzggICAgIChiYXNlIDE2KQkJVklSVFVBTCBBQ0NFU1MsIExURC4KLQkJCQlXT09EU0lERSBIT1VTRSwgV0lOS0ZJRUxELAotCQkJCVdJTkRTT1IsIEJFUktTSElSRSBTTDQgMkRYIEVOR0xBTkQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtQzkgICAoaGV4KQkJQXV0b21hdGVkTG9naWMgQ29ycG9yYXRpb24KLTAwRTBDOSAgICAgKGJhc2UgMTYpCQlBdXRvbWF0ZWRMb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTExNTAgUk9CRVJUUyBCT1VMRVZBUkQKLQkJCQlLRU5ORVNBVyBHQSAzMDE0NC0zNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1DQSAgIChoZXgpCQlCRVNUIERBVEEgUFJPRFVDVFMKLTAwRTBDQSAgICAgKGJhc2UgMTYpCQlCRVNUIERBVEEgUFJPRFVDVFMKLQkJCQkyMTgwMCBOT1JESE9GRiBTVFJFRVQKLQkJCQlDSEFUU1dPUlRIIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1DQiAgIChoZXgpCQlSRVNPTiwgSU5DLgotMDBFMENCICAgICAoYmFzZSAxNikJCVJFU09OLCBJTkMuCi0JCQkJMzAwIExPUEVaIFJPQUQKLQkJCQlHT0xFVEEgQ0EgOTMxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUNDICAgKGhleCkJCUhFUk8gU1lTVEVNUywgTFRELgotMDBFMENDICAgICAoYmFzZSAxNikJCUhFUk8gU1lTVEVNUywgTFRELgotCQkJCVRIRSBCQVJORVMsIENPT01CRUxBTkRTIExBTkUsCi0JCQkJQURETEVTVE9ORSwgV0VZQlJJREdFCi0JCQkJU1VSUkVZIEtUMTUgMUhZIEVuZ2xhbmQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtQ0QgICAoaGV4KQkJU0VOU0lTIENPUlBPUkFUSU9OCi0wMEUwQ0QgICAgIChiYXNlIDE2KQkJU0VOU0lTIENPUlBPUkFUSU9OCi0JCQkJNTc5MyBXSURFV0FURVJTIFBBUktXQVkKLQkJCQlERVdJVFQgTlkgMTMyMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUNFICAgKGhleCkJCUFSTgotMDBFMENFICAgICAoYmFzZSAxNikJCUFSTgotCQkJCTUxLCBSVUUgR0FTVE9OIExBVVJJQVUKLQkJCQlGLTkzNTEyIE1PTlRSRVVJTCBDRURFWCAgCi0JCQkJRlJBTkNFCi0KLTAwLUUwLUNGICAgKGhleCkJCUlOVEVHUkFURUQgREVWSUNFIFRFQ0hOT0xPR1ksIElOQy4KLTAwRTBDRiAgICAgKGJhc2UgMTYpCQlJTlRFR1JBVEVEIERFVklDRSBURUNITk9MT0dZLCBJTkMuCi0JCQkJNjAyNCBTaWx2ZXIgQ3JlZWsgVmFsbGV5IFJvYWQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRDAgICAoaGV4KQkJTkVUU1BFRUQsIElOQy4KLTAwRTBEMCAgICAgKGJhc2UgMTYpCQlORVRTUEVFRCwgSU5DLgotCQkJCTEyMzAzIFRFQ0hOT0xPR1kgQkxWRC4KLQkJCQlBVVNUSU4gVFggNzg3MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUQxICAgKGhleCkJCVRFTFNJUyBMSU1JVEVECi0wMEUwRDEgICAgIChiYXNlIDE2KQkJVEVMU0lTIExJTUlURUQKLQkJCQkxNiBCQVJORVMgV0FMTEFDRSBST0FECi0JCQkJRkFSRUhBTSwgSEFNUFNISVJFIFBPMTUgNVRUIEVOR0xBTkQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtRDIgICAoaGV4KQkJVkVSU0FORVQgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRTBEMiAgICAgKGJhc2UgMTYpCQlWRVJTQU5FVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTYyOCBOLiBESUFNT05EIEJBUiBCTFZELgotCQkJCURJQU1PTkQgQkFSIENBIDkxNzY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1EMyAgIChoZXgpCQlEQVRFTlRFQ0hOSUsgR21iSAotMDBFMEQzICAgICAoYmFzZSAxNikJCURBVEVOVEVDSE5JSyBHbWJICi0JCQkJVEhFUkVTSUFOVU1HQVNTRSAxMQotCQkJCUEtMTA0MCBXSUVOICAKLQkJCQlBVVNUUklBCi0KLTAwLUUwLUQ0ICAgKGhleCkJCUVYQ0VMTEVOVCBDT01QVVRFUgotMDBFMEQ0ICAgICAoYmFzZSAxNikJCUVYQ0VMTEVOVCBDT01QVVRFUgotCQkJCTU1MSwgTS5LLk4uIFJPQUQKLQkJCQlBTEFORFVSLCBDSEVOTkFJIDYwMDAxNiAgCi0JCQkJSU5ESUEKLQotMDAtRTAtRDUgICAoaGV4KQkJRW11bGV4IENvcnBvcmF0aW9uCi0wMEUwRDUgICAgIChiYXNlIDE2KQkJRW11bGV4IENvcnBvcmF0aW9uCi0JCQkJMzMzMyBTdXNhbiBTdHJlZXQKLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1ENiAgIChoZXgpCQlDT01QVVRFUiAmIENPTU1VTklDQVRJT04gUkVTRUFSQ0ggTEFCLgotMDBFMEQ2ICAgICAoYmFzZSAxNikJCUNPTVBVVEVSICYgQ09NTVVOSUNBVElPTiBSRVNFQVJDSCBMQUIuCi0JCQkJCi0JCQkJMTk1IFNFQy40LCBDSFVORyBIU0lORyBSRAotCQkJCUNIVVRVTkcsIEhTSU5DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtRDcgICAoaGV4KQkJU1VOU0hJTkUgRUxFQ1RST05JQ1MsIElOQy4KLTAwRTBENyAgICAgKGJhc2UgMTYpCQlTVU5TSElORSBFTEVDVFJPTklDUywgSU5DLgotCQkJCTQ2NTYwIEZSRU1PTlQgQkxWRC4gLVNURS4gIzExMwotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUQ4ICAgKGhleCkJCUxBTkJpdCBDb21wdXRlciwgSW5jLgotMDBFMEQ4ICAgICAoYmFzZSAxNikJCUxBTkJpdCBDb21wdXRlciwgSW5jLgotCQkJCTEyRiwgNTUyIENIVU5HIEhTSUFPIEUuLCBSRC4KLQkJCQlTRUMuIDUsIFRBSVBFSSAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLUQ5ICAgKGhleCkJCVRBWk1PIENPLiwgTFRELgotMDBFMEQ5ICAgICAoYmFzZSAxNikJCVRBWk1PIENPLiwgTFRELgotCQkJCTYxODYgS0lOT0tPLCBJQkFSQS1TSEkKLQkJCQlPS0FZQU1BIDcxNSAgCi0JCQkJSkFQQU4KLQotMDAtRTAtREEgICAoaGV4KQkJQWxjYXRlbCBOb3J0aCBBbWVyaWNhIEVTRAotMDBFMERBICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTm9ydGggQW1lcmljYSBFU0QKLQkJCQkyNjgwMSBXZXN0IEFnb3VyYSBSb2FkCi0JCQkJQ2FsYWJhc2FzIENBIDkxMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1EQiAgIChoZXgpCQlWaWFWaWRlbyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDBFMERCICAgICAoYmFzZSAxNikJCVZpYVZpZGVvIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJODkwMCBTSE9BTCBDUkVFSyBCTFZELgotCQkJCUJMREcuICMzMDAKLQkJCQlBVVNUSU4gVFggNzg3NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLURDICAgKGhleCkJCU5FWFdBUkUgQ09SUC4KLTAwRTBEQyAgICAgKGJhc2UgMTYpCQlORVhXQVJFIENPUlAuCi0JCQkJODI1IFNURVdBUlQgRFIuLCAgU1RFICM0Ci0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1ERCAgIChoZXgpCQlaRU5JVEggRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04KLTAwRTBERCAgICAgKGJhc2UgMTYpCQlaRU5JVEggRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04KLQkJCQkxMDAwIE1JTFdBVUtFRSBBVkVOVUUKLQkJCQlHTEVOVklFVyBJTCA2MDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtREUgICAoaGV4KQkJREFUQVggTlYKLTAwRTBERSAgICAgKGJhc2UgMTYpCQlEQVRBWCBOVgotCQkJCVJJTkdMQUFOIDUxCi0JCQkJQi0yNjAwIEJFUkNIRU0gIAotCQkJCUJFTEdJVU0KLQotMDAtRTAtREYgICAoaGV4KQkJS0VZTUlMRSBHbWJICi0wMEUwREYgICAgIChiYXNlIDE2KQkJS0VZTUlMRSBHbWJICi0JCQkJV29obGVuYmVyZ3N0ci4gMwotCQkJCTMwMTc5IEhhbm5vdmVyIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtRTAgICAoaGV4KQkJU0kgRUxFQ1RST05JQ1MsIExURC4KLTAwRTBFMCAgICAgKGJhc2UgMTYpCQlTSSBFTEVDVFJPTklDUywgTFRELgotCQkJCTI4LTE2LCBTSElNT01BUlVLTyAyLUNIT01FLAotCQkJCVRPS1lPIDE0NiAgCi0JCQkJSkFQQU4KLQotMDAtRTAtRTEgICAoaGV4KQkJRzIgTkVUV09SS1MsIElOQy4KLTAwRTBFMSAgICAgKGJhc2UgMTYpCQlHMiBORVRXT1JLUywgSU5DLgotCQkJCTE0MiBTTy4gU0FOVEEgQ1JVWiBBVkUuCi0JCQkJTE9TIEdBVE9TIENBIDk1MDMwLTY3MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUUyICAgKGhleCkJCUlOTk9WQSBDT1JQLgotMDBFMEUyICAgICAoYmFzZSAxNikJCUlOTk9WQSBDT1JQLgotCQkJCTMzMjUgU09VVEggMTE2VEggU1RSRUVUCi0JCQkJU0VBVFRMRSBXQSA5ODE2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRTMgICAoaGV4KQkJU0stRUxFS1RST05JSyBHbWJICi0wMEUwRTMgICAgIChiYXNlIDE2KQkJU0stRUxFS1RST05JSyBHbWJICi0JCQkJSEVNTUVMUkFUSEVSV0VHIDIwMQotCQkJCTUxMzc3IExFVkVSS1VTRU4gIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtRTQgICAoaGV4KQkJRkFOVUMgUk9CT1RJQ1MgTk9SVEggQU1FUklDQSwgSW5jLgotMDBFMEU0ICAgICAoYmFzZSAxNikJCUZBTlVDIFJPQk9USUNTIE5PUlRIIEFNRVJJQ0EsIEluYy4KLQkJCQkzOTAwIFcuIEhBTUxJTiBSRC4KLQkJCQlST0NIRVNURVIgSElMTFMgTUkgNDgzMDktMzI1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRTUgICAoaGV4KQkJQ0lOQ08gTkVUV09SS1MsIElOQy4KLTAwRTBFNSAgICAgKGJhc2UgMTYpCQlDSU5DTyBORVRXT1JLUywgSU5DLgotCQkJCTY2MDEgS09MTCBDRU5URVIgUEFSSyBXQVkKLQkJCQlTVUlURSAjMTQwCi0JCQkJUExFQVNBTlRPTiBDQSA5NDU2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRTYgICAoaGV4KQkJSU5DQUEgREFUQUNPTSBCLlYuCi0wMEUwRTYgICAgIChiYXNlIDE2KQkJSU5DQUEgREFUQUNPTSBCLlYuCi0JCQkJUC5PLiBCT1ggMjExCi0JCQkJNzMwMCBBRSBBUEVMRE9PUk4gIAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLUUwLUU3ICAgKGhleCkJCVJBWVRIRU9OIEUtU1lTVEVNUywgSU5DLgotMDBFMEU3ICAgICAoYmFzZSAxNikJCVJBWVRIRU9OIEUtU1lTVEVNUywgSU5DLgotCQkJCTEzMDEgRS4gQ09MTElOUwotCQkJCVJJQ0hBUkRTT04gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUU4ICAgKGhleCkJCUdSRVRBQ09ERVIgRGF0YSBTeXN0ZW1zIEFHCi0wMEUwRTggICAgIChiYXNlIDE2KQkJR1JFVEFDT0RFUiBEYXRhIFN5c3RlbXMgQUcKLQkJCQlBTFRIQVJEU1RSQVNTRSAgMTUwCi0JCQkJQ0gtODEwNSBSRUdFTlNET1JGICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC1FMC1FOSAgIChoZXgpCQlEQVRBIExBQlMsIElOQy4KLTAwRTBFOSAgICAgKGJhc2UgMTYpCQlEQVRBIExBQlMsIElOQy4KLQkJCQk0NDQgTk9SVEggRlJFREVSSUNLIEFWRS4KLQkJCQlTVUlURSAjMjQwCi0JCQkJR0FJVEhFUlNCVVJHIE1EIDIwODc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1FQSAgIChoZXgpCQlJTk5PVkFUIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEUwRUEgICAgIChiYXNlIDE2KQkJSU5OT1ZBVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTEyNTcgTi4gUExBTk8gUk9BRAotCQkJCVJJQ0hBUkRTT04gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUVCICAgKGhleCkJCURJR0lDT00gU1lTVEVNUywgSU5DT1JQT1JBVEVECi0wMEUwRUIgICAgIChiYXNlIDE2KQkJRElHSUNPTSBTWVNURU1TLCBJTkNPUlBPUkFURUQKLQkJCQkxODggVE9QQVogU1RSRUVUCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUVDICAgKGhleCkJCUNFTEVTVElDQSBJTkMuCi0wMEUwRUMgICAgIChiYXNlIDE2KQkJQ0VMRVNUSUNBIElOQy4KLQkJCQk4NDQgRE9OIE1JTExTIFJPQUQKLQkJCQlOT1JUSCBZT1JLICBPTlRBUklPIE0zQyAxVjcgIAotCQkJCUNBTkFEQQotCi0wMC1FMC1FRCAgIChoZXgpCQlTSUxJQ09NLCBMVEQuCi0wMEUwRUQgICAgIChiYXNlIDE2KQkJU0lMSUNPTSwgTFRELgotCQkJCTggSEFOQUdFUiBTVC4KLQkJCQlQLk8uIEJPWCAyMTY0Ci0JCQkJS0ZBUi1TQVZBIDQ0MDAwICAKLQkJCQlJU1JBRUwKLQotMDAtRTAtRUUgICAoaGV4KQkJTUFSRUwgSEYKLTAwRTBFRSAgICAgKGJhc2UgMTYpCQlNQVJFTCBIRgotCQkJCUF1c3R1cmhyYXVuIDkKLQkJCQlHYXJkYWJhZXIgIDIxMAotCQkJCUlDRUxBTkQKLQotMDAtRTAtRUYgICAoaGV4KQkJRElPTkVYCi0wMEUwRUYgICAgIChiYXNlIDE2KQkJRElPTkVYCi0JCQkJUE8gQk9YIDM2MDMKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODgtMzYwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRjAgICAoaGV4KQkJQUJMRVIgVEVDSE5PTE9HWSwgSU5DLgotMDBFMEYwICAgICAoYmFzZSAxNikJCUFCTEVSIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk0RiwgTk8uIDU0ICBTRUMuIDQKLQkJCQlNSU4tU0hFTkcgRS4gUkQuCi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLUYxICAgKGhleCkJCVRIQVQgQ09SUE9SQVRJT04KLTAwRTBGMSAgICAgKGJhc2UgMTYpCQlUSEFUIENPUlBPUkFUSU9OCi0JCQkJNzM0IEZPUkVTVCBTVFJFRVQKLQkJCQlNQVJMQk9ST1VHSCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRjIgICAoaGV4KQkJQVJMT1RUTyBDT01ORVQsIElOQy4KLTAwRTBGMiAgICAgKGJhc2UgMTYpCQlBUkxPVFRPIENPTU5FVCwgSU5DLgotCQkJCTdGLTQsNTUsVFVORy1LVUFORyBST0FECi0JCQkJSFNJTi1DSFUsIDMwMCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1FMC1GMyAgIChoZXgpCQlXZWJTcHJpbnQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwRTBGMyAgICAgKGJhc2UgMTYpCQlXZWJTcHJpbnQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkzMDI2IFNDT1RUIEJMVkQuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUY0ICAgKGhleCkJCUlOU0lERSBUZWNobm9sb2d5IEEvUwotMDBFMEY0ICAgICAoYmFzZSAxNikJCUlOU0lERSBUZWNobm9sb2d5IEEvUwotCQkJCVZFTkxJR0hFRFNWRUogNgotCQkJCURLLTI5NzAgSE9FUlNIT0xNICAKLQkJCQlERU5NQVJLCi0KLTAwLUUwLUY1ICAgKGhleCkJCVRFTEVTIEFHCi0wMEUwRjUgICAgIChiYXNlIDE2KQkJVEVMRVMgQUcKLQkJCQlET1ZFU1RSLiAyLTQKLQkJCQkxMDU4NyBCRVJMSU4gIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtRjYgICAoaGV4KQkJREVDSVNJT04gRVVST1BFCi0wMEUwRjYgICAgIChiYXNlIDE2KQkJREVDSVNJT04gRVVST1BFCi0JCQkJMywgcnVlIGRlIExhdHRyZSBkZSBUYXNzaWdueQotCQkJCTg1MTcwIFNBSU5UIERFTklTIExBIENIRVZBU1NFICAKLQkJCQlGUkFOQ0UKLQotMDAtRTAtRjcgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBFMEY3ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRjggICAoaGV4KQkJRElDTkEgQ09OVFJPTCBBQgotMDBFMEY4ICAgICAoYmFzZSAxNikJCURJQ05BIENPTlRST0wgQUIKLQkJCQlTVEVOWVhFR0FUQU4gMjEgQwotCQkJCTIxMyA3NiBNQUxNT0UgIAotCQkJCVNXRURFTgotCi0wMC1FMC1GOSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwRjkgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1GQSAgIChoZXgpCQlUUkwgVEVDSE5PTE9HWSwgTFRELgotMDBFMEZBICAgICAoYmFzZSAxNikJCVRSTCBURUNITk9MT0dZLCBMVEQuCi0JCQkJU0hBTk5PTiBXQVksIEFTSENIVVJDSCwKLQkJCQlURVdLRVNCVVJZLCBHTE9TLiBHTDIwIDhORCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtRkIgICAoaGV4KQkJTEVJR0hUUk9OSVgsIElOQy4KLTAwRTBGQiAgICAgKGJhc2UgMTYpCQlMRUlHSFRST05JWCwgSU5DLgotCQkJCTIzMzAgSkFSQ08gRFIuCi0JCQkJSE9MVCBNSSA0ODg0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRkMgICAoaGV4KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLTAwRTBGQyAgICAgKGJhc2UgMTYpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCUtFRkEgUk9BRCwgU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQlOQU5TSEFOIERJU1RSSUNULAotCQkJCVNIRU5aSEVOIDUxODA1NyAgCi0JCQkJQ0hJTkEKLQotMDAtRTAtRkQgICAoaGV4KQkJQS1UUkVORCBURUNITk9MT0dZIENPLiwgTFRELgotMDBFMEZEICAgICAoYmFzZSAxNikJCUEtVFJFTkQgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQkxMEYsIE5PLiA3NSwgSFNJTiBUQUkgV1UgUkQuLAotCQkJCVNFQy4gMSwgSFNJIENISUgsCi0JCQkJVEFJUEVJIEhTSUVOIDIyMSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1FMC1GRSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwRkUgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1GRiAgIChoZXgpCQlTRUNVUklUWSBEWU5BTUlDUyBURUNITk9MT0dJRVMsIEluYy4KLTAwRTBGRiAgICAgKGJhc2UgMTYpCQlTRUNVUklUWSBEWU5BTUlDUyBURUNITk9MT0dJRVMsIEluYy4KLQkJCQkyMCBDUk9TQlkgRFJJVkUKLQkJCQlCRURGT1JEIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FNi1EMyAgIChoZXgpCQlOSVhET1JGIENPTVBVVEVSIENPUlAuCi0wMEU2RDMgICAgIChiYXNlIDE2KQkJTklYRE9SRiBDT01QVVRFUiBDT1JQLgotCQkJCTI1MjAgTUlTU0lPTiBDT0xMRUdFIFJPQUQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRjgtNjAgICAoaGV4KQkJUFQuIFBhbmdndW5nIEVsZWN0cmljIENpdHJhYnVhbmEKLTAwRjg2MCAgICAgKGJhc2UgMTYpCQlQVC4gUGFuZ2d1bmcgRWxlY3RyaWMgQ2l0cmFidWFuYQotCQkJCUpsLiBSYXlhIFdhcnUgbm8uIDEKLQkJCQlTaWRvYXJqbyBKYXdhIFRpbXVyIDYxMjU2Ci0JCQkJSU5ET05FU0lBCi0KLTAwLUZDLTcwICAgKGhleCkJCUludHJlcGlkIENvbnRyb2wgU3lzdGVtcywgSW5jLgotMDBGQzcwICAgICAoYmFzZSAxNikJCUludHJlcGlkIENvbnRyb2wgU3lzdGVtcywgSW5jLgotCQkJCTU3MDAgMTggTWlsZSBSZC4KLQkJCQlTdGVybGluZyBIZWlnaHRzIE1JIDQ4MzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi0wNy0wMSAgIChoZXgpCQlSQUNBTC1EQVRBQ09NCi0wMjA3MDEgICAgIChiYXNlIDE2KQkJUkFDQUwtREFUQUNPTQotCQkJCUxBTiBJTlRFUk5FVFdPUktJTkcgRElWSVNJT04KLQkJCQkxNTUgU1dBTlNPTiBST0FECi0JCQkJQk9YQk9ST1VHSCBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDItMUMtN0MgICAoaGV4KQkJUEVSUSBTWVNURU1TIENPUlBPUkFUSU9OCi0wMjFDN0MgICAgIChiYXNlIDE2KQkJUEVSUSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMjYwMCBMSUJFUlRZIEFWRU5VRQotCQkJCVAuTy4gQk9YIDI2MDAKLQkJCQlQSVRUU0JVUkdIIFBBIDE1MjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi02MC04NiAgIChoZXgpCQlMT0dJQyBSRVBMQUNFTUVOVCBURUNILiBMVEQuCi0wMjYwODYgICAgIChiYXNlIDE2KQkJTE9HSUMgUkVQTEFDRU1FTlQgVEVDSC4gTFRELgotCQkJCTE0IEFSS1dSSUdIVCBST0FECi0JCQkJUkVBRElORyBCRVJLUyBSRzJPTFMKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAyLTYwLThDICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAyNjA4QyAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJMjA4MSBOLiBTSE9STElORSBCTFZELgotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAyLTcwLTAxICAgKGhleCkJCVJBQ0FMLURBVEFDT00KLTAyNzAwMSAgICAgKGJhc2UgMTYpCQlSQUNBTC1EQVRBQ09NCi0JCQkJTEFOIElOVEVSTkVUV09SS0lORyBESVZJU0lPTgotCQkJCTE1NSBTV0FOU09OIFJPQUQKLQkJCQlCT1hCT1JPVUdIIE1BIDAxNzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi03MC1CMCAgIChoZXgpCQlNL0EtQ09NIElOQy4gQ09NUEFOSUVTCi0wMjcwQjAgICAgIChiYXNlIDE2KQkJTS9BLUNPTSBJTkMuIENPTVBBTklFUwotCQkJCTExNzE3IEVYUExPUkFUSU9OIExBTkUKLQkJCQlHRVJNQU5UT1dOIE1EIDIwNzY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi03MC1CMyAgIChoZXgpCQlEQVRBIFJFQ0FMTCBMVEQKLTAyNzBCMyAgICAgKGJhc2UgMTYpCQlEQVRBIFJFQ0FMTCBMVEQKLQkJCQlTT05ERVMgUExBQ0UKLQkJCQlET1JLSU5HIFNVUlJFWSBSSDQgM0VGCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMi05RC04RSAgIChoZXgpCQlDQVJESUFDIFJFQ09SREVSUyBJTkMuCi0wMjlEOEUgICAgIChiYXNlIDE2KQkJQ0FSRElBQyBSRUNPUkRFUlMgSU5DLgotCQkJCTM0IFNDQVJCT1JPIFJECi0JCQkJTE9ORE9OIE40IDRMIFUKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAyLUFBLTNDICAgKGhleCkJCU9MSVZFVFRJIFRFTEVDT01NIFNQQSAoT0xURUNPKQotMDJBQTNDICAgICAoYmFzZSAxNikJCU9MSVZFVFRJIFRFTEVDT01NIFNQQSAoT0xURUNPKQotCQkJCTIwMzAwIFNURVZFTlMgIENSRUVLIEJMVkQuCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi1CQi0wMSAgIChoZXgpCQlPQ1RPVEhPUlBFIENPUlAuCi0wMkJCMDEgICAgIChiYXNlIDE2KQkJT0NUT1RIT1JQRSBDT1JQLgotCQkJCTI4NSBXRVNUIEdSRUVOIFNUUkVFVAotCQkJCVBBU0FERU5BIENBIDkxMTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi1DMC04QyAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMkMwOEMgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQkFZRlJPTlQgUExBWkEKLQkJCQlQLk8uIEJPWCA1ODE0NQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi1DRi0xQyAgIChoZXgpCQlDT01NVU5JQ0FUSU9OIE1BQ0hJTkVSWSBDT1JQLgotMDJDRjFDICAgICAoYmFzZSAxNikJCUNPTU1VTklDQVRJT04gTUFDSElORVJZIENPUlAuCi0JCQkJMTIyNiBBTkFDQVBBCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDItRTYtRDMgICAoaGV4KQkJTklYRE9SRiBDT01QVVRFUiBDT1JQT1JBVElPTgotMDJFNkQzICAgICAoYmFzZSAxNikJCU5JWERPUkYgQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQlOSVhET1JGIFRFQ0hOT0xPR1kgQ0VOVEVSCi0JCQkJMjUyMCBNSVNTSU9OIENPTExFR0UgQkxWRAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC0wQS04MyAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudAotMDQwQTgzICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50Ci0JCQkJVmlhIFRyZW50bywgMzAKLQkJCQlWaW1lbnJjYXRlIE1CIDIwNTkKLQkJCQlJVEFMWQotCi0wNC0wQS1FMCAgIChoZXgpCQlYTUlUIEFHIENPTVBVVEVSIE5FVFdPUktTCi0wNDBBRTAgICAgIChiYXNlIDE2KQkJWE1JVCBBRyBDT01QVVRFUiBORVRXT1JLUwotCQkJCTExIEFWRU5VRSBERSBCQVVNRVRURVMKLQkJCQkxMDIwIFJFTkFOUwotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDQtMEMtQ0UgICAoaGV4KQkJQXBwbGUsIEluYy4KLTA0MENDRSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgaW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtMEUtQzIgICAoaGV4KQkJVmlld1NvbmljIE1vYmlsZSBDaGluYSBMaW1pdGVkCi0wNDBFQzIgICAgIChiYXNlIDE2KQkJVmlld1NvbmljIE1vYmlsZSBDaGluYSBMaW1pdGVkCi0JCQkJUm9vbSA2MDEsIFRoZSBHYXRlIFRvd2VyIEIsIE5vLjE5LCBaaG9uZ2d1YW5jdW4gU3RyZWV0LCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDQtMTgtMEYgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wNDE4MEYgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTA0LTE4LUI2ICAgKGhleCkJCVBSSVZBVEUKLTA0MThCNiAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDQtMUQtMTAgICAoaGV4KQkJRHJlYW0gV2FyZSBJbmMuCi0wNDFEMTAgICAgIChiYXNlIDE2KQkJRHJlYW0gV2FyZSBJbmMuCi0JCQkJNS0yMy03IE1hc3VnYXRhLCBUYW1hLWt1LAotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxNC0wMDMyCi0JCQkJSkFQQU4KLQotMDQtMUUtNjQgICAoaGV4KQkJQXBwbGUsIEluYwotMDQxRTY0ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LTIwLTlBICAgKGhleCkJCVBhbmFzb25pYyBBVkMgTmV0d29ya3MgQ29tcGFueQotMDQyMDlBICAgICAoYmFzZSAxNikJCVBhbmFzb25pYyBBVkMgTmV0d29ya3MgQ29tcGFueQotCQkJCTEtMTUgTWF0c3VvLWNobwotCQkJCUthZG9tYSBDaXR5IE9zYWthIDU3MS04NTA0Ci0JCQkJSkFQQU4KLQotMDQtMjItMzQgICAoaGV4KQkJV2lyZWxlc3MgU3RhbmRhcmQgRXh0ZW5zaW9ucwotMDQyMjM0ICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIFN0YW5kYXJkIEV4dGVuc2lvbnMKLQkJCQkxMzIyIENyb3NzbWFuIGF2ZW51ZQotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC0yNi0wNSAgIChoZXgpCQlHRlIgR2VzZWxsc2NoYWZ0IGZpP29lciBSZWdlbHVuZ3N0ZWNobmlrIHVuZCBFbmVyZ2llZWluc3BhcnVuZyBtYkgKLTA0MjYwNSAgICAgKGJhc2UgMTYpCQlHRlIgR2VzZWxsc2NoYWZ0IGZpP29lciBSZWdlbHVuZ3N0ZWNobmlrIHVuZCBFbmVyZ2llZWluc3BhcnVuZyBtYkgKLQkJCQlLYXBlbGxlbndlZyA0MgotCQkJCVZlcmwgIDMzNDE1Ci0JCQkJR0VSTUFOWQotCi0wNC0yQi1CQiAgIChoZXgpCQlQaWNvQ0VMQSwgSW5jLgotMDQyQkJCICAgICAoYmFzZSAxNikJCVBpY29DRUxBLCBJbmMuCi0JCQkJMy04LTMzLCBNb21vY2hpaGFtYQotCQkJCVNhd2FyYS1rdQotCQkJCUZ1a3Vva2EtY2l0eSBGdWt1b2thIDgxNC0wMDAxCi0JCQkJSkFQQU4KLQotMDQtMkYtNTYgICAoaGV4KQkJQVRPQ1MgKFNoZW56aGVuKSBMVEQKLTA0MkY1NiAgICAgKGJhc2UgMTYpCQlBVE9DUyAoU2hlbnpoZW4pIExURAotCQkJCTQvRi4sIEJ1aWxkaW5nIDEwLCBUb25nZnV5dSBJbmR1c3RyeSBab25lLCAKLQkJCQlTaGVuemhlbiAgCi0JCQkJQ0hJTkEKLQotMDQtMzItRjQgICAoaGV4KQkJUGFydHJvbgotMDQzMkY0ICAgICAoYmFzZSAxNikJCVBhcnRyb24KLQkJCQkyMi02LCBTZW9rd29vLWRvbmcKLQkJCQlId2FzZW9uZy1zaSBHeWVvbmdnaS1kbyA0NDUtMTcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTA0LTM2LTA0ICAgKGhleCkJCUd5ZXlvdW5nIEkmVAotMDQzNjA0ICAgICAoYmFzZSAxNikJCUd5ZXlvdW5nIEkmVAotCQkJCTZGLCBXb29zdW5nIEJsZGcuIDEwMDAtMSwgRGFlY2hpLWRvbmcKLQkJCQlHYW5nbmFtLWd1LAotCQkJCVNlb3VsIDEzNS01MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDQtNDYtNjUgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0wNDQ2NjUgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0JCQkJMS0xMC0xLCBIaWdhc2hpa290YXJpCi0JCQkJTmFnYW9rYWt5by1zaGkgS3lvdG8gNjE3LTg1NTUKLQkJCQlKQVBBTgotCi0wNC00Ri1BQSAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLTA0NEZBQSAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC01NS1DQSAgIChoZXgpCQlCcmlWaWV3IChYaWFtZW4pIENvcnAuCi0wNDU1Q0EgICAgIChiYXNlIDE2KQkJQnJpVmlldyAoWGlhbWVuKSBDb3JwLgotCQkJCU5PLjE5OTggV2VzdCBvZiBGYW5nc2hhbiBSb2FkLFhpYW5nIEFuIEJyYW5jaCxUb3JjaCBIaS10ZWNoIGxuZHVzdHJpYWwgRGV2ZWxvcG1lbnQgWm9uZSwKLQkJCQlYaWFtZW4gY2l0eSBGdWppYW4gUHJvdmluY2UgMzYxMTAyCi0JCQkJQ0hJTkEKLQotMDQtNUQtNTYgICAoaGV4KQkJY2FtdHJvbiBpbmR1c3RyaWFsIGluYy4KLTA0NUQ1NiAgICAgKGJhc2UgMTYpCQljYW10cm9uIGluZHVzdHJpYWwgaW5jLgotCQkJCTVGLCBLdWVtLUFoIEIvRCwgMzEtMywgS2FyYWstZG9uZywgU29uZ3BhLWd1Ci0JCQkJU2VvdWwgIDEzOC04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDQtNzAtQkMgICAoaGV4KQkJR2xvYmFsc3RhciBJbmMuCi0wNDcwQkMgICAgIChiYXNlIDE2KQkJR2xvYmFsc3RhciBJbmMuCi0JCQkJNDYxIFMgTWlscGl0YXMgQmx2ZAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC03NC1BMSAgIChoZXgpCQlBbGlnZXJhIEVxdWlwYW1lbnRvcyBEaWdpdGFpcyBMdGRhCi0wNDc0QTEgICAgIChiYXNlIDE2KQkJQWxpZ2VyYSBFcXVpcGFtZW50b3MgRGlnaXRhaXMgTHRkYQotCQkJCUF2LiBQYXJhIDMzMCAvIDMwMgotCQkJCVBvcnRvIEFsZWdyZSBSUyA5MDI0MC01OTAKLQkJCQlCUkFaSUwKLQotMDQtNzUtRjUgICAoaGV4KQkJQ1NTVAotMDQ3NUY1ICAgICAoYmFzZSAxNikJCUNTU1QKLQkJCQlCdWlsZGluZyA2LCBDU1NUIGluZHVzdHJpYWwgcGFyaywgVG9uZyBmdXl1IEluZHVzdHJpYWwgem9uZQotCQkJCUd1YW5nbWluIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwNwotCQkJCUNISU5BCi0KLTA0LTc2LTZFICAgKGhleCkJCUFMUFMgQ28sLiBMdGQuCi0wNDc2NkUgICAgIChiYXNlIDE2KQkJQUxQUyBDbywuIEx0ZC4KLQkJCQk2LTMtMzYgRnVydWthd2FuYWthemF0bywKLQkJCQlPc2FraSBNaXlhZ2ktcHJlZiA5ODktNjE4MQotCQkJCUpBUEFOCi0KLTA0LThBLTE1ICAgKGhleCkJCUF2YXlhLCBJbmMKLTA0OEExNSAgICAgKGJhc2UgMTYpCQlBdmF5YSwgSW5jCi0JCQkJMjExIE1vdW50IEFpcnkgUm9hZCAKLQkJCQlCYXNraW5nIFJpZGdlIE5KIDA3OTIwLTIzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LTk0LUExICAgKGhleCkJCUNBVENIIFRIRSBXSU5EIElOQwotMDQ5NEExICAgICAoYmFzZSAxNikJCUNBVENIIFRIRSBXSU5EIElOQwotCQkJCTEwNzgxIEpBTUVTIFBBWU5FIENPVVJUCi0JCQkJTUFOQVNTQVMgVkEgMjAxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LTlGLTgxICAgKGhleCkJCVNpbWVuYSwgTExDCi0wNDlGODEgICAgIChiYXNlIDE2KQkJU2ltZW5hLCBMTEMKLQkJCQk0NjAzMCBNYW5la2luIFBsYXphCi0JCQkJc3VpdGUgMTUwCi0JCQkJU3RlcmxpbmcgVmlyZ2luaWEgMjAxNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LUEzLUYzICAgKGhleCkJCUVtaWNvbgotMDRBM0YzICAgICAoYmFzZSAxNikJCUVtaWNvbgotCQkJCXNoZWxrb3Zza29lIHNob3NzZSwgNzcKLQkJCQlNb3Njb3cgIDEwNzI0MQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wNC1CMy1CNiAgIChoZXgpCQlTZWFtYXAgKFVLKSBMdGQKLTA0QjNCNiAgICAgKGJhc2UgMTYpCQlTZWFtYXAgKFVLKSBMdGQKLQkJCQlVbml0IDM0LCBUaGUgTWFsdGluZ3MKLQkJCQlDaGFybHRvbiBFc3RhdGUKLQkJCQlTaGVwdG9uIE1hbGxldCBTb21lcnNldCBCQTQgNVFFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDQtQjQtNjYgICAoaGV4KQkJQlNQIENvLiwgTHRkLgotMDRCNDY2ICAgICAoYmFzZSAxNikJCUJTUCBDby4sIEx0ZC4KLQkJCQkxNjItMTAKLQkJCQlHb25nZGFuIERvbmcKLQkJCQlHdW1pIEd5ZXVuZ3NhbmdidWsgRG8gNzMwLTkwMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wNC1DMC01QiAgIChoZXgpCQlUaWdvIEVuZXJneQotMDRDMDVCICAgICAoYmFzZSAxNikJCVRpZ28gRW5lcmd5Ci0JCQkJMTcwIEtub3dsZXMgRHIKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LUMwLTZGICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTA0QzA2RiAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotMDQtQzUtQTQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDRDNUE0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtQzgtODAgICAoaGV4KQkJU2FtdGVjIEluYwotMDRDODgwICAgICAoYmFzZSAxNikJCVNhbXRlYyBJbmMKLQkJCQk1MjAgUGFyayBFYXN0IEJsdmQKLQkJCQlOZXcgQWxiYW55IElOIDQ3MTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC1ERC00QyAgIChoZXgpCQlJUEJsYXplCi0wNERENEMgICAgIChiYXNlIDE2KQkJSVBCbGF6ZQotCQkJCU9sZHZlamVuIDQKLQkJCQlGcmVkZW5zYm9yZyBESyAzNDgwCi0JCQkJREVOTUFSSwotCi0wNC1FMC1DNCAgIChoZXgpCQlUUklVTVBILUFETEVSIEFHCi0wNEUwQzQgICAgIChiYXNlIDE2KQkJVFJJVU1QSC1BRExFUiBBRwotCQkJCUhVTkRJTkdTVFJBQkUgMTFCCi0JCQkJODUwMCBOVVJOQlVSRyA4MAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTA0LUUxLUM4ICAgKGhleCkJCUlNUyBTb2x1aT9vZWk/b2VlcyBlbSBFbmVyZ2lhIEx0ZGEuCi0wNEUxQzggICAgIChiYXNlIDE2KQkJSU1TIFNvbHVpP29laT9vZWVzIGVtIEVuZXJnaWEgTHRkYS4KLQkJCQlBdi4gQmVybmFyZGlubyBTaWx2ZWlyYSBQYXN0b3JpemEsIDcyMAotCQkJCVBvcnRvIEFsZWdyZSBSUyA5MTE2MC0zMTAKLQkJCQlCUkFaSUwKLQotMDQtRTItRjggICAoaGV4KQkJQUVQIHNybAotMDRFMkY4ICAgICAoYmFzZSAxNikJCUFFUCBzcmwKLQkJCQlWaWEgZGVpIENvbGxpLCAyNDAKLQkJCQlTaWduYSBGaXJlbnplIDUwMDU4Ci0JCQkJSVRBTFkKLQotMDQtRTUtNDggICAoaGV4KQkJQ29oZGEgV2lyZWxlc3MgUHR5IEx0ZAotMDRFNTQ4ICAgICAoYmFzZSAxNikJCUNvaGRhIFdpcmVsZXNzIFB0eSBMdGQKLQkJCQlTdWl0ZSA1IC8gODMgRnVsbGFydG9uIFJvYWQKLQkJCQlLZW50IFRvd24gU291dGggQXVzdHJhbGlhIDUwNjcKLQkJCQlBVVNUUkFMSUEKLQotMDQtRTYtNjIgICAoaGV4KQkJQWNyb25hbWUgSW5jLgotMDRFNjYyICAgICAoYmFzZSAxNikJCUFjcm9uYW1lIEluYy4KLQkJCQk0ODIyIFN0ZXJsaW5nIERyaXZlCi0JCQkJQm91bGRlciBDTyA4MDMwMS0yMzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC1GRS03RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wNEZFN0YgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC1GRi01MSAgIChoZXgpCQlOT1ZBTUVESUEgSU5OT1ZJU0lPTiBTUC4gWiBPLk8uCi0wNEZGNTEgICAgIChiYXNlIDE2KQkJTk9WQU1FRElBIElOTk9WSVNJT04gU1AuIFogTy5PLgotCQkJCVdPRE5BIDcgCi0JCQkJS0FMSVNaIFdJRUxLT1BPTFNLQSA2Mi04MDAKLQkJCQlQT0xBTkQKLQotMDgtMDAtMDEgICAoaGV4KQkJQ09NUFVURVJWSVNJT04gQ09SUE9SQVRJT04KLTA4MDAwMSAgICAgKGJhc2UgMTYpCQlDT01QVVRFUlZJU0lPTiBDT1JQT1JBVElPTgotCQkJCTE0IENST1NCWSBEUklWRSBNUyA1LTEKLQkJCQlCRURGT1JEIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wMiAgIChoZXgpCQlCUklER0UgQ09NTVVOSUNBVElPTlMgSU5DLgotMDgwMDAyICAgICAoYmFzZSAxNikJCUJSSURHRSBDT01NVU5JQ0FUSU9OUyBJTkMuCi0JCQkJMjA4MSBTVElFUkxJTkcgUk9BRAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTAzICAgKGhleCkJCUFEVkFOQ0VEIENPTVBVVEVSIENPTU0uCi0wODAwMDMgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgQ09NUFVURVIgQ09NTS4KLQkJCQk3MjAgU0FOVEEgQkFSQkFSQSBTVC4KLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wNCAgIChoZXgpCQlDUk9NRU1DTyBJTkNPUlBPUkFURUQKLTA4MDAwNCAgICAgKGJhc2UgMTYpCQlDUk9NRU1DTyBJTkNPUlBPUkFURUQKLQkJCQkyODAgQkVSTkFSRE8gQVZFTlVFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMDUgICAoaGV4KQkJU1lNQk9MSUNTIElOQy4KLTA4MDAwNSAgICAgKGJhc2UgMTYpCQlTWU1CT0xJQ1MgSU5DLgotCQkJCTI1NyBWQVNTQVIgU1RSRUVUCi0JCQkJQ0FNQlJJREdFIE1BIDAyMTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wNiAgIChoZXgpCQlTSUVNRU5TIEFHCi0wODAwMDYgICAgIChiYXNlIDE2KQkJU0lFTUVOUyBBRwotCQkJCVNpZW1lbnMgSVQgU29sdXRpb25zIGFuZCBTZXJ2aWNlcywgU0lTIEdPIFFNIE8KLQkJCQlTaWVtZW5zc3RyYXNzZSAyLTQKLQkJCQlQT0IgMjM1MyBGdWVydGggOTA3MTMKLQkJCQlHRVJNQU5ZCi0KLTA4LTAwLTA3ICAgKGhleCkJCUFQUExFIENPTVBVVEVSIElOQy4KLTA4MDAwNyAgICAgKGJhc2UgMTYpCQlBUFBMRSBDT01QVVRFUiBJTkMuCi0JCQkJMjA2NTAgVkFMTEVZIEdSRUVOIERSSVZFCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wOCAgIChoZXgpCQlCT0xUIEJFUkFORUsgQU5EIE5FV01BTiBJTkMuCi0wODAwMDggICAgIChiYXNlIDE2KQkJQk9MVCBCRVJBTkVLIEFORCBORVdNQU4gSU5DLgotCQkJCTcwIEZBV0NFVFQgU1RSRUVUCi0JCQkJQ0FNQlJJREdFIE1BIDAyMTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wOSAgIChoZXgpCQlIRVdMRVRUIFBBQ0tBUkQKLTA4MDAwOSAgICAgKGJhc2UgMTYpCQlIRVdMRVRUIFBBQ0tBUkQKLQkJCQlFTlRFUlBSSVNFIFNZU1RFTVMgVEVDSC5DRU5URVIKLQkJCQkxMTAwMCBXT0xGRSBST0FECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wQSAgIChoZXgpCQlORVNUQVIgU1lTVEVNUyBJTkNPUlBPUkFURUQKLTA4MDAwQSAgICAgKGJhc2UgMTYpCQlORVNUQVIgU1lTVEVNUyBJTkNPUlBPUkFURUQKLQkJCQkyNTg1IEVBU1QgQkFZU0hPUkUgUk9BRAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMEIgICAoaGV4KQkJVU5JU1lTIENPUlBPUkFUSU9OCi0wODAwMEIgICAgIChiYXNlIDE2KQkJVU5JU1lTIENPUlBPUkFUSU9OCi0JCQkJVE9XTlNISVAgTElORSBST0FECi0JCQkJQkxVRSBCRUxMIFBBIDE5NDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wQyAgIChoZXgpCQlNSUtMWU4gREVWRUxPUE1FTlQgQ08uCi0wODAwMEMgICAgIChiYXNlIDE2KQkJTUlLTFlOIERFVkVMT1BNRU5UIENPLgotCQkJCTM2MTMgQU5ET1ZFUiBESVZFCi0JCQkJQkVERk9SRCBUWCA3NjAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMEQgICAoaGV4KQkJSU5URVJOQVRJT05BTCBDT01QVVRFUlMgTFRELgotMDgwMDBEICAgICAoYmFzZSAxNikJCUlOVEVSTkFUSU9OQUwgQ09NUFVURVJTIExURC4KLQkJCQlXRU5MT0NLIFdBWQotCQkJCVdFU1QgR09SVE9OIE1BTkNIRVNURVIsICBNMTIgIDVEUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtMEUgICAoaGV4KQkJTkNSIENPUlBPUkFUSU9OCi0wODAwMEUgICAgIChiYXNlIDE2KQkJTkNSIENPUlBPUkFUSU9OCi0JCQkJV09STEQgSEVBRFFVQVJURVJTCi0JCQkJREFZVE9OIE9IIDQ1NDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wRiAgIChoZXgpCQlNSVRFTCBDT1JQT1JBVElPTgotMDgwMDBGICAgICAoYmFzZSAxNikJCU1JVEVMIENPUlBPUkFUSU9OCi0JCQkJMzUwIExFR0dFVCBEUklWRQotCQkJCVAuTy4gQk9YIDEzMDg5IEtBTkFUQSBPTlRBUklPCi0JCQkJQ0FOQURBIEsySyAxWDMKLQkJCQlDQU5BREEKLQotMDgtMDAtMTEgICAoaGV4KQkJVEVLVFJPTklYIElOQy4KLTA4MDAxMSAgICAgKGJhc2UgMTYpCQlURUtUUk9OSVggSU5DLgotCQkJCVRFQ0hOSUNBTCBTVEFOREFSRFMKLQkJCQkxMzk3NSBTVyBLQVJMIEJSQVVOIERSSVZFIFBPIEJPWCA1MDAsICBNCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0xMiAgIChoZXgpCQlCRUxMIEFUTEFOVElDIElOVEVHUkFURUQgU1lTVC4KLTA4MDAxMiAgICAgKGJhc2UgMTYpCQlCRUxMIEFUTEFOVElDIElOVEVHUkFURUQgU1lTVC4KLQkJCQk0MCBUQUxMIFBJTkUgRFJJVkUKLQkJCQlTVURCVVJZIE1BIDAxNzc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0xMyAgIChoZXgpCQlFWFhPTgotMDgwMDEzICAgICAoYmFzZSAxNikJCUVYWE9OCi0JCQkJCi0KLTA4LTAwLTE0ICAgKGhleCkJCUVYQ0VMQU4KLTA4MDAxNCAgICAgKGJhc2UgMTYpCQlFWENFTEFOCi0JCQkJMTU5OSBGTElDS0lOR0VSIEFWRU5VRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0xNSAgIChoZXgpCQlTVEMgQlVTSU5FU1MgU1lTVEVNUwotMDgwMDE1ICAgICAoYmFzZSAxNikJCVNUQyBCVVNJTkVTUyBTWVNURU1TCi0JCQkJSE9MQlJPT0sgSE9VU0UKLQkJCQlDT0NLRk9TVEVSUyBST0FEIENPQ0tGT1NURVJTIEhFUlRTIEVONCBPCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC0xNiAgIChoZXgpCQlCQVJSSVNURVIgSU5GTyBTWVMgQ09SUAotMDgwMDE2ICAgICAoYmFzZSAxNikJCUJBUlJJU1RFUiBJTkZPIFNZUyBDT1JQCi0JCQkJT05FIFRFQ0hOT0xPR1kgQ0VOVEVSCi0JCQkJNDUgT0FLIFNUUkVFVAotCQkJCUJVRkZBTE8gTlkgMTQyMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTE3ICAgKGhleCkJCU5BVElPTkFMIFNFTUlDT05EVUNUT1IKLTA4MDAxNyAgICAgKGJhc2UgMTYpCQlOQVRJT05BTCBTRU1JQ09ORFVDVE9SCi0JCQkJMjkwMCBTRU1JQ09ORFVDVE9SIERSSVZFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTE4ICAgKGhleCkJCVBJUkVMTEkgRk9DT00gTkVUV09SS1MKLTA4MDAxOCAgICAgKGJhc2UgMTYpCQlQSVJFTExJIEZPQ09NIE5FVFdPUktTCi0JCQkJREVOVE9OIERSSVZFCi0JCQkJTk9SVEhXSUNIIENIRVNISVJFICAgICAgQ1c5IDdMVQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC0xOSAgIChoZXgpCQlHRU5FUkFMIEVMRUNUUklDIENPUlBPUkFUSU9OCi0wODAwMTkgICAgIChiYXNlIDE2KQkJR0VORVJBTCBFTEVDVFJJQyBDT1JQT1JBVElPTgotCQkJCTEyODUgQk9TVE9OIEFWRU5VRQotCQkJCUJSSURHRVBPUlQgQ1QgMDY2MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTFBICAgKGhleCkJCVRJQVJBLyAxME5FVAotMDgwMDFBICAgICAoYmFzZSAxNikJCVRJQVJBLyAxME5FVAotCQkJCTc3NzcgV0FTSElOR1RPTiBWSUxMQUdFIERSSVZFCi0JCQkJU1VJVEUgMjAwCi0JCQkJREFZVE9OIE9ISU8gNDU0NTktMzk1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMUIgICAoaGV4KQkJRU1DIENvcnBvcmF0aW9uCi0wODAwMUIgICAgIChiYXNlIDE2KQkJRU1DIENvcnBvcmF0aW9uCi0JCQkJMTc2IFNvdXRoIFN0cmVldAotCQkJCUhvcGtpbnRvbiBNQSAwMTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMUMgICAoaGV4KQkJS0RELUtPS1VTQUkgREVCTlNJTiBERU5XQSBDTy4KLTA4MDAxQyAgICAgKGJhc2UgMTYpCQlLREQtS09LVVNBSSBERUJOU0lOIERFTldBIENPLgotCQkJCUZVSkkgWEVST1ggQ08uLCBMVEQuIFRFTEVHUkFQSAotCQkJCU5PLiAzLTUsIEFLQVNBS0EgMy1DSE9NRSBNSU5BVE8tS1UsIFRPS1kKLQkJCQkxMDcgSkFQQU4KLQkJCQlKQVBBTgotCi0wOC0wMC0xRCAgIChoZXgpCQlBQkxFIENPTU1VTklDQVRJT05TIElOQy4KLTA4MDAxRCAgICAgKGJhc2UgMTYpCQlBQkxFIENPTU1VTklDQVRJT05TIElOQy4KLQkJCQkxNzg5MSBDQVJUV1JJR0hUIFJPQUQKLQkJCQlJUlZJTkUgQ0EgOTI3MTQtNjIxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMUUgICAoaGV4KQkJQVBPTExPIENPTVBVVEVSIElOQy4KLTA4MDAxRSAgICAgKGJhc2UgMTYpCQlBUE9MTE8gQ09NUFVURVIgSU5DLgotCQkJCTE1IEVMSVpBQkVUSCBEUklWRQotCQkJCUNIRUxNU0ZPUkQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTFGICAgKGhleCkJCVNIQVJQIENPUlBPUkFUSU9OCi0wODAwMUYgICAgIChiYXNlIDE2KQkJU0hBUlAgQ09SUE9SQVRJT04KLQkJCQlFTkdJTkVFUklORyBERVBBUlRNRU5UIDYKLQkJCQk0OTIgTUlOT1NITy1DSE8gWUFNQVRPS09PUklZTUEtU0hJLAotCQkJCU5BUkEgNjM5LTExIEpBUEFOCi0JCQkJSkFQQU4KLQotMDgtMDAtMjAgICAoaGV4KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0wODAwMjAgICAgIChiYXNlIDE2KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0JCQkJMTcgTmV0d29yayBDaXJjbGUKLQkJCQlCdWlsZGluZyAxNywgVU1QSzE3LTEzMQotCQkJCU1lbmxvIFBhcmsgQ0EgOTUwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTIxICAgKGhleCkJCTNNIENPTVBBTlkKLTA4MDAyMSAgICAgKGJhc2UgMTYpCQkzTSBDT01QQU5ZCi0JCQkJVGVsZWNvbSBEaXZpc2lvbgotCQkJCTY4MDEgUml2ZXIgUGxhY2UgQm91bGV2YXJkCi0JCQkJQXVzdGluIFRYIDc4NzI2LTkwMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTIyICAgKGhleCkJCU5CSSBJTkMuCi0wODAwMjIgICAgIChiYXNlIDE2KQkJTkJJIElOQy4KLQkJCQkzNDUwIE1JVENIRUxMIExBTkUKLQkJCQlQLk8uIEJPWCA5MDAxCi0JCQkJQk9VTERFUiBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMjMgICAoaGV4KQkJUGFuYXNvbmljIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDgwMDIzICAgICAoYmFzZSAxNikJCVBhbmFzb25pYyBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQk0LTEtNjIgTWlub3NoaW1hIEhha2F0YSBGdWt1b2thCi0JCQkJODEyLTg1MzEKLQkJCQlKQVBBTgotCi0wOC0wMC0yNCAgIChoZXgpCQkxME5FVCBDT01NVU5JQ0FUSU9OUy9EQ0EKLTA4MDAyNCAgICAgKGJhc2UgMTYpCQkxME5FVCBDT01NVU5JQ0FUSU9OUy9EQ0EKLQkJCQk3Nzc3IFdBU0hJTkdUT04gVklMTEFHRSBEUi4KLQkJCQlTVUlURSAyMDAKLQkJCQlEQVlUT04gT0ggNDU0NTktMzk1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMjUgICAoaGV4KQkJQ09OVFJPTCBEQVRBCi0wODAwMjUgICAgIChiYXNlIDE2KQkJQ09OVFJPTCBEQVRBCi0JCQkJNDIwMSBMRVhJTkdUT04gQVZFIE5PUlRICi0JCQkJQVJERU4gSElMTFMgTU4gNTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTI2ICAgKGhleCkJCU5PUlNLIERBVEEgQS5TLgotMDgwMDI2ICAgICAoYmFzZSAxNikJCU5PUlNLIERBVEEgQS5TLgotCQkJCVAuTy4gQk9YIDI1IEJPR0VSVUQKLQkJCQlPU0xPIDYKLQkJCQlOT1JXQVkKLQkJCQlOT1JXQVkKLQotMDgtMDAtMjcgICAoaGV4KQkJQ0FETVVTIENPTVBVVEVSIFNZU1RFTVMKLTA4MDAyNyAgICAgKGJhc2UgMTYpCQlDQURNVVMgQ09NUFVURVIgU1lTVEVNUwotCQkJCTYwMCBTVUZGT0xLIFNUCi0JCQkJTE9XRUxMIE1BIDA4MTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0yOCAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDgwMDI4ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJTS9TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTI5ICAgKGhleCkJCU1FR0FURUsgQ09SUE9SQVRJT04KLTA4MDAyOSAgICAgKGJhc2UgMTYpCQlNRUdBVEVLIENPUlBPUkFUSU9OCi0JCQkJOTY0NSBTQ1JBTlRPTiBST0FECi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0yQSAgIChoZXgpCQlNT1NBSUMgVEVDSE5PTE9HSUVTIElOQy4KLTA4MDAyQSAgICAgKGJhc2UgMTYpCQlNT1NBSUMgVEVDSE5PTE9HSUVTIElOQy4KLQkJCQk0NyBNQU5OSU5HIFJPQUQKLQkJCQlCSUxMRVJJQ0EgTUEgMDE4MjEtMzk3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMkIgICAoaGV4KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLTA4MDAyQiAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotCQkJCUxLRyAxLTIvQTE5Ci0JCQkJNTUwIEtJTkcgU1RSRUVUCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwLTEyODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTJDICAgKGhleCkJCUJSSVRUT04gTEVFIElOQy4KLTA4MDAyQyAgICAgKGJhc2UgMTYpCQlCUklUVE9OIExFRSBJTkMuCi0JCQkJMTQ2MDAgV0lOQ0hFU1RFUiBCTFZECi0JCQkJTE9TIEdBVE9TIENBIDk1MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0yRCAgIChoZXgpCQlMQU4tVEVDIElOQy4KLTA4MDAyRCAgICAgKGJhc2UgMTYpCQlMQU4tVEVDIElOQy4KLQkJCQkyMTMxIFVOSVZFUlNJVFkgQVZFTlVFCi0JCQkJQkVSS0VMRVkgQ0EgOTQ3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTJFICAgKGhleCkJCU1FVEFQSE9SIENPTVBVVEVSIFNZU1RFTVMKLTA4MDAyRSAgICAgKGJhc2UgMTYpCQlNRVRBUEhPUiBDT01QVVRFUiBTWVNURU1TCi0JCQkJMjUwMCBHQVJDSUEgQVZFTlVFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMkYgICAoaGV4KQkJUFJJTUUgQ09NUFVURVIgSU5DLgotMDgwMDJGICAgICAoYmFzZSAxNikJCVBSSU1FIENPTVBVVEVSIElOQy4KLQkJCQkxMDAgQ1JPU0JZIERSSVZFCi0JCQkJQkVERk9SRCBNQSAwMTczMC0xNDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0zMCAgIChoZXgpCQlORVRXT1JLIFJFU0VBUkNIIENPUlBPUkFUSU9OCi0wODAwMzAgICAgIChiYXNlIDE2KQkJTkVUV09SSyBSRVNFQVJDSCBDT1JQT1JBVElPTgotCQkJCTIzODAgTi4gUk9TRSBBVkVOVUUKLQkJCQlPWE5BUkQgQ0EgOTMwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTMwICAgKGhleCkJCUNFUk4KLTA4MDAzMCAgICAgKGJhc2UgMTYpCQlDRVJOCi0JCQkJQ0gtMTIxMSBHRU5FVkUgMjMKLQkJCQlTVUlTU0UvU1dJVFoKLQkJCQlTV0lUWkVSTEFORAotCi0wOC0wMC0zMCAgIChoZXgpCQlST1lBTCBNRUxCT1VSTkUgSU5TVCBPRiBURUNICi0wODAwMzAgICAgIChiYXNlIDE2KQkJUk9ZQUwgTUVMQk9VUk5FIElOU1QgT0YgVEVDSAotCQkJCUdQTyBCT1ggMjQ3NlYKLQkJCQlNRUxCT1VSTkUgVklDIDMwMDEKLQkJCQlBVVNUUkFMSUEKLQotMDgtMDAtMzEgICAoaGV4KQkJTElUVExFIE1BQ0hJTkVTIElOQy4KLTA4MDAzMSAgICAgKGJhc2UgMTYpCQlMSVRUTEUgTUFDSElORVMgSU5DLgotCQkJCTQxNDEgSlVUTEFORCBEUklWRQotCQkJCVNBTiBESUVHTyBDQSA5MjExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMzIgICAoaGV4KQkJVElHQU4gSU5DT1JQT1JBVEVECi0wODAwMzIgICAgIChiYXNlIDE2KQkJVElHQU4gSU5DT1JQT1JBVEVECi0JCQkJNDAyMCBGQUJJQU4gV0FZCi0JCQkJU1VJVEUgRAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMzMgICAoaGV4KQkJQkFVU0NIICYgTE9NQgotMDgwMDMzICAgICAoYmFzZSAxNikJCUJBVVNDSCAmIExPTUIKLQkJCQlJTlRFUkFDVElWRSBHUkFQSElDUyBESVZJU0lPTgotCQkJCVAuTy4gQk9YIDE0NTQ3Ci0JCQkJQVVTSVROIFRYIDc4NjcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0zNCAgIChoZXgpCQlGSUxFTkVUIENPUlBPUkFUSU9OCi0wODAwMzQgICAgIChiYXNlIDE2KQkJRklMRU5FVCBDT1JQT1JBVElPTgotCQkJCTE1NzUgQ09SUE9SQVRFIERSSVZFCi0JCQkJQ09TVEEgTUVTQSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMzUgICAoaGV4KQkJTUlDUk9GSVZFIENPUlBPUkFUSU9OCi0wODAwMzUgICAgIChiYXNlIDE2KQkJTUlDUk9GSVZFIENPUlBPUkFUSU9OCi0JCQkJMzU2MCBIWUxBTkQgQVZFTlVFCi0JCQkJUC5PLiBCT1ggNTAxMQotCQkJCUNPU1RBIE1FU0EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTM2ICAgKGhleCkJCUlOVEVSR1JBUEggQ09SUE9SQVRJT04KLTA4MDAzNiAgICAgKGJhc2UgMTYpCQlJTlRFUkdSQVBIIENPUlBPUkFUSU9OCi0JCQkJT05FIE1BRElTT04gSU5EVVNUUklBTCBQQVJLCi0JCQkJSFVOVFNWSUxMRSBBTCAzNTgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMzcgICAoaGV4KQkJRlVKSS1YRVJPWCBDTy4gTFRELgotMDgwMDM3ICAgICAoYmFzZSAxNikJCUZVSkktWEVST1ggQ08uIExURC4KLQkJCQlBRFZBTkNFRCBURUNIICYgRU5HJ0cgQ0VOVEVSCi0JCQkJOS01MCBDSFVPIDItQ0hPTUUsIEVCSU5BLVNISSBLQU5BR0FXQSAyNAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDgtMDAtMzggICAoaGV4KQkJQlVMTCBTLkEuUy4KLTA4MDAzOCAgICAgKGJhc2UgMTYpCQlCVUxMIFMuQS5TLgotCQkJCXJ1ZSBKZWFuIEphdXJlcyBCLlAuNjgKLQkJCQlMZXMgQ2xheWVzIHNvdXMgQm9pcyAgNzg0MzAKLQkJCQlGUkFOQ0UKLQotMDgtMDAtMzkgICAoaGV4KQkJU1BJREVSIFNZU1RFTVMgTElNSVRFRAotMDgwMDM5ICAgICAoYmFzZSAxNikJCVNQSURFUiBTWVNURU1TIExJTUlURUQKLQkJCQlTUElERVIgUEFSSwotCQkJCVNUQU5XRUxMIFNUUkVFVCBFRElOQlVSR0ggRUg2IDVORwotCQkJCVNDT1RMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtM0EgICAoaGV4KQkJT1JDQVRFQ0ggSU5DLgotMDgwMDNBICAgICAoYmFzZSAxNikJCU9SQ0FURUNIIElOQy4KLQkJCQkyNjgwIFFVRUVOU1ZJRVcgRFJJVkUKLQkJCQlPVFRBV0EgT05UQVJJTwotCQkJCUNBTkFEQSBLMkIgOEg2Ci0JCQkJQ0FOQURBCi0KLTA4LTAwLTNCICAgKGhleCkJCVRPUlVTIFNZU1RFTVMgTElNSVRFRAotMDgwMDNCICAgICAoYmFzZSAxNikJCVRPUlVTIFNZU1RFTVMgTElNSVRFRAotCQkJCVNDSUVOQ0UgUEFSSwotCQkJCU1JTFRPTiBST0FEIENBTUJSSURHRSBDQjQgNEJICi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC0zQyAgIChoZXgpCQlTQ0hMVU1CRVJHRVIgV0VMTCBTRVJWSUNFUwotMDgwMDNDICAgICAoYmFzZSAxNikJCVNDSExVTUJFUkdFUiBXRUxMIFNFUlZJQ0VTCi0JCQkJQVVTVElOIEVOR0lORUVSSU5HIFNFUlZJQ0VTCi0JCQkJUC5PLiBCT1ggMjAwMDE1Ci0JCQkJQVVTVElOIFRYIDc4NzIwLTAwMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTNEICAgKGhleCkJCUNBRE5FVElYIENPUlBPUkFUSU9OUwotMDgwMDNEICAgICAoYmFzZSAxNikJCUNBRE5FVElYIENPUlBPUkFUSU9OUwotCQkJCTU3OTcgQ0VOVFJBTCBBVkVOVUUKLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0zRSAgIChoZXgpCQlDT0RFWCBDT1JQT1JBVElPTgotMDgwMDNFICAgICAoYmFzZSAxNikJCUNPREVYIENPUlBPUkFUSU9OCi0JCQkJNTAgRUFTVCBDT01NRVJDRSBEUklWRQotCQkJCVNVSVRFICBNMQotCQkJCVNDSEFVTUJVUkcgSUwgNjAxNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTNGICAgKGhleCkJCUZSRUQgS09TQ0hBUkEgRU5URVJQUklTRVMKLTA4MDAzRiAgICAgKGJhc2UgMTYpCQlGUkVEIEtPU0NIQVJBIEVOVEVSUFJJU0VTCi0JCQkJCi0KLTA4LTAwLTQwICAgKGhleCkJCUZFUlJBTlRJIENPTVBVVEVSIFNZUy4gTElNSVRFRAotMDgwMDQwICAgICAoYmFzZSAxNikJCUZFUlJBTlRJIENPTVBVVEVSIFNZUy4gTElNSVRFRAotCQkJCVdZVEhFTlNIQVdFIERJVklTSU9OCi0JCQkJV0VTVEVSTiBST0FEIEJSQUNLTkVMTCBSRzEyIDFSQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtNDEgICAoaGV4KQkJUkFDQUwtTUlMR08gSU5GT1JNQVRJT04gU1lTLi4KLTA4MDA0MSAgICAgKGJhc2UgMTYpCQlSQUNBTC1NSUxHTyBJTkZPUk1BVElPTiBTWVMuLgotCQkJCTQwMCBFTUJBU1NZIFJPVwotCQkJCVNVSVRFIDMwMAotCQkJCUFUTEFOVEEgR0EgMzAzMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTQyICAgKGhleCkJCUpBUEFOIE1BQ05JQ1MgQ09SUC4KLTA4MDA0MiAgICAgKGJhc2UgMTYpCQlKQVBBTiBNQUNOSUNTIENPUlAuCi0JCQkJCi0JCQkJSkFQQU4KLQotMDgtMDAtNDMgICAoaGV4KQkJUElYRUwgQ09NUFVURVIgSU5DLgotMDgwMDQzICAgICAoYmFzZSAxNikJCVBJWEVMIENPTVBVVEVSIElOQy4KLQkJCQkyNjAgRk9SREhBTSBST0FECi0JCQkJV0lMTUlOR1RPTiBNQSAwMTg4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNDQgICAoaGV4KQkJREFWSUQgU1lTVEVNUyBJTkMuCi0wODAwNDQgICAgIChiYXNlIDE2KQkJREFWSUQgU1lTVEVNUyBJTkMuCi0JCQkJNjE1IFRBU01BTiBEUklWRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNDUgICAoaGV4KQkJQ09OQ1VSUkVOVCBDT01QVVRFUiBDT1JQLgotMDgwMDQ1ICAgICAoYmFzZSAxNikJCUNPTkNVUlJFTlQgQ09NUFVURVIgQ09SUC4KLQkJCQkyIENSRVNDRU5UIFBMQUNFCi0JCQkJT0NFQU5QT1JUIE5KIDA3NzU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00NiAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0wODAwNDYgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMsIDUtMS0yIEtpdGFzaGluYWdhd2EKLQkJCQlTaGluYWdhd2Eta3UKLQkJCQlUb2t5byAgMTQxLTAwMDEKLQkJCQlKQVBBTgotCi0wOC0wMC00NyAgIChoZXgpCQlTRVFVRU5UIENPTVBVVEVSIFNZU1RFTVMgSU5DLgotMDgwMDQ3ICAgICAoYmFzZSAxNikJCVNFUVVFTlQgQ09NUFVURVIgU1lTVEVNUyBJTkMuCi0JCQkJMTU0NTAgUy5XLiBLT0xMIFBBUktXQVkgICAuCi0JCQkJTUFJTFNUT1AgQ09MMi04MzEKLQkJCQlCRUFWRVJUT04gT1IgOTcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTQ4ICAgKGhleCkJCUVVUk9USEVSTSBHQVVHSU5HIFNZU1RFTVMKLTA4MDA0OCAgICAgKGJhc2UgMTYpCQlFVVJPVEhFUk0gR0FVR0lORyBTWVNURU1TCi0JCQkJOTAwIE1JRERMRVNFWCBUVVJOUElLRSwgQkRHLiA2Ci0JCQkJQklMTEVSSUNBIE1BIDAxODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00OSAgIChoZXgpCQlVTklWQVRJT04KLTA4MDA0OSAgICAgKGJhc2UgMTYpCQlVTklWQVRJT04KLQkJCQkxMDM3IE5PUlRIIEZBSVIgT0FLUyBBVkUuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00QSAgIChoZXgpCQlCQU5ZQU4gU1lTVEVNUyBJTkMuCi0wODAwNEEgICAgIChiYXNlIDE2KQkJQkFOWUFOIFNZU1RFTVMgSU5DLgotCQkJCTEzNSBGTEFOREVSUyBST0FECi0JCQkJV0VTVEJPUk8gTUEgMDE1ODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTRCICAgKGhleCkJCVBMQU5OSU5HIFJFU0VBUkNIIENPUlAuCi0wODAwNEIgICAgIChiYXNlIDE2KQkJUExBTk5JTkcgUkVTRUFSQ0ggQ09SUC4KLQkJCQkxREhTIFNZU1RFTVMKLQkJCQkxNTA4IEtFTk5FRFkgRFJJVkUtU1RFIzIxNQotCQkJCUJFTExFVlVFIE5FIDY4LS01Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00QyAgIChoZXgpCQlIWURSQSBDT01QVVRFUiBTWVNURU1TIElOQy4KLTA4MDA0QyAgICAgKGJhc2UgMTYpCQlIWURSQSBDT01QVVRFUiBTWVNURU1TIElOQy4KLQkJCQkxMiBNRVJDRVIgUk9BRAotCQkJCU5BVElDSyBNQSAwMTc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNEQgICAoaGV4KQkJQ09SVlVTIFNZU1RFTVMgSU5DLgotMDgwMDREICAgICAoYmFzZSAxNikJCUNPUlZVUyBTWVNURU1TIElOQy4KLQkJCQkyMTAwIENPUlZVUyBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00RSAgIChoZXgpCQkzQ09NIEVVUk9QRSBMVEQuCi0wODAwNEUgICAgIChiYXNlIDE2KQkJM0NPTSBFVVJPUEUgTFRELgotCQkJCTNDT00gQ0VOVFJFCi0JCQkJQk9VTkRBUlkgV0FZLCBIRU1FTCBIRU1QU1RFQUQgSEVSVEZPUlNISQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtNEYgICAoaGV4KQkJQ1lHTkVUIFNZU1RFTVMKLTA4MDA0RiAgICAgKGJhc2UgMTYpCQlDWUdORVQgU1lTVEVNUwotCQkJCTI1NjAgSlVOQ1RJT04gQVZFTlVFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTUwICAgKGhleCkJCURBSVNZIFNZU1RFTVMgQ09SUC4KLTA4MDA1MCAgICAgKGJhc2UgMTYpCQlEQUlTWSBTWVNURU1TIENPUlAuCi0JCQkJMTM5IEtJRkVSIENPVVJUCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01MSAgIChoZXgpCQlFWFBFUkRBVEEKLTA4MDA1MSAgICAgKGJhc2UgMTYpCQlFWFBFUkRBVEEKLQkJCQk4OCwgUlVFIEJSSUxMQVQgU0FWQVJJTgotCQkJCTc1MDEzIFBBUklTCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTA4LTAwLTUyICAgKGhleCkJCUlOU1lTVEVDCi0wODAwNTIgICAgIChiYXNlIDE2KQkJSU5TWVNURUMKLQkJCQk0NTAgTEFLRU1PTlQgQVZFTlVFCi0JCQkJV0lOVEVSIFBBUksgRkwgMzI3OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTUzICAgKGhleCkJCU1JRERMRSBFQVNUIFRFQ0guIFVOSVZFUlNJVFkKLTA4MDA1MyAgICAgKGJhc2UgMTYpCQlNSURETEUgRUFTVCBURUNILiBVTklWRVJTSVRZCi0JCQkJREVQQVJUTUVOVCBPRgotCQkJCUNPTVBVVEVSIEVOR0lORUVSSU5HCi0JCQkJQU5LQVJBIFRVUktFWQotCQkJCVRVUktFWQotCi0wOC0wMC01NSAgIChoZXgpCQlTVEFORk9SRCBURUxFQ09NTS4gSU5DLgotMDgwMDU1ICAgICAoYmFzZSAxNikJCVNUQU5GT1JEIFRFTEVDT01NLiBJTkMuCi0JCQkJMTIyMSBDUk9TU01BTgotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNTYgICAoaGV4KQkJU1RBTkZPUkQgTElORUFSIEFDQ0VMLiBDRU5URVIKLTA4MDA1NiAgICAgKGJhc2UgMTYpCQlTVEFORk9SRCBMSU5FQVIgQUNDRUwuIENFTlRFUgotCQkJCTI1NzUgU0FOREhJTEwgUk9BRAotCQkJCU1FTkxPIFBBUksgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTU3ICAgKGhleCkJCUVWQU5TICYgU1VUSEVSTEFORAotMDgwMDU3ICAgICAoYmFzZSAxNikJCUVWQU5TICYgU1VUSEVSTEFORAotCQkJCVAuTy4gQk9YIDg3MDAKLQkJCQk1ODAgQVJBUEVFTiBEUklWRQotCQkJCVNBTFQgTEFLRSBDSVRZIFVUIDg0MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01OCAgIChoZXgpCQlTWVNURU1TIENPTkNFUFRTCi0wODAwNTggICAgIChiYXNlIDE2KQkJU1lTVEVNUyBDT05DRVBUUwotCQkJCTUyMCBUSElSRCBTVFJFRVQKLQkJCQlTQU4gRlJBTkNJU0NPIENBIDk0MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01OSAgIChoZXgpCQlBL1MgTVlDUk9OCi0wODAwNTkgICAgIChiYXNlIDE2KQkJQS9TIE1ZQ1JPTgotCQkJCVBPIEJPWCA2MTk5Ci0JCQkJTi0wNjAyIE9TTE8gNgotCQkJCU5PUldBWQotCQkJCU5PUldBWQotCi0wOC0wMC01QSAgIChoZXgpCQlJQk0gQ29ycAotMDgwMDVBICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAuTy4gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01QiAgIChoZXgpCQlWVEEgVEVDSE5PTE9HSUVTIElOQy4KLTA4MDA1QiAgICAgKGJhc2UgMTYpCQlWVEEgVEVDSE5PTE9HSUVTIElOQy4KLQkJCQkyMDQwIFNIRVJNQU4gU1RSRUVUCi0JCQkJSE9MTFlXT09EIEZMIDMzMDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01QyAgIChoZXgpCQlGT1VSIFBIQVNFIFNZU1RFTVMKLTA4MDA1QyAgICAgKGJhc2UgMTYpCQlGT1VSIFBIQVNFIFNZU1RFTVMKLQkJCQkyMDAxIExPR0lDIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjQtMzQ1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNUQgICAoaGV4KQkJR09VTEQgSU5DLgotMDgwMDVEICAgICAoYmFzZSAxNikJCUdPVUxEIElOQy4KLQkJCQk2OTAxIFdFU1QgU1VOUklTRSBCTFZELgotCQkJCVAuTy4gQk9YIDkxNDgKLQkJCQlGVC4gTEFVREVSREFMRSBGTCAzMzMxMC05MTQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01RSAgIChoZXgpCQlDT1VOVEVSUE9JTlQgQ09NUFVURVIgSU5DLgotMDgwMDVFICAgICAoYmFzZSAxNikJCUNPVU5URVJQT0lOVCBDT01QVVRFUiBJTkMuCi0JCQkJMjEyNyBSSU5HV09PRCBBVkVOVUUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNUYgICAoaGV4KQkJU0FCRVIgVEVDSE5PTE9HWSBDT1JQLgotMDgwMDVGICAgICAoYmFzZSAxNikJCVNBQkVSIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkyMzgxIEJFUklORyBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxLTExMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTYwICAgKGhleCkJCUlORFVTVFJJQUwgTkVUV09SS0lORyBJTkMuCi0wODAwNjAgICAgIChiYXNlIDE2KQkJSU5EVVNUUklBTCBORVRXT1JLSU5HIElOQy4KLQkJCQkzOTkwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTYxICAgKGhleCkJCUpBUk9HQVRFIExURC4KLTA4MDA2MSAgICAgKGJhc2UgMTYpCQlKQVJPR0FURSBMVEQuCi0JCQkJMTk3LTIxMyBMWUhBTSBST0FECi0JCQkJQlJJU1RPTiBMT05ET04gU1cyIDVQWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtNjIgICAoaGV4KQkJR0VORVJBTCBEWU5BTUlDUwotMDgwMDYyICAgICAoYmFzZSAxNikJCUdFTkVSQUwgRFlOQU1JQ1MKLQkJCQlGT1JUIFdPUlRIIERJVklTSU9OCi0JCQkJUC5PLiBCT1ggNzQ4Ci0JCQkJRlQuIFdPUlRIIFRYIDc2MTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC02MyAgIChoZXgpCQlQTEVTU0VZCi0wODAwNjMgICAgIChiYXNlIDE2KQkJUExFU1NFWQotCQkJCVBMRVNTRVkgLSBVSyBMSU1JVEVECi0JCQkJMTY3LTU1IDE0OFRIIEFWRU5VRQotCQkJCUpBTUFJQ0EgTlkgMTE0MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTY0ICAgKGhleCkJCUFVVE9QSE9OIEFHCi0wODAwNjQgICAgIChiYXNlIDE2KQkJQVVUT1BIT04gQUcKLQkJCQlBQlQuIFRaTSAzMDcKLQkJCQlaSUVHRUxNQVRUU1RSQVNTRSAxLTE1IDQ1MDMgU09MT1RIVVJOCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wOC0wMC02NSAgIChoZXgpCQlHRU5SQUQgSU5DLgotMDgwMDY1ICAgICAoYmFzZSAxNikJCUdFTlJBRCBJTkMuCi0JCQkJMzAwIEJBS0VSIEFWRU5VRQotCQkJCU1BSUwgU1RPUCAyNgotCQkJCUNPTkNPUkQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTY2ICAgKGhleCkJCUFHRkEgQ09SUE9SQVRJT04KLTA4MDA2NiAgICAgKGJhc2UgMTYpCQlBR0ZBIENPUlBPUkFUSU9OCi0JCQkJMjAwIEJBTExBUkRWQUxFIFNUUkVFVAotCQkJCVdJTE1JTkdUT04gTUEgMDE4ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTY3ICAgKGhleCkJCUNPTURFU0lHTgotMDgwMDY3ICAgICAoYmFzZSAxNikJCUNPTURFU0lHTgotCQkJCTc1MSBTT1VUSCBLRUxMT0cgQVZFTlVFCi0JCQkJR09MRVRBIENBIDkzMTE3LTM4ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTY4ICAgKGhleCkJCVJJREdFIENPTVBVVEVSUwotMDgwMDY4ICAgICAoYmFzZSAxNikJCVJJREdFIENPTVBVVEVSUwotCQkJCTI0NTEgTUlTU0lPTiBDT0xMRUdFIEJMVkQuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTY5ICAgKGhleCkJCVNJTElDT04gR1JBUEhJQ1MgSU5DLgotMDgwMDY5ICAgICAoYmFzZSAxNikJCVNJTElDT04gR1JBUEhJQ1MgSU5DLgotCQkJCTIwMTEgTi4gU0hPUkVMSU5FIEJMVkQuCi0JCQkJUC5PLiBCT1ggNzMxMSBDQSA5NDA0MwotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwMzktNzMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNkEgICAoaGV4KQkJQVRUIEJFTEwgTEFCT1JBVE9SSUVTCi0wODAwNkEgICAgIChiYXNlIDE2KQkJQVRUIEJFTEwgTEFCT1JBVE9SSUVTCi0JCQkJMTEwMCBFQVNUIFdBUlJFTlZJTExFIFJPQUQKLQkJCQlOQVBFUlZJTExFIElMIDYwNTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC02QiAgIChoZXgpCQlBQ0NFTCBURUNITk9MT0dJRVMgSU5DLgotMDgwMDZCICAgICAoYmFzZSAxNikJCUFDQ0VMIFRFQ0hOT0xPR0lFUyBJTkMuCi0JCQkJNzM1OCBUUkFERSBTVFJFRVQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTZDICAgKGhleCkJCVNVTlRFSyBURUNITk9MT0dZIElOVCdMCi0wODAwNkMgICAgIChiYXNlIDE2KQkJU1VOVEVLIFRFQ0hOT0xPR1kgSU5UJ0wKLQkJCQk1ODYgTk8uIEZJUlNUIFNUUkVFVAotCQkJCVNBTiBKT1NFIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC02RCAgIChoZXgpCQlXSElURUNIQVBFTCBDT01QVVRFUiBXT1JLUwotMDgwMDZEICAgICAoYmFzZSAxNikJCVdISVRFQ0hBUEVMIENPTVBVVEVSIFdPUktTCi0JCQkJNzUgV0hJVEVDSEFQRUwgUk9BRAotCQkJCUxPTkRPTiBFMSAxRFUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC02RSAgIChoZXgpCQlNQVNTQ09NUAotMDgwMDZFICAgICAoYmFzZSAxNikJCU1BU1NDT01QCi0JCQkJT05FIFRFQ0hOT0xPR1kgUEFSSwotCQkJCVdFU1RGT1JEIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC02RiAgIChoZXgpCQlQSElMSVBTIEFQRUxET09STiBCLlYuCi0wODAwNkYgICAgIChiYXNlIDE2KQkJUEhJTElQUyBBUEVMRE9PUk4gQi5WLgotCQkJCVAuTy4gQk9YIDEwNQotCQkJCTczMDAgQUMgQVBFTERPT1JOCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDgtMDAtNzAgICAoaGV4KQkJTUlUU1VCSVNISSBFTEVDVFJJQyBDT1JQLgotMDgwMDcwICAgICAoYmFzZSAxNikJCU1JVFNVQklTSEkgRUxFQ1RSSUMgQ09SUC4KLQkJCQkzMjUgS0FNSU1BQ0hJWUEKLQkJCQlLQU1BS1VSQSBDSVRZIEtBTkFHV0EgUFJFRkVDVFVSRSAyNDcKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTA4LTAwLTcxICAgKGhleCkJCU1BVFJBIChEU0lFKQotMDgwMDcxICAgICAoYmFzZSAxNikJCU1BVFJBIChEU0lFKQotCQkJCVBBUkMgRCdBRkZBSVJFUyAtIEIuUC4gMjYyCi0JCQkJMjcxMDAgVkFMIERFIFJFVUlMCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTA4LTAwLTcyICAgKGhleCkJCVhFUk9YIENPUlAgVU5JViBHUkFOVCBQUk9HUkFNCi0wODAwNzIgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUCBVTklWIEdSQU5UIFBST0dSQU0KLQkJCQlaRVJPWCBTWVNURU1TIElOU1RJVFVURQotCQkJCU0vUyAxMDUgNTBDIDgwMCBQSElMTElQUyBST0FECi0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNzMgICAoaGV4KQkJVEVDTUFSIElOQy4KLTA4MDA3MyAgICAgKGJhc2UgMTYpCQlURUNNQVIgSU5DLgotCQkJCTYyMjUgQ09DSFJBTiBST0FECi0JCQkJU09MT04gT0ggNDQxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTc0ICAgKGhleCkJCUNBU0lPIENPTVBVVEVSIENPLiBMVEQuCi0wODAwNzQgICAgIChiYXNlIDE2KQkJQ0FTSU8gQ09NUFVURVIgQ08uIExURC4KLQkJCQkzLTItMSBTQUtBRS1DSE8KLQkJCQlIQU1VUkFNQUNISSwgTklTSElUTUFHVU4gVE9LWU8KLQkJCQkxOTAtMTEgSkFQQU4KLQkJCQlKQVBBTgotCi0wOC0wMC03NSAgIChoZXgpCQlEQU5TSyBEQVRBIEVMRUNUUk9OSUsKLTA4MDA3NSAgICAgKGJhc2UgMTYpCQlEQU5TSyBEQVRBIEVMRUNUUk9OSUsKLQkJCQlIRVJMRVYgSE9WRURHQURFIDE5OQotCQkJCURLIDI3MzAgSEVSTEVWCi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDgtMDAtNzYgICAoaGV4KQkJUEMgTEFOIFRFQ0hOT0xPR0lFUwotMDgwMDc2ICAgICAoYmFzZSAxNikJCVBDIExBTiBURUNITk9MT0dJRVMKLQkJCQk1NzgwIExJTkNPTE4gRFJJVkUgU1VJVEUgMTA2Ci0JCQkJTUlOTkVBUE9MSVMgTU4gNTU0MzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTc3ICAgKGhleCkJCVRTTCBDT01NVU5JQ0FUSU9OUyBMVEQuCi0wODAwNzcgICAgIChiYXNlIDE2KQkJVFNMIENPTU1VTklDQVRJT05TIExURC4KLQkJCQlUSEUgTEFORFNCVVJZIEVTVEFURQotCQkJCUxPV0VSIEdVSUxERk9SRCBST0FEIEtOQVBISUwgV09LSU5HIFNVUlIKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtNzggICAoaGV4KQkJQUNDRUxMIENPUlBPUkFUSU9OCi0wODAwNzggICAgIChiYXNlIDE2KQkJQUNDRUxMIENPUlBPUkFUSU9OCi0JCQkJNTAgU0FHSU5BVyBEUklWRQotCQkJCVJPQ0hFU1RFUiBOWSAxNDYyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNzkgICAoaGV4KQkJVEhFIERST0lEIFdPUktTCi0wODAwNzkgICAgIChiYXNlIDE2KQkJVEhFIERST0lEIFdPUktTCi0JCQkJUC5PLiBCT1ggQ1MgODE4MAotCQkJCVNBTiBSQUZBRUwgQ0EgOTQ5MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTdBICAgKGhleCkJCUlOREFUQQotMDgwMDdBICAgICAoYmFzZSAxNikJCUlOREFUQQotCQkJCUdKRVJEUlVNUyBWRUkgMTIgQwotCQkJCU4tMDQ4NiBPU0xPIDQKLQkJCQlOT1JXQVkKLQkJCQlOT1JXQVkKLQotMDgtMDAtN0IgICAoaGV4KQkJU0FOWU8gRUxFQ1RSSUMgQ08uIExURC4KLTA4MDA3QiAgICAgKGJhc2UgMTYpCQlTQU5ZTyBFTEVDVFJJQyBDTy4gTFRELgotCQkJCTEtMTgtMTMgSEFTSElSSURBTkkKLQkJCQlISVJBS0FUQS1TSEkKLQkJCQlPU0FLQSA1NzMgSkFQQU4KLQkJCQlKQVBBTgotCi0wOC0wMC03QyAgIChoZXgpCQlWSVRBTElOSyBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDgwMDdDICAgICAoYmFzZSAxNikJCVZJVEFMSU5LIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJNDg3NjEgS0FUTyBST0FECi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtN0UgICAoaGV4KQkJQU1BTEdBTUFURUQgV0lSRUxFU1MoQVVTKSBMVEQKLTA4MDA3RSAgICAgKGJhc2UgMTYpCQlBTUFMR0FNQVRFRCBXSVJFTEVTUyhBVVMpIExURAotCQkJCU5PUlRIIFJZREUgRElWSVNJT04KLQkJCQlQLk8uIEJPWCA5NiBOT1JUSCBSWURFIE5TVwotCQkJCUFVU1RSQUxJQSAyMTEzCi0JCQkJQVVTVFJBTElBCi0KLTA4LTAwLTdGICAgKGhleCkJCUNBUk5FR0lFLU1FTExPTiBVTklWRVJTSVRZCi0wODAwN0YgICAgIChiYXNlIDE2KQkJQ0FSTkVHSUUtTUVMTE9OIFVOSVZFUlNJVFkKLQkJCQlJTkZPUk1BVElPTiBURUNITk9MT0dZCi0JCQkJU0NIRU5MRVkgUEFSSwotCQkJCVBJVFRTQlVSR0UgUEEgMTUyMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTgwICAgKGhleCkJCUFFUyBEQVRBIElOQy4KLTA4MDA4MCAgICAgKGJhc2UgMTYpCQlBRVMgREFUQSBJTkMuCi0JCQkJMTkwMCBNSU5ORVNPVEEgQ09VUlQKLQkJCQlNSVNTSVNBVUdBIE9OVEFSSU8KLQkJCQlDQU5BREEgTDVOIEw1TiAzQzkKLQkJCQlDQU5BREEKLQotMDgtMDAtODEgICAoaGV4KQkJLEFTVEVDSCBJTkMuCi0wODAwODEgICAgIChiYXNlIDE2KQkJLEFTVEVDSCBJTkMuCi0JCQkJNjcwIE5PUlRIIENPTU1FUkNJQUwgU1RSRUVUCi0JCQkJTUFOQ0hFU1RFUiBOSCAwMzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtODIgICAoaGV4KQkJVkVSSVRBUyBTT0ZUV0FSRQotMDgwMDgyICAgICAoYmFzZSAxNikJCVZFUklUQVMgU09GVFdBUkUKLQkJCQk0ODAwIEdSRUFUIEFNRVJJQ0EgUEFSS1dBWQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04MyAgIChoZXgpCQlTZWlrbyBJbnN0cnVtZW50cyBJbmMuCi0wODAwODMgICAgIChiYXNlIDE2KQkJU2Vpa28gSW5zdHJ1bWVudHMgSW5jLgotCQkJCTgsIE5ha2FzZSAxLWNob21lIE1paGFtYS1rdQotCQkJCUNoaWJhLXNoaSBDaGliYSAyNjEtODUwNwotCQkJCUpBUEFOCi0KLTA4LTAwLTg0ICAgKGhleCkJCVRPTUVOIEVMRUNUUk9OSUNTIENPUlAuCi0wODAwODQgICAgIChiYXNlIDE2KQkJVE9NRU4gRUxFQ1RST05JQ1MgQ09SUC4KLQkJCQkxLTEgVUNISVNBSVdBSS1DSE8gMkNIT01FCi0JCQkJQ0hJWU9EQS1LVSBUT0tZTyAxMDAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTA4LTAwLTg1ICAgKGhleCkJCUVMWFNJCi0wODAwODUgICAgIChiYXNlIDE2KQkJRUxYU0kKLQkJCQkyMzM0IExVTkRZIFBMQUNFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTg2ICAgKGhleCkJCUtPTklDQSBNSU5PTFRBIEhPTERJTkdTLCBJTkMuCi0wODAwODYgICAgIChiYXNlIDE2KQkJS09OSUNBIE1JTk9MVEEgSE9MRElOR1MsIElOQy4KLQkJCQkxLTYtMSwgTWFydW5vdWNoaSwKLQkJCQlDaGl5b2RhLWt1Ci0JCQkJVG9reW8gIDEwMC0wMDA1Ci0JCQkJSkFQQU4KLQotMDgtMDAtODcgICAoaGV4KQkJWFlQTEVYCi0wODAwODcgICAgIChiYXNlIDE2KQkJWFlQTEVYCi0JCQkJMjk1IEZPU1RFUiBTVFJFRVQKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTg4ICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotMDgwMDg4ICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTE3NDUgVGVjaG5vbG9neSBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtODkgICAoaGV4KQkJS0lORVRJQ1MKLTA4MDA4OSAgICAgKGJhc2UgMTYpCQlLSU5FVElDUwotCQkJCTMxODIgT0xEIFRVTk5FTCBST0FECi0JCQkJU1VJVEUgSAotCQkJCUxBRkFZRVRURSBDQSA5NDU0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtOEEgICAoaGV4KQkJUEVSRk9STUFOQ0UgVEVDSE5PTE9HWQotMDgwMDhBICAgICAoYmFzZSAxNikJCVBFUkZPUk1BTkNFIFRFQ0hOT0xPR1kKLQkJCQk4MDEgTElOQ09MTiBDRU5URVIKLQkJCQk3ODAwIDFIMTAgV0VTVAotCQkJCVNBTiBBTlRPTklPIFRYIDc4MjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04QiAgIChoZXgpCQlQWVJBTUlEIFRFQ0hOT0xPR1kgQ09SUC4KLTA4MDA4QiAgICAgKGJhc2UgMTYpCQlQWVJBTUlEIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkxMjk1IENIQVJMRVNUT04gUk9BRAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLThDICAgKGhleCkJCU5FVFdPUksgUkVTRUFSQ0ggQ09SUE9SQVRJT04KLTA4MDA4QyAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFJFU0VBUkNIIENPUlBPUkFUSU9OCi0JCQkJMjM4MCBOLiBST1NFIEFWRU5VRQotCQkJCU9YTkFSRCBDQSA5MzAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtOEQgICAoaGV4KQkJWFlWSVNJT04gSU5DLgotMDgwMDhEICAgICAoYmFzZSAxNikJCVhZVklTSU9OIElOQy4KLQkJCQkxMDEgRURHRVdBVEVSIERSSVZFCi0JCQkJV0FLRUZJRUxEIE1BIDAxODgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04RSAgIChoZXgpCQlUQU5ERU0gQ09NUFVURVJTCi0wODAwOEUgICAgIChiYXNlIDE2KQkJVEFOREVNIENPTVBVVEVSUwotCQkJCTE0MzIxIFRBTkRFTSBCTFZELgotCQkJCUFVU1RJTiBUWCA3ODcyOC02NjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04RiAgIChoZXgpCQlDSElQQ09NIENPUlBPUkFUSU9OCi0wODAwOEYgICAgIChiYXNlIDE2KQkJQ0hJUENPTSBDT1JQT1JBVElPTgotCQkJCVNPVVRIQk9ST1VHSCBPRkZJQ0UKLQkJCQkxMTggVFVSTlBJS0UgUk9BRAotCQkJCVNPVVRIQk9ST1VHSCBNQSAwMTc3Mi0xODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC05MCAgIChoZXgpCQlTT05PTUEgU1lTVEVNUwotMDgwMDkwICAgICAoYmFzZSAxNikJCVNPTk9NQSBTWVNURU1TCi0JCQkJNDY0MCBBRE1JUkFMVFkgV0FZLCAgU1RFLiAjNjAwCi0JCQkJTUFSSU5BIERFTCBSRVkgQ0EgOTAyOTItNjY5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMTEtOTYgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wODExOTYgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wOC0xNC00MyAgIChoZXgpCQlVTklCUkFJTiBTLkEuCi0wODE0NDMgICAgIChiYXNlIDE2KQkJVU5JQlJBSU4gUy5BLgotCQkJCTg0LCBFVEhOSUtJUyBBTlRJU1RBU0VPUwotCQkJCTE1MjMxIEFUSEVOUwotCQkJCUdSRUVDRQotCQkJCUdSRUVDRQotCi0wOC0xNi01MSAgIChoZXgpCQlTaGVuemhlbiBTZWEgU3RhciBUZWNobm9sb2d5IENvLixMdGQKLTA4MTY1MSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBTZWEgU3RhciBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlTZWFzdGFyIGluZHVzdHJpYWwgUGFyaywgQmFvTG9uZyAgNnRoIEF2ZQotCQkJCUJhb0xvbmcgaW5kdXN0cmlhbCBDaXR5LCBMb25nR2FuZyAgRGlzdHJpY3QsIFNoZW56aGVuIEd1YW5nRG9uZyBQLlIuQwotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMTYKLQkJCQlDSElOQQotCi0wOC0xNy0zNSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wODE3MzUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0xNy1GNCAgIChoZXgpCQlJQk0gQ29ycAotMDgxN0Y0ICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMjA1MSBNaXNzaW9uIENvbGxlZ2UgQmx2ZAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0xOC0xQSAgIChoZXgpCQl6dGUgY29ycG9yYXRpb24KLTA4MTgxQSAgICAgKGJhc2UgMTYpCQl6dGUgY29ycG9yYXRpb24KLQkJCQkxMi9GLixaVEUgUiZEIEJ1aWxkaW5nLGtlamkgbmFuIFJvYWQgCi0JCQkJU2hlbnpoZW4gZ3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTA4LTE4LTRDICAgKGhleCkJCUEuIFMuIFRob21hcywgSW5jLgotMDgxODRDICAgICAoYmFzZSAxNikJCUEuIFMuIFRob21hcywgSW5jLgotCQkJCTM1NSBQcm92aWRlbmNlIEh3eQotCQkJCVdlc3R3b29kIE1BIDAyMDkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0xOS1BNiAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLTA4MTlBNiAgICAgKGJhc2UgMTYpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLQkJCQlCMS03LEh1YXdlaSBJbmR1c3RyaWFsIEJhc2UsQmFudGlhbixMb25nZ2FuZwotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi0wOC0xRi1GMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wODFGRjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0yQS1EMCAgIChoZXgpCQlTUkQgSW5ub3ZhdGlvbnMgSW5jLgotMDgyQUQwICAgICAoYmFzZSAxNikJCVNSRCBJbm5vdmF0aW9ucyBJbmMuCi0JCQkJMTE1MjUgVmFsbGV5IFJpZGdlIERyLiBOVwotCQkJCUNhbGdhcnkgQUIgVDNCIDVUNAotCQkJCUNBTkFEQQotCi0wOC0zOC1BNSAgIChoZXgpCQlGdW5rd2VyayBwbGV0dGFjIGVsZWN0cm9uaWMgR21iSAotMDgzOEE1ICAgICAoYmFzZSAxNikJCUZ1bmt3ZXJrIHBsZXR0YWMgZWxlY3Ryb25pYyBHbWJICi0JCQkJV3VlcnpidXJnZXIgU3RyLiAxNTAKLQkJCQlGdWVydGggQmF2YXJpYSA5MDc2NgotCQkJCUdFUk1BTlkKLQotMDgtNEUtMUMgICAoaGV4KQkJSDJBIFN5c3RlbXMsIExMQwotMDg0RTFDICAgICAoYmFzZSAxNikJCUgyQSBTeXN0ZW1zLCBMTEMKLQkJCQk3NTQ1IElydmluZSBDZW50ZXIgRHJpdmUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTRFLUJGICAgKGhleCkJCUJyb2FkIE5ldCBNdXggQ29ycG9yYXRpb24KLTA4NEVCRiAgICAgKGJhc2UgMTYpCQlCcm9hZCBOZXQgTXV4IENvcnBvcmF0aW9uCi0JCQkJNC0xLTggS291bmFuIE1pbmF0by1rdQotCQkJCVRva3lvICAxMDgtMDA3NQotCQkJCUpBUEFOCi0KLTA4LTUxLTJFICAgKGhleCkJCU9yaW9uIERpYWdub3N0aWNhIE95Ci0wODUxMkUgICAgIChiYXNlIDE2KQkJT3Jpb24gRGlhZ25vc3RpY2EgT3kKLQkJCQlLb2l2dS1NYW5ra2FhbiB0aWUgNgotCQkJCUVzcG9vICAwMjEwMAotCQkJCUZJTkxBTkQKLQotMDgtNzYtMTggICAoaGV4KQkJVmlFIFRlY2hub2xvZ2llcyBTZG4uIEJoZC4KLTA4NzYxOCAgICAgKGJhc2UgMTYpCQlWaUUgVGVjaG5vbG9naWVzIFNkbi4gQmhkLgotCQkJCW5vLiA4NS1BLCBMaW50YW5nIEJheWFuIExlcGFzIDExLAotCQkJCVBoYXNlIDQKLQkJCQlCYXlhbiBMZXBhcyBQZW5hbmcgMTE5MDAKLQkJCQlNQUxBWVNJQQotCi0wOC03Ni05NSAgIChoZXgpCQlBdXRvIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wODc2OTUgICAgIChiYXNlIDE2KQkJQXV0byBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0Rmxvb3IsICMyMzUgSGFuc2hpbiBJVCBUb3dlciwgCi0JCQkJR3Vyby1kb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi03NjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDgtNzYtRkYgICAoaGV4KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLTA4NzZGRiAgICAgKGJhc2UgMTYpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotCQkJCVByaW5zIEJvdWRld2lqbmxhYW4gNDcKLQkJCQlFZGVnZW0gICAyNjUwCi0JCQkJQkVMR0lVTQotCi0wOC04Ni0zQiAgIChoZXgpCQlCZWxraW4gSW50ZXJuYXRpb25hbAotMDg4NjNCICAgICAoYmFzZSAxNikJCUJlbGtpbiBJbnRlcm5hdGlvbmFsCi0JCQkJMTIwNDUgRWFzdCBXYXRlcmZyb250IERyaXZlCi0JCQkJUGxheWEgVmlzdGEgQ0EgOTAwOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LThELUM4ICAgKGhleCkJCVJ5b3dhIEVsZWN0cm9uaWNzIENvLixMdGQKLTA4OERDOCAgICAgKGJhc2UgMTYpCQlSeW93YSBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJMTQ4My0xIFRha2FoYXJhLW1hY2hpCi0JCQkJWWFtYWdhdGEtc2hpIFlhbWFnYXRhLXByZWYuIDk5MDAwMDIKLQkJCQlKQVBBTgotCi0wOC05Ri05NyAgIChoZXgpCQlMRVJPWSBBVVRPTUFUSU9OCi0wODlGOTcgICAgIChiYXNlIDE2KQkJTEVST1kgQVVUT01BVElPTgotCQkJCTM1LCBCb3VsZXZhcmQgZHUgTGlicmUgRWNoYW5nZQotCQkJCVNhaW50IE9yZW5zIGRlIEdhbWV2aWxsZSAgMzE2NTAKLQkJCQlGUkFOQ0UKLQotMDgtQUMtQTUgICAoaGV4KQkJQmVudSBWaWRlbywgSW5jLgotMDhBQ0E1ICAgICAoYmFzZSAxNikJCUJlbnUgVmlkZW8sIEluYy4KLQkJCQkzMDAgQ29uY29yZCBSZC4sIFN1aXRlICMxMTAKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LUI3LUVDICAgKGhleCkJCVdpcmVsZXNzIFNlaXNtaWMKLTA4QjdFQyAgICAgKGJhc2UgMTYpCQlXaXJlbGVzcyBTZWlzbWljCi0JCQkJMTMxMDAgU1cgRnJlZXdheQotCQkJCVN1aXRlIDE1MAotCQkJCVN1Z2FyIExhbmQgVFggNzc0NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LUJCLUNDICAgKGhleCkJCUFLLU5PUkQgRURWIFZFUlRSSUVCU0dFUy4gbWJICi0wOEJCQ0MgICAgIChiYXNlIDE2KQkJQUstTk9SRCBFRFYgVkVSVFJJRUJTR0VTLiBtYkgKLQkJCQlGUklFRFJJQ0hTVFJBU1NFIDEwCi0JCQkJMjU0MzYgVE9STkVTQ0ggIAotCQkJCUdFUk1BTlkKLQotMDgtRDItOUEgICAoaGV4KQkJUHJvZm9ybWF0aXF1ZQotMDhEMjlBICAgICAoYmFzZSAxNikJCVByb2Zvcm1hdGlxdWUKLQkJCQkxMCBiaXMgcnVlIEx1Y2llbiBWb2lsaW4KLQkJCQlQdXRlYXV4ICA5MjgwMAotCQkJCUZSQU5DRQotCi0wOC1ENS1DMCAgIChoZXgpCQlTZWVycyBUZWNobm9sb2d5IENvLiwgTHRkCi0wOEQ1QzAgICAgIChiYXNlIDE2KQkJU2VlcnMgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTEyMTAgVGVjaGNlbnRlciwgU0tuVGVjaG5vcGFyaywgMTkwLTEKLQkJCQlTYW5nZGFld29uZC1kb25nLCBKdW5nd29uLWd1Ci0JCQkJU2VvbmduYW0tc2kgR3llb25nZ2ktZG8gNDYyLTcyMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wOC1FNi03MiAgIChoZXgpCQlKRUJTRUUgRUxFQ1RST05JQ1MgQ08uLExURC4KLTA4RTY3MiAgICAgKGJhc2UgMTYpCQlKRUJTRUUgRUxFQ1RST05JQ1MgQ08uLExURC4KLQkJCQkyNC0zLCBTSU4gTEUgUk9BRCwgCi0JCQkJVEFJTkFOICA3MDI2OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDgtRjItRjQgICAoaGV4KQkJTmV0IE9uZSBQYXJ0bmVycyBDby4sTHRkLgotMDhGMkY0ICAgICAoYmFzZSAxNikJCU5ldCBPbmUgUGFydG5lcnMgQ28uLEx0ZC4KLQkJCQkyLTggSGlnYXNoaSBTaGluYWdhd2EgMi1jaG9tZSwKLQkJCQlTaGluYWdhd2Eta3UsCi0JCQkJVG9reW8gIDE0MDAwMDIKLQkJCQlKQVBBTgotCi0wOC1GNi1GOCAgIChoZXgpCQlHRVQgRW5naW5lZXJpbmcKLTA4RjZGOCAgICAgKGJhc2UgMTYpCQlHRVQgRW5naW5lZXJpbmcKLQkJCQk5MzUwIEJvbmQgQXZlCi0JCQkJRWwgQ2Fqb24gQ0EgOTIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LUZBLUUwICAgKGhleCkJCUZvaGhuIEF1ZGlvIEFHCi0wOEZBRTAgICAgIChiYXNlIDE2KQkJRm9oaG4gQXVkaW8gQUcKLQkJCQlIb2hlcyBHZXN0YWRlIDMtNwotCQkJCU51ZXJ0aW5nZW4gQlcgNzI2MjIKLQkJCQlHRVJNQU5ZCi0KLTBDLTE1LUM1ICAgKGhleCkJCVNEVEVDIENvLiwgTHRkLgotMEMxNUM1ICAgICAoYmFzZSAxNikJCVNEVEVDIENvLiwgTHRkLgotCQkJCTE2NywgQ2h1cnllLTJEb25nLCBTYXNhbmctR3UsCi0JCQkJQnVzYW4gICA2MTctNzE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTBDLTE3LUYxICAgKGhleCkJCVRFTEVDU1lTCi0wQzE3RjEgICAgIChiYXNlIDE2KQkJVEVMRUNTWVMKLQkJCQkzMSBjaGVtaW4gZHUgZmllZiBhdXggcHJldHJlcwotCQkJCUwnT1JCUklFICA4NTIwMAotCQkJCUZSQU5DRQotCi0wQy0xRC1DMiAgIChoZXgpCQlTZUFIIE5ldHdvcmtzCi0wQzFEQzIgICAgIChiYXNlIDE2KQkJU2VBSCBOZXR3b3JrcwotCQkJCTlGLCBJVCBWZW50dXJlIFRvd2VyIEVhc3QgV2luZyA3OCBHYXJhay1Eb25nLAotCQkJCVNlb3VsIFNvbmdwYS1ndSAxMzgtOTUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTBDLTI3LTU1ICAgKGhleCkJCVZhbHVhYmxlIFRlY2hvbG9naWVzIExpbWl0ZWQKLTBDMjc1NSAgICAgKGJhc2UgMTYpCQlWYWx1YWJsZSBUZWNob2xvZ2llcyBMaW1pdGVkCi0JCQkJNjAyLCBDZW50cmUgUG9pbnQsIEouQi5OYWdhciwKLQkJCQlBbmRoZXJpLUt1cmxhIFJvYWQsIEFuZGhlcmkgKEUpCi0JCQkJTXVtYmFpIE1haGFyYXNodHJhIDQwMDA1OQotCQkJCUlORElBCi0KLTBDLTM3LURDICAgKGhleCkJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLTBDMzdEQyAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wQy0zOS01NiAgIChoZXgpCQlPYnNlcnZhdG9yIGluc3RydW1lbnRzCi0wQzM5NTYgICAgIChiYXNlIDE2KQkJT2JzZXJ2YXRvciBpbnN0cnVtZW50cwotCQkJCVJpZXRkZWtrZXJzdHJhYXQgNgotCQkJCVJpZGRlcmtlcmsgWnVpZCBIb2xsYW5kIDI5ODQgQk0KLQkJCQlORVRIRVJMQU5EUwotCi0wQy0zQy02NSAgIChoZXgpCQlEb21lIEltYWdpbmcgSW5jCi0wQzNDNjUgICAgIChiYXNlIDE2KQkJRG9tZSBJbWFnaW5nIEluYwotCQkJCTQwMCBGaWZ0aCBBdiAKLQkJCQlTdWl0ZSA1MDAKLQkJCQlXYWx0aGFtIE1BIDAyNDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy00Ni05RCAgIChoZXgpCQlNUyBTZWRjbwotMEM0NjlEICAgICAoYmFzZSAxNikJCU1TIFNlZGNvCi0JCQkJODcwMSBDYXN0bGUgUGFyayBEcml2ZQotCQkJCUluZGlhbmFwb2xpcyAgNDYyNTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTBDLTUxLUY3ICAgKGhleCkJCUNIQVVWSU4gQVJOT1VYCi0wQzUxRjcgICAgIChiYXNlIDE2KQkJQ0hBVVZJTiBBUk5PVVgKLQkJCQlMQSBRVUVVRSBERVZFRQotCQkJCVJFVVggIDE0MTMwCi0JCQkJRlJBTkNFCi0KLTBDLTYwLTc2ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTBDNjA3NiAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi0wQy02RS00RiAgIChoZXgpCQlQcmltZVZPTFQgQ28uLCBMdGQuCi0wQzZFNEYgICAgIChiYXNlIDE2KQkJUHJpbWVWT0xUIENvLiwgTHRkLgotCQkJCTJGLTMsIE5vLiA5LCBMYW5lIDMsIEppaHUgUmQsIE5laWh1Ci0JCQkJVGFpcGVpICAxMTQ5MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMEMtNzQtQzIgICAoaGV4KQkJQXBwbGUgSW5jCi0wQzc0QzIgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy03RC03QyAgIChoZXgpCQlLZXhpYW5nIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28sIEx0ZC4KLTBDN0Q3QyAgICAgKGJhc2UgMTYpCQlLZXhpYW5nIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28sIEx0ZC4KLQkJCQlSb29tIDE1MDIsIExvbmd4aSBIb3RlbCBOby4zNzg4IEppYW5nbmFuIEF2ZW51ZS4gCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDUzCi0JCQkJQ0hJTkEKLQotMEMtODEtMTIgICAoaGV4KQkJUFJJVkFURQotMEM4MTEyICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wQy04Mi0zMCAgIChoZXgpCQlTSEVOWkhFTiBNQUdOVVMgVEVDSE5PTE9HSUVTIENPLixMVEQKLTBDODIzMCAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBNQUdOVVMgVEVDSE5PTE9HSUVTIENPLixMVEQKLQkJCQljLTUwNCxTa3l3b3J0aCBCdWlsZGluZyxOby44IFJvYWQsSGlnaC10ZWNoIHNvdXRoLE5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTBDLTgyLTZBICAgKGhleCkJCVd1aGFuIEh1YWdvbmcgR2VudWluZSBPcHRpY3MgVGVjaG5vbG9neSBDby4sIEx0ZAotMEM4MjZBICAgICAoYmFzZSAxNikJCVd1aGFuIEh1YWdvbmcgR2VudWluZSBPcHRpY3MgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCVNjaWVuY2UgJiBUZWNobm9sb2d5IFJlZ2lvbiBvZiBIVVNULCBEb25naHUgSGlnaC1UZWNoIFpvbmUgCi0JCQkJV3VoYW4gSHViZWkgNDMwMjIzCi0JCQkJQ0hJTkEKLQotMEMtODQtMTEgICAoaGV4KQkJQS5PLiBTbWl0aCBXYXRlciBQcm9kdWN0cwotMEM4NDExICAgICAoYmFzZSAxNikJCUEuTy4gU21pdGggV2F0ZXIgUHJvZHVjdHMKLQkJCQkyNTU4OSBId3kgMQotCQkJCU1jQmVlIFNDIDI5MTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy04RC05OCAgIChoZXgpCQlUT1AgRUlHSFQgSU5EIENPUlAKLTBDOEQ5OCAgICAgKGJhc2UgMTYpCQlUT1AgRUlHSFQgSU5EIENPUlAKLQkJCQk4Ri4sTm83OS0xIFpob3V6aSBTdC4sIE5laWh1IERpc3RyaWN0LCBUYWlwZWkgQ2l0eSAgKE5laWh1IFRlY2hub2xvZ3kgUGFyaykKLQkJCQlUYWlwZWkgIDExNDkzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wQy05Mi00RSAgIChoZXgpCQlSaWNlIExha2UgV2VpZ2hpbmcgU3lzdGVtcwotMEM5MjRFICAgICAoYmFzZSAxNikJCVJpY2UgTGFrZSBXZWlnaGluZyBTeXN0ZW1zCi0JCQkJMjMwIFdlc3QgQ29sZW1hbiBTdAotCQkJCVJpY2UgTGFrZSBXSSA1NDg2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMEMtQTQtMDIgICAoaGV4KQkJQWxjYXRlbCBMdWNlbnQgSVBECi0wQ0E0MDIgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQgSVBECi0JCQkJNjAwIE1hcmNoIERyaXZlCi0JCQkJS2FuYXRhIE9udGFyaW8gazJrMmU2Ci0JCQkJQ0FOQURBCi0KLTBDLUE0LTJBICAgKGhleCkJCU9CIFRlbGVjb20gRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLiwgTHRkCi0wQ0E0MkEgICAgIChiYXNlIDE2KQkJT0IgVGVsZWNvbSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQkxNy9GLCBKaWFuZ29uZyBCdWlsZGluZwotCQkJCU5vLjIwIFdlbnNhbiBSb2FkCi0JCQkJSGFuZ3pob3UgWmhlSmlhbmcgMzEwMDEyCi0JCQkJQ0hJTkEKLQotMEMtQzMtQTcgICAoaGV4KQkJTWVyaXRlYwotMENDM0E3ICAgICAoYmFzZSAxNikJCU1lcml0ZWMKLQkJCQlQLk8uIEJveCA4MDAzCi0JCQkJUGFpbmVzdmlsbGUgT2hpbyA0NDA3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMEMtQzYtQUMgICAoaGV4KQkJREFHUwotMENDNkFDICAgICAoYmFzZSAxNikJCURBR1MKLQkJCQlBY2UgSGlnaCBlbmQgVG93ZXIgN3RoIDE4MDIKLQkJCQlTZW91bCBHZXVtY2hlb24tZ3UgMTUzLTgwMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wQy1DOS1DNiAgIChoZXgpCQlTYW13aW4gSG9uZyBLb25nIExpbWl0ZWQKLTBDQzlDNiAgICAgKGJhc2UgMTYpCQlTYW13aW4gSG9uZyBLb25nIExpbWl0ZWQKLQkJCQlSbSA5MDEtOTAyLCA5L0YsIEZ1dHVyYSBQbGF6YSwKLQkJCQkxMTEtMTEzIEhvdyBNaW5nIFN0cmVldCwgS3d1biBUb25nCi0JCQkJSG9uZyBLb25nICAKLQkJCQlDSElOQQotCi0wQy1DRC1EMyAgIChoZXgpCQlFQVNUUklWRVIgVEVDSE5PTE9HWSBDTy4sIExURC4KLTBDQ0REMyAgICAgKGJhc2UgMTYpCQlFQVNUUklWRVIgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQkzMCBKSU5OSVUgWElOQ1VOCi0JCQkJR1VBTkNIRU5HIERJU1RSSUNUCi0JCQkJRE9OR0dVQU4gR1VBTkdET05HIDUyMzAxMAotCQkJCUNISU5BCi0KLTBDLUQyLTkyICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMENEMjkyICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMEMtRDUtMDIgICAoaGV4KQkJV2VzdGVsbAotMENENTAyICAgICAoYmFzZSAxNikJCVdlc3RlbGwKLQkJCQk3NTAgTi4gQ29tbW9ucyBkci4KLQkJCQlBdXJvcmEgSUwgNjA1MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTBDLUQ2LTk2ICAgKGhleCkJCUFtaW1vbiBMdGQKLTBDRDY5NiAgICAgKGJhc2UgMTYpCQlBbWltb24gTHRkCi0JCQkJMiBNYXNraXQgc3QKLQkJCQlQTyBCb3ggMTI2MTgKLQkJCQlIZXJ6bGlhICA0NjczMwotCQkJCUlTUkFFTAotCi0wQy1ENy1DMiAgIChoZXgpCQlBeGl1bSBUZWNobm9sb2dpZXMsIEluYy4KLTBDRDdDMiAgICAgKGJhc2UgMTYpCQlBeGl1bSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk2NjI1IE4uIENhbGxlIEV2YSBNaXJhbmRhCi0JCQkJU3RlIEIKLQkJCQlJcndpbmRhbGUgQ0EgOTE3MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTBDLURELUVGICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0wQ0RERUYgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLTBDLUU3LTA5ICAgKGhleCkJCUZveCBDcnlwdG8gQi5WLgotMENFNzA5ICAgICAoYmFzZSAxNikJCUZveCBDcnlwdG8gQi5WLgotCQkJCVAuTy4gYm94IDYzOAotCQkJCURlbGZ0IFpIIDI2MDAgQVAKLQkJCQlORVRIRVJMQU5EUwotCi0wQy1FOC0yRiAgIChoZXgpCQlCb25maWdsaW9saSBWZWN0cm9uIEdtYkgKLTBDRTgyRiAgICAgKGJhc2UgMTYpCQlCb25maWdsaW9saSBWZWN0cm9uIEdtYkgKLQkJCQlFdXJvcGFyayBGaWNodGVuaGFpbiBCNgotCQkJCUtyZWZlbGQgTlJXIDQ3ODA3Ci0JCQkJR0VSTUFOWQotCi0wQy1FOS0zNiAgIChoZXgpCQlFTElNT1Mgc3JsCi0wQ0U5MzYgICAgIChiYXNlIDE2KQkJRUxJTU9TIHNybAotCQkJCXZpYSBHYWx2YW5pIDUvQwotCQkJCVRSSUVTVEUgIDM0MTMzCi0JCQkJSVRBTFkKLQotMEMtRUUtRTYgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotMENFRUU2ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLTBDLUVGLTdDICAgKGhleCkJCUFuYUNvbSBJbmMKLTBDRUY3QyAgICAgKGJhc2UgMTYpCQlBbmFDb20gSW5jCi0JCQkJMTk5NiBMdW5keSBBdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMEMtRjAtQjQgICAoaGV4KQkJR2xvYmFsc2F0IEludGVybmF0aW9uYWwgVGVjaG5vbG9neSBMdGQKLTBDRjBCNCAgICAgKGJhc2UgMTYpCQlHbG9iYWxzYXQgSW50ZXJuYXRpb25hbCBUZWNobm9sb2d5IEx0ZAotCQkJCTE3dGggZmxvb3IsQ2hpbmEgWW91c2UgQnVpbGRpbmcsTm8uNjAxMyBTaGVubmFuIEF2ZW51ZSxGdXRpYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTBDLUYzLUVFICAgKGhleCkJCUVNIE1pY3JvZWxlY3Ryb25pYwotMENGM0VFICAgICAoYmFzZSAxNikJCUVNIE1pY3JvZWxlY3Ryb25pYwotCQkJCVJ1ZSBkZXMgU29ycyAzCi0JCQkJTWFyaW4tRXBhZ2luZXIgTmV1Y2h0ZWwgMjA3NAotCQkJCVNXSVRaRVJMQU5ECi0KLTBDLUZDLTgzICAgKGhleCkJCUFpcm9oYSBUZWNobm9sb2d5IENvcnAuLAotMENGQzgzICAgICAoYmFzZSAxNikJCUFpcm9oYSBUZWNobm9sb2d5IENvcnAuLAotCQkJCTVGLCBOby42LTUsIER1c2hpbmcgUm9hZCAsIEhzaW5jaHUgU2NpZW5jZSBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0xMC0wMC0wMCAgIChoZXgpCQlQUklWQVRFCi0xMDAwMDAgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTEwLTAwLTVBICAgKGhleCkJCUlCTSBDb3JwCi0xMDAwNUEgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTAwLUU4ICAgKGhleCkJCU5BVElPTkFMIFNFTUlDT05EVUNUT1IKLTEwMDBFOCAgICAgKGJhc2UgMTYpCQlOQVRJT05BTCBTRU1JQ09ORFVDVE9SCi0JCQkJMjkwMCBTRU1JQ09ORFVDVE9SIERSSVZFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTA5LTBDICAgKGhleCkJCUphbm9tZSBTZXdpbmcgTWFjaGluZSBDby4sIEx0ZC4KLTEwMDkwQyAgICAgKGJhc2UgMTYpCQlKYW5vbWUgU2V3aW5nIE1hY2hpbmUgQ28uLCBMdGQuCi0JCQkJMTQ2MyBIYXphbWEtTWFjaGkKLQkJCQlIYWNoaW9qaS1TaGkgVG9reW8gMTkzLTA5NDEKLQkJCQlKQVBBTgotCi0xMC0wQi1BOSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTEwMEJBOSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTEwLTBDLTI0ICAgKGhleCkJCXBvbWRldmljZXMsIExMQwotMTAwQzI0ICAgICAoYmFzZSAxNikJCXBvbWRldmljZXMsIExMQwotCQkJCTE3OCBDb2x2YXJkIFBhcmsgRHIKLQkJCQlEdXJoYW0gTkMgMjc3MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTBELTMyICAgKGhleCkJCUVtYmVkaWFuLCBJbmMuCi0xMDBEMzIgICAgIChiYXNlIDE2KQkJRW1iZWRpYW4sIEluYy4KLQkJCQkxMEYuLCA5NSwgTmFuamluZyBFLiBSZC4gU2VjLiA0LCAKLQkJCQlUYWlwZWkgIDEwNTgwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0xMC0wRS0yQiAgIChoZXgpCQlORUMgQ0FTSU8gTW9iaWxlIENvbW11bmljYXRpb25zCi0xMDBFMkIgICAgIChiYXNlIDE2KQkJTkVDIENBU0lPIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotCQkJCTE3NTMsU2hpbW9udW1hYmUKLQkJCQlOYWthaGFyYS1rdQotCQkJCUthd2FzYWtpLXNoaSBLYW5hZ2F3YSAyMTEtODY2NgotCQkJCUpBUEFOCi0KLTEwLTEwLUI2ICAgKGhleCkJCU1jQ2FpbiBJbmMKLTEwMTBCNiAgICAgKGJhc2UgMTYpCQlNY0NhaW4gSW5jCi0JCQkJMjM2NSBPYWsgUmlkZ2UgV2F5Ci0JCQkJVmlzdGEgQ0EgOTIwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTEyLTEyICAgKGhleCkJCVZpdm8gSW50ZXJuYXRpb25hbCBDb3Jwb3JhdGlvbiBQdHkgTHRkCi0xMDEyMTIgICAgIChiYXNlIDE2KQkJVml2byBJbnRlcm5hdGlvbmFsIENvcnBvcmF0aW9uIFB0eSBMdGQKLQkJCQk5LTEzIEJpYmJ5IFN0cmVldCwgCi0JCQkJTlNXIENoaXN3aWNrIDIwNDYKLQkJCQlBVVNUUkFMSUEKLQotMTAtMTgtOUUgICAoaGV4KQkJRWxtbyBNb3Rpb24gQ29udHJvbAotMTAxODlFICAgICAoYmFzZSAxNikJCUVsbW8gTW90aW9uIENvbnRyb2wKLQkJCQk2NCBHaXNpbiBTdC4KLQkJCQlQZXRhY2ggVGlrdmEgIDQ5MTAzCi0JCQkJSVNSQUVMCi0KLTEwLTFELUMwICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMTAxREMwICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0xMC0xRi03NCAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTEwMUY3NCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtMkQtOTYgICAoaGV4KQkJTG9veGNpZSBJbmMuCi0xMDJEOTYgICAgIChiYXNlIDE2KQkJTG9veGNpZSBJbmMuCi0JCQkJMTE5NiBCb3JyZWdhcyBBdmUuCi0JCQkJU3VpdGUgMjAwCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMC0yRS1BRiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMTAyRUFGICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTM3LTExICAgKGhleCkJCVNpbWxpbmsgQVMKLTEwMzcxMSAgICAgKGJhc2UgMTYpCQlTaW1saW5rIEFTCi0JCQkJT3R0byBOaWVsc2VucyBWZWcgMTIKLQkJCQlUcm9uZGhlaW0gIE4tNzAwNAotCQkJCU5PUldBWQotCi0xMC00My02OSAgIChoZXgpCQlTb3VuZG1heCBFbGVjdHJvbmljIExpbWl0ZWQgCi0xMDQzNjkgICAgIChiYXNlIDE2KQkJU291bmRtYXggRWxlY3Ryb25pYyBMaW1pdGVkIAotCQkJCVJvb20jMTUwNSwgT3JpZW50YWwgcGxhemEsICMxMDcyIEppYW5TaGUgUm9hZAotCQkJCVNIRU5aSEVOICBHdWFuZ2RvbmcgNTE4MDAxCi0JCQkJQ0hJTkEKLQotMTAtNDQtNUEgICAoaGV4KQkJU2hhYW54aSBIaXRlY2ggRWxlY3Ryb25pYyBDby4sIExURAotMTA0NDVBICAgICAoYmFzZSAxNikJCVNoYWFueGkgSGl0ZWNoIEVsZWN0cm9uaWMgQ28uLCBMVEQKLQkJCQkzNSBUdWFuamllbmFuIFJvZGUsCi0JCQkJWGlhbiBTaGFhbnhpIDcxMDA3NQotCQkJCUNISU5BCi0KLTEwLTQ1LUJFICAgKGhleCkJCU5vcnBob25pYyBBUwotMTA0NUJFICAgICAoYmFzZSAxNikJCU5vcnBob25pYyBBUwotCQkJCUZhYnJpa2tnYXRlbiAxMAotCQkJCUJlcmdlbiAgNTA1OQotCQkJCU5PUldBWQotCi0xMC00NS1GOCAgIChoZXgpCQlMTlQtQXV0b21hdGlvbiBHbWJICi0xMDQ1RjggICAgIChiYXNlIDE2KQkJTE5ULUF1dG9tYXRpb24gR21iSAotCQkJCUhhbnMtUGF1bC1LYXlzc2VyLVN0cmFzc2UgMQotCQkJCUxldXRlbmJhY2gtTmVsbG1lcnNiYWNoIEJXIEQtNzEzOTcKLQkJCQlHRVJNQU5ZCi0KLTEwLTU2LUNBICAgKGhleCkJCVBlcGxpbmsgSW50ZXJuYXRpb25hbCBMdGQuCi0xMDU2Q0EgICAgIChiYXNlIDE2KQkJUGVwbGluayBJbnRlcm5hdGlvbmFsIEx0ZC4KLQkJCQkxNy9GLCBQYXJrIEJ1aWxkaW5nLAotCQkJCTQ3NiBDYXN0bGUgUGVhayBSb2FkLAotCQkJCUNoZXVuZyBTaGEgV2FuICAKLQkJCQlIT05HIEtPTkcKLQotMTAtNjItQzkgICAoaGV4KQkJQWRhdGlzIEdtYkggJiBDby4gS0cKLTEwNjJDOSAgICAgKGJhc2UgMTYpCQlBZGF0aXMgR21iSCAmIENvLiBLRwotCQkJCUZvcmNoaGVpbWVyIFN0ci4gNgotCQkJCU5pP29lcm5iZXJnIEJhdmFyaWEgOTA0MjUKLQkJCQlHRVJNQU5ZCi0KLTEwLTY0LUUyICAgKGhleCkJCUFERndlYi5jb20gcy5yLmwuCi0xMDY0RTIgICAgIChiYXNlIDE2KQkJQURGd2ViLmNvbSBzLnIubC4KLQkJCQlTdHJhZGEgTnVvdmEsIDE3Ci0JCQkJLgotCQkJCU1hcmVubyBkaSBQaWF2ZSBUcmV2aXNvIDMxMDEwCi0JCQkJSVRBTFkKLQotMTAtNjUtQTMgICAoaGV4KQkJUGFuYW1heCBJbmMuCi0xMDY1QTMgICAgIChiYXNlIDE2KQkJUGFuYW1heCBJbmMuCi0JCQkJMTY5MCBDb3Jwb3JhdGUgQ2lyY2xlCi0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTc2LThBICAgKGhleCkJCUVvQ2VsbAotMTA3NjhBICAgICAoYmFzZSAxNikJCUVvQ2VsbAotCQkJCTE0OSBGbG9vZGxpZ2h0c2ZpZWxkIFN0cmVldAotCQkJCVNpbHZlcndhdGVyIE5TVyAyMTI4Ci0JCQkJQVVTVFJBTElBCi0KLTEwLTc4LUQyICAgKGhleCkJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotMTA3OEQyICAgICAoYmFzZSAxNikJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotCQkJCU5PLiAyMzksIFNlYy4gMiwgVGkgRGluZyBCbHZkLgotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTEwLTgzLUQyICAgKGhleCkJCU1pY3Jvc2V2ZW4gU3lzdGVtcywgTExDCi0xMDgzRDIgICAgIChiYXNlIDE2KQkJTWljcm9zZXZlbiBTeXN0ZW1zLCBMTEMKLQkJCQk0MDQgU291dGggTGVtb24gQXZlLiwgIzkKLQkJCQlXYWxudXQgQ2FsaWZvcm5pYSA5MTc4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtODgtMEYgICAoaGV4KQkJREFSVU1BIFRFTEVDT01VTklDQUNPRVMgRSBJTkZPUk1BVElDQSBTL0EKLTEwODgwRiAgICAgKGJhc2UgMTYpCQlEQVJVTUEgVEVMRUNPTVVOSUNBQ09FUyBFIElORk9STUFUSUNBIFMvQQotCQkJCUFWRU5JREEgSU5ERVBFTkRFTkNJQSwgMzUwMCwgTE9URUFNRU5UTyBJTkRVU1RSSUFMCi0JCQkJVEFVQkFURSBTQU8gUEFVTE8gMTIwMzItMDAwCi0JCQkJQlJBWklMCi0KLTEwLThDLUNGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTEwOENDRiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTkzLUU5ICAgKGhleCkJCUFwcGxlLCBJbmMuCi0xMDkzRTkgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTlBLUREICAgKGhleCkJCUFwcGxlIEluYwotMTA5QUREICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtQTEtM0IgICAoaGV4KQkJRlVKSUtVUkEgUlVCQkVSIExURC4KLTEwQTEzQiAgICAgKGJhc2UgMTYpCQlGVUpJS1VSQSBSVUJCRVIgTFRELgotCQkJCTEtODQwLE1paGFzaGksT21peWEKLQkJCQlTYWl0YW1hICAgMzMwLTA4NTYKLQkJCQlKQVBBTgotCi0xMC1CNy1GNiAgIChoZXgpCQlQbGFzdG9mb3JtIEluZHVzdHJpZXMgTHRkLgotMTBCN0Y2ICAgICAoYmFzZSAxNikJCVBsYXN0b2Zvcm0gSW5kdXN0cmllcyBMdGQuCi0JCQkJVW5pdHMgMTUwNkEgLSAxNTEyLCBNaXRhIENlbnRyZSwKLQkJCQk1NTItNTY2IENhc3RsZSBQZWFrIFJvYWQKLQkJCQlLd2FpIENodW5nICAKLQkJCQlIT05HIEtPTkcKLQotMTAtQkEtQTUgICAoaGV4KQkJR0FOQSBJJkMgQ08uLCBMVEQKLTEwQkFBNSAgICAgKGJhc2UgMTYpCQlHQU5BIEkmQyBDTy4sIExURAotCQkJCTE1NC0xNyBreW91bmdkb25nIEIvRCAzRiBrYXJhay1kb25nIHNvbmdwYS1ndQotCQkJCVNlb3VsIEtvcmVhIDEzOC0xNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTAtQzUtODYgICAoaGV4KQkJQklPIFNPVU5EIExBQiBDTy4sIExURC4KLTEwQzU4NiAgICAgKGJhc2UgMTYpCQlCSU8gU09VTkQgTEFCIENPLiwgTFRELgotCQkJCVN1aXRlIDMxMSwgMzEyIFNLbiBUZWNobm8gUGFyayAKLQkJCQlCaXogQ2VudGVyIDE5MC0xIFNhbmdkYWV3b24tZG9uZywgSnVuZ3dvbi1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvLCA0NjItNzIxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTEwLUM3LTNGICAgKGhleCkJCU1pZGFzIEtsYXJrIFRla25payBMdGQKLTEwQzczRiAgICAgKGJhc2UgMTYpCQlNaWRhcyBLbGFyayBUZWtuaWsgTHRkCi0JCQkJS2xhcmsgVGVrbmlrIEJ1aWxkaW5nCi0JCQkJV2FsdGVyIE5hc2ggUm9hZAotCQkJCUtpZGRlcm1pbnN0ZXIgV29yY2VzdGVyc2hpcmUgRFkxMSA3SEoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0xMC1DQS04MSAgIChoZXgpCQlQUkVDSUEKLTEwQ0E4MSAgICAgKGJhc2UgMTYpCQlQUkVDSUEKLQkJCQlMZSBydWlzc29sIFZFWVJBUwotCQkJCUJQIDEwNgotCQkJCVBSSVZBUyAgMDcwMDEKLQkJCQlGUkFOQ0UKLQotMTAtQ0MtREIgICAoaGV4KQkJQVhJTVVNIFBST0RVSVRTIEVMRUNUUk9OSVFVRVMKLTEwQ0NEQiAgICAgKGJhc2UgMTYpCQlBWElNVU0gUFJPRFVJVFMgRUxFQ1RST05JUVVFUwotCQkJCVpJIERFTFRBIElORFVTVFJJRQotCQkJCUJQIDcxIExBIFZBTEVOVElORQotCQkJCU1BUlNFSUxMRSBDRURFWCAxMSAgMTMzNjgKLQkJCQlGUkFOQ0UKLQotMTAtRTItRDUgICAoaGV4KQkJUWkgSGFyZHdhcmUgSW5jLgotMTBFMkQ1ICAgICAoYmFzZSAxNikJCVFpIEhhcmR3YXJlIEluYy4KLQkJCQk1NTUgNFRIIFNUUkVFVCAjNDAzCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtRTMtQzcgICAoaGV4KQkJU2VvaHdhIFRlbGVjb20KLTEwRTNDNyAgICAgKGJhc2UgMTYpCQlTZW9od2EgVGVsZWNvbQotCQkJCTY3OCBTZW9od2EgQmxkZwotCQkJCUdhc2FuLURvbmcsIEd1bWNoZW9uLUd1IFNlb3VsIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTAtRTYtQUUgICAoaGV4KQkJU291cmNlIFRlY2hub2xvZ2llcywgTExDCi0xMEU2QUUgICAgIChiYXNlIDE2KQkJU291cmNlIFRlY2hub2xvZ2llcywgTExDCi0JCQkJMjkxMCBXaGl0ZWhhbGwgUGFyayBEcml2ZQotCQkJCUNoYXJsb3R0ZSBOQyAyODI3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtRTgtRUUgICAoaGV4KQkJUGhhc2VTcGFjZQotMTBFOEVFICAgICAoYmFzZSAxNikJCVBoYXNlU3BhY2UKLQkJCQkxOTMzIERhdmlzIFN0IFN1aXRlIDMxMgotCQkJCVNhbiBMZWFuZHJvIENBIDk0NTc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMS0wMC1BQSAgIChoZXgpCQlQUklWQVRFCi0xMTAwQUEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTE0LTA3LTA4ICAgKGhleCkJCVBSSVZBVEUKLTE0MDcwOCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMTQtMDctRTAgICAoaGV4KQkJQWJyYW50aXggQUcKLTE0MDdFMCAgICAgKGJhc2UgMTYpCQlBYnJhbnRpeCBBRwotCQkJCUZvZXJybGlidWNrc3RyYXNzZSA2NgotCQkJCVp1ZXJpY2ggWkggODAwNQotCQkJCVNXSVRaRVJMQU5ECi0KLTE0LTE0LTRCICAgKGhleCkJCUZVSklBTiBTVEFSLU5FVCBDT01NVU5JQ0FUSU9OIENPLixMVEQKLTE0MTQ0QiAgICAgKGJhc2UgMTYpCQlGVUpJQU4gU1RBUi1ORVQgQ09NTVVOSUNBVElPTiBDTy4sTFRECi0JCQkJMTktMjIjIEJ1aWxkaW5nLFN0YXItbmV0IFNjaWVuY2UgUGxhemEsSnV5dWFuemhvdSwgCi0JCQkJNjE4IEppbnNoYW4gUm9hZAotCQkJCUZVWkhPVSBGVUpJQU4gMzUwMDAyCi0JCQkJQ0hJTkEKLQotMTQtMUItQkQgICAoaGV4KQkJVm9sZXggSW5jLgotMTQxQkJEICAgICAoYmFzZSAxNikJCVZvbGV4IEluYy4KLQkJCQk5MTUgVGF0ZSBCbHZkLiBTRQotCQkJCVN1aXRlIDEzMAotCQkJCUhpY2tvcnkgTkMgMjg2MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE0LTM1LUIzICAgKGhleCkJCUZ1dHVyZSBEZXNpZ25zLCBJbmMuCi0xNDM1QjMgICAgIChiYXNlIDE2KQkJRnV0dXJlIERlc2lnbnMsIEluYy4KLQkJCQkyNzAyIFRyaWFuYSBCbHZkCi0JCQkJSHVudHN2aWxsZSBBTCAzNTgwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTQtM0UtNjAgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTE0M0U2MCAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTYwMCBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDJFNgotCQkJCUNBTkFEQQotCi0xNC00Qy0xQSAgIChoZXgpCQlNYXggQ29tbXVuaWNhdGlvbiBHbWJICi0xNDRDMUEgICAgIChiYXNlIDE2KQkJTWF4IENvbW11bmljYXRpb24gR21iSAotCQkJCVNpZW1lbnNzdHJhc3NlIDQ3Ci0JCQkJUmVsbGluZ2VuICAyNTQ2MgotCQkJCUdFUk1BTlkKLQotMTQtNTQtMTIgICAoaGV4KQkJRW50aXMgQ28uLCBMdGQuCi0xNDU0MTIgICAgIChiYXNlIDE2KQkJRW50aXMgQ28uLCBMdGQuCi0JCQkJMi0yMC02LCBIYW5hb2thIEJsZGcsIDZGCi0JCQkJTmlob25iYXNoaSBIYW1hY2hvLCBDaHVvLWt1Ci0JCQkJVG9reW8gIDEwMzAwMDcKLQkJCQlKQVBBTgotCi0xNC01QS0wNSAgIChoZXgpCQlBcHBsZSwgSW5jLgotMTQ1QTA1ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xNC02RS0wQSAgIChoZXgpCQlQUklWQVRFCi0xNDZFMEEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTE0LTczLTczICAgKGhleCkJCVRVQklUQUsgVUVLQUUKLTE0NzM3MyAgICAgKGJhc2UgMTYpCQlUVUJJVEFLIFVFS0FFCi0JCQkJQU5JQkFMIFNULgotCQkJCUdFQlpFCi0JCQkJS09DQUVMSSAgNDE0NzAKLQkJCQlUVVJLRVkKLQotMTQtNzQtMTEgICAoaGV4KQkJUklNCi0xNDc0MTEgICAgIChiYXNlIDE2KQkJUklNCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgM1c4Ci0JCQkJQ0FOQURBCi0KLTE0LTdELUIzICAgKGhleCkJCUpPQSBURUxFQ09NLkNPLixMVEQKLTE0N0RCMyAgICAgKGJhc2UgMTYpCQlKT0EgVEVMRUNPTS5DTy4sTFRECi0JCQkJMTAwNyxTaWNveCB0b3dlciw1MTMtMTQsU2FuZ2RhZXdvbi1kb25nLEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjItODA2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTE0LUE2LTJDICAgKGhleCkJCVMuTS4gRGV6YWMgUy5BLgotMTRBNjJDICAgICAoYmFzZSAxNikJCVMuTS4gRGV6YWMgUy5BLgotCQkJCVZpYWwgU2FudCBqb3JkaSBTL04KLQkJCQlQb2wuIEluZC4gQ2FuIE1pdGphbnMKLQkJCQlWaWxhZGVjYXZhbGxzIEJhcmNlbG9uYSAwODIzMgotCQkJCVNQQUlOCi0KLTE0LUE4LTZCICAgKGhleCkJCVNoZW5aaGVuIFRlbGFjb20gU2NpZW5jZSZUZWNobm9sb2d5IENvLiwgTHRkCi0xNEE4NkIgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gVGVsYWNvbSBTY2llbmNlJlRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlCMTcwMS8xNzA1IFBhdmlsaW9uLCBIdWEgUWlhbmcgQmVpIFJENDAwMiwgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTE0LUE5LUUzICAgKGhleCkJCU1TVCBDT1JQT1JBVElPTgotMTRBOUUzICAgICAoYmFzZSAxNikJCU1TVCBDT1JQT1JBVElPTgotCQkJCTR0aCBGbG9vciBMYXdmb3JkIEhvdXNlCi0JCQkJQWxiZXJ0IFBsYWNlCi0JCQkJTG9uZG9uIEVuZ2xhbmQgTjMgMSBSTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTE0LUI3LTNEICAgKGhleCkJCUFSQ0hFQU4gVGVjaG5vbG9naWVzCi0xNEI3M0QgICAgIChiYXNlIDE2KQkJQVJDSEVBTiBUZWNobm9sb2dpZXMKLQkJCQkyMCBQbGFjZSBQcmF4IFBhcmlzCi0JCQkJTU9OVEFVQkFOICA4MjAwMAotCQkJCUZSQU5DRQotCi0xNC1DMi0xRCAgIChoZXgpCQlTYWJ0ZWNoIEluZHVzdHJpZXMKLTE0QzIxRCAgICAgKGJhc2UgMTYpCQlTYWJ0ZWNoIEluZHVzdHJpZXMKLQkJCQkyMzIzMSBMYSBQYWxtYSBBdmUKLQkJCQlZb3JiYSBMaW5kYSBDYSA5Mjg4Ny00Nzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xNC1ENi00RCAgIChoZXgpCQlELUxpbmsgSW50ZXJuYXRpb25hbAotMTRENjREICAgICAoYmFzZSAxNikJCUQtTGluayBJbnRlcm5hdGlvbmFsCi0JCQkJMSBJTlRFUk5BVElPTkFMIEJVU0lORVNTIFBBUksKLQkJCQkjMDMtMTIsIFRIRSBTWU5FUkdZIAotCQkJCTYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi0xNC1ENy02RSAgIChoZXgpCQlDT05DSCBFTEVDVFJPTklDIENvLixMdGQKLTE0RDc2RSAgICAgKGJhc2UgMTYpCQlDT05DSCBFTEVDVFJPTklDIENvLixMdGQKLQkJCQlOby4zIEtlamkgMXN0IExvYWQuCi0JCQkJVGFpbmFuICA3MDk1NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMTQtREEtRTkgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0xNERBRTkgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMTQtRUItMzMgICAoaGV4KQkJQlNNZWRpYXNvZnQgQ28uLCBMdGQuCi0xNEVCMzMgICAgIChiYXNlIDE2KQkJQlNNZWRpYXNvZnQgQ28uLCBMdGQuCi0JCQkJIzYwMywgR2FyZGVuIEJsZGcuLCAxNC0xMywgWW9pZG8tRG9uZywgWW91bmdkZXVuZ3BvLUd1Ci0JCQkJU2VvdWwgIDE1MC04NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTQtRUUtOUQgICAoaGV4KQkJQWlyTmF2IFN5c3RlbXMgTExDCi0xNEVFOUQgICAgIChiYXNlIDE2KQkJQWlyTmF2IFN5c3RlbXMgTExDCi0JCQkJNDY2MCBMYSBKb2xsYSBWaWxsYWdlIERyLiAtIFN1aXRlIDUwMAotCQkJCVNhbiBEaWVnbyBDYWxpZm9ybmlhIENBIDkyMTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xNC1GMC1DNSAgIChoZXgpCQlYdHJlbWlvIEx0ZC4KLTE0RjBDNSAgICAgKGJhc2UgMTYpCQlYdHJlbWlvIEx0ZC4KLQkJCQlQT0IgNTI0NgotCQkJCUhlcnplbHlpYSAgNDYxNTIKLQkJCQlJU1JBRUwKLQotMTQtRkUtQUYgICAoaGV4KQkJU0FHSVRUQVIgTElNSVRFRAotMTRGRUFGICAgICAoYmFzZSAxNikJCVNBR0lUVEFSIExJTUlURUQKLQkJCQkyLTEwMiwgQkxEMzQsIEJBSVdBTkdNT0xJWVVBTgotCQkJCVhJQkVJV0FORywgSEFJRElBTgotCQkJCUJFSUpJTkcgIDEwMDA5NAotCQkJCUNISU5BCi0KLTE0LUZFLUI1ICAgKGhleCkJCURlbGwgSW5jCi0xNEZFQjUgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TOlJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTAxLUUzICAgKGhleCkJCUVsZWt0cm9iaXQgV2lyZWxlc3MgQ29tbXVuaWNhdGlvbnMgTHRkCi0xODAxRTMgICAgIChiYXNlIDE2KQkJRWxla3Ryb2JpdCBXaXJlbGVzcyBDb21tdW5pY2F0aW9ucyBMdGQKLQkJCQlUdXRraWphbnRpZSA4Ci0JCQkJT3VsdSAgOTA1NzAKLQkJCQlGSU5MQU5ECi0KLTE4LTAzLTczICAgKGhleCkJCURlbGwgSW5jCi0xODAzNzMgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TOlJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTA2LTc1ICAgKGhleCkJCURJTEFYIEludGVsY29tIEdtYkgKLTE4MDY3NSAgICAgKGJhc2UgMTYpCQlESUxBWCBJbnRlbGNvbSBHbWJICi0JCQkJQWx0LU1vYWJpdCA5NmIKLQkJCQlCZXJsaW4gIDEwNTU5Ci0JCQkJR0VSTUFOWQotCi0xOC0wQi01MiAgIChoZXgpCQlOYW5vdHJvbiBUZWNobm9sb2dpZXMgR21iSAotMTgwQjUyICAgICAoYmFzZSAxNikJCU5hbm90cm9uIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJQWx0LU1vYWJpdCA2MAotCQkJCUJlcmxpbiAgMTA1NTUKLQkJCQlHRVJNQU5ZCi0KLTE4LTBDLTc3ICAgKGhleCkJCVdlc3Rpbmdob3VzZSBFbGVjdHJpYyBDb21wYW55LCBMTEMKLTE4MEM3NyAgICAgKGJhc2UgMTYpCQlXZXN0aW5naG91c2UgRWxlY3RyaWMgQ29tcGFueSwgTExDCi0JCQkJMTAwMCBXZXN0aW5naG91c2UgRHJpdmUKLQkJCQlTdWl0ZSAxNTIKLQkJCQlDcmFuYmVycnkgVG93bnNoaXAgUEEgMTYwNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTE0LTU2ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0xODE0NTYgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotMTgtMTctMTQgICAoaGV4KQkJREFFV09PSVMKLTE4MTcxNCAgICAgKGJhc2UgMTYpCQlEQUVXT09JUwotCQkJCTdGIE5hbWt3YW5nIENlbnRsZXggQmxkZy4gNDQwLTQgQ2hlb25nY2hlb24yLWRvbmcgCi0JCQkJSW5jaGVvbiBQdXB5ZW9uZy1ndSA4MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0xOC0yOC02MSAgIChoZXgpCQlBaXJUaWVzIFdpcmVsZXNzIE5ldHdvcmtzCi0xODI4NjEgICAgIChiYXNlIDE2KQkJQWlyVGllcyBXaXJlbGVzcyBOZXR3b3JrcwotCQkJCUdpP29lbGJhaGFyIE1haC4gQXZuaSBEaWxsaWdpbCBTb2suIENlbGlrIElzIE1lcmtlemkgTm86NSBNZWNpZGl5ZWtveQotCQkJCUlTVEFOQlVMICAzNDM5NAotCQkJCVRVUktFWQotCi0xOC0zQi1EMiAgIChoZXgpCQlCWUQgUHJlY2lzaW9uIE1hbnVmYWN0dXJlIENvbXBhbnkgTHRkLgotMTgzQkQyICAgICAoYmFzZSAxNikJCUJZRCBQcmVjaXNpb24gTWFudWZhY3R1cmUgQ29tcGFueSBMdGQuCi0JCQkJTm8zMDAwIExvbmdEb25nIEF2ZW51ZSwgUHVkb25nIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLTE4LTNELUEyICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMTgzREEyICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMTgtNDItMkYgICAoaGV4KQkJQWxjYXRlbCBMdWNlbnQKLTE4NDIyRiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIEx1Y2VudAotCQkJCVZpYSBUcmVudG8sIDMwCi0JCQkJVmltZXJjYXRlIE1CIDIwMDU5Ci0JCQkJSVRBTFkKLQotMTgtNEUtOTQgICAoaGV4KQkJTUVTU09BIFRFQ0hOT0xPR0lFUyBJTkMuCi0xODRFOTQgICAgIChiYXNlIDE2KQkJTUVTU09BIFRFQ0hOT0xPR0lFUyBJTkMuCi0JCQkJMTM2MTEgMTJ0aCBTdC4sIFVuaXQgQgotCQkJCUNoaW5vIENBIDkxNzEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xOC04MC1DRSAgIChoZXgpCQlCYXJiZXJyeSBTb2x1dGlvbnMgTHRkCi0xODgwQ0UgICAgIChiYXNlIDE2KQkJQmFyYmVycnkgU29sdXRpb25zIEx0ZAotCQkJCTIvMTMgTmF2aXRpIFBsYWNlCi0JCQkJQnJvd25zIEJheQotCQkJCUF1Y2tsYW5kICAwNjMwCi0JCQkJTkVXIFpFQUxBTkQKLQotMTgtODAtRjUgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQgU2hhbmdoYWkgQmVsbCBDby4sIEx0ZCAKLTE4ODBGNSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudCBTaGFuZ2hhaSBCZWxsIENvLiwgTHRkIAotCQkJCU5vLiAzODksIE5pbmdxaWFvIFJvYWQsIFB1ZG9uZyBKaW5xaWFvLAotCQkJCVNoYW5naGFpICAyMDEyMDYKLQkJCQlDSElOQQotCi0xOC04Ni1BQyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMTg4NkFDICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0xOC04RS1ENSAgIChoZXgpCQlQaGlsaXBzIElubm92YXRpdmUgQXBwbGljYXRpb24gTlYgCi0xODhFRDUgICAgIChiYXNlIDE2KQkJUGhpbGlwcyBJbm5vdmF0aXZlIEFwcGxpY2F0aW9uIE5WIAotCQkJCVBhdGhvZWtld2VnIDExCi0JCQkJQnJ1Z2VzIFdlc3QgRmxhbmRlcnMgODAwMAotCQkJCUJFTEdJVU0KLQotMTgtOTItMkMgICAoaGV4KQkJVmlydHVhbCBJbnN0cnVtZW50cwotMTg5MjJDICAgICAoYmFzZSAxNikJCVZpcnR1YWwgSW5zdHJ1bWVudHMKLQkJCQkxMDAgRW50ZXJwcmlzZSBXYXkKLQkJCQlTdWl0ZSBDLTMKLQkJCQlTY290dHMgVmFsbGV5IENBIDk1MDY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xOC1BOS0wNSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTE4QTkwNSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtQUItRjUgICAoaGV4KQkJVWx0cmEgRWxlY3Ryb25pY3MgLSBFbGVjdHJpY3MKLTE4QUJGNSAgICAgKGJhc2UgMTYpCQlVbHRyYSBFbGVjdHJvbmljcyAtIEVsZWN0cmljcwotCQkJCUtpbmdzZGl0Y2ggTGFuZQotCQkJCUNoZWx0ZW5oYW0gR2xvdWNlc3RlcnNoaXJlIEdMNTEgOVBHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMTgtQUUtQkIgICAoaGV4KQkJU2llbWVucyBQcm9ncmFtbS0gdW5kIFN5c3RlbWVudHdpY2tsdW5nIEdtYkgmQ28uS0cKLTE4QUVCQiAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIFByb2dyYW1tLSB1bmQgU3lzdGVtZW50d2lja2x1bmcgR21iSCZDby5LRwotCQkJCUNvbW11bmljYXRpb25zLCBNZWRpYSBhbmQgVGVjaG5vbG9neQotCQkJCUhhcmJ1cmdlciBTY2hsb3Nzc3RyYXNzZSAxOAotCQkJCUhhbWJ1cmcgIEQtMjEwNzkKLQkJCQlHRVJNQU5ZCi0KLTE4LUFGLTlGICAgKGhleCkJCURJR0lUUk9OSUMgQXV0b21hdGlvbnNhbmxhZ2VuIEdtYkgKLTE4QUY5RiAgICAgKGJhc2UgMTYpCQlESUdJVFJPTklDIEF1dG9tYXRpb25zYW5sYWdlbiBHbWJICi0JCQkJQXVmIGRlciBMYW5nd2llcyAxCi0JCQkJV2FsbGJhY2ggSGVzc2VuIDY1NTEwCi0JCQkJR0VSTUFOWQotCi0xOC1CMi0wOSAgIChoZXgpCQlUb3JyZXkgUGluZXMgTG9naWMsIEluYwotMThCMjA5ICAgICAoYmFzZSAxNikJCVRvcnJleSBQaW5lcyBMb2dpYywgSW5jCi0JCQkJMTI2NTEgSGlnaCBCbHVmZiBEcml2ZSwgIzEwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtQjMtQkEgICAoaGV4KQkJTmV0bG9naWMgQUIKLTE4QjNCQSAgICAgKGJhc2UgMTYpCQlOZXRsb2dpYyBBQgotCQkJCURhdGF2aT9vZWdlbiAxNEEKLQkJCQlBU0tJTSBWaT9vZXN0cmEgR2k/b2V0YWxhbmQgNDM2MzIKLQkJCQlTV0VERU4KLQotMTgtQjQtMzAgICAoaGV4KQkJTmVzdCBMYWJzIEluYy4KLTE4QjQzMCAgICAgKGJhc2UgMTYpCQlOZXN0IExhYnMgSW5jLgotCQkJCTIzNSBBbG1hIAotCQkJCVBhbG8gQWx0byBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtQjctOUUgICAoaGV4KQkJSW52b3hpYQotMThCNzlFICAgICAoYmFzZSAxNikJCUludm94aWEKLQkJCQk4NyBydWUgZHUgR291dmVybmV1ciBHaT9vZW5lcmFsIEVib3VpP29lCi0JCQkJSXNzeS1MZXMtTW91bGluZWF1eCAgOTIxMzAKLQkJCQlGUkFOQ0UKLQotMTgtQzAtODYgICAoaGV4KQkJQnJvYWRjb20gQ29ycG9yYXRpb24KLTE4QzA4NiAgICAgKGJhc2UgMTYpCQlCcm9hZGNvbSBDb3Jwb3JhdGlvbgotCQkJCTUzMDAgQ2FsaWZvcm5pYSBBdmVudWUKLQkJCQlJcnZpbmUgQ0EgOTI2MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUQwLTcxICAgKGhleCkJCURBU0FOIFNNQywgSW5jLgotMThEMDcxICAgICAoYmFzZSAxNikJCURBU0FOIFNNQywgSW5jLgotCQkJCTMwOSwgIEJ1bmRhbmcgVGVjaG5vIFBhcmssIDE1MSwgWWF0YXAtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTgtRTItODggICAoaGV4KQkJU1RUIENvbmRpZ2kKLTE4RTI4OCAgICAgKGJhc2UgMTYpCQlTVFQgQ29uZGlnaQotCQkJCUFnbmVzZnJpZHN2YWdlbiAxMTMgQQotCQkJCU1hbG1vIFNrYW5lIDIxMjM3Ci0JCQkJU1dFREVOCi0KLTE4LUU3LUY0ICAgKGhleCkJCUFwcGxlCi0xOEU3RjQgICAgIChiYXNlIDE2KQkJQXBwbGUKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUVGLTYzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTE4RUY2MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUY0LTZBICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTE4RjQ2QSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMTgtRjYtNTAgICAoaGV4KQkJTXVsdGltZWRpYSBQYWNpZmljIExpbWl0ZWQKLTE4RjY1MCAgICAgKGJhc2UgMTYpCQlNdWx0aW1lZGlhIFBhY2lmaWMgTGltaXRlZAotCQkJCTEgTWF0aGVzb24gU3RyZWV0LCBTaGVsbCBUb3dlciAyOUYvMTIKLQkJCQlUaW1lIFNxdWFyZSwgQ2F1c2V3YXkgQmF5Ci0JCQkJMDAwMDAwCi0JCQkJSE9ORyBLT05HCi0KLTE4LUZDLTlGICAgKGhleCkJCUNoYW5naGUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0xOEZDOUYgICAgIChiYXNlIDE2KQkJQ2hhbmdoZSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQk2dGggRmxvb3IsIEJ1aWxkaW5nIEIsIERhamlhaGFvIFNxdWFyZSwgWXVpP29laT9vZWFuIDFzdCBSb2FkLCBCYW9pP29laT9vZWFuLCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAxCi0JCQkJQ0hJTkEKLQotMUMtMDYtNTYgICAoaGV4KQkJSURZIENvcnBvcmF0aW9uCi0xQzA2NTYgICAgIChiYXNlIDE2KQkJSURZIENvcnBvcmF0aW9uCi0JCQkJSURFTUlUU1UgS29yYWt1ZW4gQmxkIDlGCi0JCQkJMS0yLTEgS29pc2hpa2F3YQotCQkJCUJ1bmt5by1rdSBUb2t5byAxMTItMDAwMgotCQkJCUpBUEFOCi0KLTFDLTBGLUNGICAgKGhleCkJCVN5cHJvIE9wdGljcyBHbWJICi0xQzBGQ0YgICAgIChiYXNlIDE2KQkJU3lwcm8gT3B0aWNzIEdtYkgKLQkJCQlDYXJsLVplaXNzLVByb21lbmFkZSAxMAotCQkJCUplbmEgVGh1cmluZ2lhIDA3NzQ1Ci0JCQkJR0VSTUFOWQotCi0xQy0xMi05RCAgIChoZXgpCQlJRUVFIFBFUyBQU1JDL1NVQiAgICAgCi0xQzEyOUQgICAgIChiYXNlIDE2KQkJSUVFRSBQRVMgUFNSQy9TVUIgICAgIAotCQkJCSBXb3JraW5nIEdyb3VwIEg3L1N1YiBDNyAoSUVFRSBQQzM3LjIzOCkKLQkJCQk0NDUgSG9lcyBMYW5lCi0JCQkJUGlzY2F0YXdheSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtMTQtNDggICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTFDMTQ0OCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTFDLTE3LUQzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTFDMTdEMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTFDLTE4LTRBICAgKGhleCkJCVNoZW5aaGVuIFJpY2hlckxpbmsgVGVjaG5vbG9naWVzIENvLixMVEQKLTFDMTg0QSAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBSaWNoZXJMaW5rIFRlY2hub2xvZ2llcyBDby4sTFRECi0JCQkJNzAzLEJ1aWxkaW5nIFcxLUEsSGlnaC1UZWNoIEluZHVzdHJpYWwgUGFyayxLZUppTmFuIDFzdCBSb2FkLE5hblNoYW4sCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTFDLTE5LURFICAgKGhleCkJCWV5ZXZpcyBHbWJICi0xQzE5REUgICAgIChiYXNlIDE2KQkJZXlldmlzIEdtYkgKLQkJCQlIdW5kc3NjaGxlZXN0cmFzc2UgMjMKLQkJCQlSZXV0bGluZ2VuIEJXIDcyNzY2Ci0JCQkJR0VSTUFOWQotCi0xQy0xRC02NyAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0xQzFENjcgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTFDLTMzLTREICAgKGhleCkJCUlUUyBUZWxlY29tCi0xQzMzNEQgICAgIChiYXNlIDE2KQkJSVRTIFRlbGVjb20KLQkJCQkyOSBIYW1ldHp1ZGEgc3QuIAotCQkJCUF6dXIgSXNyYWVsIDU4MDAwMQotCQkJCUlTUkFFTAotCi0xQy0zNS1GMSAgIChoZXgpCQlORVcgTGlmdCBOZXVlIEVsZWt0cm9uaXNjaGUgV2VnZSBTdGV1ZXJ1bmdzYmF1IEdtYkgKLTFDMzVGMSAgICAgKGJhc2UgMTYpCQlORVcgTGlmdCBOZXVlIEVsZWt0cm9uaXNjaGUgV2VnZSBTdGV1ZXJ1bmdzYmF1IEdtYkgKLQkJCQlMb2NoaGFtZXIgU2NobGFnIDgKLQkJCQlHcmFlZmVsZmluZyBCYXZhcmlhIDgyMTY2Ci0JCQkJR0VSTUFOWQotCi0xQy0zQS00RiAgIChoZXgpCQlBY2N1U3BlYyBFbGVjdHJvbmljcywgTExDCi0xQzNBNEYgICAgIChiYXNlIDE2KQkJQWNjdVNwZWMgRWxlY3Ryb25pY3MsIExMQwotCQkJCTgxNDAgSGF3dGhvcm5lIERyaXZlCi0JCQkJRXJpZSBQZW5uc3lsdmFuaWEgMTY1MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTFDLTNELUU3ICAgKGhleCkJCVNpZ21hIEtva2kgQ28uLEx0ZC4KLTFDM0RFNyAgICAgKGJhc2UgMTYpCQlTaWdtYSBLb2tpIENvLixMdGQuCi0JCQkJMS0xOS05IE1pZG9yaQotCQkJCVN1bWlkYS1rdSBUb2t5byAxMzAtMDAyMQotCQkJCUpBUEFOCi0KLTFDLTRCLUQ2ICAgKGhleCkJCUF6dXJlV2F2ZQotMUM0QkQ2ICAgICAoYmFzZSAxNikJCUF6dXJlV2F2ZQotCQkJCThGLiwgTm8uIDk0LCBCYW9zaG9uZyBSZC4KLQkJCQlYaW5kaWFuIENpdHksIFRhaXBlaSBDb3VudHkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMUMtNjUtOUQgICAoaGV4KQkJTGl0ZW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTFDNjU5RCAgICAgKGJhc2UgMTYpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLDkwLENoaWVuIDEgUm9hZCxDaHVuZ0hvLFRhaXBlaSBIc2llbiwKLQkJCQlUYWlwZWkgIDIzNTg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0xQy02Ri02NSAgIChoZXgpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotMUM2RjY1ICAgICAoYmFzZSAxNikJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0JCQkJUGluLUplbiBDaXR5LAotCQkJCVBpbi1KZW4gVGFveXVhbiAzMjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTFDLTc1LTA4ICAgKGhleCkJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuIAotMUM3NTA4ICAgICAoYmFzZSAxNikJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuIAotCQkJCU5PLiAyNSwgVEhFIDNSRCBTdHJlZXQgS1VOU0hBTiBFWFBPUlQgUFJPQ0VTU0lORyBaT05FIAotCQkJCUtVTlNIQU4gU1VaSE9VICAyMTUzMDAgCi0JCQkJQ0hJTkEKLQotMUMtN0MtMTEgICAoaGV4KQkJRUlEIAotMUM3QzExICAgICAoYmFzZSAxNikJCUVJRCAKLQkJCQlSdWEgUXVpbnRhIGRvcyBNZWRyb25oZWlyb3MgCi0JCQkJQ2hhcm5lY2EgZGEgQ2FwYXJpY2EgICAyODIwLTQ4NgotCQkJCVBPUlRVR0FMCi0KLTFDLTdFLUU1ICAgKGhleCkJCUQtTGluayBJbnRlcm5hdGlvbmFsCi0xQzdFRTUgICAgIChiYXNlIDE2KQkJRC1MaW5rIEludGVybmF0aW9uYWwKLQkJCQkxIEludGVybmF0aW9uYWwgQnVzaW5lc3MgUGFyaywgIzAzLTEyLCBUaGUgU3luZXJneSAKLQkJCQk2MDk5MTcKLQkJCQlTSU5HQVBPUkUKLQotMUMtODMtQjAgICAoaGV4KQkJTGlua2VkIElQIEdtYkgKLTFDODNCMCAgICAgKGJhc2UgMTYpCQlMaW5rZWQgSVAgR21iSAotCQkJCUtpcmNoZW5zdHJhc3NlIDkKLQkJCQlBbmlmIC8gTmllZGVyYWxtIFNCRyA1MDgxCi0JCQkJQVVTVFJJQQotCi0xQy04Ri04QSAgIChoZXgpCQlQaGFzZSBNb3Rpb24gQ29udHJvbCBTcEEKLTFDOEY4QSAgICAgKGJhc2UgMTYpCQlQaGFzZSBNb3Rpb24gQ29udHJvbCBTcEEKLQkJCQl2aWEgQWRhbW9saSwgNDYxCi0JCQkJR2Vub3ZhICBJVDE2MTQxCi0JCQkJSVRBTFkKLQotMUMtOTUtNUQgICAoaGV4KQkJSS1MQVggRUxFQ1RST05JQ1MgSU5DLgotMUM5NTVEICAgICAoYmFzZSAxNikJCUktTEFYIEVMRUNUUk9OSUNTIElOQy4KLQkJCQkyMjgzIEFSR0VOVElBIFJELi0gVU5JVCAjIDEwCi0JCQkJTUlTU0lTU0FVR0EgT04uIEw1TiA1WjIKLQkJCQlDQU5BREEKLQotMUMtQUEtMDcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMUNBQTA3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtQUYtRjcgICAoaGV4KQkJRC1MSU5LIElOVEVSTkFUSU9OQUwgUFRFIExJTUlURUQKLTFDQUZGNyAgICAgKGJhc2UgMTYpCQlELUxJTksgSU5URVJOQVRJT05BTCBQVEUgTElNSVRFRAotCQkJCTEgSU5URVJOQVRJT05BTCAgQlVTSU5FU1MgIFBBUkssCi0JCQkJICMwMy0xMiwgVEhFIFNZTkVSR1kKLQkJCQk2MDk5MTcKLQkJCQlTSU5HQVBPUkUKLQotMUMtQkQtMEUgICAoaGV4KQkJQW1wbGlmaWVkIEVuZ2luZWVyaW5nIFB0eSBMdGQKLTFDQkQwRSAgICAgKGJhc2UgMTYpCQlBbXBsaWZpZWQgRW5naW5lZXJpbmcgUHR5IEx0ZAotCQkJCTUgVHVybmVyIEF2ZW51ZQotCQkJCUJlbnRsZXkgV0EgNjEwMgotCQkJCUFVU1RSQUxJQQotCi0xQy1CRC1COSAgIChoZXgpCQlELUxJTksgSU5URVJOQVRJT05BTCBQVEUgTElNSVRFRAotMUNCREI5ICAgICAoYmFzZSAxNikJCUQtTElOSyBJTlRFUk5BVElPTkFMIFBURSBMSU1JVEVECi0JCQkJMSBJTlRFUk5BVElPTkFMICBCVVNJTkVTUyAgUEFSSywgIzAzLTEyCi0JCQkJVEhFIFNZTkVSR1ksICA2MDk5MTcKLQkJCQlTSU5HQVBPUkUKLQotMUMtQzEtREUgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0xQ0MxREUgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTFDLURGLTBGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTFDREYwRiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTFDLUUyLUNDICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0xQ0UyQ0MgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTFDLUYwLTYxICAgKGhleCkJCVNDQVBTIEdtYkgKLTFDRjA2MSAgICAgKGJhc2UgMTYpCQlTQ0FQUyBHbWJICi0JCQkJQmFobmhvZnN0ci4gMTcKLQkJCQlEZWlzZW5ob2ZlbiBCYXZhcmlhIDgyMDQxCi0JCQkJR0VSTUFOWQotCi0xQy1GNS1FNyAgIChoZXgpCQlUdXJ0bGUgSW5kdXN0cnkgQ28uLCBMdGQuCi0xQ0Y1RTcgICAgIChiYXNlIDE2KQkJVHVydGxlIEluZHVzdHJ5IENvLiwgTHRkLgotCQkJCTEtMTItNCBOaXNoaW5lbWluYW1pCi0JCQkJVHN1dGl1cmEgSWJhcmFraSAzMDAtMDg0MgotCQkJCUpBUEFOCi0KLTFDLUZFLUE3ICAgKGhleCkJCUlEZW50eXRlY2ggU29sdXRpbnMgTHRkLgotMUNGRUE3ICAgICAoYmFzZSAxNikJCUlEZW50eXRlY2ggU29sdXRpbnMgTHRkLgotCQkJCTE0IEhhZGF5YSBTdHJlZXQgCi0JCQkJUmFtYXQtIEhhc2hhcm9uICA0NzIyNgotCQkJCUlTUkFFTAotCi0yMC0wNS1FOCAgIChoZXgpCQlPT08gIkluUHJvTWVkaWEiCi0yMDA1RTggICAgIChiYXNlIDE2KQkJT09PICJJblByb01lZGlhIgotCQkJCXByLjQ4MDYsIGQuNgotCQkJCVplbGVub2dyYWQgTW9zY293IDEyNDQ2NgotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0yMC0wQS01RSAgIChoZXgpCQlYaWFuZ3NoYW4gR2lhbnQgRWFnbGUgVGVjaG5vbG9neSBEZXZlbG9waW5nIGNvLixMVEQKLTIwMEE1RSAgICAgKGJhc2UgMTYpCQlYaWFuZ3NoYW4gR2lhbnQgRWFnbGUgVGVjaG5vbG9neSBEZXZlbG9waW5nIGNvLixMVEQKLQkJCQlKdWV4aSBSb2FkIG5vLjkgSnVleGkgc3RyZWV0IAotCQkJCVhpYW5nc2hhbiBDb3VudHkgWmhlamlhbmcgUHJvdmluY2UKLQkJCQlOaW5nYm8gWmhlamlhbmcgMzE1NzA4Ci0JCQkJQ0hJTkEKLQotMjAtMTItNTcgICAoaGV4KQkJTW9zdCBMdWNreSBUcmFkaW5nIEx0ZAotMjAxMjU3ICAgICAoYmFzZSAxNikJCU1vc3QgTHVja3kgVHJhZGluZyBMdGQKLQkJCQlSb29tNDAzIE5vLjUwNiBaaG9uZ3NoYW4gU291dGggMm5kIFJvYWQsWHVodWkgRGlzdHJpY3QgCi0JCQkJU2hhbmdoYWkgIDIwMDAzMgotCQkJCUNISU5BCi0KLTIwLTEzLUUwICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMjAxM0UwICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yMC0yMS1BNSAgIChoZXgpCQlMRyBFbGVjdHJvbmljcyBJbmMKLTIwMjFBNSAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcyBJbmMKLQkJCQk2MC0zOSxHYXNhbi1kb25nLEd1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My0wMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMjAtMkItQzEgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotMjAyQkMxICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTAxMDgKLQkJCQlDSElOQQotCi0yMC0yQy1CNyAgIChoZXgpCQlLb25nIFl1ZSBFbGVjdHJvbmljcyAmIEluZm9ybWF0aW9uIEluZHVzdHJ5IChYaW5odWkpIEx0ZC4KLTIwMkNCNyAgICAgKGJhc2UgMTYpCQlLb25nIFl1ZSBFbGVjdHJvbmljcyAmIEluZm9ybWF0aW9uIEluZHVzdHJ5IChYaW5odWkpIEx0ZC4KLQkJCQlLb25nIFl1ZSBJbmR1c3RyaWFsIFBhcmssIDE4IEtvbmd5dWUgUm9hZCwgSmluZ3V6aG91Ci0JCQkJWGluaHVpIERpc3RyaWN0LCAKLQkJCQlKaWFuZ21lbiBHdWFuZ2RvbmcgNTI5MTQxCi0JCQkJQ0hJTkEKLQotMjAtMzctMDYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMjAzNzA2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLTQwLTA1ICAgKGhleCkJCWZlbm8gR21iSAotMjA0MDA1ICAgICAoYmFzZSAxNikJCWZlbm8gR21iSAotCQkJCUtvbHBpbmdyaW5nIDIyCi0JCQkJT2JlcmhhY2hpbmcgQmF2YXJpYSA4MjA0MQotCQkJCUdFUk1BTlkKLQotMjAtNDEtNUEgICAoaGV4KQkJU21hcnRlaCBkLm8uby4KLTIwNDE1QSAgICAgKGJhc2UgMTYpCQlTbWFydGVoIGQuby5vLgotCQkJCVRyZyB0aWdyb3ZjZXYgMQotCQkJCVRvbG1pbiAgNTIyMAotCQkJCVNMT1ZFTklBCi0KLTIwLTQ2LUY5ICAgKGhleCkJCUFkdmFuY2VkIE5ldHdvcmsgRGV2aWNlcyAoZGJhOkFORCkKLTIwNDZGOSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBOZXR3b3JrIERldmljZXMgKGRiYTpBTkQpCi0JCQkJMzgyMCBWZW50dXJhIERyaXZlCi0JCQkJQXJsaW5ndG9uIEhlaWdodHMgSUwgNjAwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLTRBLUFBICAgKGhleCkJCUhhbnNjYW4gU3BhaW4gUy5BLgotMjA0QUFBICAgICAoYmFzZSAxNikJCUhhbnNjYW4gU3BhaW4gUy5BLgotCQkJCUF2ZGEuIGRlIGxhIFZlZ2EsIDEKLQkJCQlBbGNvYmVuZGFzIE1hZHJpZCAyODEwOAotCQkJCVNQQUlOCi0KLTIwLTRFLTZCICAgKGhleCkJCUF4eGFuYShpc3JhZWwpIGx0ZAotMjA0RTZCICAgICAoYmFzZSAxNikJCUF4eGFuYShpc3JhZWwpIGx0ZAotCQkJCUhhYmFyemVsIDM4Ci0JCQkJVGVsIGF2aXYgIDY5NzEwCi0JCQkJSVNSQUVMCi0KLTIwLTRFLTdGICAgKGhleCkJCU5FVEdFQVIKLTIwNEU3RiAgICAgKGJhc2UgMTYpCQlORVRHRUFSCi0JCQkJMzUwIEVBU1QgUExVTUVSSUEgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQUxJRk9STklBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yMC01OS1BMCAgIChoZXgpCQlQYXJhZ29uIFRlY2hub2xvZ2llcyBJbmMuCi0yMDU5QTAgICAgIChiYXNlIDE2KQkJUGFyYWdvbiBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTY4IE5vcnRoIDR0aCBSaW5nIFJkIFdlc3QsCi0JCQkJU3VpdGUgMTVCLUgKLQkJCQlCZWlqaW5nICAxMDAwODAKLQkJCQlDSElOQQotCi0yMC01Qi0yQSAgIChoZXgpCQlQUklWQVRFCi0yMDVCMkEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTIwLTZBLThBICAgKGhleCkJCVdpc3Ryb24gSW5mb0NvbW0gTWFudWZhY3R1cmluZyhLdW5zaGFuKUNvLixMdGQuCi0yMDZBOEEgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBJbmZvQ29tbSBNYW51ZmFjdHVyaW5nKEt1bnNoYW4pQ28uLEx0ZC4KLQkJCQkxNjgjIEZpcnN0IEF2ZW51ZSxLdW5zaGFuIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUKLQkJCQlLdW5zaGFuIEppYW5nc3UgMjE1MzAwCi0JCQkJQ0hJTkEKLQotMjAtNkEtRkYgICAoaGV4KQkJQXRsYXMgRWxla3Ryb25payBVSyBMaW1pdGVkCi0yMDZBRkYgICAgIChiYXNlIDE2KQkJQXRsYXMgRWxla3Ryb25payBVSyBMaW1pdGVkCi0JCQkJQTIyIEJ1bGlkaW5nLCBEb3JzZXQgR3JlZW4gVGVjaC4gUGFyawotCQkJCVdpbmZyaXRoIE5ld2J1cmdoCi0JCQkJRG9yY2hlc3RlciBEb3JzZXQgRFQyIDhaQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTIwLTZGLUVDICAgKGhleCkJCUJyYWVtYWMgQ0EgTExDCi0yMDZGRUMgICAgIChiYXNlIDE2KQkJQnJhZW1hYyBDQSBMTEMKLQkJCQk0MzEzNCBPc2dvb2QgUm9hZAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLTdDLThGICAgKGhleCkJCVF1YW50YSBNaWNyb3N5c3RlbXMsSW5jLgotMjA3QzhGICAgICAoYmFzZSAxNikJCVF1YW50YSBNaWNyb3N5c3RlbXMsSW5jLgotCQkJCU5vLjUgTGFuZSA5MSxEb25nbWVpIFJkLgotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMjAtQTItRTcgICAoaGV4KQkJTGVlLURpY2tlbnMgTHRkCi0yMEEyRTcgICAgIChiYXNlIDE2KQkJTGVlLURpY2tlbnMgTHRkCi0JCQkJUnVzaHRvbiBSZAotCQkJCURlc2Jvcm91Z2gKLQkJCQlLZXR0ZXJpbmcgTm9ydGhhbXB0b25zaGlyZSBOTjE0IDJRVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTIwLUFBLTI1ICAgKGhleCkJCUlQLU5FVCBMTEMKLTIwQUEyNSAgICAgKGJhc2UgMTYpCQlJUC1ORVQgTExDCi0JCQkJMTAyNTYgTi5XLiA0N3RoIFN0LgotCQkJCVN1bnJpc2UgRkwgMzMzNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLUIwLUY3ICAgKGhleCkJCUVuY2x1c3RyYSBHbWJICi0yMEIwRjcgICAgIChiYXNlIDE2KQkJRW5jbHVzdHJhIEdtYkgKLQkJCQlUZWNobm9wYXJrc3RyYXNzZSAxCi0JCQkJWnVyaWNoIFpIIENILTgwMDUKLQkJCQlTV0lUWkVSTEFORAotCi0yMC1CMy05OSAgIChoZXgpCQlFbnRlcmFzeXMKLTIwQjM5OSAgICAgKGJhc2UgMTYpCQlFbnRlcmFzeXMKLQkJCQk1MCBNaW51dGVtYW4gUmQKLQkJCQlBbmRvdmVyIE1BIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yMC1CNy1DMCAgIChoZXgpCQlPbWljcm9uIGVsZWN0cm9uaWNzIEdtYkgKLTIwQjdDMCAgICAgKGJhc2UgMTYpCQlPbWljcm9uIGVsZWN0cm9uaWNzIEdtYkgKLQkJCQlPYmVyZXMgUmllZCAxCi0JCQkJS2xhdXMgIDY4MzMKLQkJCQlBVVNUUklBCi0KLTIwLUJGLURCICAgKGhleCkJCURWTAotMjBCRkRCICAgICAoYmFzZSAxNikJCURWTAotCQkJCTIxIEdyYWRpbmlsb3IgU3RyCi0JCQkJQ2hpc2luYXUgIE1EMjAwMQotCQkJCU1PTERPVkEsIFJFUFVCTElDIE9GCi0KLTIwLUNGLTMwICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMjBDRjMwICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsIAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0yMC1ENS1BQiAgIChoZXgpCQlLb3JlYSBJbmZvY29tIENvLixMdGQuCi0yMEQ1QUIgICAgIChiYXNlIDE2KQkJS29yZWEgSW5mb2NvbSBDby4sTHRkLgotCQkJCTVGIFdpbnRlayBCL0QgNTExCi0JCQkJUG9pbC1kb25nCi0JCQkJVWl3YW5nIEt5dW5nZ2ktRG8gNDM3LTgzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yMC1ENi0wNyAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotMjBENjA3ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgT3UgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLTIwLUQ5LTA2ICAgKGhleCkJCUlvdGEsIEluYy4KLTIwRDkwNiAgICAgKGJhc2UgMTYpCQlJb3RhLCBJbmMuCi0JCQkJMjIxMiBRdWVlbiBBbm5lIEF2ZS4gTi4sICMzNDgKLQkJCQlTZWF0dGxlIFdBIDk4MTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yMC1GRC1GMSAgIChoZXgpCQkzQ09NIEVVUk9QRSBMVEQKLTIwRkRGMSAgICAgKGJhc2UgMTYpCQkzQ09NIEVVUk9QRSBMVEQKLQkJCQlQZW9wbGVidWlsZGluZyAyCi0JCQkJTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRmb3Jkc2hpcmUgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTIwLUZFLUNEICAgKGhleCkJCVN5c3RlbSBJbiBGcm9udGllciBJbmMuCi0yMEZFQ0QgICAgIChiYXNlIDE2KQkJU3lzdGVtIEluIEZyb250aWVyIEluYy4KLQkJCQk0RiBTaGluc3V6dWhhcnUgQmxkZy4gMi04LTMgQWtlYm9ub2N5bwotCQkJCVRhY2hpa2F3YS1zaGkgVG9reW8gMTkwLTAwMTIKLQkJCQlKQVBBTgotCi0yMC1GRS1EQiAgIChoZXgpCQlNMk0gU29sdXRpb24gUy5BLlMuCi0yMEZFREIgICAgIChiYXNlIDE2KQkJTTJNIFNvbHV0aW9uIFMuQS5TLgotCQkJCUNlbnRyZSBkJ0FmZmFpcmVzIFJlZ3VzIEJhdC5ECi0JCQkJNDUgQWxsZWUgZGVzIE9ybWVzCi0JCQkJTW91Z2lucyAgIDA2MjU0IAotCQkJCUZSQU5DRQotCi0yNC0wQi0yQSAgIChoZXgpCQlWaWV0dGVsIEdyb3VwCi0yNDBCMkEgICAgIChiYXNlIDE2KQkJVmlldHRlbCBHcm91cAotCQkJCUNlbnRlciBmb3IgUmVzZWFyY2ggYW5kIERldmVsb3BtZW50Ci0JCQkJMDEgR2lhbmcgVmFuIE1pbmgsIEJhIERpbmgKLQkJCQlIYW5vaSAgMTExMQotCQkJCVZJRVROQU0KLQotMjQtMUEtOEMgICAoaGV4KQkJU3F1YXJlaGVhZCBUZWNobm9sb2d5IEFTCi0yNDFBOEMgICAgIChiYXNlIDE2KQkJU3F1YXJlaGVhZCBUZWNobm9sb2d5IEFTCi0JCQkJUE8gQm94IDEzIE55ZGFsZW4KLQkJCQlPc2xvICBOTy0wNDEwCi0JCQkJTk9SV0FZCi0KLTI0LTFGLTJDICAgKGhleCkJCUNhbHN5cywgSW5jLgotMjQxRjJDICAgICAoYmFzZSAxNikJCUNhbHN5cywgSW5jLgotCQkJCTI3MDAgQXVndXN0aW5lIGRyaXZlLCBTdGUxNDUKLQkJCQlTYW50YSBDbGFyYSBDYWxpZm9ybmlhIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC0yMS1BQiAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMjQyMUFCICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTI0LTNDLTIwICAgKGhleCkJCUR5bmFtb2RlIEdyb3VwCi0yNDNDMjAgICAgIChiYXNlIDE2KQkJRHluYW1vZGUgR3JvdXAKLQkJCQlIZWFkIE9mZmljZSwgMTMyYSBTdCBBbGJhbnMgUm9hZAotCQkJCVdhdGZvcmQgSGVydHMgV0QyNCA0QUUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0yNC00NS05NyAgIChoZXgpCQlHRU1VRSBHZWJyLiBNdWVsbGVyIEFwcGFyYXRlYmF1Ci0yNDQ1OTcgICAgIChiYXNlIDE2KQkJR0VNVUUgR2Vici4gTXVlbGxlciBBcHBhcmF0ZWJhdQotCQkJCUZyaXR6LU11ZWxsZXItU3RyYXNzZSA2LTgKLQkJCQlJbmdlbGZpbmdlbiBDcmllc2JhY2ggIDc0NjUzCi0JCQkJR0VSTUFOWQotCi0yNC00Ny0wRSAgIChoZXgpCQlQZW50cm9uaWNBQgotMjQ0NzBFICAgICAoYmFzZSAxNikJCVBlbnRyb25pY0FCCi0JCQkJQmVyZ3NsaWRlbiAxCi0JCQkJR1VOTkVCTyAgNTkwOTMKLQkJCQlTV0VERU4KLQotMjQtNDktN0IgICAoaGV4KQkJSW5ub3ZhdGl2ZSBDb252ZXJnZWQgRGV2aWNlcyBJbmMKLTI0NDk3QiAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aXZlIENvbnZlcmdlZCBEZXZpY2VzIEluYwotCQkJCTQyNCA4dGggQXZlbnVlIE5vcnRoCi0JCQkJU2VhdHRsZSBXQSA5ODEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMjQtNzctMDMgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0yNDc3MDMgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0yNC04Mi04QSAgIChoZXgpCQlQcm93YXZlIFRlY2hub2xvZ2llcyBMdGQuCi0yNDgyOEEgICAgIChiYXNlIDE2KQkJUHJvd2F2ZSBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTJGLE5vLjg3OS0xNixaaG9uZ2ppYW5nIFJvYWQKLQkJCQlTaGFuZ2hhaSAgMjAwMzMzCi0JCQkJQ0hJTkEKLQotMjQtOTQtNDIgICAoaGV4KQkJT1BFTiBST0FEIFNPTFVUSU9OUyAsIElOQy4KLTI0OTQ0MiAgICAgKGJhc2UgMTYpCQlPUEVOIFJPQUQgU09MVVRJT05TICwgSU5DLgotCQkJCTg4LTEzIFNIVUlMSSAgUk9BRAotCQkJCUhTSU5DSFUgIDMwMDU5Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0yNC1BNC0yQyAgIChoZXgpCQlLT1VLQUFNIGEucy4KLTI0QTQyQyAgICAgKGJhc2UgMTYpCQlLT1VLQUFNIGEucy4KLQkJCQlVIHZpbm55Y2ggc2tsZXB1IDcKLQkJCQlQcmFndWUgIDE5MCAwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTI0LUE5LTM3ICAgKGhleCkJCVBVUkUgU3RvcmFnZQotMjRBOTM3ICAgICAoYmFzZSAxNikJCVBVUkUgU3RvcmFnZQotCQkJCTY1MCBDYXN0cm8gU3RyZWV0Ci0JCQkJMjIwCi0JCQkJTXQuIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUFCLTgxICAgKGhleCkJCUFwcGxlLCBJbmMuCi0yNEFCODEgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUFGLTRBICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50LUlQRAotMjRBRjRBICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50LUlQRAotCQkJCTc3NyBNaWRkbGVmaWVsZCBSZC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC1BRi01NCAgIChoZXgpCQlORVhHRU4gTWVkaWF0ZWNoIEluYy4KLTI0QUY1NCAgICAgKGJhc2UgMTYpCQlORVhHRU4gTWVkaWF0ZWNoIEluYy4KLQkJCQk4RiBOby4gMTUwLCBKaWFueWkgUmQuLCAKLQkJCQlDaHVuZyBIbyBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0yNC1CNi1COCAgIChoZXgpCQlGUklFTSBTUEEKLTI0QjZCOCAgICAgKGJhc2UgMTYpCQlGUklFTSBTUEEKLQkJCQlWaWEgRWRpc29uIDEKLQkJCQlTZWdyYXRlIE1pbGFubyAyMDA5MAotCQkJCUlUQUxZCi0KLTI0LUI4LUQyICAgKGhleCkJCU9wem9vbiBUZWNobm9sb2d5IENvLixMdGQuCi0yNEI4RDIgICAgIChiYXNlIDE2KQkJT3B6b29uIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQkxMXRoIGZsb29yLCBUb3dlciBCaT9vZWk/b2VZaW50YWkgQ2VudGVyIDIgSmlhbmd1b21lbndhaSBTdCwuCi0JCQkJQmVpamluZyBBc2lhIDEwMDAyMgotCQkJCUNISU5BCi0KLTI0LUJBLTMwICAgKGhleCkJCVRlY2huaWNhbCBDb25zdW1lciBQcm9kdWN0cywgSW5jLgotMjRCQTMwICAgICAoYmFzZSAxNikJCVRlY2huaWNhbCBDb25zdW1lciBQcm9kdWN0cywgSW5jLgotCQkJCTMyNSBDYW1wdXMgRHJpdmUKLQkJCQlBdXJvcmEgT0ggNDQyMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUJGLTc0ICAgKGhleCkJCVBSSVZBVEUKLTI0QkY3NCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMjQtQzgtNkUgICAoaGV4KQkJQ2hhbmV5IEluc3RydW1lbnQgQ28uCi0yNEM4NkUgICAgIChiYXNlIDE2KQkJQ2hhbmV5IEluc3RydW1lbnQgQ28uCi0JCQkJOTY1IFdlbGxzIFN0cmVldAotCQkJCUxha2UgR2VuZXZhIFdJIDUzMTQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC1DOS1ERSAgIChoZXgpCQlHZW5vcmF5Ci0yNEM5REUgICAgIChiYXNlIDE2KQkJR2Vub3JheQotCQkJCSM4MTIgQnl1Y2tzYW4gVGVjaG5vcGlhIDQzNC02IFNhbmdkYWV3b24gMS1Eb25nCi0JCQkJSnVuZ3dvbi1HdQotCQkJCVNlb25nbmFtLUNpdHkgR3llb25nZ2ktRG8gNDYyLTcxNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yNC1DQi1FNyAgIChoZXgpCQlNWUssIEluYy4KLTI0Q0JFNyAgICAgKGJhc2UgMTYpCQlNWUssIEluYy4KLQkJCQk0LTYwLTMwLTEwOCwgS2Ftb2ksIAotCQkJCU1pZG9yaS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyNi0wMDAzCi0JCQkJSkFQQU4KLQotMjQtQ0YtMjEgICAoaGV4KQkJU2hlbnpoZW4gU3RhdGUgTWljcm8gVGVjaG5vbG9neSBDby4sIEx0ZAotMjRDRjIxICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFN0YXRlIE1pY3JvIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlTU01FQyBCdWlsZGluZzIvRiwgR2FvIFhpbiBOYW4gRmlyc3QgQXZlbnVlLCBIaS1UZWNoIFBhcmsgU291dGgsIE5hbnNoYW4KLQkJCQlTaGVuemhlbiBDaXR5IEd1YW5nZG9uZyBQcm92aW5jZSA1MTgwNTcKLQkJCQlDSElOQQotCi0yNC1EMi1DQyAgIChoZXgpCQlTbWFydERyaXZlIFN5c3RlbXMgSW5jLgotMjREMkNDICAgICAoYmFzZSAxNikJCVNtYXJ0RHJpdmUgU3lzdGVtcyBJbmMuCi0JCQkJOTI3NiBTY3JhbnRvbiBSb2FkCi0JCQkJU3VpdGUgNTAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC1EQi1BQyAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0yNERCQUMgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxMDEwOAotCQkJCUNISU5BCi0KLTI0LURCLUFEICAgKGhleCkJCVNob3BwZXJUcmFrIFJDVCBDb3Jwb3JhdGlvbgotMjREQkFEICAgICAoYmFzZSAxNikJCVNob3BwZXJUcmFrIFJDVCBDb3Jwb3JhdGlvbgotCQkJCTIwMCBXLiBNb25yb2UgU3RyZWV0Ci0JCQkJU3VpdGUgMTEwMAotCQkJCUNoaWNhZ28gSUwgNjA2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUYwLUZGICAgKGhleCkJCUdIVCBDby4sIEx0ZC4KLTI0RjBGRiAgICAgKGJhc2UgMTYpCQlHSFQgQ28uLCBMdGQuCi0JCQkJIzE2IE5hbnl1bnlpIEx1LCBHdWFuZ3pob3UgU2NpZW5jZSBDaXR5Ci0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2NjMKLQkJCQlDSElOQQotCi0yOC0wNi0xRSAgIChoZXgpCQlOSU5HQk8gR0xPQkFMIFVTRUZVTCBFTEVDVFJJQyBDTy4sTFRECi0yODA2MUUgICAgIChiYXNlIDE2KQkJTklOR0JPIEdMT0JBTCBVU0VGVUwgRUxFQ1RSSUMgQ08uLExURAotCQkJCU5vLjg4LEtlY2h1YW5nIFNvdXRoIFJvYWQsCi0JCQkJV2FuZ2NodW4gSW5kdXN0cnkgWm9uZQotCQkJCU5pbmdibyBaaGVqaWFuZyAzMTUwMDAKLQkJCQlDSElOQQotCi0yOC0wNi04RCAgIChoZXgpCQlJVEwsIExMQwotMjgwNjhEICAgICAoYmFzZSAxNikJCUlUTCwgTExDCi0JCQkJUC5PLiBCb3ggNDE4NzUKLQkJCQlOYXNodmlsbGUgVE4gMzcyMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LTE0LTcxICAgKGhleCkJCUxhbnRpcyBjby4sIExURC4KLTI4MTQ3MSAgICAgKGJhc2UgMTYpCQlMYW50aXMgY28uLCBMVEQuCi0JCQkJYnVzYW4gaW5ub2JpeiBjZW50ZXIgNDAxCi0JCQkJYnVrLWt1LCBtYW5kZW9rIDMtZG9uZwotCQkJCWJ1c2FuICA2MTYtODI5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTI4LTE2LTJFICAgKGhleCkJCTJXaXJlCi0yODE2MkUgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC0yNi1BNiAgIChoZXgpCQlQQlIgZWxlY3Ryb25pY3MgR21iSAotMjgyNkE2ICAgICAoYmFzZSAxNikJCVBCUiBlbGVjdHJvbmljcyBHbWJICi0JCQkJQmVybGluZXIgU3RyYXNzZSA1Ci0JCQkJU2FuZGhhdXNlbiBCYWRlbiBXdWVydGVtbWJlcmcgNjkyMDcKLQkJCQlHRVJNQU5ZCi0KLTI4LTM0LTEwICAgKGhleCkJCUVuaWdtYSBEaWFnbm9zdGljcyBMaW1pdGVkCi0yODM0MTAgICAgIChiYXNlIDE2KQkJRW5pZ21hIERpYWdub3N0aWNzIExpbWl0ZWQKLQkJCQlNaWx0b24gUGFyayBJbm5vdmF0aW9uIENlbnRyZQotCQkJCTk5IE1pbHRvbiBQYXJrCi0JCQkJQWJpbmdkb24gIE9YMTQgNFJZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMjgtM0MtRTQgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotMjgzQ0U0ICAgICAoYmFzZSAxNikJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0IAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0yOC00MC0xQSAgIChoZXgpCQlDOCBNZWRpU2Vuc29ycywgSW5jLgotMjg0MDFBICAgICAoYmFzZSAxNikJCUM4IE1lZGlTZW5zb3JzLCBJbmMuCi0JCQkJNzI3IFVuaXZlcnNpdHkgQXZlCi0JCQkJTG9zIEdhdG9zIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC00OC00NiAgIChoZXgpCQlHcmlkQ2VudHJpYyBJbmMuCi0yODQ4NDYgICAgIChiYXNlIDE2KQkJR3JpZENlbnRyaWMgSW5jLgotCQkJCTM1MCBCbG9vciBTdC4gRQotCQkJCVRvcm9udG8gT250YXJpbyBNNFcgMEExCi0JCQkJQ0FOQURBCi0KLTI4LTRDLTUzICAgKGhleCkJCUludHVuZSBOZXR3b3JrcwotMjg0QzUzICAgICAoYmFzZSAxNikJCUludHVuZSBOZXR3b3JrcwotCQkJCTlCIEJlY2tldHQgV2F5Ci0JCQkJUGFya3dlc3QgQnVzaW5lc3MgUGFyawotCQkJCUR1YmxpbiAgIDEyCi0JCQkJSVJFTEFORAotCi0yOC01MS0zMiAgIChoZXgpCQlTaGVuemhlbiBQcmF5Zmx5IFRlY2hub2xvZ3kgQ28uLEx0ZAotMjg1MTMyICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFByYXlmbHkgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJMTZGIEIgSW50ZXJuYXRpb25hbCBDaGFtYmVyIG9mIENvbW1lcmNlIEJ1aWxkaW5nCi0JCQkJTk8uMTM4IEZ1aHVhIDFSRCBGdXRpYW4gQXJlYSAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgUHJvdmluY2UgIDUxODA0OAotCQkJCUNISU5BCi0KLTI4LTVGLURCICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTI4NUZEQiAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotMjgtNjAtNDYgICAoaGV4KQkJTGFudGVjaCBDb21tdW5pY2F0aW9ucyBHbG9iYWwsIEluYy4KLTI4NjA0NiAgICAgKGJhc2UgMTYpCQlMYW50ZWNoIENvbW11bmljYXRpb25zIEdsb2JhbCwgSW5jLgotCQkJCTdGLCBOby4gNDUsIExhbmUgMTg4LCBSdWlndWFuZyBSZC4sIE5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpIENpdHkgIDExNDkxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0yOC02RS1ENCAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLTI4NkVENCAgICAgKGJhc2UgMTYpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLQkJCQlCMS03LEh1YXdlaSBJbmR1c3RyaWFsIEJhc2UsQmFudGlhbixMb25nZ2FuZwotCQkJCVNoZW5aaGVuIGd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi0yOC03Mi1DNSAgIChoZXgpCQlTbWFydG1hdGljIENvcnAKLTI4NzJDNSAgICAgKGJhc2UgMTYpCQlTbWFydG1hdGljIENvcnAKLQkJCQkxMDAxIEJyb2tlbiBTb3VuZCBQa3d5IE5XIFN1aXRlIEQKLQkJCQlCb2NhIFJhdG9uIEZsb3JpZGEgMzM0ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LTcyLUYwICAgKGhleCkJCUFUSEVOQQotMjg3MkYwICAgICAoYmFzZSAxNikJCUFUSEVOQQotCQkJCTQyIFJVRSBNT05HRQotCQkJCVBBUklTICA3NTAwNQotCQkJCUZSQU5DRQotCi0yOC04NS0yRCAgIChoZXgpCQlUb3VjaCBOZXR3b3JrcwotMjg4NTJEICAgICAoYmFzZSAxNikJCVRvdWNoIE5ldHdvcmtzCi0JCQkJMjUxNSAxNTJuZCBBdmUgTkUKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LTg5LTE1ICAgKGhleCkJCUNhc2hHdWFyZCBTdmVyaWdlIEFCCi0yODg5MTUgICAgIChiYXNlIDE2KQkJQ2FzaEd1YXJkIFN2ZXJpZ2UgQUIKLQkJCQlGaW5sYW5kc2dhdGFuIDE2Ci0JCQkJS2lzdGEgIDE2NDc0Ci0JCQkJU1dFREVOCi0KLTI4LTkzLUZFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTI4OTNGRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LUE1LTc0ICAgKGhleCkJCU1pbGxlciBFbGVjdHJpYyBNZmcuIENvLgotMjhBNTc0ICAgICAoYmFzZSAxNikJCU1pbGxlciBFbGVjdHJpYyBNZmcuIENvLgotCQkJCTE2MzUgVy4gU3BlbmNlciBTdHJlZXQKLQkJCQlQLk8uIEJveCAxMDc5Ci0JCQkJQXBwbGV0b24gV0kgNTQ5MTItMTA3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMjgtQzAtREEgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMjhDMERBICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1DQy1GRiAgIChoZXgpCQlDb3Jwb3JhY2lvbiBFbXByZXNhcmlhbCBBbHRyYSBTTAotMjhDQ0ZGICAgICAoYmFzZSAxNikJCUNvcnBvcmFjaW9uIEVtcHJlc2FyaWFsIEFsdHJhIFNMCi0JCQkJTWFyaWUgQ3VyaWUgMjEKLQkJCQlNYWxhZ2EgIDI5NTkwCi0JCQkJU1BBSU4KLQotMjgtQ0QtNEMgICAoaGV4KQkJSW5kaXZpZHVhbCBDb21wdXRlcnMgR21iSAotMjhDRDRDICAgICAoYmFzZSAxNikJCUluZGl2aWR1YWwgQ29tcHV0ZXJzIEdtYkgKLQkJCQlJbSBaZW1tZXIgNgotCQkJCVdvZmZlbHNiYWNoIE5SVyA1MjE1MgotCQkJCUdFUk1BTlkKLQotMjgtQ0YtREEgICAoaGV4KQkJQXBwbGUgSW5jCi0yOENGREEgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBpbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1FMi05NyAgIChoZXgpCQlTaGFuZ2hhaSBJbmZvVE0gTWljcm9lbGVjdHJvbmljcyBDby4sTHRkLgotMjhFMjk3ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEluZm9UTSBNaWNyb2VsZWN0cm9uaWNzIENvLixMdGQuCi0JCQkJYnVpbGRpbmcgMTEsTk8uMTE1LGxhbmUgNTcyLEJpQm8gUm9hZCwKLQkJCQlQdURvbmcgTmV3IERpc3RyaWN0Ci0JCQkJU2hhbmdIYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLTI4LUU3LTk0ICAgKGhleCkJCU1pY3JvdGltZSBDb21wdXRlciBJbmMuCi0yOEU3OTQgICAgIChiYXNlIDE2KQkJTWljcm90aW1lIENvbXB1dGVyIEluYy4KLQkJCQk0RiwgTm8uIDIyMiwgU2VjLiA0LCBDaGVuZy1UZWggUmQuLCAKLQkJCQlUYWlwZWkgIDExMTY3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0yOC1FNy1DRiAgIChoZXgpCQlBcHBsZSwgSW5jLgotMjhFN0NGICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1FRC01OCAgIChoZXgpCQlKQUcgSmFrb2IgQUcKLTI4RUQ1OCAgICAgKGJhc2UgMTYpCQlKQUcgSmFrb2IgQUcKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDIwCi0JCQkJQlJVRUdHIEJFIDI1NTUKLQkJCQlTV0lUWkVSTEFORAotCi0yOC1FRS0yQyAgIChoZXgpCQlGcm9udGxpbmUgVGVzdCBFcXVpcG1lbnQKLTI4RUUyQyAgICAgKGJhc2UgMTYpCQlGcm9udGxpbmUgVGVzdCBFcXVpcG1lbnQKLQkJCQlQTyBCb3ggNzUwNwotCQkJCUNoYXJsb3R0ZXN2aWxsZSBWaXJnaW5pYSAyMjkwNi03NTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1FRi0wMSAgIChoZXgpCQlQUklWQVRFCi0yOEVGMDEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTI4LUYzLTU4ICAgKGhleCkJCTJDIC0gVHJpZm9ub3YgJiBDbwotMjhGMzU4ICAgICAoYmFzZSAxNikJCTJDIC0gVHJpZm9ub3YgJiBDbwotCQkJCTEzMywgVHNhcmlncmFkc2tvIFNob3NlIEJsdmQsIEJJWiBJWk9ULCAKLQkJCQlCdWlsZC4gMywgRmxvb3IgMwotCQkJCVNvZmlhICAxNzg0Ci0JCQkJQlVMR0FSSUEKLQotMjgtRkItRDMgICAoaGV4KQkJU2hhbmdoYWkgUmFnZW5UZWsgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLixMdGQuCi0yOEZCRDMgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgUmFnZW5UZWsgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJNHRoIEZsb29yLE5vLjExMSBFU2hhbiBSb2FkIFB1RG9uZyBEaXN0cmljdCAKLQkJCQlTaGFuZ2hhaSAgMjAwMTI3Ci0JCQkJQ0hJTkEKLQotMkMtMDAtMzMgICAoaGV4KQkJRUNvbnRyb2xzLCBMTEMKLTJDMDAzMyAgICAgKGJhc2UgMTYpCQlFQ29udHJvbHMsIExMQwotCQkJCTM1MjMgQ3Jvc3Nwb2ludAotCQkJCVNhbiBBbnRvbmlvIFRYIDc4MjE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy0wNi0yMyAgIChoZXgpCQlXaW4gTGVhZGVyIEluYy4KLTJDMDYyMyAgICAgKGJhc2UgMTYpCQlXaW4gTGVhZGVyIEluYy4KLQkJCQlMZXZlbCAzICxBbGV4YW5kZXIgSG91c2UsCi0JCQkJMzUgIEN5YmVyY2l0eQotCQkJCUViZW5lICAKLQkJCQlNQVVSSVRJVVMKLQotMkMtMTktODQgICAoaGV4KQkJSUROIFRlbGVjb20sIEluYy4KLTJDMTk4NCAgICAgKGJhc2UgMTYpCQlJRE4gVGVsZWNvbSwgSW5jLgotCQkJCTI2NjkgR3JlYXQgQXJib3IgV2F5Ci0JCQkJVW5pb24gQ2l0eSBDQSA5NDU4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtMUUtRUEgICAoaGV4KQkJQUVST0RFVgotMkMxRUVBICAgICAoYmFzZSAxNikJCUFFUk9ERVYKLQkJCQlOby41OSwxOTg1IExhbmUsQ2h1bnNoZW4gUm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAwMjM3Ci0JCQkJQ0hJTkEKLQotMkMtMjEtNzIgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMkMyMTcyICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtMjctRDcgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0yQzI3RDcgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy0zMC02OCAgIChoZXgpCQlQYW50ZWNoIENvLixMdGQKLTJDMzA2OCAgICAgKGJhc2UgMTYpCQlQYW50ZWNoIENvLixMdGQKLQkJCQkxMTAtMSBPbmdqZW9uZy1SaSwgVG9uZ2ppbi1FdXAKLQkJCQlHaW1wby1TaSBHeW91bmdnaS1EbyA0MTUtODY1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTJDLTM0LTI3ICAgKGhleCkJCUVSQ08gJmFtcDsgR0VORVIKLTJDMzQyNyAgICAgKGJhc2UgMTYpCQlFUkNPICZhbXA7IEdFTkVSCi0JCQkJWkkgZGUgU0FJTlQgTEFNQkVSVCBERVMgTEVWRUVTCi0JCQkJQlAgMzAxNjMKLQkJCQlTQVVNVVIgIDQ5NDEyCi0JCQkJRlJBTkNFCi0KLTJDLTNBLTI4ICAgKGhleCkJCUZhZ29yIEVsZWN0cmk/b2VuaWNhCi0yQzNBMjggICAgIChiYXNlIDE2KQkJRmFnb3IgRWxlY3RyaT9vZW5pY2EKLQkJCQlCLiBTYW4gQW5kcmVzLCBzL24gCi0JCQkJTW9uZHJhZ2k/b2VuIEd1aXB1emNvYSAyMDUwMAotCQkJCVNQQUlOCi0KLTJDLTNGLTNFICAgKGhleCkJCUFsZ2UtVGltaW5nIEdtYkgKLTJDM0YzRSAgICAgKGJhc2UgMTYpCQlBbGdlLVRpbWluZyBHbWJICi0JCQkJUm90a3JldXpzdHJhc3NlIDM5Ci0JCQkJTHVzdGVuYXUgIDY4OTAKLQkJCQlBVVNUUklBCi0KLTJDLTQxLTM4ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMkM0MTM4ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlNYWlsY29kZSA2LjMuMDQ5Ci0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtNkItRjUgICAoaGV4KQkJSnVuaXBlciBuZXR3b3JrcwotMkM2QkY1ICAgICAoYmFzZSAxNikJCUp1bmlwZXIgbmV0d29ya3MKLQkJCQkxMTk0IE4uIE1hdGhpbGRhIGF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtN0EtRkUgICAoaGV4KQkJSUVFJkUgIkJsYWNrIiBvcHMKLTJDN0FGRSAgICAgKGJhc2UgMTYpCQlJRUUmRSAiQmxhY2siIG9wcwotCQkJCTEwMCBKZXJpYyBBdmVudWUKLQkJCQlDaGFybG90dGUgTkMgMjgyNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLTdFLUNGICAgKGhleCkJCU9uem8gTHRkCi0yQzdFQ0YgICAgIChiYXNlIDE2KQkJT256byBMdGQKLQkJCQk2IEdyZWF0IE5ld3BvcnQgU3RyZWV0Ci0JCQkJTG9uZG9uICBXQzJIIDdKQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTJDLTgwLTY1ICAgKGhleCkJCUhBUlRJTkcgSW5jLiBvZiBOb3J0aCBBbWVyaWNhCi0yQzgwNjUgICAgIChiYXNlIDE2KQkJSEFSVElORyBJbmMuIG9mIE5vcnRoIEFtZXJpY2EKLQkJCQkxMzcwIEJvd2VzIFJvYWQKLQkJCQlFbGdpbiBJbGxpbm9pcyA2MDEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtODEtNTggICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkCi0yQzgxNTggICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMkMtOEItRjIgICAoaGV4KQkJSGl0YWNoaSBNZXRhbHMgQW1lcmljYSBMdGQKLTJDOEJGMiAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIE1ldGFscyBBbWVyaWNhIEx0ZAotCQkJCTIxMDcgTiBGaXJzdCBTdAotCQkJCVN1aXRlIDUwMAotCQkJCVNhbiBKb3NlICBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtOTEtMjcgICAoaGV4KQkJRWludGVjaG5vIENvcnBvcmF0aW9uCi0yQzkxMjcgICAgIChiYXNlIDE2KQkJRWludGVjaG5vIENvcnBvcmF0aW9uCi0JCQkJMzM1OS0xLCBrYWtvLCBJbmFtaS1jaG8KLQkJCQlrYWtvLWd1biBoeW9nbyA2NzUtMTEwNQotCQkJCUpBUEFOCi0KLTJDLTlFLTVGICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0yQzlFNUYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy1BMS01NyAgIChoZXgpCQlBQ1JPTUFURSwgSU5DLgotMkNBMTU3ICAgICAoYmFzZSAxNikJCUFDUk9NQVRFLCBJTkMuCi0JCQkJIzkxMSwgRSZDICBWZW50dXJlIERyZWFtIFRvd2VyIElJCi0JCQkJMTk3LTEwLCBHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTcxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yQy1BNy04MCAgIChoZXgpCQlUcnVlIFRlY2hub2xvZ2llcyBJbmMuCi0yQ0E3ODAgICAgIChiYXNlIDE2KQkJVHJ1ZSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCVI0NzYsIEFuZ2VsQ2l0eSAxc3QsCi0JCQkJMTYxLCBHdWVtZ29rLCBCdW5kYW5nCi0JCQkJU2VvbmduYW0sIEt5dW5na2kgNDYzLTg2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yQy1BOC0zNSAgIChoZXgpCQlSSU0KLTJDQTgzNSAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMkMtQjAtREYgICAoaGV4KQkJU29saXRvbiBUZWNobm9sb2dpZXMgUHZ0IEx0ZAotMkNCMERGICAgICAoYmFzZSAxNikJCVNvbGl0b24gVGVjaG5vbG9naWVzIFB2dCBMdGQKLQkJCQkjIDY4MywgMTV0aCBDcm9zcyAKLQkJCQlKIFAgTmFnYXIgMm5kIFBoYXNlCi0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAgMDc4Ci0JCQkJSU5ESUEKLQotMkMtQjYtOUQgICAoaGV4KQkJUkVEIERpZ2l0YWwgQ2luZW1hCi0yQ0I2OUQgICAgIChiYXNlIDE2KQkJUkVEIERpZ2l0YWwgQ2luZW1hCi0JCQkJMjAyOTEgVmFsZW5jaWEgQ2lyY2xlCi0JCQkJTGFrZSBGb3Jlc3QgQ2FsaWZvcm5pYSA5MjYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtQ0QtMjcgICAoaGV4KQkJUHJlY29yIEluYwotMkNDRDI3ICAgICAoYmFzZSAxNikJCVByZWNvciBJbmMKLQkJCQkyMDAzMSAxNDJuZCBBdmVudWUgTkUKLQkJCQlXb29kaW52aWxsZSBXQSA5ODA3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtQ0QtNDMgICAoaGV4KQkJU3VtbWl0IFRlY2hub2xvZ3kgR3JvdXAKLTJDQ0Q0MyAgICAgKGJhc2UgMTYpCQlTdW1taXQgVGVjaG5vbG9neSBHcm91cAotCQkJCTE0NSBCZWxtb250IERyaXZlCi0JCQkJU29tZXJzZXQgTkogMDg4NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLUQxLURBICAgKGhleCkJCVNhbmpvbGUsIEluYy4KLTJDRDFEQSAgICAgKGJhc2UgMTYpCQlTYW5qb2xlLCBJbmMuCi0JCQkJMjgwMCBXb29kbGF3biBEcml2ZSwgIzI3MQotCQkJCUhvbm9sdWx1IEhhd2FpaSA5NjgyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtRDItRTcgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTJDRDJFNyAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1IE91IDkwNTkwCi0JCQkJRklOTEFORAotCi0yQy1ERC0wQyAgIChoZXgpCQlEaXNjb3Zlcmd5IEdtYkgKLTJDREQwQyAgICAgKGJhc2UgMTYpCQlEaXNjb3Zlcmd5IEdtYkgKLQkJCQlQYXNjYWxzdHIuIDE1Ci0JCQkJQWFjaGVuIE5SVyA1MjA3NgotCQkJCUdFUk1BTlkKLQotMzAtMEItOUMgICAoaGV4KQkJRGVsdGEgTW9iaWxlIFN5c3RlbXMsIEluYy4KLTMwMEI5QyAgICAgKGJhc2UgMTYpCQlEZWx0YSBNb2JpbGUgU3lzdGVtcywgSW5jLgotCQkJCTcwMCBSZW1pbmd0b24gUm9hZAotCQkJCTJuZCBGbG9vcgotCQkJCVNjaGF1bWJ1cmcgSWxsaW5vaXMgNjAxNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTMwLTE0LTJEICAgKGhleCkJCVBpY2lvcmdyb3MgR21iSAotMzAxNDJEICAgICAoYmFzZSAxNikJCVBpY2lvcmdyb3MgR21iSAotCQkJCUNsYXVkaWFzdHJhc3NlIDUKLQkJCQlDb2xvZ25lIE5SVyA1MTE0OQotCQkJCUdFUk1BTlkKLQotMzAtMTctQzggICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTMwMTdDOCAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OAotCQkJCVNXRURFTgotCi0zMC0xOC1DRiAgIChoZXgpCQlERU9TIGNvbnRyb2wgc3lzdGVtcyBHbWJICi0zMDE4Q0YgICAgIChiYXNlIDE2KQkJREVPUyBjb250cm9sIHN5c3RlbXMgR21iSAotCQkJCUJpcmtlbmFsbGVlIDExMwotCQkJCVJoZWluZSBOUlcgNDg0MzIKLQkJCQlHRVJNQU5ZCi0KLTMwLTFBLTI4ICAgKGhleCkJCU1ha28gTmV0d29ya3MgTHRkCi0zMDFBMjggICAgIChiYXNlIDE2KQkJTWFrbyBOZXR3b3JrcyBMdGQKLQkJCQkxLzYyIFBhdWwgTWF0dGhld3MgUmQKLQkJCQlBbGJhbnkKLQkJCQlBdWNrbGFuZCAgMDYzMgotCQkJCU5FVyBaRUFMQU5ECi0KLTMwLTFFLTgwICAgKGhleCkJCVBSSVZBVEUKLTMwMUU4MCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMzAtMzItRDQgICAoaGV4KQkJSGFuaWxzdG0gQ28uLCBMdGQuCi0zMDMyRDQgICAgIChiYXNlIDE2KQkJSGFuaWxzdG0gQ28uLCBMdGQuCi0JCQkJMTM4LTYsIFNhbmdkYWV3b24tZG9uZyBKdW5nd29uLWd1Ci0JCQkJNzA5LCBKb29uZ2FuZyBJbmR1c3BpYSA1dGgKLQkJCQlTZW9uZ25hbSBLeW9uZ2dpLWRvIDQ2Mi0xMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzAtMzctQTYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMzAzN0E2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMzAtMzgtNTUgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTMwMzg1NSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1IE91IDkwNTkwCi0JCQkJRklOTEFORAotCi0zMC0zOS01NSAgIChoZXgpCQlTaGVuemhlbiBKaW5oZW5namlhIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0zMDM5NTUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gSmluaGVuZ2ppYSBFbGVjdHJvbmljIENvLiwgTHRkLgotCQkJCTQtNiBGbG9vcnMsIEZhY3RvcnkgQnVpbGRpbmcsIEppamlhIEluZHVzdHJpYWwgUGFyaywKLQkJCQlYaWFsaWxhbmcgQXJlYSwgTmFud2FuIFN0cmVldCwgTG9uZ2dhbmcgQXJlYS4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTEyCi0JCQkJQ0hJTkEKLQotMzAtMzktRjIgICAoaGV4KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TIAotMzAzOUYyICAgICAoYmFzZSAxNikJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUyAKLQkJCQlWSUFMRSBTQVJDQSAyMjIgCi0JCQkJTUlMQU5PICAgMjAxMjYgCi0JCQkJSVRBTFkKLQotMzAtNDEtNzQgICAoaGV4KQkJQUxURUMgTEFOU0lORyBMTEMKLTMwNDE3NCAgICAgKGJhc2UgMTYpCQlBTFRFQyBMQU5TSU5HIExMQwotCQkJCTUzNSBST1VURVMgNiAmIDIwOQotCQkJCU1JTEZPUkQgUEEgMTgzMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTMwLTQ2LTlBICAgKGhleCkJCU5FVEdFQVIKLTMwNDY5QSAgICAgKGJhc2UgMTYpCQlORVRHRUFSCi0JCQkJMzUwIEVBU1QgUExVTUVSSUEgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQUxJRk9STklBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zMC00OS0zQiAgIChoZXgpCQlOYW5qaW5nIFotQ29tIFdpcmVsZXNzIENvLixMdGQKLTMwNDkzQiAgICAgKGJhc2UgMTYpCQlOYW5qaW5nIFotQ29tIFdpcmVsZXNzIENvLixMdGQKLQkJCQlaLUNvbSBCdWlsZGluZyxOTy4zMCBKaWFuZ3N1IFNvZnR3YXJlIFBhcmssTk8uNjk5LTIyIFh1YW53dSBBdmVudWUsCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMDA0MgotCQkJCUNISU5BCi0KLTMwLTRDLTdFICAgKGhleCkJCVBhbmFzb25pYyBFbGVjdHJpYyBXb3JrcyBBdXRvbWF0aW9uIENvbnRyb2xzIFRlY2hubyBDby4sTHRkLgotMzA0QzdFICAgICAoYmFzZSAxNikJCVBhbmFzb25pYyBFbGVjdHJpYyBXb3JrcyBBdXRvbWF0aW9uIENvbnRyb2xzIFRlY2hubyBDby4sTHRkLgotCQkJCTItOS0xOCBDaGlkb3JpCi0JCQkJT290YS1rdSBUb2t5byAxNDYtODU0MAotCQkJCUpBUEFOCi0KLTMwLTRFLUMzICAgKGhleCkJCVRpYW5qaW4gVGVjaHVhIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0zMDRFQzMgICAgIChiYXNlIDE2KQkJVGlhbmppbiBUZWNodWEgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxMi0xLTE0MDEgVGlhbmxpbnl1YW4gRnVsaWNoZW5nIEd1bG91eGkgUm9hZCxOYW5rYWkgRGlzdHJpY3QgCi0JCQkJVGlhbmppbiAgMzAwMTAxCi0JCQkJQ0hJTkEKLQotMzAtNTItNUEgICAoaGV4KQkJTlNUIENvLiwgTFRECi0zMDUyNUEgICAgIChiYXNlIDE2KQkJTlNUIENvLiwgTFRECi0JCQkJUk0zMDEsRGFlcnl1bmcgVGVjaG5vIFRvd24gMiwgNTY5LTIxCi0JCQkJR2FzYW4tZG9uZywgR2V1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My03NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzAtNjEtMTggICAoaGV4KQkJUGFyYWRvbSBJbmMuCi0zMDYxMTggICAgIChiYXNlIDE2KQkJUGFyYWRvbSBJbmMuCi0JCQkJOEYsIE4wLiAxNzgsIFNlYy0yLCBHb25nZGFvd3UgUmQuCi0JCQkJSHNpbmNodSBDaXR5ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTMwLTY5LTRCICAgKGhleCkJCVJJTQotMzA2OTRCICAgICAoYmFzZSAxNikJCVJJTQotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi0zMC03MS1CMiAgIChoZXgpCQlIYW5nemhvdSBQcmV2YWlsIE9wdG9lbGVjdHJvbmljIEVxdWlwbWVudCBDby4sTFRELgotMzA3MUIyICAgICAoYmFzZSAxNikJCUhhbmd6aG91IFByZXZhaWwgT3B0b2VsZWN0cm9uaWMgRXF1aXBtZW50IENvLixMVEQuCi0JCQkJSW5kdXN0cmlhbCBEZXZlbG9wbWVudCBBcmVhLCBHdWFsaSBUb3duLAotCQkJCSBYaWFvc2hhbiAKLQkJCQlIYW5nemhvdSBDaXR5IFpoZSBKaWFuZyAzMTEyNDEKLQkJCQlDSElOQQotCi0zMC03Qy0zMCAgIChoZXgpCQlSSU0KLTMwN0MzMCAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMzAtODctMzAgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotMzA4NzMwICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTAxMDgKLQkJCQlDSElOQQotCi0zMC04Qy1GQiAgIChoZXgpCQlEcm9wY2FtCi0zMDhDRkIgICAgIChiYXNlIDE2KQkJRHJvcGNhbQotCQkJCTYyNSBNYXJrZXQgU3RyZWV0Ci0JCQkJU3VpdGUgMTAxMAotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTMwLUU0LThFICAgKGhleCkJCVZvZGFmb25lIFVLCi0zMEU0OEUgICAgIChiYXNlIDE2KQkJVm9kYWZvbmUgVUsKLQkJCQlWb2RhZm9uZSBIb3VzZSAKLQkJCQlUaGUgQ29ubmVjdGlvbiAKLQkJCQlOZXdidXJ5ICBCZXJrc2hpcmUgIFJHMTQyRk4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0zMC1FQi0yNSAgIChoZXgpCQlJTlRFSyBESUdJVEFMCi0zMEVCMjUgICAgIChiYXNlIDE2KQkJSU5URUsgRElHSVRBTAotCQkJCTgwMSwgOHRoIEZsLiwgQW55YW5nIEstY2VudGVyIGJ1aWxkaW5nLCAxNTkxLTkKLQkJCQlHd2FueWFuZy1kb25nLCBEb25nYW4tZ3UKLQkJCQlBbnlhbmcgIDQzMS0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzAtRUYtRDEgICAoaGV4KQkJQWxzdG9tIFN0cm9uZ3dpc2ggKFNoZW56aGVuKSBDby4sIEx0ZC4KLTMwRUZEMSAgICAgKGJhc2UgMTYpCQlBbHN0b20gU3Ryb25nd2lzaCAoU2hlbnpoZW4pIENvLiwgTHRkLgotCQkJCTVGLEJ1aWxkaW5nIE5vLjYsIEtlamkgTWlkZGxlIDIgUm9hZCBIaWdoLVRlY2ggSW5kdXN0cmlhbCBQYXJrLCAKLQkJCQlTaGVuIFpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTM0LTA4LTA0ICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMzQwODA0ICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5vLjI4OSwgU2luaHUgM3JkIFJkLiwgTmVpaHUgRGlzdHJpY3QsIAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0zNC0xNS05RSAgIChoZXgpCQlBcHBsZSwgSW5jCi0zNDE1OUUgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMzQtMjEtMDkgICAoaGV4KQkJSmVuc2VuIFNjYW5kaW5hdmlhIEFTCi0zNDIxMDkgICAgIChiYXNlIDE2KQkJSmVuc2VuIFNjYW5kaW5hdmlhIEFTCi0JCQkJQmFsZGVyIEFsbGk/b2UgMwotCQkJCUplc3NoZWltICAyMDUwCi0JCQkJTk9SV0FZCi0KLTM0LTI5LUVBICAgKGhleCkJCU1DRCBFTEVDVFJPTklDUyBTUC4gWiBPLk8uCi0zNDI5RUEgICAgIChiYXNlIDE2KQkJTUNEIEVMRUNUUk9OSUNTIFNQLiBaIE8uTy4KLQkJCQlMZWxld2VsYSAyNgotCQkJCVp5d2llYyBTbGFza2llIDM0LTMwMAotCQkJCVBPTEFORAotCi0zNC02OC00QSAgIChoZXgpCQlUZXJhd29ya3MgQ28uLCBMdGQuCi0zNDY4NEEgICAgIChiYXNlIDE2KQkJVGVyYXdvcmtzIENvLiwgTHRkLgotCQkJCVJvb20gTm8uIDIwMSAsIDUxNS0zMCAsIE1vay1Eb25nCi0JCQkJWWFuZ2NoZW9uLUd1Ci0JCQkJU2VvdWwgIDE1OC04MDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzQtNkYtOTIgICAoaGV4KQkJV2hpdGUgUm9kZ2VycyBEaXZpc2lvbgotMzQ2RjkyICAgICAoYmFzZSAxNikJCVdoaXRlIFJvZGdlcnMgRGl2aXNpb24KLQkJCQk4MTAwIFdlc3QgRmxvcmlzc2FudAotCQkJCVAuTy4gQm94IDM2OTIxCi0JCQkJU3QuIExvdWlzIE1PIDYzMTM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zNC03OC03NyAgIChoZXgpCQlPLU5FVCBDb21tdW5pY2F0aW9ucyhTaGVuemhlbikgTGltaXRlZAotMzQ3ODc3ICAgICAoYmFzZSAxNikJCU8tTkVUIENvbW11bmljYXRpb25zKFNoZW56aGVuKSBMaW1pdGVkCi0JCQkJIzEwLTEgU291dGgsTWFxdWVsaW5nIEluZHVzdHJpYWwgUGFyayxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTM0LTdFLTM5ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0zNDdFMzkgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTM0LTgzLTAyICAgKGhleCkJCWlGb3Jjb20gQ28uLCBMdGQKLTM0ODMwMiAgICAgKGJhc2UgMTYpCQlpRm9yY29tIENvLiwgTHRkCi0JCQkJMTMyNgotCQkJCVRzdWt1aWNoby1OYWthbm8KLQkJCQlTYWdhbWloYXJhIEthbmFnYXdhIDIyMC0wMjA3Ci0JCQkJSkFQQU4KLQotMzQtODYtMkEgICAoaGV4KQkJSGVpbnogTGFja21hbm4gR21iSCAmIENvIEtHCi0zNDg2MkEgICAgIChiYXNlIDE2KQkJSGVpbnogTGFja21hbm4gR21iSCAmIENvIEtHCi0JCQkJSGFya29ydHN0cmFzc2UgMTUKLQkJCQlNaT9vZW5zdGVyIE5SVyA0ODE2MwotCQkJCUdFUk1BTlkKLQotMzQtOUEtMEQgICAoaGV4KQkJWkJEIERpc3BsYXlzIEx0ZAotMzQ5QTBEICAgICAoYmFzZSAxNikJCVpCRCBEaXNwbGF5cyBMdGQKLQkJCQlPcmNoYXJkIExlYQotCQkJCVdpbmtmaWVsZCBMYW5lCi0JCQkJV2luZHNvciBCZXJrc2hpcmUgU0w0IDRSVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTM0LUExLTgzICAgKGhleCkJCUFXYXJlLCBJbmMKLTM0QTE4MyAgICAgKGJhc2UgMTYpCQlBV2FyZSwgSW5jCi0JCQkJNjE0IE1hc3NhY2h1c2V0dHMgQXZlLiAKLQkJCQlDYW1icmlkZ2UgTUEgMDIxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM0LUE1LTVEICAgKGhleCkJCVRFQ0hOT1NPRlQgSU5URVJOQVRJT05BTCBTUkwKLTM0QTU1RCAgICAgKGJhc2UgMTYpCQlURUNITk9TT0ZUIElOVEVSTkFUSU9OQUwgU1JMCi0JCQkJUk82NjQwOTA0Ci0JCQkJU3RyLiBQYWR1cmV0dSA1MAotCQkJCUJ1Y3VyZXN0aSAtIFNlY3RvciA2IDA2MTk5MgotCQkJCVJPTUFOSUEKLQotMzQtQTctMDkgICAoaGV4KQkJVHJldmlsIHNybAotMzRBNzA5ICAgICAoYmFzZSAxNikJCVRyZXZpbCBzcmwKLQkJCQlWaWEgQ29wZXJuaWNvIDEKLQkJCQlQb3p6byBkJiMzOTtBZGRhIE1JIDIwMDYwCi0JCQkJSVRBTFkKLQotMzQtQUEtRUUgICAoaGV4KQkJTWlrcm92aXNhdG9zIFNlcnZpc2FzIFVBQgotMzRBQUVFICAgICAoYmFzZSAxNikJCU1pa3JvdmlzYXRvcyBTZXJ2aXNhcyBVQUIKLQkJCQlTYXZhbm9yaXUgcHIuIDEyNQotCQkJCUthdW5hcyAgTFQ0NDE0NgotCQkJCUxJVEhVQU5JQQotCi0zNC1CNS03MSAgIChoZXgpCQlQTERTCi0zNEI1NzEgICAgIChiYXNlIDE2KQkJUExEUwotCQkJCVNjaGFuemVuZmVsZHN0cmFzc2UgMgotCQkJCVdldHpsYXIgSGVzc2VuIDM1NTc4Ci0JCQkJR0VSTUFOWQotCi0zNC1CQS01MSAgIChoZXgpCQlTZS1LdXJlIENvbnRyb2xzLCBJbmMuCi0zNEJBNTEgICAgIChiYXNlIDE2KQkJU2UtS3VyZSBDb250cm9scywgSW5jLgotCQkJCTM3MTQgUnVuZ2UgU3RyZWV0Ci0JCQkJRnJhbmtsaW4gUGFyayBJTCA2MDEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMzQtQkMtQTYgICAoaGV4KQkJQmVpamluZyBEaW5nIFFpbmcgVGVjaG5vbG9neSwgTHRkLgotMzRCQ0E2ICAgICAoYmFzZSAxNikJCUJlaWppbmcgRGluZyBRaW5nIFRlY2hub2xvZ3ksIEx0ZC4KLQkJCQkyMTggSGFuIFRhaSBIdWEgT2ZmaWNlIEJ1aWxkaW5nLCAxMyBIdWFuIFl1YW4gTHUsCi0JCQkJSGFpZGlhbiBEaXN0cmljdCBCZWlqaW5nIDEwMDA4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMzQtQkQtRjkgICAoaGV4KQkJU2hhbmdoYWkgV0RLIEluZHVzdHJpYWwgQ28uLEx0ZC4KLTM0QkRGOSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBXREsgSW5kdXN0cmlhbCBDby4sTHRkLgotCQkJCU5vLjIxMDAsU29uZ3poZW4gUm9hZCxTb25namlhbmcgRGlzdHJpY3QKLQkJCQlTaGFuZ2hhaSAgMjAxNjA2Ci0JCQkJQ0hJTkEKLQotMzQtQzMtQUMgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMzRDM0FDICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQk5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zNC1DNi05QSAgIChoZXgpCQlFbmVjc3lzIEx0ZAotMzRDNjlBICAgICAoYmFzZSAxNikJCUVuZWNzeXMgTHRkCi0JCQkJSGFyc3RvbiBNaWxsCi0JCQkJUm95c3RvbiBSb2FkCi0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCMjIgN0dHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMzQtQ0UtOTQgICAoaGV4KQkJUGFyc2VjIChQdHkpIEx0ZAotMzRDRTk0ICAgICAoYmFzZSAxNikJCVBhcnNlYyAoUHR5KSBMdGQKLQkJCQlCdWlsZGluZyA4LTEwIE1hbmhhdHRhbiBPZmZpY2UgUGFyawotCQkJCTE2IFBpZXRlciBTdHJlZXQsIEhpZ2h2ZWxkIFRlY2hub3BhcmsKLQkJCQlDZW50dXJpb24gR2F1dGVuZyAwMTU3Ci0JCQkJU09VVEggQUZSSUNBCi0KLTM0LUQyLUM0ICAgKGhleCkJCVJFTkEgR21iSCBQcmludCBTeXN0ZW1lCi0zNEQyQzQgICAgIChiYXNlIDE2KQkJUkVOQSBHbWJIIFByaW50IFN5c3RlbWUKLQkJCQlIaWVubG9oZXN0cmFzc2UgMjQKLQkJCQlPdHRlcmZpbmcgQmF2YXJpYSA4MzYyNAotCQkJCUdFUk1BTlkKLQotMzQtREYtMkEgICAoaGV4KQkJRnVqaWtvbiBJbmR1c3RyaWFsIENvLixMaW1pdGVkCi0zNERGMkEgICAgIChiYXNlIDE2KQkJRnVqaWtvbiBJbmR1c3RyaWFsIENvLixMaW1pdGVkCi0JCQkJMTYvRi4sIFRvd2VyIDEsIEdyYW5kIENlbnRyYWwgUGxhemEsMTM4IFNoYXRpbiBSdXJhbCAKLQkJCQlDb21taXR0ZWUgUm9hZCxTaGF0aW4sIE4uVC4sIAotCQkJCTUyMzkzMAotCQkJCUhPTkcgS09ORwotCi0zNC1FMC1ENyAgIChoZXgpCQlET05HR1VBTiBRSVNIRU5HIEVMRUNUUk9OSUNTIElORFVTVFJJQUwgQ08uLCBMVEQKLTM0RTBENyAgICAgKGJhc2UgMTYpCQlET05HR1VBTiBRSVNIRU5HIEVMRUNUUk9OSUNTIElORFVTVFJJQUwgQ08uLCBMVEQKLQkJCQlYSU5KSSBJTkRVU1RSSUFMIFpPTkUsIE1BQ0hPTkcgVE9XTgotCQkJCURPTkdHVUFOIEdVQU5HRE9ORyA1MjMxMjMKLQkJCQlDSElOQQotCi0zNC1FRi00NCAgIChoZXgpCQkyV2lyZQotMzRFRjQ0ICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBrd3kKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMzQtRUYtOEIgICAoaGV4KQkJTlRUIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0zNEVGOEIgICAgIChiYXNlIDE2KQkJTlRUIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJTlRUIEhpYml5YSBCbGRnLiA3RgotCQkJCTEtNixVY2hpc2Fpd2FpLWNobyAxLWNob21lCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDAtODAxOQotCQkJCUpBUEFOCi0KLTM0LUYzLTlCICAgKGhleCkJCVdpekxBTiBMdGQuCi0zNEYzOUIgICAgIChiYXNlIDE2KQkJV2l6TEFOIEx0ZC4KLQkJCQlQLk8uQm94IDc5NDgKLQkJCQlIYWlmYSAgMzEwNzgKLQkJCQlJU1JBRUwKLQotMzQtRjktNjggICAoaGV4KQkJQVRFSyBQcm9kdWN0cywgTExDCi0zNEY5NjggICAgIChiYXNlIDE2KQkJQVRFSyBQcm9kdWN0cywgTExDCi0JCQkJMjEwIE5FIDEwdGggQXZlbnVlCi0JCQkJQnJhaW5lcmQgTU4gNTY0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM4LTAxLTk3ICAgKGhleCkJCVRvc2hpYmEgU2Ftc3VuZyBTdG9yYWdlIFRlY2hub2xnb3kgS29yZWEgQ29ycG9yYXRpb24KLTM4MDE5NyAgICAgKGJhc2UgMTYpCQlUb3NoaWJhIFNhbXN1bmcgU3RvcmFnZSBUZWNobm9sZ295IEtvcmVhIENvcnBvcmF0aW9uCi0JCQkJMTQgRmxvb3IsIEJsZGcuIE5vLiAxMDIsIERpZ2l0YWwgRW1waXJlMiwgNDg2LCBTaW4tZG9uZywgWWVvbmd0b25nLWd1LCBTdXdvbi1zaSwgCi0JCQkJU3Utd29uIEd5ZW9uZ2dpIDQ0My03MzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzgtMEEtMEEgICAoaGV4KQkJU2t5LUNpdHkgQ29tbXVuaWNhdGlvbiBhbmQgRWxlY3Ryb25pY3MgTGltaXRlZCBDb21wYW55Ci0zODBBMEEgICAgIChiYXNlIDE2KQkJU2t5LUNpdHkgQ29tbXVuaWNhdGlvbiBhbmQgRWxlY3Ryb25pY3MgTGltaXRlZCBDb21wYW55Ci0JCQkJMTEwOSwgQnVpbGRpbmcgQSwgS2VmYSBJbmR1c3RyaWFsIHBhcmssIEh1YW5ndWFuIHNvdXRoIHJvYWQsIEd1YW5sYW4sIAotCQkJCUJhb2FuLCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTEwCi0JCQkJQ0hJTkEKLQotMzgtMEQtRDQgICAoaGV4KQkJUHJpbWF4IEVsZWN0cm9uaWNzIExURC4KLTM4MERENCAgICAgKGJhc2UgMTYpCQlQcmltYXggRWxlY3Ryb25pY3MgTFRELgotCQkJCThGLE5vLiA2NjksIFJ1ZXkgS3VhbmcgUm9hZCwgTmVpaHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMzgtMTYtRDEgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0zODE2RDEgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTM4LTIyLTlEICAgKGhleCkJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUyAKLTM4MjI5RCAgICAgKGJhc2UgMTYpCQlQSVJFTExJIEJST0FEQkFORCBTT0xVVElPTlMgCi0JCQkJVklBTEUgU0FSQ0EgMjIyIAotCQkJCSAgTUlMQU5PICBJVEFMWSAyMDEyNgotCQkJCUlUQUxZCi0KLTM4LTIyLUQ2ICAgKGhleCkJCUgzQyBUZWNobm9sb2dpZXMgQ28uLCBMaW1pdGVkCi0zODIyRDYgICAgIChiYXNlIDE2KQkJSDNDIFRlY2hub2xvZ2llcyBDby4sIExpbWl0ZWQKLQkJCQkzMTAgTGl1aGUgUm9hZCwgWmhpamlhbmcgU2NpZW5jZSBQYXJrCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcsICAzMTAwNTMKLQkJCQlDSElOQQotCi0zOC0yNi1DRCAgIChoZXgpCQlBTkRURUsgIAotMzgyNkNEICAgICAoYmFzZSAxNikJCUFORFRFSyAgCi0JCQkJQW0gU29lbGRuZXJtb29zIDE3Ci0JCQkJSGFsbGJlcmdtb29zIEJhdmFyaWEgNTM5OQotCQkJCUdFUk1BTlkKLQotMzgtMzEtQUMgICAoaGV4KQkJV0VHCi0zODMxQUMgICAgIChiYXNlIDE2KQkJV0VHCi0JCQkJQXYuIFByZWYuIFdhbGRlbWFyIEdydWJiYSwgMzAwMAotCQkJCUphcmFndWk/b2UgZG8gU3VsIFNhbnRhIENhdGFyaW5hIDg5MjU2LTkwMAotCQkJCUJSQVpJTAotCi0zOC01Mi0xQSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudCA3NzA1Ci0zODUyMUEgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQgNzcwNQotCQkJCTYwMCBNYXJjaCBSZC4KLQkJCQlPdHRhd2EgT25hdHJpbyBLMEEgMVQwCi0JCQkJQ0FOQURBCi0KLTM4LTU4LTBDICAgKGhleCkJCVBhbmFjY2VzcyBTeXN0ZW1zIEdtYkgKLTM4NTgwQyAgICAgKGJhc2UgMTYpCQlQYW5hY2Nlc3MgU3lzdGVtcyBHbWJICi0JCQkJR3V0ZW5iZXJnc3RyYWk/b2VlIDgKLQkJCQlJc21hbmluZyBCWSA4NTczNwotCQkJCUdFUk1BTlkKLQotMzgtNTktRjkgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotMzg1OUY5ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi0zOC01Ri1DMyAgIChoZXgpCQlZdSBKZW9uZyBTeXN0ZW0sIENvLkx0ZAotMzg1RkMzICAgICAoYmFzZSAxNikJCVl1IEplb25nIFN5c3RlbSwgQ28uTHRkCi0JCQkJIzUwMywgRG9uZyBpbCBCL0QsIDgyNiwgR3Vyby0zZG9uZywgCi0JCQkJR3Vyby1HdSwgCi0JCQkJU2VvdWwgIDE1Mi04NzkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzgtNjMtRjYgICAoaGV4KQkJM05PRCBNVUxUSU1FRElBKFNIRU5aSEVOKUNPLixMVEQKLTM4NjNGNiAgICAgKGJhc2UgMTYpCQkzTk9EIE1VTFRJTUVESUEoU0hFTlpIRU4pQ08uLExURAotCQkJCUY2LEJ1aWxkaW5nMTEsU2hlbnpoZW4gU29mdHdhcmUgUGFyawotCQkJCU5vLjIgS2VqaXpob25nIFJvYWQsTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0zOC02RS0yMSAgIChoZXgpCQlXYXNpb24gR3JvdXAgTHRkLgotMzg2RTIxICAgICAoYmFzZSAxNikJCVdhc2lvbiBHcm91cCBMdGQuCi0JCQkJTm8uNDY4IFdlc3QgVG9uZ3ppcG8gUm9hZCBIaWdoLVRlY2ggSW5kdXN0cmlhbCBEZXZlbG9wbWVudCBab25lCi0JCQkJQ2hhbmdzaGEgQ2l0eSBIdW5hbiBQcm92aW5jZSwgNDEwMjA1IAotCQkJCUNISU5BCi0KLTM4LTcyLUMwICAgKGhleCkJCUNPTVRSRU5ECi0zODcyQzAgICAgIChiYXNlIDE2KQkJQ09NVFJFTkQKLQkJCQkzRi0xLDEwIExhbmUgNjA5LCBDaHVuZyBIc2luIFJvYWQsIFNlY3Rpb24gNQotCQkJCVNhbiBDaHVuZyBDaXR5LCAKLQkJCQlUYWlwZWkgSHNpZW4gIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMzgtOTEtRkIgICAoaGV4KQkJWGVub3ggSG9sZGluZyBCVgotMzg5MUZCICAgICAoYmFzZSAxNikJCVhlbm94IEhvbGRpbmcgQlYKLQkJCQlMaW5nZWRpamsgODAKLQkJCQlUcmljaHQgR2VsZGVybGFuZCA0MTk2IEhDCi0JCQkJTkVUSEVSTEFORFMKLQotMzgtOTUtOTIgICAoaGV4KQkJQmVpamluZyBUZW5keXJvbiBDb3Jwb3JhdGlvbgotMzg5NTkyICAgICAoYmFzZSAxNikJCUJlaWppbmcgVGVuZHlyb24gQ29ycG9yYXRpb24KLQkJCQkxODEwLFRvd2VyIEIsSmluLW1hLEJ1aWxkaW5nLDE3IEVhc3QgUWluZyBIdWEgUm9hZCAKLQkJCQlIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgzCi0JCQkJQ0hJTkEKLQotMzgtOUYtODMgICAoaGV4KQkJT1ROIFN5c3RlbXMgTi5WLgotMzg5RjgzICAgICAoYmFzZSAxNikJCU9UTiBTeXN0ZW1zIE4uVi4KLQkJCQlBdGVhbGFhbiAzNAotCQkJCUhlcmVudGFscyAgMjIwMAotCQkJCUJFTEdJVU0KLQotMzgtQTktNUYgICAoaGV4KQkJQWN0aWZpbyBJbmMKLTM4QTk1RiAgICAgKGJhc2UgMTYpCQlBY3RpZmlvIEluYwotCQkJCTIyNSBXeW1hbiBTdHJlZXQKLQkJCQlTdWl0ZSAzMAotCQkJCVdhbHRoYW0gTUEgMDI0NTEKLQkJCQlJTkRJQQotCi0zOC1CQi0yMyAgIChoZXgpCQlPelZpc2lvbiBBbWVyaWNhIExMQwotMzhCQjIzICAgICAoYmFzZSAxNikJCU96VmlzaW9uIEFtZXJpY2EgTExDCi0JCQkJNDAwIFdlc3QgQ3VtbWluZ3MgUGFyawotCQkJCVdvYnVybiBNQSAwMTgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMzgtQzctQkEgICAoaGV4KQkJQ1MgU2VydmljZXMgQ28uLEx0ZC4KLTM4QzdCQSAgICAgKGJhc2UgMTYpCQlDUyBTZXJ2aWNlcyBDby4sTHRkLgotCQkJCUltb24gQkxERyA5NSBFZG9tYWNoaQotCQkJCUNodW9oLWt1Ci0JCQkJS29iZSBIeW9nbyA2NTAwMDMzCi0JCQkJSkFQQU4KLQotMzgtQzgtNUMgICAoaGV4KQkJQ2lzY28gU1BWVEcKLTM4Qzg1QyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlNUyA0LlQuNjA3Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDAxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMzgtRDEtMzUgICAoaGV4KQkJRWFzeUlPIENvcnBvcmF0aW9uIFNkbi4gQmhkLgotMzhEMTM1ICAgICAoYmFzZSAxNikJCUVhc3lJTyBDb3Jwb3JhdGlvbiBTZG4uIEJoZC4KLQkJCQlOby4gMzItMiAmYW1wOyAzMi0zLCBKYWxhbiBQdXRlcmkgMi80Ci0JCQkJQmFuZGFyIFB1dGVyaQotCQkJCVB1Y2hvbmcgU2VsYW5nb3IgNDcxMDAKLQkJCQlNQUxBWVNJQQotCi0zOC1FNy1EOCAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLTM4RTdEOCAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4yMyBYaW5naHVhIFJvYWQKLQkJCQlUYW95dWFuIENpdHkKLQkJCQlUYW95dWFuIENvdW50eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0zOC1FOC1ERiAgIChoZXgpCQliIGdtYmggbWVkaWVuICsgZGF0ZW5iYW5rZW4KLTM4RThERiAgICAgKGJhc2UgMTYpCQliIGdtYmggbWVkaWVuICsgZGF0ZW5iYW5rZW4KLQkJCQlLdXJmdWVyc3RlbnN0cmFzc2UgMjIKLQkJCQlMdWR3aWdzYnVyZyBCVyA3MTYzNgotCQkJCUdFUk1BTlkKLQotMzgtRTktOEMgICAoaGV4KQkJUmVjbyBTLnAuQS4KLTM4RTk4QyAgICAgKGJhc2UgMTYpCQlSZWNvIFMucC5BLgotCQkJCXZpYSBkZWxsJiMzOTtJbmR1c3RyaWEsIDgKLQkJCQlNb250YW5vIEx1Y2lubyBDTyAyMjA3MAotCQkJCUlUQUxZCi0KLTM4LUZFLUM1ICAgKGhleCkJCUVsbGlwcyBCLlYuCi0zOEZFQzUgICAgIChiYXNlIDE2KQkJRWxsaXBzIEIuVi4KLQkJCQlVcmtob3ZlbnNld2VnIDExCi0JCQkJRWluZGhvdmVuIE5vb3JkLUJyYWJhbnQgNTY0MSBLQQotCQkJCU5FVEhFUkxBTkRTCi0KLTNDLTAyLUIxICAgKGhleCkJCUNyZWF0aW9uIFRlY2hub2xvZ2llcyBMUAotM0MwMkIxICAgICAoYmFzZSAxNikJCUNyZWF0aW9uIFRlY2hub2xvZ2llcyBMUAotCQkJCTM5MzkgTm9ydGggRnJhc2VyIFdheQotCQkJCUJ1cm5hYnkgQkMgVjVKIDVKMgotCQkJCUNBTkFEQQotCi0zQy0wNC1CRiAgIChoZXgpCQlQUkFWSVMgU1lTVEVNUyBDby5MdGQuLCAKLTNDMDRCRiAgICAgKGJhc2UgMTYpCQlQUkFWSVMgU1lTVEVNUyBDby5MdGQuLCAKLQkJCQk0RiwgNUYgSmFleW9vbiBCbGQsIDc1LTMgWWFuZ2phZS1Eb25nLCAKLQkJCQlTZW91bCBTZW9jaG8tR3UgMTM3LTg4OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zQy0wNS1BQiAgIChoZXgpCQlQcm9kdWN0IENyZWF0aW9uIFN0dWRpbwotM0MwNUFCICAgICAoYmFzZSAxNikJCVByb2R1Y3QgQ3JlYXRpb24gU3R1ZGlvCi0JCQkJNDI1IFdlc3RsYWtlIEF2ZSBOCi0JCQkJU2VhdHRsZSBXQSA5ODEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtMDctNTQgICAoaGV4KQkJQXBwbGUgSW5jCi0zQzA3NTQgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy0wOS02RCAgIChoZXgpCQlQb3dlcmhvdXNlIER5bmFtaWNzCi0zQzA5NkQgICAgIChiYXNlIDE2KQkJUG93ZXJob3VzZSBEeW5hbWljcwotCQkJCTEgQnJpZGdlIFN0cmVldAotCQkJCU5ld3RvbiBNQSAwMjQ1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtMEYtQzEgICAoaGV4KQkJS0JDIE5ldHdvcmtzCi0zQzBGQzEgICAgIChiYXNlIDE2KQkJS0JDIE5ldHdvcmtzCi0JCQkJMjU2OTEgQXRsYW50aWMgT2NlYW4gRHIKLQkJCQlTdWl0ZSBCMwotCQkJCUxha2UgRm9yZXN0IENBIDkyNjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy0xMC02RiAgIChoZXgpCQlBTEJBSElUSCBURUNITk9MT0dJRVMgCi0zQzEwNkYgICAgIChiYXNlIDE2KQkJQUxCQUhJVEggVEVDSE5PTE9HSUVTIAotCQkJCTE2NSwgS2luZyBBYmR1bGxhaCBTZWNvbmQgU3RyZWV0Ci0JCQkJQW1tYW4gIDExOTUzCi0JCQkJSk9SREFOCi0KLTNDLTE5LTE1ICAgKGhleCkJCUdGSSBDaHJvbm8gVGltZQotM0MxOTE1ICAgICAoYmFzZSAxNikJCUdGSSBDaHJvbm8gVGltZQotCQkJCTEyMSBydWUgZGVzIEd1aWxsZWVzCi0JCQkJQ0hBVVJBWSAgNzkxODUKLQkJCQlGUkFOQ0UKLQotM0MtMUEtNzkgICAoaGV4KQkJSHVheXVhbiBUZWNobm9sb2d5IENPLixMVEQKLTNDMUE3OSAgICAgKGJhc2UgMTYpCQlIdWF5dWFuIFRlY2hub2xvZ3kgQ08uLExURAotCQkJCVIzMDggQmxvY2sgSmluZ21lbmcgSGlnaC1UZWNoIEJ1aWxkaW5nLE5PLjUtMSBTaGFuZ2RpIEVhc3QgUm9hZCwKLQkJCQlIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTNDLTFDLUJFICAgKGhleCkJCUpBREFLIExMQwotM0MxQ0JFICAgICAoYmFzZSAxNikJCUpBREFLIExMQwotCQkJCTcyNzkgV2lsbGlhbSBCYXJyeSBCbHZkCi0JCQkJTm9ydGggU3lyYWN1c2UgTlkgMTMyMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTI2LUQ1ICAgKGhleCkJCVNvdGVyYSBXaXJlbGVzcwotM0MyNkQ1ICAgICAoYmFzZSAxNikJCVNvdGVyYSBXaXJlbGVzcwotCQkJCTk0NDQgV2FwbGVzIFN0cmVldAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtMjctNjMgICAoaGV4KQkJU0xFIHF1YWxpdHkgZW5naW5lZXJpbmcgR21iSCAmYW1wOyBDby4gS0cKLTNDMjc2MyAgICAgKGJhc2UgMTYpCQlTTEUgcXVhbGl0eSBlbmdpbmVlcmluZyBHbWJIICZhbXA7IENvLiBLRwotCQkJCUpvc2VmLUJ1Y2hpbmdlci1TdHIuIDkKLQkJCQlHcmFmZW5hdSBCYXZhcmlhIDk0NDgxCi0JCQkJR0VSTUFOWQotCi0zQy0yRC1CNyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotM0MyREI3ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUzg3MjMKLQkJCQlEYWxsYXMgVGV4YXMgNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTJGLTNBICAgKGhleCkJCVNGT1JaQVRPIENvcnAuCi0zQzJGM0EgICAgIChiYXNlIDE2KQkJU0ZPUlpBVE8gQ29ycC4KLQkJCQk4NjMKLQkJCQlBUkFJCi0JCQkJSElOTy1TSEkgVE9LWU8gMTkxLTAwMjIKLQkJCQlKQVBBTgotCi0zQy0zOS1DMyAgIChoZXgpCQlKVyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTNDMzlDMyAgICAgKGJhc2UgMTYpCQlKVyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkzQTE3LCBOby4gNSBIc2luLXlpIFJkLiwgU2VjLiA1Ci0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTNDLTRBLTkyICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotM0M0QTkyICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy00Qy02OSAgIChoZXgpCQlJbmZpbml0eSBTeXN0ZW0gUy5MLgotM0M0QzY5ICAgICAoYmFzZSAxNikJCUluZmluaXR5IFN5c3RlbSBTLkwuCi0JCQkJQ3J0cmEuIE4tSUksIEttIDQ4LDUgUG9sLiBJbmQuIENhYmFuaWxsYXMgZGVsIENhbXBvLCBQYXJjLiAxMkIKLQkJCQlHdWFkYWxhamFyYSAgMTkxNzEKLQkJCQlTUEFJTgotCi0zQy01QS0zNyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0zQzVBMzcgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zQy01Ri0wMSAgIChoZXgpCQlTeW5lcmNoaXAgQ28uLCBMdGQuCi0zQzVGMDEgICAgIChiYXNlIDE2KQkJU3luZXJjaGlwIENvLiwgTHRkLgotCQkJCWMvbyBTeW5lcmNoaXAgVVNBIENvcnAuCi0JCQkJODgwIEUuIEFycXVlcyBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy02Mi0wMCAgIChoZXgpCQlTYW1zdW5nIGVsZWN0cm9uaWNzIENPLiwgTFRECi0zQzYyMDAgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBlbGVjdHJvbmljcyBDTy4sIExURAotCQkJCTQxNiwgTWFldGFuLTNkb25nLCBZZW9uZ3RvbmctZ3UsCi0JCQkJU3V3b24tQ2l0eSBHeWVvbmdnaS1kbyA0NDMtNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTNDLTYyLTc4ICAgKGhleCkJCVNIRU5aSEVOIEpFVE5FVCBURUNITk9MT0dZIENPLixMVEQuCi0zQzYyNzggICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gSkVUTkVUIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlSb29tIDQwMyw0dGggZmxvb3IsUWluZ2h1YSBJbmZvcm1hdGlvbiBCdWlsZGluZyxLZXl1YW4gUm9hZCxOb3J0aCBEaXN0cmljdCBvZiBUZWNoLVBhcmssTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0zQy02Ny0yQyAgIChoZXgpCQlTY2lvdmlkIEluYy4KLTNDNjcyQyAgICAgKGJhc2UgMTYpCQlTY2lvdmlkIEluYy4KLQkJCQkzODcgUyBTaWx2ZXJicm9vayBEcgotCQkJCUFuYWhlaW0gQ0EgOTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTZGLTQ1ICAgKGhleCkJCUZpYmVycHJvIEluYy4KLTNDNkY0NSAgICAgKGJhc2UgMTYpCQlGaWJlcnBybyBJbmMuCi0JCQkJNTktNCBKYW5nLWRvbmcsIFl1c29uZy1ndQotCQkJCURlYWpvbiAzMDUtMzQzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTNDLTc0LTM3ICAgKGhleCkJCVJJTQotM0M3NDM3ICAgICAoYmFzZSAxNikJCVJJTQotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi0zQy03NS00QSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotM0M3NTRBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtOEItRkUgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotM0M4QkZFICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotM0MtOTEtNTcgICAoaGV4KQkJSGFuZ3pob3UgWXVsb25nIENvbm11bmljYXRpb24gQ28uLEx0ZAotM0M5MTU3ICAgICAoYmFzZSAxNikJCUhhbmd6aG91IFl1bG9uZyBDb25tdW5pY2F0aW9uIENvLixMdGQKLQkJCQk1RiBCdWlsZGluZyAyLE5vLjU2LExpdWhlIFJvYWQsWGlodSBEaXN0cmljdAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAyMwotCQkJCUNISU5BCi0KLTNDLTk5LUY3ICAgKGhleCkJCUxhbnNlbnRlY2hub2xvZ3kgQUIKLTNDOTlGNyAgICAgKGJhc2UgMTYpCQlMYW5zZW50ZWNobm9sb2d5IEFCCi0JCQkJUmk/b2Vya3VsbHN2aT9vZWdlbiA0Ci0JCQkJSGFsbXN0YWQgIDMwMjQxCi0JCQkJU1dFREVOCi0KLTNDLUE3LTJCICAgKGhleCkJCU1SViBDb21tdW5pY2F0aW9ucyAoTmV0d29ya3MpIExURAotM0NBNzJCICAgICAoYmFzZSAxNikJCU1SViBDb21tdW5pY2F0aW9ucyAoTmV0d29ya3MpIExURAotCQkJCVAuTyBCb3ggNjE0Ci0JCQkJWW9rbmVhbSAgIDIwNjkyCi0JCQkJSVNSQUVMCi0KLTNDLUIxLTVCICAgKGhleCkJCUF2YXlhLCBJbmMKLTNDQjE1QiAgICAgKGJhc2UgMTYpCQlBdmF5YSwgSW5jCi0JCQkJMjExIE1vdW50IEFpcnkgUm9hZAotCQkJCUJhc2tpbmcgUmlkZ2UgTkogMDc5MjAtMjMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtQjEtN0YgICAoaGV4KQkJV2F0dHdhdGNoZXJzIFB0eSBMZAotM0NCMTdGICAgICAoYmFzZSAxNikJCVdhdHR3YXRjaGVycyBQdHkgTGQKLQkJCQkyMiBXb29kYnVyeSBSZCBTdC4gSXZlcwotCQkJCVN5ZG5leSBOU1cgMjA3NQotCQkJCUFVU1RSQUxJQQotCi0zQy1CRC1EOCAgIChoZXgpCQlMRyBFTEVDVFJPTklDUyBJTkMKLTNDQkREOCAgICAgKGJhc2UgMTYpCQlMRyBFTEVDVFJPTklDUyBJTkMKLQkJCQkxOS0xLCBDSEVPTkdITy1SSSwgSklOV0ktTVlFT04KLQkJCQlQWUVPTkdUQUVLIEdZRU9OR0dJLURPIDQ1MS03MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotM0MtQzAtQzYgICAoaGV4KQkJZCZhbXA7YiBhdWRpb3RlY2huaWsgR21iSAotM0NDMEM2ICAgICAoYmFzZSAxNikJCWQmYW1wO2IgYXVkaW90ZWNobmlrIEdtYkgKLQkJCQlFdWdlbiBBZG9sZmYgU3RyIDEzNAotCQkJCUJhY2tuYW5nIEJhZGVuIFd1ZXJ0dGVtYmVyZyA3MTUyMgotCQkJCUdFUk1BTlkKLQotM0MtRDEtNkUgICAoaGV4KQkJVGVsZXBvd2VyIENvbW11bmljYXRpb24gQ28uLCBMdGQKLTNDRDE2RSAgICAgKGJhc2UgMTYpCQlUZWxlcG93ZXIgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZAotCQkJCTUvRixab25naGUgQnVpbGRpbmcsIEhhbnRpYW4gVGVjaG5vbG9neSBUb3duLEd1aXBpbmcgUkQsTmFuaGFpIERpc3RyaWN0LEYKLQkJCQlGb3NoYW4gQ2l0eSBHdWFuZ2RvbmcgNTI4MjUxCi0JCQkJQ0hJTkEKLQotM0MtRDktMkIgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0zQ0Q5MkIgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy1ERi0xRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0zQ0RGMUUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy1FNS1BNiAgIChoZXgpCQlIYW5nemhvdSBIM0MgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotM0NFNUE2ICAgICAoYmFzZSAxNikJCUhhbmd6aG91IEgzQyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJT3JpZW50YWwgRWxlY3Ryb25pYyBCbGQuLCBOTy4yLENodWFuZ3llIFJvYWQKLQkJCQlTaGFuZyBEaSBJbmZvcm1hdGlvbiBJbmR1c3RyeSBCYXNlLCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotM0MtRUEtNEYgICAoaGV4KQkJMldpcmUKLTNDRUE0RiAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy1GNS0yQyAgIChoZXgpCQlEU1BFQ0lBTElTVFMgR21iSAotM0NGNTJDICAgICAoYmFzZSAxNikJCURTUEVDSUFMSVNUUyBHbWJICi0JCQkJS2Fpc2VyaW4tQXVndXN0YS1BbGxlZSAxMC0xMQotCQkJCUJlcmxpbiAgMTA1NTMKLQkJCQlHRVJNQU5ZCi0KLTNDLUY3LTJBICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0zQ0Y3MkEgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1NzAKLQkJCQlGSU5MQU5ECi0KLTQwLTAxLUM2ICAgKGhleCkJCTNDT00gRVVST1BFIExURAotNDAwMUM2ICAgICAoYmFzZSAxNikJCTNDT00gRVVST1BFIExURAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTQwLTA0LTBDICAgKGhleCkJCUEmVAotNDAwNDBDICAgICAoYmFzZSAxNikJCUEmVAotCQkJCSM0MTEsIFdpbGwgVG93biwgNDAyLTMKLQkJCQlTYW5nLURvbmcsIFdvbm1pLUd1LCAKLQkJCQlCdWNoZW9uLVNpIEd5ZW9uZ2dpLURvIDQyMC04MTQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDAtMTItRTQgICAoaGV4KQkJQ29tcGFzcy1FT1MKLTQwMTJFNCAgICAgKGJhc2UgMTYpCQlDb21wYXNzLUVPUwotCQkJCTcgR2lib3JlaSBJc3JhZWwKLQkJCQlOYXRhbnlhICA0MjUwNAotCQkJCUlTUkFFTAotCi00MC0xMy1EOSAgIChoZXgpCQlHbG9iYWwgRVMKLTQwMTNEOSAgICAgKGJhc2UgMTYpCQlHbG9iYWwgRVMKLQkJCQlTaW5pbWk/b2VlbnRpZSA4IGIKLQkJCQlFc3BvbyAgMDI2MzEKLQkJCQlGSU5MQU5ECi0KLTQwLTE1LTk3ICAgKGhleCkJCVByb3RlY3QgQW1lcmljYSwgSW5jLgotNDAxNTk3ICAgICAoYmFzZSAxNikJCVByb3RlY3QgQW1lcmljYSwgSW5jLgotCQkJCTUxMDAgTiBJSC0zNQotCQkJCVN1aXRlIEIKLQkJCQlSb3VuZCBSb2NrIFRYIDc4NjgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC0xNi05RiAgIChoZXgpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLTQwMTY5RiAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLQkJCQkxLTZGLCBCdWlsZGluZyAyLCBQaW5nc2hhbmRheXVhbiBJbmR1c3RyaWFsLCBTb3V0aCBab25lLAotCQkJCVRhb3l1YW4gU3RyZWV0LCBOYW5zaGFuIERpc3RyaWN0LCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotNDAtMTgtRDcgICAoaGV4KQkJV3lsZSBUZWxlbWV0cnkgYW5kIERhdGEgU3lzdGVtcwotNDAxOEQ3ICAgICAoYmFzZSAxNikJCVd5bGUgVGVsZW1ldHJ5IGFuZCBEYXRhIFN5c3RlbXMKLQkJCQk0NDQxNyBQZWNhbiBDVAotCQkJCUNhbGlmb3JuaWEgTUQgMjA2MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLTFELTU5ICAgKGhleCkJCUJpb21ldHJpYyBBc3NvY2lhdGVzLCBMUAotNDAxRDU5ICAgICAoYmFzZSAxNikJCUJpb21ldHJpYyBBc3NvY2lhdGVzLCBMUAotCQkJCTk0NzUgRGVlcmVjbyBSZC4KLQkJCQlTdWl0ZSAzMDQKLQkJCQlUaW1vbml1bSBNRCAyMTA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtMjItRUQgICAoaGV4KQkJRGlnaXRhbCBQcm9qZWN0aW9uIEx0ZAotNDAyMkVEICAgICAoYmFzZSAxNikJCURpZ2l0YWwgUHJvamVjdGlvbiBMdGQKLQkJCQlHcmVlbnNpZGUgV2F5Ci0JCQkJTWlkZGxldG9uCi0JCQkJTWFuY2hlc3RlciBMYW5jcyBNMjQgMVhYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDAtMjUtQzIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi00MDI1QzIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi00MC0yQi1BMSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotNDAyQkExICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTQwLTJDLUY0ICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotNDAyQ0Y0ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTGFuZSAzNTEsIFRhaXBpbmcgUmQuIFNlYy4gMSwgVHNhbyBUdWVuLCAKLQkJCQlOYW4tVG91IEhzaWVuLCAgNTQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi00MC0zMC0wNCAgIChoZXgpCQlBcHBsZSwgSW5jLgotNDAzMDA0ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC0zNy1BRCAgIChoZXgpCQlNYWNybyBJbWFnZSBUZWNobm9sb2d5LCBJbmMuCi00MDM3QUQgICAgIChiYXNlIDE2KQkJTWFjcm8gSW1hZ2UgVGVjaG5vbG9neSwgSW5jLgotCQkJCUVhc3QgQmxkZy4sIDZ0aCBGbG9vciwgSVQgVmVudHVyZSBUb3dlciwKLQkJCQk3OCBHYXJha2Jvbi1Eb25nLCBTb25ncGEtR3UsCi0JCQkJU2VvdWwgIDEzOC05NTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDAtM0MtRkMgICAoaGV4KQkJQXBwbGUgSW5jCi00MDNDRkMgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBpbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC00MC0yMiAgIChoZXgpCQlaSVYKLTQwNDAyMiAgICAgKGJhc2UgMTYpCQlaSVYKLQkJCQlQYXJxdWUgVGVjbm9saT9vZWdpY28sIDIxMAotCQkJCVpBTVVESU8gVklaQ0FZQSA0ODE3MAotCQkJCVNQQUlOCi0KLTQwLTQwLTZCICAgKGhleCkJCUljb21lcmEKLTQwNDA2QiAgICAgKGJhc2UgMTYpCQlJY29tZXJhCi0JCQkJVmlraW5nc2dhdGFuIDMKLQkJCQlHaT9vZXRlYm9yZyAgNDExMDQKLQkJCQlTV0VERU4KLQotNDAtNEEtMDMgICAoaGV4KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTQwNEEwMyAgICAgKGJhc2UgMTYpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotCQkJCU5vLjYgSW5ub3ZhdGlvbiBSb2FkIElJCi0JCQkJU2NpZW5jZSBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDAtNEQtOEUgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotNDA0RDhFICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi00MC01Mi0wRCAgIChoZXgpCQlQaWNvIFRlY2hub2xvZ3kKLTQwNTIwRCAgICAgKGJhc2UgMTYpCQlQaWNvIFRlY2hub2xvZ3kKLQkJCQlKYW1lcyBIb3VzZSwgTWFybGJvcm91Z2ggUm9hZAotCQkJCUNvbG13b3J0aCBCdXNpbmVzcyBQYXJrCi0JCQkJU3QgTmVvdHMgQ2FtYnJpZGdlc2hpcmUgIFBFMTkgOFlQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDAtNTUtMzkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNDA1NTM5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtNUEtOUIgICAoaGV4KQkJQU5PVk8KLTQwNUE5QiAgICAgKGJhc2UgMTYpCQlBTk9WTwotCQkJCVpJIGRlIEJyYWNoZXV4IAotCQkJCTE2LCBSdWUgSm9zZXBoIEN1Z25vdAotCQkJCUJFQVVWQUlTICA2MDAwMAotCQkJCUZSQU5DRQotCi00MC01Ri1CRSAgIChoZXgpCQlSSU0KLTQwNUZCRSAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotNDAtNUYtQzIgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTQwNUZDMiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtNjEtODYgICAoaGV4KQkJTUlDUk8tU1RBUiBJTlQnTCBDTy4sTFRECi00MDYxODYgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlQnTCBDTy4sTFRECi0JCQkJTm8uNjksTGktRGUgU3QKLQkJCQlKdW5nLUhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDAtNjEtOEUgICAoaGV4KQkJSG9ydC1QbGFuCi00MDYxOEUgICAgIChiYXNlIDE2KQkJSG9ydC1QbGFuCi0JCQkJNjY2LTEgU2hpbW9oYXJhCi0JCQkJSGlyYWhhcmEKLQkJCQlLb21vcm8gTmFnYW5vIDM4NC0wMDkyCi0JCQkJSkFQQU4KLQotNDAtODMtREUgICAoaGV4KQkJTW90b3JvbGEKLTQwODNERSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYQotCQkJCU9uZSBNb3Rvcm9sYSBQbGF6YQotCQkJCUhvbHRzdmlsbGUgTlkgMTE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLTg0LTkzICAgKGhleCkJCUNsYXZpc3RlciBBQgotNDA4NDkzICAgICAoYmFzZSAxNikJCUNsYXZpc3RlciBBQgotCQkJCVNqb2dhdGFuIDZKCi0JCQkJT3Juc2tvbGRzdmlrICA4OTE2MAotCQkJCVNXRURFTgotCi00MC04QS05QSAgIChoZXgpCQlUSVRFTkcgQ08uLCBMdGQuCi00MDhBOUEgICAgIChiYXNlIDE2KQkJVElURU5HIENPLiwgTHRkLgotCQkJCTdGbC4gU2hpbmRvIEIvRCAxMCBHYXJhay1kb25nCi0JCQkJU29uZ3BhLWd1Ci0JCQkJU2VvdWwgIDEzOC0xNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDAtOEItRjYgICAoaGV4KQkJU2hlbnpoZW4gVENMIE5ldyBUZWNobm9sb2d5IENvOyBMdGQuCi00MDhCRjYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gVENMIE5ldyBUZWNobm9sb2d5IENvOyBMdGQuCi0JCQkJVENMIEJ1aWxkaW5nLCAjNSBDZW50cmFsIE5hbmhhaSBSb2FkLCBOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuLCBHdWFuZ2RvbmcsICA1MTgwNjcKLQkJCQlDSElOQQotCi00MC05NS01OCAgIChoZXgpCQlBaXNpbm8gQ29ycG9yYXRpb24KLTQwOTU1OCAgICAgKGJhc2UgMTYpCQlBaXNpbm8gQ29ycG9yYXRpb24KLQkJCQlOby4xOEEsIFhpbmdzaGlrb3UgUm9hZCwKLQkJCQlIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMTk1Ci0JCQkJQ0hJTkEKLQotNDAtOTctRDEgICAoaGV4KQkJQksgRWxlY3Ryb25pY3MgY2MKLTQwOTdEMSAgICAgKGJhc2UgMTYpCQlCSyBFbGVjdHJvbmljcyBjYwotCQkJCTE1MCBTd2FhcmRsZWxpZSBBdmUKLQkJCQlUaGUgV2lsbG93cwotCQkJCVByZXRvcmlhIEdhdXRlbmcgMDE4NAotCQkJCVNPVVRIIEFGUklDQQotCi00MC05OC00RSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotNDA5ODRFICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC05OC03QiAgIChoZXgpCQlBaXNpbm8gQ29ycG9yYXRpb24KLTQwOTg3QiAgICAgKGJhc2UgMTYpCQlBaXNpbm8gQ29ycG9yYXRpb24KLQkJCQlOby4xOCBBLFhpbmdzaGlrb3UgUm9hZCxIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDE5NQotCQkJCUNISU5BCi0KLTQwLUE2LUE0ICAgKGhleCkJCVBhc3NpdlN5c3RlbXMgTHRkCi00MEE2QTQgICAgIChiYXNlIDE2KQkJUGFzc2l2U3lzdGVtcyBMdGQKLQkJCQlNZWR3YXkgSG91c2UKLQkJCQlOZXdidXJ5IEJ1c2luZXNzIFBhcmsKLQkJCQlOZXdidXJ5IEJlcmtzIFJHMTQgMlBaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDAtQTYtRDkgICAoaGV4KQkJQXBwbGUKLTQwQTZEOSAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtQjItQzggICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi00MEIyQzggICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLTQwLUIzLUZDICAgKGhleCkJCUxvZ2l0YWwgQ28uIExpbWl0ZWQgCi00MEIzRkMgICAgIChiYXNlIDE2KQkJTG9naXRhbCBDby4gTGltaXRlZCAKLQkJCQlSbSA5MDEtOTAyLCA5L0YsIE5hdGhhbiBDZW50cmUsIAotCQkJCTU4MEctSyBOYXRoYW4gUm9hZCwgTW9uZ2tvaywgCi0JCQkJS293bG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTQwLUMyLTQ1ICAgKGhleCkJCVNoZW56aGVuIEhleGljb20gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTQwQzI0NSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBIZXhpY29tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTUxMCBXZXN0IEJ1aWxkaW5nLE5hbnNoYW4gU29mdHdhcmUgUGFyaywgTmFuc2hhbiBEaXN0LgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTMKLQkJCQlDSElOQQotCi00MC1DNy1DOSAgIChoZXgpCQlOYXZpaXQgSW5jLgotNDBDN0M5ICAgICAoYmFzZSAxNikJCU5hdmlpdCBJbmMuCi0JCQkJMzA1OEEgU2NvdHQgQmx2ZC4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtQ0QtM0EgICAoaGV4KQkJWjMgVGVjaG5vbG9neQotNDBDRDNBICAgICAoYmFzZSAxNikJCVozIFRlY2hub2xvZ3kKLQkJCQkyNzIwIEhhcnJpc29uIFN0Ci0JCQkJRXZhbnN0b24gSUwgNjAyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLUQzLTJEICAgKGhleCkJCUFwcGxlLCBJbmMKLTQwRDMyRCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC1ENC0wRSAgIChoZXgpCQlCaW9kYXRhIEx0ZAotNDBENDBFICAgICAoYmFzZSAxNikJCUJpb2RhdGEgTHRkCi0JCQkJMTAgU3RvY2tzIFN0cmVldAotCQkJCU1hbmNoZXN0ZXIgIE04IDhRRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTQwLUVDLUY4ICAgKGhleCkJCVNpZW1lbnMgQUcKLTQwRUNGOCAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHCi0JCQkJSSBJUyBNUyBFRE0KLQkJCQlNdW5pY2ggR2VybWFueSA4NTYzMAotCQkJCUdFUk1BTlkKLQotNDAtRUYtNEMgICAoaGV4KQkJRmlob25lc3QgY29tbXVuaWNhdGlvbiBjby4sTHRkCi00MEVGNEMgICAgIChiYXNlIDE2KQkJRmlob25lc3QgY29tbXVuaWNhdGlvbiBjby4sTHRkCi0JCQkJUm9vbTkwMixQYXJrIHJvYWQsWmhpeGluZyBidXNpbmVzcy1idWlsZGluZwotCQkJCUNoYW5ncGluZyB0b3duCi0JCQkJRG9uZ2d1YW4gR3Vhbmdkb25nIDUyMzU2MAotCQkJCUNISU5BCi0KLTQwLUYxLTRDICAgKGhleCkJCUlTRSBFdXJvcGUgU1BSTAotNDBGMTRDICAgICAoYmFzZSAxNikJCUlTRSBFdXJvcGUgU1BSTAotCQkJCTQyIGEgcnVlIEZhaWRlcgotCQkJCUJydXNzZWxzICAxMDUwCi0JCQkJQkVMR0lVTQotCi00MC1GNC1FQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi00MEY0RUMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC1GNS0yRSAgIChoZXgpCQlMZWljYSBNaWNyb3N5c3RlbXMgKFNjaHdlaXopIEFHCi00MEY1MkUgICAgIChiYXNlIDE2KQkJTGVpY2EgTWljcm9zeXN0ZW1zIChTY2h3ZWl6KSBBRwotCQkJCU1heCBTY2htaWRoZWlueS1TdHJhc3NlIDIwMQotCQkJCUhlZXJicnVnZyBTRyA5NDM1Ci0JCQkJU1dJVFpFUkxBTkQKLQotNDAtRkMtODkgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTQwRkM4OSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOb3J0aCBVUyBIaWdod2F5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC0yNS1CQiAgIChoZXgpCQlCYW1ib28gRW50ZXJ0YWlubWVudCBDb3Jwb3JhdGlvbgotNDQyNUJCICAgICAoYmFzZSAxNikJCUJhbWJvbyBFbnRlcnRhaW5tZW50IENvcnBvcmF0aW9uCi0JCQkJMTc5IFNvdXRoIFN0cmVldAotCQkJCTZ0aCBGbG9vcgotCQkJCUJvc3RvbiBNQSAwMjExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtMkEtNjAgICAoaGV4KQkJQXBwbGUsIEluYy4KLTQ0MkE2MCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtMzctMTkgICAoaGV4KQkJMiBTYXZlIEVuZXJneSBMdGQKLTQ0MzcxOSAgICAgKGJhc2UgMTYpCQkyIFNhdmUgRW5lcmd5IEx0ZAotCQkJCVRoZSBBbm5leGUsIEZpZWxkIEhvdXNlIEJhcm4KLQkJCQlDaGluZWhhbSBMYW5lCi0JCQkJU2hlcmJvcm5lIFN0IEpvaG4gSGFtcHNoaXJlIFJHMjQgOUxSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDQtMzctNkYgICAoaGV4KQkJWW91bmcgRWxlY3RyaWMgU2lnbiBDbwotNDQzNzZGICAgICAoYmFzZSAxNikJCVlvdW5nIEVsZWN0cmljIFNpZ24gQ28KLQkJCQkxNjUxIE4gMTAwMCBXCi0JCQkJTG9nYW4gVVQgODQzMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTM3LUU2ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby5MdGQKLTQ0MzdFNiAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uTHRkCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi00NC0zRC0yMSAgIChoZXgpCQlOdXZvbHQKLTQ0M0QyMSAgICAgKGJhc2UgMTYpCQlOdXZvbHQKLQkJCQk4MDg3IEJvdWwuIGRlIGxhIFJpdmUgU3VkCi0JCQkJTGV2aXMgUXVlYmVjIEc2ViA5RzkKLQkJCQlDQU5BREEKLQotNDQtNEUtMUEgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi00NDRFMUEgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LTRGLTVFICAgKGhleCkJCVBhbiBTdHVkaW9zIENvLixMdGQuCi00NDRGNUUgICAgIChiYXNlIDE2KQkJUGFuIFN0dWRpb3MgQ28uLEx0ZC4KLQkJCQkxRi4sIE5PLjQwMiwgU0VDLiAyLCBKSE9OR1lBTkcgTi4gUkQuLCBCRUlUT1UgRElTVFJJQ1QsCi0JCQkJVEFJUEVJIENJVFkgICAxMTI1OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDQtNTEtREIgICAoaGV4KQkJUmF5dGhlb24gQkJOIFRlY2hub2xvZ2llcwotNDQ1MURCICAgICAoYmFzZSAxNikJCVJheXRoZW9uIEJCTiBUZWNobm9sb2dpZXMKLQkJCQkxMCBNb3VsdG9uIFN0cmVldAotCQkJCUNhbWJyaWRnZSBNQSAwMjEzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtNTQtQzAgICAoaGV4KQkJVGhvbXBzb24gQWVyb3NwYWNlCi00NDU0QzAgICAgIChiYXNlIDE2KQkJVGhvbXBzb24gQWVyb3NwYWNlCi0JCQkJMTggVGVjaG5vbG9neQotCQkJCVN1aXRlIDEyMQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtNTYtOEQgICAoaGV4KQkJUE5DIFRlY2hub2xvZ2llcyAgQ28uLCBMdGQuCi00NDU2OEQgICAgIChiYXNlIDE2KQkJUE5DIFRlY2hub2xvZ2llcyAgQ28uLCBMdGQuCi0JCQkJIzQwMSBBbnlhbmcgTWVnYXZhbGx5LCA3OTkgS3dhbnlhbmctRG9uZwotCQkJCURvbmdhbi1ndQotCQkJCUFueWFuZyBHeWVvbmdnaS1EbyA0MzEtNzY3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LTU2LUI3ICAgKGhleCkJCVNwYXduIExhYnMsIEluYwotNDQ1NkI3ICAgICAoYmFzZSAxNikJCVNwYXduIExhYnMsIEluYwotCQkJCTIyMDkgR3JhbmdlciBMYW5lCi0JCQkJQXVzdGluIFRYIDc4NjEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC01OC0yOSAgIChoZXgpCQlDaXNjbyBTUFZURwotNDQ1ODI5ICAgICAoYmFzZSAxNikJCUNpc2NvIFNQVlRHCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCU1TIDQuVC40MjEKLQkJCQlMYXdyZW5jZXZpbGxlIEdlb3JnaWEgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTU5LTlGICAgKGhleCkJCUNyaXRpY2FyZSBTeXN0ZW1zLCBJbmMKLTQ0NTk5RiAgICAgKGJhc2UgMTYpCQlDcml0aWNhcmUgU3lzdGVtcywgSW5jCi0JCQkJMjA5MjUgQ3Jvc3Nyb2FkcyBDaXJjbGUKLQkJCQlXYXVrYXNoYSBXSSA1MzE4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtNUUtRjMgICAoaGV4KQkJVG9uYWxpdGUgSG9sZGluZyBCLlYuCi00NDVFRjMgICAgIChiYXNlIDE2KQkJVG9uYWxpdGUgSG9sZGluZyBCLlYuCi0JCQkJTmlldXcgQW1zdGVyZGFtc2VzdHJhYXQgNDAKLQkJCQlFbW1lbiBEcmVudGhlIDc4MTQgVkEKLQkJCQlORVRIRVJMQU5EUwotCi00NC02MS0zMiAgIChoZXgpCQllY29iZWUgaW5jCi00NDYxMzIgICAgIChiYXNlIDE2KQkJZWNvYmVlIGluYwotCQkJCTMzMyBBZGVsYWlkZSBTdCBXIDZ0aCBGbG9vcgotCQkJCVRvcm9udG8gT250YXJpbyBNNVYxUjUKLQkJCQlDQU5BREEKLQotNDQtNjgtQUIgICAoaGV4KQkJSlVJTiBDT01QQU5ZLCBMSU1JVEVECi00NDY4QUIgICAgIChiYXNlIDE2KQkJSlVJTiBDT01QQU5ZLCBMSU1JVEVECi0JCQkJMkZMLCAxMDc1LTEsIFdvbnB5ZW9uZy1Eb25nCi0JCQkJR3VtaSBDaXR5IEd5ZW9uZ3NhbmdidWstRG8gNzMwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00NC02Qy0yNCAgIChoZXgpCQlSZWFsbGluIEVsZWN0cm9uaWMgQ28uLEx0ZAotNDQ2QzI0ICAgICAoYmFzZSAxNikJCVJlYWxsaW4gRWxlY3Ryb25pYyBDby4sTHRkCi0JCQkJMi9GLCBCdWlsZGluZyAzLCBOby4yMDIgWmhlbmd6aG9uZyBSZCwgWGlIdSBpbmR1c3RyeSBQYXJrCi0JCQkJSGFuZyBaaG91IFpoZSBKaWFuZyAzMTAwMzAKLQkJCQlDSElOQQotCi00NC03Qy03RiAgIChoZXgpCQlJbm5vbGlnaHQgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotNDQ3QzdGICAgICAoYmFzZSAxNikJCUlubm9saWdodCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMyBSZXN1bHRzIFdheQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtN0QtQTUgICAoaGV4KQkJVlRJT04gSU5GT1JNQVRJT04gVEVDSE5PTE9HWSAoRlVKSUFOKSBDTy4sTFRECi00NDdEQTUgICAgIChiYXNlIDE2KQkJVlRJT04gSU5GT1JNQVRJT04gVEVDSE5PTE9HWSAoRlVKSUFOKSBDTy4sTFRECi0JCQkJUm9vbSA1MDIsIFdpbmcgQSwgV29ybGQgVHJhZGUgQ2VudGVyCi0JCQkJTm8uMzYgRWFzdCBOb3J0aCBUaGlyZCBSaW5nIFJvYWQsRG9uZ2NoZW5nIERpc3RyaWN0LAotCQkJCSBCZWlqaW5nLCAgIAotCQkJCUNISU5BCi0KLTQ0LTdFLTk1ICAgKGhleCkJCUFscGhhIGFuZCBPbWVnYSwgSW5jCi00NDdFOTUgICAgIChiYXNlIDE2KQkJQWxwaGEgYW5kIE9tZWdhLCBJbmMKLQkJCQk0NzM1IE1vbnR2aWV3IEJsdmQKLQkJCQlEZW52ZXIgQ08gODAyMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTgzLTEyICAgKGhleCkJCVN0YXItTmV0Ci00NDgzMTIgICAgIChiYXNlIDE2KQkJU3Rhci1OZXQKLQkJCQlFZ296IDY0IAotCQkJCUtpcnlhdCBCeWFsaWsgSXNyYWVsIDI3MDAwCi0JCQkJSVNSQUVMCi0KLTQ0LTg1LTAwICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi00NDg1MDAgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTQ0LTg3LUZDICAgKGhleCkJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotNDQ4N0ZDICAgICAoYmFzZSAxNikJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotCQkJCU5PLiAyMzksIFNlYy4gMiwgVGkgRGluZyBCbHZkLgotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ0LThDLTUyICAgKGhleCkJCUtUSVMgQ08uLCBMdGQKLTQ0OEM1MiAgICAgKGJhc2UgMTYpCQlLVElTIENPLiwgTHRkCi0JCQkJMTIwOGhvLTEwM2RvbmcKLQkJCQkzNi0xLCBCdWNoZW9uIFRlY2hub3BhcmszLiBTYW1qdW5nLURvbmcKLQkJCQlPanVuZy1HdSwgQnVjaGVvbi1zaSBHeWVvbmdnaS1kbyA0MjEtODA4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LThFLTgxICAgKGhleCkJCVZJRwotNDQ4RTgxICAgICAoYmFzZSAxNikJCVZJRwotCQkJCTcwNSBIYW5zaGluIElUIFRvd2VyLCA2MC0xOCwgS2FzYW4tZG9uZywgR2V1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIEtTWFgwMDIyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LTkxLURCICAgKGhleCkJCVNoYW5naGFpIEh1YXFpbiBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLEx0ZAotNDQ5MURCICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEh1YXFpbiBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLjEgQnVpbGRpbmcsMzk5IEtleXVhbiBSb2FkLCBaaGFuZ2ppYW4gSGktVGVjaCBQYXJrLCBQdWRvbmcgTmV3IEFyZWEsIAotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi00NC05Qy1CNSAgIChoZXgpCQlBbGNvbXAsIEluYwotNDQ5Q0I1ICAgICAoYmFzZSAxNikJCUFsY29tcCwgSW5jCi0JCQkJMTE1MzcgV2FsbnV0IExhbmUKLQkJCQlGb3J0IEF0a2luc29uIFdJIDUzNTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC1BNC0yRCAgIChoZXgpCQlUQ1QgTW9iaWxlIExpbWl0ZWQKLTQ0QTQyRCAgICAgKGJhc2UgMTYpCQlUQ1QgTW9iaWxlIExpbWl0ZWQKLQkJCQk0L0YsIFNvdXRoIEJ1aWxkaW5nLE5vLjI5NjYsIEppbmtlIFJvYWQsIFpoYW5namlhbmcgSGlnaC1UZWNoIFBhcmssIFB1ZG9uZwotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi00NC1BNi04OSAgIChoZXgpCQlQUk9NQVggRUxFQ1RST05JQ0EgU0EKLTQ0QTY4OSAgICAgKGJhc2UgMTYpCQlQUk9NQVggRUxFQ1RST05JQ0EgU0EKLQkJCQlGUkFOQ0VTQyBNT1JBR0FTIDcxLTc1Ci0JCQkJSE9TUElUQUxFVCBERSBMTE9CUkVHQVQgQkFSQ0VMT05BIDA4OTA3Ci0JCQkJU1BBSU4KLQotNDQtQTctQ0YgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi00NEE3Q0YgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0JCQkJMTAtMSwgSGlnYXNoaWtvdGFyaSAxCi0JCQkJTmFnYW9rYWt5by1zaGkgS3lvdG8gNjE3LTg1NTUKLQkJCQlKQVBBTgotCi00NC1BOC1DMiAgIChoZXgpCQlTRVdPTyBURUNIIENPLiwgTFRECi00NEE4QzIgICAgIChiYXNlIDE2KQkJU0VXT08gVEVDSCBDTy4sIExURAotCQkJCTY4OS0yMCBHRVVNSlVORy1ET05HIAotCQkJCUdVTlBPLVNJIEtZVU5HR0ktRE8gNDM1LTg2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00NC1BQS0yNyAgIChoZXgpCQl1ZHdvcmtzIENvLiwgTHRkLgotNDRBQTI3ICAgICAoYmFzZSAxNikJCXVkd29ya3MgQ28uLCBMdGQuCi0JCQkJIzgxMCwgQnl1a3NhbjNjaGEgRGlnaXRhbCBWYWxsZXksIDIxMi0xMywgR3Vyby1kb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi03NzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDQtQUEtRTggICAoaGV4KQkJTmFub3RlYyBFbGVjdHJvbmljIEdtYkggJiBDby4gS0cKLTQ0QUFFOCAgICAgKGJhc2UgMTYpCQlOYW5vdGVjIEVsZWN0cm9uaWMgR21iSCAmIENvLiBLRwotCQkJCUdld2VyYmVzdHJhc3NlIDExCi0JCQkJTGFuZHNoYW0gQmF2YXJpYSA4NTY1MgotCQkJCUdFUk1BTlkKLQotNDQtQzEtNUMgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTQ0QzE1QyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtQzItMzMgICAoaGV4KQkJR3Vhbmd6aG91IENvbWV0IFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uTHRkCi00NEMyMzMgICAgIChiYXNlIDE2KQkJR3Vhbmd6aG91IENvbWV0IFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uTHRkCi0JCQkJUm0gMzA0LEZMIDMsQmxvY2sgRyxTY2llbmNlIGFuZCAgVGVjaG5vbG9neSBJbm5vdmF0aW9uIEJhc2UsCi0JCQkJTm8uODAsTGFueXVlIFJvYWQsU2NpZW5jZSBQYXJrLAotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYzCi0JCQkJQ0hJTkEKLQotNDQtQzktQTIgICAoaGV4KQkJR3JlZW53YWxkIEluZHVzdHJpZXMKLTQ0QzlBMiAgICAgKGJhc2UgMTYpCQlHcmVlbndhbGQgSW5kdXN0cmllcwotCQkJCTIxMiBNaWRkbGVzZXggQXZlbnVlCi0JCQkJQ2hlc3RlciBDVCAwNjQxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtRDItQ0EgICAoaGV4KQkJQW52aWEgVFYgT3kKLTQ0RDJDQSAgICAgKGJhc2UgMTYpCQlBbnZpYSBUViBPeQotCQkJCVBPIEJveCAyOQotCQkJCVNFSU5BSk9LSSAgRklONjAxMDEKLQkJCQlGSU5MQU5ECi0KLTQ0LUQ2LTNEICAgKGhleCkJCVRhbGFyaSBOZXR3b3JrcwotNDRENjNEICAgICAoYmFzZSAxNikJCVRhbGFyaSBOZXR3b3JrcwotCQkJCTMyMDAgR2xlbiBSb3lhbCBSZC4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlSYWxlaWdoICBOQyAyNzYxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtRDgtMzIgICAoaGV4KQkJQXp1cmV3YXZlIFRlY2hub2xvZ2llcywgSW5jLgotNDREODMyICAgICAoYmFzZSAxNikJCUF6dXJld2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4Ri4sIEJhb3pob25nIFJkLgotCQkJCVhpbmRpYW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDQtREMtQ0IgICAoaGV4KQkJU0VNSU5ESUEgU1lTVEVNUyBQVlQgTFRECi00NERDQ0IgICAgIChiYXNlIDE2KQkJU0VNSU5ESUEgU1lTVEVNUyBQVlQgTFRECi0JCQkJMTAwNi8xMywgU3kgTm8uNDkvMSYzLCA3dGggTWlsZSwgQS5NIEluZGwgRXN0YXRlLAotCQkJCUdhcnZlYmhhdmlwYWx5YSxIb3N1ciBSb2FkLCAKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDA2OAotCQkJCUlORElBCi0KLTQ0LUU0LTlBICAgKGhleCkJCU9NTklUUk9OSUNTIFBUWSBMVEQKLTQ0RTQ5QSAgICAgKGJhc2UgMTYpCQlPTU5JVFJPTklDUyBQVFkgTFRECi0JCQkJMjcgU0FSSUNIIENSVAotCQkJCU9TQk9STkUgUEFSSyBXQSA2MDE3Ci0JCQkJQVVTVFJBTElBCi0KLTQ0LUU0LUQ5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTQ0RTREOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LUVELTU3ICAgKGhleCkJCUxvbmdpY29ybiwgaW5jLgotNDRFRDU3ICAgICAoYmFzZSAxNikJCUxvbmdpY29ybiwgaW5jLgotCQkJCVJtMTAwMS0yLCAxMEYsIEJ5dWtzYW4gRGlnaXRhbCBWYWxsZXkxCi0JCQkJMjEyLTE2LCBHdXJvLTNEb25nLCBHdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi03NzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDQtRjQtNTkgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotNDRGNDU5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDgtMTItNDkgICAoaGV4KQkJTHV4Y29tIFRlY2hub2xvZ2llcyBJbmMuCi00ODEyNDkgICAgIChiYXNlIDE2KQkJTHV4Y29tIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMTAyIFdhbGdyZWVuIFJvYWQKLQkJCQlPdHRhd2EgT250YXJpbyBLMEEgMUwwCi0JCQkJQ0FOQURBCi0KLTQ4LTE3LTRDICAgKGhleCkJCU1pY3JvUG93ZXIgdGVjaG5vbG9naWVzCi00ODE3NEMgICAgIChiYXNlIDE2KQkJTWljcm9Qb3dlciB0ZWNobm9sb2dpZXMKLQkJCQk0MjI1IEV4ZWN1dGl2ZSBTcS4KLQkJCQlTdWl0ZSA0MzAKLQkJCQlMYSBKb2xsYSBDYWxpZm9ybmlhIDkyMDM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00OC0xQi1EMiAgIChoZXgpCQlJbnRyb24gU2NpZW50aWZpYyBjby4sIGx0ZC4KLTQ4MUJEMiAgICAgKGJhc2UgMTYpCQlJbnRyb24gU2NpZW50aWZpYyBjby4sIGx0ZC4KLQkJCQk2Ri4sIE5PLiAxMzYsU2VjIDIsS2VlbHVuZyBSZC4sIERhLWFuIGRpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ4LTJDLUVBICAgKGhleCkJCU1vdG9yb2xhIEluYyBCdXNpbmVzcyBMaWdodCBSYWRpb3MKLTQ4MkNFQSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBJbmMgQnVzaW5lc3MgTGlnaHQgUmFkaW9zCi0JCQkJODAwMCBXIFN1bnJpc2UgQm91bGV2YXJkCi0JCQkJUGxhbnRhdGlvbiBGbG9yaWRhIDMzMzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00OC0zNC0zRCAgIChoZXgpCQlJRVAgR21iSAotNDgzNDNEICAgICAoYmFzZSAxNikJCUlFUCBHbWJICi0JCQkJQW0gUGZlcmRlbWFya3QgOWMKLQkJCQlMYW5nZW5oYWdlbiBOaWVkZXJzYWNoc2VuIDMwODUzCi0JCQkJR0VSTUFOWQotCi00OC00NC04NyAgIChoZXgpCQlDaXNjbyBTUFZURwotNDg0NDg3ICAgICAoYmFzZSAxNikJCUNpc2NvIFNQVlRHCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCU1TIDQuVC42MDcKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00OC01Qi0zOSAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTQ4NUIzOSAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91LCAKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDgtNUQtNjAgICAoaGV4KQkJQXp1cmV3YXZlIFRlY2hub2xvZ2llcywgSW5jLgotNDg1RDYwICAgICAoYmFzZSAxNikJCUF6dXJld2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4RiAuLCBOby45NCwgQmFvemhvbmcgUmQuIAotCQkJCVhpbmRpYW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ4LTYwLUJDICAgKGhleCkJCUFwcGxlIEluYwotNDg2MEJDICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgaW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDgtNkItOTEgICAoaGV4KQkJRmxlZXR3b29kIEdyb3VwIEluYy4KLTQ4NkI5MSAgICAgKGJhc2UgMTYpCQlGbGVldHdvb2QgR3JvdXAgSW5jLgotCQkJCTExODMyIEphbWVzIFN0Ci0JCQkJUE8gQm94IDEyNTkKLQkJCQlIb2xsYW5kIE1pY2hpZ2FuIDQ5NDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00OC02Ri1EMiAgIChoZXgpCQlTdG9yU2ltcGxlIEluYwotNDg2RkQyICAgICAoYmFzZSAxNikJCVN0b3JTaW1wbGUgSW5jCi0JCQkJMjM1MCBNaXNzaW9uIENvbGxlZ2UgQmx2ZAotCQkJCVN1aXRlICM0NzAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDgtNzEtMTkgICAoaGV4KQkJU0dCIEdST1VQIExURC4KLTQ4NzExOSAgICAgKGJhc2UgMTYpCQlTR0IgR1JPVVAgTFRELgotCQkJCTEzRixOby4xOTIsU2VjLjIsQ2h1bmcgSHNpbiBSZC4sSHNpbiBUaWVuIENpdHkKLQkJCQlUYWlwZWkgICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ4LThFLTQyICAgKGhleCkJCURJR0FMT0cgR21iSAotNDg4RTQyICAgICAoYmFzZSAxNikJCURJR0FMT0cgR21iSAotCQkJCVdhdHRzdHIuIDExLTEzCi0JCQkJQmVybGluICBELTEzMzU1Ci0JCQkJR0VSTUFOWQotCi00OC05MS1GNiAgIChoZXgpCQlTaGVuemhlbiBSZWFjaCBzb2Z0d2FyZSB0ZWNobm9sb2d5IENPLixMVEQKLTQ4OTFGNiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBSZWFjaCBzb2Z0d2FyZSB0ZWNobm9sb2d5IENPLixMVEQKLQkJCQk2L0YsQmxvY2sgQiwgS2luZ2RlZSBTb2Z0d2FyZSBwYXJrLCMyLEtlamkgMTJ0aCBTb3V0aCBSb2FkLEhpLXRlY2ggSW5kdXN0cmlhbCBQYXJrLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotNDgtQUEtNUQgICAoaGV4KQkJU3RvcmUgRWxlY3Ryb25pYyBTeXN0ZW1zCi00OEFBNUQgICAgIChiYXNlIDE2KQkJU3RvcmUgRWxlY3Ryb25pYyBTeXN0ZW1zCi0JCQkJMzkgcnVlIGRlIG1vbnRpZ255Ci0JCQkJQXJnZW50ZXVpbCAgOTUxMDAKLQkJCQlGUkFOQ0UKLQotNDgtQzgtNjIgICAoaGV4KQkJU2ltbyBXaXJlbGVzcyxJbmMuCi00OEM4NjIgICAgIChiYXNlIDE2KQkJU2ltbyBXaXJlbGVzcyxJbmMuCi0JCQkJMzI2IyxCdWlsZGluZyA0LFpob25neGluZyBJbmR1c3RyaWFsIFBhcmssQ2h1YW5neWUKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU0Ci0JCQkJQ0hJTkEKLQotNDgtQzgtQjYgICAoaGV4KQkJU3lzVGVjIEdtYkgKLTQ4QzhCNiAgICAgKGJhc2UgMTYpCQlTeXNUZWMgR21iSAotCQkJCUx1ZHdpZy1FcmhhcmQtU3RyYXNzZSA2Ci0JCQkJQmVyZ2hlaW0tR2xlc3NlbiBOUlcgNTAxMjkKLQkJCQlHRVJNQU5ZCi0KLTQ4LUNCLTZFICAgKGhleCkJCUNlbGxvIEVsZWN0cm9uaWNzIChVSykgTHRkCi00OENCNkUgICAgIChiYXNlIDE2KQkJQ2VsbG8gRWxlY3Ryb25pY3MgKFVLKSBMdGQKLQkJCQlDbGlmZiBMb2RnZQotCQkJCUhhcm1ieSBSb2FkCi0JCQkJTGV5YnVybiBOb3J0aCBZb3Jrc2hpcmUgREw4IDVOUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTQ4LUQ4LUZFICAgKGhleCkJCUNsYXJJRHkgU29sdXRpb25zLCBJbmMuCi00OEQ4RkUgICAgIChiYXNlIDE2KQkJQ2xhcklEeSBTb2x1dGlvbnMsIEluYy4KLQkJCQk3RiwgTm8uOSwgUGFya0F2ZW51ZSBJSSBSZC4sIEhzaW5jaHUgU2NpZW5jZSBQYXJrLCAKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ4LURDLUZCICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi00OERDRkIgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSAgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLTQ4LURGLTFDICAgKGhleCkJCVd1aGFuIE5FQyBGaWJyZSBPcHRpYyBDb21tdW5pY2F0aW9ucyBpbmR1c3RyeSBDby4gTHRkCi00OERGMUMgICAgIChiYXNlIDE2KQkJV3VoYW4gTkVDIEZpYnJlIE9wdGljIENvbW11bmljYXRpb25zIGluZHVzdHJ5IENvLiBMdGQKLQkJCQkzcmQgUm9hZCBHdWFuc2hhbiwKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi00OC1FQi0zMCAgIChoZXgpCQkgRVRFUk5BIFRFQ0hOT0xPR1ksIElOQy4KLTQ4RUIzMCAgICAgKGJhc2UgMTYpCQkgRVRFUk5BIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkzOTM5IHZlc2VsaWNoIGF2ZQotCQkJCTMxNwotCQkJCWxvcyBhbmdlbGVzIGNhbGlmb3JuaWEgOTAwMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ4LUY0LTdEICAgKGhleCkJCVRlY2hWaXNpb24gSG9sZGluZyAgSW50ZXJuYXRpb24gTGltaXRlZAotNDhGNDdEICAgICAoYmFzZSAxNikJCVRlY2hWaXNpb24gSG9sZGluZyAgSW50ZXJuYXRpb24gTGltaXRlZAotCQkJCU9mZnNob3JlIEluY29ycG9yYXRpb25zIENlbnRyZQotCQkJCVAuTy4gQm94IDk1NwotCQkJCVJvYWQgVG93biBUb3J0b2xhIFZHMTExMAotCQkJCVZJUkdJTiBJU0xBTkRTLCBCUklUSVNICi0KLTQ4LUY4LUUxICAgKGhleCkJCUFsY2F0ZWwgTHVjZW50IFdUCi00OEY4RTEgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQgV1QKLQkJCQk2MDAgTWFyY2ggRHJpdmUKLQkJCQlPdHRhd2EgT250YXJpbyBrMmsgMmU2Ci0JCQkJQ0FOQURBCi0KLTQ4LUZDLUI4ICAgKGhleCkJCVdvb2RzdHJlYW0gQ29ycG9yYXRpb24KLTQ4RkNCOCAgICAgKGJhc2UgMTYpCQlXb29kc3RyZWFtIENvcnBvcmF0aW9uCi0JCQkJNjkgTi4gTG9jdXN0IFN0cmVldAotCQkJCUxpdGl0eiBQQSAxNzU0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNEMtMDItMkUgICAoaGV4KQkJQ01SIEtPUkVBIENPLiwgTFRECi00QzAyMkUgICAgIChiYXNlIDE2KQkJQ01SIEtPUkVBIENPLiwgTFRECi0JCQkJNkYsIEotVG93ZXIsIDI0LTUgQmFuZ2ktZG9uZywgU29uZ3BhLUd1Ci0JCQkJU2VvdWwgIDEzOC0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNEMtMDctQzkgICAoaGV4KQkJQ09NUFVURVIgT0ZGSUNFIENvLixMdGQuCi00QzA3QzkgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgT0ZGSUNFIENvLixMdGQuCi0JCQkJMTM2OC0xMCBNdXJhbWF0c3UtY2hvCi0JCQkJSXNlLXNoaSBNaWUta2VuIDUxNS0wNTA3Ci0JCQkJSkFQQU4KLQotNEMtMEYtNkUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLTRDMEY2RSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotNEMtMTQtODAgICAoaGV4KQkJTk9SRUdPTiBTWVNURU1TLCBJTkMKLTRDMTQ4MCAgICAgKGJhc2UgMTYpCQlOT1JFR09OIFNZU1RFTVMsIElOQwotCQkJCTEwMCBOLiBNQUlOIFNULiAgU1VJVEUgMjIwMAotCQkJCVdJTlNUT04gLSBTQUxFTSBOQyAyNzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNEMtMUEtM0EgICAoaGV4KQkJUFJJTUEgUmVzZWFyY2ggQW5kIFByb2R1Y3Rpb24gRW50ZXJwcmlzZSBMdGQuCi00QzFBM0EgICAgIChiYXNlIDE2KQkJUFJJTUEgUmVzZWFyY2ggQW5kIFByb2R1Y3Rpb24gRW50ZXJwcmlzZSBMdGQuCi0JCQkJNjMsIFN2b2JvZHkgc3QuCi0JCQkJTml6aG55IE5vdmdvcm9kICA2MDMwMDMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotNEMtMUYtQ0MgICAoaGV4KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi00QzFGQ0MgICAgIChiYXNlIDE2KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0JCQkJQjEtNyxIdWF3ZWkgSW5kdXN0cmlhbCBCYXNlLEJhbnRpYW4sTG9uZ2dhbmcKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotNEMtMkMtODAgICAoaGV4KQkJQmVpamluZyBTa3l3YXkgVGVjaG5vbG9naWVzIENvLixMdGQgCi00QzJDODAgICAgIChiYXNlIDE2KQkJQmVpamluZyBTa3l3YXkgVGVjaG5vbG9naWVzIENvLixMdGQgCi0JCQkJTm8uNSBKaWFuZ3RhaSBSb2FkLCAKLQkJCQlDaGFveWFuZyBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDAxNQotCQkJCUNISU5BCi0KLTRDLTMwLTg5ICAgKGhleCkJCVRoYWxlcyBUcmFuc3BvcnRhdGlvbiBTeXN0ZW1zIEdtYkgKLTRDMzA4OSAgICAgKGJhc2UgMTYpCQlUaGFsZXMgVHJhbnNwb3J0YXRpb24gU3lzdGVtcyBHbWJICi0JCQkJQmllcndlZyAyCi0JCQkJQXJuc3RhZHQgVGh1cmluZ2lhIDk5MzEwCi0JCQkJR0VSTUFOWQotCi00Qy0zMi0yRCAgIChoZXgpCQlURUxFREFUQSBORVRXT1JLUwotNEMzMjJEICAgICAoYmFzZSAxNikJCVRFTEVEQVRBIE5FVFdPUktTCi0JCQkJMTAgSGFzYWRuYW90IFN0cmVldAotCQkJCUhFUlpMSVlBICA0NjEyMAotCQkJCUlTUkFFTAotCi00Qy0zQi03NCAgIChoZXgpCQlWT0dURUMoSC5LLikgQ28uLCBMdGQKLTRDM0I3NCAgICAgKGJhc2UgMTYpCQlWT0dURUMoSC5LLikgQ28uLCBMdGQKLQkJCQlVbml0IEQgMTEvRiBTZWFicmlnaHQgUGxhemEgOS0yMyBTaGVsbCBTVAotCQkJCU5vcnRoIFBvaW50IAotCQkJCUhvbmcgS29uZyAgOTk5MDc3Ci0JCQkJQ0hJTkEKLQotNEMtNEItNjggICAoaGV4KQkJTW9iaWxlIERldmljZSwgSW5jLiAKLTRDNEI2OCAgICAgKGJhc2UgMTYpCQlNb2JpbGUgRGV2aWNlLCBJbmMuIAotCQkJCSA4Ri0xLCBOby4gMTQ1LCBTaWFuamhlbmcgOXRoIFJkLiwgCi0JCQkJSmh1YmVpIENpdHksICBIc2luY2h1IENvdW50eSAgMzAyNTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTRDLTU0LTk5ICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTRDNTQ5OSAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTEwMTA4Ci0JCQkJQ0hJTkEKLQotNEMtNUQtQ0QgICAoaGV4KQkJT3kgRmlubmlzaCBFbGVjdHJpYyBWZWhpY2xlIFRlY2hub2xvZ2llcyBMdGQKLTRDNURDRCAgICAgKGJhc2UgMTYpCQlPeSBGaW5uaXNoIEVsZWN0cmljIFZlaGljbGUgVGVjaG5vbG9naWVzIEx0ZAotCQkJCU1hamF2YW50aWUgMTAKLQkJCQlUVVVTVUxBICBGSS0wNDMyMAotCQkJCUZJTkxBTkQKLQotNEMtNjAtRDUgICAoaGV4KQkJYWlyUG9pbnRlIG9mIE5ldyBIYW1wc2hpcmUKLTRDNjBENSAgICAgKGJhc2UgMTYpCQlhaXJQb2ludGUgb2YgTmV3IEhhbXBzaGlyZQotCQkJCTM1RSBJbmR1c3RyaWFsIFdheQotCQkJCVJvY2hlc3RlciBOSCAwMzg2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotNEMtNjMtRUIgICAoaGV4KQkJQXBwbGljYXRpb24gU29sdXRpb25zIChFbGVjdHJvbmljcyBhbmQgVmlzaW9uKSBMdGQKLTRDNjNFQiAgICAgKGJhc2UgMTYpCQlBcHBsaWNhdGlvbiBTb2x1dGlvbnMgKEVsZWN0cm9uaWNzIGFuZCBWaXNpb24pIEx0ZAotCQkJCVRoZSBSaXZlcnNpZGUgQ2VudHJlCi0JCQkJUmFpbHdheSBMYW5lCi0JCQkJTGV3ZXMgRWFzdCBTdXNzZXggQk43IDJBUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTRDLTczLTY3ICAgKGhleCkJCUdlbml1cyBCeXRlcyBTb2Z0d2FyZSBTb2x1dGlvbnMgR21iSAotNEM3MzY3ICAgICAoYmFzZSAxNikJCUdlbml1cyBCeXRlcyBTb2Z0d2FyZSBTb2x1dGlvbnMgR21iSAotCQkJCU1lcmlhbnN0ci4gMzAKLQkJCQlCb2NodW0gTlJXIDQ0ODAxCi0JCQkJR0VSTUFOWQotCi00Qy03My1BNSAgIChoZXgpCQlLT1ZFCi00QzczQTUgICAgIChiYXNlIDE2KQkJS09WRQotCQkJCTE0IE4uIFBlb3JpYSBTdHJlZXQKLQkJCQlTdWl0ZSAySAotCQkJCUNoaWNhZ28gSUwgNjA2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTRDLTc3LTRGICAgKGhleCkJCUVtYmVkZGVkIFdpcmVsZXNzIExhYnMgCi00Qzc3NEYgICAgIChiYXNlIDE2KQkJRW1iZWRkZWQgV2lyZWxlc3MgTGFicyAKLQkJCQk3MDIgTGV2ZWwgNyBVcHRvd24gMiBOby4yIAotCQkJCUphbGFuIFNTMjEvMzcgRGFtYW5zYXJhIFVwdG93bgotCQkJCVBldGFsaW5nIEpheWEgU2VsYW5nb3IgNDc0MDAKLQkJCQlNQUxBWVNJQQotCi00Qy04MC05MyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTRDODA5MyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTRDLThCLTU1ICAgKGhleCkJCUdydXBvIERpZ2ljb24KLTRDOEI1NSAgICAgKGJhc2UgMTYpCQlHcnVwbyBEaWdpY29uCi0JCQkJUnVhIE5pc3NpbiBDYXN0aWVsLCA2NDAKLQkJCQlHcmF2YXRhaT9vZSBSaW8gR3JhbmRlIGRvIFN1bCA5NDA0NTQyMAotCQkJCUJSQVpJTAotCi00Qy05OC1FRiAgIChoZXgpCQlaZW8KLTRDOThFRiAgICAgKGJhc2UgMTYpCQlaZW8KLQkJCQkzMjAgTmV2YWRhIFN0Ci0JCQkJNHRoIEZsb29yCi0JCQkJTmV3dG9uICBNQSAwMjQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNEMtOUUtRTQgICAoaGV4KQkJSGFueWFuZyBOYXZpY29tIENvLixMdGQuCi00QzlFRTQgICAgIChiYXNlIDE2KQkJSGFueWFuZyBOYXZpY29tIENvLixMdGQuCi0JCQkJNzEzLCBHd2FucHllb25nLWRvbmcsIFl1c3VuZy1ndQotCQkJCURhZWplb24gIDMwNS01MDkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNEMtQjQtRUEgICAoaGV4KQkJSFJEIChTKSBQVEUuLCBMVEQuCi00Q0I0RUEgICAgIChiYXNlIDE2KQkJSFJEIChTKSBQVEUuLCBMVEQuCi0JCQkJTG90IDcsIEJsb2NrIDksIFBoYXNlIDEsIENhdml0ZSBFY28tWm9uZSwKLQkJCQlSb3NhcmlvIENhdml0ZSA0MTA2Ci0JCQkJUEhJTElQUElORVMKLQotNEMtQjktQzggICAoaGV4KQkJQ09ORVQgQ08uLCBMVEQuCi00Q0I5QzggICAgIChiYXNlIDE2KQkJQ09ORVQgQ08uLCBMVEQuCi0JCQkJMi04LEhJR0FTSElKSU1BLUNITwotCQkJCUlDSElOT01JWUEgQUlDSEkgNDkxLTAwNzQKLQkJCQlKQVBBTgotCi00Qy1CQS1BMyAgIChoZXgpCQlCaXNvbiBFbGVjdHJvbmljcyBJbmMuCi00Q0JBQTMgICAgIChiYXNlIDE2KQkJQmlzb24gRWxlY3Ryb25pY3MgSW5jLgotCQkJCTNGLiwgTm8uMjgsIExhbmUgNTgzLCBSdWVpZ3VhbmcgUmQuLCBOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSBDaXR5ICAxMTQ5MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNEMtQzQtNTIgICAoaGV4KQkJU2hhbmcgSGFpIFR5ZC4gRWxlY3RvbiBUZWNobm9sb2d5IEx0ZC4KLTRDQzQ1MiAgICAgKGJhc2UgMTYpCQlTaGFuZyBIYWkgVHlkLiBFbGVjdG9uIFRlY2hub2xvZ3kgTHRkLgotCQkJCVJvb20gTm8uNSxOMC4zOTYsR3VpTGluIFJvYWQsIAotCQkJCVh1IEh1aSBEaXN0cmljdAotCQkJCVNoYW5nIEhhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotNEMtQzYtMDIgICAoaGV4KQkJUmFkaW9zLCBJbmMuCi00Q0M2MDIgICAgIChiYXNlIDE2KQkJUmFkaW9zLCBJbmMuCi0JCQkJMTQwOCBDZW50ZXIgQXZlbnVlCi0JCQkJT29zdGJ1cmcgV2lzY29uc2luIDUzMDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00Qy1FNi03NiAgIChoZXgpCQlCVUZGQUxPIElOQy4KLTRDRTY3NiAgICAgKGJhc2UgMTYpCQlCVUZGQUxPIElOQy4KLQkJCQkxNSwgU2hpYmF0YSBIb25kb3JpIDQtY2hvbWUKLQkJCQlNaW5hbWkta3UsIE5hZ295YSBBaWNoaSA0NTctODUyMAotCQkJCUpBUEFOCi0KLTRDLUVELURFICAgKGhleCkJCUFza2V5IENvbXB1dGVyIENvcnAKLTRDRURERSAgICAgKGJhc2UgMTYpCQlBc2tleSBDb21wdXRlciBDb3JwCi0JCQkJMTBmLG5vLjExOSxjaGllbmthbmcgcmQsY2h1bmctaG8sCi0JCQkJVEFJUEVJIDIzNTg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi00Qy1GNy0zNyAgIChoZXgpCQlTYW1KaSBFbGVjdHJvbmljcyBDby4sIEx0ZAotNENGNzM3ICAgICAoYmFzZSAxNikJCVNhbUppIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJNDU5LTIxLCBHYXNhbi1kb25nLCBHdW1jaHVuLWt1Ci0JCQkJU2VvdWwgIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNTAtMEUtNkQgICAoaGV4KQkJVHJhZmZpY0Nhc3QgSW50ZXJuYXRpb25hbAotNTAwRTZEICAgICAoYmFzZSAxNikJCVRyYWZmaWNDYXN0IEludGVybmF0aW9uYWwKLQkJCQkyODAxIENvaG8gU3RyZWV0Ci0JCQkJU3VpdGUgMTAwCi0JCQkJTWFkaXNvbiBXSSA1MzcxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNTAtMjUtMkIgICAoaGV4KQkJTmV0aHJhIEltYWdpbmcgSW5jb3Jwb3JhdGVkCi01MDI1MkIgICAgIChiYXNlIDE2KQkJTmV0aHJhIEltYWdpbmcgSW5jb3Jwb3JhdGVkCi0JCQkJMjg1NSBCb3dlcnMgQXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTUwLTJBLTdFICAgKGhleCkJCVNtYXJ0IGVsZWN0cm9uaWMgR21iSAotNTAyQTdFICAgICAoYmFzZSAxNikJCVNtYXJ0IGVsZWN0cm9uaWMgR21iSAotCQkJCUluZHVzdHJpZSBTdHIuIDI5Ci0JCQkJU3QuIEdlb3JnZW4gIDc4MTEyCi0JCQkJR0VSTUFOWQotCi01MC0yQS04QiAgIChoZXgpCQlUZWxla29tIFJlc2VhcmNoIGFuZCBEZXZlbG9wbWVudCBTZG4gQmhkCi01MDJBOEIgICAgIChiYXNlIDE2KQkJVGVsZWtvbSBSZXNlYXJjaCBhbmQgRGV2ZWxvcG1lbnQgU2RuIEJoZAotCQkJCVRNUk5EIElubm92YXRpb24gQ2VudHJlCi0JCQkJTGluZ2thcmFuIFRla25va3JhdCBUaW11cgotCQkJCUN5YmVyamF5YSBTZWxhbmdvciA2MzAwMAotCQkJCU1BTEFZU0lBCi0KLTUwLTJELUEyICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotNTAyREEyICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotNTAtMkQtRjQgICAoaGV4KQkJUGh5dGVjIE1lc3N0ZWNobmlrIEdtYkgKLTUwMkRGNCAgICAgKGJhc2UgMTYpCQlQaHl0ZWMgTWVzc3RlY2huaWsgR21iSAotCQkJCVJvYmVydC1Lb2NoLVN0cmFzc2UgMzkgCi0JCQkJTWFpbnogUmhlaW5sYW5kLVBmYWx6IDU1MTI5Ci0JCQkJR0VSTUFOWQotCi01MC0zRC1FNSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi01MDNERTUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC02My0xMyAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotNTA2MzEzICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMwotCQkJCUNISU5BCi0KLTUwLTY3LUYwICAgKGhleCkJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi01MDY3RjAgICAgIChiYXNlIDE2KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQlOby42IElubm92YXRpb24gUm9hZCBJSSwKLQkJCQlTY2llbmNlIFBhcmssCi0JCQkJSHNpbi1DaHUsICAgMjIwOTk1MDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTUwLTZGLTlBICAgKGhleCkJCVdpLUZpIEFsbGlhbmNlCi01MDZGOUEgICAgIChiYXNlIDE2KQkJV2ktRmkgQWxsaWFuY2UKLQkJCQkzOTI1IFcuIEJyYWtlciBMYW5lCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC03MC1FNSAgIChoZXgpCQlIZSBTaGFuIFdvcmxkIEZhaXIgRWxlY3Ryb25pY3MgVGVjaG5vbG9neSBMaW1pdGVkCi01MDcwRTUgICAgIChiYXNlIDE2KQkJSGUgU2hhbiBXb3JsZCBGYWlyIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCU5ldyBNYXRlcmlhbCBCYXNlLCBHb25naGUgVG93bgotCQkJCUhlc2hhbiBDaXR5Ci0JCQkJSmlhbmdtZW4gR3Vhbmdkb25nIDUyOTcyOAotCQkJCUNISU5BCi0KLTUwLTc5LTVCICAgKGhleCkJCUludGVyZXhwb3J0IFRlbGVjb211bmljYWNpb25lcyBTLkEuCi01MDc5NUIgICAgIChiYXNlIDE2KQkJSW50ZXJleHBvcnQgVGVsZWNvbXVuaWNhY2lvbmVzIFMuQS4KLQkJCQlDZXJybyBDb2xvcmFkbyA1MjQwIHBpc28gMTQKLQkJCQlTYW50aWFnbyBSZWdpb24gTWV0cm9wb2xpdGFuYSA4MzIwMDAwCi0JCQkJQ0hJTEUKLQotNTAtN0QtMDIgICAoaGV4KQkJQklPRElUCi01MDdEMDIgICAgIChiYXNlIDE2KQkJQklPRElUCi0JCQkJQ2FsbGUgR3VzdGF2ZSBFaWZmZWwgMwotCQkJCVBhcnF1ZSBUZWNub2xvZ2ljbwotCQkJCVBhdGVybmEgVmFsZW5jaWEgNDY5ODAKLQkJCQlTUEFJTgotCi01MC04Ny1COCAgIChoZXgpCQlOdXZ5eW8gSW5jCi01MDg3QjggICAgIChiYXNlIDE2KQkJTnV2eXlvIEluYwotCQkJCTEgU215dGhlIFJkCi0JCQkJU3VpdGUgMQotCQkJCUNhcmxldG9uIFBsYWNlIE9udGFyaW8gSzdDNEo0Ci0JCQkJQ0FOQURBCi0KLTUwLThBLUNCICAgKGhleCkJCVNIRU5aSEVOIE1BWE1BREUgVEVDSE5PTE9HWSBDTy4sIExURC4KLTUwOEFDQiAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBNQVhNQURFIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJQnVpbGRpbmcgMyxOby41IEZ1cWlhbyBJbmR1c3RyaWFsIEVzdGF0ZSwKLQkJCQlRaWFvdG91LEZ1eW9uZyxCYW9hbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi01MC05My00RiAgIChoZXgpCQlHcmFkdWFsIFRlY25vbG9naWEgTHRkYS4KLTUwOTM0RiAgICAgKGJhc2UgMTYpCQlHcmFkdWFsIFRlY25vbG9naWEgTHRkYS4KLQkJCQlSb2QuIEFsa2luZGFyIE0uIEp1bnF1ZWlyYSwgS20gMzQsMgotCQkJCUNhaXhhIFBvc3RhbCAxMDgKLQkJCQlCcmFnYW5pP29lYSBQYXVsaXN0YSBTaT9vZW8gUGF1bG8gMTI5MTQtOTcwCi0JCQkJQlJBWklMCi0KLTUwLTk3LTcyICAgKGhleCkJCVdlc3Rpbmdob3VzZSBEaWdpdGFsCi01MDk3NzIgICAgIChiYXNlIDE2KQkJV2VzdGluZ2hvdXNlIERpZ2l0YWwKLQkJCQk1MDAgTi4gU3RhdGUgQ29sbGVnZSBCbHZkLgotCQkJCVN1aXRlIDEzMDAKLQkJCQlPcmFuZ2UgQ0EgOTI4NjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTUwLUE2LUUzICAgKGhleCkJCURhdmlkIENsYXJrIENvbXBhbnkKLTUwQTZFMyAgICAgKGJhc2UgMTYpCQlEYXZpZCBDbGFyayBDb21wYW55Ci0JCQkJMzYwIEZyYW5rbGluIFN0LgotCQkJCVdvcmNlc3RlciBNQSAwMTYxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotNTAtQUYtNzMgICAoaGV4KQkJU2hlbnpoZW4gQml0bGFuZCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotNTBBRjczICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEJpdGxhbmQgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxLTRGLDQ0IEJ1aWxkaW5nLFRhbmdsYW5nIEluZHVzdHJpYWwgUGFyayBhbmQgMS02RiwjNyBCdWlsZGluZyxYaUxpIFRvbmdmdXl1IEluZHVzdHJpYWwgVG93bixOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NQotCQkJCUNISU5BCi0KLTUwLUM1LThEICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLTUwQzU4RCAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OSAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTUwLUM5LTcxICAgKGhleCkJCUdOIE5ldGNvbSBBL1MKLTUwQzk3MSAgICAgKGJhc2UgMTYpCQlHTiBOZXRjb20gQS9TCi0JCQkJTGF1dHJ1cGJqZXJnIDcKLQkJCQlQLk8uIEJveCA5OQotCQkJCUJhbGxlcnVwICBESy0yNzUwCi0JCQkJREVOTUFSSwotCi01MC1DRS03NSAgIChoZXgpCQlNZWFzeSBFbGVjdHJvbmljcyBMdGQKLTUwQ0U3NSAgICAgKGJhc2UgMTYpCQlNZWFzeSBFbGVjdHJvbmljcyBMdGQKLQkJCQkjMTUwNiwgQmxvY2sgQiwgSGFpIFNvbmcgQmxkZywgVGFpcmFuIDl0aCBSb2FkCi0JCQkJQ2hlIEdvbmcgTWlhbywgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3VhbmcgRG9uZyAgNTE4MDQwCi0JCQkJQ0hJTkEKLQotNTAtRDYtRDcgICAoaGV4KQkJVGFrYWhhdGEgUHJlY2lzaW9uCi01MEQ2RDcgICAgIChiYXNlIDE2KQkJVGFrYWhhdGEgUHJlY2lzaW9uCi0JCQkJNC0xNy0xIFN1bml5b3NoaQotCQkJCUtvZnUgU2hpIFlhbWFuYXNoaSA0MDAtMDg1MQotCQkJCUpBUEFOCi0KLTUwLUU1LTQ5ICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi01MEU1NDkgICAgIChiYXNlIDE2KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlOby4yMTUsTmFuLVBpbmcgUm9hZCwKLQkJCQlQaW4tSmVuIENpdHksICBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNTAtRUItMUEgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLTUwRUIxQSAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotCQkJCTE3NDUgVGVjaG5vbG9neSBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC1GMC0wMyAgIChoZXgpCQlPcGVuIFN0YWNrLCBJbmMuCi01MEYwMDMgICAgIChiYXNlIDE2KQkJT3BlbiBTdGFjaywgSW5jLgotCQkJCUFkdmFuY2VkIFJlc2VhcmNoIENlbnRlciAjNDExCi0JCQkJWWEtVGFwIDY4Ci0JCQkJQnVuLURhbmcsIFNlb25nLU5hbSBHeXVuZy1HaSA0NjMtODE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTUwLUZBLUFCICAgKGhleCkJCUwtdGVrIGQuby5vLgotNTBGQUFCICAgICAoYmFzZSAxNikJCUwtdGVrIGQuby5vLgotCQkJCU9icnRuYSBjZXN0YSAxOAotCQkJCVNlbnRqZXJuZWogIDgzMTAKLQkJCQlTTE9WRU5JQQotCi01NC0wMy1GNSAgIChoZXgpCQlFQk4gVGVjaG5vbG9neSBDb3JwLgotNTQwM0Y1ICAgICAoYmFzZSAxNikJCUVCTiBUZWNobm9sb2d5IENvcnAuCi0JCQkJMTBGLCBOby45MCwgU2VjLiAxLCBTaW50YWkgNXRoIFJkLgotCQkJCVNpamhpaCBDaXR5IFRhaXBlaSBDb3VudHkgMjIxMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTU0LTA0LTk2ICAgKGhleCkJCUdpZ2F3YXZlIExURAotNTQwNDk2ICAgICAoYmFzZSAxNikJCUdpZ2F3YXZlIExURAotCQkJCUdJR0FXQVZFIFRFQ0hOSUNBTCBDRU5UUkUKLQkJCQlFYXJscyBDb2xuZSBCdXNpbmVzcyBQYXJrCi0JCQkJQ29sY2hlc3RlciBFU1NFWCBDTzYyTlMKLQkJCQlVTklURUQgS0lOR0RPTQotCi01NC0wNS01RiAgIChoZXgpCQlBbGNhdGVsIEx1Y2VudAotNTQwNTVGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTHVjZW50Ci0JCQkJVmlhIFRyZW50bywgMzAKLQkJCQlWaW1lcmNhdGUgTUIgMjAwNTkKLQkJCQlJVEFMWQotCi01NC0zMS0zMSAgIChoZXgpCQlSYXN0ZXIgVmlzaW9uIEx0ZAotNTQzMTMxICAgICAoYmFzZSAxNikJCVJhc3RlciBWaXNpb24gTHRkCi0JCQkJVW5pdCAxLCBDcnVuZGFsbHMKLQkJCQlHZWRnZXMgSGlsbCwgTWF0ZmllbGQKLQkJCQlUb25icmlkZ2UgIEtlbnQgVE4xMiA3RUEKLQkJCQlVTklURUQgS0lOR0RPTQotCi01NC0zNS1ERiAgIChoZXgpCQlTeW1lbyBHbWJICi01NDM1REYgICAgIChiYXNlIDE2KQkJU3ltZW8gR21iSAotCQkJCVByb2YuLU1lc3NlcnNjaG1pdHQtU3RyLiAzCi0JCQkJTmV1YmliZXJnIEJhdmFyaWEgODU1NzkKLQkJCQlHRVJNQU5ZCi0KLTU0LTQyLTQ5ICAgKGhleCkJCVNvbnkgQ29ycG9yYXRpb24KLTU0NDI0OSAgICAgKGJhc2UgMTYpCQlTb255IENvcnBvcmF0aW9uCi0JCQkJR290ZW55YW1hIFRlYy4KLQkJCQk1LTEtMTIgS2l0YXNoaW5hZ2F3YSBTaGluYWdhd2Eta3UKLQkJCQlUb2t5byAgMTQxLTAwMDEKLQkJCQlKQVBBTgotCi01NC00QS0wNSAgIChoZXgpCQl3ZW5nbG9yIHNlbnNvcmljIGdtYmgKLTU0NEEwNSAgICAgKGJhc2UgMTYpCQl3ZW5nbG9yIHNlbnNvcmljIGdtYmgKLQkJCQl3ZW5nbG9yIFN0ci4gMwotCQkJCVRldHRuYW5nICA4ODA2OQotCQkJCUdFUk1BTlkKLQotNTQtNUYtQTkgICAoaGV4KQkJVGVyYWNvbSBMaW1pdGVkCi01NDVGQTkgICAgIChiYXNlIDE2KQkJVGVyYWNvbSBMaW1pdGVkCi0JCQkJQi04NCwgU2VjdG9yIC0gNjAsCi0JCQkJTm9pZGEgVXR0YXIgUHJhZGVzaCAyMDEgMzAxCi0JCQkJSU5ESUEKLQotNTQtNzUtRDAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNTQ3NUQwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTQtN0YtNTQgICAoaGV4KQkJSU5HRU5JQ08KLTU0N0Y1NCAgICAgKGJhc2UgMTYpCQlJTkdFTklDTwotCQkJCTEgcnVlIENsYXVkZSBDaGFwcGUsIEJQIDM0NgotCQkJCUd1aWxoZXJhbmQtR3JhbmdlcyBEUk9NRSAwNzUwMwotCQkJCUZSQU5DRQotCi01NC03Ri1FRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi01NDdGRUUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01NC04NC03QiAgIChoZXgpCQlEaWdpdGFsIERldmljZXMgR21iSAotNTQ4NDdCICAgICAoYmFzZSAxNikJCURpZ2l0YWwgRGV2aWNlcyBHbWJICi0JCQkJTW9ld2VzdHIgNDUgQQotCQkJCU11ZW5jaGVuICA4MTgyNwotCQkJCUdFUk1BTlkKLQotNTQtODktMjIgICAoaGV4KQkJWmVsZnkgSW5jCi01NDg5MjIgICAgIChiYXNlIDE2KQkJWmVsZnkgSW5jCi0JCQkJNDY1NSBPbGQgSXJvbnNpZGVzIERyLCBTdWl0ZSMyMDAKLQkJCQlTYW50YSBDbGFyYSBDYSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTQtODktOTggICAoaGV4KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi01NDg5OTggICAgIChiYXNlIDE2KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0JCQkJQjEtNyxIdWF3ZWkgSW5kdXN0cmlhbCBCYXNlLEJhbnRpYW4sTG9uZ2dhbmcKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotNTQtOTItQkUgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi01NDkyQkUgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTU0LTlBLTE2ICAgKGhleCkJCVV6dXNoaW8gRWxlY3RyaWMgQ28uLEx0ZC4KLTU0OUExNiAgICAgKGJhc2UgMTYpCQlVenVzaGlvIEVsZWN0cmljIENvLixMdGQuCi0JCQkJMTUyMCBLdW8KLQkJCQlPbmlzaGktY2hvCi0JCQkJSW1hYmFyaS1jaXR5IEVoaW1lIHByZWYuIDc5OTIyOTQKLQkJCQlKQVBBTgotCi01NC05Qi0xMiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi01NDlCMTIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi01NC1BNS0xQiAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi01NEE1MUIgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTU0LUI2LTIwICAgKGhleCkJCVNVSERPTCBFJkMgQ28uTHRkLgotNTRCNjIwICAgICAoYmFzZSAxNikJCVNVSERPTCBFJkMgQ28uTHRkLgotCQkJCTkyMCwgSWxzYW4gVGVjaG5vVG93biAxMTQxLTEsIEJhZWtzZW9rLWRvbmcsIElsc2FuZG9uZy1ndQotCQkJCUdveWFuZy1zaSBHeXVuZ2dpLWRvIDQxMC03MjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNTQtRDQtNkYgICAoaGV4KQkJQ2lzY28gU1BWVEcKLTU0RDQ2RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01NC1FNi1GQyAgIChoZXgpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLTU0RTZGQyAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLQkJCQkxLTZGLCBCdWlsZGluZyAyLCBQaW5nc2hhbmRheXVhbiBJbmR1c3RyaWFsLCBTb3V0aCBab25lLAotCQkJCVRhb3l1YW4gU3RyZWV0LCBOYW5zaGFuIERpc3RyaWN0LCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotNTQtRjUtQjYgICAoaGV4KQkJT1JJRU5UQUwgUEFDSUZJQyBJTlRFUk5BVElPTkFMIExJTUlURUQKLTU0RjVCNiAgICAgKGJhc2UgMTYpCQlPUklFTlRBTCBQQUNJRklDIElOVEVSTkFUSU9OQUwgTElNSVRFRAotCQkJCTUgQVJHVVMgUExBQ0UKLQkJCQlISUxMQ1JFU1QKLQkJCQlOT1JUSCBTSE9SRSBDSVRZIEFVQ0tMQU5EIDA2MjcKLQkJCQlORVcgWkVBTEFORAotCi01NC1GRC1CRiAgIChoZXgpCQlTY2hlaWR0ICYgQmFjaG1hbm4gR21iSAotNTRGREJGICAgICAoYmFzZSAxNikJCVNjaGVpZHQgJiBCYWNobWFubiBHbWJICi0JCQkJQnJlaXRlIFN0cmFzc2UgMTMyCi0JCQkJTW9lbmNoZW5nbGFkYmFjaCBOUlcgNDEyMzgKLQkJCQlHRVJNQU5ZCi0KLTU4LTA1LTU2ICAgKGhleCkJCUVsZXR0cm9uaWNhIEdGIFMuci5MLgotNTgwNTU2ICAgICAoYmFzZSAxNikJCUVsZXR0cm9uaWNhIEdGIFMuci5MLgotCQkJCVZpYSBWaXR0b3JpLCA2MwotCQkJCUZBRU5aQSBSQSA0ODAxOAotCQkJCUlUQUxZCi0KLTU4LTE2LTI2ICAgKGhleCkJCUF2YXlhLCBJbmMKLTU4MTYyNiAgICAgKGJhc2UgMTYpCQlBdmF5YSwgSW5jCi0JCQkJMjExIE1vdW50IEFpcnkgUm9hZAotCQkJCUJhc2tpbmcgUmlkZ2UgTkogMDc5MjAtMjMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtMTctMEMgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTU4MTcwQyAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OAotCQkJCVNXRURFTgotCi01OC0xRi1BQSAgIChoZXgpCQlBcHBsZSwgSW5jLgotNTgxRkFBICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC0yRi00MiAgIChoZXgpCQlVbml2ZXJzYWwgRWxlY3RyaWMgQ29ycG9yYXRpb24KLTU4MkY0MiAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgRWxlY3RyaWMgQ29ycG9yYXRpb24KLQkJCQkxNjggR2VvcmdldG93biBSb2FkCi0JCQkJQ2Fub25zYnVyZyBQQSAxNTMxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtMzUtRDkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNTgzNUQ5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LTNDLUM2ICAgKGhleCkJCU9tbmVhbGl0eSBMdGQuCi01ODNDQzYgICAgIChiYXNlIDE2KQkJT21uZWFsaXR5IEx0ZC4KLQkJCQk3IEdyb3ZlIEhvdXNlLCBGaXJzZ3JvdmUgQ3Jlc2NlbnQKLQkJCQlXYXJsZXkKLQkJCQlCcmVudHdvb2QgRXNzZXggQ00xNCA1SlMKLQkJCQlVTklURUQgS0lOR0RPTQotCi01OC00Mi1FNCAgIChoZXgpCQlTaWdtYSBJbnRlcm5hdGlvbmFsIEdlbmVyYWwgTWVkaWNhbCBBcHBhcmF0dXMsIExMQy4KLTU4NDJFNCAgICAgKGJhc2UgMTYpCQlTaWdtYSBJbnRlcm5hdGlvbmFsIEdlbmVyYWwgTWVkaWNhbCBBcHBhcmF0dXMsIExMQy4KLQkJCQk3MTEgUGFyayBBdmVudWUKLQkJCQlNZWRpbmEgTlkgMTQxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LTQ5LUJBICAgKGhleCkJCUNoaXRhaSBFbGVjdHJvbmljIENvcnAuCi01ODQ5QkEgICAgIChiYXNlIDE2KQkJQ2hpdGFpIEVsZWN0cm9uaWMgQ29ycC4KLQkJCQk1Ri4sIE5vLiAxIExhbmUgMTIzLCBQYW8tQ2h1bmcgUmQuLCBIc2luLVRpZW4gQ2l0eSAKLQkJCQlUYWllcGkgIDIzMTQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi01OC00Qy0xOSAgIChoZXgpCQlDaG9uZ3FpbmcgR3VvaG9uZyBUZWNobm9sb2d5IERldmVsb3BtZW50IENvbXBhbnkgTGltaXRlZAotNTg0QzE5ICAgICAoYmFzZSAxNikJCUNob25ncWluZyBHdW9ob25nIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ29tcGFueSBMaW1pdGVkCi0JCQkJUm9uZ3poaSBCdWlsZGluZywgU2NpZW5jZSAmIFRlY2hub2xvZ3kgVmVudHVyZSBDZW50ZXIsCi0JCQkJTm8uOCBZdW1hIFJvYWQsIE5hbidhbiBEaXN0cmljdCwgCi0JCQkJQ2hvbmdxaW5nICA0MDEzMzYKLQkJCQlDSElOQQotCi01OC00Qy1FRSAgIChoZXgpCQlEaWdpdGFsIE9uZSBUZWNobm9sb2dpZXMsIExpbWl0ZWQKLTU4NENFRSAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIE9uZSBUZWNobm9sb2dpZXMsIExpbWl0ZWQKLQkJCQlOby4xIFNoYW5nZGkgWGlueGkgUm9hZAotCQkJCUhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi01OC01MC03NiAgIChoZXgpCQlMaW5lYXIgRXF1aXBhbWVudG9zIEVsZXRyb25pY29zIFNBCi01ODUwNzYgICAgIChiYXNlIDE2KQkJTGluZWFyIEVxdWlwYW1lbnRvcyBFbGV0cm9uaWNvcyBTQQotCQkJCVByYWNhIExpbmVhciAxMDAKLQkJCQlTYW50YSBSaXRhIGRvIFNhcHVjYWkgTUcgMzc1NDAwMDAKLQkJCQlCUkFaSUwKLQotNTgtNTAtRTYgICAoaGV4KQkJQmVzdCBCdXkgQ29ycG9yYXRpb24KLTU4NTBFNiAgICAgKGJhc2UgMTYpCQlCZXN0IEJ1eSBDb3Jwb3JhdGlvbgotCQkJCTc2MDEgUGVubiBBdmUgU291dGgKLQkJCQlDNwotCQkJCVJpY2hmaWVsZCBNTiA1NTQyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtNTUtQ0EgICAoaGV4KQkJQXBwbGUKLTU4NTVDQSAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtNTctMEQgICAoaGV4KQkJRGFuZm9zcyBTb2xhciBJbnZlcnRlcnMKLTU4NTcwRCAgICAgKGJhc2UgMTYpCQlEYW5mb3NzIFNvbGFyIEludmVydGVycwotCQkJCUp5bGxhbmRzZ2FkZSAyOAotCQkJCVNpP29lbmRlcmJvcmcgIERLLTY0MDAKLQkJCQlERU5NQVJLCi0KLTU4LTY3LTFBICAgKGhleCkJCUJBUk5FUyZOT0JMRS5DT00KLTU4NjcxQSAgICAgKGJhc2UgMTYpCQlCQVJORVMmTk9CTEUuQ09NCi0JCQkJNDAwIEhBTUlMVE9OIEFWRU5VRQotCQkJCVNVSVRFIDEzMAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtNkQtOEYgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi01ODZEOEYgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC02RS1ENiAgIChoZXgpCQlQUklWQVRFCi01ODZFRDYgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTU4LTc1LTIxICAgKGhleCkJCUNKU0MgUlRTb2Z0Ci01ODc1MjEgICAgIChiYXNlIDE2KQkJQ0pTQyBSVFNvZnQKLQkJCQlOaWtpdGluc2theWEgc3RyLiwgMwotCQkJCU1vc2NvdyAgMTA1MDM3Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTU4LTc2LTc1ICAgKGhleCkJCUJlaWppbmcgRUNITyBUZWNobm9sb2dpZXMgQ28uLEx0ZAotNTg3Njc1ICAgICAoYmFzZSAxNikJCUJlaWppbmcgRUNITyBUZWNobm9sb2dpZXMgQ28uLEx0ZAotCQkJCU5PMSBTdHJlZXQgNCBTaGFuZ2RpICAKLQkJCQlIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaUppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTU4LThELTA5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTU4OEQwOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LTk0LTZCICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotNTg5NDZCICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotNTgtOTgtMzUgICAoaGV4KQkJVGVjaG5pY29sb3IKLTU4OTgzNSAgICAgKGJhc2UgMTYpCQlUZWNobmljb2xvcgotCQkJCVByaW5zIEJvdWRld2lqbmxhYW4gNDcKLQkJCQlFZGVnZW0gICBCLTI2NTAKLQkJCQlCRUxHSVVNCi0KLTU4LUE3LTZGICAgKGhleCkJCWlEIGNvcnBvcmF0aW9uCi01OEE3NkYgICAgIChiYXNlIDE2KQkJaUQgY29ycG9yYXRpb24KLQkJCQlnb3J5b2tha3UgYmxkLiAyRgotCQkJCTYtMTAgCi0JCQkJaGFrb2RhdGUgaG9ra2FpZG8gMDQwLTAwMTEKLQkJCQlKQVBBTgotCi01OC1CMC0zNSAgIChoZXgpCQlBcHBsZSwgSW5jCi01OEIwMzUgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtQjktRTEgICAoaGV4KQkJQ3J5c3RhbGZvbnR6IEFtZXJpY2EsIEluYy4KLTU4QjlFMSAgICAgKGJhc2UgMTYpCQlDcnlzdGFsZm9udHogQW1lcmljYSwgSW5jLgotCQkJCTEyNDEyIEUuIFNhbHRlc2UgQXZlLgotCQkJCVNwb2thbmUgVmFsbGV5IFdBIDk5MjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC1CQy0yNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi01OEJDMjcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC1EMC04RiAgIChoZXgpCQlJRUVFIDE5MDQuMSBXb3JraW5nIEdyb3VwCi01OEQwOEYgICAgIChiYXNlIDE2KQkJSUVFRSAxOTA0LjEgV29ya2luZyBHcm91cAotCQkJCTEzNTEgUmVkd29vZCBXYXksIAotCQkJCVBldGFsdW1hIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC1EQi04RCAgIChoZXgpCQlGYXN0IENvLiwgTHRkLgotNThEQjhEICAgICAoYmFzZSAxNikJCUZhc3QgQ28uLCBMdGQuCi0JCQkJMi0xMS0xIEl3YW1vdG9jaG8KLQkJCQk3dGggRmwuLCBIZXJiIEthbmRhIEJsZGcuLAotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTAwMzIKLQkJCQlKQVBBTgotCi01OC1FNC03NiAgIChoZXgpCQlDRU5UUk9OIENPTU1VTklDQVRJT05TIFRFQ0hOT0xPR0lFUyBGVUpJQU4gQ08uLExURAotNThFNDc2ICAgICAoYmFzZSAxNikJCUNFTlRST04gQ09NTVVOSUNBVElPTlMgVEVDSE5PTE9HSUVTIEZVSklBTiBDTy4sTFRECi0JCQkJNHRoIEZsb29yLEppYW9kYWppZXB1IEJ1aWxkaW5nLDcyIyBLZWppZXJsdSBSb2FkLCAKLQkJCQlYaSdhbiBTaGFhbnhpIFByb3ZpbmNlIDcxMDEwMAotCQkJCUNISU5BCi0KLTU4LUU2LTM2ICAgKGhleCkJCUVWUnNhZmUgVGVjaG5vbG9naWVzCi01OEU2MzYgICAgIChiYXNlIDE2KQkJRVZSc2FmZSBUZWNobm9sb2dpZXMKLQkJCQk1OSBOb3J0aCBUZXJyYWNlIAotCQkJCUhhY2tuZXkKLQkJCQlBZGVsYWlkZSBTb3V0aCBBdXN0cmFsaWEgNTA2OQotCQkJCUFVU1RSQUxJQQotCi01OC1FNy00NyAgIChoZXgpCQlEZWx0YW5ldCBBRwotNThFNzQ3ICAgICAoYmFzZSAxNikJCURlbHRhbmV0IEFHCi0JCQkJUmllZHN0cmFzc2UgOAotCQkJCURpZXRpa29uIFp1cmljaCA4OTUzCi0JCQkJU1dJVFpFUkxBTkQKLQotNTgtRTgtMDggICAoaGV4KQkJQVVUT05JQ1MgQ09SUE9SQVRJT04KLTU4RTgwOCAgICAgKGJhc2UgMTYpCQlBVVRPTklDUyBDT1JQT1JBVElPTgotCQkJCTQxLTUgWU9OR0RBTkctRE9ORwotCQkJCVlBTkdTQU4tU0kgS1lFT05HTkFNIDYyNi04NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNTgtRUUtQ0UgICAoaGV4KQkJSWNvbiBUaW1lIFN5c3RlbXMKLTU4RUVDRSAgICAgKGJhc2UgMTYpCQlJY29uIFRpbWUgU3lzdGVtcwotCQkJCTE1MjAxIE5XIEdyZWVuYnJpZXIgUGFya3dheQotCQkJCVN1aXRlIEExCi0JCQkJQmVhdmVydG9uIE9SIDk3MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC1GNi03QiAgIChoZXgpCQlYaWEgTWVuIFVuaW9uQ29yZSBUZWNobm9sb2d5IExURC4KLTU4RjY3QiAgICAgKGJhc2UgMTYpCQlYaWEgTWVuIFVuaW9uQ29yZSBUZWNobm9sb2d5IExURC4KLQkJCQkoMjI0KTJGIENodWFuZ3llIEJ1aWxkaW5nLFhpYW1lbiBQaW9uZWVyaW5nIFBhcmsgZm9yIE92ZXJzZWFzIENoaW5lc2UgU2Nob2xhcnMKLQkJCQlYaWEgTWVuIEZ1IEppYW4gMzYxMDA5Ci0JCQkJQ0hJTkEKLQotNTgtRjYtQkYgICAoaGV4KQkJS3lvdG8gVW5pdmVyc2l0eQotNThGNkJGICAgICAoYmFzZSAxNikJCUt5b3RvIFVuaXZlcnNpdHkKLQkJCQlZb3NoaWRhLUhvbW1hY2hpCi0JCQkJU2FreW8ta3UKLQkJCQlLeW90byAgNjA2ODUwMQotCQkJCUpBUEFOCi0KLTU4LUY5LThFICAgKGhleCkJCVNFQ1VET1MgR21iSAotNThGOThFICAgICAoYmFzZSAxNikJCVNFQ1VET1MgR21iSAotCQkJCVJoZW51cy1QbGF0eiAyCi0JCQkJSG9sendpY2tlZGUgTlJXIDU5NDM5Ci0JCQkJR0VSTUFOWQotCi01OC1GRC0yMCAgIChoZXgpCQlCcmF2aWRhIFNha2VyaGV0IEFCCi01OEZEMjAgICAgIChiYXNlIDE2KQkJQnJhdmlkYSBTYWtlcmhldCBBQgotCQkJCU1pa3JvZm9udmFnZW4gMjgKLQkJCQlTVE9DS0hPTE0gIDEyNiA4MQotCQkJCVNXRURFTgotCi01Qy0wNy02RiAgIChoZXgpCQlUaG91Z2h0IENyZWF0b3IKLTVDMDc2RiAgICAgKGJhc2UgMTYpCQlUaG91Z2h0IENyZWF0b3IKLQkJCQlMYXJnbyBkYSBQaXJpP29lbWlkZSwgTmk/b2UgMywgU2FsYSBECi0JCQkJT2VpcmFzIExpc2JvYSAyNzk1LTE1NiBMaW5kYS1hLVZlbGhhCi0JCQkJUE9SVFVHQUwKLQotNUMtMEMtQkIgICAoaGV4KQkJQ0VMSVpJT04gSW5jLgotNUMwQ0JCICAgICAoYmFzZSAxNikJCUNFTElaSU9OIEluYy4KLQkJCQkjMjA2IExvcmRsYW5kIEVaIFRvd2VyLCBHdU1pLURvbmcgMTUzIEJ1bkRhbmctR3UKLQkJCQlTZW9uZ05hbS1TaSAgR3llb25nR2ktRG8gNDYzLTg3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi01Qy0wRS04QiAgIChoZXgpCQlNb3Rvcm9sYQotNUMwRThCICAgICAoYmFzZSAxNikJCU1vdG9yb2xhCi0JCQkJT25lIE1vdG9yb2xhIFBsYXphCi0JCQkJSG9sdHN2aWxsZSBOWSAxMTc0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtMTQtMzcgICAoaGV4KQkJVGh5c3NlbmtydXBwIEF1Znp1Z3N3ZXJrZSBHbWJICi01QzE0MzcgICAgIChiYXNlIDE2KQkJVGh5c3NlbmtydXBwIEF1Znp1Z3N3ZXJrZSBHbWJICi0JCQkJQmVybmhhZXVzZXIgU3RyLjQ1Ci0JCQkJTmV1aGF1c2VuIGEuZC5GICA3Mzc2NQotCQkJCUdFUk1BTlkKLQotNUMtMTYtQzcgICAoaGV4KQkJQmlnIFN3aXRjaCBOZXR3b3JrcwotNUMxNkM3ICAgICAoYmFzZSAxNikJCUJpZyBTd2l0Y2ggTmV0d29ya3MKLQkJCQk4NTUgRUwgQ0FNSU5PIFJFQUwKLQkJCQlTVEUgMjYwIEJMREcgNAotCQkJCVBhbG8gQWx0byBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtMTctRDMgICAoaGV4KQkJTEdFIAotNUMxN0QzICAgICAoYmFzZSAxNikJCUxHRSAKLQkJCQk2MC0zOSAsIEthc2FuIC1kb25nICwgR3VtY2hlb24tZ3UuCi0JCQkJU2VvdWwgICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTVDLTI2LTBBICAgKGhleCkJCURlbGwgSW5jLgotNUMyNjBBICAgICAoYmFzZSAxNikJCURlbGwgSW5jLgotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtMzMtOEUgICAoaGV4KQkJQWxwaGEgTmV0d29ya2MgSW5jLgotNUMzMzhFICAgICAoYmFzZSAxNikJCUFscGhhIE5ldHdvcmtjIEluYy4KLQkJCQlOby44IExpLXNoaW5nIFNldmVudGggUm9hZCxTY2llbmNlLWJhc2VkCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi01Qy0zNS0zQiAgIChoZXgpCQlDb21wYWwgQnJvYWRiYW5kIE5ldHdvcmtzIEluYy4KLTVDMzUzQiAgICAgKGJhc2UgMTYpCQlDb21wYWwgQnJvYWRiYW5kIE5ldHdvcmtzIEluYy4KLQkJCQkyRi4tMiwgTm8uMzIgVGFpeXVhbiBTdC4KLQkJCQlaaHViZWkgQ2l0eSBIc2luY2h1IENvdW50eSAzMDI2NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNUMtMzUtREEgICAoaGV4KQkJVGhlcmUgQ29ycG9yYXRpb24gT3kKLTVDMzVEQSAgICAgKGJhc2UgMTYpCQlUaGVyZSBDb3Jwb3JhdGlvbiBPeQotCQkJCUVsaW1pP29lZW5rYXR1IDUKLQkJCQlIZWxzaW5raSAgMDA1MTAKLQkJCQlGSU5MQU5ECi0KLTVDLTQwLTU4ICAgKGhleCkJCUplZmZlcnNvbiBBdWRpbyBWaWRlbyBTeXN0ZW1zLCBJbmMuCi01QzQwNTggICAgIChiYXNlIDE2KQkJSmVmZmVyc29uIEF1ZGlvIFZpZGVvIFN5c3RlbXMsIEluYy4KLQkJCQkxMzAyMCBNaWRkbGV0b3duIEluZHVzdHJpYWwgQmx2ZC4KLQkJCQlMb3Vpc3ZpbGxlIEtlbnR1Y2t5IDQwMjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy00Qy1BOSAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi01QzRDQTkgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxMDEwOAotCQkJCUNISU5BCi0KLTVDLTU2LUVEICAgKGhleCkJCTNwbGVwbGF5IEVsZWN0cm9uaWNzIFByaXZhdGUgTGltaXRlZAotNUM1NkVEICAgICAoYmFzZSAxNikJCTNwbGVwbGF5IEVsZWN0cm9uaWNzIFByaXZhdGUgTGltaXRlZAotCQkJCTExMDYsIDExdGggRmxvb3IKLQkJCQlCYWJ1IEtoYW4gRXN0YXRlLCBCYXNoZWVyYmFnaAotCQkJCUh5ZGVyYWJhZCBBbmRocmEgUHJhZGVzaCA1MDAwMDEKLQkJCQlJTkRJQQotCi01Qy01Ny1DOCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotNUM1N0M4ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTcwCi0JCQkJRklOTEFORAotCi01Qy01OS00OCAgIChoZXgpCQlBcHBsZQotNUM1OTQ4ICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy01RS1BQiAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi01QzVFQUIgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkgCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy02OS04NCAgIChoZXgpCQlOVVZJQ08KLTVDNjk4NCAgICAgKGJhc2UgMTYpCQlOVVZJQ08KLQkJCQk3Mi0zIFNpbmRhZSwgU2lsY2hvbgotCQkJCUd3YW5qdSBHeWVvbmdnaSA0NjQtODczCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTVDLTZBLTdEICAgKGhleCkJCUtFTlRLQVJUIEVHRSBFTEVLVFJPTklLIFNBTi4gVkUgVElDLiBMVEQuIFNUSS4gCi01QzZBN0QgICAgIChiYXNlIDE2KQkJS0VOVEtBUlQgRUdFIEVMRUtUUk9OSUsgU0FOLiBWRSBUSUMuIExURC4gU1RJLiAKLQkJCQkxMzcwIFNLLCBOTzo0Mi8zMDQsIAotCQkJCU1PTlRSTyBJWk1JUiAzNTIzMAotCQkJCVRVUktFWQotCi01Qy02RC0yMCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi01QzZEMjAgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCSBOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLTVDLTc3LTU3ICAgKGhleCkJCUhhaXZpc2lvbiBOZXR3b3JrIFZpZGVvCi01Qzc3NTcgICAgIChiYXNlIDE2KQkJSGFpdmlzaW9uIE5ldHdvcmsgVmlkZW8KLQkJCQk0NDQ1IEdhcmFuZAotCQkJCU1vbnRyZWFsIFFDIEg0UiAySDkKLQkJCQlDQU5BREEKLQotNUMtODYtNEEgICAoaGV4KQkJU2VjcmV0IExhYnMgTExDCi01Qzg2NEEgICAgIChiYXNlIDE2KQkJU2VjcmV0IExhYnMgTExDCi0JCQkJMzE1IEJsZWVja2VyIFN0ICMzMDgKLQkJCQlOZXcgWW9yayBOWSAxMDAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtODctNzggICAoaGV4KQkJQ3liZXJ0ZWxicmlkZ2UgY28uLGx0ZAotNUM4Nzc4ICAgICAoYmFzZSAxNikJCUN5YmVydGVsYnJpZGdlIGNvLixsdGQKLQkJCQkjOTAxIEFjZWhpZ2hlbmQgdG93ZXIgMgotCQkJCTIyMi0xNCBHdXJvLWd1IEd1cm8tZG9uZwotCQkJCVNlb3VsICAxNTItMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTVDLTlBLUQ4ICAgKGhleCkJCUZ1aml0c3UgTGltaXRlZAotNUM5QUQ4ICAgICAoYmFzZSAxNikJCUZ1aml0c3UgTGltaXRlZAotCQkJCU11c2FzaGkta29zdWdpIFRvd2VyIFBsYWNlIEJsZGcuLAotCQkJCTQwMywgS29zdWdpLWNobyAxLWNob21lLE5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjExLTAwNjMKLQkJCQlKQVBBTgotCi01Qy1BQy00QyAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi01Q0FDNEMgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotNUMtQkQtOUUgICAoaGV4KQkJSE9OR0tPTkcgTUlSQUNMRSBFQUdMRSBURUNITk9MT0dZKEdST1VQKSBMSU1JVEVECi01Q0JEOUUgICAgIChiYXNlIDE2KQkJSE9OR0tPTkcgTUlSQUNMRSBFQUdMRSBURUNITk9MT0dZKEdST1VQKSBMSU1JVEVECi0JCQkJRkxBVCBSTSAyMTAzLCAgRUFTRVkgQ09NTUVSQ0lBTCBCTERHLDI1My0yNjEgSEVOTkVTU1kgUkQsICAKLQkJCQlXQU5DSEFJIDk5OTA3NwotCQkJCUhPTkcgS09ORwotCi01Qy1DQS0zMiAgIChoZXgpCQlUaGViZW4gQUcKLTVDQ0EzMiAgICAgKGJhc2UgMTYpCQlUaGViZW4gQUcKLQkJCQlIb2hlbmJlcmdzdHJhaT9vZWUgMzIKLQkJCQlIYWlnZXJsb2NoIEJhZGVuLVdpP29lcnR0ZW1iZXJnIDcyNDAxCi0JCQkJR0VSTUFOWQotCi01Qy1EMS0zNSAgIChoZXgpCQlYdHJlbWUgUG93ZXIgU3lzdGVtcwotNUNEMTM1ICAgICAoYmFzZSAxNikJCVh0cmVtZSBQb3dlciBTeXN0ZW1zCi0JCQkJMjQ0MCBLaW93YSBCbHZkLiBOLiAjMTAyCi0JCQkJTGFrZSBIYXZhc3UgQ2l0eSBBWiA4NjQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtRDktOTggICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi01Q0Q5OTggICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTm8uMjg5LCBTaW5odSAzcmQgUmQuLCBOZWlodSBEaXN0cmljdCwgCi0JCQkJVGFpcGVpIENpdHkgICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTVDLURBLUQ0ICAgKGhleCkJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotNUNEQUQ0ICAgICAoYmFzZSAxNikJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTEwLTEsIEhpZ2FzaGlrb3RhcmkgMS1jaG9tZQotCQkJCU5hZ2Fva2FreW8tc2hpIEt5b3RvIDYxNy04NTU1Ci0JCQkJSkFQQU4KLQotNUMtRTItMjMgICAoaGV4KQkJRGVscGhpbiBUZWNobm9sb2d5IEFHCi01Q0UyMjMgICAgIChiYXNlIDE2KQkJRGVscGhpbiBUZWNobm9sb2d5IEFHCi0JCQkJTHVzdGhlaWRlIDgxCi0JCQkJQmVyZ2lzY2gtR2xhZGJhY2ggIDUxNDI3Ci0JCQkJR0VSTUFOWQotCi01Qy1FMi04NiAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTVDRTI4NiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlDQVJSRVRFUkEgQkFTRSBBRVJFQSAjIDU4NTAKLQkJCQlaYXBvcGFuIEphbGlzY28gNDQxMzAKLQkJCQlNRVhJQ08KLQotNUMtRjItMDcgICAoaGV4KQkJU3BlY28gVGVjaG5vbG9naWVzCi01Q0YyMDcgICAgIChiYXNlIDE2KQkJU3BlY28gVGVjaG5vbG9naWVzCi0JCQkJMjAwIE5ldyBIaWdod2F5Ci0JCQkJQW1pdHl2aWxsZSBOZXcgWW9yayAxMTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtRjMtRkMgICAoaGV4KQkJSUJNIENvcnAKLTVDRjNGQyAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTVDLUZGLTM1ICAgKGhleCkJCVdpc3Ryb24gQ29ycG9yYXRpb24KLTVDRkYzNSAgICAgKGJhc2UgMTYpCQlXaXN0cm9uIENvcnBvcmF0aW9uCi0JCQkJMjFGLCA4OCwgU2VjLjEsIEhzaW4gVGFpIFd1IFJkLiwgSHNpY2hpaCwKLQkJCQlUYWlwZWkgSHNpZW4gIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjAtMTEtOTkgICAoaGV4KQkJRGF0YS1UZXN0ZXIgSW5jLgotNjAxMTk5ICAgICAoYmFzZSAxNikJCURhdGEtVGVzdGVyIEluYy4KLQkJCQk0NTAgU3QtUGllcnJlLCBzdWl0ZSAzMDAKLQkJCQlNb250cmVhbCBRdWViZWMgSDJZIDJNOQotCQkJCUNBTkFEQQotCi02MC0xMi04MyAgIChoZXgpCQlTb2x1Y2lvbmVzIFRlY25vbG9naWNhcyBwYXJhIGxhIFNhbHVkIHkgZWwgQmllbmVzdGFyIFNBCi02MDEyODMgICAgIChiYXNlIDE2KQkJU29sdWNpb25lcyBUZWNub2xvZ2ljYXMgcGFyYSBsYSBTYWx1ZCB5IGVsIEJpZW5lc3RhciBTQQotCQkJCVJkLiBBdWd1c3RlIHkgTG91aXMgTHVtaWVyZSwgMjMgbmF2ZSAxMwotCQkJCVBhcnF1ZSBUZWNub2xvZ2ljbyBkZSBWYWxlbmNpYQotCQkJCVBhdGVybmEgVmFsZW5jaWEtIENJRiBFUyBBIDk4MDA1OTc4IDQ2OTgwCi0JCQkJU1BBSU4KLQotNjAtMTUtQzcgICAoaGV4KQkJSWRhVGVjaAotNjAxNUM3ICAgICAoYmFzZSAxNikJCUlkYVRlY2gKLQkJCQk2MzA2NSBORSAxOHRoIFN0LgotCQkJCUJlbmQgT1IgOTc3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTE5LTBDICAgKGhleCkJCVJSQU1BQwotNjAxOTBDICAgICAoYmFzZSAxNikJCVJSQU1BQwotCQkJCTE1NDAwIE1lZGluYSBSZAotCQkJCVBseW1vdXRoIE1OIDU1NDQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC0xRC0wRiAgIChoZXgpCQlNaWRuaXRlIFNvbGFyCi02MDFEMEYgICAgIChiYXNlIDE2KQkJTWlkbml0ZSBTb2xhcgotCQkJCTE3NzIyIDY3dGggQXZlIE5FICNDCi0JCQkJQXJsaW5ndG9uIFdBIDk4MjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC0yQS01NCAgIChoZXgpCQlDYXJkaW9UZWsgQi5WLgotNjAyQTU0ICAgICAoYmFzZSAxNikJCUNhcmRpb1RlayBCLlYuCi0JCQkJQW1lcmlrYWxhYW4gNzAKLQkJCQlNYWFzdHJpY2h0IEFpcnBvcnQgTGltYnVyZyA2MTk5QUUKLQkJCQlORVRIRVJMQU5EUwotCi02MC0yQS1EMCAgIChoZXgpCQlDaXNjbyBTUFZURwotNjAyQUQwICAgICAoYmFzZSAxNikJCUNpc2NvIFNQVlRHCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTMzLTRCICAgKGhleCkJCUFwcGxlCi02MDMzNEIgICAgIChiYXNlIDE2KQkJQXBwbGUKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTM4LTBFICAgKGhleCkJCUFscHMgRWxlY3RyaWMgQ28uLAotNjAzODBFICAgICAoYmFzZSAxNikJCUFscHMgRWxlY3RyaWMgQ28uLAotCQkJCTEtMi0xLCBPa2lub3VjaGkKLQkJCQlTb21hLWNpdHkgRnVrdXNoaW1hIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotNjAtMzktMUYgICAoaGV4KQkJQUJCIEx0ZAotNjAzOTFGICAgICAoYmFzZSAxNikJCUFCQiBMdGQKLQkJCQlEaXN0cmlidXRpb24gQXV0b21hdGlvbgotCQkJCU1hbmVqYQotCQkJCVZhZG9kYXJhIEd1amFyYXQgMzkwMDEzCi0JCQkJSU5ESUEKLQotNjAtNTItRDAgICAoaGV4KQkJRkFDVFMgRW5naW5lZXJpbmcgCi02MDUyRDAgICAgIChiYXNlIDE2KQkJRkFDVFMgRW5naW5lZXJpbmcgCi0JCQkJODA0OSBQaG90b25pY3MgRHJpdmUKLQkJCQlOZXcgUG9ydCBSaWNoZXkgRkwgMzQ2NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTU0LTY0ICAgKGhleCkJCUV5ZWRybyBHcmVlbiBTb2x1dGlvbnMgSW5jLgotNjA1NDY0ICAgICAoYmFzZSAxNikJCUV5ZWRybyBHcmVlbiBTb2x1dGlvbnMgSW5jLgotCQkJCTEgWW9uZ2UgU3QKLQkJCQlTdWl0ZSAxODAxCi0JCQkJVG9yb250byBPbnRhcmlvIE01RSAxVzcKLQkJCQlDQU5BREEKLQotNjAtNjMtRkQgICAoaGV4KQkJVHJhbnNjZW5kIENvbW11bmljYXRpb24gQmVpamluZyBDby4sTHRkLgotNjA2M0ZEICAgICAoYmFzZSAxNikJCVRyYW5zY2VuZCBDb21tdW5pY2F0aW9uIEJlaWppbmcgQ28uLEx0ZC4KLQkJCQlBLTYsS2VzaGkgcGxhemEsMjgjLEluZm9ybWF0aW9uIFJvYWQKLQkJCQlIYWlkaWFuIERpc3QsCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotNjAtNzYtODggICAoaGV4KQkJVmVsb2R5bmUKLTYwNzY4OCAgICAgKGJhc2UgMTYpCQlWZWxvZHluZQotCQkJCTM0NSBEaWdpdGFsIERyaXZlCi0JCQkJTW9yZ2FuIEhpbGwgQ0EgOTUwMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTgzLUIyICAgKGhleCkJCUdrV2FyZSBlLksuCi02MDgzQjIgICAgIChiYXNlIDE2KQkJR2tXYXJlIGUuSy4KLQkJCQlIdW1ib2xkdHN0cmFzc2UgMTc3Ci0JCQkJRXNzZW4gTlJXIDQ1MTQ5Ci0JCQkJR0VSTUFOWQotCi02MC04OS0zQyAgIChoZXgpCQlUaGVybW8gRmlzaGVyIFNjaWVudGlmaWMgUC5PLkEuCi02MDg5M0MgICAgIChiYXNlIDE2KQkJVGhlcm1vIEZpc2hlciBTY2llbnRpZmljIFAuTy5BLgotCQkJCTQ2IEpvbnNwaW4gUmQuCi0JCQkJV2lsbWluZ3RvbiBNQSAwMTg4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtODktQjcgICAoaGV4KQkJS0FFTCBNaT9vZUhFTkRJU0xJSyBFTEVLVFJPTklLIFRJQ0FSRVQgU0FOQVlJIExpbWl0ZWQgaT9vZWlya2V0aQotNjA4OUI3ICAgICAoYmFzZSAxNikJCUtBRUwgTWk/b2VIRU5ESVNMSUsgRUxFS1RST05JSyBUSUNBUkVUIFNBTkFZSSBMaW1pdGVkIGk/b2VpcmtldGkKLQkJCQlBdGF0aT9vZXJrIE1haC4gNzggc29rYWsgLE5vOjEwLCBCaT9vZXlpP29la2FsYW4gTWV2a2lpLAotCQkJCVVsdWNhayAvIEtlbWFscGFzYQotCQkJCUl6bWlyIEFlZ2VhbiAzNTE3NQotCQkJCVRVUktFWQotCi02MC04RC0xNyAgIChoZXgpCQlTZW50cnVzIEdvdmVybm1lbnQgU3lzdGVtcyBEaXZpc2lvbiwgSW5jCi02MDhEMTcgICAgIChiYXNlIDE2KQkJU2VudHJ1cyBHb3Zlcm5tZW50IFN5c3RlbXMgRGl2aXNpb24sIEluYwotCQkJCTE0MSBDaGVzdGVyZmllbGQgSW5kdXN0cmlhbCBCbHZkCi0JCQkJQ2hlc3RlcmZpZWxkIE1PIDYzMDA1LTEyMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTlBLUE0ICAgKGhleCkJCUdWSSBTRUNVUklUWSBJTkMuCi02MDlBQTQgICAgIChiYXNlIDE2KQkJR1ZJIFNFQ1VSSVRZIElOQy4KLQkJCQkyODAxIFRSQURFIENFTlRFUiBEUiBTVEUuMTIwCi0JCQkJQ0FSUk9MTFRPTiBUWCA3NTAwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtOUUtNjQgICAoaGV4KQkJVml2b25pYyBHbWJICi02MDlFNjQgICAgIChiYXNlIDE2KQkJVml2b25pYyBHbWJICi0JCQkJS3VyZnVlcnN0LUVwcHN0ZWluLVJpbmcgNAotCQkJCVNhaWxhdWYgQmF5ZXJuIDYzODc3Ci0JCQkJR0VSTUFOWQotCi02MC05Ri05RCAgIChoZXgpCQlDbG91ZFN3aXRjaAotNjA5RjlEICAgICAoYmFzZSAxNikJCUNsb3VkU3dpdGNoCi0JCQkJMjAwIFdoZWVsZXIgUmQKLQkJCQlCdXJsaW5ndG9uIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC1BMS0wQSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTYwQTEwQSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjAtQjMtQzQgICAoaGV4KQkJRWxiZXIgU3JsCi02MEIzQzQgICAgIChiYXNlIDE2KQkJRWxiZXIgU3JsCi0JCQkJdmlhIFBvbnRldmVjY2hpbyA0MiBXCi0JCQkJQ2FyYXNjbyBHZSAxNjA0MgotCQkJCUlUQUxZCi0KLTYwLUM5LTgwICAgKGhleCkJCVRyeW11cwotNjBDOTgwICAgICAoYmFzZSAxNikJCVRyeW11cwotCQkJCUJ1Y2hlb24gVGVjaG5vIFBhcmsgMzAzLTkwMgotCQkJCU9qZW9uZy1ndSBTYW1qdW5nLWRvbmcKLQkJCQlCdWNoZW9uLXNpIDQyMS03NDEgR3l1bmdnaS1kbwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02MC1EMC1BOSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTYwRDBBOSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjAtRDMtMEEgICAoaGV4KQkJUXVhdGl1cyBMaW1pdGVkCi02MEQzMEEgICAgIChiYXNlIDE2KQkJUXVhdGl1cyBMaW1pdGVkCi0JCQkJVW5pdHMgMDUtMDcsIDE2L0YsIEdyZWVuZmllbGQgVG93ZXIsIENvbmNvcmRpYSBQbGF6YSwKLQkJCQkxIFNjaWVuY2UgTXVzZXVtIFJkLiwgVFNUIEVhc3QKLQkJCQlLb3dsb29uICAKLQkJCQlIT05HIEtPTkcKLQotNjAtREEtMjMgICAoaGV4KQkJRXN0ZWNoIENvLixMdGQKLTYwREEyMyAgICAgKGJhc2UgMTYpCQlFc3RlY2ggQ28uLEx0ZAotCQkJCSM3MTcsMTMzLTEsU2FuZ2RhZXdvbi1Eb25nCi0JCQkJSnVuZ3dvbi1HdQotCQkJCVNlb25nbmFtLVNpIEd5ZW9uZ2dpLURvIDQ2Mi0xMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjAtRUItNjkgICAoaGV4KQkJUXVhbnRhIGNvbXB1dGVyIEluYy4KLTYwRUI2OSAgICAgKGJhc2UgMTYpCQlRdWFudGEgY29tcHV0ZXIgSW5jLgotCQkJCTIxMSwgV2VuIEh3YSAybmQgUmQuLEt1ZWkgU2hhbiwgCi0JCQkJVGFvIFl1YW4gIDMzMzc3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02MC1GMS0zRCAgIChoZXgpCQlKQUJMT0NPTSBzLnIuby4KLTYwRjEzRCAgICAgKGJhc2UgMTYpCQlKQUJMT0NPTSBzLnIuby4KLQkJCQlWIE5pdmFjaCAxMgotCQkJCUphYmxvbmVjIG5hZCBOaXNvdSAgNDY2IDAxCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotNjAtRjUtOUMgICAoaGV4KQkJQ1JVLURhdGFwb3J0Ci02MEY1OUMgICAgIChiYXNlIDE2KQkJQ1JVLURhdGFwb3J0Ci0JCQkJMTAwMCBTRSBUZWNoIENlbnRlciBEcml2ZQotCQkJCVN1aXRlIDE2MAotCQkJCVZhbmNvdXZlciBXQSA5ODY4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtRjYtNzMgICAoaGV4KQkJVEVSVU1PIENPUlBPUkFUSU9OCi02MEY2NzMgICAgIChiYXNlIDE2KQkJVEVSVU1PIENPUlBPUkFUSU9OCi0JCQkJMTUwMCxJbm9rdWNoaSxOYWthaS1tYWNoaQotCQkJCUFzaGlnYXJha2FtaS1ndW4gS2FuYWdhd2EgMjU5LTAxNTEKLQkJCQlKQVBBTgotCi02MC1GQi00MiAgIChoZXgpCQlBcHBsZSwgSW5jCi02MEZCNDIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtMDAtRjEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNjQwMEYxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtMDktNEMgICAoaGV4KQkJQmVpamluZyBTdXBlcmJlZSBXaXJlbGVzcyBUZWNobm9sb2d5IENvLixMdGQKLTY0MDk0QyAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFN1cGVyYmVlIFdpcmVsZXNzIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCUI3LFNjaWVuY2UtVGVjaCBGb3J0dW5lIENlbnRlciwKLQkJCQlOby44LFh1ZXFpbmdSb2FkLEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAxOTIKLQkJCQlDSElOQQotCi02NC0wRi0yOCAgIChoZXgpCQkyd2lyZQotNjQwRjI4ICAgICAoYmFzZSAxNikJCTJ3aXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSAgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTEwLTg0ICAgKGhleCkJCUhFWElVTSBUZWNobmljYWwgRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi02NDEwODQgICAgIChiYXNlIDE2KQkJSEVYSVVNIFRlY2huaWNhbCBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLQkJCQlWYWNpIHV0IDUxYgotCQkJCUJVREFQRVNUICBILTExMzQKLQkJCQlIVU5HQVJZCi0KLTY0LTE2LThEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTY0MTY4RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTE2LUYwICAgKGhleCkJCVNoZWh6aGVuIEh1YXdlaSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTY0MTZGMCAgICAgKGJhc2UgMTYpCQlTaGVoemhlbiBIdWF3ZWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJQnVpbGRpbmcgMiwgWm9uZSBCLEh1YXdlaSBJbmR1c3RyaWFsIFBhcmssQmFudGlhbiwgTG9uZ2dhbmcgRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotNjQtMUEtMjIgICAoaGV4KQkJSGVsaW9zcGVjdHJhL1dvb2RoaWxsIEludmVzdG1lbnRzCi02NDFBMjIgICAgIChiYXNlIDE2KQkJSGVsaW9zcGVjdHJhL1dvb2RoaWxsIEludmVzdG1lbnRzCi0JCQkJQXJtYmk/b2VnYXZpP29lZ2VuIDMKLQkJCQlCb3JpP29lcyBOb25lIDUwNjMwCi0JCQkJU1dFREVOCi0KLTY0LTFFLTgxICAgKGhleCkJCURvd3NsYWtlIE1pY3Jvc3lzdGVtcwotNjQxRTgxICAgICAoYmFzZSAxNikJCURvd3NsYWtlIE1pY3Jvc3lzdGVtcwotCQkJCTIxIEhpZ2ggU3RyZWV0LCBTdWl0ZSAzMDYKLQkJCQlOb3J0aCBBbmRvdmVyIE1BIDAxODQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC0zMS01MCAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTY0MzE1MCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtMzEtN0UgICAoaGV4KQkJRGV4aW4gQ29ycG9yYXRpb24KLTY0MzE3RSAgICAgKGJhc2UgMTYpCQlEZXhpbiBDb3Jwb3JhdGlvbgotCQkJCTE0Ri04LCBOby4gMjU4LCBMaWFuIENoZW5nIFJkLgotCQkJCUNodW5nIEhvIENpdHksIFRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02NC0zNC0wOSAgIChoZXgpCQlCSVR3YXZlIFB0ZSBMdGQKLTY0MzQwOSAgICAgKGJhc2UgMTYpCQlCSVR3YXZlIFB0ZSBMdGQKLQkJCQkyIFNlcmFuZ29vbiBOb3J0aCBBdmUgNQotCQkJCSMwMy0wMQotCQkJCTU1NDkxMQotCQkJCVNJTkdBUE9SRQotCi02NC00Qi1DMyAgIChoZXgpCQlTaGFuZ2hhaSBXT0FTaVMgVGVsZWNvbW11bmljYXRpb25zIEx0ZC4sIENvLgotNjQ0QkMzICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFdPQVNpUyBUZWxlY29tbXVuaWNhdGlvbnMgTHRkLiwgQ28uCi0JCQkJMTVGLCBTb2Z0d2FyZSBCdWlsZGluZywKLQkJCQk0NjEgSG9uZ2NhbyBSb2FkLCBYdWh1aSBEaXN0cmljdAotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi02NC00Ri03NCAgIChoZXgpCQlMRU5VUyBDby4sIEx0ZC4KLTY0NEY3NCAgICAgKGJhc2UgMTYpCQlMRU5VUyBDby4sIEx0ZC4KLQkJCQkxOC01IEd3YWNoZW9uLURvbmcKLQkJCQlHd2FjaGVvbiBHeWVvbmdnaS1EbyA0MjctMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTY0LTY1LUMwICAgKGhleCkJCU51dm9uLCBJbmMKLTY0NjVDMCAgICAgKGJhc2UgMTYpCQlOdXZvbiwgSW5jCi0JCQkJMzEzMCBBbHBpbmUgUm9hZAotCQkJCVN1aXRlIDI4OC00NjUKLQkJCQlQb3J0b2xhIFZhbGxleSBDYWxpZm9ybmlhIDk0MDI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC02Ny0wNyAgIChoZXgpCQlCZWlqaW5nIE9tbmlmaWMgVGVjaG5vbG9neSwgTHRkLgotNjQ2NzA3ICAgICAoYmFzZSAxNikJCUJlaWppbmcgT21uaWZpYyBUZWNobm9sb2d5LCBMdGQuCi0JCQkJUm0uIDQwMiwgQnVpbGRpbmcgMSwgU2h1aSBNdSBRaW5nIEh1YSBDb21tdW5pdHkKLQkJCQlaaG9uZyBHdWFuIEN1biBCZWkgRXIgSmllLCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMTkwCi0JCQkJQ0hJTkEKLQotNjQtNjgtMEMgICAoaGV4KQkJQ09NVFJFTkQKLTY0NjgwQyAgICAgKGJhc2UgMTYpCQlDT01UUkVORAotCQkJCTNGLTEsMTAgTGFuZSA2MDksIENodW5nIEhzaW4gUm9hZCwgU2VjdGlvbiA1Ci0JCQkJU2FuIENodW5nIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjQtNjktQkMgICAoaGV4KQkJSHl0ZXJhIENvbW11bmljYXRpb25zIENvIC4sbHRkCi02NDY5QkMgICAgIChiYXNlIDE2KQkJSHl0ZXJhIENvbW11bmljYXRpb25zIENvIC4sbHRkCi0JCQkJSFlUIFRvd2VyICxIaS1UZWNoIEluZHVzdHJpYWwgUGFyayBOb3J0aCxOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi02NC02RS02QyAgIChoZXgpCQlSYWRpbyBEYXRhY29tIExMQwotNjQ2RTZDICAgICAoYmFzZSAxNikJCVJhZGlvIERhdGFjb20gTExDCi0JCQkJOTYwMSBOIDM1dGggU3QKLQkJCQlQaG9lbml4IEFaIDg1MDI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC03My1FMiAgIChoZXgpCQlBcmJpdGVyIFN5c3RlbXMsIEluYy4KLTY0NzNFMiAgICAgKGJhc2UgMTYpCQlBcmJpdGVyIFN5c3RlbXMsIEluYy4KLQkJCQkxMzI0IFZlbmRlbHMgQ2lyY2xlCi0JCQkJU3VpdGUgMTIxCi0JCQkJUGFzbyBSb2JsZXMgQ2FsaWZvcm5pYSA5MzQ0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtN0ItRDQgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTY0N0JENCAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtN0QtODEgICAoaGV4KQkJWU9LT1RBIElORFVTVFJJQUwgQ08sLkxURAotNjQ3RDgxICAgICAoYmFzZSAxNikJCVlPS09UQSBJTkRVU1RSSUFMIENPLC5MVEQKLQkJCQk1LTU1IE5JU0hJSVdBVEEKLQkJCQkzLUNIT01FCi0JCQkJSElHQVNISSBPU0FLQS1DSVRZIE9TQUtBIDU3OC0wOTQ3Ci0JCQkJSkFQQU4KLQotNjQtN0YtREEgICAoaGV4KQkJVEVLVEVMSUMgQ29tbXVuaWNhdGlvbnMgSW5jLgotNjQ3RkRBICAgICAoYmFzZSAxNikJCVRFS1RFTElDIENvbW11bmljYXRpb25zIEluYy4KLQkJCQk3NjU3IDEwdGggU3RyZWV0IE5FCi0JCQkJQ2FsZ2FyeSBBbGJlcnRhIFQyRSA4WDIKLQkJCQlDQU5BREEKLQotNjQtODAtOTkgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTY0ODA5OSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotNjQtODEtMjUgICAoaGV4KQkJQWxwaGF0cm9uIE1hcmluZSBCVgotNjQ4MTI1ICAgICAoYmFzZSAxNikJCUFscGhhdHJvbiBNYXJpbmUgQlYKLQkJCQlTY2hhYXJkaWprIDIzCi0JCQkJUm90dGVyZGFtIFp1aWQtSG9sbGFuZCAzMDYzTkgKLQkJCQlORVRIRVJMQU5EUwotCi02NC04Ny1ENyAgIChoZXgpCQlQSVJFTExJIEJST0FEQkFORCBTT0xVVElPTlMgCi02NDg3RDcgICAgIChiYXNlIDE2KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TIAotCQkJCVZJQUxFIFNBUkNBIDIyMgotCQkJCU1JTEFOTyAgMjAxMjYgCi0JCQkJSVRBTFkKLQotNjQtOTktNUQgICAoaGV4KQkJTEdFIAotNjQ5OTVEICAgICAoYmFzZSAxNikJCUxHRSAKLQkJCQk2MC0zOSAsIEthc2FuIC1kb25nICwgR3VtY2hlb24tZ3UuCi0JCQkJU2VvdWwgICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTY0LTlCLTI0ICAgKGhleCkJCVYgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTY0OUIyNCAgICAgKGJhc2UgMTYpCQlWIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJWUJQIEVhc3QgVG93ZXIgNUYsCi0JCQkJMTM0IEdvZG8tY2hvLCBIb2dvZ2F5YS1rdSwKLQkJCQlZb2tvaGFtYSBjaXR5IEthbmFnYXdhIDI0MC0wMDA1Ci0JCQkJSkFQQU4KLQotNjQtOUMtOEUgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTY0OUM4RSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtQTItMzIgICAoaGV4KQkJT09PIFNhbWxpZ2h0Ci02NEEyMzIgICAgIChiYXNlIDE2KQkJT09PIFNhbWxpZ2h0Ci0JCQkJNDRBLCBEdWJuaW5za2F5YSBzdHIuLCAKLQkJCQlNb3Njb3cgIDEyNzU5MQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi02NC1BNy02OSAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLTY0QTc2OSAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4gMjMsIFhpbmdodWEgUmQsIAotCQkJCVRhb3l1YW4gQ291bnR5ICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTY0LUE4LTM3ICAgKGhleCkJCUp1bmkgS29yZWEgQ28uLCBMdGQKLTY0QTgzNyAgICAgKGJhc2UgMTYpCQlKdW5pIEtvcmVhIENvLiwgTHRkCi0JCQkJRTYwMyBCdW5kYW5nIFRlY2huby1QYXJrIDE1MQotCQkJCVlhdGFwLCBCdW5kYW5nCi0JCQkJU2VvbmduYW0gR3llb25nZ2kgNDYzLTc2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02NC1CNi00QSAgIChoZXgpCQlWaVZPdGVjaCwgSW5jLgotNjRCNjRBICAgICAoYmFzZSAxNikJCVZpVk90ZWNoLCBJbmMuCi0JCQkJNDUxIEVsIENhbWlubyBSZWFsCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LUI5LUU4ICAgKGhleCkJCUFwcGxlLCBJbmMKLTY0QjlFOCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC1CQy0xMSAgIChoZXgpCQlDb21iaVEgQUIKLTY0QkMxMSAgICAgKGJhc2UgMTYpCQlDb21iaVEgQUIKLQkJCQlTY2llbmNlIFBhcmsKLQkJCQlHanV0ZXJpZ2F0YW4gOQotCQkJCUpvbmtvcGluZyAgNTUzIDE4Ci0JCQkJU1dFREVOCi0KLTY0LUM2LUFGICAgKGhleCkJCUFYRVJSQSBOZXR3b3JrcyBMdGQKLTY0QzZBRiAgICAgKGJhc2UgMTYpCQlBWEVSUkEgTmV0d29ya3MgTHRkCi0JCQkJMjQgIFJhb3VsIFdhbGxlbmJlcmcgU3QuICwgCi0JCQkJVGVsLUF2aXYgICBJU1JBRUwgNjk3MTkKLQkJCQlJU1JBRUwKLQotNjQtRDAtMkQgICAoaGV4KQkJRFJBWVRFSyBGUkFOQ0UKLTY0RDAyRCAgICAgKGJhc2UgMTYpCQlEUkFZVEVLIEZSQU5DRQotCQkJCTEzNyBSVUUgREUgVkVSU0FJTExFUwotCQkJCUxFIENIRVNOQVkgIDc4MTUwCi0JCQkJRlJBTkNFCi0KLTY0LUQxLUEzICAgKGhleCkJCVNpdGVjb20gRXVyb3BlIEJWCi02NEQxQTMgICAgIChiYXNlIDE2KQkJU2l0ZWNvbSBFdXJvcGUgQlYKLQkJCQlMaW5hdGViYWFuIDEwMQotCQkJCVJvdHRlcmRhbSBadWlkLUhvbGxhbmQgMzA0NSBBSAotCQkJCU5FVEhFUkxBTkRTCi0KLTY0LUQyLTQxICAgKGhleCkJCUtlaXRoICYgS29lcCBHbWJICi02NEQyNDEgICAgIChiYXNlIDE2KQkJS2VpdGggJiBLb2VwIEdtYkgKLQkJCQlVZWxsZW5kYWhsZXIgU3RyLiAxOTkKLQkJCQlXdXBwZXJ0YWwgTlJXIDQyMTA5Ci0JCQkJR0VSTUFOWQotCi02NC1ENC1EQSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTY0RDREQSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTY0LUQ5LTEyICAgKGhleCkJCVNvbGlkaWNhLCBJbmMuCi02NEQ5MTIgICAgIChiYXNlIDE2KQkJU29saWRpY2EsIEluYy4KLQkJCQk1ODQwIEludGVyZmFjZSBEcml2ZQotCQkJCVN1aXRlIDIwMAotCQkJCUFubiBBcmJvciBNaWNoaWdhbiA0ODEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtREItMTggICAoaGV4KQkJT3BlblBhdHRlcm4KLTY0REIxOCAgICAgKGJhc2UgMTYpCQlPcGVuUGF0dGVybgotCQkJCTEwOS8xMTEgcnVlIGRlcyBDaT9vZXRlcwotCQkJCU1haXNvbnMgTGFmZml0dGUgWXZlbGluZXMgNzg2MDAKLQkJCQlGUkFOQ0UKLQotNjQtREMtMDEgICAoaGV4KQkJU3RhdGljIFN5c3RlbXMgR3JvdXAgUExDCi02NERDMDEgICAgIChiYXNlIDE2KQkJU3RhdGljIFN5c3RlbXMgR3JvdXAgUExDCi0JCQkJSGVhdGhtaWxsIFJvYWQKLQkJCQlXb21ib3VybmUKLQkJCQlXb2x2ZXJoYW1wdG9uIFdlc3QgTWlkbGFuZHMgV1Y1IDhBTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTY0LURFLTFDICAgKGhleCkJCUtpbmduZXRpYyBQdGUgTHRkCi02NERFMUMgICAgIChiYXNlIDE2KQkJS2luZ25ldGljIFB0ZSBMdGQKLQkJCQk0NyBLYWtpIEJ1a2l0IFBsYWNlCi0JCQkJIzAyLTAwIEV1bm9zIFRlY2hwYXJrCi0JCQkJNDE2MjI1Ci0JCQkJU0lOR0FQT1JFCi0KLTY0LUU4LUU2ICAgKGhleCkJCWdsb2JhbCBtb2lzdHVyZSBtYW5hZ2VtZW50IHN5c3RlbQotNjRFOEU2ICAgICAoYmFzZSAxNikJCWdsb2JhbCBtb2lzdHVyZSBtYW5hZ2VtZW50IHN5c3RlbQotCQkJCTExMTMyIGJyb2FkIHJpdmVyIHJvYWQKLQkJCQlzdWl0ZSBhCi0JCQkJaXJtbyBzYyAyOTA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtRUQtNTcgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTY0RUQ1NyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtRjktNzAgICAoaGV4KQkJS2VuYWRlIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgQ28uLExURC4KLTY0Rjk3MCAgICAgKGJhc2UgMTYpCQlLZW5hZGUgRWxlY3Ryb25pY3MgVGVjaG5vbG9neSBDby4sTFRELgotCQkJCUYvRyByb29tLDExL0YsSGFuZ2R1IGJ1aWxkaW5nLEh1YWZ1IFJkLCBGdXRpYW4gZGlzdHJpY3QsCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTY0LUY5LTg3ICAgKGhleCkJCUF2dmFzaSBJbmMuCi02NEY5ODcgICAgIChiYXNlIDE2KQkJQXZ2YXNpIEluYy4KLQkJCQkxMDMgUmFuZGFsbCBEci4KLQkJCQlXYXRlcmxvbyBPTiBOMlYgMUM1Ci0JCQkJQ0FOQURBCi0KLTY0LUZDLThDICAgKGhleCkJCVpvbmFyIFN5c3RlbXMKLTY0RkM4QyAgICAgKGJhc2UgMTYpCQlab25hciBTeXN0ZW1zCi0JCQkJMTgyMDAgQ2FzY2FkZSBBdmUgU291dGgKLQkJCQlTZWF0dGxlIFdBIDk4MTE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC0wNS1DQSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotNjgwNUNBICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi02OC0xMi0yRCAgIChoZXgpCQlTcGVjaWFsIEluc3RydW1lbnQgRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi02ODEyMkQgICAgIChiYXNlIDE2KQkJU3BlY2lhbCBJbnN0cnVtZW50IERldmVsb3BtZW50IENvLiwgTHRkLgotCQkJCTZGLTEsIE5vLiAxMjMsIExhbmUgMjM1Ci0JCQkJQmFvIENoaWFvIFJvYWQKLQkJCQlIc2luIFRpZW4gVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjgtMUYtRDggICAoaGV4KQkJQWR2YW5jZWQgVGVsZW1ldHJ5Ci02ODFGRDggICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgVGVsZW1ldHJ5Ci0JCQkJMTA2NzAgVHJlZW5hIFN0cmVldAotCQkJCVN1aXRlIDEwNgotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtMjMtNEIgICAoaGV4KQkJTmlob24gRGVuZ3lvIEtvdXNha3UKLTY4MjM0QiAgICAgKGJhc2UgMTYpCQlOaWhvbiBEZW5neW8gS291c2FrdQotCQkJCXNoaW5tYWNoaSAyMS0xCi0JCQkJbWF0b2JhCi0JCQkJa2F3YWdvZS1zaGkgc2FpdGFtYSAzNTAtMTEwNwotCQkJCUpBUEFOCi0KLTY4LTQzLTUyICAgKGhleCkJCUJodXUgTGltaXRlZAotNjg0MzUyICAgICAoYmFzZSAxNikJCUJodXUgTGltaXRlZAotCQkJCU9mZmljZSAxLCA0NjUgTXQgRWRlbiBSb2FkCi0JCQkJTXQgRWRlbgotCQkJCUF1Y2tsYW5kICAxMDIzCi0JCQkJTkVXIFpFQUxBTkQKLQotNjgtNEItODggICAoaGV4KQkJR2FsdHJvbmljcyBUZWxlbWV0cnkgSW5jLgotNjg0Qjg4ICAgICAoYmFzZSAxNikJCUdhbHRyb25pY3MgVGVsZW1ldHJ5IEluYy4KLQkJCQkzMSBMdXBpIEN0Ci0JCQkJU3VpdGUgMTUwCi0JCQkJUGFsbSBDb2FzdCBGbG9yaWRhIDMyMTM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC01NC1GNSAgIChoZXgpCQllbkxpZ2h0ZWQgSW5jCi02ODU0RjUgICAgIChiYXNlIDE2KQkJZW5MaWdodGVkIEluYwotCQkJCTE0NTEgR3JhbnQgUmQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC01OS03RiAgIChoZXgpCQlBbGNhdGVsIEx1Y2VudAotNjg1OTdGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTHVjZW50Ci0JCQkJVmlhIFRyZW50bywgMzAKLQkJCQlWaW1lcmNhdGUgTUIgMjAwNTkKLQkJCQlJVEFMWQotCi02OC01Qi0zNiAgIChoZXgpCQlQT1dFUlRFQ0ggSU5EVVNUUklBTCBDTy4sIExURC4KLTY4NUIzNiAgICAgKGJhc2UgMTYpCQlQT1dFUlRFQ0ggSU5EVVNUUklBTCBDTy4sIExURC4KLQkJCQkxMEYsIE5vLiA0MDcsIENodW5nIFNoYW4gUmQuLCBTZWMgMiwKLQkJCQlDaHVuZyBIbyBUYWlwZWkgQ291bnR5IDIzNTU4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02OC01RC00MyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTY4NUQ0MyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTY4LTYzLTU5ICAgKGhleCkJCUFkdmFuY2VkIERpZ2l0YWwgQnJvYWRjYXN0IFNBCi02ODYzNTkgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgRGlnaXRhbCBCcm9hZGNhc3QgU0EKLQkJCQlBdmVudWUgZGUgVG91cm5heSA3Ci0JCQkJUHJlZ255LUNoYW1iZXN5ICAxMjkyCi0JCQkJU1dJVFpFUkxBTkQKLQotNjgtNzgtNEMgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi02ODc4NEMgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLTY4LTc5LTI0ICAgKGhleCkJCUVMUy1HbWJIICYgQ28uIEtHCi02ODc5MjQgICAgIChiYXNlIDE2KQkJRUxTLUdtYkggJiBDby4gS0cKLQkJCQlEYW1tc3RyYXNzZSAyMQotCQkJCVdlcnRoZXIgTlJXIDMzODI0Ci0JCQkJR0VSTUFOWQotCi02OC03OS1FRCAgIChoZXgpCQlTSEFSUCBDb3Jwb3JhdGlvbgotNjg3OUVEICAgICAoYmFzZSAxNikJCVNIQVJQIENvcnBvcmF0aW9uCi0JCQkJMjItMjIsTmFnYWlrZS1DaG8KLQkJCQlBYmVuby1LdQotCQkJCU9zYWthLUNpdHkgT3Nha2EtUHJlZmVjdHVyZSA1NDUtODUyMgotCQkJCUpBUEFOCi0KLTY4LTdGLTc0ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotNjg3Rjc0ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtODQtNzAgICAoaGV4KQkJZVNTeXMgQ28uLEx0ZAotNjg4NDcwICAgICAoYmFzZSAxNikJCWVTU3lzIENvLixMdGQKLQkJCQlEYWVydW5nIFBvc3QgVG93ZXIgNSAxNUYsIDYwLTMKLQkJCQlHYXNhbi1kb25nCi0JCQkJU2VvdWwgR2V1bWNoZW9uLWd1IDE1My03MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjgtODUtNDAgICAoaGV4KQkJSUdJIE1vYmlsZSwgSW5jLgotNjg4NTQwICAgICAoYmFzZSAxNikJCUlHSSBNb2JpbGUsIEluYy4KLQkJCQk0RiBLeW9uZ25hbSBCbGRnLiwKLQkJCQk4MzAtNDggWW9rc2FtLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02OC04Ny02QiAgIChoZXgpCQlJTlEgTW9iaWxlIExpbWl0ZWQKLTY4ODc2QiAgICAgKGJhc2UgMTYpCQlJTlEgTW9iaWxlIExpbWl0ZWQKLQkJCQk2IEhlc3RlciBSb2FkCi0JCQkJQmF0dGVyc2VhIExvbmRvbiBTVzExIDRBTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTY4LTkyLTM0ICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotNjg5MjM0ICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY4LUExLUI3ICAgKGhleCkJCUhvbmdoYW8gTWluZ2NodWFuIFRlY2hub2xvZ3kgKEJlaWppbmcpIENPLixMdGQuCi02OEExQjcgICAgIChiYXNlIDE2KQkJSG9uZ2hhbyBNaW5nY2h1YW4gVGVjaG5vbG9neSAoQmVpamluZykgQ08uLEx0ZC4KLQkJCQlGbG9vciA4LFRvd2VyIEEsIFdhbmxpdSBZaWNoZW5nIEJ1aWxkaW5nCi0JCQkJTm8uMTEsIENoYW5nY2h1biBRaWFvIFJvYWQsIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODkKLQkJCQlDSElOQQotCi02OC1BMy1DNCAgIChoZXgpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotNjhBM0M0ICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsOTAsQ2hpZW4gMSBSb2FkLENodW5nSG8sCi0JCQkJVGFpUGVpICAyMzU4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjgtQUEtRDIgICAoaGV4KQkJREFURUNTIExURC4sCi02OEFBRDIgICAgIChiYXNlIDE2KQkJREFURUNTIExURC4sCi0JCQkJQlVMLiBUU0FSSUdSQURTS08gU0hPU1NFIDExNUEKLQkJCQlTT0ZJQSAgMTc4NAotCQkJCUJVTEdBUklBCi0KLTY4LUI1LTk5ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotNjhCNTk5ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC1CRC1BQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi02OEJEQUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC1DQS0wMCAgIChoZXgpCQlPY3RvcHVzIFN5c3RlbXMgTGltaXRlZAotNjhDQTAwICAgICAoYmFzZSAxNikJCU9jdG9wdXMgU3lzdGVtcyBMaW1pdGVkCi0JCQkJMzYvRiwgMTQ4IEVsZWN0cmljIFJvYWQKLQkJCQlOb3J0aCBQb2ludAotCQkJCUhPTkcgS09ORwotCi02OC1DQy05QyAgIChoZXgpCQlNaW5lIFNpdGUgVGVjaG5vbG9naWVzCi02OENDOUMgICAgIChiYXNlIDE2KQkJTWluZSBTaXRlIFRlY2hub2xvZ2llcwotCQkJCTI1LTI3IFdoaXRpbmcgU3RyZWV0Ci0JCQkJQXJ0YXJtb24gTlNXIDIwNjQKLQkJCQlBVVNUUkFMSUEKLQotNjgtREItOTYgICAoaGV4KQkJT1BXSUxMIFRlY2hub2xvZ2llcyBDTyAuLExURAotNjhEQjk2ICAgICAoYmFzZSAxNikJCU9QV0lMTCBUZWNobm9sb2dpZXMgQ08gLixMVEQKLQkJCQlSb29tIDQxNSxEaWdpdGFsIE1lZGlhIEJ1aWxkaW5nLE5PLjcgU2hhbmdkaSBJbmZvcm1hdGlvbiBSb2FkLEhhaURpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotNjgtREMtRTggICAoaGV4KQkJUGFja2V0U3Rvcm0gQ29tbXVuaWNhdGlvbnMKLTY4RENFOCAgICAgKGJhc2UgMTYpCQlQYWNrZXRTdG9ybSBDb21tdW5pY2F0aW9ucwotCQkJCTIwIE1lcmlkaWFuIFJkCi0JCQkJRWF0b250b3duIE5KIDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC1FNC0xRiAgIChoZXgpCQlVbmdsYXViZSBJZGVudGVjaCBHbWJICi02OEU0MUYgICAgIChiYXNlIDE2KQkJVW5nbGF1YmUgSWRlbnRlY2ggR21iSAotCQkJCUFuIGRlciBNb29zYWNoIDNhCi0JCQkJTWFzc2VuaGF1c2VuIEJheWVybiA4NTM3NgotCQkJCUdFUk1BTlkKLQotNjgtRUItQUUgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi02OEVCQUUgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTY4LUVCLUM1ICAgKGhleCkJCUFuZ3N0cmVtIFRlbGVjb20KLTY4RUJDNSAgICAgKGJhc2UgMTYpCQlBbmdzdHJlbSBUZWxlY29tCi0JCQkJWXV6aG5heWEgcHJvbXpvbmEsIHBhc3NhZ2UgNDgwNiwgNCwgYnVpbGQgMyAKLQkJCQlaZWxlbm9ncmFkIE1vc2NvdyAxMjQ0NjAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotNjgtRUYtQkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNjhFRkJEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtRjgtOTUgICAoaGV4KQkJUmVkZmxvdyBMaW1pdGVkCi02OEY4OTUgICAgIChiYXNlIDE2KQkJUmVkZmxvdyBMaW1pdGVkCi0JCQkJMS8yNyBDb3VuaWhhbiBSZCAKLQkJCQlTZXZlbnRlZW4gTWlsZSBSb2NrcwotCQkJCUJyaXNiYW5lIFF1ZWVuc2xhbmQgNDA3MwotCQkJCUFVU1RSQUxJQQotCi02Qy0wNC02MCAgIChoZXgpCQlSQkggQWNjZXNzIFRlY2hub2xvZ2llcyBJbmMuCi02QzA0NjAgICAgIChiYXNlIDE2KQkJUkJIIEFjY2VzcyBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTIgQXV0b21hdGljIFJvYWQKLQkJCQlVbml0IDEwOAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZTIDZLOAotCQkJCUNBTkFEQQotCi02Qy0wRS0wRCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotNkMwRTBEICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTZDLTBGLTZBICAgKGhleCkJCUpEQyBUZWNoIENvLiwgTHRkLgotNkMwRjZBICAgICAoYmFzZSAxNikJCUpEQyBUZWNoIENvLiwgTHRkLgotCQkJCTM3MC0xMiBEYWVteXVuZy1yaSBEYWVnb3QtbXl1bgotCQkJCUtpbXBvLXNpIEt5dW5nZ2ktZG8gNDEwLTg1MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02Qy0xOC0xMSAgIChoZXgpCQlEZWNhdHVyIEVsZWN0cm9uaWNzCi02QzE4MTEgICAgIChiYXNlIDE2KQkJRGVjYXR1ciBFbGVjdHJvbmljcwotCQkJCTcxNSBCcmlnaHQgU3RyZWV0Ci0JCQkJRGVjYXR1ciBJTCA2MjUyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtMjItQUIgICAoaGV4KQkJQWluc3dvcnRoIEdhbWUgVGVjaG5vbG9neQotNkMyMkFCICAgICAoYmFzZSAxNikJCUFpbnN3b3J0aCBHYW1lIFRlY2hub2xvZ3kKLQkJCQkxMCBIb2xrZXIgU3RyZWV0IAotCQkJCU5ld2luZ3RvbiBOZXcgU291dGggV2FsZXMgMjEyNwotCQkJCUFVU1RSQUxJQQotCi02Qy0yMy1COSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotNkMyM0I5ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTZDLTJFLTMzICAgKGhleCkJCUFjY2VsaW5rIFRlY2hub2xvZ2llcyBDby4sTHRkLgotNkMyRTMzICAgICAoYmFzZSAxNikJCUFjY2VsaW5rIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCTg4IFlvdWtleXVhbiBSb2FkLAotCQkJCVd1aGFuIEh1YmVpIDQzMDA3NAotCQkJCUNISU5BCi0KLTZDLTJFLTg1ICAgKGhleCkJCVNBR0VNQ09NCi02QzJFODUgICAgIChiYXNlIDE2KQkJU0FHRU1DT00KLQkJCQkyNTAgcm91dGUgZGUgbCdFbXBlcmV1cgotCQkJCVJVRUlMIE1BTE1BSVNPTiAgOTI4NDgKLQkJCQlGUkFOQ0UKLQotNkMtMzItREUgICAoaGV4KQkJSW5kaWVvbiBUZWNobm9sb2dpZXMgUHZ0LiBMdGQuCi02QzMyREUgICAgIChiYXNlIDE2KQkJSW5kaWVvbiBUZWNobm9sb2dpZXMgUHZ0LiBMdGQuCi0JCQkJNjAxLCBBbHBoYSAyLCBHaWdhc3BhY2UgSVQgUGFyawotCQkJCVZpbWFuIE5hZ2FyCi0JCQkJUHVuZSAgTWFoYXJhc3RyYSA0MTEwMTQKLQkJCQlJTkRJQQotCi02Qy0zMy1BOSAgIChoZXgpCQlNYWdpY2phY2sgTFAKLTZDMzNBOSAgICAgKGJhc2UgMTYpCQlNYWdpY2phY2sgTFAKLQkJCQk1NzAwIEdlb3JnaWEgQXZlbnVlCi0JCQkJV2VzdCBQYWxtIEJlYWNoIEZMIDMzNDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02Qy0zOS0xRCAgIChoZXgpCQlCZWlqaW5nIFpob25nSHVhSHVuIE5ldHdvcmsgSW5mb3JtYXRpb24gY2VudGVyCi02QzM5MUQgICAgIChiYXNlIDE2KQkJQmVpamluZyBaaG9uZ0h1YUh1biBOZXR3b3JrIEluZm9ybWF0aW9uIGNlbnRlcgotCQkJCTZGIEJlaUFvIE1hbnNpb24sSHVpWGluIEVhc3QgU3RyZWV0IEEyLAotCQkJCUNoYW95YW5nIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDAyOQotCQkJCUNISU5BCi0KLTZDLTNFLTlDICAgKGhleCkJCUtFIEtuZXN0ZWwgRWxla3Ryb25payBHbWJICi02QzNFOUMgICAgIChiYXNlIDE2KQkJS0UgS25lc3RlbCBFbGVrdHJvbmlrIEdtYkgKLQkJCQlPc3RlcndhbGRlciBTdHIuIDEyCi0JCQkJSG9wZmVyYmFjaCBCYXZhcmlhIDg3NDk2Ci0JCQkJR0VSTUFOWQotCi02Qy01MC00RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi02QzUwNEQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02Qy01Qy1ERSAgIChoZXgpCQlTdW5SZXBvcnRzLCBJbmMuCi02QzVDREUgICAgIChiYXNlIDE2KQkJU3VuUmVwb3J0cywgSW5jLgotCQkJCTE0MDYgQ2VkYXJ3b29kIERyLgotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtNUQtNjMgICAoaGV4KQkJU2hlblpoZW4gUmFwb28gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTZDNUQ2MyAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBSYXBvbyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUJsb2NrIEExLEIxLEIyLDFzdCBzZWNvbmQgc3RhZ2UsIDFzdCBJbmR1c3RyaWFsIFBhcmssIDNyZCBJbmR1c3RyaWFsIFpvbmUgLEZlbmdodWFuZyBGdXlvbmcsIEJhb0FuIAotCQkJCVNoZW5aaGVuICA1MTgxMDMKLQkJCQlDSElOQQotCi02Qy01RS03QSAgIChoZXgpCQlVYmlxdWl0b3VzIEludGVybmV0IFRlbGVjb20gQ28uLCBMdGQKLTZDNUU3QSAgICAgKGJhc2UgMTYpCQlVYmlxdWl0b3VzIEludGVybmV0IFRlbGVjb20gQ28uLCBMdGQKLQkJCQkjNTEyLCA1dGggRmxvb3IsIEtvbG9uIERpZ2l0YWwgVmFsbGV5LEd1cm8gMyhzYW0pLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTc3NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02Qy02Mi02RCAgIChoZXgpCQlNaWNyby1TdGFyIElOVCdMIENPLiwgTFRECi02QzYyNkQgICAgIChiYXNlIDE2KQkJTWljcm8tU3RhciBJTlQnTCBDTy4sIExURAotCQkJCU5vLjY5LCBMaWRlIFN0LiwgSmhvbmdoZSBDaXR5Ci0JCQkJVGFpcGVpIENvbnV0eSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02Qy02Ri0xOCAgIChoZXgpCQlTdGVyZW90YXhpcywgSW5jLgotNkM2RjE4ICAgICAoYmFzZSAxNikJCVN0ZXJlb3RheGlzLCBJbmMuCi0JCQkJNDMyMCBGb3Jlc3QgUGFyayBBdmUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTdC4gTG91aXMgTU8gNjMxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTZDLTcwLTM5ICAgKGhleCkJCU5vdmFyIEdtYkggCi02QzcwMzkgICAgIChiYXNlIDE2KQkJTm92YXIgR21iSCAKLQkJCQlKb2hhbm5lcy1NYXV0aGUtU3RyLiAxNAotCQkJCUFsYnN0YWR0IEJhZGVuLVd1cnR0ZW1iZXJnICA3MjQ1OAotCQkJCUdFUk1BTlkKLQotNkMtODEtRkUgICAoaGV4KQkJTWl0c3ViYSBDb3Jwb3JhdGlvbgotNkM4MUZFICAgICAoYmFzZSAxNikJCU1pdHN1YmEgQ29ycG9yYXRpb24KLQkJCQkxLTI2ODEKLQkJCQlIaXJvc2F3YS1jaG8KLQkJCQlLaXJ5dSBHdW5tYSAzNzYtODU1NQotCQkJCUpBUEFOCi0KLTZDLThDLURCICAgKGhleCkJCU90dXMgVGVjaG5vbG9naWVzIEx0ZAotNkM4Q0RCICAgICAoYmFzZSAxNikJCU90dXMgVGVjaG5vbG9naWVzIEx0ZAotCQkJCTI2IEJyYWlkIFJvYWQKLQkJCQlFZGluYnVyZ2ggTW9ybmluZ3NpZGUgRUgxMCA2QUQKLQkJCQlVTklURUQgS0lOR0RPTQotCi02Qy04RC02NSAgIChoZXgpCQlXaXJlbGVzcyBHbHVlIE5ldHdvcmtzLCBJbmMuCi02QzhENjUgICAgIChiYXNlIDE2KQkJV2lyZWxlc3MgR2x1ZSBOZXR3b3JrcywgSW5jLgotCQkJCTE2MDEgTi4gTWFpbiBTdHJlZXQsIFN1aXRlIDIwMgotCQkJCVdhbG51dCBDcmVlayBDQSA5NDU5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtOTItQkYgICAoaGV4KQkJSW5zcHVyIEVsZWN0cm9uaWMgSW5mb3JtYXRpb24gSW5kdXN0cnkgQ28uLEx0ZC4KLTZDOTJCRiAgICAgKGJhc2UgMTYpCQlJbnNwdXIgRWxlY3Ryb25pYyBJbmZvcm1hdGlvbiBJbmR1c3RyeSBDby4sTHRkLgotCQkJCU5vIDIyNCBTaGFuZGEgUm9hZAotCQkJCUppbmFuIFNoYW5kb25nIDI1MDAxMwotCQkJCUNISU5BCi0KLTZDLTlCLTAyICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi02QzlCMDIgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotNkMtOUMtRTkgICAoaGV4KQkJTmltYmxlIFN0b3JhZ2UKLTZDOUNFOSAgICAgKGJhc2UgMTYpCQlOaW1ibGUgU3RvcmFnZQotCQkJCTI2NDUgWmFua2VyIFJvYWQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtQTktMDYgICAoaGV4KQkJVGVsZWZpZWxkIEx0ZAotNkNBOTA2ICAgICAoYmFzZSAxNikJCVRlbGVmaWVsZCBMdGQKLQkJCQlGbGF0IEQsMi9GLiwgVmFsaWFudCBJbmR1c3RyaWFsIENlbnRyZSwyLTEyIEF1IFB1aSBXYW4gU3RyZWV0LCAKLQkJCQlGbyBUYW4sIE4uVC4KLQkJCQlIb25na29uZyAgODUyCi0JCQkJQ0hJTkEKLQotNkMtQUItNEQgICAoaGV4KQkJRGlnaXRhbCBQYXltZW50IFRlY2hub2xvZ2llcwotNkNBQjREICAgICAoYmFzZSAxNikJCURpZ2l0YWwgUGF5bWVudCBUZWNobm9sb2dpZXMKLQkJCQk0MTA1IEdyYW5kdmlldyBId3kKLQkJCQlCdXJuYWJ5IEJDIFY1QyA2QjQKLQkJCQlDQU5BREEKLQotNkMtQUMtNjAgICAoaGV4KQkJVmVuZXRleCBDb3JwCi02Q0FDNjAgICAgIChiYXNlIDE2KQkJVmVuZXRleCBDb3JwCi0JCQkJOC0zLTksU2hpbi1tYWNoaQotCQkJCU9tZS1zaGksIFRva3lvIDE5OC0wMDI0Ci0JCQkJSkFQQU4KLQotNkMtQUQtM0YgICAoaGV4KQkJSHViYmVsbCBCdWlsZGluZyBBdXRvbWF0aW9uLCBJbmMuCi02Q0FEM0YgICAgIChiYXNlIDE2KQkJSHViYmVsbCBCdWlsZGluZyBBdXRvbWF0aW9uLCBJbmMuCi0JCQkJOTYwMSBEZXNzYXUgUmQKLQkJCQlCbGRnIDEgU3VpdGUgMTAwCi0JCQkJQXVzdGluIFRleGFzIDc4NzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02Qy1CRS1FOSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudC1JUEQKLTZDQkVFOSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudC1JUEQKLQkJCQk3NzcgTWlkZGxlZmllbGQgUmQuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtRDYtOEEgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MgSW5jCi02Q0Q2OEEgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MgSW5jCi0JCQkJNjAtMzksR2FzYW4tZG9uZyxHdW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTZDLURDLTZBICAgKGhleCkJCVByb21ldGhlYW4gTGltaXRlZAotNkNEQzZBICAgICAoYmFzZSAxNikJCVByb21ldGhlYW4gTGltaXRlZAotCQkJCUFjdGl2bGFiCi0JCQkJUGhpbGlwcyBSb2FkCi0JCQkJQmxhY2tidXJuIExhbmNhc2hpcmUgQkIxIDVTTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTZDLUUwLUIwICAgKGhleCkJCVNPVU5ENAotNkNFMEIwICAgICAoYmFzZSAxNikJCVNPVU5ENAotCQkJCTExIHF1YWkgSm9zZXBoIEdpbGxldAotCQkJCUxZT04gIDY5MDA0Ci0JCQkJRlJBTkNFCi0KLTZDLUYwLTQ5ICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi02Q0YwNDkgICAgIChiYXNlIDE2KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlOby4yMTUsTmFuLVBpbmcgUm9hZCwKLQkJCQlQaW4tSmVuIFRhb3l1YW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02Qy1GRC1COSAgIChoZXgpCQlQcm93YXJlIFRlY2hub2xvZ2llcyBDbyBMdGQuCi02Q0ZEQjkgICAgIChiYXNlIDE2KQkJUHJvd2FyZSBUZWNobm9sb2dpZXMgQ28gTHRkLgotCQkJCTJuZCBGMSBFYXN0IFdpbmcsU291dGggU2VjdGlvbixGYWN0b3J5IEJ1aWxkaW5nIDI0LFNjaWVuY2UmVGVjaG5vbG9neSBQYXJrCi0JCQkJU2hlbm5hbiBSZCxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTZDLUZGLUJFICAgKGhleCkJCU1QQiBDb21tdW5pY2F0aW9ucyBJbmMuCi02Q0ZGQkUgICAgIChiYXNlIDE2KQkJTVBCIENvbW11bmljYXRpb25zIEluYy4KLQkJCQkxNDcgSHltdXMgQmx2ZAotCQkJCVBvaW50ZS1DbGFpcmUgUXVlYmVjIEg5UiAxRTkKLQkJCQlDQU5BREEKLQotNzAtMDItNTggICAoaGV4KQkJMDFEQi1NRVRSQVZJQgotNzAwMjU4ICAgICAoYmFzZSAxNikJCTAxREItTUVUUkFWSUIKLQkJCQkyMDAgQ0hFTUlOIERFUyBPUk1FQVVYCi0JCQkJTElNT05FU1QgQ0VERVggUkhPTkUgNjk1NzgKLQkJCQlGUkFOQ0UKLQotNzAtMTQtMDQgICAoaGV4KQkJTGltaXRlZCBMaWFiaWxpdHkgQ29tcGFueSAiUmVzZWFyY2ggQ2VudGVyICJCcmVzbGVyIgotNzAxNDA0ICAgICAoYmFzZSAxNikJCUxpbWl0ZWQgTGlhYmlsaXR5IENvbXBhbnkgIlJlc2VhcmNoIENlbnRlciAiQnJlc2xlciIKLQkJCQlJLllha292bGV2YSBTdC4sIDEKLQkJCQlDaGVib2tzYXJ5IENodXZhc2ggUmVwdWJsaWMgIDQyODAwMwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi03MC0xQS0wNCAgIChoZXgpCQlMaXRlb24gVGVjaCBDb3JwLgotNzAxQTA0ICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNoIENvcnAuCi0JCQkJNEYgOTAgQ2hpZW4gMSBSZC5DaHVuZ0hvCi0JCQkJVGFpcGVpICAyMzU4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNzAtMUEtRUQgICAoaGV4KQkJQURWQVMgQ08uLCBMVEQuCi03MDFBRUQgICAgIChiYXNlIDE2KQkJQURWQVMgQ08uLCBMVEQuCi0JCQkJMy04LTggU2hpbi15b2tvaGFtYSwgS29ob2t1LWt1Ci0JCQkJTmlzc291IDE2QmxkZy4gNkYKLQkJCQlZb2tvaGFtYS1zaGkgS2FuYWdhd2Eta2VuIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotNzAtMkItMUQgICAoaGV4KQkJRS1Eb211cyBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTcwMkIxRCAgICAgKGJhc2UgMTYpCQlFLURvbXVzIEludGVybmF0aW9uYWwgTGltaXRlZAotCQkJCTFzdCBGbG9vcgotCQkJCTUgQm91cmxldCBDbG9zZQotCQkJCUxvbmRvbiAgVzFXIDdCTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTcwLTJGLTk3ICAgKGhleCkJCUFhdmEgTW9iaWxlIE95Ci03MDJGOTcgICAgIChiYXNlIDE2KQkJQWF2YSBNb2JpbGUgT3kKLQkJCQlOYWhrYXRlaHRhYW5rYXR1IDIKLQkJCQlPdWx1ICA5MDEwMAotCQkJCUZJTkxBTkQKLQotNzAtMzItRDUgICAoaGV4KQkJQXRoZW5hIFdpcmVsZXNzIENvbW11bmljYXRpb25zIEluYwotNzAzMkQ1ICAgICAoYmFzZSAxNikJCUF0aGVuYSBXaXJlbGVzcyBDb21tdW5pY2F0aW9ucyBJbmMKLQkJCQkxMjQyNSBXIEJlbGwgUmQKLQkJCQlTdWl0ZSAxMTAKLQkJCQlTdXJwcmlzZSBBWiA4NTM3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtM0EtRDggICAoaGV4KQkJU2hlbnpoZW4gQWZvdW5kcnkgRWxlY3Ryb25pYyBDby4sIEx0ZAotNzAzQUQ4ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEFmb3VuZHJ5IEVsZWN0cm9uaWMgQ28uLCBMdGQKLQkJCQkyMDEsIEEgQnVpbGRpbmcsIEJvbGUgSW5kdXN0cmlhbCBab25lLCBCYW50aWFuLCBMb25nZ2FuZyBEaXN0cmljdAotCQkJCU5vIyA5MDYsIDIgQnVpbGRpbmcsIFhpbmNoZW5nIFBsYXphLCBGdWh1YW4gUkQtMywgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gIEd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi03MC0zQy0zOSAgIChoZXgpCQlTRUFXSU5HIEtmdAotNzAzQzM5ICAgICAoYmFzZSAxNikJCVNFQVdJTkcgS2Z0Ci0JCQkJQnVkYWkgdXQgMTM5LgotCQkJCVN6ZWtlc2ZlaGVydmFyIEZlamVyIDgwMDAKLQkJCQlIVU5HQVJZCi0KLTcwLTRBLUFFICAgKGhleCkJCVhzdHJlYW0gRmxvdyAoUHR5KSBMdGQKLTcwNEFBRSAgICAgKGJhc2UgMTYpCQlYc3RyZWFtIEZsb3cgKFB0eSkgTHRkCi0JCQkJUm9vbSAxMjMsIEJ1aWxkaW5nIDE2LCBDU0lSIGNhbXB1cwotCQkJCU1laXJpbmcgTmF1ZGUgcm9hZAotCQkJCVByZXRvcmlhIEdhdXRlbmcgMDE4NAotCQkJCVNPVVRIIEFGUklDQQotCi03MC01OC0xMiAgIChoZXgpCQlQYW5hc29uaWMgQVZDIE5ldHdvcmtzIENvbXBhbnkKLTcwNTgxMiAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgQVZDIE5ldHdvcmtzIENvbXBhbnkKLQkJCQkxLTE1IE1hdHN1by1jaG8KLQkJCQlLYWRvbWEgT3Nha2EgNTcxLTg1MDQKLQkJCQlKQVBBTgotCi03MC01QS1CNiAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELiAKLTcwNUFCNiAgICAgKGJhc2UgMTYpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELiAKLQkJCQlOTy4gMjUsIFRIRSAzUkQgU3RyZWV0IEtVTlNIQU4gRVhQT1JUIFBST0NFU1NJTkcgWk9ORSAKLQkJCQlLVU5TSEFOIFNVWkhPVSAyMTUzMDAgCi0JCQkJQ0hJTkEKLQotNzAtNUMtQUQgICAoaGV4KQkJS29uYW1pIEdhbWluZyBJbmMKLTcwNUNBRCAgICAgKGJhc2UgMTYpCQlLb25hbWkgR2FtaW5nIEluYwotCQkJCTU4NSBUcmFkZSBDZW50ZXIgRHJpdmUKLQkJCQlMYXMgVmVnYXMgTmV2YWRhIDg5MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC01RS1BQSAgIChoZXgpCQlBY3Rpb24gVGFyZ2V0LCBJbmMuCi03MDVFQUEgICAgIChiYXNlIDE2KQkJQWN0aW9uIFRhcmdldCwgSW5jLgotCQkJCVBPIEJveCA2MzYKLQkJCQlQcm92byBVVCA4NDYwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtNjQtMTcgICAoaGV4KQkJT1JCSVMgVEVDTk9MT0dJQSBFTEVDVFJJQ0EgUy5BLgotNzA2NDE3ICAgICAoYmFzZSAxNikJCU9SQklTIFRFQ05PTE9HSUEgRUxFQ1RSSUNBIFMuQS4KLQkJCQlMZXJpZGEsIDYxCi0JCQkJTWFkcmlkIE1hZHJpZCBFMjgwMjAKLQkJCQlTUEFJTgotCi03MC02NS04MiAgIChoZXgpCQlTdXpob3UgSGFubWluZyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi03MDY1ODIgICAgIChiYXNlIDE2KQkJU3V6aG91IEhhbm1pbmcgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCVN1aXRlIDQwNywgTm8uIDE2NiwgUmVuIEFpIFJvYWQKLQkJCQlTdXpob3UgSW5kdXN0cmlhbCBQYXJrCi0JCQkJU3V6aG91IEppYW5nc3UgMjE1MTIzCi0JCQkJQ0hJTkEKLQotNzAtNzEtQkMgICAoaGV4KQkJUEVHQVRST04gQ09SUE9SQVRJT04KLTcwNzFCQyAgICAgKGJhc2UgMTYpCQlQRUdBVFJPTiBDT1JQT1JBVElPTgotCQkJCU5vLiA3NiwgTGlnb25nIFN0LiwgQmVpdG91LCAKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNzAtNzItQ0YgICAoaGV4KQkJRWRnZUNvcmUgTmV0d29ya3MKLTcwNzJDRiAgICAgKGJhc2UgMTYpCQlFZGdlQ29yZSBOZXR3b3JrcwotCQkJCTIwIE1hc29uCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC03Ni1GMCAgIChoZXgpCQlMZXZlbE9uZSBDb21tdW5pY2F0aW9ucyAoSW5kaWEpIFByaXZhdGUgTGltaXRlZAotNzA3NkYwICAgICAoYmFzZSAxNikJCUxldmVsT25lIENvbW11bmljYXRpb25zIChJbmRpYSkgUHJpdmF0ZSBMaW1pdGVkCi0JCQkJMkYsIExhbmUgMSwgNDUgQmhhcmF0IE5hZ2FyCi0JCQkJTmV3IEZyaWVuZHMgQ29sb255Ci0JCQkJTmV3IERlbGhpIERFTEhJIDExMDAyNQotCQkJCUlORElBCi0KLTcwLTdFLTQzICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi03MDdFNDMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC03RS1ERSAgIChoZXgpCQlOQVNURUMgTFRELgotNzA3RURFICAgICAoYmFzZSAxNikJCU5BU1RFQyBMVEQuCi0JCQkJMTExLUQsIEtyYXNub3JlY2hlbnNrYXlhIHN0ci4KLQkJCQlLaGFiYXJvdnNrICA2ODAwMDYKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotNzAtODItOEUgICAoaGV4KQkJT2xldW1UZWNoIENvcnBvcmF0aW9uCi03MDgyOEUgICAgIChiYXNlIDE2KQkJT2xldW1UZWNoIENvcnBvcmF0aW9uCi0JCQkJMjMgSHViYmxlCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC04Qi03OCAgIChoZXgpCQljaXR5Z3JvdyB0ZWNobm9sb2d5IGNvLiwgbHRkCi03MDhCNzggICAgIChiYXNlIDE2KQkJY2l0eWdyb3cgdGVjaG5vbG9neSBjby4sIGx0ZAotCQkJCXJtMTQwNCwgYmxrIEEsICw1IC0gMjEgUGFrIFRpbiBQYXIgU3RyZWV0Ci0JCQkJSGktVGVjaCBJbmR1c3RyaWFsIENlbnRyZSwKLQkJCQlUc3VlbiBXYW4gIAotCQkJCUhPTkcgS09ORwotCi03MC1BMS05MSAgIChoZXgpCQlUcmVuZHNldHRlciBNZWRpY2FsLCBMTEMKLTcwQTE5MSAgICAgKGJhc2UgMTYpCQlUcmVuZHNldHRlciBNZWRpY2FsLCBMTEMKLQkJCQkyMDMwIEFyZG1vcmUgQkxWRAotCQkJCVNURSAzODAKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC1BNC0xQyAgIChoZXgpCQlBZHZhbmNlZCBXaXJlbGVzcyBEeW5hbWljcyBTLkwuCi03MEE0MUMgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgV2lyZWxlc3MgRHluYW1pY3MgUy5MLgotCQkJCUNlbnRybyBkZSBFbXByZXNhcyBVUE0gb2ZpY2luYSAzCi0JCQkJQ2FtcHVzIFVQTSBNb250ZWdhbmNlZG8KLQkJCQlQb3p1ZWxvIGRlIEFsYXJjb24gTWFkcmlkIDI4MjIzCi0JCQkJU1BBSU4KLQotNzAtQjAtMzUgICAoaGV4KQkJU2hlbnpoZW4gWm93ZWUgVGVjaG5vbG9neSBDby4sIEx0ZAotNzBCMDM1ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFpvd2VlIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlCbG9jayA1LCBTY2llbmNlIGFuZCBUZWNobm9sb2d5IEluZHVzdHJpYWwgCi0JCQkJUGFyayBvZiBQcml2YXRlbHkgT3duZWQgRW50ZXJwcmlzZXMsIFBpbmdzaGFuLCBYaWxpLCBOYW5zaGFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NQotCQkJCUNISU5BCi0KLTcwLUIwLThDICAgKGhleCkJCVNoZW5vdSBDb21tdW5pY2F0aW9uIEVxdWlwbWVudCBDby4sTHRkCi03MEIwOEMgICAgIChiYXNlIDE2KQkJU2hlbm91IENvbW11bmljYXRpb24gRXF1aXBtZW50IENvLixMdGQKLQkJCQlOby4xMTggTWlkZGxlIEp1Z3VhbmcgUm9hZCwgSGlnaCAmYW1wOyBOZXcgSW5kdXN0cmlhbCBab25lCi0JCQkJV2VuemhvdSBaaGVqaWFuZyAzMjUwMjkKLQkJCQlDSElOQQotCi03MC1CMi02NSAgIChoZXgpCQlIaWx0cm9uIHMuci5sLgotNzBCMjY1ICAgICAoYmFzZSAxNikJCUhpbHRyb24gcy5yLmwuCi0JCQkJU3RyYWRhIFByb3ZpbmNpYWxlIGRpIENhc2VydGEsIDIxOAotCQkJCU5hcGxlcyAgODAxNDQKLQkJCQlJVEFMWQotCi03MC1COS0yMSAgIChoZXgpCQlGaWJlckhvbWUgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENPLixMVEQKLTcwQjkyMSAgICAgKGJhc2UgMTYpCQlGaWJlckhvbWUgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENPLixMVEQKLQkJCQlOby41IERvbmd4aW4gUm9hZCxIb25nc2hhbiBEaXN0cmljdAotCQkJCVd1aGFuIEh1YmVpIDQzMDA3NAotCQkJCUNISU5BCi0KLTcwLUNELTYwICAgKGhleCkJCUFwcGxlIEluYwotNzBDRDYwICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLUQ0LUYyICAgKGhleCkJCVJJTQotNzBENEYyICAgICAoYmFzZSAxNikJCVJJTQotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi03MC1ENS03RSAgIChoZXgpCQlTY2FsYXIgQ29ycG9yYXRpb24KLTcwRDU3RSAgICAgKGJhc2UgMTYpCQlTY2FsYXIgQ29ycG9yYXRpb24KLQkJCQkxRiBTYW4tRWkgQmxkZwotCQkJCTEtMjItMgotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2MC0wMDIzCi0JCQkJSkFQQU4KLQotNzAtRDUtRTcgICAoaGV4KQkJV2VsbGNvcmUgQ29ycG9yYXRpb24KLTcwRDVFNyAgICAgKGJhc2UgMTYpCQlXZWxsY29yZSBDb3Jwb3JhdGlvbgotCQkJCTI4NzAgWmFua2VyIFJvYWQKLQkJCQlTdWl0ZSAxMzAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtRDgtODAgICAoaGV4KQkJVXBvcyBTeXN0ZW0gc3AuIHogby5vLgotNzBEODgwICAgICAoYmFzZSAxNikJCVVwb3MgU3lzdGVtIHNwLiB6IG8uby4KLQkJCQlTaWVua2lld2ljemEgMTMKLQkJCQlLbnVyb3cgU2xhc2tpZSA0NC0xOTAKLQkJCQlQT0xBTkQKLQotNzAtREQtQTEgICAoaGV4KQkJVGVsbGFicwotNzBEREExICAgICAoYmFzZSAxNikJCVRlbGxhYnMKLQkJCQlPbmUgVGVsbGFicyBDZW50ZXIKLQkJCQkxNDE1IFdlc3QgRGllaGwgUm9hZAotCQkJCU5hcGVydmlsbGUgSWxsaW5vaXMgNjA1NjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLUUxLTM5ICAgKGhleCkJCTN2aWV3IEx0ZAotNzBFMTM5ICAgICAoYmFzZSAxNikJCTN2aWV3IEx0ZAotCQkJCTE2OC0xNzIgT2xkIFN0cmVldAotCQkJCUxvbmRvbiAgRUMxViA5QlAKLQkJCQlVTklURUQgS0lOR0RPTQotCi03MC1FOC00MyAgIChoZXgpCQlCZWlqaW5nIEMmVyBPcHRpY2FsIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sTHRkLgotNzBFODQzICAgICAoYmFzZSAxNikJCUJlaWppbmcgQyZXIE9wdGljYWwgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJMi9GIFl1ZmEgUGxhemEsIE5vLjE5IFhpYW95aW5nIEJlaWx1LCBDaGFveWFuZyBEaXN0cmljdCwgCi0JCQkJQmVpamluZyAgMTAwMTAxCi0JCQkJQ0hJTkEKLQotNzAtRjEtQTEgICAoaGV4KQkJTGl0ZW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTcwRjFBMSAgICAgKGJhc2UgMTYpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLDkwLENoaWVuIDEgUm9hZCxDaHVuZ0hvLFRhaXBlaSBIc2llbgotCQkJCVRhaXBlaSAgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTcwLUYzLTk1ICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotNzBGMzk1ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTEFORSAzNTEsIFNFQy4xLFRBSVBJTkcgUkQuCi0JCQkJVFNBT1RVRU4KLQkJCQlOQU5UT1UgNTQyNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTc0LTBBLUJDICAgKGhleCkJCUpTSlMgRGVzaWducyAoRXVyb3BlKSBMaW1pdGVkCi03NDBBQkMgICAgIChiYXNlIDE2KQkJSlNKUyBEZXNpZ25zIChFdXJvcGUpIExpbWl0ZWQKLQkJCQlFemVraWVsIEhvdXNlCi0JCQkJRXpla2llbCBMYW5lCi0JCQkJV2lsbGVuaGFsbCBXZXN0IE1pZGxhbmRzIFdWMTIgNVFVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNzQtMTUtRTIgICAoaGV4KQkJVHJpLVNlbiBTeXN0ZW1zIENvcnBvcmF0aW9uCi03NDE1RTIgICAgIChiYXNlIDE2KQkJVHJpLVNlbiBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJMTc2MjUgRWwgQ2FtaW5vIFJlYWwgU3VpdGUgMjAwCi0JCQkJSG91c3RvbiBUWCA3NzA1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtMkYtNjggICAoaGV4KQkJQXp1cmV3YXZlIFRlY2hub2xvZ2llcywgSW5jLgotNzQyRjY4ICAgICAoYmFzZSAxNikJCUF6dXJld2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4Ri4sIEJhb3pob25nIFJkLgotCQkJCVhpbmRpYW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNzQtMzItNTYgICAoaGV4KQkJTlQtd2FyZSBTeXN0ZW1wcmcgR21iSAotNzQzMjU2ICAgICAoYmFzZSAxNikJCU5ULXdhcmUgU3lzdGVtcHJnIEdtYkgKLQkJCQlOaWVkZXJzYWNoc2Vuc3RyYXNzZSA2Ci0JCQkJQmFkIElidXJnIE5EUyA0OTE4NgotCQkJCUdFUk1BTlkKLQotNzQtMzgtODkgICAoaGV4KQkJQU5OQVggQW56ZWlnZXN5c3RlbWUgR21iSAotNzQzODg5ICAgICAoYmFzZSAxNikJCUFOTkFYIEFuemVpZ2VzeXN0ZW1lIEdtYkgKLQkJCQlXZXR0ZXJzdGVpbnN0cmFzc2UgMTgKLQkJCQlUYXVma2lyY2hlbiBCYXZhcmlhIDgyMDI0Ci0JCQkJR0VSTUFOWQotCi03NC01Ni0xMiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotNzQ1NjEyICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtNUUtMUMgICAoaGV4KQkJUElPTkVFUiBDT1JQT1JBVElPTgotNzQ1RTFDICAgICAoYmFzZSAxNikJCVBJT05FRVIgQ09SUE9SQVRJT04KLQkJCQkxLTEgU2hpbi1vZ3VyYQotCQkJCVNhaXdhaS1rdQotCQkJCUthd2FzYWtpLXNoaSBLYW5hZ2F3YSBQcmVmZWN0dXJlIDIxMjAwMzEKLQkJCQlKQVBBTgotCi03NC02NS1EMSAgIChoZXgpCQlBdGxpbmtzCi03NDY1RDEgICAgIChiYXNlIDE2KQkJQXRsaW5rcwotCQkJCTMwIEF2ZW51ZSBHZXJvZ2UgVgotCQkJCVBhcmlzICA3NTAwOAotCQkJCUZSQU5DRQotCi03NC02Qi04MiAgIChoZXgpCQlNT1ZFSyAKLTc0NkI4MiAgICAgKGJhc2UgMTYpCQlNT1ZFSyAKLQkJCQk2NTE3IE5hdmFobyBUcmFpbAotCQkJCUVkaW5hIE1pbm5lc290YSA1NTQzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtNzItRjIgICAoaGV4KQkJQ2hpcHNpcCBUZWNobm9sb2d5IENvLiwgTHRkLgotNzQ3MkYyICAgICAoYmFzZSAxNikJCUNoaXBzaXAgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk4Ri0xLCBOby4xODYsIEppYW4tWWkgUm9hZCwgQ2h1bmdIbyBDaXR5LAotCQkJCVRhaXBlaSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03NC03OC0xOCAgIChoZXgpCQlTZXJ2aWNlQXNzdXJlCi03NDc4MTggICAgIChiYXNlIDE2KQkJU2VydmljZUFzc3VyZQotCQkJCUdyb3VuZCBGbG9vciwgQmxvY2sgUCwgQ3J5c3RhbCBQYXJrIE9uZQotCQkJCTI0OSBCYXNkZW4gQXZlbnVlLCBMeXR0ZWx0b24KLQkJCQlDZW50dXJpb24gVHNod2FuZSAwMTU3Ci0JCQkJU09VVEggQUZSSUNBCi0KLTc0LTdELUI2ICAgKGhleCkJCUFsaXdlaSBDb21tdW5pY2F0aW9ucywgSW5jCi03NDdEQjYgICAgIChiYXNlIDE2KQkJQWxpd2VpIENvbW11bmljYXRpb25zLCBJbmMKLQkJCQlLZWppIDYgUm9hZCAsIEhpLXRlY2ggSW5kdXN0cmlhbCBQYXJrICAKLQkJCQlOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTc0LTdFLTFBICAgKGhleCkJCVJlZCBFbWJlZGRlZCBEZXNpZ24gTGltaXRlZAotNzQ3RTFBICAgICAoYmFzZSAxNikJCVJlZCBFbWJlZGRlZCBEZXNpZ24gTGltaXRlZAotCQkJCVZlbG9jaXR5Ci0JCQkJQW5nZWwgV2F5Ci0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQ3IDFCWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTc0LThFLUY4ICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotNzQ4RUY4ICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTE3NDUgVGVjaG5vbG9neSBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC05MC01MCAgIChoZXgpCQlSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCi03NDkwNTAgICAgIChiYXNlIDE2KQkJUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgotCQkJCTE3NTMsIFNoaW1vbnVtYWJlLCBOYWthaGFyYS1LdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMS04NjY4Ci0JCQkJSkFQQU4KLQotNzQtOTEtMUEgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi03NDkxMUEgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtQTQtQTcgICAoaGV4KQkJUVJTIE11c2ljIFRlY2hub2xvZ2llcywgSW5jLgotNzRBNEE3ICAgICAoYmFzZSAxNikJCVFSUyBNdXNpYyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyNjkgUXVha2VyIERyaXZlCi0JCQkJU2VuZWNhIFBBIDE2MzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC1BNy0yMiAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotNzRBNzIyICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAzLTM5ICwgS2FzYW4tZG9uZywgR3VtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03NC1CMC0wQyAgIChoZXgpCQlOZXR3b3JrIFZpZGVvIFRlY2hub2xvZ2llcywgSW5jCi03NEIwMEMgICAgIChiYXNlIDE2KQkJTmV0d29yayBWaWRlbyBUZWNobm9sb2dpZXMsIEluYwotCQkJCTQwMDUgQm9oYW5ub24gRHJpdmUKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC1COS1FQiAgIChoZXgpCQlGdWppYW4gR29sZGNhdCBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTc0QjlFQiAgICAgKGJhc2UgMTYpCQlGdWppYW4gR29sZGNhdCBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlSb29tIDUwNiBZb25nSGVuZyBCdWlsZGluZyBOTy41OCBKaWFuZ0JpbmcgUmFvZAotCQkJCUZ1WmhvdSBGdUppYW4gMzUwMDA1Ci0JCQkJQ0hJTkEKLQotNzQtQkUtMDggICAoaGV4KQkJUFJJVkFURQotNzRCRTA4ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi03NC1DRC0wQyAgIChoZXgpCQlTbWl0aCBNeWVycyBDb21tdW5pY2F0aW9ucyBMdGQuCi03NENEMEMgICAgIChiYXNlIDE2KQkJU21pdGggTXllcnMgQ29tbXVuaWNhdGlvbnMgTHRkLgotCQkJCVRoZSBPbWVnYSBDZW50cmUKLQkJCQlTdHJhdHRvbiBCdXNpbmVzcyBQYXJrCi0JCQkJQmlnZ2xlc3dhZGUgQkVEUyBTRzE4IDhRQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTc0LUNFLTU2ICAgKGhleCkJCVBhY2tldCBGb3JjZSBUZWNobm9sb2d5IExpbWl0ZWQgQ29tcGFueQotNzRDRTU2ICAgICAoYmFzZSAxNikJCVBhY2tldCBGb3JjZSBUZWNobm9sb2d5IExpbWl0ZWQgQ29tcGFueQotCQkJCSAyRi4sIE5vLjI1LCBTZWMuIDEsIFNodWFuZ3NoaSBSZC4sIENlbnRyYWwgRGlzdC4sIAotCQkJCVRhaWNodW5nICA0MDA0NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNzQtRDAtREMgICAoaGV4KQkJRVJJQ1NTT04gQUIKLTc0RDBEQyAgICAgKGJhc2UgMTYpCQlFUklDU1NPTiBBQgotCQkJCVRvcnNoYW1uc2dhdGFuIDM2Ci0JCQkJU1RPQ0tIT0xNICAxNjQgODMgCi0JCQkJU1dFREVOCi0KLTc0LUQ2LTc1ICAgKGhleCkJCVdZTUEgVGVjbm9sb2dpYQotNzRENjc1ICAgICAoYmFzZSAxNikJCVdZTUEgVGVjbm9sb2dpYQotCQkJCVJ1YSBDbGk/b2VtYWNvIEJhcmJvc2EsIDE3MS0xNzkKLQkJCQlDYW1idWNpCi0JCQkJU2k/b2VvIFBhdWxvICAwMTUyMy0wMDAKLQkJCQlCUkFaSUwKLQotNzQtRDgtNTAgICAoaGV4KQkJRXZyaXNrbyBTeXN0ZW1zCi03NEQ4NTAgICAgIChiYXNlIDE2KQkJRXZyaXNrbyBTeXN0ZW1zCi0JCQkJMjMyMiBBbHBpbmUgUmQsIFN0ZSAxMAotCQkJCUVhdSBDbGFpcmUgV0kgNTQ3MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc0LUUwLTZFICAgKGhleCkJCUVyZ29waG9uZSBHbWJICi03NEUwNkUgICAgIChiYXNlIDE2KQkJRXJnb3Bob25lIEdtYkgKLQkJCQlUZW1tbGVyc3RyYXNzZSA1Ci0JCQkJTWFyYnVyZyBIZXNzZW4gMzUwMzkKLQkJCQlHRVJNQU5ZCi0KLTc0LUU1LTBCICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotNzRFNTBCICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotNzQtRTUtMzcgICAoaGV4KQkJUkFEU1BJTgotNzRFNTM3ICAgICAoYmFzZSAxNikJCVJBRFNQSU4KLQkJCQlTb25ncGEtZ3UgR2FyYWstZG9uZyA3OAotCQkJCUlUIFZlbnR1cmUgVG93ZXIgV2VzdCBXaW5nIDEydGggRmwuCi0JCQkJU2VvdWwgIDEzOC05NTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNzQtRTctQzYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTc0RTdDNiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc0LUVBLTNBICAgKGhleCkJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLixMdGQuCi03NEVBM0EgICAgIChiYXNlIDE2KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLQkJCQlCdWlsZGluZyA3LCBTZWNvbmQgUGFydCwgSG9uZ2h1YWxpbmcgSW5kdXN0cmlhbCBab25lCi0JCQkJWGlsaSxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTc0LUYwLTZEICAgKGhleCkJCUF6dXJlV2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLTc0RjA2RCAgICAgKGJhc2UgMTYpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJOEYuLCBCYW96aG9uZyBSZC4sIAotCQkJCVhpbmRpYW4gQ2l0eSwgVGFpcGVpIENvdW50eS4gIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNzQtRjAtN0QgICAoaGV4KQkJQm5DT00gQ28uLEx0ZAotNzRGMDdEICAgICAoYmFzZSAxNikJCUJuQ09NIENvLixMdGQKLQkJCQlSb29tMTAwNywgRGFlaHl1biBUZWNobm8gV29ybGQsIDE3NAotCQkJCU9qZW9uLWRvbmcsIAotCQkJCVVpd2FuZy1zaSBHeWVvbmdnaS1kbyA0MzctNzUzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTc0LUY2LTEyICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi03NEY2MTIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC1GNy0yNiAgIChoZXgpCQlOZXVyb24gUm9ib3RpY3MKLTc0RjcyNiAgICAgKGJhc2UgMTYpCQlOZXVyb24gUm9ib3RpY3MKLQkJCQk5MSBQZWFyc29uIEF2ZQotCQkJCVVuaXQgMgotCQkJCVNvbWVydmlsbGUgTUEgMDIxNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LTAyLThGICAgKGhleCkJCUFkYXB0aXZlIFNwZWN0cnVtIGFuZCBTaWduYWwgQWxpZ25tZW50IChBU1NJQSksIEluYy4KLTc4MDI4RiAgICAgKGJhc2UgMTYpCQlBZGFwdGl2ZSBTcGVjdHJ1bSBhbmQgU2lnbmFsIEFsaWdubWVudCAoQVNTSUEpLCBJbmMuCi0JCQkJMzMzIFR3aW4gRG9scGhpbiBEcml2ZQotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtMTEtODUgICAoaGV4KQkJTkJTIFBheW1lbnQgU29sdXRpb25zIEluYy4KLTc4MTE4NSAgICAgKGJhc2UgMTYpCQlOQlMgUGF5bWVudCBTb2x1dGlvbnMgSW5jLgotCQkJCTcwMyBFdmFucyBBdmUKLQkJCQlTdWl0ZSA0MDAKLQkJCQlUb3JvbnRvIE9udGFyaW8gTTlDIDVFOQotCQkJCUNBTkFEQQotCi03OC0xMi1COCAgIChoZXgpCQlPUkFOVEVLIExJTUlURUQKLTc4MTJCOCAgICAgKGJhc2UgMTYpCQlPUkFOVEVLIExJTUlURUQKLQkJCQk1L0YsIEJ1aWxkaW5nIEUsIERha2FuIFRlY2ggUGFyaywgRGFrYW4gdmlsbGFnZSwgWGlsaSBUb3duLCBOYW5zaGFuIERpc3RyaWN0LCBTaGVuemhlbiwgQ2hpbmEKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotNzgtMTktMkUgICAoaGV4KQkJTkFTQ0VOVCBUZWNobm9sb2d5Ci03ODE5MkUgICAgIChiYXNlIDE2KQkJTkFTQ0VOVCBUZWNobm9sb2d5Ci0JCQkJMjc0NCBZb3JrbW9udCBSRAotCQkJCUNoYXJsb3R0ZSBOQyAyODIwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtMTktRjcgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotNzgxOUY3ICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtMUQtQkEgICAoaGV4KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi03ODFEQkEgICAgIChiYXNlIDE2KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0JCQkJSFVBV0VJIEluZHVzdHJpYWwgQmFzZSBCYW50aWFuLExvbmdnYW5nCi0JCQkJU2hlbnpoZW4gZ3Vhbmdkb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTc4LTFELUZEICAgKGhleCkJCUphYmlsIEluYwotNzgxREZEICAgICAoYmFzZSAxNikJCUphYmlsIEluYwotCQkJCTEwNTAwIERyLiBNYXJ0aW4gTHV0aGVyIEtpbmcgSnIuIFN0LiBOLgotCQkJCURvY2sgQwotCQkJCVN0LiBQZXRlcnNidXJnIEZsb3JpZGEgMzM3MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LTIyLTNEICAgKGhleCkJCUFmZmlybWVkIE5ldHdvcmtzCi03ODIyM0QgICAgIChiYXNlIDE2KQkJQWZmaXJtZWQgTmV0d29ya3MKLQkJCQkzNSBOYWdvZyBQYXJrCi0JCQkJQWN0b24gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LTI1LUFEICAgKGhleCkJCVNBTVNVTkcgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi03ODI1QUQgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQk0MTYsIE1BRVRBTi0zRE9ORywgUEFMREFMLUdVCi0JCQkJU1VXT04gQ0lUWSBLWVVOR0tJLURPIDQ0Mi03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNzgtMkItQ0IgICAoaGV4KQkJRGVsbCBJbmMKLTc4MkJDQiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVM6UlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtMkUtRUYgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTc4MkVFRiAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1ICA5MDIzMAotCQkJCUZJTkxBTkQKLQotNzgtMzAtRTEgICAoaGV4KQkJVWx0cmFDbGVueiwgTExDCi03ODMwRTEgICAgIChiYXNlIDE2KQkJVWx0cmFDbGVueiwgTExDCi0JCQkJMTQ0MCBXIEluZGlhbnRvd24gUm9hZAotCQkJCVN1aXRlIDM1MAotCQkJCUp1cGl0ZXIgRkwgMzM0NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LTNGLTE1ICAgKGhleCkJCUVhc3lTWU5DIEx0ZC4KLTc4M0YxNSAgICAgKGJhc2UgMTYpCQlFYXN5U1lOQyBMdGQuCi0JCQkJVW5pdCAxLCAyIFNlYXdhcmQgUGxhY2UKLQkJCQlDZW50dXJpb24gQnVzaW5lc3MgUGFyawotCQkJCUdsYXNnb3cgU2NvdGxhbmQgRzQxIDFISAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTc4LTQ0LTc2ICAgKGhleCkJCVppb25jb20gdGVjaG5vbG9neSBjby4sbHRkCi03ODQ0NzYgICAgIChiYXNlIDE2KQkJWmlvbmNvbSB0ZWNobm9sb2d5IGNvLixsdGQKLQkJCQlBMSZBMiBidWlsZGluZyxsYW50aWFuIHRlY2hub2xvZ3kgcGFyaywgeGlueXUgcm9hZCwgeGluZ3FpYW8gaGVuZ2dhbmcgYmxvY2ssIHNoYWppbmcgc3RyZWV0LCBCYW9hbiBEaXN0cmljdAotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi03OC00Ny0xRCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTc4NDcxRCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNzgtNTEtMEMgICAoaGV4KQkJTGl2ZVUgTHRkLgotNzg1MTBDICAgICAoYmFzZSAxNikJCUxpdmVVIEx0ZC4KLQkJCQk1IEhhZ2F2aXNoIFN0LgotCQkJCUtmYXItU2FiYSAgNDQ2NDEKLQkJCQlJU1JBRUwKLQotNzgtNTctMTIgICAoaGV4KQkJTW9iaWxlIEludGVncmF0aW9uIFdvcmtncm91cAotNzg1NzEyICAgICAoYmFzZSAxNikJCU1vYmlsZSBJbnRlZ3JhdGlvbiBXb3JrZ3JvdXAKLQkJCQk0NTgwIEtsYWhhbmllIERSIFNFIFNURSAxMDYKLQkJCQlJc3NhcXVhaCBXQSA5ODAyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtNTktM0UgICAoaGV4KQkJUkFGSSBHbWJIICYgQ28uS0cKLTc4NTkzRSAgICAgKGJhc2UgMTYpCQlSQUZJIEdtYkggJiBDby5LRwotCQkJCVJhdmVuc2J1cmdlciBTdHIuIDEyOC0xMzQKLQkJCQlCZXJnIEJhZGVuIFd1cnR0ZW1iZXJnIDg4Mjc2Ci0JCQkJR0VSTUFOWQotCi03OC01Qy03MiAgIChoZXgpCQlIaW9zbyBUZWNobm9sb2d5IENvLiwgTHRkLgotNzg1QzcyICAgICAoYmFzZSAxNikJCUhpb3NvIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNnRoIEZsb29yLCAxMnRoIEJ1aWxkaW5nLCBXYW5ndGFuZyBJbmR1c3RyaWFsIFpvbmUsCi0JCQkJWGluZ2FvIFJvYWQsIFhpbGksIE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU1Ci0JCQkJQ0hJTkEKLQotNzgtNjYtQUUgICAoaGV4KQkJWlRFQyBJbnN0cnVtZW50cywgSW5jLgotNzg2NkFFICAgICAoYmFzZSAxNikJCVpURUMgSW5zdHJ1bWVudHMsIEluYy4KLQkJCQk3NzE1IFRpYnVyb24gU3QuIE5FCi0JCQkJQWxidXF1ZXJxdWUgTk0gODcxMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LTdGLTYyICAgKGhleCkJCUdpSyBtYkgKLTc4N0Y2MiAgICAgKGJhc2UgMTYpCQlHaUsgbWJICi0JCQkJR29ldGhlc3RyLiA1Ci0JCQkJQWFjaGVuICA1MjA2NAotCQkJCUdFUk1BTlkKLQotNzgtODEtOEYgICAoaGV4KQkJU2VydmVyIFJhY2tzIEF1c3RyYWxpYSBQdHkgTHRkCi03ODgxOEYgICAgIChiYXNlIDE2KQkJU2VydmVyIFJhY2tzIEF1c3RyYWxpYSBQdHkgTHRkCi0JCQkJNCAtIDYgRW5kdXJhbmNlIEF2ZQotCQkJCVF1ZWFuYmV5YW4gTlNXIDI2MjAKLQkJCQlBVVNUUkFMSUEKLQotNzgtODQtM0MgICAoaGV4KQkJU29ueSBDb3Jwb3JhdGlvbgotNzg4NDNDICAgICAoYmFzZSAxNikJCVNvbnkgQ29ycG9yYXRpb24KLQkJCQk1LTEtMTIgS2l0YXNoaW5hZ2F3YSBTaGluYWdhd2Eta3UKLQkJCQlUb2t5byAgMTQxLTAwMDEKLQkJCQlKQVBBTgotCi03OC04NC1FRSAgIChoZXgpCQlJTkRSQSBFU1BBQ0lPIFMuQS4KLTc4ODRFRSAgICAgKGJhc2UgMTYpCQlJTkRSQSBFU1BBQ0lPIFMuQS4KLQkJCQlDLyBST0MgQk9ST05BVCwgMTMzCi0JCQkJQkFSQ0VMT05BICAwODAxOAotCQkJCVNQQUlOCi0KLTc4LTg5LTczICAgKGhleCkJCUNNQwotNzg4OTczICAgICAoYmFzZSAxNikJCUNNQwotCQkJCUluZHVzdHJpZXBhcmsgRGUgQnJ1d2FhbiAzN0IKLQkJCQlPdWRlbmFhcmRlIE9vc3QtVmxhYW5kZXJlbiA5NzAwCi0JCQkJQkVMR0lVTQotCi03OC04Qy01NCAgIChoZXgpCQlFbmtvbSBUZWNobm9sb2dpZXMgTHRkLgotNzg4QzU0ICAgICAoYmFzZSAxNikJCUVua29tIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJQmFkZW5lcnN0cmFzc2UgNTUxCi0JCQkJWmk/b2VyaWNoIFpIIDgwNDgKLQkJCQlTV0lUWkVSTEFORAotCi03OC05Mi05QyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTc4OTI5QyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTc4LTk5LThGICAgKGhleCkJCU1FRElMSU5FIElUQUxJQSBTUkwKLTc4OTk4RiAgICAgKGJhc2UgMTYpCQlNRURJTElORSBJVEFMSUEgU1JMCi0JCQkJVklBIDggTUFSWk8sIDQKLQkJCQlDT1JURSBURUdHRSBSRUdHSU8gTkVMTCdFTUlMSUEgNDIwMjUKLQkJCQlJVEFMWQotCi03OC1BMC01MSAgIChoZXgpCQlpaU5ldCBMYWJzIFB0eSBMdGQgCi03OEEwNTEgICAgIChiYXNlIDE2KQkJaWlOZXQgTGFicyBQdHkgTHRkIAotCQkJCUxldmVsIDEKLQkJCQk1MDIgSGF5IFN0cmVldAotCQkJCVN1YmlhY28gV0EgNjAwOAotCQkJCUFVU1RSQUxJQQotCi03OC1BMi1BMCAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTc4QTJBMCAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi03OC1BNi04MyAgIChoZXgpCQlQcmVjaWRhdGEKLTc4QTY4MyAgICAgKGJhc2UgMTYpCQlQcmVjaWRhdGEKLQkJCQlDUCA2NzIKLQkJCQlNYWxhZGllcmUgNzEKLQkJCQkyMDAyIE5FIDIwMDIKLQkJCQlTV0lUWkVSTEFORAotCi03OC1BNi1CRCAgIChoZXgpCQlEQUVZRU9OIENvbnRyb2wmSW5zdHJ1bWVudCBDbywuTHRkCi03OEE2QkQgICAgIChiYXNlIDE2KQkJREFFWUVPTiBDb250cm9sJkluc3RydW1lbnQgQ28sLkx0ZAotCQkJCUFDRVRFQ0hOT1RPV0VSIDItMTA4LCAxOTctNywgR3VybzMtRG9uZywgR3Vyby1HdSwgCi0JCQkJU2VvdWwgIDE1Mi03NjYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNzgtQTctMTQgICAoaGV4KQkJQW1waGVub2wKLTc4QTcxNCAgICAgKGJhc2UgMTYpCQlBbXBoZW5vbAotCQkJCTIwIFZhbGxleSBTdC4KLQkJCQlFbmRpY290dCBOZXcgWW9yayAxMzc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtQUMtQzAgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi03OEFDQzAgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1CNi1DMSAgIChoZXgpCQlBT0JPIFRlbGVjb20gQ28uLEx0ZAotNzhCNkMxICAgICAoYmFzZSAxNikJCUFPQk8gVGVsZWNvbSBDby4sTHRkCi0JCQkJUm9vbTE1MDgsSmlhbmdvbmcgQnVpbGRpbmcKLQkJCQlOby4yMCBXZW5zYW4gUm9hZAotCQkJCUhhbmd6aG91IFpoZUppYW5nICAzMTAwMTIKLQkJCQlDSElOQQotCi03OC1COC0xQSAgIChoZXgpCQlJTlRFUiBTQUxFUyBBL1MKLTc4QjgxQSAgICAgKGJhc2UgMTYpCQlJTlRFUiBTQUxFUyBBL1MKLQkJCQlTdGF2bmVhZ2VydmVqIDIyCi0JCQkJRWdhYSBKdXRsYW5kIDgyNTAKLQkJCQlERU5NQVJLCi0KLTc4LUJFLUI2ICAgKGhleCkJCUVuaGFuY2VkIFZpc2lvbgotNzhCRUI2ICAgICAoYmFzZSAxNikJCUVuaGFuY2VkIFZpc2lvbgotCQkJCTU4ODIgTUFDSElORSBEUi4KLQkJCQlIdW50aW5ndG9uIEJlYWNoIENhbGlmb3JuaWEgOTI2NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LUM0LTBFICAgKGhleCkJCUgmRCBXaXJlbGVzcyAKLTc4QzQwRSAgICAgKGJhc2UgMTYpCQlIJkQgV2lyZWxlc3MgCi0JCQkJU2pvdmFnZW4gMTcKLQkJCQlTb2xuYSAgMTY5IDU1IAotCQkJCVNXRURFTgotCi03OC1DNi1CQiAgIChoZXgpCQlJbm5vdmFzaWMsIEluYy4KLTc4QzZCQiAgICAgKGJhc2UgMTYpCQlJbm5vdmFzaWMsIEluYy4KLQkJCQkzNzM3IFByaW5jZXRvbiBEci4gTkUsIFN1aXRlIDEzMAotCQkJCUFsYnVxdWVycXVlIE5NIDg0MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1DQS0wNCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotNzhDQTA0ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi03OC1DQS0zOSAgIChoZXgpCQlBcHBsZQotNzhDQTM5ICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1DRC04RSAgIChoZXgpCQlTTUMgTmV0d29ya3MgSW5jCi03OENEOEUgICAgIChiYXNlIDE2KQkJU01DIE5ldHdvcmtzIEluYwotCQkJCTIwIE1hc29uCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1EMC0wNCAgIChoZXgpCQlOZW91c3lzIFRlY2hub2xvZ3kgSW5jLgotNzhEMDA0ICAgICAoYmFzZSAxNikJCU5lb3VzeXMgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTNGLi0xLCBOTy4xLCBCQU9TSEVORyBSRC4sIAotCQkJCVlPTkdIRSBDSVRZIFRBSVBFSSBDT1VOVFkgIDIzNDQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03OC1ENi1GMCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm8gTWVjaGFuaWNzCi03OEQ2RjAgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvIE1lY2hhbmljcwotCQkJCU1ldGFuIERvbmcgMzE0LCBZb3VuZ3RvbmcgR3UKLQkJCQlTdXdvbiBLeXVuZy1naSBEby4gNDQzLTc0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03OC1ERC0wOCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotNzhERDA4ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotNzgtREUtRTQgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTc4REVFNCAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtRTMtQjUgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi03OEUzQjUgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1FNC0wMCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotNzhFNDAwICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLTc4LUU3LUQxICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotNzhFN0QxICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1FQy0yMiAgIChoZXgpCQlTaGFuZ2hhaSBRaWh1aSBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLCBMVEQKLTc4RUMyMiAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBRaWh1aSBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLCBMVEQKLQkJCQlSb29tIDUwMSwgTm8gMiBCb1l1biBSZCwgUHVEb25nIE5ldyBBcmVhLCAKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotNzgtRUYtNEMgICAoaGV4KQkJVW5ldGNvbnZlcmdlbmNlIENvLiwgTHRkLgotNzhFRjRDICAgICAoYmFzZSAxNikJCVVuZXRjb252ZXJnZW5jZSBDby4sIEx0ZC4KLQkJCQkxMDEtNTExLCBEaWdpdGFsIEVtcGlyZTIsIDQ4NiwgU2hpbi1kb25nLCBZb3VuZ3RvbmctZ3UKLQkJCQlTdXdvbiBLeW9uZ2dpLWRvIDQ0My0zOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotN0MtMDMtNEMgICAoaGV4KQkJU0FHRU1DT00KLTdDMDM0QyAgICAgKGJhc2UgMTYpCQlTQUdFTUNPTQotCQkJCTI1MCByb3V0ZSBkZSBsJ0VtcGVyZXVyCi0JCQkJUlVFSUwgTUFMTUFJU09OIElsZSBkZSBGcmFuY2UgOTI4NDgKLQkJCQlGUkFOQ0UKLQotN0MtMDUtMUUgICAoaGV4KQkJUkFGQUVMIExURC4KLTdDMDUxRSAgICAgKGJhc2UgMTYpCQlSQUZBRUwgTFRELgotCQkJCUdVU0ggU0VHRVYgUE9CIDIyNTAKLQkJCQlIQUlGQSAgMzEwMDgKLQkJCQlJU1JBRUwKLQotN0MtMDgtRDkgICAoaGV4KQkJU2hhbmdoYWkgRW5naW5lZXJpbmcgUmVzZWFyY2ggQ2VudGVyIGZvciBCcm9hZGJhbmQgVGVjaG5vbG9naWVzIGFuZCBBcHBsaWNhdGlvbnMKLTdDMDhEOSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBFbmdpbmVlcmluZyBSZXNlYXJjaCBDZW50ZXIgZm9yIEJyb2FkYmFuZCBUZWNobm9sb2dpZXMgYW5kIEFwcGxpY2F0aW9ucwotCQkJCTE1MCBIb25nZ3UgUm9hZAotCQkJCUNoYW5nbmluZyBEaXN0cmljdAotCQkJCVNoYW5naGFpICAyMDAzMzYKLQkJCQlDSElOQQotCi03Qy0xNC03NiAgIChoZXgpCQlEYW1hbGwgVGVjaG5vbG9naWVzIFMuQS5TLiBEaSBMdWRvdmljIEFuc2VsbWUgR2xhZ2xhbm9uICYgQy4KLTdDMTQ3NiAgICAgKGJhc2UgMTYpCQlEYW1hbGwgVGVjaG5vbG9naWVzIFMuQS5TLiBEaSBMdWRvdmljIEFuc2VsbWUgR2xhZ2xhbm9uICYgQy4KLQkJCQlDb3JzbyBkZWxsYSBSZXB1YmJsaWNhIDY1Ci0JCQkJRmFicmlhbm8gQW5jb25hIDYwMDQ0Ci0JCQkJSVRBTFkKLQotN0MtMUUtQjMgICAoaGV4KQkJMk4gVEVMRUtPTVVOSUtBQ0UgYS5zLgotN0MxRUIzICAgICAoYmFzZSAxNikJCTJOIFRFTEVLT01VTklLQUNFIGEucy4KLQkJCQlNb2RyYW5za2EgNjIxCi0JCQkJUHJhZ3VlIEN6ZWNoIFJlcHVibGljIDE0MzAxCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotN0MtMjAtNjQgICAoaGV4KQkJQWxjYXRlbCBMdWNlbnQgSVBECi03QzIwNjQgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQgSVBECi0JCQkJNjAwIE1hcmNoIERyaXZlCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLMkU2Ci0JCQkJQ0FOQURBCi0KLTdDLTJDLUYzICAgKGhleCkJCVNlY3VyZSBFbGVjdHJhbnMgTHRkCi03QzJDRjMgICAgIChiYXNlIDE2KQkJU2VjdXJlIEVsZWN0cmFucyBMdGQKLQkJCQlUaGUgRW5lcmd5IElubm92YXRpb24gQ2VudHJlCi0JCQkJQ2FwZW5odXJzdAotCQkJCUNoZXN0ZXIgIENIMSA2RVMKLQkJCQlVTklURUQgS0lOR0RPTQotCi03Qy0yRS0wRCAgIChoZXgpCQlCbGFja21hZ2ljIERlc2lnbgotN0MyRTBEICAgICAoYmFzZSAxNikJCUJsYWNrbWFnaWMgRGVzaWduCi0JCQkJMTEgR2F0ZXdheSBDb3VydAotCQkJCVBvcnQgTWVsYm91cm5lCi0JCQkJTWVsYm91cm5lIFZpY3RvcmlhIDMyMDcKLQkJCQlBVVNUUkFMSUEKLQotN0MtMkYtODAgICAoaGV4KQkJR2lnYXNldCBDb21tdW5pY2F0aW9ucyBHbWJICi03QzJGODAgICAgIChiYXNlIDE2KQkJR2lnYXNldCBDb21tdW5pY2F0aW9ucyBHbWJICi0JCQkJU0NNIFBFIDIKLQkJCQlGcmFua2Vuc3RyYXNzZSAyCi0JCQkJQm9jaG9sdCAgNDYzOTUKLQkJCQlHRVJNQU5ZCi0KLTdDLTM5LTIwICAgKGhleCkJCVNTT01BIFNFQ1VSSVRZCi03QzM5MjAgICAgIChiYXNlIDE2KQkJU1NPTUEgU0VDVVJJVFkKLQkJCQlVbml0IDcwMywgRGFlcnl1bmcgVGVjaG5vdG93biAxM3RoLCAKLQkJCQk2NjQsIEdhc2FuZG9uZywgCi0JCQkJR2V1bWNoZW9uZ3UgU2VvdWwgMTUzNzU0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTdDLTNCLUQ1ICAgKGhleCkJCUltYWdvIEdyb3VwCi03QzNCRDUgICAgIChiYXNlIDE2KQkJSW1hZ28gR3JvdXAKLQkJCQlSYW1vbiBNYXJ0aSBBbHNpbmEgMi00LTYKLQkJCQlCYWRhbG9uYSBCYXJjZWxvbmEgMDg5MTEKLQkJCQlTUEFJTgotCi03Qy0zRS05RCAgIChoZXgpCQlQQVRFQ0gKLTdDM0U5RCAgICAgKGJhc2UgMTYpCQlQQVRFQ0gKLQkJCQkjMjMtMTcuIFdvbmh5b1JvLTJHYQotCQkJCVlvbmdTYW4tR3UgU2VvdWwgMTQwMTEyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTdDLTRBLTgyICAgKGhleCkJCVBvcnRzbWl0aCBMTEMKLTdDNEE4MiAgICAgKGJhc2UgMTYpCQlQb3J0c21pdGggTExDCi0JCQkJODUwIEUuIEZyYW5rbGluIFJvYWQKLQkJCQlTdWl0ZSA0MDEKLQkJCQlNZXJpZGlhbiBJRCA4MzY0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtNEEtQTggICAoaGV4KQkJTWluZFRyZWUgV2lyZWxlc3MgUFZUIEx0ZAotN0M0QUE4ICAgICAoYmFzZSAxNikJCU1pbmRUcmVlIFdpcmVsZXNzIFBWVCBMdGQKLQkJCQlMR0YsIFBoYXNlIElJSSwgTWluZHRyZWUgV2VzdCBDYW1wdXMsIAotCQkJCUdsb2JhbCBWaWxsYWdlIENhbXB1cywgUlZDRSBQb3N0LCBNeWxhc2FuZHJhIFZpbGxhZ2UsIG9mZiBNeXNvcmUgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwIDA1OQotCQkJCUlORElBCi0KLTdDLTRGLUI1ICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTdDNEZCNSAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOTy45LCBQYXJrIEF2ZW51ZSBJSSwKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyaywKLQkJCQlIc2luY2h1ICwgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotN0MtNTUtRTcgICAoaGV4KQkJWVNJLCBJbmMuCi03QzU1RTcgICAgIChiYXNlIDE2KQkJWVNJLCBJbmMuCi0JCQkJMTcyNSBCcmFubnVtIExhbmUKLQkJCQlZZWxsb3cgU3ByaW5ncyBPaGlvIDQ1Mzg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy02MS05MyAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLTdDNjE5MyAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4gMjMsIFhpbmdodWEgUmQuLCAKLQkJCQlUYW95dWFuIENpdHkKLQkJCQlUYW95dWFuIENvdW50eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03Qy02QS1EQiAgIChoZXgpCQlTYWZlVG9uZSBUZWNobm9sb2d5IENvLixMdGQKLTdDNkFEQiAgICAgKGJhc2UgMTYpCQlTYWZlVG9uZSBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlSb29tIDMyMyxaaHVvdUppIFBsYXphLE5vLjE2IEFuRGUgUm9hZCxFYXN0IERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDAxMQotCQkJCUNISU5BCi0KLTdDLTZDLTM5ICAgKGhleCkJCVBJWFNZUyBTUkwKLTdDNkMzOSAgICAgKGJhc2UgMTYpCQlQSVhTWVMgU1JMCi0JCQkJVklBIERFTExBIENST0NFIFJPU1NBLCAgNDIKLQkJCQlQQURPVkEgUEQgMzUxMjkKLQkJCQlJVEFMWQotCi03Qy02Qy04RiAgIChoZXgpCQlBTVMgTkVWRSBMVEQKLTdDNkM4RiAgICAgKGJhc2UgMTYpCQlBTVMgTkVWRSBMVEQKLQkJCQlCSUxMSU5HVE9OIFJPQUQKLQkJCQlCVVJOTEVZIExBTkNBU0hJUkUgQkIxMSA1VUIKLQkJCQlVTklURUQgS0lOR0RPTQotCi03Qy02RC02MiAgIChoZXgpCQlBcHBsZSwgSW5jCi03QzZENjIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtNkYtMDYgICAoaGV4KQkJQ2F0ZXJwaWxsYXIgVHJpbWJsZSBDb250cm9sIFRlY2hub2xvZ2llcwotN0M2RjA2ICAgICAoYmFzZSAxNikJCUNhdGVycGlsbGFyIFRyaW1ibGUgQ29udHJvbCBUZWNobm9sb2dpZXMKLQkJCQk1NDc1IEtlbGxlbmJ1cmdlciBSZC4KLQkJCQlEYXl0b24gT0ggNDU0MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLTc2LTczICAgKGhleCkJCUVOTUFTIEdtYkgKLTdDNzY3MyAgICAgKGJhc2UgMTYpCQlFTk1BUyBHbWJICi0JCQkJSG9semtvcHBlbHdlZyAyMwotCQkJCUtpZWwgU2NobGVzd2lnLUhvbHN0ZWluIDI0MjUxCi0JCQkJR0VSTUFOWQotCi03Qy03Qi1FNCAgIChoZXgpCQlaJiMzOTtTRURBSSBLRU5LWVVTSE8gQ09SUE9SQVRJT04KLTdDN0JFNCAgICAgKGJhc2UgMTYpCQlaJiMzOTtTRURBSSBLRU5LWVVTSE8gQ09SUE9SQVRJT04KLQkJCQlNZWlrYWkgc2Fubm9taXlhIDJuZCBCbGRnLiAxMXRoL2ZsLgotCQkJCTc2LTIgS3lvbWFjaGkgQ2h1by1rdQotCQkJCUtvYmUgSHlvZ28gNjUwLTAwMzQKLQkJCQlKQVBBTgotCi03Qy03RC00MSAgIChoZXgpCQlKaW5tdXl1IEVsZWN0cm9uaWNzIENvLiwgTHRkLgotN0M3RDQxICAgICAoYmFzZSAxNikJCUppbm11eXUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJUm9vbSAxMzIsIEJ1aWxkaW5nIDE2LCBUaWFucWlhb3dhbgotCQkJCVhpbmh1YSBOb3J0aCBSb2FkLCBUb25nemhvdSBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMTEwMQotCQkJCUNISU5BCi0KLTdDLThFLUU0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi03QzhFRTQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLUEyLTlCICAgKGhleCkJCUQuU2lnblQgR21iSCAmYW1wOyBDby4gS0cKLTdDQTI5QiAgICAgKGJhc2UgMTYpCQlELlNpZ25UIEdtYkggJmFtcDsgQ28uIEtHCi0JCQkJTWFya3RzdHIuIDEwCi0JCQkJS2Vya2VuICA0NzY0NwotCQkJCUdFUk1BTlkKLQotN0MtQjUtNDIgICAoaGV4KQkJQUNFUyBUZWNobm9sb2d5Ci03Q0I1NDIgICAgIChiYXNlIDE2KQkJQUNFUyBUZWNobm9sb2d5Ci0JCQkJIzkyOCwgSHl1bmRhaSBWZW50dXJlIFZpbGxlCi0JCQkJNzEzIFN1c2VvLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTUzOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03Qy1CQi02RiAgIChoZXgpCQlDb3NjbyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTdDQkI2RiAgICAgKGJhc2UgMTYpCQlDb3NjbyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjMTEwMSwgRU5DIERyZWFtIHRvd2VyLCAzMjctMjcKLQkJCQlHYXNhbi1kb25nLCBHZXVtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTc5MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03Qy1DNS0zNyAgIChoZXgpCQlBcHBsZQotN0NDNTM3ICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy1DQi0wRCAgIChoZXgpCQlBYXhlb24gVGVjaG5vbG9naWVzIEluYy4KLTdDQ0IwRCAgICAgKGJhc2UgMTYpCQlBYXhlb24gVGVjaG5vbG9naWVzIEluYy4KLQkJCQk0NDUgQ2Fwcmljb3JuIFN0LgotCQkJCUJyZWEgQ2FsaWZvcm5pYSA5MjgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtQ0YtQ0YgICAoaGV4KQkJU2hhbmdoYWkgU0VBUkkgSW50ZWxsaWdlbnQgU3lzdGVtIENvLiwgTHRkCi03Q0NGQ0YgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgU0VBUkkgSW50ZWxsaWdlbnQgU3lzdGVtIENvLiwgTHRkCi0JCQkJTm8uNTA1IFd1bmluZyBSb2FkLCBQdXR1byBEaXN0cmljdAotCQkJCVNoYW5naGFpICAyMDAwNjMKLQkJCQlDSElOQQotCi03Qy1EQS04NCAgIChoZXgpCQlEb25nbmlhbiBOZXR3b3JrcyBJbmMuCi03Q0RBODQgICAgIChiYXNlIDE2KQkJRG9uZ25pYW4gTmV0d29ya3MgSW5jLgotCQkJCTkwIFdlbnNhbiBSb2FkLCBCdWlsZGluZyA4LUEzMDMKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi03Qy1ERC0yMCAgIChoZXgpCQlJT1hPUyBUZWNobm9sb2dpZXMgUy5BLgotN0NERDIwICAgICAoYmFzZSAxNikJCUlPWE9TIFRlY2hub2xvZ2llcyBTLkEuCi0JCQkJNCBDaGVtaW4gZGUgRm9udGVuYWlsbGVzCi0JCQkJR0xBTkQgVkFVRCBDSC0xMTk2Ci0JCQkJU1dJVFpFUkxBTkQKLQotN0MtREQtOTAgICAoaGV4KQkJU2hlbnpoZW4gT2dlbXJheSBUZWNobm9sb2d5IENvLiwgTHRkLgotN0NERDkwICAgICAoYmFzZSAxNikJCVNoZW56aGVuIE9nZW1yYXkgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzIEZsb29yLCA5IEJ1aWxkaW5nLCBNaW54aW5nIEluZHVzdHJpYWwgWm9uZSwKLQkJCQlNaW5rYW5nIFJvYWQsIE1pbnpoaSBTdHJlZXQsIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMzEKLQkJCQlDSElOQQotCi03Qy1FMC00NCAgIChoZXgpCQlORU9OIEluYwotN0NFMDQ0ICAgICAoYmFzZSAxNikJCU5FT04gSW5jCi0JCQkJNTM0MCBBaXJwb3J0IEJvdWxldmFyZAotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLUVELThEICAgKGhleCkJCU1JQ1JPU09GVAotN0NFRDhEICAgICAoYmFzZSAxNikJCU1JQ1JPU09GVAotCQkJCU9uZSBNaWNyb3NvZnQgV2F5Ci0JCQkJUmVkbW9uZCBXQSA5ODA1Mi02Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy1FRi0xOCAgIChoZXgpCQlDcmVhdGl2ZSBQcm9kdWN0IERlc2lnbiBQdHkuIEx0ZC4KLTdDRUYxOCAgICAgKGJhc2UgMTYpCQlDcmVhdGl2ZSBQcm9kdWN0IERlc2lnbiBQdHkuIEx0ZC4KLQkJCQk4MiBWaWN0b3JpYSBTdHJlZXQKLQkJCQlTYW5kcmluZ2hhbSBWaWN0b3JpYSAzMTkxCi0JCQkJQVVTVFJBTElBCi0KLTdDLUYwLTVGICAgKGhleCkJCUFwcGxlIEluYwotN0NGMDVGICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtRjAtOTggICAoaGV4KQkJQmVlIEJlYW5zIFRlY2hub2xvZ2llcywgSW5jLgotN0NGMDk4ICAgICAoYmFzZSAxNikJCUJlZSBCZWFucyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQlUQ0kgQjUKLQkJCQkyLTYtMSBTZW5nZW4KLQkJCQlUc3VrdWJhIENpdHkgSWJhcmFraSAzMDUtMDA0NwotCQkJCUpBUEFOCi0KLTdDLUYwLUJBICAgKGhleCkJCUxpbmt3ZWxsIFRlbGVzeXN0ZW1zIFB2dCBMdGQKLTdDRjBCQSAgICAgKGJhc2UgMTYpCQlMaW5rd2VsbCBUZWxlc3lzdGVtcyBQdnQgTHRkCi0JCQkJMS0xMS0yNTIvMS9BLCBHb3dyYSBLbGFzc2ljCi0JCQkJQmVndW1wZXQKLQkJCQlIeWRlcmFiYWQgQW5kaHJhIFByYWRlc2ggNTAwMDE2Ci0JCQkJSU5ESUEKLQotN0MtRjQtMjkgICAoaGV4KQkJTlVVTyBJbmMuIAotN0NGNDI5ICAgICAoYmFzZSAxNikJCU5VVU8gSW5jLiAKLQkJCQlDIGJsb2NrLCAxOCBTaWh5dWFuIFN0LiBKaG9uZ2poZW5nIERpc3RyaWN0LCAKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtMDAtMTAgICAoaGV4KQkJQVRUIEJFTEwgTEFCT1JBVE9SSUVTCi04MDAwMTAgICAgIChiYXNlIDE2KQkJQVRUIEJFTEwgTEFCT1JBVE9SSUVTCi0JCQkJMTEwMCBFQVNUIFdBUlJFTlZJTExFIFJPQUQKLQkJCQlOQVBFUlZJTExFIElMIDYwNTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC0xNC00MCAgIChoZXgpCQlTdW5saXQgU3lzdGVtIFRlY2hub2xvZ3kgQ29ycAotODAxNDQwICAgICAoYmFzZSAxNikJCVN1bmxpdCBTeXN0ZW0gVGVjaG5vbG9neSBDb3JwCi0JCQkJOEYsIE5vLjE5LExhbmUgMTIwLCBTZWMxLCBOZWlodSBSZC4KLQkJCQlUYXBpZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtMTctN0QgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi04MDE3N0QgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLTgwLTFGLTAyICAgKGhleCkJCUVkaW1heCBUZWNobm9sb2d5IENvLiBMdGQuCi04MDFGMDIgICAgIChiYXNlIDE2KQkJRWRpbWF4IFRlY2hub2xvZ3kgQ28uIEx0ZC4KLQkJCQlOby4gMywgV3UtQ2h1YW4gM3JkIFJvYWQsIFd1LUt1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlUYWlwZWkgSHNpZW4gIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtMjItNzUgICAoaGV4KQkJQmVpamluZyBCZW55IFdhdmUgVGVjaG5vbG9neSBDbyBMdGQKLTgwMjI3NSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEJlbnkgV2F2ZSBUZWNobm9sb2d5IENvIEx0ZAotCQkJCU5vLjU1LCBKaWFjaHVhbmcgUm9hZAotCQkJCVRhaWh1IFRvd24KLQkJCQlUb25nemhvdSBEaXN0cmljdCBCZWlqaW5nIDEwMTExMQotCQkJCUNISU5BCi0KLTgwLTJELUUxICAgKGhleCkJCVNvbGFyYnJpZGdlIFRlY2hub2xvZ2llcwotODAyREUxICAgICAoYmFzZSAxNikJCVNvbGFyYnJpZGdlIFRlY2hub2xvZ2llcwotCQkJCTkyMjkgV2F0ZXJmb3JkIENlbnRyZSBCbHZkCi0JCQkJQnVpbGRpbmcgQywgU3VpdGUgMTEwCi0JCQkJQXVzdGluIFRYIDc4NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC0yRS0xNCAgIChoZXgpCQlhemV0aSBOZXR3b3JrcyBBRwotODAyRTE0ICAgICAoYmFzZSAxNikJCWF6ZXRpIE5ldHdvcmtzIEFHCi0JCQkJQW0gQnJhbWJ1c2NoIDFhCi0JCQkJTHVlbmVuIE5SVyA0NDUzNgotCQkJCUdFUk1BTlkKLQotODAtMzQtNTcgICAoaGV4KQkJT1QgU3lzdGVtcyBMaW1pdGVkCi04MDM0NTcgICAgIChiYXNlIDE2KQkJT1QgU3lzdGVtcyBMaW1pdGVkCi0JCQkJVW5pdCAxMDIzLCAxMC9GLiwgTGFuZG1hcmsgTm9ydGgsCi0JCQkJU2hldW5nIFNodWksIE4uIFQuICAKLQkJCQlIT05HIEtPTkcKLQotODAtMzgtRkQgICAoaGV4KQkJTGVhcEZyb2cgRW50ZXJwcmlzZXMsIEluYy4KLTgwMzhGRCAgICAgKGJhc2UgMTYpCQlMZWFwRnJvZyBFbnRlcnByaXNlcywgSW5jLgotCQkJCTY0MDEgSG9saXMgU3RyZWV0Ci0JCQkJRW1lcnl2aWxsZSBDQSA5NDUzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtMzktRTUgICAoaGV4KQkJUEFUTElURSBDT1JQT1JBVElPTgotODAzOUU1ICAgICAoYmFzZSAxNikJCVBBVExJVEUgQ09SUE9SQVRJT04KLQkJCQkxOS0yCi0JCQkJVEVDSE5PUEFSSwotCQkJCVNBTkRBIEhZT1VHT0tFTiA2NjktMTMzOQotCQkJCUpBUEFOCi0KLTgwLTNCLTlBICAgKGhleCkJCWdoZS1jZXMgZWxlY3Ryb25pYyBhZwotODAzQjlBICAgICAoYmFzZSAxNikJCWdoZS1jZXMgZWxlY3Ryb25pYyBhZwotCQkJCUhvZW1lbHN0cmFzc2UgMTcKLQkJCQlXYWxkIFpIIDg2MzYKLQkJCQlTV0lUWkVSTEFORAotCi04MC00Ny0zMSAgIChoZXgpCQlQYWNrZXQgRGVzaWduLCBJbmMuCi04MDQ3MzEgICAgIChiYXNlIDE2KQkJUGFja2V0IERlc2lnbiwgSW5jLgotCQkJCTI0NTUgQXVndXN0aW5lIERyaXZlCi0JCQkJU3VpdGUgMTAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLTRGLTU4ICAgKGhleCkJCVRoaW5rRWNvLCBJbmMuCi04MDRGNTggICAgIChiYXNlIDE2KQkJVGhpbmtFY28sIEluYy4KLQkJCQkzMDMgRmlmdGggQXZlbnVlCi0JCQkJMTgwMQotCQkJCU5ldyBZb3JrIE5ZIDEwMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC01MC0xQiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotODA1MDFCICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi04MC01OC1DNSAgIChoZXgpCQlOb3ZhVGVjIEtvbW11bmlrYXRpb25zdGVjaG5payBHbWJICi04MDU4QzUgICAgIChiYXNlIDE2KQkJTm92YVRlYyBLb21tdW5pa2F0aW9uc3RlY2huaWsgR21iSAotCQkJCVRlY2hub2xvZ2llcGFyayA5Ci0JCQkJNHRoIEZsb29yCi0JCQkJUGFkZXJib3JuIE5SVyAzMzEwMAotCQkJCUdFUk1BTlkKLQotODAtNjQtNTkgICAoaGV4KQkJTmltYnVzIEluYy4KLTgwNjQ1OSAgICAgKGJhc2UgMTYpCQlOaW1idXMgSW5jLgotCQkJCTEzNTkgR3dhbnB5ZW9uZy1kb25nLCBZdXNlb25nLWd1Ci0JCQkJU3VpdGUgNjE5IEhhbnNoaW4gUyBtZWNhCi0JCQkJRGFlamVvbiAgMzA1LTUwOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi04MC02NS1FOSAgIChoZXgpCQlCZW5RIENvcnBvcmF0aW9uCi04MDY1RTkgICAgIChiYXNlIDE2KQkJQmVuUSBDb3Jwb3JhdGlvbgotCQkJCTE2IEppaHUgUm9hZCwgTmVpaHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtNjYtMjkgICAoaGV4KQkJUHJlc2NvcGUgVGVjaG5vbG9naWVzIENPLixMVEQuCi04MDY2MjkgICAgIChiYXNlIDE2KQkJUHJlc2NvcGUgVGVjaG5vbG9naWVzIENPLixMVEQuCi0JCQkJMTJGLTEsTm8uMTkyLFNlYyAyLENodW5nIEhzaW4gUm9hZAotCQkJCUhzaW4gVGllbiBDaXR5IFRhaXBlaSBDb3VudHkgMjMxNDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTgwLTZDLUJDICAgKGhleCkJCU5FVCBOZXcgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEdtYkgKLTgwNkNCQyAgICAgKGJhc2UgMTYpCQlORVQgTmV3IEVsZWN0cm9uaWMgVGVjaG5vbG9neSBHbWJICi0JCQkJTGVyY2hlbmJlcmcgNwotCQkJCUZpbm5pbmcgQmF2YXJpYW4gODY5MjMKLQkJCQlHRVJNQU5ZCi0KLTgwLTcxLTFGICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLTgwNzExRiAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZQotCQkJCVN1bm55dmFsZSAgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLTdELTFCICAgKGhleCkJCU5lb3N5c3RlbSBDby4gTHRkLgotODA3RDFCICAgICAoYmFzZSAxNikJCU5lb3N5c3RlbSBDby4gTHRkLgotCQkJCTQtMTktMTIgVGFrYW8KLQkJCQlEYXphaWZ1LXNoaSBGdWt1b2thIDgxOC0wMTIyCi0JCQkJSkFQQU4KLQotODAtODEtQTUgICAoaGV4KQkJVE9OR1FJTkcgQ09NTVVOSUNBVElPTiBFUVVJUE1FTlQgKFNIRU5aSEVOKSBDby4sTHRkCi04MDgxQTUgICAgIChiYXNlIDE2KQkJVE9OR1FJTkcgQ09NTVVOSUNBVElPTiBFUVVJUE1FTlQgKFNIRU5aSEVOKSBDby4sTHRkCi0JCQkJVG9uZ3FpbmcgSW5kdXN0cnkgUGFyayxqaXV3ZWkseGl4aWFuZyBUb3duLEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjYKLQkJCQlDSElOQQotCi04MC05MS0yQSAgIChoZXgpCQlMaWggUm9uZyBlbGVjdHJvbmljIEVudGVycHJpc2UgQ28uLCBMdGQuCi04MDkxMkEgICAgIChiYXNlIDE2KQkJTGloIFJvbmcgZWxlY3Ryb25pYyBFbnRlcnByaXNlIENvLiwgTHRkLgotCQkJCTJGLCBOby4gMiwgTGFuZSAzODcsIEhzaW4gU2h1IFJvYWQKLQkJCQlIc2luIENodWFuZyBUYWlwZWkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04MC05MS1DMCAgIChoZXgpCQlBZ2lsZU1lc2gsIEluYy4KLTgwOTFDMCAgICAgKGJhc2UgMTYpCQlBZ2lsZU1lc2gsIEluYy4KLQkJCQkxNjcxIEludGVybmF0aW9uYWwgUGt3eQotCQkJCVN1aXRlIDExMwotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLTlCLTIwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotODA5QjIwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotODAtQTEtRDcgICAoaGV4KQkJU2hhbmdoYWkgRGFyZUdsb2JhbCBUZWNobm9sb2dpZXMgQ28uLEx0ZCAKLTgwQTFENyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBEYXJlR2xvYmFsIFRlY2hub2xvZ2llcyBDby4sTHRkIAotCQkJCTIyRixJbmZvIFRlY2ggQnVpbGRpbmcsTm8uMTU1NSxLb25namlhbmcgUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDA5MgotCQkJCUNISU5BCi0KLTgwLUIyLTg5ICAgKGhleCkJCUZvcndvcmxkIEVsZWN0cm9uaWNzIEx0ZC4KLTgwQjI4OSAgICAgKGJhc2UgMTYpCQlGb3J3b3JsZCBFbGVjdHJvbmljcyBMdGQuCi0JCQkJTm8uMTYgS2V5dWFuIDJuZCBSZC4sIFNpdHVuIERpc3RyaWN0Ci0JCQkJVGFpY2h1bmcgQ2l0eSAgODg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04MC1CMy0yQSAgIChoZXgpCQlBbHN0b20gR3JpZAotODBCMzJBICAgICAoYmFzZSAxNikJCUFsc3RvbSBHcmlkCi0JCQkJU3QgTGVvbmFyZCdzIEF2ZQotCQkJCVN0YWZmb3JkICBTdGFmZm9yZHNoaXJlIFNUMTcgNExYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotODAtQkEtQUMgICAoaGV4KQkJVGVsZUFkYXB0IEx0ZAotODBCQUFDICAgICAoYmFzZSAxNikJCVRlbGVBZGFwdCBMdGQKLQkJCQlBeGlzIDUKLQkJCQlSaG9kZXMgV2F5Ci0JCQkJV2F0Zm9yZCBIZXJ0Zm9yZHNoaXJlIFdEMjQ0WVcKLQkJCQlVTklURUQgS0lOR0RPTQotCi04MC1DNi0zRiAgIChoZXgpCQlSZW1lYyBCcm9hZGJhbmQgV2lyZWxlc3MgLCBMTEMKLTgwQzYzRiAgICAgKGJhc2UgMTYpCQlSZW1lYyBCcm9hZGJhbmQgV2lyZWxlc3MgLCBMTEMKLQkJCQkxNzAzNCBDYW1pbm8gU2FuIEJlcm5hcmRvCi0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC1DNi1BQiAgIChoZXgpCQlUZWNobmljb2xvciBVU0EgSW5jLgotODBDNkFCICAgICAoYmFzZSAxNikJCVRlY2huaWNvbG9yIFVTQSBJbmMuCi0JCQkJMTAxIFdlc3QgMTAzcmQgU3RyZWV0Ci0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC1DNi1DQSAgIChoZXgpCQlFbmRpYW4gcy5yLmwuCi04MEM2Q0EgICAgIChiYXNlIDE2KQkJRW5kaWFuIHMuci5sLgotCQkJCVBpbGxob2YgNDcKLQkJCQlGcmFuZ2FydG8gQm9semFubyAzOTAxMAotCQkJCUlUQUxZCi0KLTgwLUM4LTYyICAgKGhleCkJCU9wZW5wZWFrLCBJbmMKLTgwQzg2MiAgICAgKGJhc2UgMTYpCQlPcGVucGVhaywgSW5jCi0JCQkJMTc1MCBDbGludCBNb29yZSBSZAotCQkJCUJvY2EgUmF0b24gRmxvcmlkYSAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtRDAtMTkgICAoaGV4KQkJRW1iZWQsIEluYwotODBEMDE5ICAgICAoYmFzZSAxNikJCUVtYmVkLCBJbmMKLQkJCQk0MTAgR3JlYXQgUm9hZAotCQkJCUxpdHRsZXRvbiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtRUUtNzMgICAoaGV4KQkJU2h1dHRsZSBJbmMuCi04MEVFNzMgICAgIChiYXNlIDE2KQkJU2h1dHRsZSBJbmMuCi0JCQkJTm8uIDMwIExhbmUgNzYsIFJlaSBLdWFuZyBSZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04MC1GNS05MyAgIChoZXgpCQlJUkNPIFNpc3RlbWFzIGRlIFRlbGVjb211bmljYWNpaT9vZW4gUy5BLgotODBGNTkzICAgICAoYmFzZSAxNikJCUlSQ08gU2lzdGVtYXMgZGUgVGVsZWNvbXVuaWNhY2lpP29lbiBTLkEuCi0JCQkJVmlhIFNlcmdpYSA5OAotCQkJCU1hdGFyaT9vZSBCYXJjZWxvbmEgMDgzMDIKLQkJCQlTUEFJTgotCi04MC1GQi0wNiAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLTgwRkIwNiAgICAgKGJhc2UgMTYpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLQkJCQlCMS03LEh1YXdlaSBJbmR1c3RyaWFsIEJhc2UsQmFudGlhbixMb25nZ2FuZwotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi04NC0xOC04OCAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi04NDE4ODggICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkgCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04NC0yMS00MSAgIChoZXgpCQlTaGVuemhlbiBHaW53YXZlIFRlY2hub2xvZ2llcyBMdGQuCi04NDIxNDEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gR2lud2F2ZSBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTQvRixSMi1BLEhpZ2gtVGVjaCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotODQtMjctQ0UgICAoaGV4KQkJQ29ycG9yYXRpb24gb2YgdGhlIFByZXNpZGluZyBCaXNob3Agb2YgVGhlIENodXJjaCBvZiBKZXN1cyBDaHJpc3Qgb2YgTGF0dGVyLWRheSBTYWludHMKLTg0MjdDRSAgICAgKGJhc2UgMTYpCQlDb3Jwb3JhdGlvbiBvZiB0aGUgUHJlc2lkaW5nIEJpc2hvcCBvZiBUaGUgQ2h1cmNoIG9mIEplc3VzIENocmlzdCBvZiBMYXR0ZXItZGF5IFNhaW50cwotCQkJCUF1ZGlvdmlzdWFsIEVuZ2luZWVyaW5nIC0gMkxMCi0JCQkJNTAgRWFzdCBOb3J0aCBUZW1wbGUKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDE1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotODQtMjktMTQgICAoaGV4KQkJRU1QT1JJQSBURUxFQ09NIFByb2R1a3Rpb25zLSB1bmQgVmVydHJpZWJzZ2VzbWJIICYgQ28gS0cKLTg0MjkxNCAgICAgKGJhc2UgMTYpCQlFTVBPUklBIFRFTEVDT00gUHJvZHVrdGlvbnMtIHVuZCBWZXJ0cmllYnNnZXNtYkggJiBDbyBLRwotCQkJCUluZHVzdHJpZXplaWxlIDM2LCAKLQkJCQlMaW56ICA0MDIwCi0JCQkJQVVTVFJJQQotCi04NC0yQi0yQiAgIChoZXgpCQlEZWxsIEluYy4KLTg0MkIyQiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04NC00OC0yMyAgIChoZXgpCQlXT1hURVIgVEVDSE5PTE9HWSBDby4gTHRkCi04NDQ4MjMgICAgIChiYXNlIDE2KQkJV09YVEVSIFRFQ0hOT0xPR1kgQ28uIEx0ZAotCQkJCTIzRiBEb3VzaGl5YW5nZ3VhbmcsIENoZWdvbmdtaWFvCi0JCQkJRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gIDUxODA0MAotCQkJCUNISU5BCi0KLTg0LTVELUQ3ICAgKGhleCkJCVNoZW56aGVuIE5ldGNvbSBFbGVjdHJvbmljcyBDby4sTHRkCi04NDVERDcgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gTmV0Y29tIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQk4L0YsMSBCdWlsZGluZyxGaW5hbmNlIEJhc2UsTm8uOCxLZWZhIFJvYWQsSGlnaC1UZWNoIFBhcmsKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotODQtNkUtQjEgICAoaGV4KQkJUGFyayBBc3Npc3QgTExDCi04NDZFQjEgICAgIChiYXNlIDE2KQkJUGFyayBBc3Npc3QgTExDCi0JCQkJMTExIFcyOHRoIFN0cmVldAotCQkJCVN1aXRlIDJCCi0JCQkJTmV3IFlvcmsgTlkgMTAwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg0LTkwLTAwICAgKGhleCkJCUFybm9sZCAmYW1wOyBSaWNodGVyIENpbmUgVGVjaG5pawotODQ5MDAwICAgICAoYmFzZSAxNikJCUFybm9sZCAmYW1wOyBSaWNodGVyIENpbmUgVGVjaG5pawotCQkJCVR1ZXJrZW5zdHJhc3NlIDg5Ci0JCQkJTXVuaWNoIEJhdmFyaWEgODA3OTkKLQkJCQlHRVJNQU5ZCi0KLTg0LTk3LUI4ICAgKGhleCkJCU1lbWpldCBJbmMuCi04NDk3QjggICAgIChiYXNlIDE2KQkJTWVtamV0IEluYy4KLQkJCQkxNTkyMCBCZXJuYXJkbyBDZW50ZXIgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg0LUE4LUU0ICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTg0QThFNCAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotODQtQTktOTEgICAoaGV4KQkJQ3liZXIgVHJhbnMgSmFwYW4gQ28uLEx0ZC4KLTg0QTk5MSAgICAgKGJhc2UgMTYpCQlDeWJlciBUcmFucyBKYXBhbiBDby4sTHRkLgotCQkJCTZGIEJsdWViZWxsIEJsZGcKLQkJCQkyLTE1LTkgTmlzaGktR290YW5hZGEKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMzEKLQkJCQlKQVBBTgotCi04NC1DNy0yNyAgIChoZXgpCQlHbm9kYWwgTHRkCi04NEM3MjcgICAgIChiYXNlIDE2KQkJR25vZGFsIEx0ZAotCQkJCTE3OCAtIDE4MCBIb3R3ZWxsIFJvYWQKLQkJCQlCcmlzdG9sICBCUzggNFJQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotODQtQzctQTkgICAoaGV4KQkJQzNQTyBTLkEuCi04NEM3QTkgICAgIChiYXNlIDE2KQkJQzNQTyBTLkEuCi0JCQkJQWxlamFuZHJvIEdvaWNvZWNoZWEgNiBMb2NhbCA5Ci0JCQkJU2FudCBKdXN0IERlc3Zlcm4gQmFyY2Vsb25hIEVTMDg5NjAKLQkJCQlTUEFJTgotCi04NC1EOS1DOCAgIChoZXgpCQlVbmlwYXR0ZXJuIENvLiwKLTg0RDlDOCAgICAgKGJhc2UgMTYpCQlVbmlwYXR0ZXJuIENvLiwKLQkJCQkxNkYuLCBOby4zMC4sIEJlaXBpbmcgRS4gUmQuLCBaaG9uZ3poZW5nIERpc3QuLAotCQkJCVRhaXBlaSAgMTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04NC1EQi0yRiAgIChoZXgpCQlTaWVycmEgV2lyZWxlc3MgSW5jCi04NERCMkYgICAgIChiYXNlIDE2KQkJU2llcnJhIFdpcmVsZXNzIEluYwotCQkJCTEzODEgV2lyZWxlc3MgV2F5Ci0JCQkJUmljaG1vbmQgQkMgVjZWIDNBNAotCQkJCUNBTkFEQQotCi04NC1ERS0zRCAgIChoZXgpCQlDcnlzdGFsIFZpc2lvbiBMdGQKLTg0REUzRCAgICAgKGJhc2UgMTYpCQlDcnlzdGFsIFZpc2lvbiBMdGQKLQkJCQlMaW9uIFRlY2hub2xvZ3kgcGFyawotCQkJCVN0YXRpb24gUm9hZCBlYXN0Ci0JCQkJV2hpdHRsZXNmb3JkLyBDYW1icmlkZ2UgQ2FtYnMgQ0IyMiA0V0wKLQkJCQlVTklURUQgS0lOR0RPTQotCi04NC1FQS05OSAgIChoZXgpCQlWaWV3b3JrcwotODRFQTk5ICAgICAoYmFzZSAxNikJCVZpZXdvcmtzCi0JCQkJNkYgU3VudGVjaGNpdHkgMiwzMDctMiBTYW5nZGFld29uLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbSAgR3llb25nZ2kgNDYyLTgwNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi04NC1GNi00QyAgIChoZXgpCQlDcm9zcyBQb2ludCBCVgotODRGNjRDICAgICAoYmFzZSAxNikJCUNyb3NzIFBvaW50IEJWCi0JCQkJV2FhbmRlcndlZyAxMgotCQkJCUVtbWVuIERyZW50aGUgNzgxMiBIWgotCQkJCU5FVEhFUkxBTkRTCi0KLTg4LTE4LUFFICAgKGhleCkJCVRhbXJvbiBDby4sIEx0ZAotODgxOEFFICAgICAoYmFzZSAxNikJCVRhbXJvbiBDby4sIEx0ZAotCQkJCTEzODUsSGFzdW51bWEsIE1pbnVtYS1rdQotCQkJCVNhaXRhbWEtc2hpIFNhaXRhbWEgMzM3LTg1NTYKLQkJCQlKQVBBTgotCi04OC0yMS1FMyAgIChoZXgpCQlOZWJ1c2VucywgUy5MLgotODgyMUUzICAgICAoYmFzZSAxNikJCU5lYnVzZW5zLCBTLkwuCi0JCQkJQy8gQWRhamEgUy9OLCBFZGlmaWNpbyBNMgotCQkJCVBhcnF1ZSBjaWVudGlmaWNvIGRlIGxhIFVTQUwKLQkJCQlWaWxsYW1heW9yIGRlIGxhIEFybXVpP29lYSBTYWxhbWFuY2EgMzcxODUKLQkJCQlTUEFJTgotCi04OC0yNS0yQyAgIChoZXgpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi04ODI1MkMgICAgIChiYXNlIDE2KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLiwgTk8uOSwgUGFyayBBdmVudWUgSUkgLAotCQkJCUhzaW5jaHUgU2NpZW5jZSBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04OC00MS1DMSAgIChoZXgpCQlPUkJJU0FUIERBIEFNQVpPTklBIElORCBFIEFFUk9MIFNBCi04ODQxQzEgICAgIChiYXNlIDE2KQkJT1JCSVNBVCBEQSBBTUFaT05JQSBJTkQgRSBBRVJPTCBTQQotCQkJCUFWIFNISVNISU1BIEhJRlVNSSwgMjkxMQotCQkJCVVSQkFOT1ZBCi0JCQkJU0FPIEpPU0UgRE9TIENBTVBPUyBTQU8gUEFVTE8gMTIyNDQtMDAwCi0JCQkJQlJBWklMCi0KLTg4LTQzLUUxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTg4NDNFMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg4LTRCLTM5ICAgKGhleCkJCVNpZW1lbnMgQUcsIEhlYWx0aGNhcmUgU2VjdG9yCi04ODRCMzkgICAgIChiYXNlIDE2KQkJU2llbWVucyBBRywgSGVhbHRoY2FyZSBTZWN0b3IKLQkJCQlIZW5rZXN0cmFzc2UgMTI3Ci0JCQkJRXJsYW5nZW4gQmF2YXJpYSA5MTA1MgotCQkJCUdFUk1BTlkKLQotODgtNTMtMkUgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi04ODUzMkUgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi04OC01My1ENCAgIChoZXgpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi04ODUzRDQgICAgIChiYXNlIDE2KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotODgtODYtQTAgICAoaGV4KQkJU2ltdG9uIFRlY2hub2xvZ2llcywgTHRkLgotODg4NkEwICAgICAoYmFzZSAxNikJCVNpbXRvbiBUZWNobm9sb2dpZXMsIEx0ZC4KLQkJCQkyIFRhaXNoYW4gUm9hZCwgQnVpbGRpbmcgQywgM3JkIEZsb29yCi0JCQkJV3V4aSwgIFByb3ZpbmNlIG9mIEppYW5nc3UsICAyMTQwMjgKLQkJCQlDSElOQQotCi04OC04Ny0xNyAgIChoZXgpCQlDQU5PTiBJTkMuCi04ODg3MTcgICAgIChiYXNlIDE2KQkJQ0FOT04gSU5DLgotCQkJCTMtMzAtMixTaGltb21hcnVrbyBPaHRhLUt1Ci0JCQkJVG9reW8gIDE0Ni04NTAxCi0JCQkJSkFQQU4KLQotODgtOEItNUQgICAoaGV4KQkJU3RvcmFnZSBBcHBsaWFuY2UgQ29ycG9yYXRpb24gCi04ODhCNUQgICAgIChiYXNlIDE2KQkJU3RvcmFnZSBBcHBsaWFuY2UgQ29ycG9yYXRpb24gCi0JCQkJMjkgU3UgWmhvdSBKaWUsIEhhaWRpYW4gRGlzdC4KLQkJCQlTdWl0ZSA2MDEtNjAzCi0JCQkJQmVpamluZyAgIDEwMDA4MAotCQkJCUNISU5BCi0KLTg4LThDLTE5ICAgKGhleCkJCUJyYWR5IENvcnAgQXNpYSBQYWNpZmljIEx0ZAotODg4QzE5ICAgICAoYmFzZSAxNikJCUJyYWR5IENvcnAgQXNpYSBQYWNpZmljIEx0ZAotCQkJCTEsIEtha2kgQnVraXQgQ3Jlc2NlbnQKLQkJCQk0MTYyMzYKLQkJCQlTSU5HQVBPUkUKLQotODgtOTEtREQgICAoaGV4KQkJUmFja3Rpdml0eQotODg5MUREICAgICAoYmFzZSAxNikJCVJhY2t0aXZpdHkKLQkJCQlIZXJ0c3Rva3dlZyA1Ci0JCQkJVGVybmF0IEZsYW5kZXJzIDE3NDEKLQkJCQlCRUxHSVVNCi0KLTg4LTk0LUY5ICAgKGhleCkJCUdlbWljb20gVGVjaG5vbG9neSwgSW5jLgotODg5NEY5ICAgICAoYmFzZSAxNikJCUdlbWljb20gVGVjaG5vbG9neSwgSW5jLgotCQkJCTE2RiwgQnVpbGRpbmcgQiwgTm8uIDk4LCBTZWMgMSwgSHNpbi1UYWktV3UgUmQuCi0JCQkJSHNpLUNoaWggY2l0eSBUYWlwZWkgMjIxMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTg4LTk1LUI5ICAgKGhleCkJCVVuaWZpZWQgUGFja2V0IFN5c3RlbXMgQ3JvcAotODg5NUI5ICAgICAoYmFzZSAxNikJCVVuaWZpZWQgUGFja2V0IFN5c3RlbXMgQ3JvcAotCQkJCTFGLiwgTm8zMixMYW5lIDE1LFNFQyA2LCBNaW5RdWFuIEUgUmQuLCAKLQkJCQlUYWlwZWkgTmVpaHUgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04OC05Ny1ERiAgIChoZXgpCQlFbnRyeXBhc3MgQ29ycG9yYXRpb24gU2RuLiBCaGQuCi04ODk3REYgICAgIChiYXNlIDE2KQkJRW50cnlwYXNzIENvcnBvcmF0aW9uIFNkbi4gQmhkLgotCQkJCU5vLjQwLCBKYWxhbiBUUFAgMS8xMCwKLQkJCQlUYW1hbiBJbmR1c3RyaSBQdWNob25nLCBCYXR1IDEyLCBKYWxhbiAKLQkJCQlQdWNob25nIFNlbGFuZ29yIERhcnVsIEVoc2FuIDQ3MTAwCi0JCQkJTUFMQVlTSUEKLQotODgtOTgtMjEgICAoaGV4KQkJVEVSQU9OCi04ODk4MjEgICAgIChiYXNlIDE2KQkJVEVSQU9OCi0JCQkJMkYgU2VvaGFuIEJsZGcuLCAxNTUyLTEwLCBTZW9jaG8tRG9uZywgU2VvY2hvLUd1LAotCQkJCVNlb3VsICAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTg4LTlGLUZBICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTg4OUZGQSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJIE5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLTg4LUE1LUJEICAgKGhleCkJCVFQQ09NIElOQy4KLTg4QTVCRCAgICAgKGJhc2UgMTYpCQlRUENPTSBJTkMuCi0JCQkJNjAzMCBOVyA5OSBBVkUKLQkJCQlTVUlURSA0MDQKLQkJCQlET1JBTCBGTE9SSURBIDMzMTc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04OC1BQy1DMSAgIChoZXgpCQlHZW5lcml0b24gQ28uLCBMdGQuIAotODhBQ0MxICAgICAoYmFzZSAxNikJCUdlbmVyaXRvbiBDby4sIEx0ZC4gCi0JCQkJOEYtMSwgTm8uIDgxLCBTaHVpbGkgUmQuLCAKLQkJCQlIc2luY2h1IENpdHksICAgMzAwNTkgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04OC1BRS0xRCAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04oS1VOU0hBTilDTy4sTFRECi04OEFFMUQgICAgIChiYXNlIDE2KQkJQ09NUEFMIElORk9STUFUSU9OKEtVTlNIQU4pQ08uLExURAotCQkJCU5PLiAyNSwgVEhFIDNSRCBTVFJFRVQgS1VOU0hBTiBFWFBPUlQgUFJPQ0VTU0lORyBaT05FCi0JCQkJS1VOU0hBTiBTVVpIT1UgMjE1MzAwCi0JCQkJQ0hJTkEKLQotODgtQjEtNjggICAoaGV4KQkJRGVsdGEgQ29udHJvbCBHbWJICi04OEIxNjggICAgIChiYXNlIDE2KQkJRGVsdGEgQ29udHJvbCBHbWJICi0JCQkJUm9uZG9yZmVyIEhhdXB0c3RyLiAzMwotCQkJCUNvbG9nbmUgTlJXIDUwOTk3IAotCQkJCUdFUk1BTlkKLQotODgtQjYtMjcgICAoaGV4KQkJR2VtYmlyZCBFdXJvcGUgQlYKLTg4QjYyNyAgICAgKGJhc2UgMTYpCQlHZW1iaXJkIEV1cm9wZSBCVgotCQkJCVdpdHRldnJvdXdlbiA1NgotCQkJCUFsbWVyZSBGbGV2b2xhbmQgMTM1OENECi0JCQkJTkVUSEVSTEFORFMKLQotODgtQkEtN0YgICAoaGV4KQkJUWZpZWRuZXQgQ28uLCBMdGQuCi04OEJBN0YgICAgIChiYXNlIDE2KQkJUWZpZWRuZXQgQ28uLCBMdGQuCi0JCQkJIzIwNCBLSiBCbGRnLiBEYWVDaGktRG9uZwotCQkJCUdhbmdOYW0tR3UKLQkJCQlTZW91bCAgMTM1LTg0NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi04OC1CRi1ENSAgIChoZXgpCQlTaW1wbGUgQXVkaW8gTHRkCi04OEJGRDUgICAgIChiYXNlIDE2KQkJU2ltcGxlIEF1ZGlvIEx0ZAotCQkJCUNhcnRzaWRlIEhvdXNlCi0JCQkJMSBDbGFya3N0b24gUm9hZAotCQkJCUdsYXNnb3cgIEc0NCA0RUYKLQkJCQlVTklURUQgS0lOR0RPTQotCi04OC1DNi02MyAgIChoZXgpCQlBcHBsZSBJbmMKLTg4QzY2MyAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg4LURELTc5ICAgKGhleCkJCVZvbHRhaXJlCi04OERENzkgICAgIChiYXNlIDE2KQkJVm9sdGFpcmUKLQkJCQkxMywgWmFyY2hpbiBTdAotCQkJCVJhYW5hbmEgIDQzNjYyCi0JCQkJSVNSQUVMCi0KLTg4LUUwLUEwICAgKGhleCkJCVNoZW56aGVuIFZpc2lvblNUT1IgVGVjaG5vbG9naWVzIENvLiwgTHRkCi04OEUwQTAgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gVmlzaW9uU1RPUiBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQkxMi9GLCBFYXN0IFRvd2VyLE5hbnNoYW4gU29mdHdhcmUgUGFyawotCQkJCTEwMTI4IFNoZW5uYW4gQmx2ZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi04OC1FRC0xQyAgIChoZXgpCQlDdWRvIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi04OEVEMUMgICAgIChiYXNlIDE2KQkJQ3VkbyBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotCQkJCTEwRiBBcmlyYW5nVFYgMTQ2Ny04MCwgU2VvY2hvLTNkb25nLCBTZW9jaG8tZ3UKLQkJCQlTZW91bCAgMTM3LTg2OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi04OC1GMC03NyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi04OEYwNzcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotODgtRkQtMTUgICAoaGV4KQkJTElORUVZRSBDTy4sIExURAotODhGRDE1ICAgICAoYmFzZSAxNikJCUxJTkVFWUUgQ08uLCBMVEQKLQkJCQk1RiBNYXJ1ZnVrdSBCbGRnLiAzOS0xIEthcmFoYXNoaQotCQkJCU5pc2hpaGlyYWdha2ktY2hvLCBNaW5hbWkta3UKLQkJCQlLeW90byAgNjAxLTg0NjgKLQkJCQlKQVBBTgotCi04Qy0xMS1DQiAgIChoZXgpCQlBQlVTIFNlY3VyaXR5LUNlbnRlciBHbWJIICYgQ28uIEtHCi04QzExQ0IgICAgIChiYXNlIDE2KQkJQUJVUyBTZWN1cml0eS1DZW50ZXIgR21iSCAmIENvLiBLRwotCQkJCUxpbmtlciBLcmV1dGh3ZWcgNQotCQkJCUFmZmluZyAvIE11ZWhsaGF1c2VuIEJhdmFyaWEgODY0NDQKLQkJCQlHRVJNQU5ZCi0KLThDLTFGLTk0ICAgKGhleCkJCVJGIFN1cmdpY2FsIFN5c3RlbSBJbmMuIAotOEMxRjk0ICAgICAoYmFzZSAxNikJCVJGIFN1cmdpY2FsIFN5c3RlbSBJbmMuIAotCQkJCTk3NDAgQXBwYWxvb3NhIFJvYWQgCi0JCQkJU3VpdGUgMTUwIAotCQkJCVNhbiBEaWVnbyAgQ0EgOTIxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLThDLTI3LThBICAgKGhleCkJCVZvY29sbGVjdCBJbmMKLThDMjc4QSAgICAgKGJhc2UgMTYpCQlWb2NvbGxlY3QgSW5jCi0JCQkJNzAzIFJvZGkgUm9hZAotCQkJCVBpdHRzYnVyZ2ggUGEgMTUyMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLThDLTQ0LTM1ICAgKGhleCkJCVNoYW5naGFpIEJyb2FkTW9iaSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi04QzQ0MzUgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgQnJvYWRNb2JpIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSbS4gOTAxLCBCbGQuIDksIE5vLjE1MTUgR3VtZWkgUmQsIFh1aHVpIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLThDLTRELUVBICAgKGhleCkJCUNlcmlvIENvcnBvcmF0aW9uCi04QzRERUEgICAgIChiYXNlIDE2KQkJQ2VyaW8gQ29ycG9yYXRpb24KLQkJCQkyRi4sIE5vLjEwNSwgTWluY3l1YW4gUmQuLCBTaW5kaWFuIENpdHkKLQkJCQlUYWlwZWkgQ291bnR5ICAyMzE0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOEMtNTEtMDUgICAoaGV4KQkJU2hlbnpoZW4gaXJlYWR5Z28gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDTy4sTFRELgotOEM1MTA1ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIGlyZWFkeWdvIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ08uLExURC4KLQkJCQlSb29tIDAyLDExRixERVNBWSBCdWlsZGluZyxOby4xIEhpLVRlY2ggU291dGggUm9hZAotCQkJCVNoZW56aGVuICA1MTgwNTcKLQkJCQlDSElOQQotCi04Qy01My1GNyAgIChoZXgpCQlBJkQgRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi04QzUzRjcgICAgIChiYXNlIDE2KQkJQSZEIEVOR0lORUVSSU5HIENPLiwgTFRELgotCQkJCTMzNi02IERhbmdzYW5kb25nIDYtZ2EsIFllb25nZGV1bmdwby1ndQotCQkJCVNlb3VsICAxNTAtODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLThDLTU0LTFEICAgKGhleCkJCUxHRSAKLThDNTQxRCAgICAgKGJhc2UgMTYpCQlMR0UgCi0JCQkJNjAtMzkgLCBLYXNhbiAtZG9uZyAsIEd1bWNoZW9uLWd1LgotCQkJCVNlb3VsICAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi04Qy01Ni1DNSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLThDNTZDNSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi04Qy01OC03NyAgIChoZXgpCQlBcHBsZSwgSW5jLgotOEM1ODc3ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04Qy01OS04QiAgIChoZXgpCQlDIFRlY2hub2xvZ2llcyBBQgotOEM1OThCICAgICAoYmFzZSAxNikJCUMgVGVjaG5vbG9naWVzIEFCCi0JCQkJVHJha3RvcnZhZ2VuIDExCi0JCQkJTHVuZCBTa2FuZSAyMjYgNjAKLQkJCQlTV0VERU4KLQotOEMtNUMtQTEgICAoaGV4KQkJZC1icm9hZCxJTkMKLThDNUNBMSAgICAgKGJhc2UgMTYpCQlkLWJyb2FkLElOQwotCQkJCTItMTItMyBTaGluWW9rb2hhbWEgS291aG9rdS1LdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotOEMtNUYtREYgICAoaGV4KQkJQmVpamluZyBSYWlsd2F5IFNpZ25hbCBGYWN0b3J5Ci04QzVGREYgICAgIChiYXNlIDE2KQkJQmVpamluZyBSYWlsd2F5IFNpZ25hbCBGYWN0b3J5Ci0JCQkJTm8uMiBTaWN1biBYaWx1IExhbmdmYSxIdWFuZ2N1biwKLQkJCQlEYXhpbmcgQXJlYSwKLQkJCQlCZWlpam5nICAxMDI2MTMKLQkJCQlDSElOQQotCi04Qy02NC0wQiAgIChoZXgpCQlodHRwOi8vc3RhbmRhcmRzLmllZWUub3JnL2Fib3V0L2JvZy9zcHBtdC90YXJnZXQ9JTIyX2JsYW5rJTIyCi04QzY0MEIgICAgIChiYXNlIDE2KQkJaHR0cDovL3N0YW5kYXJkcy5pZWVlLm9yZy9hYm91dC9ib2cvc3BwbXQvdGFyZ2V0PSUyMl9ibGFuayUyMgotCQkJCVRyemFza2EgY2VzdGEgNTE1Ci0JCQkJQnJlem92aWNhIHByaSBManVibGphbmkgIFNJLTEzNTEKLQkJCQlTTE9WRU5JQQotCi04Qy02NC0yMiAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotOEM2NDIyICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLThDLTcxLUY4ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotOEM3MUY4ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi04Qy03My02RSAgIChoZXgpCQlGdWppdHN1IExpbWl0ZWQKLThDNzM2RSAgICAgKGJhc2UgMTYpCQlGdWppdHN1IExpbWl0ZWQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiwKLQkJCQk0MDMsIEtvc3VnaS1jaG8gMS1jaG9tZSxOYWthaGFyYS1rdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMS0wMDYzCi0JCQkJSkFQQU4KLQotOEMtN0ItOUQgICAoaGV4KQkJQXBwbGUKLThDN0I5RCAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotOEMtN0MtQjUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotOEM3Q0I1ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLThDLTdDLUZGICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotOEM3Q0ZGICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTEzMCBIb2xnZXIgV2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLThDLTdFLUIzICAgKGhleCkJCUx5dHJvLCBJbmMuCi04QzdFQjMgICAgIChiYXNlIDE2KQkJTHl0cm8sIEluYy4KLQkJCQkyMDAgVy4gRXZlbHluIEF2ZS4sIFN1aXRlIDEyMAotCQkJCU1vdW50YWluIFZpZXcgQ2FsaWZvcm5pYSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotOEMtODItQTggICAoaGV4KQkJSW5zaWdtYSBUZWNobm9sb2d5IENvLixMdGQKLThDODJBOCAgICAgKGJhc2UgMTYpCQlJbnNpZ21hIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLjIyNiBUaWFubXVzaGFuIFJvYWQsIAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAwMAotCQkJCUNISU5BCi0KLThDLTg0LTAxICAgKGhleCkJCVBSSVZBVEUKLThDODQwMSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotOEMtODktQTUgICAoaGV4KQkJTWljcm8tU3RhciBJTlQnTCBDTy4sIExURAotOEM4OUE1ICAgICAoYmFzZSAxNikJCU1pY3JvLVN0YXIgSU5UJ0wgQ08uLCBMVEQKLQkJCQlOby42OSwgTGlkZSBzdC4KLQkJCQlKaG9uZ2hlIENpdHkKLQkJCQlUYWlwZWkgQ291bnR5ICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLThDLTkwLUQzICAgKGhleCkJCUFsY2F0ZWwgTHVjZW50Ci04QzkwRDMgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQKLQkJCQk2MDAgTWFyY2ggRHJpdmUKLQkJCQlPdHRhd2EgT04gSzJLIDJFNgotCQkJCUNBTkFEQQotCi04Qy05Mi0zNiAgIChoZXgpCQlBdXMuTGlueCBUZWNobm9sb2d5IENvLiwgTHRkLgotOEM5MjM2ICAgICAoYmFzZSAxNikJCUF1cy5MaW54IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJM0YsIE5vLiA3LCBMYW5lIDQ1LCBQYW8tSHNpbiBSZC4sCi0JCQkJSHNpbi1UZWluIFRhaXBlaSBjb3VudHJ5LCAgMjMxNDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLThDLUEwLTQ4ICAgKGhleCkJCUJlaWppbmcgTmVUb3BDaGlwIFRlY2hub2xvZ3kgQ28uLExURAotOENBMDQ4ICAgICAoYmFzZSAxNikJCUJlaWppbmcgTmVUb3BDaGlwIFRlY2hub2xvZ3kgQ28uLExURAotCQkJCTMwOSxJbnRlcmdyYXRpb24gQnVpbGRpbmcgT2x5bXBpYyBDZW50ZXIsIE5vLjEgQW4gRGluZyBSb2FkLENoYW8gWWFuZyBEaXN0cmljdCwsIAotCQkJCUJlaWppbmcgIDEwMDAyOQotCQkJCUNISU5BCi0KLThDLUE5LTgyICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotOENBOTgyICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotOEMtQjYtNEYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotOENCNjRGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotOEMtQjgtNjQgICAoaGV4KQkJQWNTaVAgVGVjaG5vbG9neSBDb3JwLgotOENCODY0ICAgICAoYmFzZSAxNikJCUFjU2lQIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkzRi4sIE5vLjIyLCBEYWxpbiBSZC4sIAotCQkJCVRhb3l1YW4gQ2l0eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04Qy1ENi0yOCAgIChoZXgpCQlJa29yIE1ldGVyaW5nCi04Q0Q2MjggICAgIChiYXNlIDE2KQkJSWtvciBNZXRlcmluZwotCQkJCUZyYW5jaXNjbyBHcmFuZG1vbnRhZ25lIDQKLQkJCQlTYW4gU2ViYXN0aWFuIEd1aXB1emNvYSAyMDAwOAotCQkJCVNQQUlOCi0KLThDLURCLTI1ICAgKGhleCkJCUVTRyBTb2x1dGlvbnMKLThDREIyNSAgICAgKGJhc2UgMTYpCQlFU0cgU29sdXRpb25zCi0JCQkJMjAgSHlwZXJpb24gQ291cnQKLQkJCQlLaW5nc3RvbiBPbnRhcmlvIEs3SyA3SzIKLQkJCQlDQU5BREEKLQotOEMtREQtOEQgICAoaGV4KQkJV2lmbHktQ2l0eSBTeXN0ZW0gSW5jLgotOENERDhEICAgICAoYmFzZSAxNikJCVdpZmx5LUNpdHkgU3lzdGVtIEluYy4KLQkJCQk0Ri4sLTEsTk8gMTA2LFJVRUlHVUFORyBSZC5OZWlodSBEaXN0cmljdCwKLQkJCQlUYWlwZWkgQ2l0eSAgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOEMtRTctQjMgICAoaGV4KQkJU29uYXJkeW5lIEludGVybmF0aW9uYWwgTHRkCi04Q0U3QjMgICAgIChiYXNlIDE2KQkJU29uYXJkeW5lIEludGVybmF0aW9uYWwgTHRkCi0JCQkJQmxhY2tidXNoZSBCdXNpbmVzcyBQYXJrCi0JCQkJWWF0ZWxleSBIYW1wc2hpcmUgR1U0NiA2R0QKLQkJCQlVTklURUQgS0lOR0RPTQotCi04Qy1GOS1DOSAgIChoZXgpCQlNRVNBREEgVGVjaG5vbG9neSBDby4sTHRkLgotOENGOUM5ICAgICAoYmFzZSAxNikJCU1FU0FEQSBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJVG9uZ0ZuZyBJbmZvcm1hdGlvbiBIYXJib3IsTm8uMTEgTGFuZ1NoYW4gUm9hZCxISS10ZWNoIFBhcmssTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotOTAtMDAtNEUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotOTAwMDRFICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQkgTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotOTAtMDEtM0IgICAoaGV4KQkJU0FHRU1DT00KLTkwMDEzQiAgICAgKGJhc2UgMTYpCQlTQUdFTUNPTQotCQkJCTI1MCByb3V0ZSBkZSBsJ0VtcGVyZXVyCi0JCQkJUlVFSUwgTUFMTUFJU09OICA5Mjg0OAotCQkJCUZSQU5DRQotCi05MC0wOS0xNyAgIChoZXgpCQlGYXItc2lnaHRlZCBtb2JpbGUKLTkwMDkxNyAgICAgKGJhc2UgMTYpCQlGYXItc2lnaHRlZCBtb2JpbGUKLQkJCQlUZWNobm9sb2d5IFBhcmsgRGVzYXkgQnVpbGRpbmcgNnRoLUZsb29yCi0JCQkJTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyBQcm92aW5jZSAgNTE4MDAwCi0JCQkJQ0hJTkEKLQotOTAtMEQtNjYgICAoaGV4KQkJRGlnaW1vcmUgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTkwMEQ2NiAgICAgKGJhc2UgMTYpCQlEaWdpbW9yZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCTEwIEZMLiwgTm8uIDYxLCBZYW4tUGluZyBTb3V0aCBSb2FkCi0JCQkJVGFpcGVpICAxMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTkwLTE4LUFFICAgKGhleCkJCVNoYW5naGFpIE1lcmlkaWFuIFRlY2hub2xvZ2llcywgQ28uIEx0ZC4KLTkwMThBRSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBNZXJpZGlhbiBUZWNobm9sb2dpZXMsIENvLiBMdGQuCi0JCQkJU3VpdGUgNkEgVG9uZ3NoZW5nIFRvd2VyCi0JCQkJIzQ1OCBGdXNoYW4gUm9hZAotCQkJCVB1ZG9uZyBzaGFuZ2hhaSAyMDAxMjIKLQkJCQlDSElOQQotCi05MC0xOS0wMCAgIChoZXgpCQlTQ1MgU0EKLTkwMTkwMCAgICAgKGJhc2UgMTYpCQlTQ1MgU0EKLQkJCQlWaWEgUGluaSwgMzIKLQkJCQlCaWFzY2EgIDY3MTAKLQkJCQlTV0lUWkVSTEFORAotCi05MC0yMS01NSAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLTkwMjE1NSAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4yMyBYaW5naHVhIFJvYWQKLQkJCQlUYW95dWFuIENpdHkKLQkJCQlUYW95dWFuIENvdW50eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC0yNy1FNCAgIChoZXgpCQlBcHBsZQotOTAyN0U0ICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENhbGlmb3JuaWEgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLTJFLTg3ICAgKGhleCkJCUxhYkphY2sKLTkwMkU4NyAgICAgKGJhc2UgMTYpCQlMYWJKYWNrCi0JCQkJMzIzMiBTIFZhbmNlIFN0IFNURSAxMDAKLQkJCQlMYWtld29vZCBDTyA4MDIyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtMzQtMkIgICAoaGV4KQkJR2F0ZWtlZXBlciBTeXN0ZW1zLCBJbmMuCi05MDM0MkIgICAgIChiYXNlIDE2KQkJR2F0ZWtlZXBlciBTeXN0ZW1zLCBJbmMuCi0JCQkJOCBTdHVkZWJha2VyCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC0zNC1GQyAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi05MDM0RkMgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotOTAtM0QtNUEgICAoaGV4KQkJU2hlbnpoZW4gV2lzaW9uIFRlY2hub2xvZ3kgSG9sZGluZyBMaW1pdGVkCi05MDNENUEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gV2lzaW9uIFRlY2hub2xvZ3kgSG9sZGluZyBMaW1pdGVkCi0JCQkJUm9vbSAyNkEsIEppbnJ1biBCdWlsZGluZywgTjAuNjAxOSwgU2hlbm5hbiBSZC4sIEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi05MC0zRC02QiAgIChoZXgpCQlaaWNvbiBUZWNobm9sb2d5IENvcnAuCi05MDNENkIgICAgIChiYXNlIDE2KQkJWmljb24gVGVjaG5vbG9neSBDb3JwLgotCQkJCTE1Ri4sIE5vLjY4OC0yLCBaaG9uZ3poZW5nIFJkLiwgWmhvbmdoZSBDaXR5LCBUYWlwZWkgQ291bnR5IDIzNQotCQkJCVRhaXBlaSAgMjM1ODYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTkwLTQ3LTE2ICAgKGhleCkJCVJPUlpFIENPUlBPUkFUSU9OCi05MDQ3MTYgICAgIChiYXNlIDE2KQkJUk9SWkUgQ09SUE9SQVRJT04KLQkJCQkxNTg4LTIgTWljaGlub3VlLCBLYW5uYWJlLWNobwotCQkJCUZ1a3V5YW1hIEhpcm9zaGltYSA3MjAtMjEwNAotCQkJCUpBUEFOCi0KLTkwLTRDLUU1ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTkwNENFNSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMwotCQkJCUNISU5BCi0KLTkwLTUwLTdCICAgKGhleCkJCUFkdmFuY2VkIFBBTk1PQklMIFN5c3RlbXMgR21iSCAmIENvLiBLRwotOTA1MDdCICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFBBTk1PQklMIFN5c3RlbXMgR21iSCAmIENvLiBLRwotCQkJCUhhbnNlc3RyYWk/b2VlIDkxCi0JCQkJQ29sb2duZSBOUlcgNTExNDkKLQkJCQlHRVJNQU5ZCi0KLTkwLTUxLTNGICAgKGhleCkJCUVsZXR0cm9uaWNhIFNhbnRlcm5vCi05MDUxM0YgICAgIChiYXNlIDE2KQkJRWxldHRyb25pY2EgU2FudGVybm8KLQkJCQlTLlMuIFNlbGljZSwgNDcKLQkJCQlJbW9sYSBCb2xvZ25hIDQwMDI2Ci0JCQkJSVRBTFkKLQotOTAtNTQtNDYgICAoaGV4KQkJVEVTIEVMRUNUUk9OSUMgU09MVVRJT05TCi05MDU0NDYgICAgIChiYXNlIDE2KQkJVEVTIEVMRUNUUk9OSUMgU09MVVRJT05TCi0JCQkJSW1tZXVibGUgT2R5c3NlZQotCQkJCVpBQyBkZSBCbG9zc2FjCi0JCQkJQlJVWiAgMzUxNzAKLQkJCQlGUkFOQ0UKLQotOTAtNTUtQUUgICAoaGV4KQkJRXJpY3Nzb24sIEVBQi9SV0kvSwotOTA1NUFFICAgICAoYmFzZSAxNikJCUVyaWNzc29uLCBFQUIvUldJL0sKLQkJCQlTa29sZ2FuZ2VuIDE3Ci0JCQkJR2F2bGUgIFNFLTgwMCAwNgotCQkJCVNXRURFTgotCi05MC01Ri04RCAgIChoZXgpCQltb2RhcyBHbWJICi05MDVGOEQgICAgIChiYXNlIDE2KQkJbW9kYXMgR21iSAotCQkJCUJlbHppZ2VyIFN0ci4gNjktNzEKLQkJCQlCZXJsaW4gIDEwODIzCi0JCQkJR0VSTUFOWQotCi05MC02MS0wQyAgIChoZXgpCQlGaWRhIEludGVybmF0aW9uYWwgKFMpIFB0ZSBMdGQKLTkwNjEwQyAgICAgKGJhc2UgMTYpCQlGaWRhIEludGVybmF0aW9uYWwgKFMpIFB0ZSBMdGQKLQkJCQlCbGsgMTYsIEthbGxhbmcgUGxhY2UgCi0JCQkJIzA2LTAyLCAKLQkJCQkzMzkxNTYKLQkJCQlTSU5HQVBPUkUKLQotOTAtNjctQjUgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTkwNjdCNSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTYwMC03MDAgTW91bnRhaW4gQXZlLgotCQkJCTNBLTIzMEMKLQkJCQlNdXJyYXkgSGlpbGwgTkogMDc5NzQtMDYzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtNjctRjMgICAoaGV4KQkJQWxjYXRlbCBMdWNlbnQKLTkwNjdGMyAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIEx1Y2VudAotCQkJCVZpYSB0cmVudG8sIDMwCi0JCQkJVmltZXJjYXRlIE1CIDIwMDU5Ci0JCQkJSVRBTFkKLQotOTAtNkQtQzggICAoaGV4KQkJRExHIEF1dG9tYWNhbyBJbmR1c3RyaWFsIEx0ZGEKLTkwNkRDOCAgICAgKGJhc2UgMTYpCQlETEcgQXV0b21hY2FvIEluZHVzdHJpYWwgTHRkYQotCQkJCVJ1YSBKb3NlIEJhdGlzdGEgU29hcmVzLCA1MwotCQkJCURpc3RyaXRvIEluZHVzdHJpYWwKLQkJCQlTZXJ0YW96aW5obyBTYW8gUGF1bG8gMTQxNzYtMTE5Ci0JCQkJQlJBWklMCi0KLTkwLTZFLUJCICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTkwNkVCQiAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMwotCQkJCUNISU5BCi0KLTkwLTdGLTYxICAgKGhleCkJCUNoaWNvbnkgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi05MDdGNjEgICAgIChiYXNlIDE2KQkJQ2hpY29ueSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQlOby4yNSwgV3UtR29uZyA2dGggUmQuLCBXdSBLdSBJbmR1c3RyaWFsIFBhcmssIAotCQkJCVRhaXBlaSBIc2llbiwgICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTkwLTg0LTBEICAgKGhleCkJCUFwcGxlLCBJbmMKLTkwODQwRCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC04OC1BMiAgIChoZXgpCQlJT05JQ1MgVEVDSE5PTE9HWSBNRSBMVERBCi05MDg4QTIgICAgIChiYXNlIDE2KQkJSU9OSUNTIFRFQ0hOT0xPR1kgTUUgTFREQQotCQkJCVJVQSBERVAuIEFOVE9OSU8gRURVIFZJRUlSQQotCQkJCUZMT1JJQU4gUE9MSVMgU0FOVEEgQ0FUQVJJTkEgODgwNDAwMDAKLQkJCQlCUkFaSUwKLQotOTAtOEQtMUQgICAoaGV4KQkJR0ggVGVjaG5vbG9naWVzCi05MDhEMUQgICAgIChiYXNlIDE2KQkJR0ggVGVjaG5vbG9naWVzCi0JCQkJNTAyMiBCaW5oZSBSb2FkLCBCbG9jayBCLCBVbml0ZWQgUGxhemEKLQkJCQlTaGVuemhlbiAgNTE4MDI2Ci0JCQkJQ0hJTkEKLQotOTAtOTAtM0MgICAoaGV4KQkJVFJJU09OIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTkwOTAzQyAgICAgKGJhc2UgMTYpCQlUUklTT04gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCU5vLjMsIEt1bmctWWVoIDEydGggUmQuLCBQaW5nLUplbiBJbmR1c3RyaWFsIFBhcmssCi0JCQkJUGluZy1KZW4gQ2l0eSwgIFRhb1l1YW4gQ291bnR5IDMyNDU5Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC05MC02MCAgIChoZXgpCQlSU0kgVklERU8gVEVDSE5PTE9HSUVTCi05MDkwNjAgICAgIChiYXNlIDE2KQkJUlNJIFZJREVPIFRFQ0hOT0xPR0lFUwotCQkJCTU2LCBSdWUgSmVhbi1HaXJhdWRvdXggLSBCQVQgNjAKLQkJCQlQYXJjIGQmIzM5O2FjdGl2aXRpP29lIGRlcyBGb3JnZXMKLQkJCQlTVFJBU0JPVVJHIEJhcy1SaGluIDY3MjAwCi0JCQkJRlJBTkNFCi0KLTkwLUEyLURBICAgKGhleCkJCUdIRU8gU0EKLTkwQTJEQSAgICAgKGJhc2UgMTYpCQlHSEVPIFNBCi0JCQkJVmlhIFNvbGRpbmksIDIyCi0JCQkJQ2hpYXNzbyAgQ0gtNjgzMAotCQkJCVNXSVRaRVJMQU5ECi0KLTkwLUE0LURFICAgKGhleCkJCVdpc3Ryb24gTmV3ZWIgQ29ycC4KLTkwQTRERSAgICAgKGJhc2UgMTYpCQlXaXN0cm9uIE5ld2ViIENvcnAuCi0JCQkJMjAgUGFyayBBdmVudWUgSUksIEhzaW5jaHUgU2NpZW5jZSBQYXJrLCAKLQkJCQlIc2luY2h1ICAgMzA4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC1BNy1DMSAgIChoZXgpCQlQYWtlZGdlIERldmljZSBhbmQgU29mdHdhcmUgSW5jLgotOTBBN0MxICAgICAoYmFzZSAxNikJCVBha2VkZ2UgRGV2aWNlIGFuZCBTb2Z0d2FyZSBJbmMuCi0JCQkJMTAxMSBFZHdhcmRzIFJvYWQKLQkJCQlCdXJsaW5nYW1lIENBIDk0MDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC1COC1EMCAgIChoZXgpCQlKb3llbnQsIEluYy4KLTkwQjhEMCAgICAgKGJhc2UgMTYpCQlKb3llbnQsIEluYy4KLQkJCQkzNDUgQ2FsaWZvcm5pYSBTdHJlZXQsCi0JCQkJU3VpdGUgMjAwMAotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUI5LTdEICAgKGhleCkJCUpvaG5zb24gT3V0ZG9vcnMgTWFyaW5lIEVsZWN0cm9uaWNzIGQvYi9hIE1pbm5rb3RhCi05MEI5N0QgICAgIChiYXNlIDE2KQkJSm9obnNvbiBPdXRkb29ycyBNYXJpbmUgRWxlY3Ryb25pY3MgZC9iL2EgTWlubmtvdGEKLQkJCQkxNTMxIEUgTWFkaXNvbiBBdmUKLQkJCQlNYW5rYXRvIE1OIDU2MDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC1DRi0xNSAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotOTBDRjE1ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi05MC1EMS0xQiAgIChoZXgpCQlQYWxvbWFyIE1lZGljYWwgVGVjaG5vbG9naWVzCi05MEQxMUIgICAgIChiYXNlIDE2KQkJUGFsb21hciBNZWRpY2FsIFRlY2hub2xvZ2llcwotCQkJCTE1IE5ldHdvcmsgRHJpdmUKLQkJCQlCdXJsaW5ndG9uIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC1ENy1FQiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotOTBEN0VCICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtRDgtNTIgICAoaGV4KQkJQ29tdGVjIENvLiwgTHRkLgotOTBEODUyICAgICAoYmFzZSAxNikJCUNvbXRlYyBDby4sIEx0ZC4KLQkJCQkgM0YuLCBOby44MSwgSmlhbmthbmcgUmQuLAotCQkJCVpob25naGUgQ2l0eSBUYWlwZWkgQ291bnR5IDIzNTg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC1EOS0yQyAgIChoZXgpCQlIVUctV0lUU0NISSBBRwotOTBEOTJDICAgICAoYmFzZSAxNikJCUhVRy1XSVRTQ0hJIEFHCi0JCQkJQXVyaWVkc3RyYXNzZSAxMAotCQkJCUJvZXNpbmdlbiBGcmlib3VyZyAzMTc4Ci0JCQkJU1dJVFpFUkxBTkQKLQotOTAtRTAtRjAgICAoaGV4KQkJSUVFRSBQMTcyMiAKLTkwRTBGMCAgICAgKGJhc2UgMTYpCQlJRUVFIFAxNzIyIAotCQkJCTg3NjAgU2FuZHkgUGFya3dheQotCQkJCVNhbmR5IFV0YWggODQwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUUyLUJBICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi05MEUyQkEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTkwLUU2LUJBICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotOTBFNkJBICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsIAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC1FQS02MCAgIChoZXgpCQlTUEkgTGFzZXJzIEx0ZCAKLTkwRUE2MCAgICAgKGJhc2UgMTYpCQlTUEkgTGFzZXJzIEx0ZCAKLQkJCQk2IHdlbGxpbmd0b24gUGFyawotCQkJCUhlZGdlIEVuZAotCQkJCVNvdXRoYW1wdG9uIEhhbXBzaGlyZSBTMDMwMlFVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotOTAtRjItNzggICAoaGV4KQkJUmFkaXVzIEdhdGV3YXkKLTkwRjI3OCAgICAgKGJhc2UgMTYpCQlSYWRpdXMgR2F0ZXdheQotCQkJCTUyMCBFLiBNb250Zm9yZCBBdmUKLQkJCQlBZGEgT0ggNDU4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUZCLTVCICAgKGhleCkJCUF2YXlhLCBJbmMKLTkwRkI1QiAgICAgKGJhc2UgMTYpCQlBdmF5YSwgSW5jCi0JCQkJMjExIE1vdW50IEFpcnkgUm9hZCAKLQkJCQlCYXNraW5nIFJpZGdlIE5KIDA3OTIwLTIzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUZCLUE2ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby5MdGQKLTkwRkJBNiAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uTHRkCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05NC0wQy02RCAgIChoZXgpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotOTQwQzZEICAgICAoYmFzZSAxNikJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJQnVpbGRpbmcgNywgU2Vjb25kIFBhcnQsIEhvbmdodWFsaW5nIEluZHVzdHJpYWwgWm9uZQotCQkJCVhpbGkgdG93biwgTmFuc2hhbiwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotOTQtMTEtREEgICAoaGV4KQkJSVRGIEZyb3NjaGwgR21iSAotOTQxMURBICAgICAoYmFzZSAxNikJCUlURiBGcm9zY2hsIEdtYkgKLQkJCQlIYXVzZXJiYWNoc3RyLiA3IC0gMTAKLQkJCQkgV2FsZGVyYmFjaCBCYXZhcmlhIDkzMTk0Ci0JCQkJR0VSTUFOWQotCi05NC0xNi03MyAgIChoZXgpCQlQb2ludCBDb3JlIFNBUkwKLTk0MTY3MyAgICAgKGJhc2UgMTYpCQlQb2ludCBDb3JlIFNBUkwKLQkJCQkyOS8zMSBSdWUgZHUgQm9pcyBHYWxvbgotCQkJCUZPTlRFTkFZIFNPVVMgQk9JUyBJbGUgZGUgRnJhbmNlIDk0MTIwCi0JCQkJRlJBTkNFCi0KLTk0LTIwLTUzICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi05NDIwNTMgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLTk0LTIzLTZFICAgKGhleCkJCVNoZW56aGVuIEp1bmxhbiBFbGVjdHJvbmljIEx0ZAotOTQyMzZFICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEp1bmxhbiBFbGVjdHJvbmljIEx0ZAotCQkJCUJsb2NrIEMsTm8uMiBJbmR1c3RyaWFsIERpc3RyaWN0LCBGdXl1YW4sIFRhbmd3ZWksRnV5b25nLCBCYW8nYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAzCi0JCQkJQ0hJTkEKLQotOTQtMkUtNjMgICAoaGV4KQkJRmluc2VjdXIKLTk0MkU2MyAgICAgKGJhc2UgMTYpCQlGaW5zZWN1cgotCQkJCTUyIHJ1ZSBQYXVsIExlc2NvcAotCQkJCU5hbnRlcnJlICA5MjAwMAotCQkJCUZSQU5DRQotCi05NC0zMy1ERCAgIChoZXgpCQlUYWNvIEVsZWN0cm9uaWMgU29sdXRpb25zLCBJbmMuCi05NDMzREQgICAgIChiYXNlIDE2KQkJVGFjbyBFbGVjdHJvbmljIFNvbHV0aW9ucywgSW5jLgotCQkJCTExNjAgQ3JhbnN0b24gU3RyZWV0Ci0JCQkJQ3JhbnN0b24gUkkgMDI5MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LTM5LUU1ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi05NDM5RTUgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLTk0LTQ0LTUyICAgKGhleCkJCUJlbGtpbiBJbnRlcm5hdGlvbmFsLCBJbmMuCi05NDQ0NTIgICAgIChiYXNlIDE2KQkJQmVsa2luIEludGVybmF0aW9uYWwsIEluYy4KLQkJCQk1MDEgVy4gV2FsbnV0IFN0LgotCQkJCUNvbXB0b24gQ0EgOTAyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LTQ2LTk2ICAgKGhleCkJCUJhdWRUZWMgQ29ycG9yYXRpb24KLTk0NDY5NiAgICAgKGJhc2UgMTYpCQlCYXVkVGVjIENvcnBvcmF0aW9uCi0JCQkJMTJGLCBOby4xODEsIFNlYy4xLlRhdHVuZyBSZC4KLQkJCQlIc2ktY2hpaCBUYWlwZWkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05NC01OS0yRCAgIChoZXgpCQlFS0UgQnVpbGRpbmcgVGVjaG5vbG9neSBTeXN0ZW1zIEx0ZAotOTQ1OTJEICAgICAoYmFzZSAxNikJCUVLRSBCdWlsZGluZyBUZWNobm9sb2d5IFN5c3RlbXMgTHRkCi0JCQkJUGlpc3BhbnBvcnR0aSA3Ci0JCQkJRXNwb28gLSAwMjI0MAotCQkJCUZJTkxBTkQKLQotOTQtNUItN0UgICAoaGV4KQkJVFJJTE9CSVQgTFREQS4KLTk0NUI3RSAgICAgKGJhc2UgMTYpCQlUUklMT0JJVCBMVERBLgotCQkJCVIuIEFMVkFSRU5HQSAxMzc3Ci0JCQkJQlVUQU5UQQotCQkJCVNBTyBQQVVMTyAgMDU1MDkwMDIKLQkJCQlCUkFaSUwKLQotOTQtODEtQTQgICAoaGV4KQkJQXp1cmF5IFRlY2hub2xvZ2llcwotOTQ4MUE0ICAgICAoYmFzZSAxNikJCUF6dXJheSBUZWNobm9sb2dpZXMKLQkJCQk3NDcwIFNXIEJyaWRnZXBvcnQgUmQKLQkJCQlEdXJoYW0gT1IgOTcyMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LTg1LTdBICAgKGhleCkJCUV2YW50YWdlIEluZHVzdHJpZXMgQ29ycAotOTQ4NTdBICAgICAoYmFzZSAxNikJCUV2YW50YWdlIEluZHVzdHJpZXMgQ29ycAotCQkJCTgxNSBCcmlkZ2UgU3QuIFcuCi0JCQkJV2F0ZXJsb28gT250YXJpbyBOMlYgMk03Ci0JCQkJQ0FOQURBCi0KLTk0LTg4LTU0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi05NDg4NTQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LThCLTAzICAgKGhleCkJCUVBR0VUIElubm92YXRpb24gYW5kIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi05NDhCMDMgICAgIChiYXNlIDE2KQkJRUFHRVQgSW5ub3ZhdGlvbiBhbmQgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzL0YsIEJ1aWxkaW5nIDQsIExpYW5jaHVhbmcgVGVjaG5vbG9neSBQYXJrLEJ1amkgVG93biwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTEyCi0JCQkJQ0hJTkEKLQotOTQtOEQtNTAgICAoaGV4KQkJQmVhbWV4IE95IEFiCi05NDhENTAgICAgIChiYXNlIDE2KQkJQmVhbWV4IE95IEFiCi0JCQkJUmlzdGlzdW9ucmFpdHRpIDEwCi0JCQkJUGlldGFyc2FhcmkgIEZJLTY4NjAwCi0JCQkJRklOTEFORAotCi05NC04Ri1FRSAgIChoZXgpCQlIdWdoZXMgVGVsZW1hdGljcywgSW5jLgotOTQ4RkVFICAgICAoYmFzZSAxNikJCUh1Z2hlcyBUZWxlbWF0aWNzLCBJbmMuCi0JCQkJMjAwMiBTdW1taXQgQmx2ZAotCQkJCVN1aXRlIDE4MDAKLQkJCQlBdGxhbnRhIEdBIDMwMzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05NC05Qy01NSAgIChoZXgpCQlBbHRhIERhdGEgVGVjaG5vbG9naWVzCi05NDlDNTUgICAgIChiYXNlIDE2KQkJQWx0YSBEYXRhIFRlY2hub2xvZ2llcwotCQkJCTQ5MDEgUm9ja2F3YXkgQmx2ZCwgQnVpbGRpbmcgQQotCQkJCVJpbyBSYW5jaG8gTk0gODcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LUE3LUJDICAgKGhleCkJCUJvZHlNZWRpYSwgSW5jLgotOTRBN0JDICAgICAoYmFzZSAxNikJCUJvZHlNZWRpYSwgSW5jLgotCQkJCTQyMCBGb3J0IER1cXVlc25lIEJsdmQKLQkJCQlHYXRld2F5IDEsIFN1aXRlIDE5MDAKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05NC1BQS1COCAgIChoZXgpCQlKb3ZpZXcoQmVpamluZykgVGVjaG5vbG9neSBDby4gTHRkLgotOTRBQUI4ICAgICAoYmFzZSAxNikJCUpvdmlldyhCZWlqaW5nKSBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJUm9vbSAzMDIsIFNvdXRoIEJ1aWxkaW5nCi0JCQkJTm8uODAgWHVleXVhbm5hbmx1Ci0JCQkJQmVpamluZyAgMTAwMDgxCi0JCQkJQ0hJTkEKLQotOTQtQkEtMzEgICAoaGV4KQkJVmlzaW9udGVjIGRhIEFtYXpvbmlhIEx0ZGEuCi05NEJBMzEgICAgIChiYXNlIDE2KQkJVmlzaW9udGVjIGRhIEFtYXpvbmlhIEx0ZGEuCi0JCQkJUm9kLiBHZXJhbGRvIFNjYXZvbmUsIDIzMDAgLSBHYWxwYW8gMjcKLQkJCQlDYWxpZm9ybmlhIENlbnRlciAtIFBxLiBDYWxpZm9ybmlhCi0JCQkJSmFjYXJlaSBTUCAxMjMwNS00OTAKLQkJCQlCUkFaSUwKLQotOTQtQzQtRTkgICAoaGV4KQkJUG93ZXJMYXllciBNaWNyb3N5c3RlbXMgSG9uZ0tvbmcgTGltaXRlZAotOTRDNEU5ICAgICAoYmFzZSAxNikJCVBvd2VyTGF5ZXIgTWljcm9zeXN0ZW1zIEhvbmdLb25nIExpbWl0ZWQKLQkJCQkyMyBaaGljaHVuIFJkLExpYW5neml5aW56dW8gUm0xMDA5Ci0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4MwotCQkJCUNISU5BCi0KLTk0LUM3LUFGICAgKGhleCkJCVJheWxpb3MgVGVjaG5vbG9neQotOTRDN0FGICAgICAoYmFzZSAxNikJCVJheWxpb3MgVGVjaG5vbG9neQotCQkJCTEyRi4sIE5vLjE2LCBKaWFuIDh0aCBSZAotCQkJCVpob25naGUgQ2l0eSBUYWlwZWkgQ291bnR5ICAyMzUxMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTQtQ0QtQUMgICAoaGV4KQkJQ3Jlb3dhdmUgT3kKLTk0Q0RBQyAgICAgKGJhc2UgMTYpCQlDcmVvd2F2ZSBPeQotCQkJCUxlbnRva2F0dSAyCi0JCQkJT3VsdW5zYWxvICBGSU4tOTA0NjAKLQkJCQlGSU5MQU5ECi0KLTk0LUQwLTE5ICAgKGhleCkJCUN5ZGxlIENvcnAuCi05NEQwMTkgICAgIChiYXNlIDE2KQkJQ3lkbGUgQ29ycC4KLQkJCQkxMjAzLCBLb2ZvbW9Ub3dlciwgMTYtMyAsIFN1bmFlLURvbmcsIEJ1bmRhbmctR3UKLQkJCQlTZW9uZ25hbS1DaXR5IEd5ZW9uZ2dpLURvIDQ2MzgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05NC1EOS0zQyAgIChoZXgpCQlFTkVMUFMKLTk0RDkzQyAgICAgKGJhc2UgMTYpCQlFTkVMUFMKLQkJCQlCdWwgQXJzZW5pamEgQ2Fybm9qZXZpY2EgMTE3Ci0JCQkJQmVsZ3JhZGUgIDExMDcwCi0JCQkJU0VSQklBCi0KLTk0LURELTNGICAgKGhleCkJCUErViBMaW5rIFRlY2hub2xvZ2llcywgQ29ycC4KLTk0REQzRiAgICAgKGJhc2UgMTYpCQlBK1YgTGluayBUZWNobm9sb2dpZXMsIENvcnAuCi0JCQkJNUYuLCBOby41NTAsIFhpYW56aGVuZyAybmQgUmQuCi0JCQkJWmh1YmVpIENpdHkgSHNpbmNodSBDb3VudHJ5IDMwMjY4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05NC1FMi0yNiAgIChoZXgpCQlELiBPUnRpeiBDb25zdWx0aW5nLCBMTEMKLTk0RTIyNiAgICAgKGJhc2UgMTYpCQlELiBPUnRpeiBDb25zdWx0aW5nLCBMTEMKLQkJCQkyMjYwMSBOLiAxN3RoIEF2ZW51ZSBTdWl0ZSAyNzAKLQkJCQlQaG9lbml4IEFaIDg1MDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05NC1FNy0xMSAgIChoZXgpCQlYaXJrYSBEYW1hIFBlcnNhZGEgUFQKLTk0RTcxMSAgICAgKGJhc2UgMTYpCQlYaXJrYSBEYW1hIFBlcnNhZGEgUFQKLQkJCQlHZGcgQ00KLQkJCQlKbG4gTWF0cmFtYW4gSSBObyA5Ci0JCQkJSmFrYXJ0YSAgMTMxNTAKLQkJCQlJTkRPTkVTSUEKLQotOTQtRTgtNDggICAoaGV4KQkJRllMREUgTUlDUk8gTFRECi05NEU4NDggICAgIChiYXNlIDE2KQkJRllMREUgTUlDUk8gTFRECi0JCQkJOCBBVlJPRSBDUkVTQ0VOVAotCQkJCUJMQUNLUE9PTCBMQU5DQVNISVJFIEZZNCAyRFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi05NC1GNi05MiAgIChoZXgpCQlHZW1pbmljbyBjby4sTHRkLgotOTRGNjkyICAgICAoYmFzZSAxNikJCUdlbWluaWNvIGNvLixMdGQuCi0JCQkJIzEwMi0xMTEyLCBDaHVudWktVGVjaG5vcGFyaywgMjAwLTEsCi0JCQkJQ2h1bnVpLWRvbmcsIFdvbm1pLWd1Ci0JCQkJQnVjaGVvbi1jaXR5IEt5dW5nZ2ktZG8gNDIwLTg1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05NC1GNy0yMCAgIChoZXgpCQlUaWFuamluIERldmlzZXIgRWxlY3Ryb25pY3MgSW5zdHJ1bWVudCBDby4sIEx0ZAotOTRGNzIwICAgICAoYmFzZSAxNikJCVRpYW5qaW4gRGV2aXNlciBFbGVjdHJvbmljcyBJbnN0cnVtZW50IENvLiwgTHRkCi0JCQkJTm8uNDAgWWliaW4gUm9hZCxOYW5rYWkgZGlzdHJpY3QsCi0JCQkJVGlhbmppbiAgMzAwMTEzCi0JCQkJQ0hJTkEKLQotOTQtRkQtMUQgICAoaGV4KQkJV2hlcmVXaGVuIENvcnAKLTk0RkQxRCAgICAgKGJhc2UgMTYpCQlXaGVyZVdoZW4gQ29ycAotCQkJCTk2QSBGbHlubiBBdmVudWUKLQkJCQlNb3VudGFpbiBWaWV3IENhbGlmb3JuaWEgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LUZFLUY0ICAgKGhleCkJCVNBR0VNQ09NCi05NEZFRjQgICAgIChiYXNlIDE2KQkJU0FHRU1DT00KLQkJCQkyNTAgcm91dGUgZGUgbCdFbXBlcmV1cgotCQkJCVJVRUlMIE1BTE1BSVNPTiAgOTI4NDgKLQkJCQlGUkFOQ0UKLQotOTgtMDMtQTAgICAoaGV4KQkJQUJCIG4udi4gUG93ZXIgUXVhbGl0eSBQcm9kdWN0cwotOTgwM0EwICAgICAoYmFzZSAxNikJCUFCQiBuLnYuIFBvd2VyIFF1YWxpdHkgUHJvZHVjdHMKLQkJCQkxMCBhbGxpP29lZSBjZW50cmFsZQotCQkJCUp1bWV0ICA2MDQwCi0JCQkJQkVMR0lVTQotCi05OC0wMy1EOCAgIChoZXgpCQlBcHBsZSwgSW5jLgotOTgwM0Q4ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC0wQy04MiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm8gTWVjaGFuaWNzCi05ODBDODIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvIE1lY2hhbmljcwotCQkJCU1ldGFuIERvbmcgMzE0LCBZb3VuZ3RvbmcgR3UKLQkJCQlTdXdvbiBLeXVuZy1naSBEby4gNDQzLTc0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05OC0wRS1FNCAgIChoZXgpCQlQUklWQVRFCi05ODBFRTQgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTk4LTI5LTNGICAgKGhleCkJCUZ1amlhbiBTdGFydCBDb21wdXRlciBFcXVpcG1lbnQgQ28uLEx0ZAotOTgyOTNGICAgICAoYmFzZSAxNikJCUZ1amlhbiBTdGFydCBDb21wdXRlciBFcXVpcG1lbnQgQ28uLEx0ZAotCQkJCU5vLjY4IEhvbmdzaGFuZ3l1YW4gUm9hZCwgIAotCQkJCUZ1emhvdSBDaXR5LCAgRnVqaWFuIFByb3ZpbmNlLCAzNTAwMDIKLQkJCQlDSElOQQotCi05OC0yQy1CRSAgIChoZXgpCQkyV2lyZQotOTgyQ0JFICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBrd3kKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtMkQtNTYgICAoaGV4KQkJUmVzb2x1dGlvbiBBdWRpbwotOTgyRDU2ICAgICAoYmFzZSAxNikJCVJlc29sdXRpb24gQXVkaW8KLQkJCQk4OCBIb2ZmIFN0cmVldCAjMTA2Ci0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtMzAtMDAgICAoaGV4KQkJQmVpamluZyBLRU1BQ09NIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTk4MzAwMCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEtFTUFDT00gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCVJvb20gMjA4LCBCdWlsZGluZyA2LCBOby41MCwgWGkgU2FuIEh1YW4gQmVpIFJvYWQgCi0JCQkJSGFpZGlhbiBEaXN0cmljdCwgCi0JCQkJQmVpamluZyAgMTAwMDQ0Ci0JCQkJQ0hJTkEKLQotOTgtMzUtQjggICAoaGV4KQkJQXNzZW1ibGVkIFByb2R1Y3RzIENvcnBvcmF0aW9uCi05ODM1QjggICAgIChiYXNlIDE2KQkJQXNzZW1ibGVkIFByb2R1Y3RzIENvcnBvcmF0aW9uCi0JCQkJMTE1IEUuIExpbmRlbgotCQkJCVJvZ2VycyBBcmthbnNhcyA3Mjc1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtNDItNDYgICAoaGV4KQkJU09MIElORFVTVFJZIFBURS4sIExURAotOTg0MjQ2ICAgICAoYmFzZSAxNikJCVNPTCBJTkRVU1RSWSBQVEUuLCBMVEQKLQkJCQkgMSBOT1JUSCBCUklER0UgUkQuLAotCQkJCSAjMjQtMDUsIEhJR0ggU1RSRUVUIENFTlRSRSwKLQkJCQkxNzkwOTQKLQkJCQlTSU5HQVBPUkUKLQotOTgtNEItNEEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHkgSW5jLgotOTg0QjRBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5IEluYy4KLQkJCQk2MDAgTm9ydGggVVMgSGlnaHdheSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtNEItRTEgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi05ODRCRTEgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk4LTRFLTk3ICAgKGhleCkJCVN0YXJsaWdodCBNYXJrZXRpbmcgKEguIEsuKSBMdGQuCi05ODRFOTcgICAgIChiYXNlIDE2KQkJU3RhcmxpZ2h0IE1hcmtldGluZyAoSC4gSy4pIEx0ZC4KLQkJCQk1L0YuLCBTaGluZyBEYW8gSW5kdXN0cmlhbCBCdWlsZGluZywgCi0JCQkJMjMyIEFiZXJkZWVuIE1haW4gUm9hZAotCQkJCUhPTkcgS09ORwotCi05OC01OS00NSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotOTg1OTQ1ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC02MC0yMiAgIChoZXgpCQlFTVcgQ28uLCBMdGQuCi05ODYwMjIgICAgIChiYXNlIDE2KQkJRU1XIENvLiwgTHRkLgotCQkJCTgwQi00TCwgNjgwLTMgR29qYW4tRG9uZwotCQkJCU5hbWRvbmctR3UKLQkJCQlJbmNoZW9uICA0MDUtODE5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTk4LTY2LUVBICAgKGhleCkJCUluZHVzdHJpYWwgQ29udHJvbCBDb21tdW5pY2F0aW9ucywgSW5jLgotOTg2NkVBICAgICAoYmFzZSAxNikJCUluZHVzdHJpYWwgQ29udHJvbCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTE2MDAgQXNwZW4gQ29tbW9ucwotCQkJCVN1aXRlIDIxMAotCQkJCU1pZGRsZXRvbiBXSSA1MzU2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtNkQtQzggICAoaGV4KQkJVE9TSElCQSBNSVRTVUJJU0hJLUVMRUNUUklDIElORFVTVFJJQUwgU1lTVEVNUyBDT1JQT1JBVElPTgotOTg2REM4ICAgICAoYmFzZSAxNikJCVRPU0hJQkEgTUlUU1VCSVNISS1FTEVDVFJJQyBJTkRVU1RSSUFMIFNZU1RFTVMgQ09SUE9SQVRJT04KLQkJCQlNSVRBIDQzTVQgQkxERy4KLQkJCQkxMy0xNk1JVEEgMy1DSE9NRSxNSU5BVE8tS1UKLQkJCQlUT0tZTyBKQVBBTiAxMDgtMDA3MwotCQkJCUpBUEFOCi0KLTk4LTczLUM0ICAgKGhleCkJCVNhZ2UgRWxlY3Ryb25pYyBFbmdpbmVlcmluZyBMTEMKLTk4NzNDNCAgICAgKGJhc2UgMTYpCQlTYWdlIEVsZWN0cm9uaWMgRW5naW5lZXJpbmcgTExDCi0JCQkJMjAxIFRlcnJ5IFN0LgotCQkJCVN1aXRlIDFBCi0JCQkJTG9uZ21vbnQgQ08gODA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk4LTg5LUVEICAgKGhleCkJCUFuYWRlbSBJbmZvcm1hdGlvbiBJbmMuCi05ODg5RUQgICAgIChiYXNlIDE2KQkJQW5hZGVtIEluZm9ybWF0aW9uIEluYy4KLQkJCQkybmQgRiwgNzkgWmhvdXppIFN0cmVldCwgTmVpaHUgRGlzdHJpY3QsIAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05OC04Qi01RCAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi05ODhCNUQgICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCTI1MCByb3V0ZSBkZSBsJ0VtcGVyZXVyCi0JCQkJUnVlaWwgTWFsbWFpc29uICA5Mjg0OAotCQkJCUZSQU5DRQotCi05OC04RS0zNCAgIChoZXgpCQlaSEVKSUFORyBCT1hTQU0gRUxFQ1RST05JQyBDTy4sTFRECi05ODhFMzQgICAgIChiYXNlIDE2KQkJWkhFSklBTkcgQk9YU0FNIEVMRUNUUk9OSUMgQ08uLExURAotCQkJCU5vLjI4OCxMT05HVEFOIFJPQUQsCi0JCQkJSklOSFVBIENJVFkgWkhFSklBTkcgUFJPVklOQ0UsIDMyMTAxNwotCQkJCUNISU5BCi0KLTk4LThFLUREICAgKGhleCkJCVJheWNoZW0gSW50ZXJuYXRpb25hbAotOTg4RUREICAgICAoYmFzZSAxNikJCVJheWNoZW0gSW50ZXJuYXRpb25hbAotCQkJCUJheSAxMDUsIAotCQkJCVNoYW5ub24gSW5kdXN0cmlhbCBFc3RhdGUsCi0JCQkJU2hhbm5vbiwgQ28uIENsYXJlIEVpcmUKLQkJCQlJUkVMQU5ECi0KLTk4LTk0LTQ5ICAgKGhleCkJCVNreXdvcnRoIFdpcmVsZXNzIFRlY2hub2xvZ3kgTHRkLgotOTg5NDQ5ICAgICAoYmFzZSAxNikJCVNreXdvcnRoIFdpcmVsZXNzIFRlY2hub2xvZ3kgTHRkLgotCQkJCVVuaXQgQSBSbS4zQTAxLCBTa3l3b3J0aCBCbGRnLiwgR2FveGluIEF2ZS4gMS5TLiwKLQkJCQlOYW5zaGFuIERpc3RyaWN0IFNoZW56aGVuIDUxODA1NwotCQkJCUNISU5BCi0KLTk4LUJDLTk5ICAgKGhleCkJCUVkZWx0ZWNoIENvLixMdGQuCi05OEJDOTkgICAgIChiYXNlIDE2KQkJRWRlbHRlY2ggQ28uLEx0ZC4KLQkJCQkjMzAyIEphbWFlIEJsZGcsIDEwMTAtMjgsIFNhZGFuZy1kb25nLCBEb25namFrPWd1Ci0JCQkJU2VvdWwgIDE1Ni04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOTgtRDgtOEMgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi05OEQ4OEMgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLTk4LURDLUQ5ICAgKGhleCkJCVVOSVRFQyBDby4sIEx0ZC4KLTk4RENEOSAgICAgKGJhc2UgMTYpCQlVTklURUMgQ28uLCBMdGQuCi0JCQkJMS0yLTEtU2hpbnlva29oYW1hCi0JCQkJS29ob2t1LWt1Ci0JCQkJWW9rb2hhbWEtc2hpIEthbmFnYXdhIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotOTgtRTEtNjUgICAoaGV4KQkJQWNjdXRvbWUKLTk4RTE2NSAgICAgKGJhc2UgMTYpCQlBY2N1dG9tZQotCQkJCTMyMjIgUGhvZW5peHZpbGxlIFBpa2UKLQkJCQlNYWx2ZXJuIFBBIDE5MzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC1FNy05QSAgIChoZXgpCQlGb3hjb25uKE5hbkppbmcpIENvbW11bmljYXRpb24gQ28uLEx0ZC4KLTk4RTc5QSAgICAgKGJhc2UgMTYpCQlGb3hjb25uKE5hbkppbmcpIENvbW11bmljYXRpb24gQ28uLEx0ZC4KLQkJCQlBLTJGTWluZmFuZyBCdWlsZGluZyBOby4xODkgR3Vhbmd6aG91IFJkIAotCQkJCU5hbmppbmcgSmlhbmcgc3UgMjEwMDI5Ci0JCQkJQ0hJTkEKLQotOTgtRUMtNjUgICAoaGV4KQkJQ29zZXN5IEFwUwotOThFQzY1ICAgICAoYmFzZSAxNikJCUNvc2VzeSBBcFMKLQkJCQlUeXR0ZWJhZXJ2ZWogMgotCQkJCUFucyBKeWxsYW5kIERLLTg2NDMKLQkJCQlERU5NQVJLCi0KLTk4LUY1LTM3ICAgKGhleCkJCXp0ZSBjb3Jwb3JhdGlvbgotOThGNTM3ICAgICAoYmFzZSAxNikJCXp0ZSBjb3Jwb3JhdGlvbgotCQkJCTEyL0YuLHp0ZSBSJkQgYnVpbGRpbmcsa2VqaW5hbiBSb2FkLAotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi05OC1GOC1EQiAgIChoZXgpCQlNYXJpbmkgSW1waWFudGkgSW5kdXN0cmlhbGkgcy5yLmwuCi05OEY4REIgICAgIChiYXNlIDE2KQkJTWFyaW5pIEltcGlhbnRpIEluZHVzdHJpYWxpIHMuci5sLgotCQkJCVZpYSBkZWxsZSBQcm92aW5jZSwgNkEKLQkJCQkoWm9uYSBBcnRpZ2lhbmFsZSkKLQkJCQlDaXN0ZXJuYSBkaSBMYXRpbmEgIDA0MDEyCi0JCQkJSVRBTFkKLQotOTgtRkMtMTEgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi05OEZDMTEgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTMxIFRoZXJveSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy0xOC03NCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotOUMxODc0ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi05Qy0yMi0wRSAgIChoZXgpCQlUQVNDQU4gU2VydmljZSBHbWJICi05QzIyMEUgICAgIChiYXNlIDE2KQkJVEFTQ0FOIFNlcnZpY2UgR21iSAotCQkJCU1heC1QbGFuY2stU3RyLiAzOAotCQkJCUNvbG9nbmUgTlJXIDUwODU4Ci0JCQkJR0VSTUFOWQotCi05Qy0yOC1CRiAgIChoZXgpCQlDb250aW5lbnRhbCBBdXRvbW90aXZlIEN6ZWNoIFJlcHVibGljIHMuci5vLgotOUMyOEJGICAgICAoYmFzZSAxNikJCUNvbnRpbmVudGFsIEF1dG9tb3RpdmUgQ3plY2ggUmVwdWJsaWMgcy5yLm8uCi0JCQkJUHJpP29lbXlzbG92aT9vZSAxODUxCi0JCQkJQnJhbmRpP29lcyBuYWQgTGFiZW0gIDI1MCAwMSAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi05Qy0zMS1CNiAgIChoZXgpCQlLdWxpdGUgU2VtaWNvbmR1Y3RvciBQcm9kdWN0cyBJbmMKLTlDMzFCNiAgICAgKGJhc2UgMTYpCQlLdWxpdGUgU2VtaWNvbmR1Y3RvciBQcm9kdWN0cyBJbmMKLQkJCQkxIFdpbGxvdyBUcmVlIFJkCi0JCQkJTGVvbmlhIE5KIDA3NjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy00MS03QyAgIChoZXgpCQlIYW1lICBUZWNobm9sb2d5IENvLiwgIExpbWl0ZWQgCi05QzQxN0MgICAgIChiYXNlIDE2KQkJSGFtZSAgVGVjaG5vbG9neSBDby4sICBMaW1pdGVkIAotCQkJCTVGLCBOby4gMTggSGlnaCBUZWNoIE1pZGRsZSBBdmVudWUgT25lLCBIaWdoIFRlY2ggSW5kdXN0cmlhbCBQYXJrLCBOYW5zaGFuIERpc3RyaWN0LCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotOUMtNDUtNjMgICAoaGV4KQkJRElNRVAgU2lzdGVtYXMKLTlDNDU2MyAgICAgKGJhc2UgMTYpCQlESU1FUCBTaXN0ZW1hcwotCQkJCUF2LiBNT2ZhcnJlaiwgODQwCi0JCQkJU2FvIFBhdWxvIFNQIDA1MzExMDAwCi0JCQkJQlJBWklMCi0KLTlDLTRBLTdCICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi05QzRBN0IgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotOUMtNEUtMjAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotOUM0RTIwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtNEUtOEUgICAoaGV4KQkJQUxUIFN5c3RlbXMgTHRkCi05QzRFOEUgICAgIChiYXNlIDE2KQkJQUxUIFN5c3RlbXMgTHRkCi0JCQkJUG9Cb3ggMTcKLQkJCQlIZWxzaW5raSAgMDA3NjEKLQkJCQlGSU5MQU5ECi0KLTlDLTU1LUI0ICAgKGhleCkJCUkuUy5FLiBTLnIubC4KLTlDNTVCNCAgICAgKGJhc2UgMTYpCQlJLlMuRS4gUy5yLmwuCi0JCQkJVmlhIGRlbGxhIENhbmFwaWdsaWEgNQotCQkJCU1pZ2xpYXJpbm8gUGlzYW5vIFBJU0EgNTYwMTAKLQkJCQlJVEFMWQotCi05Qy01Qi05NiAgIChoZXgpCQlOTVIgQ29ycG9yYXRpb24KLTlDNUI5NiAgICAgKGJhc2UgMTYpCQlOTVIgQ29ycG9yYXRpb24KLQkJCQkzRiBFc3ByaXQgQnVpbGQuLDEtMy02IE5pc2hpLU5pcHBvcmkKLQkJCQlBcmFrYXdhLUt1IFRva3lvIDExNi0wMDEzCi0JCQkJSkFQQU4KLQotOUMtNUQtOTUgICAoaGV4KQkJVlRDIEVsZWN0cm9uaWNzIENvcnAuCi05QzVEOTUgICAgIChiYXNlIDE2KQkJVlRDIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJNUYsTm8uMjEsU2VjLjYsWmhvbmd4aWFvIEUuUmQuLE5hbmdhbmcgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNTc1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05Qy01RS03MyAgIChoZXgpCQlDYWxpYnJlIFVLIEx0ZAotOUM1RTczICAgICAoYmFzZSAxNikJCUNhbGlicmUgVUsgTHRkCi0JCQkJQ29ybndhbGwgSG91c2UKLQkJCQlDb3Jud2FsbCBUZXJyYWNlCi0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQ4IDdKUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTlDLTY0LTVFICAgKGhleCkJCUhhcm1hbiBDb25zdW1lciBHcm91cAotOUM2NDVFICAgICAoYmFzZSAxNikJCUhhcm1hbiBDb25zdW1lciBHcm91cAotCQkJCTg1MDAgQmFsYm9hIEJsdmQKLQkJCQlOb3J0aHJpZGdlIENBIDkxMzI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy02QS1CRSAgIChoZXgpCQlRRUVTIEFwUy4KLTlDNkFCRSAgICAgKGJhc2UgMTYpCQlRRUVTIEFwUy4KLQkJCQlOYXZlcmxhbmQgMzEsIDIudHYKLQkJCQlHbG9zdHJ1cCBIb3ZlZHN0YWRlbiAyNjAwCi0JCQkJREVOTUFSSwotCi05Qy03NS0xNCAgIChoZXgpCQlXaWxkaXggc3JsCi05Qzc1MTQgICAgIChiYXNlIDE2KQkJV2lsZGl4IHNybAotCQkJCWxvYy4gTGUgQmFzc2UsIDMKLQkJCQlUcmVudG8gVE4gMzgxMDAKLQkJCQlJVEFMWQotCi05Qy03Ny1BQSAgIChoZXgpCQlOQURBU05WCi05Qzc3QUEgICAgIChiYXNlIDE2KQkJTkFEQVNOVgotCQkJCTIyMDMsIFQtZG9uZywgUG9vbmdsaW0gSS13b24gUGx1cwotCQkJCVNlb2h5ZW9uLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtODYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTlDLTdCLUQyICAgKGhleCkJCU5FT0xBQiBDb252ZXJnZW5jZQotOUM3QkQyICAgICAoYmFzZSAxNikJCU5FT0xBQiBDb252ZXJnZW5jZQotCQkJCTRGIFl1anVuZyBibGRnLiwKLQkJCQlTZW9jaG8tZG9uZywgU2VvY2hvLWd1Ci0JCQkJU2VvdWwgIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOUMtODAtN0QgICAoaGV4KQkJU1lTQ0FCTEUgS29yZWEgSW5jLgotOUM4MDdEICAgICAoYmFzZSAxNikJCVNZU0NBQkxFIEtvcmVhIEluYy4KLQkJCQkyRiBLQU1BIEJsZGcgMTQ2MS0xNSBTZWNoby0zZG9uZyBTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTcyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05Qy04RS05OSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTlDOEU5OSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtOTMtNEUgICAoaGV4KQkJWGVyb3ggQ29ycG9yYXRpb24KLTlDOTM0RSAgICAgKGJhc2UgMTYpCQlYZXJveCBDb3Jwb3JhdGlvbgotCQkJCU1haWwgU3RvcCAwMjE0IC0gN0UKLQkJCQk4MDAgUGhpbGxpcHMgUm9hZAotCQkJCVdlYnN0ZXIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLTk1LUY4ICAgKGhleCkJCVNtYXJ0RG9vciBTeXN0ZW1zLCBMTEMKLTlDOTVGOCAgICAgKGJhc2UgMTYpCQlTbWFydERvb3IgU3lzdGVtcywgTExDCi0JCQkJNTcxMS1BIENlbnRlciBMYW5lCi0JCQkJRmFsbHMgQ2h1cmNoIFZpcmdpbmlhIDIyMDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy1BRC1FRiAgIChoZXgpCQlPYmloYWkgVGVjaG5vbG9neSwgSW5jLgotOUNBREVGICAgICAoYmFzZSAxNikJCU9iaWhhaSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTk2MzggU3RldmVucyBDcmVlayBCbHZkCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy1BRi1DQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi05Q0FGQ0EgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy1CMi0wNiAgIChoZXgpCQlQUk9DRU5URUMKLTlDQjIwNiAgICAgKGJhc2UgMTYpCQlQUk9DRU5URUMKLQkJCQlUdXJmc2NoaXBwZXIgNDEKLQkJCQlXYXRlcmluZ2VuIFp1aWQgSG9sbGFuZCAyMjkySkMKLQkJCQlORVRIRVJMQU5EUwotCi05Qy1DMC03NyAgIChoZXgpCQlQcmludENvdW50cywgTExDCi05Q0MwNzcgICAgIChiYXNlIDE2KQkJUHJpbnRDb3VudHMsIExMQwotCQkJCTUxMDkgVyBMZW1vbiBTdAotCQkJCVRhbXBhIEZMIDMzNjA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy1DMC1EMiAgIChoZXgpCQlDb25kdWN0aXgtV2FtcGZsZXIgQUcKLTlDQzBEMiAgICAgKGJhc2UgMTYpCQlDb25kdWN0aXgtV2FtcGZsZXIgQUcKLQkJCQlSaGVpbnN0cmFzc2UgMjcrMzMKLQkJCQlXZWlsIGFtIFJoZWluIEJhZGVuLVdpP29lcnR0ZW1iZXJnIEQtNzk1NzYKLQkJCQlHRVJNQU5ZCi0KLTlDLUNELTgyICAgKGhleCkJCUNIRU5HIFVFSSBQUkVDSVNJT04gSU5EVVNUUlkgQ08uLExURAotOUNDRDgyICAgICAoYmFzZSAxNikJCUNIRU5HIFVFSSBQUkVDSVNJT04gSU5EVVNUUlkgQ08uLExURAotCQkJCU5vLjE4LCBDaHVuZyBTaGFuIFJkLiwgVHUtQ2hlbmcgSW5kdXN0cnkgUGFyayAKLQkJCQlUdSBDaGVuZyBDaXR5IFRhaXBlaSBIc2llbiAyMzY4MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOUMtRUItRTggICAoaGV4KQkJQml6TGluayAoS3Vuc2hhbikgQ28uLEx0ZAotOUNFQkU4ICAgICAoYmFzZSAxNikJCUJpekxpbmsgKEt1bnNoYW4pIENvLixMdGQKLQkJCQlOby4xNjgsTmFuaGUgUm9hZCxFY29ub21pYyAmYW1wOyBUZWNobm9sb2dpY2FsIERldmVsb3BtZW50IFpvbmUsCi0JCQkJS3Vuc2hhbiBDaXR5IEppYW5nc3UgUHJvdmluY2UgMjE1MzAwCi0JCQkJQ0hJTkEKLQotOUMtRjYtMUEgICAoaGV4KQkJVVRDIEZpcmUgYW5kIFNlY3VyaXR5Ci05Q0Y2MUEgICAgIChiYXNlIDE2KQkJVVRDIEZpcmUgYW5kIFNlY3VyaXR5Ci0JCQkJMjk1NSBSZWQgSGlsbCBBdmUuCi0JCQkJQ29zdGEgTWVzYSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtRjktMzggICAoaGV4KQkJQVJFVkEgTlAgR21iSAotOUNGOTM4ICAgICAoYmFzZSAxNikJCUFSRVZBIE5QIEdtYkgKLQkJCQlTZWxpZ2Vuc3RhZWR0ZXIgU3RyLiAxMDAKLQkJCQlEZXB0LiBQVENEVi1HCi0JCQkJS2FybHN0ZWluIEdlcm1hbnkgNjM3OTEKLQkJCQlHRVJNQU5ZCi0KLTlDLUZGLUJFICAgKGhleCkJCU9UU0wgSW5jLgotOUNGRkJFICAgICAoYmFzZSAxNikJCU9UU0wgSW5jLgotCQkJCUhBTlJPS1UgQmxkZy4gMkYsIDItMS0yCi0JCQkJS2FidWtpLUNobwotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2MC0wMDIxCi0JCQkJSkFQQU4KLQotQTAtMDctOTggICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotQTAwNzk4ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUEwLTBCLUJBICAgKGhleCkJCVNBTVNVTkcgRUxFQ1RSTy1NRUNIQU5JQ1MKLUEwMEJCQSAgICAgKGJhc2UgMTYpCQlTQU1TVU5HIEVMRUNUUk8tTUVDSEFOSUNTCi0JCQkJU3V3b24tU2ksIEd5ZW9uZ2dpX0RvLCAKLQkJCQlTdXdvbiAgNDQzLTc0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BMC0xNi01QyAgIChoZXgpCQlUYW5nb1RlYyBMdGQuCi1BMDE2NUMgICAgIChiYXNlIDE2KQkJVGFuZ29UZWMgTHRkLgotCQkJCU1hbGhhIFRlY2hub2xvZ3kgUGFyawotCQkJCUplcnVzYWxlbSAgOTY5NTEKLQkJCQlJU1JBRUwKLQotQTAtMTgtNTkgICAoaGV4KQkJU2hlbnpoZW4gWWlkYXNoaSBFbGVjdHJvbmljcyBDbyBMdGQKLUEwMTg1OSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBZaWRhc2hpIEVsZWN0cm9uaWNzIENvIEx0ZAotCQkJCUJ1aWxkaW5nIEExMCwgRnVrYW5nIEluZHVzdHJpYWwgWm9uZQotCQkJCUZ1bWluZyBWaWxsYWdlLEd1YW5sYW4gVG93biwgQmFvJ0FuCi0JCQkJU2hlbnpoZW4gIEd1YW5nZG9uZyAgNTE4MTEwCi0JCQkJQ0hJTkEKLQotQTAtMjEtQjcgICAoaGV4KQkJTkVUR0VBUgotQTAyMUI3ICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC0yMy0xQiAgIChoZXgpCQlUZWxlQ29tcCBSJmFtcDtEIENvcnAuCi1BMDIzMUIgICAgIChiYXNlIDE2KQkJVGVsZUNvbXAgUiZhbXA7RCBDb3JwLgotCQkJCTEwMiBTVyBPcmFuZ2UgQmxvc3NvbQotCQkJCUxha2UgQ2l0eSBGbG9yaWRhIDMyMDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC0yRS1GMyAgIChoZXgpCQlVbml0ZWQgSW50ZWdyYXRlZCBTZXJ2aWNlcyBDby4sIExlZC4KLUEwMkVGMyAgICAgKGJhc2UgMTYpCQlVbml0ZWQgSW50ZWdyYXRlZCBTZXJ2aWNlcyBDby4sIExlZC4KLQkJCQk1RiBObyAzIExhbmUgNyBQYWNrYW8gUm9hZCBIc2ludGllbgotCQkJCVRhaXBlaSBIc2llbiAgMjMxNDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUEwLTM2LTlGICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi1BMDM2OUYgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLUEwLTM2LUZBICAgKGhleCkJCUV0dHVzIFJlc2VhcmNoIExMQwotQTAzNkZBICAgICAoYmFzZSAxNikJCUV0dHVzIFJlc2VhcmNoIExMQwotCQkJCTEwNDMgTiBTaG9yZWxpbmUgQmx2ZAotCQkJCVN1aXRlIDEwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUEwLTNBLTc1ICAgKGhleCkJCVBTUyBCZWxnaXVtIE4uVi4KLUEwM0E3NSAgICAgKGJhc2UgMTYpCQlQU1MgQmVsZ2l1bSBOLlYuCi0JCQkJSG9vZ3ZlbGQgNTAKLQkJCQlEZW5kZXJtb25kZSAgOTIwMAotCQkJCUJFTEdJVU0KLQotQTAtNDAtMjUgICAoaGV4KQkJQWN0aW9uY2FibGUsIEluYy4KLUEwNDAyNSAgICAgKGJhc2UgMTYpCQlBY3Rpb25jYWJsZSwgSW5jLgotCQkJCTk5OCBXZXN0bHlubiBXYXkKLQkJCQlTdWl0ZSA0Ci0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC00MC00MSAgIChoZXgpCQlTQU1XT05GQSBDby4sTHRkLgotQTA0MDQxICAgICAoYmFzZSAxNikJCVNBTVdPTkZBIENvLixMdGQuCi0JCQkJNDcwLTUsIE1vb25oeXVuMi1Eb25nCi0JCQkJTmFtLUd1LCAKLQkJCQlCdXNhbiAgNjA4LTA0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BMC00RS0wNCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotQTA0RTA0ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi1BMC01NS1ERSAgIChoZXgpCQlQYWNlIHBsYwotQTA1NURFICAgICAoYmFzZSAxNikJCVBhY2UgcGxjCi0JCQkJU2FsdHMgTWlsbAotCQkJCVZpY3RvcmlhIFJvYWQKLQkJCQlCcmFkZm9yZCBXZXN0IFlvcmtzaGlyZSBCRDE4IDNMRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUEwLTU5LTNBICAgKGhleCkJCVYuRC5TLiBWaWRlbyBEaXNwbGF5IFN5c3RlbXMgc3JsCi1BMDU5M0EgICAgIChiYXNlIDE2KQkJVi5ELlMuIFZpZGVvIERpc3BsYXkgU3lzdGVtcyBzcmwKLQkJCQlWaWEgRGVsIFBhbnRhbm8gNzEKLQkJCQlTQ0FORElDQ0kgRkkgNTAwMTgKLQkJCQlJVEFMWQotCi1BMC01RC1DMSAgIChoZXgpCQlUTUNUIENvLiwgTFRELgotQTA1REMxICAgICAoYmFzZSAxNikJCVRNQ1QgQ28uLCBMVEQuCi0JCQkJNUYtNTYxLCAjMTktMTEgU2FuQ2hvbmcgUmQuCi0JCQkJTmFuR2FuZyBEaXN0cmljdC4KLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQTAtNUQtRTcgICAoaGV4KQkJRElSRUNUViwgSW5jLgotQTA1REU3ICAgICAoYmFzZSAxNikJCURJUkVDVFYsIEluYy4KLQkJCQkyMjMwIEUuIEltcGVyaWFsIEh3eQotCQkJCUVsIFNlZ3VuZG8gQ0EgOTAyNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUEwLTY5LTg2ICAgKGhleCkJCVdlbGxhdiBUZWNobm9sb2dpZXMgTHRkCi1BMDY5ODYgICAgIChiYXNlIDE2KQkJV2VsbGF2IFRlY2hub2xvZ2llcyBMdGQKLQkJCQkxNUYgRGVzYXkgQnVpbGRpbmcKLQkJCQlOby4xMiBZdW5zaGFuIFdlc3QgQXZlLgotCQkJCUh1aXpob3UgR3Vhbmdkb25nIDUxNjAwMwotCQkJCUNISU5BCi0KLUEwLTZBLTAwICAgKGhleCkJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi1BMDZBMDAgICAgIChiYXNlIDE2KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMjcgSmV0cGxleCBDaXJjbGUKLQkJCQlNYWRpc29uIEFMIDM1NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC03MS1BOSAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotQTA3MUE5ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi1BMC03My0zMiAgIChoZXgpCQlDYXNobWFzdGVyIEludGVybmF0aW9uYWwgTGltaXRlZAotQTA3MzMyICAgICAoYmFzZSAxNikJCUNhc2htYXN0ZXIgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0JCQkJRmFpcnlraXJrIFJvYWQKLQkJCQlSb3N5dGggRmlmZSBLWTExIDJRUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUEwLTc1LTkxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotQTA3NTkxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BMC04Mi1DNyAgIChoZXgpCQlQLlQuSSBDby4sTFRECi1BMDgyQzcgICAgIChiYXNlIDE2KQkJUC5ULkkgQ28uLExURAotCQkJCTEtNS0xLFRzdXJ1bWlkYW4KLQkJCQlLb3JpeWFtYS1zaGkgRnVrdXNoaW1hIDk2My04ODYxCi0JCQkJSkFQQU4KLQotQTAtODgtQjQgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi1BMDg4QjQgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi1BMC04Qy05QiAgIChoZXgpCQlYdHJlbWUgVGVjaG5vbG9naWVzIENvcnAKLUEwOEM5QiAgICAgKGJhc2UgMTYpCQlYdHJlbWUgVGVjaG5vbG9naWVzIENvcnAKLQkJCQkyMDAgNDYxNiBWYWxpYW50IERyIE5XCi0JCQkJQ2FsZ2FyeSBBQiBUM0EwWDkKLQkJCQlDQU5BREEKLQotQTAtOTgtMDUgICAoaGV4KQkJT3BlblZveCBDb21tdW5pY2F0aW9uIENvIEx0ZAotQTA5ODA1ICAgICAoYmFzZSAxNikJCU9wZW5Wb3ggQ29tbXVuaWNhdGlvbiBDbyBMdGQKLQkJCQlGMixCdWlsZGluZyBOby4xNCxTaGFuZ3NoYSBTY2llbmNlICYKLQkJCQlUZWNobm9sb2d5IFBhcmssTm8uOTI4MyxCaW5oZSBSb2FkCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAzMQotCQkJCUNISU5BCi0KLUEwLTk4LUVEICAgKGhleCkJCVNoYW5kb25nIEludGVsbGlnZW50IE9wdGljYWwgQ29tbXVuaWNhdGlvbiBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLUEwOThFRCAgICAgKGJhc2UgMTYpCQlTaGFuZG9uZyBJbnRlbGxpZ2VudCBPcHRpY2FsIENvbW11bmljYXRpb24gRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi0JCQkJTm8uMTQ5IFlpbmdjdWkgUm9hZCxUb3JjaCBUb3duLEFkdmFuY2VkIFRlY2huaXF1ZSBEZXZlbG9wbWVudCBBcmVhCi0JCQkJSmluaW5nIFNoYW5kb25nIDI3MjAyMwotCQkJCUNISU5BCi0KLUEwLTlBLTVBICAgKGhleCkJCVRpbWUgRG9tYWluCi1BMDlBNUEgICAgIChiYXNlIDE2KQkJVGltZSBEb21haW4KLQkJCQkzMzAgV3lubiBEcml2ZQotCQkJCVN1aXRlIDMwMAotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUEwLUE3LTYzICAgKGhleCkJCVBvbHl0cm9uIFZlcnRyaWViIEdtYkgKLUEwQTc2MyAgICAgKGJhc2UgMTYpCQlQb2x5dHJvbiBWZXJ0cmllYiBHbWJICi0JCQkJTGFuZ3dpZXNlbndlZyA2NC03MQotCQkJCUJhZCBXaWxkYmFkIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3NTMyMwotCQkJCUdFUk1BTlkKLQotQTAtQUEtRkQgICAoaGV4KQkJRXJhVGhpbmsgVGVjaG5vbG9naWVzIENvcnAuCi1BMEFBRkQgICAgIChiYXNlIDE2KQkJRXJhVGhpbmsgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJMjg5IEJpc2hlbmcgUm9hZCBCdWlsZGluZyA0LEZsb29yIDQgCi0JCQkJU2hhbmdoYWkgIDIwMTIwNAotCQkJCUNISU5BCi0KLUEwLUI1LURBICAgKGhleCkJCUhvbmdLb25nIFRIVEYgQ28uLCBMdGQKLUEwQjVEQSAgICAgKGJhc2UgMTYpCQlIb25nS29uZyBUSFRGIENvLiwgTHRkCi0JCQkJMkYsU2VjdG9yIEMgb2YgVHNpbmdodWEgVW5pdmVyc2l0eSBBY2FkZW15LCAKLQkJCQlIaS1UZWNoIFBhcmsoU291dGgpLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQTAtQjYtNjIgICAoaGV4KQkJQWN1dHZpc3RhIElubm92YXRpb24gQ28uLCBMdGQuCi1BMEI2NjIgICAgIChiYXNlIDE2KQkJQWN1dHZpc3RhIElubm92YXRpb24gQ28uLCBMdGQuCi0JCQkJMkYtMSwgTm8uIDIwIEFsbGV5IDEsIExhbmUgNzY4LCBTZWMuIDQKLQkJCQlQYS1UZWggUmQuLCAKLQkJCQlUYWlwZWkgQ2l0eSAgMTE1NzcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUEwLUI5LUVEICAgKGhleCkJCVNreXRhcAotQTBCOUVEICAgICAoYmFzZSAxNikJCVNreXRhcAotCQkJCTcxMCAybmQgQXZlIFN1aXRlIDExMzAKLQkJCQlTZWF0dGxlIFdBIDk4MTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC1CRi1BNSAgIChoZXgpCQlDT1JFU1lTCi1BMEJGQTUgICAgIChiYXNlIDE2KQkJQ09SRVNZUwotCQkJCTI2Ny0xIE5vbmh5dW5kb25nIEdhbmduYW1ndQotCQkJCUpLIEJsZC4sICMzMDEKLQkJCQlTZW91bCAgMTM1LTgzMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BMC1ERC1FNSAgIChoZXgpCQlTSEFSUCBDT1JQT1JBVElPTgotQTBEREU1ICAgICAoYmFzZSAxNikJCVNIQVJQIENPUlBPUkFUSU9OCi0JCQkJMjItMjIsTmFnYWlrZS1jaG8sCi0JCQkJQWJlbm8tS1UsCi0JCQkJT3Nha2EsICA1NDUtODUyMiwKLQkJCQlKQVBBTgotCi1BMC1ERS0wNSAgIChoZXgpCQlKU0MgIklyYmlzLVQiCi1BMERFMDUgICAgIChiYXNlIDE2KQkJSlNDICJJcmJpcy1UIgotCQkJCTUsIExpdGV5bmF5YSBzdHJlZXQKLQkJCQlUdWxhICAzMDAwMDIKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotQTAtRTItOTUgICAoaGV4KQkJREFUIFN5c3RlbSBDby4sTHRkCi1BMEUyOTUgICAgIChiYXNlIDE2KQkJREFUIFN5c3RlbSBDby4sTHRkCi0JCQkJR3VuIFNhbiBGcmVlIFRyYWRlIEFyZWEgNTExLTEgLAotCQkJCU9zaWsgZG8gZG9uZyBHdW5zYW4gc2kgSmVvbiBCdWsgCi0JCQkJNTczLTU0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BMC1FOS1EQiAgIChoZXgpCQlOaW5nYm8gRnJlZVdpbmdzIFRlY2hub2xvZ2llcyBDby4sTHRkCi1BMEU5REIgICAgIChiYXNlIDE2KQkJTmluZ2JvIEZyZWVXaW5ncyBUZWNobm9sb2dpZXMgQ28uLEx0ZAotCQkJCVJvb20gMTEwNy0xMTA4LCBObyAyOTggWHVlU2hpIFJvYWQgWWluemhvdSBEaXN0cmljdCBOaW5nYm8sIAotCQkJCU5pbmdibyBaaGVqaWFuZyAzMTUwMDAKLQkJCQlDSElOQQotCi1BMC1GMi0xNyAgIChoZXgpCQlHRSBNZWRpY2FsIFN5c3RlbShDaGluYSkgQ28uLCBMdGQuIAotQTBGMjE3ICAgICAoYmFzZSAxNikJCUdFIE1lZGljYWwgU3lzdGVtKENoaW5hKSBDby4sIEx0ZC4gCi0JCQkJTm8uMTksIENoYW5nSmlhbmcgUm9hZCAKLQkJCQlXdXhpIEppYW5nc3UgMjE0MDI4IAotCQkJCUNISU5BCi0KLUE0LTBDLUMzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUE0MENDMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LTEzLTRFICAgKGhleCkJCUx1eHVsIFdpcmVsZXNzCi1BNDEzNEUgICAgIChiYXNlIDE2KQkJTHV4dWwgV2lyZWxlc3MKLQkJCQkzNTcgUyA2NzAgVwotCQkJCUxpbmRvbiBVVCA4NDA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtMUItQzAgICAoaGV4KQkJRmFzdGVjIEltYWdpbmcgQ29ycG9yYXRpb24KLUE0MUJDMCAgICAgKGJhc2UgMTYpCQlGYXN0ZWMgSW1hZ2luZyBDb3Jwb3JhdGlvbgotCQkJCTE3MTUwIFZpYSBEZWwgQ2FtcG8KLQkJCQlTdWl0ZSAzMDEKLQkJCQlTYW4gRGllZ28gQ2FsaWZvcm5pYSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtMjEtOEEgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi1BNDIxOEEgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLUE0LTI0LUIzICAgKGhleCkJCUZsYXRGcm9nIExhYm9yYXRvcmllcyBBQgotQTQyNEIzICAgICAoYmFzZSAxNikJCUZsYXRGcm9nIExhYm9yYXRvcmllcyBBQgotCQkJCU1hZ2lzdHJhdHN2aT9vZWdlbiAxMAotCQkJCUx1bmQgU2thbmUgMjI2NDMKLQkJCQlTV0VERU4KLQotQTQtMzMtRDEgICAoaGV4KQkJRmlicmxpbmsgQ29tbXVuaWNhdGlvbnMgQ28uLEx0ZC4KLUE0MzNEMSAgICAgKGJhc2UgMTYpCQlGaWJybGluayBDb21tdW5pY2F0aW9ucyBDby4sTHRkLgotCQkJCTI4RiBBZ2VzIFdlYWx0aCBXb3JsZCwgTm8uMSBIYW5nZmVuZyBSb2FkCi0JCQkJRmVuZ3RhaSBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA3MAotCQkJCUNISU5BCi0KLUE0LTM4LUZDICAgKGhleCkJCVBsYXN0aWMgTG9naWMKLUE0MzhGQyAgICAgKGJhc2UgMTYpCQlQbGFzdGljIExvZ2ljCi0JCQkJNjUwIENhc3RybyBTdC4sIFN1aXRlIDUwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LTRCLTE1ICAgKGhleCkJCVN1biBDdXBpZCBUZWNobm9sb2d5IChISykgTFRECi1BNDRCMTUgICAgIChiYXNlIDE2KQkJU3VuIEN1cGlkIFRlY2hub2xvZ3kgKEhLKSBMVEQKLQkJCQlSb29tIDEyMDEtMywgMTIvRi4sIFRvd2VyIDYKLQkJCQlDaGluYSBIb25nIEtvbmcgQ2l0eQotCQkJCVRzaW0gU2hhIFRzdWkgIAotCQkJCUhPTkcgS09ORwotCi1BNC01MC01NSAgIChoZXgpCQlidXN3YXJlLmRlCi1BNDUwNTUgICAgIChiYXNlIDE2KQkJYnVzd2FyZS5kZQotCQkJCUxvZXNzbml0emdydW5kc3RyYXNzZSAxMTVhCi0JCQkJTW9yaXR6YnVyZyBTYXhvbnkgMDE0NjgKLQkJCQlHRVJNQU5ZCi0KLUE0LTU2LTFCICAgKGhleCkJCU1DT1QgQ29ycG9yYXRpb24KLUE0NTYxQiAgICAgKGJhc2UgMTYpCQlNQ09UIENvcnBvcmF0aW9uCi0JCQkJWW9nb2hpZ2FzaGkgMS01LTEyCi0JCQkJTWF0c3V5YW1hIGNpdHkgRWhpbWUgcHJlZmVjdHVyZSA3OTAtMDA0NAotCQkJCUpBUEFOCi0KLUE0LTVBLTFDICAgKGhleCkJCXNtYXJ0LWVsZWN0cm9uaWMgR21iSAotQTQ1QTFDICAgICAoYmFzZSAxNikJCXNtYXJ0LWVsZWN0cm9uaWMgR21iSAotCQkJCUluZHVzdHJpZXN0cmFzc2UgMjkKLQkJCQlTdC4gR2VvcmdlbiBCYWRlbi1XdWVydHRlbWJlcmcgNzgxMjIKLQkJCQlHRVJNQU5ZCi0KLUE0LTVDLTI3ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotQTQ1QzI3ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLUE0LTY3LTA2ICAgKGhleCkJCUFwcGxlIEluYwotQTQ2NzA2ICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtNzktRTQgICAoaGV4KQkJS0xJTkZPIENvcnAKLUE0NzlFNCAgICAgKGJhc2UgMTYpCQlLTElORk8gQ29ycAotCQkJCTMwMSA5MjMgd29scHl1bmctZG9uZwotCQkJCXNlbyBndQotCQkJCURhZWplb24gIDMwMi04NTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTQtN0EtQTQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLUE0N0FBNCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LTdDLTFGICAgKGhleCkJCUdsb2JhbCBNaWNyb3dhdmUgU3lzdGVtcyBJbmMuCi1BNDdDMUYgICAgIChiYXNlIDE2KQkJR2xvYmFsIE1pY3Jvd2F2ZSBTeXN0ZW1zIEluYy4KLQkJCQkxOTE2IFBhbG9tYXIgT2FrcyBXYXksIFN1aXRlIDEwMAotCQkJCUNhcmxzYmFkIENBIDkyMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC04NS02QiAgIChoZXgpCQlRIEVsZWN0cm9uaWNzIEx0ZAotQTQ4NTZCICAgICAoYmFzZSAxNikJCVEgRWxlY3Ryb25pY3MgTHRkCi0JCQkJQmVjayBIb3VzZSwgSGF3a3N3b3J0aCBSb2FkCi0JCQkJSG9yc2ZvcnRoCi0JCQkJTGVlZHMgV2VzdCBZb3Jrc2hpcmUgTFMxOCA0SlAKLQkJCQlVTklURUQgS0lOR0RPTQotCi1BNC05OS04MSAgIChoZXgpCQlGdUppYW4gRWxpdGUgUG93ZXIgVGVjaCBDTy4sTFRELgotQTQ5OTgxICAgICAoYmFzZSAxNikJCUZ1SmlhbiBFbGl0ZSBQb3dlciBUZWNoIENPLixMVEQuCi0JCQkJOHRoIEZsb29yaT9vZWk/b2U1NiBHdWFuUmkgUm9hZCAKLQkJCQlTb2Z0d2FyZSBTcXVhcmUgKFBoYXNlIFR3byksIFNpbWluZyBEaXN0cmljdCAKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwOQotCQkJCUNISU5BCi0KLUE0LTlCLTEzICAgKGhleCkJCUJ1cnJvdWdocyBQYXltZW50IFN5c3RlbXMsIEluYy4KLUE0OUIxMyAgICAgKGJhc2UgMTYpCQlCdXJyb3VnaHMgUGF5bWVudCBTeXN0ZW1zLCBJbmMuCi0JCQkJNDExMDAgUGx5bW91dGggUm9hZAotCQkJCVBseW1vdXRoIE1pY2hpZ2FuIDQ4MTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC1BOC0wRiAgIChoZXgpCQlTaGVuemhlbiBDb3NoaXAgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi1BNEE4MEYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQ29zaGlwIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCVJhaW5ib3cgQmxkZy4sIE5vcnRoLCBIaS1UZWNoIEluZHVzdHJpYWwgUGFyaywgTmFuc2hhbiBEaXN0cmljdCwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUE0LUFELTAwICAgKGhleCkJCVJhZ3NkYWxlIFRlY2hub2xvZ3kKLUE0QUQwMCAgICAgKGJhc2UgMTYpCQlSYWdzZGFsZSBUZWNobm9sb2d5Ci0JCQkJNTA1IEVjaG8gTGFuZQotCQkJCVBPIEJveCAxMjA1MDcKLQkJCQlCaWcgQmVhciBMYWtlIENBIDkyMzE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC1BRC1COCAgIChoZXgpCQlWaXRlYyBHcm91cCwgQ2FtZXJhIER5bmFtaWNzIEx0ZAotQTRBREI4ICAgICAoYmFzZSAxNikJCVZpdGVjIEdyb3VwLCBDYW1lcmEgRHluYW1pY3MgTHRkCi0JCQkJV2lsbGlhbSBWaW50ZW4gQnVpbGRpbmcKLQkJCQlXZXN0ZXJuIFdheQotCQkJCUJ1cnkgU3QgRWRtdW5kcyBTdWZmb2xrIElQMzMgM1RCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQTQtQUUtOUEgICAoaGV4KQkJTWFlc3RybyBXaXJlbGVzcyBTb2x1dGlvbnMgbHRkLgotQTRBRTlBICAgICAoYmFzZSAxNikJCU1hZXN0cm8gV2lyZWxlc3MgU29sdXRpb25zIGx0ZC4KLQkJCQkzNi9GCi0JCQkJMTE4IENvbm5hdWdodCBSb2FkIFdlc3QKLQkJCQlTaGV1bmcgV2FuICAKLQkJCQlIT05HIEtPTkcKLQotQTQtQjEtMjEgICAoaGV4KQkJQXJhbnRpYSAyMDEwIFMuTC4KLUE0QjEyMSAgICAgKGJhc2UgMTYpCQlBcmFudGlhIDIwMTAgUy5MLgotCQkJCVZvbHRhIGRvIENhc3RybyBzL24KLQkJCQlTYW50aWFnbyBkZSBDb21wb3N0ZWxhIEEgQ29ydWk/b2VhIDE1NzA2Ci0JCQkJU1BBSU4KLQotQTQtQjEtOTcgICAoaGV4KQkJQXBwbGUsIEluYy4KLUE0QjE5NyAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBjYSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtQjEtRUUgICAoaGV4KQkJSC4gWkFOREVSIEdtYkggJiBDby4gS0cKLUE0QjFFRSAgICAgKGJhc2UgMTYpCQlILiBaQU5ERVIgR21iSCAmIENvLiBLRwotCQkJCUFtIEd1dCBXb2xmIDE1Ci0JCQkJQWFjaGVuICA1MjA3MAotCQkJCUdFUk1BTlkKLQotQTQtQjItQTcgICAoaGV4KQkJQWRheHlzIFNvbHV0aW9ucyBBRwotQTRCMkE3ICAgICAoYmFzZSAxNikJCUFkYXh5cyBTb2x1dGlvbnMgQUcKLQkJCQlFaWNodGFsc3RyYXNzZSA1NQotCQkJCUhvbWJyZWNodGlrb24gQ0ggODYzNAotCQkJCVNXSVRaRVJMQU5ECi0KLUE0LUIzLTZBICAgKGhleCkJCUpTQyBTRE8gQ2hyb21hdGVjCi1BNEIzNkEgICAgIChiYXNlIDE2KQkJSlNDIFNETyBDaHJvbWF0ZWMKLQkJCQk5NCwgU3Ryb2l0ZWxleSBzdHJlZXQKLQkJCQlZb3Noa2FyLU9sYSBNYXJpIEVsIHJlcHVibGljIDQyNDAwMAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1BNC1CQS1EQiAgIChoZXgpCQlEZWxsIEluYy4KLUE0QkFEQiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC1CRS02MSAgIChoZXgpCQlFdXRyb1Zpc2lvbiBTeXN0ZW0sIEluYy4KLUE0QkU2MSAgICAgKGJhc2UgMTYpCQlFdXRyb1Zpc2lvbiBTeXN0ZW0sIEluYy4KLQkJCQlSbSA0MDMsQnVpbGRpbmczMyxOby42ODAgR3VpcGluZ1JkLFh1aHVpLAotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi1BNC1DMC1FMSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLUE0QzBFMSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi1BNC1DMi1BQiAgIChoZXgpCQlIYW5nemhvdSBMRUFELUlUIEluZm9ybWF0aW9uICYgVGVjaG5vbG9neSBDby4sTHRkCi1BNEMyQUIgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgTEVBRC1JVCBJbmZvcm1hdGlvbiAmIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCUYyIEJ1aWxkZXIgQixYaWRvbWVuIFJvYWQgTk8uMjIKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi1BNC1EMS1EMSAgIChoZXgpCQlFQ090YWxpdHkgTm9ydGggQW1lcmljYQotQTREMUQxICAgICAoYmFzZSAxNikJCUVDT3RhbGl0eSBOb3J0aCBBbWVyaWNhCi0JCQkJNDMwIFMgMm5kIEF2ZW51ZQotCQkJCVBob2VuaXggQVogODUwMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LUQxLUQyICAgKGhleCkJCUFwcGxlLCBJbmMuCi1BNEQxRDIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LURBLTNGICAgKGhleCkJCUJpb25pY3MgQ29ycC4KLUE0REEzRiAgICAgKGJhc2UgMTYpCQlCaW9uaWNzIENvcnAuCi0JCQkJMTQwNiBNYXN0ZXJzIFRvd2VyCi0JCQkJNTUzIERvd2hhLWRvbmcgTWFwby1ndQotCQkJCVNlb3VsICAxMjEtNzQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUE0LURCLTJFICAgKGhleCkJCUtpbmdzcGFuIEVudmlyb25tZW50YWwgTHRkCi1BNERCMkUgICAgIChiYXNlIDE2KQkJS2luZ3NwYW4gRW52aXJvbm1lbnRhbCBMdGQKLQkJCQkxODAgR2lsZm9yZCBSb2FkCi0JCQkJUG9ydGFkb3duIEFybWFnaCBCVDYzIDVMRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUE0LURFLTUwICAgKGhleCkJCVRvdGFsIFdhbHRoZXIgR21iSAotQTRERTUwICAgICAoYmFzZSAxNikJCVRvdGFsIFdhbHRoZXIgR21iSAotCQkJCUZyYW5rZnVydGVyIFJpbmcgMTcKLQkJCQlNdW5pY2ggIDgwODA3Ci0JCQkJR0VSTUFOWQotCi1BNC1FMy0yRSAgIChoZXgpCQlTaWxpY29uICZhbXA7IFNvZnR3YXJlIFN5c3RlbXMgTHRkLgotQTRFMzJFICAgICAoYmFzZSAxNikJCVNpbGljb24gJmFtcDsgU29mdHdhcmUgU3lzdGVtcyBMdGQuCi0JCQkJU291dGggQ291bnR5IEJ1c2luZXNzIFBhcmsKLQkJCQlMZW9wYXJkc3Rvd24gRHVibGluIDE4Ci0JCQkJSVJFTEFORAotCi1BNC1FNy1FNCAgIChoZXgpCQlDb25uZXggR21iSAotQTRFN0U0ICAgICAoYmFzZSAxNikJCUNvbm5leCBHbWJICi0JCQkJRWxiZXN0cmFzc2UgMTIKLQkJCQlPbGRlbmJ1cmcgIDI2MTM1Ci0JCQkJR0VSTUFOWQotCi1BNC1FRC00RSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLUE0RUQ0RSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gVVMgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LUVFLTU3ICAgKGhleCkJCVNFSUtPIEVQU09OIENPUlBPUkFUSU9OCi1BNEVFNTcgICAgIChiYXNlIDE2KQkJU0VJS08gRVBTT04gQ09SUE9SQVRJT04KLQkJCQkzLTMtNSBPV0EKLQkJCQlTVVdBLVNISSBOQUdBTk8tS0VOIDM5Mi04NTAyCi0JCQkJSkFQQU4KLQotQTgtMUItMTggICAoaGV4KQkJWFRTIENPUlAKLUE4MUIxOCAgICAgKGJhc2UgMTYpCQlYVFMgQ09SUAotCQkJCTEwMTI1IE5XIDExNlRIIFdBWSwgU1VJVEUgNQotCQkJCU1FRExFWSBGTE9SSURBIDMzMTc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC0zOS00NCAgIChoZXgpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotQTgzOTQ0ICAgICAoYmFzZSAxNikJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC01NS02QSAgIChoZXgpCQlQb2NrZXRuZXQgVGVjaG5vbG9neSBJbmMuCi1BODU1NkEgICAgIChiYXNlIDE2KQkJUG9ja2V0bmV0IFRlY2hub2xvZ3kgSW5jLgotCQkJCVN1aXRlIEIsIDdGLiwgTm8uIDU1MCwgUnVpZSBLd2FuZyBSZC4sIE5laWh1IERpc3RyaWN0LAotCQkJCVRhaXBlaSAgMTE0MjkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUE4LTVCLUIwICAgKGhleCkJCVNoZW56aGVuIERlaG9vIFRlY2hub2xvZ3kgQ28uLEx0ZAotQTg1QkIwICAgICAoYmFzZSAxNikJCVNoZW56aGVuIERlaG9vIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTVDLFRpYW56aGFuIEJ1aWxkaW5nIFRpYW5hbiBDeWJlcnBhcmssCi0JCQkJRnV0aWFuIGRpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmcgRG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi1BOC02Mi1BMiAgIChoZXgpCQlKSVdVTUVESUEgQ08uLCBMVEQuCi1BODYyQTIgICAgIChiYXNlIDE2KQkJSklXVU1FRElBIENPLiwgTFRELgotCQkJCSM5MDIsIERhZXJ1ZyBUZWNobm8gVG93biAxMyd0aCwgNjY0Ci0JCQkJR2FzYW4tZG9uZwotCQkJCUdldW1jaGVvbi1ndSBTZW91bCAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUE4LTYzLURGICAgKGhleCkJCURJU1BMaT9vZUFJUkUgQ09SUE9SQVRJT04KLUE4NjNERiAgICAgKGJhc2UgMTYpCQlESVNQTGk/b2VBSVJFIENPUlBPUkFUSU9OCi0JCQkJMTMwMCBWYWxsZXkgSG91c2UgRHIsIFN0ZSAxMDAKLQkJCQlSb2huZXJ0IFBhcmsgQ0EgOTQ5MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE4LTZBLTZGICAgKGhleCkJCVJJTQotQTg2QTZGICAgICAoYmFzZSAxNikJCVJJTQotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDVSOQotCQkJCUNBTkFEQQotCi1BOC03MC1BNSAgIChoZXgpCQlVbmlDb21tIEluYy4KLUE4NzBBNSAgICAgKGJhc2UgMTYpCQlVbmlDb21tIEluYy4KLQkJCQk3Ri03LCBOby4gNzE2LCBDaHVuZy1DaGVuZyBSb2FkLAotCQkJCUNodW5nLUhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BOC03Qi0zOSAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotQTg3QjM5ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTcwCi0JCQkJRklOTEFORAotCi1BOC03RS0zMyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotQTg3RTMzICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi1BOC04Ny05MiAgIChoZXgpCQlCcm9hZGJhbmQgQW50ZW5uYSBUcmFja2luZyBTeXN0ZW1zCi1BODg3OTIgICAgIChiYXNlIDE2KQkJQnJvYWRiYW5kIEFudGVubmEgVHJhY2tpbmcgU3lzdGVtcwotCQkJCTg5MDIgVmluY2VubmVzIENpcmNsZSwgU3VpdGUgRC0yCi0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC04Qy1FRSAgIChoZXgpCQlNaWNyb01hZGUgR2Fsa2EgaSBEcm96ZHogc3Auai4KLUE4OENFRSAgICAgKGJhc2UgMTYpCQlNaWNyb01hZGUgR2Fsa2EgaSBEcm96ZHogc3Auai4KLQkJCQl1bC4gV2llbmlhd3NraWVnbyAxNgotCQkJCVBpbGEgV2llbGtvcG9sc2tpZSA2NC05MjAKLQkJCQlQT0xBTkQKLQotQTgtOTItMkMgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MKLUE4OTIyQyAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcwotCQkJCTYwLTM5ICwgS2FzYW4tZG9uZywgR3VtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BOC05My1FNiAgIChoZXgpCQlKSUFOR1hJIEpJTkdHQU5HU0hBTiBDS0lORyBDT01NVU5JQ0FUSU9OIFRFQ0hOT0xPR1kgQ08uLExURAotQTg5M0U2ICAgICAoYmFzZSAxNikJCUpJQU5HWEkgSklOR0dBTkdTSEFOIENLSU5HIENPTU1VTklDQVRJT04gVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJNUYsMzAxYnVpbGRpbmcsVGFpcmFuIEhpZ2gtdGVjaCBwYXJrLCBDaGVnb25nbWlhbyxGdXRpYW4gem9uZSwKLQkJCQlTSEVOWkhFTiBHVUFOR0RPTkcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotQTgtOTktNUMgICAoaGV4KQkJYWl6byBhZwotQTg5OTVDICAgICAoYmFzZSAxNikJCWFpem8gYWcKLQkJCQlCcmFuZHN0cmFzc2UgMzMKLQkJCQlTY2hsaWVyZW4gIDg5NTIKLQkJCQlTV0lUWkVSTEFORAotCi1BOC05Qi0xMCAgIChoZXgpCQlpbk1vdGlvbiBMdGQuCi1BODlCMTAgICAgIChiYXNlIDE2KQkJaW5Nb3Rpb24gTHRkLgotCQkJCVVuaXQgMjcwOSBFeGNoYW5nZSBUb3dlciAKLQkJCQkzMyBXYW5nIENodWkgUm9hZCBpP29lIEtvd2xvb24gQmF5IGk/b2UgS0xOCi0JCQkJS0xOCi0JCQkJSE9ORyBLT05HCi0KLUE4LUIwLUFFICAgKGhleCkJCUxFT05JIAotQThCMEFFICAgICAoYmFzZSAxNikJCUxFT05JIAotCQkJCTM5NDUgRnJlZWRvbSBDaXJjbGUKLQkJCQlTdWl0ZSA1NTAKLQkJCQlTYW50YSBDbGFyYSBDYWxpZm9ybmlhIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC1CMS1ENCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1BOEIxRDQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC1DMi0yMiAgIChoZXgpCQlUTS1SZXNlYXJjaCBJbmMuCi1BOEMyMjIgICAgIChiYXNlIDE2KQkJVE0tUmVzZWFyY2ggSW5jLgotCQkJCUhpeW9zaGkgSG9uY2hvIDEtMTUtNAotCQkJCUtvaG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMy0wMDYyCi0JCQkJSkFQQU4KLQotQTgtQ0ItOTUgICAoaGV4KQkJRUFTVCBCRVNUIENPLiwgTFRELgotQThDQjk1ICAgICAoYmFzZSAxNikJCUVBU1QgQkVTVCBDTy4sIExURC4KLQkJCQk0RixOTy45OCxTSElORyBURUggUk9BRAotCQkJCVNBTiBDSFVORyBDSVRZICBUQUlQRUkgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BOC1DRS05MCAgIChoZXgpCQlDVkMKLUE4Q0U5MCAgICAgKGJhc2UgMTYpCQlDVkMKLQkJCQlOby4zNjEsUmVuaHVhIFJkLiwKLQkJCQlEYWxpIENpdHkgVGFpY2h1bmcgNDEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BOC1EMy1DOCAgIChoZXgpCQlXYWNoZW5kb3JmZiBFbGVrdHJvbmlrICBHbWJIICZhbXA7IENvLiBLRwotQThEM0M4ICAgICAoYmFzZSAxNikJCVdhY2hlbmRvcmZmIEVsZWt0cm9uaWsgIEdtYkggJmFtcDsgQ28uIEtHCi0JCQkJSW5kdXN0cmllc3RyLiA3Ci0JCQkJR2Vpc2VuaGVpbSAgNjUzNjYKLQkJCQlHRVJNQU5ZCi0KLUE4LUUwLTE4ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1BOEUwMTggICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSAgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLUE4LUUzLUVFICAgKGhleCkJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBJbmMuCi1BOEUzRUUgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4KLQkJCQkyLTYtMjEgTWluYW1pLUFveWFtYQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDctMDA2MgotCQkJCUpBUEFOCi0KLUE4LUYyLTc0ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLUE4RjI3NCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUE4LUY0LTcwICAgKGhleCkJCUZ1amlhbiBOZXdsYW5kIENvbW11bmljYXRpb24gU2NpZW5jZSBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLUE4RjQ3MCAgICAgKGJhc2UgMTYpCQlGdWppYW4gTmV3bGFuZCBDb21tdW5pY2F0aW9uIFNjaWVuY2UgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJTmV3bGFuZCBTY2llbmNlICYgVGVjaG5vbG9neSBQYXJrIE5vLjEgUnVqaWFuZyBXZXN0IFJkLiwgTWF3ZWksIAotCQkJCUZ1emhvdSBGdWppYW4gMzUwMDE1Ci0JCQkJQ0hJTkEKLQotQTgtRjktNEIgICAoaGV4KQkJRWx0ZXggRW50ZXJwcmlzZSBMdGQuCi1BOEY5NEIgICAgIChiYXNlIDE2KQkJRWx0ZXggRW50ZXJwcmlzZSBMdGQuCi0JCQkJT2J5ZWRpbmVuaXlhIHN0LiwgOQotCQkJCU5vdm9zaWJpcnNrICA2MzAwMjAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotQTgtRkMtQjcgICAoaGV4KQkJQ29uc29saWRhdGVkIFJlc291cmNlIEltYWdpbmcKLUE4RkNCNyAgICAgKGJhc2UgMTYpCQlDb25zb2xpZGF0ZWQgUmVzb3VyY2UgSW1hZ2luZwotCQkJCTI5NDMgUyBXaWxzb24gQ1QgTlcKLQkJCQlHcmFuZCBSYXBpZHMgTUkgNDk1MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFBLTAwLTAwICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi1BQTAwMDAgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQlMS0cgMS0yL0ExOQotCQkJCTU1MCBLSU5HIFNUUkVFVAotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MC0xMjg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQS0wMC0wMSAgIChoZXgpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotQUEwMDAxICAgICAoYmFzZSAxNikJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0JCQkJTEtHIDEtMi9BMTkKLQkJCQk1NTAgS0lORyBTVFJFRVQKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAtMTI4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUEtMDAtMDIgICAoaGV4KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLUFBMDAwMiAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotCQkJCUxLRyAxLTIvQTE5Ci0JCQkJNTUwIEtJTkcgU1RSRUVUCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwLTEyODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFBLTAwLTAzICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi1BQTAwMDMgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQlMS0cgMS0yL0ExOQotCQkJCTU1MCBLSU5HIFNUUkVFVAotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MC0xMjg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQS0wMC0wNCAgIChoZXgpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotQUEwMDA0ICAgICAoYmFzZSAxNikJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0JCQkJTEtHIDEtMi9BMTkKLQkJCQk1NTAgS0lORyBTVFJFRVQKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAtMTI4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtMDItQ0YgICAoaGV4KQkJUlcgVGVjbm9sb2dpYSBJbmR1c3RyaWEgZSBDb21lcmNpbyBMdGRhCi1BQzAyQ0YgICAgIChiYXNlIDE2KQkJUlcgVGVjbm9sb2dpYSBJbmR1c3RyaWEgZSBDb21lcmNpbyBMdGRhCi0JCQkJQ2VudHJvIEVtcHJlc2FyaWFsIFBhdWxvIEZyZWRlcmljbyBkZSBUb2xlZG8sIDgwIEEKLQkJCQlCYWlycm8gQXJjbyBJcmlycwotCQkJCVNhbnRhIFJpdGEgZG8gU2FwdWNhaSBNaW5hcyBHZXJhaXMgIDM3NTQwMDAwCi0JCQkJQlJBWklMCi0KLUFDLTA2LTEzICAgKGhleCkJCVNlbnNlbG9naXggTHRkCi1BQzA2MTMgICAgIChiYXNlIDE2KQkJU2Vuc2Vsb2dpeCBMdGQKLQkJCQk1NiBDYXJsdG9uIENvdXJ0LCBGb3JkIFdpbGxpYW0gTW9yZ2FuCi0JCQkJU3QuIEFzYXBoIEJ1c2luZXNzIFBhcmsKLQkJCQlTdC4gQXNhcGggRGViaWdoc2hpcmUgTEwxNyAwSkcKLQkJCQlVTklURUQgS0lOR0RPTQotCi1BQy0xOS05RiAgIChoZXgpCQlTVU5HUk9XIFBPV0VSIFNVUFBMWSBDTy4sTFRELgotQUMxOTlGICAgICAoYmFzZSAxNikJCVNVTkdST1cgUE9XRVIgU1VQUExZIENPLixMVEQuCi0JCQkJTk8uMiBUaWFuaHUgUm9hZCwgTmV3IGFuZCBIaWdoIFRlY2hub2xvZ3kgSW5kdXN0cmlhbCBEZXZlbG9wbWVudCBab25lCi0JCQkJSGVmZWkgQW5odWkgMjMwMDg4Ci0JCQkJQ0hJTkEKLQotQUMtMjAtQUEgICAoaGV4KQkJRE1BVEVLIENvLiwgTHRkLgotQUMyMEFBICAgICAoYmFzZSAxNikJCURNQVRFSyBDby4sIEx0ZC4KLQkJCQk2Ri4sIE5vLjE1NS0xLCBTZWMuIDMsIFdlbnhpbiBSZC4sIFhpdHVuIERpc3QuLAotCQkJCVRhaWNodW5nICA0MDc1MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQUMtMkYtQTggICAoaGV4KQkJSHVtYW5uaXggQ28uLEx0ZC4KLUFDMkZBOCAgICAgKGJhc2UgMTYpCQlIdW1hbm5peCBDby4sTHRkLgotCQkJCSM0MDIsIDk4LTQsIFNvbmdwYS1Eb25nLCBTb25ncGEtR3UKLQkJCQlTZW91bCAgMTM4LTE3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BQy0zNC1DQiAgIChoZXgpCQlTaGFuaGFpIEdCQ09NIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4gTHRkCi1BQzM0Q0IgICAgIChiYXNlIDE2KQkJU2hhbmhhaSBHQkNPTSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uIEx0ZAotCQkJCVJvb20gNjAyLCBCdWlsZGluZyA2LCBOby41NTUgRG9uZ2NodWFuIFJvYWQKLQkJCQlTaGFuZ2hhaSAgIDIwMDI0MQotCQkJCUNISU5BCi0KLUFDLTQ0LUYyICAgKGhleCkJCVJldm9sYWJzIEluYwotQUM0NEYyICAgICAoYmFzZSAxNikJCVJldm9sYWJzIEluYwotCQkJCTYzIEdyZWF0IFJkCi0JCQkJTWF5bmFyZCBNQSAwMTc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtNDctMjMgICAoaGV4KQkJR2VuZWxlYwotQUM0NzIzICAgICAoYmFzZSAxNikJCUdlbmVsZWMKLQkJCQlPbHZpdGllIDUKLQkJCQlJaXNhbG1pICA3NDEwMAotCQkJCUZJTkxBTkQKLQotQUMtNEEtRkUgICAoaGV4KQkJSGlzZW5zZSBCcm9hZGJhbmQgTXVsdGltZWRpYSBUZWNobm9sb2d5IENvLixMdGQuCi1BQzRBRkUgICAgIChiYXNlIDE2KQkJSGlzZW5zZSBCcm9hZGJhbmQgTXVsdGltZWRpYSBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJTm8uMTEgSmlhbmd4aSBSb2FkLFNoaW5hbiBEaXN0cmljdAotCQkJCVFpbmdkYW8gQ2l0eSBTaGFuZG9uZyBQcm92aW5jZSAyNjYwNzEKLQkJCQlDSElOQQotCi1BQy00Ri1GQyAgIChoZXgpCQlTVlMtVklTVEVLIEdtYkgKLUFDNEZGQyAgICAgKGJhc2UgMTYpCQlTVlMtVklTVEVLIEdtYkgKLQkJCQlNdWVobGJhY2hzdHIuIDIwCi0JCQkJU2VlZmVsZCBCWSA4MjIyOQotCQkJCUdFUk1BTlkKLQotQUMtNTEtMzUgICAoaGV4KQkJTVBJIFRFQ0gKLUFDNTEzNSAgICAgKGJhc2UgMTYpCQlNUEkgVEVDSAotCQkJCVZhZHN0cnVwdmVqIDM1Ci0JCQkJQmFnc3ZpP29lcmQgIERLLTI4ODAKLQkJCQlERU5NQVJLCi0KLUFDLTU4LTNCICAgKGhleCkJCUh1bWFuIEFzc2VtYmxlciwgSW5jLgotQUM1ODNCICAgICAoYmFzZSAxNikJCUh1bWFuIEFzc2VtYmxlciwgSW5jLgotCQkJCTItMS0xMS02RgotCQkJCVNoaWJ1eWEKLQkJCQlTaGlidXlhLWt1IFRva3lvIDE1MC0wMDAyCi0JCQkJSkFQQU4KLQotQUMtNUUtOEMgICAoaGV4KQkJVXRpbGxpbmsKLUFDNUU4QyAgICAgKGJhc2UgMTYpCQlVdGlsbGluawotCQkJCTgxNyBXb29saW0gTGlvbnMgVmFsbGV5IDEsIDMxMS0zIFNhbmdkYWV3b24tZG9uZyBKdW5nd29uLWd1Ci0JCQkJU2VvbmduYW0tc2kgR3llb25nZ2ktZG8gNDYyMTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUFDLTYxLTIzICAgKGhleCkJCURyaXZ2ZW4sIEluYy4KLUFDNjEyMyAgICAgKGJhc2UgMTYpCQlEcml2dmVuLCBJbmMuCi0JCQkJMTIwMDEgTmV0d29yayBCb3VsZXZhcmQKLQkJCQlCdWlsZGluZyBFLCBTdWl0ZSAxMTAKLQkJCQlTYW4gQW50b25pbyBUWCA3ODI0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtNjctMDYgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi1BQzY3MDYgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtNkYtNEYgICAoaGV4KQkJRW5zcGVydCBJbmMKLUFDNkY0RiAgICAgKGJhc2UgMTYpCQlFbnNwZXJ0IEluYwotCQkJCTJGLiwgRGFlaHdhIEIvRCwgCi0JCQkJMTY5IFNhbXN1bmctZG9uZywgR2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUwOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQUMtNzItODkgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi1BQzcyODkgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi1BQy04MC1ENiAgIChoZXgpCQlIZXhhdHJvbmljIEFCCi1BQzgwRDYgICAgIChiYXNlIDE2KQkJSGV4YXRyb25pYyBBQgotCQkJCUV4cG9ydGdhdGFuIDQ3QgotCQkJCUdvdGhlbmJ1cmcgIDQyMjQ2IAotCQkJCVNXRURFTgotCi1BQy04MS0xMiAgIChoZXgpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLUFDODExMiAgICAgKGJhc2UgMTYpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMSBKZW4gQWkgUm9hZCBIc2luY2h1IEluZHVzdHJpYWwgUGFyayBIdWtvdSwgCi0JCQkJTm8uIDE1LTEgWmhvbmdodWEgUm9hZCwgCi0JCQkJSHNpbmNodSAgMzAzNTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUFDLTgzLTE3ICAgKGhleCkJCVNoZW56aGVuIEZ1cnR1bmV0ZWwgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZAotQUM4MzE3ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEZ1cnR1bmV0ZWwgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZAotCQkJCUYxOSBidWlsZGluZyBBIHpob25na2UgcGxhemEgTmFuIHlpIHN0cmVldCBoaWdoLXRlY2ggem9uZSwgTmFuc2hhbiBEaXN0cmljdCwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUFDLTgzLUYwICAgKGhleCkJCU1hZ2VudGEgVmlkZW8gTmV0d29ya3MKLUFDODNGMCAgICAgKGJhc2UgMTYpCQlNYWdlbnRhIFZpZGVvIE5ldHdvcmtzCi0JCQkJMjAwNSBEZSBMYSBDcnV6IEJsdmQKLQkJCQlTdWl0ZSAxNTAKLQkJCQlTYW50YSBDbGFyYSBDYWxpZm9ybmlhIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy04Ni03NCAgIChoZXgpCQlPcGVuIE1lc2gsIEluYy4KLUFDODY3NCAgICAgKGJhc2UgMTYpCQlPcGVuIE1lc2gsIEluYy4KLQkJCQk1ODM3IE5XIFNreWxpbmUgQmx2ZAotCQkJCVBvcnRsYW5kIE9SIDk3MjI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy04Ni03RSAgIChoZXgpCQlDcmVhdGUgTmV3IFRlY2hub2xvZ3kgKEhLKSBMaW1pdGVkIENvbXBhbnkKLUFDODY3RSAgICAgKGJhc2UgMTYpCQlDcmVhdGUgTmV3IFRlY2hub2xvZ3kgKEhLKSBMaW1pdGVkIENvbXBhbnkKLQkJCQlSbSBCIDEwL0YgSmluRmVuZyBCdWlsZGluZywxMDAxIFNoYW5nQnUgU291dGggUm9hZCxGdVRpYW4gRGlzdHJpY3QgCi0JCQkJU2hlbiBaaGVuIEd1YW5nIERvbmcgNTE4MDMxCi0JCQkJQ0hJTkEKLQotQUMtOEEtQ0QgICAoaGV4KQkJUk9HRVIgRC5XZW5za2VyLCBHLldlbnNrZXIgc3Auai4KLUFDOEFDRCAgICAgKGJhc2UgMTYpCQlST0dFUiBELldlbnNrZXIsIEcuV2Vuc2tlciBzcC5qLgotCQkJCUdvc2Npc3pld28gNTkKLQkJCQlTenR1bSBQb21vcnNraWUgODItNDAwCi0JCQkJUE9MQU5ECi0KLUFDLTkzLTJGICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1BQzkzMkYgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSAgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLUFDLTlBLTk2ICAgKGhleCkJCUxhbnRpcSBEZXV0c2NobGFuZCBHbWJICi1BQzlBOTYgICAgIChiYXNlIDE2KQkJTGFudGlxIERldXRzY2hsYW5kIEdtYkgKLQkJCQlBbSBDYW1wZW9uIDMKLQkJCQlOZXViaWJlcmcgQmF2YXJpYSA4NTU3OQotCQkJCUdFUk1BTlkKLQotQUMtOUItODQgICAoaGV4KQkJU21hayBUZWNub2xvZ2lhIGUgQXV0b21hY2FvCi1BQzlCODQgICAgIChiYXNlIDE2KQkJU21hayBUZWNub2xvZ2lhIGUgQXV0b21hY2FvCi0JCQkJQXYuIFN0by4gQW50b25pbywgMjAxIC0gQmVsYSBWaXN0YQotCQkJCU9zYXNjbyBTYW8gUGF1bG8gQ0VQIDA2MDg2LTA3NQotCQkJCUJSQVpJTAotCi1BQy1BMC0xNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1BQ0EwMTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy1BQi04RCAgIChoZXgpCQlMeW5nc28gTWFyaW5lIEEvUwotQUNBQjhEICAgICAoYmFzZSAxNikJCUx5bmdzbyBNYXJpbmUgQS9TCi0JCQkJTHluZ3NvIEFsbGUgMgotCQkJCUhvcnNob2xtICBESy0yOTcwCi0JCQkJREVOTUFSSwotCi1BQy1CRS03NSAgIChoZXgpCQlVZmluZSBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLUFDQkU3NSAgICAgKGJhc2UgMTYpCQlVZmluZSBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLQkJCQk0NiwgR2V1bWdvay1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJU2VvbmctbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04MDQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQUMtQkUtQjYgICAoaGV4KQkJVmlzdWFsZWRnZSBUZWNobm9sb2d5IENvLiwgTHRkLgotQUNCRUI2ICAgICAoYmFzZSAxNikJCVZpc3VhbGVkZ2UgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxM0ZMLi0xIE5vLiA3MTYsIFpob25nemhlbmcgUm9hZCwgWmhvbmdoZSBDaXR5LAotCQkJCVRhaXBlaSBDb3VudHksICAgMjM1MTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUFDLUM5LTM1ICAgKGhleCkJCU5lc3MgQ29ycG9yYXRpb24KLUFDQzkzNSAgICAgKGJhc2UgMTYpCQlOZXNzIENvcnBvcmF0aW9uCi0JCQkJNC8xNjcgUHJvc3BlY3QgSGlnaHdheQotCQkJCVNldmVuIEhpbGxzCi0JCQkJU3lkbmV5IE5TVyAyMTQ3Ci0JCQkJQVVTVFJBTElBCi0KLUFDLUNBLTU0ICAgKGhleCkJCVRlbGxkdXMgVGVjaG5vbG9naWVzIEFCCi1BQ0NBNTQgICAgIChiYXNlIDE2KQkJVGVsbGR1cyBUZWNobm9sb2dpZXMgQUIKLQkJCQlTa2lmZmVydmk/b2VnZW4gMTAyCi0JCQkJTHVuZCAgMjI0IDc4Ci0JCQkJU1dFREVOCi0KLUFDLUNBLUJBICAgKGhleCkJCU1pZG9rdXJhIENvLiwgTHRkLiAKLUFDQ0FCQSAgICAgKGJhc2UgMTYpCQlNaWRva3VyYSBDby4sIEx0ZC4gCi0JCQkJN3RoIEZsb29yIEF6YWJ1ZGFpIEhpbm9raSBidWlsZGluZwotCQkJCSAzLTEtNSBBemFidWRhaSBNaW5hdG8ta3UgCi0JCQkJVG9reW8gIDEwNi0wMDQxCi0JCQkJSkFQQU4KLQotQUMtQ0UtOEYgICAoaGV4KQkJSFdBIFlBTyBURUNITk9MT0dJRVMgQ08uLCBMVEQKLUFDQ0U4RiAgICAgKGJhc2UgMTYpCQlIV0EgWUFPIFRFQ0hOT0xPR0lFUyBDTy4sIExURAotCQkJCU5PLiA2LCBMTi4gNDgsICBOQU5TSU5HIFJELiwKLQkJCQlZT05HS0FORyBDSVRZLCBUQUlOQU4gQ09VTlRZICA3MTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUFDLUQxLTgwICAgKGhleCkJCUNyZXhlbmRvIEJ1c2luZXNzIFNvbHV0aW9ucywgSW5jLgotQUNEMTgwICAgICAoYmFzZSAxNikJCUNyZXhlbmRvIEJ1c2luZXNzIFNvbHV0aW9ucywgSW5jLgotCQkJCTEwMjAxIFMuIDVzdCAgU3QuCi0JCQkJU3VpdGUgQS0yNjUKLQkJCQlQaG9lbml4IEFaIDg1MDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy1ERS00OCAgIChoZXgpCQlQUklWQVRFCi1BQ0RFNDggICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLUFDLUUzLTQ4ICAgKGhleCkJCU1hZGdlVGVjaCwgSW5jCi1BQ0UzNDggICAgIChiYXNlIDE2KQkJTWFkZ2VUZWNoLCBJbmMKLQkJCQk4NzkgTWFwbGUgU3QKLQkJCQlDb250b29jb29rIE5IIDAzMjI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy1FOS1BQSAgIChoZXgpCQlIYXkgU3lzdGVtcyBMdGQKLUFDRTlBQSAgICAgKGJhc2UgMTYpCQlIYXkgU3lzdGVtcyBMdGQKLQkJCQlXYXRlcm1hcmsKLQkJCQlBbGJhIENhbXB1cwotCQkJCUxpdmluZ3N0b24gV2VzdCBMb3RoaWFuIEVINTQgN0VHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQUMtRUEtNkEgICAoaGV4KQkJR0VOSVggSU5GT0NPTU0gQ08uLCBMVEQuCi1BQ0VBNkEgICAgIChiYXNlIDE2KQkJR0VOSVggSU5GT0NPTU0gQ08uLCBMVEQuCi0JCQkJMkYsIERhZWJvIEJsZGcuICMxMDA5LTM0Ci0JCQkJRG9rc2FuLURvbmcsIEtldW1jaGVvbi1HdQotCQkJCVNlb3VsICAxNTMtODI5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUFDLUY5LTdFICAgKGhleCkJCUVMRVNZUyBJTkMuCi1BQ0Y5N0UgICAgIChiYXNlIDE2KQkJRUxFU1lTIElOQy4KLQkJCQlTdWl0IDYyMywgODEyLTEsIEh5b211bi1kb25nCi0JCQkJVWxzYW4gQnVrLWd1IDY4My0zNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQjAtMUItN0MgICAoaGV4KQkJT250cm9sIEEuUy4KLUIwMUI3QyAgICAgKGJhc2UgMTYpCQlPbnRyb2wgQS5TLgotCQkJCVR1cmNhbiBDYWQgTm86MTkgWS5EdWR1bGx1Ci0JCQkJVW1yYW5peWUgSXN0YW5idWwgMzQ3NzUKLQkJCQlUVVJLRVkKLQotQjAtMzgtMjkgICAoaGV4KQkJU2lsaWNvbndhcmUgUHJlY2lzaW9uIEluZHVzdHJpZXMgQ28uLCBMdGQuCi1CMDM4MjkgICAgIChiYXNlIDE2KQkJU2lsaWNvbndhcmUgUHJlY2lzaW9uIEluZHVzdHJpZXMgQ28uLCBMdGQuCi0JCQkJTm8uIDEyMywgU2VjLjMsIERhIEZvbmcgUmQsIFRhbnR6dSwgCi0JCQkJVGFpY2h1bmcgIDQyNwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQjAtNDgtN0EgICAoaGV4KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi1CMDQ4N0EgICAgIChiYXNlIDE2KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJMS02RiwgQnVpbGRpbmcgMiwgUGluZ3NoYW5kYXl1YW4gSW5kdXN0cmlhbCwgU291dGggWm9uZSwKLQkJCQlUYW95dWFuIFN0cmVldCwgTmFuc2hhbiBEaXN0cmljdCwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLUIwLTUxLThFICAgKGhleCkJCUhvbGwgdGVjaG5vbG9neSBDTy5MdGQuCi1CMDUxOEUgICAgIChiYXNlIDE2KQkJSG9sbCB0ZWNobm9sb2d5IENPLkx0ZC4KLQkJCQlGMixCbGQgMjcsQW5sZSBJbmR1c3RyaWFsIFBhcmssTmFudG91IEd1YW5rb3UgTm8uMiBSb2FkCi0JCQkJTmFuc2hhbiBEaXN0cmljdCwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1MgotCQkJCUNISU5BCi0KLUIwLTVCLTFGICAgKGhleCkJCVRIRVJNTyBGSVNIRVIgU0NJRU5USUZJQyBTLlAuQS4KLUIwNUIxRiAgICAgKGJhc2UgMTYpCQlUSEVSTU8gRklTSEVSIFNDSUVOVElGSUMgUy5QLkEuCi0JCQkJU1RSQURBIFJJVk9MVEFOQSBLTSA2LzcKLQkJCQlST0RBTk8gTUlMQU4gMjAwOTAKLQkJCQlJVEFMWQotCi1CMC02NS02MyAgIChoZXgpCQlTaGFuZ2hhaSBSYWlsd2F5IENvbW11bmljYXRpb24gRmFjdG9yeQotQjA2NTYzICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFJhaWx3YXkgQ29tbXVuaWNhdGlvbiBGYWN0b3J5Ci0JCQkJTm8uMTc5IFdlc3QgSmlhbmdjaGFuZyByb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDQzNgotCQkJCUNISU5BCi0KLUIwLTc1LUQ1ICAgKGhleCkJCVpURSBDb3Jwb3JhdGlvbgotQjA3NUQ1ICAgICAoYmFzZSAxNikJCVpURSBDb3Jwb3JhdGlvbgotCQkJCTEyL0YsWlRFIFImRCBCdWlsZGluZyxLZWppbmFuIFJvYWQsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUIwLTgxLUQ4ICAgKGhleCkJCUktc3lzIENvcnAKLUIwODFEOCAgICAgKGJhc2UgMTYpCQlJLXN5cyBDb3JwCi0JCQkJMjQ1NyBBdmlhdGlvbiBBdmUKLQkJCQlTdWl0ZSA5MDAKLQkJCQlOLiBDaGFybGVzdG9uICBTb3V0aCBDYXJvbGluYSAyOTQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtODktOTEgICAoaGV4KQkJTEdFIAotQjA4OTkxICAgICAoYmFzZSAxNikJCUxHRSAKLQkJCQk2MC0zOSAsIEthc2FuIC1kb25nICwgR3VtY2hlb24tZ3UuCi0JCQkJU2VvdWwgICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUIwLTkwLTc0ICAgKGhleCkJCUZ1bGFuIEVsZWN0cm9uaWNzIExpbWl0ZWQKLUIwOTA3NCAgICAgKGJhc2UgMTYpCQlGdWxhbiBFbGVjdHJvbmljcyBMaW1pdGVkCi0JCQkJRmxhdCBCJkMsMy9GLEExIEJsb2NrLCBHYW94aW4gQ3liZXItVGVjaCBab25lLE5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQjAtOTEtMzQgICAoaGV4KQkJVGFsZW8KLUIwOTEzNCAgICAgKGJhc2UgMTYpCQlUYWxlbwotCQkJCTQxNDAgRHVibGluIEJsdmQKLQkJCQlTdWl0ZSA0MDAKLQkJCQlEdWJsaW4gQ2FsaWZvcm5pYSA5NDU2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtOTctM0EgICAoaGV4KQkJRS1GdWVsIENvcnBvcmF0aW9uCi1CMDk3M0EgICAgIChiYXNlIDE2KQkJRS1GdWVsIENvcnBvcmF0aW9uCi0JCQkJMTU0NjYgTG9zIEdhdG9zIEJsdmQuICMzNwotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtOTktMjggICAoaGV4KQkJRnVqaXRzdSBMaW1pdGVkCi1CMDk5MjggICAgIChiYXNlIDE2KQkJRnVqaXRzdSBMaW1pdGVkCi0JCQkJTXVzYXNoaS1rb3N1Z2kgVG93ZXIgUGxhY2UgQmxkZy4sCi0JCQkJNDAzLCBLb3N1Z2ktY2hvIDEtY2hvbWUsIE5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjExLTAwNjMKLQkJCQlKQVBBTgotCi1CMC05QS1FMiAgIChoZXgpCQlTVEVNTUVSIElNQUdJTkcgR21iSAotQjA5QUUyICAgICAoYmFzZSAxNikJCVNURU1NRVIgSU1BR0lORyBHbWJICi0JCQkJR3V0ZW5iZXJnc3RyLiAxMQotCQkJCVB1Y2hoZWltIEJ5IDgyMTc4Ci0JCQkJR0VSTUFOWQotCi1CMC05Qi1ENCAgIChoZXgpCQlHTkggU29mdHdhcmUgSW5kaWEgUHJpdmF0ZSBMaW1pdGVkCi1CMDlCRDQgICAgIChiYXNlIDE2KQkJR05IIFNvZnR3YXJlIEluZGlhIFByaXZhdGUgTGltaXRlZAotCQkJCTkvMTQgU2VuZ2FuaSBBbW1hbiBLb2lsIFN0cmVldAotCQkJCU1hZHV2YW5rYXJhaSwgR3VpbmR5Ci0JCQkJQ2hlbm5haSBUYW1pbG5hZHUgNjAwMDMyCi0JCQkJSU5ESUEKLQotQjAtQTEtMEEgICAoaGV4KQkJUGl2b3RhbCBTeXN0ZW1zIENvcnBvcmF0aW9uCi1CMEExMEEgICAgIChiYXNlIDE2KQkJUGl2b3RhbCBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJNDY4MyAgQ2hhYm90IERyaXZlCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtQTctMkEgICAoaGV4KQkJRW5zZW1ibGUgRGVzaWducywgSW5jLgotQjBBNzJBICAgICAoYmFzZSAxNikJCUVuc2VtYmxlIERlc2lnbnMsIEluYy4KLQkJCQk4NzAgR29sZCBGbGF0IFJvYWQKLQkJCQlOZXZhZGEgQ2l0eSBDQSA5NTk1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtQUEtMzYgICAoaGV4KQkJR1VBTkdET05HIE9QUE8gTU9CSUxFIFRFTEVDT01NVU5JQ0FUSU9OUyBDT1JQLixMVEQuCi1CMEFBMzYgICAgIChiYXNlIDE2KQkJR1VBTkdET05HIE9QUE8gTU9CSUxFIFRFTEVDT01NVU5JQ0FUSU9OUyBDT1JQLixMVEQuCi0JCQkJTk8uMTggSEFJQklOIFJPQUQKLQkJCQlXVVNIQSxDSEFORydBTgotCQkJCURPTkdHVUFOIEdVQU5HRE9ORyA1MjM4NjAKLQkJCQlDSElOQQotCi1CMC1CMy0yQiAgIChoZXgpCQlTbGljYW4gU3AuIHogby5vLgotQjBCMzJCICAgICAoYmFzZSAxNikJCVNsaWNhbiBTcC4geiBvLm8uCi0JCQkJTS4gS29ub3BuaWNraWVqIDE4Ci0JCQkJQnlkZ29zemN6IEt1amF3c2tvLVBvbW9yc2tpZSA4NS0xMjQKLQkJCQlQT0xBTkQKLQotQjAtQjgtRDUgICAoaGV4KQkJTmFuamluZyBOZW5ncnVpIEF1dG8gRXF1aXBtZW50IENPLixMdGQKLUIwQjhENSAgICAgKGJhc2UgMTYpCQlOYW5qaW5nIE5lbmdydWkgQXV0byBFcXVpcG1lbnQgQ08uLEx0ZAotCQkJCU5vLjEwOCBHYW5qaWFiaWFuIEVhc3QgWWFvaHVhIFRvd24KLQkJCQlOYW5qaW5nIEppYW5nc3UgMjEwMDQ2Ci0JCQkJQ0hJTkEKLQotQjAtQkQtQTEgICAoaGV4KQkJWkFLTEFEIEVMRUtUUk9OSUNaTlkgU0lNUwotQjBCREExICAgICAoYmFzZSAxNikJCVpBS0xBRCBFTEVLVFJPTklDWk5ZIFNJTVMKLQkJCQlQT0QgU0tBUlBBIDUxQQotCQkJCUJZREdPU1pDWiBLVUpBV1NLTy1QT01PUlNLSUUgODUtNzk2Ci0JCQkJUE9MQU5ECi0KLUIwLUJGLTk5ICAgKGhleCkJCVdJWklURE9OR0RPCi1CMEJGOTkgICAgIChiYXNlIDE2KQkJV0laSVRET05HRE8KLQkJCQkyRiwgMjk5LTEsIDMtRE9ORywgU1VOR1NVIDItR0EKLQkJCQlTVU5HRE9ORy1LVQotCQkJCVNFT1VMICAxMzMtODMzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUIwLUM2LTlBICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLUIwQzY5QSAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OSAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUIwLUM4LUFEICAgKGhleCkJCVBlb3BsZSBQb3dlciBDb21wYW55Ci1CMEM4QUQgICAgIChiYXNlIDE2KQkJUGVvcGxlIFBvd2VyIENvbXBhbnkKLQkJCQk2MjAgTG93ZWxsIEF2ZQotCQkJCVBhbG8gQWx0byBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtRTMtOUQgICAoaGV4KQkJQ0FUIFNZU1RFTSBDTy4sTFRELgotQjBFMzlEICAgICAoYmFzZSAxNikJCUNBVCBTWVNURU0gQ08uLExURC4KLQkJCQkzLTE0Ny0yNyBIaWdhc2ktc2lubWFjaGkgSGlyb2hhdGEta3UKLQkJCQlIaW1lamkgSHlvZ28gNjcxLTExMjEKLQkJCQlKQVBBTgotCi1CMC1FNy01NCAgIChoZXgpCQkyV2lyZQotQjBFNzU0ICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CMC1FOS03RSAgIChoZXgpCQlBZHZhbmNlZCBNaWNybyBQZXJpcGhlcmFscwotQjBFOTdFICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIE1pY3JvIFBlcmlwaGVyYWxzCi0JCQkJVW5pdCAxIEhhcnJpZXIgSG91c2UKLQkJCQlTZWRnZXdheSBCdWlzbmVzcyBQYXJrCi0JCQkJV2l0Y2hmb3JkIENhbWJyaWRnZXNoaXJlIENCNiAySFkKLQkJCQlVTklURUQgS0lOR0RPTQotCi1CMC1GMS1CQyAgIChoZXgpCQlEaGVtYXggSW5nZW5pZXJvcyBMdGRhCi1CMEYxQkMgICAgIChiYXNlIDE2KQkJRGhlbWF4IEluZ2VuaWVyb3MgTHRkYQotCQkJCVNpZXRlIE9yaWVudGUgMTIzNAotCQkJCVZpbmEgZGVsIE1hciBSZWdpb24gZGUgVmFscGFyYWlzbyAyNTMwOTU0Ci0JCQkJQ0hJTEUKLQotQjQtMDEtNDIgICAoaGV4KQkJR0NJIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLixMVEQKLUI0MDE0MiAgICAgKGJhc2UgMTYpCQlHQ0kgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLExURAotCQkJCU5vLjM4MSx4aW5nYW5nemhvbmcgcm9hZCAsCi0JCQkJR3VhbmdaaG91IEd1YW5nRG9uZyA1MTAzMTAKLQkJCQlDSElOQQotCi1CNC0wNy1GOSAgIChoZXgpCQlTQU1TVU5HIEVMRUNUUk8tTUVDSEFOSUNTCi1CNDA3RjkgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFTEVDVFJPLU1FQ0hBTklDUwotCQkJCVN1d29uLVNpLCBHeWVvbmdnaV9EbywgS29yZWEKLQkJCQlTdXdvbiBHeWVvbmdnaV9EbyA0NDMtNzQzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI0LTA4LTMyICAgKGhleCkJCVRDIENvbW11bmljYXRpb25zCi1CNDA4MzIgICAgIChiYXNlIDE2KQkJVEMgQ29tbXVuaWNhdGlvbnMKLQkJCQkxNzg4MSBDYXJ0d3JpZ2h0IFJvYWQKLQkJCQlJcnZpbmUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LTBFLURDICAgKGhleCkJCUxHLUVyaWNzc29uIENvLixMdGQuCi1CNDBFREMgICAgIChiYXNlIDE2KQkJTEctRXJpY3Nzb24gQ28uLEx0ZC4KLQkJCQk1MzMsSG9neWUtMWRvbmcsRG9uZ2FuLWd1Ci0JCQkJTEcgUiZEIENvbXBsZXguTEctRXJpY3Nzb24sCi0JCQkJQW55YW5nLXNoaSBLeXVuZ2tpLWRvIDQzMS03NDkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQjQtMTQtODkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQjQxNDg5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtMjgtRjEgICAoaGV4KQkJRS1QcmltZSBDby4sIEx0ZC4KLUI0MjhGMSAgICAgKGJhc2UgMTYpCQlFLVByaW1lIENvLiwgTHRkLgotCQkJCVJtMTIwNywgS29sb24gU2NpZW5jZSBWYWxsZXksIDgxMSwKLQkJCQlLdXJvLURvbmcsIEt1cm8tS3UKLQkJCQlTZW91bCAgMTUyMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI0LTJBLTM5ICAgKGhleCkJCU9SQklUIE1FUlJFVCwgc3BvbC4gcyByLiBvLgotQjQyQTM5ICAgICAoYmFzZSAxNikJCU9SQklUIE1FUlJFVCwgc3BvbC4gcyByLiBvLgotCQkJCVZvZG5hbnNrYSA2NzUvMzAKLQkJCQlQcmFoYSAgMTk4IDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotQjQtMkMtQkUgICAoaGV4KQkJRGlyZWN0IFBheW1lbnQgU29sdXRpb25zIExpbWl0ZWQKLUI0MkNCRSAgICAgKGJhc2UgMTYpCQlEaXJlY3QgUGF5bWVudCBTb2x1dGlvbnMgTGltaXRlZAotCQkJCTk4IEFuemFjIEF2ZW51ZQotCQkJCUF1Y2tsYW5kICAxMDM1Ci0JCQkJTkVXIFpFQUxBTkQKLQotQjQtMzUtRjcgICAoaGV4KQkJWmhlamlhbmcgUGVhcm1haW4gRWxlY3Ryb25pY3MgQ28ubHRkLgotQjQzNUY3ICAgICAoYmFzZSAxNikJCVpoZWppYW5nIFBlYXJtYWluIEVsZWN0cm9uaWNzIENvLmx0ZC4KLQkJCQk0RiBZaXRhaSBNYW5zaW9uLCA3NiBHdWN1aSBSb2FkLAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMgotCQkJCUNISU5BCi0KLUI0LTM3LTQxICAgKGhleCkJCUNvbnNlcnQsIEluYy4KLUI0Mzc0MSAgICAgKGJhc2UgMTYpCQlDb25zZXJ0LCBJbmMuCi0JCQkJNDcwMCBGYWxscyBvZiBOZXVzZSBSZC4KLQkJCQlTdWl0ZSAzNDAKLQkJCQlSYWxlaWdoIE5DIDI3NjA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC0zOS1ENiAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi1CNDM5RDYgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMCBGb290aGlsbHMgQmx2ZC4KLQkJCQlSb3NldmlsbGUgQ2FsaWZvcm5pYSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtM0QtQjIgICAoaGV4KQkJRGVncmVhbmUgSG9yaXpvbgotQjQzREIyICAgICAoYmFzZSAxNikJCURlZ3JlYW5lIEhvcml6b24KLQkJCQk3MzAgUnVlIGRlIGwmIzM5O0luaXRpYXRpdmUKLQkJCQlDdWVycyBWYXIgODMzOTAKLQkJCQlGUkFOQ0UKLQotQjQtNDEtN0EgICAoaGV4KQkJU2hlblpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sTHRkCi1CNDQxN0EgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJNEYsQmFpeWluZyBCdWlsZGluZywgTm8uMTAxOSxOYW5oYWkgUkQsU2hla291Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA2NwotCQkJCUNISU5BCi0KLUI0LTRDLUMyICAgKGhleCkJCU5SIEVMRUNUUklDIENPLiwgTFRECi1CNDRDQzIgICAgIChiYXNlIDE2KQkJTlIgRUxFQ1RSSUMgQ08uLCBMVEQKLQkJCQk2OSxTdXl1YW4gQXZlbnVlCi0JCQkJSmlhbmduaW5nCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMTEwMgotCQkJCUNISU5BCi0KLUI0LTUyLTUzICAgKGhleCkJCVNlYWdhdGUgVGVjaG5vbG9neQotQjQ1MjUzICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neQotCQkJCTEyODAgRGlzYyBEcml2ZQotCQkJCVNoYWtvcGVlIE1OIDU1Mzc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC01OC02MSAgIChoZXgpCQlDUmVtb3RlLCBMTEMKLUI0NTg2MSAgICAgKGJhc2UgMTYpCQlDUmVtb3RlLCBMTEMKLQkJCQkxMTk1IE5vZWwgRHJpdmUKLQkJCQlNRU5MTyBQQVJLIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC01Qy1BNCAgIChoZXgpCQlUaGluZy10YWxrIFdpcmVsZXNzIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uIExpbWl0ZWQKLUI0NUNBNCAgICAgKGJhc2UgMTYpCQlUaGluZy10YWxrIFdpcmVsZXNzIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uIExpbWl0ZWQKLQkJCQk0OTggR3VvIFNob3UgSmluZyBSb2FkLCBTdWl0ZSAxMDQwMgotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi1CNC03NC05RiAgIChoZXgpCQlhc2tleSBjb21wdXRlciBjb3JwCi1CNDc0OUYgICAgIChiYXNlIDE2KQkJYXNrZXkgY29tcHV0ZXIgY29ycAotCQkJCTExMEYsTk8uMTE5LENISUVOS0FORyBSRCxDSFVORy1ITywKLQkJCQlUQUlQRUkgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUI0LTgyLUZFICAgKGhleCkJCUFza2V5IENvbXB1dGVyIENvcnAKLUI0ODJGRSAgICAgKGJhc2UgMTYpCQlBc2tleSBDb21wdXRlciBDb3JwCi0JCQkJMTBGLE5PLjExOSxDSElFTktBTkcgUkQsQ0hVTkctSE8sCi0JCQkJVEFJUEVJIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQjQtOTktQkEgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1CNDk5QkEgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1BNC1FMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1CNEE0RTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1BNS1BOSAgIChoZXgpCQlNT0RJIEdtYkgKLUI0QTVBOSAgICAgKGJhc2UgMTYpCQlNT0RJIEdtYkgKLQkJCQlLYXBlbGxlbndlZyAyMQotCQkJCVJFSUNIU0hPRi1TaW5zcGVydCAgNTE1ODAKLQkJCQlHRVJNQU5ZCi0KLUI0LUFBLTREICAgKGhleCkJCUVuc2VxdWVuY2UsIEluYy4KLUI0QUE0RCAgICAgKGJhc2UgMTYpCQlFbnNlcXVlbmNlLCBJbmMuCi0JCQkJMTExIFNXIDV0aCBBdmUgU3VpdGUgMTQwMAotCQkJCVBvcnRsYW5kIE9SIDk3MjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1CMC0xNyAgIChoZXgpCQlBdmF5YSwgSW5jCi1CNEIwMTcgICAgIChiYXNlIDE2KQkJQXZheWEsIEluYwotCQkJCTIxMSBNb3VudCBBaXJ5IFJvYWQgCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMC0yMzExIAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtQjUtQUYgICAoaGV4KQkJTWluc3VuZyBFbGVjdHJvbmljcwotQjRCNUFGICAgICAoYmFzZSAxNikJCU1pbnN1bmcgRWxlY3Ryb25pY3MKLQkJCQlNZWdhLXZhbGxleSAjNjIwCi0JCQkJRG9uZ2FuLWd1IEd3YW55YW5nLWRvbmcsIDc5OQotCQkJCUFueWFuZy1zaSBLeWVvbmdnaS1kbyA0MzEtNzY3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI0LUI4LThEICAgKGhleCkJCVRodWggQ29tcGFueQotQjRCODhEICAgICAoYmFzZSAxNikJCVRodWggQ29tcGFueQotCQkJCTYwNSAgVGVycml0b3JpYWwgRHIKLQkJCQlTdWl0ZSBDCi0JCQkJQm9saW5nYnJvb2sgSUwgNjA0NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUM0LTRFICAgKGhleCkJCVZYTCBlVGVjaCBQdnQgTHRkCi1CNEM0NEUgICAgIChiYXNlIDE2KQkJVlhMIGVUZWNoIFB2dCBMdGQKLQkJCQkjOTEsIDExdGggTWFpbiwgQmVndXIgTWFpbiBSb2FkCi0JCQkJSG9uZ2FzYW5kcmEKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDA2OAotCQkJCUlORElBCi0KLUI0LUM3LTk5ICAgKGhleCkJCU1vdG9yb2xhIFNvbHV0aW9ucyBJbmMuCi1CNEM3OTkgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgU29sdXRpb25zIEluYy4KLQkJCQkxIE1vdG9yb2xhIFBsYXphCi0JCQkJSG9sdHN2aWxsZSBOWSAxMTc0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtQzgtMTAgICAoaGV4KQkJVU1QSSBFbGV0dHJvbmljYQotQjRDODEwICAgICAoYmFzZSAxNikJCVVNUEkgRWxldHRyb25pY2EKLQkJCQlWaWEgUmVzcGlnaGksIDE1Ci0JCQkJQ2F0dG9saWNhICA0Nzg0MQotCQkJCUlUQUxZCi0KLUI0LUNGLURCICAgKGhleCkJCVNoZW56aGVuIEppdXpob3UgRWxlY3RyaWMgQ28uLExURAotQjRDRkRCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEppdXpob3UgRWxlY3RyaWMgQ28uLExURAotCQkJCTZGLEppdXpob3UgRWxlY3RyaWMgQnVpbGRpbmcsU291dGhlcm4gTm8uMTJSRC4sSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQjQtRTAtQ0QgICAoaGV4KQkJSU8gVHVyYmluZSwgSW5jLgotQjRFMENEICAgICAoYmFzZSAxNikJCUlPIFR1cmJpbmUsIEluYy4KLQkJCQkzMDMxIFRpc2NoIFdheSwgU3VpdGUgNDUwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUVELTE5ICAgKGhleCkJCVBpZSBEaWdpdGFsLCBJbmMuCi1CNEVEMTkgICAgIChiYXNlIDE2KQkJUGllIERpZ2l0YWwsIEluYy4KLQkJCQk1NzUgTWFya2V0IHN0LiwgOHRoIGZsb29yCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwNS0yODIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1FRC01NCAgIChoZXgpCQlXb2hsZXIgVGVjaG5vbG9naWVzCi1CNEVENTQgICAgIChiYXNlIDE2KQkJV29obGVyIFRlY2hub2xvZ2llcwotCQkJCTMxMDU1IEh1bnR3b29kIEF2ZW51ZQotCQkJCUhheXdhcmQgQ0EgOTQ1NDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUVFLUQ0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1CNEVFRDQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUYzLTIzICAgKGhleCkJCVBFVEFURUwgSU5DLgotQjRGMzIzICAgICAoYmFzZSAxNikJCVBFVEFURUwgSU5DLgotCQkJCSMzMjIgVEhFIE8gVklMTEUgNzIwLTI1LCBZRU9LU0FNLURPTkcKLQkJCQlHQU5HTkFNLUdVIFNFT1VMIDEzNTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CNC1GQy03NSAgIChoZXgpCQlTRU1BIEVsZWN0cm9uaWNzKEhLKSBDTy4sTFRECi1CNEZDNzUgICAgIChiYXNlIDE2KQkJU0VNQSBFbGVjdHJvbmljcyhISykgQ08uLExURAotCQkJCVhpYWxpbmdiZWkgSW5kdXN0cmlhbCBab25lICBMaWFvYnUsIAotCQkJCURvbmdndWFuIEd1YW5nZG9uZyA1MjM0MTEKLQkJCQlDSElOQQotCi1COC0wQi05RCAgIChoZXgpCQlST1BFWCBJbmR1c3RyaWUtRWxla3Ryb25payBHbWJICi1CODBCOUQgICAgIChiYXNlIDE2KQkJUk9QRVggSW5kdXN0cmllLUVsZWt0cm9uaWsgR21iSAotCQkJCUdhbnNhZWNrZXIgMjEKLQkJCQlCaWV0aWdoZWltLUJpc3NpbmdlbiBCYWRlbiBXdWVydHRlbWJlcmcgNzQzMjEKLQkJCQlHRVJNQU5ZCi0KLUI4LTI4LThCICAgKGhleCkJCVBhcmtlciBIYW5uaWZpbgotQjgyODhCICAgICAoYmFzZSAxNikJCVBhcmtlciBIYW5uaWZpbgotCQkJCUNvbmRpdGlvbiBNb25pdG9yaW5nIENlbnRyZQotCQkJCUJydW5lbCBXYXkKLQkJCQlUaGV0Zm9yZCBOb3Jmb2xrIElQMjQgMUhQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQjgtMkEtREMgICAoaGV4KQkJRUZSIEV1cm9waT9vZWlzY2hlIEZ1bmstUnVuZHN0ZXVlcnVuZyBHbWJICi1CODJBREMgICAgIChiYXNlIDE2KQkJRUZSIEV1cm9waT9vZWlzY2hlIEZ1bmstUnVuZHN0ZXVlcnVuZyBHbWJICi0JCQkJTnltcGhlbmJ1cmdlciBTdHIuIDIwYgotCQkJCU11bmljaCAgODAzMzUKLQkJCQlHRVJNQU5ZCi0KLUI4LTNBLTdCICAgKGhleCkJCVdvcmxkcGxheSAoQ2FuYWRhKSBJbmMuCi1CODNBN0IgICAgIChiYXNlIDE2KQkJV29ybGRwbGF5IChDYW5hZGEpIEluYy4KLQkJCQk4MDMtMjR0aCBBdmUgU0UsIFVuaXQgMjAwCi0JCQkJQ2FsZ2FyeSBBbGJlcnRhIFQyRyAxUDUKLQkJCQlDQU5BREEKLQotQjgtM0QtNEUgICAoaGV4KQkJU2hlbnpoZW4gQ3VsdHJhdmlldyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZCBTaGFuZ2hhaSBCcmFuY2gKLUI4M0Q0RSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBDdWx0cmF2aWV3IERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkIFNoYW5naGFpIEJyYW5jaAotCQkJCTIvRixCdWlsZGluZyM1LDE2OTBDYWlsdW4gUm9hZCxaaGFuZ2ppYW5nIEhpLXRlY2ggUGFyaywKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotQjgtNDEtNUYgICAoaGV4KQkJQVNQIEFHCi1CODQxNUYgICAgIChiYXNlIDE2KQkJQVNQIEFHCi0JCQkJTWF4LSBQbGFuY2stU3RyLiAxNSBhLWMKLQkJCQlFcmtyYXRoIE5SVyA0MDY5OQotCQkJCUdFUk1BTlkKLQotQjgtNjEtNkYgICAoaGV4KQkJQWNjdG9uIFdpcmVsZXNzIEJyb2FkYmFuZChBV0IpLCBDb3JwLgotQjg2MTZGICAgICAoYmFzZSAxNikJCUFjY3RvbiBXaXJlbGVzcyBCcm9hZGJhbmQoQVdCKSwgQ29ycC4KLQkJCQlOby4xIENyZWF0aW9uIFJkIElJSSwgU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDA3NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQjgtNjQtOTEgICAoaGV4KQkJQ0sgVGVsZWNvbSBMdGQKLUI4NjQ5MSAgICAgKGJhc2UgMTYpCQlDSyBUZWxlY29tIEx0ZAotCQkJCUtlamkgQXZlbnVlLEhleXVhbiBIaS10ZWNoIERldmVsb3BtZW50IFpvbmUKLQkJCQlIZXl1YW4gIEd1YW5nZG9uZyBQcm92aW5jZSA1MTcwMDAKLQkJCQlDSElOQQotCi1COC02NS0zQiAgIChoZXgpCQlCb2x5bWluLCBJbmMuCi1CODY1M0IgICAgIChiYXNlIDE2KQkJQm9seW1pbiwgSW5jLgotCQkJCTEzRi0xLCBOby4yMCwgVGEtTG9uZyBSZC4sIAotCQkJCVRhaWNodW5nICA0MDMxMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQjgtNzAtRjQgICAoaGV4KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURC4gCi1CODcwRjQgICAgIChiYXNlIDE2KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURC4gCi0JCQkJTk8uIDI1LCBUSEUgM1JEIFN0cmVldCBLVU5TSEFOIEVYUE9SVCBQUk9DRVNTSU5HIFpPTkUgCi0JCQkJS1VOU0hBTiBTVVpIT1UgMjE1MzAwCi0JCQkJQ0hJTkEKLQotQjgtNzktN0UgICAoaGV4KQkJU2VjdXJlIE1ldGVycyAoVUspIExpbWl0ZWQKLUI4Nzk3RSAgICAgKGJhc2UgMTYpCQlTZWN1cmUgTWV0ZXJzIChVSykgTGltaXRlZAotCQkJCVNlY3VyZSBIb3VzZQotCQkJCU1vb3JzaWRlIFJvYWQKLQkJCQlXaW5jaGVzdGVyIEhhbXBzaGlyZSBTTzIzIDdSWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUI4LTg3LTFFICAgKGhleCkJCUdvb2QgTWluZCBJbmR1c3RyaWVzIENvLiwgTHRkLgotQjg4NzFFICAgICAoYmFzZSAxNikJCUdvb2QgTWluZCBJbmR1c3RyaWVzIENvLiwgTHRkLgotCQkJCTIyLCBUYSBZZW91IDJuZCBTdCwgCi0JCQkJVGEgTGlhbyBEaXN0LiAKLQkJCQlLYW9oc2l1bmcgIDgzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQjgtOEUtM0EgICAoaGV4KQkJSW5maW5pdGUgVGVjaG5vbG9naWVzIEpMVAotQjg4RTNBICAgICAoYmFzZSAxNikJCUluZmluaXRlIFRlY2hub2xvZ2llcyBKTFQKLQkJCQlPZmZpY2UgMzIwMywgTGV2ZWwgMzIKLQkJCQlMaXdhIEhlaWdodHMgVG93ZXIKLQkJCQlKdW1laXJhaCBMYWtlIFRvd2VycyBEdWJhaSAKLQkJCQlVTklURUQgQVJBQiBFTUlSQVRFUwotCi1COC05Mi0xRCAgIChoZXgpCQlCRyBUJmFtcDtBCi1CODkyMUQgICAgIChiYXNlIDE2KQkJQkcgVCZhbXA7QQotCQkJCTRGLCBMJmFtcDtDIFRvd2VyCi0JCQkJMTAyNi01MiBTYW5ib24tZG9uZwotCQkJCUd1bnBvLXNpIEd5ZW9uZ2dpLWRvIDQzNS04NDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQjgtOTQtRDIgICAoaGV4KQkJUmV0YWlsIElubm92YXRpb24gSFRUIEFCCi1CODk0RDIgICAgIChiYXNlIDE2KQkJUmV0YWlsIElubm92YXRpb24gSFRUIEFCCi0JCQkJU2pvYW5nc3ZhZ2VuIDIKLQkJCQlTb2xsZW50dW5hICBTLTE5MiA3MgotCQkJCVNXRURFTgotCi1COC1BMy1FMCAgIChoZXgpCQlCZW5SdWkgVGVjaG5vbG9neSBDby4sTHRkCi1COEEzRTAgICAgIChiYXNlIDE2KQkJQmVuUnVpIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLjMwMnJvb20gQnVpbGRpbmc1MDMgVGFpUmFuIFRlY2hub1BhcmsuRnVUaWFuIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAwMAotCQkJCUNISU5BCi0KLUI4LUE4LUFGICAgKGhleCkJCUxvZ2ljIFMucC5BLgotQjhBOEFGICAgICAoYmFzZSAxNikJCUxvZ2ljIFMucC5BLgotCQkJCVZpYSBHYWxpbGVpIDUKLQkJCQlDYXNzaW5hIGRlJyBQZWNjaGkgTUkgMjAwNjAKLQkJCQlJVEFMWQotCi1COC1BQy02RiAgIChoZXgpCQlEZWxsIEluYwotQjhBQzZGICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRYIDc4NzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1COC1BRi02NyAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLUI4QUY2NyAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjgtQjEtQzcgICAoaGV4KQkJQlQmQ09NIENPLixMVEQKLUI4QjFDNyAgICAgKGJhc2UgMTYpCQlCVCZDT00gQ08uLExURAotCQkJCSMxMTAzLCBFJkMgVmVudHVyZSBEcmVhbSBUb3dlciBJSQotCQkJCTE5Ny0xMCwgR3Vyby0zZG9uZywgR3Vyby1HdSwKLQkJCQlTZW91bCAgMTUyLTcxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1COC1CQS02OCAgIChoZXgpCQlYaSdhbiBKaXpob25nIERpZ2l0YWwgQ29tbXVuaWNhdGlvbiBDby4sTHRkCi1COEJBNjggICAgIChiYXNlIDE2KQkJWGknYW4gSml6aG9uZyBEaWdpdGFsIENvbW11bmljYXRpb24gQ28uLEx0ZAotCQkJCTEwIEJsb2NrIE5PLjEgRW50ZXJwcmlzZSBOZXdseS10eXBlZCBJbmR1c3RyaWFsIFpvbmUgSGlnaC1UZWNoIFpvbmUgWGlpP29laT9vZWFuLENoaW5hCi0JCQkJWGknYW4gU2hhYW5YaSA3MTAxMTkKLQkJCQlDSElOQQotCi1COC1CQS03MiAgIChoZXgpCQlDeW5vdmUKLUI4QkE3MiAgICAgKGJhc2UgMTYpCQlDeW5vdmUKLQkJCQkxMCBjaXRlIHJvdWdlbW9udAotCQkJCVBhcmlzICA3NTAwOQotCQkJCUZSQU5DRQotCi1COC1CRS1CRiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1COEJFQkYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1COC1DNy0xNiAgIChoZXgpCQlGaWJlcmhvbWUgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvLixMVEQKLUI4QzcxNiAgICAgKGJhc2UgMTYpCQlGaWJlcmhvbWUgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvLixMVEQKLQkJCQlOby41IERvbmd4aW4gUm9hZAotCQkJCUhvbmdzaGFuIERpc3RyaWN0Ci0JCQkJV3VoYW4gSHViZWkgNDMwMDc0Ci0JCQkJQ0hJTkEKLQotQjgtQzctNUQgICAoaGV4KQkJQXBwbGUgSW5jCi1COEM3NUQgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1COC1DRC1BNyAgIChoZXgpCQlNYXhlbGVyIFRlY2hub2xvZ2llcyBMdGQuCi1COENEQTcgICAgIChiYXNlIDE2KQkJTWF4ZWxlciBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTEgRG93biBQbGFjZQotCQkJCUxvbmRvbiBVSyBXNiA5SkgKLQkJCQlVTklURUQgS0lOR0RPTQotCi1COC1EMC02RiAgIChoZXgpCQlHVUFOR1pIT1UgSEtVU1QgRk9LIFlJTkcgVFVORyBSRVNFQVJDSCBJTlNUSVRVVEUKLUI4RDA2RiAgICAgKGJhc2UgMTYpCQlHVUFOR1pIT1UgSEtVU1QgRk9LIFlJTkcgVFVORyBSRVNFQVJDSCBJTlNUSVRVVEUKLQkJCQlSbSA0MDMsIE5vcnRoIG9mIFNvZnR3YXJlIEJ1aWxkaW5nLE5hbnNoYSBJVCBQYXJrLAotCQkJCU5hbnNoYSBEaXN0cmljdAotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgUHJpdmluY2UgNTExNDU4Ci0JCQkJQ0hJTkEKLQotQjgtRDQtOUQgICAoaGV4KQkJTSBTZXZlbiBTeXN0ZW0gTHRkLgotQjhENDlEICAgICAoYmFzZSAxNikJCU0gU2V2ZW4gU3lzdGVtIEx0ZC4KLQkJCQkyNEYsIFRydXN0IFRvd2VyIEJsZGcsIDI3NS03LCBZYW5namFlMi1Eb25nLCBTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTczOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1COC1FNS04OSAgIChoZXgpCQlQYXl0ZXIgQlYKLUI4RTU4OSAgICAgKGJhc2UgMTYpCQlQYXl0ZXIgQlYKLQkJCQlCZXVrZWxzZGlqayAxMDcKLQkJCQlSb3R0ZXJkYW0gWnVpZC1Ib2xsYW5kIDMwMjEgQUUKLQkJCQlORVRIRVJMQU5EUwotCi1COC1FNy03OSAgIChoZXgpCQlQUklWQVRFCi1COEU3NzkgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLUI4LUVFLTc5ICAgKGhleCkJCVlXaXJlIFRlY2hub2xvZ2llcywgSW5jLgotQjhFRTc5ICAgICAoYmFzZSAxNikJCVlXaXJlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEzNzIgT3ZlcmRhbGUKLQkJCQlNb250cmVhbCBRQyBIM0cgMVYzCi0JCQkJQ0FOQURBCi0KLUI4LUY0LUQwICAgKGhleCkJCUhlcnJtYW5uIFVsdHJhc2NoYWxsdGVjaG5payBHbWJIICYgQ28uIEtnCi1COEY0RDAgICAgIChiYXNlIDE2KQkJSGVycm1hbm4gVWx0cmFzY2hhbGx0ZWNobmlrIEdtYkggJiBDby4gS2cKLQkJCQlEZXNjb3N0ci4gMy05Ci0JCQkJS2FybHNiYWQgQmFkZW4tV3VlcnR0ZW1iZXJnIDc2MzA3Ci0JCQkJR0VSTUFOWQotCi1COC1GNy0zMiAgIChoZXgpCQlBcnlha2EgTmV0d29ya3MgSW5jCi1COEY3MzIgICAgIChiYXNlIDE2KQkJQXJ5YWthIE5ldHdvcmtzIEluYwotCQkJCTY5MSBTLiBNaWxwaXRhcyBCbHZkLiwgCi0JCQkJU3VpdGUgMjA2Ci0JCQkJTWlscGl0YXMgIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1COC1GOS0zNCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotQjhGOTM0ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLUI4LUZGLTYxICAgKGhleCkJCUFwcGxlCi1COEZGNjEgICAgIChiYXNlIDE2KQkJQXBwbGUKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LUZGLTZGICAgKGhleCkJCVNoYW5naGFpIFR5cHJvdGVjaCBUZWNobm9sb2d5IENvLkx0ZAotQjhGRjZGICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFR5cHJvdGVjaCBUZWNobm9sb2d5IENvLkx0ZAotCQkJCURlc2lnbiBCdWlsZGluZyA5MDMsIE5PLjYzLCAKLQkJCQlDaGlGZW5nIFJvYWQsWWFuZ1B1IERpc3RyaWN0LAotCQkJCVNoYW5naGFpICAyMDAwOTIKLQkJCQlDSElOQQotCi1COC1GRi1GRSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotQjhGRkZFICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotQkMtMDUtNDMgICAoaGV4KQkJQVZNIEdtYkgKLUJDMDU0MyAgICAgKGJhc2UgMTYpCQlBVk0gR21iSAotCQkJCUFsdC1Nb2FiaXQgOTUKLQkJCQlCZXJsaW4gIDEwNTU5Ci0JCQkJR0VSTUFOWQotCi1CQy0wRC1BNSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotQkMwREE1ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CQy0wRi0yQiAgIChoZXgpCQlGT1JUVU5FIFRFQ0hHUk9VUCBDTy4sTFRECi1CQzBGMkIgICAgIChiYXNlIDE2KQkJRk9SVFVORSBURUNIR1JPVVAgQ08uLExURAotCQkJCTctOEYsTm8uMTE5OCBOb3J0aCBRaW56aG91IFJvYWQsCi0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLUJDLTE1LUE2ICAgKGhleCkJCVRhaXdhbiBKYW50ZWsgRWxlY3Ryb25pY3MsTHRkLgotQkMxNUE2ICAgICAoYmFzZSAxNikJCVRhaXdhbiBKYW50ZWsgRWxlY3Ryb25pY3MsTHRkLgotCQkJCTZGLTEsTm8uMSBXdS1DaHVhbiAxU3QuIFJkLFd1LUt1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlTaW5jaHdhbmcgQ2l0eSBUYWlwZWkgSHNpZW4gMjQ4OTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUJDLTIwLUJBICAgKGhleCkJCUluc3B1ciAoU2hhbmRvbmcpIEVsZWN0cm9uaWMgSW5mb3JtYXRpb24gQ28uLCBMdGQKLUJDMjBCQSAgICAgKGJhc2UgMTYpCQlJbnNwdXIgKFNoYW5kb25nKSBFbGVjdHJvbmljIEluZm9ybWF0aW9uIENvLiwgTHRkCi0JCQkJTm8uMTAzNiBTaHVueWEgUmQuCi0JCQkJSmluYW4gU2hhbmRvbmcgMjUwMTAxCi0JCQkJQ0hJTkEKLQotQkMtMjgtNDYgICAoaGV4KQkJTmV4dEJJVCBDb21wdXRpbmcgUHZ0LiBMdGQuCi1CQzI4NDYgICAgIChiYXNlIDE2KQkJTmV4dEJJVCBDb21wdXRpbmcgUHZ0LiBMdGQuCi0JCQkJMzAvMiwgMm5kIEZsb29yLCBSLksuIFBsYXphLAotCQkJCUNNSCBSb2FkLCBJbmRpcmFuYWdhcgotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwMDM4Ci0JCQkJSU5ESUEKLQotQkMtMzAtNUIgICAoaGV4KQkJRGVsbCBJbmMuCi1CQzMwNUIgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMuCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CQy0zNS1FNSAgIChoZXgpCQlIeWRybyBTeXN0ZW1zIENvbXBhbnkKLUJDMzVFNSAgICAgKGJhc2UgMTYpCQlIeWRybyBTeXN0ZW1zIENvbXBhbnkKLQkJCQkzNzk4IFJvdW5kIEJvdHRvbSBSb2FkCi0JCQkJQ2luY2lubmF0aSBPaGlvIDQ1MjQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CQy0zOC1EMiAgIChoZXgpCQlQYW5kYWNoaXAgTGltaXRlZAotQkMzOEQyICAgICAoYmFzZSAxNikJCVBhbmRhY2hpcCBMaW1pdGVkCi0JCQkJVW5pdCAyMTAsIDIvRiAoTGFrZXNpZGUgMSksIEJ1aWxkaW5nIDE1LCBOby4gOCBTY2llbmNlIFBhcmsgV2VzdCBBdmVudWUKLQkJCQlIb25nIEtvbmcgU2NpZW5jZSBQYXJrIFBoYXNlIElJLCAKLQkJCQlTaGF0aW4sIE4uVC4gIAotCQkJCUhPTkcgS09ORwotCi1CQy0zRS0xMyAgIChoZXgpCQlBY2NvcmRhbmNlIFN5c3RlbXMgSW5jLgotQkMzRTEzICAgICAoYmFzZSAxNikJCUFjY29yZGFuY2UgU3lzdGVtcyBJbmMuCi0JCQkJMkYsIE5vLiAzMSwgU2VjLiA2LCBIc2luIFlpIFJvYWQKLQkJCQlUYWlwZWkgIDExMDg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1CQy00My03NyAgIChoZXgpCQlIYW5nIFpob3UgSHVpdGUgVGVjaG5vbG9neSBDby4sbHRkLgotQkM0Mzc3ICAgICAoYmFzZSAxNikJCUhhbmcgWmhvdSBIdWl0ZSBUZWNobm9sb2d5IENvLixsdGQuCi0JCQkJUm0xMzM4LEJsb2NrIEFpP29laT9vZUZ1TGkgVGVjaG5vbG9neSBCdWlsZGluZyAsTm8uMzI4LFdlbkVyIFJkCi0JCQkJSGFuZyBaaG91IFpoZSBKaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi1CQy00Ny02MCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLUJDNDc2MCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQkMtNEUtM0MgICAoaGV4KQkJQ09SRSBTVEFGRiBDTy4sIExURC4KLUJDNEUzQyAgICAgKGJhc2UgMTYpCQlDT1JFIFNUQUZGIENPLiwgTFRELgotCQkJCVNoaW4tb3Nha2EgT3JpZW50YWwgQmxkZy4gMTRGLCA3LTEtMjYgTmlzaGluYWthamltYQotCQkJCVlvZG9nYXdhLWt1IE9zYWthIDUzMi0wMDExCi0JCQkJSkFQQU4KLQotQkMtNUYtRjQgICAoaGV4KQkJQVNSb2NrIEluY29ycG9yYXRpb24KLUJDNUZGNCAgICAgKGJhc2UgMTYpCQlBU1JvY2sgSW5jb3Jwb3JhdGlvbgotCQkJCTJGLixOby4zNywgU2VjLjIsIEpob25neWFuZyBTLlJkLiwgQmVpdG91IERpc3RyaWMsIAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1CQy02Ny04NCAgIChoZXgpCQlFbnZpcm9uaWNzIE95Ci1CQzY3ODQgICAgIChiYXNlIDE2KQkJRW52aXJvbmljcyBPeQotCQkJCUdyYWFuaW50aWUgNQotCQkJCU1pa2tlbGkgIDUwMTkwCi0JCQkJRklOTEFORAotCi1CQy02QS0xNiAgIChoZXgpCQl0ZHZpbmUKLUJDNkExNiAgICAgKGJhc2UgMTYpCQl0ZHZpbmUKLQkJCQkzMDEgTWFpc29uIE1hcnUgQnVpbGRpbmcgCi0JCQkJODYtOSBOb25oZW9uLWRvbmcgR2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUJDLTZFLTc2ICAgKGhleCkJCUdyZWVuIEVuZXJneSBPcHRpb25zIEx0ZAotQkM2RTc2ICAgICAoYmFzZSAxNikJCUdyZWVuIEVuZXJneSBPcHRpb25zIEx0ZAotCQkJCTMgU3QuIE1hcnkmIzM5O3MgQ291cnQsIE1haW4gU3RyZWV0Ci0JCQkJSGFyZHdpY2sKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0IyMyA3UVMKLQkJCQlVTklURUQgS0lOR0RPTQotCi1CQy03MS1DMSAgIChoZXgpCQlYVHJpbGxpb24sIEluYy4KLUJDNzFDMSAgICAgKGJhc2UgMTYpCQlYVHJpbGxpb24sIEluYy4KLQkJCQkxLTEyLTMtNEYgCi0JCQkJS2FuZGEgU3VkYS1jaG8KLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMS0wMDQxCi0JCQkJSkFQQU4KLQotQkMtNzYtNzAgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotQkM3NjcwICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTAxMDgKLQkJCQlDSElOQQotCi1CQy03Ny0zNyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLUJDNzczNyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLUJDLTdELUQxICAgKGhleCkJCVJhZGlvIERhdGEgQ29tbXMKLUJDN0REMSAgICAgKGJhc2UgMTYpCQlSYWRpbyBEYXRhIENvbW1zCi0JCQkJNS8yMC0zMCBTdHViYnMgU3RyZWV0Ci0JCQkJU2lsdmVyd2F0ZXIgIE5ldyBTb3V0aCBXYWxlcyAoTlNXKSAyMTI4Ci0JCQkJQVVTVFJBTElBCi0KLUJDLTgxLTk5ICAgKGhleCkJCUJBU0lDIENvLixMdGQuCi1CQzgxOTkgICAgIChiYXNlIDE2KQkJQkFTSUMgQ28uLEx0ZC4KLQkJCQlLZWllZnUtQnVpbGRpbmcgOUYKLQkJCQk0LTEzLTggU2hpYmEKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA4LTAwMTQKLQkJCQlKQVBBTgotCi1CQy04My1BNyAgIChoZXgpCQlTSEVOWkhFTiBDSFVBTkdXRUktUkdCIEVMRUNUUk9OSUNTIENPLixMVAotQkM4M0E3ICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIENIVUFOR1dFSS1SR0IgRUxFQ1RST05JQ1MgQ08uLExUCi0JCQkJVW5pdCBBIDEzLTE2L0YsU2t5d29ydGggQmxkZy4sIEdhb3hpbiBBdmUuMS5TLixOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3VhbmdEb25nICA1MTgwNTcKLQkJCQlDSElOQQotCi1CQy05OS1CQyAgIChoZXgpCQlGb25TZWUgVGVjaG5vbG9neSBJbmMuCi1CQzk5QkMgICAgIChiYXNlIDE2KQkJRm9uU2VlIFRlY2hub2xvZ3kgSW5jLgotCQkJCTE0Ri0yLCBOby4zMiwgR2FvdGllIDJuZCBSZC4sCi0JCQkJWmh1YmVpIENpdHkgSHNpbmNodSBDb3VudHkgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1CQy05RC1BNSAgIChoZXgpCQlEQVNDT00gRXVyb3BlIEdtYkgKLUJDOURBNSAgICAgKGJhc2UgMTYpCQlEQVNDT00gRXVyb3BlIEdtYkgKLQkJCQlIZXV3ZWcgMwotCQkJCVVsbSBCYWRlbi1XdWVydHRlbWJlcmcgODkwNzkKLQkJCQlHRVJNQU5ZCi0KLUJDLUE5LUQ2ICAgKGhleCkJCUN5YmVyLVJhaW4sIEluYy4KLUJDQTlENiAgICAgKGJhc2UgMTYpCQlDeWJlci1SYWluLCBJbmMuCi0JCQkJNTI3MiBFdmFud29vZCBBdmVudWUKLQkJCQlPYWsgUGFyayBDYWxpZm9ybmlhIDkxMzc3LTQ4MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUJDLUFFLUM1ICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotQkNBRUM1ICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUJDLUIxLTgxICAgKGhleCkJCVNIQVJQIENPUlBPUkFUSU9OCi1CQ0IxODEgICAgIChiYXNlIDE2KQkJU0hBUlAgQ09SUE9SQVRJT04KLQkJCQkyMi0yMixOYWdhaWtlLWNobywKLQkJCQlBYmVuby1LVSwKLQkJCQlPc2FrYSwgIDU0NS04NTIyCi0JCQkJSkFQQU4KLQotQkMtQkItQzkgICAoaGV4KQkJS2VsbGVuZG9uayBFbGVrdHJvbmlrIEdtYkgKLUJDQkJDOSAgICAgKGJhc2UgMTYpCQlLZWxsZW5kb25rIEVsZWt0cm9uaWsgR21iSAotCQkJCVZvbi1IdWVuZWZlbGQtU3RyYXNzZSAzCi0JCQkJQ29sb2duZSBOUlcgNTA4MjkKLQkJCQlHRVJNQU5ZCi0KLUJDLUM2LTFBICAgKGhleCkJCVNQRUNUUkEgRU1CRURERUQgU1lTVEVNUwotQkNDNjFBICAgICAoYmFzZSAxNikJCVNQRUNUUkEgRU1CRURERUQgU1lTVEVNUwotCQkJCUtoYXNyYSBOby4gMjQsIFZpbGxhZ2UgR2h1bW1hbiwxc3QgRmxvb3IsIENoYXdsYSBNYW5zaW9uLAotCQkJCUIvaC4gU2FudCBWaWhhciwgVW5jaGEgUGFyd2Fub28sU2VjdG9yLTEKLQkJCQlQQVJXQU5PTyBISU1BQ0hBTCBQUkFERVNIIDE3MzIyMAotCQkJCUlORElBCi0KLUJDLUNELTQ1ICAgKGhleCkJCVZPSVNNQVJUCi1CQ0NENDUgICAgIChiYXNlIDE2KQkJVk9JU01BUlQKLQkJCQlWSUEgQkVOSUdOTyBDUkVTUEkgMTIKLQkJCQlNSUxBTk8gIDIwMTU5Ci0JCQkJSVRBTFkKLQotQkMtRDUtQjYgICAoaGV4KQkJZDJkIHRlY2hub2xvZ2llcwotQkNENUI2ICAgICAoYmFzZSAxNikJCWQyZCB0ZWNobm9sb2dpZXMKLQkJCQkxMDYxMSByb3VuZHdvb2QgZ2xlbiBjdAotCQkJCUphY2tzb252aWxsZSBGbCAzMjI1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotQkMtRTAtOUQgICAoaGV4KQkJRW9zbGluawotQkNFMDlEICAgICAoYmFzZSAxNikJCUVvc2xpbmsKLQkJCQkjNjAyLCA5MDAtMQotCQkJCUd3YW55YW5nLURvbmcsIERvbmdhbi1HdQotCQkJCUFueWFuZy1DaXR5IEt5b25nZ2ktRG8gNDMxLTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CQy1GMi1BRiAgIChoZXgpCQlkZXZvbG8gQUcKLUJDRjJBRiAgICAgKGJhc2UgMTYpCQlkZXZvbG8gQUcKLQkJCQlDaGFybG90dGVuYnVyZ2VyIEFsbGVlIDYwCi0JCQkJQWFjaGVuICA1MjA2OAotCQkJCUdFUk1BTlkKLQotQkMtRkYtQUMgICAoaGV4KQkJVE9QQ09OIENPUlBPUkFUSU9OCi1CQ0ZGQUMgICAgIChiYXNlIDE2KQkJVE9QQ09OIENPUlBPUkFUSU9OCi0JCQkJNzUtMSwgSGFzdW51bWEtY2hvCi0JCQkJSXRhYmFzaGkta3UgVE9LWU8gMTc0LTg1ODAKLQkJCQlKQVBBTgotCi1DMC0wRC03RSAgIChoZXgpCQlBZGRpdGVjaCwgSW5jLgotQzAwRDdFICAgICAoYmFzZSAxNikJCUFkZGl0ZWNoLCBJbmMuCi0JCQkJMTA5MjUgS2luZ2h1cnN0Ci0JCQkJU3VpdGUgNTAwCi0JCQkJSG91c3RvbiBUWCA3NzA5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtMTItNDIgICAoaGV4KQkJQWxwaGEgU2VjdXJpdHkgUHJvZHVjdHMKLUMwMTI0MiAgICAgKGJhc2UgMTYpCQlBbHBoYSBTZWN1cml0eSBQcm9kdWN0cwotCQkJCTEwNzE1IFNpa2VzIFBsYWNlLCBTdGUuIDIwMAotCQkJCUNoYXJsb3R0ZSBOQyAyODI3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtMUUtOUIgICAoaGV4KQkJUGl4YXZpIEFTCi1DMDFFOUIgICAgIChiYXNlIDE2KQkJUGl4YXZpIEFTCi0JCQkJRHVzYXZpa3ZlaWVuIDM5Ci0JCQkJU3RhdmFuZ2VyICA0MDAzCi0JCQkJTk9SV0FZCi0KLUMwLTIyLTUwICAgKGhleCkJCVBSSVZBVEUKLUMwMjI1MCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotQzAtMjUtMDYgICAoaGV4KQkJQVZNIEdtYkgKLUMwMjUwNiAgICAgKGJhc2UgMTYpCQlBVk0gR21iSAotCQkJCUFsdC1Nb2FiaXQgOTUKLQkJCQlCZXJsaW4gIDEwNTU5Ci0JCQkJR0VSTUFOWQotCi1DMC0yNy1COSAgIChoZXgpCQlCZWlqaW5nIE5hdGlvbmFsIFJhaWx3YXkgUmVzZWFyY2ggJiBEZXNpZ24gSW5zdGl0dXRlICBvZiBTaWduYWwgJiBDb21tdW5pY2F0aW9uCi1DMDI3QjkgICAgIChiYXNlIDE2KQkJQmVpamluZyBOYXRpb25hbCBSYWlsd2F5IFJlc2VhcmNoICYgRGVzaWduIEluc3RpdHV0ZSAgb2YgU2lnbmFsICYgQ29tbXVuaWNhdGlvbgotCQkJCU5vLjE4IEJ1aWxkaW5nLCBIdWF5dWFuIFlpTGksRmVuZ3RhaSBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwNzMKLQkJCQlDSElOQQotCi1DMC0yQi1GQyAgIChoZXgpCQlpTkVTLiBhcHBsaWVkIGluZm9ybWF0aWNzIEdtYkgKLUMwMkJGQyAgICAgKGJhc2UgMTYpCQlpTkVTLiBhcHBsaWVkIGluZm9ybWF0aWNzIEdtYkgKLQkJCQlPaG1zdHJhc3NlIDkKLQkJCQlMdWR3aWdzYnVyZyAgNzE2NDIKLQkJCQlHRVJNQU5ZCi0KLUMwLTM4LUY5ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi1DMDM4RjkgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLUMwLTNCLThGICAgKGhleCkJCU1pbmljb20gRGlnaXRhbCBTaWduYWdlCi1DMDNCOEYgICAgIChiYXNlIDE2KQkJTWluaWNvbSBEaWdpdGFsIFNpZ25hZ2UKLQkJCQkyNCBIZWJyb24gUm9hZAotCQkJCUplcnVzYWxlbSAgOTM1NDIKLQkJCQlJU1JBRUwKLQotQzAtM0YtMEUgICAoaGV4KQkJTkVUR0VBUgotQzAzRjBFICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBTElGT1JOSUEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLTYyLTZCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUMwNjI2QiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLTZDLTBGICAgKGhleCkJCURvYmJzIFN0YW5mb3JkCi1DMDZDMEYgICAgIChiYXNlIDE2KQkJRG9iYnMgU3RhbmZvcmQKLQkJCQkyNzE1IEVsZWN0cm9uaWMgTGFuZQotCQkJCURhbGxhcyBUZXhhcyA3NTIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtN0UtNDAgICAoaGV4KQkJU0hFTlpIRU4gWERLIENPTU1VTklDQVRJT04gRVFVSVBNRU5UIENPLixMVEQKLUMwN0U0MCAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBYREsgQ09NTVVOSUNBVElPTiBFUVVJUE1FTlQgQ08uLExURAotCQkJCVhESyBCVUlMRElORyxOTy4xIElORFVTVFJJQUwgQVJFQSxCQU5USUFOLExPTkdHQU5HIERJU1RSSUNUCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODEyOQotCQkJCUNISU5BCi0KLUMwLTgzLTBBICAgKGhleCkJCTJXaXJlCi1DMDgzMEEgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGt3eQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC04Qi02RiAgIChoZXgpCQlTIEkgU2lzdGVtYXMgSW50ZWxpZ2VudGVzIEVsZXRyb25pY29zIEx0ZGEKLUMwOEI2RiAgICAgKGJhc2UgMTYpCQlTIEkgU2lzdGVtYXMgSW50ZWxpZ2VudGVzIEVsZXRyb25pY29zIEx0ZGEKLQkJCQlSdWEgQW1hZGV1IFBpb3R0byAxNjEKLQkJCQlDdXJpdGliYSBQYXJhbmk/b2UgODEyODAwMjAKLQkJCQlCUkFaSUwKLQotQzAtOTEtMzQgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotQzA5MTM0ICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkLgotCQkJCVJvc2V2aWxsZSBDYWxpZm9ybmlhIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC05Qy05MiAgIChoZXgpCQlDT0JZCi1DMDlDOTIgICAgIChiYXNlIDE2KQkJQ09CWQotCQkJCUNPQlkgRWxlY3Ryb25pY3MgU2hlblpoZW4gUiZEIENlbnRlciAKLQkJCQlCbG9jayAzLFRhb1hpYSAybmQgSW5kdXN0cmlhbCBab25lLExvbmdIdWEgVG93bixCYW9BbiBEaXN0cmljdCwKLQkJCQlTSEVOWkhFTiBHVUFOR0RPTkcgNTE4MTA5Ci0JCQkJQ0hJTkEKLQotQzAtQTItNkQgICAoaGV4KQkJQWJib3R0IFBvaW50IG9mIENhcmUKLUMwQTI2RCAgICAgKGJhc2UgMTYpCQlBYmJvdHQgUG9pbnQgb2YgQ2FyZQotCQkJCTQwMCBDb2xsZWdlIFJvYWQgRWFzdAotCQkJCVByaW5jZXRvbiBOSiAwODU0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtQkEtRTYgICAoaGV4KQkJQXBwbGljYXRpb24gU29sdXRpb25zIChTYWZldHkgYW5kIFNlY3VyaXR5KSBMdGQKLUMwQkFFNiAgICAgKGJhc2UgMTYpCQlBcHBsaWNhdGlvbiBTb2x1dGlvbnMgKFNhZmV0eSBhbmQgU2VjdXJpdHkpIEx0ZAotCQkJCVVuaXQgMTcKLQkJCQlDbGlmZmUgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlMZXdlcyBFYXN0IFN1c3NleCBCTjggNkpMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQzAtQzEtQzAgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi1DMEMxQzAgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC1DNS0yMCAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLUMwQzUyMCAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUuCi0JCQkJU3VpdGUgMTAxCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC1DQi0zOCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotQzBDQjM4ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMyAKLQkJCQlDSElOQQotCi1DMC1DRi1BMyAgIChoZXgpCQlDcmVhdGl2ZSBFbGVjdHJvbmljcyAmYW1wOyBTb2Z0d2FyZSwgSW5jLgotQzBDRkEzICAgICAoYmFzZSAxNikJCUNyZWF0aXZlIEVsZWN0cm9uaWNzICZhbXA7IFNvZnR3YXJlLCBJbmMuCi0JCQkJNjUwIFN1bmRvd24gUm9hZAotCQkJCVNvdXRoIEVsZ2luIElMIDYwMTc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC1EMC00NCAgIChoZXgpCQlTQUdFTUNPTQotQzBEMDQ0ICAgICAoYmFzZSAxNikJCVNBR0VNQ09NCi0JCQkJMjUwLCBSb3V0ZSBkZSBsJ0VtcGVyZXVyCi0JCQkJUlVFSUwtTUFMTUFJU09OICA5MjUwMAotCQkJCUZSQU5DRQotCi1DMC1FNC0yMiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotQzBFNDIyICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUzg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLUVBLUU0ICAgKGhleCkJCVNvbmljd2FsbAotQzBFQUU0ICAgICAoYmFzZSAxNikJCVNvbmljd2FsbAotCQkJCTIwMDEgTG9naWMgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEyNC0zNDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC1GOC1EQSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi1DMEY4REEgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLUM0LTBGLTA5ICAgKGhleCkJCUhlcm1lcyBlbGVjdHJvbmljIEdtYkgKLUM0MEYwOSAgICAgKGJhc2UgMTYpCQlIZXJtZXMgZWxlY3Ryb25pYyBHbWJICi0JCQkJQW0gSGFuZHdlcmtlcnBhcmsgMQotCQkJCUVzc2VuIE5SVyA0NTMwOQotCQkJCUdFUk1BTlkKLQotQzQtMTAtOEEgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi1DNDEwOEEgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlCi0JCQkJU3VpdGUgMTAxCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC0xNi1GQSAgIChoZXgpCQlQcnlzbSBJbmMKLUM0MTZGQSAgICAgKGJhc2UgMTYpCQlQcnlzbSBJbmMKLQkJCQkxODAgQmF5dGVjaCBEcml2ZQotCQkJCVN1aXRlIDExMAotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTE3LUZFICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLUM0MTdGRSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMyAKLQkJCQlDSElOQQotCi1DNC0xOS04QiAgIChoZXgpCQlEb21pbmlvbiBWb3RpbmcgU3lzdGVtcyBDb3Jwb3JhdGlvbgotQzQxOThCICAgICAoYmFzZSAxNikJCURvbWluaW9uIFZvdGluZyBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJMjE1IFNwYWRpbmEgQXZlbnVlCi0JCQkJU3VpdGUgMjAwCi0JCQkJVG9yb250byBPbnRhcmlvIE01VCAyQzcKLQkJCQlDQU5BREEKLQotQzQtMUUtQ0UgICAoaGV4KQkJSE1JIFNvdXJjZXMgTHRkLgotQzQxRUNFICAgICAoYmFzZSAxNikJCUhNSSBTb3VyY2VzIEx0ZC4KLQkJCQk1IEZsb29yLCBTdWl0ZSAyLCAyMzMgSHNpbiBZaSBSb2FkLCBTZWN0aW9uIDQKLQkJCQlUYWlwZWkgIDEwNjgxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DNC0yNC0yRSAgIChoZXgpCQlHYWx2YW5pYyBBcHBsaWVkIFNjaWVuY2VzIEluYwotQzQyNDJFICAgICAoYmFzZSAxNikJCUdhbHZhbmljIEFwcGxpZWQgU2NpZW5jZXMgSW5jCi0JCQkJNzAwMCBGaXNoZXIgUm9hZCBTRQotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMkggMFczCi0JCQkJQ0FOQURBCi0KLUM0LTJDLTAzICAgKGhleCkJCUFwcGxlCi1DNDJDMDMgICAgIChiYXNlIDE2KQkJQXBwbGUKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ2FsaWZvcm5pYSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtMzYtREEgICAoaGV4KQkJUnVzdGVsZXRlY2ggTHRkLgotQzQzNkRBICAgICAoYmFzZSAxNikJCVJ1c3RlbGV0ZWNoIEx0ZC4KLQkJCQlPcmR6aG9uaWtpZHplIFN0ci4gMTEsIEJsZGcuIDQwLCBPZmYuIDE1IAotCQkJCU1vc2NvdyAgMTE1NDE5Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLUM0LTNELUM3ICAgKGhleCkJCU5FVEdFQVIKLUM0M0RDNyAgICAgKGJhc2UgMTYpCQlORVRHRUFSCi0JCQkJMzUwIEVBU1QgUExVTUVSSUEgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQUxJRk9STklBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC00Ni0xOSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotQzQ0NjE5ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMyAKLQkJCQlDSElOQQotCi1DNC00QS1EMCAgIChoZXgpCQlGSVJFRkxJRVMgUlRMUwotQzQ0QUQwICAgICAoYmFzZSAxNikJCUZJUkVGTElFUyBSVExTCi0JCQkJMzEgUlVFIEdVU1RBVkUgRUlGRkVMCi0JCQkJYy9vIFBFVEFMRQotCQkJCUdSRU5PQkxFICAzODAwMAotCQkJCUZSQU5DRQotCi1DNC00Qi00NCAgIChoZXgpCQlPbW5pcHJpbnQgSW5jLgotQzQ0QjQ0ICAgICAoYmFzZSAxNikJCU9tbmlwcmludCBJbmMuCi0JCQkJMTkyMyBFYXN0IERlZXJlIEF2ZS4KLQkJCQlTYW50YSBBbmEgQ0EgOTI3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTU1LUE2ICAgKGhleCkJCUNhZGFjIEhvbGRpbmdzIEx0ZAotQzQ1NUE2ICAgICAoYmFzZSAxNikJCUNhZGFjIEhvbGRpbmdzIEx0ZAotCQkJCTEgTmV3IFN0cmVldAotCQkJCUx1dG9uIEJlZGZvcmRzaGlyZSBMVTEgNURYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQzQtNTYtMDAgICAoaGV4KQkJR2FsbGVvbiBFbWJlZGRlZCBDb21wdXRpbmcKLUM0NTYwMCAgICAgKGJhc2UgMTYpCQlHYWxsZW9uIEVtYmVkZGVkIENvbXB1dGluZwotCQkJCU9zdGVuc2pvZXZlaWVuIDQ0Ci0JCQkJT3NsbyAgTi0wNjY3Ci0JCQkJTk9SV0FZCi0KLUM0LTU5LTc2ICAgKGhleCkJCUZ1Z29vCi1DNDU5NzYgICAgIChiYXNlIDE2KQkJRnVnb28KLQkJCQkxMDI0IDE0dGggQXZlIFNFCi0JCQkJTGUgTWFycyBJQSA1MTAzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtNjMtNTQgICAoaGV4KQkJVS1SYWt1LCBJbmMuCi1DNDYzNTQgICAgIChiYXNlIDE2KQkJVS1SYWt1LCBJbmMuCi0JCQkJNDAxLTEgRGViYQotCQkJCVJpdHRvLXNoaSBTaGlnYSA1MjAtMzA0MQotCQkJCUpBUEFOCi0KLUM0LTcxLUZFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUM0NzFGRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTdCLTJGICAgKGhleCkJCUJlaWppbmcgSm9pbkhvcGUgSW1hZ2UgVGVjaG5vbG9neSBMdGQuCi1DNDdCMkYgICAgIChiYXNlIDE2KQkJQmVpamluZyBKb2luSG9wZSBJbWFnZSBUZWNobm9sb2d5IEx0ZC4KLQkJCQk2MjQgUm9vbSAuQXV0b21hdGlvbiBCdWlsZGluZy45NSMgWmhvbmcgR3VhbmN1biBFYXN0IFJvYWQuSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDE5MAotCQkJCUNISU5BCi0KLUM0LTdELTRGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUM0N0Q0RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTgyLTNGICAgKGhleCkJCUZ1amlhbiBOZXdsYW5kIEF1dG8tSUQgVGVjaC4gQ28sLkx0ZC4KLUM0ODIzRiAgICAgKGJhc2UgMTYpCQlGdWppYW4gTmV3bGFuZCBBdXRvLUlEIFRlY2guIENvLC5MdGQuCi0JCQkJTmV3bGFuZCBTY2llbmNlICYgVGVjaG5vbG9neSBQYXJrLCBOby4xIFJ1amlhbmcgV2VzdCBSZC4sIE1hd2VpCi0JCQkJRnV6aG91IEZ1amlhbiAzNTAwMTUKLQkJCQlDSElOQQotCi1DNC04NS0wOCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotQzQ4NTA4ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAgCi0JCQkJTUFMQVlTSUEKLQotQzQtOTMtMTMgICAoaGV4KQkJMTAwZmlvIG5ldHdvcmtzIHRlY2hub2xvZ3kgbGxjCi1DNDkzMTMgICAgIChiYXNlIDE2KQkJMTAwZmlvIG5ldHdvcmtzIHRlY2hub2xvZ3kgbGxjCi0JCQkJMjUzNCBjcmVzY2VudCBzdC4gYXB0IDNGCi0JCQkJQXN0b3JpYSBOZXcgeW9yayAxMTEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtQUEtQTEgICAoaGV4KQkJU1VNTUlUIERFVkVMT1BNRU5ULCBzcG9sLnMgci5vLgotQzRBQUExICAgICAoYmFzZSAxNikJCVNVTU1JVCBERVZFTE9QTUVOVCwgc3BvbC5zIHIuby4KLQkJCQlLIFZvZG90ZWNpIDE5NwotCQkJCU9yZWNoIFByYWhhLXphcGFkIDI1MiAyNQotCQkJCUNaRUNIIFJFUFVCTElDCi0KLUM0LUI1LTEyICAgKGhleCkJCUdlbmVyYWwgRWxlY3RyaWMgRGlnaXRhbCBFbmVyZ3kKLUM0QjUxMiAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIEVsZWN0cmljIERpZ2l0YWwgRW5lcmd5Ci0JCQkJNDIwMCBXaWxkd29vZCBQa3d5Ci0JCQkJQXRsYW50YSBHQSAzMDMzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtQ0QtNDUgICAoaGV4KQkJQmVpamluZyBCb29tc2Vuc2UgVGVjaG5vbG9neSBDTy4sTFRELgotQzRDRDQ1ICAgICAoYmFzZSAxNikJCUJlaWppbmcgQm9vbXNlbnNlIFRlY2hub2xvZ3kgQ08uLExURC4KLQkJCQk4MDMgQnVpbGRpbmcgNCBJTlRFUldFU1QgQnVzaW5lc3MgQ2VudGVyLE5vLjkgU291dGggU2hvdXRpIFJvYWQgLEhhaWRpYW5EaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwNDgKLQkJCQlDSElOQQotCi1DNC1ENC04OSAgIChoZXgpCQlKaWFuZ1N1IEpveXF1ZSBJbmZvcm1hdGlvbiBJbmR1c3RyeSBDby4sTHRkCi1DNEQ0ODkgICAgIChiYXNlIDE2KQkJSmlhbmdTdSBKb3lxdWUgSW5mb3JtYXRpb24gSW5kdXN0cnkgQ28uLEx0ZAotCQkJCTEwICBGbG9vciBZYUh1YSBCdWlsZGluZywgWGknYW5CZWkgUm9hZCwgCi0JCQkJWHV6aG91IEppYW5nU3UgMjIxMDA2Ci0JCQkJQ0hJTkEKLQotQzQtRTEtN0MgICAoaGV4KQkJVTJTIGNvLgotQzRFMTdDICAgICAoYmFzZSAxNikJCVUyUyBjby4KLQkJCQkxMDQtNzA2LCBTSyBWZW50aXVtIEJ1aWxkaW5nLCA1MjIsIERhbmdqZW9uZy1Eb25nCi0JCQkJR3VucG8tc2kgR2VvbmdnaS1kbyA0MzUtNzc2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUM0LUVFLUY1ICAgKGhleCkJCU9jbGFybywgSW5jLgotQzRFRUY1ICAgICAoYmFzZSAxNikJCU9jbGFybywgSW5jLgotCQkJCTM0MyBEYW5pZWwgWmVua2VyIERyLiwgU3VpdGUgMTAyCi0JCQkJSG9yc2VoZWFkcyBOWSAxNDg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtRjQtNjQgICAoaGV4KQkJU3BpY2EgaW50ZXJuYXRpb25hbAotQzRGNDY0ICAgICAoYmFzZSAxNikJCVNwaWNhIGludGVybmF0aW9uYWwKLQkJCQlQb3QgayBzZWptaXNjdSAzMwotCQkJCUxqdWJsamFuYSAgMTAwMAotCQkJCVNMT1ZFTklBCi0KLUM0LUZDLUU0ICAgKGhleCkJCURpc2hUViBOWiBMdGQKLUM0RkNFNCAgICAgKGJhc2UgMTYpCQlEaXNoVFYgTlogTHRkCi0JCQkJMTAgUGVubmV5IEF2ZQotCQkJCU10IFJvc2tpbGwKLQkJCQlBdWNrbGFuZCAgMTA0MQotCQkJCU5FVyBaRUFMQU5ECi0KLUM4LTAyLUE2ICAgKGhleCkJCUJlaWppbmcgTmV3bWluZSBUZWNobm9sb2d5Ci1DODAyQTYgICAgIChiYXNlIDE2KQkJQmVpamluZyBOZXdtaW5lIFRlY2hub2xvZ3kKLQkJCQkxMCBmbG9vcixLZXNoaSBQbGF6YQotCQkJCUhhaURpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi1DOC0wQS1BOSAgIChoZXgpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotQzgwQUE5ICAgICAoYmFzZSAxNikJCVF1YW50YSBDb21wdXRlciBJbmMuCi0JCQkJMjExLCBXZW4gSHdhIDJuZCBSZC4sCi0JCQkJVGFvIFl1YW4gS3VlaSBTaGFuIDMzMzc3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DOC0xRS04RSAgIChoZXgpCQlBRFYgU2VjdXJpdHkgKFMpIFB0ZSBMdGQKLUM4MUU4RSAgICAgKGJhc2UgMTYpCQlBRFYgU2VjdXJpdHkgKFMpIFB0ZSBMdGQKLQkJCQk1NiBEdW5sb3AgU3RyZWV0Ci0JCQkJMjA5Mzg2Ci0JCQkJU0lOR0FQT1JFCi0KLUM4LTIwLThFICAgKGhleCkJCVN0b3JhZ2VkYXRhCi1DODIwOEUgICAgIChiYXNlIDE2KQkJU3RvcmFnZWRhdGEKLQkJCQlSYW5kc3RhZCAyMjExNwotCQkJCUFsbWVyZSBGbGV2b2xhbmQgMTMxNkJXCi0JCQkJTkVUSEVSTEFORFMKLQotQzgtMkEtMTQgICAoaGV4KQkJQXBwbGUgSW5jCi1DODJBMTQgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC0yRS05NCAgIChoZXgpCQlIYWxmYSBFbnRlcnByaXNlIENvLiwgTHRkLgotQzgyRTk0ICAgICAoYmFzZSAxNikJCUhhbGZhIEVudGVycHJpc2UgQ28uLCBMdGQuCi0JCQkJNUYsIE5vLjEwMiwgTWluZyBDaHVhbiBSb2FkCi0JCQkJSHNpbiBUaWVuIFRhaXBlaSBDb3VudHkgMjMxNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM4LTM1LUI4ICAgKGhleCkJCUVyaWNzc29uLCBFQUIvUldJL0sKLUM4MzVCOCAgICAgKGJhc2UgMTYpCQlFcmljc3NvbiwgRUFCL1JXSS9LCi0JCQkJU2tvbGdpP29lbmdlbiAxNwotCQkJCUdpP29ldmxlCi0JCQkJU0UtODAwIDA2Ci0JCQkJU1dFREVOCi0KLUM4LTNBLTM1ICAgKGhleCkJCVRlbmRhIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1DODNBMzUgICAgIChiYXNlIDE2KQkJVGVuZGEgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tIDYwMS02MDIsUi9EIEJ1aWxkaW5nIENvbXBsZXgsVHNpbmdodWEgSGlnaC1UZWNoIFBhcmssbmFuc2hhbiBkaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5kb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUM4LTNFLTk5ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1DODNFOTkgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM4LTNFLUE3ICAgKGhleCkJCUtVTkJVUyBHbWJICi1DODNFQTcgICAgIChiYXNlIDE2KQkJS1VOQlVTIEdtYkgKLQkJCQlIZWVyd2VnIDE1QQotCQkJCURlbmtlbmRvcmYgQlcgRC03Mzc3MAotCQkJCUdFUk1BTlkKLQotQzgtNDUtMjkgICAoaGV4KQkJSU1LIE5ldHdvcmtzIENvLixMdGQKLUM4NDUyOSAgICAgKGJhc2UgMTYpCQlJTUsgTmV0d29ya3MgQ28uLEx0ZAotCQkJCTIwMS1IbyBqdW5ncmlianVuamEsIDE2LTNidW5qaSwgCi0JCQkJR3V1aS1kb25nLCBHd2FuZ2ppbi1ndQotCQkJCVNlb3VsICAxNDMtODE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUM4LTQ4LUY1ICAgKGhleCkJCU1FRElTT04gWHJheSBDby4sIEx0ZAotQzg0OEY1ICAgICAoYmFzZSAxNikJCU1FRElTT04gWHJheSBDby4sIEx0ZAotCQkJCTNGIEJ1cmltIEIvRCA5OTkgRGFlY2hpLWRvbmcgCi0JCQkJR2FuZ25hbS1ndSAKLQkJCQlTZW91bCAgMTM1LTI4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DOC00Qy03NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1DODRDNzUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC02NC1DNyAgIChoZXgpCQl6dGUgY29ycG9yYXRpb24KLUM4NjRDNyAgICAgKGJhc2UgMTYpCQl6dGUgY29ycG9yYXRpb24KLQkJCQkxMi9GLix6dGUgUiZEIGJ1aWxkaW5nLGtlamluYW4gUm9hZCwKLQkJCQlzaGVuemhlbiBndWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQzgtNkMtMUUgICAoaGV4KQkJRGlzcGxheSBTeXN0ZW1zIEx0ZAotQzg2QzFFICAgICAoYmFzZSAxNikJCURpc3BsYXkgU3lzdGVtcyBMdGQKLQkJCQkxNi1QYXJrb3ZhamEgU3RyZWV0IDI2Ci0JCQkJTW9zY293ICAxMDU0ODQKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotQzgtNkMtODcgICAoaGV4KQkJTWl0cmFzdGFyIFRlY2hub2xvZ3kKLUM4NkM4NyAgICAgKGJhc2UgMTYpCQlNaXRyYXN0YXIgVGVjaG5vbG9neQotCQkJCU5vLjYgSW5ub3ZhdGlvbiBSb2FkIElJCi0JCQkJU2NpZW5jZSBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQzgtNkMtQjYgICAoaGV4KQkJT3B0Y29tIENvLiwgTHRkLgotQzg2Q0I2ICAgICAoYmFzZSAxNikJCU9wdGNvbSBDby4sIEx0ZC4KLQkJCQk3OTItMyBUb21pZ2Fva2EKLQkJCQlJd2F0YSBTaGl6dW9rYSA0MzgtMDgwMwotCQkJCUpBUEFOCi0KLUM4LTcyLTQ4ICAgKGhleCkJCUFwbGljb20gT3kKLUM4NzI0OCAgICAgKGJhc2UgMTYpCQlBcGxpY29tIE95Ci0JCQkJUmF1dGF0aWVua2F0dSA1NgotCQkJCUFhbmVrb3NraSBMYW5zaS1TdW9taSA0NDEwMQotCQkJCUZJTkxBTkQKLQotQzgtN0UtNzUgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi1DODdFNzUgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUM4LTg0LTM5ICAgKGhleCkJCVN1bnJpc2UgVGVjaG5vbG9naWVzCi1DODg0MzkgICAgIChiYXNlIDE2KQkJU3VucmlzZSBUZWNobm9sb2dpZXMKLQkJCQk1NCBDb21tZXJjaWFsIFN0cmVldAotCQkJCVJheW5oYW0gTUEgMDI3NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM4LTg0LTQ3ICAgKGhleCkJCUJlYXV0aWZ1bCBFbnRlcnByaXNlIENvLiwgTHRkCi1DODg0NDcgICAgIChiYXNlIDE2KQkJQmVhdXRpZnVsIEVudGVycHJpc2UgQ28uLCBMdGQKLQkJCQkyNnRoIEZsb29yLCBCZWF1dGlmdWwgR3JvdXAgVG93ZXIsIDc3IENvbm5hdWdodCBSb2FkIENlbnRyYWwKLQkJCQlIT05HIEtPTkcKLQotQzgtODctM0IgICAoaGV4KQkJTmV0IE9wdGljcwotQzg4NzNCICAgICAoYmFzZSAxNikJCU5ldCBPcHRpY3MKLQkJCQk1MzAzIEJldHN5IFJvc3MgRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzgtOEItNDcgICAoaGV4KQkJT3B0aWNvcyBzLnIubC4KLUM4OEI0NyAgICAgKGJhc2UgMTYpCQlPcHRpY29zIHMuci5sLgotCQkJCXZpYSBUZXJ6aSBkaSBTLkFnYXRhIDIKLQkJCQlCcmVtYmF0ZSBkaSBTb3ByYSBCZXJnYW1vIDI0MDMwCi0JCQkJSVRBTFkKLQotQzgtOTMtODMgICAoaGV4KQkJRW1iZWRkZWQgQXV0b21hdGlvbiwgSW5jLgotQzg5MzgzICAgICAoYmFzZSAxNikJCUVtYmVkZGVkIEF1dG9tYXRpb24sIEluYy4KLQkJCQkxNzM0NSBBYmJleSBEcml2ZQotCQkJCVN1cnJleSBCQyBWNE4gNE0zCi0JCQkJQ0FOQURBCi0KLUM4LTk3LTlGICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1DODk3OUYgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1NzAKLQkJCQlGSU5MQU5ECi0KLUM4LTlDLTFEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUM4OUMxRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM4LTlDLURDICAgKGhleCkJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotQzg5Q0RDICAgICAoYmFzZSAxNikJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotCQkJCU5PLiAyMzksIFNlYy4gMiwgVGkgRGluZyBCbHZkLgotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM4LUExLUI2ICAgKGhleCkJCVNoZW56aGVuIExvbmd3YXkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi1DOEExQjYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gTG9uZ3dheSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlTdWl0ZSA3MDcsSW5jdWJhdGlvbiBCdWlsZGluZywgQ2hpbmEgQWNhZGVteSBvZiBTY2llbmNlJlRlY2ggRGV2ZWxvcG1lbnQsIFNvdXRoIGFyZWEgCi0JCQkJSGktVGVjaCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQzgtQTctMEEgICAoaGV4KQkJVmVyaXpvbiBCdXNpbmVzcwotQzhBNzBBICAgICAoYmFzZSAxNikJCVZlcml6b24gQnVzaW5lc3MKLQkJCQlPbmUgRGlnZXggUGxhemEKLQkJCQlCZWx0c3ZpbGxlIE1EIDIwNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC1BNy0yOSAgIChoZXgpCQlTWVN0cm9uaWNzIENvLiwgTHRkLgotQzhBNzI5ICAgICAoYmFzZSAxNikJCVNZU3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzMwMS0xNDA0LCBCdWNodW4gVGVjaG5vLVBhcmsgSUkKLQkJCQkzNjUsIFNhbWplb25nLWRvbmcsIE9qZW9uZy1ndQotCQkJCUJ1Y2h1biBDaXR5IEt5dW5nIGdpLWRvIDQyMS03NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQzgtQUEtQ0MgICAoaGV4KQkJUFJJVkFURQotQzhBQUNDICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi1DOC1CQy1DOCAgIChoZXgpCQlBcHBsZQotQzhCQ0M4ICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC1DMS0yNiAgIChoZXgpCQlaUE0gSW5kdXN0cmlhIGUgQ29tZXJjaW8gTHRkYQotQzhDMTI2ICAgICAoYmFzZSAxNikJCVpQTSBJbmR1c3RyaWEgZSBDb21lcmNpbyBMdGRhCi0JCQkJUnVhIEFyYWd1YWlhLCAxNzUKLQkJCQlDYW5vYXMgUlMgOTI0MTAtMDAwCi0JCQkJQlJBWklMCi0KLUM4LUMxLTNDICAgKGhleCkJCVJ1Z2dlZFRlayBIYW5nemhvdSBDby4sIEx0ZAotQzhDMTNDICAgICAoYmFzZSAxNikJCVJ1Z2dlZFRlayBIYW5nemhvdSBDby4sIEx0ZAotCQkJCVpoZWppYW5nIFVuaXZlcnNpdHkgTmF0aW9uYWwgU2NpZW5jZSBQYXJrCi0JCQkJNTI1IFhpeGkgUm9hcmQsIEJ1aWxkaW5nIEMgUm9vbSA0MDEKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTMKLQkJCQlDSElOQQotCi1DOC1DRC03MiAgIChoZXgpCQlTQUdFTUNPTQotQzhDRDcyICAgICAoYmFzZSAxNikJCVNBR0VNQ09NCi0JCQkJMjUwIHJvdXRlIGRlIGwnRW1wZXJldXIKLQkJCQlSVUVJTCBNQUxNQUlTT04gIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLUM4LUQxLUQxICAgKGhleCkJCUFHQWlUIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLUM4RDFEMSAgICAgKGJhc2UgMTYpCQlBR0FpVCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNUYsTm8uMjctOCwgU2VjLiAyLCBaaG9uZ3poZW5nIEUuIFJkLiwgRGFuc2h1aSBUb3duc2hpcCAKLQkJCQlUYWlwZWkgQ291bnR5ICAgMjUxNzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM4LUQyLUMxICAgKGhleCkJCUpldGx1biAoU2hlbnpoZW4pIENvcnBvcmF0aW9uCi1DOEQyQzEgICAgIChiYXNlIDE2KQkJSmV0bHVuIChTaGVuemhlbikgQ29ycG9yYXRpb24KLQkJCQkxMDA4QSBTa3l3b3J0aCBCdWlsZGluZywgR2FvLXhpbiBSZCBTb3V0aAotCQkJCUhpZ2gtVGVjaCBQYXJrLCBOYW5TaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gIDUxODA1NwotCQkJCUNISU5BCi0KLUM4LUQ1LUZFICAgKGhleCkJCVNoZW56aGVuIFpvd2VlIFRlY2hub2xvZ3kgQ28uLCBMdGQKLUM4RDVGRSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBab3dlZSBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJQmxvY2sgNSwgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBJbmR1c3RyaWFsIFBhcmsgb2YKLQkJCQlQcml2YXRlbHkgT3duZWQgRW50ZXJwcmlzZXMsIFBpbmdzaGFuLCBYaWxpLCBOYW5zaGFuIERpc3RyaWN0ICwKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDU1Ci0JCQkJQ0hJTkEKLQotQzgtREYtN0MgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUM4REY3QyAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU5MAotCQkJCUZJTkxBTkQKLQotQzgtRUUtMDggICAoaGV4KQkJVEFOR1RPUCBURUNITk9MT0dZIENPLixMVEQKLUM4RUUwOCAgICAgKGJhc2UgMTYpCQlUQU5HVE9QIFRFQ0hOT0xPR1kgQ08uLExURAotCQkJCTFGLE5PLjE1MyxMaWdvbiBTdC4sQmVpdG91IERpc3RyaWN0Ci0JCQkJVGFpcGVpIENpdHkgICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM4LUVGLTJFICAgKGhleCkJCUJlaWppbmcgR2VmZWkgVGVjaC4gQ28uLCBMdGQgCi1DOEVGMkUgICAgIChiYXNlIDE2KQkJQmVpamluZyBHZWZlaSBUZWNoLiBDby4sIEx0ZCAKLQkJCQlBLTYwMyBQb3dlciBDcmVhdGl2ZSBQbGF6YSwgTk8uMSBTaGFuZ2RpIEUuIFJkLixIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLUM4LUZFLTMwICAgKGhleCkJCUJlamluZyBEQVlPIE1vYmlsZSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgTHRkLgotQzhGRTMwICAgICAoYmFzZSAxNikJCUJlamluZyBEQVlPIE1vYmlsZSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgTHRkLgotCQkJCVJvb20gNzEyLCBVTE8gUGFyayBCdWlsZGluZyBOby4gNjAxRQotCQkJCUJsb2NrIEItMTEtMSBXYW5nSmluZyBBcmVhLCAgQ2hhb1lhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAxMDIKLQkJCQlDSElOQQotCi1DQy0wMC04MCAgIChoZXgpCQlUUlVTVCBTWVNURU0gQ28uLAotQ0MwMDgwICAgICAoYmFzZSAxNikJCVRSVVNUIFNZU1RFTSBDby4sCi0JCQkJMy0xNS0xLTEwMDEgc2hpbnNha3UKLQkJCQl0YWthdHN1LWt1Ci0JCQkJS2F3YXNha2ktc2hpIEthbmFnYXdhIDIxMy0wMDE0Ci0JCQkJSkFQQU4KLQotQ0MtMDUtMUIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi1DQzA1MUIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUNDLTA4LUUwICAgKGhleCkJCUFwcGxlCi1DQzA4RTAgICAgIChiYXNlIDE2KQkJQXBwbGUKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLTA5LUM4ICAgKGhleCkJCUlNQVFMSVEgTFRECi1DQzA5QzggICAgIChiYXNlIDE2KQkJSU1BUUxJUSBMVEQKLQkJCQlPYnZvZG55IENhbmFsIDkzQQotCQkJCVN0LlBldGVyc2J1cmcgIDE5MTExOQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1DQy0wQy1EQSAgIChoZXgpCQlNaWxqb3Zha3QgQVMKLUNDMENEQSAgICAgKGJhc2UgMTYpCQlNaWxqb3Zha3QgQVMKLQkJCQlHYW5uZXN0YWR2ZWllbiAyCi0JCQkJQm9ycmUgVmVzdGZvbGQgMzE4NAotCQkJCU5PUldBWQotCi1DQy0xRS1GRiAgIChoZXgpCQlNZXRyb2xvZ2ljYWwgR3JvdXAgQlYKLUNDMUVGRiAgICAgKGJhc2UgMTYpCQlNZXRyb2xvZ2ljYWwgR3JvdXAgQlYKLQkJCQlNYXJpbmllcnN3ZWcgMTUxCi0JCQkJUm90dGVyZGFtIFp1aWQtSG9sbGFuZCAzMDExTksKLQkJCQlORVRIRVJMQU5EUwotCi1DQy0yMi0xOCAgIChoZXgpCQlJbm5vRGlnaXRhbCBDby4sIEx0ZC4KLUNDMjIxOCAgICAgKGJhc2UgMTYpCQlJbm5vRGlnaXRhbCBDby4sIEx0ZC4KLQkJCQlOby4zMTAgM0YgS29mb21vIFRvd2VyCi0JCQkJMTYtMyBTdW5lLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTdW5nbmFtLWNpdHkgS3l1bmdnaS1kbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUNDLTM0LUQ3ICAgKGhleCkJCUdFV0lTUyBTLlAuQS4KLUNDMzRENyAgICAgKGJhc2UgMTYpCQlHRVdJU1MgUy5QLkEuCi0JCQkJVklBIEFMRVNTQU5EUk8gVk9MVEEgMQotCQkJCUNFTkFURSBTT1RUTyAgMjQwNjkKLQkJCQlJVEFMWQotCi1DQy00My1FMyAgIChoZXgpCQlUcnVtcCBzLmEuCi1DQzQzRTMgICAgIChiYXNlIDE2KQkJVHJ1bXAgcy5hLgotCQkJCXJ1ZSBkZSBsYSBNYWl0cmlzZSA5Ci0JCQkJTml2ZWxsZXMgIDE0MDAKLQkJCQlCRUxHSVVNCi0KLUNDLTUwLTc2ICAgKGhleCkJCU9jb20gQ29tbXVuaWNhdGlvbnMsIEluYy4KLUNDNTA3NiAgICAgKGJhc2UgMTYpCQlPY29tIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTNGLTYsIE5vLiAxLCBCYW8gU2hlbmcgUmQuLCAKLQkJCQlZb25nIEhvIENpdHkgIDIzNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQ0MtNTItQUYgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi1DQzUyQUYgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSwgVEFJUElORyBSRC4KLQkJCQlTRUMuMSwgVFNBTyBUVUVOCi0JCQkJTkFOLVRPVSA1NDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUNDLTU0LTU5ICAgKGhleCkJCU9uVGltZSBOZXR3b3JrcyBBUwotQ0M1NDU5ICAgICAoYmFzZSAxNikJCU9uVGltZSBOZXR3b3JrcyBBUwotCQkJCUdsYWRzdmVpIDIwCi0JCQkJT3NsbyAgMDQ4OQotCQkJCU5PUldBWQotCi1DQy01NS1BRCAgIChoZXgpCQlSSU0KLUNDNTVBRCAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzkKLQkJCQlDQU5BREEKLQotQ0MtNUMtNzUgICAoaGV4KQkJV2VpZ2h0ZWNoIENvbS4gSW1wLiBFeHAuIEVxdWlwLiBQZXNhZ2VtIEx0ZGEKLUNDNUM3NSAgICAgKGJhc2UgMTYpCQlXZWlnaHRlY2ggQ29tLiBJbXAuIEV4cC4gRXF1aXAuIFBlc2FnZW0gTHRkYQotCQkJCVJvZG92aWEgVmlyZ2k/b2VsaW8gVmk/b2VyemVhLCAzMTEwIC0gU2FsYSAwMQotCQkJCUNvc3RhIE5vcnRlIENlbnRlciAtIEJhaXJybyBTYWNvIEdyYW5kZQotCQkJCUZsb3JpYW5pP29lcG9saXMgU0MgODgwMzItMDAxCi0JCQkJQlJBWklMCi0KLUNDLTVELTRFICAgKGhleCkJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi1DQzVENEUgICAgIChiYXNlIDE2KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQlOby42IElubm92YXRpb24gUm9hZCBJSSwgU2NpZW5jZSBQYXJrLCAKLQkJCQlIc2luIENodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DQy02MC1CQiAgIChoZXgpCQlFbXBvd2VyIFJGIFN5c3RlbXMKLUNDNjBCQiAgICAgKGJhc2UgMTYpCQlFbXBvd2VyIFJGIFN5c3RlbXMKLQkJCQkzMTYgVy4gRmxvcmVuY2UgQXZlCi0JCQkJSW5nbGV3b29kIENBIDkwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy02OS1CMCAgIChoZXgpCQlHbG9iYWwgVHJhZmZpYyBUZWNobm9sb2dpZXMsIExMQwotQ0M2OUIwICAgICAoYmFzZSAxNikJCUdsb2JhbCBUcmFmZmljIFRlY2hub2xvZ2llcywgTExDCi0JCQkJNzgwMCBUaGlyZCBTdHJlZXQgTm9ydGgKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTdC4gUGF1bCBNaW5uZXNvdGEgNTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLTZCLTk4ICAgKGhleCkJCU1pbmV0ZWMgV2lyZWxlc3MgVGVjaG5vbG9naWVzCi1DQzZCOTggICAgIChiYXNlIDE2KQkJTWluZXRlYyBXaXJlbGVzcyBUZWNobm9sb2dpZXMKLQkJCQkxMCBLZW1ibGEgV2F5Ci0JCQkJV2lsbGV0dG9uIFdBIDYxNTUKLQkJCQlBVVNUUkFMSUEKLQotQ0MtNzYtNjkgICAoaGV4KQkJU0VFVEVDSAotQ0M3NjY5ICAgICAoYmFzZSAxNikJCVNFRVRFQ0gKLQkJCQkxOS0xNSwgU2Vva3UtZG9uZwotCQkJCUh3YXN1bmctc2kgR3llb25nZ2ktZG8gNDQ1LTE3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DQy03QS0zMCAgIChoZXgpCQlDTUFYIFdpcmVsZXNzIENvLiwgTHRkLgotQ0M3QTMwICAgICAoYmFzZSAxNikJCUNNQVggV2lyZWxlc3MgQ28uLCBMdGQuCi0JCQkJS1QgQm9uZ2R1ayBCL0QgOUYsIDYyNy0xNSwgQm9uZ2R1ay1kb25nCi0JCQkJTmFtZ3UgRGFlZ3UgNzA1NzEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUNDLTdELTM3ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi1DQzdEMzcgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy03RS1FNyAgIChoZXgpCQlQYW5hc29uaWMgQVZDIE5ldHdvcmtzIENvbXBhbnkKLUNDN0VFNyAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgQVZDIE5ldHdvcmtzIENvbXBhbnkKLQkJCQkxLTE1IE1hdHN1by1jaG8KLQkJCQlLYWRvbWEgQ2l0eSBPc2FrYSA1NzEtODUwNAotCQkJCUpBUEFOCi0KLUNDLThDLUUzICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1DQzhDRTMgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLTk2LUEwICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLUNDOTZBMCAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotQ0MtOUUtMDAgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi1DQzlFMDAgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotQ0MtQUYtNzggICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotQ0NBRjc4ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi1DQy1CNS01QSAgIChoZXgpCQlGcmF1bmhvZmVyIElUV00KLUNDQjU1QSAgICAgKGJhc2UgMTYpCQlGcmF1bmhvZmVyIElUV00KLQkJCQlGcmF1bmhvZmVycGxhdHogMQotCQkJCUthaXNlcnNsYXV0ZXJuIFJoaW5lbGFuZC1QYWxhdGluYWUgNjc2NjMKLQkJCQlHRVJNQU5ZCi0KLUNDLUI4LTg4ICAgKGhleCkJCUFuQiBTZWN1cml0ZSBzLmEuCi1DQ0I4ODggICAgIChiYXNlIDE2KQkJQW5CIFNlY3VyaXRlIHMuYS4KLQkJCQlSdWUgZGUgSm9pZSwzOC00MAotCQkJCUxpZWdlICA0MDAwCi0JCQkJQkVMR0lVTQotCi1DQy1CRS03MSAgIChoZXgpCQlPcHRpTG9naXggQlYKLUNDQkU3MSAgICAgKGJhc2UgMTYpCQlPcHRpTG9naXggQlYKLQkJCQlKb29wIEdlZXNpbmt3ZWcgOTk5Ci0JCQkJQW1zdGVyZGFtIE5IIDEwOTZBWgotCQkJCU5FVEhFUkxBTkRTCi0KLUNDLUM2LTJCICAgKGhleCkJCVRyaS1TeXN0ZW1zIENvcnBvcmF0aW9uCi1DQ0M2MkIgICAgIChiYXNlIDE2KQkJVHJpLVN5c3RlbXMgQ29ycG9yYXRpb24KLQkJCQkzLTI3LTggVFJTIEJ1aWxkaW5nIDNGCi0JCQkJS295YXN1bWFjaGkKLQkJCQlIYWNoaW9qaSBUb2t5byAxOTItMDkwNAotCQkJCUpBUEFOCi0KLUNDLUNDLTRFICAgKGhleCkJCVN1biBGb3VudGFpbmhlYWQgVVNBLiBDb3JwIAotQ0NDQzRFICAgICAoYmFzZSAxNikJCVN1biBGb3VudGFpbmhlYWQgVVNBLiBDb3JwIAotCQkJCTgwMSBTLiBHYXJmaWxlZCBBVkUgIyAyMzYgCi0JCQkJTG9zIEFuZ2VsZXMgIENhbGlmb3JuaWEgIDkxODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy1DRC02NCAgIChoZXgpCQlTTS1FbGVjdHJvbmljIEdtYkgKLUNDQ0Q2NCAgICAgKGJhc2UgMTYpCQlTTS1FbGVjdHJvbmljIEdtYkgKLQkJCQlXYWxkd2VnIDIKLQkJCQlTdGFwZWxmZWxkIC8gQnJhYWsgIDIyMTQ1Ci0JCQkJR0VSTUFOWQotCi1DQy1DRS00MCAgIChoZXgpCQlKYW50ZXEgQ29ycAotQ0NDRTQwICAgICAoYmFzZSAxNikJCUphbnRlcSBDb3JwCi0JCQkJOTI3MiBKZXJvbmltbyBSb2FkCi0JCQkJU3VpdGUgMTI0Ci0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy1EOC0xMSAgIChoZXgpCQlBaWNvbm4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotQ0NEODExICAgICAoYmFzZSAxNikJCUFpY29ubiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNUYsIE5PLiA5LCBBbGxleSAyLCBMYW5lIDM1LCBKaS1IdSBSZC4sIE5laS1IdSwgCi0JCQkJVGFpcGVpIENpdHkgIDExNDk0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DQy1EOS1FOSAgIChoZXgpCQlTQ1IgRW5naW5lZXJzIEx0ZC4KLUNDRDlFOSAgICAgKGJhc2UgMTYpCQlTQ1IgRW5naW5lZXJzIEx0ZC4KLQkJCQk2IEhhb21hbnV0IFN0LgotCQkJCU5ldGFueWEgIDQyNTA0Ci0JCQkJSVNSQUVMCi0KLUNDLUVBLTFDICAgKGhleCkJCURDT05XT1JLUyAgQ28uLCBMdGQKLUNDRUExQyAgICAgKGJhc2UgMTYpCQlEQ09OV09SS1MgIENvLiwgTHRkCi0JCQkJMTgyLTEzIERhZXJ1bmcgUG9zdCBUb3dlciAybmQgNUYKLQkJCQlHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTg0NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DQy1GMy1BNSAgIChoZXgpCQlDaGkgTWVpIENvbW11bmljYXRpb24gU3lzdGVtcywgSW5jCi1DQ0YzQTUgICAgIChiYXNlIDE2KQkJQ2hpIE1laSBDb21tdW5pY2F0aW9uIFN5c3RlbXMsIEluYwotCQkJCU5vLjQKLQkJCQlNaW5nc2hlbmcgU3RyZWV0Ci0JCQkJVHVjaGVuZyBDaXR5IFRhaXBlaSBDb3VudHkgIDIzNjc4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DQy1GNi03QSAgIChoZXgpCQlBeWVja2EgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIExURAotQ0NGNjdBICAgICAoYmFzZSAxNikJCUF5ZWNrYSBDb21tdW5pY2F0aW9uIFN5c3RlbXMgTFRECi0JCQkJUE9CIDMwNTkKLQkJCQlIb2QgSGFzaGFyb24gIDQ1MTMwCi0JCQkJSVNSQUVMCi0KLUNDLUY4LTQxICAgKGhleCkJCUx1bWV3YXZlCi1DQ0Y4NDEgICAgIChiYXNlIDE2KQkJTHVtZXdhdmUKLQkJCQk0ODAzIEIgU3RyZWV0Ci0JCQkJU2FjcmFtZW50byBDQSA5NTgxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotQ0MtRjktNTQgICAoaGV4KQkJQXZheWEsIEluYwotQ0NGOTU0ICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkIAotCQkJCUJhc2tpbmcgUmlkZ2UgTkogMDc5MjAtMjMxMSAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLUZDLTZEICAgKGhleCkJCVJJWiBUUkFOU01JVFRFUlMKLUNDRkM2RCAgICAgKGJhc2UgMTYpCQlSSVogVFJBTlNNSVRURVJTCi0JCQkJQk9aSURBUkVWSUNFVkEgMTMKLQkJCQlQLk8uQk9YIDY1NAotCQkJCVpBR1JFQiAgMTAwMDAKLQkJCQlDUk9BVElBCi0KLUNDLUZDLUIxICAgKGhleCkJCVdpcmVsZXNzIFRlY2hub2xvZ3ksIEluYy4KLUNDRkNCMSAgICAgKGJhc2UgMTYpCQlXaXJlbGVzcyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjA2NCBFYXN0bWFuIEF2ZS4gIzExMwotCQkJCVZlbnR1cmEgQ0EgOTMwMDMtNzc4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtMTMtMUUgICAoaGV4KQkJU3VucmV4IFRlY2hub2xvZ3kgQ29ycAotRDAxMzFFICAgICAoYmFzZSAxNikJCVN1bnJleCBUZWNobm9sb2d5IENvcnAKLQkJCQlOby4gMTg4LTEsQ2h1bmcgQ2hlbmcgUm9hZC4sVGEgWWEgU2hpYW5nCi0JCQkJVGFpY2h1bmcgIDQyOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDAtMTUtNEEgICAoaGV4KQkJenRlIGNvcnBvcmF0aW9uCi1EMDE1NEEgICAgIChiYXNlIDE2KQkJenRlIGNvcnBvcmF0aW9uCi0JCQkJMTIvRi4senRlIFImRCBidWlsZGluZyxrZWppbmFuIFJvYWQsCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUQwLTE3LTZBICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZCAgCi1EMDE3NkEgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkICAKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDAtMUMtQkIgICAoaGV4KQkJQmVpamluZyBDdGltZXMgRGlnaXRhbCBUZWNobm9sb2d5IENvLiwgTHRkLgotRDAxQ0JCICAgICAoYmFzZSAxNikJCUJlaWppbmcgQ3RpbWVzIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk3dGggRmxvb3IsIEppbnpob3UgQnVpbGRpbmcsIFN1emhvdSBTdHJlZXQsIE5vLjc5LCBIYWlkaWFuIERpc3RyaWN0LCAKLQkJCQlCZWlqaW5nICAxMDAwODkKLQkJCQlDSElOQQotCi1EMC0yNy04OCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uTHRkCi1EMDI3ODggICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLkx0ZAotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDAtMzctNjEgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLUQwMzc2MSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtNTctNEMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRDA1NzRDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtNTgtNzUgICAoaGV4KQkJQWN0aXZlIENvbnRyb2wgVGVjaG5vbG9neSBJbmMuCi1EMDU4NzUgICAgIChiYXNlIDE2KQkJQWN0aXZlIENvbnRyb2wgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTgwMCBBcHBsZWJ5IExpbmUKLQkJCQlVbml0IDQKLQkJCQlCdXJsaW5ndG9uIE9udGFyaW8gTDdMIDZBMQotCQkJCUNBTkFEQQotCi1EMC01Ri1DRSAgIChoZXgpCQlIaXRhY2hpIERhdGEgU3lzdGVtcwotRDA1RkNFICAgICAoYmFzZSAxNikJCUhpdGFjaGkgRGF0YSBTeXN0ZW1zCi0JCQkJNzUwIENlbnRyYWwgRXhwcmVzc3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EMC02Ni03QiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi1EMDY2N0IgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIExURAotCQkJCTQxNiwgTWFldGFuLTNkb25nLCBZZW9uZ3RvbmctZ3UKLQkJCQlTdXdvbi1zaSBHeWVvbmdnaS1kbyA0NDM3NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDAtNjctRTUgICAoaGV4KQkJRGVsbCBJbmMKLUQwNjdFNSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVM6UlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtNzUtQkUgICAoaGV4KQkJUmVubyBBJmFtcDtFCi1EMDc1QkUgICAgIChiYXNlIDE2KQkJUmVubyBBJmFtcDtFCi0JCQkJNDY1NSBBaXJjZW50ZXIgQ2lyY2xlCi0JCQkJUmVubyBOZXZhZGEgODk1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTdELUU1ICAgKGhleCkJCUZvcndhcmQgUGF5IFN5c3RlbXMsIEluYy4KLUQwN0RFNSAgICAgKGJhc2UgMTYpCQlGb3J3YXJkIFBheSBTeXN0ZW1zLCBJbmMuCi0JCQkJOTUzMSBXZXN0IDc4dGggU3QuLCAjMjQ1Ci0JCQkJRWRlbiBQcmFpcmllIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EMC04OS05OSAgIChoZXgpCQlBUENPTiwgSW5jLgotRDA4OTk5ICAgICAoYmFzZSAxNikJCUFQQ09OLCBJbmMuCi0JCQkJOTI1NSBTVyBQaW9uZWVyIENvdXJ0Ci0JCQkJV2lsc29udmlsbGUgT1IgOTcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTkzLUY4ICAgKGhleCkJCVN0b25lc3RyZWV0IE9uZSBMTEMKLUQwOTNGOCAgICAgKGJhc2UgMTYpCQlTdG9uZXN0cmVldCBPbmUgTExDCi0JCQkJOTk2MCBDb3Jwb3JhdGUgQ2FtcHVzIERyaXZlCi0JCQkJU3VpdGUgMzMwMAotCQkJCUxvdWlzdmlsbGUgS1kgNDAyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTlCLTA1ICAgKGhleCkJCUVtdHJvbml4Ci1EMDlCMDUgICAgIChiYXNlIDE2KQkJRW10cm9uaXgKLQkJCQk1IyBHYW9wZW5nIERhZGFvCi0JCQkJUm9vbSA0MDQjLCBCdWlsZGluZyBCCi0JCQkJQ2hlbmdkdSAgNjEwMDQxCi0JCQkJQ0hJTkEKLQotRDAtQTMtMTEgICAoaGV4KQkJTmV1YmVyZ2VyIEdlYmk/b2V1ZGVhdXRvbWF0aW9uIEdtYkgKLUQwQTMxMSAgICAgKGJhc2UgMTYpCQlOZXViZXJnZXIgR2ViaT9vZXVkZWF1dG9tYXRpb24gR21iSAotCQkJCU9iZXJlciBLYWlzZXJ3ZWcgNgotCQkJCVJvdGhlbmJ1cmcgby5kLlQuIEJheWVybiA5MTU0MQotCQkJCUdFUk1BTlkKLQotRDAtQUYtQjYgICAoaGV4KQkJTGlua3RvcCBUZWNobm9sb2d5IENvLiwgTFRECi1EMEFGQjYgICAgIChiYXNlIDE2KQkJTGlua3RvcCBUZWNobm9sb2d5IENvLiwgTFRECi0JCQkJMkYgR3Vhbmd5ZSBCdWxpZGluZywgVG9yY2ggSGktVGVjaCwgCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi1EMC1CMy0zRiAgIChoZXgpCQlTSEVOWkhFTiBUSU5OTyBNT0JJTEUgVEVDSE5PTE9HWSBDTy4sTFRELgotRDBCMzNGICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIFRJTk5PIE1PQklMRSBURUNITk9MT0dZIENPLixMVEQuCi0JCQkJNC9GLixILTMgQnVpbGRpbmcsT0NUIEVhc3Rlcm4gbG5kdXN0cmlhbCBQYXJrLiBOTy4xIFhpYW5nU2hhbiBFYXN0IFJvYWQuLAotCQkJCU5hbiBTaGFuIERpc3RyaWN0LAotCQkJCUdVQU5HRE9ORyBTSEVOWkhFTiA1MTgwNTMKLQkJCQlDSElOQQotCi1EMC1CNS0zRCAgIChoZXgpCQlTRVBSTyBST0JPVElRVUUKLUQwQjUzRCAgICAgKGJhc2UgMTYpCQlTRVBSTyBST0JPVElRVUUKLQkJCQlaSSBBY3RpLUVzdCBMZXMgQWpvbmNzCi0JCQkJQlA4NAotCQkJCUxBIFJPQ0hFIFNVUiBZT04gIEY4NTAwMAotCQkJCUZSQU5DRQotCi1EMC1CQi04MCAgIChoZXgpCQlTSEwgVGVsZW1lZGljaW5lIEludGVybmF0aW9uYWwgTHRkLgotRDBCQjgwICAgICAoYmFzZSAxNikJCVNITCBUZWxlbWVkaWNpbmUgSW50ZXJuYXRpb25hbCBMdGQuCi0JCQkJOTAgWWlnYWwgQWxvbgotCQkJCVRlbCBBdml2ICA2Nzg5MQotCQkJCUlTUkFFTAotCi1EMC1DMi04MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1EMEMyODIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtRDAtRkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRDBEMEZEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtRDItODYgICAoaGV4KQkJQmVja21hbiBDb3VsdGVyIEJpb21lZGljYWwgSy5LLgotRDBEMjg2ICAgICAoYmFzZSAxNikJCUJlY2ttYW4gQ291bHRlciBCaW9tZWRpY2FsIEsuSy4KLQkJCQk0NTQtMzIgSGlnYXNoaW5vLAotCQkJCU5hZ2FpenVtaS1jaG8sIFN1bnRvLWd1biwgU2hpenVva2Eta2VuIDQxMS0wOTQzCi0JCQkJSkFQQU4KLQotRDAtRDMtRkMgICAoaGV4KQkJTWlvcywgTHRkLgotRDBEM0ZDICAgICAoYmFzZSAxNikJCU1pb3MsIEx0ZC4KLQkJCQkxMzAxIEJhbmsgb2YgQW1lcmljYSBUb3dlcgotCQkJCTEyIEhhcmNvdXQgUm9hZAotCQkJCUNlbnRyYWwgIC4KLQkJCQlIT05HIEtPTkcKLQotRDAtREYtOUEgICAoaGV4KQkJTGl0ZW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLUQwREY5QSAgICAgKGJhc2UgMTYpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLDkwLENoaWVuIDEgUm9hZCwgQ2h1bmdIby4gCi0JCQkJVGFpcGVpICAyMzU4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDAtRTMtNDcgICAoaGV4KQkJWW9nYQotRDBFMzQ3ICAgICAoYmFzZSAxNikJCVlvZ2EKLQkJCQlUYW1tc2FhcmUgdGVlIDQ3Ci0JCQkJVGFsbGlubiBIYXJqdW1hYSAxMTMxNgotCQkJCUVTVE9OSUEKLQotRDAtRTQtMEIgICAoaGV4KQkJV2VhcmFibGUgSW5jLgotRDBFNDBCICAgICAoYmFzZSAxNikJCVdlYXJhYmxlIEluYy4KLQkJCQkzODI1IENoYXJsZXMgRHIuCi0JCQkJTm9ydGhicm9vayBJTCA2MDA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtRTUtNEQgICAoaGV4KQkJUGFjZSBwbGMKLUQwRTU0RCAgICAgKGJhc2UgMTYpCQlQYWNlIHBsYwotCQkJCVNhbHRzIE1pbGwKLQkJCQlWaWN0b3JpYSBSb2FkCi0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQxOCAzTEYKLQkJCQlVTklURUQgS0lOR0RPTQotCi1EMC1FQi05RSAgIChoZXgpCQlTZW93b28gSW5jLgotRDBFQjlFICAgICAoYmFzZSAxNikJCVNlb3dvbyBJbmMuCi0JCQkJSmluU3VuZyBCL0QgMS0yIEd1bmphLWRvbmcsIEd3YW5namluLWd1LCAKLQkJCQlTZW91bCAgMTQzLTgzNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1EMC1GMC1EQiAgIChoZXgpCQlFcmljc3NvbgotRDBGMERCICAgICAoYmFzZSAxNikJCUVyaWNzc29uCi0JCQkJMTAwIEhlYWRxdWFydGVycyBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC0wMC0wRCAgIChoZXgpCQlQaG9lbml4IEJyb2FkYmFuZCBUZWNobm9sb2dpZXMsIExMQy4KLUQ0MDAwRCAgICAgKGJhc2UgMTYpCQlQaG9lbml4IEJyb2FkYmFuZCBUZWNobm9sb2dpZXMsIExMQy4KLQkJCQk1ODkgQmV0aGxlaGVtIFBpa2UKLQkJCQlTdWl0ZSAxMDAwCi0JCQkJTW9udGdvbWVyeXZpbGxlIFBBIDE4OTM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC0xMS1ENiAgIChoZXgpCQlTaG90U3BvdHRlciwgSW5jLgotRDQxMUQ2ICAgICAoYmFzZSAxNikJCVNob3RTcG90dGVyLCBJbmMuCi0JCQkJMTA2MCBUZXJyYSBCZWxsYSBBdmUuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtMTItOTYgICAoaGV4KQkJQW5vYml0IFRlY2hub2xvZ2llcyBMdGQuCi1ENDEyOTYgICAgIChiYXNlIDE2KQkJQW5vYml0IFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJOCBIYXNhZG5hb3QgU3QuCi0JCQkJUE9CIDEyMTQ3Ci0JCQkJSGVyemVsaXlhIFBpdHVhY2ggICA0NjcyOAotCQkJCUlTUkFFTAotCi1ENC0xRi0wQyAgIChoZXgpCQlUVkkgVmlzaW9uIE95Ci1ENDFGMEMgICAgIChiYXNlIDE2KQkJVFZJIFZpc2lvbiBPeQotCQkJCUFzZW50YWphbmthdHUgMwotCQkJCUhlbHNpbmtpICAwMDg4MAotCQkJCUZJTkxBTkQKLQotRDQtMjgtQjIgICAoaGV4KQkJaW9CcmlkZ2UsIEluYy4KLUQ0MjhCMiAgICAgKGJhc2UgMTYpCQlpb0JyaWRnZSwgSW5jLgotCQkJCTIyNSBDZWRhciBIaWxsIFN0cmVldAotCQkJCVN1aXRlIDIwMAotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC0yQy0zRCAgIChoZXgpCQlTa3kgTGlnaHQgRGlnaXRhbCBMaW1pdGVkCi1ENDJDM0QgICAgIChiYXNlIDE2KQkJU2t5IExpZ2h0IERpZ2l0YWwgTGltaXRlZAotCQkJCVJtLiAxMDA5IEt3b25nIFNhbmcgSG9uZyBDZW50cmUsIDE1MS0xNTMgSG9pIEJ1biBSb2FkLCBLd3VuIFRvbmcsIEtvd2xvb24sIAotCQkJCUhvbmcgS29uZyAgOTk5MDc3Ci0JCQkJQ0hJTkEKLQotRDQtM0EtRTkgICAoaGV4KQkJRE9OR0dVQU4gaXB0IElORFVTVFJJQUwgQ08uLCBMVEQKLUQ0M0FFOSAgICAgKGJhc2UgMTYpCQlET05HR1VBTiBpcHQgSU5EVVNUUklBTCBDTy4sIExURAotCQkJCU5vLjY2LTEuSXN0IE5ldyBBcmVhLCBOYW5zaGUgRGlzdC4sIENoaWdhbmcsSHVtZW4sCi0JCQkJRG9uZ2d1YW4gR3Vhbmdkb25nIDUyMzkwCi0JCQkJQ0hJTkEKLQotRDQtM0QtNjcgICAoaGV4KQkJQ2FybWEgSW5kdXN0cmllcyBJbmMuCi1ENDNENjcgICAgIChiYXNlIDE2KQkJQ2FybWEgSW5kdXN0cmllcyBJbmMuCi0JCQkJMTMyIFdhbHNoIFJvYWQKLQkJCQlMaW5kc2F5IE9udGFyaW8gSzlWIDRSMwotCQkJCUNBTkFEQQotCi1ENC00Qy0yNCAgIChoZXgpCQlWdXBwYWxhbXJpdGhhIE1hZ25ldGljIENvbXBvbmVudHMgTFRECi1ENDRDMjQgICAgIChiYXNlIDE2KQkJVnVwcGFsYW1yaXRoYSBNYWduZXRpYyBDb21wb25lbnRzIExURAotCQkJCTNyZCBGbG9vciwgMzA3ICxNeSBIb21lIEFzaG9rYSBDaGFtYmVycyxTLlAgUm9hZCwgCi0JCQkJU2VjdW5kZXJhYmFkIEFuZGhyYVByYWRlc2ggNTAwMDAzCi0JCQkJSU5ESUEKLQotRDQtNEMtQTcgICAoaGV4KQkJSW5mb3JtdGVraG5pa2EgJiBDb21tdW5pY2F0aW9uLCBMTEMKLUQ0NENBNyAgICAgKGJhc2UgMTYpCQlJbmZvcm10ZWtobmlrYSAmIENvbW11bmljYXRpb24sIExMQwotCQkJCTEsIGJ1aWxkLiAyLzEsIFZlcmhuYXlhCi0JCQkJS3Jhc25vc2Vsc2theWEgU3QuCi0JCQkJTW9zY293ICAxMDcxNDAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotRDQtNEYtODAgICAoaGV4KQkJS2VtcGVyIERpZ2l0YWwgR21iSAotRDQ0RjgwICAgICAoYmFzZSAxNikJCUtlbXBlciBEaWdpdGFsIEdtYkgKLQkJCQlLb2VuaWdzd2FsbCAxNi0xOAotCQkJCVJlY2tsaW5naGF1c2VuIE5vcnRoLVJoaW5lLVdlc3RwaGFsaWEgNDU2NTcKLQkJCQlHRVJNQU5ZCi0KLUQ0LTUyLTUxICAgKGhleCkJCUlCVCBJbmdlbmlldXJidXJlYXUgQnJvZW5uaW1hbm4gVGh1bgotRDQ1MjUxICAgICAoYmFzZSAxNikJCUlCVCBJbmdlbmlldXJidXJlYXUgQnJvZW5uaW1hbm4gVGh1bgotCQkJCUthc2VybmVuc3RyYXNzZSA1Ci0JCQkJVGh1biBCZXJuIDM2MDAKLQkJCQlTV0lUWkVSTEFORAotCi1ENC01Mi05NyAgIChoZXgpCQluU1RSRUFNUyBUZWNobm9sb2dpZXMsIEluYy4KLUQ0NTI5NyAgICAgKGJhc2UgMTYpCQluU1RSRUFNUyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMEYtMiwgTm8uIDMwMiwgUnVpZ3VhbmcgUmQuLCBOZWlodSBEaXN0cmljdCwKLQkJCQlUYWlwZWkgQ2l0eSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1ENC01RC00MiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRDQ1RDQyICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi1ENC02Ni1BOCAgIChoZXgpCQlSaWVkbyBOZXR3b3JrcyBHbWJICi1ENDY2QTggICAgIChiYXNlIDE2KQkJUmllZG8gTmV0d29ya3MgR21iSAotCQkJCVdhcnBlbHN0cmFzc2UgMTAKLQkJCQlEdWVkaW5nZW4gRlIgMzE4NgotCQkJCVNXSVRaRVJMQU5ECi0KLUQ0LTZDLUJGICAgKGhleCkJCUdvb2RyaWNoIElTUgotRDQ2Q0JGICAgICAoYmFzZSAxNikJCUdvb2RyaWNoIElTUgotCQkJCTY2MDAgR3VsdG9uIENydAotCQkJCUFsYnVxdWVycXVlIE5NIDg3MTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC02Qy1EQSAgIChoZXgpCQlDU00gR21iSAotRDQ2Q0RBICAgICAoYmFzZSAxNikJCUNTTSBHbWJICi0JCQkJUmFpZmZlaXNlbnN0ci4gMzQKLQkJCQlGaWxkZXJzdGFkdCBCYWRlbi1XaT9vZXJ0dGVtYmVyZyA3MDc5NAotCQkJCUdFUk1BTlkKLQotRDQtNkYtNDIgICAoaGV4KQkJV0FYRVNTIFVTQSBJbmMKLUQ0NkY0MiAgICAgKGJhc2UgMTYpCQlXQVhFU1MgVVNBIEluYwotCQkJCTE0MDEgRG92ZSBTdHJlZXQKLQkJCQlTdWl0ZSAyMjAKLQkJCQlOZXdwb3J0IEJlYWNoIENBIDkyNjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC03OS1DMyAgIChoZXgpCQlDYW1lcm9uZXQgR21iSCAmYW1wOyBDby4gS0cKLUQ0NzlDMyAgICAgKGJhc2UgMTYpCQlDYW1lcm9uZXQgR21iSCAmYW1wOyBDby4gS0cKLQkJCQlFbGJlcmZlbGRlciBTdHJhc3NlIDk2Ci0JCQkJUmVtc2NoZWlkIE5SVyA0Mjg1MwotCQkJCUdFUk1BTlkKLQotRDQtN0ItNzUgICAoaGV4KQkJSEFSVElORyBFbGVjdHJvbmljcyBHbWJIICYgQ28uIEtHCi1ENDdCNzUgICAgIChiYXNlIDE2KQkJSEFSVElORyBFbGVjdHJvbmljcyBHbWJIICYgQ28uIEtHCi0JCQkJTWFyaWVud2VyZGVyc3RyLiAzCi0JCQkJRXNwZWxrYW1wIE5vcnRoIFJoaW5lIFdlc3RwaGFsaWEgMzIzMzkKLQkJCQlHRVJNQU5ZCi0KLUQ0LTgyLTNFICAgKGhleCkJCUFyZ29zeSBUZWNobm9sb2dpZXMsIEx0ZC4KLUQ0ODIzRSAgICAgKGJhc2UgMTYpCQlBcmdvc3kgVGVjaG5vbG9naWVzLCBMdGQuCi0JCQkJNzMtMjIxIEhheXN0YWNrIFJvYWQKLQkJCQlQYWxtIERlc2VydCBDQSA5MjI2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtODUtNjQgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1ENDg1NjQgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC04OC05MCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLUQ0ODg5MCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDQtOEYtQUEgICAoaGV4KQkJU29nZWNhbSBJbmR1c3RyaWFsLCBTLkEuCi1ENDhGQUEgICAgIChiYXNlIDE2KQkJU29nZWNhbSBJbmR1c3RyaWFsLCBTLkEuCi0JCQkJUm9zYWxpbmQgRnJhbmtsaW4sIDIyLTI0Ci0JCQkJUFRBIENhbXBhbmlsbGFzCi0JCQkJTWFsYWdhICAyOTU5MAotCQkJCVNQQUlOCi0KLUQ0LTkxLUFGICAgKGhleCkJCUVsZWN0cm9hY3VzdGljYSBHZW5lcmFsIEliZXJpY2EsIFMuQS4KLUQ0OTFBRiAgICAgKGJhc2UgMTYpCQlFbGVjdHJvYWN1c3RpY2EgR2VuZXJhbCBJYmVyaWNhLCBTLkEuCi0JCQkJQXZkYSBBbG1vemFyYSwgNzkKLQkJCQlaYXJhZ296YSAgNTAwMDMKLQkJCQlTUEFJTgotCi1ENC05NC01QSAgIChoZXgpCQlDT1NNTyBDTy4sIExURAotRDQ5NDVBICAgICAoYmFzZSAxNikJCUNPU01PIENPLiwgTFRECi0JCQkJMS0xMiwgSGlnYXNoaS1Hb3RhbmRhIDItY2hvbWUKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMjIKLQkJCQlKQVBBTgotCi1ENC05Ni1ERiAgIChoZXgpCQlTVU5HSklOIEMmVCBDTy4sTFRECi1ENDk2REYgICAgIChiYXNlIDE2KQkJU1VOR0pJTiBDJlQgQ08uLExURAotCQkJCURhZXlhCi0JCQkJMzYyLTUKLQkJCQlTaGV1bmcgR3llb25nZ2kgNDI5LTgwOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1ENC05QS0yMCAgIChoZXgpCQlBcHBsZSwgSW5jCi1ENDlBMjAgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtOUMtMjggICAoaGV4KQkJSmF5QmlyZCBHZWFyIExMQwotRDQ5QzI4ICAgICAoYmFzZSAxNikJCUpheUJpcmQgR2VhciBMTEMKLQkJCQkyODI1IEVhc3QgQ290dG9ud29vZCBQYXJrd2F5ICM1MDAKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtOUMtOEUgICAoaGV4KQkJVW5pdmVyc2l0eSBvZiBGVUtVSQotRDQ5QzhFICAgICAoYmFzZSAxNikJCVVuaXZlcnNpdHkgb2YgRlVLVUkKLQkJCQkzLTktMSBCdW5reW8KLQkJCQlGdWt1aSBDaXR5ICA5MTAtODUwNwotCQkJCUpBUEFOCi0KLUQ0LTlFLTZEICAgKGhleCkJCVd1aGFuIFpob25neXVhbiBIdWFkaWFuIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLiwKLUQ0OUU2RCAgICAgKGJhc2UgMTYpCQlXdWhhbiBaaG9uZ3l1YW4gSHVhZGlhbiBTY2llbmNlICYgVGVjaG5vbG9neSBDby4sCi0JCQkJTk8uNiwgNiBSb2FkLCBTY2kuICYgVGVjaC4gcmVnaW9uIG9mIEhVU1QsIEVhc3QgTGFrZSBEZXZlbG9wbWVudCBab25lLAotCQkJCVd1aGFuICBIdWJlaSA0MzAyMjMKLQkJCQlDSElOQQotCi1ENC1BNC0yNSAgIChoZXgpCQlTTUFYIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1ENEE0MjUgICAgIChiYXNlIDE2KQkJU01BWCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTJGLiwgTm8uIDMsIFd1cXVhbiAzcmQsIFd1Z3UgRGlzdC4KLQkJCQlOZXcgVGFpcGVpIENpdHkgIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDQtQTktMjggICAoaGV4KQkJR3JlZW5XYXZlIFJlYWxpdHkgSW5jCi1ENEE5MjggICAgIChiYXNlIDE2KQkJR3JlZW5XYXZlIFJlYWxpdHkgSW5jCi0JCQkJMzkgUGFya2VyCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LUFBLUZGICAgKGhleCkJCU1JQ1JPIFdPUkxEIAotRDRBQUZGICAgICAoYmFzZSAxNikJCU1JQ1JPIFdPUkxEIAotCQkJCTE5MzcwIFZBTiBORVNTIEFWRSAKLQkJCQlUT1JSQU5DRSAgQ0EgOTA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LUMxLUZDICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1ENEMxRkMgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSAgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLUQ0LUM3LTY2ICAgKGhleCkJCUFjZW50aWMgR21iSAotRDRDNzY2ICAgICAoYmFzZSAxNikJCUFjZW50aWMgR21iSAotCQkJCVZlbmxvZXIgU3RyYXNzZSAxNTEtMTUzCi0JCQkJQ29sb2duZSAgNTA2NzIKLQkJCQlHRVJNQU5ZCi0KLUQ0LUNCLUFGICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1ENENCQUYgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLUQ0LUQxLTg0ICAgKGhleCkJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi1ENEQxODQgICAgIChiYXNlIDE2KQkJQURCIEJyb2FkYmFuZCBJdGFsaWEKLQkJCQl2aWEgU2FyY2EgMzM2Ci0JCQkJTWlsYW5vICAyMDEyNgotCQkJCUlUQUxZCi0KLUQ0LUQ4LTk4ICAgKGhleCkJCUtvcmVhIENOTyBUZWNoIENvLiwgTHRkCi1ENEQ4OTggICAgIChiYXNlIDE2KQkJS29yZWEgQ05PIFRlY2ggQ28uLCBMdGQKLQkJCQkjMjQwLTEsVWlnb2stUmkKLQkJCQlZZW9uZ3N1bi1NeWVvbgotCQkJCU11bmd5ZW9uZy1TaSBHeWVvbmdzYW5nYnVrLWRvIDc0NS04NTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDQtRTMtMkMgICAoaGV4KQkJUy4gU2llZGxlICYgU29obmUKLUQ0RTMyQyAgICAgKGJhc2UgMTYpCQlTLiBTaWVkbGUgJiBTb2huZQotCQkJCUJyZWdzdHJhc3NlIDEKLQkJCQlGdXJ0d2FuZ2VuICBELTc4MTIwCi0JCQkJR0VSTUFOWQotCi1ENC1FOC1CMiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi1ENEU4QjIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1ENC1GMC0yNyAgIChoZXgpCQlOYXZldGFzIEVuZXJneSBNYW5hZ2VtZW50Ci1ENEYwMjcgICAgIChiYXNlIDE2KQkJTmF2ZXRhcyBFbmVyZ3kgTWFuYWdlbWVudAotCQkJCTE3QSBEZWJlbiBNaWxsIEJ1c2luZXNzIENlbnRyZQotCQkJCU9sZCBNYWx0aW5ncyBBcHByb2FjaAotCQkJCVdvb2RicmlkZ2UgU3VmZm9sayBJUDEyIDFCTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUQ0LUYwLUI0ICAgKGhleCkJCU5hcGNvIFNlY3VyaXR5IFRlY2hub2xvZ2llcwotRDRGMEI0ICAgICAoYmFzZSAxNikJCU5hcGNvIFNlY3VyaXR5IFRlY2hub2xvZ2llcwotCQkJCTMzMyBCYXl2aWV3IEF2ZQotCQkJCUFtaXR5dmlsbGUgTlkgMTE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LUYxLTQzICAgKGhleCkJCUlQUk9BRC4sSW5jCi1ENEYxNDMgICAgIChiYXNlIDE2KQkJSVBST0FELixJbmMKLQkJCQkjNTA1IEJ5dWtzYW4gZGlnaXRhbCB2YWxsZXkgNywgMTcwLTEzLAotCQkJCUd1cm8tMy1Eb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi04NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDgtMUItRkUgICAoaGV4KQkJVFdJTkxJTlggQ09SUE9SQVRJT04KLUQ4MUJGRSAgICAgKGJhc2UgMTYpCQlUV0lOTElOWCBDT1JQT1JBVElPTgotCQkJCUVTUEFDRSBERVNDQVJURVMgQkFUIEIKLQkJCQk0MjUgUlVFIFJFTkUgREVTQ0FSVEVTCi0JCQkJQUlYIEVOIFBST1ZFTkNFIFBST1ZFTkNFIDEzODU3Ci0JCQkJRlJBTkNFCi0KLUQ4LTFDLTE0ICAgKGhleCkJCUNvbXBhY3RhIEludGVybmF0aW9uYWwsIEx0ZC4KLUQ4MUMxNCAgICAgKGJhc2UgMTYpCQlDb21wYWN0YSBJbnRlcm5hdGlvbmFsLCBMdGQuCi0JCQkJMzEzNDIgVmlhIExhcyBQYWxtYXMKLQkJCQlTYW4gSnVhbiBDYXBpc3RyYW5vIENBIDkyNjc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC0yOC1DOSAgIChoZXgpCQlHZW5lcmFsIEVsZWN0cmljIENvbnN1bWVyIGFuZCBJbmR1c3RyaWFsCi1EODI4QzkgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBFbGVjdHJpYyBDb25zdW1lciBhbmQgSW5kdXN0cmlhbAotCQkJCUFQMzUtMTQwNQotCQkJCUFwcGxpYW5jZSBQYXJrCi0JCQkJTG91aXN2aWxsZSBLWSA0MDIyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtMjktODYgICAoaGV4KQkJQmVzdCBXaXNoIFRlY2hub2xvZ3kgTFRECi1EODI5ODYgICAgIChiYXNlIDE2KQkJQmVzdCBXaXNoIFRlY2hub2xvZ3kgTFRECi0JCQkJN0UsSGFpIFlpIEJ1c2luZXNzIEJ1aWxkaW5nLE5vLjMxMCxUaWFuc2hhbiBSRC4sCi0JCQkJU2hhbmdoYWkgIDIwMDMzNgotCQkJCUNISU5BCi0KLUQ4LTJBLTdFICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1EODJBN0UgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLUQ4LTMwLTYyICAgKGhleCkJCUFwcGxlLCBJbmMKLUQ4MzA2MiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC00Mi1BQyAgIChoZXgpCQlGcmVlQ29tbSBEYXRhIENvbW11bmljYXRpb24gQ28uLEx0ZC4KLUQ4NDJBQyAgICAgKGJhc2UgMTYpCQlGcmVlQ29tbSBEYXRhIENvbW11bmljYXRpb24gQ28uLEx0ZC4KLQkJCQlCdWlsZGluZyA5MCwgTm8uIDQ4NTUsIEd1YW5nZnVsaW4gUm9hZCwgU29uZ2ppYW5nIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMTYxNgotCQkJCUNISU5BCi0KLUQ4LTQ2LTA2ICAgKGhleCkJCVNpbGljb24gVmFsbGV5IEdsb2JhbCBNYXJrZXRpbmcKLUQ4NDYwNiAgICAgKGJhc2UgMTYpCQlTaWxpY29uIFZhbGxleSBHbG9iYWwgTWFya2V0aW5nCi0JCQkJODMwIFN0ZXdhcnQgRHIuICMyMDEKLQkJCQlTdW5ueXZhbGUgQ2EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ4LTRCLTJBICAgKGhleCkJCUNvZ25pdGFzIFRlY2hub2xvZ2llcywgSW5jLgotRDg0QjJBICAgICAoYmFzZSAxNikJCUNvZ25pdGFzIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTY0MDYgTGF1cmVsIEJ1c2ggTG4uCi0JCQkJU3VnYXIgTGFuZCBUZXhhcyA3NzQ3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtNTQtM0EgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLUQ4NTQzQSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtNUQtNEMgICAoaGV4KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLUQ4NUQ0QyAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCUJ1aWxkaW5nIDcsIFNlY29uZCBQYXJ0LCBIb25naHVhbGluZyBJbmR1c3RyaWFsIFpvbmUKLQkJCQlYaWxpIHRvd24sIE5hbnNoYW4sIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi1EOC01RC04NCAgIChoZXgpCQlDQXggc29mdCBHbWJICi1EODVEODQgICAgIChiYXNlIDE2KQkJQ0F4IHNvZnQgR21iSAotCQkJCU5vZXR0aW5nZXIgU3RyYXNzZSAzCi0JCQkJS2FybHNiYWQgQlcgNzYzMDcKLQkJCQlHRVJNQU5ZCi0KLUQ4LTZCLUY3ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotRDg2QkY3ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLUQ4LTcxLTU3ICAgKGhleCkJCUxlbm92byBNb2JpbGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLUQ4NzE1NyAgICAgKGJhc2UgMTYpCQlMZW5vdm8gTW9iaWxlIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBMdGQuCi0JCQkJTm8uOTk5LFFpc2hhbiBOb3J0aCAybmQgUm9hZCxJbmZvcm1hdGlvbiZPcHRvZWxlY3Ryb25pY3MgUGFyayxUb3JjaCBIaS10ZWNoIEluZHVzdHJ5IERldmVsb3BtZW50IFpvbmUsCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi1EOC03NS0zMyAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRDg3NTMzICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi1EOC03Ni0wQSAgIChoZXgpCQlFc2NvcnQsIEluYy4KLUQ4NzYwQSAgICAgKGJhc2UgMTYpCQlFc2NvcnQsIEluYy4KLQkJCQk1NDQwIFdlc3QgQ2hlc3RlciBSZC4KLQkJCQlXZXN0IENoZXN0ZXIgT2hpbyA0NTA2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtNzktODggICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLUQ4Nzk4OCAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCU5PLjE2OCBGT1hDT05OIFJPQUQKLQkJCQlIVUFJQU4gRUNPTk9NSUMgREVWRUxPUE1FTlQgWk9ORQotCQkJCUhVQUlBTiBKSUFOR1NVIDIyMzAwNQotCQkJCUNISU5BCi0KLUQ4LTk1LTJGICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1EODk1MkYgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlNUyA4NzIzCi0JCQkJRGFsbGFzIFRleGFzIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC05Ny0zQiAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgRW1iZWRkZWQgUG93ZXIKLUQ4OTczQiAgICAgKGJhc2UgMTYpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgRW1iZWRkZWQgUG93ZXIKLQkJCQkxNi9GIEx1IFBsYXphIEJ1aWxkaW5nCi0JCQkJMiBXaW5nIFlpcCBTdHJlZXQKLQkJCQlLd3VuIFRvbmcgS293bG9vbiAwMDAwMAotCQkJCUhPTkcgS09ORwotCi1EOC05RC1COSAgIChoZXgpCQllTWVnYXRlY2ggSW50ZXJuYXRpb25hbCBDb3JwLgotRDg5REI5ICAgICAoYmFzZSAxNikJCWVNZWdhdGVjaCBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJUm9vbSA0MDMsIE5vLjI0IFd1Y3l1YW4gMm5kIFJkLiwKLQkJCQlTaW5qaHVhbmcgQ2l0eSwgVGFpcGVpIENvdW50eSwgIDIzOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDgtOUUtM0YgICAoaGV4KQkJQXBwbGUsIEluYy4KLUQ4OUUzRiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQTItNUUgICAoaGV4KQkJQXBwbGUKLUQ4QTI1RSAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDYWxpZm9ybmlhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC1BRS05MCAgIChoZXgpCQlJdGliaWEgVGVjaG5vbG9naWVzCi1EOEFFOTAgICAgIChiYXNlIDE2KQkJSXRpYmlhIFRlY2hub2xvZ2llcwotCQkJCTUgQ2xhdXNlbiBDdAotCQkJCVdlc3QgV2luZHNvciBOSiAwODU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQjEtMkEgICAoaGV4KQkJUGFuYXNvbmljIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLUQ4QjEyQSAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgTW9iaWxlIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTYwMCBTYWVkby1jaG8gVHN1enVraS1rdQotCQkJCVlva29oYW1hIENpdHkgS2FuYWdhd2EgMjI0LTg1MzkKLQkJCQlKQVBBTgotCi1EOC1CMy03NyAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLUQ4QjM3NyAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4gMjMsIFhpbmdodWEgUmQuLCAKLQkJCQlUYW95dWFuIENpdHkgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDgtQjYtQzEgICAoaGV4KQkJTmV0d29ya0FjY291bnRhbnQsIEluYy4KLUQ4QjZDMSAgICAgKGJhc2UgMTYpCQlOZXR3b3JrQWNjb3VudGFudCwgSW5jLgotCQkJCTEyMTAxIFR1a3dpbGEgSW50ZXJuYXRpb25hbCBCbHZkLgotCQkJCVNlYXR0bGUgV2FzaGluZ3RvbiA5ODE2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQzAtNjggICAoaGV4KQkJTmV0Z2VuZXRlY2guY28uLGx0ZC4KLUQ4QzA2OCAgICAgKGJhc2UgMTYpCQlOZXRnZW5ldGVjaC5jby4sbHRkLgotCQkJCTcwNCwgSGFubGltIFZlbnR1cmUgVG93bi4sICM2ODktNiwgCi0JCQkJR2V1bWplb25nLSBkb25nLAotCQkJCUd1bnBvLXNpICA0MzUtODYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUQ4LUMzLUZCICAgKGhleCkJCURFVFJBQ09NCi1EOEMzRkIgICAgIChiYXNlIDE2KQkJREVUUkFDT00KLQkJCQk0MSBBVkVOVUUgREUgTCdFVVJPUEUKLQkJCQlaT05FIEVVUk9DRU5UUkUgT1VFU1QgCi0JCQkJQ0FTVEVMTkFVIEQnRVNUUkVURUZPTkRTICAzMTYyMAotCQkJCUZSQU5DRQotCi1EOC1DNy1DOCAgIChoZXgpCQlBcnViYSBOZXR3b3JrcwotRDhDN0M4ICAgICAoYmFzZSAxNikJCUFydWJhIE5ldHdvcmtzCi0JCQkJMTM0NCBDcm9zc21hbiBBdmUuCi0JCQkJU3Vubnl2YWxlICBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQzktOUQgICAoaGV4KQkJRUEgRElTUExBWSBMSU1JVEVECi1EOEM5OUQgICAgIChiYXNlIDE2KQkJRUEgRElTUExBWSBMSU1JVEVECi0JCQkJMjIvRiBERUxUQSBIT1VTRSAzIE9OIFlJVSBTVAotCQkJCVNIQVRJTiBOVCAgCi0JCQkJSE9ORyBLT05HCi0KLUQ4LUQzLTg1ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotRDhEMzg1ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC1ENi03RSAgIChoZXgpCQlHU0sgQ05DIEVRVUlQTUVOVCBDTy4sTFRECi1EOEQ2N0UgICAgIChiYXNlIDE2KQkJR1NLIENOQyBFUVVJUE1FTlQgQ08uLExURAotCQkJCU5PLjcsMXN0IFN0cmVldCxMdW9jaG9uZyBOb3J0aCBSb2FkLEx1b2Nob25nd2VpCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyAgNTEwMTY1Ci0JCQkJQ0hJTkEKLQotRDgtREYtMEQgICAoaGV4KQkJYmVyb05ldCBHbWJICi1EOERGMEQgICAgIChiYXNlIDE2KQkJYmVyb05ldCBHbWJICi0JCQkJRnJpZWRyaWNoc3RyLiAyMzEKLQkJCQlCZXJsaW4gIDEwOTY5Ci0JCQkJR0VSTUFOWQotCi1EOC1FMy1BRSAgIChoZXgpCQlDSVJURUMgTUVESUNBTCBTWVNURU1TCi1EOEUzQUUgICAgIChiYXNlIDE2KQkJQ0lSVEVDIE1FRElDQUwgU1lTVEVNUwotCQkJCTEwMUIgQ29vcGVyIENvdXJ0Ci0JCQkJTG9zIEdhdG9zIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC1FNy0yQiAgIChoZXgpCQlPblBBVEggVGVjaG5vbG9naWVzCi1EOEU3MkIgICAgIChiYXNlIDE2KQkJT25QQVRIIFRlY2hub2xvZ2llcwotCQkJCTIwMDAgTGluY29sbiBEcml2ZSBFYXN0Ci0JCQkJTWFybHRvbiBOZXcgSmVyc2V5IDA4MDUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC1GRS04RiAgIChoZXgpCQlJREZvbmUgQ28uLCBMdGQuCi1EOEZFOEYgICAgIChiYXNlIDE2KQkJSURGb25lIENvLiwgTHRkLgotCQkJCTdGIEFjZSB0ZWNobm8gdG93ZXIgNXRoIEIvRCwgMTk3LTIyCi0JCQkJR3Vyby1kb25nLCBHdXJvLWd1IFNlb3VsIDE1Mi03NjYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotREMtMDItNjUgICAoaGV4KQkJTWVkaXRlY2ggS2Z0Ci1EQzAyNjUgICAgIChiYXNlIDE2KQkJTWVkaXRlY2ggS2Z0Ci0JCQkJVWxsb2kgdXQgMjAwLgotCQkJCUJ1ZGFwZXN0ICAxMTkxCi0JCQkJSFVOR0FSWQotCi1EQy0wNS1FRCAgIChoZXgpCQlOYWJ0ZXNjbyAgQ29ycG9yYXRpb24KLURDMDVFRCAgICAgKGJhc2UgMTYpCQlOYWJ0ZXNjbyAgQ29ycG9yYXRpb24KLQkJCQk5LTE4LCBLYWlnYW4gMS1jaG9tZQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDUtMDAyMgotCQkJCUpBUEFOCi0KLURDLTA3LUMxICAgKGhleCkJCUhhbmdaaG91IFFpWWFuZyBUZWNobm9sb2d5IENvLixMdGQuCi1EQzA3QzEgICAgIChiYXNlIDE2KQkJSGFuZ1pob3UgUWlZYW5nIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlGbG9vciA1LCBCdWlsZGluZyAyLCBSb2FkIFhpWXVhbllpLCBXZXN0TGFrZSBUZWNobm9sb2d5IFBhcmssCi0JCQkJU2FuRHVuLCBYaUh1IERpc3RyaWJ1dGUKLQkJCQlIYW5nWmhvdSBaaGVKaWFuZyAzMTAwMjgKLQkJCQlDSElOQQotCi1EQy0xNi1BMiAgIChoZXgpCQlNZWR0cm9uaWMgRGlhYmV0ZXMKLURDMTZBMiAgICAgKGJhc2UgMTYpCQlNZWR0cm9uaWMgRGlhYmV0ZXMKLQkJCQkxODAwMCBEZXZvbnNoaXJlIFN0Ci0JCQkJTm9ydGhyaWRnZSBDQSA5MTMyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotREMtMUQtOUYgICAoaGV4KQkJVSAmIEIgdGVjaAotREMxRDlGICAgICAoYmFzZSAxNikJCVUgJiBCIHRlY2gKLQkJCQkyRiwgRGFleW91bmcgYnVsaWRpbmcsIDE0MjMtNiwgS3dhbnlhbmctMURvbmcsCi0JCQkJRG9uZ0FuLUd1LAotCQkJCUFueWFuZy1TaSBHeWVvbmdnaS1EbyA0MzEtMDYxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLURDLTIwLTA4ICAgKGhleCkJCUFTRCBFbGVjdHJvbmljcyBMdGQgCi1EQzIwMDggICAgIChiYXNlIDE2KQkJQVNEIEVsZWN0cm9uaWNzIEx0ZCAKLQkJCQlERURFIElORFVTVFJJQUwgUEFSSyxKSUFOJ0FOIFJPQUQsSElHSC1URUNICi0JCQkJSU5EVVNUUklBTCBQQVJLLEZVWU9ORyBUT1dOLEJBTydBTiBESVNUUklDVCwKLQkJCQlTaGVuemhlbiAgR3VhbmcgRG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi1EQy0yQi02MSAgIChoZXgpCQlBcHBsZQotREMyQjYxICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EQy0yQi02NiAgIChoZXgpCQlJbmZvYmxvY2sKLURDMkI2NiAgICAgKGJhc2UgMTYpCQlJbmZvYmxvY2sKLQkJCQlIZWdlbCAyMjkgLSAxMAotCQkJCUNoYXB1bHRlcGVjIE1vcmFsZXMKLQkJCQlNZXhpY28gQ2l0eSBEaXN0cml0byBGZWRlcmFsIDExNTcwCi0JCQkJTUVYSUNPCi0KLURDLTJDLTI2ICAgKGhleCkJCUl0b24gVGVjaG5vbG9neSBMaW1pdGVkCi1EQzJDMjYgICAgIChiYXNlIDE2KQkJSXRvbiBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlSb29tIDEwRSwgSmluZ0ZlbmcgQnVpbGRpbmcsIAotCQkJCUJpbmhlIFJvYWQsIEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwMzQKLQkJCQlDSElOQQotCi1EQy0zMy01MCAgIChoZXgpCQlUZWNoU0FUIEdtYkgKLURDMzM1MCAgICAgKGJhc2UgMTYpCQlUZWNoU0FUIEdtYkgKLQkJCQlHcnViZXIgU3RyLiA0NmMKLQkJCQlQb2luZyBCWSA4NTU4NgotCQkJCUdFUk1BTlkKLQotREMtM0MtODQgICAoaGV4KQkJVGljb20gR2VvbWF0aWNzLCBJbmMuCi1EQzNDODQgICAgIChiYXNlIDE2KQkJVGljb20gR2VvbWF0aWNzLCBJbmMuCi0JCQkJOTEzMCBKb2xseXZpbGxlIFJkLiBTdGUuIDMwMAotCQkJCUF1c3RpbiBUZXhhcyA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotREMtNDktQzkgICAoaGV4KQkJQ0FTQ08gU0lHTkFMIExURAotREM0OUM5ICAgICAoYmFzZSAxNikJCUNBU0NPIFNJR05BTCBMVEQKLQkJCQlOby40ODkgWGl6YW5nIEJlaSBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDA3MQotCQkJCUNISU5BCi0KLURDLTRFLURFICAgKGhleCkJCVNISU5ZRUkgVEVDSE5PTE9HWSBDTy4sIExURC4KLURDNEVERSAgICAgKGJhc2UgMTYpCQlTSElOWUVJIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJNi01LTIsIE1JTkFUT0pJTUEtTUlOQU1JTUFDSEksIENIVU8tS1UKLQkJCQlLT0JFIEhZT0dPIDY1MC0wMDQ3Ci0JCQkJSkFQQU4KLQotREMtN0ItOTQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotREM3Qjk0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotREMtOUItMUUgICAoaGV4KQkJSW50ZXJjb20sIEluYy4KLURDOUIxRSAgICAgKGJhc2UgMTYpCQlJbnRlcmNvbSwgSW5jLgotCQkJCVNvcmltYWNoaSBCbGRnLiwgMy01LCBUYWl0byAxLWNob21lLCAKLQkJCQlUYWl0by1rdSBUb2t5byAxMTAtODY1NAotCQkJCUpBUEFOCi0KLURDLTlDLTUyICAgKGhleCkJCVNhcHBoaXJlIFRlY2hub2xvZ3kgTGltaXRlZC4KLURDOUM1MiAgICAgKGJhc2UgMTYpCQlTYXBwaGlyZSBUZWNobm9sb2d5IExpbWl0ZWQuCi0JCQkJVW5pdCAxOTA5LTE5MTksIDE5L0YuLCBUb3dlciAyLCBHcmFuZCBDZW50cmFsIFBsYXphLAotCQkJCTEzOCBTaGF0aW4gUnVyYWwgQ29tbWl0dGVlIFJvYWQsIFNoYXRpbiwgTi5ULiwKLQkJCQlIT05HIEtPTkcKLQotREMtQTYtQkQgICAoaGV4KQkJQmVpamluZyBMYW5ibyBUZWNobm9sb2d5IENvLiwgTHRkLgotRENBNkJEICAgICAoYmFzZSAxNikJCUJlaWppbmcgTGFuYm8gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tLjMwMS5CaWRnLjROTy44IFNoYW5nZGkgV2VzdCBSb2FkLCBIYWlkaWFuICBEaXN0cmljdCwKLQkJCQlCZWlqaW5nIENpdHkgIDEwMDA4NQotCQkJCUNISU5BCi0KLURDLUE3LUQ5ICAgKGhleCkJCUNvbXByZXNzb3IgQ29udHJvbHMgQ29ycAotRENBN0Q5ICAgICAoYmFzZSAxNikJCUNvbXByZXNzb3IgQ29udHJvbHMgQ29ycAotCQkJCTQ3MjUgMTIxc3QgU3RyZWV0Ci0JCQkJRGVzIE1vaW5lcyBJb3dhIDUwMzIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EQy1BOS03MSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLURDQTk3MSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLURDLUNCLUE4ICAgKGhleCkJCUV4cGxvcmEgVGVjaG5vbG9naWVzIEluYwotRENDQkE4ICAgICAoYmFzZSAxNikJCUV4cGxvcmEgVGVjaG5vbG9naWVzIEluYwotCQkJCTM2MCwgRnJhbnF1ZXQgU3RyZWV0Ci0JCQkJU3VpdGUgMjAKLQkJCQlRdWViZWMgIEcxUCA0TjMKLQkJCQlDQU5BREEKLQotREMtQ0UtNDEgICAoaGV4KQkJRkUgR0xPQkFMIEhPTkcgS09ORyBMSU1JVEVECi1EQ0NFNDEgICAgIChiYXNlIDE2KQkJRkUgR0xPQkFMIEhPTkcgS09ORyBMSU1JVEVECi0JCQkJRkxBVCAyMDQtMjA1IDIvRiBMQUZPUkQgQ0VOVFJFODM4IExBSSBDSEkgS09LIFJEIENIRVVORyBTSEEgV0FOIEtMCi0JCQkJU0hFTlpIRU4gIDUxODA1NwotCQkJCUNISU5BCi0KLURDLUNGLTk0ICAgKGhleCkJCUJlaWppbmcgUm9uZ2NoZW5nIEh1dG9uZyBUZWNobm9sb2d5IENvLiwgTHRkLgotRENDRjk0ICAgICAoYmFzZSAxNikJCUJlaWppbmcgUm9uZ2NoZW5nIEh1dG9uZyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVJvb20gNDAxQSxCdWlsZGluZyBOby40LFlhcmQgTm8uNSwKLQkJCQlZb25nZmVuZyBSb2FkLCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDI0Ci0JCQkJQ0hJTkEKLQotREMtRDAtRjcgICAoaGV4KQkJQmVudGVrIFN5c3RlbXMgTHRkLgotRENEMEY3ICAgICAoYmFzZSAxNikJCUJlbnRlayBTeXN0ZW1zIEx0ZC4KLQkJCQkzMTUgLSAzNzUwIDQ2dGggQXZlLiBTRQotCQkJCUNhbGdhcnkgQUIgVDJCIDBMMQotCQkJCUNBTkFEQQotCi1EQy1EMy0yMSAgIChoZXgpCQlIVU1BWCBjby4sdGxkCi1EQ0QzMjEgICAgIChiYXNlIDE2KQkJSFVNQVggY28uLHRsZAotCQkJCUhVTUFYIFZpbGxhZ2UsIDExLTQsIFN1bmFlLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLURDLUQ4LTdGICAgKGhleCkJCVNoZW56aGVuIEpvaW5DeWJlciBUZWxlY29tIEVxdWlwbWVudCBMdGQKLURDRDg3RiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBKb2luQ3liZXIgVGVsZWNvbSBFcXVpcG1lbnQgTHRkCi0JCQkJMTlDREUsIEJsb2NrIEEsSmluRmVuZ0J1aWxkaW5nLHNoYW5nYnUgU291dGggUm9hZCxGdXRpYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzMQotCQkJCUNISU5BCi0KLURDLURFLUNBICAgKGhleCkJCUFreWxsb3IKLURDREVDQSAgICAgKGJhc2UgMTYpCQlBa3lsbG9yCi0JCQkJQnJpdGFubmlhIEhvdXNlLCAyMiwgMkYsIENhdG9yIFJvYWQKLQkJCQlCYW5kYXIgU2VyaSBCZWdhd2FuIEJTICA4ODExCi0JCQkJQlJVTkVJIERBUlVTU0FMQU0KLQotREMtRTItQUMgICAoaGV4KQkJTHVtZW5zIERpZ2l0YWwgT3B0aWNzIEluYy4KLURDRTJBQyAgICAgKGJhc2UgMTYpCQlMdW1lbnMgRGlnaXRhbCBPcHRpY3MgSW5jLgotCQkJCTVGLCBOby4zNSwgU2ludGFpIFJkLiwgSmh1YmVpIENpdHkKLQkJCQlKaHViZWkgIEhzaW5DaHUgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1EQy1FNy0xQyAgIChoZXgpCQlBVUcgRWxla3Ryb25payBHbWJICi1EQ0U3MUMgICAgIChiYXNlIDE2KQkJQVVHIEVsZWt0cm9uaWsgR21iSAotCQkJCUtsZWlud29lbGxtaXNzIDUzCi0JCQkJU3QuIE1hcnRpbiBhLiBXLiBTdHlyaWEgQS04NTgwCi0JCQkJQVVTVFJJQQotCi1EQy1GQS1ENSAgIChoZXgpCQlTVFJPTkcgR2VzLm0uYi5ILgotRENGQUQ1ICAgICAoYmFzZSAxNikJCVNUUk9ORyBHZXMubS5iLkguCi0JCQkJRnJhbnotSm9zZWZzLUthaSAxCi0JCQkJVmllbm5hICAxMDEwCi0JCQkJQVVTVFJJQQotCi1FMC0wNS1DNSAgIChoZXgpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotRTAwNUM1ICAgICAoYmFzZSAxNikJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJQnVpbGRpbmcgNywgU2Vjb25kIFBhcnQsIEhvbmdodWFsaW5nIEluZHVzdHJpYWwgWm9uZQotCQkJCVhpbGkgdG93biwgTmFuc2hhbiwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLUUwLTBDLTdGICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotRTAwQzdGICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLUUwLTE0LTNFICAgKGhleCkJCU1vZG9vc2lzIEluYy4KLUUwMTQzRSAgICAgKGJhc2UgMTYpCQlNb2Rvb3NpcyBJbmMuCi0JCQkJIzMwMiwgU2FtaWwgQmxkZy4sIDY1Ni0yODIKLQkJCQlTZW9uZ3Nvby1kb25nIDEgZ2EsIFNlb25nZG9uZy1ndQotCQkJCVNlb3VsICAxMzMtMTEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUUwLTFDLUVFICAgKGhleCkJCUJyYXZvIFRlY2gsIEluYy4KLUUwMUNFRSAgICAgKGJhc2UgMTYpCQlCcmF2byBUZWNoLCBJbmMuCi0JCQkJNjE4NSBQaHlsbGlzIERyLiBVbml0IEQuCi0JCQkJQ3lwcmVzcyBDQSA5MDYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtMUYtMEEgICAoaGV4KQkJWHNsZW50IEVuZXJneSBUZWNobm9sb2dpZXMuIExMQwotRTAxRjBBICAgICAoYmFzZSAxNikJCVhzbGVudCBFbmVyZ3kgVGVjaG5vbG9naWVzLiBMTEMKLQkJCQk3NDI4IFJlZHdvb2QgQmx2ZAotCQkJCVN1aXRlIDEwMgotCQkJCU5vdmF0byBDQSA5NDk0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtMjUtMzggICAoaGV4KQkJVGl0YW4gUGV0IFByb2R1Y3RzCi1FMDI1MzggICAgIChiYXNlIDE2KQkJVGl0YW4gUGV0IFByb2R1Y3RzCi0JCQkJNjUyMSBDcmVlZG1vb3IgUmQuIFN1aXRlIDEwMQotCQkJCVJhbGVpZ2ggTkMgMjc2MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLTI2LTMwICAgKGhleCkJCUludHJpZ3VlIFRlY2hub2xvZ2llcywgSW5jLgotRTAyNjMwICAgICAoYmFzZSAxNikJCUludHJpZ3VlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTgwMCBPbGQgUG9uZCBSb2FkCi0JCQkJIzcwNQotCQkJCUJyaWRnZXZpbGxlIFBBIDE1MDE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC0yNi0zNiAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLUUwMjYzNiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlDQVJSRVRFUkEgQkFTRSBBRVJFQSAjIDU4NTAKLQkJCQlaYXBvcGFuIEphbGlzY28gNDQxMzAKLQkJCQlNRVhJQ08KLQotRTAtMjctMUEgICAoaGV4KQkJVFRDIE5leHQtZ2VuZXJhdGlvbiBIb21lIE5ldHdvcmsgU3lzdGVtIFdHCi1FMDI3MUEgICAgIChiYXNlIDE2KQkJVFRDIE5leHQtZ2VuZXJhdGlvbiBIb21lIE5ldHdvcmsgU3lzdGVtIFdHCi0JCQkJMS0xLTEyIFNoaWJhIEtvdWVuCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNS0wMDExCi0JCQkJSkFQQU4KLQotRTAtMkEtODIgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi1FMDJBODIgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSwgU0VDLjEsIFRBSVBJTkcgUkQuCi0JCQkJVFNBT1RVRU4KLQkJCQlOQU5UT1UgNTQyNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLTNFLTdEICAgKGhleCkJCWRhdGEtY29tcGxleCBHbWJICi1FMDNFN0QgICAgIChiYXNlIDE2KQkJZGF0YS1jb21wbGV4IEdtYkgKLQkJCQlEaT9vZXN0ZXJuZ3JhYmVuIDcKLQkJCQlIYWxiZXJzdGFkdCBTYWNoc2VuLUFuaGFsdCAzODgyMAotCQkJCUdFUk1BTlkKLQotRTAtNDYtOUEgICAoaGV4KQkJTkVUR0VBUgotRTA0NjlBICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBTElGT1JOSUEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLTU4LTlFICAgKGhleCkJCUxhZXJkYWwgTWVkaWNhbAotRTA1ODlFICAgICAoYmFzZSAxNikJCUxhZXJkYWwgTWVkaWNhbAotCQkJCVRhbmtlIFN2aWxhbmRzZ2F0ZSAzMAotCQkJCVN0YXZhbmdlciAgNDAwMgotCQkJCU5PUldBWQotCi1FMC01Qi03MCAgIChoZXgpCQlJbm5vdmlkLCBDby4sIEx0ZC4KLUUwNUI3MCAgICAgKGJhc2UgMTYpCQlJbm5vdmlkLCBDby4sIEx0ZC4KLQkJCQk1dGggRmxvb3IsIEJvZ2EgQnVpbGRpbmcsIDgyMS0zLCBCYW5nYmFlZG9uZywgU2VvY2hvZ3UKLQkJCQlTZW91bCAgMTM3LTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FMC01Ri1COSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1FMDVGQjkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC02MS1CMiAgIChoZXgpCQlIQU5HWkhPVSBaRU5PSU5URUwgVEVDSE5PTE9HWSBDTy4sIExURAotRTA2MUIyICAgICAoYmFzZSAxNikJCUhBTkdaSE9VIFpFTk9JTlRFTCBURUNITk9MT0dZIENPLiwgTFRECi0JCQkJUm9vbSA4MDYsIEYjLCBDYW1icmlkZ2UgQ29tYnJpZGdlLCBTaGVuaHVhIFJvYWQsRGlzdHJpY3QgWGlodSwgCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDMwCi0JCQkJQ0hJTkEKLQotRTAtNjItOTAgICAoaGV4KQkJSmluYW4gSm92aXNpb24gU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1FMDYyOTAgICAgIChiYXNlIDE2KQkJSmluYW4gSm92aXNpb24gU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJUm9vbSA0MDcsIFRvd2VyIEMsIEN5YmVyIFBvcnQgQnVpbGRpbmcsCi0JCQkJNDcgU2hhbmRhIFJkCi0JCQkJSmluYW4gU2hhbmRvbmcgMjUwMDEzCi0JCQkJQ0hJTkEKLQotRTAtNjQtQkIgICAoaGV4KQkJRGlnaVZpZXcgUy5yLmwuCi1FMDY0QkIgICAgIChiYXNlIDE2KQkJRGlnaVZpZXcgUy5yLmwuCi0JCQkJVmlhIFNlbmlnYWxsaWEgMTgvMgotCQkJCU1pbGFubyAgMjAxNjEKLQkJCQlJVEFMWQotCi1FMC02OS05NSAgIChoZXgpCQlQRUdBVFJPTiBDT1JQT1JBVElPTgotRTA2OTk1ICAgICAoYmFzZSAxNikJCVBFR0FUUk9OIENPUlBPUkFUSU9OCi0JCQkJTm8uIDc2LCBMaWdvbmcgU3QuLCBCZWl0b3UsIAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FMC04Ny1CMSAgIChoZXgpCQlOYXRhLUluZm8gTHRkLgotRTA4N0IxICAgICAoYmFzZSAxNikJCU5hdGEtSW5mbyBMdGQuCi0JCQkJMjgsIFByb2tob3JvdmEgc3RyLgotCQkJCVlvc2hrYXItT2xhIFJlcHVibGljIE1hcmktRWwgNDI0MDA3Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLUUwLThBLTdFICAgKGhleCkJCUV4cG9uZW50Ci1FMDhBN0UgICAgIChiYXNlIDE2KQkJRXhwb25lbnQKLQkJCQkxNDkgQ29tbW9ud2VhbHRoIERyaXZlCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtOEYtRUMgICAoaGV4KQkJUkVQT1RFQyBDTy4sIExURC4KLUUwOEZFQyAgICAgKGJhc2UgMTYpCQlSRVBPVEVDIENPLiwgTFRELgotCQkJCTNGLCAyNTguIAotCQkJCUxJQU4gQ0hFTiBSRC4gCi0JCQkJQ0hVTkcgSE8gQ0lUWSwgVEFJUEVJIENPVU5UWSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FMC05MS01MyAgIChoZXgpCQlYQVZpIFRlY2hub2xvZ2llcyBDb3JwLgotRTA5MTUzICAgICAoYmFzZSAxNikJCVhBVmkgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJOUYsIE5vLiAxMjksIEhzaW5nIFRlIFJkLCBTYW5jaHVuZyBDaXR5Ci0JCQkJVGFpcGVpICAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLTkxLUY1ICAgKGhleCkJCU5FVEdFQVIKLUUwOTFGNSAgICAgKGJhc2UgMTYpCQlORVRHRUFSCi0JCQkJMzUwIEVBU1QgUExVTUVSSUEgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQUxJRk9STklBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC1BMS1ENyAgIChoZXgpCQlTRlIKLUUwQTFENyAgICAgKGJhc2UgMTYpCQlTRlIKLQkJCQk0MC80MiBRdWFpIGR1IHBvaW50IGR1IGpvdXIKLQkJCQlCb3Vsb2duZSBCaWxsYW5jb3VydCBIYXV0cyBkZSBTZWluZSA5MjY1OQotCQkJCUZSQU5DRQotCi1FMC1BNi03MCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRTBBNjcwICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi1FMC1BQi1GRSAgIChoZXgpCQlPcmIgTmV0d29ya3MsIEluYy4KLUUwQUJGRSAgICAgKGJhc2UgMTYpCQlPcmIgTmV0d29ya3MsIEluYy4KLQkJCQk0MjggMTN0aCBTdHJlZXQKLQkJCQkzcmQgRmxvb3IKLQkJCQlPYWtsYW5kIENBIDk0NjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC1COS1BNSAgIChoZXgpCQlBenVyZXdhdmUKLUUwQjlBNSAgICAgKGJhc2UgMTYpCQlBenVyZXdhdmUKLQkJCQk4Ri4sIEJhb3pob25nIFJkLgotCQkJCVhpbmRpYW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTAtQkMtNDMgICAoaGV4KQkJQzIgTWljcm9zeXN0ZW1zLCBJbmMuCi1FMEJDNDMgICAgIChiYXNlIDE2KQkJQzIgTWljcm9zeXN0ZW1zLCBJbmMuCi0JCQkJMjgzMyBKdW5jdGlvbiBBdmVudWUKLQkJCQlTdWl0ZSAxMDEKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC1DMi04NiAgIChoZXgpCQlBaXNhaSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1FMEMyODYgICAgIChiYXNlIDE2KQkJQWlzYWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVJvb20gMjYxMCBBc2lhIFRyYWRlIENlbnRyZSwKLQkJCQk3OSBMaSBNdWsgUm9hZCwKLQkJCQlLd2FpIENodW5nIE4uVC4gODUyCi0JCQkJSE9ORyBLT05HCi0KLUUwLUM5LTIyICAgKGhleCkJCUppcmVoIEVuZXJneSBUZWNoLiwgTHRkLgotRTBDOTIyICAgICAoYmFzZSAxNikJCUppcmVoIEVuZXJneSBUZWNoLiwgTHRkLgotCQkJCSM2MDYgU2VvdWwgRm9yZXN0IEhhbGxhc2lnbWF2YWxsZXksIDMyNS0yCi0JCQkJU2VvbmdzdS1kb25nIDIoaSktZ2EsIAotCQkJCVNlb3VsIFNlb25nZG9uZy1HdSAxMzMtMTIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUUwLUNBLTREICAgKGhleCkJCVNoZW56aGVuIFVuaXN0YXIgQ29tbXVuaWNhdGlvbiBDby4sTFRECi1FMENBNEQgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gVW5pc3RhciBDb21tdW5pY2F0aW9uIENvLixMVEQKLQkJCQk5L0YsUWluZ2hhaSBCdWlsZGluZyw3MDQzLCBCZXJodWFuIFJvYWQsIEZ1dGlhbiBEaXN0cmljdCwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzNAotCQkJCUNISU5BCi0KLUUwLUNBLTk0ICAgKGhleCkJCUFza2V5IENvbXB1dGVyCi1FMENBOTQgICAgIChiYXNlIDE2KQkJQXNrZXkgQ29tcHV0ZXIKLQkJCQkxMEYsTk8uMTE5LENISUVOS0FORyBSRCxDSFVORy1ITyBDSVRZLCAKLQkJCQlUQUlQRUkgQ09VTlRZIDIzNTg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FMC1DQi00RSAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLUUwQ0I0RSAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91LCAKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTAtQ0YtMkQgICAoaGV4KQkJR2VtaW50ZWsgQ29ycG9yYXRpb24KLUUwQ0YyRCAgICAgKGJhc2UgMTYpCQlHZW1pbnRlayBDb3Jwb3JhdGlvbgotCQkJCTVGLTEsIE5vLjgsIEFsbGV5IDMwLCBMYW5lIDM1OCwgUnVlaWd1YW5nIFJkLgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FMC1EMS0wQSAgIChoZXgpCQlLYXRvdWRlbmtpa291Z3lvdXN5byBjbyBsdGQKLUUwRDEwQSAgICAgKGJhc2UgMTYpCQlLYXRvdWRlbmtpa291Z3lvdXN5byBjbyBsdGQKLQkJCQlvdWppaG9udHlvdTEtNC0xMwotCQkJCWtpdGEta3UgdG9reW8tdG8gMTE0LTAwMjIKLQkJCQlKQVBBTgotCi1FMC1ENy1CQSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotRTBEN0JBICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJTVMgODcyMwotCQkJCURhbGxhcyBUZXhhcyA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtRTctNTEgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi1FMEU3NTEgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotRTAtRTgtRTggICAoaGV4KQkJT2xpdmUgVGVsZWNvbW11bmljYXRpb24gUHZ0LiBMdGQKLUUwRThFOCAgICAgKGJhc2UgMTYpCQlPbGl2ZSBUZWxlY29tbXVuaWNhdGlvbiBQdnQuIEx0ZAotCQkJCTg2MiwgVWR5b2cgVmloYXIKLQkJCQlQaGFzZSAtIFYKLQkJCQlHdXJnYW9uIEhhcnlhbmEgMTIyMDE2Ci0JCQkJSU5ESUEKLQotRTAtRUUtMUIgICAoaGV4KQkJUGFuYXNvbmljIEF1dG9tb3RpdmUgU3lzdGVtcyBDb21wYW55IG9mIEFtZXJpY2EKLUUwRUUxQiAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgQXV0b21vdGl2ZSBTeXN0ZW1zIENvbXBhbnkgb2YgQW1lcmljYQotCQkJCTc3NiBIaWdod2F5IDc0IFNvdXRoCi0JCQkJUGVhY2h0cmVlIENpdHkgR2VvcmdpYSAzMDI2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtRjItMTEgICAoaGV4KQkJRGlnaXRhbHdhdHQKLUUwRjIxMSAgICAgKGJhc2UgMTYpCQlEaWdpdGFsd2F0dAotCQkJCVZpYSBEYW50ZSwgMTgKLQkJCQlSZW5hdGUgQnJpYW56YSBNQiAyMDA1NQotCQkJCUlUQUxZCi0KLUUwLUYzLTc5ICAgKGhleCkJCVZhZGRpbwotRTBGMzc5ICAgICAoYmFzZSAxNikJCVZhZGRpbwotCQkJCTk0MzMgU2NpZW5jZSBDZW50ZXIgRHJpdmUKLQkJCQlOZXcgSG9wZSBNTiA1NTQyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtRjgtNDcgICAoaGV4KQkJQXBwbGUgSW5jCi1FMEY4NDcgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC0xMi04OSAgIChoZXgpCQl0b3BzeXN0ZW0gU3lzdGVtaGF1cyBHbWJICi1FNDEyODkgICAgIChiYXNlIDE2KQkJdG9wc3lzdGVtIFN5c3RlbWhhdXMgR21iSAotCQkJCU1vbm5ldHN0cmFpP29lZSAyNAotCQkJCVdpP29lcnNlbGVuIE5SVyA1MjE0NgotCQkJCUdFUk1BTlkKLQotRTQtMUMtNEIgICAoaGV4KQkJVjIgVEVDSE5PTE9HWSwgSU5DLgotRTQxQzRCICAgICAoYmFzZSAxNikJCVYyIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk0NDUwIEVudGVycHJpc2UgU3RyZWV0Ci0JCQkJU3VpdGUgMTAxCi0JCQkJRnJlbW9udCBDYWxpZm9ybmlhIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC0xRi0xMyAgIChoZXgpCQlJQk0gQ29ycAotRTQxRjEzICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUmQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTQtMjctNzEgICAoaGV4KQkJU21hcnRsYWJzCi1FNDI3NzEgICAgIChiYXNlIDE2KQkJU21hcnRsYWJzCi0JCQkJNzIsIE9rdHlhYnJza2F5YSBTdHJlZXQKLQkJCQlNb3Njb3cgIDEyNzUyMQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1FNC0yQS1EMyAgIChoZXgpCQlNYWduZXRpIE1hcmVsbGkgUy5wLkEuIFBvd2VydHJhaW4KLUU0MkFEMyAgICAgKGJhc2UgMTYpCQlNYWduZXRpIE1hcmVsbGkgUy5wLkEuIFBvd2VydHJhaW4KLQkJCQlWaWEgZGVsIFRpbWF2byAzMwotCQkJCUJvbG9nbmEgIDQwMTI4Ci0JCQkJSVRBTFkKLQotRTQtMkYtRjYgICAoaGV4KQkJVW5pY29yZSBjb21tdW5pY2F0aW9uIEluYy4KLUU0MkZGNiAgICAgKGJhc2UgMTYpCQlVbmljb3JlIGNvbW11bmljYXRpb24gSW5jLgotCQkJCVJtLjMxMiBCdWlsZGluZyAyIElSSUNPLCBOby4xMVN0LjQsU2hhbmdkaSwgSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi1FNC0zNS05MyAgIChoZXgpCQlIYW5nemhvdSBHb1RvIHRlY2hub2xvZ3kgQ28uTHRkCi1FNDM1OTMgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgR29UbyB0ZWNobm9sb2d5IENvLkx0ZAotCQkJCVJvb20xMzAzLEJvZWUgYnVpbGRpbmcsMzc2MCBOYW5odWFuIFJvYWQsIEJpbmppYW5nLCAKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwNTMKLQkJCQlDSElOQQotCi1FNC0zNy1ENyAgIChoZXgpCQlIRU5SSSBERVBBRVBFIFMuQS5TLgotRTQzN0Q3ICAgICAoYmFzZSAxNikJCUhFTlJJIERFUEFFUEUgUy5BLlMuCi0JCQkJNzUvNzcgUlVFIERVIFBSRSBCUk9DSEVUCi0JCQkJU0FOTk9JUyAgOTUxMTIKLQkJCQlGUkFOQ0UKLQotRTQtNDEtRTYgICAoaGV4KQkJT3R0ZWMgVGVjaG5vbG9neSBHbWJICi1FNDQxRTYgICAgIChiYXNlIDE2KQkJT3R0ZWMgVGVjaG5vbG9neSBHbWJICi0JCQkJUGxhbmV0ZW5yaW5nIDEyCi0JCQkJUm9ubmVuYmVyZyBMb3dlciBTYXhvbnkgMzA5NTIKLQkJCQlHRVJNQU5ZCi0KLUU0LTQ2LUJEICAgKGhleCkJCUMmQyBURUNITklDIFRBSVdBTiBDTy4sIExURC4KLUU0NDZCRCAgICAgKGJhc2UgMTYpCQlDJkMgVEVDSE5JQyBUQUlXQU4gQ08uLCBMVEQuCi0JCQkJUk9PTTYgMTNGLCBOTy4yLEppYW4gOHRoIFJPQUQKLQkJCQlUYWlwZWkgQ2h1bmdobyBDaXR5LCAgMjM1MTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUU0LTQ4LUM3ICAgKGhleCkJCUNpc2NvIFNQVlRHCi1FNDQ4QzcgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHZW9yZ2lhIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC00Ri0yOSAgIChoZXgpCQlNQSBMaWdodGluZyBUZWNobm9sb2d5IEdtYkgKLUU0NEYyOSAgICAgKGJhc2UgMTYpCQlNQSBMaWdodGluZyBUZWNobm9sb2d5IEdtYkgKLQkJCQlEYWNoZGVja2Vyc3RyLjE2Ci0JCQkJV2FsZGJpP29ldHRlbGJydW5uIEJhdmFyaWEgOTcyOTcKLQkJCQlHRVJNQU5ZCi0KLUU0LTY0LTQ5ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi1FNDY0NDkgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC02Qy0yMSAgIChoZXgpCQltZXNzTWEgR21iSAotRTQ2QzIxICAgICAoYmFzZSAxNikJCW1lc3NNYSBHbWJICi0JCQkJQW0gU3RhZHRmZWxkIDgKLQkJCQlJeGxlYmVuIFNhY2hzZW4tQW5oYWx0IDM5MTY3Ci0JCQkJR0VSTUFOWQotCi1FNC03NS0xRSAgIChoZXgpCQlHZXRpbmdlIFN0ZXJpbGl6YXRpb24gQUIKLUU0NzUxRSAgICAgKGJhc2UgMTYpCQlHZXRpbmdlIFN0ZXJpbGl6YXRpb24gQUIKLQkJCQlCb3ggNjkKLQkJCQlHZXRpbmdlICAzMTA0NAotCQkJCVNXRURFTgotCi1FNC03Qy1GOSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi1FNDdDRjkgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIExURAotCQkJCTQxNiwgTWFldGFuLTNkb25nLCBZZW9uZ3RvbmctZ3UKLQkJCQlTdXdvbi1DaXR5LCAKLQkJCQlTdXdvbiBHeWVvbmdnaS1kbyA0NDM3NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTQtODMtOTkgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLUU0ODM5OSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LThBLUQ1ICAgKGhleCkJCVJGIFdJTkRPVyBDTy4sIExURC4KLUU0OEFENSAgICAgKGJhc2UgMTYpCQlSRiBXSU5ET1cgQ08uLCBMVEQuCi0JCQkJMTRGLCBEYWVydW5nIFBvc3R0b3dlcjMKLQkJCQkxODItNCwgR3Vyby1kb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi03NDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTQtOTctRjAgICAoaGV4KQkJU2hhbmdoYWkgVkxDIFRlY2hub2xvZ2llcyBMdGQuIENvLgotRTQ5N0YwICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFZMQyBUZWNobm9sb2dpZXMgTHRkLiBDby4KLQkJCQlSb29tIDkwMSwgQi1ab25lLCBFYXN0IEJlaWppbmcgUm9hZAotCQkJCUh1YW5ncHUgRGlzdC4KLQkJCQlTaGFuZ2hhaSAgMjAwMDAxCi0JCQkJQ0hJTkEKLQotRTQtQTUtRUYgICAoaGV4KQkJVFJPTiBMSU5LIEVMRUNUUk9OSUNTIENPLiwgTFRELgotRTRBNUVGICAgICAoYmFzZSAxNikJCVRST04gTElOSyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQlGTEFUIEEsIDIwL0YuLCBCTE9DSyA0LE9OIE5JTkcgR0FSREVOLAotCQkJCTEwIFNIRVVORyBOSU5HIFJPQUQsVFNFVU5HIEtXQU4gTywKLQkJCQlLT1dMT09OICA5OTkwNzcKLQkJCQlIT05HIEtPTkcKLQotRTQtQUItNDYgICAoaGV4KQkJVUFCIFNlbHRla2EKLUU0QUI0NiAgICAgKGJhc2UgMTYpCQlVQUIgU2VsdGVrYQotCQkJCURyYXVneXN0aT9vZXMgZy4gMTkKLQkJCQlLYXVuYXMgIExULTUxMjMwIAotCQkJCUxJVEhVQU5JQQotCi1FNC1BRC03RCAgIChoZXgpCQlTQ0wgRWxlbWVudHMKLUU0QUQ3RCAgICAgKGJhc2UgMTYpCQlTQ0wgRWxlbWVudHMKLQkJCQk1ODAwIFN0LURlbmlzLCAjMjIyCi0JCQkJTW9udHJlYWwgUXVlYmVjIEgyUzNsNQotCQkJCUNBTkFEQQotCi1FNC1DRS04RiAgIChoZXgpCQlBcHBsZSBJbmMgCi1FNENFOEYgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jIAotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LUQ3LTFEICAgKGhleCkJCU9yYXlhIFRoZXJhcGV1dGljcwotRTRENzFEICAgICAoYmFzZSAxNikJCU9yYXlhIFRoZXJhcGV1dGljcwotCQkJCTgwMDAgSmFydmlzIEF2ZW51ZSAgU3RlLiAyMDAKLQkJCQlOZXdhcmsgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LURELTc5ICAgKGhleCkJCUVuLVZpc2lvbiBBbWVyaWNhLCBJbmMuCi1FNERENzkgICAgIChiYXNlIDE2KQkJRW4tVmlzaW9uIEFtZXJpY2EsIEluYy4KLQkJCQkxODQ1IEhvdmV5IEF2ZQotCQkJCU5vcm1hbCBJTCA2MTc2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTQtRTAtQzUgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIExURAotRTRFMEM1ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLQkJCQk0MTYsIE1hZXRhbi0zZG9uZywgWWVvbmd0b25nLWd1Ci0JCQkJU3V3b24gR3llb25nZ2ktZG8gNDQzNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUU0LUVDLTEwICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1FNEVDMTAgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotRTQtRkYtREQgICAoaGV4KQkJRUxFQ1RST04gSU5ESUEKLUU0RkZERCAgICAgKGJhc2UgMTYpCQlFTEVDVFJPTiBJTkRJQQotCQkJCVRZUEUgSUksIE5PLjksIERSLiBWLlMuSS4gRVNUQVRFCi0JCQkJVEhJUlVWQU5NSVlVUgotCQkJCUNIRU5OQUkgVEFNSUwgTkFEVSA2MDAgMDQxCi0JCQkJSU5ESUEKLQotRTgtMDQtMEIgICAoaGV4KQkJQXBwbGUgSW5jCi1FODA0MEIgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FOC0wNC02MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1FODA0NjIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FOC0wNS02RCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLUU4MDU2RCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlDQVJSRVRFUkEgQkFTRSBBRVJFQSAjIDU4NTAKLQkJCQlaYXBvcGFuIEphbGlzY28gNDQxMzAKLQkJCQlNRVhJQ08KLQotRTgtMDYtODggICAoaGV4KQkJQXBwbGUgSW5jLiAKLUU4MDY4OCAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMuIAotCQkJCU9uZSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FOC0wQi0xMyAgIChoZXgpCQlBa2liIFN5c3RlbXMgVGFpd2FuLCBJTkMKLUU4MEIxMyAgICAgKGJhc2UgMTYpCQlBa2liIFN5c3RlbXMgVGFpd2FuLCBJTkMKLQkJCQlOby41ODItMSwgUnVpR3VhbmcgUmQKLQkJCQlOZWlIdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FOC0wQy0zOCAgIChoZXgpCQlEQUVZT1VORyBJTkZPUk1BVElPTiBTWVNURU0gQ08uLCBMVEQKLUU4MEMzOCAgICAgKGJhc2UgMTYpCQlEQUVZT1VORyBJTkZPUk1BVElPTiBTWVNURU0gQ08uLCBMVEQKLQkJCQkjODI2IFRBTU5JUC1ET05HLCBZVVNFT05HLUdPLCAKLQkJCQlEQUVKT04gIDMwNS01MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTgtMTEtMzIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTFRECi1FODExMzIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTFRECi0JCQkJNDE2LCBNYWV0YW5nLTNEb25nLCBZZW9uZ29uLUd1Ci0JCQkJU3V3b24gR3llb25nZ2ktRG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FOC0yOC03NyAgIChoZXgpCQlUTVkgQ28uLCBMdGQuCi1FODI4NzcgICAgIChiYXNlIDE2KQkJVE1ZIENvLiwgTHRkLgotCQkJCUF0dGljIEJsZGcuIDNGLCAxLTItMTAgSXNlLWNobywKLQkJCQlBc2hpa2FnYS1zaGkgVG9jaGlnaSAzMjYtMDA1MwotCQkJCUpBUEFOCi0KLUU4LTI4LUQ1ICAgKGhleCkJCUNvdHMgVGVjaG5vbG9neQotRTgyOEQ1ICAgICAoYmFzZSAxNikJCUNvdHMgVGVjaG5vbG9neQotCQkJCUMtNzAyLCBCdW5kYW5nIFRlY2hubyBQYXJrLCAxNDUsCi0JCQkJWWF0YW9wLWRvbmcsIEJ1bmRhbmctZ3UsCi0JCQkJU3VuZ25hbS1DaXR5IEt5b3VuZ2dpLWRvIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTgtMzktREYgICAoaGV4KQkJQXNrZXkgQ29tcHV0ZXIKLUU4MzlERiAgICAgKGJhc2UgMTYpCQlBc2tleSBDb21wdXRlcgotCQkJCTEwRixOTy4xMTksQ0hJRU5LQU5HIFJELENIVU5HLUhPLAotCQkJCVRBSVBFSSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUU4LTNBLTk3ICAgKGhleCkJCU9DWiBUZWNobm9sb2d5IEdyb3VwCi1FODNBOTcgICAgIChiYXNlIDE2KQkJT0NaIFRlY2hub2xvZ3kgR3JvdXAKLQkJCQk2MzczIFNhbiBJZ25hY2lvIEF2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FOC0zRS1CNiAgIChoZXgpCQlSSU0KLUU4M0VCNiAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotRTgtNDAtNDAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRTg0MDQwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtNEUtMDYgICAoaGV4KQkJUFJJVkFURQotRTg0RTA2ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi1FOC00RS1DRSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLUU4NEVDRSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi1FOC01Qi01QiAgIChoZXgpCQlMRyBFTEVDVFJPTklDUyBJTkMKLUU4NUI1QiAgICAgKGJhc2UgMTYpCQlMRyBFTEVDVFJPTklDUyBJTkMKLQkJCQkxOS0xLCBDSEVPTkdITy1SSSwgSklOV0ktTVlFT04KLQkJCQlQWUVPTkdUQUVLIEdZRU9OR0dJLURPIDQ1MS03MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTgtNUUtNTMgICAoaGV4KQkJSW5mcmF0ZWMgRGF0ZW50ZWNobmlrIEdtYkgKLUU4NUU1MyAgICAgKGJhc2UgMTYpCQlJbmZyYXRlYyBEYXRlbnRlY2huaWsgR21iSAotCQkJCUdldmVuZXIgV2VnIDM4Ci0JCQkJTmV1ZW5yYWRlIE5SVyA1ODU3OQotCQkJCUdFUk1BTlkKLQotRTgtNkMtREEgICAoaGV4KQkJU3VwZXJjb21wdXRlcnMgYW5kIE5ldXJvY29tcHV0ZXJzIFJlc2VhcmNoIENlbnRlcgotRTg2Q0RBICAgICAoYmFzZSAxNikJCVN1cGVyY29tcHV0ZXJzIGFuZCBOZXVyb2NvbXB1dGVycyBSZXNlYXJjaCBDZW50ZXIKLQkJCQkyLCBDaGVraG92IHN0Ci0JCQkJVGFnYW5yb2cgIFJvc3Rvdi1vbi1Eb24gcmVnaW9uICAzNDc5MjIgCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLUU4LTc1LTdGICAgKGhleCkJCUZJUlMgVGVjaG5vbG9naWVzKFNoZW56aGVuKSBDby4sIEx0ZAotRTg3NTdGICAgICAoYmFzZSAxNikJCUZJUlMgVGVjaG5vbG9naWVzKFNoZW56aGVuKSBDby4sIEx0ZAotCQkJCVJtIDEyQSwgQXJlYSBBLCBIb25nc29uZyBCdXNpbmVzcyBCdWlsZGluZywgVGFpcmFuIDl0aCBSZCwgQ2hlZ29uZ21pYW8sIAotCQkJCUZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi1FOC03QS1GMyAgIChoZXgpCQlTNSBUZWNoIFMuci5sLgotRTg3QUYzICAgICAoYmFzZSAxNikJCVM1IFRlY2ggUy5yLmwuCi0JCQkJVmlhIFRvcnRvbmEgNzIKLQkJCQlNaWxhbm8gIDIwMTQ0Ci0JCQkJSVRBTFkKLQotRTgtOTQtNEMgICAoaGV4KQkJQ29nZW50IEhlYWx0aGNhcmUgU3lzdGVtcyBMdGQKLUU4OTQ0QyAgICAgKGJhc2UgMTYpCQlDb2dlbnQgSGVhbHRoY2FyZSBTeXN0ZW1zIEx0ZAotCQkJCTE0M2UgQXJ0aHVyIFJvYWQKLQkJCQlXaW5kc29yCi0JCQkJQmVya3NoaXJlICBTTDQgMVNFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotRTgtOTktNUEgICAoaGV4KQkJUGlpR0FCLCBQcm9jZXNzaW5mb3JtYXRpb24gaSBHb3RlYm9yZyBBQgotRTg5OTVBICAgICAoYmFzZSAxNikJCVBpaUdBQiwgUHJvY2Vzc2luZm9ybWF0aW9uIGkgR290ZWJvcmcgQUIKLQkJCQlBbmRlcnMgQ2FybHNzb25zIGdhdGEgMQotCQkJCUdvdGhlbmJ1cmcgIDQxNyA1NQotCQkJCVNXRURFTgotCi1FOC05QS04RiAgIChoZXgpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotRTg5QThGICAgICAoYmFzZSAxNikJCVF1YW50YSBDb21wdXRlciBJbmMuCi0JCQkJMjExLCBXZW4gSHdhIDJuZCBSZC4sS3VlaSBTaGFuLCBUYW8gWXVhbiAKLQkJCQlUQUlQRUkgIDMzMzc3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FOC05RC04NyAgIChoZXgpCQlUb3NoaWJhCi1FODlEODcgICAgIChiYXNlIDE2KQkJVG9zaGliYQotCQkJCTItOSxTdWVoaXJvLUNobwotCQkJCU9tZSBUb2t5byAxOTg4NzEwCi0JCQkJSkFQQU4KLQotRTgtQTQtQzEgICAoaGV4KQkJRGVlcCBTZWEgRWxlY3Ryb25pY3MgUExDCi1FOEE0QzEgICAgIChiYXNlIDE2KQkJRGVlcCBTZWEgRWxlY3Ryb25pY3MgUExDCi0JCQkJSGlnaGZpZWxkIEhvdXNlCi0JCQkJSHVubWFuYnkgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlIdW5tYW5ieSBOb3J0aCBZb3Jrc2hpcmUgWU8xNCAwUEgKLQkJCQlVTklURUQgS0lOR0RPTQotCi1FOC1CNC1BRSAgIChoZXgpCQlTaGVuemhlbiBDJkQgRWxlY3Ryb25pY3MgQ28uLEx0ZAotRThCNEFFICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEMmRCBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJQnVpbGRpbmcgMiwgWGlhIFlvdSBTb25nIE1vdW50YWluIFRvcCBJbmR1c3RyaWFsIERpc3RyaWN0LCBZb3UgU29uZyBWaWxsYWdlCi0JCQkJTG9uZ2h1YSwgQmFvIEFuCi0JCQkJU2hlbnpoZW4gR3VhbmcgRG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi1FOC1CNy00OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1FOEI3NDggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FOC1CQS03MCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1FOEJBNzAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtQkUtODEgICAoaGV4KQkJU0FHRU1DT00KLUU4QkU4MSAgICAgKGJhc2UgMTYpCQlTQUdFTUNPTQotCQkJCTI1MCByb3V0ZSBkZSBsJ0VtcGVyZXVyCi0JCQkJUlVFSUwgTUFMTUFJU09OIElsZSBkZSBGcmFuY2UgOTI4NDgKLQkJCQlGUkFOQ0UKLQotRTgtQzItMjkgICAoaGV4KQkJSC1EaXNwbGF5cyAoTVNDKSBCaGQKLUU4QzIyOSAgICAgKGJhc2UgMTYpCQlILURpc3BsYXlzIChNU0MpIEJoZAotCQkJCU5vLiAzMSAmIDMyLCBKYWxhbiBHYW5nc2EgRHVhCi0JCQkJUGFzaXIgR3VkYW5nCi0JCQkJSm9ob3IgQmFocnUgIDgxNzAwCi0JCQkJTUFMQVlTSUEKLQotRTgtQzMtMjAgICAoaGV4KQkJQXVzdGNvIENvbW11bmljYXRpb24gU3lzdGVtcyBQdHkgTHRkCi1FOEMzMjAgICAgIChiYXNlIDE2KQkJQXVzdGNvIENvbW11bmljYXRpb24gU3lzdGVtcyBQdHkgTHRkCi0JCQkJNDAgTydNYWxsZXkgU3RyZWV0Ci0JCQkJT3Nib3JuZSBQYXJrIFdlc3Rlcm4gQXVzdHJhbGlhIDYwMTcKLQkJCQlBVVNUUkFMSUEKLQotRTgtQ0MtMzIgICAoaGV4KQkJTWljcm9uZXQgIExURAotRThDQzMyICAgICAoYmFzZSAxNikJCU1pY3JvbmV0ICBMVEQKLQkJCQlIYW1ldHp1ZGEgMjcKLQkJCQlBem9yICA1ODAwMQotCQkJCUlTUkFFTAotCi1FOC1EQS1BQSAgIChoZXgpCQlWaWRlb0hvbWUgVGVjaG5vbG9neSBDb3JwLgotRThEQUFBICAgICAoYmFzZSAxNikJCVZpZGVvSG9tZSBUZWNobm9sb2d5IENvcnAuCi0JCQkJNEYtMSwgTm8uIDE5MiwgRGEgVHVuZyBSZC4sIFNlYy4gMywgSHNpY2hpaCwKLQkJCQlUYWlwZWkgSHNpZW4gIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTgtREYtRjIgICAoaGV4KQkJUFJGIENvLiwgTHRkLgotRThERkYyICAgICAoYmFzZSAxNikJCVBSRiBDby4sIEx0ZC4KLQkJCQkjNTEwLCBMZWFkZXJzIEIvRCwgWWF0b3AtZG9uZwotCQkJCUJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1jaXR5IEd5ZW9uZ2dpLWRvIDQ2My04MjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTgtRTAtOEYgICAoaGV4KQkJR1JBVk9URUNIIE1BUktJTkcgU0FTCi1FOEUwOEYgICAgIChiYXNlIDE2KQkJR1JBVk9URUNIIE1BUktJTkcgU0FTCi0JCQkJNTYgQVZFTlVFIEpFQU4gSkFVUkVTCi0JCQkJTEEgQ0hBUEVMTEUgU0FJTlQgTFVDIEFVQkUgMTA2MDAKLQkJCQlGUkFOQ0UKLQotRTgtRTAtQjcgICAoaGV4KQkJVG9zaGliYQotRThFMEI3ICAgICAoYmFzZSAxNikJCVRvc2hpYmEKLQkJCQkyLTksU3VlaGlyby1DaG8KLQkJCQlPbWUgVG9reW8gMTk4ODcxMAotCQkJCUpBUEFOCi0KLUU4LUUxLUUyICAgKGhleCkJCUVuZXJnb3Rlc3QKLUU4RTFFMiAgICAgKGJhc2UgMTYpCQlFbmVyZ290ZXN0Ci0JCQkJQ2hvcnpvd3NrYSA0NEIKLQkJCQlHbGl3aWNlIFNsYXNrIDQ0LTEwMAotCQkJCVBPTEFORAotCi1FOC1FNS1ENiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQgCi1FOEU1RDYgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkIAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FOC1FNy0zMiAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudAotRThFNzMyICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50Ci0JCQkJMjY4MDEgV2VzdCBBZ291cmEgUm9hZAotCQkJCUNhbGFiYXNhcyBDQSA5MTMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtRTctNzYgICAoaGV4KQkJU2hlbnpoZW4gS29vdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkCi1FOEU3NzYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gS29vdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJMy9GLCBCdWlsZGluZyAjNCwgWGluSmlhblhpbmcgSW5kdXN0cmlhbCBQYXJrCi0JCQkJU29uZ2JhaSBSb2FkLCBOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyBQcm92aW5jZSA1MTgxMDgKLQkJCQlDSElOQQotCi1FOC1GOS0yOCAgIChoZXgpCQlSRlRFQ0ggU1JMCi1FOEY5MjggICAgIChiYXNlIDE2KQkJUkZURUNIIFNSTAotCQkJCVZJQSBWRU5FVE8sIDIyCi0JCQkJU0NISU8gVklDRU5aQSAzNjAxNQotCQkJCUlUQUxZCi0KLUVDLTE0LUY2ICAgKGhleCkJCUJpb0NvbnRyb2wgQVMKLUVDMTRGNiAgICAgKGJhc2UgMTYpCQlCaW9Db250cm9sIEFTCi0JCQkJR3JpbXN0YWQgR2FyZCAKLQkJCQlSYWtrZXN0YWQgICBOLTE4OTAKLQkJCQlOT1JXQVkKLQotRUMtMjMtNjggICAoaGV4KQkJSW50ZWxsaVZvaWNlIENvLixMdGQuCi1FQzIzNjggICAgIChiYXNlIDE2KQkJSW50ZWxsaVZvaWNlIENvLixMdGQuCi0JCQkJMy02IEtpb2ljaG8KLQkJCQlLaW9pY2hvIFBhcmsgQmxkLiAxRgotCQkJCUNoaXlvZGEgVG9reW8gMTAyLTAwOTQKLQkJCQlKQVBBTgotCi1FQy0zMC05MSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1FQzMwOTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtM0ItRjAgICAoaGV4KQkJTm92ZWxTYXQKLUVDM0JGMCAgICAgKGJhc2UgMTYpCQlOb3ZlbFNhdAotCQkJCUhhdGFhc2lhIDIxCi0JCQkJUmFhbmFuYSAgMjM5NgotCQkJCUlTUkFFTAotCi1FQy00My1FNiAgIChoZXgpCQlBV0NFUiBMdGQuCi1FQzQzRTYgICAgIChiYXNlIDE2KQkJQVdDRVIgTHRkLgotCQkJCTEwMC00MTMgQnVjaGVvbiBUZWNobm9wYXJrCi0JCQkJMzY0IFNhbkplb25nLWRvbmcsIE9qZW9uZy1ndQotCQkJCUJ1Y2hlb24tY2l0eSBHeWVvbmdnaS1kbyA0MjEtNzQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUVDLTQ0LTc2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUVDNDQ3NiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLTQ2LTQ0ICAgKGhleCkJCVRUSyBTQVMKLUVDNDY0NCAgICAgKGJhc2UgMTYpCQlUVEsgU0FTCi0JCQkJNCwgUnVlIGR1IENoZW1pbiBWZXJ0Ci0JCQkJQ2xpY2h5ICA5MjExMAotCQkJCUZSQU5DRQotCi1FQy01NC0yRSAgIChoZXgpCQlTaGFuZ2hhaSBYaU1laSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uIEx0ZAotRUM1NDJFICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFhpTWVpIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBDby4gTHRkCi0JCQkJUm9vbSA1MDMsIE5vLjI2MjMsIEdvbmdIZVhpbiBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDA3MgotCQkJCUNISU5BCi0KLUVDLTU1LUY5ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLUVDNTVGOSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi1FQy01Qy02OSAgIChoZXgpCQlNSVRTVUJJU0hJIEhFQVZZIElORFVTVFJJRVMgTUVDSEFUUk9OSUNTIFNZU1RFTVMsTFRELgotRUM1QzY5ICAgICAoYmFzZSAxNikJCU1JVFNVQklTSEkgSEVBVlkgSU5EVVNUUklFUyBNRUNIQVRST05JQ1MgU1lTVEVNUyxMVEQuCi0JCQkJMS0xNiw1LUNIT01FLEtPTUFUU1UtRE9SSSwKLQkJCQlLT0JFIEhZT0dPIDY1Mi0wODY1Ci0JCQkJSkFQQU4KLQotRUMtNjYtRDEgICAoaGV4KQkJQiZhbXA7VyBHcm91cCBMVEQKLUVDNjZEMSAgICAgKGJhc2UgMTYpCQlCJmFtcDtXIEdyb3VwIExURAotCQkJCURhbGUgUm9hZAotCQkJCVdvcnRoaW5nIFN1c3NleCBCTjExIDJCSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUVDLTZDLTlGICAgKGhleCkJCUNoZW5nZHUgVm9sYW5zIFRlY2hub2xvZ3kgQ08uLExURAotRUM2QzlGICAgICAoYmFzZSAxNikJCUNoZW5nZHUgVm9sYW5zIFRlY2hub2xvZ3kgQ08uLExURAotCQkJCTJuZCBGbG9vciBCdWlsZGluZyA0QiBIaS1UZWNoIEluY3ViYXRpb24gUGFyayxOYW55YW4gWGlhbixUaWFuZnUgQXZlCi0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLUVDLTdDLTc0ICAgKGhleCkJCUp1c3RvbmUgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotRUM3Qzc0ICAgICAoYmFzZSAxNikJCUp1c3RvbmUgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCVRvbmdndWFuZyBCdWlsZGluZyBGMTksIDEyIyBTb3V0aCBBZ3JpY3VsdHVyZSBFeGhpYml0aW9uIENlbnRlciBSb2FkLCAKLQkJCQlDaGFveWFuZyBEaXN0cmljdCAKLQkJCQlCZWlqaW5nICAxMDAxMjUKLQkJCQlDSElOQQotCi1FQy03RC05RCAgIChoZXgpCQlNRUkKLUVDN0Q5RCAgICAgKGJhc2UgMTYpCQlNRUkKLQkJCQkxMzAxIFdpbHNvbiBEcml2ZQotCQkJCVdlc3QgQ2hlc3RlciBQQSAxOTM4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtODMtNkMgICAoaGV4KQkJUk0gVGVjaCBDby4sIEx0ZC4KLUVDODM2QyAgICAgKGJhc2UgMTYpCQlSTSBUZWNoIENvLiwgTHRkLgotCQkJCUMtODAxLCBCdXB5ZW9uZyBXb29saW0gTGlvbnMgVmFsbGV5Ci0JCQkJQ2hlb25nY2hlb24gMi1kb25nLCBCdXB5ZW9uZy1ndQotCQkJCUluY2hlb24gQ2l0eSAgNDAzLTkxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FQy04RS1BRCAgIChoZXgpCQlETFgKLUVDOEVBRCAgICAgKGJhc2UgMTYpCQlETFgKLQkJCQkjNDAxLCBTZW9pbCBCL0QsMTM1OS00NSBTZW9jaG8yLWRvbmcKLQkJCQlTZW9jaG8ta3UsIAotCQkJCVNlb3VsICAxMzctODYzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUVDLTkyLTMzICAgKGhleCkJCUVkZHlmaSBORFQgSW5jCi1FQzkyMzMgICAgIChiYXNlIDE2KQkJRWRkeWZpIE5EVCBJbmMKLQkJCQkzNjAsIEZyYW5xdWV0IHN0cmVldAotCQkJCVN1aXRlIDQwCi0JCQkJUXVlYmVjICBHMVAgNE4zCi0JCQkJQ0FOQURBCi0KLUVDLTk2LTgxICAgKGhleCkJCTIyNzY0MjcgT250YXJpbyBJbmMKLUVDOTY4MSAgICAgKGJhc2UgMTYpCQkyMjc2NDI3IE9udGFyaW8gSW5jCi0JCQkJMzEtMTI3NSBNb3JuaW5nc2lkZSBBdmUKLQkJCQlUb3JvbnRvIE9OIE0xQjNXMQotCQkJCUNBTkFEQQotCi1FQy05OC02QyAgIChoZXgpCQlMdWZmdCBNZXNzLSB1bmQgUmVnZWx0ZWNobmlrIEdtYkgKLUVDOTg2QyAgICAgKGJhc2UgMTYpCQlMdWZmdCBNZXNzLSB1bmQgUmVnZWx0ZWNobmlrIEdtYkgKLQkJCQlHdXRlbmJlcmdzdHIuIDIwCi0JCQkJRmVsbGJhY2ggQmFkZW4tV3VlcnR0ZW1iZXJnIDcwNzM2Ci0JCQkJR0VSTUFOWQotCi1FQy05OC1DMSAgIChoZXgpCQlCZWlqaW5nIFJpc2JvIE5ldHdvcmsgVGVjaG5vbG9neSBDby4sTHRkCi1FQzk4QzEgICAgIChiYXNlIDE2KQkJQmVpamluZyBSaXNibyBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTEvRiBZaW55YW4gQnVpbGRpbmcgMkEsTm8uMjMgQW5uaW5nemh1YW5nZG9uZ2x1IEhhaWRpYW4gRGlzdHJpY3QgCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotRUMtOUItNUIgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUVDOUI1QiAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlLZW1wZWxlICA5MDU3MAotCQkJCUZJTkxBTkQKLQotRUMtOUUtQ0QgICAoaGV4KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyIGFuZCBFbWJlZGRlZCBDb21wdXRpbmcKLUVDOUVDRCAgICAgKGJhc2UgMTYpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgYW5kIEVtYmVkZGVkIENvbXB1dGluZwotCQkJCTI5MDAgUywgRGlhYmxvIFdheSBTdWl0ZSAxOTAKLQkJCQlUZW1wZSBBcml6b25hIDg1MjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1FQy1CMS0wNiAgIChoZXgpCQlBY3VybyBOZXR3b3JrcywgSW5jCi1FQ0IxMDYgICAgIChiYXNlIDE2KQkJQWN1cm8gTmV0d29ya3MsIEluYwotCQkJCTQyODA4IENocmlzdHkgU3QuLCBTdWl0ZSAxMDAKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FQy1CQi1BRSAgIChoZXgpCQlEaWdpdm9pY2UgVGVjbm9sb2dpYSBlbSBFbGV0cm9uaWNhIEx0ZGEKLUVDQkJBRSAgICAgKGJhc2UgMTYpCQlEaWdpdm9pY2UgVGVjbm9sb2dpYSBlbSBFbGV0cm9uaWNhIEx0ZGEKLQkJCQlBbGFtZWRhIEp1cnUsIDE1OSAtIFRvcnJlbwotCQkJCUJhcnVlcmkgU2FvIFBhdWxvIDA2NDU1LTAxMAotCQkJCUJSQVpJTAotCi1FQy1CRC0wOSAgIChoZXgpCQlGVVNJT04gRWxlY3Ryb25pY3MgTHRkCi1FQ0JEMDkgICAgIChiYXNlIDE2KQkJRlVTSU9OIEVsZWN0cm9uaWNzIEx0ZAotCQkJCVBPIEJveCAxMzcgLSAxNDIKLQkJCQlQYXJuZWxsCi0JCQkJQXVja2xhbmQgIDExNTEKLQkJCQlORVcgWkVBTEFORAotCi1FQy1DMy04QSAgIChoZXgpCQlBY2N1ZW5lcmd5IChDQU5BREEpIEluYwotRUNDMzhBICAgICAoYmFzZSAxNikJCUFjY3VlbmVyZ3kgKENBTkFEQSkgSW5jCi0JCQkJMiBMYW5zaW5nIFNxdWFyZSwgU3VpdGUgNTAzCi0JCQkJVG9yb250byBPbnRhcmlvIE0ySiA0UDgKLQkJCQlDQU5BREEKLQotRUMtQzgtODIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRUNDODgyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtQ0QtNkQgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMsIEluYy4KLUVDQ0Q2RCAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcywgSW5jLgotCQkJCTMyMDAgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtRDAtMEUgICAoaGV4KQkJTWlyYWVSZWNvZ25pdGlvbiBDby4sIEx0ZC4KLUVDRDAwRSAgICAgKGJhc2UgMTYpCQlNaXJhZVJlY29nbml0aW9uIENvLiwgTHRkLgotCQkJCVByaW1lQmFuayBCbGRnLiBBbm5leC0zRiwgIzI3OC0zCi0JCQkJTm9uaHl1bi1kb25nLCBHYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS04MzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRUMtREUtM0QgICAoaGV4KQkJTGFtcHJleSBOZXR3b3JrcywgSW5jLgotRUNERTNEICAgICAoYmFzZSAxNikJCUxhbXByZXkgTmV0d29ya3MsIEluYy4KLQkJCQk1OCBEb3ZlciBSb2FkCi0JCQkJRHVyaGFtIE5IIDAzODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FQy1FMC05QiAgIChoZXgpCQlTYW1zdW5nIGVsZWN0cm9uaWNzIENPLiwgTFRECi1FQ0UwOUIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBlbGVjdHJvbmljcyBDTy4sIExURAotCQkJCTQxNiwgTWFldGFuLTNkb25nLCBZZW9uZ3RvbmctZ3UsCi0JCQkJU3V3b24tQ2l0eSBHeWVvbmdnaS1kbyA0NDMtNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUVDLUU1LTU1ICAgKGhleCkJCUhpcnNjaG1hbm4gQXV0b21hdGlvbgotRUNFNTU1ICAgICAoYmFzZSAxNikJCUhpcnNjaG1hbm4gQXV0b21hdGlvbgotCQkJCVN0dXR0Z2FydGVyIFN0cmFzc2UgNDUtNTEKLQkJCQlOZWNrYXJ0ZW56bGluZ2VuIEJhZGVuLVdpP29lcnR0ZW1iZXJnIDcyNjU0Ci0JCQkJR0VSTUFOWQotCi1FQy1FOS0wQiAgIChoZXgpCQlTSVNURU1BIFNPTFVDT0VTIEVMRVRST05JQ0FTIExUREEgLSBFQVNZVEVDSAotRUNFOTBCICAgICAoYmFzZSAxNikJCVNJU1RFTUEgU09MVUNPRVMgRUxFVFJPTklDQVMgTFREQSAtIEVBU1lURUNICi0JCQkJUlVBIEdVRVJSQSBERSBBR1VJQVIsIDIyMAotCQkJCVNBTyBQQVVMTyBTUCAwODI3NS0yNjAKLQkJCQlCUkFaSUwKLQotRUMtRTktRjggICAoaGV4KQkJR3VhbmcgWmhvdSBUUkktU1VOIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgIENvLiwgTHRkCi1FQ0U5RjggICAgIChiYXNlIDE2KQkJR3VhbmcgWmhvdSBUUkktU1VOIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgIENvLiwgTHRkCi0JCQkJOXRoIGZsb29yIEd1YW5nemhvdSBpbmZvIHBvcnQgYnVpbGRpbmcgQiwgS2V5dW4gUm9hZCwgVGlhbmhlIERpc3RyaWN0LCBHdWFuZ3pob3UgLFBSQwotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjY1Ci0JCQkJQ0hJTkEKLQotRUMtRjItMzYgICAoaGV4KQkJTkVPTU9OVEFOQSBFTEVDVFJPTklDUwotRUNGMjM2ICAgICAoYmFzZSAxNikJCU5FT01PTlRBTkEgRUxFQ1RST05JQ1MKLQkJCQlNbGFkb3N0LTQsIGJsLiA0ODMsIG1hZy4gMTMKLQkJCQlTb2ZpYSAgMTcxNQotCQkJCUJVTEdBUklBCi0KLUVDLUZBLUFBICAgKGhleCkJCVRoZSBJTVMgQ29tcGFueQotRUNGQUFBICAgICAoYmFzZSAxNikJCVRoZSBJTVMgQ29tcGFueQotCQkJCTI5MjkgRS4gSW1wZXJpYWwgSGlnaHdheQotCQkJCVN1aXRlIDE3MAotCQkJCUJyZWEgQ0EgOTI4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLUZFLTdFICAgKGhleCkJCUJsdWVSYWRpb3MsIEluYy4KLUVDRkU3RSAgICAgKGJhc2UgMTYpCQlCbHVlUmFkaW9zLCBJbmMuCi0JCQkJNzE3MyBTLiBIYXZhbmEgU3RyZWV0LCBTdWl0ZSA2MDAKLQkJCQlFbmdsZXdvb2QgQ29sb3JhZG8gODAxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUYwLTAyLTQ4ICAgKGhleCkJCVNtYXJ0ZUJ1aWxkaW5nCi1GMDAyNDggICAgIChiYXNlIDE2KQkJU21hcnRlQnVpbGRpbmcKLQkJCQkzMjY3IEJlZSBDYXZlIFJvYWQKLQkJCQkxMDctMTczCi0JCQkJQXVzdGluIFRYIDc4NzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC0yNC0wOCAgIChoZXgpCQlUYWxhcmlzIChTd2VkZW4pIEFCCi1GMDI0MDggICAgIChiYXNlIDE2KQkJVGFsYXJpcyAoU3dlZGVuKSBBQgotCQkJCVRhbGpzIFNvZHJhIEluZHVzdHJpb21yYWRlCi0JCQkJRmxlbiAgNjQyODQKLQkJCQlTV0VERU4KLQotRjAtMjUtNzIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRjAyNTcyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtMjYtNEMgICAoaGV4KQkJRHIuIFNpZ3Jpc3QgQUcKLUYwMjY0QyAgICAgKGJhc2UgMTYpCQlEci4gU2lncmlzdCBBRwotCQkJCUhvZnVybGlzdHJhc3NlIDEKLQkJCQlFbm5ldGJpP29lcmdlbiAgNjM3MwotCQkJCVNXSVRaRVJMQU5ECi0KLUYwLTJBLTYxICAgKGhleCkJCVdhbGRvIE5ldHdvcmtzLCBJbmMuCi1GMDJBNjEgICAgIChiYXNlIDE2KQkJV2FsZG8gTmV0d29ya3MsIEluYy4KLQkJCQk0NTA1IFNwaWNld29vZCBTcHJpbmdzIFJkCi0JCQkJU3VpdGUgMzMzCi0JCQkJQXVzdGluIFRleGFzIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC0yRi1EOCAgIChoZXgpCQlCaTItVmlzaW9uCi1GMDJGRDggICAgIChiYXNlIDE2KQkJQmkyLVZpc2lvbgotCQkJCTE2LTUwNCwgMjEtYmFuLCBTaGltb21hcnVrbyA0LWNob21lLCBPb3RhLWt1Ci0JCQkJVG9reW8gIDE0Ni0wMDkyCi0JCQkJSkFQQU4KLQotRjAtNDMtMzUgICAoaGV4KQkJRFZOKFNoYW5naGFpKUx0ZC4KLUYwNDMzNSAgICAgKGJhc2UgMTYpCQlEVk4oU2hhbmdoYWkpTHRkLgotCQkJCTExRixIZWNodWFuIEJ1aWxkaW5nLDIwMTYgWWlzaGFuIFJkLAotCQkJCVNoYW5naGFpICAyMDExMDMKLQkJCQlDSElOQQotCi1GMC00Qi1GMiAgIChoZXgpCQlKVEVDSCBDb21tdW5pY2F0aW9ucywgSW5jLgotRjA0QkYyICAgICAoYmFzZSAxNikJCUpURUNIIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNjQxMyBDb25ncmVzcyBBdmUuCi0JCQkJQm9jYSBSYXRvbiBGTCAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtNEQtQTIgICAoaGV4KQkJRGVsbCBJbmMuCi1GMDREQTIgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMuCi0JCQkJT25lIERlbGwgd2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCByb2NrICBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtNTgtNDkgICAoaGV4KQkJQ2FyZVZpZXcgQ29tbXVuaWNhdGlvbnMKLUYwNTg0OSAgICAgKGJhc2UgMTYpCQlDYXJlVmlldyBDb21tdW5pY2F0aW9ucwotCQkJCTQwNSBTdGF0ZSBIV1kgMTIxIEJZUAotCQkJCVN1aXRlIEIyNDAKLQkJCQlMZXdpc3ZpbGxlICBUZXhhcyA3NTA2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtNUQtODkgICAoaGV4KQkJUFJJVkFURQotRjA1RDg5ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi1GMC02Mi04MSAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi1GMDYyODEgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQuCi0JCQkJUm9zZXZpbGxlIENhbGlmb3JuaWEgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLUYwLTY1LUREICAgKGhleCkJCVByaW1heCBFbGVjdHJvbmljcyBMdGQuCi1GMDY1REQgICAgIChiYXNlIDE2KQkJUHJpbWF4IEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQk2NjksIFJ1ZXkgS3VhbmcgUm9hZCwgTmVpaHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRjAtNjgtNTMgICAoaGV4KQkJSW50ZWdyYXRlZCBDb3Jwb3JhdGlvbgotRjA2ODUzICAgICAoYmFzZSAxNikJCUludGVncmF0ZWQgQ29ycG9yYXRpb24KLQkJCQkzL0YsIFNodW4gT24gQ29tbWVyY2lhbCBCbGRnLiwgCi0JCQkJMTEyLTExNCBEZXMgVm9ldXggUm9hZCwgQy4sCi0JCQkJQ2V0bnJhbCwgIAotCQkJCUhPTkcgS09ORwotCi1GMC03Ny1EMCAgIChoZXgpCQlYY2VsbGVuCi1GMDc3RDAgICAgIChiYXNlIDE2KQkJWGNlbGxlbgotCQkJCTE1RiBLSU5TIFRvd2VyIDI1LTEsSmVvbmdqYS1kb25nLEJ1bmdkYW5nLWd1LAotCQkJCVNlb25nbmFtIEd5ZW9uZ2dpIDQ2MzgxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GMC03Qi1DQiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotRjA3QkNCICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotRjAtN0QtNjggICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi1GMDdENjggICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTm8uMjg5LCBTaW5odSAzcmQgUmQuLCBOZWlodSBEaXN0cmljdCwgCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRjAtODEtQUYgICAoaGV4KQkJSVJaIEFVVE9NQVRJT04gVEVDSE5PTE9HSUVTIExURAotRjA4MUFGICAgICAoYmFzZSAxNikJCUlSWiBBVVRPTUFUSU9OIFRFQ0hOT0xPR0lFUyBMVEQKLQkJCQlVbml0IDktMTAgMjcvRiBTZWFwb3dlciBUb3dlcgotCQkJCUNvbmNvcmRpYSBQbGF6YSAxIFNjaWVuY2UgTXVzZXVtIFJkLFRzaW1TaGFUc3VpCi0JCQkJS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotRjAtOEItRkUgICAoaGV4KQkJQ09TVEVMLixDTy5MVEQKLUYwOEJGRSAgICAgKGJhc2UgMTYpCQlDT1NURUwuLENPLkxURAotCQkJCTIyMy0zOSwgU2FuZ2RhZXdvbi1Eb25nLCBKdW5nd29uLUd1Ci0JCQkJU2VvbmduYW0tc2kgS3l1bmdnaS1EbyA0NjItODA3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUYwLTkzLTNBICAgKGhleCkJCU54dENvbmVjdAotRjA5MzNBICAgICAoYmFzZSAxNikJCU54dENvbmVjdAotCQkJCVNjaGlsbGVyc3RyYXNzZSA0Ci0JCQkJQmFkIEtpc3NpbmdlbiAgOTc2ODgKLQkJCQlHRVJNQU5ZCi0KLUYwLTlDLUJCICAgKGhleCkJCVJhb25UaGluayBJbmMuCi1GMDlDQkIgICAgIChiYXNlIDE2KQkJUmFvblRoaW5rIEluYy4KLQkJCQk5MTYsIEJ5dWNrc2FuIERpZ2l0YWwgVmFsbGV5IDItQ2hhLCA0ODEtMTAsIEthc2FuLURvbmcsIEt1bWNoZW9uLUd1LCAKLQkJCQlTZW91bCAgMTUzLTc4MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GMC1BNy02NCAgIChoZXgpCQlHU1QgQ28uLCBMdGQuCi1GMEE3NjQgICAgIChiYXNlIDE2KQkJR1NUIENvLiwgTHRkLgotCQkJCSM5MTksIEdvc2Flay1kb25nLCBHd29uc2Vvbi1ndSwKLQkJCQlTdXdvbi1zaSBHeWVvbmdnaS1kbyA0NDEtODEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUYwLUFELTRFICAgKGhleCkJCUdsb2JhbHNjYWxlIFRlY2hub2xvZ2llcywgSW5jLgotRjBBRDRFICAgICAoYmFzZSAxNikJCUdsb2JhbHNjYWxlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTVGLCBOby4gMiBCdWlsZGluZywgTWlueGluZyBJbmR1c3RyaWFsIFBhcmsKLQkJCQlNaW5rYW5nIFJkLiwgTWluemhpIFN0LiwgQmFvYW4gRGlzdC4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTA5Ci0JCQkJQ0hJTkEKLQotRjAtQUUtNTEgICAoaGV4KQkJWGkzIENvcnAKLUYwQUU1MSAgICAgKGJhc2UgMTYpCQlYaTMgQ29ycAotCQkJCTI5OSBTLiBNYWluIFN0LgotCQkJCVN1aXRlIDEzMDAKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtQjQtNzkgICAoaGV4KQkJQXBwbGUKLUYwQjQ3OSAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtQjYtRUIgICAoaGV4KQkJUG9zbGFiIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1GMEI2RUIgICAgIChiYXNlIDE2KQkJUG9zbGFiIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNUYtMSwgTm8uNDkwIEJhbm5hbiBSZC4KLQkJCQlUYWlwZWkgQ291bnR5Ci0JCQkJSmhvbmdoZSBDaXR5ICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUYwLUJDLUM4ICAgKGhleCkJCU1heElEIChQdHkpIEx0ZAotRjBCQ0M4ICAgICAoYmFzZSAxNikJCU1heElEIChQdHkpIEx0ZAotCQkJCTQzIEhvbWVzdGVhZCBSb2FkCi0JCQkJUml2b25pYQotCQkJCUpvaGFubmVzYnVyZyBHYXV0ZW5nIDIxMjgKLQkJCQlTT1VUSCBBRlJJQ0EKLQotRjAtQkQtRjEgICAoaGV4KQkJU2lwb2QgSW5jLgotRjBCREYxICAgICAoYmFzZSAxNikJCVNpcG9kIEluYy4KLQkJCQk0NjMzIE9sZCBJcm9uc2lkZXMgRHJpdmUsICM0MDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtQkYtOTcgICAoaGV4KQkJU29ueSBDb3Jwb3JhdGlvbgotRjBCRjk3ICAgICAoYmFzZSAxNikJCVNvbnkgQ29ycG9yYXRpb24KLQkJCQlHb3RlbnlhbWEgVGVjLgotCQkJCTUtMS0xMiBLaXRhc2hpbmFnYXdhIFNoaW5hZ2F3YS1rdQotCQkJCVRva3lvICAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLUYwLUMyLTRDICAgKGhleCkJCVpoZWppYW5nIEZlaVl1ZSBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLCBMdGQKLUYwQzI0QyAgICAgKGJhc2UgMTYpCQlaaGVqaWFuZyBGZWlZdWUgRGlnaXRhbCBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJQmFvdGluZyBJbmR1c3RyaWFsIFBhcmssIDUzMSBKaWFvZ29uZyBSb2FkCi0JCQkJIEhhbmd6aG91IENpdHkgWmhlamlhbmcgUHJvdmluY2UgMzEwMDEyCi0JCQkJQ0hJTkEKLQotRjAtQzItN0MgICAoaGV4KQkJTWlhbnlhbmcgTmV0b3AgVGVsZWNvbSBFcXVpcG1lbnQgQ28uLEx0ZC4KLUYwQzI3QyAgICAgKGJhc2UgMTYpCQlNaWFueWFuZyBOZXRvcCBUZWxlY29tIEVxdWlwbWVudCBDby4sTHRkLgotCQkJCU5vLjExMSxFYXN0IHNlY3Rpb24gb2YgUHVtaW5nIFNvdXRoIFJvYWQsCi0JCQkJSGktdGVjaCB6b25lLAotCQkJCU1pYW55YW5nIENpdHkgU2ljaHVhbiBQcm92aW5jZSwgIDYyMTAwMAotCQkJCUNISU5BCi0KLUYwLUM4LThDICAgKGhleCkJCUxlZGRhclRlY2ggSW5jLgotRjBDODhDICAgICAoYmFzZSAxNikJCUxlZGRhclRlY2ggSW5jLgotCQkJCTI3NDAgRWluc3RlaW4gU3RyZWV0Ci0JCQkJUXVlYmVjIENpdHkgIEcxUCA0UzQKLQkJCQlDQU5BREEKLQotRjAtRDctNjcgICAoaGV4KQkJQXhlbWEgUGFzc2FnZWtvbnRyb2xsIEFCCi1GMEQ3NjcgICAgIChiYXNlIDE2KQkJQXhlbWEgUGFzc2FnZWtvbnRyb2xsIEFCCi0JCQkJQm94IDkwIDIxNQotCQkJCVN0b2NraG9sbSAgMTIwIDIzIAotCQkJCVNXRURFTgotCi1GMC1EQi0zMCAgIChoZXgpCQlZb3R0YWJ5dGUKLUYwREIzMCAgICAgKGJhc2UgMTYpCQlZb3R0YWJ5dGUKLQkJCQkxNzUwIFMuIFRlbGVncmFwaCBSb2FkCi0JCQkJU3VpdGUgMjAwCi0JCQkJQmxvb21maWVsZCBUd3AuIE1JIDQ4MzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC1ERS03MSAgIChoZXgpCQlTaGFuZ2hhaSBFRE8gVGVjaG5vbG9naWVzIENvLixMdGQuCi1GMERFNzEgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgRURPIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCVVuaXQgMTIzMDIsIEJ1aWxkaW5nIDEyLDQ5OCBHdW9zaG91amluZyBSb2FkLCBQdWRvbmcgTmV3IEFyZWEKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotRjAtREUtRjEgICAoaGV4KQkJV2lzdHJvbiBJbmZvQ29tbSAoS3Vuc2hhbilDbwotRjBERUYxICAgICAoYmFzZSAxNikJCVdpc3Ryb24gSW5mb0NvbW0gKEt1bnNoYW4pQ28KLQkJCQkxNjhLdW5TaGFuLCAKLQkJCQlKaWFuZ1N1ICAyMTUzMDAKLQkJCQlDSElOQQotCi1GMC1FNS1DMyAgIChoZXgpCQlEcmFlZ2Vyd2VyayBBRyAmYW1wO2FtcDsgQ28uIEtHIGFBCi1GMEU1QzMgICAgIChiYXNlIDE2KQkJRHJhZWdlcndlcmsgQUcgJmFtcDthbXA7IENvLiBLRyBhQQotCQkJCU1vaXNsaW5nZXIgQWxsZWUgNTMtNTUKLQkJCQlMdWViZWNrIEdlcm1hbnkgMjM0NTIKLQkJCQlHRVJNQU5ZCi0KLUYwLUVDLTM5ICAgKGhleCkJCUVzc2VjCi1GMEVDMzkgICAgIChiYXNlIDE2KQkJRXNzZWMKLQkJCQlTY2hvZWJyb2Vrc3RyYWF0IDQ4Ci0JCQkJUGFhbCBMaW1idXJnIDM1ODMKLQkJCQlCRUxHSVVNCi0KLUYwLUVELTFFICAgKGhleCkJCUJpbGtvbiBCaWxnaXNheWFyIEtvbnRyb2xsdSBDaWguIEltLkx0ZC4KLUYwRUQxRSAgICAgKGJhc2UgMTYpCQlCaWxrb24gQmlsZ2lzYXlhciBLb250cm9sbHUgQ2loLiBJbS5MdGQuCi0JCQkJR2Vyc2FuIFNhbmF5aSBTaXRlc2kgNjU4LlNva2FrIE5vOjE2Ci0JCQkJWUVOSU1BSEFMTEUtIEJBVElLRU5UCi0JCQkJQU5LQVJBICAwNjM3MAotCQkJCVRVUktFWQotCi1GMC1GMC0wMiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotRjBGMDAyICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJIE5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMKLQkJCQlDSElOQQotCi1GMC1GNy1CMyAgIChoZXgpCQlQaG9ybQotRjBGN0IzICAgICAoYmFzZSAxNikJCVBob3JtCi0JCQkJMjIyIFJlZ2VudCBTdHJlZXQKLQkJCQlMb25kb24gIFcxQiA1VFIKLQkJCQlVTklURUQgS0lOR0RPTQotCi1GMC1GOC00MiAgIChoZXgpCQlLRUVCT1gsIEluYy4KLUYwRjg0MiAgICAgKGJhc2UgMTYpCQlLRUVCT1gsIEluYy4KLQkJCQkxMCBQb3BweSBUcmFpbAotCQkJCVJvbGxpbmcgSGlsbHMgQ2FsaWZvcm5pYSA5MDI3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtRjktRjcgICAoaGV4KQkJSUVTIEdtYkggJmFtcDsgQ28uIEtHCi1GMEY5RjcgICAgIChiYXNlIDE2KQkJSUVTIEdtYkggJmFtcDsgQ28uIEtHCi0JCQkJRGFybWNoZXIgR3J1bmQgMjIKLQkJCQlNZWluZXJ6aGFnZW4gIDU4NTQwCi0JCQkJR0VSTUFOWQotCi1GNC0wMy0yMSAgIChoZXgpCQlCZU5lWHQgQi5WLgotRjQwMzIxICAgICAoYmFzZSAxNikJCUJlTmVYdCBCLlYuCi0JCQkJVGVyIEdvdXdzdHJhYXQgMwotCQkJCUFtc3RlcmRhbSBOSCAxMDkzSlgKLQkJCQlORVRIRVJMQU5EUwotCi1GNC0wQi05MyAgIChoZXgpCQlSZXNlYXJjaCBJbiBNb3Rpb24KLUY0MEI5MyAgICAgKGJhc2UgMTYpCQlSZXNlYXJjaCBJbiBNb3Rpb24KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCA1UjkKLQkJCQlDQU5BREEKLQotRjQtMUYtMEIgICAoaGV4KQkJWUFNQUJJU0hJIENvcnBvcmF0aW9uCi1GNDFGMEIgICAgIChiYXNlIDE2KQkJWUFNQUJJU0hJIENvcnBvcmF0aW9uCi0JCQkJMy0xNC0xMiBLYW1pZ291Ci0JCQkJRWJpbmEtY2l0eSBLQU5BR0FXQSAyNDMtMDQzNAotCQkJCUpBUEFOCi0KLUY0LTM4LTE0ICAgKGhleCkJCVNoYW5naGFpIEhvd2VsbCBFbGVjdHJvbmljIENvLixMdGQKLUY0MzgxNCAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBIb3dlbGwgRWxlY3Ryb25pYyBDby4sTHRkCi0JCQkJNS01L0YsIEJsZGcuMSwgTm8uNzg4IEZlbmd6aGVuIFJkLiwgCi0JCQkJU2hhbmdoYWkgICAyMDA0MzQKLQkJCQlDSElOQQotCi1GNC0zRC04MCAgIChoZXgpCQlGQUcgSW5kdXN0cmlhbCBTZXJ2aWNlcyBHbWJICi1GNDNEODAgICAgIChiYXNlIDE2KQkJRkFHIEluZHVzdHJpYWwgU2VydmljZXMgR21iSAotCQkJCUthaXNlcnN0cmFzc2UgMTAwCi0JCQkJSGVyem9nZW5yYXRoIE5SVyA1MjEzNAotCQkJCUdFUk1BTlkKLQotRjQtM0UtNjEgICAoaGV4KQkJU2hlbnpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sIEx0ZAotRjQzRTYxICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEdvbmdqaW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQKLQkJCQkyRiBCYWl5aW5nIEJ1aWxkaW5nCi0JCQkJMTAxOSMgTmFpaGFpIFJELCBOYW5zaGFuIFNlY3Rpb24KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDY3Ci0JCQkJQ0hJTkEKLQotRjQtM0UtOUQgICAoaGV4KQkJQmVudSBOZXR3b3JrcywgSW5jLgotRjQzRTlEICAgICAoYmFzZSAxNikJCUJlbnUgTmV0d29ya3MsIEluYy4KLQkJCQkzMDAgQ29uY29yZCBSZC4sIFN1aXRlICMxMTAKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY0LTQyLTI3ICAgKGhleCkJCVMgJiBTIFJlc2VhcmNoIEluYy4KLUY0NDIyNyAgICAgKGJhc2UgMTYpCQlTICYgUyBSZXNlYXJjaCBJbmMuCi0JCQkJODkgQWNjZXNzIFJkICMxMAotCQkJCU5vcndvb2QgTUEgMDIwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY0LTQ1LUVEICAgKGhleCkJCVBvcnRhYmxlIElubm92YXRpb24gVGVjaG5vbG9neSBMdGQuCi1GNDQ1RUQgICAgIChiYXNlIDE2KQkJUG9ydGFibGUgSW5ub3ZhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLQkJCQk2MDEtNjAyLCA2L0YgUGFyayBCdWlsZGluZywKLQkJCQk0NzYgQ2FzdGxlIFBlYWsgUm9hZCwKLQkJCQlLb3dsb29uICAKLQkJCQlIT05HIEtPTkcKLQotRjQtNEUtRkQgICAoaGV4KQkJQWN0aW9ucyBTZW1pY29uZHVjdG9yIENvLixMdGQuKENheW1hbiBJc2xhbmRzKQotRjQ0RUZEICAgICAoYmFzZSAxNikJCUFjdGlvbnMgU2VtaWNvbmR1Y3RvciBDby4sTHRkLihDYXltYW4gSXNsYW5kcykKLQkJCQlQbyBCb3ggMzA5R1QsVWdsYW5kIEhvdXNlLFNvdXRoIENodXJjaCBTdHJlZXQsCi0JCQkJR2VvcmdlIFRvd24gR3JhbmQgQ2F5bWFuIAotCQkJCUNBWU1BTiBJU0xBTkRTCi0KLUY0LTUwLUVCICAgKGhleCkJCVRlbGVjaGlwcyBJbmMKLUY0NTBFQiAgICAgKGJhc2UgMTYpCQlUZWxlY2hpcHMgSW5jCi0JCQkJS09SQUQgQmxkZywxMDAwLTEyLCBEYWVjaGktRG9uZywgR2FuZ25hbS1HdSwKLQkJCQlTZW91bCAgMTM1LTI4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GNC01NS05NSAgIChoZXgpCQlIRU5HQkFPIENvcnBvcmF0aW9uIExURC4KLUY0NTU5NSAgICAgKGJhc2UgMTYpCQlIRU5HQkFPIENvcnBvcmF0aW9uIExURC4KLQkJCQk4dGggRmxvb3IsVG93ZXIgQixYaW5zaGVuZyBNYW5zaW9uIE5vLjUgRmluYW5jaWFsIFN0cmVldCwKLQkJCQlYaWNoZW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMTQwCi0JCQkJQ0hJTkEKLQotRjQtNTUtRTAgICAoaGV4KQkJTmljZXdheSBDTkMgVGVjaG5vbG9neSBDby4sTHRkLkh1bmFuIFByb3ZpbmNlCi1GNDU1RTAgICAgIChiYXNlIDE2KQkJTmljZXdheSBDTkMgVGVjaG5vbG9neSBDby4sTHRkLkh1bmFuIFByb3ZpbmNlCi0JCQkJNS9GLElubm92YXRpb24tVW5kZXJ0YWtpbmcgQ2VudGVyLEh1YW5CYW8gSW5kdXN0cmlhbCBQYXJrLDE5OSMsWmhlbkh1YSBSb2FkLAotCQkJCUNoYW5nc2hhIEh1bmFuIDQxMDExNgotCQkJCUNISU5BCi0KLUY0LTVGLUQ0ICAgKGhleCkJCUNpc2NvIFNQVlRHCi1GNDVGRDQgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtNUYtRjcgICAoaGV4KQkJRFEgVGVjaG5vbG9neSBJbmMuCi1GNDVGRjcgICAgIChiYXNlIDE2KQkJRFEgVGVjaG5vbG9neSBJbmMuCi0JCQkJNTExMSBKb2huc29uIERyaXZlCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtNjMtNDkgICAoaGV4KQkJRGlmZm9uIENvcnBvcmF0aW9uCi1GNDYzNDkgICAgIChiYXNlIDE2KQkJRGlmZm9uIENvcnBvcmF0aW9uCi0JCQkJRGlnaXRhbCBUb3dlciBBc3RvbiAxNTA1Ci0JCQkJNTA1LTE1IEdhc2FuLCBHdWVtY2hlb24KLQkJCQlTZW91bCAgMTUzODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUY0LTZELTA0ICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotRjQ2RDA0ICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUY0LTc2LTI2ICAgKGhleCkJCVZpbHRlY2htZWRhIFVBQiAKLUY0NzYyNiAgICAgKGJhc2UgMTYpCQlWaWx0ZWNobWVkYSBVQUIgCi0JCQkJS2FsdmFyaWp1IDEyNQotCQkJCVZpbG5pdXMgIExULTA4MjIxCi0JCQkJTElUSFVBTklBCi0KLUY0LTk0LTYxICAgKGhleCkJCU5leEdlbiBTdG9yYWdlCi1GNDk0NjEgICAgIChiYXNlIDE2KQkJTmV4R2VuIFN0b3JhZ2UKLQkJCQk0MDAgQ2VudGVubmlhbCBCbHZkLgotCQkJCUxvdWlzdmlsbGUgQ08gODAwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY0LTlGLTU0ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLUY0OUY1NCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUY0LUE1LTJBICAgKGhleCkJCUhhd2EgVGVjaG5vbG9naWVzIEluYwotRjRBNTJBICAgICAoYmFzZSAxNikJCUhhd2EgVGVjaG5vbG9naWVzIEluYwotCQkJCTMzNiBIYXllcyBTdAotCQkJCVNhbiBGcmFuY2lzY28gQ2FsaWZvcm5pYSA5NDEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtQUMtQzEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRjRBQ0MxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY0LUIxLTY0ICAgKGhleCkJCUxpZ2h0bmluZyBUZWxlY29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSBDby4gTHRkCi1GNEIxNjQgICAgIChiYXNlIDE2KQkJTGlnaHRuaW5nIFRlbGVjb21tdW5pY2F0aW9ucyBUZWNobm9sb2d5IENvLiBMdGQKLQkJCQlSb29tIDEzMDIsIFRpYW5pP29laT9vZWFuIEhpLVRlY2ggUGxhemEgVG93ZXIgQSwgRnV0aWFuIERpc3RyaWN0LCAKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotRjQtQjUtNDkgICAoaGV4KQkJWWVhc3RhciBUZWNobm9sb2d5IENvLiwgTHRkLgotRjRCNTQ5ICAgICAoYmFzZSAxNikJCVllYXN0YXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tMjAyLCBOby4yMyBXYW5naGFpIFJvYWQsIDJuZCBTb2Z0d2FyZSBQYXJrLCAKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLUY0LUM3LTE0ICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLUY0QzcxNCAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTEwMTA4Ci0JCQkJQ0hJTkEKLQotRjQtQzctOTUgICAoaGV4KQkJV0VZIEVsZWt0cm9uaWsgQUcKLUY0Qzc5NSAgICAgKGJhc2UgMTYpCQlXRVkgRWxla3Ryb25payBBRwotCQkJCURvcmZzdHJhc3NlIDU3Ci0JCQkJVW50ZXJlbmdzdHJpbmdlbiBadXJpY2ggODEwMwotCQkJCVNXSVRaRVJMQU5ECi0KLUY0LUNBLUU1ICAgKGhleCkJCUZSRUVCT1ggU0EKLUY0Q0FFNSAgICAgKGJhc2UgMTYpCQlGUkVFQk9YIFNBCi0JCQkJOCBydWUgZGUgbGEgVmlsbGUgbCdFdmVxdWUKLQkJCQlQQVJJUyBJZEYgNzUwMDgKLQkJCQlGUkFOQ0UKLQotRjQtQ0UtNDYgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1GNENFNDYgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC1EOS1GQiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENPLiwgTFRECi1GNEQ5RkIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDTy4sIExURAotCQkJCTQxNiwgTWFldGFuLTNkb25nLCBZZW9uZ3RvbmctZ3UsCi0JCQkJU3V3b24tQ2l0eSBHeWVvbmdnaS1kbyA0NDMtNzQyCi0JCQkJU3V3b24gR3llb25nZ2ktZG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GNC1EQy00RCAgIChoZXgpCQlCZWlqaW5nIENDRCBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLCBMdGQKLUY0REM0RCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIENDRCBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQkxMDcgRG9uZ3NpIE5vcnRoIFN0cmVldCwgRG9uZ2NoZW5nIERpc3RyaWN0LCAKLQkJCQlCZWlqaW5nIFRpYW4gSGFpIENvbW1lcmNpYWwgQnVpbGRpbmcsIFJvb20gODAyLCBCbG9jayBBCi0JCQkJQmVpamluZyAgMTAwMDA3Ci0JCQkJQ0hJTkEKLQotRjQtREMtREEgICAoaGV4KQkJWmh1aGFpIEppYWhlIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sIGxpbWl0ZWQKLUY0RENEQSAgICAgKGJhc2UgMTYpCQlaaHVoYWkgSmlhaGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiwgbGltaXRlZAotCQkJCTQvRixFYXN0IE9mIEI1LFNvdXJ0aCBTb2Z0d2FyZSBQYXJrLFRhbmdqaWEsCi0JCQkJWmh1aGFpIEd1YW5nZG9uZyA1MTkwODUKLQkJCQlDSElOQQotCi1GNC1FMS00MiAgIChoZXgpCQlEZWx0YSBFbGVrdHJvbmlrYSBCVgotRjRFMTQyICAgICAoYmFzZSAxNikJCURlbHRhIEVsZWt0cm9uaWthIEJWCi0JCQkJVmlzc2Vyc2RpamsgNAotCQkJCVppZXJpa3plZSAgNDMwMSBORAotCQkJCU5FVEhFUkxBTkRTCi0KLUY0LUVDLTM4ICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotRjRFQzM4ICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCTEtNkYsIEJ1aWxkaW5nIDIsIFBpbmdzaGFuZGF5dWFuIEluZHVzdHJpYWwsIFNvdXRoIFpvbmUsCi0JCQkJVGFveXVhbiBTdHJlZXQsIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi1GNC1GQy0zMiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotRjRGQzMyICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC0wMy0zMiAgIChoZXgpCQlLaG9tcAotRjgwMzMyICAgICAoYmFzZSAxNikJCUtob21wCi0JCQkJUnVhIEpvZSBDb2xsYWk/b2VvLCAxNjMKLQkJCQlTdGEgTW9uaWNhCi0JCQkJRmxvcmlhbmk/b2Vwb2xpcyBTYW50YSBDYXRhcmluYSA4ODAzNy0wMTAKLQkJCQlCUkFaSUwKLQotRjgtMEYtNDEgICAoaGV4KQkJV2lzdHJvbiBJbmZvQ29tbShaaG9uZ1NoYW4pIENvcnBvcmF0aW9uCi1GODBGNDEgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBJbmZvQ29tbShaaG9uZ1NoYW4pIENvcnBvcmF0aW9uCi0JCQkJVG9yY2ggSGlnaC10ZWNoIEluZHVzdHJpYWwgRGV2ZWxvcG1lbnQgWm9uZSwgCi0JCQkJWmhvbmdTaGFuIEd1YW5nZG9uZyA1Mjg0MzcKLQkJCQlDSElOQQotCi1GOC0wRi04NCAgIChoZXgpCQlOYXR1cmFsIFNlY3VyaXR5IFNBUwotRjgwRjg0ICAgICAoYmFzZSAxNikJCU5hdHVyYWwgU2VjdXJpdHkgU0FTCi0JCQkJMTY1IEF2ZW51ZSBkZSBCcmV0YWduZQotCQkJCUxpbGxlICA1OTAwMAotCQkJCUZSQU5DRQotCi1GOC0xMC0zNyAgIChoZXgpCQlBdG9waWEgU3lzdGVtcywgTFAKLUY4MTAzNyAgICAgKGJhc2UgMTYpCQlBdG9waWEgU3lzdGVtcywgTFAKLQkJCQk2ODEgTi4gUGxhbm8gUm9hZAotCQkJCVN1aXRlIDExOQotCQkJCVJpY2hhcmRzb24gVFggNzUwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LTFELTkzICAgKGhleCkJCUxvbmdkaHVhKEJlaWppbmcpIENvbnRyb2xzIFRlY2hub2xvZ3kgQ28uLEx0ZAotRjgxRDkzICAgICAoYmFzZSAxNikJCUxvbmdkaHVhKEJlaWppbmcpIENvbnRyb2xzIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCVJvb20gMTIwMyxMaXhpYW5nIEJ1aWxkaW5nLCBOby4xMTEgWmhpY2h1biBSb2FkLEhhaWRpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwODYKLQkJCQlDSElOQQotCi1GOC0xRS1ERiAgIChoZXgpCQlBcHBsZSwgSW5jCi1GODFFREYgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtM0QtRkYgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotRjgzREZGICAgICAoYmFzZSAxNikJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUY4LTQ3LTJEICAgKGhleCkJCVgyZ2VuIERpZ2l0YWwgQ29ycC4gTHRkCi1GODQ3MkQgICAgIChiYXNlIDE2KQkJWDJnZW4gRGlnaXRhbCBDb3JwLiBMdGQKLQkJCQkjIDg5LCBTaW5nbG9uZyBSZCAKLQkJCQlUYW95dWFuIEhzaWVuCi0JCQkJUGluLUpoZW4gQ2l0eSwgICAzMjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUY4LTUyLURGICAgKGhleCkJCVZOTCBFdXJvcGUgQUIKLUY4NTJERiAgICAgKGJhc2UgMTYpCQlWTkwgRXVyb3BlIEFCCi0JCQkJRmlubGFuZHNnYXRhbiAxMAotCQkJCVNFIAotCQkJCUtpc3RhICAxNjQgNzQKLQkJCQlTV0VERU4KLQotRjgtNjYtRjIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRjg2NkYyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtNjktNzEgICAoaGV4KQkJU2VpYnUgRWxlY3RyaWMgQ28uLAotRjg2OTcxICAgICAoYmFzZSAxNikJCVNlaWJ1IEVsZWN0cmljIENvLiwKLQkJCQkxNDU4LTcKLQkJCQlIYXphbWEKLQkJCQlIYWNoaW9qaSBUb2t5byAxOTMtMDk0MQotCQkJCUpBUEFOCi0KLUY4LTZFLUNGICAgKGhleCkJCUFyY3ggSW5jCi1GODZFQ0YgICAgIChiYXNlIDE2KQkJQXJjeCBJbmMKLQkJCQkxNTEgQW1iZXIgU3QsIFVuaXQgMQotCQkJCU1hcmtoYW0gT04gTDNSIDNCMwotCQkJCUNBTkFEQQotCi1GOC03MS1GRSAgIChoZXgpCQlUaGUgR29sZG1hbiBTYWNocyBHcm91cCwgSW5jLgotRjg3MUZFICAgICAoYmFzZSAxNikJCVRoZSBHb2xkbWFuIFNhY2hzIEdyb3VwLCBJbmMuCi0JCQkJODUgQnJvYWQgU3RyZWV0Ci0JCQkJTmV3IFlvcmsgTmV3IFlvcmsgMTAwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LTc2LTlCICAgKGhleCkJCU5lb3BpcyBDby4sIEx0ZC4KLUY4NzY5QiAgICAgKGJhc2UgMTYpCQlOZW9waXMgQ28uLCBMdGQuCi0JCQkJIzQwMSBOZW8gYmQuLCAxOTYtNDQgQW55YW5nNy1Eb25nCi0JCQkJTWFuYW4tR3UKLQkJCQlBbnlhbmcgS3lvbmdnaS1EbyA0MzAtODU3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUY4LTdCLTdBICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi1GODdCN0EgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVVMgSFdZIDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC03Qi04QyAgIChoZXgpCQlBbXBlZCBXaXJlbGVzcwotRjg3QjhDICAgICAoYmFzZSAxNikJCUFtcGVkIFdpcmVsZXNzCi0JCQkJMTMwODkgUGV5dG9uIERyLiAjQzMwNwotCQkJCUNoaW5vIEhpbGxzIENBIDkxNzA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC04MS0xQSAgIChoZXgpCQlPVkVSS0laCi1GODgxMUEgICAgIChiYXNlIDE2KQkJT1ZFUktJWgotCQkJCUhFUkEgMgotCQkJCVNpdGUgZCdBcmNoYW1wcwotCQkJCUFyY2hhbXBzICA3NDE2MAotCQkJCUZSQU5DRQotCi1GOC04RC1FRiAgIChoZXgpCQlUZW5lYnJhZXgKLUY4OERFRiAgICAgKGJhc2UgMTYpCQlUZW5lYnJhZXgKLQkJCQkyNyBEcnlkb2NrIEF2ZW51ZQotCQkJCUJvc3RvbiBNQSAwMjIxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtOTEtMkEgICAoaGV4KQkJR0xQIEdlcm1hbiBMaWdodCBQcm9kdWN0cyBHbWJICi1GODkxMkEgICAgIChiYXNlIDE2KQkJR0xQIEdlcm1hbiBMaWdodCBQcm9kdWN0cyBHbWJICi0JCQkJSW0gU3RpP29lY2ttaT9vZWRsZSAxMwotCQkJCUthcmxzYmFkIEJXIDc2MzA3Ci0JCQkJR0VSTUFOWQotCi1GOC05My1GMyAgIChoZXgpCQlWT0xBTlMKLUY4OTNGMyAgICAgKGJhc2UgMTYpCQlWT0xBTlMKLQkJCQkzRiBJSlUgQkQgNzcwLTEzIFlFT0tTQU0tRE9ORwotCQkJCUdBTkdOQU0tR1UKLQkJCQlTRU9VTCAgMTM1LTkyOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GOC05RC0wRCAgIChoZXgpCQlDb250cm9sIFRlY2hub2xvZ3kgSW5jLgotRjg5RDBEICAgICAoYmFzZSAxNikJCUNvbnRyb2wgVGVjaG5vbG9neSBJbmMuCi0JCQkJNzYwOCBOb3J0aCBIdWRzb24gQXZlCi0JCQkJT2tsYWhvbWEgQ2l0eSBPSyA3MzExNgotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtQTktREUgICAoaGV4KQkJUFVJU1NBTkNFIFBMVVMKLUY4QTlERSAgICAgKGJhc2UgMTYpCQlQVUlTU0FOQ0UgUExVUwotCQkJCTIyMiBJbXBhc3NlIExvdWlzIExpP29lcGluZQotCQkJCVouSS4gQWxiYXN1ZCAtIFNlY3RldXIgMwotCQkJCU1vbnRhdWJhbiAgODIwMDAKLQkJCQlGUkFOQ0UKLQotRjgtQUMtNkQgICAoaGV4KQkJRGVsdGVubmEgTHRkCi1GOEFDNkQgICAgIChiYXNlIDE2KQkJRGVsdGVubmEgTHRkCi0JCQkJRmlyc3QgRmxvb3IgVW5pdCAyCi0JCQkJQmVsbGluZ2VyIENsb3NlCi0JCQkJQ2hpcHBlbmhhbSBXaWx0c2hpcmUgU04xNSAxQk4KLQkJCQlVTklURUQgS0lOR0RPTQotCi1GOC1CNS05OSAgIChoZXgpCQlHdWFuZ3pob3UgQ0hOQVZTIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkCi1GOEI1OTkgICAgIChiYXNlIDE2KQkJR3Vhbmd6aG91IENITkFWUyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCUJ1bGlkaW5nIEMsIGluZHVzdHkgYmFzZSBvZiBkaWdpdGFsIGhvbWUgYXBwbGljYXRpb24gYW5kIGRlbW9uc3RyYXRpb24gLHpob25neWkgcm9hZCBHdWFuZ3pob3UgaGlnaGVyIGVkdWNhdGlvbiBtZWdhIGNlbnRlcgotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwMDA2Ci0JCQkJQ0hJTkEKLQotRjgtQzAtOTEgICAoaGV4KQkJSGlnaGdhdGVzIFRlY2hub2xvZ3kKLUY4QzA5MSAgICAgKGJhc2UgMTYpCQlIaWdoZ2F0ZXMgVGVjaG5vbG9neQotCQkJCTE0MTUgSGlnaGdhdGUgQXZlCi0JCQkJTG9zIEFuZ2VsZXMgQ0EgOTAwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LUM2LTc4ICAgKGhleCkJCUNhcmVmdXNpb24KLUY4QzY3OCAgICAgKGJhc2UgMTYpCQlDYXJlZnVzaW9uCi0JCQkJMTAwMjAgUGFjaWZpYyBNZXNhIEJsdmQKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LUQ3LTU2ICAgKGhleCkJCVNpbW0gVHJvbmljIExpbWl0ZWQgCi1GOEQ3NTYgICAgIChiYXNlIDE2KQkJU2ltbSBUcm9uaWMgTGltaXRlZCAKLQkJCQlVbml0IDMsIFdhdGVyc2lkZQotCQkJCUNoYXJsdG9uIE1lYWQgTGFuZQotCQkJCUhvZGRlc2RvbiBIZXJ0Zm9yZHNoaXJlIEVOMTEgMFFSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotRjgtREEtRTIgICAoaGV4KQkJQmV0YSBMYXNlck1pa2UKLUY4REFFMiAgICAgKGJhc2UgMTYpCQlCZXRhIExhc2VyTWlrZQotCQkJCTgwMDEgVGVjaG5vbG9neSBCbHZkCi0JCQkJRGF5dG9uIE9IIDQ1NDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC1EQS1GNCAgIChoZXgpCQlUYWlzaGFuIE9ubGluZSBUZWNobm9sb2d5IENvLiwgTHRkLgotRjhEQUY0ICAgICAoYmFzZSAxNikJCVRhaXNoYW4gT25saW5lIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNC9GIEZhbmdkYSBCdWlsZGluZywgU291dGggQXJlYSwgSGktdGVjaCBJbmR1c3RpYWwgUGFyaywgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUY4LURCLTdGICAgKGhleCkJCUhUQyBDb3Jwb3JhdGlvbgotRjhEQjdGICAgICAoYmFzZSAxNikJCUhUQyBDb3Jwb3JhdGlvbgotCQkJCU5vLjIzIFhpbmdodWEgUm9hZAotCQkJCVRhb3l1YW4gQ2l0eQotCQkJCVRhb3l1YW4gQ291bnR5ICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUY4LURDLTdBICAgKGhleCkJCVZhcmlzY2l0ZSBMVEQKLUY4REM3QSAgICAgKGJhc2UgMTYpCQlWYXJpc2NpdGUgTFRECi0JCQkJNjAgTWVkaW5hdCBIYXllaHVkaW0gc3QuCi0JCQkJSGVydHplbGlhICA0NjcyMgotCQkJCUlTUkFFTAotCi1GOC1FOS02OCAgIChoZXgpCQlFZ2tlciBLZnQuCi1GOEU5NjggICAgIChiYXNlIDE2KQkJRWdrZXIgS2Z0LgotCQkJCVN6dWdsbyB1LiA0OS4KLQkJCQlCdWRhcGVzdCAgMTE0NQotCQkJCUhVTkdBUlkKLQotRjgtRUEtMEEgICAoaGV4KQkJRGlwbC4tTWF0aC4gTWljaGFlbCBSYXVjaAotRjhFQTBBICAgICAoYmFzZSAxNikJCURpcGwuLU1hdGguIE1pY2hhZWwgUmF1Y2gKLQkJCQlLYXBlbGxlbnN0ci4gMzEKLQkJCQlCcmV0dGVuIEJhV2k/b2UgNzUwMTUKLQkJCQlHRVJNQU5ZCi0KLUY4LUYwLTE0ICAgKGhleCkJCVJhY2tXYXJlIEluYy4KLUY4RjAxNCAgICAgKGJhc2UgMTYpCQlSYWNrV2FyZSBJbmMuCi0JCQkJNDQwNTMgRnJlbW9udCBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LUZCLTJGICAgKGhleCkJCVNhbnR1ciBDb3Jwb3JhdGlvbgotRjhGQjJGICAgICAoYmFzZSAxNikJCVNhbnR1ciBDb3Jwb3JhdGlvbgotCQkJCTQwOTMxIEVuY3ljbG9wZWRpYSBDaXJjbGUKLQkJCQlGcmVtb250IENhbGlmb3JuaWEgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLTA4LTc3ICAgKGhleCkJCVByZW50a2UgUm9taWNoIENvbXBhbnkKLUZDMDg3NyAgICAgKGJhc2UgMTYpCQlQcmVudGtlIFJvbWljaCBDb21wYW55Ci0JCQkJMTAyMiBIZXlsIFJkCi0JCQkJV29vc3RlciBPSCA0NDY5MQotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtMEYtRTYgICAoaGV4KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4gCi1GQzBGRTYgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4gCi0JCQkJMS03LTEgS29uYW4KLQkJCQlNaW5hdG8ta3UgIFRva3lvIDEwOC0wMDc1IAotCQkJCUpBUEFOCi0KLUZDLTEwLUJEICAgKGhleCkJCUNvbnRyb2wgU2lzdGVtYXRpemFkbyBTLkEuCi1GQzEwQkQgICAgIChiYXNlIDE2KQkJQ29udHJvbCBTaXN0ZW1hdGl6YWRvIFMuQS4KLQkJCQlDcmEgNDMgTiAzMSA1MgotCQkJCU1lZGVsbGluIEFudGlvcXVpYSAxMDEwMQotCQkJCUNPTE9NQklBCi0KLUZDLTFGLUMwICAgKGhleCkJCUVVUkVDQU0KLUZDMUZDMCAgICAgKGJhc2UgMTYpCQlFVVJFQ0FNCi0JCQkJQkFUIDkgLSBNaW5pcGFyYwotCQkJCTYgQXZlbnVlIGRlcyBBbmRlcwotCQkJCUxFUyBVTElTICA5MTk0MAotCQkJCUZSQU5DRQotCi1GQy0yRS0yRCAgIChoZXgpCQlMb3JvbSBJbmR1c3RyaWFsIENvLkxURC4KLUZDMkUyRCAgICAgKGJhc2UgMTYpCQlMb3JvbSBJbmR1c3RyaWFsIENvLkxURC4KLQkJCQlGMS4xMyxSbS4yLE5vLjc4LFNlYy4yLEFuLUhvUmQuCi0JCQkJVGFpcGVpICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUZDLTJGLTQwICAgKGhleCkJCUNhbHhlZGEsIEluYy4KLUZDMkY0MCAgICAgKGJhc2UgMTYpCQlDYWx4ZWRhLCBJbmMuCi0JCQkJNzAwMCBOb3J0aCBNb3BhYyBFeHByZXNzd2F5Ci0JCQkJU3VpdGUgMjUwCi0JCQkJQXVzdGluIFRYIDc4NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GQy0zNS05OCAgIChoZXgpCQlGYXZpdGUgSW5jLgotRkMzNTk4ICAgICAoYmFzZSAxNikJCUZhdml0ZSBJbmMuCi0JCQkJTm8uMTksIExhbmUgNzgsIFlhbmhlIFN0LiwKLQkJCQlKaHViZWkgQ2l0eSBIc2luY2h1IENvdW50eSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUZDLTQ0LTYzICAgKGhleCkJCVVuaXZlcnNhbCBBdWRpbwotRkM0NDYzICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBBdWRpbwotCQkJCTE3MDAgR3JlZW4gSGlsbHMgUm9hZAotCQkJCVNjb3R0cyBWYWxsZXkgQ0EgOTUwNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLTVCLTI0ICAgKGhleCkJCVdlaWJlbCBTY2llbnRpZmljIEEvUwotRkM1QjI0ICAgICAoYmFzZSAxNikJCVdlaWJlbCBTY2llbnRpZmljIEEvUwotCQkJCVNvbHZhbmcgMzAKLQkJCQlBbGxlcm9lZCAgMzQ1MAotCQkJCURFTk1BUksKLQotRkMtNjEtOTggICAoaGV4KQkJTkVDIFBlcnNvbmFsIFByb2R1Y3RzLCBMdGQKLUZDNjE5OCAgICAgKGJhc2UgMTYpCQlORUMgUGVyc29uYWwgUHJvZHVjdHMsIEx0ZAotCQkJCTYtODAsIFNoaW1vaGFuYXphd2EgMi1jaG9tZSwKLQkJCQlZb25lemF3YS1zaGkgWWFtYWdhdGEgOTkyLTg1MjAKLQkJCQlKQVBBTgotCi1GQy02OC0zRSAgIChoZXgpCQlEaXJlY3RlZCBQZXJjZXB0aW9uLCBJbmMKLUZDNjgzRSAgICAgKGJhc2UgMTYpCQlEaXJlY3RlZCBQZXJjZXB0aW9uLCBJbmMKLQkJCQk4OTBDIENvd2FuIFJvYWQKLQkJCQlCdXJsaW5nYW1lIENhbGlmb3JuaWEgOTQwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLTZDLTMxICAgKGhleCkJCUxYaW5zdHJ1bWVudHMgR21iSAotRkM2QzMxICAgICAoYmFzZSAxNikJCUxYaW5zdHJ1bWVudHMgR21iSAotCQkJCUhlcnJlbmJlcmdlciBTdHIuIDEzMAotCQkJCUJvZWJsaW5nZW4gIDcxMDM0Ci0JCQkJR0VSTUFOWQotCi1GQy03NS1FNiAgIChoZXgpCQlIYW5kcmVhbW5ldAotRkM3NUU2ICAgICAoYmFzZSAxNikJCUhhbmRyZWFtbmV0Ci0JCQkJIzEyMDkgTWFyaW9Ub3dlciwgMjIyLTEyLCBHdXJvLURvbmcsIEd1cm8tR3UKLQkJCQlTZW91bCBHdXJvLUd1IDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRkMtN0MtRTcgICAoaGV4KQkJRkNJIFVTQSBMTEMKLUZDN0NFNyAgICAgKGJhc2UgMTYpCQlGQ0kgVVNBIExMQwotCQkJCTgyNSBPbGQgVHJhaWwgUm9hZAotCQkJCUV0dGVycyBQQSAxNzMxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtODMtMjkgICAoaGV4KQkJVHJlaSB0ZWNobmljcwotRkM4MzI5ICAgICAoYmFzZSAxNikJCVRyZWkgdGVjaG5pY3MKLQkJCQk4MDEgTm9ydGhwb2ludCBQa3d5Ci0JCQkJU3RlIDU0Ci0JCQkJV2VzdCBQYWxtIEJlYWNoIEZsb3JpZGEgMzM0MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLThFLTdFICAgKGhleCkJCVBhY2UgRnJhbmNlCi1GQzhFN0UgICAgIChiYXNlIDE2KQkJUGFjZSBGcmFuY2UKLQkJCQkzMywgcnVlIGRlIFZlcmR1bgotCQkJCUJQNDQKLQkJCQlTdXJlc25lcyAgOTIxNTIKLQkJCQlGUkFOQ0UKLQotRkMtQTEtM0UgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotRkNBMTNFICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRkMtQTgtNDEgICAoaGV4KQkJQXZheWEsIEluYwotRkNBODQxICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtQUYtNkEgICAoaGV4KQkJQ29uZW10ZWNoIEFCCi1GQ0FGNkEgICAgIChiYXNlIDE2KQkJQ29uZW10ZWNoIEFCCi0JCQkJVG9yc2hhbW5zZ2F0YW4gMzUKLQkJCQlLaXN0YSAgU0UtMTY0NDAKLQkJCQlTV0VERU4KLQotRkMtQ0MtRTQgICAoaGV4KQkJQXNjb24gTHRkLgotRkNDQ0U0ICAgICAoYmFzZSAxNikJCUFzY29uIEx0ZC4KLQkJCQkxLTE1LTI3IE1pbmF0by1tYWNoaSAKLQkJCQlGdWt1eWFtYSBpP29lc2hpIEhpcm9zaGltYS1rZW4gNzIxLTA5NjQKLQkJCQlKQVBBTgotCi1GQy1DRi02MiAgIChoZXgpCQlJQk0gQ29ycAotRkNDRjYyICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMjA1MSBNaXNzaW9uIENvbGxlZ2UgQmx2ZCAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtRDQtRjIgICAoaGV4KQkJVGhlIENvY2EgQ29sYSBDb21wYW55Ci1GQ0Q0RjIgICAgIChiYXNlIDE2KQkJVGhlIENvY2EgQ29sYSBDb21wYW55Ci0JCQkJT25lIENvY2EgQ29sYSBQbGF6YQotCQkJCUF0bGFudGEgR0EgMzAzMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLUQ0LUY2ICAgKGhleCkJCU1lc3NhbmEgQWlyLlJheSBDb25kaXRpb25pbmcgcy5yLmwuCi1GQ0Q0RjYgICAgIChiYXNlIDE2KQkJTWVzc2FuYSBBaXIuUmF5IENvbmRpdGlvbmluZyBzLnIubC4KLQkJCQlWaWEgVmVuZXppYSAxOAotCQkJCU9kZXJ6byBUViAzMTA0NgotCQkJCUlUQUxZCi0KLUZDLUUxLTkyICAgKGhleCkJCVNpY2h1YW4gSmlud2FuZ3RvbmcgRWxlY3Ryb25pYyBTY2llbmNlJlRlY2hub2xvZ3kgQ28sLkx0ZAotRkNFMTkyICAgICAoYmFzZSAxNikJCVNpY2h1YW4gSmlud2FuZ3RvbmcgRWxlY3Ryb25pYyBTY2llbmNlJlRlY2hub2xvZ3kgQ28sLkx0ZAotCQkJCU5vLjI4LFhpbmNodWFuZyBSZC4sV2VzdCBHYW94aW4gRGlzdHJpY3QKLQkJCQlDaGVuZ2R1IFNpY2h1YW4gNjExNzMxCi0JCQkJQ0hJTkEKLQotRkMtRTItM0YgICAoaGV4KQkJQ0xBWSBQQUtZIFNQQQotRkNFMjNGICAgICAoYmFzZSAxNikJCUNMQVkgUEFLWSBTUEEKLQkJCQlWaWEgUGFzdHJlbmdvIDMvYgotCQkJCVNlcmlhdGUgQmVyZ2FtbyAyNDA2OAotCQkJCUlUQUxZCi0KLUZDLUU1LTU3ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1GQ0U1NTcgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotRkMtRUQtQjkgICAoaGV4KQkJQXJyYXllbnQKLUZDRURCOSAgICAgKGJhc2UgMTYpCQlBcnJheWVudAotCQkJCTU3MCBFbCBDYW1pbm8gUmVhbCAjMTUwLTQxOQotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtRjEtQ0QgICAoaGV4KQkJT1BURVgtRkEgQ08uLExURC4KLUZDRjFDRCAgICAgKGJhc2UgMTYpCQlPUFRFWC1GQSBDTy4sTFRELgotCQkJCTkxIEF3YXRhLWNobwotCQkJCUNodWRvamkgU2hpbW9neW8ta3UKLQkJCQlLeW90byAgNjAwLTg4MTUKLQkJCQlKQVBBTgotCi1GQy1GQS1GNyAgIChoZXgpCQlTaGFuZ2hhaSBCYXVkIERhdGEgQ29tbXVuaWNhdGlvbiBDby4sTHRkLgotRkNGQUY3ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEJhdWQgRGF0YSBDb21tdW5pY2F0aW9uIENvLixMdGQuCi0JCQkJTk8uMTIzIEpVTEkgUkQKLQkJCQlQVURPTkcgWkhBTkdKSUFORyBISUdILVRFQ0ggUEFSSwotCQkJCVNIQU5HSEFJICAyMDEyMDMKLQkJCQlDSElOQQotCi1GQy1GQi1GQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1GQ0ZCRkIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RhdGEvb3VpLWlzby04ODU5LTE1LnR4dCBiL2NsaS9jbGkvZGF0YS9vdWktaXNvLTg4NTktMTUudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhYmE2ZTcwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGF0YS9vdWktaXNvLTg4NTktMTUudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOTUwOTIgKzAsMCBAQAotCi1PVUkJCQkJT3JnYW5pemF0aW9uCi1jb21wYW55X2lkCQkJT3JnYW5pemF0aW9uCi0JCQkJQWRkcmVzcwotCi0KLTAwLTAwLTAwICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDAgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQlNL1MgMTA1LTUwQwotCQkJCTgwMCBQSElMTElQUyBST0FECi0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMDEgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDAwMSAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCVpFUk9YIFNZU1RFTVMgSU5TVElUVVRFCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wMiAgIChoZXgpCQlYRVJPWCBDT1JQT1JBVElPTgotMDAwMDAyICAgICAoYmFzZSAxNikJCVhFUk9YIENPUlBPUkFUSU9OCi0JCQkJWEVST1ggU1lTVEVNUyBJTlNUSVRVVEUKLQkJCQlNL1MgMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRAotCQkJCVdFQlNURVIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTAzICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDMgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQlaRVJPWCBTWVNURU1TIElOU1RJVFVURQotCQkJCU0vUyAxMDUtNTBDRVcgQVZFTlVFIDgwMCBQSElMTElQUyBST0FECi0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMDQgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDAwNCAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCU9GRklDRSBTWVNURU1TIERJVklTSU9OCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQ0Ci0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMDUgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDAwNSAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCU9GRklDRSBTWVNURU1TIERJVklTSU9OCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wNiAgIChoZXgpCQlYRVJPWCBDT1JQT1JBVElPTgotMDAwMDA2ICAgICAoYmFzZSAxNikJCVhFUk9YIENPUlBPUkFUSU9OCi0JCQkJT0ZGSUNFIFNZU1RFTVMgRElWSVNJT04KLQkJCQlNL1MgMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRDQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wNyAgIChoZXgpCQlYRVJPWCBDT1JQT1JBVElPTgotMDAwMDA3ICAgICAoYmFzZSAxNikJCVhFUk9YIENPUlBPUkFUSU9OCi0JCQkJT0ZGSUNFIFNZU1RFTVMgRElWSVNJT04KLQkJCQlNL1MgMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRAotCQkJCVdFQlNURVIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTA4ICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDggICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQlPRkZJQ0UgU1lTVEVNUyBESVZJU0lPTgotCQkJCU0vUy8gMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRAotCQkJCVdFQlNURVIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTA5ICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDkgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQkxMzUwIEpFRkZFUlNPTiBST0FECi0JCQkJUk9DSEVTVEVSIE5ZIDE0NjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wQSAgIChoZXgpCQlPTVJPTiBUQVRFSVNJIEVMRUNUUk9OSUNTIENPLgotMDAwMDBBICAgICAoYmFzZSAxNikJCU9NUk9OIFRBVEVJU0kgRUxFQ1RST05JQ1MgQ08uCi0JCQkJU0VDVElPTiBORkYsIFNZU1RFTSBSJkQgTEFCUy4KLQkJCQlSRVNFQVJDSCAmIFRFQ0guIEFTU0VTU01OVCBESVYgU0hJTU9LQUlJCi0JCQkJS1lPVE8gNjE3IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDAtMEIgICAoaGV4KQkJTUFUUklYIENPUlBPUkFUSU9OCi0wMDAwMEIgICAgIChiYXNlIDE2KQkJTUFUUklYIENPUlBPUkFUSU9OCi0JCQkJMTIwMyBORVcgSE9QRSBST0FECi0JCQkJUkFMRUlHSCBOT1JUSCBDQVJPTElOQSAgMjc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wQyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDAwMEMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTBEICAgKGhleCkJCUZJQlJPTklDUyBMVEQuCi0wMDAwMEQgICAgIChiYXNlIDE2KQkJRklCUk9OSUNTIExURC4KLQkJCQlNQVRBTSBURUNITk9MT0dZIENFTlRFUgotCQkJCUhBSUZBIDMxOTA1Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAwLTBFICAgKGhleCkJCUZVSklUU1UgTElNSVRFRAotMDAwMDBFICAgICAoYmFzZSAxNikJCUZVSklUU1UgTElNSVRFRAotCQkJCU11c2FzaGkta29zdWdpIFRvd2VyIFBsYWNlIEJsZGcuLAotCQkJCUtvc3VnaS1jaG8gMS1jaG9tZSxOYWthaGFyYS1rdQotCQkJCUtBV0FTQUtJIDIxMSBLYW5hZ2F3YSAKLQkJCQlKQVBBTgotCi0wMC0wMC0wRiAgIChoZXgpCQlORVhULCBJTkMuCi0wMDAwMEYgICAgIChiYXNlIDE2KQkJTkVYVCwgSU5DLgotCQkJCTM0NzUgREVFUiBDUkVFSyBST0FECi0JCQkJUEFMTyBBTFRPIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xMCAgIChoZXgpCQlTWVRFSyBJTkMuCi0wMDAwMTAgICAgIChiYXNlIDE2KQkJU1lURUsgSU5DLgotCQkJCTEyMjUgQ0hBUkxFU1RPTiBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMTEgICAoaGV4KQkJTk9STUVSRUwgU1lTVEVNRVMKLTAwMDAxMSAgICAgKGJhc2UgMTYpCQlOT1JNRVJFTCBTWVNURU1FUwotCQkJCTU4IFJVRSBQT1RUSUVSCi0JCQkJNzgxNTAgTEUgQ0hFU05BWQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMC0xMiAgIChoZXgpCQlJTkZPUk1BVElPTiBURUNITk9MT0dZIExJTUlURUQKLTAwMDAxMiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBURUNITk9MT0dZIExJTUlURUQKLQkJCQlNQVlMQU5EUyBBVkUuIEhFTUVMIEhFTVBTVEVBRAotCQkJCUhFUlRTIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0xMyAgIChoZXgpCQlDQU1FWAotMDAwMDEzICAgICAoYmFzZSAxNikJCUNBTUVYCi0JCQkJNzUgS05FRUxBTkQgU1RSRUVUCi0JCQkJQk9TVE9OIE1BIDAyMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xNCAgIChoZXgpCQlORVRST05JWAotMDAwMDE0ICAgICAoYmFzZSAxNikJCU5FVFJPTklYCi0JCQkJMTM3MiBNQ0RPV0VMTCBCTFZELgotCQkJCVBFVFVMQU1BIENBIDk0OTUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xNSAgIChoZXgpCQlEQVRBUE9JTlQgQ09SUE9SQVRJT04KLTAwMDAxNSAgICAgKGJhc2UgMTYpCQlEQVRBUE9JTlQgQ09SUE9SQVRJT04KLQkJCQk5NzI1IERBVEFQT0lOVCBEUklWRQotCQkJCU1TIFMtMzcKLQkJCQlTQU4gQU5UT05JTyBUWCA3ODI4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMTYgICAoaGV4KQkJRFUgUE9OVCBQSVhFTCBTWVNURU1TICAgICAuCi0wMDAwMTYgICAgIChiYXNlIDE2KQkJRFUgUE9OVCBQSVhFTCBTWVNURU1TICAgICAuCi0JCQkJTUVBRExBS0UgUExBQ0UKLQkJCQlUSE9SUEUgTEVBIFJPQUQgRUdIQU0sIFNVUlJFWSBUVzIwIDhIRQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0xNyAgIChoZXgpCQlURUtFTEVDCi0wMDAwMTcgICAgIChiYXNlIDE2KQkJVEVLRUxFQwotCQkJCTI2NTQwIEFHT1VSQSBST0FECi0JCQkJQ0FMQUJBU0FTIENBIDkxMzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xOCAgIChoZXgpCQlXRUJTVEVSIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMDAwMTggICAgIChiYXNlIDE2KQkJV0VCU1RFUiBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTE2MDQwIFJFRFdPT0QgTE9ER0UgUk9BRAotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMy05MjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xOSAgIChoZXgpCQlBUFBMSUVEIERZTkFNSUNTIElOVEVSTkFUSU9OQUwKLTAwMDAxOSAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIERZTkFNSUNTIElOVEVSTkFUSU9OQUwKLQkJCQkzODAwIFNUT05FIFNDSE9PTCBST0FECi0JCQkJQU5OIEFSQk9SIE1JIDQ4MTA0LTI0OTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTFBICAgKGhleCkJCUFEVkFOQ0VEIE1JQ1JPIERFVklDRVMKLTAwMDAxQSAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBNSUNSTyBERVZJQ0VTCi0JCQkJUC5PLiBCT1ggMzQ1MwotCQkJCU0vUyAyNgotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMUIgICAoaGV4KQkJTk9WRUxMIElOQy4KLTAwMDAxQiAgICAgKGJhc2UgMTYpCQlOT1ZFTEwgSU5DLgotCQkJCTEyMiBFQVNUIDE3MDAgU09VVEgKLQkJCQlNL1M6IEUtMTItMQotCQkJCVBST1ZPIFVUIDg0NjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xQyAgIChoZXgpCQlCRUxMIFRFQ0hOT0xPR0lFUwotMDAwMDFDICAgICAoYmFzZSAxNikJCUJFTEwgVEVDSE5PTE9HSUVTCi0JCQkJMzMwIFdBUlJFTiBBVkVOVUUKLQkJCQlGUkVNT05UIENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xRCAgIChoZXgpCQlDQUJMRVRST04gU1lTVEVNUywgSU5DLgotMDAwMDFEICAgICAoYmFzZSAxNikJCUNBQkxFVFJPTiBTWVNURU1TLCBJTkMuCi0JCQkJMzUgSU5EVVNUUklBTCBXQVkKLQkJCQlQLk8uIEJPWCA1MDA1Ci0JCQkJUk9DSEVTVEVSIE5IIDAzODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xRSAgIChoZXgpCQlURUxTSVNUIElORFVTVFJJQSBFTEVDVFJPTklDQQotMDAwMDFFICAgICAoYmFzZSAxNikJCVRFTFNJU1QgSU5EVVNUUklBIEVMRUNUUk9OSUNBCi0JCQkJUlVBIFZJTEhFTkEgREUgTU9SQUVTLCAzODAKLQkJCQlCQVJSQSBEQSBUSUpVQ0EgUklPIERFIEpBTkVJUk8sIFJKIENFUCAyCi0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLTAwLTFGICAgKGhleCkJCVRlbGNvIFN5c3RlbXMsIEluYy4KLTAwMDAxRiAgICAgKGJhc2UgMTYpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTUgQmVya3NoaXJlIFJvYWQKLQkJCQlNYW5zZmllbGQgTUEgMDIwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTIwICAgKGhleCkJCURBVEFJTkRVU1RSSUVSIERJQUIgQUIKLTAwMDAyMCAgICAgKGJhc2UgMTYpCQlEQVRBSU5EVVNUUklFUiBESUFCIEFCCi0JCQkJQk9YIDIwMjkKLQkJCQlTLTE4MyAwMiBUQUJZCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAwLTIxICAgKGhleCkJCVNVUkVNQU4gQ09NUC4gJiBDT01NVU4uIENPUlAuCi0wMDAwMjEgICAgIChiYXNlIDE2KQkJU1VSRU1BTiBDT01QLiAmIENPTU1VTi4gQ09SUC4KLQkJCQkxMEYtNSBOTy4gNywgIFNFQy4gMwotCQkJCUhTSU4gU0hFTkcgTi4gUkQuLAotCQkJCVRBSVBFSSBUQUlXQU4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDAtMjIgICAoaGV4KQkJVklTVUFMIFRFQ0hOT0xPR1kgSU5DLgotMDAwMDIyICAgICAoYmFzZSAxNikJCVZJU1VBTCBURUNITk9MT0dZIElOQy4KLQkJCQkxNzAzIE1JRERMRVNFWCBTVFJFRVQKLQkJCQlMT1dFTEwgTUEgMDE4NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTIzICAgKGhleCkJCUFCQiBJTkRVU1RSSUFMIFNZU1RFTVMgQUIKLTAwMDAyMyAgICAgKGJhc2UgMTYpCQlBQkIgSU5EVVNUUklBTCBTWVNURU1TIEFCCi0JCQkJREVQVC4gU0VJU1kvTEtTQgotCQkJCVMtNzIxIDY3IFZBU1RFUkFTCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAwLTI0ICAgKGhleCkJCUNPTk5FQ1QgQVMKLTAwMDAyNCAgICAgKGJhc2UgMTYpCQlDT05ORUNUIEFTCi0JCQkJSE9FUktBRVIgNy05Ci0JCQkJREsgMjczMCBIRVJMRVYKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC0wMC0yNSAgIChoZXgpCQlSQU1URUsgQ09SUC4KLTAwMDAyNSAgICAgKGJhc2UgMTYpCQlSQU1URUsgQ09SUC4KLQkJCQk4MTAgVy4gTUFVREUgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0yNiAgIChoZXgpCQlTSEEtS0VOIENPLiwgTFRELgotMDAwMDI2ICAgICAoYmFzZSAxNikJCVNIQS1LRU4gQ08uLCBMVEQuCi0JCQkJTUlOQU1JLU9UU1VLQQotCQkJCTItMjYtMTMsIFRPU0hJTUEtS1UKLQkJCQlUT0tZTyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTI3ICAgKGhleCkJCUpBUEFOIFJBRElPIENPTVBBTlkKLTAwMDAyNyAgICAgKGJhc2UgMTYpCQlKQVBBTiBSQURJTyBDT01QQU5ZCi0JCQkJTEFCT1JBVE9SWQotCQkJCTUtMS0xIFNISU1PUkVOSkFLVSBNSVRBS0EtU0hJLCBUT0tZTwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDAtMjggICAoaGV4KQkJUFJPRElHWSBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDAwMjggICAgIChiYXNlIDE2KQkJUFJPRElHWSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMjYwMSBDQVNFWSBEUklWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTI5ICAgKGhleCkJCUlNQyBORVRXT1JLUyBDT1JQLgotMDAwMDI5ICAgICAoYmFzZSAxNikJCUlNQyBORVRXT1JLUyBDT1JQLgotCQkJCTE2OTMxIE1JTExJS0VOIEFWRS4KLQkJCQlJUlZJTkUgQ0EgOTI3MTQtNTAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMkEgICAoaGV4KQkJVFJXIC0gU0VERC9JTlAKLTAwMDAyQSAgICAgKGJhc2UgMTYpCQlUUlcgLSBTRUREL0lOUAotCQkJCTE4MDAgR0xFTk4gQ1VSVElTUyBTVFJFRVQKLQkJCQlNL1MgREg2LzI4MjYKLQkJCQlDQVJTT04gQ0EgOTA3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTJCICAgKGhleCkJCUNSSVNQIEFVVE9NQVRJT04sIElOQwotMDAwMDJCICAgICAoYmFzZSAxNikJCUNSSVNQIEFVVE9NQVRJT04sIElOQwotCQkJCTUxNjAgQkxBWkVSIFBBUktXQVkKLQkJCQlEVUJMSU4gT0ggNDMwMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTJDICAgKGhleCkJCUFVVE9UT1RFIExJTUlURUQKLTAwMDAyQyAgICAgKGJhc2UgMTYpCQlBVVRPVE9URSBMSU1JVEVECi0JCQkJMTAwIEJFTExFVlVFIFJPQUQKLQkJCQlORVdBUksgREVMQVdBUkUgMTk3MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTJEICAgKGhleCkJCUNIUk9NQVRJQ1MgSU5DCi0wMDAwMkQgICAgIChiYXNlIDE2KQkJQ0hST01BVElDUyBJTkMKLQkJCQkyNTU4IE1PVU5UQUlOIElORFVTVFJJQUwgQkxWRAotCQkJCVRVQ0tFUiBHQSAzMDA4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMkUgICAoaGV4KQkJU09DSUVURSBFVklSQQotMDAwMDJFICAgICAoYmFzZSAxNikJCVNPQ0lFVEUgRVZJUkEKLQkJCQlaT05FIFBPUlRVQUlSRSBERSBCUkVHQUlMTE9OCi0JCQkJODM1MDAgTEEgU0VZTkUgU1VSIE1FUgotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMC0yRiAgIChoZXgpCQlUSU1FUExFWCBJTkMuCi0wMDAwMkYgICAgIChiYXNlIDE2KQkJVElNRVBMRVggSU5DLgotCQkJCTUzMCBDSEVTVE5VVCBSSURHRSBST0FECi0JCQkJV09PRENMSUZGIExBS0UgTkogMDc2NzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTMwICAgKGhleCkJCVZHIExBQk9SQVRPUlkgU1lTVEVNUyBMVEQKLTAwMDAzMCAgICAgKGJhc2UgMTYpCQlWRyBMQUJPUkFUT1JZIFNZU1RFTVMgTFRECi0JCQkJVFJJQlVORSBBVkVOVUUKLQkJCQlBTFRSSU5DSEFNLCBNQU5DSEVTVEVSLCBXQTE0IDVUUAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0zMSAgIChoZXgpCQlRUFNYIENPTU1VTklDQVRJT05TIFBUWSBMVEQKLTAwMDAzMSAgICAgKGJhc2UgMTYpCQlRUFNYIENPTU1VTklDQVRJT05TIFBUWSBMVEQKLQkJCQkzMyBSSUNIQVJEU09OIFNUUkVFVAotCQkJCVdFU1QgUEVSVEggNjAwNQotCQkJCVdFU1RFUk4gQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTAwLTMyICAgKGhleCkJCU1hcmNvbmkgcGxjCi0wMDAwMzIgICAgIChiYXNlIDE2KQkJTWFyY29uaSBwbGMKLQkJCQkyOCBFTFNUUkVFIFdBWSwgQk9SRUhBTVdPT0QKLQkJCQlIRVJURk9SRFNISVJFIFdENiAxUlgKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLTMzICAgKGhleCkJCUVHQU4gTUFDSElORVJZIENPTVBBTlkKLTAwMDAzMyAgICAgKGJhc2UgMTYpCQlFR0FOIE1BQ0hJTkVSWSBDT01QQU5ZCi0JCQkJU09VVEggQURBTVNWSUxMRSBST0FECi0JCQkJU09NTUVSVklMTEUgTkogMDg4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTM0ICAgKGhleCkJCU5FVFdPUksgUkVTT1VSQ0VTIENPUlBPUkFUSU9OCi0wMDAwMzQgICAgIChiYXNlIDE2KQkJTkVUV09SSyBSRVNPVVJDRVMgQ09SUE9SQVRJT04KLQkJCQk2MSBFQVNUIERBR0dFVFQgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMzUgICAoaGV4KQkJU1BFQ1RSQUdSQVBISUNTIENPUlBPUkFUSU9OCi0wMDAwMzUgICAgIChiYXNlIDE2KQkJU1BFQ1RSQUdSQVBISUNTIENPUlBPUkFUSU9OCi0JCQkJICAgIE9SCi0JCQkJTEFOIE1BTlVGQUNUVVJJTkcgRU5HSU5FRVIgOTcwNyBXQVBMRVMgUwotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMzYgICAoaGV4KQkJQVRBUkkgQ09SUE9SQVRJT04KLTAwMDAzNiAgICAgKGJhc2UgMTYpCQlBVEFSSSBDT1JQT1JBVElPTgotCQkJCTExOTYgQk9SUkVHQVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0zNyAgIChoZXgpCQlPWEZPUkQgTUVUUklDUyBMSU1JVEVECi0wMDAwMzcgICAgIChiYXNlIDE2KQkJT1hGT1JEIE1FVFJJQ1MgTElNSVRFRAotCQkJCVVOSVQgOCwgNyBXRVNUIFdBWSwKLQkJCQlCT1RMRVksT1hGT1JELCBPWDIgT0pCCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0zOCAgIChoZXgpCQlDU1MgTEFCUwotMDAwMDM4ICAgICAoYmFzZSAxNikJCUNTUyBMQUJTCi0JCQkJMjEzNCBTT1VUSCBSSVBDSEVZCi0JCQkJU0FOVEEgQU5BIENBIDkyNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0zOSAgIChoZXgpCQlUT1NISUJBIENPUlBPUkFUSU9OCi0wMDAwMzkgICAgIChiYXNlIDE2KQkJVE9TSElCQSBDT1JQT1JBVElPTgotCQkJCUNPTVBVVEVSIERJVklTSU9OCi0JCQkJMS0xLTEgU0hJQkFVUkEsIE1JTkFUTy1LVQotCQkJCVRPS1lPIDEwNSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTNBICAgKGhleCkJCUNIWVJPTiBDT1JQT1JBVElPTgotMDAwMDNBICAgICAoYmFzZSAxNikJCUNIWVJPTiBDT1JQT1JBVElPTgotCQkJCTI2NSBTUEFHTk9MSSBST0FECi0JCQkJTUVMVklMTEUgTlkgMTE3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTNCICAgKGhleCkJCWkgQ29udHJvbHMsIEluYy4KLTAwMDAzQiAgICAgKGJhc2UgMTYpCQlpIENvbnRyb2xzLCBJbmMuCi0JCQkJMTJGIERvb25zYW4gYnVpbGRpbmcsIDEwNS03Ci0JCQkJTm9uaHl1bi1kb25nLCBHYW5nbmFtLWd1IFNlb3VsCi0JCQkJS09SRUEgMTM1LTcxNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMC0zQyAgIChoZXgpCQlBVVNQRVggU1lTVEVNUyBJTkMuCi0wMDAwM0MgICAgIChiYXNlIDE2KQkJQVVTUEVYIFNZU1RFTVMgSU5DLgotCQkJCTUyMDAgR1JFQVQgQU1FUklDQSBQS1dZCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTNEICAgKGhleCkJCVVOSVNZUwotMDAwMDNEICAgICAoYmFzZSAxNikJCVVOSVNZUwotCQkJCU1TOC0wMTAKLQkJCQlQLk8uIEJPWCA2Njg1Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxNTAtNjY4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtM0UgICAoaGV4KQkJU0lNUEFDVAotMDAwMDNFICAgICAoYmFzZSAxNikJCVNJTVBBQ1QKLQkJCQk5MjEwIFNLWSBQQVJLIENPVVJUCi0JCQkJU0FOIERJRUdPIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0zRiAgIChoZXgpCQlTWU5UUkVYLCBJTkMuCi0wMDAwM0YgICAgIChiYXNlIDE2KQkJU1lOVFJFWCwgSU5DLgotCQkJCTI0NiBJTkRVU1RSSUFMIFdBWSBXRVNUCi0JCQkJRUFUT05UT1dOIE5KIDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00MCAgIChoZXgpCQlBUFBMSUNPTiwgSU5DLgotMDAwMDQwICAgICAoYmFzZSAxNikJCUFQUExJQ09OLCBJTkMuCi0JCQkJNDI1MSBQTFlNT1VUSCBSRCA0ODAxNQotCQkJCVBPIEJPWCA5ODYKLQkJCQlBTk4gQVJCT1IgTUkgNDgxMDYtMDk4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNDEgICAoaGV4KQkJSUNFIENPUlBPUkFUSU9OCi0wMDAwNDEgICAgIChiYXNlIDE2KQkJSUNFIENPUlBPUkFUSU9OCi0JCQkJMTc5NDUgU0tZUEFSSyBDSVJDTEUKLQkJCQlTVUlURSBFCi0JCQkJSVJWSU5FIENBIDkyNzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00MiAgIChoZXgpCQlNRVRJRVIgTUFOQUdFTUVOVCBTWVNURU1TIExURC4KLTAwMDA0MiAgICAgKGJhc2UgMTYpCQlNRVRJRVIgTUFOQUdFTUVOVCBTWVNURU1TIExURC4KLQkJCQkzIEZPVU5EQVRJT04gU1RSRUVUCi0JCQkJSVBTV0lDSCAgU1VGRk9MSyAgSVA0IDFCRwotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC00MyAgIChoZXgpCQlNSUNSTyBURUNITk9MT0dZCi0wMDAwNDMgICAgIChiYXNlIDE2KQkJTUlDUk8gVEVDSE5PTE9HWQotCQkJCTQ5MDUgRUFTVCBMQVBBTE1BCi0JCQkJQU5BSEVJTSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNDQgICAoaGV4KQkJQ0FTVEVMTEUgQ09SUE9SQVRJT04KLTAwMDA0NCAgICAgKGJhc2UgMTYpCQlDQVNURUxMRSBDT1JQT1JBVElPTgotCQkJCTMyNTUtMyBTQ09UVCBCT1VMRVZBUkQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNDUgICAoaGV4KQkJRk9SRCBBRVJPU1BBQ0UgJiBDT01NLiBDT1JQLgotMDAwMDQ1ICAgICAoYmFzZSAxNikJCUZPUkQgQUVST1NQQUNFICYgQ09NTS4gQ09SUC4KLQkJCQlDT0xPUkFETyBTUFJJTkdTIE9QRVJBVElPTgotCQkJCTEwNDQwIFNUQVRFIEhJR0hXQVkgODMKLQkJCQlDT0xPUkFETyBTUFJJTkdTIENPIDgwOTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00NiAgIChoZXgpCQlPTElWRVRUSSBOT1JUSCBBTUVSSUNBCi0wMDAwNDYgICAgIChiYXNlIDE2KQkJT0xJVkVUVEkgTk9SVEggQU1FUklDQQotCQkJCUUgMjI0MjUgQVBQTEVXQVkKLQkJCQlMSUJFUlRZIExBS0UgV0EgOTkwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTQ3ICAgKGhleCkJCU5JQ09MRVQgSU5TVFJVTUVOVFMgQ09SUC4KLTAwMDA0NyAgICAgKGJhc2UgMTYpCQlOSUNPTEVUIElOU1RSVU1FTlRTIENPUlAuCi0JCQkJNTIyNSBWRVJPTkEgUk9BRAotCQkJCU1BRElTT04gV0kgNTM3MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTQ4ICAgKGhleCkJCVNFSUtPIEVQU09OIENPUlBPUkFUSU9OCi0wMDAwNDggICAgIChiYXNlIDE2KQkJU0VJS08gRVBTT04gQ09SUE9SQVRJT04KLQkJCQk4MCBISVJPT0tBIFNISU9KSVJJLUNJVFkKLQkJCQlOQUdBTk8tS0VOCi0JCQkJSkFQQU4gMzk5LTA3Ci0JCQkJSkFQQU4KLQotMDAtMDAtNDkgICAoaGV4KQkJQVBSSUNPVCBDT01QVVRFUlMsIExURAotMDAwMDQ5ICAgICAoYmFzZSAxNikJCUFQUklDT1QgQ09NUFVURVJTLCBMVEQKLQkJCQk5MCBWSU5DRU5UIERSSVZFCi0JCQkJRURHQkFTVE9OLCBCSVJNSU5HSEFNIEIxNTJTUAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC00QSAgIChoZXgpCQlBREMgQ09ERU5PTEwgVEVDSE5PTE9HWSBDT1JQLgotMDAwMDRBICAgICAoYmFzZSAxNikJCUFEQyBDT0RFTk9MTCBURUNITk9MT0dZIENPUlAuCi0JCQkJMjAwIENPUlBPUkFURSBCTFZELiBTTy4KLQkJCQlZT05LRVJTIE5ZIDEwNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00QiAgIChoZXgpCQlJQ0wgREFUQSBPWQotMDAwMDRCICAgICAoYmFzZSAxNikJCUlDTCBEQVRBIE9ZCi0JCQkJS1VUT01PVElFIDE2LTE4Ci0JCQkJMDAzODAgSEVMU0lOS0kgIFAuTy4gQk9YIDQ1OCBTRi0wMDEwMSBIRQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTAwLTRDICAgKGhleCkJCU5FQyBDT1JQT1JBVElPTgotMDAwMDRDICAgICAoYmFzZSAxNikJCU5FQyBDT1JQT1JBVElPTgotCQkJCTctMSBTSElCQSAgNS1DSE9NRQotCQkJCU1JTkFUTy1LVQotCQkJCVRPS1lPIDEwOC0wMSAgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC00RCAgIChoZXgpCQlEQ0kgQ09SUE9SQVRJT04KLTAwMDA0RCAgICAgKGJhc2UgMTYpCQlEQ0kgQ09SUE9SQVRJT04KLQkJCQk2NEogUFJJTkNFVE9OLUhJR0hUU1RPV04gUkQKLQkJCQkjMTIxCi0JCQkJUFJJTkNFVE9OIEpVTkNUSU9OIE5KIDA4NTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00RSAgIChoZXgpCQlBTVBFWCBDT1JQT1JBVElPTgotMDAwMDRFICAgICAoYmFzZSAxNikJCUFNUEVYIENPUlBPUkFUSU9OCi0JCQkJNTgxIENPTkZFUkVOQ0UgUExBQ0UKLQkJCQlHT0xERU4gQ08gODA0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTRGICAgKGhleCkJCUxPR0lDUkFGVCwgSU5DLgotMDAwMDRGICAgICAoYmFzZSAxNikJCUxPR0lDUkFGVCwgSU5DLgotCQkJCTIyIENPVFRPTiBST0FECi0JCQkJTkFTSFVBIE5IIDAzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC01MCAgIChoZXgpCQlSQURJU1lTIENPUlBPUkFUSU9OCi0wMDAwNTAgICAgIChiYXNlIDE2KQkJUkFESVNZUyBDT1JQT1JBVElPTgotCQkJCTE1MDI1IFMuVy4gS09MTCBQQVJLV0FZCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDA2LTYwNTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTUxICAgKGhleCkJCUhPQiBFTEVDVFJPTklDIEdNQkggJiBDTy4gS0cKLTAwMDA1MSAgICAgKGJhc2UgMTYpCQlIT0IgRUxFQ1RST05JQyBHTUJIICYgQ08uIEtHCi0JCQkJQlJBTkRTU1RBVFRFUi1TVFIuMi0xMAotCQkJCUQtODUwMiBaSVJORE9SRgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLTUyICAgKGhleCkJCUludHJ1c2lvbi5jb20sIEluYy4KLTAwMDA1MiAgICAgKGJhc2UgMTYpCQlJbnRydXNpb24uY29tLCBJbmMuCi0JCQkJMTEwMSBFLiBBUkFQQUhPIFJPQUQKLQkJCQlSSUNIQVJEU09OIFRYIDc1MDgxCi0KLTAwLTAwLTUzICAgKGhleCkJCUNPTVBVQ09SUAotMDAwMDUzICAgICAoYmFzZSAxNikJCUNPTVBVQ09SUAotCQkJCTIyMTEgTUlDSElHQU4gQVZFTlVFCi0JCQkJU0FOVEEgTU9OSUNBIENBIDkwNDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC01NCAgIChoZXgpCQlNT0RJQ09OLCBJTkMuCi0wMDAwNTQgICAgIChiYXNlIDE2KQkJTU9ESUNPTiwgSU5DLgotCQkJCU9ORSBISUdIIFNUUkVFVAotCQkJCU5PUlRIIEFORE9WRVIgTUEgMDE4NDUtMjY5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNTUgICAoaGV4KQkJQ09NTUlTU0FSSUFUIEEgTGBFTkVSR0lFIEFUT00uCi0wMDAwNTUgICAgIChiYXNlIDE2KQkJQ09NTUlTU0FSSUFUIEEgTGBFTkVSR0lFIEFUT00uCi0JCQkJMzEsIFJVRSBERSBMQSBGRURFUkFUSU9OCi0JCQkJUEFSSVMgNzUwMTUKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtNTYgICAoaGV4KQkJRFIuIEIuIFNUUlVDSwotMDAwMDU2ICAgICAoYmFzZSAxNikJCURSLiBCLiBTVFJVQ0sKLQkJCQlQT0IgMTE0NyBCQUVDS0VSQkFSRyA2Ci0JCQkJRC0yMDAwIFRBTkdTVEVEVC9IQU1CVVJHCi0JCQkJVy1HRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMC01NyAgIChoZXgpCQlTQ0lURVggQ09SUE9SQVRJT04gTFRELgotMDAwMDU3ICAgICAoYmFzZSAxNikJCVNDSVRFWCBDT1JQT1JBVElPTiBMVEQuCi0JCQkJUC5PLiBCT1ggMzMwCi0JCQkJNDYxMDMgSEVSWkxJQSBCCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAwLTU4ICAgKGhleCkJCVJBQ09SRSBDT01QVVRFUiBQUk9EVUNUUyBJTkMuCi0wMDAwNTggICAgIChiYXNlIDE2KQkJUkFDT1JFIENPTVBVVEVSIFBST0RVQ1RTIElOQy4KLQkJCQkyMzU1IFNPVVRIIDEwNzAgV0VTVAotCQkJCVNBTFQgTEFLRSBDSVRZIFVUIDg0MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC01OSAgIChoZXgpCQlIRUxMSUdFIEdNQkgKLTAwMDA1OSAgICAgKGJhc2UgMTYpCQlIRUxMSUdFIEdNQkgKLQkJCQlFLVNXCi0JCQkJSEVJTlJJQ0gtVk9OLVNURUZBTi1TVFIuNCBELTc4MDAgRlJFSUJVUgotCQkJCVdFU1QgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDAtNUEgICAoaGV4KQkJU3lzS29ubmVjdCBHbWJICi0wMDAwNUEgICAgIChiYXNlIDE2KQkJU3lzS29ubmVjdCBHbWJICi0JCQkJU0lFTUVOU1NUUkFTU0UgMjMKLQkJCQk3NjI3NSBFVFRMSU5HRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMC01QiAgIChoZXgpCQlFTFRFQyBFTEVLVFJPTklLIEFHCi0wMDAwNUIgICAgIChiYXNlIDE2KQkJRUxURUMgRUxFS1RST05JSyBBRwotCQkJCUdhbGlsZW8tR2FsaWxlaS1TdHJhc3NlIDExCi0JCQkJUE9CIDQyIDEzIDYzIEQtNTUwNzEgTUFJTloKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMC01QyAgIChoZXgpCQlURUxFTUFUSUNTIElOVEVSTkFUSU9OQUwgSU5DLgotMDAwMDVDICAgICAoYmFzZSAxNikJCVRFTEVNQVRJQ1MgSU5URVJOQVRJT05BTCBJTkMuCi0JCQkJMTIwMSBDWVBSRVNTIENSRUVLIFJECi0JCQkJRlQuIExBVURFUkRBTEUgRkwgMzMzMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTVEICAgKGhleCkJCUNTIFRFTEVDT00KLTAwMDA1RCAgICAgKGJhc2UgMTYpCQlDUyBURUxFQ09NCi0JCQkJNC0xNiBBVkVOVUUgRFUgR0VORVJBTCBMRUNMRVJDCi0JCQkJQlAgNzQgLSA5MjI2MyBGT05URU5BWSBBVVggUk9TRVMKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtNUUgICAoaGV4KQkJVVNDIElORk9STUFUSU9OIFNDSUVOQ0VTIElOU1QKLTAwMDA1RSAgICAgKGJhc2UgMTYpCQlVU0MgSU5GT1JNQVRJT04gU0NJRU5DRVMgSU5TVAotCQkJCUlOVEVSTkVUIEFTUydORUQgTk9TLkFVVEhPUklUWQotCQkJCTQ2NzYgQURNSVJBTFRZIFdBWQotCQkJCU1BUklOQSBERUwgUkVZIENBIDkwMjkyLTY2OTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTVGICAgKGhleCkJCVNVTUlUT01PIEVMRUNUUklDIElORC4sIExURC4KLTAwMDA1RiAgICAgKGJhc2UgMTYpCQlTVU1JVE9NTyBFTEVDVFJJQyBJTkQuLCBMVEQuCi0JCQkJMS0xLTMsIFNISU1BWUEKLQkJCQlLT05PSEFOQS1LVSBPU0FLQQotCQkJCTU1NCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTYwICAgKGhleCkJCUtPTlRST04gRUxFS1RST05JSyBHTUJICi0wMDAwNjAgICAgIChiYXNlIDE2KQkJS09OVFJPTiBFTEVLVFJPTklLIEdNQkgKLQkJCQlPU0tBUi1WT04tTUlMTEVSLVNUUi4gMQotCQkJCUQtODUzODUgRUNISU5HCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDAtNjEgICAoaGV4KQkJR0FURVdBWSBDT01NVU5JQ0FUSU9OUwotMDAwMDYxICAgICAoYmFzZSAxNikJCUdBVEVXQVkgQ09NTVVOSUNBVElPTlMKLQkJCQkyOTQxIEFMVE9OIEFWRU5VRQotCQkJCUlSVklORSBDQSA5MjcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNjIgICAoaGV4KQkJQlVMTCBITiBJTkZPUk1BVElPTiBTWVNURU1TCi0wMDAwNjIgICAgIChiYXNlIDE2KQkJQlVMTCBITiBJTkZPUk1BVElPTiBTWVNURU1TCi0JCQkJMzAwIENPTkNPUkQgUk9BRCBNL1MgODY0QQotCQkJCUJJTExFUklDQSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNjMgICAoaGV4KQkJQkFSQ08gQ09OVFJPTCBST09NUyBHTUJICi0wMDAwNjMgICAgIChiYXNlIDE2KQkJQkFSQ08gQ09OVFJPTCBST09NUyBHTUJICi0JCQkJQW4gZGVyIFJvc3N3ZWlkIDUKLQkJCQlLYXJsc3J1aGUgIEQtNzYyMjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLTY0ICAgKGhleCkJCVlPS09HQVdBIERJR0lUQUwgQ09NUFVURVIgQ09SUAotMDAwMDY0ICAgICAoYmFzZSAxNikJCVlPS09HQVdBIERJR0lUQUwgQ09NUFVURVIgQ09SUAotCQkJCVNJIEhFQURRVUFSVEVSUyBESVZJU0lPTgotCQkJCU5PLiAyNSBLT1dBIEJMREcgOC03IFNBTkJBTkNITyBDSElZT0RBLUsKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTY1ICAgKGhleCkJCU5ldHdvcmsgR2VuZXJhbCBDb3Jwb3JhdGlvbgotMDAwMDY1ICAgICAoYmFzZSAxNikJCU5ldHdvcmsgR2VuZXJhbCBDb3Jwb3JhdGlvbgotCQkJCTE3OCBFIFRzYW1hbiBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC02NiAgIChoZXgpCQlUQUxBUklTIFNZU1RFTVMsIElOQy4KLTAwMDA2NiAgICAgKGJhc2UgMTYpCQlUQUxBUklTIFNZU1RFTVMsIElOQy4KLQkJCQkxMTMzOSBTT1JSRU5UTyBWQUxMRVkgUk9BRAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNjcgICAoaGV4KQkJU09GVCAqIFJJVEUsIElOQy4KLTAwMDA2NyAgICAgKGJhc2UgMTYpCQlTT0ZUICogUklURSwgSU5DLgotCQkJCTE1MzkyIEFTU0VNQkxZIExBTkUsIFVOSVQgQQotCQkJCUhVTlRJTkdUT04gQkVBQ0ggQ0EgOTI2NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTY4ICAgKGhleCkJCVJPU0VNT1VOVCBDT05UUk9MUwotMDAwMDY4ICAgICAoYmFzZSAxNikJCVJPU0VNT1VOVCBDT05UUk9MUwotCQkJCTEzMDAgRS4gTEFNQkVSVCBST0FECi0JCQkJTEEgSEFCUkEgQ0EgOTA2MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTY5ICAgKGhleCkJCUNPTkNPUkQgQ09NTVVOSUNBVElPTlMgSU5DCi0wMDAwNjkgICAgIChiYXNlIDE2KQkJQ09OQ09SRCBDT01NVU5JQ0FUSU9OUyBJTkMKLQkJCQk3NTMgRk9SRVNUIFNUUkVFVAotCQkJCU1BUkxCT1JPVUdIIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC02QSAgIChoZXgpCQlDT01QVVRFUiBDT05TT0xFUyBJTkMuCi0wMDAwNkEgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgQ09OU09MRVMgSU5DLgotCQkJCUNPTVBVVEVSIFBST0RVQ1RTIERJVklTSU9OCi0JCQkJOTgwMSBNVUlSTEFORFMgQkxWRC4KLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTZCICAgKGhleCkJCVNJTElDT04gR1JBUEhJQ1MgSU5DLi9NSVBTCi0wMDAwNkIgICAgIChiYXNlIDE2KQkJU0lMSUNPTiBHUkFQSElDUyBJTkMuL01JUFMKLQkJCQkyMDExIE5PUlRIIFNIT1JFTElORSBCTFZELgotCQkJCVAuTy4gQk9YIDczMTEgLSAgQkxERy4gIzEwCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDAzOS03MzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC02QyAgIChoZXgpCQlQUklWQVRFCi0wMDAwNkMgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTAwLTZEICAgKGhleCkJCUNSQVkgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwMDA2RCAgICAgKGJhc2UgMTYpCQlDUkFZIENPTU1VTklDQVRJT05TLCBMVEQuCi0JCQkJUC5PLiBCT1ggMjU0LCBDQVhUT04gV0FZCi0JCQkJV0FURk9SRCBCVVNJTkVTUyBQQVJLIFdBVEZPUkQgSEVSVFMgIFdEMQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtNkUgICAoaGV4KQkJQVJUSVNPRlQsIElOQy4KLTAwMDA2RSAgICAgKGJhc2UgMTYpCQlBUlRJU09GVCwgSU5DLgotCQkJCTY5MSBFQVNUIFJJVkVSIFJPQUQKLQkJCQlUVUNTT04gQVogODU3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTZGICAgKGhleCkJCU1hZGdlIEx0ZC4KLTAwMDA2RiAgICAgKGJhc2UgMTYpCQlNYWRnZSBMdGQuCi0JCQkJTWFkZ2UgSG91c2UKLQkJCQlQcmlvcnMgV2F5Ci0JCQkJTWFpbmRlbmhlYWQgQmVya3NoaXJlIFNMNiAySFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC03MCAgIChoZXgpCQlIQ0wgTElNSVRFRAotMDAwMDcwICAgICAoYmFzZSAxNikJCUhDTCBMSU1JVEVECi0JCQkJUkVTRUFSQ0ggJiBERVZFTE9QTUVOVCBVTklUCi0JCQkJNzIsIExVWiBDSFVSQ0ggUk9BRCBNQURSU0EtNjAwIDAwNAotCQkJCUlORElBCi0JCQkJSU5ESUEKLQotMDAtMDAtNzEgICAoaGV4KQkJQURSQSBTWVNURU1TIElOQy4KLTAwMDA3MSAgICAgKGJhc2UgMTYpCQlBRFJBIFNZU1RFTVMgSU5DLgotCQkJCTU5IFRFQ0hOT0xPR1kgRFJJVkUKLQkJCQlMT1dFTEwgTUEgMDE4NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTcyICAgKGhleCkJCU1JTklXQVJFIFRFQ0hOT0xPR1kKLTAwMDA3MiAgICAgKGJhc2UgMTYpCQlNSU5JV0FSRSBURUNITk9MT0dZCi0JCQkJQkVFTURFTlNUUkFBVCAzOAotCQkJCTUwMDQgQ1QgV0VFUlQgKEwpCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDAtNzMgICAoaGV4KQkJU0lFQ09SIENPUlBPUkFUSU9OCi0wMDAwNzMgICAgIChiYXNlIDE2KQkJU0lFQ09SIENPUlBPUkFUSU9OCi0JCQkJUC5PLiBCT1ggMTM2MjUKLQkJCQlSRVNFQVJDSCBUUklBTkdMRSBQSyBOQyAyNzcwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNzQgICAoaGV4KQkJUklDT0ggQ09NUEFOWSBMVEQuCi0wMDAwNzQgICAgIChiYXNlIDE2KQkJUklDT0ggQ09NUEFOWSBMVEQuCi0JCQkJMjQ0NiBUT0RBLCBBVFNVR0kgQ0lUWQotCQkJCUtBTkFHQVdBIFBSRUYuLAotCQkJCTI0MyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTc1ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwMDc1ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCUdsb2JhbCBPcGVyYXRpb25zIEVuZ2luZWVyaW5nCi0JCQkJRGVwIDY4MDAgUHJvZ3JhbSBNYW5hZ2VyIDgyMDAgRGl4aWUgUm9hZAotCQkJCUJyYW1wdG9uIE9OIGw2VCA1UDYgQ2FuYQotCQkJCUNBTkFEQQotCi0wMC0wMC03NiAgIChoZXgpCQlBQkVLQVMgVklERU8gU1lTVEVNCi0wMDAwNzYgICAgIChiYXNlIDE2KQkJQUJFS0FTIFZJREVPIFNZU1RFTQotCQkJCTEwMSBHQUxWRVNUT04gRFJJVkUKLQkJCQlSRURXT09EIENJVFkgQ0EgOTQwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTc3ICAgKGhleCkJCUlOVEVSUEhBU0UgQ09SUE9SQVRJT04KLTAwMDA3NyAgICAgKGJhc2UgMTYpCQlJTlRFUlBIQVNFIENPUlBPUkFUSU9OCi0JCQkJMTM4MDAgU0VOTEFDCi0JCQkJREFMTEFTIFRYIDc1MjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC03OCAgIChoZXgpCQlMQUJUQU0gTElNSVRFRAotMDAwMDc4ICAgICAoYmFzZSAxNikJCUxBQlRBTSBMSU1JVEVECi0JCQkJNDMgTUFMQ09MTSBST0FEICAgUC5PLiBCT1gyOTcKLQkJCQlCUkFFU0lERSwgVklDVE9SSUEgMzE5NQotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC0wMC03OSAgIChoZXgpCQlORVRXT1JUSCBJTkNPUlBPUkFURUQKLTAwMDA3OSAgICAgKGJhc2UgMTYpCQlORVRXT1JUSCBJTkNPUlBPUkFURUQKLQkJCQk4NDA0IEVTVEVSUyBCT1VMRVZBUkQKLQkJCQlJUlZJTkcgVFggNzUwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTdBICAgKGhleCkJCURBTkEgQ09NUFVURVIgSU5DLgotMDAwMDdBICAgICAoYmFzZSAxNikJCURBTkEgQ09NUFVURVIgSU5DLgotCQkJCTU1MCBERUwgUkVZIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtN0IgICAoaGV4KQkJUkVTRUFSQ0ggTUFDSElORVMKLTAwMDA3QiAgICAgKGJhc2UgMTYpCQlSRVNFQVJDSCBNQUNISU5FUwotCQkJCVAuTy4gQk9YIDc1Ci0JCQkJTUlMTCBTVFJFRVQgT1hGT1JEICBPWDIgMEJXCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLTdDICAgKGhleCkJCUFNUEVSRSBJTkNPUlBPUkFURUQKLTAwMDA3QyAgICAgKGJhc2UgMTYpCQlBTVBFUkUgSU5DT1JQT1JBVEVECi0JCQkJU0hJTkpVS1UgQVNBSEkgQkxERy4KLQkJCQk1LTIwICA3LUNIT01FIE5JU0hJLVNISU5KVUtVICBTSElOSlVLVS1LCi0JCQkJVE9LWU8gSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC03RCAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMDA3RCAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTdFICAgKGhleCkJCUNMVVNUUklYIENPUlBPUkFUSU9OCi0wMDAwN0UgICAgIChiYXNlIDE2KQkJQ0xVU1RSSVggQ09SUE9SQVRJT04KLQkJCQk5NjAgSEFNTElOIENPVVJUCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC03RiAgIChoZXgpCQlMSU5PVFlQRS1IRUxMIEFHCi0wMDAwN0YgICAgIChiYXNlIDE2KQkJTElOT1RZUEUtSEVMTCBBRwotCQkJCVBPU1RGQUNIIDU2IDYwCi0JCQkJTUVSR0VOVEhBTEVSIEFMTEVFIDU1LTc1IDYyMzYgRVNDSEJPUk4gQgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLTgwICAgKGhleCkJCUNSQVkgQ09NTVVOSUNBVElPTlMgQS9TCi0wMDAwODAgICAgIChiYXNlIDE2KQkJQ1JBWSBDT01NVU5JQ0FUSU9OUyBBL1MKLQkJCQlTTUVERUhPTE0gMTItMTQKLQkJCQkyNzMwIEhFUkxFVgotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLTAwLTgxICAgKGhleCkJCUJBWSBORVRXT1JLUwotMDAwMDgxICAgICAoYmFzZSAxNikJCUJBWSBORVRXT1JLUwotCQkJCTQ0MDEgR1JFQVQgQU1FUklDQU4gUEFSS1dBWQotCQkJCVBPIEJPWCA1ODE4NSBNL1MgU0MwMS0wNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyLTgxODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTgyICAgKGhleCkJCUxFQ1RSQSBTWVNURU1FUyBTQQotMDAwMDgyICAgICAoYmFzZSAxNikJCUxFQ1RSQSBTWVNURU1FUyBTQQotCQkJCUNIRU1JTiBERSBNQVJUSUNPVAotCQkJCVJFU0VBUkNIIERFUEFSVE1FTlQgMzM2MTAgQ0VTVEFTCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTAwLTgzICAgKGhleCkJCVRBRFBPTEUgVEVDSE5PTE9HWSBQTEMKLTAwMDA4MyAgICAgKGJhc2UgMTYpCQlUQURQT0xFIFRFQ0hOT0xPR1kgUExDCi0JCQkJMTM3IERJVFRPTiBXQUxLCi0JCQkJQ0FNQlJJREdFIENCNSA4Rk4KLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtODQgICAoaGV4KQkJU1VQRVJORVQKLTAwMDA4NCAgICAgKGJhc2UgMTYpCQlTVVBFUk5FVAotCQkJCTg0NiBERUwgUkVZIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtODUgICAoaGV4KQkJQ0FOT04gSU5DLgotMDAwMDg1ICAgICAoYmFzZSAxNikJCUNBTk9OIElOQy4KLQkJCQlEVlRFQ0guIERFVi4gQ0VOVEVSIERFUFQuMTIKLQkJCQkzLTMwLTIsIFNISU1PTUFSVUtPLCBPSFRBLUtVIFRPS1lPIDE0NgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDAtODYgICAoaGV4KQkJTUVHQUhFUlRaIENPUlBPUkFUSU9OCi0wMDAwODYgICAgIChiYXNlIDE2KQkJTUVHQUhFUlRaIENPUlBPUkFUSU9OCi0JCQkJNjA1IE5PUlRILS01NjAwIFdFU1QKLQkJCQlTQUxUIExBS0UgQ0lUWSBVVCA4NDExNi0zNzM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC04NyAgIChoZXgpCQlISVRBQ0hJLCBMVEQuCi0wMDAwODcgICAgIChiYXNlIDE2KQkJSElUQUNISSwgTFRELgotCQkJCU5FVFdPUksgRU5HSU5FRVJJTkcgRElWLgotCQkJCUhJVEFDSEkgT01PUkkgMk5EIEJMREcuLCAyNy0xOCBNSU5BTUkgT0kKLQkJCQlUT0tZTyAxNDAgCi0JCQkJSkFQQU4KLQotMDAtMDAtODggICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDAwODggICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC04OSAgIChoZXgpCQlDQVlNQU4gU1lTVEVNUyBJTkMuCi0wMDAwODkgICAgIChiYXNlIDE2KQkJQ0FZTUFOIFNZU1RFTVMgSU5DLgotCQkJCTI2IExBTlNET1dORSBTVFJFRVQKLQkJCQlDQU1CUklER0UgTUEgMDIxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLThBICAgKGhleCkJCURBVEFIT1VTRSBJTkZPUk1BVElPTiBTWVNURU1TCi0wMDAwOEEgICAgIChiYXNlIDE2KQkJREFUQUhPVVNFIElORk9STUFUSU9OIFNZU1RFTVMKLQkJCQlESVJFQ1RPUiBPRiBPUEVSQVRJT05TCi0JCQkJTUVPTiBIT1VTRSwgRUFTVCBUSVNURUQgTlIuIEFMVE9OLCBIQU1QUwotCQkJCUdVMzQgM1FXIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC04QiAgIChoZXgpCQlJTkZPVFJPTgotMDAwMDhCICAgICAoYmFzZSAxNikJCUlORk9UUk9OCi0JCQkJOSBOT1JUSCBPTE5FWQotCQkJCUNIRVJSWSBISUxMIE5KIDA4MDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC04QyAgIChoZXgpCQlBbGxveSBDb21wdXRlciBQcm9kdWN0cyAoQXVzdHJhbGlhKSBQdHkgTHRkCi0wMDAwOEMgICAgIChiYXNlIDE2KQkJQWxsb3kgQ29tcHV0ZXIgUHJvZHVjdHMgKEF1c3RyYWxpYSkgUHR5IEx0ZAotCQkJCVVuaXQgNC81ODUgQmxhY2tidXJuIFJvYWQKLQkJCQlOb3R0aW5nIEhpbGwgVmljdG9yaWEgMzE2OAotCQkJCUFVU1RSQUxJQQotCi0wMC0wMC04RCAgIChoZXgpCQlDcnlwdGVrIEluYy4KLTAwMDA4RCAgICAgKGJhc2UgMTYpCQlDcnlwdGVrIEluYy4KLQkJCQkxNTAxIE1vcmFuIFJvYWQKLQkJCQlTdGVybGluZyBWQSAyMDE2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOEUgICAoaGV4KQkJU09MQk9VUk5FIENPTVBVVEVSLCBJTkMuCi0wMDAwOEUgICAgIChiYXNlIDE2KQkJU09MQk9VUk5FIENPTVBVVEVSLCBJTkMuCi0JCQkJMTkwMCBQSUtFIFJPQUQKLQkJCQlMT05HTU9OVCBDT0xPUkFETyA4MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOEYgICAoaGV4KQkJUmF5dGhlb24KLTAwMDA4RiAgICAgKGJhc2UgMTYpCQlSYXl0aGVvbgotCQkJCU0vUyAxLTEtMTExOQotCQkJCTEwMDEgQm9zdG9uIFBvc3QgUmQKLQkJCQlNYXJsYm9ybyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTAgICAoaGV4KQkJTUlDUk9DT00KLTAwMDA5MCAgICAgKGJhc2UgMTYpCQlNSUNST0NPTQotCQkJCTUwMCBSSVZFUiBSSURHRSBEUklWRQotCQkJCU5PUldPT0QgTUEgMDIwNjItNTAyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTEgICAoaGV4KQkJQU5SSVRTVSBDT1JQT1JBVElPTgotMDAwMDkxICAgICAoYmFzZSAxNikJCUFOUklUU1UgQ09SUE9SQVRJT04KLQkJCQkxODAwLCBPTk5BCi0JCQkJQVRVR0ktU0hJIEtBTkFHQVdBLUtFTiAyNDMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTkyICAgKGhleCkJCUNPR0VOVCBEQVRBIFRFQ0hOT0xPR0lFUwotMDAwMDkyICAgICAoYmFzZSAxNikJCUNPR0VOVCBEQVRBIFRFQ0hOT0xPR0lFUwotCQkJCTY0MCBNVUxMSVMgU1RSRUVUCi0JCQkJRlJJREFZIEhBUkJPUiBXQSA5ODI1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTMgICAoaGV4KQkJUFJPVEVPTiBJTkMuCi0wMDAwOTMgICAgIChiYXNlIDE2KQkJUFJPVEVPTiBJTkMuCi0JCQkJNCBURUNIIENJUkNMRQotCQkJCU5BVElDSyBNQSAwMTc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTQgICAoaGV4KQkJQVNBTlRFIFRFQ0hOT0xPR0lFUwotMDAwMDk0ICAgICAoYmFzZSAxNikJCUFTQU5URSBURUNITk9MT0dJRVMKLQkJCQk4MjEgRk9YIExBTkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTUgICAoaGV4KQkJU09OWSBURUtUUk9OSVggQ09SUC4KLTAwMDA5NSAgICAgKGJhc2UgMTYpCQlTT05ZIFRFS1RST05JWCBDT1JQLgotCQkJCVAuTy4gQk9YIDUyMDkgVE9LWU8gSU5UJ0wKLQkJCQlUT0tZTyAxMDAtMzEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTk2ICAgKGhleCkJCU1BUkNPTkkgRUxFQ1RST05JQ1MgTFRELgotMDAwMDk2ICAgICAoYmFzZSAxNikJCU1BUkNPTkkgRUxFQ1RST05JQ1MgTFRELgotCQkJCUJST1dOUyBMQU5FLCBUSEUgQUlSUE9SVAotCQkJCVBPUlRTTU9VVEggLS0gSEFNUFNISVJFIFAwMyA1UEgKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLTk3ICAgKGhleCkJCUVNQyBDb3Jwb3JhdGlvbgotMDAwMDk3ICAgICAoYmFzZSAxNikJCUVNQyBDb3Jwb3JhdGlvbgotCQkJCTE3NiBTb3V0aCBTdHJlZXQKLQkJCQlIb3BraW50b24gTUEgMDE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTk4ICAgKGhleCkJCUNST1NTQ09NTSBDT1JQT1JBVElPTgotMDAwMDk4ICAgICAoYmFzZSAxNikJCUNST1NTQ09NTSBDT1JQT1JBVElPTgotCQkJCTQ1MCBET05BTEQgTFlOQ0ggQk9VTEVWQVJECi0JCQkJTUFSTEJPUk9VR0ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTk5ICAgKGhleCkJCU1UWCwgSU5DLgotMDAwMDk5ICAgICAoYmFzZSAxNikJCU1UWCwgSU5DLgotCQkJCTMzMDEgVEVSTUlOQUwgRFJJVkUKLQkJCQlSQUxFSUdIIE5DIDI3NjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC05QSAgIChoZXgpCQlSQyBDT01QVVRFUiBBL1MKLTAwMDA5QSAgICAgKGJhc2UgMTYpCQlSQyBDT01QVVRFUiBBL1MKLQkJCQlMQVVUUlVQQkpFUkcgMQotCQkJCURLLTI3NTAgQkFMTEVSVVAKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC0wMC05QiAgIChoZXgpCQlJTkZPUk1BVElPTiBJTlRFUk5BVElPTkFMLCBJTkMKLTAwMDA5QiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBJTlRFUk5BVElPTkFMLCBJTkMKLQkJCQk1Ri4sIFRIRSA3VEggSU5EVVNUUlkgQkxERy4KLQkJCQkxLTIwLTE0IEpJTk5BTiBTSElCVVlBLUtVIFRPS1lPCi0JCQkJSkFQQU4gMTUwCi0JCQkJSkFQQU4KLQotMDAtMDAtOUMgICAoaGV4KQkJUk9MTSBNSUwtU1BFQyBDT01QVVRFUlMKLTAwMDA5QyAgICAgKGJhc2UgMTYpCQlST0xNIE1JTC1TUEVDIENPTVBVVEVSUwotCQkJCTMxNTEgWkFOS0VSIFJPQUQKLQkJCQlTQU4gSk9TRSBDQSA5NTE0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOUQgICAoaGV4KQkJTE9DVVMgQ09NUFVUSU5HIENPUlBPUkFUSU9OCi0wMDAwOUQgICAgIChiYXNlIDE2KQkJTE9DVVMgQ09NUFVUSU5HIENPUlBPUkFUSU9OCi0JCQkJOTgwMCBMQSBDSUVORUdBCi0JCQkJSU5HTEVXT09EIENBIDkwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC05RSAgIChoZXgpCQlNQVJMSSBTLkEuCi0wMDAwOUUgICAgIChiYXNlIDE2KQkJTUFSTEkgUy5BLgotCQkJCUNIRU1JTiBUQVZFUk5FWSAzCi0JCQkJMTIxOCBHRU5FVkEKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAwLTlGICAgKGhleCkJCUFNRVJJU1RBUiBURUNITk9MT0dJRVMgSU5DLgotMDAwMDlGICAgICAoYmFzZSAxNikJCUFNRVJJU1RBUiBURUNITk9MT0dJRVMgSU5DLgotCQkJCTQ3IFdISVRUSUVSIEFWRS4KLQkJCQlNRURGT1JEIE5ZIDExNzYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1BMCAgIChoZXgpCQlTQU5ZTyBFbGVjdHJpYyBDby4sIEx0ZC4KLTAwMDBBMCAgICAgKGJhc2UgMTYpCQlTQU5ZTyBFbGVjdHJpYyBDby4sIEx0ZC4KLQkJCQk1LTUsIEtlaWhhbi1ob25kb3JpIDItY2hvbWUsCi0JCQkJTW9yaWd1Y2hpIENpdHkgT3Nha2EgNTcwLTg2NzcKLQkJCQlKQVBBTgotCi0wMC0wMC1BMSAgIChoZXgpCQlNQVJRVUVUVEUgRUxFQ1RSSUMgQ08uCi0wMDAwQTEgICAgIChiYXNlIDE2KQkJTUFSUVVFVFRFIEVMRUNUUklDIENPLgotCQkJCTgyMDAgV0VTVCBUT1dFUiBBVkVOVUUKLQkJCQlNSUxXQVVLRUUgV0kgNTMyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUEyICAgKGhleCkJCUJBWSBORVRXT1JLUwotMDAwMEEyICAgICAoYmFzZSAxNikJCUJBWSBORVRXT1JLUwotCQkJCTQ0MDEgR1JFQVQgQU1FUklDQU4gUEtXWQotCQkJCU0vUzpTQzAxLTA1Ci0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTItODE4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTMgICAoaGV4KQkJTkVUV09SSyBBUFBMSUNBVElPTiBURUNITk9MT0dZCi0wMDAwQTMgICAgIChiYXNlIDE2KQkJTkVUV09SSyBBUFBMSUNBVElPTiBURUNITk9MT0dZCi0JCQkJMTY4NiBERUxMIEFWRU5VRQotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1BNCAgIChoZXgpCQlBQ09STiBDT01QVVRFUlMgTElNSVRFRAotMDAwMEE0ICAgICAoYmFzZSAxNikJCUFDT1JOIENPTVBVVEVSUyBMSU1JVEVECi0JCQkJRlVMQk9VUk4gUk9BRCwgQ0hFUlJZIEhJTlRPTgotCQkJCUNBTUJSSURHRSBDQjEgNEpOLAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1BNSAgIChoZXgpCQlDT01QQVRJQkxFIFNZU1RFTVMgQ09SUC4KLTAwMDBBNSAgICAgKGJhc2UgMTYpCQlDT01QQVRJQkxFIFNZU1RFTVMgQ09SUC4KLQkJCQlQLk8uIEJPWCAxNzIyMAotCQkJCUJPVUxERVIgQ08gODAzMDgtNzIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTYgICAoaGV4KQkJTkVUV09SSyBHRU5FUkFMIENPUlBPUkFUSU9OCi0wMDAwQTYgICAgIChiYXNlIDE2KQkJTkVUV09SSyBHRU5FUkFMIENPUlBPUkFUSU9OCi0JCQkJMTI5NiBCIExBV1JFTkNFIFNUQVRJT04gUk9BRAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTcgICAoaGV4KQkJTkVUV09SSyBDT01QVVRJTkcgREVWSUNFUyBJTkMuCi0wMDAwQTcgICAgIChiYXNlIDE2KQkJTkVUV09SSyBDT01QVVRJTkcgREVWSUNFUyBJTkMuCi0JCQkJMzUwIE5PUlRIIEJFUk5BUkRPCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTggICAoaGV4KQkJU1RSQVRVUyBDT01QVVRFUiBJTkMuCi0wMDAwQTggICAgIChiYXNlIDE2KQkJU1RSQVRVUyBDT01QVVRFUiBJTkMuCi0JCQkJMTExIFBvd2Rlcm1pbGwgUm9hZAotCQkJCU1heW5hcmQgTUEgMDE3NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUE5ICAgKGhleCkJCU5FVFdPUksgU1lTVEVNUyBDT1JQLgotMDAwMEE5ICAgICAoYmFzZSAxNikJCU5FVFdPUksgU1lTVEVNUyBDT1JQLgotCQkJCTc2MDAgQk9PTkUgQVZFTlVFIE5PUlRICi0JCQkJTUlOTkVBUE9MSVMgTU4gNTU0MjgtMTA5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQUEgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDBBQSAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCU9GRklDRSBTWVNURU1TIERJVklTSU9OCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1BQiAgIChoZXgpCQlMT0dJQyBNT0RFTElORyBDT1JQT1JBVElPTgotMDAwMEFCICAgICAoYmFzZSAxNikJCUxPR0lDIE1PREVMSU5HIENPUlBPUkFUSU9OCi0JCQkJMTUyMCBNQ0NBTkRMRVNTIERSSVZFCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUFDICAgKGhleCkJCUNPTldBUkUgQ09NUFVURVIgQ09OU1VMVElORwotMDAwMEFDICAgICAoYmFzZSAxNikJCUNPTldBUkUgQ09NUFVURVIgQ09OU1VMVElORwotCQkJCUtJTExJU0ZFTERTVFJBU1NFIDY0Ci0JCQkJNzYyMjcgS0FSTFNSVUhFCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDAtQUQgICAoaGV4KQkJQlJVS0VSIElOU1RSVU1FTlRTIElOQy4KLTAwMDBBRCAgICAgKGJhc2UgMTYpCQlCUlVLRVIgSU5TVFJVTUVOVFMgSU5DLgotCQkJCU1BTk5JTkcgUEFSSwotCQkJCUJJTExFUklDQSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQUUgICAoaGV4KQkJREFTU0FVTFQgRUxFQ1RST05JUVVFCi0wMDAwQUUgICAgIChiYXNlIDE2KQkJREFTU0FVTFQgRUxFQ1RST05JUVVFCi0JCQkJNTUsIFFVQUkgTUFSQ0VMIERBU1NBVUxUCi0JCQkJOTIyMTQgU1QgQ0xPVUQKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtQUYgICAoaGV4KQkJTlVDTEVBUiBEQVRBIElOU1RSVU1FTlRBVElPTgotMDAwMEFGICAgICAoYmFzZSAxNikJCU5VQ0xFQVIgREFUQSBJTlNUUlVNRU5UQVRJT04KLQkJCQlHT0xGICYgTUVBQ0hBTSBST0FEUwotCQkJCVNDSEFVTUJFUkcgSUwgNjAxOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUIwICAgKGhleCkJCVJORC1SQUQgTkVUV09SSyBERVZJQ0VTCi0wMDAwQjAgICAgIChiYXNlIDE2KQkJUk5ELVJBRCBORVRXT1JLIERFVklDRVMKLQkJCQlBVElESU0gVEVDSE5PTCdDTCBCTERHLiAxCi0JCQkJVEVMIEFWSVYgIDYxMTMxCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAwLUIxICAgKGhleCkJCUFMUEhBIE1JQ1JPU1lTVEVNUyBJTkMuCi0wMDAwQjEgICAgIChiYXNlIDE2KQkJQUxQSEEgTUlDUk9TWVNURU1TIElOQy4KLQkJCQkzNTAxIFNVTkZMT1dFUgotCQkJCVNBTlRBIEFOQSBDQSA5MjcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjIgICAoaGV4KQkJVEVMRVZJREVPIFNZU1RFTVMsIElOQy4KLTAwMDBCMiAgICAgKGJhc2UgMTYpCQlURUxFVklERU8gU1lTVEVNUywgSU5DLgotCQkJCTU1MCBFLiBCUk9LQVcgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTYxLTkwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUIzICAgKGhleCkJCUNJTUxJTkMgSU5DT1JQT1JBVEVECi0wMDAwQjMgICAgIChiYXNlIDE2KQkJQ0lNTElOQyBJTkNPUlBPUkFURUQKLQkJCQkxOTU3IENST09LUyBST0FECi0JCQkJVFJPWSBNSSA0ODA4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjQgICAoaGV4KQkJRURJTUFYIENPTVBVVEVSIENPTVBBTlkKLTAwMDBCNCAgICAgKGJhc2UgMTYpCQlFRElNQVggQ09NUFVURVIgQ09NUEFOWQotCQkJCU5vLiAzLCBXdS1DaHVhbiAzcmQgUm9hZCwKLQkJCQlXdS1LdSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlUYWlwZWkgSHNpZW4gIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDAtQjUgICAoaGV4KQkJREFUQUJJTElUWSBTT0ZUV0FSRSBTWVMuIElOQy4KLTAwMDBCNSAgICAgKGJhc2UgMTYpCQlEQVRBQklMSVRZIFNPRlRXQVJFIFNZUy4gSU5DLgotCQkJCU9ORSBQQUxNRVIgVEVSUkFDRQotCQkJCUNBUkxTVEFEVCBOSiAwNzA3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjYgICAoaGV4KQkJTUlDUk8tTUFUSUMgUkVTRUFSQ0gKLTAwMDBCNiAgICAgKGJhc2UgMTYpCQlNSUNSTy1NQVRJQyBSRVNFQVJDSAotCQkJCUFNQkFDSFRFTkxBQU4gIDIxIEI1Ci0JCQkJQiAtIDMwMzAgIEhFVkVSTEVFCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtMDAtQjcgICAoaGV4KQkJRE9WRSBDT01QVVRFUiBDT1JQT1JBVElPTgotMDAwMEI3ICAgICAoYmFzZSAxNikJCURPVkUgQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQkxMjAwIE5PUlRIIDIzUkQgU1RSRUVUCi0JCQkJV0lMTUlOR1RPTiBOQyAyODQwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjggICAoaGV4KQkJU0VJS09TSEEgQ08uLCBMVEQuCi0wMDAwQjggICAgIChiYXNlIDE2KQkJU0VJS09TSEEgQ08uLCBMVEQuCi0JCQkJU1lTVEVNIEVRVUlQTUVOVCBESVZJU0lPTgotCQkJCTQtMS0xIFRBSUhFSSBTVU1JREEtS1UgVE9LWU8gMTMwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1COSAgIChoZXgpCQlNQ0RPTk5FTEwgRE9VR0xBUyBDT01QVVRFUiBTWVMKLTAwMDBCOSAgICAgKGJhc2UgMTYpCQlNQ0RPTk5FTEwgRE9VR0xBUyBDT01QVVRFUiBTWVMKLQkJCQlESVYgTUNET05ORUxMIERPVUdMQVMgSU5GIFNZUwotCQkJCUJPVU5EQVJZIFdBWSBIRU1FTCBIRU1QU1RFQUQgSEVSVFMKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtQkEgICAoaGV4KQkJU0lJRywgSU5DLgotMDAwMEJBICAgICAoYmFzZSAxNikJCVNJSUcsIElOQy4KLQkJCQk2MDc4IFNURVdBUlQgQVZFTlVFCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQkIgICAoaGV4KQkJVFJJLURBVEEKLTAwMDBCQiAgICAgKGJhc2UgMTYpCQlUUkktREFUQQotCQkJCTUwNSBFQVNUIE1JRERMRUZJRUxEIFJPQUQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzLTQwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUJDICAgKGhleCkJCVJvY2t3ZWxsIEF1dG9tYXRpb24KLTAwMDBCQyAgICAgKGJhc2UgMTYpCQlSb2Nrd2VsbCBBdXRvbWF0aW9uCi0JCQkJMSBBbGxlbi1CcmFkbGV5IERyLgotCQkJCU1heWZpZWxkIEhlaWdodHMgT0ggNDQxMjQtNjExOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQkQgICAoaGV4KQkJTUlUU1VCSVNISSBDQUJMRSBDT01QQU5ZCi0wMDAwQkQgICAgIChiYXNlIDE2KQkJTUlUU1VCSVNISSBDQUJMRSBDT01QQU5ZCi0JCQkJNTIwIE1BRElTT04gQVZFTlVFCi0JCQkJTkVXIFlPUksgTlkgMTAwMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUJFICAgKGhleCkJCVRIRSBOVEkgR1JPVVAKLTAwMDBCRSAgICAgKGJhc2UgMTYpCQlUSEUgTlRJIEdST1VQCi0JCQkJNDcwMSBQQVRSSUNLIEhFTlJZIERSSVZFCi0JCQkJU1VJVEUgMjQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQkYgICAoaGV4KQkJU1lNTUVUUklDIENPTVBVVEVSIFNZU1RFTVMKLTAwMDBCRiAgICAgKGJhc2UgMTYpCQlTWU1NRVRSSUMgQ09NUFVURVIgU1lTVEVNUwotCQkJCTE2MjAgT0FLTEFORCBST0FEICBTVUlURSBELTIwMAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DMCAgIChoZXgpCQlXRVNURVJOIERJR0lUQUwgQ09SUE9SQVRJT04KLTAwMDBDMCAgICAgKGJhc2UgMTYpCQlXRVNURVJOIERJR0lUQUwgQ09SUE9SQVRJT04KLQkJCQk4MTA1IElSVklORSBDRU5URVIgRFJJVkUKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUMxICAgKGhleCkJCU1hZGdlIEx0ZC4KLTAwMDBDMSAgICAgKGJhc2UgMTYpCQlNYWRnZSBMdGQuCi0JCQkJTWFkZ2UgSG91c2UKLQkJCQlQcmlvcnMgV2F5Ci0JCQkJTWFpbmRlbmhlYWQgQmVya3NoaXJlIFNMNiAySFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1DMiAgIChoZXgpCQlJTkZPUk1BVElPTiBQUkVTRU5UQVRJT04gVEVDSC4KLTAwMDBDMiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBQUkVTRU5UQVRJT04gVEVDSC4KLQkJCQkyMzgwMSBDQUxBQkFTQVMgUk9BRAotCQkJCVNVSVRFIDIwMTEKLQkJCQlDQUxBQkFTQVMgQ0EgOTEzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUMzICAgKGhleCkJCUhBUlJJUyBDT1JQIENPTVBVVEVSIFNZUyBESVYKLTAwMDBDMyAgICAgKGJhc2UgMTYpCQlIQVJSSVMgQ09SUCBDT01QVVRFUiBTWVMgRElWCi0JCQkJTS9TIDc1Ci0JCQkJMTAyNSBXLiBOQVNBIEJMVkQuTCAzMzMwOQotCQkJCU1FTEJPVVJORSBGTCAzMjkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQzQgICAoaGV4KQkJV0FURVJTIERJVi4gT0YgTUlMTElQT1JFCi0wMDAwQzQgICAgIChiYXNlIDE2KQkJV0FURVJTIERJVi4gT0YgTUlMTElQT1JFCi0JCQkJMzQgTUFQTEUgU1RSRUVUCi0JCQkJTUlMRk9SRCBNQSAwMTc1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQzUgICAoaGV4KQkJRkFSQUxMT04gQ09NUFVUSU5HL05FVE9QSUEKLTAwMDBDNSAgICAgKGJhc2UgMTYpCQlGQVJBTExPTiBDT01QVVRJTkcvTkVUT1BJQQotCQkJCTI0NzAgTUFSSU5FUiBTUVVBUkUgTE9PUAotCQkJCUFMQU1FREEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUM2ICAgKGhleCkJCUVPTiBTWVNURU1TCi0wMDAwQzYgICAgIChiYXNlIDE2KQkJRU9OIFNZU1RFTVMKLQkJCQkxMDYwMSBTT1VUSCBERUFOWkEgQkxWRC4KLQkJCQlTVUlURSAzMDMKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUM3ICAgKGhleCkJCUFSSVggQ09SUE9SQVRJT04KLTAwMDBDNyAgICAgKGJhc2UgMTYpCQlBUklYIENPUlBPUkFUSU9OCi0JCQkJRU5HSU5FRVJJTkcgTUFJTCBTVE9QCi0JCQkJMTE1MiBNT1JTRSBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUM4ICAgKGhleCkJCUFMVE9TIENPTVBVVEVSIFNZU1RFTVMKLTAwMDBDOCAgICAgKGJhc2UgMTYpCQlBTFRPUyBDT01QVVRFUiBTWVNURU1TCi0JCQkJMjY0MSBPUkNIQVJEIFBBUktXQVkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQzkgICAoaGV4KQkJRW11bGV4IENvcnBvcmF0aW9uCi0wMDAwQzkgICAgIChiYXNlIDE2KQkJRW11bGV4IENvcnBvcmF0aW9uCi0JCQkJMzMzMyBTdXNhbiBTdHJlZXQKLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DQSAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDAwQ0EgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlLCBTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DQiAgIChoZXgpCQlDT01QVS1TSEFDSyBFTEVDVFJPTklDIEdNQkgKLTAwMDBDQiAgICAgKGJhc2UgMTYpCQlDT01QVS1TSEFDSyBFTEVDVFJPTklDIEdNQkgKLQkJCQlSSU5HU1RSLiA1NiAtIDU4LCA1NDUwIE5FVVdJRUQKLQkJCQlXRVNUIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLUNDICAgKGhleCkJCURFTlNBTiBDTy4sIExURC4KLTAwMDBDQyAgICAgKGJhc2UgMTYpCQlERU5TQU4gQ08uLCBMVEQuCi0JCQkJMS0yMy0xMSwgS0FNSVRBS0FJRE8KLQkJCQlTVUdJTkFNSS1LVSwgVE9LWU8gMTY4Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1DRCAgIChoZXgpCQlBbGxpZWQgVGVsZXNpcyBMYWJzIEx0ZAotMDAwMENEICAgICAoYmFzZSAxNikJCUFsbGllZCBUZWxlc2lzIExhYnMgTHRkCi0JCQkJMjcgTmF6YXJldGggQXZlbnVlCi0JCQkJTWlkZGxldG9uIENocmlzdGNodXJjaCA4MDI0Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMDAtQ0UgICAoaGV4KQkJTUVHQURBVEEgQ09SUC4KLTAwMDBDRSAgICAgKGJhc2UgMTYpCQlNRUdBREFUQSBDT1JQLgotCQkJCTM1IE9SVklMTEUgRFJJVkUKLQkJCQlCT0hFTUlBIE5ZIDExNzE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DRiAgIChoZXgpCQlIQVlFUyBNSUNST0NPTVBVVEVSIFBST0RVQ1RTCi0wMDAwQ0YgICAgIChiYXNlIDE2KQkJSEFZRVMgTUlDUk9DT01QVVRFUiBQUk9EVUNUUwotCQkJCShDQU5BREEpIExURC4KLQkJCQkyOTUgUEhJTExJUCBTVFJFRVQgV0FURVJMT08sIE9OVEFSSU8gTjJMCi0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAwLUQwICAgKGhleCkJCURFVkVMQ09OIEVMRUNUUk9OSUNTIExURC4KLTAwMDBEMCAgICAgKGJhc2UgMTYpCQlERVZFTENPTiBFTEVDVFJPTklDUyBMVEQuCi0JCQkJODU2LTUxU1QgU1RSRUVUIEVBU1QKLQkJCQlTQVNLQVRPT04gU0FTS0FUQ0hFV0FOIFM3SyA1QzcKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDAtRDEgICAoaGV4KQkJQURBUFRFQyBJTkNPUlBPUkFURUQKLTAwMDBEMSAgICAgKGJhc2UgMTYpCQlBREFQVEVDIElOQ09SUE9SQVRFRAotCQkJCU0vUyAxODAKLQkJCQk2OTEgU09VVEggTUlMUElUQVMgQkxWRC4KLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRDIgICAoaGV4KQkJU0JFLCBJTkMuCi0wMDAwRDIgICAgIChiYXNlIDE2KQkJU0JFLCBJTkMuCi0JCQkJNDU1MCBOT1JUSCBDQU5ZT04gUk9BRAotCQkJCVNBTiBSQU1PTiBDQSA5NDU4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRDMgICAoaGV4KQkJV0FORyBMQUJPUkFUT1JJRVMgSU5DLgotMDAwMEQzICAgICAoYmFzZSAxNikJCVdBTkcgTEFCT1JBVE9SSUVTIElOQy4KLQkJCQkKLQotMDAtMDAtRDQgICAoaGV4KQkJUFVSRSBEQVRBIExURC4KLTAwMDBENCAgICAgKGJhc2UgMTYpCQlQVVJFIERBVEEgTFRELgotCQkJCTIwMCBXRVNUIEJFQVZFUiBDUkVFSyBST0FECi0JCQkJUklDSE1PTkQgSElMTCAgT05UQVJJTwotCQkJCUw0QiAxQjQgQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAwLUQ1ICAgKGhleCkJCU1JQ1JPR05PU0lTIElOVEVSTkFUSU9OQUwKLTAwMDBENSAgICAgKGJhc2UgMTYpCQlNSUNST0dOT1NJUyBJTlRFUk5BVElPTkFMCi0JCQkJNjMgUVVFRU4gVklDVE9SSUEgU1RSRUVUCi0JCQkJTE9ORE9OIEVDNE4gNFVECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1ENiAgIChoZXgpCQlQVU5DSCBMSU5FIEhPTERJTkcKLTAwMDBENiAgICAgKGJhc2UgMTYpCQlQVU5DSCBMSU5FIEhPTERJTkcKLQkJCQlQLk8uIEJPWCAzOTE3MDgKLQkJCQlCUkFNTEVZIDIwMTgKLQkJCQlTT1VUSCBBRlJJQ0EKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMDAtRDcgICAoaGV4KQkJREFSVE1PVVRIIENPTExFR0UKLTAwMDBENyAgICAgKGJhc2UgMTYpCQlEQVJUTU9VVEggQ09MTEVHRQotCQkJCUtJRVdJVCBDT01QVVRFUiBDRU5URVIKLQkJCQlIQU5PVkVSIE5IIDAzNzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1EOCAgIChoZXgpCQlOT1ZFTEwsIElOQy4KLTAwMDBEOCAgICAgKGJhc2UgMTYpCQlOT1ZFTEwsIElOQy4KLQkJCQkxMjIgRUFTVCAxNzAwIFNPVVRIIE0vUzpFLTEyLTEKLQkJCQlQLk8uIEJPWCA1OTAwCi0JCQkJUFJPVk8gVVQgODQ2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUQ5ICAgKGhleCkJCU5JUFBPTiBURUxFR1JBUEggJiBURUxFUEhPTkUKLTAwMDBEOSAgICAgKGJhc2UgMTYpCQlOSVBQT04gVEVMRUdSQVBIICYgVEVMRVBIT05FCi0JCQkJQ09SUE9SQVRJT04gKE5UVCkKLQkJCQlURUlTSElOIEJMREcuIDMtMSBPT1RFTUFDSEkgMiBDSE9NRSwgQ0hJCi0JCQkJVE9LWU8gMTAwLTgxMTYgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1EQSAgIChoZXgpCQlBVEVYCi0wMDAwREEgICAgIChiYXNlIDE2KQkJQVRFWAotCQkJCTE1IENST1NCWSBEUklWRQotCQkJCUJFREZPUkQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLURCICAgKGhleCkJCUJSSVRJU0ggVEVMRUNPTU1VTklDQVRJT05TIFBMQwotMDAwMERCICAgICAoYmFzZSAxNikJCUJSSVRJU0ggVEVMRUNPTU1VTklDQVRJT05TIFBMQwotCQkJCTgxIE5FV0dBVEUgU1RSRUVUCi0JCQkJTE9ORE9OLCBFQzFBIDdBSgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1EQyAgIChoZXgpCQlIQVlFUyBNSUNST0NPTVBVVEVSIFBST0RVQ1RTCi0wMDAwREMgICAgIChiYXNlIDE2KQkJSEFZRVMgTUlDUk9DT01QVVRFUiBQUk9EVUNUUwotCQkJCVAuTy4gQk9YIDEwNTIwMwotCQkJCUFUTEFOVEEgR0EgMzAzNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUREICAgKGhleCkJCVRDTCBJTkNPUlBPUkFURUQKLTAwMDBERCAgICAgKGJhc2UgMTYpCQlUQ0wgSU5DT1JQT1JBVEVECi0JCQkJNDE4MjkgQUxCUkFFIFNUUkVFVAotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLURFICAgKGhleCkJCUNFVElBCi0wMDAwREUgICAgIChiYXNlIDE2KQkJQ0VUSUEKLQkJCQkxNTAgUlVFIEJFUlRIRUxPVAotCQkJCVpJIFRPVUxPTiBFU1QgODMwODggVE9VTE9OIENFREVYCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTAwLURGICAgKGhleCkJCUJFTEwgJiBIT1dFTEwgUFVCIFNZUyBESVYKLTAwMDBERiAgICAgKGJhc2UgMTYpCQlCRUxMICYgSE9XRUxMIFBVQiBTWVMgRElWCi0JCQkJT0xEIE1BTlNGSUVMRCBST0FECi0JCQkJV09PU1RFUiBPSCA0NDY5MS05MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMCAgIChoZXgpCQlRVUFEUkFNIENPUlAuCi0wMDAwRTAgICAgIChiYXNlIDE2KQkJUVVBRFJBTSBDT1JQLgotCQkJCU9ORSBRVUFEIFdBWQotCQkJCU5PUkNST1NTIEdBIDMwMDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMSAgIChoZXgpCQlHUklEIFNZU1RFTVMKLTAwMDBFMSAgICAgKGJhc2UgMTYpCQlHUklEIFNZU1RFTVMKLQkJCQk0NzIxMSBMQUtFVklFVyBCT1VMRVZBUkQKLQkJCQlQLk8uIEJPWCA1MDAzCi0JCQkJRlJFTU9OVCBDQSA5NDUzNy01MDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMiAgIChoZXgpCQlBQ0VSIFRFQ0hOT0xPR0lFUyBDT1JQLgotMDAwMEUyICAgICAoYmFzZSAxNikJCUFDRVIgVEVDSE5PTE9HSUVTIENPUlAuCi0JCQkJNDAxIENIQVJDT1QgQVZFLgotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMyAgIChoZXgpCQlJTlRFR1JBVEVEIE1JQ1JPIFBST0RVQ1RTIExURAotMDAwMEUzICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgTUlDUk8gUFJPRFVDVFMgTFRECi0JCQkJSU1QLCBOTy4gMSBJTkRVU1RSSUFMIEVTVEFURQotCQkJCUNPTlNFVFQsIENPIERVS0hBTQotCQkJCUVOR0xBTkQgRU5HTEFORCBESDg2VEoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1FNCAgIChoZXgpCQlJTjIgR1JPVVBFIElOVEVSVEVDSE5JUVVFCi0wMDAwRTQgICAgIChiYXNlIDE2KQkJSU4yIEdST1VQRSBJTlRFUlRFQ0hOSVFVRQotCQkJCUlOMiAtIEIuUC42MwotCQkJCTc4MzczIFBMQUlTSVIgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtRTUgICAoaGV4KQkJU0lHTUVYIExURC4KLTAwMDBFNSAgICAgKGJhc2UgMTYpCQlTSUdNRVggTFRELgotCQkJCVNJR01BIEhPVVNFCi0JCQkJTk9SVEggSEVBVEggTEFORSBIT1JTSEFNLCBXRVNUIFNVU1NFWAotCQkJCVJIMTIgNFVaIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1FNiAgIChoZXgpCQlBUFRPUiBQUk9EVUlUUyBERSBDT01NIElORFVTVAotMDAwMEU2ICAgICAoYmFzZSAxNikJCUFQVE9SIFBST0RVSVRTIERFIENPTU0gSU5EVVNUCi0JCQkJNjEsIENIRU1JTiBEVSBWSUVVWC1DSEVORQotCQkJCVpJUlNULUJQIDE3NyAzODI0NCBNRVlMQU4gQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtRTcgICAoaGV4KQkJU1RBUiBHQVRFIFRFQ0hOT0xPR0lFUwotMDAwMEU3ICAgICAoYmFzZSAxNikJCVNUQVIgR0FURSBURUNITk9MT0dJRVMKLQkJCQkyOTMwMCBBVVJPUkEgUk9BRAotCQkJCVNPTE9OIE9IIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FOCAgIChoZXgpCQlBQ0NUT04gVEVDSE5PTE9HWSBDT1JQLgotMDAwMEU4ICAgICAoYmFzZSAxNikJCUFDQ1RPTiBURUNITk9MT0dZIENPUlAuCi0JCQkJNDY3NTAgRlJFTU9OVCBCTFZELiAjMTA0Ci0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRTkgICAoaGV4KQkJSVNJQ0FELCBJTkMuCi0wMDAwRTkgICAgIChiYXNlIDE2KQkJSVNJQ0FELCBJTkMuCi0JCQkJMTkyMCBXRVNUIENPUlBPUkFURSBXQVkKLQkJCQlBTkFIRUlNIENBIDkyODAzLTYxMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUVBICAgKGhleCkJCVVQTk9EIEFCCi0wMDAwRUEgICAgIChiYXNlIDE2KQkJVVBOT0QgQUIKLQkJCQlCT1ggMjMwNTEKLQkJCQlTLTc1MCAyMyBVUFBTQUxBCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAwLUVCICAgKGhleCkJCU1BVFNVU0hJVEEgQ09NTS4gSU5ELiBDTy4gTFRELgotMDAwMEVCICAgICAoYmFzZSAxNikJCU1BVFNVU0hJVEEgQ09NTS4gSU5ELiBDTy4gTFRELgotCQkJCTMtMSAgNC1DSE9NRQotCQkJCVRTVU5BU0hJTUEtSElHQVNISSBLT0hPS1UtS1UgIFlPS09IQU1BCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1FQyAgIChoZXgpCQlNSUNST1BST0NFU1MKLTAwMDBFQyAgICAgKGJhc2UgMTYpCQlNSUNST1BST0NFU1MKLQkJCQk5NyBCSVMsIFJVRSBERSBDT0xPTUJFUwotCQkJCUIuUC4gODcgOTI0MDAgQ09VUkJFVk9JRQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMC1FRCAgIChoZXgpCQlBUFJJTAotMDAwMEVEICAgICAoYmFzZSAxNikJCUFQUklMCi0JCQkJNjAsIFJVRSBERSBDQVJUQUxFCi0JCQkJQlAgMzggMzgxNzAgU0VZU1NJTkVULVBBUklTRVQKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtRUUgICAoaGV4KQkJTkVUV09SSyBERVNJR05FUlMsIExURC4KLTAwMDBFRSAgICAgKGJhc2UgMTYpCQlORVRXT1JLIERFU0lHTkVSUywgTFRELgotCQkJCVVOSVQgMUEsIEhPUk5CRUFNIFBBUksKLQkJCQlIT09LU1RPTkUgUk9BRCBIQVJST0dBVEUsIE5PUlRIIFlPUktTSElSCi0JCQkJVU5JVEVEIEtJTkdET00gSEcyIDhRVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLUVGICAgKGhleCkJCUtUSQotMDAwMEVGICAgICAoYmFzZSAxNikJCUtUSQotCQkJCTIxNTcgTydUT09MRSBBVkVOVUUKLQkJCQlTVUlURSBICi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUYwICAgKGhleCkJCVNBTVNVTkcgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDAwRjAgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQk0MTYsIE1BRVRBTi0zRE9ORywgUEFMREFMLUdVCi0JCQkJU1VXT04gQ0lUWSwgS1lVTkdLSS1ETwotCQkJCTQ0Mi03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDAtRjEgICAoaGV4KQkJTUFHTkEgQ09NUFVURVIgQ09SUE9SQVRJT04KLTAwMDBGMSAgICAgKGJhc2UgMTYpCQlNQUdOQSBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTIyIEtFRVdBWURJTiBEUklWRQotCQkJCVNBTEVNIE5IIDAzMDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1GMiAgIChoZXgpCQlTUElERVIgQ09NTVVOSUNBVElPTlMKLTAwMDBGMiAgICAgKGJhc2UgMTYpCQlTUElERVIgQ09NTVVOSUNBVElPTlMKLQkJCQk3NDkxIEJSSUFSIFJPQUQKLQkJCQlNT05UUkVBTCwgIFFVRUJFQyBINFcgMUs0Ci0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAwLUYzICAgKGhleCkJCUdBTkRBTEYgREFUQSBMSU1JVEVECi0wMDAwRjMgICAgIChiYXNlIDE2KQkJR0FOREFMRiBEQVRBIExJTUlURUQKLQkJCQkxMzAgQ09MT05OQURFIFJPQUQgU09VVEgKLQkJCQlORVBFQU4gIE9OVEFSSU8gIEsyRSA3TTQKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDAtRjQgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMKLTAwMDBGNCAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcwotCQkJCUNPUlBPUkFUSU9OCi0JCQkJOTUwIEtJRkVSIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUY1ICAgKGhleCkJCURJQU1PTkQgU0FMRVMgTElNSVRFRAotMDAwMEY1ICAgICAoYmFzZSAxNikJCURJQU1PTkQgU0FMRVMgTElNSVRFRAotCQkJCTE3LCBDSEFSVEVSSE9VU0UgU1RSRUVUCi0JCQkJTE9ORE9OLCBFQ0lOIDZSQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtRjYgICAoaGV4KQkJQVBQTElFRCBNSUNST1NZU1RFTVMgQ09SUC4KLTAwMDBGNiAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIE1JQ1JPU1lTVEVNUyBDT1JQLgotCQkJCTUwMjAgMTQ4IEFWRU5VRSwgTi5FLgotCQkJCVAuTy4gQk9YIDk3MDAyCi0JCQkJUkVETU9ORCBXQSA5ODA3My05NzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1GNyAgIChoZXgpCQlZT1VUSCBLRUVQIEVOVEVSUFJJU0UgQ08gTFRECi0wMDAwRjcgICAgIChiYXNlIDE2KQkJWU9VVEggS0VFUCBFTlRFUlBSSVNFIENPIExURAotCQkJCTMvRiBOTy4gNzEyIE1JTlRTVSBFLiBST0FECi0JCQkJVEFJUEVJLCBUQUlXQU4KLQkJCQlST0MKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAwLUY4ICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0wMDAwRjggICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQlMS0cgMS0yL0ExOQotCQkJCTU1MCBLSU5HIFNUUkVFVCBMSVRUTEVUT04gIE1BICAwMTQ2MC0xMjgKLQkJCQkwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRjkgICAoaGV4KQkJUVVPVFJPTiBTWVNURU1TIElOQy4KLTAwMDBGOSAgICAgKGJhc2UgMTYpCQlRVU9UUk9OIFNZU1RFTVMgSU5DLgotCQkJCTU0NTQgQkVFVEhPVkVOIFNULgotCQkJCUxPUyBBTkdFTEVTIENBIDkwMDY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1GQSAgIChoZXgpCQlNSUNST1NBR0UgQ09NUFVURVIgU1lTVEVNUyBJTkMKLTAwMDBGQSAgICAgKGJhc2UgMTYpCQlNSUNST1NBR0UgQ09NUFVURVIgU1lTVEVNUyBJTkMKLQkJCQk2ODAgU09VVEggUk9DSyBCTFZECi0JCQkJUkVOTyBORSA4OTUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRkIgICAoaGV4KQkJUkVDSE5FUiBaVVIgS09NTVVOSUtBVElPTgotMDAwMEZCICAgICAoYmFzZSAxNikJCVJFQ0hORVIgWlVSIEtPTU1VTklLQVRJT04KLQkJCQlCSVRaRU5TVFIuIDExCi0JCQkJRi01NDY0IEFTQkFDSAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLUZDICAgKGhleCkJCU1FSUtPCi0wMDAwRkMgICAgIChiYXNlIDE2KQkJTUVJS08KLQkJCQk2NTAgQVpURUMgV0VTVAotCQkJCUJSSVNUT0wgQlMxMiA0U0QKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLUZEICAgKGhleCkJCUhJR0ggTEVWRUwgSEFSRFdBUkUKLTAwMDBGRCAgICAgKGJhc2UgMTYpCQlISUdIIExFVkVMIEhBUkRXQVJFCi0JCQkJUE8gQk9YIDE3MCBXSU5ETUlMTCBST0FECi0JCQkJSEVBRElOR1RPTiBPWEZPUkQgT1gzIDdCTgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1GRSAgIChoZXgpCQlBTk5BUE9MSVMgTUlDUk8gU1lTVEVNUwotMDAwMEZFICAgICAoYmFzZSAxNikJCUFOTkFQT0xJUyBNSUNSTyBTWVNURU1TCi0JCQkJMTkwIEFETUlSQUwgQ09DSFJBTkUgRFJJVkUKLQkJCQlTVUlURSAxMzAKLQkJCQlBTk5BUE9MSVMgTUQgMjE0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUZGICAgKGhleCkJCUNBTVRFQyBFTEVDVFJPTklDUyBMVEQuCi0wMDAwRkYgICAgIChiYXNlIDE2KQkJQ0FNVEVDIEVMRUNUUk9OSUNTIExURC4KLQkJCQkxMDEgVkFVR0hBTiBXQVkKLQkJCQlMRUlDRVNURVIgTEUxIDRTQQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS0wMCAgIChoZXgpCQlFUVVJUCdUUkFOUwotMDAwMTAwICAgICAoYmFzZSAxNikJCUVRVUlQJ1RSQU5TCi0JCQkJMzEgcnVlIFBhdWwgQ2V6YW5uZQotCQkJCUxBIFJPQ0hFVFRFICA3NzAwMAotCQkJCUZSQU5DRQotCi0wMC0wMS0wMSAgIChoZXgpCQlQUklWQVRFCi0wMDAxMDEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTAxLTAyICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwMDEwMiAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCYXlmcm9udCBQbGF6YSAgLSBNUzogNDIyMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0wMyAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMDAxMDMgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQmF5ZnJvbnQgUGxhemEgLSBNUzogNDIyMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0wNCAgIChoZXgpCQlEVklDTyBDby4sIEx0ZC4KLTAwMDEwNCAgICAgKGJhc2UgMTYpCQlEVklDTyBDby4sIEx0ZC4KLQkJCQlLb29rbWluIENhcmQgQi9EIDZGIDI2Ny0yCi0JCQkJU2VvaHl1bi1Eb25nIEJvb25kYW5nLUd1Ci0JCQkJU3VuZ25hbS1zaSBLeXVuZ2tpLWRvIDQ2My0wNTAgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS0wNSAgIChoZXgpCQlCZWNraG9mZiBBdXRvbWF0aW9uIEdtYkgKLTAwMDEwNSAgICAgKGJhc2UgMTYpCQlCZWNraG9mZiBBdXRvbWF0aW9uIEdtYkgKLQkJCQlFaXNlcnN0ci4gNQotCQkJCTMzNDE1IFZlcmwgCi0JCQkJR0VSTUFOWQotCi0wMC0wMS0wNiAgIChoZXgpCQlUZXdzIERhdGVudGVjaG5payBHbWJICi0wMDAxMDYgICAgIChiYXNlIDE2KQkJVGV3cyBEYXRlbnRlY2huaWsgR21iSAotCQkJCUFtIEJhaG5ob2YgNwotCQkJCTI1NDY5IEhhbHN0ZW5iZWsgIAotCQkJCUdFUk1BTlkKLQotMDAtMDEtMDcgICAoaGV4KQkJTGVpc2VyIEdtYkgKLTAwMDEwNyAgICAgKGJhc2UgMTYpCQlMZWlzZXIgR21iSAotCQkJCUlsbXN0ci4gNwotCQkJCTg1NTc5IE5ldWJpYmVyZyAgCi0JCQkJR0VSTUFOWQotCi0wMC0wMS0wOCAgIChoZXgpCQlBVkxBQiBUZWNobm9sb2d5LCBJbmMuCi0wMDAxMDggICAgIChiYXNlIDE2KQkJQVZMQUIgVGVjaG5vbG9neSwgSW5jLgotCQkJCTNGLTEsIE5vLiAxMzQsIFNlYy4gMwotCQkJCUNodW5nIFNoaW4gUm9hZAotCQkJCUhzaW4gVGllbiwgVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLTA5ICAgKGhleCkJCU5hZ2FubyBKYXBhbiBSYWRpbyBDby4sIEx0ZC4KLTAwMDEwOSAgICAgKGJhc2UgMTYpCQlOYWdhbm8gSmFwYW4gUmFkaW8gQ28uLCBMdGQuCi0JCQkJU2hpbW9oaWdhbm8gMTE2MywgSW5hc2F0by1tYWNoaQotCQkJCU5hZ2FubyAzODEtMjI4OCAgCi0JCQkJSkFQQU4KLQotMDAtMDEtMEEgICAoaGV4KQkJQ0lTIFRFQ0hOT0xPR1kgSU5DLgotMDAwMTBBICAgICAoYmFzZSAxNikJCUNJUyBURUNITk9MT0dZIElOQy4KLQkJCQkxNkYsIE5vLiA3NSBIc2luIFRhaSBXdSBSb2FkCi0JCQkJU2VjLiAxLCBIc2kgQ2hpaAotCQkJCVRhaXBlaSBIc2llbiAyMjEgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtMEIgICAoaGV4KQkJU3BhY2UgQ3liZXJMaW5rLCBJbmMuCi0wMDAxMEIgICAgIChiYXNlIDE2KQkJU3BhY2UgQ3liZXJMaW5rLCBJbmMuCi0JCQkJNXRoIEZsLiBHdXBweXVuZyBUb3duIEIKLQkJCQkyMDMgTm9uaG55dW4tRG9uZywgS2FuZ2hhbS1HdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtMEMgICAoaGV4KQkJU3lzdGVtIFRhbGtzIEluYy4KLTAwMDEwQyAgICAgKGJhc2UgMTYpCQlTeXN0ZW0gVGFsa3MgSW5jLgotCQkJCTRGLCBQcmltZU5paG9uYmFzaGkgQmxkLgotCQkJCTMtMzUtNiwgTmlob25iYXNoaSBIYW1hLWNobwotCQkJCUNodW8ta3UgVG9reW8gIAotCQkJCUpBUEFOCi0KLTAwLTAxLTBEICAgKGhleCkJCUNPUkVDTywgSU5DLgotMDAwMTBEICAgICAoYmFzZSAxNikJCUNPUkVDTywgSU5DLgotCQkJCTY5NjkgUm91dGUgVHJhbnNjYW5hZGlhbm5lCi0JCQkJVmlsbGUgU3QuIExhdXJlbnQgSDRUIDFWOCBRdWViZWMgCi0JCQkJQ0FOQURBCi0KLTAwLTAxLTBFICAgKGhleCkJCUJyaS1MaW5rIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotMDAwMTBFICAgICAoYmFzZSAxNikJCUJyaS1MaW5rIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCTJGLCBOby4gNjMsIENob3ctVHplIFN0cmVldAotCQkJCVRhaXBlaSAxMTQgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtMEYgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDAxMEYgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0xMCAgIChoZXgpCQlHb3RoYW0gTmV0d29ya3MKLTAwMDExMCAgICAgKGJhc2UgMTYpCQlHb3RoYW0gTmV0d29ya3MKLQkJCQkxNSBEaXNjb3ZlcnkgV2F5Ci0JCQkJQWN0b24gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTExICAgKGhleCkJCWlEaWdtIEluYy4KLTAwMDExMSAgICAgKGJhc2UgMTYpCQlpRGlnbSBJbmMuCi0JCQkJN0ZMIFNpbmRvIEIvRCAxNjA0LTIyIFNlb2Noby1Eb25nCi0JCQkJU2VvY2hvLUd1Ci0JCQkJU2VvdWwgMTM3LTA3MCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTEyICAgKGhleCkJCVNoYXJrIE11bHRpbWVkaWEgSW5jLgotMDAwMTEyICAgICAoYmFzZSAxNikJCVNoYXJrIE11bHRpbWVkaWEgSW5jLgotCQkJCTQ4ODkwIE1pbG1vbnQgRHJpdmUgICMxMDEtRAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTEzICAgKGhleCkJCU9MWU1QVVMgQ09SUE9SQVRJT04KLTAwMDExMyAgICAgKGJhc2UgMTYpCQlPTFlNUFVTIENPUlBPUkFUSU9OCi0JCQkJMi0zIEt1Ym95YW1hLWNobywgSGFjaGlvamktc2hpCi0JCQkJVG9reW8gMTkyLTg1MTIgIAotCQkJCUpBUEFOCi0KLTAwLTAxLTE0ICAgKGhleCkJCUtBTkRBIFRTVVNISU4gS09HWU8gQ08uLCBMVEQuCi0wMDAxMTQgICAgIChiYXNlIDE2KQkJS0FOREEgVFNVU0hJTiBLT0dZTyBDTy4sIExURC4KLQkJCQkyMy0yLCBOaXNoaS1Hb3RhbmRhIDItY2hvbWUsCi0JCQkJU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gMTQxLTg1MzMgIAotCQkJCUpBUEFOCi0KLTAwLTAxLTE1ICAgKGhleCkJCUVYVFJBVEVDSCBDT1JQT1JBVElPTgotMDAwMTE1ICAgICAoYmFzZSAxNikJCUVYVFJBVEVDSCBDT1JQT1JBVElPTgotCQkJCTc2MCBUaG9ybnRvbiBTdC4sIFVuaXQgMgotCQkJCVBvc3QgRmFsbHMgSUQgODM4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTE2ICAgKGhleCkJCU5ldHNwZWN0IFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTE2ICAgICAoYmFzZSAxNikJCU5ldHNwZWN0IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTM5NDUgRnJlZWRvbSBDaXJjbGUgLSBTdGUuICMzNjAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtMTcgICAoaGV4KQkJQ0FOQUwgKwotMDAwMTE3ICAgICAoYmFzZSAxNikJCUNBTkFMICsKLQkJCQkyMyBSdWUgTGVCbGFuYwotCQkJCUxlIFBvbmFudCBDCi0JCQkJNzU5MDYgUGFyaXMgQ2VkZXggMTUgIAotCQkJCUZSQU5DRQotCi0wMC0wMS0xOCAgIChoZXgpCQlFWiBEaWdpdGFsIENvLiwgTHRkLgotMDAwMTE4ICAgICAoYmFzZSAxNikJCUVaIERpZ2l0YWwgQ28uLCBMdGQuCi0JCQkJQml0dmlsbGUgQmxkZy4gUm9vbSA3MDMKLQkJCQkjMTMyNyBTZW9jaG8tRG9uZyBTZW9jaG8tR3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTE5ICAgKGhleCkJCVJUVW5ldCAoQXVzdHJhbGlhKQotMDAwMTE5ICAgICAoYmFzZSAxNikJCVJUVW5ldCAoQXVzdHJhbGlhKQotCQkJCTgvMy01IEdpbGRhIENvdXJ0Ci0JCQkJTXVsZ3JhdmUgVmljIDMxNzAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDEtMUEgICAoaGV4KQkJRUVIIERhdGFMaW5rIEdtYkgKLTAwMDExQSAgICAgKGJhc2UgMTYpCQlFRUggRGF0YUxpbmsgR21iSAotCQkJCU5pZWRlcmJlcmdlciBTdHIuIDc1Ci0JCQkJRC01MzkwOSBadWVscGljaCAgCi0JCQkJR0VSTUFOWQotCi0wMC0wMS0xQiAgIChoZXgpCQlVbml6b25lIFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTFCICAgICAoYmFzZSAxNikJCVVuaXpvbmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNUZsb29yIEhhZVN1bmcgQmxkZy4KLQkJCQk2Ny0yLVlhbmdKYWUtRG9uZwotCQkJCVNlb0Noby1LdSBTZW91bCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtMUMgICAoaGV4KQkJVW5pdmVyc2FsIFRhbGt3YXJlIENvcnBvcmF0aW9uCi0wMDAxMUMgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIFRhbGt3YXJlIENvcnBvcmF0aW9uCi0JCQkJMTAgU2Vjb25kIFN0LiBORQotCQkJCVN1aXRlICM0MDAKLQkJCQlNaW5uZWFwb2xpcyBNTiA1NTQxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtMUQgICAoaGV4KQkJQ2VudGlsbGl1bSBDb21tdW5pY2F0aW9ucwotMDAwMTFEICAgICAoYmFzZSAxNikJCUNlbnRpbGxpdW0gQ29tbXVuaWNhdGlvbnMKLQkJCQk0NzIxMSBMYWtldmlldyBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTFFICAgKGhleCkJCVByZWNpZGlhIFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTFFICAgICAoYmFzZSAxNikJCVByZWNpZGlhIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwQSBIZWFyc3QgV2F5Ci0JCQkJS2FuYXRhIE9udGFyaW8gSzJNLTJDNCAKLQkJCQlDQU5BREEKLQotMDAtMDEtMUYgICAoaGV4KQkJUkMgTmV0d29ya3MsIEluYy4KLTAwMDExRiAgICAgKGJhc2UgMTYpCQlSQyBOZXR3b3JrcywgSW5jLgotCQkJCTY3MjcgRmxhbmRlcnMgRHJpdmUgLSBTdGUuICMyMTIKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTIwICAgKGhleCkJCU9TQ0lMTE9RVUFSVFogUy5BLgotMDAwMTIwICAgICAoYmFzZSAxNikJCU9TQ0lMTE9RVUFSVFogUy5BLgotCQkJCVJ1ZSBEZXMgQnJldmFyZHMgMTYKLQkJCQkyMDAyIE5ldWNoYXRlbCAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDEtMjEgICAoaGV4KQkJV2F0Y2hndWFyZCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDEyMSAgICAgKGJhc2UgMTYpCQlXYXRjaGd1YXJkIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTYwNSBGaWZ0aCBBdmUuIFMKLQkJCQlTdWl0ZSA1MDAKLQkJCQlTZWF0dGxlIFdBIDk4MTA0LTM4OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTIyICAgKGhleCkJCVRyZW5kIENvbW11bmljYXRpb25zLCBMdGQuCi0wMDAxMjIgICAgIChiYXNlIDE2KQkJVHJlbmQgQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLQkJCQlLbmF2ZXMgQmVlY2ggRXN0YXRlCi0JCQkJTG91ZHdhdGVyLCBIaWdoIFd5Y29tYmUKLQkJCQlCdWNrcywgSFAxMCA5UVogRW5nbGFuZCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS0yMyAgIChoZXgpCQlESUdJVEFMIEVMRUNUUk9OSUNTIENPUlAuCi0wMDAxMjMgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTgtMi01MiBOYW5rbyBIaWdhc2hpLCBTdW1pbm9lLWt1Ci0JCQkJT3Nha2EsIDU1OS0wMDMxICAKLQkJCQlKQVBBTgotCi0wMC0wMS0yNCAgIChoZXgpCQlBY2VyIEluY29ycG9yYXRlZAotMDAwMTI0ICAgICAoYmFzZSAxNikJCUFjZXIgSW5jb3Jwb3JhdGVkCi0JCQkJMjFGLCA4OCwgU2VjLjEKLQkJCQlIc2luIFRhaSBXdSBSb2FkLCBIc2ljaGloCi0JCQkJVGFpcGVpIEhzaWVuIDIyMSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0yNSAgIChoZXgpCQlZQUVTVSBNVVNFTiBDTy4sIExURC4KLTAwMDEyNSAgICAgKGJhc2UgMTYpCQlZQUVTVSBNVVNFTiBDTy4sIExURC4KLQkJCQk0LTgtOCwgTmFrYW1lZ3VybwotCQkJCU1lZ3Vyby1rdSwKLQkJCQlUb2t5bywgMTUzLTg2NDQgIAotCQkJCUpBUEFOCi0KLTAwLTAxLTI2ICAgKGhleCkJCVBBQyBMYWJzCi0wMDAxMjYgICAgIChiYXNlIDE2KQkJUEFDIExhYnMKLQkJCQkzMDc5IEtpbGdvcmUgUm9hZAotCQkJCVJhbmNobyBDb3Jkb3ZhIENBIDk1NjcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0yNyAgIChoZXgpCQlPUEVOIE5ldHdvcmtzIFB0eSBMdGQKLTAwMDEyNyAgICAgKGJhc2UgMTYpCQlPUEVOIE5ldHdvcmtzIFB0eSBMdGQKLQkJCQlMZXZlbCA1LCAzNDIgRmxpbmRlcnMgU3RyZWV0Ci0JCQkJTWVsYm91cm5lICBWSUMgMzAwMAotCQkJCUFVU1RSQUxJQQotCi0wMC0wMS0yOCAgIChoZXgpCQlFbmpveVdlYiwgSW5jLgotMDAwMTI4ICAgICAoYmFzZSAxNikJCUVuam95V2ViLCBJbmMuCi0JCQkJMzAwMCBTY290dCBCbHZkLiAjMTA3Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTI5ICAgKGhleCkJCURGSSBJbmMuCi0wMDAxMjkgICAgIChiYXNlIDE2KQkJREZJIEluYy4KLQkJCQkxMDAsIEh1YW4tSG8gU3RyZWV0Ci0JCQkJSHNpLUNoaWggQ2l0eSBUYWlwZWkgSHNpZW4gCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0yQSAgIChoZXgpCQlUZWxlbWF0aWNhIFNpc3RlbXMgSW50ZWxpZ2VudGUKLTAwMDEyQSAgICAgKGJhc2UgMTYpCQlUZWxlbWF0aWNhIFNpc3RlbXMgSW50ZWxpZ2VudGUKLQkJCQlSdWEgTWlndWVsIENhc2FncmFuZGUsIDIwMAotCQkJCVNhbyBQYXVsbyAgCi0JCQkJQlJBWklMCi0KLTAwLTAxLTJCICAgKGhleCkJCVRFTEVORVQgQ28uLCBMdGQuCi0wMDAxMkIgICAgIChiYXNlIDE2KQkJVEVMRU5FVCBDby4sIEx0ZC4KLQkJCQkKLQotMDAtMDEtMkMgICAoaGV4KQkJQXJhdm94IFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTJDICAgICAoYmFzZSAxNikJCUFyYXZveCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNjcyNSA0MHRoIFBsYWNlIE5vcnRoCi0JCQkJUGx5bW91dGggTU4gNTU0NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTJEICAgKGhleCkJCUtvbW9kbyBUZWNobm9sb2d5Ci0wMDAxMkQgICAgIChiYXNlIDE2KQkJS29tb2RvIFRlY2hub2xvZ3kKLQkJCQkxNzAgS25vd2xlcyBEcml2ZQotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtMkUgICAoaGV4KQkJUEMgUGFydG5lciBMdGQuCi0wMDAxMkUgICAgIChiYXNlIDE2KQkJUEMgUGFydG5lciBMdGQuCi0JCQkJUm0gMTkwMS0xOTA4LCAxOS9GLCBTaGF0aW4gR2FsbGVyaWEKLQkJCQkxOC0yNCBTaGFuICBNZWkgU3RyZWV0LCBGbyBUYW4gU2hhdGluLCBICi0JCQkJQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0wMS0yRiAgIChoZXgpCQlUd2luaGVhZCBJbnRlcm5hdGlvbmFsIENvcnAKLTAwMDEyRiAgICAgKGJhc2UgMTYpCQlUd2luaGVhZCBJbnRlcm5hdGlvbmFsIENvcnAKLQkJCQkyRkwsIDIsIExhbmUgMjM1LCBCYW8tQ2hpYW8gUm9hZAotCQkJCUhzaW4tVGllbgotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0zMCAgIChoZXgpCQlFeHRyZW1lIE5ldHdvcmtzCi0wMDAxMzAgICAgIChiYXNlIDE2KQkJRXh0cmVtZSBOZXR3b3JrcwotCQkJCTM1ODUgTW9ucm9lIFN0cmVldAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0zMSAgIChoZXgpCQlCb3NjaCBTZWN1cml0eSBTeXN0ZW1zLCBJbmMuCi0wMDAxMzEgICAgIChiYXNlIDE2KQkJQm9zY2ggU2VjdXJpdHkgU3lzdGVtcywgSW5jLgotCQkJCTEzMCBQZXJpbnRvbiBQYXJrd2F5Ci0JCQkJRmFpcnBvcnQgTlkgMTQ0NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTMyICAgKGhleCkJCURyYW5ldHogLSBCTUkKLTAwMDEzMiAgICAgKGJhc2UgMTYpCQlEcmFuZXR6IC0gQk1JCi0JCQkJMTAwMCBOZXcgRHVyaGFtIFJvYWQKLQkJCQlFZGlzb24gTkogMDg4MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTMzICAgKGhleCkJCUtZT1dBIEVsZWN0cm9uaWMgSW5zdHJ1bWVudHMgQwotMDAwMTMzICAgICAoYmFzZSAxNikJCUtZT1dBIEVsZWN0cm9uaWMgSW5zdHJ1bWVudHMgQwotCQkJCTMtNS0xLCBDeW9mdWdhb2thCi0JCQkJQ3lvZnUgVG9reW8gCi0JCQkJSkFQQU4KLQotMDAtMDEtMzQgICAoaGV4KQkJU2VsZWN0cm9uIFN5c3RlbXMgQUcKLTAwMDEzNCAgICAgKGJhc2UgMTYpCQlTZWxlY3Ryb24gU3lzdGVtcyBBRwotCQkJCUJlcm5zdHJlYXNzZSA3MAotCQkJCUNILTMyNTAgTHlzcwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAxLTM1ICAgKGhleCkJCUtEQyBDb3JwLgotMDAwMTM1ICAgICAoYmFzZSAxNikJCUtEQyBDb3JwLgotCQkJCTIwMC0xMSBBbllhbmcgNyBkb25nCi0JCQkJTWFuQW4tR3UgQW5ZYW5lLVNpIEt5dW5nZ2ktZG8KLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS0zNiAgIChoZXgpCQlDeWJlclRBTiBUZWNobm9sb2d5LCBJbmMuCi0wMDAxMzYgICAgIChiYXNlIDE2KQkJQ3liZXJUQU4gVGVjaG5vbG9neSwgSW5jLgotCQkJCTYyNiwgQmxkZy41MywgMTk1LTU2IFNlYy40Ci0JCQkJQ2h1bmcgSHNpbmcgUmQgQ2h1dHVuZywgSHNpbmNodQotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLTM3ICAgKGhleCkJCUlUIEZhcm0gQ29ycG9yYXRpb24KLTAwMDEzNyAgICAgKGJhc2UgMTYpCQlJVCBGYXJtIENvcnBvcmF0aW9uCi0JCQkJQXNhc2hpc2VpbWVpIEZ1Y2h1IEJsZGcuIDExRgotCQkJCTEtMTQtMSBGdWNodS1jaG8sIEZ1Y2h1LXNoaSBUb2t5bwotCQkJCTE4My0wMDU1IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtMzggICAoaGV4KQkJWEFWaSBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMDEzOCAgICAgKGJhc2UgMTYpCQlYQVZpIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCTlGLCBOby4gMTI5LCBIc2luZyBUZSBSZCwKLQkJCQlTYW5jaHVuZyBDaXR5ICBUYWlwZWkgSHNpZW4KLQkJCQkyNDEgVEFJV0FOIDI0MSBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0zOSAgIChoZXgpCQlQb2ludCBNdWx0aW1lZGlhIFN5c3RlbXMKLTAwMDEzOSAgICAgKGJhc2UgMTYpCQlQb2ludCBNdWx0aW1lZGlhIFN5c3RlbXMKLQkJCQk0UmEgNTA3LCBTaGlod2EgSW5kdXN0cmlhbCBDb21wbGV4Ci0JCQkJNjY5LTggU3VuZ2tvZy1Eb25nLCBBbnNhbi1DaXR5LCBLeXVuZ2dpLQotCQkJCUtvcmVhIDQyNS0xMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtM0EgICAoaGV4KQkJU0hFTENBRCBDT01NVU5JQ0FUSU9OUywgTFRELgotMDAwMTNBICAgICAoYmFzZSAxNikJCVNIRUxDQUQgQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQlQLk8uIEJveCA4NTEzCi0JCQkJTmV3IEluZHVzdHJpYWwgWm9uZSBOZXRhbnlhIDQyNTA0Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAxLTNCICAgKGhleCkJCUJOQSBTWVNURU1TCi0wMDAxM0IgICAgIChiYXNlIDE2KQkJQk5BIFNZU1RFTVMKLQkJCQkxNjM3IFMuIE1haW4gU3RyZWV0Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTNDICAgKGhleCkJCVRJVyBTWVNURU1TCi0wMDAxM0MgICAgIChiYXNlIDE2KQkJVElXIFNZU1RFTVMKLQkJCQkyMjExIExhd3NvbiBMYW5lCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTNEICAgKGhleCkJCVJpc2NTdGF0aW9uIEx0ZC4KLTAwMDEzRCAgICAgKGJhc2UgMTYpCQlSaXNjU3RhdGlvbiBMdGQuCi0JCQkJMTY4IEVsbGlvdHQgU3RyZWV0Ci0JCQkJVHlsZGVzbGV5IE0yOSA4MDUKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAxLTNFICAgKGhleCkJCUFzY29tIFRhdGVjbyBBQgotMDAwMTNFICAgICAoYmFzZSAxNikJCUFzY29tIFRhdGVjbyBBQgotCQkJCUJveCA4NzgzCi0JCQkJNDAyNzYgR290ZWJvcmcKLQkJCQlTV0VERU4KLQotMDAtMDEtM0YgICAoaGV4KQkJTmVpZ2hib3IgV29ybGQgQ28uLCBMdGQuCi0wMDAxM0YgICAgIChiYXNlIDE2KQkJTmVpZ2hib3IgV29ybGQgQ28uLCBMdGQuCi0JCQkJMTE0QSBZRVJDLCAxMzQsIFNoaW5jaG9uX2RvbmcKLQkJCQlTZW9kYWVtdW5fa3UgU2VvdWwKLQkJCQkxMjAtNzQ5IDEyMC03NDkgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNDAgICAoaGV4KQkJU2VuZHRlayBDb3Jwb3JhdGlvbgotMDAwMTQwICAgICAoYmFzZSAxNikJCVNlbmR0ZWsgQ29ycG9yYXRpb24KLQkJCQkxMkYtMywgMzMzLCBTZWMuMQotCQkJCUt1YW5nLUZ1IFJvYWQgSHNpbmNodQotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtNDEgICAoaGV4KQkJQ0FCTEUgUFJJTlQKLTAwMDE0MSAgICAgKGJhc2UgMTYpCQlDQUJMRSBQUklOVAotCQkJCUpvemVmIENhcmR5bnN0cmFhdCAxNgotCQkJCUIgIC0gOTQyMCBFcnBlLU1lcmUKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC0wMS00MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxNDIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTQzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDE0MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDQgICAoaGV4KQkJRU1DIENvcnBvcmF0aW9uCi0wMDAxNDQgICAgIChiYXNlIDE2KQkJRU1DIENvcnBvcmF0aW9uCi0JCQkJMjI4IFNvdXRoIFN0LgotCQkJCUhvcGtpbnRvbiBNQSAwMTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDUgICAoaGV4KQkJV0lOU1lTVEVNUywgSU5DLgotMDAwMTQ1ICAgICAoYmFzZSAxNikJCVdJTlNZU1RFTVMsIElOQy4KLQkJCQk3MTUgU3RhZGl1bSBEcml2ZQotCQkJCUFybGluZ3RvbiBUWCA3NjAxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDYgICAoaGV4KQkJVGVzY28gQ29udHJvbHMsIEluYy4KLTAwMDE0NiAgICAgKGJhc2UgMTYpCQlUZXNjbyBDb250cm9scywgSW5jLgotCQkJCVAuTy4gQm94IDIzOTAxMgotCQkJCVNhY3JhbWVudG8gQ0EgOTU4MjMtOTAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDcgICAoaGV4KQkJWmhvbmUgVGVjaG5vbG9naWVzCi0wMDAxNDcgICAgIChiYXNlIDE2KQkJWmhvbmUgVGVjaG5vbG9naWVzCi0JCQkJNzAwMSBPYWtwb3J0IFN0cmVldAotCQkJCU9ha2xhbmQgQ0EgOTQ2MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTQ4ICAgKGhleCkJCVgtdHJhV2ViIEluYy4KLTAwMDE0OCAgICAgKGJhc2UgMTYpCQlYLXRyYVdlYiBJbmMuCi0JCQkJNjc1MCBXZXN0IDkzcmQgU3RyZWV0IC0gU3RlLiAjMjEwCi0JCQkJT3ZlcmxhbmQgUGFyayBLUyA2NjIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDkgICAoaGV4KQkJVC5ELlQuIFRyYW5zZmVyIERhdGEgVGVzdCBHbWJICi0wMDAxNDkgICAgIChiYXNlIDE2KQkJVC5ELlQuIFRyYW5zZmVyIERhdGEgVGVzdCBHbWJICi0JCQkJU2llbWVuc3N0cmFzc2UgMTgKLQkJCQk4NDA1MSBFc3NlbmJhY2gKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS00QSAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0wMDAxNEEgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMgNS0xLTIKLQkJCQlLaXRhc2hpbmFnYXdhLAotCQkJCVRva3lvIFNoaW5hZ2F3YS1rdSAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTAwLTAxLTRCICAgKGhleCkJCUVubm92YXRlIE5ldHdvcmtzLCBJbmMuCi0wMDAxNEIgICAgIChiYXNlIDE2KQkJRW5ub3ZhdGUgTmV0d29ya3MsIEluYy4KLQkJCQk2MCBDb2RtYW4gSGlsbCBSb2FkCi0JCQkJQm94Ym9yb3VnaCBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNEMgICAoaGV4KQkJQmVya2VsZXkgUHJvY2VzcyBDb250cm9sCi0wMDAxNEMgICAgIChiYXNlIDE2KQkJQmVya2VsZXkgUHJvY2VzcyBDb250cm9sCi0JCQkJNDEyNCBMYWtlc2lkZSBEcgotCQkJCVJpY2htb25kIENBIDk0ODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS00RCAgIChoZXgpCQlTaGluIEtpbiBFbnRlcnByaXNlcyBDby4sIEx0ZAotMDAwMTREICAgICAoYmFzZSAxNikJCVNoaW4gS2luIEVudGVycHJpc2VzIENvLiwgTHRkCi0JCQkJNywgRlUgSHNpbmcgU3QuIFR1ZSBDaGVuZyBJbmQuCi0JCQkJRGlzdC4gVGFpcGVpCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLTRFICAgKGhleCkJCVdJTiBFbnRlcnByaXNlcywgSW5jLgotMDAwMTRFICAgICAoYmFzZSAxNikJCVdJTiBFbnRlcnByaXNlcywgSW5jLgotCQkJCTMwMCBXaWxsb3cgU3RyZWV0IFNvdXRoCi0JCQkJTm9ydGggQW5kb3ZlciBNQSAwMTg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNEYgICAoaGV4KQkJQURUUkFOIElOQwotMDAwMTRGICAgICAoYmFzZSAxNikJCUFEVFJBTiBJTkMKLQkJCQk5MDEgRXhwbG9yZXIgQmx2ZC4KLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODA2LTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTUwICAgKGhleCkJCUdJTEFUIENPTU1VTklDQVRJT05TLCBMVEQuCi0wMDAxNTAgICAgIChiYXNlIDE2KQkJR0lMQVQgQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQkyMS9EIFllZ2lhIEthcGF5aW0gU3RyZWV0Ci0JCQkJUGV0YWNoLVRpa3ZhIDQ5MTMwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAxLTUxICAgKGhleCkJCUVuc2VtYmxlIENvbW11bmljYXRpb25zCi0wMDAxNTEgICAgIChiYXNlIDE2KQkJRW5zZW1ibGUgQ29tbXVuaWNhdGlvbnMKLQkJCQk2MjU2IEdyZWVubWFuIERyaXZlIC0gU3RlLiAjNDAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS01MiAgIChoZXgpCQlDSFJPTUFURUsgSU5DLgotMDAwMTUyICAgICAoYmFzZSAxNikJCUNIUk9NQVRFSyBJTkMuCi0JCQkJNi0xMCwgTWl5YXpha2kgMi1DaG9tZQotCQkJCU1peWFtYWUtS3UsIEthd2FzYWtpLXNoaSBLYW5hZ2F3YSwgMjE2LTAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLTUzICAgKGhleCkJCUFSQ0hURUsgVEVMRUNPTSBDT1JQT1JBVElPTgotMDAwMTUzICAgICAoYmFzZSAxNikJCUFSQ0hURUsgVEVMRUNPTSBDT1JQT1JBVElPTgotCQkJCTRGLCBOby45IExhbmUgMTMwLCBNaW4tQ2h5dWFuIFJkLgotCQkJCUhzaW4tVGllbiBUYWlwZWkKLQkJCQkyMzEgVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS01NCAgIChoZXgpCQlHM00gQ29ycG9yYXRpb24KLTAwMDE1NCAgICAgKGJhc2UgMTYpCQlHM00gQ29ycG9yYXRpb24KLQkJCQk0MzIwIFN0ZXZlbnMgQ3JlZWsgQmx2ZC4gLSBTdGUuICMyNzUKLQkJCQlTYW4gSm9zZSBDQSA5NTEyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNTUgICAoaGV4KQkJUHJvbWlzZSBUZWNobm9sb2d5LCBJbmMuCi0wMDAxNTUgICAgIChiYXNlIDE2KQkJUHJvbWlzZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNEYsIDEsIFByb3NwZXJpdHkgMXN0IFJvYWQKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyayBIc2luLUNodQotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtNTYgICAoaGV4KQkJRklSRVdJUkVESVJFQ1QuQ09NLCBJTkMuCi0wMDAxNTYgICAgIChiYXNlIDE2KQkJRklSRVdJUkVESVJFQ1QuQ09NLCBJTkMuCi0JCQkJNDEzMiBTcGljZXdvb2QgU3ByaW5ncyBSZCAtICNJLTQKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTU3ICAgKGhleCkJCVNZU1dBVkUgQ08uLCBMVEQKLTAwMDE1NyAgICAgKGJhc2UgMTYpCQlTWVNXQVZFIENPLiwgTFRECi0JCQkJRG9uZ2hvIEIvRCA1RiwgMjIxLTIKLQkJCQlOb25oeXVuLURvbmcsIEthbmduYW0tR3UgU2VvdWwKLQkJCQlLT1JFQSAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTU4ICAgKGhleCkJCUVsZWN0cm8gSW5kdXN0cmllcy9HYXVnZSBUZWNoCi0wMDAxNTggICAgIChiYXNlIDE2KQkJRWxlY3RybyBJbmR1c3RyaWVzL0dhdWdlIFRlY2gKLQkJCQkxODAwIFNoYW1lcyBEcml2ZQotCQkJCVdlc3RidXJ5IE5ZIDExNTkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS01OSAgIChoZXgpCQlTMSBDb3Jwb3JhdGlvbgotMDAwMTU5ICAgICAoYmFzZSAxNikJCVMxIENvcnBvcmF0aW9uCi0JCQkJUiZEIENlbnRlciwgUzEgQmxkZy4KLQkJCQk1OS04LCBOb25oeXVuLURvbmcgS2FuZ25hbS1LdSBTZW91bAotCQkJCUtPUkVBIDEzNS0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNUEgICAoaGV4KQkJRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcKLTAwMDE1QSAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZwotCQkJCURWQiwgJSBFdXJvcGVhbiBCcm9hZGNhc3RpbmcgVW5pb24KLQkJCQkxN0EgQW5jaWVubmUgUm91dGUgQ0gtMTIxOCBHcmFuZCBTYWNvbm5lCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wMS01QiAgIChoZXgpCQlJVEFMVEVMIFMucC5BL1JGLVVQLUkKLTAwMDE1QiAgICAgKGJhc2UgMTYpCQlJVEFMVEVMIFMucC5BL1JGLVVQLUkKLQkJCQkyMDAxOSBDYXN0LlNldHRpbW8gTS5zZSAoTUkpCi0JCQkJSVRBTFkKLQkJCQlJVEFMWQotCi0wMC0wMS01QyAgIChoZXgpCQlDQURBTlQgSU5DLgotMDAwMTVDICAgICAoYmFzZSAxNikJCUNBREFOVCBJTkMuCi0JCQkJNDM0MyBDb21tZXJjZSBDb3VydCAtIFN0ZS4gIzIwNwotCQkJCUxpc2xlIElMIDYwNTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS01RCAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMDE1RCAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJTWVubG8gUGFyayBDQSA5NTAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNUUgICAoaGV4KQkJQkVTVCBURUNITk9MT0dZIENPLiwgTFRELgotMDAwMTVFICAgICAoYmFzZSAxNikJCUJFU1QgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQk3RiwgSGFlc3VuZyBCL0QKLQkJCQkxMTUtMTIgTm9uaHl1bi1kb25nIEthbmduYW0tS3UgU2VvdWwsIDEzCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNUYgICAoaGV4KQkJRElHSVRBTCBERVNJR04gR21iSAotMDAwMTVGICAgICAoYmFzZSAxNikJCURJR0lUQUwgREVTSUdOIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk2YQotCQkJCUJlcmxpbiBELTEwNTU5Ci0JCQkJR0VSTUFOWQotCi0wMC0wMS02MCAgIChoZXgpCQlFTE1FWCBDby4sIExURC4KLTAwMDE2MCAgICAgKGJhc2UgMTYpCQlFTE1FWCBDby4sIExURC4KLQkJCQkxNi0zMCBLaW1hY2hpCi0JCQkJQW9iYWt1IFNlbmRhaS1TaGkgTWl5YWdpLUtlbgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtNjEgICAoaGV4KQkJTWV0YSBNYWNoaW5lIFRlY2hub2xvZ3kKLTAwMDE2MSAgICAgKGJhc2UgMTYpCQlNZXRhIE1hY2hpbmUgVGVjaG5vbG9neQotCQkJCTQwMCBTaWx2ZXIgQ2VkYXIgQ291cnQgLSBzdGUuICMyMjAKLQkJCQlDaGFwZWwgSGlsbCBOQyAyNzUxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNjIgICAoaGV4KQkJQ3lnbmV0IFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTYyICAgICAoYmFzZSAxNikJCUN5Z25ldCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNDExIExlTWF5IERyaXZlICMzMDEKLQkJCQlDYXJyb2xsdG9uIFRYIDc1MDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS02MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxNjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTY0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDE2NCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNjUgICAoaGV4KQkJQWlyU3dpdGNoIENvcnBvcmF0aW9uCi0wMDAxNjUgICAgIChiYXNlIDE2KQkJQWlyU3dpdGNoIENvcnBvcmF0aW9uCi0JCQkJMzdFYXN0IDIwMFNvdXRoCi0JCQkJU3ByaW5ndmlsbGUgVVQgODQ2NjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTY2ICAgKGhleCkJCVRDIEdST1VQIEEvUwotMDAwMTY2ICAgICAoYmFzZSAxNikJCVRDIEdST1VQIEEvUwotCQkJCVNpbmRhbHN2ZWogMzQKLQkJCQlSaXNza292ICBESy04MjQwCi0JCQkJREVOTUFSSwotCi0wMC0wMS02NyAgIChoZXgpCQlISU9LSSBFLkUuIENPUlBPUkFUSU9OCi0wMDAxNjcgICAgIChiYXNlIDE2KQkJSElPS0kgRS5FLiBDT1JQT1JBVElPTgotCQkJCTgxIEtvaXp1bWksIFVlZGEsIE5hZ2FubwotCQkJCTM4Ni0xMTkyIDM4Ni0xMTkyIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtNjggICAoaGV4KQkJVklUQU5BIENPUlBPUkFUSU9OCi0wMDAxNjggICAgIChiYXNlIDE2KQkJVklUQU5BIENPUlBPUkFUSU9OCi0JCQkJMjUwMCBEb24gUmVpZCBEcml2ZQotCQkJCU90dGF3YSwgT250YXJpbwotCQkJCUsxSCAxRTEgSzFIIDFFMSBDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDEtNjkgICAoaGV4KQkJQ2VsZXN0aXggTmV0d29ya3MgUHRlIEx0ZC4KLTAwMDE2OSAgICAgKGJhc2UgMTYpCQlDZWxlc3RpeCBOZXR3b3JrcyBQdGUgTHRkLgotCQkJCTE4IFRhbm5lcnkgTGFuZSAjMDUtMDMKLQkJCQlMaWFuIFRvbmcgQnVpbGRpbmcKLQkJCQlTSU5HQVBPUkUgMzQ3NzgwCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTAxLTZBICAgKGhleCkJCUFMSVRFQwotMDAwMTZBICAgICAoYmFzZSAxNikJCUFMSVRFQwotCQkJCUxhdmFsIFRlY2hub3BvbGUgQi5QLiAxMDIKLQkJCQk1MzAwMSBMQVZBTCBDZWRleAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMS02QiAgIChoZXgpCQlMaWdodENoaXAsIEluYy4KLTAwMDE2QiAgICAgKGJhc2UgMTYpCQlMaWdodENoaXAsIEluYy4KLQkJCQk1IEluZHVzdHJpYWwgV2F5Ci0JCQkJU2FsZW0gTkggMDMwNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTZDICAgKGhleCkJCUZPWENPTk4KLTAwMDE2QyAgICAgKGJhc2UgMTYpCQlGT1hDT05OCi0JCQkJNjEyNSBQaHlsbGlzIERyaXZlCi0JCQkJQ3lwcmVzcyBDQSA5MDYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNkQgICAoaGV4KQkJQ2FycmllckNvbW0gSW5jLgotMDAwMTZEICAgICAoYmFzZSAxNikJCUNhcnJpZXJDb21tIEluYy4KLQkJCQk1MzkgRW5jaW50YXMgQmx2ZC4KLQkJCQlFbmNpbnRhcyBDQSA5MjAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNkUgICAoaGV4KQkJQ29ua2xpbiBDb3Jwb3JhdGlvbgotMDAwMTZFICAgICAoYmFzZSAxNikJCUNvbmtsaW4gQ29ycG9yYXRpb24KLQkJCQk2MTQxIENyb29rZWQgQ3JlZWsgUm9hZAotCQkJCU5vcmNyb3NzIEdBIDMwMDkyLTMxOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTZGICAgKGhleCkJCUlua2VsIENvcnAuCi0wMDAxNkYgICAgIChiYXNlIDE2KQkJSW5rZWwgQ29ycC4KLQkJCQlDaGVvbmdDaGVvbi1Eb25nLCBCdVB5ZW9uZy1HdSwKLQkJCQlJbmNoZW9uLVNpICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNzAgICAoaGV4KQkJRVNFIEVtYmVkZGVkIFN5c3RlbSBFbmdpbmVlcidnCi0wMDAxNzAgICAgIChiYXNlIDE2KQkJRVNFIEVtYmVkZGVkIFN5c3RlbSBFbmdpbmVlcidnCi0JCQkJTXVlaGxiYWNoc3RyLiAyMAotCQkJCTc4MzUxIEJvZG1hbi1MdWR3aWdzaGFmZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS03MSAgIChoZXgpCQlBbGxpZWQgRGF0YSBUZWNobm9sb2dpZXMKLTAwMDE3MSAgICAgKGJhc2UgMTYpCQlBbGxpZWQgRGF0YSBUZWNobm9sb2dpZXMKLQkJCQlQYXNjYWx3ZWcgMSwKLQkJCQkzMjA4IEtMIFNwaWprZW5pc3NlCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDEtNzIgICAoaGV4KQkJVGVjaG5vTGFuZCBDby4sIExURC4KLTAwMDE3MiAgICAgKGJhc2UgMTYpCQlUZWNobm9MYW5kIENvLiwgTFRELgotCQkJCTMtMTctMTEgQWtlYm9uby1jaG8KLQkJCQlGdWt1eWFtYS1jaXR5IEhpcm9zaGltYSA3MjEtMDkyNQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtNzMgICAoaGV4KQkJQU1DQwotMDAwMTczICAgICAoYmFzZSAxNikJCUFNQ0MKLQkJCQk2MjkwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03NCAgIChoZXgpCQlDeWJlck9wdGljcyBDb3Jwb3JhdGlvbgotMDAwMTc0ICAgICAoYmFzZSAxNikJCUN5YmVyT3B0aWNzIENvcnBvcmF0aW9uCi0JCQkJNTkwMCBHb2xkZW4gSGlsbHMgRHJpdmUKLQkJCQlHb2xkZW4gVmFsbGV5IE1OIDU1NDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03NSAgIChoZXgpCQlSYWRpYW50IENvbW11bmljYXRpb25zIENvcnAuCi0wMDAxNzUgICAgIChiYXNlIDE2KQkJUmFkaWFudCBDb21tdW5pY2F0aW9ucyBDb3JwLgotCQkJCTUwMDEgSGFkbGV5IFJvYWQKLQkJCQlTb3V0aCBQbGFpbmZpZWxkIE5KIDA3MDgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03NiAgIChoZXgpCQlPcmllbnQgU2lsdmVyIEVudGVycHJpc2VzCi0wMDAxNzYgICAgIChiYXNlIDE2KQkJT3JpZW50IFNpbHZlciBFbnRlcnByaXNlcwotCQkJCTg3NDAgV2hpdGUgT2FrIEF2ZW51ZQotCQkJCVJhbmNobyBDdWNhbW9uZ2EgQ0EgOTE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTc3ICAgKGhleCkJCUVEU0wKLTAwMDE3NyAgICAgKGJhc2UgMTYpCQlFRFNMCi0JCQkJSGFiYXJ6ZWwgMSBzdAotCQkJCVJhbWF0IEFoYXlhbCBUZWwtQXZpdgotCQkJCUlTUkFFTCA2OTcxMAotCQkJCUlTUkFFTAotCi0wMC0wMS03OCAgIChoZXgpCQlNQVJHSSBTeXN0ZW1zLCBJbmMuCi0wMDAxNzggICAgIChiYXNlIDE2KQkJTUFSR0kgU3lzdGVtcywgSW5jLgotCQkJCTMxNTUgS2Vhcm5leSBTdHJlZXQuIC0gU3RlLiMyMDAKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03OSAgIChoZXgpCQlXSVJFTEVTUyBURUNITk9MT0dZLCBJTkMuCi0wMDAxNzkgICAgIChiYXNlIDE2KQkJV0lSRUxFU1MgVEVDSE5PTE9HWSwgSU5DLgotCQkJCUFuYW0gQmxkZy4gMkZsLCAxNTQtMTcKLQkJCQlTYW1zdW5nLURvbmcsIEthbmduYW0tS3UgU2VvdWwsIDEzNS0wOTAKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS03QSAgIChoZXgpCQlDaGVuZ2R1IE1haXB1IEVsZWN0cmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDAxN0EgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSBNYWlwdSBFbGVjdHJpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCU5BTllJIEJVSUxESU5HLCBDT05TVUxBVEUgUkQuLAotCQkJCUNIRU5HRFUKLQkJCQlQLlIuIENISU5BCi0JCQkJQ0hJTkEKLQotMDAtMDEtN0IgICAoaGV4KQkJSGVpZGVsYmVyZ2VyIERydWNrbWFzY2hpbmVuIEFHCi0wMDAxN0IgICAgIChiYXNlIDE2KQkJSGVpZGVsYmVyZ2VyIERydWNrbWFzY2hpbmVuIEFHCi0JCQkJS3VyZnVlcnN0ZW5hbmxhZ2UgNTItNjAKLQkJCQk2OTExNSBIZWlkZWxiZXJnCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDEtN0MgICAoaGV4KQkJQUctRSBHbWJICi0wMDAxN0MgICAgIChiYXNlIDE2KQkJQUctRSBHbWJICi0JCQkJRGVubmV3YXJ0c3RyLiAyNwotCQkJCTUyMDY4IEFhY2hlbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLTdEICAgKGhleCkJCVRoZXJtb1F1ZXN0Ci0wMDAxN0QgICAgIChiYXNlIDE2KQkJVGhlcm1vUXVlc3QKLQkJCQkzNTUgUml2ZXIgT2FrcyBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTdFICAgKGhleCkJCUFEVEVLIFN5c3RlbSBTY2llbmNlIENvLiwgTHRkLgotMDAwMTdFICAgICAoYmFzZSAxNikJCUFEVEVLIFN5c3RlbSBTY2llbmNlIENvLiwgTHRkLgotCQkJCVlCUCBXZXN0IFRvd2VyCi0JCQkJMTM0IEdvaGRvLWNobywKLQkJCQlIb2RvZ2F5YSBZb2tvaGFtYSAKLQkJCQlKQVBBTgotCi0wMC0wMS03RiAgIChoZXgpCQlFeHBlcmllbmNlIE11c2ljIFByb2plY3QKLTAwMDE3RiAgICAgKGJhc2UgMTYpCQlFeHBlcmllbmNlIE11c2ljIFByb2plY3QKLQkJCQkxMTAgLTExMHRoIEF2ZW51ZSBORSAtIFN0ZS4gIzQwMAotCQkJCUJlbGxldnVlIFdBIDk4MDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS04MCAgIChoZXgpCQlBT3BlbiwgSW5jLgotMDAwMTgwICAgICAoYmFzZSAxNikJCUFPcGVuLCBJbmMuCi0JCQkJNkYsIDg4LCBTZWMuMSwgSHNpbiBUYWkKLQkJCQlXdSBSb2FkLCBIc2ljaGloIFRhaXBlaSBIc2llbiAyMjEKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtODEgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDAxODEgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJMTEwMCBUZWNobm9sb2d5IFBhcmsgRHJpdmUKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTgyICAgKGhleCkJCURJQ0EgVEVDSE5PTE9HSUVTIEFHCi0wMDAxODIgICAgIChiYXNlIDE2KQkJRElDQSBURUNITk9MT0dJRVMgQUcKLQkJCQlSb3RoZXJzdHIsIDE5Ci0JCQkJRC0xMDI0NSBCZXJsaW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS04MyAgIChoZXgpCQlBTklURSBURUxFQ09NUwotMDAwMTgzICAgICAoYmFzZSAxNikJCUFOSVRFIFRFTEVDT01TCi0JCQkJMTI3IEZsZWV0IFJvYWQsIEZsZWV0Ci0JCQkJSGFtcHNoaXJlLCBHVUIgOFBECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS04NCAgIChoZXgpCQlTSUVCICYgTUVZRVIgQUcKLTAwMDE4NCAgICAgKGJhc2UgMTYpCQlTSUVCICYgTUVZRVIgQUcKLQkJCQlBdWYgZGVtIFNjaG1hYXJrYW1wIDIxCi0JCQkJRC0yMTMzOSBMdW5lYnVyZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLTg1ICAgKGhleCkJCUFsb2thIENvLiwgTHRkLgotMDAwMTg1ICAgICAoYmFzZSAxNikJCUFsb2thIENvLiwgTHRkLgotCQkJCTMtNy0xOSwgSW1haSBPbWUtY2l0eQotCQkJCVRva3lvCi0JCQkJMTk4LTg1NzcgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMS04NiAgIChoZXgpCQlVd2UgRGlzY2gKLTAwMDE4NiAgICAgKGJhc2UgMTYpCQlVd2UgRGlzY2gKLQkJCQlFaWNoZW5oYWluc3RyYXNzZSAxNAotCQkJCTkxMjA3IExhdWYgYS5kLiBQZWduaXR6Ci0JCQkJR0VSTUFOWQotCi0wMC0wMS04NyAgIChoZXgpCQlpMlNFIEdtYkgKLTAwMDE4NyAgICAgKGJhc2UgMTYpCQlpMlNFIEdtYkgKLQkJCQlDYXJsLVplaXNzIC0gU3RyLiA0NgotCQkJCTQ3NDQ1IE1vZXJzCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDEtODggICAoaGV4KQkJTFhDTyBUZWNobm9sb2dpZXMgYWcKLTAwMDE4OCAgICAgKGJhc2UgMTYpCQlMWENPIFRlY2hub2xvZ2llcyBhZwotCQkJCUdpbW1lcnN0ci4gNjkKLQkJCQlELTEwMTE3IEJlcmxpbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLTg5ICAgKGhleCkJCVJlZnJhY3Rpb24gVGVjaG5vbG9neSwgSW5jLgotMDAwMTg5ICAgICAoYmFzZSAxNikJCVJlZnJhY3Rpb24gVGVjaG5vbG9neSwgSW5jLgotCQkJCTI2MjYgTG9tYmFyZHkgTGFuZSAtIFN0ZS4gIzEwNQotCQkJCURhbGxhcyBUWCA3NTIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtOEEgICAoaGV4KQkJUk9JIENPTVBVVEVSIEFHCi0wMDAxOEEgICAgIChiYXNlIDE2KQkJUk9JIENPTVBVVEVSIEFHCi0JCQkJV2VybmVyLXZvbi1TaWVtZW5zLVN0ci4gMQotCQkJCTkzNDI2IFJvZGluZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLThCICAgKGhleCkJCU5ldExpbmtzIENvLiwgTHRkLgotMDAwMThCICAgICAoYmFzZSAxNikJCU5ldExpbmtzIENvLiwgTHRkLgotCQkJCTNGIERzY29tIEJsZGcuLCAyMzgtMwotCQkJCVBvaS1kb25nLCBLYW5nbmFtLUt1IFNlb3VsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtOEMgICAoaGV4KQkJTWVnYSBWaXNpb24KLTAwMDE4QyAgICAgKGJhc2UgMTYpCQlNZWdhIFZpc2lvbgotCQkJCTU3NjUgVGhvcm53b29kIERyaXZlCi0JCQkJR29sZXRhIENBIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS04RCAgIChoZXgpCQlBdWRlU2kgVGVjaG5vbG9naWVzCi0wMDAxOEQgICAgIChiYXNlIDE2KQkJQXVkZVNpIFRlY2hub2xvZ2llcwotCQkJCVN1aXRlIDE4MCwgNjgxNQotCQkJCTh0aCBTdHJlZXQgTi5FLiBDYWxnYXJ5Ci0JCQkJQUIgQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAxLThFICAgKGhleCkJCUxvZ2l0ZWMgQ29ycG9yYXRpb24KLTAwMDE4RSAgICAgKGJhc2UgMTYpCQlMb2dpdGVjIENvcnBvcmF0aW9uCi0JCQkJODI2OCBSb2t1ZG91aGFyYSwgTWlzdXp1Ci0JCQkJSW5hLCBOYWdhbm8KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLThGICAgKGhleCkJCUtlbmV0ZWMsIEluYy4KLTAwMDE4RiAgICAgKGJhc2UgMTYpCQlLZW5ldGVjLCBJbmMuCi0JCQkJMTE1IEh1cmxleSBSb2FkCi0JCQkJT3hmb3JkIENUIDA2NzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05MCAgIChoZXgpCQlTTUstTQotMDAwMTkwICAgICAoYmFzZSAxNikJCVNNSy1NCi0JCQkJMTA1NSBUaWVycmEgRGVsIFJleQotCQkJCUNodWxhIFZpc3RhIENBIDkxOTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05MSAgIChoZXgpCQlTWVJFRCBEYXRhIFN5c3RlbXMKLTAwMDE5MSAgICAgKGJhc2UgMTYpCQlTWVJFRCBEYXRhIFN5c3RlbXMKLQkJCQkyNzIgTGFuZXMgTWlsbCBSb2FkCi0JCQkJSG93ZWxsIE5KIDA3NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05MiAgIChoZXgpCQlUZXhhcyBEaWdpdGFsIFN5c3RlbXMKLTAwMDE5MiAgICAgKGJhc2UgMTYpCQlUZXhhcyBEaWdpdGFsIFN5c3RlbXMKLQkJCQk0MDAgVGVjaG5vbG9neSBQYXJrd2F5Ci0JCQkJQ29sbGVnZSBTdGF0aW9uIFRYIDc3ODQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05MyAgIChoZXgpCQlIYW5ieXVsIFRlbGVjb20gQ28uLCBMdGQuCi0wMDAxOTMgICAgIChiYXNlIDE2KQkJSGFuYnl1bCBUZWxlY29tIENvLiwgTHRkLgotCQkJCTV0aCBGbC4gT2tzYW4gQmxkZy4KLQkJCQkxNTctMzMgU2Ftc3VuZy1Eb25nIEthbmduYW0ta3UgU2VvdWwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS05NCAgIChoZXgpCQlDYXBpdGFsIEVxdWlwbWVudCBDb3Jwb3JhdGlvbgotMDAwMTk0ICAgICAoYmFzZSAxNikJCUNhcGl0YWwgRXF1aXBtZW50IENvcnBvcmF0aW9uCi0JCQkJOTAwIE1pZGRsZXNleCBUdXJucGlrZSAtIEJsZGcuIDIKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTk1ICAgKGhleCkJCVNlbmEgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDAxOTUgICAgIChiYXNlIDE2KQkJU2VuYSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMTYtMjMgU2hpbmxpbS1kb25nCi0JCQkJT25zdW5nIEJsZGcuIDh0aCBGbG9vciBLd2FuYWsta3UgU2VvdWwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS05NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxOTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTk3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDE5NyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtOTggICAoaGV4KQkJRGFyaW0gVmlzaW9uCi0wMDAxOTggICAgIChiYXNlIDE2KQkJRGFyaW0gVmlzaW9uCi0JCQkJVGFlam9uIEV4cG8gVmVudHVyZSBUb3duCi0JCQkJMy0xIERvcnlvbmctZG9uZywgWXVzdW5nLWd1IFRhZWpvbgotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTk5ICAgKGhleCkJCUhlaVNlaSBFbGVjdHJvbmljcwotMDAwMTk5ICAgICAoYmFzZSAxNikJCUhlaVNlaSBFbGVjdHJvbmljcwotCQkJCTUvNyBBbGxleSA4LCBMYW5lIDQ1Ci0JCQkJUG9hbHRzaW4gUm9hZCBIc2ludGllbiBDaXR5Ci0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS05QSAgIChoZXgpCQlMRVVOSUcgR21iSAotMDAwMTlBICAgICAoYmFzZSAxNikJCUxFVU5JRyBHbWJICi0JCQkJV2lsaGVsbS1Pc3R3YWxkLVN0ci4gMTcKLQkJCQk1MzcyMSBTaWVnYnVyZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLTlCICAgKGhleCkJCUt5b3RvIE1pY3JvY29tcHV0ZXIgQ28uLCBMdGQuCi0wMDAxOUIgICAgIChiYXNlIDE2KQkJS3lvdG8gTWljcm9jb21wdXRlciBDby4sIEx0ZC4KLQkJCQkyLTI3IEhhY2hpam9nYW9rYQotCQkJCU5hZ2Fva2FreW8tY2l0eSBLeW90bwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtOUMgICAoaGV4KQkJSkRTIFVuaXBoYXNlIEluYy4KLTAwMDE5QyAgICAgKGJhc2UgMTYpCQlKRFMgVW5pcGhhc2UgSW5jLgotCQkJCTU3MCBXZXN0IEh1bnQgQ2x1YiBSb2FkCi0JCQkJTmFwZW9uLCBPTiBLMVIgN1Q3Ci0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAxLTlEICAgKGhleCkJCUUtQ29udHJvbCBTeXN0ZW1zLCBJbmMuCi0wMDAxOUQgICAgIChiYXNlIDE2KQkJRS1Db250cm9sIFN5c3RlbXMsIEluYy4KLQkJCQk5NDIwIEx1cmxpbmUgQXZlLiwgVW5pdGUKLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05RSAgIChoZXgpCQlFU1MgVGVjaG5vbG9neSwgSW5jLgotMDAwMTlFICAgICAoYmFzZSAxNikJCUVTUyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNDg0MDEgRnJlbW9udCBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTlGICAgKGhleCkJCVBob25leCBCcm9hZGJhbmQKLTAwMDE5RiAgICAgKGJhc2UgMTYpCQlQaG9uZXggQnJvYWRiYW5kCi0JCQkJNjk1MiBIaWdoIFRlY2ggRHJpdmUKLQkJCQlNaWR2YWxlIFVUIDg0MDQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1BMCAgIChoZXgpCQlJbmZpbmlsaW5rIENvcnBvcmF0aW9uCi0wMDAxQTAgICAgIChiYXNlIDE2KQkJSW5maW5pbGluayBDb3Jwb3JhdGlvbgotCQkJCTE3NDAgRS4gR2FycnkgQXZlLiAtIFN0ZS4gIzIwNgotCQkJCVNhbnRhIEFuYSBDQSA5MjcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQTEgICAoaGV4KQkJTWFnLVRlaywgSW5jLgotMDAwMUExICAgICAoYmFzZSAxNikJCU1hZy1UZWssIEluYy4KLQkJCQkyMDcyNSBTb3V0aCBBbm5hbGVlIEF2ZS4KLQkJCQlDYXJzb24gQ0EgOTA3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUEyICAgKGhleCkJCUxvZ2ljYWwgQ28uLCBMdGQuCi0wMDAxQTIgICAgIChiYXNlIDE2KQkJTG9naWNhbCBDby4sIEx0ZC4KLQkJCQk0NTk4IE11cmFrdXNoaS1jaG8KLQkJCQlIYW1hbWF0c3Utc2hpLCBTaGl6dW9rYS1rZW4KLQkJCQk0MzEtMTIwNyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLUEzICAgKGhleCkJCUdFTkVTWVMgTE9HSUMsIElOQy4KLTAwMDFBMyAgICAgKGJhc2UgMTYpCQlHRU5FU1lTIExPR0lDLCBJTkMuCi0JCQkJMTBGLCBOby4gMTEsIExuLjMuLAotCQkJCVRzYW8gVGkgV2VpLCBTaGVua2VuZyBUYWlwZWkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUE0ICAgKGhleCkJCU1pY3JvbGluayBDb3Jwb3JhdGlvbgotMDAwMUE0ICAgICAoYmFzZSAxNikJCU1pY3JvbGluayBDb3Jwb3JhdGlvbgotCQkJCTExMTEwIE9oaW8gQXZlLiwgLSBTdGUuICMxMDgKLQkJCQlMb3MgQW5nZWxlcyBDQSA5MDAzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQTUgICAoaGV4KQkJTmV4dGNvbW0sIEluYy4KLTAwMDFBNSAgICAgKGJhc2UgMTYpCQlOZXh0Y29tbSwgSW5jLgotCQkJCTEyNDEzIFdpbGxvd3MgUm9hZCBORSAtIFN0ZS4gIzIxMAotCQkJCUtpcmtsYW5kIFdBIDk4MDM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1BNiAgIChoZXgpCQlTY2llbnRpZmljLUF0bGFudGEgQXJjb2RhbiBBL1MKLTAwMDFBNiAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljLUF0bGFudGEgQXJjb2RhbiBBL1MKLQkJCQlBdmd1c3RlbmJvcmcgTGFuZGV2ZWogNwotCQkJCURLLTY0MDAgU29uZGVyYm9yZwotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLTAxLUE3ICAgKGhleCkJCVVORVggVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDAwMUE3ICAgICAoYmFzZSAxNikJCVVORVggVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCThGLTUsIE5PLiAxMzAgU1pFIFdFSSBST0FECi0JCQkJSFNJTkNIVQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS1BOCAgIChoZXgpCQlXZWxsdGVjaCBDb21wdXRlciBDby4sIEx0ZC4KLTAwMDFBOCAgICAgKGJhc2UgMTYpCQlXZWxsdGVjaCBDb21wdXRlciBDby4sIEx0ZC4KLQkJCQkxM0YtNCwgbm8uIDE1MCwgSmlhbiBZaSBSb2FkCi0JCQkJQ2h1bmctSG8gMjM1LCAgVGFpcGVpCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUE5ICAgKGhleCkJCUJNVyBBRwotMDAwMUE5ICAgICAoYmFzZSAxNikJCUJNVyBBRwotCQkJCUJNVyBBRyBEZXB0LiBGWi0zMjAKLQkJCQlLbm9ycnN0ci4xMTkKLQkJCQk4MDc4OCBNdW5pY2ggCi0JCQkJR0VSTUFOWQotCi0wMC0wMS1BQSAgIChoZXgpCQlBaXJzcGFuIENvbW11bmljYXRpb25zLCBMdGQuCi0wMDAxQUEgICAgIChiYXNlIDE2KQkJQWlyc3BhbiBDb21tdW5pY2F0aW9ucywgTHRkLgotCQkJCUNhbWJyaWRnZSBIb3VzZSwgT3hmb3JkIFJkLiwKLQkJCQlVeGJyaWRnZSwgTWlkZGxlc2V4IFVCMVVOLAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDEtQUIgICAoaGV4KQkJTWFpbiBTdHJlZXQgTmV0d29ya3MKLTAwMDFBQiAgICAgKGJhc2UgMTYpCQlNYWluIFN0cmVldCBOZXR3b3JrcwotCQkJCTQwMzAgTW9vcnBhcmsgQXZlLgotCQkJCVN1aXRlIDIwMAotCQkJCVNhbiBKb3NlIENBIDk1MTE3LTE4NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUFDICAgKGhleCkJCVNpdGFyYSBOZXR3b3JrcywgSW5jLgotMDAwMUFDICAgICAoYmFzZSAxNikJCVNpdGFyYSBOZXR3b3JrcywgSW5jLgotCQkJCTYwIEhpY2tvcnkgRHJpdmUKLQkJCQlXYWx0aGFtIE1BIDAyNDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1BRCAgIChoZXgpCQlDb2FjaCBNYXN0ZXIgSW50ZXJuYXRpb25hbCAgZC5iLmEuIENNSSBXb3JsZHdpZGUsIEluYy4KLTAwMDFBRCAgICAgKGJhc2UgMTYpCQlDb2FjaCBNYXN0ZXIgSW50ZXJuYXRpb25hbCAgZC5iLmEuIENNSSBXb3JsZHdpZGUsIEluYy4KLQkJCQk2MDAgU3Rld2FydCBTdHJlZXQKLQkJCQlTdWl0ZSA3MDAKLQkJCQlTZWF0dGxlIFdBIDk4MTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1BRSAgIChoZXgpCQlUcmV4IEVudGVycHJpc2VzCi0wMDAxQUUgICAgIChiYXNlIDE2KQkJVHJleCBFbnRlcnByaXNlcwotCQkJCTU5MCBMaXBvYSBQYXJrd2F5Ci0JCQkJU3VpdGUgMjIyCi0JCQkJS2loZWkgSEkgOTY3NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUFGICAgKGhleCkJCUVtZXJzb24gTmV0d29yayBQb3dlcgotMDAwMUFGICAgICAoYmFzZSAxNikJCUVtZXJzb24gTmV0d29yayBQb3dlcgotCQkJCTI5MDAgUy4gRGlhYmxvIFdheQotCQkJCVN1aXRlIDE5MAotCQkJCVRlbXBlIEFyaXpvbmEgODUyODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUIwICAgKGhleCkJCUZ1bGx0ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDFCMCAgICAgKGJhc2UgMTYpCQlGdWxsdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJM0YgTm8uIDgsIExhbmUgMTMwLCBNaW4gQ2h1YW4gUmQuLCBIc2ludAotCQkJCUNpdHksIFRhaXBlaSBIc2VpbiAyMzEsCi0JCQkJVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtQjEgICAoaGV4KQkJR2VuZXJhbCBCYW5kd2lkdGgKLTAwMDFCMSAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIEJhbmR3aWR0aAotCQkJCTEyMzAzLUIgVGVjaG5vbG9neSBCbHZkLgotCQkJCUF1c3RpbiBUWCA3ODcyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQjIgICAoaGV4KQkJRGlnaXRhbCBQcm9jZXNzaW5nIFN5c3RlbXMsIEluYy4KLTAwMDFCMiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFByb2Nlc3NpbmcgU3lzdGVtcywgSW5jLgotCQkJCTcwIFZhbGxleXdvb2QgRHJpdmUKLQkJCQlNYXJraGFtLCBPbnRhcmlvIENBTkFEQQotCQkJCUwzUiA0VDUKLQkJCQlDQU5BREEKLQotMDAtMDEtQjMgICAoaGV4KQkJUHJlY2lzaW9uIEVsZWN0cm9uaWMgTWFudWZhY3R1cmluZwotMDAwMUIzICAgICAoYmFzZSAxNikJCVByZWNpc2lvbiBFbGVjdHJvbmljIE1hbnVmYWN0dXJpbmcKLQkJCQlQMDE4NywgUC5PLiA1Mjc5NDgKLQkJCQlNaWFtaSBGTCAzMzE1Mi03OTQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1CNCAgIChoZXgpCQlXYXlwb3J0LCBJbmMuCi0wMDAxQjQgICAgIChiYXNlIDE2KQkJV2F5cG9ydCwgSW5jLgotCQkJCTE2MDkgU2hvYWwgQ3JlZWsgQmx2ZC4KLQkJCQlTdWl0ZSAzMDEKLQkJCQlBdXN0aW4gVFggNzg3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUI1ICAgKGhleCkJCVR1cmluIE5ldHdvcmtzLCBJbmMuCi0wMDAxQjUgICAgIChiYXNlIDE2KQkJVHVyaW4gTmV0d29ya3MsIEluYy4KLQkJCQkxNDE1IE5vcnRoIE1jRG93ZWxsIEJsdmQuCi0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUI2ICAgKGhleCkJCVNBRUpJTiBUJk0gQ28uLCBMdGQuCi0wMDAxQjYgICAgIChiYXNlIDE2KQkJU0FFSklOIFQmTSBDby4sIEx0ZC4KLQkJCQkybmQgRmwuLCBTYWVqaW4gQmxkZy4sIDY4OQotCQkJCUlsd29uLURvbmcsIEthbmduYW0tR3UuIFNlb3VsLCAxMzUtMjMwCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtQjcgICAoaGV4KQkJQ2VudG9zLCBJbmMuCi0wMDAxQjcgICAgIChiYXNlIDE2KQkJQ2VudG9zLCBJbmMuCi0JCQkJNkYtMSwgTk8uIDE1LCBMQU5FIDM2MAotCQkJCU5FSS1IVSBSRC4sIFNFQ1QuIDEsIFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS1COCAgIChoZXgpCQlOZXRzZW5zaXR5LCBJbmMuCi0wMDAxQjggICAgIChiYXNlIDE2KQkJTmV0c2Vuc2l0eSwgSW5jLgotCQkJCVBPIEJveCAxMDYwCi0JCQkJTGFrZSBGb3Jlc3QgQ0EgOTI2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUI5ICAgKGhleCkJCVNLRiBDb25kaXRpb24gTW9uaXRvcmluZwotMDAwMUI5ICAgICAoYmFzZSAxNikJCVNLRiBDb25kaXRpb24gTW9uaXRvcmluZwotCQkJCTQxNDEgUnVmZmluIFJvYWQKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUJBICAgKGhleCkJCUlDLU5ldCwgSW5jLgotMDAwMUJBICAgICAoYmFzZSAxNikJCUlDLU5ldCwgSW5jLgotCQkJCTUgRmwuIFNlYXN1bmcgQmxkZy4sIDMxMS0yNyBOb3J5YW5namluLUQKLQkJCQlEb25namFrLUd1IFNlb3VsLAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLUJCICAgKGhleCkJCUZyZXF1ZW50aXMKLTAwMDFCQiAgICAgKGJhc2UgMTYpCQlGcmVxdWVudGlzCi0JCQkJU1BJVFRFTEJSRUlURU5HQVNTRSAzNAotCQkJCUEtMTEyMCBWSUVOTkEKLQkJCQlBVVNUUklBCi0JCQkJQVVTVFJJQQotCi0wMC0wMS1CQyAgIChoZXgpCQlCcmFpbnMgQ29ycG9yYXRpb24KLTAwMDFCQyAgICAgKGJhc2UgMTYpCQlCcmFpbnMgQ29ycG9yYXRpb24KLQkJCQkyLTI3LTgtNEZsIFRBTUFHQVdBCi0JCQkJU0VUQUdBWUEtS1UsIFRPS1lPIDE1OC0wMDk0Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMS1CRCAgIChoZXgpCQlQZXRlcnNvbiBFbGVjdHJvLU11c2ljYWwgUHJvZHVjdHMsIEluYy4KLTAwMDFCRCAgICAgKGJhc2UgMTYpCQlQZXRlcnNvbiBFbGVjdHJvLU11c2ljYWwgUHJvZHVjdHMsIEluYy4KLQkJCQkxMTYwMSBTLiBNYXlmaWVsZCBBdmVudWUKLQkJCQlBbHNpcCBJTCA2MDgwMy0yNDc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1CRSAgIChoZXgpCQlHaWdhbGluayBDby4sIEx0ZC4KLTAwMDFCRSAgICAgKGJhc2UgMTYpCQlHaWdhbGluayBDby4sIEx0ZC4KLQkJCQk2dGggRi9MIERpcGxvbWF0aWMgQ2VudGVyIDEzNzYtMQotCQkJCVNlb2Noby1kb25nIFNlb2Noby1rdSBTZW91bAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLUJGICAgKGhleCkJCVRlbGVmb3JjZSBDby4sIEx0ZC4KLTAwMDFCRiAgICAgKGJhc2UgMTYpCQlUZWxlZm9yY2UgQ28uLCBMdGQuCi0JCQkJNzIxIHlvc2hpb2thLWNobyBrYW5vbmppLWNpdHkKLQkJCQlLYWdhd2EtcHJmLiA3NjgtMDAyMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtQzAgICAoaGV4KQkJQ29tcHVMYWIsIEx0ZC4KLTAwMDFDMCAgICAgKGJhc2UgMTYpCQlDb21wdUxhYiwgTHRkLgotCQkJCVAuTy4gQm94IDY2Ci0JCQkJTmVzaGVyIDM2NzcwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAxLUMxICAgKGhleCkJCVZpdGVzc2UgU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlvbgotMDAwMUMxICAgICAoYmFzZSAxNikJCVZpdGVzc2UgU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlvbgotCQkJCUhvZXJrYWVyIDE4Ci0JCQkJREstMjczMCBIZXJsZXYKLQkJCQlERU5NQVJLCi0KLTAwLTAxLUMyICAgKGhleCkJCUFSSyBSZXNlYXJjaCBDb3JwLgotMDAwMUMyICAgICAoYmFzZSAxNikJCUFSSyBSZXNlYXJjaCBDb3JwLgotCQkJCTExOTggU2FyYXRvZ2EgQXZlLiAjMTFECi0JCQkJU2FuIEpvc2UgQ0EgOTUxMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUMzICAgKGhleCkJCUFjcm9tYWcsIEluYy4KLTAwMDFDMyAgICAgKGJhc2UgMTYpCQlBY3JvbWFnLCBJbmMuCi0JCQkJMzA3NjUgUy4gV2l4b20gUm9hZAotCQkJCVdpeG9tIE1JIDQ4MzkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1DNCAgIChoZXgpCQlOZW9XYXZlLCBJbmMuCi0wMDAxQzQgICAgIChiYXNlIDE2KQkJTmVvV2F2ZSwgSW5jLgotCQkJCTEwdGggS1JJSFMgQmxkZy4gMTU5MS02Ci0JCQkJS3dhbiBZYW5nLURvbmcsIERvbmcgQW4tR3UsIEFueW9uZy1TaSwgSwotCQkJCVNPVVRIIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLUM1ICAgKGhleCkJCVNpbXBsZXIgTmV0d29ya3MKLTAwMDFDNSAgICAgKGJhc2UgMTYpCQlTaW1wbGVyIE5ldHdvcmtzCi0JCQkJNTU1IERyIEZyZWRlcmljayBQaGlsaXBzCi0JCQkJU3VpdGUgMjEwIFN0LiBMYXVyZW50LCBRVUVCRUMgQ0FOQURBCi0JCQkJSDRNIDJYNAotCQkJCUNBTkFEQQotCi0wMC0wMS1DNiAgIChoZXgpCQlRdWFycnkgVGVjaG5vbG9naWVzCi0wMDAxQzYgICAgIChiYXNlIDE2KQkJUXVhcnJ5IFRlY2hub2xvZ2llcwotCQkJCTggTmV3IEVuZ2xhbmQgRXhlY3V0aXZlIFBhcmsKLQkJCQlCdXJsaW5ndG9uIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1DNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxQzcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQzggICAoaGV4KQkJVEhPTUFTIENPTlJBRCBDT1JQLgotMDAwMUM4ICAgICAoYmFzZSAxNikJCVRIT01BUyBDT05SQUQgQ09SUC4KLQkJCQkxOTA4LVIgS1JBTUVSIExBTkUKLQkJCQlBVVNUSU4gVFggNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUM4ICAgKGhleCkJCUNPTlJBRCBDT1JQLgotMDAwMUM4ICAgICAoYmFzZSAxNikJCUNPTlJBRCBDT1JQLgotCQkJCQotCi0wMC0wMS1DOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxQzkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1DQSAgIChoZXgpCQlHZW9jYXN0IE5ldHdvcmsgU3lzdGVtcywgSW5jLgotMDAwMUNBICAgICAoYmFzZSAxNikJCUdlb2Nhc3QgTmV0d29yayBTeXN0ZW1zLCBJbmMuCi0JCQkJMTkwIEluZGVwZW5kZW5jZSBEcml2ZQotCQkJCU1lbmxvIFBhcmsgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUNCICAgKGhleCkJCUVWUgotMDAwMUNCICAgICAoYmFzZSAxNikJCUVWUgotCQkJCTEyIFJhdWwgV2FsbGVuYmVyZyBTdC4KLQkJCQlUZWwgQXZpdiAgNjk3MTkKLQkJCQlJU1JBRUwKLQotMDAtMDEtQ0MgICAoaGV4KQkJSmFwYW4gVG90YWwgRGVzaWduIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0wMDAxQ0MgICAgIChiYXNlIDE2KQkJSmFwYW4gVG90YWwgRGVzaWduIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0JCQkJRW5lc3RhIFN1Z2luYW1paGlnYXNoaSBCdWlsZC4sIDNGLAotCQkJCTMtNy0xLCBBc2FnYXlhbWluYW1pIFN1Z2luYW1pLWt1LCBUb2t5bwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtQ0QgICAoaGV4KQkJQVJ0ZW0KLTAwMDFDRCAgICAgKGJhc2UgMTYpCQlBUnRlbQotCQkJCU9sZ2FzdHJhc3NlIDE1MgotCQkJCUQtODkwNzMgVUxNCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDEtQ0UgICAoaGV4KQkJQ3VzdG9tIE1pY3JvIFByb2R1Y3RzLCBMdGQuCi0wMDAxQ0UgICAgIChiYXNlIDE2KQkJQ3VzdG9tIE1pY3JvIFByb2R1Y3RzLCBMdGQuCi0JCQkJNDUwIEJsYW5kZm9yZCBSb2FkCi0JCQkJSGFtd29ydGh5IFBvb2xlIERvcnNldCBCSElMIDVCTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDEtQ0YgICAoaGV4KQkJQWxwaGEgRGF0YSBQYXJhbGxlbCBTeXN0ZW1zLCBMdGQuCi0wMDAxQ0YgICAgIChiYXNlIDE2KQkJQWxwaGEgRGF0YSBQYXJhbGxlbCBTeXN0ZW1zLCBMdGQuCi0JCQkJNTggVGltYmVyIEJ1c2gKLQkJCQlFZGluYnVyZ2ggRUg2IDZRSCBTY290bGFuZAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDEtRDAgICAoaGV4KQkJVml0YWxQb2ludCwgSW5jLgotMDAwMUQwICAgICAoYmFzZSAxNikJCVZpdGFsUG9pbnQsIEluYy4KLQkJCQkxNTc3MCBIb3BwZXIgUm9hZAotCQkJCVBleXRvbiBDTyA4MDgzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRDEgICAoaGV4KQkJQ29OZXQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDFEMSAgICAgKGJhc2UgMTYpCQlDb05ldCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTI1IE1hdWNobHksICMzMjAKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUQyICAgKGhleCkJCWluWHRyb24sIEluYy4gCi0wMDAxRDIgICAgIChiYXNlIDE2KQkJaW5YdHJvbiwgSW5jLiAKLQkJCQk4RiwgTm8uNTIsIE1pblF1YW4gUm9hZCwgWGluZGlhbiBEaXN0LgotCQkJCU5ldyBUYWlwZWkgQ2l0eSAgMjMxNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUQzICAgKGhleCkJCVBBWENPTU0sIEluYy4KLTAwMDFEMyAgICAgKGJhc2UgMTYpCQlQQVhDT01NLCBJbmMuCi0JCQkJN3RoIEYgVGhlIENvcnAuIENlbnRlcgotCQkJCUNodW5nbmFtIE5hdGlvbmFsIFVuaXZlcnNpdHkgMjIwIEt1bmctRG8KLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS1ENCAgIChoZXgpCQlMZWlzdXJlIFRpbWUsIEluYy4KLTAwMDFENCAgICAgKGJhc2UgMTYpCQlMZWlzdXJlIFRpbWUsIEluYy4KLQkJCQk0MjU4IENvbW11bmljYXRpb25zIERyaXZlCi0JCQkJTm9yY3Jvc3MgR0EgMzAwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUQ1ICAgKGhleCkJCUhBRURPTkcgSU5GTyAmIENPTU0gQ08uLCBMVEQKLTAwMDFENSAgICAgKGJhc2UgMTYpCQlIQUVET05HIElORk8gJiBDT01NIENPLiwgTFRECi0JCQkJIzgwMSBUaGUgQ29ycG9yYXRpb24gQ2VudGVyIGZvciBVbml2ZXJzaQotCQkJCTIyMCBLdW5nLURvbmcsIFl1c2VvbmctR3UsCi0JCQkJVGFlamVvbiBSZXB1YmxpYyBvZiBLb3JlYSAzMDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtRDYgICAoaGV4KQkJbWFucm9sYW5kIEFHCi0wMDAxRDYgICAgIChiYXNlIDE2KQkJbWFucm9sYW5kIEFHCi0JCQkJU3RhZHRiYWNoc3RyYXNzZSAxCi0JCQkJODYyMTkgQXVnc2J1cmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLUQ3ICAgKGhleCkJCUY1IE5ldHdvcmtzLCBJbmMuCi0wMDAxRDcgICAgIChiYXNlIDE2KQkJRjUgTmV0d29ya3MsIEluYy4KLQkJCQkxMzIyIE4uIFdoaXRtYW4gTGFuZQotCQkJCUxpYmVydHkgTGFrZSBXQSA5OTAxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRDggICAoaGV4KQkJVGVsdHJvbmljcywgSW5jLgotMDAwMUQ4ICAgICAoYmFzZSAxNikJCVRlbHRyb25pY3MsIEluYy4KLQkJCQk0MTI1IEtlbGxlciBTcHJpbmdzIFJvYWQKLQkJCQlTdWl0ZSAxNjYKLQkJCQlBZGRpc29uIFRYIDI1MDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1EOSAgIChoZXgpCQlTaWdtYSwgSW5jLgotMDAwMUQ5ICAgICAoYmFzZSAxNikJCVNpZ21hLCBJbmMuCi0JCQkJMzItMyBTZWlqeW8gOSBDaG9tZQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1Ny0wMDY2Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMS1EQSAgIChoZXgpCQlXSU5DT01NIENvcnBvcmF0aW9uCi0wMDAxREEgICAgIChiYXNlIDE2KQkJV0lOQ09NTSBDb3Jwb3JhdGlvbgotCQkJCTJGLCBOby4gMywgUHJvc3Blcml0eSBSb2FkIDEsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssIEhzaW5jaHUsCi0JCQkJSHNpbmNodSBUYWl3YW4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLURCICAgKGhleCkJCUZyZWVjb20gVGVjaG5vbG9naWVzIEdtYkgKLTAwMDFEQiAgICAgKGJhc2UgMTYpCQlGcmVlY29tIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJT2JlbnRyYXV0c3RyLiA3MgotCQkJCUQtMTA5NjMsIEJlcmxpbiwKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLURDICAgKGhleCkJCUFjdGl2ZXRlbGNvCi0wMDAxREMgICAgIChiYXNlIDE2KQkJQWN0aXZldGVsY28KLQkJCQk0MzIyMiBDaHJpc3R5IFN0cmVldAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUREICAgKGhleCkJCUF2YWlsIE5ldHdvcmtzCi0wMDAxREQgICAgIChiYXNlIDE2KQkJQXZhaWwgTmV0d29ya3MKLQkJCQkzMDUgRS4gRWlzZW5ob3dlciBQYXJrd2F5Ci0JCQkJQW5uIEFyYm9yIE1JIDQ4MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1ERSAgIChoZXgpCQlUcmFuZ28gU3lzdGVtcywgSW5jLgotMDAwMURFICAgICAoYmFzZSAxNikJCVRyYW5nbyBTeXN0ZW1zLCBJbmMuCi0JCQkJOTkzOSBWL0EgUGFzYXIKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLURGICAgKGhleCkJCUlTRE4gQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLTAwMDFERiAgICAgKGJhc2UgMTYpCQlJU0ROIENvbW11bmljYXRpb25zLCBMdGQuCi0JCQkJVGhlIFN0YWJsZSBCbG9jaywgUm9uYW5zCi0JCQkJQ2hhdmV5IERvd24gUm9hZCwgV2lua2ZpZWxkIFJvdyBCZXJrc2hpcgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS1FMCAgIChoZXgpCQlGYXN0IFN5c3RlbXMsIEluYy4KLTAwMDFFMCAgICAgKGJhc2UgMTYpCQlGYXN0IFN5c3RlbXMsIEluYy4KLQkJCQk4Ny05IFlhbmctSmFlLCBTZW8tQ2hvLAotCQkJCVNlb3VsLAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLUUxICAgKGhleCkJCUtpbnBvIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDAxRTEgICAgIChiYXNlIDE2KQkJS2lucG8gRWxlY3Ryb25pY3MsIEluYy4KLQkJCQlUU0FDIFRJIFdFSSwgV0FOIFNIVU4gVFNVTiwKLQkJCQlTSEVOIEtFTkcgSFNJQU5HLCBUQUlQRUkgSFNJRU4gVEFJV0FOICgyCi0JCQkJQ0hJTkEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUUyICAgKGhleCkJCUFuZG8gRWxlY3RyaWMgQ29ycG9yYXRpb24KLTAwMDFFMiAgICAgKGJhc2UgMTYpCQlBbmRvIEVsZWN0cmljIENvcnBvcmF0aW9uCi0JCQkJMTktNywgS2FtYXRhIDQtQ2hyb21lLCBPdGEta3UKLQkJCQlUb2t5bywgMTQ0LTAwNTIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLUUzICAgKGhleCkJCVNpZW1lbnMgQUcKLTAwMDFFMyAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHCi0JCQkJU2NobGF2ZW5ob3JzdCA4OAotCQkJCTQ2Mzk1IEJvY2hvbHQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS1FNCAgIChoZXgpCQlTaXRlcmEsIEluYy4KLTAwMDFFNCAgICAgKGJhc2UgMTYpCQlTaXRlcmEsIEluYy4KLQkJCQkxODIwIExlZnRoYW5kIENpcmNsZQotCQkJCUxvbmdtb250IENPIDgwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1FNSAgIChoZXgpCQlTdXBlcm5ldCwgSW5jLgotMDAwMUU1ICAgICAoYmFzZSAxNikJCVN1cGVybmV0LCBJbmMuCi0JCQkJMTM1LTA4MCBEYWVtZW9uZyBCbGRnLgotCQkJCTJuZCBGbG9vciwgNjUwLTIsIFllb2tzYW0tZG9uZyBLYW5nbmFtLWsKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS1FNiAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwMUU2ICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTEwMDAgV29sZmUgUm9hZCwgTWFpbHN0b3AgNDJMRQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRTcgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMDFFNyAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTExMDAwIFdvbGZlIFJvYWQsIE1haWxzdG9wIDQyTEUKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUU4ICAgKGhleCkJCUZvcmNlMTAgTmV0d29ya3MsIEluYy4KLTAwMDFFOCAgICAgKGJhc2UgMTYpCQlGb3JjZTEwIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTQ0MCBNY0NhcnRoeSBCbHZkLgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1FOSAgIChoZXgpCQlMaXR0b24gTWFyaW5lIFN5c3RlbXMgQi5WLgotMDAwMUU5ICAgICAoYmFzZSAxNikJCUxpdHRvbiBNYXJpbmUgU3lzdGVtcyBCLlYuCi0JCQkJMTE4IEJ1cmxpbmd0b24gUm9hZAotCQkJCU5ldyBNYWxkZW4sIFN1cnJleQotCQkJCUVOR0xBTkQgS1QzIDROUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAxLUVBICAgKGhleCkJCUNpcmlsaXVtIENvcnAuCi0wMDAxRUEgICAgIChiYXNlIDE2KQkJQ2lyaWxpdW0gQ29ycC4KLQkJCQkxNjE1IFMuIDUybmQgU3RyZWV0Ci0JCQkJVGVtcGUgQVogODUyODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUVCICAgKGhleCkJCUMtQ09NIENvcnBvcmF0aW9uCi0wMDAxRUIgICAgIChiYXNlIDE2KQkJQy1DT00gQ29ycG9yYXRpb24KLQkJCQkzRiwgTm8uIDQ4LCBQYXJrIEF2ZS4gSUkgU0JJUAotCQkJCUhzaW5jaHUgVGFpd2FuIEhzaW5jaHUgVGFpd2FuIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtRUMgICAoaGV4KQkJRXJpY3Nzb24gR3JvdXAKLTAwMDFFQyAgICAgKGJhc2UgMTYpCQlFcmljc3NvbiBHcm91cAotCQkJCVRlbGVmb25ha3RpZWJvbGFnZXQKLQkJCQlMTSBFcmljc3NvbiBDb3JwLiAxMjYgMjUgU1RPQ0tIT0xNCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAxLUVEICAgKGhleCkJCVNFVEEgQ29ycC4KLTAwMDFFRCAgICAgKGJhc2UgMTYpCQlTRVRBIENvcnAuCi0JCQkJQXJpYWtlIEZyb250aWVyIEJsZGcuIEIKLQkJCQlBcmlha2UsIEtvdXRvdSBLdSBUb2t5bywKLQkJCQlKQVBBTiAxMzUtMDA2MwotCQkJCUpBUEFOCi0KLTAwLTAxLUVFICAgKGhleCkJCUNvbXRyb2wgRXVyb3BlLCBMdGQuCi0wMDAxRUUgICAgIChiYXNlIDE2KQkJQ29tdHJvbCBFdXJvcGUsIEx0ZC4KLQkJCQlUaGUgQ291cnR5YXJkIFN0dWRpbwotCQkJCUdyYW5nZSBGYXJtLCBTdGF0aW9uIFJvYWQgTGF1bnRvbiBPeG9uIE8KLQkJCQlVLksuCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDEtRUYgICAoaGV4KQkJQ2FtdGVsIFRlY2hub2xvZ3kgQ29ycC4KLTAwMDFFRiAgICAgKGJhc2UgMTYpCQlDYW10ZWwgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLiAyLCBXdS1LdW5nIDUgUmQuLCBXdS1LdQotCQkJCUluZC4gUGFyaywgSHNpbmNodWFuZywgVGFpcGVpIFNoaWVuCi0JCQkJVGFpd2FuIFRhaXdhbiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUYwICAgKGhleCkJCVRyaWRpdW0sIEluYy4KLTAwMDFGMCAgICAgKGJhc2UgMTYpCQlUcmlkaXVtLCBJbmMuCi0JCQkJMzk1MSBXZXN0ZXJyZSBQYXJrd2F5Ci0JCQkJU3VpdGUgMzUwCi0JCQkJUmljaG1vbmQgVkEgMjMyMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUYxICAgKGhleCkJCUlubm92YXRpdmUgQ29uY2VwdHMsIEluYy4KLTAwMDFGMSAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aXZlIENvbmNlcHRzLCBJbmMuCi0JCQkJODIwMCBHcmVlbnNib3JvIERyaXZlCi0JCQkJU3VpdGUgODAxCi0JCQkJTWNMZWFuIFZBIDIyMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GMiAgIChoZXgpCQlNYXJrIG9mIHRoZSBVbmljb3JuLCBJbmMuCi0wMDAxRjIgICAgIChiYXNlIDE2KQkJTWFyayBvZiB0aGUgVW5pY29ybiwgSW5jLgotCQkJCTEyODAgTWFzc2FjaHVzZXR0cyBBdmUuCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GMyAgIChoZXgpCQlRUFMsIEluYy4KLTAwMDFGMyAgICAgKGJhc2UgMTYpCQlRUFMsIEluYy4KLQkJCQk4MDE1IEUuIENyeXN0YWwgRHJpdmUKLQkJCQlBbmFoZWltIENBIDkyODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GNCAgIChoZXgpCQlFbnRlcmFzeXMgTmV0d29ya3MKLTAwMDFGNCAgICAgKGJhc2UgMTYpCQlFbnRlcmFzeXMgTmV0d29ya3MKLQkJCQkzNSBJbmR1c3RyaWFsIFdheQotCQkJCVJvY2hlc3RlciBOSCAwMzg2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRjUgICAoaGV4KQkJRVJJTSBTLkEuCi0wMDAxRjUgICAgIChiYXNlIDE2KQkJRVJJTSBTLkEuCi0JCQkJMTEgQXYgUmVwdWJsaXF1ZQotCQkJCTY5NjkyIFZlbmlzc2lldXggQ2VkZXgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDEtRjYgICAoaGV4KQkJQXNzb2NpYXRpb24gb2YgTXVzaWNhbCBFbGVjdHJvbmljcyBJbmR1c3RyeQotMDAwMUY2ICAgICAoYmFzZSAxNikJCUFzc29jaWF0aW9uIG9mIE11c2ljYWwgRWxlY3Ryb25pY3MgSW5kdXN0cnkKLQkJCQlJdG8gQmxkZy4gNHRoIEZsb29yIDItMTYtOSBNaXNha2ktY2hvLAotCQkJCUNoaXlvZGEta3UsIFRva3lvLCAxMDEtMDA2MQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtRjcgICAoaGV4KQkJSW1hZ2UgRGlzcGxheSBTeXN0ZW1zLCBJbmMuCi0wMDAxRjcgICAgIChiYXNlIDE2KQkJSW1hZ2UgRGlzcGxheSBTeXN0ZW1zLCBJbmMuCi0JCQkJNDY1NjAgRnJlbW9udCBCbHZkLgotCQkJCVN1aXRlICM0MDYKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GOCAgIChoZXgpCQlBZGhlcmVudCBTeXN0ZW1zLCBMdGQuCi0wMDAxRjggICAgIChiYXNlIDE2KQkJQWRoZXJlbnQgU3lzdGVtcywgTHRkLgotCQkJCUVuZGVhdm91ciBIb3VzZSwgVmlzaW9uIFBhcmsKLQkJCQlIaXN0b24gQ2FtYnJpZGdlIENCNCA0WlIKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAxLUY5ICAgKGhleCkJCVRlcmFHbG9iYWwgQ29tbXVuaWNhdGlvbnMgQ29ycC4KLTAwMDFGOSAgICAgKGJhc2UgMTYpCQlUZXJhR2xvYmFsIENvbW11bmljYXRpb25zIENvcnAuCi0JCQkJOTE3MSBUb3duZSBDZW50cmUgRHJpdmUKLQkJCQlTdWl0ZSAjNjAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GQSAgIChoZXgpCQlIT1JPU0NBUwotMDAwMUZBICAgICAoYmFzZSAxNikJCUhPUk9TQ0FTCi0JCQkJMjYsIExPVUlTIEJMQU5DCi0JCQkJNjkwMDYgTFlPTgotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMS1GQiAgIChoZXgpCQlEb1RvcCBUZWNobm9sb2d5LCBJbmMuCi0wMDAxRkIgICAgIChiYXNlIDE2KQkJRG9Ub3AgVGVjaG5vbG9neSwgSW5jLgotCQkJCTEwRiwgTm8uIDEwMCwgTWluLUNoeXVhbiBSb2FkCi0JCQkJSHNpbi1UaWVuLCBUYWlwZWkKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUZDICAgKGhleCkJCUtleWVuY2UgQ29ycG9yYXRpb24KLTAwMDFGQyAgICAgKGJhc2UgMTYpCQlLZXllbmNlIENvcnBvcmF0aW9uCi0JCQkJMS0zLTE0LCBIaWdhc2hpLU5ha2FqaW1hLAotCQkJCUhpZ2FzaGktWW9kb2dhd2Eta3UgT3Nha2EgNTMzLTg1NTUKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLUZEICAgKGhleCkJCURpZ2l0YWwgVm9pY2UgU3lzdGVtcywgSW5jLgotMDAwMUZEICAgICAoYmFzZSAxNikJCURpZ2l0YWwgVm9pY2UgU3lzdGVtcywgSW5jLgotCQkJCTIzNCBMaXR0bGV0b24gUm9hZAotCQkJCVdlc3Rmb3JkIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GRSAgIChoZXgpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotMDAwMUZFICAgICAoYmFzZSAxNikJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0JCQkJTS9TIENYMDEtMi9OMjYKLQkJCQkzMDEgUk9DS1JJTU1PTiBCTFZELiwgUwotCQkJCUNPTE9SQURPIFNQUklOR1MgQ08gODA5MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUZGICAgKGhleCkJCURhdGEgRGlyZWN0IE5ldHdvcmtzLCBJbmMuCi0wMDAxRkYgICAgIChiYXNlIDE2KQkJRGF0YSBEaXJlY3QgTmV0d29ya3MsIEluYy4KLQkJCQk5MzIwIEx1cmxpbmUgQXZlbnVlCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMDAgICAoaGV4KQkJTmV0ICYgU3lzIENvLiwgTHRkLgotMDAwMjAwICAgICAoYmFzZSAxNikJCU5ldCAmIFN5cyBDby4sIEx0ZC4KLQkJCQlLdXJvIEhpdGVjaCBJbmR1c3RyaWFsIENvbXBsZXggMzA0LAotCQkJCTQwMi0zLCBTaGluZG9yaW0tZG9uZywgS3Vyby1ndSBTZW91bCwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi0wMSAgIChoZXgpCQlJRk0gRWxlY3Ryb25pYyBnbWJoCi0wMDAyMDEgICAgIChiYXNlIDE2KQkJSUZNIEVsZWN0cm9uaWMgZ21iaAotCQkJCUJlY2hsaW5nZW4gMzQKLQkJCQlELTg4MDY5IFRldHRuYW5nCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDItMDIgICAoaGV4KQkJQW1pbm8gQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLTAwMDIwMiAgICAgKGJhc2UgMTYpCQlBbWlubyBDb21tdW5pY2F0aW9ucywgTHRkLgotCQkJCVRpbWVzIEhvdXNlCi0JCQkJRmVuIEVuZCBXaWxsaW5naGFtLCBDYW1icmlkZ2UKLQkJCQlVSyBDQjQgNUxICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItMDMgICAoaGV4KQkJV29vbnNhbmcgVGVsZWNvbSwgSW5jLgotMDAwMjAzICAgICAoYmFzZSAxNikJCVdvb25zYW5nIFRlbGVjb20sIEluYy4KLQkJCQkxMDQtOSwgTXVuamktRG9uZywgWXVzb25nLUd1Ci0JCQkJVGFlam9uLCAzMDUtMzgwLAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTA0ICAgKGhleCkJCUJvZG1hbm4gSW5kdXN0cmllcyBFbGVrdHJvbmlrIEdtYkgKLTAwMDIwNCAgICAgKGJhc2UgMTYpCQlCb2RtYW5uIEluZHVzdHJpZXMgRWxla3Ryb25payBHbWJICi0JCQkJTWVzc2Vyc2NobWl0dHJpbmcgMzMKLQkJCQlELTg2MzQzIEtvbmlnc2JydW5uCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDItMDUgICAoaGV4KQkJSGl0YWNoaSBEZW5zaGksIEx0ZC4KLTAwMDIwNSAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIERlbnNoaSwgTHRkLgotCQkJCTMyIE1peWFraS1jaG8gS29kYWlyYS1zaGkKLQkJCQlUb3lrbywKLQkJCQlKQVBBTiAxODctODUxMQotCQkJCUpBUEFOCi0KLTAwLTAyLTA2ICAgKGhleCkJCVRlbGl0YWwgUiZEIERlbm1hcmsgQS9TCi0wMDAyMDYgICAgIChiYXNlIDE2KQkJVGVsaXRhbCBSJkQgRGVubWFyayBBL1MKLQkJCQk5NTMwIFN0b3VyaW5nCi0JCQkJRGVubWFyawotCQkJCURFTk1BUksKLQotMDAtMDItMDcgICAoaGV4KQkJVmlzaW9uR2xvYmFsIE5ldHdvcmsgQ29ycC4KLTAwMDIwNyAgICAgKGJhc2UgMTYpCQlWaXNpb25HbG9iYWwgTmV0d29yayBDb3JwLgotCQkJCTgyNiBFLiBTdGFsZSBSb2FkCi0JCQkJU3VpdGUgMjAwCi0JCQkJQW1lcmljYW4gRm9yayBVVCA4NDAwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMDggICAoaGV4KQkJVW5pZnkgTmV0d29ya3MsIEluYy4KLTAwMDIwOCAgICAgKGJhc2UgMTYpCQlVbmlmeSBOZXR3b3JrcywgSW5jLgotCQkJCTMxNjAgRGUgTGEgQ3J1eiBCbHZkLgotCQkJCSMyMDEKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMDkgICAoaGV4KQkJU2hlbnpoZW4gU0VEIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDAyMDkgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU0VEIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNC9GLiwgV2VzdCBCbG9jaywgQmxvY2sgNDE0LCBaaGVuaHVhIFJkLgotCQkJCUZ1dGlhbiBTaGVuemhlbiwgNTE4MDMxIFAuUi4KLQkJCQlDSElOQQotCQkJCUNISU5BCi0KLTAwLTAyLTBBICAgKGhleCkJCUdlZnJhbiBTcGEKLTAwMDIwQSAgICAgKGJhc2UgMTYpCQlHZWZyYW4gU3BhCi0JCQkJVmlhIFNlYmluYSwgNzQKLQkJCQlQcm92YWdsaW8gRCdJc2VvIDI1MDUwIEJyZXNjaWEKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTAyLTBCICAgKGhleCkJCU5hdGl2ZSBOZXR3b3JrcywgSW5jLgotMDAwMjBCICAgICAoYmFzZSAxNikJCU5hdGl2ZSBOZXR3b3JrcywgSW5jLgotCQkJCVAuTy4gQm94IDcxNjUKLQkJCQlQZXRhaCBUaWt2YSA0OTE3MAotCQkJCUlzcmFlbAotCQkJCUlTUkFFTAotCi0wMC0wMi0wQyAgIChoZXgpCQlNZXRyby1PcHRpeAotMDAwMjBDICAgICAoYmFzZSAxNikJCU1ldHJvLU9wdGl4Ci0JCQkJMjIwMSBBdmVudWUgSwotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0wRCAgIChoZXgpCQlNaWNyb25wYy5jb20KLTAwMDIwRCAgICAgKGJhc2UgMTYpCQlNaWNyb25wYy5jb20KLQkJCQk5MDAgRS4gS2FyY2hlciBSZC4KLQkJCQlOYW1wYSBJQSA4MzY4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMEUgICAoaGV4KQkJRUNJIFRlbGVjb20sIEx0ZC4sIE5TRC1VUwotMDAwMjBFICAgICAoYmFzZSAxNikJCUVDSSBUZWxlY29tLCBMdGQuLCBOU0QtVVMKLQkJCQkxMzAwIE9tZWdhIERyLgotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTBGICAgKGhleCkJCUFBVFIKLTAwMDIwRiAgICAgKGJhc2UgMTYpCQlBQVRSCi0JCQkJMzA2IENoZW1pbiBkZXMgTWlyb2lycwotCQkJCTEzMzMwIFBlbGlzc2FubmUKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDItMTAgICAoaGV4KQkJRmVuZWNvbQotMDAwMjEwICAgICAoYmFzZSAxNikJCUZlbmVjb20KLQkJCQk3L0YgS29uLWt1ayBVbml2ZXJzaXR5IEFsdW1uaQotCQkJCUFzc29jaWF0aW9uIEJ1aWxkaW5nIE5POiAgMjI3LTMzNiBKYXlhbmcKLQkJCQlTZW91bCBTZW91bCBLb3JlYQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi0xMSAgIChoZXgpCQlOYXR1cmUgV29ybGR3aWRlIFRlY2hub2xvZ3kgQ29ycC4KLTAwMDIxMSAgICAgKGJhc2UgMTYpCQlOYXR1cmUgV29ybGR3aWRlIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQlOby4gMSwgTWluLUNodWFuIFN0cmVldAotCQkJCVR1LUNoZW5nIEluZHVzdHJpYWwgUGFyayBUYWlwZWkgSHNpZW4sCi0JCQkJVGFpd2FuIFRhaXdhbiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTEyICAgKGhleCkJCVNpZXJyYUNvbQotMDAwMjEyICAgICAoYmFzZSAxNikJCVNpZXJyYUNvbQotCQkJCTk5IFNvdXRoIFN0cmVldAotCQkJCUhvcGtpbnRvbiBNYSAwMTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMTMgICAoaGV4KQkJUy5ELkUuTC4KLTAwMDIxMyAgICAgKGJhc2UgMTYpCQlTLkQuRS5MLgotCQkJCUFlcm9wb2xlIEQyQQotCQkJCVJ1ZSBOdW5nZXJyZXIgZXQgQ29saSA0NDg2MCBTdCBBaWduYW4gZGUKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDItMTQgICAoaGV4KQkJRFRWUk8KLTAwMDIxNCAgICAgKGJhc2UgMTYpCQlEVFZSTwotCQkJCTgxMyBEYWVnb25nIEJsZGcuLAotCQkJCTgyMy0yMSBZZW9rc2FtLURvbmcsIEthbmduYW0tR3UsIFNlb3VsLAotCQkJCUtPUkVBIEtPUkVBIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItMTUgICAoaGV4KQkJQ290YXMgQ29tcHV0ZXIgVGVjaG5vbG9neSBBL0IKLTAwMDIxNSAgICAgKGJhc2UgMTYpCQlDb3RhcyBDb21wdXRlciBUZWNobm9sb2d5IEEvQgotCQkJCVBhbHVkYW4tTXVsbGVycyBWZWogODIKLQkJCQlESy04MjAwIEFhcmh1cyBOCi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtMDItMTYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMjE2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMTcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMjE3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMTggICAoaGV4KQkJQWR2YW5jZWQgU2NpZW50aWZpYyBDb3JwCi0wMDAyMTggICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgU2NpZW50aWZpYyBDb3JwCi0JCQkJMSBGbC4sIE5vLiAyNiwgSW5kdXN0cnkgRWFzdCA5dGggUm9hZAotCQkJCVNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrIEhzaW4tQ2h1Ci0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi0xOSAgIChoZXgpCQlQYXJhbG9uIFRlY2hub2xvZ2llcwotMDAwMjE5ICAgICAoYmFzZSAxNikJCVBhcmFsb24gVGVjaG5vbG9naWVzCi0JCQkJNzAwIEZpZnRoIEF2ZSwgU3VpdGUgNjEwMQotCQkJCVNlYXR0bGUgV0EgOTgxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTFBICAgKGhleCkJCVp1bWEgTmV0d29ya3MKLTAwMDIxQSAgICAgKGJhc2UgMTYpCQladW1hIE5ldHdvcmtzCi0JCQkJODQwMyBGYWxsYnJvb2sgQXZlLgotCQkJCVdlc3QgSGlsbHMgQ0EgOTEzMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTFCICAgKGhleCkJCUtvbGxtb3JnZW4tU2Vydm90cm9uaXgKLTAwMDIxQiAgICAgKGJhc2UgMTYpCQlLb2xsbW9yZ2VuLVNlcnZvdHJvbml4Ci0JCQkJUE9CIDM5MTksIFBldGFjaCBUaWt5YQotCQkJCTQ5MTMwIElTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wMi0xQyAgIChoZXgpCQlOZXR3b3JrIEVsZW1lbnRzLCBJbmMuCi0wMDAyMUMgICAgIChiYXNlIDE2KQkJTmV0d29yayBFbGVtZW50cywgSW5jLgotCQkJCTk3ODIgU1cgTmltYnVzIEF2ZW51ZQotCQkJCUJlYXZlcnRvbiBPUiA5NzAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMUQgICAoaGV4KQkJRGF0YSBHZW5lcmFsIENvbW11bmljYXRpb24gTHRkLgotMDAwMjFEICAgICAoYmFzZSAxNikJCURhdGEgR2VuZXJhbCBDb21tdW5pY2F0aW9uIEx0ZC4KLQkJCQlSbS4gMThDLCBCbGRnLiBDLCBDRUlFQyBUb3dlcgotCQkJCU5vLiAyMDcwLCBSZC4gU2hlbk5hblpob25nIFNoZW5aaGVuIENpdHkKLQkJCQlDSElOQQotCQkJCUNISU5BCi0KLTAwLTAyLTFFICAgKGhleCkJCVNJTVRFTCBTLlIuTC4KLTAwMDIxRSAgICAgKGJhc2UgMTYpCQlTSU1URUwgUy5SLkwuCi0JCQkJVmlhIEJvbmlmYWNpbyBMdXBpLCAyNQotCQkJCTUwMTI5IEZpcmVuemUKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTAyLTFGICAgKGhleCkJCUFjdWxhYiBQTEMKLTAwMDIxRiAgICAgKGJhc2UgMTYpCQlBY3VsYWIgUExDCi0JCQkJTGFrZXNpZGUsIEJyYW1sZXkgUm9hZAotCQkJCU1vdW50IEZhcm0gTWlsdG9uIEtleW5lcyBCdWxrcyBNSzEgMVBUCi0JCQkJVUsKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi0yMCAgIChoZXgpCQlDQU5PTiBGSU5FVEVDSCBJTkMuCi0wMDAyMjAgICAgIChiYXNlIDE2KQkJQ0FOT04gRklORVRFQ0ggSU5DLgotCQkJCTcxNywgWWFndWNoaSwgTWlzYXRvLXNoaSwKLQkJCQlTYWl0YW1hICAzNDEtODUyNwotCQkJCUpBUEFOCi0KLTAwLTAyLTIxICAgKGhleCkJCURTUCBBcHBsaWNhdGlvbiwgTHRkLgotMDAwMjIxICAgICAoYmFzZSAxNikJCURTUCBBcHBsaWNhdGlvbiwgTHRkLgotCQkJCTEyRi0xMiwgTm8uIDc5LCBTZWMuIDEgSHNpbiBUYWkgV3UgUmQuCi0JCQkJSFNJQ0hJLCBUYWlwZWkgQ291bnR5Ci0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi0yMiAgIChoZXgpCQlDaHJvbWlzeXMsIEluYy4KLTAwMDIyMiAgICAgKGJhc2UgMTYpCQlDaHJvbWlzeXMsIEluYy4KLQkJCQkxMDEyIFN0ZXdhcnQgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTIzICAgKGhleCkJCUNsaWNrVFYKLTAwMDIyMyAgICAgKGJhc2UgMTYpCQlDbGlja1RWCi0JCQkJS2Vtb25nIEJsZGcuLCA0dGggRmwuLAotCQkJCTc3MiBZb2tzYW0tRG9uZyBLYW5nbmFtLUt1Ci0JCQkJU2VvdWwgS29yZWEgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi0yNCAgIChoZXgpCQlDLUNPUgotMDAwMjI0ICAgICAoYmFzZSAxNikJCUMtQ09SCi0JCQkJMTUgU3RlcmxpbmcgRHJpdmUKLQkJCQlXYWxsaW5nZm9yZCBDVCAwNjQ5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMjUgICAoaGV4KQkJT25lIFN0b3AgU3lzdGVtcwotMDAwMjI1ICAgICAoYmFzZSAxNikJCU9uZSBTdG9wIFN5c3RlbXMKLQkJCQkyMjM1IEVudGVycHJpc2UgU3RyZWV0Ci0JCQkJU3VpdGUgMTEwCi0JCQkJRXNjb25kaWRvIENBIDkyMDI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0yNiAgIChoZXgpCQlYRVN5c3RlbXMsIEluYy4KLTAwMDIyNiAgICAgKGJhc2UgMTYpCQlYRVN5c3RlbXMsIEluYy4KLQkJCQkzMTcgTWFpbiBTdHJlZXQKLQkJCQlFYXN0IFJvY2hlc3RlciBOWSAxNDQ0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMjcgICAoaGV4KQkJRVNEIEVsZWN0cm9uaWMgU3lzdGVtIERlc2lnbiBHbWJICi0wMDAyMjcgICAgIChiYXNlIDE2KQkJRVNEIEVsZWN0cm9uaWMgU3lzdGVtIERlc2lnbiBHbWJICi0JCQkJVmFocmVud2FsZGVyIFN0ci4gMjA3Ci0JCQkJMzAgMTY1IEhhbm5vdmVyIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAyLTI4ICAgKGhleCkJCU5lY3NvbSwgTHRkLgotMDAwMjI4ICAgICAoYmFzZSAxNikJCU5lY3NvbSwgTHRkLgotCQkJCU5lY3NvbSBMdGQuIGMvbyBLb2lyc3RvCi0JCQkJU2F1bmFtYWVudGllIDQgQSAxIEZJTi0wMjc3MCBFU1AwMAotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTAyLTI5ICAgKGhleCkJCUFkdGVjIENvcnBvcmF0aW9uCi0wMDAyMjkgICAgIChiYXNlIDE2KQkJQWR0ZWMgQ29ycG9yYXRpb24KLQkJCQkzRiBNZWd1cm9oaWdhc2hpeWFtYSBCbGcKLQkJCQkxIDQgNCBIaWdhc2hpeWFtYSwgTWVndXJvIEt1IFRva3lvIDE1MyAwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMi0yQSAgIChoZXgpCQlBc291bmQgRWxlY3Ryb25pYwotMDAwMjJBICAgICAoYmFzZSAxNikJCUFzb3VuZCBFbGVjdHJvbmljCi0JCQkJWGlhbnhpIEluZHVzdHJpZXMgWm9uZSBDaGFuZ2FuIFRvd24KLQkJCQlEb25nIEd1b24gQ2l0eSwgR3VvbmcgRG9uZyBQcm92aWRlbmNlCi0JCQkJQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0wMi0yQiAgIChoZXgpCQlTQVhBLCBJbmMuCi0wMDAyMkIgICAgIChiYXNlIDE2KQkJU0FYQSwgSW5jLgotCQkJCU5CRiBQbGF0aW51bSBUb3dlciAxLTE3LTMgU2hpcm9rYW5lCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwOC04MDUwCi0JCQkJSkFQQU4KLQotMDAtMDItMkMgICAoaGV4KQkJQUJCIEJvbWVtLCBJbmMuCi0wMDAyMkMgICAgIChiYXNlIDE2KQkJQUJCIEJvbWVtLCBJbmMuCi0JCQkJNTg1LCBib3VsLiBDaGFyZXN0IEVzdAotCQkJCVN1aXRlIDMwMCBRdWViZWMgQ2l0eSwgUFEKLQkJCQlDYW5hZGEgRzFLIDlINAotCQkJCUNBTkFEQQotCi0wMC0wMi0yRCAgIChoZXgpCQlBZ2VyZSBTeXN0ZW1zCi0wMDAyMkQgICAgIChiYXNlIDE2KQkJQWdlcmUgU3lzdGVtcwotCQkJCVAuTy4gQm94IDc1NQotCQkJCTM0MzAgQXQgTmlldXdlZ2VpbgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTAyLTJFICAgKGhleCkJCVRFQUMgQ29ycC4gUiYgRAotMDAwMjJFICAgICAoYmFzZSAxNikJCVRFQUMgQ29ycC4gUiYgRAotCQkJCTg1NyBLb3lhdGEsIElydW1hCi0JCQkJU2FpdGFtYQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDItMkYgICAoaGV4KQkJUC1DdWJlLCBMdGQuCi0wMDAyMkYgICAgIChiYXNlIDE2KQkJUC1DdWJlLCBMdGQuCi0JCQkJUC5PLiBCb3ggMTIzMzEKLQkJCQlIZXJ6bGlhIDQ2NzY2Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAyLTMwICAgKGhleCkJCUludGVyc29mdCBFbGVjdHJvbmljcwotMDAwMjMwICAgICAoYmFzZSAxNikJCUludGVyc29mdCBFbGVjdHJvbmljcwotCQkJCUxhbW1lcmRyaWVzIDI3Ci0JCQkJQjIyNTAgT2xlbgotCQkJCUJFTEdJVU0KLQkJCQlCRUxHSVVNCi0KLTAwLTAyLTMxICAgKGhleCkJCUluZ2Vyc29sbC1SYW5kCi0wMDAyMzEgICAgIChiYXNlIDE2KQkJSW5nZXJzb2xsLVJhbmQKLQkJCQkxNDY3IFJvdXRlIDMxIFNvdXRoCi0JCQkJUC5PLiBCb3ggOTcwCi0JCQkJQW5uYW5kYWxlIE5KIDA4ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zMiAgIChoZXgpCQlBdmlzaW9uLCBJbmMuCi0wMDAyMzIgICAgIChiYXNlIDE2KQkJQXZpc2lvbiwgSW5jLgotCQkJCU5vLiAyMCwgQ3JlYXRpb24gUmQuIDEsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSBUYWl3YW4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItMzMgICAoaGV4KQkJTWFudHJhIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAyMzMgICAgIChiYXNlIDE2KQkJTWFudHJhIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTI4NTAgTWlkZGxlYnJvb2sgUm9hZAotCQkJCVN1aXRlIDEKLQkJCQlHZXJtYW50b3duIE1EIDIwODc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zNCAgIChoZXgpCQlJbXBlcmlhbCBUZWNobm9sb2d5LCBJbmMuCi0wMDAyMzQgICAgIChiYXNlIDE2KQkJSW1wZXJpYWwgVGVjaG5vbG9neSwgSW5jLgotCQkJCTIzMDUgVXRhaCBBdmVudWUKLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zNSAgIChoZXgpCQlQYXJhZ29uIE5ldHdvcmtzIEludGVybmF0aW9uYWwKLTAwMDIzNSAgICAgKGJhc2UgMTYpCQlQYXJhZ29uIE5ldHdvcmtzIEludGVybmF0aW9uYWwKLQkJCQk2MSBDb21tZXJjZSBEcml2ZQotCQkJCUJyb29rZmllbGQgQ1QgMDY4MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTM2ICAgKGhleCkJCUlOSVQgR21iSAotMDAwMjM2ICAgICAoYmFzZSAxNikJCUlOSVQgR21iSAotCQkJCUthZXBwZWxlc3RyLiA2Ci0JCQkJRC03NjEzMSBLYXJsc3J1aGUKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMi0zNyAgIChoZXgpCQlDb3NtbyBSZXNlYXJjaCBDb3JwLgotMDAwMjM3ICAgICAoYmFzZSAxNikJCUNvc21vIFJlc2VhcmNoIENvcnAuCi0JCQkJQ29zbW8gQmxkZywgMy0xNDgtNQotCQkJCU1peWFoYXJhY2hvLCBPbWl5YSBTYWl0YW1hIDMzMC0wMDM4Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMi0zOCAgIChoZXgpCQlTZXJvbWUgVGVjaG5vbG9neSwgSW5jLgotMDAwMjM4ICAgICAoYmFzZSAxNikJCVNlcm9tZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNTU1LTE0LCBCYWVrYW5nIEIvRCA3RgotCQkJCVNoaW5zYS1kb25nLCBLYW5nbmFtLWd1Ci0JCQkJU2VvdWwgS29yZWEgMTM1LTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi0zOSAgIChoZXgpCQlWaXNpY29tCi0wMDAyMzkgICAgIChiYXNlIDE2KQkJVmlzaWNvbQotCQkJCTEwMDUyIE1lc2EgUmlkZ2UgQ3QuCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zQSAgIChoZXgpCQlaU0sgU3RpY2ttYXNjaGluZW4gR21iSAotMDAwMjNBICAgICAoYmFzZSAxNikJCVpTSyBTdGlja21hc2NoaW5lbiBHbWJICi0JCQkJTWFnZGVidXJnZXIgU3RyYXNzZSAzOC00MAotCQkJCTQ3ODAwIEtyZWZlbGQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMi0zQiAgIChoZXgpCQlSZWRiYWNrIE5ldHdvcmtzCi0wMDAyM0IgICAgIChiYXNlIDE2KQkJUmVkYmFjayBOZXR3b3JrcwotCQkJCTExOTUgQm9ycmVnYXMgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zQyAgIChoZXgpCQlDcmVhdGl2ZSBUZWNobm9sb2d5LCBMdGQuCi0wMDAyM0MgICAgIChiYXNlIDE2KQkJQ3JlYXRpdmUgVGVjaG5vbG9neSwgTHRkLgotCQkJCTMxIEludGVybmF0aW9uYWwgQnVzaW5lc3MgUGFyawotCQkJCVNpbmdhcG9yZSA2MDk5MjEKLQkJCQlSZXB1YmxpYyBvZiBTaW5nYXBvcmUKLQkJCQlTSU5HQVBPUkUKLQotMDAtMDItM0QgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMjNEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItM0UgICAoaGV4KQkJU2VsdGEgVGVsZW1hdGljYSBTLnAuYQotMDAwMjNFICAgICAoYmFzZSAxNikJCVNlbHRhIFRlbGVtYXRpY2EgUy5wLmEKLQkJCQlWaWEgTmF6aW9uYWxlIGttIDQwNC41Ci0JCQkJNjQwMTkgVG9ydG9yZXRvIExpZG8gVEUKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTAyLTNGICAgKGhleCkJCUNvbXBhbCBFbGVjdHJvbmljcywgSW5jLgotMDAwMjNGICAgICAoYmFzZSAxNikJCUNvbXBhbCBFbGVjdHJvbmljcywgSW5jLgotCQkJCTU4MSwgSnVpa3VhbmcgUmQuLAotCQkJCU5laWh1LCBUYWlwZWksICgxMTQpCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTQwICAgKGhleCkJCVNlZWRlayBDby4sIEx0ZC4KLTAwMDI0MCAgICAgKGJhc2UgMTYpCQlTZWVkZWsgQ28uLCBMdGQuCi0JCQkJIzcwOSwgMTYzOC0zMiwgU2FtbW8KLQkJCQlTaGlucmltYm9uLURvbmcsIEt3YW5hay1HdSwgU2VvdWwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi00MSAgIChoZXgpCQlBbWVyLmNvbQotMDAwMjQxICAgICAoYmFzZSAxNikJCUFtZXIuY29tCi0JCQkJNzI1OSBCcnlhbiBEYWlyeSBSb2FkCi0JCQkJTGFyZ28gRkwgMzM3NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTQyICAgKGhleCkJCVZpZGVvZnJhbWUgU3lzdGVtcwotMDAwMjQyICAgICAoYmFzZSAxNikJCVZpZGVvZnJhbWUgU3lzdGVtcwotCQkJCTEwMSBQcm92aWRlbmNlIE1pbmUgUm9hZAotCQkJCVN1aXRlIDEwMwotCQkJCU5ldmFkYSBDaXR5IENBIDk1OTU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi00MyAgIChoZXgpCQlSYXlzaXMgQ28uLCBMdGQuCi0wMDAyNDMgICAgIChiYXNlIDE2KQkJUmF5c2lzIENvLiwgTHRkLgotCQkJCTk5Ny0xMCwgRGFlY2hpLURvbmcsIEthbmduYW0tS3UsCi0JCQkJU2VvdWwgMTM1LTI4MCwgU291dGggS29yZWEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItNDQgICAoaGV4KQkJU1VSRUNPTSBUZWNobm9sb2d5IENvLgotMDAwMjQ0ICAgICAoYmFzZSAxNikJCVNVUkVDT00gVGVjaG5vbG9neSBDby4KLQkJCQk2RiwgTm8uIDEyNSwgU2VjLiAyLCBEYXR1bmcgUmQuCi0JCQkJU2hpanIsIFRhaXBlaSBDb3VudHksIDIyMQotCQkJCVRhaXdhbiBUYWl3YW4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi00NSAgIChoZXgpCQlMYW1wdXMgQ28sIEx0ZC4KLTAwMDI0NSAgICAgKGJhc2UgMTYpCQlMYW1wdXMgQ28sIEx0ZC4KLQkJCQk2dGggQmxkZy4sIFNhbWdvbmcsCi0JCQkJNTgtNyBSYW5wbyA0ZG9uZyBTY29jaC1nbywgU2VvdWwsCi0JCQkJS29yZWEgS29yZWEgMTM3LTA0NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi00NiAgIChoZXgpCQlBbGwtV2luIFRlY2ggQ28uLCBMdGQuCi0wMDAyNDYgICAgIChiYXNlIDE2KQkJQWxsLVdpbiBUZWNoIENvLiwgTHRkLgotCQkJCTExRiwgTm8uIDExMS03LCBIc2luZyBEZSBSZC4sCi0JCQkJU2FuIENodW5nIENpdHksCi0JCQkJVGFpcGVpIEhzaWVuIFRhaXdhbiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi00NyAgIChoZXgpCQlHcmVhdCBEcmFnb24gSW5mb3JtYXRpb24gVGVjaG5vbG9neSAoR3JvdXApIENvLiwgTHRkLgotMDAwMjQ3ICAgICAoYmFzZSAxNikJCUdyZWF0IERyYWdvbiBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IChHcm91cCkgQ28uLCBMdGQuCi0JCQkJMTY5IEJlaXl1YW4gUmQuLAotCQkJCUNoYW95YW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAxMDAxMDEsIENISU5BCi0JCQkJQ0hJTkEKLQotMDAtMDItNDggICAoaGV4KQkJUGlseiBHbWJIICYgQ28uCi0wMDAyNDggICAgIChiYXNlIDE2KQkJUGlseiBHbWJIICYgQ28uCi0JCQkJRmVsaXgtV2Fua2VsLVN0cmFzc2UgMgotCQkJCUQtNzM3NjAgT3N0ZmlsZGVybgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAyLTQ5ICAgKGhleCkJCUF2aXYgSW5mb2NvbSBDbywgTHRkLgotMDAwMjQ5ICAgICAoYmFzZSAxNikJCUF2aXYgSW5mb2NvbSBDbywgTHRkLgotCQkJCTk2Mi01LCBLd2FueWFuZy1Eb25nLCBEb25nYW4tR3UsCi0JCQkJQW55YW5nLUNpdHksIEt5dW5na2ktRG8sIDQzMS0wNjAKLQkJCQlLb3JlYSAoUk9LKQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi00QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyNEEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNEIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMjRCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTRDICAgKGhleCkJCVNpQnl0ZSwgSW5jLgotMDAwMjRDICAgICAoYmFzZSAxNikJCVNpQnl0ZSwgSW5jLgotCQkJCTI4MDUgQm93ZXJzIEF2ZW51ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxLTA5MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTREICAgKGhleCkJCU1hbm5lc21hbiBEZW1hdGljIENvbGJ5IFB0eS4gTHRkLgotMDAwMjREICAgICAoYmFzZSAxNikJCU1hbm5lc21hbiBEZW1hdGljIENvbGJ5IFB0eS4gTHRkLgotCQkJCTI0IE5hcmFiYW5nIFdheQotCQkJCUJlbHJvc2UsIE5TVyAyMDg1Ci0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTAyLTRFICAgKGhleCkJCURhdGFjYXJkIEdyb3VwCi0wMDAyNEUgICAgIChiYXNlIDE2KQkJRGF0YWNhcmQgR3JvdXAKLQkJCQkxMTExMSBCcmVuIFJvYWQgV2VzdAotCQkJCU1TIDIxMAotCQkJCU1pbm5ldG9ua2EgTU4gNTUzNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTRGICAgKGhleCkJCUlQTSBEYXRhY29tIFMuUi5MLgotMDAwMjRGICAgICAoYmFzZSAxNikJCUlQTSBEYXRhY29tIFMuUi5MLgotCQkJCVZpYSBSb21hLCAyMzEKLQkJCQk4MDAyNyBGcmF0dGFtYWdnaW9yZQotCQkJCU5hcGxlcyBJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTAyLTUwICAgKGhleCkJCUdleXNlciBOZXR3b3JrcywgSW5jLgotMDAwMjUwICAgICAoYmFzZSAxNikJCUdleXNlciBOZXR3b3JrcywgSW5jLgotCQkJCTUzNSBEZWwgUmV5IEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTEgICAoaGV4KQkJU29tYSBOZXR3b3JrcywgSW5jLgotMDAwMjUxICAgICAoYmFzZSAxNikJCVNvbWEgTmV0d29ya3MsIEluYy4KLQkJCQk2NTAgVG93bnNlbmQgU3QuCi0JCQkJU3VpdGUgMzA1Ci0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTIgICAoaGV4KQkJQ2FycmllciBDb3Jwb3JhdGlvbgotMDAwMjUyICAgICAoYmFzZSAxNikJCUNhcnJpZXIgQ29ycG9yYXRpb24KLQkJCQlPbmUgQ2FycmllciBQbGFjZQotCQkJCUZhcm1pbmd0b24gQ1QgMDYwMzQtNDAxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTMgICAoaGV4KQkJVGVsZXZpZGVvLCBJbmMuCi0wMDAyNTMgICAgIChiYXNlIDE2KQkJVGVsZXZpZGVvLCBJbmMuCi0JCQkJMjM0NSBIYXJyaXMgV2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTU0ICAgKGhleCkJCVdvcmxkR2F0ZQotMDAwMjU0ICAgICAoYmFzZSAxNikJCVdvcmxkR2F0ZQotCQkJCTMxOTAgVHJlbW9udCBBdmVudWUKLQkJCQlUcmV2b3NlIFBBIDE5MDUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01NSAgIChoZXgpCQlJQk0gQ29ycAotMDAwMjU1ICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAuTy4gQm94IDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01NiAgIChoZXgpCQlBbHBoYSBQcm9jZXNzb3IsIEluYy4KLTAwMDI1NiAgICAgKGJhc2UgMTYpCQlBbHBoYSBQcm9jZXNzb3IsIEluYy4KLQkJCQkxMzAgQyBCYWtlciBBdmUuIEV4dC4KLQkJCQlDb25jb3JkIE1BIDAxNzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01NyAgIChoZXgpCQlNaWNyb2NvbSBDb3JwLgotMDAwMjU3ICAgICAoYmFzZSAxNikJCU1pY3JvY29tIENvcnAuCi0JCQkJODMzM0EgR3JlZW4gTWVhZG93cyBEci4gTi4KLQkJCQlXZXN0ZXJ2aWxsZSBPSCA0MzA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTggICAoaGV4KQkJRmx5aW5nIFBhY2tldHMgQ29tbXVuaWNhdGlvbnMKLTAwMDI1OCAgICAgKGJhc2UgMTYpCQlGbHlpbmcgUGFja2V0cyBDb21tdW5pY2F0aW9ucwotCQkJCTM4OCBNYXJrZXQgU3RyZWV0Ci0JCQkJU3VpdGUgMzgwCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTkgICAoaGV4KQkJVHNhbm4gS3VlbiBDaGluYSAoU2hhbmdoYWkpRW50ZXJwcmlzZSBDby4sIEx0ZC4gSVQgR3JvdXAKLTAwMDI1OSAgICAgKGJhc2UgMTYpCQlUc2FubiBLdWVuIENoaW5hIChTaGFuZ2hhaSlFbnRlcnByaXNlIENvLiwgTHRkLiBJVCBHcm91cAotCQkJCThGLCAjOTksIEh1YWloYWkgUmQsIEVhc3QsCi0JCQkJU2hhbmdoYWksCi0JCQkJQ0hJTkEgMjAwMDIxCi0JCQkJQ0hJTkEKLQotMDAtMDItNUEgICAoaGV4KQkJQ2F0ZW5hIE5ldHdvcmtzCi0wMDAyNUEgICAgIChiYXNlIDE2KQkJQ2F0ZW5hIE5ldHdvcmtzCi0JCQkJMzA3IExlZ2dldCBEcml2ZQotCQkJCUthbmF0YSBPbnRhcmlvCi0JCQkJQ2FuYWRhIEsySyAzQzgKLQkJCQlDQU5BREEKLQotMDAtMDItNUIgICAoaGV4KQkJQ2FtYnJpZGdlIFNpbGljb24gUmFkaW8KLTAwMDI1QiAgICAgKGJhc2UgMTYpCQlDYW1icmlkZ2UgU2lsaWNvbiBSYWRpbwotCQkJCVVuaXQgNDAwLCBTY2llbmNlIFBhcmssCi0JCQkJTWlsdG9uIFJvYWQsIENhbWJyaWRnZSxDQjQgT1hMCi0JCQkJVW5pdGVkIEtpbmdkb20KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi01QyAgIChoZXgpCQlTQ0kgU3lzdGVtcyAoS3Vuc2hhbikgQ28uLCBMdGQuCi0wMDAyNUMgICAgIChiYXNlIDE2KQkJU0NJIFN5c3RlbXMgKEt1bnNoYW4pIENvLiwgTHRkLgotCQkJCTMxMiBRSU5HIFlBTkcgUk9BRAotCQkJCUtVTlNIQU4sIEpJQU5HU1UgUFJPVklDQwotCQkJCUNISU5BIENISU5BIDIxNTMwMAotCQkJCUNISU5BCi0KLTAwLTAyLTVEICAgKGhleCkJCUNhbGl4IE5ldHdvcmtzCi0wMDAyNUQgICAgIChiYXNlIDE2KQkJQ2FsaXggTmV0d29ya3MKLQkJCQkxMDM1IE5vcnRoIE1jRG93ZWxsIEJsdmQuCi0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTVFICAgKGhleCkJCUhpZ2ggVGVjaG5vbG9neSBMdGQKLTAwMDI1RSAgICAgKGJhc2UgMTYpCQlIaWdoIFRlY2hub2xvZ3kgTHRkCi0JCQkJQ2hvbmdxaW5nIEppbmdob25nCi0JCQkJQTItMTAtMyBDYWxpZm9ybmlhIEdhcmRlbiBZdWJlaSBEaXN0cmljdAotCQkJCVBlb3BsZSdzIFJlcHVibGljIG9mIENoaW5hCi0JCQkJQ0hJTkEKLQotMDAtMDItNUYgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDAyNUYgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJOTMwMCB0cmFucy1DQU5BREEgSGlnaHdheQotCQkJCVN0LiBMYXVyZW5ldCwgUXVlYmVjCi0JCQkJSDRTIDFLUyBDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDItNjAgICAoaGV4KQkJQWNjb3JkaW9uIE5ldHdvcmtzLCBJbmMuCi0wMDAyNjAgICAgIChiYXNlIDE2KQkJQWNjb3JkaW9uIE5ldHdvcmtzLCBJbmMuCi0JCQkJMzk4OTkgQmFsZW50aW5lIERyaXZlLCAjMzM1Ci0JCQkJTmV3YXJrIENBIDk0NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi02MSAgIChoZXgpCQlUaWxnaW4gQUIKLTAwMDI2MSAgICAgKGJhc2UgMTYpCQlUaWxnaW4gQUIKLQkJCQlGaW5sYW5kc2dhdGFuIDQwCi0JCQkJU0UtMTY0IDc0IEtpc3RhCi0JCQkJU1dFREVOCi0KLTAwLTAyLTYyICAgKGhleCkJCVNveW8gR3JvdXAgU295byBDb20gVGVjaCBDby4sIEx0ZAotMDAwMjYyICAgICAoYmFzZSAxNikJCVNveW8gR3JvdXAgU295byBDb20gVGVjaCBDby4sIEx0ZAotCQkJCTVILiBOby4gMjEgV3UtZ29uZyA1IFJkLAotCQkJCUhzaW5nIENodWFuZywKLQkJCQlUYWlwZWkgSHNpZW4gVGFpd2FuIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItNjMgICAoaGV4KQkJVVBTIE1hbnVmYWN0dXJpbmcgU1JMCi0wMDAyNjMgICAgIChiYXNlIDE2KQkJVVBTIE1hbnVmYWN0dXJpbmcgU1JMCi0JCQkJVmlhIEdpb3JkYW5vLCA1NAotCQkJCTM3MDUwIFZhbGxlc2UgRGkgT3BwZWFubwotCQkJCVZlcm9uYSBJdGFseQotCQkJCUlUQUxZCi0KLTAwLTAyLTY0ICAgKGhleCkJCUF1ZGlvUmFtcC5jb20KLTAwMDI2NCAgICAgKGJhc2UgMTYpCQlBdWRpb1JhbXAuY29tCi0JCQkJMTU5NDEgUmVkIEhpbGwgU3VpdGUgMjA1Ci0JCQkJVHVzdGluIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi02NSAgIChoZXgpCQlWaXJkaXRlY2ggQ28uIEx0ZC4KLTAwMDI2NSAgICAgKGJhc2UgMTYpCQlWaXJkaXRlY2ggQ28uIEx0ZC4KLQkJCQlIeXVuZGFpIFRvcGljcyBCbGdkLiwgMTF0aCBGbAotCQkJCTQ0LTMgUGFuZ2ktZG9uZywgU29uZ3BhLUd1Ci0JCQkJU2VvdWwgU2VvdWwgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItNjYgICAoaGV4KQkJVGhlcm1hbG9naWMgQ29ycG9yYXRpb24KLTAwMDI2NiAgICAgKGJhc2UgMTYpCQlUaGVybWFsb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTIyIEthbmUgSW5kdXN0cmlhbCBEcml2ZQotCQkJCUh1ZHNvbiBNQSAwMTc0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNjcgICAoaGV4KQkJTk9ERSBSVU5ORVIsIElOQy4KLTAwMDI2NyAgICAgKGJhc2UgMTYpCQlOT0RFIFJVTk5FUiwgSU5DLgotCQkJCTIyMDIgTi4gRk9SQkVTIEJMVkQuCi0JCQkJVFVDU09OIEFaIDg1NzQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi02OCAgIChoZXgpCQlIYXJyaXMgR292ZXJubWVudCBDb21tdW5pY2F0aW9ucwotMDAwMjY4ICAgICAoYmFzZSAxNikJCUhhcnJpcyBHb3Zlcm5tZW50IENvbW11bmljYXRpb25zCi0JCQkJU3lzdGVtcyBEaXZpc2lvbgotCQkJCVAuTy4gQm94IDM3IE1TOiAxLTU4NTYKLQkJCQlNZWxib3VybmUgRkwgMzI5MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTY5ICAgKGhleCkJCU5hZGF0ZWwgQ28uLCBMdGQKLTAwMDI2OSAgICAgKGJhc2UgMTYpCQlOYWRhdGVsIENvLiwgTHRkCi0JCQkJOUYgQ29XZWxsIEJsZGcsIDY2LTEgQmFucG8tRG9uZwotCQkJCVNlb2Noby1HdSwgU2VvdWwsCi0JCQkJS09SRUEgMTM3LTA0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi02QSAgIChoZXgpCQlDb2Nlc3MgVGVsZWNvbSBDby4sIEx0ZC4KLTAwMDI2QSAgICAgKGJhc2UgMTYpCQlDb2Nlc3MgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQlSZXNlYXJjaCAmIERldmVsb3BtZW50IERlcHQuCi0JCQkJNDMsIFlvaWRvLURvbmcsIFlvdW5nZGV1bmdwby1LdQotCQkJCVNlb3VsIFNlb3VsIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTZCICAgKGhleCkJCUJDTSBDb21wdXRlcnMgQ28uLCBMdGQuCi0wMDAyNkIgICAgIChiYXNlIDE2KQkJQkNNIENvbXB1dGVycyBDby4sIEx0ZC4KLQkJCQk0Ri0xLCBOby4gNjYsIFNlYyAyLAotCQkJCU5hbiBLYW4gUmQuLCBMdS1DaHUgSHNpbmcsIFRhbyBZdWFuCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTZDICAgKGhleCkJCVBoaWxpcHMgQ0ZUCi0wMDAyNkMgICAgIChiYXNlIDE2KQkJUGhpbGlwcyBDRlQKLQkJCQlCdWlsZGluZyBTQU4gNgotCQkJCVAuTy4gQm94IDIxOCA1NjAwIE1EIEVpbmRob3ZlbgotCQkJCVRoZSBOZXRoZXJsYW5kcwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTAyLTZEICAgKGhleCkJCUFkZXB0IFRlbGVjb20KLTAwMDI2RCAgICAgKGJhc2UgMTYpCQlBZGVwdCBUZWxlY29tCi0JCQkJQXZlbnVlIGRlIGwnRXVyb3BlCi0JCQkJQlAgMTYxIEYtNzEyMDQgTGUgQ3JldXNvdCBDZWRleAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMi02RSAgIChoZXgpCQlOZUdlTiBBY2Nlc3MsIEluYy4KLTAwMDI2RSAgICAgKGJhc2UgMTYpCQlOZUdlTiBBY2Nlc3MsIEluYy4KLQkJCQkzMyBCb3N0b24gUG9zdCBSZC4gV2VzdAotCQkJCVN1aXRlIDM2MAotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi02RiAgIChoZXgpCQlTZW5hbyBJbnRlcm5hdGlvbmFsIENvLiwgTHRkLgotMDAwMjZGICAgICAoYmFzZSAxNikJCVNlbmFvIEludGVybmF0aW9uYWwgQ28uLCBMdGQuCi0JCQkJMkYsIE5vLiA1MzEsIENodW5nLUNoZW5nIFJkLiwKLQkJCQlIc2luLVRpZW4gQ2l0eSwgVGFpcGVpIENvdW50eSwKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTcwICAgKGhleCkJCUNyZXdhdmUgQ28uLCBMdGQuCi0wMDAyNzAgICAgIChiYXNlIDE2KQkJQ3Jld2F2ZSBDby4sIEx0ZC4KLQkJCQlGNywgUHVyZXVuIEJsZGcuLCAyOC0xCi0JCQkJSmFtd29uLWRvbmcsIFNlb2Noby1ndQotCQkJCVNlb3VsIEtPUkVBIDEzNy0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItNzEgICAoaGV4KQkJWmhvbmUgVGVjaG5vbG9naWVzCi0wMDAyNzEgICAgIChiYXNlIDE2KQkJWmhvbmUgVGVjaG5vbG9naWVzCi0JCQkJNzAwMSBPYWtwb3J0IFN0cmVldAotCQkJCU9ha2xhbmQgQ0EgOTQ2MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTcyICAgKGhleCkJCUNDJkMgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDAyNzIgICAgIChiYXNlIDE2KQkJQ0MmQyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4RiwgMTUwLCBDaGllbiBJIFJkLiwgQ2h1bmcgSG8gQ2l0eSwKLQkJCQlUYWlwZWkgQ291bnR5IDIzNSBUYWl3YW4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi03MyAgIChoZXgpCQlDb3Jpb2xpcyBOZXR3b3JrcwotMDAwMjczICAgICAoYmFzZSAxNikJCUNvcmlvbGlzIE5ldHdvcmtzCi0JCQkJMzMwIENvZG1hbmhpbGwgUm9hZAotCQkJCUJveGJvcm91Z2ggTUEgMDE3MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTc0ICAgKGhleCkJCVRvbW15IFRlY2hub2xvZ2llcyBDb3JwLgotMDAwMjc0ICAgICAoYmFzZSAxNikJCVRvbW15IFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCSM0MDcgSGVlaG9vbiBCbGQKLQkJCQkxMTAtMSBLdXJvLWRvbmcsIEt1cm8ta3UKLQkJCQlTZW91bCBTZW91bCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi03NSAgIChoZXgpCQlTTUFSVCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDI3NSAgICAgKGJhc2UgMTYpCQlTTUFSVCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkzNjM2IFJlc2VhcmNoICBSb2FkIE5XCi0JCQkJQ2FsZ2FyeSwgQWxiZXJ0YSAgVDJMMVkxCi0JCQkJQ0FOQURBCi0KLTAwLTAyLTc2ICAgKGhleCkJCVByaW1heCBFbGVjdHJvbmljcyBMdGQuCi0wMDAyNzYgICAgIChiYXNlIDE2KQkJUHJpbWF4IEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQlOby4gNjY5LCBSdWV5IEt1YW5nIFJvYWQsIE5laWh1Ci0JCQkJVGFpcGVpIFRhaXdhbiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi03NyAgIChoZXgpCQlDYXNoIFN5c3RlbWVzIEluZHVzdHJpZQotMDAwMjc3ICAgICAoYmFzZSAxNikJCUNhc2ggU3lzdGVtZXMgSW5kdXN0cmllCi0JCQkJVGVjaG5vcGFyYyBFcHNpbG9uCi0JCQkJUmQgMTAwIDgzNzAwIFN0IFJhcGhhZWwKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDItNzggICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvLU1lY2hhbmljcyBDby4sIEx0ZC4KLTAwMDI3OCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm8tTWVjaGFuaWNzIENvLiwgTHRkLgotCQkJCTMxNCwgTWFlLXRhbi1kb25nLAotCQkJCVBhaS1kYWwtZ3UsIEt5b3VuZy1naS1kbywKLQkJCQlTdXdvbiBTdXdvbiBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi03OSAgIChoZXgpCQlDb250cm9sIEFwcGxpY2F0aW9ucywgTHRkLgotMDAwMjc5ICAgICAoYmFzZSAxNikJCUNvbnRyb2wgQXBwbGljYXRpb25zLCBMdGQuCi0JCQkJMyBUZXZ1b3QgSGFhcmV0cyBTdC4KLQkJCQlUZWwtQXZpdiA2OTU0NgotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wMi03QSAgIChoZXgpCQlJT0kgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwMjdBICAgICAoYmFzZSAxNikJCUlPSSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYtMyBOby4gMTI1IExhbmUgMjM1LAotCQkJCVBhbyBDaGlhbyBSb2FkIEhzaW4gVGllbiBDaXR5LAotCQkJCVRhaXBlaSBUQUlXQU4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItN0IgICAoaGV4KQkJQW1wbGlmeSBOZXQsIEluYy4KLTAwMDI3QiAgICAgKGJhc2UgMTYpCQlBbXBsaWZ5IE5ldCwgSW5jLgotCQkJCTQ3MzgxIEJheXNpZGUgUGFya3dheQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTdDICAgKGhleCkJCVRyaWxpdGhpYywgSW5jLgotMDAwMjdDICAgICAoYmFzZSAxNikJCVRyaWxpdGhpYywgSW5jLgotCQkJCTkyMDIgRS4gMzNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTdEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDI3RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi03RSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyN0UgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItN0YgICAoaGV4KQkJYXNrLXRlY2hub2xvZ2llcy5jb20KLTAwMDI3RiAgICAgKGJhc2UgMTYpCQlhc2stdGVjaG5vbG9naWVzLmNvbQotCQkJCTM2IFdlbGxpbmd0b24gQnVzaW5lc3MgUGFyawotCQkJCUR1a2VzIFJpZGUsIENyb3d0aG9ybmUgQmVya3NoaXJlIFJHNDUgNkwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi04MCAgIChoZXgpCQlNdSBOZXQsIEluYy4KLTAwMDI4MCAgICAgKGJhc2UgMTYpCQlNdSBOZXQsIEluYy4KLQkJCQk0NDIgTWFycmV0dCBSb2FkCi0JCQkJU3VpdGUgOQotCQkJCUxleGluZ3RvbiBNQSAwMjQyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItODEgICAoaGV4KQkJTWFkZ2UgTHRkLgotMDAwMjgxICAgICAoYmFzZSAxNikJCU1hZGdlIEx0ZC4KLQkJCQlNYWRnZSBIb3VzZQotCQkJCVByaW9ycyBXYXkKLQkJCQlNYWluZGVuaGVhZCBCZXJrc2hpcmUgU0w2IDJIUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLTgyICAgKGhleCkJCVZpYUNsaXgsIEluYy4KLTAwMDI4MiAgICAgKGJhc2UgMTYpCQlWaWFDbGl4LCBJbmMuCi0JCQkJMTQwMCBEZWxsIEF2ZS4sIFN1aXRlIEIKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItODMgICAoaGV4KQkJU3BlY3RydW0gQ29udHJvbHMsIEluYy4KLTAwMDI4MyAgICAgKGJhc2UgMTYpCQlTcGVjdHJ1bSBDb250cm9scywgSW5jLgotCQkJCVBPIEJveCA1NTMzCi0JCQkJQmVsbGV2dWUgV0EgOTgwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTg0ICAgKGhleCkJCUFSRVZBIFQmRAotMDAwMjg0ICAgICAoYmFzZSAxNikJCUFSRVZBIFQmRAotCQkJCUF2ZW51ZSBkZSBGaWd1aWVyZXMgQlAgNzUKLQkJCQkzNDk3NSBMQVRURVMgQ2VkZXgKLQkJCQlGUkFOQ0UKLQotMDAtMDItODUgICAoaGV4KQkJUml2ZXJzdG9uZSBOZXR3b3JrcwotMDAwMjg1ICAgICAoYmFzZSAxNikJCVJpdmVyc3RvbmUgTmV0d29ya3MKLQkJCQk1MjAwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi04NiAgIChoZXgpCQlPY2NhbSBOZXR3b3JrcwotMDAwMjg2ICAgICAoYmFzZSAxNikJCU9jY2FtIE5ldHdvcmtzCi0JCQkJNDE4MyBTdGF0ZSBTdHJlZXQKLQkJCQlTYW50YSBCYXJiYXJhIENBIDkzMTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi04NyAgIChoZXgpCQlBZGFwY29tCi0wMDAyODcgICAgIChiYXNlIDE2KQkJQWRhcGNvbQotCQkJCTE3Mi1BIENvbXBvbmVudCBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi04OCAgIChoZXgpCQlHTE9CQUwgVklMTEFHRSBDT01NVU5JQ0FUSU9OCi0wMDAyODggICAgIChiYXNlIDE2KQkJR0xPQkFMIFZJTExBR0UgQ09NTVVOSUNBVElPTgotCQkJCTExNDQgRUFTVCBBUlFVRVMgQVZFLgotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItODkgICAoaGV4KQkJRE5FIFRlY2hub2xvZ2llcwotMDAwMjg5ICAgICAoYmFzZSAxNikJCURORSBUZWNobm9sb2dpZXMKLQkJCQk1MCBCYXJuZXMgUGFyayBOCi0JCQkJV2FsbGluZ2ZvcmQgQ1QgMDY0OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLThBICAgKGhleCkJCUFtYml0IE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbgotMDAwMjhBICAgICAoYmFzZSAxNikJCUFtYml0IE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbgotCQkJCTVGLTEsIDUgSHNpbi1BbiBSb2FkIEhzaW5jaHUsCi0JCQkJU2NpZW5jZSBCYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi04QiAgIChoZXgpCQlWRFNMIFN5c3RlbXMgT1kKLTAwMDI4QiAgICAgKGJhc2UgMTYpCQlWRFNMIFN5c3RlbXMgT1kKLQkJCQlUZWtuaWlrYW50aWUgMTIKLQkJCQkwMiAxNTAgRXNwb28KLQkJCQlGSU5MQU5ECi0JCQkJRklOTEFORAotCi0wMC0wMi04QyAgIChoZXgpCQlNaWNyZWwtU3luZXJneSBTZW1pY29uZHVjdG9yCi0wMDAyOEMgICAgIChiYXNlIDE2KQkJTWljcmVsLVN5bmVyZ3kgU2VtaWNvbmR1Y3RvcgotCQkJCTMyNTAgU2NvdHQgQm91bGV2YXJkCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLThEICAgKGhleCkJCU1vdml0YSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDI4RCAgICAgKGJhc2UgMTYpCQlNb3ZpdGEgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJTm8uIDI2IFd1LUNodWFuIDd0aCBSb2FkLAotCQkJCVd1LUt1IEluZHVzdHJpYWwgUGFyawotCQkJCVRhaXBlaSBUYWl3YW4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItOEUgICAoaGV4KQkJUmFwaWQgNSBOZXR3b3JrcywgSW5jLgotMDAwMjhFICAgICAoYmFzZSAxNikJCVJhcGlkIDUgTmV0d29ya3MsIEluYy4KLQkJCQkxODAgQmF5dGVjaCBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0LTIzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLThGICAgKGhleCkJCUdsb2JldGVrLCBJbmMuCi0wMDAyOEYgICAgIChiYXNlIDE2KQkJR2xvYmV0ZWssIEluYy4KLQkJCQkxNjA3IEFrcm9uIFBlbmluc3VsYSBSZC4KLQkJCQlTdWl0ZSAxMDMKLQkJCQlBa3JvbiBPSCA0NDMxMy01MTkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi05MCAgIChoZXgpCQlXb29yaWdpc29vbCwgSW5jLgotMDAwMjkwICAgICAoYmFzZSAxNikJCVdvb3JpZ2lzb29sLCBJbmMuCi0JCQkJWW9vcG9vbmcgQmxkZy4KLQkJCQkxNTk1LTEsIEJvbmdjaHVtLTdkb25nLAotCQkJCVNlb3VsIFNlb3VsIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTkxICAgKGhleCkJCU9wZW4gTmV0d29yayBDby4sIEx0ZC4KLTAwMDI5MSAgICAgKGJhc2UgMTYpCQlPcGVuIE5ldHdvcmsgQ28uLCBMdGQuCi0JCQkJU2Vpc2hpbiBCbGRnLiwgMi01LTEwIFNoaW5qdWt1Ci0JCQkJU2hpbmp1a3Uta3UsIFRva3lvCi0JCQkJSkFQQU4gMTYwLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0wMi05MiAgIChoZXgpCQlMb2dpYyBJbm5vdmF0aW9ucywgSW5jLgotMDAwMjkyICAgICAoYmFzZSAxNikJCUxvZ2ljIElubm92YXRpb25zLCBJbmMuCi0JCQkJNjIwNSBMdXNrIEJsdmQuCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxLTI3MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTkzICAgKGhleCkJCVNvbGlkIERhdGEgU3lzdGVtcwotMDAwMjkzICAgICAoYmFzZSAxNikJCVNvbGlkIERhdGEgU3lzdGVtcwotCQkJCTI5NDUgT2FrbWVhZCBWaWxsYWdlIENvdXJ0Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTk0ICAgKGhleCkJCVRva3lvIFNva3VzaGluIENvLiwgTHRkLgotMDAwMjk0ICAgICAoYmFzZSAxNikJCVRva3lvIFNva3VzaGluIENvLiwgTHRkLgotCQkJCTUtMTYtMTIgTmlzaGktTmlwcG9yaQotCQkJCUFyYWthd2Eta3UsIFRva3lvIDExNi0wMDEzCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMi05NSAgIChoZXgpCQlJUC5BY2Nlc3MgTGltaXRlZAotMDAwMjk1ICAgICAoYmFzZSAxNikJCUlQLkFjY2VzcyBMaW1pdGVkCi0JCQkJTWVsYm91cm4gU2NpZW5jZSBQYXJrCi0JCQkJQ2FtYnJpZGdlIFJvYWQsIE1lbGJvdXJuIFJveXN0b24sIEhhcnRmbwotCQkJCVNHOCA2RUUgU0c4IDZFRSBVLksuCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItOTYgICAoaGV4KQkJTGVjdHJvbiBDbywuIEx0ZC4KLTAwMDI5NiAgICAgKGJhc2UgMTYpCQlMZWN0cm9uIENvLC4gTHRkLgotCQkJCTlGLCBOby4xNzEsIFNlYy4gMiwgVGF0dW5nIFJkLiwKLQkJCQlIc2ljaGloIENpdHksIFRhaXBlaSBIc2llbiAyMjEsCi0JCQkJVGFpd2FuIFRhaXdhbiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTk3ICAgKGhleCkJCUMtQ09SLm5ldAotMDAwMjk3ICAgICAoYmFzZSAxNikJCUMtQ09SLm5ldAotCQkJCTYwIERlY2liZWwgUm9hZAotCQkJCUJNUyBFbmdpbmVlcmluZwotCQkJCVN0YXRlIENvbGxlZ2UgUEEgMTY4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTk4ICAgKGhleCkJCUJyb2FkZnJhbWUgQ29ycG9yYXRpb24KLTAwMDI5OCAgICAgKGJhc2UgMTYpCQlCcm9hZGZyYW1lIENvcnBvcmF0aW9uCi0JCQkJNTgyOCBNb29uc3RvbmUgQXZlLgotCQkJCVN1aXRlIDIyMAotCQkJCUFsdGEgTG9tYSBDQSA5MTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItOTkgICAoaGV4KQkJQXBleCwgSW5jLgotMDAwMjk5ICAgICAoYmFzZSAxNikJCUFwZXgsIEluYy4KLQkJCQk5OTExIFdpbGxvd3MgUmQuIE4uRS4KLQkJCQlSZWRtb25kIFdBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi05QSAgIChoZXgpCQlTdG9yYWdlIEFwcHMKLTAwMDI5QSAgICAgKGJhc2UgMTYpCQlTdG9yYWdlIEFwcHMKLQkJCQkzIFByaW5jZXNzIFJvYWQKLQkJCQlMYXdyZW5jZXZpbGxlIE5KIDA4NjQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi05QiAgIChoZXgpCQlLcmVhdGVsIENvbW11bmljYXRpb25zIEFCCi0wMDAyOUIgICAgIChiYXNlIDE2KQkJS3JlYXRlbCBDb21tdW5pY2F0aW9ucyBBQgotCQkJCVRla25pa3JpbmdlbiA0QwotCQkJCVNFLTU4MzMwIExpbmtvcGluZwotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC0wMi05QyAgIChoZXgpCQkzQ09NCi0wMDAyOUMgICAgIChiYXNlIDE2KQkJM0NPTQotCQkJCTQwNSBTUFJJTkcgSElMTCBST0FECi0JCQkJU0hBUk9OIE5IIDAzNDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi05RCAgIChoZXgpCQlNZXJpeCBDb3JwLgotMDAwMjlEICAgICAoYmFzZSAxNikJCU1lcml4IENvcnAuCi0JCQkJSmluLVN1IEJ1aWxkaW5nLCA0OS0xNgotCQkJCU1hY2h1bS1Eb25nLCBTb25nLVBhLWt1Ci0JCQkJU2VvdWwgU2VvdWwgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItOUUgICAoaGV4KQkJSW5mb3JtYXRpb24gRXF1aXBtZW50IENvLiwgTHRkLgotMDAwMjlFICAgICAoYmFzZSAxNikJCUluZm9ybWF0aW9uIEVxdWlwbWVudCBDby4sIEx0ZC4KLQkJCQk3NDAtMSBFYWhvIEJsZGcuLCBZZW9rIFNhbS1Eb25nCi0JCQkJS2FuZ25hbS1rdQotCQkJCVNlb3VsIEtvcmVhICMxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTlGICAgKGhleCkJCUwtMyBDb21tdW5pY2F0aW9uIEF2aWF0aW9uIFJlY29yZGVycwotMDAwMjlGICAgICAoYmFzZSAxNikJCUwtMyBDb21tdW5pY2F0aW9uIEF2aWF0aW9uIFJlY29yZGVycwotCQkJCVAuTy4gQm94IDMwNDEKLQkJCQlTYXJhc290YSBGTCAzNDIzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQTAgICAoaGV4KQkJRmxhdHN0YWNrIEx0ZC4KLTAwMDJBMCAgICAgKGJhc2UgMTYpCQlGbGF0c3RhY2sgTHRkLgotCQkJCTExMTIgQnVkYXBlc3QKLQkJCQlQZXRlcmhlZ3lpIFVUIDk4Ci0JCQkJSFVOR0FSWQotCQkJCUhVTkdBUlkKLQotMDAtMDItQTEgICAoaGV4KQkJV29ybGQgV2lkZSBQYWNrZXRzCi0wMDAyQTEgICAgIChiYXNlIDE2KQkJV29ybGQgV2lkZSBQYWNrZXRzCi0JCQkJUE8gQm94IDE0NjQ1Ci0JCQkJU3Bva2FuZSBXQSA5OTIxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQTIgICAoaGV4KQkJSGlsc2NoZXIgR21iSAotMDAwMkEyICAgICAoYmFzZSAxNikJCUhpbHNjaGVyIEdtYkgKLQkJCQlSaGVpbnN0cmHfZSAxNQotCQkJCTY1Nzk1IEhhdHRlcnNoZWltCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDItQTMgICAoaGV4KQkJQUJCIFN3aXR6ZXJsYW5kIEx0ZCwgUG93ZXIgU3lzdGVtcwotMDAwMkEzICAgICAoYmFzZSAxNikJCUFCQiBTd2l0emVybGFuZCBMdGQsIFBvd2VyIFN5c3RlbXMKLQkJCQlCcnVnZ2Vyc3RyYXNzZSA3MgotCQkJCUNILTU0MDAKLQkJCQlCYWRlbiAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDItQTQgICAoaGV4KQkJQWRkUGFjIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDAyQTQgICAgIChiYXNlIDE2KQkJQWRkUGFjIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJM0YgSmVvdW5nIEFtIEJsZGcuLCA3NjktMTIKLQkJCQlZZW9rc2FtLWRvbmcsIEthbmduYW0tZ3UsCi0JCQkJU2VvdWwgU2VvdWwgS29yZWEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItQTUgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDAyQTUgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUE2ICAgKGhleCkJCUVmZmluZXQgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDJBNiAgICAgKGJhc2UgMTYpCQlFZmZpbmV0IFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJWXVnb25nIEJsZGcuIDUwMgotCQkJCTExNDQtMSwgU2FuYm9uLURvbmcgS3VucG8tc2hpLCBLeW9uZ2dpLUQKLQkJCQlLb3JlYQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1BNyAgIChoZXgpCQlWaXZhY2UgTmV0d29ya3MKLTAwMDJBNyAgICAgKGJhc2UgMTYpCQlWaXZhY2UgTmV0d29ya3MKLQkJCQkyNzMwIE9yY2hhcmQgUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1BOCAgIChoZXgpCQlBaXIgTGluayBUZWNobm9sb2d5Ci0wMDAyQTggICAgIChiYXNlIDE2KQkJQWlyIExpbmsgVGVjaG5vbG9neQotCQkJCUJldGhlbCBCbGRnLiAzMDMKLQkJCQkzMjQtMSBZYW5namVlLURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsIEtPUkVBIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItQTkgICAoaGV4KQkJUkFDT00sIHMuci5vLgotMDAwMkE5ICAgICAoYmFzZSAxNikJCVJBQ09NLCBzLnIuby4KLQkJCQlNaXJvdmEgMTI4MywgTm92ZSBNZXN0byBuYSBNb3JhdmUKLQkJCQk1OTIgMzEgQ3plY2ggcmVwdWJsaWMKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0wMi1BQSAgIChoZXgpCQlQTGNvbSBDby4sIEx0ZC4KLTAwMDJBQSAgICAgKGJhc2UgMTYpCQlQTGNvbSBDby4sIEx0ZC4KLQkJCQlIb3N1bmcgQi9ELCAjMTA4My0xLCBIb2d5ZS1Eb25nCi0JCQkJRG9uZ2FuLUt1LCBBbnlhbmctQ2l0eQotCQkJCVNvdXRoIEtvcmVhCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUFCICAgKGhleCkJCUNUQyBVbmlvbiBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDAyQUIgICAgIChiYXNlIDE2KQkJQ1RDIFVuaW9uIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQk4RiBOby4gNjAgWmhvdXppIFN0LgotCQkJCU5laWh1IFRhaXBlaSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLUFDICAgKGhleCkJCTNQQVIgZGF0YQotMDAwMkFDICAgICAoYmFzZSAxNikJCTNQQVIgZGF0YQotCQkJCTQyMDkgVGVjaG5vbG9neSBEcml2ZQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUFEICAgKGhleCkJCUhPWUEgQ29ycG9yYXRpb24KLTAwMDJBRCAgICAgKGJhc2UgMTYpCQlIT1lBIENvcnBvcmF0aW9uCi0JCQkJMi03LTUgTmFrYS1PY2hpYWksIFNoaW5qdWt1LWt1LAotCQkJCVRva3lvIDE2MS04NTI1Ci0JCQkJSkFQQU4KLQotMDAtMDItQUUgICAoaGV4KQkJU2Nhbm5leCBFbGVjdHJvbmljcyBMdGQuCi0wMDAyQUUgICAgIChiYXNlIDE2KQkJU2Nhbm5leCBFbGVjdHJvbmljcyBMdGQuCi0JCQkJVW5pdCA4IEVuZ2xpc2ggQnVzaW5lc3MgUGFyawotCQkJCUVuZ2xpc2ggQ2xvc2UKLQkJCQlIb3ZlICBCTjMgN0VUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItQUYgICAoaGV4KQkJVGVsZUNydXogVGVjaG5vbG9neSwgSW5jLgotMDAwMkFGICAgICAoYmFzZSAxNikJCVRlbGVDcnV6IFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyMzkxIFF1bWUgRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUIwICAgKGhleCkJCUhva3VidSBDb21tdW5pY2F0aW9uICYgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMDJCMCAgICAgKGJhc2UgMTYpCQlIb2t1YnUgQ29tbXVuaWNhdGlvbiAmIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJRnVzaGlvZ2FtaS1hemEtb2tpIDI3LTEKLQkJCQlGdWt1c2hpbWEgIDk2MC04NTE0Ci0JCQkJSkFQQU4KLQotMDAtMDItQjEgICAoaGV4KQkJQW5yaXRzdSwgTHRkLgotMDAwMkIxICAgICAoYmFzZSAxNikJCUFucml0c3UsIEx0ZC4KLQkJCQlSdXRoZXJmb3JkIENsb3NlCi0JCQkJU3RldmVuYWdlLCBIZXJ0cyBFbmdsYW5kLCBTRzEyRUYKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLUIyICAgKGhleCkJCUNhYmxldmlzaW9uCi0wMDAyQjIgICAgIChiYXNlIDE2KQkJQ2FibGV2aXNpb24KLQkJCQk0MjAgQ3Jvc3N3YXlzIFBhcmsgRHJpdmUgV2VzdAotCQkJCVdvb2RidXJ5IE5ZIDExNzg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1CMyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAwMkIzICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTS9TOiAgSkYzLTQyMAotCQkJCTIxMTEgTi5FLiAyNXRoIEF2ZS4KLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUI0ICAgKGhleCkJCURBUEhORQotMDAwMkI0ICAgICAoYmFzZSAxNikJCURBUEhORQotCQkJCTEwMSBDaGF1c3NlZSBEZSBCaW5jaGUKLQkJCQk3MDAwIEhvbnMKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC0wMi1CNSAgIChoZXgpCQlBdm5ldCwgSW5jLgotMDAwMkI1ICAgICAoYmFzZSAxNikJCUF2bmV0LCBJbmMuCi0JCQkJMjIxMSBTLiA0N3RoIFN0cmVldAotCQkJCVBob2VuaXggQVogODUwMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUI2ICAgKGhleCkJCUFjcm9zc2VyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDAyQjYgICAgIChiYXNlIDE2KQkJQWNyb3NzZXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMTE2LTIgR3VhbmctRnUgUmQuCi0JCQkJU2VhIDEsIFNhbiBDaHVuZywKLQkJCQlUYWlwZWkgVGFpcGVpIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItQjcgICAoaGV4KQkJV2F0YW5hYmUgRWxlY3RyaWMgSW5kdXN0cnkgQ28uLCBMdGQuCi0wMDAyQjcgICAgIChiYXNlIDE2KQkJV2F0YW5hYmUgRWxlY3RyaWMgSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJNi0xNi0xOSwgSmluZ3VtYWUsIFNoaWJ1eWEta3UKLQkJCQlUb2t5byAxNTAtMDAwMSwKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAyLUI4ICAgKGhleCkJCVdISSBLT05TVUxUIEFCCi0wMDAyQjggICAgIChiYXNlIDE2KQkJV0hJIEtPTlNVTFQgQUIKLQkJCQlTY2hlZWxlZ2F0YW4gMTEKLQkJCQkxMjA0MCBBcnN0YQotCQkJCVN0b2NraG9sbSBTRS0xMTIgMjgKLQkJCQlTV0VERU4KLQotMDAtMDItQjkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMkI5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUJBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDJCQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1CQiAgIChoZXgpCQlDb250aW51b3VzIENvbXB1dGluZyBDb3JwCi0wMDAyQkIgICAgIChiYXNlIDE2KQkJQ29udGludW91cyBDb21wdXRpbmcgQ29ycAotCQkJCTkzODAgQ2Fycm9sbCBQYXJrIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1CQyAgIChoZXgpCQlMVkwgNyBTeXN0ZW1zLCBJbmMuCi0wMDAyQkMgICAgIChiYXNlIDE2KQkJTFZMIDcgU3lzdGVtcywgSW5jLgotCQkJCTEzMDAwIFdlc3RvbiBQa3d5Ci0JCQkJU3VpdGUgMTA1Ci0JCQkJQ2FyeSBOQyAyNzUxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQkQgICAoaGV4KQkJQmlvbmV0IENvLiwgTHRkLgotMDAwMkJEICAgICAoYmFzZSAxNikJCUJpb25ldCBDby4sIEx0ZC4KLQkJCQkzRiwgTWVkaXNvbiBWZW50dXJlIFRvd2VyLAotCQkJCTk5Ny00LCBEYWVjaGktZG9uZywgS2FuZ25hbS1ndSwgU2VvdWwsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItQkUgICAoaGV4KQkJVG90c3UgRW5naW5lZXJpbmcsIEluYy4KLTAwMDJCRSAgICAgKGJhc2UgMTYpCQlUb3RzdSBFbmdpbmVlcmluZywgSW5jLgotCQkJCSA1LTE2LTIwIFJvcHBvbmdpIE1pbmF0by1rdQotCQkJCVppcDogIDEwNi0wMDMyCi0JCQkJVG9reW8gIDEwNi04NTUxCi0JCQkJSkFQQU4KLQotMDAtMDItQkYgICAoaGV4KQkJZG90Um9ja2V0LCBJbmMuCi0wMDAyQkYgICAgIChiYXNlIDE2KQkJZG90Um9ja2V0LCBJbmMuCi0JCQkJMTkwMSBTLiBCYXNjb20sIFN1aXRlIDMwMAotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1DMCAgIChoZXgpCQlCZW5jZW50IFR6ZW5nIEluZHVzdHJ5IENvLiwgTHRkLgotMDAwMkMwICAgICAoYmFzZSAxNikJCUJlbmNlbnQgVHplbmcgSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJM3JkIGZsLiwgTm8uIDMgUnVleSBLdWFuZyBSZC4sCi0JCQkJTmVpIEh1IERpc3QuLCBUYWlwZWkgMTE0Ci0JCQkJVGFpd2FuIFRhaXdhbiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLUMxICAgKGhleCkJCUlubm92YXRpdmUgRWxlY3Ryb25pYyBEZXNpZ25zLCBJbmMuCi0wMDAyQzEgICAgIChiYXNlIDE2KQkJSW5ub3ZhdGl2ZSBFbGVjdHJvbmljIERlc2lnbnMsIEluYy4KLQkJCQk5NzAxIFRheWxvcnN2aWxsZSBSZC4KLQkJCQlMb3Vpc3ZpbGxlIEtZIDQwMjk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1DMiAgIChoZXgpCQlOZXQgVmlzaW9uIFRlbGVjb20KLTAwMDJDMiAgICAgKGJhc2UgMTYpCQlOZXQgVmlzaW9uIFRlbGVjb20KLQkJCQkjMjA2IFNvZnR3YXJlIFN1cHBvcnQgQ2VudGVyCi0JCQkJNDggSmFuZy1Eb25nIFl1c29uZy1HdSwgVGFlam9uCi0JCQkJMzA1LTM0MyBSZXAuIG9mIEtvcmVhCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUMzICAgKGhleCkJCUFyZWxuZXQgTHRkLgotMDAwMkMzICAgICAoYmFzZSAxNikJCUFyZWxuZXQgTHRkLgotCQkJCTMgSGF5YXJkZW4gU3QuCi0JCQkJWWF2bmUgNzA2MDAKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDItQzQgICAoaGV4KQkJVmVjdG9yIEludGVybmF0aW9uYWwgQlZCQQotMDAwMkM0ICAgICAoYmFzZSAxNikJCVZlY3RvciBJbnRlcm5hdGlvbmFsIEJWQkEKLQkJCQlUZWNobm9sb2dpZWxhYW4gNAotCQkJCTMwMDEgTGV1dmVuIAotCQkJCUJFTEdJVU0KLQotMDAtMDItQzUgICAoaGV4KQkJRXZlcnR6IE1pY3Jvc3lzdGVtcyBMdGQuCi0wMDAyQzUgICAgIChiYXNlIDE2KQkJRXZlcnR6IE1pY3Jvc3lzdGVtcyBMdGQuCi0JCQkJNTI4OCBKb2huIEx1Y2FzIERyaXZlCi0JCQkJQnVybGluZ3RvbgotCQkJCU9udGFyaW8gTDdMIDVaOQotCQkJCUNBTkFEQQotCi0wMC0wMi1DNiAgIChoZXgpCQlEYXRhIFRyYWNrIFRlY2hub2xvZ3kgUExDCi0wMDAyQzYgICAgIChiYXNlIDE2KQkJRGF0YSBUcmFjayBUZWNobm9sb2d5IFBMQwotCQkJCTE1MyBTb21lcmZvcmQgUm9hZAotCQkJCUNocmlzdGNodXJjaCwgRG9yc2V0IEJIMjMgM1RZLAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItQzcgICAoaGV4KQkJQUxQUyBFTEVDVFJJQyBDby4sIEx0ZC4KLTAwMDJDNyAgICAgKGJhc2UgMTYpCQlBTFBTIEVMRUNUUklDIENvLiwgTHRkLgotCQkJCTEtMi0xLCBPa2lub3VjaGksIFNhbWEtQ2l0eSwKLQkJCQlGdWt1c2hpbWEtcHJlZiwgOTc2LTg1MDEsCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMi1DOCAgIChoZXgpCQlUZWNobm9jb20gQ29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSAocHRlKSBMdGQKLTAwMDJDOCAgICAgKGJhc2UgMTYpCQlUZWNobm9jb20gQ29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSAocHRlKSBMdGQKLQkJCQkxODkgS2FraSBCdWNraXQgQXZlbnVlIDEKLQkJCQkjMDMtMDMgU2h1biBMaSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlTaW5nYXBvcmUgNDE2MDI5Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTAyLUM5ICAgKGhleCkJCU1lbGxhbm94IFRlY2hub2xvZ2llcwotMDAwMkM5ICAgICAoYmFzZSAxNikJCU1lbGxhbm94IFRlY2hub2xvZ2llcwotCQkJCTM1MCBPYWttZWFkIFBhcmt3YXkKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUNBICAgKGhleCkJCUVuZFBvaW50cywgSW5jLgotMDAwMkNBICAgICAoYmFzZSAxNikJCUVuZFBvaW50cywgSW5jLgotCQkJCTQgUHJlc3RvbiBDb3VydAotCQkJCUJlZGZvcmQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUNCICAgKGhleCkJCVRyaVN0YXRlIEx0ZC4KLTAwMDJDQiAgICAgKGJhc2UgMTYpCQlUcmlTdGF0ZSBMdGQuCi0JCQkJU2hpbm9uYWdhIEJsZy4gNC0xMS0xOSBIb2trby1jaG8KLQkJCQlUb21ha29tYWktc2hpLCBIb2trYWlkbwotCQkJCTA1My0wODUyIDA1My0wODUyIEphcGFuCi0JCQkJSkFQQU4KLQotMDAtMDItQ0MgICAoaGV4KQkJTS5DLkMuSQotMDAwMkNDICAgICAoYmFzZSAxNikJCU0uQy5DLkkKLQkJCQkzNTIwIEtydW1zIENvcm5lcnMgUmQuCi0JCQkJSXRoYWNhIE5ZIDE0ODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1DRCAgIChoZXgpCQlUZWxlRHJlYW0sIEluYy4KLTAwMDJDRCAgICAgKGJhc2UgMTYpCQlUZWxlRHJlYW0sIEluYy4KLQkJCQlTaGluaHdhIEJsZGcuLCA5NDAtMTAgRGFlY2hpLURvbmcKLQkJCQlLYW5nbmFtLWt1LCBTZW91bCAxMzUtMjgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUNFICAgKGhleCkJCUZveEpldCwgSW5jLgotMDAwMkNFICAgICAoYmFzZSAxNikJCUZveEpldCwgSW5jLgotCQkJCTIwMTYgRS4gUmFuZGFsIE1pbGwgUmQuICM0MDkKLQkJCQlBcmxpbmd0b24gVFggNzYwMTEtODIyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQ0YgICAoaGV4KQkJWnlHYXRlIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAyQ0YgICAgIChiYXNlIDE2KQkJWnlHYXRlIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMkYsIE5vLjQ4LCBMdW5nLUNoaW4gUm9hZAotCQkJCUx1bmctVGFuLCBUYW55dWFuLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItRDAgICAoaGV4KQkJQ29tZGlhbCBDb3Jwb3JhdGlvbgotMDAwMkQwICAgICAoYmFzZSAxNikJCUNvbWRpYWwgQ29ycG9yYXRpb24KLQkJCQkxMTgwIFNlbWlub2xlIFRyYWlsCi0JCQkJQ2hhcmxvdHRlc3ZpbGxlIFZBIDIyOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1EMSAgIChoZXgpCQlWaXZvdGVrLCBJbmMuCi0wMDAyRDEgICAgIChiYXNlIDE2KQkJVml2b3RlaywgSW5jLgotCQkJCTVGLTEsIDE2OC0xLCBMaWVuLUNoZW4gUmQsCi0JCQkJQ2h1bmctSG8sIFRhaXBlaSBDb3VudHksCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi1EMiAgIChoZXgpCQlXb3Jrc3RhdGlvbiBBRwotMDAwMkQyICAgICAoYmFzZSAxNikJCVdvcmtzdGF0aW9uIEFHCi0JCQkJU2NoYWZmaGF1c2Vyc3RyLiA1NQotCQkJCUNILTgxNTIgR2xhdHRicnVnZwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAyLUQzICAgKGhleCkJCU5ldEJvdHosIEluYy4KLTAwMDJEMyAgICAgKGJhc2UgMTYpCQlOZXRCb3R6LCBJbmMuCi0JCQkJMTEwMDQ0IFJlc2VhcmNoIEJsdmQuCi0JCQkJU3VpdGUgQy0xMDAKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUQ0ICAgKGhleCkJCVBEQSBQZXJpcGhlcmFscywgSW5jLgotMDAwMkQ0ICAgICAoYmFzZSAxNikJCVBEQSBQZXJpcGhlcmFscywgSW5jLgotCQkJCTIwNSBPcmFuZ2UgU3QuCi0JCQkJVGhpcmQgRmxvb3IKLQkJCQlOZXcgSGF2ZW4gQ1QgMDY1MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUQ1ICAgKGhleCkJCUFDUgotMDAwMkQ1ICAgICAoYmFzZSAxNikJCUFDUgotCQkJCUNhcmRvdWxpbmVzIEIyCi0JCQkJMTM2MCBydGUgRG9saW5pcyAwNjU2MCBWYWxib25uZQotCQkJCUZSQU5DRQotCi0wMC0wMi1ENiAgIChoZXgpCQlOSUNFIFN5c3RlbXMKLTAwMDJENiAgICAgKGJhc2UgMTYpCQlOSUNFIFN5c3RlbXMKLQkJCQk4IEhhcG5pbmEgU3QuLCBQT0IgNjkwCi0JCQkJUmEnQW5hbmEgNDMxMDcKLQkJCQlJU1JBRUwKLQotMDAtMDItRDcgICAoaGV4KQkJRU1QRUcgTHRkCi0wMDAyRDcgICAgIChiYXNlIDE2KQkJRU1QRUcgTHRkCi0JCQkJMSBTaWduZXQgQ291cnQKLQkJCQlTd2FubidzIFJvYWQgQ2FtYnJpZGdlLCBVSwotCQkJCUNCNSA4TEEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi1EOCAgIChoZXgpCQlCUkVDSVMgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMDJEOCAgICAgKGJhc2UgMTYpCQlCUkVDSVMgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQkyMDI1IEdhdGV3YXkgUGxhY2UsIFN1aXRlIDEzMgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1EOSAgIChoZXgpCQlSZWxpYWJsZSBDb250cm9scwotMDAwMkQ5ICAgICAoYmFzZSAxNikJCVJlbGlhYmxlIENvbnRyb2xzCi0JCQkJMTIwIEhhbGxvd2VsbCBSb2FkCi0JCQkJVmljdG9yaWEsICBCLkMuIFY5QSA3SzIKLQkJCQlDQU5BREEKLQotMDAtMDItREEgICAoaGV4KQkJRXhpTyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMkRBICAgICAoYmFzZSAxNikJCUV4aU8gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyMzYyIFF1bWUgRHJpdmUKLQkJCQlTdWl0ZSBDCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLURCICAgKGhleCkJCU5FVFNFQwotMDAwMkRCICAgICAoYmFzZSAxNikJCU5FVFNFQwotCQkJCTEzNTA1IER1bGxlcyBUZWNobm9sb2d5IERyaXZlCi0JCQkJU3VpdGUgMQotCQkJCUhlcm5hbmRvbiBWQSAyMDE3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItREMgICAoaGV4KQkJRnVqaXRzdSBHZW5lcmFsIExpbWl0ZWQKLTAwMDJEQyAgICAgKGJhc2UgMTYpCQlGdWppdHN1IEdlbmVyYWwgTGltaXRlZAotCQkJCTExMTYsIFN1ZW5hZ2EsIFRha2F0c3UtS3UsCi0JCQkJS2F3YXNha2ktQ2l0eSwgS2FuYWdhd2EtUHJlZi4sCi0JCQkJMjEzLTg1MDIgCi0JCQkJSkFQQU4KLQotMDAtMDItREQgICAoaGV4KQkJQnJvbWF4IENvbW11bmljYXRpb25zLCBMdGQuCi0wMDAyREQgICAgIChiYXNlIDE2KQkJQnJvbWF4IENvbW11bmljYXRpb25zLCBMdGQuCi0JCQkJTm8uIDIwIEt1YW5nIEZ1IFJvYWQsCi0JCQkJSHNpbiBDaHUgSW5kdXN0cmlhbCBQYXJrLCBIdSBLb3UsCi0JCQkJSHNpbiBDaHUgMzAzICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLURFICAgKGhleCkJCUFzdHJvZGVzaWduLCBJbmMuCi0wMDAyREUgICAgIChiYXNlIDE2KQkJQXN0cm9kZXNpZ24sIEluYy4KLQkJCQkyLTIyLTEyIEthbWlrb2RhbmEgS2EKLQkJCQlOYWthaGFyYWt1LCBLYXdhc2FpLUNpdHkKLQkJCQlLYW5hZ2F3YSAgCi0JCQkJSkFQQU4KLQotMDAtMDItREYgICAoaGV4KQkJTmV0IENvbSBTeXN0ZW1zLCBJbmMuCi0wMDAyREYgICAgIChiYXNlIDE2KQkJTmV0IENvbSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTUtMywgWW9pZG8tRG9uZywKLQkJCQlZZW91bmdkb25ncG8ta3UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1FMCAgIChoZXgpCQlFVEFTIEdtYkgKLTAwMDJFMCAgICAgKGJhc2UgMTYpCQlFVEFTIEdtYkgKLQkJCQlCb3JzaWdzdHJhc3NlIDEwCi0JCQkJRDcwNDY5IFN0dXR0Z2FydAotCQkJCUdFUk1BTlkKLQotMDAtMDItRTEgICAoaGV4KQkJSW50ZWdyYXRlZCBOZXR3b3JrIENvcnBvcmF0aW9uCi0wMDAyRTEgICAgIChiYXNlIDE2KQkJSW50ZWdyYXRlZCBOZXR3b3JrIENvcnBvcmF0aW9uCi0JCQkJNzU3IFJvdXRlIDIwMi8yMDYKLQkJCQlCcmlkZ2V3YXRlciBOSiAwODgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRTIgICAoaGV4KQkJTkRDIEluZmFyZWQgRW5naW5lZXJpbmcKLTAwMDJFMiAgICAgKGJhc2UgMTYpCQlOREMgSW5mYXJlZCBFbmdpbmVlcmluZwotCQkJCTUzMTQgTi4gSXJ3aW5kYWxlIEF2ZS4KLQkJCQlJcndpbmRhbGUgQ0EgOTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUUzICAgKGhleCkJCUxJVEUtT04gQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDJFMyAgICAgKGJhc2UgMTYpCQlMSVRFLU9OIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNzM2IFMuIEhpbGx2aWV3IERyaXZlCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUU0ICAgKGhleCkJCUpDIEhZVU4gU3lzdGVtcywgSW5jLgotMDAwMkU0ICAgICAoYmFzZSAxNikJCUpDIEhZVU4gU3lzdGVtcywgSW5jLgotCQkJCVNoaW5ib25nIEJsZGcsIDczNi02LAotCQkJCVlva3NhbS1Eb25nLCBLYW5nbmFtLUt1LAotCQkJCVNlb3VsICAoMTM1LTA4MCkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItRTUgICAoaGV4KQkJVGltZXdhcmUgTHRkLgotMDAwMkU1ICAgICAoYmFzZSAxNikJCVRpbWV3YXJlIEx0ZC4KLQkJCQlCcm9va2ZpZWxkIEdyYW5nZQotCQkJCTc5IEZhbGluZ2UgUmQsIFJvY2tkYWxlCi0JCQkJTGFuY3MgIDA0MiBHTEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi1FNiAgIChoZXgpCQlHb3VsZCBJbnN0cnVtZW50IFN5c3RlbXMsIEluYy4KLTAwMDJFNiAgICAgKGJhc2UgMTYpCQlHb3VsZCBJbnN0cnVtZW50IFN5c3RlbXMsIEluYy4KLQkJCQk4MzMzIFJvY2tzaWRlIFJvYWQKLQkJCQlWYWxsZXkgVmlldyBPSCA0NDEyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRTcgICAoaGV4KQkJQ0FCIEdtYkggJiBDbyBLRwotMDAwMkU3ICAgICAoYmFzZSAxNikJCUNBQiBHbWJIICYgQ28gS0cKLQkJCQlXaWxoZWxtLVNjaGlja2FyZC1TdHIgMTQKLQkJCQk3NjEzMSBLYXJsc3J1aGUKLQkJCQlHRVJNQU5ZCi0KLTAwLTAyLUU4ICAgKGhleCkJCUUuRC4mQS4KLTAwMDJFOCAgICAgKGJhc2UgMTYpCQlFLkQuJkEuCi0JCQkJRW5lcmdpZWxhYW4gMTYKLQkJCQlJWiBCb3NkdWluIDI5NTAgS2FwZWxsZW4KLQkJCQlCRUxHSVVNCi0KLTAwLTAyLUU5ICAgKGhleCkJCUNTIFN5c3RlbWVzIERlIFNlY3VyaXRlIC0gQzNTCi0wMDAyRTkgICAgIChiYXNlIDE2KQkJQ1MgU3lzdGVtZXMgRGUgU2VjdXJpdGUgLSBDM1MKLQkJCQkyMywgcnVlIGRlIFNjaHdvYnNoZWltCi0JCQkJNjc2MDAgQmFsZGVuaGVpbQotCQkJCUZSQU5DRQotCi0wMC0wMi1FQSAgIChoZXgpCQlGb2N1cyBFbmhhbmNlbWVudHMKLTAwMDJFQSAgICAgKGJhc2UgMTYpCQlGb2N1cyBFbmhhbmNlbWVudHMKLQkJCQkxMzcwIERlbGwgQXZlLgotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1FQiAgIChoZXgpCQlQaWNvIENvbW11bmljYXRpb25zCi0wMDAyRUIgICAgIChiYXNlIDE2KQkJUGljbyBDb21tdW5pY2F0aW9ucwotCQkJCTIwMDg1IFN0ZXZlbnMgQ3JlZWsgQmx2ZC4KLQkJCQlTdWl0ZSAjMTAwCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1FQyAgIChoZXgpCQlNYXNjaG9mZiBEZXNpZ24gRW5naW5lZXJpbmcKLTAwMDJFQyAgICAgKGJhc2UgMTYpCQlNYXNjaG9mZiBEZXNpZ24gRW5naW5lZXJpbmcKLQkJCQk0NDU0IENlZGFyIExha2UgUmQuICM4Ci0JCQkJU3QuIExvdWlzIFBhcmsgTU4gNTU0MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUVEICAgKGhleCkJCURYTyBUZWxlY29tIENvLiwgTHRkLgotMDAwMkVEICAgICAoYmFzZSAxNikJCURYTyBUZWxlY29tIENvLiwgTHRkLgotCQkJCThGLCAzMDAtMTEsIFl1bWdvay1Eb25nLAotCQkJCVNlb2Noby1LdSwgU2VvdWwgMTM3LTc4OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1FRSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAwMkVFICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqLCBDb3BlbmhhZ2VuIFYKLQkJCQlESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0wMi1FRiAgIChoZXgpCQlDQ0MgTmV0d29yayBTeXN0ZW1zIEdyb3VwIEx0ZC4KLTAwMDJFRiAgICAgKGJhc2UgMTYpCQlDQ0MgTmV0d29yayBTeXN0ZW1zIEdyb3VwIEx0ZC4KLQkJCQkxMyBGYXJuYm9yb3VnaCBCdXNpbmVzcyBDZW50cmUKLQkJCQlFZWxtb29yIFJvYWQsIEZhcm5ib3JvdWdoLCBIYW50cywgR1UxNCA3Ci0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi1GMCAgIChoZXgpCQlBTUUgT3B0aW1lZGlhIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDAyRjAgICAgIChiYXNlIDE2KQkJQU1FIE9wdGltZWRpYSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTE3Ri0yLCA3OSBIc2luIFRhaSBXdSBSb2FkLCBTZWMuIDEsCi0JCQkJSHNpLUNoaWgsIFRhaXBlaSBIc2llbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItRjEgICAoaGV4KQkJUGluZXRyb24gQ28uLCBMdGQuCi0wMDAyRjEgICAgIChiYXNlIDE2KQkJUGluZXRyb24gQ28uLCBMdGQuCi0JCQkJQmxkZy4gIzE1OTktMTEsCi0JCQkJU2VvY2hvLURvbmcsIFNlb2Noby1LdSwKLQkJCQlTZW91bCAgMTM3LTA3MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1GMiAgIChoZXgpCQllRGV2aWNlLCBJbmMuCi0wMDAyRjIgICAgIChiYXNlIDE2KQkJZURldmljZSwgSW5jLgotCQkJCTQyMCBMZXhpbmd0b24gQXZlbnVlCi0JCQkJU3VpdGUgMjMwMAotCQkJCU5ldyBZb3JrIE5ZIDEwMTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1GMyAgIChoZXgpCQlNZWRpYSBTZXJ2ZSBDby4sIEx0ZC4KLTAwMDJGMyAgICAgKGJhc2UgMTYpCQlNZWRpYSBTZXJ2ZSBDby4sIEx0ZC4KLQkJCQlEb25nc3VuZyBCbGRnLiAjMTctOCwgWW91aWRvLWRvbmcsCi0JCQkJWW91bmdkZW91bmdwby1rdSwKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUY0ICAgKGhleCkJCVBDVEVMLCBJbmMuCi0wMDAyRjQgICAgIChiYXNlIDE2KQkJUENURUwsIEluYy4KLQkJCQkxMzMxIENhbGlmb3JuaWEgQ2lyY2xlCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUY1ICAgKGhleCkJCVZJVkUgU3luZXJnaWVzLCBJbmMuCi0wMDAyRjUgICAgIChiYXNlIDE2KQkJVklWRSBTeW5lcmdpZXMsIEluYy4KLQkJCQkzMCBXZXN0IEJlYXZlciBDcmVlayBSb2FkLCBVbml0IDEwMQotCQkJCVJpY2htb25kIEhpbGwsIE9udGFyaW8KLQkJCQlMNEIgM0sxCi0JCQkJQ0FOQURBCi0KLTAwLTAyLUY2ICAgKGhleCkJCUVxdWlwZSBDb21tdW5pY2F0aW9ucwotMDAwMkY2ICAgICAoYmFzZSAxNikJCUVxdWlwZSBDb21tdW5pY2F0aW9ucwotCQkJCTEwMCBOYWdvZyBQYXJrCi0JCQkJQWN0b24gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUY3ICAgKGhleCkJCUFSTQotMDAwMkY3ICAgICAoYmFzZSAxNikJCUFSTQotCQkJCTExMCwgRnVsYm91cm4gUm9hZAotCQkJCUNoZXJyeSBIaW50b24gQ2FtYnJpZGdlCi0JCQkJQ0IxIDlOSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLUY4ICAgKGhleCkJCVNFQUtSIEVuZ2luZWVyaW5nLCBJbmMuCi0wMDAyRjggICAgIChiYXNlIDE2KQkJU0VBS1IgRW5naW5lZXJpbmcsIEluYy4KLQkJCQkxMjg0NyBFLiBQZWFrdmlldyBBdmUuCi0JCQkJRW5nbGV3b29kIENPIDgwMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1GOSAgIChoZXgpCQlNaW1vcyBTZW1pY29uZHVjdG9yIFNETiBCSEQKLTAwMDJGOSAgICAgKGJhc2UgMTYpCQlNaW1vcyBTZW1pY29uZHVjdG9yIFNETiBCSEQKLQkJCQlUYW1hbiBUZWtub2xvZ2kgTWFsYXlzaWEKLQkJCQlCdWtpdCBKYWxpbCA1NzAwMCBLdWFsYSBMdW1wdXIsCi0JCQkJTUFMQVlTSUEKLQotMDAtMDItRkEgICAoaGV4KQkJRFggQW50ZW5uYSBDby4sIEx0ZC4KLTAwMDJGQSAgICAgKGJhc2UgMTYpCQlEWCBBbnRlbm5hIENvLiwgTHRkLgotCQkJCTItMTUgSGFtYXpha2ktRG9yaSwKLQkJCQlIeW9nby1rdSwgS29iZQotCQkJCUpBUEFOCi0KLTAwLTAyLUZCICAgKGhleCkJCUJhdW11bGxlciBBdWx1Z2VuLVN5c3RlbXRlY2huaWsgR21iSAotMDAwMkZCICAgICAoYmFzZSAxNikJCUJhdW11bGxlciBBdWx1Z2VuLVN5c3RlbXRlY2huaWsgR21iSAotCQkJCU9zdGVuZHN0cy4gODQKLQkJCQlELTkwNDgyIE51cnViZXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wMi1GQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyRkMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMkZEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUZFICAgKGhleCkJCVZpZGl0ZWMsIEluYy4KLTAwMDJGRSAgICAgKGJhc2UgMTYpCQlWaWRpdGVjLCBJbmMuCi0JCQkJNTIwIENlbnRyYWwgUGFya3dheSBFLgotCQkJCVN1aXRlIDExNQotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1GRiAgIChoZXgpCQlIYW5kYW4gQnJvYWRJbmZvQ29tCi0wMDAyRkYgICAgIChiYXNlIDE2KQkJSGFuZGFuIEJyb2FkSW5mb0NvbQotCQkJCTV0aCBGbC4gU2hpbnN1bmcgUGxhemEgIzY5Ny0xMQotCQkJCVllb2dzYW0tZG9uZywgS2FuZ25hbS1ndQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMDAgICAoaGV4KQkJQmFycmFjdWRhIE5ldHdvcmtzLCBJbmMuCi0wMDAzMDAgICAgIChiYXNlIDE2KQkJQmFycmFjdWRhIE5ldHdvcmtzLCBJbmMuCi0JCQkJMzE3NSBTLiBXaW5jaGVzdGVyIEJsdmQKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMDEgICAoaGV4KQkJQXZhbnRhcyBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAwMzAxICAgICAoYmFzZSAxNikJCUF2YW50YXMgTmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQk5OTAwIENhdmVuZGlzaCBCbHZkLiwgU3VpdGUgIzMxMAotCQkJCVN0LUxhdXJlbnQsIFF1ZWJlYwotCQkJCUg0TSAyVjIKLQkJCQlDQU5BREEKLQotMDAtMDMtMDIgICAoaGV4KQkJQ2hhcmxlcyBJbmR1c3RyaWVzLCBMdGQuCi0wMDAzMDIgICAgIChiYXNlIDE2KQkJQ2hhcmxlcyBJbmR1c3RyaWVzLCBMdGQuCi0JCQkJNTYwMCBBcG9sbG8gRHJpdmUKLQkJCQlSb2xsaW5nIE1lYWRvd3MgSUwgNjAwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTAzICAgKGhleCkJCUpBTUEgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDAzMDMgICAgIChiYXNlIDE2KQkJSkFNQSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkxMEYsIE5vLiAyMjItMSwgU2VjLiAzCi0JCQkJVGEtVHVuZyBSZC4sIEhzaS1DaGloCi0JCQkJVGFpcGVpIEhzaWVuICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTA0ICAgKGhleCkJCVBhY2lmaWMgQnJvYWRiYW5kIENvbW11bmljYXRpb25zCi0wMDAzMDQgICAgIChiYXNlIDE2KQkJUGFjaWZpYyBCcm9hZGJhbmQgQ29tbXVuaWNhdGlvbnMKLQkJCQkzMTAzIE5vcnRoIEZpcnN0IFN0LgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0wNSAgIChoZXgpCQlNU0MgVmVydHJpZWJzIEdtYkgKLTAwMDMwNSAgICAgKGJhc2UgMTYpCQlNU0MgVmVydHJpZWJzIEdtYkgKLQkJCQlEZXNpZ24gQ2VudGVyIEFhY2hlbgotCQkJCVBhc2NhbHN0cmFzc2UgMjEKLQkJCQlBQUNIRU4gICAgRC01MjA3NgotCQkJCUdFUk1BTlkKLQotMDAtMDMtMDYgICAoaGV4KQkJRnVzaW9uIEluIFRlY2ggQ28uLCBMdGQuCi0wMDAzMDYgICAgIChiYXNlIDE2KQkJRnVzaW9uIEluIFRlY2ggQ28uLCBMdGQuCi0JCQkJNkZsLCBEYWV5b29uIEJsZGcuIDE2ODgtNSwgU2VvY2hvLWRvbmcKLQkJCQlTZW9jaG8ta3UsCi0JCQkJU2VvdWwsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMDcgICAoaGV4KQkJU2VjdXJlIFdvcmtzLCBJbmMuCi0wMDAzMDcgICAgIChiYXNlIDE2KQkJU2VjdXJlIFdvcmtzLCBJbmMuCi0JCQkJMTEgRXhlY3V0aXZlIERyaXZlCi0JCQkJU3VpdGUgMjAwCi0JCQkJQXRsYW50YSBHQSAzMDMyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMDggICAoaGV4KQkJQU0gQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDMwOCAgICAgKGJhc2UgMTYpCQlBTSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTEwMCBDb21tZXJjZSBCbHZkLgotCQkJCVF1YWtlcnRvd24gUEEgMTg5NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTA5ICAgKGhleCkJCVRleGNlbCBUZWNobm9sb2d5IFBMQwotMDAwMzA5ICAgICAoYmFzZSAxNikJCVRleGNlbCBUZWNobm9sb2d5IFBMQwotCQkJCVRoYW1lcyBSb2FkCi0JCQkJQ3JheWZvcmQgS2VudCBEQTEgNFNCCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMy0wQSAgIChoZXgpCQlBcmd1cyBUZWNobm9sb2dpZXMKLTAwMDMwQSAgICAgKGJhc2UgMTYpCQlBcmd1cyBUZWNobm9sb2dpZXMKLQkJCQk4RiwgTm8uIDE4MywgS2FuZyBDaGllbiBSZC4KLQkJCQkxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTBCICAgKGhleCkJCUh1bnRlciBUZWNobm9sb2d5LCBJbmMuCi0wMDAzMEIgICAgIChiYXNlIDE2KQkJSHVudGVyIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxNDA4LCBXb29saW0gZS1iaXogQ2VudGVyLAotCQkJCTE3MC01LCBHdXJvLTNkb25nLCBHdXJvLWd1LAotCQkJCVNlb3VsICAxMzUtMjcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTBDICAgKGhleCkJCVRlbGVzb2Z0IFRlY2hub2xvZ2llcyBMdGQuCi0wMDAzMEMgICAgIChiYXNlIDE2KQkJVGVsZXNvZnQgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQlPYnNlcnZhdG9yeSBIb3VzZSwgU3RvdXIgUGFyaywKLQkJCQlCbGFuZGZvcnVtLCBEb3JzZXQsIERUMTEgOUxRLAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAzLTBEICAgKGhleCkJCVVuaXdpbGwgQ29tcHV0ZXIgQ29ycC4KLTAwMDMwRCAgICAgKGJhc2UgMTYpCQlVbml3aWxsIENvbXB1dGVyIENvcnAuCi0JCQkJTm8uIDI0LCBQZWkgWXVhbiBSZC4sIENodW5nCi0JCQkJTGkgSW5kdXN0cmlhbCBQYXJrLCBDaHVuZwotCQkJCUxpIENpdHkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtMEUgICAoaGV4KQkJQ29yZSBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMDMwRSAgICAgKGJhc2UgMTYpCQlDb3JlIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTNGIFNob3BwaW5nIENlbnRlciBCZC4gb2YKLQkJCQlTU2FuZyBZb3VuZyBId2FuZy1nZXVtIEFQVCwgIzI1MyBNYXBvLURvCi0JCQkJU2VvdWwgKDEyMS0wNTApICAoMTIxLTA1MCkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMEYgICAoaGV4KQkJRGlnaXRhbCBDaGluYSAoU2hhbmdoYWkpIE5ldHdvcmtzIEx0ZC4KLTAwMDMwRiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIENoaW5hIChTaGFuZ2hhaSkgTmV0d29ya3MgTHRkLgotCQkJCTYwMi0yMywgSGFpdGFpIEJ1aWxkaW5nLCAzNTEgR3VvIFNob3VqaW4KLQkJCQlQdWRvbmcgTmV3IERpc3RyaWN0LAotCQkJCVNoYW5naGFpICAKLQkJCQlDSElOQQotCi0wMC0wMy0xMCAgIChoZXgpCQlJVFggRS1HbG9iYWxlZGdlIENvcnBvcmF0aW9uCi0wMDAzMTAgICAgIChiYXNlIDE2KQkJSVRYIEUtR2xvYmFsZWRnZSBDb3Jwb3JhdGlvbgotCQkJCU5ha2FtZWd1cm8gR1QgdG93ZXIgN0YgMi0xLTEga2FtaW1lZ3VybwotCQkJCU1lZ3Vyby1rdQotCQkJCVRva3lvICAxNTMtMDA1MQotCQkJCUpBUEFOCi0KLTAwLTAzLTExICAgKGhleCkJCU1pY3JvIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDAzMTEgICAgIChiYXNlIDE2KQkJTWljcm8gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlTdWVoaXJvIEJsZGcuCi0JCQkJMS0yLCBTb3RvIEthbmRhIDUgQ2hvbWUgQ2hpeW9kYS1rdSwgVG9reQotCQkJCTEwMS0wMDIxIAotCQkJCUpBUEFOCi0KLTAwLTAzLTEyICAgKGhleCkJCVRSLVN5c3RlbXRlY2huaWsgR21iSAotMDAwMzEyICAgICAoYmFzZSAxNikJCVRSLVN5c3RlbXRlY2huaWsgR21iSAotCQkJCUVnbGlzaGFsZGUgNgotCQkJCUQtNzg2NDcgVHJvc3NpbmdlbgotCQkJCUdFUk1BTlkKLQotMDAtMDMtMTMgICAoaGV4KQkJQWNjZXNzIE1lZGlhIFNQQQotMDAwMzEzICAgICAoYmFzZSAxNikJCUFjY2VzcyBNZWRpYSBTUEEKLQkJCQlWaWEgZGVsbGUgSW5kdXN0cmllLCA0L2cKLQkJCQkyNDAzNSBMQUxMSU8gKEJHKSAgCi0JCQkJSVRBTFkKLQotMDAtMDMtMTQgICAoaGV4KQkJVGVsZXdhcmUgTmV0d29yayBTeXN0ZW1zCi0wMDAzMTQgICAgIChiYXNlIDE2KQkJVGVsZXdhcmUgTmV0d29yayBTeXN0ZW1zCi0JCQkJIzc4MDYgN3RoIERvbmdpbCBUZWNobm90b3duLAotCQkJCUtpbmFueWFuZyBEb25nIDgyMywgRG9uZ2FobiBHdSwgQW55YW5nIEMKLQkJCQk0MzEtMDYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTE1ICAgKGhleCkJCUNpZGNvIEluY29ycG9yYXRlZAotMDAwMzE1ICAgICAoYmFzZSAxNikJCUNpZGNvIEluY29ycG9yYXRlZAotCQkJCTIyMCBDb2NocmFuZSBDaXJjbGUKLQkJCQlNb3JnYW4gSGlsbCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMTYgICAoaGV4KQkJTm9iZWxsIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAzMTYgICAgIChiYXNlIDE2KQkJTm9iZWxsIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMzQxMCBGYXIgV2VzdCBCbHZkLiwgU3VpdGUgMjQwCi0JCQkJQXVzdGluIFRYIDc4NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0xNyAgIChoZXgpCQlNZXJsaW4gU3lzdGVtcywgSW5jLgotMDAwMzE3ICAgICAoYmFzZSAxNikJCU1lcmxpbiBTeXN0ZW1zLCBJbmMuCi0JCQkJMzkwMCBOZXcgUGFyayBNYWxsIFJkLgotCQkJCTNyZCBGbG9vcgotCQkJCU5ld2FyayBDQSA5NDU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMTggICAoaGV4KQkJQ3lyYXMgU3lzdGVtcywgSW5jLgotMDAwMzE4ICAgICAoYmFzZSAxNikJCUN5cmFzIFN5c3RlbXMsIEluYy4KLQkJCQk0NzEwMCBCYXlzaWRlIFBhcmt3YXkKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0xOSAgIChoZXgpCQlJbmZpbmVvbiBBRwotMDAwMzE5ICAgICAoYmFzZSAxNikJCUluZmluZW9uIEFHCi0JCQkJUC5PLiBCb3ggODAwOTQ5Ci0JCQkJRC04MTYwOSBNdW5pY2gKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLTFBICAgKGhleCkJCUJlaWppbmcgQnJvYWQgVGVsZWNvbSBMdGQuLCBDaGluYQotMDAwMzFBICAgICAoYmFzZSAxNikJCUJlaWppbmcgQnJvYWQgVGVsZWNvbSBMdGQuLCBDaGluYQotCQkJCVAuTy4gQm94ICMxNDcKLQkJCQlCZWlqaW5nIFVuaXZlcnNpdHkgb2YgUG9zdHMgIGFuZCBUZWxlY29tCi0JCQkJQmVpamluZyAgMTAwODc2Ci0JCQkJQ0hJTkEKLQotMDAtMDMtMUIgICAoaGV4KQkJQ2VsbHZpc2lvbiBTeXN0ZW1zLCBJbmMuCi0wMDAzMUIgICAgIChiYXNlIDE2KQkJQ2VsbHZpc2lvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJM0YtMSwgNzUsIEhzaW4gVGFpd3UgUm9hZCwgU2VjLiAxCi0JCQkJSHNpY2hpaCwgVGFpcGVpLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtMUMgICAoaGV4KQkJU3ZlbnNrYSBIYXJkdmFydWZhYnJpa2VuIEFCCi0wMDAzMUMgICAgIChiYXNlIDE2KQkJU3ZlbnNrYSBIYXJkdmFydWZhYnJpa2VuIEFCCi0JCQkJT2xlIFJvbWVyc3ZhZyAxNiwgSWRlb24KLQkJCQlTRS0yMjMgNzAgTHVuZAotCQkJCVNXRURFTgotCi0wMC0wMy0xRCAgIChoZXgpCQlUYWl3YW4gQ29tbWF0ZSBDb21wdXRlciwgSW5jLgotMDAwMzFEICAgICAoYmFzZSAxNikJCVRhaXdhbiBDb21tYXRlIENvbXB1dGVyLCBJbmMuCi0JCQkJOEYsIE5vLiA5NCwgU2VjIDEsCi0JCQkJU2hpbiBUYWkgV3UgUmQuIEhzaSBDaGloLCBUYWlwZWkgSHNpZW4sCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy0xRSAgIChoZXgpCQlPcHRyYW5ldCwgSW5jLgotMDAwMzFFICAgICAoYmFzZSAxNikJCU9wdHJhbmV0LCBJbmMuCi0JCQkJNzA0MSBLb2xsIENlbnRlciBQa3d5Ci0JCQkJU3VpdGUgMTM1Ci0JCQkJUGxlYXNhbnRvbiBDQSA5NDU2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMUYgICAoaGV4KQkJQ29uZGV2IEx0ZC4KLTAwMDMxRiAgICAgKGJhc2UgMTYpCQlDb25kZXYgTHRkLgotCQkJCTIwMC0xNjI2IFdlc3QgMm5kIEF2ZS4KLQkJCQlWYW5jb3V2ZXIsIEIuQy4gVjZKIDFINAotCQkJCUNBTkFEQQotCi0wMC0wMy0yMCAgIChoZXgpCQlYcGVlZCwgSW5jLgotMDAwMzIwICAgICAoYmFzZSAxNikJCVhwZWVkLCBJbmMuCi0JCQkJOTkgVy4gVGFzbWFuIERyaXZlCi0JCQkJU3VpdGUgMTEwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTIxICAgKGhleCkJCVJlY28gUmVzZWFyY2ggQ28uLCBMdGQuCi0wMDAzMjEgICAgIChiYXNlIDE2KQkJUmVjbyBSZXNlYXJjaCBDby4sIEx0ZC4KLQkJCQlOby4gNDctMSwgU2VjLiAyLAotCQkJCUt1YW5nIEZ1IFJkLixTYW4gQ2h1bmcgQ2l0eSwgVGFpcGVpLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtMjIgICAoaGV4KQkJSURJUyBDby4sIEx0ZC4KLTAwMDMyMiAgICAgKGJhc2UgMTYpCQlJRElTIENvLiwgTHRkLgotCQkJCTd0aCBGbG9vciwgNjQ2LTcgWXVrc2FtLURvbmcsCi0JCQkJS2FuZ25hbS1HdSwgU2VvdWwgMTM1LTI4MCwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMjMgICAoaGV4KQkJQ29ybmV0IFRlY2hub2xvZ3ksIEluYy4KLTAwMDMyMyAgICAgKGJhc2UgMTYpCQlDb3JuZXQgVGVjaG5vbG9neSwgSW5jLgotCQkJCTY4MDAgVmVyc2FyIENlbnRlciwgU3VpdGUgMjE2Ci0JCQkJU3ByaW5nZmllbGQgVkEgMjIxNTEtNDE0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMjQgICAoaGV4KQkJU0FOWU8gQ29uc3VtZXIgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDAzMjQgICAgIChiYXNlIDE2KQkJU0FOWU8gQ29uc3VtZXIgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJNy0xMDEgVGFjaGlrYXdhLWNobwotCQkJCVRvdHRvcmkgQ2l0eSAgNjgwLTg2MzQKLQkJCQlKQVBBTgotCi0wMC0wMy0yNSAgIChoZXgpCQlBcmltYSBDb21wdXRlciBDb3JwLgotMDAwMzI1ICAgICAoYmFzZSAxNikJCUFyaW1hIENvbXB1dGVyIENvcnAuCi0JCQkJNnRoIEZsLiwgTm8uIDMyNywKLQkJCQlTdW5nLWx1bmcgUmQuLCBUYWlwZWkgQ2l0eSwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTI2ICAgKGhleCkJCUl3YXNha2kgSW5mb3JtYXRpb24gU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDMyNiAgICAgKGJhc2UgMTYpCQlJd2FzYWtpIEluZm9ybWF0aW9uIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJMzM2MSBPc2hpCi0JCQkJRnVraWFnZS1tYWNoaSwgU2FpdGFtYSAzNjktMDExMwotCQkJCUpBUEFOCi0KLTAwLTAzLTI3ICAgKGhleCkJCUFDVCdMCi0wMDAzMjcgICAgIChiYXNlIDE2KQkJQUNUJ0wKLQkJCQlBdmVudWUgZGUgQXJ0aXNhbmF0IDEwQQotCQkJCTE5MjQgQnJhaW5lIGwnQWxsYXJkCi0JCQkJQkVMR0lVTQotCi0wMC0wMy0yOCAgIChoZXgpCQlNYWNlIEdyb3VwLCBJbmMuCi0wMDAzMjggICAgIChiYXNlIDE2KQkJTWFjZSBHcm91cCwgSW5jLgotCQkJCTUxMDEgQ29tbWVyY2UgRHIuCi0JCQkJQmFsZHdpbiBQYXJrIENBIDkxNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0yOSAgIChoZXgpCQlGMywgSW5jLgotMDAwMzI5ICAgICAoYmFzZSAxNikJCUYzLCBJbmMuCi0JCQkJMkYsIE5vLiA3LCBJbmR1c3RyeSBFLiBSZC4gOSwKLQkJCQlTY2llbmNlIEJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTJBICAgKGhleCkJCVVuaURhdGEgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zLCBJbmMuCi0wMDAzMkEgICAgIChiYXNlIDE2KQkJVW5pRGF0YSBDb21tdW5pY2F0aW9uIFN5c3RlbXMsIEluYy4KLQkJCQkyRiwgT2hTdW5nLUJsZGcsIDgyLTE1LAotCQkJCU5vbkh5dW4tRG9uZywgR2FuZ05hbS1HdSwgIFNlb3VsLDEzNS0xMDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMkIgICAoaGV4KQkJR0FJIERhdGVuZnVua3N5c3RlbWUgR21iSAotMDAwMzJCICAgICAoYmFzZSAxNikJCUdBSSBEYXRlbmZ1bmtzeXN0ZW1lIEdtYkgKLQkJCQlSaWVkbGVwYXJrc3RyYXNzZSAyOAotCQkJCUQtODgwNDUgRnJpZWRyaWNoc2hhZmVuCi0JCQkJR0VSTUFOWQotCi0wMC0wMy0yQyAgIChoZXgpCQlBQkIgU3dpdHplcmxhbmQgTHRkCi0wMDAzMkMgICAgIChiYXNlIDE2KQkJQUJCIFN3aXR6ZXJsYW5kIEx0ZAotCQkJCURlcHQuIEFUUFQKLQkJCQlDSC01MzAwIFR1cmdpCi0JCQkJQXVzdHJhc3NlICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wMy0yRCAgIChoZXgpCQlJQkFTRSBUZWNobm9sb2d5LCBJbmMuCi0wMDAzMkQgICAgIChiYXNlIDE2KQkJSUJBU0UgVGVjaG5vbG9neSwgSW5jLgotCQkJCTVGLCBOby4gMjIxLAotCQkJCUNodW5nIFlhbmcgUmQuCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTJFICAgKGhleCkJCVNjb3BlIEluZm9ybWF0aW9uIE1hbmFnZW1lbnQsIEx0ZC4KLTAwMDMyRSAgICAgKGJhc2UgMTYpCQlTY29wZSBJbmZvcm1hdGlvbiBNYW5hZ2VtZW50LCBMdGQuCi0JCQkJMkYgQ2hhbndvbyBiL28gNzM2IFlvdWtzYW5nLWRvbmcsCi0JCQkJS2FuZ25hbS1ndSwKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy0yRiAgIChoZXgpCQlHbG9iYWwgU3VuIFRlY2hub2xvZ3ksIEluYy4KLTAwMDMyRiAgICAgKGJhc2UgMTYpCQlHbG9iYWwgU3VuIFRlY2hub2xvZ3ksIEluYy4KLQkJCQlOby4gMTMsIFR1bmcgWXVhbiBSZC4sCi0JCQkJSnVuZyBMaSBJbmR1c3RyaWFsIFBhcmsgSnVuZyBMaSBDaXR5Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy0zMCAgIChoZXgpCQlJbWFnZW5pY3MsIENvLiwgTHRkLgotMDAwMzMwICAgICAoYmFzZSAxNikJCUltYWdlbmljcywgQ28uLCBMdGQuCi0JCQkJMS0zMS01IEtva3VyeW8tQ2hvCi0JCQkJQ2hvZnUtQ2l0eSBUb2t5bwotCQkJCTE4Mi0wMDIyIAotCQkJCUpBUEFOCi0KLTAwLTAzLTMxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDMzMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0zMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzMzIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMzMgICAoaGV4KQkJRGlnaXRlbCBDby4sIEx0ZC4KLTAwMDMzMyAgICAgKGJhc2UgMTYpCQlEaWdpdGVsIENvLiwgTHRkLgotCQkJCTgzNS02LCBZb2tzYW0tZG9uZwotCQkJCUthbmduYW0tZ3UsIDEzNS0wODAsIFNlb3VsLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy0zNCAgIChoZXgpCQlOZXdwb3J0IEVsZWN0cm9uaWNzCi0wMDAzMzQgICAgIChiYXNlIDE2KQkJTmV3cG9ydCBFbGVjdHJvbmljcwotCQkJCTIyMjkgU28uIFlhbGUgU3QuCi0JCQkJU2FudGEgQW5hIENBIDkyNzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0zNSAgIChoZXgpCQlNaXJhZSBUZWNobm9sb2d5Ci0wMDAzMzUgICAgIChiYXNlIDE2KQkJTWlyYWUgVGVjaG5vbG9neQotCQkJCTIxMS0xNSwgSG9uIEh5dW4tZG9uZywKLQkJCQlLYW5nbmFtLWt1IDEzNS0wMTAKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTM2ICAgKGhleCkJCVpldGVzIFRlY2hub2xvZ2llcwotMDAwMzM2ICAgICAoYmFzZSAxNikJCVpldGVzIFRlY2hub2xvZ2llcwotCQkJCTMgUnVlIERlIFN0cmFzIEJvdXJnCi0JCQkJMTEzMCBCcnVzc2VscwotCQkJCUJFTEdJVU0KLQotMDAtMDMtMzcgICAoaGV4KQkJVmFvbmUsIEluYy4KLTAwMDMzNyAgICAgKGJhc2UgMTYpCQlWYW9uZSwgSW5jLgotCQkJCTZGIEt5ZW1vbmcgQXJ0IENlbnRlciwKLQkJCQk3NzIgWXVrc2FuMi1Eb25nIEthbmcgSGFtR3UsIFNlb3VsLAotCQkJCTEzNS0wODIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMzggICAoaGV4KQkJT2FrIFRlY2hub2xvZ3kKLTAwMDMzOCAgICAgKGJhc2UgMTYpCQlPYWsgVGVjaG5vbG9neQotCQkJCTEzOSBLaWZlciBDb3VydAotCQkJCVN1bm55dmFsZSBDQSA5NDA4Ni01MTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0zOSAgIChoZXgpCQlFdXJvbG9naWMgU3lzdGVtcywgTHRkLgotMDAwMzM5ICAgICAoYmFzZSAxNikJCUV1cm9sb2dpYyBTeXN0ZW1zLCBMdGQuCi0JCQkJQ2xvbnNoYXVnaCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUNsb25zaGF1Z2ggRHVibGluIDE3IAotCQkJCUlSRUxBTkQKLQotMDAtMDMtM0EgICAoaGV4KQkJU2lsaWNvbiBXYXZlLCBJbmMuCi0wMDAzM0EgICAgIChiYXNlIDE2KQkJU2lsaWNvbiBXYXZlLCBJbmMuCi0JCQkJNjI1NiBHcmVlbndpY2ggRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTNCICAgKGhleCkJCVRBTUkgVGVjaCBDby4sIEx0ZC4KLTAwMDMzQiAgICAgKGJhc2UgMTYpCQlUQU1JIFRlY2ggQ28uLCBMdGQuCi0JCQkJNEYsIENodW5nZG8gQmVuY2hlciBUb3duCi0JCQkJNjA2IFRhbmJhbmctRG9uZywgU2VvLUd1Ci0JCQkJVGFlam9uICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtM0MgICAoaGV4KQkJRGFpZGVuIENvLiwgTHRkLgotMDAwMzNDICAgICAoYmFzZSAxNikJCURhaWRlbiBDby4sIEx0ZC4KLQkJCQkyMTAwLTE5IFR1dHVtaSwgS2FtaW1pbmUtbWFjaGkKLQkJCQlNaXlha2ktZ3VuLCBTYWdhLWtlbgotCQkJCUpBUEFOCi0KLTAwLTAzLTNEICAgKGhleCkJCUlMU0hpbiBMYWIKLTAwMDMzRCAgICAgKGJhc2UgMTYpCQlJTFNIaW4gTGFiCi0JCQkJS0NTIEIvRCAyMjgtMTMgWW91bmcgRGFwLURvbmcKLQkJCQlTVU5HIERPTkctR1UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy0zRSAgIChoZXgpCQlUYXRleWFtYSBTeXN0ZW0gTGFib3JhdG9yeSBDby4sIEx0ZC4KLTAwMDMzRSAgICAgKGJhc2UgMTYpCQlUYXRleWFtYSBTeXN0ZW0gTGFib3JhdG9yeSBDby4sIEx0ZC4KLQkJCQkzMCBTaGltb25vYmFuIE95YW1hLWNobwotCQkJCUthbWluaWthd2EtZ3VuIFRveWFtYSBQcm9mLgotCQkJCTkzMC0xMzA1Ci0JCQkJSkFQQU4KLQotMDAtMDMtM0YgICAoaGV4KQkJQmlnQmFuZCBOZXR3b3JrcywgTHRkLgotMDAwMzNGICAgICAoYmFzZSAxNikJCUJpZ0JhbmQgTmV0d29ya3MsIEx0ZC4KLQkJCQkzIEF6cmllbGkgVG93ZXJzCi0JCQkJVGVsLUF2aXYgNjcwMjMKLQkJCQlJU1JBRUwKLQotMDAtMDMtNDAgICAoaGV4KQkJRmxvd2FyZSBXaXJlbGVzcyBTeXN0ZW1zLCBMdGQuCi0wMDAzNDAgICAgIChiYXNlIDE2KQkJRmxvd2FyZSBXaXJlbGVzcyBTeXN0ZW1zLCBMdGQuCi0JCQkJMjggSGFjaGFyb3NoZXQgU3RlZXQKLQkJCQlQLk8uQi4gODEyIE9yLVllaHVkYQotCQkJCTYwMjUwCi0JCQkJSVNSQUVMCi0KLTAwLTAzLTQxICAgKGhleCkJCUF4b24gRGlnaXRhbCBEZXNpZ24KLTAwMDM0MSAgICAgKGJhc2UgMTYpCQlBeG9uIERpZ2l0YWwgRGVzaWduCi0JCQkJTGFuZ2UgV2FnZW5zdHJhYXQgNTUKLQkJCQlOTC01MTI2IEJCIEdJTFpFCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDMtNDIgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDAzNDIgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkIC0gU3RlICMxMDAKLQkJCQlEZXB0LiA2ODAwIEJyYW1wdG9uICBPTiAgTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wMy00MyAgIChoZXgpCQlNYXJ0aW4gUHJvZmVzc2lvbmFsIEEvUwotMDAwMzQzICAgICAoYmFzZSAxNikJCU1hcnRpbiBQcm9mZXNzaW9uYWwgQS9TCi0JCQkJT2xvZiBQYWxtZXMgQWxsZSAxOAotCQkJCURLLTgyMDAgQWFyaHVzbgotCQkJCURFTk1BUksKLQotMDAtMDMtNDQgICAoaGV4KQkJVGlldGVjaC5Dby4sIEx0ZC4KLTAwMDM0NCAgICAgKGJhc2UgMTYpCQlUaWV0ZWNoLkNvLiwgTHRkLgotCQkJCTItMTMtMSBDaGlrYW1hdG9vcmkgTWluYW1pa3UKLQkJCQlOYWdveWEsCi0JCQkJSkFQQU4KLQotMDAtMDMtNDUgICAoaGV4KQkJUm91dHJlayBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAwMzQ1ICAgICAoYmFzZSAxNikJCVJvdXRyZWsgTmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQlOaWxzc2VpIFNoaW4gTWl6b25va3VjaGkgQmxkZy4gMUYKLQkJCQkzLTUtNyBIaXNhbW90bywgVGFrYXRzdS1LdSBLYXdhc2FraS1zaGksCi0JCQkJMjMtMDAxMSAKLQkJCQlKQVBBTgotCi0wMC0wMy00NiAgIChoZXgpCQlIaXRhY2hpIEtva3VzYWkgRWxlY3RyaWMsIEluYy4KLTAwMDM0NiAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIEtva3VzYWkgRWxlY3RyaWMsIEluYy4KLQkJCQkxLTYtMTAgVWNoaWthbmRhCi0JCQkJQ2hpeW9kYS1LdSBUb2t5byBsMTAxCi0JCQkJSkFQQU4KLQotMDAtMDMtNDcgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMDM0NyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCU1TOiAgTEYzLTQyMAotCQkJCTIxMTEgTi5FLiAyNXRoIEF2ZW51ZQotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNDggICAoaGV4KQkJTm9yc2NhbiBJbnN0cnVtZW50cywgTHRkLgotMDAwMzQ4ICAgICAoYmFzZSAxNikJCU5vcnNjYW4gSW5zdHJ1bWVudHMsIEx0ZC4KLQkJCQk3IFRlcnJhY29uIFBsYWNlCi0JCQkJV2lubmlwZWcsIE1hbml0b2JhLAotCQkJCVIySiA0QjMKLQkJCQlDQU5BREEKLQotMDAtMDMtNDkgICAoaGV4KQkJVmlkaWNvZGUgRGF0YWNvbW11bmljYXRpZSBCLlYuCi0wMDAzNDkgICAgIChiYXNlIDE2KQkJVmlkaWNvZGUgRGF0YWNvbW11bmljYXRpZSBCLlYuCi0JCQkJUG9zdGJ1cyA3MTY0Ci0JCQkJMjcwMSBBRCBab2V0ZXJtZWVyCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDMtNEEgICAoaGV4KQkJUklBUyBDb3Jwb3JhdGlvbgotMDAwMzRBICAgICAoYmFzZSAxNikJCVJJQVMgQ29ycG9yYXRpb24KLQkJCQk0NjYwMCBGcmVtb250IEJsdmQuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNEIgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDAzNEIgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkIFN1aXRlIDEwMAotCQkJCURlcHQuIDY4MDAgQnJhbXB0b24gT04gTDZUIDUgUDYKLQkJCQlDQU5BREEKLQotMDAtMDMtNEMgICAoaGV4KQkJU2hhbmdoYWkgRGlnaVZpc2lvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwMzRDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERpZ2lWaXNpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxMUYsIEhlbmcgVG9uZwotCQkJCUludGVybmF0aW9uYWwgQnVpbGRpbmcsIDg2NSBDaGFuZyBOaW5nIFIKLQkJCQlTaGFuZ2hhaSAyMDAwNTAKLQkJCQlDSElOQQotCi0wMC0wMy00RCAgIChoZXgpCQlDaGlhcm8gTmV0d29ya3MsIEx0ZC4KLTAwMDM0RCAgICAgKGJhc2UgMTYpCQlDaGlhcm8gTmV0d29ya3MsIEx0ZC4KLQkJCQlQLk8uIEJveCA4MzI0MjcKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgzLTI0MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTRFICAgKGhleCkJCVBvcyBEYXRhIENvbXBhbnksIEx0ZC4KLTAwMDM0RSAgICAgKGJhc2UgMTYpCQlQb3MgRGF0YSBDb21wYW55LCBMdGQuCi0JCQkJMjc2LTIsIFNlby1IeXVuIERvbmcsCi0JCQkJQnVuLURhbmcgR3UsIFN1bmctbmFtIENpdHksIEt5b3VuZy1HaSBQcgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy00RiAgIChoZXgpCQlTdXItR2FyZCBTZWN1cml0eQotMDAwMzRGICAgICAoYmFzZSAxNikJCVN1ci1HYXJkIFNlY3VyaXR5Ci0JCQkJNDAxIE1hZ25ldGljIERyaXZlCi0JCQkJVW5pdHMgMjQtMjgsIERvd25zdmlldwotCQkJCU9udGFyaW8gIE0zSiAzSDkKLQkJCQlDQU5BREEKLQotMDAtMDMtNTAgICAoaGV4KQkJQlRJQ0lOTyBTUEEKLTAwMDM1MCAgICAgKGJhc2UgMTYpCQlCVElDSU5PIFNQQQotCQkJCVZpYSBMLiBNYW5hcmEsIDQKLQkJCQkyMjAzNiBFcmJhIChDTykKLQkJCQlJVEFMWQotCi0wMC0wMy01MSAgIChoZXgpCQlEaWVib2xkLCBJbmMuCi0wMDAzNTEgICAgIChiYXNlIDE2KQkJRGllYm9sZCwgSW5jLgotCQkJCTU5OTUgTWF5ZmFpciBSb2FkCi0JCQkJTm9ydGggQ2FudG9uIE9IIDQ0NzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy01MiAgIChoZXgpCQlDb2x1YnJpcyBOZXR3b3JrcwotMDAwMzUyICAgICAoYmFzZSAxNikJCUNvbHVicmlzIE5ldHdvcmtzCi0JCQkJNDQwIEFybWFuZC1GcmFwcGllcgotCQkJCUxhdmFsIChRdWViZWMpCi0JCQkJSDdWIDRCNAotCQkJCUNBTkFEQQotCi0wMC0wMy01MyAgIChoZXgpCQlNaXRhYywgSW5jLgotMDAwMzUzICAgICAoYmFzZSAxNikJCU1pdGFjLCBJbmMuCi0JCQkJTm8uIDIsIENodW5nLUhzaWFvIFN0cmVldAotCQkJCUNoaXR1IEtlZWx1bmcsIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtNTQgICAoaGV4KQkJRmliZXIgTG9naWMgQ29tbXVuaWNhdGlvbnMKLTAwMDM1NCAgICAgKGJhc2UgMTYpCQlGaWJlciBMb2dpYyBDb21tdW5pY2F0aW9ucwotCQkJCTVGLTMsIE5vLiA5LCBQcm9zcGVyaXR5IFJvYWQgT25lLAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtNTUgICAoaGV4KQkJVGVyYUJlYW0gSW50ZXJuZXQgU3lzdGVtcwotMDAwMzU1ICAgICAoYmFzZSAxNikJCVRlcmFCZWFtIEludGVybmV0IFN5c3RlbXMKLQkJCQkxNDgzMyBORSA4N3RoIFN0LiwgQmxkZy4gQwotCQkJCVJlZG1vbmQgV0EgOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTU2ICAgKGhleCkJCVdpbmNvciBOaXhkb3JmIEludGVybmF0aW9uYWwgR21iSAotMDAwMzU2ICAgICAoYmFzZSAxNikJCVdpbmNvciBOaXhkb3JmIEludGVybmF0aW9uYWwgR21iSAotCQkJCUhlaW56LU5peGRvcmYgUmluZyAxCi0JCQkJRC0zMzEwNiBQYWRlcmJvcm4gCi0JCQkJR0VSTUFOWQotCi0wMC0wMy01NyAgIChoZXgpCQlJbnRlcnZvaWNlLUJyaXRlLCBJbmMuCi0wMDAzNTcgICAgIChiYXNlIDE2KQkJSW50ZXJ2b2ljZS1Ccml0ZSwgSW5jLgotCQkJCTE3ODExIFdhdGVydmlldyBQa3d5LgotCQkJCURhbGxhcyBUWCA3NTI1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNTggICAoaGV4KQkJSGFueWFuZyBEaWdpdGVjaCBDby4sIEx0ZC4KLTAwMDM1OCAgICAgKGJhc2UgMTYpCQlIYW55YW5nIERpZ2l0ZWNoIENvLiwgTHRkLgotCQkJCTEzRiwgQWNldHdpbnRvd2VyMiwgMjEyLTMwLCBHdXJvLURvbmcKLQkJCQlHdXJvLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy01OSAgIChoZXgpCQlEaWdpdGFsU2lzCi0wMDAzNTkgICAgIChiYXNlIDE2KQkJRGlnaXRhbFNpcwotCQkJCUItMTQwNSBTYW1obyBCbGRnLgotCQkJCTI3NS02IFlhbmdqYWUKLQkJCQlTZW9jaG8gU2VvdWwsIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy01QSAgIChoZXgpCQlQaG90cm9uIExpbWl0ZWQKLTAwMDM1QSAgICAgKGJhc2UgMTYpCQlQaG90cm9uIExpbWl0ZWQKLQkJCQkxLTEtOCwgRnVqaW1pLAotCQkJCUNoaXlvZGEta3UgIDEwMi0wMDcxCi0JCQkJSkFQQU4KLQotMDAtMDMtNUIgICAoaGV4KQkJQnJpZGdlV2F2ZSBDb21tdW5pY2F0aW9ucwotMDAwMzVCICAgICAoYmFzZSAxNikJCUJyaWRnZVdhdmUgQ29tbXVuaWNhdGlvbnMKLQkJCQkzMzUwIFRob21hZCBSb2FkCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTVDICAgKGhleCkJCVNhaW50IFNvbmcgQ29ycC4KLTAwMDM1QyAgICAgKGJhc2UgMTYpCQlTYWludCBTb25nIENvcnAuCi0JCQkJNEYsIE5vLiAxMiwgTGFuZSA5NCwgVHNhbyBUaSBXemkKLQkJCQlTaGVuIEtlbmcgSHNpYW5nLCBUYWlwZWkgSHNpZW4KLQkJCQkyMjIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTVEICAgKGhleCkJCUJvc3VuZyBIaS1OZXQgQ28uLCBMdGQuCi0wMDAzNUQgICAgIChiYXNlIDE2KQkJQm9zdW5nIEhpLU5ldCBDby4sIEx0ZC4KLQkJCQlZb3VuZ2lsIEIvTyAyRiwKLQkJCQlZYW5nSmFlLWRvbmcgMTItNywgU2VvY2hvLWd1LCBTZW91bAotCQkJCTEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtNUUgICAoaGV4KQkJTWV0cm9wb2xpdGFuIEFyZWEgTmV0d29ya3MsIEluYy4KLTAwMDM1RSAgICAgKGJhc2UgMTYpCQlNZXRyb3BvbGl0YW4gQXJlYSBOZXR3b3JrcywgSW5jLgotCQkJCTEyOTkgUGVubnN5bHZhbmlhIEF2ZW51ZSwgTlcKLQkJCQlOaW50aCBGbG9vcgotCQkJCVdhc2hpbmd0b24gREMgMjAwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTVGICAgKGhleCkJCVBydWVmdGVjaG5payBDb25kaXRpb24gTW9uaXRvcmluZyBHbWJIICYgQ28uIEtHCi0wMDAzNUYgICAgIChiYXNlIDE2KQkJUHJ1ZWZ0ZWNobmlrIENvbmRpdGlvbiBNb25pdG9yaW5nIEdtYkggJiBDby4gS0cKLQkJCQlGcmFuei1CYXllci1TdHIuIDE0Ci0JCQkJRC04ODIxMyBSYXZlbnNidXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wMy02MCAgIChoZXgpCQlQQUMgSW50ZXJhY3RpdmUgVGVjaG5vbG9neSwgSW5jLgotMDAwMzYwICAgICAoYmFzZSAxNikJCVBBQyBJbnRlcmFjdGl2ZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNkYsIE5vLiAzMCwgQWxsZXkgMTgsIExhbmUgNDc4Ci0JCQkJSmFpIEd1YW5nIFJvYWQsIE5laS1IdQotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy02MSAgIChoZXgpCQlXaWRjb21tLCBJbmMuCi0wMDAzNjEgICAgIChiYXNlIDE2KQkJV2lkY29tbSwgSW5jLgotCQkJCTk2NDUgU2NyYW50b24gUm9hZAotCQkJCVN1aXRlIDIwNQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNjIgICAoaGV4KQkJVm9kdGVsIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAzNjIgICAgIChiYXNlIDE2KQkJVm9kdGVsIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTJGLCBObyAxNjYgQ2hpZW4tWWkgUm9hZAotCQkJCUNodW5nLUhvIENpdHksIFRhaXBlaSBDb3VudHkKLQkJCQkyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTYzICAgKGhleCkJCU1pcmFlc3lzIENvLiwgTHRkLgotMDAwMzYzICAgICAoYmFzZSAxNikJCU1pcmFlc3lzIENvLiwgTHRkLgotCQkJCTY1MC0yIDQgRmwuIERhZW15dW5nIEJsZGcuCi0JCQkJWXVrc2FtLCBLYW5nbmFtLCBTZW91bCwKLQkJCQkxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTY0ICAgKGhleCkJCVNjZW5peCBTZW1pY29uZHVjdG9yLCBJbmMuCi0wMDAzNjQgICAgIChiYXNlIDE2KQkJU2Nlbml4IFNlbWljb25kdWN0b3IsIEluYy4KLQkJCQkxMzMwIENoYXJsZXN0b24gUmQuCi0JCQkJTW91bnRhaW52aWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy02NSAgIChoZXgpCQlLaXJhIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLTAwMDM2NSAgICAgKGJhc2UgMTYpCQlLaXJhIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLQkJCQk2dGggRmwuIEFuYW0gVG93ZXIsCi0JCQkJNzAyLTEwIFllb2tzYW0tZG9uZywgS2FuZ25hbS1rdSwgU2VvdWwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtNjYgICAoaGV4KQkJQVNNIFBhY2lmaWMgVGVjaG5vbG9neQotMDAwMzY2ICAgICAoYmFzZSAxNikJCUFTTSBQYWNpZmljIFRlY2hub2xvZ3kKLQkJCQkxMi9GIFdhdHNvbiBDZW50cmUKLQkJCQkxNiBLdW5nIFlpcCBTdC4KLQkJCQlLd2FpIENodW5nICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDMtNjcgICAoaGV4KQkJSmFzbWluZSBOZXR3b3JrcywgSW5jLgotMDAwMzY3ICAgICAoYmFzZSAxNikJCUphc21pbmUgTmV0d29ya3MsIEluYy4KLQkJCQkxOTQwIFphbmtlciBSb2FkCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTY4ICAgKGhleCkJCUVtYmVkb25lIENvLiwgTHRkLgotMDAwMzY4ICAgICAoYmFzZSAxNikJCUVtYmVkb25lIENvLiwgTHRkLgotCQkJCUZsLiA5IEFubmV4IFNhbWh3YW4gQi9ELiAxNy0yNgotCQkJCVllb2lkby1Eb25nLCBZb3VuZ2RldW5ncG8ta3UsCi0JCQkJU2VvdWwgIDE1MC0wMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy02OSAgIChoZXgpCQlOaXBwb24gQW50ZW5uYSBDby4sIEx0ZC4KLTAwMDM2OSAgICAgKGJhc2UgMTYpCQlOaXBwb24gQW50ZW5uYSBDby4sIEx0ZC4KLQkJCQlOby4gNDktOCwgTmlzaGlvZ3UsCi0JCQkJNy1DaG9tZSBBcmFrYXdhLWt1LAotCQkJCVRva3lvICAxMTYtODU2MQotCQkJCUpBUEFOCi0KLTAwLTAzLTZBICAgKGhleCkJCU1haW5uZXQsIEx0ZC4KLTAwMDM2QSAgICAgKGJhc2UgMTYpCQlNYWlubmV0LCBMdGQuCi0JCQkJUC5PLiBCb3ggMjMyNAotCQkJCUtmYXIgU2FiYSA0NDY0MQotCQkJCUlTUkFFTAotCi0wMC0wMy02QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzNkIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNkMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMzZDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTZEICAgKGhleCkJCVJ1bnRvcCwgSW5jLgotMDAwMzZEICAgICAoYmFzZSAxNikJCVJ1bnRvcCwgSW5jLgotCQkJCTEsIExhbmUgMjEsIEhzaW4gSHVhIFJvYWQsIEt1ZWlzaGFuCi0JCQkJSW5kdXN0cmlhbCBQYXJrLCBUYW95dWFuIENpdHksCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy02RSAgIChoZXgpCQlOaWNvbiBTeXN0ZW1zIChQdHkpIExpbWl0ZWQKLTAwMDM2RSAgICAgKGJhc2UgMTYpCQlOaWNvbiBTeXN0ZW1zIChQdHkpIExpbWl0ZWQKLQkJCQkxMSBUZXJtbyBTdHJlZXQKLQkJCQlUZWNobm9wYXJrIFN0ZWxsZW5ib3NjaCwgNzYwMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0wMy02RiAgIChoZXgpCQlUZWxzZXkgU1BBCi0wMDAzNkYgICAgIChiYXNlIDE2KQkJVGVsc2V5IFNQQQotCQkJCVZpYWxlIERlbGwgSW5kdXN0cmlhLCAxCi0JCQkJMzEgMDU1IFF1aW50bwotCQkJCURpVHJldmlzby0gIAotCQkJCUlUQUxZCi0KLTAwLTAzLTcwICAgKGhleCkJCU5YVFYsIEluYy4KLTAwMDM3MCAgICAgKGJhc2UgMTYpCQlOWFRWLCBJbmMuCi0JCQkJNTk1NSBEZSBTb3RvIEF2ZSwgIzE2MAotCQkJCVdvb2RsYW5kIEhpbGxzIENBIDkxMzY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy03MSAgIChoZXgpCQlBY29teiBOZXR3b3JrcyBDb3JwLgotMDAwMzcxICAgICAoYmFzZSAxNikJCUFjb216IE5ldHdvcmtzIENvcnAuCi0JCQkJN3RoIEZsLiwgV29vc2VvayBCbGRnLiwgMTAwNy0zNwotCQkJCVNhZGFuZzEtZG9uZywgRG9uZ2phay1ndSwKLQkJCQlTZW91bCAgMTU2LTA5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTcyICAgKGhleCkJCVVMQU4KLTAwMDM3MiAgICAgKGJhc2UgMTYpCQlVTEFOCi0JCQkJNUYtMywgTm8uIDMxLTEsIExhbmUgMTY5LAotCQkJCUthbmcgTmluZyBTdC4sIEhzaS1DaGluIENpdHksIFRhaXBlaSBIc2kKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtNzMgICAoaGV4KQkJQXNlbHNhbiBBLlMKLTAwMDM3MyAgICAgKGJhc2UgMTYpCQlBc2Vsc2FuIEEuUwotCQkJCU1laG1ldCBBa2lmIEVyc295IE1haC4KLQkJCQkxNiBDYWQuIE5vLiAxNiBNYWN1bmtveS9BbmthcmEKLQkJCQlUVVJLRVkKLQkJCQlUVVJLRVkKLQotMDAtMDMtNzQgICAoaGV4KQkJQ29udHJvbCBNaWNyb3N5c3RlbXMKLTAwMDM3NCAgICAgKGJhc2UgMTYpCQlDb250cm9sIE1pY3Jvc3lzdGVtcwotCQkJCTQ4IFN0ZWFjaWUgRHJpdmUKLQkJCQlPdHRhd2EgT250YXJpbyBLMksgMkE5Ci0JCQkJQ0FOQURBCi0KLTAwLTAzLTc1ICAgKGhleCkJCU5ldE1lZGlhLCBJbmMuCi0wMDAzNzUgICAgIChiYXNlIDE2KQkJTmV0TWVkaWEsIEluYy4KLQkJCQkxMDk0MCBOLiBTdGFsbGFyZCBQbGFjZQotCQkJCVR1c2NvbiBBWiA4NTczNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNzYgICAoaGV4KQkJR3JhcGh0ZWMgVGVjaG5vbG9neSwgSW5jLgotMDAwMzc2ICAgICAoYmFzZSAxNikJCUdyYXBodGVjIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk0NSBQYXJrZXIsIFN1aXRlIEEKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTc3ICAgKGhleCkJCUdpZ2FiaXQgV2lyZWxlc3MKLTAwMDM3NyAgICAgKGJhc2UgMTYpCQlHaWdhYml0IFdpcmVsZXNzCi0JCQkJMzA5OSBOLiBGaXJzdCBTdHJlZXQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNzggICAoaGV4KQkJSFVNQVggQ28uLCBMdGQuCi0wMDAzNzggICAgIChiYXNlIDE2KQkJSFVNQVggQ28uLCBMdGQuCi0JCQkJMjcxLTIsIFN1aC1oeXVuLURvbmcsCi0JCQkJQnVuZGFuZy1HdSwgU3VuZ25hbS1DaXR5LCBLeW9uZ2dpLURvLCA0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy03OSAgIChoZXgpCQlQcm9zY2VuZCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMzc5ICAgICAoYmFzZSAxNikJCVByb3NjZW5kIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMkYsIE5vLjM2LCBJbmR1c3RyeSBFLiBSZC4gSVYsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy03QSAgIChoZXgpCQlUYWl5byBZdWRlbiBDby4sIEx0ZC4KLTAwMDM3QSAgICAgKGJhc2UgMTYpCQlUYWl5byBZdWRlbiBDby4sIEx0ZC4KLQkJCQk4LTEgU2FrYWUtQ2hvCi0JCQkJVGFrYXNha2ktU2hpIEd1bm1hIDM3MC04NTIyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMy03QiAgIChoZXgpCQlJREVDIElaVU1JIENvcnBvcmF0aW9uCi0wMDAzN0IgICAgIChiYXNlIDE2KQkJSURFQyBJWlVNSSBDb3Jwb3JhdGlvbgotCQkJCTctMzEsIE5pc2hpbWl5YWhhcmEKLQkJCQkxLUNob21lIFlvZG9nYXdhLWt1LiBPc2FrYSA1MzItODU1MAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtN0MgICAoaGV4KQkJQ29heCBNZWRpYQotMDAwMzdDICAgICAoYmFzZSAxNikJCUNvYXggTWVkaWEKLQkJCQkxMjIwIE9hayBJbmR1c3RyaWFsIExhbmUKLQkJCQlTdWl0ZSBCCi0JCQkJQ3VtbWluZyBHQSAzMDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtN0QgICAoaGV4KQkJU3RlbGxjb20KLTAwMDM3RCAgICAgKGJhc2UgMTYpCQlTdGVsbGNvbQotCQkJCTEwNTI1IFZpc3RhIFNvcnJlbnRvIFBhcmt3YXkKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTdFICAgKGhleCkJCVBPUlRlY2ggQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDM3RSAgICAgKGJhc2UgMTYpCQlQT1JUZWNoIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTUwLCBTaGlhbmctU2h1bmcgTi4gUmQuLAotCQkJCVRhaWNodW5nIFRhaXdhbiA0MDMsIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtN0YgICAoaGV4KQkJQXRoZXJvcyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMzdGICAgICAoYmFzZSAxNikJCUF0aGVyb3MgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk1NDgwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy04MCAgIChoZXgpCQlTU0ggQ29tbXVuaWNhdGlvbnMgU2VjdXJpdHkgQ29ycC4KLTAwMDM4MCAgICAgKGJhc2UgMTYpCQlTU0ggQ29tbXVuaWNhdGlvbnMgU2VjdXJpdHkgQ29ycC4KLQkJCQlGcmVkcmlraW5rYXR1IDQyCi0JCQkJRmluIDAxMDAgSGVsc2lua2kKLQkJCQlGSU5MQU5ECi0JCQkJRklOTEFORAotCi0wMC0wMy04MSAgIChoZXgpCQlJbmdlbmljbyBJbnRlcm5hdGlvbmFsCi0wMDAzODEgICAgIChiYXNlIDE2KQkJSW5nZW5pY28gSW50ZXJuYXRpb25hbAotCQkJCTEvOSBBcG9sbG8gU3RyZWV0Ci0JCQkJV2Fycmlld29vZCBOU1cgMjEwMgotCQkJCUFVU1RSQUxJQQotCi0wMC0wMy04MiAgIChoZXgpCQlBLU9uZSBDby4sIEx0ZC4KLTAwMDM4MiAgICAgKGJhc2UgMTYpCQlBLU9uZSBDby4sIEx0ZC4KLQkJCQk2LTktMjAsIFNoaW1vaWNoaWJhLWNobywKLQkJCQlLYXN1Z2FpLXNoaSwgQWljaGkta2VuLCA0ODYtMDg1MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtODMgICAoaGV4KQkJTWV0ZXJhIE5ldHdvcmtzLCBJbmMuCi0wMDAzODMgICAgIChiYXNlIDE2KQkJTWV0ZXJhIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTIwMiBSaWNoYXJkc29uIERyLgotCQkJCVN1aXRlIDEwMAotCQkJCVJpY2hhcmRzb24gVFggNzUwODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTg0ICAgKGhleCkJCUFFVEEKLTAwMDM4NCAgICAgKGJhc2UgMTYpCQlBRVRBCi0JCQkJS2VwbGVyIDYKLQkJCQkxOC0yMiBhdmVudWUgRWRvdWFyZCBIZXJyaW90Ci0JCQkJTGUgUGxlc3NpcyBSb2JpbnNvbiAgOTIzNTAKLQkJCQlGUkFOQ0UKLQotMDAtMDMtODUgICAoaGV4KQkJQWN0ZWxpcyBOZXR3b3JrcywgSW5jLgotMDAwMzg1ICAgICAoYmFzZSAxNikJCUFjdGVsaXMgTmV0d29ya3MsIEluYy4KLQkJCQkxIEJhemVsIFN0LiwgUC5PLkIuIDEwMTczCi0JCQkJUGV0YWggLSBUaWt2YSA0OTEwMwotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wMy04NiAgIChoZXgpCQlIbyBOZXQsIEluYy4KLTAwMDM4NiAgICAgKGJhc2UgMTYpCQlIbyBOZXQsIEluYy4KLQkJCQlWZW50dXJlIENvbXBhbnkgQ2VudGVyCi0JCQkJU2FuIDk0LTYgWWl1aS1Eb25nLCBQYWxkYWwtR3UsIFN1d29uLXNpLAotCQkJCUtPUkVBIDQ0Mi03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtODcgICAoaGV4KQkJQmxhemUgTmV0d29yayBQcm9kdWN0cwotMDAwMzg3ICAgICAoYmFzZSAxNikJCUJsYXplIE5ldHdvcmsgUHJvZHVjdHMKLQkJCQk1MTgwIEhhY2llbmRhIERyaXZlCi0JCQkJRHVibGluIENBIDk0NTY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy04OCAgIChoZXgpCQlGYXN0ZmFtZSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwMzg4ICAgICAoYmFzZSAxNikJCUZhc3RmYW1lIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJN0YsIE5vLiAxMTEsIEhzaW5nIERlIFJkLiwKLQkJCQlTYW5jaHVuZywgVGFpcGVpLAotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy04OSAgIChoZXgpCQlQbGFudHJvbmljcwotMDAwMzg5ICAgICAoYmFzZSAxNikJCVBsYW50cm9uaWNzCi0JCQkJMzQ1IEVuY2luYWwgU3QuCi0JCQkJU2FudGEgQ3J1eiBDQSA5NTA2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOEEgICAoaGV4KQkJQW1lcmljYSBPbmxpbmUsIEluYy4KLTAwMDM4QSAgICAgKGJhc2UgMTYpCQlBbWVyaWNhIE9ubGluZSwgSW5jLgotCQkJCTQ0OTAwIFByZW50aWNlIERyaXZlCi0JCQkJRHVsbGVzIFZBIDIwMTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy04QiAgIChoZXgpCQlQTFVTLU9ORSBJJlQsIEluYy4KLTAwMDM4QiAgICAgKGJhc2UgMTYpCQlQTFVTLU9ORSBJJlQsIEluYy4KLQkJCQk3RiwgQS1TYW4gVmVudHVyZSBUb3dlciwKLQkJCQlZYW5nSmFlLWRvbmcsIFNlb2Noby1rdSwgU2VvdWwsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtOEMgICAoaGV4KQkJVG90YWwgSW1wYWN0Ci0wMDAzOEMgICAgIChiYXNlIDE2KQkJVG90YWwgSW1wYWN0Ci0JCQkJMjk1IFdpbGxpcyBBdmUuCi0JCQkJU3VpdGUgRQotCQkJCUNhbWFyaWxsbyBDQSA5MzAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOEQgICAoaGV4KQkJUENTIFJldmVudWUgQ29udHJvbCBTeXN0ZW1zLCBJbmMuCi0wMDAzOEQgICAgIChiYXNlIDE2KQkJUENTIFJldmVudWUgQ29udHJvbCBTeXN0ZW1zLCBJbmMuCi0JCQkJNTYwIFN5bHZhbiBBdmUuCi0JCQkJRW5nbGV3b29kIENsaWZmcyBOSiAwNzYzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOEUgICAoaGV4KQkJQXRvZ2EgU3lzdGVtcywgSW5jLgotMDAwMzhFICAgICAoYmFzZSAxNikJCUF0b2dhIFN5c3RlbXMsIEluYy4KLQkJCQk0OTAyNiBNaWxtb250IERyaXZlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOEYgICAoaGV4KQkJV2VpbnNjaGVsIENvcnBvcmF0aW9uCi0wMDAzOEYgICAgIChiYXNlIDE2KQkJV2VpbnNjaGVsIENvcnBvcmF0aW9uCi0JCQkJNTMwNSBTcGVjdHJ1bSBEcml2ZQotCQkJCUZyZWRlcmljayBNRCAyMTcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOTAgICAoaGV4KQkJRGlnaXRhbCBWaWRlbyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMzkwICAgICAoYmFzZSAxNikJCURpZ2l0YWwgVmlkZW8gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk1MDAgVy4gQ3VtbWluZ3MgUGFyawotCQkJCVN1aXRlIDIwMDAKLQkJCQlXb2J1cm4gTUEgMDc4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTkxICAgKGhleCkJCUFkdmFuY2VkIERpZ2l0YWwgQnJvYWRjYXN0LCBMdGQuCi0wMDAzOTEgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgRGlnaXRhbCBCcm9hZGNhc3QsIEx0ZC4KLQkJCQk4RiwgMTQ1IENodW5nIFNoYW4gTi4gUmQuIFNlYy4gMiwKLQkJCQlUYWlwZWksIDEwNCwKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtOTIgICAoaGV4KQkJSHl1bmRhaSBUZWxldGVrIENvLiwgTHRkLgotMDAwMzkyICAgICAoYmFzZSAxNikJCUh5dW5kYWkgVGVsZXRlayBDby4sIEx0ZC4KLQkJCQlCLTUwMSwgVGVjaG5vIFBhcmssIDE0OCBZYXRhcC1kb25nLAotCQkJCUJvb25kYW5nLWd1LCBTdW5nbmFtLXNpLCBLeXVuZ2dpLWRvLCA0NjMKLQkJCQlLT1JFQSBSZXB1YmxpYwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy05MyAgIChoZXgpCQlBcHBsZSBDb21wdXRlciwgSW5jLgotMDAwMzkzICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyLCBJbmMuCi0JCQkJMjA2NTAgVmFsbGV5IEdyZWVuIERyLgotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOTQgICAoaGV4KQkJQ29ubmVjdCBPbmUKLTAwMDM5NCAgICAgKGJhc2UgMTYpCQlDb25uZWN0IE9uZQotCQkJCTIgSGFuYWdhciBTdHJlZXQKLQkJCQlLZmFyIFNhYmEgNDQ0MjUKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDMtOTUgICAoaGV4KQkJQ2FsaWZvcm5pYSBBbXBsaWZpZXIKLTAwMDM5NSAgICAgKGJhc2UgMTYpCQlDYWxpZm9ybmlhIEFtcGxpZmllcgotCQkJCTQ2MCBDYWxsZSBTYW4gUGFibG8KLQkJCQlDYW1hcmlsbG8gQ0EgOTMwMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTk2ICAgKGhleCkJCUVaIENhc3QgQ28uLCBMdGQuCi0wMDAzOTYgICAgIChiYXNlIDE2KQkJRVogQ2FzdCBDby4sIEx0ZC4KLQkJCQk2dGggRmxvb3IsIEp1bmdBbmcgQnVpbGRpbmcsCi0JCQkJOTktMSwgTm9uaHl1bi1Eb25nICgxMzUtMDEwKSBLYW5nbmFtLWt1LAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTk3ICAgKGhleCkJCVdhdGNoZnJvbnQgTGltaXRlZAotMDAwMzk3ICAgICAoYmFzZSAxNikJCVdhdGNoZnJvbnQgTGltaXRlZAotCQkJCTMgVmljdG9yaWEgV2FsawotCQkJCVdva2luZ2hhbSAgUkc0MCA1WUwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMy05OCAgIChoZXgpCQlXSVNJCi0wMDAzOTggICAgIChiYXNlIDE2KQkJV0lTSQotCQkJCVdpbGhlbG0tU2lobi1TdHIuIDUtNwotCQkJCUQtNzUyMjMgTmllZmVybi1PZXNjaGVsYnJvbm4gCi0JCQkJR0VSTUFOWQotCi0wMC0wMy05OSAgIChoZXgpCQlEb25nanUgSW5mb3JtYXRpb25zICYgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDAzOTkgICAgIChiYXNlIDE2KQkJRG9uZ2p1IEluZm9ybWF0aW9ucyAmIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCSMzMDUsIEV1bnN1ayBCbGRnLiBTYW1zdW5nLWRvbmcKLQkJCQlLYW5nbmFtLWd1IFNlb3VsCi0JCQkJUmVwdWJsaWMgb2YgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtOUEgICAoaGV4KQkJU2lDb25uZWN0Ci0wMDAzOUEgICAgIChiYXNlIDE2KQkJU2lDb25uZWN0Ci0JCQkJRGVsdGEgMTAwCi0JCQkJV2VsdG9uIFJvYWQKLQkJCQlTd2luZG9uICBTTjUgN1hQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDMtOUIgICAoaGV4KQkJTmV0Q2hpcCBUZWNobm9sb2d5LCBJbmMuCi0wMDAzOUIgICAgIChiYXNlIDE2KQkJTmV0Q2hpcCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMzM1IFBpb25lZXIgV2F5Ci0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOUMgICAoaGV4KQkJT3B0aU1pZ2h0IENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAzOUMgICAgIChiYXNlIDE2KQkJT3B0aU1pZ2h0IENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJOTgwIExpbmRhIFZpc3RhIEF2ZW51ZQotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTlEICAgKGhleCkJCVFpc2RhIENvcnBvcmF0aW9uCi0wMDAzOUQgICAgIChiYXNlIDE2KQkJUWlzZGEgQ29ycG9yYXRpb24KLQkJCQkxNTcgU2hhbiBZaW5nIFJvYWQKLQkJCQlHdWVpU2hhbiBUYW95dWFuIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtOUUgICAoaGV4KQkJVGVyYSBTeXN0ZW0gQ28uLCBMdGQuCi0wMDAzOUUgICAgIChiYXNlIDE2KQkJVGVyYSBTeXN0ZW0gQ28uLCBMdGQuCi0JCQkJRG9vc3VuZyBCL0YgUm0gMzAyCi0JCQkJNzY2LTEgU2hpbmNodW5nZG9uZyBTaGlodW5nIENpdHkgS3l1bmdraQotCQkJCVJlcHVibGljIG9mIEtvcmVhCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTlGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDM5RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzQTAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQTEgICAoaGV4KQkJSElQRVIgSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uLCBJbmMuCi0wMDAzQTEgICAgIChiYXNlIDE2KQkJSElQRVIgSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uLCBJbmMuCi0JCQkJMTY3NS03LCBTaW5pbC1kb25nLAotCQkJCVRhZWR1ay1ndSwgVGFlam9uLAotCQkJCTMwNi0yMzAgU291dGggS29yZWEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtQTIgICAoaGV4KQkJQ2F0YXB1bHQgQ29tbXVuaWNhdGlvbnMKLTAwMDNBMiAgICAgKGJhc2UgMTYpCQlDYXRhcHVsdCBDb21tdW5pY2F0aW9ucwotCQkJCTE2MCBTLiBXaGlzbWFuIFJkLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUEzICAgKGhleCkJCU1BVklYLCBMdGQuCi0wMDAzQTMgICAgIChiYXNlIDE2KQkJTUFWSVgsIEx0ZC4KLQkJCQlQT0IgMjE3LCBZb2tuZWFtIElsbGl0LAotCQkJCTIwNjkyCi0JCQkJSVNSQUVMCi0KLTAwLTAzLUE0ICAgKGhleCkJCUltYXRpb24gQ29ycC4KLTAwMDNBNCAgICAgKGJhc2UgMTYpCQlJbWF0aW9uIENvcnAuCi0JCQkJMSBJbWF0aW9uIFBsYWNlCi0JCQkJRGlzY292ZXJ5IDJCLTUwCi0JCQkJT2FrZGFsZSBNTiA1NTEyOC0zNDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BNSAgIChoZXgpCQlNZWRlYSBDb3Jwb3JhdGlvbgotMDAwM0E1ICAgICAoYmFzZSAxNikJCU1lZGVhIENvcnBvcmF0aW9uCi0JCQkJNTcwMSBMaW5kZXJvIENhbnlvbiBSZC4KLQkJCQlCbGRnLiAzLTEwMAotCQkJCVdldGxha2UgVmlsbGFnZSBDQSA5MTM2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQTYgICAoaGV4KQkJVHJheGl0IFRlY2hub2xvZ3ksIEluYy4KLTAwMDNBNiAgICAgKGJhc2UgMTYpCQlUcmF4aXQgVGVjaG5vbG9neSwgSW5jLgotCQkJCTI1NiBHcmVhdCBSb2FkLAotCQkJCVN1aXRlIDE2Ci0JCQkJTGl0dGxldG9uIE1BIDAxNDYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BNyAgIChoZXgpCQlVbml4dGFyIFRlY2hub2xvZ3ksIEluYy4KLTAwMDNBNyAgICAgKGJhc2UgMTYpCQlVbml4dGFyIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxM0YgTm8uIDEwMCBNaW5nIENodWFuIFJvYWQKLQkJCQlIc2luIFRpZW4sIFRhaXBlaSwKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUE4ICAgKGhleCkJCUlET1QgQ29tcHV0ZXJzLCBJbmMuCi0wMDAzQTggICAgIChiYXNlIDE2KQkJSURPVCBDb21wdXRlcnMsIEluYy4KLQkJCQkzRi4sIE5vLiAxMzcsIExhbmUgMjM1Ci0JCQkJUGFvLUNoaWFvIFJvYWQsIEhzaW4tVGllbiBUYWlwZWkgQ291bnRyeQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy1BOSAgIChoZXgpCQlBWENFTlQgTWVkaWEgQUcKLTAwMDNBOSAgICAgKGJhc2UgMTYpCQlBWENFTlQgTWVkaWEgQUcKLQkJCQlUZWNobm9sb2dpZXBhcmsgMTMKLQkJCQkzMzEwMCBQYWRlcmJvcm4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMy1BQSAgIChoZXgpCQlXYXRsb3cKLTAwMDNBQSAgICAgKGJhc2UgMTYpCQlXYXRsb3cKLQkJCQkxMjQxIEJ1bmR5IEJsdmQuCi0JCQkJV2lub25hIE1OIDU1OTg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BQiAgIChoZXgpCQlCcmlkZ2UgSW5mb3JtYXRpb24gU3lzdGVtcwotMDAwM0FCICAgICAoYmFzZSAxNikJCUJyaWRnZSBJbmZvcm1hdGlvbiBTeXN0ZW1zCi0JCQkJNzE3IE9mZmljZSBQYXJrd2F5Ci0JCQkJU3QuIExvdWlzIE1PIDYzMTQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BQyAgIChoZXgpCQlGcm9uaXVzIFNjaHdlaXNzbWFzY2hpbmVuCi0wMDAzQUMgICAgIChiYXNlIDE2KQkJRnJvbml1cyBTY2h3ZWlzc21hc2NoaW5lbgotCQkJCUd1ZW50ZXIgRnJvbml1cyBTdHIuIDEKLQkJCQlBLTQ2MDAgV2Vpcy1UaGFsaGVpbQotCQkJCUFVU1RSSUEKLQkJCQlBVVNUUklBCi0KLTAwLTAzLUFEICAgKGhleCkJCUVtZXJzb24gRW5lcmd5IFN5c3RlbXMgQUIKLTAwMDNBRCAgICAgKGJhc2UgMTYpCQlFbWVyc29uIEVuZXJneSBTeXN0ZW1zIEFCCi0JCQkJU0UtMTQxIDgyIFN0b2NraG9sbQotCQkJCVNXRURFTgotCi0wMC0wMy1BRSAgIChoZXgpCQlBbGxpZWQgQWR2YW5jZWQgTWFudWZhY3R1cmluZyBQdGUsIEx0ZC4KLTAwMDNBRSAgICAgKGJhc2UgMTYpCQlBbGxpZWQgQWR2YW5jZWQgTWFudWZhY3R1cmluZyBQdGUsIEx0ZC4KLQkJCQk3IEludGVybmF0aW9uYWwgQnVzaW5lc3MgUGFyawotCQkJCSMwMi0wMAotCQkJCVNpbmdhcG9yZSA2MDk5MTkKLQkJCQlTSU5HQVBPUkUKLQotMDAtMDMtQUYgICAoaGV4KQkJUGFyYWdlYSBDb21tdW5pY2F0aW9ucwotMDAwM0FGICAgICAoYmFzZSAxNikJCVBhcmFnZWEgQ29tbXVuaWNhdGlvbnMKLQkJCQkyMDcgUGVycnkgUGFya3dheQotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQjAgICAoaGV4KQkJWHNlbnNlIFRlY2hub2xvZ3kgQ29ycC4KLTAwMDNCMCAgICAgKGJhc2UgMTYpCQlYc2Vuc2UgVGVjaG5vbG9neSBDb3JwLgotCQkJCTExIEYsIDIzMiwgU2VjLiAzLCBDaGVuZ1RlaCBSZC4KLQkJCQlUYWlwZWkgVEFJV0FOLCAxMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUIxICAgKGhleCkJCUhvc3BpcmEgSW5jLgotMDAwM0IxICAgICAoYmFzZSAxNikJCUhvc3BpcmEgSW5jLgotCQkJCTc1NSBKYXJ2aXMgRHJpdmUKLQkJCQlNb3JnYW4gSGlsbCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQjIgICAoaGV4KQkJUmFkd2FyZQotMDAwM0IyICAgICAoYmFzZSAxNikJCVJhZHdhcmUKLQkJCQk4IEhhbXJwZSBIb2NodmltCi0JCQkJSmVydXNhbGVtCi0JCQkJSVNSQUVMCi0KLTAwLTAzLUIzICAgKGhleCkJCUlBIExpbmsgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDNCMyAgICAgKGJhc2UgMTYpCQlJQSBMaW5rIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJNkYtNCwgTm8uIDgxIEhzaW4gVGFpCi0JCQkJV3UgUmQuLCBTZWMuIDEgSHNpaC1DaGloLCBUYWlwZWkgSHNpZW4sCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUI0ICAgKGhleCkJCU1hY3JvdGVrIEludGVybmF0aW9uYWwgQ29ycC4KLTAwMDNCNCAgICAgKGJhc2UgMTYpCQlNYWNyb3RlayBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJMkYsIE5vLiAyOCwgTGFuZSA0NgotCQkJCUt3YW5nIEZ1IDYgUm9hZCwKLQkJCQlUYWlwZWkgVGFpcGVpIFRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtQjUgICAoaGV4KQkJRW50cmEgVGVjaG5vbG9neSBDby4KLTAwMDNCNSAgICAgKGJhc2UgMTYpCQlFbnRyYSBUZWNobm9sb2d5IENvLgotCQkJCUZsLiAzLCBOby4gNSwgQWxsZXkgMiwKLQkJCQlTdS1XZWkgTGFuZSwgQ2h1bmctQ2hlbmcgUmQuLCBIc2luLURpZW4sCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUI2ICAgKGhleCkJCVFTSSBDb3Jwb3JhdGlvbgotMDAwM0I2ICAgICAoYmFzZSAxNikJCVFTSSBDb3Jwb3JhdGlvbgotCQkJCTIyMTIgU291dGggV2VzdCBUZW1wbGUgIzUwCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUI3ICAgKGhleCkJCVpBQ0NFU1MgU3lzdGVtcwotMDAwM0I3ICAgICAoYmFzZSAxNikJCVpBQ0NFU1MgU3lzdGVtcwotCQkJCTI3NSBTaG9yZWxpbmUgRHJpdmUsICMxMTAKLQkJCQlSZWR3b29kIENpdHkgQ0EgOTQwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUI4ICAgKGhleCkJCU5ldEtpdCBTb2x1dGlvbnMsIExMQwotMDAwM0I4ICAgICAoYmFzZSAxNikJCU5ldEtpdCBTb2x1dGlvbnMsIExMQwotCQkJCTExMjUtQSBCdXNpbmVzcyBDZW50ZXIgQ2lyY2xlCi0JCQkJVGhvdXNhbmQgT2FrcyBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQjkgICAoaGV4KQkJSHVhbG9uZyBUZWxlY29tIENvLiwgTHRkLgotMDAwM0I5ICAgICAoYmFzZSAxNikJCUh1YWxvbmcgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQk5IEd1YW5naHVhIFN0LgotCQkJCUNoYW5nemhvdSwgSmlhbmdzdSwgMjEzMDAzCi0JCQkJUC5SLiBDSElOQQotCQkJCUNISU5BCi0KLTAwLTAzLUJBICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbgotMDAwM0JBICAgICAoYmFzZSAxNikJCU9yYWNsZSBDb3Jwb3JhdGlvbgotCQkJCTE3IE5ldHdvcmsgQ2lyY2xlCi0JCQkJQnVpbGRpbmcgMTcsIFVNUEsxNy0xMzEKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1CQiAgIChoZXgpCQlTaWduYWwgQ29tbXVuaWNhdGlvbnMgTGltaXRlZAotMDAwM0JCICAgICAoYmFzZSAxNikJCVNpZ25hbCBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0JCQkJVW5pdCAyMTcsIDIvRiwgSEtJVEMsCi0JCQkJNzIgVGF0IENoZWUgQXZlbnVlLCBLTE4uLAotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC0wMy1CQyAgIChoZXgpCQlDT1QgR21iSAotMDAwM0JDICAgICAoYmFzZSAxNikJCUNPVCBHbWJICi0JCQkJR3VldGVyc3RyYXNzZSA1Ci0JCQkJNjQ4MDcgRGllYnVyZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLUJEICAgKGhleCkJCU9tbmlDbHVzdGVyIFRlY2hub2xvZ2llcywgSW5jLgotMDAwM0JEICAgICAoYmFzZSAxNikJCU9tbmlDbHVzdGVyIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTQ5NTAgQmx1ZSBMYWtlIERyaXZlCi0JCQkJU3VpdGUgOTAwCi0JCQkJQm9jYSBSYXRvbiBGTCAzMzQzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQkUgICAoaGV4KQkJTmV0aWxpdHkKLTAwMDNCRSAgICAgKGJhc2UgMTYpCQlOZXRpbGl0eQotCQkJCTI5OCBTb3V0aCBTdW5ueXZhbGUgQXZlLgotCQkJCVN1aWUgMTAyCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1CRiAgIChoZXgpCQlDZW50ZXJwb2ludCBCcm9hZGJhbmQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDAzQkYgICAgIChiYXNlIDE2KQkJQ2VudGVycG9pbnQgQnJvYWRiYW5kIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE3NDEgVGVjaG5vbG9neSBEcml2ZSwKLQkJCQlTdWl0ZSA0MDAKLQkJCQlTYW4gSm9zZSBDQSA5NTExMC0xMzEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1DMCAgIChoZXgpCQlSRlROQyBDby4sIEx0ZC4KLTAwMDNDMCAgICAgKGJhc2UgMTYpCQlSRlROQyBDby4sIEx0ZC4KLQkJCQkzRiwgMTYyNC0yNCwgQm9uZ2NoZW4tZG9uZwotCQkJCUtpb25hay1ndSwgU2VvdWwKLQkJCQlTT1VUSCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy1DMSAgIChoZXgpCQlQYWNrZXQgRHluYW1pY3MgTHRkCi0wMDAzQzEgICAgIChiYXNlIDE2KQkJUGFja2V0IER5bmFtaWNzIEx0ZAotCQkJCTIgQnVja3N0YW5lIFBhcmsKLQkJCQlFZGluYnVyZ2gsIFNjb3RsYW5kCi0JCQkJVUsgRUgxMCBHUEEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMy1DMiAgIChoZXgpCQlTb2xwaG9uZSBLLksuCi0wMDAzQzIgICAgIChiYXNlIDE2KQkJU29scGhvbmUgSy5LLgotCQkJCTItMTEtMSBLYW5kYXRzdWthc2EtY2hvCi0JCQkJQ2hpeWFkYSwgVG9reW8KLQkJCQkxMDEtMDA0OCBKYXBhbgotCQkJCUpBUEFOCi0KLTAwLTAzLUMzICAgKGhleCkJCU1pY3JvbmlrIE11bHRpbWVkaWEKLTAwMDNDMyAgICAgKGJhc2UgMTYpCQlNaWNyb25payBNdWx0aW1lZGlhCi0JCQkJQnJ1ZWNrZW5zdHIuIDIKLQkJCQlELTUxMzc5IExldmVya3VzZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMy1DNCAgIChoZXgpCQlUb21yYSBTeXN0ZW1zIEFTQQotMDAwM0M0ICAgICAoYmFzZSAxNikJCVRvbXJhIFN5c3RlbXMgQVNBCi0JCQkJRHJlbmdzcnVkaGFnZW4gMgotCQkJCUJveCAyNzggTi0xMzcxIEFza2VyCi0JCQkJTk9SV0FZCi0JCQkJTk9SV0FZCi0KLTAwLTAzLUM1ICAgKGhleCkJCU1vYm90aXggQUcKLTAwMDNDNSAgICAgKGJhc2UgMTYpCQlNb2JvdGl4IEFHCi0JCQkJV2luZ2VydHN3ZWlsZXJob2YgNgotCQkJCUQtNjc3MjQgSG9yaW5nZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMy1DNiAgIChoZXgpCQlJQ1VFIFN5c3RlbXMsIEluYy4KLTAwMDNDNiAgICAgKGJhc2UgMTYpCQlJQ1VFIFN5c3RlbXMsIEluYy4KLQkJCQkxNzQ4OSBHYWxlIEF2ZW51ZQotCQkJCUNpdHkgb2YgSW5kdXN0cnkgQ0EgOTE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUM3ICAgKGhleCkJCWhvcGYgRWxla3Ryb25payBHbWJICi0wMDAzQzcgICAgIChiYXNlIDE2KQkJaG9wZiBFbGVrdHJvbmlrIEdtYkgKLQkJCQlOb3R0ZWJvaG1zdHJhc3NlIDQxCi0JCQkJNTg1MTEgTHVlZGVuc2NoZWlkIAotCQkJCUdFUk1BTlkKLQotMDAtMDMtQzggICAoaGV4KQkJQ01MIEVtZXJnZW5jeSBTZXJ2aWNlcwotMDAwM0M4ICAgICAoYmFzZSAxNikJCUNNTCBFbWVyZ2VuY3kgU2VydmljZXMKLQkJCQk3NSBCb3VsZXZhcmQgbGEgVGVjaG5vbG9naWVzCi0JCQkJSHVsbCwgUXVlYmVjIEpFMjNHNAotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wMy1DOSAgIChoZXgpCQlURUNPTSBDby4sIEx0ZC4KLTAwMDNDOSAgICAgKGJhc2UgMTYpCQlURUNPTSBDby4sIEx0ZC4KLQkJCQkyMywgUiZEIFJvYWQgMgotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtQ0EgICAoaGV4KQkJTVRTIFN5c3RlbXMgQ29ycC4KLTAwMDNDQSAgICAgKGJhc2UgMTYpCQlNVFMgU3lzdGVtcyBDb3JwLgotCQkJCTMwMDEgU2hlbGRvbiBEcml2ZQotCQkJCUNhcnksIE5DIDI3NTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1DQiAgIChoZXgpCQlOaXBwb24gU3lzdGVtcyBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLTAwMDNDQiAgICAgKGJhc2UgMTYpCQlOaXBwb24gU3lzdGVtcyBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLQkJCQkzMC0xMiwgS29teW8tY2hvLAotCQkJCVRha2FyYWJ1a2EtY2l0eSwgSHlvZ28sCi0JCQkJNjY1LTAwNDUgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMy1DQyAgIChoZXgpCQlNb21lbnR1bSBDb21wdXRlciwgSW5jLgotMDAwM0NDICAgICAoYmFzZSAxNikJCU1vbWVudHVtIENvbXB1dGVyLCBJbmMuCi0JCQkJMTgxNSBBc3RvbiBBdmVudWUKLQkJCQlTdWl0ZSAxMDcKLQkJCQlDYXJsc2JhZCBDQSA5MjAwOC03MzEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1DRCAgIChoZXgpCQlDbG92ZXJ0ZWNoLCBJbmMuCi0wMDAzQ0QgICAgIChiYXNlIDE2KQkJQ2xvdmVydGVjaCwgSW5jLgotCQkJCTMtMS01IE5ha2EtY2hvIE11c2FzaGluby1zaGkKLQkJCQlUb2t5byAxODAtMDAwNiBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAzLUNFICAgKGhleCkJCUVURU4gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDAzQ0UgICAgIChiYXNlIDE2KQkJRVRFTiBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyRiwgTm8uIDksIExhbmUgMjM1LCBQYW8tQ2hpYW8gUmQuLAotCQkJCUhzaWVuIFRpZW4gQ2l0eSwgVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy1DRiAgIChoZXgpCQlNdXhjb20sIEluYy4KLTAwMDNDRiAgICAgKGJhc2UgMTYpCQlNdXhjb20sIEluYy4KLQkJCQlEIDYwMiwgQnVuZGFuZyBUZWNobm9wYXJrICMxNTEKLQkJCQlZYXRhcCBEb25nLCBCdW5kYWcgR3UsIFN1bmduYW0gU2ksCi0JCQkJS3l1bmdraSBEbyBLT1JFQSA0NjMtMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLUQwICAgKGhleCkJCUtPQU5LRUlTTyBDby4sIEx0ZC4KLTAwMDNEMCAgICAgKGJhc2UgMTYpCQlLT0FOS0VJU08gQ28uLCBMdGQuCi0JCQkJWmlwIENvZGUgNzkxLTgwNDIKLQkJCQkyNzk4IDM2bWluYW1peW9zaGlkYS1NYXRpIE1hdHV5YW1hLUNpdHkKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAzLUQxICAgKGhleCkJCVRha2F5YSBDb3Jwb3JhdGlvbgotMDAwM0QxICAgICAoYmFzZSAxNikJCVRha2F5YSBDb3Jwb3JhdGlvbgotCQkJCURldmVsb3BtZW50IERpdmlzaW9uCi0JCQkJNjYxLTEsIEliYXJhLWNobyBJYmFyYS1DaXR5IE9rYXlhbWEsIDcxNQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtRDIgICAoaGV4KQkJQ3Jvc3NiZWFtIFN5c3RlbXMsIEluYy4KLTAwMDNEMiAgICAgKGJhc2UgMTYpCQlDcm9zc2JlYW0gU3lzdGVtcywgSW5jLgotCQkJCTgwIENlbnRyYWwgU3RyZWV0Ci0JCQkJQm94Ym9yb3VnaCBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRDMgICAoaGV4KQkJSW50ZXJuZXQgRW5lcmd5IFN5c3RlbXMsIEluYy4KLTAwMDNEMyAgICAgKGJhc2UgMTYpCQlJbnRlcm5ldCBFbmVyZ3kgU3lzdGVtcywgSW5jLgotCQkJCTQyMTggVHJ1bWJvIEN0LgotCQkJCUZhaXJmYXggVkEgMjIwMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUQ0ICAgKGhleCkJCUFsbG9wdGljLCBJbmMuCi0wMDAzRDQgICAgIChiYXNlIDE2KQkJQWxsb3B0aWMsIEluYy4KLQkJCQk2OTYwIEtvbGwgQ2VudGVyIFBhcmt3YXkKLQkJCQlTdWl0ZSAzMDAKLQkJCQlQbGVhc2FudG9uIENBIDk0NTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1ENSAgIChoZXgpCQlBZHZhbmNlZCBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMDNENSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQkxNi0xNiBUYWthc2hpbWEtaG9uY2hvLAotCQkJCU51bWF6dSBTaGl6dW9rYSwKLQkJCQk0MTAwMDU1IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtRDYgICAoaGV4KQkJUkFEVmlzaW9uLCBMdGQuCi0wMDAzRDYgICAgIChiYXNlIDE2KQkJUkFEVmlzaW9uLCBMdGQuCi0JCQkJMjQgUmF1bCBXYWxsZW5iZXJnIFN0LgotCQkJCVRlbC1Bdml2IDY5NzE5Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAzLUQ3ICAgKGhleCkJCU5leHROZXQgV2lyZWxlc3MsIEluYy4KLTAwMDNENyAgICAgKGJhc2UgMTYpCQlOZXh0TmV0IFdpcmVsZXNzLCBJbmMuCi0JCQkJOTU1NSBKYW1lcyBBdmUuIFNvLgotCQkJCVN1aXRlIDI3MAotCQkJCUJsb29taW5ndG9uIE1OIDU1NDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1EOCAgIChoZXgpCQlpTVBhdGggTmV0d29ya3MsIEluYy4KLTAwMDNEOCAgICAgKGJhc2UgMTYpCQlpTVBhdGggTmV0d29ya3MsIEluYy4KLQkJCQkxNDMxIE1lcml2YWxlIFJkLgotCQkJCU5lcGVhbiwgT250YXJpbywKLQkJCQlDQU5BREEgSzJFIDFCOQotCQkJCUNBTkFEQQotCi0wMC0wMy1EOSAgIChoZXgpCQlTZWNoZXJvbiBTQQotMDAwM0Q5ICAgICAoYmFzZSAxNikJCVNlY2hlcm9uIFNBCi0JCQkJVW50ZXJtYXR0d2VnIDgKLQkJCQlDaC0zMDI3IEJlcm4KLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAzLURBICAgKGhleCkJCVRha2FtaXNhd2EgQ3liZXJuZXRpY3MgQ28uLCBMdGQuCi0wMDAzREEgICAgIChiYXNlIDE2KQkJVGFrYW1pc2F3YSBDeWJlcm5ldGljcyBDby4sIEx0ZC4KLQkJCQlOYWthbm8gSGVpd2EgQmxkZy4KLQkJCQk0OCA1LTItQ2hvbWUgQ2h1bywgTmFrYW5vLWt1IFRva3lvIDE2NC0wCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMy1EQiAgIChoZXgpCQlBcG9nZWUgRWxlY3Ryb25pY3MgQ29ycC4KLTAwMDNEQiAgICAgKGJhc2UgMTYpCQlBcG9nZWUgRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQkzMTQ1IERvbmFsZCBEb3VnbGFzIExvb3AgU291dGgKLQkJCQlTYW50YSBNb25pY2EgQ0EgOTA0MDUtMzIxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtREMgICAoaGV4KQkJTGV4YXIgTWVkaWEsIEluYy4KLTAwMDNEQyAgICAgKGJhc2UgMTYpCQlMZXhhciBNZWRpYSwgSW5jLgotCQkJCTQ3NDIxIEJheXNpZGUgUGFya3dheQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUREICAgKGhleCkJCUNvbWFyayBDb3JwLgotMDAwM0REICAgICAoYmFzZSAxNikJCUNvbWFyayBDb3JwLgotCQkJCTkzIFdlc3QgU3QuCi0JCQkJTWVkZmllbGQgTUEgMDIwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLURFICAgKGhleCkJCU9UQyBXaXJlbGVzcwotMDAwM0RFICAgICAoYmFzZSAxNikJCU9UQyBXaXJlbGVzcwotCQkJCTYwMiBDaGFybG90IEF2ZS4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtREYgICAoaGV4KQkJRGVzYW5hIFN5c3RlbXMKLTAwMDNERiAgICAgKGJhc2UgMTYpCQlEZXNhbmEgU3lzdGVtcwotCQkJCTE4MDUgTWNDYW5kbGVzcyBBdmUuCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUUwICAgKGhleCkJCU1vdG9yb2xhLCBJbmMuCi0wMDAzRTAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYy4KLQkJCQkxMzAxIEUuIEFsZ29ucXVpbiBSZC4KLQkJCQlTY2hhdW1idXJnIElMIDYwMTk2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1FMSAgIChoZXgpCQlXaW5tYXRlIENvbW11bmljYXRpb24sIEluYy4KLTAwMDNFMSAgICAgKGJhc2UgMTYpCQlXaW5tYXRlIENvbW11bmljYXRpb24sIEluYy4KLQkJCQk5RixOby4xMTEtNixTaGluZy1EZSBSZAotCQkJCVNhbi1DaHVuZywKLQkJCQlUYWlwZWkgICAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUUyICAgKGhleCkJCUNvbXNwYWNlIENvcnBvcmF0aW9uCi0wMDAzRTIgICAgIChiYXNlIDE2KQkJQ29tc3BhY2UgQ29ycG9yYXRpb24KLQkJCQk5NTUgRnJlZXBvcnQgUGt3eQotCQkJCVN1aXRlIDEwMAotCQkJCUNvcHBlbGwgVFggNzUwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUUzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDNFMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1FNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzRTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRTUgICAoaGV4KQkJSGVybXN0ZWR0IFNHCi0wMDAzRTUgICAgIChiYXNlIDE2KQkJSGVybXN0ZWR0IFNHCi0JCQkJQ2FybC1SZXV0aGVyIC0gU3RyLiAzCi0JCQkJRC02ODMwNSBNYW5uaGVpbQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLUU2ICAgKGhleCkJCUVudG9uZSwgSW5jLgotMDAwM0U2ICAgICAoYmFzZSAxNikJCUVudG9uZSwgSW5jLgotCQkJCTI3NTUgQ2FtcHVzIERyIFN0ZSAyMzUKLQkJCQlTYW4gTWF0ZW8gQ0EgIDk0NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1FNyAgIChoZXgpCQlMb2dvc3RlayBDby4gTHRkLgotMDAwM0U3ICAgICAoYmFzZSAxNikJCUxvZ29zdGVrIENvLiBMdGQuCi0JCQkJMTl0aCAxNSBTdW51c3UtQWNhZGVteSBUb3dlcgotCQkJCTI3Ny0xNyBTdW5nc3UtMmdhLCBTdW5nZG9uZy1ndQotCQkJCVNlb3VsIEtPUkVBIDEzMy0xMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtRTggICAoaGV4KQkJV2F2ZWxlbmd0aCBEaWdpdGFsIExpbWl0ZWQKLTAwMDNFOCAgICAgKGJhc2UgMTYpCQlXYXZlbGVuZ3RoIERpZ2l0YWwgTGltaXRlZAotCQkJCTEyIFZpbmNlbnQgQXZlbnVlCi0JCQkJQ3Jvd25oaWxsIEJ1c2luZXNzIFBhcmsgTWlsdG9uIEtleW5lcywgQgotCQkJCU1LOCAwQUIgTUs4IDBBQiBFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDMtRTkgICAoaGV4KQkJQWthcmEgQ2FuYWRhLCBJbmMuCi0wMDAzRTkgICAgIChiYXNlIDE2KQkJQWthcmEgQ2FuYWRhLCBJbmMuCi0JCQkJMTUwIEthdGltYXZpayBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8KLQkJCQlDQU5BREEgSzJMIDJOMgotCQkJCUNBTkFEQQotCi0wMC0wMy1FQSAgIChoZXgpCQlNZWdhIFN5c3RlbSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDNFQSAgICAgKGJhc2UgMTYpCQlNZWdhIFN5c3RlbSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyRiwgTm8uIDQxLCBMYW5lIDc2LAotCQkJCVJ1aSBLdWFuZyBSZC4sIE5laSBIdSAxMTQKLQkJCQlUYWlwZWkgVGFpcGVpIFRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtRUIgICAoaGV4KQkJQXRyaWNhCi0wMDAzRUIgICAgIChiYXNlIDE2KQkJQXRyaWNhCi0JCQkJNSBTaGVua2FyIFN0LiBQLk8uQi4gMTIyMzEKLQkJCQlIZXplbGlhIEluZHVzdHJpYWwgQXJlYQotCQkJCTQ2NzMzIDQ2NzMzIElTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wMy1FQyAgIChoZXgpCQlJQ0cgUmVzZWFyY2gsIEluYy4KLTAwMDNFQyAgICAgKGJhc2UgMTYpCQlJQ0cgUmVzZWFyY2gsIEluYy4KLQkJCQk3NzUgQiBUaGUgUXVlZW5zIFdheQotCQkJCVRvcm9udG8sIE9udGFyaW8KLQkJCQlNOFogMU4xIENBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wMy1FRCAgIChoZXgpCQlTaGlua2F3YSBFbGVjdHJpYyBDby4sIEx0ZC4KLTAwMDNFRCAgICAgKGJhc2UgMTYpCQlTaGlua2F3YSBFbGVjdHJpYyBDby4sIEx0ZC4KLQkJCQkzLTItMjQgMyBjaG9tZQotCQkJCUtvbmFuIE5ha2FrdSBIaXJvc2hpbWEsIDczMC0wODI1LAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtRUUgICAoaGV4KQkJTUtOZXQgQ29ycG9yYXRpb24KLTAwMDNFRSAgICAgKGJhc2UgMTYpCQlNS05ldCBDb3Jwb3JhdGlvbgotCQkJCTcxMS1CIENoYXJjb3QgQXZlLgotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1FRiAgIChoZXgpCQlPbmVsaW5lIEFHCi0wMDAzRUYgICAgIChiYXNlIDE2KQkJT25lbGluZSBBRwotCQkJCVN0ZWluZmVsZHN0ci4gMwotCQkJCTM5MTc5IEJhcmxlYmVuCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDMtRjAgICAoaGV4KQkJUmVkZmVybiBCcm9hZGJhbmQgTmV0d29ya3MKLTAwMDNGMCAgICAgKGJhc2UgMTYpCQlSZWRmZXJuIEJyb2FkYmFuZCBOZXR3b3JrcwotCQkJCUxldmVsIDEsIDEgQ2VudHJhbCBBdmUuLAotCQkJCUF1c3RyYWxpYW4gVGVjaG5vbG9neSBQYXJrIEV2ZWxlaWdoLCBOU1cKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDMtRjEgICAoaGV4KQkJQ2ljYWRhIFNlbWljb25kdWN0b3IsIEluYy4KLTAwMDNGMSAgICAgKGJhc2UgMTYpCQlDaWNhZGEgU2VtaWNvbmR1Y3RvciwgSW5jLgotCQkJCTgxMSBCYXJ0b24gU3ByaW5ncyBSZC4KLQkJCQlTdWl0ZSA1NTAKLQkJCQlBdXN0aW4gVFggNzg3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUYyICAgKGhleCkJCVNlbmVjYSBOZXR3b3JrcwotMDAwM0YyICAgICAoYmFzZSAxNikJCVNlbmVjYSBOZXR3b3JrcwotCQkJCTMwIFdlc3QgR3VkZSBEci4KLQkJCQlTdWl0ZSAyMDAKLQkJCQlSb2NrdmlsbGUgTUQgMjA4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUYzICAgKGhleCkJCURhenpsZSBNdWx0aW1lZGlhLCBJbmMuCi0wMDAzRjMgICAgIChiYXNlIDE2KQkJRGF6emxlIE11bHRpbWVkaWEsIEluYy4KLQkJCQk0NzIxMSBCYXlzaWRlIFBhcmt3YXkKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1GNCAgIChoZXgpCQlOZXRCdXJuZXIKLTAwMDNGNCAgICAgKGJhc2UgMTYpCQlOZXRCdXJuZXIKLQkJCQkxMTMyNCBMZWdhY3kgQ2FueW9uIFBsLgotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRjUgICAoaGV4KQkJQ2hpcDJDaGlwCi0wMDAzRjUgICAgIChiYXNlIDE2KQkJQ2hpcDJDaGlwCi0JCQkJMjI0OSBaYW5rZXIgUmQuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUY2ICAgKGhleCkJCUFsbGVncm8gTmV0d29ya3MsIEluYy4KLTAwMDNGNiAgICAgKGJhc2UgMTYpCQlBbGxlZ3JvIE5ldHdvcmtzLCBJbmMuCi0JCQkJNjM5OSBTYW4gSWduYWNpbyBBdmVudWUKLQkJCQlTYW4gSm9zZSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRjcgICAoaGV4KQkJUGxhc3QtQ29udHJvbCBHbWJICi0wMDAzRjcgICAgIChiYXNlIDE2KQkJUGxhc3QtQ29udHJvbCBHbWJICi0JCQkJV2FsdGVyLUZyZWl0YWctU3RyLiAxNQotCQkJCTQyODk5IFJlbXNjaGVpZAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLUY4ICAgKGhleCkJCVNhbkNhc3RsZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDNGOCAgICAgKGJhc2UgMTYpCQlTYW5DYXN0bGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjEwNyBOb3J0aCBGaXJzdCBTdHJlZXQKLQkJCQlTdWl0ZSA1MDAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRjkgICAoaGV4KQkJUGxlaWFkZXMgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDNGOSAgICAgKGJhc2UgMTYpCQlQbGVpYWRlcyBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTI4MzAgTWFya2V0IExvb3AgIzEwNAotCQkJCVNvdXRoIExha2UgVFggNzYwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUZBICAgKGhleCkJCVRpTWV0cmEgTmV0d29ya3MKLTAwMDNGQSAgICAgKGJhc2UgMTYpCQlUaU1ldHJhIE5ldHdvcmtzCi0JCQkJNTAwIEVsbGlzIFN0LgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUZCICAgKGhleCkJCUVORUdBVEUgQ28uLEx0ZC4KLTAwMDNGQiAgICAgKGJhc2UgMTYpCQlFTkVHQVRFIENvLixMdGQuCi0JCQkJMy0xNC00MCBTZW5yaW9rYSwKLQkJCQlTZXR0c3UtY2l0eSBPc2FrYSA1NjYtODY4NgotCQkJCUpBUEFOCi0KLTAwLTAzLUZDICAgKGhleCkJCUludGVydGV4IERhdGEgQUIKLTAwMDNGQyAgICAgKGJhc2UgMTYpCQlJbnRlcnRleCBEYXRhIEFCCi0JCQkJUmlzc25lbGVkZW4gNDUKLQkJCQkxNzQgNDQgU3VuZGJ5YmVyZwotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC0wMy1GRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzRkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRkUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwM0ZFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUZGICAgKGhleCkJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotMDAwM0ZGICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotCQkJCTEgTWljcm9zb2Z0IFdheQotCQkJCVJlZG1vbmQgV0EgOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTAwICAgKGhleCkJCUxFWE1BUksgSU5URVJOQVRJT05BTCwgSU5DLgotMDAwNDAwICAgICAoYmFzZSAxNikJCUxFWE1BUksgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTc0MCBORVcgQ0lSQ0xFIFJEIC0gQkxERy4gIzAzNQotCQkJCUxFWElOR1RPTiBLWSA0MDU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMDEgICAoaGV4KQkJT3Nha2kgRWxlY3RyaWMgQ28uLCBMdGQuCi0wMDA0MDEgICAgIChiYXNlIDE2KQkJT3Nha2kgRWxlY3RyaWMgQ28uLCBMdGQuCi0JCQkJMTEzMSwgRnVqaWt1Ym8sIE1peW9zaGltYWNoaSwKLQkJCQlJcnVtYS1ndW4sIFNhaXRhbWEgMzU0LTg1MDEsCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC0wMiAgIChoZXgpCQlOZXhzYW4gVGVjaG5vbG9naWVzLCBMdGQuCi0wMDA0MDIgICAgIChiYXNlIDE2KQkJTmV4c2FuIFRlY2hub2xvZ2llcywgTHRkLgotCQkJCVBhcmtlciBDZW50cmUKLQkJCQlNYW5zZmllbGQgUmQKLQkJCQlEZXJieSAgREUyMSA0U1oKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC0wMyAgIChoZXgpCQlOZXhzaSBDb3Jwb3JhdGlvbgotMDAwNDAzICAgICAoYmFzZSAxNikJCU5leHNpIENvcnBvcmF0aW9uCi0JCQkJMTk1OSBDb25jb3Vyc2UgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMDQgICAoaGV4KQkJTWFraW5vIE1pbGxpbmcgTWFjaGluZSBDby4sIEx0ZC4KLTAwMDQwNCAgICAgKGJhc2UgMTYpCQlNYWtpbm8gTWlsbGluZyBNYWNoaW5lIENvLiwgTHRkLgotCQkJCTQwMjMgTmFrYXRzdSwgQWlrYXdhLW1hY2hpLAotCQkJCUFpa28tZ3VuIEthbmFnYXdhIDI0My0wMzAzCi0JCQkJSkFQQU4KLQotMDAtMDQtMDUgICAoaGV4KQkJQUNOIFRlY2hub2xvZ2llcwotMDAwNDA1ICAgICAoYmFzZSAxNikJCUFDTiBUZWNobm9sb2dpZXMKLQkJCQk5RiwgSGV5S2FuZyBCL0QsIDE1Ny0zNgotCQkJCVNhbnN1bmctZG9uZywgS2FuZ25hbWd1LAotCQkJCVNlb3VsIEtPUkVBICMxMzUtMDkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTA2ICAgKGhleCkJCUZhLiBNZXRhYm94IEFHCi0wMDA0MDYgICAgIChiYXNlIDE2KQkJRmEuIE1ldGFib3ggQUcKLQkJCQlEYWltbGVycmluZyAzNywKLQkJCQlELTMxMTM1IEhpbGRzaGVpbSwKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC0wNyAgIChoZXgpCQlUb3Bjb24gUG9zaXRpb25pbmcgU3lzdGVtcywgSW5jLgotMDAwNDA3ICAgICAoYmFzZSAxNikJCVRvcGNvbiBQb3NpdGlvbmluZyBTeXN0ZW1zLCBJbmMuCi0JCQkJNTc1OCBXLiBMYXMgUG9zaXRhcyBCbHZkLgotCQkJCVBsZWFzYW50b24gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTA4ICAgKGhleCkJCVNhbmtvIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwNDA4ICAgICAoYmFzZSAxNikJCVNhbmtvIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTMtODAyIHVlZGEgdGVucGFrdS1rdQotCQkJCW5hZ295YSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LTA5ICAgKGhleCkJCUNyYXRvcyBOZXR3b3JrcwotMDAwNDA5ICAgICAoYmFzZSAxNikJCUNyYXRvcyBOZXR3b3JrcwotCQkJCTMxMyBMaXR0bGV0b24gUm9hZAotCQkJCVN1aXRlIDIwCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMEEgICAoaGV4KQkJU2FnZSBTeXN0ZW1zCi0wMDA0MEEgICAgIChiYXNlIDE2KQkJU2FnZSBTeXN0ZW1zCi0JCQkJMTQyMCBIYXJib3IgQmF5IFBhcmt3YXkKLQkJCQlTdWl0ZSAxNjAKLQkJCQlBbGFtZWRhIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0wQiAgIChoZXgpCQkzY29tIEV1cm9wZSBMdGQuCi0wMDA0MEIgICAgIChiYXNlIDE2KQkJM2NvbSBFdXJvcGUgTHRkLgotCQkJCTNjb20gQ2VudHJlCi0JCQkJQm91bmRhcnkgV2F5LCBIZW1lbCBIZW1wc3RlYWQgSGVydGZvcmRzaAotCQkJCUhQMiA3WVUgVUsKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC0wQyAgIChoZXgpCQlLQU5OTyBXb3JrJ3MgTHRkLgotMDAwNDBDICAgICAoYmFzZSAxNikJCUtBTk5PIFdvcmsncyBMdGQuCi0JCQkJMS01LTI1IEthbWl0b21pbm8sCi0JCQkJS29rdXJha2l0YS1rdSwgS2l0YWt5dXN5dS1jaXR5LCBGdWt1b2thLQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtMEQgICAoaGV4KQkJQXZheWEsIEluYy4KLTAwMDQwRCAgICAgKGJhc2UgMTYpCQlBdmF5YSwgSW5jLgotCQkJCU9mZmljZSAxQTMyNQotCQkJCTMwNyBNaWRkbGV0b3duIExpbmNyb2Z0IFJvYWQKLQkJCQlMaW5jcm9mdCBOSiAwNzczOC0xNTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0wRSAgIChoZXgpCQlBVk0gR21iSAotMDAwNDBFICAgICAoYmFzZSAxNikJCUFWTSBHbWJICi0JCQkJQWx0LU1vYWJpdCA5NQotCQkJCTEwNTU5IEJlcmxpbgotCQkJCUdFUk1BTlkKLQotMDAtMDQtMEYgICAoaGV4KQkJQXN1cyBOZXR3b3JrIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNDBGICAgICAoYmFzZSAxNikJCUFzdXMgTmV0d29yayBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMS0xLCBOby4gNjc1LCBTZWMuIDEsIEtpbmcta3VvIFJkLiwKLQkJCQlIc2luY2h1LAotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC0xMCAgIChoZXgpCQlTcGlubmFrZXIgTmV0d29ya3MsIEluYy4KLTAwMDQxMCAgICAgKGJhc2UgMTYpCQlTcGlubmFrZXIgTmV0d29ya3MsIEluYy4KLQkJCQkxMDcgR2FtbWEgRHJpdmUKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0xMSAgIChoZXgpCQlJbmtyYSBOZXR3b3JrcywgSW5jLgotMDAwNDExICAgICAoYmFzZSAxNikJCUlua3JhIE5ldHdvcmtzLCBJbmMuCi0JCQkJNDA5NzEgRW5jeWNsb3BlZGlhIENpcmNsZQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTEyICAgKGhleCkJCVdhdmVTbWl0aCBOZXR3b3JrcywgSW5jLgotMDAwNDEyICAgICAoYmFzZSAxNikJCVdhdmVTbWl0aCBOZXR3b3JrcywgSW5jLgotCQkJCTQwIE5hZ29nIFBhcmsKLQkJCQlBY3RvbiBNQSAwMTcyMC0zNDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0xMyAgIChoZXgpCQlTTk9NIFRlY2hub2xvZ3kgQUcKLTAwMDQxMyAgICAgKGJhc2UgMTYpCQlTTk9NIFRlY2hub2xvZ3kgQUcKLQkJCQlIZWxtaG9sdHpzdHJhc3NlIDItOQotCQkJCUQtMTA1ODcgQmVybGluCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDQtMTQgICAoaGV4KQkJVW1lemF3YSBNdXNlbiBEZW5raSBDby4sIEx0ZC4KLTAwMDQxNCAgICAgKGJhc2UgMTYpCQlVbWV6YXdhIE11c2VuIERlbmtpIENvLiwgTHRkLgotCQkJCTE0LTMsIE1pbmFtaSAxLCBOaXNoaSA4LAotCQkJCUNodW8ta3UsIFNhcHBvcm8sCi0JCQkJSG9ra2FpZG8gSkFQQU4gMDYwLTAwNjEKLQkJCQlKQVBBTgotCi0wMC0wNC0xNSAgIChoZXgpCQlSYXN0ZW1lIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDA0MTUgICAgIChiYXNlIDE2KQkJUmFzdGVtZSBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTg4Ni0yIE5paG9uZ2kgTmFrYWdvdS1tdXJhCi0JCQkJTmFrYWt1YmlraS1ndW4gTmlpZ2F0YQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtMTYgICAoaGV4KQkJUGFya3MgUy9BIENvbXVuaWNhY29lcyBEaWdpdGFpcwotMDAwNDE2ICAgICAoYmFzZSAxNikJCVBhcmtzIFMvQSBDb211bmljYWNvZXMgRGlnaXRhaXMKLQkJCQlBdi4gUGVybmFtYnVjbywgMTAwMQotCQkJCVBvcnRvLUFsZWdyZS1SUyBDRVAgOTAyNDAtMDA0Ci0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLTA0LTE3ICAgKGhleCkJCUVMQVUgQUcKLTAwMDQxNyAgICAgKGJhc2UgMTYpCQlFTEFVIEFHCi0JCQkJRGlsbGJlcmcgMTIKLQkJCQk5NzgyOCBNYXJrdGhlaWRlbmZlbGQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC0xOCAgIChoZXgpCQlUZWx0cm9uaWMgUy5BLlUuCi0wMDA0MTggICAgIChiYXNlIDE2KQkJVGVsdHJvbmljIFMuQS5VLgotCQkJCVBvbGlnb25vIGRlIE1hbHBpY2EKLQkJCQlDYWxsZSBGIE9lc3RlIDUwMDU3IFphcmFnb3phCi0JCQkJU1BBSU4KLQkJCQlTUEFJTgotCi0wMC0wNC0xOSAgIChoZXgpCQlGaWJlcmN5Y2xlIE5ldHdvcmtzLCBJbmMuCi0wMDA0MTkgICAgIChiYXNlIDE2KQkJRmliZXJjeWNsZSBOZXR3b3JrcywgSW5jLgotCQkJCTIwIFNvdXRoIFNhbnRhIENydXogQXZlLgotCQkJCVN1aXRlIDExMgotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMUEgICAoaGV4KQkJSW5lcyBUZXN0IGFuZCBNZWFzdXJlbWVudCBHbWJIICYgQ29LRwotMDAwNDFBICAgICAoYmFzZSAxNikJCUluZXMgVGVzdCBhbmQgTWVhc3VyZW1lbnQgR21iSCAmIENvS0cKLQkJCQlBbiBkZXIgTXVlaGxlbmF1ZSA1Ci0JCQkJQmFkIE5lbm5kb3JmIDMxNTQyCi0JCQkJR0VSTUFOWQotCi0wMC0wNC0xQiAgIChoZXgpCQlCcmlkZ2V3b3JrcyBMdGQuCi0wMDA0MUIgICAgIChiYXNlIDE2KQkJQnJpZGdld29ya3MgTHRkLgotCQkJCTEzNSBTb21lcmZvcmQgUm9hZAotCQkJCUNocmlzdGNodXJjaCBET1JTRVQgQkgyMyAzUFkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC0xQyAgIChoZXgpCQlpcERpYWxvZywgSW5jLgotMDAwNDFDICAgICAoYmFzZSAxNikJCWlwRGlhbG9nLCBJbmMuCi0JCQkJMTc2MiBUZWNobm9sb2d5IERyaXZlCi0JCQkJU3VpdGUgMTI0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTFEICAgKGhleCkJCUNvcmVnYSBvZiBBbWVyaWNhCi0wMDA0MUQgICAgIChiYXNlIDE2KQkJQ29yZWdhIG9mIEFtZXJpY2EKLQkJCQlQLk8uIEJveCAxNTkKLQkJCQlCb3RoZWxsIFdBIDk4MDQxLTAxNTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTFFICAgKGhleCkJCVNoaWtva3UgSW5zdHJ1bWVudGF0aW9uIENvLiwgTHRkLgotMDAwNDFFICAgICAoYmFzZSAxNikJCVNoaWtva3UgSW5zdHJ1bWVudGF0aW9uIENvLiwgTHRkLgotCQkJCTc3NywgT29zYWNob3UsIFplbnRzdXVqaXNoaSwKLQkJCQlLYWdhd2EsIDc2NS0wMDUyLAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtMUYgICAoaGV4KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50LCBJbmMuCi0wMDA0MUYgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50LCBJbmMuCi0JCQkJMi02LTIxIE1pbmFtaS1Bb3lhbWEKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA3LTAwNjIKLQkJCQlKQVBBTgotCi0wMC0wNC0yMCAgIChoZXgpCQlTbGltIERldmljZXMsIEluYy4KLTAwMDQyMCAgICAgKGJhc2UgMTYpCQlTbGltIERldmljZXMsIEluYy4KLQkJCQkxMiBTb3V0aCBGaXJzdCBTdC4KLQkJCQlTdWl0ZSAxMDMKLQkJCQlTYW4gSm9zZSBDQSA5NTExMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMjEgICAoaGV4KQkJT2N1bGFyIE5ldHdvcmtzCi0wMDA0MjEgICAgIChiYXNlIDE2KQkJT2N1bGFyIE5ldHdvcmtzCi0JCQkJMTI3MDAsIEZhaXIgTGFrZXMgQ2lyY2xlCi0JCQkJU3VpdGUgMTAwCi0JCQkJRmFpcmZheCBWQSAyMjAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMjIgICAoaGV4KQkJR29yZG9uIEthcGVzLCBJbmMuCi0wMDA0MjIgICAgIChiYXNlIDE2KQkJR29yZG9uIEthcGVzLCBJbmMuCi0JCQkJNTUyMCBXLiBUb3VoeSBBdmUuCi0JCQkJU2tva2llIElMIDYwMDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0yMyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAwNDIzICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTVM6ICBKRjMtNDIwCi0JCQkJMjExMSBORSAyNXRoIEF2ZW51ZQotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMjQgICAoaGV4KQkJVE1DIHMuci5sLgotMDAwNDI0ICAgICAoYmFzZSAxNikJCVRNQyBzLnIubC4KLQkJCQkyMDIgVmlhIEEuIENvc3RhCi0JCQkJNDAxMzQgLSBCb2xvZ25hCi0JCQkJSVRBTFkKLQkJCQlJVEFMWQotCi0wMC0wNC0yNSAgIChoZXgpCQlBdG1lbCBDb3Jwb3JhdGlvbgotMDAwNDI1ICAgICAoYmFzZSAxNikJCUF0bWVsIENvcnBvcmF0aW9uCi0JCQkJTXVsdGltZWRpYSAmIENvbW11bmljYXRpb25zIEdyb3VwCi0JCQkJMjIwMCBHYXRld2F5IENlbnRyZSwgU3VpdGUgMjAxCi0JCQkJTW9ycmlzdmlsbGUgTkMgMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTI2ICAgKGhleCkJCUF1dG9zeXMKLTAwMDQyNiAgICAgKGJhc2UgMTYpCQlBdXRvc3lzCi0JCQkJMjAyIElsc2lucGFzdGVsLAotCQkJCTcyMS0yIE1PSzMtRG9uZyBZYW5nIENoZW9uLWt1LAotCQkJCVNlb3VsIFNlb3VsIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTI3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDQyNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0yOCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0MjggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMjkgICAoaGV4KQkJUGl4b3JkIENvcnBvcmF0aW9uCi0wMDA0MjkgICAgIChiYXNlIDE2KQkJUGl4b3JkIENvcnBvcmF0aW9uCi0JCQkJUm9vbSAzLCAxRiwgTm8uIDEzOTYsCi0JCQkJQ2h1bmcgQ2hlbmcgUmQuIFRhb3l1YW4gQ2l0eSwgVGFveXVhbiBIcwotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC0yQSAgIChoZXgpCQlXaXJlbGVzcyBOZXR3b3JrcywgSW5jLgotMDAwNDJBICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjMyMiBFbCBDYW1pbm8gUmVhbAotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMkIgICAoaGV4KQkJSVQgQWNjZXNzIENvLiwgTHRkLgotMDAwNDJCICAgICAoYmFzZSAxNikJCUlUIEFjY2VzcyBDby4sIEx0ZC4KLQkJCQkzLTE3LTYsIFNoaW55b2tvaGFtYSwgS291aG9rdS1rdQotCQkJCVlva29oYW1hLXNoaSwgS2FuYWdhd2EgMjIyLTg1NDUKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LTJDICAgKGhleCkJCU1pbmV0LCBJbmMuCi0wMDA0MkMgICAgIChiYXNlIDE2KQkJTWluZXQsIEluYy4KLQkJCQkzRiBTZS1BIFZlbnR1cmUgVG93ZXIKLQkJCQk5NDYtMTIgRGFlY2hpLWRvbmcsIEdhbmduYW0tZ3UsIFNlb3VsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtMkQgICAoaGV4KQkJU2FyaWFuIFN5c3RlbXMsIEx0ZC4KLTAwMDQyRCAgICAgKGJhc2UgMTYpCQlTYXJpYW4gU3lzdGVtcywgTHRkLgotCQkJCUZsb29kbGlnaHQgSG91c2UKLQkJCQlSaXZlcnNpZGUgQnVzaW5lc3MgUGFyayAgTGVlZHMgUm9hZCwgSWxrCi0JCQkJV2VzdCBZb3Jrc2hpcmUgRU5HTEFORCBMUzI5IDhKWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA0LTJFICAgKGhleCkJCU5ldG91cyBUZWNobm9sb2dpZXMsIEx0ZC4KLTAwMDQyRSAgICAgKGJhc2UgMTYpCQlOZXRvdXMgVGVjaG5vbG9naWVzLCBMdGQuCi0JCQkJMTAwNiwgQmxvY2sgQSwKLQkJCQlHb29kVmlldyBJbmR1c3RyaWFsIEJ1aWxkaW5nLCBLaW4gRmF0IFN0Ci0JCQkJSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA0LTJGICAgKGhleCkJCUludGVybmF0aW9uYWwgQ29tbXVuaWNhdGlvbnMgUHJvZHVjdHMsIEluYy4KLTAwMDQyRiAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIENvbW11bmljYXRpb25zIFByb2R1Y3RzLCBJbmMuCi0JCQkJNDMyNSBXb29kbGFuZCBQYXJrIERyaXZlCi0JCQkJU3VpdGUgMTAxCi0JCQkJV2VzdCBNZWxib3VybmUgRkwgMzI5MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTMwICAgKGhleCkJCU5ldGdlbQotMDAwNDMwICAgICAoYmFzZSAxNikJCU5ldGdlbQotCQkJCTI3IHJ1ZSBkJ09ybGVhbnMKLQkJCQk5MiAyMDAgTmV1aWxsdCBzL1NlaW5lCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTA0LTMxICAgKGhleCkJCUdsb2JhbFN0cmVhbXMsIEluYy4KLTAwMDQzMSAgICAgKGJhc2UgMTYpCQlHbG9iYWxTdHJlYW1zLCBJbmMuCi0JCQkJMjg4MiBQcm9zcGVjdCBQYXJrIERyaXZlCi0JCQkJU3VpdGUgMzUwCi0JCQkJUmFuY2hvIENvcmRvdmEgQ0EgOTU2NzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTMyICAgKGhleCkJCVZveWV0cmEgVHVydGxlIEJlYWNoLCBJbmMuCi0wMDA0MzIgICAgIChiYXNlIDE2KQkJVm95ZXRyYSBUdXJ0bGUgQmVhY2gsIEluYy4KLQkJCQkxNTAgQ2xlYXJicm9vayBSb2FkLCBTdWl0ZSAxNjIKLQkJCQlFbG1zZm9yZCBOWSAxMDUyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMzMgICAoaGV4KQkJQ3liZXJib2FyZCBBL1MKLTAwMDQzMyAgICAgKGJhc2UgMTYpCQlDeWJlcmJvYXJkIEEvUwotCQkJCUtsb2V2ZXJtYXJrZW4gMTIwCi0JCQkJREstNzE5MCBCaWxsdW5kCi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtMDQtMzQgICAoaGV4KQkJQWNjZWxlbnQgU3lzdGVtcywgSW5jLgotMDAwNDM0ICAgICAoYmFzZSAxNikJCUFjY2VsZW50IFN5c3RlbXMsIEluYy4KLQkJCQkyNjIwIFJpZGdld29vZCBSZC4sCi0JCQkJU3VpdGUgMzAwCi0JCQkJQWtyb24gT0ggNDQzMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTM1ICAgKGhleCkJCUNvbXB0ZWsgSW50ZXJuYXRpb25hbCwgSW5jLgotMDAwNDM1ICAgICAoYmFzZSAxNikJCUNvbXB0ZWsgSW50ZXJuYXRpb25hbCwgSW5jLgotCQkJCTExIEZsb29kbGlnaHQgU3QuCi0JCQkJQm9zdG9uIE1BIDAyMTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0zNiAgIChoZXgpCQlFTEFOc2F0IFRlY2hub2xvZ2llcywgSW5jLgotMDAwNDM2ICAgICAoYmFzZSAxNikJCUVMQU5zYXQgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJTm8uIDExLCBMYW5lIDE5LCBQYXRlaCBSb2FkLAotCQkJCUhzaW5jaHUgVEFJV0FOLCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTM3ICAgKGhleCkJCVBvd2luIEluZm9ybWF0aW9uIFRlY2hub2xvZ3ksIEluYy4KLTAwMDQzNyAgICAgKGJhc2UgMTYpCQlQb3dpbiBJbmZvcm1hdGlvbiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJOEYsIE5vLiA3MCwgWmhvdS1aIFN0LgotCQkJCTExNCBOZWktSHUgVGFpcGVpCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTM4ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwNDM4ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCURlcGFydG1lbnQgNjgwMAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwIEJyYW1wdG9uLCBPTgotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wNC0zOSAgIChoZXgpCQlSb3NjbyBFbnRlcnRhaW5tZW50IFRlY2hub2xvZ3ksIEluYy4KLTAwMDQzOSAgICAgKGJhc2UgMTYpCQlSb3NjbyBFbnRlcnRhaW5tZW50IFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyMTgxIE5XIEZyb250IEF2ZS4KLQkJCQlQb3J0bGFuZCBPUiA5NzIwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtM0EgICAoaGV4KQkJSW50ZWxsaWdlbnQgVGVsZWNvbW11bmljYXRpb25zLCBJbmMuCi0wMDA0M0EgICAgIChiYXNlIDE2KQkJSW50ZWxsaWdlbnQgVGVsZWNvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTY4Ny0yLCBTaW5pbC1kb25nCi0JCQkJRGFlZG9rLWd1LCBUYWVqb24KLQkJCQlTT1VUSCBLT1JFQSAzMDYtMjMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTNCICAgKGhleCkJCUxhdmEgQ29tcHV0ZXIgTWZnLiwgSW5jLgotMDAwNDNCICAgICAoYmFzZSAxNikJCUxhdmEgQ29tcHV0ZXIgTWZnLiwgSW5jLgotCQkJCTIgVnVsY2FuIFN0LgotCQkJCUV0b2JpY29rZSwgT250YXJpbwotCQkJCUNBTkFEQSBNOVctMUwyCi0JCQkJQ0FOQURBCi0KLTAwLTA0LTNDICAgKGhleCkJCVNPTk9TIENvLiwgTHRkLgotMDAwNDNDICAgICAoYmFzZSAxNikJCVNPTk9TIENvLiwgTHRkLgotCQkJCSM3MjUgUHVuZ3NhbiBBcHQuIEZhY3RvcnkKLQkJCQkxMTQxLTIgQmFpa3Nlb2ssIGlsc2FuLCBHb3lhbmcsIEd5ZW9uZ2dpCi0JCQkJUmVwLiBvZiBLT1JFQSBaaXAgQ29kZTogNDExLTgxNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC0zRCAgIChoZXgpCQlJTkRFTCBBRwotMDAwNDNEICAgICAoYmFzZSAxNikJCUlOREVMIEFHCi0JCQkJVHVmaXdpcyAyNgotCQkJCUNILTgzMzIgUnVzc2lrb24KLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA0LTNFICAgKGhleCkJCVRlbGVuY29tbQotMDAwNDNFICAgICAoYmFzZSAxNikJCVRlbGVuY29tbQotCQkJCTI1NTEgV2Fsc2ggQXZlbnVlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTNGICAgKGhleCkJCUVTVGVlbSBXaXJlbGVzcyBNb2RlbXMsIEluYwotMDAwNDNGICAgICAoYmFzZSAxNikJCUVTVGVlbSBXaXJlbGVzcyBNb2RlbXMsIEluYwotCQkJCTQxNSBOLiBRdWF5IFN0LiwgU3VpdGUgNAotCQkJCUtlbm5ld2ljayBXQSA5OTMzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNDAgICAoaGV4KQkJY3liZXJQSVhJRSwgSW5jLgotMDAwNDQwICAgICAoYmFzZSAxNikJCWN5YmVyUElYSUUsIEluYy4KLQkJCQk2OCBFLiBXYWNrZXIgUGxhY2UsCi0JCQkJU3VpdGUgNjAwCi0JCQkJQ2hpY2FnbyBJTCA2MDYwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNDEgICAoaGV4KQkJSGFsZiBEb21lIFN5c3RlbXMsIEluYy4KLTAwMDQ0MSAgICAgKGJhc2UgMTYpCQlIYWxmIERvbWUgU3lzdGVtcywgSW5jLgotCQkJCTE1NSBCLTEgTW9mZmV0IFBhcmsgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTQyICAgKGhleCkJCU5BQ1QKLTAwMDQ0MiAgICAgKGJhc2UgMTYpCQlOQUNUCi0JCQkJMTkxIFcuIDUyMDAgTi4KLQkJCQlQcm92byBVVCA4NDYwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNDMgICAoaGV4KQkJQWdpbGVudCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDQ0MyAgICAgKGJhc2UgMTYpCQlBZ2lsZW50IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTUzMDEgU3RldmVucyBDcmVlayBCb3VsZXZhcmQKLQkJCQlNYWlsc3RvcCA1NEwtU1EKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNDQgICAoaGV4KQkJV2VzdGVybiBNdWx0aXBsZXggQ29ycG9yYXRpb24KLTAwMDQ0NCAgICAgKGJhc2UgMTYpCQlXZXN0ZXJuIE11bHRpcGxleCBDb3Jwb3JhdGlvbgotCQkJCTExOTYgQm9ycmVnYXMgQXZlbnVlCi0JCQkJU3VpdGUgNTAwCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC00NSAgIChoZXgpCQlMTVMgU2thbGFyIEluc3RydW1lbnRzIEdtYkgKLTAwMDQ0NSAgICAgKGJhc2UgMTYpCQlMTVMgU2thbGFyIEluc3RydW1lbnRzIEdtYkgKLQkJCQlXaWxsaS1FaWNobGVyLVN0ciAxMQotCQkJCUQtMzcwNzkgR29ldHRpbmdlbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTQ2ICAgKGhleCkJCUNZWkVOVEVDSCBDby4sIEx0ZC4KLTAwMDQ0NiAgICAgKGJhc2UgMTYpCQlDWVpFTlRFQ0ggQ28uLCBMdGQuCi0JCQkJNjAxIEV1bmt5ZW9uZyBCL0QgMTQxLTMxLAotCQkJCVNhbXN1bmctZG9uZywgR2FuZ25hbS1ndSwgU2VvdWwsCi0JCQkJMTM1LTg3NiBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC00NyAgIChoZXgpCQlBY3Jvd2F2ZSBTeXN0ZW1zIENvLiwgTHRkLgotMDAwNDQ3ICAgICAoYmFzZSAxNikJCUFjcm93YXZlIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJTWFydSBCL0QgODYtNiwgTm9uaHl1bi1Eb25nCi0JCQkJR2FuZ25hbS1ndSwgU2VvdWwKLQkJCQlLT1JFQSB6aXA6IDEzNS04MTgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtNDggICAoaGV4KQkJUG9sYXJvaWQgQ29ycG9yYXRpb24KLTAwMDQ0OCAgICAgKGJhc2UgMTYpCQlQb2xhcm9pZCBDb3Jwb3JhdGlvbgotCQkJCTMwMCBCYWtlciBBdmVudWUKLQkJCQlDb25jb3JkIE1BIDAxNzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC00OSAgIChoZXgpCQlNYXBsZXRyZWUgTmV0d29ya3MKLTAwMDQ0OSAgICAgKGJhc2UgMTYpCQlNYXBsZXRyZWUgTmV0d29ya3MKLQkJCQkzMTUgTm9yd29vZCBQYXJrIFNvdXRoCi0JCQkJTm9yd29vZCBNQSAwMjA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNEEgICAoaGV4KQkJaVBvbGljeSBOZXR3b3JrcywgSW5jLgotMDAwNDRBICAgICAoYmFzZSAxNikJCWlQb2xpY3kgTmV0d29ya3MsIEluYy4KLQkJCQk0NzQ2NyBGcmVtb250IEJsdmQuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNEIgICAoaGV4KQkJTlZJRElBCi0wMDA0NEIgICAgIChiYXNlIDE2KQkJTlZJRElBCi0JCQkJMzUzNSBNb25yb2UgU3QuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTRDICAgKGhleCkJCUpFTk9QVElLCi0wMDA0NEMgICAgIChiYXNlIDE2KQkJSkVOT1BUSUsKLQkJCQlMYXNlciwgT3B0aWssIFN5c3RlbWUgR21iSAotCQkJCUVpbmthdWYsIFBydXNzaW5nc3RyLiA0MSBELTA3NzQ1IEplbmEKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC00RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0NEQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNEUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNDRFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTRGICAgKGhleCkJCUxldWtoYXJkdCBTeXN0ZW1lbGVrdHJvbmlrIEdtYkgKLTAwMDQ0RiAgICAgKGJhc2UgMTYpCQlMZXVraGFyZHQgU3lzdGVtZWxla3Ryb25payBHbWJICi0JCQkJUnVkb2xmLURpZXNlbC1TdHIuIDE3Ci0JCQkJNzg1MzIgVHV0dGxpbmdlbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTUwICAgKGhleCkJCURNRCBDb21wdXRlcnMgU1JMCi0wMDA0NTAgICAgIChiYXNlIDE2KQkJRE1EIENvbXB1dGVycyBTUkwKLQkJCQlWaWEgTW9udmlzbywgMTQKLQkJCQkxMDA5MCBWaWxsYXJiYXNzZSAoVG8pCi0JCQkJSVRBTFkKLQkJCQlJVEFMWQotCi0wMC0wNC01MSAgIChoZXgpCQlNZWRyYWQsIEluYy4KLTAwMDQ1MSAgICAgKGJhc2UgMTYpCQlNZWRyYWQsIEluYy4KLQkJCQlPbmUgTWVkcmFkIERyaXZlCi0JCQkJSW5kaWFub2xhIFBBIDE1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC01MiAgIChoZXgpCQlSb2NrZXRMb2dpeCwgSW5jLgotMDAwNDUyICAgICAoYmFzZSAxNikJCVJvY2tldExvZ2l4LCBJbmMuCi0JCQkJNjUwNCBJbnRlcm5hdGlvbmFsIFBhcmt3YXkKLQkJCQlTdWl0ZSAxMjAwCi0JCQkJUGxhbm8gVFggNzUwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTUzICAgKGhleCkJCVlvdHRhWW90dGEsIEluYy4KLTAwMDQ1MyAgICAgKGJhc2UgMTYpCQlZb3R0YVlvdHRhLCBJbmMuCi0JCQkJNjAyMC0gMTA0IFN0cmVldAotCQkJCUVkbW9udG9uLCBBQiAgVDZIIDVTNAotCQkJCUNBTkFEQQotCi0wMC0wNC01NCAgIChoZXgpCQlRdWFkcmlnYSBVSwotMDAwNDU0ICAgICAoYmFzZSAxNikJCVF1YWRyaWdhIFVLCi0JCQkJQmFpcmQgSG91c2UKLQkJCQlBcmxpbmd0b24gQnVzaW5lc3MgUGFyayBUaGVhbGUgUmVhZGluZyBSCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA0LTU1ICAgKGhleCkJCUFOVEFSQS5uZXQKLTAwMDQ1NSAgICAgKGJhc2UgMTYpCQlBTlRBUkEubmV0Ci0JCQkJNzQ3IENhbWRlbiBBdmUuCi0JCQkJU3VpdGUgQQotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC01NiAgIChoZXgpCQlNb3Rvcm9sYSBQVFAgSW5jCi0wMDA0NTYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgUFRQIEluYwotCQkJCVVuaXQgMUEsIExpbmhheSBCdXNpbmVzcyBQYXJrLAotCQkJCUVhc3Rlcm4gUm9hZCwKLQkJCQlBc2hidXJ0b24gRGV2b24gVFExMyA3VVAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC01NyAgIChoZXgpCQlVbml2ZXJzYWwgQWNjZXNzIFRlY2hub2xvZ3ksIEluYy4KLTAwMDQ1NyAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgQWNjZXNzIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyIEZsLiwgTm8uIDUsIEFsbGV5IDIyLAotCQkJCUxhbmUgNTEzLCBKdWkgS3VhbmcgUm9hZCwKLQkJCQlOZWkgSHUgVGFpcGVpLCBUQUlXQU4gMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC01OCAgIChoZXgpCQlGdXNpb24gWCBDby4sIEx0ZC4KLTAwMDQ1OCAgICAgKGJhc2UgMTYpCQlGdXNpb24gWCBDby4sIEx0ZC4KLQkJCQkjOTA1IEhhbnNvbCBUZWNobm8gVG93bgotCQkJCTE2LTEgRGFuZy1KdW5nIERvbmcgS3VuLVBvIEt5dW5nLUtpIGRvIEsKLQkJCQlaaXAgNDM1LTAzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC01OSAgIChoZXgpCQlWZXJpc3RhciBDb3Jwb3JhdGlvbgotMDAwNDU5ICAgICAoYmFzZSAxNikJCVZlcmlzdGFyIENvcnBvcmF0aW9uCi0JCQkJNzI3IEFsbHN0b24gV2F5Ci0JCQkJQmVya2VsZXkgQ0EgOTQ3MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTVBICAgKGhleCkJCVRoZSBMaW5rc3lzIEdyb3VwLCBJbmMuCi0wMDA0NUEgICAgIChiYXNlIDE2KQkJVGhlIExpbmtzeXMgR3JvdXAsIEluYy4KLQkJCQkxNzQwMSBBcm1zdHJvbmcgQXZlLgotCQkJCUlydmluZSBDQSA5MjYxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNUIgICAoaGV4KQkJVGVjaHNhbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMDQ1QiAgICAgKGJhc2UgMTYpCQlUZWNoc2FuIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCU5vcnRoIFdpbmcKLQkJCQk0MyBIaWdoIFN0cmVldCBGYXJlaGFtLCBIYW50cyBQMDE2IDdCUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtNUMgICAoaGV4KQkJTW9iaXdhdmUgUHRlIEx0ZAotMDAwNDVDICAgICAoYmFzZSAxNikJCU1vYml3YXZlIFB0ZSBMdGQKLQkJCQlCbGsgMTYsIEthbGxhbmcgUGxhY2UKLQkJCQkjMDctMDEvMDQKLQkJCQkzMzkxNTYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMDQtNUQgICAoaGV4KQkJQkVLQSBFbGVrdHJvbmlrCi0wMDA0NUQgICAgIChiYXNlIDE2KQkJQkVLQSBFbGVrdHJvbmlrCi0JCQkJU2llbWVuc3RyYXNzZSAyOQotCQkJCUVyZnRzdGFkdCA1MDM3NAotCQkJCUdFUk1BTlkKLQotMDAtMDQtNUUgICAoaGV4KQkJUG9seVRyYXggSW5mb3JtYXRpb24gVGVjaG5vbG9neSBBRwotMDAwNDVFICAgICAoYmFzZSAxNikJCVBvbHlUcmF4IEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQUcKLQkJCQlNYXJ0aW4tS29sbGFyIC0gU3RyLiA1Ci0JCQkJRC04MTgyOSBNdW5jaGVuCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDQtNUYgICAoaGV4KQkJRXZhbHVlIFRlY2hub2xvZ3ksIEluYy4KLTAwMDQ1RiAgICAgKGJhc2UgMTYpCQlFdmFsdWUgVGVjaG5vbG9neSwgSW5jLgotCQkJCTVGLTcsIE5vLiAxMzAsIENoaWVuIEthbmcgUm9hZCwKLQkJCQlDaHVuZyBIbyBDaXR5LCBUYWlwZWkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtNjAgICAoaGV4KQkJS25pbGluayBUZWNobm9sb2d5LCBJbmMuCi0wMDA0NjAgICAgIChiYXNlIDE2KQkJS25pbGluayBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTBGLCAjOTYsIEhzaW4gVGFpIFd1IFJkLiwKLQkJCQlTZWMuIDEsIEhzaSBDaGloLCBUYWlwZWkgSHNpZW4sCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC02MSAgIChoZXgpCQlFUE9YIENvbXB1dGVyIENvLiwgTHRkLgotMDAwNDYxICAgICAoYmFzZSAxNikJCUVQT1ggQ29tcHV0ZXIgQ28uLCBMdGQuCi0JCQkJMTFGLCAjMzQ2LCBDaHVuZyBTYW4gUmQuCi0JCQkJU2VjLiAyLCBDaHVuZyBIbyBDaXR5LCBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTYyICAgKGhleCkJCURBS09TIERhdGEgJiBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotMDAwNDYyICAgICAoYmFzZSAxNikJCURBS09TIERhdGEgJiBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotCQkJCTJuZCBGbG9vciBCZXRoZWwgQnVpbGRpbmcgMzI0LTEKLQkJCQlZYW5namFlLWRvbmcgU2VvY2hvLWd1IFNlb3VsIFIuTy5LLgotCQkJCVppcCBjb2RlOiAxMzctMTMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC02MyAgIChoZXgpCQlCb3NjaCBTZWN1cml0eSBTeXN0ZW1zCi0wMDA0NjMgICAgIChiYXNlIDE2KQkJQm9zY2ggU2VjdXJpdHkgU3lzdGVtcwotCQkJCTg1MCBHcmVlbmZpZWxkIFJvYWQKLQkJCQlMYW5jYXN0ZXIgUEEgMTc2MDEtNTg3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNjQgICAoaGV4KQkJRmFudGFzbWEgTmV0d29ya3MsIEluYy4KLTAwMDQ2NCAgICAgKGJhc2UgMTYpCQlGYW50YXNtYSBOZXR3b3JrcywgSW5jLgotCQkJCTMyNTAgQXNoIFN0cmVldAotCQkJCVBhbG8gQWx0byBDQSA5NDMwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNjUgICAoaGV4KQkJaS5zLnQgaXNkbi1zdXBwb3J0IHRlY2huaWsgR21iSAotMDAwNDY1ICAgICAoYmFzZSAxNikJCWkucy50IGlzZG4tc3VwcG9ydCB0ZWNobmlrIEdtYkgKLQkJCQlSaGVpbiBTdHJhc3NlIDdFCi0JCQkJMTQ1MTMgVGVsdG93Ci0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDQtNjYgICAoaGV4KQkJQVJNSVRFTCBDby4KLTAwMDQ2NiAgICAgKGJhc2UgMTYpCQlBUk1JVEVMIENvLgotCQkJCUY1LCBEb21hbiBQbGF6YSAzNTMtNCwKLQkJCQlZYXRhcC1Eb25nLCBQdWRhbmcta3UsIFNlb25nLU5hbWUgU2ksIEt5Ci0JCQkJUmVwdWJsaWMgb2YgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtNjcgICAoaGV4KQkJV3VoYW4gUmVzZWFyY2ggSW5zdGl0dXRlIG9mIE1JSQotMDAwNDY3ICAgICAoYmFzZSAxNikJCVd1aGFuIFJlc2VhcmNoIEluc3RpdHV0ZSBvZiBNSUkKLQkJCQk4OCBZb3VrZXl1YW4gUm9hZCwKLQkJCQlIYW5nc2hhbiBEaXN0cmljdCxXdWhhbiwgSHViZWkgUHJvdmluY2UsCi0JCQkJNDMwMDc0IDQzMDA3NCBQLlIuQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0wNC02OCAgIChoZXgpCQlWaXZpdHksIEluYy4KLTAwMDQ2OCAgICAgKGJhc2UgMTYpCQlWaXZpdHksIEluYy4KLQkJCQkzMzYwIE1pdGNoZWxsIExhbmUKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC02OSAgIChoZXgpCQlJbm5vY29tLCBJbmMuCi0wMDA0NjkgICAgIChiYXNlIDE2KQkJSW5ub2NvbSwgSW5jLgotCQkJCTY1NS0yIE5hZWJhbHNhbi1Eb25nCi0JCQkJS2FuZ3Nlby1HdSwgU2VvdWwKLQkJCQkxNTctMjgwIDE1Ny0yODAgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtNkEgICAoaGV4KQkJTmF2aW5pIE5ldHdvcmtzCi0wMDA0NkEgICAgIChiYXNlIDE2KQkJTmF2aW5pIE5ldHdvcmtzCi0JCQkJMzYwNSBFLiBQbGFubyBQa3d5LAotCQkJCVN1aXRlIDQwMCwKLQkJCQlQbGFubyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNkIgICAoaGV4KQkJUGFsbSBXaXJlbGVzcywgSW5jLgotMDAwNDZCICAgICAoYmFzZSAxNikJCVBhbG0gV2lyZWxlc3MsIEluYy4KLQkJCQk0ODkzMyBXYXJtIFNwcmluZ3MgQmx2ZC4KLQkJCQlGcmVtb250IENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC02QyAgIChoZXgpCQlDeWJlciBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNDZDICAgICAoYmFzZSAxNikJCUN5YmVyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMS00NSBZZW8gV29sLURvbmcKLQkJCQlPaCBKdW5nLUVtLCBCdSBDaGVvbiBDaXR5LAotCQkJCUt5ZW9uZyBHaS1EbyBLeWVvbmcgR2ktRG8gS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtNkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNDZEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTZFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDQ2RSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC02RiAgIChoZXgpCQlEaWdpdGVsIFMvQSBJbmR1c3RyaWEgRWxldHJvbmljYQotMDAwNDZGICAgICAoYmFzZSAxNikJCURpZ2l0ZWwgUy9BIEluZHVzdHJpYSBFbGV0cm9uaWNhCi0JCQkJUi4gRG91dG9yIEpvYW8gSWduYWNpbywgMTE2NQotCQkJCVBvcnRvIEFsZWdyZSwgUlMuIEJyYXppbAotCQkJCVppcDogOTAyMzAuMTgxCi0JCQkJQlJBWklMCi0KLTAwLTA0LTcwICAgKGhleCkJCWlwVW5wbHVnZ2VkIEFCCi0wMDA0NzAgICAgIChiYXNlIDE2KQkJaXBVbnBsdWdnZWQgQUIKLQkJCQlCb3ggMTAxNjAKLQkJCQlTRSAxMjEgMjggU3RvY2tob2xtLUdsb2JzZW4KLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtMDQtNzEgICAoaGV4KQkJSVByYWQKLTAwMDQ3MSAgICAgKGJhc2UgMTYpCQlJUHJhZAotCQkJCTI0IFJhb3VsIFdhbGxlbmJlcmcgU3QuCi0JCQkJVGVsLUF2aXYgNjk3MTkKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDQtNzIgICAoaGV4KQkJVGVsZWx5bngsIEluYy4KLTAwMDQ3MiAgICAgKGJhc2UgMTYpCQlUZWxlbHlueCwgSW5jLgotCQkJCTNGLTEsIDY2IE5hbmthbiBSZC4sCi0JCQkJU2VjLiAyIEx1IENodSwgVGFvLVl1YW4KLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTczICAgKGhleCkJCVBob3RvbmV4IENvcnBvcmF0aW9uCi0wMDA0NzMgICAgIChiYXNlIDE2KQkJUGhvdG9uZXggQ29ycG9yYXRpb24KLQkJCQk4QyBQcmVzdG9uIENvdXJ0Ci0JCQkJQmVkZm9yZCBNQSAwMTczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNzQgICAoaGV4KQkJTEVHUkFORAotMDAwNDc0ICAgICAoYmFzZSAxNikJCUxFR1JBTkQKLQkJCQkxNDUgQXZlbnVlIERlIExhdHRyZQotCQkJCTU3MDQ1IExpbW9nZXMKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDQtNzUgICAoaGV4KQkJMyBDb20gQ29ycG9yYXRpb24KLTAwMDQ3NSAgICAgKGJhc2UgMTYpCQkzIENvbSBDb3Jwb3JhdGlvbgotCQkJCTU0MDAgQmF5ZnJvbnQgUGxhemEKLQkJCQlNUzogIDQyMjAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNzYgICAoaGV4KQkJMyBDb20gQ29ycG9yYXRpb24KLTAwMDQ3NiAgICAgKGJhc2UgMTYpCQkzIENvbSBDb3Jwb3JhdGlvbgotCQkJCTU0MDAgQmF5ZnJvbnQgUGxhemEKLQkJCQlNUzogIDQyMjAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNzcgICAoaGV4KQkJU2NhbGFudCBTeXN0ZW1zLCBJbmMuCi0wMDA0NzcgICAgIChiYXNlIDE2KQkJU2NhbGFudCBTeXN0ZW1zLCBJbmMuCi0JCQkJMjA0MCBNYXJ0aW4gQXZlbnVlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTc4ICAgKGhleCkJCUcuIFN0YXIgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwNDc4ICAgICAoYmFzZSAxNikJCUcuIFN0YXIgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTR0aCBGbG9vciwgTm8uIDExOCwgU2VjdG9yIDIKLQkJCQlDaHVuZyBIc2lhbyBFYXN0IFJvYWQKLQkJCQlUYWlwZWkgQ2l0eSBUYWlwZWkgQ2l0eSBUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTc5ICAgKGhleCkJCVJhZGl1cyBDby4sIEx0ZC4KLTAwMDQ3OSAgICAgKGJhc2UgMTYpCQlSYWRpdXMgQ28uLCBMdGQuCi0JCQkJMS00OC0xMSwgSXRhYmFzaGkKLQkJCQlSb2plIEJsZGcuLCBOby4gMywgNkYgSXRhYmFzaGkta3UsIFRva3lvCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC03QSAgIChoZXgpCQlBWFhFU1NJVCBBU0EKLTAwMDQ3QSAgICAgKGJhc2UgMTYpCQlBWFhFU1NJVCBBU0EKLQkJCQlBWFhFU1NJVCBBU0EgSEFMREVOCi0JCQkJQm94IDEwNTMgMTc4NyBCZXJnIGkgT3N0Zm9sZAotCQkJCU5PUldBWQotCQkJCU5PUldBWQotCi0wMC0wNC03QiAgIChoZXgpCQlTY2hsdW1iZXJnZXIKLTAwMDQ3QiAgICAgKGJhc2UgMTYpCQlTY2hsdW1iZXJnZXIKLQkJCQlTdWdhciBMYW5kIFByb2R1Y3QgQ2VudGVyCi0JCQkJMTEwIFNjaGx1bWJlcmdlciBEcml2ZQotCQkJCVN1Z2FyIExhbmQgVFggNzc0NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTdDICAgKGhleCkJCVNraWRhdGEgQUcKLTAwMDQ3QyAgICAgKGJhc2UgMTYpCQlTa2lkYXRhIEFHCi0JCQkJVC02OTc1NTMgVW50ZXJzYmVyZ3N0ci4gNDAKLQkJCQlBLTUwODMgR2FydGVuYXUKLQkJCQlBVVNUUklBCi0JCQkJQVVTVFJJQQotCi0wMC0wNC03RCAgIChoZXgpCQlQZWxjbwotMDAwNDdEICAgICAoYmFzZSAxNikJCVBlbGNvCi0JCQkJMzUwMCBQZWxjbyBXYXkKLQkJCQlDbG92aXMgQ0EgOTM2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTdFICAgKGhleCkJCU9wdGVsZWNvbT1OS0YKLTAwMDQ3RSAgICAgKGJhc2UgMTYpCQlPcHRlbGVjb209TktGCi0JCQkJWnVpZGVsaWprIEhhbGZyb25kIDExCi0JCQkJMjgwMSBERCBHb3VkYQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTA0LTdGICAgKGhleCkJCUNoci4gTWF5ciBHbWJIICYgQ28uIEtHCi0wMDA0N0YgICAgIChiYXNlIDE2KQkJQ2hyLiBNYXlyIEdtYkggJiBDby4gS0cKLQkJCQlFaWNoZW5zdHJhc3NlIDEKLQkJCQlELTg3NjY1IE1hdWVyc3RldHRlbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTgwICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0wMDA0ODAgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLQkJCQkxNzQ1IFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTE2NC05MTAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04MSAgIChoZXgpCQlFY29ub2xpdGUgQ29udHJvbCBQcm9kdWN0cywgSW5jLgotMDAwNDgxICAgICAoYmFzZSAxNikJCUVjb25vbGl0ZSBDb250cm9sIFByb2R1Y3RzLCBJbmMuCi0JCQkJMzM2MCBFLiBMYSBQYWxtYSBBdmUuCi0JCQkJQW5haGVpbSBDQSA5MjgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtODIgICAoaGV4KQkJTWVkaWFsb2dpYyBDb3JwLgotMDAwNDgyICAgICAoYmFzZSAxNikJCU1lZGlhbG9naWMgQ29ycC4KLQkJCQkwLTMsIFRveWFtYWtlbi1TYW5neW91Ci0JCQkJS291ZG9rYS1DZW50ZXIsIDUsIE9mZmljZSBQYXJrLCBUYWthb2thLQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtODMgICAoaGV4KQkJRGVsdHJvbiBUZWNobm9sb2d5LCBJbmMuCi0wMDA0ODMgICAgIChiYXNlIDE2KQkJRGVsdHJvbiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJOEYtMywgTm8uIDEyNSwgTGFuZSAyMzUKLQkJCQlQYW8tQ2hpYW8gUmQuLCBIc2ludGllbiwKLQkJCQlUYWlwZWkgVEFJV0FOLCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTg0ICAgKGhleCkJCUFtYW5uIEdtYkgKLTAwMDQ4NCAgICAgKGJhc2UgMTYpCQlBbWFubiBHbWJICi0JCQkJVW50ZXJhbmdlciA2Ci0JCQkJRC04MjA0MSBPYmVyaGFjaGluZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTg1ICAgKGhleCkJCVBpY29MaWdodAotMDAwNDg1ICAgICAoYmFzZSAxNikJCVBpY29MaWdodAotCQkJCTQ2NjUgTmF1dGlsdXMgQ291cnQgU291dGgKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04NiAgIChoZXgpCQlJVFRDLCBVbml2ZXJzaXR5IG9mIEthbnNhcwotMDAwNDg2ICAgICAoYmFzZSAxNikJCUlUVEMsIFVuaXZlcnNpdHkgb2YgS2Fuc2FzCi0JCQkJMjMzNSBJcnZpbmcgSGlsbCBSZC4KLQkJCQlMYXdyZW5jZSBLUyA2NjA0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtODcgICAoaGV4KQkJQ29nZW5jeSBTZW1pY29uZHVjdG9yLCBJbmMuCi0wMDA0ODcgICAgIChiYXNlIDE2KQkJQ29nZW5jeSBTZW1pY29uZHVjdG9yLCBJbmMuCi0JCQkJMzYyIFRlcnJ5IEZveCBEcml2ZSwgU3VpdGUgMjEwCi0JCQkJS2FuYXRhLCBPTiwgSzJLIDJQNQotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wNC04OCAgIChoZXgpCQlFdXJvdGhlcm0gQ29udHJvbHMKLTAwMDQ4OCAgICAgKGJhc2UgMTYpCQlFdXJvdGhlcm0gQ29udHJvbHMKLQkJCQk3NDFGIE1pbGxlciBEcml2ZQotCQkJCUxlc3NidXJnIFZBIDIwMTc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04OSAgIChoZXgpCQlZQUZPIE5ldHdvcmtzLCBJbmMuCi0wMDA0ODkgICAgIChiYXNlIDE2KQkJWUFGTyBOZXR3b3JrcywgSW5jLgotCQkJCTEzNDBGIENoYXJ3b29kIFJkLgotCQkJCUhhbm92ZXIgTUQgMjEwNzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LThBICAgKGhleCkJCVRlbWlhIFZlcnRyaWVicyBHbWJICi0wMDA0OEEgICAgIChiYXNlIDE2KQkJVGVtaWEgVmVydHJpZWJzIEdtYkgKLQkJCQlMYW5kc2JlcmdlcnN0ci4gMzIwCi0JCQkJRC04MDY4NyBNdW5pY2gKLQkJCQlHRVJNQU5ZCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04QiAgIChoZXgpCQlQb3Njb24gQ29ycG9yYXRpb24KLTAwMDQ4QiAgICAgKGJhc2UgMTYpCQlQb3Njb24gQ29ycG9yYXRpb24KLQkJCQkjNjA2IEhvLURvbmcsIE5hbSBHdSwKLQkJCQlQb2hhbmcgQ2l0eSwgS3l1bmdidWssCi0JCQkJU09VVEggS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtOEMgICAoaGV4KQkJTmF5bmEgTmV0d29ya3MsIEluYy4KLTAwMDQ4QyAgICAgKGJhc2UgMTYpCQlOYXluYSBOZXR3b3JrcywgSW5jLgotCQkJCTE1NyBUb3BheiBTdC4KLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOEQgICAoaGV4KQkJVG9uZSBDb21tYW5kZXIgU3lzdGVtcywgSW5jLgotMDAwNDhEICAgICAoYmFzZSAxNikJCVRvbmUgQ29tbWFuZGVyIFN5c3RlbXMsIEluYy4KLQkJCQkxMTYwOSA0OXRoIFBsYWNlIFdlc3QKLQkJCQlNdWtpbHRlbyBXQSA5ODI3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOEUgICAoaGV4KQkJT2htIFRlY2ggTGFicywgSW5jLgotMDAwNDhFICAgICAoYmFzZSAxNikJCU9obSBUZWNoIExhYnMsIEluYy4KLQkJCQkxNDEgTGFuemEgQXZlLiwgQi0xMgotCQkJCUdhcmZpZWxkIE5KIDA3MDI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04RiAgIChoZXgpCQlURCBTeXN0ZW1zIENvcnBvcmF0aW9uCi0wMDA0OEYgICAgIChiYXNlIDE2KQkJVEQgU3lzdGVtcyBDb3Jwb3JhdGlvbgotCQkJCTEwMCBCZWFyZm9vdCBSZC4KLQkJCQk2NCBPbnRhcmlvIERyaXZlCi0JCQkJSHVkc29uIE1BIDAxNzQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC05MCAgIChoZXgpCQlPcHRpY2FsIEFjY2VzcwotMDAwNDkwICAgICAoYmFzZSAxNikJCU9wdGljYWwgQWNjZXNzCi0JCQkJUC5PLiBCb3ggMTE0Ci0JCQkJWW9rbmVhbSwgMjA2OTIKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDQtOTEgICAoaGV4KQkJVGVjaG5vdmlzaW9uLCBJbmMuCi0wMDA0OTEgICAgIChiYXNlIDE2KQkJVGVjaG5vdmlzaW9uLCBJbmMuCi0JCQkJNTE1NSBTcGVjdHJ1bSBXYXksIFVuaXQgIzMxCi0JCQkJTWlzc2lzc2F1Z2EsIE9udGFyaW8KLQkJCQlMNFcgNUExIENBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wNC05MiAgIChoZXgpCQlIaXZlIEludGVybmV0LCBMdGQuCi0wMDA0OTIgICAgIChiYXNlIDE2KQkJSGl2ZSBJbnRlcm5ldCwgTHRkLgotCQkJCVVuaXQgMiwgQ2h1cmNoIFZpZXcgQnVzaW5lc3MgQ2VudHJlCi0JCQkJTG91dGggUm9hZAotCQkJCUJpbmJyb29rIE1hcmtldCBSYXNlbiwgTGluY29sbnNoaXJlIExOOCA2QlkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC05MyAgIChoZXgpCQlUc2luZ2h1YSBVbmlzcGxlbmRvdXIgQ28uLCBMdGQuCi0wMDA0OTMgICAgIChiYXNlIDE2KQkJVHNpbmdodWEgVW5pc3BsZW5kb3VyIENvLiwgTHRkLgotCQkJCVRoLVVuaXMgQnVpbGRpbmcgVHNpbmdodWEKLQkJCQlVbml2ZXJzaXR5LCBCZWppbmcgMTAwMDg0Ci0JCQkJUC5SLiBDSElOQQotCQkJCUNISU5BCi0KLTAwLTA0LTk0ICAgKGhleCkJCUJyZWV6ZWNvbSwgTHRkLgotMDAwNDk0ICAgICAoYmFzZSAxNikJCUJyZWV6ZWNvbSwgTHRkLgotCQkJCUF0aWRpbSBUZWNobm9sb2d5IFBhcmsKLQkJCQlCbGRnLiAxLCBQLk8uQi4gMTMxMzkgVGVsLUF2aXYgNjExMzEKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDQtOTUgICAoaGV4KQkJVGVqYXMgTmV0d29ya3MgSW5kaWEgTGltaXRlZAotMDAwNDk1ICAgICAoYmFzZSAxNikJCVRlamFzIE5ldHdvcmtzIEluZGlhIExpbWl0ZWQKLQkJCQkjNTgsIDFzdCBNYWluIFJvYWQsIEouUC4gTmFnYXIsIAotCQkJCTNyZCBQaGFzZSwgS2FybmF0YWthCi0JCQkJQmFuZ2Fsb3JlICA1NjAwNzggCi0JCQkJSU5ESUEKLQotMDAtMDQtOTYgICAoaGV4KQkJRXh0cmVtZSBOZXR3b3JrcwotMDAwNDk2ICAgICAoYmFzZSAxNikJCUV4dHJlbWUgTmV0d29ya3MKLQkJCQkzNTg1IE1vbnJvZSBTdC4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOTcgICAoaGV4KQkJTWFjcm9TeXN0ZW0gRGlnaXRhbCBWaWRlbyBBRwotMDAwNDk3ICAgICAoYmFzZSAxNikJCU1hY3JvU3lzdGVtIERpZ2l0YWwgVmlkZW8gQUcKLQkJCQlTY2hvZWxsaW5nZXIgRmVsZCAyOAotCQkJCTU4MzAwIFdldHRlciwgRi5SLgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTk4ICAgKGhleCkJCU1haGkgTmV0d29ya3MKLTAwMDQ5OCAgICAgKGJhc2UgMTYpCQlNYWhpIE5ldHdvcmtzCi0JCQkJMTAzOSBOLiBNY0Rvd2VsbCBCbHZkLgotCQkJCVBldGFsdW1hIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC05OSAgIChoZXgpCQlDaGlubyBDb3Jwb3JhdGlvbgotMDAwNDk5ICAgICAoYmFzZSAxNikJCUNoaW5vIENvcnBvcmF0aW9uCi0JCQkJMSBNb3JpLCBGdWppb2thIENpdHksCi0JCQkJR3VubWEgUHJlZi4gSkFQQU4KLQkJCQlaaXA6IDM3NS04NTA1Ci0JCQkJSkFQQU4KLQotMDAtMDQtOUEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNDlBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTlCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDQ5QiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC05QyAgIChoZXgpCQlTdXJnaWVudCBOZXR3b3JrcywgSW5jLgotMDAwNDlDICAgICAoYmFzZSAxNikJCVN1cmdpZW50IE5ldHdvcmtzLCBJbmMuCi0JCQkJMzUyMCBFeGVjdXRpdmUgQ2VudGVyIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJQXVzdGluIFRYIDc4NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC05RCAgIChoZXgpCQlJcGFuZW1hIFRlY2hub2xvZ2llcwotMDAwNDlEICAgICAoYmFzZSAxNikJCUlwYW5lbWEgVGVjaG5vbG9naWVzCi0JCQkJMjgsIFJ1ZSBEZSBMYSBSZWRvdXRlCi0JCQkJOTIyNjAgRm9udGVuYXkgQXV4IFJvc2VzCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTA0LTlFICAgKGhleCkJCVdpcmVsaW5rIENvLiwgTHRkLgotMDAwNDlFICAgICAoYmFzZSAxNikJCVdpcmVsaW5rIENvLiwgTHRkLgotCQkJCTExRiwgR2Vvc2VvbmcgQi9EIDU0MSwgRG93aGEtRG9uZywKLQkJCQlNYXBvLUd1LCBTZW91bCwgMTIxLTcwMSwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC05RiAgIChoZXgpCQlGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvcgotMDAwNDlGICAgICAoYmFzZSAxNikJCUZyZWVzY2FsZSBTZW1pY29uZHVjdG9yCi0JCQkJNzcwMCBXZXN0IFBhcm1lciBMYW5lCi0JCQkJTUQgUEw1OQotCQkJCUF1c3RpbiBUWCA3ODcyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQTAgICAoaGV4KQkJVmVyaXR5IEluc3RydW1lbnRzLCBJbmMuCi0wMDA0QTAgICAgIChiYXNlIDE2KQkJVmVyaXR5IEluc3RydW1lbnRzLCBJbmMuCi0JCQkJMjkwMSBFaXNlbmhvd2VyIFN0LgotCQkJCUNhcnJvbGx0b24gVFggNzUwMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUExICAgKGhleCkJCVBhdGh3YXkgQ29ubmVjdGl2aXR5Ci0wMDA0QTEgICAgIChiYXNlIDE2KQkJUGF0aHdheSBDb25uZWN0aXZpdHkKLQkJCQkxNDM5LTE3IEF2ZW51ZSBTRQotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMkcgMUo5Ci0JCQkJQ0FOQURBCi0KLTAwLTA0LUEyICAgKGhleCkJCUwuUy5JLiBKYXBhbiBDby4sIEx0ZC4KLTAwMDRBMiAgICAgKGJhc2UgMTYpCQlMLlMuSS4gSmFwYW4gQ28uLCBMdGQuCi0JCQkJMS04LTE0IFNlbmRhZ2F5YSBTaGlidXlhLUt1Ci0JCQkJVG9reW8gMTUxLTAwNTEgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC1BMyAgIChoZXgpCQlNaWNyb2NoaXAgVGVjaG5vbG9neSwgSW5jLgotMDAwNEEzICAgICAoYmFzZSAxNikJCU1pY3JvY2hpcCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjM1NSBXLiBDaGFuZGxlciBCbHZkLgotCQkJCUNoYW5kbGVyIEFaIDg1MjI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1BNCAgIChoZXgpCQlOZXRFbmFibGVkLCBJbmMuCi0wMDA0QTQgICAgIChiYXNlIDE2KQkJTmV0RW5hYmxlZCwgSW5jLgotCQkJCTEyNzUgS2lubmVhciBSZC4KLQkJCQlDb2x1bWJ1cyBPSCA0MzIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQTUgICAoaGV4KQkJQmFyY28gUHJvamVjdGlvbiBTeXN0ZW1zIE5WCi0wMDA0QTUgICAgIChiYXNlIDE2KQkJQmFyY28gUHJvamVjdGlvbiBTeXN0ZW1zIE5WCi0JCQkJTm9vcmRsYWFuIDUKLQkJCQlCODUyMCBLdXVybmUKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC0wNC1BNiAgIChoZXgpCQlTQUYgVGVobmlrYSBMdGQuCi0wMDA0QTYgICAgIChiYXNlIDE2KQkJU0FGIFRlaG5pa2EgTHRkLgotCQkJCTkxIER6aXJuYXZ1IFN0ci4sCi0JCQkJUmlnYSwgTFYtMTAxMSwKLQkJCQlMQVRWSUEKLQkJCQlMQVRWSUEKLQotMDAtMDQtQTcgICAoaGV4KQkJRmFiaWFUZWNoIENvcnBvcmF0aW9uCi0wMDA0QTcgICAgIChiYXNlIDE2KQkJRmFiaWFUZWNoIENvcnBvcmF0aW9uCi0JCQkJNEYtMywgTm8uIDE4LCBMYW5lIDYwOQotCQkJCUNodW5nLUhzaW4gUmQuLCBTZWMuIDUgU2FuIENodW5nIENpdHksCi0JCQkJVGFpcGVpIEhzaWVuLCBUQUlXQU4gUi5PLkMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LUE4ICAgKGhleCkJCUJyb2FkbWF4IFRlY2hub2xvZ2llcywgSW5jLgotMDAwNEE4ICAgICAoYmFzZSAxNikJCUJyb2FkbWF4IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE4MCwgV2FpIFlpcCBTdHJlZXQsCi0JCQkJSHd1biBUb25nLAotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC0wNC1BOSAgIChoZXgpCQlTYW5kU3RyZWFtIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNEE5ICAgICAoYmFzZSAxNikJCVNhbmRTdHJlYW0gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTk1NSBMYWtld2F5IERyLgotCQkJCUxld2lzdmlsbGUgVFggNzUwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUFBICAgKGhleCkJCUpldHN0cmVhbSBDb21tdW5pY2F0aW9ucwotMDAwNEFBICAgICAoYmFzZSAxNikJCUpldHN0cmVhbSBDb21tdW5pY2F0aW9ucwotCQkJCTU0MDAgSGVsbHllciBBdmVudWUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzOC0xMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1BQiAgIChoZXgpCQlDb212ZXJzZSBOZXR3b3JrIFN5c3RlbXMsIEluYy4KLTAwMDRBQiAgICAgKGJhc2UgMTYpCQlDb212ZXJzZSBOZXR3b3JrIFN5c3RlbXMsIEluYy4KLQkJCQkyOSBIYWJhcnplbCBTdHJlZXQuCi0JCQkJVGVsLUF2aXYgNjk3MTAKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDQtQUMgICAoaGV4KQkJSUJNIENvcnAKLTAwMDRBQyAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQUQgICAoaGV4KQkJTWFsaWJ1IE5ldHdvcmtzCi0wMDA0QUQgICAgIChiYXNlIDE2KQkJTWFsaWJ1IE5ldHdvcmtzCi0JCQkJMjY2MzcgQWdvdXJhIFJkLgotCQkJCUNhbGFiYXNhcyBDQSA5MTMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQUUgICAoaGV4KQkJU3VsbGFpciBDb3Jwb3JhdGlvbgotMDAwNEFFICAgICAoYmFzZSAxNikJCVN1bGxhaXIgQ29ycG9yYXRpb24KLQkJCQkzNzAwIEVhc3QgTWljaGlnYW4gQmx2ZAotCQkJCU1pY2hpZ2FuIENpdHkgSU4gNDYzNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUFGICAgKGhleCkJCURpZ2l0YWwgRm91bnRhaW4sIEluYy4KLTAwMDRBRiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIEZvdW50YWluLCBJbmMuCi0JCQkJNjAwIEFsYWJhbWEgU3QuCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQjAgICAoaGV4KQkJRUxFU0lHTiBDby4sIEx0ZC4KLTAwMDRCMCAgICAgKGJhc2UgMTYpCQlFTEVTSUdOIENvLiwgTHRkLgotCQkJCTlGbC4gVGFlS3lvdW5nIEJsZGcuLAotCQkJCTQyLTQyIEJvbmdDaHVuLWRvbmcgS3dhbkFrLWd1LCBTZW91bCwKLQkJCQlSLk8uIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LUIxICAgKGhleCkJCVNpZ25hbCBUZWNobm9sb2d5LCBJbmMuCi0wMDA0QjEgICAgIChiYXNlIDE2KQkJU2lnbmFsIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkzcmQuIEZsLiBEYWJvIEJsZGcuCi0JCQkJMzctMiBrb3lvIHNvbmdwYQotCQkJCVNlb3VsIEtPUkVBIDEzOC0xMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtQjIgICAoaGV4KQkJRVNTRUdJIFNSTAotMDAwNEIyICAgICAoYmFzZSAxNikJCUVTU0VHSSBTUkwKLQkJCQlWaWEgRGVsIENhdmFyYXRvcmksIDE3Ci0JCQkJMjAwOTIgQ2luaXNlbGxvIEIuIChNMSkKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTA0LUIzICAgKGhleCkJCVZpZGVvdGVrLCBJbmMuCi0wMDA0QjMgICAgIChiYXNlIDE2KQkJVmlkZW90ZWssIEluYy4KLQkJCQkyNDMgU2hvZW1ha2VyIFJkLgotCQkJCVBvdHRzdG93biBQQSAxOTQ2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQjQgICAoaGV4KQkJQ0lBQwotMDAwNEI0ICAgICAoYmFzZSAxNikJCUNJQUMKLQkJCQkxOCBydWUgSm9zZXBoIEJBUkEKLQkJCQk5MjEzMCBJc3N5LWxlcy1Nb2xpbmVhdXgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDQtQjUgICAoaGV4KQkJRXF1aXRyYWMgQ29ycG9yYXRpb24KLTAwMDRCNSAgICAgKGJhc2UgMTYpCQlFcXVpdHJhYyBDb3Jwb3JhdGlvbgotCQkJCTE5MDUgTi5XLiA4Mm5kIEF2ZW51ZQotCQkJCU1pYW1pIEZMIDMzMTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1CNiAgIChoZXgpCQlTdHJhdGV4IE5ldHdvcmtzLCBJbmMuCi0wMDA0QjYgICAgIChiYXNlIDE2KQkJU3RyYXRleCBOZXR3b3JrcywgSW5jLgotCQkJCTY0IFdoaXRlIFJvYWQKLQkJCQlSZXRyZWF0LAotCQkJCUNhcGUgVG93biAgNzk0NQotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0wNC1CNyAgIChoZXgpCQlBTUIgaS50LiBIb2xkaW5nCi0wMDA0QjcgICAgIChiYXNlIDE2KQkJQU1CIGkudC4gSG9sZGluZwotCQkJCVp1aWRlcmhvdXRsYWFuIDQKLQkJCQlQSiBIYWFybGVtIDIwMTIKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wNC1COCAgIChoZXgpCQlLdW1haGlyYSBDby4sIEx0ZC4KLTAwMDRCOCAgICAgKGJhc2UgMTYpCQlLdW1haGlyYSBDby4sIEx0ZC4KLQkJCQk0LTM0IFVqaW5haGlnYXNoaSAyLUNob21lCi0JCQkJTWluYW1pa3UgSGlyb3NoaW1hCi0JCQkJSkFQQU4gNzM0LTg1NjcKLQkJCQlKQVBBTgotCi0wMC0wNC1COSAgIChoZXgpCQlTLkkuIFNvdWJvdSwgSW5jLgotMDAwNEI5ICAgICAoYmFzZSAxNikJCVMuSS4gU291Ym91LCBJbmMuCi0JCQkJS3VibyBCbGRnLiwgNzAzLCAyLTEyLAotCQkJCU5hbnBlaWRhaS1jaG8sIFNoaWJ1eWEta3UsCi0JCQkJVG9reW8gVG9reW8gSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC1CQSAgIChoZXgpCQlLREQgTWVkaWEgV2lsbCBDb3Jwb3JhdGlvbgotMDAwNEJBICAgICAoYmFzZSAxNikJCUtERCBNZWRpYSBXaWxsIENvcnBvcmF0aW9uCi0JCQkJMi0xLTIzIE5ha2FtZWd1cm8KLQkJCQlNZWd1cm8tS3UgVG9reW8KLQkJCQkxNTMtMDA2MSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LUJCICAgKGhleCkJCUJhcmRhYyBDb3Jwb3JhdGlvbgotMDAwNEJCICAgICAoYmFzZSAxNikJCUJhcmRhYyBDb3Jwb3JhdGlvbgotCQkJCTQwIExvZyBDYW5vZSBDaXJjbGUKLQkJCQlTdGV2ZW5zdmlsbGUgTUQgMjE2NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUJDICAgKGhleCkJCUdpYW50ZWMsIEluYy4KLTAwMDRCQyAgICAgKGJhc2UgMTYpCQlHaWFudGVjLCBJbmMuCi0JCQkJNEYsIE5vLiAzLCBMYW5lIDEyMywKLQkJCQlQYW8gQ2h1bmcgUmQuLCBIc2llbiBUaWVuIENpdHksIFRhaXBlaQotCQkJCVRBSVdBTiAyMzEgVEFJV0FOIDIzMSBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LUJEICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAwNEJEICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUJFICAgKGhleCkJCU9wdFhDb24sIEluYy4KLTAwMDRCRSAgICAgKGJhc2UgMTYpCQlPcHRYQ29uLCBJbmMuCi0JCQkJUC5PLiBCb3ggMTM0NDkKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTM0NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUJGICAgKGhleCkJCVZlcnNhTG9naWMgQ29ycC4KLTAwMDRCRiAgICAgKGJhc2UgMTYpCQlWZXJzYUxvZ2ljIENvcnAuCi0JCQkJMzg4OCBTdGV3YXJ0IFJkLgotCQkJCUV1Z2VuZSBPUiA5NzQwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQzAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNEMwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUMxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDRDMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1DMiAgIChoZXgpCQlNYWduaXBpeCwgSW5jLgotMDAwNEMyICAgICAoYmFzZSAxNikJCU1hZ25pcGl4LCBJbmMuCi0JCQkJMzUzOSBTdC1DaGFybGVzIEJsdmQuLCBTdWl0ZSAyMTIKLQkJCQlLaXJrbGFuZCAoUXVlYmVjKQotCQkJCUNBTkFEQSBIOUgzQzQKLQkJCQlDQU5BREEKLQotMDAtMDQtQzMgICAoaGV4KQkJQ0FTVE9SIEluZm9ybWF0aXF1ZQotMDAwNEMzICAgICAoYmFzZSAxNikJCUNBU1RPUiBJbmZvcm1hdGlxdWUKLQkJCQkyLCBSdWUgRHUgS2VmaXIKLQkJCQlTZW5pYSAzNDMKLQkJCQk5NDUzNyBPcmx5IENlZGV4IEZyYW5jZQotCQkJCUZSQU5DRQotCi0wMC0wNC1DNCAgIChoZXgpCQlBbGxlbiAmIEhlYXRoIExpbWl0ZWQKLTAwMDRDNCAgICAgKGJhc2UgMTYpCQlBbGxlbiAmIEhlYXRoIExpbWl0ZWQKLQkJCQlLZXJuaWNrIEluZHVzdHJpYWwgRXN0YXRlLCBQZW5yeW4KLQkJCQlDb3Jud2FsbCBFbmdsYW5kIFRSMTAgOUxVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtQzUgICAoaGV4KQkJQVNFIFRlY2hub2xvZ2llcywgVVNBCi0wMDA0QzUgICAgIChiYXNlIDE2KQkJQVNFIFRlY2hub2xvZ2llcywgVVNBCi0JCQkJNjcyMSBCYXVtIERyLgotCQkJCUtub3h2aWxsZSBUTiAzNzkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQzYgICAoaGV4KQkJWWFtYWhhIE1vdG9yIENvLiwgTHRkLgotMDAwNEM2ICAgICAoYmFzZSAxNikJCVlhbWFoYSBNb3RvciBDby4sIEx0ZC4KLQkJCQlJbmZvcm1hdGlvbiBTeXN0ZW0gRGl2aXNpb24KLQkJCQkyNTAwIFNoaW5nYWkgSXdhdGEsIFNoaXp1b2thCi0JCQkJSmFwYW4gWmlwOiA0MzgtODUwMQotCQkJCUpBUEFOCi0KLTAwLTA0LUM3ICAgKGhleCkJCU5ldE1vdW50Ci0wMDA0QzcgICAgIChiYXNlIDE2KQkJTmV0TW91bnQKLQkJCQlQLk8uQi4gMjMyNQotCQkJCUthZGltYSA2MDkyMAotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wNC1DOCAgIChoZXgpCQlMSUJBIE1hc2NoaW5lbmZhYnJpayBHbWJICi0wMDA0QzggICAgIChiYXNlIDE2KQkJTElCQSBNYXNjaGluZW5mYWJyaWsgR21iSAotCQkJCVBPIEJveCAxMTIwCi0JCQkJRDk1MTEyIE5haWxhCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDQtQzkgICAoaGV4KQkJTWljcm8gRWxlY3Ryb24gQ28uLCBMdGQuCi0wMDA0QzkgICAgIChiYXNlIDE2KQkJTWljcm8gRWxlY3Ryb24gQ28uLCBMdGQuCi0JCQkJMkYgSWJhbmFraS1UYW5ha2EgQmxkZy4KLQkJCQkxLTEtNTkgTmFrYWhvZHVtaSBJYmFyYWtpLXNoaSwgT3Nha2EgNTY3Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC1DQSAgIChoZXgpCQlGcmVlTXMgQ29ycC4KLTAwMDRDQSAgICAgKGJhc2UgMTYpCQlGcmVlTXMgQ29ycC4KLQkJCQlTaGluaGFuIEJsZGcuIDZGLAotCQkJCTQ1LTExIFlvaWRvLURvbmcsIFlvdW5nZGV1bmdwby1rdSwKLQkJCQlTZW91bCAxNTAtNzM2IEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LUNCICAgKGhleCkJCVRkc29mdCBDb21tdW5pY2F0aW9uLCBMdGQuCi0wMDA0Q0IgICAgIChiYXNlIDE2KQkJVGRzb2Z0IENvbW11bmljYXRpb24sIEx0ZC4KLQkJCQk2MCBNZWRpbmF0IEhheWVodWRpbSBTdC4KLQkJCQlIZXJ6bGlhIDQ2NzY2Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTA0LUNDICAgKGhleCkJCVBlZWsgVHJhZmZpYyBCLlYuCi0wMDA0Q0MgICAgIChiYXNlIDE2KQkJUGVlayBUcmFmZmljIEIuVi4KLQkJCQlQb3N0YnVzIDI1NDIKLQkJCQkzODAwIEdCIEFtZXJzZm9vdAotCQkJCVRoZSBOZXRoZXJsYW5kcwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTA0LUNEICAgKGhleCkJCUluZm9ybWVkaWEgUmVzZWFyY2ggR3JvdXAKLTAwMDRDRCAgICAgKGJhc2UgMTYpCQlJbmZvcm1lZGlhIFJlc2VhcmNoIEdyb3VwCi0JCQkJMzkwIFN0LVZhbGxpZXIgRWFzdAotCQkJCVN1aXRlIDIwMwotCQkJCVF1ZWJlYyBQUSBHMUsgM1A2IENBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wNC1DRSAgIChoZXgpCQlQYXRyaWEgQWlsb24KLTAwMDRDRSAgICAgKGJhc2UgMTYpCQlQYXRyaWEgQWlsb24KLQkJCQlOYXVsYWthdHUgMwotCQkJCUZJTi0zMzEwMCBUYW1wZXJlCi0JCQkJRklOTEFORAotCQkJCUZJTkxBTkQKLQotMDAtMDQtQ0YgICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0wMDA0Q0YgICAgIChiYXNlIDE2KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0JCQkJMTI4MCBEaXNjIERyaXZlCi0JCQkJU2hha29wZWUgTU4gNTUzNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUQwICAgKGhleCkJCVNvZnRsaW5rIHMuci5vLgotMDAwNEQwICAgICAoYmFzZSAxNikJCVNvZnRsaW5rIHMuci5vLgotCQkJCVRvbWtvdmEgNDA5Ci0JCQkJS3JhbHVweSBuLiBWbHRhdm91Ci0JCQkJQ3plY2ggUmVwdWJsaWMKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0wNC1EMSAgIChoZXgpCQlEcmV3IFRlY2hub2xvZ2llcywgSW5jLgotMDAwNEQxICAgICAoYmFzZSAxNikJCURyZXcgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMzkxNSBSZXNlYXJjaCBQYXJrIERyCi0JCQkJU3VpdGUgQTEwCi0JCQkJQW5uIEFyYm9yIE1JIDQ4MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1EMiAgIChoZXgpCQlBZGNvbiBUZWxlbWV0cnkgR21iSAotMDAwNEQyICAgICAoYmFzZSAxNikJCUFkY29uIFRlbGVtZXRyeSBHbWJICi0JCQkJSW5rdXN0ci4gMjQKLQkJCQlBLTM0MDAgS2xvc3Rlcm5ldWJ1cmcKLQkJCQlBVVNUUklBCi0KLTAwLTA0LUQzICAgKGhleCkJCVRveW9rZWlraSBDby4sIEx0ZC4KLTAwMDREMyAgICAgKGJhc2UgMTYpCQlUb3lva2Vpa2kgQ28uLCBMdGQuCi0JCQkJV2FkYSAzOTY3LTEwLCBNYXRzdW1vdG8tQ2l0eQotCQkJCU5hZ2FubyAzOTAtMTI5OCwKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LUQ0ICAgKGhleCkJCVByb3ZpZXcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA0RDQgICAgIChiYXNlIDE2KQkJUHJvdmlldyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQk2RiwgTm8uIDEsIFBhdS1TaGVuZyBSb2FkCi0JCQkJWXVuZyBIbyBDaXR5LCBUYWlwZWksCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC1ENSAgIChoZXgpCQlIaXRhY2hpIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbiBFbmdpbmVlcmluZywgTHRkLgotMDAwNEQ1ICAgICAoYmFzZSAxNikJCUhpdGFjaGkgSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uIEVuZ2luZWVyaW5nLCBMdGQuCi0JCQkJUXVlZW4ncyBUb3dlciBCMjFGLCAyLTMtMywgTWluYXRvbWlyYWksCi0JCQkJTmlzaGkta3UsIFlva29oYW1hLCAyMjAtNjEyMQotCQkJCUpBUEFOCi0KLTAwLTA0LUQ2ICAgKGhleCkJCVRha2FnaSBJbmR1c3RyaWFsIENvLiwgTHRkLgotMDAwNEQ2ICAgICAoYmFzZSAxNikJCVRha2FnaSBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCUVsZWN0cm9uaWMgSW5zdHJ1bWVudCBEaXYuCi0JCQkJMzUwOCwgS2FtaWlkZS1NaWthZXNoaSwgRXVqaW5vbWl5YS1zaGksCi0JCQkJNDE4LTAxMDMgNDE4LTAxMDMgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC1ENyAgIChoZXgpCQlPbWl0ZWMgSW5zdHJ1bWVudGF0aW9uIEx0ZC4KLTAwMDRENyAgICAgKGJhc2UgMTYpCQlPbWl0ZWMgSW5zdHJ1bWVudGF0aW9uIEx0ZC4KLQkJCQlIb3B0b24gSW5kdXN0cmlhbCBFc3QuCi0JCQkJTG9uZG9uIFJkLiwgRGV2aXplcyBXaWx0c2hpcmUgU04xMCAyRVUKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtRDggICAoaGV4KQkJSVBXaXJlbGVzcywgSW5jLgotMDAwNEQ4ICAgICAoYmFzZSAxNikJCUlQV2lyZWxlc3MsIEluYy4KLQkJCQk0IExhbmRzb3duZSBDb3VydAotCQkJCUJ1bXBlcnMgV2F5IENoaXBwZW5oYW0sIFdpbHRzaGlyZSwKLQkJCQlTTjE0IEdSWiBVSwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA0LUQ5ICAgKGhleCkJCVRpdGFuIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDA0RDkgICAgIChiYXNlIDE2KQkJVGl0YW4gRWxlY3Ryb25pY3MsIEluYy4KLQkJCQlSbSA3LCAxMSBGbC4sIE5vLiAzOTgsCi0JCQkJSHVhbi1QZWkgUm9hZCwgQ2h1bmctTGksCi0JCQkJVGFveXVhbiBUYW95dWFuIFRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtREEgICAoaGV4KQkJUmVsYXggVGVjaG5vbG9neSwgSW5jLgotMDAwNERBICAgICAoYmFzZSAxNikJCVJlbGF4IFRlY2hub2xvZ3ksIEluYy4KLQkJCQlEQkEvIEdyYW5pdGUgRGlnaXRhbAotCQkJCTMxMDEgV2hpcHBsZSBSb2FkCi0JCQkJVW5pb24gQ2l0eSBDQSA5NDU4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtREIgICAoaGV4KQkJVGVsbHVzIEdyb3VwIENvcnAuCi0wMDA0REIgICAgIChiYXNlIDE2KQkJVGVsbHVzIEdyb3VwIENvcnAuCi0JCQkJNEYsIE5vLiAxNSBJbmR1c3RyeSBFLiBSZC4sIElYCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1IEhzaW5jaHUgVGFpd2FuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC1EQyAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMDREQyAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlEZXBhcnRtZW50IDY4MDAKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMCBCcmFwdG9uIE9OIEw2Ci0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTA0LUREICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDRERCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1ERSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0REUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtREYgICAoaGV4KQkJVGVyYWNvbSBUZWxlbWF0aWNhIEx0ZGEuCi0wMDA0REYgICAgIChiYXNlIDE2KQkJVGVyYWNvbSBUZWxlbWF0aWNhIEx0ZGEuCi0JCQkJUi4gRmVsaXBlIE5lcmksIDI0NiBDSi4gMzAxCi0JCQkJOTA0NDAtMTUwIFBvcnRvIEFsbGVncmUgUlMKLQkJCQlCYXppbAotCQkJCUJSQVpJTAotCi0wMC0wNC1FMCAgIChoZXgpCQlQcm9ja2V0IE5ldHdvcmtzCi0wMDA0RTAgICAgIChiYXNlIDE2KQkJUHJvY2tldCBOZXR3b3JrcwotCQkJCTExMDAgQ2FkaWxsYWMgQ291cnQKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRTEgICAoaGV4KQkJSW5maW5pb3IgTWljcm9zeXN0ZW1zCi0wMDA0RTEgICAgIChiYXNlIDE2KQkJSW5maW5pb3IgTWljcm9zeXN0ZW1zCi0JCQkJMkYsIEFjY3VmYXIgQmxkZywgMjM0LTEwLAotCQkJCUphbXNpbC1Eb25nLCBTb25ncGEtR3UKLQkJCQlTZW91bCBLT1JFQSAxMzgtMjIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LUUyICAgKGhleCkJCVNNQyBOZXR3b3JrcywgSW5jLgotMDAwNEUyICAgICAoYmFzZSAxNikJCVNNQyBOZXR3b3JrcywgSW5jLgotCQkJCTYgSHVnaGVzCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1FMyAgIChoZXgpCQlBY2N0b24gVGVjaG5vbG9neSBDb3JwLgotMDAwNEUzICAgICAoYmFzZSAxNikJCUFjY3RvbiBUZWNobm9sb2d5IENvcnAuCi0JCQkJTm8uIDEgQ3JlYXRpb24gUmQuIElJSSwKLQkJCQlTQklQCi0JCQkJSHNpbmNodSBIc2luY2h1IFRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtRTQgICAoaGV4KQkJRGFlcnl1bmcgSW5kLiwgSW5jLgotMDAwNEU0ICAgICAoYmFzZSAxNikJCURhZXJ5dW5nIEluZC4sIEluYy4KLQkJCQkjMjE5LTYsIEthc2FuIERvbmcsCi0JCQkJS3VtY2h1biBrdSwKLQkJCQlTZW91bCBTZW91bCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC1FNSAgIChoZXgpCQlHbG9uZXQgU3lzdGVtcywgSW5jLgotMDAwNEU1ICAgICAoYmFzZSAxNikJCUdsb25ldCBTeXN0ZW1zLCBJbmMuCi0JCQkJMTFGbC4sIEplaWwgQmxkZy4sIDk0LTQ2LCA3S2EKLQkJCQlZb3VuZ2R1bmdwby1kb25nIFlvbmdkdW5ncG8tS3UgU2VvdWwsIDE1Ci0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtRTYgICAoaGV4KQkJQmFueWFuIE5ldHdvcmsgUHJpdmF0ZSBMaW1pdGVkCi0wMDA0RTYgICAgIChiYXNlIDE2KQkJQmFueWFuIE5ldHdvcmsgUHJpdmF0ZSBMaW1pdGVkCi0JCQkJNDQzLCA4dGggRmxvb3IsIEd1bmEgQ29tcGxleAotCQkJCUFubmFzYWxhaSwgQ2hlbm5haS02MDAgMDE4Ci0JCQkJSU5ESUEKLQkJCQlJTkRJQQotCi0wMC0wNC1FNyAgIChoZXgpCQlMaWdodHBvaW50ZSBDb21tdW5pY2F0aW9ucywgSW5jCi0wMDA0RTcgICAgIChiYXNlIDE2KQkJTGlnaHRwb2ludGUgQ29tbXVuaWNhdGlvbnMsIEluYwotCQkJCTEwMTQwIEJhcm5lcyBDYW55b24gUm9hZAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRTggICAoaGV4KQkJSUVSLCBJbmMuCi0wMDA0RTggICAgIChiYXNlIDE2KQkJSUVSLCBJbmMuCi0JCQkJNDUwMSBTby4gR2VuZXJhbCBCcnVjZSBEcgotCQkJCVN1aXRlIDUwCi0JCQkJVGVtcGxlIFRYIDc2NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1FOSAgIChoZXgpCQlJbmZpbmlzd2l0Y2ggQ29ycG9yYXRpb24KLTAwMDRFOSAgICAgKGJhc2UgMTYpCQlJbmZpbmlzd2l0Y2ggQ29ycG9yYXRpb24KLQkJCQkxMzQgRmxhbmRlcnMgUm9hZAotCQkJCVdlc3Rib3JvdWdoIE1BIDAxNTgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1FQSAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwNEVBICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTEwMDAgV29sZmUgUm9hZCwgTWFpbHN0b3AgNDJMRQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRUIgICAoaGV4KQkJUGF4b25ldCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNEVCICAgICAoYmFzZSAxNikJCVBheG9uZXQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk0MDQ2IENsaXBwZXIgQ291cnQKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1FQyAgIChoZXgpCQlNZW1vYm94IFNBCi0wMDA0RUMgICAgIChiYXNlIDE2KQkJTWVtb2JveCBTQQotCQkJCTEsIFBsYWNlIERhbWUgU3V6YW5uZQotCQkJCTkxMTkwIFNhaW50IEF1YmluCi0JCQkJRnJhbmNlCi0JCQkJRlJBTkNFCi0KLTAwLTA0LUVEICAgKGhleCkJCUJpbGxpb24gRWxlY3RyaWMgQ28uLCBMdGQuCi0wMDA0RUQgICAgIChiYXNlIDE2KQkJQmlsbGlvbiBFbGVjdHJpYyBDby4sIEx0ZC4KLQkJCQk4RiwgTm8uMTkyLCBTZWMuMiwgQ2h1bmcgSHNpbmcgUmQuLAotCQkJCUhzaW4gVGllbiBDaXR5LCBUYWlwZWkgSHNpZW4KLQkJCQlUYWl3YW4gVGFpd2FuIFJPQwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtRUUgICAoaGV4KQkJTGluY29sbiBFbGVjdHJpYyBDb21wYW55Ci0wMDA0RUUgICAgIChiYXNlIDE2KQkJTGluY29sbiBFbGVjdHJpYyBDb21wYW55Ci0JCQkJMjI4MDEgU3QuIENsYWlyIEF2ZW51ZQotCQkJCUNsZXZlbGFuZCBPSCA0NDExNy0xMTk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1FRiAgIChoZXgpCQlQb2xlc3RhciBDb3JwLgotMDAwNEVGICAgICAoYmFzZSAxNikJCVBvbGVzdGFyIENvcnAuCi0JCQkJUk0gIzgwMiBTZW9HZW9uIEIvRCwgMTQ4MCwKLQkJCQlHd2FuWWFuZy1Eb25nLCBEb25nQW4tR3UsIEFuWWFuZyBDaXR5LCA0Ci0JCQkJS29yZWEgKFJPSykKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtRjAgICAoaGV4KQkJSW50ZXJuYXRpb25hbCBDb21wdXRlcnMsIEx0ZAotMDAwNEYwICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgQ29tcHV0ZXJzLCBMdGQKLQkJCQkxIFdlbmxvY2sgV2F5Ci0JCQkJV2VzdCBHb3J0b24gTWFuY2hlc3RlciwgTTEyIDVEUgotCQkJCVVLCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtRjEgICAoaGV4KQkJV2hlcmVOZXQKLTAwMDRGMSAgICAgKGJhc2UgMTYpCQlXaGVyZU5ldAotCQkJCTEwNyBXLiBNY0tpbm5leSBBdmVudWUKLQkJCQlSb2dlcnN2aWxsZSBUTiAzNzg1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRjIgICAoaGV4KQkJUG9seWNvbQotMDAwNEYyICAgICAoYmFzZSAxNikJCVBvbHljb20KLQkJCQkxMDAwIFdlc3QgMTR0aCBTdHJlZXQKLQkJCQlOb3J0aCBWYW5jb3V2ZXIsIEIuQy4KLQkJCQlDYW5hZGEgVjdQM1AzCi0JCQkJQ0FOQURBCi0KLTAwLTA0LUYzICAgKGhleCkJCUZTIEZPUlRILVNZU1RFTUUgR21iSAotMDAwNEYzICAgICAoYmFzZSAxNikJCUZTIEZPUlRILVNZU1RFTUUgR21iSAotCQkJCUt1ZWZlcnN0ci4gOAotCQkJCUQtNzkyMDYgQnJlaXNhY2gKLQkJCQlHZXJtYW55Ci0JCQkJR0VSTUFOWQotCi0wMC0wNC1GNCAgIChoZXgpCQlJbmZpbml0ZSBFbGVjdHJvbmljcyBJbmMuCi0wMDA0RjQgICAgIChiYXNlIDE2KQkJSW5maW5pdGUgRWxlY3Ryb25pY3MgSW5jLgotCQkJCU5vLjQ3OC0xLCBTZWMgMgotCQkJCUNoaW5nIEhhaSBSb2FkIDQwNywgVGFpIENodW5nCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC1GNSAgIChoZXgpCQlTbm93U2hvcmUgTmV0d29ya3MsIEluYy4KLTAwMDRGNSAgICAgKGJhc2UgMTYpCQlTbm93U2hvcmUgTmV0d29ya3MsIEluYy4KLQkJCQkyODUgQmlsbGVyaWNhIFJvYWQKLQkJCQlDaGVsbXNmb3JkIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1GNiAgIChoZXgpCQlBbXBodXMKLTAwMDRGNiAgICAgKGJhc2UgMTYpCQlBbXBodXMKLQkJCQkyMzcyIFF1bWUgRHJpdmUsICNGCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUY3ICAgKGhleCkJCU9tZWdhIEJhbmQsIEluYy4KLTAwMDRGNyAgICAgKGJhc2UgMTYpCQlPbWVnYSBCYW5kLCBJbmMuCi0JCQkJOTAyMC1JIENhcGl0YWwgb2YgVGV4YXMgSGdod3kgTgotCQkJCVN1aXRlICMyNzAKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUY4ICAgKGhleCkJCVFVQUxJQ0FCTEUgVFYgSW5kdXN0cmlhIEUgQ29tLiwgTHRkYQotMDAwNEY4ICAgICAoYmFzZSAxNikJCVFVQUxJQ0FCTEUgVFYgSW5kdXN0cmlhIEUgQ29tLiwgTHRkYQotCQkJCUF2LiBKb2FvIFBhdWxvIEFibGFzLCAzMDgKLQkJCQlKYXJkaW0gRGEgR2xvcmlhIC0gQ290aWEgLVNQIENFUCAwNjcxMS0yCi0JCQkJQlJBWklMCi0KLTAwLTA0LUY5ICAgKGhleCkJCVh0ZXJhIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA0RjkgICAgIChiYXNlIDE2KQkJWHRlcmEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk1MDAgVyBCZXRoYW55IERyaXZlCi0JCQkJQWxsZW4gVFggNzUwMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUZBICAgKGhleCkJCU5CUyBUZWNobm9sb2dpZXMgSW5jLgotMDAwNEZBICAgICAoYmFzZSAxNikJCU5CUyBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTcwMyBFdmFucyBBdmVudWUsIFN1aXRlIDQwMAotCQkJCVRvcm9udG8KLQkJCQlPbnRhcmlvICBNOUMgNUU5Ci0JCQkJQ0FOQURBCi0KLTAwLTA0LUZCICAgKGhleCkJCUNvbW10ZWNoLCBJbmMuCi0wMDA0RkIgICAgIChiYXNlIDE2KQkJQ29tbXRlY2gsIEluYy4KLQkJCQk5MDExIEUuIDM3dGggU3RyZWV0Ci0JCQkJV2ljaGl0YSBLUyA2NzIyNi0yMDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1GQyAgIChoZXgpCQlTdHJhdHVzIENvbXB1dGVyIChERSksIEluYy4KLTAwMDRGQyAgICAgKGJhc2UgMTYpCQlTdHJhdHVzIENvbXB1dGVyIChERSksIEluYy4KLQkJCQkxMTEgUG93ZGVybWlsbCBSb2FkCi0JCQkJTWF5bmFyZCBNQSAwMTc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRkQgICAoaGV4KQkJSmFwYW4gQ29udHJvbCBFbmdpbmVlcmluZyBDby4sIEx0ZC4KLTAwMDRGRCAgICAgKGJhc2UgMTYpCQlKYXBhbiBDb250cm9sIEVuZ2luZWVyaW5nIENvLiwgTHRkLgotCQkJCTEtNS0xLCBIaWdhc2hpYW1hZ2F3YSwgVGFrYXRzdWtpLXNoaQotCQkJCU9zYWthIDU2OS0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMDQtRkUgICAoaGV4KQkJUGVsYWdvIE5ldHdvcmtzCi0wMDA0RkUgICAgIChiYXNlIDE2KQkJUGVsYWdvIE5ldHdvcmtzCi0JCQkJNzAxIEUuIFBsYW5vIFBhcmt3YXkgLSBTdGUuICMyMDUKLQkJCQlQbGFubyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRkYgICAoaGV4KQkJQWNyb25ldCBDby4sIEx0ZC4KLTAwMDRGRiAgICAgKGJhc2UgMTYpCQlBY3JvbmV0IENvLiwgTHRkLgotCQkJCVNhbWFuIEIvRCAyRmwKLQkJCQk4MTEtMTUgQmFuZ2JhZS1Eb25nIFNlb2Noby1rdSwgU2VvdWwKLQkJCQkxMzctMDY0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTAwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDUwMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0wMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1MDEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMDIgICAoaGV4KQkJQVBQTEUgQ09NUFVURVIKLTAwMDUwMiAgICAgKGJhc2UgMTYpCQlBUFBMRSBDT01QVVRFUgotCQkJCTIwNjUwIFZBTExFWSBHUkVFTiBEUklWRQotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMDMgICAoaGV4KQkJSUNPTkFHCi0wMDA1MDMgICAgIChiYXNlIDE2KQkJSUNPTkFHCi0JCQkJQU0gQmFobmhvZiAyCi0JCQkJNTU3NjUgQmlya2VuZmVsZAotCQkJCUdFUk1BTlkKLQotMDAtMDUtMDQgICAoaGV4KQkJTmFyYXkgSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uIEVudGVycHJpc2UKLTAwMDUwNCAgICAgKGJhc2UgMTYpCQlOYXJheSBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb24gRW50ZXJwcmlzZQotCQkJCTNGIFNhbiBXb28gQmxkZy4sIDE1NDMtMTEKLQkJCQlTZW9jaG8tRG9uZywgU2VvY2hvLUt1LAotCQkJCVNlb3VsIDEzNy0wNzAgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS0wNSAgIChoZXgpCQlTeXN0ZW1zIEludGVncmF0aW9uIFNvbHV0aW9ucywgSW5jLgotMDAwNTA1ICAgICAoYmFzZSAxNikJCVN5c3RlbXMgSW50ZWdyYXRpb24gU29sdXRpb25zLCBJbmMuCi0JCQkJMzkyMiBDb2NvbnV0IFBhbG0gRHJpdmUsCi0JCQkJU3VpdGUgMTA2Ci0JCQkJVGFtcGEgRkwgMzM2MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTA2ICAgKGhleCkJCVJlZGRvIE5ldHdvcmtzIEFCCi0wMDA1MDYgICAgIChiYXNlIDE2KQkJUmVkZG8gTmV0d29ya3MgQUIKLQkJCQlMaXZkanVyc2dhdGFuIDQKLQkJCQlTRSAxMjEgNjIgSm9oYW5uZXNob3YKLQkJCQlTV0VERU4KLQotMDAtMDUtMDcgICAoaGV4KQkJRmluZSBBcHBsaWFuY2UgQ29ycC4KLTAwMDUwNyAgICAgKGJhc2UgMTYpCQlGaW5lIEFwcGxpYW5jZSBDb3JwLgotCQkJCTdGbC4sIE5vLiA0OTksCi0JCQkJQ2h1bmctQ2hlbmcgUmQuLCBIc2ludGllbiwgVGFpcGVpCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS0wOCAgIChoZXgpCQlJbmV0Y2FtLCBJbmMuCi0wMDA1MDggICAgIChiYXNlIDE2KQkJSW5ldGNhbSwgSW5jLgotCQkJCTEwMTcxIFBhY2lmaWMgTWVzYSBCbHZkLgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMDkgICAoaGV4KQkJQVZPQyBOaXNoaW11cmEgTHRkLgotMDAwNTA5ICAgICAoYmFzZSAxNikJCUFWT0MgTmlzaGltdXJhIEx0ZC4KLQkJCQlKb2dhc2FraSA0LTE2LTE0Ci0JCQkJTWl5YXpha2ktY2l0eSwgTWl5YXpha2kgODgwLTA5MTcsCi0JCQkJSkFQQU4KLQotMDAtMDUtMEEgICAoaGV4KQkJSUNTIFNwYQotMDAwNTBBICAgICAoYmFzZSAxNikJCUlDUyBTcGEKLQkJCQlWaWEgUm9tYW5vIEFMCi0JCQkJMTAwMTAgU2Nhcm1hZ25vIChUTykKLQkJCQlJVEFMWQotCi0wMC0wNS0wQiAgIChoZXgpCQlTSUNPTSBTeXN0ZW1zLCBJbmMuCi0wMDA1MEIgICAgIChiYXNlIDE2KQkJU0lDT00gU3lzdGVtcywgSW5jLgotCQkJCTQxNDAgU2t5cm9uIERyaXZlCi0JCQkJRG95bGVzdG93biBQQSAxODkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMEMgICAoaGV4KQkJTmV0d29yayBQaG90b25pY3MsIEluYy4KLTAwMDUwQyAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIFBob3RvbmljcywgSW5jLgotCQkJCTQ1MSBBdmlhdGlvbiBCb3VsZXZhcmQKLQkJCQlTYW50YSBSb3NhIENBIDk1NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0wRCAgIChoZXgpCQlNaWRzdHJlYW0gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA1MEQgICAgIChiYXNlIDE2KQkJTWlkc3RyZWFtIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTc3NyAxMDh0aCBBdmUuIE5FCi0JCQkJU3VpdGUgMTcwMAotCQkJCUJlbGxldnVlIFdBIDk4MDA0LTUxNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTBFICAgKGhleCkJCTN3YXJlLCBJbmMuCi0wMDA1MEUgICAgIChiYXNlIDE2KQkJM3dhcmUsIEluYy4KLQkJCQk3MDEgRS4gTWlkZGxlZmllbGQgUmQuCi0JCQkJU3VpdGUgMzAwCi0JCQkJTXQuIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTBGICAgKGhleCkJCVRhbmFrYSBTL1MgTHRkLgotMDAwNTBGICAgICAoYmFzZSAxNikJCVRhbmFrYSBTL1MgTHRkLgotCQkJCTE5NDIgTm9tdXJhIEhpcm9va2EKLQkJCQlTaGlvamlyaS1DaXR5Ci0JCQkJTmFnYW5vIDM5OS0wNzAyIAotCQkJCUpBUEFOCi0KLTAwLTA1LTEwICAgKGhleCkJCUluZmluaXRlIFNoYW5naGFpIENvbW11bmljYXRpb24gVGVybWluYWxzIEx0ZC4KLTAwMDUxMCAgICAgKGJhc2UgMTYpCQlJbmZpbml0ZSBTaGFuZ2hhaSBDb21tdW5pY2F0aW9uIFRlcm1pbmFscyBMdGQuCi0JCQkJNzc3IENodW5naWFvIFJvYWQsIFB1ZG9uZwotCQkJCVNoYW5naGFpIDIwMTIwNiwKLQkJCQlDSElOQQotCi0wMC0wNS0xMSAgIChoZXgpCQlDb21wbGVtZW50YXJ5IFRlY2hub2xvZ2llcyBMdGQKLTAwMDUxMSAgICAgKGJhc2UgMTYpCQlDb21wbGVtZW50YXJ5IFRlY2hub2xvZ2llcyBMdGQKLQkJCQlDb210ZWNoIEhvdXNlLCAyOCBNYW5jaGVzdGVyIFJvYWQKLQkJCQlXZXN0aG91Z2h0b24gQk9MVE9OCi0JCQkJQkw1IDNRSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LTEyICAgKGhleCkJCU1lc2hOZXR3b3JrcywgSW5jLgotMDAwNTEyICAgICAoYmFzZSAxNikJCU1lc2hOZXR3b3JrcywgSW5jLgotCQkJCTQ4NSBLZWxsZXIgUmQuLCBTdWl0ZSAyNTAKLQkJCQlNYWl0bGFuZCBGTCAzMjc1MS03NTM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0xMyAgIChoZXgpCQlWVExpbnggTXVsdGltZWRpYSBTeXN0ZW1zLCBJbmMuCi0wMDA1MTMgICAgIChiYXNlIDE2KQkJVlRMaW54IE11bHRpbWVkaWEgU3lzdGVtcywgSW5jLgotCQkJCTg0MDEgQ29sZXN2aWxsZSBSb2FkLAotCQkJCVN1aXRlIDc1MAotCQkJCVNpbHZlciBTcHJpbmcgTUQgMjA5MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTE0ICAgKGhleCkJCUtEVCBTeXN0ZW1zIENvLiwgTHRkLgotMDAwNTE0ICAgICAoYmFzZSAxNikJCUtEVCBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTEwMi02LCBDaG9idS1MaSwgTW9oeXVuLU15dW4sCi0JCQkJWW9uZ2luLUNpdHksIEt5dW5na2ktRG8sCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTE1ICAgKGhleCkJCU51YXJrIENvLiwgTHRkLgotMDAwNTE1ICAgICAoYmFzZSAxNikJCU51YXJrIENvLiwgTHRkLgotCQkJCTEyRiwgQW55YW5nIEsgY2VudGVyLCAxNTkxLTksIEJ1cmltLWRvbmcKLQkJCQlEb25nYW4tZ3UsIEFueWFuZy1zaSwKLQkJCQlHdW5nZ2ktZG8gNDMxLTA2NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS0xNiAgIChoZXgpCQlTTUFSVCBNb2R1bGFyIFRlY2hub2xvZ2llcwotMDAwNTE2ICAgICAoYmFzZSAxNikJCVNNQVJUIE1vZHVsYXIgVGVjaG5vbG9naWVzCi0JCQkJNDMwNSBDdXNoaW5nIFBrd3kKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0xNyAgIChoZXgpCQlTaGVsbGNvbW0sIEluYy4KLTAwMDUxNyAgICAgKGJhc2UgMTYpCQlTaGVsbGNvbW0sIEluYy4KLQkJCQlSbSAjNjEyMiBFVFJJIFRCSSBDZW50ZXIsIDEsCi0JCQkJRW9ldW4tRG9uZywgWXVzb25nLUd1LCBUYWVqb24sIDMwNS0zMzMsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTE4ICAgKGhleCkJCUp1cGl0ZXJzIFRlY2hub2xvZ3kKLTAwMDUxOCAgICAgKGJhc2UgMTYpCQlKdXBpdGVycyBUZWNobm9sb2d5Ci0JCQkJUE8gQm94IDEyNjkzCi0JCQkJRWxpemFiZXRoIFN0cmVldCBCcmlzYmFuZSBRTEQgNDAwMgotCQkJCUFVU1RSQUxJQQotCi0wMC0wNS0xOSAgIChoZXgpCQlTaWVtZW5zIEJ1aWxkaW5nIFRlY2hub2xvZ2llcyBBRywKLTAwMDUxOSAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEJ1aWxkaW5nIFRlY2hub2xvZ2llcyBBRywKLQkJCQlDZXJiZXJ1cyBEaXZpc2lvbgotCQkJCWFsdGUgTGFuZHN0cmFzc2UgNDExIENILTg3MDggTWFlbm5lZG9yZgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA1LTFBICAgKGhleCkJCTNDb20gRXVyb3BlIEx0ZC4KLTAwMDUxQSAgICAgKGJhc2UgMTYpCQkzQ29tIEV1cm9wZSBMdGQuCi0JCQkJM0NvbSBDZW50cmUsIEJvdW5kYXJ5IFdheSwKLQkJCQlIZW1wc3RlYWQsIEhlcnRzLCBIUDIgN1lVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDUtMUIgICAoaGV4KQkJTWFnaWMgQ29udHJvbCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDA1MUIgICAgIChiYXNlIDE2KQkJTWFnaWMgQ29udHJvbCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNkYsIE5vLiAxMjAtMTEgQ2h1bmcgU2hhbiBSZC4KLQkJCQlTZWMgMywgQ2h1bmcgSG8gVGFpcGVpCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS0xQyAgIChoZXgpCQlYbmV0IFRlY2hub2xvZ3kgQ29ycC4KLTAwMDUxQyAgICAgKGJhc2UgMTYpCQlYbmV0IFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk5Ri0xNiwgTm8uIDEyLCBMYW5lIDYwOSwKLQkJCQlTZWMuIDUsIENodW5nIEhzaW4gUm9hZCwgU2FuIENodW5nIENpdHksCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS0xRCAgIChoZXgpCQlBaXJvY29uLCBJbmMuCi0wMDA1MUQgICAgIChiYXNlIDE2KQkJQWlyb2NvbiwgSW5jLgotCQkJCTExNiBIb3VnaHRvbiBMYW5lCi0JCQkJQm94Ym9ybyBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMUUgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDA1MUUgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTFGICAgKGhleCkJCVRhaWppbiBNZWRpYSBDby4sIEx0ZC4KLTAwMDUxRiAgICAgKGJhc2UgMTYpCQlUYWlqaW4gTWVkaWEgQ28uLCBMdGQuCi0JCQkJNjQwLTggVHVuZ2Nob24tRG9uZwotCQkJCUthbmdzZW8tR3UsCi0JCQkJU2VvdWwgIDE1Ny0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtMjAgICAoaGV4KQkJU21hcnRyb25peCwgSW5jLgotMDAwNTIwICAgICAoYmFzZSAxNikJCVNtYXJ0cm9uaXgsIEluYy4KLQkJCQkyMjY4NSBUaHJlZSBOb3RjaCBSZC4KLQkJCQlDYWxpZm9ybmlhIE1EIDIwNjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0yMSAgIChoZXgpCQlDb250cm9sIE1pY3Jvc3lzdGVtcwotMDAwNTIxICAgICAoYmFzZSAxNikJCUNvbnRyb2wgTWljcm9zeXN0ZW1zCi0JCQkJNDggU3RlYWNpZSBEcml2ZQotCQkJCU9udGFyaW8gIEsySyAyQTkKLQkJCQlDQU5BREEKLQotMDAtMDUtMjIgICAoaGV4KQkJTEVBKkQgQ29ycG9yYXRpb24sIEluYy4KLTAwMDUyMiAgICAgKGJhc2UgMTYpCQlMRUEqRCBDb3Jwb3JhdGlvbiwgSW5jLgotCQkJCUFkdmF0ZWNoIEJsZGcuCi0JCQkJVGVyYWRpb24gSW5kLiBQYXJrIEQuTi4gTWlzZ2F2LCAyMDE3OQotCQkJCUlTUkFFTAotCi0wMC0wNS0yMyAgIChoZXgpCQlBVkwgTGlzdCBHbWJICi0wMDA1MjMgICAgIChiYXNlIDE2KQkJQVZMIExpc3QgR21iSAotCQkJCUhhbnMgTGlzdCBQbGF0eiAxCi0JCQkJQS04MDIwIEdyYXoKLQkJCQlBVVNUUklBCi0KLTAwLTA1LTI0ICAgKGhleCkJCUJUTCBTeXN0ZW0gKEhLKSBMaW1pdGVkCi0wMDA1MjQgICAgIChiYXNlIDE2KQkJQlRMIFN5c3RlbSAoSEspIExpbWl0ZWQKLQkJCQkxNC9GLiwgQmxrLiBCLCBWaXRhIFRvd2VyLAotCQkJCTI5IFdvbmcgQ2h1ayBIYW5nIFJkLiwKLQkJCQlBYmVyZGVlbiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA1LTI1ICAgKGhleCkJCVB1cmV0ZWsgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMDUyNSAgICAgKGJhc2UgMTYpCQlQdXJldGVrIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJTm8uIDE0LCA0IEZsci4gTGFuZSAyMzUKLQkJCQlQYW8gQ2hpYW8gUm9hZCBIc2luIFRpZW4sIFRhaXBlaSBIc2llbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtMjYgICAoaGV4KQkJSVBBUyBHbWJICi0wMDA1MjYgICAgIChiYXNlIDE2KQkJSVBBUyBHbWJICi0JCQkJR3JhYmVuc3RyLiAxNDlhCi0JCQkJNDcwNTcgRHVpc2J1cmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTI3ICAgKGhleCkJCVNKIFRlayBDby4gTHRkCi0wMDA1MjcgICAgIChiYXNlIDE2KQkJU0ogVGVrIENvLiBMdGQKLQkJCQlIbyBnYWUgRG9uZyA5NzYtNSwgRG9uZyBBbiBLdSwKLQkJCQlBbiB5YW5nIENpdHksIEt5dW5nIEtlZSBEbywKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtMjggICAoaGV4KQkJTmV3IEZvY3VzLCBJbmMuCi0wMDA1MjggICAgIChiYXNlIDE2KQkJTmV3IEZvY3VzLCBJbmMuCi0JCQkJMjYzMCBXYWxzaCBBdmUuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTI5ICAgKGhleCkJCVNoYW5naGFpIEJyb2FkYW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDA1MjkgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgQnJvYWRhbiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQkxNUYsIFN1bnRpbWUgSW50ZXJuYXRpb25hbCBNYW5zaW9uCi0JCQkJTm8uIDQ1MCBGdXNoYW4gUm9hZCwgUHVkb25nIERpc3RyaWN0LCBTaAotCQkJCTIwMDEyMgotCQkJCUNISU5BCi0KLTAwLTA1LTJBICAgKGhleCkJCUlrZWdhbWkgVHN1c2hpbmtpIENvLiwgTHRkLgotMDAwNTJBICAgICAoYmFzZSAxNikJCUlrZWdhbWkgVHN1c2hpbmtpIENvLiwgTHRkLgotCQkJCTUtNi0xNiBJa2VnYW1pIE9odGEta3UsCi0JCQkJVG9reW8KLQkJCQkxNDYtODU2NwotCQkJCUpBUEFOCi0KLTAwLTA1LTJCICAgKGhleCkJCUhPUklCQSwgTHRkLgotMDAwNTJCICAgICAoYmFzZSAxNikJCUhPUklCQSwgTHRkLgotCQkJCTIgTWl5YW5vaGlnYXNoaSwgS2lzc2hvaW4sCi0JCQkJTWluYW1pLWt1LCBLeW90bwotCQkJCTYwMS04NTEwCi0JCQkJSkFQQU4KLQotMDAtMDUtMkMgICAoaGV4KQkJU3VwcmVtZSBNYWdpYyBDb3Jwb3JhdGlvbgotMDAwNTJDICAgICAoYmFzZSAxNikJCVN1cHJlbWUgTWFnaWMgQ29ycG9yYXRpb24KLQkJCQlTdW4gVG93ZXJzIENlbnRlciBCbGRnLiwgMTNGCi0JCQkJMi0xMS0yMiwgU2FuZ2VuLWpheWEsIFNldGFnYXlhLWt1LCBUb2t5bwotCQkJCTE1NC0wMDI0Ci0JCQkJSkFQQU4KLQotMDAtMDUtMkQgICAoaGV4KQkJWm9sdHJpeCBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTAwMDUyRCAgICAgKGJhc2UgMTYpCQlab2x0cml4IEludGVybmF0aW9uYWwgTGltaXRlZAotCQkJCVJvb20gNzAxIFBvIEhpbmcgQ2VudHJlLAotCQkJCTE4IFdhbiBDaGl1IFJvYWQsIEtvd2xvb24sCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA1LTJFICAgKGhleCkJCUNpbnRhIE5ldHdvcmtzCi0wMDA1MkUgICAgIChiYXNlIDE2KQkJQ2ludGEgTmV0d29ya3MKLQkJCQkzMDEwIE5vcnRoIEZpcnN0IFN0cmVldAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0yRiAgIChoZXgpCQlMZXZpdG9uIE5ldHdvcmsgU29sdXRpb25zCi0wMDA1MkYgICAgIChiYXNlIDE2KQkJTGV2aXRvbiBOZXR3b3JrIFNvbHV0aW9ucwotCQkJCTIyMjIgMjIybmQgU3RyZWV0IFMuRS4KLQkJCQlCb3RoZWxsIFdBIDk4MDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0zMCAgIChoZXgpCQlBbmRpYW1vIFN5c3RlbXMsIEluYy4KLTAwMDUzMCAgICAgKGJhc2UgMTYpCQlBbmRpYW1vIFN5c3RlbXMsIEluYy4KLQkJCQkxNDE3MSBUZWVybGluayBXYXkKLQkJCQlTYXJhdG9nYSBDQSA5NTA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMzEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNTMxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTMyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDUzMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0zMyAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLTAwMDUzMyAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLQkJCQkxNzQ1IFRlY2hub2xvZ3kgRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTM0ICAgKGhleCkJCU5vcnRoc3RhciBFbmdpbmVlcmluZyBMdGQuCi0wMDA1MzQgICAgIChiYXNlIDE2KQkJTm9ydGhzdGFyIEVuZ2luZWVyaW5nIEx0ZC4KLQkJCQlQLk8uIEJveCA0MAotCQkJCUhlbmxleS1vbi1UaGFtZXMgT3hvbiBSRzkgNkFFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDUtMzUgICAoaGV4KQkJQ2hpcCBQQyBMdGQuCi0wMDA1MzUgICAgIChiYXNlIDE2KQkJQ2hpcCBQQyBMdGQuCi0JCQkJMjAgQS5MLiBNb3R6a2luIFN0LgotCQkJCVRvcGF6IEhvdXNlLCBOYWh1bSBIYXQgNSAsIFAuTy4gQm94IDQKLQkJCQlUaXJhdCBDYXJtZWwgIDM5MTAwCi0JCQkJSVNSQUVMCi0KLTAwLTA1LTM2ICAgKGhleCkJCURhbmFtIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA1MzYgICAgIChiYXNlIDE2KQkJRGFuYW0gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk5MDAtMywgSG9reWUtZG9uZywgRG9uZ2FuLWd1LAotCQkJCUFueWFuZywgS3l1bmdraS1kbywgNDMxLTA4MiwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtMzcgICAoaGV4KQkJTmV0cyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNTM3ICAgICAoYmFzZSAxNikJCU5ldHMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkjQjEgWXVuZ0p1biBCbGRnLgotCQkJCTE1NC0xMCBTYW5zdW5nLURvbmcgS2FuZ25hbS1HdQotCQkJCVNlb3VsIDEzNS0wOTAgIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtMzggICAoaGV4KQkJTWVyaWx1cywgSW5jLgotMDAwNTM4ICAgICAoYmFzZSAxNikJCU1lcmlsdXMsIEluYy4KLQkJCQkjMzA3LTQ2MTY1IFlhbGUgUm9hZAotCQkJCUNoaWxpd2FjaywgQkMKLQkJCQlWMlAgMlAyCi0JCQkJQ0FOQURBCi0KLTAwLTA1LTM5ICAgKGhleCkJCUEgQnJhbmQgTmV3IFdvcmxkIGluIFN3ZWRlbiBBQgotMDAwNTM5ICAgICAoYmFzZSAxNikJCUEgQnJhbmQgTmV3IFdvcmxkIGluIFN3ZWRlbiBBQgotCQkJCUJveCAxMjIzCi0JCQkJU0UtMTY0IDI4IEtJU1RBCi0JCQkJU1dFREVOCi0KLTAwLTA1LTNBICAgKGhleCkJCVdpbGxvd2dsZW4gU2VydmljZXMgUHRlIEx0ZAotMDAwNTNBICAgICAoYmFzZSAxNikJCVdpbGxvd2dsZW4gU2VydmljZXMgUHRlIEx0ZAotCQkJCTE1MSBMb3JvbmcgQ2h1YW4sCi0JCQkJTmV3IFRlY2ggUGFyayAjMDUtMDcsCi0JCQkJNTU2NzQxCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTA1LTNCICAgKGhleCkJCUhhcmJvdXIgTmV0d29ya3MgTHRkLiwgQ28uIEJlaWppbmcKLTAwMDUzQiAgICAgKGJhc2UgMTYpCQlIYXJib3VyIE5ldHdvcmtzIEx0ZC4sIENvLiBCZWlqaW5nCi0JCQkJMTMvRiwgSml1TGluZyBCdWlsZGluZywgTm8uIDIxLAotCQkJCVhpU2FuSHVhbiBOb3J0aCBSZC4sIEJlaWppbmcKLQkJCQkxMDAwODkKLQkJCQlDSElOQQotCi0wMC0wNS0zQyAgIChoZXgpCQlYaXJjb20KLTAwMDUzQyAgICAgKGJhc2UgMTYpCQlYaXJjb20KLQkJCQkyMzAwIENvcnBvcmF0ZSBDZW50ZXIgRHIuCi0JCQkJVGhvdXNhbmQgT2FrcyBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtM0QgICAoaGV4KQkJQWdlcmUgU3lzdGVtcwotMDAwNTNEICAgICAoYmFzZSAxNikJCUFnZXJlIFN5c3RlbXMKLQkJCQkxMzcxIE1jQ2FydGh5IEJsdmQuCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTNFICAgKGhleCkJCUtJRCBTeXN0ZW1lIEdtYkgKLTAwMDUzRSAgICAgKGJhc2UgMTYpCQlLSUQgU3lzdGVtZSBHbWJICi0JCQkJTHVuZWJ1cmdlciBTY2hhbnplIDMwCi0JCQkJMjE2MTQgQnV4dGVodWRlCi0JCQkJR0VSTUFOWQotCi0wMC0wNS0zRiAgIChoZXgpCQlWaXNpb25UZWssIEluYy4KLTAwMDUzRiAgICAgKGJhc2UgMTYpCQlWaXNpb25UZWssIEluYy4KLQkJCQkxMTc1IExha2VzaWRlIERyLgotCQkJCUd1cm5lZSBJTCA2MDAzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNDAgICAoaGV4KQkJRkFTVCBDb3Jwb3JhdGlvbgotMDAwNTQwICAgICAoYmFzZSAxNikJCUZBU1QgQ29ycG9yYXRpb24KLQkJCQkyNzkxLTUgU2hpbW8tVHN1cnVtYQotCQkJCVlhbWF0byBLYW5hZ2F3YQotCQkJCTI0Mi0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMDUtNDEgICAoaGV4KQkJQWR2YW5jZWQgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDU0MSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTItOS03IE5pc2hpa2ljaG8sCi0JCQkJVGFjaGlrYXdhLXNoaSwgVG9reW8KLQkJCQkxOTAtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTA1LTQyICAgKGhleCkJCU90YXJpLCBJbmMuCi0wMDA1NDIgICAgIChiYXNlIDE2KQkJT3RhcmksIEluYy4KLQkJCQk0LTMzLTMgS29rdXJ5by1jaG8sCi0JCQkJQ2hvZnUtc2hpLCBUb2t5byAxODItMDAyMiwKLQkJCQlKQVBBTgotCi0wMC0wNS00MyAgIChoZXgpCQlJUSBXaXJlbGVzcyBHbWJICi0wMDA1NDMgICAgIChiYXNlIDE2KQkJSVEgV2lyZWxlc3MgR21iSAotCQkJCUNhcmwtU2NoZWVsZS1TdHIuIDE0Ci0JCQkJRC0xMjQ4OSBCZXJsaW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTQ0ICAgKGhleCkJCVZhbGxleSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDU0NCAgICAgKGJhc2UgMTYpCQlWYWxsZXkgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTAwNiBXZXN0IENvbGxlZ2UgQXZlLgotCQkJCVN1aXRlIDIwMAotCQkJCVN0YXRlIENvbGxlZ2UgUEEgMTY4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTQ1ICAgKGhleCkJCUludGVybmV0IFBob3RvbmljcwotMDAwNTQ1ICAgICAoYmFzZSAxNikJCUludGVybmV0IFBob3RvbmljcwotCQkJCTEwMzAgQnJvYWQgU3QuLCAybmQgRmxvb3IKLQkJCQlTaHJld3NidXJ5IE5KIDA3NzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS00NiAgIChoZXgpCQlLRERJIE5ldHdvcmsgJiBTb2x1bHRpb25zIEluYy4KLTAwMDU0NiAgICAgKGJhc2UgMTYpCQlLRERJIE5ldHdvcmsgJiBTb2x1bHRpb25zIEluYy4KLQkJCQkyLTMtMSwgTmlzaGlzaGluanVua3Uta3UsCi0JCQkJVG9reW8gMTYzLTA5MDcKLQkJCQlKQVBBTgotCi0wMC0wNS00NyAgIChoZXgpCQlTdGFyZW50IE5ldHdvcmtzCi0wMDA1NDcgICAgIChiYXNlIDE2KQkJU3RhcmVudCBOZXR3b3JrcwotCQkJCTMwIEludGVybmF0aW9uYWwgUGxhY2UKLQkJCQlUZXdrc2J1cnkgTUEgMDE4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTQ4ICAgKGhleCkJCURpc2NvIENvcnBvcmF0aW9uCi0wMDA1NDggICAgIChiYXNlIDE2KQkJRGlzY28gQ29ycG9yYXRpb24KLQkJCQkxMy0xMSBPbW9yaS1LaXRhIDItY2hvbWUKLQkJCQlPdGEta3UgVG9reW8gMTQzLTg1ODAKLQkJCQlKQVBBTgotCi0wMC0wNS00OSAgIChoZXgpCQlTYWxpcmEgT3B0aWNhbCBOZXR3b3JrIFN5c3RlbXMKLTAwMDU0OSAgICAgKGJhc2UgMTYpCQlTYWxpcmEgT3B0aWNhbCBOZXR3b3JrIFN5c3RlbXMKLQkJCQkyNjk0IE9yY2hhcmQgUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS00QSAgIChoZXgpCQlBcmlvIERhdGEgTmV0d29ya3MsIEluYy4KLTAwMDU0QSAgICAgKGJhc2UgMTYpCQlBcmlvIERhdGEgTmV0d29ya3MsIEluYy4KLQkJCQkyODkwIFphbmtlciBSb2FkLCBTdWl0ZSAyMDMKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNEIgICAoaGV4KQkJRWF0b24gQXV0b21hdGlvbiBBRwotMDAwNTRCICAgICAoYmFzZSAxNikJCUVhdG9uIEF1dG9tYXRpb24gQUcKLQkJCQlTcGlubmVyZWlzdHJhc3NlIDgKLQkJCQlTdC5HYWxsZW4gIDkwMDggCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDUtNEMgICAoaGV4KQkJUkYgSW5ub3ZhdGlvbnMgUHR5IEx0ZAotMDAwNTRDICAgICAoYmFzZSAxNikJCVJGIElubm92YXRpb25zIFB0eSBMdGQKLQkJCQkyMiBCb3VsZGVyIFJvYWQKLQkJCQlNYWxhZ2EgV0EgIDYwOTAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDUtNEQgICAoaGV4KQkJQnJhbnMgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA1NEQgICAgIChiYXNlIDE2KQkJQnJhbnMgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNTAxIEJvcmFtYWUgQWNhZGVteSBUb3dlcgotCQkJCTM5NS02OSBTaGluYWViYW5nLURvbmcgVG9uZ2phay1HdSBTZW91bAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS00RSAgIChoZXgpCQlQaGlsaXBzCi0wMDA1NEUgICAgIChiYXNlIDE2KQkJUGhpbGlwcwotCQkJCTEwMDAgV2VzdCBNYXVkZSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUtMjgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNEYgICAoaGV4KQkJUFJJVkFURQotMDAwNTRGICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wNS01MCAgIChoZXgpCQlWY29tbXMgQ29ubmVjdCBMaW1pdGVkCi0wMDA1NTAgICAgIChiYXNlIDE2KQkJVmNvbW1zIENvbm5lY3QgTGltaXRlZAotCQkJCTc1IFRoZSBFc3BsYW5hZGUsIExldmVsIDMKLQkJCQlQTyBCb3ggMzgtOTIwCi0JCQkJV2VsbGluZ3RvbiBNYWlsIENlbnRyZSA1MDQ1IFdlbGxpbmd0b24gCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMDUtNTEgICAoaGV4KQkJRiAmIFMgRWxla3Ryb25payBTeXN0ZW1lIEdtYkgKLTAwMDU1MSAgICAgKGJhc2UgMTYpCQlGICYgUyBFbGVrdHJvbmlrIFN5c3RlbWUgR21iSAotCQkJCVVudGVyZSBXYWxkcGxhZXR6ZSAyMwotCQkJCUQtNzA1NjkgU3R1dHRnYXJ0Ci0JCQkJR0VSTUFOWQotCi0wMC0wNS01MiAgIChoZXgpCQlYeWNvdGVjIENvbXB1dGVyIEdtYkgKLTAwMDU1MiAgICAgKGJhc2UgMTYpCQlYeWNvdGVjIENvbXB1dGVyIEdtYkgKLQkJCQlLYXJsLUhlaW56LUJlY2t1cnRzLVN0ci4gNAotCQkJCUQtNTI0MjggSnVsaWNoCi0JCQkJR0VSTUFOWQotCi0wMC0wNS01MyAgIChoZXgpCQlEVkMgQ29tcGFueSwgSW5jLgotMDAwNTUzICAgICAoYmFzZSAxNikJCURWQyBDb21wYW55LCBJbmMuCi0JCQkJMTAyMDAgSHd5IDI5MCBXLgotCQkJCUF1c3RpbiBUWCA3ODIzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNTQgICAoaGV4KQkJUmFuZ2VzdGFyIFdpcmVsZXNzCi0wMDA1NTQgICAgIChiYXNlIDE2KQkJUmFuZ2VzdGFyIFdpcmVsZXNzCi0JCQkJOTU2NSBTb3F1ZWwgRHJpdmUsIFN1aXRlIDEwMAotCQkJCUFwdG9zIENBIDk1MDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS01NSAgIChoZXgpCQlKYXBhbiBDYXNoIE1hY2hpbmUgQ28uLCBMdGQuCi0wMDA1NTUgICAgIChiYXNlIDE2KQkJSmFwYW4gQ2FzaCBNYWNoaW5lIENvLiwgTHRkLgotCQkJCU5vLiAzLTE1LCAyLWNob21lLCBOaXNoaXdha2ksCi0JCQkJSGlyYW5vLWt1LCBPc2FrYQotCQkJCTU0Ny0wMDM1Ci0JCQkJSkFQQU4KLQotMDAtMDUtNTYgICAoaGV4KQkJMzYwIFN5c3RlbXMKLTAwMDU1NiAgICAgKGJhc2UgMTYpCQkzNjAgU3lzdGVtcwotCQkJCTMxMzU1IEFnb3VyYSBSb2FkCi0JCQkJV2VzdGxha2UgVmlsbGFnZSBDQSA5MTM2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNTcgICAoaGV4KQkJQWdpbGUgVFYgQ29ycG9yYXRpb24KLTAwMDU1NyAgICAgKGJhc2UgMTYpCQlBZ2lsZSBUViBDb3Jwb3JhdGlvbgotCQkJCTMzMyBSYXZlbnN3b29kIEF2ZS4sCi0JCQkJQnVpbGRpbmcgMjAyCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNTggICAoaGV4KQkJU3luY2hyb25vdXMsIEluYy4KLTAwMDU1OCAgICAgKGJhc2UgMTYpCQlTeW5jaHJvbm91cywgSW5jLgotCQkJCTc3IExhcyBDb2xpbmFzIExhbmUKLQkJCQlTYW4gSm9zZSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNTkgICAoaGV4KQkJSW50cmFjb20gUy5BLgotMDAwNTU5ICAgICAoYmFzZSAxNikJCUludHJhY29tIFMuQS4KLQkJCQkxOSA1IEtNIE1hcmtvcG91bG91IEF2ZS4KLQkJCQkxOTAwMiBQZWFuaWEKLQkJCQlBdHRpa2EgIAotCQkJCUdSRUVDRQotCi0wMC0wNS01QSAgIChoZXgpCQlQb3dlciBEc2luZSBMdGQuCi0wMDA1NUEgICAgIChiYXNlIDE2KQkJUG93ZXIgRHNpbmUgTHRkLgotCQkJCTEgSGFuYWdhciBTdC4sIFAuTy4gQm94IDcyMjAKLQkJCQlOZXZlIE5lJ2VtYW4gSW5kdXN0cmlhbCBab25lIEhvZCBIYXNoYXJvCi0JCQkJSVNSQUVMCi0KLTAwLTA1LTVCICAgKGhleCkJCUNoYXJsZXMgSW5kdXN0cmllcywgTHRkLgotMDAwNTVCICAgICAoYmFzZSAxNikJCUNoYXJsZXMgSW5kdXN0cmllcywgTHRkLgotCQkJCTU2MDAgQXBvbGxvIERyLgotCQkJCVJvbGxpbmcgTWVhZG93cyBJTCA2MDAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNUMgICAoaGV4KQkJS293YSBDb21wYW55LCBMdGQuCi0wMDA1NUMgICAgIChiYXNlIDE2KQkJS293YSBDb21wYW55LCBMdGQuCi0JCQkJQ2hvZnVnYW9rYSAzLTMtMSwKLQkJCQlDaG9mdS1zaSwgVG9reW8sCi0JCQkJMTgyLTAwMjEKLQkJCQlKQVBBTgotCi0wMC0wNS01RCAgIChoZXgpCQlELUxpbmsgU3lzdGVtcywgSW5jLgotMDAwNTVEICAgICAoYmFzZSAxNikJCUQtTGluayBTeXN0ZW1zLCBJbmMuCi0JCQkJNTMgRGlzY292ZXJ5IERyLgotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNUUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNTVFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTVGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDU1RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS02MCAgIChoZXgpCQlMRUFERVIgQ09NTS5DTy4sIExURAotMDAwNTYwICAgICAoYmFzZSAxNikJCUxFQURFUiBDT01NLkNPLiwgTFRECi0JCQkJMjM0LCBLb21hZS1yaSwgS2loZXVuZy1ldXAsCi0JCQkJWW91bmdzaW4tc2ksIEt5dW5na2ktZG8sCi0JCQkJNDQ5LTkwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS02MSAgIChoZXgpCQluYWMgSW1hZ2UgVGVjaG5vbG9neSwgSW5jLgotMDAwNTYxICAgICAoYmFzZSAxNikJCW5hYyBJbWFnZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJOC03IFNhbmJhbi1jaG8sIENoaXlvZGEta3UsCi0JCQkJVG9reW8sIDEwMi0wMDc1Ci0JCQkJSkFQQU4KLQotMDAtMDUtNjIgICAoaGV4KQkJRGlnaXRhbCBWaWV3IExpbWl0ZWQKLTAwMDU2MiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFZpZXcgTGltaXRlZAotCQkJCTIyMDEgTmFuIFlhbmcgUGxhemEsCi0JCQkJNTcgSHVuZ3RvIFJvYWQsIEt3dW4gVG9uZywKLQkJCQlLb3dsb29uICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDUtNjMgICAoaGV4KQkJSi1Xb3JrcywgSW5jLgotMDAwNTYzICAgICAoYmFzZSAxNikJCUotV29ya3MsIEluYy4KLQkJCQkxMjMyOCBHbGFkc3RvbmUgU3QuICMxCi0JCQkJU3lsbW9yIENBIDkxMzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS02NCAgIChoZXgpCQlUc2luZ2h1YSBCaXR3YXkgQ28uLCBMdGQuCi0wMDA1NjQgICAgIChiYXNlIDE2KQkJVHNpbmdodWEgQml0d2F5IENvLiwgTHRkLgotCQkJCTEyIEZsb29yLCBUb3dlciBDLCBDb3Jwb3JhdGUKLQkJCQlTcXVhcmUsIE5vLiAzNSwgRmluYW5jaWFsIFN0cmVldCwgWGljaGVuCi0JCQkJQ0hJTkEKLQotMDAtMDUtNjUgICAoaGV4KQkJVGFpbHluIENvbW11bmljYXRpb24gQ29tcGFueSBMdGQuCi0wMDA1NjUgICAgIChiYXNlIDE2KQkJVGFpbHluIENvbW11bmljYXRpb24gQ29tcGFueSBMdGQuCi0JCQkJTm8uIDYyLCBMYW5lIDIwNSwgTmFuLVNhbiBSb2FkLAotCQkJCVNlYy4gMiwgTHUtQ2h1IEhzaWFuZywKLQkJCQlUYW95dWFuIEhzaWVuICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LTY2ICAgKGhleCkJCVNlY3VpLmNvbSBDb3Jwb3JhdGlvbgotMDAwNTY2ICAgICAoYmFzZSAxNikJCVNlY3VpLmNvbSBDb3Jwb3JhdGlvbgotCQkJCTE3dGggRmwuIFNhbXN1bmcgWWVva3NhbSBCbGRnLgotCQkJCTY0Ny05LCBZZW9rc2FtLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS02NyAgIChoZXgpCQlFdHltb25pYyBEZXNpZ24sIEluYy4KLTAwMDU2NyAgICAgKGJhc2UgMTYpCQlFdHltb25pYyBEZXNpZ24sIEluYy4KLQkJCQk0MSBCeXJvbiBBdmVudWUKLQkJCQlEb3JjaGVzdGVyLCBPbnRhcmlvLAotCQkJCU5PTCAxR08KLQkJCQlDQU5BREEKLQotMDAtMDUtNjggICAoaGV4KQkJUGlsdG9maXNoIE5ldHdvcmtzIEFCCi0wMDA1NjggICAgIChiYXNlIDE2KQkJUGlsdG9maXNoIE5ldHdvcmtzIEFCCi0JCQkJU3RvcmEgQmFkaHVzZ2F0YW4gMTgtMjAKLQkJCQlTLTQxMTIxIEdvdGVib3JnCi0JCQkJU1dFREVOCi0KLTAwLTA1LTY5ICAgKGhleCkJCVZNd2FyZSwgSW5jLgotMDAwNTY5ICAgICAoYmFzZSAxNikJCVZNd2FyZSwgSW5jLgotCQkJCTM0MDEgSGlsbHZpZXcgQXZlbnVlCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS02QSAgIChoZXgpCQlIZXVmdCBTeXN0ZW10ZWNobmlrIEdtYkgKLTAwMDU2QSAgICAgKGJhc2UgMTYpCQlIZXVmdCBTeXN0ZW10ZWNobmlrIEdtYkgKLQkJCQlCcm9obHRhbHN0ciAzMS0zMwotCQkJCTU2NjU5IEJ1cmdicm9obAotCQkJCURldXRzY2hsYW5kICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTZCICAgKGhleCkJCUMuUC4gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDU2QiAgICAgKGJhc2UgMTYpCQlDLlAuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTJGLCBOby4gODYsIEhzaW4gVGFpIFd1IFJkLiwKLQkJCQlTZWMuIDEsIEhzaS1DaGloLCBUYWlwZWkgSHNpZW4sCi0JCQkJMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS02QyAgIChoZXgpCQlIdW5nIENoYW5nIENvLiwgTHRkLgotMDAwNTZDICAgICAoYmFzZSAxNikJCUh1bmcgQ2hhbmcgQ28uLCBMdGQuCi0JCQkJMTM4NS0xNCwgSnVhbi1Eb25nLAotCQkJCU5hbS1rdSwgSW5jaG9tLCA0MDItMjAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTZEICAgKGhleCkJCVBhY2lmaWMgQ29ycG9yYXRpb24KLTAwMDU2RCAgICAgKGJhc2UgMTYpCQlQYWNpZmljIENvcnBvcmF0aW9uCi0JCQkJMi0yMy0zIEViaXN1LU1pbmFtaSBTaGlidXlhCi0JCQkJVG9reW8gMTUwLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0wNS02RSAgIChoZXgpCQlOYXRpb25hbCBFbmhhbmNlIFRlY2hub2xvZ3ksIEluYy4KLTAwMDU2RSAgICAgKGJhc2UgMTYpCQlOYXRpb25hbCBFbmhhbmNlIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyRiwgTm8uIDE5Ni0zLCBUYXR1bmcgUmQuLCBTZWMuIDMsCi0JCQkJSHNpIENoaWgsIFRhaXBlaSBIc2llbiwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LTZGICAgKGhleCkJCUlubm9tZWRpYSBUZWNobm9sb2dpZXMgUHZ0LiBMdGQuCi0wMDA1NkYgICAgIChiYXNlIDE2KQkJSW5ub21lZGlhIFRlY2hub2xvZ2llcyBQdnQuIEx0ZC4KLQkJCQkjMzI3OCwgMTJ0aCBNYWluIFJvYWQKLQkJCQlIQUwgMm5kIFN0YWdlIEJhbmdhbG9yZSAtIDU2MCAwMDgKLQkJCQlJTkRJQQotCi0wMC0wNS03MCAgIChoZXgpCQlCYXlkZWwgTHRkLgotMDAwNTcwICAgICAoYmFzZSAxNikJCUJheWRlbCBMdGQuCi0JCQkJQmF5ZGVsIEhvdXNlCi0JCQkJQnJvb2sgV2F5IExlYXRoZXJoZWFkLCBTdXJyZXkgS1QyMiA3TkEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNS03MSAgIChoZXgpCQlTZWl3YSBFbGVjdHJvbmljcyBDby4KLTAwMDU3MSAgICAgKGJhc2UgMTYpCQlTZWl3YSBFbGVjdHJvbmljcyBDby4KLQkJCQk3NTcgQW1hYm91a2ksIEt1a2l6YWtpLU1hY2hpCi0JCQkJSW5hc2hpa2ktR3VuLCBJYmFyYWtpLUtlbgotCQkJCTMwMC0xMjUzCi0JCQkJSkFQQU4KLQotMDAtMDUtNzIgICAoaGV4KQkJRGVvbmV0IENvLiwgTHRkLgotMDAwNTcyICAgICAoYmFzZSAxNikJCURlb25ldCBDby4sIEx0ZC4KLQkJCQkjMTI3LTUgSmlueW91bmcgQi9EIDN0aCBGLAotCQkJCU5vbkl5dW4tRG9uZywgS2FuZ05hbS1HdSwKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTczICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDU3MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS03NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1NzQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNzUgICAoaGV4KQkJQ0RTLUVsZWN0cm9uaWNzIEJWCi0wMDA1NzUgICAgIChiYXNlIDE2KQkJQ0RTLUVsZWN0cm9uaWNzIEJWCi0JCQkJTW96YXJ0IGxhYW4gMzMwCi0JCQkJMzE0NCBOSCBNYWFzc2x1aXMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wNS03NiAgIChoZXgpCQlOU00gVGVjaG5vbG9neSBMdGQuCi0wMDA1NzYgICAgIChiYXNlIDE2KQkJTlNNIFRlY2hub2xvZ3kgTHRkLgotCQkJCTIyIEZsb29yLCBUaW1lcyBUb3dlcgotCQkJCTkyOCBDaGV1bmcgU2hhIFdhbiBSb2FkCi0JCQkJS29sb29uICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDUtNzcgICAoaGV4KQkJU00gSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uCi0wMDA1NzcgICAgIChiYXNlIDE2KQkJU00gSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uCi0JCQkJMzMwLTEgWWFuZ2phZWRvbmcKLQkJCQlTZW91Y2hvLUd1LCBTZW91bAotCQkJCTEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtNzggICAoaGV4KQkJUFJJVkFURQotMDAwNTc4ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wNS03OSAgIChoZXgpCQlVbml2ZXJzYWwgQ29udHJvbCBTb2x1dGlvbiBDb3JwLgotMDAwNTc5ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBDb250cm9sIFNvbHV0aW9uIENvcnAuCi0JCQkJMTI4NDMgRm9vdGhpbGwgQmx2ZC4KLQkJCQlVbml0ICNkCi0JCQkJU3lsbWFyIENBIDkxMzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS03QSAgIChoZXgpCQlIYXR0ZXJhcyBOZXR3b3JrcwotMDAwNTdBICAgICAoYmFzZSAxNikJCUhhdHRlcmFzIE5ldHdvcmtzCi0JCQkJUC5PLiBCb3ggQm94IDExMDAyNQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtN0IgICAoaGV4KQkJQ2h1bmcgTmFtIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0wMDA1N0IgICAgIChiYXNlIDE2KQkJQ2h1bmcgTmFtIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0JCQkJVW5pdCAzLCAxL0YsIEZlc3RpZ29vZCBDZW50cmUKLQkJCQlOby4gOCBMb2sgWWlwIFJvYWQsIE9uIExvawotCQkJCVRzdWVuIEZhbmxpbmcsIAotCQkJCUhPTkcgS09ORwotCi0wMC0wNS03QyAgIChoZXgpCQlSQ08gU2VjdXJpdHkgQUIKLTAwMDU3QyAgICAgKGJhc2UgMTYpCQlSQ08gU2VjdXJpdHkgQUIKLQkJCQlCb3ggNzA1Ci0JCQkJU0UgMTc2IDI3IEphcmZhbGxhCi0JCQkJU1dFREVOCi0KLTAwLTA1LTdEICAgKGhleCkJCVN1biBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNTdEICAgICAoYmFzZSAxNikJCVN1biBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCUdsb3JpYSBCbGRnIDZ0aAotCQkJCTEtMyBBZ2ViYS1DaG8gU2hpbmp1a3Uta3UKLQkJCQlUb2t5byAgMTYyLTA4MgotCQkJCUpBUEFOCi0KLTAwLTA1LTdFICAgKGhleCkJCUVja2VsbWFubiBTdGV1ZXJ1bmdzdGVjaG5payBHbWJICi0wMDA1N0UgICAgIChiYXNlIDE2KQkJRWNrZWxtYW5uIFN0ZXVlcnVuZ3N0ZWNobmlrIEdtYkgKLQkJCQlCZXJsaW5lciBTdHJhc3NlIDE2MQotCQkJCTY1MjA1IFdpZXNiYWRlbgotCQkJCUdFUk1BTlkKLQotMDAtMDUtN0YgICAoaGV4KQkJQWNxaXMgVGVjaG5vbG9neQotMDAwNTdGICAgICAoYmFzZSAxNikJCUFjcWlzIFRlY2hub2xvZ3kKLQkJCQkxNjIxIFdlc3QgRWwgQ2FtaW5vIFJlYWwKLQkJCQlNdC4gVmlldyBDQSA5NDA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtODAgICAoaGV4KQkJRmlicm9sYW4gTHRkLgotMDAwNTgwICAgICAoYmFzZSAxNikJCUZpYnJvbGFuIEx0ZC4KLQkJCQk2IEhheWV0emlyYSBTdHJlZXQKLQkJCQlZb2tuZWFtIElsbGl0IDIwNjkyCi0JCQkJSVNSQUVMCi0KLTAwLTA1LTgxICAgKGhleCkJCVNuZWxsCi0wMDA1ODEgICAgIChiYXNlIDE2KQkJU25lbGwKLQkJCQlTb3V0aGxlaWdoIFBhcmsgSG91c2UKLQkJCQlFYXN0bGVpZ2ggUm9hZCwgSGF2YW50Ci0JCQkJSGFtcHNoaXJlICBQMDkgMlBFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDUtODIgICAoaGV4KQkJQ2xlYXJDdWJlIFRlY2hub2xvZ3kKLTAwMDU4MiAgICAgKGJhc2UgMTYpCQlDbGVhckN1YmUgVGVjaG5vbG9neQotCQkJCTg4MzQgQ2FwaXRhbCBvZiBUZXhhcyBId3ksCi0JCQkJU3VpdGUgMTQwCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS04MyAgIChoZXgpCQlJbWFnZUNvbSBMaW1pdGVkCi0wMDA1ODMgICAgIChiYXNlIDE2KQkJSW1hZ2VDb20gTGltaXRlZAotCQkJCUNlZGFycyBQYXJrLCBDZWRhcnMgUm9hZCwKLQkJCQlNYWlkZW5oZWFkLCBCZXJrc2hpcmUsCi0JCQkJU0w2IDFSWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LTg0ICAgKGhleCkJCUFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLgotMDAwNTg0ICAgICAoYmFzZSAxNikJCUFic29sdXRlVmFsdWUgU3lzdGVtcywgSW5jLgotCQkJCTcxNS1EIE5vcnRoIERyLgotCQkJCU1lbGJvdXJuZSBGTCAzMjkzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtODUgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcywgSW5jLgotMDAwNTg1ICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MsIEluYy4KLQkJCQkxMTk0IE4uIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtODYgICAoaGV4KQkJTHVjZW50IFRlY2hub2xvZ2llcwotMDAwNTg2ICAgICAoYmFzZSAxNikJCUx1Y2VudCBUZWNobm9sb2dpZXMKLQkJCQkxNzAxIEhhcmJvciBCYXkgUGFya3dheQotCQkJCUFsYW1lZGEgQ0EgOTQ1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTg3ICAgKGhleCkJCUxvY3VzLCBJbmNvcnBvcmF0ZWQKLTAwMDU4NyAgICAgKGJhc2UgMTYpCQlMb2N1cywgSW5jb3Jwb3JhdGVkCi0JCQkJNTU0MCBSZXNlYXJjaCBQYXJrIERyaXZlCi0JCQkJRml0Y2hidXJnIENlbnRlcgotCQkJCU1hZGlzb24gV0kgNTM3MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTg4ICAgKGhleCkJCVNlbnNvcmlhIENvcnAuCi0wMDA1ODggICAgIChiYXNlIDE2KQkJU2Vuc29yaWEgQ29ycC4KLQkJCQkxNTk1MCBCZXJuYXJkbyBDdHIuIERyLgotCQkJCVN1aXRlIEoKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTg5ICAgKGhleCkJCU5hdGlvbmFsIERhdGFjb21wdXRlcgotMDAwNTg5ICAgICAoYmFzZSAxNikJCU5hdGlvbmFsIERhdGFjb21wdXRlcgotCQkJCTkwMCBNaWRkbGVzZXggVHBrLgotCQkJCUJpbGxlcmljYSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtOEEgICAoaGV4KQkJTmV0Y29tIENvLiwgTHRkLgotMDAwNThBICAgICAoYmFzZSAxNikJCU5ldGNvbSBDby4sIEx0ZC4KLQkJCQkxRiwgTm8uIDcsIExhbmUgMjQyLAotCQkJCUh1IExpaW4gU3RyZWV0Ci0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LThCICAgKGhleCkJCUlQbWVudGFsLCBJbmMuCi0wMDA1OEIgICAgIChiYXNlIDE2KQkJSVBtZW50YWwsIEluYy4KLQkJCQk4Ri05LCBOby4gMzUsIEhzaW4gVGFpIFJkLgotCQkJCUp1aWJlaSwgSHNpbmNodQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtOEMgICAoaGV4KQkJT3BlbnRlY2ggSW5jLgotMDAwNThDICAgICAoYmFzZSAxNikJCU9wZW50ZWNoIEluYy4KLQkJCQk2RiwgRG9uZ1dvbiBCbGRnLiwgMjc1Ci0JCQkJWW91bmdqYWUtRG9uZywgU2VvY2hvLUd1LAotCQkJCVNlb3VsICAxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LThEICAgKGhleCkJCUx5bnggUGhvdG9uaWMgTmV0d29ya3MsIEluYy4KLTAwMDU4RCAgICAgKGJhc2UgMTYpCQlMeW54IFBob3RvbmljIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTMgSGFtZWxhaGEgU3QuCi0JCQkJUm9zaC1IZWF5bgotCQkJCUlTUkFFTAotCi0wMC0wNS04RSAgIChoZXgpCQlGbGV4dHJvbmljcyBJbnRlcm5hdGlvbmFsIEdtYkggJiBDby4gTmZnLiBLRwotMDAwNThFICAgICAoYmFzZSAxNikJCUZsZXh0cm9uaWNzIEludGVybmF0aW9uYWwgR21iSCAmIENvLiBOZmcuIEtHCi0JCQkJU2NocmFja2dhc3NlIDktMTUKLQkJCQlLaW5kYmVyZyAgODY1MAotCQkJCUFVU1RSSUEKLQotMDAtMDUtOEYgICAoaGV4KQkJQ0xDc29mdCBjby4KLTAwMDU4RiAgICAgKGJhc2UgMTYpCQlDTENzb2Z0IGNvLgotCQkJCURlcHQuIG9mIEVsZWN0cmljYWwgRW5naW5lZXJpbmcKLQkJCQlLQUlTVCwgMzczLTEgS3VzZW9uZy1kb25nLCBZdXNlb25nLWd1LCBECi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTkwICAgKGhleCkJCVN3aXNzdm9pY2UgTHRkLgotMDAwNTkwICAgICAoYmFzZSAxNikJCVN3aXNzdm9pY2UgTHRkLgotCQkJCVppZWdlbG1hdHRzdHJhc3NlIDEKLQkJCQk0NTAzIFNvbG90aHVybgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA1LTkxICAgKGhleCkJCUFjdGl2ZSBTaWxpY29uIEx0ZC4KLTAwMDU5MSAgICAgKGJhc2UgMTYpCQlBY3RpdmUgU2lsaWNvbiBMdGQuCi0JCQkJQnJ1bm5lbCBTY2llbmNlIFBhcmsKLQkJCQlLaW5nc3RvbiBMYW5lLCBVeGJyaWRnZSwKLQkJCQlNaWRkeCAgVUI4IDNQUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LTkyICAgKGhleCkJCVB1bHRlayBDb3JwLgotMDAwNTkyICAgICAoYmFzZSAxNikJCVB1bHRlayBDb3JwLgotCQkJCTc0LTEsIFlhbWFzaGl0YS1jaG8sCi0JCQkJTmFrYS1rdSwgVG9rb2hhbWEtY2l0eSwKLQkJCQkyMzEtMDAyMwotCQkJCUpBUEFOCi0KLTAwLTA1LTkzICAgKGhleCkJCUdyYW1tYXIgRW5naW5lIEluYy4KLTAwMDU5MyAgICAgKGJhc2UgMTYpCQlHcmFtbWFyIEVuZ2luZSBJbmMuCi0JCQkJOTIxIEVhc3R3aW5kIERyaXZlCi0JCQkJU3VpdGUgMTIyCi0JCQkJV2VzdGVydmlsbGUgT0ggNDMwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTk0ICAgKGhleCkJCUlYWEFUIEF1dG9tYXRpb24gR21iSAotMDAwNTk0ICAgICAoYmFzZSAxNikJCUlYWEFUIEF1dG9tYXRpb24gR21iSAotCQkJCUxlaWJuaXpzdHJhc3NlIDE1Ci0JCQkJODgyNTAgV2VpbmdhcnRlbgotCQkJCUdFUk1BTlkKLQotMDAtMDUtOTUgICAoaGV4KQkJQWxlc2lzIENvcnBvcmF0aW9uCi0wMDA1OTUgICAgIChiYXNlIDE2KQkJQWxlc2lzIENvcnBvcmF0aW9uCi0JCQkJMTYzMyAyNnRoIFN0cmVldAotCQkJCVNhbnRhIE1vbmljYSBDQSA5MDQwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtOTYgICAoaGV4KQkJR2Vub3RlY2ggQ28uLCBMdGQuCi0wMDA1OTYgICAgIChiYXNlIDE2KQkJR2Vub3RlY2ggQ28uLCBMdGQuCi0JCQkJIzMwOCBHdW5rb29rIEJsZGcuLAotCQkJCTI4OC0xIERva3Nhbi1Eb25nCi0JCQkJR3VtY2hvbi1HdSBTZW91bCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtOTcgICAoaGV4KQkJRWFnbGUgVHJhZmZpYyBDb250cm9sIFN5c3RlbXMKLTAwMDU5NyAgICAgKGJhc2UgMTYpCQlFYWdsZSBUcmFmZmljIENvbnRyb2wgU3lzdGVtcwotCQkJCTgwMDQgQ2FtZXJvbiBSb2FkCi0JCQkJQXVzdGluIFRYIDc4NzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS05OCAgIChoZXgpCQlDUk9OT1MgUy5yLmwuCi0wMDA1OTggICAgIChiYXNlIDE2KQkJQ1JPTk9TIFMuci5sLgotCQkJCVZpYSBjYXZvdXIgNTgvQQotCQkJCTIzOTAwIExFQ0NPIChMQykKLQkJCQlJVEFMWQotCi0wMC0wNS05OSAgIChoZXgpCQlEUlMgVGVzdCBhbmQgRW5lcmd5IE1hbmFnZW1lbnQgb3IgRFJTLVRFTQotMDAwNTk5ICAgICAoYmFzZSAxNikJCURSUyBUZXN0IGFuZCBFbmVyZ3kgTWFuYWdlbWVudCBvciBEUlMtVEVNCi0JCQkJMTEwIFd5bm4gRHJpdmUKLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS05QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1OUEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS05QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1OUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS05QyAgIChoZXgpCQlLbGVpbmtuZWNodCBHbWJILCBJbmcuIEJ1ZXJvCi0wMDA1OUMgICAgIChiYXNlIDE2KQkJS2xlaW5rbmVjaHQgR21iSCwgSW5nLiBCdWVybwotCQkJCUJhY2hzdHJhc3NlIDMwCi0JCQkJRC04MjU0MSBNdWVuc2luZwotCQkJCUdFUk1BTlkKLQotMDAtMDUtOUQgICAoaGV4KQkJRGFuaWVsIENvbXB1dGluZyBTeXN0ZW1zLCBJbmMuCi0wMDA1OUQgICAgIChiYXNlIDE2KQkJRGFuaWVsIENvbXB1dGluZyBTeXN0ZW1zLCBJbmMuCi0JCQkJMzIwOCA4dGggQXZlbnVlIE5FICMxMTgKLQkJCQlDYWxnYXJ5IEFsYmVydGEKLQkJCQlUMkEgN1Y4Ci0JCQkJQ0FOQURBCi0KLTAwLTA1LTlFICAgKGhleCkJCVppbndlbGwgQ29ycG9yYXRpb24KLTAwMDU5RSAgICAgKGJhc2UgMTYpCQlaaW53ZWxsIENvcnBvcmF0aW9uCi0JCQkJN0YsIE5vLjUxMiwgWXVhbi1TaGFuIFJvYWQKLQkJCQlDaGFuZy1obyBjaXR5IFRhaXBlaSBIc2llbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtOUYgICAoaGV4KQkJWW90dGEgTmV0d29ya3MsIEluYy4KLTAwMDU5RiAgICAgKGJhc2UgMTYpCQlZb3R0YSBOZXR3b3JrcywgSW5jLgotCQkJCTIyMDEgQXZlbnVlIEsKLQkJCQlQbGFubyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQTAgICAoaGV4KQkJTU9CSUxJTkUgS2Z0LgotMDAwNUEwICAgICAoYmFzZSAxNikJCU1PQklMSU5FIEtmdC4KLQkJCQlMZWhlbCBVdGNhIDE0Ci0JCQkJQlVEQVBFU1QKLQkJCQlILTExMzQKLQkJCQlIVU5HQVJZCi0KLTAwLTA1LUExICAgKGhleCkJCVplbm9jb20KLTAwMDVBMSAgICAgKGJhc2UgMTYpCQlaZW5vY29tCi0JCQkJTm8uNDAyLCA0dGggZmxvb3IsIFdvbmdvayBCbGRnLgotCQkJCTgzMC0zOCwgWW9rc2FtLURvbmcsIEdhbmduYW0tR3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUEyICAgKGhleCkJCUNFTE9YIE5ldHdvcmtzCi0wMDA1QTIgICAgIChiYXNlIDE2KQkJQ0VMT1ggTmV0d29ya3MKLQkJCQk5NDAgV2VzdCBQb3J0IFBsYXphIC0gU3RlLiAjMzAwCi0JCQkJU3QuIExvdWlzIE1PIDYzMTQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1BMyAgIChoZXgpCQlRRUksIEluYy4KLTAwMDVBMyAgICAgKGJhc2UgMTYpCQlRRUksIEluYy4KLQkJCQk2MCBGYWRlbSBSb2FkCi0JCQkJU3ByaW5nZmllbGQgTkogMDcwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUE0ICAgKGhleCkJCUx1Y2lkIFZvaWNlIEx0ZC4KLTAwMDVBNCAgICAgKGJhc2UgMTYpCQlMdWNpZCBWb2ljZSBMdGQuCi0JCQkJNSBKYWJvdGluc2tpIFN0cmVldAotCQkJCVJhbWF0LUdhbiwgNTI1MjAKLQkJCQlJU1JBRUwKLQotMDAtMDUtQTUgICAoaGV4KQkJS09UVAotMDAwNUE1ICAgICAoYmFzZSAxNikJCUtPVFQKLQkJCQlTdWl0ZSAzMDUgRGFlaGEgQi9ECi0JCQkJNjgwIFllb2tzYW0tRG9uZywgS2FuZ05hbS1HdSBTZW91bAotCQkJCTEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtQTYgICAoaGV4KQkJRXh0cm9uIEVsZWN0cm9uaWNzCi0wMDA1QTYgICAgIChiYXNlIDE2KQkJRXh0cm9uIEVsZWN0cm9uaWNzCi0JCQkJMTIzMCBTLiBMZXdpcwotCQkJCUFuYWhpZW0gQ0EgOTI4MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUE3ICAgKGhleCkJCUh5cGVyY2hpcCwgSW5jLgotMDAwNUE3ICAgICAoYmFzZSAxNikJCUh5cGVyY2hpcCwgSW5jLgotCQkJCTE4MCBQZWVsIFN0cmVldCAtIFN0ZS4gIzMzMwotCQkJCU1vbnRyZWFsLCBRdWViZWMKLQkJCQlIM0MgMkc3Ci0JCQkJQ0FOQURBCi0KLTAwLTA1LUE4ICAgKGhleCkJCVdZTEUgRUxFQ1RST05JQ1MKLTAwMDVBOCAgICAgKGJhc2UgMTYpCQlXWUxFIEVMRUNUUk9OSUNTCi0JCQkJMzAwMCBCT1dFUlMgQVZFTlVFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEtMDkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQTkgICAoaGV4KQkJUHJpbmNldG9uIE5ldHdvcmtzLCBJbmMuCi0wMDA1QTkgICAgIChiYXNlIDE2KQkJUHJpbmNldG9uIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTAwIENlbnR1cnkgQ2VudGVyIEN0LiAjMTAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUFBICAgKGhleCkJCU1vb3JlIEluZHVzdHJpZXMgSW50ZXJuYXRpb25hbCBJbmMuCi0wMDA1QUEgICAgIChiYXNlIDE2KQkJTW9vcmUgSW5kdXN0cmllcyBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQkxNjY1MCBTY2hvZW5ib3JuIFN0LgotCQkJCU5vcnRoIEhpbGxzIENBIDkxMzQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1BQiAgIChoZXgpCQlDeWJlciBGb25lLCBJbmMuCi0wMDA1QUIgICAgIChiYXNlIDE2KQkJQ3liZXIgRm9uZSwgSW5jLgotCQkJCTk4OSBPbGQgRWFnbGUgU2Nob29sIFJvYWQKLQkJCQlTdWl0ZSA4MDAKLQkJCQlXYXluZSBQQSAxOTA4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQUMgICAoaGV4KQkJTm9ydGhlcm4gRGlnaXRhbCwgSW5jLgotMDAwNUFDICAgICAoYmFzZSAxNikJCU5vcnRoZXJuIERpZ2l0YWwsIEluYy4KLQkJCQkxMDMgUmFuZGFsbCBEcml2ZQotCQkJCVdhdGVybG9vICBPbnRhcmlvIE4yViAxQzUKLQkJCQlDQU5BREEKLQotMDAtMDUtQUQgICAoaGV4KQkJVG9wc3BpbiBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNUFEICAgICAoYmFzZSAxNikJCVRvcHNwaW4gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk1MTUgRWxsaXMgU3RyZWV0Ci0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQUUgICAoaGV4KQkJTWVkaWFwb3J0IFVTQQotMDAwNUFFICAgICAoYmFzZSAxNikJCU1lZGlhcG9ydCBVU0EKLQkJCQkxNzE1MSBOZXdob3BlIEF2ZS4gIzIwMgotCQkJCUZvdW50YWluIFZhbGxleSBDQSA5MjcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQUYgICAoaGV4KQkJSW5ub1NjYW4gQ29tcHV0aW5nIEEvUwotMDAwNUFGICAgICAoYmFzZSAxNikJCUlubm9TY2FuIENvbXB1dGluZyBBL1MKLQkJCQlTb3JlbiBGcmljaHN2ZWogNDJSCi0JCQkJREstODIzMCBBYWJ5aG9qCi0JCQkJREVOTUFSSwotCi0wMC0wNS1CMCAgIChoZXgpCQlLb3JlYSBDb21wdXRlciBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNUIwICAgICAoYmFzZSAxNikJCUtvcmVhIENvbXB1dGVyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJS0NUIEJsZGcsIDExMS0zIFlhbmdqYWUtRG9uZywKLQkJCQlTZW9jaG8tR3UsIFNlb3VsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUIxICAgKGhleCkJCUFTQiBUZWNobm9sb2d5IEJWCi0wMDA1QjEgICAgIChiYXNlIDE2KQkJQVNCIFRlY2hub2xvZ3kgQlYKLQkJCQlEZSBSb25kZSAxNUEKLQkJCQk1NjgzIENaIEJlc3QKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wNS1CMiAgIChoZXgpCQlNZWRpc29uIENvLiwgTHRkLgotMDAwNUIyICAgICAoYmFzZSAxNikJCU1lZGlzb24gQ28uLCBMdGQuCi0JCQkJOTk3LTQsIFNhZWNoaS1Eb25nLAotCQkJCUthbmduYW0ta3UsIFNvdWVsLAotCQkJCTEzNS0yODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtQjMgICAoaGV4KQkJQXNhaGktRW5naW5lZXJpbmcgQ28uLCBMdGQuCi0wMDA1QjMgICAgIChiYXNlIDE2KQkJQXNhaGktRW5naW5lZXJpbmcgQ28uLCBMdGQuCi0JCQkJMy02LTEyLTIgR2FrdWVuaGlnYXNoaS1jaG8KLQkJCQlLb2RhaXJhLXNoaQotCQkJCVRva3lvICAxODctMDA0MwotCQkJCUpBUEFOCi0KLTAwLTA1LUI0ICAgKGhleCkJCUFjZWV4IENvcnBvcmF0aW9uCi0wMDA1QjQgICAgIChiYXNlIDE2KQkJQWNlZXggQ29ycG9yYXRpb24KLQkJCQkyRiwgTm8uIDIsIEFsbGV5IDEsIFN6ZS1XZWkgTGFuZQotCQkJCUNodW5nLUNoZW5nIFJkLiwgSHNpbnRpZW4sIFRhaXBlaQotCQkJCTIzMTM4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS1CNSAgIChoZXgpCQlCcm9hZGNvbSBUZWNobm9sb2dpZXMKLTAwMDVCNSAgICAgKGJhc2UgMTYpCQlCcm9hZGNvbSBUZWNobm9sb2dpZXMKLQkJCQkxMzctMDYwCi0JCQkJODU4LTMxIFl1amVvbmcgQkxELCBCYW5nYmFlLURvbmcKLQkJCQlTZWNoby1HdSBTZW91bCwgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUI2ICAgKGhleCkJCUlOU1lTIE1pY3JvZWxlY3Ryb25pY3MgR21iSAotMDAwNUI2ICAgICAoYmFzZSAxNikJCUlOU1lTIE1pY3JvZWxlY3Ryb25pY3MgR21iSAotCQkJCVdhZmZuZXJnYXNzZSA4Ci0JCQkJOTMwNDcgUmVnZW5zYnVyZwotCQkJCUdFUk1BTlkKLQotMDAtMDUtQjcgICAoaGV4KQkJQXJib3IgVGVjaG5vbG9neSBDb3JwLgotMDAwNUI3ICAgICAoYmFzZSAxNikJCUFyYm9yIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk1RiwgTm8uIDczOCwgWmhvbmcgWmhlbmcgUmQuLAotCQkJCVpob25nIEhvIDIzNSwgVGFpcGVpLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtQjggICAoaGV4KQkJRWxlY3Ryb25pYyBEZXNpZ24gQXNzb2NpYXRlcywgSW5jLgotMDAwNUI4ICAgICAoYmFzZSAxNikJCUVsZWN0cm9uaWMgRGVzaWduIEFzc29jaWF0ZXMsIEluYy4KLQkJCQkzMzEgQXJjYWRvIFJkLiBOVwotCQkJCVN1aXRlIEMtMQotCQkJCUxpbGJ1cm4gR0EgMzAwNDctMjg0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQjkgICAoaGV4KQkJQWlydmFuYSwgSW5jLgotMDAwNUI5ICAgICAoYmFzZSAxNikJCUFpcnZhbmEsIEluYy4KLQkJCQkyNSBJbmR1c3RyaWFsIEF2ZS4KLQkJCQlDaGxlbXNmb3JkIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1CQSAgIChoZXgpCQlBcmVhIE5ldHdvZWtzLCBJbmMuCi0wMDA1QkEgICAgIChiYXNlIDE2KQkJQXJlYSBOZXR3b2VrcywgSW5jLgotCQkJCTExNDggRXVjbGlkIEF2ZS4sIFN1aXRlIDQwMAotCQkJCUNsZXZlbGFuZCBPSCA0NDE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1CQiAgIChoZXgpCQlNeXNwYWNlIEFCCi0wMDA1QkIgICAgIChiYXNlIDE2KQkJTXlzcGFjZSBBQgotCQkJCVN2ZWF2YWdlbiAzMwotCQkJCVNFLTExMTM0IFN0b2NraG9sbQotCQkJCVNXRURFTgotCi0wMC0wNS1CQyAgIChoZXgpCQlSZXNvcnN5cyBMdGQuCi0wMDA1QkMgICAgIChiYXNlIDE2KQkJUmVzb3JzeXMgTHRkLgotCQkJCTgwIEpvaG5zZG9uZSBBdmVudWUsCi0JCQkJSGlsaW5ndG9uLCBHbGFzZ293LAotCQkJCVNjb3RsYW5kICBHNTIgNExUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDUtQkQgICAoaGV4KQkJUk9BWCBCVgotMDAwNUJEICAgICAoYmFzZSAxNikJCVJPQVggQlYKLQkJCQlTdGVycmVuYmVyZ3dlZyAyOQotCQkJCU5MLTM3NjkgQlMgIFNPRVNURVJCRVJHCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDUtQkUgICAoaGV4KQkJS29uZ3NiZXJnIFNlYXRleCBBUwotMDAwNUJFICAgICAoYmFzZSAxNikJCUtvbmdzYmVyZyBTZWF0ZXggQVMKLQkJCQlQaXJzZW50ZXJldAotCQkJCU4tNzU2MiBUcm9uZGhlaW0KLQkJCQlOT1JXQVkKLQotMDAtMDUtQkYgICAoaGV4KQkJSnVzdEV6eSBUZWNobm9sb2d5LCBJbmMuCi0wMDA1QkYgICAgIChiYXNlIDE2KQkJSnVzdEV6eSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNUYsIE5vLiAzMjQsIFNlYy4gMSwgSnVuZ2h1YSBSZC4KLQkJCQlIc2luY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LUMwICAgKGhleCkJCURpZ2l0YWwgTmV0d29yayBBbGFjYXJ0ZSBDby4sIEx0ZC4KLTAwMDVDMCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIE5ldHdvcmsgQWxhY2FydGUgQ28uLCBMdGQuCi0JCQkJQTEwNCwgU2VvdWwgQnVzaW5lc3MgSW5jdWJhdG9yCi0JCQkJNjQ3LTI2LCBEZXVuZ0NodW4tRG9uZywgS2FuZ3Nlby1HdQotCQkJCVNlb3VsICAxNTctMDMwLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1DMSAgIChoZXgpCQlBLUt5dW5nIE1vdGlvbiwgSW5jLgotMDAwNUMxICAgICAoYmFzZSAxNikJCUEtS3l1bmcgTW90aW9uLCBJbmMuCi0JCQkJNTQtMTAsIE11bmp1bmctRG9uZwotCQkJCVNvbmdwYS1LdSwKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUMyICAgKGhleCkJCVNvcm9udGksIEluYy4KLTAwMDVDMiAgICAgKGJhc2UgMTYpCQlTb3JvbnRpLCBJbmMuCi0JCQkJMTIyNTcgU291dGggQnVzaW5lc3MgUGFyayBEcml2ZQotCQkJCSMxNjAKLQkJCQlEcmFwZXIgVXRhaCA4NDAyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQzMgICAoaGV4KQkJUGFjaWZpYyBJbnN0cnVtZW50cywgSW5jLgotMDAwNUMzICAgICAoYmFzZSAxNikJCVBhY2lmaWMgSW5zdHJ1bWVudHMsIEluYy4KLQkJCQk0MDgwIFBpa2UgTGFuZQotCQkJCUNvbmNvcmQgQ0EgOTQ1MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUM0ICAgKGhleCkJCVRlbGVjdCwgSW5jLgotMDAwNUM0ICAgICAoYmFzZSAxNikJCVRlbGVjdCwgSW5jLgotCQkJCTIxMTEgTi4gTW9sdGVyIFJvYWQKLQkJCQlMaWJlcnR5IExha2UgV0EgOTkwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUM1ICAgKGhleCkJCUZsYWdhIEhGCi0wMDA1QzUgICAgIChiYXNlIDE2KQkJRmxhZ2EgSEYKLQkJCQlWZXN0dXJobGlkIDcKLQkJCQlJUy0xMDUgUmV5a2phdmlrCi0JCQkJSUNFTEFORAotCi0wMC0wNS1DNiAgIChoZXgpCQlUcml6IENvbW11bmljYXRpb25zCi0wMDA1QzYgICAgIChiYXNlIDE2KQkJVHJpeiBDb21tdW5pY2F0aW9ucwotCQkJCUFud29uIEJsZGcuIDd0aCBGbC4KLQkJCQkxNC0xNSBZb2lkby1Eb25nIFlvdW5nZGV1bmdwby1HdQotCQkJCVNlb3VsICAxNTAtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUM3ICAgKGhleCkJCUkvRi1DT00gQS9TCi0wMDA1QzcgICAgIChiYXNlIDE2KQkJSS9GLUNPTSBBL1MKLQkJCQlFbGxlZ2FhcmR2ZWogMzYKLQkJCQk2NDAwIFNvZW5kZXJib3JnCi0JCQkJREVOTUFSSwotCi0wMC0wNS1DOCAgIChoZXgpCQlWRVJZVEVDSAotMDAwNUM4ICAgICAoYmFzZSAxNikJCVZFUllURUNICi0JCQkJIzQwMiwgSmFuZyBZb3VuZyBTaGlsIEt3YW4sCi0JCQkJVmVudHVyZSBUb3duLCAxNjg4LTUgU2hpbmlsLURvbmcsIERhZWRlbwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1DOSAgIChoZXgpCQlMRyBJbm5vdGVrIENvLiwgTHRkLgotMDAwNUM5ICAgICAoYmFzZSAxNikJCUxHIElubm90ZWsgQ28uLCBMdGQuCi0JCQkJTEcgQ29tcG9uZW50IFImRCBDZW50ZXIKLQkJCQkxMjcxLCBTYS1Eb25nLCBTYW5ncm9rLWd1Ci0JCQkJQW5zYW4tc2kgR3llb25nZ2ktZG8gNDI2LTc5MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1DQSAgIChoZXgpCQlIaXRyb24gVGVjaG5vbG9neSwgSW5jLgotMDAwNUNBICAgICAoYmFzZSAxNikJCUhpdHJvbiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJSFNJTkNIVSBTQklQIFNVQlNJRElBUlkKLQkJCQlOby4gMjUgUiZEIDFzdCBSZC4gU2NpZW5jZS1CYXNlZCBJbmR1c3RyCi0JCQkJSHNpbi1jaHUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtQ0IgICAoaGV4KQkJUk9JUyBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDVDQiAgICAgKGJhc2UgMTYpCQlST0lTIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTZ0aCBGIENoYW5naHl1biBCL0QsIDk2MC0xCi0JCQkJSG9neWUtRG9uZyBEb25nYW4tS3UgQW55YW5nLAotCQkJCTQzMS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtQ0MgICAoaGV4KQkJU3VtdGVsIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA1Q0MgICAgIChiYXNlIDE2KQkJU3VtdGVsIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMUYsIE5vLiAxNzMsIEd1bmcgWXVhbiBSb2FkLAotCQkJCUhzaW5jaHUgQ2l0eSAgMzAwNTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LUNEICAgKGhleCkJCURlbm9uLCBMdGQuCi0wMDA1Q0QgICAgIChiYXNlIDE2KQkJRGVub24sIEx0ZC4KLQkJCQkzNS0xLCBTYWdhbWlvbm8gNy1jaG9tZSwKLQkJCQlTYWdhbWloYXJhLXNoaQotCQkJCUthbmFnYXdhICAyMjgtODUwNQotCQkJCUpBUEFOCi0KLTAwLTA1LUNFICAgKGhleCkJCVByb2xpbmsgTWljcm9zeXN0ZW1zIENvcnBvcmF0aW9uCi0wMDA1Q0UgICAgIChiYXNlIDE2KQkJUHJvbGluayBNaWNyb3N5c3RlbXMgQ29ycG9yYXRpb24KLQkJCQk2RiwgTm8uIDM0OSwgWWFuZy1LdWFuZyBTdC4KLQkJCQlOZWktSHUgVGFpcGVpLCAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LUNGICAgKGhleCkJCVRodW5kZXIgUml2ZXIgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA1Q0YgICAgIChiYXNlIDE2KQkJVGh1bmRlciBSaXZlciBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyMyBDb3Jwb3JhdGUgUGxhemEsIFN1aXRlIDI1MAotCQkJCU5ld3BvcnQgQmVhY2ggQ0EgOTI2NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUQwICAgKGhleCkJCVNvbGluZXQgU3lzdGVtcwotMDAwNUQwICAgICAoYmFzZSAxNikJCVNvbGluZXQgU3lzdGVtcwotCQkJCTEyMDAtMTgwIEVsZ2luIFN0LgotCQkJCU90dGF3YSBPbnRhcmlvCi0JCQkJSzJQIDJLMwotCQkJCUNBTkFEQQotCi0wMC0wNS1EMSAgIChoZXgpCQlNZXRhdmVjdG9yIFRlY2hub2xvZ2llcwotMDAwNUQxICAgICAoYmFzZSAxNikJCU1ldGF2ZWN0b3IgVGVjaG5vbG9naWVzCi0JCQkJU3RlZW53ZWcgT3AgR2llcmxlLCAxMDAKLQkJCQlCLTIzMDAgVHVybmhvdXQsCi0JCQkJQkVMR0lVTQotCi0wMC0wNS1EMiAgIChoZXgpCQlEQVAgVGVjaG5vbG9naWVzCi0wMDA1RDIgICAgIChiYXNlIDE2KQkJREFQIFRlY2hub2xvZ2llcwotCQkJCTk1NSBGZXJuYW5kIER1Zm91ciwKLQkJCQlWaWxsZSBEZSBWYW5pZXIsIFF1ZWJlYywKLQkJCQlHMU0gM0IyCi0JCQkJQ0FOQURBCi0KLTAwLTA1LUQzICAgKGhleCkJCWVQcm9kdWN0aW9uIFNvbHV0aW9ucywgSW5jLgotMDAwNUQzICAgICAoYmFzZSAxNikJCWVQcm9kdWN0aW9uIFNvbHV0aW9ucywgSW5jLgotCQkJCTIyMDAxIE5vcnRoIFBhcmsgRHJpdmUKLQkJCQlLaW5nd29vZCBUWCA3NzMzOS0zODA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1ENCAgIChoZXgpCQlGdXR1cmVTbWFydCBOZXR3b3JrcywgSW5jLgotMDAwNUQ0ICAgICAoYmFzZSAxNikJCUZ1dHVyZVNtYXJ0IE5ldHdvcmtzLCBJbmMuCi0JCQkJNjE1NSBBbG1hZGVuIEV4cHJlc3N3YXkKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW4gSm9zZSBDQSA5NTEyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRDUgICAoaGV4KQkJU3BlZWRjb20gV2lyZWxlc3MKLTAwMDVENSAgICAgKGJhc2UgMTYpCQlTcGVlZGNvbSBXaXJlbGVzcwotCQkJCTcwMjAgUHJvZmVzc2lvbmFsIFBrd3kgRWFzdAotCQkJCVNhcmFzb3RhIEZMIDM0MjQwLTg1MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUQ2ICAgKGhleCkJCVRpdGFuIFdpcmVsZXNzCi0wMDA1RDYgICAgIChiYXNlIDE2KQkJVGl0YW4gV2lyZWxlc3MKLQkJCQkzMDMzIFNjaWVuY2UgUGFyayBSb2FkCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1ENyAgIChoZXgpCQlWaXN0YSBJbWFnaW5nLCBJbmMuCi0wMDA1RDcgICAgIChiYXNlIDE2KQkJVmlzdGEgSW1hZ2luZywgSW5jLgotCQkJCTUyMSBUYXlsb3IgV2F5Ci0JCQkJU2FuIENhcmxvcyBDQSA5NDA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRDggICAoaGV4KQkJQXJlc2NvbSwgSW5jLgotMDAwNUQ4ICAgICAoYmFzZSAxNikJCUFyZXNjb20sIEluYy4KLQkJCQkzNTQxIEdhdGV3YXkgQmx2ZC4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1EOSAgIChoZXgpCQlUZWNobm8gVmFsbGV5LCBJbmMuCi0wMDA1RDkgICAgIChiYXNlIDE2KQkJVGVjaG5vIFZhbGxleSwgSW5jLgotCQkJCUFTSUMgVmVudHVyZSBUb3duIDVGLAotCQkJCTEzMzAtMyBTZW9jaG8yLURvbmcsIFNlb2Noby1LdSwKLQkJCQlTZW91bCAgMTM1LTA3MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1EQSAgIChoZXgpCQlBcGV4IEF1dG9tYXRpb25zdGVjaG5pawotMDAwNURBICAgICAoYmFzZSAxNikJCUFwZXggQXV0b21hdGlvbnN0ZWNobmlrCi0JCQkJVm9zc2Vua2FtcCA0Ci0JCQkJRC0zODEwNCBCcmF1bnNjaHdlaWcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LURCICAgKGhleCkJCVBTSSBOZW50ZWMgR21iSAotMDAwNURCICAgICAoYmFzZSAxNikJCVBTSSBOZW50ZWMgR21iSAotCQkJCUdyZXNjaGJhY2hzdHJhc3NlIDEyCi0JCQkJS2FybHNydWhlICA3NjIyOQotCQkJCUdFUk1BTlkKLQotMDAtMDUtREMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNURDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUREICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDVERCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1ERSAgIChoZXgpCQlHaSBGb25lIEtvcmVhLCBJbmMuCi0wMDA1REUgICAgIChiYXNlIDE2KQkJR2kgRm9uZSBLb3JlYSwgSW5jLgotCQkJCVR3aW4gQmxkZy4gNHRoIEZsLAotCQkJCTkwMi0xMjQgVG9nb2stZG9uZywgS2FuZ25hbS1ndSwKLQkJCQlTZW91bCwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1ERiAgIChoZXgpCQlFbGVjdHJvbmljIElubm92YXRpb24sIEluYy4KLTAwMDVERiAgICAgKGJhc2UgMTYpCQlFbGVjdHJvbmljIElubm92YXRpb24sIEluYy4KLQkJCQkxMjczMSBDYW5uaW5ndG9uIFdheSBTVwotCQkJCUNhbGdhcnksIEFCIFQyVyAxWjcKLQkJCQlDQU5BREEKLQotMDAtMDUtRTAgICAoaGV4KQkJRW1waXJpeCBDb3JwLgotMDAwNUUwICAgICAoYmFzZSAxNikJCUVtcGlyaXggQ29ycC4KLQkJCQkyMDUgTG93ZWxsIFN0LgotCQkJCVdpbG1pbmd0b24gTUEgMDE4ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUUxICAgKGhleCkJCVRyZWxsaXMgUGhvdG9uaWNzLCBMdGQuCi0wMDA1RTEgICAgIChiYXNlIDE2KQkJVHJlbGxpcyBQaG90b25pY3MsIEx0ZC4KLQkJCQlQLk8uQi4gMzYKLQkJCQlZb2duZWFtIEVsaXRlLCAyMDY5MgotCQkJCUlTUkFFTAotCi0wMC0wNS1FMiAgIChoZXgpCQlDcmVhdGl2IE5ldHdvcmsgVGVjaG5vbG9naWVzCi0wMDA1RTIgICAgIChiYXNlIDE2KQkJQ3JlYXRpdiBOZXR3b3JrIFRlY2hub2xvZ2llcwotCQkJCTE3NTUgU3QuIFJlZ2lzIFN1aXRlIDI0MAotCQkJCURvbGxhcmQtZGVzLU9ybWVhdXgKLQkJCQlRdWViZWMgSDlCLTJNOQotCQkJCUNBTkFEQQotCi0wMC0wNS1FMyAgIChoZXgpCQlMaWdodFNhbmQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDVFMyAgICAgKGJhc2UgMTYpCQlMaWdodFNhbmQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkzNzUgTG9zIENvY2hlcyBTdC4KLQkJCQlNaWxwaXRhcyBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRTQgICAoaGV4KQkJUmVkIExpb24gQ29udHJvbHMgSW5jLgotMDAwNUU0ICAgICAoYmFzZSAxNikJCVJlZCBMaW9uIENvbnRyb2xzIEluYy4KLQkJCQkyMCBXaWxsb3cgU3ByaW5ncyBDaXJjbGUKLQkJCQlZb3JrIFBBIDE3NDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1FNSAgIChoZXgpCQlSZW5pc2hhdyBQTEMKLTAwMDVFNSAgICAgKGJhc2UgMTYpCQlSZW5pc2hhdyBQTEMKLQkJCQlOZXcgTWlsbHMsIFdvdHRvbi11bmRlci1FZGdlCi0JCQkJR2xvdWNlc3RlcnNodXJlLCBHTDEyIDhKUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LUU2ICAgKGhleCkJCUVnZW5lcmEsIEluYy4KLTAwMDVFNiAgICAgKGJhc2UgMTYpCQlFZ2VuZXJhLCBJbmMuCi0JCQkJMTY1IEZvcmVzdCBTdC4KLQkJCQlNYXJsYm9ybyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRTcgICAoaGV4KQkJTmV0cmFrZSBhbiBBdWRpb0NvZGVzIENvbXBhbnkKLTAwMDVFNyAgICAgKGJhc2UgMTYpCQlOZXRyYWtlIGFuIEF1ZGlvQ29kZXMgQ29tcGFueQotCQkJCTMwMDAgVGVjaG5vbG9neSBEcml2ZQotCQkJCVN1aXRlIDEwMAotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1FOCAgIChoZXgpCQlUdXJib1dhdmUsIEluYy4KLTAwMDVFOCAgICAgKGJhc2UgMTYpCQlUdXJib1dhdmUsIEluYy4KLQkJCQk1NTUgU291dGggU3RhdGUKLQkJCQlTdWl0ZSAzMDIKLQkJCQlPcmVtIFVUIDg0MDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1FOSAgIChoZXgpCQlVbmljZXNzIE5ldHdvcmssIEluYy4KLTAwMDVFOSAgICAgKGJhc2UgMTYpCQlVbmljZXNzIE5ldHdvcmssIEluYy4KLQkJCQk4NzAgRG9yb3RoeSBEci4gIzcwOAotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUVBICAgKGhleCkJCVJlZG5peAotMDAwNUVBICAgICAoYmFzZSAxNikJCVJlZG5peAotCQkJCTUwMiwgRG9uZy1BIFJlc29ydCBPZmZpY2V0ZWwKLQkJCQk1MzgtOCBCb25nbXl1bmctRG9uZyBZdXN1bmcsCi0JCQkJVGFlam9uICAzMDUtNzA5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUVCICAgKGhleCkJCUJsdWUgUmlkZ2UgTmV0d29ya3MsIEluYy4KLTAwMDVFQiAgICAgKGJhc2UgMTYpCQlCbHVlIFJpZGdlIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTQxMjAgUGFya2UgTG9uZyBDb3VydAotCQkJCVN1aXRlIDIwMQotCQkJCUNoYW50aWxseSBWQSAyMDE1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRUMgICAoaGV4KQkJTW9zYWljIFN5c3RlbXMgSW5jLgotMDAwNUVDICAgICAoYmFzZSAxNikJCU1vc2FpYyBTeXN0ZW1zIEluYy4KLQkJCQk3IENhbXBiZWxsIFBhcmsKLQkJCQlTb21lcnZpbGxlIE1BIDAyMTQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1FRCAgIChoZXgpCQlUZWNobmlrdW0gSm9hbm5ldW0gR21iSAotMDAwNUVEICAgICAoYmFzZSAxNikJCVRlY2huaWt1bSBKb2FubmV1bSBHbWJICi0JCQkJQWx0ZSBQb3N0c3RyYd9lIDE0OQotCQkJCTgwMjAgR3JhegotCQkJCUFVU1RSSUEKLQotMDAtMDUtRUUgICAoaGV4KQkJQkVXQVRPUiBHcm91cAotMDAwNUVFICAgICAoYmFzZSAxNikJCUJFV0FUT1IgR3JvdXAKLQkJCQlCZXdhdG9yIEFCLCBCb3ggMTI3NQotCQkJCVNFLTE3MTI0IFNvbG5hbgotCQkJCVNXRURFTgotCi0wMC0wNS1FRiAgIChoZXgpCQlBRE9JUiBEaWdpdGFsIFRlY2hub2xvZ3kKLTAwMDVFRiAgICAgKGJhc2UgMTYpCQlBRE9JUiBEaWdpdGFsIFRlY2hub2xvZ3kKLQkJCQkyOCBGbCwgWmhhb0ZlbmcgV29ybGQgVHJhZGUgQmxkZy4KLQkJCQkzNjkgSmlhbmdTdSBSZC4KLQkJCQlTaGFuZ2hhaSAyMDAwNTAsIAotCQkJCUNISU5BCi0KLTAwLTA1LUYwICAgKGhleCkJCVNBVEVDCi0wMDA1RjAgICAgIChiYXNlIDE2KQkJU0FURUMKLQkJCQlQLk8uIEJveCA0NTAyMgotCQkJCUplcnVzYWxlbQotCQkJCTkxNDUwIAotCQkJCUlTUkFFTAotCi0wMC0wNS1GMSAgIChoZXgpCQlWcmNvbSwgSW5jLgotMDAwNUYxICAgICAoYmFzZSAxNikJCVZyY29tLCBJbmMuCi0JCQkJNDAxLCBTb25nYW0gQmxkZywgNDc5LTEsCi0JCQkJQmFuZ2JhZSAzLWRvbmcsIFNlb2Noby1rdSwKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUYyICAgKGhleCkJCVBvd2VyIFIsIEluYy4KLTAwMDVGMiAgICAgKGJhc2UgMTYpCQlQb3dlciBSLCBJbmMuCi0JCQkJNzU2IEFsb2hhIFN0LgotCQkJCVNlYXR0bGUgV0EgOTgxMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUYzICAgKGhleCkJCVdlYm95bgotMDAwNUYzICAgICAoYmFzZSAxNikJCVdlYm95bgotCQkJCTI2IFJ1ZSBPZXMgR2F1ZGluZXMKLQkJCQk3ODEwMCBTYWludC1HZXJtYWluCi0JCQkJRlJBTkNFCi0KLTAwLTA1LUY0ICAgKGhleCkJCVN5c3RlbSBCYXNlIENvLiwgTHRkLgotMDAwNUY0ICAgICAoYmFzZSAxNikJCVN5c3RlbSBCYXNlIENvLiwgTHRkLgotCQkJCTQ3NS0yMiwgQmFuZ0JhZSAyIGRvbmcsCi0JCQkJU2VvY2hvIGd1LCBTZW91bCwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtRjUgICAoaGV4KQkJT1lPIEdlb3NwYWNlCi0wMDA1RjUgICAgIChiYXNlIDE2KQkJT1lPIEdlb3NwYWNlCi0JCQkJNzAwNyBQaW5lbW9udAotCQkJCUhvdXN0b24gVFggNzcwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUY2ICAgKGhleCkJCVlvdW5nIENoYW5nIENvLiBMdGQuCi0wMDA1RjYgICAgIChiYXNlIDE2KQkJWW91bmcgQ2hhbmcgQ28uIEx0ZC4KLQkJCQkxNDMyIE1haW4gU3RyZWV0Ci0JCQkJV2FsdGhhbSBNQSAwMjQ1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRjcgICAoaGV4KQkJQW5hbG9nIERldmljZXMsIEluYy4KLTAwMDVGNyAgICAgKGJhc2UgMTYpCQlBbmFsb2cgRGV2aWNlcywgSW5jLgotCQkJCTgwNCBXb2J1cm4gU3QuLCBNUyAxMTEKLQkJCQlXaWxtaW5ndG9uIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1GOCAgIChoZXgpCQlSZWFsIFRpbWUgQWNjZXNzLCBJbmMuCi0wMDA1RjggICAgIChiYXNlIDE2KQkJUmVhbCBUaW1lIEFjY2VzcywgSW5jLgotCQkJCTQ1NSBOLiBDYW55b25zIFBrd3kuCi0JCQkJU3VpdGUgQgotCQkJCUxpdmVybW9yZSBDQSA5NDU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRjkgICAoaGV4KQkJVE9BIENvcnBvcmF0aW9uCi0wMDA1RjkgICAgIChiYXNlIDE2KQkJVE9BIENvcnBvcmF0aW9uCi0JCQkJMi0xIFRha2FtYXRzdS1jaG8sCi0JCQkJVGFrYXJhenVrYS1jaXR5Ci0JCQkJSHlvZ28gIDY2NS0wMDQzCi0JCQkJSkFQQU4KLQotMDAtMDUtRkEgICAoaGV4KQkJSVBPcHRpY2FsLCBJbmMuCi0wMDA1RkEgICAgIChiYXNlIDE2KQkJSVBPcHRpY2FsLCBJbmMuCi0JCQkJNDU5NDAgSG9yc2VzaG9lIERyaXZlCi0JCQkJU3VpdGUgMTUwCi0JCQkJRHVsbGVzIFZBIDIwMTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1GQiAgIChoZXgpCQlTaGFyZUdhdGUsIEluYy4KLTAwMDVGQiAgICAgKGJhc2UgMTYpCQlTaGFyZUdhdGUsIEluYy4KLQkJCQk5ODA1IERvdWJsZSBSIEJsdmQuCi0JCQkJVGhpcmQgRmxvb3IKLQkJCQlSZW5vIE5WIDg5NTExLTU5MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUZDICAgKGhleCkJCVNjaGVuY2sgUGVnYXN1cyBDb3JwLgotMDAwNUZDICAgICAoYmFzZSAxNikJCVNjaGVuY2sgUGVnYXN1cyBDb3JwLgotCQkJCTI4OTAgSm9obiBSIFJvYWQKLQkJCQlUcm95IE1JIDQ4MDgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1GRCAgIChoZXgpCQlQYWNrZXRMaWdodCBOZXR3b3JrcyBMdGQuCi0wMDA1RkQgICAgIChiYXNlIDE2KQkJUGFja2V0TGlnaHQgTmV0d29ya3MgTHRkLgotCQkJCTI3IEhhYmFyemVsIFN0LgotCQkJCVJhbWF0IEhhaGF5YWwKLQkJCQlUZWwtQXZpdiAgNjk3MTAKLQkJCQlJU1JBRUwKLQotMDAtMDUtRkUgICAoaGV4KQkJVHJhZmljb24gTi5WLgotMDAwNUZFICAgICAoYmFzZSAxNikJCVRyYWZpY29uIE4uVi4KLQkJCQlCaXNzZWdlbXNlc3RyYWF0IDQ1Ci0JCQkJQi04NTAxIEhldWxlCi0JCQkJQkVMR0lVTQotCi0wMC0wNS1GRiAgIChoZXgpCQlTTlMgU29sdXRpb25zLCBJbmMuCi0wMDA1RkYgICAgIChiYXNlIDE2KQkJU05TIFNvbHV0aW9ucywgSW5jLgotCQkJCTJuZCBGbC4gSGlsbCBIb3VzZSwKLQkJCQk5OS0yIFNvaHl1biwgQnVuZGFuZywgU3VuZ25hbSwgS3l1bmdnaSwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtMDAgICAoaGV4KQkJVG9zaGliYSBUZWxpIENvcnBvcmF0aW9uCi0wMDA2MDAgICAgIChiYXNlIDE2KQkJVG9zaGliYSBUZWxpIENvcnBvcmF0aW9uCi0JCQkJIDQtNy0xIEFzYWhpZ2Fva2EsIEhpbm8tU2hpLAotCQkJCVRva3lvIDE5MS0wMDY1Ci0JCQkJSkFQQU4KLQotMDAtMDYtMDEgICAoaGV4KQkJT3RhbmlrZWlraSBDby4sIEx0ZC4KLTAwMDYwMSAgICAgKGJhc2UgMTYpCQlPdGFuaWtlaWtpIENvLiwgTHRkLgotCQkJCTItMTAtMjMgSGlrYXJpLU1hY2hpCi0JCQkJSGlnYXNoaS1LdSBIaXJvc2hpbWEKLQkJCQk3MzItMDA1MgotCQkJCUpBUEFOCi0KLTAwLTA2LTAyICAgKGhleCkJCUNpcmtpdGVjaCBFbGVjdHJvbmljcyBDby4KLTAwMDYwMiAgICAgKGJhc2UgMTYpCQlDaXJraXRlY2ggRWxlY3Ryb25pY3MgQ28uCi0JCQkJQjEtMiwgTm8uIDM2MSwgRnUtWGluZyBGaXJzdCBSb2FkCi0JCQkJR3VlaS1TaGFuIEhzaWFuZywKLQkJCQlUYW8tWXVhbiAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTAzICAgKGhleCkJCUJha2VyIEh1Z2hlcyBJbmMuCi0wMDA2MDMgICAgIChiYXNlIDE2KQkJQmFrZXIgSHVnaGVzIEluYy4KLQkJCQkyMDAxIFJhbmtpbiBSZC4KLQkJCQlIb3VzdG9uIFRYIDc3MDczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0wNCAgIChoZXgpCQlAVHJhY2sgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDYwNCAgICAgKGJhc2UgMTYpCQlAVHJhY2sgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkxMTU1IEthcyBEci4KLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0wNSAgIChoZXgpCQlJbm5jb20gSW50ZXJuYXRpb25hbCwgSW5jLgotMDAwNjA1ICAgICAoYmFzZSAxNikJCUlubmNvbSBJbnRlcm5hdGlvbmFsLCBJbmMuCi0JCQkJUC5PLiBCb3ggMTA2MAotCQkJCTgzIEhhbGxzIFJvYWQKLQkJCQlPbGQgTHltZSBDVCAwNjM3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMDYgICAoaGV4KQkJUmFwaWRXQU4sIEluYy4KLTAwMDYwNiAgICAgKGJhc2UgMTYpCQlSYXBpZFdBTiwgSW5jLgotCQkJCTIwODUgSGFtaWx0b24gQXZlLgotCQkJCVN1aXRlICMyMjAKLQkJCQlTYW4gSm9zZSBDQSA5NTEyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMDcgICAoaGV4KQkJT21uaSBEaXJlY3Rpb25hbCBDb250cm9sIFRlY2hub2xvZ3kgSW5jLgotMDAwNjA3ICAgICAoYmFzZSAxNikJCU9tbmkgRGlyZWN0aW9uYWwgQ29udHJvbCBUZWNobm9sb2d5IEluYy4KLQkJCQk4Ri0yLCBOby4gOTQsIFBhby1DaHVuZyBSZC4KLQkJCQlIc2luLVRpZW4gQ2l0eSwKLQkJCQlUYWlwZWkgSHNpZW4sIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtMDggICAoaGV4KQkJQXQtU2t5IFNBUwotMDAwNjA4ICAgICAoYmFzZSAxNikJCUF0LVNreSBTQVMKLQkJCQlaSSBBdGhlbGlhIDMsIFZvaSBBdGxhcwotCQkJCTEzNjAwLSBMYSBDaW90YXQKLQkJCQlGUkFOQ0UKLQotMDAtMDYtMDkgICAoaGV4KQkJQ3Jvc3Nwb3J0IFN5c3RlbXMKLTAwMDYwOSAgICAgKGJhc2UgMTYpCQlDcm9zc3BvcnQgU3lzdGVtcwotCQkJCTEwOTQwIE5FIDMzcmQgUGwuCi0JCQkJU3VpdGUgMTAxCi0JCQkJQmVsbGV2dWUgV0EgOTgwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTBBICAgKGhleCkJCUJsdWUyc3BhY2UKLTAwMDYwQSAgICAgKGJhc2UgMTYpCQlCbHVlMnNwYWNlCi0JCQkJQXJzdGFhbmdzdi4gOQotCQkJCVNFLTExNzQ4IFN0b2NraG9sbQotCQkJCVNXRURFTgotCi0wMC0wNi0wQiAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIKLTAwMDYwQiAgICAgKGJhc2UgMTYpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIKLQkJCQkyOTAwIFMuIERpYWJsbyBXYXkgU3VpdGUgMTkwCi0JCQkJVGVtcGUgQVogODUyODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTBDICAgKGhleCkJCU1lbGNvIEluZHVzdHJpZXMsIEluYy4KLTAwMDYwQyAgICAgKGJhc2UgMTYpCQlNZWxjbyBJbmR1c3RyaWVzLCBJbmMuCi0JCQkJMTU3NSBXLiAxMjR0aCBBdmUuCi0JCQkJRGVudmVyIENPIDgwMjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0wRCAgIChoZXgpCQlXYXZlNyBPcHRpY3MKLTAwMDYwRCAgICAgKGJhc2UgMTYpCQlXYXZlNyBPcHRpY3MKLQkJCQkxMDc1IFdpbmR3YXJkIFJpZGdlIFBrd3kuCi0JCQkJU3VpdGUgMTcwCi0JCQkJQWxwaGFyZXR0YSBHQSAzMDAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMEUgICAoaGV4KQkJSUdZUyBTeXN0ZW1zLCBJbmMuCi0wMDA2MEUgICAgIChiYXNlIDE2KQkJSUdZUyBTeXN0ZW1zLCBJbmMuCi0JCQkJNzM3MyBMaW5jb2xuIFdheQotCQkJCUdhcmRlbiBHcm92ZSBDQSA5Mjg0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMEYgICAoaGV4KQkJTmFyYWQgTmV0d29ya3MgSW5jCi0wMDA2MEYgICAgIChiYXNlIDE2KQkJTmFyYWQgTmV0d29ya3MgSW5jCi0JCQkJNTE1IEdyb3RvbiBSb2FkCi0JCQkJV2VzdGZvcmQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTEwICAgKGhleCkJCUFiZW9uYSBOZXR3b3JrcyBJbmMKLTAwMDYxMCAgICAgKGJhc2UgMTYpCQlBYmVvbmEgTmV0d29ya3MgSW5jCi0JCQkJNDYxMTcgTGFuZGluZyBQYXJrd2F5Ci0JCQkJRnJlbW9udCBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMTEgICAoaGV4KQkJWmV1cyBXaXJlbGVzcywgSW5jLgotMDAwNjExICAgICAoYmFzZSAxNikJCVpldXMgV2lyZWxlc3MsIEluYy4KLQkJCQk4MzI1IEd1aWxmb3JkIFJvYWQKLQkJCQlDb2x1bWJpYSBNRCAyMTA0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMTIgICAoaGV4KQkJQWNjdXN5cywgSW5jLgotMDAwNjEyICAgICAoYmFzZSAxNikJCUFjY3VzeXMsIEluYy4KLQkJCQk1RiwgTm8uIDM4LCBUYWl5dWFuIFN0Ci0JCQkJSmh1YmVpIENpdHkKLQkJCQlIc2luY2h1IENvdW50eSAgMzAyNjUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTEzICAgKGhleCkJCUthd2FzYWtpIE1pY3JvZWxlY3Ryb25pY3MgSW5jb3Jwb3JhdGVkCi0wMDA2MTMgICAgIChiYXNlIDE2KQkJS2F3YXNha2kgTWljcm9lbGVjdHJvbmljcyBJbmNvcnBvcmF0ZWQKLQkJCQlNVEcgQi01LCAxLTMsIE5ha2FzZSwKLQkJCQlNaWhhbWEta3UgQ2hpYmEgMjYxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0wNi0xNCAgIChoZXgpCQlQcmlzbSBIb2xkaW5ncwotMDAwNjE0ICAgICAoYmFzZSAxNikJCVByaXNtIEhvbGRpbmdzCi0JCQkJUC5PLiBCb3ggOTAxLAotCQkJCVdpdGtvcHBlbiwgMjA2OCwKLQkJCQlHYXV0ZW5nICAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMDYtMTUgICAoaGV4KQkJS2ltb3RvIEVsZWN0cmljIENvLiwgTHRkLgotMDAwNjE1ICAgICAoYmFzZSAxNikJCUtpbW90byBFbGVjdHJpYyBDby4sIEx0ZC4KLQkJCQkzLTEgRnVuYWhhc2hpLUNobywKLQkJCQlUZW5ub2ppLUt1LCBPc2FrYQotCQkJCTU0My0wMDI0Ci0JCQkJSkFQQU4KLQotMDAtMDYtMTYgICAoaGV4KQkJVGVsIE5ldCBDby4sIEx0ZC4KLTAwMDYxNiAgICAgKGJhc2UgMTYpCQlUZWwgTmV0IENvLiwgTHRkLgotCQkJCTNGIEJPRiBCbGRnIDczMC0xNSBHb2plIFNvbmcKLQkJCQlZZW9uamUgR3UgUHVzYW0gNjExLTA3MywKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtMTcgICAoaGV4KQkJUmVkc3dpdGNoIEluYy4KLTAwMDYxNyAgICAgKGJhc2UgMTYpCQlSZWRzd2l0Y2ggSW5jLgotCQkJCTE4MTUgTWNDYW5kbGVzcyBEcml2ZQotCQkJCU1pbHBpdGFzIENBIDk1MDM1LTgwNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTE4ICAgKGhleCkJCURpZ2lQb3dlciBNYW51ZmFjdHVyaW5nIEluYy4KLTAwMDYxOCAgICAgKGJhc2UgMTYpCQlEaWdpUG93ZXIgTWFudWZhY3R1cmluZyBJbmMuCi0JCQkJTm8uIDExNCwgRmxvb3IgMTMsIFNlYy4gMSwKLQkJCQlIc2luIFRhaSBXdSBSb2FkLCBTaGlqciBDaXR5LAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi0xOSAgIChoZXgpCQlDb25uZWN0aW9uIFRlY2hub2xvZ3kgU3lzdGVtcwotMDAwNjE5ICAgICAoYmFzZSAxNikJCUNvbm5lY3Rpb24gVGVjaG5vbG9neSBTeXN0ZW1zCi0JCQkJMThGLTYsIE5vLiA3OSwgU2VjLiAxLAotCQkJCUhzaW4gVGFpIFd1IFJkLgotCQkJCUhzaW5jaGloIFRhaXBlaSwgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi0xQSAgIChoZXgpCQlaZXRhcmkgSW5jLgotMDAwNjFBICAgICAoYmFzZSAxNikJCVpldGFyaSBJbmMuCi0JCQkJNDExIFdhdmVybHkgT2FrcyBSZC4KLQkJCQlTdWl0ZSAzMjMKLQkJCQlXYWx0aGFtIE1BIDAyNDUyLTg0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTFCICAgKGhleCkJCU5vdGVib29rIERldmVsb3BtZW50IExhYi4gIExlbm92byBKYXBhbiBMdGQuCi0wMDA2MUIgICAgIChiYXNlIDE2KQkJTm90ZWJvb2sgRGV2ZWxvcG1lbnQgTGFiLiAgTGVub3ZvIEphcGFuIEx0ZC4KLQkJCQkxNjIzLTE0IFNoaW1vdHN1cnVtYQotCQkJCVlhbWF0by1zaGkgS2FuYWdhd2Eta2VuCi0JCQkJMjQyLTg1MDIKLQkJCQlKQVBBTgotCi0wMC0wNi0xQyAgIChoZXgpCQlIb3NoaW5vIE1ldGFsIEluZHVzdHJpZXMsIEx0ZC4KLTAwMDYxQyAgICAgKGJhc2UgMTYpCQlIb3NoaW5vIE1ldGFsIEluZHVzdHJpZXMsIEx0ZC4KLQkJCQk2NDUgWWFtYW5va2FtaSwgWWFidXRzdWthLAotCQkJCU5pdHRhLWd1biwgR3VubWEKLQkJCQkzNzktMjMwMgotCQkJCUpBUEFOCi0KLTAwLTA2LTFEICAgKGhleCkJCU1JUCBUZWxlY29tLCBJbmMuCi0wMDA2MUQgICAgIChiYXNlIDE2KQkJTUlQIFRlbGVjb20sIEluYy4KLQkJCQkzcmQgRmxvb3IsIFNhbmdpbCBCTERHLAotCQkJCTk0OC0xNiwgQm9uZ2NoZW9uZG9uZywgR3dhbmFra3UsCi0JCQkJU2VvdWwgIDE1MS0wNjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtMUUgICAoaGV4KQkJTWF4YW4gU3lzdGVtcwotMDAwNjFFICAgICAoYmFzZSAxNikJCU1heGFuIFN5c3RlbXMKLQkJCQkxLTg0LCBXb3VsYW0tZG9uZwotCQkJCVNhbHNlby1ndSwgREFFR1UsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTFGICAgKGhleCkJCVZpc2lvbiBDb21wb25lbnRzIEdtYkgKLTAwMDYxRiAgICAgKGJhc2UgMTYpCQlWaXNpb24gQ29tcG9uZW50cyBHbWJICi0JCQkJT3R0b3N0ci4gMgotCQkJCUV0dGxpbmdlbiwgNzYyNzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTIwICAgKGhleCkJCVNlcmlhbCBTeXN0ZW0gTHRkLgotMDAwNjIwICAgICAoYmFzZSAxNikJCVNlcmlhbCBTeXN0ZW0gTHRkLgotCQkJCTc2IFBsYXlmYWlyIFJvYWQKLQkJCQkjMDQtMDMgTEhLMiBCdWlsZGluZwotCQkJCTM2Nzk5NgotCQkJCVNJTkdBUE9SRQotCi0wMC0wNi0yMSAgIChoZXgpCQlIaW5veCwgQ28uLCBMdGQuCi0wMDA2MjEgICAgIChiYXNlIDE2KQkJSGlub3gsIENvLiwgTHRkLgotCQkJCTE1LTcgMy1jaG9tZSwgU2VubmluLWNobywKLQkJCQlIYWNoaW9qaS1DaXR5LCBUb2t5bywKLQkJCQkxOTMtMDgzNQotCQkJCUpBUEFOCi0KLTAwLTA2LTIyICAgKGhleCkJCUNodW5nIEZ1IENoZW4gWWVoIEVudGVycHJpc2UgQ29ycC4KLTAwMDYyMiAgICAgKGJhc2UgMTYpCQlDaHVuZyBGdSBDaGVuIFllaCBFbnRlcnByaXNlIENvcnAuCi0JCQkJMkYgTm8uIDY2NiBKaW5nIFBpbmcgUm9hZCwKLQkJCQlDaHVuZyBIbyBDaXR5LAotCQkJCVRhaXBlaSBIc2llbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi0yMyAgIChoZXgpCQlNR0UgVVBTIFN5c3RlbXMgRnJhbmNlCi0wMDA2MjMgICAgIChiYXNlIDE2KQkJTUdFIFVQUyBTeXN0ZW1zIEZyYW5jZQotCQkJCTE0MCBBdmVudWUgSmVhbiBLdW50em1hbm4KLQkJCQlaaXJzdCBNb250Ym9ubm90IFN0IE1hcnRpbiAzODMzNCBTdCBJc21pCi0JCQkJRlJBTkNFCi0KLTAwLTA2LTI0ICAgKGhleCkJCUdlbnRuZXIgQ29tbXVuaWNhdGlvbnMgQ29ycC4KLTAwMDYyNCAgICAgKGJhc2UgMTYpCQlHZW50bmVyIENvbW11bmljYXRpb25zIENvcnAuCi0JCQkJMTgyNSBSZXNlYXJjaCBXYXkKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMjUgICAoaGV4KQkJVGhlIExpbmtzeXMgR3JvdXAsIEluYy4KLTAwMDYyNSAgICAgKGJhc2UgMTYpCQlUaGUgTGlua3N5cyBHcm91cCwgSW5jLgotCQkJCTE3NDAxIEFybXN0cm9uZyBBdmUuCi0JCQkJSXJ2aW5lIENBIDkyNjE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0yNiAgIChoZXgpCQlNV0UgR21iSAotMDAwNjI2ICAgICAoYmFzZSAxNikJCU1XRSBHbWJICi0JCQkJT2xicmljaHRzdHIuIDIxCi0JCQkJRC02OTQ2OSBXZWluaGVpbQotCQkJCUdFUk1BTlkKLQotMDAtMDYtMjcgICAoaGV4KQkJVW5pd2lkZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDYyNyAgICAgKGJhc2UgMTYpCQlVbml3aWRlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCUtvcmVhIERldmVsb3BtZW50IEJhbmsgQi9EIDV0aCBGbHIKLQkJCQlEdW5zYW5kb25nLCBTZW9ndSwKLQkJCQlUYWVqb24gMzAyLTEyMiwgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTI4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDYyOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0yOSAgIChoZXgpCQlJQk0gQ29ycAotMDAwNjI5ICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAuTy4gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0yQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA2MkEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMkIgICAoaGV4KQkJSU5UUkFTRVJWRVIgVEVDSE5PTE9HWQotMDAwNjJCICAgICAoYmFzZSAxNikJCUlOVFJBU0VSVkVSIFRFQ0hOT0xPR1kKLQkJCQlTRVZFTiBPQ1RPQkVSIEhJTEwgUkQuCi0JCQkJSE9MTElTVE9OIE1BIDAxNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0yQyAgIChoZXgpCQlCaXZpbyBOZXR3b3JrcwotMDAwNjJDICAgICAoYmFzZSAxNikJCUJpdmlvIE5ldHdvcmtzCi0JCQkJNDQ1NyBXaWxsb3cgUm9hZCwKLQkJCQlQbGVhc2FudG9uIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0yRCAgIChoZXgpCQlUb3VjaFN0YXIgVGVjaG5vbG9naWVzLCBMLkwuQy4KLTAwMDYyRCAgICAgKGJhc2UgMTYpCQlUb3VjaFN0YXIgVGVjaG5vbG9naWVzLCBMLkwuQy4KLQkJCQk1MTQ3IFNvdXRoIEdhcm5ldHQgUm9hZAotCQkJCVN1aXRlIEEKLQkJCQlUdWxzYSBPSyA3NDE0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMkUgICAoaGV4KQkJQXJpc3RvcyBMb2dpYyBDb3JwLgotMDAwNjJFICAgICAoYmFzZSAxNikJCUFyaXN0b3MgTG9naWMgQ29ycC4KLQkJCQkyNzA1MSBUb3duZSBDZW50cmUgRHIuCi0JCQkJU3VpdGUgMjkwCi0JCQkJRm9vdGhpbGwgUmFuY2ggQ0EgOTI2MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTJGICAgKGhleCkJCVBpdm90ZWNoIFN5c3RlbXMgSW5jLgotMDAwNjJGICAgICAoYmFzZSAxNikJCVBpdm90ZWNoIFN5c3RlbXMgSW5jLgotCQkJCTIwMCBDZW50ZW5uaWFsIEF2ZS4sCi0JCQkJU3VpdGUgMjIyCi0JCQkJUGlzY2F0YXdheSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMzAgICAoaGV4KQkJQWR0cmFueiBTd2VkZW4KLTAwMDYzMCAgICAgKGJhc2UgMTYpCQlBZHRyYW56IFN3ZWRlbgotCQkJCURlcHQuIFRDQy9USAotCQkJCU9zdHJhcmluZ3ZhZ2VuIDIgNzIxNzMgVmFzdGVyYXMKLQkJCQlTV0VERU4KLQotMDAtMDYtMzEgICAoaGV4KQkJT3B0aWNhbCBTb2x1dGlvbnMsIEluYy4KLTAwMDYzMSAgICAgKGJhc2UgMTYpCQlPcHRpY2FsIFNvbHV0aW9ucywgSW5jLgotCQkJCTE2MzA1IDM2dGggQXZlLiBOLgotCQkJCVN1aXRlIDMwMAotCQkJCVBseW1vdXRoIE1OIDU1NDQ2LTI2OTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTMyICAgKGhleCkJCU1lc2NvIEVuZ2luZWVyaW5nIEdtYkgKLTAwMDYzMiAgICAgKGJhc2UgMTYpCQlNZXNjbyBFbmdpbmVlcmluZyBHbWJICi0JCQkJV2llc2VudGFsc3RyYXNzZSA3NAotCQkJCTc5NTM5IExvcnJhY2gKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTMzICAgKGhleCkJCUNyb3NzIE1hdGNoIFRlY2hub2xvZ2llcyBHbWJICi0wMDA2MzMgICAgIChiYXNlIDE2KQkJQ3Jvc3MgTWF0Y2ggVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlVbnN0cnV0d2VnIDQKLQkJCQlKZW5hIDA3NzQzCi0JCQkJR0VSTUFOWQotCi0wMC0wNi0zNCAgIChoZXgpCQlHVEUgQWlyZm9uZSBJbmMuCi0wMDA2MzQgICAgIChiYXNlIDE2KQkJR1RFIEFpcmZvbmUgSW5jLgotCQkJCTI4MDkgQnV0dGVyZmllbGQKLQkJCQlPYWticm9vayBJTCA2MDUyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMzUgICAoaGV4KQkJUGFja2V0QWlyIE5ldHdvcmtzLCBJbmMuCi0wMDA2MzUgICAgIChiYXNlIDE2KQkJUGFja2V0QWlyIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTE1NDUgVy4gQmVybmFyZG8gQ3QuCi0JCQkJU3VpdGUgMTAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0zNiAgIChoZXgpCQlKZWRhaSBCcm9hZGJhbmQgTmV0d29ya3MKLTAwMDYzNiAgICAgKGJhc2UgMTYpCQlKZWRhaSBCcm9hZGJhbmQgTmV0d29ya3MKLQkJCQkzMzEgTmV3bWFuIFNwcmluZ3MgUmQuCi0JCQkJQnVpbGRpbmcgMSwgMm5kIEZsb29yCi0JCQkJUmVkIEJhbmsgTkogMDc3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTM3ICAgKGhleCkJCVRvcHRyZW5kLU1ldGEgSW5mb3JtYXRpb24gKFNoZW5aaGVuKSBJbmMuCi0wMDA2MzcgICAgIChiYXNlIDE2KQkJVG9wdHJlbmQtTWV0YSBJbmZvcm1hdGlvbiAoU2hlblpoZW4pIEluYy4KLQkJCQkyL0YsIEJsZGcuIDMsIFNlY3Rpb24gQSwgTm9yLUVhc3QgWm9uZQotCQkJCUVhc3Rlcm4gSW5kdXN0cmlhbCBBcmVhLCBPdmVyc2VhcyBDaXR5LAotCQkJCUNISU5BCi0KLTAwLTA2LTM4ICAgKGhleCkJCVN1bmdqaW4gQyZDIENvLiwgTHRkLgotMDAwNjM4ICAgICAoYmFzZSAxNikJCVN1bmdqaW4gQyZDIENvLiwgTHRkLgotCQkJCTE1NDMtNiwgU2VvY2hvLWRvbmcsIFNlb2Noby1ndSwKLQkJCQlTZW91bCAgMTM3LTA3MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi0zOSAgIChoZXgpCQlOZXd0ZWMKLTAwMDYzOSAgICAgKGJhc2UgMTYpCQlOZXd0ZWMKLQkJCQlMYWFyc3RyYWF0IDUKLQkJCQlCLTkxMDAgU2ludC1OaWtsYWFzCi0JCQkJQkVMR0lVTQotCi0wMC0wNi0zQSAgIChoZXgpCQlEdXJhIE1pY3JvLCBJbmMuCi0wMDA2M0EgICAgIChiYXNlIDE2KQkJRHVyYSBNaWNybywgSW5jLgotCQkJCTEzNTgwIEZpZnRoIFN0cmVldAotCQkJCUNoaW5vIENBIDkxNzEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0zQiAgIChoZXgpCQlBcmN0dXJ1cyBOZXR3b3JrcywgSW5jLgotMDAwNjNCICAgICAoYmFzZSAxNikJCUFyY3R1cnVzIE5ldHdvcmtzLCBJbmMuCi0JCQkJNzAxIEV2YW5zIEF2ZS4gLSBTdWl0ZSAzMDAKLQkJCQlUb3JvbnRvIE9udGFyaW8gTTlDIDFBMwotCQkJCUNBTkFEQQotCi0wMC0wNi0zQyAgIChoZXgpCQlJbnRyaW5zeWMgRXVyb3BlIEx0ZAotMDAwNjNDICAgICAoYmFzZSAxNikJCUludHJpbnN5YyBFdXJvcGUgTHRkCi0JCQkJNzAwIFdlc3QgUGVuZGVyIFN0cmVldCwgMTB0aCBGbG9vciwKLQkJCQlWYW5jb3V2ZXIsIEJDLCBWNkMgMUc4Ci0JCQkJQ0FOQURBCi0KLTAwLTA2LTNEICAgKGhleCkJCU1pY3Jvd2F2ZSBEYXRhIFN5c3RlbXMgSW5jLgotMDAwNjNEICAgICAoYmFzZSAxNikJCU1pY3Jvd2F2ZSBEYXRhIFN5c3RlbXMgSW5jLgotCQkJCTE3NSBTY2llbmNlIFBhcmt3YXkKLQkJCQlSb2NoZXN0ZXIgTlkgMTQ2MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTNFICAgKGhleCkJCU9wdGhvcyBJbmMuCi0wMDA2M0UgICAgIChiYXNlIDE2KQkJT3B0aG9zIEluYy4KLQkJCQk1OTAgVGF5bG9yIFdheQotCQkJCVNhbiBDYXJsb3MgQ0EgOTQwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTNGICAgKGhleCkJCUV2ZXJleCBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDA2M0YgICAgIChiYXNlIDE2KQkJRXZlcmV4IENvbW11bmljYXRpb25zIEluYy4KLQkJCQk1MDIwQSBCcmFuZGluIEN0LgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTQwICAgKGhleCkJCVdoaXRlIFJvY2sgTmV0d29ya3MKLTAwMDY0MCAgICAgKGJhc2UgMTYpCQlXaGl0ZSBSb2NrIE5ldHdvcmtzCi0JCQkJU3VpdGUgIzkwMAotCQkJCTE4MTExIFByZXN0b24gUm9hZAotCQkJCURhbGxhcyBUWCA3NTI1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNDEgICAoaGV4KQkJSVRDTgotMDAwNjQxICAgICAoYmFzZSAxNikJCUlUQ04KLQkJCQk4NTcxIEdhbmRlciBDcmVlayBEcml2ZQotCQkJCU1pYW1pc2J1cmcgT0ggNDUzNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTQyICAgKGhleCkJCUdlbmV0ZWwgU3lzdGVtcyBJbmMuCi0wMDA2NDIgICAgIChiYXNlIDE2KQkJR2VuZXRlbCBTeXN0ZW1zIEluYy4KLQkJCQlNb2Nrd29vIEIvRCwgOTEyIFdhbHB5b3VuZy1Eb25nCi0JCQkJU2VvLUd1IFRhZWpvbiwKLQkJCQkzMDItODUyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTQzICAgKGhleCkJCVNPTk8gQ29tcHV0ZXIgQ28uLCBMdGQuCi0wMDA2NDMgICAgIChiYXNlIDE2KQkJU09OTyBDb21wdXRlciBDby4sIEx0ZC4KLQkJCQkxRi4sIE5vLiA4LCBBbGxleSAzNSwgTGFuZSA5MSwKLQkJCQlTZWMuIDEsIE5laS1IdSBSb2FkLAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi00NCAgIChoZXgpCQlOZWl4LEluYwotMDAwNjQ0ICAgICAoYmFzZSAxNikJCU5laXgsSW5jCi0JCQkJMy01LTMtMjQsIEhpZ2FzaGlzYXBwb3JvCi0JCQkJU2hpcm9pc2hpLWt1Ci0JCQkJU2FwcG9ybyBIb2trYWlkbyAwMDMtMDAwMwotCQkJCUpBUEFOCi0KLTAwLTA2LTQ1ICAgKGhleCkJCU1laXNlaSBFbGVjdHJpYyBDby4gTHRkLgotMDAwNjQ1ICAgICAoYmFzZSAxNikJCU1laXNlaSBFbGVjdHJpYyBDby4gTHRkLgotCQkJCTI0OS0xLCBNb3JpeWEta291LCBNb3JpeWEKLQkJCQlLaXRhc291bWEtR3VuLCBJYmFyYWtpCi0JCQkJMzAyLTAxOTIKLQkJCQlKQVBBTgotCi0wMC0wNi00NiAgIChoZXgpCQlTaGVuWmhlbiBYdW5CYW8gTmV0d29yayBUZWNobm9sb2d5IENvIEx0ZAotMDAwNjQ2ICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIFh1bkJhbyBOZXR3b3JrIFRlY2hub2xvZ3kgQ28gTHRkCi0JCQkJRjMsIFIyLUEgQnVpbGRpbmcsIFNvdXRoIERpc3RyaWN0Ci0JCQkJb2YgSGlnaC1UZWNoIEluZHVzdHJpYWwgUGFyaywKLQkJCQlTaGVuIFpoZW4gIAotCQkJCUNISU5BCi0KLTAwLTA2LTQ3ICAgKGhleCkJCUV0cmFsaSBTLkEuCi0wMDA2NDcgICAgIChiYXNlIDE2KQkJRXRyYWxpIFMuQS4KLQkJCQkyMjEsIFJ1ZSBMYSBGb250YWluZQotCQkJCTk0MTMyIEZvbnRlbmF5IFNvdXMgQm9pcyBDZWRleAotCQkJCUZSQU5DRQotCi0wMC0wNi00OCAgIChoZXgpCQlTZWVkc3dhcmUsIEluYy4KLTAwMDY0OCAgICAgKGJhc2UgMTYpCQlTZWVkc3dhcmUsIEluYy4KLQkJCQkgMy03LTE2IFRlY2hub3N0YWdlLAotCQkJCUl6dW1pLCBPc2FrYSA1OTQtMTE0NAotCQkJCUpBUEFOCi0KLTAwLTA2LTQ5ICAgKGhleCkJCTNNIERldXRzY2hsYW5kIEdtYkgKLTAwMDY0OSAgICAgKGJhc2UgMTYpCQkzTSBEZXV0c2NobGFuZCBHbWJICi0JCQkJQ2FybC1TY2h1cnotU3RyLiAxCi0JCQkJTmV1c3MgIEQtNDE0NTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTRBICAgKGhleCkJCUhvbmV5d2VsbCBDby4sIEx0ZC4gKEtPUkVBKQotMDAwNjRBICAgICAoYmFzZSAxNikJCUhvbmV5d2VsbCBDby4sIEx0ZC4gKEtPUkVBKQotCQkJCTU2LCBDaGFhbS1kb25nLCBDaG9uYW4tY2l0eQotCQkJCUNob29uZ2NoZW9uZ25hbS1kbywgMzMwLTIwMCwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtNEIgICAoaGV4KQkJQWxleG9uIENvLiwgTHRkLgotMDAwNjRCICAgICAoYmFzZSAxNikJCUFsZXhvbiBDby4sIEx0ZC4KLQkJCQkzLTIwNy0xIFRlcmFtb3RvLAotCQkJCUl0YW1pLCBIeW9nbyA2NjQtMDAyNgotCQkJCUpBUEFOCi0KLTAwLTA2LTRDICAgKGhleCkJCUludmljdGEgTmV0d29ya3MsIEluYy4KLTAwMDY0QyAgICAgKGJhc2UgMTYpCQlJbnZpY3RhIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTM4NzMgUGFyayBDZW50ZXIgUm9hZAotCQkJCVN1aXRlIDQwMAotCQkJCUhlcm5kb24gVkEgMjAxNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTREICAgKGhleCkJCVNlbmNvcmUKLTAwMDY0RCAgICAgKGJhc2UgMTYpCQlTZW5jb3JlCi0JCQkJMzIwMCBTZW5jb3JlIERyLgotCQkJCVNpb3V4IEZhbGxzIFNEIDU3MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi00RSAgIChoZXgpCQlCcm9hZCBOZXQgVGVjaG5vbG9neSBJbmMuCi0wMDA2NEUgICAgIChiYXNlIDE2KQkJQnJvYWQgTmV0IFRlY2hub2xvZ3kgSW5jLgotCQkJCTVGLCBOby41OCwgTGFuZSAxODgsIFJ1aSBLdWFuZyBSb2FkCi0JCQkJTmVpaHUgRGlzdHJpY3QsIFRhaXBlaSAxMTQsCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi00RiAgIChoZXgpCQlQUk8tTkVUUyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDA2NEYgICAgIChiYXNlIDE2KQkJUFJPLU5FVFMgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCVBhby1DaHVuZyBSb2FkLAotCQkJCU5vLiA5MiwgMTBGLTEKLQkJCQlIc2luIFRpZW4gVGFpcGVpLCAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTUwICAgKGhleCkJCVRpYnVyb24gTmV0d29ya3MsIEluYy4KLTAwMDY1MCAgICAgKGJhc2UgMTYpCQlUaWJ1cm9uIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjAwIE1pbnV0ZW1hbiBSZC4KLQkJCQlTdWl0ZSAyQgotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTUxICAgKGhleCkJCUFzcGVuIE5ldHdvcmtzIEluYy4KLTAwMDY1MSAgICAgKGJhc2UgMTYpCQlBc3BlbiBOZXR3b3JrcyBJbmMuCi0JCQkJMzc3NyBTdGV2ZW5zIENyZWVrIEJsdmQKLQkJCQlTdWl0ZSAzMzAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNTIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNjUyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTUzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDY1MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01NCAgIChoZXgpCQlXaW5wcmVzYSBCdWlsZGluZyBBdXRvbWF0aW9uIFRlY2hub2xvZ2llcyBHbWJICi0wMDA2NTQgICAgIChiYXNlIDE2KQkJV2lucHJlc2EgQnVpbGRpbmcgQXV0b21hdGlvbiBUZWNobm9sb2dpZXMgR21iSAotCQkJCVZpdmVub3RnYXNzZSA1My8yCi0JCQkJQS0xMTIwIFZpZW5uYQotCQkJCUFVU1RSSUEKLQotMDAtMDYtNTUgICAoaGV4KQkJWWlwZWUsIEluYy4KLTAwMDY1NSAgICAgKGJhc2UgMTYpCQlZaXBlZSwgSW5jLgotCQkJCTU1NSBJbnRlcm5hdGlvbmFsIERyaXZlCi0JCQkJU3VpdGUgODAwCi0JCQkJV2lsbGlhbXN2aWxsZSBOWSAxNDIyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNTYgICAoaGV4KQkJVGFjdGVsIEFCCi0wMDA2NTYgICAgIChiYXNlIDE2KQkJVGFjdGVsIEFCCi0JCQkJTm9ycmEgVmFsbGdhdGFuIDY0Ci0JCQkJU0UtMjExIDIyIE1hbG1vCi0JCQkJU1dFREVOCi0KLTAwLTA2LTU3ICAgKGhleCkJCU1hcmtldCBDZW50cmFsLCBJbmMuCi0wMDA2NTcgICAgIChiYXNlIDE2KQkJTWFya2V0IENlbnRyYWwsIEluYy4KLQkJCQk1MDAgQnVzaW5lc3MgQ2VudGVyIERyaXZlCi0JCQkJUGl0dHNidXJnaCBQQSAxNTIwNS0xMzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01OCAgIChoZXgpCQlIZWxtdXQgRmlzY2hlciBHbWJIIEluc3RpdHV0IGb8ciBFbGVrdHJvbmlrIHVuZCBNZXNzdGVjaG5pawotMDAwNjU4ICAgICAoYmFzZSAxNikJCUhlbG11dCBGaXNjaGVyIEdtYkggSW5zdGl0dXQgZvxyIEVsZWt0cm9uaWsgdW5kIE1lc3N0ZWNobmlrCi0JCQkJSW5kdXN0cmlhQmUyMQotCQkJCTcxMDY5IFNpbmRlZmluZ2VuCi0JCQkJR0VSTUFOWQotCi0wMC0wNi01OSAgIChoZXgpCQlFQUwgKEFwZWxkb29ybikgQi5WLgotMDAwNjU5ICAgICAoYmFzZSAxNikJCUVBTCAoQXBlbGRvb3JuKSBCLlYuCi0JCQkJTW9sZW5tYWtlcnNob2VrIDE0Ci0JCQkJSksgQXBlbGRvb3JuICA3MzI4Ci0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDYtNUEgICAoaGV4KQkJU3RyaXggU3lzdGVtcwotMDAwNjVBICAgICAoYmFzZSAxNikJCVN0cml4IFN5c3RlbXMKLQkJCQkzMTAgTi4gV2VzdGxha2UgQmx2ZC4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlXZXN0bGFrZSBWaWxsYWdlIENBIDkxMzYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01QiAgIChoZXgpCQlEZWxsIENvbXB1dGVyIENvcnAuCi0wMDA2NUIgICAgIChiYXNlIDE2KQkJRGVsbCBDb21wdXRlciBDb3JwLgotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVFggNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTVDICAgKGhleCkJCU1hbGFjaGl0ZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDY1QyAgICAgKGJhc2UgMTYpCQlNYWxhY2hpdGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTk1IE5ldyBIYW1wc2hpcmUgQXZlbnVlCi0JCQkJU3VpdGUgMTUwCi0JCQkJUG9ydHNtb3V0aCBOSCAwMzgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNUQgICAoaGV4KQkJSGVpZGVsYmVyZyBXZWIgU3lzdGVtcwotMDAwNjVEICAgICAoYmFzZSAxNikJCUhlaWRlbGJlcmcgV2ViIFN5c3RlbXMKLQkJCQkxMjEgVGVjaG5vbG9neSBEci4KLQkJCQlEdXJoYW0gTkggMDM4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTVFICAgKGhleCkJCVBob3R1cmlzLCBJbmMuCi0wMDA2NUUgICAgIChiYXNlIDE2KQkJUGhvdHVyaXMsIEluYy4KLQkJCQkyMCBDb3Jwb3JhdGUgUGxhY2UgU291dGgKLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01RiAgIChoZXgpCQlFQ0kgVGVsZWNvbSAtIE5HVFMgTHRkLgotMDAwNjVGICAgICAoYmFzZSAxNikJCUVDSSBUZWxlY29tIC0gTkdUUyBMdGQuCi0JCQkJMzAgSGFzaXZpbSBTdC4KLQkJCQlQZXRhaC1UaWt2YSA0OTEzMAotCQkJCUlTUkFFTAotCi0wMC0wNi02MCAgIChoZXgpCQlOQURFWCBDby4sIEx0ZC4KLTAwMDY2MCAgICAgKGJhc2UgMTYpCQlOQURFWCBDby4sIEx0ZC4KLQkJCQkxIE9taXlhbWFlLCBUb2t1c2hpZ2UsCi0JCQkJTmlzaGloYXJ1LWN5bywgTmlzaGlrYXN1Z2FpLWd1biwKLQkJCQlBaWNoaSAgNDgxLTAwMzgKLQkJCQlKQVBBTgotCi0wMC0wNi02MSAgIChoZXgpCQlOSUEgSG9tZSBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMDY2MSAgICAgKGJhc2UgMTYpCQlOSUEgSG9tZSBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQlJbm5vdmF0aW9uIEluY3ViYXRvciwgTlRIVSwKLQkJCQkxMDEsIFNlYy4gMiwgS3VhbmcgRnUgUm9hZCwKLQkJCQlIc2luY2h1IDMwMDEzLCAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTYyICAgKGhleCkJCU1CTSBUZWNobm9sb2d5IEx0ZC4KLTAwMDY2MiAgICAgKGJhc2UgMTYpCQlNQk0gVGVjaG5vbG9neSBMdGQuCi0JCQkJVmljdG9yaWEgUmQuCi0JCQkJUG9ydHNsYWRlLCBCcmlnaHRvbiBTdXNzZXggQk40bCAxWUgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNi02MyAgIChoZXgpCQlIdW1hbiBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNjYzICAgICAoYmFzZSAxNikJCUh1bWFuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJM3JkIEZsLCBIeXVuZ29rIEJsZGcuLAotCQkJCTgzNi0yNSwgWXVrc2FtLURvbmcsCi0JCQkJS2FuZ25hbS1rdSBTZW91bCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtNjQgICAoaGV4KQkJRm9zdGV4IENvcnBvcmF0aW9uCi0wMDA2NjQgICAgIChiYXNlIDE2KQkJRm9zdGV4IENvcnBvcmF0aW9uCi0JCQkJMy0yLTM1LCBNdXNhc2hpbm8sIEFraXNoaW1hLAotCQkJCVRva3lvICAxOTYtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTA2LTY1ICAgKGhleCkJCVN1bm55IEdpa2VuLCBJbmMuCi0wMDA2NjUgICAgIChiYXNlIDE2KQkJU3VubnkgR2lrZW4sIEluYy4KLQkJCQkzLTEtOSBOaXNoaWRhaSBJdGFtaS1zaGkKLQkJCQlIeW9nby1wcmVmLiAgNjY0LTA4NTgKLQkJCQlKQVBBTgotCi0wMC0wNi02NiAgIChoZXgpCQlSb3ZpbmcgTmV0d29ya3MKLTAwMDY2NiAgICAgKGJhc2UgMTYpCQlSb3ZpbmcgTmV0d29ya3MKLQkJCQk4MDkgVW5pdmVyc2l0eSBBdmVudWUKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTY3ICAgKGhleCkJCVRyaXBwIExpdGUKLTAwMDY2NyAgICAgKGJhc2UgMTYpCQlUcmlwcCBMaXRlCi0JCQkJMTExMSBXLiAzNXRoIFN0cmVldAotCQkJCUNoaWNhZ28gSUwgNjA2MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTY4ICAgKGhleCkJCVZpY29uIEluZHVzdHJpZXMgSW5jLgotMDAwNjY4ICAgICAoYmFzZSAxNikJCVZpY29uIEluZHVzdHJpZXMgSW5jLgotCQkJCTg5IEFya2F5IERyaXZlCi0JCQkJSGF1cHBhdWdlIE5ZIDExNzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi02OSAgIChoZXgpCQlEYXRhc291bmQgTGFib3JhdG9yaWVzIEx0ZAotMDAwNjY5ICAgICAoYmFzZSAxNikJCURhdGFzb3VuZCBMYWJvcmF0b3JpZXMgTHRkCi0JCQkJNSBCdXNpbmVzcyBQYXJrIFdlc3QsIEF2ZW51ZSBPbmUKLQkJCQlMZXRjaHdvcnRoLCBIZXJ0cyBTRzYgMjRCCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNi02QSAgIChoZXgpCQlJbmZpbmlDb24gU3lzdGVtcywgSW5jLgotMDAwNjZBICAgICAoYmFzZSAxNikJCUluZmluaUNvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJNzAwIEFtZXJpY2FuIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlLaW5nIG9mIFBydXNzaWEgUEEgMTk0MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTZCICAgKGhleCkJCVN5c21leCBDb3Jwb3JhdGlvbgotMDAwNjZCICAgICAoYmFzZSAxNikJCVN5c21leCBDb3Jwb3JhdGlvbgotCQkJCTQtNC00IFRha2F0c3VrYWRhaSwKLQkJCQlOaXNoaS1rdSwgS29iZS1DaXR5Ci0JCQkJNjUxLTIyNzEKLQkJCQlKQVBBTgotCi0wMC0wNi02QyAgIChoZXgpCQlSb2JpbnNvbiBDb3Jwb3JhdGlvbgotMDAwNjZDICAgICAoYmFzZSAxNikJCVJvYmluc29uIENvcnBvcmF0aW9uCi0JCQkJMTJGLCBOby4gMjc4IEhvIFBpbmcgRS4gUmQuLAotCQkJCVNlYy4gMwotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi02RCAgIChoZXgpCQlDb21wdXByaW50IFMuUC5BLgotMDAwNjZEICAgICAoYmFzZSAxNikJCUNvbXB1cHJpbnQgUy5QLkEuCi0JCQkJVmlhIE1hcnRpcmkgRCdJdGFsaWEgMjYKLQkJCQkxMDAxNCBDYWx1c28gKFR1cmluKQotCQkJCUlUQUxZCi0KLTAwLTA2LTZFICAgKGhleCkJCURlbHRhIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDA2NkUgICAgIChiYXNlIDE2KQkJRGVsdGEgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkxMUYsIDI2NiBXZW4tSHdhIDJuZCBSb2FkLAotCQkJCVNlYy4gMSwgTGlua291LCBUYWlwZWkgSHNpZW4gMjQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi02RiAgIChoZXgpCQlLb3JlYSBEYXRhIFN5c3RlbXMKLTAwMDY2RiAgICAgKGJhc2UgMTYpCQlLb3JlYSBEYXRhIFN5c3RlbXMKLQkJCQkxNzAsIEdvbmdkYW4tRG9uZywgR3VtaS1TaQotCQkJCUt5dW5nYnVrICA3MzAtMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTcwICAgKGhleCkJCVVwcG9uZXR0aSBPeQotMDAwNjcwICAgICAoYmFzZSAxNikJCVVwcG9uZXR0aSBPeQotCQkJCVR5a2lzdG9rYXR1IDRECi0JCQkJRklOLTIwNTIwIFR1cmt1Ci0JCQkJRklOTEFORAotCi0wMC0wNi03MSAgIChoZXgpCQlTb2Z0aW5nIEFHCi0wMDA2NzEgICAgIChiYXNlIDE2KQkJU29mdGluZyBBRwotCQkJCVJpY2hhcmQtUmVpdHpuZXItQWxsZWUgNgotCQkJCTg1NTQwIEhhYXIKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTcyICAgKGhleCkJCU5ldGV6emEKLTAwMDY3MiAgICAgKGJhc2UgMTYpCQlOZXRlenphCi0JCQkJMTY3MSBXb3JjZXN0ZXIgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUZyYW1pbmdoYW0gTUEgMDE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTczICAgKGhleCkJCU9wdGVsZWNvbS1ua2YKLTAwMDY3MyAgICAgKGJhc2UgMTYpCQlPcHRlbGVjb20tbmtmCi0JCQkJMTI5MjAgQ2xvdmVybGVhZiBDZW50ZXIgRHJpdmUKLQkJCQlHZXJtYW50b3duIE1EIDIwODc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi03NCAgIChoZXgpCQlTcGVjdHJ1bSBDb250cm9sLCBJbmMuCi0wMDA2NzQgICAgIChiYXNlIDE2KQkJU3BlY3RydW0gQ29udHJvbCwgSW5jLgotCQkJCTgwNjEgQXZvbmlhIFJvYWQKLQkJCQlGYWlydmlldyBQQSAxNjQxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNzUgICAoaGV4KQkJQmFuZGVyYWNvbSwgSW5jLgotMDAwNjc1ICAgICAoYmFzZSAxNikJCUJhbmRlcmFjb20sIEluYy4KLQkJCQk5MjExIFdhdGVyZm9yZCBDZW50cmUgQmx2ZC4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlBdXN0aW4gVFggNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTc2ICAgKGhleCkJCU5vdnJhIFRlY2hub2xvZ2llcyBJbmMuCi0wMDA2NzYgICAgIChiYXNlIDE2KQkJTm92cmEgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk5MDAtMzMwIFN0LiBNYXJ5IEF2ZW51ZQotCQkJCVdpbm5pcGVnIE1hbml0b2JhIFIzQyAzWjUKLQkJCQlDQU5BREEKLQotMDAtMDYtNzcgICAoaGV4KQkJU0lDSyBBRwotMDAwNjc3ICAgICAoYmFzZSAxNikJCVNJQ0sgQUcKLQkJCQlFcndpbi1TaWNrIFN0ci4xCi0JCQkJRC03OTE4MyBXYWxka2lyY2ggCi0JCQkJR0VSTUFOWQotCi0wMC0wNi03OCAgIChoZXgpCQlNYXJhbnR6IEJyYW5kIENvbXBhbnkKLTAwMDY3OCAgICAgKGJhc2UgMTYpCQlNYXJhbnR6IEJyYW5kIENvbXBhbnkKLQkJCQlEJk0gQnVpbGRpbmcsIDItMSBOaXNzaGluLWNobwotCQkJCUthd2FzYWtpLWt1Ci0JCQkJS2F3YXNha2ktc2hpIEthd2FnYXdhIDIxMC04NTY5Ci0JCQkJSkFQQU4KLQotMDAtMDYtNzkgICAoaGV4KQkJS29uYW1pIENvcnBvcmF0aW9uCi0wMDA2NzkgICAgIChiYXNlIDE2KQkJS29uYW1pIENvcnBvcmF0aW9uCi0JCQkJMTEtMTQtNSBBa2FzYWthLCBNaW5hdG8ta3UsCi0JCQkJVG9reW8gMTA3LTAwNTIKLQkJCQlKQVBBTgotCi0wMC0wNi03QSAgIChoZXgpCQlKTVAgU3lzdGVtcwotMDAwNjdBICAgICAoYmFzZSAxNikJCUpNUCBTeXN0ZW1zCi0JCQkJM3JkIEZsLiBTaGlud2hhIEJsZGcuLAotCQkJCTE0NTEtMTksIFNlb2Noby1kb25nLAotCQkJCVNlb2Noby1rdSBTZW91bCwgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTdCICAgKGhleCkJCVRvcGxpbmsgQyZDIENvcnBvcmF0aW9uCi0wMDA2N0IgICAgIChiYXNlIDE2KQkJVG9wbGluayBDJkMgQ29ycG9yYXRpb24KLQkJCQk2Ri0xNSwgTm8uIDEyLCBMYW5lIDYwOSwgU2VjLiA1Ci0JCQkJQ2h1bmcgSHNpbiBSZC4sIFNhbiBDaHVuZyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuIDI0MSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi03QyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDA2N0MgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi03RCAgIChoZXgpCQlUYWthc2FnbyBMdGQuCi0wMDA2N0QgICAgIChiYXNlIDE2KQkJVGFrYXNhZ28gTHRkLgotCQkJCTEtMjQtMTYgTWl6b25va3VjaGkgVGFrYXRzdS1rdQotCQkJCUthd2FzYWtpIEthbmFnYXdhCi0JCQkJSkFQQU4KLQotMDAtMDYtN0UgICAoaGV4KQkJV2luQ29tIFN5c3RlbXMsIEluYy4KLTAwMDY3RSAgICAgKGJhc2UgMTYpCQlXaW5Db20gU3lzdGVtcywgSW5jLgotCQkJCTEwOTAwIFdvcmxkIFRyYWRlIEJsdmQuCi0JCQkJU3VpdGUgMjUwCi0JCQkJTW9ycmlzdmlsbGUgTkMgMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTdGICAgKGhleCkJCURpZ2VvLCBJbmMuCi0wMDA2N0YgICAgIChiYXNlIDE2KQkJRGlnZW8sIEluYy4KLQkJCQk4ODE1IDEyMm5kIEF2ZW51ZSBORQotCQkJCUtpcmtsYW5kIFdBIDk4MDMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi04MCAgIChoZXgpCQlDYXJkIEFjY2VzcywgSW5jLgotMDAwNjgwICAgICAoYmFzZSAxNikJCUNhcmQgQWNjZXNzLCBJbmMuCi0JCQkJMTE3NzggUy4gRWxlY3Rpb24gUmQKLQkJCQlTdWl0ZSAyNjAKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4MDQyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtODEgICAoaGV4KQkJR29lcGVsIEVsZWN0cm9uaWMgR21iSAotMDAwNjgxICAgICAoYmFzZSAxNikJCUdvZXBlbCBFbGVjdHJvbmljIEdtYkgKLQkJCQlHb2VzY2h3aXR6ZXIgU3RyLiA1OC02MAotCQkJCTA3NzQ1IEplbmEKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTgyICAgKGhleCkJCUNvbnZlZGlhCi0wMDA2ODIgICAgIChiYXNlIDE2KQkJQ29udmVkaWEKLQkJCQk0MTkwIFN0aWxsIENyZWVrIERyLgotCQkJCVZhbmNvdXZlciBCLkMuCi0JCQkJVjVDIDZDNgotCQkJCUNBTkFEQQotCi0wMC0wNi04MyAgIChoZXgpCQlCcmF2YXJhIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA2ODMgICAgIChiYXNlIDE2KQkJQnJhdmFyYSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTI2NTAgRWFzdCBCYXlzaG9yZSBSb2FkCi0JCQkJUGFsbyBBbHRvIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi04NCAgIChoZXgpCQlCaWFjb3JlIEFCCi0wMDA2ODQgICAgIChiYXNlIDE2KQkJQmlhY29yZSBBQgotCQkJCVNvZnR3YXJlLCBFbGVjdHJvbmljcyBhbmQgT3B0aWNzCi0JCQkJUmFwc2dhdGFuIDcsIDc1NCA1MCBVcHBzYWxhCi0JCQkJU1dFREVOCi0KLTAwLTA2LTg1ICAgKGhleCkJCU5ldE5lYXJVIENvcnBvcmF0aW9uCi0wMDA2ODUgICAgIChiYXNlIDE2KQkJTmV0TmVhclUgQ29ycG9yYXRpb24KLQkJCQkyOTA4IEZpbmZlYXRoZXIgUm9hZAotCQkJCUJyeWFuIFRYIDc3ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi04NiAgIChoZXgpCQlaQVJEQ09NIENvLiwgTHRkLgotMDAwNjg2ICAgICAoYmFzZSAxNikJCVpBUkRDT00gQ28uLCBMdGQuCi0JCQkJNEYsIDE1NDgtMSwgU2VvY2hvIERvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtODcgICAoaGV4KQkJT21uaXRyb24gU3lzdGVtcyBUZWNobm9sb2d5LCBJbmMuCi0wMDA2ODcgICAgIChiYXNlIDE2KQkJT21uaXRyb24gU3lzdGVtcyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTQwIFRlY2hub2xvZ3kKLQkJCQlTdWl0ZSA1MDAKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTg4ICAgKGhleCkJCVRlbHdheXMgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMDY4OCAgICAgKGJhc2UgMTYpCQlUZWx3YXlzIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0JCQkJM0YsIE5vLiA1MywgTGFuZSAyNTgKLQkJCQladWktS3VhbmcgUmQuLCBOZWktSHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtODkgICAoaGV4KQkJeUxleiBUZWNobm9sb2dpZXMgUHRlIEx0ZAotMDAwNjg5ICAgICAoYmFzZSAxNikJCXlMZXogVGVjaG5vbG9naWVzIFB0ZSBMdGQKLQkJCQlOby4gMSwgVGFubmVyeSBSb2FkLCBDZW5jb24gMSwKLQkJCQkjMDktMDMsIDM0NzcxOQotCQkJCVNJTkdBUE9SRQotCi0wMC0wNi04QSAgIChoZXgpCQlOZXVyb25OZXQgQ28uIEx0ZC4gUiZEIENlbnRlcgotMDAwNjhBICAgICAoYmFzZSAxNikJCU5ldXJvbk5ldCBDby4gTHRkLiBSJkQgQ2VudGVyCi0JCQkJNzM1LTM0IERhc3VuZyBCbGRnLiwgWXVrc2FtLWRvbmcsCi0JCQkJS2FuZ25hbS1ndSwgU2VvdWwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtOEIgICAoaGV4KQkJQWlyUnVubmVyIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNjhCICAgICAoYmFzZSAxNikJCUFpclJ1bm5lciBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyNDAxIEx1cGluZSBUcmFpbAotCQkJCVNvdXRoIExha2UgVGFob2UgQ0EgOTYxNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LThDICAgKGhleCkJCTNDb20gQ29ycG9yYXRpb24KLTAwMDY4QyAgICAgKGJhc2UgMTYpCQkzQ29tIENvcnBvcmF0aW9uCi0JCQkJNTQwMCBCYXlmcm9udCBQbGF6YQotCQkJCU1TOiAgNTExNgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi04RCAgIChoZXgpCQlTRVBBVE9OLCBJbmMuCi0wMDA2OEQgICAgIChiYXNlIDE2KQkJU0VQQVRPTiwgSW5jLgotCQkJCTQwMCBOaWNrZXJzb24gUmQuCi0JCQkJTWFybGJvcm91Z2ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LThFICAgKGhleCkJCUhJRCBDb3Jwb3JhdGlvbgotMDAwNjhFICAgICAoYmFzZSAxNikJCUhJRCBDb3Jwb3JhdGlvbgotCQkJCTkyOTIgSmVyb25pbW8gUm9hZAotCQkJCUlydmluZSBDQSA5MjYxOC0xOTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi04RiAgIChoZXgpCQlUZWxlbW9uaXRvciwgSW5jLgotMDAwNjhGICAgICAoYmFzZSAxNikJCVRlbGVtb25pdG9yLCBJbmMuCi0JCQkJOTA1NUYgR3VpbGZvcmQgUm9hZAotCQkJCUNvbHVtYmlhIE1EIDIxMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi05MCAgIChoZXgpCQlFdXJhY29tIENvbW11bmljYXRpb24gR21iSAotMDAwNjkwICAgICAoYmFzZSAxNikJCUV1cmFjb20gQ29tbXVuaWNhdGlvbiBHbWJICi0JCQkJRnJhbmtsaW5zdHIuIDE0Ci0JCQkJRC0xMDU4NyBCZXJsaW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTkxICAgKGhleCkJCVBUIElub3ZhY2FvCi0wMDA2OTEgICAgIChiYXNlIDE2KQkJUFQgSW5vdmFjYW8KLQkJCQlSdWEgRW5nLiBKb3NlIEYuIFBpbnRvIEJhc3RvCi0JCQkJMzgxMCBBdmVpcm8KLQkJCQlQT1JUVUdBTAotCi0wMC0wNi05MiAgIChoZXgpCQlJbnRydXZlcnQgTmV0d29ya3MsIEluYy4KLTAwMDY5MiAgICAgKGJhc2UgMTYpCQlJbnRydXZlcnQgTmV0d29ya3MsIEluYy4KLQkJCQlTdWl0ZSAxMDIKLQkJCQkyMjkwIE5vcnRoIEZpcnN0IFN0cmVldAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi05MyAgIChoZXgpCQlGbGV4dXMgQ29tcHV0ZXIgVGVjaG5vbG9neSwgSW5jLgotMDAwNjkzICAgICAoYmFzZSAxNikJCUZsZXh1cyBDb21wdXRlciBUZWNobm9sb2d5LCBJbmMuCi0JCQkJOEYtMiwgTm8uNSwgQWxsZXkyMiwgTGFuZSA1MTMsCi0JCQkJUnVlaS1HdWFuZyBSZC4sIE5laS1IdSBEaXN0LiwKLQkJCQlUYWlwZWkgMTE0ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTk0ICAgKGhleCkJCU1vYmlsbGlhbiBDb3Jwb3JhdGlvbgotMDAwNjk0ICAgICAoYmFzZSAxNikJCU1vYmlsbGlhbiBDb3Jwb3JhdGlvbgotCQkJCTExMDMxIFZpYSBGcm9udGVyYQotCQkJCVN1aXRlIEMKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTk1ICAgKGhleCkJCUVuc3VyZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDY5NSAgICAgKGJhc2UgMTYpCQlFbnN1cmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMzUyNiBXZXN0IExpYmVydHkKLQkJCQlTdWl0ZSAxMDAKLQkJCQlBbm4gQXJib3IgTUkgNDgxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTk2ICAgKGhleCkJCUFkdmVudCBOZXR3b3JrcwotMDAwNjk2ICAgICAoYmFzZSAxNikJCUFkdmVudCBOZXR3b3JrcwotCQkJCTk2MDAgR3JlYXQgSGlsbHMgVHIuCi0JCQkJU3VpdGUgMzAwRQotCQkJCUF1c3RpbiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtOTcgICAoaGV4KQkJUiAmIEQgQ2VudGVyCi0wMDA2OTcgICAgIChiYXNlIDE2KQkJUiAmIEQgQ2VudGVyCi0JCQkJNUYsIFNldW5nd29uIEIvRCwgODEwLTkKLQkJCQlCYW5nYmFlLURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtOTggICAoaGV4KQkJZWduaXRlIFNvZnR3YXJlIEdtYkgKLTAwMDY5OCAgICAgKGJhc2UgMTYpCQllZ25pdGUgU29mdHdhcmUgR21iSAotCQkJCUVyaW5zdHIuIDkKLQkJCQlDYXN0cm9wLVJhdXhlbCBELTQ0NTc1Ci0JCQkJR0VSTUFOWQotCi0wMC0wNi05OSAgIChoZXgpCQlWaWRhIERlc2lnbiBDby4KLTAwMDY5OSAgICAgKGJhc2UgMTYpCQlWaWRhIERlc2lnbiBDby4KLQkJCQkxMEYsIE5vLiAyNzggSG8gUGluZyBFLiBSZC4sCi0JCQkJU2VjLiAzLCBUYWlwZWkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTlBICAgKGhleCkJCWUgJiBUZWwKLTAwMDY5QSAgICAgKGJhc2UgMTYpCQllICYgVGVsCi0JCQkJMTAwIFNlam9uZy1ubyBDaG9uZ25vLWd1LAotCQkJCVNlb3VsIDExMC03NzcsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTlCICAgKGhleCkJCUFWVCBBdWRpbyBWaWRlbyBUZWNobm9sb2dpZXMgR21iSAotMDAwNjlCICAgICAoYmFzZSAxNikJCUFWVCBBdWRpbyBWaWRlbyBUZWNobm9sb2dpZXMgR21iSAotCQkJCVJhdGhzYmVyZ3N0cmFzc2UgMTcKLQkJCQlELTkwNDExIE51ZXJuYmVyZwotCQkJCUdFUk1BTlkKLQotMDAtMDYtOUMgICAoaGV4KQkJVHJhbnNtb2RlIFN5c3RlbXMgQUIKLTAwMDY5QyAgICAgKGJhc2UgMTYpCQlUcmFuc21vZGUgU3lzdGVtcyBBQgotCQkJCUpha29ic2RhbHN25GdlbiAxNwotCQkJCUjER0VSU1RFTiBTRS0xMjYgNTMKLQkJCQlTV0VERU4KLQotMDAtMDYtOUQgICAoaGV4KQkJUGV0YXJkcyBMdGQKLTAwMDY5RCAgICAgKGJhc2UgMTYpCQlQZXRhcmRzIEx0ZAotCQkJCTM5MCBQcmluY2Vzd2F5LCBUZWFtIFZhbGxleQotCQkJCUdhdGVzaGVhZCBUeW5lIGFuZCBXZWFyIE5FMTEgT1RVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDYtOUUgICAoaGV4KQkJVU5JUUEsIEluYy4KLTAwMDY5RSAgICAgKGJhc2UgMTYpCQlVTklRQSwgSW5jLgotCQkJCTQ3NyBWYWxsZXkgV2F5Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTlGICAgKGhleCkJCUt1b2tvYSBOZXR3b3JrcwotMDAwNjlGICAgICAoYmFzZSAxNikJCUt1b2tvYSBOZXR3b3JrcwotCQkJCTI5MDEgVGFzbWFuIERyLgotCQkJCVN1aXRlIDIwMgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1BMCAgIChoZXgpCQlNeCBJbWFnaW5nCi0wMDA2QTAgICAgIChiYXNlIDE2KQkJTXggSW1hZ2luZwotCQkJCTIzNDEgVy4gMjA1dGggU3RyZWV0Ci0JCQkJU3VpdGUgMTEwCi0JCQkJVG9ycmFuY2UgQ0EgOTA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUExICAgKGhleCkJCUNlbHNpYW4gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA2QTEgICAgIChiYXNlIDE2KQkJQ2Vsc2lhbiBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkzMDAyIERvdyBBdmUuLCBVbml0IDEzOAotCQkJCVR1c3RpbiBDQSA5Mjc4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQTIgICAoaGV4KQkJTWljcm90dW5lLCBJbmMuCi0wMDA2QTIgICAgIChiYXNlIDE2KQkJTWljcm90dW5lLCBJbmMuCi0JCQkJNjQ0MCBMdXNrIEJsdmQuLCBTdWl0ZSBEMjA1Ci0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1BMyAgIChoZXgpCQlCaXRyYW4gQ29ycG9yYXRpb24KLTAwMDZBMyAgICAgKGJhc2UgMTYpCQlCaXRyYW4gQ29ycG9yYXRpb24KLQkJCQkyMjEzIE1vY2hpZGEKLQkJCQlHeW91ZGEgU2FpdGFtYQotCQkJCUpBUEFOCi0KLTAwLTA2LUE0ICAgKGhleCkJCUlOTk9XRUxMIENvcnAuCi0wMDA2QTQgICAgIChiYXNlIDE2KQkJSU5OT1dFTEwgQ29ycC4KLQkJCQkjNzE3IENob25nR3UgQmx1ZXZpbGwKLQkJCQkxMS0xLCBTdW5hZS0xIERvbmcsIEJ1bmRhbmctR3UsIFN1bmduYW0tCi0JCQkJNDYzLTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1BNSAgIChoZXgpCQlQSU5PTiBDb3JwLgotMDAwNkE1ICAgICAoYmFzZSAxNikJCVBJTk9OIENvcnAuCi0JCQkJREsgR290YW5kYSBCbGRnLjdGCi0JCQkJNy0xMy01IE5pc2hpZ290YW5kYSBTaGluYWdhd2Eta3UKLQkJCQlUb2t5byAgMTQxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0wNi1BNiAgIChoZXgpCQlBcnRpc3RpYyBMaWNlbmNlIChVSykgTHRkCi0wMDA2QTYgICAgIChiYXNlIDE2KQkJQXJ0aXN0aWMgTGljZW5jZSAoVUspIEx0ZAotCQkJCTI0IEZvcndhcmQgRHJpdmUKLQkJCQlDaHJpc3RjaHVyY2ggQXZlbnVlCi0JCQkJSGFycm93IE1pZGRsZXNleCBIQTMgOE5UCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDYtQTcgICAoaGV4KQkJUHJpbWFyaW9uCi0wMDA2QTcgICAgIChiYXNlIDE2KQkJUHJpbWFyaW9uCi0JCQkJMzQ1MCBUb3JyYW5jZSBCbHZkLgotCQkJCVRvcnJhbmNlIENBIDkwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1BOCAgIChoZXgpCQlLQyBUZWNobm9sb2d5LCBJbmMuCi0wMDA2QTggICAgIChiYXNlIDE2KQkJS0MgVGVjaG5vbG9neSwgSW5jLgotCQkJCTE5MDAgTWNDYXJ0aHkgQmx2ZC4KLQkJCQlTdWl0ZSAzMDAKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQTkgICAoaGV4KQkJVW5pdmVyc2FsIEluc3RydW1lbnRzIENvcnAuCi0wMDA2QTkgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEluc3RydW1lbnRzIENvcnAuCi0JCQkJUE8gQm94IDgyNQotCQkJCUJpbmdoYW10b24gTlkgMTM5MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUFBICAgKGhleCkJCVZUIE1pbHRvcGUKLTAwMDZBQSAgICAgKGJhc2UgMTYpCQlWVCBNaWx0b3BlCi0JCQkJNDkwMCBQZWFybCBFYXN0IENpcmNsZQotCQkJCVN1aXRlIDEwNgotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUFCICAgKGhleCkJCVctTGluayBTeXN0ZW1zLCBJbmMuCi0wMDA2QUIgICAgIChiYXNlIDE2KQkJVy1MaW5rIFN5c3RlbXMsIEluYy4KLQkJCQlOby4gMjAsIFBhcmsgQXZlLiBJSSwKLQkJCQlTY2llbmNlIEJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LUFDICAgKGhleCkJCUludGVyc29mdCBDby4KLTAwMDZBQyAgICAgKGJhc2UgMTYpCQlJbnRlcnNvZnQgQ28uCi0JCQkJIzE4MDMgc3VuLWt5b3VuZyBPZmZpY2V0ZWwKLQkJCQkxMDYtNCBCdW56aSwgR3VybzVEb25nLCBHdXJvIEd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1BRCAgIChoZXgpCQlLQiBFbGVjdHJvbmljcyBMdGQuCi0wMDA2QUQgICAgIChiYXNlIDE2KQkJS0IgRWxlY3Ryb25pY3MgTHRkLgotCQkJCTE1MCBCbHVld2F0ZXIgUmQuCi0JCQkJQmVkZm9yZCwgTm92YSBTY290aWEKLQkJCQlCNEIgMUc5Ci0JCQkJQ0FOQURBCi0KLTAwLTA2LUFFICAgKGhleCkJCUhpbWFjaGFsIEZ1dHVyaXN0aWMgQ29tbXVuaWNhdGlvbnMgTHRkCi0wMDA2QUUgICAgIChiYXNlIDE2KQkJSGltYWNoYWwgRnV0dXJpc3RpYyBDb21tdW5pY2F0aW9ucyBMdGQKLQkJCQk4LCBDb21tZXJjaWFsIENvbXBsZXgKLQkJCQlNYXNqaWQgTW90aCwgR3JlYXRlciBLYWlsYXNoIElJCi0JCQkJTmV3IERlaGxpICAxMTAwNDgKLQkJCQlJTkRJQQotCi0wMC0wNi1BRiAgIChoZXgpCQlYYWx0ZWQgTmV0d29ya3MKLTAwMDZBRiAgICAgKGJhc2UgMTYpCQlYYWx0ZWQgTmV0d29ya3MKLQkJCQkyOTAxIERhbGxhcyBQYXJrd2F5Ci0JCQkJU3VpdGUgMjAwCi0JCQkJUGxhbm8gVFggNzUwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUIwICAgKGhleCkJCUNvbXRlY2ggRUYgRGF0YSBDb3JwLgotMDAwNkIwICAgICAoYmFzZSAxNikJCUNvbXRlY2ggRUYgRGF0YSBDb3JwLgotCQkJCTIxMTQgVy4gN3RoIFN0LgotCQkJCVRlbXBlIEFaIDg1MjgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1CMSAgIChoZXgpCQlTb25pY3dhbGwKLTAwMDZCMSAgICAgKGJhc2UgMTYpCQlTb25pY3dhbGwKLQkJCQkxMTYwIEJvcmRlYXV4IERyLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQjIgICAoaGV4KQkJTGlueHRlayBDby4KLTAwMDZCMiAgICAgKGJhc2UgMTYpCQlMaW54dGVrIENvLgotCQkJCTJGIEt1bS1hIEIvRCAzMS0zIEthcmFrLWRvbmcsCi0JCQkJU29uZ3BhLWt1LCBTZW91bCwKLQkJCQkxMzgtMTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUIzICAgKGhleCkJCURpYWdyYXBoIENvcnBvcmF0aW9uCi0wMDA2QjMgICAgIChiYXNlIDE2KQkJRGlhZ3JhcGggQ29ycG9yYXRpb24KLQkJCQkzNDAxIFJpZGVyIFRyYWlsIFNvdXRoCi0JCQkJRWFydGggQ2l0eSBNTyA2MzA0NS0xMTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1CNCAgIChoZXgpCQlWb3JuZSBJbmR1c3RyaWVzLCBJbmMuCi0wMDA2QjQgICAgIChiYXNlIDE2KQkJVm9ybmUgSW5kdXN0cmllcywgSW5jLgotCQkJCTE0NDUgSW5kdXN0cmlhbCBEci4KLQkJCQlJdGFzY2EgSUwgNjAxNDMtMTg0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQjUgICAoaGV4KQkJTHVtaW5lbnQsIEluYy4KLTAwMDZCNSAgICAgKGJhc2UgMTYpCQlMdW1pbmVudCwgSW5jLgotCQkJCTIwNTUwIE5vcmRob2ZmIFN0LgotCQkJCUNoYXRzd29ydGggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUI2ICAgKGhleCkJCU5pci1PciBJc3JhZWwgTHRkLgotMDAwNkI2ICAgICAoYmFzZSAxNikJCU5pci1PciBJc3JhZWwgTHRkLgotCQkJCTExIEFtYWwgU3QuCi0JCQkJUm9zaCBIYSdheWluIDQ4MDkyCi0JCQkJSVNSQUVMCi0KLTAwLTA2LUI3ICAgKGhleCkJCVRFTEVNIEdtYkgKLTAwMDZCNyAgICAgKGJhc2UgMTYpCQlURUxFTSBHbWJICi0JCQkJTGlzZS1NZWl0bmVyLUFsbGVlIDMxCi0JCQkJRCA0NDgwMQotCQkJCUdFUk1BTlkKLQotMDAtMDYtQjggICAoaGV4KQkJQmFuZHNwZWVkIFB0eSBMdGQKLTAwMDZCOCAgICAgKGJhc2UgMTYpCQlCYW5kc3BlZWQgUHR5IEx0ZAotCQkJCUxldmVsIDksIDUwMDAgQ29sbGlucyBTdHJlZXQKLQkJCQlNZWxib3VybmUgVmljIDMwMDAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDYtQjkgICAoaGV4KQkJQTVURUsgQ29ycC4KLTAwMDZCOSAgICAgKGJhc2UgMTYpCQlBNVRFSyBDb3JwLgotCQkJCTEyMzMgQWxkZXJ3b29kIEF2ZS4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUJBICAgKGhleCkJCVdlc3R3YXZlIENvbW11bmljYXRpb25zCi0wMDA2QkEgICAgIChiYXNlIDE2KQkJV2VzdHdhdmUgQ29tbXVuaWNhdGlvbnMKLQkJCQk0NjMgQXZpYXRpb24gQmx2ZC4KLQkJCQlTYW50YSBSb3NhIENBIDk1NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1CQiAgIChoZXgpCQlBVEkgVGVjaG5vbG9naWVzIEluYy4KLTAwMDZCQiAgICAgKGJhc2UgMTYpCQlBVEkgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk3NSBUaXZlcnRvbiBDb3VydAotCQkJCVVuaW9udmlsbGUsIE9OIEwzUiA5NTMKLQkJCQlDQU5BREEKLQotMDAtMDYtQkMgICAoaGV4KQkJTWFjcm9saW5rLCBJbmMuCi0wMDA2QkMgICAgIChiYXNlIDE2KQkJTWFjcm9saW5rLCBJbmMuCi0JCQkJMTUwMCBOIEtlbGxvZ2cgRHIuCi0JCQkJQW5haGVpbSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQkQgICAoaGV4KQkJQk5URUNITk9MT0dZIENvLiwgTHRkLgotMDAwNkJEICAgICAoYmFzZSAxNikJCUJOVEVDSE5PTE9HWSBDby4sIEx0ZC4KLQkJCQk2MDIgWW91bmdzaGluIEJsZGcuIDIzOC04Ci0JCQkJUG9pLURvbmcgS2FuZ25hbS1HdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtQkUgICAoaGV4KQkJQmF1bWVyIE9wdHJvbmljIEdtYkgKLTAwMDZCRSAgICAgKGJhc2UgMTYpCQlCYXVtZXIgT3B0cm9uaWMgR21iSAotCQkJCUJhZHN0cmFzc2UgMzAKLQkJCQlELTAxNDU0IFJhZGViZXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wNi1CRiAgIChoZXgpCQlBY2NlbGxhIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMDZCRiAgICAgKGJhc2UgMTYpCQlBY2NlbGxhIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlSbSA1MTIgTm8uIDY4MCBHdWkgUGluZyBSZC4KLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMDYtQzAgICAoaGV4KQkJVW5pdGVkIEludGVybmV0d29ya3MsIEluYy4KLTAwMDZDMCAgICAgKGJhc2UgMTYpCQlVbml0ZWQgSW50ZXJuZXR3b3JrcywgSW5jLgotCQkJCTUwNzIgTm9ydGggMzAwIFdlc3QsIFN1aXRlIDJOCi0JCQkJUHJvdm8gVVQgODQ2MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUMxICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMDZDMSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUMyICAgKGhleCkJCVNtYXJ0bWF0aWMgQ29ycG9yYXRpb24KLTAwMDZDMiAgICAgKGJhc2UgMTYpCQlTbWFydG1hdGljIENvcnBvcmF0aW9uCi0JCQkJNjQwMCBDb25ncmVzcyBBdmUuLCBTdWl0ZSAxMzAwCi0JCQkJQm9jYSBSYXRvbiBGTCAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQzMgICAoaGV4KQkJU2NoaW5kbGVyIEVsZXZhdG9yIEx0ZC4KLTAwMDZDMyAgICAgKGJhc2UgMTYpCQlTY2hpbmRsZXIgRWxldmF0b3IgTHRkLgotCQkJCURlcHQuIFImRC1DTwotCQkJCVZpYSBkZWxsYSBQYWNlIDIyCi0JCQkJTG9jYXJubyBDSC02NjAwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDYtQzQgICAoaGV4KQkJUGlvbGluayBJbmMuCi0wMDA2QzQgICAgIChiYXNlIDE2KQkJUGlvbGluayBJbmMuCi0JCQkJSVQgQ2FzdGxlIDEtNDAxLCA1NTAtMSBHYXNhbi1kb25nLAotCQkJCTE2NTYtMiBTZW9jaG8tR3UsIFNlb3VsCi0JCQkJU2VvdWwgR2V1bWNob24tR3UgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1DNSAgIChoZXgpCQlJTk5PVkkgVGVjaG5vbG9naWVzIExpbWl0ZWQKLTAwMDZDNSAgICAgKGJhc2UgMTYpCQlJTk5PVkkgVGVjaG5vbG9naWVzIExpbWl0ZWQKLQkJCQkzMXN0IEZsb29yLCBDaGluYSBPbmxpbmUgQ2VudHJlCi0JCQkJMzMzIExvY2toYXJ0IFJvYWQKLQkJCQlXYW5jaGFpIAotCQkJCUhPTkcgS09ORwotCi0wMC0wNi1DNiAgIChoZXgpCQlsZXNzd2lyZSBBRwotMDAwNkM2ICAgICAoYmFzZSAxNikJCWxlc3N3aXJlIEFHCi0JCQkJSW0gVGVjaG5vbG9naWVwYXJrIDI1Ci0JCQkJR0VSTUFOWQotCi0wMC0wNi1DNyAgIChoZXgpCQlSRk5FVCBUZWNobm9sb2dpZXMgUHRlIEx0ZCAoUykKLTAwMDZDNyAgICAgKGJhc2UgMTYpCQlSRk5FVCBUZWNobm9sb2dpZXMgUHRlIEx0ZCAoUykKLQkJCQlVbml0IDIzMyBJbm5vdmF0aW9uIENlbnRyZSBCbGsgMgotCQkJCTE4IE5hbnlhbmcgRHJpdmUKLQkJCQk2Mzc3MjIKLQkJCQlTSU5HQVBPUkUKLQotMDAtMDYtQzggICAoaGV4KQkJU3VtaXRvbW8gTWV0YWwgTWljcm8gRGV2aWNlcywgSW5jLgotMDAwNkM4ICAgICAoYmFzZSAxNikJCVN1bWl0b21vIE1ldGFsIE1pY3JvIERldmljZXMsIEluYy4KLQkJCQkxLCBIaWdhc2hpbXVrb2ppbWEgSGlnYXNoaW5vLWNobwotCQkJCUFtYWdhc2FraSwgSHlvZ28sIDY2MC04NjYwCi0JCQkJSkFQQU4KLQotMDAtMDYtQzkgICAoaGV4KQkJVGVjaG5pY2FsIE1hcmtldGluZyBSZXNlYXJjaCwgSW5jLgotMDAwNkM5ICAgICAoYmFzZSAxNikJCVRlY2huaWNhbCBNYXJrZXRpbmcgUmVzZWFyY2gsIEluYy4KLQkJCQlTaGluIE5paG9uIEdpanV0c3UgQmxkZy4KLQkJCQkxLTEtMzIsIFNoaWJhZGFpbW9uLCBNaW5hdG8ta3UKLQkJCQlUb2t5byAxMDUtMDAxMiAgMTA1LTAwMTIKLQkJCQlKQVBBTgotCi0wMC0wNi1DQSAgIChoZXgpCQlBbWVyaWNhbiBDb21wdXRlciAmIERpZ2l0YWwgQ29tcG9uZW50cywgSW5jLiAoQUNEQykKLTAwMDZDQSAgICAgKGJhc2UgMTYpCQlBbWVyaWNhbiBDb21wdXRlciAmIERpZ2l0YWwgQ29tcG9uZW50cywgSW5jLiAoQUNEQykKLQkJCQk0NDAgQ2xvdmVybGVhZiBEcml2ZQotCQkJCUJhbGR3aW4gUGFyayBDQSA5MTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQ0IgICAoaGV4KQkJSm90cm9uIEVsZWN0cm9uaWNzIEEvUwotMDAwNkNCICAgICAoYmFzZSAxNikJCUpvdHJvbiBFbGVjdHJvbmljcyBBL1MKLQkJCQlQb2IgNTQKLQkJCQlOMzI4MCBUam9kYWx5bmcKLQkJCQlOT1JXQVkKLQotMDAtMDYtQ0MgICAoaGV4KQkJSk1JIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwNkNDICAgICAoYmFzZSAxNikJCUpNSSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQlOYW55YW5nIEIvRCAzRiwgMjUtNAotCQkJCVlvbm11bi1kb25nLCBZb25nc2FuLWd1Ci0JCQkJU2VvdWwgIDE0MC0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtQ0QgICAoaGV4KQkJTGVhZiBJbWFnaW5nIEx0ZC4KLTAwMDZDRCAgICAgKGJhc2UgMTYpCQlMZWFmIEltYWdpbmcgTHRkLgotCQkJCTd0aCBIYXRudWZhIHN0Ci0JCQkJUGV0YWNoLVRpa3ZhICA0OTAwMgotCQkJCUlTUkFFTAotCi0wMC0wNi1DRSAgIChoZXgpCQlEQVRFTk8KLTAwMDZDRSAgICAgKGJhc2UgMTYpCQlEQVRFTk8KLQkJCQlSdWUgQW1pcmFsIEJlcmVuZ2VyCi0JCQkJWmFjIEVzIFBhc3NhbnRzIElJIEJQIDkwMTQ1LCAzNTgwMSBEaW5hcgotCQkJCUZSQU5DRQotCi0wMC0wNi1DRiAgIChoZXgpCQlUaGFsZXMgQXZpb25pY3MgSW4tRmxpZ2h0IFN5c3RlbXMsIExMQwotMDAwNkNGICAgICAoYmFzZSAxNikJCVRoYWxlcyBBdmlvbmljcyBJbi1GbGlnaHQgU3lzdGVtcywgTExDCi0JCQkJMTc0ODEgUmVkIEhpbGwgQXZlbnVlCi0JCQkJSXJ2aW5lIENBIDkyNjE0LTU2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUQwICAgKGhleCkJCUVsZ2FyIEVsZWN0cm9uaWNzIENvcnAuCi0wMDA2RDAgICAgIChiYXNlIDE2KQkJRWxnYXIgRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQk5MjUwIEJyb3duIERlZXIgUmQuCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1EMSAgIChoZXgpCQlUYWhvZSBOZXR3b3JrcywgSW5jLgotMDAwNkQxICAgICAoYmFzZSAxNikJCVRhaG9lIE5ldHdvcmtzLCBJbmMuCi0JCQkJMzA1MiBPcmNoYXJkIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUQyICAgKGhleCkJCVR1bmRyYSBTZW1pY29uZHVjdG9yIENvcnAuCi0wMDA2RDIgICAgIChiYXNlIDE2KQkJVHVuZHJhIFNlbWljb25kdWN0b3IgQ29ycC4KLQkJCQk2MDMgTWFyY2ggUm9hZAotCQkJCUthbmF0YSwgT250LgotCQkJCUsySy0yTTUKLQkJCQlDQU5BREEKLQotMDAtMDYtRDMgICAoaGV4KQkJQWxwaGEgVGVsZWNvbSwgSW5jLiBVLlMuQS4KLTAwMDZEMyAgICAgKGJhc2UgMTYpCQlBbHBoYSBUZWxlY29tLCBJbmMuIFUuUy5BLgotCQkJCTEzOTQgQm9ycmVnb3IgQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRDQgICAoaGV4KQkJSW50ZXJhY3RpdmUgT2JqZWN0cywgSW5jLgotMDAwNkQ0ICAgICAoYmFzZSAxNikJCUludGVyYWN0aXZlIE9iamVjdHMsIEluYy4KLQkJCQkxMjYwMCBTRSAzOHRoIFN0LgotCQkJCVN1aXRlIDE1MAotCQkJCUJlbGxldnVlIFdBIDk4MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1ENSAgIChoZXgpCQlEaWFtb25kIFN5c3RlbXMgQ29ycC4KLTAwMDZENSAgICAgKGJhc2UgMTYpCQlEaWFtb25kIFN5c3RlbXMgQ29ycC4KLQkJCQk4NDMwLUQgQ2VudHJhbCBBdmUuCi0JCQkJTmV3YXJrIENBIDk0NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1ENiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA2RDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRDcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNkQ3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUQ4ICAgKGhleCkJCU1hcGxlIE9wdGljYWwgU3lzdGVtcwotMDAwNkQ4ICAgICAoYmFzZSAxNikJCU1hcGxlIE9wdGljYWwgU3lzdGVtcwotCQkJCTMyMDAgTm9ydGggRmlyc3QgU3QuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUQ5ICAgKGhleCkJCUlQTS1OZXQgUy5wLkEuCi0wMDA2RDkgICAgIChiYXNlIDE2KQkJSVBNLU5ldCBTLnAuQS4KLQkJCQlWaWEgUmVtbyBEZSBGZW8KLQkJCQk4MDAyMiBBcnphbm8gKE5hcGxlcykKLQkJCQlJVEFMWQotCi0wMC0wNi1EQSAgIChoZXgpCQlJVFJBTiBDb21tdW5pY2F0aW9ucyBMdGQuCi0wMDA2REEgICAgIChiYXNlIDE2KQkJSVRSQU4gQ29tbXVuaWNhdGlvbnMgTHRkLgotCQkJCTEgQXpyaWVsaSBDZW50ZXIsCi0JCQkJVGhlIHJvdW5kIGJ1aWxkaW5nCi0JCQkJVGVsIEF2aXYgNjcwMjEgICA2NzAyMQotCQkJCUlTUkFFTAotCi0wMC0wNi1EQiAgIChoZXgpCQlJQ0hJUFMgQ28uLCBMdGQuCi0wMDA2REIgICAgIChiYXNlIDE2KQkJSUNISVBTIENvLiwgTHRkLgotCQkJCTNGLCBTYW1qZW9uIEJsZGcuLCAyMzYtMwotCQkJCU5vbmh5dW4tRG9uZywgS2FuZ25hbS1rdQotCQkJCVNlb3VsLUNpdHkgIDEzNS0wMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1EQyAgIChoZXgpCQlTeWFiYXMgVGVjaG5vbG9neSAoQW1xdWVzdCkKLTAwMDZEQyAgICAgKGJhc2UgMTYpCQlTeWFiYXMgVGVjaG5vbG9neSAoQW1xdWVzdCkKLQkJCQk0NzI3IFBhc2VvIFBhZHJlIFBhcmt3YXkKLQkJCQlGcmVtb250IENBIDk0NTU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1ERCAgIChoZXgpCQlBVCAmIFQgTGFib3JhdG9yaWVzIC0gQ2FtYnJpZGdlIEx0ZAotMDAwNkREICAgICAoYmFzZSAxNikJCUFUICYgVCBMYWJvcmF0b3JpZXMgLSBDYW1icmlkZ2UgTHRkCi0JCQkJMjRhIFRydW1waW5ndG9uIFN0cmVldAotCQkJCUNhbWJyaWRnZSwgQ0IyIDFRQQotCQkJCUVOR0xBTkQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDYtREUgICAoaGV4KQkJRmxhc2ggVGVjaG5vbG9neQotMDAwNkRFICAgICAoYmFzZSAxNikJCUZsYXNoIFRlY2hub2xvZ3kKLQkJCQlQLk8uIEJveCA2ODE1MDkKLQkJCQlGcmFua2xpbiBUTiAzNzA2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtREYgICAoaGV4KQkJQUlET05JQyBDb3Jwb3JhdGlvbgotMDAwNkRGICAgICAoYmFzZSAxNikJCUFJRE9OSUMgQ29ycG9yYXRpb24KLQkJCQkyLTctMTAgT3RzdWthLCBCdW5reW8ta3UsCi0JCQkJVG9reW8sIDExMi0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMDYtRTAgICAoaGV4KQkJTUFUIENvLiwgTHRkLgotMDAwNkUwICAgICAoYmFzZSAxNikJCU1BVCBDby4sIEx0ZC4KLQkJCQk4NjQtMyBLd2FueWFuZy1kb25nCi0JCQkJRG9uZ2FuLWd1LCBBbnlhbmctc2kKLQkJCQlLeXVuZ2dpLWRvICA0MzEtMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUUxICAgKGhleCkJCVRlY2hubyBUcmFkZSBzLmEKLTAwMDZFMSAgICAgKGJhc2UgMTYpCQlUZWNobm8gVHJhZGUgcy5hCi0JCQkJNzMyYSBDaGF1c3NlZSBkZSBCcnV4ZWxsZXMKLQkJCQlCLTE0MTAgV2F0ZXJsb28KLQkJCQlCRUxHSVVNCi0KLTAwLTA2LUUyICAgKGhleCkJCUNlZW1heCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNkUyICAgICAoYmFzZSAxNikJCUNlZW1heCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTVmLTcsIDczNiwgQ2h1bmcgQ2hlbmcgUmQuLAotCQkJCUNodW5nIEhvIFRhaXBlaSBIc2llbiwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LUUzICAgKGhleCkJCVF1YW50aXRhdGl2ZSBJbWFnaW5nIENvcnBvcmF0aW9uCi0wMDA2RTMgICAgIChiYXNlIDE2KQkJUXVhbnRpdGF0aXZlIEltYWdpbmcgQ29ycG9yYXRpb24KLQkJCQk4MDgxIExvdWdoZWVkIEhpZ2h3YXkKLQkJCQlCdXJuYWJ5LCBCQwotCQkJCUNBTkFEQQotCi0wMC0wNi1FNCAgIChoZXgpCQlDaXRlbCBUZWNobm9sb2dpZXMgTHRkLgotMDAwNkU0ICAgICAoYmFzZSAxNikJCUNpdGVsIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJV2hlYXRjcm9mdCBCdXNpbmVzcyBQYXJrCi0JCQkJTGFuZG1lcmUgTGFuZSwgRWR3YWx0b24KLQkJCQlOb3R0aWdoYW0gIE5HMTIgNERHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDYtRTUgICAoaGV4KQkJRnVqaWFuIE5ld2xhbmQgQ29tcHV0ZXIgTHRkLiBDby4KLTAwMDZFNSAgICAgKGJhc2UgMTYpCQlGdWppYW4gTmV3bGFuZCBDb21wdXRlciBMdGQuIENvLgotCQkJCTE0MUYgU3Vuc2hpbmUgSG9saWRheSBIb3RlbAotCQkJCU5vLiAyNiBHYW8gUWlhbyBSZC4sIFd1WWkgU3F1YXJlCi0JCQkJRnV6aG91IEZ1amlhbiAgMzUwMDA1Ci0JCQkJQ0hJTkEKLQotMDAtMDYtRTYgICAoaGV4KQkJRG9uZ1lhbmcgVGVsZWNvbSBDby4sIEx0ZC4KLTAwMDZFNiAgICAgKGJhc2UgMTYpCQlEb25nWWFuZyBUZWxlY29tIENvLiwgTHRkLgotCQkJCTY0Mi03IERldW5nIENob24tRG9uZywgS2FuZ1Nlby1HdQotCQkJCVNlb3VsIDE1Ny04NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtRTcgICAoaGV4KQkJQml0IEJsaXR6IENvbW11bmljYXRpb25zIEluYy4KLTAwMDZFNyAgICAgKGJhc2UgMTYpCQlCaXQgQmxpdHogQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTgzMCBIaWxsdmlldyBDdC4sICMyOTAKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRTggICAoaGV4KQkJT3B0aWNhbCBOZXR3b3JrIFRlc3RpbmcsIEluYy4KLTAwMDZFOCAgICAgKGJhc2UgMTYpCQlPcHRpY2FsIE5ldHdvcmsgVGVzdGluZywgSW5jLgotCQkJCTU1IE1lcmNoYW50IFN0LgotCQkJCTI4dGggRmxvb3IKLQkJCQlIb25vbHVsdSBISSA5NjgxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRTkgICAoaGV4KQkJSW50aW1lIENvcnAuCi0wMDA2RTkgICAgIChiYXNlIDE2KQkJSW50aW1lIENvcnAuCi0JCQkJMzI0LTQsIFlhbmdqYWUtZG9uZywgMkYKLQkJCQlTZW9jaG8ta3UsIFNlb3VsLCAxMzctMTMwLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1FQSAgIChoZXgpCQlFTFpFVDgwIE1pa3JvY29tcHV0ZXIgR21iSCZDby4gS0cKLTAwMDZFQSAgICAgKGJhc2UgMTYpCQlFTFpFVDgwIE1pa3JvY29tcHV0ZXIgR21iSCZDby4gS0cKLQkJCQlUaGVhdGVycGxhdHogOQotCQkJCUQtNTIwNjIgQWFjaGVuCi0JCQkJR0VSTUFOWQotCi0wMC0wNi1FQiAgIChoZXgpCQlHbG9iYWwgRGF0YQotMDAwNkVCICAgICAoYmFzZSAxNikJCUdsb2JhbCBEYXRhCi0JCQkJMjI1MCBPYmlzcG8gQXZlICMxMDUKLQkJCQlTaWduYWwgSGlsbCBDQSA5MDgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRUMgICAoaGV4KQkJSGFycmlzIENvcnBvcmF0aW9uCi0wMDA2RUMgICAgIChiYXNlIDE2KQkJSGFycmlzIENvcnBvcmF0aW9uCi0JCQkJMTAyNSBXZXN0IE5BU0EgQmx2ZAotCQkJCU1TIEQtMjFCCi0JCQkJTWVsYm91cm5lIEZMIDMyOTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1FRCAgIChoZXgpCQlJbmFyYSBOZXR3b3JrcwotMDAwNkVEICAgICAoYmFzZSAxNikJCUluYXJhIE5ldHdvcmtzCi0JCQkJMzAzMSBUaXNjaCBXYXksCi0JCQkJU3VpdGUgMTAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUVFICAgKGhleCkJCVNoZW55YW5nIE5ldS1lcmEgSW5mb3JtYXRpb24gJiBUZWNobm9sb2d5IFN0b2NrIENvLiwgTHRkCi0wMDA2RUUgICAgIChiYXNlIDE2KQkJU2hlbnlhbmcgTmV1LWVyYSBJbmZvcm1hdGlvbiAmIFRlY2hub2xvZ3kgU3RvY2sgQ28uLCBMdGQKLQkJCQk4L0YsIHRoZSAyMXN0IENlbnR1cnkgQnVpbGRpbmcsCi0JCQkJTm8uIDEgU2hpamkgUm9hZCwgSHVubmFuIEluZHVzdHJpYWwgRGlzdAotCQkJCUR2bHBtbnQgWm9uZSBTaGVueWFuZywgCi0JCQkJQ0hJTkEKLQotMDAtMDYtRUYgICAoaGV4KQkJTWF4eGFuIFN5c3RlbXMsIEluYy4KLTAwMDZFRiAgICAgKGJhc2UgMTYpCQlNYXh4YW4gU3lzdGVtcywgSW5jLgotCQkJCTEwNyBCb25hdmVudHVyYSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1GMCAgIChoZXgpCQlEaWdlbywgSW5jLgotMDAwNkYwICAgICAoYmFzZSAxNikJCURpZ2VvLCBJbmMuCi0JCQkJODgxNSAxMjJuZCBBdmUuLCBORQotCQkJCUtpcmtsYW5kIFdBIDk4MDMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1GMSAgIChoZXgpCQlPcHRpbGxpb24KLTAwMDZGMSAgICAgKGJhc2UgMTYpCQlPcHRpbGxpb24KLQkJCQlLcm9uYm9yZ3Nnci45Ci0JCQkJU0UtMTY0ODcgS2lzdGEKLQkJCQlTV0VERU4KLQotMDAtMDYtRjIgICAoaGV4KQkJUGxhdHlzIENvbW11bmljYXRpb25zCi0wMDA2RjIgICAgIChiYXNlIDE2KQkJUGxhdHlzIENvbW11bmljYXRpb25zCi0JCQkJMzE1MEEgQ29yb25hZG8gRHIuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUYzICAgKGhleCkJCUFjY2VMaWdodCBOZXR3b3JrcwotMDAwNkYzICAgICAoYmFzZSAxNikJCUFjY2VMaWdodCBOZXR3b3JrcwotCQkJCTcwIEFiZWxlIFJvYWQsIEJ1aWxkaW5nIDEyMDAKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MDE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1GNCAgIChoZXgpCQlQcmltZSBFbGVjdHJvbmljcyAmIFNhdGVsbGl0aWNzIEluYy4KLTAwMDZGNCAgICAgKGJhc2UgMTYpCQlQcmltZSBFbGVjdHJvbmljcyAmIFNhdGVsbGl0aWNzIEluYy4KLQkJCQk2OSwgVHVuZy1ZdWFuIFJkLiwKLQkJCQlDaHVuZy1MaSBDaXR5LCBUYW95dWFuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi1GNSAgIChoZXgpCQlBTFBTIENvLC4gTHRkLgotMDAwNkY1ICAgICAoYmFzZSAxNikJCUFMUFMgQ28sLiBMdGQuCi0JCQkJNi0zLTM2IEZ1cnVrYXdhbmFrYXphdG8sCi0JCQkJT3Nha2kgTWl5YWdpLXByZWYgOTg5LTYxODEKLQkJCQlKQVBBTgotCi0wMC0wNi1GNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA2RjYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1GNyAgIChoZXgpCQlBTFBTIEVsZWN0cmljIENvLC4gTHRkLgotMDAwNkY3ICAgICAoYmFzZSAxNikJCUFMUFMgRWxlY3RyaWMgQ28sLiBMdGQuCi0JCQkJNi0zLTM2IEZ1cnVrYXdhbmFrYXphdG8sCi0JCQkJT3Nha2kgTWl5YWdpLXByZWYgOTg5LTYxODEKLQkJCQlKQVBBTgotCi0wMC0wNi1GOCAgIChoZXgpCQlDUFUgVGVjaG5vbG9neSwgSW5jLgotMDAwNkY4ICAgICAoYmFzZSAxNikJCUNQVSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNTczMSBXLiBMYXMgUG9zaXRhcyBCbHZkLgotCQkJCVBsZWFzYW50b24gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUY5ICAgKGhleCkJCU1pdHN1aSBab3NlbiBTeXN0ZW1zIFJlc2VhcmNoIEluYy4KLTAwMDZGOSAgICAgKGJhc2UgMTYpCQlNaXRzdWkgWm9zZW4gU3lzdGVtcyBSZXNlYXJjaCBJbmMuCi0JCQkJMTEtMSwgVW5vIDEtY2hvbWUKLQkJCQlUYW1hbm8tc2hpLCBPa2F5YW1hCi0JCQkJNzA2LTAwMTEKLQkJCQlKQVBBTgotCi0wMC0wNi1GQSAgIChoZXgpCQlJUCBTUVVBUkUgQ28sIEx0ZC4KLTAwMDZGQSAgICAgKGJhc2UgMTYpCQlJUCBTUVVBUkUgQ28sIEx0ZC4KLQkJCQkxLTktMTEsIEhha2F0YWVraWhpZ2FzaGksCi0JCQkJSGFrYXRhLWt1LCBGdWt1b2thLXNoaSwKLQkJCQlGdWt1b2thICA4MTItMDAxMwotCQkJCUpBUEFOCi0KLTAwLTA2LUZCICAgKGhleCkJCUhpdGFjaGkgUHJpbnRpbmcgU29sdXRpb25zLCBMdGQuCi0wMDA2RkIgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBQcmludGluZyBTb2x1dGlvbnMsIEx0ZC4KLQkJCQkxMDYwLCBUYWtlZGEgSGl0YWNoaW5ha2EtQ2l0eQotCQkJCUliYXJha2ktUHJlZi4KLQkJCQkzMTItODUwMgotCQkJCUpBUEFOCi0KLTAwLTA2LUZDICAgKGhleCkJCUZuZXQgQ28uLCBMdGQuCi0wMDA2RkMgICAgIChiYXNlIDE2KQkJRm5ldCBDby4sIEx0ZC4KLQkJCQlLRlNCIEJsZGcuIDEwdGggRi4gMTYtMgotCQkJCVlvaWRvLURvbmcsIFlvdW5nZGV1bmdwby1rdSwKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUZEICAgKGhleCkJCUNvbWpldCBJbmZvcm1hdGlvbiBTeXN0ZW1zIENvcnAuCi0wMDA2RkQgICAgIChiYXNlIDE2KQkJQ29tamV0IEluZm9ybWF0aW9uIFN5c3RlbXMgQ29ycC4KLQkJCQk3RmwuLCBOby4gMTAzLCBGZW4gTGlhbyBTdHJlZXQKLQkJCQlOZWktSHUsIFRhaXBlaQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtRkUgICAoaGV4KQkJQW1icmFkbywgSW5jCi0wMDA2RkUgICAgIChiYXNlIDE2KQkJQW1icmFkbywgSW5jCi0JCQkJMTEzMDEgVy4gUHJlc2lkZW50IEdlb3JnZSBCdXNoIEZ3eS4KLQkJCQlTdWl0ZTE1MAotCQkJCVJpY2hhcmRzb24gVFggNzUwODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUZGICAgKGhleCkJCVNoZWJhIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDA2RkYgICAgIChiYXNlIDE2KQkJU2hlYmEgU3lzdGVtcyBDby4sIEx0ZC4KLQkJCQk1dGggRmwuIEh5dW5kYWkgSmFkIEIvRAotCQkJCTQ2MC0xIFNlb25nbmFlLURvbmcsIEthbmdkb25nLUt1LAotCQkJCVNlb3VsICAxMzQtMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTAwICAgKGhleCkJCVpldHRhbWVkaWEgS29yZWEKLTAwMDcwMCAgICAgKGJhc2UgMTYpCQlaZXR0YW1lZGlhIEtvcmVhCi0JCQkJU3VpdGUgMTAwOCwgS3Vta2FuZyBWZW50dXJldGVsLCAxMTA4Ci0JCQkJQmlzYW5kb25nLCBEb25nYW5ndSwgQW55YW5nc2kKLQkJCQlLeW91bmdnaWRvLCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTAxICAgKGhleCkJCVJBQ0FMLURBVEFDT00KLTAwMDcwMSAgICAgKGJhc2UgMTYpCQlSQUNBTC1EQVRBQ09NCi0JCQkJTEFOIElOVEVSTkVUV09SS0lORyBESVZJU0lPTgotCQkJCTE1NSBTV0FOU09OIFJPQUQKLQkJCQlCT1hCT1JPVUdIIE1BIDAxNzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0wMiAgIChoZXgpCQlWYXJpYW4gTWVkaWNhbCBTeXN0ZW1zCi0wMDA3MDIgICAgIChiYXNlIDE2KQkJVmFyaWFuIE1lZGljYWwgU3lzdGVtcwotCQkJCTI1OTkgR2FyY2lhIEF2ZW51ZQotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTAzICAgKGhleCkJCUNTRUUgVHJhbnNwb3J0Ci0wMDA3MDMgICAgIChiYXNlIDE2KQkJQ1NFRSBUcmFuc3BvcnQKLQkJCQk0LCBhdmVudWUgZHUgQ0FOQURBCi0JCQkJQi5QLiAyNDMtOTE5NDQgTGVzIFVsaXMKLQkJCQlGUkFOQ0UKLQotMDAtMDctMDQgICAoaGV4KQkJQUxQUyBFbGVjdHJpYyBDbywuIEx0ZC4KLTAwMDcwNCAgICAgKGJhc2UgMTYpCQlBTFBTIEVsZWN0cmljIENvLC4gTHRkLgotCQkJCTYtMy0zNiBGdXJ1a2F3YW5ha2F6YXRvLAotCQkJCU9zYWtpIE1peWFnaS1wcmVmIDk4OS02MTgxCi0JCQkJSkFQQU4KLQotMDAtMDctMDUgICAoaGV4KQkJRW5kcmVzcyAmIEhhdXNlciBHbWJIICYgQ28KLTAwMDcwNSAgICAgKGJhc2UgMTYpCQlFbmRyZXNzICYgSGF1c2VyIEdtYkggJiBDbwotCQkJCUhhdXB0c3RyYWJlIDEgLSBQb3N0ZmFjaCAxMjYxCi0JCQkJRC03OTY4OSBNYXVsYmVyZwotCQkJCUdFUk1BTlkKLQotMDAtMDctMDYgICAoaGV4KQkJU2Fucml0eiBDb3Jwb3JhdGlvbgotMDAwNzA2ICAgICAoYmFzZSAxNikJCVNhbnJpdHogQ29ycG9yYXRpb24KLQkJCQkxOTktMSwgU2hpbW9vaWJ1a3VybywKLQkJCQlLYXdhZ29lLWNpdHksIFNhaXRhbWEKLQkJCQkzNTAtMDg0OAotCQkJCUpBUEFOCi0KLTAwLTA3LTA3ICAgKGhleCkJCUludGVyYWxpYSBJbmMuCi0wMDA3MDcgICAgIChiYXNlIDE2KQkJSW50ZXJhbGlhIEluYy4KLQkJCQk0MTEwLTc5dGggU3RyZWV0IE4uVy4KLQkJCQlDYWxnYXJ5LCBBbGJlcnRhCi0JCQkJVDNCIDVDMgotCQkJCUNBTkFEQQotCi0wMC0wNy0wOCAgIChoZXgpCQlCaXRyYWdlIEluYy4KLTAwMDcwOCAgICAgKGJhc2UgMTYpCQlCaXRyYWdlIEluYy4KLQkJCQkxMDAgU291dGhwYXJrIEJsdmQuCi0JCQkJU3VpdGUgNDAwCi0JCQkJU2FpbnQgQXVndXN0aW5lIEZMIDMyMDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0wOSAgIChoZXgpCQlXZXN0ZXJzdHJhbmQgVXJmYWJyaWsgQUIKLTAwMDcwOSAgICAgKGJhc2UgMTYpCQlXZXN0ZXJzdHJhbmQgVXJmYWJyaWsgQUIKLQkJCQlCb3ggMTMzCi0JCQkJU0UtNTQ1IDIzIFRvcmVib2RhCi0JCQkJU1dFREVOCi0KLTAwLTA3LTBBICAgKGhleCkJCVVuaWNvbSBBdXRvbWF0aW9uIENvLiwgTHRkLgotMDAwNzBBICAgICAoYmFzZSAxNikJCVVuaWNvbSBBdXRvbWF0aW9uIENvLiwgTHRkLgotCQkJCVNpbGsgQmxkZyAzLTMxLTExCi0JCQkJSG9uY2hvLCBOYWthbm8ta3UsCi0JCQkJVG9reW8gIDE2NC0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMDctMEIgICAoaGV4KQkJTm92YWJhc2UgU0dQUywgU0EKLTAwMDcwQiAgICAgKGJhc2UgMTYpCQlOb3ZhYmFzZSBTR1BTLCBTQQotCQkJCUF2LiBEIEpvYW8gSUksIExvdGUgMS4wMy4yLjMKLQkJCQlQYXJxdWUgZGFzIE5hY29lcwotCQkJCUxpc2JvYSAgMTk5OC0wMzEKLQkJCQlQT1JUVUdBTAotCi0wMC0wNy0wQyAgIChoZXgpCQlTVkEtSW50cnVzaW9uLmNvbSBDby4gTHRkLgotMDAwNzBDICAgICAoYmFzZSAxNikJCVNWQS1JbnRydXNpb24uY29tIENvLiBMdGQuCi0JCQkJVGhlIDR0aCBGbG9vciwgTm8uIDI4IEJ1aWxkaW5nCi0JCQkJMTQwIFRpYW4gTGluIFJvYWQKLQkJCQlTaGFuZ2hhaSAgMjAyMzMKLQkJCQlDSElOQQotCi0wMC0wNy0wRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDcwRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQlTSi1NLzEKLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTBFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMgSW5jLgotMDAwNzBFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMgSW5jLgotCQkJCVNKLU0vMQotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMEYgICAoaGV4KQkJRnVqYW50LCBJbmMuCi0wMDA3MEYgICAgIChiYXNlIDE2KQkJRnVqYW50LCBJbmMuCi0JCQkJNjMwNSBDYXJwaW50ZXJpYSBBdmVudWUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlDYXJwaW50ZXJpYSBDQSA5MzAxMy0yOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0xMCAgIChoZXgpCQlBZGF4LCBJbmMuCi0wMDA3MTAgICAgIChiYXNlIDE2KQkJQWRheCwgSW5jLgotCQkJCTYxNCBCYW5jcm9mdCBXYXkKLQkJCQlCZXJrZWxleSBDQSA5NDU1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMTEgICAoaGV4KQkJQWN0ZXJuYQotMDAwNzExICAgICAoYmFzZSAxNikJCUFjdGVybmEKLQkJCQk2NjIwIE5ldHdvcmsgV2F5Ci0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2Mjc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0xMiAgIChoZXgpCQlKQUwgSW5mb3JtYXRpb24gVGVjaG5vbG9neQotMDAwNzEyICAgICAoYmFzZSAxNikJCUpBTCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5Ci0JCQkJTmV0d29yayBTb2x1dGlvbiBEZXAuIEpBTC1UYW1hY2hpIEJsZGcuCi0JCQkJMTUtMSwgU2hpYnVyYSwgNC1jaG9tZSwgTWluYXRvLWt1LAotCQkJCVRva3lvICAKLQkJCQlKQVBBTgotCi0wMC0wNy0xMyAgIChoZXgpCQlJUCBPbmUsIEluYy4KLTAwMDcxMyAgICAgKGJhc2UgMTYpCQlJUCBPbmUsIEluYy4KLQkJCQlTYW1taSBCbGRnLiwgMTAwNAotCQkJCURhZWNoaS1kb25nIEdhbmduYW0tZ3UsCi0JCQkJU2VvdWwsICAxMzUtMDgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTE0ICAgKGhleCkJCUJyaWdodGNvbQotMDAwNzE0ICAgICAoYmFzZSAxNikJCUJyaWdodGNvbQotCQkJCTYgSGFuZWNob3NoZXQgU3QuLAotCQkJCVRlbCBBdml2IDY5NzEwCi0JCQkJSVNSQUVMCi0KLTAwLTA3LTE1ICAgKGhleCkJCUdlbmVyYWwgUmVzZWFyY2ggb2YgRWxlY3Ryb25pY3MsIEluYy4KLTAwMDcxNSAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIFJlc2VhcmNoIG9mIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMy0xMi0xNywgTWl0YSwgTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwOC0wMDczCi0JCQkJSkFQQU4KLQotMDAtMDctMTYgICAoaGV4KQkJSiAmIFMgTWFyaW5lIEx0ZC4KLTAwMDcxNiAgICAgKGJhc2UgMTYpCQlKICYgUyBNYXJpbmUgTHRkLgotCQkJCVBvdHRpbmd0b24gQnVzaW5lc3MgUGFyawotCQkJCUJhcm5zdGFwbGUKLQkJCQlEZXZvbiAgRVgzMSAxTFkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNy0xNyAgIChoZXgpCQlXaWVsYW5kIEVsZWN0cmljIEdtYkgKLTAwMDcxNyAgICAgKGJhc2UgMTYpCQlXaWVsYW5kIEVsZWN0cmljIEdtYkgKLQkJCQlCcmVubmVyc3RyLiAxMC0xNAotCQkJCUQtOTYwNTIgQmFtYmVyZwotCQkJCUdFUk1BTlkKLQotMDAtMDctMTggICAoaGV4KQkJaUNhblRlayBDby4sIEx0ZC4KLTAwMDcxOCAgICAgKGJhc2UgMTYpCQlpQ2FuVGVrIENvLiwgTHRkLgotCQkJCTJuZCBGbC4gREsgUGxhemEgSUksIDM3Ni01LAotCQkJCUtldW1nb2stZG9uZywgQnVtZGFnLWt1LAotCQkJCVN1bmdtYW4tc2ksIEt5b25nZ2ktZG8gIDQ2My04MDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMTkgICAoaGV4KQkJTW9iaWlzIENvLiwgTHRkLgotMDAwNzE5ICAgICAoYmFzZSAxNikJCU1vYmlpcyBDby4sIEx0ZC4KLQkJCQkyNzctMSwgU2hpbmh3YSBCbGRnLiA0RgotCQkJCVlhbmdqYWUtZG9uZywgU2VvY2hvLWd1LAotCQkJCVNlb3VsLCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTFBICAgKGhleCkJCUZpbmVkaWdpdGFsIEluYy4KLTAwMDcxQSAgICAgKGJhc2UgMTYpCQlGaW5lZGlnaXRhbCBJbmMuCi0JCQkJNHRoIEZsLiBCb21pIEJsZGcuLCA2NjEgRGV1bmdjaG9uIDMgRG9uZwotCQkJCUthbmdzZW8ga3UsCi0JCQkJU2VvdWwgIDE1Ny0wMzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMUIgICAoaGV4KQkJQ0RWIEFtZXJpY2FzIEx0ZAotMDAwNzFCICAgICAoYmFzZSAxNikJCUNEViBBbWVyaWNhcyBMdGQKLQkJCQkxNjQ1LUEgQXV0b3JvdXRlIExhdmFsIFdlc3QKLQkJCQlMYXZhbCBRdWViZWMgSDdMIDNXMwotCQkJCUNBTkFEQQotCi0wMC0wNy0xQyAgIChoZXgpCQlBVCZUIEZpeGVkIFdpcmVsZXNzIFNlcnZpY2VzCi0wMDA3MUMgICAgIChiYXNlIDE2KQkJQVQmVCBGaXhlZCBXaXJlbGVzcyBTZXJ2aWNlcwotCQkJCVAuTy4gQm94IDkwNzU5Ci0JCQkJUmVkbW9uZCBXQSA5ODA3My05NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0xRCAgIChoZXgpCQlTYXRlbHNhIFNpc3RlbWFzIFkgQXBsaWNhY2lvbmVzIERlIFRlbGVjb211bmljYWNpb25lcywgUy5BLgotMDAwNzFEICAgICAoYmFzZSAxNikJCVNhdGVsc2EgU2lzdGVtYXMgWSBBcGxpY2FjaW9uZXMgRGUgVGVsZWNvbXVuaWNhY2lvbmVzLCBTLkEuCi0JCQkJYy8sIEFsZWphbmRybyBNb3JhbiwgNTYKLQkJCQkyODAyNS1NYWRyaWQKLQkJCQlTUEFJTgotCi0wMC0wNy0xRSAgIChoZXgpCQlUcmktTSBFbmdpbmVlcmluZyAvIE51cGFrIERldi4gQ29ycC4KLTAwMDcxRSAgICAgKGJhc2UgMTYpCQlUcmktTSBFbmdpbmVlcmluZyAvIE51cGFrIERldi4gQ29ycC4KLQkJCQk2LTEzMDEgS2V0Y2ggQ291cnQKLQkJCQlDb3F1aXRjYXV0IEJDCi0JCQkJVjNLIDZYNwotCQkJCUNBTkFEQQotCi0wMC0wNy0xRiAgIChoZXgpCQlFdXJvcGVhbiBTeXN0ZW1zIEludGVncmF0aW9uCi0wMDA3MUYgICAgIChiYXNlIDE2KQkJRXVyb3BlYW4gU3lzdGVtcyBJbnRlZ3JhdGlvbgotCQkJCTQ1NSBQcm9tZW5hZGUgRGVzIEFuZ2xhcwotCQkJCUYtMDYyMDAgTmljZQotCQkJCUZSQU5DRQotCi0wMC0wNy0yMCAgIChoZXgpCQlUcnV0enNjaGxlciBHbWJIICYgQ28uIEtHCi0wMDA3MjAgICAgIChiYXNlIDE2KQkJVHJ1dHpzY2hsZXIgR21iSCAmIENvLiBLRwotCQkJCUR1dmVuc3RyLiA4Mi05MgotCQkJCTQxMTk5IE1vbmNoZW5nbGFkYmFjaAotCQkJCUdFUk1BTlkKLQotMDAtMDctMjEgICAoaGV4KQkJRm9ybWFjIEVsZWt0cm9uaWsgR21iSAotMDAwNzIxICAgICAoYmFzZSAxNikJCUZvcm1hYyBFbGVrdHJvbmlrIEdtYkgKLQkJCQlEb2ZzdHIuIDMzCi0JCQkJMTU4MjcgQmxhbmtlbnRlbGRlCi0JCQkJR0VSTUFOWQotCi0wMC0wNy0yMiAgIChoZXgpCQlUaGUgTmllbHNlbiBDb21wYW55Ci0wMDA3MjIgICAgIChiYXNlIDE2KQkJVGhlIE5pZWxzZW4gQ29tcGFueQotCQkJCTUwMSBCcm9va2VyIENyZWVrIEJsdmQuCi0JCQkJT2xkc21hciBGTCAzNDY3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMjMgICAoaGV4KQkJRUxDT04gU3lzdGVtdGVjaG5payBHbWJICi0wMDA3MjMgICAgIChiYXNlIDE2KQkJRUxDT04gU3lzdGVtdGVjaG5payBHbWJICi0JCQkJT2JlcmUgSGF1cHRzdHJhc3NlIDEwCi0JCQkJRC0wOTIzMiBIYXJ0bWFubnNkb3JmCi0JCQkJR0VSTUFOWQotCi0wMC0wNy0yNCAgIChoZXgpCQlUZWxlbWF4IENvLiwgTHRkLgotMDAwNzI0ICAgICAoYmFzZSAxNikJCVRlbGVtYXggQ28uLCBMdGQuCi0JCQkJNnRoIEZsLiBTdW5nd29vIEIvRCwgMTA5OS0xCi0JCQkJU2FuYm9uLURvbmcsIEt1bnBvLXNoaQotCQkJCUt5dW5na2ktRG8sICA0MzUtMDQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTI1ICAgKGhleCkJCUJlbWF0ZWNoIEludGVybmF0aW9uYWwgQ29ycC4KLTAwMDcyNSAgICAgKGJhc2UgMTYpCQlCZW1hdGVjaCBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJNTg5NSBTaGlsb2ggUm9hZAotCQkJCVN1aXRlIDExMQotCQkJCUFscGhhcmV0dGEgR0EgMzAwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTI2ICAgKGhleCkJCVNoZW56aGVuIEdvbmdqaW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA3MjYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQlBMjExLUEyMTMgJiBCMjAxLUIyMTAsIDJGLCBCYWl5aW5nIEJ1aWxkaW5nLCAxMDE5IywgTmFuaGFpIFJELCBTaGVrb3UgUGFydHksIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNjcKLQkJCQlDSElOQQotCi0wMC0wNy0yNyAgIChoZXgpCQlaaSBDb3Jwb3JhdGlvbiAoSEspIEx0ZC4KLTAwMDcyNyAgICAgKGJhc2UgMTYpCQlaaSBDb3Jwb3JhdGlvbiAoSEspIEx0ZC4KLQkJCQkzMC9GLCBDaGluYSBSZXNvdXJjZXMgQnVpbGRpbmcKLQkJCQkyNiBIYXJib3VyIFJvYWQsIFdhaWNoYWksCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA3LTI4ICAgKGhleCkJCU5lbyBUZWxlY29tCi0wMDA3MjggICAgIChiYXNlIDE2KQkJTmVvIFRlbGVjb20KLQkJCQlFYXN0IEJ1aWxkaW5nIDlGLCAxVAotCQkJCVZlbnR1cmUgVG93ZXIsIDc4IEdhcmFnLWRvbmcKLQkJCQlTb25ncGEtZ3UsIFNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMjkgICAoaGV4KQkJS2lzdGxlciBJbnN0cnVtZW50ZSBBRwotMDAwNzI5ICAgICAoYmFzZSAxNikJCUtpc3RsZXIgSW5zdHJ1bWVudGUgQUcKLQkJCQlFdWxhY2hzdHJhc3NlIDIyCi0JCQkJQ0gtODQwOCBXaW50ZXJ0aHVyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDctMkEgICAoaGV4KQkJSW5ub3ZhbmNlIE5ldHdvcmtzCi0wMDA3MkEgICAgIChiYXNlIDE2KQkJSW5ub3ZhbmNlIE5ldHdvcmtzCi0JCQkJMTkgRmFpcm1vbnQgQXZlbnVlCi0JCQkJT3R0YXdhLCBPbnRhcmlvIEsxWSAxWDQKLQkJCQlDQU5BREEKLQotMDAtMDctMkIgICAoaGV4KQkJSnVuZyBNeXVuZyBUZWxlY29tIENvLiwgTHRkLgotMDAwNzJCICAgICAoYmFzZSAxNikJCUp1bmcgTXl1bmcgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQk1RmwgU2lsbGEgVGVjaG5vdmlsLiwgMzktMyBEYW5nLURvbmcKLQkJCQlLb29ucG8tc2hpLCBLeXVuZyBLaS1EbwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0yQyAgIChoZXgpCQlGYWJyaWNvbQotMDAwNzJDICAgICAoYmFzZSAxNikJCUZhYnJpY29tCi0JCQkJUnVlIEdhdHRpIERlIEdhbW9uZCAyNTQKLQkJCQkxMTkwIEJydXhlbGxlcwotCQkJCUJFTEdJVU0KLQotMDAtMDctMkQgICAoaGV4KQkJQ05TeXN0ZW1zCi0wMDA3MkQgICAgIChiYXNlIDE2KQkJQ05TeXN0ZW1zCi0JCQkJQmF1bWtpcmNoZXJzdHJhc3NlIDEKLQkJCQlBLTgwMjAgR3JhegotCQkJCUFVU1RSSUEKLQotMDAtMDctMkUgICAoaGV4KQkJTm9ydGggTm9kZSBBQgotMDAwNzJFICAgICAoYmFzZSAxNikJCU5vcnRoIE5vZGUgQUIKLQkJCQlTa2VwcHNsb3JvbiA0MgotCQkJCTExMzAgU3RvY2tob2xtCi0JCQkJU1dFREVOCi0KLTAwLTA3LTJGICAgKGhleCkJCUludHJhbnNhLCBJbmMuCi0wMDA3MkYgICAgIChiYXNlIDE2KQkJSW50cmFuc2EsIEluYy4KLQkJCQkyNjcwIFphbmtlcgotCQkJCVN1aXRlIDIwMAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0zMCAgIChoZXgpCQlIdXRjaGlzb24gT1BURUwgVGVsZWNvbSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNzMwICAgICAoYmFzZSAxNikJCUh1dGNoaXNvbiBPUFRFTCBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDI4IFhpbndhaSBTdHJlZXQKLQkJCQlCZWlqaW5nICAKLQkJCQlDSElOQQotCi0wMC0wNy0zMSAgIChoZXgpCQlPcGhpci1TcGlyaWNvbiBJbmMKLTAwMDczMSAgICAgKGJhc2UgMTYpCQlPcGhpci1TcGlyaWNvbiBJbmMKLQkJCQk2MCBXIDEwMDAgTgotCQkJCUxvZ2FuIFVUIDg0MzIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0zMiAgIChoZXgpCQlBQUVPTiBUZWNobm9sb2d5IEluYy4KLTAwMDczMiAgICAgKGJhc2UgMTYpCQlBQUVPTiBUZWNobm9sb2d5IEluYy4KLQkJCQk1RiwgIzEzNSwgTGFuZSAyMzUsIFBhbyBDaGlhbyBSb2FkCi0JCQkJSHNpbi1UaWVuIENpdHkKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDctMzMgICAoaGV4KQkJREFOQ09OVFJPTCBFbmdpbmVlcmluZwotMDAwNzMzICAgICAoYmFzZSAxNikJCURBTkNPTlRST0wgRW5naW5lZXJpbmcKLQkJCQlJdGFsaWVuc3ZlaiAxLTUKLQkJCQlESy04NDUwIEhhbW1lbAotCQkJCURFTk1BUksKLQotMDAtMDctMzQgICAoaGV4KQkJT05TdG9yLCBJbmMuCi0wMDA3MzQgICAgIChiYXNlIDE2KQkJT05TdG9yLCBJbmMuCi0JCQkJMTMwLUIgS25vd2xlcyBEcml2ZQotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMzUgICAoaGV4KQkJRmxhcmlvbiBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDczNSAgICAgKGJhc2UgMTYpCQlGbGFyaW9uIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEzNSBSb3V0ZSAyMDIvMjA2IFNvdXRoCi0JCQkJQmVkbWluc3RlciBOSiAwNzkyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMzYgICAoaGV4KQkJRGF0YSBWaWRlbyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDA3MzYgICAgIChiYXNlIDE2KQkJRGF0YSBWaWRlbyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJN0YsIE5vLiAzNTIsIFNlYy4gMgotCQkJCUNodW5nLVNoYW4gUmQuLCBDaHVuZy1IbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTM3ICAgKGhleCkJCVNvcml5YSBDby4gTHRkLgotMDAwNzM3ICAgICAoYmFzZSAxNikJCVNvcml5YSBDby4gTHRkLgotCQkJCTIsIDh0aCBGbG9vciBIYW5zaGluIEIvTywgMTM2LTEsCi0JCQkJSGFwby1kb25nLCBNYXBvLWd1LAotCQkJCVNlb3VsLCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTM4ICAgKGhleCkJCVlvdW5nIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA3MzggICAgIChiYXNlIDE2KQkJWW91bmcgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlELTYwNCwgU2lnbWEtSUkgT2ZmaWNldGVsLAotCQkJCSMxOCwgR3VtaS1kb25nLCBCdW5kZ2FuZy1ndSwKLQkJCQlTdW5nbmFtLXNpLCBLeWVvbmdnaS1kbyA3NjMtNzQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTM5ICAgKGhleCkJCVNjb3R0eSBHcm91cCBBdXN0cmlhIEdtYmgKLTAwMDczOSAgICAgKGJhc2UgMTYpCQlTY290dHkgR3JvdXAgQXVzdHJpYSBHbWJoCi0JCQkJVGVzbGFzdHJhc3NlIDQKLQkJCQk4MDc0IEdyYW1iYWNoICA4MDc0Ci0JCQkJQVVTVFJJQQotCi0wMC0wNy0zQSAgIChoZXgpCQlJbnZlbnRlbCBTeXN0ZW1lcwotMDAwNzNBICAgICAoYmFzZSAxNikJCUludmVudGVsIFN5c3RlbWVzCi0JCQkJMzUsIHJ1ZSBUb3VtZWZvcnQKLQkJCQk3NTAwNSBQYXJpcwotCQkJCUZSQU5DRQotCi0wMC0wNy0zQiAgIChoZXgpCQlUZW5vdmlzIEdtYkggJiBDbyBLRwotMDAwNzNCICAgICAoYmFzZSAxNikJCVRlbm92aXMgR21iSCAmIENvIEtHCi0JCQkJS2xleWVyc3RyYXNzZSA5NAotCQkJCTYwMzI2IEZyYW5rZnVydAotCQkJCUdFUk1BTlkKLQotMDAtMDctM0MgICAoaGV4KQkJVGVsZWNvbSBEZXNpZ24KLTAwMDczQyAgICAgKGJhc2UgMTYpCQlUZWxlY29tIERlc2lnbgotCQkJCVZvaWUgUm9tYWluZSwgWm9uZSBkZSBSZW1vcmEKLQkJCQkzMzE3MCBHcmFkaWduYW4KLQkJCQlGUkFOQ0UKLQotMDAtMDctM0QgICAoaGV4KQkJTmFuamluZyBQb3N0ZWwgVGVsZWNvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDAwNzNEICAgICAoYmFzZSAxNikJCU5hbmppbmcgUG9zdGVsIFRlbGVjb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQlOby4gMTg3LCBTaGVuZ1pob3UgUm9hZCwKLQkJCQlOYW5qaW5nIENpdHksIEppYW5nc3UKLQkJCQkyMTAwMDQKLQkJCQlDSElOQQotCi0wMC0wNy0zRSAgIChoZXgpCQlDaGluYSBHcmVhdC1XYWxsIENvbXB1dGVyIFNoZW56aGVuIENvLiwgTHRkLgotMDAwNzNFICAgICAoYmFzZSAxNikJCUNoaW5hIEdyZWF0LVdhbGwgQ29tcHV0ZXIgU2hlbnpoZW4gQ28uLCBMdGQuCi0JCQkJUmVzZWFyY2ggJiBEZXZlbG9wbWVudCBDZW50ZXIsIEtlZmEgUm9hZAotCQkJCVNjaWVuY2UgSW5kdXN0cnkgUGFyaywgTmFuc2hhbiBEaXNjdHJpY3QKLQkJCQlTaGVuemhlbiAgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMDctM0YgICAoaGV4KQkJV29vanl1biBTeXN0ZWMgQ28uLCBMdGQuCi0wMDA3M0YgICAgIChiYXNlIDE2KQkJV29vanl1biBTeXN0ZWMgQ28uLCBMdGQuCi0JCQkJNEYgSGFuIFlhbmcgQi9ELCBZb2lkby1kb25nCi0JCQkJWW91bmcgRGVvbmcgUG8ta3UKLQkJCQlTZW91bCAgMTUwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy00MCAgIChoZXgpCQlCdWZmYWxvLCBJbmMKLTAwMDc0MCAgICAgKGJhc2UgMTYpCQlCdWZmYWxvLCBJbmMKLQkJCQlNRUxDTyBISS1URUNIIENFTlRFUiwKLQkJCQk0LTE1ICBTaGliYXRhLCBIb25kb3JpLCAKLQkJCQlNSU5BTUktS1UsIE5BR09ZQSBBaWNoaSAKLQkJCQlKQVBBTgotCi0wMC0wNy00MSAgIChoZXgpCQlTaWVycmEgQXV0b21hdGVkIFN5c3RlbXMKLTAwMDc0MSAgICAgKGJhc2UgMTYpCQlTaWVycmEgQXV0b21hdGVkIFN5c3RlbXMKLQkJCQkyNjI1IE5vcnRoIFNhbiBGZXJuYW5kbyBCbHZkLgotCQkJCUJ1cmJhbmsgQ0EgOTE1MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTQyICAgKGhleCkJCUN1cnJlbnQgVGVjaG5vbG9naWVzLCBMTEMKLTAwMDc0MiAgICAgKGJhc2UgMTYpCQlDdXJyZW50IFRlY2hub2xvZ2llcywgTExDCi0JCQkJMjA0MjAgQ2VudHVyeSBCbHZkCi0JCQkJR2VybWFudG93biBNRCAyMDg3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNDMgICAoaGV4KQkJQ2hlbHNpbyBDb21tdW5pY2F0aW9ucwotMDAwNzQzICAgICAoYmFzZSAxNikJCUNoZWxzaW8gQ29tbXVuaWNhdGlvbnMKLQkJCQkxNzAgUy4gV2hpc21vbiBSZC4KLQkJCQlCbGRnLiBELCBTdGUgQQotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEtMTUxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNDQgICAoaGV4KQkJVW5pY28sIEluYy4KLTAwMDc0NCAgICAgKGJhc2UgMTYpCQlVbmljbywgSW5jLgotCQkJCTM3MjUgTmljaG9sc29uIFJkLgotCQkJCUZyYW5rc3ZpbGxlIFdJIDUzMTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy00NSAgIChoZXgpCQlSYWRsYW4gQ29tcHV0ZXIgQ29tbXVuaWNhdGlvbnMgTHRkLgotMDAwNzQ1ICAgICAoYmFzZSAxNikJCVJhZGxhbiBDb21wdXRlciBDb21tdW5pY2F0aW9ucyBMdGQuCi0JCQkJQXRpZGltIFRlY2hub2xvZ3kgUGFyawotCQkJCUJsZGcuIDQKLQkJCQlUZWwgQXZpdiAgNjExMzEKLQkJCQlJU1JBRUwKLQotMDAtMDctNDYgICAoaGV4KQkJVFVSQ0ssIEluYy4KLTAwMDc0NiAgICAgKGJhc2UgMTYpCQlUVVJDSywgSW5jLgotCQkJCTMwMDAgQ2FtcHVzIERyaXZlCi0JCQkJUGx5bW91dGggTU4gNTU0NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTQ3ICAgKGhleCkJCU1lY2FsYwotMDAwNzQ3ICAgICAoYmFzZSAxNikJCU1lY2FsYwotCQkJCVBPIEJveCA3OTU4Ci0JCQkJQ2VudHVyaW9uIDAwNDYKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMDctNDggICAoaGV4KQkJVGhlIEltYWdpbmcgU291cmNlIEV1cm9wZQotMDAwNzQ4ICAgICAoYmFzZSAxNikJCVRoZSBJbWFnaW5nIFNvdXJjZSBFdXJvcGUKLQkJCQlTb21tZXJzdHJhc3NlIDM0LTM2Ci0JCQkJMjgyMTUgQnJlbWFuCi0JCQkJR0VSTUFOWQotCi0wMC0wNy00OSAgIChoZXgpCQlDRU5pWCBJbmMuCi0wMDA3NDkgICAgIChiYXNlIDE2KQkJQ0VOaVggSW5jLgotCQkJCTUxNDEgQ2FsaWZvcm5pYSBBdmVudWUKLQkJCQlJcnZpbmUgQ0EgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTRBICAgKGhleCkJCUNhcmwgVmFsZW50aW4gR21iSAotMDAwNzRBICAgICAoYmFzZSAxNikJCUNhcmwgVmFsZW50aW4gR21iSAotCQkJCU5lY2thcnN0cmFiZSA3OC04MAotCQkJCUQtNzgwNTYgVlMtU2Nod2VubmluZ2VuCi0JCQkJR0VSTUFOWQotCi0wMC0wNy00QiAgIChoZXgpCQlEYWloZW4gQ29ycG9yYXRpb24KLTAwMDc0QiAgICAgKGJhc2UgMTYpCQlEYWloZW4gQ29ycG9yYXRpb24KLQkJCQkyLTEtMTEgVGFnYXdhIFlvZG9nYXdhLWt1Ci0JCQkJT3Nha2EgNTMyLTg1MTIKLQkJCQlKQVBBTgotCi0wMC0wNy00QyAgIChoZXgpCQlCZWljb20gSW5jLgotMDAwNzRDICAgICAoYmFzZSAxNikJCUJlaWNvbSBJbmMuCi0JCQkJMTE0IEtpbmcgU3RyZWV0Ci0JCQkJQWxleGFuZHJpYSBWQSAyMjMxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNEQgICAoaGV4KQkJWmVicmEgVGVjaG5vbG9naWVzIENvcnAuCi0wMDA3NEQgICAgIChiYXNlIDE2KQkJWmVicmEgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJMzMzIENvcnBvcmF0ZSBXb29kcyBQYXJrd2F5Ci0JCQkJVmVybm9uIEhpbGxzIElMIDYwMDYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy00RSAgIChoZXgpCQlOYXVnaHR5IGJveSBjby4sIEx0ZC4KLTAwMDc0RSAgICAgKGJhc2UgMTYpCQlOYXVnaHR5IGJveSBjby4sIEx0ZC4KLQkJCQlQYXJsIEJsZGcuIDZGLCAzLTE1LTUgU2hpYnV5YQotCQkJCVNoaWJ1eWEta3UsIFRva3lvCi0JCQkJMTUwLTAwMDIKLQkJCQlKQVBBTgotCi0wMC0wNy00RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA3NEYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNTAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNzUwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTUxICAgKGhleCkJCW23dbd0IEFHCi0wMDA3NTEgICAgIChiYXNlIDE2KQkJbbd1t3QgQUcKLQkJCQlNZd9nZXLkdGUgZvxyIE1lZGl6aW4tIHVuZCBVbXdlbHR0ZWNobmlrCi0JCQkJQW0gTWFyaWVuaG9mIDIKLQkJCQlXZWRlbCAgMjI4ODAKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTUyICAgKGhleCkJCVJoeXRobSBXYXRjaCBDby4sIEx0ZC4KLTAwMDc1MiAgICAgKGJhc2UgMTYpCQlSaHl0aG0gV2F0Y2ggQ28uLCBMdGQuCi0JCQkJMzIxIFNoaW5zaHVrdXNoaW5kZW4sIFNob3dhLU1hY2hpLAotCQkJCUtpdGFrYXRzaGlrYS1HdW4sIFNhaXRhbWEKLQkJCQkzNDQtMDE5NgotCQkJCUpBUEFOCi0KLTAwLTA3LTUzICAgKGhleCkJCUJlaWppbmcgUXhjb21tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA3NTMgICAgIChiYXNlIDE2KQkJQmVpamluZyBReGNvbW0gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk0RiBUb3dlciBCLCBUb25nVGFpIEJ1aWxkaW5nIE5vLiAzMywKLQkJCQlGaW5hbmNpYWwgU3RyZWV0LCBYaWNoZW5nIERpc3RyaWN0LAotCQkJCUJlaWppbmcgMTAwMDMyICAKLQkJCQlDSElOQQotCi0wMC0wNy01NCAgIChoZXgpCQlYeXRlcnJhIENvbXB1dGluZywgSW5jLgotMDAwNzU0ICAgICAoYmFzZSAxNikJCVh5dGVycmEgQ29tcHV0aW5nLCBJbmMuCi0JCQkJMTQ1MDUgSGF5ZGVuIFJkLiwKLQkJCQlTdWl0ZSBCMzQwCi0JCQkJU2NvdHRzZGFsZSBBWiA4NTI2MC02OTUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy01NSAgIChoZXgpCQlMYWZvbiBTQQotMDAwNzU1ICAgICAoYmFzZSAxNikJCUxhZm9uIFNBCi0JCQkJNDQgQXZlbnVlIFZpY3RvciBNZXVuaWVyCi0JCQkJIEJhc3NlbnMgIDMzNTMwCi0JCQkJRlJBTkNFCi0KLTAwLTA3LTU2ICAgKGhleCkJCUp1eW91bmcgVGVsZWNvbQotMDAwNzU2ICAgICAoYmFzZSAxNikJCUp1eW91bmcgVGVsZWNvbQotCQkJCSMyMDEsIER1bnNhbiBCdWlsZGluZwotCQkJCTIxOC0xIFdhbHB5ZW5nLURvbmcsIFNlb2d1LAotCQkJCVRhZWpvbiAgMzAyLTg0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy01NyAgIChoZXgpCQlUb3BjYWxsIEludGVybmF0aW9uYWwgQUcKLTAwMDc1NyAgICAgKGJhc2UgMTYpCQlUb3BjYWxsIEludGVybmF0aW9uYWwgQUcKLQkJCQlUYWxwYWdhc3NlIDEKLQkJCQkxMjMwIFZpZW5uYQotCQkJCUFVU1RSSUEKLQotMDAtMDctNTggICAoaGV4KQkJRHJhZ29ud2F2ZQotMDAwNzU4ICAgICAoYmFzZSAxNikJCURyYWdvbndhdmUKLQkJCQk2MDAtNDExIExlZ2dldHQgRHJpdmUsCi0JCQkJU3VpdGUgNjAwCi0JCQkJS2FuYXRhLCBPbnRhcmlvIEsySyAzQzkKLQkJCQlDQU5BREEKLQotMDAtMDctNTkgICAoaGV4KQkJQm9yaXMgTWFudWZhY3R1cmluZyBDb3JwLgotMDAwNzU5ICAgICAoYmFzZSAxNikJCUJvcmlzIE1hbnVmYWN0dXJpbmcgQ29ycC4KLQkJCQlQTyBCb3ggNjAxCi0JCQkJQ2FzdGxlIFBvaW50IE5ZIDEyNTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy01QSAgIChoZXgpCQlBaXIgUHJvZHVjdHMgYW5kIENoZW1pY2FscywgSW5jLgotMDAwNzVBICAgICAoYmFzZSAxNikJCUFpciBQcm9kdWN0cyBhbmQgQ2hlbWljYWxzLCBJbmMuCi0JCQkJNzIwMSBIYW1pbHRvbiBCbHZkLgotCQkJCU1haWwgU3RvcCBDMTMwNwotCQkJCUFsbGVudG93biBQQSAxODE5NS0xNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy01QiAgIChoZXgpCQlHaWJzb24gR3VpdGFycwotMDAwNzVCICAgICAoYmFzZSAxNikJCUdpYnNvbiBHdWl0YXJzCi0JCQkJMzA5IFBhcmsgUGx1cyBCbHZkLgotCQkJCU5hc2h2aWxsZSBUTiAzNzIxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNUMgICAoaGV4KQkJRWFzdG1hbiBLb2RhayBDb21wYW55Ci0wMDA3NUMgICAgIChiYXNlIDE2KQkJRWFzdG1hbiBLb2RhayBDb21wYW55Ci0JCQkJMzQzIFN0YXRlIFN0cmVldAotCQkJCVJvY2hlc3RlciBOWSAxNDY1MC0wMTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy01RCAgIChoZXgpCQlDZWxsZXJpdGFzIEluYy4KLTAwMDc1RCAgICAgKGJhc2UgMTYpCQlDZWxsZXJpdGFzIEluYy4KLQkJCQljL28gQ2VsZXJpdGFzIEx0ZC4KLQkJCQlCZXphbGVsIDI5LCBSYW1hdC1HYW4KLQkJCQlJU1JBRUwKLQotMDAtMDctNUUgICAoaGV4KQkJQW1ldGVrIFBvd2VyIEluc3RydW1lbnRzCi0wMDA3NUUgICAgIChiYXNlIDE2KQkJQW1ldGVrIFBvd2VyIEluc3RydW1lbnRzCi0JCQkJNDA1MCBOVyAxMjEgQXZlbnVlCi0JCQkJQ29yYWwgU3ByaW5ncyBGTCAzMzA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNUYgICAoaGV4KQkJVkNTIFZpZGVvIENvbW11bmljYXRpb24gU3lzdGVtcyBBRwotMDAwNzVGICAgICAoYmFzZSAxNikJCVZDUyBWaWRlbyBDb21tdW5pY2F0aW9uIFN5c3RlbXMgQUcKLQkJCQlGb3JjaGhlaW1lciBTdHIuIDQKLQkJCQk5MDQyNSBOdWVybmJlcmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTYwICAgKGhleCkJCVRPTUlTIEluZm9ybWF0aW9uICYgVGVsZWNvbSBDb3JwLgotMDAwNzYwICAgICAoYmFzZSAxNikJCVRPTUlTIEluZm9ybWF0aW9uICYgVGVsZWNvbSBDb3JwLgotCQkJCVlvdW5nZGV1bmdwbyB0ZWxlcGhvbmUgb2ZmaWNlIC0gZXh0ZW5zaW8KLQkJCQlZb3VuZ2RldW5ncG9kb25nIDM1LTEsIFlvdW5nZGV1bmdwby1ndQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctNjEgICAoaGV4KQkJTG9naXRlY2ggU0EKLTAwMDc2MSAgICAgKGJhc2UgMTYpCQlMb2dpdGVjaCBTQQotCQkJCVouSS4gTW91bGluIGR1IENob2MgRAotCQkJCUNILTExMjIgUm9tYW5lbC1zdXItTW9yZ2VzCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDctNjIgICAoaGV4KQkJR3JvdXAgU2Vuc2UgTGltaXRlZAotMDAwNzYyICAgICAoYmFzZSAxNikJCUdyb3VwIFNlbnNlIExpbWl0ZWQKLQkJCQkyNy9GLCBXdSBDaHVuZyBIb3VzZSwKLQkJCQkyMTMgUXVlZW4ncyBSb2FkIEVhc3QsCi0JCQkJV2FuY2hhaSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA3LTYzICAgKGhleCkJCVN1bm5pd2VsbCBDeWJlciBUZWNoLiBDby4sIEx0ZC4KLTAwMDc2MyAgICAgKGJhc2UgMTYpCQlTdW5uaXdlbGwgQ3liZXIgVGVjaC4gQ28uLCBMdGQuCi0JCQkJMTd0aCBGbG9vciBIYWl0YWkgQnVpbGRpbmcgIzIyOQotCQkJCUJlaXNpaHVhbiBIb25nIFJvYWQsCi0JCQkJQmVpamluZyAgMTAwMDgzCi0JCQkJQ0hJTkEKLQotMDAtMDctNjQgICAoaGV4KQkJWW91bmdXb28gVGVsZWNvbSBDby4gTHRkLgotMDAwNzY0ICAgICAoYmFzZSAxNikJCVlvdW5nV29vIFRlbGVjb20gQ28uIEx0ZC4KLQkJCQkzRiwgU2Vod2EgQi9ELCAzNTUtMQotCQkJCVlhdGFwLURvbmcsIEJ1bmRhZy1rdQotCQkJCVN1bmduYW0tU2kgS3l1bmdraS1EbyAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctNjUgICAoaGV4KQkJSmFkZSBRdWFudHVtIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNzY1ICAgICAoYmFzZSAxNikJCUphZGUgUXVhbnR1bSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk1RiwgTm8uIDExNiwgSHNpZW4gRnUgUmQuLAotCQkJCVRhb3l1YW4sCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNy02NiAgIChoZXgpCQlDaG91IENoaW4gSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMDc2NiAgICAgKGJhc2UgMTYpCQlDaG91IENoaW4gSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQk5RiwgIzM1LCBDaGlhdSBBbiBTdC4gQ2h1bmcgSG8gQ2l0eSwKLQkJCQlUYWlwZWkgSHNpZW4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTY3ICAgKGhleCkJCVl1eGluZyBFbGVjdHJvbmljcyBDb21wYW55IExpbWl0ZWQKLTAwMDc2NyAgICAgKGJhc2UgMTYpCQlZdXhpbmcgRWxlY3Ryb25pY3MgQ29tcGFueSBMaW1pdGVkCi0JCQkJVW5pdCAxODA4LCAxOC9GIFRvd2VyIDMsCi0JCQkJRW50ZXJwcmlzZSBTcXVhcmUsIDkgU2hldW5nIFl1ZXQgUm9hZAotCQkJCUtvd2xvb24gQmF5LCBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0wNy02OCAgIChoZXgpCQlEYW5mb3NzIEEvUwotMDAwNzY4ICAgICAoYmFzZSAxNikJCURhbmZvc3MgQS9TCi0JCQkJRTE2LU4xMiwgREstNjQzMCBOb3JkYm9yZwotCQkJCURFTk1BUksKLQotMDAtMDctNjkgICAoaGV4KQkJSXRhbGlhbmEgTWFjY2hpIFNwQQotMDAwNzY5ICAgICAoYmFzZSAxNikJCUl0YWxpYW5hIE1hY2NoaSBTcEEKLQkJCQlWaWEgTWF0dGVvdHRpIDEKLQkJCQkyMTA0MCBPZ2dpb25hIFMuIFN0ZWZhbm8gKFZBKQotCQkJCUlUQUxZCi0KLTAwLTA3LTZBICAgKGhleCkJCU5FWFRFWUUgQ28uLCBMdGQuCi0wMDA3NkEgICAgIChiYXNlIDE2KQkJTkVYVEVZRSBDby4sIEx0ZC4KLQkJCQlTaGluc2VnaSBQbGF6YSA0RiwgOTAwLTksCi0JCQkJUHl1bmdjaG9uLCBEb25nYW4sIEFueWFuZywKLQkJCQlLeXVuZ2dpICA0MzEtMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTZCICAgKGhleCkJCVN0cmFsZm9ycyBBQgotMDAwNzZCICAgICAoYmFzZSAxNikJCVN0cmFsZm9ycyBBQgotCQkJCUxhbmdnYXRhbiAyMQotCQkJCVMtMzQxIDg0IExqdW5nYnkKLQkJCQlTV0VERU4KLQotMDAtMDctNkMgICAoaGV4KQkJRGFlaGFuZXQsIEluYy4KLTAwMDc2QyAgICAgKGJhc2UgMTYpCQlEYWVoYW5ldCwgSW5jLgotCQkJCSM4LTIgQ2h1bmcgSnVuZyBSZCAyLSBHYQotCQkJCVN1ciBEYWUgTW9vbiwKLQkJCQlTZW91bCAgMTIwLTAxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy02RCAgIChoZXgpCQlGbGV4bGlnaHQgTmV0d29ya3MKLTAwMDc2RCAgICAgKGJhc2UgMTYpCQlGbGV4bGlnaHQgTmV0d29ya3MKLQkJCQkxNSBBdGlyIFllZGEgU3QuCi0JCQkJS2ZhciBTYWJhIDQ0NjQzCi0JCQkJSVNSQUVMCi0KLTAwLTA3LTZFICAgKGhleCkJCVNpbmV0aWNhIENvcnBvcmF0aW9uIExpbWl0ZWQKLTAwMDc2RSAgICAgKGJhc2UgMTYpCQlTaW5ldGljYSBDb3Jwb3JhdGlvbiBMaW1pdGVkCi0JCQkJV2lsbG93IEhvdXNlCi0JCQkJTGxhbmNheW8gQ291cnQKLQkJCQlNb25tb3V0aHNoaXJlIFVzayBOUDE1IDFIWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA3LTZGICAgKGhleCkJCVN5bm9wdGljcyBMaW1pdGVkCi0wMDA3NkYgICAgIChiYXNlIDE2KQkJU3lub3B0aWNzIExpbWl0ZWQKLQkJCQlGbG9vZGxpZ2h0IEhvdXNlLCBOdWZmaWVsZCBSb2FkLAotCQkJCUNhbWJyaWRnZSBDQjQgMVRGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctNzAgICAoaGV4KQkJTG9jdXNuZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAwNzcwICAgICAoYmFzZSAxNikJCUxvY3VzbmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQk5dGggRmwuIENodW5namxuCi0JCQkJNTMtNSBXb25oeW8tUm8gM0dhCi0JCQkJU2VvdWwgIDE0MC03MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctNzEgICAoaGV4KQkJRW1iZWRkZWQgU3lzdGVtIENvcnBvcmF0aW9uCi0wMDA3NzEgICAgIChiYXNlIDE2KQkJRW1iZWRkZWQgU3lzdGVtIENvcnBvcmF0aW9uCi0JCQkJMTMtNSwgVGFrYWRhbm9iYWJhIDMtY2hvbWUsCi0JCQkJU2hpbmp1a3Uta3UsIFRva3lvIDE2OS0wMDc1Ci0JCQkJSkFQQU4KLQotMDAtMDctNzIgICAoaGV4KQkJQWxjYXRlbCBTaGFuZ2hhaSBCZWxsIENvLiwgTHRkLgotMDAwNzcyICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgU2hhbmdoYWkgQmVsbCBDby4sIEx0ZC4KLQkJCQlOby4gMzg4LCBOaW5ncWlhbyBSb2FkLAotCQkJCVB1ZG9uZyBKaW5xaWFvLCBTaGFuZ2hhaQotCQkJCTIwMTIwNgotCQkJCUNISU5BCi0KLTAwLTA3LTczICAgKGhleCkJCUFzY29tIFBvd2VybGluZSBDb21tdW5pY2F0aW9ucyBMdGQuCi0wMDA3NzMgICAgIChiYXNlIDE2KQkJQXNjb20gUG93ZXJsaW5lIENvbW11bmljYXRpb25zIEx0ZC4KLQkJCQlCZWxwc3RyLiAzNwotCQkJCTMwMDAgQmVybiAxNAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA3LTc0ICAgKGhleCkJCUd1YW5nWmhvdSBUaGlua2VyIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTAwMDc3NCAgICAgKGJhc2UgMTYpCQlHdWFuZ1pob3UgVGhpbmtlciBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJMTA5IFpob25nc2hhbiBBdmUuLCBUaWFuaGUgRGlzdHJpY3QKLQkJCQlHdWFuZ3pob3UKLQkJCQk1MTA2MzAKLQkJCQlDSElOQQotCi0wMC0wNy03NSAgIChoZXgpCQlWYWxlbmNlIFNlbWljb25kdWN0b3IsIEluYy4KLTAwMDc3NSAgICAgKGJhc2UgMTYpCQlWYWxlbmNlIFNlbWljb25kdWN0b3IsIEluYy4KLQkJCQk0MSBEaXNjb3ZlcnkKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTc2ICAgKGhleCkJCUZlZGVyYWwgQVBECi0wMDA3NzYgICAgIChiYXNlIDE2KQkJRmVkZXJhbCBBUEQKLQkJCQk0Mjc3NSBOaW5lIE1pbGUgUmQuCi0JCQkJTm92aSBNSSA0ODM3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNzcgICAoaGV4KQkJTW90YWggTHRkLgotMDAwNzc3ICAgICAoYmFzZSAxNikJCU1vdGFoIEx0ZC4KLQkJCQk0LTQtNSBLb2lzaGlrYXdhCi0JCQkJQnVua3lvLCBUb2t5bwotCQkJCTExMi0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMDctNzggICAoaGV4KQkJR0VSU1RFTCBHbWJIICYgQ28uIEtHCi0wMDA3NzggICAgIChiYXNlIDE2KQkJR0VSU1RFTCBHbWJIICYgQ28uIEtHCi0JCQkJRWJlcmhhcmQtR2Vyc3RlbC1QbGF0eiAxCi0JCQkJRDQ1NDczCi0JCQkJTfxsaGVpbSBhbiBkZXIgUnVociAgCi0JCQkJR0VSTUFOWQotCi0wMC0wNy03OSAgIChoZXgpCQlTdW5naWwgVGVsZWNvbSBDby4sIEx0ZC4KLTAwMDc3OSAgICAgKGJhc2UgMTYpCQlTdW5naWwgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQkjMzIxLCBHb25nZGFuLURvbmcsCi0JCQkJR3VtaS1DaXR5LCBLeW91bmctQnVrCi0JCQkJNzMwLTAzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy03QSAgIChoZXgpCQlJbmZvd2FyZSBTeXN0ZW0gQ28uLCBMdGQuCi0wMDA3N0EgICAgIChiYXNlIDE2KQkJSW5mb3dhcmUgU3lzdGVtIENvLiwgTHRkLgotCQkJCU1pem9yb2dpIERhaWljaGkgQmxkZyA0IEYKLQkJCQkxLTUtMTMgU2hpbmp1a3UsIFNoaW5qdWt1LWt1Ci0JCQkJVG9reW8gIAotCQkJCUpBUEFOCi0KLTAwLTA3LTdCICAgKGhleCkJCU1pbGxpbWV0cml4IEJyb2FkYmFuZCBOZXR3b3JrcwotMDAwNzdCICAgICAoYmFzZSAxNikJCU1pbGxpbWV0cml4IEJyb2FkYmFuZCBOZXR3b3JrcwotCQkJCUtpYnV0eiBHaXZhdCBIYXNoZWxvc2hhIDQ4ODAwCi0JCQkJSVNSQUVMCi0KLTAwLTA3LTdDICAgKGhleCkJCVdlc3Rlcm1vIFRlbGVpbmR1c3RyaSBBQgotMDAwNzdDICAgICAoYmFzZSAxNikJCVdlc3Rlcm1vIFRlbGVpbmR1c3RyaSBBQgotCQkJCVNFLTY0MCA0MAotCQkJCVN0b3JhIFN1bmRieSAgCi0JCQkJU1dFREVOCi0KLTAwLTA3LTdEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDc3RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy03RSAgIChoZXgpCQlFbHJlc3QgR21iSAotMDAwNzdFICAgICAoYmFzZSAxNikJCUVscmVzdCBHbWJICi0JCQkJTGVpYm5penN0ci4gMTAKLQkJCQlELTczMjMwIEtpcmNoaGVpbQotCQkJCUdFUk1BTlkKLQotMDAtMDctN0YgICAoaGV4KQkJSiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMDc3RiAgICAgKGJhc2UgMTYpCQlKIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTEyNC00IE9qZW9uLURvbmcsIFVsd2FuZy1DaXR5Ci0JCQkJS3l1bmdraS1EbwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy04MCAgIChoZXgpCQlCbHVlZ2lnYSBUZWNobm9sb2dpZXMgT1kKLTAwMDc4MCAgICAgKGJhc2UgMTYpCQlCbHVlZ2lnYSBUZWNobm9sb2dpZXMgT1kKLQkJCQlQLk8uIEJPWCAxMjAKLQkJCQlGSU4tMDI2MzEgRXNwb28gCi0JCQkJRklOTEFORAotCi0wMC0wNy04MSAgIChoZXgpCQlJdHJvbiBJbmMuCi0wMDA3ODEgICAgIChiYXNlIDE2KQkJSXRyb24gSW5jLgotCQkJCTI4MTggTi4gU3VsbGl2YW4gUm9hZAotCQkJCVNwb2thbmUgV0EgOTkyMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTgyICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbgotMDAwNzgyICAgICAoYmFzZSAxNikJCU9yYWNsZSBDb3Jwb3JhdGlvbgotCQkJCTE3IE5ldHdvcmsgQ2lyY2xlCi0JCQkJQnVpbGRpbmcgMTcsIFVNUEsxNy0xMzEKLQkJCQlNZW5sbyBQYXJrIENBIDk1MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy04MyAgIChoZXgpCQlTeW5Db20gTmV0d29yaywgSW5jLgotMDAwNzgzICAgICAoYmFzZSAxNikJCVN5bkNvbSBOZXR3b3JrLCBJbmMuCi0JCQkJNEYsIE5vLiAzMSwgSHNpbnRhaSBSb2FkLCBDaHVwZWkgQ2l0eSwKLQkJCQlIc2luY2h1IEhzaWVuLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDctODQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA3ODQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy04NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDc4NSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTg2ICAgKGhleCkJCVdpcmVsZXNzIE5ldHdvcmtzIEluYy4KLTAwMDc4NiAgICAgKGJhc2UgMTYpCQlXaXJlbGVzcyBOZXR3b3JrcyBJbmMuCi0JCQkJIzMwMCwgMzAxNiBGaWZ0aCBBdmUuIE5FCi0JCQkJQ2FsZ2FyeSwgQWxiZXJ0YQotCQkJCVQyQSA2SzQKLQkJCQlDQU5BREEKLQotMDAtMDctODcgICAoaGV4KQkJSWRlYSBTeXN0ZW0gQ28uLCBMdGQuCi0wMDA3ODcgICAgIChiYXNlIDE2KQkJSWRlYSBTeXN0ZW0gQ28uLCBMdGQuCi0JCQkJNC0xLTIxIFNoaW5tZWktY2hvIE9rYXlhLXNoaQotCQkJCU5hZ2Fuby1rZW4gMzk0LTAwMDQKLQkJCQlKQVBBTgotCi0wMC0wNy04OCAgIChoZXgpCQlDbGlwY29tbSwgSW5jLgotMDAwNzg4ICAgICAoYmFzZSAxNikJCUNsaXBjb21tLCBJbmMuCi0JCQkJNXRoIEZsLCBTc2FuZ3lhbmcgQmxkZy4KLQkJCQk5MzUtMSBCb25nY2hlb24tZG9uZywgS3dhbWFrLWd1LAotCQkJCVNlb3VsICAxNTEtODI3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTg5ICAgKGhleCkJCURPTkdXT04gU1lTVEVNUwotMDAwNzg5ICAgICAoYmFzZSAxNikJCURPTkdXT04gU1lTVEVNUwotCQkJCTg2MS01LCBHd2FueWFuZy1Eb25nLCBEb25nYW4tR3UsCi0JCQkJQW55YW5nLXNpLCBHeWVvbmdnaS1kbywgIDQzMC04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctOEEgICAoaGV4KQkJTWVudG9yIERhdGEgU3lzdGVtIEluYy4KLTAwMDc4QSAgICAgKGJhc2UgMTYpCQlNZW50b3IgRGF0YSBTeXN0ZW0gSW5jLgotCQkJCU5vLiAyNC0xLCBJbmR1c3RyeSBFYXN0IDQgUmQuLAotCQkJCVNjaWVuY2UgQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW4tQ2h1LCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNy04QiAgIChoZXgpCQlXZWdlbmVyIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA3OEIgICAgIChiYXNlIDE2KQkJV2VnZW5lciBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTExMzUwIFRlY2hub2xvZ3kgQ2lyY2xlCi0JCQkJRHVsdXRoIEdBIDMwMDk3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy04QyAgIChoZXgpCQlFbGVrdHJvbmlrc3BlY2lhbGlzdGVuIGkgQm9ybGFuZ2UgQUIKLTAwMDc4QyAgICAgKGJhc2UgMTYpCQlFbGVrdHJvbmlrc3BlY2lhbGlzdGVuIGkgQm9ybGFuZ2UgQUIKLQkJCQlCb3ggNTAKLQkJCQk0MCBNT0NLRkrEUkQKLQkJCQlTRSA3ODAKLQkJCQlTV0VERU4KLQotMDAtMDctOEQgICAoaGV4KQkJTmV0RW5naW5lcyBMdGQuCi0wMDA3OEQgICAgIChiYXNlIDE2KQkJTmV0RW5naW5lcyBMdGQuCi0JCQkJMTQ2IFdhbG51dCBUcmVlIENsb3NlCi0JCQkJR3VpbGRmb3JkLCBTdXJyZXkKLQkJCQlHVUkgNFVCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctOEUgICAoaGV4KQkJR2FyeiAmIEZyaWNoZSBHbWJICi0wMDA3OEUgICAgIChiYXNlIDE2KQkJR2FyeiAmIEZyaWNoZSBHbWJICi0JCQkJVGVtcG93ZXJodmluZyA0Ci0JCQkJRC0yMTA3OSBIYW1idXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wNy04RiAgIChoZXgpCQlFbWtheSBJbm5vdmF0aXZlIFByb2R1Y3RzCi0wMDA3OEYgICAgIChiYXNlIDE2KQkJRW1rYXkgSW5ub3ZhdGl2ZSBQcm9kdWN0cwotCQkJCTUzLCBQYW8gSHNpbmcgUmQuLCBIc2ludGllbiBDaXR5Ci0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTkwICAgKGhleCkJCVRyaS1NIFRlY2hub2xvZ2llcyAocykgTGltaXRlZAotMDAwNzkwICAgICAoYmFzZSAxNikJCVRyaS1NIFRlY2hub2xvZ2llcyAocykgTGltaXRlZAotCQkJCUJsayAyNSwgS2FsbGFuZyBBdmVudWUgIzA3LTAxLzA0Ci0JCQkJS2FsbGFuZyBCYXNpbiBJbmQuIEVzdAotCQkJCTMzOTQxNgotCQkJCVNJTkdBUE9SRQotCi0wMC0wNy05MSAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIERhdGEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDc5MSAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIERhdGEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk0Nzg3MyBGcmVtb250IEJsdmQuCi0JCQkJRnJlbW9udCBDQSAwNDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctOTIgICAoaGV4KQkJU3VldHJvbiBFbGVjdHJvbmljIEdtYkgKLTAwMDc5MiAgICAgKGJhc2UgMTYpCQlTdWV0cm9uIEVsZWN0cm9uaWMgR21iSAotCQkJCUt1cnplIFN0cmFzc2UgMjkKLQkJCQk3MDc5NCBGaWxkZXJzdGFkdAotCQkJCUdFUk1BTlkKLQotMDAtMDctOTMgICAoaGV4KQkJU2hpbiBTYXRlbGxpdGUgUHVibGljIENvbXBhbnkgTGltaXRlZAotMDAwNzkzICAgICAoYmFzZSAxNikJCVNoaW4gU2F0ZWxsaXRlIFB1YmxpYyBDb21wYW55IExpbWl0ZWQKLQkJCQk0MS8xMDMgIFJhdHRhbmF0aGliZXQgUm9hZCwKLQkJCQlOb250aGFidXJpIDExMDAwLAotCQkJCVRIQUlMQU5ECi0KLTAwLTA3LTk0ICAgKGhleCkJCVNpbXBsZSBEZXZpY2VzLCBJbmMuCi0wMDA3OTQgICAgIChiYXNlIDE2KQkJU2ltcGxlIERldmljZXMsIEluYy4KLQkJCQkxMTEgQW56YSBCbHZkLiwgU3VpdGUgMTIwCi0JCQkJQnVybGluZ2FtZSBDQSA5NDAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctOTUgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0wMDA3OTUgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0JCQkJTm8uIDIyLCBBbGxleSAzOCwgTGFuZSA5MSwKLQkJCQlTZWMuIDEsIE5laSBIdSBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTk2ICAgKGhleCkJCUxTSSBTeXN0ZW1zLCBJbmMuCi0wMDA3OTYgICAgIChiYXNlIDE2KQkJTFNJIFN5c3RlbXMsIEluYy4KLQkJCQkxMC0xIE1pbmFtaS1rdXJva2F3YSwKLQkJCQlBc2FvLWt1LCBrYXdhc2FraSwKLQkJCQlLYW5hZ2F3YSAgMjE1LTAwMzQKLQkJCQlKQVBBTgotCi0wMC0wNy05NyAgIChoZXgpCQlOZXRwb3dlciBDby4sIEx0ZC4KLTAwMDc5NyAgICAgKGJhc2UgMTYpCQlOZXRwb3dlciBDby4sIEx0ZC4KLQkJCQlCYWVrYW0gQmxkZy4sIDZGCi0JCQkJMTIzLCBLYXJhay1Eb25nLCBTb25nLXBhIEd1Ci0JCQkJU2VvdWwgIDEzOC0xNjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctOTggICAoaGV4KQkJU2VsZWEgU1JMCi0wMDA3OTggICAgIChiYXNlIDE2KQkJU2VsZWEgU1JMCi0JCQkJVmlhIEEuIE1vcm8gTm8uIDY5Ci0JCQkJNDYwMTUgLSBDaWNvZ25hcmEKLQkJCQlJVEFMWQotCi0wMC0wNy05OSAgIChoZXgpCQlUaXBwaW5nIFBvaW50IFRlY2hub2xvZ2llcywgSW5jLgotMDAwNzk5ICAgICAoYmFzZSAxNikJCVRpcHBpbmcgUG9pbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNzUwMSBCIE4uIENhcGl0YWwgb2YgVFggSHd5LgotCQkJCUF1c3RpbiBUWCA3ODczMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctOUEgICAoaGV4KQkJVmVyaW50IFN5c3RlbXMgSW5jCi0wMDA3OUEgICAgIChiYXNlIDE2KQkJVmVyaW50IFN5c3RlbXMgSW5jCi0JCQkJMTgwMCBCZXJsaWVyLCBTdWl0ZSA0NDAKLQkJCQlMYXZhbCwgIFF1ZWJlYyBIN0wgNFM0Ci0JCQkJQ0FOQURBCi0KLTAwLTA3LTlCICAgKGhleCkJCUF1cm9yYSBOZXR3b3JrcwotMDAwNzlCICAgICAoYmFzZSAxNikJCUF1cm9yYSBOZXR3b3JrcwotCQkJCTI4MDMgTWlzc2lvbiBDb2xsZWdlIEJsdmQuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTlDICAgKGhleCkJCUdvbGRlbiBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNzlDICAgICAoYmFzZSAxNikJCUdvbGRlbiBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiAyOSwgMjFzdCBSb2FkLAotCQkJCVRhaWNodW5nIEluZHVzdHJpYWwgUGFyaywgVGFpY2h1bmcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTlEICAgKGhleCkJCU11c2FzaGkgQ28uLCBMdGQuCi0wMDA3OUQgICAgIChiYXNlIDE2KQkJTXVzYXNoaSBDby4sIEx0ZC4KLQkJCQkzLTIxLTEsIFNoaW1vLW9jaGlhaSwKLQkJCQlTaGluanVrdS1rdSwKLQkJCQlUb2t5byAgMTYxLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0wNy05RSAgIChoZXgpCQlJbGlueCBDby4sIEx0ZC4KLTAwMDc5RSAgICAgKGJhc2UgMTYpCQlJbGlueCBDby4sIEx0ZC4KLQkJCQk0dGggRmxvb3IgS29yZWEgVGVsZWNvbSwgWWFuZ2phZSBCcmFuY2gKLQkJCQlEb2dvay1Eb25nLCBLYW5nbmFtLWt1LAotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctOUYgICAoaGV4KQkJQWN0aW9uIERpZ2l0YWwgSW5jLgotMDAwNzlGICAgICAoYmFzZSAxNikJCUFjdGlvbiBEaWdpdGFsIEluYy4KLQkJCQkxMDY1MCBNYWluIFN0LgotCQkJCVN1aXRlIDEwMgotCQkJCUZhaXJmYXggVkEgMjIwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUEwICAgKGhleCkJCWUtV2F0Y2ggSW5jLgotMDAwN0EwICAgICAoYmFzZSAxNikJCWUtV2F0Y2ggSW5jLgotCQkJCTc4MDAgSUggMTAgV2VzdAotCQkJCVN1aXRlIDcwMAotCQkJCVNhbiBBbnRvbmlvIFRYIDc4MjI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1BMSAgIChoZXgpCQlWSUFTWVMgSGVhbHRoY2FyZSBHbWJICi0wMDA3QTEgICAgIChiYXNlIDE2KQkJVklBU1lTIEhlYWx0aGNhcmUgR21iSAotCQkJCUxlaWJuaXpzdHJhc3NlIDcKLQkJCQlIb2VjaGJlcmcgQmF2YXJpYSA5NzIwNAotCQkJCUdFUk1BTlkKLQotMDAtMDctQTIgICAoaGV4KQkJT3B0ZW9uIENvcnBvcmF0aW9uCi0wMDA3QTIgICAgIChiYXNlIDE2KQkJT3B0ZW9uIENvcnBvcmF0aW9uCi0JCQkJNzAgSGFzdGluZ3MgU3RyZWV0Ci0JCQkJV2VsbGVzbGV5IE1BIDAyNDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1BMyAgIChoZXgpCQlPc2l0aXMgU29mdHdhcmUsIEluYy4KLTAwMDdBMyAgICAgKGJhc2UgMTYpCQlPc2l0aXMgU29mdHdhcmUsIEluYy4KLQkJCQk2MTIwIFN0b25lcmlkZ2UgTWFsbCBSb2FkCi0JCQkJU3VpdGUgMjEwCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQTQgICAoaGV4KQkJR04gTmV0Y29tIEx0ZC4KLTAwMDdBNCAgICAgKGJhc2UgMTYpCQlHTiBOZXRjb20gTHRkLgotCQkJCTEyLTEzIFNlZGxpbmcgUm9hZCwgV2VhciBFc3QuLCBEaXN0cmljdAotCQkJCVdhc2hpbmd0b24sIFR5bmUgYW5kIFdlYXIKLQkJCQlFbmdsYW5kIE5FMzggOUJaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctQTUgICAoaGV4KQkJWS5ELksgQ28uIEx0ZC4KLTAwMDdBNSAgICAgKGJhc2UgMTYpCQlZLkQuSyBDby4gTHRkLgotCQkJCTE3MDUsIE9zaGl0YXRlLCBJbmFnaS1DaXR5LAotCQkJCVRva3lvLAotCQkJCUpBUEFOCi0KLTAwLTA3LUE2ICAgKGhleCkJCUhvbWUgQXV0b21hdGlvbiwgSW5jLgotMDAwN0E2ICAgICAoYmFzZSAxNikJCUhvbWUgQXV0b21hdGlvbiwgSW5jLgotCQkJCTQzMzAgTWljaG91ZCBCbHZkLgotCQkJCU5ldyBPcmxlYW5zIExBIDcwMTI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1BNyAgIChoZXgpCQlBLVogSW5jLgotMDAwN0E3ICAgICAoYmFzZSAxNikJCUEtWiBJbmMuCi0JCQkJNS01LTE3IEthbWlrb3VzaGllbgotCQkJCU5pc2hpbm9taXlhIENpdHksIEh5b2dvCi0JCQkJSkFQQU4KLQotMDAtMDctQTggICAoaGV4KQkJSGFpZXIgR3JvdXAgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMDdBOCAgICAgKGJhc2UgMTYpCQlIYWllciBHcm91cCBUZWNobm9sb2dpZXMgTHRkLgotCQkJCU5vLiAxIEhhaWVyIFJvYWQsIEhpLXRlY2ggWm9uZQotCQkJCVFpbmdkYW8sCi0JCQkJQ0hJTkEKLQotMDAtMDctQTkgICAoaGV4KQkJTm92YXNvbmljcwotMDAwN0E5ICAgICAoYmFzZSAxNikJCU5vdmFzb25pY3MKLQkJCQkxMzkwIFdpbGxvdyBSb2FkCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQUEgICAoaGV4KQkJUXVhbnR1bSBEYXRhIEluYy4KLTAwMDdBQSAgICAgKGJhc2UgMTYpCQlRdWFudHVtIERhdGEgSW5jLgotCQkJCTIxMTEgQmlnIFRpbWJlciBSZC4KLQkJCQlFbGdpbiBJTCA2MDEyMy0xMTAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1BQyAgIChoZXgpCQlFb2xyaW5nCi0wMDA3QUMgICAgIChiYXNlIDE2KQkJRW9scmluZwotCQkJCTEwIFJ1ZSBBbGZyZWQgS2FzdGxlcgotCQkJCTE0MDAwIENhZW4KLQkJCQlGUkFOQ0UKLQotMDAtMDctQUQgICAoaGV4KQkJUGVudGFjb24gR21iSCBGb3RvLXVuZCBGZWlud2Vya3RlY2huaWsKLTAwMDdBRCAgICAgKGJhc2UgMTYpCQlQZW50YWNvbiBHbWJIIEZvdG8tdW5kIEZlaW53ZXJrdGVjaG5pawotCQkJCUVuZGVyc3RyYWJlIDk0Ci0JCQkJMDEyNzcgRHJlc2RlbgotCQkJCUdFUk1BTlkKLQotMDAtMDctQUUgICAoaGV4KQkJQnJpdGVzdHJlYW0gTmV0d29ya3MsIEluYy4KLTAwMDdBRSAgICAgKGJhc2UgMTYpCQlCcml0ZXN0cmVhbSBOZXR3b3JrcywgSW5jLgotCQkJCTEyNDAxIFJlc2VhcmNoIEJsdmQuCi0JCQkJQnVpbGRpbmcgVHdvLCBTdWl0ZSAyNzUKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUFGICAgKGhleCkJCU4tVHJvbiBDb3JwLgotMDAwN0FGICAgICAoYmFzZSAxNikJCU4tVHJvbiBDb3JwLgotCQkJCTgyMCBTLiBVbml2ZXJzaXR5IEJsdmQuCi0JCQkJU3VpdGUgNEUKLQkJCQlNb2JpbGUgQUwgMzY2MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUIwICAgKGhleCkJCU9mZmljZSBEZXRhaWxzLCBJbmMuCi0wMDA3QjAgICAgIChiYXNlIDE2KQkJT2ZmaWNlIERldGFpbHMsIEluYy4KLQkJCQkyNSBPdHRhd2EKLQkJCQk0dGggRmxvb3IKLQkJCQlHcmFuZCBSYXBpZHMgTUkgNDk1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUIxICAgKGhleCkJCUVxdWF0b3IgVGVjaG5vbG9naWVzCi0wMDA3QjEgICAgIChiYXNlIDE2KQkJRXF1YXRvciBUZWNobm9sb2dpZXMKLQkJCQkxMzAwIFdoaXRlIE9ha3MgUmQuCi0JCQkJQ2FtcGJlbGwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUIyICAgKGhleCkJCVRyYW5zYWNjZXNzIFMuQS4KLTAwMDdCMiAgICAgKGJhc2UgMTYpCQlUcmFuc2FjY2VzcyBTLkEuCi0JCQkJUi4gR2FsZW5vIERlIENhc3RybywgMTQ0NQotCQkJCVR1cnViYXR1YmEgMDQ2OTYtMDQwCi0JCQkJU2FvIFBhdWxvIFNQICAKLQkJCQlCUkFaSUwKLQotMDAtMDctQjMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA3QjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1CNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDdCNCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUI1ICAgKGhleCkJCUFueSBPbmUgV2lyZWxlc3MgTHRkLgotMDAwN0I1ICAgICAoYmFzZSAxNikJCUFueSBPbmUgV2lyZWxlc3MgTHRkLgotCQkJCU5hbXNlb3VsIEJkLiwgOEYsIDEzMDQtMwotCQkJCVNlb2NobyA0LURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctQjYgICAoaGV4KQkJVGVsZWNvbSBUZWNobm9sb2d5IEx0ZC4KLTAwMDdCNiAgICAgKGJhc2UgMTYpCQlUZWxlY29tIFRlY2hub2xvZ3kgTHRkLgotCQkJCURvY2tsYW5kcyBJbm5vdmF0aW9uIFBhcmsKLQkJCQkxMjgtMTMwIEVhc3QgV2FsbCBSb2FkCi0JCQkJRHVibGluIDMgIAotCQkJCUlSRUxBTkQKLQotMDAtMDctQjcgICAoaGV4KQkJU2FtdXJhaSBJbmQuIFByb2RzIEVsZXRyb25pY29zIEx0ZGEKLTAwMDdCNyAgICAgKGJhc2UgMTYpCQlTYW11cmFpIEluZC4gUHJvZHMgRWxldHJvbmljb3MgTHRkYQotCQkJCVItTmVicmFza2EsIDQ0MyBTLzIgMm8gQW5kYXIKLQkJCQlCcm9va2xpbiBOb3ZvIC0gU2FvIFBhdWxvCi0JCQkJMDQ1NjAtMDExCi0JCQkJQlJBWklMCi0KLTAwLTA3LUI4ICAgKGhleCkJCUNvcnZhbGVudCBDb3Jwb3JhdGlvbgotMDAwN0I4ICAgICAoYmFzZSAxNikJCUNvcnZhbGVudCBDb3Jwb3JhdGlvbgotCQkJCTExMDEgQXJyb3cgUG9pbnQgRHIgIzUwMQotCQkJCUNlZGFyIFBhcmsgVFggNzg2MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUI5ICAgKGhleCkJCUdpbmdhbmV0IENvcnBvcmF0aW9uCi0wMDA3QjkgICAgIChiYXNlIDE2KQkJR2luZ2FuZXQgQ29ycG9yYXRpb24KLQkJCQlLaW50ZXRzdSBTaGluIE5hbWJhIEJ1aWxkaW5nCi0JCQkJTWluYXRvIE1hY2hpIDEtNC0zOCBOYW5pd2FrdQotCQkJCU9zYWthIFNoaSAgMTU1Ni0wMDE3Ci0JCQkJSkFQQU4KLQotMDAtMDctQkEgICAoaGV4KQkJVVRTdGFyY29tLCBJbmMuCi0wMDA3QkEgICAgIChiYXNlIDE2KQkJVVRTdGFyY29tLCBJbmMuCi0JCQkJMTI3NSBCYXJib3IgQmF5IFBLV1kKLQkJCQlBbGFtZWRhIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1CQiAgIChoZXgpCQlDYW5kZXJhIEluYy4KLTAwMDdCQiAgICAgKGJhc2UgMTYpCQlDYW5kZXJhIEluYy4KLQkJCQk2NzMgU291dGggTWlscGl0YXMgQmx2ZC4KLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQkMgICAoaGV4KQkJSWRlbnRpeCBJbmMuCi0wMDA3QkMgICAgIChiYXNlIDE2KQkJSWRlbnRpeCBJbmMuCi0JCQkJNjU5MSBTaWVycmEgTGFuZQotCQkJCUR1YmxpbiBDQSA5NDU2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQkQgICAoaGV4KQkJUmFkaW9uZXQgTHRkLgotMDAwN0JEICAgICAoYmFzZSAxNikJCVJhZGlvbmV0IEx0ZC4KLQkJCQlLZWlsYXJhbnRhIDYKLQkJCQkwMjE1MCBFU1AwMAotCQkJCUZJTkxBTkQKLQotMDAtMDctQkUgICAoaGV4KQkJRGF0YUxvZ2ljIFNwQQotMDAwN0JFICAgICAoYmFzZSAxNikJCURhdGFMb2dpYyBTcEEKLQkJCQlWaWEgQ2FuZGluaSwgMgotCQkJCTQwMDEyIExpcHBvIGRpIENhbGRlcmFyYSBkaSBSZW5vCi0JCQkJQm9sb2duYSAgCi0JCQkJSVRBTFkKLQotMDAtMDctQkYgICAoaGV4KQkJQXJtaWxsYWlyZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDdCRiAgICAgKGJhc2UgMTYpCQlBcm1pbGxhaXJlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwNDExIE1vdG9yIENpdHkgRHJpdmUKLQkJCQlCZXRoZXNkYSBNRCAyMDgxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQzAgICAoaGV4KQkJTmV0WmVydmVyIEluYy4KLTAwMDdDMCAgICAgKGJhc2UgMTYpCQlOZXRaZXJ2ZXIgSW5jLgotCQkJCTI2IFdlc3QgTG9uZSBDYWN0dXMgRHJpdmUKLQkJCQlQaG9lbml4IEFaIDg1MDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1DMSAgIChoZXgpCQlPdmVydHVyZSBOZXR3b3JrcywgSW5jLgotMDAwN0MxICAgICAoYmFzZSAxNikJCU92ZXJ0dXJlIE5ldHdvcmtzLCBJbmMuCi0JCQkJNTA3IEFpcnBvcnQgQmx2ZAotCQkJCVN1aXRlIDExMQotCQkJCU1vcnJpc3ZpbGxlIE5DIDI3NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1DMiAgIChoZXgpCQlOZXRzeXMgVGVsZWNvbQotMDAwN0MyICAgICAoYmFzZSAxNikJCU5ldHN5cyBUZWxlY29tCi0JCQkJNEYsIEt5dW5nTmFtIEIvRCwgODMwLTQ4LCBZZW9rU2FtLURvbmcKLQkJCQlLYW5nbmFtLUd1LAotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LUMzICAgKGhleCkJCVRob21zb24KLTAwMDdDMyAgICAgKGJhc2UgMTYpCQlUaG9tc29uCi0JCQkJNS03LCBydWUgU2Fsb21vbiBkZSBSb3Roc2NoaWxkCi0JCQkJU3VyZXNuZXMKLQkJCQk5MjE1MAotCQkJCUZSQU5DRQotCi0wMC0wNy1DNCAgIChoZXgpCQlKRUFOIENvLiBMdGQuCi0wMDA3QzQgICAgIChiYXNlIDE2KQkJSkVBTiBDby4gTHRkLgotCQkJCTdGLCAyLCBSZWkgS3VhbmcgUm9hZCwKLQkJCQlOZWkgSHUsCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LUM1ICAgKGhleCkJCUdjb20sIEluYy4KLTAwMDdDNSAgICAgKGJhc2UgMTYpCQlHY29tLCBJbmMuCi0JCQkJMTgwMCBXb29kZmllbGQgRHIuCi0JCQkJU2F2b3kgSUwgNjE4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUM2ICAgKGhleCkJCVZEUyBWb3Nza3VobGVyIEdtYkgKLTAwMDdDNiAgICAgKGJhc2UgMTYpCQlWRFMgVm9zc2t1aGxlciBHbWJICi0JCQkJV2VpYmUgQnJlaXRlIDcKLQkJCQlELTQ5MDg0IE9zbmFicnVjawotCQkJCUdFUk1BTlkKLQotMDAtMDctQzcgICAoaGV4KQkJU3luZWN0aWNzIFN5c3RlbXMgTGltaXRlZAotMDAwN0M3ICAgICAoYmFzZSAxNikJCVN5bmVjdGljcyBTeXN0ZW1zIExpbWl0ZWQKLQkJCQkzIEFjb3JuIEJ1c2luZXNzIFBhcmsKLQkJCQlXb29zZWF0cyBDbG9zZSwgU2hlZmZpZWxkCi0JCQkJUzggT1RCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctQzggICAoaGV4KQkJQnJhaW4yMSwgSW5jLgotMDAwN0M4ICAgICAoYmFzZSAxNikJCUJyYWluMjEsIEluYy4KLQkJCQkxOUYgTWVzYSBCL0QsIDIwNCBIb2loeXVuLURvbmcKLQkJCQlKb29uZy1HdQotCQkJCVNlb3VsICAxMDAtMDUxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LUM5ICAgKGhleCkJCVRlY2hub2wgU2V2ZW4gQ28uLCBMdGQuCi0wMDA3QzkgICAgIChiYXNlIDE2KQkJVGVjaG5vbCBTZXZlbiBDby4sIEx0ZC4KLQkJCQkyNS0xNiBUb2JlaG9uLWNobywgTmlzaS1rdSwKLQkJCQlZb2tvaGFtYSwgMjIwLTAwNDEKLQkJCQlKQVBBTgotCi0wMC0wNy1DQSAgIChoZXgpCQlDcmVhdGl4IFBvbHltZWRpYSBHZXMgRnVyIEtvbW11bmlrYWl0b25zc3lzdGVtZQotMDAwN0NBICAgICAoYmFzZSAxNikJCUNyZWF0aXggUG9seW1lZGlhIEdlcyBGdXIgS29tbXVuaWthaXRvbnNzeXN0ZW1lCi0JCQkJSGVpbnJpY2gtQmFydGgtU3RyLiAzCi0JCQkJNjYxMTUgU2FhcmJydWVja2VuCi0JCQkJR0VSTUFOWQotCi0wMC0wNy1DQiAgIChoZXgpCQlGcmVlYm94IFNBCi0wMDA3Q0IgICAgIChiYXNlIDE2KQkJRnJlZWJveCBTQQotCQkJCTggcnVlIGRlIGxhIFZpbGxlIGwnRXZlcXVlCi0JCQkJUGFyaXMgIDc1MDA4Ci0JCQkJRlJBTkNFCi0KLTAwLTA3LUNDICAgKGhleCkJCUthYmEgQmVuemluZyBHbWJICi0wMDA3Q0MgICAgIChiYXNlIDE2KQkJS2FiYSBCZW56aW5nIEdtYkgKLQkJCQlBbGJlcnRpc3RyYWJlIDMKLQkJCQk3ODA1NiBWaWxsaWdlbi1TY2h3ZW5uaW5nZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LUNEICAgKGhleCkJCU5NVEVMIENvLiwgTHRkLgotMDAwN0NEICAgICAoYmFzZSAxNikJCU5NVEVMIENvLiwgTHRkLgotCQkJCVN1aXRlIDEzMDMgMS5CLkMuIDkxNy02Ci0JCQkJTW9rLTEgZG9uZyBUYW5nY2hlb24ta3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LUNFICAgKGhleCkJCUNhYmxldGltZSBMaW1pdGVkCi0wMDA3Q0UgICAgIChiYXNlIDE2KQkJQ2FibGV0aW1lIExpbWl0ZWQKLQkJCQk2NCBHcmVlbmhhbSBSb2FkCi0JCQkJTmV3YnVyeSwgQmVya3NoaXJlLAotCQkJCVJHMTQgN0hYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctQ0YgICAoaGV4KQkJQW5vdG8gQUIKLTAwMDdDRiAgICAgKGJhc2UgMTYpCQlBbm90byBBQgotCQkJCVNvbHZlZ2F0YW4gNDEKLQkJCQlTRS0yMjMgNzAgTHVuZAotCQkJCVNXRURFTgotCi0wMC0wNy1EMCAgIChoZXgpCQlBdXRvbWF0IEVuZ2VuaGFyaWEgZGUgQXV0b21hb2EgTHRkYS4KLTAwMDdEMCAgICAgKGJhc2UgMTYpCQlBdXRvbWF0IEVuZ2VuaGFyaWEgZGUgQXV0b21hb2EgTHRkYS4KLQkJCQlSdWEgU2FudG8gQW50b25pbywgOTE3IC0gUmVib3VjYXMKLQkJCQlDdXJpdGliYSAtIFBSCi0JCQkJODAyMzAtMTIwCi0JCQkJQlJBWklMCi0KLTAwLTA3LUQxICAgKGhleCkJCVNwZWN0cnVtIFNpZ25hbCBQcm9jZXNzaW5nIEluYy4KLTAwMDdEMSAgICAgKGJhc2UgMTYpCQlTcGVjdHJ1bSBTaWduYWwgUHJvY2Vzc2luZyBJbmMuCi0JCQkJIzIwMC0yNzAwIFByb2R1Y3Rpb24gV2F5Ci0JCQkJQnVybmFieSwgQkMgVjVBIDRYMQotCQkJCUNBTkFEQQotCi0wMC0wNy1EMiAgIChoZXgpCQlMb2dvcGFrIFN5c3RlbWUKLTAwMDdEMiAgICAgKGJhc2UgMTYpCQlMb2dvcGFrIFN5c3RlbWUKLQkJCQlEb3Jmc3RyYXNzZSA0MAotCQkJCUQtMjQ2MjggSGFydGVuaG9sbQotCQkJCUdFUk1BTlkKLQotMDAtMDctRDMgICAoaGV4KQkJU3RvcmsgRGlnaXRhbCBJbWFnaW5nIEIuVi4KLTAwMDdEMyAgICAgKGJhc2UgMTYpCQlTdG9yayBEaWdpdGFsIEltYWdpbmcgQi5WLgotCQkJCUhhbmRlbHN0cmFhdCA2Ci0JCQkJUC5PLiBCb3ggMjEwCi0JCQkJQm94bWVlciAgNTgzMC1BRQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTA3LUQ0ICAgKGhleCkJCVpoZWppYW5nIFl1dG9uZyBOZXR3b3JrIENvbW11bmljYXRpb24gQ28gTHRkLgotMDAwN0Q0ICAgICAoYmFzZSAxNikJCVpoZWppYW5nIFl1dG9uZyBOZXR3b3JrIENvbW11bmljYXRpb24gQ28gTHRkLgotCQkJCTgwNSBIdWFYaW5nIFRlY2huaWNhbCBCdWlsZGluZwotCQkJCTQ3NyMgV2VuU2FuIFJvYWQsIEhhbmdaaG91Ci0JCQkJWmhlamlhbmcgIAotCQkJCUNISU5BCi0KLTAwLTA3LUQ1ICAgKGhleCkJCTNlIFRlY2hub2xvZ2llcyBJbnQ7LiwgSW5jLgotMDAwN0Q1ICAgICAoYmFzZSAxNikJCTNlIFRlY2hub2xvZ2llcyBJbnQ7LiwgSW5jLgotCQkJCTE1ODAwIENyYWJicyBCcmFuY2ggV2F5Ci0JCQkJU3VpdGUgMjkwCi0JCQkJUm9ja3ZpbGxlIE1EIDIwODU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1ENiAgIChoZXgpCQlDb21taWwgTHRkLgotMDAwN0Q2ICAgICAoYmFzZSAxNikJCUNvbW1pbCBMdGQuCi0JCQkJUC5PLiBCb3ggMTAwNTAKLQkJCQlQZXRhaCBUaWt2YSA0OTAwMQotCQkJCUlTUkFFTAotCi0wMC0wNy1ENyAgIChoZXgpCQlDYXBvcmlzIE5ldHdvcmtzIEFHCi0wMDA3RDcgICAgIChiYXNlIDE2KQkJQ2Fwb3JpcyBOZXR3b3JrcyBBRwotCQkJCVN1ZWdnZWxzdHIuIDMxCi0JCQkJRC00NDUzMiBMdWVuZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LUQ4ICAgKGhleCkJCUhpdHJvbiBTeXN0ZW1zIEluYy4KLTAwMDdEOCAgICAgKGJhc2UgMTYpCQlIaXRyb24gU3lzdGVtcyBJbmMuCi0JCQkJMTM1LTIyMCBIaXRyb24gQi9EIDcyNi01Ci0JCQkJU3Vzby1Eb25nLCBLYW5nbmFtIEd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy1EOSAgIChoZXgpCQlTcGxpY2Vjb20KLTAwMDdEOSAgICAgKGJhc2UgMTYpCQlTcGxpY2Vjb20KLQkJCQlMaXR0bGUgR2lsbGlvbnMsIFRoZSBHcmVlbgotCQkJCUNyb3hsZXkgR3JlZW4sIFJpY2ttYW5zd29ydGgKLQkJCQlIZXJ0cyAgV0QzIDNIWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA3LURBICAgKGhleCkJCU5ldXJvIFRlbGVjb20gQ28uLCBMdGQuCi0wMDA3REEgICAgIChiYXNlIDE2KQkJTmV1cm8gVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQkyRiBNaXN1bmcgQi9ELCA5MzgtNwotCQkJCUhvZ2UtZG9uZywgRG9uZ2FuLWd1Ci0JCQkJS3l1bmdnaS1kbyAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LURCICAgKGhleCkJCUtpcmFuYSBOZXR3b3JrcywgSW5jLgotMDAwN0RCICAgICAoYmFzZSAxNikJCUtpcmFuYSBOZXR3b3JrcywgSW5jLgotCQkJCTMzMSBOZXdtYW4gU3ByaW5ncyBSb2FkCi0JCQkJQmxkZy4gMSA0dGggRmxvb3IKLQkJCQlSZWQgQmFuayBOSiAwNzcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctREMgICAoaGV4KQkJQXRlayBDbywgTHRkLgotMDAwN0RDICAgICAoYmFzZSAxNikJCUF0ZWsgQ28sIEx0ZC4KLQkJCQlCIGRvbmcgIzIwNSBoYW55YW5nIHZlbnR1cmUgcGFyawotCQkJCTY4NS0yMCBzb25nc3UxZ2Fkb25nIHNvbmcgZG9uZ2d1LAotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctREQgICAoaGV4KQkJQ3JhZGxlIFRlY2hub2xvZ2llcwotMDAwN0REICAgICAoYmFzZSAxNikJCUNyYWRsZSBUZWNobm9sb2dpZXMKLQkJCQkzMTMwIFdlc3QgV2FycmVuIEF2ZS4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1ERSAgIChoZXgpCQllQ29waWx0IEFCCi0wMDA3REUgICAgIChiYXNlIDE2KQkJZUNvcGlsdCBBQgotCQkJCVZlZGRlc3RhdmFnZW4gMjQKLQkJCQlTRS0xNzUgNjIgSmFyZmFsbGEKLQkJCQlTV0VERU4KLQotMDAtMDctREYgICAoaGV4KQkJVmJyaWNrIFN5c3RlbXMgSW5jLgotMDAwN0RGICAgICAoYmFzZSAxNikJCVZicmljayBTeXN0ZW1zIEluYy4KLQkJCQkxMiBCZWF1bW9udCBSb2FkCi0JCQkJV2FsbGluZ2ZvcmQgQ1QgMDY0OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUUwICAgKGhleCkJCVBhbG0gSW5jLgotMDAwN0UwICAgICAoYmFzZSAxNikJCVBhbG0gSW5jLgotCQkJCTk1MCBXZXN0IE1hdWRlIEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NS0yODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FMSAgIChoZXgpCQlXSVMgQ29tbXVuaWNhdGlvbnMgQ28uIEx0ZC4KLTAwMDdFMSAgICAgKGJhc2UgMTYpCQlXSVMgQ29tbXVuaWNhdGlvbnMgQ28uIEx0ZC4KLQkJCQk0L0YgQnVpbGRpbmcgNTMzCi0JCQkJQnVndWEgU2l4dGggUm9hZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyBQcm92aWRlbmNlICAKLQkJCQlDSElOQQotCi0wMC0wNy1FMiAgIChoZXgpCQlCaXR3b3JrcywgSW5jLgotMDAwN0UyICAgICAoYmFzZSAxNikJCUJpdHdvcmtzLCBJbmMuCi0JCQkJIzEgQml0d29ya3MgV2F5Ci0JCQkJUHJhaXJpZSBHcm92ZSBBUiA3Mjc1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRTMgICAoaGV4KQkJTmF2Y29tIFRlY2hub2xvZ3ksIEluYy4KLTAwMDdFMyAgICAgKGJhc2UgMTYpCQlOYXZjb20gVGVjaG5vbG9neSwgSW5jLgotCQkJCTEyMyBXZXN0IFRvcnJhbmNlIEJsdmQuLAotCQkJCVN1aXRlIDEwMQotCQkJCVJlZG9uZG8gQmVhY2ggQ0EgOTAyNzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUU0ICAgKGhleCkJCVNvZnRSYWRpbyBDby4sIEx0ZC4KLTAwMDdFNCAgICAgKGJhc2UgMTYpCQlTb2Z0UmFkaW8gQ28uLCBMdGQuCi0JCQkJMkYsIERvbmctQm9rIEIvRCA2NDUtMTgKLQkJCQlZZW9rc2FtLURvbmcsIEthbmduYW0tR3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LUU1ICAgKGhleCkJCUNvdXAgQ29ycG9yYXRpb24KLTAwMDdFNSAgICAgKGJhc2UgMTYpCQlDb3VwIENvcnBvcmF0aW9uCi0JCQkJMS0yNC00IE1hcnVzZW4gMm5kIEJsZC4gNEYsCi0JCQkJSGlnYXNoaS1VZW5vLCBUYWl0by1rdQotCQkJCVRva3lvICAKLQkJCQlKQVBBTgotCi0wMC0wNy1FNiAgIChoZXgpCQllZGdlZmxvdyBDYW5hZGEgSW5jLgotMDAwN0U2ICAgICAoYmFzZSAxNikJCWVkZ2VmbG93IENhbmFkYSBJbmMuCi0JCQkJMzI5IE1hcmNoIFJvYWQKLQkJCQlLYW5hdGEsIE9udGFyaW8KLQkJCQlLMksgMkUxCi0JCQkJQ0FOQURBCi0KLTAwLTA3LUU3ICAgKGhleCkJCUZyZWVXYXZlIFRlY2hub2xvZ2llcwotMDAwN0U3ICAgICAoYmFzZSAxNikJCUZyZWVXYXZlIFRlY2hub2xvZ2llcwotCQkJCTE4ODAgUy4gRmxhaXRyb24gQ3QuCi0JCQkJU3RlLiBGCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRTggICAoaGV4KQkJU3QuIEJlcm5hcmQgU29mdHdhcmUKLTAwMDdFOCAgICAgKGJhc2UgMTYpCQlTdC4gQmVybmFyZCBTb2Z0d2FyZQotCQkJCTE1MDE1IEF2ZW51ZSBvZiBTY2llbmNlCi0JCQkJU2FuIERpZWdvIENBIDkyMTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FOSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAwN0U5ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTVM6ICBKRjMtNDIwCi0JCQkJMjExMSBORSAyNXRoIEF2ZS4KLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUVBICAgKGhleCkJCU1hc3NhbmEsIEluYy4KLTAwMDdFQSAgICAgKGJhc2UgMTYpCQlNYXNzYW5hLCBJbmMuCi0JCQkJMjkwMSBUYXNtYW4gRHJpdmUKLQkJCQlTdWl0ZSAxMDYKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRUIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA3RUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDdFQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUVEICAgKGhleCkJCUFsdGVyYSBDb3Jwb3JhdGlvbgotMDAwN0VEICAgICAoYmFzZSAxNikJCUFsdGVyYSBDb3Jwb3JhdGlvbgotCQkJCTEwMSBJbm5vdmF0aW9uIERyaXZlCi0JCQkJTVMgMjMwNQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FRSAgIChoZXgpCQl0ZWxjbyBJbmZvcm1hdGlvbnNzeXN0ZW1lIEdtYkgKLTAwMDdFRSAgICAgKGJhc2UgMTYpCQl0ZWxjbyBJbmZvcm1hdGlvbnNzeXN0ZW1lIEdtYkgKLQkJCQlTY2h1bHN0cmFzc2UgMzgKLQkJCQlEIDA5MTIgQ2hlbW5pdHoKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LUVGICAgKGhleCkJCUxvY2toZWVkIE1hcnRpbiBUYWN0aWNhbCBTeXN0ZW1zCi0wMDA3RUYgICAgIChiYXNlIDE2KQkJTG9ja2hlZWQgTWFydGluIFRhY3RpY2FsIFN5c3RlbXMKLQkJCQkzMzMzIFBpbG90IEtub2IgUm9hZAotCQkJCUVhZ2FuIE1OIDU1MTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1GMCAgIChoZXgpCQlMb2dpU3luYyBMTEMKLTAwMDdGMCAgICAgKGJhc2UgMTYpCQlMb2dpU3luYyBMTEMKLQkJCQkxMzEzIExlYXIgSW5kdXN0cmlhbCBQYXJrd2F5Ci0JCQkJQXZvbiBPSCA0NDAxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRjEgICAoaGV4KQkJVGVyYUJ1cnN0IE5ldHdvcmtzIEluYy4KLTAwMDdGMSAgICAgKGJhc2UgMTYpCQlUZXJhQnVyc3QgTmV0d29ya3MgSW5jLgotCQkJCTk4NSBTdGV3YXJ0IERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1GMiAgIChoZXgpCQlJT0EgQ29ycG9yYXRpb24KLTAwMDdGMiAgICAgKGJhc2UgMTYpCQlJT0EgQ29ycG9yYXRpb24KLQkJCQkzNTAgUG90cmVybyBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1GMyAgIChoZXgpCQlUaGlua2VuZ2luZSBOZXR3b3JrcwotMDAwN0YzICAgICAoYmFzZSAxNikJCVRoaW5rZW5naW5lIE5ldHdvcmtzCi0JCQkJMTAwIE5pY2tlcnNvbiBSb2FkCi0JCQkJTWFybGJvcm91Z2ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUY0ICAgKGhleCkJCUVsZXRleCBDby4sIEx0ZC4KLTAwMDdGNCAgICAgKGJhc2UgMTYpCQlFbGV0ZXggQ28uLCBMdGQuCi0JCQkJOC0yLTU2IE5hbmtvdS1IaWdhc2hpIFN1bWlub2Uta3UKLQkJCQlPc2FrYSA1NTktMDAzMQotCQkJCUpBUEFOCi0KLTAwLTA3LUY1ICAgKGhleCkJCUJyaWRnZWNvIENvIEFHCi0wMDA3RjUgICAgIChiYXNlIDE2KQkJQnJpZGdlY28gQ28gQUcKLQkJCQlSaW5nc3RyLiAxNAotCQkJCUNIIDg2MDAgRHVlYmVuZG9yZgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA3LUY2ICAgKGhleCkJCVFxZXN0IFNvZnR3YXJlIFN5c3RlbXMKLTAwMDdGNiAgICAgKGJhc2UgMTYpCQlRcWVzdCBTb2Z0d2FyZSBTeXN0ZW1zCi0JCQkJODYwIEVhc3QgNDUwMCBTb3V0aCAjMjAwCi0JCQkJTXVycmF5IFVUIDg0MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1GNyAgIChoZXgpCQlHYWx0cm9uaWNzCi0wMDA3RjcgICAgIChiYXNlIDE2KQkJR2FsdHJvbmljcwotCQkJCTQ2NDUgRWFzdCBDb3R0b24gQ2VudGVyIEJsdmQuCi0JCQkJQmxkZy4gVHdvCi0JCQkJUGhvZW5peCBBWiA4NTA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRjggICAoaGV4KQkJSVREZXZpY2VzLCBJbmMuCi0wMDA3RjggICAgIChiYXNlIDE2KQkJSVREZXZpY2VzLCBJbmMuCi0JCQkJNjA2IDExMHRoIEF2ZS4gTkUKLQkJCQlCZWxsZXZ1ZSBXQSA5ODAwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRjkgICAoaGV4KQkJUGhvbmV0aWNzLCBJbmMuCi0wMDA3RjkgICAgIChiYXNlIDE2KQkJUGhvbmV0aWNzLCBJbmMuCi0JCQkJOTAxIFRyeWVucyBSb2FkCi0JCQkJQXN0b24gUEEgMTkwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUZBICAgKGhleCkJCUlUVCBDby4sIEx0ZC4KLTAwMDdGQSAgICAgKGJhc2UgMTYpCQlJVFQgQ28uLCBMdGQuCi0JCQkJMS0xNC03LCBNdWtvaGp5dWt1LAotCQkJCUhhbWFtYXRzdSwgU2hpenVva2EgNDMwCi0JCQkJSkFQQU4KLQotMDAtMDctRkIgICAoaGV4KQkJR2lnYSBTdHJlYW0gVU1UUyBUZWNobm9sb2dpZXMgR21iSAotMDAwN0ZCICAgICAoYmFzZSAxNikJCUdpZ2EgU3RyZWFtIFVNVFMgVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlLb25yYWQtWnVzZS1TdHJhYmUgNwotCQkJCUQtNjYxMTUgU2FhcmJydWNrZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LUZDICAgKGhleCkJCUFkZXB0IFN5c3RlbXMgSW5jLgotMDAwN0ZDICAgICAoYmFzZSAxNikJCUFkZXB0IFN5c3RlbXMgSW5jLgotCQkJCTI0MiBFYXN0IDYwMCBOb3J0aAotCQkJCUxpbmRvbiBVVCA4NDA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRkQgICAoaGV4KQkJTEFOZXJneSBMdGQuCi0wMDA3RkQgICAgIChiYXNlIDE2KQkJTEFOZXJneSBMdGQuCi0JCQkJSW1wZXJpYWwgSG91c2UsIEltcGVyaWFsIFdheQotCQkJCU5ld3BvcnQsIEd3ZW50IE5QMTAgOFVICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctRkUgICAoaGV4KQkJUmlnYWt1IENvcnBvcmF0aW9uCi0wMDA3RkUgICAgIChiYXNlIDE2KQkJUmlnYWt1IENvcnBvcmF0aW9uCi0JCQkJMy05LTEyLCBNYXRzdWJhcmEtY2hvCi0JCQkJQWtpc2hpbWEtc2hpCi0JCQkJVG9reW8gIDE5Ni04NjY2Ci0JCQkJSkFQQU4KLQotMDAtMDctRkYgICAoaGV4KQkJR2x1b24gTmV0d29ya3MKLTAwMDdGRiAgICAgKGJhc2UgMTYpCQlHbHVvbiBOZXR3b3JrcwotCQkJCTU0MDEgT2xkIFJlZHdvb2QgSHd5LgotCQkJCVBldGFsdW1hIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0wMCAgIChoZXgpCQlNVUxUSVRFQ0ggU1lTVEVNUywgSU5DLgotMDAwODAwICAgICAoYmFzZSAxNikJCU1VTFRJVEVDSCBTWVNURU1TLCBJTkMuCi0JCQkJMjIwNSBXT09EQUxFIERSSVZFCi0JCQkJTU9VTkRTIFZJRVcgTU4gNTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTAxICAgKGhleCkJCUhpZ2hTcGVlZCBTdXJmaW5nIEluYy4KLTAwMDgwMSAgICAgKGJhc2UgMTYpCQlIaWdoU3BlZWQgU3VyZmluZyBJbmMuCi0JCQkJNDQ3OTAgUy4gR3JpbW1lciBCbHZkLgotCQkJCVN1aXRlIDEwMAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTAyICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAwODAyICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0wMyAgIChoZXgpCQlDb3MgVHJvbgotMDAwODAzICAgICAoYmFzZSAxNikJCUNvcyBUcm9uCi0JCQkJM0YgQm9vbGltIEIvRCwgMTQzMS0yMiwKLQkJCQlLd2FueWFuZy1Eb25nLCBEb25nb24tR3UsCi0JCQkJQW55YW5nICA0MzEtMDYxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTA0ICAgKGhleCkJCUlDQSBJbmMuCi0wMDA4MDQgICAgIChiYXNlIDE2KQkJSUNBIEluYy4KLQkJCQk1NDItMSBOb2d1a2kKLQkJCQlLdWtpLXNoaSwgU2FpdGFtbgotCQkJCUpBUEFOCi0KLTAwLTA4LTA1ICAgKGhleCkJCVRlY2huby1Ib2xvbiBDb3Jwb3JhdGlvbgotMDAwODA1ICAgICAoYmFzZSAxNikJCVRlY2huby1Ib2xvbiBDb3Jwb3JhdGlvbgotCQkJCTMtMTktMiwgVGFrYW1hdHN1LWNobwotCQkJCVRhY2hpa2F3YS1zaGkKLQkJCQlUb2t5byAgMTkwLTAwMTEKLQkJCQlKQVBBTgotCi0wMC0wOC0wNiAgIChoZXgpCQlSYW9uZXQgU3lzdGVtcywgSW5jLgotMDAwODA2ICAgICAoYmFzZSAxNikJCVJhb25ldCBTeXN0ZW1zLCBJbmMuCi0JCQkJV2VzdCBXaW5nIDE0RiwgSVQgVmVudHVyZSBUb3dlciA3OAotCQkJCUdhcmFrYm9uLWRvbmcsIFNvbmdwYSwKLQkJCQlTZW91bCAgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC0wNyAgIChoZXgpCQlBY2Nlc3MgRGV2aWNlcyBMaW1pdGVkCi0wMDA4MDcgICAgIChiYXNlIDE2KQkJQWNjZXNzIERldmljZXMgTGltaXRlZAotCQkJCVNpeHRoIEZsb29yLCA1OCBPeGJyaWRnZSBSb2FkCi0JCQkJRWFsaW5nLCBMb25kb24gVzUgMlNUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtMDggICAoaGV4KQkJUFBUIFZpc2lvbiwgSW5jLgotMDAwODA4ICAgICAoYmFzZSAxNikJCVBQVCBWaXNpb24sIEluYy4KLQkJCQkxMjk4OCBWYWxsZXkgVmlldyBSZC4KLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTA5ICAgKGhleCkJCVN5c3RlbW9uaWMgQUcKLTAwMDgwOSAgICAgKGJhc2UgMTYpCQlTeXN0ZW1vbmljIEFHCi0JCQkJQW0gV2FsZHNjaGxvZXNzY2hlbiAxCi0JCQkJRC0wMTA5OSBEcmVzZGVuCi0JCQkJR0VSTUFOWQotCi0wMC0wOC0wQSAgIChoZXgpCQlFc3BlcmEtV2Vya2UgR21iSAotMDAwODBBICAgICAoYmFzZSAxNikJCUVzcGVyYS1XZXJrZSBHbWJICi0JCQkJTW9sdGtlc3RyYXNzZSAxNy0gMzMKLQkJCQk0NzA1OCBEdWlzYnVyZwotCQkJCUdFUk1BTlkKLQotMDAtMDgtMEIgICAoaGV4KQkJQmlya2EgQlBBIEluZm9ybWF0aW9uc3N5c3RlbSBBQgotMDAwODBCICAgICAoYmFzZSAxNikJCUJpcmthIEJQQSBJbmZvcm1hdGlvbnNzeXN0ZW0gQUIKLQkJCQlCb3ggMjAxMDAKLQkJCQkxNjEgMDIgQnJvbW1hCi0JCQkJU1dFREVOCi0KLTAwLTA4LTBDICAgKGhleCkJCVZEQSBFbGV0dHJvbmljYSBzcGEKLTAwMDgwQyAgICAgKGJhc2UgMTYpCQlWREEgRWxldHRyb25pY2Egc3BhCi0JCQkJVmlhbGUgTGlubyBaYW51c3NpLCAzCi0JCQkJMzMxNzAgUG9yZGVub25lIAotCQkJCUlUQUxZCi0KLTAwLTA4LTBEICAgKGhleCkJCVRvc2hpYmEKLTAwMDgwRCAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LCBTdWVoaXJvLWNobywKLQkJCQlPbWUtY2l0eSwKLQkJCQlUb2t5byAgMTk4LTg3MTAKLQkJCQlKQVBBTgotCi0wMC0wOC0wRSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMDgwRSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUwIFNlcXVlbmNlIERyLgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMEYgICAoaGV4KQkJUHJveGltaW9uIEZpYmVyIE9wdGljcyBBQgotMDAwODBGICAgICAoYmFzZSAxNikJCVByb3hpbWlvbiBGaWJlciBPcHRpY3MgQUIKLQkJCQlJc2Fmam9yZHNnYXRhbiA5Ci0JCQkJU0UtMTY0NDAgS2lzdGEKLQkJCQlTV0VERU4KLQotMDAtMDgtMTAgICAoaGV4KQkJS2V5IFRlY2hub2xvZ3ksIEluYy4KLTAwMDgxMCAgICAgKGJhc2UgMTYpCQlLZXkgVGVjaG5vbG9neSwgSW5jLgotCQkJCTE1MCBBdmVyeSBTdC4KLQkJCQlXYWxsYSBXYWxsYSBXQSA5OTM2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMTEgICAoaGV4KQkJVk9JWCBDb3Jwb3JhdGlvbgotMDAwODExICAgICAoYmFzZSAxNikJCVZPSVggQ29ycG9yYXRpb24KLQkJCQkxOTkxLTMgNHRoIEZsb29yIFRvcCdzIFZlbnR1cmUgVG93ZXIKLQkJCQlTZW8gQ2hvLURvbmcsIFNlbyBjaG8tZ3UKLQkJCQlTZW91bCAgMTM4LTA5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC0xMiAgIChoZXgpCQlHTS0yIENvcnBvcmF0aW9uCi0wMDA4MTIgICAgIChiYXNlIDE2KQkJR00tMiBDb3Jwb3JhdGlvbgotCQkJCVNoaWJhLU1hdHVzaGlyYS1CbGRnLgotCQkJCTZGIDMtMy0xMixTaGliYQotCQkJCVRva3lvIE1pbmF0by1rdSAxMDUtMDAxNAotCQkJCUpBUEFOCi0KLTAwLTA4LTEzICAgKGhleCkJCURpc2tiYW5rLCBJbmMuCi0wMDA4MTMgICAgIChiYXNlIDE2KQkJRGlza2JhbmssIEluYy4KLQkJCQkzRiBGb2N1cyBCdWlsZGluZywgNzI1LTI1Ci0JCQkJWWVva3NhbS1kb25nLCBLYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtMTQgICAoaGV4KQkJVElMIFRlY2hub2xvZ2llcwotMDAwODE0ICAgICAoYmFzZSAxNikJCVRJTCBUZWNobm9sb2dpZXMKLQkJCQlFdXJvcGFyayBEZVBpY2hhdXJ5LCBCQVQgOQotCQkJCTEzODU2IEFJWCBlbiBQcm92aWRlbmNlCi0JCQkJRlJBTkNFCi0KLTAwLTA4LTE1ICAgKGhleCkJCUNBVFMgQ28uLCBMdGQuCi0wMDA4MTUgICAgIChiYXNlIDE2KQkJQ0FUUyBDby4sIEx0ZC4KLQkJCQk3NTEtMiBLYWNoaWRhLWNobywKLQkJCQlUc3V6dWtpLWt1LCBZb2tvaGFtYQotCQkJCTIyNC0wMDM0Ci0JCQkJSkFQQU4KLQotMDAtMDgtMTYgICAoaGV4KQkJQmx1ZXRhZ3MgQS9TCi0wMDA4MTYgICAgIChiYXNlIDE2KQkJQmx1ZXRhZ3MgQS9TCi0JCQkJTnl0b3J2IDExLCA0IEZsb29yCi0JCQkJOTAwMCBBYWxib3JnCi0JCQkJREVOTUFSSwotCi0wMC0wOC0xNyAgIChoZXgpCQlFbWVyZ2VDb3JlIE5ldHdvcmtzIExMQwotMDAwODE3ICAgICAoYmFzZSAxNikJCUVtZXJnZUNvcmUgTmV0d29ya3MgTExDCi0JCQkJMTA1NDIgUy4gSm9yZGFuIEdhdGV3YXkKLQkJCQlTdWl0ZSAxNTAKLQkJCQlTb3V0aCBKb3JkYW4gVVQgODQwOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTE4ICAgKGhleCkJCVBpeGVsd29ya3MsIEluYy4KLTAwMDgxOCAgICAgKGJhc2UgMTYpCQlQaXhlbHdvcmtzLCBJbmMuCi0JCQkJNzcwMCBTVyBNb2hhd2sgU3RyZWV0Ci0JCQkJVHVhbGF0aW4gT1IgOTcwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTE5ICAgKGhleCkJCUJhbmtzeXMKLTAwMDgxOSAgICAgKGJhc2UgMTYpCQlCYW5rc3lzCi0JCQkJSGFhY2h0c2VzdGVlbndlZyAxNDQyCi0JCQkJMTEzMCBCcnVzc2VsCi0JCQkJQkVMR0lVTQotCi0wMC0wOC0xQSAgIChoZXgpCQlTYW5yYWQgSW50ZWxsaWdlbmNlIFN0b3JhZ2UgQ29tbXVuaWNhdGlvbnMgKDIwMDApIEx0ZC4KLTAwMDgxQSAgICAgKGJhc2UgMTYpCQlTYW5yYWQgSW50ZWxsaWdlbmNlIFN0b3JhZ2UgQ29tbXVuaWNhdGlvbnMgKDIwMDApIEx0ZC4KLQkJCQkzMiBIYWJhcnplbCBTdC4sIEVudHJhY2UgQgotCQkJCVRlbC1Bdml2IDY5NzEwCi0JCQkJSVNSQUVMCi0KLTAwLTA4LTFCICAgKGhleCkJCVdpbmRpZ28gU3lzdGVtcwotMDAwODFCICAgICAoYmFzZSAxNikJCVdpbmRpZ28gU3lzdGVtcwotCQkJCTIyMTAgTydUb29sZSBBdmUuICMyMDAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMUMgICAoaGV4KQkJQHBvcy5jb20KLTAwMDgxQyAgICAgKGJhc2UgMTYpCQlAcG9zLmNvbQotCQkJCTMwNTEgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTFEICAgKGhleCkJCUlwc2lsLCBJbmNvcnBvcmF0ZWQKLTAwMDgxRCAgICAgKGJhc2UgMTYpCQlJcHNpbCwgSW5jb3Jwb3JhdGVkCi0JCQkJNzk0NSBNYWNBcnRodXIgQmx2ZC4KLQkJCQlTdWl0ZSAyMTIKLQkJCQlDYWJpbiBKb2huIE1EIDIwODE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0xRSAgIChoZXgpCQlSZXBlYXRpdCBBQgotMDAwODFFICAgICAoYmFzZSAxNikJCVJlcGVhdGl0IEFCCi0JCQkJRmFyb2dhdGFuIDcKLQkJCQlTRTE2NDQwIEtpc3RhCi0JCQkJU1dFREVOCi0KLTAwLTA4LTFGICAgKGhleCkJCVBvdSBZdWVuIFRlY2ggQ29ycC4gTHRkLgotMDAwODFGICAgICAoYmFzZSAxNikJCVBvdSBZdWVuIFRlY2ggQ29ycC4gTHRkLgotCQkJCTE2RiwgTm8uIDEwNywgU2VjdC4gMywgVGFpY2h1bmcgS2VuZyBSZC4KLQkJCQlUYWljaHVuZyBDaXR5IDQwNywKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LTIwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMgSW5jLgotMDAwODIwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMjEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA4MjEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0yMiAgIChoZXgpCQlJblBybyBDb21tCi0wMDA4MjIgICAgIChiYXNlIDE2KQkJSW5Qcm8gQ29tbQotCQkJCTExRiwgTm8uIDkzIFNodWVpLVl1YW4gU3RyZWV0Ci0JCQkJSHNpbmNodSwgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOC0yMyAgIChoZXgpCQlUZXhhIENvcnAuCi0wMDA4MjMgICAgIChiYXNlIDE2KQkJVGV4YSBDb3JwLgotCQkJCU5hcmEgQmxkZy4gM0YsIDItMi04IFNoaW4tWW9rb2hhbWEsCi0JCQkJS29ob2t1LWt1LCBZb2tvaGFtYQotCQkJCTIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMDgtMjQgICAoaGV4KQkJQ29waXRyYWsgSW5jCi0wMDA4MjQgICAgIChiYXNlIDE2KQkJQ29waXRyYWsgSW5jCi0JCQkJODM5MCBNYXlyYW5kIFN0cmVldAotCQkJCU1vbnRyZWFsICBRdWViZWMgSDRQIDJDOQotCQkJCUNBTkFEQQotCi0wMC0wOC0yNSAgIChoZXgpCQlBY21lIFBhY2tldAotMDAwODI1ICAgICAoYmFzZSAxNikJCUFjbWUgUGFja2V0Ci0JCQkJNzEgVGhpcmQgQXZlbnVlCi0JCQkJQnVybGxpbmd0b24KLQkJCQlXb2J1cm4gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTI2ICAgKGhleCkJCUNvbG9yYWRvIE1lZCBUZWNoCi0wMDA4MjYgICAgIChiYXNlIDE2KQkJQ29sb3JhZG8gTWVkIFRlY2gKLQkJCQk2MTc1IExvbmdib3cgRHIuCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMjcgICAoaGV4KQkJUGlyZWxsaSBCcm9hZGJhbmQgU29sdXRpb25zCi0wMDA4MjcgICAgIChiYXNlIDE2KQkJUGlyZWxsaSBCcm9hZGJhbmQgU29sdXRpb25zCi0JCQkJVmlhbGUgU2FyY2EgMjIyCi0JCQkJTWlsYW5vIDIwMTI2Ci0JCQkJSVRBTFkKLQotMDAtMDgtMjggICAoaGV4KQkJS29laSBFbmdpbmVlcmluZyBMdGQuCi0wMDA4MjggICAgIChiYXNlIDE2KQkJS29laSBFbmdpbmVlcmluZyBMdGQuCi0JCQkJMy00MCwgNS1DaG9tZQotCQkJCUtpcmUtbmlzaGkgSGlyYW5vLWt1Ci0JCQkJT3Nha3UgIDU0Ny0wMDI2Ci0JCQkJSkFQQU4KLQotMDAtMDgtMjkgICAoaGV4KQkJQXZhbCBOYWdhc2FraSBDb3Jwb3JhdGlvbgotMDAwODI5ICAgICAoYmFzZSAxNikJCUF2YWwgTmFnYXNha2kgQ29ycG9yYXRpb24KLQkJCQk2LTQyIFR1a3ViYSBJc2FoYXlhCi0JCQkJTmFnYXNha2kKLQkJCQk4NTQtMDA2NQotCQkJCUpBUEFOCi0KLTAwLTA4LTJBICAgKGhleCkJCVBvd2Vyd2FsbHogTmV0d29yayBTZWN1cml0eQotMDAwODJBICAgICAoYmFzZSAxNikJCVBvd2Vyd2FsbHogTmV0d29yayBTZWN1cml0eQotCQkJCTEyMC0xMzE2MCBWYW5pZXIgUGxhY2UsCi0JCQkJUmljaG1vbmQsIEJDLAotCQkJCVY2ViAySjIKLQkJCQlDQU5BREEKLQotMDAtMDgtMkIgICAoaGV4KQkJV29va3N1bmcgRWxlY3Ryb25pY3MsIEluYy4KLTAwMDgyQiAgICAgKGJhc2UgMTYpCQlXb29rc3VuZyBFbGVjdHJvbmljcywgSW5jLgotCQkJCUphaG8tQmxkZy4gNkYsIFRhbmJhbmctRG9uZywKLQkJCQlTZW8tR3UsIFRhZWpvbiwgMzAyLTIyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC0yQyAgIChoZXgpCQlIb21hZyBBRwotMDAwODJDICAgICAoYmFzZSAxNikJCUhvbWFnIEFHCi0JCQkJQWJ0LiBFc3QuLCBIb21hZyBTdHIuIDMtNQotCQkJCUQtNzIyOTYgU2Nob3BmbG9jaAotCQkJCUdFUk1BTlkKLQotMDAtMDgtMkQgICAoaGV4KQkJSW5kdXMgVGVxc2l0ZSBQcml2YXRlIExpbWl0ZWQKLTAwMDgyRCAgICAgKGJhc2UgMTYpCQlJbmR1cyBUZXFzaXRlIFByaXZhdGUgTGltaXRlZAotCQkJCSM3LCBBcnlhIEdvd2RlciBSb2FkLAotCQkJCVdlc3QgTWFtYmFsYW0sIENoZW5uYWksCi0JCQkJVGFtaWwgTmFkdSAgNjAwMDMzCi0JCQkJSU5ESUEKLQotMDAtMDgtMkUgICAoaGV4KQkJTXVsdGl0b25lIEVsZWN0cm9uaWNzIFBMQwotMDAwODJFICAgICAoYmFzZSAxNikJCU11bHRpdG9uZSBFbGVjdHJvbmljcyBQTEMKLQkJCQlNdWx0aXRvbmUgSG91c2UsIEJlZ2dhcndvb2QgTGFuZQotCQkJCUJhc2luZ3N0b2tlIFJHMjMgN0xMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtNEUgICAoaGV4KQkJRGl2ZXJnZU5ldCwgSW5jLgotMDAwODRFICAgICAoYmFzZSAxNikJCURpdmVyZ2VOZXQsIEluYy4KLQkJCQkyMTQyIEJlcmluZyBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNEYgICAoaGV4KQkJUXVhbHN0YXIgQ29ycG9yYXRpb24KLTAwMDg0RiAgICAgKGJhc2UgMTYpCQlRdWFsc3RhciBDb3Jwb3JhdGlvbgotCQkJCTM5OTBCIEhlcml0YWdlIE9hayBDb3VydAotCQkJCVNpbWkgVmFsbGV5IENBIDkzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC01MCAgIChoZXgpCQlBcml6b25hIEluc3RydW1lbnQgQ29ycC4KLTAwMDg1MCAgICAgKGJhc2UgMTYpCQlBcml6b25hIEluc3RydW1lbnQgQ29ycC4KLQkJCQkxOTEyIFcuIDR0aCBTdHJlZXQKLQkJCQlUZW1wZSBBWiA4NTI4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNTEgICAoaGV4KQkJQ2FuYWRpYW4gQmFuayBOb3RlIENvbXBhbnksIEx0ZC4KLTAwMDg1MSAgICAgKGJhc2UgMTYpCQlDYW5hZGlhbiBCYW5rIE5vdGUgQ29tcGFueSwgTHRkLgotCQkJCTE4IEF1cmlnYSBEci4KLQkJCQlOZXBlYW4sIE9udC4KLQkJCQlLMkUgN1Q5Ci0JCQkJQ0FOQURBCi0KLTAwLTA4LTUyICAgKGhleCkJCURhdm9saW5rIENvLiBJbmMuCi0wMDA4NTIgICAgIChiYXNlIDE2KQkJRGF2b2xpbmsgQ28uIEluYy4KLQkJCQlSb29tLTYwNCwgS3VtaHdhIFBsYXphLAotCQkJCTExNDItNSwgU2FuYm9uLURvbmcsIEt1bnBvLVNpCi0JCQkJS3l1bmdnaS1EbyAgNDM1LTA0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC01MyAgIChoZXgpCQlTY2hsZWljaGVyIEdtYkggJiBDby4gUmVsYWlzd2Vya2UgS0cKLTAwMDg1MyAgICAgKGJhc2UgMTYpCQlTY2hsZWljaGVyIEdtYkggJiBDby4gUmVsYWlzd2Vya2UgS0cKLQkJCQlQaWNoZWxzd2VyZGVyc3RyYXNzZSAzLTUKLQkJCQlELTEzNTk3IEJlcmxpbgotCQkJCUdFUk1BTlkKLQotMDAtMDgtNTQgICAoaGV4KQkJTmV0cm9uaXgsIEluYy4KLTAwMDg1NCAgICAgKGJhc2UgMTYpCQlOZXRyb25peCwgSW5jLgotCQkJCTNGLTEsIE5vLiAzMSwgSHNpbi1UYWkgUm9hZCwKLQkJCQlDaHVwZWkgQ2l0eSwgSHNpbmNodSBIc2llbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtNTUgICAoaGV4KQkJTkFTQS1Hb2RkYXJkIFNwYWNlIEZsaWdodCBDZW50ZXIKLTAwMDg1NSAgICAgKGJhc2UgMTYpCQlOQVNBLUdvZGRhcmQgU3BhY2UgRmxpZ2h0IENlbnRlcgotCQkJCUNvZGUgNTYxCi0JCQkJR3JlZW5iZWx0IE1EIDIwNzcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC01NiAgIChoZXgpCQlHYW1hdHJvbmljIEVsZWN0cm9uaWMgSW5kdXN0cmllcyBMdGQuCi0wMDA4NTYgICAgIChiYXNlIDE2KQkJR2FtYXRyb25pYyBFbGVjdHJvbmljIEluZHVzdHJpZXMgTHRkLgotCQkJCUhhcnR1bSBTdHJlZXQgMTQKLQkJCQlKZXJ1c2FsZW0gOTc3NzQKLQkJCQlJU1JBRUwKLQotMDAtMDgtNTcgICAoaGV4KQkJUG9sYXJpcyBOZXR3b3JrcywgSW5jLgotMDAwODU3ICAgICAoYmFzZSAxNikJCVBvbGFyaXMgTmV0d29ya3MsIEluYy4KLQkJCQk2ODEwIFNhbnRhIFRlcmVzYSBCbHZkLgotCQkJCVNhbiBKb3NlIENBIDk1MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC01OCAgIChoZXgpCQlOb3ZhdGVjaG5vbG9neSBJbmMuCi0wMDA4NTggICAgIChiYXNlIDE2KQkJTm92YXRlY2hub2xvZ3kgSW5jLgotCQkJCU5vdmEgQmxkZy4gNEYgNjQxIDAzCi0JCQkJWXVrc2FtLURvbmcgS2FuZ25hbS1rdQotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTU5ICAgKGhleCkJCVNoZW5aaGVuIFVuaXRvbmUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA4NTkgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gVW5pdG9uZSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkyIFNvdXRoZXJuIEZsb29yIDcwMiBCdWlsZGluZwotCQkJCUJhR3VhTGluZyBJbmR1c3RyaWFsIFpvbmUgU2hlbnpoZW4KLQkJCQlDSElOQQotCi0wMC0wOC01QSAgIChoZXgpCQlJbnRpR2F0ZSBJbmMuCi0wMDA4NUEgICAgIChiYXNlIDE2KQkJSW50aUdhdGUgSW5jLgotCQkJCTMwOUUgSVQgVmVudHVyZSBUb3dlcgotCQkJCTc4LCBHYXJha2Jvbi1Eb25nLCBTb25ncGEtR3UKLQkJCQlTZW91bCAgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC01QiAgIChoZXgpCQlIYW5iaXQgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA4NUIgICAgIChiYXNlIDE2KQkJSGFuYml0IEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTQxNC01LCBXb25jaGVvbi1Eb25nLCBQYWxkYWwtR3UKLQkJCQlTdXdvbi1DaXR5LCBLeW91bmdraS1EbywgNDQyLTgyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC01QyAgIChoZXgpCQlTaGFuZ2hhaSBEYXJlIFRlY2hub2xvZ2llcyBDby4gTHRkLgotMDAwODVDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERhcmUgVGVjaG5vbG9naWVzIENvLiBMdGQuCi0JCQkJMjNGLCBDaGluYSBNZXJjaGFudHMgVG93ZXIsCi0JCQkJTm8uIDE2MSwgRWFzdCBMdWppYVp1aSBSb2FkCi0JCQkJUHVkb25nIE5ldyBBcmVhLCBTaGFuZ2hhaSAKLQkJCQlDSElOQQotCi0wMC0wOC01RCAgIChoZXgpCQlBYXN0cmEKLTAwMDg1RCAgICAgKGJhc2UgMTYpCQlBYXN0cmEKLQkJCQkxMTYwIFJvdXRlIDIyIEVhc3QKLQkJCQlCcmlkZ2V3YXRlciBOSiAwODgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNUUgICAoaGV4KQkJUENPIEFHCi0wMDA4NUUgICAgIChiYXNlIDE2KQkJUENPIEFHCi0JCQkJRG9uYXVwYXJrIDExCi0JCQkJOTMzMDkgS2VsaGVpbQotCQkJCUdFUk1BTlkKLQotMDAtMDgtNUYgICAoaGV4KQkJUGljYW5vbCBOLlYuCi0wMDA4NUYgICAgIChiYXNlIDE2KQkJUGljYW5vbCBOLlYuCi0JCQkJUG9sZW5sYWFuIDMtNwotCQkJCTg5MDAgSWVwZXIKLQkJCQlCRUxHSVVNCi0KLTAwLTA4LTYwICAgKGhleCkJCUxvZGdlTmV0IEVudGVydGFpbm1lbnQgQ29ycC4KLTAwMDg2MCAgICAgKGJhc2UgMTYpCQlMb2RnZU5ldCBFbnRlcnRhaW5tZW50IENvcnAuCi0JCQkJMzkwMCBXLiBJbm5vdmF0aW9uIFN0cmVldAotCQkJCVNpb3V4IEZhbGxzIFNEIDU3MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC02MSAgIChoZXgpCQlTb2Z0RW5lcmd5IENvLiwgTHRkLgotMDAwODYxICAgICAoYmFzZSAxNikJCVNvZnRFbmVyZ3kgQ28uLCBMdGQuCi0JCQkJMzQ2IFNhbmd3YW5nc2lwbGktRG9uZywKLQkJCQlTdW5nIERvbmctR3UsIFNlb3VsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTYyICAgKGhleCkJCU5FQyBFbHVtaW5hbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA4NjIgICAgIChiYXNlIDE2KQkJTkVDIEVsdW1pbmFudCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNDcwMCBBdmlvbiBQYXJrd2F5Ci0JCQkJQ2hhbnRpbGx5IFZBIDIwMTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC02MyAgIChoZXgpCQlFbnRyaXNwaGVyZSBJbmMuCi0wMDA4NjMgICAgIChiYXNlIDE2KQkJRW50cmlzcGhlcmUgSW5jLgotCQkJCTE2MDEgUy4gRGUgQW56YSBCbHZkLgotCQkJCVN1aXRlIDI1MAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNjQgICAoaGV4KQkJRmFzeSBTLnAuQS4KLTAwMDg2NCAgICAgKGJhc2UgMTYpCQlGYXN5IFMucC5BLgotCQkJCVZpYSBUb2duYXNjYSA3Ci0JCQkJR2FsbGFyYXRlIFZhcmVzZSAyMTAxMwotCQkJCUlUQUxZCi0KLTAwLTA4LTY1ICAgKGhleCkJCUpBU0NPTSBDTy4sIExURAotMDAwODY1ICAgICAoYmFzZSAxNikJCUpBU0NPTSBDTy4sIExURAotCQkJCUpVQU4gSU5EVVNUUklBTCBDT01QTEVYIDMzMCwgMTctMSwKLQkJCQlKVUFOLURPTkcgTkFNLUdVIElOQ0hFT04gNDAyLTIwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC02NiAgIChoZXgpCQlEU1ggQWNjZXNzIFN5c3RlbXMsIEluYy4KLTAwMDg2NiAgICAgKGJhc2UgMTYpCQlEU1ggQWNjZXNzIFN5c3RlbXMsIEluYy4KLQkJCQkxMDczMSBSb2Nrd2FsbCBSZC4KLQkJCQlEYWxsYXMgVFggNzUyMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTY3ICAgKGhleCkJCVVwdGltZSBEZXZpY2VzCi0wMDA4NjcgICAgIChiYXNlIDE2KQkJVXB0aW1lIERldmljZXMKLQkJCQkzMTYwIEJlZSBDYXZlcyBSZAotCQkJCVN1aXRlIDIwNAotCQkJCUF1c3RpbiBUZXhhcyA3ODc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNjggICAoaGV4KQkJUHVyT3B0aXgKLTAwMDg2OCAgICAgKGJhc2UgMTYpCQlQdXJPcHRpeAotCQkJCTE5NDUgQ2FtaW5vIFZpZGEgUm9ibGUKLQkJCQlTdWl0ZSBDCi0JCQkJQ2FybHNiYWQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTY5ICAgKGhleCkJCUNvbW1hbmQtZSBUZWNobm9sb2d5IENvLixMdGQuCi0wMDA4NjkgICAgIChiYXNlIDE2KQkJQ29tbWFuZC1lIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlTdWl0ZSA3MDksIFpob25nc2hlbmcgTWFuc2lvbiwKLQkJCQlOby4yIEJlaSBGZW5nV28gUmQuCi0JCQkJQmVpamluZyAgMTAwMDM4Ci0JCQkJQ0hJTkEKLQotMDAtMDgtNkEgICAoaGV4KQkJU2VjdXJpdG9uIEdtYmgKLTAwMDg2QSAgICAgKGJhc2UgMTYpCQlTZWN1cml0b24gR21iaAotCQkJCVZvbi1EcmFpcy1TdHJhc3NlIDMzCi0JCQkJQWNoZXJuICBELTc3ODU1Ci0JCQkJR0VSTUFOWQotCi0wMC0wOC02QiAgIChoZXgpCQlNSVBTWVMKLTAwMDg2QiAgICAgKGJhc2UgMTYpCQlNSVBTWVMKLQkJCQkxOUMsIEF2ZW51ZSBkZXMgSW5kZXMKLQkJCQlMRVMgVUxJUyBDZWRleCAgRlItOTE5NjkKLQkJCQlGUkFOQ0UKLQotMDAtMDgtNkMgICAoaGV4KQkJUGxhc21vbiBMTVMKLTAwMDg2QyAgICAgKGJhc2UgMTYpCQlQbGFzbW9uIExNUwotCQkJCTQ0MjUgQXJyb3dzV2VzdCBEcml2ZQotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ08gODA5MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTZEICAgKGhleCkJCU1pc3NvdXJpIEZyZWVOZXQKLTAwMDg2RCAgICAgKGJhc2UgMTYpCQlNaXNzb3VyaSBGcmVlTmV0Ci0JCQkJUE8gQm94IDc3MTAyNgotCQkJCVN0LiBMb3VpcyBNaXNzb3VyaSA2MzE3Ny0xMDI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC02RSAgIChoZXgpCQlIeWdsbyBBQgotMDAwODZFICAgICAoYmFzZSAxNikJCUh5Z2xvIEFCCi0JCQkJVmFzdGJlcmdhIGFsbGUgNjAKLQkJCQlTRS0xMjYgNzUgU3RvY2tob2xtCi0JCQkJU1dFREVOCi0KLTAwLTA4LTZGICAgKGhleCkJCVJlc291cmNlcyBDb21wdXRlciBOZXR3b3JrIEx0ZC4KLTAwMDg2RiAgICAgKGJhc2UgMTYpCQlSZXNvdXJjZXMgQ29tcHV0ZXIgTmV0d29yayBMdGQuCi0JCQkJUm0gMzI0LCBUZWNoIENlbnRyZSwgNzIgVGF0IENoZWUgQXZlLiwKLQkJCQlLb3dsb29uIFRvbmcsIEtvd2xvb24KLQkJCQlIT05HIEtPTkcKLQotMDAtMDgtNzAgICAoaGV4KQkJUmFzdmlhIFN5c3RlbXMsIEluYy4KLTAwMDg3MCAgICAgKGJhc2UgMTYpCQlSYXN2aWEgU3lzdGVtcywgSW5jLgotCQkJCTMyNTUtMyBTY290dCBCbHZkLgotCQkJCVN1aXRlIDEwMgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC03MSAgIChoZXgpCQlOT1JUSERBVEEgQ28uLCBMdGQuCi0wMDA4NzEgICAgIChiYXNlIDE2KQkJTk9SVEhEQVRBIENvLiwgTHRkLgotCQkJCSMzMDIgS2F5YW5nVGVjaG5vLVRvd24gMTQ4NwotCQkJCUtheWFuZzMtRG9uZwotCQkJCUthbmdzZW8tR3UgU2VvdWwgMTU3LTgxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC03MiAgIChoZXgpCQlTb3JlbnNvbiBDb21tdW5pY2F0aW9ucwotMDAwODcyICAgICAoYmFzZSAxNikJCVNvcmVuc29uIENvbW11bmljYXRpb25zCi0JCQkJNDE5MiBTb3V0aCBSaXZlcmJvYXQgUm9hZAotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC03MyAgIChoZXgpCQlEYXBUZWNobm9sb2d5IEIuVi4KLTAwMDg3MyAgICAgKGJhc2UgMTYpCQlEYXBUZWNobm9sb2d5IEIuVi4KLQkJCQladXRwaGVuc3RyYWF0IDY3Ci0JCQkJRUogT2xkZW56YWFsICA3NTc1Ci0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDgtNzQgICAoaGV4KQkJRGVsbCBDb21wdXRlciBDb3JwLgotMDAwODc0ICAgICAoYmFzZSAxNikJCURlbGwgQ29tcHV0ZXIgQ29ycC4KLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRYIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC03NSAgIChoZXgpCQlBY29ycCBFbGVjdHJvbmljcyBDb3JwLgotMDAwODc1ICAgICAoYmFzZSAxNikJCUFjb3JwIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJOEYsIE5vLjExMS02LFNoaW5nIFRlaCBSZCwKLQkJCQlTYW4gQ2h1bmcgVGFpcGVpIEhzaWVuIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtNzYgICAoaGV4KQkJU0RTeXN0ZW0KLTAwMDg3NiAgICAgKGJhc2UgMTYpCQlTRFN5c3RlbQotCQkJCTYxMyxIeXVuZGFpIEkgVmFsbGV5LDIyMy0xMiwKLQkJCQlTYW5nZGFpd29uIDEtRG9uZyxKdW5nd29uLUd1Ci0JCQkJU2VvbmduYW0gR3llb25nZ2ktRG8gNDYyLTgwNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC03NyAgIChoZXgpCQlMaWViZXJ0LUhpcm9zcyBTcGEKLTAwMDg3NyAgICAgKGJhc2UgMTYpCQlMaWViZXJ0LUhpcm9zcyBTcGEKLQkJCQlWaWEgTGVvbmFyZG8gZGEgVmluY2kgOAotCQkJCVBpb3ZlIGRpIFNhY2NvIFouSS4gVG9nbmFuYSAzNTAyMAotCQkJCUlUQUxZCi0KLTAwLTA4LTc4ICAgKGhleCkJCUJlbmNobWFyayBTdG9yYWdlIElubm92YXRpb25zCi0wMDA4NzggICAgIChiYXNlIDE2KQkJQmVuY2htYXJrIFN0b3JhZ2UgSW5ub3ZhdGlvbnMKLQkJCQkzMTIyIFN0ZXJsaW5nIENpcmNsZQotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTc5ICAgKGhleCkJCUNFTSBDb3Jwb3JhdGlvbgotMDAwODc5ICAgICAoYmFzZSAxNikJCUNFTSBDb3Jwb3JhdGlvbgotCQkJCVAuTy4gQm94IDIwMAotCQkJCU1hdHRoZXdzIE5DIDI4MTA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC03QSAgIChoZXgpCQlXaXBvdGVjIEdtYkgKLTAwMDg3QSAgICAgKGJhc2UgMTYpCQlXaXBvdGVjIEdtYkgKLQkJCQlBZGFtLUhvZmZtYW4gU3RyLiAyNgotCQkJCUQtNjc2NTcgS2Fpc2Vyc2xhdXRlcm0KLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTdCICAgKGhleCkJCVJUWCBUZWxlY29tIEEvUwotMDAwODdCICAgICAoYmFzZSAxNikJCVJUWCBUZWxlY29tIEEvUwotCQkJCVN0cm9lbW1lbiA2Ci0JCQkJREsgOTQwMCBOb2VycmVzdW5kYnkKLQkJCQlERU5NQVJLCi0KLTAwLTA4LTdDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDg3QyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC03RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDg3RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTdFICAgKGhleCkJCUJvbiBFbGVjdHJvLVRlbGVjb20gSW5jLgotMDAwODdFICAgICAoYmFzZSAxNikJCUJvbiBFbGVjdHJvLVRlbGVjb20gSW5jLgotCQkJCUdheWFuZyAxc3QgRmFjdG9yeSA3MDEsIDE0LTgxCi0JCQkJR2F5YW5nLURvbmcgR2FuZ3NvLUd1Ci0JCQkJU2VvdWwgIDE1Ny04MDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtN0YgICAoaGV4KQkJU1BBVU4gZWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0wMDA4N0YgICAgIChiYXNlIDE2KQkJU1BBVU4gZWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0JCQkJQnlrLUd1bGRlbiAtIFN0ci4gMjIKLQkJCQk3ODIyNCBTaW5nZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTgwICAgKGhleCkJCUJyb2FkVGVsIENhbmFkYSBDb21tdW5pY2F0aW9ucyBpbmMuCi0wMDA4ODAgICAgIChiYXNlIDE2KQkJQnJvYWRUZWwgQ2FuYWRhIENvbW11bmljYXRpb25zIGluYy4KLQkJCQkzNzAwIEdyaWZmaXRoLCBTdWl0ZSAzODkKLQkJCQlTYWludC1MYXVyZW50IFF1ZWJlYyBINFQgMkIzCi0JCQkJQ0FOQURBCi0KLTAwLTA4LTgxICAgKGhleCkJCURJR0lUQUwgSEFORFMgQ08uLExURC4KLTAwMDg4MSAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEhBTkRTIENPLixMVEQuCi0JCQkJVE9XTidTIFNRVUFSRSA1MDMsIEtBS2lZQSBCdWlsZGluZyAyRgotCQkJCTItNy0xNyBTaGlueW9rb2hhbWEgS291aG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMDgtODIgICAoaGV4KQkJU0lHTUEgQ09SUE9SQVRJT04KLTAwMDg4MiAgICAgKGJhc2UgMTYpCQlTSUdNQSBDT1JQT1JBVElPTgotCQkJCTItMy0xNSBJd2F0by1taW5hbWkKLQkJCQlLb21hZS1zaGkgVG9reW8gMjAxLTg2MzAKLQkJCQlKQVBBTgotCi0wMC0wOC04MyAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwODgzICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTA5NTUgVGFudGF1IEF2ZW51ZSwgTWFpbHN0b3AgNDVTTC1HCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC04NCAgIChoZXgpCQlJbmRleCBCcmFpbGxlIEFCCi0wMDA4ODQgICAgIChiYXNlIDE2KQkJSW5kZXggQnJhaWxsZSBBQgotCQkJCUJveCAxNTUKLQkJCQlTLTk1NDIzIEdhbW1lbHN0YWQKLQkJCQlTV0VERU4KLQotMDAtMDgtODUgICAoaGV4KQkJRU1TIERyLiBUaG9tYXMgV3VlbnNjaGUKLTAwMDg4NSAgICAgKGJhc2UgMTYpCQlFTVMgRHIuIFRob21hcyBXdWVuc2NoZQotCQkJCVNvbm5lbmhhbmcgMwotCQkJCUQtODUzMDQgSWxtbXVlbnN0ZXIKLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTg2ICAgKGhleCkJCUhhbnN1bmcgVGVsaWFubiwgSW5jLgotMDAwODg2ICAgICAoYmFzZSAxNikJCUhhbnN1bmcgVGVsaWFubiwgSW5jLgotCQkJCTE5NS0xLCBOZXVuZ3B5dW5nLXJpLCBPcG8tZXViCi0JCQkJS3dhbmdqdS1zaSwgS3lvZ2dpLWRvLCA0NjQtODkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTg3ICAgKGhleCkJCU1hc2NoaW5lbmZhYnJpayBSZWluaGF1c2VuIEdtYkgKLTAwMDg4NyAgICAgKGJhc2UgMTYpCQlNYXNjaGluZW5mYWJyaWsgUmVpbmhhdXNlbiBHbWJICi0JCQkJRmFsa2Vuc3RlaW5zdHIuIDgKLQkJCQlSZWdlbnNidXJnIEJhdmFyaWEgOTMwNTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTg4ICAgKGhleCkJCU9VTExJTSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IEluYywuCi0wMDA4ODggICAgIChiYXNlIDE2KQkJT1VMTElNIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgSW5jLC4KLQkJCQlhLTEwdGggRkwsLiBJVCBWZW50dXJlIFRvd2VyLAotCQkJCTc4IEdhcmFrLURvbmcsIFNvbmdwYS1LdQotCQkJCVNlb3VsICAxMzgtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTg5ICAgKGhleCkJCUVjaG9zdGFyIFRlY2hub2xvZ2llcyBDb3JwCi0wMDA4ODkgICAgIChiYXNlIDE2KQkJRWNob3N0YXIgVGVjaG5vbG9naWVzIENvcnAKLQkJCQk5NCBJbnZlcm5lc3MgQ2lyY2xlCi0JCQkJRW5nbGV3b29kIENPIDgwMTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC04QSAgIChoZXgpCQlNaW5kc0BXb3JrCi0wMDA4OEEgICAgIChiYXNlIDE2KQkJTWluZHNAV29yawotCQkJCTE1NTUwIFJvY2tmaWVsZCBCbHZkLiBTdWl0ZSBDCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC04QiAgIChoZXgpCQlUcm9waWMgTmV0d29ya3MgSW5jLgotMDAwODhCICAgICAoYmFzZSAxNikJCVRyb3BpYyBOZXR3b3JrcyBJbmMuCi0JCQkJMTM1IE1pY2hlYWwgQ293cGxhbmQgRHJpdmUKLQkJCQlPdHRhd2EgT250YXJpbyBLMk0yRTkKLQkJCQlDQU5BREEKLQotMDAtMDgtOEMgICAoaGV4KQkJUXVhbnRhIE5ldHdvcmsgU3lzdGVtcyBJbmMuCi0wMDA4OEMgICAgIChiYXNlIDE2KQkJUXVhbnRhIE5ldHdvcmsgU3lzdGVtcyBJbmMuCi0JCQkJMTMsIDEzRiwgU2VjLiAyLCBQZWktVG91IFJkCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LThEICAgKGhleCkJCVNpZ21hLUxpbmtzIEluYy4KLTAwMDg4RCAgICAgKGJhc2UgMTYpCQlTaWdtYS1MaW5rcyBJbmMuCi0JCQkJNTUwLTEgSGlnYXNoaWFzYWthd2EtY2hvLAotCQkJCUhhY2hpb2ppLXNoaSwKLQkJCQlUb2t5byAgMTkzLTg1NTAKLQkJCQlKQVBBTgotCi0wMC0wOC04RSAgIChoZXgpCQlOaWhvbiBDb21wdXRlciBDby4sIEx0ZC4KLTAwMDg4RSAgICAgKGJhc2UgMTYpCQlOaWhvbiBDb21wdXRlciBDby4sIEx0ZC4KLQkJCQkzNi04IEhpZ2FzaGl0YW1hY2hpCi0JCQkJSGFtYW1hdHN1IFNoaXp1b2thIDQzMC0wOTE1Ci0JCQkJSkFQQU4KLQotMDAtMDgtOEYgICAoaGV4KQkJQURWQU5DRUQgRElHSVRBTCBURUNITk9MT0dZCi0wMDA4OEYgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgRElHSVRBTCBURUNITk9MT0dZCi0JCQkJQURUIEJMREcuLDMtMywgWUFOR0pBRS1ET05HLAotCQkJCVNFT0NITy1HVSwKLQkJCQlTRU9VTCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTkwICAgKGhleCkJCUFWSUxJTktTIFNBCi0wMDA4OTAgICAgIChiYXNlIDE2KQkJQVZJTElOS1MgU0EKLQkJCQlFdGljIENlbnRlciAtIENTIDc3IDcyOQotCQkJCTkgcnVlIGRlcyBDaGFybWlsbGVzCi0JCQkJQ2Vzc29uIFNldmlnbmUgQ2VkZXggRlJBTkNFIDM1NTc3Ci0JCQkJRlJBTkNFCi0KLTAwLTA4LTkxICAgKGhleCkJCUx5YW4gSW5jLgotMDAwODkxICAgICAoYmFzZSAxNikJCUx5YW4gSW5jLgotCQkJCTVGLTEsIE5PLjUxLCBTRUMuMiwgS0VFTFVORyBSRC4KLQkJCQlUQUlQRUkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtOTIgICAoaGV4KQkJRU0gU29sdXRpb25zCi0wMDA4OTIgICAgIChiYXNlIDE2KQkJRU0gU29sdXRpb25zCi0JCQkJMTAxIEh5ZGUgUmQKLQkJCQlZZXJvbmdhIEJyaXNiYW5lLCBRTEQgNDEwNAotCQkJCUFVU1RSQUxJQQotCi0wMC0wOC05MyAgIChoZXgpCQlMRSBJTkZPUk1BVElPTiBDT01NVU5JQ0FUSU9OIElOQy4KLTAwMDg5MyAgICAgKGJhc2UgMTYpCQlMRSBJTkZPUk1BVElPTiBDT01NVU5JQ0FUSU9OIElOQy4KLQkJCQlSbSwgNDUwMSwgREEtRG9uZyBDaHVuZ2FuZyBDaXJjdWxhdGlvbiBDCi0JCQkJMTI1OCBLdXJvIEJvbi1Eb25nLCBLdXJvLUt1LAotCQkJCVNlb3VsICAxNTItNzIxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTk0ICAgKGhleCkJCUlubm9WSVNJT04gTXVsdGltZWRpYSBMdGQuCi0wMDA4OTQgICAgIChiYXNlIDE2KQkJSW5ub1ZJU0lPTiBNdWx0aW1lZGlhIEx0ZC4KLQkJCQlSbSA2MDgsIDYvRiBUaW5zIEVudGVycHJpc2VzIENlbnRyZSwKLQkJCQk3NzcgTGFpIENoaSBLb2sgUm9hZCwKLQkJCQlLb3dsb29uLCAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA4LTk1ICAgKGhleCkJCURJUkMgVGVjaG5vbG9naWUgR21iSCAmIENvLktHCi0wMDA4OTUgICAgIChiYXNlIDE2KQkJRElSQyBUZWNobm9sb2dpZSBHbWJIICYgQ28uS0cKLQkJCQlCb3JzaWdzdHIuIDEzCi0JCQkJUmF0aW5nZW4gTlJXIDQwODgwCi0JCQkJR0VSTUFOWQotCi0wMC0wOC05NiAgIChoZXgpCQlQcmludHJvbml4LCBJbmMuCi0wMDA4OTYgICAgIChiYXNlIDE2KQkJUHJpbnRyb25peCwgSW5jLgotCQkJCTE0NjAwIE15Zm9yZCBSZC4KLQkJCQlQLk8uIEJveCAxOTU1OQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjIzLTk1NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTk3ICAgKGhleCkJCVF1YWtlIFRlY2hub2xvZ2llcwotMDAwODk3ICAgICAoYmFzZSAxNikJCVF1YWtlIFRlY2hub2xvZ2llcwotCQkJCTI4ODAgWmFua2VyIFJvYWQKLQkJCQlTdWl0ZSAxMDQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtOTggICAoaGV4KQkJR2lnYWJpdCBPcHRpY3MgQ29ycG9yYXRpb24KLTAwMDg5OCAgICAgKGJhc2UgMTYpCQlHaWdhYml0IE9wdGljcyBDb3Jwb3JhdGlvbgotCQkJCTExNTYgQXN0ZXIgQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4Ni02ODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC05OSAgIChoZXgpCQlOZXRiaW5kLCBJbmMuCi0wMDA4OTkgICAgIChiYXNlIDE2KQkJTmV0YmluZCwgSW5jLgotCQkJCTUgTWFyaW5lIFZpZXcgUGxhemEKLQkJCQlIb2Jva2VuIE5KIDA3MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC05QSAgIChoZXgpCQlBbGNhdGVsIE1pY3JvZWxlY3Ryb25pY3MKLTAwMDg5QSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIE1pY3JvZWxlY3Ryb25pY3MKLQkJCQlFeGNlbHNpb3JsYWFuIDQ0LTQ2Ci0JCQkJQi0xOTMwIFphdmFudGVtICAKLQkJCQlCRUxHSVVNCi0KLTAwLTA4LTlCICAgKGhleCkJCUlDUCBFbGVjdHJvbmljcyBJbmMuCi0wMDA4OUIgICAgIChiYXNlIDE2KQkJSUNQIEVsZWN0cm9uaWNzIEluYy4KLQkJCQk0RiwgTm8uIDIyLCBDaHVuZy1Ic2luZyBSZC4gU2hpLUNoaSBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuLCAyMjEsCi0JCQkJVGFpcGVpICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LTlDICAgKGhleCkJCUVsZWNzIEluZHVzdHJ5IENvLiwgTHRkLgotMDAwODlDICAgICAoYmFzZSAxNikJCUVsZWNzIEluZHVzdHJ5IENvLiwgTHRkLgotCQkJCTEtMjItMjMsU2hpbnNha3UsVGFrYXRzdS1LdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMy0wMDE0Ci0JCQkJSkFQQU4KLQotMDAtMDgtOUQgICAoaGV4KQkJVUhELUVsZWt0cm9uaWsKLTAwMDg5RCAgICAgKGJhc2UgMTYpCQlVSEQtRWxla3Ryb25pawotCQkJCVp1ZXJjaGVyc3RyYXNzZSAxMgotCQkJCUJhZGVuIEFHIDU0MDAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wOC05RSAgIChoZXgpCQlCZWlqaW5nIEVudGVyLU5ldCBjby5MVEQKLTAwMDg5RSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEVudGVyLU5ldCBjby5MVEQKLQkJCQlOTyAxIGNvdXJ0eWFyZCwKLQkJCQlzaHVhbmdxdWFucHUgamlhIDEsY2hhb3lhCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMDgtOUYgICAoaGV4KQkJRUZNIE5ldHdvcmtzCi0wMDA4OUYgICAgIChiYXNlIDE2KQkJRUZNIE5ldHdvcmtzCi0JCQkJNDAzLCA0dGggZmxvb3IgRWxlZ2FuY2UgMSBCbGRnLgotCQkJCTI1LTIgR3VtaS1kb25nIFB1bmRhbmctZ3UKLQkJCQlTdW5nbmFtLXNpIEt5dW5nZ2ktZG8gNDYzLTgwOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1BMCAgIChoZXgpCQlTdG90eiBGZWlubWVzc3RlY2huaWsgR21iSAotMDAwOEEwICAgICAoYmFzZSAxNikJCVN0b3R6IEZlaW5tZXNzdGVjaG5payBHbWJICi0JCQkJSGVybWFubi1EcmVoZXIgU3RyLiA2Ci0JCQkJR2VybGluZ2VuICA3MDgzOQotCQkJCUdFUk1BTlkKLQotMDAtMDgtQTEgICAoaGV4KQkJQ05ldCBUZWNobm9sb2d5IEluYy4KLTAwMDhBMSAgICAgKGJhc2UgMTYpCQlDTmV0IFRlY2hub2xvZ3kgSW5jLgotCQkJCU5vLjE1LCBQYXJrIEF2ZW51ZSBJSSwgU2NpZW5jZS1CYXNlZCBJbmQKLQkJCQlIc2luLUNodSBDaXR5LAotCQkJCUhzaW4tQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LUEyICAgKGhleCkJCUFESSBFbmdpbmVlcmluZywgSW5jLgotMDAwOEEyICAgICAoYmFzZSAxNikJCUFESSBFbmdpbmVlcmluZywgSW5jLgotCQkJCTE3NjlBIFdvcnRoIFBhcmsKLQkJCQlDaGFybG90dGVzdmlsbGUgVkEgMjI5MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUEzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDhBMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1BNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA4QTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQTUgICAoaGV4KQkJUGVuaW5zdWxhIFN5c3RlbXMgSW5jLgotMDAwOEE1ICAgICAoYmFzZSAxNikJCVBlbmluc3VsYSBTeXN0ZW1zIEluYy4KLQkJCQk2OTAyIFZlcmRlIFJpZGdlIFJkLgotCQkJCVJhbmNobyBQYWxvcyBWZXJkZXMgQ0EgOTAyNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUE2ICAgKGhleCkJCU11bHRpd2FyZSAmIEltYWdlIENvLiwgTHRkLgotMDAwOEE2ICAgICAoYmFzZSAxNikJCU11bHRpd2FyZSAmIEltYWdlIENvLiwgTHRkLgotCQkJCVNhZWRvbmcgQmxkZy4gNjUtMjUsCi0JCQkJMmthLCBOYW1oYW5nLCBZb3VuZ2RvCi0JCQkJUHVzYW4gIDYwNi0wMzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtQTcgICAoaGV4KQkJaUxvZ2ljIEluYy4KLTAwMDhBNyAgICAgKGJhc2UgMTYpCQlpTG9naWMgSW5jLgotCQkJCVJtIzMxOCwgVGVjaG5vQ29tcGxleCBCbGRnLiwgMTI2LTE2LCA1LWcKLQkJCQlTZW91bCAgMTM2LTcwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1BOCAgIChoZXgpCQlTeXN0ZWMgQ28uLCBMdGQuCi0wMDA4QTggICAgIChiYXNlIDE2KQkJU3lzdGVjIENvLiwgTHRkLgotCQkJCTE5IE5vY2hpZG9yaSwgTmF3YQotCQkJCVRva2FpIEFpY2hpIDQ3Ni0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMDgtQTkgICAoaGV4KQkJU2FuZ1NhbmcgVGVjaG5vbG9neSwgSW5jLgotMDAwOEE5ICAgICAoYmFzZSAxNikJCVNhbmdTYW5nIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk2NC04LCBOb2dvay1yaSwgRG9jaGVvay1teXVuLAotCQkJCUd3YW5nanUgS3lvbmdnaS1kbyA0NjQtODgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUFBICAgKGhleCkJCUtBUkFNCi0wMDA4QUEgICAgIChiYXNlIDE2KQkJS0FSQU0KLQkJCQk5OC0zLCAgSGFua2FuZ3JvIDItS0EsIFlvbmdzYW4KLQkJCQlTZW91bCAgMTQwLTAxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1BQiAgIChoZXgpCQlFbmVyTGlueC5jb20sIEluYy4KLTAwMDhBQiAgICAgKGJhc2UgMTYpCQlFbmVyTGlueC5jb20sIEluYy4KLQkJCQkzOTY1IFNvdXRoIFdvb2RoaWxsIExhbmUKLQkJCQlOZXcgQmVybGluIFdJIDUzMTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1BQyAgIChoZXgpCQlFbHRyb21hdCBHbWJICi0wMDA4QUMgICAgIChiYXNlIDE2KQkJRWx0cm9tYXQgR21iSAotCQkJCUhlcmZvcmRlciBTdHIuIDI0OS0yNTEKLQkJCQlMZW9wb2xkc2j2aGUgTm9yZHJoZWluLVdlc3RmYWxlbiAzMzgxOAotCQkJCUdFUk1BTlkKLQotMDAtMDgtQUQgICAoaGV4KQkJVG95by1MaW54IENvLiwgTHRkLgotMDAwOEFEICAgICAoYmFzZSAxNikJCVRveW8tTGlueCBDby4sIEx0ZC4KLQkJCQlIaXJha2F3YS1DaG8sIENoaXlhZGEta3UsCi0JCQkJVG9reW8gIDEwMi0wMDkzCi0JCQkJSkFQQU4KLQotMDAtMDgtQUUgICAoaGV4KQkJUGFja2V0RnJvbnQgSW50ZXJuYXRpb25hbCBBQgotMDAwOEFFICAgICAoYmFzZSAxNikJCVBhY2tldEZyb250IEludGVybmF0aW9uYWwgQUIKLQkJCQlCb3ggMTIxNwotCQkJCUtpc3RhICAxNjQyOAotCQkJCVNXRURFTgotCi0wMC0wOC1BRiAgIChoZXgpCQlOb3ZhdGVjIENvcnBvcmF0aW9uCi0wMDA4QUYgICAgIChiYXNlIDE2KQkJTm92YXRlYyBDb3Jwb3JhdGlvbgotCQkJCTItMTktMiBOaXNoaS1Hb3RhbmRhCi0JCQkJU2hpbmFnYXdhLWt1IFRva3lvIDE0MS0wMDMxCi0JCQkJSkFQQU4KLQotMDAtMDgtQjAgICAoaGV4KQkJQkt0ZWwgY29tbXVuaWNhdGlvbnMgR21iSAotMDAwOEIwICAgICAoYmFzZSAxNikJCUJLdGVsIGNvbW11bmljYXRpb25zIEdtYkgKLQkJCQlCZW56c3RyYXNzZSA0Ci0JCQkJNDE4MzYgSHVlY2tlbGhvdmVuLUJhYWwgTlJXIDQxODM2Ci0JCQkJR0VSTUFOWQotCi0wMC0wOC1CMSAgIChoZXgpCQlQcm9RdWVudCBTeXN0ZW1zCi0wMDA4QjEgICAgIChiYXNlIDE2KQkJUHJvUXVlbnQgU3lzdGVtcwotCQkJCTY3IEZvcmVzdCBTdHJlZXQKLQkJCQlNYXJsYm9ybyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQjIgICAoaGV4KQkJU0hFTlpIRU4gQ09NUEFTUyBURUNITk9MT0dZIERFVkVMT1BNRU5UIENPLixMVEQKLTAwMDhCMiAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBDT01QQVNTIFRFQ0hOT0xPR1kgREVWRUxPUE1FTlQgQ08uLExURAotCQkJCTR0aCBGbG9vcixCdWlsZGluZyAyMDUsVGFpUmFuIEluZHVzdHJ5Ci0JCQkJJlRyYWRlIFBhcmssRnV0aWFuIERpc3RyaWN0LFNoZW56aGVuCi0JCQkJU2hlbnpoZW4gR1VBTkdET05HIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTA4LUIzICAgKGhleCkJCUZhc3R3ZWwKLTAwMDhCMyAgICAgKGJhc2UgMTYpCQlGYXN0d2VsCi0JCQkJUHJvZnNveXV6bmF5YSAxMDgsCi0JCQkJTW9zY293ICAxMTczMTMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMDgtQjQgICAoaGV4KQkJU1lTUE9MCi0wMDA4QjQgICAgIChiYXNlIDE2KQkJU1lTUE9MCi0JCQkJNHRoIEZsLFNZU1BPTCBCL0QsIEJhbmdiYWUgNCBEb25nLCBTZW9jaAotCQkJCVNlb3VsICAxMzctMDY0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUI1ICAgKGhleCkJCVRBSSBHVUVOIEVOVEVSUFJJU0UgQ08uLCBMVEQKLTAwMDhCNSAgICAgKGJhc2UgMTYpCQlUQUkgR1VFTiBFTlRFUlBSSVNFIENPLiwgTFRECi0JCQkJTjAuNDAwLCAxMEYtNyBIVUFOUEVJIFJELiwKLQkJCQlDSFVORyBMSSBDSVRZIFRXLCBST0MuCi0JCQkJQ0hVTkcgTEkgIDMyMC02MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtQjYgICAoaGV4KQkJUm91dGVGcmVlLCBJbmMuCi0wMDA4QjYgICAgIChiYXNlIDE2KQkJUm91dGVGcmVlLCBJbmMuCi0JCQkJMzQwMCBIaWxsdmlldyBBdmUuIEJsZGcuIDUKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUI3ICAgKGhleCkJCUhJVCBJbmNvcnBvcmF0ZWQKLTAwMDhCNyAgICAgKGJhc2UgMTYpCQlISVQgSW5jb3Jwb3JhdGVkCi0JCQkJNEYsIDgsIExhbmUgMjM1LCBQYW8tQ2hpYW8gUm9hZCwKLQkJCQlTaGluIFRpZW4gVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtQjggICAoaGV4KQkJRS5GLiBKb2huc29uCi0wMDA4QjggICAgIChiYXNlIDE2KQkJRS5GLiBKb2huc29uCi0JCQkJMjk5IEpvaG5zb24gQXZlLgotCQkJCVAuTy4gQm94IDEyNDkKLQkJCQlXYXNlY2EgTU4gNTYwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUI5ICAgKGhleCkJCUtBT04gTUVESUEgQ28uLCBMdGQuCi0wMDA4QjkgICAgIChiYXNlIDE2KQkJS0FPTiBNRURJQSBDby4sIEx0ZC4KLQkJCQkjMTEzIEltYWUgMS1Eb25nLCBCdW5kYW5nLUd1Ci0JCQkJU3VuZ25hbS1DaXR5IEt5dW5na2ktRG8gNDYzLTgyOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1CQSAgIChoZXgpCQlFcnNraW5lIFN5c3RlbXMgTHRkCi0wMDA4QkEgICAgIChiYXNlIDE2KQkJRXJza2luZSBTeXN0ZW1zIEx0ZAotCQkJCVNhbHRlciBSb2FkCi0JCQkJRWFzdGZpZWxkIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJU2NhcmJvcm91Z2ggTm9ydGggWW9ya3NoaXJlIFlPMTEgM0RVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtQkIgICAoaGV4KQkJTmV0RXhjZWxsCi0wMDA4QkIgICAgIChiYXNlIDE2KQkJTmV0RXhjZWxsCi0JCQkJMTUzNzUgQmFycmFuY2EgUGt3eSwgI0UtMTA2Ci0JCQkJSXJ2aW5lIENBIDkyNjc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1CQyAgIChoZXgpCQlJbGV2byBBQgotMDAwOEJDICAgICAoYmFzZSAxNikJCUlsZXZvIEFCCi0JCQkJQm94IDE1NjEKLQkJCQlLYXJsc3RhZCBW5HJtbGFuZCBTLTY1MSAyMQotCQkJCVNXRURFTgotCi0wMC0wOC1CRCAgIChoZXgpCQlURVBHLVVTCi0wMDA4QkQgICAgIChiYXNlIDE2KQkJVEVQRy1VUwotCQkJCTEwMCBTaW1wbGV4IERyaXZlCi0JCQkJV2VzdG1pbnN0ZXIgTUEgMDE0NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUJFICAgKGhleCkJCVhFTlBBSyBNU0EgR3JvdXAKLTAwMDhCRSAgICAgKGJhc2UgMTYpCQlYRU5QQUsgTVNBIEdyb3VwCi0JCQkJQ2FyZSBvZjogQWdpbGVudCBUZWNobm9sb2dpZXMKLQkJCQlXaGl0ZSBIb3VzZSBSb2FkCi0JCQkJSXBzd2ljaCBTdWZmb2xrIElwMSA1UEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wOC1CRiAgIChoZXgpCQlBcHR1cyBFbGVrdHJvbmlrIEFCCi0wMDA4QkYgICAgIChiYXNlIDE2KQkJQXB0dXMgRWxla3Ryb25payBBQgotCQkJCUZPIFBldGVyc29ucyBHIDYKLQkJCQk0MjEgMzEgVi4gRnJvbHVuZGEKLQkJCQlTV0VERU4KLQotMDAtMDgtQzAgICAoaGV4KQkJQVNBIFNZU1RFTVMKLTAwMDhDMCAgICAgKGJhc2UgMTYpCQlBU0EgU1lTVEVNUwotCQkJCVMyNDUgS29yZWEgTWFyaXRpbWUgVW5pdmVyc2l0eSwgMSBEb25nc2EKLQkJCQlCdXNhbiBCdXNhbiBNZXRyb3BvbGl0YW4gQ2l0eSA2MDYtNzkxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUMxICAgKGhleCkJCUF2aXN0YXIgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMDhDMSAgICAgKGJhc2UgMTYpCQlBdmlzdGFyIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJMTU4NTEgRGFsbGFzIFBrd3kuCi0JCQkJU3VpdGUgNjAwCi0JCQkJQWRkaXNvbiBUWCA3NTAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQzIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOEMyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1DMyAgIChoZXgpCQlDb250ZXggQS9TCi0wMDA4QzMgICAgIChiYXNlIDE2KQkJQ29udGV4IEEvUwotCQkJCVN2YW5ldmFuZyAyCi0JCQkJQWxsZXJvZCBESyAzNDUwCi0JCQkJREVOTUFSSwotCi0wMC0wOC1DNCAgIChoZXgpCQlIaWthcmkgQ28uLEx0ZC4KLTAwMDhDNCAgICAgKGJhc2UgMTYpCQlIaWthcmkgQ28uLEx0ZC4KLQkJCQk0MTgtNCBNaW5hbWlub2RhIENoaWdlbm9idS1jaG8KLQkJCQlPbnNlbi1ndW4gRWhpbWUgNzkxLTAyOTcKLQkJCQlKQVBBTgotCi0wMC0wOC1DNSAgIChoZXgpCQlMaW9udGVjaCBDby4sIEx0ZC4KLTAwMDhDNSAgICAgKGJhc2UgMTYpCQlMaW9udGVjaCBDby4sIEx0ZC4KLQkJCQkzMDYsIFdvb3lvdW5nIFRlY2hubyBDZW50ZXIsIDI3My0xNSwKLQkJCQlTdW5nc3UyZ2EtM2RvbmcsIFN1bmdkb25nLWt1LAotCQkJCVNlb3VsICAxMzMtODMxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUM2ICAgKGhleCkJCVBoaWxpcHMgQ29uc3VtZXIgQ29tbXVuaWNhdGlvbnMKLTAwMDhDNiAgICAgKGJhc2UgMTYpCQlQaGlsaXBzIENvbnN1bWVyIENvbW11bmljYXRpb25zCi0JCQkJUm91dGUgZCdBbmdlcnMKLQkJCQk3MjA4MSBMZSBNYW5zCi0JCQkJQ2VkZXggOSAgCi0JCQkJRlJBTkNFCi0KLTAwLTA4LUM3ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAwOEM3ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQzggICAoaGV4KQkJU29uZXRpY29tLCBJbmMuCi0wMDA4QzggICAgIChiYXNlIDE2KQkJU29uZXRpY29tLCBJbmMuCi0JCQkJNDMyNSBXb29kbGFuZCBQYXJrIERyaXZlLCBTdWl0ZSAxMDIKLQkJCQlXZXN0IE1lbGJvdXJuZSBGbG9yaWRhIDMyOTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1DOSAgIChoZXgpCQlUZWNobmlTYXQgRGlnaXRhbCBHbWJICi0wMDA4QzkgICAgIChiYXNlIDE2KQkJVGVjaG5pU2F0IERpZ2l0YWwgR21iSAotCQkJCUdld2VyYmVwYXJrIE1lcmJpdHogTnIuIDUKLQkJCQlEcmVzZGVuIFNheG9ueSAwMTE1NgotCQkJCUdFUk1BTlkKLQotMDAtMDgtQ0EgICAoaGV4KQkJVHdpbkhhbiBUZWNobm9sb2d5IENvLixMdGQKLTAwMDhDQSAgICAgKGJhc2UgMTYpCQlUd2luSGFuIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTEzRi02LE5vIDc5LFNlYyAxLEhzaW4gVGFpIFd1IFJELixIc2ktQ2gKLQkJCQlUYWlwZWkgSHNpZW4gIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtQ0IgICAoaGV4KQkJWmV0YSBCcm9hZGJhbmQgSW5jLgotMDAwOENCICAgICAoYmFzZSAxNikJCVpldGEgQnJvYWRiYW5kIEluYy4KLQkJCQk2NjAgVmlzdGEgV2F5LCBTdWl0ZSBCCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUNDICAgKGhleCkJCVJlbW90ZWMsIEluYy4KLTAwMDhDQyAgICAgKGJhc2UgMTYpCQlSZW1vdGVjLCBJbmMuCi0JCQkJMTE0IFVuaW9uIFZhbGxleSBSb2FkCi0JCQkJT2FrIFJpZGdlIFROIDM3ODMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1DRCAgIChoZXgpCQlXaXRoLU5ldCBJbmMKLTAwMDhDRCAgICAgKGJhc2UgMTYpCQlXaXRoLU5ldCBJbmMKLQkJCQk0RkwgQiZCIEIvRCAxNDAzLTQKLQkJCQlLd2FuZ3lhbmcxLWRvbmcgRG9uZ2FuLWt1Ci0JCQkJQW55YW5nIEt5b25nZ2kgNDMxLTA2MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1DRSAgIChoZXgpCQlJUE1vYmlsZU5ldCBJbmMuCi0wMDA4Q0UgICAgIChiYXNlIDE2KQkJSVBNb2JpbGVOZXQgSW5jLgotCQkJCTExOTA5IEUgVGVsZWdyYXBoIFJkLgotCQkJCVNhbnRhIEZlIFNwcmluZ3MgQ0EgOTA2NzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUNGICAgKGhleCkJCU5pcHBvbiBLb2VpIFBvd2VyIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDA4Q0YgICAgIChiYXNlIDE2KQkJTmlwcG9uIEtvZWkgUG93ZXIgU3lzdGVtcyBDby4sIEx0ZC4KLQkJCQkyOTQwIFNoaW55b3NoaWRhLWNobwotCQkJCUtvaG9rdS1rdSBZb2tvaGFtYSAyMjMtODUwNgotCQkJCUpBUEFOCi0KLTAwLTA4LUQwICAgKGhleCkJCU11c2FzaGkgRW5naW5lZXJpbmcgQ28uLCBMVEQuCi0wMDA4RDAgICAgIChiYXNlIDE2KQkJTXVzYXNoaSBFbmdpbmVlcmluZyBDby4sIExURC4KLQkJCQkzLTExLTcsIE5pc2hpLXNoaW1iYXNoaQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDUtMDAwMwotCQkJCUpBUEFOCi0KLTAwLTA4LUQxICAgKGhleCkJCUtBUkVMIElOQy4KLTAwMDhEMSAgICAgKGJhc2UgMTYpCQlLQVJFTCBJTkMuCi0JCQkJT1JHQU5JWkUgU0FOQVlJIEJPTEdFU0kKLQkJCQlHQVpORUxJTEVSIENBRCBOTzoxMCAgU0lOQ0FOCi0JCQkJQU5LQVJBICAwNjkzNQotCQkJCVRVUktFWQotCi0wMC0wOC1EMiAgIChoZXgpCQlaT09NIE5ldHdvcmtzIEluYy4KLTAwMDhEMiAgICAgKGJhc2UgMTYpCQlaT09NIE5ldHdvcmtzIEluYy4KLQkJCQkxM0YsWGluTHVEYW8gQnVpbGRpbmcsTm8uMTE3NSxOYW5zaGFuIFJvCi0JCQkJU2hlbiBaaGVuIEd1YW5nRG9uZyBQcm92aW5jZSA1MTgwNTIKLQkJCQlDSElOQQotCi0wMC0wOC1EMyAgIChoZXgpCQlIZXJjdWxlcyBUZWNobm9sb2dpZXMgUy5BLgotMDAwOEQzICAgICAoYmFzZSAxNikJCUhlcmN1bGVzIFRlY2hub2xvZ2llcyBTLkEuCi0JCQkJUGxhY2UgZGUgbCfpdG9pbGUKLQkJCQlDYXJlbnRvaXIgQnJldGFnbmUgNTY5MTAKLQkJCQlGUkFOQ0UKLQotMDAtMDgtRDQgICAoaGV4KQkJSW5lb1F1ZXN0IFRlY2hub2xvZ2llcywgSW5jCi0wMDA4RDQgICAgIChiYXNlIDE2KQkJSW5lb1F1ZXN0IFRlY2hub2xvZ2llcywgSW5jCi0JCQkJMTkzMSBXYXNoaW5ndG9uIFN0Ci0JCQkJQ2FudG9uIE1hc3NhY2h1c2V0dHMgMDIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUQ1ICAgKGhleCkJCVZhbmd1YXJkIE5ldHdvcmtzIFNvbHV0aW9ucywgTExDCi0wMDA4RDUgICAgIChiYXNlIDE2KQkJVmFuZ3VhcmQgTmV0d29ya3MgU29sdXRpb25zLCBMTEMKLQkJCQkyNSBGb3JiZXMgQm91bGV2YXJkCi0JCQkJRm94Ym9ybyBNQSAwMjAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRDYgICAoaGV4KQkJSEFTU05FVCBJbmMuCi0wMDA4RDYgICAgIChiYXNlIDE2KQkJSEFTU05FVCBJbmMuCi0JCQkJMkYgTWlzc3kyMDAwIEIvRCA3MjUsIFNvb1Nlby1Eb25nLAotCQkJCUthbmduYW0tS3UKLQkJCQlTZW91bCAgMTM1LTc1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1ENyAgIChoZXgpCQlIT1cgQ09SUE9SQVRJT04KLTAwMDhENyAgICAgKGJhc2UgMTYpCQlIT1cgQ09SUE9SQVRJT04KLQkJCQkxLTExLTE3IENoaXlvZGEKLQkJCQlTYWdhbWloYXJhIEthbmFnYXdhIDIyOS0wMDM3Ci0JCQkJSkFQQU4KLQotMDAtMDgtRDggICAoaGV4KQkJRG93a2V5IE1pY3Jvd2F2ZQotMDAwOEQ4ICAgICAoYmFzZSAxNikJCURvd2tleSBNaWNyb3dhdmUKLQkJCQk0ODIyIE1jR3JhdGggU3RyZWV0Ci0JCQkJVmVudHVyYSBDYSA5MzAwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRDkgICAoaGV4KQkJTWl0YWRlbnNoaSBDby4sTFRECi0wMDA4RDkgICAgIChiYXNlIDE2KQkJTWl0YWRlbnNoaSBDby4sTFRECi0JCQkJMS04LTYgRnVydWljaGkgQXNhbWluYW1pa3UKLQkJCQlIaXJvc2hpbWEgIDczMS0wMTIzCi0JCQkJSkFQQU4KLQotMDAtMDgtREEgICAoaGV4KQkJU29mYVdhcmUgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMDhEQSAgICAgKGJhc2UgMTYpCQlTb2ZhV2FyZSBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTMgSGlsYXpvbiBTdC4KLQkJCQlSYW1hdC1HYW4gIDUyNTIyCi0JCQkJSVNSQUVMCi0KLTAwLTA4LURCICAgKGhleCkJCUNvcnJpZ2VudCBTeXN0ZW1zCi0wMDA4REIgICAgIChiYXNlIDE2KQkJQ29ycmlnZW50IFN5c3RlbXMKLQkJCQkxMjYgWWlnYWwgQWxvbgotCQkJCVRlbCBBdml2ICA2NzQ0MwotCQkJCUlTUkFFTAotCi0wMC0wOC1EQyAgIChoZXgpCQlXaXpuZXQKLTAwMDhEQyAgICAgKGJhc2UgMTYpCQlXaXpuZXQKLQkJCQk1RiBTaW1tdGVjaCBibGRnLiwgMjI4LTMsCi0JCQkJTm9ueWh1biwgS2FuZ25hbQotCQkJCVNlb3VsICAxMzUtODMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUREICAgKGhleCkJCVRlbGVuYSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwOEREICAgICAoYmFzZSAxNikJCVRlbGVuYSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTY3MjUgTWVzYSBSaWRnZSBSb2FkCi0JCQkJU3VpdGUgMjI2Ci0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1ERSAgIChoZXgpCQkzVVAgU3lzdGVtcwotMDAwOERFICAgICAoYmFzZSAxNikJCTNVUCBTeXN0ZW1zCi0JCQkJNiBSZXN1bHRzIFdheQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtREYgICAoaGV4KQkJQWxpc3RlbCBJbmMuCi0wMDA4REYgICAgIChiYXNlIDE2KQkJQWxpc3RlbCBJbmMuCi0JCQkJTWlkb3JpIEJsZGcuIDJGCi0JCQkJMS01LTIwIE5ha2FnYXdhLCBUc3V6dWtpLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTAwMDEKLQkJCQlKQVBBTgotCi0wMC0wOC1FMCAgIChoZXgpCQlBVE8gVGVjaG5vbG9neSBMdGQuCi0wMDA4RTAgICAgIChiYXNlIDE2KQkJQVRPIFRlY2hub2xvZ3kgTHRkLgotCQkJCVJtLiAxMzE0LTEzNDYsIEJsb2NrIEIxLCBZYXUgVG9uZyBJbmQuIEMKLQkJCQlZYXUgVG9uZywgS293bG9vbiwKLQkJCQlIb25nIEtvbmcgIAotCQkJCUhPTkcgS09ORwotCi0wMC0wOC1FMSAgIChoZXgpCQlCYXJpeCBBRwotMDAwOEUxICAgICAoYmFzZSAxNikJCUJhcml4IEFHCi0JCQkJV2llc2Vuc3RyLiAxNwotCQkJCVp1ZXJpY2ggWkggODAwOAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA4LUUyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDhFMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otQmxkIE0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1FMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA4RTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLUJsZCBNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRTQgICAoaGV4KQkJRW52ZW5lcmd5IEluYwotMDAwOEU0ICAgICAoYmFzZSAxNikJCUVudmVuZXJneSBJbmMKLQkJCQk2MzA3IENhcnBpbnRlcmlhIEF2ZQotCQkJCUNhcnBpbnRlcmlhIENBIDkzMDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1FNSAgIChoZXgpCQlJREsgQ29ycG9yYXRpb24KLTAwMDhFNSAgICAgKGJhc2UgMTYpCQlJREsgQ29ycG9yYXRpb24KLQkJCQk2LTctMTAKLQkJCQlDaHVvLVJpbmthbgotCQkJCVlhbWF0byBLYW5hZ2F3YSAyNDItMDAwNwotCQkJCUpBUEFOCi0KLTAwLTA4LUU2ICAgKGhleCkJCUxpdHRsZWZlZXQKLTAwMDhFNiAgICAgKGJhc2UgMTYpCQlMaXR0bGVmZWV0Ci0JCQkJMTMwMDAgR3JlZ2cgU3RyZWV0Ci0JCQkJUG93YXkgQ2FsaWZvcm5pYSA5MjA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRTcgICAoaGV4KQkJU0hJIENvbnRyb2xTeXN0ZW1zLEx0ZC4KLTAwMDhFNyAgICAgKGJhc2UgMTYpCQlTSEkgQ29udHJvbFN5c3RlbXMsTHRkLgotCQkJCTE5LE5hdHVzaW1hCi0JCQkJWW9rb3N1a2EgS2FuYWdhd2EgMjM3LTg1NTUKLQkJCQlKQVBBTgotCi0wMC0wOC1FOCAgIChoZXgpCQlFeGNlbCBNYXN0ZXIgTHRkLgotMDAwOEU4ICAgICAoYmFzZSAxNikJCUV4Y2VsIE1hc3RlciBMdGQuCi0JCQkJUm9vbSBELCAzL0YuLCBZZXVuZyBZaXUgQ2h1bmcgKE5vLiA4KSBJbmQuIEJsZGcuCi0JCQkJMjAgV2FuZyBIb2kgUm9hZAotCQkJCUtvd2xvb24gQmF5IAotCQkJCUhPTkcgS09ORwotCi0wMC0wOC1FOSAgIChoZXgpCQlOZXh0R2lnCi0wMDA4RTkgICAgIChiYXNlIDE2KQkJTmV4dEdpZwotCQkJCTk4MjAtQiBUb3duZSBDZW50cmUgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUVBICAgKGhleCkJCU1vdGlvbiBDb250cm9sIEVuZ2luZWVyaW5nLCBJbmMKLTAwMDhFQSAgICAgKGJhc2UgMTYpCQlNb3Rpb24gQ29udHJvbCBFbmdpbmVlcmluZywgSW5jCi0JCQkJMTEzODAgV2hpdGUgUm9jayBSb2FkCi0JCQkJUmFuY2hvIENvcmRvdmEgQ0EgOTU3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUVCICAgKGhleCkJCVJPTVdpbiBDby4sTHRkLgotMDAwOEVCICAgICAoYmFzZSAxNikJCVJPTVdpbiBDby4sTHRkLgotCQkJCTQwNiBPbWl5YU9odGFrYSBCbGRnLiAxLTEwMwotCQkJCUtpc2hpa2ktY2hvCi0JCQkJU2FpdGFtYSAgMzMwLTA4NDMKLQkJCQlKQVBBTgotCi0wMC0wOC1FQyAgIChoZXgpCQlPcHRpY2FsIFpvbnUgQ29ycG9yYXRpb24KLTAwMDhFQyAgICAgKGJhc2UgMTYpCQlPcHRpY2FsIFpvbnUgQ29ycG9yYXRpb24KLQkJCQkxNTAyOCBEZWxhbm8gU3RyZWV0Ci0JCQkJVmFuIE51eXMgQ0EgOTE0MTEtMjAxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRUQgICAoaGV4KQkJU1QmVCBJbnN0cnVtZW50IENvcnAuCi0wMDA4RUQgICAgIChiYXNlIDE2KQkJU1QmVCBJbnN0cnVtZW50IENvcnAuCi0JCQkJMTYgU2hpbmctR29uZyBSb2FkLCBZdW5nLUt1bmcgSW5kdXN0cmlhbAotCQkJCVl1bmctS3VuZyBUYWluYW4gNzEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOC1FRSAgIChoZXgpCQlMb2dpYyBQcm9kdWN0IERldmVsb3BtZW50Ci0wMDA4RUUgICAgIChiYXNlIDE2KQkJTG9naWMgUHJvZHVjdCBEZXZlbG9wbWVudAotCQkJCTQxMSBXYXNoaW5ndG9uIEF2ZSBOLiBTdWl0ZSAxMDEKLQkJCQlNaW5uZWFwb2xpcyBNaW5uZXNvdGEgNTU0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUVGICAgKGhleCkJCURJQkFMLFMuQS4KLTAwMDhFRiAgICAgKGJhc2UgMTYpCQlESUJBTCxTLkEuCi0JCQkJQXN0aW50emUgS2FsZWEgMjQKLQkJCQlEZXJpbyBWaXpjYXlhIDQ4MTYwCi0JCQkJU1BBSU4KLQotMDAtMDgtRjAgICAoaGV4KQkJTmV4dCBHZW5lcmF0aW9uIFN5c3RlbXMsIEluYy4KLTAwMDhGMCAgICAgKGJhc2UgMTYpCQlOZXh0IEdlbmVyYXRpb24gU3lzdGVtcywgSW5jLgotCQkJCVBPIEJPWCAzMTIwNQotCQkJCURheXRvbiBPSCA0NTQzNy0wMjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1GMSAgIChoZXgpCQlWb2x0YWlyZQotMDAwOEYxICAgICAoYmFzZSAxNikJCVZvbHRhaXJlCi0JCQkJOSBIYW1lbm9maW0gc3QuCi0JCQkJSGVyemVsaWEgIDQ2NzI1Ci0JCQkJSVNSQUVMCi0KLTAwLTA4LUYyICAgKGhleCkJCUMmUyBUZWNobm9sb2d5Ci0wMDA4RjIgICAgIChiYXNlIDE2KQkJQyZTIFRlY2hub2xvZ3kKLQkJCQlDJlMgVmVudHVyZSBCbGRnLiwgTm9uSHl1bi1Eb25nLAotCQkJCTIyMS0xLCBHYW5nTmFtLUd1Ci0JCQkJU0VPVUwgIDEzNS04MjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtRjMgICAoaGV4KQkJV0FOWQotMDAwOEYzICAgICAoYmFzZSAxNikJCVdBTlkKLQkJCQlDRUVJIENhcCBBbHBoYQotCQkJCUF2ZW51ZSBkZSBsJ0V1cm9wZSwgQ2xhcGllcnMKLQkJCQlNb250cGVsbGllciBIZXJhdWx0IDM0OTQwCi0JCQkJRlJBTkNFCi0KLTAwLTA4LUY0ICAgKGhleCkJCUJsdWV0YWtlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA4RjQgICAgIChiYXNlIDE2KQkJQmx1ZXRha2UgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk2RiwgTm8uIDMzLCBMYW5lIDE1NSwgU2VjLiAzLCBQZWkgU2hlbiBSCi0JCQkJU2FlbiBLZW5nIFNoaWFuZywgVGFpcGVpCi0JCQkJVGFpcGVpIFRhaXdhbiAyMjIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LUY1ICAgKGhleCkJCVlFU1RFQ0hOT0xPR1kgQ28uLEx0ZC4KLTAwMDhGNSAgICAgKGJhc2UgMTYpCQlZRVNURUNITk9MT0dZIENvLixMdGQuCi0JCQkJNHRoIEZMIEt5dW5nLUFtIEIvRCAxNTctMjcgU2Ftc3VuZy1Eb25nLAotCQkJCVNlb3VsIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtRjYgICAoaGV4KQkJU3VtaXRvbW8gRWxlY3RyaWMgU3lzdGVtIFNvbHV0aW9ucyBDby4sTHRkLgotMDAwOEY2ICAgICAoYmFzZSAxNikJCVN1bWl0b21vIEVsZWN0cmljIFN5c3RlbSBTb2x1dGlvbnMgQ28uLEx0ZC4KLQkJCQlzaGltYXlhIDEtMS0zLCBrb25vaGFuYS1rdQotCQkJCU9zYWthIGNpdHkgT1NBS0EgMTEyLTAwMTQKLQkJCQlKQVBBTgotCi0wMC0wOC1GNyAgIChoZXgpCQlIaXRhY2hpIEx0ZCwgU2VtaWNvbmR1Y3RvciAmYW1wOyBJbnRlZ3JhdGVkIENpcmN1aXRzIEdyCi0wMDA4RjcgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBMdGQsIFNlbWljb25kdWN0b3IgJmFtcDsgSW50ZWdyYXRlZCBDaXJjdWl0cyBHcgotCQkJCTIwLTEgSm9zdWlob24tY2hvdSA1Y2hvbWUKLQkJCQlLb2RhaXJhLXNoaSBUb2t5byAxODctODU4OAotCQkJCUpBUEFOCi0KLTAwLTA4LUY4ICAgKGhleCkJCUd1YXJkYWxsIEx0ZAotMDAwOEY4ICAgICAoYmFzZSAxNikJCUd1YXJkYWxsIEx0ZAotCQkJCUxvY2hlbmQgSW5kdXN0cmlhbCBFc3RhdGUsCi0JCQkJTmV3YnJpZGdlCi0JCQkJRWRpbmJ1cmdoIFNjb3RsYW5kIEVIMjggOFBMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtRjkgICAoaGV4KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0wMDA4RjkgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0JCQkJMjkwMCBTLiBEaWFibG8gV2F5IFN1aXRlIDE5MAotCQkJCVRlbXBlIEFaIDg1MjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1GQSAgIChoZXgpCQlLYXJsIEUuQnJpbmttYW5uIEdtYkgKLTAwMDhGQSAgICAgKGJhc2UgMTYpCQlLYXJsIEUuQnJpbmttYW5uIEdtYkgKLQkJCQlGb2Vyc3RlcndlZyAzNi0zOAotCQkJCUJhcm50cnVwIE5SVyBELTMyNjgzCi0JCQkJR0VSTUFOWQotCi0wMC0wOC1GQiAgIChoZXgpCQlTb25vU2l0ZSwgSW5jLgotMDAwOEZCICAgICAoYmFzZSAxNikJCVNvbm9TaXRlLCBJbmMuCi0JCQkJMjE5MTkgMzB0aCBEcml2ZSBTRQotCQkJCUJvdGhlbGwgV0EgOTgwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUZDICAgKGhleCkJCUdpZ2FwaG90b24gSW5jLgotMDAwOEZDICAgICAoYmFzZSAxNikJCUdpZ2FwaG90b24gSW5jLgotCQkJCVlPS09LVVJBIFNISU5ERU40MDAKLQkJCQlPWUFNQSBUT1RJR0kgMzIzLTg1NTgKLQkJCQlKQVBBTgotCi0wMC0wOC1GRCAgIChoZXgpCQlCbHVlS29yZWEgQ28uLCBMdGQuCi0wMDA4RkQgICAgIChiYXNlIDE2KQkJQmx1ZUtvcmVhIENvLiwgTHRkLgotCQkJCTNGLCBzZWpvbmcgQnVpbGRpbmcsIDM3OS0xNSwgU2Vva3lvLURvbmcKLQkJCQlNYXBvLUt1LAotCQkJCVNlb3VsICAxMjEtODM5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUZFICAgKGhleCkJCVVOSUsgQyZDIENvLixMdGQuCi0wMDA4RkUgICAgIChiYXNlIDE2KQkJVU5JSyBDJkMgQ28uLEx0ZC4KLQkJCQk3MDYtMTMgVU5JSyBCTERHIDE3RgotCQkJCVlFT0stU0FNIEtBTkctTkFNIEdVCi0JCQkJU0VPVUwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtRkYgICAoaGV4KQkJVHJpbG9neSBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMDhGRiAgICAgKGJhc2UgMTYpCQlUcmlsb2d5IENvbW11bmljYXRpb25zIEx0ZAotCQkJCTI2IEZvY3VzIFdheQotCQkJCVdhbHdvcnRoIEVzdGF0ZQotCQkJCUFuZG92ZXIgSGFtcHNoaXJlIFNQMTAgNU5ZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDktMDAgICAoaGV4KQkJVE1UCi0wMDA5MDAgICAgIChiYXNlIDE2KQkJVE1UCi0JCQkJMTEgS2lyeWF0IE1hZGEsIFBPQiA0NTE5OQotCQkJCUplcnVzYWxlbSAgOTE0NTAKLQkJCQlJU1JBRUwKLQotMDAtMDktMDEgICAoaGV4KQkJU2hlbnpoZW4gU2hpeHVudG9uZyBJbmZvcm1hdGlvbiAmIFRlY2hub2xpZ3kgQ28KLTAwMDkwMSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBTaGl4dW50b25nIEluZm9ybWF0aW9uICYgVGVjaG5vbGlneSBDbwotCQkJCVJvb20gNDAzLDYxNyBCbGRnO0JhZ3VhIDEgUm9hZCAsU2hlbnpoZW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDI5Ci0JCQkJQ0hJTkEKLQotMDAtMDktMDIgICAoaGV4KQkJUmVkbGluZSBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDA5MDIgICAgIChiYXNlIDE2KQkJUmVkbGluZSBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJMzAyIFRvd24gQ2VudHJlIEJsdmQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlNYXJraGFtIE9OIEwzUiAwRTgKLQkJCQlDQU5BREEKLQotMDAtMDktMDMgICAoaGV4KQkJUGFuYXNhcywgSW5jCi0wMDA5MDMgICAgIChiYXNlIDE2KQkJUGFuYXNhcywgSW5jCi0JCQkJMTUzMzMgSm9obiBGIEtlbm5lZHkgQmx2ZCwgU3VpdGUgNDAwCi0JCQkJSG91c3RvbiBUWCA3NzAzMi0yMzUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0wNCAgIChoZXgpCQlNT05ESUFMIGVsZWN0cm9uaWMKLTAwMDkwNCAgICAgKGJhc2UgMTYpCQlNT05ESUFMIGVsZWN0cm9uaWMKLQkJCQlFZ2dlbHNiZXJnIDczCi0JCQkJRWdnZWxzYmVyZyBPYmVyb2VzdGVycmVpY2ggNTE0MgotCQkJCUFVU1RSSUEKLQotMDAtMDktMDUgICAoaGV4KQkJaVRFQyBUZWNobm9sb2dpZXMgTHRkLgotMDAwOTA1ICAgICAoYmFzZSAxNikJCWlURUMgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQkxNjAtMSwgS2FyYWstRG9uZywgU29uZ3BhLUd1Ci0JCQkJU2VvdWwgIDEzOC04MDkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktMDYgICAoaGV4KQkJRXN0ZWVtIE5ldHdvcmtzCi0wMDA5MDYgICAgIChiYXNlIDE2KQkJRXN0ZWVtIE5ldHdvcmtzCi0JCQkJNEYsIE5vLjkwMCwgWWlzaGFuIFJvYWQKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMDktMDcgICAoaGV4KQkJQ2hyeXNhbGlzIERldmVsb3BtZW50Ci0wMDA5MDcgICAgIChiYXNlIDE2KQkJQ2hyeXNhbGlzIERldmVsb3BtZW50Ci0JCQkJODEyNSBSaXZlciBEci4gU3VpdGUgMTAwCi0JCQkJTW9ydG9uIEdyb3ZlIElMIDYwMDUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0wOCAgIChoZXgpCQlWVGVjaCBUZWNobm9sb2d5IENvcnAuCi0wMDA5MDggICAgIChiYXNlIDE2KQkJVlRlY2ggVGVjaG5vbG9neSBDb3JwLgotCQkJCTJGLTIsIE5vLiAxMjQsIENodW5nIENoZW5nIFJkLiwgU2hpaGxpbgotCQkJCVRhaXBlaSAgMTExNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTA5ICAgKGhleCkJCVRlbGVub3IgQ29ubmVjdCBBL1MKLTAwMDkwOSAgICAgKGJhc2UgMTYpCQlUZWxlbm9yIENvbm5lY3QgQS9TCi0JCQkJRWxsZWdhYXJkdmVqIDI1TAotCQkJCVP4bmRlcmJvcmcgQWxzIDY0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTA5LTBBICAgKGhleCkJCVNuZWRGYXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDkwQSAgICAgKGJhc2UgMTYpCQlTbmVkRmFyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTVGTC4sIE5vLjg2Ni0yLCBKdW5nIEplbmcgUmQuLAotCQkJCUp1bmdoZSBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS0wQiAgIChoZXgpCQlNVEwgIEluc3RydW1lbnRzIFBMQwotMDAwOTBCICAgICAoYmFzZSAxNikJCU1UTCAgSW5zdHJ1bWVudHMgUExDCi0JCQkJUG93ZXIgQ291cnQKLQkJCQlMdXRvbiBCZWRmb3Jkc2hpcmUgTFUxIDNKSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LTBDICAgKGhleCkJCU1heWVrYXdhIE1mZy4gQ28uIEx0ZC4KLTAwMDkwQyAgICAgKGJhc2UgMTYpCQlNYXlla2F3YSBNZmcuIENvLiBMdGQuCi0JCQkJMTY4MjUgSUggMzUgTm9ydGgKLQkJCQlTZWxtYSBUZXhhcyA3ODE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktMEQgICAoaGV4KQkJTEVBREVSIEVMRUNUUk9OSUNTIENPUlAuCi0wMDA5MEQgICAgIChiYXNlIDE2KQkJTEVBREVSIEVMRUNUUk9OSUNTIENPUlAuCi0JCQkJMi02LTMzLCBUU1VOQVNISU1BLUhJR0FTSEkKLQkJCQlLT0hPS1UtS1UgWU9LT0hBTUEgMjIzLTg1MDUKLQkJCQlKQVBBTgotCi0wMC0wOS0wRSAgIChoZXgpCQlIZWxpeCBUZWNobm9sb2d5IEluYy4KLTAwMDkwRSAgICAgKGJhc2UgMTYpCQlIZWxpeCBUZWNobm9sb2d5IEluYy4KLQkJCQk1RiwgTm8uIDYsIFNlYyAxLCBKdW5nLVNoaW5nIFJkLiwgV3VndS1TCi0JCQkJVGFpcGVpICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTBGICAgKGhleCkJCUZvcnRpbmV0IEluYy4KLTAwMDkwRiAgICAgKGJhc2UgMTYpCQlGb3J0aW5ldCBJbmMuCi0JCQkJMzMzMyBPY3Rhdml1cyBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0xMCAgIChoZXgpCQlTaW1wbGUgQWNjZXNzIEluYy4KLTAwMDkxMCAgICAgKGJhc2UgMTYpCQlTaW1wbGUgQWNjZXNzIEluYy4KLQkJCQk2MDAgTWNDYWZmcmV5IFN0cmVldAotCQkJCVN0LUxhdXJlbnQgUXVlYmVjIEg0VDFOMQotCQkJCUNBTkFEQQotCi0wMC0wOS0xMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA5MTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0xMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA5MTIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0xMyAgIChoZXgpCQlTeXN0ZW1LIENvcnBvcmF0aW9uCi0wMDA5MTMgICAgIChiYXNlIDE2KQkJU3lzdGVtSyBDb3Jwb3JhdGlvbgotCQkJCTIzOC05IEhpZ2FzaGkgMSwgS2l0YSAxNSwgSGlnYXNoaS1rdQotCQkJCVNhcHBvcm8gSG9ra2FpZG8gMDY1LTAwMTUKLQkJCQlKQVBBTgotCi0wMC0wOS0xNCAgIChoZXgpCQlDT01QVVRST0xTIElOQy4KLTAwMDkxNCAgICAgKGJhc2UgMTYpCQlDT01QVVRST0xTIElOQy4KLQkJCQkyMjEgQmFyayBEcml2ZQotCQkJCUhhcnZleSBMQSA3MDA1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktMTUgICAoaGV4KQkJQ0FTIENvcnAuCi0wMDA5MTUgICAgIChiYXNlIDE2KQkJQ0FTIENvcnAuCi0JCQkJIzE5LCBHYW5hcC1SaQotCQkJCUt3YW5nZ3VrLU15dW4KLQkJCQlZYW5nanUtR3VuIEt5dW5nZ2ktRG8gNDgyLTg0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0xNiAgIChoZXgpCQlMaXN0bWFuIEhvbWUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA5MTYgICAgIChiYXNlIDE2KQkJTGlzdG1hbiBIb21lIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTExMDAgTm9ydGhtZWFkb3cgUGFya3dheQotCQkJCVN1aXRlIDEwOAotCQkJCVJvc3dlbGwgR2VvcmdpYSAzMDA3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktMTcgICAoaGV4KQkJV0VNIFRlY2hub2xvZ3kgSW5jCi0wMDA5MTcgICAgIChiYXNlIDE2KQkJV0VNIFRlY2hub2xvZ3kgSW5jCi0JCQkJOEYtMiwgTm8gMzg2LCBTZWMgNSBOYW5qaW5nIEVhc3QgUm9hZC4KLQkJCQlUYWlwZWkgIDEwNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMTggICAoaGV4KQkJU0FNU1VORyBURUNIV0lOIENPLixMVEQKLTAwMDkxOCAgICAgKGJhc2UgMTYpCQlTQU1TVU5HIFRFQ0hXSU4gQ08uLExURAotCQkJCTQyCi0JCQkJU1VOR0pVRE9ORwotCQkJCUNIQU5HV09OIEtZT05HTkFNIDY0MS03MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktMTkgICAoaGV4KQkJTURTIEdhdGV3YXlzCi0wMDA5MTkgICAgIChiYXNlIDE2KQkJTURTIEdhdGV3YXlzCi0JCQkJQ2xvbnNoYXVnaCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUNsb25zaGF1Z2gKLQkJCQlEdWJsaW4gMTcgIAotCQkJCUlSRUxBTkQKLQotMDAtMDktMUEgICAoaGV4KQkJTWFjYXQgT3B0aWNzICYgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA5MUEgICAgIChiYXNlIDE2KQkJTWFjYXQgT3B0aWNzICYgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJMTUvRi4sIE1hY2F0IENlbnRlciwgTm8uIDYzIE1hY2F0IFJvYWQKLQkJCQlIdWl6aG91IEd1YW5nZG9uZyA1MTYwMDEKLQkJCQlDSElOQQotCi0wMC0wOS0xQiAgIChoZXgpCQlEaWdpdGFsIEdlbmVyYXRpb24gSW5jLgotMDAwOTFCICAgICAoYmFzZSAxNikJCURpZ2l0YWwgR2VuZXJhdGlvbiBJbmMuCi0JCQkJNUYsIEhvLVNhbSBCL0QsICMzMC0zLCBCb25nY2h1bjYtRG9uZwotCQkJCUt3YW5hay1LdSwgU2VvdWwgMTUxLTA4OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0xQyAgIChoZXgpCQlDYWNoZVZpc2lvbiwgSW5jCi0wMDA5MUMgICAgIChiYXNlIDE2KQkJQ2FjaGVWaXNpb24sIEluYwotCQkJCTE5OTAgQ29uY291cnNlIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTFEICAgKGhleCkJCVByb3RlYW0gQ29tcHV0ZXIgQ29ycG9yYXRpb24KLTAwMDkxRCAgICAgKGJhc2UgMTYpCQlQcm90ZWFtIENvbXB1dGVyIENvcnBvcmF0aW9uCi0JCQkJN0YsIE5vLiAxNTcuIFNlY3Rpb24gMiBUYS1UdW5nIFJkCi0JCQkJSHNpLUNoaWggVGFpcGVpIEhzaWVuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMUUgICAoaGV4KQkJRmlyc3RlY2ggVGVjaG5vbG9neSBDb3JwLgotMDAwOTFFICAgICAoYmFzZSAxNikJCUZpcnN0ZWNoIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk4ZmwuLE5vLjI2NyxzZWN0aW9uIDQsSHNpbi1ZaSBSZC4gLERhLUFuCi0JCQkJVGFpcGVpICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTFGICAgKGhleCkJCUEmYW1wO0QgQ28uLCBMdGQuCi0wMDA5MUYgICAgIChiYXNlIDE2KQkJQSZhbXA7RCBDby4sIEx0ZC4KLQkJCQkxLTI0MyBBc2FoaQotCQkJCUtpdGFtb3RvLXNoaSBTYWl0YW1hIDM2NC04NTg1Ci0JCQkJSkFQQU4KLQotMDAtMDktMjAgICAoaGV4KQkJRXBvWCBDT01QVVRFUiBDTy4sTFRELgotMDAwOTIwICAgICAoYmFzZSAxNikJCUVwb1ggQ09NUFVURVIgQ08uLExURC4KLQkJCQkxMHRoIEZsb29yLCBOby4zNDYsQ2h1bmcgU2FuIFJkLixTZWMuMiwKLQkJCQlDaHVuZyBIbyBDaXR5LFRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS0yMSAgIChoZXgpCQlQbGFubWVjYSBPeQotMDAwOTIxICAgICAoYmFzZSAxNikJCVBsYW5tZWNhIE95Ci0JCQkJQXNlbnRhamFua2F0dSA2Ci0JCQkJSEVMU0lOS0kgIDAwODEwIEhFTFNJTgotCQkJCUZJTkxBTkQKLQotMDAtMDktMjIgICAoaGV4KQkJVFNUIEJpb21ldHJpY3MgR21iSAotMDAwOTIyICAgICAoYmFzZSAxNikJCVRTVCBCaW9tZXRyaWNzIEdtYkgKLQkJCQlNb2VobHN0ci4gMzkKLQkJCQk4MTY3NSBNdW5pY2ggCi0JCQkJR0VSTUFOWQotCi0wMC0wOS0yMyAgIChoZXgpCQlIZWFtYW4gU3lzdGVtIENvLiwgTHRkCi0wMDA5MjMgICAgIChiYXNlIDE2KQkJSGVhbWFuIFN5c3RlbSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIE02LE5hdGlvbmFsIEhpLXRlY2ggJiBJbmR1cwotCQkJCUNoYW5nc2hhIEh1bmFuIFByb3ZpbmNlIDQxMDAxMwotCQkJCUNISU5BCi0KLTAwLTA5LTI0ICAgKGhleCkJCVRlbGViYXUgR21iSAotMDAwOTI0ICAgICAoYmFzZSAxNikJCVRlbGViYXUgR21iSAotCQkJCUFtIEtyYWVoZW5iZXJnIDEKLQkJCQlXYWxkZWNrLVNhY2hzZW5oYXVzZW4gR2VybWFueSAzNDUxMwotCQkJCUdFUk1BTlkKLQotMDAtMDktMjUgICAoaGV4KQkJVlNOIFN5c3RlbWVuIEJWCi0wMDA5MjUgICAgIChiYXNlIDE2KQkJVlNOIFN5c3RlbWVuIEJWCi0JCQkJS2VpemVyc3ZlbGQgODMKLQkJCQlWZW5yYXkgTGltYnVyZyA1ODAzIEFQCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDktMjYgICAoaGV4KQkJWU9EQSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAwOTI2ICAgICAoYmFzZSAxNikJCVlPREEgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkyRiwgTm8uMy0xLCBJbmR1c3RyeSBFYXN0IFJvYWQgSVgsCi0JCQkJSHNpbmNodSBTY2llbmNlIEJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTI3ICAgKGhleCkJCVRPWU9LRUlLSSBDTy4sTFRELgotMDAwOTI3ICAgICAoYmFzZSAxNikJCVRPWU9LRUlLSSBDTy4sTFRELgotCQkJCTE3LTEwLTMsU2hpbW9zaW5qeW8KLQkJCQlIaWdhc2hpeW9kb2dhd2EtS3UKLQkJCQlPc2FrYSAgNTMzLTAwMjEKLQkJCQlKQVBBTgotCi0wMC0wOS0yOCAgIChoZXgpCQlUZWxlY29yZQotMDAwOTI4ICAgICAoYmFzZSAxNikJCVRlbGVjb3JlCi0JCQkJMTgwMCBOb3J0aCBHbGVudmlsbGUKLQkJCQlTdWl0ZSAxMTYKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0yOSAgIChoZXgpCQlTYW55byBJbmR1c3RyaWVzIChVSykgTGltaXRlZAotMDAwOTI5ICAgICAoYmFzZSAxNikJCVNhbnlvIEluZHVzdHJpZXMgKFVLKSBMaW1pdGVkCi0JCQkJU2Nob29sIFJvYWQKLQkJCQlMb3dlc3RvZnQgU3VmZm9sayBOUjMzIDlOQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LTJBICAgKGhleCkJCU1ZVEVDUyBDby4sTHRkLgotMDAwOTJBICAgICAoYmFzZSAxNikJCU1ZVEVDUyBDby4sTHRkLgotCQkJCTEtMTItMzksIFRhaXNoaWRvdQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1NC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMDktMkIgICAoaGV4KQkJaVFzdG9yIE5ldHdvcmtzLCBJbmMuCi0wMDA5MkIgICAgIChiYXNlIDE2KQkJaVFzdG9yIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjAwMSBDb3Jwb3JhdGUgQ2VudGVyIERyaXZlCi0JCQkJTmV3YnVyeSBQYXJrIENBIDkxMzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0yQyAgIChoZXgpCQlIaXRwb2ludCBJbmMuCi0wMDA5MkMgICAgIChiYXNlIDE2KQkJSGl0cG9pbnQgSW5jLgotCQkJCU5vLjcsIEZlbmxpYW8sIDJuZCBJbmR1c3RyaWFsIFBhcmssIExpbmsKLQkJCQlUYWlwZWkgIDI0NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMkQgICAoaGV4KQkJSFRDIENvcnBvcmF0aW9uCi0wMDA5MkQgICAgIChiYXNlIDE2KQkJSFRDIENvcnBvcmF0aW9uCi0JCQkJTm8uMjMgWGluZ2h1YSBSb2FkLAotCQkJCVRhb3l1YW4gQ2l0eSwKLQkJCQlUYW95dWFuIENvdW50eSAgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMkUgICAoaGV4KQkJQiZUZWNoIFN5c3RlbSBJbmMuCi0wMDA5MkUgICAgIChiYXNlIDE2KQkJQiZUZWNoIFN5c3RlbSBJbmMuCi0JCQkJIzYwMSwgU2VvLUp1bmcgQi9ELCA4MzAtMjQsIFlvdWtzYW0tRG9uZwotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktMkYgICAoaGV4KQkJQWtvbSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDA5MkYgICAgIChiYXNlIDE2KQkJQWtvbSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNUYsIE5vLiAzMjMsIFlhbmctR3VhbmcgU3QuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTMwICAgKGhleCkJCUFlcm9Db25jaWVyZ2UgSW5jLgotMDAwOTMwICAgICAoYmFzZSAxNikJCUFlcm9Db25jaWVyZ2UgSW5jLgotCQkJCTEwMjU2IFlvbmdlIFN0LgotCQkJCVJpY2htb25kIEhpbGwgT250LiBMNEMgM0I3Ci0JCQkJQ0FOQURBCi0KLTAwLTA5LTMxICAgKGhleCkJCUZ1dHVyZSBJbnRlcm5ldCwgSW5jLgotMDAwOTMxICAgICAoYmFzZSAxNikJCUZ1dHVyZSBJbnRlcm5ldCwgSW5jLgotCQkJCTExJ3RoIEZsb29yIFNhbWhvbW9vbHNhbiBCbGRnLCBCL0JsZGcsIDIKLQkJCQlZYW5namVhIERvbmcsIFNlb2NobyBLdQotCQkJCVNlb3VsIEt5dW5nLUtpIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktMzIgICAoaGV4KQkJT21uaWx1eAotMDAwOTMyICAgICAoYmFzZSAxNikJCU9tbmlsdXgKLQkJCQkxMzAgVy4gVW5pb24gU3QuCi0JCQkJUGFzYWRlbmEgQ0EgOTExMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTMzICAgKGhleCkJCU9waGl0IENvLkx0ZC4KLTAwMDkzMyAgICAgKGJhc2UgMTYpCQlPcGhpdCBDby5MdGQuCi0JCQkJM0YuIFN1bnRlY2hub3ZpbCwgNS0yNyAgTWFuZ3BvLURvbmcgLAotCQkJCVllb25ndG9uZy1HdSwgU3V3b24tQ2l0eSwgCi0JCQkJS3l1bmdraS1EbyAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0zNCAgIChoZXgpCQlEcmVhbS1NdWx0aW1lZGlhLVR2IEdtYkgKLTAwMDkzNCAgICAgKGJhc2UgMTYpCQlEcmVhbS1NdWx0aW1lZGlhLVR2IEdtYkgKLQkJCQlCcnVlY2tzdHIuIDI5Ci0JCQkJTWVuZGVuIFNhdWVybGFuZCA1ODcwNgotCQkJCUdFUk1BTlkKLQotMDAtMDktMzUgICAoaGV4KQkJU2FuZHZpbmUgSW5jb3Jwb3JhdGVkCi0wMDA5MzUgICAgIChiYXNlIDE2KQkJU2FuZHZpbmUgSW5jb3Jwb3JhdGVkCi0JCQkJMTcwIENvbHVtYmlhIFN0LiBXLgotCQkJCVdhdGVybG9vIE9OIE4yTCAzTDMKLQkJCQlDQU5BREEKLQotMDAtMDktMzYgICAoaGV4KQkJSXBldHJvbmlrIEdtYkggJiBDby5LRwotMDAwOTM2ICAgICAoYmFzZSAxNikJCUlwZXRyb25payBHbWJIICYgQ28uS0cKLQkJCQlKYWVnZXJ3ZWcgMQotCQkJCUJhZGVuLUJhZGVuIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3NjUzMgotCQkJCUdFUk1BTlkKLQotMDAtMDktMzcgICAoaGV4KQkJSW52ZW50ZWMgQXBwbGlhbmNlIENvcnAKLTAwMDkzNyAgICAgKGJhc2UgMTYpCQlJbnZlbnRlYyBBcHBsaWFuY2UgQ29ycAotCQkJCTExMywgV3VndW5nIDEgUkQuLCBXdUt1IEluZHVzdHJpYWwgblBhcmsKLQkJCQlXdUt1IFNoaWFuZywgVGFpcGVpIEhzaWVuIDI0OCwgVGFpd2FuICwKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMzggICAoaGV4KQkJQWxsb3QgQ29tbXVuaWNhdGlvbnMKLTAwMDkzOCAgICAgKGJhc2UgMTYpCQlBbGxvdCBDb21tdW5pY2F0aW9ucwotCQkJCUhhbmFnYXIgMjIgc3QnCi0JCQkJSG9kLUhhc2hhcm9uICA0NTgwMAotCQkJCUlTUkFFTAotCi0wMC0wOS0zOSAgIChoZXgpCQlTaGliYVNva3UgQ28uLEx0ZC4KLTAwMDkzOSAgICAgKGJhc2UgMTYpCQlTaGliYVNva3UgQ28uLEx0ZC4KLQkJCQk2LTggU2hpbmJhc2hpIDQtY2hvbWUKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA1LTAwMDQKLQkJCQlKQVBBTgotCi0wMC0wOS0zQSAgIChoZXgpCQlNb2xleCBGaWJlciBPcHRpY3MKLTAwMDkzQSAgICAgKGJhc2UgMTYpCQlNb2xleCBGaWJlciBPcHRpY3MKLQkJCQk1MjI0IEthdHJpbmUgQXZlbnVlCi0JCQkJRG93bmVycyBHcm92ZSBJTCA2MDUxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktM0IgICAoaGV4KQkJSFlVTkRBSSBORVRXT1JLUyBJTkMuCi0wMDA5M0IgICAgIChiYXNlIDE2KQkJSFlVTkRBSSBORVRXT1JLUyBJTkMuCi0JCQkJU0FOIDEzNi0xICBBTUktUkkgIEJVQkFMX0VVUAotCQkJCUlDSE9OIEtZVU5HS0ktRE8gNDY3LTcwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0zQyAgIChoZXgpCQlKYWNxdWVzIFRlY2hub2xvZ2llcyBQL0wKLTAwMDkzQyAgICAgKGJhc2UgMTYpCQlKYWNxdWVzIFRlY2hub2xvZ2llcyBQL0wKLQkJCQkyNjggTW9udGFndWUgUmQKLQkJCQlXZXN0IEVuZCBRdWVlbnNsYW5kIDQxMDEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDktM0QgICAoaGV4KQkJTmV3aXN5cyxJbmMuCi0wMDA5M0QgICAgIChiYXNlIDE2KQkJTmV3aXN5cyxJbmMuCi0JCQkJNjIwMCBCcmlkZ2Vwb2ludCBQYXJrd2F5Ci0JCQkJQnVpZGluZyBJViwgU3VpdGUgMTAwCi0JCQkJQXVzdGluIFRYIDc4NzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0zRSAgIChoZXgpCQlDJkkgVGVjaG5vbG9naWVzCi0wMDA5M0UgICAgIChiYXNlIDE2KQkJQyZJIFRlY2hub2xvZ2llcwotCQkJCSMzMDMgS3dhbmJvIFBsYXphIEIvRCwgMTQ2Ny0yCi0JCQkJS3dhbnlhbmctRG9uZywgRG9uZ2FuLUt1Ci0JCQkJQW55YW5nLVNoaSBLeXVuZ2dpLURvIDQzMS04MDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktM0YgICAoaGV4KQkJRG91YmxlLVdpbiBFbnRlcnBpcnNlIENPLiwgTFRECi0wMDA5M0YgICAgIChiYXNlIDE2KQkJRG91YmxlLVdpbiBFbnRlcnBpcnNlIENPLiwgTFRECi0JCQkJTk8uMzAwLCBTZWMgMSwgQ2h1bmcgRmVuZyBSZC4KLQkJCQlQaW5nIENoZW4gQ2l0eSBUYW95dWFuIEhzaWVuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktNDAgICAoaGV4KQkJQUdGRU8gR21iSCAmIENvLiBLRwotMDAwOTQwICAgICAoYmFzZSAxNikJCUFHRkVPIEdtYkggJiBDby4gS0cKLQkJCQlQb3N0ZmFjaCAxNDAxMDcKLQkJCQlCaWVsZWZlbGQgUmhpbmUgV2VzdGZhbGlhIDMzNjIxCi0JCQkJR0VSTUFOWQotCi0wMC0wOS00MSAgIChoZXgpCQlBbGxpZWQgVGVsZXNpcyBLLksuCi0wMDA5NDEgICAgIChiYXNlIDE2KQkJQWxsaWVkIFRlbGVzaXMgSy5LLgotCQkJCVRlY2huaWNhbCBDZW50ZXIvTm8uMiBUT0MgQmxkZy4KLQkJCQk3LTIxLTExIE5pc2hpLUdvdGFuZGEKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0wOS00MiAgIChoZXgpCQlXaXJlbGVzcyBUZWNobm9sb2dpZXMsIEluYwotMDAwOTQyICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIFRlY2hub2xvZ2llcywgSW5jCi0JCQkJT2htb3JpIE1pdHN1YmlzaGkgQmxkZy4sIDdGLCBTYW5ub2ggMi1jaG9tZQotCQkJCU9odGEta3UKLQkJCQlUb2t5byAgMTQzLTAwMjMKLQkJCQlKQVBBTgotCi0wMC0wOS00MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA5NDMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA5NDQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00NSAgIChoZXgpCQlQYWxtbWljcm8gQ29tbXVuaWNhdGlvbnMgSW5jCi0wMDA5NDUgICAgIChiYXNlIDE2KQkJUGFsbW1pY3JvIENvbW11bmljYXRpb25zIEluYwotCQkJCTYzMCBBbGRlciBEcgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00NiAgIChoZXgpCQlDbHVzdGVyIExhYnMgR21iSAotMDAwOTQ2ICAgICAoYmFzZSAxNikJCUNsdXN0ZXIgTGFicyBHbWJICi0JCQkJRGF1ZXJ3YWxkd2VnIDEKLQkJCQkxNDA1NSBCZXJsaW4KLQkJCQlCZXJsaW4gQmVybGluIDE0MDU1Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS00NyAgIChoZXgpCQlBenRlaywgSW5jLgotMDAwOTQ3ICAgICAoYmFzZSAxNikJCUF6dGVrLCBJbmMuCi0JCQkJMjMgU3BlY3RydW0gUG9pbnRlICMyMDkKLQkJCQlMYWtlIEZvcmVzdCBDYWxpZm9ybmlhIDkyNjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00OCAgIChoZXgpCQlWaXN0YSBDb250cm9sIFN5c3RlbXMsIENvcnAuCi0wMDA5NDggICAgIChiYXNlIDE2KQkJVmlzdGEgQ29udHJvbCBTeXN0ZW1zLCBDb3JwLgotCQkJCTIwMDEgV2VzdCBNZWxpbmRhIExhbmUKLQkJCQlQaG9lbml4IEFaIDg1MDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00OSAgIChoZXgpCQlHbHlwaCBUZWNobm9sb2dpZXMgSW5jLgotMDAwOTQ5ICAgICAoYmFzZSAxNikJCUdseXBoIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNzM1IFcuIENsaW50b24gU3RyZWV0Ci0JCQkJSXRoYWNhIE5ZIDE0ODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS00QSAgIChoZXgpCQlIb21lbmV0IENvbW11bmljYXRpb25zCi0wMDA5NEEgICAgIChiYXNlIDE2KQkJSG9tZW5ldCBDb21tdW5pY2F0aW9ucwotCQkJCUlubm92YXRpb24gQ2VudHJlCi0JCQkJTmF0aW9uYWwgVGVjaG5vbG9naWNhbCBQYXJrCi0JCQkJTGltZXJpY2sgIAotCQkJCUlSRUxBTkQKLQotMDAtMDktNEIgICAoaGV4KQkJRmlsbEZhY3RvcnkgTlYKLTAwMDk0QiAgICAgKGJhc2UgMTYpCQlGaWxsRmFjdG9yeSBOVgotCQkJCVNjaGFsaWVuaG9ldmVkcmVlZiAyMEIKLQkJCQlCLTI4MDAgTWVjaGVsZW4gIAotCQkJCUJFTEdJVU0KLQotMDAtMDktNEMgICAoaGV4KQkJQ29tbXVuaWNhdGlvbiBXZWF2ZXIgQ28uLEx0ZC4KLTAwMDk0QyAgICAgKGJhc2UgMTYpCQlDb21tdW5pY2F0aW9uIFdlYXZlciBDby4sTHRkLgotCQkJCTF+MyBDT1dFQVZFUiBCL0QgNDQ2LTE5LAotCQkJCVNFT0dZTy1ET05HLCBNQVBPLUdVCi0JCQkJU0VPVUwgIDEyMS04NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNEQgICAoaGV4KQkJQnJhaW50cmVlIENvbW11bmljYXRpb25zIFB0eSBMdGQKLTAwMDk0RCAgICAgKGJhc2UgMTYpCQlCcmFpbnRyZWUgQ29tbXVuaWNhdGlvbnMgUHR5IEx0ZAotCQkJCUxldmVsIDEsIDYgQ29yZGVsaWEgU3QKLQkJCQlTb3V0aCBCcmlzYmFuZSBRTEQgNDEwMQotCQkJCUFVU1RSQUxJQQotCi0wMC0wOS00RSAgIChoZXgpCQlCQVJURUNIIFNZU1RFTVMgSU5URVJOQVRJT05BTCwgSU5DCi0wMDA5NEUgICAgIChiYXNlIDE2KQkJQkFSVEVDSCBTWVNURU1TIElOVEVSTkFUSU9OQUwsIElOQwotCQkJCTI1MSBOYWpvbGVzIFJkIFN1aXRlIEEKLQkJCQlNaWxsZXJzdmlsbGUgTWFyeWxhbmQgMjExMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTRGICAgKGhleCkJCWVsbWVndCBHbWJIICYgQ28uIEtHCi0wMDA5NEYgICAgIChiYXNlIDE2KQkJZWxtZWd0IEdtYkggJiBDby4gS0cKLQkJCQlLb21tdW5pa2F0aW9uc3RlY2huaWsKLQkJCQlWb2VocnVtZXIgU3RyLiAzMAotCQkJCVBlaW5lIE5pZWRlcnNhY2hzZW4gRC0zMTIyOAotCQkJCUdFUk1BTlkKLQotMDAtMDktNTAgICAoaGV4KQkJSW5kZXBlbmRlbnQgU3RvcmFnZSBDb3Jwb3JhdGlvbgotMDAwOTUwICAgICAoYmFzZSAxNikJCUluZGVwZW5kZW50IFN0b3JhZ2UgQ29ycG9yYXRpb24KLQkJCQk2MjczIE1vbmFyY2ggUGFyayBQbGFjZQotCQkJCU5pd290IENvbG9yYWRvIDgwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS01MSAgIChoZXgpCQlBcG9nZWUgSW1hZ2luZyBTeXN0ZW1zCi0wMDA5NTEgICAgIChiYXNlIDE2KQkJQXBvZ2VlIEltYWdpbmcgU3lzdGVtcwotCQkJCTE1MSBTdW5yaXNlIEF2ZW51ZQotCQkJCVN1aXRlIDkwMgotCQkJCVJvc2V2aWxsZSBDQSA5NTY2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNTIgICAoaGV4KQkJQXVlcnN3YWxkIEdtYkggJiBDby4gS0cKLTAwMDk1MiAgICAgKGJhc2UgMTYpCQlBdWVyc3dhbGQgR21iSCAmIENvLiBLRwotCQkJCVZvciBkZW4gR3Jhc2hvZWZlbiAyMgotCQkJCUNyZW1saW5nZW4gTmllZGVyc2FjaHNlbiAzODE2MgotCQkJCUdFUk1BTlkKLQotMDAtMDktNTMgICAoaGV4KQkJTGlua2FnZSBTeXN0ZW0gSW50ZWdyYXRpb24gQ28uTHRkLgotMDAwOTUzICAgICAoYmFzZSAxNikJCUxpbmthZ2UgU3lzdGVtIEludGVncmF0aW9uIENvLkx0ZC4KLQkJCQk0MCBHb25namlhbmZhbmcKLQkJCQlTb3V0aCBaaG9uZ3NoYW4gUm9hZAotCQkJCU5hbmppbmcgSmlhbmdzdSAyMTAwMDYKLQkJCQlDSElOQQotCi0wMC0wOS01NCAgIChoZXgpCQlBTWlUIHNwb2wuIHMuIHIuIG8uCi0wMDA5NTQgICAgIChiYXNlIDE2KQkJQU1pVCBzcG9sLiBzLiByLiBvLgotCQkJCU5hc2tvdmUgMwotCQkJCTE1MCAwMCBQcmFoYSA1IAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTA5LTU1ICAgKGhleCkJCVlvdW5nIEdlbmVyYXRpb24gSW50ZXJuYXRpb25hbCBDb3JwLgotMDAwOTU1ICAgICAoYmFzZSAxNikJCVlvdW5nIEdlbmVyYXRpb24gSW50ZXJuYXRpb25hbCBDb3JwLgotCQkJCTRGLixOby4gMTg4LCBNaW5jaHVhbiBSZC4sIFNoaW5kaWFuIENpdHkKLQkJCQlTaGluZGlhbiAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS01NiAgIChoZXgpCQlOZXR3b3JrIFN5c3RlbXMgR3JvdXAsIEx0ZC4gKE5TRykKLTAwMDk1NiAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIFN5c3RlbXMgR3JvdXAsIEx0ZC4gKE5TRykKLQkJCQkzOSBLaXJwaWNobmF5YSBTdC4sIFN1aXRlIDEzMDIKLQkJCQlNb3Njb3cgIDEwNTE4NwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0wOS01NyAgIChoZXgpCQlTdXBlcmNhbGxlciwgSW5jLgotMDAwOTU3ICAgICAoYmFzZSAxNikJCVN1cGVyY2FsbGVyLCBJbmMuCi0JCQkJMTAxIFNhZ2luYXcgRHJpdmUKLQkJCQlSZWR3b29kIENpdHkgQ0EgOTQwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTU4ICAgKGhleCkJCUlOVEVMTkVUIFMuQS4KLTAwMDk1OCAgICAgKGJhc2UgMTYpCQlJTlRFTE5FVCBTLkEuCi0JCQkJRlJBTkNJU0NPIE9MSVZBTiBCQVlMRSwgNAotCQkJCVpBUkFHT1pBICA1MDAxNQotCQkJCVNQQUlOCi0KLTAwLTA5LTU5ICAgKGhleCkJCVNpdGVjc29mdAotMDAwOTU5ICAgICAoYmFzZSAxNikJCVNpdGVjc29mdAotCQkJCTd0aCBHdWd1IEJELiAxNDUtMTggU2Ftc3VuZy1Eb25nCi0JCQkJS2FuZ05hbS1HdSBTZW91bCBLb3JlYQotCQkJCVNlb3VsIFNlb3VsIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNUEgICAoaGV4KQkJUkFDRVdPT0QgVEVDSE5PTE9HWQotMDAwOTVBICAgICAoYmFzZSAxNikJCVJBQ0VXT09EIFRFQ0hOT0xPR1kKLQkJCQk1Ri0yLE5PLjYsQ0hVTkctSFNJTkcgUkQuLFNFQy4xLFdVLUdVCi0JCQkJVEFJUEVJICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTVCICAgKGhleCkJCU5ldGdlYXIsIEluYy4KLTAwMDk1QiAgICAgKGJhc2UgMTYpCQlOZXRnZWFyLCBJbmMuCi0JCQkJNDUwMCBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNUMgICAoaGV4KQkJUGhpbGlwcyBNZWRpY2FsIFN5c3RlbXMgLSBDYXJkaWFjIGFuZCBNb25pdG9yaW5nIFN5c3RlbXMgKENNCi0wMDA5NUMgICAgIChiYXNlIDE2KQkJUGhpbGlwcyBNZWRpY2FsIFN5c3RlbXMgLSBDYXJkaWFjIGFuZCBNb25pdG9yaW5nIFN5c3RlbXMgKENNCi0JCQkJMzAwMCBNaW51dGVtYW4gUm9hZAotCQkJCUFuZG92ZXIgTWFzc2FjaHVzZXR0cyAwMTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNUQgICAoaGV4KQkJRGlhbG9ndWUgVGVjaG5vbG9neSBDb3JwLgotMDAwOTVEICAgICAoYmFzZSAxNikJCURpYWxvZ3VlIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkxMEYsIE5vLiAxOTYsIFNlYy4gMiwgSnVuZ3NoaW5nIFJkLgotCQkJCVNoaW5kaWFuIENpdHkgVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktNUUgICAoaGV4KQkJTWFzc3RlY2ggR3JvdXAgSW5jLgotMDAwOTVFICAgICAoYmFzZSAxNikJCU1hc3N0ZWNoIEdyb3VwIEluYy4KLQkJCQkyIEVhc3QgQmVhdmVyIENyZWVrIFJkLgotCQkJCUJ1aWxkaW5nIDMKLQkJCQlSaWNobW9uZCBIaWxsIE9udGFyaW8gTDRCIDJOMwotCQkJCUNBTkFEQQotCi0wMC0wOS01RiAgIChoZXgpCQlUZWxlYnl0ZSwgSW5jLgotMDAwOTVGICAgICAoYmFzZSAxNikJCVRlbGVieXRlLCBJbmMuCi0JCQkJMjcwIFB1bGFza2kgUm9hZAotCQkJCUdyZWVubGF3biBOWSAxMTc0MC0xNjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02MCAgIChoZXgpCQlZT1pBTiBJbmMuCi0wMDA5NjAgICAgIChiYXNlIDE2KQkJWU9aQU4gSW5jLgotCQkJCVlPWkFOIEJsZC4sMy01LTE4LCBLaXRhemF3YQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1NS0wMDMxCi0JCQkJSkFQQU4KLQotMDAtMDktNjEgICAoaGV4KQkJU3dpdGNoZ2VhciBhbmQgSW5zdHJ1bWVudGF0aW9uIEx0ZAotMDAwOTYxICAgICAoYmFzZSAxNikJCVN3aXRjaGdlYXIgYW5kIEluc3RydW1lbnRhdGlvbiBMdGQKLQkJCQlSaXBsZXkgUm9hZAotCQkJCUJyYWRmb3JkIFdlc3QgWW9ya3NoaXJlIEJENCA3RUgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wOS02MiAgIChoZXgpCQlTb25pdG9yIFRlY2hub2xvZ2llcyBBUwotMDAwOTYyICAgICAoYmFzZSAxNikJCVNvbml0b3IgVGVjaG5vbG9naWVzIEFTCi0JCQkJRm9yc2tuaW5nc3ZlaWVuIDFCCi0JCQkJUC5PLiBCb3ggMTI0Ci0JCQkJT3NsbyBCbGluZGVybiBOLTAxMzQKLQkJCQlOT1JXQVkKLQotMDAtMDktNjMgICAoaGV4KQkJRG9taW5pb24gTGFzZXJjb20gSW5jLgotMDAwOTYzICAgICAoYmFzZSAxNikJCURvbWluaW9uIExhc2VyY29tIEluYy4KLQkJCQkxNzE2IEJyaWFyY3Jlc3QgRHIuIFN0ZS4gMjEwCi0JCQkJQnJ5YW4gVFggNzc4MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTY0ICAgKGhleCkJCUhpLVRlY2huaXF1ZXMsIEluYy4KLTAwMDk2NCAgICAgKGJhc2UgMTYpCQlIaS1UZWNobmlxdWVzLCBJbmMuCi0JCQkJMjUxNSBGcmF6aWVyIEF2ZS4KLQkJCQlNYWRpc29uIFdJIDUzNzEzLTE1MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTY1ICAgKGhleCkJCUh5dW5KdSBDb21wdXRlciBDby4sIEx0ZC4KLTAwMDk2NSAgICAgKGJhc2UgMTYpCQlIeXVuSnUgQ29tcHV0ZXIgQ28uLCBMdGQuCi0JCQkJMjIyLTIyLCBIeXVuanUgQi9ELCBHdXJvIDMgRG9uZywgR3Vyb2d1Ci0JCQkJU2VvdWwgIDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNjYgICAoaGV4KQkJVGhhbGVzIE5hdmlnYXRpb24KLTAwMDk2NiAgICAgKGJhc2UgMTYpCQlUaGFsZXMgTmF2aWdhdGlvbgotCQkJCTQ3MSBFbCBDYW1pbm8gUmVhbAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02NyAgIChoZXgpCQlUYWNoeW9uLCBJbmMKLTAwMDk2NyAgICAgKGJhc2UgMTYpCQlUYWNoeW9uLCBJbmMKLQkJCQk5MzM5IENhcnJvbGwgUGFyayBEcml2ZQotCQkJCVN1aXRlIDE1MAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNjggICAoaGV4KQkJVEVDSE5PVkVOVFVSRSwgSU5DLgotMDAwOTY4ICAgICAoYmFzZSAxNikJCVRFQ0hOT1ZFTlRVUkUsIElOQy4KLQkJCQlQLiBPLiBCb3ggNTY0MQotCQkJCVBhc2FkZW5hIFRleGFzIDc3NTA4LTU2NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTY5ICAgKGhleCkJCU1lcmV0IE9wdGljYWwgQ29tbXVuaWNhdGlvbnMKLTAwMDk2OSAgICAgKGJhc2UgMTYpCQlNZXJldCBPcHRpY2FsIENvbW11bmljYXRpb25zCi0JCQkJMTAwNzAgTWVzYSBSaW0gUm9hZAotCQkJCVNhbiBEaWVnbyBDYWxpZm9ybmlhIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02QSAgIChoZXgpCQlDbG92ZXJsZWFmIENvbW11bmljYXRpb25zIEluYy4KLTAwMDk2QSAgICAgKGJhc2UgMTYpCQlDbG92ZXJsZWFmIENvbW11bmljYXRpb25zIEluYy4KLQkJCQkyIFdpbGxvdyBTdC4KLQkJCQlTb3V0aGJvcm91Z2ggTUEgMDE3NDUtMTAyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNkIgICAoaGV4KQkJSUJNIENvcnAKLTAwMDk2QiAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNkMgICAoaGV4KQkJSW1lZGlhIFNlbWljb25kdWN0b3IgQ29ycC4KLTAwMDk2QyAgICAgKGJhc2UgMTYpCQlJbWVkaWEgU2VtaWNvbmR1Y3RvciBDb3JwLgotCQkJCTQ5ODggR3JlYXQgQW1lcmljYSBQa3d5LgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02RCAgIChoZXgpCQlQb3dlcm5ldCBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMDk2RCAgICAgKGJhc2UgMTYpCQlQb3dlcm5ldCBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQkzNzEtNTEsIEdhc2FuLURvbmcgS3VtY2hvbi1HdSwKLQkJCQlTZW91bCAgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS02RSAgIChoZXgpCQlHSUFOVCBFTEVDVFJPTklDUyBMVEQuCi0wMDA5NkUgICAgIChiYXNlIDE2KQkJR0lBTlQgRUxFQ1RST05JQ1MgTFRELgotCQkJCTcvRi4sIEVMSVRFIElORFVTVFJJQUwgQlVJTERJTkcsCi0JCQkJMTM1LTEzNyBIT0kgQlVOIFJPQUQsCi0JCQkJS1dVTiBUT05HIEtPV0xPT04gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA5LTZGICAgKGhleCkJCUJlaWppbmcgWmhvbmdxaW5nIEVsZWdhbnQgVGVjaC4gQ29ycC4sTGltaXRlZAotMDAwOTZGICAgICAoYmFzZSAxNikJCUJlaWppbmcgWmhvbmdxaW5nIEVsZWdhbnQgVGVjaC4gQ29ycC4sTGltaXRlZAotCQkJCVJtLjUwOCwgQS1CdWlsZGluZywgU2hhbmdkaSBEaWdpdGFsIFNjaWUKLQkJCQlCZWlqaW5nICAxMDAwODQKLQkJCQlDSElOQQotCi0wMC0wOS03MCAgIChoZXgpCQlWaWJyYXRpb24gUmVzZWFyY2ggQ29ycG9yYXRpb24KLTAwMDk3MCAgICAgKGJhc2UgMTYpCQlWaWJyYXRpb24gUmVzZWFyY2ggQ29ycG9yYXRpb24KLQkJCQkyMzg1IFdpbHNoZXJlIERyaXZlCi0JCQkJU3VpdGUgQQotCQkJCUplbmlzb24gTUkgNDk0MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTcxICAgKGhleCkJCVRpbWUgTWFuYWdlbWVudCwgSW5jLgotMDAwOTcxICAgICAoYmFzZSAxNikJCVRpbWUgTWFuYWdlbWVudCwgSW5jLgotCQkJCTExIExha2UgR2F0bGluIFJvYWQKLQkJCQlPcmxhbmRvIEZsb3JpZGEgMzI4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTcyICAgKGhleCkJCVNlY3VyZWJhc2UsSW5jCi0wMDA5NzIgICAgIChiYXNlIDE2KQkJU2VjdXJlYmFzZSxJbmMKLQkJCQkybmQgRmwsU2V1bmdzZXVuZy1CbGRnLERva29rIDItRG9uZyxLYW5nCi0JCQkJU2VvdWwgIDEzNS04NTQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNzMgICAoaGV4KQkJTGVudGVuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA5NzMgICAgIChiYXNlIDE2KQkJTGVudGVuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTZGLCBOby41MSwgU2VjLjIsIEd1bmd5aSBSb2FkLAotCQkJCVRhaWNodW5nIENpdHkgIDQwOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktNzQgICAoaGV4KQkJSW5ub3BpYSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDk3NCAgICAgKGJhc2UgMTYpCQlJbm5vcGlhIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTVGLiwgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKLQkJCQlIYW55YW5nIFVuaXZlcnNpdHksIDE3IEhhZW5nZGFuZy1Eb25nCi0JCQkJU2VvdWwgIDEzMy03OTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNzUgICAoaGV4KQkJZlNPTkEgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMDk3NSAgICAgKGJhc2UgMTYpCQlmU09OQSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotCQkJCSMxNDAtMTExMjAgSG9yc2VzaG9lIFdheQotCQkJCVJpY2htb25kIEJDIFY3QSA1SDcKLQkJCQlDQU5BREEKLQotMDAtMDktNzYgICAoaGV4KQkJRGF0YXNvZnQgSVNETiBTeXN0ZW1zIEdtYkgKLTAwMDk3NiAgICAgKGJhc2UgMTYpCQlEYXRhc29mdCBJU0ROIFN5c3RlbXMgR21iSAotCQkJCVNjaGlsbGVycGxhdHogMwotCQkJCVN0LiBQb2VsdGVuIExvd2VyIEF1c3RyaWEgMzEwMAotCQkJCUFVU1RSSUEKLQotMDAtMDktNzcgICAoaGV4KQkJQnJ1bm5lciBFbGVrdHJvbmlrIEFHCi0wMDA5NzcgICAgIChiYXNlIDE2KQkJQnJ1bm5lciBFbGVrdHJvbmlrIEFHCi0JCQkJTfxsbGVyd2lzIDEKLQkJCQlIaXR0bmF1IFr8cmljaCA4MzM1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDktNzggICAoaGV4KQkJQUlKSSBTeXN0ZW0gQ28uLCBMdGQuCi0wMDA5NzggICAgIChiYXNlIDE2KQkJQUlKSSBTeXN0ZW0gQ28uLCBMdGQuCi0JCQkJIzIwOCBTYW1oby1QYXJrLVRvd2VyIEJsZGcuIDExMjItMTAsIEluZwotCQkJCVN1d29uIEd5ZW9uZ2dpLWRvIDQ0Mi04MzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktNzkgICAoaGV4KQkJQWR2YW5jZWQgVGVsZXZpc2lvbiBTeXN0ZW1zIENvbW1pdHRlZSwgSW5jLgotMDAwOTc5ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFRlbGV2aXNpb24gU3lzdGVtcyBDb21taXR0ZWUsIEluYy4KLQkJCQkxNzUwIEsgU3RyZWV0IE5XCi0JCQkJU3VpdGUgMTIwMAotCQkJCVdhc2hpbmd0b24gREMgMjAwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTdBICAgKGhleCkJCUxvdWlzIERlc2lnbiBMYWJzLgotMDAwOTdBICAgICAoYmFzZSAxNikJCUxvdWlzIERlc2lnbiBMYWJzLgotCQkJCTJGLE5PIDQsIExhbmUgNDk3LCBDaHVuZy1DaGVuZyBSZC4sSHNpbi0KLQkJCQlIc2luLVRpZW4gVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktN0IgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOTdCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktN0MgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOTdDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEcgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS03RCAgIChoZXgpCQlTZWNXZWxsIE5ldHdvcmtzIE95Ci0wMDA5N0QgICAgIChiYXNlIDE2KQkJU2VjV2VsbCBOZXR3b3JrcyBPeQotCQkJCVAuTy5CT1ggMTc0Ci0JCQkJSORtZWVucHVpc3RvIDIxCi0JCQkJVGFtcGVyZSAgMzMxMDEKLQkJCQlGSU5MQU5ECi0KLTAwLTA5LTdFICAgKGhleCkJCUlNSSBURUNITk9MT0dZIENPLiwgTFRECi0wMDA5N0UgICAgIChiYXNlIDE2KQkJSU1JIFRFQ0hOT0xPR1kgQ08uLCBMVEQKLQkJCQkybmQgZmxvb3IsIEV1biBTZW9rIEJ1aWxkaW5nLCA3MjktMQotCQkJCVllb2tzYW0tZG9uZywKLQkJCQlHYW5nbmFtLWd1IFNlb3VsIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktN0YgICAoaGV4KQkJVnNlY3VyZSAyMDAwIExURC4KLTAwMDk3RiAgICAgKGJhc2UgMTYpCQlWc2VjdXJlIDIwMDAgTFRELgotCQkJCTExIE1vc2hlIExldmkgU3QuCi0JCQkJUmlzaG9uIExlWmlvbiAgNzU2NTgKLQkJCQlJU1JBRUwKLQotMDAtMDktODAgICAoaGV4KQkJUG93ZXIgWmVuaXRoIEluYy4KLTAwMDk4MCAgICAgKGJhc2UgMTYpCQlQb3dlciBaZW5pdGggSW5jLgotCQkJCVRzdWppZG8gTmlzaGlrYWlnYW4gMS0xMC03Ci0JCQkJRnVqaXNhd2EgS2FuYWdhd2EgMjUxLTAwNDYKLQkJCQlKQVBBTgotCi0wMC0wOS04MSAgIChoZXgpCQlOZXdwb3J0IE5ldHdvcmtzCi0wMDA5ODEgICAgIChiYXNlIDE2KQkJTmV3cG9ydCBOZXR3b3JrcwotCQkJCUVudGVycHJpc2UgSG91c2UKLQkJCQlTdGF0aW9uIFJvYWQKLQkJCQlDaGVwc3RvdyBNb25tb3V0aHNoaXJlIE5QMTYgNVBCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDktODIgICAoaGV4KQkJTG9ld2UgT3B0YSBHbWJICi0wMDA5ODIgICAgIChiYXNlIDE2KQkJTG9ld2UgT3B0YSBHbWJICi0JCQkJSW5kdXN0cmllc3RyYXNzZSAxMQotCQkJCUtyb25hY2ggQmF2YXJpYSA5NjMxNwotCQkJCUdFUk1BTlkKLQotMDAtMDktODMgICAoaGV4KQkJR3Zpc2lvbiBJbmNvcnBvcmF0ZWQKLTAwMDk4MyAgICAgKGJhc2UgMTYpCQlHdmlzaW9uIEluY29ycG9yYXRlZAotCQkJCTExRiwgTm8uMTY2LCBDaGllbi1JIFJvYWQKLQkJCQlDaHVuZyBIbyBDaXR5LCBUYWlwZWkgSHNpZW4gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktODQgICAoaGV4KQkJTXlDYXNhIE5ldHdvcmsgSW5jLgotMDAwOTg0ICAgICAoYmFzZSAxNikJCU15Q2FzYSBOZXR3b3JrIEluYy4KLQkJCQkyMDAgU2hlcmlkYW4gQXZlICMxMDMKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTg1ICAgKGhleCkJCUF1dG8gVGVsZWNvbSBDb21wYW55Ci0wMDA5ODUgICAgIChiYXNlIDE2KQkJQXV0byBUZWxlY29tIENvbXBhbnkKLQkJCQkxMEYsIE5vLjMsTGFuZSAxNiwgU2VjLjIsIFNpY2h1YW4gUmQuCi0JCQkJQmFucWlhbyBDaXR5IFRhaXBlaSBDb3VudHkgMjIwNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTg2ICAgKGhleCkJCU1ldGFsaW5rIExURC4KLTAwMDk4NiAgICAgKGJhc2UgMTYpCQlNZXRhbGluayBMVEQuCi0JCQkJWWFrdW0gQnVzaW5lc3MgUGFyawotCQkJCVlha3VtIEhPRiBIQVNIQVJPTiA2MDk3MgotCQkJCUlTUkFFTAotCi0wMC0wOS04NyAgIChoZXgpCQlOSVNISSBOSVBQT04gRUxFQ1RSSUMgV0lSRSAmIENBQkxFIENPLixMVEQuCi0wMDA5ODcgICAgIChiYXNlIDE2KQkJTklTSEkgTklQUE9OIEVMRUNUUklDIFdJUkUgJiBDQUJMRSBDTy4sTFRELgotCQkJCUthc3VnYXVyYQotCQkJCU9pdGEtQ2l0eSBPSVRBIDg3MC04NjMyCi0JCQkJSkFQQU4KLQotMDAtMDktODggICAoaGV4KQkJTnVkaWFuIEVsZWN0cm9uIENvLiwgTHRkLgotMDAwOTg4ICAgICAoYmFzZSAxNikJCU51ZGlhbiBFbGVjdHJvbiBDby4sIEx0ZC4KLQkJCQk3OTctMjggQmFuZ2JhZS1Eb25nLCBTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS04OSAgIChoZXgpCQlWaXZpZExvZ2ljIEluYy4KLTAwMDk4OSAgICAgKGJhc2UgMTYpCQlWaXZpZExvZ2ljIEluYy4KLQkJCQk0MDk5NCBFbmN5Y2xvcGVkaWEgQ2lyY2xlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOEEgICAoaGV4KQkJRXF1YWxMb2dpYyBJbmMKLTAwMDk4QSAgICAgKGJhc2UgMTYpCQlFcXVhbExvZ2ljIEluYwotCQkJCTkgVG93bnNlbmQgV2VzdAotCQkJCU5hc2h1YSBOSCAwMzA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOEIgICAoaGV4KQkJRW50cm9waWMgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDk4QiAgICAgKGJhc2UgMTYpCQlFbnRyb3BpYyBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTkyNzYgU2NyYW50b24gUmQgIzIwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOEMgICAoaGV4KQkJT3B0aW9uIFdpcmVsZXNzIFN3ZWRlbgotMDAwOThDICAgICAoYmFzZSAxNikJCU9wdGlvbiBXaXJlbGVzcyBTd2VkZW4KLQkJCQlTdHVyZWdhdGFuIDIKLQkJCQkxMXRoIGZsLgotCQkJCVN1bmRieWJlcmcgU0UtMTcyIDI0Ci0JCQkJU1dFREVOCi0KLTAwLTA5LThEICAgKGhleCkJCVZlbG9jaXR5IFNlbWljb25kdWN0b3IKLTAwMDk4RCAgICAgKGJhc2UgMTYpCQlWZWxvY2l0eSBTZW1pY29uZHVjdG9yCi0JCQkJU3VpdGUgMzIgV2V5IEhvdXNlCi0JCQkJMTUgQ2h1cmNoIFN0cmVldAotCQkJCVdleWJyaWRnZSBTdXJyZXkgS1QxMyA4TkEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wOS04RSAgIChoZXgpCQlpcGNhcyBHbWJICi0wMDA5OEUgICAgIChiYXNlIDE2KQkJaXBjYXMgR21iSAotCQkJCVdldHRlcmtyZXV6IDE3Ci0JCQkJRXJsYW5nZW4gQmF2YXJpYSA5MTA1OAotCQkJCUdFUk1BTlkKLQotMDAtMDktOEYgICAoaGV4KQkJQ2V0YWNlYW4gTmV0d29ya3MKLTAwMDk4RiAgICAgKGJhc2UgMTYpCQlDZXRhY2VhbiBOZXR3b3JrcwotCQkJCTExMCBDb3Jwb3JhdGUgRHJpdmUKLQkJCQlCdWlsZGluZyAyCi0JCQkJUG9ydHNtb3V0aCBOSCAwMzgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOTAgICAoaGV4KQkJQUNLU1lTIENvbW11bmljYXRpb25zICYgc3lzdGVtcwotMDAwOTkwICAgICAoYmFzZSAxNikJCUFDS1NZUyBDb21tdW5pY2F0aW9ucyAmIHN5c3RlbXMKLQkJCQlaQSBkdSBWYWwgSm95ZXV4Ci0JCQkJMTAgcnVlIGRlcyBFbnRyZXByZW5ldXJzCi0JCQkJVklMTEVQUkVVWCAgRi03ODQ1MAotCQkJCUZSQU5DRQotCi0wMC0wOS05MSAgIChoZXgpCQlHRSBGYW51YyBBdXRvbWF0aW9uIE1hbnVmYWN0dXJpbmcsIEluYy4KLTAwMDk5MSAgICAgKGJhc2UgMTYpCQlHRSBGYW51YyBBdXRvbWF0aW9uIE1hbnVmYWN0dXJpbmcsIEluYy4KLQkJCQlSb3V0ZSA2MDYgJiBSb3V0ZSAyOU4KLQkJCQlQTyBCb3ggODEwNgotCQkJCUNoYXJsb3R0ZXN2aWxsZSBWaXJnaW5pYSAyMjkxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOTIgICAoaGV4KQkJSW50ZXJFcG9jaCBUZWNobm9sb2d5LElOQy4KLTAwMDk5MiAgICAgKGJhc2UgMTYpCQlJbnRlckVwb2NoIFRlY2hub2xvZ3ksSU5DLgotCQkJCTdGLE5vLjMsQWxsZXkgNixMYW5lIDIzNSxQYW8tQ2hpYW8gUmQKLQkJCQlIc2luLVRpZW4gVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktOTMgICAoaGV4KQkJVmlzdGVvbiBDb3Jwb3JhdGlvbgotMDAwOTkzICAgICAoYmFzZSAxNikJCVZpc3Rlb24gQ29ycG9yYXRpb24KLQkJCQkxNjYzMCBTb3V0aGZpZWxkIFJvYWQKLQkJCQlTdC4gNDFFMTAKLQkJCQlBbGxlbiBQYXJrIE1pY2hpZ2FuIDQ4MTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS05NCAgIChoZXgpCQlDcm9ueXggRW5naW5lZXJpbmcKLTAwMDk5NCAgICAgKGJhc2UgMTYpCQlDcm9ueXggRW5naW5lZXJpbmcKLQkJCQlNYXJzaGFsYSBTb2tvbG92c2tvZ28gc3RyLiA0Ci0JCQkJTW9zY293ICAxMjMwNjMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMDktOTUgICAoaGV4KQkJQ2FzdGxlIFRlY2hub2xvZ3kgTHRkCi0wMDA5OTUgICAgIChiYXNlIDE2KQkJQ2FzdGxlIFRlY2hub2xvZ3kgTHRkCi0JCQkJT3JlIFRyYWRpbmcgRXN0YXRlCi0JCQkJV29vZGJyaWRnZSBSb2FkCi0JCQkJRnJhbWxpbmdoYW0gU3VmZm9sayBJUDEzIDlMTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LTk2ICAgKGhleCkJCVJESQotMDAwOTk2ICAgICAoYmFzZSAxNikJCVJESQotCQkJCTIwNDA2IEVhcmwgU3QuCi0JCQkJVG9ycmFuY2UgQ0EgOTA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTk3ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwOTk3ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wOS05OCAgIChoZXgpCQlDYXBpbmZvIENvbXBhbnkgTGltaXRlZAotMDAwOTk4ICAgICAoYmFzZSAxNikJCUNhcGluZm8gQ29tcGFueSBMaW1pdGVkCi0JCQkJN3RoIEZsb29yIEEgQ29ycG9yYXRlIFNxdWFyZSwgTk8uIDM1IEZpbgotCQkJCUJlaWppbmcgIDEwMDAzMgotCQkJCUNISU5BCi0KLTAwLTA5LTk5ICAgKGhleCkJCUNQIEdFT1JHRVMgUkVOQVVMVAotMDAwOTk5ICAgICAoYmFzZSAxNikJCUNQIEdFT1JHRVMgUkVOQVVMVAotCQkJCTM4IFJ1ZSBCb2JieSBTYW5kcwotCQkJCTQ0ODAwIFNhaW50IEhlcmJsYWluIAotCQkJCUZSQU5DRQotCi0wMC0wOS05QSAgIChoZXgpCQlFTE1PIENPTVBBTlksIExJTUlURUQKLTAwMDk5QSAgICAgKGJhc2UgMTYpCQlFTE1PIENPTVBBTlksIExJTUlURUQKLQkJCQk2LTE0LCBNRUlaRU4tQ0hPLCBNSVpVSE8tS1UKLQkJCQlOQUdPWUEgQUlDSEktUHJlZi4gNDY3LTg1NjcKLQkJCQlKQVBBTgotCi0wMC0wOS05QiAgIChoZXgpCQlXZXN0ZXJuIFRlbGVtYXRpYyBJbmMuCi0wMDA5OUIgICAgIChiYXNlIDE2KQkJV2VzdGVybiBUZWxlbWF0aWMgSW5jLgotCQkJCTUgU3RlcmxpbmcKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTlDICAgKGhleCkJCU5hdmFsIFJlc2VhcmNoIExhYm9yYXRvcnkKLTAwMDk5QyAgICAgKGJhc2UgMTYpCQlOYXZhbCBSZXNlYXJjaCBMYWJvcmF0b3J5Ci0JCQkJQ29kZSA1NTkyCi0JCQkJNDU1NSBPdmVybG9vayBBdmVudWUKLQkJCQlXYXNoaW5ndG9uIERDIDIwMzc1LTUwMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTlEICAgKGhleCkJCUhhbGlwbGV4IENvbW11bmljYXRpb25zCi0wMDA5OUQgICAgIChiYXNlIDE2KQkJSGFsaXBsZXggQ29tbXVuaWNhdGlvbnMKLQkJCQlQTyBCb3ggMTQ3Ci0JCQkJTW9vcm9vbGJhcmsgVmljIDMxMzgKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDktOUUgICAoaGV4KQkJVGVzdGVjaCwgSW5jLgotMDAwOTlFICAgICAoYmFzZSAxNikJCVRlc3RlY2gsIEluYy4KLQkJCQlCdW5kYW5nLVRlY2hub3BhcmssIEMtRG9uZywgNzAyLUhvLCAjMTQ1Ci0JCQkJWWF0YXAtRG9uZywgQnVuZGFuZy1HdSwKLQkJCQlTdW5nbmFtLUNpdHkgS3l1bmdraS1EbyA0NjMtMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LTlGICAgKGhleCkJCVZJREVYIElOQy4KLTAwMDk5RiAgICAgKGJhc2UgMTYpCQlWSURFWCBJTkMuCi0JCQkJMTEwNSBORSBDaXJjbGUgQmx2ZAotCQkJCUNvcnZhbGxpcyBPUiA5NzMzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQTAgICAoaGV4KQkJTWljcm90ZWNobm8gQ29ycG9yYXRpb24KLTAwMDlBMCAgICAgKGJhc2UgMTYpCQlNaWNyb3RlY2hubyBDb3Jwb3JhdGlvbgotCQkJCTItMzMtMzYgU2hpbW9vZGFuYWthCi0JCQkJTmFrYWhhcmEta3UKLQkJCQlLYXdhc2FraSBLYW5hZ2F3YSAyMTEtMDA0MQotCQkJCUpBUEFOCi0KLTAwLTA5LUExICAgKGhleCkJCVRlbGV3aXNlIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA5QTEgICAgIChiYXNlIDE2KQkJVGVsZXdpc2UgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyMDUwIFJpbmd3b29kIEF2ZW51ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1BMiAgIChoZXgpCQlJbnRlcmZhY2UgQ28uLCBMdGQuCi0wMDA5QTIgICAgIChiYXNlIDE2KQkJSW50ZXJmYWNlIENvLiwgTHRkLgotCQkJCTItNS0xMi0yMDEgS3lvbmFuY2hvCi0JCQkJTXVzYXNoaW5vLWNpdHkgVG9reW8gMTgwLTAwMjMKLQkJCQlKQVBBTgotCi0wMC0wOS1BMyAgIChoZXgpCQlMZWFkZmx5IFRlY2hvbG9naWVzIENvcnAuIEx0ZC4KLTAwMDlBMyAgICAgKGJhc2UgMTYpCQlMZWFkZmx5IFRlY2hvbG9naWVzIENvcnAuIEx0ZC4KLQkJCQk5RmwsIE5vLjI2MCwgQmFkZSBSZC4sCi0JCQkJMTA0LCBSLk8uQy4KLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktQTQgICAoaGV4KQkJSEFSVEVDIENvcnBvcmF0aW9uCi0wMDA5QTQgICAgIChiYXNlIDE2KQkJSEFSVEVDIENvcnBvcmF0aW9uCi0JCQkJS09VSE9LVUtVIFNISU4tWU9LT0hBTUEKLQkJCQkzLTE5LTUKLQkJCQlZT0tPSEFNQS1TSEkgS0FOQUdBV0EtS0VOIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMDktQTUgICAoaGV4KQkJSEFOU1VORyBFTEVUUk9OSUMgSU5EVVNUUklFUyBERVZFTE9QTUVOVCBDTy4sIExURAotMDAwOUE1ICAgICAoYmFzZSAxNikJCUhBTlNVTkcgRUxFVFJPTklDIElORFVTVFJJRVMgREVWRUxPUE1FTlQgQ08uLCBMVEQKLQkJCQlIRVVOR0pJTiBCTERHIDNGLCAjMjE3LTMgUE9JLURPTkcsIEtBTkdOCi0JCQkJU0VPVUwgIDEzNS05NjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQTYgICAoaGV4KQkJSWduaXMgT3B0aWNzLCBJbmMuCi0wMDA5QTYgICAgIChiYXNlIDE2KQkJSWduaXMgT3B0aWNzLCBJbmMuCi0JCQkJNDgyIFcuIFNhbiBDYXJsb3MKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1BNyAgIChoZXgpCQlCYW5nICYgT2x1ZnNlbiBBL1MKLTAwMDlBNyAgICAgKGJhc2UgMTYpCQlCYW5nICYgT2x1ZnNlbiBBL1MKLQkJCQlQZXRlciBCYW5ncyBWZWogMTUKLQkJCQlTdHJ1ZXIgIDc2MDAKLQkJCQlERU5NQVJLCi0KLTAwLTA5LUE4ICAgKGhleCkJCUVhc3Rtb2RlIFB0ZSBMdGQKLTAwMDlBOCAgICAgKGJhc2UgMTYpCQlFYXN0bW9kZSBQdGUgTHRkCi0JCQkJMzAgTG95YW5nIFdheSAjMDctMDYKLQkJCQlMb3lhbmcgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQk1MDg3NjkKLQkJCQlTSU5HQVBPUkUKLQotMDAtMDktQTkgICAoaGV4KQkJSWthbm9zIENvbW11bmljYXRpb25zCi0wMDA5QTkgICAgIChiYXNlIDE2KQkJSWthbm9zIENvbW11bmljYXRpb25zCi0JCQkJNDc3MDkgRnJlbW9udCBCbHZkCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQUEgICAoaGV4KQkJRGF0YSBDb21tIGZvciBCdXNpbmVzcywgSW5jLgotMDAwOUFBICAgICAoYmFzZSAxNikJCURhdGEgQ29tbSBmb3IgQnVzaW5lc3MsIEluYy4KLQkJCQkyOTQ5IENvdW50eSBSb2FkIDEwMDAgRWFzdAotCQkJCURld2V5IElMIDYxODUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1BQiAgIChoZXgpCQlOZXRjb250cm9sIE95Ci0wMDA5QUIgICAgIChiYXNlIDE2KQkJTmV0Y29udHJvbCBPeQotCQkJCUthcnZhYW1va3VqYSAzCi0JCQkJSGVsc2lua2kgIEZJTiAwMDM4MAotCQkJCUZJTkxBTkQKLQotMDAtMDktQUMgICAoaGV4KQkJTEFOVk9JQ0UKLTAwMDlBQyAgICAgKGJhc2UgMTYpCQlMQU5WT0lDRQotCQkJCTEzNjQtMzkgU2VvY2hvRG9uZywgIzIwMSBKaWh1biBCbGRnCi0JCQkJU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy0wNzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQUQgICAoaGV4KQkJSFlVTkRBSSBTWVNDT01NLCBJTkMuCi0wMDA5QUQgICAgIChiYXNlIDE2KQkJSFlVTkRBSSBTWVNDT01NLCBJTkMuCi0JCQkJU0FOIDEzNi0xLCBBTUktUkksIEJVQkFMLUVVQgotCQkJCUlDSE9OIEtZT1VOR0tJLURPIDQ2Ny03MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQUUgICAoaGV4KQkJT0tBTk8gRUxFQ1RSSUMgQ08uLExURAotMDAwOUFFICAgICAoYmFzZSAxNikJCU9LQU5PIEVMRUNUUklDIENPLixMVEQKLQkJCQkyLTgtMTggS0FOQVlBTUEtQ0hPCi0JCQkJSElHQVNISUtVUlVNRSBUT0tZTyAyMDMtMDAwMwotCQkJCUpBUEFOCi0KLTAwLTA5LUFGICAgKGhleCkJCWUtZ2VuZXJpcwotMDAwOUFGICAgICAoYmFzZSAxNikJCWUtZ2VuZXJpcwotCQkJCTEzIHJ1ZSBkdSBjaGVuZSBnZXJtYWluCi0JCQkJY2Vzc29uIHNldmlnbmUgIDM1NTEwCi0JCQkJRlJBTkNFCi0KLTAwLTA5LUIwICAgKGhleCkJCU9ua3lvIENvcnBvcmF0aW9uCi0wMDA5QjAgICAgIChiYXNlIDE2KQkJT25reW8gQ29ycG9yYXRpb24KLQkJCQkyLTEgTmlzc2hpbi1jaG8KLQkJCQlOZXlhZ2F3YSBPc2FrYSA1NzI4NTQwCi0JCQkJSkFQQU4KLQotMDAtMDktQjEgICAoaGV4KQkJS2FuZW1hdHN1IEVsZWN0cm9uaWNzLCBMdGQuCi0wMDA5QjEgICAgIChiYXNlIDE2KQkJS2FuZW1hdHN1IEVsZWN0cm9uaWNzLCBMdGQuCi0JCQkJMTctNSwgS3lvYmFzaGkgMi1jaG9tZQotCQkJCUNodW8ta3UgVG9reW8gMTA0LTgzMzgKLQkJCQlKQVBBTgotCi0wMC0wOS1CMiAgIChoZXgpCQlMJkYgSW5jLgotMDAwOUIyICAgICAoYmFzZSAxNikJCUwmRiBJbmMuCi0JCQkJNC0yLTkKLQkJCQlUT0tVTUFSVQotCQkJCUlUQUJBU0hJLUtVIFRva3lvIDE3NS0wMDgzCi0JCQkJSkFQQU4KLQotMDAtMDktQjMgICAoaGV4KQkJTUNNIFN5c3RlbXMgTHRkCi0wMDA5QjMgICAgIChiYXNlIDE2KQkJTUNNIFN5c3RlbXMgTHRkCi0JCQkJS29sb21iYW4gOUYKLQkJCQlBbmthcmFuIFNsb3ZlbmlqYSA2MjgwCi0JCQkJU0xPVkVOSUEKLQotMDAtMDktQjQgICAoaGV4KQkJS0lTQU4gVEVMRUNPTSBDTy4sIExURC4KLTAwMDlCNCAgICAgKGJhc2UgMTYpCQlLSVNBTiBURUxFQ09NIENPLiwgTFRELgotCQkJCTlGLCBUZWF3b24gQmxkZy4sIDY1IEJhbmd5aS1Eb25nCi0JCQkJU29uZ3BhLUd1IFNlb3VsIDEzOC04MjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQjUgICAoaGV4KQkJM0ogVGVjaC4gQ28uLCBMdGQuCi0wMDA5QjUgICAgIChiYXNlIDE2KQkJM0ogVGVjaC4gQ28uLCBMdGQuCi0JCQkJMzQyIEZ1c2hpbmcgTi4gUmQuLCAyRiwgVGFpcGVpLCBUYWl3YW4KLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktQjYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOUI2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQjcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOUI3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NDEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQjggICAoaGV4KQkJRW50aXNlIFN5c3RlbXMKLTAwMDlCOCAgICAgKGJhc2UgMTYpCQlFbnRpc2UgU3lzdGVtcwotCQkJCTEwMDk1IEp1ZHkgQXZlbnVlCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1COSAgIChoZXgpCQlBY3Rpb24gSW1hZ2luZyBTb2x1dGlvbnMKLTAwMDlCOSAgICAgKGJhc2UgMTYpCQlBY3Rpb24gSW1hZ2luZyBTb2x1dGlvbnMKLQkJCQlLaW5ncyBIYWxsLCBTdCBJdmVzIEJ1c2luZXNzIFBhcmsKLQkJCQlTdCBJdmVzCi0JCQkJSHVudGluZ2RvbiBDYW1icmlkZ2VzaGlyZSBQRTI3IDRXWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LUJBICAgKGhleCkJCU1BS1UgSW5mb3JtYXRpb25zdGVjaGlrIEdtYkgKLTAwMDlCQSAgICAgKGJhc2UgMTYpCQlNQUtVIEluZm9ybWF0aW9uc3RlY2hpayBHbWJICi0JCQkJR2V3ZXJiZWhvZnN0ci4gNwotCQkJCUVzc2VuIE5SVyA0NTE0NQotCQkJCUdFUk1BTlkKLQotMDAtMDktQkIgICAoaGV4KQkJTWF0aFN0YXIsIEluYy4KLTAwMDlCQiAgICAgKGJhc2UgMTYpCQlNYXRoU3RhciwgSW5jLgotCQkJCTU5MDAgR3JlZW4gT2FrIERyaXZlCi0JCQkJTWlubmVhcG9saXMgTU4gNTUzNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUJDICAgKGhleCkJCURpZ2l0YWwgU2FmZXR5IFRlY2hub2xvZ2llcywgSW5jCi0wMDA5QkMgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBTYWZldHkgVGVjaG5vbG9naWVzLCBJbmMKLQkJCQk1MTEgRGF2aXMgRHIuCi0JCQkJU3VpdGUgMzAwCi0JCQkJTW9ycmlzdmlsbGUgTkMgMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUJEICAgKGhleCkJCUVweWdpIFRlY2hub2xvZ2llcywgTHRkLgotMDAwOUJEICAgICAoYmFzZSAxNikJCUVweWdpIFRlY2hub2xvZ2llcywgTHRkLgotCQkJCTUwNDAgQWRkaXNvbiBDaXJjbGUKLQkJCQlTdWl0ZSAyMjUKLQkJCQlBZGRpc29uIFRleGFzIDc1MDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1CRSAgIChoZXgpCQlNYW1peWEtT1AgQ28uLEx0ZC4KLTAwMDlCRSAgICAgKGJhc2UgMTYpCQlNYW1peWEtT1AgQ28uLEx0ZC4KLQkJCQkzLTIzLTEwLCBOZWdpc2hpIE1pbmFtaS1rdQotCQkJCVNhaXRhbWEtc2hpIFNhaXRhbWEgMzM2LTg1ODEKLQkJCQlKQVBBTgotCi0wMC0wOS1CRiAgIChoZXgpCQlOaW50ZW5kbyBDby4sTHRkLgotMDAwOUJGICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLixMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMDktQzAgICAoaGV4KQkJNldJTkQKLTAwMDlDMCAgICAgKGJhc2UgMTYpCQk2V0lORAotCQkJCTEsIHBsYWNlIENoYXJsZXMgZGUgR2F1bGxlCi0JCQkJTW9udGlnbnktbGUtQnJldG9ubmV1eCAgNzgxODAKLQkJCQlGUkFOQ0UKLQotMDAtMDktQzEgICAoaGV4KQkJUFJPQ0VTLURBVEEgQS9TCi0wMDA5QzEgICAgIChiYXNlIDE2KQkJUFJPQ0VTLURBVEEgQS9TCi0JCQkJTmF2ZXJ2ZWogOAotCQkJCVNpbGtlYm9yZyAgREstODYwMAotCQkJCURFTk1BUksKLQotMDAtMDktQzIgICAoaGV4KQkJT25pdHksIEluYy4KLTAwMDlDMiAgICAgKGJhc2UgMTYpCQlPbml0eSwgSW5jLgotCQkJCTIyMzIgTm9ydGhtb250IFBhcmt3YXkKLQkJCQlEdWx1dGggR0EgMzAwOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUMzICAgKGhleCkJCU5FVEFTCi0wMDA5QzMgICAgIChiYXNlIDE2KQkJTkVUQVMKLQkJCQlBbGVtZGFnIENhZC4gTm8gMTcxCi0JCQkJVU1SQU5JWUUKLQkJCQlJU1RBTkJVTCAgODEyNDQKLQkJCQlUVVJLRVkKLQotMDAtMDktQzQgICAoaGV4KQkJTWVkaWNvcmUgQ28uLCBMdGQKLTAwMDlDNCAgICAgKGJhc2UgMTYpCQlNZWRpY29yZSBDby4sIEx0ZAotCQkJCTcyLTMgNXRoIEZsLiwgTHVuYSBCbGRnLCBDaHVuZ2RhbS1kb25nCi0JCQkJS2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LUM1ICAgKGhleCkJCUtJTkdFTkUgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwOUM1ICAgICAoYmFzZSAxNikJCUtJTkdFTkUgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTdGLCBOby4gMTQ0LCBNaW5jaHVhbiBFLiBSZC4gU2VjLiAzCi0JCQkJVGFpcGVpICAxMDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LUM2ICAgKGhleCkJCVZpc2lvbmljcyBDb3Jwb3JhdGlvbgotMDAwOUM2ICAgICAoYmFzZSAxNikJCVZpc2lvbmljcyBDb3Jwb3JhdGlvbgotCQkJCTU2MDAgUm93bGFuZCBSb2FkCi0JCQkJU3VpdGUgMjA1Ci0JCQkJTWlubmV0b25rYSBNTiA1NTM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQzcgICAoaGV4KQkJTW92aXN0ZWMKLTAwMDlDNyAgICAgKGJhc2UgMTYpCQlNb3Zpc3RlYwotCQkJCTExMC01IE1hcnlvdW5nIC1yaSBTZW9zdS1teXVuCi0JCQkJS3Vuc2FuIENob25idWsgNTczLTk0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1DOCAgIChoZXgpCQlTSU5BR0FXQSBUU1VTSElOIEtFSVNPVSBTRVJWSUNFCi0wMDA5QzggICAgIChiYXNlIDE2KQkJU0lOQUdBV0EgVFNVU0hJTiBLRUlTT1UgU0VSVklDRQotCQkJCTEzLTUgRnVrZSAsIFN1bWl5b3NoaSAsIE9uYWhhbWEKLQkJCQlJd2FraSBDaXR5IEZ1a3VzaGltYSBQcmVmZWN0dXJlIDk3MS04MTI0Ci0JCQkJSkFQQU4KLQotMDAtMDktQzkgICAoaGV4KQkJQmx1ZVdJTkMgQ28uLCBMdGQuCi0wMDA5QzkgICAgIChiYXNlIDE2KQkJQmx1ZVdJTkMgQ28uLCBMdGQuCi0JCQkJNDAxIEtvcmVhIERlc2lnbiBDZW50ZXIKLQkJCQkzNDQtMSBZYXRhcDEtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtIENpdHkgS3lvbmdnaeKAk2RvIDQ2My04MjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQ0EgICAoaGV4KQkJaU1heE5ldHdvcmtzKFNoZW56aGVuKUxpbWl0ZWQuCi0wMDA5Q0EgICAgIChiYXNlIDE2KQkJaU1heE5ldHdvcmtzKFNoZW56aGVuKUxpbWl0ZWQuCi0JCQkJNC9CLFNvdXRoIEJsZGcgb2YgMjl0aCxTb3V0aCBEaXN0cmljdCBvZgotCQkJCVNoZW56aGVuIEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrLCBTaGVubmEKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMDktQ0IgICAoaGV4KQkJSEJyYWluCi0wMDA5Q0IgICAgIChiYXNlIDE2KQkJSEJyYWluCi0JCQkJIzcwNSBLd2FuZ2xpbSBCbGRnIDE3OSBLdW1pRG9uZwotCQkJCUJ1bmRhbmcgR3UKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaURvIDQ2My04MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQ0MgICAoaGV4KQkJTW9vZyBHbWJICi0wMDA5Q0MgICAgIChiYXNlIDE2KQkJTW9vZyBHbWJICi0JCQkJSGFubnMtS2xlbW0tU3RyLiAyOAotCQkJCUJvZWJsaW5nZW4gIEQtNzEwMzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTA5LUNEICAgKGhleCkJCUhVRFNPTiBTT0ZUIENPLixMVEQuCi0wMDA5Q0QgICAgIChiYXNlIDE2KQkJSFVEU09OIFNPRlQgQ08uLExURC4KLQkJCQlDNjIsR2VpanV0c3Utbm8tbW9yaQotCQkJCTMtY2hvbWUsTWluYW1pLWt1Ci0JCQkJU2FwcG9ybyBIb2trYWlkbyAwMDUtMDg2NAotCQkJCUpBUEFOCi0KLTAwLTA5LUNFICAgKGhleCkJCVNwYWNlQnJpZGdlIFNlbWljb25kdWN0b3IgQ29ycC4KLTAwMDlDRSAgICAgKGJhc2UgMTYpCQlTcGFjZUJyaWRnZSBTZW1pY29uZHVjdG9yIENvcnAuCi0JCQkJMTE1IHJ1ZSBDaGFtcGxhaW4KLQkJCQlIdWxsIFF1ZWJlYyBKOFgzUjEKLQkJCQlDQU5BREEKLQotMDAtMDktQ0YgICAoaGV4KQkJaUFkIEdtYkgKLTAwMDlDRiAgICAgKGJhc2UgMTYpCQlpQWQgR21iSAotCQkJCVVudGVyc2NobGF1ZXJzYmFjaGVyIEhhdXB0c3RyYXNzZSAxMAotCQkJCUdyb3NzaGFiZXJzZG9yZiBCYXZhcmlhIDkwNjEzCi0JCQkJR0VSTUFOWQotCi0wMC0wOS1EMCAgIChoZXgpCQlTb2xhY29tIFRlY2hub2xvZ2llcyBJbmMuCi0wMDA5RDAgICAgIChiYXNlIDE2KQkJU29sYWNvbSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTgwIEplYW4tUHJvdWx4Ci0JCQkJR2F0aW5lYXUgUXVlYmVjIEo4WiAxVzEKLQkJCQlDQU5BREEKLQotMDAtMDktRDEgICAoaGV4KQkJU0VSQU5PQSBORVRXT1JLUyBJTkMKLTAwMDlEMSAgICAgKGJhc2UgMTYpCQlTRVJBTk9BIE5FVFdPUktTIElOQwotCQkJCUNPTkNPUkQgT0ZGSUNFIENFTlRFUgotCQkJCTIzNTIgTUFJTiBTVAotCQkJCUNPTkNPUkQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUQyICAgKGhleCkJCU1haSBMb2dpYyBJbmMuCi0wMDA5RDIgICAgIChiYXNlIDE2KQkJTWFpIExvZ2ljIEluYy4KLQkJCQk0NzY5NyBXZXN0aW5naG91c2UgRHIuLCBTdWl0ZSAyMDAKLQkJCQlGcmVtb250IENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1EMyAgIChoZXgpCQlXZXN0ZXJuIERhdGFDb20gQ28uLCBJbmMuCi0wMDA5RDMgICAgIChiYXNlIDE2KQkJV2VzdGVybiBEYXRhQ29tIENvLiwgSW5jLgotCQkJCTkyNS1EIEJhc3NldHQgUmQuCi0JCQkJV2VzdGxha2UgT0ggNDQxNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUQ0ICAgKGhleCkJCVRyYW5zdGVjaCBOZXR3b3JrcwotMDAwOUQ0ICAgICAoYmFzZSAxNikJCVRyYW5zdGVjaCBOZXR3b3JrcwotCQkJCTEwMCBXb29kIEF2ZW51ZQotCQkJCVN1aXRlIDIwNAotCQkJCUlzZWxpbiBOSiAwODgzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktRDUgICAoaGV4KQkJU2lnbmFsIENvbW11bmljYXRpb24sIEluYy4KLTAwMDlENSAgICAgKGJhc2UgMTYpCQlTaWduYWwgQ29tbXVuaWNhdGlvbiwgSW5jLgotCQkJCTEwMCBXb29kIEF2ZSBTb3V0aAotCQkJCVN1aXRlIDEwMwotCQkJCUlzZWxpbiBOSiAwODgzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktRDYgICAoaGV4KQkJS05DIE9uZSBHbWJICi0wMDA5RDYgICAgIChiYXNlIDE2KQkJS05DIE9uZSBHbWJICi0JCQkJSG9oZSBXZWxsZSAxMCBCCi0JCQkJRXZlc3NlbiBOaWVkZXJzYWNoc2VuIDM4MTczCi0JCQkJR0VSTUFOWQotCi0wMC0wOS1ENyAgIChoZXgpCQlEQyBTZWN1cml0eSBQcm9kdWN0cwotMDAwOUQ3ICAgICAoYmFzZSAxNikJCURDIFNlY3VyaXR5IFByb2R1Y3RzCi0JCQkJT25lIExpbmRzYXkgQ2lyY2xlCi0JCQkJU2FuIEZyYW5jaXNjbyBDYWxpZm9ybmlhIDk0MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1EOCAgIChoZXgpCQlG5Gx0IENvbW11bmljYXRpb25zIEFCCi0wMDA5RDggICAgIChiYXNlIDE2KQkJRuRsdCBDb21tdW5pY2F0aW9ucyBBQgotCQkJCUt5bGdy5G5kIDZBCi0JCQkJU0UgOTA2IDIwIFVtZeUgCi0JCQkJU1dFREVOCi0KLTAwLTA5LUQ5ICAgKGhleCkJCU5lb3NjYWxlIFN5c3RlbXMsIEluYwotMDAwOUQ5ICAgICAoYmFzZSAxNikJCU5lb3NjYWxlIFN5c3RlbXMsIEluYwotCQkJCTE1MDAgTWMgQ2FuZGxlc3MgRHJpdmUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktREEgICAoaGV4KQkJQ29udHJvbCBNb2R1bGUgSW5jLgotMDAwOURBICAgICAoYmFzZSAxNikJCUNvbnRyb2wgTW9kdWxlIEluYy4KLQkJCQkyMjcgQnJhaW5hcmQgUm9hZAotCQkJCUVuZmllbGQgQ1QgMDYwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LURCICAgKGhleCkJCWVTcGFjZQotMDAwOURCICAgICAoYmFzZSAxNikJCWVTcGFjZQotCQkJCTk2MjMgU2ltc2J1cnkgQ3QuCi0JCQkJVHdpbnNidXJnIE9IIDQ0MDg3LTMyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LURDICAgKGhleCkJCUdhbGF4aXMgVGVjaG5vbG9neSBBRwotMDAwOURDICAgICAoYmFzZSAxNikJCUdhbGF4aXMgVGVjaG5vbG9neSBBRwotCQkJCVN0ZWlubWV0enN0cmFzc2UgNwotCQkJCVAuTy4gQm94IDMzNjQKLQkJCQlM/GJlY2sgU2NobGVzd2lnLUhvbHN0ZWluIDIzNTU2Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS1ERCAgIChoZXgpCQlNYXZpbiBUZWNobm9sb2d5IEluYy4KLTAwMDlERCAgICAgKGJhc2UgMTYpCQlNYXZpbiBUZWNobm9sb2d5IEluYy4KLQkJCQlSb29tIDMwNSwgQmxkZy4gNTIgTm8uIDE5NS0yOAotCQkJCVNlYy4gNCBDaHVuZy1Ic2luZyBSZC4KLQkJCQlDaHV0dW5nLCBIc2luY2h1ICAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LURFICAgKGhleCkJCVNhbWppbiBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDAwOURFICAgICAoYmFzZSAxNikJCVNhbWppbiBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCU1hamFuZ015dW4gRHVrUHl1bmdSaSAyMzUtMgotCQkJCUljaG9uIEt5b25nR2kgNDY3LTgxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1ERiAgIChoZXgpCQlWZXN0ZWwgS29tdW5pa2FzeW9uIFNhbmF5aSB2ZSBUaWNhcmV0IEEuUy4KLTAwMDlERiAgICAgKGJhc2UgMTYpCQlWZXN0ZWwgS29tdW5pa2FzeW9uIFNhbmF5aSB2ZSBUaWNhcmV0IEEuUy4KLQkJCQlFZ2UgU2VyYmVzdCBCb2xnZXNpIE5vOjE0NC8xCi0JCQkJR2F6aWVtaXIKLQkJCQlJem1pciAtIDM1NDEwCi0JCQkJVFVSS0VZCi0KLTAwLTA5LUUwICAgKGhleCkJCVhFTUlDUyBTLkEuCi0wMDA5RTAgICAgIChiYXNlIDE2KQkJWEVNSUNTIFMuQS4KLQkJCQlSdWUgZGUgbGEgTWFsYWRpZXJlIDcxCi0JCQkJQ0gtMjAwNyBOZXVjaGF0ZWwgTmV1Y2hhdGVsIDIwMDcKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wOS1FMSAgIChoZXgpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDlFMSAgICAgKGJhc2UgMTYpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4xIEplbiBBaSBSb2FkCi0JCQkJSHVrb3UgSHNpbmNodSAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LUUyICAgKGhleCkJCVNpbmJvbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMDlFMiAgICAgKGJhc2UgMTYpCQlTaW5ib24gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJNEYtMTMsIE5vLiA3OSwgU2VjIDEsIEhzaW4gVGFpIFd1IFJkLgotCQkJCUhzaS1DaGloLCBUYWlwZWkgIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktRTMgICAoaGV4KQkJQW5nZWwgSWdsZXNpYXMgUy5BLgotMDAwOUUzICAgICAoYmFzZSAxNikJCUFuZ2VsIElnbGVzaWFzIFMuQS4KLQkJCQlQb2ztZ29ubyAyNyBNYXJ0dXRlbmUKLQkJCQlTYW4gU2ViYXN0aeFuIEd1aXD6emNvYSAyMDAxNAotCQkJCVNQQUlOCi0KLTAwLTA5LUU0ICAgKGhleCkJCUsgVGVjaCBJbmZvc3lzdGVtIEluYy4KLTAwMDlFNCAgICAgKGJhc2UgMTYpCQlLIFRlY2ggSW5mb3N5c3RlbSBJbmMuCi0JCQkJQi00MDUsIEJ1bmRhbmcgVGVjaG5vLVBhcmsgMTQ4LCBZYXRhcC1kbwotCQkJCVNlb25nbmFtIEt5b25nZ2ktRG8gNDY0LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1FNSAgIChoZXgpCQlIb3R0aW5nZXIgQmFsZHdpbiBNZXNzdGVjaG5payBHbWJICi0wMDA5RTUgICAgIChiYXNlIDE2KQkJSG90dGluZ2VyIEJhbGR3aW4gTWVzc3RlY2huaWsgR21iSAotCQkJCUltIFRpZWZlbiBTZWUgNDUKLQkJCQlEYXJtc3RhZHQgSGVzc2VuIDY0MjkzCi0JCQkJR0VSTUFOWQotCi0wMC0wOS1FNiAgIChoZXgpCQlDeWJlciBTd2l0Y2hpbmcgSW5jLgotMDAwOUU2ICAgICAoYmFzZSAxNikJCUN5YmVyIFN3aXRjaGluZyBJbmMuCi0JCQkJMTgwMCBEZSBMYSBDcnV6IEJsdmQuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUU3ICAgKGhleCkJCUFEQyBUZWNob25vbG9neQotMDAwOUU3ICAgICAoYmFzZSAxNikJCUFEQyBUZWNob25vbG9neQotCQkJCVNha2FlIE1lbWJlcnMgT2ZmaWNlIEJsZC4gNC0xNi04LCBTYWthZSwKLQkJCQlOYWdveWEgQWljaGkgNDYwMDAwOAotCQkJCUpBUEFOCi0KLTAwLTA5LUU4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDlFOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUU5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDlFOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUVBICAgKGhleCkJCVlFTSBJbmMuCi0wMDA5RUEgICAgIChiYXNlIDE2KQkJWUVNIEluYy4KLQkJCQkxLTMtMzMKLQkJCQlPa2F0YQotCQkJCUF0c3VnaS1zaGkgS2FuYWdhd2EgMjQzLTAwMjEKLQkJCQlKQVBBTgotCi0wMC0wOS1FQiAgIChoZXgpCQlIdU1BTkRBVEEgTFRELgotMDAwOUVCICAgICAoYmFzZSAxNikJCUh1TUFOREFUQSBMVEQuCi0JCQkJMS0yLTUxCi0JCQkJTmFrYWhvenVtaQotCQkJCUliYXJha2kgT3Nha2EgNTY3LTAwMzQKLQkJCQlKQVBBTgotCi0wMC0wOS1FQyAgIChoZXgpCQlEYWt0cm9uaWNzLCBJbmMuCi0wMDA5RUMgICAgIChiYXNlIDE2KQkJRGFrdHJvbmljcywgSW5jLgotCQkJCTMxNSAzMm5kIEF2ZQotCQkJCUJ1aWxkaW5nICMyCi0JCQkJQnJvb2tpbmdzIFNEIDU3MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1FRCAgIChoZXgpCQlDaXBoZXJPcHRpY3MKLTAwMDlFRCAgICAgKGJhc2UgMTYpCQlDaXBoZXJPcHRpY3MKLQkJCQk3MDEgQ29ycG9yYXRlIENlbnRlciBEcml2ZQotCQkJCVN1aXRlIDE1MAotCQkJCVJhbGVpZ2ggTm9ydGggQ2Fyb2xpbmEgMjc2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUVFICAgKGhleCkJCU1FSUtZTyBFTEVDVFJJQyBDTy4sTFRECi0wMDA5RUUgICAgIChiYXNlIDE2KQkJTUVJS1lPIEVMRUNUUklDIENPLixMVEQKLQkJCQk0LTI3LTIgSGlnYXNoaW9ndQotCQkJCUFyYWthd2Eta3UgVG9reW8gMTE2LTAwMTIKLQkJCQlKQVBBTgotCi0wMC0wOS1FRiAgIChoZXgpCQlWb2NlcmEgQ29tbXVuaWNhdGlvbnMKLTAwMDlFRiAgICAgKGJhc2UgMTYpCQlWb2NlcmEgQ29tbXVuaWNhdGlvbnMKLQkJCQk1MjUgUmFjZSBTdC4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1GMCAgIChoZXgpCQlTaGltaXp1IFRlY2hub2xvZ3kgSW5jLgotMDAwOUYwICAgICAoYmFzZSAxNikJCVNoaW1penUgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTUtNiwgTm8uMTA3LCBDaHVuZyBTaGFuIFJkLiwgU2VjLjEKLQkJCQlIc2luIENodWFuLCBUYWlwZWkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS1GMSAgIChoZXgpCQlZYW1ha2kgRWxlY3RyaWMgQ29ycG9yYXRpb24KLTAwMDlGMSAgICAgKGJhc2UgMTYpCQlZYW1ha2kgRWxlY3RyaWMgQ29ycG9yYXRpb24KLQkJCQkzLTctMjIgU2hpbW9tZWd1cm8KLQkJCQlNZWd1cm8ta3UgVG9reW8gMTUzLTAwNjQKLQkJCQlKQVBBTgotCi0wMC0wOS1GMiAgIChoZXgpCQlDb2h1LCBJbmMuLCBFbGVjdHJvbmljcyBEaXZpc2lvbgotMDAwOUYyICAgICAoYmFzZSAxNikJCUNvaHUsIEluYy4sIEVsZWN0cm9uaWNzIERpdmlzaW9uCi0JCQkJMzkxMiBDYWxsZSBGb3J0dW5hZGEKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUYzICAgKGhleCkJCVdFTEwgQ29tbXVuaWNhdGlvbiBDb3JwLgotMDAwOUYzICAgICAoYmFzZSAxNikJCVdFTEwgQ29tbXVuaWNhdGlvbiBDb3JwLgotCQkJCTExRiwgTm8uNzc4LCBDaHVuZyBDaGVuZyBSZC4sIENodW5nIEhvIEMKLQkJCQlDaHVuZyBIbyAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS1GNCAgIChoZXgpCQlBbGNvbiBMYWJvcmF0b3JpZXMsIEluYy4KLTAwMDlGNCAgICAgKGJhc2UgMTYpCQlBbGNvbiBMYWJvcmF0b3JpZXMsIEluYy4KLQkJCQk2MjAxIFNvdXRoIEZyZWV3YXkKLQkJCQlGb3J0IFdvcnRoIFR4IDc2MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1GNSAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgQ28uLEx0ZAotMDAwOUY1ICAgICAoYmFzZSAxNikJCUVtZXJzb24gTmV0d29yayBQb3dlciBDby4sTHRkCi0JCQkJMS9GLDMvRiBFbGVjdHJpYyBCdWlsZGluZyBIdWF3ZWkgQmFzZSxCYQotCQkJCUxvbmdnYW5nLFNoZW56aGVuIE11bmljaXBhbGl0eSxQZW9wbGWhr3MKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDI5Ci0JCQkJQ0hJTkEKLQotMDAtMDktRjYgICAoaGV4KQkJU2hlbnpoZW4gRWFzdGVybiBEaWdpdGFsIFRlY2ggTHRkLgotMDAwOUY2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEVhc3Rlcm4gRGlnaXRhbCBUZWNoIEx0ZC4KLQkJCQlTaGVuemhlbiBGdXRpYW4gQ2hlZ29uZ21pYW8gVGFpcmFuCi0JCQkJVGVjaG5vbG9neSBQYXJrIDIxMCAtIDNDCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0OAotCQkJCUNISU5BCi0KLTAwLTA5LUY3ICAgKGhleCkJCVNFRCwgYSBkaXZpc2lvbiBvZiBDYWxpYW4KLTAwMDlGNyAgICAgKGJhc2UgMTYpCQlTRUQsIGEgZGl2aXNpb24gb2YgQ2FsaWFuCi0JCQkJMTggSW5ubm92YXRpb24gQm91bGV2YXJkCi0JCQkJUC5PLiBCb3ggMTQ2NAotCQkJCVNhc2thdG9vbiBTYXNrYXRjaGV3YW4gKFNLKSBTN0sgM1A3Ci0JCQkJQ0FOQURBCi0KLTAwLTA5LUY4ICAgKGhleCkJCVVOSU1PIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDA5RjggICAgIChiYXNlIDE2KQkJVU5JTU8gVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQlCQU5HQkFFIERPTkcgNDc5LTEyCi0JCQkJU0VPQ0hPLUdVLAotCQkJCVNFT1VMICAxMzctODIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LUY5ICAgKGhleCkJCUFSVCBKQVBBTiBDTy4sIExURC4KLTAwMDlGOSAgICAgKGJhc2UgMTYpCQlBUlQgSkFQQU4gQ08uLCBMVEQuCi0JCQkJMzIyLTcsIEljaGlub3RzdWJvLAotCQkJCU5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjExLTAwMTYKLQkJCQlKQVBBTgotCi0wMC0wOS1GQiAgIChoZXgpCQlQaGlsaXBzIFBhdGllbnQgTW9uaXRvcmluZwotMDAwOUZCICAgICAoYmFzZSAxNikJCVBoaWxpcHMgUGF0aWVudCBNb25pdG9yaW5nCi0JCQkJSGV3bGV0dC1QYWNrYXJkLVN0ci4yCi0JCQkJQm9lYmxpbmdlbiAgNzEwMzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTA5LUZDICAgKGhleCkJCUlQRkxFWCBJbmMuCi0wMDA5RkMgICAgIChiYXNlIDE2KQkJSVBGTEVYIEluYy4KLQkJCQlNb3dhLUJsZGcgM0YsIDEtMTYtNgotCQkJCUViaXN1LW5pc2hpCi0JCQkJU2hpYnV5YS1rdSBUb2t5byAxNTAtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTA5LUZEICAgKGhleCkJCVViaW5ldGljcyBMaW1pdGVkCi0wMDA5RkQgICAgIChiYXNlIDE2KQkJVWJpbmV0aWNzIExpbWl0ZWQKLQkJCQlDYW1icmlkZ2UgVGVjaG5vbG9neSBDZW50cmUKLQkJCQlNZWxib3VybiBIZXJ0Zm9yZHNoaXJlIFNHOCA2RFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wOS1GRSAgIChoZXgpCQlEYWlzeSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDlGRSAgICAgKGJhc2UgMTYpCQlEYWlzeSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMjA5IE9yYW5nZSBTdHJlZXQKLQkJCQlDb3VudHkgb2YgTmV3IENhc3RsZQotCQkJCUNpdHkgb2YgV2lsbWluZ3RvbiBERSAxOTgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktRkYgICAoaGV4KQkJWC5uZXQgMjAwMCBHbWJICi0wMDA5RkYgICAgIChiYXNlIDE2KQkJWC5uZXQgMjAwMCBHbWJICi0JCQkJS29lbmlnc2JlcmdlciBTdHIuIDJjCi0JCQkJUmVpbmhlaW0gIDY0MzU0Ci0JCQkJR0VSTUFOWQotCi0wMC0wQS0wMCAgIChoZXgpCQlNZWRpYXRlayBDb3JwLgotMDAwQTAwICAgICAoYmFzZSAxNikJCU1lZGlhdGVrIENvcnAuCi0JCQkJOEYsIE5vIDY5LTUsIFNlYy4yLCBDaHVuZyBDaGVuZyBFYXN0IFJkLgotCQkJCVRhaXBlaSAgMjUxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS0wMSAgIChoZXgpCQlTT0hPd2FyZSwgSW5jLgotMDAwQTAxICAgICAoYmFzZSAxNikJCVNPSE93YXJlLCBJbmMuCi0JCQkJMzA1MCBDb3JvbmFkbyBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0wMiAgIChoZXgpCQlBTk5TTyBDTy4sIExURC4KLTAwMEEwMiAgICAgKGJhc2UgMTYpCQlBTk5TTyBDTy4sIExURC4KLQkJCQk1RiwgTm8uIDEwMCwgTWluLUNodWFuIFJvYWQsIFNoaW5nLVRpZW4KLQkJCQlTaGluZy1UaWVuIENpdHkgVGFpcGVpIEhzaWVuIFRhaXdhbiAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTAzICAgKGhleCkJCUVOREVTQSBTRVJWSUNJT1MsIFMuTC4KLTAwMEEwMyAgICAgKGJhc2UgMTYpCQlFTkRFU0EgU0VSVklDSU9TLCBTLkwuCi0JCQkJQVZHREEgUEFSQUwuTEVMLCA1MQotCQkJCUJBUkNFTE9OQSAgMDgwMDQKLQkJCQlTUEFJTgotCi0wMC0wQS0wNCAgIChoZXgpCQkzQ29tIEx0ZAotMDAwQTA0ICAgICAoYmFzZSAxNikJCTNDb20gTHRkCi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS0wNSAgIChoZXgpCQlXaWRheCBDb3JwLgotMDAwQTA1ICAgICAoYmFzZSAxNikJCVdpZGF4IENvcnAuCi0JCQkJMjY5IFN0ZXZlbnMgU3RyZWV0Ci0JCQkJSHlhbm5pcyBNQSAwMjY2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMDYgICAoaGV4KQkJVGVsZWRleCBMTEMKLTAwMEEwNiAgICAgKGJhc2UgMTYpCQlUZWxlZGV4IExMQwotCQkJCTYzMTEgU2FuIElnbmFjaW8gQXZlbnVlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTA3ICAgKGhleCkJCVdlYldheU9uZSBMdGQKLTAwMEEwNyAgICAgKGJhc2UgMTYpCQlXZWJXYXlPbmUgTHRkCi0JCQkJMTEgS2luZ2Zpc2hlciBDb3VydCwKLQkJCQlIYW1icmlkZ2UgUm9hZAotCQkJCU5ld2J1cnkgQmVya3NoaXJlIFJHMTQgNVNKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtMDggICAoaGV4KQkJQUxQSU5FIEVMRUNUUk9OSUNTLCBJTkMuCi0wMDBBMDggICAgIChiYXNlIDE2KQkJQUxQSU5FIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJMjAtMSBZb3NoaW1hLUtvZ3lvZGFuY2hpCi0JCQkJaXdha2ktY2l0eSBGdWt1c2hpbWEgOTcwLTExOTIKLQkJCQlKQVBBTgotCi0wMC0wQS0wOSAgIChoZXgpCQlUYXJhQ29tIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4KLTAwMEEwOSAgICAgKGJhc2UgMTYpCQlUYXJhQ29tIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4KLQkJCQk4MzAgU3Rld2FydCBEci4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTBBICAgKGhleCkJCVNVTklYIENvLiwgTHRkLgotMDAwQTBBICAgICAoYmFzZSAxNikJCVNVTklYIENvLiwgTHRkLgotCQkJCTNGbC4sIE5vLiA3NiwgQmF1Z2F1IFJkLiwKLQkJCQlTaGluZGlhbiBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS0wQiAgIChoZXgpCQlTZWFsZXZlbCBTeXN0ZW1zLCBJbmMuCi0wMDBBMEIgICAgIChiYXNlIDE2KQkJU2VhbGV2ZWwgU3lzdGVtcywgSW5jLgotCQkJCTE1NSBUZWNobm9sb2d5IFBsYWNlCi0JCQkJTGliZXJ0eSBTQyAyOTY1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMEMgICAoaGV4KQkJU2NpZW50aWZpYyBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotMDAwQTBDICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgUmVzZWFyY2ggQ29ycG9yYXRpb24KLQkJCQkyMzAwIFdpbmR5IFJpZGdlIFBhcmt3YXkKLQkJCQlTdWl0ZSA0MDAgU291dGgKLQkJCQlBdGxhbnRhIEdBIDMwMzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0wRCAgIChoZXgpCQlGQ0kgRGV1dHNjaGxhbmQgR21iSAotMDAwQTBEICAgICAoYmFzZSAxNikJCUZDSSBEZXV0c2NobGFuZCBHbWJICi0JCQkJV2VybmVyd2Vya2RhbW0gMTYsCi0JCQkJQmVybGluICAxMzYyOSAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLTBFICAgKGhleCkJCUludml2byBSZXNlYXJjaCBJbmMuCi0wMDBBMEUgICAgIChiYXNlIDE2KQkJSW52aXZvIFJlc2VhcmNoIEluYy4KLQkJCQkxMjYwMSBSZXNlYXJjaCBQYXJrd2F5Ci0JCQkJT3JsYW5kbyBGbG9yaWRhIDMyODI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0wRiAgIChoZXgpCQlJbHJ5dW5nIFRlbGVzeXMsIEluYwotMDAwQTBGICAgICAoYmFzZSAxNikJCUlscnl1bmcgVGVsZXN5cywgSW5jCi0JCQkJSWxyeXVuZyBibGRnLCAzNC0yLCBDaGVvbmhvLWRvbmcKLQkJCQlHYW5nZG9uZy1ndQotCQkJCVNFT1VMICAxMzQtODYxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTEwICAgKGhleCkJCUZBU1QgbWVkaWEgaW50ZWdyYXRpb25zIEFHCi0wMDBBMTAgICAgIChiYXNlIDE2KQkJRkFTVCBtZWRpYSBpbnRlZ3JhdGlvbnMgQUcKLQkJCQlTY2j2bmdydW5kIDI2Ci0JCQkJUm90a3JldXogQ2FudG9uIG9mIFp1ZyA2MzQzCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEEtMTEgICAoaGV4KQkJRXhQZXQgVGVjaG5vbG9naWVzLCBJbmMKLTAwMEExMSAgICAgKGJhc2UgMTYpCQlFeFBldCBUZWNobm9sb2dpZXMsIEluYwotCQkJCTZGLCBLeW9uZ2dpIFNtYWxsIEJ1c2luZXNzIENlbnRlcgotCQkJCSMxMTEtOCwgSXVpLWRvbmcsIFBhbGRhbC1ndSwKLQkJCQlTdXdvbiwgS3lvbmdnaS1kbywgNDQyLTI3MCAgNDQyLTc3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS0xMiAgIChoZXgpCQlBenlsZXggVGVjaG5vbG9neSwgSW5jCi0wMDBBMTIgICAgIChiYXNlIDE2KQkJQXp5bGV4IFRlY2hub2xvZ3ksIEluYwotCQkJCTctMkZsLiwgTm8uIDczOCBDaHVuZyBDaGVuZyBSb2FkLAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtMTMgICAoaGV4KQkJSG9uZXl3ZWxsIFZpZGVvIFN5c3RlbXMKLTAwMEExMyAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgVmlkZW8gU3lzdGVtcwotCQkJCTY1NTQgMTc2IFN0cmVldAotCQkJCVN1cnJleSBCQyBWM1MgNEc1Ci0JCQkJQ0FOQURBCi0KLTAwLTBBLTE0ICAgKGhleCkJCVRFQ08gYS5zLgotMDAwQTE0ICAgICAoYmFzZSAxNikJCVRFQ08gYS5zLgotCQkJCUhhdmxpY2tvdmEgMjYwCi0JCQkJS09MSU4gQ1ogMjgwIDU4Ci0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMEEtMTUgICAoaGV4KQkJU2lsaWNvbiBEYXRhLCBJbmMKLTAwMEExNSAgICAgKGJhc2UgMTYpCQlTaWxpY29uIERhdGEsIEluYwotCQkJCTQ2OTkgT2xkIElyb25zaWRlcyBEci4sICMxNTAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMTYgICAoaGV4KQkJTGFzc2VuIFJlc2VhcmNoCi0wMDBBMTYgICAgIChiYXNlIDE2KQkJTGFzc2VuIFJlc2VhcmNoCi0JCQkJMzE2OTUgRm9yd2FyZCBSb2FkCi0JCQkJTWFudG9uIENBIDk2MDU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0xNyAgIChoZXgpCQlORVNUQVIgQ09NTVVOSUNBVElPTlMsIElOQwotMDAwQTE3ICAgICAoYmFzZSAxNikJCU5FU1RBUiBDT01NVU5JQ0FUSU9OUywgSU5DCi0JCQkJTm8uNiwxOSBMYW5lIEJhZGUgUm9hZAotCQkJCUhTSU5DSFUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtMTggICAoaGV4KQkJVmljaGVsIEluYy4KLTAwMEExOCAgICAgKGJhc2UgMTYpCQlWaWNoZWwgSW5jLgotCQkJCTNGIEphbmcgQmxkZy4gOTItNiBZYW5namFlLWRvbmcsIFNlY2hvLWcKLQkJCQlTZW91bCAgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS0xOSAgIChoZXgpCQlWYWxlcmUgUG93ZXIsIEluYy4KLTAwMEExOSAgICAgKGJhc2UgMTYpCQlWYWxlcmUgUG93ZXIsIEluYy4KLQkJCQk2NjEgTi4gUGxhbm8gUmQuCi0JCQkJUmljaGFyZHNvbiBUZXhhcyA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMUEgICAoaGV4KQkJSW1lcmdlIEx0ZAotMDAwQTFBICAgICAoYmFzZSAxNikJCUltZXJnZSBMdGQKLQkJCQlVbml0IDYsIEJhciBIaWxsIEJ1c2luZXNzIFBhcmsKLQkJCQlTYXhvbiBXYXkKLQkJCQlCYXIgSGlsbCBDYW1icmlkZ2UgQ0IzIDhTTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBBLTFCICAgKGhleCkJCVN0cmVhbSBMYWJzCi0wMDBBMUIgICAgIChiYXNlIDE2KQkJU3RyZWFtIExhYnMKLQkJCQlMZW5pbnNraWUgZ29yaSAxLCBiaWxkIDc3Ci0JCQkJTW9za293ICAxMTk5OTIKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMEEtMUMgICAoaGV4KQkJQnJpZGdlIEluZm9ybWF0aW9uIENvLiwgTHRkLgotMDAwQTFDICAgICAoYmFzZSAxNikJCUJyaWRnZSBJbmZvcm1hdGlvbiBDby4sIEx0ZC4KLQkJCQlOby4zLCBMYW5lIDEwNiwgV3UtS3VuZyAyIFJkLiwKLQkJCQlXdS1LdSBJbmQuIFBhcmssCi0JCQkJVGFpcGVpICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTFEICAgKGhleCkJCU9wdGljYWwgQ29tbXVuaWNhdGlvbnMgUHJvZHVjdHMgSW5jLgotMDAwQTFEICAgICAoYmFzZSAxNikJCU9wdGljYWwgQ29tbXVuaWNhdGlvbnMgUHJvZHVjdHMgSW5jLgotCQkJCTIwOTYxIEtuYXBwIFN0LgotCQkJCUNoYXRzd29ydGggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTFFICAgKGhleCkJCVJlZC1NIFByb2R1Y3RzIExpbWl0ZWQKLTAwMEExRSAgICAgKGJhc2UgMTYpCQlSZWQtTSBQcm9kdWN0cyBMaW1pdGVkCi0JCQkJTmVwdHVuZSBIb3VzZQotCQkJCU1lcmN1cnkgUGFyaywgV3ljb21iZSBMYW5lCi0JCQkJV29vYnVybiBHcmVlbiBCdWNraW5naGFtc2hpcmUgSFAxMCAwSEgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS0xRiAgIChoZXgpCQlBUlQgV0FSRSBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMEExRiAgICAgKGJhc2UgMTYpCQlBUlQgV0FSRSBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQk4MDYgQWNlIFRlY2hubyBUb3dlciAjMSwgMTk3LTE3Ci0JCQkJR3Vyby1kb25nLCBHdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtMjAgICAoaGV4KQkJU1ZBIE5ldHdvcmtzLCBJbmMuCi0wMDBBMjAgICAgIChiYXNlIDE2KQkJU1ZBIE5ldHdvcmtzLCBJbmMuCi0JCQkJODQwIEYgQXZlLiwgU3VpdGUgMTA0Ci0JCQkJUGxhbm8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTIxICAgKGhleCkJCUludGVncmEgVGVsZWNvbSBDby4gTHRkCi0wMDBBMjEgICAgIChiYXNlIDE2KQkJSW50ZWdyYSBUZWxlY29tIENvLiBMdGQKLQkJCQk3dGggZmxvb3IgSHdheW91bmcgQmxkLiAxMTItMgotCQkJCUthcmFrLWRvbmcgU29ucGEtZ3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTIyICAgKGhleCkJCUFtcGVyaW9uIEluYwotMDAwQTIyICAgICAoYmFzZSAxNikJCUFtcGVyaW9uIEluYwotCQkJCTI1MCBBcG9sbG8gRHJpdmUKLQkJCQlDaGVsbXNmb3JkIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0yMyAgIChoZXgpCQlQYXJhbWEgTmV0d29ya3MgSW5jCi0wMDBBMjMgICAgIChiYXNlIDE2KQkJUGFyYW1hIE5ldHdvcmtzIEluYwotCQkJCTE5NTUgVGhlIEFsYW1lZGEKLQkJCQlTYW4gSm9zZSBDQSA5NTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMjQgICAoaGV4KQkJT2N0YXZlIENvbW11bmljYXRpb25zCi0wMDBBMjQgICAgIChiYXNlIDE2KQkJT2N0YXZlIENvbW11bmljYXRpb25zCi0JCQkJODUgTm9ydGh3ZXN0IEJvdWxldmFyZAotCQkJCU5hc2h1YSBOSCAwMzA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMjUgICAoaGV4KQkJQ0VSQUdPTiBORVRXT1JLUwotMDAwQTI1ICAgICAoYmFzZSAxNikJCUNFUkFHT04gTkVUV09SS1MKLQkJCQkyNCBSQVVFTCBXQUxMRU5CRVJHIFNUUkVFVAotCQkJCVRFTC1BVklWICA5NjcxOQotCQkJCUlTUkFFTAotCi0wMC0wQS0yNiAgIChoZXgpCQlDRUlBIFMucC5BLgotMDAwQTI2ICAgICAoYmFzZSAxNikJCUNFSUEgUy5wLkEuCi0JCQkJWm9uYSBJbmR1c3RyaWFsZSBkaSBWaWNpb21hZ2dpbyA1NAotCQkJCUFyZXp6byBBUiA1MjA0MAotCQkJCUlUQUxZCi0KLTAwLTBBLTI3ICAgKGhleCkJCUFwcGxlIENvbXB1dGVyLCBJbmMuCi0wMDBBMjcgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIsIEluYy4KLQkJCQkyMDY1MCBWYWxsZXkgR3JlZW4gRHJpdmUKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTI4ICAgKGhleCkJCU1vdG9yb2xhCi0wMDBBMjggICAgIChiYXNlIDE2KQkJTW90b3JvbGEKLQkJCQk2MDAgTi4gVVMgSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0yOSAgIChoZXgpCQlQYW4gRGFjb20gTmV0d29ya2luZyBBRwotMDAwQTI5ICAgICAoYmFzZSAxNikJCVBhbiBEYWNvbSBOZXR3b3JraW5nIEFHCi0JCQkJRHJlaWVpY2ggUGxhemEgMUIKLQkJCQlEcmVpZWljaCBIZXNzZW4gRC02MzMwMwotCQkJCUdFUk1BTlkKLQotMDAtMEEtMkEgICAoaGV4KQkJUVNJIFN5c3RlbXMgSW5jLgotMDAwQTJBICAgICAoYmFzZSAxNikJCVFTSSBTeXN0ZW1zIEluYy4KLQkJCQk3IFJheW1vbmQgQXZlbnVlCi0JCQkJQnVpbGRpbmcgQiwgVW5pdCAxMQotCQkJCVNhbGVtIE5IIDAzMDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0yQiAgIChoZXgpCQlFdGhlcnN0dWZmCi0wMDBBMkIgICAgIChiYXNlIDE2KQkJRXRoZXJzdHVmZgotCQkJCTIwOCBXLiBNaW1vc2EgQ2lyY2xlCi0JCQkJU2FuIE1hcmNvcyBUWCA3ODY2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMkMgICAoaGV4KQkJQWN0aXZlIFRjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwQTJDICAgICAoYmFzZSAxNikJCUFjdGl2ZSBUY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkxNi0yMywgU2hpYmF1cmEgMi1DaG9tZSwKLQkJCQlNaW5hdG8ta3UsCi0JCQkJVG9reW8gVG9reW8gMTA4LTAwMjMKLQkJCQlKQVBBTgotCi0wMC0wQS0yRCAgIChoZXgpCQlDYWJvdCBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0wMDBBMkQgICAgIChiYXNlIDE2KQkJQ2Fib3QgQ29tbXVuaWNhdGlvbnMgTGltaXRlZAotCQkJCVZlcm9uYSBIb3VzZQotCQkJCUZpbHdvb2QgUm9hZAotCQkJCUJyaXN0b2wgR2xvdWNlc3RlcnNoaXJlIEJTMTYgM1JZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtMkUgICAoaGV4KQkJTUFQTEUgTkVUV09SS1MgQ08uLCBMVEQKLTAwMEEyRSAgICAgKGJhc2UgMTYpCQlNQVBMRSBORVRXT1JLUyBDTy4sIExURAotCQkJCTYwMiwgRG9uZ3doYQotCQkJCTM0OS0yNCwgU2hpbmRhZWJhbmctRG9uZywgRG9uZ2phay1HdQotCQkJCVNFT1VMICAxNTYtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTJGICAgKGhleCkJCUFydG5peCBJbmMuCi0wMDBBMkYgICAgIChiYXNlIDE2KQkJQXJ0bml4IEluYy4KLQkJCQlDaHVuZ2ppbiBCL0QsIDQ3NS0yMiBCYW5nYmFlLCBTZW9jaG8KLQkJCQlTZW91bCAgMTM3LTgxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS0zMCAgIChoZXgpCQlKb2huc29uIENvbnRyb2xzLUFTRwotMDAwQTMwICAgICAoYmFzZSAxNikJCUpvaG5zb24gQ29udHJvbHMtQVNHCi0JCQkJOTE1IEVhc3QgMzJuZCBTdHJlZXQKLQkJCQlIb2xsYW5kIE1JIDQ5NDIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0zMSAgIChoZXgpCQlIQ1YgQ29uc3VsdGluZwotMDAwQTMxICAgICAoYmFzZSAxNikJCUhDViBDb25zdWx0aW5nCi0JCQkJUCBPIEJveCAzNjkyCi0JCQkJSGVsZW5zdmFsZSBUb3duIENlbnRyZSA0MjEyCi0JCQkJUXVlZW5zbGFuZCAgIDQyMTIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtMzIgICAoaGV4KQkJWHNpZG8gQ29ycG9yYXRpb24KLTAwMEEzMiAgICAgKGJhc2UgMTYpCQlYc2lkbyBDb3Jwb3JhdGlvbgotCQkJCTNGLDItOC0xMyxTaGliYS1EYWltb24sCi0JCQkJTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwNS0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMEEtMzMgICAoaGV4KQkJRW11bGV4IENvcnBvcmF0aW9uCi0wMDBBMzMgICAgIChiYXNlIDE2KQkJRW11bGV4IENvcnBvcmF0aW9uCi0JCQkJMjAyMSBPcHBvcnR1bml0eSBEcml2ZQotCQkJCVN1aXRlIDEKLQkJCQlSb3NldmlsbGUgQ0EgOTU2NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM0ICAgKGhleCkJCUlkZW50aWNhcmQgU3lzdGVtcyBJbmNvcnBvcmF0ZWQKLTAwMEEzNCAgICAgKGJhc2UgMTYpCQlJZGVudGljYXJkIFN5c3RlbXMgSW5jb3Jwb3JhdGVkCi0JCQkJNDAgQ2l0YXRpb24gTGFuZQotCQkJCUxhbmNhc3RlciBQZW5uc3lsdmFuaWEgMTc2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM1ICAgKGhleCkJCVhpbGlueAotMDAwQTM1ICAgICAoYmFzZSAxNikJCVhpbGlueAotCQkJCTIxMDAgTG9naWMgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NDExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMzYgICAoaGV4KQkJU3luZWxlYyBUZWxlY29tIE11bHRpbWVkaWEKLTAwMEEzNiAgICAgKGJhc2UgMTYpCQlTeW5lbGVjIFRlbGVjb20gTXVsdGltZWRpYQotCQkJCVpvbmUgSW5kdXN0cmllbGxlCi0JCQkJU2FpbnQgU2VybmluIHN1ciBSYW5jZSBBdmV5cm9uIEYtMTIzODAKLQkJCQlGUkFOQ0UKLQotMDAtMEEtMzcgICAoaGV4KQkJUHJvY2VyYSBOZXR3b3JrcywgSW5jLgotMDAwQTM3ICAgICAoYmFzZSAxNikJCVByb2NlcmEgTmV0d29ya3MsIEluYy4KLQkJCQkxMjk5IE9ybGVhbnMgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM4ICAgKGhleCkJCUFwYW5pIE5ldHdvcmtzCi0wMDBBMzggICAgIChiYXNlIDE2KQkJQXBhbmkgTmV0d29ya3MKLQkJCQkxODAwIEUuIEltcGVyaWFsIEh3eQotCQkJCVN1aXRlIDIxMAotCQkJCUJyZWEgQ0EgOTI4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM5ICAgKGhleCkJCUxvUEEgSW5mb3JtYXRpb24gVGVjaG5vbG9neQotMDAwQTM5ICAgICAoYmFzZSAxNikJCUxvUEEgSW5mb3JtYXRpb24gVGVjaG5vbG9neQotCQkJCTcxMC05LCBEYWUgTGltIDMtRG9uZwotCQkJCVlvdW5nIERldW5nIHBvLWd1IFNlb3VsLCBLb3JlYSAxNTAtODE0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTNBICAgKGhleCkJCUotVEhSRUUgSU5URVJOQVRJT05BTCBIb2xkaW5nIENvLiwgTHRkLgotMDAwQTNBICAgICAoYmFzZSAxNikJCUotVEhSRUUgSU5URVJOQVRJT05BTCBIb2xkaW5nIENvLiwgTHRkLgotCQkJCU5vLiAxLCBZdS0zIFJkLiwgWW91dGggSW5kdXN0cmlhbCBQYXJrCi0JCQkJWWFuZy1tZWksIFRhb3l1YW4gSHNpZW4gIDMyNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtM0IgICAoaGV4KQkJR0NUIFNlbWljb25kdWN0b3IsIEluYwotMDAwQTNCICAgICAoYmFzZSAxNikJCUdDVCBTZW1pY29uZHVjdG9yLCBJbmMKLQkJCQkyMTIxIFJpbmd3b29kIEF2ZW51ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0zQyAgIChoZXgpCQlFbmVycG9pbnQgTHRkLgotMDAwQTNDICAgICAoYmFzZSAxNikJCUVuZXJwb2ludCBMdGQuCi0JCQkJS2Fpdm9wdWlzdG9udGllIDMzCi0JCQkJUmF1bWEgIDI2MTAwCi0JCQkJRklOTEFORAotCi0wMC0wQS0zRCAgIChoZXgpCQlFbG8gU2lzdGVtYXMgRWxldHJvbmljb3MgUy5BLgotMDAwQTNEICAgICAoYmFzZSAxNikJCUVsbyBTaXN0ZW1hcyBFbGV0cm9uaWNvcyBTLkEuCi0JCQkJUnVhIEVkdSBDaGF2ZXMsIDU0NwotCQkJCVBvcnRvIEFsZWdyZSBSUyA5MC4yNDAtNjIwCi0JCQkJQlJBWklMCi0KLTAwLTBBLTNFICAgKGhleCkJCUVBRFMgVGVsZWNvbQotMDAwQTNFICAgICAoYmFzZSAxNikJCUVBRFMgVGVsZWNvbQotCQkJCUxhbmRzaHV0ZXIgU3RyYXNzZSAyNgotCQkJCU11bmljaCBCYXZhcmlhIDg1NzE2Ci0JCQkJR0VSTUFOWQotCi0wMC0wQS0zRiAgIChoZXgpCQlEYXRhIEVhc3QgQ29ycG9yYXRpb24KLTAwMEEzRiAgICAgKGJhc2UgMTYpCQlEYXRhIEVhc3QgQ29ycG9yYXRpb24KLQkJCQk0LTQxLTEwIE1pbmFtaS1PZ2lrdWJvCi0JCQkJU3VnaW5hbWkta3UgVE9LWU8gMTY3LTAwNTIKLQkJCQlKQVBBTgotCi0wMC0wQS00MCAgIChoZXgpCQlDcm93biBBdWRpbyAtLSBIYXJtYW5tIEludGVybmF0aW9uYWwKLTAwMEE0MCAgICAgKGJhc2UgMTYpCQlDcm93biBBdWRpbyAtLSBIYXJtYW5tIEludGVybmF0aW9uYWwKLQkJCQkxNzE4IFcuIE1pc2hhd2FrYSBSZAotCQkJCUVsa2hhcnQgSU4gNDY1MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTQxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEE0MSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTQyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEE0MiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTQzICAgKGhleCkJCUNodW5naHdhIFRlbGVjb20gQ28uLCBMdGQuCi0wMDBBNDMgICAgIChiYXNlIDE2KQkJQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQkxMiwgTGFuZSA1NTEsIE1pbi1Uc3UgUm9hZAotCQkJCVNlYy4gNSBZYW5nLU1laSwKLQkJCQlUYW95dWFuICAzMjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTQ0ICAgKGhleCkJCUF2ZXJ5IERlbm5pc29uIERldXRzY2hsYW5kIEdtYkgKLTAwMEE0NCAgICAgKGJhc2UgMTYpCQlBdmVyeSBEZW5uaXNvbiBEZXV0c2NobGFuZCBHbWJICi0JCQkJT2htc3RyLiAzCi0JCQkJRWNoaW5nICA4NTM4NgotCQkJCUdFUk1BTlkKLQotMDAtMEEtNDUgICAoaGV4KQkJQXVkaW8tVGVjaG5pY2EgQ29ycC4KLTAwMEE0NSAgICAgKGJhc2UgMTYpCQlBdWRpby1UZWNobmljYSBDb3JwLgotCQkJCU5hcnVzZSAxLDM0OAotCQkJCU1hY2hpZGEgVG9reW8gMTk0LTg1NjYKLQkJCQlKQVBBTgotCi0wMC0wQS00NiAgIChoZXgpCQlBUk8gV0VMRElORyBURUNITk9MT0dJRVMgU0FTCi0wMDBBNDYgICAgIChiYXNlIDE2KQkJQVJPIFdFTERJTkcgVEVDSE5PTE9HSUVTIFNBUwotCQkJCVpJIGRlIE1vbnQgc3VyIExvaXIKLQkJCQlDaGF0ZWF1IGR1IExvaXIgc2FydGhlIDcyNTAwCi0JCQkJRlJBTkNFCi0KLTAwLTBBLTQ3ICAgKGhleCkJCUFsbGllZCBWaXNpb24gVGVjaG5vbG9naWVzCi0wMDBBNDcgICAgIChiYXNlIDE2KQkJQWxsaWVkIFZpc2lvbiBUZWNobm9sb2dpZXMKLQkJCQlUYXNjaGVud2VnIDJhCi0JCQkJU3RhZHRyb2RhIFRo/HJpbmdlbiAwNzY0NgotCQkJCUdFUk1BTlkKLQotMDAtMEEtNDggICAoaGV4KQkJQWxiYXRyb24gVGVjaG5vbG9neQotMDAwQTQ4ICAgICAoYmFzZSAxNikJCUFsYmF0cm9uIFRlY2hub2xvZ3kKLQkJCQk2RiwgTm8gNzE2LCBDaHVuZyBDaGVuZywKLQkJCQlDaHVuZy1IbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTQ5ICAgKGhleCkJCUY1IE5ldHdvcmtzLCBJbmMuCi0wMDBBNDkgICAgIChiYXNlIDE2KQkJRjUgTmV0d29ya3MsIEluYy4KLQkJCQk0MDEgRWxsaW90dCBBdmUuIFcuCi0JCQkJU2VhdHRsZSBXQSA5ODExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNEEgICAoaGV4KQkJVGFyZ2EgU3lzdGVtcyBMdGQuCi0wMDBBNEEgICAgIChiYXNlIDE2KQkJVGFyZ2EgU3lzdGVtcyBMdGQuCi0JCQkJMTkwNSBHcmFuZHRlY2ggQ2VudHJlLAotCQkJCTggT24gUGluZyBTdC4gIFNpdSBMZWsgWXVlbgotCQkJCVNoYXRpbiBOLlQuIAotCQkJCUhPTkcgS09ORwotCi0wMC0wQS00QiAgIChoZXgpCQlEYXRhUG93ZXIgVGVjaG5vbG9neSwgSW5jLgotMDAwQTRCICAgICAoYmFzZSAxNikJCURhdGFQb3dlciBUZWNobm9sb2d5LCBJbmMuCi0JCQkJT25lIEFsZXdpZmUgQ2VudGVyCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS00QyAgIChoZXgpCQlNb2xlY3VsYXIgRGV2aWNlcyBDb3Jwb3JhdGlvbgotMDAwQTRDICAgICAoYmFzZSAxNikJCU1vbGVjdWxhciBEZXZpY2VzIENvcnBvcmF0aW9uCi0JCQkJMTMxMSBPcmxlYW5zIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS00RCAgIChoZXgpCQlOb3JpdHogQ29ycG9yYXRpb24KLTAwMEE0RCAgICAgKGJhc2UgMTYpCQlOb3JpdHogQ29ycG9yYXRpb24KLQkJCQk1IE1pbmFtaS1GdXRhbWksCi0JCQkJRnV0YW1pLWNobywKLQkJCQlBa2FzaGktc2hpIEh5b2dvIDY3NC0wMDkzCi0JCQkJSkFQQU4KLQotMDAtMEEtNEUgICAoaGV4KQkJVU5JVEVLIEVsZWN0cm9uaWNzIElOQy4KLTAwMEE0RSAgICAgKGJhc2UgMTYpCQlVTklURUsgRWxlY3Ryb25pY3MgSU5DLgotCQkJCTEtMTgtNAotCQkJCU9obW9yaS1raXRhCi0JCQkJT2h0YS1rdSBUb2t5byAxNDMtMDAxNgotCQkJCUpBUEFOCi0KLTAwLTBBLTRGICAgKGhleCkJCUJyYWluIEJveGVzIExpbWl0ZWQKLTAwMEE0RiAgICAgKGJhc2UgMTYpCQlCcmFpbiBCb3hlcyBMaW1pdGVkCi0JCQkJVW5pdCAzYywgV2F2ZXJ0cmVlIEJvdWxldmFyZCBTb3V0aAotCQkJCVdhdmVydHJlZSBUZWNobm9sb2d5IFBhcmsKLQkJCQlMaXZlcnBvb2wgTWVyc2V5c2lkZSBMNyA5UEYKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS01MCAgIChoZXgpCQlSRU1PVEVLIENPUlBPUkFUSU9OCi0wMDBBNTAgICAgIChiYXNlIDE2KQkJUkVNT1RFSyBDT1JQT1JBVElPTgotCQkJCTZGLTYsIE5vIDc3LCBTZWMgMSwgSFNJTiBUQUkgV1UgUk9BRCwKLQkJCQlIU0ktQ0hJSCBUQUlQRUkgSFNJRU4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS01MSAgIChoZXgpCQlHeXJvU2lnbmFsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBBNTEgICAgIChiYXNlIDE2KQkJR3lyb1NpZ25hbCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTVGLE5vLiA3NyxMaWRlIFN0LgotCQkJCVpob25naGUgQ2l0eSBUYWlwZWkgQ291bnR5IDIzNTU2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS01MiAgIChoZXgpCQlBc2lhUkYgTHRkLgotMDAwQTUyICAgICAoYmFzZSAxNikJCUFzaWFSRiBMdGQuCi0JCQkJNEYuLCBOby4yLCBMYW5lIDU2MAotCQkJCVpob25nemhlbmcgUmQuCi0JCQkJWGluZGlhbiBDaXR5IFRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTUzICAgKGhleCkJCUludHJvbmljcywgSW5jb3Jwb3JhdGVkCi0wMDBBNTMgICAgIChiYXNlIDE2KQkJSW50cm9uaWNzLCBJbmNvcnBvcmF0ZWQKLQkJCQkyMDIwIExhZmF5ZXR0ZSBCbHZkLgotCQkJCUZyZWRlcmlja3NidXJnIFZpcmdpbmlhIDIyNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS01NCAgIChoZXgpCQlMYWd1bmEgSGlsbHMsIEluYy4KLTAwMEE1NCAgICAgKGJhc2UgMTYpCQlMYWd1bmEgSGlsbHMsIEluYy4KLQkJCQkxLTI1LTEgMzVGIEZsLiwgTmlzaGlzaGluanVrdQotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2MzA2MzUKLQkJCQlKQVBBTgotCi0wMC0wQS01NSAgIChoZXgpCQlNQVJLRU0gQ29ycG9yYXRpb24KLTAwMEE1NSAgICAgKGJhc2UgMTYpCQlNQVJLRU0gQ29ycG9yYXRpb24KLQkJCQkxNTAgQ29uZ3Jlc3MgU3RyZWV0Ci0JCQkJS2VlbmUgTkggMDM0MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTU2ICAgKGhleCkJCUhJVEFDSEkgTWF4ZWxsIEx0ZC4KLTAwMEE1NiAgICAgKGJhc2UgMTYpCQlISVRBQ0hJIE1heGVsbCBMdGQuCi0JCQkJNi0yMC0xIEtpbnVub2RhaQotCQkJCVlhd2FyYS1tdXJhLCBUc3VrdWJhLWd1biBJQkFSQUtJIDMwMC0yNDk2Ci0JCQkJSkFQQU4KLQotMDAtMEEtNTcgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkgLSBTdGFuZGFyZHMKLTAwMEE1NyAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueSAtIFN0YW5kYXJkcwotCQkJCTEwOTU1IFRhbnRhdSBBdmVudWUKLQkJCQlNYWlsc3RvcCA0MTM4Ci0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS01OCAgIChoZXgpCQlJbmdlbmlldXItQnVlcm8gRnJleWVyICYgU2llZ2VsCi0wMDBBNTggICAgIChiYXNlIDE2KQkJSW5nZW5pZXVyLUJ1ZXJvIEZyZXllciAmIFNpZWdlbAotCQkJCU5ldWVuZG9yZnN0ci4gMTggYgotCQkJCUhlbm5pZ3Nkb3JmIEJyYW5kZW5idXJnIDE2NzYxCi0JCQkJR0VSTUFOWQotCi0wMC0wQS01OSAgIChoZXgpCQlIVyBzZXJ2ZXIKLTAwMEE1OSAgICAgKGJhc2UgMTYpCQlIVyBzZXJ2ZXIKLQkJCQlJdGFsc2thIDE1Ci0JCQkJUHJhZ3VlIDIgQ3plY2ggUmVwdWJsaWMgMTIwIDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMEEtNUEgICAoaGV4KQkJR3JlZW5ORVQgVGVjaG5vbG9naWVzIENvLixMdGQuCi0wMDBBNUEgICAgIChiYXNlIDE2KQkJR3JlZW5ORVQgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJTm8uMTAsIFFpb25neXUgUm9hZCxTY2llbmNlcy1iYXNlZCBJbmR1cwotCQkJCU5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMEEtNUIgICAoaGV4KQkJUG93ZXItT25lIGFzCi0wMDBBNUIgICAgIChiYXNlIDE2KQkJUG93ZXItT25lIGFzCi0JCQkJUC5PLiBCb3ggMTU0MwotCQkJCURyYW1tZW4gIDMwMDcKLQkJCQlOT1JXQVkKLQotMDAtMEEtNUMgICAoaGV4KQkJQ2FyZWwgcy5wLmEuCi0wMDBBNUMgICAgIChiYXNlIDE2KQkJQ2FyZWwgcy5wLmEuCi0JCQkJVmlhIGRlbGwnIEluZHVzdHJpYSwgMTEKLQkJCQlCcnVnaW5lIFBhZG92YSAzNTAyMAotCQkJCUlUQUxZCi0KLTAwLTBBLTVEICAgKGhleCkJCVBVQyBGb3VuZGVyIChNU0MpIEJlcmhhZAotMDAwQTVEICAgICAoYmFzZSAxNikJCVBVQyBGb3VuZGVyIChNU0MpIEJlcmhhZAotCQkJCUxvdCBHLTEgJiBHLTIsIEluY3ViYXRvciAxCi0JCQkJVGVjaG5vbG9neSBQYXJrIE1hbGF5c2lhCi0JCQkJS3VhbGEgTHVtcHVyIFdQIDU3MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMEEtNUUgICAoaGV4KQkJM0NPTSBDb3Jwb3JhdGlvbgotMDAwQTVFICAgICAoYmFzZSAxNikJCTNDT00gQ29ycG9yYXRpb24KLQkJCQk1NDAwIEJheWZyb250IFBsYXphCi0JCQkJTS9TIDUxMTkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1Mi04MTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS01RiAgIChoZXgpCQlhbG1lZGlvIGluYy4KLTAwMEE1RiAgICAgKGJhc2UgMTYpCQlhbG1lZGlvIGluYy4KLQkJCQkzMi0xMywgc2FrYWUtY2hvIDIgY2hvbWUKLQkJCQloaWdhc2hpbXVyYXlhbWEtc2hpIHRva3lvIDE4OS0wMDEzCi0JCQkJSkFQQU4KLQotMDAtMEEtNjAgICAoaGV4KQkJQXV0b3N0YXIgVGVjaG5vbG9neSBQdGUgTHRkCi0wMDBBNjAgICAgIChiYXNlIDE2KQkJQXV0b3N0YXIgVGVjaG5vbG9neSBQdGUgTHRkCi0JCQkJVW5pdCAwNC0xMCBURUNIcGxhY2UgSUkKLQkJCQlTaW5nYXBvcmUgU2luZ2Fwb3JlIDU2OTg3NgotCQkJCVNJTkdBUE9SRQotCi0wMC0wQS02MSAgIChoZXgpCQlDZWxsaW54IFN5c3RlbXMgSW5jLgotMDAwQTYxICAgICAoYmFzZSAxNikJCUNlbGxpbnggU3lzdGVtcyBJbmMuCi0JCQkJNDA4IFdvb3N1bmcgQ2hhcmFjdGVyMTk5IG9mZmljZXRlbAotCQkJCTQ2Ny0yNCBkb2dvay1kb25nIGthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTg1NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS02MiAgIChoZXgpCQlDcmluaXMgTmV0d29ya3MsIEluYy4KLTAwMEE2MiAgICAgKGJhc2UgMTYpCQlDcmluaXMgTmV0d29ya3MsIEluYy4KLQkJCQkyMDk5IE4uIENvbGxpbnMgQmx2ZCwgU3VpdGUgMjAwCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNjMgICAoaGV4KQkJREhEIEdtYkgKLTAwMEE2MyAgICAgKGJhc2UgMTYpCQlESEQgR21iSAotCQkJCUhhZmVya29ybnN0cmFzc2UgNQotCQkJCUxlaXB6aWcgU2FjaHNlbiAwNDEyOQotCQkJCUdFUk1BTlkKLQotMDAtMEEtNjQgICAoaGV4KQkJRXJhY29tIFRlY2hub2xvZ2llcwotMDAwQTY0ICAgICAoYmFzZSAxNikJCUVyYWNvbSBUZWNobm9sb2dpZXMKLQkJCQkyOCBHcmVnIENoYXBwZWxsIERyaXZlCi0JCQkJQnVybGVpZ2ggSGVhZHMgUWxkIDQyMjAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtNjUgICAoaGV4KQkJR2VudGVjaE1lZGlhLmNvLixsdGQuCi0wMDBBNjUgICAgIChiYXNlIDE2KQkJR2VudGVjaE1lZGlhLmNvLixsdGQuCi0JCQkJc29sdml0IGJsZGcgMmYsIDQwMi04LCB5YW5namFlLWRvbiwKLQkJCQlzZW9jaG8tZ3UsIHNlb3VsIDEzNy04OTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtNjYgICAoaGV4KQkJTUlUU1VCSVNISSBFTEVDVFJJQyBTWVNURU0gJiBTRVJWSUNFIENPLixMVEQuCi0wMDBBNjYgICAgIChiYXNlIDE2KQkJTUlUU1VCSVNISSBFTEVDVFJJQyBTWVNURU0gJiBTRVJWSUNFIENPLixMVEQuCi0JCQkJMS00LTEzIE9PWU9ET05BS0EsS0lUQS1LVQotCQkJCU9TQUtBICA1MzEtMDA3NgotCQkJCUpBUEFOCi0KLTAwLTBBLTY3ICAgKGhleCkJCU9uZ0NvcnAKLTAwMEE2NyAgICAgKGJhc2UgMTYpCQlPbmdDb3JwCi0JCQkJNDgxIEhhY2tlbnNhY2sgQXZlLgotCQkJCUhhY2tlbnNhY2sgTkogMDc2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTY4ICAgKGhleCkJCVNvbGFyRmxhcmUgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMEE2OCAgICAgKGJhc2UgMTYpCQlTb2xhckZsYXJlIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJOTUwMSBKZXJvbmltbwotCQkJCVN1aXRlIDEwMAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNjkgICAoaGV4KQkJU1VOTlkgYmVsbCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwQTY5ICAgICAoYmFzZSAxNikJCVNVTk5ZIGJlbGwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkjNTAyIEJVV09OIEIvRCAxMDctNDUgQkFOUE8tRE9ORwotCQkJCVNFT0NITy1LVQotCQkJCVNFT1VMICAxMzctODA2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTZBICAgKGhleCkJCVNWTSBNaWNyb3dhdmVzIHMuci5vLgotMDAwQTZBICAgICAoYmFzZSAxNikJCVNWTSBNaWNyb3dhdmVzIHMuci5vLgotCQkJCVUgTXJhem92a3kgNQotCQkJCVByYWhhIDUgIDE1MDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMEEtNkIgICAoaGV4KQkJVGFkaXJhbiBUZWxlY29tIEJ1c2luZXNzIFN5c3RlbXMgTFRECi0wMDBBNkIgICAgIChiYXNlIDE2KQkJVGFkaXJhbiBUZWxlY29tIEJ1c2luZXNzIFN5c3RlbXMgTFRECi0JCQkJMTggSGFzaXZpbSBTdC4KLQkJCQlQLk8uQm94IDQ1MAotCQkJCVBldGFjaCBUaWt2YSAgNDkxMDUKLQkJCQlJU1JBRUwKLQotMDAtMEEtNkMgICAoaGV4KQkJV2FsY2hlbSBDb3Jwb3JhdGlvbgotMDAwQTZDICAgICAoYmFzZSAxNikJCVdhbGNoZW0gQ29ycG9yYXRpb24KLQkJCQk1IEJveW50b24gUm9hZAotCQkJCUhvbGxpc3RvbiBNQSAwMTc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNkQgICAoaGV4KQkJRUtTIEVsZWt0cm9uaWtzZXJ2aWNlIEdtYkgKLTAwMEE2RCAgICAgKGJhc2UgMTYpCQlFS1MgRWxla3Ryb25pa3NlcnZpY2UgR21iSAotCQkJCUVuenN0ci4gOQotCQkJCUtvcm53ZXN0aGVpbSBCYWRlbiBX/HJ0ZW1iZXJnIDcwODA2Ci0JCQkJR0VSTUFOWQotCi0wMC0wQS02RSAgIChoZXgpCQlCcm9hZGNhc3QgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDBBNkUgICAgIChiYXNlIDE2KQkJQnJvYWRjYXN0IFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCTYgU29wd2l0aCBQYXJrLCBSb3ljZSBDbG9zZQotCQkJCVdlc3QgUG9ydHdheSBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUFuZG92ZXIgSGFtcHNoaXJlIFNQMTAgM1RCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtNkYgICAoaGV4KQkJWnlGTEVYIFRlY2hub2xvZ2llcyBJbmMKLTAwMEE2RiAgICAgKGJhc2UgMTYpCQlaeUZMRVggVGVjaG5vbG9naWVzIEluYwotCQkJCTJGbC4gTm8uIDU4IFBhcmsgQXZlLiBJSQotCQkJCVMuQi5JLlAuLCBIc2luY2h1ICAzMDA3NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtNzAgICAoaGV4KQkJTVBMUyBGb3J1bQotMDAwQTcwICAgICAoYmFzZSAxNikJCU1QTFMgRm9ydW0KLQkJCQkzOTM1NSBDYWxpZm9ybmlhIFN0cmVldAotCQkJCVN1aXRlIDMwNwotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTcxICAgKGhleCkJCUF2cmlvIFRlY2hub2xvZ2llcywgSW5jCi0wMDBBNzEgICAgIChiYXNlIDE2KQkJQXZyaW8gVGVjaG5vbG9naWVzLCBJbmMKLQkJCQkyNjU1IEEgUGFyayBDZW50ZXIgRHJpdmUKLQkJCQlTaW1pIFZhbGxleSBDQSA5MTM1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNzIgICAoaGV4KQkJU1RFQywgSU5DLgotMDAwQTcyICAgICAoYmFzZSAxNikJCVNURUMsIElOQy4KLQkJCQkzMDAxIERhaW1sZXIgU3RyZWV0Ci0JCQkJU2FudGEgQW5hIENBIDkyNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS03MyAgIChoZXgpCQlTY2llbnRpZmljIEF0bGFudGEKLTAwMEE3MyAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljIEF0bGFudGEKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTVMgNS4yNDI1Ci0JCQkJTGF3cmVuY2V2aWxsZSBHYSAzMDA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNzQgICAoaGV4KQkJTWFudGljb20gTmV0d29ya3MgSW5jLgotMDAwQTc0ICAgICAoYmFzZSAxNikJCU1hbnRpY29tIE5ldHdvcmtzIEluYy4KLQkJCQkxNDAxNi1DIFN1bGx5ZmllbGQgQ2lyY2xlCi0JCQkJQ2hhbnRpbGx5IFZBIDIwMTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS03NSAgIChoZXgpCQlDYXRlcnBpbGxhciwgSW5jCi0wMDBBNzUgICAgIChiYXNlIDE2KQkJQ2F0ZXJwaWxsYXIsIEluYwotCQkJCU1haWxzdG9wIExvY2F0aW9uIEFDNjEzMAotCQkJCVBPIEJveCA2MTAKLQkJCQlNb3NzdmlsbGUgSUwgNjE1NTItMDYxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNzYgICAoaGV4KQkJQmVpZGEgSmFkZSBCaXJkIEh1YWd1YW5nIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwQTc2ICAgICAoYmFzZSAxNikJCUJlaWRhIEphZGUgQmlyZCBIdWFndWFuZyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4yMDcgQ2hlbmdmdSBSb2FkLCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwODcxCi0JCQkJQ0hJTkEKLQotMDAtMEEtNzcgICAoaGV4KQkJQmx1ZXdpcmUgVGVjaG5vbG9naWVzIExMQwotMDAwQTc3ICAgICAoYmFzZSAxNikJCUJsdWV3aXJlIFRlY2hub2xvZ2llcyBMTEMKLQkJCQk0MjAgTi4gTyBTdC4KLQkJCQlUdWxhcmUgQ2EgOTMyNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTc4ICAgKGhleCkJCU9MSVRFQwotMDAwQTc4ICAgICAoYmFzZSAxNikJCU9MSVRFQwotCQkJCUIuUC4gNTkyCi0JCQkJODcsIHJ1ZSBNYWMgTWFob24KLQkJCQlOQU5DWSBjZWRleCAgNTQwMDkKLQkJCQlGUkFOQ0UKLQotMDAtMEEtNzkgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMgSy5LLiBjb3JlZ2EgZGl2aXNpb24KLTAwMEE3OSAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcyBLLksuIGNvcmVnYSBkaXZpc2lvbgotCQkJCTEtMTktMjAsIFNoaW55b2tvaGFtYQotCQkJCUtvdWhva3Uta3UKLQkJCQlZb2tvaGFtYS1jaXR5IEthbmFnYXdhLWtlbiAyMjItMDAzMwotCQkJCUpBUEFOCi0KLTAwLTBBLTdBICAgKGhleCkJCUt5b3JpdHN1IEVsZWN0cmljIENvLiwgTHRkLgotMDAwQTdBICAgICAoYmFzZSAxNikJCUt5b3JpdHN1IEVsZWN0cmljIENvLiwgTHRkLgotCQkJCTItMy0xNwotCQkJCUl3YXRvLW1pbmFtaQotCQkJCUtvbWFlLXNoaSBUb2t5byAyMDEtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTBBLTdCICAgKGhleCkJCUNvcm5lbGl1cyBDb25zdWx0Ci0wMDBBN0IgICAgIChiYXNlIDE2KQkJQ29ybmVsaXVzIENvbnN1bHQKLQkJCQlBbSBTaWVwZW4gMTcKLQkJCQlCb2NodW0gTlJXIDQ0ODAzCi0JCQkJR0VSTUFOWQotCi0wMC0wQS03QyAgIChoZXgpCQlUZWN0b24gTHRkCi0wMDBBN0MgICAgIChiYXNlIDE2KQkJVGVjdG9uIEx0ZAotCQkJCUZpc2hlcnMgQ291cnQKLQkJCQlGaXNoZXJzIFBvbmQKLQkJCQlFYXN0bGVpZ2ggSGFtcHNoaXJlIFNPNTAgN0hHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtN0QgICAoaGV4KQkJVmFsbywgSW5jLgotMDAwQTdEICAgICAoYmFzZSAxNikJCVZhbG8sIEluYy4KLQkJCQkxMzUxIFJlZHdvb2QgV2F5Ci0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTdFICAgKGhleCkJCVRoZSBBZHZhbnRhZ2UgR3JvdXAKLTAwMEE3RSAgICAgKGJhc2UgMTYpCQlUaGUgQWR2YW50YWdlIEdyb3VwCi0JCQkJMTYxMCBEZXMgUGVyZXMgUm9hZAotCQkJCVN1aXRlIDM3MAotCQkJCVN0LiBMb3VpcyBNTyA2MzEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtN0YgICAoaGV4KQkJVGVyYWRvbiBJbmR1c3RyaWVzLCBJbmMKLTAwMEE3RiAgICAgKGJhc2UgMTYpCQlUZXJhZG9uIEluZHVzdHJpZXMsIEluYwotCQkJCTc1MDAgMm5kIFNUIE5XCi0JCQkJQWxidXF1ZXJxdWUgTk0gODcxMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTgwICAgKGhleCkJCVRlbGtvbmV0IEluYy4KLTAwMEE4MCAgICAgKGJhc2UgMTYpCQlUZWxrb25ldCBJbmMuCi0JCQkJMjAzNzQgU2VuZWNhIE1lYWRvd3MgUGt3eQotCQkJCUdlcm1hbnRvd24gTUQgMjA3ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTgxICAgKGhleCkJCVRFSU1BIEF1ZGlvdGV4IFMuTC4KLTAwMEE4MSAgICAgKGJhc2UgMTYpCQlURUlNQSBBdWRpb3RleCBTLkwuCi0JCQkJQy8gVGlydmlhLCA2LCBsb2NhbCBCCi0JCQkJTWFkcmlkICAyODA0MAotCQkJCVNQQUlOCi0KLTAwLTBBLTgyICAgKGhleCkJCVRBVFNVVEEgU1lTVEVNIEVMRUNUUk9OSUNTIENPLixMVEQuCi0wMDBBODIgICAgIChiYXNlIDE2KQkJVEFUU1VUQSBTWVNURU0gRUxFQ1RST05JQ1MgQ08uLExURC4KLQkJCQlJV0FUQVRZT1UyLTMtMQotCQkJCUhJR0FTSElPT1NBS0EtU0hJIE9PU0FLQS1GVSA1NzgtODU4NQotCQkJCUpBUEFOCi0KLTAwLTBBLTgzICAgKGhleCkJCVNBTFRPIFNZU1RFTVMgUy5MLgotMDAwQTgzICAgICAoYmFzZSAxNikJCVNBTFRPIFNZU1RFTVMgUy5MLgotCQkJCUFya290eiwgOQotCQkJCVBvbO1nb25vIExhbmJhcnJlbiBPaWFydHp1biAyMDE4MAotCQkJCVNQQUlOCi0KLTAwLTBBLTg0ICAgKGhleCkJCVJhaW5zdW4gRW50ZXJwcmlzZSBDby4sIEx0ZC4KLTAwMEE4NCAgICAgKGJhc2UgMTYpCQlSYWluc3VuIEVudGVycHJpc2UgQ28uLCBMdGQuCi0JCQkJTm8uMTQtMyAsIExhbmUgMjM1LCBIby1DaGVuIFJvYWQKLQkJCQlCYW9DaWFvIFJvYWQKLQkJCQlTaGluRGlhbiBDaXR5IFRBSVBFSSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTg1ICAgKGhleCkJCVBMQVQnQzIsSW5jCi0wMDBBODUgICAgIChiYXNlIDE2KQkJUExBVCdDMixJbmMKLQkJCQkyLTMtNiBTT1RPS0FOREEKLQkJCQlDSElZT0RBLUtVIFRPS1lPIDEwMS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMEEtODYgICAoaGV4KQkJTGVuemUKLTAwMEE4NiAgICAgKGJhc2UgMTYpCQlMZW56ZQotCQkJCVBPIGJveCAxMDEzNTIKLQkJCQlIYW1lbG4gTG93ZXIgU2F4b255IDMxNzYzCi0JCQkJR0VSTUFOWQotCi0wMC0wQS04NyAgIChoZXgpCQlJbnRlZ3JhdGVkIE1pY3JvbWFjaGluZXMgSW5jLgotMDAwQTg3ICAgICAoYmFzZSAxNikJCUludGVncmF0ZWQgTWljcm9tYWNoaW5lcyBJbmMuCi0JCQkJMTQwMCBTLiBTaGFtcm9jayBBdmUuCi0JCQkJTW9ucm92aWEgQ0EgOTEwMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTg4ICAgKGhleCkJCUluQ3lwaGVyIFMuQS4KLTAwMEE4OCAgICAgKGJhc2UgMTYpCQlJbkN5cGhlciBTLkEuCi0JCQkJMTggcnVlIGRlIGwnRWF1Ci0JCQkJTHV4ZW1ib3VyZyAgMTQ0OQotCQkJCUxVWEVNQk9VUkcKLQotMDAtMEEtODkgICAoaGV4KQkJQ3JldmFsIFN5c3RlbXMsIEluYy4KLTAwMEE4OSAgICAgKGJhc2UgMTYpCQlDcmV2YWwgU3lzdGVtcywgSW5jLgotCQkJCTJGLDI0LTQsU2Fud29sZ29rLURvbmcsU3VuZ2J1ay1LdSxTZW91bCwKLQkJCQlTZW91bCAgMTM2LTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS04QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBOEEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS04QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBOEIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERSLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS04QyAgIChoZXgpCQlHdWFyZHdhcmUgU3lzdGVtcyBMdGQuCi0wMDBBOEMgICAgIChiYXNlIDE2KQkJR3VhcmR3YXJlIFN5c3RlbXMgTHRkLgotCQkJCVVsbG9pIHV0IDEwMi4KLQkJCQlCdWRhcGVzdCAgSC0xMDg5Ci0JCQkJSFVOR0FSWQotCi0wMC0wQS04RCAgIChoZXgpCQlFVVJPVEhFUk0gTElNSVRFRAotMDAwQThEICAgICAoYmFzZSAxNikJCUVVUk9USEVSTSBMSU1JVEVECi0JCQkJRkFSQURBWSBDTE9TRQotCQkJCURVUlJJTkdUT04KLQkJCQlXT1JUSElORyBXRVNUIFNVU1NFWCBCTjEzIDNQTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBBLThFICAgKGhleCkJCUludmFjb20gTHRkCi0wMDBBOEUgICAgIChiYXNlIDE2KQkJSW52YWNvbSBMdGQKLQkJCQlCdXNpbmVzcyBhbmQgVGVjaG5vbG9neSBDZW50cmUKLQkJCQlCZXNzZW1lciBEcml2ZQotCQkJCVN0ZXZlbmFnZSBIZXJ0Zm9yZHNoaXJlIFNHMSAyRFgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS04RiAgIChoZXgpCQlBc2thIEludGVybmF0aW9uYWwgSW5jLgotMDAwQThGICAgICAoYmFzZSAxNikJCUFza2EgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJMzA2IFJpdmVyc2V2ZW4KLQkJCQk0LTE4IEhhcmVnaS1Ib25tYWNoaQotCQkJCUtvY2hpICA3ODAtODA4OAotCQkJCUpBUEFOCi0KLTAwLTBBLTkwICAgKGhleCkJCUJheXNpZGUgSW50ZXJhY3RpdmUsIEluYy4KLTAwMEE5MCAgICAgKGJhc2UgMTYpCQlCYXlzaWRlIEludGVyYWN0aXZlLCBJbmMuCi0JCQkJMzMwIEJpc2NheW5lIEJsdmQuCi0JCQkJU3VpdGUgODAxCi0JCQkJTWlhbWkgRkwgMzMxMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTkxICAgKGhleCkJCUhlbW9DdWUgQUIKLTAwMEE5MSAgICAgKGJhc2UgMTYpCQlIZW1vQ3VlIEFCCi0JCQkJQm94IDEyMDQKLQkJCQnEbmdlbGhvbG0gU2vlbmUgMjYyMjMKLQkJCQlTV0VERU4KLQotMDAtMEEtOTIgICAoaGV4KQkJUHJlc29udXMgQ29ycG9yYXRpb24KLTAwMEE5MiAgICAgKGJhc2UgMTYpCQlQcmVzb251cyBDb3Jwb3JhdGlvbgotCQkJCTcyNTcgRmxvcmlkYSBCbHZkLgotCQkJCUJhdG9uIFJvdWdlIExvdWlzaWFuYSA3MDgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtOTMgICAoaGV4KQkJVzIgTmV0d29ya3MsIEluYy4KLTAwMEE5MyAgICAgKGJhc2UgMTYpCQlXMiBOZXR3b3JrcywgSW5jLgotCQkJCTU4MDggTlcgTGFjIExlbWFuIERyaXZlCi0JCQkJSXNzYXF1YWggV2FzaGluZ3RvbiA5ODAyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtOTQgICAoaGV4KQkJU2hhbmdIYWkgY2VsbGluayBDTy4sIExURAotMDAwQTk0ICAgICAoYmFzZSAxNikJCVNoYW5nSGFpIGNlbGxpbmsgQ08uLCBMVEQKLQkJCQlDMyBNZWlMb25nIFpob25nWGluIEluZHVzdHJpYWwgUGFyayxOby4xCi0JCQkJU2hhbmdIYWkgIDIwMDIzNwotCQkJCUNISU5BCi0KLTAwLTBBLTk1ICAgKGhleCkJCUFwcGxlIENvbXB1dGVyLCBJbmMuCi0wMDBBOTUgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlNL1MgMjYtQwotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtOTYgICAoaGV4KQkJTUVXVEVMIFRFQ0hOT0xPR1kgSU5DLgotMDAwQTk2ICAgICAoYmFzZSAxNikJCU1FV1RFTCBURUNITk9MT0dZIElOQy4KLQkJCQlFMTVGTC4gSVQgVkVOVFVSRSBUT1dFUgotCQkJCTc4IEtBUkFLLURPTkcsIFNPTkdQQS1HVQotCQkJCVNFT1VMICAxMzgtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTk3ICAgKGhleCkJCVNPTklDYmx1ZSwgSW5jLgotMDAwQTk3ICAgICAoYmFzZSAxNikJCVNPTklDYmx1ZSwgSW5jLgotCQkJCTI4NDEgTWlzc2lvbiBDb2xsZWdlIEJsdmQuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTk4ICAgKGhleCkJCU0rRiBHd2lubmVyIEdtYkggJiBDbwotMDAwQTk4ICAgICAoYmFzZSAxNikJCU0rRiBHd2lubmVyIEdtYkggJiBDbwotCQkJCVdlaWRlbmJhdW1zd2VnIDkxIGEKLQkJCQlIYW1idXJnICAyMTAyOQotCQkJCUdFUk1BTlkKLQotMDAtMEEtOTkgICAoaGV4KQkJQ2FsYW1wIFdpcmVsZXNzIE5ldHdvcmtzIEluYwotMDAwQTk5ICAgICAoYmFzZSAxNikJCUNhbGFtcCBXaXJlbGVzcyBOZXR3b3JrcyBJbmMKLQkJCQkxMDEtNTU0MCBGZXJyaWVyIFN0cmVldAotCQkJCVRvd24gb2YgTW91bnQtUm95YWwgUXVlYmVjIEg0UCAxTTIKLQkJCQlDQU5BREEKLQotMDAtMEEtOUEgICAoaGV4KQkJQWlwdGVrIEludGVybmF0aW9uYWwgSW5jCi0wMDBBOUEgICAgIChiYXNlIDE2KQkJQWlwdGVrIEludGVybmF0aW9uYWwgSW5jCi0JCQkJTm8gNS0xIElubm92YXRpb24gUmQgMQotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtOUIgICAoaGV4KQkJVG93YSBNZWNjcyBDb3Jwb3JhdGlvbgotMDAwQTlCICAgICAoYmFzZSAxNikJCVRvd2EgTWVjY3MgQ29ycG9yYXRpb24KLQkJCQkzNS0xIEthbWl0b2RhCi0JCQkJVG9kYSBTYWl0YW1hIDMzNS0wMDIyCi0JCQkJSkFQQU4KLQotMDAtMEEtOUMgICAoaGV4KQkJU2VydmVyIFRlY2hub2xvZ3ksIEluYy4KLTAwMEE5QyAgICAgKGJhc2UgMTYpCQlTZXJ2ZXIgVGVjaG5vbG9neSwgSW5jLgotCQkJCTEwNDAgU2FuZGhpbGwgRHIuCi0JCQkJUmVubyBOZXZhZGEgODk1MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTlEICAgKGhleCkJCUtpbmcgWW91bmcgVGVjaG5vbG9neSBDby4gTHRkLgotMDAwQTlEICAgICAoYmFzZSAxNikJCUtpbmcgWW91bmcgVGVjaG5vbG9neSBDby4gTHRkLgotCQkJCTFGbC4sIE5vLiA5LCBMYW5lIDI2LCBHYW5nY2hpIFJkLiwgTmVpaHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtOUUgICAoaGV4KQkJQnJvYWRXZWIgQ29ycG9ydGF0aW9uCi0wMDBBOUUgICAgIChiYXNlIDE2KQkJQnJvYWRXZWIgQ29ycG9ydGF0aW9uCi0JCQkJM0YsIDI0LTEsIEluZHVzdHJ5IEVhc3QgUmQuLCBJViwKLQkJCQlTY2llbmNlIEJhc2VkLCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luLUNodSAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTlGICAgKGhleCkJCVBhbm5hd2F5IFRlY2hub2xvZ2llcywgSW5jLgotMDAwQTlGICAgICAoYmFzZSAxNikJCVBhbm5hd2F5IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTIxNSBDb21tZXJjZSBXYXkKLQkJCQlQb3J0c21vdXRoIE5IIDAzODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1BMCAgIChoZXgpCQlDZWRhciBQb2ludCBDb21tdW5pY2F0aW9ucwotMDAwQUEwICAgICAoYmFzZSAxNikJCUNlZGFyIFBvaW50IENvbW11bmljYXRpb25zCi0JCQkJMTYgUm91dGUgMTExLCBCbGRnIDMKLQkJCQlEZXJyeSBOSCAwMzAzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQTEgICAoaGV4KQkJViBWIFMgTGltaXRlZAotMDAwQUExICAgICAoYmFzZSAxNikJCVYgViBTIExpbWl0ZWQKLQkJCQlIUElDLCAxLiBBaW5zbGllIFJvYWQgLAotCQkJCUhpbGxpbmd0b24KLQkJCQlHbGFzZ293IFNjb3RsYW5kIEc1MiA0UlUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS1BMiAgIChoZXgpCQlTWVNURUsgSU5DLgotMDAwQUEyICAgICAoYmFzZSAxNikJCVNZU1RFSyBJTkMuCi0JCQkJSkNPTSBCVUlMRElORyA0MDIsIE9KRU9OLURPTkcgMTI0LTQsCi0JCQkJVUlXQU5HLVNJIEdZVU5HR0ktRE8gNDM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS1BMyAgIChoZXgpCQlTSElNQUZVSkkgRUxFQ1RSSUMgQ08uLExURC4KLTAwMEFBMyAgICAgKGJhc2UgMTYpCQlTSElNQUZVSkkgRUxFQ1RSSUMgQ08uLExURC4KLQkJCQlEYWloeWFrdS1zZWltZWkgS2FtYXRhIEJsZGcuM0YKLQkJCQk4LTExLTExIE5pc2hpa2FtYXRhLE90YS1rdQotCQkJCVRva3lvIDE0NC0wMDUxCi0JCQkJSkFQQU4KLQotMDAtMEEtQTQgICAoaGV4KQkJU0hBTkdIQUkgU1VSVkVJTExBTkNFIFRFQ0hOT0xPR1kgQ08sTFRECi0wMDBBQTQgICAgIChiYXNlIDE2KQkJU0hBTkdIQUkgU1VSVkVJTExBTkNFIFRFQ0hOT0xPR1kgQ08sTFRECi0JCQkJRkwuMjVBLE5PLjggQ0hBTkdZQU5HIFJPQUQKLQkJCQlTSEFOR0hBSSAgMjAwMDgyCi0JCQkJQ0hJTkEKLQotMDAtMEEtQTUgICAoaGV4KQkJTUFYTElOSyBJTkRVU1RSSUVTIExJTUlURUQKLTAwMEFBNSAgICAgKGJhc2UgMTYpCQlNQVhMSU5LIElORFVTVFJJRVMgTElNSVRFRAotCQkJCTI5QSBTSEVOWkhFTiBTUEVDSUFMIFpPTkUKLQkJCQlQUkVTUyBUT1dFUgotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgwMDkKLQkJCQlDSElOQQotCi0wMC0wQS1BNiAgIChoZXgpCQlIb2NoaWtpIENvcnBvcmF0aW9uCi0wMDBBQTYgICAgIChiYXNlIDE2KQkJSG9jaGlraSBDb3Jwb3JhdGlvbgotCQkJCTI0NiwgVFNVUlVNQQotCQkJCU1BQ0hJREEgVE9LWU8gMTk0LTg1NzcKLQkJCQlKQVBBTgotCi0wMC0wQS1BNyAgIChoZXgpCQlGRUkgRWxlY3Ryb24gT3B0aWNzCi0wMDBBQTcgICAgIChiYXNlIDE2KQkJRkVJIEVsZWN0cm9uIE9wdGljcwotCQkJCUFjaHRzZXdlZyBOb29yZCA1Ci0JCQkJQUFFIDM0Ci0JCQkJRWluZGhvdmVuICA1NjUxR0cKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wQS1BOCAgIChoZXgpCQllUGlwZSBQdHkuIEx0ZC4KLTAwMEFBOCAgICAgKGJhc2UgMTYpCQllUGlwZSBQdHkuIEx0ZC4KLQkJCQlQLk8uIEJveCAxNDI4Ci0JCQkJVG9vd29uZwotCQkJCUJyaXNiYW5lIFF1ZWVuc2xhbmQgNDA2NgotCQkJCUFVU1RSQUxJQQotCi0wMC0wQS1BOSAgIChoZXgpCQlCcm9va3MgQXV0b21hdGlvbiBHbWJICi0wMDBBQTkgICAgIChiYXNlIDE2KQkJQnJvb2tzIEF1dG9tYXRpb24gR21iSAotCQkJCUdvZXNjaHdpdHplciBTdHJhc3NlIDI1Ci0JCQkJSmVuYSBUaHVyaW5naWEgMDc3NDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLUFBICAgKGhleCkJCUFsdGlHZW4gQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwQUFBICAgICAoYmFzZSAxNikJCUFsdGlHZW4gQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTQ3NDI3IEZyZW1vbnQgQmx2ZC4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1BQiAgIChoZXgpCQlUb3lvdGEgVGVjaG5pY2FsIERldmVsb3BtZW50IENvcnBvcmF0aW9uCi0wMDBBQUIgICAgIChiYXNlIDE2KQkJVG95b3RhIFRlY2huaWNhbCBEZXZlbG9wbWVudCBDb3Jwb3JhdGlvbgotCQkJCTEtMjEsIEltYWUsIEhhbmFtb3RvLWNobwotCQkJCVRveW90YSBBaWNoaSA0NzAtMDMzNAotCQkJCUpBUEFOCi0KLTAwLTBBLUFDICAgKGhleCkJCVRlcnJhVGVjIEVsZWN0cm9uaWMgR21iSAotMDAwQUFDICAgICAoYmFzZSAxNikJCVRlcnJhVGVjIEVsZWN0cm9uaWMgR21iSAotCQkJCUhlcnJlbnBmYWQgMzgKLQkJCQlOZXR0ZXRhbCBOUlcgNDEzMzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLUFEICAgKGhleCkJCVN0YXJnYW1lcyBDb3Jwb3JhdGlvbgotMDAwQUFEICAgICAoYmFzZSAxNikJCVN0YXJnYW1lcyBDb3Jwb3JhdGlvbgotCQkJCTEzIFNoZXJpZGFuIENsb3NlCi0JCQkJTWlscGVycmEgTlNXIDIwMzEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtQUUgICAoaGV4KQkJUm9zZW1vdW50IFByb2Nlc3MgQW5hbHl0aWNhbAotMDAwQUFFICAgICAoYmFzZSAxNikJCVJvc2Vtb3VudCBQcm9jZXNzIEFuYWx5dGljYWwKLQkJCQk2NTczQSBDb2NocmFuIFJkLgotCQkJCVNvbG9uIE9oaW8gNDQxMzktMzkyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQUYgICAoaGV4KQkJUGlwYWwgU3lzdGVtcwotMDAwQUFGICAgICAoYmFzZSAxNikJCVBpcGFsIFN5c3RlbXMKLQkJCQkyOTAzIEJ1bmtlciBIaWxsIExhbmUKLQkJCQlTdWl0ZSAyMTAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQjAgICAoaGV4KQkJTE9ZVEVDIGVsZWN0cm9uaWNzIEdtYkgKLTAwMEFCMCAgICAgKGJhc2UgMTYpCQlMT1lURUMgZWxlY3Ryb25pY3MgR21iSAotCQkJCVN0b2x6ZW50aGFsZXJnYXNzZSAyNC8zCi0JCQkJVmllbm5hIFdpZW4gMTA4MAotCQkJCUFVU1RSSUEKLQotMDAtMEEtQjEgICAoaGV4KQkJR0VORVRFQyBDb3Jwb3JhdGlvbgotMDAwQUIxICAgICAoYmFzZSAxNikJCUdFTkVURUMgQ29ycG9yYXRpb24KLQkJCQlOaXNoaWt1cmEtTEsgQmxkLgotCQkJCVRvbWloaXNhLWNob3UgMTYtNgotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2Mi0wMDY3Ci0JCQkJSkFQQU4KLQotMDAtMEEtQjIgICAoaGV4KQkJRnJlc25lbCBXaXJlbGVzcyBTeXN0ZW1zCi0wMDBBQjIgICAgIChiYXNlIDE2KQkJRnJlc25lbCBXaXJlbGVzcyBTeXN0ZW1zCi0JCQkJMTMzMyBHYXRld2F5IERyaXZlCi0JCQkJU3VpdGUgMTAwNwotCQkJCU1lbGJvdXJuZSBGTCAzMjkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQjMgICAoaGV4KQkJRmEuIEdJUkEKLTAwMEFCMyAgICAgKGJhc2UgMTYpCQlGYS4gR0lSQQotCQkJCURhaGxpZW5zdHJh32UKLQkJCQlSYWRldm9ybXdhbGQgTm9yZHJoZWluLVdlc3RmYWxlbiA0MjQ3NwotCQkJCUdFUk1BTlkKLQotMDAtMEEtQjQgICAoaGV4KQkJRVRJQyBUZWxlY29tbXVuaWNhdGlvbnMKLTAwMEFCNCAgICAgKGJhc2UgMTYpCQlFVElDIFRlbGVjb21tdW5pY2F0aW9ucwotCQkJCTEzLCBjaGVtaW4gZHUgdmlldXgtY2hlbmUgWklSU1QKLQkJCQlNRVlMQU4gSXNlcmUgMzgyNDAKLQkJCQlGUkFOQ0UKLQotMDAtMEEtQjUgICAoaGV4KQkJRGlnaXRhbCBFbGVjdHJvbmljIE5ldHdvcmsKLTAwMEFCNSAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIEVsZWN0cm9uaWMgTmV0d29yawotCQkJCTggcnVlIGR1IHNhY3LpIGNvZXVyCi0JCQkJU2FpbnQgTGF1cmVudCBzdXIgU2V2cmUgVmVuZGVlIDg1MjkwCi0JCQkJRlJBTkNFCi0KLTAwLTBBLUI2ICAgKGhleCkJCUNPTVBVTkVUSVgsIElOQwotMDAwQUI2ICAgICAoYmFzZSAxNikJCUNPTVBVTkVUSVgsIElOQwotCQkJCTI0MjAgTU9TU0lERSBCTFZELgotCQkJCU1PTlJPRVZJTExFIFBBIDE1MTQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1CNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBQjcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1COCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBQjggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENhIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1COSAgIChoZXgpCQlBc3RlcmEgVGVjaG5vbG9naWVzIENvcnAuCi0wMDBBQjkgICAgIChiYXNlIDE2KQkJQXN0ZXJhIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCSAyMzgwIFdhdmVybGV5IFN0cmVldAotCQkJCVBhbG8gQWx0byBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQkEgICAoaGV4KQkJQXJjb24gVGVjaG5vbG9neSBMaW1pdGVkCi0wMDBBQkEgICAgIChiYXNlIDE2KQkJQXJjb24gVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJUm0uIDM3MTEtMTIsIDM3L0YuLCBDYWJsZSBUViBUb3dlciAsCi0JCQkJIDkgSG9pIFNoaW5nIFJkLiwgVHN1ZW4gV2FuICwgTi5UCi0JCQkJSG9uZyBLb25nICAKLQkJCQlDSElOQQotCi0wMC0wQS1CQiAgIChoZXgpCQlUYWl3YW4gU2Vjb20gQ28sLiBMdGQKLTAwMEFCQiAgICAgKGJhc2UgMTYpCQlUYWl3YW4gU2Vjb20gQ28sLiBMdGQKLQkJCQkxM0YsIDEwOCwgU2VjMSwgU2hpbi1UYWkgNXRoIFJvYWQKLQkJCQlIc2ktQ2hpaCBUYWlwZWkgQ291bnR5IDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtQkMgICAoaGV4KQkJU2VhYnJpZGdlIEx0ZC4KLTAwMEFCQyAgICAgKGJhc2UgMTYpCQlTZWFicmlkZ2UgTHRkLgotCQkJCTMgSGFuYWdhciBTdC4KLQkJCQlOZXZlLU5lZW1hbiBCJwotCQkJCUhvZC1IYXNoYXJvbiBJc3JhZWwgNDUyNDEKLQkJCQlJU1JBRUwKLQotMDAtMEEtQkQgICAoaGV4KQkJUnVwcHJlY2h0ICYgUGF0YXNobmljayBDby4KLTAwMEFCRCAgICAgKGJhc2UgMTYpCQlSdXBwcmVjaHQgJiBQYXRhc2huaWNrIENvLgotCQkJCTI1IENvcnBvcmF0ZSBDaXJjbGUKLQkJCQlBbGJhbnkgTlkgMTIyMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUJFICAgKGhleCkJCU9QTkVUIFRlY2hub2xvZ2llcyBDTy4sIExURC4KLTAwMEFCRSAgICAgKGJhc2UgMTYpCQlPUE5FVCBUZWNobm9sb2dpZXMgQ08uLCBMVEQuCi0JCQkJM0YsIE5PLjUsIEluZHVzdHJ5IEUuIFJkLiBJWCwgU2NpZW5jZS1CYQotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtQkYgICAoaGV4KQkJSElST1RBIFNTCi0wMDBBQkYgICAgIChiYXNlIDE2KQkJSElST1RBIFNTCi0JCQkJTWF0dWthd2EtS291Z3lvdWRhbmNoaQotCQkJCVN1emFrYS1zaGkgTmFnYW5vIDM4Mi0wMDA1Ci0JCQkJSkFQQU4KLQotMDAtMEEtQzAgICAoaGV4KQkJRnV5b2ggVmlkZW8gSW5kdXN0cnkgQ08uLCBMVEQuCi0wMDBBQzAgICAgIChiYXNlIDE2KQkJRnV5b2ggVmlkZW8gSW5kdXN0cnkgQ08uLCBMVEQuCi0JCQkJNy0yNSBIaWdhc2hpIEtpYm9nYW9rYQotCQkJCUFzYWhpLWt1Ci0JCQkJWW9rb2hhbWEtc2hpIEthbmFnYXdhLWtlbiAyNDYtMDAwOAotCQkJCUpBUEFOCi0KLTAwLTBBLUMxICAgKGhleCkJCUZ1dHVyZXRlbAotMDAwQUMxICAgICAoYmFzZSAxNikJCUZ1dHVyZXRlbAotCQkJCTIxNTgwIFN0ZXZlbnMgQ3JlZWsgQmx2ZCwgU3VpdGUgMjA4Ci0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1DMiAgIChoZXgpCQlGaWJlckhvbWUgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENPLixMVEQKLTAwMEFDMiAgICAgKGJhc2UgMTYpCQlGaWJlckhvbWUgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENPLixMVEQKLQkJCQlOby44OCBZb3VLZXl1YW4gUm9hZCxIb25nc2hhbiBEaXN0cmljdCxXCi0JCQkJV3VoYW4gSHViZWkgNDMwMDc0Ci0JCQkJQ0hJTkEKLQotMDAtMEEtQzMgICAoaGV4KQkJZU0gVGVjaG5pY3MgQ28uLCBMdGQuCi0wMDBBQzMgICAgIChiYXNlIDE2KQkJZU0gVGVjaG5pY3MgQ28uLCBMdGQuCi0JCQkJN0YuLCBJVCBWZW50dXJlIFRvd2VyLiwgNzgsCi0JCQkJR2FyYWtib24tRG9uZywgU29uZ3BhLUd1Ci0JCQkJU2VvdWwgIDEzOC04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtQzQgICAoaGV4KQkJRGFld29vIFRlbGV0ZWNoIENvLiwgTHRkCi0wMDBBQzQgICAgIChiYXNlIDE2KQkJRGFld29vIFRlbGV0ZWNoIENvLiwgTHRkCi0JCQkJMjY1LTMsIFNlb2h5ZW9uLCBCdW5kYW5nCi0JCQkJU2VvbmduYW0gR3llb25nZ2kgNDYzLTc2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS1DNSAgIChoZXgpCQlDb2xvciBLaW5ldGljcwotMDAwQUM1ICAgICAoYmFzZSAxNikJCUNvbG9yIEtpbmV0aWNzCi0JCQkJMTAgTWlsayBTdHJlZXQKLQkJCQlTdWl0ZSAxMTAwCi0JCQkJQm9zdG9uIE1hc2FjaHVzZXR0cyAwMjEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQzYgICAoaGV4KQkJQ2V0ZXJ1cyBOZXR3b3JrcywgSW5jLgotMDAwQUM2ICAgICAoYmFzZSAxNikJCUNldGVydXMgTmV0d29ya3MsIEluYy4KLQkJCQlQLk8uIEJveCAyNTAzOTEKLQkJCQlQbGFubyBUWCA3NTAyNS0wMzkxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1DNyAgIChoZXgpCQlVbmljYXRpb24gR3JvdXAKLTAwMEFDNyAgICAgKGJhc2UgMTYpCQlVbmljYXRpb24gR3JvdXAKLQkJCQkzRi4sIE5vLiA2LCBXdS1LdW5nIDVSZC4sIEhzaW5jaHVhbmcgQ2l0Ci0JCQkJVGFpcGVpICAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUM4ICAgKGhleCkJCVpQU1lTIENPLixMVEQuIChQbGFubmluZyZNYW5hZ2VtZW50KQotMDAwQUM4ICAgICAoYmFzZSAxNikJCVpQU1lTIENPLixMVEQuIChQbGFubmluZyZNYW5hZ2VtZW50KQotCQkJCTEwNiBBY2UgVGVjaG5vIFRvd2VyMQotCQkJCTE5Ny0xNyBLdXJvLURvbmcKLQkJCQlTZW91bCAgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS1DOSAgIChoZXgpCQlaYW1iZWVsIEluYwotMDAwQUM5ICAgICAoYmFzZSAxNikJCVphbWJlZWwgSW5jCi0JCQkJNDU3MDAgTm9ydGhwb3J0IExvb3AgRWFzdAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUNBICAgKGhleCkJCVlPS09ZQU1BIFNIT0tBSSBDTy4sTHRkLgotMDAwQUNBICAgICAoYmFzZSAxNikJCVlPS09ZQU1BIFNIT0tBSSBDTy4sTHRkLgotCQkJCTYtOTYgTWF0c3VtdXJhCi0JCQkJS2FuYXphd2EgSXNoaWthd2EgOTIwLTAzNDgKLQkJCQlKQVBBTgotCi0wMC0wQS1DQiAgIChoZXgpCQlYUEFLIE1TQSBHcm91cAotMDAwQUNCICAgICAoYmFzZSAxNikJCVhQQUsgTVNBIEdyb3VwCi0JCQkJQ2FyZSBvZjogTW9sZXggRmliZXIgT3B0aWNzCi0JCQkJNTIyNCBLYXRyaW5lIEF2ZW51ZQotCQkJCURvd25lcnMgR3JvdmUgSUwgNjA1MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUNDICAgKGhleCkJCVdpbm5vdyBOZXR3b3JrcywgSW5jLgotMDAwQUNDICAgICAoYmFzZSAxNikJCVdpbm5vdyBOZXR3b3JrcywgSW5jLgotCQkJCTcwMSBFbWVyc29uIFJvYWQKLQkJCQlTdWl0ZSAyNDQKLQkJCQlTdC4gTG91aXMgTU8gNjMxNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUNEICAgKGhleCkJCVN1bnJpY2ggVGVjaG5vbG9neSBMaW1pdGVkCi0wMDBBQ0QgICAgIChiYXNlIDE2KQkJU3VucmljaCBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlVbml0IDEzMDEsIEVhc3Rlcm4gQ2VudHJlLCAxMDY1IEtpbmcncyBSCi0JCQkJUXVhcnJ5IEJheSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBBLUNFICAgKGhleCkJCVJBRElBTlRFQ0gsIElOQy4KLTAwMEFDRSAgICAgKGJhc2UgMTYpCQlSQURJQU5URUNILCBJTkMuCi0JCQkJMi0xLCBJTkRVU1RSWSBFQVNUIFJELiAxLCBTQ0lFTkNFLUJBU0VECi0JCQkJSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTiBDSFUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtQ0YgICAoaGV4KQkJUFJPVklERU8gTXVsdGltZWRpYSBDby4gTHRkLgotMDAwQUNGICAgICAoYmFzZSAxNikJCVBST1ZJREVPIE11bHRpbWVkaWEgQ28uIEx0ZC4KLQkJCQk1RiwgTk8uOCwgQUxMRVkgMiwgVFpVLVdFSSBMQU5FLAotCQkJCUNIVU5HIENIRU5HIFJELiwKLQkJCQlIU0lOIFRJRU4gQ0lUWSBUQUlQRUkgSFNJRU4sIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtRDAgICAoaGV4KQkJTmlpZ2F0YSBEZXZlbG9tZW50IENlbnRlciwgIEYuSS5ULiBDby4sIEx0ZC4KLTAwMEFEMCAgICAgKGJhc2UgMTYpCQlOaWlnYXRhIERldmVsb21lbnQgQ2VudGVyLCAgRi5JLlQuIENvLiwgTHRkLgotCQkJCUFrYW5lLU5paWdhdGEgQnVpbGRpbmcgMkYKLQkJCQkxLTYtNyBBdGFnbwotCQkJCU5paWdhdGEgTmlpZ2F0YSBQcmVmZWN0dXJlIDk1MC0wOTQ0Ci0JCQkJSkFQQU4KLQotMDAtMEEtRDEgICAoaGV4KQkJTVdTCi0wMDBBRDEgICAgIChiYXNlIDE2KQkJTVdTCi0JCQkJMTIsIHF1YWkgUGFwYWNpbm8KLQkJCQlOSUNFICAwNjMwMAotCQkJCUZSQU5DRQotCi0wMC0wQS1EMiAgIChoZXgpCQlKRVBJQ08gQ29ycG9yYXRpb24KLTAwMEFEMiAgICAgKGJhc2UgMTYpCQlKRVBJQ08gQ29ycG9yYXRpb24KLQkJCQlOaXNoaS1zaGluanl1a3UyLTctMQotCQkJCURhaS1pY2hpIFNlaW1laSBCTERHLgotCQkJCVNoaW5qeXVrdS1rdSBUb2t5byAxNjMtMDcyOQotCQkJCUpBUEFOCi0KLTAwLTBBLUQzICAgKGhleCkJCUlOSVRFQ0ggQ28uLCBMdGQKLTAwMEFEMyAgICAgKGJhc2UgMTYpCQlJTklURUNIIENvLiwgTHRkCi0JCQkJM0YsIElOSVRFQ0ggQmxkZywgNTU5LTUsCi0JCQkJR2VveW8tRG9uZywgU29uZ3BhLUd1Ci0JCQkJU2VvdWwgU29uZ3BhIDEzOC04MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtRDQgICAoaGV4KQkJQ29yZUJlbGwgU3lzdGVtcyBJbmMuCi0wMDBBRDQgICAgIChiYXNlIDE2KQkJQ29yZUJlbGwgU3lzdGVtcyBJbmMuCi0JCQkJSFRWQyAyMzE3IEtBSVNUCi0JCQkJMzczLTEgR3VzZW9uZy1kb25nCi0JCQkJWXVzZW9uZy1HdSBEYWVqZW9uIDMwNS03MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtRDUgICAoaGV4KQkJQnJhaW5jaGlsZCBFbGVjdHJvbmljIENvLiwgTHRkLgotMDAwQUQ1ICAgICAoYmFzZSAxNikJCUJyYWluY2hpbGQgRWxlY3Ryb25pYyBDby4sIEx0ZC4KLQkJCQlOby4yMDksIENodW5nIFlhbmcgUmQuLAotCQkJCU5hbiBLYW5nIERpc3RyaWN0LAotCQkJCVRhaXBlaSAgMTE1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS1ENiAgIChoZXgpCQlCZWFtUmVhY2ggTmV0d29ya3MKLTAwMEFENiAgICAgKGJhc2UgMTYpCQlCZWFtUmVhY2ggTmV0d29ya3MKLQkJCQk3NTUgTm9ydGggTWF0aGlsZGEgQXZlCi0JCQkJU3Vubnl2YWxlIENhbGlmb3JuaWEgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUQ3ICAgKGhleCkJCU9yaWdpbiBFTEVDVFJJQyBDTy4sTFRELgotMDAwQUQ3ICAgICAoYmFzZSAxNikJCU9yaWdpbiBFTEVDVFJJQyBDTy4sTFRELgotCQkJCTEtMTgtMQotCQkJCVRBS0FEQQotCQkJCVRPU0hJTUEgV0FSRCBUT0tZTyBNRVQuIDE3MS04NTU1Ci0JCQkJSkFQQU4KLQotMDAtMEEtRDggICAoaGV4KQkJSVBDc2VydiBUZWNobm9sb2d5IENvcnAuCi0wMDBBRDggICAgIChiYXNlIDE2KQkJSVBDc2VydiBUZWNobm9sb2d5IENvcnAuCi0JCQkJNmYsTm8uMTA3LFBhbi1Ic2luIFJkCi0JCQkJUGFuLUNoaWFvIFRhaXBlaSAyMjA0NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtRDkgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTAwMEFEOSAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OAotCQkJCVNXRURFTgotCi0wMC0wQS1EQSAgIChoZXgpCQlWaW5kaWNhdG9yIFRlY2hub2xvZ2llcwotMDAwQURBICAgICAoYmFzZSAxNikJCVZpbmRpY2F0b3IgVGVjaG5vbG9naWVzCi0JCQkJNTMwNyBJbmR1c3RyaWFsIE9ha3MgQmx2ZC4KLQkJCQlTdWl0ZSAxMzAKLQkJCQlBdXN0aW4gVGV4YXMgNzg3MzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLURCICAgKGhleCkJCVNreVBpbG90IE5ldHdvcmssIEluYwotMDAwQURCICAgICAoYmFzZSAxNikJCVNreVBpbG90IE5ldHdvcmssIEluYwotCQkJCTEzMDEgU2hvcmV3YXkgUm9hZAotCQkJCUJlbG1vbnQgQ0EgOTQwMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLURDICAgKGhleCkJCVJ1Z2dlZENvbSBJbmMuCi0wMDBBREMgICAgIChiYXNlIDE2KQkJUnVnZ2VkQ29tIEluYy4KLQkJCQkzMCBXaGl0bW9yZSBSb2FkCi0JCQkJV29vZGJyaWRnZSBPbnRhcmlvIEw0TCA3WjQKLQkJCQlDQU5BREEKLQotMDAtMEEtREQgICAoaGV4KQkJQWxsd29yeCBDb3JwLgotMDAwQUREICAgICAoYmFzZSAxNikJCUFsbHdvcnggQ29ycC4KLQkJCQkzMDAgTWFpbiBTdHJlZXQKLQkJCQlTdWl0ZSAxMQotCQkJCUVhc3QgUm9jaGVzdGVyIE5ZIDE0NDQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1ERSAgIChoZXgpCQlIYXBweSBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotMDAwQURFICAgICAoYmFzZSAxNikJCUhhcHB5IENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0JCQkJNDItMTEgV29uTWktRG9uZwotCQkJCVdvbk1pLUd1Ci0JCQkJQnVjaGVvbi1DaXR5IEt5dW5nR2ktRG8gNDIwLTExMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS1ERiAgIChoZXgpCQlHZW5udW0gQ29ycG9yYXRpb24KLTAwMEFERiAgICAgKGJhc2UgMTYpCQlHZW5udW0gQ29ycG9yYXRpb24KLQkJCQlQLk8gQm94IDQ4OQotCQkJCVN0YXRpb24gQQotCQkJCUJ1cmxpbmd0b24gT250YXJpbyBMN1IgM1kzCi0JCQkJQ0FOQURBCi0KLTAwLTBBLUUwICAgKGhleCkJCUZ1aml0c3UgU29mdGVrCi0wMDBBRTAgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBTb2Z0ZWsKLQkJCQkxMjUwIEVhc3QgQXJxdWVzIEF2ZQotCQkJCU1TIDcyOQotCQkJCVN1bm55dmFsZSBDYSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRTEgICAoaGV4KQkJRUcgVGVjaG5vbG9neQotMDAwQUUxICAgICAoYmFzZSAxNikJCUVHIFRlY2hub2xvZ3kKLQkJCQkyNTAgMTV0aCBTdHJlZXQKLQkJCQlTdWl0ZSA0MDA3Ci0JCQkJQXRsYW50YSBHQSAzMDMxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRTIgICAoaGV4KQkJQmluYXRvbmUgRWxlY3Ryb25pY3MgSW50ZXJuYXRpb25hbCwgTHRkCi0wMDBBRTIgICAgIChiYXNlIDE2KQkJQmluYXRvbmUgRWxlY3Ryb25pY3MgSW50ZXJuYXRpb25hbCwgTHRkCi0JCQkJRmxvb3IgMjNBLCA5IERlcyBWb2V1eCBSb2FkIFdlc3QKLQkJCQlIb25nIEtvbmcgQ2hpbmEgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBBLUUzICAgKGhleCkJCVlBTkcgTUVJIFRFQ0hOT0xPR1kgQ08uLCBMVEQKLTAwMEFFMyAgICAgKGJhc2UgMTYpCQlZQU5HIE1FSSBURUNITk9MT0dZIENPLiwgTFRECi0JCQkJMjEsIEFsbGV5IDEsIExhbmUgMzQyCi0JCQkJRnVkZSAxc3QgUm9hZCwgU2hpanIgQ2l0eQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS1FNCAgIChoZXgpCQlXaXN0cm9uIENvcnAuCi0wMDBBRTQgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBDb3JwLgotCQkJCTIxRiwgTm8uIDg4LCBTZWN0aW9uIDEsIEhzaW4gVGFpICBXdSBSZC4KLQkJCQlIc2ljaGloCi0JCQkJVGFpcGVpICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUU1ICAgKGhleCkJCVNjb3R0Q2FyZSBDb3Jwb3JhdGlvbgotMDAwQUU1ICAgICAoYmFzZSAxNikJCVNjb3R0Q2FyZSBDb3Jwb3JhdGlvbgotCQkJCTQ3OTEgV2VzdCAxNTB0aCBTdHJlZXQKLQkJCQlDbGV2ZWxhbmQgT2hpbyA0NDEzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRTYgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0wMDBBRTYgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0JCQkJTm8uMjIsIEFsbGV5IDM4LCBMYW5lIDkxLCBTZWMuIDEsIE5laSBIdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS1FNyAgIChoZXgpCQlFTElPUCBTLkEuCi0wMDBBRTcgICAgIChiYXNlIDE2KQkJRUxJT1AgUy5BLgotCQkJCUF2ZW5pZGEgZGUgTWFub3RlcmFzLCAzMAotCQkJCU1hZHJpZCAgRS0yODA1MAotCQkJCVNQQUlOCi0KLTAwLTBBLUU4ICAgKGhleCkJCUNhdGhheSBSb3h1cyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLiBMVEQKLTAwMEFFOCAgICAgKGJhc2UgMTYpCQlDYXRoYXkgUm94dXMgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4gTFRECi0JCQkJRnVodWEgbWFuc2lvbiBidWlsZGluZyBBL0IgNEYKLQkJCQlkb25nY2hlbmcgZGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwMjcKLQkJCQlDSElOQQotCi0wMC0wQS1FOSAgIChoZXgpCQlBaXJWYXN0IFRlY2hub2xvZ3kgSW5jLgotMDAwQUU5ICAgICAoYmFzZSAxNikJCUFpclZhc3QgVGVjaG5vbG9neSBJbmMuCi0JCQkJM0YuLTUsIE5vLjYsIExhbmUgNjA5LCBTZWMuIDUsIENob25nc2luIFJkLgotCQkJCVNhbmNob25nIENpdHkgVGFpcGVpIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtRUEgICAoaGV4KQkJQURBTSBFTEVLVFJPTklLIExURC5TVEkuCi0wMDBBRUEgICAgIChiYXNlIDE2KQkJQURBTSBFTEVLVFJPTklLIExURC5TVEkuCi0JCQkJVVpVTkFZTkEgQ0FELiBDRUxFTksgU09LLiBOTzoxIMdBS01BSyAvCi0JCQkJSVNUQU5CVUwgIDgxMjYwCi0JCQkJVFVSS0VZCi0KLTAwLTBBLUVCICAgKGhleCkJCVNoZW56aGVuIFRwLUxpbmsgVGVjaG5vbG9neSBDbzsgTHRkLgotMDAwQUVCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFRwLUxpbmsgVGVjaG5vbG9neSBDbzsgTHRkLgotCQkJCUhpLVRlY2ggUGFyayBSMS1CMwotCQkJCTMvRiwgQmxkZywgIFNoZW5uYW4gUm9hZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0wQS1FQyAgIChoZXgpCQlLb2F0c3UgR2FzIEtvZ3lvIENvLiwgTHRkLgotMDAwQUVDICAgICAoYmFzZSAxNikJCUtvYXRzdSBHYXMgS29neW8gQ28uLCBMdGQuCi0JCQkJMS01LCBEb3lhbWEtY2hvLCBLaXRhLWt1LCBPc2FrYQotCQkJCU9zYWthICA1MzAtODQxMQotCQkJCUpBUEFOCi0KLTAwLTBBLUVEICAgKGhleCkJCUhBUlRJTkcgU3lzdGVtcyBHbWJIICYgQ28gS0cKLTAwMEFFRCAgICAgKGJhc2UgMTYpCQlIQVJUSU5HIFN5c3RlbXMgR21iSCAmIENvIEtHCi0JCQkJV2lsaGVsbSBIYXJ0aW5nIFN0ci4xCi0JCQkJRXNwZWxrYW1wIE5SVy9PV0wgMzIzMzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLUVFICAgKGhleCkJCUdDRCBIYXJkLSAmIFNvZnR3YXJlIEdtYkgKLTAwMEFFRSAgICAgKGJhc2UgMTYpCQlHQ0QgSGFyZC0gJiBTb2Z0d2FyZSBHbWJICi0JCQkJSGVua2VzdHIuIDc5Ci0JCQkJRXJsYW5nZW4gQmF5ZXJuIDkxMDUyCi0JCQkJR0VSTUFOWQotCi0wMC0wQS1FRiAgIChoZXgpCQlPVFJVTSBBU0EKLTAwMEFFRiAgICAgKGJhc2UgMTYpCQlPVFJVTSBBU0EKLQkJCQlCcmF0dGVrbGVpdgotCQkJCUbmcnZpayAgTi00ODE4Ci0JCQkJTk9SV0FZCi0KLTAwLTBBLUYwICAgKGhleCkJCVNISU4tT0ggRUxFQ1RST05JQ1MgQ08uLCBMVEQuIFImRAotMDAwQUYwICAgICAoYmFzZSAxNikJCVNISU4tT0ggRUxFQ1RST05JQ1MgQ08uLCBMVEQuIFImRAotCQkJCSM3MjktNSwgQm9ub2gtRG9uZywgQW5zYW4tQ2l0eSwgS3l1bmdnaS0KLQkJCQlTSElOLU9IIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCUFuc2FuLUNpdHkgS3l1bmdnaS1EbyA0MjUtMTgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLUYxICAgKGhleCkJCUNsYXJpdHkgRGVzaWduLCBJbmMuCi0wMDBBRjEgICAgIChiYXNlIDE2KQkJQ2xhcml0eSBEZXNpZ24sIEluYy4KLQkJCQkxMzAyOSBEYW5pZWxzb24gU3RyZWV0Ci0JCQkJU3VpdGUgMTAwCi0JCQkJUG93YXkgQ0EgOTIwNjQtODgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRjIgICAoaGV4KQkJTmVvQXhpb20gQ29ycC4KLTAwMEFGMiAgICAgKGJhc2UgMTYpCQlOZW9BeGlvbSBDb3JwLgotCQkJCTE1MjAgTW9udGFndWUgRXhwcmVzc3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBRjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBRjQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GNSAgIChoZXgpCQlBaXJnbyBOZXR3b3JrcywgSW5jLgotMDAwQUY1ICAgICAoYmFzZSAxNikJCUFpcmdvIE5ldHdvcmtzLCBJbmMuCi0JCQkJOTAwIEFyYXN0cmFkZXJvIFJkCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GNiAgIChoZXgpCQlFbWVyc29uIENsaW1hdGUgVGVjaG5vbG9naWVzIFJldGFpbCBTb2x1dGlvbnMsIEluYy4KLTAwMEFGNiAgICAgKGJhc2UgMTYpCQlFbWVyc29uIENsaW1hdGUgVGVjaG5vbG9naWVzIFJldGFpbCBTb2x1dGlvbnMsIEluYy4KLQkJCQkxNjQwIEFpcnBvcnQgUmQKLQkJCQlTdWl0ZSAxMDQKLQkJCQlLZW5uZXNhdyBHQSAzMDE0NC03MDM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GNyAgIChoZXgpCQlCcm9hZGNvbSBDb3JwLgotMDAwQUY3ICAgICAoYmFzZSAxNikJCUJyb2FkY29tIENvcnAuCi0JCQkJMTYyMTUgQWx0b24gUGFya3dheQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRjggICAoaGV4KQkJQW1lcmljYW4gVGVsZWNhcmUgSW5jLgotMDAwQUY4ICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIFRlbGVjYXJlIEluYy4KLQkJCQk3NjQwIEdvbGRlbiBUcmlhbmdsZSBEcml2ZQotCQkJCUVkZW4gUHJhaXJpZSBNTiA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRjkgICAoaGV4KQkJSGlDb25uZWN0LCBJbmMuCi0wMDBBRjkgICAgIChiYXNlIDE2KQkJSGlDb25uZWN0LCBJbmMuCi0JCQkJUm0gIzkwNiwgSGFrc2FuIENvc21vc3RlbCwgMTEwCi0JCQkJS3dhbmdqYW5nLURvbmcsIEt3YW5namluLUd1LCBTZW91bCwgS29yZQotCQkJCUt3YW5namluLUd1IFNlb3VsIDE0My04MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtRkEgICAoaGV4KQkJVHJhdmVyc2UgVGVjaG5vbG9naWVzIEF1c3RyYWxpYQotMDAwQUZBICAgICAoYmFzZSAxNikJCVRyYXZlcnNlIFRlY2hub2xvZ2llcyBBdXN0cmFsaWEKLQkJCQlVbml0IDEzLCAyNDAgU3lkbmV5IFJkCi0JCQkJQ29idXJnIFZpY3RvcmlhIDMwNTgKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtRkIgICAoaGV4KQkJQW1icmkgTGltaXRlZAotMDAwQUZCICAgICAoYmFzZSAxNikJCUFtYnJpIExpbWl0ZWQKLQkJCQkxMjYgR3JldmlsbGUgU3RyZWV0Ci0JCQkJQ2hhdHN3b29kIE5TVyAyMDY3Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTBBLUZDICAgKGhleCkJCUNvcmUgVGVjIENvbW11bmljYXRpb25zLCBMTEMKLTAwMEFGQyAgICAgKGJhc2UgMTYpCQlDb3JlIFRlYyBDb21tdW5pY2F0aW9ucywgTExDCi0JCQkJNDkgTGVhdmVud29ydGggU3RyZWV0Ci0JCQkJU3VpdGUgMjAwCi0JCQkJV2F0ZXJidXJ5IENUIDA2NzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GRCAgIChoZXgpCQlWaWtpbmcgRWxlY3Ryb25pYyBTZXJ2aWNlcwotMDAwQUZEICAgICAoYmFzZSAxNikJCVZpa2luZyBFbGVjdHJvbmljIFNlcnZpY2VzCi0JCQkJNjIwIEFsbGVuZGFsZSBSZAotCQkJCVN1aXRlIDE3NQotCQkJCUtpbmcgb2YgUHJ1c3NpYSBQQSAxOTQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRkUgICAoaGV4KQkJTm92YVBhbCBMdGQKLTAwMEFGRSAgICAgKGJhc2UgMTYpCQlOb3ZhUGFsIEx0ZAotCQkJCUZsb29yIDYKLQkJCQk1OCBVeGJyaWRnZSBSb2FkCi0JCQkJRWFsaW5nIExvbmRvbiBXNSAyU1QKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS1GRiAgIChoZXgpCQlLaWxjaGhlcnIgRWxla3Ryb25payBBRwotMDAwQUZGICAgICAoYmFzZSAxNikJCUtpbGNoaGVyciBFbGVrdHJvbmlrIEFHCi0JCQkJQWVzY2hpc3RyYXNzZSAyNQotCQkJCU11ZW5zaW5nZW4gQkUgMzExMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBCLTAwICAgKGhleCkJCUZVSklBTiBTVEFSVCBDT01QVVRFUiBFUVVJUE1FTlQgQ08uLExURAotMDAwQjAwICAgICAoYmFzZSAxNikJCUZVSklBTiBTVEFSVCBDT01QVVRFUiBFUVVJUE1FTlQgQ08uLExURAotCQkJCUhPTkcgU0hBTiBZVUFOIFJPQUQgTk8uNjggSE9OR1NIQU4sR1VMT1UKLQkJCQlGVVpIT1UgRlVKSUFOIDM1MDAwMgotCQkJCUNISU5BCi0KLTAwLTBCLTAxICAgKGhleCkJCURBSUlDSEkgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDBCMDEgICAgIChiYXNlIDE2KQkJREFJSUNISSBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQkxLTExLTEzCi0JCQkJSGl0b3RzdXlhIEFkYWNoaS1rdSBUb2t5byAxMjEtODYzOQotCQkJCUpBUEFOCi0KLTAwLTBCLTAyICAgKGhleCkJCURhbGxtZWllciBlbGVjdHJvbmljCi0wMDBCMDIgICAgIChiYXNlIDE2KQkJRGFsbG1laWVyIGVsZWN0cm9uaWMKLQkJCQlXdWVyemJ1cmdlcnN0ci41Ci0JCQkJUmVnZW5zYnVyZyBCYXZhcmlhIDkzMDU5Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi0wMyAgIChoZXgpCQlUYWVrd2FuZyBJbmR1c3RyaWFsIENvLiwgTHRkCi0wMDBCMDMgICAgIChiYXNlIDE2KQkJVGFla3dhbmcgSW5kdXN0cmlhbCBDby4sIEx0ZAotCQkJCSMxOTEtMSwgQW55YW5nLTdEb25nLCBNYW5hbi1HdQotCQkJCUFueWFuZy1TaSBTb3V0aCBLb3JlYSA0MzAtMDE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTA0ICAgKGhleCkJCVZvbGt0ZWsgQ29ycG9yYXRpb24KLTAwMEIwNCAgICAgKGJhc2UgMTYpCQlWb2xrdGVrIENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOby4xOTIsIExpYW4tQ2hhbmcgUm9hZCwgQ2hhbmctSG8KLQkJCQlUYWlwZWkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItMDUgICAoaGV4KQkJUGFjaWZpYyBCcm9hZGJhbmQgTmV0d29ya3MKLTAwMEIwNSAgICAgKGJhc2UgMTYpCQlQYWNpZmljIEJyb2FkYmFuZCBOZXR3b3JrcwotCQkJCTgtMTAgS2VpdGggQ2FtcGJlbGwgQ291cnQKLQkJCQlTQ09SRVNCWSBWSUMgMzE3OQotCQkJCUFVU1RSQUxJQQotCi0wMC0wQi0wNiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAwQjA2ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMDcgICAoaGV4KQkJVm94cGF0aCBOZXR3b3JrcwotMDAwQjA3ICAgICAoYmFzZSAxNikJCVZveHBhdGggTmV0d29ya3MKLQkJCQk3NjAwQiBDYXBpdGFsIG9mIFRleGFzIEhpZ2h3YXkgIC0gTm9ydGgKLQkJCQlTdWl0ZSAyMjAKLQkJCQlBdXN0aW4gVGV4YXMgNzg3MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTA4ICAgKGhleCkJCVBpbGxhciBEYXRhIFN5c3RlbXMKLTAwMEIwOCAgICAgKGJhc2UgMTYpCQlQaWxsYXIgRGF0YSBTeXN0ZW1zCi0JCQkJMTM3MSBNY0NhcnRoeSBCbHZkLgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0wOSAgIChoZXgpCQlJZm91bmRyeSBTeXN0ZW1zIFNpbmdhcG9yZQotMDAwQjA5ICAgICAoYmFzZSAxNikJCUlmb3VuZHJ5IFN5c3RlbXMgU2luZ2Fwb3JlCi0JCQkJQmxvY2sgMSwgVW5pdCAxMDFCLCBJbm5vdmF0aW9uIENlbnRyZSwgMQotCQkJCTYzNzcyMgotCQkJCVNJTkdBUE9SRQotCi0wMC0wQi0wQSAgIChoZXgpCQlkQm0gT3B0aWNzCi0wMDBCMEEgICAgIChiYXNlIDE2KQkJZEJtIE9wdGljcwotCQkJCTMwMCBTLiBQdWJsaWMgUm9hZAotCQkJCUxhZmF5ZXR0ZSBDb2xvcmFkbyA4MDAyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMEIgICAoaGV4KQkJQ29ycmVudCBDb3Jwb3JhdGlvbgotMDAwQjBCICAgICAoYmFzZSAxNikJCUNvcnJlbnQgQ29ycG9yYXRpb24KLQkJCQkxNzExIFcuIEdyZWVudHJlZSBEci4KLQkJCQlTdWl0ZSAyMDEKLQkJCQlUZW1wZSBBWiA4NTI4NC0yNzE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0wQyAgIChoZXgpCQlBZ2lsZSBTeXN0ZW1zIEluYy4KLTAwMEIwQyAgICAgKGJhc2UgMTYpCQlBZ2lsZSBTeXN0ZW1zIEluYy4KLQkJCQk1NzUgS3VtcGYgRHJpdmUKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yViAxSzMKLQkJCQlDQU5BREEKLQotMDAtMEItMEQgICAoaGV4KQkJQWlyMlUsIEluYy4KLTAwMEIwRCAgICAgKGJhc2UgMTYpCQlBaXIyVSwgSW5jLgotCQkJCU5vLiA1LTEgSW5ub3ZhdGlvbiBSZCAxLCBTY2llbmNlLWJhc2VkIFAKLQkJCQlIc2luLUNodSBUYWl3YW4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0wRSAgIChoZXgpCQlUcmFwZXplIE5ldHdvcmtzCi0wMDBCMEUgICAgIChiYXNlIDE2KQkJVHJhcGV6ZSBOZXR3b3JrcwotCQkJCTU3NTMgVy4gTGFzIFBvc2l0YXMgQmx2ZAotCQkJCVBsZWFzYW50b24gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTBGICAgKGhleCkJCU55cXVpc3QgSW5kdXN0cmlhbCBDb250cm9sIEJWCi0wMDBCMEYgICAgIChiYXNlIDE2KQkJTnlxdWlzdCBJbmR1c3RyaWFsIENvbnRyb2wgQlYKLQkJCQlMdWNodGhhdmVud2VnIDIwCi0JCQkJRWluZGhvdmVuIE5vb3JkIEJyYWJhbnQgTkw1NjU3IEVCCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEItMTAgICAoaGV4KQkJMTF3YXZlIFRlY2hub25sb2d5IENvLixMdGQKLTAwMEIxMCAgICAgKGJhc2UgMTYpCQkxMXdhdmUgVGVjaG5vbmxvZ3kgQ28uLEx0ZAotCQkJCTEwRixuby4yODUgc2VjLjIgLFRpLURpbmcgQXZlLE5haUh1LlRhaXAKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItMTEgICAoaGV4KQkJSElNRUpJIEFCQyBUUkFESU5HIENPLixMVEQuCi0wMDBCMTEgICAgIChiYXNlIDE2KQkJSElNRUpJIEFCQyBUUkFESU5HIENPLixMVEQuCi0JCQkJMS04LTIyCi0JCQkJSllPVUhPS1VTSElOTUFDSEkKLQkJCQlISk1FSkkgSFlPR08gNjcwLTA4ODMKLQkJCQlKQVBBTgotCi0wMC0wQi0xMiAgIChoZXgpCQlOVVJJIFRlbGVjb20gQ28uLCBMdGQuCi0wMDBCMTIgICAgIChiYXNlIDE2KQkJTlVSSSBUZWxlY29tIENvLiwgTHRkLgotCQkJCVdvb2xpbSBMaW9uJ3MgVmFsbGV5IEJsZGctQiAxMHRoIEYKLQkJCQkjMzcxLTI4IEthc2FuLWRvbmcKLQkJCQlLZXVtLWNoZXVuLWd1IFNlb3VsIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItMTMgICAoaGV4KQkJWkVUUk9OIElOQwotMDAwQjEzICAgICAoYmFzZSAxNikJCVpFVFJPTiBJTkMKLQkJCQlQTyBCb3ggOTcwMDQKLQkJCQlSRURNT05EIFdBIDk4MDczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0xNCAgIChoZXgpCQlWaWV3U29uaWMgQ29ycG9yYXRpb24KLTAwMEIxNCAgICAgKGJhc2UgMTYpCQlWaWV3U29uaWMgQ29ycG9yYXRpb24KLQkJCQkzODEgQnJlYSBDYW55b24gUm9hZAotCQkJCVdhbG51dCBDYWxpZm9ybmlhIDkxNzg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0xNSAgIChoZXgpCQlQbGF0eXB1cyBUZWNobm9sb2d5Ci0wMDBCMTUgICAgIChiYXNlIDE2KQkJUGxhdHlwdXMgVGVjaG5vbG9neQotCQkJCTQvMSBBdGNoaXNvbiBTdAotCQkJCVN0IExlb25hcmRzIE5TVyAyMDY1Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTBCLTE2ICAgKGhleCkJCUNvbW11bmljYXRpb24gTWFjaGluZXJ5IENvcnBvcmF0aW9uCi0wMDBCMTYgICAgIChiYXNlIDE2KQkJQ29tbXVuaWNhdGlvbiBNYWNoaW5lcnkgQ29ycG9yYXRpb24KLQkJCQk0MDIgRS4gR3V0aWVycmV6IFN0LgotCQkJCVNhbnRhIEJhcmJhcmEgQ0EgOTMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTE3ICAgKGhleCkJCU1LUyBJbnN0cnVtZW50cwotMDAwQjE3ICAgICAoYmFzZSAxNikJCU1LUyBJbnN0cnVtZW50cwotCQkJCTY1MSBMb3dlbGwgU3RyZWV0Ci0JCQkJTWV0aHVlbiBNQSAwMTg0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMTggICAoaGV4KQkJUFJJVkFURQotMDAwQjE4ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wQi0xOSAgIChoZXgpCQlWZXJuaWVyIE5ldHdvcmtzLCBJbmMuCi0wMDBCMTkgICAgIChiYXNlIDE2KQkJVmVybmllciBOZXR3b3JrcywgSW5jLgotCQkJCTQ5MCBFLiBNaWRkbGVmaWVsZCBSb2FkCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMUEgICAoaGV4KQkJSW5kdXN0cmlhbCBEZWZlbmRlciwgSW5jLgotMDAwQjFBICAgICAoYmFzZSAxNikJCUluZHVzdHJpYWwgRGVmZW5kZXIsIEluYy4KLQkJCQkxNiBDaGVzdG51dCBTdHJlZXQKLQkJCQlTdWl0ZSAzMDAKLQkJCQlGb3hib3JvdWdoIE1BIDAyMDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0xQiAgIChoZXgpCQlTeXN0cm9uaXgsIEluYy4KLTAwMEIxQiAgICAgKGJhc2UgMTYpCQlTeXN0cm9uaXgsIEluYy4KLQkJCQk5MzkgRWRpc29uIFN0LgotCQkJCVNhbHQgTGFrZSBDaXR5IFV0YWggODQxMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTFDICAgKGhleCkJCVNJQkNPIGJ2Ci0wMDBCMUMgICAgIChiYXNlIDE2KQkJU0lCQ08gYnYKLQkJCQlTY2hvb25ob3V0IDQ2Ci0JCQkJRXR0ZW4tTGV1ciBOQiA0ODcyIE1FCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEItMUQgICAoaGV4KQkJTGF5ZXJaZXJvIFBvd2VyIFN5c3RlbXMsIEluYy4KLTAwMEIxRCAgICAgKGJhc2UgMTYpCQlMYXllclplcm8gUG93ZXIgU3lzdGVtcywgSW5jLgotCQkJCTM1NTkgVG93bmxleSBSb2FkCi0JCQkJU2hha2VyIEhlaWdodHMgT0ggNDQxMjItNTE1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMUUgICAoaGV4KQkJS0FQUEEgb3B0by1lbGVjdHJvbmljcyBHbWJICi0wMDBCMUUgICAgIChiYXNlIDE2KQkJS0FQUEEgb3B0by1lbGVjdHJvbmljcyBHbWJICi0JCQkJS2xlaW5lcyBGZWxkIDYKLQkJCQkzNzEzMAotCQkJCUdsZWljaGVuIE5pZWRlcnNhY2hzZW4gCi0JCQkJR0VSTUFOWQotCi0wMC0wQi0xRiAgIChoZXgpCQlJIENPTiBDb21wdXRlciBDby4KLTAwMEIxRiAgICAgKGJhc2UgMTYpCQlJIENPTiBDb21wdXRlciBDby4KLQkJCQkzRiwgTm8uIDE0MiAsIEhzaW4gTWluZyBSb2FkCi0JCQkJTmVpaHUgVGFpcGVpIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItMjAgICAoaGV4KQkJSGlyYXRhIGNvcnBvcmF0aW9uCi0wMDBCMjAgICAgIChiYXNlIDE2KQkJSGlyYXRhIGNvcnBvcmF0aW9uCi0JCQkJMTExIEhpdG90c3VnaSwgVWVraSwKLQkJCQlLYW1vdG8gS3VtYW1vdG8gODYxLTAxOTgKLQkJCQlKQVBBTgotCi0wMC0wQi0yMSAgIChoZXgpCQlHLVN0YXIgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwQjIxICAgICAoYmFzZSAxNikJCUctU3RhciBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJNUYsIDY5LTEwLCBTZWMuIDIsIENodW5nIENoZW5nIEVhc3QgUm9hZAotCQkJCVRhaXBlaSBIc2llbiAgMjUxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0yMiAgIChoZXgpCQlFbnZpcm9ubWVudGFsIFN5c3RlbXMgYW5kIFNlcnZpY2VzCi0wMDBCMjIgICAgIChiYXNlIDE2KQkJRW52aXJvbm1lbnRhbCBTeXN0ZW1zIGFuZCBTZXJ2aWNlcwotCQkJCTIwIENvdW5jaWwgU3RyZWV0Ci0JCQkJSGF3dGhvcm4gRWFzdCBWaWN0b3JpYSAzMTIzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTBCLTIzICAgKGhleCkJCVNpZW1lbnMgU3Vic2NyaWJlciBOZXR3b3JrcwotMDAwQjIzICAgICAoYmFzZSAxNikJCVNpZW1lbnMgU3Vic2NyaWJlciBOZXR3b3JrcwotCQkJCTQ4NDkgQWxwaGEgUm9hZAotCQkJCURhbGxhcyBUZXhhcyA3NDI0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMjQgICAoaGV4KQkJQWlyTG9naWMKLTAwMEIyNCAgICAgKGJhc2UgMTYpCQlBaXJMb2dpYwotCQkJCTgwNy0xLCBCdW5kYW5ndGVjaG5vcGFyayBELCAxNTEsCi0JCQkJWWF0YXAtRG9uZywgQnVuZGFuZy1LdQotCQkJCVN1bmduYW0tU2kgS3l1bmdraS1EbyA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTI1ICAgKGhleCkJCUFlbHVyb3MKLTAwMEIyNSAgICAgKGJhc2UgMTYpCQlBZWx1cm9zCi0JCQkJMjAxIFNhbiBBbnRvbmlvIENpcmNsZSAjMTcyCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMjYgICAoaGV4KQkJV2V0ZWsgQ29ycG9yYXRpb24KLTAwMEIyNiAgICAgKGJhc2UgMTYpCQlXZXRlayBDb3Jwb3JhdGlvbgotCQkJCTRGLCBOTy4xNywgS3VhbmZ1IE4uIFJvYWQKLQkJCQlIc2luIENodSBJbmR1c3RyaWFsIFBhcmsgSHNpbiBDaHUgMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0yNyAgIChoZXgpCQlTY2lvbiBDb3Jwb3JhdGlvbgotMDAwQjI3ICAgICAoYmFzZSAxNikJCVNjaW9uIENvcnBvcmF0aW9uCi0JCQkJODIgV29ybWFuJ3MgTWlsbCBDb3VydAotCQkJCVN1aXRlIEgKLQkJCQlGcmVkZXJpY2sgTUQgMjE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTI4ICAgKGhleCkJCVF1YXRlY2ggSW5jLgotMDAwQjI4ICAgICAoYmFzZSAxNikJCVF1YXRlY2ggSW5jLgotCQkJCTY2MiBXb2xmIExlZGdlcyBQa3d5LgotCQkJCUFrcm9uIE9IIDQ0MzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0yOSAgIChoZXgpCQlMUyhMRykgSW5kdXN0cmlhbCBTeXN0ZW1zIGNvLixMdGQKLTAwMEIyOSAgICAgKGJhc2UgMTYpCQlMUyhMRykgSW5kdXN0cmlhbCBTeXN0ZW1zIGNvLixMdGQKLQkJCQk1MzMgSG9neWUtZG9uZywgRG9uZ2FuLWd1Ci0JCQkJQW55YW5nLXNpIEd5ZW9uZ2dpLWRvIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi0yQSAgIChoZXgpCQlIT1dURUwgQ28uLCBMdGQuCi0wMDBCMkEgICAgIChiYXNlIDE2KQkJSE9XVEVMIENvLiwgTHRkLgotCQkJCUotQ09NIEJkLiA0RiwgMTI0LTQgT0pFT04tRE9ORwotCQkJCVVJV0FORy1TSEkgS1lPVU5HR0ktRE8gNDM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi0yQiAgIChoZXgpCQlIT1NUTkVUIENPUlBPUkFUSU9OCi0wMDBCMkIgICAgIChiYXNlIDE2KQkJSE9TVE5FVCBDT1JQT1JBVElPTgotCQkJCTEwRi0xMixOby4gMTIgTGFuZSA2MDksIFNlYy41LENodW5naHNpbgotCQkJCVNhbmNodW5nIFRhaXBlaSBIc2llbiAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTJDICAgKGhleCkJCUVpa2kgSW5kdXN0cmlhbCBDby4gTHRkLgotMDAwQjJDICAgICAoYmFzZSAxNikJCUVpa2kgSW5kdXN0cmlhbCBDby4gTHRkLgotCQkJCTQtMTIgTWFuemFpLWNobywgS2l0YS1rdQotCQkJCU9zYWthICA1MzAKLQkJCQlKQVBBTgotCi0wMC0wQi0yRCAgIChoZXgpCQlEYW5mb3NzIEluYy4KLTAwMEIyRCAgICAgKGJhc2UgMTYpCQlEYW5mb3NzIEluYy4KLQkJCQk3OTQxIENvcnBvcmF0ZSBEcgotCQkJCUJhbHRpbW9yZSBNRCAyMTIzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMkUgICAoaGV4KQkJQ2FsLUNvbXAgRWxlY3Ryb25pY3MgKFRoYWlsYW5kKSBQdWJsaWMgQ29tcGFueSBMaW1pdGVkIFRhaXBlCi0wMDBCMkUgICAgIChiYXNlIDE2KQkJQ2FsLUNvbXAgRWxlY3Ryb25pY3MgKFRoYWlsYW5kKSBQdWJsaWMgQ29tcGFueSBMaW1pdGVkIFRhaXBlCi0JCQkJOUYsIDk5LCBOYW4tS2luZyBFIFJkLiwgU2VjLiA1LgotCQkJCVRhaXBlaSAgMTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0yRiAgIChoZXgpCQlicGxhbiBHbWJICi0wMDBCMkYgICAgIChiYXNlIDE2KQkJYnBsYW4gR21iSAotCQkJCUluZHVzdHJpZXN0cmHfZSAyMwotCQkJCVN0ZWluYmFjaCA2MTQ0OQotCQkJCUdFUk1BTlkKLQotMDAtMEItMzAgICAoaGV4KQkJQmVpamluZyBHb25neWUgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwQjMwICAgICAoYmFzZSAxNikJCUJlaWppbmcgR29uZ3llIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlVbml0IEQuMTcvRSxTaGVubGFuaHVhdGluZyBtaWQgUm9hZCBOby42Ci0JCQkJQmVpamluZyAgMTAwMDI5Ci0JCQkJQ0hJTkEKLQotMDAtMEItMzEgICAoaGV4KQkJWWFudGFpIFpoaVlhbmcgU2NpZW50aWZpYyBhbmQgdGVjaG5vbG9neSBpbmR1c3RyeSBDTy4sIExURAotMDAwQjMxICAgICAoYmFzZSAxNikJCVlhbnRhaSBaaGlZYW5nIFNjaWVudGlmaWMgYW5kIHRlY2hub2xvZ3kgaW5kdXN0cnkgQ08uLCBMVEQKLQkJCQk1Ri00LCBOTy4gNjQsIEdvbmctSmlhbiBSZC4KLQkJCQlIc2ktQ2hpaCBDaXR5IFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0zMiAgIChoZXgpCQlWT1JNRVRSSUMsIElOQy4KLTAwMEIzMiAgICAgKGJhc2UgMTYpCQlWT1JNRVRSSUMsIElOQy4KLQkJCQkyMDYwIENPUlBPUkFURSBDVAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0zMyAgIChoZXgpCQlWaXZhdG8KLTAwMEIzMyAgICAgKGJhc2UgMTYpCQlWaXZhdG8KLQkJCQkxMjYxMCBFYXN0IE1pcmFiZWF1IFBhcmt3YXkKLQkJCQlTcG9rYW5lIFdBIDk5MjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0zNCAgIChoZXgpCQlTaGFuZ0hhaSBCcm9hZGJhbmQgVGVjaG5vbG9naWVzIENPLkxURAotMDAwQjM0ICAgICAoYmFzZSAxNikJCVNoYW5nSGFpIEJyb2FkYmFuZCBUZWNobm9sb2dpZXMgQ08uTFRECi0JCQkJMTdGLE5vLjEyMixIdWFuZ1hpbmcgUm9hZAotCQkJCVNoYW5nSGFpICAyMDAwOTAKLQkJCQlDSElOQQotCi0wMC0wQi0zNSAgIChoZXgpCQlRdWFkIEJpdCBTeXN0ZW0gY28uLCBMdGQuCi0wMDBCMzUgICAgIChiYXNlIDE2KQkJUXVhZCBCaXQgU3lzdGVtIGNvLiwgTHRkLgotCQkJCTQwMiBHYXlhbmcgVGVjaG5vdG93bgotCQkJCTE0ODcgR2F5YW5nIDMgZG9uZwotCQkJCVNlb3VsIEthbmdzZW9ndSAxNTctODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTM2ICAgKGhleCkJCVByb2R1Y3Rpdml0eSBTeXN0ZW1zLCBJbmMuCi0wMDBCMzYgICAgIChiYXNlIDE2KQkJUHJvZHVjdGl2aXR5IFN5c3RlbXMsIEluYy4KLQkJCQkxNzExIEFuYWxvZyBEcml2ZQotCQkJCVJpY2hhcmRzb24gVFggNzUwODEtMTk0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMzcgICAoaGV4KQkJTUFOVUZBQ1RVUkUgREVTIE1PTlRSRVMgUk9MRVggU0EKLTAwMEIzNyAgICAgKGJhc2UgMTYpCQlNQU5VRkFDVFVSRSBERVMgTU9OVFJFUyBST0xFWCBTQQotCQkJCUxBIEhBVVRFLVJPVVRFIDgyCi0JCQkJQklFTC1CSUVOTkUgQkUgMjUwMgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBCLTM4ICAgKGhleCkJCUtudWVyciBBRwotMDAwQjM4ICAgICAoYmFzZSAxNikJCUtudWVyciBBRwotCQkJCU1hcmlha2lyY2hlbmVyIFN0cmFzc2UgMzgKLQkJCQlBcm5zdG9yZiBCYXZhcmlhIDk0NDI0Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi0zOSAgIChoZXgpCQlLZWlzb2t1IEdpa2VuIENvLixMdGQuCi0wMDBCMzkgICAgIChiYXNlIDE2KQkJS2Vpc29rdSBHaWtlbiBDby4sTHRkLgotCQkJCTItMTItMiAsIENoaWdhc2FraS1taW5hbWkKLQkJCQlUc3V6dWtpLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjI0LTAwMzcKLQkJCQlKQVBBTgotCi0wMC0wQi0zQSAgIChoZXgpCQlRdVN0cmVhbSBDb3Jwb3JhdGlvbgotMDAwQjNBICAgICAoYmFzZSAxNikJCVF1U3RyZWFtIENvcnBvcmF0aW9uCi0JCQkJMzMwNSBCcmVja2lucmlkZ2UgQmx2ZC4KLQkJCQlTdWl0ZSAxMTgKLQkJCQlEdWx1dGggR2VvcmdpYSAzMDA5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItM0IgICAoaGV4KQkJZGV2b2xvIEFHCi0wMDBCM0IgICAgIChiYXNlIDE2KQkJZGV2b2xvIEFHCi0JCQkJU29ubmVud2VnIDExCi0JCQkJQWFjaGVuIE5SVyA1MjA3MAotCQkJCUdFUk1BTlkKLQotMDAtMEItM0MgICAoaGV4KQkJQ3lnbmFsIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4KLTAwMEIzQyAgICAgKGJhc2UgMTYpCQlDeWduYWwgSW50ZWdyYXRlZCBQcm9kdWN0cywgSW5jLgotCQkJCTQzMDEgV2VzdGJhbmsgRHJpdmUKLQkJCQlTdWl0ZSBCLTEwMAotCQkJCUF1c3RpbiBUWCA3ODc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItM0QgICAoaGV4KQkJQ09OVEFMIE9LIEx0ZC4KLTAwMEIzRCAgICAgKGJhc2UgMTYpCQlDT05UQUwgT0sgTHRkLgotCQkJCUZyYW5hIE1yYXphIDIvMjg5Ci0JCQkJUC5PLkJveCBCLTM0Ci0JCQkJWmlsaW5hICAwMTEyNAotCQkJCVNMT1ZBS0lBCi0KLTAwLTBCLTNFICAgKGhleCkJCUJpdHRXYXJlLCBJbmMKLTAwMEIzRSAgICAgKGJhc2UgMTYpCQlCaXR0V2FyZSwgSW5jCi0JCQkJMzEgQiBTb3V0aCBNYWluIFN0Ci0JCQkJQ29uY29yZCBOSCAwMzMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItM0YgICAoaGV4KQkJQW50aG9sb2d5IFNvbHV0aW9ucyBJbmMuCi0wMDBCM0YgICAgIChiYXNlIDE2KQkJQW50aG9sb2d5IFNvbHV0aW9ucyBJbmMuCi0JCQkJMTcyMiBSaW5nd29vZCBBdmUuCi0JCQkJU3VpdGUgMjUwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTQwICAgKGhleCkJCU9wTmV4dCBJbmMuCi0wMDBCNDAgICAgIChiYXNlIDE2KQkJT3BOZXh0IEluYy4KLQkJCQkxIENocmlzdG9waGVyIFdheQotCQkJCUVhdG9udG93biBOZXcgSmVyc2V5IDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi00MSAgIChoZXgpCQlJbmcuIEJ1ZXJvIERyLiBCZXV0bGhhdXNlcgotMDAwQjQxICAgICAoYmFzZSAxNikJCUluZy4gQnVlcm8gRHIuIEJldXRsaGF1c2VyCi0JCQkJUm9lbWVyd2VnIDQKLQkJCQlHcmFzc2F1IEQtODMyMjQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLTQyICAgKGhleCkJCWNvbW1heCBDby4sIEx0ZC4KLTAwMEI0MiAgICAgKGJhc2UgMTYpCQljb21tYXggQ28uLCBMdGQuCi0JCQkJNTEzLTExLCBTYW5nZGFld29uLURvbmcsIEp1bmd3b24tS3UKLQkJCQlTdW5nbmFtLUNpdHkgS3l1bmdnaS1EbyA0NjItMTIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTQzICAgKGhleCkJCU1pY3Jvc2NhbiBTeXN0ZW1zLCBJbmMuCi0wMDBCNDMgICAgIChiYXNlIDE2KQkJTWljcm9zY2FuIFN5c3RlbXMsIEluYy4KLQkJCQkxMjAxIFNXIDd0aCBTdHJlZXQKLQkJCQlSZW50b24gV0EgOTgwNTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTQ0ICAgKGhleCkJCUNvbmNvcmQgSURlYSBDb3JwLgotMDAwQjQ0ICAgICAoYmFzZSAxNikJCUNvbmNvcmQgSURlYSBDb3JwLgotCQkJCTQxMTggMTR0aCBBdmUuLCBVbml0IDQKLQkJCQlNYXJraGFtIE9udGFyaW8gTDNSIDBKMwotCQkJCUNBTkFEQQotCi0wMC0wQi00NSAgIChoZXgpCQlDaXNjbwotMDAwQjQ1ICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTQ2ICAgKGhleCkJCUNpc2NvCi0wMDBCNDYgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNDcgICAoaGV4KQkJQWR2YW5jZWQgRW5lcmd5Ci0wMDBCNDcgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgRW5lcmd5Ci0JCQkJMTYyNSBTaGFycCBQb2ludCBEcml2ZQotCQkJCUZvcnQgQ29sbGlucyBDb2xvcmFkbyA4MDUyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNDggICAoaGV4KQkJc29mcmVsCi0wMDBCNDggICAgIChiYXNlIDE2KQkJc29mcmVsCi0JCQkJMiBydWUgZHUgcGxlc3NpcwotCQkJCXZlcm4gc3VyIHNlaWNoZSBpbGxlIGV0IHZpbGFpbmUgMzU3NzAKLQkJCQlGUkFOQ0UKLQotMDAtMEItNDkgICAoaGV4KQkJUkYtTGluayBTeXN0ZW0gSW5jLgotMDAwQjQ5ICAgICAoYmFzZSAxNikJCVJGLUxpbmsgU3lzdGVtIEluYy4KLQkJCQlOby42LCBOYW4tS2UgNXRoIFJkLiwgSHNpbi1TaGksCi0JCQkJVGFpbmFuIENvdW50eSAgNzQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi00QSAgIChoZXgpCQlWaXNpbWV0cmljcyAoVUspIEx0ZAotMDAwQjRBICAgICAoYmFzZSAxNikJCVZpc2ltZXRyaWNzIChVSykgTHRkCi0JCQkJU2t5ZSBIb3VzZQotCQkJCVNreWUgUm9hZAotCQkJCVByZXN0d2ljayBBeXJzaGlyZSBLQTkgMlRBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEItNEIgICAoaGV4KQkJVklTSU9XQVZFIFNBCi0wMDBCNEIgICAgIChiYXNlIDE2KQkJVklTSU9XQVZFIFNBCi0JCQkJUm91dGUgZGUgbGEgUGllcnJlIDIyCi0JCQkJVklDVE9SSUEgSE9VU0UKLQkJCQlFQ1VCTEVOUyBWQVVEIENILTEwMjQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQi00QyAgIChoZXgpCQlDbGFyaW9uIChNKSBTZG4gQmhkCi0wMDBCNEMgICAgIChiYXNlIDE2KQkJQ2xhcmlvbiAoTSkgU2RuIEJoZAotCQkJCVBoYXNlIDMKLQkJCQlGSVoKLQkJCQlCYXlhbiBMZXBhcyBQZW5hbmcgMTE5MDAKLQkJCQlNQUxBWVNJQQotCi0wMC0wQi00RCAgIChoZXgpCQlFbXV6ZWQKLTAwMEI0RCAgICAgKGJhc2UgMTYpCQlFbXV6ZWQKLQkJCQk0Njc1MCBMYWtldmlldyBCb3VsZXZhcmQKLQkJCQlGcmVtb250IENhbGlmb3JuaWEgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTRFICAgKGhleCkJCVZlcnRleFJTSSwgR2VuZXJhbCBEeW5hbWljcyBTYXRDT00gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBCNEUgICAgIChiYXNlIDE2KQkJVmVydGV4UlNJLCBHZW5lcmFsIER5bmFtaWNzIFNhdENPTSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxOTE1IEUuIEhhcnJpc29uIFJvYWQKLQkJCQlMb25ndmlldyBUWCA3NTYwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNEYgICAoaGV4KQkJVmVyaWZvbmUsIElOQy4KLTAwMEI0RiAgICAgKGJhc2UgMTYpCQlWZXJpZm9uZSwgSU5DLgotCQkJCTI0NTUgQXVndXN0aW5lIERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNTAgICAoaGV4KQkJT3h5Z25ldAotMDAwQjUwICAgICAoYmFzZSAxNikJCU94eWduZXQKLQkJCQk0MDIgRS4gQ2FycmlsbG8gU3QuCi0JCQkJU3VpdGUgQwotCQkJCVNhbnRhIEJhcmJhcmEgQ0EgOTMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTUxICAgKGhleCkJCU1pY2V0ZWsgSW50ZXJuYXRpb25hbCBJbmMuCi0wMDBCNTEgICAgIChiYXNlIDE2KQkJTWljZXRlayBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQk3Ri0xLCAjMjM3LCBTZWMuIDEsIHd1IENodWFuIFcuIFJkLgotCQkJCVRhaWNodW5nICA0MDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTUyICAgKGhleCkJCUpPWU1BWCBFTEVDVFJPTklDUyBDTy4gTFRELgotMDAwQjUyICAgICAoYmFzZSAxNikJCUpPWU1BWCBFTEVDVFJPTklDUyBDTy4gTFRELgotCQkJCU5vLjUgRG9uZy1ZdWFuIFJvYWQgMiwgSmhvbmctTGkgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUpob25nLUxpIENpdHksIAotCQkJCVRhby1ZdWFuICAzMjA2MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItNTMgICAoaGV4KQkJSU5JVElVTSBDby4sIEx0ZC4KLTAwMEI1MyAgICAgKGJhc2UgMTYpCQlJTklUSVVNIENvLiwgTHRkLgotCQkJCThGLiBHb25nZHVjayBCbGRnLiAyNzItNiBTZW9oeXVuIEJ1bmRhbmcKLQkJCQlTdW5nbmFtIEt5dW5nZ2kgNDYzLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi01NCAgIChoZXgpCQlCaVRNSUNSTyBOZXR3b3JrcywgSW5jLgotMDAwQjU0ICAgICAoYmFzZSAxNikJCUJpVE1JQ1JPIE5ldHdvcmtzLCBJbmMuCi0JCQkJNDU1NTAgTm9ydGhwb3J0IExvb3AgRWFzdAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTU1ICAgKGhleCkJCUFESW5zdHJ1bWVudHMKLTAwMEI1NSAgICAgKGJhc2UgMTYpCQlBREluc3RydW1lbnRzCi0JCQkJUC4gTy4gQm94IDU4NwotCQkJCUR1bmVkaW4gT3RhZ28gOTAwMQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTBCLTU2ICAgKGhleCkJCUN5YmVybmV0aWNzCi0wMDBCNTYgICAgIChiYXNlIDE2KQkJQ3liZXJuZXRpY3MKLQkJCQkxMTEgQ3liZXJuZXRpY3MgV2F5Ci0JCQkJWW9ya3Rvd24gVkEgMjM2OTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTU3ICAgKGhleCkJCVNpbGljb24gTGFib3JhdG9yaWVzCi0wMDBCNTcgICAgIChiYXNlIDE2KQkJU2lsaWNvbiBMYWJvcmF0b3JpZXMKLQkJCQk3MDAwIFcuIFdpbGxpYW0gQ2Fubm9uIERyLgotCQkJCUJsZGcuMSwgU3VpdGUgMjAwCi0JCQkJQXVzdGluIFRYIDc4NzM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi01OCAgIChoZXgpCQlBc3Ryb25hdXRpY3MgQy5BICBMVEQKLTAwMEI1OCAgICAgKGJhc2UgMTYpCQlBc3Ryb25hdXRpY3MgQy5BICBMVEQKLQkJCQkyMyBoYXlhcmtvbiBzdHJlZXQKLQkJCQlCbmVpIEJyYWsgIDUxMjYxCi0JCQkJSVNSQUVMCi0KLTAwLTBCLTU5ICAgKGhleCkJCVNjcmlwdFBybywgTExDCi0wMDBCNTkgICAgIChiYXNlIDE2KQkJU2NyaXB0UHJvLCBMTEMKLQkJCQk1ODI4IFJlZWRzIFJkLgotCQkJCU1pc3Npb24gS2Fuc2FzIDY2MjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi01QSAgIChoZXgpCQlIeXBlckVkZ2UKLTAwMEI1QSAgICAgKGJhc2UgMTYpCQlIeXBlckVkZ2UKLQkJCQkzMzMgUGllcmNlIFJvYWQgU3VpdGUgIzIwMAotCQkJCUl0YXNjYSBJTCA2MDE0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNUIgICAoaGV4KQkJUmluY29uIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0wMDBCNUIgICAgIChiYXNlIDE2KQkJUmluY29uIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0JCQkJMTAxIE4uIFdpbG1vdCBSZC4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlUdWNzb24gQVogODU3MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTVDICAgKGhleCkJCU5ld3RlY2ggQ28uLEx0ZAotMDAwQjVDICAgICAoYmFzZSAxNikJCU5ld3RlY2ggQ28uLEx0ZAotCQkJCUstQmxkZyAxLTctNyBTaGliYWRhaW1vbiBNaW5hdG8ta3UKLQkJCQlUb2t5byAgMTA1LTAwMTIKLQkJCQlKQVBBTgotCi0wMC0wQi01RCAgIChoZXgpCQlGVUpJVFNVIExJTUlURUQKLTAwMEI1RCAgICAgKGJhc2UgMTYpCQlGVUpJVFNVIExJTUlURUQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiwgNDAzCi0JCQkJS29zdWdpLWNobyAxLWNob21lLE5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgCi0JCQkJSkFQQU4KLQotMDAtMEItNUUgICAoaGV4KQkJQXVkaW8gRW5naW5lZXJpbmcgU29jaWV0eSBJbmMuCi0wMDBCNUUgICAgIChiYXNlIDE2KQkJQXVkaW8gRW5naW5lZXJpbmcgU29jaWV0eSBJbmMuCi0JCQkJNjAgRWFzdCA0Mm5kIFN0cmVldCwgU3VpdGUgIzI1MjAKLQkJCQlOZXcgWW9yayBOWSAxMDE2NS0yNTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi01RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCNUYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi02MCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCNjAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi02MSAgIChoZXgpCQlGcmllZHJpY2ggTPx0emUgR21iSCAmQ28uCi0wMDBCNjEgICAgIChiYXNlIDE2KQkJRnJpZWRyaWNoIEz8dHplIEdtYkggJkNvLgotCQkJCUJydWNrd2llc2Vuc3RyYd9lIDE3LTE5Ci0JCQkJV2VpbnN0YWR0LUdyb99oZXBwYWNoIEJXIDcxMzg0Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi02MiAgIChoZXgpCQlJbmdlbmlldXJidWVybyBmdWVyIEVsZWt0cm9uaWtkZXNpZ24gSW5nbyBNb2huZW4KLTAwMEI2MiAgICAgKGJhc2UgMTYpCQlJbmdlbmlldXJidWVybyBmdWVyIEVsZWt0cm9uaWtkZXNpZ24gSW5nbyBNb2huZW4KLQkJCQlTdGljaCAzMCBkCi0JCQkJNTIyNDkgRXNjaHdlaWxlciAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLTYzICAgKGhleCkJCUthbGVpZGVzY2FwZQotMDAwQjYzICAgICAoYmFzZSAxNikJCUthbGVpZGVzY2FwZQotCQkJCU9uZSBGaXJzdCBTdHJlZXQsIFN1aXRlIFNpeHRlZW4KLQkJCQlMb3MgQWx0b3MgQ0EgOTQwMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTY0ICAgKGhleCkJCUtpZWJhY2sgJiBQZXRlciBHbWJIICYgQ28gS0cKLTAwMEI2NCAgICAgKGJhc2UgMTYpCQlLaWViYWNrICYgUGV0ZXIgR21iSCAmIENvIEtHCi0JCQkJVGVtcGVsaG9mZXIgV2VnIDUwCi0JCQkJQmVybGluICAxMjM0NwotCQkJCUdFUk1BTlkKLQotMDAtMEItNjUgICAoaGV4KQkJU3kuQS5DLiBzcmwKLTAwMEI2NSAgICAgKGJhc2UgMTYpCQlTeS5BLkMuIHNybAotCQkJCXZpYSBDYWJvdG8gMTkvMQotCQkJCVRyaWVzdGUgIDM0MTQ3Ci0JCQkJSVRBTFkKLQotMDAtMEItNjYgICAoaGV4KQkJVGVyYWxpbmsgQ29tbXVuaWNhdGlvbnMKLTAwMEI2NiAgICAgKGJhc2UgMTYpCQlUZXJhbGluayBDb21tdW5pY2F0aW9ucwotCQkJCUNhcGl0YWwgVG93ZXIgMTVGLAotCQkJCTkzMSBEb29uc2FuLWRvbmcsIFNlby1ndQotCQkJCURhZWplb24gIDMwMjEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi02NyAgIChoZXgpCQlUb3B2aWV3IFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMEI2NyAgICAgKGJhc2UgMTYpCQlUb3B2aWV3IFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQlOby4gOCxXdS1DaHVhbiBSb2FkLFd1IEt1IEluZHVzdHJpYWwgUGFyCi0JCQkJV3UgS3UgSHNpYW5nLFRhaXBlaSBIc2llbiwgIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItNjggICAoaGV4KQkJQWRkdmFsdWUgQ29tbXVuaWNhdGlvbnMgUHRlIEx0ZAotMDAwQjY4ICAgICAoYmFzZSAxNikJCUFkZHZhbHVlIENvbW11bmljYXRpb25zIFB0ZSBMdGQKLQkJCQkyOCxUQUkgU0VORyBTVFJFRVQgIzA2LTAyCi0JCQkJU2luZ2Fwb3JlICA1MzQxMDYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMEItNjkgICAoaGV4KQkJRnJhbmtlIEZpbmxhbmQgT3kKLTAwMEI2OSAgICAgKGJhc2UgMTYpCQlGcmFua2UgRmlubGFuZCBPeQotCQkJCVZhcnRpb2t1amEgMQotCQkJCU5BQVJBSkFSVkkgTkFBUkFKQVJWSSBGSU4tNzY4NTAKLQkJCQlGSU5MQU5ECi0KLTAwLTBCLTZBICAgKGhleCkJCUFzaWFyb2NrIEluY29ycG9yYXRpb24KLTAwMEI2QSAgICAgKGJhc2UgMTYpCQlBc2lhcm9jayBJbmNvcnBvcmF0aW9uCi0JCQkJUC5PLiBCb3g5NTcsIE9mZnNob3JlIEluY29ycG9yYXRpb25zIENlbgotCQkJCVJvYWQgVG93biBUb3J0b2xhIAotCQkJCVZJUkdJTiBJU0xBTkRTLCBCUklUSVNICi0KLTAwLTBCLTZCICAgKGhleCkJCVdpc3Ryb24gTmV3ZWIgQ29ycC4KLTAwMEI2QiAgICAgKGJhc2UgMTYpCQlXaXN0cm9uIE5ld2ViIENvcnAuCi0JCQkJTm8uIDEwLTEsIExpLUhzaW4gUm9hZCBJLCBTY2llbmNlLWJhc2VkCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi02QyAgIChoZXgpCQlTeWNoaXAgSW5jLgotMDAwQjZDICAgICAoYmFzZSAxNikJCVN5Y2hpcCBJbmMuCi0JCQkJMjgwNSBOLiBEYWxsYXMgUGFya3dheSBTdWl0ZSA0MDAKLQkJCQlQbGFubyBUZXhhcyA3NTA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNkQgICAoaGV4KQkJU09MRUNUUk9OIEpBUEFOIE5BS0FOSUlEQQotMDAwQjZEICAgICAoYmFzZSAxNikJCVNPTEVDVFJPTiBKQVBBTiBOQUtBTklJREEKLQkJCQkzMjUgR0FOQkFSQQotCQkJCU5BS0FOSUlEQU1BQ0hJCi0JCQkJS0FNSUdVTiBNSVlBR0lLRU4gOTgxLTQyNjMKLQkJCQlKQVBBTgotCi0wMC0wQi02RSAgIChoZXgpCQlOZWZmIEluc3RydW1lbnQgQ29ycC4KLTAwMEI2RSAgICAgKGJhc2UgMTYpCQlOZWZmIEluc3RydW1lbnQgQ29ycC4KLQkJCQk3MDAgU291dGggTXlydGxlIEF2ZS4KLQkJCQlNb25yb3ZpYSBDQSA5MTAxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNkYgICAoaGV4KQkJTWVkaWEgU3RyZWFtaW5nIE5ldHdvcmtzIEluYwotMDAwQjZGICAgICAoYmFzZSAxNikJCU1lZGlhIFN0cmVhbWluZyBOZXR3b3JrcyBJbmMKLQkJCQkxOTA1IEFuYW0gVG93ZXIsIDcwMi0xMCwgWWVva3NhbSBkb25nLCBLCi0JCQkJU2VvdWwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItNzAgICAoaGV4KQkJTG9hZCBUZWNobm9sb2d5LCBJbmMuCi0wMDBCNzAgICAgIChiYXNlIDE2KQkJTG9hZCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNDIyNSBQcm9kdWN0aW9uIENvdXJ0Ci0JCQkJTGFzIFZlZ2FzIE5WIDg5MTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi03MSAgIChoZXgpCQlMaXRjaGZpZWxkIENvbW11bmljYXRpb25zIEluYy4KLTAwMEI3MSAgICAgKGJhc2UgMTYpCQlMaXRjaGZpZWxkIENvbW11bmljYXRpb25zIEluYy4KLQkJCQkyNyBQcmluY2V0b24gUm9hZAotCQkJCVdhdGVydG93biBDVCAwNjc5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNzIgICAoaGV4KQkJTGF3byBBRwotMDAwQjcyICAgICAoYmFzZSAxNikJCUxhd28gQUcKLQkJCQlBbSBPYmVyd2FsZCA4Ci0JCQkJUmFzdGF0dCBCYWRlbi1X/HJ0dGVtYmVyZyA3NjQzNwotCQkJCUdFUk1BTlkKLQotMDAtMEItNzMgICAoaGV4KQkJS29kZW9zIENvbW11bmljYXRpb25zCi0wMDBCNzMgICAgIChiYXNlIDE2KQkJS29kZW9zIENvbW11bmljYXRpb25zCi0JCQkJMTExIENvcnBvcmF0ZSBCbHZkCi0JCQkJU3VpdGUgQQotCQkJCVNvdXRoIFBsYWluZmllbGQgTkogMDcwODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTc0ICAgKGhleCkJCUtpbmd3YXZlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBCNzQgICAgIChiYXNlIDE2KQkJS2luZ3dhdmUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxOEYtMywgTm8uIDE4NiwgSmlhbi1ZaSBSZC4KLQkJCQlDaHVuZy1IbyBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi03NSAgIChoZXgpCQlJb3NvZnQgTHRkLgotMDAwQjc1ICAgICAoYmFzZSAxNikJCUlvc29mdCBMdGQuCi0JCQkJNSBXb29kbGFyayBSb2FkCi0JCQkJQ2FtYnJpZGdlIENhbWJzLiBDQjMgMEhUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEItNzYgICAoaGV4KQkJRVQmVCBUZWNobm9sb2d5IENvLiBMdGQuCi0wMDBCNzYgICAgIChiYXNlIDE2KQkJRVQmVCBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJNkYgTm8uMTAxLCBTb25nSmlhbmcgUmQuCi0JCQkJVGFpcGVpICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTc3ICAgKGhleCkJCUNvZ2VudCBTeXN0ZW1zLCBJbmMuCi0wMDBCNzcgICAgIChiYXNlIDE2KQkJQ29nZW50IFN5c3RlbXMsIEluYy4KLQkJCQkyMDkgRmFpciBPYWtzIEF2ZS4KLQkJCQlTb3V0aCBQYXNhZGVuYSBDQSA5MTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNzggICAoaGV4KQkJVEFJRkFURUNIIElOQy4KLTAwMEI3OCAgICAgKGJhc2UgMTYpCQlUQUlGQVRFQ0ggSU5DLgotCQkJCThGLTEgTm8uMjg5LCBTZWMuMiAgR3VhbmdmdSBSZC4KLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTc5ICAgKGhleCkJCVgtQ09NLCBJbmMuCi0wMDBCNzkgICAgIChiYXNlIDE2KQkJWC1DT00sIEluYy4KLQkJCQk4ODA5IFN1ZGxleSBSb2FkCi0JCQkJU3VpdGUgMjAyCi0JCQkJTWFuYXNzYXMgVkEgMjAxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTdBICAgKGhleCkJCVdhdmUgU2NpZW5jZSBJbmMuCi0wMDBCN0EgICAgIChiYXNlIDE2KQkJV2F2ZSBTY2llbmNlIEluYy4KLQkJCQk3NjIwIE9tbml0ZWNoIFBsYWNlCi0JCQkJVmljdG9yIE5ldyBZb3JrIDE0NTY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi03QiAgIChoZXgpCQlUZXN0LVVtIEluYy4KLTAwMEI3QiAgICAgKGJhc2UgMTYpCQlUZXN0LVVtIEluYy4KLQkJCQk4MDggQ2FsbGUgUGxhbm8KLQkJCQlDYW1hcmlsbG8gQ0EgOTMwMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTdDICAgKGhleCkJCVRlbGV4IENvbW11bmljYXRpb25zCi0wMDBCN0MgICAgIChiYXNlIDE2KQkJVGVsZXggQ29tbXVuaWNhdGlvbnMKLQkJCQk4NjAxIEUuIENvcm5odXNrZXIgSHd5Ci0JCQkJTGluY29sbiBORSA2ODUwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItN0QgICAoaGV4KQkJU09MT01PTiBFWFRSRU1FIElOVEVSTkFUSU9OQUwgTFRELgotMDAwQjdEICAgICAoYmFzZSAxNikJCVNPTE9NT04gRVhUUkVNRSBJTlRFUk5BVElPTkFMIExURC4KLQkJCQkzRiwgTm8uMjAsIExhbmUgMTY1LCBEdWVuaHVhIE4uIFJkLiwgU3VuCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTdFICAgKGhleCkJCVNBR0lOT01JWUEgU2Vpc2FrdXNobyBJbmMuCi0wMDBCN0UgICAgIChiYXNlIDE2KQkJU0FHSU5PTUlZQSBTZWlzYWt1c2hvIEluYy4KLQkJCQk1MzUgU2FzYWkKLQkJCQlTYXlhbWFzaGkgU2FpdGFtYWtlbiAzNTAtMTM5NQotCQkJCUpBUEFOCi0KLTAwLTBCLTdGICAgKGhleCkJCU9tbmlXZXJrcwotMDAwQjdGICAgICAoYmFzZSAxNikJCU9tbmlXZXJrcwotCQkJCTkwMCBFIEhhbWlsdG9uIEF2ZW51ZQotCQkJCVN1aXRlIDEwMAotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi04MCAgIChoZXgpCQlMeWNpdW0gTmV0d29ya3MKLTAwMEI4MCAgICAgKGJhc2UgMTYpCQlMeWNpdW0gTmV0d29ya3MKLQkJCQk5IEhhbWVub2ZpbSBTdC4KLQkJCQlQLk8uQm94IDEyMjU2Ci0JCQkJSGVyemxpeWEgSXNyYWVsIDQ2NzMzCi0JCQkJSVNSQUVMCi0KLTAwLTBCLTgxICAgKGhleCkJCUthcGFyZWwgQ29ycG9yYXRpb24KLTAwMEI4MSAgICAgKGJhc2UgMTYpCQlLYXBhcmVsIENvcnBvcmF0aW9uCi0JCQkJOTcgUmFuZGFsbCBEcml2ZQotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJWLTFDNQotCQkJCUNBTkFEQQotCi0wMC0wQi04MiAgIChoZXgpCQlHcmFuZHN0cmVhbSBOZXR3b3JrcywgSW5jLgotMDAwQjgyICAgICAoYmFzZSAxNikJCUdyYW5kc3RyZWFtIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTI5NyBGbG9vZGxpZ2h0IFN0cmVldAotCQkJCTJuZCBGbG9vcgotCQkJCUJyb29rbGluZSBNQSAwMjQ0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItODMgICAoaGV4KQkJREFUQVdBVFQgQi5WLgotMDAwQjgzICAgICAoYmFzZSAxNikJCURBVEFXQVRUIEIuVi4KLQkJCQlIT1VUU1RSQUFUIDUKLQkJCQlQLk8uIEJPWCAxMDgKLQkJCQlXT0xWRUdBIEZSSUVTTEFORCBOTC04NDcxLVpYCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEItODQgICAoaGV4KQkJQk9ERVQKLTAwMEI4NCAgICAgKGJhc2UgMTYpCQlCT0RFVAotCQkJCVJvdXRlIGRlIGxhIFRvdXJsYW5kcnkKLQkJCQlUUkVNRU5USU5FUyBGUkFOQ0UgNDkzNDAKLQkJCQlGUkFOQ0UKLQotMDAtMEItODUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQjg1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXLiBUYXNtYW4gRHJpdmUKLQkJCQlNUyBTSkNNLzEvMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi04NiAgIChoZXgpCQlBcnViYSBOZXR3b3JrcwotMDAwQjg2ICAgICAoYmFzZSAxNikJCUFydWJhIE5ldHdvcmtzCi0JCQkJMTMyMiBDcm9zc21hbiBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTg3ICAgKGhleCkJCUFtZXJpY2FuIFJlbGlhbmNlIEluYy4KLTAwMEI4NyAgICAgKGJhc2UgMTYpCQlBbWVyaWNhbiBSZWxpYW5jZSBJbmMuCi0JCQkJMTE4MDEgR29sZHJpbmcgUmQKLQkJCQlBcmNhZGlhIENBIDkxMDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi04OCAgIChoZXgpCQlWaWRpc2NvIGx0ZC4KLTAwMEI4OCAgICAgKGJhc2UgMTYpCQlWaWRpc2NvIGx0ZC4KLQkJCQkxNyBZZWNoaWVsIERyZXNuZXIKLQkJCQlQZXRhY2gtVGlrdmEgIDQ5Mjc3Ci0JCQkJSVNSQUVMCi0KLTAwLTBCLTg5ICAgKGhleCkJCVRvcCBHbG9iYWwgVGVjaG5vbG9neSwgTHRkLgotMDAwQjg5ICAgICAoYmFzZSAxNikJCVRvcCBHbG9iYWwgVGVjaG5vbG9neSwgTHRkLgotCQkJCVJvb20gMzMxMCwgQ2hpbmEgV29ybGQgVG93ZXIgTm8uIDEKLQkJCQlKaWFuIEd1byBNZW4gV2FpIEF2ZW51ZQotCQkJCUJlaWppbmcgQmVpamluZyAxMDAwMDQKLQkJCQlDSElOQQotCi0wMC0wQi04QSAgIChoZXgpCQlNSVRFUSBJbmMuCi0wMDBCOEEgICAgIChiYXNlIDE2KQkJTUlURVEgSW5jLgotCQkJCTEwMCBEYXZpZHMgRHJpdmUKLQkJCQlIYXVwcGF1Z2UgTlkgMTE3ODgtMjAzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItOEIgICAoaGV4KQkJS0VSQUpFVCwgUy5BLgotMDAwQjhCICAgICAoYmFzZSAxNikJCUtFUkFKRVQsIFMuQS4KLQkJCQlDdHJhLiBWaWxsYXJyZWFsLU9uZGEsIEttIDIuNQotCQkJCVZpbGxhcnJlYWwgQ2FzdGVsbG9uIEUtMTI1NDAKLQkJCQlTUEFJTgotCi0wMC0wQi04QyAgIChoZXgpCQlGbGV4dHJvbmljcwotMDAwQjhDICAgICAoYmFzZSAxNikJCUZsZXh0cm9uaWNzCi0JCQkJTWlnZGFsIEhhRW1lawotCQkJCVJhbWF0IEdhdnJpZWwKLQkJCQkyMzEwOCBIYXRhYXNpYSAxIAotCQkJCUlTUkFFTAotCi0wMC0wQi04RCAgIChoZXgpCQlBdnZpbyBOZXR3b3JrcwotMDAwQjhEICAgICAoYmFzZSAxNikJCUF2dmlvIE5ldHdvcmtzCi0JCQkJMTEgRG9ub3ZhbiBEcgotCQkJCUJlZGZvcmQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLThFICAgKGhleCkJCUFzY2VudCBDb3Jwb3JhdGlvbgotMDAwQjhFICAgICAoYmFzZSAxNikJCUFzY2VudCBDb3Jwb3JhdGlvbgotCQkJCTItMTYtMTksIEthd2FyYXlhLW1hY2hpLCBDaHVvLUt1LAotCQkJCU9zYWthLUNpdHkgT3Nha2EtUHJlZiA1NDItMDA2NgotCQkJCUpBUEFOCi0KLTAwLTBCLThGICAgKGhleCkJCUFLSVRBIEVMRUNUUk9OSUNTIFNZU1RFTVMgQ08uLExURC4KLTAwMEI4RiAgICAgKGJhc2UgMTYpCQlBS0lUQSBFTEVDVFJPTklDUyBTWVNURU1TIENPLixMVEQuCi0JCQkJODUsQVpBIFVTSElST05PLEFJS0FXQSxZVVdBLU1BQ0hJCi0JCQkJS0FXQUJFLUdVTiBBS0lUQS1LRU4gMDEwLTEyMzEKLQkJCQlKQVBBTgotCi0wMC0wQi05MCAgIChoZXgpCQlBZHZhIE9wdGljYWwgTmV0d29ya2luZyBJbmMuCi0wMDBCOTAgICAgIChiYXNlIDE2KQkJQWR2YSBPcHRpY2FsIE5ldHdvcmtpbmcgSW5jLgotCQkJCUNsaWZ0b24gVGVjaG5vbG9neSBDZW50cmUKLQkJCQlDbGlmdG9uIE1vb3IKLQkJCQlZb3JrIFlPMzAgNEdVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEItOTEgICAoaGV4KQkJQWdsYWlhIEdlc2VsbHNjaGFmdCBm/HIgQmlsZHZlcmFyYmVpdHVuZyB1bmQgS29tbXVuaWthdGlvbiBtCi0wMDBCOTEgICAgIChiYXNlIDE2KQkJQWdsYWlhIEdlc2VsbHNjaGFmdCBm/HIgQmlsZHZlcmFyYmVpdHVuZyB1bmQgS29tbXVuaWthdGlvbiBtCi0JCQkJVGluaXVzc3RyLiAxMi0xNQotCQkJCUJlcmxpbiAgRC0xMzA4OQotCQkJCUdFUk1BTlkKLQotMDAtMEItOTIgICAoaGV4KQkJQXNjb20gRGFubWFyayBBL1MKLTAwMEI5MiAgICAgKGJhc2UgMTYpCQlBc2NvbSBEYW5tYXJrIEEvUwotCQkJCUZhYnJpa3NwYXJrZW4gNDIKLQkJCQlHbG9zdHJ1cCBEZW5tYXJrIDI2MDAKLQkJCQlERU5NQVJLCi0KLTAwLTBCLTkzICAgKGhleCkJCVJpdHRlciBFbGVrdHJvbmlrCi0wMDBCOTMgICAgIChiYXNlIDE2KQkJUml0dGVyIEVsZWt0cm9uaWsKLQkJCQlMZXZlcmt1c2VyIFN0ciA2NQotCQkJCVAuTy4gQm94IDExMDI0MAotCQkJCVJlbXNjaGVpZCBOUlcgNDI4OTcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLTk0ICAgKGhleCkJCURpZ2l0YWwgTW9uaXRvcmluZyBQcm9kdWN0cywgSW5jLgotMDAwQjk0ICAgICAoYmFzZSAxNikJCURpZ2l0YWwgTW9uaXRvcmluZyBQcm9kdWN0cywgSW5jLgotCQkJCTI1MDAgTi4gUGFydG5lcnNoaXAgQm91bGV2YXJkCi0JCQkJU3ByaW5nZmllbGQgTWlzc291cmkgNjU4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTk1ICAgKGhleCkJCWVCZXQgR2FtaW5nIFN5c3RlbXMgUHR5IEx0ZAotMDAwQjk1ICAgICAoYmFzZSAxNikJCWVCZXQgR2FtaW5nIFN5c3RlbXMgUHR5IEx0ZAotCQkJCVN1aXRlIEQsIDI1NSBSYXdzb24gU3RyZWV0Ci0JCQkJQXVidXJuIE5TVyAyMTQ0Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTBCLTk2ICAgKGhleCkJCUlubm90cmFjIERpYWdub3N0aWNzIE95Ci0wMDBCOTYgICAgIChiYXNlIDE2KQkJSW5ub3RyYWMgRGlhZ25vc3RpY3MgT3kKLQkJCQlLYWxldmFudGllIDI1Ci0JCQkJVHVya3UgxWJvIDIwNTIwCi0JCQkJRklOTEFORAotCi0wMC0wQi05NyAgIChoZXgpCQlNYXRzdXNoaXRhIEVsZWN0cmljIEluZHVzdHJpYWwgQ28uLEx0ZC4KLTAwMEI5NyAgICAgKGJhc2UgMTYpCQlNYXRzdXNoaXRhIEVsZWN0cmljIEluZHVzdHJpYWwgQ28uLEx0ZC4KLQkJCQkzLTEtMSBZYWd1bW8tTmFrYS1NYWNoaQotCQkJCU1vcmlndWNoaSBDaXR5IE9zYWthIDU3MC04NTAxCi0JCQkJSkFQQU4KLQotMDAtMEItOTggICAoaGV4KQkJTmljZVRlY2hWaXNpb24KLTAwMEI5OCAgICAgKGJhc2UgMTYpCQlOaWNlVGVjaFZpc2lvbgotCQkJCUludGVsWm9uZSA3MDMKLQkJCQlZb25nSW4gIEd1Z2FsLXJpICBLaSBIZXVuZyBLeW91bmdLaURvIDM1NC0yCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTk5ICAgKGhleCkJCVNlbnNBYmxlIFRlY2hub2xvZ2llcywgSW5jLgotMDAwQjk5ICAgICAoYmFzZSAxNikJCVNlbnNBYmxlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE1IENvbnN0aXR1dGlvbiBXYXkKLQkJCQlXb2J1cm4gTUEgMDE4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTlBICAgKGhleCkJCVNoYW5naGFpIFVsaW5rIFRlbGVjb20gRXF1aXBtZW50IENvLiBMdGQuCi0wMDBCOUEgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgVWxpbmsgVGVsZWNvbSBFcXVpcG1lbnQgQ28uIEx0ZC4KLQkJCQk2IEZsb29yLCBCdWlsZGluZyAzCi0JCQkJMjMwIFdlc3QgSmlhbmd3YW4gUm9hZAotCQkJCVNoYW5naGFpICAyMDAwODMKLQkJCQlDSElOQQotCi0wMC0wQi05QiAgIChoZXgpCQlTaXJpdXMgU3lzdGVtIENvLCBMdGQuCi0wMDBCOUIgICAgIChiYXNlIDE2KQkJU2lyaXVzIFN5c3RlbSBDbywgTHRkLgotCQkJCTMtMjcgRnVuYWRvLWNobwotCQkJCUFzaGl5YSBIeW9nbyA2NTktMDA5MwotCQkJCUpBUEFOCi0KLTAwLTBCLTlDICAgKGhleCkJCVRyaUJlYW0gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBCOUMgICAgIChiYXNlIDE2KQkJVHJpQmVhbSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMTYgVy4gRWFzdG1hbiBTdC4sIHN1aXRlIDIwOAotCQkJCUFybGluZ3RvbiBIZWlnaHRzIElMIDYwMDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi05RCAgIChoZXgpCQlUd2luTU9TIFRlY2hub2xvZ2llcyBJbmMuCi0wMDBCOUQgICAgIChiYXNlIDE2KQkJVHdpbk1PUyBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTMwMyBOby4zLCBUenUgQ2hpYW5nIFJkLiwgSHUgS291IFhpYW5nLAotCQkJCUhzaW4gQ2h1ICAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTlFICAgKGhleCkJCVlhc2luZyBUZWNobm9sb2d5IENvcnAuCi0wMDBCOUUgICAgIChiYXNlIDE2KQkJWWFzaW5nIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQlOby4gNTAsIFRhIEhzdWVoIFJvYWQsIEhzaW5DaHUsIFRhaXdhbgotCQkJCUhzaW5DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItOUYgICAoaGV4KQkJTmV1ZSBFTFNBIEdtYkgKLTAwMEI5RiAgICAgKGJhc2UgMTYpCQlOZXVlIEVMU0EgR21iSAotCQkJCVNvbm5lbndlZyAxMQotCQkJCUFhY2hlbiAgNTIwNzAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLUEwICAgKGhleCkJCVQmTCBJbmZvcm1hdGlvbiBJbmMuCi0wMDBCQTAgICAgIChiYXNlIDE2KQkJVCZMIEluZm9ybWF0aW9uIEluYy4KLQkJCQk4OTgtNDQgSG9reWUtRG9uZywgRG9uZ2FuLUd1Ci0JCQkJQW55YW5nIEt5dW5na2ktRG8gNDMxLTgzNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1BMSAgIChoZXgpCQlTWVNDT00gTHRkLgotMDAwQkExICAgICAoYmFzZSAxNikJCVNZU0NPTSBMdGQuCi0JCQkJNC0xMCBIQUtPREEsIEtVTUFHQVlBLVNISQotCQkJCVNBSVRBTUEtS0VOIDM2MC04NTE1Ci0JCQkJSkFQQU4KLQotMDAtMEItQTIgICAoaGV4KQkJU3VtaXRvbW8gRWxlY3RyaWMgTmV0d29ya3MsIEluYwotMDAwQkEyICAgICAoYmFzZSAxNikJCVN1bWl0b21vIEVsZWN0cmljIE5ldHdvcmtzLCBJbmMKLQkJCQkxLTEtMywgU2hpbWF5YSwgS29ub2hhbmEta3UKLQkJCQlPc2FrYSAgNTU0LTAwMjQKLQkJCQlKQVBBTgotCi0wMC0wQi1BMyAgIChoZXgpCQlTaWVtZW5zIEFHLCBJJlMKLTAwMEJBMyAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHLCBJJlMKLQkJCQlXZXJuZXItdm9uLVNpZW1lbnMtU3RyYd9lIDY1Ci0JCQkJRXJsYW5nZW4gQmF2YXJpYSA5MTA1MgotCQkJCUdFUk1BTlkKLQotMDAtMEItQTQgICAoaGV4KQkJU2hpcm9uIFNhdGVsbGl0ZSBDb21tdW5pY2F0aW9ucyBMdGQuICgxOTk2KQotMDAwQkE0ICAgICAoYmFzZSAxNikJCVNoaXJvbiBTYXRlbGxpdGUgQ29tbXVuaWNhdGlvbnMgTHRkLiAoMTk5NikKLQkJCQkyMyBIYXNpdmltIFN0LgotCQkJCVBldGFjaCBUaWt2YSAgNDkxNzAKLQkJCQlJU1JBRUwKLQotMDAtMEItQTUgICAoaGV4KQkJUXVhc2FyIENpcHRhIE1hbmRpcmksIFBUCi0wMDBCQTUgICAgIChiYXNlIDE2KQkJUXVhc2FyIENpcHRhIE1hbmRpcmksIFBUCi0JCQkJSmwuIFBhbGFzYXJpIDlBCi0JCQkJQmFuZHVuZyBXZXN0IEphdmEgNDAyNjIKLQkJCQlJTkRPTkVTSUEKLQotMDAtMEItQTYgICAoaGV4KQkJTWl5YWthd2EgRWxlY3RyaWMgV29ya3MgTHRkLgotMDAwQkE2ICAgICAoYmFzZSAxNikJCU1peWFrYXdhIEVsZWN0cmljIFdvcmtzIEx0ZC4KLQkJCQkyLTEtNiwKLQkJCQlLb2hob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTAwMDEKLQkJCQlKQVBBTgotCi0wMC0wQi1BNyAgIChoZXgpCQlNYXJhbnRpIE5ldHdvcmtzCi0wMDBCQTcgICAgIChiYXNlIDE2KQkJTWFyYW50aSBOZXR3b3JrcwotCQkJCTMwNjEtQiBaYW5rZXIgUm9hZAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1BOCAgIChoZXgpCQlIQU5CQUNLIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDAwQkE4ICAgICAoYmFzZSAxNikJCUhBTkJBQ0sgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJMzA2LTcsIEdhbG1hLWRvbmcsIFNlby1ndQotCQkJCURhZWplb24gIDMwMi0xNzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItQTkgICAoaGV4KQkJQ2xvdWRTaGllbGQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBCQTkgICAgIChiYXNlIDE2KQkJQ2xvdWRTaGllbGQgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjEyIEdpbGJyYWx0YXIgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUFBICAgKGhleCkJCUFpcGhvbmUgY28uLEx0ZAotMDAwQkFBICAgICAoYmFzZSAxNikJCUFpcGhvbmUgY28uLEx0ZAotCQkJCTItMTggSmlubm8tQ2hvCi0JCQkJQXRzdXRhLWt1Ci0JCQkJTmFnb3lhIEFpY2hpLWtlbiA0NTYtODY2NgotCQkJCUpBUEFOCi0KLTAwLTBCLUFCICAgKGhleCkJCUFkdmFudGVjaCBUZWNobm9sb2d5IChDSElOQSkgQ28uLCBMdGQuCi0wMDBCQUIgICAgIChiYXNlIDE2KQkJQWR2YW50ZWNoIFRlY2hub2xvZ3kgKENISU5BKSBDby4sIEx0ZC4KLQkJCQlOby42NjYsIEhhbi1QdSBSZC4gWXUtU2hhbgotCQkJCUt1bi1TaGFuIEppYW5nIFN1IDIxNTMxNgotCQkJCUNISU5BCi0KLTAwLTBCLUFDICAgKGhleCkJCTNDb20gTHRkCi0wMDBCQUMgICAgIChiYXNlIDE2KQkJM0NvbSBMdGQKLQkJCQlQZW9wbGVidWlsZGluZyAyLCBQZW9wbGVidWlsZGluZyBFc3RhdGUKLQkJCQlNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMuIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQi1BRCAgIChoZXgpCQlQQy1Qb1MgSW5jLgotMDAwQkFEICAgICAoYmFzZSAxNikJCVBDLVBvUyBJbmMuCi0JCQkJMzA5IENvbW1pc3Npb25lcnMgUm9hZCBXZXN0Ci0JCQkJTG9uZG9uIE9udGFyaW8gTjZKIDFZNAotCQkJCUNBTkFEQQotCi0wMC0wQi1BRSAgIChoZXgpCQlWaXRhbHMgU3lzdGVtIEluYy4KLTAwMEJBRSAgICAgKGJhc2UgMTYpCQlWaXRhbHMgU3lzdGVtIEluYy4KLQkJCQlKb29oZXVuZyBCL0QgNEZMLiAxMDA1LTEsIFlvdW5ndG9uZy1Eb25nCi0JCQkJU3V3b24gQ2l0eSBLeW9uZ2dpLURvIDQ0Mi04MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItQUYgICAoaGV4KQkJV09PSlUgQ09NTVVOSUNBVElPTlMgQ28sLkx0ZAotMDAwQkFGICAgICAoYmFzZSAxNikJCVdPT0pVIENPTU1VTklDQVRJT05TIENvLC5MdGQKLQkJCQlCLTcxMywgU0sgVHdpbiBUZWNoIFRvd2VyLCAzNDUtOSwgR2EtU2FuCi0JCQkJU2VvdWwgIDE1My04MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItQjAgICAoaGV4KQkJU3lzbmV0IFRlbGVtYXRpY2Egc3JsCi0wMDBCQjAgICAgIChiYXNlIDE2KQkJU3lzbmV0IFRlbGVtYXRpY2Egc3JsCi0JCQkJVmlhbGUgQmVyYmVyYSwgNDkKLQkJCQlNaWxhbiAgMjAxNjIKLQkJCQlJVEFMWQotCi0wMC0wQi1CMSAgIChoZXgpCQlTdXBlciBTdGFyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBCQjEgICAgIChiYXNlIDE2KQkJU3VwZXIgU3RhciBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiA3IExhbmUgMzA2LFNlYy4gMixUYWktTGluIFJkLgotCQkJCVRhaS1TaGFuIFNoaWFuZwotCQkJCVRhaXBlaSBIc2llbiAgMjQzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1CMiAgIChoZXgpCQlTTUFMTEJJRyBURUNITk9MT0dZCi0wMDBCQjIgICAgIChiYXNlIDE2KQkJU01BTExCSUcgVEVDSE5PTE9HWQotCQkJCTNGIERvbmdzdW5nIEJsZGcuIDcyMC05IFlva3NhbWRvbmcKLQkJCQlHYW5nbmFtZ3UgU2VvdWwgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1CMyAgIChoZXgpCQlSaVQgdGVjaG5vbG9naWVzIEx0ZC4KLTAwMEJCMyAgICAgKGJhc2UgMTYpCQlSaVQgdGVjaG5vbG9naWVzIEx0ZC4KLQkJCQkyNCBSYW91bCBXYWxlbmJlcmcgIFN0LgotCQkJCVRlbCBBdml2ICA2OTcxOQotCQkJCUlTUkFFTAotCi0wMC0wQi1CNCAgIChoZXgpCQlSREMgU2VtaWNvbmR1Y3RvciBJbmMuLAotMDAwQkI0ICAgICAoYmFzZSAxNikJCVJEQyBTZW1pY29uZHVjdG9yIEluYy4sCi0JCQkJNkYtMSAsIE5vLjItMSwgTGloc2luIFJkLCBTY2llbmNlLUJhc2VkCi0JCQkJSHNpbiBDaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItQjUgICAoaGV4KQkJblN0b3IgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBCQjUgICAgIChiYXNlIDE2KQkJblN0b3IgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTAwIFRlY2hub2xvZ3kgUGFyawotCQkJCVN1aXRlIDE3NQotCQkJCUxha2UgTWFyeSBGTCAzMjc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItQjYgICAoaGV4KQkJTW90b3RlY2ggSW5jLgotMDAwQkI2ICAgICAoYmFzZSAxNikJCU1vdG90ZWNoIEluYy4KLQkJCQk5LCBQYXJrIEF2ZW51ZSBJSSwgU2NpZW5jZS1CYXNlZCBJbmR1c3RyCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1CNyAgIChoZXgpCQlNaWNybyBTeXN0ZW1zIENvLixMdGQuCi0wMDBCQjcgICAgIChiYXNlIDE2KQkJTWljcm8gU3lzdGVtcyBDby4sTHRkLgotCQkJCTItMTUtMzQgTmlzaGlrdWJvCi0JCQkJTXVzYXNoaW5vLUNpdHkgVG9reW8gMTgwLTAwMTMKLQkJCQlKQVBBTgotCi0wMC0wQi1COCAgIChoZXgpCQlLaWhva3UgRWxlY3Ryb25pYyBDby4KLTAwMEJCOCAgICAgKGJhc2UgMTYpCQlLaWhva3UgRWxlY3Ryb25pYyBDby4KLQkJCQlNYXJ1a2F0dWJpcnUgM0YgNC05LTYKLQkJCQlOaWhvbmJhc2hpIE5hbml3YS1rdQotCQkJCU9zYWthc2hpIE9zYWthLWh1IDU1Ni0wMDA1Ci0JCQkJSkFQQU4KLQotMDAtMEItQjkgICAoaGV4KQkJSW1zeXMgQUIKLTAwMEJCOSAgICAgKGJhc2UgMTYpCQlJbXN5cyBBQgotCQkJCUpvaGFubmVzbHVuZHN2YWdlbiAzCi0JCQkJVXBwbGFuZHMgVmFzYnkgIFNFLTE5NDYxCi0JCQkJU1dFREVOCi0KLTAwLTBCLUJBICAgKGhleCkJCUhhcm1vbmljIEJyb2FkYmFuZCBBY2Nlc3MgTmV0d29ya3MKLTAwMEJCQSAgICAgKGJhc2UgMTYpCQlIYXJtb25pYyBCcm9hZGJhbmQgQWNjZXNzIE5ldHdvcmtzCi0JCQkJNTQ5IEJhbHRpYyBXYXkKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUJCICAgKGhleCkJCUV0aW4gU3lzdGVtcyBDby4sIEx0ZAotMDAwQkJCICAgICAoYmFzZSAxNikJCUV0aW4gU3lzdGVtcyBDby4sIEx0ZAotCQkJCTEyRiwgSVQgVmVudHVyZSBUb3dlciwKLQkJCQk3OCBHYXJha0Jvbi1Eb25nLCBTb25ncGEtS3UKLQkJCQlTZW91bCAgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1CQyAgIChoZXgpCQlFbiBHYXJkZSBTeXN0ZW1zLCBJbmMuCi0wMDBCQkMgICAgIChiYXNlIDE2KQkJRW4gR2FyZGUgU3lzdGVtcywgSW5jLgotCQkJCTIxMDEgV2hpdGUgQ2xvdWQgU3QuIE5FCi0JCQkJQWxidXF1ZXJxdWUgTk0gODcxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUJEICAgKGhleCkJCUNvbm5leGlvbnogTGltaXRlZAotMDAwQkJEICAgICAoYmFzZSAxNikJCUNvbm5leGlvbnogTGltaXRlZAotCQkJCTEgU2hvdyBQbGFjZQotCQkJCUNocmlzdGNodXJjaCBDYW50ZXJidXJ5IDgwMDQKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wQi1CRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCQkUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1CRiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCQkYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1DMCAgIChoZXgpCQlDaGluYSBJV05Db21tIENvLiwgTHRkLgotMDAwQkMwICAgICAoYmFzZSAxNikJCUNoaW5hIElXTkNvbW0gQ28uLCBMdGQuCi0JCQkJNEYuQyBYaWV0b25nIEJ1aWxkaW5nLE5vLjEyIEdhb3hpbiAybmQgcgotCQkJCUhpLXRlY2ggaW5kdXN0cmllcyBkZXZlbG9wbWVudCB6b25lCi0JCQkJWGknYW4gc2hhYW54aSA3MTAwNzUKLQkJCQlDSElOQQotCi0wMC0wQi1DMSAgIChoZXgpCQlCYXkgTWljcm9zeXN0ZW1zLCBJbmMuCi0wMDBCQzEgICAgIChiYXNlIDE2KQkJQmF5IE1pY3Jvc3lzdGVtcywgSW5jLgotCQkJCTI3MDAgQXVndXN0aW5lIERyaXZlCi0JCQkJU3VpdGUgMjk4Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUMyICAgKGhleCkJCUNvcmluZXggQ29tbXVuaWNhdGlvbiBDb3JwLgotMDAwQkMyICAgICAoYmFzZSAxNikJCUNvcmluZXggQ29tbXVuaWNhdGlvbiBDb3JwLgotCQkJCSMzMDggMTE2OCBIYW1pbHRvbiBTdHJlZXQKLQkJCQlWYW5jb3V2ZXIgQi5DLiBWNkIgMlMyCi0JCQkJQ0FOQURBCi0KLTAwLTBCLUMzICAgKGhleCkJCU11bHRpcGxleCwgSW5jLgotMDAwQkMzICAgICAoYmFzZSAxNikJCU11bHRpcGxleCwgSW5jLgotCQkJCTUwMDAgSGFkbGV5IFJkLgotCQkJCVMuIFBsYWluZmllbGQgTkogMDcwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUM0ICAgKGhleCkJCUJJT1RST05JSyBHbWJIICYgQ28KLTAwMEJDNCAgICAgKGJhc2UgMTYpCQlCSU9UUk9OSUsgR21iSCAmIENvCi0JCQkJV29lcm1hbm5rZWhyZSAxCi0JCQkJQmVybGluICAxMjM1OQotCQkJCUdFUk1BTlkKLQotMDAtMEItQzUgICAoaGV4KQkJU01DIE5ldHdvcmtzLCBJbmMuCi0wMDBCQzUgICAgIChiYXNlIDE2KQkJU01DIE5ldHdvcmtzLCBJbmMuCi0JCQkJMzggVGVzbGEKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUM2ICAgKGhleCkJCUlTQUMsIEluYy4KLTAwMEJDNiAgICAgKGJhc2UgMTYpCQlJU0FDLCBJbmMuCi0JCQkJUE8gQm94IDc2ODIKLQkJCQlBdWJ1cm4gQ0EgOTU2MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUM3ICAgKGhleCkJCUlDRVQgUy5wLkEuCi0wMDBCQzcgICAgIChiYXNlIDE2KQkJSUNFVCBTLnAuQS4KLQkJCQlWaWEgUXVhcnRvIE5lZ3JvbmksIDYzCi0JCQkJQ2VjY2hpbmEgZGkgQXJpY2NpYSBSb21hIDAwMDQwCi0JCQkJSVRBTFkKLQotMDAtMEItQzggICAoaGV4KQkJQWlyRmxvdyBOZXR3b3JrcwotMDAwQkM4ICAgICAoYmFzZSAxNikJCUFpckZsb3cgTmV0d29ya3MKLQkJCQk0NDQgQ2FzdHJvIFN0Ci0JCQkJU3VpdGUgMzIwCi0JCQkJTW91bnRhaW4gVmlldyBDYSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItQzkgICAoaGV4KQkJRWxlY3Ryb2xpbmUgRXF1aXBtZW50Ci0wMDBCQzkgICAgIChiYXNlIDE2KQkJRWxlY3Ryb2xpbmUgRXF1aXBtZW50Ci0JCQkJODI2NSBib3VsLiBTdC1NaWNoZWwKLQkJCQlNb250cmVhbCBRdWViZWMgSDFaIDNFNAotCQkJCUNBTkFEQQotCi0wMC0wQi1DQSAgIChoZXgpCQlEQVRBVkFOIEludGVybmF0aW9uYWwgQ29ycG9yYXRpb24KLTAwMEJDQSAgICAgKGJhc2UgMTYpCQlEQVRBVkFOIEludGVybmF0aW9uYWwgQ29ycG9yYXRpb24KLQkJCQk0RkwsIzEyMC0xMixDaHVuZyBTaGFuIFJkLCBTZWMuMwotCQkJCUNodW5nIEhvIENpdHksIFRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1DQiAgIChoZXgpCQlGYWdvciBBdXRvbWF0aW9uICwgUy4gQ29vcAotMDAwQkNCICAgICAoYmFzZSAxNikJCUZhZ29yIEF1dG9tYXRpb24gLCBTLiBDb29wCi0JCQkJU2FuIEFuZHJlcyBzL24KLQkJCQkyMDUwMCBNb25kcmFnb24KLQkJCQlHdWlwdXpjb2EgMjA1MDAKLQkJCQlTUEFJTgotCi0wMC0wQi1DQyAgIChoZXgpCQlKVVNBTiwgUy5BLgotMDAwQkNDICAgICAoYmFzZSAxNikJCUpVU0FOLCBTLkEuCi0JCQkJVml2ZXJvLCA1Ci0JCQkJTUFEUklEICAyODA0MAotCQkJCVNQQUlOCi0KLTAwLTBCLUNEICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAwQkNEICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5IFNvdXRoCi0JCQkJTVMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1DRSAgIChoZXgpCQlGcmVlMm1vdmUgQUIKLTAwMEJDRSAgICAgKGJhc2UgMTYpCQlGcmVlMm1vdmUgQUIKLQkJCQlTcGVybGluZ3NnYXRhbiA3Ci0JCQkJSGFsbXN0YWQgSGFsbGFuZCAzMDI0OAotCQkJCVNXRURFTgotCi0wMC0wQi1DRiAgIChoZXgpCQlBR0ZBIE5EVCBJTkMuCi0wMDBCQ0YgICAgIChiYXNlIDE2KQkJQUdGQSBORFQgSU5DLgotCQkJCTUwIEluZHVzdHJpYWwgUGFyayBSb2FkCi0JCQkJTGV3aXN0b3duIFBBIDE3MDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1EMCAgIChoZXgpCQlYaU1ldGEgVGVjaG5vbG9neSBBbWVyaWNhcyBJbmMuCi0wMDBCRDAgICAgIChiYXNlIDE2KQkJWGlNZXRhIFRlY2hub2xvZ3kgQW1lcmljYXMgSW5jLgotCQkJCTU0IFJheSBTdHJlZXQKLQkJCQlOZXcgQnJ1bnN3aWNrIE5KIDA4OTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1EMSAgIChoZXgpCQlBZXJvbml4LCBJbmMuCi0wMDBCRDEgICAgIChiYXNlIDE2KQkJQWVyb25peCwgSW5jLgotCQkJCTE3NzUgVy4gSGliaXNjdXMgQmx2ZCwKLQkJCQlTdWl0ZSAjMzA0Ci0JCQkJTWVsYm91cm5lIEZMIDMyOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1EMiAgIChoZXgpCQlSZW1vcHJvIFRlY2hub2xvZ3kgSW5jLgotMDAwQkQyICAgICAoYmFzZSAxNikJCVJlbW9wcm8gVGVjaG5vbG9neSBJbmMuCi0JCQkJTm8uIDQ0MywgSHVhbm5hbiBSRC4sCi0JCQkJUGluZ2plbiBDaXR5IFRhb3l1YW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1EMyAgIChoZXgpCQljZDNvCi0wMDBCRDMgICAgIChiYXNlIDE2KQkJY2QzbwotCQkJCTQwMiBXIEJyb2Fkd2F5Ci0JCQkJU2FuIERlaWdvIENBIDkyMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1ENCAgIChoZXgpCQlCZWlqaW5nIFdpc2UgVGVjaG5vbG9neSAmIFNjaWVuY2UgRGV2ZWxvcG1lbnQgQ28uTHRkCi0wMDBCRDQgICAgIChiYXNlIDE2KQkJQmVpamluZyBXaXNlIFRlY2hub2xvZ3kgJiBTY2llbmNlIERldmVsb3BtZW50IENvLkx0ZAotCQkJCTNyZCBGbG9vciBDYWlob25nIEJ1aWxkaW5nLCBOby4yLDFzdCBXZXMKLQkJCQlNYWRpYW4sIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODgKLQkJCQlDSElOQQotCi0wMC0wQi1ENSAgIChoZXgpCQlOdmVyZ2VuY2UsIEluYy4KLTAwMEJENSAgICAgKGJhc2UgMTYpCQlOdmVyZ2VuY2UsIEluYy4KLQkJCQlKZWlsIEJsZGcuIDR0aCwgU2Ftc3VuZy1kb25nIDE2OC0yNiwgS2FuCi0JCQkJU2VvdWwgIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItRDYgICAoaGV4KQkJUGF4dG9uIEFjY2VzcyBMdGQKLTAwMEJENiAgICAgKGJhc2UgMTYpCQlQYXh0b24gQWNjZXNzIEx0ZAotCQkJCVBheHRvbiBIb3VzZQotCQkJCUhvbWUgRmFybSBSb2FkCi0JCQkJQnJpZ2h0b24gRWFzdCBTdXNzZXggQk4xIDlIVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBCLUQ3ICAgKGhleCkJCURPUk1BIFRpbWUgKyBBY2Nlc3MgR21iSAotMDAwQkQ3ICAgICAoYmFzZSAxNikJCURPUk1BIFRpbWUgKyBBY2Nlc3MgR21iSAotCQkJCU1haW56ZXIgU3RyYd9lIDM2LTUyCi0JCQkJQm9ubiBOb3JkcmhlaW53ZXN0ZmFsZW4gNTMxNzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLUQ4ICAgKGhleCkJCUluZHVzdHJpYWwgU2NpZW50aWZpYyBDb3JwLgotMDAwQkQ4ICAgICAoYmFzZSAxNikJCUluZHVzdHJpYWwgU2NpZW50aWZpYyBDb3JwLgotCQkJCTEwMDEgT2FrZGFsZSBSb2FkCi0JCQkJT2FrZGFsZSBQQSAxNTA3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItRDkgICAoaGV4KQkJR2VuZXJhbCBIeWRyb2dlbgotMDAwQkQ5ICAgICAoYmFzZSAxNikJCUdlbmVyYWwgSHlkcm9nZW4KLQkJCQkxMzEyMCBWYW5pZXIgUGxhY2UKLQkJCQlSaWNobW9uZCBCcml0aXNoIENvbHVtYmlhIFY2ViAySjIKLQkJCQlDQU5BREEKLQotMDAtMEItREEgICAoaGV4KQkJRXllQ3Jvc3MgQ28uLEluYy4KLTAwMEJEQSAgICAgKGJhc2UgMTYpCQlFeWVDcm9zcyBDby4sSW5jLgotCQkJCTNGICBJaW9rYS1CdWlsZGluZwotCQkJCVRva3lvIFVlbm8gVGFpdG9oLWt1IDMtNC0xIDExMC0wMDA1Ci0JCQkJSkFQQU4KLQotMDAtMEItREIgICAoaGV4KQkJRGVsbCBFU0cgUENCQSBUZXN0Ci0wMDBCREIgICAgIChiYXNlIDE2KQkJRGVsbCBFU0cgUENCQSBUZXN0Ci0JCQkJT25lIERlbGwgV2F5Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItREMgICAoaGV4KQkJQUtDUAotMDAwQkRDICAgICAoYmFzZSAxNikJCUFLQ1AKLQkJCQk2Ny8yODUgIE11YW5nYWtlIFZpbGxhZ2UgIzgKLQkJCQlNb28gMyBWaXBhd2FkZWUgUm9hZCwgVGFtYm9sIEx1Z2hvb2sKLQkJCQlBbXBodXIgTXVhbmcgUGF0b210aGFuZWUgMTIwMDAKLQkJCQlUSEFJTEFORAotCi0wMC0wQi1ERCAgIChoZXgpCQlUT0hPS1UgUklDT0ggQ28uLCBMVEQuCi0wMDBCREQgICAgIChiYXNlIDE2KQkJVE9IT0tVIFJJQ09IIENvLiwgTFRELgotCQkJCTMtMSBTaGlubWVpZG8KLQkJCQlTaGliYXRhIE1peWFnaSBwcmVmLiA5ODktMTY5NQotCQkJCUpBUEFOCi0KLTAwLTBCLURFICAgKGhleCkJCVRFTERJWCBHbWJICi0wMDBCREUgICAgIChiYXNlIDE2KQkJVEVMRElYIEdtYkgKLQkJCQlHcmVuemhvZWZlciBXZWcgMzYKLQkJCQlIZWlkZWxiZXJnICA2OTEyMwotCQkJCUdFUk1BTlkKLQotMDAtMEItREYgICAoaGV4KQkJU2hlbnpoZW4gUm91dGVyRCBOZXR3b3JrcyBMaW1pdGVkCi0wMDBCREYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gUm91dGVyRCBOZXR3b3JrcyBMaW1pdGVkCi0JCQkJOC9GLCBCdWlsZGluZyBBLCBUc2luZ2h1YSBIaS1UZWNoIFBhcmsKLQkJCQlOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gIAotCQkJCUNISU5BCi0KLTAwLTBCLUUwICAgKGhleCkJCVNlcmNvTmV0IEx0ZC4KLTAwMEJFMCAgICAgKGJhc2UgMTYpCQlTZXJjb05ldCBMdGQuCi0JCQkJMTYgSGEnaGFyb3NoZXQgc3QuCi0JCQkJUC5PLkIuIDIwMDkKLQkJCQlSYSdhbmFuYSAgNDM2NTcKLQkJCQlJU1JBRUwKLQotMDAtMEItRTEgICAoaGV4KQkJTm9raWEgTkVUIFByb2R1Y3QgT3BlcmF0aW9ucwotMDAwQkUxICAgICAoYmFzZSAxNikJCU5va2lhIE5FVCBQcm9kdWN0IE9wZXJhdGlvbnMKLQkJCQkzMTMgRmFpcmNoaWxkIERyaXZlCi0JCQkJTW91bnRhaW4gVmlldyBDYWxpZm9ybmlhIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1FMiAgIChoZXgpCQlMdW1lbmVyYSBDb3Jwb3JhdGlvbgotMDAwQkUyICAgICAoYmFzZSAxNikJCUx1bWVuZXJhIENvcnBvcmF0aW9uCi0JCQkJMjUyMEIgU3QuIExhdXJlbnQgQmx2ZC4KLQkJCQlPdHRhd2EgT250YXJpbyBLMUIgNFI4Ci0JCQkJQ0FOQURBCi0KLTAwLTBCLUUzICAgKGhleCkJCUtleSBTdHJlYW0gQ28uLCBMdGQuCi0wMDBCRTMgICAgIChiYXNlIDE2KQkJS2V5IFN0cmVhbSBDby4sIEx0ZC4KLQkJCQlOby4gMiBOYWdhb2thIEJsZGcuIDRGLCAgMi04LTUgSGF0Y2hvYm9yCi0JCQkJQ2h1by1rdSBUb2t5byAxMDQtMDAzMgotCQkJCUpBUEFOCi0KLTAwLTBCLUU0ICAgKGhleCkJCUhvc2lkZW4gQ29ycG9yYXRpb24KLTAwMEJFNCAgICAgKGJhc2UgMTYpCQlIb3NpZGVuIENvcnBvcmF0aW9uCi0JCQkJNC0zMwotCQkJCUtpdGFreXVob2ppIDEtY2hvbWUKLQkJCQlZYW8tY2l0eSBPc2FrYSA1ODEtMDA3MQotCQkJCUpBUEFOCi0KLTAwLTBCLUU1ICAgKGhleCkJCUhJTVMgS29yZWEgQ28uLCBMdGQuCi0wMDBCRTUgICAgIChiYXNlIDE2KQkJSElNUyBLb3JlYSBDby4sIEx0ZC4KLQkJCQk1MTA1LCBIaWdoIFRlY2ggVmVudHVyZSBIYWxsLAotCQkJCTUzLTMsIEVvZXVuLWRvbmcsIFl1c2Vvbmcta3UsCi0JCQkJRGFlamVvbiBEYWVqZW9uIDMwNS04MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItRTYgICAoaGV4KQkJRGF0ZWwgRWxlY3Ryb25pY3MKLTAwMEJFNiAgICAgKGJhc2UgMTYpCQlEYXRlbCBFbGVjdHJvbmljcwotCQkJCVN0YWZmb3JkIFJvYWQKLQkJCQlTdG9uZSBTdGFmZm9yZHNoaXJlIFNUMTUgMERHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEItRTcgICAoaGV4KQkJQ09NRkxVWCBURUNITk9MT0dZIElOQy4KLTAwMEJFNyAgICAgKGJhc2UgMTYpCQlDT01GTFVYIFRFQ0hOT0xPR1kgSU5DLgotCQkJCSBSb29tIDEzMSxCbGRnLiA1MywxOTUtNTgsU2VjLjQsCi0JCQkJQ2h1bmcgSHNpbmcgUmQuLENodXR1bmcsCi0JCQkJSHNpbmNodSAgMzEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1FOCAgIChoZXgpCQlBT0lQCi0wMDBCRTggICAgIChiYXNlIDE2KQkJQU9JUAotCQkJCTYgcnVlIE1hcnlzZSBCQVNUSUUKLQkJCQlaSSBkZSBTdCBHdWVuYXVsdAotCQkJCUNPVVJDT1VST05ORVMgSWRmIDkxMDgwCi0JCQkJRlJBTkNFCi0KLTAwLTBCLUU5ICAgKGhleCkJCUFjdGVsIENvcnBvcmF0aW9uCi0wMDBCRTkgICAgIChiYXNlIDE2KQkJQWN0ZWwgQ29ycG9yYXRpb24KLQkJCQkyMDAgVmFsbGV5IFJvYWQKLQkJCQlTdWl0ZSAzMDAKLQkJCQlNdC4gQXJsaW5ndG9uIE5KIDA3ODU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1FQSAgIChoZXgpCQladWx0eXMgVGVjaG5vbG9naWVzCi0wMDBCRUEgICAgIChiYXNlIDE2KQkJWnVsdHlzIFRlY2hub2xvZ2llcwotCQkJCTc3MSBWYXF1ZXJvcyBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUVCICAgKGhleCkJCVN5c3RlZ3JhIEFHCi0wMDBCRUIgICAgIChiYXNlIDE2KQkJU3lzdGVncmEgQUcKLQkJCQlCdXJndW5kZXJzdHJhc3NlIDE1Ci0JCQkJQmVsbGFjaCBTTyA0NTEyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEItRUMgICAoaGV4KQkJTklQUE9OIEVMRUNUUklDIElOU1RSVU1FTlQsIElOQy4KLTAwMEJFQyAgICAgKGJhc2UgMTYpCQlOSVBQT04gRUxFQ1RSSUMgSU5TVFJVTUVOVCwgSU5DLgotCQkJCTMtNTYtMjEgSGlyYWRvCi0JCQkJVG90c3VrYS1rdSBZb2tvaGFtYS1zaGkgMjQ0LTA4MDIKLQkJCQlKQVBBTgotCi0wMC0wQi1FRCAgIChoZXgpCQlFTE0gSW5jLgotMDAwQkVEICAgICAoYmFzZSAxNikJCUVMTSBJbmMuCi0JCQkJMTUyNDggS2FzZWRhdGFrZWRhCi0JCQkJTWluYW1pc2F0c3VtYSBLYWdvc2hpbWEgODk3LTAwMDIKLQkJCQlKQVBBTgotCi0wMC0wQi1FRSAgIChoZXgpCQlpbmMuamV0LCBJbmNvcnBvcmF0ZWQKLTAwMEJFRSAgICAgKGJhc2UgMTYpCQlpbmMuamV0LCBJbmNvcnBvcmF0ZWQKLQkJCQlPbmUgV2lubmVuZGVuIFJvYWQKLQkJCQlOb3J3aWNoIENUIDA2MzYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1FRiAgIChoZXgpCQlDb2RlIENvcnBvcmF0aW9uCi0wMDBCRUYgICAgIChiYXNlIDE2KQkJQ29kZSBDb3Jwb3JhdGlvbgotCQkJCTExODE0IFMuIEVsZWN0aW9uIFJkLiwgU3RlIDIwMAotCQkJCURyYXBlciBVdGFoIDg0MDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1GMCAgIChoZXgpCQlNb1RFWCBQcm9kdWN0cyBDby4sIEx0ZC4KLTAwMEJGMCAgICAgKGJhc2UgMTYpCQlNb1RFWCBQcm9kdWN0cyBDby4sIEx0ZC4KLQkJCQlDLlAuTy5Cb3ggNjkxMgotCQkJCVllIEt3YW4tZG9uZyAxOS0xCi0JCQkJQ2hvbmctZ3UgU2VvdWwgODIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItRjEgICAoaGV4KQkJTEFQIExhc2VyIEFwcGxpa2F0aW9ucwotMDAwQkYxICAgICAoYmFzZSAxNikJCUxBUCBMYXNlciBBcHBsaWthdGlvbnMKLQkJCQlaZXBwZWxpbnN0cmFzc2UgMjMKLQkJCQlMdWVuZWJ1cmcgTmllZGVyc2FjaHNlbiAyMTMzNwotCQkJCUdFUk1BTlkKLQotMDAtMEItRjIgICAoaGV4KQkJQ2hpaC1LYW4gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMEJGMiAgICAgKGJhc2UgMTYpCQlDaGloLUthbiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiAyNC0xLCBQZWkgU2hpaCBDaG91LCBNaW5nIEhvIFZpbGwuCi0JCQkJU2hhbiBTdW4gSHNpYW5nIFRhaW5hbiBIc2llbiAxODAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLUYzICAgKGhleCkJCUJBRSBTWVNURU1TCi0wMDBCRjMgICAgIChiYXNlIDE2KQkJQkFFIFNZU1RFTVMKLQkJCQk2NTAwIFRyYWNvciBMYW5lCi0JCQkJQXVzdGluIFRleGFzIDc4NzI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1GNCAgIChoZXgpCQlQUklWQVRFCi0wMDBCRjQgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBCLUY1ICAgKGhleCkJCVNoYW5naGFpIFNpYm8gVGVsZWNvbSBUZWNobm9sb2d5IENvLixMdGQKLTAwMEJGNSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBTaWJvIFRlbGVjb20gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJRmxvb3IgNiBCdWlsZGluZyAxOCwzMDAgVGlhbmxpbiBSZC4KLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMEItRjYgICAoaGV4KQkJTml0Z2VuIENvLiwgTHRkCi0wMDBCRjYgICAgIChiYXNlIDE2KQkJTml0Z2VuIENvLiwgTHRkCi0JCQkJNHRoIEZMLiAxMzM3LTMxIFNlb2Noby1kb25nLCBTZW9jaG8ta3UKLQkJCQlTZW91bCAgMTM3LTg2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1GNyAgIChoZXgpCQlOSURFSyBDTy4sTFRECi0wMDBCRjcgICAgIChiYXNlIDE2KQkJTklERUsgQ08uLExURAotCQkJCTM0LTE0IE1hZWhhbWEKLQkJCQlIaXJvaXNoaS1jaG8KLQkJCQlHYW1hZ29yaSBBaWNoIDQ0My0wMDM4Ci0JCQkJSkFQQU4KLQotMDAtMEItRjggICAoaGV4KQkJSW5maW5lcmEKLTAwMEJGOCAgICAgKGJhc2UgMTYpCQlJbmZpbmVyYQotCQkJCTEzMjIgQm9yZGVhdXggRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUY5ICAgKGhleCkJCUdlbXN0b25lIGNvbW11bmljYXRpb25zLCBJbmMuCi0wMDBCRjkgICAgIChiYXNlIDE2KQkJR2Vtc3RvbmUgY29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk2RmwuLCBOby4gMTAyLCAgSGVuZ3lhbmcgUmQuCi0JCQkJVGFpcGVpICAxMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLUZBICAgKGhleCkJCUVYRU1ZUyBTUkwKLTAwMEJGQSAgICAgKGJhc2UgMTYpCQlFWEVNWVMgU1JMCi0JCQkJTE9ZT0xBIDY4MAotCQkJCUNBUElUQUwgRkVERVJBTCBCUyBBUyBDMTQxNAotCQkJCUFSR0VOVElOQQotCi0wMC0wQi1GQiAgIChoZXgpCQlELU5FVCBJbnRlcm5hdGlvbmFsIENvcnBvcmF0aW9uCi0wMDBCRkIgICAgIChiYXNlIDE2KQkJRC1ORVQgSW50ZXJuYXRpb25hbCBDb3Jwb3JhdGlvbgotCQkJCTE1LCBXdS1DaHVhbiA1dGggUm9hZCwgV3UtS3UgSW5kdXN0cmlhbAotCQkJCVRhaXBlaSAgSHNpZWggIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItRkMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQkZDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItRkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQkZEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItRkUgICAoaGV4KQkJQ0FTVEVMIEJyb2FkYmFuZCBMaW1pdGVkCi0wMDBCRkUgICAgIChiYXNlIDE2KQkJQ0FTVEVMIEJyb2FkYmFuZCBMaW1pdGVkCi0JCQkJOS9GLiwgU3VpIFlpbmcgSW5kdXN0cmlhbCBCdWlsZGluZy4sCi0JCQkJVG9rd2F3YW4gS293bG9vbiAxNTAKLQkJCQlIT05HIEtPTkcKLQotMDAtMEItRkYgICAoaGV4KQkJQmVya2VsZXkgQ2FtZXJhIEVuZ2luZWVyaW5nCi0wMDBCRkYgICAgIChiYXNlIDE2KQkJQmVya2VsZXkgQ2FtZXJhIEVuZ2luZWVyaW5nCi0JCQkJMTI3IE5hdGlvbmFsIFN0cmVldAotCQkJCVNhbnRhIENydXogQ0EgOTUwNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTAwICAgKGhleCkJCUJFQiBJbmR1c3RyaWUtRWxla3Ryb25payBBRwotMDAwQzAwICAgICAoYmFzZSAxNikJCUJFQiBJbmR1c3RyaWUtRWxla3Ryb25payBBRwotCQkJCVByb2dyZXNzYXN0cmFzc2UgMzEKLQkJCQlPYmVyYnVyZyBCRSAzNDE0Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEMtMDEgICAoaGV4KQkJQWJhdHJvbiBBRwotMDAwQzAxICAgICAoYmFzZSAxNikJCUFiYXRyb24gQUcKLQkJCQlMZXR0ZW5zdHJhc3NlIDkKLQkJCQlSb3RrcmV1eiAgQ0gtNjM0MwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBDLTAyICAgKGhleCkJCUFCQiBPeQotMDAwQzAyICAgICAoYmFzZSAxNikJCUFCQiBPeQotCQkJCVAuTy5Cb3ggODkKLQkJCQlUdXJrdSAgRklOLTIwNTIxCi0JCQkJRklOTEFORAotCi0wMC0wQy0wMyAgIChoZXgpCQlIRE1JIExpY2Vuc2luZywgTExDCi0wMDBDMDMgICAgIChiYXNlIDE2KQkJSERNSSBMaWNlbnNpbmcsIExMQwotCQkJCTEwNjAgRWFzdCBBcnF1ZXMgQXZlLgotCQkJCVN1aXRlIDEwMAotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMDQgICAoaGV4KQkJVGVjbm92YQotMDAwQzA0ICAgICAoYmFzZSAxNikJCVRlY25vdmEKLQkJCQkxNDg2IFN0LiBQYXVsIEF2ZS4KLQkJCQlHdXJuZWUgSWxsaW5vaXMgNjAwMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTA1ICAgKGhleCkJCVJQQSBSZXNlcmNoIENvLiwgTHRkLgotMDAwQzA1ICAgICAoYmFzZSAxNikJCVJQQSBSZXNlcmNoIENvLiwgTHRkLgotCQkJCTRGLCA5MC03LCBZYW5namFlLURvbmcsIFNlb2Noby1LdQotCQkJCVNlb3VsLCBLb3JlYQotCQkJCVNlb3VsICAxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTA2ICAgKGhleCkJCU5peHZ1ZSBTeXN0ZW1zICBQdGUgTHRkCi0wMDBDMDYgICAgIChiYXNlIDE2KQkJTml4dnVlIFN5c3RlbXMgIFB0ZSBMdGQKLQkJCQkzMCBMb3lhbmcgV2F5LCAjMDctMDIKLQkJCQlTaW5nYXBvcmUgU2luZ2Fwb3JlIFM1MDg3NjkKLQkJCQlTSU5HQVBPUkUKLQotMDAtMEMtMDcgICAoaGV4KQkJSWZ0ZXN0IEFHCi0wMDBDMDcgICAgIChiYXNlIDE2KQkJSWZ0ZXN0IEFHCi0JCQkJU2Nod2ltbWJhZHN0cmFzc2UgNDMKLQkJCQlXZXR0aW5nZW4gQUcgNTQzMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBDLTA4ICAgKGhleCkJCUhVTUVYIFRlY2hub2xvZ2llcyBDb3JwLgotMDAwQzA4ICAgICAoYmFzZSAxNikJCUhVTUVYIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCTVGLCBOby41LCBMYW5lIDQ0LCBTenUgV2VpIFJkLiBUYWFuIFRhaXAKLQkJCQlUYWlwZWkgIDEwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMDkgICAoaGV4KQkJSGl0YWNoaSBJRSBTeXN0ZW1zIENvLiwgTHRkCi0wMDBDMDkgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBJRSBTeXN0ZW1zIENvLiwgTHRkCi0JCQkJU2Fpd2FpLWNobyAxMjAtMSxJbmF6YXdhLXNoaQotCQkJCUFpY2hpIDQ5Mi04NjIyLEphcGFuCi0JCQkJSW5hemF3YS1zaGkgQWljaGkgNDkyLTg2MjIKLQkJCQlKQVBBTgotCi0wMC0wQy0wQSAgIChoZXgpCQlHdWFuZ2RvbmcgUHJvdmluY2UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IFJlc2VhcmNoIEluc3RpdHV0ZQotMDAwQzBBICAgICAoYmFzZSAxNikJCUd1YW5nZG9uZyBQcm92aW5jZSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgUmVzZWFyY2ggSW5zdGl0dXRlCi0JCQkJRWxlY3Ryb25pYyBUZWNobm9sb2d5IEJ1aWxkaW5nLE5PLjYxLTY1LAotCQkJCVdlc3QgWmhvbmdzaGFuIEF2ZW51ZSxUaWFuaGUgRGlzdHJpY3QKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDYzMAotCQkJCUNISU5BCi0KLTAwLTBDLTBCICAgKGhleCkJCUJyb2FkYnVzIFRlY2hub2xvZ2llcwotMDAwQzBCICAgICAoYmFzZSAxNikJCUJyb2FkYnVzIFRlY2hub2xvZ2llcwotCQkJCTgwIENlbnRyYWwgU3RyZWV0Ci0JCQkJQm94Ym9yb3VnaCBNYXNzYWNodXNldHRzIDAxNzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0wQyAgIChoZXgpCQlBUFBSTyBURUNITk9MT0dZIElOQy4KLTAwMEMwQyAgICAgKGJhc2UgMTYpCQlBUFBSTyBURUNITk9MT0dZIElOQy4KLQkJCQkxM0YsIE5vLiA2NiBDaHVuZy1DaGVuZyBSZCwKLQkJCQlIc2luLUNodWFuZyBUYWlwZWkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy0wRCAgIChoZXgpCQlDb21tdW5pY2F0aW9ucyAmIFBvd2VyIEluZHVzdHJpZXMgLyBTYXRjb20gRGl2aXNpb24KLTAwMEMwRCAgICAgKGJhc2UgMTYpCQlDb21tdW5pY2F0aW9ucyAmIFBvd2VyIEluZHVzdHJpZXMgLyBTYXRjb20gRGl2aXNpb24KLQkJCQk4MTEgSGFuc2VuIFdheSBNUyBTLTYwMAotCQkJCVBhbG8gQWx0byBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMEUgICAoaGV4KQkJWHRyZW1lU3BlY3RydW0sIEluYy4KLTAwMEMwRSAgICAgKGJhc2UgMTYpCQlYdHJlbWVTcGVjdHJ1bSwgSW5jLgotCQkJCTgxMzMgTGVlc2J1cmcgUGlrZQotCQkJCVZpZW5uYSBWQSAyMjE4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMEYgICAoaGV4KQkJVGVjaG5vLU9uZSBDby4sIEx0ZAotMDAwQzBGICAgICAoYmFzZSAxNikJCVRlY2huby1PbmUgQ28uLCBMdGQKLQkJCQk5LTE3LTEgSGlnYXNoaSBTb25vZGEKLQkJCQlBbWFnYXNha2kgSHlvZ28gNjYxLTA5NTMKLQkJCQlKQVBBTgotCi0wMC0wQy0xMCAgIChoZXgpCQlQTkkgQ29ycG9yYXRpb24KLTAwMEMxMCAgICAgKGJhc2UgMTYpCQlQTkkgQ29ycG9yYXRpb24KLQkJCQk1NDY0IFNreWxhbmUgQmx2ZCAjQQotCQkJCVNhbnRhIFJvc2EgQ0EgOTU0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTExICAgKGhleCkJCU5JUFBPTiBERU1QQSBDTy4sTFRELgotMDAwQzExICAgICAoYmFzZSAxNikJCU5JUFBPTiBERU1QQSBDTy4sTFRELgotCQkJCTEtNC04Ci0JCQkJa2FtZW5va291Ci0JCQkJa2FrZWdhd2EgY2l0eSBzaGl6dW9rYSBwcmVmLiA0MzYtMDAyOAotCQkJCUpBUEFOCi0KLTAwLTBDLTEyICAgKGhleCkJCU1pY3JvLU9wdHJvbmljLU1lc3N0ZWNobmlrIEdtYkgKLTAwMEMxMiAgICAgKGJhc2UgMTYpCQlNaWNyby1PcHRyb25pYy1NZXNzdGVjaG5payBHbWJICi0JCQkJTGVzc2luZ3N0cmFzc2UgMTQKLQkJCQlMYW5nZWJydWVjayBTYXhvbnkgRC0wMTQ2NQotCQkJCUdFUk1BTlkKLQotMDAtMEMtMTMgICAoaGV4KQkJTWVkaWFRCi0wMDBDMTMgICAgIChiYXNlIDE2KQkJTWVkaWFRCi0JCQkJMjk3NSBTYW4gWXNpZHJvIFdheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0xNCAgIChoZXgpCQlEaWFnbm9zdGljIEluc3RydW1lbnRzLCBJbmMuCi0wMDBDMTQgICAgIChiYXNlIDE2KQkJRGlhZ25vc3RpYyBJbnN0cnVtZW50cywgSW5jLgotCQkJCTY1NDAgQnVycm91Z2hzCi0JCQkJU3RlcmxpbmcgSGVpZ2h0cyBNSSA0ODMxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMTUgICAoaGV4KQkJQ3liZXJQb3dlciBTeXN0ZW1zLCBJbmMuCi0wMDBDMTUgICAgIChiYXNlIDE2KQkJQ3liZXJQb3dlciBTeXN0ZW1zLCBJbmMuCi0JCQkJNkYsIE5vLiAzMiwgU2VjLiAxLCBDaGVuZ2dvbmcgUmQuCi0JCQkJTmFuaGFuZyBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTE1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy0xNiAgIChoZXgpCQlDb25jb3JkZSBNaWNyb3N5c3RlbXMgSW5jLgotMDAwQzE2ICAgICAoYmFzZSAxNikJCUNvbmNvcmRlIE1pY3Jvc3lzdGVtcyBJbmMuCi0JCQkJMTA0MjcgQ29nZGlsbCBSb2FkLCBTdWl0ZSA1MDAKLQkJCQlLbm94dmlsbGUgVE4gMzc5MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTE3ICAgKGhleCkJCUFKQSBWaWRlbyBTeXN0ZW1zIEluYwotMDAwQzE3ICAgICAoYmFzZSAxNikJCUFKQSBWaWRlbyBTeXN0ZW1zIEluYwotCQkJCTQ0MyBDcm93biBQb2ludCBDaXJjbGUKLQkJCQlHcmFzcyBWYWxsZXkgQ2FsaWZvcm5pYSA5NTk0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMTggICAoaGV4KQkJWmVuaXN1IEtlaXNva3UgSW5jLgotMDAwQzE4ICAgICAoYmFzZSAxNikJCVplbmlzdSBLZWlzb2t1IEluYy4KLQkJCQkyLTEzLTM3Ci0JCQkJSG9ubWFjaGkKLQkJCQlGdWNodS1zaGkgVG9reW8gMTgzLTAwMjcKLQkJCQlKQVBBTgotCi0wMC0wQy0xOSAgIChoZXgpCQlUZWxpbyBDb21tdW5pY2F0aW9ucyBHbWJICi0wMDBDMTkgICAgIChiYXNlIDE2KQkJVGVsaW8gQ29tbXVuaWNhdGlvbnMgR21iSAotCQkJCUVsYmNoYXVzc2VlIDEKLQkJCQlIYW1idXJnICAyMjc2NQotCQkJCUdFUk1BTlkKLQotMDAtMEMtMUEgICAoaGV4KQkJUXVlc3QgVGVjaG5pY2FsIFNvbHV0aW9ucyBJbmMuCi0wMDBDMUEgICAgIChiYXNlIDE2KQkJUXVlc3QgVGVjaG5pY2FsIFNvbHV0aW9ucyBJbmMuCi0JCQkJNDExMCBNb3VybmluZyBEb3ZlIENydC4KLQkJCQlNZWxib3VybmUgRkwgMzI5MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTFCICAgKGhleCkJCU9SQUNPTSBDbywgTHRkLgotMDAwQzFCICAgICAoYmFzZSAxNikJCU9SQUNPTSBDbywgTHRkLgotCQkJCTNyZCBGbCwgQS1TdW5nIEJsZGcsIDk5OS0zCi0JCQkJRGVhY2hpLURvbmcsIEthbmduYW0tR3UKLQkJCQlTZW91bCAgMTM1LTI4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0xQyAgIChoZXgpCQlNaWNyb1dlYiBDby4sIEx0ZC4KLTAwMEMxQyAgICAgKGJhc2UgMTYpCQlNaWNyb1dlYiBDby4sIEx0ZC4KLQkJCQk0MDMgVC9TL1MvQywgMjMtMTQgSmFuZy1kb25nLCBZdXNvbmctZ3UsCi0JCQkJRGFlamVvbiBDaG9vbmdDaHVuZ0RvIDMwNS0zNDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtMUQgICAoaGV4KQkJTWV0dGxlciAmIEZ1Y2hzIEFHCi0wMDBDMUQgICAgIChiYXNlIDE2KQkJTWV0dGxlciAmIEZ1Y2hzIEFHCi0JCQkJUXVlcnN0cmFzc2UgMTcKLQkJCQlDSC04OTUxIEZhaHJ3ZWlkIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBDLTFFICAgKGhleCkJCUdsb2JhbCBDYWNoZQotMDAwQzFFICAgICAoYmFzZSAxNikJCUdsb2JhbCBDYWNoZQotCQkJCTE2MCBFYXN0IENhbGlmb3JuaWEgU3RyZWV0Ci0JCQkJUE9CIDE2NTkKLQkJCQlKYWNrc29udmlsbGUgT1IgOTc1MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTFGICAgKGhleCkJCUdsaW1tZXJnbGFzcyBOZXR3b3JrcwotMDAwQzFGICAgICAoYmFzZSAxNikJCUdsaW1tZXJnbGFzcyBOZXR3b3JrcwotCQkJCTI2MTQyIEVkZW4gTGFuZGluZyBSb2FkCi0JCQkJSGF5d2FyZCBDYWxpZm9ybmlhIDk0NTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0yMCAgIChoZXgpCQlGaSBXSW4sIEluYy4KLTAwMEMyMCAgICAgKGJhc2UgMTYpCQlGaSBXSW4sIEluYy4KLQkJCQk4RiwgTm8uIDEwLCBQcm9zcGVyaXR5IFJkLiAxLAotCQkJCVNjaWVuY2UgQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbiBDaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMjEgICAoaGV4KQkJRmFjdWx0eSBvZiBTY2llbmNlIGFuZCBUZWNobm9sb2d5LCBLZWlvIFVuaXZlcnNpdHkKLTAwMEMyMSAgICAgKGJhc2UgMTYpCQlGYWN1bHR5IG9mIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3ksIEtlaW8gVW5pdmVyc2l0eQotCQkJCTMtMTQtMSBIaXlvc2hpLCBLb2hva3Uta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjMtODUyMgotCQkJCUpBUEFOCi0KLTAwLTBDLTIyICAgKGhleCkJCURvdWJsZSBEIEVsZWN0cm9uaWNzIEx0ZAotMDAwQzIyICAgICAoYmFzZSAxNikJCURvdWJsZSBEIEVsZWN0cm9uaWNzIEx0ZAotCQkJCVVuaXQgNiwgUm9iaW5zIFdoYXJmCi0JCQkJR3JvdmUgUm9hZAotCQkJCU5vcnRoZmxlZXQgS2VudCBEQTExIDlBWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBDLTIzICAgKGhleCkJCUJlaWppbmcgTGFuY2h1YW4gVGVjaC4gQ28uLCBMdGQuCi0wMDBDMjMgICAgIChiYXNlIDE2KQkJQmVpamluZyBMYW5jaHVhbiBUZWNoLiBDby4sIEx0ZC4KLQkJCQlSbTIyMCxOby4zMCBTaGFuZ3l1YW5jdW4sCi0JCQkJR2FvbGlhbmdxaWFvbHUsSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA0NAotCQkJCUNISU5BCi0KLTAwLTBDLTI0ICAgKGhleCkJCUFOQVRPUgotMDAwQzI0ICAgICAoYmFzZSAxNikJCUFOQVRPUgotCQkJCTQ0LCBydWUgZCdFc3RpZW5uZSBkJ09ydmVzCi0JCQkJc2FydHJvdXZpbGxlIHl2ZWxpbmVzIDc4NTAwCi0JCQkJRlJBTkNFCi0KLTAwLTBDLTI1ICAgKGhleCkJCUFsbGllZCBUZWxlc3luIE5ldHdvcmtzCi0wMDBDMjUgICAgIChiYXNlIDE2KQkJQWxsaWVkIFRlbGVzeW4gTmV0d29ya3MKLQkJCQlTdWl0ZSA0NTAKLQkJCQk5MjAgTWFpbiBDYW1wdXMgRHJpdmUKLQkJCQlSYWxlaWdoIE5DIDI3NjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0yNiAgIChoZXgpCQlXZWludGVrIExhYnMuIEluYy4KLTAwMEMyNiAgICAgKGJhc2UgMTYpCQlXZWludGVrIExhYnMuIEluYy4KLQkJCQkzRiwgTm8uOTEwLCBDaHVuZyBDaGVuZyBSZC4KLQkJCQlDaHVuZyBIbyBjaXR5IFRhaXBlaSBIc2llbiAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTI3ICAgKGhleCkJCVNhbW15IENvcnBvcmF0aW9uCi0wMDBDMjcgICAgIChiYXNlIDE2KQkJU2FtbXkgQ29ycG9yYXRpb24KLQkJCQlTVU4gU0hJTkU2MCA0NUYsMy0xLTEsSElHQVNISS1JS0VCVUtVUk8KLQkJCQlUT1NISU1BLUtVIFRPS1lPIDE3MC02MDQ1Ci0JCQkJSkFQQU4KLQotMDAtMEMtMjggICAoaGV4KQkJUklGQVRST04KLTAwMEMyOCAgICAgKGJhc2UgMTYpCQlSSUZBVFJPTgotCQkJCTl0aCBGTCwgU0hJTlRBRVlBTkcgQkxERwotCQkJCTczNi04LCBCQU5QTy1ET05HCi0JCQkJU0VPVUwgU0VPQ0hPLUdVIDEzNy0wNDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtMjkgICAoaGV4KQkJVk13YXJlLCBJbmMuCi0wMDBDMjkgICAgIChiYXNlIDE2KQkJVk13YXJlLCBJbmMuCi0JCQkJMzQwMSBIaWxsdmlldyBBdmVudWUKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTJBICAgKGhleCkJCU9DVFRFTCBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotMDAwQzJBICAgICAoYmFzZSAxNikJCU9DVFRFTCBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotCQkJCTdGLTEsIE5vLjMwMCwgRGFkdWVuIDEwdGggU3QuCi0JCQkJVGFpY2h1bmcgQ2l0eSAgNDA4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy0yQiAgIChoZXgpCQlFTElBUyBUZWNobm9sb2d5LCBJbmMuCi0wMDBDMkIgICAgIChiYXNlIDE2KQkJRUxJQVMgVGVjaG5vbG9neSwgSW5jLgotCQkJCTNGLCAxMDE1LCBZdW5nLUFuIFJvYWQsCi0JCQkJVGFveXVhbiBDaXR5IFRhb3l1YW4gMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy0yQyAgIChoZXgpCQlFbndpc2VyIEluYy4KLTAwMEMyQyAgICAgKGJhc2UgMTYpCQlFbndpc2VyIEluYy4KLQkJCQk0RiwgQ2hlb25nc2VvayBCL0QKLQkJCQkxMzUtMTEsIE5vbmh5ZW9uLWRvbmcsIEthbmduYW0ta3UKLQkJCQlTZW91bCBTZW91bCAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTJEICAgKGhleCkJCUZ1bGxXYXZlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBDMkQgICAgIChiYXNlIDE2KQkJRnVsbFdhdmUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk3Ri02LCBOby4yNiwgVGFpWXVhbiBTdC4sCi0JCQkJSnVCZWkgSHNpbiBDaHUgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy0yRSAgIChoZXgpCQlPcGVuZXQgaW5mb3JtYXRpb24gdGVjaG5vbG9neShzaGVuemhlbikgQ28uLCBMdGQuCi0wMDBDMkUgICAgIChiYXNlIDE2KQkJT3BlbmV0IGluZm9ybWF0aW9uIHRlY2hub2xvZ3koc2hlbnpoZW4pIENvLiwgTHRkLgotCQkJCTIvRixBIHRvd2VyLGludGVybmF0aW9uYWwgdGVjaC1pbm5vdmF0aW8KLQkJCQloaWdoLXRlY2ggaW5kdXN0cmlhbCBwYXJrICxzaGVuemhlbiwgUC5SCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTBDLTJGICAgKGhleCkJCVNlb3JpbVRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMEMyRiAgICAgKGJhc2UgMTYpCQlTZW9yaW1UZWNobm9sb2d5IENvLixMdGQuCi0JCQkJMkYgRElQTE9NQVRJQyBDRU5URVIgQi9EIDEzNzYtMSBTRU9DSE8yLQotCQkJCVNFT1VMICAxMzctMDcyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTMwICAgKGhleCkJCUNpc2NvCi0wMDBDMzAgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMzEgICAoaGV4KQkJQ2lzY28KLTAwMEMzMSAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENhIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0zMiAgIChoZXgpCQlBdmlvbmljIERlc2lnbiBEZXZlbG9wbWVudCBHbWJICi0wMDBDMzIgICAgIChiYXNlIDE2KQkJQXZpb25pYyBEZXNpZ24gRGV2ZWxvcG1lbnQgR21iSAotCQkJCVN0aGFtZXJzdHJhc3NlIDI0YQotCQkJCUhhbWJ1cmcgIDIyMzk3Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy0zMyAgIChoZXgpCQlDb21wdWNhc2UgRW50ZXJwcmlzZSBDby4gTHRkLgotMDAwQzMzICAgICAoYmFzZSAxNikJCUNvbXB1Y2FzZSBFbnRlcnByaXNlIENvLiBMdGQuCi0JCQkJMjI1IExhbmUgNTQsIEFuIEhvIFJvYWQsIFNlY3Rpb24gMm5kLgotCQkJCVRhaW5hbiBDaXR5ICA3MDk0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMzQgICAoaGV4KQkJVml4ZW4gQ28uLCBMdGQuCi0wMDBDMzQgICAgIChiYXNlIDE2KQkJVml4ZW4gQ28uLCBMdGQuCi0JCQkJNS0xNy0zIEhpZ2FzaGl0b2tvcm96YXdhCi0JCQkJVG9rb3JvemF3YSBTYWl0YW1hIDM1OS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMEMtMzUgICAoaGV4KQkJS2FWbyBEZW50YWwgR21iSCAmIENvLiBLRwotMDAwQzM1ICAgICAoYmFzZSAxNikJCUthVm8gRGVudGFsIEdtYkggJiBDby4gS0cKLQkJCQlCaXNtYXJrcmluZyAzOQotCQkJCUJpYmVyYWNoL1Jpc3MgQmFkZW4tV3VlcnR0ZW1iZXJnIDg4NDAwCi0JCQkJR0VSTUFOWQotCi0wMC0wQy0zNiAgIChoZXgpCQlTSEFSUCBUQUtBWUEgRUxFQ1RST05JQ1MgSU5EVVNUUlkgQ08uLExURC4KLTAwMEMzNiAgICAgKGJhc2UgMTYpCQlTSEFSUCBUQUtBWUEgRUxFQ1RST05JQ1MgSU5EVVNUUlkgQ08uLExURC4KLQkJCQkzMTIxLTEgU2F0b21pIFNhdG9zaG8tY2hvCi0JCQkJQXNha3VjaGktZ3VuIE9rYXlhbWEgNzE5LTAzMDEKLQkJCQlKQVBBTgotCi0wMC0wQy0zNyAgIChoZXgpCQlHZW9tYXRpb24sIEluYy4KLTAwMEMzNyAgICAgKGJhc2UgMTYpCQlHZW9tYXRpb24sIEluYy4KLQkJCQkyNTE4OCBHZW5lc2VlIFRyYWlsIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlHb2xkZW4gQ08gODA0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTM4ICAgKGhleCkJCVRlbGNvQnJpZGdlcyBJbmMuCi0wMDBDMzggICAgIChiYXNlIDE2KQkJVGVsY29CcmlkZ2VzIEluYy4KLQkJCQk1ODYgRHUgQ2hlbmFsCi0JCQkJUmVwZW50aWdueSBRdWViZWMgSjZBIDdDNQotCQkJCUNBTkFEQQotCi0wMC0wQy0zOSAgIChoZXgpCQlTZW50aW5lbCBXaXJlbGVzcyBJbmMuCi0wMDBDMzkgICAgIChiYXNlIDE2KQkJU2VudGluZWwgV2lyZWxlc3MgSW5jLgotCQkJCTQzOSBTLiBVbmlvbiBTdC4KLQkJCQlTb3V0aCBMYXdyZW5jZSBNQSAwMTg0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtM0EgICAoaGV4KQkJT3hhbmNlCi0wMDBDM0EgICAgIChiYXNlIDE2KQkJT3hhbmNlCi0JCQkJNzUtODUgcnVlIFJpY2hlbGlldQotCQkJCWxlcyBMdWNzIHN1ciBCb3Vsb2duZSAgODUxNzAKLQkJCQlGUkFOQ0UKLQotMDAtMEMtM0IgICAoaGV4KQkJT3Jpb24gRWxlY3RyaWMgQ28uLCBMdGQuCi0wMDBDM0IgICAgIChiYXNlIDE2KQkJT3Jpb24gRWxlY3RyaWMgQ28uLCBMdGQuCi0JCQkJNDEtMSwgSWVoaXNhLWNobwotCQkJCVRha2VmdS1zaGkgRnVrdWkgOTE1LTg1NTUKLQkJCQlKQVBBTgotCi0wMC0wQy0zQyAgIChoZXgpCQlNZWRpYUNob3J1cywgSW5jLgotMDAwQzNDICAgICAoYmFzZSAxNikJCU1lZGlhQ2hvcnVzLCBJbmMuCi0JCQkJIzIwNSwgRVRSSSBUQkkgMiBDZW50ZXIKLQkJCQlVZXVuLURvbmcsIFl1c29uZy1HdQotCQkJCURhZWpvbiBESiAzMDUtMzMzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTNEICAgKGhleCkJCUdsc3lzdGVjaCBDby4sIEx0ZC4KLTAwMEMzRCAgICAgKGJhc2UgMTYpCQlHbHN5c3RlY2ggQ28uLCBMdGQuCi0JCQkJU29uZyBCbyBCL0QgM0YKLQkJCQkyMTItMTAsIEt1bmctRG9uZywgS3VybyBHdQotCQkJCVNlb3VsICAxNTItODgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTNFICAgKGhleCkJCUNyZXN0IEF1ZGlvCi0wMDBDM0UgICAgIChiYXNlIDE2KQkJQ3Jlc3QgQXVkaW8KLQkJCQkxNi0wMCBQb2xsaXR0IERyaXZlCi0JCQkJRmFpciBMYXduIE5KIDA3NDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0zRiAgIChoZXgpCQlDb2dlbnQgRGVmZW5jZSAmIFNlY3VyaXR5IE5ldHdvcmtzLAotMDAwQzNGICAgICAoYmFzZSAxNikJCUNvZ2VudCBEZWZlbmNlICYgU2VjdXJpdHkgTmV0d29ya3MsCi0JCQkJTWVhZG93cyBSb2FkLAotCQkJCVF1ZWVuc3dheSBNZWFkb3dzIEluZCBFc3RhdGUsCi0JCQkJTmV3cG9ydCwgU291dGggV2FsZXMsIE5QMTkgNFNTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEMtNDAgICAoaGV4KQkJQWx0ZWNoIENvbnRyb2xzCi0wMDBDNDAgICAgIChiYXNlIDE2KQkJQWx0ZWNoIENvbnRyb2xzCi0JCQkJMTU0NSBJbmR1c3RpYWwgRHJpdmUKLQkJCQlNaXNzb3VyaSBDaXR5IFRleGFzIDc3NDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy00MSAgIChoZXgpCQlDaXNjby1MaW5rc3lzCi0wMDBDNDEgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cwotCQkJCTEyMSBUaGVvcnkgRHIuCi0JCQkJSXJ2aW5lIENBIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy00MiAgIChoZXgpCQlSb3V0ZXJib2FyZC5jb20KLTAwMEM0MiAgICAgKGJhc2UgMTYpCQlSb3V0ZXJib2FyZC5jb20KLQkJCQlQZXJuYXZhcyA0NgotCQkJCVJpZ2EgIExWLTEwMDkKLQkJCQlMQVRWSUEKLQotMDAtMEMtNDMgICAoaGV4KQkJUmFsaW5rIFRlY2hub2xvZ3ksIENvcnAuCi0wMDBDNDMgICAgIChiYXNlIDE2KQkJUmFsaW5rIFRlY2hub2xvZ3ksIENvcnAuCi0JCQkJNEYsIE5vLjIsIFRlY2hub2xvZ3kgNXRoIFJvYWQsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbi1DaHUgIDIwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtNDQgICAoaGV4KQkJQXV0b21hdGVkIEludGVyZmFjZXMsIEluYy4KLTAwMEM0NCAgICAgKGJhc2UgMTYpCQlBdXRvbWF0ZWQgSW50ZXJmYWNlcywgSW5jLgotCQkJCTEyMCBDb25mZWRlcmF0ZSBMYW5lCi0JCQkJR3JlZXIgU291dGggQ2Fyb2xpbmEgMjk2NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTQ1ICAgKGhleCkJCUFuaW1hdGlvbiBUZWNobm9sb2dpZXMgSW5jLgotMDAwQzQ1ICAgICAoYmFzZSAxNikJCUFuaW1hdGlvbiBUZWNobm9sb2dpZXMgSW5jLgotCQkJCThGLE5vLjEzOCxMYW5lIDIzNSxQYW9jaGlhbyBSb2FkLAotCQkJCUhzaW4gVGllbgotCQkJCVRhaXBlaSBIc2llbiAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy00NiAgIChoZXgpCQlBbGxpZWQgVGVsZXN5biBJbmMuCi0wMDBDNDYgICAgIChiYXNlIDE2KQkJQWxsaWVkIFRlbGVzeW4gSW5jLgotCQkJCTk2MCBTdGV3YXJ0IERyaXZlLCBTdWl0ZSBCCi0JCQkJU3Vubnl2YWxlIENhbGlmb3JuaWEgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTQ3ICAgKGhleCkJCVNLIFRlbGV0ZWNoKFImRCBQbGFubmluZyBUZWFtKQotMDAwQzQ3ICAgICAoYmFzZSAxNikJCVNLIFRlbGV0ZWNoKFImRCBQbGFubmluZyBUZWFtKQotCQkJCTIxdGggRkwgU3RhcnRvd2VyIDczNywgWWVva3NhbS1kb25nCi0JCQkJS2FuZ25hbS1LdQotCQkJCVNlb3VsICAxMzUtOTg0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTQ4ICAgKGhleCkJCVFvU3RlayBDb3Jwb3JhdGlvbgotMDAwQzQ4ICAgICAoYmFzZSAxNikJCVFvU3RlayBDb3Jwb3JhdGlvbgotCQkJCTdGLCAyMiwgVGFpeXVlbiBTdHJlZXQKLQkJCQlDaHVwZWkgSHNpbmNodSBIc2llbiAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTQ5ICAgKGhleCkJCURhbmdhYXJkIFRlbGVjb20gUlRDIERpdmlzaW9uIEEvUwotMDAwQzQ5ICAgICAoYmFzZSAxNikJCURhbmdhYXJkIFRlbGVjb20gUlRDIERpdmlzaW9uIEEvUwotCQkJCUluZHVzdHJpdmVqIDEKLQkJCQlESyAyNjE1NDU1MwotCQkJCVBhZGJvcmcgIERLLTYzMzAKLQkJCQlERU5NQVJLCi0KLTAwLTBDLTRBICAgKGhleCkJCUN5Z251cyBNaWNyb3N5c3RlbXMgKFApIExpbWl0ZWQKLTAwMEM0QSAgICAgKGJhc2UgMTYpCQlDeWdudXMgTWljcm9zeXN0ZW1zIChQKSBMaW1pdGVkCi0JCQkJOTMsIFBoYXNlIElJLAotCQkJCUlEQSwgQ2hlcmxhcGFsbHkKLQkJCQlIeWRlcmFiYWQgQW5kaHJhIFByYWRlc2ggNTAwMDUxCi0JCQkJSU5ESUEKLQotMDAtMEMtNEIgICAoaGV4KQkJQ2hlb3BzIEVsZWt0cm9uaWsKLTAwMEM0QiAgICAgKGJhc2UgMTYpCQlDaGVvcHMgRWxla3Ryb25pawotCQkJCUplc2Noa2Vuc3RyYXNzZSAzMgotCQkJCUdlcmV0c3JpZWQgQmF5ZXJuIDgyNTM4Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy00QyAgIChoZXgpCQlBcmNvciBBRyZDby4KLTAwMEM0QyAgICAgKGJhc2UgMTYpCQlBcmNvciBBRyZDby4KLQkJCQlBbGZyZWQtSGVycmhhdXNlbi1BbGxlZSAxCi0JCQkJRXNjaGJvcm4gSGVzc2VuIDY1NzYwCi0JCQkJR0VSTUFOWQotCi0wMC0wQy00RCAgIChoZXgpCQlBQ1JBIENPTlRST0wKLTAwMEM0RCAgICAgKGJhc2UgMTYpCQlBQ1JBIENPTlRST0wKLQkJCQlMYW5kc2NhcGUgSG91c2UsCi0JCQkJTGFuZHNjYXBlIFJvYWQsCi0JCQkJQ2h1cmNodG93biwgRHVibGluIDE0Ci0JCQkJSVJFTEFORAotCi0wMC0wQy00RSAgIChoZXgpCQlXaW5iZXN0IFRlY2hub2xvZ3kgQ08sTFQKLTAwMEM0RSAgICAgKGJhc2UgMTYpCQlXaW5iZXN0IFRlY2hub2xvZ3kgQ08sTFQKLQkJCQk3Ri01Tm8uNzM2IENodW5nIENoZW5nUmQuLENodW5nSG8KLQkJCQlUYWlwZWkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtNEYgICAoaGV4KQkJVURUZWNoIEphcGFuIENvcnBvcmF0aW9uCi0wMDBDNEYgICAgIChiYXNlIDE2KQkJVURUZWNoIEphcGFuIENvcnBvcmF0aW9uCi0JCQkJSGFtYWNobyBIYW5hY2hvIEJsZGcsIDJGCi0JCQkJMi0xNy04IE5paG9uYmFzaGktSGFtYWNobwotCQkJCUNodW8ta3UgVG9reW8gMTAzLTAwMDcKLQkJCQlKQVBBTgotCi0wMC0wQy01MCAgIChoZXgpCQlTZWFnYXRlIFRlY2hub2xvZ3kKLTAwMEM1MCAgICAgKGJhc2UgMTYpCQlTZWFnYXRlIFRlY2hub2xvZ3kKLQkJCQkxMjgwIERpc2MgRHJpdmUKLQkJCQlTaGFrb3BlZSBNTiA1NTM3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNTEgICAoaGV4KQkJU2NpZW50aWZpYyBUZWNobm9sb2dpZXMgSW5jLgotMDAwQzUxICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk2NTUwIER1bWJhcnRvbiBDaXJjbGUKLQkJCQlGcmVtb250IENBIDk0NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy01MiAgIChoZXgpCQlSb2xsIFN5c3RlbXMgSW5jLgotMDAwQzUyICAgICAoYmFzZSAxNikJCVJvbGwgU3lzdGVtcyBJbmMuCi0JCQkJNTMgVGhpcmQgQXZlbnVlCi0JCQkJQnVybGluZ3RvbiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNTMgICAoaGV4KQkJUFJJVkFURQotMDAwQzUzICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wQy01NCAgIChoZXgpCQlQZWRlc3RhbCBOZXR3b3JrcywgSW5jCi0wMDBDNTQgICAgIChiYXNlIDE2KQkJUGVkZXN0YWwgTmV0d29ya3MsIEluYwotCQkJCTY1MDMgRHVtYmFydG9uIENpcmNsZQotCQkJCUZyZW1vbnQgQ0EgOTQ1NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTU1ICAgKGhleCkJCU1pY3JvbGluayBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDBDNTUgICAgIChiYXNlIDE2KQkJTWljcm9saW5rIENvbW11bmljYXRpb25zIEluYy4KLQkJCQk4RiwgMzEsIEhzaW50YWkgUm9hZAotCQkJCUNodXBlaSBDaXR5Ci0JCQkJSHNpbmNodSAgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy01NiAgIChoZXgpCQlNZWdhdGVsIENvbXB1dGVyICgxOTg2KSBDb3JwLgotMDAwQzU2ICAgICAoYmFzZSAxNikJCU1lZ2F0ZWwgQ29tcHV0ZXIgKDE5ODYpIENvcnAuCi0JCQkJNTg2IE1haW4gU3RyZWV0Ci0JCQkJR2xlbiBXaWxsaWFtcyBPbnRhcmlvIEw3RyAzVDYKLQkJCQlDQU5BREEKLQotMDAtMEMtNTcgICAoaGV4KQkJTUFDS0lFIEVuZ2luZWVyaW5nIFNlcnZpY2VzIEJlbGdpdW0gQlZCQQotMDAwQzU3ICAgICAoYmFzZSAxNikJCU1BQ0tJRSBFbmdpbmVlcmluZyBTZXJ2aWNlcyBCZWxnaXVtIEJWQkEKLQkJCQlJbmR1c3RyaWVwYXJrIE5vb3JkIDEwCi0JCQkJU2ludCBOaWtsYWFzICBCLTkxMDAKLQkJCQlCRUxHSVVNCi0KLTAwLTBDLTU4ICAgKGhleCkJCU0mUyBTeXN0ZW1zCi0wMDBDNTggICAgIChiYXNlIDE2KQkJTSZTIFN5c3RlbXMKLQkJCQkyODYxIENvbmdyZXNzbWFuIExhbmUKLQkJCQlEYWxsYXMgVFggNzUyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTU5ICAgKGhleCkJCUluZHltZSBFbGVjdHJvbmljcywgSW5jLgotMDAwQzU5ICAgICAoYmFzZSAxNikJCUluZHltZSBFbGVjdHJvbmljcywgSW5jLgotCQkJCTkwODUgQWVybyBEci4KLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTVBICAgKGhleCkJCUlCU21tIEluZHVzdHJpZWVsZWt0cm9uaWsgTXVsdGltZWRpYQotMDAwQzVBICAgICAoYmFzZSAxNikJCUlCU21tIEluZHVzdHJpZWVsZWt0cm9uaWsgTXVsdGltZWRpYQotCQkJCUF5aW5nZXIgU3RyLiAxCi0JCQkJRmFpc3RlbmhhYXIKLQkJCQlCcnVubnRoYWwgQmF2YXJpYSBELTg1NjQ5Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy01QiAgIChoZXgpCQlIQU5XQU5HIFRFQ0hOT0xPR1kgQ08uLExURAotMDAwQzVCICAgICAoYmFzZSAxNikJCUhBTldBTkcgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJOEYsQXV0b21hdGlvbiBCdWlsZGluZyw5NSBaaG9uZ2d1YW5jdW4sCi0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4MAotCQkJCUNISU5BCi0KLTAwLTBDLTVDICAgKGhleCkJCUdUTiBTeXN0ZW1zIEIuVi4KLTAwMEM1QyAgICAgKGJhc2UgMTYpCQlHVE4gU3lzdGVtcyBCLlYuCi0JCQkJUG9zdGJ1cyAxMjIzNgotCQkJCTExMDAgQUUKLQkJCQlBbXN0ZXJkYW0gIAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBDLTVEICAgKGhleCkJCUNISUMgVEVDSE5PTE9HWSAoQ0hJTkEpIENPUlAuCi0wMDBDNUQgICAgIChiYXNlIDE2KQkJQ0hJQyBURUNITk9MT0dZIChDSElOQSkgQ09SUC4KLQkJCQk3dGggQnVpbGRpbmcsU2hpJ2FvIEluZC5ab25lLExvbmdodWEgVG93Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwOQotCQkJCUNISU5BCi0KLTAwLTBDLTVFICAgKGhleCkJCUNhbHlwc28gTWVkaWNhbAotMDAwQzVFICAgICAoYmFzZSAxNikJCUNhbHlwc28gTWVkaWNhbAotCQkJCTIxMDEgRm91cnRoIEF2ZW51ZSwgU3VpdGUgMTU1MAotCQkJCVNlYXR0bGUgV0EgOTgxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTVGICAgKGhleCkJCUF2dGVjLCBJbmMuCi0wMDBDNUYgICAgIChiYXNlIDE2KQkJQXZ0ZWMsIEluYy4KLQkJCQk0MzM1IEF1Z3VzdGEgSHd5Ci0JCQkJR2lsYmVydCBTQyAyOTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNjAgICAoaGV4KQkJQUNNIFN5c3RlbXMKLTAwMEM2MCAgICAgKGJhc2UgMTYpCQlBQ00gU3lzdGVtcwotCQkJCTMwMzQgR29sZCBDYW5hbCBEcml2ZQotCQkJCVJhbmNobyBDb3Jkb3ZhIENBIDk1NjcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy02MSAgIChoZXgpCQlBQyBUZWNoIGNvcnBvcmF0aW9uIERCQSBBZHZhbmNlZCBEaWdpdGFsCi0wMDBDNjEgICAgIChiYXNlIDE2KQkJQUMgVGVjaCBjb3Jwb3JhdGlvbiBEQkEgQWR2YW5jZWQgRGlnaXRhbAotCQkJCTEyNTAtRyBBdmVuaWRhIEFjYXNvCi0JCQkJQ2FtYXJpbGxvIENBIDkzMDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy02MiAgIChoZXgpCQlBQkIgQUIsIENld2UtQ29udHJvbCAKLTAwMEM2MiAgICAgKGJhc2UgMTYpCQlBQkIgQUIsIENld2UtQ29udHJvbCAKLQkJCQlEZXB0LiBMUENDL1JFIAotCQkJCU1vdG9yZ3JhbmQgMjAKLQkJCQlWYXN0ZXJhcyAgNzIxIDYxCi0JCQkJU1dFREVOCi0KLTAwLTBDLTYzICAgKGhleCkJCVplbml0aCBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgotMDAwQzYzICAgICAoYmFzZSAxNikJCVplbml0aCBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgotCQkJCTIwMDAgTWlsbGJyb29rIERyaXZlCi0JCQkJTGluY29sbnNoaXJlIElsbGlub2lzIDYwMDY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy02NCAgIChoZXgpCQlYMiBNU0EgR3JvdXAKLTAwMEM2NCAgICAgKGJhc2UgMTYpCQlYMiBNU0EgR3JvdXAKLQkJCQlDYXJlIG9mOiBBZ2lsZW50IFRlY2hub2xvZ2llcwotCQkJCVdoaXRlIEhvdXNlIFJvYWQKLQkJCQlJcHN3aWNoLCBTdWZmb2xrIElQMSA1UEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQy02NSAgIChoZXgpCQlTdW5pbiBUZWxlY29tCi0wMDBDNjUgICAgIChiYXNlIDE2KQkJU3VuaW4gVGVsZWNvbQotCQkJCTEwMjUtNSBEb2tvay1SaSwgV2FidS1FdWIKLQkJCQlOYW15YW5nanUtQ2l0eSBLeXVuZ2dpLURvIDQ3Mi05MDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtNjYgICAoaGV4KQkJUHJvbnRvIE5ldHdvcmtzIEluYwotMDAwQzY2ICAgICAoYmFzZSAxNikJCVByb250byBOZXR3b3JrcyBJbmMKLQkJCQk0NjM3IENoYWJvdCBEcgotCQkJCVN1aXRlIDMwMAotCQkJCVBsZWFzYW50b24gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTY3ICAgKGhleCkJCU9ZTyBFTEVDVFJJQyBDTy4sTFRECi0wMDBDNjcgICAgIChiYXNlIDE2KQkJT1lPIEVMRUNUUklDIENPLixMVEQKLQkJCQk2My0xIE5ha2FtaWNoaSBPbW90ZQotCQkJCUhpcmFrYXdhCi0JCQkJSm95byBLeW90byA2MTAtMDEwMQotCQkJCUpBUEFOCi0KLTAwLTBDLTY4ICAgKGhleCkJCVNpZ21hVGVsLCBJbmMuCi0wMDBDNjggICAgIChiYXNlIDE2KQkJU2lnbWFUZWwsIEluYy4KLQkJCQkyMDEgSm9uZXMgUm9hZAotCQkJCVdhbHRoYW0gTUEgMDI0NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTY5ICAgKGhleCkJCU5hdGlvbmFsIFJhZGlvIEFzdHJvbm9teSBPYnNlcnZhdG9yeQotMDAwQzY5ICAgICAoYmFzZSAxNikJCU5hdGlvbmFsIFJhZGlvIEFzdHJvbm9teSBPYnNlcnZhdG9yeQotCQkJCVAuTy4gQm94IE8KLQkJCQlTb2NvcnJvIE5NIDg3ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy02QSAgIChoZXgpCQlNQkFSSQotMDAwQzZBICAgICAoYmFzZSAxNikJCU1CQVJJCi0JCQkJNzcwMCBTYW5kaG9sZHQgUm9hZAotCQkJCU1vc3MgTGFuZGluZyBDQSA5NTAzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNkIgICAoaGV4KQkJS3VyeiBJbmR1c3RyaWUtRWxla3Ryb25payBHbWJICi0wMDBDNkIgICAgIChiYXNlIDE2KQkJS3VyeiBJbmR1c3RyaWUtRWxla3Ryb25payBHbWJICi0JCQkJRm9laHJlbmJhY2hzdHJhc3NlIDMKLQkJCQlSZW1zaGFsZGVuIEJhZGVuLVf8cnR0ZW1iZXJnIDczNjMwCi0JCQkJR0VSTUFOWQotCi0wMC0wQy02QyAgIChoZXgpCQlFbGdhdG8gU3lzdGVtcyBMTEMKLTAwMEM2QyAgICAgKGJhc2UgMTYpCQlFbGdhdG8gU3lzdGVtcyBMTEMKLQkJCQk5MDAgS2Vhcm55IFN0ICM3NTAKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy02RCAgIChoZXgpCQlFZHdhcmRzIEx0ZC4KLTAwMEM2RCAgICAgKGJhc2UgMTYpCQlFZHdhcmRzIEx0ZC4KLQkJCQlNYXJzaGFsbCBSb2FkCi0JCQkJRWFzdGJvdXJuZSBFYXN0IFN1c3NleCBCTjIyIDlCQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBDLTZFICAgKGhleCkJCUFTVVNURUsgQ09NUFVURVIgSU5DLgotMDAwQzZFICAgICAoYmFzZSAxNikJCUFTVVNURUsgQ09NUFVURVIgSU5DLgotCQkJCTE1MCwgTGktVGUgUmQuLCBQZWlUb3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtNkYgICAoaGV4KQkJQW10ZWsgc3lzdGVtIGNvLixMVEQuCi0wMDBDNkYgICAgIChiYXNlIDE2KQkJQW10ZWsgc3lzdGVtIGNvLixMVEQuCi0JCQkJMTRGLTExLE5vLjc5LFNlYy4gMSAsSHNpbiBUYWkgV3UgUmQuLAotCQkJCUhzaSBDaGloIENpdHkKLQkJCQlUYWlwZWkgIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtNzAgICAoaGV4KQkJQUNDIEdtYkgKLTAwMEM3MCAgICAgKGJhc2UgMTYpCQlBQ0MgR21iSAotCQkJCUFtIFNhbmRmZWxkIDE1Ci0JCQkJS2FybHNydWhlIEJhZGVuIDc2MTQ5Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy03MSAgIChoZXgpCQlXeWJyb24sIEluYwotMDAwQzcxICAgICAoYmFzZSAxNikJCVd5YnJvbiwgSW5jCi0JCQkJNDgzMCBMSXN0IERyCi0JCQkJQ29sb3JhZG8gU3ByaW5ncyBDb2xvcmFkbyA4MDkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNzIgICAoaGV4KQkJVGVtcGVhcmwgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMEM3MiAgICAgKGJhc2UgMTYpCQlUZW1wZWFybCBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTMtMS00MiBPaHp1Ci0JCQkJTWluYW1pLWt1Ci0JCQkJSGlyb3NoaW1hLXNoaSBIaXJvc2hpbWEgNzMyLTA4MDIKLQkJCQlKQVBBTgotCi0wMC0wQy03MyAgIChoZXgpCQlURUxTT04gRUxFQ1RST05JQ1MgQ08uLCBMVEQKLTAwMEM3MyAgICAgKGJhc2UgMTYpCQlURUxTT04gRUxFQ1RST05JQ1MgQ08uLCBMVEQKLQkJCQlUZWxzb24gVmVudHVyZSBUb3dlci4sIDk0OS0zIERvZ29rLURvbmcKLQkJCQlTZW91bCBLYW5nbmFtLUt1IDEzNS03MzkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtNzQgICAoaGV4KQkJUklWRVJURUMgQ09SUE9SQVRJT04KLTAwMEM3NCAgICAgKGJhc2UgMTYpCQlSSVZFUlRFQyBDT1JQT1JBVElPTgotCQkJCTg4Mi01IE1JWUFHQVNBS0kKLQkJCQlJTUFCQVJJIEVISU1FIDc5OS0xNTM3Ci0JCQkJSkFQQU4KLQotMDAtMEMtNzUgICAoaGV4KQkJT3JpZW50YWwgaW50ZWdyYXRlZCBlbGVjdHJvbmljcy4gTFRECi0wMDBDNzUgICAgIChiYXNlIDE2KQkJT3JpZW50YWwgaW50ZWdyYXRlZCBlbGVjdHJvbmljcy4gTFRECi0JCQkJMjgxLTM0IERvbmRhbmctZG9uZyBXb25taS1HdQotCQkJCUJ1Y2hlb24gS3lvdW5na2lkbyA0MjAtODA4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTc2ICAgKGhleCkJCU1JQ1JPLVNUQVIgSU5URVJOQVRJT05BTCBDTy4sIExURC4KLTAwMEM3NiAgICAgKGJhc2UgMTYpCQlNSUNSTy1TVEFSIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0JCQkJTm8gNjksIExpLURlIFN0cmVldCwgSnVuZy1IZSBDaXR5LCBUYWlwZQotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy03NyAgIChoZXgpCQlMaWZlIFJhY2luZyBMdGQKLTAwMEM3NyAgICAgKGJhc2UgMTYpCQlMaWZlIFJhY2luZyBMdGQKLQkJCQlVbml0IDYgUmVwdG9uIENsb3NlCi0JCQkJQnVybnQgTWlsbHMgSW5kIEVzdAotCQkJCUJhc2lsZG9uIEVzc2V4IFNTMTMgMUxFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEMtNzggICAoaGV4KQkJSW4tVGVjaCBFbGVjdHJvbmljcyBMaW1pdGVkCi0wMDBDNzggICAgIChiYXNlIDE2KQkJSW4tVGVjaCBFbGVjdHJvbmljcyBMaW1pdGVkCi0JCQkJVW5pdCBBLCAxM3RoIEZsb29yLiwgV2luZyBUYWkgQ2VudHJlCi0JCQkJMTIgSGluZyBZaXAgU3RyZWV0Ci0JCQkJS3d1biBUb25nIEtvd2xvb24gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBDLTc5ICAgKGhleCkJCUV4dGVsIENvbW11bmljYXRpb25zIFAvTAotMDAwQzc5ICAgICAoYmFzZSAxNikJCUV4dGVsIENvbW11bmljYXRpb25zIFAvTAotCQkJCTM5OSBGZXJudHJlZSBHdWxseSBSb2FkCi0JCQkJTXQgV2F2ZXJsZXkgVmljdG9yaWEgMzE0OQotCQkJCUFVU1RSQUxJQQotCi0wMC0wQy03QSAgIChoZXgpCQlEYVRBUklVUyBUZWNobm9sb2dpZXMgR21iSAotMDAwQzdBICAgICAoYmFzZSAxNikJCURhVEFSSVVTIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJQW50b24gTWFyaWEgU2NoeXJsZSBTdHIuIDcKLQkJCQlSZXV0dGUgVGlyb2wgNjYwMAotCQkJCUFVU1RSSUEKLQotMDAtMEMtN0IgICAoaGV4KQkJQUxQSEEgUFJPSkVDVCBDby4sTHRkLgotMDAwQzdCICAgICAoYmFzZSAxNikJCUFMUEhBIFBST0pFQ1QgQ28uLEx0ZC4KLQkJCQk4MzQgU2VraXNoaSxIaWdhc2hpLWt1LEhhbWFtYXRzdS1jaXR5Ci0JCQkJU2hpenVva2EgIDQzMS0zMTE0Ci0JCQkJSkFQQU4KLQotMDAtMEMtN0MgICAoaGV4KQkJSW50ZXJuZXQgSW5mb3JtYXRpb24gSW1hZ2UgSW5jLgotMDAwQzdDICAgICAoYmFzZSAxNikJCUludGVybmV0IEluZm9ybWF0aW9uIEltYWdlIEluYy4KLQkJCQlGbC4gNiwgTm8uIDEsIEFsbGV5IDIwLCBMYW5lIDI2LCBSdWVpZ3VhCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtN0QgICAoaGV4KQkJVEVJS09LVSBFTEVDVFJJQyBNRkcuIENPLiwgTFRECi0wMDBDN0QgICAgIChiYXNlIDE2KQkJVEVJS09LVSBFTEVDVFJJQyBNRkcuIENPLiwgTFRECi0JCQkJNjAsIEhJUkFOTwotCQkJCVNISU5HVS1DSE8KLQkJCQlJQk8tR1VOIEhZT0dPIDY3OS00Mzk1Ci0JCQkJSkFQQU4KLQotMDAtMEMtN0UgICAoaGV4KQkJVGVsbGl1bSBJbmNvcnBvcmF0ZWQKLTAwMEM3RSAgICAgKGJhc2UgMTYpCQlUZWxsaXVtIEluY29ycG9yYXRlZAotCQkJCTIgQ3Jlc2NlbnQgUGxhY2UKLQkJCQlPY2VhbnBvcnQgTmV3IEplcnNleSAwNzc1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtN0YgICAoaGV4KQkJc3luZXJ0cm9uaXh4IEdtYkgKLTAwMEM3RiAgICAgKGJhc2UgMTYpCQlzeW5lcnRyb25peHggR21iSAotCQkJCVZhaHJlbndhbGRlciBTdHJhc3NlIDcKLQkJCQlIYW5ub3ZlciBOaWVkZXJzYWNoc2VuIDMwMTY1Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy04MCAgIChoZXgpCQlPcGVsY29tbSBJbmMuCi0wMDBDODAgICAgIChiYXNlIDE2KQkJT3BlbGNvbW0gSW5jLgotCQkJCTQ2NzUwIEZyZW1vbnQgQmx2ZC4gU3RlIDIxMAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTgxICAgKGhleCkJCVNjaG5laWRlciBFbGVjdHJpYyAoQXVzdHJhbGlhKSAKLTAwMEM4MSAgICAgKGJhc2UgMTYpCQlTY2huZWlkZXIgRWxlY3RyaWMgKEF1c3RyYWxpYSkgCi0JCQkJODAgU2NobmVpZGVyIFJvYWQKLQkJCQlFYWdsZSBGYXJtICBRbGQgNDAwOQotCQkJCUFVU1RSQUxJQQotCi0wMC0wQy04MiAgIChoZXgpCQlORVRXT1JLIFRFQ0hOT0xPR0lFUyBJTkMKLTAwMEM4MiAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFRFQ0hOT0xPR0lFUyBJTkMKLQkJCQkxMjc1IERBTk5FUiBEUklWRQotCQkJCUFVUk9SQSBPSCA0NDIwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtODMgICAoaGV4KQkJTG9naWNhbCBTb2x1dGlvbnMKLTAwMEM4MyAgICAgKGJhc2UgMTYpCQlMb2dpY2FsIFNvbHV0aW9ucwotCQkJCTEwMFQgV2FzaGluZ3RvbiBTdHJlZXQKLQkJCQlNaWxmb3JkIENUIDA2NDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy04NCAgIChoZXgpCQlFYXppeCwgSW5jLgotMDAwQzg0ICAgICAoYmFzZSAxNikJCUVheml4LCBJbmMuCi0JCQkJVW5pdCAzMDEgUGxhemEgQnVpbGRpbmcgQgotCQkJCTY1MzAgTm9ydGhnYXRlIEF2ZW51ZSwgRmlsaW52ZXN0Ci0JCQkJTXVudGlubHVwYSBDaXR5IFJpemFsIDE3NzAKLQkJCQlQSElMSVBQSU5FUwotCi0wMC0wQy04NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBDODUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy04NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBDODYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLW0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy04NyAgIChoZXgpCQlBTUQKLTAwMEM4NyAgICAgKGJhc2UgMTYpCQlBTUQKLQkJCQk0NTU1IEdyZWF0IEFtZXJpY2EgUGt3eQotCQkJCVN0ZSA1MDEKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtODggICAoaGV4KQkJQXBhY2hlIE1pY3JvIFBlcmlwaGVyYWxzLCBJbmMuCi0wMDBDODggICAgIChiYXNlIDE2KQkJQXBhY2hlIE1pY3JvIFBlcmlwaGVyYWxzLCBJbmMuCi0JCQkJMTc1MjYgVm9uIEthcm1hbiBBdmUKLQkJCQlJcnZpbmUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTg5ICAgKGhleCkJCUFDIEVsZWN0cmljIFZlaGljbGVzLCBMdGQuCi0wMDBDODkgICAgIChiYXNlIDE2KQkJQUMgRWxlY3RyaWMgVmVoaWNsZXMsIEx0ZC4KLQkJCQlNYXJra2luYWt1amEgMwotCQkJCUpva2VsYSAgMDU0MDAKLQkJCQlGSU5MQU5ECi0KLTAwLTBDLThBICAgKGhleCkJCUJvc2UgQ29ycG9yYXRpb24KLTAwMEM4QSAgICAgKGJhc2UgMTYpCQlCb3NlIENvcnBvcmF0aW9uCi0JCQkJQXV0b21vdGl2ZSBTeXN0ZW1zIERpdmlzaW9uIChBU0QpCi0JCQkJNjg4IEdyZWF0IFJvYWQgKE1haWxzdG9wOiAxVzIpCi0JCQkJU3RvdyBNQSAwMTc3NS05MTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy04QiAgIChoZXgpCQlDb25uZWN0IFRlY2ggSW5jCi0wMDBDOEIgICAgIChiYXNlIDE2KQkJQ29ubmVjdCBUZWNoIEluYwotCQkJCTQyIEFycm93IFJvYWQKLQkJCQlHdWVscGggT250YXJpbyBOMUsgMVM2Ci0JCQkJQ0FOQURBCi0KLTAwLTBDLThDICAgKGhleCkJCUtPRElDT00gQ08uLExURC4KLTAwMEM4QyAgICAgKGJhc2UgMTYpCQlLT0RJQ09NIENPLixMVEQuCi0JCQkJQS1Eb25nIDVGSS4sU0sgVHdpbiBUb3dlciAzNDUtOSwKLQkJCQlHYXNhbi1Eb25nLCBHdWVtY2h1bi1HdQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLThEICAgKGhleCkJCU1BVFJJWCBWSVNJT04gR21iSAotMDAwQzhEICAgICAoYmFzZSAxNikJCU1BVFJJWCBWSVNJT04gR21iSAotCQkJCVRhbHN0cmFzc2UgMTYKLQkJCQlPcHBlbndlaWxlciBCYWRlbi1XdWVydHRlbWJlcmcgRC03MTU3MAotCQkJCUdFUk1BTlkKLQotMDAtMEMtOEUgICAoaGV4KQkJTWVudG9yIEVuZ2luZWVyaW5nIEluYwotMDAwQzhFICAgICAoYmFzZSAxNikJCU1lbnRvciBFbmdpbmVlcmluZyBJbmMKLQkJCQkyODkxIFN1bnJpZGdlIFdheSBORQotCQkJCVN1aXRlIDIzMAotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMVk3SzcKLQkJCQlDQU5BREEKLQotMDAtMEMtOEYgICAoaGV4KQkJTmVyZ2FsIHMuci5sLgotMDAwQzhGICAgICAoYmFzZSAxNikJCU5lcmdhbCBzLnIubC4KLQkJCQlWaWFsZSBCYXJkYW56ZWxsdSw4Ci0JCQkJUm9tYSAgMDAxNTUKLQkJCQlJVEFMWQotCi0wMC0wQy05MCAgIChoZXgpCQlPY3Rhc2ljIEluYy4KLTAwMEM5MCAgICAgKGJhc2UgMTYpCQlPY3Rhc2ljIEluYy4KLQkJCQk0MTAxIE1vbHNvbiBTdC4KLQkJCQlTdWl0ZSAzMDAKLQkJCQlNb250cmVhbCBRdWViZWMgSDFZIDNMMQotCQkJCUNBTkFEQQotCi0wMC0wQy05MSAgIChoZXgpCQlSaXZlcmhlYWQgTmV0d29ya3MgSW5jLgotMDAwQzkxICAgICAoYmFzZSAxNikJCVJpdmVyaGVhZCBOZXR3b3JrcyBJbmMuCi0JCQkJMjAxOTUgU3RldmVucyBDcmVlayBCbHZkLiAjIDExMAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtOTIgICAoaGV4KQkJV29sZlZpc2lvbiBHbWJoCi0wMDBDOTIgICAgIChiYXNlIDE2KQkJV29sZlZpc2lvbiBHbWJoCi0JCQkJT2JlcmVzIFJpZWQgMTQKLQkJCQk2ODMzIEtsYXVzIAotCQkJCUFVU1RSSUEKLQotMDAtMEMtOTMgICAoaGV4KQkJWGVsaW5lIENvLiwgTHRkLgotMDAwQzkzICAgICAoYmFzZSAxNikJCVhlbGluZSBDby4sIEx0ZC4KLQkJCQk3Ri4gQ2h1bmdqaW4gQmxkZy4sIDQ3NS0yMgotCQkJCUJhbmdiYWUgMiBkb25nLCBTZW9jaG8tZ3UKLQkJCQlTZW91bCAgMTM3LTgxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy05NCAgIChoZXgpCQlVbml0ZWQgRWxlY3Ryb25pYyBJbmR1c3RyaWVzLCBJbmMuIChFVUkpCi0wMDBDOTQgICAgIChiYXNlIDE2KQkJVW5pdGVkIEVsZWN0cm9uaWMgSW5kdXN0cmllcywgSW5jLiAoRVVJKQotCQkJCTI3IFJlbm1hciBBdmUKLQkJCQlXYWxwb2xlIE1BIDAyMDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy05NSAgIChoZXgpCQlQcmltZU5ldAotMDAwQzk1ICAgICAoYmFzZSAxNikJCVByaW1lTmV0Ci0JCQkJSG9uZ2lrIFVuaXZlcnNpdHksIDcyLTEsIFNhbmdzdS1Eb25nLCBNYQotCQkJCVNlb3VsICAxMjEtNzkxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTk2ICAgKGhleCkJCU9RTywgSW5jLgotMDAwQzk2ICAgICAoYmFzZSAxNikJCU9RTywgSW5jLgotCQkJCTE4MDAgSWxsaW5vaXMgU3RyZWV0Ci0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtOTcgICAoaGV4KQkJTlYgQURCIFRUViBUZWNobm9sb2dpZXMgU0EKLTAwMEM5NyAgICAgKGJhc2UgMTYpCQlOViBBREIgVFRWIFRlY2hub2xvZ2llcyBTQQotCQkJCUxFVVZFTlNFU1RFRU5XRUcsNTg1Ci0JCQkJWkFWRU5URU0gVmxhYW1zZSBicmFiYW50IDE5MzAKLQkJCQlCRUxHSVVNCi0KLTAwLTBDLTk4ICAgKGhleCkJCUxFVEVLIENvbW11bmljYXRpb25zIEluYy4KLTAwMEM5OCAgICAgKGJhc2UgMTYpCQlMRVRFSyBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJVGFleWFuZyBCZC4gMm5kIEZsb29yLCAyNDg2Ci0JCQkJU29uZ05hbS1Eb25nLCBKdW5nd29uLUt1Ci0JCQkJU29uZ05hbSBLeXVuZ2dpLWRvIDQ2Mi04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtOTkgICAoaGV4KQkJSElURUwgTElOSyBDby4sTHRkCi0wMDBDOTkgICAgIChiYXNlIDE2KQkJSElURUwgTElOSyBDby4sTHRkCi0JCQkJU2Ftc3VuZyBPbW5pIFRvd2VyIDR0aCBGbC4sIDM5NS02MgotCQkJCVNoaW5kYWViYW5nLWRvbmcsIERvbmdqYWMta3UsCi0JCQkJU2VvdWwgIDE1Ni0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtOUEgICAoaGV4KQkJSGl0ZWNoIEVsZWN0cm9uaWNzIENvcnAuCi0wMDBDOUEgICAgIChiYXNlIDE2KQkJSGl0ZWNoIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJNGYsIE5vLiA1MDEtMTUgQ2h1bmctQ2hlbmcgUmQuCi0JCQkJU2hpbi10aWVuIFRhaXBlaSBTaGllbiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTlCICAgKGhleCkJCUVFIFNvbHV0aW9ucywgSW5jCi0wMDBDOUIgICAgIChiYXNlIDE2KQkJRUUgU29sdXRpb25zLCBJbmMKLQkJCQk4RiwgTm8uIDksIFBhcmsgSUkgQXZlLiwgU2NpZW5jZS1CYXNlZCBJCi0JCQkJSHNpbiBDaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtOUMgICAoaGV4KQkJQ2hvbmdobyBpbmZvcm1hdGlvbiAmIGNvbW11bmljYXRpb25zCi0wMDBDOUMgICAgIChiYXNlIDE2KQkJQ2hvbmdobyBpbmZvcm1hdGlvbiAmIGNvbW11bmljYXRpb25zCi0JCQkJQ2hvbmdobyBCbGRnLCAjNy02MSBZYW5namFlLWRvbmcsIFNlb2NobwotCQkJCVNlb3VsICAxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTlEICAgKGhleCkJCUFpcldhbGsgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMEM5RCAgICAgKGJhc2UgMTYpCQlBaXJXYWxrIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTg1MCBOLiBHcmVlblZpbGxlIEF2ZS4sIFN1aXRlIDE2NAotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTlFICAgKGhleCkJCU1lbW9yeUxpbmsgQ29ycC4KLTAwMEM5RSAgICAgKGJhc2UgMTYpCQlNZW1vcnlMaW5rIENvcnAuCi0JCQkJMzYgSmV3ZWxlcnMgUGFyayBEcml2ZQotCQkJCVN1aXRlIDIwMAotCQkJCU5lZW5haCBXaXNjb25zaW4gNTQ5NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTlGICAgKGhleCkJCU5LRSBDb3Jwb3JhdGlvbgotMDAwQzlGICAgICAoYmFzZSAxNikJCU5LRSBDb3Jwb3JhdGlvbgotCQkJCTI3IFp1c2hvIEJhYmEKLQkJCQlOYWdhb2tha3lvLXNoaSBLeW90byA2MTctMDgyOAotCQkJCUpBUEFOCi0KLTAwLTBDLUEwICAgKGhleCkJCVN0b3JDYXNlIFRlY2hub2xvZ3ksIEluYy4KLTAwMENBMCAgICAgKGJhc2UgMTYpCQlTdG9yQ2FzZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTc2MDAgTmV3aG9wZSBTdC4KLQkJCQlGb3VudGFpbiBWYWxsZXkgQ0EgOTI3MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUExICAgKGhleCkJCVNJR01BQ09NIENvLiwgTFRELgotMDAwQ0ExICAgICAoYmFzZSAxNikJCVNJR01BQ09NIENvLiwgTFRELgotCQkJCURhY29tQmxkZyA3RiAyMDAtMTIgQW55YW5nLWRvbmcKLQkJCQlNYW5hbi1LdSwgQW55YW5nLWNpdHksIEt5dW5nS2ktRG8sIEtvcmVhCi0JCQkJNDMwLTgxNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy1BMiAgIChoZXgpCQlTY29wdXMgTmV0d29yayBUZWNobm9sb2dpZXMgTHRkCi0wMDBDQTIgICAgIChiYXNlIDE2KQkJU2NvcHVzIE5ldHdvcmsgVGVjaG5vbG9naWVzIEx0ZAotCQkJCTEwIEhhJ2FtYWwgc3QuIFBhcmsgQWZlawotCQkJCVJvc2ggSGEnYXlpbiAgNDgwOTIKLQkJCQlJU1JBRUwKLQotMDAtMEMtQTMgICAoaGV4KQkJUmFuY2hvIFRlY2hub2xvZ3ksIEluYy4KLTAwMENBMyAgICAgKGJhc2UgMTYpCQlSYW5jaG8gVGVjaG5vbG9neSwgSW5jLgotCQkJCTEwNzgzIEJlbGwgQ291cnQKLQkJCQlSYW5jaG8gQ3VjYW1vbmdhIENBIDE5NzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BNCAgIChoZXgpCQlQcm9tcHR0ZWMgUHJvZHVjdCBNYW5hZ2VtZW50IEdtYkgKLTAwMENBNCAgICAgKGJhc2UgMTYpCQlQcm9tcHR0ZWMgUHJvZHVjdCBNYW5hZ2VtZW50IEdtYkgKLQkJCQlNYXJpYXRyb3N0ZXJzdHIuIDQxCi0JCQkJR3JheiBBVVNUUklBIEEtODA0MwotCQkJCUFVU1RSSUEKLQotMDAtMEMtQTUgICAoaGV4KQkJTmFtYW4gTlogTFRkCi0wMDBDQTUgICAgIChiYXNlIDE2KQkJTmFtYW4gTlogTFRkCi0JCQkJMTMvMTcgS2F3YW5hIFN0Ci0JCQkJTm9ydGhjb3RlCi0JCQkJQXVja2xhbmQgIAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTBDLUE2ICAgKGhleCkJCU1pbnRlcmEgQ29ycG9yYXRpb24KLTAwMENBNiAgICAgKGJhc2UgMTYpCQlNaW50ZXJhIENvcnBvcmF0aW9uCi0JCQkJODQ3IFJvZ2VycyBTdHJlZXQKLQkJCQlMb3dlbGwgTUEgMDE4NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUE3ICAgKGhleCkJCU1ldHJvIChTdXpob3UpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMENBNyAgICAgKGJhc2UgMTYpCQlNZXRybyAoU3V6aG91KSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJTm8uMjIxIFhpbmdoYWkgU3RyZWV0LCBTdXpob3UgSW5kdXN0cmlhbCBQYXJrCi0JCQkJU3V6aG91IEppYW5nIFN1IFByb3ZpbmNlIDIxNTAyMQotCQkJCUNISU5BCi0KLTAwLTBDLUE4ICAgKGhleCkJCUdhcnVkYSBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAwQ0E4ICAgICAoYmFzZSAxNikJCUdhcnVkYSBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotCQkJCTQ4NDk5IE1pbG1vbnQgRHJpdmUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BOSAgIChoZXgpCQlFYnRyb24gSW5jLgotMDAwQ0E5ICAgICAoYmFzZSAxNikJCUVidHJvbiBJbmMuCi0JCQkJMTY2MyBId3kgNzAxIFNvdXRoCi0JCQkJTG9yaXMgU0MgMjk1NjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUFBICAgKGhleCkJCUN1YmljIFRyYW5zcG9ydGF0aW9uIFN5c3RlbXMgSW5jCi0wMDBDQUEgICAgIChiYXNlIDE2KQkJQ3ViaWMgVHJhbnNwb3J0YXRpb24gU3lzdGVtcyBJbmMKLQkJCQkxMzA4IFMuIFdhc2hpbmd0b24gU3RyZWV0Ci0JCQkJVHVsbGFob21hIFROIDM3Mzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BQiAgIChoZXgpCQlDT01NRU5EIEludGVybmF0aW9uYWwKLTAwMENBQiAgICAgKGJhc2UgMTYpCQlDT01NRU5EIEludGVybmF0aW9uYWwKLQkJCQlIb2VsemxzdHJhc3NlIDU2MQotCQkJCVdhbHMgU2FsemJ1cmcgQS01MDcxCi0JCQkJQVVTVFJJQQotCi0wMC0wQy1BQyAgIChoZXgpCQlDaXRpemVuIFdhdGNoIENvLiwgTHRkLgotMDAwQ0FDICAgICAoYmFzZSAxNikJCUNpdGl6ZW4gV2F0Y2ggQ28uLCBMdGQuCi0JCQkJNi0xLTEyLCBUYW5hc2hpLWNobwotCQkJCU5pc2hpLVRva3lvLXNoaSBUb2t5byAxODgtODUxMQotCQkJCUpBUEFOCi0KLTAwLTBDLUFEICAgKGhleCkJCUJUVSBJbnRlcm5hdGlvbmFsCi0wMDBDQUQgICAgIChiYXNlIDE2KQkJQlRVIEludGVybmF0aW9uYWwKLQkJCQkyMyBFc3F1aXJlIFJkCi0JCQkJTm9ydGggQmlsbGVyaWNhIE1BIDAxODYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BRSAgIChoZXgpCQlBaWxvY29tIE95Ci0wMDBDQUUgICAgIChiYXNlIDE2KQkJQWlsb2NvbSBPeQotCQkJCUhhdGFucGFhbiB2YWx0YXRpZSAyNAotCQkJCUR5bmFtbyBCdXNpbmVzcyBQYXJrCi0JCQkJVEFNUEVSRSBGSU4gMzM5NTAKLQkJCQlGSU5MQU5ECi0KLTAwLTBDLUFGICAgKGhleCkJCVRSSSBURVJNIENPLixMVEQuCi0wMDBDQUYgICAgIChiYXNlIDE2KQkJVFJJIFRFUk0gQ08uLExURC4KLQkJCQkyMS01IEhJUkFJREUgS09VR0lZTyBEQU5DSEkKLQkJCQlVVFNVTk9NSVlBLVNISQotCQkJCVRPQ0hJR0kgIDMyMS0wOTA1Ci0JCQkJSkFQQU4KLQotMDAtMEMtQjAgICAoaGV4KQkJU3RhciBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uCi0wMDBDQjAgICAgIChiYXNlIDE2KQkJU3RhciBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uCi0JCQkJNkYsIE5vLjE3LCBMaS1Ic2luIFJkCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1IENpdHkgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtQjEgICAoaGV4KQkJU2FsbGFuZCBFbmdpbmVlcmluZyAoRXVyb3BlKSBCVgotMDAwQ0IxICAgICAoYmFzZSAxNikJCVNhbGxhbmQgRW5naW5lZXJpbmcgKEV1cm9wZSkgQlYKLQkJCQlCZWRyaWp2ZW5wYXJrIEJlcmt1bQotCQkJCVNjaHJldmVud2VnIDEyCi0JCQkJWndvbGxlIE9WIDgwMjQgSEEKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wQy1CMiAgIChoZXgpCQlDb21zdGFyIENvLiwgTHRkLgotMDAwQ0IyICAgICAoYmFzZSAxNikJCUNvbXN0YXIgQ28uLCBMdGQuCi0JCQkJNzAxIE1hc2FuIFZhbGxleSAjMTEyMS05Ci0JCQkJQ2h1bmctcmksIE5hZXNlby1ldXAKLQkJCQlNYXNhbiBHeWVvbmduYW0gNjMwLTcyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy1CMyAgIChoZXgpCQlST1VORCBDby4sTHRkLgotMDAwQ0IzICAgICAoYmFzZSAxNikJCVJPVU5EIENvLixMdGQuCi0JCQkJMy05IEdva2FzaG91LVNoaWJhaGlnYXNoaQotCQkJCVVqaSBLeW90byA2MTEtMDAxMQotCQkJCUpBUEFOCi0KLTAwLTBDLUI0ICAgKGhleCkJCUF1dG9DZWxsIExhYm9yYXRvcmllcywgSW5jLgotMDAwQ0I0ICAgICAoYmFzZSAxNikJCUF1dG9DZWxsIExhYm9yYXRvcmllcywgSW5jLgotCQkJCTE3NCBDb25jb3JkIFN0cmVldAotCQkJCVN1aXRlIDMxMAotCQkJCVBldGVyYm9yb3VnaCwgTmV3IEhhbXBzaGlyZSAwMzQ1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQjUgICAoaGV4KQkJUHJlbWllciBUZWNobm9sZ2llcywgSW5jCi0wMDBDQjUgICAgIChiYXNlIDE2KQkJUHJlbWllciBUZWNobm9sZ2llcywgSW5jCi0JCQkJUE8gQm94IDE1OQotCQkJCU9uZSBQcmVtaWVyIERyCi0JCQkJTG9uZyBMYWtlIE1OIDU1MzU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1CNiAgIChoZXgpCQlOQU5KSU5HIFNFVSBNT0JJTEUgJiBJTlRFUk5FVCBURUNITk9MT0dZIENPLixMVEQKLTAwMENCNiAgICAgKGJhc2UgMTYpCQlOQU5KSU5HIFNFVSBNT0JJTEUgJiBJTlRFUk5FVCBURUNITk9MT0dZIENPLixMVEQKLQkJCQk1dGggZmxvb3IsQnVpbGRpbmcgNSxDaGFuZ0ppYW5nSG91IFN0cmVldCBOby42Ci0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMDAxOAotCQkJCUNISU5BCi0KLTAwLTBDLUI3ICAgKGhleCkJCU5hbmppbmcgSHVhemh1byBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMENCNyAgICAgKGJhc2UgMTYpCQlOYW5qaW5nIEh1YXpodW8gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJTm8uNzcgR2FvaHUgUm9hZAotCQkJCUppYW5nbmluZyBFY29ub21pYyAmIFRlY2hub2xvZ3kgRGV2ZWxvcG0KLQkJCQlOYW5qaW5nIEppYW5nc3UgMjExMTAwCi0JCQkJQ0hJTkEKLQotMDAtMEMtQjggICAoaGV4KQkJTUVESU9OIEFHCi0wMDBDQjggICAgIChiYXNlIDE2KQkJTUVESU9OIEFHCi0JCQkJQW0gWmVobnRob2YgNzcKLQkJCQlFc3NlbiBOUlcgNDUzMDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLUI5ICAgKGhleCkJCUxFQQotMDAwQ0I5ICAgICAoYmFzZSAxNikJCUxFQQotCQkJCUJhdCBMQSBGQVlFVFRFCi0JCQkJMiBwbGFjZSBkZXMgVm9zZ2VzCi0JCQkJUGFyaXMgUlAgOTI0MDUxCi0JCQkJRlJBTkNFCi0KLTAwLTBDLUJBICAgKGhleCkJCUphbWV4LCBJbmMuCi0wMDBDQkEgICAgIChiYXNlIDE2KQkJSmFtZXgsIEluYy4KLQkJCQkyNDE1IE4gVHJpcGhhbW1lciBSZAotCQkJCUl0aGFjYSBOWSAxNDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQkIgICAoaGV4KQkJSVNLUkFFTUVDTwotMDAwQ0JCICAgICAoYmFzZSAxNikJCUlTS1JBRU1FQ08KLQkJCQlTYXZza2EgbG9rYSA0Ci0JCQkJS3JhbmogR29yZW5qc2thIDQwMDAKLQkJCQlTTE9WRU5JQQotCi0wMC0wQy1CQyAgIChoZXgpCQlJc2N1dHVtCi0wMDBDQkMgICAgIChiYXNlIDE2KQkJSXNjdXR1bQotCQkJCSM4OTktNiBIby1HeWUgRG9uZywgRG9uZy1BbiBHdQotCQkJCUFuLVlhbmcgQ2l0eSBLeW9uZy1HaSBEbyA0MzEtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLUJEICAgKGhleCkJCUludGVyZmFjZSBNYXN0ZXJzLCBJbmMKLTAwMENCRCAgICAgKGJhc2UgMTYpCQlJbnRlcmZhY2UgTWFzdGVycywgSW5jCi0JCQkJMjM4MSBaYW5rZXIgUmQuLCBTdWl0ZSAxMzAKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1CRSAgIChoZXgpCQlJbm5vbWluYXRlIFNlY3VyaXR5IFRlY2hub2xvZ2llcyBBRwotMDAwQ0JFICAgICAoYmFzZSAxNikJCUlubm9taW5hdGUgU2VjdXJpdHkgVGVjaG5vbG9naWVzIEFHCi0JCQkJUnVkb3dlciBDaGF1c3NlZSAxMwotCQkJCTEyNDg5IEJlcmxpbiAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLUJGICAgKGhleCkJCUhvbHkgU3RvbmUgRW50LiBDby4sIEx0ZC4KLTAwMENCRiAgICAgKGJhc2UgMTYpCQlIb2x5IFN0b25lIEVudC4gQ28uLCBMdGQuCi0JCQkJMUYsIE5vLjYyLCBTZWMuMiwgSHVhbmcgU2hhbiBSZC4sCi0JCQkJTmVpIEh1IERpc3QuLCBUYWlwZWksIFRhaXdhbiwgUi5PLkMuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLUMwICAgKGhleCkJCUdlbmVyYSBPeQotMDAwQ0MwICAgICAoYmFzZSAxNikJCUdlbmVyYSBPeQotCQkJCU5paXR0eWxhbnBvbGt1IDE2Ci0JCQkJQm94IDE2Ci0JCQkJSGVsc2lua2kgIDAwNjIxCi0JCQkJRklOTEFORAotCi0wMC0wQy1DMSAgIChoZXgpCQlDb29wZXIgSW5kdXN0cmllcyBJbmMuCi0wMDBDQzEgICAgIChiYXNlIDE2KQkJQ29vcGVyIEluZHVzdHJpZXMgSW5jLgotCQkJCTYwMCBUcmF2aXMsIFN1aXRlIDU4MDAKLQkJCQlIb3VzdG9uIFRYIDc3MDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1DMiAgIChoZXgpCQlDb250cm9sTmV0IChJbmRpYSkgUHJpdmF0ZSBMaW1pdGVkCi0wMDBDQzIgICAgIChiYXNlIDE2KQkJQ29udHJvbE5ldCAoSW5kaWEpIFByaXZhdGUgTGltaXRlZAotCQkJCUwtNDQsIFVuaXQgLSBJCi0JCQkJVmVybmEgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlWZXJuYSwgU2FsY2V0ZSBHb2EgNDAzIDcyMgotCQkJCUlORElBCi0KLTAwLTBDLUMzICAgKGhleCkJCUJlV0FOIHN5c3RlbXMKLTAwMENDMyAgICAgKGJhc2UgMTYpCQlCZVdBTiBzeXN0ZW1zCi0JCQkJMTYgcnVlIGR1IE1vdWxpbiBkZXMgQnJ1eehyZXMKLQkJCQlDb3VyYmV2b2llIEhhdXRzIGRlIFNlaW5lIDkyNDAwCi0JCQkJRlJBTkNFCi0KLTAwLTBDLUM0ICAgKGhleCkJCVRpcHRlbCBBRwotMDAwQ0M0ICAgICAoYmFzZSAxNikJCVRpcHRlbCBBRwotCQkJCUhhbHNrZXN0cmFzc2UgMQotCQkJCVJhdGluZ2VuIE5SVyA0MDg4MAotCQkJCUdFUk1BTlkKLQotMDAtMEMtQzUgICAoaGV4KQkJTmV4dGxpbmsgQ28uLCBMdGQuCi0wMDBDQzUgICAgIChiYXNlIDE2KQkJTmV4dGxpbmsgQ28uLCBMdGQuCi0JCQkJQyA2MDUsIFRlY2hub3BhcmsgIzE0NSBZYXRvcC1kb25nLAotCQkJCVNlb25nbmFtLXNpIEJ1bmRhbmctZ3UsIEd5ZW9uZ2dpIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtQzYgICAoaGV4KQkJS2EtUm8gZWxlY3Ryb25pY3MgR21iSAotMDAwQ0M2ICAgICAoYmFzZSAxNikJCUthLVJvIGVsZWN0cm9uaWNzIEdtYkgKLQkJCQlQYXNjYWxzdHJh32UgMjIKLQkJCQlBYWNoZW4gTlcgNTIwNzYKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLUM3ICAgKGhleCkJCUludGVsbGlnZW50IENvbXB1dGVyIFNvbHV0aW9ucyBJbmMuCi0wMDBDQzcgICAgIChiYXNlIDE2KQkJSW50ZWxsaWdlbnQgQ29tcHV0ZXIgU29sdXRpb25zIEluYy4KLQkJCQk5MzUwIEV0b24gU3QuCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQzggICAoaGV4KQkJWHl0cm9uaXggUmVzZWFyY2ggJiBEZXNpZ24sIEluYy4KLTAwMENDOCAgICAgKGJhc2UgMTYpCQlYeXRyb25peCBSZXNlYXJjaCAmIERlc2lnbiwgSW5jLgotCQkJCTE0ODggRWFzdCAyMzAwIE5vcnRoCi0JCQkJTm9ydGggTG9nYW4gVVQgODQzNDEtMTYyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQzkgICAoaGV4KQkJSUxXT08gREFUQSAmIFRFQ0hOT0xPR1kgQ08uLExURAotMDAwQ0M5ICAgICAoYmFzZSAxNikJCUlMV09PIERBVEEgJiBURUNITk9MT0dZIENPLixMVEQKLQkJCQkxNDc1LTEwLEhXQSBIWVVOIEJMRC4gMm5kIEZsb29yLAotCQkJCVNFT0NITy1ET05HLFNFT0NITy1HVSwKLQkJCQlTRU9VTCAgMTM3LTA3MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy1DQSAgIChoZXgpCQlIaXRhY2hpIEdsb2JhbCBTdG9yYWdlIFRlY2hub2xvZ2llcwotMDAwQ0NBICAgICAoYmFzZSAxNikJCUhpdGFjaGkgR2xvYmFsIFN0b3JhZ2UgVGVjaG5vbG9naWVzCi0JCQkJNTYwMCBDb3R0bGUgUmQuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUNCICAgKGhleCkJCURlc2lnbiBDb21idXMgTHRkCi0wMDBDQ0IgICAgIChiYXNlIDE2KQkJRGVzaWduIENvbWJ1cyBMdGQKLQkJCQlIYXRhbmFwYWFuIHZhbHRhdGllIDM0QQotCQkJCVRhbXBlcmUgIEZJTi0zMzEwMAotCQkJCUZJTkxBTkQKLQotMDAtMEMtQ0MgICAoaGV4KQkJQWVyb3Njb3V0IEx0ZC4KLTAwMENDQyAgICAgKGJhc2UgMTYpCQlBZXJvc2NvdXQgTHRkLgotCQkJCTMgUGVrZXJpcyBTdC4KLQkJCQlQYXJrIFRhbWFyCi0JCQkJUmVob3ZvdCAgNzY3MDEKLQkJCQlJU1JBRUwKLQotMDAtMEMtQ0QgICAoaGV4KQkJSUVDIC0gVEM1NwotMDAwQ0NEICAgICAoYmFzZSAxNikJCUlFQyAtIFRDNTcKLQkJCQkzLCBydWUgZGUgVmFyZW1i6QotCQkJCVAuTy4gQm94IDEzMQotCQkJCUdlbmV2YSBHRSAxMjExCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEMtQ0UgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQ0NFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQ0YgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQ0NGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRDAgICAoaGV4KQkJU3ltZXRyaXgKLTAwMENEMCAgICAgKGJhc2UgMTYpCQlTeW1ldHJpeAotCQkJCTY0MDggMjE2dGggU3QgU1cKLQkJCQlNb3VudGxha2UgVGVycmFjZSBXQSA5ODA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRDEgICAoaGV4KQkJU0ZPTSBUZWNobm9sb2d5IENvcnAuCi0wMDBDRDEgICAgIChiYXNlIDE2KQkJU0ZPTSBUZWNobm9sb2d5IENvcnAuCi0JCQkJTm8uMTgsIExhbmUgMzIsIFd1ZnUgMXN0IFJkLiwgTHVqdSBzaGlhbgotCQkJCUx1anUgU2hpYW5nIFRhdXl1YW4gQ291bnR5IDMzOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtRDIgICAoaGV4KQkJU2NoYWZmbmVyIEVNViBBRwotMDAwQ0QyICAgICAoYmFzZSAxNikJCVNjaGFmZm5lciBFTVYgQUcKLQkJCQlOb3Jkc3RyYXNzZSAxCi0JCQkJTHV0ZXJiYWNoICBDSC00NTQyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEMtRDMgICAoaGV4KQkJUHJldHRsIEVsZWt0cm9uaWsgUmFkZWJlcmcgR21iSAotMDAwQ0QzICAgICAoYmFzZSAxNikJCVByZXR0bCBFbGVrdHJvbmlrIFJhZGViZXJnIEdtYkgKLQkJCQlSb2JlcnQtQm9zY2gtU3RyLiAxMAotCQkJCVJhZGViZXJnIFNheG9ueSBELTAxNDU0Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy1ENCAgIChoZXgpCQlQb3NpdHJvbiBQdWJsaWMgU2FmZXR5IFN5c3RlbXMgaW5jLgotMDAwQ0Q0ICAgICAoYmFzZSAxNikJCVBvc2l0cm9uIFB1YmxpYyBTYWZldHkgU3lzdGVtcyBpbmMuCi0JCQkJNTEwMSBCdWNoYW4KLQkJCQlNb250cmVhbCBRdWViZWMgSDRQIDJSOQotCQkJCUNBTkFEQQotCi0wMC0wQy1ENSAgIChoZXgpCQlQYXNzYXZlIEluYy4KLTAwMENENSAgICAgKGJhc2UgMTYpCQlQYXNzYXZlIEluYy4KLQkJCQkxNTU3IEphc3BlciBEci4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUQ2ICAgKGhleCkJCVBBUlRORVIgVEVDSAotMDAwQ0Q2ICAgICAoYmFzZSAxNikJCVBBUlRORVIgVEVDSAotCQkJCTEwRiwgTk8uMjMzLTIsUEFPIENISUFPIFJPQUQsIFNISU4gVElFTgotCQkJCVRBSVBFSSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy1ENyAgIChoZXgpCQlOYWxsYXRlY2ggTHRkCi0wMDBDRDcgICAgIChiYXNlIDE2KQkJTmFsbGF0ZWNoIEx0ZAotCQkJCUJvb2xlYW4gSG91c2UKLQkJCQkxIE5hcGllciBQYXJrLCBDdW1iZXJuYXVsZAotCQkJCUdsYXNnb3cgU2NvdGxhbmQgRzY4IDBCSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBDLUQ4ICAgKGhleCkJCU0uIEsuIEp1Y2hoZWltIEdtYkggJiBDbwotMDAwQ0Q4ICAgICAoYmFzZSAxNikJCU0uIEsuIEp1Y2hoZWltIEdtYkggJiBDbwotCQkJCU1vbHRrZXN0ci4gMTMgLSAzMQotCQkJCUZ1bGRhIEhlc3NlbiAzNjAzOQotCQkJCUdFUk1BTlkKLQotMDAtMEMtRDkgICAoaGV4KQkJSXRjYXJlIENvLiwgTHRkCi0wMDBDRDkgICAgIChiYXNlIDE2KQkJSXRjYXJlIENvLiwgTHRkCi0JCQkJNDA4IEtUIFNlb2NobywgMTAwMS0xIEJhbmdiYWUtZG9uZywKLQkJCQlTZW9jaG8ta3UKLQkJCQlTZW91bCAgMTM3LTg1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy1EQSAgIChoZXgpCQlGcmVlSGFuZCBTeXN0ZW1zLCBJbmMuCi0wMDBDREEgICAgIChiYXNlIDE2KQkJRnJlZUhhbmQgU3lzdGVtcywgSW5jLgotCQkJCTk1IEZpcnN0IFN0LgotCQkJCVN1aXRlIDIwMAotCQkJCUxvcyBBbHRvcyBDQSA5NDAyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtREIgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLTAwMENEQiAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotCQkJCTE3NDUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1EQyAgIChoZXgpCQlCRUNTIFRlY2hub2xvZ3ksIEluYwotMDAwQ0RDICAgICAoYmFzZSAxNikJCUJFQ1MgVGVjaG5vbG9neSwgSW5jCi0JCQkJOTQ4NyBEaWVsbWFuIFJvY2sgSXNsYW5kIEluZHVzdHJpYWwgRHJpdgotCQkJCVN0LiBMb3VpcyBNTyA2MzEzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtREQgICAoaGV4KQkJQU9TIFRlY2hub2xvZ2llcyBBRwotMDAwQ0REICAgICAoYmFzZSAxNikJCUFPUyBUZWNobm9sb2dpZXMgQUcKLQkJCQlUYWVmZXJuc3RyYXNzZSAyMAotCQkJCUJhZGVuIC0gRGFldHR3aWwgQUcgQ0gtNTQwNQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBDLURFICAgKGhleCkJCUFCQiBTVE9UWi1LT05UQUtUIEdtYkgKLTAwMENERSAgICAgKGJhc2UgMTYpCQlBQkIgU1RPVFotS09OVEFLVCBHbWJICi0JCQkJRXBwZWxoZWltZXIgU3RyLiA4MgotCQkJCUhlaWRlbGJlcmcgQmFkZW4tV/xydHRlbWJlcmcgNjkxMjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLURGICAgKGhleCkJCVBVTE5pWCBBbWVyaWNhLCBJbmMKLTAwMENERiAgICAgKGJhc2UgMTYpCQlQVUxOaVggQW1lcmljYSwgSW5jCi0JCQkJMTMzMCBPcmxlYW5zIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1FMCAgIChoZXgpCQlUcmVrIERpYWdub3N0aWNzIEluYy4KLTAwMENFMCAgICAgKGJhc2UgMTYpCQlUcmVrIERpYWdub3N0aWNzIEluYy4KLQkJCQk5ODIgS2V5bm90ZSBDaXJjbGUKLQkJCQlTdWl0ZSA2Ci0JCQkJQ2xldmVsYW5kIE9oaW8gNDQxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUUxICAgKGhleCkJCVRoZSBPcGVuIEdyb3VwCi0wMDBDRTEgICAgIChiYXNlIDE2KQkJVGhlIE9wZW4gR3JvdXAKLQkJCQlBcGV4IFBsYXphCi0JCQkJRm9yYnVyeSBSb2FkCi0JCQkJUmVhZGluZyBCZXJrcyBSRzEgMUFYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEMtRTIgICAoaGV4KQkJUm9sbHMtUm95Y2UKLTAwMENFMiAgICAgKGJhc2UgMTYpCQlSb2xscy1Sb3ljZQotCQkJCTEwNSBOLiBTYW5kdXNreSBTdC4KLQkJCQlNdC4gVmVybm9uIE9oaW8gNDMwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUUzICAgKGhleCkJCU9wdGlvbiBJbnRlcm5hdGlvbmFsIE4uVi4KLTAwMENFMyAgICAgKGJhc2UgMTYpCQlPcHRpb24gSW50ZXJuYXRpb25hbCBOLlYuCi0JCQkJS29sb25lbCBCZWdhdWx0bGFhbiA0NQotCQkJCUxldXZlbiBCcmFiYW50IDMwMTIKLQkJCQlCRUxHSVVNCi0KLTAwLTBDLUU0ICAgKGhleCkJCU5ldXJvQ29tIEludGVybmF0aW9uYWwsIEluYy4KLTAwMENFNCAgICAgKGJhc2UgMTYpCQlOZXVyb0NvbSBJbnRlcm5hdGlvbmFsLCBJbmMuCi0JCQkJOTU3MCBTRSBMYXduZmllbGQgUmQKLQkJCQlDbGFja2FtYXMgT1IgOTcwMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUU1ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDBDRTUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1FNiAgIChoZXgpCQlNZXJ1IE5ldHdvcmtzIEluYwotMDAwQ0U2ICAgICAoYmFzZSAxNikJCU1lcnUgTmV0d29ya3MgSW5jCi0JCQkJMTMwOSBTb3V0aCBNYXJ5IEF2ZW51ZSwKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUU3ICAgKGhleCkJCU1lZGlhVGVrIEluYy4KLTAwMENFNyAgICAgKGJhc2UgMTYpCQlNZWRpYVRlayBJbmMuCi0JCQkJMUYsIE5vLiAxMywgSW5ub3ZhdGlvbiBSb2FkIDEsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLUU4ICAgKGhleCkJCUd1YW5nWmhvdSBBbkp1QmFvIENvLiwgTHRkCi0wMDBDRTggICAgIChiYXNlIDE2KQkJR3VhbmdaaG91IEFuSnVCYW8gQ28uLCBMdGQKLQkJCQlIZWlRaWFvVGFuZyBUYW5nWGlhIFRpYW5IZQotCQkJCUd1YW5nWmhvdSBHdWFuZ0RvbmcgNTEwNjY1Ci0JCQkJQ0hJTkEKLQotMDAtMEMtRTkgICAoaGV4KQkJQkxPT01CRVJHIEwuUC4KLTAwMENFOSAgICAgKGJhc2UgMTYpCQlCTE9PTUJFUkcgTC5QLgotCQkJCTczMSBMZXhpbmd0b24gQXZlCi0JCQkJTkVXIFlPUksgTkVXIFlPUksgMTAwMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUVBICAgKGhleCkJCWFwaG9uYSBLb21tdW5pa2F0aW9uc3N5c3RlbWUKLTAwMENFQSAgICAgKGJhc2UgMTYpCQlhcGhvbmEgS29tbXVuaWthdGlvbnNzeXN0ZW1lCi0JCQkJRW50d2lja2x1bmdzLSB1bmQgVmVydHJpZWJzZ21iSAotCQkJCURldXRzY2hzdHJh32UgNAotCQkJCVdpZW4gIDEyMzAKLQkJCQlBVVNUUklBCi0KLTAwLTBDLUVCICAgKGhleCkJCUNOTVAgTmV0d29ya3MsIEluYy4KLTAwMENFQiAgICAgKGJhc2UgMTYpCQlDTk1QIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTI0NSBTLiBXaW5jaGVzdGVyIEJsdmQuCi0JCQkJU3VpdGUgMjA4Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUVDICAgKGhleCkJCVNwZWN0cmFjb20gQ29ycC4KLTAwMENFQyAgICAgKGJhc2UgMTYpCQlTcGVjdHJhY29tIENvcnAuCi0JCQkJOTUgTWV0aG9kaXN0IEhpbGwgRHJpdmUKLQkJCQlTdWl0ZSA1MDAKLQkJCQlSb2NoZXN0ZXIgTlkgMTQ2MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUVEICAgKGhleCkJCVJlYWwgRGlnaXRhbCBNZWRpYQotMDAwQ0VEICAgICAoYmFzZSAxNikJCVJlYWwgRGlnaXRhbCBNZWRpYQotCQkJCTQ4NSBOb3J0aCBLZWxsZXIgUm9hZAotCQkJCVN1aXRlIDE0MAotCQkJCU1haXRsYW5kIEZMIDMyNzUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1FRSAgIChoZXgpCQlqcC1lbWJlZGRlZAotMDAwQ0VFICAgICAoYmFzZSAxNikJCWpwLWVtYmVkZGVkCi0JCQkJQnVlbiAyMSwgTnIuIERhbGJ5Ci0JCQkJQm9ydXAgIDQxNDAKLQkJCQlERU5NQVJLCi0KLTAwLTBDLUVGICAgKGhleCkJCU9wZW4gTmV0d29ya3MgRW5naW5lZXJpbmcgTHRkCi0wMDBDRUYgICAgIChiYXNlIDE2KQkJT3BlbiBOZXR3b3JrcyBFbmdpbmVlcmluZyBMdGQKLQkJCQlDbGFzc2ljIEhvdXNlCi0JCQkJUmF5bmhhbSBSb2FkCi0JCQkJQmlzaG9wJ3MgU3RvcnRmb3JkIEhlcnRmb3Jkc2hpcmUgQ00yMyA1UEQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQy1GMCAgIChoZXgpCQlNICYgTiBHbWJICi0wMDBDRjAgICAgIChiYXNlIDE2KQkJTSAmIE4gR21iSAotCQkJCURpZXNlbHN0ciAxOAotCQkJCVJvc2JhY2ggdi5kLkguIEhlc3NlbiA2MTE5MQotCQkJCUdFUk1BTlkKLQotMDAtMEMtRjEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMENGMSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCU1TOiBKRjMtNDIwCi0JCQkJMjExMSBORSAyNXRoIEF2ZW51ZQotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRjIgICAoaGV4KQkJR0FNRVNBIEXTTElDQQotMDAwQ0YyICAgICAoYmFzZSAxNikJCUdBTUVTQSBF00xJQ0EKLQkJCQlQb2ztZ29ubyBBZ3VzdGlub3Mgcy9uCi0JCQkJUGFtcGxvbmEgTkFWQVJSQSAzMTAxMwotCQkJCVNQQUlOCi0KLTAwLTBDLUYzICAgKGhleCkJCUNBTEwgSU1BR0UgU0EKLTAwMENGMyAgICAgKGJhc2UgMTYpCQlDQUxMIElNQUdFIFNBCi0JCQkJODY3IFJvdXRlIEltcGVyaWFsZQotCQkJCUJBSUxMQVJHVUVTICAzNDY3MAotCQkJCUZSQU5DRQotCi0wMC0wQy1GNCAgIChoZXgpCQlBS0FUU1VLSSBFTEVDVFJJQyBNRkcuQ08uLExURC4KLTAwMENGNCAgICAgKGJhc2UgMTYpCQlBS0FUU1VLSSBFTEVDVFJJQyBNRkcuQ08uLExURC4KLQkJCQk1OTMtMSxhb2pprSBjaG8KLQkJCQlrdXNhdHN1rSBzaGkgc2hpZ2EgNTI1LTAwNDEKLQkJCQlKQVBBTgotCi0wMC0wQy1GNSAgIChoZXgpCQlJbmZvRXhwcmVzcwotMDAwQ0Y1ICAgICAoYmFzZSAxNikJCUluZm9FeHByZXNzCi0JCQkJMTcwIFMuIFdoaXNtYW4gUm9hZCwgU3VpdGUgQgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUY2ICAgKGhleCkJCVNpdGVjb20gRXVyb3BlIEJWCi0wMDBDRjYgICAgIChiYXNlIDE2KQkJU2l0ZWNvbSBFdXJvcGUgQlYKLQkJCQlTZXZpbGxhd2VnIDEyMgotCQkJCVJvdHRlcmRhbSBaSCAzMDQ3IEFMCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEMtRjcgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBDRjcgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSZC4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMEMtRjggICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBDRjggICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQkwMzYgQ0MgMTAxCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTBDLUY5ICAgKGhleCkJCUlUVCBGbHlndCBBQgotMDAwQ0Y5ICAgICAoYmFzZSAxNikJCUlUVCBGbHlndCBBQgotCQkJCVBPIEJveCAyMDU4Ci0JCQkJSW5kdXN0cmlnYXRhbiA1MAotCQkJCUtyaXN0aWFuc3RhZCAgMjkxIDAyCi0JCQkJU1dFREVOCi0KLTAwLTBDLUZBICAgKGhleCkJCURpZ2l0YWwgU3lzdGVtcyBDb3JwCi0wMDBDRkEgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBTeXN0ZW1zIENvcnAKLQkJCQkzIE5vcnRoIE1haW4gU3RyZWV0Ci0JCQkJUE8gQm94IDE1OAotCQkJCVdhbGtlcnN2aWxsZSBNYXJ5bGFuZCAyMTc5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRkIgICAoaGV4KQkJS29yZWEgTmV0d29yayBTeXN0ZW1zCi0wMDBDRkIgICAgIChiYXNlIDE2KQkJS29yZWEgTmV0d29yayBTeXN0ZW1zCi0JCQkJMjA2ICBKYW5nWW91bmdTaWwgQmxkZywgMTY4OC01Ci0JCQkJU2hpbmlsLURvbmcsIFRhZWRlb2stR3UKLQkJCQlUYWVqZW9uICAzMDYtMjMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLUZDICAgKGhleCkJCVMyaW8gVGVjaG5vbG9naWVzIENvcnAKLTAwMENGQyAgICAgKGJhc2UgMTYpCQlTMmlvIFRlY2hub2xvZ2llcyBDb3JwCi0JCQkJNTA1IE1hcmNoIFJkCi0JCQkJU3VpdGUgMTIwCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDJNNQotCQkJCUNBTkFEQQotCi0wMC0wQy1GRCAgIChoZXgpCQlIeXVuZGFpIEltYWdlUXVlc3QgQ28uLEx0ZC4KLTAwMENGRCAgICAgKGJhc2UgMTYpCQlIeXVuZGFpIEltYWdlUXVlc3QgQ28uLEx0ZC4KLQkJCQlTYW4gMTM2LTEsIEFtaS1yaSwgQnViYWwtZXViCi0JCQkJSWNob24tc2kgS3lvdW5nIGtpLWRvIDQ2Ny03MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtRkUgICAoaGV4KQkJR3JhbmQgRWxlY3Ryb25pYyBDby4sIEx0ZAotMDAwQ0ZFICAgICAoYmFzZSAxNikJCUdyYW5kIEVsZWN0cm9uaWMgQ28uLCBMdGQKLQkJCQlSb29tIDE3MTAsIEJsb2NrIEIgTHVja3kgdG93ZXIsIE5vLjMgRG9uCi0JCQkJQmVpamluZyAgMTAwMDI3Ci0JCQkJQ0hJTkEKLQotMDAtMEMtRkYgICAoaGV4KQkJTVJPLVRFSyBMSU1JVEVECi0wMDBDRkYgICAgIChiYXNlIDE2KQkJTVJPLVRFSyBMSU1JVEVECi0JCQkJMTQsIDFTVCBEIE1BSU4gUk9BRCwKLQkJCQlHQU5HQSBOQUdBUgotCQkJCUJBTkdBTE9SRSBLQVJOQVRBS0EgNTYwMDMyCi0JCQkJSU5ESUEKLQotMDAtMEQtMDAgICAoaGV4KQkJU2Vhd2F5IE5ldHdvcmtzIEluYy4KLTAwMEQwMCAgICAgKGJhc2UgMTYpCQlTZWF3YXkgTmV0d29ya3MgSW5jLgotCQkJCTEgQ2hyeXNhbGlzIFdheQotCQkJCU90dGF3YSBPbnRhcmlvIEsyRyA2UDkKLQkJCQlDQU5BREEKLQotMDAtMEQtMDEgICAoaGV4KQkJUCZFIE1pY3JvY29tcHV0ZXIgU3lzdGVtcywgSW5jLgotMDAwRDAxICAgICAoYmFzZSAxNikJCVAmRSBNaWNyb2NvbXB1dGVyIFN5c3RlbXMsIEluYy4KLQkJCQk3MTAgQ29tbW9ud2VhbHRoIEF2ZQotCQkJCUJvc3RvbiBNYSAwMjIxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMDIgICAoaGV4KQkJTkVDIEFjY2Vzc1RlY2huaWNhLCBMdGQuCi0wMDBEMDIgICAgIChiYXNlIDE2KQkJTkVDIEFjY2Vzc1RlY2huaWNhLCBMdGQuCi0JCQkJODAwIFNoaW1vbWF0YQotCQkJCUtha2VnYXdhIFNoaXp1b2thIDQzNi04NTAxCi0JCQkJSkFQQU4KLQotMDAtMEQtMDMgICAoaGV4KQkJTWF0cmljcywgSW5jLgotMDAwRDAzICAgICAoYmFzZSAxNikJCU1hdHJpY3MsIEluYy4KLQkJCQk4ODUwIFN0YW5mb3JkIEJsdmQKLQkJCQlTdWl0ZSAzMDAwCi0JCQkJQ29sdW1iaWEgTUQgMjEwNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTA0ICAgKGhleCkJCUZveGJvcm8gRWNrYXJkdCBEZXZlbG9wbWVudCBHbWJICi0wMDBEMDQgICAgIChiYXNlIDE2KQkJRm94Ym9ybyBFY2thcmR0IERldmVsb3BtZW50IEdtYkgKLQkJCQlHbG9ja2Vuc3RyYXNzZSA1MgotCQkJCVN0dXR0Z2FydCBCYWRlbi1X/HJ0dGVtYmVyZyA3MDM3NgotCQkJCUdFUk1BTlkKLQotMDAtMEQtMDUgICAoaGV4KQkJY3liZXJuZXQgbWFudWZhY3R1cmluZyBpbmMuCi0wMDBEMDUgICAgIChiYXNlIDE2KQkJY3liZXJuZXQgbWFudWZhY3R1cmluZyBpbmMuCi0JCQkJNTAwMSBCaXJjaCBTdHJlZXQKLQkJCQlOZXdwb3J0IEJlYWNoIGNhIDkyNjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0wNiAgIChoZXgpCQlDb21wdWxvZ2ljIExpbWl0ZWQKLTAwMEQwNiAgICAgKGJhc2UgMTYpCQlDb21wdWxvZ2ljIExpbWl0ZWQKLQkJCQlVbml0IFczLCBNSyBUV08gQnVzaW5lc3MgQ2VudHJlCi0JCQkJQmFydG9uIFJvYWQKLQkJCQlXYXRlciBFYXRvbiBNaWx0b24gS2V5bmVzIE1LMiAzSFUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC0wNyAgIChoZXgpCQlDYWxyZWMgQXVkaW8gTHRkCi0wMDBEMDcgICAgIChiYXNlIDE2KQkJQ2FscmVjIEF1ZGlvIEx0ZAotCQkJCU51dGNsb3VnaCBNaWxsCi0JCQkJSGViZGVuIEJyaWRnZSBXZXN0IFlvcmtzaGlyZSBIWDcgOEVaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtMDggICAoaGV4KQkJQWJvdmVDYWJsZSwgSW5jLgotMDAwRDA4ICAgICAoYmFzZSAxNikJCUFib3ZlQ2FibGUsIEluYy4KLQkJCQk4NDAzIENvbGVzdmlsbGUgUm9hZCwgIzgyNQotCQkJCVNpbHZlciBTcHJpbmcgTUQgMjA5MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTA5ICAgKGhleCkJCVl1ZWh1YShaaHVoYWkpIEVsZWN0cm9uaWMgQ08uIExURAotMDAwRDA5ICAgICAoYmFzZSAxNikJCVl1ZWh1YShaaHVoYWkpIEVsZWN0cm9uaWMgQ08uIExURAotCQkJCTRSZCBQaW5nZG9uZyxOYW5waW5nIFNjaWVuY2UgJiBUZWNobm9sb2cKLQkJCQlaaHVoYWkgR3Vhbmdkb25nIDUxOTA3MAotCQkJCUNISU5BCi0KLTAwLTBELTBBICAgKGhleCkJCVByb2plY3Rpb25kZXNpZ24gYXMKLTAwMEQwQSAgICAgKGJhc2UgMTYpCQlQcm9qZWN0aW9uZGVzaWduIGFzCi0JCQkJSGFib3JudmVpZW4gNTMKLQkJCQlHYW1sZSBGcmVkcmlrc3RhZCBOLTE2MzAKLQkJCQlOT1JXQVkKLQotMDAtMEQtMEIgICAoaGV4KQkJQnVmZmFsbyBJbmMuCi0wMDBEMEIgICAgIChiYXNlIDE2KQkJQnVmZmFsbyBJbmMuCi0JCQkJTUVMQ08gSEktVEVDSCBDRU5URVIsCi0JCQkJU0hJQkFUQSBIT05ET1JJIDQtMTUgTUlOQU1JLUtVLAotCQkJCU5BR09ZQSAgNDU3LTg1MjAKLQkJCQlKQVBBTgotCi0wMC0wRC0wQyAgIChoZXgpCQlNREkgU2VjdXJpdHkgU3lzdGVtcwotMDAwRDBDICAgICAoYmFzZSAxNikJCU1ESSBTZWN1cml0eSBTeXN0ZW1zCi0JCQkJOTUxOCBOaW50aCBTdHJlZXQKLQkJCQlSYW5jaG8gQ3VjYW1vbmdhIENBIDkxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0wRCAgIChoZXgpCQlJVFN1cHBvcnRlZCwgTExDCi0wMDBEMEQgICAgIChiYXNlIDE2KQkJSVRTdXBwb3J0ZWQsIExMQwotCQkJCTQ5ODkgUGVhY2h0cmVlIFBhcmt3YXkKLQkJCQlTVEUgMjAwCi0JCQkJTm9yY3Jvc3MgR0EgMzAwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTBFICAgKGhleCkJCUlucW5ldCBTeXN0ZW1zLCBJbmMuCi0wMDBEMEUgICAgIChiYXNlIDE2KQkJSW5xbmV0IFN5c3RlbXMsIEluYy4KLQkJCQkzMjEgTktJQyBDZW50ZXIKLQkJCQk0OC04NCBIb25nZXVuLWRvbmcsIFNlb2RhZW11bi1rdQotCQkJCVNlb3VsICAxMjAtMTAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELTBGICAgKGhleCkJCUZpbmx1eCBMdGQKLTAwMEQwRiAgICAgKGJhc2UgMTYpCQlGaW5sdXggTHRkCi0JCQkJUmFkaW9taWVoZW5rYXR1IDMKLQkJCQlUdXJrdSAgRklOLTIwMzIxCi0JCQkJRklOTEFORAotCi0wMC0wRC0xMCAgIChoZXgpCQlFbWJlZHRyb25pY3MgT3kKLTAwMEQxMCAgICAgKGJhc2UgMTYpCQlFbWJlZHRyb25pY3MgT3kKLQkJCQlVbmthcmlucG9sa3UgMjAKLQkJCQlLdW9waW8gIDcwODIwCi0JCQkJRklOTEFORAotCi0wMC0wRC0xMSAgIChoZXgpCQlERU5UU1BMWSAtIEdlbmRleAotMDAwRDExICAgICAoYmFzZSAxNikJCURFTlRTUExZIC0gR2VuZGV4Ci0JCQkJOTAxIFdlc3QgT2FrdG9uIFN0cmVldAotCQkJCURlcyBQbGFpbmVzIElMIDYwMDE4LTE4ODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTEyICAgKGhleCkJCUFYRUxMIENvcnBvcmF0aW9uCi0wMDBEMTIgICAgIChiYXNlIDE2KQkJQVhFTEwgQ29ycG9yYXRpb24KLQkJCQlBa2loYWJhcmEgVURYIFNvdXRoIFdpbmcgMTBGCi0JCQkJNC0xNC0xIFNvdG9rYW5kYQotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTg5NzMKLQkJCQlKQVBBTgotCi0wMC0wRC0xMyAgIChoZXgpCQlXaWxoZWxtIFJ1dGVuYmVjayBHbWJIJkNvLgotMDAwRDEzICAgICAoYmFzZSAxNikJCVdpbGhlbG0gUnV0ZW5iZWNrIEdtYkgmQ28uCi0JCQkJTmllZGVyd29ydGggMS0xMAotCQkJCVNjaGFsa3Nt/GhsZSBOUlcgNTg1NzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTE0ICAgKGhleCkJCVZ0ZWNoIElubm92YXRpb24gTFAgZGJhIEFkdmFuY2VkIEFtZXJpY2FuIFRlbGVwaG9uZXMKLTAwMEQxNCAgICAgKGJhc2UgMTYpCQlWdGVjaCBJbm5vdmF0aW9uIExQIGRiYSBBZHZhbmNlZCBBbWVyaWNhbiBUZWxlcGhvbmVzCi0JCQkJMjAzLTYwMCBQYXJzaXBwYW55IFJkCi0JCQkJUGFyc2lwcGFueSBOSiAwNzA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMTUgICAoaGV4KQkJVm9pcGFjIHMuci5vLgotMDAwRDE1ICAgICAoYmFzZSAxNikJCVZvaXBhYyBzLnIuby4KLQkJCQlVbC4gSmFua2EgS3JhbGEgMwotCQkJCVRyZW5jaW4gIDkxMSAwMQotCQkJCVNMT1ZBS0lBCi0KLTAwLTBELTE2ICAgKGhleCkJCVVIUyBTeXN0ZW1zIFB0eSBMdGQKLTAwMEQxNiAgICAgKGJhc2UgMTYpCQlVSFMgU3lzdGVtcyBQdHkgTHRkCi0JCQkJUE8gQm94IDYyNjQKLQkJCQlTb3V0aCBTeWRuZXkgQnVzaW5lc3MgSHViCi0JCQkJQWxleGFuZHJpYSBOU1cgMjAxNQotCQkJCUFVU1RSQUxJQQotCi0wMC0wRC0xNyAgIChoZXgpCQlUdXJibyBOZXR3b3JrcyBDby5MdGQKLTAwMEQxNyAgICAgKGJhc2UgMTYpCQlUdXJibyBOZXR3b3JrcyBDby5MdGQKLQkJCQkyRixObyAxMjIzLCBDaHVuZyBDaGVuZyBSZC4KLQkJCQlUYW8gWXVhbiAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0xOCAgIChoZXgpCQlNZWdhLVRyZW5kIEVsZWN0cm9uaWNzIENPLiwgTFRELgotMDAwRDE4ICAgICAoYmFzZSAxNikJCU1lZ2EtVHJlbmQgRWxlY3Ryb25pY3MgQ08uLCBMVEQuCi0JCQkJVG9uZyBGdSBZdSBJbmQuLCBLdSBLZW5nIFZpbGxhZ2UsIEd1YW4gTGFuCi0JCQkJU2hlbmd6aGVuIEd1YW5nIERvbmcgNTE4MTEwCi0JCQkJQ0hJTkEKLQotMDAtMEQtMTkgICAoaGV4KQkJUk9CRSBTaG93IGxpZ2h0aW5nCi0wMDBEMTkgICAgIChiYXNlIDE2KQkJUk9CRSBTaG93IGxpZ2h0aW5nCi0JCQkJSGF6b3ZpY2UgMjA5MAotCQkJCVJvem5vdiBwb2QgUmFkaG9zdGVtICA3NTYgNjEKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0wRC0xQSAgIChoZXgpCQlNdXN0ZWsgU3lzdGVtIEluYy4KLTAwMEQxQSAgICAgKGJhc2UgMTYpCQlNdXN0ZWsgU3lzdGVtIEluYy4KLQkJCQlOby4gMjUsIFImRCBSb2FkLCBTY2llbmNlLUJhc2VkIEluZHVzdHJpCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtMUIgICAoaGV4KQkJS3lvdG8gRWxlY3Ryb25pY3MgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLTAwMEQxQiAgICAgKGJhc2UgMTYpCQlLeW90byBFbGVjdHJvbmljcyBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTU2LTIsIE5pbm9kYW4tY2hvLCBTaGluZGVuLAotCQkJCUtpc3Nob2luLCBNaW5hbWkta3UsCi0JCQkJS3lvdG8tQ2l0eSBLeW90byBQcmVmZWN0dXJlIDYwMS04MzE3Ci0JCQkJSkFQQU4KLQotMDAtMEQtMUMgICAoaGV4KQkJQW1lc3lzIERlZmVuc2UKLTAwMEQxQyAgICAgKGJhc2UgMTYpCQlBbWVzeXMgRGVmZW5zZQotCQkJCTEwMzAgQXYgZGUgbGEgTEFVWklFUkUKLQkJCQlaQUMgZGUgUGljaGF1cnkgSUkgTGVzIE1pbGxlcyBCUCAyMCAxNDAKLQkJCQlBSVggZW4gUFJPVkVOQ0UgQ2VkZXggMDMgMTM3OTQKLQkJCQlGUkFOQ0UKLQotMDAtMEQtMUQgICAoaGV4KQkJSElHSC1URUsgSEFSTkVTUyBFTlQuIENPLiwgTFRELgotMDAwRDFEICAgICAoYmFzZSAxNikJCUhJR0gtVEVLIEhBUk5FU1MgRU5ULiBDTy4sIExURC4KLQkJCQk0Ri02LCBObzE4LCBQdS1UaW5nIFJkLiBIc2luY2h1LCBUYWl3YW4KLQkJCQk0RiwgTm8xNiwgTGFuZTUwLCBTZWMzLCBOYW4tS2FuZyBSZCwgTmFuCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0xRSAgIChoZXgpCQlDb250cm9sIFRlY2huaXF1ZXMKLTAwMEQxRSAgICAgKGJhc2UgMTYpCQlDb250cm9sIFRlY2huaXF1ZXMKLQkJCQlUaGUgR3JvCi0JCQkJUG9vbCBSb2FkCi0JCQkJTmV3dG93biBQb3d5cyBTWTE2IDNCRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTFGICAgKGhleCkJCUFWIERpZ2l0YWwKLTAwMEQxRiAgICAgKGJhc2UgMTYpCQlBViBEaWdpdGFsCi0JCQkJUG90dGVuZG9yZmVyIFN0cmFzc2UgMjUtMjcvNC8xLzEKLQkJCQlXaWVuICAxMTIwCi0JCQkJQVVTVFJJQQotCi0wMC0wRC0yMCAgIChoZXgpCQlBU0FISUtBU0VJIFRFQ0hOT1NZU1RFTSBDTy4sTFRELgotMDAwRDIwICAgICAoYmFzZSAxNikJCUFTQUhJS0FTRUkgVEVDSE5PU1lTVEVNIENPLixMVEQuCi0JCQkJS2FuZGEgSmluYm9jaG8gMS0xMDUKLQkJCQkyMy03LE5pc2hpc2hpbmp1a3UgMS1jaG9tZQotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTgxMDEKLQkJCQlKQVBBTgotCi0wMC0wRC0yMSAgIChoZXgpCQlXSVNDT1JFIEluYy4KLTAwMEQyMSAgICAgKGJhc2UgMTYpCQlXSVNDT1JFIEluYy4KLQkJCQk2RiwgTm8uIDE4MCwgU2VjLiAyLCBEdWVuaHVhIFMuIFJkLAotCQkJCVRhaXBlaSAgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0yMiAgIChoZXgpCQlVbml0cm9uaWNzIExURAotMDAwRDIyICAgICAoYmFzZSAxNikJCVVuaXRyb25pY3MgTFRECi0JCQkJVW5pdHJvbmljcyBCdWlsZGluZwotCQkJCUFpcnBvcnQgQ2l0eSwgUC5PLkIgMzAwCi0JCQkJQmVuIEd1cmlvbiBBaXJwb3J0ICA3MDEwMAotCQkJCUlTUkFFTAotCi0wMC0wRC0yMyAgIChoZXgpCQlTbWFydCBTb2x1dGlvbiwgSW5jCi0wMDBEMjMgICAgIChiYXNlIDE2KQkJU21hcnQgU29sdXRpb24sIEluYwotCQkJCTQ2NSBXZXN0IExhd25kYWxlICNCCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTI0ICAgKGhleCkJCVNFTlRFQyBFJkUgQ08uLCBMVEQuCi0wMDBEMjQgICAgIChiYXNlIDE2KQkJU0VOVEVDIEUmRSBDTy4sIExURC4KLQkJCQlOby4gMzIuIEdvbmc1IFJkLgotCQkJCUx1bmd0YW4gVGFveXVhbiAzMjUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTI1ICAgKGhleCkJCVNBTkRFTiBDT1JQT1JBVElPTgotMDAwRDI1ICAgICAoYmFzZSAxNikJCVNBTkRFTiBDT1JQT1JBVElPTgotCQkJCTIwIEtvdG9idWtpLWNobwotCQkJCUlzZXNha2ktc2hpIEd1bm1hIDM3Mi04NTAyCi0JCQkJSkFQQU4KLQotMDAtMEQtMjYgICAoaGV4KQkJUHJpbWFncmFwaGljcyBMaW1pdGVkCi0wMDBEMjYgICAgIChiYXNlIDE2KQkJUHJpbWFncmFwaGljcyBMaW1pdGVkCi0JCQkJQ2FtYnJpZGdlIEhvdXNlLCBOby4yIEZvY3VzIEZvdXIKLQkJCQlGb3VydGggQXZlbnVlCi0JCQkJTGV0Y2h3b3J0aCBHYXJkZW4gQ2l0eSBIZXJ0Zm9yZHNoaXJlIFNHNiAyVFUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC0yNyAgIChoZXgpCQlNSUNST1BMRVggUHJpbnR3YXJlIEFHCi0wMDBEMjcgICAgIChiYXNlIDE2KQkJTUlDUk9QTEVYIFByaW50d2FyZSBBRwotCQkJCVBhbnplcnN0cmHfZSA1Ci0JCQkJVmFyZWwgTmllZGVyc2FjaHNlbiAyNjMxNgotCQkJCUdFUk1BTlkKLQotMDAtMEQtMjggICAoaGV4KQkJQ2lzY28KLTAwMEQyOCAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0yOSAgIChoZXgpCQlDaXNjbwotMDAwRDI5ICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTJBICAgKGhleCkJCVNjYW5tYXRpYyBBUwotMDAwRDJBICAgICAoYmFzZSAxNikJCVNjYW5tYXRpYyBBUwotCQkJCUtpbHN1bmQKLQkJCQlTdGF1YvggIDQ5MjAKLQkJCQlOT1JXQVkKLQotMDAtMEQtMkIgICAoaGV4KQkJUmFjYWwgSW5zdHJ1bWVudHMKLTAwMEQyQiAgICAgKGJhc2UgMTYpCQlSYWNhbCBJbnN0cnVtZW50cwotCQkJCTQgR29vZHllYXIgU3RyZWV0Ci0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0yQyAgIChoZXgpCQlQYXRhcHNjbyBEZXNpZ25zIEx0ZAotMDAwRDJDICAgICAoYmFzZSAxNikJCVBhdGFwc2NvIERlc2lnbnMgTHRkCi0JCQkJVGhlIFBhc3NmaWVsZCBPYWsKLQkJCQlQYXNzZmllbGQKLQkJCQlOciBMaXBob29rIEhhbXBzaGlyZSBHVTMwIDdSTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTJEICAgKGhleCkJCU5DVCBEZXV0c2NobGFuZCBHbWJICi0wMDBEMkQgICAgIChiYXNlIDE2KQkJTkNUIERldXRzY2hsYW5kIEdtYkgKLQkJCQlXaWxkZW5icnVjaHN0ci4gMTUKLQkJCQlKZW5hIFRo/HJpbmdlbiAwNzc0NQotCQkJCUdFUk1BTlkKLQotMDAtMEQtMkUgICAoaGV4KQkJTWF0c3VzaGl0YSBBdmlvbmljcyBTeXN0ZW1zIENvcnBvcmF0aW9uCi0wMDBEMkUgICAgIChiYXNlIDE2KQkJTWF0c3VzaGl0YSBBdmlvbmljcyBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJMjYyMDAgRW50ZXJwcmlzZSBXYXkKLQkJCQlMYWtlIEZvcmVzdCBDQSA5MjYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMkYgICAoaGV4KQkJQUlOIENvbW0uVGVjaC5Dby4sIExURAotMDAwRDJGICAgICAoYmFzZSAxNikJCUFJTiBDb21tLlRlY2guQ28uLCBMVEQKLQkJCQk0RiwgTm8uNzYsIFNlYzIgTWludHp1IFJkCi0JCQkJSnVuZy1MaSBDaXR5ICAzMjAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTMwICAgKGhleCkJCUljZUZ5cmUgU2VtaWNvbmR1Y3RvcgotMDAwRDMwICAgICAoYmFzZSAxNikJCUljZUZ5cmUgU2VtaWNvbmR1Y3RvcgotCQkJCVN1aXRlIDMwMAotCQkJCTQxMSBMZWdnZXR0IERyaXZlCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDNDOQotCQkJCUNBTkFEQQotCi0wMC0wRC0zMSAgIChoZXgpCQlDb21wZWxsZW50IFRlY2hub2xvZ2llcywgSW5jLgotMDAwRDMxICAgICAoYmFzZSAxNikJCUNvbXBlbGxlbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNzYyNSBTbWV0YW5hIExhbmUKLQkJCQlFZGVuIFByYWlyaWUgTWlubmVzb3RhIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0zMiAgIChoZXgpCQlEaXNwZW5zZVNvdXJjZSwgSW5jLgotMDAwRDMyICAgICAoYmFzZSAxNikJCURpc3BlbnNlU291cmNlLCBJbmMuCi0JCQkJMjk4MDEgU2FudGEgTWFyZ2FyaXRhIFBhcmt3YXkKLQkJCQlSYW5jaG8gU2FudGEgTWFyZ2FyaXRhIENBIDkyNjg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0zMyAgIChoZXgpCQlQcmVkaXdhdmUgQ29ycC4KLTAwMEQzMyAgICAgKGJhc2UgMTYpCQlQcmVkaXdhdmUgQ29ycC4KLQkJCQk0ODQzMSBNaWxtb250IERyaXZlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMzQgICAoaGV4KQkJU2hlbGwgSW50ZXJuYXRpb25hbCBFeHBsb3JhdGlvbiBhbmQgUHJvZHVjdGlvbiwgSW5jLgotMDAwRDM0ICAgICAoYmFzZSAxNikJCVNoZWxsIEludGVybmF0aW9uYWwgRXhwbG9yYXRpb24gYW5kIFByb2R1Y3Rpb24sIEluYy4KLQkJCQlCVEMtR2FzbWVyCi0JCQkJUE8gQm94IDQ4MQotCQkJCUhvdXN0b24gVFggNzcwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTM1ICAgKGhleCkJCVBBQyBJbnRlcm5hdGlvbmFsIEx0ZAotMDAwRDM1ICAgICAoYmFzZSAxNikJCVBBQyBJbnRlcm5hdGlvbmFsIEx0ZAotCQkJCTEgUGFyayBHYXRlIENsb3NlCi0JCQkJQnJlZGJ1cnkKLQkJCQlTdG9ja3BvcnQgQ2hlc2hpcmUgU0s2IDJTWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTM2ICAgKGhleCkJCVd1IEhhbiBSb3V0b24gRWxlY3Ryb25pYyBDby4sIEx0ZAotMDAwRDM2ICAgICAoYmFzZSAxNikJCVd1IEhhbiBSb3V0b24gRWxlY3Ryb25pYyBDby4sIEx0ZAotCQkJCU1pYW8gU2hhbiBEaXN0cmljdCwgRWFzdCBMYWtlIEhpLVRlY2gKLQkJCQlEZXZlbG9wbWVudCBQYXJrCi0JCQkJV3VoYW4gSHViZWkgNDMwMjIzCi0JCQkJQ0hJTkEKLQotMDAtMEQtMzcgICAoaGV4KQkJV0lQTFVHCi0wMDBEMzcgICAgIChiYXNlIDE2KQkJV0lQTFVHCi0JCQkJUlVBICBEUi4gQUdPU1RJTkhPIEdPVUxBTwotCQkJCUJBSVJSTzogQ09SUkVBUwotCQkJCVBFVFJPUE9MSVMgUklPIEpBTkVJUk8gMjU3MzAwNTAKLQkJCQlCUkFaSUwKLQotMDAtMEQtMzggICAoaGV4KQkJTklTU0lOIElOQy4KLTAwMEQzOCAgICAgKGJhc2UgMTYpCQlOSVNTSU4gSU5DLgotCQkJCTEwLTcgS0FNRUktQ0hPCi0JCQkJVEFLQVJBWlVLQSBIWU9HTyA2NjUtMDA0NwotCQkJCUpBUEFOCi0KLTAwLTBELTM5ICAgKGhleCkJCU5ldHdvcmsgRWxlY3Ryb25pY3MKLTAwMEQzOSAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIEVsZWN0cm9uaWNzCi0JCQkJQm94IDEwMjAKLQkJCQlTYW5kZWZqb3JkIFNhbmRlZmpvcmQgTjMyMDQKLQkJCQlOT1JXQVkKLQotMDAtMEQtM0EgICAoaGV4KQkJTWljcm9zb2Z0IENvcnAuCi0wMDBEM0EgICAgIChiYXNlIDE2KQkJTWljcm9zb2Z0IENvcnAuCi0JCQkJT25lIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdhLiA5ODA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtM0IgICAoaGV4KQkJTWljcm9lbGVjdHJvbmljcyBUZWNobm9sb2d5IEluYy4KLTAwMEQzQiAgICAgKGJhc2UgMTYpCQlNaWNyb2VsZWN0cm9uaWNzIFRlY2hub2xvZ3kgSW5jLgotCQkJCU5vMSwgSW5ub3ZhdGlvbiBSb2FkIElJCi0JCQkJSHNpbmNodSBTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCTMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtM0MgICAoaGV4KQkJaS5UZWNoIER5bmFtaWMgTHRkCi0wMDBEM0MgICAgIChiYXNlIDE2KQkJaS5UZWNoIER5bmFtaWMgTHRkCi0JCQkJUm9vbSAxMTEyLCBNZXRyb3BsYXphIFRvd2VyIDIsIDIyMyBIaW5nCi0JCQkJODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBELTNEICAgKGhleCkJCUhhbW1lcmhlYWQgU3lzdGVtcywgSW5jLgotMDAwRDNEICAgICAoYmFzZSAxNikJCUhhbW1lcmhlYWQgU3lzdGVtcywgSW5jLgotCQkJCTY0MCBDbHlkZSBDb3VydAotCQkJCU1vdW50YWluIFZpZXcgQ2FsaWZvcm5pYSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtM0UgICAoaGV4KQkJQVBMVVggQ29tbXVuaWNhdGlvbnMgTHRkLgotMDAwRDNFICAgICAoYmFzZSAxNikJCUFQTFVYIENvbW11bmljYXRpb25zIEx0ZC4KLQkJCQkxMEYsIE5vLiAxNjYsIERhaC1ZZWggUmQuLCBQZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtM0YgICAoaGV4KQkJVlRJIEluc3RydW1lbnRzIENvcnBvcmF0aW9uCi0wMDBEM0YgICAgIChiYXNlIDE2KQkJVlRJIEluc3RydW1lbnRzIENvcnBvcmF0aW9uCi0JCQkJNTQyNSBXYXJuZXIgUm9hZCwgU3VpdGUgMTMKLQkJCQlWYWxsZXkgVmlldyBPSCA0NDEyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNDAgICAoaGV4KQkJVmVyaW50IExvcm9uaXggVmlkZW8gU29sdXRpb25zCi0wMDBENDAgICAgIChiYXNlIDE2KQkJVmVyaW50IExvcm9uaXggVmlkZW8gU29sdXRpb25zCi0JCQkJMTI1MjYgSGlnaCBCbHVmZiBEci4gIzE3MAotCQkJCVNhbiBESWVnbyBDQSA5MjEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNDEgICAoaGV4KQkJU2llbWVucyBBRyBJQ00gTVAgVUMgUkQgSVQgS0xGMQotMDAwRDQxICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQUcgSUNNIE1QIFVDIFJEIElUIEtMRjEKLQkJCQlTdWVkc3RyYXNzZSA5Ci0JCQkJS2FtcC1MaW50Zm9ydCBOUlcgNDc0NzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTQyICAgKGhleCkJCU5ld2Jlc3QgRGV2ZWxvcG1lbnQgTGltaXRlZAotMDAwRDQyICAgICAoYmFzZSAxNikJCU5ld2Jlc3QgRGV2ZWxvcG1lbnQgTGltaXRlZAotCQkJCTMvRiAgVW5pdCAzMTEtMzEyCi0JCQkJTm8uMSBTY2llbmNlIFBhcmsgRWFzdCBBdmVudWUKLQkJCQlTaGF0aW4gIE5UIAotCQkJCUhPTkcgS09ORwotCi0wMC0wRC00MyAgIChoZXgpCQlEUlMgVGFjdGljYWwgU3lzdGVtcyBJbmMuCi0wMDBENDMgICAgIChiYXNlIDE2KQkJRFJTIFRhY3RpY2FsIFN5c3RlbXMgSW5jLgotCQkJCTM1MjAgVS5TLiBIaWdod2F5IDEKLQkJCQlQYWxtIEJheSBGTCAzMjkwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNDQgICAoaGV4KQkJQXVkaW8gQlUgLSBMb2dpdGVjaAotMDAwRDQ0ICAgICAoYmFzZSAxNikJCUF1ZGlvIEJVIC0gTG9naXRlY2gKLQkJCQkxNDk5IFNFIFRlY2ggQ2VudGVyIFBsYWNlCi0JCQkJU3VpdGUgMzUwCi0JCQkJVmFuY291dmVyIFdBIDk4NjgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC00NSAgIChoZXgpCQlUb3R0b3JpIFNBTllPIEVsZWN0cmljIENvLiwgTHRkLgotMDAwRDQ1ICAgICAoYmFzZSAxNikJCVRvdHRvcmkgU0FOWU8gRWxlY3RyaWMgQ28uLCBMdGQuCi0JCQkJMy0yMDEsIE1pbmFtaSBZb3NoaWthdGEKLQkJCQlUb3R0b3JpIENpdHkgVG90dG9yaSA2ODAtODYzNAotCQkJCUpBUEFOCi0KLTAwLTBELTQ2ICAgKGhleCkJCVBhcmtlciBTU0QgRHJpdmVzCi0wMDBENDYgICAgIChiYXNlIDE2KQkJUGFya2VyIFNTRCBEcml2ZXMKLQkJCQk5MjI1IEZvcnN5dGggUGFyayBEcml2ZQotCQkJCUNoYXJsb3R0ZSBOQyAyODI3My0zODg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC00NyAgIChoZXgpCQlDb2xsZXgKLTAwMEQ0NyAgICAgKGJhc2UgMTYpCQlDb2xsZXgKLQkJCQkxM0YtMyxOby4xNDIsU2VjLjEsSHVhbWVpIFcsU3QuLFNoaSBDaGl1Ci0JCQkJVGFpY2h1bmcgIDQwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtNDggICAoaGV4KQkJQUVXSU4gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAwRDQ4ICAgICAoYmFzZSAxNikJCUFFV0lOIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQk3RiwgTm8uIDIsIExhbmUgNDcsIFNlYy4gMywgTmFuLUdhbmcgUmQuCi0JCQkJVEFJUEVJICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTQ5ICAgKGhleCkJCVRyaXRvbiBTeXN0ZW1zIG9mIERlbGF3YXJlLCBJbmMuCi0wMDBENDkgICAgIChiYXNlIDE2KQkJVHJpdG9uIFN5c3RlbXMgb2YgRGVsYXdhcmUsIEluYy4KLQkJCQk1MjIgRS4gUmFpbHJvYWQgU3QuCi0JCQkJTG9uZyBCZWFjaCBNUyAzOTU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNEEgICAoaGV4KQkJU3RlYWcgRVRBLU9wdGlrCi0wMDBENEEgICAgIChiYXNlIDE2KQkJU3RlYWcgRVRBLU9wdGlrCi0JCQkJQm9yc2lnc3RyYXNzZSA3OC4tODAKLQkJCQlIZWluc2JlcmcgIDUyNTI1Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC00QiAgIChoZXgpCQlSb2t1LCBMTEMKLTAwMEQ0QiAgICAgKGJhc2UgMTYpCQlSb2t1LCBMTEMKLQkJCQkzOTkgU2hlcm1hbiBBdmUuICMxMgotCQkJCVBhbG8gQWx0byBDQSA5NDMwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNEMgICAoaGV4KQkJT3V0bGluZSBFbGVjdHJvbmljcyBMdGQuCi0wMDBENEMgICAgIChiYXNlIDE2KQkJT3V0bGluZSBFbGVjdHJvbmljcyBMdGQuCi0JCQkJNy9GIEJlbnNvbiBUb3dlcgotCQkJCTc0IEh1bmcgVG8gUm9hZAotCQkJCUt3dW4gVG9uZyBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0wRC00RCAgIChoZXgpCQlOaW5lbGFuZXMKLTAwMEQ0RCAgICAgKGJhc2UgMTYpCQlOaW5lbGFuZXMKLQkJCQkjNDA1IDRGIERpcGxvbWF0aWMgQ2VudGVyCi0JCQkJU2VvY2hvLWd1LCBTZW9jaG8tZG9uZwotCQkJCVNlb3VsICAxMzc2LTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtNEUgICAoaGV4KQkJTkRSIENvLixMVEQuCi0wMDBENEUgICAgIChiYXNlIDE2KQkJTkRSIENvLixMVEQuCi0JCQkJU3VtaXRvbW8gc2VpbWVpIG1pbmF0b21hY2hpIE1UIEJMREcKLQkJCQkxLTE4LTIgTWluYW1paG9yaWUgTmlzaGkta3UKLQkJCQlPc2FrIEtpbmtpIDU1MC0wMDE1Ci0JCQkJSkFQQU4KLQotMDAtMEQtNEYgICAoaGV4KQkJS2Vud29vZCBDb3Jwb3JhdGlvbgotMDAwRDRGICAgICAoYmFzZSAxNikJCUtlbndvb2QgQ29ycG9yYXRpb24KLQkJCQkyOTY3LTMsIElzaGlrYXdhLW1hY2hpCi0JCQkJSGFjaGlvamktc2hpIFRva3lvIDE5Mi04NTI1Ci0JCQkJSkFQQU4KLQotMDAtMEQtNTAgICAoaGV4KQkJR2FsYXphciBOZXR3b3JrcwotMDAwRDUwICAgICAoYmFzZSAxNikJCUdhbGF6YXIgTmV0d29ya3MKLQkJCQkzNSBGaXR6Z2VyYWxkIEF2ZQotCQkJCU90dGF3YSBPTiBLMkggMUU2Ci0JCQkJQ0FOQURBCi0KLTAwLTBELTUxICAgKGhleCkJCURJVlIgU3lzdGVtcywgSW5jLgotMDAwRDUxICAgICAoYmFzZSAxNikJCURJVlIgU3lzdGVtcywgSW5jLgotCQkJCTIxNjEgU2F0dXJuIEN0LgotCQkJCUJha2Vyc2ZpZWxkIENBIDkzMzA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC01MiAgIChoZXgpCQlDb21hcnQgc3lzdGVtCi0wMDBENTIgICAgIChiYXNlIDE2KQkJQ29tYXJ0IHN5c3RlbQotCQkJCU5vLiAyMTEsIEFjZSBUZWNobm8gVG93ZXIgSUlJLCAxOTctNDgKLQkJCQlHdS1ybyBEb25nLCBHdS1ybyBHdSwgU2VvdWwsIEtvcmVhCi0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtNTMgICAoaGV4KQkJQmVpamluZyA1dyBDb21tdW5pY2F0aW9uIENvcnAuCi0wMDBENTMgICAgIChiYXNlIDE2KQkJQmVpamluZyA1dyBDb21tdW5pY2F0aW9uIENvcnAuCi0JCQkJTk8uNCxaaG9uZy1HdWFuLUN1biBTb3V0aCA0IHN0cmVldCwKLQkJCQlCZWlqaW5nICAxMDAwODAKLQkJCQlDSElOQQotCi0wMC0wRC01NCAgIChoZXgpCQkzQ29tIEx0ZAotMDAwRDU0ICAgICAoYmFzZSAxNikJCTNDb20gTHRkCi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC01NSAgIChoZXgpCQlTQU5ZQ09NIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwRDU1ICAgICAoYmFzZSAxNikJCVNBTllDT00gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJNkYsQmVpamluZyBDYXBpdGFsIFRpbWVzIFNxdWFyZSw4OCMgWGljaAotCQkJCUJlaWppbmcgIDEwMDAzMQotCQkJCUNISU5BCi0KLTAwLTBELTU2ICAgKGhleCkJCURlbGwgUENCQSBUZXN0Ci0wMDBENTYgICAgIChiYXNlIDE2KQkJRGVsbCBQQ0JBIFRlc3QKLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSUjUgTVMtODU0NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTU3ICAgKGhleCkJCUZ1aml0c3UgSS1OZXR3b3JrIFN5c3RlbXMgTGltaXRlZC4KLTAwMEQ1NyAgICAgKGJhc2UgMTYpCQlGdWppdHN1IEktTmV0d29yayBTeXN0ZW1zIExpbWl0ZWQuCi0JCQkJMS00MDMga29zdWdpLWNobyBuYWthaGFyYS1rdQotCQkJCWthd2FzYWtpIGthbmFnYXdhIDIxMS0wMDYzCi0JCQkJSkFQQU4KLQotMDAtMEQtNTggICAoaGV4KQkJUFJJVkFURQotMDAwRDU4ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wRC01OSAgIChoZXgpCQlBbWl0eSBTeXN0ZW1zLCBJbmMuCi0wMDBENTkgICAgIChiYXNlIDE2KQkJQW1pdHkgU3lzdGVtcywgSW5jLgotCQkJCTg4OCBUYXNtYW4gRHJpdmUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNUEgICAoaGV4KQkJVGllc3NlIFNwQQotMDAwRDVBICAgICAoYmFzZSAxNikJCVRpZXNzZSBTcEEKLQkJCQlWaWEgQXN0aQotCQkJCVpvbmEgSW5kdXN0cmlhbCBTYW4gQmVybmFyZG8KLQkJCQlJdnJlYSBUTyAxMDAxNQotCQkJCUlUQUxZCi0KLTAwLTBELTVCICAgKGhleCkJCVNtYXJ0IEVtcGlyZSBJbnZlc3RtZW50cyBMaW1pdGVkCi0wMDBENUIgICAgIChiYXNlIDE2KQkJU21hcnQgRW1waXJlIEludmVzdG1lbnRzIExpbWl0ZWQKLQkJCQlTdWl0ZSAyMDAxLTIwMDYsTGV2ZWwgMjAgTGFuZG1hcmsgTm9ydGgKLQkJCQlYaW4gSmllIEhvbmcgS29uZyAwMDg1MgotCQkJCUNISU5BCi0KLTAwLTBELTVDICAgKGhleCkJCVJvYmVydCBCb3NjaCBHbWJILCBWVC1BVE1PCi0wMDBENUMgICAgIChiYXNlIDE2KQkJUm9iZXJ0IEJvc2NoIEdtYkgsIFZULUFUTU8KLQkJCQlXZXJuZXJzdHJhc3NlIDUxCi0JCQkJU3R1dHRnYXJ0IEJXIDcwNDY5Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC01RCAgIChoZXgpCQlSYXJpdGFuIENvbXB1dGVyLCBJbmMKLTAwMEQ1RCAgICAgKGJhc2UgMTYpCQlSYXJpdGFuIENvbXB1dGVyLCBJbmMKLQkJCQk0MDAgQ290dG9udGFpbCBMYW5lCi0JCQkJU29tZXJzZXQgTkogMDg4NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTVFICAgKGhleCkJCU5FQyBQZXJzb25hbCBQcm9kdWN0cwotMDAwRDVFICAgICAoYmFzZSAxNikJCU5FQyBQZXJzb25hbCBQcm9kdWN0cwotCQkJCTYtODAsIFNoaW1vaGFuYXphd2EgMi1DaG9tZQotCQkJCVlvbmV6YXdhLXNoaSBZYW1hZ2F0YSA5OTItODUyMAotCQkJCUpBUEFOCi0KLTAwLTBELTVGICAgKGhleCkJCU1pbmRzIEluYwotMDAwRDVGICAgICAoYmFzZSAxNikJCU1pbmRzIEluYwotCQkJCTE5MTkgYm91bCBsaW9uZWwgYmVydHJhbmQKLQkJCQkjMjAyCi0JCQkJQm9pc2JyaWFuZCBRdWViZWMgSjdIIDFOOAotCQkJCUNBTkFEQQotCi0wMC0wRC02MCAgIChoZXgpCQlJQk0gQ29ycAotMDAwRDYwICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAuTy4gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC02MSAgIChoZXgpCQlHaWdhLUJ5dGUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMEQ2MSAgICAgKGJhc2UgMTYpCQlHaWdhLUJ5dGUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlObyA2LCBCYXUgQ2hpYW5nIFJvYWQsIEhzaW4tVGllbgotCQkJCVRhaXBlaSBIc2llbiAgOTk5OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtNjIgICAoaGV4KQkJRnVua3dlcmsgRGFiZW5kb3JmIEdtYkgKLTAwMEQ2MiAgICAgKGJhc2UgMTYpCQlGdW5rd2VyayBEYWJlbmRvcmYgR21iSAotCQkJCU1hZXJraXNjaGUgU3RyYXNzZQotCQkJCURhYmVuZG9yZiBCcmFuZGVuYnVyZyAxNTgwNgotCQkJCUdFUk1BTlkKLQotMDAtMEQtNjMgICAoaGV4KQkJREVOVCBJbnN0cnVtZW50cywgSW5jLgotMDAwRDYzICAgICAoYmFzZSAxNikJCURFTlQgSW5zdHJ1bWVudHMsIEluYy4KLQkJCQk2NCBOVyBGcmFua2xpbiBBdmUKLQkJCQlCZW5kIE9SIDk3NzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC02NCAgIChoZXgpCQlDT01BRyBIYW5kZWxzIEFHCi0wMDBENjQgICAgIChiYXNlIDE2KQkJQ09NQUcgSGFuZGVscyBBRwotCQkJCVppbGxlbmhhcmR0c3RyLjQxCi0JCQkJR29lcHBpbmdlbiBCYWRlbi1X/HJ0dGVtYmVyZyA3MzAzNwotCQkJCUdFUk1BTlkKLQotMDAtMEQtNjUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRDY1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNjYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRDY2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNjcgICAoaGV4KQkJQmVsQWlyIE5ldHdvcmtzIEluYy4KLTAwMEQ2NyAgICAgKGJhc2UgMTYpCQlCZWxBaXIgTmV0d29ya3MgSW5jLgotCQkJCTYwMyBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDJNNQotCQkJCUNBTkFEQQotCi0wMC0wRC02OCAgIChoZXgpCQlWaW5jaSBTeXN0ZW1zLCBJbmMuCi0wMDBENjggICAgIChiYXNlIDE2KQkJVmluY2kgU3lzdGVtcywgSW5jLgotCQkJCTgzMzAgQm9vbmUgQm91bGV2YXJkCi0JCQkJU3VpdGUgNTAwCi0JCQkJVmllbm5hIFZBIDIyMTgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC02OSAgIChoZXgpCQlUTVQmRCBDb3Jwb3JhdGlvbgotMDAwRDY5ICAgICAoYmFzZSAxNikJCVRNVCZEIENvcnBvcmF0aW9uCi0JCQkJMi0yNC0xCi0JCQkJSGFydW1pLWNobwotCQkJCUZ1Y2h1LXNpIFRva3lvIDE4My0wMDU3Ci0JCQkJSkFQQU4KLQotMDAtMEQtNkEgICAoaGV4KQkJUmVkd29vZCBUZWNobm9sb2dpZXMgTFRECi0wMDBENkEgICAgIChiYXNlIDE2KQkJUmVkd29vZCBUZWNobm9sb2dpZXMgTFRECi0JCQkJQW1iZXIgSG91c2UKLQkJCQlNYXJrZXQgU3RyZWV0Ci0JCQkJQnJhY2tuZWxsIEJlcmtzaGlyZSBSRzEyIDFKQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTZCICAgKGhleCkJCU1pdGEtVGVrbmlrIEEvUwotMDAwRDZCICAgICAoYmFzZSAxNikJCU1pdGEtVGVrbmlrIEEvUwotCQkJCUhhYW5kdmFlcmtlcnZlaiAxCi0JCQkJUm9lZGthZXJzYnJvIERLIERLLTg4NDAKLQkJCQlERU5NQVJLCi0KLTAwLTBELTZDICAgKGhleCkJCU0tQXVkaW8KLTAwMEQ2QyAgICAgKGJhc2UgMTYpCQlNLUF1ZGlvCi0JCQkJNDUgRSBTVCBKb3NlcGggU3QuCi0JCQkJQXJjYWRpYSBDQSA5MTAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNkQgICAoaGV4KQkJSy1UZWNoIERldmljZXMgQ29ycC4KLTAwMEQ2RCAgICAgKGJhc2UgMTYpCQlLLVRlY2ggRGV2aWNlcyBDb3JwLgotCQkJCTE0MDE2LTMwCi0JCQkJbmFrYW1pbm93YSBtaW5vd2FtYWNoaSBrYW1paW5hIG5hZ2FubyAzOTktNDYwMQotCQkJCUpBUEFOCi0KLTAwLTBELTZFICAgKGhleCkJCUstUGF0ZW50cyBPeQotMDAwRDZFICAgICAoYmFzZSAxNikJCUstUGF0ZW50cyBPeQotCQkJCVAuTy4gQm94IDc3Ci0JCQkJRWxhbm5vbnRpZSA1Ci0JCQkJVkFOVEFBIEZJIDAxNTExCi0JCQkJRklOTEFORAotCi0wMC0wRC02RiAgIChoZXgpCQlFbWJlciBDb3Jwb3JhdGlvbgotMDAwRDZGICAgICAoYmFzZSAxNikJCUVtYmVyIENvcnBvcmF0aW9uCi0JCQkJMzQzIENvbmdyZXNzIFN0Ci0JCQkJNXRoIEZsb29yCi0JCQkJQm9zdG9uIE1hIDAyMjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC03MCAgIChoZXgpCQlEYXRhbWF4IENvcnBvcmF0aW9uCi0wMDBENzAgICAgIChiYXNlIDE2KQkJRGF0YW1heCBDb3Jwb3JhdGlvbgotCQkJCTQ1MDEgUGFya3dheSBDb21tZXJjZSBCbHZkCi0JCQkJT3JsYW5kbyBGTCAzMjgwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNzEgICAoaGV4KQkJYm9jYSBzeXN0ZW1zCi0wMDBENzEgICAgIChiYXNlIDE2KQkJYm9jYSBzeXN0ZW1zCi0JCQkJMTA2NSBzLiByb2dlcnMgY2lyY2xlCi0JCQkJYm9jYSByYXRvbiBmbCAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNzIgICAoaGV4KQkJMldpcmUsIEluYwotMDAwRDcyICAgICAoYmFzZSAxNikJCTJXaXJlLCBJbmMKLQkJCQkxNzA0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC03MyAgIChoZXgpCQlUZWNobmljYWwgU3VwcG9ydCwgSW5jLgotMDAwRDczICAgICAoYmFzZSAxNikJCVRlY2huaWNhbCBTdXBwb3J0LCBJbmMuCi0JCQkJMTEyNTMgSm9obiBHYWx0IEJsdmQKLQkJCQlPbWFoYSBOZWJyYXNrYSA2ODEzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNzQgICAoaGV4KQkJU2FuZCBOZXR3b3JrIFN5c3RlbXMsIEluYy4KLTAwMEQ3NCAgICAgKGJhc2UgMTYpCQlTYW5kIE5ldHdvcmsgU3lzdGVtcywgSW5jLgotCQkJCTQzNCBQYXlyYW4gU3RyZWV0Ci0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTc1ICAgKGhleCkJCUtvYmlhbiBQdGUgTHRkIC0gVGFpd2FuIEJyYW5jaAotMDAwRDc1ICAgICAoYmFzZSAxNikJCUtvYmlhbiBQdGUgTHRkIC0gVGFpd2FuIEJyYW5jaAotCQkJCTJGLCBOby41ODAsIFJ1ZWlrdWFuZyBSZC4sTmVpIEh1LFRhaXBlaSwKLQkJCQlUYWlwZWkgTmVpIEh1IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtNzYgICAoaGV4KQkJSG9rdXRvIERlbnNoaSBDbywuIEx0ZC4KLTAwMEQ3NiAgICAgKGJhc2UgMTYpCQlIb2t1dG8gRGVuc2hpIENvLC4gTHRkLgotCQkJCTMtNyBPZG9yaSBOaXNoaSAxNi1DaG9tZSBDaHVva3UKLQkJCQlTYXBwb3JvIEhva2thaWRvIDA2MC0wMDQyCi0JCQkJSkFQQU4KLQotMDAtMEQtNzcgICAoaGV4KQkJRmFsY29uU3RvciBTb2Z0d2FyZQotMDAwRDc3ICAgICAoYmFzZSAxNikJCUZhbGNvblN0b3IgU29mdHdhcmUKLQkJCQkxMjUgQmF5bGlzIFJkCi0JCQkJTWVsdmlsbGUgTlkgMTE3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTc4ICAgKGhleCkJCUVuZ2luZWVyaW5nICYgU2VjdXJpdHkKLTAwMEQ3OCAgICAgKGJhc2UgMTYpCQlFbmdpbmVlcmluZyAmIFNlY3VyaXR5Ci0JCQkJTWFydGlyaSBkZWxsYSBMaWJlcnTgIDMyLzQKLQkJCQlHZW5vdmEgIDE2MTU1Ci0JCQkJSVRBTFkKLQotMDAtMEQtNzkgICAoaGV4KQkJRHluYW1pYyBTb2x1dGlvbnMgQ28sLkx0ZC4KLTAwMEQ3OSAgICAgKGJhc2UgMTYpCQlEeW5hbWljIFNvbHV0aW9ucyBDbywuTHRkLgotCQkJCTE3LTggTmlob25iYXNoaSBIYWtvemFraS1jaG8KLQkJCQlDaHVvLWt1IFRva3lvIDEwMy0wMDE1Ci0JCQkJSkFQQU4KLQotMDAtMEQtN0EgICAoaGV4KQkJRGlHQVRUTyBBc2lhIFBhY2lmaWMgUHRlIEx0ZAotMDAwRDdBICAgICAoYmFzZSAxNikJCURpR0FUVE8gQXNpYSBQYWNpZmljIFB0ZSBMdGQKLQkJCQkxOTAgTWRkbGUgUm9hZCwgIzE5LTA1IEZvcnR1bmUgQ2VudGVyCi0JCQkJMTg4OTc5Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTBELTdCICAgKGhleCkJCUNvbnNlbnN5cyBDb21wdXRlcnMgSW5jLgotMDAwRDdCICAgICAoYmFzZSAxNikJCUNvbnNlbnN5cyBDb21wdXRlcnMgSW5jLgotCQkJCTIxNSBTaGllbGRzIEN0LgotCQkJCU1hcmtoYW0gT04gTDNSIDhWMgotCQkJCUNBTkFEQQotCi0wMC0wRC03QyAgIChoZXgpCQlDb2RpYW4gTHRkCi0wMDBEN0MgICAgIChiYXNlIDE2KQkJQ29kaWFuIEx0ZAotCQkJCTE0IFdhdGVyc2lkZSBEcml2ZQotCQkJCUxhbmdsZXkgU2xvdWdoIFNMMyA2RVoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC03RCAgIChoZXgpCQlBZmNvIFN5c3RlbXMKLTAwMEQ3RCAgICAgKGJhc2UgMTYpCQlBZmNvIFN5c3RlbXMKLQkJCQkyMDAgRmlubiBDb3VydAotCQkJCUZhcm1pbmdkYWxlIE5ZIDExNzM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC03RSAgIChoZXgpCQlBeGlvd2F2ZSBOZXR3b3JrcywgSW5jLgotMDAwRDdFICAgICAoYmFzZSAxNikJCUF4aW93YXZlIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjAwIE5pY2tlcnNvbiBSb2FkCi0JCQkJTWFybGJvcm91Z2ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTdGICAgKGhleCkJCU1JREFTICBDT01NVU5JQ0FUSU9OIFRFQ0hOT0xPR0lFUyBQVEUgTFREICggRm9yZWlnbiBCcmFuY2gpCi0wMDBEN0YgICAgIChiYXNlIDE2KQkJTUlEQVMgIENPTU1VTklDQVRJT04gVEVDSE5PTE9HSUVTIFBURSBMVEQgKCBGb3JlaWduIEJyYW5jaCkKLQkJCQkwNC0xMiwgUGhhc2UgWi5SbyBUZWNobm9wcmVudWVyIFBhcmsKLQkJCQkjMTUxLCBOb3J0aCBCdW9uYSBWaXN0YSBSb2FkCi0JCQkJU2luZ2Fwb3JlICAxMzkgMzQ3Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTBELTgwICAgKGhleCkJCU9ubGluZSBEZXZlbG9wbWVudCBJbmMKLTAwMEQ4MCAgICAgKGJhc2UgMTYpCQlPbmxpbmUgRGV2ZWxvcG1lbnQgSW5jCi0JCQkJNzIwOSBDaGFwbWFuIEh3eQotCQkJCUtub3h2aWxsZSBUbiAzNzkyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtODEgICAoaGV4KQkJUGVwcGVybCtGdWNocyBHbWJICi0wMDBEODEgICAgIChiYXNlIDE2KQkJUGVwcGVybCtGdWNocyBHbWJICi0JCQkJTGlsaWVudGhhbHN0cmHfZSAyMDAKLQkJCQlNYW5uaGVpbSAgNjgzMDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTgyICAgKGhleCkJCVBIUyBzcmwKLTAwMEQ4MiAgICAgKGJhc2UgMTYpCQlQSFMgc3JsCi0JCQkJVmlhIFBhbPksIDE3Ci0JCQkJQXJjdWduYW5vIFZpY2VuemEgMzYwNTcKLQkJCQlJVEFMWQotCi0wMC0wRC04MyAgIChoZXgpCQlTYW5taW5hLVNDSSBIdW5nYXJ5ICBMdGQuCi0wMDBEODMgICAgIChiYXNlIDE2KQkJU2FubWluYS1TQ0kgSHVuZ2FyeSAgTHRkLgotCQkJCUtvdGEgSm96c2VmIHUuIDIuCi0JCQkJVGF0YWJhbnlhIEtvbWFyb20tRXN6dGVyZ29tIDI4MDAKLQkJCQlIVU5HQVJZCi0KLTAwLTBELTg0ICAgKGhleCkJCU1ha3VzIEluYy4KLTAwMEQ4NCAgICAgKGJhc2UgMTYpCQlNYWt1cyBJbmMuCi0JCQkJNEYgRGFlZG8gQmxkZy4sIDc0OC0xNCBZZW9rc2FtLWRvbmcKLQkJCQlLYW5nbmFtLWd1IFNlb3VsIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtODUgICAoaGV4KQkJVGFwd2F2ZSwgSW5jLgotMDAwRDg1ICAgICAoYmFzZSAxNikJCVRhcHdhdmUsIEluYy4KLQkJCQkxOTAxIExhbmRpbmdzIERyaXZlCi0JCQkJQnVpbGRpbmcgRwotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTg2ICAgKGhleCkJCUh1YmVyICsgU3VobmVyIEFHCi0wMDBEODYgICAgIChiYXNlIDE2KQkJSHViZXIgKyBTdWhuZXIgQUcKLQkJCQlEZWdlcnNoZWltZXJzdHJhc3NlIDE0Ci0JCQkJOTEwMCBIZXJpc2F1IAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBELTg3ICAgKGhleCkJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtIENvLiAoRUNTKQotMDAwRDg3ICAgICAoYmFzZSAxNikJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtIENvLiAoRUNTKQotCQkJCU5vLjIyLCBBbGxleSAzOCwgTGFuZSA5MSwgU2VjLiAxLCBOZWkgSHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtODggICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDBEODggICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTm8uOCwgTGktSHNpbmcgNyBSb2FkLCBTY2llbmNlLUJhc2VkIEluZAotCQkJCUhzaW5jaHUgIDMwMDc3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC04OSAgIChoZXgpCQlCaWxzIFRlY2hub2xvZ3kgSW5jCi0wMDBEODkgICAgIChiYXNlIDE2KQkJQmlscyBUZWNobm9sb2d5IEluYwotCQkJCTUwOCBTIFJpdmVyIE9ha3MgRHJpdmUKLQkJCQlJbmRpYWxhbnRpYyBGTCAzMjkwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtOEEgICAoaGV4KQkJV2lubmVycyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMEQ4QSAgICAgKGJhc2UgMTYpCQlXaW5uZXJzIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCSMzNDAtNSxXb25jaHVuLURvbmcsUGFsZGFsLUd1Ci0JCQkJU3V3b24tQ2l0eSBLeXVuZ2tpLURvIDQ0Mi04MjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtOEIgICAoaGV4KQkJVCZEIENvcnBvcmF0aW9uCi0wMDBEOEIgICAgIChiYXNlIDE2KQkJVCZEIENvcnBvcmF0aW9uCi0JCQkJNTY1Mi0xNjkgU2FzYWdhCi0JCQkJTWF0c3Vtb3RvIE5hZ2FubyAzOTktMDAzMwotCQkJCUpBUEFOCi0KLTAwLTBELThDICAgKGhleCkJCVNoYW5naGFpIFdlZG9uZSBEaWdpdGFsIEx0ZC4gQ08uCi0wMDBEOEMgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgV2Vkb25lIERpZ2l0YWwgTHRkLiBDTy4KLQkJCQk4OTMtODk5IEh1YXNoYW4gUm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAwMDMxCi0JCQkJQ0hJTkEKLQotMDAtMEQtOEQgICAoaGV4KQkJUHJvTGlueCBDb21tdW5pY2F0aW9uIEdhdGV3YXlzLCBJbmMuCi0wMDBEOEQgICAgIChiYXNlIDE2KQkJUHJvTGlueCBDb21tdW5pY2F0aW9uIEdhdGV3YXlzLCBJbmMuCi0JCQkJMTY3NSBDaGVzdGVyIEF2ZS4KLQkJCQlGb3VydGggRmxvb3IKLQkJCQlCYWtlcnNmaWVsZCBDQSA5MzMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtOEUgICAoaGV4KQkJS29kZW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDBEOEUgICAgIChiYXNlIDE2KQkJS29kZW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJNTI3OCBVZW5vaGFyYQotCQkJCVVlbm9oYXJhLVNoaQotCQkJCVlhbWFuYXNoaS1LZW4gNDA5LTAxMTIKLQkJCQlKQVBBTgotCi0wMC0wRC04RiAgIChoZXgpCQlLaW5nIFRzdXNoaW4gS29neW8gQ28uLCBMVEQuCi0wMDBEOEYgICAgIChiYXNlIDE2KQkJS2luZyBUc3VzaGluIEtvZ3lvIENvLiwgTFRELgotCQkJCTItNi02IE5vZ2UKLQkJCQlTZXRhZ2F5YS1rdSBUb2t5byAxNTgtMDA5MgotCQkJCUpBUEFOCi0KLTAwLTBELTkwICAgKGhleCkJCUZhY3R1bSBFbGVjdHJvbmljcyBBQgotMDAwRDkwICAgICAoYmFzZSAxNikJCUZhY3R1bSBFbGVjdHJvbmljcyBBQgotCQkJCVRla25pa3JpbmdlbiAxSAotCQkJCUxpbmv2cGluZyDWc3Rlcmf2dGxhbmQgNTgzIDMwCi0JCQkJU1dFREVOCi0KLTAwLTBELTkxICAgKGhleCkJCUVjbGlwc2UgKEhRIEVzcGFuYSkgUy5MLgotMDAwRDkxICAgICAoYmFzZSAxNikJCUVjbGlwc2UgKEhRIEVzcGFuYSkgUy5MLgotCQkJCUNDIGRlIE5lZ29jaW9zCi0JCQkJT2ZmaWNpbmEgTm8uIDQ2LiBDLk4uIDM0MCwgS20gMTc1Ci0JCQkJUHVlcnRvIGRlIEJhbnVzIE1hcmJlbGxhIDI5NjYwCi0JCQkJU1BBSU4KLQotMDAtMEQtOTIgICAoaGV4KQkJQXJpbWEgQ29tbXVuaWNhdGlvbiBDb3Jwb3JhdGlvbgotMDAwRDkyICAgICAoYmFzZSAxNikJCUFyaW1hIENvbW11bmljYXRpb24gQ29ycG9yYXRpb24KLQkJCQkxNiwgbGFuZSA2NTgsIFlpbmctVGFvIFJvYWQKLQkJCQlZaW5na28gVGFpcGVpIENvdW50eSAyMzk0MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtOTMgICAoaGV4KQkJQXBwbGUgQ29tcHV0ZXIKLTAwMEQ5MyAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlcgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtOTQgICAoaGV4KQkJQUZBUiBDb21tdW5pY2F0aW9ucyxJbmMKLTAwMEQ5NCAgICAgKGJhc2UgMTYpCQlBRkFSIENvbW11bmljYXRpb25zLEluYwotCQkJCTgxIERhdmlkIExvdmUgUGxhY2UKLQkJCQlTdWl0ZSBBCi0JCQkJU2FudGEgQmFyYmFyYSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtOTUgICAoaGV4KQkJT3B0aS1jZWxsLCBJbmMuCi0wMDBEOTUgICAgIChiYXNlIDE2KQkJT3B0aS1jZWxsLCBJbmMuCi0JCQkJMTAwIEhpZ2ggVG93ZXIgQmx2ZC4sICBTdWl0ZSAzMDEKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC05NiAgIChoZXgpCQlWdGVyYSBUZWNobm9sb2d5IEluYy4KLTAwMEQ5NiAgICAgKGJhc2UgMTYpCQlWdGVyYSBUZWNobm9sb2d5IEluYy4KLQkJCQlObyAzNCwgSW5kdXN0cmlhbCBFYXN0LiA0dGggUmQuCi0JCQkJSHNpbkNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC05NyAgIChoZXgpCQlUcm9wb3MgTmV0d29ya3MsIEluYy4KLTAwMEQ5NyAgICAgKGJhc2UgMTYpCQlUcm9wb3MgTmV0d29ya3MsIEluYy4KLQkJCQkxNzEwIFMuIEFtcGhsZXR0IEJsdmQsICBTdWl0ZSAzMDQKLQkJCQlTYW4gTWF0ZW8gQ0EgOTQ0MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTk4ICAgKGhleCkJCVMuVy5BLkMuIFNjaG1pdHQtV2FsdGVyIEF1dG9tYXRpb24gQ29uc3VsdCBHbWJICi0wMDBEOTggICAgIChiYXNlIDE2KQkJUy5XLkEuQy4gU2NobWl0dC1XYWx0ZXIgQXV0b21hdGlvbiBDb25zdWx0IEdtYkgKLQkJCQlPZWRlbnB1bGxhY2ggMQotCQkJCU9iZXJoYWNoaW5nIEJhdmFyaWEgODIwNDEKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTk5ICAgKGhleCkJCU9yYml0YWwgU2NpZW5jZXMgQ29ycC47IExhdW5jaCBTeXN0ZW1zIEdyb3VwCi0wMDBEOTkgICAgIChiYXNlIDE2KQkJT3JiaXRhbCBTY2llbmNlcyBDb3JwLjsgTGF1bmNoIFN5c3RlbXMgR3JvdXAKLQkJCQkzMzgwIFMuIFByaWNlIFJkLgotCQkJCUNoYW5kbGVyLCBBWiA4NTI0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtOUEgICAoaGV4KQkJSU5GT1RFQyBMVEQKLTAwMEQ5QSAgICAgKGJhc2UgMTYpCQlJTkZPVEVDIExURAotCQkJCVRoZSBNYWx0aW5ncwotCQkJCVRhbXdvcnRoIFJvYWQKLQkJCQlBc2hieS1kZS1sYS1ab3VjaCBMZWljZXN0ZXJzaGlyZSBMRTY1IDJQUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTlCICAgKGhleCkJCUhlcmFldXMgRWxlY3Ryby1OaXRlIEludGVybmF0aW9uYWwgTi5WLgotMDAwRDlCICAgICAoYmFzZSAxNikJCUhlcmFldXMgRWxlY3Ryby1OaXRlIEludGVybmF0aW9uYWwgTi5WLgotCQkJCUNlbnRydW0gWnVpZCAxMTA1Ci0JCQkJSG91dGhhbGVuICAzNTMwCi0JCQkJQkVMR0lVTQotCi0wMC0wRC05QyAgIChoZXgpCQlFbGFuIEdtYkggJiBDbyBLRwotMDAwRDlDICAgICAoYmFzZSAxNikJCUVsYW4gR21iSCAmIENvIEtHCi0JCQkJSW0gT3N0cGFyayAyCi0JCQkJV2V0dGVuYmVyZyBIZXNzZW4gMzU0MzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTlEICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAwRDlEICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5IFNvdXRoCi0JCQkJbXgwNzA0MDUKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC05RSAgIChoZXgpCQlUT0tVREVOIE9ISVpVTUkgU0VJU0FLVVNZTyBDby4sTHRkLgotMDAwRDlFICAgICAoYmFzZSAxNikJCVRPS1VERU4gT0hJWlVNSSBTRUlTQUtVU1lPIENvLixMdGQuCi0JCQkJWW9zaGlkYSAxMjIxCi0JCQkJT3VyYWd1biBPaGl6dW1pIEd1bm1hIDM3MC0wNTIzCi0JCQkJSkFQQU4KLQotMDAtMEQtOUYgICAoaGV4KQkJUkYgTWljcm8gRGV2aWNlcwotMDAwRDlGICAgICAoYmFzZSAxNikJCVJGIE1pY3JvIERldmljZXMKLQkJCQkyMTkxIFphbmtlciBSb2FkCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUEwICAgKGhleCkJCU5FREFQIE4uVi4KLTAwMERBMCAgICAgKGJhc2UgMTYpCQlORURBUCBOLlYuCi0JCQkJUC5PLkJveCAxMDMKLQkJCQlQLk8uQm94IDYKLQkJCQlHUk9FTkxPIEdMRCA3MTQxIEFDCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEQtQTEgICAoaGV4KQkJTUlSQUUgSVRTIENvLixMVEQuCi0wMDBEQTEgICAgIChiYXNlIDE2KQkJTUlSQUUgSVRTIENvLixMVEQuCi0JCQkJN0YsIENoYW5nSHl1biBCL0QsOTYwLTEsSG9HeWUxRG9uZwotCQkJCUFuWWFuZyBLeW9uZ2lHaURvIDQzMS04NDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtQTIgICAoaGV4KQkJSW5mcmFudCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMERBMiAgICAgKGJhc2UgMTYpCQlJbmZyYW50IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTQ4ODIwIEthdG8gUm9hZAotCQkJCVN0ZSAxMTBCCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQTMgICAoaGV4KQkJRW1lcmdpbmcgVGVjaG5vbG9naWVzIExpbWl0ZWQKLTAwMERBMyAgICAgKGJhc2UgMTYpCQlFbWVyZ2luZyBUZWNobm9sb2dpZXMgTGltaXRlZAotCQkJCVdvbmcncyBJbmR1c3RyaWFsIENlbnRyZSwgMTgwIFdhaSBZaXAgU3QKLQkJCQlLd3VuIFRvbmcsIEtvd2xvb24KLQkJCQlOaWwgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBELUE0ICAgKGhleCkJCURPU0NIICYgQU1BTkQgU1lTVEVNUyBBRwotMDAwREE0ICAgICAoYmFzZSAxNikJCURPU0NIICYgQU1BTkQgU1lTVEVNUyBBRwotCQkJCVNjaGVpbmVyc3RyYXNzZSA5Ci0JCQkJTXVuaWNoIEJhdmFyaWEgODE2NzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELUE1ICAgKGhleCkJCUZhYnJpYzcgU3lzdGVtcywgSW5jCi0wMDBEQTUgICAgIChiYXNlIDE2KQkJRmFicmljNyBTeXN0ZW1zLCBJbmMKLQkJCQkxMzAwIENyaXR0ZW5kZW4gTGFuZQotCQkJCVN1aXRlIDMwMgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUE2ICAgKGhleCkJCVVuaXZlcnNhbCBTd2l0Y2hpbmcgQ29ycG9yYXRpb24KLTAwMERBNiAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgU3dpdGNoaW5nIENvcnBvcmF0aW9uCi0JCQkJNzY3MSBTYW4gRmVybmFuZG8gUmQKLQkJCQlCdXJiYW5rIENBIDkxNTA1LTEwNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUE3ICAgKGhleCkJCVBSSVZBVEUKLTAwMERBNyAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEQtQTggICAoaGV4KQkJVGVsZXRyb25pY3MgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwREE4ICAgICAoYmFzZSAxNikJCVRlbGV0cm9uaWNzIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkyNTI1IFBlYXJsIEJ1Y2sgUm9hZAotCQkJCUJyaXN0b2wgUGVubnN5bHZhbmlhIDE5MDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1BOSAgIChoZXgpCQlULkUuQS5NLiBTLkwuCi0wMDBEQTkgICAgIChiYXNlIDE2KQkJVC5FLkEuTS4gUy5MLgotCQkJCVBhcnF1ZSBUZWNub2xvZ2ljbyBFZGlmaWNpbyAxMDgKLQkJCQlaQU1VRElPIEJpemthaWEgNDgxNzAKLQkJCQlTUEFJTgotCi0wMC0wRC1BQSAgIChoZXgpCQlTLkEuVGVobm9sb2d5IGNvLixMdGQuCi0wMDBEQUEgICAgIChiYXNlIDE2KQkJUy5BLlRlaG5vbG9neSBjby4sTHRkLgotCQkJCTgwLTEyIFlhbmdqYWUgMSBEb25nCi0JCQkJU2VvY2hvIEd1Ci0JCQkJU2VvdWwgU291dGggS29yZWEgMTM3LTg5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC1BQiAgIChoZXgpCQlQYXJrZXIgSGFubmlmaW4gR21iSCBFbGVjdHJvbWVjaGFuaWNhbCBEaXZpc2lvbiBFdXJvcGUKLTAwMERBQiAgICAgKGJhc2UgMTYpCQlQYXJrZXIgSGFubmlmaW4gR21iSCBFbGVjdHJvbWVjaGFuaWNhbCBEaXZpc2lvbiBFdXJvcGUKLQkJCQlSb2JlcnQtQm9zY2gtU3RyYXNzZSAyMgotCQkJCU9mZmVuYnVyZyBCYWRlbiBX/HJ0dGVtYmVyZyA3NzY1NgotCQkJCUdFUk1BTlkKLQotMDAtMEQtQUMgICAoaGV4KQkJSmFwYW4gQ0JNIENvcnBvcmF0aW9uCi0wMDBEQUMgICAgIChiYXNlIDE2KQkJSmFwYW4gQ0JNIENvcnBvcmF0aW9uCi0JCQkJNS02OC0xMCBOYWthbm8sCi0JCQkJTmFrYW5vLUt1IFRva3lvIDE2NC0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMEQtQUQgICAoaGV4KQkJRGF0YXByb2JlIEluYwotMDAwREFEICAgICAoYmFzZSAxNikJCURhdGFwcm9iZSBJbmMKLQkJCQkxIFBlYXJsIEN0IFVuaXQgQgotCQkJCUFsbGVuZGFsZSBOSiAwNzQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQUUgICAoaGV4KQkJU0FNU1VORyBIRUFWWSBJTkRVU1RSSUVTIENPLiwgTFRELgotMDAwREFFICAgICAoYmFzZSAxNikJCVNBTVNVTkcgSEVBVlkgSU5EVVNUUklFUyBDTy4sIExURC4KLQkJCQk0OTMsIEJhbndlb2wtUmksIFRhZWFuLUV1cAotCQkJCUh3YXNlb25nLUNpdHkgS3llb25nZ2ktRG8gNDQ1LTk3MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC1BRiAgIChoZXgpCQlQbGV4dXMgQ29ycCAoVUspIEx0ZAotMDAwREFGICAgICAoYmFzZSAxNikJCVBsZXh1cyBDb3JwIChVSykgTHRkCi0JCQkJUGlubmFjbGUgSGlsbAotCQkJCUtlbHNvIFJveGJ1cmdoc2hpcmUgVEQ1IDhYWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELUIwICAgKGhleCkJCU9seW0tdGVjaCBDby4sTHRkLgotMDAwREIwICAgICAoYmFzZSAxNikJCU9seW0tdGVjaCBDby4sTHRkLgotCQkJCVJvb20gNDAxLzQwMixOby4xLFNvbmdsaW5nIFJvYWQsSGktdGVjaAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMzEKLQkJCQlDSElOQQotCi0wMC0wRC1CMSAgIChoZXgpCQlKYXBhbiBOZXR3b3JrIFNlcnZpY2UgQ28uLCBMdGQuCi0wMDBEQjEgICAgIChiYXNlIDE2KQkJSmFwYW4gTmV0d29yayBTZXJ2aWNlIENvLiwgTHRkLgotCQkJCU1hdG9iYSBCbGRnLiA2RiwKLQkJCQkzLTctNyBJcmlmdW5lCi0JCQkJIENodW8ta3UgVG9reW8gMTA0LTAwNDIKLQkJCQlKQVBBTgotCi0wMC0wRC1CMiAgIChoZXgpCQlBbW1hc3NvLCBJbmMuCi0wMDBEQjIgICAgIChiYXNlIDE2KQkJQW1tYXNzbywgSW5jLgotCQkJCTM0NSBTdW1tZXIgU3RyZWV0Ci0JCQkJQm9zdG9uIE1BIDAyMjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1CMyAgIChoZXgpCQlTRE8gQ29tbXVuaWNhdGlvbiBDb3JwZXJhdGlvbgotMDAwREIzICAgICAoYmFzZSAxNikJCVNETyBDb21tdW5pY2F0aW9uIENvcnBlcmF0aW9uCi0JCQkJNkYsIE5vLjExMiwgU2hpbiBNaW4gU3RyZWV0Ci0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1CNCAgIChoZXgpCQlORVRBU1EKLTAwMERCNCAgICAgKGJhc2UgMTYpCQlORVRBU1EKLQkJCQkzIHJ1ZSBBcmNoaW1lZGUKLQkJCQlWaWxsZW5ldXZlIGQnQXNjcSBub3JkIDU5NjUwCi0JCQkJRlJBTkNFCi0KLTAwLTBELUI1ICAgKGhleCkJCUdMT0JBTFNBVCBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0wMDBEQjUgICAgIChiYXNlIDE2KQkJR0xPQkFMU0FUIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQlGYXIgRWFzdCBDZW50dXJ5IFBhcmsKLQkJCQlDaHVuZyBIbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUI2ICAgKGhleCkJCUJyb2FkY29tIENvcnBvcmF0aW9uCi0wMDBEQjYgICAgIChiYXNlIDE2KQkJQnJvYWRjb20gQ29ycG9yYXRpb24KLQkJCQkxMzYzIFJlZHdvb2QgV2F5Ci0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUI3ICAgKGhleCkJCVNBTktPIEVMRUNUUklDIENPLC5MVEQKLTAwMERCNyAgICAgKGJhc2UgMTYpCQlTQU5LTyBFTEVDVFJJQyBDTywuTFRECi0JCQkJNy0yMyBUYW1hbm9pLWNobyBBdHN1dGEta3UKLQkJCQlOYWdveWEtc2hpIEFpY2hpIDQ1Ni0wMDI1Ci0JCQkJSkFQQU4KLQotMDAtMEQtQjggICAoaGV4KQkJU0NISUxMRVIgQUcKLTAwMERCOCAgICAgKGJhc2UgMTYpCQlTQ0hJTExFUiBBRwotCQkJCUFsdGdhc3NlIDY4Ci0JCQkJQmFhciBadWcgNjMwMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBELUI5ICAgKGhleCkJCVBDIEVuZ2luZXMgR21iSAotMDAwREI5ICAgICAoYmFzZSAxNikJCVBDIEVuZ2luZXMgR21iSAotCQkJCUdlcm1hbmlhc3RyYXNzZSA2OAotCQkJCTgwMDYgWnVyaWNoIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBELUJBICAgKGhleCkJCU9j6SBEb2N1bWVudCBUZWNobm9sb2dpZXMgR21iSAotMDAwREJBICAgICAoYmFzZSAxNikJCU9j6SBEb2N1bWVudCBUZWNobm9sb2dpZXMgR21iSAotCQkJCU1heC1TdHJvbWV5ZXItU3RyLiAxMTYKLQkJCQlLb25zdGFueiAgNzg0NjcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELUJCICAgKGhleCkJCU5pcHBvbiBEZW50c3UgQ28uLEx0ZC4KLTAwMERCQiAgICAgKGJhc2UgMTYpCQlOaXBwb24gRGVudHN1IENvLixMdGQuCi0JCQkJMi0yMS0xLElzb2ppCi0JCQkJTWluYXRvLUt1Ci0JCQkJT3Nha2EgIDU1Mi0wMDAzCi0JCQkJSkFQQU4KLQotMDAtMEQtQkMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwREJDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwREJEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQkUgICAoaGV4KQkJQmVsIEZ1c2UgRXVyb3BlIEx0ZC4sVUsKLTAwMERCRSAgICAgKGJhc2UgMTYpCQlCZWwgRnVzZSBFdXJvcGUgTHRkLixVSwotCQkJCTQ1LzQ2IFJpdmVyc2lkZSAyCi0JCQkJTWVkd2F5IENpdHkgRXN0YXRlCi0JCQkJUm9jaGVzdGVyIEtlbnQgTUUyIDREUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELUJGICAgKGhleCkJCVRla1RvbmUgU291bmQgJiBTaWduYWwgTWZnLiwgSW5jLgotMDAwREJGICAgICAoYmFzZSAxNikJCVRla1RvbmUgU291bmQgJiBTaWduYWwgTWZnLiwgSW5jLgotCQkJCTI3NyBJbmR1c3RyaWFsIFBhcmsgUmQuCi0JCQkJRnJhbmtsaW4gTkMgMjg3MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUMwICAgKGhleCkJCVNwYWdhdCBBUwotMDAwREMwICAgICAoYmFzZSAxNikJCVNwYWdhdCBBUwotCQkJCVRvbm5lIEh1dGlmZWxkdHBsLiAyCi0JCQkJSGFsZGVuIE9zdGZvbGQgMTc2NwotCQkJCU5PUldBWQotCi0wMC0wRC1DMSAgIChoZXgpCQlTYWZlV2ViIEluYwotMDAwREMxICAgICAoYmFzZSAxNikJCVNhZmVXZWIgSW5jCi0JCQkJMjIwMCBQb3dlbGwgU3QuIFN0ZSA1OTAKLQkJCQlFbWVyeXZpbGxlIENBIDk0NjA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1DMiAgIChoZXgpCQlQUklWQVRFCi0wMDBEQzIgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBELUMzICAgKGhleCkJCUZpcnN0IENvbW11bmljYXRpb24sIEluYy4KLTAwMERDMyAgICAgKGJhc2UgMTYpCQlGaXJzdCBDb21tdW5pY2F0aW9uLCBJbmMuCi0JCQkJMUYsIE5vLjM2LCBJbmR1c3RyeSBFLiBSZC4gSVYuLAotCQkJCSBTY2llbmNlLWJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW5jaHUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtQzQgICAoaGV4KQkJRW1jb3JlIENvcnBvcmF0aW9uCi0wMDBEQzQgICAgIChiYXNlIDE2KQkJRW1jb3JlIENvcnBvcmF0aW9uCi0JCQkJMTYwMCBFdWJhbmsgQmx2ZCwgU0UKLQkJCQlBbGJ1cXVlcnF1ZSBOZXcgTWV4aWNvIDg3MTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1DNSAgIChoZXgpCQlFY2hvU3RhciBHbG9iYWwgQi5WLiAKLTAwMERDNSAgICAgKGJhc2UgMTYpCQlFY2hvU3RhciBHbG9iYWwgQi5WLiAKLQkJCQlTY2h1aWxlbmJ1cmdsYWFuIDVhCi0JCQkJQWxtZWxvIE92ZXJpanNzZWwgNzYwNEJKCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEQtQzYgICAoaGV4KQkJRGlnaVJvc2UgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMERDNiAgICAgKGJhc2UgMTYpCQlEaWdpUm9zZSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiAxLCBBbGxleSAyMCwgTGFuZSAyNiBSdWVpZ3VhbmcgUm9hZCwKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtQzcgICAoaGV4KQkJQ09TTUlDIEVOR0lORUVSSU5HIElOQy4KLTAwMERDNyAgICAgKGJhc2UgMTYpCQlDT1NNSUMgRU5HSU5FRVJJTkcgSU5DLgotCQkJCTEtMy01LCBOaXNoaWhpcmF5YW1hCi0JCQkJSGluby1zaGkgVE9LWU8gMTkxLTAwNTUKLQkJCQlKQVBBTgotCi0wMC0wRC1DOCAgIChoZXgpCQlBaXJNYWduZXQsIEluYwotMDAwREM4ICAgICAoYmFzZSAxNikJCUFpck1hZ25ldCwgSW5jCi0JCQkJODMwIEUuIEFycXVlcyBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUM5ICAgKGhleCkJCVRIQUxFUyBFbGVrdHJvbmlrIFN5c3RlbWUgR21iSAotMDAwREM5ICAgICAoYmFzZSAxNikJCVRIQUxFUyBFbGVrdHJvbmlrIFN5c3RlbWUgR21iSAotCQkJCUZyaXR6LUx1ZHdpZy1TdHIuIDEKLQkJCQlLb2JsZW56ICA1NjA3MAotCQkJCUdFUk1BTlkKLQotMDAtMEQtQ0EgICAoaGV4KQkJVGFpdCBFbGVjdHJvbmljcwotMDAwRENBICAgICAoYmFzZSAxNikJCVRhaXQgRWxlY3Ryb25pY3MKLQkJCQk1MzUgV2FpcmFrZWkgUmQKLQkJCQlQTyBCb3ggMTY0NQotCQkJCUNocmlzdGNodXJjaCBDYW50ZXJidXJ5IDgwMDUKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wRC1DQiAgIChoZXgpCQlQZXRjb21rb3JlYSBDby4sIEx0ZC4KLTAwMERDQiAgICAgKGJhc2UgMTYpCQlQZXRjb21rb3JlYSBDby4sIEx0ZC4KLQkJCQk1Riw2ODktNDcsR2V1bWplb25nLWRvbmcsR3VucG8tc2ksS3l1bmdnCi0JCQkJS3l1bmdnaS1kbyBndW5wby1zaSA0MzUtMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUNDICAgKGhleCkJCU5FT1NNQVJUIENvcnAuCi0wMDBEQ0MgICAgIChiYXNlIDE2KQkJTkVPU01BUlQgQ29ycC4KLQkJCQlZb29uLUIvRCA0RiwgNDc1LTMxLCBCYW5nYmFlIDItZG9uZwotCQkJCVNlb3VsIFNlb2Noby1ndSAxNDctODE5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUNEICAgKGhleCkJCUdST1VQRSBUWENPTQotMDAwRENEICAgICAoYmFzZSAxNikJCUdST1VQRSBUWENPTQotCQkJCVpJIERVIFBFVElUIENMQU1BUlQKLQkJCQkxMCBBVkVOVUUgREVTQ0FSVEVTCi0JCQkJTEUgUExFU1NJUyBST0JJTlNPTiBIQVVUUy1ERS1TRUlORSA5MjM1MAotCQkJCUZSQU5DRQotCi0wMC0wRC1DRSAgIChoZXgpCQlEeW5hdmFjIFRlY2hub2xvZ3kgUHRlIEx0ZAotMDAwRENFICAgICAoYmFzZSAxNikJCUR5bmF2YWMgVGVjaG5vbG9neSBQdGUgTHRkCi0JCQkJMzAgVHVhcyBBdmVudWUgOQotCQkJCTYzOTE4MwotCQkJCVNJTkdBUE9SRQotCi0wMC0wRC1DRiAgIChoZXgpCQlDaWRyYSBDb3JwLgotMDAwRENGICAgICAoYmFzZSAxNikJCUNpZHJhIENvcnAuCi0JCQkJNTAgQmFybnMgUGFyayBOb3J0aAotCQkJCVdhbGxpbmdmb3JkIENUIDA2NDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1EMCAgIChoZXgpCQlUZXRyYVRlYyBJbnN0cnVtZW50cyBHbWJICi0wMDBERDAgICAgIChiYXNlIDE2KQkJVGV0cmFUZWMgSW5zdHJ1bWVudHMgR21iSAotCQkJCUdld2VyYmVzdHJhc3NlIDgKLQkJCQlTdGVpbmVuYnJvbm4gQlcgNzExNDQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELUQxICAgKGhleCkJCVN0cnlrZXIgQ29ycG9yYXRpb24KLTAwMEREMSAgICAgKGJhc2UgMTYpCQlTdHJ5a2VyIENvcnBvcmF0aW9uCi0JCQkJNDEwMCBFIE1pbGhhbQotCQkJCUthbGFtYXpvbyBNSSA0OTAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRDIgICAoaGV4KQkJU2ltcmFkIE9wdHJvbmljcyBBU0EKLTAwMEREMiAgICAgKGJhc2UgMTYpCQlTaW1yYWQgT3B0cm9uaWNzIEFTQQotCQkJCUVuc2r4dmVpZW4gMjNCCi0JCQkJUE8gQm94IDYxMTQgRXR0ZXJzdGFkIE5PLTA2MDIgT3NsbyAKLQkJCQlOT1JXQVkKLQotMDAtMEQtRDMgICAoaGV4KQkJU0FNV09PIFRlbGVjb21tdW5pY2F0aW9uIENvLixMdGQuCi0wMDBERDMgICAgIChiYXNlIDE2KQkJU0FNV09PIFRlbGVjb21tdW5pY2F0aW9uIENvLixMdGQuCi0JCQkJCi0JCQkJMTcxLCBEYW5nanVuZy1Eb25nLAotCQkJCUd1bnBvIEt5b3VuZy1HaSA0MzUtODMxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUQ0ICAgKGhleCkJCVN5bWFudGVjIENvcnBvcmF0aW9uCi0wMDBERDQgICAgIChiYXNlIDE2KQkJU3ltYW50ZWMgQ29ycG9yYXRpb24KLQkJCQkyNzUgMm5kIEF2ZQotCQkJCVdhbHRoYW0gTUEgMDI1NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUQ1ICAgKGhleCkJCU8nUklURSBURUNITk9MT0dZIENPLixMVEQKLTAwMERENSAgICAgKGJhc2UgMTYpCQlPJ1JJVEUgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJNGYtOCxOTyA4MCxHVUFOR0ZVIFJELlNFQyAyLFNBTkNIVU5HCi0JCQkJVEFJUEVJIENPVU5UWSAgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1ENiAgIChoZXgpCQlJVEkgICAgTFRECi0wMDBERDYgICAgIChiYXNlIDE2KQkJSVRJICAgIExURAotCQkJCVImRCxJVEkgQmFuZ2Fsb3JlIENvbXBsZXgKLQkJCQlGLTg2IEJsZGcuCi0JCQkJRG9vcmF2YW5pIE5hZ2FyLCBCYW5nYWxvcmUgS2FybmF0YWthIFN0YXRlIDU2MDAxNgotCQkJCUlORElBCi0KLTAwLTBELUQ3ICAgKGhleCkJCUJyaWdodAotMDAwREQ3ICAgICAoYmFzZSAxNikJCUJyaWdodAotCQkJCTEtMTItNDQgQW9iYWRhaQotCQkJCUthc2hpd2Etc2hpIENoaWJhLWtlbiAyNzctMDA1NQotCQkJCUpBUEFOCi0KLTAwLTBELUQ4ICAgKGhleCkJCUJCTgotMDAwREQ4ICAgICAoYmFzZSAxNikJCUJCTgotCQkJCTdGLTMsTk8uMTg2LCBKaWFuIFlpIFJkIC4sIENodW5nIEhvIENpdHkKLQkJCQlUYWlwZWkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtRDkgICAoaGV4KQkJQW50b24gUGFhciBHbWJICi0wMDBERDkgICAgIChiYXNlIDE2KQkJQW50b24gUGFhciBHbWJICi0JCQkJQW50b24tUGFhci1TdHJhc3NlIDIwCi0JCQkJR3JheiAgODA1NAotCQkJCUFVU1RSSUEKLQotMDAtMEQtREEgICAoaGV4KQkJQUxMSUVEIFRFTEVTSVMgSy5LLgotMDAwRERBICAgICAoYmFzZSAxNikJCUFMTElFRCBURUxFU0lTIEsuSy4KLQkJCQlQSUFaWkEgVElSQU5BIE4uIDI0LzQgQgotCQkJCU1JTEFOTyAgMjAxNDcKLQkJCQlJVEFMWQotCi0wMC0wRC1EQiAgIChoZXgpCQlBSVJXQVZFIFRFQ0hOT0xPR0lFUyBJTkMuCi0wMDBEREIgICAgIChiYXNlIDE2KQkJQUlSV0FWRSBURUNITk9MT0dJRVMgSU5DLgotCQkJCTNGLE5vLjksSW5kdXN0cnkgRS4gOXRoIFJvYWQKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtREMgICAoaGV4KQkJVkFDCi0wMDBEREMgICAgIChiYXNlIDE2KQkJVkFDCi0JCQkJMjBGLCBOMC4gNDU2LCBTZWMuIDQsIEhzaW4gWWkgUmQuLAotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1ERCAgIChoZXgpCQlQUk9G3UxPIFRFTFJBIEVMRUtUUk9O3UsgU0FOQVndIFZFIFTdQ0FSRVQgQS7eLgotMDAwREREICAgICAoYmFzZSAxNikJCVBST0bdTE8gVEVMUkEgRUxFS1RST07dSyBTQU5BWd0gVkUgVN1DQVJFVCBBLt4uCi0JCQkJQ0VNQUwgU0FI3VIgU09LQUsgTk86MjYtMjgKLQkJCQlNRUPdRN1ZRUvWWQotCQkJCd1TVEFOQlVMIFRVUktFWSAzNDI1NQotCQkJCVRVUktFWQotCi0wMC0wRC1ERSAgIChoZXgpCQlKb3l0ZWNrIENvLiwgTHRkLgotMDAwRERFICAgICAoYmFzZSAxNikJCUpveXRlY2sgQ28uLCBMdGQuCi0JCQkJMTlGLCBOby40LCBTZWMuIDMsIE1pbiBDaHVhbiBFYXN0IFJkLgotCQkJCVRhaXBlaSAgMTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1ERiAgIChoZXgpCQlKYXBhbiBJbWFnZSAmIE5ldHdvcmsgSW5jLgotMDAwRERGICAgICAoYmFzZSAxNikJCUphcGFuIEltYWdlICYgTmV0d29yayBJbmMuCi0JCQkJNS0yOS0xMiBTaGliYQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDgtMDAxNAotCQkJCUpBUEFOCi0KLTAwLTBELUUwICAgKGhleCkJCUlDUERBUyBDby4sTFRECi0wMDBERTAgICAgIChiYXNlIDE2KQkJSUNQREFTIENvLixMVEQKLQkJCQkgTm8uIDExMSwgS3VhbmctRnUgTi4gUmQuLCBIc2luLUNodSBJbmR1Ci0JCQkJSFNJTkNIVSAgMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1FMSAgIChoZXgpCQlDb250cm9sIFByb2R1Y3RzLCBJbmMuCi0wMDBERTEgICAgIChiYXNlIDE2KQkJQ29udHJvbCBQcm9kdWN0cywgSW5jLgotCQkJCTE3MjQgTGFrZSBEcml2ZSBXZXN0Ci0JCQkJQ2hhbmhhc3NlbiBNTiA1NTMxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRTIgICAoaGV4KQkJQ01aIFNpc3RlbWkgRWxldHRyb25pY2kKLTAwMERFMiAgICAgKGJhc2UgMTYpCQlDTVogU2lzdGVtaSBFbGV0dHJvbmljaQotCQkJCVZpYSBkZWxsJ0FydGlnaW5hdG8sIDIxCi0JCQkJVmFzY29uIGRpIENhcmJvbmVyYSBUcmV2aXNvIDMxMDUwCi0JCQkJSVRBTFkKLQotMDAtMEQtRTMgICAoaGV4KQkJQVQgU3dlZGVuIEFCCi0wMDBERTMgICAgIChiYXNlIDE2KQkJQVQgU3dlZGVuIEFCCi0JCQkJUC5PLiBCb3ggMTE2NgotCQkJCUlzYWZqb3Jkc2dhdGFuIDMwQgotCQkJCUtpc3RhIFN0b2NraG9sbSBTRS0xNjQgMjYKLQkJCQlTV0VERU4KLQotMDAtMEQtRTQgICAoaGV4KQkJRElHSU5JQ1MsIEluYy4KLTAwMERFNCAgICAgKGJhc2UgMTYpCQlESUdJTklDUywgSW5jLgotCQkJCTE3OC03Ci0JCQkJUG9pLWRvbmcKLQkJCQlLYW5nbmFtLWd1IFNlb3VsIDEzNS05NjEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtRTUgICAoaGV4KQkJU2Ftc3VuZyBUaGFsZXMKLTAwMERFNSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIFRoYWxlcwotCQkJCTI1OSBHb25nZGFuLURvbmcKLQkJCQlHdW1pLUNpdHkgR3llb25nc2FuZ2J1ay1kbyA3MzAtOTA0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUU2ICAgKGhleCkJCVlPVU5HQk8gRU5HSU5FRVJJTkcgQ08uLExURAotMDAwREU2ICAgICAoYmFzZSAxNikJCVlPVU5HQk8gRU5HSU5FRVJJTkcgQ08uLExURAotCQkJCU10LjIyLCBKYWV1bmdhLXJpLCBKaWdzYW4tRXVwLAotCQkJCUNoZW9uYW4tc2hpIENodW5nY2hlb25nbmFtLWRvICMzMzAtODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUU3ICAgKGhleCkJCVNuYXAtb24gT0VNIEdyb3VwCi0wMDBERTcgICAgIChiYXNlIDE2KQkJU25hcC1vbiBPRU0gR3JvdXAKLQkJCQkyMzMzIEVhc3QgV2FsdG9uIEJsdmQuCi0JCQkJQXVidXJuIEhpbGxzIE1JIDQ4MzI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1FOCAgIChoZXgpCQlOYXNhY28gRWxlY3Ryb25pY3MgUHRlLiBMdGQKLTAwMERFOCAgICAgKGJhc2UgMTYpCQlOYXNhY28gRWxlY3Ryb25pY3MgUHRlLiBMdGQKLQkJCQlMZXZlbCA0LCBOYXNhY28gVGVjaCBDZW50cmUKLQkJCQk0OSwgQ2hhbmdpIFNvdXRoIEF2ZW51ZSAyCi0JCQkJNDg2MDU2Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTBELUU5ICAgKGhleCkJCU5hcGF0ZWNoIEFwcwotMDAwREU5ICAgICAoYmFzZSAxNikJCU5hcGF0ZWNoIEFwcwotCQkJCVJ1bmRvZnJiaXZlaiAyNzEsIDEKLQkJCQlOYWVydW0gIDI4NTAKLQkJCQlERU5NQVJLCi0KLTAwLTBELUVBICAgKGhleCkJCUtpbmd0ZWwgVGVsZWNvbW11bmljYXRpb24gQ29ycC4KLTAwMERFQSAgICAgKGJhc2UgMTYpCQlLaW5ndGVsIFRlbGVjb21tdW5pY2F0aW9uIENvcnAuCi0JCQkJMTQ3IEthbmcgTmluZyBTdC4KLQkJCQlIc2kgQ2hpaCBDaXR5IFRhaXBlaSBIc2llbiAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUVCICAgKGhleCkJCUNvbXBYcyBMaW1pdGVkCi0wMDBERUIgICAgIChiYXNlIDE2KQkJQ29tcFhzIExpbWl0ZWQKLQkJCQlSb2JlcnQgRGVuaG9sbSBIb3VzZQotCQkJCU51dGZpZWxkCi0JCQkJUmVkaGlsbCBTdXJyZXkgUkgxIDRIVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELUVDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMERFQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUVEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMERFRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUVFICAgKGhleCkJCUFuZHJldyBSRiBQb3dlciBBbXBsaWZpZXIgR3JvdXAKLTAwMERFRSAgICAgKGJhc2UgMTYpCQlBbmRyZXcgUkYgUG93ZXIgQW1wbGlmaWVyIEdyb3VwCi0JCQkJNDAgVGVjaG5vbG9neSBEcml2ZQotCQkJCVdhcnJlbiBOSiAwNzA1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRUYgICAoaGV4KQkJU29jLiBDb29wLiBCaWxhbmNpYWkKLTAwMERFRiAgICAgKGJhc2UgMTYpCQlTb2MuIENvb3AuIEJpbGFuY2lhaQotCQkJCXZpYSBTLkZlcnJhcmkgMTYKLQkJCQlDYW1wb2dhbGxpYW5vIE1vZGVuYSA0MTAxMQotCQkJCUlUQUxZCi0KLTAwLTBELUYwICAgKGhleCkJCVFDT00gVEVDSE5PTE9HWSBJTkMuCi0wMDBERjAgICAgIChiYXNlIDE2KQkJUUNPTSBURUNITk9MT0dZIElOQy4KLQkJCQk3Ri4sIE5PIDE3OCwgTUlORyBDSFVBTiBFLiBSRC4sIFNFQy4gMywKLQkJCQlUQUlQRUkgIDEwNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtRjEgICAoaGV4KQkJSU9OSVggSU5DLgotMDAwREYxICAgICAoYmFzZSAxNikJCUlPTklYIElOQy4KLQkJCQlTc2FuZ3lvbmcgSVQgVHdpbiBUb3dlciA2MDQsIDQ0Mi0xNywgU2FuZ2RhZXdvbi1kb25nLCBKdW5nd29uLWd1LAotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2Mi0xMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtRjIgICAoaGV4KQkJUFJJVkFURQotMDAwREYyICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wRC1GMyAgIChoZXgpCQlBc21heCBTb2x1dGlvbnMKLTAwMERGMyAgICAgKGJhc2UgMTYpCQlBc21heCBTb2x1dGlvbnMKLQkJCQlUYXRhcnNrYSA1Ci0JCQkJQ3JhY293ICAzMC0xMDMKLQkJCQlQT0xBTkQKLQotMDAtMEQtRjQgICAoaGV4KQkJV2F0ZXJ0ZWsgQ28uCi0wMDBERjQgICAgIChiYXNlIDE2KQkJV2F0ZXJ0ZWsgQ28uCi0JCQkJUm9vbSAxMDA2LEhhaXRhaSBidWlsZGluZyxub3J0aCBzaSBIdWFuCi0JCQkJWmhvbmcgUm9hZCxIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgzCi0JCQkJQ0hJTkEKLQotMDAtMEQtRjUgICAoaGV4KQkJVGVsZXRyb25pY3MgSW50ZXJuYXRpb25hbCBJbmMuCi0wMDBERjUgICAgIChiYXNlIDE2KQkJVGVsZXRyb25pY3MgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJMiBDaG9rZSBDaGVycnkgUm9hZAotCQkJCVN1aXRlICMxMDEKLQkJCQlSb2NrdmlsbGUgTUQgMjA4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUY2ICAgKGhleCkJCVRlY2hub2xvZ3kgVGhlc2F1cnVzIENvcnAuCi0wMDBERjYgICAgIChiYXNlIDE2KQkJVGVjaG5vbG9neSBUaGVzYXVydXMgQ29ycC4KLQkJCQlOTy4gNiwgRWFzdCA0dGggU3QuIEtFUFoKLQkJCQlLQU9IU0lVTkcgIDgwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtRjcgICAoaGV4KQkJU3BhY2UgRHluYW1pY3MgTGFiCi0wMDBERjcgICAgIChiYXNlIDE2KQkJU3BhY2UgRHluYW1pY3MgTGFiCi0JCQkJMTY5NSBOLiBSZXNlYXJjaCBQYXJrIFdheQotCQkJCU5vcnRoIExvZ2FuIFVUIDg0MzQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1GOCAgIChoZXgpCQlPUkdBIEthcnRlbnN5c3RlbWUgR21iSAotMDAwREY4ICAgICAoYmFzZSAxNikJCU9SR0EgS2FydGVuc3lzdGVtZSBHbWJICi0JCQkJS29ucmFkLVp1c2UtUmluZyAxCi0JCQkJRmxpbnRiZWsgU2NobGVzd2lnLUhvbHN0ZWluIDI0MjIwCi0JCQkJR0VSTUFOWQotCi0wMC0wRC1GOSAgIChoZXgpCQlORFMgTGltaXRlZAotMDAwREY5ICAgICAoYmFzZSAxNikJCU5EUyBMaW1pdGVkCi0JCQkJT25lIEhlYXRocm93IEJvdWxldmFyZAotCQkJCTI4NiBCYXRoIFJvYWQKLQkJCQlXZXN0IERyYXl0b24gTWlkZGxlc2V4IFVCNyAwRFEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC1GQSAgIChoZXgpCQlNaWNybyBDb250cm9sIFN5c3RlbXMgTHRkLgotMDAwREZBICAgICAoYmFzZSAxNikJCU1pY3JvIENvbnRyb2wgU3lzdGVtcyBMdGQuCi0JCQkJOC03IFNha3VyYWkKLQkJCQlTYWt1LXNoaSBOYWdhbm8gMzg1LTAwNTYKLQkJCQlKQVBBTgotCi0wMC0wRC1GQiAgIChoZXgpCQlLb21heCBBRwotMDAwREZCICAgICAoYmFzZSAxNikJCUtvbWF4IEFHCi0JCQkJSW5kdXN0cmllc3RyYXNzZSA2Ci0JCQkJRGllcmlrb24gTFUgNjAzNgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBELUZDICAgKGhleCkJCUlURk9SIEluYy4KLTAwMERGQyAgICAgKGJhc2UgMTYpCQlJVEZPUiBJbmMuCi0JCQkJSWNoaWJhbmNobyBUb2t5dSBCaWRnLiwKLQkJCQkyMSBJY2hpYmFubmN5byxDaGl5b2RhLWt1Ci0JCQkJVG9reW8gMTAyLTAwODIKLQkJCQlKQVBBTgotCi0wMC0wRC1GRCAgIChoZXgpCQlIdWdlcyBIaS1UZWNoIEluYy4sCi0wMDBERkQgICAgIChiYXNlIDE2KQkJSHVnZXMgSGktVGVjaCBJbmMuLAotCQkJCTdGLCAxODgsIFNlYy4yLCBDaHVuZyBIc2luZyBSb2FkLgotCQkJCUhzaW4gVGllbiBUYWlwZWkgSHNpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1GRSAgIChoZXgpCQlIYXVwcGF1Z2UgQ29tcHV0ZXIgV29ya3MsIEluYy4KLTAwMERGRSAgICAgKGJhc2UgMTYpCQlIYXVwcGF1Z2UgQ29tcHV0ZXIgV29ya3MsIEluYy4KLQkJCQk5MSBDYWJvdCBDb3VydAotCQkJCUhhdXBwYXVnZSBOZXcgWW9yayAxMTc4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRkYgICAoaGV4KQkJQ0hFTk1JTkcgTU9MRCBJTkRVU1RSWSBDT1JQLgotMDAwREZGICAgICAoYmFzZSAxNikJCUNIRU5NSU5HIE1PTEQgSU5EVVNUUlkgQ09SUC4KLQkJCQkyRiBOby4gMjYsIExhbmUgNTEzLCBSZWkgS3VhbmcgUmQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTAwICAgKGhleCkJCUF0cmllCi0wMDBFMDAgICAgIChiYXNlIDE2KQkJQXRyaWUKLQkJCQkxMHRoIEZsb29yLCAxNCwgTGFuZSA2MDksIFNlYy4gNSwgQ2h1bmcgSHNpbiBSZC4sIFNhbiBDaHVuZyBDaXR5LAotCQkJCVRhaXBlaSBIc2llbiBTYW4gQ2h1bmcgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS0wMSAgIChoZXgpCQlBU0lQIFRlY2hub2xvZ2llcyBJbmMuCi0wMDBFMDEgICAgIChiYXNlIDE2KQkJQVNJUCBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTEwRi0yLCBOTy4zMjIsIFNlYy4xLCBHdWFuZ2Z1IFJkLiwKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTAyICAgKGhleCkJCUFkdmFudGVjaCBBTVQgSW5jLgotMDAwRTAyICAgICAoYmFzZSAxNikJCUFkdmFudGVjaCBBTVQgSW5jLgotCQkJCTY1NyBPcmx5IEF2ZS4KLQkJCQlEb3J2YWwgUXVlYmVjIEg5UCAxRzEKLQkJCQlDQU5BREEKLQotMDAtMEUtMDMgICAoaGV4KQkJRW11bGV4Ci0wMDBFMDMgICAgIChiYXNlIDE2KQkJRW11bGV4Ci0JCQkJMzMzMyBTdXNhbiBTdHJlZXQKLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0wNCAgIChoZXgpCQlDTUEvTWljcm9kaWFseXNpcyBBQgotMDAwRTA0ICAgICAoYmFzZSAxNikJCUNNQS9NaWNyb2RpYWx5c2lzIEFCCi0JCQkJRGFsduRnZW4gMTAgLyBCb3ggMgotCQkJCVNvbG5hICAxNzEgMTgKLQkJCQlTV0VERU4KLQotMDAtMEUtMDUgICAoaGV4KQkJV0lSRUxFU1MgTUFUUklYIENPUlAuCi0wMDBFMDUgICAgIChiYXNlIDE2KQkJV0lSRUxFU1MgTUFUUklYIENPUlAuCi0JCQkJVU5JVCAxQS0zNzUxIE5PUlRIIEZSQVNFUiBXQVkKLQkJCQlCVVJOQUJZIEJDIFY1SiA1RzQKLQkJCQlDQU5BREEKLQotMDAtMEUtMDYgICAoaGV4KQkJVGVhbSBTaW1vY28gTHRkCi0wMDBFMDYgICAgIChiYXNlIDE2KQkJVGVhbSBTaW1vY28gTHRkCi0JCQkJRmllbGQgSG91c2UKLQkJCQlVdHRveGV0ZXIgT2xkIFJvYWQKLQkJCQlEZXJieSBEZXJieXNoaXJlIERFMSAxTkgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS0wNyAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotMDAwRTA3ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4IEx1bmQKLQkJCQlTV0VERU4KLQotMDAtMEUtMDggICAoaGV4KQkJQ2lzY28gTGlua3N5cyBMTEMKLTAwMEUwOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBMaW5rc3lzIExMQwotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMDkgICAoaGV4KQkJU2hlbnpoZW4gQ29zaGlwIFNvZnR3YXJlIENvLixMVEQuCi0wMDBFMDkgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQ29zaGlwIFNvZnR3YXJlIENvLixMVEQuCi0JCQkJNy9GLEJsb2NrIEEsVzIgQmxkZyxIaS1UZWNoIEluZHVzdHJpYWwgUGFyayxTaGVuemhlbixDaGluYQotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0wRS0wQSAgIChoZXgpCQlTQUtVTUEgREVTSUdOIE9GRklDRQotMDAwRTBBICAgICAoYmFzZSAxNikJCVNBS1VNQSBERVNJR04gT0ZGSUNFCi0JCQkJNjc0LTExCi0JCQkJS1VLSS1TSEkgU0FJVEFNQSAzNDYtMDAyOQotCQkJCUpBUEFOCi0KLTAwLTBFLTBCICAgKGhleCkJCU5ldGFjIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBFMEIgICAgIChiYXNlIDE2KQkJTmV0YWMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk2RiwgSW5jdWJhdG9yIEJ1aWxkaW5nLCBDaGluYSBBY2FkZW15IG9mIFNjaWVuY2UgJlRlY2ggRGV2ZWxvcG1lbnQsCi0JCQkJTm8uMSBIaWdoLXRlY2ggU291dGggU3RyZWV0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTBFLTBDICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi0wMDBFMEMgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQkyMTExIE5FICAyNXRoIEF2ZW51ZQotCQkJCU1TOiAgSkYzLTQyMAotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMEQgICAoaGV4KQkJSEVTQ0ggU2NocvZkZXIgR21iSAotMDAwRTBEICAgICAoYmFzZSAxNikJCUhFU0NIIFNjaHL2ZGVyIEdtYkgKLQkJCQlCb3NjaHN0cmFzc2UgOAotCQkJCU5ldXN0YWR0IE5pZWRlcnNhY2hzZW4gMzE1MzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLTBFICAgKGhleCkJCUVTQSBlbGV0dHJvbmljYSBTLlAuQS4KLTAwMEUwRSAgICAgKGJhc2UgMTYpCQlFU0EgZWxldHRyb25pY2EgUy5QLkEuCi0JCQkJVmlhIFAuIE1hc2NpYWRyaSA0L0EKLQkJCQlNYXJpYW5vIENvbWVuc2UgQ08gMjIwNjYKLQkJCQlJVEFMWQotCi0wMC0wRS0wRiAgIChoZXgpCQlFUk1NRQotMDAwRTBGICAgICAoYmFzZSAxNikJCUVSTU1FCi0JCQkJOSBydWUgTGF2b2lzaWVyCi0JCQkJVmVydC1MZS1QZXRpdCAgOTE3MTAKLQkJCQlGUkFOQ0UKLQotMDAtMEUtMTAgICAoaGV4KQkJQy1ndXlzLCBJbmMuCi0wMDBFMTAgICAgIChiYXNlIDE2KQkJQy1ndXlzLCBJbmMuCi0JCQkJSXp1bWkgR2FyZGVuIFdpbmcgMUYsIDEtNi0zCi0JCQkJUm9wcG9uZ2ksIE1pbmF0by1rdQotCQkJCVRva3lvICAxMDYtMDAzMgotCQkJCUpBUEFOCi0KLTAwLTBFLTExICAgKGhleCkJCUJEVCBC/HJvLSB1bmQgRGF0ZW50ZWNobmlrIEdtYkggJiBDby4gS0cKLTAwMEUxMSAgICAgKGJhc2UgMTYpCQlCRFQgQvxyby0gdW5kIERhdGVudGVjaG5payBHbWJIICYgQ28uIEtHCi0JCQkJU2FsaW5lIDI5Ci0JCQkJUm90dHdlaWwgQmFkZW4tV/xydHRlbWJlcmcgRC03ODYyOAotCQkJCUdFUk1BTlkKLQotMDAtMEUtMTIgICAoaGV4KQkJQWRhcHRpdmUgTWljcm8gU3lzdGVtcyBJbmMuCi0wMDBFMTIgICAgIChiYXNlIDE2KQkJQWRhcHRpdmUgTWljcm8gU3lzdGVtcyBJbmMuCi0JCQkJNzg0MCBOb3J0aCA4NnRoIFN0LgotCQkJCU1pbHdhdWtlZSBXSSA1MzIyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMTMgICAoaGV4KQkJQWNjdS1Tb3J0IFN5c3RlbXMgaW5jLgotMDAwRTEzICAgICAoYmFzZSAxNikJCUFjY3UtU29ydCBTeXN0ZW1zIGluYy4KLQkJCQk1MTEgU2Nob29sIEhvdXNlIFJvYWQKLQkJCQlUZWxmb3JkIFBBIDE4OTY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0xNCAgIChoZXgpCQlWaXNpb25hcnkgU29sdXRpb25zLCBJbmMuCi0wMDBFMTQgICAgIChiYXNlIDE2KQkJVmlzaW9uYXJ5IFNvbHV0aW9ucywgSW5jLgotCQkJCTQxOTMgQ2FycGludGVyaWEgQXZlCi0JCQkJU3VpdGUgMTEKLQkJCQlDYXJwaW50ZXJpYSBDQSA5MzAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMTUgICAoaGV4KQkJVGFkbHlzIExURAotMDAwRTE1ICAgICAoYmFzZSAxNikJCVRhZGx5cyBMVEQKLQkJCQlJU1JBRUxJIFNISU1PTiAzCi0JCQkJUklTSE9OIGxFWllZT04gSVNSQUVMIDc1NjU0Ci0JCQkJSVNSQUVMCi0KLTAwLTBFLTE2ICAgKGhleCkJCVNvdXRoV2luZyBTLkwuCi0wMDBFMTYgICAgIChiYXNlIDE2KQkJU291dGhXaW5nIFMuTC4KLQkJCQlDL0F2aWxhLCA0OC01MAotCQkJCTNyZCBmbG9vcgotCQkJCUJhcmNlbG9uYSAgMDgwMDUKLQkJCQlTUEFJTgotCi0wMC0wRS0xNyAgIChoZXgpCQlQUklWQVRFCi0wMDBFMTcgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBFLTE4ICAgKGhleCkJCU15QSBUZWNobm9sb2d5Ci0wMDBFMTggICAgIChiYXNlIDE2KQkJTXlBIFRlY2hub2xvZ3kKLQkJCQkyMTAwIE11aXJ3b29kIFdheQotCQkJCVNhbiBKb3NlIENBIDk1MTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0xOSAgIChoZXgpCQlMb2dpY2FDTUcgUHR5IEx0ZAotMDAwRTE5ICAgICAoYmFzZSAxNikJCUxvZ2ljYUNNRyBQdHkgTHRkCi0JCQkJMTctMTkgT3Jpb24gUm9hZAotCQkJCUxhbmUgQ292ZSBOU1cgMjA2NgotCQkJCUFVU1RSQUxJQQotCi0wMC0wRS0xQSAgIChoZXgpCQlKUFMgQ29tbXVuaWNhdGlvbnMKLTAwMEUxQSAgICAgKGJhc2UgMTYpCQlKUFMgQ29tbXVuaWNhdGlvbnMKLQkJCQk1ODAwIERlcGFydHVyZSBEcml2ZQotCQkJCVJhbGVpZ2ggTkMgMjc2MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTFCICAgKGhleCkJCUlBViBHbWJICi0wMDBFMUIgICAgIChiYXNlIDE2KQkJSUFWIEdtYkgKLQkJCQlDYXJub3RzdHIuIDEKLQkJCQlCZXJsaW4gIDEwNTg3Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS0xQyAgIChoZXgpCQlIYWNoIENvbXBhbnkKLTAwMEUxQyAgICAgKGJhc2UgMTYpCQlIYWNoIENvbXBhbnkKLQkJCQk1NjAwIExpbmRiZXJnaCBEcml2ZQotCQkJCUxvdmVsYW5kIENPIDgwNTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0xRCAgIChoZXgpCQlBUklPTiBUZWNobm9sb2d5IEluYy4KLTAwMEUxRCAgICAgKGJhc2UgMTYpCQlBUklPTiBUZWNobm9sb2d5IEluYy4KLQkJCQkzRiwgUGljYSBCbGRnLCA4OTQtMiwgSG9neWUgMiBEb25nCi0JCQkJRG9uZ2FuLUd1Ci0JCQkJQW4tWWFuZyBDaXR5IEd5ZW9uZ2dpLURvIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS0xRSAgIChoZXgpCQlRTG9naWMgQ29ycG9yYXRpb24KLTAwMEUxRSAgICAgKGJhc2UgMTYpCQlRTG9naWMgQ29ycG9yYXRpb24KLQkJCQkyNjY1MCBBbGlzbyBWaWVqbyBQYXJrd2F5Ci0JCQkJQWxpc28gVmllam8gQ0EgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTFGICAgKGhleCkJCVRDTCBOZXR3b3JrcyBFcXVpcG1lbnQgQ28uLCBMdGQuCi0wMDBFMUYgICAgIChiYXNlIDE2KQkJVENMIE5ldHdvcmtzIEVxdWlwbWVudCBDby4sIEx0ZC4KLQkJCQlOby41IEluZHVzdHJpYWwgUm9hZCxTaGVrb3UKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDY3Ci0JCQkJQ0hJTkEKLQotMDAtMEUtMjAgICAoaGV4KQkJQUNDRVNTIFN5c3RlbXMgQW1lcmljYXMsIEluYy4KLTAwMEUyMCAgICAgKGJhc2UgMTYpCQlBQ0NFU1MgU3lzdGVtcyBBbWVyaWNhcywgSW5jLgotCQkJCTExODggRWFzdCBBcnF1ZXMgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0yMSAgIChoZXgpCQlNVFUgRnJpZWRyaWNoc2hhZmVuIEdtYkgKLTAwMEUyMSAgICAgKGJhc2UgMTYpCQlNVFUgRnJpZWRyaWNoc2hhZmVuIEdtYkgKLQkJCQlNYXliYWNocGxhdHogMQotCQkJCUZyaWVkcmljaHNoYWZlbiBCYWRlbiBXdWVydGVtYmVyZyA4ODA0MAotCQkJCUdFUk1BTlkKLQotMDAtMEUtMjIgICAoaGV4KQkJUFJJVkFURQotMDAwRTIyICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wRS0yMyAgIChoZXgpCQlJbmNpcGllbnQsIEluYy4KLTAwMEUyMyAgICAgKGJhc2UgMTYpCQlJbmNpcGllbnQsIEluYy4KLQkJCQkyMzAgVGhpcmQgQXZlLgotCQkJCTR0aCBGbG9vcgotCQkJCVdhbHRoYW0gTUEgMDI0NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTI0ICAgKGhleCkJCUh1d2VsbCBUZWNobm9sb2d5IEluYy4KLTAwMEUyNCAgICAgKGJhc2UgMTYpCQlIdXdlbGwgVGVjaG5vbG9neSBJbmMuCi0JCQkJMUYgODItMjEsIE1hamluIEJ1aWxkaW5nCi0JCQkJTm9uaHl1bi1kb25nLCBHYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtMjUgICAoaGV4KQkJSGFubmFlIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMEUyNSAgICAgKGJhc2UgMTYpCQlIYW5uYWUgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTRGLCBIeXVuamluIEJsZGcuLCAjNzk4LTMwLCBZZW9rc2FtLURvbmcKLQkJCQlLYW5nbmFtLUt1Ci0JCQkJU0VPVUwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtMjYgICAoaGV4KQkJR2luY29tIFRlY2hub2xvZ3kgQ29ycC4KLTAwMEUyNiAgICAgKGJhc2UgMTYpCQlHaW5jb20gVGVjaG5vbG9neSBDb3JwLgotCQkJCTE1Ri4sIE5vLiAyODQsIFNlYy4zLCBTYW5taW4gUmQuLCBUYW95dWFuIENpdHksCi0JCQkJVGFveXVhbiwgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtMjcgICAoaGV4KQkJQ3JlcmUgTmV0d29ya3MsIEluYy4KLTAwMEUyNyAgICAgKGJhc2UgMTYpCQlDcmVyZSBOZXR3b3JrcywgSW5jLgotCQkJCVJvb20gMTEwIEVUUkkgVEJJLCA1MiBFb2V1bi1kb25nCi0JCQkJWXVzZW9uZy1ndQotCQkJCURhZWplb24gIDMwNS0zMzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtMjggICAoaGV4KQkJRHluYW1pYyBSYXRpbmdzIFAvTAotMDAwRTI4ICAgICAoYmFzZSAxNikJCUR5bmFtaWMgUmF0aW5ncyBQL0wKLQkJCQlDL08gV2lsc29uIFRyYW5zZm9ybWVyIENvLgotCQkJCVdpbHNvbiBSZC4gKFBPIEJveCA1KQotCQkJCUdsZW4gV2F2ZXJsZXkgVmljdG9yaWEgMzE1MAotCQkJCUFVU1RSQUxJQQotCi0wMC0wRS0yOSAgIChoZXgpCQlTaGVzdGVyIENvbW11bmljYXRpb25zIEluYwotMDAwRTI5ICAgICAoYmFzZSAxNikJCVNoZXN0ZXIgQ29tbXVuaWNhdGlvbnMgSW5jCi0JCQkJMTU5IFMuIExpbmNvbG4KLQkJCQlTdWl0ZSAyMjEKLQkJCQlTcG9rYW5lIFdBIDk5MjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0yQSAgIChoZXgpCQlQUklWQVRFCi0wMDBFMkEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBFLTJCICAgKGhleCkJCVNhZmFyaSBUZWNobm9sb2dpZXMKLTAwMEUyQiAgICAgKGJhc2UgMTYpCQlTYWZhcmkgVGVjaG5vbG9naWVzCi0JCQkJNjM4NTUgTTQwIEh3eQotCQkJCUxhd3RvbiBNSSA0OTA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMkMgICAoaGV4KQkJTmV0Y29kZWMgY28uCi0wMDBFMkMgICAgIChiYXNlIDE2KQkJTmV0Y29kZWMgY28uCi0JCQkJNDAxIERhZWlvbiBTL1cgQ2VudGVyLCA0OCBKYW5nZG9uZwotCQkJCVl1c29uZ2d1Ci0JCQkJRGFlam9uICAzMDUtNzE1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLTJEICAgKGhleCkJCUh5dW5kYWkgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQuCi0wMDBFMkQgICAgIChiYXNlIDE2KQkJSHl1bmRhaSBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQkyMjMtMjIsIFNhbmdkYWV3b24tMWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBLeW91bmdraS1kbyA0NjItODA3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLTJFICAgKGhleCkJCUVkaW1heCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwRTJFICAgICAoYmFzZSAxNikJCUVkaW1heCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTMsIFd1LUNodWFuIDNyZCBSb2FkLAotCQkJCVd1LUt1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlUYWlwZWkgSHNpZW4sICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTJGICAgKGhleCkJCURpc2V0cm9uaWMgTWVkaWNhbCBTeXN0ZW1zIEFHCi0wMDBFMkYgICAgIChiYXNlIDE2KQkJRGlzZXRyb25pYyBNZWRpY2FsIFN5c3RlbXMgQUcKLQkJCQlLaXJjaGJlcmdzdHJhc3NlIDE5MAotCQkJCUJ1cmdkb3JmIEJlcm4gMzQwMQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBFLTMwICAgKGhleCkJCUFFUkFTIE5ldHdvcmtzLCBJbmMuCi0wMDBFMzAgICAgIChiYXNlIDE2KQkJQUVSQVMgTmV0d29ya3MsIEluYy4KLQkJCQlQLk8uIEJveCA3MzMwCi0JCQkJTGFndW5hIE5pZ3VlbCBDQSA5MjYwNy03MzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0zMSAgIChoZXgpCQlPbHltcHVzIFNvZnQgSW1hZ2luZyBTb2x1dGlvbnMgR21iSAotMDAwRTMxICAgICAoYmFzZSAxNikJCU9seW1wdXMgU29mdCBJbWFnaW5nIFNvbHV0aW9ucyBHbWJICi0JCQkJSm9oYW5uLUtyYW5lLVdlZyAzOQotCQkJCU38bnN0ZXIgNDgxNDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLTMyICAgKGhleCkJCUtvbnRyb24gTWVkaWNhbAotMDAwRTMyICAgICAoYmFzZSAxNikJCUtvbnRyb24gTWVkaWNhbAotCQkJCVJlaW5hY2hlcnN0cmFzc2UgMTMxCi0JCQkJQmFzZWwgIDQwMDIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wRS0zMyAgIChoZXgpCQlTaHVrbyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDBFMzMgICAgIChiYXNlIDE2KQkJU2h1a28gRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCVRPSFNISU4gSElHQVNISS1JS0VCVUtVUk8gQnVpbGRpbmcgM0YKLQkJCQk1LTQ0LTE1LEhJR0FTSEktSUtFQlVLVVJPLFRPU0hJTUEtS1UKLQkJCQlUT0tZTyBLQU5UT0ggMTcwLTAwNjMKLQkJCQlKQVBBTgotCi0wMC0wRS0zNCAgIChoZXgpCQlOZXhHZW4gQ2l0eSwgTFAKLTAwMEUzNCAgICAgKGJhc2UgMTYpCQlOZXhHZW4gQ2l0eSwgTFAKLQkJCQkxNjgwIEdsZW52aWxsZQotCQkJCVN1aXRlIDEwMAotCQkJCVJpY2hhcmRzb24gVGV4YXMgNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTM1ICAgKGhleCkJCUludGVsIENvcnAKLTAwMEUzNSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3JwCi0JCQkJMjExMSBORSAyNXRoIEF2ZQotCQkJCUpGMy00MjAKLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTM2ICAgKGhleCkJCUhFSU5FU1lTLCBJbmMuCi0wMDBFMzYgICAgIChiYXNlIDE2KQkJSEVJTkVTWVMsIEluYy4KLQkJCQkzRiwgU3VuZ2t3YW5nIEJsZGcuIDQ1Ni0xMywgU3VuZ25hZS1kb25nCi0JCQkJS2FuZ2RvbmctZ3UKLQkJCQlTZW91bCAgMTM0LTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS0zNyAgIChoZXgpCQlIYXJtcyAmIFdlbmRlIEdtYkggJiBDby5LRwotMDAwRTM3ICAgICAoYmFzZSAxNikJCUhhcm1zICYgV2VuZGUgR21iSCAmIENvLktHCi0JCQkJR3Jvc3Ntb29ya2VocmUgOQotCQkJCUhhbWJ1cmcgIEQtMjEwNzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLTM4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEUzOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTM5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEUzOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTNBICAgKGhleCkJCUNpcnJ1cyBMb2dpYwotMDAwRTNBICAgICAoYmFzZSAxNikJCUNpcnJ1cyBMb2dpYwotCQkJCTI5MDEgVmlhIEZvcnR1bmEKLQkJCQlBdXN0aW4gVFggNzg3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTNCICAgKGhleCkJCUhhd2tpbmcgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBFM0IgICAgIChiYXNlIDE2KQkJSGF3a2luZyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNTI4MUEgQmFycmFuY2EgUGFya3dheQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtM0MgICAoaGV4KQkJVHJhbnNhY3QgVGVjaG5vbG9naWVzIEluYwotMDAwRTNDICAgICAoYmFzZSAxNikJCVRyYW5zYWN0IFRlY2hub2xvZ2llcyBJbmMKLQkJCQkyMCBCb21heCBEcml2ZQotCQkJCUl0aGFjYSBOZXcgWW9yayAxNDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtM0QgICAoaGV4KQkJVGVsZXZpYyBOLlYuCi0wMDBFM0QgICAgIChiYXNlIDE2KQkJVGVsZXZpYyBOLlYuCi0JCQkJTGVvIEJla2FlcnRsYWFuIDEKLQkJCQlJemVnZW0gIDg4NzAKLQkJCQlCRUxHSVVNCi0KLTAwLTBFLTNFICAgKGhleCkJCVN1biBPcHRyb25pY3MgSW5jCi0wMDBFM0UgICAgIChiYXNlIDE2KQkJU3VuIE9wdHJvbmljcyBJbmMKLQkJCQk0LTM4LTQgRnVjaGlub2JlLWhvbmNob3UKLQkJCQlTYWdhbWloYXJhIEthbmFnYXdhIDIyOS0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMEUtM0YgICAoaGV4KQkJU29yb250aSwgSW5jLgotMDAwRTNGICAgICAoYmFzZSAxNikJCVNvcm9udGksIEluYy4KLQkJCQkxMjE1OSBCdXNpbmVzcyBQYXJrIERyLCBTdWl0ZSAxNDAKLQkJCQlEcmFwZXIgVXRhaCA4NDAyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNDAgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBFNDAgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTBFLTQxICAgKGhleCkJCU5JSE9OIE1FQ0hBVFJPTklDUyBDTy4sTFRELgotMDAwRTQxICAgICAoYmFzZSAxNikJCU5JSE9OIE1FQ0hBVFJPTklDUyBDTy4sTFRELgotCQkJCTktNiBTSElPTUlEQUksIE1JWUFNQUUtS1UKLQkJCQlLQVdBU0FLSS1TSEkgS0FOQUdBV0EtS0VOIDIxNi0wMDEzCi0JCQkJSkFQQU4KLQotMDAtMEUtNDIgICAoaGV4KQkJTW90aWMgSW5jb3BvcmF0aW9uIEx0ZC4KLTAwMEU0MiAgICAgKGJhc2UgMTYpCQlNb3RpYyBJbmNvcG9yYXRpb24gTHRkLgotCQkJCVJvb20gMjkwNy04LCBXaW5kc29yICBIb3VzZQotCQkJCTMxMSBHbG91Y2VzdGVyIFJvYWQsIENhdXNld2F5IEJheQotCQkJCUhvbmcgS29uZyAgCi0JCQkJQ0hJTkEKLQotMDAtMEUtNDMgICAoaGV4KQkJRy1UZWsgRWxlY3Ryb25pY3MgU2RuLiBCaGQuCi0wMDBFNDMgICAgIChiYXNlIDE2KQkJRy1UZWsgRWxlY3Ryb25pY3MgU2RuLiBCaGQuCi0JCQkJMjQ5MyBNdWtpbSAxLCBMb3JvbmcgUGVydXNhaGFhbiBMYXBhbgotCQkJCUthd2FzYW4gUGVyaW5kdXN0cmlhbiBQZXJhaQotCQkJCVBlcmFpIFBlbmFuZyAxMzYwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTBFLTQ0ICAgKGhleCkJCURpZ2l0YWwgNSwgSW5jLgotMDAwRTQ0ICAgICAoYmFzZSAxNikJCURpZ2l0YWwgNSwgSW5jLgotCQkJCTEwMSBHcm92ZXJzIE1pbGwgUmQuCi0JCQkJU3VpdGUgMjAwCi0JCQkJTGF3cmVuY2V2aWxsZSBOSiAwODY0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNDUgICAoaGV4KQkJQmVpamluZyBOZXd0cnkgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEx0ZAotMDAwRTQ1ICAgICAoYmFzZSAxNikJCUJlaWppbmcgTmV3dHJ5IEVsZWN0cm9uaWMgVGVjaG5vbG9neSBMdGQKLQkJCQlQTyBCb3ggOTUsIE5vLiAxIEJlaSBTaGEgVGFuLAotCQkJCUNoYW8gWWFuZyBRdQotCQkJCUJlaWppbmcgIDEwMDgzCi0JCQkJQ0hJTkEKLQotMDAtMEUtNDYgICAoaGV4KQkJTmlpZ2F0YSBTZWltaXRzdSBDby4sTHRkLgotMDAwRTQ2ICAgICAoYmFzZSAxNikJCU5paWdhdGEgU2VpbWl0c3UgQ28uLEx0ZC4KLQkJCQkzMzM1LTIsIFNoaW1vbmFrYSwgU2Fud2EtbXVyYQotCQkJCU5ha2FrdWJpa2ktZ3VuIE5paWdhdGEgOTQzLTAyMjIKLQkJCQlKQVBBTgotCi0wMC0wRS00NyAgIChoZXgpCQlOQ0kgU3lzdGVtIENvLixMdGQuCi0wMDBFNDcgICAgIChiYXNlIDE2KQkJTkNJIFN5c3RlbSBDby4sTHRkLgotCQkJCSMyMDYsIEtheWFuZyBUZWNobm8tVG93biwgMTQ4NywgS2F5YW5nIDMgZG9uZywgS2FuZ3Nlby1LdSwgU2VvdWwsIEtvcmVhCi0JCQkJU2VvdWwgIDE1Ny04MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtNDggICAoaGV4KQkJTGlwbWFuIFRyYW5zQWN0aW9uIFNvbHV0aW9ucwotMDAwRTQ4ICAgICAoYmFzZSAxNikJCUxpcG1hbiBUcmFuc0FjdGlvbiBTb2x1dGlvbnMKLQkJCQkxMSBIYWFtYWwgU3QuCi0JCQkJIFJvc2gtSGFheWluICA0ODA5MgotCQkJCUlTUkFFTAotCi0wMC0wRS00OSAgIChoZXgpCQlGb3Jzd2F5IFNjYW5kaW5hdmlhIEFCCi0wMDBFNDkgICAgIChiYXNlIDE2KQkJRm9yc3dheSBTY2FuZGluYXZpYSBBQgotCQkJCUthcGxhbnNnYXRhbiAxNiBCCi0JCQkJNTQxIDM0IFNr9nZkZSAKLQkJCQlTV0VERU4KLQotMDAtMEUtNEEgICAoaGV4KQkJQ2hhbmdjaHVuIEh1YXl1IFdFQlBBRCBDby4sTFRECi0wMDBFNEEgICAgIChiYXNlIDE2KQkJQ2hhbmdjaHVuIEh1YXl1IFdFQlBBRCBDby4sTFRECi0JCQkJNDM3MCBHYW94aW4gUm9hZCwgSGlnaC1UZWNoCi0JCQkJRGV2ZWxvcG1lbnQgQXJlYQotCQkJCUNoYW5nY2h1biBKaWxpbiAxMzAwMTIKLQkJCQlDSElOQQotCi0wMC0wRS00QiAgIChoZXgpCQlhdHJpdW0gYyBhbmQgaQotMDAwRTRCICAgICAoYmFzZSAxNikJCWF0cml1bSBjIGFuZCBpCi0JCQkJMTI0LTQsIE9qZW9uLWRvbmcsCi0JCQkJVWl3YW5nLWNpdHkgS3l1bmdnaS1EbyA0MzctODE5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLTRDICAgKGhleCkJCUJlcm1haSBJbmMuCi0wMDBFNEMgICAgIChiYXNlIDE2KQkJQmVybWFpIEluYy4KLQkJCQk0MTAgQ2FtYnJpZGdlIEF2ZQotCQkJCTJuZCBGbG9vcgotCQkJCVBhbG8gQWx0byBDQSA5NDMwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNEQgICAoaGV4KQkJTnVtZXNhIEluYy4KLTAwMEU0RCAgICAgKGJhc2UgMTYpCQlOdW1lc2EgSW5jLgotCQkJCTQ0NDQgV2VzdGdyb3ZlIFN1aXRlIDMwMAotCQkJCUFkZGlzb24gVFggNzUwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTRFICAgKGhleCkJCVdhdmVwbHVzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBFNEUgICAgIChiYXNlIDE2KQkJV2F2ZXBsdXMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzNDcgSHNpbkh1IDJuZCBSZC4sIE5laUh1Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTRGICAgKGhleCkJCVRyYWpldCBHbWJICi0wMDBFNEYgICAgIChiYXNlIDE2KQkJVHJhamV0IEdtYkgKLQkJCQlSZWJlbnJpbmcgMzMKLQkJCQlCcmF1bnNjaHdlaWcgTmRzLiAzODEwNgotCQkJCUdFUk1BTlkKLQotMDAtMEUtNTAgICAoaGV4KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLTAwMEU1MCAgICAgKGJhc2UgMTYpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotCQkJCVByaW5zIEJvdWRld2lqbmxhYW4gNDcKLQkJCQlFZGVnZW0gQW50d2VycCBCLTI2NTAKLQkJCQlCRUxHSVVNCi0KLTAwLTBFLTUxICAgKGhleCkJCXRlY25hIGVsZXR0cm9uaWNhIHNybAotMDAwRTUxICAgICAoYmFzZSAxNikJCXRlY25hIGVsZXR0cm9uaWNhIHNybAotCQkJCXZpYSBtaWdsaW9saSAzMAotCQkJCWNhc3RlbCBzYW4gcGlldHJvIHRlcm1lIGJvbG9nbmEgNDAwMjQKLQkJCQlJVEFMWQotCi0wMC0wRS01MiAgIChoZXgpCQlPcHRpdW0gQ29ycG9yYXRpb24KLTAwMEU1MiAgICAgKGJhc2UgMTYpCQlPcHRpdW0gQ29ycG9yYXRpb24KLQkJCQk1MDAgSG9yaXpvbiBEcgotCQkJCVN1aXRlIDUwNQotCQkJCUNoYWxmb250IFBBIDE4OTE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS01MyAgIChoZXgpCQlBViBURUNIIENPUlBPUkFUSU9OCi0wMDBFNTMgICAgIChiYXNlIDE2KQkJQVYgVEVDSCBDT1JQT1JBVElPTgotCQkJCTEwRixFIEJ1aWxkaW5nLE5vLjE5LTExIFNhbiBDaHVuZyBSZC4sTmFuS2FuZwotCQkJCVRhaXBlaSAgMTE1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS01NCAgIChoZXgpCQlBbHBoYUNlbGwgV2lyZWxlc3MgTHRkLgotMDAwRTU0ICAgICAoYmFzZSAxNikJCUFscGhhQ2VsbCBXaXJlbGVzcyBMdGQuCi0JCQkJMjIgWmFyaGluIHN0cmVldAotCQkJCVJhYW5hbmEgIDQzNjYyCi0JCQkJSVNSQUVMCi0KLTAwLTBFLTU1ICAgKGhleCkJCUFVVklUUkFOCi0wMDBFNTUgICAgIChiYXNlIDE2KQkJQVVWSVRSQU4KLQkJCQk3YyBjaGVtaW4gZGVzIHBy6HMKLQkJCQlNRVlMQU4gIDM4NDEwCi0JCQkJRlJBTkNFCi0KLTAwLTBFLTU2ICAgKGhleCkJCTRHIFN5c3RlbXMgR21iSCAmIENvLiBLRwotMDAwRTU2ICAgICAoYmFzZSAxNikJCTRHIFN5c3RlbXMgR21iSCAmIENvLiBLRwotCQkJCUphcnJlc3RyYXNzZSAyLTYKLQkJCQkyMjMwMyBIYW1idXJnIAotCQkJCUdFUk1BTlkKLQotMDAtMEUtNTcgICAoaGV4KQkJSXdvcmxkIE5ldHdvcmtpbmcsIEluYy4KLTAwMEU1NyAgICAgKGJhc2UgMTYpCQlJd29ybGQgTmV0d29ya2luZywgSW5jLgotCQkJCTEyNSBIYW5qdSBCbGRnLCBOb25oeXVuLURvbmcKLQkJCQlLYW5nLU5hbSBHdQotCQkJCVNlb3VsICAxMzUwMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtNTggICAoaGV4KQkJU29ub3MsIEluYy4KLTAwMEU1OCAgICAgKGJhc2UgMTYpCQlTb25vcywgSW5jLgotCQkJCTIyMyBFLiBEZSBMYSBHdWVycmEgU3QuCi0JCQkJU2FudGEgQmFyYmFyYSBDQSA5MzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNTkgICAoaGV4KQkJU0FHRU0gU0EKLTAwMEU1OSAgICAgKGJhc2UgMTYpCQlTQUdFTSBTQQotCQkJCTIsIHJ1ZSBkdSBwZXRpdCBBbGJpCi0JCQkJQ0VSR1kgU0FJTlQgQ0hSSVNUT1BIRSB2YWwgZCdPaXNlIDk1ODAwCi0JCQkJRlJBTkNFCi0KLTAwLTBFLTVBICAgKGhleCkJCVRFTEVGSUVMRCBpbmMuCi0wMDBFNUEgICAgIChiYXNlIDE2KQkJVEVMRUZJRUxEIGluYy4KLQkJCQkzRiwgS3VtYm8gQmxkZywgMi05LCBTZW9rY2hvbi1Eb25nCi0JCQkJU29uZ3BhLUd1Ci0JCQkJU2VvdWwgIDEzOC0xOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtNUIgICAoaGV4KQkJUGFya2VyVmlzaW9uIC0gRGlyZWN0MkRhdGEKLTAwMEU1QiAgICAgKGJhc2UgMTYpCQlQYXJrZXJWaXNpb24gLSBEaXJlY3QyRGF0YQotCQkJCTk0MzIgQmF5bWVhZG93cyBXYXkKLQkJCQlTdWl0ZSAxNTAKLQkJCQlKYWNrc29udmlsbGUgRkwgMzIyNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTVDICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDBFNUMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS01RCAgIChoZXgpCQlUcmlwbGUgUGxheSBUZWNobm9sb2dpZXMgQS9TCi0wMDBFNUQgICAgIChiYXNlIDE2KQkJVHJpcGxlIFBsYXkgVGVjaG5vbG9naWVzIEEvUwotCQkJCUhlcnN0ZWR2YW5nIDgKLQkJCQlBbGJlcnRzbHVuZCAgREstMjYyMAotCQkJCURFTk1BUksKLQotMDAtMEUtNUUgICAoaGV4KQkJUmFpc2Vjb20gVGVjaG5vbG9neQotMDAwRTVFICAgICAoYmFzZSAxNikJCVJhaXNlY29tIFRlY2hub2xvZ3kKLQkJCQkyIEZsb29yLCBTb3V0aCBCdWlsZGluZyBvZiBSYWluYm93IFBsYXphCi0JCQkJTm8uIDExIFNoYW5nZGkgSW5mb3JtYXRpb24gUm9hZAotCQkJCUhhaWRpYW4gRGlzdHJpY3QgQmVpamluZyAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0wRS01RiAgIChoZXgpCQlhY3Rpdi1uZXQgR21iSCAmIENvLiBLRwotMDAwRTVGICAgICAoYmFzZSAxNikJCWFjdGl2LW5ldCBHbWJIICYgQ28uIEtHCi0JCQkJS29ucmFkLVp1c2UtU3RyLiA0Ci0JCQkJQm9jaHVtICA0NDgwMQotCQkJCUdFUk1BTlkKLQotMDAtMEUtNjAgICAoaGV4KQkJMzYwU1VOIERpZ2l0YWwgQnJvYWRiYW5kIENvcnBvcmF0aW9uCi0wMDBFNjAgICAgIChiYXNlIDE2KQkJMzYwU1VOIERpZ2l0YWwgQnJvYWRiYW5kIENvcnBvcmF0aW9uCi0JCQkJMkYtMiwgTm8uMiwgSmlhbmJhIFJkLiwKLQkJCQlDaHVuZyBIbyBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS02MSAgIChoZXgpCQlNSUNST1RST0wgTElNSVRFRAotMDAwRTYxICAgICAoYmFzZSAxNikJCU1JQ1JPVFJPTCBMSU1JVEVECi0JCQkJMTYgRUxHQVIgQlVTSU5FU1MgQ0VOVFJFCi0JCQkJTU9TRUxFWSBST0FECi0JCQkJSEFMTE9XIFdPUkNFU1RFUiBXUjIgNk5KCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtNjIgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBFNjIgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMEUtNjMgICAoaGV4KQkJTGVta2UgRGlhZ25vc3RpY3MgR21iSAotMDAwRTYzICAgICAoYmFzZSAxNikJCUxlbWtlIERpYWdub3N0aWNzIEdtYkgKLQkJCQlSYWRlYnVyZ2VyIFN0ci4gNDcKLQkJCQlWb2xrZXJzZG9yZiBTYXhvbnkgMDE0NjgKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLTY0ICAgKGhleCkJCUVscGhlbCwgSW5jCi0wMDBFNjQgICAgIChiYXNlIDE2KQkJRWxwaGVsLCBJbmMKLQkJCQkzMjAwIFMuIEVscG1lciBTdC4KLQkJCQlNYWduYSBVVCA4NDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNjUgICAoaGV4KQkJVHJhbnNDb3JlCi0wMDBFNjUgICAgIChiYXNlIDE2KQkJVHJhbnNDb3JlCi0JCQkJODYwMCBKZWZmZXJzb24gU3QgTkUKLQkJCQlBbGJ1cXVlcnF1ZSBOTSA4NzExMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNjYgICAoaGV4KQkJSGl0YWNoaSBBZHZhbmNlZCBEaWdpdGFsLCBJbmMuCi0wMDBFNjYgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBBZHZhbmNlZCBEaWdpdGFsLCBJbmMuCi0JCQkJMjkyLCBZb3NoaWRhLWNobywgVG90c3VrYS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDI0NC0wODE3Ci0JCQkJSkFQQU4KLQotMDAtMEUtNjcgICAoaGV4KQkJRWx0aXMgTWljcm9lbGVjdHJvbmljcyBMdGQuCi0wMDBFNjcgICAgIChiYXNlIDE2KQkJRWx0aXMgTWljcm9lbGVjdHJvbmljcyBMdGQuCi0JCQkJVW5pdCA5MDJCLCA5L0YuLCBTdW5iZWFtIENlbnRyZQotCQkJCTI3LCBTaGluZyBZaXAgU3RyZWV0Ci0JCQkJS3d1biBUb25nIEtvd2xvb24gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBFLTY4ICAgKGhleCkJCUUtVE9QIE5ldHdvcmsgVGVjaG5vbG9neSBJbmMuCi0wMDBFNjggICAgIChiYXNlIDE2KQkJRS1UT1AgTmV0d29yayBUZWNobm9sb2d5IEluYy4KLQkJCQlOby4gNywgU2hpbiBTaGluIFJkLiwKLQkJCQlUYWluYW4gIDcwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtNjkgICAoaGV4KQkJQ2hpbmEgRWxlY3RyaWMgUG93ZXIgUmVzZWFyY2ggSW5zdGl0dXRlCi0wMDBFNjkgICAgIChiYXNlIDE2KQkJQ2hpbmEgRWxlY3RyaWMgUG93ZXIgUmVzZWFyY2ggSW5zdGl0dXRlCi0JCQkJTm8uMTUgWGlhb3lpbmcgRWFzdCBSb2FkLFFpbmdoZSxCZWlqaW5nLENoaW5hCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMEUtNkEgICAoaGV4KQkJM0NvbSBMdGQKLTAwMEU2QSAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cyBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtNkIgICAoaGV4KQkJSmFuaXR6YSBlbGVjdHJvbmljcyBHbWJICi0wMDBFNkIgICAgIChiYXNlIDE2KQkJSmFuaXR6YSBlbGVjdHJvbmljcyBHbWJICi0JCQkJVm9yIGRlbSBQb2xzdPxjayAxCi0JCQkJTGFobmF1IEhlc3NlbiAzNTYzMwotCQkJCUdFUk1BTlkKLQotMDAtMEUtNkMgICAoaGV4KQkJRGV2aWNlIERyaXZlcnMgTGltaXRlZAotMDAwRTZDICAgICAoYmFzZSAxNikJCURldmljZSBEcml2ZXJzIExpbWl0ZWQKLQkJCQkxLTUtMS0xMDMKLQkJCQlXYWthbWF0c3UtY2hvCi0JCQkJRnVjaHUtc2hpIFRva3lvIDE4MzAwMDUKLQkJCQlKQVBBTgotCi0wMC0wRS02RCAgIChoZXgpCQlNdXJhdGEgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLTAwMEU2RCAgICAgKGJhc2UgMTYpCQlNdXJhdGEgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLQkJCQkyMjg4LCBPYXphLU9oc2hpbm9oYXJhLCBZYXN1LWNobywKLQkJCQlZYXN1LWd1biBTaGlnYSA1MjAtMjM5MwotCQkJCUpBUEFOCi0KLTAwLTBFLTZFICAgKGhleCkJCU1JQ1JFTEVDICBFTEVDVFJPTklDUyBTLkEKLTAwMEU2RSAgICAgKGJhc2UgMTYpCQlNSUNSRUxFQyAgRUxFQ1RST05JQ1MgUy5BCi0JCQkJMTYgSVNNSU5JUyBTVFIuCi0JCQkJQVRIRU5TIEFFR0FMRU8gMTIyNDEKLQkJCQlHUkVFQ0UKLQotMDAtMEUtNkYgICAoaGV4KQkJSVJJUyBDb3Jwb3JhdGlvbiBCZXJoYWQKLTAwMEU2RiAgICAgKGJhc2UgMTYpCQlJUklTIENvcnBvcmF0aW9uIEJlcmhhZAotCQkJCUlSSVMgU21hcnQgVGVjaG5vbG9neSBDb21wbGV4Ci0JCQkJVGVjaG5vbG9neSBQYXJrIE1hbGF5c2lhLCBCdWtpdCBKYWxpbAotCQkJCUt1YWxhIEx1bXB1ciBXUCA1NzAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTBFLTcwICAgKGhleCkJCWluMiBOZXR3b3JrcwotMDAwRTcwICAgICAoYmFzZSAxNikJCWluMiBOZXR3b3JrcwotCQkJCTMyMCBXICAyMDAgUwotCQkJCVN1aXRlICMzODAKLQkJCQlTTEMgVVQgODQxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTcxICAgKGhleCkJCUdlbXN0YXIgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBMdGQuCi0wMDBFNzEgICAgIChiYXNlIDE2KQkJR2Vtc3RhciBUZWNobm9sb2d5IERldmVsb3BtZW50IEx0ZC4KLQkJCQlVbml0IDIwMSwgU3R1bGV4IGhvdXNlLCA2OTggcHJpbmNlIGVkd2FyZCByb2FkIGVhc3QsIHNhbiBwbyBrb25nLCBLb2x3b29uCi0JCQkJSG9uZyBLb25nICA4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMEUtNzIgICAoaGV4KQkJQ1RTIGVsZWN0cm9uaWNzCi0wMDBFNzIgICAgIChiYXNlIDE2KQkJQ1RTIGVsZWN0cm9uaWNzCi0JCQkJQ29yc28gVmVyY2VsbGkgMzMyCi0JCQkJSXZyZWEgVG9yaW5vIDEwMDE1Ci0JCQkJSVRBTFkKLQotMDAtMEUtNzMgICAoaGV4KQkJVHBhY2sgQS9TCi0wMDBFNzMgICAgIChiYXNlIDE2KQkJVHBhY2sgQS9TCi0JCQkJTGF1dHJ1cGJqZXJnIDcgLSAxMQotCQkJCURLIDI3NTAgIEJhbGxlcnVwICBESyAyNzUwCi0JCQkJREVOTUFSSwotCi0wMC0wRS03NCAgIChoZXgpCQlTb2xhciBUZWxlY29tLiBUZWNoCi0wMDBFNzQgICAgIChiYXNlIDE2KQkJU29sYXIgVGVsZWNvbS4gVGVjaAotCQkJCUIgQi9ELCA0RiwgU2FtaG8gVmVudHVyZSBUb3dlcgotCQkJCSMyNzUtNiwgWWFuZ2phZS1Eb25nLCBTZWNoby1HdQotCQkJCVNlb3VsICAxMzctOTQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLTc1ICAgKGhleCkJCU5ldyBZb3JrIEFpciBCcmFrZSBDb3JwLgotMDAwRTc1ICAgICAoYmFzZSAxNikJCU5ldyBZb3JrIEFpciBCcmFrZSBDb3JwLgotCQkJCTc0OCBTdGFyYnVjayBBdmUuCi0JCQkJV2F0ZXJ0b3duIE5ZIDEzNjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS03NiAgIChoZXgpCQlHRU1TT0MgSU5OT1ZJU0lPTiBJTkMuCi0wMDBFNzYgICAgIChiYXNlIDE2KQkJR0VNU09DIElOTk9WSVNJT04gSU5DLgotCQkJCTlGLE5vLjUxNixTZWMsMU5laWh1IFJkLiwKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtNzcgICAoaGV4KQkJRGVjcnUsIEluYy4KLTAwMEU3NyAgICAgKGJhc2UgMTYpCQlEZWNydSwgSW5jLgotCQkJCTI3NSBTaG9yZWxpbmUgRHIKLQkJCQlTdWl0ZSA0NTAKLQkJCQlSZWR3b29kIENpdHkgQ0EgOTQwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTc4ICAgKGhleCkJCUFtdGVsY28KLTAwMEU3OCAgICAgKGJhc2UgMTYpCQlBbXRlbGNvCi0JCQkJNDgwMCBDdXJ0aW4gRHJpdmUKLQkJCQlNY0ZhcmxhbmQgV0kgNTM1NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTc5ICAgKGhleCkJCUFtcGxlIENvbW11bmljYXRpb25zIEluYy4KLTAwMEU3OSAgICAgKGJhc2UgMTYpCQlBbXBsZSBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJNDAzNCBDbGlwcGVyIEN0LgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTdBICAgKGhleCkJCUdlbVdvbiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMEU3QSAgICAgKGJhc2UgMTYpCQlHZW1Xb24gQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJM0ZMLixOTy4zMixMYW5lIDEzNSxTaGlhbmplbmcgOXRoIFJkLixKdWJlaSBDaXR5Ci0JCQkJSHNpbmNodSAgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS03QiAgIChoZXgpCQlUb3NoaWJhCi0wMDBFN0IgICAgIChiYXNlIDE2KQkJVG9zaGliYQotCQkJCTItOSwgU3VlaGlyby1DaG8KLQkJCQlPbWUgVG9reW8gMTk4ODcxMAotCQkJCUpBUEFOCi0KLTAwLTBFLTdDICAgKGhleCkJCVRlbGV2ZXMgUy5BLgotMDAwRTdDICAgICAoYmFzZSAxNikJCVRlbGV2ZXMgUy5BLgotCQkJCVJ1YSBCZW5lZmljYSBDb254byAxNwotCQkJCVNhbnRpYWdvIGRlIENvbXBvc3RlbGEgQ29ydfFhIDE1NzA2Ci0JCQkJU1BBSU4KLQotMDAtMEUtN0QgICAoaGV4KQkJRWxlY3Ryb25pY3MgTGluZSAzMDAwIEx0ZC4KLTAwMEU3RCAgICAgKGJhc2UgMTYpCQlFbGVjdHJvbmljcyBMaW5lIDMwMDAgTHRkLgotCQkJCTIgR3Jhbml0IFN0LgotCQkJCVBldGFoIFRpa3ZhIEtpcnlhciBBcmllIDQ0OTEzMAotCQkJCUlTUkFFTAotCi0wMC0wRS03RSAgIChoZXgpCQlpb25TaWduIE95Ci0wMDBFN0UgICAgIChiYXNlIDE2KQkJaW9uU2lnbiBPeQotCQkJCVAuTy5CT1ggIDI0NgotCQkJCUZJLTI2MTAxCi0JCQkJUmF1bWEgIAotCQkJCUZJTkxBTkQKLQotMDAtMEUtN0YgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDBFN0YgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkgU291dGgKLQkJCQlNUzA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTgwICAgKGhleCkJCVRob21zb24gVGVjaG5vbG9neSBJbmMKLTAwMEU4MCAgICAgKGJhc2UgMTYpCQlUaG9tc29uIFRlY2hub2xvZ3kgSW5jCi0JCQkJOTA4N0EgMTk4dGggU1QKLQkJCQlTdXJyZXkgQkMgVjFNLTNCMQotCQkJCUNBTkFEQQotCi0wMC0wRS04MSAgIChoZXgpCQlEZXZpY2VzY2FwZSBTb2Z0d2FyZSwgSW5jLgotMDAwRTgxICAgICAoYmFzZSAxNikJCURldmljZXNjYXBlIFNvZnR3YXJlLCBJbmMuCi0JCQkJMTAwMCBNYXJpbmEgQmx2ZAotCQkJCVN1aXRlIDQwMAotCQkJCUJyaXNiYW5lIENBIDk0MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS04MiAgIChoZXgpCQlDb21tdGVjaCBXaXJlbGVzcwotMDAwRTgyICAgICAoYmFzZSAxNikJCUNvbW10ZWNoIFdpcmVsZXNzCi0JCQkJMTE1LzM5NiBTY2FyYm9yb3VnaCBCZWFjaCBSZAotCQkJCU9zYm9ybmUgUGFyawotCQkJCVBlcnRoIFdBIDYwMTcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEUtODMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRTgzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtODQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRTg0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtODUgICAoaGV4KQkJQ2F0YWx5c3QgRW50ZXJwcmlzZXMsIEluYy4KLTAwMEU4NSAgICAgKGJhc2UgMTYpCQlDYXRhbHlzdCBFbnRlcnByaXNlcywgSW5jLgotCQkJCTMzODUgU2NvdHQgQmx2ZAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS04NiAgIChoZXgpCQlBbGNhdGVsIE5vcnRoIEFtZXJpY2EKLTAwMEU4NiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIE5vcnRoIEFtZXJpY2EKLQkJCQkyMzAxIFN1Z2FyIEJ1c2ggUm9hZAotCQkJCVJhbGVpZ2ggTkMgMjc2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTg3ICAgKGhleCkJCWFkcCBHYXVzZWxtYW5uIEdtYkgKLTAwMEU4NyAgICAgKGJhc2UgMTYpCQlhZHAgR2F1c2VsbWFubiBHbWJICi0JCQkJQm9zY2hzdHIuIDgKLQkJCQlMdWViYmVja2UgTlJXIDMyMzEyCi0JCQkJR0VSTUFOWQotCi0wMC0wRS04OCAgIChoZXgpCQlWSURFT1RST04gQ09SUC4KLTAwMEU4OCAgICAgKGJhc2UgMTYpCQlWSURFT1RST04gQ09SUC4KLQkJCQkxNy0xNiwyLUNIT01FCi0JCQkJSEFDSElPSkkgVE9LWU8gMTkzLTA4MzUKLQkJCQlKQVBBTgotCi0wMC0wRS04OSAgIChoZXgpCQlDTEVNQVRJQwotMDAwRTg5ICAgICAoYmFzZSAxNikJCUNMRU1BVElDCi0JCQkJMTAxIHJ1ZSBQaWVycmUgU0VNQVJECi0JCQkJQ0hBVElMTE9OIFIuUC4gOTIzMjAKLQkJCQlGUkFOQ0UKLQotMDAtMEUtOEEgICAoaGV4KQkJQXZhcmEgVGVjaG5vbG9naWVzIFB0eS4gTHRkLgotMDAwRThBICAgICAoYmFzZSAxNikJCUF2YXJhIFRlY2hub2xvZ2llcyBQdHkuIEx0ZC4KLQkJCQk5IEJ1c2luZXNzIFBhcmsgRHJpdmUKLQkJCQlOb3R0aW5nIEhpbGwgVmljdG9yaWEgMzE2OAotCQkJCUFVU1RSQUxJQQotCi0wMC0wRS04QiAgIChoZXgpCQlBc3RhcnRlIFRlY2hub2xvZ3kgQ28sIEx0ZC4KLTAwMEU4QiAgICAgKGJhc2UgMTYpCQlBc3RhcnRlIFRlY2hub2xvZ3kgQ28sIEx0ZC4KLQkJCQkxMUYsIE5vLiAxNjYgRGFoLVllaCBSZC4KLQkJCQlQZWl0b3UsIFRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS04QyAgIChoZXgpCQlTaWVtZW5zIEFHIEEmRCBFVAotMDAwRThDICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQUcgQSZEIEVUCi0JCQkJU2llbWVuc3N0cmHfZSAxMAotCQkJCVJlZ2Vuc2J1cmcgIDkzMDU1Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS04RCAgIChoZXgpCQlTeXN0ZW1zIGluIFByb2dyZXNzIEhvbGRpbmcgR21iSAotMDAwRThEICAgICAoYmFzZSAxNikJCVN5c3RlbXMgaW4gUHJvZ3Jlc3MgSG9sZGluZyBHbWJICi0JCQkJRXhlcnppZXJwbGF0enN0cmFzc2UgODUKLQkJCQlHcmF6IFN0eXJpYSA4MDUxCi0JCQkJQVVTVFJJQQotCi0wMC0wRS04RSAgIChoZXgpCQlTcGFya0xBTiBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwRThFICAgICAoYmFzZSAxNikJCVNwYXJrTEFOIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJM0ZsIC4gLCBOby4gMjQ2LCBTZWMuIDEsIE5laWh1IFJvYWQuLCBOZWlodSBDaGl1LAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS04RiAgIChoZXgpCQlTZXJjb21tIENvcnAuCi0wMDBFOEYgICAgIChiYXNlIDE2KQkJU2VyY29tbSBDb3JwLgotCQkJCTNGLE5vLjgxLFl1LVlpaCBSZC4sQ2h1LU5hbiBDaGVuCi0JCQkJTWlhby1MaWggSHN1YW4gIDM1MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtOTAgICAoaGV4KQkJUE9OSUNPIENPUlAuCi0wMDBFOTAgICAgIChiYXNlIDE2KQkJUE9OSUNPIENPUlAuCi0JCQkJNjAyLCBBY2UgVHdpbiBUb3dlciAxLCAyMTItMSBHdXJvLWRvbmcKLQkJCQlHdXJvZ3UgU2VvdWwgMTUyLTc2NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS05MSAgIChoZXgpCQlOYXZpY28gQXVja2xhbmQgTHRkCi0wMDBFOTEgICAgIChiYXNlIDE2KQkJTmF2aWNvIEF1Y2tsYW5kIEx0ZAotCQkJCTE3LTIxIEthd2FuYSBTdAotCQkJCU5vcnRoY290ZSBBdWNrbGFuZCAKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wRS05MiAgIChoZXgpCQlNaWxsaW5ldCBDby4sIEx0ZC4KLTAwMEU5MiAgICAgKGJhc2UgMTYpCQlNaWxsaW5ldCBDby4sIEx0ZC4KLQkJCQkyRiwgV2VzdCBCdWlsZGluZywgSVQgVmVudHVyZSBUb3dlciwgNzgsIEdhcmFrYm9uLWRvbmcKLQkJCQlTb25ncGEtZ3UgU2VvdWwgMTM4LTE2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS05MyAgIChoZXgpCQlNaWzpbmlvIDMgU2lzdGVtYXMgRWxlY3Ry825pY29zLCBMZGEuCi0wMDBFOTMgICAgIChiYXNlIDE2KQkJTWls6W5pbyAzIFNpc3RlbWFzIEVsZWN0cvNuaWNvcywgTGRhLgotCQkJCUVkaWbtY2lvIFZpYSBOb3J0ZSwgUi4gRXNwaWRvIDE2NEMgUzQwMwotCQkJCU1haWEgTWluaG8gNDQ3MC0xNzcKLQkJCQlQT1JUVUdBTAotCi0wMC0wRS05NCAgIChoZXgpCQlNYWFzIEludGVybmF0aW9uYWwgQlYKLTAwMEU5NCAgICAgKGJhc2UgMTYpCQlNYWFzIEludGVybmF0aW9uYWwgQlYKLQkJCQlTY2llbmNlIFBhcmsgRWluZGhvdmVuIDUwNTEKLQkJCQlTb24gTm9vcmQgQnJhYmFudCBOTC01NjkyIEVCCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEUtOTUgICAoaGV4KQkJRnVqaXlhIERlbmtpIFNlaXNha3VzaG8gQ28uLEx0ZC4KLTAwMEU5NSAgICAgKGJhc2UgMTYpCQlGdWppeWEgRGVua2kgU2Vpc2FrdXNobyBDby4sTHRkLgotCQkJCThGIEZ1a3VzaGltYSBCTERHLiA2LTI1LTExLE5pc2hpLUdvdGFuZGEKLQkJCQlTaGluYWdhd2EtS3UgVG9reW8gMTQxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0wRS05NiAgIChoZXgpCQlDdWJpYyBEZWZlbnNlIEFwcGxpY2F0aW9ucywgSW5jLgotMDAwRTk2ICAgICAoYmFzZSAxNikJCUN1YmljIERlZmVuc2UgQXBwbGljYXRpb25zLCBJbmMuCi0JCQkJUC5PLiBCb3ggODU1ODcKLQkJCQk5MzMzIEJhbGJvYSBBdmVudWUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxODYtNTU4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtOTcgICAoaGV4KQkJVWx0cmFja2VyIFRlY2hub2xvZ3kgQ08uLCBJbmMKLTAwMEU5NyAgICAgKGJhc2UgMTYpCQlVbHRyYWNrZXIgVGVjaG5vbG9neSBDTy4sIEluYwotCQkJCTE0Ri0xLCBOby4gODg4LCBKaW5nZ3VvIFJvYWQsIFRhb3l1YW4gQ2l0eSwKLQkJCQlUYW95dWFuICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTk4ICAgKGhleCkJCUhNRSBDbGVhci1Db20gTFRELgotMDAwRTk4ICAgICAoYmFzZSAxNikJCUhNRSBDbGVhci1Db20gTFRELgotCQkJCTc0MDAgQmVhY2ggRHJpdmUKLQkJCQlXYXRlcmJlYWNoCi0JCQkJQ2FtYnJpZGdlc2hpcmUgIENCMjUgOVRQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtOTkgICAoaGV4KQkJU3BlY3RydW0gRGlnaXRhbCwgSW5jCi0wMDBFOTkgICAgIChiYXNlIDE2KQkJU3BlY3RydW0gRGlnaXRhbCwgSW5jCi0JCQkJMTI1MDIgRXhjaGFuZ2UgRHJpdmUsIFN1aXRlIDQ0MAotCQkJCVN0YWZmb3JkIFRYIDc3NDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS05QSAgIChoZXgpCQlCT0UgVEVDSE5PTE9HWSBHUk9VUCBDTy4sTFRECi0wMDBFOUEgICAgIChiYXNlIDE2KQkJQk9FIFRFQ0hOT0xPR1kgR1JPVVAgQ08uLExURAotCQkJCU5vLjEwIEppdXhpYW5xaWFvIFJvYWQsQ2hhb3lhbmcgRGlzdHJpY3QsQmVpamluZyxQUkMKLQkJCQlCZWlqaW5nICAxMDAwMTYKLQkJCQlDSElOQQotCi0wMC0wRS05QiAgIChoZXgpCQlBbWJpdCBNaWNyb3N5c3RlbXMgQ29ycG9yYXRpb24KLTAwMEU5QiAgICAgKGJhc2UgMTYpCQlBbWJpdCBNaWNyb3N5c3RlbXMgQ29ycG9yYXRpb24KLQkJCQk1Ri0xLCA1IEhzaW4tQW4gUmQuIFNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS05QyAgIChoZXgpCQlQZW1zdGFyCi0wMDBFOUMgICAgIChiYXNlIDE2KQkJUGVtc3RhcgotCQkJCTM1MzUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVJvY2hlc3RlciBNTiA1NTkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtOUQgICAoaGV4KQkJVGlzY2FsaSBVSyBMdGQKLTAwMEU5RCAgICAgKGJhc2UgMTYpCQlUaXNjYWxpIFVLIEx0ZAotCQkJCTIwIEJyb2Fkd2ljayBTdHJlZXQKLQkJCQlMb25kb24gIFcxRiA4SFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS05RSAgIChoZXgpCQlUb3BmaWVsZCBDby4sIEx0ZAotMDAwRTlFICAgICAoYmFzZSAxNikJCVRvcGZpZWxkIENvLiwgTHRkCi0JCQkJNHRoIGZsb29yLCBEZW9rc2FuIEJsZGcgMjYwLTQsIFNlb2h5dW4tZG9uZwotCQkJCVNlb25nbmFtIEJ1bmRhbmctS3UgNDYzLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS05RiAgIChoZXgpCQlURU1JQyBTRFMgR21iSAotMDAwRTlGICAgICAoYmFzZSAxNikJCVRFTUlDIFNEUyBHbWJICi0JCQkJU29lZmxpbmdlciBTdHJhc3NlIDEwMAotCQkJCVVsbSAgODkwNzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLUEwICAgKGhleCkJCU5ldEtsYXNzIFRlY2hub2xvZ3kgSW5jLgotMDAwRUEwICAgICAoYmFzZSAxNikJCU5ldEtsYXNzIFRlY2hub2xvZ3kgSW5jLgotCQkJCTJGLTEsIE5vLjMwLFRhaSBZdWVuIFN0cmVldCwKLQkJCQlDaHVwZWkgQ2l0eSwgSHNpbmNodSwgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1BMSAgIChoZXgpCQlGb3Jtb3NhIFRlbGV0ZWsgQ29ycG9yYXRpb24KLTAwMEVBMSAgICAgKGJhc2UgMTYpCQlGb3Jtb3NhIFRlbGV0ZWsgQ29ycG9yYXRpb24KLQkJCQkzNTgsSHVheWEgMm5kIFJkLgotCQkJCUd1ZWlzaGFuIFNoaWFuZwotCQkJCVRhb3l1YW4gIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtQTIgICAoaGV4KQkJTWNBZmVlLCBJbmMKLTAwMEVBMiAgICAgKGJhc2UgMTYpCQlNY0FmZWUsIEluYwotCQkJCTM1MCBTVyAxMnRoIEF2ZW51ZQotCQkJCURlZXJmaWVsZCBCZWFjaCBGTCAzMzQ0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQTMgICAoaGV4KQkJQ05DUi1JVCBDTy4sTFRELEhhbmdaaG91IFAuUi5DSElOQQotMDAwRUEzICAgICAoYmFzZSAxNikJCUNOQ1ItSVQgQ08uLExURCxIYW5nWmhvdSBQLlIuQ0hJTkEKLQkJCQlYdWFuVGFuIHJvYWQgTk8xLmRlcGFydG1lbnQgcm9vbTUwNCwKLQkJCQlIYW5nWmhvdSBaaGVKaWFuZyAzMTAwMDMKLQkJCQlDSElOQQotCi0wMC0wRS1BNCAgIChoZXgpCQlDZXJ0YW5jZSBJbmMuCi0wMDBFQTQgICAgIChiYXNlIDE2KQkJQ2VydGFuY2UgSW5jLgotCQkJCTE2NTAgU3VuZmxvd2VyIEF2ZS4KLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI2LTE1MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUE1ICAgKGhleCkJCUJMSVAgU3lzdGVtcwotMDAwRUE1ICAgICAoYmFzZSAxNikJCUJMSVAgU3lzdGVtcwotCQkJCUhhZWtrZW4gMgotCQkJCVZvZHNrb3YgVmVzdGVyIEhhc3NpbmcgOTMxMAotCQkJCURFTk1BUksKLQotMDAtMEUtQTYgICAoaGV4KQkJQVNVU1RFSyBDT01QVVRFUiBJTkMuCi0wMDBFQTYgICAgIChiYXNlIDE2KQkJQVNVU1RFSyBDT01QVVRFUiBJTkMuCi0JCQkJTm8uIDE1MCwgTGktVGUgUmQuLFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1BNyAgIChoZXgpCQlFbmRhY2UgVGVjaG5vbG9neQotMDAwRUE3ICAgICAoYmFzZSAxNikJCUVuZGFjZSBUZWNobm9sb2d5Ci0JCQkJODUgQWxleGFuZHJhIFN0cmVldAotCQkJCUhhbWlsdG9uICAzMjA0Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMEUtQTggICAoaGV4KQkJVW5pdGVkIFRlY2hub2xvZ2lzdHMgRXVyb3BlIExpbWl0ZWQKLTAwMEVBOCAgICAgKGJhc2UgMTYpCQlVbml0ZWQgVGVjaG5vbG9naXN0cyBFdXJvcGUgTGltaXRlZAotCQkJCVVURUwgTGFib3JhdG9yaWVzLCBXb2x2ZXMgRmFybSBMYW5lCi0JCQkJSXBzd2ljaCBSb2FkCi0JCQkJSGFkbGVpZ2ggU3VmZm9sayBJUDcgNkJICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtQTkgICAoaGV4KQkJU2hhbmdoYWkgWHVuIFNoaSBDb21tdW5pY2F0aW9ucyBFcXVpcG1lbnQgTHRkLiBDby4KLTAwMEVBOSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBYdW4gU2hpIENvbW11bmljYXRpb25zIEVxdWlwbWVudCBMdGQuIENvLgotCQkJCUhpLVRlY2ggS2luZyBXb3JsZCwgVW5pdCBDNjAzCi0JCQkJIzY2NiBCZWlqaW5nIFJvYWQgKEUpCi0JCQkJU2hhbmdoYWkgIDIwMDAwMQotCQkJCUNISU5BCi0KLTAwLTBFLUFBICAgKGhleCkJCVNjYWxlbnQgU3lzdGVtcywgSW5jLgotMDAwRUFBICAgICAoYmFzZSAxNikJCVNjYWxlbnQgU3lzdGVtcywgSW5jLgotCQkJCTQ5MCBTLiBDYWxpZm9ybmlhIEF2ZQotCQkJCVBhbG8gQWx0byBDQSA5NDMwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQUIgICAoaGV4KQkJQ3JheSBJbmMKLTAwMEVBQiAgICAgKGJhc2UgMTYpCQlDcmF5IEluYwotCQkJCTQxMSBGaXJzdCBBdmUgUyBTdWl0ZSA2MDAKLQkJCQlTZWF0dGxlIFdBIDk4MTA0Ci0JCQkJQ0FOQURBCi0KLTAwLTBFLUFDICAgKGhleCkJCU1JTlRST04gRU5URVJQUklTRSBDTy4sIExURC4KLTAwMEVBQyAgICAgKGJhc2UgMTYpCQlNSU5UUk9OIEVOVEVSUFJJU0UgQ08uLCBMVEQuCi0JCQkJTk8uMyxXdS1LdW5nIDVSZC4sIFd1LUt1IEluZCBQYXJrCi0JCQkJVGFpcGVpIENvdW50eSAgMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1BRCAgIChoZXgpCQlNZXRhbm9pYSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEVBRCAgICAgKGJhc2UgMTYpCQlNZXRhbm9pYSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk1OTE4IFcuIGNvdXJ0eWFyZCBEci4KLQkJCQlTdWl0ZSAzMzAKLQkJCQlBdXN0aW4gVFggNzg3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUFFICAgKGhleCkJCUdBV0VMTCBURUNITk9MT0dJRVMgQ09SUC4KLTAwMEVBRSAgICAgKGJhc2UgMTYpCQlHQVdFTEwgVEVDSE5PTE9HSUVTIENPUlAuCi0JCQkJMkYsTk8uMTAyLFNFQy4zLEpVTkcgU0hBTiBSRCwKLQkJCQlKVU5HIEhPIENJVFksIFRBSVBFSSBIU0lFTiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLUFGICAgKGhleCkJCUNBU1RFTAotMDAwRUFGICAgICAoYmFzZSAxNikJCUNBU1RFTAotCQkJCVpJIFNhaW50IExhbWJlcnQgZGVzIExldullcwotCQkJCVNBVU1VUiBNYWluZSBldCBMb2lyZSA0OTQxMgotCQkJCUZSQU5DRQotCi0wMC0wRS1CMCAgIChoZXgpCQlTb2x1dGlvbnMgUmFkaW8gQlYKLTAwMEVCMCAgICAgKGJhc2UgMTYpCQlTb2x1dGlvbnMgUmFkaW8gQlYKLQkJCQlQcmluc2VncmFjaHQgODIKLQkJCQlUaGUgSGFndWUgWkggMjUxMiBHQwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBFLUIxICAgKGhleCkJCU5ld2NvdGVjaCxMdGQKLTAwMEVCMSAgICAgKGJhc2UgMTYpCQlOZXdjb3RlY2gsTHRkCi0JCQkJQW55YW5nIE1lZ2F2YWxseSA3MTUtMwotCQkJCUt3YW55YW5nLURvbmcsIERvbmdhbi1HdSwKLQkJCQlBbnlhbmcgQ2l0eSBHdWVvbmdnaS1EbyA0MzEtMTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLUIyICAgKGhleCkJCU1pY3JvLVJlc2VhcmNoIEZpbmxhbmQgT3kKLTAwMEVCMiAgICAgKGJhc2UgMTYpCQlNaWNyby1SZXNlYXJjaCBGaW5sYW5kIE95Ci0JCQkJVuRsaXRhbG9udGllIDgzIEMKLQkJCQlIZWxzaW5raSAgRklOLTAwNjYwCi0JCQkJRklOTEFORAotCi0wMC0wRS1CMyAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQKLTAwMEVCMyAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQKLQkJCQkyNTgwIDU1dGggU3RyZWV0Ci0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQjQgICAoaGV4KQkJR1VBTkdaSE9VIEdBT0tFIENPTU1VTklDQVRJT05TIFRFQ0hOT0xPR1kgQ08uTFRELgotMDAwRUI0ICAgICAoYmFzZSAxNikJCUdVQU5HWkhPVSBHQU9LRSBDT01NVU5JQ0FUSU9OUyBURUNITk9MT0dZIENPLkxURC4KLQkJCQlBVkUuIDM5OCBaSE9OR1NIQU4KLQkJCQlHVUFOR1pIT1UgR1VBTkdET05HIDUxMDY2MAotCQkJCUNISU5BCi0KLTAwLTBFLUI1ICAgKGhleCkJCUVjYXN0bGUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDBFQjUgICAgIChiYXNlIDE2KQkJRWNhc3RsZSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjNTAyLCBOYW1qYW5nIEIvRCwgQmFuZ2JhZS1kb25nLAotCQkJCVNlb2Noby1rdSwKLQkJCQlTZW91bCAgMTM3LTgxOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS1CNiAgIChoZXgpCQlSaXZlcmJlZCBUZWNobm9sb2d5LCBJbmMuCi0wMDBFQjYgICAgIChiYXNlIDE2KQkJUml2ZXJiZWQgVGVjaG5vbG9neSwgSW5jLgotCQkJCTUwMSBTZWNvbmQgU3RyZWV0Ci0JCQkJU3VpdGUgNDEwCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQjcgICAoaGV4KQkJS25vdmF0aXZlLCBJbmMuCi0wMDBFQjcgICAgIChiYXNlIDE2KQkJS25vdmF0aXZlLCBJbmMuCi0JCQkJMTEyNDUgV2VzdCBCZXJuYXJkbyBDb3VydAotCQkJCVN1aXRlIDEwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQjggICAoaGV4KQkJSWlnYSBjby4sTHRkCi0wMDBFQjggICAgIChiYXNlIDE2KQkJSWlnYSBjby4sTHRkCi0JCQkJM0YgVEtCbGRnLiAzLTUtMiBTb3Rva2FuZGEKLQkJCQlDaGl5b2RhLUt1IFRva3lvIDEwMS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMEUtQjkgICAoaGV4KQkJSEFTSElNT1RPIEVsZWN0cm9uaWNzIEluZHVzdHJ5IENvLixMdGQuCi0wMDBFQjkgICAgIChiYXNlIDE2KQkJSEFTSElNT1RPIEVsZWN0cm9uaWNzIEluZHVzdHJ5IENvLixMdGQuCi0JCQkJMzg2Ni0xMiBUYWthc3UtY2hvCi0JCQkJTWF0c3VzYWthIE1pZSA1MTUtMDEwNAotCQkJCUpBUEFOCi0KLTAwLTBFLUJBICAgKGhleCkJCUhBTk1JIFNFTUlDT05EVUNUT1IgQ08uLCBMVEQuCi0wMDBFQkEgICAgIChiYXNlIDE2KQkJSEFOTUkgU0VNSUNPTkRVQ1RPUiBDTy4sIExURC4KLQkJCQkjNTMyLTIsIEdhandhLURvbmcsIFNlby1LdSwKLQkJCQlJbmNoZW9uICA0MDQgMjUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLUJCICAgKGhleCkJCUV2ZXJiZWUgTmV0d29ya3MKLTAwMEVCQiAgICAgKGJhc2UgMTYpCQlFdmVyYmVlIE5ldHdvcmtzCi0JCQkJNDEsIEJvdWxldmFyZCBkZXMgQ2FwdWNpbmVzCi0JCQkJUGFyaXMgIDc1MDAyCi0JCQkJRlJBTkNFCi0KLTAwLTBFLUJDICAgKGhleCkJCVBhcmFnb24gRmlkZWxpdHkgR21iSAotMDAwRUJDICAgICAoYmFzZSAxNikJCVBhcmFnb24gRmlkZWxpdHkgR21iSAotCQkJCVNjaHdhZGVybfxobHN0cmFzc2UgNGEKLQkJCQlDYWRvbHpidXJnICA5MDU1NgotCQkJCUdFUk1BTlkKLQotMDAtMEUtQkQgICAoaGV4KQkJQnVyZGljaywgYSBRdWludG9uIENvbXBueQotMDAwRUJEICAgICAoYmFzZSAxNikJCUJ1cmRpY2ssIGEgUXVpbnRvbiBDb21wbnkKLQkJCQk1MDAgQnVyZGljayBQYXJrd2F5Ci0JCQkJRGVlcmZpZWxkIFdJIDUzNTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1CRSAgIChoZXgpCQlCJkIgRWxlY3Ryb25pY3MgTWFudWZhY3R1cmluZyBDby4KLTAwMEVCRSAgICAgKGJhc2UgMTYpCQlCJkIgRWxlY3Ryb25pY3MgTWFudWZhY3R1cmluZyBDby4KLQkJCQk3MDcgRGF5dG9uIFJvYWQKLQkJCQlQLk8uIEJveCAxMDQwCi0JCQkJT3R0YXdhIElsaW5vaXMgNjEzNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUJGICAgKGhleCkJCVJlbXNkYXEgTGltaXRlZAotMDAwRUJGICAgICAoYmFzZSAxNikJCVJlbXNkYXEgTGltaXRlZAotCQkJCVBhcmt3YXkKLQkJCQlEZWVzaWRlIEluZHVzdHJpYWwgUGFyawotCQkJCURlZXNpZGUgRmxpbnRzaGlyZSBDSDUgMk5MCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtQzAgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBFQzAgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMEUtQzEgICAoaGV4KQkJTVlOQUggVGVjaG5vbG9naWVzCi0wMDBFQzEgICAgIChiYXNlIDE2KQkJTVlOQUggVGVjaG5vbG9naWVzCi0JCQkJNTA0IFRyYWRlIENlbnRlciBCbHZkCi0JCQkJQ2hlc3RlcmZpZWxkIE1PIDYzMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1DMiAgIChoZXgpCQlMb3dyYW5jZSBFbGVjdHJvbmljcywgSW5jLgotMDAwRUMyICAgICAoYmFzZSAxNikJCUxvd3JhbmNlIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMTIwMDAgRS4gU2tlbGx5IERyaXZlCi0JCQkJVHVsc2EgT0sgNzQxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUMzICAgKGhleCkJCUxvZ2ljIENvbnRyb2xzLCBJbmMuCi0wMDBFQzMgICAgIChiYXNlIDE2KQkJTG9naWMgQ29udHJvbHMsIEluYy4KLQkJCQkzNTUgRGVudG9uIEF2ZW51ZQotCQkJCU5ldyBIeWRlIFBhcmsgTlkgMTEwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUM0ICAgKGhleCkJCUlza3JhIFRyYW5zbWlzc2lvbiBkLmQuCi0wMDBFQzQgICAgIChiYXNlIDE2KQkJSXNrcmEgVHJhbnNtaXNzaW9uIGQuZC4KLQkJCQlTdGVnbmUgMTEKLQkJCQlManVibGphbmEgIDEwMDAKLQkJCQlTTE9WRU5JQQotCi0wMC0wRS1DNSAgIChoZXgpCQlEaWdpdGFsIE11bHRpdG9vbHMgSW5jCi0wMDBFQzUgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBNdWx0aXRvb2xzIEluYwotCQkJCTkwMDUgTGVzbGllIFN0cmVldCAgVW5pdCAyMDUKLQkJCQlSaWNobW9uZCBIaWxsIE9udGFyaW8gTDRCIDFHNwotCQkJCUNBTkFEQQotCi0wMC0wRS1DNiAgIChoZXgpCQlBU0lYIEVMRUNUUk9OSUNTIENPUlAuCi0wMDBFQzYgICAgIChiYXNlIDE2KQkJQVNJWCBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTRGLCBOTy44LCBIU0lOIEFOTiBSRC4sCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUkssCi0JCQkJSFNJTkNIVSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1DNyAgIChoZXgpCQlNb3Rvcm9sYSBLb3JlYQotMDAwRUM3ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIEtvcmVhCi0JCQkJSGlicmFuZCBCL0QgMTdGIFNXIFRlYW0gTW90b3JvbGEgS29yZWEKLQkJCQlZYW5namFlZG9uZyBTZW9jaG8gCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLUM4ICAgKGhleCkJCVpvcmFuIENvcnBvcmF0aW9uCi0wMDBFQzggICAgIChiYXNlIDE2KQkJWm9yYW4gQ29ycG9yYXRpb24KLQkJCQkxMzkwIEtpZmVyIFJkLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQzkgICAoaGV4KQkJWU9LTyBUZWNobm9sb2d5IENvcnAuCi0wMDBFQzkgICAgIChiYXNlIDE2KQkJWU9LTyBUZWNobm9sb2d5IENvcnAuCi0JCQkJNkYsIE5vLjEwLCBMYW5lMTYsIFNlYzIsIFN6ZS1DaHVhbiBSZC4sIFBhbi0KLQkJCQlDaGlhbyBDaXR5LAotCQkJCVRhaXBlaSAgODg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1DQSAgIChoZXgpCQlXVFNTIEluYwotMDAwRUNBICAgICAoYmFzZSAxNikJCVdUU1MgSW5jCi0JCQkJNTk5OSBBdmVuaWRhIEVuY2luYXMKLQkJCQlTdWl0ZSAxNTAKLQkJCQlDYXJsc2JhZCBDQSA5MjAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQ0IgICAoaGV4KQkJVmluZVN5cyBUZWNobm9sb2d5Ci0wMDBFQ0IgICAgIChiYXNlIDE2KQkJVmluZVN5cyBUZWNobm9sb2d5Ci0JCQkJMzM1MCBTY290dCBCbHZkLiBidWlsZGluZyAxNS0wMwotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1DQyAgIChoZXgpCQlUYWJsZWF1LCBMTEMKLTAwMEVDQyAgICAgKGJhc2UgMTYpCQlUYWJsZWF1LCBMTEMKLQkJCQlOOCBXMjIxOTUgSm9obnNvbiBEcml2ZSwgU3VpdGUgMTAwCi0JCQkJV2F1a2VzaGEgV0kgNTMxODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUNEICAgKGhleCkJCVNLT1YgQS9TCi0wMDBFQ0QgICAgIChiYXNlIDE2KQkJU0tPViBBL1MKLQkJCQlIZWRlbHVuZCA0Ci0JCQkJR2x5bmdvZXJlCi0JCQkJUm9zbGV2ICBESy03ODcwCi0JCQkJREVOTUFSSwotCi0wMC0wRS1DRSAgIChoZXgpCQlTLkkuVC5ULkkuIFMucC5BLgotMDAwRUNFICAgICAoYmFzZSAxNikJCVMuSS5ULlQuSS4gUy5wLkEuCi0JCQkJVmlhIENhZG9ybmEgNjkKLQkJCQlWaW1vZHJvbmUgTWlsYW4gSS0yMDA5MAotCQkJCUlUQUxZCi0KLTAwLTBFLUNGICAgKGhleCkJCVBST0ZJQlVTIE51dHplcm9yZ2FuaXNhdGlvbiBlLlYuCi0wMDBFQ0YgICAgIChiYXNlIDE2KQkJUFJPRklCVVMgTnV0emVyb3JnYW5pc2F0aW9uIGUuVi4KLQkJCQlIYWlkLXVuZC1OZXUtU3RyYXNzZSA3Ci0JCQkJS2FybHNydWhlIEJhZGVuLVf8cnR0ZW1iZXJnIDc2MTMxCi0JCQkJR0VSTUFOWQotCi0wMC0wRS1EMCAgIChoZXgpCQlQcml2YXJpcywgSW5jLgotMDAwRUQwICAgICAoYmFzZSAxNikJCVByaXZhcmlzLCBJbmMuCi0JCQkJNjUwIFBldGVyIEplZmZlcnNvbiBQa3d5LCBTdGUgMzMwCi0JCQkJQ2hhcmxvdHRlc3ZpbGxlIFZpcmdpbmlhIDIyOTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1EMSAgIChoZXgpCQlPc2FrYSBNaWNybyBDb21wdXRlci4KLTAwMEVEMSAgICAgKGJhc2UgMTYpCQlPc2FrYSBNaWNybyBDb21wdXRlci4KLQkJCQlJc29ub2thbWljeW8gMy0xMS03Ci0JCQkJS2lzaGl3YWRhIE9zYWthIDU5NjAwMDEKLQkJCQlKQVBBTgotCi0wMC0wRS1EMiAgIChoZXgpCQlGaWx0cm9uaWMgcGxjCi0wMDBFRDIgICAgIChiYXNlIDE2KQkJRmlsdHJvbmljIHBsYwotCQkJCVRoZSBXYXRlcmZyb250Ci0JCQkJU2FsdHMgTWlsbCBSZAotCQkJCVNhbHRhaXJlIFcgWW9ya3MgQkQxOCAzVFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS1EMyAgIChoZXgpCQlFcGljZW50ZXIsIEluYy4KLTAwMEVEMyAgICAgKGJhc2UgMTYpCQlFcGljZW50ZXIsIEluYy4KLQkJCQkyMTEgQiBDYWxsZSBQaW50b3Jlc2NvCi0JCQkJU2FuIENsZW1lbnRlIENBIDkyNjcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1ENCAgIChoZXgpCQlDUkVTSVRUIElORFVTVFJJRQotMDAwRUQ0ICAgICAoYmFzZSAxNikJCUNSRVNJVFQgSU5EVVNUUklFCi0JCQkJMTIgcnVlIGRlIEJsb2lzCi0JCQkJT3JsZWFucyBCUCA2NzQ0IDQ1MDY3ICBjZWRleAotCQkJCUZSQU5DRQotCi0wMC0wRS1ENSAgIChoZXgpCQlDT1BBTiBTeXN0ZW1zIEluYy4KLTAwMEVENSAgICAgKGJhc2UgMTYpCQlDT1BBTiBTeXN0ZW1zIEluYy4KLQkJCQkyNjA1IFRyYWRlIENlbnRyZSBBdmUuCi0JCQkJU3VpdGUgRAotCQkJCUxvbmdtb250IENPIDgwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1ENiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBFRDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1ENyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBFRDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1EOCAgIChoZXgpCQlBa3Rpbm8sIEluYy4KLTAwMEVEOCAgICAgKGJhc2UgMTYpCQlBa3Rpbm8sIEluYy4KLQkJCQkxODU1MSBWb24gS2FybWFuIEF2ZW51ZQotCQkJCVN1aXRlIDIwMQotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtRDkgICAoaGV4KQkJQWtzeXMsIEx0ZC4KLTAwMEVEOSAgICAgKGJhc2UgMTYpCQlBa3N5cywgTHRkLgotCQkJCTIgTWFycmlvdHQgRHJpdmUKLQkJCQlMaW5jb2xuc2hpcmUgSUwgNjAwNjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLURBICAgKGhleCkJCUMtVEVDSCBVTklURUQgQ09SUC4KLTAwMEVEQSAgICAgKGJhc2UgMTYpCQlDLVRFQ0ggVU5JVEVEIENPUlAuCi0JCQkJNUYsIE5vIDY2NSwgQ0hVTkcgQ0hFTiBSRC4KLQkJCQlIU0lOIENIVUFORyBDSVRUICBvZiBUQUlQRUkgSFNJRU4gIDI0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtREIgICAoaGV4KQkJWGlOQ09NIENvcnAuCi0wMDBFREIgICAgIChiYXNlIDE2KQkJWGlOQ09NIENvcnAuCi0JCQkJMjg0MCBJbmR1c3RyaWFsIEF2ZS4KLQkJCQlIdWJiYXJkIE9SIDk3MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1EQyAgIChoZXgpCQlUZWxsaW9uIElOQy4KLTAwMEVEQyAgICAgKGJhc2UgMTYpCQlUZWxsaW9uIElOQy4KLQkJCQk1dGggRmwuIEJPTkEgVmVudHVyZSBUb3duCi0JCQkJMTU4Ni0xIFNlb2NobyAzLWRvbmcsIFNlb2Noby1ndQotCQkJCVNlb3VsIFNlb2Noby1ndS4gMTM3LTcxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS1ERCAgIChoZXgpCQlTSFVSRSBJTkNPUlBPUkFURUQKLTAwMEVERCAgICAgKGJhc2UgMTYpCQlTSFVSRSBJTkNPUlBPUkFURUQKLQkJCQk1ODAwIFcuIFRPVUhZIEFWRS4KLQkJCQlOSUxFUyBJTCA2MDcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtREUgICAoaGV4KQkJUkVNRUMsIEluYy4KLTAwMEVERSAgICAgKGJhc2UgMTYpCQlSRU1FQywgSW5jLgotCQkJCTIxNDQgRnJhbmtsaW4gRHJpdmUgTkUKLQkJCQlQYWxtIEJheSBGbG9yaWRhIDMyOTA1LTQwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLURGICAgKGhleCkJCVBMWCBUZWNobm9sb2d5Ci0wMDBFREYgICAgIChiYXNlIDE2KQkJUExYIFRlY2hub2xvZ3kKLQkJCQk4NzAgTWF1ZGUgQXZlLiwKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUUwICAgKGhleCkJCU1jaGFyZ2UKLTAwMEVFMCAgICAgKGJhc2UgMTYpCQlNY2hhcmdlCi0JCQkJRmlyc3RlYyBCbGRnLC4gMTUtNCBZb3VpZG8tRG9uZwotCQkJCVlvdW5nZGV1bmdwby1HdSwKLQkJCQlzZW91bCBZb3VpZG8gMTUwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS1FMSAgIChoZXgpCQlFeHRyZW1lU3BlZWQgSW5jLgotMDAwRUUxICAgICAoYmFzZSAxNikJCUV4dHJlbWVTcGVlZCBJbmMuCi0JCQkJUE8gQm94IDYwMAotCQkJCTQ2MzQtNDZ0aCBTdHJlZXQgU3VpdGUgMjAxCi0JCQkJTWFubnZpbGxlIEFsYmVydGEgVDBCIDJXMAotCQkJCUNBTkFEQQotCi0wMC0wRS1FMiAgIChoZXgpCQlDdXN0b20gRW5naW5lZXJpbmcgUy5wLkEuCi0wMDBFRTIgICAgIChiYXNlIDE2KQkJQ3VzdG9tIEVuZ2luZWVyaW5nIFMucC5BLgotCQkJCVZpYSBCZXJldHR0aW5lIDIvYgotCQkJCUZvbnRldml2byBQYXJtYSA0MzAxMAotCQkJCUlUQUxZCi0KLTAwLTBFLUUzICAgKGhleCkJCUNoaXl1IFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwRUUzICAgICAoYmFzZSAxNikJCUNoaXl1IFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLiAyOCwgUmVuYWkgUm9hZCwgQ2hpYXlpLCA2MDAKLQkJCQlDaGlheWkgIDYwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtRTQgICAoaGV4KQkJQk9FIFRFQ0hOT0xPR1kgR1JPVVAgQ08uLExURAotMDAwRUU0ICAgICAoYmFzZSAxNikJCUJPRSBURUNITk9MT0dZIEdST1VQIENPLixMVEQKLQkJCQlOby4xMCBKaXV4aWFucWlhbyBSb2FkLENoYW95YW5nIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDAxNgotCQkJCUNISU5BCi0KLTAwLTBFLUU1ICAgKGhleCkJCWJpdFdhbGxldCwgSW5jLgotMDAwRUU1ICAgICAoYmFzZSAxNikJCWJpdFdhbGxldCwgSW5jLgotCQkJCUdhdGUgQ2l0eSBPaHNha2kgV2VzdCBUb3dlciAxOEYsIDEtMTEtMSBPc2FraSwgU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gIDE0MTAwMzIKLQkJCQlKQVBBTgotCi0wMC0wRS1FNiAgIChoZXgpCQlBZGltb3MgU3lzdGVtcyBMVEQKLTAwMEVFNiAgICAgKGJhc2UgMTYpCQlBZGltb3MgU3lzdGVtcyBMVEQKLQkJCQkxNyBBdGlyZXktWWVkYSBTdHJlZXQKLQkJCQlLZmFyLVNhYmEgIDQ0NjQzCi0JCQkJSVNSQUVMCi0KLTAwLTBFLUU3ICAgKGhleCkJCUFBQyBFTEVDVFJPTklDUyBDT1JQLgotMDAwRUU3ICAgICAoYmFzZSAxNikJCUFBQyBFTEVDVFJPTklDUyBDT1JQLgotCQkJCUZMT09SIDcsU0lYVEggQlVJTERJTkcgT0YgTkFJQU5ZT1UgVE5BTiBJTkRVU1RSSUFMIEFSRUEsTkFOU0hBTiBESVNUUklDVAotCQkJCVNIRU5aSEVOIFBST1ZJTkNFIEdVQU5HRE9ORyA1MTgwNTQKLQkJCQlDSElOQQotCi0wMC0wRS1FOCAgIChoZXgpCQl6aW9uY29tCi0wMDBFRTggICAgIChiYXNlIDE2KQkJemlvbmNvbQotCQkJCVdlc3Qgd2luZyA1L0YgLiwgQmxvY2sgMSwgR2FvWGluIFNvdXRoIFJpbmcgUmQvS2VqaSBTb3V0aCBSZCwKLQkJCQlWaXNpb24oU2hlblpoZW4pQnVzaW5lc3MgUGFyaywgU2hlbnpoZW4gSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTBFLUU5ICAgKGhleCkJCVdheVRlY2ggRGV2ZWxvcG1lbnQsIEluYy4KLTAwMEVFOSAgICAgKGJhc2UgMTYpCQlXYXlUZWNoIERldmVsb3BtZW50LCBJbmMuCi0JCQkJMTFGbG9vciwgMjUzIE1pbi1TaGVuZyBSb2FkCi0JCQkJSHNpbkNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1FQSAgIChoZXgpCQlTaGFkb25nIEx1bmVuZyBKaWNoZW5nIEVsZWN0cm9uaWNzLENvLixMdGQKLTAwMEVFQSAgICAgKGJhc2UgMTYpCQlTaGFkb25nIEx1bmVuZyBKaWNoZW5nIEVsZWN0cm9uaWNzLENvLixMdGQKLQkJCQlOby4xODgsZWFzdCxIdWF5dWFuIFJvYWQKLQkJCQlKaW5hbiBTaGFuZG9uZyAyNTAxMDAKLQkJCQlDSElOQQotCi0wMC0wRS1FQiAgIChoZXgpCQlTYW5kbWFydGluKHpob25nIHNoYW4pRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAwRUVCICAgICAoYmFzZSAxNikJCVNhbmRtYXJ0aW4oemhvbmcgc2hhbilFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJM3N0IEluZHVzdHJpYWwgQXJlYSxUYW4gWmhvdSwKLQkJCQlaaG9uZ3NoYW4gR3Vhbmdkb25nIDUyODQ2NwotCQkJCUNISU5BCi0KLTAwLTBFLUVDICAgKGhleCkJCU9yYmFuCi0wMDBFRUMgICAgIChiYXNlIDE2KQkJT3JiYW4KLQkJCQkxNTI1IEFsdmFyYWRvIFN0LgotCQkJCVNhbiBMZWFuZHJvIENBIDk0NTc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1FRCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAwRUVEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0wRS1FRSAgIChoZXgpCQlNdWNvIEluZHVzdHJpZSBCVgotMDAwRUVFICAgICAoYmFzZSAxNikJCU11Y28gSW5kdXN0cmllIEJWCi0JCQkJUGxlaW11aWRlbiAxMmUKLQkJCQlBbXN0ZXJkYW0gTkggMTA0NiBBRwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBFLUVGICAgKGhleCkJCVBSSVZBVEUKLTAwMEVFRiAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEUtRjAgICAoaGV4KQkJRmVzdG8gQUcgJiBDby4gS0cKLTAwMEVGMCAgICAgKGJhc2UgMTYpCQlGZXN0byBBRyAmIENvLiBLRwotCQkJCVJ1aXRlcnN0cmHfZSA4MgotCQkJCUVzc2xpbmdlbiAgNzM3MzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLUYxICAgKGhleCkJCUVaUVVFU1QgSU5DLgotMDAwRUYxICAgICAoYmFzZSAxNikJCUVaUVVFU1QgSU5DLgotCQkJCTIxMTMzIEUuIExBIFBBTE1BIEFWRS4KLQkJCQlZT1JCQSBMSU5EQSBDQSA5Mjg4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtRjIgICAoaGV4KQkJSW5maW5pY28gQ29ycG9yYXRpb24KLTAwMEVGMiAgICAgKGJhc2UgMTYpCQlJbmZpbmljbyBDb3Jwb3JhdGlvbgotCQkJCTRGLCBGLTEgQmxkZy4sIDEtMi0xMiwKLQkJCQlIYW1hbWF0c3VjaG8sIE1pdGFuby1rdQotCQkJCVRva3lvICAxMDUtMDAxMwotCQkJCUpBUEFOCi0KLTAwLTBFLUYzICAgKGhleCkJCVNtYXJ0aG9tZQotMDAwRUYzICAgICAoYmFzZSAxNikJCVNtYXJ0aG9tZQotCQkJCTE2NTQyIE1pbGxpa2FuIEF2ZS4KLQkJCQlJcnZpbmUgQ0EgOTI2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUY0ICAgKGhleCkJCUthc2RhIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkCi0wMDBFRjQgICAgIChiYXNlIDE2KQkJS2FzZGEgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkyL0YsQnVpbGRpbmcgMixCYWd1YSAyIHJvYWQsRnV0aWFuLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyBQcm92aW5jZSA1MTgwMjkKLQkJCQlDSElOQQotCi0wMC0wRS1GNSAgIChoZXgpCQlpUEFDIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBFRjUgICAgIChiYXNlIDE2KQkJaVBBQyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTZGLCBOby4gMzAsIFNoaW5nanVuZyBSb2FkLCBOZWlodQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1GNiAgIChoZXgpCQlFLVRFTiBJbmZvcm1hdGlvbiBTeXN0ZW1zIENvLiwgTHRkLgotMDAwRUY2ICAgICAoYmFzZSAxNikJCUUtVEVOIEluZm9ybWF0aW9uIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJTm8uIDI1NiwgWWFuZ2d1YW5nIFN0cmVldCwgTmVpaHUgQ2hpdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1GNyAgIChoZXgpCQlWdWxjYW4gUG9ydGFscyBJbmMKLTAwMEVGNyAgICAgKGJhc2UgMTYpCQlWdWxjYW4gUG9ydGFscyBJbmMKLQkJCQk1MDUgNXRoIEF2ZSBTb3V0aCwgU3VpdGUgOTAwCi0JCQkJU2VhdHRsZSBXQSA5ODEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtRjggICAoaGV4KQkJU0JDIEFTSQotMDAwRUY4ICAgICAoYmFzZSAxNikJCVNCQyBBU0kKLQkJCQlOZXR3b3JrICYgSW5mcmFzdHJ1Y3R1cmUgVGVjaG5pY2FsIFN1cHBvcnQKLQkJCQkxMDEwIE4gU2FpbnQgTWFyeXMKLQkJCQlTYW4gQW50b25pbyBUZXhhcyA3ODIxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtRjkgICAoaGV4KQkJUkVBIEVsZWt0cm9uaWsgR21iSAotMDAwRUY5ICAgICAoYmFzZSAxNikJCVJFQSBFbGVrdHJvbmlrIEdtYkgKLQkJCQlUZWljaHdpZXNlbnN0ci4gMQotCQkJCU11ZWhsdGFsIEhlc3NlbiA2NDM2NwotCQkJCUdFUk1BTlkKLQotMDAtMEUtRkEgICAoaGV4KQkJT3B0b3dheSBUZWNobm9sb2d5IEluY29ycG9yYXRpb24KLTAwMEVGQSAgICAgKGJhc2UgMTYpCQlPcHRvd2F5IFRlY2hub2xvZ3kgSW5jb3Jwb3JhdGlvbgotCQkJCU5vLiAzOCwgS3VhbmcgRnUgU291dGggUm9hZAotCQkJCUhzaW4gQ2h1IEluZHVzdHJpYWwgUGFyawotCQkJCUh1IEtvdSBIc2luIENodSAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLUZCICAgKGhleCkJCU1hY2V5IEVudGVycHJpc2VzCi0wMDBFRkIgICAgIChiYXNlIDE2KQkJTWFjZXkgRW50ZXJwcmlzZXMKLQkJCQlQLk8uIEJveCA3MjY3Ci0JCQkJVGVtcGUgQVogODUyODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUZDICAgKGhleCkJCUpUQUcgVGVjaG5vbG9naWVzIEIuVi4KLTAwMEVGQyAgICAgKGJhc2UgMTYpCQlKVEFHIFRlY2hub2xvZ2llcyBCLlYuCi0JCQkJQm9zY2hkaWprIDUwCi0JCQkJRWluZGhvdmVuIE5CIDU2MTIgQU4KLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRS1GRCAgIChoZXgpCQlGVUpJTk9OIENPUlBPUkFUSU9OCi0wMDBFRkQgICAgIChiYXNlIDE2KQkJRlVKSU5PTiBDT1JQT1JBVElPTgotCQkJCTEtMzI0IFVFVEFLRSwgS0lUQS1LVSwKLQkJCQlTQUlUQU1BIENJVFkgU0FJVEFNQSAzMzEtOTYyNAotCQkJCUpBUEFOCi0KLTAwLTBFLUZFICAgKGhleCkJCUVuZFJ1biBUZWNobm9sb2dpZXMgTExDCi0wMDBFRkUgICAgIChiYXNlIDE2KQkJRW5kUnVuIFRlY2hub2xvZ2llcyBMTEMKLQkJCQkyMjcwIE5vcnRocG9pbnQgUGFya3dheQotCQkJCVNhbnRhIFJvc2EgQ0EgOTU0MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUZGICAgKGhleCkJCU1lZ2Fzb2x1dGlvbixJbmMuCi0wMDBFRkYgICAgIChiYXNlIDE2KQkJTWVnYXNvbHV0aW9uLEluYy4KLQkJCQkyLTctMTAgU2hpdGF5YQotCQkJCVRhaXRvIFRPS1lPIDExMC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMEYtMDAgICAoaGV4KQkJTGVncmEgU3lzdGVtcywgSW5jLgotMDAwRjAwICAgICAoYmFzZSAxNikJCUxlZ3JhIFN5c3RlbXMsIEluYy4KLQkJCQkzIEJ1cmxpbmd0b24gV29vZHMgRHJpdmUKLQkJCQlCdXJsaW5ndG9uIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0wMSAgIChoZXgpCQlESUdJVEFMS1MgSU5DCi0wMDBGMDEgICAgIChiYXNlIDE2KQkJRElHSVRBTEtTIElOQwotCQkJCTE0IE1BUlNIQUxMIExBTkUKLQkJCQlXRVNUT04gQ1QgMDY4ODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTAyICAgKGhleCkJCURpZ2ljdWJlIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMEYwMiAgICAgKGJhc2UgMTYpCQlEaWdpY3ViZSBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJOEYsTm8uIDUxLCBMYW5lICAzNSwgSmlodSBSZC4sCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTAzICAgKGhleCkJCUNPTSZDIENPLiwgTFRECi0wMDBGMDMgICAgIChiYXNlIDE2KQkJQ09NJkMgQ08uLCBMVEQKLQkJCQkyRiBXb29qaW4gQkxEIDE0NDUtMiBTZWNoby1Eb25nCi0JCQkJU2VjaG8tR3UKLQkJCQlTRU9VTCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi0wNCAgIChoZXgpCQljaW0tdXNhIGluYwotMDAwRjA0ICAgICAoYmFzZSAxNikJCWNpbS11c2EgaW5jCi0JCQkJMTA4MTMgbncgMzB0aCBzdHJlZXQKLQkJCQltaWFtaSBmbG9yaWRhIDMzMTcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0wNSAgIChoZXgpCQkzQiBTWVNURU0gSU5DLgotMDAwRjA1ICAgICAoYmFzZSAxNikJCTNCIFNZU1RFTSBJTkMuCi0JCQkJMTcyNywgU0FOS1lVSzItRE9ORywgQlVLLUdVCi0JCQkJREFFR1UgIDcwMi04NDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtMDYgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBGMDYgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMEYtMDcgICAoaGV4KQkJTWFuZ3JvdmUgU3lzdGVtcywgSW5jLgotMDAwRjA3ICAgICAoYmFzZSAxNikJCU1hbmdyb3ZlIFN5c3RlbXMsIEluYy4KLQkJCQkxMCBGYWlyZmllbGQgQmx2ZC4KLQkJCQlXYWxsaW5nZm9yZCBDVCAwNjQ5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMDggICAoaGV4KQkJSW5kYWdvbiBPeQotMDAwRjA4ICAgICAoYmFzZSAxNikJCUluZGFnb24gT3kKLQkJCQlOdWlqYW1pZXN0ZW50aWUgNSBBCi0JCQkJSGVsc2lua2kgLSAwMDQwMAotCQkJCUZJTkxBTkQKLQotMDAtMEYtMDkgICAoaGV4KQkJUFJJVkFURQotMDAwRjA5ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wRi0wQSAgIChoZXgpCQlDbGVhciBFZGdlIE5ldHdvcmtzCi0wMDBGMEEgICAgIChiYXNlIDE2KQkJQ2xlYXIgRWRnZSBOZXR3b3JrcwotCQkJCTExMjUwIEVsIENhbWlubyBSZWFsCi0JCQkJU2FuIERpZWdvIENBIDkyMTMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0wQiAgIChoZXgpCQlLZW50aW1hIFRlY2hub2xvZ2llcyBBQgotMDAwRjBCICAgICAoYmFzZSAxNikJCUtlbnRpbWEgVGVjaG5vbG9naWVzIEFCCi0JCQkJQm94IDE3NAotCQkJCUthc3RhbmplduRnZW4gMgotCQkJCVN0YWZmYW5zdG9ycCBTa+VuZSAyNDUgNDQKLQkJCQlTV0VERU4KLQotMDAtMEYtMEMgICAoaGV4KQkJU1lOQ0hST05JQyBFTkdJTkVFUklORwotMDAwRjBDICAgICAoYmFzZSAxNikJCVNZTkNIUk9OSUMgRU5HSU5FRVJJTkcKLQkJCQkyNSBDQVAgREFSTkVUQUwKLQkJCQlEQVJORVRBTCBGUkFOQ0UgNzYxNjAKLQkJCQlGUkFOQ0UKLQotMDAtMEYtMEQgICAoaGV4KQkJSHVudCBFbGVjdHJvbmljIENvLiwgTHRkLgotMDAwRjBEICAgICAoYmFzZSAxNikJCUh1bnQgRWxlY3Ryb25pYyBDby4sIEx0ZC4KLQkJCQk2RkksIE5PLiA1Ny01OSwgSml1biBIIFNpZW4gUmQuLCBDaGkgVHUgRGlzdHJpY3QKLQkJCQlLZWVsdW5nIFRhaXdhbiAyMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTBFICAgKGhleCkJCVdhdmVTcGxpdHRlciBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEYwRSAgICAgKGJhc2UgMTYpCQlXYXZlU3BsaXR0ZXIgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjI0OCBOb3J0aCBGaXJzdCBTdHJlZXQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMEYgICAoaGV4KQkJUmVhbCBJRCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwRjBGICAgICAoYmFzZSAxNikJCVJlYWwgSUQgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk5RiBIYW5taSBCL0QgMTkyLTE5Ci0JCQkJTm9uaHllb24tRG9uZwotCQkJCUdhbmduYW0tR3UgU2VvdWwgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi0xMCAgIChoZXgpCQlSRE0gQ29ycG9yYXRpb24KLTAwMEYxMCAgICAgKGJhc2UgMTYpCQlSRE0gQ29ycG9yYXRpb24KLQkJCQk2MDggV2ViZXIgU3QuIE4KLQkJCQlXYXRlcmxvbyBPTiBOMlYgMUs0Ci0JCQkJQ0FOQURBCi0KLTAwLTBGLTExICAgKGhleCkJCVByb2RyaXZlIEIuVi4KLTAwMEYxMSAgICAgKGJhc2UgMTYpCQlQcm9kcml2ZSBCLlYuCi0JCQkJUC5PLiAyODAzMAotCQkJCUVpbmRob3ZlbiAgNTYwMiBKQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBGLTEyICAgKGhleCkJCVBhbmFzb25pYyBFdXJvcGUgTHRkLgotMDAwRjEyICAgICAoYmFzZSAxNikJCVBhbmFzb25pYyBFdXJvcGUgTHRkLgotCQkJCUhlc2ViZXJnd2VnIDQ5LTUxCi0JCQkJUGVpbmUgIEQtMzEyMjgKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLTEzICAgKGhleCkJCU5pc2NhIGNvcnBvcmF0aW9uCi0wMDBGMTMgICAgIChiYXNlIDE2KQkJTmlzY2EgY29ycG9yYXRpb24KLQkJCQk0MzAtMQotCQkJCUtvYmF5YXNoaQotCQkJCU1hc3Voby1DaG8gWWFtYW5hc2hpLUtlbiA0MDAtMDU5MwotCQkJCUpBUEFOCi0KLTAwLTBGLTE0ICAgKGhleCkJCU1pbmRyYXkgQ28uLCBMdGQuCi0wMDBGMTQgICAgIChiYXNlIDE2KQkJTWluZHJheSBDby4sIEx0ZC4KLQkJCQlNaW5kcmF5IEJ1aWxkaW5nLCBLZWppIDEydGggUm9hZCBTb3V0aAotCQkJCUhpZ2gtdGVjaCBJbmR1c3RyaWFsIFBhcmssIE5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMEYtMTUgICAoaGV4KQkJS2phZXJ1bGZmMSBBL1MKLTAwMEYxNSAgICAgKGJhc2UgMTYpCQlLamFlcnVsZmYxIEEvUwotCQkJCUMuRi4gVGlldGdlbnMgQm91bGV2YXJkIDE5Ci0JCQkJT2RlbnNlIFPYIEZ5biA1MjIwCi0JCQkJREVOTUFSSwotCi0wMC0wRi0xNiAgIChoZXgpCQlKQVkgSE9XIFRFQ0hOT0xPR1kgQ08uLAotMDAwRjE2ICAgICAoYmFzZSAxNikJCUpBWSBIT1cgVEVDSE5PTE9HWSBDTy4sCi0JCQkJTk8uNDg2LFNFQy4gMSwgV0FOIFNIT1UgUkQuLCBLVUVJCi0JCQkJU0hBTiBIU0lBTkcsIFRBT1lVQU4gSFNJRU4KLQkJCQlUQU9ZVUFOIEhTSUVOICAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTE3ICAgKGhleCkJCUluc3RhIEVsZWt0cm8gR21iSAotMDAwRjE3ICAgICAoYmFzZSAxNikJCUluc3RhIEVsZWt0cm8gR21iSAotCQkJCVRhbHN0cmFzc2UgMTA0Ci0JCQkJTHVlZGVuc2NoZWlkIE5SVyBELTU4NTE1Ci0JCQkJR0VSTUFOWQotCi0wMC0wRi0xOCAgIChoZXgpCQlJbmR1c3RyaWFsIENvbnRyb2wgU3lzdGVtcwotMDAwRjE4ICAgICAoYmFzZSAxNikJCUluZHVzdHJpYWwgQ29udHJvbCBTeXN0ZW1zCi0JCQkJSG91dHNjaGVsZiAxCi0JCQkJSGFyZGlueHZlbGQgWnVpZC1Ib2xsYW5kIE5MLTMzNzEgS0IKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRi0xOSAgIChoZXgpCQlCb3N0b24gU2NpZW50aWZpYwotMDAwRjE5ICAgICAoYmFzZSAxNikJCUJvc3RvbiBTY2llbnRpZmljCi0JCQkJNDEwMCBIYW1saW5lIEF2ZSBOLgotCQkJCVN0LiBQYXVsIE1OIDU1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0xQSAgIChoZXgpCQlHYW1pbmcgU3VwcG9ydCBCLlYuCi0wMDBGMUEgICAgIChiYXNlIDE2KQkJR2FtaW5nIFN1cHBvcnQgQi5WLgotCQkJCUluZHVzdHJpZSB3ZWcgMjkKLQkJCQlSb3R0ZXJkYW0gMzA0NCBBUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBGLTFCICAgKGhleCkJCUVnbyBTeXN0ZW1zIEluYy4KLTAwMEYxQiAgICAgKGJhc2UgMTYpCQlFZ28gU3lzdGVtcyBJbmMuCi0JCQkJMTIwNiBXb29saW0gZS1CaXogQ2VudGVyIElJCi0JCQkJMTYgWWFuZ3B5b25nZG9uZzNnYSwgWW91bmdkdW5ncG8tZ3UKLQkJCQlTZW91bCAgMTUwLTgzNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi0xQyAgIChoZXgpCQlEaWdpdEFsbCBXb3JsZCBDby4sIEx0ZAotMDAwRjFDICAgICAoYmFzZSAxNikJCURpZ2l0QWxsIFdvcmxkIENvLiwgTHRkCi0JCQkJU2VqaW4gQmxkIDJGLCA2ODkgaWx3b24yLWRvbmcsCi0JCQkJZ2FuZ25hbS1ndSBTZW91bCAxMzUtOTQ2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTFEICAgKGhleCkJCUNvc21vIFRlY2hzIENvLiwgTHRkLgotMDAwRjFEICAgICAoYmFzZSAxNikJCUNvc21vIFRlY2hzIENvLiwgTHRkLgotCQkJCTItNi0xLCBNYXRzdWUKLQkJCQlBdHN1Z2ktc2hpIEthbmFnYXdhLWtlbiAyNDMtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTBGLTFFICAgKGhleCkJCUNoZW5nZHUgS1QgRWxlY3RyaWMgQ28ub2YgSGlnaCAmIE5ldyBUZWNobm9sb2d5Ci0wMDBGMUUgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSBLVCBFbGVjdHJpYyBDby5vZiBIaWdoICYgTmV3IFRlY2hub2xvZ3kKLQkJCQlOby4yIEdhb3BlbmcgRG9uZyBSb2FkLEhpZ2ggJiBOZXcgRGV2ZWxvcG1lbnQgWm9uZSwKLQkJCQlOby45IFd1a2UgRWFzdCBOby4zIFJvYWQsV3Vob3UgWm9uZSwKLQkJCQlDaGVuZ2R1IFNpY2h1YW4gNjEwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMEYtMUYgICAoaGV4KQkJV1cgUENCQSBUZXN0Ci0wMDBGMUYgICAgIChiYXNlIDE2KQkJV1cgUENCQSBUZXN0Ci0JCQkJT25lIERlbGwgV2F5Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMjAgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDBGMjAgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkgU291dGgKLQkJCQlNUzA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTIxICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YSwgSW5jCi0wMDBGMjEgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBJbmMKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJUE8gQm94IDQ2NTQ0NwotCQkJCUxhd3JlbmNldmlsbGUgR2EgMzAwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTIyICAgKGhleCkJCUhlbGl1cywgSW5jLgotMDAwRjIyICAgICAoYmFzZSAxNikJCUhlbGl1cywgSW5jLgotCQkJCTMzMyBTb3V0aCA1MjAgV2VzdAotCQkJCVN1aXRlIDMzMAotCQkJCUxpbmRvbiBVVCA4NDA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMjMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRjIzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMjQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRjI0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMjUgICAoaGV4KQkJQWltVmFsbGV5IEIuVi4KLTAwMEYyNSAgICAgKGJhc2UgMTYpCQlBaW1WYWxsZXkgQi5WLgotCQkJCVV0cmVjaHRzZXdlZyAzOCwKLQkJCQlIaWx2ZXJzdW0gTkggMTIyMyBUVgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBGLTI2ICAgKGhleCkJCVdvcmxkQWNjeHggIExMQwotMDAwRjI2ICAgICAoYmFzZSAxNikJCVdvcmxkQWNjeHggIExMQwotCQkJCTQwMzUgVGFtcGEgUmQuCi0JCQkJU3VpdGUgNjAwMAotCQkJCU9sZHNtYXIgRkwgMzQ2NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTI3ICAgKGhleCkJCVRFQUwgRWxlY3Ryb25pY3MsIEluYy4KLTAwMEYyNyAgICAgKGJhc2UgMTYpCQlURUFMIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMTAzNTAgU29ycmVudG8gVmFsbGV5IFJvYWQKLQkJCQlTYW4gRGllZ28gQ2FsaWZvcm5pYSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMjggICAoaGV4KQkJSXRyb25peCBDb3Jwb3JhdGlvbgotMDAwRjI4ICAgICAoYmFzZSAxNikJCUl0cm9uaXggQ29ycG9yYXRpb24KLQkJCQlTb3V0aCA4MDEgU3RldmVucyBTdHJlZXQKLQkJCQlTcG9rYW5lIFdBIDk5MjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yOSAgIChoZXgpCQlBdWdtZW50aXggQ29ycG9yYXRpb24KLTAwMEYyOSAgICAgKGJhc2UgMTYpCQlBdWdtZW50aXggQ29ycG9yYXRpb24KLQkJCQk0MDMwIFcgQnJha2VyIExuCi0JCQkJQnVpbGRpbmcgMiwgU3VpdGUgMTAwCi0JCQkJQXVzdGluIFRleGFzIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yQSAgIChoZXgpCQlDYWJsZXdhcmUgRWxlY3Ryb25pY3MKLTAwMEYyQSAgICAgKGJhc2UgMTYpCQlDYWJsZXdhcmUgRWxlY3Ryb25pY3MKLQkJCQkxNzAyIFdlc3Rlcm4gQXZlLgotCQkJCVN1aXRlIEcKLQkJCQlMYXMgVmVnYXMgTmV2YWRhIDg5MTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yQiAgIChoZXgpCQlHUkVFTkJFTEwgU1lTVEVNUwotMDAwRjJCICAgICAoYmFzZSAxNikJCUdSRUVOQkVMTCBTWVNURU1TCi0JCQkJMlRIIEZsb29yLCBEb29uYW0gQmxkZywgMjM2LTExIE5vbmh5dW4tRG9uZywgS2FuZ25hbS1LdQotCQkJCVNlb3VsICAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTJDICAgKGhleCkJCVVwbG9naXgsIEluYy4KLTAwMEYyQyAgICAgKGJhc2UgMTYpCQlVcGxvZ2l4LCBJbmMuCi0JCQkJQmxkZyAxLCBTdWl0ZSAyMzUKLQkJCQk4NjAxIFJSIDIyMjIKLQkJCQlBdXN0aW4gVFggNzg3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTJEICAgKGhleCkJCUNIVU5HLUhTSU4gRUxFQ1RSSUMgJiBNQUNISU5FUlkgTUZHLkNPUlAuCi0wMDBGMkQgICAgIChiYXNlIDE2KQkJQ0hVTkctSFNJTiBFTEVDVFJJQyAmIE1BQ0hJTkVSWSBNRkcuQ09SUC4KLQkJCQlOTy4gMjUsIFdlbi1UZSBSZC4sIExvLVNoYW4gVmlsbGFnZQotCQkJCUt3ZWkgU2hhbiBIc2lhbmcgVGFveXVhbiBIc2llbiAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTJFICAgKGhleCkJCU1lZ2Fwb3dlciBJbnRlcm5hdGlvbmFsIENvcnAuCi0wMDBGMkUgICAgIChiYXNlIDE2KQkJTWVnYXBvd2VyIEludGVybmF0aW9uYWwgQ29ycC4KLQkJCQlSbS4gNDAzLCBObyAyNCAsIFd1LUNodWFuIDJuZCBSZC4sCi0JCQkJSHNpbi1DaHVhbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDI0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtMkYgICAoaGV4KQkJVy1MSU5YIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDBGMkYgICAgIChiYXNlIDE2KQkJVy1MSU5YIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJIDJGLEVMTEVOIEwuIFNLRUxUT04gQlVJTERJTkcsRklTSEVSIExBTkUgUk9BRAotCQkJCVRPUlRPTEEgIAotCQkJCVZJUkdJTiBJU0xBTkRTLCBCUklUSVNICi0KLTAwLTBGLTMwICAgKGhleCkJCVJhemEgTWljcm9lbGVjdHJvbmljcyBJbmMKLTAwMEYzMCAgICAgKGJhc2UgMTYpCQlSYXphIE1pY3JvZWxlY3Ryb25pY3MgSW5jCi0JCQkJMzA4MCBOb3J0aCBGaXJzdCBTdHJlZXQKLQkJCQk1dGggRmxvb3IKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMzEgICAoaGV4KQkJQWxsaWVkIFZpc2lvbiBUZWNobm9sb2dpZXMgQ2FuYWRhIEluYwotMDAwRjMxICAgICAoYmFzZSAxNikJCUFsbGllZCBWaXNpb24gVGVjaG5vbG9naWVzIENhbmFkYSBJbmMKLQkJCQkxMDEtMzc1MCBOb3J0aCBGcmFzZXIgV2F5Ci0JCQkJQnVybmFieSBCQyBWNUogNUU5Ci0JCQkJQ0FOQURBCi0KLTAwLTBGLTMyICAgKGhleCkJCUx1VG9uZyBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwRjMyICAgICAoYmFzZSAxNikJCUx1VG9uZyBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTEwNiwgTGlhbmdYaSBSb2FkCi0JCQkJV3VYaSBKaWFuZ1N1IDIxNDA2MwotCQkJCUNISU5BCi0KLTAwLTBGLTMzICAgKGhleCkJCURVQUxpIEluYy4KLTAwMEYzMyAgICAgKGJhc2UgMTYpCQlEVUFMaSBJbmMuCi0JCQkJIzUwNSBTYW1zdW5nIFRlY2hubyBQYXJrIEJsZGcgNDcxCi0JCQkJV29uY2hlb24tZG9uZywgWW91bmd0b25nLWd1Ci0JCQkJU3V3b24gR3llb25nZ2ktZG8gNDQyLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi0zNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBGMzQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0zNSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBGMzUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0zNiAgIChoZXgpCQlBY2N1cmF0ZSBUZWNoaG5vbG9naWVzLCBJbmMuCi0wMDBGMzYgICAgIChiYXNlIDE2KQkJQWNjdXJhdGUgVGVjaGhub2xvZ2llcywgSW5jLgotCQkJCTQ3MTk5IENhcnRpZXIgRHIuCi0JCQkJV2l4b20gTWljaGlnYW4gNDgzOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTM3ICAgKGhleCkJCVhhbWJhbGEgSW5jb3Jwb3JhdGVkCi0wMDBGMzcgICAgIChiYXNlIDE2KQkJWGFtYmFsYSBJbmNvcnBvcmF0ZWQKLQkJCQkyNjc0IE4uIDFzdCBTdHJlZXQKLQkJCQlTdWl0ZSAyMTUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMzggICAoaGV4KQkJTmV0c3RhcgotMDAwRjM4ICAgICAoYmFzZSAxNikJCU5ldHN0YXIKLQkJCQkzRixOby4zNDcsIFlhbmcta3VhbmcgU3QuLE5laS1IdSBEaXMuLAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi0zOSAgIChoZXgpCQlJUklTIFNFTlNPUlMKLTAwMEYzOSAgICAgKGJhc2UgMTYpCQlJUklTIFNFTlNPUlMKLQkJCQlaQSBsZXMgVWZlcm5ldHMKLQkJCQlUT1VMQVVEIEFyZGVjaGUgRjA3MTMwCi0JCQkJRlJBTkNFCi0KLTAwLTBGLTNBICAgKGhleCkJCUhJU0hBUlAKLTAwMEYzQSAgICAgKGJhc2UgMTYpCQlISVNIQVJQCi0JCQkJTk8uNjczLENIQU5HIEhTSU5HIFJPQUQgUEFURSBDSVRZLFRBT1lVQU4sCi0JCQkJVEFJUEVJICAzMzQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTNCICAgKGhleCkJCUZ1amkgU3lzdGVtIE1hY2hpbmVzIENvLiwgTHRkLgotMDAwRjNCICAgICAoYmFzZSAxNikJCUZ1amkgU3lzdGVtIE1hY2hpbmVzIENvLiwgTHRkLgotCQkJCTUtOC0xMAotCQkJCUhpYmFyaWdhb2thCi0JCQkJWmFtYS1TaGkgS2FuYWdhd2EtS2VuIDIyOC0wMDAzCi0JCQkJSkFQQU4KLQotMDAtMEYtM0MgICAoaGV4KQkJRW5kZWxlbyBMaW1pdGVkCi0wMDBGM0MgICAgIChiYXNlIDE2KQkJRW5kZWxlbyBMaW1pdGVkCi0JCQkJNzggQ2Fubm9uIFN0cmVldAotCQkJCUxvbmRvbiBFbmdsYW5kIEVDNE4gNk5RCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtM0QgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDBGM0QgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTm8uOCxMaS1zaGluZyBTZXZlbnRoIFJvYWQsU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmssSHNpbWNodSwKLQkJCQlIc2ltY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTNFICAgKGhleCkJCUNhcmRpb05ldCwgSW5jCi0wMDBGM0UgICAgIChiYXNlIDE2KQkJQ2FyZGlvTmV0LCBJbmMKLQkJCQkxMDEwIFNlY29uZCBBdmVudWUKLQkJCQlTdWl0ZSA3MDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTNGICAgKGhleCkJCUJpZyBCZWFyIE5ldHdvcmtzCi0wMDBGM0YgICAgIChiYXNlIDE2KQkJQmlnIEJlYXIgTmV0d29ya3MKLQkJCQkzNDUgUG90cmVybyBBdmUKLQkJCQlTdW5ueSBWYWxlIENhbGlmb3JuaWEgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTQwICAgKGhleCkJCU9wdGljYWwgSW50ZXJuZXR3b3JraW5nIEZvcnVtCi0wMDBGNDAgICAgIChiYXNlIDE2KQkJT3B0aWNhbCBJbnRlcm5ldHdvcmtpbmcgRm9ydW0KLQkJCQk0ODM3NyBGcmVtb250IEJsdmQKLQkJCQlTdGUgMTE3Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNDEgICAoaGV4KQkJWmlwaGVyIEx0ZAotMDAwRjQxICAgICAoYmFzZSAxNikJCVppcGhlciBMdGQKLQkJCQk3IEZhcmFkYXkgQnVpbGRpbmcKLQkJCQlOb3R0aW5naGFtIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgUGFyawotCQkJCU5vdHRpbmdoYW0gTm90dGluZ2hhbXNoaXJlIE5HNyAyUVAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRi00MiAgIChoZXgpCQlYYWx5byBTeXN0ZW1zCi0wMDBGNDIgICAgIChiYXNlIDE2KQkJWGFseW8gU3lzdGVtcwotCQkJCUdyZW5pZXIgOQotCQkJCUNvbW11Z255IFZEIDEyOTEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wRi00MyAgIChoZXgpCQlXYXNhYmkgU3lzdGVtcyBJbmMuCi0wMDBGNDMgICAgIChiYXNlIDE2KQkJV2FzYWJpIFN5c3RlbXMgSW5jLgotCQkJCTUwMCBFLiBNYWluIFN0cmVldAotCQkJCVN1aXRlIDE1MjAKLQkJCQlOb3Jmb2xrIFZBIDIzNTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi00NCAgIChoZXgpCQlUaXZlbGxhIEluYy4KLTAwMEY0NCAgICAgKGJhc2UgMTYpCQlUaXZlbGxhIEluYy4KLQkJCQk3OTUgTWFpbiBTdHJlZXQKLQkJCQlIYWxmIE1vb24gQmF5IENBIDk0MDE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi00NSAgIChoZXgpCQlTdHJldGNoLCBJbmMuCi0wMDBGNDUgICAgIChiYXNlIDE2KQkJU3RyZXRjaCwgSW5jLgotCQkJCTEzMjIgT3JsZWFucyBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNDYgICAoaGV4KQkJU0lOQVIgQUcKLTAwMEY0NiAgICAgKGJhc2UgMTYpCQlTSU5BUiBBRwotCQkJCVN0YWR0d2VnIDI0Ci0JCQkJRmV1ZXJ0aGFsZW4gWkggQ0gtODI0NQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBGLTQ3ICAgKGhleCkJCVJPQk9YIFNQQQotMDAwRjQ3ICAgICAoYmFzZSAxNikJCVJPQk9YIFNQQQotCQkJCXZpYSBTZW1waW9uZSA4MgotCQkJCUNhc3RlbGxldHRvIFMuVGljaW5vIE5PIDI4MDUzCi0JCQkJSVRBTFkKLQotMDAtMEYtNDggICAoaGV4KQkJUG9seXBpeCBJbmMuCi0wMDBGNDggICAgIChiYXNlIDE2KQkJUG9seXBpeCBJbmMuCi0JCQkJMUZsLCBTdW5nZG8gVmVudHVyZSBUb3dlciwgMTY1LTIgU2Ftc3VuZy1Eb25nLCBLYW5nbmFtLUt1Ci0JCQkJU2VvdWwgIDEzNS04ODEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtNDkgICAoaGV4KQkJTm9ydGhvdmVyIFNvbHV0aW9ucyBMaW1pdGVkCi0wMDBGNDkgICAgIChiYXNlIDE2KQkJTm9ydGhvdmVyIFNvbHV0aW9ucyBMaW1pdGVkCi0JCQkJSGVhdGggQ290dGFnZQotCQkJCUlsbGluZ3RvbiBSb2FkCi0JCQkJTGFybGluZyBOb3Jmb2xrIE5SMTYgMlJCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtNEEgICAoaGV4KQkJS3l1c2h1LWt5b2hhbiBjby4sbHRkCi0wMDBGNEEgICAgIChiYXNlIDE2KQkJS3l1c2h1LWt5b2hhbiBjby4sbHRkCi0JCQkJMi02LTMsS29nYW5lbWFjaGkKLQkJCQlLb2t1cmFraXRhLWt1Ci0JCQkJS2l0YWt5dXNodS1jaXR5IEZ1a3Vva2EgODAyLTAwNzEKLQkJCQlKQVBBTgotCi0wMC0wRi00QiAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMEY0QiAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQk5MDAgQ2hlbG1zZm9yZCBTdHJlZXQKLQkJCQlUb3dlciAxIEZsb29yIDIKLQkJCQlMb3dlbGwgTUEgMDE4NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTRDICAgKGhleCkJCUVsZXh0ZWNoIElOQwotMDAwRjRDICAgICAoYmFzZSAxNikJCUVsZXh0ZWNoIElOQwotCQkJCTU1NC0yLCBHYXNhbi1Eb25nLCBHdW1jaGVvbi1HdQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTREICAgKGhleCkJCVRhbGtTd2l0Y2gKLTAwMEY0RCAgICAgKGJhc2UgMTYpCQlUYWxrU3dpdGNoCi0JCQkJMTU0NSBDYXJsaW5nIEF2ZQotCQkJCVN1aXRlIDUxMAotCQkJCU90dGF3YSBPbnRhcmlvIEsxWiA4UDkKLQkJCQlDQU5BREEKLQotMDAtMEYtNEUgICAoaGV4KQkJQ2VsbGluawotMDAwRjRFICAgICAoYmFzZSAxNikJCUNlbGxpbmsKLQkJCQlDYXRoZXJpbmFsYWFuIDM3Ci0JCQkJUm90c2VsYWFyIFZsYWFtcyBCcmFiYW50IEItMzExMAotCQkJCUJFTEdJVU0KLQotMDAtMEYtNEYgICAoaGV4KQkJQ2FkbXVzIFRlY2hub2xvZ3kgTHRkCi0wMDBGNEYgICAgIChiYXNlIDE2KQkJQ2FkbXVzIFRlY2hub2xvZ3kgTHRkCi0JCQkJNjYgSGlsbHNpZGUgUmQKLQkJCQlHbGVuZmllbGQKLQkJCQlBdWNrbGFuZCAgMTMxMAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTBGLTUwICAgKGhleCkJCVN0cmVhbVNjYWxlIExpbWl0ZWQKLTAwMEY1MCAgICAgKGJhc2UgMTYpCQlTdHJlYW1TY2FsZSBMaW1pdGVkCi0JCQkJVGhlIENvdXJ0LCBBbGV4YW5kcmEgUGFyawotCQkJCVByZXNjb3QgUm9hZAotCQkJCVN0IEhlbGVucyAgV0ExMCAzVFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRi01MSAgIChoZXgpCQlBenVsIFN5c3RlbXMsIEluYy4KLTAwMEY1MSAgICAgKGJhc2UgMTYpCQlBenVsIFN5c3RlbXMsIEluYy4KLQkJCQkxNjAwIFBseW1vdXRoIFN0cmVldAotCQkJCU1vdW50YWluIFZpZXcgQ2FsaWZvcm5pYSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNTIgICAoaGV4KQkJWU9SSyBSZWZyaWdlcmF0aW9uLCBNYXJpbmUgJiBDb250cm9scwotMDAwRjUyICAgICAoYmFzZSAxNikJCVlPUksgUmVmcmlnZXJhdGlvbiwgTWFyaW5lICYgQ29udHJvbHMKLQkJCQlKZW5zIEp1dWxzdmVqIDI4Ci0JCQkJVmlieSBKIERLIDgzNjIKLQkJCQlERU5NQVJLCi0KLTAwLTBGLTUzICAgKGhleCkJCVNvbGFyZmxhcmUgQ29tbXVuaWNhdGlvbnMgSW5jCi0wMDBGNTMgICAgIChiYXNlIDE2KQkJU29sYXJmbGFyZSBDb21tdW5pY2F0aW9ucyBJbmMKLQkJCQk5NTAxIEplcm9uaW1vIFJvYWQKLQkJCQlTdWl0ZSAyNTAKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTU0ICAgKGhleCkJCUVudHJlbG9naWMgQ29ycG9yYXRpb24KLTAwMEY1NCAgICAgKGJhc2UgMTYpCQlFbnRyZWxvZ2ljIENvcnBvcmF0aW9uCi0JCQkJMzMgQm9zdG9uIFBvc3QgUmQuIFdlc3QuCi0JCQkJU3VpdGUgMTYwCi0JCQkJTWFybGJvcm91Z2ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTU1ICAgKGhleCkJCURhdGF3aXJlIENvbW11bmljYXRpb24gTmV0d29ya3MgSW5jLgotMDAwRjU1ICAgICAoYmFzZSAxNikJCURhdGF3aXJlIENvbW11bmljYXRpb24gTmV0d29ya3MgSW5jLgotCQkJCTEwIENhcmxzb24gQ291cnQsIFN1aXRlIDMwMAotCQkJCVRvcm9udG8gT250YXJpbyBNOVcgNkwyCi0JCQkJQ0FOQURBCi0KLTAwLTBGLTU2ICAgKGhleCkJCUNvbnRpbnV1bSBQaG90b25pY3MgSW5jCi0wMDBGNTYgICAgIChiYXNlIDE2KQkJQ29udGludXVtIFBob3RvbmljcyBJbmMKLQkJCQk1IEZvcnR1bmUgRHJpdmUKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTU3ICAgKGhleCkJCUNBQkxFTE9HSUMgQ28uLCBMdGQuCi0wMDBGNTcgICAgIChiYXNlIDE2KQkJQ0FCTEVMT0dJQyBDby4sIEx0ZC4KLQkJCQkzRi4sIEh3YWluIEJsZGcuLCAxNTU5LTEyIFNlb2NobyAzLWRvbmcsCi0JCQkJU2VjaG8tZ3UsCi0JCQkJU2VvdWwgIDEzNy04NzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtNTggICAoaGV4KQkJQWRkZXIgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDBGNTggICAgIChiYXNlIDE2KQkJQWRkZXIgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJVGVjaG5vbG9neSBIb3VzZQotCQkJCVRyYWZhbGdhciBXYXkKLQkJCQlCYXIgSGlsbCBDYW1icmlkZ2VzaGlyZSBDQjMgOFNRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtNTkgICAoaGV4KQkJUGhvbmFrIENvbW11bmljYXRpb25zIEFHCi0wMDBGNTkgICAgIChiYXNlIDE2KQkJUGhvbmFrIENvbW11bmljYXRpb25zIEFHCi0JCQkJTORuZ2dhc3NlIDE3Ci0JCQkJTXVydGVuIEZSIDMyODAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wRi01QSAgIChoZXgpCQlQZXJpYml0IE5ldHdvcmtzCi0wMDBGNUEgICAgIChiYXNlIDE2KQkJUGVyaWJpdCBOZXR3b3JrcwotCQkJCTI4NTUgQm93ZXJzIEF2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi01QiAgIChoZXgpCQlEZWx0YSBJbmZvcm1hdGlvbiBTeXN0ZW1zLCBJbmMuCi0wMDBGNUIgICAgIChiYXNlIDE2KQkJRGVsdGEgSW5mb3JtYXRpb24gU3lzdGVtcywgSW5jLgotCQkJCTMwMCBXZWxzaCBSb2FkLCBCbGRnLiAzCi0JCQkJSG9yc2hhbSBQQSAxOTA0NC0yMjczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi01QyAgIChoZXgpCQlEYXkgT25lIERpZ2l0YWwgTWVkaWEgTGltaXRlZAotMDAwRjVDICAgICAoYmFzZSAxNikJCURheSBPbmUgRGlnaXRhbCBNZWRpYSBMaW1pdGVkCi0JCQkJMTk3IEFyY2hlcnMgUmQKLQkJCQlHbGVuZmllbGQKLQkJCQlBdWNrbGFuZCBOb3J0aCBJc2xhbmQgMTMxMAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTBGLTVEICAgKGhleCkJCVBhY2tldEZyb250IEludGVybmF0aW9uYWwgQUIKLTAwMEY1RCAgICAgKGJhc2UgMTYpCQlQYWNrZXRGcm9udCBJbnRlcm5hdGlvbmFsIEFCCi0JCQkJUE8tMTIxNwotCQkJCUtpc3RhZ2FuZ2VuIDIsIElWCi0JCQkJS2lzdGEgU3RvY2tob2xtIFNFLTE2NDI4Ci0JCQkJU1dFREVOCi0KLTAwLTBGLTVFICAgKGhleCkJCVZlbwotMDAwRjVFICAgICAoYmFzZSAxNikJCVZlbwotCQkJCTkxMCBSaW5jb24gQ2lyY2xlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTVGICAgKGhleCkJCU5pY2V0eSBUZWNobm9sb2dpZXMgSW5jLiAoTlRTKQotMDAwRjVGICAgICAoYmFzZSAxNikJCU5pY2V0eSBUZWNobm9sb2dpZXMgSW5jLiAoTlRTKQotCQkJCTc5Mi0zIFRvbWlva2EgVG95b2RhLWNobwotCQkJCUl3YXRhLWd1biBTaGl6dW9rYSA0MzgtMDgwMwotCQkJCUpBUEFOCi0KLTAwLTBGLTYwICAgKGhleCkJCUxpZmV0cm9uIENvLixMdGQKLTAwMEY2MCAgICAgKGJhc2UgMTYpCQlMaWZldHJvbiBDby4sTHRkCi0JCQkJNi03LFRlbmppbm5pc2hpbWFjaGkKLQkJCQlLaXRhLUt1Ci0JCQkJT3Nha2EgT3Nha2EgUHJlZmVjdHVyZSA1MzAtMDA0NQotCQkJCUpBUEFOCi0KLTAwLTBGLTYxICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAwRjYxICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNjIgICAoaGV4KQkJQWxjYXRlbCBCZWxsIFNwYWNlIE4uVi4KLTAwMEY2MiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIEJlbGwgU3BhY2UgTi5WLgotCQkJCUJlcmtlbnJvZGVsZWkgMzMKLQkJCQlIb2Jva2VuIEFudHdlcnBlbiBCLTI2NjAKLQkJCQlCRUxHSVVNCi0KLTAwLTBGLTYzICAgKGhleCkJCU9iemVydiBUZWNobm9sb2dpZXMKLTAwMEY2MyAgICAgKGJhc2UgMTYpCQlPYnplcnYgVGVjaG5vbG9naWVzCi0JCQkJNDAwIEplYW4gTGVzYWdlCi0JCQkJc3VpdGUgMjAxCi0JCQkJUXVlYmVjIFFDIEcxSzhXMQotCQkJCUNBTkFEQQotCi0wMC0wRi02NCAgIChoZXgpCQlEJlIgRWxlY3Ryb25pY2EgV2Vlc3AgQlYKLTAwMEY2NCAgICAgKGJhc2UgMTYpCQlEJlIgRWxlY3Ryb25pY2EgV2Vlc3AgQlYKLQkJCQlSaWpua2FkZSAxNUIKLQkJCQlXRUVTUCBOSCAxMzgyR1MKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRi02NSAgIChoZXgpCQlpY3ViZSBDb3JwLgotMDAwRjY1ICAgICAoYmFzZSAxNikJCWljdWJlIENvcnAuCi0JCQkJT2x5bXBpYSBDZW50ZXIgMkYsODI4LTEwLFllb2tzYW0tZG9uZyxLYW5nbmFtLWt1Ci0JCQkJU2VvdWwgU291dGggMTM1LTkzNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi02NiAgIChoZXgpCQlDaXNjby1MaW5rc3lzCi0wMDBGNjYgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cwotCQkJCTEyMSBUaGVvcnkgRHIuCi0JCQkJSXJ2aW5lIENBIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi02NyAgIChoZXgpCQlXZXN0IEluc3RydW1lbnRzCi0wMDBGNjcgICAgIChiYXNlIDE2KQkJV2VzdCBJbnN0cnVtZW50cwotCQkJCVVuaXQgNSwgVGhlIEh5ZGUsIExvd2VyIEJldmVuZGVhbgotCQkJCUJyaWdodG9uIEVhc3QgU3Vzc2V4IEJOMiA0SlUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRi02OCAgIChoZXgpCQlWYXZpYyBOZXR3b3JrIFRlY2hub2xvZ3ksIEluYy4KLTAwMEY2OCAgICAgKGJhc2UgMTYpCQlWYXZpYyBOZXR3b3JrIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxc3QgRmxvb3IsIDE1IEppYW5nb25nIFJvYWQKLQkJCQlUaWFuaGUgIFMmVCBab25lCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2NjUKLQkJCQlDSElOQQotCi0wMC0wRi02OSAgIChoZXgpCQlTRVcgRXVyb2RyaXZlIEdtYkggJiBDby4gS0cKLTAwMEY2OSAgICAgKGJhc2UgMTYpCQlTRVcgRXVyb2RyaXZlIEdtYkggJiBDby4gS0cKLQkJCQlFcm5zdCBCbGlja2xlIFN0ci4gNDIKLQkJCQlCcnVjaHNhbCAgNzY2NDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLTZBICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwRjZBICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTBGLTZCICAgKGhleCkJCUdhdGVXYXJlIENvbW11bmljYXRpb25zIEdtYkgKLTAwMEY2QiAgICAgKGJhc2UgMTYpCQlHYXRlV2FyZSBDb21tdW5pY2F0aW9ucyBHbWJICi0JCQkJQWxsZXJzYmVyZ2VyIFN0cmFzc2UgMTg1IEYKLQkJCQlOdWVybmJlcmcgQmF2YXJpYSBELTkwNDYxCi0JCQkJR0VSTUFOWQotCi0wMC0wRi02QyAgIChoZXgpCQlBRERJLURBVEEgR21iSAotMDAwRjZDICAgICAoYmFzZSAxNikJCUFEREktREFUQSBHbWJICi0JCQkJRGllc2Vsc3RyYXNzZSAzCi0JCQkJT1RURVJTV0VJRVIgQlcgNzc4MzMKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLTZEICAgKGhleCkJCU1pZGFzIEVuZ2luZWVyaW5nCi0wMDBGNkQgICAgIChiYXNlIDE2KQkJTWlkYXMgRW5naW5lZXJpbmcKLQkJCQlBY2UgVGVjaG5vLVRvd2VyIFYgIzkwNiAxOTctMjIKLQkJCQlLdXJvLURvbmcsIEt1cm8tR3UKLQkJCQlTZW91bCAgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi02RSAgIChoZXgpCQlCQm94Ci0wMDBGNkUgICAgIChiYXNlIDE2KQkJQkJveAotCQkJCUVwaXRvayB1LiAyLTQKLQkJCQlCdWRhb3JzICBILTIwNDAKLQkJCQlIVU5HQVJZCi0KLTAwLTBGLTZGICAgKGhleCkJCUZUQSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcwotMDAwRjZGICAgICAoYmFzZSAxNikJCUZUQSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcwotCQkJCTExLCBydWUgUGllcnJlIFdlcm5lcgotCQkJCUJldHpkb3JmICBMLTY4MzIKLQkJCQlMVVhFTUJPVVJHCi0KLTAwLTBGLTcwICAgKGhleCkJCVdpbnRlYyBJbmR1c3RyaWVzLCBpbmMuCi0wMDBGNzAgICAgIChiYXNlIDE2KQkJV2ludGVjIEluZHVzdHJpZXMsIGluYy4KLQkJCQk2NzUgU3ljYW1vcmUgRHJpdmUKLQkJCQlNaWxwaXRhcywgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTcxICAgKGhleCkJCVNhbm1laSBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDBGNzEgICAgIChiYXNlIDE2KQkJU2FubWVpIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkyLTItMSxTZWlrYWksU2hpbWl6dQotCQkJCVNoaXp1b2thICA0MjQtMDkyNAotCQkJCUpBUEFOCi0KLTAwLTBGLTcyICAgKGhleCkJCVNhbmRidXJzdAotMDAwRjcyICAgICAoYmFzZSAxNikJCVNhbmRidXJzdAotCQkJCTYwMCBGZWRlcmFsIFN0Ci0JCQkJMm5kIEZsb29yCi0JCQkJQW5kb3ZlciBNQSAwMTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNzMgICAoaGV4KQkJUlMgQXV0b21hdGlvbiBDby4sIEx0ZAotMDAwRjczICAgICAoYmFzZSAxNikJCVJTIEF1dG9tYXRpb24gQ28uLCBMdGQKLQkJCQk0NDctNiwgR29uZ3NlLURvbmcgLCBHaWhldW5nLUd1Ci0JCQkJWW91bmdpbi1DaXR5IEd5ZW9uZ2dpLURvIDQ0OS05MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtNzQgICAoaGV4KQkJUWFtY29tIFRlY2hub2xvZ3kgQUIKLTAwMEY3NCAgICAgKGJhc2UgMTYpCQlRYW1jb20gVGVjaG5vbG9neSBBQgotCQkJCUdydXZnYXRhbiA4Ci0JCQkJU0UtNDIxIDMwCi0JCQkJVmFzdHJhIEZyb2x1bmRhIAotCQkJCVNXRURFTgotCi0wMC0wRi03NSAgIChoZXgpCQlGaXJzdCBTaWxpY29uIFNvbHV0aW9ucwotMDAwRjc1ICAgICAoYmFzZSAxNikJCUZpcnN0IFNpbGljb24gU29sdXRpb25zCi0JCQkJMTM5MzkgRm9yZXN0IExhbmUKLQkJCQlMYXJrc3B1ciBDTyA4MDExOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNzYgICAoaGV4KQkJRGlnaXRhbCBLZXlzdG9uZSwgSW5jLgotMDAwRjc2ICAgICAoYmFzZSAxNikJCURpZ2l0YWwgS2V5c3RvbmUsIEluYy4KLQkJCQkxOTc1IEVsIENhbWlubyBSZWFsCi0JCQkJIzMwNgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTc3ICAgKGhleCkJCURFTlRVTSBDTy4sTFRECi0wMDBGNzcgICAgIChiYXNlIDE2KQkJREVOVFVNIENPLixMVEQKLQkJCQlXb29reXVuZyBCL0QgNjAyICM2NzgtNgotCQkJCURldW5nY2hvbi1Eb25nICxLYW5nc2VvLUd1Ci0JCQkJU2VvdWwgIDE1Ny0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtNzggICAoaGV4KQkJRGF0YWNhcCBTeXN0ZW1zIEluYwotMDAwRjc4ICAgICAoYmFzZSAxNikJCURhdGFjYXAgU3lzdGVtcyBJbmMKLQkJCQkxMDAgTmV3IEJyaXRhaW4gQmx2ZAotCQkJCUNoYWxmb250IFBBIDE4OTE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi03OSAgIChoZXgpCQlCbHVldG9vdGggSW50ZXJlc3QgR3JvdXAgSW5jLgotMDAwRjc5ICAgICAoYmFzZSAxNikJCUJsdWV0b290aCBJbnRlcmVzdCBHcm91cCBJbmMuCi0JCQkJNEYsIE5vLiA5LCBBbGxleSAyLCBMYW5lIDM1LCBKaS1IdSBSZC4KLQkJCQlOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi03QSAgIChoZXgpCQlCZWlKaW5nIE51UVggVGVjaG5vbG9neSBDTy4sTFRECi0wMDBGN0EgICAgIChiYXNlIDE2KQkJQmVpSmluZyBOdVFYIFRlY2hub2xvZ3kgQ08uLExURAotCQkJCVJvb20gODEyLDhGIFRvd2VyIEIsWWluV2FuZyBDZW50ZXIsIE5vLjExMyxaaGkgQ2h1biBSb2FkLAotCQkJCUhhaURpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODYKLQkJCQlDSElOQQotCi0wMC0wRi03QiAgIChoZXgpCQlBcmNlIFNpc3RlbWFzLCBTLkEuCi0wMDBGN0IgICAgIChiYXNlIDE2KQkJQXJjZSBTaXN0ZW1hcywgUy5BLgotCQkJCUMvUGFkcmUgTGFycmFtZW5kaSwgMyAtIDK6Ci0JCQkJQmlsYmFvIFZpemNheWEgNDgwMTIKLQkJCQlTUEFJTgotCi0wMC0wRi03QyAgIChoZXgpCQlBQ1RpIENvcnBvcmF0aW9uCi0wMDBGN0MgICAgIChiYXNlIDE2KQkJQUNUaSBDb3Jwb3JhdGlvbgotCQkJCTdGLiwgTm8uIDEsIEFsbGV5IDIwLCBMYW5lIDQwNywgU2VjLiAyLCBUaWRpbmcgQmx2ZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtN0QgICAoaGV4KQkJWGlycnVzCi0wMDBGN0QgICAgIChiYXNlIDE2KQkJWGlycnVzCi0JCQkJMzEwIE5vcnRoIFdlc3RsYWtlIEJsdmQuCi0JCQkJV2VzdGxha2UgVmlsbGFnZSBDQSA5MTM2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtN0UgICAoaGV4KQkJQWJsZXJleCBFbGVjdHJvbmljcyBDby4sIExURAotMDAwRjdFICAgICAoYmFzZSAxNikJCUFibGVyZXggRWxlY3Ryb25pY3MgQ28uLCBMVEQKLQkJCQkxRiwgTm8uMyBMYW5lIDcsIFBhb2thbyBSZC4KLQkJCQlIc2ludGllbiBUYWlwZWkgSHNpZW4gMjMxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTdGICAgKGhleCkJCVVCU1RPUkFHRSBDby4sTHRkLgotMDAwRjdGICAgICAoYmFzZSAxNikJCVVCU1RPUkFHRSBDby4sTHRkLgotCQkJCSNBLTEwOCwgU2VvdWxfU2FudXBfSml3b25fQ2VudGVyCi0JCQkJNjQ3LTI2LCBEZXVuZ2Nob25nLWRvbmcKLQkJCQlHYW5zZW8tZ3UgU2VvdWwgMTU3LTg0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi04MCAgIChoZXgpCQlUcmluaXR5IFNlY3VyaXR5IFN5c3RlbXMsSW5jLgotMDAwRjgwICAgICAoYmFzZSAxNikJCVRyaW5pdHkgU2VjdXJpdHkgU3lzdGVtcyxJbmMuCi0JCQkJQWx0ZSBCdWlsZGluZyBIaWdhc2hpIEthbmRhIDhGCi0JCQkJMS03LTggSGlnYXNoaWthbmRhCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDEtMDAzMQotCQkJCUpBUEFOCi0KLTAwLTBGLTgxICAgKGhleCkJCVNlY3VyZSBJbmZvIEltYWdpbmcKLTAwMEY4MSAgICAgKGJhc2UgMTYpCQlTZWN1cmUgSW5mbyBJbWFnaW5nCi0JCQkJUE8gQm94IDIxODcKLQkJCQlQYWxtIFNwcmluZ3MgQ0EgOTIyNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTgyICAgKGhleCkJCU1vcnRhcmEgSW5zdHJ1bWVudCwgSW5jLgotMDAwRjgyICAgICAoYmFzZSAxNikJCU1vcnRhcmEgSW5zdHJ1bWVudCwgSW5jLgotCQkJCTc4NjUgTi4gODZ0aCBTdC4KLQkJCQlNaWx3YXVrZWUgV0kgNTMyMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTgzICAgKGhleCkJCUJyYWluaXVtIFRlY2hub2xvZ2llcyBJbmMuCi0wMDBGODMgICAgIChiYXNlIDE2KQkJQnJhaW5pdW0gVGVjaG5vbG9naWVzIEluYy4KLQkJCQkjMjAxIC0gMTE0OTEgS2luZ3N0b24gU3RyZWV0Ci0JCQkJTWFwbGUgUmlkZ2UgQkMgVjJYIDBZNgotCQkJCUNBTkFEQQotCi0wMC0wRi04NCAgIChoZXgpCQlBc3R1dGUgTmV0d29ya3MsIEluYy4KLTAwMEY4NCAgICAgKGJhc2UgMTYpCQlBc3R1dGUgTmV0d29ya3MsIEluYy4KLQkJCQkxNjUxNiBWaWEgRXNwcmlsbG8KLQkJCQkjMjAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi04NSAgIChoZXgpCQlBRERPLUphcGFuIENvcnBvcmF0aW9uCi0wMDBGODUgICAgIChiYXNlIDE2KQkJQURETy1KYXBhbiBDb3Jwb3JhdGlvbgotCQkJCVNoaW4gRWRvYmFzaGkgQmxkZy4gNEYsIDgtNiBOaWhvbWJhc2hpIEtvYnVuYS1jaG8KLQkJCQlDaHVvLWt1IFRva3lvIDEwMy0wMDI0Ci0JCQkJSkFQQU4KLQotMDAtMEYtODYgICAoaGV4KQkJUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQKLTAwMEY4NiAgICAgKGJhc2UgMTYpCQlSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZAotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi0wMC0wRi04NyAgIChoZXgpCQlNYXhjZXNzIEludGVybmF0aW9uYWwKLTAwMEY4NyAgICAgKGJhc2UgMTYpCQlNYXhjZXNzIEludGVybmF0aW9uYWwKLQkJCQkyMjIgVy4gTWVtb3JpYWwgUm9hZAotCQkJCU9rbGFob21hIENpdHkgT0sgNzMxMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTg4ICAgKGhleCkJCUFNRVRFSywgSW5jLgotMDAwRjg4ICAgICAoYmFzZSAxNikJCUFNRVRFSywgSW5jLgotCQkJCTE1MCBGcmVlcG9ydCBSb2FkCi0JCQkJUGl0dHNidXJnaCBQQSAxNTIzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtODkgICAoaGV4KQkJV2lubmVydGVjIFN5c3RlbSBDby4sIEx0ZC4KLTAwMEY4OSAgICAgKGJhc2UgMTYpCQlXaW5uZXJ0ZWMgU3lzdGVtIENvLiwgTHRkLgotCQkJCSM0MDUsIDR0aCBGbG9vci4gQWNlLVRlY2hubyBUb3dlciBJSUksIDE5Ny00OCwKLQkJCQlLdXJvIDMtRG9uZywgS3Vyby1LdS4KLQkJCQlTZW91bCAgMTUyLTc2NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi04QSAgIChoZXgpCQlXaWRlVmlldwotMDAwRjhBICAgICAoYmFzZSAxNikJCVdpZGVWaWV3Ci0JCQkJRi4gNiwgTm8uIDgsIFd1LWNodWFuIDIgUmQsIEhzaW4tQ2h1YW5nIENpdHkKLQkJCQlUYWlwZWkgQ291bnRyeSAgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi04QiAgIChoZXgpCQlPcmlvbiBNdWx0aVN5c3RlbXMgSW5jCi0wMDBGOEIgICAgIChiYXNlIDE2KQkJT3Jpb24gTXVsdGlTeXN0ZW1zIEluYwotCQkJCTMzNzUgU2NvdHQgQmx2ZCBTdWl0ZSAzMzgKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtOEMgICAoaGV4KQkJR2lnYXdhdmV0ZWNoIFB0ZSBMdGQKLTAwMEY4QyAgICAgKGJhc2UgMTYpCQlHaWdhd2F2ZXRlY2ggUHRlIEx0ZAotCQkJCTEgSmFsYW4gS2lsYW5nIFRpbW9yCi0JCQkJIzA3LTAyIFBhY2lmaWMgVGVjaCBDZW50cmUKLQkJCQkxNTkzMDMKLQkJCQlTSU5HQVBPUkUKLQotMDAtMEYtOEQgICAoaGV4KQkJRkFTVCBUVi1TZXJ2ZXIgQUcKLTAwMEY4RCAgICAgKGJhc2UgMTYpCQlGQVNUIFRWLVNlcnZlciBBRwotCQkJCVJ1ZWRlc2hlaW1lcnN0ci4gMTEtMTMKLQkJCQlNdW5pY2ggR2VybWFueSA4MDY4NgotCQkJCUdFUk1BTlkKLQotMDAtMEYtOEUgICAoaGV4KQkJRE9OR1lBTkcgVEVMRUNPTSBDTy4sTFRELgotMDAwRjhFICAgICAoYmFzZSAxNikJCURPTkdZQU5HIFRFTEVDT00gQ08uLExURC4KLQkJCQk2NDItNywgREVVTkdDSE9OLURPTkcsIEtBTkdTRU8tR1UKLQkJCQlTRU9VTCBLQU5HU0UtR1UgMTU3LTg0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi04RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBGOEYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi05MCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBGOTAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi05MSAgIChoZXgpCQlBZXJvdGVsZWNvbSBDby4sTHRkLgotMDAwRjkxICAgICAoYmFzZSAxNikJCUFlcm90ZWxlY29tIENvLixMdGQuCi0JCQkJMTk1LTU4IEFueWFuZyA3IERvbmcKLQkJCQlBbnlhbmcgS3l1bmdnaSA0MzAtODE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTkyICAgKGhleCkJCU1pY3JvaGFyZCBTeXN0ZW1zIEluYy4KLTAwMEY5MiAgICAgKGJhc2UgMTYpCQlNaWNyb2hhcmQgU3lzdGVtcyBJbmMuCi0JCQkJIzE3LCAyMTM1LTMyQXZlIE5FCi0JCQkJQ2FsZ2FyeSBBQiBUMkU2WjMKLQkJCQlDQU5BREEKLQotMDAtMEYtOTMgICAoaGV4KQkJTGFuZGlzK0d5ciBMdGQuCi0wMDBGOTMgICAgIChiYXNlIDE2KQkJTGFuZGlzK0d5ciBMdGQuCi0JCQkJRmVsZHN0cmFzc2UgMQotCQkJCVp1ZyAgQ0gtNjMwMQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBGLTk0ICAgKGhleCkJCUdlbmV4aXMKLTAwMEY5NCAgICAgKGJhc2UgMTYpCQlHZW5leGlzCi0JCQkJTG9kZXdpamtzdHJhYXQgMUEKLQkJCQlFaW5kaG92ZW4gIDU2NDZIUAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBGLTk1ICAgKGhleCkJCUVMRUNPTSBDby4sTFREIExhbmVlZCBEaXZpc2lvbgotMDAwRjk1ICAgICAoYmFzZSAxNikJCUVMRUNPTSBDby4sTFREIExhbmVlZCBEaXZpc2lvbgotCQkJCThGIEthbmRhLU11cm9tYWNoaSBCbGRnLgotCQkJCTEgS2FuZGEtT2dhd2FtYWNoaSAxIENob21lLAotCQkJCUNoaXlvZGEtS3UsIFRva3lvLiAgMTAxLTAwNTIKLQkJCQlKQVBBTgotCi0wMC0wRi05NiAgIChoZXgpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuIAotMDAwRjk2ICAgICAoYmFzZSAxNikJCVRlbGNvIFN5c3RlbXMsIEluYy4gCi0JCQkJMTUgQmVya3NoaXJlIFJvYWQKLQkJCQlNYW5zZmllbGQgTUEgMDIwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTk3ICAgKGhleCkJCUF2YW5leCBDb3Jwb3JhdGlvbgotMDAwRjk3ICAgICAoYmFzZSAxNikJCUF2YW5leCBDb3Jwb3JhdGlvbgotCQkJCTQwOTE5IEVuY3ljbG9wZWRpYSBDaXJjbGUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi05OCAgIChoZXgpCQlBdmFtYXggQ28uIEx0ZC4KLTAwMEY5OCAgICAgKGJhc2UgMTYpCQlBdmFtYXggQ28uIEx0ZC4KLQkJCQlCMSwgTm8uIDUxLCBTZWN0aW9uIDIsIENob25nUWluZyBTLiBSZC4KLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtOTkgICAoaGV4KQkJQVBBQyBvcHRvIEVsZWN0cm9uaWNzIEluYy4KLTAwMEY5OSAgICAgKGJhc2UgMTYpCQlBUEFDIG9wdG8gRWxlY3Ryb25pY3MgSW5jLgotCQkJCTMgVHp1IENoaWFuZyBSb2FkLCBIc2luY2h1IEluZHVzdHJpYWwgUGFyawotCQkJCUh1a293LCBIc2luY2h1IEhzaWVuICAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTlBICAgKGhleCkJCVN5bmNocm9ueSwgSW5jLgotMDAwRjlBICAgICAoYmFzZSAxNikJCVN5bmNocm9ueSwgSW5jLgotCQkJCTY0MTAgQ29tbW9ud2VhbHRoIERyaXZlCi0JCQkJUm9hbm9rZSBWQSAyNDAxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtOUIgICAoaGV4KQkJUm9zcyBWaWRlbyBMaW1pdGVkCi0wMDBGOUIgICAgIChiYXNlIDE2KQkJUm9zcyBWaWRlbyBMaW1pdGVkCi0JCQkJOCBKb2huIFN0cmVldAotCQkJCVBPIEJveCAyMjAKLQkJCQlJcm9xdW9pcyBPbnRhcmlvIEswRSAxSzAKLQkJCQlDQU5BREEKLQotMDAtMEYtOUMgICAoaGV4KQkJUGFuZHVpdCBDb3JwCi0wMDBGOUMgICAgIChiYXNlIDE2KQkJUGFuZHVpdCBDb3JwCi0JCQkJMTczMDEgUmlkZ2VsYW5kIEF2ZQotCQkJCVRpbmxleSBQYXJrIElsbGlub2lzIDYwNDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi05RCAgIChoZXgpCQlEaXNwbGF5TGluayAoVUspIEx0ZAotMDAwRjlEICAgICAoYmFzZSAxNikJCURpc3BsYXlMaW5rIChVSykgTHRkCi0JCQkJTW91bnQgUGxlYXNhbnQgSG91c2UKLQkJCQlNb3VudCBQbGVhc2FudAotCQkJCUNhbWJyaWRnZSBDYW1icmlkZ2VzaGlyZSBDQjMgMFJOCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtOUUgICAoaGV4KQkJTXVycmVsZWt0cm9uaWsgR21iSAotMDAwRjlFICAgICAoYmFzZSAxNikJCU11cnJlbGVrdHJvbmlrIEdtYkgKLQkJCQlGYWxrZW5zdHJhc3NlIDMKLQkJCQlPcHBlbndlaWxlciBCYWRlbiBX/HJ0dGVtYmVyZyA3MTU3MAotCQkJCUdFUk1BTlkKLQotMDAtMEYtOUYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMEY5RiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUEwICAgKGhleCkJCUNBTk9OIEtPUkVBIEJVU0lORVNTIFNPTFVUSU9OUyBJTkMuCi0wMDBGQTAgICAgIChiYXNlIDE2KQkJQ0FOT04gS09SRUEgQlVTSU5FU1MgU09MVVRJT05TIElOQy4KLQkJCQk3MzYgV29uc2ktRG9uZwotCQkJCUFuc2FuLXNpIEt5dW5nZ2ktZG8gNDI1LTA5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1BMSAgIChoZXgpCQlHaWdhYml0IFN5c3RlbXMgSW5jLgotMDAwRkExICAgICAoYmFzZSAxNikJCUdpZ2FiaXQgU3lzdGVtcyBJbmMuCi0JCQkJRnV5b2ggVmlkZW8gQnVpbGRpbmcgM0YKLQkJCQk3LTI1IEhpZ2FzaGktS2lib3VnYW9rYSwgQXNhaGktS3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyNDEtMDgyNgotCQkJCUpBUEFOCi0KLTAwLTBGLUEyICAgKGhleCkJCURpZ2l0YWwgUGF0aCBOZXR3b3JrcwotMDAwRkEyICAgICAoYmFzZSAxNikJCURpZ2l0YWwgUGF0aCBOZXR3b3JrcwotCQkJCTI3NSBBaXJwYXJrIEJsdmQKLQkJCQlTdWl0ZSA1MDAKLQkJCQlDaGljbyBDQSA5NTk3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQTMgICAoaGV4KQkJQWxwaGEgTmV0d29ya3MgSW5jLgotMDAwRkEzICAgICAoYmFzZSAxNikJCUFscGhhIE5ldHdvcmtzIEluYy4KLQkJCQlOby44IExpLXNoaW5nIDd0aCBSZC4sU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLUE0ICAgKGhleCkJCVNwcmVjaGVyIEF1dG9tYXRpb24gR21iSAotMDAwRkE0ICAgICAoYmFzZSAxNikJCVNwcmVjaGVyIEF1dG9tYXRpb24gR21iSAotCQkJCUZyYW5ja3N0cmFzc2UgNTEKLQkJCQlMaW56IE9iZXL2c3RlcnJlaWNoIDQwMTgKLQkJCQlBVVNUUklBCi0KLTAwLTBGLUE1ICAgKGhleCkJCUJXQSBUZWNobm9sb2d5IEdtYkgKLTAwMEZBNSAgICAgKGJhc2UgMTYpCQlCV0EgVGVjaG5vbG9neSBHbWJICi0JCQkJSm9oYW5uLUtyYW5lLVdlZyAyMQotCQkJCU11ZW5zdGVyICA0ODE0OQotCQkJCUdFUk1BTlkKLQotMDAtMEYtQTYgICAoaGV4KQkJUzIgU2VjdXJpdHkgQ29ycG9yYXRpb24KLTAwMEZBNiAgICAgKGJhc2UgMTYpCQlTMiBTZWN1cml0eSBDb3Jwb3JhdGlvbgotCQkJCTYgQWJib3R0IFJvYWQKLQkJCQlXZWxsZXNsZXkgTUEgMDI0ODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUE3ICAgKGhleCkJCVJhcHRvciBOZXR3b3JrcyBUZWNobm9sb2d5Ci0wMDBGQTcgICAgIChiYXNlIDE2KQkJUmFwdG9yIE5ldHdvcmtzIFRlY2hub2xvZ3kKLQkJCQk2NSBFbnRlcnByaXNlIFJvYWQKLQkJCQlBbGlzbyBWaWVqbyBDQSA5MjY1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQTggICAoaGV4KQkJUGhvdG9tZXRyaWNzLCBJbmMuCi0wMDBGQTggICAgIChiYXNlIDE2KQkJUGhvdG9tZXRyaWNzLCBJbmMuCi0JCQkJMzQ0MCBFIEJyaXRhbm5pYSBEcml2ZQotCQkJCVR1Y3NvbiBBWiA4NTcwNi01MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1BOSAgIChoZXgpCQlQQyBGYWJyaWsKLTAwMEZBOSAgICAgKGJhc2UgMTYpCQlQQyBGYWJyaWsKLQkJCQlCdWNoZW5zdHJhc3NlIDEzLTE1Ci0JCQkJRHJlc2RlbiBTYWNoc2VuIDAxMDk3Ci0JCQkJR0VSTUFOWQotCi0wMC0wRi1BQSAgIChoZXgpCQlOZXh1cyBUZWNobm9sb2dpZXMKLTAwMEZBQSAgICAgKGJhc2UgMTYpCQlOZXh1cyBUZWNobm9sb2dpZXMKLQkJCQkxMCBOYXRpb25hbCBBdmUuCi0JCQkJRmxldGNoZXIgTkMgMjg3MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUFCICAgKGhleCkJCUt5dXNodSBFbGVjdHJvbmljcyBTeXN0ZW1zIEluYy4KLTAwMEZBQiAgICAgKGJhc2UgMTYpCQlLeXVzaHUgRWxlY3Ryb25pY3MgU3lzdGVtcyBJbmMuCi0JCQkJMy0zLCBLb25nbyAyLUNob21lLCBZYWhhdGFuaXNoaSBXYXJkCi0JCQkJS2l0YWt5dXNodSBDaXR5IEZ1a3Vva2EgUHJlZi4gODA3LTEyNjMKLQkJCQlKQVBBTgotCi0wMC0wRi1BQyAgIChoZXgpCQlJRUVFIDgwMi4xMQotMDAwRkFDICAgICAoYmFzZSAxNikJCUlFRUUgODAyLjExCi0JCQkJNDEyNSBIaWdobGFuZGVyIFBhcmt3YXkKLQkJCQlSaWNoZmllbGQgT2hpbyA0NDI4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQUQgICAoaGV4KQkJRk1OIGNvbW11bmljYXRpb25zIEdtYkgKLTAwMEZBRCAgICAgKGJhc2UgMTYpCQlGTU4gY29tbXVuaWNhdGlvbnMgR21iSAotCQkJCUdyaW1tZWxhbGxlZSA0Ci0JCQkJTm9yZGhhdXNlbiBUaPxyaW5nZW4gOTk3MzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLUFFICAgKGhleCkJCUUyTyBDb21tdW5pY2F0aW9ucwotMDAwRkFFICAgICAoYmFzZSAxNikJCUUyTyBDb21tdW5pY2F0aW9ucwotCQkJCTUyIFNlcmFuZ29vbiBOb3J0aCBBdmUgNAotCQkJCSMwNi0wMiBFdmVyIFRlY2ggQnVpbGRpbmcKLQkJCQk1NTU4NTMKLQkJCQlTSU5HQVBPUkUKLQotMDAtMEYtQUYgICAoaGV4KQkJRGlhbG9nIEluYy4KLTAwMEZBRiAgICAgKGJhc2UgMTYpCQlEaWFsb2cgSW5jLgotCQkJCTEtNDctOQotCQkJCUhpZ2FzaGlpa2VidWt1cm8KLQkJCQlUb3NoaW1hLWt1IFRva3lvIDE3MDAwMTMKLQkJCQlKQVBBTgotCi0wMC0wRi1CMCAgIChoZXgpCQlDb21wYWwgRWxlY3Ryb25pY3MsSU5DLgotMDAwRkIwICAgICAoYmFzZSAxNikJCUNvbXBhbCBFbGVjdHJvbmljcyxJTkMuCi0JCQkJNTgxIEp1aWt1YW5nIFJvYWQsTmVpaHUsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLUIxICAgKGhleCkJCUNvZ25pbyBJbmMuCi0wMDBGQjEgICAgIChiYXNlIDE2KQkJQ29nbmlvIEluYy4KLQkJCQkxMDEgT3JjaGFyZCBSaWRnZSBEcml2ZQotCQkJCVN1aXRlIDM1MAotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQjIgICAoaGV4KQkJQnJvYWRiYW5kIFBhY2VuZXQgKEluZGlhKSBQdnQuIEx0ZC4KLTAwMEZCMiAgICAgKGJhc2UgMTYpCQlCcm9hZGJhbmQgUGFjZW5ldCAoSW5kaWEpIFB2dC4gTHRkLgotCQkJCTctQiwgU2hhaCBJbmR1c3RyaWFsIEVzdGF0ZSwgT2ZmIFZlZXJhIERlc2FpIFJvYWQKLQkJCQlBbmRoZXJpIFdlc3QKLQkJCQlNdW1iYWkgTWFoYXJhc2h0cmEgNDAwIDA1MwotCQkJCUlORElBCi0KLTAwLTBGLUIzICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0wMDBGQjMgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLQkJCQk3NjAgTm9ydGggTWFyeSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUI0ICAgKGhleCkJCVRpbWVzcGFjZSBUZWNobm9sb2d5Ci0wMDBGQjQgICAgIChiYXNlIDE2KQkJVGltZXNwYWNlIFRlY2hub2xvZ3kKLQkJCQlCbGFja3N0b25lIFJvYWQKLQkJCQlIdW50aW5nZG9uIENhbWJyaWRnZXNoaXJlIFBFMjkgNlRUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtQjUgICAoaGV4KQkJTkVUR0VBUiBJbmMKLTAwMEZCNSAgICAgKGJhc2UgMTYpCQlORVRHRUFSIEluYwotCQkJCTQ1MDAgR3JlYXQgQW1lcmljYSBQYXJrd2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUI2ICAgKGhleCkJCUV1cm9wbGV4IFRlY2hub2xvZ2llcwotMDAwRkI2ICAgICAoYmFzZSAxNikJCUV1cm9wbGV4IFRlY2hub2xvZ2llcwotCQkJCUNsb25zaGF1Z2ggQnVzaW5lc3MgJiBUZWNoLiBQYXJrCi0JCQkJQ2xvbnNoYXVnaCAgRHVibGluIDE3Ci0JCQkJSVJFTEFORAotCi0wMC0wRi1CNyAgIChoZXgpCQlDYXZpdW0gTmV0d29ya3MKLTAwMEZCNyAgICAgKGJhc2UgMTYpCQlDYXZpdW0gTmV0d29ya3MKLQkJCQkyNjEwIEF1Z3VzdGluZSBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENhbGlmb3JuaWEgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUI4ICAgKGhleCkJCUNhbGxVUkwgSW5jLgotMDAwRkI4ICAgICAoYmFzZSAxNikJCUNhbGxVUkwgSW5jLgotCQkJCTNGLTExLCBOby4gNTA4IFNlYy4gIDUsIENodW5nLUhzaWFvIEUuIFJkLgotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi1COSAgIChoZXgpCQlBZGFwdGl2ZSBJbnN0cnVtZW50cwotMDAwRkI5ICAgICAoYmFzZSAxNikJCUFkYXB0aXZlIEluc3RydW1lbnRzCi0JCQkJNTc3IE1haW4gU3RyZWV0Ci0JCQkJSHVkc29uIE1BIDAxNzQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1CQSAgIChoZXgpCQlUZXZlYm94IEFCCi0wMDBGQkEgICAgIChiYXNlIDE2KQkJVGV2ZWJveCBBQgotCQkJCUJlcmdsaW5kcyB2YWcgMTMKLQkJCQl3YXJtZG8gIFMtMTM5MDAKLQkJCQlTV0VERU4KLQotMDAtMEYtQkIgICAoaGV4KQkJTm9raWEgU2llbWVucyBOZXR3b3JrcyBHbWJIICYgQ28uIEtHCi0wMDBGQkIgICAgIChiYXNlIDE2KQkJTm9raWEgU2llbWVucyBOZXR3b3JrcyBHbWJIICYgQ28uIEtHCi0JCQkJV2VybmVyLXZvbi1TaWVtZW5zIFN0ci4gMi02Ci0JCQkJQnJ1Y2hzYWwgQmFkZW4tV/xydGVtYmVyZyA3NjY0NgotCQkJCUdFUk1BTlkKLQotMDAtMEYtQkMgICAoaGV4KQkJT25rZXkgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBGQkMgICAgIChiYXNlIDE2KQkJT25rZXkgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNzgwIE1vbnRhZ3VlIEV4cHJlc3N3YXksIEluYy4KLQkJCQlTdWl0ZSAjMzA2Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUJEICAgKGhleCkJCU1SViBDb21tdW5pY2F0aW9ucyAoTmV0d29ya3MpIExURAotMDAwRkJEICAgICAoYmFzZSAxNikJCU1SViBDb21tdW5pY2F0aW9ucyAoTmV0d29ya3MpIExURAotCQkJCVAuTyBCb3ggNjE0Ci0JCQkJWW9rbmVhbSAgMjA2OTIKLQkJCQlJU1JBRUwKLQotMDAtMEYtQkUgICAoaGV4KQkJZS13L3lvdSBJbmMuCi0wMDBGQkUgICAgIChiYXNlIDE2KQkJZS13L3lvdSBJbmMuCi0JCQkJM0YgRklORSBCbGRnLiA2LTE3LTE3Ci0JCQkJTWluYW1pb29pLAotCQkJCVNoaW5hZ2F3YS1rdSwgVG9reW8gMTQwLTAwMTMKLQkJCQlKQVBBTgotCi0wMC0wRi1CRiAgIChoZXgpCQlER1QgU3AuIHogby5vLgotMDAwRkJGICAgICAoYmFzZSAxNikJCURHVCBTcC4geiBvLm8uCi0JCQkJdWwuIEphc2tvd2EgRG9saW5hIDE1Ci0JCQkJR2RhbnNrICA4MC0yNTIKLQkJCQlQT0xBTkQKLQotMDAtMEYtQzAgICAoaGV4KQkJREVMQ09NcAotMDAwRkMwICAgICAoYmFzZSAxNikJCURFTENPTXAKLQkJCQlUZWNobm9sb2dpZWxhYW4gMwotCQkJCUxldXZlbiAgQi0zMDAwCi0JCQkJQkVMR0lVTQotCi0wMC0wRi1DMSAgIChoZXgpCQlXQVZFIENvcnBvcmF0aW9uCi0wMDBGQzEgICAgIChiYXNlIDE2KQkJV0FWRSBDb3Jwb3JhdGlvbgotCQkJCTMtMjUtNSBDaGlkb3JpCi0JCQkJT2h0YS1rdSBUb2t5byAxNDYtMDA4MwotCQkJCUpBUEFOCi0KLTAwLTBGLUMyICAgKGhleCkJCVVuaXdlbGwgQ29ycG9yYXRpb24KLTAwMEZDMiAgICAgKGJhc2UgMTYpCQlVbml3ZWxsIENvcnBvcmF0aW9uCi0JCQkJNS0yNSwgMy1jaG9tZSwgVGVubWEsIEtpdGEta3UKLQkJCQlPc2FrYSAgNTMwLTAwNDMKLQkJCQlKQVBBTgotCi0wMC0wRi1DMyAgIChoZXgpCQlQYWxtUGFsbSBUZWNobm9sb2d5LCBJbmMuCi0wMDBGQzMgICAgIChiYXNlIDE2KQkJUGFsbVBhbG0gVGVjaG5vbG9neSwgSW5jLgotCQkJCVNhbXN1bmctZG9uZyAxNTYtMywgR2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtMDkxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUM0ICAgKGhleCkJCU5TVCBjby4sTFRELgotMDAwRkM0ICAgICAoYmFzZSAxNikJCU5TVCBjby4sTFRELgotCQkJCTQtMy0xIFNISU5NSVlBS09EQQotCQkJCUhBTUFNQVRTVSBTSElaVU9LQSA0MzEtMjEwMwotCQkJCUpBUEFOCi0KLTAwLTBGLUM1ICAgKGhleCkJCUtleU1lZCBMdGQKLTAwMEZDNSAgICAgKGJhc2UgMTYpCQlLZXlNZWQgTHRkCi0JCQkJS2V5TWVkIEhvdXNlCi0JCQkJU3RvY2sgUm9hZAotCQkJCVNvdXRoZW5kIG9uIFNlYSBFc3NleCBTUzIgNVFICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtQzYgICAoaGV4KQkJRXVyb2NvbSBJbmR1c3RyaWVzIEEvUwotMDAwRkM2ICAgICAoYmFzZSAxNikJCUV1cm9jb20gSW5kdXN0cmllcyBBL1MKLQkJCQlwb3JzdmVqIDIKLQkJCQlBYWxib3JnIE5WIERLLTkyMDAKLQkJCQlERU5NQVJLCi0KLTAwLTBGLUM3ICAgKGhleCkJCURpb25pY2EgUiZEIEx0ZC4KLTAwMEZDNyAgICAgKGJhc2UgMTYpCQlEaW9uaWNhIFImRCBMdGQuCi0JCQkJQm9sb2duYSBDZW50cmUsIEYxMQotCQkJCU1vc3RhIFRlY2hub3BhcmsKLQkJCQlNb3N0YSAgTVNUMTMKLQkJCQlNQUxUQQotCi0wMC0wRi1DOCAgIChoZXgpCQlDaGFudHJ5IE5ldHdvcmtzCi0wMDBGQzggICAgIChiYXNlIDE2KQkJQ2hhbnRyeSBOZXR3b3JrcwotCQkJCTE5MDAgTWlubmVzb3RhIENvdXJ0Ci0JCQkJU3VpdGUgMTI1Ci0JCQkJTWlzc2lzc2F1Z2EgT250YXJpbyBMNU4gM0M5Ci0JCQkJQ0FOQURBCi0KLTAwLTBGLUM5ICAgKGhleCkJCUFsbG5ldCBHbWJICi0wMDBGQzkgICAgIChiYXNlIDE2KQkJQWxsbmV0IEdtYkgKLQkJCQlNYWlzdHIuIDIKLQkJCQlHZXJtZXJpbmcgQmF2YXJpYSA4MjExMAotCQkJCUdFUk1BTlkKLQotMDAtMEYtQ0EgICAoaGV4KQkJQS1KSU4gVEVDSExJTkUgQ08sIExURAotMDAwRkNBICAgICAoYmFzZSAxNikJCUEtSklOIFRFQ0hMSU5FIENPLCBMVEQKLQkJCQkzMjctMzUKLQkJCQlLYXNhbi1Eb25nCi0JCQkJS3VtY2h1bi1LdSBTZW91bCAxNTMtODAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUNCICAgKGhleCkJCTNDb20gTHRkCi0wMDBGQ0IgICAgIChiYXNlIDE2KQkJM0NvbSBMdGQKLQkJCQlQZW9wbGVidWlsZGluZyAyCi0JCQkJUGVvcGxlYnVpbGRpbmcgRXN0YXRlLCBNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLUNDICAgKGhleCkJCU5ldG9waWEsIEluYy4KLTAwMEZDQyAgICAgKGJhc2UgMTYpCQlOZXRvcGlhLCBJbmMuCi0JCQkJNjAwMSBTaGVsbG1vdW5kIFN0cmVldAotCQkJCTR0aCBGbG9vcgotCQkJCUVtZXJ5dmlsbGUgQ0EgOTQ2MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUNEICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwRkNEICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTBGLUNFICAgKGhleCkJCUtpa3VzdWkgRWxlY3Ryb25pY3MgQ29ycC4KLTAwMEZDRSAgICAgKGJhc2UgMTYpCQlLaWt1c3VpIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJMS0xLTMsSGlnYXNoaSB5YW1hdGEKLQkJCQlUc3V6dWtpLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjI0LTAwMjMKLQkJCQlKQVBBTgotCi0wMC0wRi1DRiAgIChoZXgpCQlEYXRhd2luZCBSZXNlYXJjaAotMDAwRkNGICAgICAoYmFzZSAxNikJCURhdGF3aW5kIFJlc2VhcmNoCi0JCQkJNTU1IFJlbmUtTGV2ZXNxdWUgV2VzdAotCQkJCVN1aXRlIDExMzAKLQkJCQlNb250cmVhbCBRdWViZWMgSDJaIDFCMQotCQkJCUNBTkFEQQotCi0wMC0wRi1EMCAgIChoZXgpCQlBU1RSSQotMDAwRkQwICAgICAoYmFzZSAxNikJCUFTVFJJCi0JCQkJMTgvRiBUb3dlciA2LCBHYXRld2F5LCA5IENhbnRvbiBSZAotCQkJCVRTVCwgS293bG9vbgotCQkJCUhPTkcgS09ORwotCi0wMC0wRi1EMSAgIChoZXgpCQlBcHBsaWVkIFdpcmVsZXNzIElkZW50aWZpY2F0aW9ucyBHcm91cCwgSW5jLgotMDAwRkQxICAgICAoYmFzZSAxNikJCUFwcGxpZWQgV2lyZWxlc3MgSWRlbnRpZmljYXRpb25zIEdyb3VwLCBJbmMuCi0JCQkJMzgyIFJvdXRlIDU5LCBTZWN0aW9uIDI5MgotCQkJCU1vbnNleSBOZXcgWW9yayAxMDk1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRDIgICAoaGV4KQkJRVdBIFRlY2hub2xvZ2llcywgSW5jLgotMDAwRkQyICAgICAoYmFzZSAxNikJCUVXQSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMzg3MyBQYXJrIENlbnRlciBSb2FkCi0JCQkJSGVybmRvbiBWQSAyMDE3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRDMgICAoaGV4KQkJRGlnaXVtCi0wMDBGRDMgICAgIChiYXNlIDE2KQkJRGlnaXVtCi0JCQkJNDQ1IEphbiBEYXZpcyBEcml2ZSBOVwotCQkJCVN1aXRlIDEwMAotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUQ0ICAgKGhleCkJCVNvdW5kY3JhZnQKLTAwMEZENCAgICAgKGJhc2UgMTYpCQlTb3VuZGNyYWZ0Ci0JCQkJQ3JhbmJvcm5lIEhvdXNlCi0JCQkJQ3JhbmJvcm5lIFJvYWQKLQkJCQlQb3R0ZXJzIEJhciBIZXJ0Zm9yZHNoaXJlIEVONiAzSk4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRi1ENSAgIChoZXgpCQlTY2h3ZWNoYXQgLSBSSVNFCi0wMDBGRDUgICAgIChiYXNlIDE2KQkJU2Nod2VjaGF0IC0gUklTRQotCQkJCUFtIENvbmNvcmRlIFBhcmsgMkEKLQkJCQlTY2h3ZWNoYXQgIDIzMjAKLQkJCQlBVVNUUklBCi0KLTAwLTBGLUQ2ICAgKGhleCkJCVNhcm90ZWNoIENvLiwgTHRkCi0wMDBGRDYgICAgIChiYXNlIDE2KQkJU2Fyb3RlY2ggQ28uLCBMdGQKLQkJCQlIYW5HYW5nIEJsZGcsIDE1NDktNywgU2VvY2hvLURvbmcsCi0JCQkJU2VvY2hvLWt1LAotCQkJCVNlb3VsICAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUQ3ICAgKGhleCkJCUhhcm1hbiBNdXNpYyBHcm91cAotMDAwRkQ3ICAgICAoYmFzZSAxNikJCUhhcm1hbiBNdXNpYyBHcm91cAotCQkJCTg3NjAgU2FuZHkgUGFya3dheQotCQkJCVNhbmR5IFV0YWggODQwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUQ4ICAgKGhleCkJCUZvcmNlLCBJbmMuCi0wMDBGRDggICAgIChiYXNlIDE2KQkJRm9yY2UsIEluYy4KLQkJCQk4MjUgUGFyayBTdHJlZXQKLQkJCQlDaHJpc3RpYW5zYnVyZyBWYSAyNDA3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRDkgICAoaGV4KQkJRmxleERTTCBUZWxlY29tbXVuaWNhdGlvbnMgQUcKLTAwMEZEOSAgICAgKGJhc2UgMTYpCQlGbGV4RFNMIFRlbGVjb21tdW5pY2F0aW9ucyBBRwotCQkJCUhhdXMgenVtIEVuZ2VsCi0JCQkJQWx0ZW5kb3JmIFNjaHd5eiA4ODUyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEYtREEgICAoaGV4KQkJWUFaQUtJIENPUlBPUkFUSU9OCi0wMDBGREEgICAgIChiYXNlIDE2KQkJWUFaQUtJIENPUlBPUkFUSU9OCi0JCQkJMTUwMCBNSVNIVUtVCi0JCQkJU1VTT05PLUNJVFkgU0hJWlVPS0EtUFJFRiA0MTAtMTE5NAotCQkJCUpBUEFOCi0KLTAwLTBGLURCICAgKGhleCkJCVdlc3RlbGwgVGVjaG5vbG9naWVzCi0wMDBGREIgICAgIChiYXNlIDE2KQkJV2VzdGVsbCBUZWNobm9sb2dpZXMKLQkJCQk3NTAgTi4gQ29tbW9ucyBEci4KLQkJCQlBdXJvcmEgSUwgNjA1MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLURDICAgKGhleCkJCVVlZGEgSmFwYW4gIFJhZGlvIENvLiwgTHRkLgotMDAwRkRDICAgICAoYmFzZSAxNikJCVVlZGEgSmFwYW4gIFJhZGlvIENvLiwgTHRkLgotCQkJCUZ1bWlpcmkgMi0xMC0xOQotCQkJCVVlZGEgY2l0eSBOYWdhbm8gcHJlZmVjdHVyZSAzODYtODYwOAotCQkJCUpBUEFOCi0KLTAwLTBGLUREICAgKGhleCkJCVNPUkRJTiBBQgotMDAwRkREICAgICAoYmFzZSAxNikJCVNPUkRJTiBBQgotCQkJCVJvcmxhZ2dhcnZhZ2VuIDgKLQkJCQlWYXJuYW1vIFNtYWxhbmQgUy0zMzEgMzQKLQkJCQlTV0VERU4KLQotMDAtMEYtREUgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTAwMEZERSAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OAotCQkJCVNXRURFTgotCi0wMC0wRi1ERiAgIChoZXgpCQlTT0xPTU9OIFRlY2hub2xvZ3kgQ29ycC4KLTAwMEZERiAgICAgKGJhc2UgMTYpCQlTT0xPTU9OIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQlOby40MixTaW5nIFpob25nIFJkLixOZWkgSHUgRGlzdC4sCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLUUwICAgKGhleCkJCU5Db21wdXRpbmcgQ28uLEx0ZC4KLTAwMEZFMCAgICAgKGJhc2UgMTYpCQlOQ29tcHV0aW5nIENvLixMdGQuCi0JCQkJNnRoIEZsLCBKRUktUGxhdHogQi9ECi0JCQkJMTQyMy02LCBHd2FueWFuZzEtRG9uZywgRG9uZ2FuLUd1Ci0JCQkJU2VvdWwgR2FzYW4tZG9uZyBHZXVtY2hlb24tR3UgNDU5LTExCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUUxICAgKGhleCkJCUlEIERJR0lUQUwgQ09SUE9SQVRJT04KLTAwMEZFMSAgICAgKGJhc2UgMTYpCQlJRCBESUdJVEFMIENPUlBPUkFUSU9OCi0JCQkJNnRoIEZsLiwgTWlyYWUgQmxkZy4sIDI3MS0xLCBTZW9oeXVuLWRvbmcsIEJ1bmRhbmcta3UsIFN1bmduYW0tc2ksIEtlb25na2ktZG8sIFNvdXRoIEtvcmVhCi0JCQkJU3VuZ25hbS1TaSBLZW9uZ2tpLWRvIDQ2My0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtRTIgICAoaGV4KQkJSGFuZ3pob3UgSDNDIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMEZFMiAgICAgKGJhc2UgMTYpCQlIYW5nemhvdSBIM0MgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCU9yaWVudGFsIEVsZWN0cm9uaWMgQmxkLiwgTk8uMixDaHVhbmd5ZSBSb2FkCi0JCQkJU2hhbmctRGkgSW5mb3JtYWl0b24gSW5kdXN0cnkgQmFzZSwKLQkJCQlIYWktRGlhbiBEaXN0cmljdCBCZWlqaW5nIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTBGLUUzICAgKGhleCkJCURhbW0gQ2VsbHVsYXIgU3lzdGVtcyBBL1MKLTAwMEZFMyAgICAgKGJhc2UgMTYpCQlEYW1tIENlbGx1bGFyIFN5c3RlbXMgQS9TCi0JCQkJTW9lbGxlZ2FkZSA2OAotCQkJCVNvZW5kZXJib3JnICBEay02NDAwCi0JCQkJREVOTUFSSwotCi0wMC0wRi1FNCAgIChoZXgpCQlQYW50ZWNoIENvLixMdGQKLTAwMEZFNCAgICAgKGJhc2UgMTYpCQlQYW50ZWNoIENvLixMdGQKLQkJCQlTaGluc29uZyBCL0QgM0YsIDI1LTEyLAotCQkJCVllb3VpZG8tRG9uZywKLQkJCQlZb3VuZ2RldW5ncG8tR1UgU2VvdWwgMTUwLTcxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1FNSAgIChoZXgpCQlNRVJDVVJZIFNFQ1VSSVRZIENPUlBPUkFUSU9OCi0wMDBGRTUgICAgIChiYXNlIDE2KQkJTUVSQ1VSWSBTRUNVUklUWSBDT1JQT1JBVElPTgotCQkJCTIzNTUgTUlSQSBNQVIgQVZFLgotCQkJCUxPTkcgQkVBQ0ggQ0EgOTA4MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUU2ICAgKGhleCkJCU1CVGVjaCBTeXN0ZW1zLCBJbmMuCi0wMDBGRTYgICAgIChiYXNlIDE2KQkJTUJUZWNoIFN5c3RlbXMsIEluYy4KLQkJCQk0MTIgMXN0IEF2ZSBTRQotCQkJCVN1aXRlIDEwMAotCQkJCUN1bGxtYW4gQWxhYmFtYSAzNTA1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRTcgICAoaGV4KQkJTHV0cm9uIEVsZWN0cm9uaWNzIENvLiwgSW5jLgotMDAwRkU3ICAgICAoYmFzZSAxNikJCUx1dHJvbiBFbGVjdHJvbmljcyBDby4sIEluYy4KLQkJCQk3MjAwIFN1dGVyIFJkLgotCQkJCUNvb3BlcnNidXJnIFBBIDE4MDM2LTEyOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUU4ICAgKGhleCkJCUxvYm9zLCBJbmMuCi0wMDBGRTggICAgIChiYXNlIDE2KQkJTG9ib3MsIEluYy4KLQkJCQlVJlQgQmxkZyAzRiwgMS0yLTMgU2FydWdha3UtY2hvLCBDaGl5b2RhLWt1LAotCQkJCVRva3lvICAxMDEtMDA2NAotCQkJCUpBUEFOCi0KLTAwLTBGLUU5ICAgKGhleCkJCUdXIFRFQ0hOT0xPR0lFUyBDTy4sTFRELgotMDAwRkU5ICAgICAoYmFzZSAxNikJCUdXIFRFQ0hOT0xPR0lFUyBDTy4sTFRELgotCQkJCU5vLjM4IFNoYW5nZGkgWGlsdSxIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMEYtRUEgICAoaGV4KQkJR2lnYS1CeXRlIFRlY2hub2xvZ3kgQ28uLExURC4KLTAwMEZFQSAgICAgKGJhc2UgMTYpCQlHaWdhLUJ5dGUgVGVjaG5vbG9neSBDby4sTFRELgotCQkJCU5vLjIxNSxOYW4tUGluZyBSb2FkLFBpbmctSmVuIENpdHksCi0JCQkJUGluZy1KZW4gVGFveXVhbiAzMjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLUVCICAgKGhleCkJCUN5bG9uIENvbnRyb2xzCi0wMDBGRUIgICAgIChiYXNlIDE2KQkJQ3lsb24gQ29udHJvbHMKLQkJCQlDbG9uc2hhdWdoIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJQ2xvbnNoYXVnaAotCQkJCUR1YmxpbiAxNyAgCi0JCQkJSVJFTEFORAotCi0wMC0wRi1FQyAgIChoZXgpCQlBcmt1cyBJbmMuCi0wMDBGRUMgICAgIChiYXNlIDE2KQkJQXJrdXMgSW5jLgotCQkJCTMtOCBDaHVvLWNobwotCQkJCU9rYXlhbWEgIDcwMC0wODM2Ci0JCQkJSkFQQU4KLQotMDAtMEYtRUQgICAoaGV4KQkJQW5hbSBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAwRkVEICAgICAoYmFzZSAxNikJCUFuYW0gRWxlY3Ryb25pY3MgQ28uLCBMdGQKLQkJCQk2NDUgU3VuZ2tvay1kb25nCi0JCQkJRGFud29uLWd1Ci0JCQkJQW5zYW4tY2l0eSBLeXVuZ2tpLWRvIDQyNS04MzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtRUUgICAoaGV4KQkJWFRlYywgSW5jb3Jwb3JhdGVkCi0wMDBGRUUgICAgIChiYXNlIDE2KQkJWFRlYywgSW5jb3Jwb3JhdGVkCi0JCQkJNTc3NSBCbHVlIExhZ29vbiBEcml2ZQotCQkJCVN1aXRlIDI4MAotCQkJCU1pYW1pIEZsb3JpZGEgMzMxMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUVGICAgKGhleCkJCVRoYWxlcyBlLVRyYW5zYWN0aW9ucyBHbWJICi0wMDBGRUYgICAgIChiYXNlIDE2KQkJVGhhbGVzIGUtVHJhbnNhY3Rpb25zIEdtYkgKLQkJCQlLb25yYWQtWnVzZS1TdHJh32UgMTktMjEKLQkJCQlCYWQgSGVyc2ZlbGQgSGVzc2VuIDM2MjUxCi0JCQkJR0VSTUFOWQotCi0wMC0wRi1GMCAgIChoZXgpCQlTdW5yYXkgQ28uIEx0ZC4KLTAwMEZGMCAgICAgKGJhc2UgMTYpCQlTdW5yYXkgQ28uIEx0ZC4KLQkJCQlPc2F3YTItNS01IE1pdGFrYQotCQkJCVRva3lvIDE4MS0wMDE1Ci0JCQkJSkFQQU4KLQotMDAtMEYtRjEgICAoaGV4KQkJbmV4LUcgU3lzdGVtcyBQdGUuTHRkCi0wMDBGRjEgICAgIChiYXNlIDE2KQkJbmV4LUcgU3lzdGVtcyBQdGUuTHRkCi0JCQkJMjUgS2FsbGFuZyBBdmUKLQkJCQkjMDctMDUKLQkJCQkzMzk0MTYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMEYtRjIgICAoaGV4KQkJTG91ZCBUZWNobm9sb2dpZXMgSW5jLgotMDAwRkYyICAgICAoYmFzZSAxNikJCUxvdWQgVGVjaG5vbG9naWVzIEluYy4KLQkJCQkxNjIyMCBXb29kLVJlZCBSZC4gTkUKLQkJCQlXb29kaW52aWxsZSBXQSA5ODA3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRjMgICAoaGV4KQkJSnVuZyBNeW91bmcgQ29tbXVuaWNhdGlvbnMmVGVjaG5vbG9neQotMDAwRkYzICAgICAoYmFzZSAxNikJCUp1bmcgTXlvdW5nIENvbW11bmljYXRpb25zJlRlY2hub2xvZ3kKLQkJCQkxdGggRkwuLCBEb25nIElMIEJsZGcuMTA3IFlhbmdqYWUtRG9uZwotCQkJCVNlb2Noby1LdSBTZW91bCAxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUY0ICAgKGhleCkJCUd1bnRlcm1hbm4gJiBEcnVuY2sgR21iSAotMDAwRkY0ICAgICAoYmFzZSAxNikJCUd1bnRlcm1hbm4gJiBEcnVuY2sgR21iSAotCQkJCURvcnRtdW5kZXIgU3RyLiA0YQotCQkJCVdpbG5zZG9yZiBOUlcgNTcyMzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLUY1ICAgKGhleCkJCUdOJlMgY29tcGFueQotMDAwRkY1ICAgICAoYmFzZSAxNikJCUdOJlMgY29tcGFueQotCQkJCTMwMSBBbnNhbiBTL1cgY2VudGVyLCA2NDMtNyB3b25nb2stZG9uZwotCQkJCUFuc2FuIGNpdHkgR3llb25nZ2ktZG8gNDI1LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1GNiAgIChoZXgpCQlEYXJmb24gRWxlY3Ryb25pY3MgQ29ycC4KLTAwMEZGNiAgICAgKGJhc2UgMTYpCQlEYXJmb24gRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQkzMSwgTGFuZTE3LCBaaWhjaWFuZyBOLiBSb2FkCi0JCQkJR3VlaXNoYW4KLQkJCQlUYW95dWFuICAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLUY3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEZGNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRFIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUY4ICAgKGhleCkJCUNpc2NvICBTeXN0ZW1zCi0wMDBGRjggICAgIChiYXNlIDE2KQkJQ2lzY28gIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRjkgICAoaGV4KQkJVmFsY3JldGVjLCBJbmMuCi0wMDBGRjkgICAgIChiYXNlIDE2KQkJVmFsY3JldGVjLCBJbmMuCi0JCQkJQnl1Y2tzYW4gRGlnaXRhbCBWYWxsZXkgSUkgMTVGCi0JCQkJNDgxLTEwLCBHYXNhbi1Eb25nLCBHZXVtY2hlb24tR3UKLQkJCQlTZW91bCAgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1GQSAgIChoZXgpCQlPcHRpbmVsIFN5c3RlbXMsIEluYy4KLTAwMEZGQSAgICAgKGJhc2UgMTYpCQlPcHRpbmVsIFN5c3RlbXMsIEluYy4KLQkJCQk2ODM1IERlZXJwYXRoIFJkLgotCQkJCUVsa3JpZGdlIE1EIDIxMDc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1GQiAgIChoZXgpCQlOaXBwb24gRGVuc28gSW5kdXN0cnkgQ28uLCBMdGQuCi0wMDBGRkIgICAgIChiYXNlIDE2KQkJTmlwcG9uIERlbnNvIEluZHVzdHJ5IENvLiwgTHRkLgotCQkJCTMtMTQtMTkKLQkJCQlTaGliYXVyYSwgTWluYXRvLWt1IFRva3lvLCAxMDgtODU2MAotCQkJCUpBUEFOCi0KLTAwLTBGLUZDICAgKGhleCkJCU1lcml0IExpLUxpbiBFbnQuCi0wMDBGRkMgICAgIChiYXNlIDE2KQkJTWVyaXQgTGktTGluIEVudC4KLQkJCQlOby4gMjAgV3UtTG9uZyA2IFJkLgotCQkJCVd1LUt1IFRhaXBlaSAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLUZEICAgKGhleCkJCUdsb3J5dGVrIE5ldHdvcmsgSW5jLgotMDAwRkZEICAgICAoYmFzZSAxNikJCUdsb3J5dGVrIE5ldHdvcmsgSW5jLgotCQkJCTVGLi0zLCBOby4xNiwgU2VjLiAxLCBEb25nZGEgUmQuLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtRkUgICAoaGV4KQkJRy1QUk8gQ09NUFVURVIKLTAwMEZGRSAgICAgKGJhc2UgMTYpCQlHLVBSTyBDT01QVVRFUgotCQkJCWZpcnN0IGFycmFuZ2UgQyBZaW5nSHUgaW5kdXN0cmlhbCBlc3RhdGUgUWluZ1hpIGNvdW50cnkgRG9uZ0d1YW4gY2l0eQotCQkJCURvbmdHdWFuIEd1YW5nRG9uZyA1MjM2NDgKLQkJCQlDSElOQQotCi0wMC0wRi1GRiAgIChoZXgpCQlDb250cm9sNAotMDAwRkZGICAgICAoYmFzZSAxNikJCUNvbnRyb2w0Ci0JCQkJMTE3MzQgUy4gRWxlY3Rpb24gRHJpdmUKLQkJCQlEcmFwZXIgVVQgODQwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTAwICAgKGhleCkJCUNBQkxFIFRFTEVWSVNJT04gTEFCT1JBVE9SSUVTLCBJTkMuCi0wMDEwMDAgICAgIChiYXNlIDE2KQkJQ0FCTEUgVEVMRVZJU0lPTiBMQUJPUkFUT1JJRVMsIElOQy4KLQkJCQk4NTggQ29hbCBDcmVlayBDaXJjbGUKLQkJCQlMb3Vpc3ZpbGxlIENPIDgwMDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wMSAgIChoZXgpCQlDaXRlbAotMDAxMDAxICAgICAoYmFzZSAxNikJCUNpdGVsCi0JCQkJTG91Z2hib3JvdWdoIElubm92YXRpb24gQ2VudHJlCi0JCQkJRXBpbmFsIFdheQotCQkJCUxvdWdoYm9yb3VnaCAgTEUxMSAzRUgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC0wMiAgIChoZXgpCQlBQ1RJQQotMDAxMDAyICAgICAoYmFzZSAxNikJCUFDVElBCi0JCQkJMjUgQ0hFTUlOIERFIFBPVVZPVVJWSUxMRQotCQkJCTMxNDMyIFRPVUxPVVNFLCAgQ0VERVggMDQgIAotCQkJCUZSQU5DRQotCi0wMC0xMC0wMyAgIChoZXgpCQlJTUFUUk9OLCBJTkMuCi0wMDEwMDMgICAgIChiYXNlIDE2KQkJSU1BVFJPTiwgSU5DLgotCQkJCTM4OSBPWVNURVIgUE9JTlQgQkxWRC4KLQkJCQlTTy4gU0FOIEZSQU5DSVNDTyBDQSA5NDA4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMDQgICAoaGV4KQkJVEhFIEJSQU5UTEVZIENPSUxFIENPTVBBTlksSU5DCi0wMDEwMDQgICAgIChiYXNlIDE2KQkJVEhFIEJSQU5UTEVZIENPSUxFIENPTVBBTlksSU5DCi0JCQkJNTQ1IFJFU0VBUkNIIERSSVZFCi0JCQkJQVRIRU5TIEdBIDMwNjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wNSAgIChoZXgpCQlVRUMgQ09NTUVSQ0lBTAotMDAxMDA1ICAgICAoYmFzZSAxNikJCVVFQyBDT01NRVJDSUFMCi0JCQkJUC5PLiBCT1ggNTQsCi0JCQkJTVQuIEVER0VDT01CRQotCQkJCTQzMDAgRFVSQkFOICAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMTAtMDYgICAoaGV4KQkJVGhhbGVzIENvbnRhY3QgU29sdXRpb25zIEx0ZC4KLTAwMTAwNiAgICAgKGJhc2UgMTYpCQlUaGFsZXMgQ29udGFjdCBTb2x1dGlvbnMgTHRkLgotCQkJCVRvbGJhciBXYXkKLQkJCQlTb3V0aGFtcHRvbiwgU08zMCAyWlAgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEwLTA3ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTAwNyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRSAgIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMDggICAoaGV4KQkJVklFTk5BIFNZU1RFTVMgQ09SUE9SQVRJT04KLTAwMTAwOCAgICAgKGJhc2UgMTYpCQlWSUVOTkEgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTY2NTEgRlJBU0VSV09PRCBQTEFDRQotCQkJCVNVSVRFICMyNTAKLQkJCQlSSUNITU9ORCwgQi5DLiBWNlcgMUozICAKLQkJCQlDQU5BREEKLQotMDAtMTAtMDkgICAoaGV4KQkJSE9STyBRVUFSVFoKLTAwMTAwOSAgICAgKGJhc2UgMTYpCQlIT1JPIFFVQVJUWgotCQkJCVouSS4gUk9VVEUgREUgTklPUlQKLQkJCQk4NTIwMCAtIEZPTlRFTkFZIExFIENPTVRFICAKLQkJCQlGUkVOQ0ggR1VJQU5BCi0KLTAwLTEwLTBBICAgKGhleCkJCVdJTExJQU1TIENPTU1VTklDQVRJT05TIEdST1VQCi0wMDEwMEEgICAgIChiYXNlIDE2KQkJV0lMTElBTVMgQ09NTVVOSUNBVElPTlMgR1JPVVAKLQkJCQlBRFZBTkNFRCBURUNITk9MT0dJRVMKLQkJCQkxMTEgRUFTVCBGSVJTVAotCQkJCVRVTFNBIE9LIDc0MTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wQiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwMEIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUgIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMEMgICAoaGV4KQkJSVRPIENPLiwgTFRELgotMDAxMDBDICAgICAoYmFzZSAxNikJCUlUTyBDTy4sIExURC4KLQkJCQk4LTIgTUlZQU5PU0hJVEEtQ0hPCi0JCQkJSElSQUtBVEEtQ0lUWSwgT1NBS0EgIAotCQkJCUpBUEFOCi0KLTAwLTEwLTBEICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTAwRCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4tU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wRSAgIChoZXgpCQlNSUNSTyBMSU5FQVIgQ09QT1JBVElPTgotMDAxMDBFICAgICAoYmFzZSAxNikJCU1JQ1JPIExJTkVBUiBDT1BPUkFUSU9OCi0JCQkJMjA5MiBDT05DT1VSU0UgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMEYgICAoaGV4KQkJSU5EVVNUUklBTCBDUFUgU1lTVEVNUwotMDAxMDBGICAgICAoYmFzZSAxNikJCUlORFVTVFJJQUwgQ1BVIFNZU1RFTVMKLQkJCQkxMTEtRCBXLiBEWUVSIFJPQUQKLQkJCQlTQU5UQSBBTkEgQ0EgOTI3MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTEwICAgKGhleCkJCUlOSVRJTyBDT1JQT1JBVElPTgotMDAxMDEwICAgICAoYmFzZSAxNikJCUlOSVRJTyBDT1JQT1JBVElPTgotCQkJCTIxODggQiBERUwgRlJBTkNPIFNUUkVFVAotCQkJCVNBTiBKT1NFIENBIDk1MTE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0xMSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwMTEgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0xMiAgIChoZXgpCQlQUk9DRVNTT1IgU1lTVEVNUyAoSSkgUFZUIExURAotMDAxMDEyICAgICAoYmFzZSAxNikJCVBST0NFU1NPUiBTWVNURU1TIChJKSBQVlQgTFRECi0JCQkJMjQgUklDSE1PTkQgUk9BRAotCQkJCUJBTkdBTE9SRSA1NjAgMDI1ICAKLQkJCQlJTkRJQQotCi0wMC0xMC0xMyAgIChoZXgpCQlLb250cm9uIEFtZXJpY2EsIEluYy4KLTAwMTAxMyAgICAgKGJhc2UgMTYpCQlLb250cm9uIEFtZXJpY2EsIEluYy4KLQkJCQkxNDExOCBTdG93ZSBEcml2ZQotCQkJCVBvd2F5LCBDQSA5MjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0xNCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwMTQgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0xNSAgIChoZXgpCQlPT21vbiBJbmMuCi0wMDEwMTUgICAgIChiYXNlIDE2KQkJT09tb24gSW5jLgotCQkJCVBPIEJPWCA4MjQxCi0JCQkJQ09CVVJHIE9SIDk3NDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0xNiAgIChoZXgpCQlULlNRV0FSRQotMDAxMDE2ICAgICAoYmFzZSAxNikJCVQuU1FXQVJFCi0JCQkJNiwgUEFSQyBBUklBTkUKLQkJCQlJTU1FVUJMRSBNRVJDVVJFCi0JCQkJNzgyODQgR1VZQU5DT1VSVCBDRURFWCAgCi0JCQkJRlJBTkNFCi0KLTAwLTEwLTE3ICAgKGhleCkJCUJvc2NoIEFjY2VzcyBTeXN0ZW1zIEdtYkgKLTAwMTAxNyAgICAgKGJhc2UgMTYpCQlCb3NjaCBBY2Nlc3MgU3lzdGVtcyBHbWJICi0JCQkJQ2hhcmxvdHRlbmJ1cmdlciBBbGxlZSA1MCAgICAgICAgICAgIAotCQkJCUFBQ0hFTiAgICBELTUyMDY4IAotCQkJCUdFUk1BTlkKLQotMDAtMTAtMTggICAoaGV4KQkJQlJPQURDT00gQ09SUE9SQVRJT04KLTAwMTAxOCAgICAgKGJhc2UgMTYpCQlCUk9BRENPTSBDT1JQT1JBVElPTgotCQkJCTE2MjE1IEFMVE9OIFBBUktXQVkKLQkJCQlQLk8uIEJPWCA1NzAxMwotCQkJCUlSVklORSBDQSA5MjYxOS03MDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0xOSAgIChoZXgpCQlTSVJPTkEgREVOVEFMIFNZU1RFTVMgR21iSCAmIENvLiBLRwotMDAxMDE5ICAgICAoYmFzZSAxNikJCVNJUk9OQSBERU5UQUwgU1lTVEVNUyBHbWJIICYgQ28uIEtHCi0JCQkJRkFCUklLU1RSQVNTRSAzMQotCQkJCTY0NjI1IEJFTlNIRUlNICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTEwLTFBICAgKGhleCkJCVBpY3R1cmVUZWwgQ29ycC4KLTAwMTAxQSAgICAgKGJhc2UgMTYpCQlQaWN0dXJlVGVsIENvcnAuCi0JCQkJMTAwIE1JTlVURU1BTiBST0FELCBNUzY0MQotCQkJCUFORE9WRVIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTFCICAgKGhleCkJCUNPUk5FVCBURUNITk9MT0dZLCBJTkMuCi0wMDEwMUIgICAgIChiYXNlIDE2KQkJQ09STkVUIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk3Ri00LCBOTy4gNDYgQ0hVTkcgU0hBTiBOLlJPQUQKLQkJCQlTRUMuIDIsIFRBSVBFSSAgCi0JCQkJVEFKSUtJU1RBTgotCi0wMC0xMC0xQyAgIChoZXgpCQlPSE0gVEVDSE5PTE9HSUVTIElOVEwsIExMQwotMDAxMDFDICAgICAoYmFzZSAxNikJCU9ITSBURUNITk9MT0dJRVMgSU5UTCwgTExDCi0JCQkJNCBFWEVDVVRJVkUgQ0lSQ0xFLCBTdWl0ZSAxODUKLQkJCQlJUlZJTkUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTFEICAgKGhleCkJCVdJTkJPTkQgRUxFQ1RST05JQ1MgQ09SUC4KLTAwMTAxRCAgICAgKGJhc2UgMTYpCQlXSU5CT05EIEVMRUNUUk9OSUNTIENPUlAuCi0JCQkJTk8uIDQsIENSRUFUSU9OIFJELiBJSUkKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU4gQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLTFFICAgKGhleCkJCU1BVFNVU0hJVEEgRUxFQ1RST05JQyBJTlNUUlVNRU5UUyBDT1JQLgotMDAxMDFFICAgICAoYmFzZSAxNikJCU1BVFNVU0hJVEEgRUxFQ1RST05JQyBJTlNUUlVNRU5UUyBDT1JQLgotCQkJCTIzLTkgS0lZT0hBUkEgSU5EVVNUUklBTCBQQVJLCi0JCQkJVVRTVU5PTUlZQSBUb2NoaWdpIDMyMS0zMiAgCi0JCQkJSkFQQU4KLQotMDAtMTAtMUYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDFGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTIwICAgKGhleCkJCUhhbmQgSGVsZCBQcm9kdWN0cyBJbmMKLTAwMTAyMCAgICAgKGJhc2UgMTYpCQlIYW5kIEhlbGQgUHJvZHVjdHMgSW5jCi0JCQkJNzAwIFZpc2lvbnMgRHJpdmUKLQkJCQlTa2FuZWF0ZWxlcyBGYWxscyBOWSAxMzE1My0wMjA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yMSAgIChoZXgpCQlFTkNBTlRPIE5FVFdPUktTLCBJTkMuCi0wMDEwMjEgICAgIChiYXNlIDE2KQkJRU5DQU5UTyBORVRXT1JLUywgSU5DLgotCQkJCTI5NTMgQlVOS0VSIEhJTEwgTEFORQotCQkJCVNVSVRFICM0MDAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjIgICAoaGV4KQkJU2F0Q29tIE1lZGlhIENvcnBvcmF0aW9uCi0wMDEwMjIgICAgIChiYXNlIDE2KQkJU2F0Q29tIE1lZGlhIENvcnBvcmF0aW9uCi0JCQkJMzI1NS03IFNDT1RUIEJMVkQuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTIzICAgKGhleCkJCU5ldHdvcmsgRXF1aXBtZW50IFRlY2hub2xvZ2llcwotMDAxMDIzICAgICAoYmFzZSAxNikJCU5ldHdvcmsgRXF1aXBtZW50IFRlY2hub2xvZ2llcwotCQkJCTY5MDAgUGFzZW8gUGFkcmUgUGFya3dheQotCQkJCUZyZWVtb250IENBIDk0NTU1LTM2NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTI0ICAgKGhleCkJCU5BR09ZQSBFTEVDVFJJQyBXT1JLUyBDTy4sIExURAotMDAxMDI0ICAgICAoYmFzZSAxNikJCU5BR09ZQSBFTEVDVFJJQyBXT1JLUyBDTy4sIExURAotCQkJCTI5LTEgU0hJTk9EQSwgTUlXQS1DSE8KLQkJCQlBTUEtR1VOLCBBSUNISSA0OTAtMTIgIAotCQkJCUpBUEFOCi0KLTAwLTEwLTI1ICAgKGhleCkJCUdyYXloaWxsLCBJbmMKLTAwMTAyNSAgICAgKGJhc2UgMTYpCQlHcmF5aGlsbCwgSW5jCi0JCQkJNTYxIEhpbGxncm92ZSBBdmUKLQkJCQlMYUdyYW5nZSBJTCA2MDUyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjYgICAoaGV4KQkJQUNDRUxFUkFURUQgTkVUV09SS1MsIElOQy4KLTAwMTAyNiAgICAgKGJhc2UgMTYpCQlBQ0NFTEVSQVRFRCBORVRXT1JLUywgSU5DLgotCQkJCTMxMjM4IFZJQSBDT0xJTkFTLCBVTklUCi0JCQkJV0VTVExBS0UgVklMTEFHRSBDQSA5MTM2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjcgICAoaGV4KQkJTC0zIENPTU1VTklDQVRJT05TIEVBU1QKLTAwMTAyNyAgICAgKGJhc2UgMTYpCQlMLTMgQ09NTVVOSUNBVElPTlMgRUFTVAotCQkJCU9ORSBGRURFUkFMIFNUUkVFVCAtIEEmRS0zRVMKLQkJCQlDQU1ERU4gTkogMDgxMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTI4ICAgKGhleCkJCUNPTVBVVEVSIFRFQ0hOSUNBLCBJTkMuCi0wMDEwMjggICAgIChiYXNlIDE2KQkJQ09NUFVURVIgVEVDSE5JQ0EsIElOQy4KLQkJCQkzLTUtMTkgSElHQVNISU5BS0EgSEFLQVRBLUtVCi0JCQkJRlVLVU9LQS1TSQotCQkJCUZVS1VPS0EgIDgxNiAgCi0JCQkJSkFQQU4KLQotMDAtMTAtMjkgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDI5ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMkEgICAoaGV4KQkJWkYgTUlDUk9TWVNURU1TLCBJTkMuCi0wMDEwMkEgICAgIChiYXNlIDE2KQkJWkYgTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJMTA1MiBFTFdFTEwgQ09VUlQKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDMtNDMwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMkIgICAoaGV4KQkJVU1BWCBEQVRBIFNZU1RFTVMsIElOQy4KLTAwMTAyQiAgICAgKGJhc2UgMTYpCQlVTUFYIERBVEEgU1lTVEVNUywgSU5DLgotCQkJCU5PLiAxLTEsIFImRCBST0FEIDIKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtMkMgICAoaGV4KQkJTGFzYXQgTmV0d29ya3MgQS9TCi0wMDEwMkMgICAgIChiYXNlIDE2KQkJTGFzYXQgTmV0d29ya3MgQS9TCi0JCQkJU2thbGh1c2UgMTMKLQkJCQlTSy05MjQwIE5pYmUgIAotCQkJCURFTk1BUksKLQotMDAtMTAtMkQgICAoaGV4KQkJSElUQUNISSBTT0ZUV0FSRSBFTkdJTkVFUklORwotMDAxMDJEICAgICAoYmFzZSAxNikJCUhJVEFDSEkgU09GVFdBUkUgRU5HSU5FRVJJTkcKLQkJCQk1LTc5LCBPTk9FQ0hPLCBOQUtBLUtVCi0JCQkJWU9LT0hBTUEgMjMxICAKLQkJCQlKQVBBTgotCi0wMC0xMC0yRSAgIChoZXgpCQlORVRXT1JLIFNZU1RFTVMgJiBURUNITk9MT0dJRVMgUFZULiBMVEQuCi0wMDEwMkUgICAgIChiYXNlIDE2KQkJTkVUV09SSyBTWVNURU1TICYgVEVDSE5PTE9HSUVTIFBWVC4gTFRELgotCQkJCVBMT1QgTk8uIDIsIENPQ0hJTiBFWFBPUlQgUFJPQ0VTU0lORyAgWk8KLQkJCQlLQUtLQU5BRCwgQ09DSElOIDY4MiAwMzAgIAotCQkJCUlORElBCi0KLTAwLTEwLTJGICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTAyRiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4KLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zMCAgIChoZXgpCQlFSU9OIEluYy4KLTAwMTAzMCAgICAgKGJhc2UgMTYpCQlFSU9OIEluYy4KLQkJCQkzMjAgTWFyY2ggUm9hZAotCQkJCVN1aXRlIDUwMAotCQkJCU90dGF3YSBPTiBLMksgMkUzCi0JCQkJQ0FOQURBCi0KLTAwLTEwLTMxICAgKGhleCkJCU9CSkVDVElWRSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAxMDMxICAgICAoYmFzZSAxNikJCU9CSkVDVElWRSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTc1IFJPQ0hFU1RFUiBBVkUuCi0JCQkJVU5JVCAxCi0JCQkJUE9SVFNNT1VUSCBOSCAwMzgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMzIgICAoaGV4KQkJQUxUQSBURUNITk9MT0dZCi0wMDEwMzIgICAgIChiYXNlIDE2KQkJQUxUQSBURUNITk9MT0dZCi0JCQkJOTUwMCBTT1VUSCA1MDAgV0VTVCAtIFNURSAjMjEyCi0JCQkJU0FORFkgVVQgODQwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTMzICAgKGhleCkJCUFDQ0VTU0xBTiBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAxMDMzICAgICAoYmFzZSAxNikJCUFDQ0VTU0xBTiBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTQ0IEFJUlBPUlQgUEFSS1dBWQotCQkJCVNBTiBKT1NFIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zNCAgIChoZXgpCQlHTlAgQ29tcHV0ZXJzCi0wMDEwMzQgICAgIChiYXNlIDE2KQkJR05QIENvbXB1dGVycwotCQkJCTU1NSBFLkh1bnRpbmd0b24gRHJpdmUKLQkJCQlNb25yb3ZpYSBDQSA5MTAxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMzUgICAoaGV4KQkJRUxJVEVHUk9VUCBDT01QVVRFUiBTWVNURU1TIENPLiwgTFRECi0wMDEwMzUgICAgIChiYXNlIDE2KQkJRUxJVEVHUk9VUCBDT01QVVRFUiBTWVNURU1TIENPLiwgTFRECi0JCQkJNkYsIE5PLiA4OCwgU0VDLiA2Ci0JCQkJQ0hVTkcgU0hBTiBOLiBSRC4KLQkJCQlTaGloIExpbiBUQUlQRUkgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC0zNiAgIChoZXgpCQlJTlRFUi1URUwgSU5URUdSQVRFRCBTWVNURU1TCi0wMDEwMzYgICAgIChiYXNlIDE2KQkJSU5URVItVEVMIElOVEVHUkFURUQgU1lTVEVNUwotCQkJCTczMDAgVy4gQk9TVE9OIFNUUkVFVAotCQkJCUNIQU5ETEVSIEFaIDg1MjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zNyAgIChoZXgpCQlDWVEndmUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTAzNyAgICAgKGJhc2UgMTYpCQlDWVEndmUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlDT1NNTyBCTERHLiAxMEYsIE5PLjEtNwotCQkJCVNISU5KVUtVIDEtQ0hPTUUKLQkJCQlTSElOSlVLVS1LVSwgIFRPS1lPIDE2MCAgCi0JCQkJSkFQQU4KLQotMDAtMTAtMzggICAoaGV4KQkJTUlDUk8gUkVTRUFSQ0ggSU5TVElUVVRFLCBJTkMuCi0wMDEwMzggICAgIChiYXNlIDE2KQkJTUlDUk8gUkVTRUFSQ0ggSU5TVElUVVRFLCBJTkMuCi0JCQkJMkYsIDJMLTItNSBNSU5BTUkgU0hJTkFHQVdBCi0JCQkJU0hJTkFHQVdBLUtVCi0JCQkJVE9LWU8gIAotCQkJCUpBUEFOCi0KLTAwLTEwLTM5ICAgKGhleCkJCVZlY3Ryb24gU3lzdGVtcyBBRwotMDAxMDM5ICAgICAoYmFzZSAxNikJCVZlY3Ryb24gU3lzdGVtcyBBRwotCQkJCVdpbGx5LUJyYW5kdC1XZWcgNDEKLQkJCQk0ODE1NSBNdWVuc3RlciAgCi0JCQkJR0VSTUFOWQotCi0wMC0xMC0zQSAgIChoZXgpCQlESUFNT05EIE5FVFdPUksgVEVDSAotMDAxMDNBICAgICAoYmFzZSAxNikJCURJQU1PTkQgTkVUV09SSyBURUNICi0JCQkJUC5PLiBCT1ggODQ1MjUKLQkJCQlHUkVFTlNJREUgMjAzNCAgCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTEwLTNCICAgKGhleCkJCUhJUFBJIE5FVFdPUktJTkcgRk9SVU0KLTAwMTAzQiAgICAgKGJhc2UgMTYpCQlISVBQSSBORVRXT1JLSU5HIEZPUlVNCi0JCQkJUE8gQk9YIDEwMTczCi0JCQkJQUxCVVFVRVJRVUUgTk0gODcxODQtMDE3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtM0MgICAoaGV4KQkJSUMgRU5TRU1CTEUsIElOQy4KLTAwMTAzQyAgICAgKGJhc2UgMTYpCQlJQyBFTlNFTUJMRSwgSU5DLgotCQkJCTMyNTUtMiBTQ09UVCBCTFZELi0tU1RFLiMxMDUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtM0QgICAoaGV4KQkJUEhBU0VDT00sIExURC4KLTAwMTAzRCAgICAgKGJhc2UgMTYpCQlQSEFTRUNPTSwgTFRELgotCQkJCVAuTy4gQk9YIDQ1MDE3Ci0JCQkJSkVSVVNBTEVNIDkxNDUwICAKLQkJCQlJU1JBRUwKLQotMDAtMTAtM0UgICAoaGV4KQkJTkVUU0NIT09MUyBDT1JQT1JBVElPTgotMDAxMDNFICAgICAoYmFzZSAxNikJCU5FVFNDSE9PTFMgQ09SUE9SQVRJT04KLQkJCQkyMDAzIExBTkRJTkdTIERSSVZFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtM0YgICAoaGV4KQkJVE9MTEdSQURFIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDEwM0YgICAgIChiYXNlIDE2KQkJVE9MTEdSQURFIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNDkzIE5JWE9OIFJPQUQKLQkJCQlDSEVTV0lDSyBQQSAxNTAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNDAgICAoaGV4KQkJSU5URVJNRUMgQ09SUE9SQVRJT04KLTAwMTA0MCAgICAgKGJhc2UgMTYpCQlJTlRFUk1FQyBDT1JQT1JBVElPTgotCQkJCTYwMDEgMzZUSCBBVkUgV0VTVAotCQkJCVAuTy4gQk9YIDQyODAKLQkJCQlFVkVSRVRUIFdBIDk4MjAzLTkyODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTQxICAgKGhleCkJCUJSSVNUT0wgQkFCQ09DSywgSU5DLgotMDAxMDQxICAgICAoYmFzZSAxNikJCUJSSVNUT0wgQkFCQ09DSywgSU5DLgotCQkJCTExMDAgQlVDS0lOR0hBTSBTVFJFRVQKLQkJCQlXQVRFUlRPV04gQ1QgMDY3OTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTQyICAgKGhleCkJCUFsYWNyaXRlY2gsIEluYy4KLTAwMTA0MiAgICAgKGJhc2UgMTYpCQlBbGFjcml0ZWNoLCBJbmMuCi0JCQkJMTk5NSBOLiBGaXJzdCBTdHJlZXQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlTYW4gSm9zZSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNDMgICAoaGV4KQkJQTIgQ09SUE9SQVRJT04KLTAwMTA0MyAgICAgKGJhc2UgMTYpCQlBMiBDT1JQT1JBVElPTgotCQkJCTYtMTQtMTEgWVVUQUtBLUNITwotCQkJCVNISU5BR0FXQS1LVQotCQkJCVRPS1lPICAKLQkJCQlKQVBBTgotCi0wMC0xMC00NCAgIChoZXgpCQlJbm5vTGFicyBDb3Jwb3JhdGlvbgotMDAxMDQ0ICAgICAoYmFzZSAxNikJCUlubm9MYWJzIENvcnBvcmF0aW9uCi0JCQkJMkYtNCwgTk8uIDE2LCBMQU5FIDYwOSwgQ0hVTkctSFNJTiBSRC4KLQkJCQlTRUMuIDUgU0FOLUNIVU5HIENJVFkKLQkJCQlUYWlwZWkgSHNpZW4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtNDUgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDEwNDUgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJT1BUZXJhIFNvbHV0aW9ucyBEaXZpc2lvbgotCQkJCTM0MCBUZXJyeSBGb3ggRHJpdmUKLQkJCQlLYW5hdGEgT250YXJpbyBLMkstMlgzIAotCQkJCUNBTkFEQQotCi0wMC0xMC00NiAgIChoZXgpCQlBTENPUk4gTUNCUklERSBJTkMuCi0wMDEwNDYgICAgIChiYXNlIDE2KQkJQUxDT1JOIE1DQlJJREUgSU5DLgotCQkJCTMzMDAgUy4gSElBV0FTU0VFICAjMTA1Ci0JCQkJT1JMQU5ETyBGTCAzMjgzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNDcgICAoaGV4KQkJRUNITyBFTEVUUklDIENPLiBMVEQuCi0wMDEwNDcgICAgIChiYXNlIDE2KQkJRUNITyBFTEVUUklDIENPLiBMVEQuCi0JCQkJTk8uMTgwMCBJQ0hJR0FPIENITwotCQkJCU1JRE9SSSBXQVJECi0JCQkJWU9LT0hBTUEgQ0lUWSAgMjI1Ci0JCQkJSkFQQU4KLQotMDAtMTAtNDggICAoaGV4KQkJSFRSQyBBVVRPTUFUSU9OLCBJTkMuCi0wMDEwNDggICAgIChiYXNlIDE2KQkJSFRSQyBBVVRPTUFUSU9OLCBJTkMuCi0JCQkJMjg1IExBVkFMIFNUUkVFVAotCQkJCUJST01QVE9OVklMTEUKLQkJCQlRVUVCRUMgSjBCIDFIMCAgCi0JCQkJQ0FOQURBCi0KLTAwLTEwLTQ5ICAgKGhleCkJCVNob3JlVGVsLCBJbmMKLTAwMTA0OSAgICAgKGJhc2UgMTYpCQlTaG9yZVRlbCwgSW5jCi0JCQkJOTYwIFN0ZXdhcnQgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTRBICAgKGhleCkJCVRoZSBQYXJ2dXMgQ29ycG9yYXRpb24KLTAwMTA0QSAgICAgKGJhc2UgMTYpCQlUaGUgUGFydnVzIENvcnBvcmF0aW9uCi0JCQkJMzIyMiBTIFdhc2hpbmd0b24gU3QuCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTRCICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwMTA0QiAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCQVlGUk9OVCBQTEFaQQotCQkJCU1BSUxTVE9QOiA0MjIwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTRDICAgKGhleCkJCUxlQ3JveSBDb3Jwb3JhdGlvbgotMDAxMDRDICAgICAoYmFzZSAxNikJCUxlQ3JveSBDb3Jwb3JhdGlvbgotCQkJCTMzODUgU2NvdHQgQmx2ZC4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNEQgICAoaGV4KQkJU1VSVEVDIElORFVTVFJJRVMsIElOQy4KLTAwMTA0RCAgICAgKGJhc2UgMTYpCQlTVVJURUMgSU5EVVNUUklFUywgSU5DLgotCQkJCU5PLjExLCBBTExFWSAxNiwgTEFORSAzMzcKLQkJCQlUQS1UVU5HIFJPQUQgU0VDLjEsIFNISS1DSElICi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLTRFICAgKGhleCkJCUNFT0xPR0lDCi0wMDEwNEUgICAgIChiYXNlIDE2KQkJQ0VPTE9HSUMKLQkJCQlaQSBERSBQSVNTQUxPT1AKLQkJCQlSVUUgRURPVUFSRCBCUkFOTFkKLQkJCQk3ODE5MiBUUkFQUEVTICAKLQkJCQlGUkFOQ0UKLQotMDAtMTAtNEYgICAoaGV4KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0wMDEwNEYgICAgIChiYXNlIDE2KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0JCQkJMTcgTmV0d29yayBDaXJjbGUKLQkJCQlCdWlsZGluZyAxNywgVU1QSzE3LTEzMQotCQkJCU1lbmxvIFBhcmsgQ0EgOTUwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTUwICAgKGhleCkJCVJJT04gQ08uLCBMVEQuCi0wMDEwNTAgICAgIChiYXNlIDE2KQkJUklPTiBDTy4sIExURC4KLQkJCQkzLTIwLTQxIEhJR0FTSElNT1RPTUFDSEkKLQkJCQlLT0tVQlVOSkksIFRPS1lPIDE4NSAgCi0JCQkJSkFQQU4KLQotMDAtMTAtNTEgICAoaGV4KQkJQ01JQ1JPIENPUlBPUkFUSU9OCi0wMDEwNTEgICAgIChiYXNlIDE2KQkJQ01JQ1JPIENPUlBPUkFUSU9OCi0JCQkJMTctMjAtMiBLQU1JTk8tQ0hPCi0JCQkJVEFLQU1BVFNVLVNISSwgS0FHQVdBIDc2MSAgCi0JCQkJSkFQQU4KLQotMDAtMTAtNTIgICAoaGV4KQkJTUVUVExFUi1UT0xFRE8gKEFMQlNUQURUKSBHTUJICi0wMDEwNTIgICAgIChiYXNlIDE2KQkJTUVUVExFUi1UT0xFRE8gKEFMQlNUQURUKSBHTUJICi0JCQkJUC5PLiBCT1ggMiA1MAotCQkJCUQtNzI0MjMgQUxCU1RBRFQgIAotCQkJCUdFUk1BTlkKLQotMDAtMTAtNTMgICAoaGV4KQkJQ09NUFVURVIgVEVDSE5PTE9HWSBDT1JQLgotMDAxMDUzICAgICAoYmFzZSAxNikJCUNPTVBVVEVSIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQk1MCBXLiBURUNITkVDRU5URVIgRFJJVkUKLQkJCQlNSUxGT1JEIE9IIDQ1MTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC01NCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwNTQgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC01NSAgIChoZXgpCQlGVUpJVFNVIE1JQ1JPRUxFQ1RST05JQ1MsIElOQy4KLTAwMTA1NSAgICAgKGJhc2UgMTYpCQlGVUpJVFNVIE1JQ1JPRUxFQ1RST05JQ1MsIElOQy4KLQkJCQkzNTQ1IE5PUlRIIEZJUlNUIFNUUkVFVAotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTU2ICAgKGhleCkJCVNPRElDSyBDTy4sIExURC4KLTAwMTA1NiAgICAgKGJhc2UgMTYpCQlTT0RJQ0sgQ08uLCBMVEQuCi0JCQkJMy0xMi0xIE5BS0FNQUNISURBSQotCQkJCVRTVVpVS0ktS1UsIFlPS09IQU1BIEtBTkFHQVdBIDIyNCAKLQkJCQlKQVBBTgotCi0wMC0xMC01NyAgIChoZXgpCQlSZWJlbC5jb20sIEluYy4KLTAwMTA1NyAgICAgKGJhc2UgMTYpCQlSZWJlbC5jb20sIEluYy4KLQkJCQkxNTAgSVNBQkVMTEEgU1RSRUVULS1TVEUuIDEwMDAKLQkJCQlPVFRBV0EsIE9OVEFSSU8gSzFTIDFWNyAgCi0JCQkJQ0FOQURBCi0KLTAwLTEwLTU4ICAgKGhleCkJCUFycm93UG9pbnQgQ29tbXVuaWNhdGlvbnMKLTAwMTA1OCAgICAgKGJhc2UgMTYpCQlBcnJvd1BvaW50IENvbW11bmljYXRpb25zCi0JCQkJMjM1IExJVFRMRVRPTiBST0FECi0JCQkJV0VTVEZPUkQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTU5ICAgKGhleCkJCURJQUJMTyBSRVNFQVJDSCBDTy4gTExDCi0wMDEwNTkgICAgIChiYXNlIDE2KQkJRElBQkxPIFJFU0VBUkNIIENPLiBMTEMKLQkJCQk4MjUgU1RFV0FSVCBEUklWRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNUEgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDAxMDVBICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJTUFJTFNUT1A6ICA0MjIwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTVCICAgKGhleCkJCU5FVCBJTlNJR0hUIEFCCi0wMDEwNUIgICAgIChiYXNlIDE2KQkJTkVUIElOU0lHSFQgQUIKLQkJCQlW5HN0YmVyZ2EgQWxs6SA5Ci0JCQkJU0UtMTI2MCAzMCBI5GdlcnN0ZW4gCi0JCQkJU1dFREVOCi0KLTAwLTEwLTVDICAgKGhleCkJCVFVQU5UVU0gREVTSUdOUyAoSC5LLikgTFRELgotMDAxMDVDICAgICAoYmFzZSAxNikJCVFVQU5UVU0gREVTSUdOUyAoSC5LLikgTFRELgotCQkJCTUvRi4sIFNPTUVSU0VUIEhPVVNFLCBUQUlLT08gUExBQ0UKLQkJCQk5NzkgS0lORydTIFJPQUQsCi0JCQkJUVVBUlJZIEJBWSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTEwLTVEICAgKGhleCkJCURyYWVnZXIgTWVkaWNhbAotMDAxMDVEICAgICAoYmFzZSAxNikJCURyYWVnZXIgTWVkaWNhbAotCQkJCU1vaXNsaW5nZXIgQWxsZWUgNTMtNTUKLQkJCQlMdWViZWNrICBELTIzNTQyCi0JCQkJR0VSTUFOWQotCi0wMC0xMC01RSAgIChoZXgpCQlIRUtJTUlBTiBMQUJPUkFUT1JJRVMsIElOQy4KLTAwMTA1RSAgICAgKGJhc2UgMTYpCQlIRUtJTUlBTiBMQUJPUkFUT1JJRVMsIElOQy4KLQkJCQkxNTIwMCBPTUVHQSBEUklWRQotCQkJCVJPQ0tWSUxMRSBNRCAyMDg1MC0zMjQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC01RiAgIChoZXgpCQlaT0RJQUMgREFUQSBTWVNURU1TCi0wMDEwNUYgICAgIChiYXNlIDE2KQkJWk9ESUFDIERBVEEgU1lTVEVNUwotCQkJCTUgQXYgRGVzIEFuZGVzCi0JCQkJTGVzIFVsaXMgIDkxOTQwCi0JCQkJRlJBTkNFCi0KLTAwLTEwLTYwICAgKGhleCkJCUJJTExJT05UT04gU1lTVEVNUywgSU5DLgotMDAxMDYwICAgICAoYmFzZSAxNikJCUJJTExJT05UT04gU1lTVEVNUywgSU5DLgotCQkJCTNGLTEsIE5PLiA4LCBMQU5FIDk5Ci0JCQkJUFUtRElORyBSRC4KLQkJCQlIU0lOLUNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC02MSAgIChoZXgpCQlIT1NUTElOSyBDT1JQLgotMDAxMDYxICAgICAoYmFzZSAxNikJCUhPU1RMSU5LIENPUlAuCi0JCQkJMTBGLTEsIE5PLiAxODEKLQkJCQlTRUMuMSwgVEEtVFVORyBSRC4KLQkJCQlIU0ktQ0hJSCwgVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLTYyICAgKGhleCkJCU5YIFNFUlZFUiwgSUxOQy4KLTAwMTA2MiAgICAgKGJhc2UgMTYpCQlOWCBTRVJWRVIsIElMTkMuCi0JCQkJNTQwMSBFLiBMQSBQQUxNQSBBVkUuCi0JCQkJQU5BSEVJTSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNjMgICAoaGV4KQkJU1RBUkdVSURFIERJR0lUQUwgTkVUV09SS1MKLTAwMTA2MyAgICAgKGJhc2UgMTYpCQlTVEFSR1VJREUgRElHSVRBTCBORVRXT1JLUwotCQkJCTU3NTQgUEFDSUZJQyBDRU5URVIgQkxWRC4KLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTY0ICAgKGhleCkJCUROUEcsIExMQwotMDAxMDY0ICAgICAoYmFzZSAxNikJCUROUEcsIExMQwotCQkJCTIwIE5vcnRoIFdlbnR3b3J0aCBBdmVudWUKLQkJCQlMb25kb25kZXJyeSBOSCAwMzA1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNjUgICAoaGV4KQkJUkFEWU5FIENPUlBPUkFUSU9OCi0wMDEwNjUgICAgIChiYXNlIDE2KQkJUkFEWU5FIENPUlBPUkFUSU9OCi0JCQkJNTIyNSBTLiAzN1RIIFNUUkVFVAotCQkJCVBIT0VOSVggQVogODUwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTY2ICAgKGhleCkJCUFEVkFOQ0VEIENPTlRST0wgU1lTVEVNUywgSU5DLgotMDAxMDY2ICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIENPTlRST0wgU1lTVEVNUywgSU5DLgotCQkJCTI3NTUgTk9SVEhXT09EUyBQQVJLV0FZCi0JCQkJTk9SQ1JPU1MgR0EgMzAwNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTY3ICAgKGhleCkJCVJFREJBQ0sgTkVUV09SS1MsIElOQy4KLTAwMTA2NyAgICAgKGJhc2UgMTYpCQlSRURCQUNLIE5FVFdPUktTLCBJTkMuCi0JCQkJMjU3MCBOT1JUSCAxU1QgU1RSRUVUCi0JCQkJU1VJVEUgIzQxMAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC02OCAgIChoZXgpCQlDT01PUyBURUxFQ09NCi0wMDEwNjggICAgIChiYXNlIDE2KQkJQ09NT1MgVEVMRUNPTQotCQkJCVNBRUhBTiBCL0QvLCAyNy0xIFNVUFlPLURPTkcKLQkJCQlDSFVORy1HVSwgU0VPVUwgMTAwLTIzMCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEwLTY5ICAgKGhleCkJCUhFTElPU1MgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMTA2OSAgICAgKGJhc2UgMTYpCQlIRUxJT1NTIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMzkxIFRPVFRFTSBQT05EIFJELi0gU1RFIzMwMwotCQkJCVdBTFRIQU0gTUEgMDIxNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTZBICAgKGhleCkJCURJR0lUQUwgTUlDUk9XQVZFIENPUlBPUkFUSU9OCi0wMDEwNkEgICAgIChiYXNlIDE2KQkJRElHSVRBTCBNSUNST1dBVkUgQ09SUE9SQVRJT04KLQkJCQkxNzAgUk9TRSBPUkNIQVJEIFdBWQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC02QiAgIChoZXgpCQlTT05VUyBORVRXT1JLUywgSU5DLgotMDAxMDZCICAgICAoYmFzZSAxNikJCVNPTlVTIE5FVFdPUktTLCBJTkMuCi0JCQkJNSBDQVJMSVNMRSBST0FECi0JCQkJV0VTVEZPUkQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTZDICAgKGhleCkJCUluZnJhdGVjIEFHCi0wMDEwNkMgICAgIChiYXNlIDE2KQkJSW5mcmF0ZWMgQUcKLQkJCQlXZXJuZXItdm9uLVNpZW1lbnMtU3RyLiA3Ci0JCQkJNjQ2MjUgQmVuc2hlaW0gCi0JCQkJR0VSTUFOWQotCi0wMC0xMC02RCAgIChoZXgpCQlBeHhjZWxlcmEgQnJvYWRiYW5kIFdpcmVsZXNzCi0wMDEwNkQgICAgIChiYXNlIDE2KQkJQXh4Y2VsZXJhIEJyb2FkYmFuZCBXaXJlbGVzcwotCQkJCTE2MDAgRWFzdCBQYXJoYW0gUm9hZAotCQkJCVJpY2htb25kIFZBIDIzMjI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC02RSAgIChoZXgpCQlUQURJUkFOIENPTS4gTFRELgotMDAxMDZFICAgICAoYmFzZSAxNikJCVRBRElSQU4gQ09NLiBMVEQuCi0JCQkJMjYgSEFTSE9GVElNIFNULgotCQkJCUhPTE9OICA1ODEwMiAgCi0JCQkJSVNSQUVMCi0KLTAwLTEwLTZGICAgKGhleCkJCVRSRU5UT04gVEVDSE5PTE9HWSBJTkMuCi0wMDEwNkYgICAgIChiYXNlIDE2KQkJVFJFTlRPTiBURUNITk9MT0dZIElOQy4KLQkJCQkyMzUwIENFTlRFTk5JQUwgRFJJVkUKLQkJCQlHQUlORVNWSUxMRSBHQSAzMDUwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNzAgICAoaGV4KQkJQ0FSQURPTiBUUkVORCBMVEQuCi0wMDEwNzAgICAgIChiYXNlIDE2KQkJQ0FSQURPTiBUUkVORCBMVEQuCi0JCQkJUC5PLiBCT1ggMzQsIEhPUlNIQU0KLQkJCQlXRVNUIFNVU1NFWCwgUkgxMiAyWUYgRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC03MSAgIChoZXgpCQlBRFZBTkVUIElOQy4KLTAwMTA3MSAgICAgKGJhc2UgMTYpCQlBRFZBTkVUIElOQy4KLQkJCQkzLTIwLTggTk9EQQotCQkJCU9LQVlBTUkgNzAwIAotCQkJCUpBUEFOCi0KLTAwLTEwLTcyICAgKGhleCkJCUdWTiBURUNITk9MT0dJRVMsIElOQy4KLTAwMTA3MiAgICAgKGJhc2UgMTYpCQlHVk4gVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJODIwMCBCUllBTiBEQUlSWSBST0FECi0JCQkJU1VJVEUgIzEwMAotCQkJCUxBUkdPIEZMIDMzNzc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC03MyAgIChoZXgpCQlUZWNobm9ib3gsIEluYy4KLTAwMTA3MyAgICAgKGJhc2UgMTYpCQlUZWNobm9ib3gsIEluYy4KLQkJCQkxNDAgTW91bnQgSG9sbHkgQnlwYXNzCi0JCQkJVW5pdCAxCi0JCQkJTHVtYmVydG9uIE5KIDA4MDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC03NCAgIChoZXgpCQlBVEVOIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0wMDEwNzQgICAgIChiYXNlIDE2KQkJQVRFTiBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotCQkJCTEyRiwgTk8uMTAxLCBTVU5HIENISUFORyBSRC4KLQkJCQlUQUlQRUksIDEwNDI4ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLTc1ICAgKGhleCkJCU1heHRvciBDb3Jwb3JhdGlvbgotMDAxMDc1ICAgICAoYmFzZSAxNikJCU1heHRvciBDb3Jwb3JhdGlvbgotCQkJCTI0NTIgQ2xvdmVyIEJhc2luIERyLgotCQkJCUxvZ21vbnQgQ08gODA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTc2ICAgKGhleCkJCUVVUkVNIEdtYkgKLTAwMTA3NiAgICAgKGJhc2UgMTYpCQlFVVJFTSBHbWJICi0JCQkJSlVMSUNIRVIgU1RSLiAzMzhCCi0JCQkJRC01MjA3MCBBQUNIRU4gIAotCQkJCUdFUk1BTlkKLQotMDAtMTAtNzcgICAoaGV4KQkJU0FGIERSSVZFIFNZU1RFTVMsIExURC4KLTAwMTA3NyAgICAgKGJhc2UgMTYpCQlTQUYgRFJJVkUgU1lTVEVNUywgTFRELgotCQkJCTg4IEFSREVMVCBBVkUuCi0JCQkJS0lUQ0hFTkVSLCBPTlRBUklPIE4yQyAyQzkgIAotCQkJCUNBTkFEQQotCi0wMC0xMC03OCAgIChoZXgpCQlOVUVSQSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAxMDc4ICAgICAoYmFzZSAxNikJCU5VRVJBIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTA0NDUgUEFDSUZJQyBDRU5URVIgQ09VUlQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTc5ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTA3OSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4KLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC03QSAgIChoZXgpCQlBbWJpQ29tLCBJbmMuCi0wMDEwN0EgICAgIChiYXNlIDE2KQkJQW1iaUNvbSwgSW5jLgotCQkJCTI0NTAgU0NPVFQgQkxWRC4sICMzMDUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtN0IgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDdCICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy5UQVNNQU4gRFIuLVNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtN0MgICAoaGV4KQkJUC1DT00sIElOQy4KLTAwMTA3QyAgICAgKGJhc2UgMTYpCQlQLUNPTSwgSU5DLgotCQkJCTMxNzUgUy4gV0lOQ0hFU1RFUiBCTFZELgotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC03RCAgIChoZXgpCQlBVVJPUkEgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwMTA3RCAgICAgKGJhc2UgMTYpCQlBVVJPUkEgQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQlQLk8uIEJPWCAxOTQyCi0JCQkJTUFDUVVBUklFIENFTlRSRSwgTk9SVEggUllERQotCQkJCU5TVyAyMTEzICAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTAtN0UgICAoaGV4KQkJQkFDSE1BTk4gRUxFQ1RST05JQyBHbWJICi0wMDEwN0UgICAgIChiYXNlIDE2KQkJQkFDSE1BTk4gRUxFQ1RST05JQyBHbWJICi0JCQkJS1JFVVpBRUNLRVJXRUcgMzMKLQkJCQlBIDY4MDYgRkVMREtJUkNIICAKLQkJCQlBVVNUUklBCi0KLTAwLTEwLTdGICAgKGhleCkJCUNSRVNUUk9OIEVMRUNUUk9OSUNTLCBJTkMuCi0wMDEwN0YgICAgIChiYXNlIDE2KQkJQ1JFU1RST04gRUxFQ1RST05JQ1MsIElOQy4KLQkJCQkxMDEgQlJPQURXQVkKLQkJCQlDUkVTU0tJTEwgTkogMDc2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTgwICAgKGhleCkJCU1FVEFXQVZFIENPTU1VTklDQVRJT05TCi0wMDEwODAgICAgIChiYXNlIDE2KQkJTUVUQVdBVkUgQ09NTVVOSUNBVElPTlMKLQkJCQk4NzAwIDE0OFRIIEFWRU5VRSBOLkUuCi0JCQkJUkVETU9ORCBXQSA5ODA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtODEgICAoaGV4KQkJRFBTLCBJTkMuCi0wMDEwODEgICAgIChiYXNlIDE2KQkJRFBTLCBJTkMuCi0JCQkJNDkyMiBFQVNUIFlBTEUgQVZFTlVFCi0JCQkJRlJFU05PIENBIDkzNzI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC04MiAgIChoZXgpCQlKTkEgVEVMRUNPTU1VTklDQVRJT05TIExJTUlURUQKLTAwMTA4MiAgICAgKGJhc2UgMTYpCQlKTkEgVEVMRUNPTU1VTklDQVRJT05TIExJTUlURUQKLQkJCQkxNiBTTUlUSCBTVCwgQ0hBVFNXT09ECi0JCQkJTlNXIDIwNjcgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTEwLTgzICAgKGhleCkJCUhFV0xFVFQtUEFDS0FSRCBDT01QQU5ZCi0wMDEwODMgICAgIChiYXNlIDE2KQkJSEVXTEVUVC1QQUNLQVJEIENPTVBBTlkKLQkJCQlNQUlMIFNUT1AgNDJMRQotCQkJCTExMDAwMCBXT0xGRSBST0FECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC04NCAgIChoZXgpCQlLLUJPVCBDT01NVU5JQ0FUSU9OUwotMDAxMDg0ICAgICAoYmFzZSAxNikJCUstQk9UIENPTU1VTklDQVRJT05TCi0JCQkJUC5PLiBCT1ggNDEwCi0JCQkJTk9SVE9OIE1BIDAyNzY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC04NSAgIChoZXgpCQlQT0xBUklTIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDEwODUgICAgIChiYXNlIDE2KQkJUE9MQVJJUyBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTEwMjAwIFNXIEFMTEVOIEJMVkQuCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC04NiAgIChoZXgpCQlBVFRPIFRlY2hub2xvZ3ksIEluYy4KLTAwMTA4NiAgICAgKGJhc2UgMTYpCQlBVFRPIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxNTUgQ3Jvc3Nwb2ludCBQa3d5LgotCQkJCUFtaGVyc3QgTlkgMTQwNjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg3ICAgKGhleCkJCVhzdHJlYW1pcyBQTEMKLTAwMTA4NyAgICAgKGJhc2UgMTYpCQlYc3RyZWFtaXMgUExDCi0JCQkJT1hGT1JEIFNDSUVOQ0UgUEFSSwotCQkJCUcxMC4gIDIgTUFHREFMRU4gQ0VOVFJFIFJPQkVSVCBST0JJTlNPTgotCQkJCU9YRk9SRCAwWDQgNEdBIEVuZ2xhbmQgCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC04OCAgIChoZXgpCQlBTUVSSUNBTiBORVRXT1JLUyBJTkMuCi0wMDEwODggICAgIChiYXNlIDE2KQkJQU1FUklDQU4gTkVUV09SS1MgSU5DLgotCQkJCTY4MDAgT1JBTkdFVEhPUlBFIEFWRS4gI0EKLQkJCQlCVUVOQSBQQVJLIENBIDkwNjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC04OSAgIChoZXgpCQlXZWJTb25pYwotMDAxMDg5ICAgICAoYmFzZSAxNikJCVdlYlNvbmljCi0JCQkJMzQ2NiBFRFdBUkQgQVZFLgotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC04QSAgIChoZXgpCQlUZXJhTG9naWMsIEluYy4KLTAwMTA4QSAgICAgKGJhc2UgMTYpCQlUZXJhTG9naWMsIEluYy4KLQkJCQk3MDcgQ0FMSUZPUk5JQSBTVFJFRVQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC04QiAgIChoZXgpCQlMQVNFUkFOSU1BVElPTiBTT0xMSU5HRVIgR21iSAotMDAxMDhCICAgICAoYmFzZSAxNikJCUxBU0VSQU5JTUFUSU9OIFNPTExJTkdFUiBHbWJICi0JCQkJQ1JFTExFU1RSLiAxOS8yMAotCQkJCUQgMTA4MjcgQkVSTElOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTEwLThDICAgKGhleCkJCUZVSklUU1UgVEVMRUNPTU1VTklDQVRJT05TIEVVUk9QRSwgTFRELgotMDAxMDhDICAgICAoYmFzZSAxNikJCUZVSklUU1UgVEVMRUNPTU1VTklDQVRJT05TIEVVUk9QRSwgTFRELgotCQkJCVNPTElIVUxMIFBBUktXQVkKLQkJCQlCSVJNSU5HSEFNIEJVU0lORVNTIFBBUksKLQkJCQlCSVJNSU5HSEFNIEIzNyA3WVUgRW5nbGFuZCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC04RCAgIChoZXgpCQlKb2huc29uIENvbnRyb2xzLCBJbmMuCi0wMDEwOEQgICAgIChiYXNlIDE2KQkJSm9obnNvbiBDb250cm9scywgSW5jLgotCQkJCTUwNyBFLiBNaWNoaWdhbiBTdC4KLQkJCQlQLk8uIEJveCA0MjMgLyBNNzMKLQkJCQlNaWx3YXVrZWUgV0kgNTMyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLThFICAgKGhleCkJCUhVR0ggU1lNT05TIENPTkNFUFQgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMTA4RSAgICAgKGJhc2UgMTYpCQlIVUdIIFNZTU9OUyBDT05DRVBUIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJQWxkZXIgSGlsbHMgUGFyawotCQkJCTE2IEFsZGVyIEhpbGxzCi0JCQkJUG9vbGUsIERvcnNldCBCTTEyIDRBUiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTAtOEYgICAoaGV4KQkJUkFQVE9SIFNZU1RFTVMKLTAwMTA4RiAgICAgKGJhc2UgMTYpCQlSQVBUT1IgU1lTVEVNUwotCQkJCTY5IEhJQ0tPUlkgQVZFLgotCQkJCVdBTFRIQU0gTUEgMDIxNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTkwICAgKGhleCkJCUNJTUVUUklDUywgSU5DLgotMDAxMDkwICAgICAoYmFzZSAxNikJCUNJTUVUUklDUywgSU5DLgotCQkJCTU1IFRFTVBMRSBQTEFDRQotCQkJCUJPU1RPTiBNQSAwMjExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOTEgICAoaGV4KQkJTk8gV0lSRVMgTkVFREVEIEJWCi0wMDEwOTEgICAgIChiYXNlIDE2KQkJTk8gV0lSRVMgTkVFREVEIEJWCi0JCQkJUC5PLiBCT1ggMzQzCi0JCQkJMzcyMCBBSCBCSUxUSE9WRU4gIAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTEwLTkyICAgKGhleCkJCU5FVENPUkUgSU5DLgotMDAxMDkyICAgICAoYmFzZSAxNikJCU5FVENPUkUgSU5DLgotCQkJCTEyRi0yLCA1MzcsIFNFQy4yCi0JCQkJS1VBTkctRlUgUk9BRCwKLQkJCQlIU0lOQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLTkzICAgKGhleCkJCUNNUyBDT01QVVRFUlMsIExURC4KLTAwMTA5MyAgICAgKGJhc2UgMTYpCQlDTVMgQ09NUFVURVJTLCBMVEQuCi0JCQkJMjAxIEFSQ0FESUEKLQkJCQlOQVJJTUFOIFBPSU5UCi0JCQkJTVVNQkFJIDQwMCAwMDIxICAKLQkJCQlJTkRJQQotCi0wMC0xMC05NCAgIChoZXgpCQlQZXJmb3JtYW5jZSBBbmFseXNpcyBCcm9hZGJhbmQsIFNwaXJlbnQgcGxjCi0wMDEwOTQgICAgIChiYXNlIDE2KQkJUGVyZm9ybWFuY2UgQW5hbHlzaXMgQnJvYWRiYW5kLCBTcGlyZW50IHBsYwotCQkJCTI3MzQ5IEFnb3VyYSBSb2FkCi0JCQkJQ2FsYWJhc2FzIEhpbGxzIENBIDkxMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05NSAgIChoZXgpCQlUaG9tc29uIEluYy4KLTAwMTA5NSAgICAgKGJhc2UgMTYpCQlUaG9tc29uIEluYy4KLQkJCQkxMDEgV2VzdCAxMDNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyOTAtMTEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOTYgICAoaGV4KQkJVFJBQ0VXRUxMIFNZU1RFTVMsIElOQy4KLTAwMTA5NiAgICAgKGJhc2UgMTYpCQlUUkFDRVdFTEwgU1lTVEVNUywgSU5DLgotCQkJCTU2NyBFTlRFUlBSSVNFIERSSVZFCi0JCQkJV0VTVEVSVklMTEUgT0ggNDMwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTk3ICAgKGhleCkJCVdpbk5ldCBNZXRyb3BvbGl0YW4gQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotMDAxMDk3ICAgICAoYmFzZSAxNikJCVdpbk5ldCBNZXRyb3BvbGl0YW4gQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTY2MSBFQVNUIEFSUVVFUyBBVkUuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05OCAgIChoZXgpCQlTVEFSTkVUIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAxMDk4ICAgICAoYmFzZSAxNikJCVNUQVJORVQgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMjIxMCBPJ1RPT0xFIEFWRS4KLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOTkgICAoaGV4KQkJSW5ub01lZGlhLCBJbmMuCi0wMDEwOTkgICAgIChiYXNlIDE2KQkJSW5ub01lZGlhLCBJbmMuCi0JCQkJNDgwMCBHUkVBVCBBTUVSSUNBIFBBUktXQVkKLQkJCQlTVUlURSAjNDAwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTlBICAgKGhleCkJCU5FVExJTkUKLTAwMTA5QSAgICAgKGJhc2UgMTYpCQlORVRMSU5FCi0JCQkJNywgUnVlIGRlIEJpZXZyZXMKLQkJCQk5MjE0MCBDTEFNQVJUICAKLQkJCQlGUkFOQ0UKLQotMDAtMTAtOUIgICAoaGV4KQkJRW11bGV4IENvcnBvcmF0aW9uCi0wMDEwOUIgICAgIChiYXNlIDE2KQkJRW11bGV4IENvcnBvcmF0aW9uCi0JCQkJMzMzMyBTdXNhbiBTdHJlZXQKLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05QyAgIChoZXgpCQlNLVNZU1RFTSBDTy4sIExURC4KLTAwMTA5QyAgICAgKGJhc2UgMTYpCQlNLVNZU1RFTSBDTy4sIExURC4KLQkJCQkxLTEtMjUgU0hJTiBVUkFTSElNQSBDSE9VCi0JCQkJS0FOQUdBV0EtS1UKLQkJCQkgWU9LT0hBTUEgMjIxICAKLQkJCQlKQVBBTgotCi0wMC0xMC05RCAgIChoZXgpCQlDTEFSSU5FVCBTWVNURU1TLCBJTkMuCi0wMDEwOUQgICAgIChiYXNlIDE2KQkJQ0xBUklORVQgU1lTVEVNUywgSU5DLgotCQkJCTE0MTUgS09MTCBDSVJDTEUgIzEwMQotCQkJCVNBTiBKT1NFIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05RSAgIChoZXgpCQlBV0FSRSwgSU5DLgotMDAxMDlFICAgICAoYmFzZSAxNikJCUFXQVJFLCBJTkMuCi0JCQkJT05FIE9BSyBQQVJLCi0JCQkJQkVERk9SRCBNQSAwMTczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOUYgICAoaGV4KQkJUEFWTywgSU5DLgotMDAxMDlGICAgICAoYmFzZSAxNikJCVBBVk8sIElOQy4KLQkJCQk5NSBZRVNMRVIgV0FZCi0JCQkJU0VBVFRMRSBXQSA5ODEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQTAgICAoaGV4KQkJSU5OT1ZFWCBURUNITk9MT0dJRVMsIElOQy4KLTAwMTBBMCAgICAgKGJhc2UgMTYpCQlJTk5PVkVYIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCUtFWVNUT05FIENPTU1PTlMKLQkJCQk1MjYgQlJBRERPQ0sgQVZFLgotCQkJCVRVUlRMRSBDUkVFSyBQQSAxNTE0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQTEgICAoaGV4KQkJS0VORElOIFNFTUlDT05EVUNUT1IsIElOQy4KLTAwMTBBMSAgICAgKGJhc2UgMTYpCQlLRU5ESU4gU0VNSUNPTkRVQ1RPUiwgSU5DLgotCQkJCTE1NTAgUy4gQkFTQ09NIEFWRS4sIFNURS4gIzI1MAotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BMiAgIChoZXgpCQlUTlMKLTAwMTBBMiAgICAgKGJhc2UgMTYpCQlUTlMKLQkJCQk4MDAgVGhpcmQgU3RyZWV0LCBTdWl0ZSBCMTAwCi0JCQkJSEVSTkRPTiBWQSAyMDE3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQTMgICAoaGV4KQkJT01OSVRST05JWCwgSU5DLgotMDAxMEEzICAgICAoYmFzZSAxNikJCU9NTklUUk9OSVgsIElOQy4KLQkJCQk3NjAgSEFSUklTT04gU1RSRUVUCi0JCQkJU0VBVFRMRSBXQSA5ODEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQTQgICAoaGV4KQkJWElSQ09NCi0wMDEwQTQgICAgIChiYXNlIDE2KQkJWElSQ09NCi0JCQkJMjMwMCBDT1JQT1JBVEUgQ0VOVEVSIERSLgotCQkJCVRIT1VTQU5EIE9BS1MgQ0EgOTEzMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUE1ICAgKGhleCkJCU9YRk9SRCBJTlNUUlVNRU5UUwotMDAxMEE1ICAgICAoYmFzZSAxNikJCU9YRk9SRCBJTlNUUlVNRU5UUwotCQkJCUlORFVTVFJJQUwgQU5BTFlTSVMgR1JPVVAKLQkJCQkxOS8yMCBOVUZGSUVMRCBXQVkKLQkJCQlBYmluZ2RvbiwgT3hvbiBPWDE0IDFUWCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTAtQTYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMEE2ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQTcgICAoaGV4KQkJVU5FWCBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0wMDEwQTcgICAgIChiYXNlIDE2KQkJVU5FWCBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJOEYtNSwgIzEzMCwgU1pFIFdFSSBSRC4sCi0JCQkJSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC1BOCAgIChoZXgpCQlSRUxJQU5DRSBDT01QVVRFUiBDT1JQLgotMDAxMEE4ICAgICAoYmFzZSAxNikJCVJFTElBTkNFIENPTVBVVEVSIENPUlAuCi0JCQkJMzAzMiBCVU5LRVIgSElMTCBMQU5FCi0JCQkJU1VJVEUgMjAxCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUE5ICAgKGhleCkJCUFESE9DIFRFQ0hOT0xPR0lFUwotMDAxMEE5ICAgICAoYmFzZSAxNikJCUFESE9DIFRFQ0hOT0xPR0lFUwotCQkJCTExNTAgRklSU1QgU1RSRUVUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUFBICAgKGhleCkJCU1FRElBNCwgSU5DLgotMDAxMEFBICAgICAoYmFzZSAxNikJCU1FRElBNCwgSU5DLgotCQkJCTI1MCAxNFRIIFNULiBOVyAtIFNURSAjNDAwMgotCQkJCUFUTEFOVEEgR0EgMzAzMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUFCICAgKGhleCkJCUtPSVRPIElORFVTVFJJRVMsIExURC4KLTAwMTBBQiAgICAgKGJhc2UgMTYpCQlLT0lUTyBJTkRVU1RSSUVTLCBMVEQuCi0JCQkJMTAwIE1BRURBLUNITywgVE9UU1VLQS1LVQotCQkJCVlPS09IQU1BIDI0NCAgCi0JCQkJSkFQQU4KLQotMDAtMTAtQUMgICAoaGV4KQkJSU1DSSBURUNITk9MT0dJRVMKLTAwMTBBQyAgICAgKGJhc2UgMTYpCQlJTUNJIFRFQ0hOT0xPR0lFUwotCQkJCTg0MDEgT0xEIENPVVJUIEhLT1VTRSBSRAotCQkJCVNVSVRFICMyMDAKLQkJCQlWSUVOTkEgVkEgMjIxODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUFEICAgKGhleCkJCVNPRlRST05JQ1MgVVNCLCBJTkMuCi0wMDEwQUQgICAgIChiYXNlIDE2KQkJU09GVFJPTklDUyBVU0IsIElOQy4KLQkJCQk1MDg1IExJU1QgRFJJVkUKLQkJCQlDT0xPUkFETyBTUFJJTkdTIENPIDgwOTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BRSAgIChoZXgpCQlTSElOS08gRUxFQ1RSSUMgSU5EVVNUUklFUyBDTy4KLTAwMTBBRSAgICAgKGJhc2UgMTYpCQlTSElOS08gRUxFQ1RSSUMgSU5EVVNUUklFUyBDTy4KLQkJCQk4MCBPU0hJTUFEQS1NQUNISQotCQkJCU5BR0FOTy1TSEkgMzgxLTIyICAKLQkJCQlKQVBBTgotCi0wMC0xMC1BRiAgIChoZXgpCQlUQUMgU1lTVEVNUywgSU5DLgotMDAxMEFGICAgICAoYmFzZSAxNikJCVRBQyBTWVNURU1TLCBJTkMuCi0JCQkJMTAzNSBQVVRNQU4gRFJJVkUtLVNURS4KLQkJCQlIVU5UU1ZJTExFIEFMIDM1ODE2LTIyNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUIwICAgKGhleCkJCU1FUklESUFOIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMTBCMCAgICAgKGJhc2UgMTYpCQlNRVJJRElBTiBURUNITk9MT0dZIENPUlAuCi0JCQkJMTEgTUNCUklERSBDT1JQLiBDRU5URVIgRFIuCi0JCQkJQ0hFU1RFUkZJRUxEIE1EIDYzMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1CMSAgIChoZXgpCQlGT1ItQSBDTy4sIExURC4KLTAwMTBCMSAgICAgKGJhc2UgMTYpCQlGT1ItQSBDTy4sIExURC4KLQkJCQkyLTMtMyBPT1NBS1UKLQkJCQlTQUtVUkEgQ0lUWSwKLQkJCQlDSElCQSBQUkVGLiAyODUgIAotCQkJCUpBUEFOCi0KLTAwLTEwLUIyICAgKGhleCkJCUNPQUNUSVZFIEFFU1RIRVRJQ1MKLTAwMTBCMiAgICAgKGJhc2UgMTYpCQlDT0FDVElWRSBBRVNUSEVUSUNTCi0JCQkJNDAwMCBCUklER0VXQVkgLSBTVEUuICMzMDMKLQkJCQlTQVVTQUxJVEEgQ0EgOTQ5NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUIzICAgKGhleCkJCU5PS0lBIE1VTFRJTUVESUEgVEVSTUlOQUxTCi0wMDEwQjMgICAgIChiYXNlIDE2KQkJTk9LSUEgTVVMVElNRURJQSBURVJNSU5BTFMKLQkJCQlOT0tJQSBIT01FIENPTU1VTklDQVRJT05TCi0JCQkJRElTS0VUVEdBVEFOIDExCi0JCQkJU0UtNTgzIDM1IExJTktPUElORyAgCi0JCQkJU1dFREVOCi0KLTAwLTEwLUI0ICAgKGhleCkJCUFUTU9TUEhFUkUgTkVUV09SS1MKLTAwMTBCNCAgICAgKGJhc2UgMTYpCQlBVE1PU1BIRVJFIE5FVFdPUktTCi0JCQkJMTA0NjAgQkFORExFWSBEUklWRQotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQjUgICAoaGV4KQkJQUNDVE9OIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwMTBCNSAgICAgKGJhc2UgMTYpCQlBQ0NUT04gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCU5PLjEsIENSRUFUSU9OIFJELiBJSUkKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgMzAwICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLUI2ICAgKGhleCkJCUVOVFJBVEEgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwMTBCNiAgICAgKGJhc2UgMTYpCQlFTlRSQVRBIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJNTc0IEhFUklUQUdFIFJELgotCQkJCVNPVVRIQlVSWSBDVCAwNjQ4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQjcgICAoaGV4KQkJQ09ZT1RFIFRFQ0hOT0xPR0lFUywgTExDCi0wMDEwQjcgICAgIChiYXNlIDE2KQkJQ09ZT1RFIFRFQ0hOT0xPR0lFUywgTExDCi0JCQkJNDM2MCBQQVJLIFRFUlJBQ0UgRFJJVkUKLQkJCQlXRVNUTEFLRSBWSUxMQUdFIENBIDkxMzYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1COCAgIChoZXgpCQlJU0hJR0FLSSBDT01QVVRFUiBTWVNURU0gQ08uCi0wMDEwQjggICAgIChiYXNlIDE2KQkJSVNISUdBS0kgQ09NUFVURVIgU1lTVEVNIENPLgotCQkJCTEtMS0xLCBLWU9CQVNISSwKLQkJCQlDSFVPLUtVCi0JCQkJVG9reW8gIAotCQkJCUpBUEFOCi0KLTAwLTEwLUI5ICAgKGhleCkJCU1BWFRPUiBDT1JQLgotMDAxMEI5ICAgICAoYmFzZSAxNikJCU1BWFRPUiBDT1JQLgotCQkJCTIxOTAgTUlMTEVSIERSSVZFCi0JCQkJTE9OR01PTlQgQ08gODA1MDEtNjc0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQkEgICAoaGV4KQkJTUFSVElOSE8tREFWSVMgU1lTVEVNUywgSU5DLgotMDAxMEJBICAgICAoYmFzZSAxNikJCU1BUlRJTkhPLURBVklTIFNZU1RFTVMsIElOQy4KLQkJCQkxMjYwIE9MRCBJTk5FUyBST0FECi0JCQkJT1RUQVdBLCBPTlRBUklPIEsxQiAzVjMgIAotCQkJCUNBTkFEQQotCi0wMC0xMC1CQiAgIChoZXgpCQlEQVRBICYgSU5GT1JNQVRJT04gVEVDSE5PTE9HWQotMDAxMEJCICAgICAoYmFzZSAxNikJCURBVEEgJiBJTkZPUk1BVElPTiBURUNITk9MT0dZCi0JCQkJVEVDSE5PTE9HWSBIT1VTRQotCQkJCTEgTk9STUFOVE9OIExBTkUKLQkJCQlCT1RURVNGT1JELCBOT1RUSU5HSEFNIE5HMTMgT0VMICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC1CQyAgIChoZXgpCQlBYXN0cmEgVGVsZWNvbQotMDAxMEJDICAgICAoYmFzZSAxNikJCUFhc3RyYSBUZWxlY29tCi0JCQkJOCBGZWRlcmFsIFN0cmVldAotCQkJCUJpbGxlcmljYSBNQSAwMTgyMS0zNTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1CRCAgIChoZXgpCQlUSEUgVEVMRUNPTU1VTklDQVRJT04gVEVDSE5PTE9HWSBDT01NSVRURUUgKFRUQykKLTAwMTBCRCAgICAgKGJhc2UgMTYpCQlUSEUgVEVMRUNPTU1VTklDQVRJT04gVEVDSE5PTE9HWSBDT01NSVRURUUgKFRUQykKLQkJCQkxLTEtMTIgU2hpYmEgS291ZW4sIE1pbmF0by1rdQotCQkJCU1JTkFUTy1LVSwgICBUT0tZTyAxMDUtMDAxMQotCQkJCUpBUEFOCi0KLTAwLTEwLUJFICAgKGhleCkJCU1BUkNIIE5FVFdPUktTIENPUlBPUkFUSU9OCi0wMDEwQkUgICAgIChiYXNlIDE2KQkJTUFSQ0ggTkVUV09SS1MgQ09SUE9SQVRJT04KLQkJCQkzMDMgVGVycnkgRm94IERyaXZlCi0JCQkJT1RUQVdBLCBPTlRBUklPICAgSzJLIDNKMQotCQkJCUNBTkFEQQotCi0wMC0xMC1CRiAgIChoZXgpCQlJbnRlckFpciBXaXJlbGVzcwotMDAxMEJGICAgICAoYmFzZSAxNikJCUludGVyQWlyIFdpcmVsZXNzCi0JCQkJNDg1IENBWVVHQSBST0FECi0JCQkJQlVGRkFMTyBOWSAxNDIyNS0wMjIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1DMCAgIChoZXgpCQlBUk1BLCBJbmMuCi0wMDEwQzAgICAgIChiYXNlIDE2KQkJQVJNQSwgSW5jLgotCQkJCTQ4NTEgTm9ydGhzaG9yZSBMYW5lCi0JCQkJTm9ydGggTGl0dGxlIFJvY2sgQVIgNzIxMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUMxICAgKGhleCkJCU9JIEVMRUNUUklDIENPLiwgTFRELgotMDAxMEMxICAgICAoYmFzZSAxNikJCU9JIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTctMy0xNiBLSUtVTkEKLQkJCQlLT0hPS1UtS1UKLQkJCQlZT0tPSEFNQSAgMjIyICAKLQkJCQlKQVBBTgotCi0wMC0xMC1DMiAgIChoZXgpCQlXSUxMTkVULCBJTkMuCi0wMDEwQzIgICAgIChiYXNlIDE2KQkJV0lMTE5FVCwgSU5DLgotCQkJCUpPV0EtVEFLQU5BV0EgIEJMREcuIDhGCi0JCQkJVEFLQU5BV0EgMS01LTQsIE1JTkFUTy1LVSwKLQkJCQlUT0tZTyAgCi0JCQkJSkFQQU4KLQotMDAtMTAtQzMgICAoaGV4KQkJQ1NJLUNPTlRST0wgU1lTVEVNUwotMDAxMEMzICAgICAoYmFzZSAxNikJCUNTSS1DT05UUk9MIFNZU1RFTVMKLQkJCQlJTlRFUk5BVElPTkFMCi0JCQkJUE9CIDU5NDY5Ci0JCQkJREFMTEFTIFRYIDc1MjI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1DNCAgIChoZXgpCQlNRURJQSBMSU5LUyBDTy4sIExURC4KLTAwMTBDNCAgICAgKGJhc2UgMTYpCQlNRURJQSBMSU5LUyBDTy4sIExURC4KLQkJCQlLU1AgRUFTVCBCTERHLiA2MDQsIFNBS0FETyAzLTItMSwKLQkJCQkgVEFLQVRTVS1LVSBLQVdBU0FLSS1TSEksCi0JCQkJS2FuYWdhd2Eta2VuIDIxNCAgCi0JCQkJSkFQQU4KLQotMDAtMTAtQzUgICAoaGV4KQkJUFJPVE9DT0wgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDEwQzUgICAgIChiYXNlIDE2KQkJUFJPVE9DT0wgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNCBGSVJTVCBTVFJFRVQKLQkJCQlCUklER0VXQVRFUiBNQSAwMjMyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQzYgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDEwQzYgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSxTRUMuMSwgVEFJUElORyBSRC4KLQkJCQlUU0FPVFVFTiwgTkFOVE9VIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC1DNyAgIChoZXgpCQlEQVRBIFRSQU5TTUlTU0lPTiBORVRXT1JLCi0wMDEwQzcgICAgIChiYXNlIDE2KQkJREFUQSBUUkFOU01JU1NJT04gTkVUV09SSwotCQkJCTkxMTAgVy4gRE9ER0UgUkQuIC0gU1RFLiMyMDAKLQkJCQlPTUFIQSBORSA2ODExNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQzggICAoaGV4KQkJQ09NTVVOSUNBVElPTlMgRUxFQ1RST05JQ1MgU0VDVVJJVFkgR1JPVVAKLTAwMTBDOCAgICAgKGJhc2UgMTYpCQlDT01NVU5JQ0FUSU9OUyBFTEVDVFJPTklDUyBTRUNVUklUWSBHUk9VUAotCQkJCTEwLzRXMjIgRklERExFUlMgR1JFRU4gTEFORQotCQkJCUJlbmhhbGwsIENoZWx0ZW5oYW0gR2xvdXN0ZXIgR0w1MiA1QUogCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTAtQzkgICAoaGV4KQkJTUlUU1VCSVNISSBFTEVDVFJPTklDUyBMT0dJU1RJQyBTVVBQT1JUIENPLgotMDAxMEM5ICAgICAoYmFzZSAxNikJCU1JVFNVQklTSEkgRUxFQ1RST05JQ1MgTE9HSVNUSUMgU1VQUE9SVCBDTy4KLQkJCQkKLQkJCQlTSE9OQU4gV29ya3MsIDczMC0xMSwgS0FNSU1BQ0hJWUEKLQkJCQlLYW1ha3VyYS1jaXR5LCBLYW5hZ2F3YSAyNDcgIAotCQkJCUpBUEFOCi0KLTAwLTEwLUNBICAgKGhleCkJCVRlbGNvIFN5c3RlbXMsIEluYy4gCi0wMDEwQ0EgICAgIChiYXNlIDE2KQkJVGVsY28gU3lzdGVtcywgSW5jLiAKLQkJCQkxNSBCZXJrc2hpcmUgUm9hZAotCQkJCU1hbnNmaWVsZCwgTUEgMDIwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUNCICAgKGhleCkJCUZBQ0lUIEsuSy4KLTAwMTBDQiAgICAgKGJhc2UgMTYpCQlGQUNJVCBLLksuCi0JCQkJSElNRUkgTklIT01CQVNISSBCTERHLiAzRgotCQkJCTEyLTMtTklIT01CQVNISS1LT0JVTkFDSE8KLQkJCQlDSFVPLUtVLCBUT0tZTyAxMDMgIAotCQkJCUpBUEFOCi0KLTAwLTEwLUNDICAgKGhleCkJCUNMUCBDT01QVVRFUiBMT0dJU1RJSyBQTEFOVU5HIEdtYkgKLTAwMTBDQyAgICAgKGJhc2UgMTYpCQlDTFAgQ09NUFVURVIgTE9HSVNUSUsgUExBTlVORyBHbWJICi0JCQkJQkFTU0VSTUFOTlNUUi4gMjEKLQkJCQkgRC04MTI0NSBNVUVOQ0hFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC0xMC1DRCAgIChoZXgpCQlJTlRFUkZBQ0UgQ09OQ0VQVAotMDAxMENEICAgICAoYmFzZSAxNikJCUlOVEVSRkFDRSBDT05DRVBUCi0JCQkJMyBWRU5FTExFIGRlIEtFUkdPUwotCQkJCTI5MDAwIFFVSU1QRVIgIAotCQkJCUZSQU5DRQotCi0wMC0xMC1DRSAgIChoZXgpCQlWT0xBTVAsIExURC4KLTAwMTBDRSAgICAgKGJhc2UgMTYpCQlWT0xBTVAsIExURC4KLQkJCQlVTklUIDMgUklWRVJTSURFIEJVU0lORVNTIFBBUksKLQkJCQlET0dGTFVEIFdBWSwKLQkJCQlGQVJOSEFNLCBTVVJSRVkgRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC1DRiAgIChoZXgpCQlGSUJFUkxBTkUgQ09NTVVOSUNBVElPTlMKLTAwMTBDRiAgICAgKGJhc2UgMTYpCQlGSUJFUkxBTkUgQ09NTVVOSUNBVElPTlMKLQkJCQkxMzE4IFJFRFdPT0QgV0FZLCAjMjAwCi0JCQkJUEVUQUxVTUEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUQwICAgKGhleCkJCVdJVENPTSwgTFRELgotMDAxMEQwICAgICAoYmFzZSAxNikJCVdJVENPTSwgTFRELgotCQkJCVAuTy5CLiAyMjUwCi0JCQkJSEFJRkEgIDMxMDIxICAKLQkJCQlJU1JBRUwKLQotMDAtMTAtRDEgICAoaGV4KQkJVG9wIExheWVyIE5ldHdvcmtzLCBJbmMuCi0wMDEwRDEgICAgIChiYXNlIDE2KQkJVG9wIExheWVyIE5ldHdvcmtzLCBJbmMuCi0JCQkJNCBNRUNIQU5JQyBTVC4tIFNURSMyMTIKLQkJCQlOQVRJQ0sgTUEgMDE3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUQyICAgKGhleCkJCU5JVFRPIFRTVVNISU5LSSBDTy4sIExURAotMDAxMEQyICAgICAoYmFzZSAxNikJCU5JVFRPIFRTVVNISU5LSSBDTy4sIExURAotCQkJCTctMjctMTEsIFRPRE9ST0tJLCBTRVRBR0FZQS1LVQotCQkJCVRPS1lPIDE1MSAgCi0JCQkJSkFQQU4KLQotMDAtMTAtRDMgICAoaGV4KQkJR1JJUFMgRUxFQ1RST05JQyBHTUJICi0wMDEwRDMgICAgIChiYXNlIDE2KQkJR1JJUFMgRUxFQ1RST05JQyBHTUJICi0JCQkJTklFU0VOQkVSR0VSR0FTU0UgMzcKLQkJCQlBLTgwMjAgR1JBWiAgCi0JCQkJQVVTVFJJQQotCi0wMC0xMC1ENCAgIChoZXgpCQlTVE9SQUdFIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMDEwRDQgICAgIChiYXNlIDE2KQkJU1RPUkFHRSBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTExIFJJVkVSU0lERSBTVFJFRVQKLQkJCQlOQVNIVUEgTkggMDMwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUQ1ICAgKGhleCkJCUlNQVNERSBDQU5BUklBUywgUy5BLgotMDAxMEQ1ICAgICAoYmFzZSAxNikJCUlNQVNERSBDQU5BUklBUywgUy5BLgotCQkJCVVSQi4gRUwgQ0VCQURBTAotCQkJCUMvRFIuIEpVQU4gREdVRVouUEVSRVosIDM5LTIKLQkJCQkzNTAwOCBMQVMgUEFMTUFTIEcuQy4gIAotCQkJCVNQQUlOCi0KLTAwLTEwLUQ2ICAgKGhleCkJCUlUVCAtIEEvQ0QKLTAwMTBENiAgICAgKGJhc2UgMTYpCQlJVFQgLSBBL0NECi0JCQkJREVQVC4gODUyMQotCQkJCTEwMCBLSU5HU0xBTkQgUk9BRAotCQkJCUNMSUZUT04gTkogMDcwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUQ3ICAgKGhleCkJCUFSR09TWSBSRVNFQVJDSCBJTkMuCi0wMDEwRDcgICAgIChiYXNlIDE2KQkJQVJHT1NZIFJFU0VBUkNIIElOQy4KLQkJCQlOTy4gNDQsIExBTkUgNDExLCBDSFVORyBIVUEgUkQKLQkJCQlTRUMuNCwgSFNJTkNIVQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtRDggICAoaGV4KQkJQ0FMSVNUQQotMDAxMEQ4ICAgICAoYmFzZSAxNikJCUNBTElTVEEKLQkJCQk5OCBISUdIIFNUUkVFVCwgVEhBTUUKLQkJCQlPWEZPUkRTSElSRSBPWDkgM0VIIEVOR0xBTkQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTAtRDkgICAoaGV4KQkJSUJNIEpBUEFOLCBGVUpJU0FXQSBNVCtECi0wMDEwRDkgICAgIChiYXNlIDE2KQkJSUJNIEpBUEFOLCBGVUpJU0FXQSBNVCtECi0JCQkJS0lSSUhBUkEtQ0hPIDEsIEZVSklTQVdBIENJVFkKLQkJCQlLQU5BR0FXQSAyNTIgIAotCQkJCUpBUEFOCi0KLTAwLTEwLURBICAgKGhleCkJCU1PVElPTiBFTkdJTkVFUklORywgSU5DLgotMDAxMERBICAgICAoYmFzZSAxNikJCU1PVElPTiBFTkdJTkVFUklORywgSU5DLgotCQkJCTMzIFMuTEEgUEFURVJBIExOCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtREIgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcywgSW5jLgotMDAxMERCICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MsIEluYy4KLQkJCQkxMTk0IE4uIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtREMgICAoaGV4KQkJTUlDUk8tU1RBUiBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotMDAxMERDICAgICAoYmFzZSAxNikJCU1JQ1JPLVNUQVIgSU5URVJOQVRJT05BTCBDTy4sIExURC4KLQkJCQlOTy4gNjksIExJLURFIFNULiwgSlVORy1IRSBDSVRZCi0JCQkJIFRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC1ERCAgIChoZXgpCQlFTkFCTEUgU0VNSUNPTkRVQ1RPUiwgSU5DLgotMDAxMEREICAgICAoYmFzZSAxNikJCUVOQUJMRSBTRU1JQ09ORFVDVE9SLCBJTkMuCi0JCQkJMTc0MCBURUNITk9MT0dZIERSSVZFCi0JCQkJU1VJVEUgIzExMAotCQkJCVNBTiBKT1NFIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1ERSAgIChoZXgpCQlJTlRFUk5BVElPTkFMIERBVEFDQVNUSU5HIENPUlBPUkFUSU9OCi0wMDEwREUgICAgIChiYXNlIDE2KQkJSU5URVJOQVRJT05BTCBEQVRBQ0FTVElORyBDT1JQT1JBVElPTgotCQkJCTI2ODAgUVVFRU5TVklFVyBEUklWRQotCQkJCU9UVEFXQSwgT05UQVJJTyBLMkIgOEg2Ci0JCQkJQ0FOQURBCi0KLTAwLTEwLURGICAgKGhleCkJCVJJU0UgQ09NUFVURVIgSU5DLgotMDAxMERGICAgICAoYmFzZSAxNikJCVJJU0UgQ09NUFVURVIgSU5DLgotCQkJCTlGLCBOTy4gMzA2LTMsIFRBVFVORyBSRC4KLQkJCQlTRUMuIDEsIEhTSSBDSElILAotCQkJCVRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC1FMCAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMTBFMCAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQk1MDAgT3JhY2xlIFBhcmt3YXkKLQkJCQlSZWR3b29kIFNob3JlcyBDQSA5NDA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRTEgICAoaGV4KQkJUy5JLiBURUNILCBJTkMuCi0wMDEwRTEgICAgIChiYXNlIDE2KQkJUy5JLiBURUNILCBJTkMuCi0JCQkJUC5PLiBCT1ggNjA5Ci0JCQkJR0VORVZBIElMIDYwMTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FMiAgIChoZXgpCQlBcnJheUNvbW0sIEluYy4KLTAwMTBFMiAgICAgKGJhc2UgMTYpCQlBcnJheUNvbW0sIEluYy4KLQkJCQkzMTQxIFpBTktFUiBST0FECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUUzICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxMEUzICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FNCAgIChoZXgpCQlOU0kgQ09SUE9SQVRJT04KLTAwMTBFNCAgICAgKGJhc2UgMTYpCQlOU0kgQ09SUE9SQVRJT04KLQkJCQlQLk8uIEJPWCA2MzUKLQkJCQlXSUxTT05WSUxMRSBPUiA5NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRTUgICAoaGV4KQkJU09MRUNUUk9OIFRFWEFTCi0wMDEwRTUgICAgIChiYXNlIDE2KQkJU09MRUNUUk9OIFRFWEFTCi0JCQkJMTI0NTUgUkVTRUFSQ0ggQkxWRC4gTS9TIDIyMDUKLQkJCQlBVVNUSU4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUU2ICAgKGhleCkJCUFQUExJRUQgSU5URUxMSUdFTlQgU1lTVEVNUywgSU5DLgotMDAxMEU2ICAgICAoYmFzZSAxNikJCUFQUExJRUQgSU5URUxMSUdFTlQgU1lTVEVNUywgSU5DLgotCQkJCTM5MjMgUkFOQ0hFUk8gRFJJVkUKLQkJCQlBTk4gQVJCT1IgTUkgNDgxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUU3ICAgKGhleCkJCUJyZWV6ZUNvbQotMDAxMEU3ICAgICAoYmFzZSAxNikJCUJyZWV6ZUNvbQotCQkJCVBPIEJveCAxMzEzOQotCQkJCUF0aWRpbSBUZWNobm9sb2dpY2FsIFBhcmssIEJsZGcuIDEKLQkJCQlUZWwtQXZpdiAgCi0JCQkJSVNSQUVMCi0KLTAwLTEwLUU4ICAgKGhleCkJCVRFTE9DSVRZLCBJTkNPUlBPUkFURUQKLTAwMTBFOCAgICAgKGJhc2UgMTYpCQlURUxPQ0lUWSwgSU5DT1JQT1JBVEVECi0JCQkJOTkyIFNPVVRIIERFIEFOWkEgQkxWRAotCQkJCVNBTiBKT1NFIENBIDk1MTI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FOSAgIChoZXgpCQlSQUlEVEVDIExURC4KLTAwMTBFOSAgICAgKGJhc2UgMTYpCQlSQUlEVEVDIExURC4KLQkJCQlDQVNUTEUgUk9BRAotCQkJCUxJVFRMRSBJU0xBTkQgSU5EVVNUUklBTCBFU1RBVEUKLQkJCQlMaXR0bGUgSXNsYW5kIENvdW50eSBDb3JrIAotCQkJCUlSRUxBTkQKLQotMDAtMTAtRUEgICAoaGV4KQkJQURFUFQgVEVDSE5PTE9HWQotMDAxMEVBICAgICAoYmFzZSAxNikJCUFERVBUIFRFQ0hOT0xPR1kKLQkJCQkxNTAgUk9TRSBPUkNIQVJEIFdBWQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FQiAgIChoZXgpCQlTRUxTSVVTIFNZU1RFTVMsIElOQy4KLTAwMTBFQiAgICAgKGJhc2UgMTYpCQlTRUxTSVVTIFNZU1RFTVMsIElOQy4KLQkJCQk1MDU3IEtFTExFUiBTUFJJTkdTIFJELgotCQkJCURBTExBUyBUWCA3NTI0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRUMgICAoaGV4KQkJUlBDRywgTExDCi0wMDEwRUMgICAgIChiYXNlIDE2KQkJUlBDRywgTExDCi0JCQkJNzQ5IE1JTkVSIFJPQUQKLQkJCQlISUdITEFORCBIVFMgT0ggNDQxNDMtMjExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRUQgICAoaGV4KQkJU1VOREFOQ0UgVEVDSE5PTE9HWSwgSU5DLgotMDAxMEVEICAgICAoYmFzZSAxNikJCVNVTkRBTkNFIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkyMDExMSBTVEVWRU5TIENSRUVLIEJMVkQuCi0JCQkJU1VJVEUgIzEzOAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRUUgICAoaGV4KQkJQ1RJIFBST0RVQ1RTLCBJTkMuCi0wMDEwRUUgICAgIChiYXNlIDE2KQkJQ1RJIFBST0RVQ1RTLCBJTkMuCi0JCQkJMTIxMSBXLiBTSEFST04gUkQuCi0JCQkJQ0lOQ0lOTkFUSSBPSCA0NTI0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRUYgICAoaGV4KQkJREJURUwgSU5DT1JQT1JBVEVECi0wMDEwRUYgICAgIChiYXNlIDE2KQkJREJURUwgSU5DT1JQT1JBVEVECi0JCQkJTk8uMjkgVFpVLUNISUFORyBTVC4sCi0JCQkJVFUtQ0hFTkcgVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLUYxICAgKGhleCkJCUktTyBDT1JQT1JBVElPTgotMDAxMEYxICAgICAoYmFzZSAxNikJCUktTyBDT1JQT1JBVElPTgotCQkJCTIyNTYgU09VVEggMzYwMCBXRVNUCi0JCQkJU0FMVCBMQUtFIENJVFkgVVQgODQxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUYyICAgKGhleCkJCUFOVEVDCi0wMDEwRjIgICAgIChiYXNlIDE2KQkJQU5URUMKLQkJCQk0OTIwIEFWQUxPTiBSSURHRSBQS1dZCi0JCQkJU1VJVEUgIzYwMAotCQkJCU5PUkNST1NTIEdBIDMwMDcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1GMyAgIChoZXgpCQlOZXhjb20gSW50ZXJuYXRpb25hbCBDby4sIEx0ZC4KLTAwMTBGMyAgICAgKGJhc2UgMTYpCQlOZXhjb20gSW50ZXJuYXRpb25hbCBDby4sIEx0ZC4KLQkJCQkxOEYsIE5vLiA3MTYsIENodW5nLUNoZW5nIFJvYWQsCi0JCQkJQ2h1bmcgSG8sCi0JCQkJVGFpcGVpIEhzaWVuIDIzNSwgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtRjQgICAoaGV4KQkJVmVydGljYWwgQ29tbXVuaWNhdGlvbnMKLTAwMTBGNCAgICAgKGJhc2UgMTYpCQlWZXJ0aWNhbCBDb21tdW5pY2F0aW9ucwotCQkJCTM5NzkgRnJlZWRvbSBDaXJjbGUgIzQwMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0LTEyNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUY1ICAgKGhleCkJCUFNSEVSU1QgU1lTVEVNUywgSU5DLgotMDAxMEY1ICAgICAoYmFzZSAxNikJCUFNSEVSU1QgU1lTVEVNUywgSU5DLgotCQkJCTMwIFdJTFNPTiBST0FECi0JCQkJQlVGRkFMTyBOWSAxNDIyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRjYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMEY2ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRjcgICAoaGV4KQkJSVJJSUNISSBURUNITk9MT0dJRVMgSW5jLgotMDAxMEY3ICAgICAoYmFzZSAxNikJCUlSSUlDSEkgVEVDSE5PTE9HSUVTIEluYy4KLQkJCQkxLTI2LTcgQ0hVTywgTkFLQU5BLUtVCi0JCQkJIFRPS1lPIDE2NCAgCi0JCQkJSkFQQU4KLQotMDAtMTAtRjggICAoaGV4KQkJTmlpa2tlIFRlY2hubyBTeXN0ZW0gQ28uIEx0ZAotMDAxMEY4ICAgICAoYmFzZSAxNikJCU5paWtrZSBUZWNobm8gU3lzdGVtIENvLiBMdGQKLQkJCQkxODUwLTEgVHN1cnVtYSwgTWFjaGlkYS1zaGkKLQkJCQlUb2t5byAgMTk0LTAwMDQKLQkJCQlKQVBBTgotCi0wMC0xMC1GOSAgIChoZXgpCQlVTklRVUUgU1lTVEVNUywgSU5DLgotMDAxMEY5ICAgICAoYmFzZSAxNikJCVVOSVFVRSBTWVNURU1TLCBJTkMuCi0JCQkJMTgxIERPTiBQQVJLIFJECi0JCQkJTUFSS0hBTSwgT05UQVJJTyBMM1IgMUMyICAKLQkJCQlDQU5BREEKLQotMDAtMTAtRkEgICAoaGV4KQkJQXBwbGUgSW5jCi0wMDEwRkEgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJTVMgMzUtR1BPCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1GQiAgIChoZXgpCQlaSURBIFRFQ0hOT0xPR0lFUyBMSU1JVEVECi0wMDEwRkIgICAgIChiYXNlIDE2KQkJWklEQSBURUNITk9MT0dJRVMgTElNSVRFRAotCQkJCTgvRiBCTE9DSyBBICBHT09EVklFVyBJTkRVU1RSSUFMIEJVSUxESU4KLQkJCQlLSU4gRkFUIFNUUiBUTVRMIDIxMwotCQkJCVRVRU4gTVVOIE5UICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTAtRkMgICAoaGV4KQkJQlJPQURCQU5EIE5FVFdPUktTLCBJTkMuCi0wMDEwRkMgICAgIChiYXNlIDE2KQkJQlJPQURCQU5EIE5FVFdPUktTLCBJTkMuCi0JCQkJMzcgU1RFVkVOU09OIFJPQUQKLQkJCQlXSU5OSVBFRywgTUFOSVRPQkEgUjNIIDBIOSAgCi0JCQkJQ0FOQURBCi0KLTAwLTEwLUZEICAgKGhleCkJCUNPQ09NIEEvUwotMDAxMEZEICAgICAoYmFzZSAxNikJCUNPQ09NIEEvUwotCQkJCVRFTEVUT05WRUogOAotCQkJCURLIDI4NjAgU09CT1JHICAKLQkJCQlERU5NQVJLCi0KLTAwLTEwLUZFICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0wMDEwRkUgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQkzMDEgUk9DS1JJTU1PTiBCTFZELCBTT1VUSAotCQkJCU0vUyBDWE8xLTIvTjI2Ci0JCQkJQ09MT1JBRE8gU1BSSU5HUyBDTyA4MDkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRkYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMEZGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMDAgICAoaGV4KQkJU2NobmVpZGVyIEVsZWN0cmljCi0wMDExMDAgICAgIChiYXNlIDE2KQkJU2NobmVpZGVyIEVsZWN0cmljCi0JCQkJNTQ2MCBQb3R0c3ZpbGxlIFBpa2UKLQkJCQlMZWVzcG9ydCBQQSAxOTUzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMDEgICAoaGV4KQkJQ0VUIFRlY2hub2xvZ2llcyBQdGUgTHRkCi0wMDExMDEgICAgIChiYXNlIDE2KQkJQ0VUIFRlY2hub2xvZ2llcyBQdGUgTHRkCi0JCQkJMTAwIEp1cm9uZyBFYXN0IFN0cmVldCAyMQotCQkJCVNpbmdhcG9yZSBUZWNobm9sb2dpZXMgQnVpbGRpbmcKLQkJCQk2MDk2MDIKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTEtMDIgICAoaGV4KQkJQXVyb3JhIE11bHRpbWVkaWEgQ29ycC4KLTAwMTEwMiAgICAgKGJhc2UgMTYpCQlBdXJvcmEgTXVsdGltZWRpYSBDb3JwLgotCQkJCTIwNSBDb21tZXJjaWFsIENvdXJ0Ci0JCQkJTW9yZ2FudmlsbGUgTmV3IEplcnNleSAwNzc1MS0xMDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0wMyAgIChoZXgpCQlrYXdhbXVyYSBlbGVjdHJpYyBpbmMuCi0wMDExMDMgICAgIChiYXNlIDE2KQkJa2F3YW11cmEgZWxlY3RyaWMgaW5jLgotCQkJCTMtODYgYWthdHN1a2ktY2hvCi0JCQkJc2V0byBhaWNoaSA0ODktMDA3MQotCQkJCUpBUEFOCi0KLTAwLTExLTA0ICAgKGhleCkJCVRFTEVYWQotMDAxMTA0ICAgICAoYmFzZSAxNikJCVRFTEVYWQotCQkJCTExMTYsIEhZVU5EQUkgNDEgVE9XRVIsIDkxNy05Ci0JCQkJTU9LLURPTkcsIFlBTkdDSFVOLUtVLAotCQkJCVNFT1VMICAxNTgtNzIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTA1ICAgKGhleCkJCVN1bnBsdXMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTEwNSAgICAgKGJhc2UgMTYpCQlTdW5wbHVzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTksIElubm92YXRpb24gRmlyc3QgUm9hZCwgSHNpbmNodSBTY2llbmNlIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTA2ICAgKGhleCkJCVNpZW1lbnMgTlYgKEJlbGdpdW0pCi0wMDExMDYgICAgIChiYXNlIDE2KQkJU2llbWVucyBOViAoQmVsZ2l1bSkKLQkJCQlBdGVhbGFhbiAzNAotCQkJCUhlcmVudGFscyBBbnR3ZXJwIDIyMDAKLQkJCQlCRUxHSVVNCi0KLTAwLTExLTA3ICAgKGhleCkJCVJHQiBOZXR3b3JrcyBJbmMuCi0wMDExMDcgICAgIChiYXNlIDE2KQkJUkdCIE5ldHdvcmtzIEluYy4KLQkJCQkyOTI5IENhbXB1cyBEcml2ZQotCQkJCVN1aXRlIDE2NQotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMDggICAoaGV4KQkJT3JiaXRhbCBEYXRhIENvcnBvcmF0aW9uCi0wMDExMDggICAgIChiYXNlIDE2KQkJT3JiaXRhbCBEYXRhIENvcnBvcmF0aW9uCi0JCQkJMTkwMCBTLiBOb3Jmb2xrIFN0LiBTdGUgMzIwCi0JCQkJU2FuIE1hdGVvIENBIDk0NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0wOSAgIChoZXgpCQlNaWNyby1TdGFyIEludGVybmF0aW9uYWwKLTAwMTEwOSAgICAgKGJhc2UgMTYpCQlNaWNyby1TdGFyIEludGVybmF0aW9uYWwKLQkJCQlObyA2OSwgTGktRGUgU3RyZWV0LCBKdW5nLUhlIENpdHksCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTBBICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxMTBBICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNzA0MDUKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0wQiAgIChoZXgpCQlGcmFua2xpbiBUZWNobm9sb2d5IFN5c3RlbXMKLTAwMTEwQiAgICAgKGJhc2UgMTYpCQlGcmFua2xpbiBUZWNobm9sb2d5IFN5c3RlbXMKLQkJCQkyMDQwNiBFYXJsIFN0Ci0JCQkJVG9ycmFuY2UgQ0EgOTA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTBDICAgKGhleCkJCUF0bWFyayBUZWNobm8sIEluYy4KLTAwMTEwQyAgICAgKGJhc2UgMTYpCQlBdG1hcmsgVGVjaG5vLCBJbmMuCi0JCQkJMkYgU0QgQkxERywgMi0yLTMtMTQgQXRzdWJldHN1LW5pc2hpLCBBdHN1YmV0c3Uta3UKLQkJCQlTYXBwb3JvIEhva2thaWRvIDAwNC0wMDYyCi0JCQkJSkFQQU4KLQotMDAtMTEtMEQgICAoaGV4KQkJU0FOQmxhemUgVGVjaG5vbG9neSwgSW5jLgotMDAxMTBEICAgICAoYmFzZSAxNikJCVNBTkJsYXplIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyIENsb2NrIFRvd2VyIFBsYWNlCi0JCQkJTWF5bmFyZCBNQSAwMTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMEUgICAoaGV4KQkJVHN1cnVzYWtpIFNlYWxhbmQgVHJhbnNwb3J0YXRpb24gQ28uIEx0ZC4KLTAwMTEwRSAgICAgKGJhc2UgMTYpCQlUc3VydXNha2kgU2VhbGFuZCBUcmFuc3BvcnRhdGlvbiBDby4gTHRkLgotCQkJCTEwMDAgTWlzYQotCQkJCU9pdGEgIDg3MDAxOTYKLQkJCQlKQVBBTgotCi0wMC0xMS0wRiAgIChoZXgpCQluZXRwbGF0LEluYy4KLTAwMTEwRiAgICAgKGJhc2UgMTYpCQluZXRwbGF0LEluYy4KLQkJCQkyRiBPbHltcGlhIENlbnRlciwgODI4LTEwLCBZZW9rc2FtLWRvbmcsIEdhbmduYW0tZ3UKLQkJCQlTRU9VTCAgMTM1LTkzNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS0xMCAgIChoZXgpCQlNYXhhbm5hIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDExMTAgICAgIChiYXNlIDE2KQkJTWF4YW5uYSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVJvb20yMDEsIE5vLjQyLTMsIEx1eXVhbiBSb2FkCi0JCQkJR3Vhbmd6aG91ICA1MTAwOTUKLQkJCQlDSElOQQotCi0wMC0xMS0xMSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxMTExICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJMjExMSBORSAyNXRoIEF2ZW51ZQotCQkJCUhpbGxzYm9ybyBPUiA5NzEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMTIgICAoaGV4KQkJSG9uZXl3ZWxsIENNU1MKLTAwMTExMiAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgQ01TUwotCQkJCTgzMjMgTGluZGJlcmdoIEN0Ci0JCQkJU2FyYXNvdGEgRkwgMzQyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTEzICAgKGhleCkJCUZyYXVuaG9mZXIgRk9LVVMKLTAwMTExMyAgICAgKGJhc2UgMTYpCQlGcmF1bmhvZmVyIEZPS1VTCi0JCQkJS2Fpc2VyaW4tQXVndXN0YS1BbGxlZSAzMQotCQkJCUJlcmxpbiAgMTA1ODkKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLTE0ICAgKGhleCkJCUV2ZXJGb2N1cyBFbGVjdHJvbmljcyBDb3JwLgotMDAxMTE0ICAgICAoYmFzZSAxNikJCUV2ZXJGb2N1cyBFbGVjdHJvbmljcyBDb3JwLgotCQkJCTEyRiwgTm8uIDc5LCBTZWMuIDEsIFNoaW4tVGFpIFd1IFJkLgotCQkJCUhzaS1DaGkgVGFpcGVpIEhzaWVuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtMTUgICAoaGV4KQkJRVBJTiBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTExNSAgICAgKGJhc2UgMTYpCQlFUElOIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCUFjb3JuIENhbXB1cwotCQkJCTZ0aCBSZXN1bHQgV2F5LCBTdWl0ZSAyNDgKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTE2ICAgKGhleCkJCUNPVEVBVSBWRVJUIENPLiwgTFRELgotMDAxMTE2ICAgICAoYmFzZSAxNikJCUNPVEVBVSBWRVJUIENPLiwgTFRELgotCQkJCTMtMy0xOSBLQUNISURPS0kKLQkJCQlDSFVPLUtVIFRPS1lPIDEwNC0wMDU0Ci0JCQkJSkFQQU4KLQotMDAtMTEtMTcgICAoaGV4KQkJQ0VTTkVUCi0wMDExMTcgICAgIChiYXNlIDE2KQkJQ0VTTkVUCi0JCQkJWmlrb3ZhIDQKLQkJCQlQcmFoYSA2ICAxNjAgMDAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0xMS0xOCAgIChoZXgpCQlCTFggSUMgRGVzaWduIENvcnAuLCBMdGQuCi0wMDExMTggICAgIChiYXNlIDE2KQkJQkxYIElDIERlc2lnbiBDb3JwLiwgTHRkLgotCQkJCVJtIDEwMDYsIFF1YW50dW0gUGxhemEKLQkJCQlOby4yNywgWmhpY2h1biBSZCwgSGFpZGFuCi0JCQkJQmVpamluZyAgMTAwMDgzCi0JCQkJQ0hJTkEKLQotMDAtMTEtMTkgICAoaGV4KQkJU29sdGVyYXMsIEluYy4KLTAwMTExOSAgICAgKGJhc2UgMTYpCQlTb2x0ZXJhcywgSW5jLgotCQkJCTkwMCBXLiBTYW50YSBBbml0YSBTdHJlZXQKLQkJCQlTYW4gR2FicmllbCBDQSA5MTc3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMUEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTExQSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTFCICAgKGhleCkJCVRhcmdhIFN5c3RlbXMgRGl2IEwtMyBDb21tdW5pY2F0aW9ucyBDYW5hZGEKLTAwMTExQiAgICAgKGJhc2UgMTYpCQlUYXJnYSBTeXN0ZW1zIERpdiBMLTMgQ29tbXVuaWNhdGlvbnMgQ2FuYWRhCi0JCQkJMjA4MSBNZXJpdmFsZSBSZAotCQkJCVN1aXRlIDIwMAotCQkJCU90dGF3YSBPbnQgSzJHIDFHOQotCQkJCUNBTkFEQQotCi0wMC0xMS0xQyAgIChoZXgpCQlQbGVvcmEgVGVjaG5vbG9naWVzIEluYy4KLTAwMTExQyAgICAgKGJhc2UgMTYpCQlQbGVvcmEgVGVjaG5vbG9naWVzIEluYy4KLQkJCQkzNTkgVGVycnkgRm94IERyaXZlLCBTdWl0ZSAyMzAKLQkJCQlLYW5hdGEgT04gSzJLIDJFNwotCQkJCUNBTkFEQQotCi0wMC0xMS0xRCAgIChoZXgpCQlIZWN0cml4IExpbWl0ZWQKLTAwMTExRCAgICAgKGJhc2UgMTYpCQlIZWN0cml4IExpbWl0ZWQKLQkJCQlVbml0IDkwNi05MTEsIDkvRiwgU3RhbmhvcGUgSG9zdWUsCi0JCQkJNzM0LTczOCBLaW5nJ3MgUm9hZCwKLQkJCQlOb3J0aCBQb2ludCBIb25nIEtvbmcgCi0JCQkJQ0hJTkEKLQotMDAtMTEtMUUgICAoaGV4KQkJRVBTRyAoRXRoZXJuZXQgUG93ZXJsaW5rIFN0YW5kYXJkaXphdGlvbiBHcm91cCkKLTAwMTExRSAgICAgKGJhc2UgMTYpCQlFUFNHIChFdGhlcm5ldCBQb3dlcmxpbmsgU3RhbmRhcmRpemF0aW9uIEdyb3VwKQotCQkJCWMvbyBVbml2ZXJzaXR5IG9mIEFwcGxpZWQgU2NpZW5jZXMKLQkJCQlQTyBCb3ggODA1Ci0JCQkJV2ludGVydGh1ciBaSCBDSC04NDAxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTEtMUYgICAoaGV4KQkJRG9yZW1pIExhYnMsIEluYy4KLTAwMTExRiAgICAgKGJhc2UgMTYpCQlEb3JlbWkgTGFicywgSW5jLgotCQkJCTMwNiBFLiBBbGFtZWRhIEF2ZS4KLQkJCQlCdXJiYW5rIENBIDkxNTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0yMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDExMjAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0yMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDExMjEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0yMiAgIChoZXgpCQlDSU1TWVMgSW5jCi0wMDExMjIgICAgIChiYXNlIDE2KQkJQ0lNU1lTIEluYwotCQkJCSMzMDEsU2luc3VuZy1jbGVhbiBCTERHLDE0MCwgTm9uZ3Nlby1SaSxLaWhldW5nLUV1cAotCQkJCVlvbmdpbi1DaXR5IEt5dW5nZ2ktRG8gNDQ5LTcxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS0yMyAgIChoZXgpCQlBcHBvaW50ZWNoLCBJbmMuCi0wMDExMjMgICAgIChiYXNlIDE2KQkJQXBwb2ludGVjaCwgSW5jLgotCQkJCTZGLTIgTm8uMTkyIFR1bmctS3VhbiBSZC4KLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTI0ICAgKGhleCkJCUFwcGxlIENvbXB1dGVyCi0wMDExMjQgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIKLQkJCQkxIEluaWZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0yNSAgIChoZXgpCQlJQk0gQ29ycAotMDAxMTI1ICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUmQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMjYgICAoaGV4KQkJVmVuc3RhciBJbmMuCi0wMDExMjYgICAgIChiYXNlIDE2KQkJVmVuc3RhciBJbmMuCi0JCQkJOTI1MCBPd2Vuc21vdXRoIEF2ZS4KLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0yNyAgIChoZXgpCQlUQVNJLCBJbmMKLTAwMTEyNyAgICAgKGJhc2UgMTYpCQlUQVNJLCBJbmMKLQkJCQk1NTUxIERyeSBGb3JrIFJvYWQKLQkJCQlDbGV2ZXMgT0ggNDUwMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTI4ICAgKGhleCkJCVN0cmVhbWl0Ci0wMDExMjggICAgIChiYXNlIDE2KQkJU3RyZWFtaXQKLQkJCQlGbGlnaHQgRm9ydW0gMzU0MwotCQkJCUVpbmRob3ZlbiA1NjU3IERXCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTEtMjkgICAoaGV4KQkJUGFyYWRpc2UgRGF0YWNvbSBMdGQuCi0wMDExMjkgICAgIChiYXNlIDE2KQkJUGFyYWRpc2UgRGF0YWNvbSBMdGQuCi0JCQkJMSBXaGVhdG9uIFJvYWQKLQkJCQlXaXRoYW0gRXNzZXggVUsgQ004IDFVSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLTJBICAgKGhleCkJCU5pa28gTlYKLTAwMTEyQSAgICAgKGJhc2UgMTYpCQlOaWtvIE5WCi0JCQkJSW5kdXN0cmllcGFyayBXZXN0IDQwCi0JCQkJU2ludC1OaWtsYWFzIE8vViA5MTAwCi0JCQkJQkVMR0lVTQotCi0wMC0xMS0yQiAgIChoZXgpCQlOZXRNb2R1bGUgQUcKLTAwMTEyQiAgICAgKGJhc2UgMTYpCQlOZXRNb2R1bGUgQUcKLQkJCQlNZXJpZWR3ZWcgMTEKLQkJCQlOaWVkZXJ3YW5nZW4gQ0ggMzE3MgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTExLTJDICAgKGhleCkJCUlaVCBHbWJICi0wMDExMkMgICAgIChiYXNlIDE2KQkJSVpUIEdtYkgKLQkJCQlBbSBXZWljaHNlbGdhcnRlbiA1Ci0JCQkJRXJsYW5nZW4gQmF2YXJpYSA5MTA1OAotCQkJCUdFUk1BTlkKLQotMDAtMTEtMkQgICAoaGV4KQkJaVB1bHNlIFN5c3RlbXMKLTAwMTEyRCAgICAgKGJhc2UgMTYpCQlpUHVsc2UgU3lzdGVtcwotCQkJCTFzdCBGbG9vciBOb3ZlbGwgSG91c2UsIE1vcm5pbmdzaWRlIFdlZGdlIE9mZmljZSBQYXJrCi0JCQkJMjU1IFJpdm9uaWEgUm9hZAotCQkJCU1vcm5pbmdzaWRlIEpvaGFubmVzYnVyZyAyMTI4Ci0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTExLTJFICAgKGhleCkJCUNFSUNPTQotMDAxMTJFICAgICAoYmFzZSAxNikJCUNFSUNPTQotCQkJCTE3IHJ1ZSBHYXN0b24gRXZyYXJkCi0JCQkJVG91bG91c2UgQ2VkZXggMSBIYXV0ZS1HYXJvbm5lIDMxMDk0Ci0JCQkJRlJBTkNFCi0KLTAwLTExLTJGICAgKGhleCkJCUFTVVNUZWsgQ29tcHV0ZXIgSW5jLgotMDAxMTJGICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ29tcHV0ZXIgSW5jLgotCQkJCU5vLjE1MCwgTGktVGUgUmQuLCBQZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtMzAgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMgKEhvbmcgS29uZykgTHRkLgotMDAxMTMwICAgICAoYmFzZSAxNikJCUFsbGllZCBUZWxlc2lzIChIb25nIEtvbmcpIEx0ZC4KLQkJCQlSb29tIEYsIDMvRiwgWWV1bmcgWWl1IENob25nIChuby4gOCkgSW5kdXN0cmlhbCBidWlsZGluZywKLQkJCQkyMCBXYW5nIEhvaSBSb2FkLCBLb3dsb29uIEJheSwKLQkJCQlIT05HIEtPTkcKLQotMDAtMTEtMzEgICAoaGV4KQkJVU5BVEVDSC4gQ08uLExURAotMDAxMTMxICAgICAoYmFzZSAxNikJCVVOQVRFQ0guIENPLixMVEQKLQkJCQlBLTcyNyAsR0VPUFlVTkcgVE9XTiwyMDMtMQotCQkJCU5PTkhZVU5HLURPTkcKLQkJCQlLQU5HTkFNLUdVIFNFT1VMIDEzNS0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtMzIgICAoaGV4KQkJU3lub2xvZ3kgSW5jb3Jwb3JhdGVkCi0wMDExMzIgICAgIChiYXNlIDE2KQkJU3lub2xvZ3kgSW5jb3Jwb3JhdGVkCi0JCQkJNkYtMiwgTm8uMTA2LCBDaGFuZyBBbiBXLiBSZC4sCi0JCQkJVGFpcGVpICAxMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTMzICAgKGhleCkJCVNpZW1lbnMgQXVzdHJpYSBTSU1FQQotMDAxMTMzICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQXVzdHJpYSBTSU1FQQotCQkJCVNpZW1lbnNzdHJhc3NlIDkwLTkyCi0JCQkJVmllbm5hICAxMjEwCi0JCQkJQVVTVFJJQQotCi0wMC0xMS0zNCAgIChoZXgpCQlNZWRpYUNlbGwsIEluYy4KLTAwMTEzNCAgICAgKGJhc2UgMTYpCQlNZWRpYUNlbGwsIEluYy4KLQkJCQk2MDAgMTd0aCBTdAotCQkJCVN1aXRlIDI4MDAgU291dGgKLQkJCQlEZW52ZXIgQ08gODAyMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTM1ICAgKGhleCkJCUdyYW5kZXllIEx0ZAotMDAxMTM1ICAgICAoYmFzZSAxNikJCUdyYW5kZXllIEx0ZAotCQkJCTYgSHV4bGV5IFJvYWQKLQkJCQlTdXJyZXkgUmVzZWFyY2ggUGFyawotCQkJCUd1aWxkZm9yZCBTdXJyZXkgR1UyIDdSRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLTM2ICAgKGhleCkJCUdvb2RyaWNoIFNlbnNvciBTeXN0ZW1zCi0wMDExMzYgICAgIChiYXNlIDE2KQkJR29vZHJpY2ggU2Vuc29yIFN5c3RlbXMKLQkJCQkxNDMwMCBKdWRpY2lhbCBSb2FkCi0JCQkJQnVybnN2aWxsZSBNaW5uZXNvdGEgNTUzMDYtNDg5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMzcgICAoaGV4KQkJQUlDSEkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDExMzcgICAgIChiYXNlIDE2KQkJQUlDSEkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJMQotCQkJCWFpY2hpLWNobwotCQkJCWthc3VnYWkgY2l0eSBhaWNoaSBwcmVmLiA0ODYtODY2NgotCQkJCUpBUEFOCi0KLTAwLTExLTM4ICAgKGhleCkJCVRBSVNISU4gQ08uLCBMVEQuCi0wMDExMzggICAgIChiYXNlIDE2KQkJVEFJU0hJTiBDTy4sIExURC4KLQkJCQkyMDAtNyBOYWthbm8KLQkJCQlOYWthbm8gTmFnYW5vIDM4My0wMDEzCi0JCQkJSkFQQU4KLQotMDAtMTEtMzkgICAoaGV4KQkJU1RPRUJFUiBBTlRSSUVCU1RFQ0hOSUsgR21iSCArIENvLiBLRy4KLTAwMTEzOSAgICAgKGJhc2UgMTYpCQlTVE9FQkVSIEFOVFJJRUJTVEVDSE5JSyBHbWJIICsgQ28uIEtHLgotCQkJCUtpZXNlbGJyb25uZXIgU3RyLiAxMgotCQkJCVBmb3J6aGVpbSAgNzUxNzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLTNBICAgKGhleCkJCVNISU5CT1JBTQotMDAxMTNBICAgICAoYmFzZSAxNikJCVNISU5CT1JBTQotCQkJCTRGIERBSE5XT1JMRCBCVUlMRElORywgMTU0LTExIFNBTVNVTkctRE9ORwotCQkJCUtBTkdOQU0tR1UsCi0JCQkJU0VPVUwgIDEzNS04NzkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtM0IgICAoaGV4KQkJTWljcm9uZXQgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAxMTNCICAgICAoYmFzZSAxNikJCU1pY3JvbmV0IENvbW11bmljYXRpb25zIEluYy4KLQkJCQkxMkYtMSwgTm8uIDEwMCwgTWluLUNodWFuIFJvYWQKLQkJCQlIc2luLVRpZW4gVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtM0MgICAoaGV4KQkJTWljcm9uYXMgR21iSAotMDAxMTNDICAgICAoYmFzZSAxNikJCU1pY3JvbmFzIEdtYkgKLQkJCQlIYW5zLUJ1bnRlLVN0cmFzc2UgMTkKLQkJCQlGcmVpYnVyZyBCVyBELTc5MTA4Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS0zRCAgIChoZXgpCQlLTiBTT0xURUMgQ08uLExURC4KLTAwMTEzRCAgICAgKGJhc2UgMTYpCQlLTiBTT0xURUMgQ08uLExURC4KLQkJCQk5OEItNUwgTkFNRE9ORyBJTkRVU1RSSUFMIENPTVBMRVggIzY2Mi00IEdPSkFOLURPTkcKLQkJCQlOQU1ET05HLUdVIElOQ0hFT04gNDA1LTgxOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS0zRSAgIChoZXgpCQlKTCBDb3Jwb3JhdGlvbgotMDAxMTNFICAgICAoYmFzZSAxNikJCUpMIENvcnBvcmF0aW9uCi0JCQkJNC00LTE3IFNVR0UKLQkJCQlUQU1BLUtVCi0JCQkJS0FXQVNBS0ktQ0lUWSBLQU5BR0FXQS1LRU4gMjE0LTAwMDEKLQkJCQlKQVBBTgotCi0wMC0xMS0zRiAgIChoZXgpCQlBbGNhdGVsIERJCi0wMDExM0YgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBESQotCQkJCVpJIGxhdm9pc2llcgotCQkJCUVVIE5vcm1hbmRpZSA3NjI2MAotCQkJCUZSQU5DRQotCi0wMC0xMS00MCAgIChoZXgpCQlOYW5vbWV0cmljcyBJbmMuCi0wMDExNDAgICAgIChiYXNlIDE2KQkJTmFub21ldHJpY3MgSW5jLgotCQkJCTI1MCBIZXJ6YmVyZyBSZC4KLQkJCQlLYW5hdGEgT250YXJpbyBLMksgMkExCi0JCQkJQ0FOQURBCi0KLTAwLTExLTQxICAgKGhleCkJCUdvb2RNYW4gQ29ycG9yYXRpb24KLTAwMTE0MSAgICAgKGJhc2UgMTYpCQlHb29kTWFuIENvcnBvcmF0aW9uCi0JCQkJMkYsIE5vLjU3MiwgU2VjLjEsIE1pbmctU2hlbmcgTiBSb2FkLCBLd2VpLVNoYW4gSHNpYW5nCi0JCQkJVGFveXVhbiBIc2llbiAgMzMzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTQyICAgKGhleCkJCWUtU01BUlRDT00gIElOQy4KLTAwMTE0MiAgICAgKGJhc2UgMTYpCQllLVNNQVJUQ09NICBJTkMuCi0JCQkJM0YsIDIxNiwgSW1vay1Eb25nCi0JCQkJSmFuZ0FuLUt1Ci0JCQkJU3V3b24gS3lvdW5na2ktRG8gNDQwLTMxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS00MyAgIChoZXgpCQlERUxMIElOQy4KLTAwMTE0MyAgICAgKGJhc2UgMTYpCQlERUxMIElOQy4KLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSUjUgTVMtODU0NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTQ0ICAgKGhleCkJCUFzc3VyYW5jZSBUZWNobm9sb2d5IENvcnAKLTAwMTE0NCAgICAgKGJhc2UgMTYpCQlBc3N1cmFuY2UgVGVjaG5vbG9neSBDb3JwCi0JCQkJNjMwNCBQb3RvbWFjIEF2ZW51ZQotCQkJCUFsZXhhbmRyaWEgVmlyZ2luaWEgMjIzMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTQ1ICAgKGhleCkJCVZhbHVlUG9pbnQgTmV0d29ya3MKLTAwMTE0NSAgICAgKGJhc2UgMTYpCQlWYWx1ZVBvaW50IE5ldHdvcmtzCi0JCQkJMzUwIFRvd25zZW5kIFN0IFN0ZSAzMjAKLQkJCQlTYW4gRnJhbmNpc2NvLCBDQSA5NDEwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNDYgICAoaGV4KQkJVGVsZWNhcmQtUHJpYm9yIEx0ZAotMDAxMTQ2ICAgICAoYmFzZSAxNikJCVRlbGVjYXJkLVByaWJvciBMdGQKLQkJCQlMdXN0ZG9yZnNrYXlhIGRvcm9nYSwgMTYyCi0JCQkJT2Rlc3NhICA2NTExNQotCQkJCVVLUkFJTkUKLQotMDAtMTEtNDcgICAoaGV4KQkJU2Vjb20tSW5kdXN0cnkgY28uTFRELgotMDAxMTQ3ICAgICAoYmFzZSAxNikJCVNlY29tLUluZHVzdHJ5IGNvLkxURC4KLQkJCQlGdWt1byBrYUt1cmFtb3RvIEljaGlob25raSAzLTMKLQkJCQlTaGlyb2lzaGkgTWl5YWdpIDk4OS0wMjk1Ci0JCQkJSkFQQU4KLQotMDAtMTEtNDggICAoaGV4KQkJUHJvbG9uIENvbnRyb2wgU3lzdGVtcwotMDAxMTQ4ICAgICAoYmFzZSAxNikJCVByb2xvbiBDb250cm9sIFN5c3RlbXMKLQkJCQlIZXJzdGVkdmVzdGVyc3RyYWVkZSA1NgotCQkJCUFsYmVydHNsdW5kICBESy0yNjIwCi0JCQkJREVOTUFSSwotCi0wMC0xMS00OSAgIChoZXgpCQlQcm9saXBoaXggSW5jLgotMDAxMTQ5ICAgICAoYmFzZSAxNikJCVByb2xpcGhpeCBJbmMuCi0JCQkJNjYgVGFkbXVjayBSZC4KLQkJCQlXZXN0Zm9yZCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNEEgICAoaGV4KQkJS0FZQUJBIElORFVTVFJZIENvLC5MdGQuCi0wMDExNEEgICAgIChiYXNlIDE2KQkJS0FZQUJBIElORFVTVFJZIENvLC5MdGQuCi0JCQkJV29ybGQgVHJhZGUgQ2VudGVyIEJsZGcuLCA0LTEKLQkJCQlIYW1hbWF0c3UtY2hvIDItY2hvbWUsCi0JCQkJTWluYXRvLWt1LCBUb2t5byBNZXRvLiAxMDUtNjExMQotCQkJCUpBUEFOCi0KLTAwLTExLTRCICAgKGhleCkJCUZyYW5jb3R5cC1Qb3N0YWxpYSBHbWJICi0wMDExNEIgICAgIChiYXNlIDE2KQkJRnJhbmNvdHlwLVBvc3RhbGlhIEdtYkgKLQkJCQlUcmlmdHdlZyAyMS0yNgotCQkJCUJpcmtlbndlcmRlciBCcmFuZGVuYnVyZyAxNjU0NwotCQkJCUdFUk1BTlkKLQotMDAtMTEtNEMgICAoaGV4KQkJY2FmZmVpbmEgYXBwbGllZCByZXNlYXJjaCBsdGQuCi0wMDExNEMgICAgIChiYXNlIDE2KQkJY2FmZmVpbmEgYXBwbGllZCByZXNlYXJjaCBsdGQuCi0JCQkJMTI1IGJhaXJkIGF2ZQotCQkJCWNvY2hyYW5lIGFsYmVydGEgdDRjIDFjNwotCQkJCUNBTkFEQQotCi0wMC0xMS00RCAgIChoZXgpCQlBdHN1bWkgRWxlY3RyaWMgQ28uLExURC4KLTAwMTE0RCAgICAgKGJhc2UgMTYpCQlBdHN1bWkgRWxlY3RyaWMgQ28uLExURC4KLQkJCQk0LTItMiBTaGluLU1peWFrb2RhLCBLaXRhLWt1Ci0JCQkJSGFtYW1hdHN1IFNoaXp1b2thIDQzMS0yMTAzCi0JCQkJSkFQQU4KLQotMDAtMTEtNEUgICAoaGV4KQkJNjkwODg1IE9udGFyaW8gSW5jLgotMDAxMTRFICAgICAoYmFzZSAxNikJCTY5MDg4NSBPbnRhcmlvIEluYy4KLQkJCQkyMDUgQW5uYWdlbSBCbHZkLgotCQkJCU1pc3Npc3NhdWdhIE9udGFyaW8gTDVUIDJWMQotCQkJCUNBTkFEQQotCi0wMC0xMS00RiAgIChoZXgpCQlVUyBEaWdpdGFsIFRlbGV2aXNpb24sIEluYwotMDAxMTRGICAgICAoYmFzZSAxNikJCVVTIERpZ2l0YWwgVGVsZXZpc2lvbiwgSW5jCi0JCQkJNTgwNyBOLiBBbmRyZXdzIFdheQotCQkJCUZvcnQgTGF1ZGVyZGFsZSBGTCAzMzMwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNTAgICAoaGV4KQkJQmVsa2luIENvcnBvcmF0aW9uCi0wMDExNTAgICAgIChiYXNlIDE2KQkJQmVsa2luIENvcnBvcmF0aW9uCi0JCQkJNTAxIFdlc3QgV2FsbnV0IFN0cmVldAotCQkJCUNvbXB0b24gQ0EgOTAyMjAtNTIyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNTEgICAoaGV4KQkJTXlrb3Ryb254Ci0wMDExNTEgICAgIChiYXNlIDE2KQkJTXlrb3Ryb254Ci0JCQkJMzU5IFZhbiBOZXNzIFdheQotCQkJCVRvcnJhbmNlIENBIDkwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS01MiAgIChoZXgpCQlFaWRzdm9sbCBFbGVjdHJvbmljcyBBUwotMDAxMTUyICAgICAoYmFzZSAxNikJCUVpZHN2b2xsIEVsZWN0cm9uaWNzIEFTCi0JCQkJTmVkcmUgVmlsYmVyZyB2ZWkgOAotCQkJCUVpZHN2b2xsICBOLTIwODAKLQkJCQlOT1JXQVkKLQotMDAtMTEtNTMgICAoaGV4KQkJVHJpZGVudCBUZWssIEluYy4KLTAwMTE1MyAgICAgKGJhc2UgMTYpCQlUcmlkZW50IFRlaywgSW5jLgotCQkJCTgwNDEgQ2Vzc25hIEF2ZSAjMjAwCi0JCQkJR2FpdGhlcnNidXJnIE1EIDIwODc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS01NCAgIChoZXgpCQlXZWJwcm8gVGVjaG5vbG9naWVzIEluYy4KLTAwMTE1NCAgICAgKGJhc2UgMTYpCQlXZWJwcm8gVGVjaG5vbG9naWVzIEluYy4KLQkJCQkyRi0xLCBOby44MSwgU2VjLiA0LCBDaHVuZ2NoaW5nIE4uIFJkLiwKLQkJCQlTaHJsaW4gQ2hpdQotCQkJCVRhaXBlaSAgMTExCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS01NSAgIChoZXgpCQlTZXZpcyBTeXN0ZW1zCi0wMDExNTUgICAgIChiYXNlIDE2KQkJU2V2aXMgU3lzdGVtcwotCQkJCTI4MDUgTiBEYWxsYXMgUGFya3dheSwgU1RFIDUzMAotCQkJCVBsYW5vIFRleGFzIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS01NiAgIChoZXgpCQlQaGFyb3MgU3lzdGVtcyBOWgotMDAxMTU2ICAgICAoYmFzZSAxNikJCVBoYXJvcyBTeXN0ZW1zIE5aCi0JCQkJTGV2ZWwgMywgMTIzIENhcmx0b24gR29yZSBSb2FkCi0JCQkJR3JhZnRvbgotCQkJCUF1Y2tsYW5kIE5aIDEwMDEKLQkJCQlORVcgWkVBTEFORAotCi0wMC0xMS01NyAgIChoZXgpCQlPRiBOZXR3b3JrcyBDby4sIEx0ZC4KLTAwMTE1NyAgICAgKGJhc2UgMTYpCQlPRiBOZXR3b3JrcyBDby4sIEx0ZC4KLQkJCQkxLTMtQ2I0IE5ha2FzZSwgTWloYW1hLWt1Ci0JCQkJQ2hpYmEgQ2l0eSBDaGliYSAyNjEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTExLTU4ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAxMTU4ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTExLTU5ICAgKGhleCkJCU1BVElTU0UgTkVUV09SS1MgSU5DCi0wMDExNTkgICAgIChiYXNlIDE2KQkJTUFUSVNTRSBORVRXT1JLUyBJTkMKLQkJCQkzMzkgTiBCRVJOQVJETyBBVkUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS01QSAgIChoZXgpCQlJdm9jbGFyIFZpdmFkZW50IEFHCi0wMDExNUEgICAgIChiYXNlIDE2KQkJSXZvY2xhciBWaXZhZGVudCBBRwotCQkJCUJlbmRlcmVyc3RyYXNzZSAyCi0JCQkJU2NoYWFuICA5NDk0Ci0JCQkJTElFQ0hURU5TVEVJTgotCi0wMC0xMS01QiAgIChoZXgpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4gKEVDUykKLTAwMTE1QiAgICAgKGJhc2UgMTYpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4gKEVDUykKLQkJCQlOby4yMiwgQWxsZXkgMzgsIExhbmUgOTEsIFNlYy4gMSwgTmVpIEh1IFJvYWQsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTVDICAgKGhleCkJCUNpc2NvCi0wMDExNUMgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNUQgICAoaGV4KQkJQ2lzY28KLTAwMTE1RCAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS01RSAgIChoZXgpCQlQcm9NaW5lbnQgRG9zaWVydGVjaG5payBHbWJICi0wMDExNUUgICAgIChiYXNlIDE2KQkJUHJvTWluZW50IERvc2llcnRlY2huaWsgR21iSAotCQkJCUltIFNjaHVtYWNoZXJnZXdhbm4gNS0xMQotCQkJCUhlaWRlbGJlcmcgQlcgNjkxMjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLTVGICAgKGhleCkJCUlUWCBTZWN1cml0eSBDby4sIEx0ZC4KLTAwMTE1RiAgICAgKGJhc2UgMTYpCQlJVFggU2VjdXJpdHkgQ28uLCBMdGQuCi0JCQkJOUYgS29sb24gRGlnaXRhbCBUb3dlciBBc3RvbiBCbGRnLiA1MDUtMTQKLQkJCQlHYXNhbi1kb25nIEdldW1jaGVvbi1ndSBTRU9VTCAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTYwICAgKGhleCkJCUFSVERJTyBDb21wYW55IENvLiwgTFRECi0wMDExNjAgICAgIChiYXNlIDE2KQkJQVJURElPIENvbXBhbnkgQ28uLCBMVEQKLQkJCQk3dGggRkwuLiwgTm8uNDc2LCBNaW4tSHUgUkQuLCBIc2luLUNodSwKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTYxICAgKGhleCkJCU5ldFN0cmVhbXMsIExMQwotMDAxMTYxICAgICAoYmFzZSAxNikJCU5ldFN0cmVhbXMsIExMQwotCQkJCTM2MDAgVy4gUGFybWVyIExhbmUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlBdXN0aW4gVFggNzg3MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTYyICAgKGhleCkJCVNUQVIgTUlDUk9OSUNTIENPLixMVEQuCi0wMDExNjIgICAgIChiYXNlIDE2KQkJU1RBUiBNSUNST05JQ1MgQ08uLExURC4KLQkJCQk1MzYgU2hpbWl6dW5hbmF0c3VzaGlueWEKLQkJCQlTaGl6dW9rYSAgNDI0LTAwNjYKLQkJCQlKQVBBTgotCi0wMC0xMS02MyAgIChoZXgpCQlTWVNURU0gU1BBIERFUFQuIEVMRUNUUk9OSUNTCi0wMDExNjMgICAgIChiYXNlIDE2KQkJU1lTVEVNIFNQQSBERVBULiBFTEVDVFJPTklDUwotCQkJCVZJQSBHSElBUk9MQSBWRUNDSElBIDczCi0JCQkJRklPUkFOTyBNT0RFTkVTRSBNT0RFTkEgSS00MTA0MgotCQkJCUlUQUxZCi0KLTAwLTExLTY0ICAgKGhleCkJCUFDQVJEIFRlY2hub2xvZ3kgQ29ycC4KLTAwMTE2NCAgICAgKGJhc2UgMTYpCQlBQ0FSRCBUZWNobm9sb2d5IENvcnAuCi0JCQkJNkYgTm8uNzggU2VjMSBLd2FuZyBGdSBSb2FkLCBTYW5jaHVuZywKLQkJCQlUYWlwZWkgSHNpZW4gIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtNjUgICAoaGV4KQkJWm55eCBOZXR3b3JrcwotMDAxMTY1ICAgICAoYmFzZSAxNikJCVpueXggTmV0d29ya3MKLQkJCQk0ODQyMSBNaWxtb250IERyaXZlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNjYgICAoaGV4KQkJVGFlbGltIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxMTY2ICAgICAoYmFzZSAxNikJCVRhZWxpbSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkxOTYtNSwgQU5ZQU5HNy1ET05HIE1BTkFOLUdVCi0JCQkJQU5ZQU5HLVNJIEtZVUdHSS1ETyA0MzAtODE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTY3ICAgKGhleCkJCUludGVncmF0ZWQgU3lzdGVtIFNvbHV0aW9uIENvcnAuCi0wMDExNjcgICAgIChiYXNlIDE2KQkJSW50ZWdyYXRlZCBTeXN0ZW0gU29sdXRpb24gQ29ycC4KLQkJCQkzRiwgTm8uIDItMSwgaW5kdXN0cnkgRWFzdCBSZC4sIEkKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtNjggICAoaGV4KQkJSG9tZUxvZ2ljIExMQwotMDAxMTY4ICAgICAoYmFzZSAxNikJCUhvbWVMb2dpYyBMTEMKLQkJCQkxMDAgSG9vZHMgTGFuZQotCQkJCU1hcmJsZWhlYWQgTUEgMDE5NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTY5ICAgKGhleCkJCUVNUyBTYXRjb20KLTAwMTE2OSAgICAgKGJhc2UgMTYpCQlFTVMgU2F0Y29tCi0JCQkJR3JlZW4gTGFuZQotCQkJCUFzaGNodXJjaAotCQkJCVRld2tlc2J1cnkgR2xvdWNlc3RlcnNoaXJlIEdMMjAgOEhECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtNkEgICAoaGV4KQkJRG9tbyBMdGQKLTAwMTE2QSAgICAgKGJhc2UgMTYpCQlEb21vIEx0ZAotCQkJCVdlc3NleCBIb3VzZQotCQkJCVVwcGVyIE1hcmtldCBTdHJlZXQKLQkJCQlFYXN0bGVpZ2ggSGFtcHNoaXJlIFNPNTAgOUZECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtNkIgICAoaGV4KQkJRGlnaXRhbCBEYXRhIENvbW11bmljYXRpb25zIEFzaWEgQ28uLEx0ZAotMDAxMTZCICAgICAoYmFzZSAxNikJCURpZ2l0YWwgRGF0YSBDb21tdW5pY2F0aW9ucyBBc2lhIENvLixMdGQKLQkJCQk4RixOby40MSxMYW5lIDIyMSxLYW5nLUNoaWVuIFJELixOZWktSHUgRGlzLiwKLQkJCQlUYWlwZWkgQ2l0eSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS02QyAgIChoZXgpCQlOYW53YW5nIE11bHRpbWVkaWEgSW5jLixMdGQKLTAwMTE2QyAgICAgKGJhc2UgMTYpCQlOYW53YW5nIE11bHRpbWVkaWEgSW5jLixMdGQKLQkJCQlGbG9vciAxMixUaWFueXVhbiBCbGRnLFdlbnNhbiBSZCM1MDgKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTMKLQkJCQlDSElOQQotCi0wMC0xMS02RCAgIChoZXgpCQlBbWVyaWNhbiBUaW1lIGFuZCBTaWduYWwKLTAwMTE2RCAgICAgKGJhc2UgMTYpCQlBbWVyaWNhbiBUaW1lIGFuZCBTaWduYWwKLQkJCQkxNDAgVGhpcmQgU3QuIFNvdXRoCi0JCQkJRGFzc2VsIE1OIDU1MzI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS02RSAgIChoZXgpCQlQZVBMaW5rIEx0ZC4KLTAwMTE2RSAgICAgKGJhc2UgMTYpCQlQZVBMaW5rIEx0ZC4KLQkJCQkxNy9GLiwgUGFyayBCdWlsZGluZwotCQkJCTQ3NiBDYXN0bGUgUGVhayBSb2FkCi0JCQkJQ2hldW5nIFNoYSBXYW4gS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTEtNkYgICAoaGV4KQkJTmV0Zm9yeW91IENvLiwgTFRELgotMDAxMTZGICAgICAoYmFzZSAxNikJCU5ldGZvcnlvdSBDby4sIExURC4KLQkJCQkxMTIxLTQgM0YsICBLd2FueWFuZy1kb25nLCBEb25nYW4tZ3UKLQkJCQlBbnlhbmctc2kgS3l1bmdnaS1kbyA0MzEtODA0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTcwICAgKGhleCkJCUdTQyBTUkwKLTAwMTE3MCAgICAgKGJhc2UgMTYpCQlHU0MgU1JMCi0JCQkJVklBIFBFUiBWSU1FUkNBVEUKLQkJCQlVU01BVEUgVkVMQVRFIE1JTEFOTyAyMDA0MAotCQkJCUlUQUxZCi0KLTAwLTExLTcxICAgKGhleCkJCURFWFRFUiBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxMTcxICAgICAoYmFzZSAxNikJCURFWFRFUiBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTJGIFNoaW5zdW5nIEIvRCA0MDQtMQotCQkJCUJhY2toeXVuLURvbmcsIEJ1bmRhbmctR3UKLQkJCQlTdW5nbmFtIEd5dW5nZ2kgNDYzLTQyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS03MiAgIChoZXgpCQlDT1RST04gQ09SUE9SQVRJT04KLTAwMTE3MiAgICAgKGJhc2UgMTYpCQlDT1RST04gQ09SUE9SQVRJT04KLQkJCQkxMkZMLE5vLjE1MCxTZWMuNCxDaGVuZy1EZSBSZAotCQkJCVNoaWhsaW4gRGlzdHJpY3QKLQkJCQlUYWlwZWkgQ2l0eSAgMTExCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS03MyAgIChoZXgpCQlTTUFSVCBNb2R1bGFyIFRlY2hub2xvZ2llcwotMDAxMTczICAgICAoYmFzZSAxNikJCVNNQVJUIE1vZHVsYXIgVGVjaG5vbG9naWVzCi0JCQkJNDQxNSBFIENvdHRvbiBDZW50ZXIgQmx2ZAotCQkJCVN1aXRlIDEwMAotCQkJCVBob2VuaXggQVogODUwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTc0ICAgKGhleCkJCVdpYmh1IFRlY2hub2xvZ2llcywgSW5jLgotMDAxMTc0ICAgICAoYmFzZSAxNikJCVdpYmh1IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE1NjEgQmxhY2toYXdrIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS03NSAgIChoZXgpCQlQYXRoU2NhbGUsIEluYy4KLTAwMTE3NSAgICAgKGJhc2UgMTYpCQlQYXRoU2NhbGUsIEluYy4KLQkJCQk0NzcgTi4gTWF0aGlsZGEgQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNzYgICAoaGV4KQkJSW50ZWxsYW1iZGEgU3lzdGVtcywgSW5jLgotMDAxMTc2ICAgICAoYmFzZSAxNikJCUludGVsbGFtYmRhIFN5c3RlbXMsIEluYy4KLQkJCQk0ODUwMSBXYXJtIFNwcmluZ3MgQmx2ZCwgIzEwNwotCQkJCUZyZW1vbnQgQ2FsaWZvcm5pYSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNzcgICAoaGV4KQkJQ29heGlhbCBOZXR3b3JrcywgSW5jLgotMDAxMTc3ICAgICAoYmFzZSAxNikJCUNvYXhpYWwgTmV0d29ya3MsIEluYy4KLQkJCQk0NjMzIE9sZCBJcm9uc2lkZXMgRHIKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNzggICAoaGV4KQkJQ2hpcm9uIFRlY2hub2xvZ3kgTHRkCi0wMDExNzggICAgIChiYXNlIDE2KQkJQ2hpcm9uIFRlY2hub2xvZ3kgTHRkCi0JCQkJV3l2b2xzIENvdXJ0Ci0JCQkJU3dhbGxvd2ZpZWxkCi0JCQkJUmVhZGluZyBCZXJrc2hpcmUgUkc3IDFXWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLTc5ICAgKGhleCkJCVNpbmd1bGFyIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTAwMTE3OSAgICAgKGJhc2UgMTYpCQlTaW5ndWxhciBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJMjFGLCBOby4zNywgU2VjLjIsIFNhbiBNaW4gUmQuLAotCQkJCVBhbiBDaGlhbyBDaXR5LCBUYWlwZWkgQ291bnR5Ci0JCQkJVGFpcGVpICAyMjAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTdBICAgKGhleCkJCVNpbmdpbSBJbnRlcm5hdGlvbmFsIENvcnAuCi0wMDExN0EgICAgIChiYXNlIDE2KQkJU2luZ2ltIEludGVybmF0aW9uYWwgQ29ycC4KLQkJCQk2Ri0yLCBOby4gMTkwLCBTZWMuIDIgQ2h1bmcgSHNpbiBSb2FkLAotCQkJCUhzaW4gVGllbiBDaXR5ICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTdCICAgKGhleCkJCUL8Y2hpIExhYm9ydGVjaG5payBBRwotMDAxMTdCICAgICAoYmFzZSAxNikJCUL8Y2hpIExhYm9ydGVjaG5payBBRwotCQkJCU1laWVyc2VnZ3N0cmFzc2UgNDAKLQkJCQlGbGF3aWwgOTIzMCBTRwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTExLTdDICAgKGhleCkJCWUtenkubmV0Ci0wMDExN0MgICAgIChiYXNlIDE2KQkJZS16eS5uZXQKLQkJCQlTbWlybmlzIDE0Ci0JCQkJVmVyaWEgSW1hdGhpYSA1OTEwMAotCQkJCUdSRUVDRQotCi0wMC0xMS03RCAgIChoZXgpCQlaTUQgQW1lcmljYSwgSW5jLgotMDAxMTdEICAgICAoYmFzZSAxNikJCVpNRCBBbWVyaWNhLCBJbmMuCi0JCQkJMTUzNzMgSW5ub3ZhdGlvbiBEcml2ZQotCQkJCVN1aXRlIDExNQotCQkJCVNhbiBEaWVvIENBIDkyMTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS03RSAgIChoZXgpCQlQcm9nZW55IEluYy4KLTAwMTE3RSAgICAgKGJhc2UgMTYpCQlQcm9nZW55IEluYy4KLQkJCQkxNDA3IEJhcmNsYXkgQm91bGV2YXJkCi0JCQkJQnVmZmFsbyBHcm92ZSBJTCA2MDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtN0YgICAoaGV4KQkJTmVvdHVuZSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uLC5MVEQKLTAwMTE3RiAgICAgKGJhc2UgMTYpCQlOZW90dW5lIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24sLkxURAotCQkJCTE3MDMjICBOby43MzcgIE5vcnRoIG9mIENhb3hpIFJkLgotCQkJCVNoYW5naGFpICAyMDAwMzAKLQkJCQlDSElOQQotCi0wMC0xMS04MCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxMTgwICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtODEgICAoaGV4KQkJSW50ZXJFbmVyZ3kgQ28uTHRkLAotMDAxMTgxICAgICAoYmFzZSAxNikJCUludGVyRW5lcmd5IENvLkx0ZCwKLQkJCQk0RiBTaGlueW9rb2hhbWEgQm9zZWkgQmxkZy4KLQkJCQkzLTIwLTEzIFNoaW55b2tvaGFtYSBLb2hob2t1LWt1Ci0JCQkJWW9rb2hhbWEgY2l0eSBLYW5hZ2F3YSAyMjItMDAzMwotCQkJCUpBUEFOCi0KLTAwLTExLTgyICAgKGhleCkJCUlNSSBOb3JncmVuIEx0ZAotMDAxMTgyICAgICAoYmFzZSAxNikJCUlNSSBOb3JncmVuIEx0ZAotCQkJCVBPIEJveCAyMgotCQkJCUVhc3Rlcm4gQXZlbnVlCi0JCQkJTGljaGZpZWxkIFN0YWZmb3Jkc2hpcmUgV1MxMyA2U0IKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS04MyAgIChoZXgpCQlEYXRhbG9naWMgTW9iaWxlLCBJbmMuCi0wMDExODMgICAgIChiYXNlIDE2KQkJRGF0YWxvZ2ljIE1vYmlsZSwgSW5jLgotCQkJCTE1MDUgV2VzdGVjIERyaXZlCi0JCQkJRXVnZW5lIE9SIDk3NDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS04NCAgIChoZXgpCQlIdW1vIExhYm9yYXRvcnksTHRkLgotMDAxMTg0ICAgICAoYmFzZSAxNikJCUh1bW8gTGFib3JhdG9yeSxMdGQuCi0JCQkJTmlzaGlvZ2ktS2l0YSA1LTE5LTExCi0JCQkJU3VnaW5hbWkta3UgVG9reW8gMTY3LTAwNDIKLQkJCQlKQVBBTgotCi0wMC0xMS04NSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMTE4NSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OSBTb3V0aAotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtODYgICAoaGV4KQkJUHJpbWUgU3lzdGVtcywgSW5jLgotMDAxMTg2ICAgICAoYmFzZSAxNikJCVByaW1lIFN5c3RlbXMsIEluYy4KLQkJCQkxNjI2Ny0zMzMKLQkJCQlTdXdhLWd1biBIYXJhLW11cmEgTmFnYW5vIDM5MS0wMTAwCi0JCQkJSkFQQU4KLQotMDAtMTEtODcgICAoaGV4KQkJQ2F0ZWdvcnkgU29sdXRpb25zLCBJbmMKLTAwMTE4NyAgICAgKGJhc2UgMTYpCQlDYXRlZ29yeSBTb2x1dGlvbnMsIEluYwotCQkJCTEwMjEgVy4gQWRhbXMgU3QKLQkJCQlDaGljYWdvIElMIDYwNjA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS04OCAgIChoZXgpCQlFbnRlcmFzeXMKLTAwMTE4OCAgICAgKGJhc2UgMTYpCQlFbnRlcmFzeXMKLQkJCQkzNSBJbmR1c3RyaWFsIFdheQotCQkJCVJvY2hlc3RlciBOSCAwMzg2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtODkgICAoaGV4KQkJQWVyb3RlY2ggSW5jCi0wMDExODkgICAgIChiYXNlIDE2KQkJQWVyb3RlY2ggSW5jCi0JCQkJMTAxIFpldGEgRHJpdmUKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS04QSAgIChoZXgpCQlWaWV3dHJhbiBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMTE4QSAgICAgKGJhc2UgMTYpCQlWaWV3dHJhbiBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQkzL0YsIFIyLUEgYnVpbGlkaW5nLCBIaWdoIFRlY2ggSW5kdXN0cmlhbCBQYXJrLAotCQkJCU5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTExLThCICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50LCBFbnRlcnByaXNlIEJ1c2luZXNzIEdyb3VwCi0wMDExOEIgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQsIEVudGVycHJpc2UgQnVzaW5lc3MgR3JvdXAKLQkJCQkyNjgwMSBXZXN0IEFnb3VyYSBSb2FkCi0JCQkJQ2FsYWJhc2FzIENBIDkxMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS04QyAgIChoZXgpCQlNaXNzb3VyaSBEZXBhcnRtZW50IG9mIFRyYW5zcG9ydGF0aW9uCi0wMDExOEMgICAgIChiYXNlIDE2KQkJTWlzc291cmkgRGVwYXJ0bWVudCBvZiBUcmFuc3BvcnRhdGlvbgotCQkJCVAuTy4gQm94IDI3MAotCQkJCUplZmZlcnNvbiBDaXR5IE1pc3NvdXJpIDY1MTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS04RCAgIChoZXgpCQlIYW5jaGFuZyBTeXN0ZW0gQ29ycC4KLTAwMTE4RCAgICAgKGJhc2UgMTYpCQlIYW5jaGFuZyBTeXN0ZW0gQ29ycC4KLQkJCQk3MTUtMTEgQm9ldW4tVG93biwgRS1kb25nLCBTYW5ncm9rLWd1LAotCQkJCUFuc2FuLXNoaSBLeXVuZ2tpLURvIDQyNS04NTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtOEUgICAoaGV4KQkJSGFseXRlY2ggTWFjZQotMDAxMThFICAgICAoYmFzZSAxNikJCUhhbHl0ZWNoIE1hY2UKLQkJCQlVbml0IDExLCAyMiBMZXhpbmd0b24gRHJpdmUKLQkJCQlOb3J3ZXN0IEJ1c2luZXNzIFBhcmsKLQkJCQlCYXVsa2hhbSBIaWxscyBOU1cgMjE1MwotCQkJCUFVU1RSQUxJQQotCi0wMC0xMS04RiAgIChoZXgpCQlFVVRFQ0ggSU5TVFJVTUVOVFMgUFRFLiBMVEQuCi0wMDExOEYgICAgIChiYXNlIDE2KQkJRVVURUNIIElOU1RSVU1FTlRTIFBURS4gTFRELgotCQkJCUJsayA1NSxBeWVyIFJhamFoIENyZXNjZW50LCAjMDQtMTYvMjQuCi0JCQkJMTM5OTQ5Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTExLTkwICAgKGhleCkJCURpZ2l0YWwgRGVzaWduIENvcnBvcmF0aW9uCi0wMDExOTAgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBEZXNpZ24gQ29ycG9yYXRpb24KLQkJCQkzODIwIFZlbnR1cmEgRHJpdmUKLQkJCQlBcmxpbmd0b24gSGVpZ2h0cyBJTCA2MDAwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtOTEgICAoaGV4KQkJQ1RTLUNsaW1hIFRlbXBlcmF0dXIgU3lzdGVtZSBHbWJICi0wMDExOTEgICAgIChiYXNlIDE2KQkJQ1RTLUNsaW1hIFRlbXBlcmF0dXIgU3lzdGVtZSBHbWJICi0JCQkJTG90emVu5GNrZXIgMjEKLQkJCQlIZWNoaW5nZW4gQmFkZW53/HJ0dGVtYmVyZyA3MjM3OQotCQkJCUdFUk1BTlkKLQotMDAtMTEtOTIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMTkyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtOTMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMTkzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1tLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtOTQgICAoaGV4KQkJQ2hpIE1laSBDb21tdW5pY2F0aW9uIFN5c3RlbXMsIEluYy4KLTAwMTE5NCAgICAgKGJhc2UgMTYpCQlDaGkgTWVpIENvbW11bmljYXRpb24gU3lzdGVtcywgSW5jLgotCQkJCTExRiwgTm8uMzksIENodW5nIEh1YSBSRC4gU2VjIDEKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtOTUgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDExOTUgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJMkYgTm8uIDIzMy0yLCBQYW8tQ2hpYW8gUm9hZAotCQkJCUhzaW4tVGllbgotCQkJCVRhaXBlaSBUYWl3YW4gCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS05NiAgIChoZXgpCQlBY3R1YWxpdHkgU3lzdGVtcywgSW5jLgotMDAxMTk2ICAgICAoYmFzZSAxNikJCUFjdHVhbGl0eSBTeXN0ZW1zLCBJbmMuCi0JCQkJMjUgQ29ycG9yYXRlIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJQnVybGluZ3RvbiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtOTcgICAoaGV4KQkJTW9uaXRvcmluZyBUZWNobm9sb2dpZXMgTGltaXRlZAotMDAxMTk3ICAgICAoYmFzZSAxNikJCU1vbml0b3JpbmcgVGVjaG5vbG9naWVzIExpbWl0ZWQKLQkJCQkxNCBBdHRlbmJ1cnlzIFBhcmsgRXN0YXRlCi0JCQkJQXR0ZW5idXJ5cyBMYW5lCi0JCQkJVGltcGVybGV5IENoZXNoaXJlIFdBMTQgNVFFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtOTggICAoaGV4KQkJUHJpc20gTWVkaWEgUHJvZHVjdHMgTGltaXRlZAotMDAxMTk4ICAgICAoYmFzZSAxNikJCVByaXNtIE1lZGlhIFByb2R1Y3RzIExpbWl0ZWQKLQkJCQlXaWxsaWFtIEphbWVzIEhvdXNlCi0JCQkJQ293bGV5IFJvYWQKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0I0IDBXWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLTk5ICAgKGhleCkJCTJ3Y29tIEdtYkgKLTAwMTE5OSAgICAgKGJhc2UgMTYpCQkyd2NvbSBHbWJICi0JCQkJU2NobGVzd2lnZXIgU3RyYXNzZSA4NQotCQkJCUZsZW5zYnVyZyAgMjQ5NDEKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLTlBICAgKGhleCkJCUFsa2VyaWEgc3JsCi0wMDExOUEgICAgIChiYXNlIDE2KQkJQWxrZXJpYSBzcmwKLQkJCQkyNSBWaWEgR2l1bnRpbmkKLQkJCQlOYXZhY2NoaW8gKFBJKSAgSS01NjAyMwotCQkJCUlUQUxZCi0KLTAwLTExLTlCICAgKGhleCkJCVRlbGVzeW5lcmd5IFJlc2VhcmNoIEluYy4KLTAwMTE5QiAgICAgKGJhc2UgMTYpCQlUZWxlc3luZXJneSBSZXNlYXJjaCBJbmMuCi0JCQkJNEYsIE5vLiA0OSwgVHVuZyBIc2luIFJkLiwKLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtOUMgICAoaGV4KQkJRVAmVCBFbmVyZ3kKLTAwMTE5QyAgICAgKGJhc2UgMTYpCQlFUCZUIEVuZXJneQotCQkJCTM1OCBFYXN0ZXJuIFZhbGxleSBXYXkKLQkJCQlDaGF0c3dvb2QKLQkJCQlTeWRuZXkgTlNXIDIwNjcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTEtOUQgICAoaGV4KQkJRGlnaW5mbyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDExOUQgICAgIChiYXNlIDE2KQkJRGlnaW5mbyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMTBGbC4sIE5vLjgyLCBGdSBIc2luZyBOb3J0aCBSb2FkCi0JCQkJVGFpcGVpICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTlFICAgKGhleCkJCVNvbGVjdHJvbiBCcmF6aWwKLTAwMTE5RSAgICAgKGJhc2UgMTYpCQlTb2xlY3Ryb24gQnJhemlsCi0JCQkJUm9kLiBDYW1waW5hcyBNb2dpIE1pcmltCi0JCQkJQmFpcnJvIFJvc2VpcmEKLQkJCQlKYWd1YXJpdW5hIFNQIDEzODIwLTAwMAotCQkJCUJSQVpJTAotCi0wMC0xMS05RiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxMTlGICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xMS1BMCAgIChoZXgpCQlWdGVjaCBFbmdpbmVlcmluZyBDYW5hZGEgTHRkCi0wMDExQTAgICAgIChiYXNlIDE2KQkJVnRlY2ggRW5naW5lZXJpbmcgQ2FuYWRhIEx0ZAotCQkJCTIwMC03NjcxIEFsZGVyYnJpZGdlIFdheQotCQkJCVJpY2htb25kIEJDIFY2WCAxWjkKLQkJCQlDQU5BREEKLQotMDAtMTEtQTEgICAoaGV4KQkJVklTSU9OIE5FVFdBUkUgQ08uLExURAotMDAxMUExICAgICAoYmFzZSAxNikJCVZJU0lPTiBORVRXQVJFIENPLixMVEQKLQkJCQlBY2UgVHdpbiBUb3dlciAoMiksICM3MDkKLQkJCQkyMTItMzAsIEd1cm8tRG9uZwotCQkJCVNlb3VsIEd1cm8tR3UgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS1BMiAgIChoZXgpCQlNYW51ZmFjdHVyaW5nIFRlY2hub2xvZ3kgSW5jCi0wMDExQTIgICAgIChiYXNlIDE2KQkJTWFudWZhY3R1cmluZyBUZWNobm9sb2d5IEluYwotCQkJCTcwIFJlYWR5IEF2ZSBOVwotCQkJCUZvcnQgV2FsdG9uIEJlYWNoIEZMIDMyNTQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1BMyAgIChoZXgpCQlMYW5SZWFkeSBUZWNobm9sb2dpZXMgSW5jLgotMDAxMUEzICAgICAoYmFzZSAxNikJCUxhblJlYWR5IFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNEYsIE5vLiAzMzcsIFNpbkh1IDJuZCBSb2FkLiwgTmVpSHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1BNCAgIChoZXgpCQlKU3RyZWFtIFRlY2hub2xvZ2llcyBJbmMuCi0wMDExQTQgICAgIChiYXNlIDE2KQkJSlN0cmVhbSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCUJsZGcuNTMsIFI0MDUsIDE5NSBTZWMuNCwgQ2h1bmcgSHNpbmcgUmQuCi0JCQkJQ2h1dHVuZywgIEhzaW5jaHUgMzEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1BNSAgIChoZXgpCQlGb3J0dW5hIEVsZWN0cm9uaWMgQ29ycC4KLTAwMTFBNSAgICAgKGJhc2UgMTYpCQlGb3J0dW5hIEVsZWN0cm9uaWMgQ29ycC4KLQkJCQkzRiwgTm8uOSwgU2VjLjEsIENoYW5nQW4gRWFzdCBSZC4sCi0JCQkJVGFpcGVpICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUE2ICAgKGhleCkJCVN5cGl4eCBOZXR3b3JrcwotMDAxMUE2ICAgICAoYmFzZSAxNikJCVN5cGl4eCBOZXR3b3JrcwotCQkJCTEwOCBCYW5rIFN0cmVldAotCQkJCVdhdGVyYnVyeSBDVCAwNjcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQTcgICAoaGV4KQkJSW5maWxjbyBEZWdyZW1vbnQgSW5jLgotMDAxMUE3ICAgICAoYmFzZSAxNikJCUluZmlsY28gRGVncmVtb250IEluYy4KLQkJCQk4MDA3IERpc2NvdmVyeSBEci4KLQkJCQlQTyBCb3ggNzEzOTAKLQkJCQlSaWNobW9uZCBWaXJnaW5pYSAyMzI1NS0xMzkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1BOCAgIChoZXgpCQlRdWVzdCBUZWNobm9sb2dpZXMKLTAwMTFBOCAgICAgKGJhc2UgMTYpCQlRdWVzdCBUZWNobm9sb2dpZXMKLQkJCQkxMDYwIENvcnBvcmF0ZSBDZW50ZXIgRHJpdmUKLQkJCQlPY29ub21vd29jIFdpc2NvbnNpbiA1MzA2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQTkgICAoaGV4KQkJTU9JTVNUT05FIENvLiwgTFRECi0wMDExQTkgICAgIChiYXNlIDE2KQkJTU9JTVNUT05FIENvLiwgTFRECi0JCQkJN3RoIEZsb29yIEpvb25nUHl1bmcgQnVpbGRpbmcgNjQtMQotCQkJCVdvb215dW4tRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy05MDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtQUEgICAoaGV4KQkJVW5pY2xhc3MgVGVjaG5vbG9neSwgQ28uLCBMVEQKLTAwMTFBQSAgICAgKGJhc2UgMTYpCQlVbmljbGFzcyBUZWNobm9sb2d5LCBDby4sIExURAotCQkJCTRGLCBOby4gOTgsIE1pbmcgY2h1YW4gUmQKLQkJCQlIc2ludGllbiBDaXR5IFRhaXBlaSBIc2llbiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUFCICAgKGhleCkJCVRSVVNUQUJMRSBURUNITk9MT0dZIENPLixMVEQuCi0wMDExQUIgICAgIChiYXNlIDE2KQkJVFJVU1RBQkxFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQkxMkZMLi0xLE5PLjE2NyxGdS1TaGluZyBOLlJkLixTdW5nLVNoYW4gYXJlYQotCQkJCVRhaXBlaSAgMTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1BQyAgIChoZXgpCQlTaW10ZWMgRWxlY3Ryb25pY3MKLTAwMTFBQyAgICAgKGJhc2UgMTYpCQlTaW10ZWMgRWxlY3Ryb25pY3MKLQkJCQlBdm9uZGFsZSBEcml2ZQotCQkJCVRhcmxldG9uIExhbmNhc2hpcmUgUFI0IDZBWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLUFEICAgKGhleCkJCVNoYW5naGFpIFJ1aWppZSBUZWNobm9sb2d5Ci0wMDExQUQgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgUnVpamllIFRlY2hub2xvZ3kKLQkJCQkyN0YsIDQyMCBKaWFuZ25pbmcgUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDA0MQotCQkJCUNISU5BCi0KLTAwLTExLUFFICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDExQUUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1BRiAgIChoZXgpCQlNZWRpYWxpbmstaSxJbmMKLTAwMTFBRiAgICAgKGJhc2UgMTYpCQlNZWRpYWxpbmstaSxJbmMKLQkJCQkxLTktMTAgSGFtYW1hdHN1LUNobwotCQkJCUJFTElFVkUgQSBIQU1BTUFUU1VDSE8KLQkJCQlNaW5hdG8tS3UgVG9reW8gMTA1LTAwMTMKLQkJCQlKQVBBTgotCi0wMC0xMS1CMCAgIChoZXgpCQlGb3J0ZWxpbmsgSW5jLgotMDAxMUIwICAgICAoYmFzZSAxNikJCUZvcnRlbGluayBJbmMuCi0JCQkJNDI1MDEgQWxicmFlIHN0cmVldCBzdWl0ZSAyMDIKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1CMSAgIChoZXgpCQlCbHVlRXhwZXJ0IFRlY2hub2xvZ3kgQ29ycC4KLTAwMTFCMSAgICAgKGJhc2UgMTYpCQlCbHVlRXhwZXJ0IFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk4RixOby4xNixMYW5lIDc3LFhpbmctQWkgUmQsTmVpLUh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQ5NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtQjIgICAoaGV4KQkJMjAwMSBUZWNobm9sb2d5IEluYy4KLTAwMTFCMiAgICAgKGJhc2UgMTYpCQkyMDAxIFRlY2hub2xvZ3kgSW5jLgotCQkJCTdGLTEwLCA3OSBIc2luIFRhaSA1dGguIFJkLiBTZWMuMQotCQkJCUhzaSBDaGloIFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1CMyAgIChoZXgpCQlZT1NISU1JWUEgQ08uLExURC4KLTAwMTFCMyAgICAgKGJhc2UgMTYpCQlZT1NISU1JWUEgQ08uLExURC4KLQkJCQkyLTMtMjQgQmFpbmFuCi0JCQkJTmlzaGluYXJpLWt1Ci0JCQkJT1NBS0EgT1NBS0EtUHJlZiA1NTctMDAzMwotCQkJCUpBUEFOCi0KLTAwLTExLUI0ICAgKGhleCkJCVdlc3Rlcm1vIFRlbGVpbmR1c3RyaSBBQgotMDAxMUI0ICAgICAoYmFzZSAxNikJCVdlc3Rlcm1vIFRlbGVpbmR1c3RyaSBBQgotCQkJCVN0b3JhIFN1bmRieQotCQkJCVNFLTY0MCA0MAotCQkJCVNXRURFTgotCi0wMC0xMS1CNSAgIChoZXgpCQlTaGVuemhlbiBQb3dlcmNvbSBDby4sTHRkCi0wMDExQjUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gUG93ZXJjb20gQ28uLEx0ZAotCQkJCUZsb29yIDE2LFRvd2VyIEIsWmhvbmd5aW4gQnVpbGRpbmcsTm9ydGggQ2FpdGlhbiBSb2FkLEZ1dGlhbiBEaXN0cmljdCxTaGVuemhlbixQLlIuQ2hpbmEKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgcHJvdmluY2UgNTE4MDI4Ci0JCQkJQ0hJTkEKLQotMDAtMTEtQjYgICAoaGV4KQkJT3BlbiBTeXN0ZW1zIEludGVybmF0aW9uYWwKLTAwMTFCNiAgICAgKGJhc2UgMTYpCQlPcGVuIFN5c3RlbXMgSW50ZXJuYXRpb25hbAotCQkJCTM2MDAgSG9sbHkgTGFuZSBOb3J0aAotCQkJCVN1aXRlIDQwCi0JCQkJTWlubmVhcG9saXMgTU4gNTU0NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUI3ICAgKGhleCkJCU9jdGFsaXggQi5WLgotMDAxMUI3ICAgICAoYmFzZSAxNikJCU9jdGFsaXggQi5WLgotCQkJCU1vbGVuc3RlaWpuIDYwCi0JCQkJRGUgTWVlcm4gIE5MLTM0NTQgUFQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMS1COCAgIChoZXgpCQlMaWViaGVyciAtIEVsZWt0cm9uaWsgR21iSAotMDAxMUI4ICAgICAoYmFzZSAxNikJCUxpZWJoZXJyIC0gRWxla3Ryb25payBHbWJICi0JCQkJUGV0ZXIgLSBEb3JuaWVyIC0gU3RyYXNzZSAxMQotCQkJCUxpbmRhdSAoQm9kZW5zZWUpIEJhdmFyaWEgODgxMzEKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLUI5ICAgKGhleCkJCUlubmVyIFJhbmdlIFB0eS4gTHRkLgotMDAxMUI5ICAgICAoYmFzZSAxNikJCUlubmVyIFJhbmdlIFB0eS4gTHRkLgotCQkJCTEgTWlsbGVuaXVtIENvdXJ0Ci0JCQkJS25veGZpZWxkIFZpY3RvcmlhIDMxODAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTEtQkEgICAoaGV4KQkJRWxleG9sIFB0eSBMdGQKLTAwMTFCQSAgICAgKGJhc2UgMTYpCQlFbGV4b2wgUHR5IEx0ZAotCQkJCUxldmVsIDIgLyAxNDYgQnVuZGFsbCBSb2FkCi0JCQkJQnVuZGFsbCBRdWVlbnNsYW5kIDQyMTcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTEtQkIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMUJCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQkMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMUJDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQkQgICAoaGV4KQkJQm9tYmFyZGllciBUcmFuc3BvcnRhdGlvbgotMDAxMUJEICAgICAoYmFzZSAxNikJCUJvbWJhcmRpZXIgVHJhbnNwb3J0YXRpb24KLQkJCQkxNTAxIExlYmFub24gQ2h1cmNoIFJvYWQKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1CRSAgIChoZXgpCQlBR1AgVGVsZWNvbSBDby4gTHRkCi0wMDExQkUgICAgIChiYXNlIDE2KQkJQUdQIFRlbGVjb20gQ28uIEx0ZAotCQkJCTlGLCAxMzQgQ2h1bmctSHNpYW8gRS4gUkQKLQkJCQlTZWMuIDQKLQkJCQlUYWlwZWkgIDEwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtQkYgICAoaGV4KQkJQUVTWVMgUy5wLkEuCi0wMDExQkYgICAgIChiYXNlIDE2KQkJQUVTWVMgUy5wLkEuCi0JCQkJVmlhIEFydGlnaWFuaSwgNDEKLQkJCQlCcnVzYXBvcnRvIEJlcmdhbW8gMjQwNjAKLQkJCQlJVEFMWQotCi0wMC0xMS1DMCAgIChoZXgpCQlBZGF5IFRlY2hub2xvZ3kgSW5jCi0wMDExQzAgICAgIChiYXNlIDE2KQkJQWRheSBUZWNobm9sb2d5IEluYwotCQkJCTlGLi0zLCBOby4gMjQ3LCBTZWMuIDEsIFRhaWNodW5nIFBvcnQgUmQuLAotCQkJCVRhaWNodW5nIENpdHkgVGFpdyA0MDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUMxICAgKGhleCkJCTRQIE1PQklMRSBEQVRBIFBST0NFU1NJTkcKLTAwMTFDMSAgICAgKGJhc2UgMTYpCQk0UCBNT0JJTEUgREFUQSBQUk9DRVNTSU5HCi0JCQkJVklBTEUgUkVHSU9ORSBWRU5FVE8gMjYKLQkJCQlQQURPVkEgUEQgMzUxMjcKLQkJCQlJVEFMWQotCi0wMC0xMS1DMiAgIChoZXgpCQlVbml0ZWQgRmliZXIgT3B0aWMgQ29tbXVuaWNhdGlvbgotMDAxMUMyICAgICAoYmFzZSAxNikJCVVuaXRlZCBGaWJlciBPcHRpYyBDb21tdW5pY2F0aW9uCi0JCQkJMTMtMSxOTy43MDAsSnVuZ2plbmcgUkQsSnVuZ2hlIENpdHkKLQkJCQlKdW5naGUgQ2l0eSBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1DMyAgIChoZXgpCQlUcmFuc2NlaXZpbmcgU3lzdGVtIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMTFDMyAgICAgKGJhc2UgMTYpCQlUcmFuc2NlaXZpbmcgU3lzdGVtIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQlOTy44NSxTZWMuMixHb25nZGFvd3UgUmQuLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtQzQgICAoaGV4KQkJVGVybWluYWxlcyBkZSBUZWxlY29tdW5pY2FjaW9uIFRlcnJlc3RyZSwgUy5MLgotMDAxMUM0ICAgICAoYmFzZSAxNikJCVRlcm1pbmFsZXMgZGUgVGVsZWNvbXVuaWNhY2lvbiBUZXJyZXN0cmUsIFMuTC4KLQkJCQlQb2xpZ29ubyBFdXJvcG9saXMsIENhbGxlIEMgMjYKLQkJCQlMYXMgUm96YXMgTWFkcmlkIDI4MjMwCi0JCQkJU1BBSU4KLQotMDAtMTEtQzUgICAoaGV4KQkJVEVOIFRlY2hub2xvZ3kKLTAwMTFDNSAgICAgKGJhc2UgMTYpCQlURU4gVGVjaG5vbG9neQotCQkJCTU1NSBFYXN0IE9jZWFuIEJsdmQuCi0JCQkJOXRoIEZsb29yCi0JCQkJTG9uZyBCZWFjaCBDQSA5MDgwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQzYgICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5IExMQwotMDAxMUM2ICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neSBMTEMKLQkJCQkxMjgwIERpc2MgRHJpdmUKLQkJCQlTaGFrb3BlZSBNTiA1NTM3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQzcgICAoaGV4KQkJUmF5bWFyaW5lIFVLIEx0ZAotMDAxMUM3ICAgICAoYmFzZSAxNikJCVJheW1hcmluZSBVSyBMdGQKLQkJCQlRdWF5IFBvaW50Ci0JCQkJTm9ydGhhcmJvdXIgUm9hZAotCQkJCVBvcnRzbW91dGggSGFtcHNoaXJlIFBPNiAzVEQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS1DOCAgIChoZXgpCQlQb3dlcmNvbSBDby4sIEx0ZC4KLTAwMTFDOCAgICAgKGJhc2UgMTYpCQlQb3dlcmNvbSBDby4sIEx0ZC4KLQkJCQk4RiwgTm8uIDI0NiwgTGllbiBDaGVuIFJkLgotCQkJCUNodW5nIEhvIFRhaXBlaSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUM5ICAgKGhleCkJCU1UVCBDb3Jwb3JhdGlvbgotMDAxMUM5ICAgICAoYmFzZSAxNikJCU1UVCBDb3Jwb3JhdGlvbgotCQkJCTItNy0xMgotCQkJCU11cm90YW5pCi0JCQkJTmlzaGkta3UgS29iZSA2NTEtMjI0MQotCQkJCUpBUEFOCi0KLTAwLTExLUNBICAgKGhleCkJCUxvbmcgUmFuZ2UgU3lzdGVtcywgSW5jLgotMDAxMUNBICAgICAoYmFzZSAxNikJCUxvbmcgUmFuZ2UgU3lzdGVtcywgSW5jLgotCQkJCTQ1NTAgRXhjZWwgUGFya3dheQotCQkJCVN1aXRlIDIwMAotCQkJCUFkZGlzb24gVGV4YXMgNzUwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUNCICAgKGhleCkJCUphY29ic29ucyBBQgotMDAxMUNCICAgICAoYmFzZSAxNikJCUphY29ic29ucyBBQgotCQkJCU5lZHJhbGlkIHMgMzIKLQkJCQlNb3RhbGEgIDU5MSA5NwotCQkJCVNXRURFTgotCi0wMC0xMS1DQyAgIChoZXgpCQlHdWFuZ3pob3UgSmlucGVuZyBHcm91cCBDby4sTHRkLgotMDAxMUNDICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBKaW5wZW5nIEdyb3VwIENvLixMdGQuCi0JCQkJTm8uOSBTaGVuemhvdSBSb2FkLEd1YW5nemhvdSBTY2llbmNlIENpdHkKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTAwLTExLUNEICAgKGhleCkJCUF4c3VuIFRlY2hub2xvZ2llcwotMDAxMUNEICAgICAoYmFzZSAxNikJCUF4c3VuIFRlY2hub2xvZ2llcwotCQkJCTEgRm9ydHVuZSBEcml2ZQotCQkJCUJpbGxlcmljYSBNQSAwMjQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQ0UgICAoaGV4KQkJVWJpc2Vuc2UgTGltaXRlZAotMDAxMUNFICAgICAoYmFzZSAxNikJCVViaXNlbnNlIExpbWl0ZWQKLQkJCQlTdC4gQW5kcmV3cyBIb3VzZQotCQkJCVN0LiBBbmRyZXdzIFJvYWQKLQkJCQlDaGVzdGVydG9uIENhbWJyaWRnZSBDQjQgMURMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtQ0YgICAoaGV4KQkJVGhyYW5lICYgVGhyYW5lIEEvUwotMDAxMUNGICAgICAoYmFzZSAxNikJCVRocmFuZSAmIFRocmFuZSBBL1MKLQkJCQlMdW5kdG9mdGVnYWFyZHN2ZWogOTNECi0JCQkJTHluZ2J5IEv4YmVuaGF2biAyODAwCi0JCQkJREVOTUFSSwotCi0wMC0xMS1EMCAgIChoZXgpCQlUYW5kYmVyZyBEYXRhIEFTQQotMDAxMUQwICAgICAoYmFzZSAxNikJCVRhbmRiZXJnIERhdGEgQVNBCi0JCQkJS2plbHPlc3ZlaWVuIDE2MQotCQkJCU9zbG8gIDA0MTEKLQkJCQlOT1JXQVkKLQotMDAtMTEtRDEgICAoaGV4KQkJU29mdCBJbWFnaW5nIFN5c3RlbSBHbWJICi0wMDExRDEgICAgIChiYXNlIDE2KQkJU29mdCBJbWFnaW5nIFN5c3RlbSBHbWJICi0JCQkJSm9oYW5uLUtyYW5lLVdlZyAzOQotCQkJCU11ZW5zdGVyICA0ODE0OQotCQkJCUdFUk1BTlkKLQotMDAtMTEtRDIgICAoaGV4KQkJUGVyY2VwdGlvbiBEaWdpdGFsIEx0ZAotMDAxMUQyICAgICAoYmFzZSAxNikJCVBlcmNlcHRpb24gRGlnaXRhbCBMdGQKLQkJCQlGbGF0IEEsIDgvRiwgU2hhdyBIb3VzZQotCQkJCVJNIEEKLQkJCQlDbGVhciBXYXRlciBCYXkgTlQgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTExLUQzICAgKGhleCkJCU5leHRHZW5UZWwgSG9sZGluZyBBU0EKLTAwMTFEMyAgICAgKGJhc2UgMTYpCQlOZXh0R2VuVGVsIEhvbGRpbmcgQVNBCi0JCQkJU2FuZHNsaW1hcmthIDMxCi0JCQkJU2FuZHNsaQotCQkJCUJlcmdlbiBIb3JkYWxhbmQgNTg2MQotCQkJCU5PUldBWQotCi0wMC0xMS1ENCAgIChoZXgpCQlOZXRFbnJpY2gsIEluYwotMDAxMUQ0ICAgICAoYmFzZSAxNikJCU5ldEVucmljaCwgSW5jCi0JCQkJODkwIEhpbGx2aWV3IEN0LgotCQkJCVN1aXRlIDE1MAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1ENSAgIChoZXgpCQlIYW5nemhvdSBTdW55YXJkIFN5c3RlbSBFbmdpbmVlcmluZyBDby4sTHRkLgotMDAxMUQ1ICAgICAoYmFzZSAxNikJCUhhbmd6aG91IFN1bnlhcmQgU3lzdGVtIEVuZ2luZWVyaW5nIENvLixMdGQuCi0JCQkJU3VueWFyZCBTY2llbmNlICYgVGVjaG5vbG9neSBCdWlsZGluZyBIaS1UZWNoIFNvZnR3YXJlIFBhcmsoU2Vjb25kIExhbmQgQ29uc29saWRhdGlvbikKLQkJCQlIYW5nemhvdSBIaS1UZWNoIEluZHVzdHJpYWwgRGV2ZWxvcG1lbnQgWm9uZShCaW5qaWFuZyBEaXN0cmljdCkKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwNTMKLQkJCQlDSElOQQotCi0wMC0xMS1ENiAgIChoZXgpCQlIYW5kRXJhLCBJbmMuCi0wMDExRDYgICAgIChiYXNlIDE2KQkJSGFuZEVyYSwgSW5jLgotCQkJCTI4NTkgMTA0dGggU3QuCi0JCQkJRGVzIE1vaW5lcyBJQSA1MDMyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRDcgICAoaGV4KQkJZVdlcmtzIEluYwotMDAxMUQ3ICAgICAoYmFzZSAxNikJCWVXZXJrcyBJbmMKLQkJCQkzNTEwIE1haW53YXkKLQkJCQlCdXJsaW5ndG9uIE9udGFyaW8gTDdNMUE4Ci0JCQkJQ0FOQURBCi0KLTAwLTExLUQ4ICAgKGhleCkJCUFTVVNUZWsgQ29tcHV0ZXIgSW5jLgotMDAxMUQ4ICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ29tcHV0ZXIgSW5jLgotCQkJCU5vLiAxNSwgTGktVGUgUmQuLCBQZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtRDkgICAoaGV4KQkJVGlWbwotMDAxMUQ5ICAgICAoYmFzZSAxNikJCVRpVm8KLQkJCQkyMTYwIEdvbGQgQXZlCi0JCQkJQWx2aXNvIENBIDk1MDAyLTIxNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLURBICAgKGhleCkJCVZpdmFhcyBUZWNobm9sb2d5IEluYy4KLTAwMTFEQSAgICAgKGJhc2UgMTYpCQlWaXZhYXMgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTVGLCBOby4gMTAsIFNlYyAxLCBQZWktSHNpbiBSZC4sCi0JCQkJSHNpbi1UaWVuIGNpdHkgVGFpcGVpIEhzaWVuLCAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLURCICAgKGhleCkJCUxhbmQtQ2VsbHVsYXIgQ29ycG9yYXRpb24KLTAwMTFEQiAgICAgKGJhc2UgMTYpCQlMYW5kLUNlbGx1bGFyIENvcnBvcmF0aW9uCi0JCQkJMTIwNTQgTWlyYW1hciBQYXJrd2F5Ci0JCQkJTWlyYW1hciBGTCAzMzAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtREMgICAoaGV4KQkJR2x1bnogJiBKZW5zZW4KLTAwMTFEQyAgICAgKGJhc2UgMTYpCQlHbHVueiAmIEplbnNlbgotCQkJCUhhc2xldnZlaiAxMwotCQkJCVJpbmdzdGVkICA0MTAwCi0JCQkJREVOTUFSSwotCi0wMC0xMS1ERCAgIChoZXgpCQlGUk9NVVMgVEVDLiBDby4sIEx0ZC4KLTAwMTFERCAgICAgKGJhc2UgMTYpCQlGUk9NVVMgVEVDLiBDby4sIEx0ZC4KLQkJCQkyRiA4OTYtOCBIb2d5ZTItZG9uZyBEb25nYW4tR3UKLQkJCQlBbnlhbmctQ2l0eSwgR3llb25nZ2ktZG8sCi0JCQkJNDMxLTgzNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS1ERSAgIChoZXgpCQlFVVJJTE9HSUMKLTAwMTFERSAgICAgKGJhc2UgMTYpCQlFVVJJTE9HSUMKLQkJCQlDZW50cmFsZSBQYXJjIELidCA3Ci0JCQkJQXZlbnVlIHN1bGx5IHBydWQnaG9tbWUKLQkJCQlDaGF0ZW5heSBNYWxhYnJ5ICA5MjI5OAotCQkJCUZSQU5DRQotCi0wMC0xMS1ERiAgIChoZXgpCQlDdXJyZW50IEVuZXJneQotMDAxMURGICAgICAoYmFzZSAxNikJCUN1cnJlbnQgRW5lcmd5Ci0JCQkJNTQ0MCBIYXJ2ZXN0IEhpbGwsIFN0ZSAxMDAKLQkJCQlEYWxsYXMgVFggNzUyMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUUwICAgKGhleCkJCVUtTUVESUEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMTFFMCAgICAgKGJhc2UgMTYpCQlVLU1FRElBIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJIDlGLCBOby4xIEppbi1TaGFuIFN0LgotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtRTEgICAoaGV4KQkJQXJjZWxpayBBLlMKLTAwMTFFMSAgICAgKGJhc2UgMTYpCQlBcmNlbGlrIEEuUwotCQkJCUN1bWh1cml5ZXQgTWFoLiwgRTUgWWFuIFlvbCwgTm86MSwKLQkJCQlCZXlsaWtkdXp1Ci0JCQkJSXN0YW5idWwgIDM0NTIwIAotCQkJCVRVUktFWQotCi0wMC0xMS1FMiAgIChoZXgpCQlIdWEgSnVuZyBDb21wb25lbnRzIENvLiwgTHRkLgotMDAxMUUyICAgICAoYmFzZSAxNikJCUh1YSBKdW5nIENvbXBvbmVudHMgQ28uLCBMdGQuCi0JCQkJNUYsIE5vLjEzLCBMYW5lIDEyMCwgU2VjLjEsIE5laSBIdSBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUUzICAgKGhleCkJCVRob21zb24sIEluYy4KLTAwMTFFMyAgICAgKGJhc2UgMTYpCQlUaG9tc29uLCBJbmMuCi0JCQkJMTAxIFdlc3QgMTAzcmQgU3RyZWV0Ci0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1FNCAgIChoZXgpCQlEYW5lbGVjIEVsZWN0cm9uaWNzIEEvUwotMDAxMUU0ICAgICAoYmFzZSAxNikJCURhbmVsZWMgRWxlY3Ryb25pY3MgQS9TCi0JCQkJQmxva2tlbiA0NAotCQkJCUJpcmtlcm9lZCBDb3BlbmhhZ2VuIDM0NjAKLQkJCQlERU5NQVJLCi0KLTAwLTExLUU1ICAgKGhleCkJCUtDb2RlcyBDb3Jwb3JhdGlvbgotMDAxMUU1ICAgICAoYmFzZSAxNikJCUtDb2RlcyBDb3Jwb3JhdGlvbgotCQkJCUZsb29yIDIsIE51bWJlciA1MDEsIFNlY3Rpb24gMgotCQkJCVRpZGluZyBCb3VsZXZhcmQKLQkJCQlOZWlodSBEaXN0cmljdCBUYWlwZWkgQ2l0eSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUU2ICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YQotMDAxMUU2ICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgQXRsYW50YQotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlNYWlsIFN0b3AgNS4yLjQyOAotCQkJCUxhd3JlbmNldmlsbGUgR2EgMzAwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUU3ICAgKGhleCkJCVdPUkxEU0FUIC0gVGV4YXMgZGUgRnJhbmNlCi0wMDExRTcgICAgIChiYXNlIDE2KQkJV09STERTQVQgLSBUZXhhcyBkZSBGcmFuY2UKLQkJCQkyMjAsIHJ1ZSBHdXN0YXZlIEVpZmZlbAotCQkJCWNlZGV4IDMKLQkJCQlBaXggZW4gUHJvdmVuY2UgQm91Y2hlcyBkdSBSaG9uZSAxMzg1NAotCQkJCUZSQU5DRQotCi0wMC0xMS1FOCAgIChoZXgpCQlUaXhpLkNvbQotMDAxMUU4ICAgICAoYmFzZSAxNikJCVRpeGkuQ29tCi0JCQkJS2FybWVsaXRlcndlZyAxMTQKLQkJCQlCZXJsaW4gIDEzNDY1Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS1FOSAgIChoZXgpCQlTVEFSTkVYIENPLiwgTFRELgotMDAxMUU5ICAgICAoYmFzZSAxNikJCVNUQVJORVggQ08uLCBMVEQuCi0JCQkJNHRoIEZsb29yLCBDJkMgQmxkZywgMjI4LTIKLQkJCQlHdXVpLWRvbmcKLQkJCQlLd2FuZ2ppbi1ndSBTZW91bCAxNDMtMjAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLUVBICAgKGhleCkJCUlXSUNTIEluYy4KLTAwMTFFQSAgICAgKGJhc2UgMTYpCQlJV0lDUyBJbmMuCi0JCQkJMTkxMjUgTm9ydGggQ3JlZWsgUGFya3dheQotCQkJCVN1aXRlIDEyMAotCQkJCUJvdGhlbGwgV0EgOTgwMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUVCICAgKGhleCkJCUlubm92YXRpdmUgSW50ZWdyYXRpb24KLTAwMTFFQiAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aXZlIEludGVncmF0aW9uCi0JCQkJMjM5MEEgV2FyZCBBdmVudWUKLQkJCQlTaW1pIFZhbGxleSBDQSA5MzA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRUMgICAoaGV4KQkJQVZJWCBJTkMuCi0wMDExRUMgICAgIChiYXNlIDE2KQkJQVZJWCBJTkMuCi0JCQkJMS0xLCBGdWt1dXJhLCBLYW5hemF3YS1rdQotCQkJCVlva29oYW1hLXNoaSBLYW5hZ2F3YSAyMzYtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTExLUVEICAgKGhleCkJCTgwMiBHbG9iYWwKLTAwMTFFRCAgICAgKGJhc2UgMTYpCQk4MDIgR2xvYmFsCi0JCQkJU3R1ZGlvIDExLEludGVjIDIsV2FkZSBSb2FkCi0JCQkJQmFzaW5nc3Rva2UsCi0JCQkJSGFtcHNoaXJlICBSRzI0IEJORQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLUVFICAgKGhleCkJCUVzdGFyaSwgSW5jLgotMDAxMUVFICAgICAoYmFzZSAxNikJCUVzdGFyaSwgSW5jLgotCQkJCTE4MDAgUGF4dG9uIFN0Ci0JCQkJSGFycmlzYnVyZyBQQSAxNzEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRUYgICAoaGV4KQkJQ29uaXRlYyBEYXRlbnN5c3RlbWUgR21iSAotMDAxMUVGICAgICAoYmFzZSAxNikJCUNvbml0ZWMgRGF0ZW5zeXN0ZW1lIEdtYkgKLQkJCQlEaWVzZWxzdHIuIDExYwotCQkJCURpZWJ1cmcgSGVzc2VuIDY0ODA3Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS1GMCAgIChoZXgpCQlXaWRlZnVsIExpbWl0ZWQKLTAwMTFGMCAgICAgKGJhc2UgMTYpCQlXaWRlZnVsIExpbWl0ZWQKLQkJCQkzQiwgU3BlZWR5IEluZC4gQmxkZy4sIDExNCBIb3cgTWluZyBTdHJlZXQKLQkJCQlLd3VuIFRvbmcKLQkJCQlIb25nIEtvbmcgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTExLUYxICAgKGhleCkJCVFpbmV0aVEgTHRkCi0wMDExRjEgICAgIChiYXNlIDE2KQkJUWluZXRpUSBMdGQKLQkJCQlSb29tIEU2MDEKLQkJCQlTdC4gQW5kcmV3J3MgUm9hZAotCQkJCU1hbHZlcm4gV29yY2VzdGVyc2hpcmUgV1IxNCAzUFMKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS1GMiAgIChoZXgpCQlJbnN0aXR1dGUgb2YgTmV0d29yayBUZWNobm9sb2dpZXMKLTAwMTFGMiAgICAgKGJhc2UgMTYpCQlJbnN0aXR1dGUgb2YgTmV0d29yayBUZWNobm9sb2dpZXMKLQkJCQkxNy10aCBMaW5lIFZhc2lsZXZza3kgT3N0cm92LCA1NC0xCi0JCQkJU3QuUGV0ZXJzYnVyZyAgMTk5MTc4Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTExLUYzICAgKGhleCkJCU5lb01lZGlhIEV1cm9wZSBBRwotMDAxMUYzICAgICAoYmFzZSAxNikJCU5lb01lZGlhIEV1cm9wZSBBRwotCQkJCUplbnMtT3R0by1LcmFnLVN0ci4gMTEKLQkJCQlX/HJzZWxlbiBOb3JkcmhlaW4tV2VzdGZhbGVuIDUyMTQ2Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS1GNCAgIChoZXgpCQl3b29yaS1uZXQKLTAwMTFGNCAgICAgKGJhc2UgMTYpCQl3b29yaS1uZXQKLQkJCQkjNTA4LCBIYW5rb29rIE1vb2x5dSwgODUzLTEgRG9uZ2NodW4tRG9uZwotCQkJCVlvbmdpbi1TaSBLeXVuZ2tpLURvIDQ0OS04NDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtRjUgICAoaGV4KQkJQVNLRVkgQ09NUFVURVIgQ09SUC4KLTAwMTFGNSAgICAgKGJhc2UgMTYpCQlBU0tFWSBDT01QVVRFUiBDT1JQLgotCQkJCTEwRiwgTk8uMTE5LCBDSElFTktBTkcgIFJELiwKLQkJCQlDSFVORy1ITywgVEFJUEVJICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUY2ICAgKGhleCkJCUFzaWEgUGFjaWZpYyBNaWNyb3N5c3RlbXMgLCBJbmMuCi0wMDExRjYgICAgIChiYXNlIDE2KQkJQXNpYSBQYWNpZmljIE1pY3Jvc3lzdGVtcyAsIEluYy4KLQkJCQlOby4yLFImRCBSb2FkIDYgLFNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtRjcgICAoaGV4KQkJU2hlbnpoZW4gRm9yd2FyZCBJbmR1c3RyeSBDby4sIEx0ZAotMDAxMUY3ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEZvcndhcmQgSW5kdXN0cnkgQ28uLCBMdGQKLQkJCQk0YjEgRjUuOCwgVGlhbiBBbiBDeWJlciBQYXJrLCBDaGVuZ29uZ21pYW8sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTExLUY4ICAgKGhleCkJCUFJUkFZQSBDb3JwCi0wMDExRjggICAgIChiYXNlIDE2KQkJQUlSQVlBIENvcnAKLQkJCQk2MzcgQWRhaXIgQ291cnQKLQkJCQlNb3JnYW4gSGlsbCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRjkgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDExRjkgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTEtRkEgICAoaGV4KQkJUmFuZSBDb3Jwb3JhdGlvbgotMDAxMUZBICAgICAoYmFzZSAxNikJCVJhbmUgQ29ycG9yYXRpb24KLQkJCQkxMDgwMiA0N3RoIEF2ZW51ZSBXZXN0Ci0JCQkJTXVraWx0ZW8gV0EgOTgyNzUtNTA5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRkIgICAoaGV4KQkJSGVpZGVsYmVyZyBFbmdpbmVlcmluZyBHbWJICi0wMDExRkIgICAgIChiYXNlIDE2KQkJSGVpZGVsYmVyZyBFbmdpbmVlcmluZyBHbWJICi0JCQkJVGllcmdhcnRlbnN0ci4gMTUKLQkJCQlIZWlkZWxiZXJnIEJhZGVuLVd1ZXJ0dGVtYmVyZyA2OTEyMQotCQkJCUdFUk1BTlkKLQotMDAtMTEtRkMgICAoaGV4KQkJSEFSVElORyBFbGVjdHJpYyBHbWJoICYgQ28uS0cKLTAwMTFGQyAgICAgKGJhc2UgMTYpCQlIQVJUSU5HIEVsZWN0cmljIEdtYmggJiBDby5LRwotCQkJCVdpbGhlbG0gSGFydGluZyBTdHIuIDEKLQkJCQlFc3BlbGthbXAgTm9yZHJoZWluIFdlc3RmYWxlbiBELTMyMzM5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS1GRCAgIChoZXgpCQlLT1JHIElOQy4KLTAwMTFGRCAgICAgKGJhc2UgMTYpCQlLT1JHIElOQy4KLQkJCQk0MDE1LTIsIFlhbm9rdWNoaQotCQkJCUluYWdpLUNpdHkgVE9LWU8gMjA2LTA4MTIKLQkJCQlKQVBBTgotCi0wMC0xMS1GRSAgIChoZXgpCQlLZWl5byBTeXN0ZW0gUmVzZWFyY2gsIEluYy4KLTAwMTFGRSAgICAgKGJhc2UgMTYpCQlLZWl5byBTeXN0ZW0gUmVzZWFyY2gsIEluYy4KLQkJCQlIYW1hZGEgcGFyayBCbGRnLiA2RgotCQkJCTE3LTMgU2hpbm1hY2hpIENodW91LWt1Ci0JCQkJQ2hpYmEtY2l0eSBDaGliYS1wcmVmIDI2MC0wMDI4Ci0JCQkJSkFQQU4KLQotMDAtMTEtRkYgICAoaGV4KQkJRGlnaXRybyBUZWNub2xvZ2lhIEx0ZGEKLTAwMTFGRiAgICAgKGJhc2UgMTYpCQlEaWdpdHJvIFRlY25vbG9naWEgTHRkYQotCQkJCVJ1YTogUHJvZmVzc29yYSBTb2ZpYSBRdWludCBkZSBTb3V6YSwgMTY3Ci0JCQkJQmFpcnJvOiBDYXBvZWlyYXMKLQkJCQlGbG9yaWFu83BvbGlzIFNhbnRhIENhdGFyaW5hIDg4MDg1LTA0MAotCQkJCUJSQVpJTAotCi0wMC0xMi0wMCAgIChoZXgpCQlDaXNjbwotMDAxMjAwICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTAxICAgKGhleCkJCUNpc2NvCi0wMDEyMDEgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMDIgICAoaGV4KQkJRGVjcmFuZSBBZXJvc3BhY2UgLSBBdWRpbyBJbnRlcm5hdGlvbmFsIEluYy4KLTAwMTIwMiAgICAgKGJhc2UgMTYpCQlEZWNyYW5lIEFlcm9zcGFjZSAtIEF1ZGlvIEludGVybmF0aW9uYWwgSW5jLgotCQkJCTczMDAgSW5kdXN0cnkgRHJpdmUKLQkJCQlOb3J0aCBMaXR0bGUgUm9jayBBUiA3MjExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMDMgICAoaGV4KQkJQWN0aXYgTmV0d29ya3MKLTAwMTIwMyAgICAgKGJhc2UgMTYpCQlBY3RpdiBOZXR3b3JrcwotCQkJCUJBVCBMIC0gMSBydWUgZGUgVGVycmUgTmV1dmUKLQkJCQlCUDEyNwotCQkJCUNPVVJUQUJPRVVGIE4vQSA5MTk0NAotCQkJCUZSQU5DRQotCi0wMC0xMi0wNCAgIChoZXgpCQl1MTAgTmV0d29ya3MsIEluYy4KLTAwMTIwNCAgICAgKGJhc2UgMTYpCQl1MTAgTmV0d29ya3MsIEluYy4KLQkJCQkyLTItMTQgS2FraW5va2l6YWthCi0JCQkJTWVndXJvIFRva3lvIDE1Mi0wMDIyCi0JCQkJSkFQQU4KLQotMDAtMTItMDUgICAoaGV4KQkJVGVycmFzYXQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMTIwNSAgICAgKGJhc2UgMTYpCQlUZXJyYXNhdCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTIzNSBWaW5leWFyZCBDb3VydCwgc3VpdGUgMTAwCi0JCQkJTW9yZ2FuIEhpbGwgQ2FsaWZvcm5pYSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMDYgICAoaGV4KQkJaVF1ZXN0IChOWikgTHRkCi0wMDEyMDYgICAgIChiYXNlIDE2KQkJaVF1ZXN0IChOWikgTHRkCi0JCQkJUC5PLkJveCAxNTE2OQotCQkJCURpbnNkYWxlCi0JCQkJSGFtaWx0b24gV2Fpa2F0byAyMDMxCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMTItMDcgICAoaGV4KQkJSGVhZCBTdHJvbmcgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0wMDEyMDcgICAgIChiYXNlIDE2KQkJSGVhZCBTdHJvbmcgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0JCQkJVW5pdCA5LCAyMC9GLCBNZXRyb3BvbGUgU3F1YXJlLAotCQkJCTIgT24gWWl1IFN0cmVldCwgU2hhdGluCi0JCQkJR3Vhbmdkb25nIAotCQkJCUhPTkcgS09ORwotCi0wMC0xMi0wOCAgIChoZXgpCQlHYW50bmVyIEluc3RydW1lbnRzIEdtYkgKLTAwMTIwOCAgICAgKGJhc2UgMTYpCQlHYW50bmVyIEluc3RydW1lbnRzIEdtYkgKLQkJCQlNb250YWZvbmVyc3RyYXNzZSA4Ci0JCQkJU2NocnVucyBWb3JhcmxiZXJnIDY3ODAKLQkJCQlBVVNUUklBCi0KLTAwLTEyLTA5ICAgKGhleCkJCUZhc3RyYXggTHRkCi0wMDEyMDkgICAgIChiYXNlIDE2KQkJRmFzdHJheCBMdGQKLQkJCQlWYWxpbW90aWUgNwotCQkJCVZhbnRhYSBGSSAwMTUxMAotCQkJCUZJTkxBTkQKLQotMDAtMTItMEEgICAoaGV4KQkJRW1lcnNvbiBFbGVjdHJpYyBHbWJIICYgQ28uIE9IRwotMDAxMjBBICAgICAoYmFzZSAxNikJCUVtZXJzb24gRWxlY3RyaWMgR21iSCAmIENvLiBPSEcKLQkJCQlIZWVyc3RyYXNzZSAxMTEKLQkJCQlXYWlibGluZ2VuIEJXIDcxMzMyCi0JCQkJR0VSTUFOWQotCi0wMC0xMi0wQiAgIChoZXgpCQlDaGluYXN5cyBUZWNobm9sb2dpZXMgTGltaXRlZAotMDAxMjBCICAgICAoYmFzZSAxNikJCUNoaW5hc3lzIFRlY2hub2xvZ2llcyBMaW1pdGVkCi0JCQkJMTAvRixDQUdXIEJ1aWxkaW5nLE5vLjMwIEhhaWRpYW4gU291dGggUm9hZAotCQkJCUJlaWppbmcgIDEwMDA4MAotCQkJCUNISU5BCi0KLTAwLTEyLTBDICAgKGhleCkJCUNFLUluZm9zeXMgUHRlIEx0ZAotMDAxMjBDICAgICAoYmFzZSAxNikJCUNFLUluZm9zeXMgUHRlIEx0ZAotCQkJCTM5MCBIYXZlbG9jayBSb2FkCi0JCQkJIzA4LTAyIEtpbmcncyBDZW50cmUKLQkJCQkxNjk2NjIKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTItMEQgICAoaGV4KQkJQWR2YW5jZWQgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDEyMEQgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTAzOTAgV2lsc2hpcmUgQm91bGV2YXJkCi0JCQkJU3VpdGUgMTgwMwotCQkJCUxvcyBBbmdlbGVzIENhbGlmb3JuaWEgOTAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTBFICAgKGhleCkJCUFib0NvbQotMDAxMjBFICAgICAoYmFzZSAxNikJCUFib0NvbQotCQkJCTFGICwgTm8uIDIxLCBZYW5mYSAybmQgUmQuLCBTQklQCi0JCQkJSHNpbmNodSBDaXR5ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLTBGICAgKGhleCkJCUlFRUUgODAyLjMKLTAwMTIwRiAgICAgKGJhc2UgMTYpCQlJRUVFIDgwMi4zCi0JCQkJCi0JCQkJMTU1OTkgSGFycm93IExhbmUKLQkJCQlQb3dheSBDQSA5MjA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMTAgICAoaGV4KQkJV2lkZVJheSBDb3JwCi0wMDEyMTAgICAgIChiYXNlIDE2KQkJV2lkZVJheSBDb3JwCi0JCQkJMjUgS2Vhcm55IFN0cmVldAotCQkJCTZ0aCBGbG9vcgotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTExICAgKGhleCkJCVByb3RlY2huYSBIZXJic3QgR21iSCAmIENvLiBLRwotMDAxMjExICAgICAoYmFzZSAxNikJCVByb3RlY2huYSBIZXJic3QgR21iSCAmIENvLiBLRwotCQkJCU90dG8gSGFobiBTdHIuIDI2Ci0JCQkJT3R0b2JydW5uIEdlcm1hbnkvQmF2YXJpYSA4NTUyMQotCQkJCUdFUk1BTlkKLQotMDAtMTItMTIgICAoaGV4KQkJUExVUyAgQ29ycG9yYXRpb24KLTAwMTIxMiAgICAgKGJhc2UgMTYpCQlQTFVTICBDb3Jwb3JhdGlvbgotCQkJCTEwMzMtMSwgT3NoaXRhdGUsIEluYWdpLXNoaSwKLQkJCQlUb2t5byBTYWl0YW1hIDIwNi0wODExCi0JCQkJSkFQQU4KLQotMDAtMTItMTMgICAoaGV4KQkJTWV0cm9obSBBRwotMDAxMjEzICAgICAoYmFzZSAxNikJCU1ldHJvaG0gQUcKLQkJCQlPYmVyZG9yZnN0cmFzc2UgNjgKLQkJCQlIZXJpc2F1IEFSIDkxMDEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xMi0xNCAgIChoZXgpCQlLb2VuaWcgJiBCYXVlciBBRwotMDAxMjE0ICAgICAoYmFzZSAxNikJCUtvZW5pZyAmIEJhdWVyIEFHCi0JCQkJRnJpZWRyaWNoLUtvZW5pZy1TdHIuIDQKLQkJCQlXdWVyemJ1cmcgQmF2YXJpYSA5NzA4MAotCQkJCUdFUk1BTlkKLQotMDAtMTItMTUgICAoaGV4KQkJaVN0b3IgTmV0d29ya3MsIEluYy4KLTAwMTIxNSAgICAgKGJhc2UgMTYpCQlpU3RvciBOZXR3b3JrcywgSW5jLgotCQkJCTc1ODUgSXJ2aW5lIENlbnRlciBEcml2ZQotCQkJCVN1aXRlIDI1MAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMTYgICAoaGV4KQkJSUNQIEludGVybmV0IENvbW11bmljYXRpb24gUGF5bWVudCBBRwotMDAxMjE2ICAgICAoYmFzZSAxNikJCUlDUCBJbnRlcm5ldCBDb21tdW5pY2F0aW9uIFBheW1lbnQgQUcKLQkJCQlXaWxoZWxtLVN0ZWluLVdlZyAyNAotCQkJCUhhbWJ1cmcgIEQtMjIzMzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTE3ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAxMjE3ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHIuCi0JCQkJSXJ2aW5lIENBIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0xOCAgIChoZXgpCQlBUlVaRSBDb3Jwb3JhdGlvbgotMDAxMjE4ICAgICAoYmFzZSAxNikJCUFSVVpFIENvcnBvcmF0aW9uCi0JCQkJQXJpYWtlIEZyb250aWVyIEJ1aWxkaW5nIEEKLQkJCQkzLTEtMjUgQXJpYWtlCi0JCQkJS29odG9oLWt1IFRva3lvIDEzNS0wMDYzCi0JCQkJSkFQQU4KLQotMDAtMTItMTkgICAoaGV4KQkJQWhlYWQgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEluYwotMDAxMjE5ICAgICAoYmFzZSAxNikJCUFoZWFkIENvbW11bmljYXRpb24gU3lzdGVtcyBJbmMKLQkJCQkxOTkgUGFyayBSb2FkIEV4dAotCQkJCVBPIEJveCA5MjkKLQkJCQlNaWRkbGVidXJ5IENUIDA2NzYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0xQSAgIChoZXgpCQlUZWNobm8gU29mdCBTeXN0ZW1uaWNzIEluYy4KLTAwMTIxQSAgICAgKGJhc2UgMTYpCQlUZWNobm8gU29mdCBTeXN0ZW1uaWNzIEluYy4KLQkJCQkyLTUtMTcsIEViaXN1LW5pc2hpLCBOYW5pd2Eta3UsCi0JCQkJT3Nha2EgIDU1Ni0wMDAzCi0JCQkJSkFQQU4KLQotMDAtMTItMUIgICAoaGV4KQkJU291bmQgRGV2aWNlcywgTExDCi0wMDEyMUIgICAgIChiYXNlIDE2KQkJU291bmQgRGV2aWNlcywgTExDCi0JCQkJMzAwIFdlbmdlbCBEcml2ZQotCQkJCVJlZWRzYnVyZyBXSSA1Mzk1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMUMgICAoaGV4KQkJUEFSUk9UIFMuQS4KLTAwMTIxQyAgICAgKGJhc2UgMTYpCQlQQVJST1QgUy5BLgotCQkJCTE3NCwgcXVhaSBkZSBKZW1tYXBlcwotCQkJCVBBUklTICA3NTAxMAotCQkJCUZSQU5DRQotCi0wMC0xMi0xRCAgIChoZXgpCQlOZXRmYWJyaWMgQ29ycG9yYXRpb24KLTAwMTIxRCAgICAgKGJhc2UgMTYpCQlOZXRmYWJyaWMgQ29ycG9yYXRpb24KLQkJCQk2NyBGZWRlcmFsIFJvYWQKLQkJCQlTdWl0ZSAzMDAKLQkJCQlCcm9va2ZpZWxkIENUIDA2ODA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0xRSAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzLCBJbmMuCi0wMDEyMUUgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcywgSW5jLgotCQkJCTExOTQgTi4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0xRiAgIChoZXgpCQlIYXJkaW5nIEludHJ1bWVudHMKLTAwMTIxRiAgICAgKGJhc2UgMTYpCQlIYXJkaW5nIEludHJ1bWVudHMKLQkJCQk5NDMxLTQxQXZlCi0JCQkJRWRtb250b24gQUIgVDZFIDVYNwotCQkJCUNBTkFEQQotCi0wMC0xMi0yMCAgIChoZXgpCQlDYWRjbyBTeXN0ZW1zCi0wMDEyMjAgICAgIChiYXNlIDE2KQkJQ2FkY28gU3lzdGVtcwotCQkJCTIzNjMgTWVycml0dCBEcgotCQkJCUdhcmxhbmQgVGV4YXMgNzUwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTIxICAgKGhleCkJCUIuQnJhdW4gTWVsc3VuZ2VuIEFHCi0wMDEyMjEgICAgIChiYXNlIDE2KQkJQi5CcmF1biBNZWxzdW5nZW4gQUcKLQkJCQlTY2h3YXJ6ZW5iZXJnZXIgV2VnIDczLTc5Ci0JCQkJTWVsc3VuZ2VuIEhlc3NlbiAzNDIxMgotCQkJCUdFUk1BTlkKLQotMDAtMTItMjIgICAoaGV4KQkJU2thcmRpbiAoVUspIEx0ZAotMDAxMjIyICAgICAoYmFzZSAxNikJCVNrYXJkaW4gKFVLKSBMdGQKLQkJCQlOby4gNSBHcmVlbndheSAoUk8yNCkKLQkJCQlIYXJsb3cgQnVzaW5lc3MgUGFyawotCQkJCUhhcmxvdyBFc3NleCBDTTE5IDVRQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEyLTIzICAgKGhleCkJCVBpeGltCi0wMDEyMjMgICAgIChiYXNlIDE2KQkJUGl4aW0KLQkJCQk5MTUgTGluZGEgVmlzdGEgQXZlLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTI0ICAgKGhleCkJCU5leFFMIENvcnBvcmF0aW9uCi0wMDEyMjQgICAgIChiYXNlIDE2KQkJTmV4UUwgQ29ycG9yYXRpb24KLQkJCQkxMjI1MCBJbndvb2QgUm9hZCAjNgotCQkJCURhbGxhcyBUWCA3NTI0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMjUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDEyMjUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMjYgICAoaGV4KQkJSmFwYW4gRGlyZXggQ29ycG9yYXRpb24KLTAwMTIyNiAgICAgKGJhc2UgMTYpCQlKYXBhbiBEaXJleCBDb3Jwb3JhdGlvbgotCQkJCUt5b2NlcmEgSGFyYWp1a3UgQmxkZy4KLQkJCQk2LTI3LTgsIEppbmd1bWFlCi0JCQkJU2hpYnV5YS1rdSBUb2t5byAxNTAtMDAwMQotCQkJCUpBUEFOCi0KLTAwLTEyLTI3ICAgKGhleCkJCUZyYW5rbGluIEVsZWN0cmljIENvLiwgSW5jLgotMDAxMjI3ICAgICAoYmFzZSAxNikJCUZyYW5rbGluIEVsZWN0cmljIENvLiwgSW5jLgotCQkJCTQwMCBFLiBTcHJpbmcgU3RyZWV0Ci0JCQkJQmx1ZmZ0b24gSW5kaWFuYSA0NjcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMjggICAoaGV4KQkJRGF0YSBMdGQuCi0wMDEyMjggICAgIChiYXNlIDE2KQkJRGF0YSBMdGQuCi0JCQkJSi4gSGFnYXJ1IDkKLQkJCQlQLk8uIEJveCA3Ci0JCQkJQnJhdGlzbGF2YSAgODMwIDA1Ci0JCQkJU0xPVkFLSUEKLQotMDAtMTItMjkgICAoaGV4KQkJQnJvYWRFYXN5IFRlY2hub2xvZ2llcyBDby4sTHRkCi0wMDEyMjkgICAgIChiYXNlIDE2KQkJQnJvYWRFYXN5IFRlY2hub2xvZ2llcyBDby4sTHRkCi0JCQkJMjR0aCBGbG9vcixUb3dlciBBLEppblNoYW4gTWFuc2lvbiwKLQkJCQlOTy44IFNoYW5YaSBSb2FkLE5hbmppbmcsUC5SLkMuCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMDAwOQotCQkJCUNISU5BCi0KLTAwLTEyLTJBICAgKGhleCkJCVZUZWNoIFRlbGVjb21tdW5pY2F0aW9ucyBMdGQuCi0wMDEyMkEgICAgIChiYXNlIDE2KQkJVlRlY2ggVGVsZWNvbW11bmljYXRpb25zIEx0ZC4KLQkJCQkyMy9GLCBUYWkgUGluZyBJbmR1c3RyaWFsIENlbnRyZSwgQmxvY2sgMQotCQkJCTU3IFRpbmcgS29rIFJvYWQsIFRhaSBQbwotCQkJCUhPTkcgS09ORwotCi0wMC0xMi0yQiAgIChoZXgpCQlWaXJiaWFnZSBQdHkgTHRkCi0wMDEyMkIgICAgIChiYXNlIDE2KQkJVmlyYmlhZ2UgUHR5IEx0ZAotCQkJCUxldmVsIDQKLQkJCQk4IE1hcmtldCBTdHJlZXQKLQkJCQlNZWxib3VybmUgVmljdG9yaWEgMzAwMAotCQkJCUFVU1RSQUxJQQotCi0wMC0xMi0yQyAgIChoZXgpCQlTb2VuZW4gQ29udHJvbHMgTi5WLgotMDAxMjJDICAgICAoYmFzZSAxNikJCVNvZW5lbiBDb250cm9scyBOLlYuCi0JCQkJV2lqbmVkYWxlc3RyYWF0IDE5MAotCQkJCVJvZXNlbGFyZSBXLVZMIDg4MDAKLQkJCQlCRUxHSVVNCi0KLTAwLTEyLTJEICAgKGhleCkJCVNpTmV0dCBDb3Jwb3JhdGlvbgotMDAxMjJEICAgICAoYmFzZSAxNikJCVNpTmV0dCBDb3Jwb3JhdGlvbgotCQkJCTY0MCBXLiBDYWxpZm9ybmlhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMkUgICAoaGV4KQkJU2lnbmFsIFRlY2hub2xvZ3kgLSBBSVNECi0wMDEyMkUgICAgIChiYXNlIDE2KQkJU2lnbmFsIFRlY2hub2xvZ3kgLSBBSVNECi0JCQkJMTgyMCBQcmVzdG9uIFBhcmsgQmx2ZC4KLQkJCQlTdWl0ZSAyODAwCi0JCQkJUGxhbm8gVFggNzUwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTJGICAgKGhleCkJCVNhbmVpIEVsZWN0cmljIEluYy4KLTAwMTIyRiAgICAgKGJhc2UgMTYpCQlTYW5laSBFbGVjdHJpYyBJbmMuCi0JCQkJNUYgVGFpc291LUlrZWJ1a3VybyBCbGRnLgotCQkJCTItNjEtMSBJa2VidWt1cm8KLQkJCQlUb3NoaW1hLWt1IFRva3lvIDE3MS0wMDE0Ci0JCQkJSkFQQU4KLQotMDAtMTItMzAgICAoaGV4KQkJUGljYXNvIEluZm9jb21tdW5pY2F0aW9uIENPLiwgTFRELgotMDAxMjMwICAgICAoYmFzZSAxNikJCVBpY2FzbyBJbmZvY29tbXVuaWNhdGlvbiBDTy4sIExURC4KLQkJCQkzRiwgU3VudGVjaGNpdHksIFNhbmdkYWV3b24gMS1kb25nLAotCQkJCTUxMy0xNSwgSnVuZ3dvbi1ndQotCQkJCVN1bmduYW0tY2l0eSBLeXVuZ2dpLWRvIDQ2Mi03MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItMzEgICAoaGV4KQkJTW90aW9uIENvbnRyb2wgU3lzdGVtcywgSW5jLgotMDAxMjMxICAgICAoYmFzZSAxNikJCU1vdGlvbiBDb250cm9sIFN5c3RlbXMsIEluYy4KLQkJCQlQTyBCb3ggMTE1Ci0JCQkJNjcwMSBWaXNjb2UgUm9hZAotCQkJCU5ldyBSaXZlciBWQSAyNDEyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMzIgICAoaGV4KQkJTGVXaXogQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAxMjMyICAgICAoYmFzZSAxNikJCUxlV2l6IENvbW11bmljYXRpb25zIEluYy4KLQkJCQkxMzc2IE4uIDR0aCBTdC4gIzMwMAotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0zMyAgIChoZXgpCQlKUkMgVE9LS0kgQ28uLEx0ZC4KLTAwMTIzMyAgICAgKGJhc2UgMTYpCQlKUkMgVE9LS0kgQ28uLEx0ZC4KLQkJCQkzLTItMSBTaGlueW9zaGlkYWhpZ2FzaGkgS29ob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIzLTg1NzIKLQkJCQlKQVBBTgotCi0wMC0xMi0zNCAgIChoZXgpCQlDYW1pbGxlIEJhdWVyCi0wMDEyMzQgICAgIChiYXNlIDE2KQkJQ2FtaWxsZSBCYXVlcgotCQkJCUFhcmdhdWVyc3RyLiA3Ci0JCQkJV29obGVuIEFHIDU2MTAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xMi0zNSAgIChoZXgpCQlBbmRyZXcgQ29ycG9yYXRpb24KLTAwMTIzNSAgICAgKGJhc2UgMTYpCQlBbmRyZXcgQ29ycG9yYXRpb24KLQkJCQkyNjAxIFRlbGVjb20gUGt3eQotCQkJCVJpY2hhcmRzb24gVFggNzUwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTM2ICAgKGhleCkJCUNvblNlbnRyeSBOZXR3b3JrcwotMDAxMjM2ICAgICAoYmFzZSAxNikJCUNvblNlbnRyeSBOZXR3b3JrcwotCQkJCTE2OTAgTWNDYW5kbGVzcyBEcgotCQkJCU1pbGlwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMzcgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTIzNyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwKLQkJCQlNUyA4NzIzCi0JCQkJRGFsbGFzIFRleGFzIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0zOCAgIChoZXgpCQlTZXRhQm94IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDEyMzggICAgIChiYXNlIDE2KQkJU2V0YUJveCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTlGLTEsIE5vLiAyOTMtMywgU2VjMiwgRnUtSHNpbmcgUy4gUmQuCi0JCQkJVGFpcGVpICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLTM5ICAgKGhleCkJCVMgTmV0IFN5c3RlbXMgSW5jLgotMDAxMjM5ICAgICAoYmFzZSAxNikJCVMgTmV0IFN5c3RlbXMgSW5jLgotCQkJCTEwRiBTdW5nd29uIEJsZGcuIFNhbXN1bmctZG9uZwotCQkJCUdhbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTA5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi0zQSAgIChoZXgpCQlQb3N5c3RlY2ggSW5jLiwgQ28uCi0wMDEyM0EgICAgIChiYXNlIDE2KQkJUG9zeXN0ZWNoIEluYy4sIENvLgotCQkJCVJvb20gNDA3LCBEYWVyeXVuZyBUZWNobm8gVG93biA2LAotCQkJCTQ5My02LCBHYXNhbi1Eb25nLCBHZXVtY2hlb24tR3UsCi0JCQkJU2VvdWwgIDE1My03NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItM0IgICAoaGV4KQkJS2VSbyBTeXN0ZW1zIEFwUwotMDAxMjNCICAgICAoYmFzZSAxNikJCUtlUm8gU3lzdGVtcyBBcFMKLQkJCQlBbGxpa2V2ZWogMwotCQkJCUj4cnNob2xtICAyOTcwCi0JCQkJREVOTUFSSwotCi0wMC0xMi0zQyAgIChoZXgpCQlTZWNvbmQgUnVsZSBMTEMKLTAwMTIzQyAgICAgKGJhc2UgMTYpCQlTZWNvbmQgUnVsZSBMTEMKLQkJCQk0MTE5IFdhbG51dCBTdHJlZXQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlQaGlsYWRlbHBoaWEgUEEgMTkxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTNEICAgKGhleCkJCUdFUwotMDAxMjNEICAgICAoYmFzZSAxNikJCUdFUwotCQkJCVJvb20gNTQwMywgRG9uZ1Nlb3VsIENvbGxlZ2UsIDQyMywgQm9ramVvbmctRG9uZywgU3VqZW9uZy1HdSwgU2VvbmduYW0tU2ksIEd5ZW9uZ2dpLURvLAotCQkJCUd5ZW9uZ2dpLURvIFNlb25nbmFtLVNpIDQ2MS03MTQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItM0UgICAoaGV4KQkJRVJVTkUgdGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTIzRSAgICAgKGJhc2UgMTYpCQlFUlVORSB0ZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiA0MjksIENoaW4tU2FuIDJuZCBzdHJlZXQsCi0JCQkJWWFuZy1NZWkKLQkJCQlUYW8gWXVhbiAgMzI2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi0zRiAgIChoZXgpCQlEZWxsIEluYwotMDAxMjNGICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5Ci0JCQkJUm91bmQgUm9jayAgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTQwICAgKGhleCkJCUFNT0kgRUxFQ1RST05JQ1MgQ08uLExURAotMDAxMjQwICAgICAoYmFzZSAxNikJCUFNT0kgRUxFQ1RST05JQ1MgQ08uLExURAotCQkJCTI5NSBMYW5lLFp1Y2hvbmd6aGkgUm9hZCxaaGFuZyBqaWFuZywKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMDAtMTItNDEgICAoaGV4KQkJYTJpIG1hcmtldGluZyBjZW50ZXIKLTAwMTI0MSAgICAgKGJhc2UgMTYpCQlhMmkgbWFya2V0aW5nIGNlbnRlcgotCQkJCTEwMjQtNCAgRHVrc2FuIEJsZGcgQmFuZ2JhZWRvbmcgU2VvY2hvZ3UgU2VvdWwgS29yZWEKLQkJCQlTRU9VTCAgMTM3LTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi00MiAgIChoZXgpCQlNaWxsZW5uaWFsIE5ldAotMDAxMjQyICAgICAoYmFzZSAxNikJCU1pbGxlbm5pYWwgTmV0Ci0JCQkJIDI4NSBCaWxsZXJpY2EgUm9hZAotCQkJCUNoZWxtc2ZvcmQgTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTQzICAgKGhleCkJCUNpc2NvCi0wMDEyNDMgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNDQgICAoaGV4KQkJQ2lzY28KLTAwMTI0NCAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi00NSAgIChoZXgpCQlaZWxsd2VnZXIgQW5hbHl0aWNzLCBJbmMuCi0wMDEyNDUgICAgIChiYXNlIDE2KQkJWmVsbHdlZ2VyIEFuYWx5dGljcywgSW5jLgotCQkJCTQwNSBCYXJjbGF5IEJsdmQuCi0JCQkJTGluY29sbnNoaXJlIElsbGlub2lzIDYwMDY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi00NiAgIChoZXgpCQlULk8uTSBURUNITk9MT0dZIElOQy4uCi0wMDEyNDYgICAgIChiYXNlIDE2KQkJVC5PLk0gVEVDSE5PTE9HWSBJTkMuLgotCQkJCTkwNiBXb29saW0gRS1iaXogQ2VudGVyIDIsCi0JCQkJR3Vyby0zRG9uZwotCQkJCVNlb3VsIEd1cm8tR3UgMTg0LTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItNDcgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMTI0NyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaS1DaXR5IEd5ZW9uZy1CdWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi00OCAgIChoZXgpCQlFTUMgQ29ycG9yYXRpb24gKEthc2h5YSkKLTAwMTI0OCAgICAgKGJhc2UgMTYpCQlFTUMgQ29ycG9yYXRpb24gKEthc2h5YSkKLQkJCQkxNzYgU291dGggU3RyZWV0Ci0JCQkJSG9wa2ludG9uIE1BIDAxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi00OSAgIChoZXgpCQlEZWx0YSBFbGV0dHJvbmljYSBTLnAuQS4KLTAwMTI0OSAgICAgKGJhc2UgMTYpCQlEZWx0YSBFbGV0dHJvbmljYSBTLnAuQS4KLQkJCQlWaWEgQXN0aWNvIDQxCi0JCQkJVmFyZXNlICAyMTEwMAotCQkJCUlUQUxZCi0KLTAwLTEyLTRBICAgKGhleCkJCURlZGljYXRlZCBEZXZpY2VzLCBJbmMuCi0wMDEyNEEgICAgIChiYXNlIDE2KQkJRGVkaWNhdGVkIERldmljZXMsIEluYy4KLQkJCQk1NjgwIEUuIEZyYW5rbGluCi0JCQkJU3VpdGUgMjUwCi0JCQkJTmFtcGEgSWRhaG8gODM2ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTRCICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDEyNEIgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQlHYXVzdGFkYWxsZWVuIDIxCi0JCQkJVGV4YXMgSW5zdHJ1bWVudHMgTm9yd2F5IEFTCi0JCQkJT3NsbyAgTi0wMzQ5Ci0JCQkJTk9SV0FZCi0KLTAwLTEyLTRDICAgKGhleCkJCUJCV00gQ29ycG9yYXRpb24KLTAwMTI0QyAgICAgKGJhc2UgMTYpCQlCQldNIENvcnBvcmF0aW9uCi0JCQkJNkYsIE5vLiA1NzgsIFJ1aSBHdWFuZyBSb2FkLCBOZWkgSHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItNEQgICAoaGV4KQkJSW5kdWNvbiBCVgotMDAxMjREICAgICAoYmFzZSAxNikJCUluZHVjb24gQlYKLQkJCQlLZXJrbGFhbiAyNgotCQkJCUxlaW11aWRlbiBaSCAyNTQxIENHCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTItNEUgICAoaGV4KQkJWEFDIEFVVE9NQVRJT04gQ09SUC4KLTAwMTI0RSAgICAgKGJhc2UgMTYpCQlYQUMgQVVUT01BVElPTiBDT1JQLgotCQkJCTRGLCAzMCBJbmR1c3RyeSBFLiBSb2FkIElYCi0JCQkJU2NpZW5jZSBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItNEYgICAoaGV4KQkJVHljbyBUaGVybWFsIENvbnRyb2xzIExMQy4KLTAwMTI0RiAgICAgKGJhc2UgMTYpCQlUeWNvIFRoZXJtYWwgQ29udHJvbHMgTExDLgotCQkJCTExMDA0IC0gMTc0IFN0LgotCQkJCUVkbW9udG9uIEFsYmVydGEgVDVTIDJQMwotCQkJCUNBTkFEQQotCi0wMC0xMi01MCAgIChoZXgpCQlUb2t5byBBaXJjYWZ0IEluc3RydW1lbnQgQ28uLCBMdGQuCi0wMDEyNTAgICAgIChiYXNlIDE2KQkJVG9reW8gQWlyY2FmdCBJbnN0cnVtZW50IENvLiwgTHRkLgotCQkJCTEtMzUtMSwgSXp1bWktSG9uY2hvCi0JCQkJS29tYWUtU2hpIFRva3lvIDIwMS04NTU1Ci0JCQkJSkFQQU4KLQotMDAtMTItNTEgICAoaGV4KQkJU0lMSU5LCi0wMDEyNTEgICAgIChiYXNlIDE2KQkJU0lMSU5LCi0JCQkJMTMgUlVFIFBPTUVZUwotCQkJCUxFIFRBSUxMQU4gIDMzMzIwCi0JCQkJRlJBTkNFCi0KLTAwLTEyLTUyICAgKGhleCkJCUNpdHJvbml4LCBMTEMKLTAwMTI1MiAgICAgKGJhc2UgMTYpCQlDaXRyb25peCwgTExDCi0JCQkJMzAzMCBTRSBMb29wIDgyMAotCQkJCUZvcnQgV29ydGggVGV4YXMgNzYxNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTUzICAgKGhleCkJCUF1ZGlvRGV2IEFCCi0wMDEyNTMgICAgIChiYXNlIDE2KQkJQXVkaW9EZXYgQUIKLQkJCQlLYWJpbmdhdGFuIDkKLQkJCQlNYWxt9iAgU0UtMjEyIDM5Ci0JCQkJU1dFREVOCi0KLTAwLTEyLTU0ICAgKGhleCkJCVNwZWN0cmEgVGVjaG5vbG9naWVzIEhvbGRpbmdzIENvbXBhbnkgTHRkCi0wMDEyNTQgICAgIChiYXNlIDE2KQkJU3BlY3RyYSBUZWNobm9sb2dpZXMgSG9sZGluZ3MgQ29tcGFueSBMdGQKLQkJCQlVbml0IDEzMDEtMDksIFRvd2VyIElJCi0JCQkJUGFjaWZpYyBDZW50dXJ5IFBsYWNlLCBNb25na29rCi0JCQkJODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTEyLTU1ICAgKGhleCkJCU5ldEVmZmVjdCBJbmNvcnBvcmF0ZWQKLTAwMTI1NSAgICAgKGJhc2UgMTYpCQlOZXRFZmZlY3QgSW5jb3Jwb3JhdGVkCi0JCQkJOTIxMSBXYXRlcmZvcmQgQ2VudHJlIEJsdmQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlBdXN0aW4gVGV4YXMgNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTU2ICAgKGhleCkJCUxHIElORk9STUFUSU9OICYgQ09NTS4KLTAwMTI1NiAgICAgKGJhc2UgMTYpCQlMRyBJTkZPUk1BVElPTiAmIENPTU0uCi0JCQkJNDU5LTksS0FTQU4tRE9ORyxLVU1DSE9OLUdVLAotCQkJCVNFT1VMICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTU3ICAgKGhleCkJCUxlYXBDb21tIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIEluYy4KLTAwMTI1NyAgICAgKGJhc2UgMTYpCQlMZWFwQ29tbSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJUk0xODA0LTA1IFNvdXRoIFRvd2VyIEhvbmcgS29uZyBQbGF6YSwgTm8uMjgzIEh1YWloYWkgWmhvbmcgUm9hZAotCQkJCVNoYW5naGFpICAyMDAwMjEKLQkJCQlDSElOQQotCi0wMC0xMi01OCAgIChoZXgpCQlBY3RpdmlzIFBvbHNrYQotMDAxMjU4ICAgICAoYmFzZSAxNikJCUFjdGl2aXMgUG9sc2thCi0JCQkJU3dpZXJ6YXdza2EgNQotCQkJCVBvem5hbiBXaWVsa29wb2xza2EgNjAtMzIxCi0JCQkJUE9MQU5ECi0KLTAwLTEyLTU5ICAgKGhleCkJCVRIRVJNTyBFTEVDVFJPTiBLQVJMU1JVSEUKLTAwMTI1OSAgICAgKGJhc2UgMTYpCQlUSEVSTU8gRUxFQ1RST04gS0FSTFNSVUhFCi0JCQkJRElFU0VMU1RSQVNTRSA0Ci0JCQkJS0FSTFNSVUhFIEJBREVOIFfcUlRFTUJFUkcgNzYyMjcKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTVBICAgKGhleCkJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotMDAxMjVBICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotCQkJCU9uZSBNaWNyb3NvZnQgV2F5Ci0JCQkJUmVkbW9uZCBXYXNoaW5ndG9uIDk4MDUyLTYzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTVCICAgKGhleCkJCUtBSU1FSSBFTEVDVFJPTkkKLTAwMTI1QiAgICAgKGJhc2UgMTYpCQlLQUlNRUkgRUxFQ1RST05JCi0JCQkJMTQtM0YsIE5PLjgxLFNFQy4gMSxIU0lOLVRBSS1XVSBST0FELEhTSUNISUgsCi0JCQkJVEFJUEVJIEhTSUVOIEhTSUNISUggMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi01QyAgIChoZXgpCQlHcmVlbiBIaWxscyBTb2Z0d2FyZSwgSW5jLgotMDAxMjVDICAgICAoYmFzZSAxNikJCUdyZWVuIEhpbGxzIFNvZnR3YXJlLCBJbmMuCi0JCQkJMzAgV2VzdCBTb2xhIFN0cmVldAotCQkJCVNhbnRhIEJhcmJhcmEgQ0EgOTMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTVEICAgKGhleCkJCUN5YmVyTmV0IEluYy4KLTAwMTI1RCAgICAgKGJhc2UgMTYpCQlDeWJlck5ldCBJbmMuCi0JCQkJIzIwNSwgTG90dGUgU3VudGVjaCBDaXR5LCA1MTMtMTUKLQkJCQlTYW5nZGFld29uLWRvbmcsIENodW5nd29uLWd1Ci0JCQkJU3VuZ25hbSBLeXVuZ2dpIDQ2Mi04MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItNUUgICAoaGV4KQkJQ0FFTgotMDAxMjVFICAgICAoYmFzZSAxNikJCUNBRU4KLQkJCQl2aWEgVmV0cmFpYSwgMTEKLQkJCQlWaWFyZWdnaW8gTFVDQ0EgNTUwNDkKLQkJCQlJVEFMWQotCi0wMC0xMi01RiAgIChoZXgpCQlBV0lORCBJbmMuCi0wMDEyNUYgICAgIChiYXNlIDE2KQkJQVdJTkQgSW5jLgotCQkJCTE3Ri4sIE5vLiA4ODYtNSwgSnVuZ2plbmcgUmQKLQkJCQlKdW5naGUgQ2l0eQotCQkJCVRhaXBlaSBDb3VudHkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItNjAgICAoaGV4KQkJU3RhbnRvbiBNYWduZXRpY3MsaW5jLgotMDAxMjYwICAgICAoYmFzZSAxNikJCVN0YW50b24gTWFnbmV0aWNzLGluYy4KLQkJCQkzMDAwIFNXIDQybmQgU3RyZWV0Ci0JCQkJSG9sbHl3b29kIEZMIDMzMzEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi02MSAgIChoZXgpCQlBZGFwdGl4LCBJbmMKLTAwMTI2MSAgICAgKGJhc2UgMTYpCQlBZGFwdGl4LCBJbmMKLQkJCQkxNDA3IDExNnRoIEF2ZS4gTkUKLQkJCQlTdWl0ZSBFMjEwCi0JCQkJQmVsbGV2dWUgV0EgOTgwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTYyICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDEyNjIgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTEyLTYzICAgKGhleCkJCURhdGEgVm9pY2UgVGVjaG5vbG9naWVzIEdtYkgKLTAwMTI2MyAgICAgKGJhc2UgMTYpCQlEYXRhIFZvaWNlIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJU3RvY2tob2xtZXIgQWxsZWUgMzJiCi0JCQkJRG9ydG11bmQgTlJXIEQtNDQyNjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTY0ICAgKGhleCkJCWRhdW0gZWxlY3Ryb25pYyBnbWJoCi0wMDEyNjQgICAgIChiYXNlIDE2KQkJZGF1bSBlbGVjdHJvbmljIGdtYmgKLQkJCQlmbHVncGxhdHpzdHIuIDEwMAotCQkJCUZ1ZXJ0aCBCYXZhcmlhIDkwNzY4Ci0JCQkJR0VSTUFOWQotCi0wMC0xMi02NSAgIChoZXgpCQlFbmVyZHluZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTI2NSAgICAgKGJhc2UgMTYpCQlFbmVyZHluZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxOTM1IENvcmRlbGwgQ291cnQKLQkJCQlFbCBDYWpvbiBDQSA5MjAyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNjYgICAoaGV4KQkJU3dpc3Njb20gSG9zcGl0YWxpdHkgU2VydmljZXMgU0EKLTAwMTI2NiAgICAgKGJhc2UgMTYpCQlTd2lzc2NvbSBIb3NwaXRhbGl0eSBTZXJ2aWNlcyBTQQotCQkJCUNoZW1pbiBkZSBsJ0V0YW5nIDY1Ci0JCQkJMTIxMSBHZW5ldmEgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTItNjcgICAoaGV4KQkJTWF0c3VzaGl0YSBFbGVjdHJvbmljIENvbXBvbmVudHMgQ28uLCBMdGQuCi0wMDEyNjcgICAgIChiYXNlIDE2KQkJTWF0c3VzaGl0YSBFbGVjdHJvbmljIENvbXBvbmVudHMgQ28uLCBMdGQuCi0JCQkJMTAwNiBLYWRvbWEKLQkJCQlLYWRvbWEtQ2l0eSBPc2FrYSA1NzEtODUwNgotCQkJCUpBUEFOCi0KLTAwLTEyLTY4ICAgKGhleCkJCUlQUyBkLm8uby4KLTAwMTI2OCAgICAgKGJhc2UgMTYpCQlJUFMgZC5vLm8uCi0JCQkJQy4gTGp1YmxqYW5za2UgYnJpZ2FkZSAxNwotCQkJCUxqdWJsamFuYSAgU0ktMTAwMAotCQkJCVNMT1ZFTklBCi0KLTAwLTEyLTY5ICAgKGhleCkJCVZhbHVlIEVsZWN0cm9uaWNzCi0wMDEyNjkgICAgIChiYXNlIDE2KQkJVmFsdWUgRWxlY3Ryb25pY3MKLQkJCQlEb25nLWt3YW4gQi9ELCA1RiwgMTU2Ni0yCi0JCQkJU2VvY2hvLWRvbmcsIFNlb2Noby1ndQotCQkJCXNlb3VsICAxMzctODc0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTZBICAgKGhleCkJCU9QVE9FTEVDVFJPTklDUyBDby4sIEx0ZC4KLTAwMTI2QSAgICAgKGJhc2UgMTYpCQlPUFRPRUxFQ1RST05JQ1MgQ28uLCBMdGQuCi0JCQkJMy0xS2FtaWFva2luaXNoaSAxLWNob21lCi0JCQkJS2F3YWd1Y2hpIFNhaXRhbWEgUHJlZi4gMzMzLTA4NDUKLQkJCQlKQVBBTgotCi0wMC0xMi02QiAgIChoZXgpCQlBc2NhbGFkZSBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0wMDEyNkIgICAgIChiYXNlIDE2KQkJQXNjYWxhZGUgQ29tbXVuaWNhdGlvbnMgTGltaXRlZAotCQkJCVVuaXQgMTAtMTEsIDM1L0YsIENhYmxlIFRWIFRvd2VyLAotCQkJCU5vLjkgSG9pIFNoaW5nIFJvYWQsIFRzdWVuIFdhbgotCQkJCUhPTkcgS09ORwotCi0wMC0xMi02QyAgIChoZXgpCQlWaXNvbmljIEx0ZC4KLTAwMTI2QyAgICAgKGJhc2UgMTYpCQlWaXNvbmljIEx0ZC4KLQkJCQkyNCBIYWJhcnplbCBTdC4KLQkJCQlUZWwgQXZpdiAgNjk3MTAKLQkJCQlJU1JBRUwKLQotMDAtMTItNkQgICAoaGV4KQkJVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLCBCZXJrZWxleQotMDAxMjZEICAgICAoYmFzZSAxNikJCVVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSwgQmVya2VsZXkKLQkJCQlFRUNTIERlcGFydG1lbnQKLQkJCQlCZXJrZWxleSBDQSA5NDcyMC0xNzc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi02RSAgIChoZXgpCQlTZWlkZWwgRWxla3Ryb25payBHbWJIIE5mZy5LRwotMDAxMjZFICAgICAoYmFzZSAxNikJCVNlaWRlbCBFbGVrdHJvbmlrIEdtYkggTmZnLktHCi0JCQkJRnJhdWVudGFsZXJzdHJhc3NlIDEwMAotCQkJCURldXRzY2hsYW5kc2JlcmcgU3RlaWVybWFyayA4NTMwCi0JCQkJQVVTVFJJQQotCi0wMC0xMi02RiAgIChoZXgpCQlSYXlzb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTI2RiAgICAgKGJhc2UgMTYpCQlSYXlzb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxRiBOby45IFImRCBSZC5JSSwgU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luLUNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi03MCAgIChoZXgpCQlOR0VTIERlbnJvIFN5c3RlbXMKLTAwMTI3MCAgICAgKGJhc2UgMTYpCQlOR0VTIERlbnJvIFN5c3RlbXMKLQkJCQk5MzE4IEdhaXRoZXIgUm9hZAotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNzEgICAoaGV4KQkJTWVhc3VyZW1lbnQgQ29tcHV0aW5nIENvcnAKLTAwMTI3MSAgICAgKGJhc2UgMTYpCQlNZWFzdXJlbWVudCBDb21wdXRpbmcgQ29ycAotCQkJCTE2IENvbW1lcmNlIEJsdmQKLQkJCQlNaWRkbGVib3JvIE1BIDAyMzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi03MiAgIChoZXgpCQlSZWR1eCBDb21tdW5pY2F0aW9ucyBMdGQuCi0wMDEyNzIgICAgIChiYXNlIDE2KQkJUmVkdXggQ29tbXVuaWNhdGlvbnMgTHRkLgotCQkJCVBPQiAxMDEKLQkJCQlNb2RpaW4gIDcxNzAwCi0JCQkJSVNSQUVMCi0KLTAwLTEyLTczICAgKGhleCkJCVN0b2tlIEluYwotMDAxMjczICAgICAoYmFzZSAxNikJCVN0b2tlIEluYwotCQkJCTIxODkgTGVnaG9ybiBTdHJlZXQKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi03NCAgIChoZXgpCQlOSVQgbGFiCi0wMDEyNzQgICAgIChiYXNlIDE2KQkJTklUIGxhYgotCQkJCVNrb3Jpbnkgc3RyLiwgNjUtMwotCQkJCU1pbnNrIE1pbnNrYXlhIG9ibC4gMjIwMDEzCi0JCQkJQkVMQVJVUwotCi0wMC0xMi03NSAgIChoZXgpCQlTZW50aWxsYSBDb3Jwb3JhdGlvbgotMDAxMjc1ICAgICAoYmFzZSAxNikJCVNlbnRpbGxhIENvcnBvcmF0aW9uCi0JCQkJMjAxIE1hcnNoYWxsIFN0cmVldAotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNzYgICAoaGV4KQkJQ0cgUG93ZXIgU3lzdGVtcyBJcmVsYW5kIExpbWl0ZWQKLTAwMTI3NiAgICAgKGJhc2UgMTYpCQlDRyBQb3dlciBTeXN0ZW1zIElyZWxhbmQgTGltaXRlZAotCQkJCUhlcmJlcnQgSG91c2UuLCBIYXJtb255IFJvdywgCi0JCQkJRHVibGluICBEMgotCQkJCUlSRUxBTkQKLQotMDAtMTItNzcgICAoaGV4KQkJS29yZW5peCBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDEyNzcgICAgIChiYXNlIDE2KQkJS29yZW5peCBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJMTFGLTEsIE5vLiAxMDgsIE1pblF1YW4gUmQuCi0JCQkJWGluZGlhbiBDaXR5IFRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLTc4ICAgKGhleCkJCUludGVybmF0aW9uYWwgQmFyIENvZGUKLTAwMTI3OCAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIEJhciBDb2RlCi0JCQkJMTYwIE9hayBTdHJlZXQKLQkJCQlHbGFzdG9uYnVyeSBDVCAwNjAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNzkgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDEyNzkgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkgU291dGgKLQkJCQlNUzA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTdBICAgKGhleCkJCVNhbnl1IEluZHVzdHJ5IENvLixMdGQuCi0wMDEyN0EgICAgIChiYXNlIDE2KQkJU2FueXUgSW5kdXN0cnkgQ28uLEx0ZC4KLQkJCQlNaWRvcmkta3UgSGFrdXNhbjEtMTEtMTEKLQkJCQlZb2tvaGFtYS1zaGkgS2FuYWdhd2Eta2VuIDIyNi0wMDA2Ci0JCQkJSkFQQU4KLQotMDAtMTItN0IgICAoaGV4KQkJVklBIE5ldHdvcmtpbmcgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDEyN0IgICAgIChiYXNlIDE2KQkJVklBIE5ldHdvcmtpbmcgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJOEYsNTMzLCBDaHVuZy1DaGVuZyBSb2FkLCBIc2luLVRpZW4KLQkJCQlUYWlwZWkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItN0MgICAoaGV4KQkJU1dFR09OIEFCCi0wMDEyN0MgICAgIChiYXNlIDE2KQkJU1dFR09OIEFCCi0JCQkJQm94IDMwMAotCQkJCUtWxE5VTSBWxFNUUkEgR9ZUQUxBTkQgU0UgNTM1IDIzCi0JCQkJU1dFREVOCi0KLTAwLTEyLTdEICAgKGhleCkJCU1vYmlsZUFyaWEKLTAwMTI3RCAgICAgKGJhc2UgMTYpCQlNb2JpbGVBcmlhCi0JCQkJODAwIFcgRWwgQ2FtaW5vIFJlYWwgIzI0MAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTdFICAgKGhleCkJCURpZ2l0YWwgTGlmZXN0eWxlcyBHcm91cCwgSW5jLgotMDAxMjdFICAgICAoYmFzZSAxNikJCURpZ2l0YWwgTGlmZXN0eWxlcyBHcm91cCwgSW5jLgotCQkJCTgwMSBTb3V0aCBTZW50b3VzIEF2ZS4KLQkJCQlDaXR5IG9mIEluZHVzdHJ5IENBIDkxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi03RiAgIChoZXgpCQlDaXNjbwotMDAxMjdGICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTgwICAgKGhleCkJCUNpc2NvCi0wMDEyODAgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItODEgICAoaGV4KQkJTWFyY2ggTmV0d29ya3MgUy5wLkEuCi0wMDEyODEgICAgIChiYXNlIDE2KQkJTWFyY2ggTmV0d29ya3MgUy5wLkEuCi0JCQkJVmlhIERlaSBMYXZvcmF0b3JpIEF1dG9iaWFuY2hpIG4uIDEsCi0JCQkJRGVzaW8gTWlsYW5vIDIwMDMzCi0JCQkJSVRBTFkKLQotMDAtMTItODIgICAoaGV4KQkJUW92aWEKLTAwMTI4MiAgICAgKGJhc2UgMTYpCQlRb3ZpYQotCQkJCTc0NzAgTmV3IFRlY2hub2xvZ3kgV2F5Ci0JCQkJU3VpdGUgRQotCQkJCUZyZWRlcmljayBNRCAyMTcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItODMgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDEyODMgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTItODQgICAoaGV4KQkJTGFiMzMgU3JsCi0wMDEyODQgICAgIChiYXNlIDE2KQkJTGFiMzMgU3JsCi0JCQkJQy5zbyBGLiBQZXJyb25lIDI0Ci0JCQkJR2Vub2EgR0UgMTYxNTIKLQkJCQlJVEFMWQotCi0wMC0xMi04NSAgIChoZXgpCQlHaXptb25kbyBFdXJvcGUgTHRkCi0wMDEyODUgICAgIChiYXNlIDE2KQkJR2l6bW9uZG8gRXVyb3BlIEx0ZAotCQkJCTEgTWVhZG93IEdhdGUgQXZlbnVlCi0JCQkJRmFybmJvcm91Z2ggQnVzaW5lc3MgUGFyawotCQkJCUZhcm5ib3JvdWdoIEhhbXBzaGlyZSBHVTE0IDZGRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEyLTg2ICAgKGhleCkJCUVOREVWQ08gQ09SUAotMDAxMjg2ICAgICAoYmFzZSAxNikJCUVOREVWQ08gQ09SUAotCQkJCTMwNzAwIFJBTkNITyBWSUVKTyBST0FECi0JCQkJU0FOIEpVQU4gQ0FQSVNUUkFOTyBDQSA5MjY3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItODcgICAoaGV4KQkJRGlnaXRhbCBFdmVyeXdoZXJlIFVudGVyaGFsdHVuZ3NlbGVrdHJvbmlrIEdtYkgKLTAwMTI4NyAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIEV2ZXJ5d2hlcmUgVW50ZXJoYWx0dW5nc2VsZWt0cm9uaWsgR21iSAotCQkJCU1hcmlhIEdhaWxlciBTdHJhc3NlIDE2Ci0JCQkJVmlsbGFjaCBL5HJudGVuIDk1MDAKLQkJCQlBVVNUUklBCi0KLTAwLTEyLTg4ICAgKGhleCkJCTJXaXJlLCBJbmMKLTAwMTI4OCAgICAgKGJhc2UgMTYpCQkyV2lyZSwgSW5jCi0JCQkJMTcwNCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItODkgICAoaGV4KQkJQWR2YW5jZSBTdGVyaWxpemF0aW9uIFByb2R1Y3RzCi0wMDEyODkgICAgIChiYXNlIDE2KQkJQWR2YW5jZSBTdGVyaWxpemF0aW9uIFByb2R1Y3RzCi0JCQkJMzMgVGVjaG5vbG9neSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi04QSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMTI4QSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUgTi4gVVMgSHd5IDQ1Ci0JCQkJUm9vbSBuby4gTVctMTEzCi0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi04QiAgIChoZXgpCQlTZW5zb3J5IE5ldHdvcmtzIEluYwotMDAxMjhCICAgICAoYmFzZSAxNikJCVNlbnNvcnkgTmV0d29ya3MgSW5jCi0JCQkJTGV2ZWwgNiwgMTQwIFdpbGxpYW0gU3QKLQkJCQlFYXN0IFN5ZG5leSBOU1cgMjAxMQotCQkJCUFVU1RSQUxJQQotCi0wMC0xMi04QyAgIChoZXgpCQlXb29kd2FyZCBHb3Zlcm5vcgotMDAxMjhDICAgICAoYmFzZSAxNikJCVdvb2R3YXJkIEdvdmVybm9yCi0JCQkJMTAwMCBFLiBEcmFrZSBSb2FkCi0JCQkJRnQuIENvbGxpbnMgQ08gODA1MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLThEICAgKGhleCkJCVNUQiBEYXRlbnNlcnZpY2UgR21iSAotMDAxMjhEICAgICAoYmFzZSAxNikJCVNUQiBEYXRlbnNlcnZpY2UgR21iSAotCQkJCVdlaW5zYmVyZ3N0cmFzc2UgMTkwCi0JCQkJS/ZsbiBOUlcgNTA4MjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLThFICAgKGhleCkJCVEtRnJlZSBBU0EKLTAwMTI4RSAgICAgKGJhc2UgMTYpCQlRLUZyZWUgQVNBCi0JCQkJVGguIE93ZXNlbnNndC4gMzVjCi0JCQkJVHJvbmRoZWltIFNUIDc0NDMKLQkJCQlOT1JXQVkKLQotMDAtMTItOEYgICAoaGV4KQkJTW9udGlsaW8KLTAwMTI4RiAgICAgKGJhc2UgMTYpCQlNb250aWxpbwotCQkJCTEgbWFza2l0IHN0LgotCQkJCUhlcnR6ZWxpYSAgNDY3NjMKLQkJCQlJU1JBRUwKLQotMDAtMTItOTAgICAoaGV4KQkJS1lPV0EgRWxlY3RyaWMgJiBNYWNoaW5lcnkgQ29ycC4KLTAwMTI5MCAgICAgKGJhc2UgMTYpCQlLWU9XQSBFbGVjdHJpYyAmIE1hY2hpbmVyeSBDb3JwLgotCQkJCTQtOC0xNixNYXN1aXp1bWkKLQkJCQlLYW5hemF3YSBJc2hpa2F3YSA5MjEtODAyNQotCQkJCUpBUEFOCi0KLTAwLTEyLTkxICAgKGhleCkJCUtXUyBDb21wdXRlcnN5c3RlbWUgR21iSAotMDAxMjkxICAgICAoYmFzZSAxNikJCUtXUyBDb21wdXRlcnN5c3RlbWUgR21iSAotCQkJCUNhcmwgWmVpc3MgU3RyLiAxCi0JCQkJRXR0bGluZ2VuIEJXIDc2Mjc1Ci0JCQkJR0VSTUFOWQotCi0wMC0xMi05MiAgIChoZXgpCQlHcmlmZmluIFRlY2hub2xvZ3kKLTAwMTI5MiAgICAgKGJhc2UgMTYpCQlHcmlmZmluIFRlY2hub2xvZ3kKLQkJCQkxOTMwIEFpciBMYW5lIERyaXZlCi0JCQkJTmFzaHZpbGxlIFROIDM3MjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi05MyAgIChoZXgpCQlHRSBFbmVyZ3kKLTAwMTI5MyAgICAgKGJhc2UgMTYpCQlHRSBFbmVyZ3kKLQkJCQkxNTAxIFJvYW5va2UgQmx2ZC4KLQkJCQlSb29tIDI4MwotCQkJCVNhbGVtIFZBIDI0MTUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi05NCAgIChoZXgpCQlTVU1JVE9NTyBFTEVDVFJJQyBERVZJQ0UgSU5OT1ZBVElPTlMsIElOQwotMDAxMjk0ICAgICAoYmFzZSAxNikJCVNVTUlUT01PIEVMRUNUUklDIERFVklDRSBJTk5PVkFUSU9OUywgSU5DCi0JCQkJMTAwMCBLYW1pc3VraWF3YXJhLFNob3dhLWNobwotCQkJCU5ha2Frb21hLWd1biBZYW1hbmFzaGkgNDA5LTM4ODMKLQkJCQlKQVBBTgotCi0wMC0xMi05NSAgIChoZXgpCQlBaXdhcmUgSW5jLgotMDAxMjk1ICAgICAoYmFzZSAxNikJCUFpd2FyZSBJbmMuCi0JCQkJSi1Ub3dlciAyRgotCQkJCTEtMSBOaWtrb2NobwotCQkJCUZ1Y2h1LXNoaSBUb2t5byAxODMtMDA0NAotCQkJCUpBUEFOCi0KLTAwLTEyLTk2ICAgKGhleCkJCUFkZGxvZ2l4Ci0wMDEyOTYgICAgIChiYXNlIDE2KQkJQWRkbG9naXgKLQkJCQk0NTkgV2FsZAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItOTcgICAoaGV4KQkJTzJNaWNybywgSW5jLgotMDAxMjk3ICAgICAoYmFzZSAxNikJCU8yTWljcm8sIEluYy4KLQkJCQkzMTE4IFBhdHJpY2sgSGVucnkgRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItOTggICAoaGV4KQkJTUlDTyBFTEVDVFJJQyhTSEVOWkhFTikgTElNSVRFRAotMDAxMjk4ICAgICAoYmFzZSAxNikJCU1JQ08gRUxFQ1RSSUMoU0hFTlpIRU4pIExJTUlURUQKLQkJCQkyMS9GIEJsb2NrIEEsIEhhaWxydW4gQ29tcGxleCwgNjAyMSBTaGVuTmFuIEJsdmQuLCBTaGVuWmhlbiwgUFIgQ2hpbmEuCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTEyLTk5ICAgKGhleCkJCUt0ZWNoIFRlbGVjb21tdW5pY2F0aW9ucyBJbmMKLTAwMTI5OSAgICAgKGJhc2UgMTYpCQlLdGVjaCBUZWxlY29tbXVuaWNhdGlvbnMgSW5jCi0JCQkJMjE1NDAgUHJhaXJpZSBTdHJlZXQgVW5pdCBCCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItOUEgICAoaGV4KQkJSVJUIEVsZWN0cm9uaWNzIFB0eSBMdGQKLTAwMTI5QSAgICAgKGJhc2UgMTYpCQlJUlQgRWxlY3Ryb25pY3MgUHR5IEx0ZAotCQkJCTI2IEhvdGhhbSBQYXJhZGUKLQkJCQlBcnRhcm1vbiBOU1cgMjA2NAotCQkJCUFVU1RSQUxJQQotCi0wMC0xMi05QiAgIChoZXgpCQlFMlMgRWxlY3Ryb25pYyBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIFMuTC4KLTAwMTI5QiAgICAgKGJhc2UgMTYpCQlFMlMgRWxlY3Ryb25pYyBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIFMuTC4KLQkJCQlTYW50IEZlcnJhbiAxMAotCQkJCUJhcmNlbG9uYSAgMDgwMzEKLQkJCQlTUEFJTgotCi0wMC0xMi05QyAgIChoZXgpCQlZdWxpbmV0Ci0wMDEyOUMgICAgIChiYXNlIDE2KQkJWXVsaW5ldAotCQkJCTExRiwgU2FtaG9tb29sc2FuIEIvRCAyNzUtNiwgWWFuZ2phZS1kb25nCi0JCQkJU2VvY2hvIFNlb3VsIDEzNy05NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItOUQgICAoaGV4KQkJRmlyc3QgSW50ZXJuYXRpb25hbCBDb21wdXRlciBkbyBCcmFzaWwKLTAwMTI5RCAgICAgKGJhc2UgMTYpCQlGaXJzdCBJbnRlcm5hdGlvbmFsIENvbXB1dGVyIGRvIEJyYXNpbAotCQkJCVJvZG92aWEgQlIgNDU5Ci0JCQkJa20gMTIxIC0gRGlzdHJpdG8gSW5kdXN0cmlhbAotCQkJCVNhbnRhIFJpdGEgZG8gU2FwdWNh7SBNaW5hcyBHZXJhaXMgCi0JCQkJQlJBWklMCi0KLTAwLTEyLTlFICAgKGhleCkJCVN1cmYgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAxMjlFICAgICAoYmFzZSAxNikJCVN1cmYgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCVJvb20gMzEzLCAzRiwgQmxkZy41MiwgTm8uIDE5NSwgQ2h1bmcgSHNpbmcgUmQuLCBTZWMgNCwgQ2h1dHVuZywgSHNpbkNodSwgVGFpd2FuCi0JCQkJSHNpbkNodSAgMzEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi05RiAgIChoZXgpCQlSQUUgU3lzdGVtcywgSW5jLgotMDAxMjlGICAgICAoYmFzZSAxNikJCVJBRSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTMzOSBNb2ZmZXR0IFBhcmsgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ2FsaWZvcm5pYSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQTAgICAoaGV4KQkJTmVvTWVyaWRpYW4gU2RuIEJoZAotMDAxMkEwICAgICAoYmFzZSAxNikJCU5lb01lcmlkaWFuIFNkbiBCaGQKLQkJCQkzQS0xLCBQZXJkYW5hIFRoZSBQbGFjZQotCQkJCUphbGFuIFBKVSA4LzVHCi0JCQkJQmFuZGFyIERhbWFuc2FyYSBQZXJkYW5hIFNlbGFuZ29yIDQ3ODIwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTItQTEgICAoaGV4KQkJQmx1ZVBhY2tldCBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMTJBMSAgICAgKGJhc2UgMTYpCQlCbHVlUGFja2V0IENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTEwRi0xLCBOby4gNDIwLCBTZWMuIDEsIEtlZWx1bmcgUmQuLCAxMTAsCi0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLUEyICAgKGhleCkJCVZJVEEKLTAwMTJBMiAgICAgKGJhc2UgMTYpCQlWSVRBCi0JCQkJUE8gQm94IDE5NjU4Ci0JCQkJRm91bnRhaW4gSGlsbHMgQVogODUyNjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUEzICAgKGhleCkJCVRydXN0IEludGVybmF0aW9uYWwgQi5WLgotMDAxMkEzICAgICAoYmFzZSAxNikJCVRydXN0IEludGVybmF0aW9uYWwgQi5WLgotCQkJCUxhYW4gdmFuIEJhcmNlbG9uYSA2MDAKLQkJCQlEb3JkcmVjaHQgWnVpZCBob2xsYW5kIDMzMTcgREQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMi1BNCAgIChoZXgpCQlUaGluZ01hZ2ljLCBMTEMKLTAwMTJBNCAgICAgKGJhc2UgMTYpCQlUaGluZ01hZ2ljLCBMTEMKLQkJCQlPbmUgQnJvYWR3YXkKLQkJCQkxNHRoIEZsb29yCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1BNSAgIChoZXgpCQlTdGFyZ2VuLCBJbmMuCi0wMDEyQTUgICAgIChiYXNlIDE2KQkJU3RhcmdlbiwgSW5jLgotCQkJCTIyNSBDZWRhciBIaWxsIFN0cmVldAotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1BNiAgIChoZXgpCQlEb2xieSBBdXN0cmFsaWEKLTAwMTJBNiAgICAgKGJhc2UgMTYpCQlEb2xieSBBdXN0cmFsaWEKLQkJCQlMZXZlbCA2Ci0JCQkJMTM2IENoYWxtZXJzIFN0cmVldAotCQkJCVN1cnJ5IEhpbGxzIE5TVyAyMDEwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTEyLUE3ICAgKGhleCkJCUlTUiBURUNITk9MT0dJRVMgSW5jCi0wMDEyQTcgICAgIChiYXNlIDE2KQkJSVNSIFRFQ0hOT0xPR0lFUyBJbmMKLQkJCQkxMTAwLCBydWUgTm90cmUtRGFtZSBPdWVzdAotCQkJCU1vbnRyZWFsIFF1ZWJlYyBIM0MgMUszCi0JCQkJQ0FOQURBCi0KLTAwLTEyLUE4ICAgKGhleCkJCWludGVjIEdtYkgKLTAwMTJBOCAgICAgKGJhc2UgMTYpCQlpbnRlYyBHbWJICi0JCQkJUmFobWVkZXN0ci4gOTAKLQkJCQlMdWVkZW5zY2hlaWQgTlJXIDU4NTA3Ci0JCQkJR0VSTUFOWQotCi0wMC0xMi1BOSAgIChoZXgpCQkzQ29tIEx0ZAotMDAxMkE5ICAgICAoYmFzZSAxNikJCTNDb20gTHRkCi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMi1BQSAgIChoZXgpCQlJRUUsIEluYy4KLTAwMTJBQSAgICAgKGJhc2UgMTYpCQlJRUUsIEluYy4KLQkJCQk3NzQwIExlbW9uYSBBdmVudWUKLQkJCQlWYW4gTnV5cywgQ0EgOTE0MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUFCICAgKGhleCkJCVdpTGlmZSwgSW5jLgotMDAxMkFCICAgICAoYmFzZSAxNikJCVdpTGlmZSwgSW5jLgotCQkJCTEzMiBFLiAxMzA2NSBTLiwgU3VpdGUgMTUwCi0JCQkJRHJhcGVyIFVUIDg0MDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1BQyAgIChoZXgpCQlPTlRJTUVURUsgSU5DLgotMDAxMkFDICAgICAoYmFzZSAxNikJCU9OVElNRVRFSyBJTkMuCi0JCQkJOUZsLixPd25lcidzIFRvd2VyCi0JCQkJMTYtNSwgU3VuYWUtRG9uZywgQnVuZGFuZy1HdQotCQkJCVN1bmduYW0tU2kgS3l1bmdnaS1EbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLUFEICAgKGhleCkJCUlEUyBHbWJICi0wMDEyQUQgICAgIChiYXNlIDE2KQkJSURTIEdtYkgKLQkJCQlOb2JlbHN0ciwgMTgKLQkJCQlFdHRsaW5nZW4gQmFkZW4tV/xydHRlbWJlcmcgNzYyNzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLUFFICAgKGhleCkJCUhMUyBIQVJELUxJTkUgU29sdXRpb25zIEluYy4KLTAwMTJBRSAgICAgKGJhc2UgMTYpCQlITFMgSEFSRC1MSU5FIFNvbHV0aW9ucyBJbmMuCi0JCQkJNTMgTWFpbiBTdHJlZXQKLQkJCQlEb3dsaW5nIE9udGFyaW8gUDBNIDFSMAotCQkJCUNBTkFEQQotCi0wMC0xMi1BRiAgIChoZXgpCQlFTFBSTyBUZWNobm9sb2dpZXMKLTAwMTJBRiAgICAgKGJhc2UgMTYpCQlFTFBSTyBUZWNobm9sb2dpZXMKLQkJCQk5IC8gMTIgQmlsbGFib25nIFN0LgotCQkJCVN0YWZmb3JkIFF1ZWVuc2xhbmQgNDA1MwotCQkJCUFVU1RSQUxJQQotCi0wMC0xMi1CMCAgIChoZXgpCQlFZm9yZSBPeWogICAoUGxjKQotMDAxMkIwICAgICAoYmFzZSAxNikJCUVmb3JlIE95aiAgIChQbGMpCi0JCQkJUXVhcnRldHRvIEJ1c2luZXNzIFBhcmsKLQkJCQlMaW5ub2l0dXN0aWUgNCBCCi0JCQkJRXNwb28gIEZJIC0gMDI2MDAKLQkJCQlGSU5MQU5ECi0KLTAwLTEyLUIxICAgKGhleCkJCURhaSBOaXBwb24gUHJpbnRpbmcgQ28uLCBMdGQKLTAwMTJCMSAgICAgKGJhc2UgMTYpCQlEYWkgTmlwcG9uIFByaW50aW5nIENvLiwgTHRkCi0JCQkJMi04LTIxLEFrYWJhbmUtbWluYW1pCi0JCQkJS2l0YS1rdSBUb2t5byAxMTUtMDA0NAotCQkJCUpBUEFOCi0KLTAwLTEyLUIyICAgKGhleCkJCUFWT0xJVEVTIExURC4KLTAwMTJCMiAgICAgKGJhc2UgMTYpCQlBVk9MSVRFUyBMVEQuCi0JCQkJMTg0IFBBUksgQVZFTlVFCi0JCQkJTE9ORE9OICBOVzEwIDdYTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEyLUIzICAgKGhleCkJCUFkdmFuY2UgV2lyZWxlc3MgVGVjaG5vbG9neSBDb3JwLgotMDAxMkIzICAgICAoYmFzZSAxNikJCUFkdmFuY2UgV2lyZWxlc3MgVGVjaG5vbG9neSBDb3JwLgotCQkJCTEyRiBOby4gMjctNiwgU2VjLiAyLCBDaHVuZyBDaGVuZyBFYXN0IFJvYWQKLQkJCQlUYW1zaHVpICAyNTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLUI0ICAgKGhleCkJCVdvcmsgTWljcm93YXZlIEdtYkgKLTAwMTJCNCAgICAgKGJhc2UgMTYpCQlXb3JrIE1pY3Jvd2F2ZSBHbWJICi0JCQkJUmFpZmZlaXNlbnN0cmFzc2UgMTIKLQkJCQlIb2x6a2lyY2hlbiAgODM2MDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLUI1ICAgKGhleCkJCVZpYWx0YSwgSW5jLgotMDAxMkI1ICAgICAoYmFzZSAxNikJCVZpYWx0YSwgSW5jLgotCQkJCTQ4NDYxIEZyZW1vbnQgQmx2ZC4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1CNiAgIChoZXgpCQlTYW50YSBCYXJiYXJhIEluZnJhcmVkLCBJbmMuCi0wMDEyQjYgICAgIChiYXNlIDE2KQkJU2FudGEgQmFyYmFyYSBJbmZyYXJlZCwgSW5jLgotCQkJCTMwIFMuIENhbGxlIENlc2FyIENoYXZlegotCQkJCVN1aXRlIEQKLQkJCQlTYW50YSBCYXJiYXJhIENBIDkzMTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1CNyAgIChoZXgpCQlQVFcgRnJlaWJ1cmcKLTAwMTJCNyAgICAgKGJhc2UgMTYpCQlQVFcgRnJlaWJ1cmcKLQkJCQlMb2VycmFjaGVyIFN0cmFzc2UgNwotCQkJCUZyZWlidXJnICA3OTExNQotCQkJCUdFUk1BTlkKLQotMDAtMTItQjggICAoaGV4KQkJRzIgTWljcm9zeXN0ZW1zCi0wMDEyQjggICAgIChiYXNlIDE2KQkJRzIgTWljcm9zeXN0ZW1zCi0JCQkJNDA4IEV1Y2xpZCBBdmUKLQkJCQlPYWtsYW5kIENBIDk0NjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1COSAgIChoZXgpCQlGdXNpb24gRGlnaXRhbCBUZWNobm9sb2d5Ci0wMDEyQjkgICAgIChiYXNlIDE2KQkJRnVzaW9uIERpZ2l0YWwgVGVjaG5vbG9neQotCQkJCVZpY3RvcmlhIE1ld3MsIDIzIE1pbGxmaWVsZCBSb2FkCi0JCQkJQ290dGluZ2xleSBCdXNpbmVzcyBQYXJrCi0JCQkJQmluZ2xleSBXZXN0IFlvcmtzaGlyZSBCRDE2IDFQWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEyLUJBICAgKGhleCkJCUZTSSBTeXN0ZW1zLCBJbmMuCi0wMDEyQkEgICAgIChiYXNlIDE2KQkJRlNJIFN5c3RlbXMsIEluYy4KLQkJCQk1ODQ3IENvdW50eSBSb2FkIDQxCi0JCQkJRmFybWluZ3RvbiBOWSAxNDQyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQkIgICAoaGV4KQkJVGVsZWNvbW11bmljYXRpb25zIEluZHVzdHJ5IEFzc29jaWF0aW9uIFRSLTQxIENvbW1pdHRlZQotMDAxMkJCICAgICAoYmFzZSAxNikJCVRlbGVjb21tdW5pY2F0aW9ucyBJbmR1c3RyeSBBc3NvY2lhdGlvbiBUUi00MSBDb21taXR0ZWUKLQkJCQkyNTAwIFdpbHNvbiBCbHZkLiwgU3VpdGUgMzAwCi0JCQkJQXJsaW5ndG9uIFZBIDIyMjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1CQyAgIChoZXgpCQlFY2hvbGFiIExMQwotMDAxMkJDICAgICAoYmFzZSAxNikJCUVjaG9sYWIgTExDCi0JCQkJMjY3IEJvc3RvbiBSb2FkCi0JCQkJU3VpdGUgMTEKLQkJCQlCaWxsZXJpY2EgTUEgMDE4NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUJEICAgKGhleCkJCUF2YW50ZWMgTWFudWZhY3R1cmluZyBMaW1pdGVkCi0wMDEyQkQgICAgIChiYXNlIDE2KQkJQXZhbnRlYyBNYW51ZmFjdHVyaW5nIExpbWl0ZWQKLQkJCQlVbml0IEwsIDcvRiwgQ2FtZWxwYWludCBCbGRnLCBCbG9jayAzCi0JCQkJNjAgSG9pIFl1ZW4gUm9hZCwgS3d1biBUb25nLCBLb3dsb29uCi0JCQkJODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTEyLUJFICAgKGhleCkJCUFzdGVrIENvcnBvcmF0aW9uCi0wMDEyQkUgICAgIChiYXNlIDE2KQkJQXN0ZWsgQ29ycG9yYXRpb24KLQkJCQk1MDU1IENvcnBvcmF0ZSBQbGF6YSBEcml2ZQotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ29sb3JhZG8gODA5MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUJGICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMTJCRiAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsIE5vLiA5LCBQYXJrIEF2ZW51ZSBJSQotCQkJCVNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi1DMCAgIChoZXgpCQlIb3RMYXZhIFN5c3RlbXMsIEluYy4KLTAwMTJDMCAgICAgKGJhc2UgMTYpCQlIb3RMYXZhIFN5c3RlbXMsIEluYy4KLQkJCQk2MzI5IENoZWx0b24gRHJpdmUKLQkJCQlPYWtsYW5kIENBIDk0NjExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1DMSAgIChoZXgpCQlDaGVjayBQb2ludCBTb2Z0d2FyZSBUZWNobm9sb2dpZXMKLTAwMTJDMSAgICAgKGJhc2UgMTYpCQlDaGVjayBQb2ludCBTb2Z0d2FyZSBUZWNobm9sb2dpZXMKLQkJCQk1IEhhJ3NvbGVsaW0gU3QuCi0JCQkJVGVsIEF2aXYgIDY3ODk3Ci0JCQkJSVNSQUVMCi0KLTAwLTEyLUMyICAgKGhleCkJCUFwZXggRWxlY3Ryb25pY3MgRmFjdG9yeQotMDAxMkMyICAgICAoYmFzZSAxNikJCUFwZXggRWxlY3Ryb25pY3MgRmFjdG9yeQotCQkJCU5vLjMgSW5kdXN0cmlhbCBab25lLCBOby40IEJsb2NrLAotCQkJCUZ1J3lvbmcgVG93biwgQmFvJ2FuIERpc3RyaWN0Ci0JCQkJU2hlbiBaaGVuIEd1YW5nIERvbmcgNTE4MTAzCi0JCQkJQ0hJTkEKLQotMDAtMTItQzMgICAoaGV4KQkJV0lUIFMuQS4KLTAwMTJDMyAgICAgKGJhc2UgMTYpCQlXSVQgUy5BLgotCQkJCTEzOCBhdmVudWUgTOlvbiBC6XJlbmdlcgotCQkJCVNhaW50IExhdXJlbnQgZHUgVmFyIFBBQ0EgMDY3MDAKLQkJCQlGUkFOQ0UKLQotMDAtMTItQzQgICAoaGV4KQkJVmlzZW9uLCBJbmMuCi0wMDEyQzQgICAgIChiYXNlIDE2KQkJVmlzZW9uLCBJbmMuCi0JCQkJODQ0NSBGcmVlcG9ydCBQYXJrd2F5Ci0JCQkJU3VpdGUgMjQ1Ci0JCQkJSXJ2aW5nIFRleGFzIDc1MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1DNSAgIChoZXgpCQlWLVNob3cgIFRlY2hub2xvZ3kgKENoaW5hKSBDby4sTHRkCi0wMDEyQzUgICAgIChiYXNlIDE2KQkJVi1TaG93ICBUZWNobm9sb2d5IChDaGluYSkgQ28uLEx0ZAotCQkJCTdGLCBUZW5nZGEgUGxhemEsIE5vLjE2OAotCQkJCVhpemhpbWVuIFdhaSBTdHJlZXQsCi0JCQkJSGFpRGlhbiBEaXN0cmljdCwgQmVpamluZyAxMDAwODkKLQkJCQlDSElOQQotCi0wMC0xMi1DNiAgIChoZXgpCQlUR0MgQW1lcmljYSwgSW5jCi0wMDEyQzYgICAgIChiYXNlIDE2KQkJVEdDIEFtZXJpY2EsIEluYwotCQkJCTI5MDEgVGFzbWFuIERyaXZlLCBTdWl0ZSAxMTEKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQzcgICAoaGV4KQkJU0VDVVJBWSBUZWNobm9sb2dpZXMgTHRkLkNvLgotMDAxMkM3ICAgICAoYmFzZSAxNikJCVNFQ1VSQVkgVGVjaG5vbG9naWVzIEx0ZC5Dby4KLQkJCQlUaWFuamluIEhhaXRhaSBJbmR1c3RyaWFsIEJhc2UgRXJXZWkgUm9hZAotCQkJCU5vLiA2IEJsb2NrIEYgOC00MDEKLQkJCQlUaWFuamluICAzMDAzODQKLQkJCQlDSElOQQotCi0wMC0xMi1DOCAgIChoZXgpCQlQZXJmZWN0IHRlY2gKLTAwMTJDOCAgICAgKGJhc2UgMTYpCQlQZXJmZWN0IHRlY2gKLQkJCQkzRixOby45LExBTkUxNzUsTkFOS0FOIFJELiwKLQkJCQlMVUpIVSBUQU9ZVUFOIDMzOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItQzkgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDEyQzkgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQ0EgICAoaGV4KQkJTWVjaGF0cm9uaWMgQnJpY2sgQXBzCi0wMDEyQ0EgICAgIChiYXNlIDE2KQkJTWVjaGF0cm9uaWMgQnJpY2sgQXBzCi0JCQkJQWxzaW9uIDIKLQkJCQk2NDAwIFNvbmRlcmJvcmcgCi0JCQkJREVOTUFSSwotCi0wMC0xMi1DQiAgIChoZXgpCQlDU1MgSW5jLgotMDAxMkNCICAgICAoYmFzZSAxNikJCUNTUyBJbmMuCi0JCQkJMTUxIFN1cGVyaW9yIEJsdmQuCi0JCQkJVW5pdCAxMyAmIDE0Ci0JCQkJTWlzc2lzc2F1Z2EgT250YXJpbyBMNVQyTDEKLQkJCQlDQU5BREEKLQotMDAtMTItQ0MgICAoaGV4KQkJQml0YXRlayBDTy4sIExURAotMDAxMkNDICAgICAoYmFzZSAxNikJCUJpdGF0ZWsgQ08uLCBMVEQKLQkJCQk2Ri0xLDE5MCxUYS1UdW5nIFJvYWQsU0VDLiAzLAotCQkJCUhzaWNoaWggVGFpcGVpIGNvdW50eSAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLUNEICAgKGhleCkJCUFTRU0gU3BBCi0wMDEyQ0QgICAgIChiYXNlIDE2KQkJQVNFTSBTcEEKLQkJCQlWaWEgQnVpYSwgNAotCQkJCUFSVEVHTkEgVWRpbmUgSS0zMzAxMQotCQkJCUlUQUxZCi0KLTAwLTEyLUNFICAgKGhleCkJCUFkdmFuY2VkIEN5YmVybmV0aWNzIEdyb3VwCi0wMDEyQ0UgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgQ3liZXJuZXRpY3MgR3JvdXAKLQkJCQkyOTUzIEJ1bmtlciBIaWxsIExhbmUKLQkJCQlTdWl0ZSA0MDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQ0YgICAoaGV4KQkJQWNjdG9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMTJDRiAgICAgKGJhc2UgMTYpCQlBY2N0b24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCU5vLiAxIENyZWF0aW9uIFJkLiBJSUksIFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi1EMCAgIChoZXgpCQlHb3NzZW4tTWV0cmF3YXR0LUdtYkgKLTAwMTJEMCAgICAgKGJhc2UgMTYpCQlHb3NzZW4tTWV0cmF3YXR0LUdtYkgKLQkJCQlUaG9tYXMtTWFubi1TdHIuIDE2LTIwCi0JCQkJTvxybmJlcmcgQmF2YXJpYSA5MDQ3MQotCQkJCUdFUk1BTlkKLQotMDAtMTItRDEgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMgSW5jCi0wMDEyRDEgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMgSW5jCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLAotCQkJCU1TIDg3MjMKLQkJCQlEYWxsYXMgVGV4YXMgNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUQyICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDEyRDIgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlNUyA4NzIzCi0JCQkJRGFsbGFzIFRleGFzIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1EMyAgIChoZXgpCQlaZXR0YSBTeXN0ZW1zLCBJbmMuCi0wMDEyRDMgICAgIChiYXNlIDE2KQkJWmV0dGEgU3lzdGVtcywgSW5jLgotCQkJCTE3MzExIDEzNXRoIEFWRSBORQotCQkJCVN1aXRlIEI5MDAKLQkJCQlXb29kaW52aWxsZSBXQSA5ODA3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRDQgICAoaGV4KQkJUHJpbmNldG9uIFRlY2hub2xvZ3ksIEx0ZAotMDAxMkQ0ICAgICAoYmFzZSAxNikJCVByaW5jZXRvbiBUZWNobm9sb2d5LCBMdGQKLQkJCQlLLkEuSS4gQmxkZy4gM0YKLQkJCQkzLTktNSBJd2Ftb3RvLWNobwotCQkJCUNoaXlvZGFrdSBUb2t5byAxMDEtMDAzMgotCQkJCUpBUEFOCi0KLTAwLTEyLUQ1ICAgKGhleCkJCU1vdGlvbiBSZWFsaXR5IEluYy4KLTAwMTJENSAgICAgKGJhc2UgMTYpCQlNb3Rpb24gUmVhbGl0eSBJbmMuCi0JCQkJMjAwIE5vcnRoIENvYmIgUGFya3dheQotCQkJCVN1aXRlIDE0MAotCQkJCU1hcmlldHRhIEdBIDMwMDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1ENiAgIChoZXgpCQlKaWFuZ3N1IFlpdG9uZyBIaWdoLVRlY2ggQ28uLEx0ZAotMDAxMkQ2ICAgICAoYmFzZSAxNikJCUppYW5nc3UgWWl0b25nIEhpZ2gtVGVjaCBDby4sTHRkCi0JCQkJTm8gMjE2IEh1YW5naGUgUm9hZAotCQkJCUNoYW5nc2h1IEppYW5nc3UgMjE1NTAwCi0JCQkJQ0hJTkEKLQotMDAtMTItRDcgICAoaGV4KQkJSW52ZW50byBOZXR3b3JrcywgSW5jLgotMDAxMkQ3ICAgICAoYmFzZSAxNikJCUludmVudG8gTmV0d29ya3MsIEluYy4KLQkJCQkzNzcgU2ltYXJhbm8gRHJpdmUKLQkJCQlNYXJsYm9yb3VnaCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRDggICAoaGV4KQkJSW50ZXJuYXRpb25hbCBHYW1lcyBTeXN0ZW0gQ28uLCBMdGQuCi0wMDEyRDggICAgIChiYXNlIDE2KQkJSW50ZXJuYXRpb25hbCBHYW1lcyBTeXN0ZW0gQ28uLCBMdGQuCi0JCQkJTm8uMTMwLCBXdS1HdW5nIFJkLiwgV3UtR3UgSW5kdXN0cmlhbCBQYXJrLAotCQkJCVRhaXBlaSAgMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi1EOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDEyRDkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1EQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDEyREEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1EQiAgIChoZXgpCQlaSUVITCBpbmR1c3RyaWUtZWxla3Ryb25payBHbWJIICsgQ28gS0cKLTAwMTJEQiAgICAgKGJhc2UgMTYpCQlaSUVITCBpbmR1c3RyaWUtZWxla3Ryb25payBHbWJIICsgQ28gS0cKLQkJCQlEYWltbGVyc3RyLiAxMwotCQkJCVNjaHdhZWJpc2NoIEhhbGwgIDc0NTIzCi0JCQkJR0VSTUFOWQotCi0wMC0xMi1EQyAgIChoZXgpCQlTdW5Db3JwIEluZHVzdHJpYWwgTGltaXRlZAotMDAxMkRDICAgICAoYmFzZSAxNikJCVN1bkNvcnAgSW5kdXN0cmlhbCBMaW1pdGVkCi0JCQkJTm8uNjggR3Vvd2VpIFJvYWQsCi0JCQkJTGlhbnRhbmcgSW5kdXN0cmlhbCBEaXN0cmljdCwgU2hlbnpoZW4sIAotCQkJCUNISU5BCi0KLTAwLTEyLUREICAgKGhleCkJCVNoZW5ncXUgSW5mb3JtYXRpb24gVGVjaG5vbG9neSAoU2hhbmdoYWkpIENvLiwgTHRkLgotMDAxMkREICAgICAoYmFzZSAxNikJCVNoZW5ncXUgSW5mb3JtYXRpb24gVGVjaG5vbG9neSAoU2hhbmdoYWkpIENvLiwgTHRkLgotCQkJCU5vLjEgQnVpbGRpbmcsTm8uIDY5MCBCaWJvIFJvYWQsUHVkb25nIE5ldyBBcmVhCi0JCQkJU2hhbmdoYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLTAwLTEyLURFICAgKGhleCkJCVJhZGlvIENvbXBvbmVudHMgU3dlZGVuIEFCCi0wMDEyREUgICAgIChiYXNlIDE2KQkJUmFkaW8gQ29tcG9uZW50cyBTd2VkZW4gQUIKLQkJCQlWaWRlcm9nYXRhbiAzQgotCQkJCUtpc3RhIFN0b2NraG9sbSAxNjQyMgotCQkJCVNXRURFTgotCi0wMC0xMi1ERiAgIChoZXgpCQlOb3ZvbWF0aWMgQUcKLTAwMTJERiAgICAgKGJhc2UgMTYpCQlOb3ZvbWF0aWMgQUcKLQkJCQlXaWVuZXIgU3RyYXNzZSAxNTgKLQkJCQlHdW1wb2xkc2tpcmNoZW4gTmllZGVy9nN0ZXJyZWljaCBBLTIzNTIKLQkJCQlBVVNUUklBCi0KLTAwLTEyLUUwICAgKGhleCkJCUNvZGFuIExpbWl0ZWQKLTAwMTJFMCAgICAgKGJhc2UgMTYpCQlDb2RhbiBMaW1pdGVkCi0JCQkJODEgR3JhdmVzIFN0cmVldAotCQkJCU5ld3RvbiBTb3V0aCA1MDc0Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTEyLUUxICAgKGhleCkJCUFsbGlhbnQgTmV0d29ya3MsIEluYwotMDAxMkUxICAgICAoYmFzZSAxNikJCUFsbGlhbnQgTmV0d29ya3MsIEluYwotCQkJCTEyNTkgQmlyY2h3b29kIERyLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRTIgICAoaGV4KQkJQUxBWEFMQSBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAxMkUyICAgICAoYmFzZSAxNikJCUFMQVhBTEEgTmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQk4OTAgS2FzaGltYWRhLCBTYWl3YWkta3UKLQkJCQlLYXdhc2FraS1zaGkgS2FuYWdhd2Eta2VuIDIxMi0wMDU4Ci0JCQkJSkFQQU4KLQotMDAtMTItRTMgICAoaGV4KQkJQWdhdC1SVCwgTHRkLgotMDAxMkUzICAgICAoYmFzZSAxNikJCUFnYXQtUlQsIEx0ZC4KLQkJCQkxMDEgcHIuIE1pcmEgIzEyMjAsCi0JCQkJTW9zY293ICAxMjkwODUKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTItRTQgICAoaGV4KQkJWklFSEwgaW5kdXN0cmllLWVsZWN0cm9uaWsgR21iSCArIENvIEtHCi0wMDEyRTQgICAgIChiYXNlIDE2KQkJWklFSEwgaW5kdXN0cmllLWVsZWN0cm9uaWsgR21iSCArIENvIEtHCi0JCQkJRGFpbWxlcnN0ci4gMTMKLQkJCQlTY2h3YWViaXNjaCBIYWxsICA3NDUyMwotCQkJCUdFUk1BTlkKLQotMDAtMTItRTUgICAoaGV4KQkJVGltZSBBbWVyaWNhLCBJbmMuCi0wMDEyRTUgICAgIChiYXNlIDE2KQkJVGltZSBBbWVyaWNhLCBJbmMuCi0JCQkJNTEgVy4gM3JkIFN0cmVldCAjMzEwCi0JCQkJVGVtcGUgQVogODUyODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUU2ICAgKGhleCkJCVNQRUNURUMgQ09NUFVURVIgQ08uLCBMVEQuCi0wMDEyRTYgICAgIChiYXNlIDE2KQkJU1BFQ1RFQyBDT01QVVRFUiBDTy4sIExURC4KLQkJCQk2Ri4sIE5vLiA5MiwgTmFua2luZyBFLiBSZC4gU2VjLiA1LAotCQkJCVRhaXBlaSAgMTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi1FNyAgIChoZXgpCQlQcm9qZWN0ZWsgTmV0d29ya2luZyBFbGVjdHJvbmljcyBDb3JwLgotMDAxMkU3ICAgICAoYmFzZSAxNikJCVByb2plY3RlayBOZXR3b3JraW5nIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJNUYtOSwgTm8uIDE2LCBMYW5lIDYwOSwgU2VjLiA1LCBDaHVuZ3NoaW4gUmQuLAotCQkJCVNhbmNodW5nLCBUYWlwZWkgIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItRTggICAoaGV4KQkJRnJhdW5ob2ZlciBJTVMKLTAwMTJFOCAgICAgKGJhc2UgMTYpCQlGcmF1bmhvZmVyIElNUwotCQkJCUZpbmtlbnN0cmFzc2UgNjEKLQkJCQlEdWlzYnVyZyBOUlcgNDcwNTcKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLUU5ICAgKGhleCkJCUFiYmV5IFN5c3RlbXMgTHRkCi0wMDEyRTkgICAgIChiYXNlIDE2KQkJQWJiZXkgU3lzdGVtcyBMdGQKLQkJCQlMZXZlbCA0LCAyMjAgV2lsbGlzIFN0Ci0JCQkJUE8gQm94IDI3LTQ5NwotCQkJCVdlbGxpbmd0b24gIDYwMzAKLQkJCQlORVcgWkVBTEFORAotCi0wMC0xMi1FQSAgIChoZXgpCQlUcmFuZQotMDAxMkVBICAgICAoYmFzZSAxNikJCVRyYW5lCi0JCQkJNDgzMyBXaGl0ZSBCZWFyIFBhcmt3YXkKLQkJCQlTdC4gUGF1bCBNTiA1NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRUIgICAoaGV4KQkJUjJESSwgTExDCi0wMDEyRUIgICAgIChiYXNlIDE2KQkJUjJESSwgTExDCi0JCQkJMjU3NSBORSBLYXRocnluIFN0LgotCQkJCVN1aXRlIDE0Ci0JCQkJSGlsbHNib3JvIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1FQyAgIChoZXgpCQlNb3ZhY29sb3IgYi52LgotMDAxMkVDICAgICAoYmFzZSAxNikJCU1vdmFjb2xvciBiLnYuCi0JCQkJS29wZXJzbGFnZXJzc3RyYWF0IDMxCi0JCQkJU25lZWsgRnJpZXNsYW5kIDg2MDEgV0wKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMi1FRCAgIChoZXgpCQlBVkcgQWR2YW5jZWQgVGVjaG5vbG9naWVzCi0wMDEyRUQgICAgIChiYXNlIDE2KQkJQVZHIEFkdmFuY2VkIFRlY2hub2xvZ2llcwotCQkJCTQxNDAgVXRpY2EgUmlkZ2UgUm9hZAotCQkJCUJldHRlbmRvcmYgSUEgNTI3MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUVFICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDEyRUUgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMTItRUYgICAoaGV4KQkJT25lQWNjZXNzIFNBCi0wMDEyRUYgICAgIChiYXNlIDE2KQkJT25lQWNjZXNzIFNBCi0JCQkJMjggcnVlIGRlIGxhIFJlZG91dGUKLQkJCQlGb250ZW5heSBhdXggUm9zZXMgIDkyMjYwCi0JCQkJRlJBTkNFCi0KLTAwLTEyLUYwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxMkYwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS10ZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTItRjEgICAoaGV4KQkJSUZPVEVDCi0wMDEyRjEgICAgIChiYXNlIDE2KQkJSUZPVEVDCi0JCQkJWkFDIENoYW1wZmV1aWxsZXQKLQkJCQlCUDI0NwotCQkJCVZPSVJPTiAgMzg1MDcKLQkJCQlGUkFOQ0UKLQotMDAtMTItRjIgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLTAwMTJGMiAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotCQkJCTE3NDUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1GMyAgIChoZXgpCQljb25uZWN0Qmx1ZSBBQgotMDAxMkYzICAgICAoYmFzZSAxNikJCWNvbm5lY3RCbHVlIEFCCi0JCQkJTm9ycmEgVmFsbGdhdGFuIDY0Ci0JCQkJTWFsbW9lICBTRS0yMTEgMjIKLQkJCQlTV0VERU4KLQotMDAtMTItRjQgICAoaGV4KQkJQmVsY28gSW50ZXJuYXRpb25hbCBDby4sTHRkLgotMDAxMkY0ICAgICAoYmFzZSAxNikJCUJlbGNvIEludGVybmF0aW9uYWwgQ28uLEx0ZC4KLQkJCQkyMTIsIFllb2tvay1Eb25nLCBXb25taS1ndQotCQkJCVB1Y2h1bi1TaSBLeW9uZ2tpLURvIDQyMC0xMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItRjUgICAoaGV4KQkJSW1hcmRhIE5ldyBaZWFsYW5kIExpbWl0ZWQKLTAwMTJGNSAgICAgKGJhc2UgMTYpCQlJbWFyZGEgTmV3IFplYWxhbmQgTGltaXRlZAotCQkJCVN1aXRlIEcxNiwgTmF0aW9uYWwgSW5ub3ZhdGlvbiBDZW50cmUsCi0JCQkJQXVzdHJhbGlhbiBUZWNobm9sb2d5IFBhcmssCi0JCQkJRXZlbGVpZ2ggTlNXICAgMjAxNQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTEyLUY2ICAgKGhleCkJCU1ESyBDTy4sTFRELgotMDAxMkY2ICAgICAoYmFzZSAxNikJCU1ESyBDTy4sTFRELgotCQkJCTItNi0yNyBJYmFyYW1lCi0JCQkJS2FzaGl3YXpha2kgQ2l0eSBOaWlnYXRhIDk0NTEzNDEKLQkJCQlKQVBBTgotCi0wMC0xMi1GNyAgIChoZXgpCQlYaWFtZW4gWGluZ2xpYW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDEyRjcgICAgIChiYXNlIDE2KQkJWGlhbWVuIFhpbmdsaWFuIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCVhpbmdsaWFuIEVsZWN0cm9uaWNzIChYaW5ndGVsKSBCdWlsZGluZyxDaHVhbmd4aW4gUm9hZCwKLQkJCQlUb3JjaCBIaS1UZWNoIEluZHVzdHJpYWwgRGlzdHJpY3QsCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi0wMC0xMi1GOCAgIChoZXgpCQlXTkkgUmVzb3VyY2VzLCBMTEMKLTAwMTJGOCAgICAgKGJhc2UgMTYpCQlXTkkgUmVzb3VyY2VzLCBMTEMKLQkJCQkyMTQ2IEJlcmluZyBEcml2ZQotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzEtMjAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRjkgICAoaGV4KQkJVVJZVSBTRUlTQUtVLCBMVEQuCi0wMDEyRjkgICAgIChiYXNlIDE2KQkJVVJZVSBTRUlTQUtVLCBMVEQuCi0JCQkJMS0yLTExCi0JCQkJRlVLQUUtTUlOQU1JCi0JCQkJSElHQVNISU5BUkktS1UgT1NBS0EgNTM3LTAwMDIKLQkJCQlKQVBBTgotCi0wMC0xMi1GQSAgIChoZXgpCQlUSFggTFRECi0wMDEyRkEgICAgIChiYXNlIDE2KQkJVEhYIExURAotCQkJCTUyMDEgR3JlYXQgQW1lcmljYSBQYXJrd2F5Ci0JCQkJU3VpdGUgMzIwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUZCICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTAwMTJGQiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJNDE2LCBNYWV0YW4tM0RvbmcsIFllb25ndG9uZy1HdQotCQkJCVN1d29uLUNpdHkgR3llb25nZ2ktRG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi1GQyAgIChoZXgpCQlQTEFORVQgU3lzdGVtIENvLixMVEQKLTAwMTJGQyAgICAgKGJhc2UgMTYpCQlQTEFORVQgU3lzdGVtIENvLixMVEQKLQkJCQk0dGggRmxvb3IsIERhZWhhbiBCL0QsIDg3My0yOSwKLQkJCQlCYW5nYmFlNC1Eb25nLCBTZW9jaG8tS3UsCi0JCQkJU2VvdWwgIDEzNy0wNjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItRkQgICAoaGV4KQkJT1BUSU1VUyBJQyBTLkEuCi0wMDEyRkQgICAgIChiYXNlIDE2KQkJT1BUSU1VUyBJQyBTLkEuCi0JCQkJTkFXT0pPV1NLQSAxMTgKLQkJCQlOT1dZIFNBQ1ogTUFMT1BPTFNLQSAzMy0zMDAKLQkJCQlQT0xBTkQKLQotMDAtMTItRkUgICAoaGV4KQkJTGVub3ZvIE1vYmlsZSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgTHRkLgotMDAxMkZFICAgICAoYmFzZSAxNikJCUxlbm92byBNb2JpbGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLQkJCQlYaWFtZW4gT3ZlcnNlYXMgQ2hpbmVzZSBFbGVjdHJvbmljIFNjaWVuY2UgUGFyayxIdW9qdSBIaWdoIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgWm9uZQotCQkJCVhJQSBNRU4gRlUgSklBTiAzNjEwMDkKLQkJCQlDSElOQQotCi0wMC0xMi1GRiAgIChoZXgpCQlMZWx5IEluZHVzdHJpZXMgTi5WLgotMDAxMkZGICAgICAoYmFzZSAxNikJCUxlbHkgSW5kdXN0cmllcyBOLlYuCi0JCQkJV2V2ZXJza2FkZSAxMTAKLQkJCQlNYWFzc2x1aXMgWnVpZC1Ib2xsYW5kIDMxNDdQQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTEzLTAwICAgKGhleCkJCUlULUZBQ1RPUlksIElOQy4KLTAwMTMwMCAgICAgKGJhc2UgMTYpCQlJVC1GQUNUT1JZLCBJTkMuCi0JCQkJMS0xNi0yNiBUQUtBR0kgTUlOQU1JLUtVCi0JCQkJRlVLVU9LQS1TSEkgRlVLVU9LQS1LRU4gODE1LTAwMDQKLQkJCQlKQVBBTgotCi0wMC0xMy0wMSAgIChoZXgpCQlJcm9uR2F0ZSBTLkwuCi0wMDEzMDEgICAgIChiYXNlIDE2KQkJSXJvbkdhdGUgUy5MLgotCQkJCUNcQWxjYWxhIDI2OCwgcHJpbWVyYSBwbGFudGEKLQkJCQlNYWRyaWQgIDI4MDI3Ci0JCQkJU1BBSU4KLQotMDAtMTMtMDIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDEzMDIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLXRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xMy0wMyAgIChoZXgpCQlHYXRlQ29ubmVjdCBUZWNobm9sb2dpZXMgR21iSAotMDAxMzAzICAgICAoYmFzZSAxNikJCUdhdGVDb25uZWN0IFRlY2hub2xvZ2llcyBHbWJICi0JCQkJQWdhc3RyYXNzZSAyNCBSMgotCQkJCTEyNDg5IEJlcmxpbiAgMTI0ODkKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTA0ICAgKGhleCkJCUZsYWlyY29tbSBUZWNobm9sb2dpZXMgQ28uIExURAotMDAxMzA0ICAgICAoYmFzZSAxNikJCUZsYWlyY29tbSBUZWNobm9sb2dpZXMgQ28uIExURAotCQkJCTIwODggSHVhc2hhbiBSb2FkCi0JCQkJU291dGggSHVpeWluIEJsZGcuICMyMzA2Ci0JCQkJU2hhbmdoYWkgIDIwMDAzMAotCQkJCUNISU5BCi0KLTAwLTEzLTA1ICAgKGhleCkJCUVwaWNvbSwgSW5jLgotMDAxMzA1ICAgICAoYmFzZSAxNikJCUVwaWNvbSwgSW5jLgotCQkJCVBPIEJveCAxNjEzMAotCQkJCU9ha2xhbmQgQ0EgOTQ2MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTA2ICAgKGhleCkJCUFsd2F5cyBPbiBXaXJlbGVzcwotMDAxMzA2ICAgICAoYmFzZSAxNikJCUFsd2F5cyBPbiBXaXJlbGVzcwotCQkJCTM3MDEgS2lyYnkgRHIKLQkJCQlTdWl0ZSAxMDkwCi0JCQkJSG91c3RvbiBUWCA3NzA5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMDcgICAoaGV4KQkJUGFyYXZpcnR1YWwgQ29ycG9yYXRpb24KLTAwMTMwNyAgICAgKGJhc2UgMTYpCQlQYXJhdmlydHVhbCBDb3Jwb3JhdGlvbgotCQkJCTI5NTMgQnVua2VyIEhpbGwgTGFuZQotCQkJCVN1aXRlIDQwNgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0wOCAgIChoZXgpCQlOdXZlcmEgRnVlbCBDZWxscwotMDAxMzA4ICAgICAoYmFzZSAxNikJCU51dmVyYSBGdWVsIENlbGxzCi0JCQkJMTI5IENvbmNvcmQgUm9hZCwgIzEKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTA5ICAgKGhleCkJCU9jZWFuIEJyb2FkYmFuZCBOZXR3b3JrcwotMDAxMzA5ICAgICAoYmFzZSAxNikJCU9jZWFuIEJyb2FkYmFuZCBOZXR3b3JrcwotCQkJCTIwNzggV2Fsc2ggQXZlLCBTdWl0ZSBCCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMEEgICAoaGV4KQkJTm9ydGVsCi0wMDEzMEEgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTMtMEIgICAoaGV4KQkJTWV4dGFsIEIuVi4KLTAwMTMwQiAgICAgKGJhc2UgMTYpCQlNZXh0YWwgQi5WLgotCQkJCURlIFRpZW5kZW4gNDgKLQkJCQlOdWVuZW4gTm9vcmQgQnJhYmFudCA1Njc0VEIKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMy0wQyAgIChoZXgpCQlIRiBTeXN0ZW0gQ29ycG9yYXRpb24KLTAwMTMwQyAgICAgKGJhc2UgMTYpCQlIRiBTeXN0ZW0gQ29ycG9yYXRpb24KLQkJCQkxNTIwLTEgQXl1a2FpCi0JCQkJU2hpcmF0YWthLU1hY2hpCi0JCQkJTmlzaGlva2l0YW1hLUd1biBZYW1hZ2F0YS1LZW4gOTkyLTA3NzEKLQkJCQlKQVBBTgotCi0wMC0xMy0wRCAgIChoZXgpCQlHQUxJTEVPIEFWSU9OSUNBCi0wMDEzMEQgICAgIChiYXNlIDE2KQkJR0FMSUxFTyBBVklPTklDQQotCQkJCVZJQUxFIEVVUk9QQQotCQkJCSBORVJWSUFOTyBNSUxBTk8gMjAwMTQKLQkJCQlJVEFMWQotCi0wMC0xMy0wRSAgIChoZXgpCQlGb2N1c3JpdGUgQXVkaW8gRW5naW5lZXJpbmcgTGltaXRlZAotMDAxMzBFICAgICAoYmFzZSAxNikJCUZvY3Vzcml0ZSBBdWRpbyBFbmdpbmVlcmluZyBMaW1pdGVkCi0JCQkJMTkgTGluY29sbiBSb2FkCi0JCQkJQ3Jlc3NleCBCdXNpbmVzcyBQYXJrCi0JCQkJSGlnaCBXeWNvbWJlIEJ1Y2tzIEhQMTIgM0ZYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTMtMEYgICAoaGV4KQkJRUdFTUVOIEJpbGdpc2F5YXIgTXVoIFNhbiB2ZSBUaWMgTFREIFNUSQotMDAxMzBGICAgICAoYmFzZSAxNikJCUVHRU1FTiBCaWxnaXNheWFyIE11aCBTYW4gdmUgVGljIExURCBTVEkKLQkJCQlGZXZ6aSBDYWttYWsgMiBTb2sgMzEvQQotCQkJCUtJWklMQVkKLQkJCQlBTktBUkEgQ0FOS0FZQSAwNjQ0MAotCQkJCVRVUktFWQotCi0wMC0xMy0xMCAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTAwMTMxMCAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5Ci0JCQkJSXJ2aW5lIENBIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0xMSAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDEzMTEgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJU3V3YW5lZSBHQSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMTIgICAoaGV4KQkJQW1lZGlhIE5ldHdvcmtzIEluYy4KLTAwMTMxMiAgICAgKGJhc2UgMTYpCQlBbWVkaWEgTmV0d29ya3MgSW5jLgotCQkJCTEwMSBDcmF3Zm9yZHMgQ29ybmVyIFJkCi0JCQkJSG9sbWRlbCBOSiAwNzczMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMTMgICAoaGV4KQkJR3VhbmdaaG91IFBvc3QgJiBUZWxlY29tIEVxdWlwbWVudCBsdGQKLTAwMTMxMyAgICAgKGJhc2UgMTYpCQlHdWFuZ1pob3UgUG9zdCAmIFRlbGVjb20gRXF1aXBtZW50IGx0ZAotCQkJCTEzOSMgWmhvbmdzaGFuIEF2ZQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjMwCi0JCQkJQ0hJTkEKLQotMDAtMTMtMTQgICAoaGV4KQkJQXNpYW1ham9yIEluYy4KLTAwMTMxNCAgICAgKGJhc2UgMTYpCQlBc2lhbWFqb3IgSW5jLgotCQkJCTZGLTksIE5vLiAyNjgsIExpYW4tQ2hlbmcgUmQuLCBKdW5naGUgQ2l0eSwKLQkJCQlUYWlwZWkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtMTUgICAoaGV4KQkJU09OWSBDb21wdXRlciBFbnRlcnRhaW5tZW50IGluYywKLTAwMTMxNSAgICAgKGJhc2UgMTYpCQlTT05ZIENvbXB1dGVyIEVudGVydGFpbm1lbnQgaW5jLAotCQkJCTItNi0yMSBNaW5hbWktQW95YW1hLAotCQkJCU1pbmF0by1LdSBUb2t5byAxMDctMDA2MgotCQkJCUpBUEFOCi0KLTAwLTEzLTE2ICAgKGhleCkJCUwtUy1CIEJyb2FkY2FzdCBUZWNobm9sb2dpZXMgR21iSAotMDAxMzE2ICAgICAoYmFzZSAxNikJCUwtUy1CIEJyb2FkY2FzdCBUZWNobm9sb2dpZXMgR21iSAotCQkJCUd1c3Rhdi1TdHJlc2VtYW5uLVN0ci4gOAotCQkJCUJpbmdlbiBSaGVpbmxhbmQtUGZhbHogNTU0MTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTE3ICAgKGhleCkJCUdOIE5ldGNvbSBhcwotMDAxMzE3ICAgICAoYmFzZSAxNikJCUdOIE5ldGNvbSBhcwotCQkJCU1ldGFsYnVlbiA2NgotCQkJCVAuTy5Cb3ggMjAxCi0JCQkJQmFsbGVydXAgU2tvdmx1bmRlIERLLTI3NTAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLTE4ICAgKGhleCkJCURHU1RBVElPTiBDby4sIEx0ZC4KLTAwMTMxOCAgICAgKGJhc2UgMTYpCQlER1NUQVRJT04gQ28uLCBMdGQuCi0JCQkJUm0uNDAxLCBCbGRnLkEsIEJ1bmRhbmcgVGVjaG5vIFBhcmsgMTUwLCBZYXRhcC1Eb25nLCBCdW5kYW5nLUd1LCBTdW5nbmFtLVNpLCBHeXVuZ2dpLURvLCA0NjMtNzYwLCBLb3JlYQotCQkJCVN1bmduYW0gR3l1bmdnaSA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTE5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTMxOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTFBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTMxQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTFCICAgKGhleCkJCUJlQ2VsbCBJbm5vdmF0aW9ucyBDb3JwLgotMDAxMzFCICAgICAoYmFzZSAxNikJCUJlQ2VsbCBJbm5vdmF0aW9ucyBDb3JwLgotCQkJCTEyRi05LCBOby4gNzksIFNoaW4tVGFpIDV0aCBSZCBTZWMgMSwKLQkJCQlTaGloLWNoaWgsIFRhaXBlaSAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTFDICAgKGhleCkJCUxpdGVUb3VjaCwgSW5jLgotMDAxMzFDICAgICAoYmFzZSAxNikJCUxpdGVUb3VjaCwgSW5jLgotCQkJCTM0MDAgU291dGggV2VzdCBUZW1wbGUKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMUQgICAoaGV4KQkJU2NhbnZhZWd0IEludGVybmF0aW9uYWwgQS9TCi0wMDEzMUQgICAgIChiYXNlIDE2KQkJU2NhbnZhZWd0IEludGVybmF0aW9uYWwgQS9TCi0JCQkJUC5PLlBlZGVyc2VucyB2ZWogMTgKLQkJCQlBYXJodXMgSnlsbGFuZCA4MjAwIE4KLQkJCQlERU5NQVJLCi0KLTAwLTEzLTFFICAgKGhleCkJCVBlaWtlciBhY3VzdGljIEdtYkggJiBDby4gS0cKLTAwMTMxRSAgICAgKGJhc2UgMTYpCQlQZWlrZXIgYWN1c3RpYyBHbWJIICYgQ28uIEtHCi0JCQkJTWF4LVBsYW5jay1TdHJh32UgMzIKLQkJCQlGcmllZHJpY2hzZG9yZiBIZXNzZW4gNjEzODEKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTFGICAgKGhleCkJCU54dFBoYXNlIFQmRCwgQ29ycC4KLTAwMTMxRiAgICAgKGJhc2UgMTYpCQlOeHRQaGFzZSBUJkQsIENvcnAuCi0JCQkJMzA0MCBFLiBCcm9hZHdheQotCQkJCVZhbmNvdXZlciBCQyBWNU0gMVo0Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLTIwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxMzIwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS10ZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTMtMjEgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDEzMjEgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTIyICAgKGhleCkJCURBUSBFbGVjdHJvbmljcywgSW5jLgotMDAxMzIyICAgICAoYmFzZSAxNikJCURBUSBFbGVjdHJvbmljcywgSW5jLgotCQkJCTI2MkIgT2xkIE5ldyBCcnVuc3dpY2sgUm9hZAotCQkJCVBpc2NhdGF3YXkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTIzICAgKGhleCkJCUNhcCBDby4sIEx0ZC4KLTAwMTMyMyAgICAgKGJhc2UgMTYpCQlDYXAgQ28uLCBMdGQuCi0JCQkJMTFGLDY4NC0yLGRldW5nY2hvbiAzLWRvbmcsZ2FuZ3Nlby1ndQotCQkJCVNlb3VsICAxNTctNzU0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTI0ICAgKGhleCkJCVNjaG5laWRlciBFbGVjdHJpYyBVbHRyYSBUZXJtaW5hbAotMDAxMzI0ICAgICAoYmFzZSAxNikJCVNjaG5laWRlciBFbGVjdHJpYyBVbHRyYSBUZXJtaW5hbAotCQkJCUluZHVzdHJpcGFya2VuIDMyCi0JCQkJQ29wZW5oYWdlbiAgMjc1MAotCQkJCURFTk1BUksKLQotMDAtMTMtMjUgICAoaGV4KQkJQ29ydGluYSBTeXN0ZW1zIEluYwotMDAxMzI1ICAgICAoYmFzZSAxNikJCUNvcnRpbmEgU3lzdGVtcyBJbmMKLQkJCQk4NDAgVyBDYWxpZm9ybmlhIEF2ZSwgU3VpdGUgMTAwCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0yNiAgIChoZXgpCQlFQ00gU3lzdGVtcyBMdGQKLTAwMTMyNiAgICAgKGJhc2UgMTYpCQlFQ00gU3lzdGVtcyBMdGQKLQkJCQlFbGxpZm9vdCBQYXJrCi0JCQkJQnVyc3R3aWNrCi0JCQkJSFVMTCBFYXN0IFlvcmtzaGlyZSBIVTEyIDlEWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEzLTI3ICAgKGhleCkJCURhdGEgQWNxdWlzaXRpb25zIGxpbWl0ZWQKLTAwMTMyNyAgICAgKGJhc2UgMTYpCQlEYXRhIEFjcXVpc2l0aW9ucyBsaW1pdGVkCi0JCQkJODQgR2Fzc29uIHN0cmVldAotCQkJCUNocmlzdGNodXJjaCAgCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMTMtMjggICAoaGV4KQkJV2VzdGVjaCBLb3JlYSBJbmMuLAotMDAxMzI4ICAgICAoYmFzZSAxNikJCVdlc3RlY2ggS29yZWEgSW5jLiwKLQkJCQk1NDgtOSwgR2Fqd2EzLURvbmcsU2VvLWt1LAotCQkJCUluY2hlb24gIDQwNC04MTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtMjkgICAoaGV4KQkJVlNTVCBDby4sIExURAotMDAxMzI5ICAgICAoYmFzZSAxNikJCVZTU1QgQ28uLCBMVEQKLQkJCQlzdWl0IDMyMDIsIEtvcmVhIFdvcmxkIFRyYWRlIENlbnRlciAxNTktMQotCQkJCVNhbXN1bmctRG9uZywgS2FuZ25hbS1HdQotCQkJCVNlb3VsICAxMzUtNzI5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTJBICAgKGhleCkJCVNpdHJvbmljcyBUZWxlY29tIFNvbHV0aW9ucwotMDAxMzJBICAgICAoYmFzZSAxNikJCVNpdHJvbmljcyBUZWxlY29tIFNvbHV0aW9ucwotCQkJCU1pY2hlbHNrYSA2MAotCQkJCVByYWd1ZSBQcmFndWUgNCAtIE1pY2hsZSAxNDAgMDAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0xMy0yQiAgIChoZXgpCQlQaG9lbml4IERpZ2l0YWwKLTAwMTMyQiAgICAgKGJhc2UgMTYpCQlQaG9lbml4IERpZ2l0YWwKLQkJCQk3NjUwIEVhc3QgRXZhbnMgUmQuIEJsZGcuIEEKLQkJCQlTY290dHNkYWxlIEF6IDg1MjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0yQyAgIChoZXgpCQlNQVogQnJhbmRlbmJ1cmcgR21iSAotMDAxMzJDICAgICAoYmFzZSAxNikJCU1BWiBCcmFuZGVuYnVyZyBHbWJICi0JCQkJTWllbGVzdHJh32UgMgotCQkJCVdlcmRlciBCcmFuZGVuYnVyZyAxNDU0MgotCQkJCUdFUk1BTlkKLQotMDAtMTMtMkQgICAoaGV4KQkJaVdpc2UgQ29tbXVuaWNhdGlvbnMKLTAwMTMyRCAgICAgKGJhc2UgMTYpCQlpV2lzZSBDb21tdW5pY2F0aW9ucwotCQkJCVVuaXQgM0MsIEFyZGVuIEdyb3ZlCi0JCQkJUmFjZWNvdXJzZSBSZCxNb250YWd1IEdhcmRlbnMKLQkJCQlDYXBlIFRvd24gIDc0NDEKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMTMtMkUgICAoaGV4KQkJSVRpYW4gQ29wb3JhdGlvbgotMDAxMzJFICAgICAoYmFzZSAxNikJCUlUaWFuIENvcG9yYXRpb24KLQkJCQk0RiBZb3VuZ2hvIEJkLjE2MDUtMSBTZW9jaG8tZG9uZwotCQkJCVNlb2Noby1ndQotCQkJCVNlb3VsICAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTJGICAgKGhleCkJCUludGVyYWN0ZWsKLTAwMTMyRiAgICAgKGJhc2UgMTYpCQlJbnRlcmFjdGVrCi0JCQkJU2lnbWFsIDIgQkxERyAjQy0zMTksIDE4IEt1bWktZG9uZwotCQkJCVB1bmRhbmcta3UKLQkJCQlTZW9uZ25hbSBLeXVuZy1naSA0NjMtNzQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTMwICAgKGhleCkJCUVVUk8gUFJPVEVDVElPTiBTVVJWRUlMTEFOQ0UKLTAwMTMzMCAgICAgKGJhc2UgMTYpCQlFVVJPIFBST1RFQ1RJT04gU1VSVkVJTExBTkNFCi0JCQkJMzAgUnVlIGR1IERvdWJzCi0JCQkJU1RSQVNCT1VSRyAgNjcxMDAKLQkJCQlGUkFOQ0UKLQotMDAtMTMtMzEgICAoaGV4KQkJQ2VsbFBvaW50IENvbm5lY3QKLTAwMTMzMSAgICAgKGJhc2UgMTYpCQlDZWxsUG9pbnQgQ29ubmVjdAotCQkJCUJpbGxlZHZlaiA0Ci0JCQkJQ29wZW5oYWdlbiAgMjEwMAotCQkJCURFTk1BUksKLQotMDAtMTMtMzIgICAoaGV4KQkJQmVpamluZyBUb3BzZWMgTmV0d29yayBTZWN1cml0eSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMzMyICAgICAoYmFzZSAxNikJCUJlaWppbmcgVG9wc2VjIE5ldHdvcmsgU2VjdXJpdHkgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlIdWFrb25nIFRvd2VyCi0JCQkJTm8uIDEgU2hhbmdkaSBFYXN0IFJvYWQKLQkJCQlIYWlkaWFuIERpc3RyaWN0IEJlaWppbmcgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMTMtMzMgICAoaGV4KQkJQmF1ZFRlYyBDb3Jwb3JhdGlvbgotMDAxMzMzICAgICAoYmFzZSAxNikJCUJhdWRUZWMgQ29ycG9yYXRpb24KLQkJCQkxMkYsIE5PLjE4MSwgU2VjLiAgMS4gVGF0dW5nIFJkLiwKLQkJCQlIc2ljaGloIFRhaXBlaSBIc2llbiAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTM0ICAgKGhleCkJCUFya2Fkb3MsIEluYy4KLTAwMTMzNCAgICAgKGJhc2UgMTYpCQlBcmthZG9zLCBJbmMuCi0JCQkJOTQ4IFVTIEhXWSAyMgotCQkJCU5vcnRoIFBsYWluZmllbGQgTkogMDcwNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTM1ICAgKGhleCkJCVZTIEluZHVzdHJ5IEJlcmhhZAotMDAxMzM1ICAgICAoYmFzZSAxNikJCVZTIEluZHVzdHJ5IEJlcmhhZAotCQkJCVBsbyA0NywgU2VuYWkgSW5kLiBFc3QuIElJLAotCQkJCVNlbmFpIEpvaG9yIDgxNDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTMtMzYgICAoaGV4KQkJVGlhbmppbiA3MTIgQ29tbXVuaWNhdGlvbiBCcm9hZGNhc3RpbmcgY28uLCBsdGQuCi0wMDEzMzYgICAgIChiYXNlIDE2KQkJVGlhbmppbiA3MTIgQ29tbXVuaWNhdGlvbiBCcm9hZGNhc3RpbmcgY28uLCBsdGQuCi0JCQkJTm8uMTg1LCBYaW5kYSBSb2FkLCBIZWJlaSBEaXN0cmljdAotCQkJCVRpYW5qaW4gIDMwMDE0MAotCQkJCUNISU5BCi0KLTAwLTEzLTM3ICAgKGhleCkJCU9yaWVudCBQb3dlciBIb21lIE5ldHdvcmsgTHRkLgotMDAxMzM3ICAgICAoYmFzZSAxNikJCU9yaWVudCBQb3dlciBIb21lIE5ldHdvcmsgTHRkLgotCQkJCTMwNyBIYXJib3VyIENlbnRyZSwgVG93ZXIgMSwKLQkJCQkxIEhvayBDaGV1bmcgU3RyZWV0LCBIdW5nIEhvbQotCQkJCUhPTkcgS09ORwotCi0wMC0xMy0zOCAgIChoZXgpCQlGUkVTRU5JVVMtVklBTAotMDAxMzM4ICAgICAoYmFzZSAxNikJCUZSRVNFTklVUy1WSUFMCi0JCQkJTGUgR3JhbmQgQ2hlbWluCi0JCQkJQlJFWklOUyAgMzg1OTAKLQkJCQlGUkFOQ0UKLQotMDAtMTMtMzkgICAoaGV4KQkJRUwtTUUgQUcKLTAwMTMzOSAgICAgKGJhc2UgMTYpCQlFTC1NRSBBRwotCQkJCUdld2VyYmVyaW5nIDEKLQkJCQlBdSBpLiBkLiBIYWxsZXJ0YXUgQmF5ZXJuIDg0MDcyCi0JCQkJR0VSTUFOWQotCi0wMC0xMy0zQSAgIChoZXgpCQlWYWRhVGVjaCBJbmMuCi0wMDEzM0EgICAgIChiYXNlIDE2KQkJVmFkYVRlY2ggSW5jLgotCQkJCTExNTQwIFMuIEVhc3Rlcm4gQXZlbnVlCi0JCQkJSGVuZGVyc29uIE5ldmFkYSA4OTA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtM0IgICAoaGV4KQkJU3BlZWQgRHJhZ29uIE11bHRpbWVkaWEgTGltaXRlZAotMDAxMzNCICAgICAoYmFzZSAxNikJCVNwZWVkIERyYWdvbiBNdWx0aW1lZGlhIExpbWl0ZWQKLQkJCQlSb29tIDEzMTIsIFZhbnRhIEluZHVzdHJpYWwgQ2VudHJlLAotCQkJCTMzIFRhaSBMaW4gUGFpIFJvYWQsCi0JCQkJS3dhaSBDaHVuZyBOLlQuIAotCQkJCUhPTkcgS09ORwotCi0wMC0xMy0zQyAgIChoZXgpCQlRVUlOVFJPTiBTWVNURU1TIElOQy4KLTAwMTMzQyAgICAgKGJhc2UgMTYpCQlRVUlOVFJPTiBTWVNURU1TIElOQy4KLQkJCQkyMTA1IFNPLiBCTE9TU0VSIFJPQUQKLQkJCQlTQU5UQSBNQVJJQSBDQUxJRk9STklBIDkzNDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0zRCAgIChoZXgpCQlNaWNybyBNZW1vcnkgQ3VydGlzcyBXcmlnaHQgQ28KLTAwMTMzRCAgICAgKGJhc2UgMTYpCQlNaWNybyBNZW1vcnkgQ3VydGlzcyBXcmlnaHQgQ28KLQkJCQk5NTQwIFZhc3NhciBBdmVudWUKLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0zRSAgIChoZXgpCQlNZXRhU3dpdGNoCi0wMDEzM0UgICAgIChiYXNlIDE2KQkJTWV0YVN3aXRjaAotCQkJCTE0MTEgSGFyYm9yIEJheSBQYXJrd2F5Ci0JCQkJU3VpdGUgMTAwMwotCQkJCUFsYW1lZGEgQ0EgOTQ1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTNGICAgKGhleCkJCUVwcGVuZG9yZiBJbnN0cnVtZW50ZSBHbWJICi0wMDEzM0YgICAgIChiYXNlIDE2KQkJRXBwZW5kb3JmIEluc3RydW1lbnRlIEdtYkgKLQkJCQlCYXJraGF1c2Vud2VnIDEKLQkJCQlBYnRsLiBJSC1GRQotCQkJCUhhbWJ1cmcgREUgMjIzMzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTQwICAgKGhleCkJCUFELkVMIHMuci5sLgotMDAxMzQwICAgICAoYmFzZSAxNikJCUFELkVMIHMuci5sLgotCQkJCXZpYSBTLiBQZXJ0aW5pLDUKLQkJCQlNYXJ0ZWxsYWdvIFZFTkVaSUEgMzAwMzAKLQkJCQlJVEFMWQotCi0wMC0xMy00MSAgIChoZXgpCQlTaGFuZG9uZyBOZXcgQmVpeWFuZyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMdGQKLTAwMTM0MSAgICAgKGJhc2UgMTYpCQlTaGFuZG9uZyBOZXcgQmVpeWFuZyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOTy4xMSBYaW53ZWkgUm9hZAotCQkJCVdlaWhhaSBjaXR5IFNoYW5kb25nIDI2NDIwMAotCQkJCUNISU5BCi0KLTAwLTEzLTQyICAgKGhleCkJCVZpc2lvbiBSZXNlYXJjaCwgSW5jLgotMDAxMzQyICAgICAoYmFzZSAxNikJCVZpc2lvbiBSZXNlYXJjaCwgSW5jLgotCQkJCTEwMCBEZXkgUm9hZAotCQkJCVdheW5lIE5KIDA3NDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy00MyAgIChoZXgpCQlNYXRzdXNoaXRhIEVsZWN0cm9uaWMgQ29tcG9uZW50cyAoRXVyb3BlKSBHbWJICi0wMDEzNDMgICAgIChiYXNlIDE2KQkJTWF0c3VzaGl0YSBFbGVjdHJvbmljIENvbXBvbmVudHMgKEV1cm9wZSkgR21iSAotCQkJCVplcHBlbGluc3RyYd9lIDE5Ci0JCQkJTHVlbmVidXJnIE5pZWRlcnNhY2hzZW4gMjEzMzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTQ0ICAgKGhleCkJCUZhcmdvIEVsZWN0cm9uaWNzIEluYy4KLTAwMTM0NCAgICAgKGJhc2UgMTYpCQlGYXJnbyBFbGVjdHJvbmljcyBJbmMuCi0JCQkJNjUzMyBGbHlpbmcgQ2xvdWQgRHJpdmUKLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTQ1ICAgKGhleCkJCUVhdG9uIENvcnBvcmF0aW9uCi0wMDEzNDUgICAgIChiYXNlIDE2KQkJRWF0b24gQ29ycG9yYXRpb24KLQkJCQk0MjAxIE5vcnRoIDI3dGggU3RyZWV0Ci0JCQkJTWlsd2F1a2VlIFdpc2NvbnNpbiA1MzIxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNDYgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDEzNDYgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJMkYsIE5vLjIzMy0yLCBQYW8tQ2hpYW8gUm9hZAotCQkJCUhzaW4tVGllbiwgVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtNDcgICAoaGV4KQkJQmx1ZVRyZWUgV2lyZWxlc3MgRGF0YSBJbmMuCi0wMDEzNDcgICAgIChiYXNlIDE2KQkJQmx1ZVRyZWUgV2lyZWxlc3MgRGF0YSBJbmMuCi0JCQkJMjQyNSA0NmUgQXZlbnVlCi0JCQkJTGFjaGluZSBRdWViZWMgSDhUIDNDOQotCQkJCUNBTkFEQQotCi0wMC0xMy00OCAgIChoZXgpCQlBcnRpbGEgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDEzNDggICAgIChiYXNlIDE2KQkJQXJ0aWxhIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTJGLiwgTm8uMSwgQWxsZXkgOCwgU2l3ZWkgTGFuZSwgWmhvbmd6aGVuZyBSZC4sCi0JCQkJWGluZGlhbiBDaXR5IFRhaXBlaSBDb3VudHkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy00OSAgIChoZXgpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotMDAxMzQ5ICAgICAoYmFzZSAxNikJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJTm8uIDYsIElubm92YXRpb24gUm9hZCBJSSBTY2llbmNlIFBhcmsKLQkJCQlIc2luLUNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy00QSAgIChoZXgpCQlFbmdpbSwgSW5jLgotMDAxMzRBICAgICAoYmFzZSAxNikJCUVuZ2ltLCBJbmMuCi0JCQkJNDAgTmFnb2cgUGFyawotCQkJCUFjdG9uIE1BIDAxNzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy00QiAgIChoZXgpCQlUb0dvbGRlbk5ldCBUZWNobm9sb2d5IEluYy4KLTAwMTM0QiAgICAgKGJhc2UgMTYpCQlUb0dvbGRlbk5ldCBUZWNobm9sb2d5IEluYy4KLQkJCQk1Ri0xIE5vLjI1LFB1LWRpbmcuLAotCQkJCUhzaW4tQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTRDICAgKGhleCkJCVlEVCBUZWNobm9sb2d5IEludGVybmF0aW9uYWwKLTAwMTM0QyAgICAgKGJhc2UgMTYpCQlZRFQgVGVjaG5vbG9neSBJbnRlcm5hdGlvbmFsCi0JCQkJMkYuLCBOby4yMTgsIFJ1ZWlndWFuZyBSZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWksICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTREICAgKGhleCkJCUlQQyBzeXN0ZW1zCi0wMDEzNEQgICAgIChiYXNlIDE2KQkJSVBDIHN5c3RlbXMKLQkJCQlub29yZGVpbmRlIDcyCi0JCQkJbGVpbXVpZGVuIG5vb3JkaG9sbGFuZCAyNDUxIEFICi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTMtNEUgICAoaGV4KQkJVmFsb3ggU3lzdGVtcywgSW5jLgotMDAxMzRFICAgICAoYmFzZSAxNikJCVZhbG94IFN5c3RlbXMsIEluYy4KLQkJCQkjNzA0LCBBY2UgVHdpbiB0b3dlciAyLCAyMTItMzAsIEd1cm8tM2RvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTc3OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy00RiAgIChoZXgpCQlUcmFuemVvIFdpcmVsZXNzIFRlY2hub2xvZ2llcyBJbmMuCi0wMDEzNEYgICAgIChiYXNlIDE2KQkJVHJhbnplbyBXaXJlbGVzcyBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTIwMTU1IFN0ZXdhcnQgQ3Jlcy4KLQkJCQlNYXBsZSBSaWRnZSBCcml0aXNoIENvbHVtYmlhIFYyWCAwVDYKLQkJCQlDQU5BREEKLQotMDAtMTMtNTAgICAoaGV4KQkJU2lsdmVyIFNwcmluZyBOZXR3b3JrcywgSW5jCi0wMDEzNTAgICAgIChiYXNlIDE2KQkJU2lsdmVyIFNwcmluZyBOZXR3b3JrcywgSW5jCi0JCQkJNTc1IEJyb2Fkd2F5IFN0cmVldAotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNTEgICAoaGV4KQkJTmlsZXMgQXVkaW8gQ29ycG9yYXRpb24KLTAwMTM1MSAgICAgKGJhc2UgMTYpCQlOaWxlcyBBdWRpbyBDb3Jwb3JhdGlvbgotCQkJCTEyMzMxIFNXIDEzMHRoIFN0cmVldAotCQkJCU1pYW1pIEZMIDMzMTg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy01MiAgIChoZXgpCQlOYXp0ZWMsIEluYy4KLTAwMTM1MiAgICAgKGJhc2UgMTYpCQlOYXp0ZWMsIEluYy4KLQkJCQk4MjAgUGFyayBUd28gRHIuCi0JCQkJU3VnYXIgTGFuZCBUWCA3NzQ3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNTMgICAoaGV4KQkJSFlEQUMgRmlsdGVydGVjaG5payBHTUJICi0wMDEzNTMgICAgIChiYXNlIDE2KQkJSFlEQUMgRmlsdGVydGVjaG5payBHTUJICi0JCQkJSW5kdXN0cmllZ2ViaWV0Ci0JCQkJU3VsemJhY2gvU2FhciBTYWFybGFuZCA2NjI4MAotCQkJCUdFUk1BTlkKLQotMDAtMTMtNTQgICAoaGV4KQkJWmNvbWF4IFRlY2hub2xvZ2llcywgSW5jLgotMDAxMzU0ICAgICAoYmFzZSAxNikJCVpjb21heCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk5OCBGb3JkIFJvYWQKLQkJCQlTdWl0ZSAzLUYKLQkJCQlEZW52aWxsZSBOSiAwNzgzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNTUgICAoaGV4KQkJVE9NRU4gQ3liZXItYnVzaW5lc3MgU29sdXRpb25zLCBJbmMuCi0wMDEzNTUgICAgIChiYXNlIDE2KQkJVE9NRU4gQ3liZXItYnVzaW5lc3MgU29sdXRpb25zLCBJbmMuCi0JCQkJMi0xMS0xOSBLb2huYW4KLQkJCQlNaW5hdG9rdS1rdQotCQkJCVRPS1lPICAxMDgtMDA3NQotCQkJCUpBUEFOCi0KLTAwLTEzLTU2ICAgKGhleCkJCUZMSVIgUmFkaWF0aW9uIEdtYkgKLTAwMTM1NiAgICAgKGJhc2UgMTYpCQlGTElSIFJhZGlhdGlvbiBHbWJICi0JCQkJUGllcGVyc2JlcmcgMTIsCi0JCQkJU29saW5nZW4gTlJXIDQyNjUzCi0JCQkJR0VSTUFOWQotCi0wMC0xMy01NyAgIChoZXgpCQlTb3lhbCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMzU3ICAgICAoYmFzZSAxNikJCVNveWFsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTBGLCBOby4gMjcsIExhbmUgMTY5LCBLYW5nbmluZyBTdC4sIFNoaWpyIENpdHksCi0JCQkJMkYsIE5vLiAyNywgTGFuZSAxNjksIEthbmduaW5nIFN0LiwgU2hpanIgQ2l0eSwKLQkJCQlUYWlwZWkgIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtNTggICAoaGV4KQkJUmVhbG0gU3lzdGVtcywgSW5jLgotMDAxMzU4ICAgICAoYmFzZSAxNikJCVJlYWxtIFN5c3RlbXMsIEluYy4KLQkJCQk5MzUwIFNvdXRoIDUzNSBFYXN0Ci0JCQkJOXRoIEZsb29yCi0JCQkJU2FuZHkgVXRhaCA4NDA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNTkgICAoaGV4KQkJUHJvVGVsZXZpc2lvbiBUZWNobm9sb2dpZXMgQS9TCi0wMDEzNTkgICAgIChiYXNlIDE2KQkJUHJvVGVsZXZpc2lvbiBUZWNobm9sb2dpZXMgQS9TCi0JCQkJTWFyaWVsdW5kdmVqIDE2LDIKLQkJCQlIZXJsZXYgQ29wZW5oYWdlbiAyNzMwCi0JCQkJREVOTUFSSwotCi0wMC0xMy01QSAgIChoZXgpCQlQcm9qZWN0IFQmRSBMaW1pdGVkCi0wMDEzNUEgICAgIChiYXNlIDE2KQkJUHJvamVjdCBUJkUgTGltaXRlZAotCQkJCVJvb20gM0MsIDIvRi4gV2FoIFNoaW5nIENlbnRlciwKLQkJCQkxMSBTaGluZyBZaXAgU3RyZWV0LAotCQkJCUt3dW4gVG9uZywgS293bG9vbiwgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTEzLTVCICAgKGhleCkJCVBhbmVsTGluayBDaW5lbWEsIExMQwotMDAxMzVCICAgICAoYmFzZSAxNikJCVBhbmVsTGluayBDaW5lbWEsIExMQwotCQkJCTEwNzAgRSBBcnF1ZXMgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy01QyAgIChoZXgpCQlPblNpdGUgU3lzdGVtcywgSW5jLgotMDAxMzVDICAgICAoYmFzZSAxNikJCU9uU2l0ZSBTeXN0ZW1zLCBJbmMuCi0JCQkJMzkwMCBGcmVlZG9tIENpcmNsZQotCQkJCVN1aXRlIDEwMgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0LTEyMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTVEICAgKGhleCkJCU5UVFBDIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDEzNUQgICAgIChiYXNlIDE2KQkJTlRUUEMgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkzLTI1IEthbmRhIEppbmJvLWNobwotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTAwNTEKLQkJCQlKQVBBTgotCi0wMC0xMy01RSAgIChoZXgpCQlFQUIvUldJL0sKLTAwMTM1RSAgICAgKGJhc2UgMTYpCQlFQUIvUldJL0sKLQkJCQlG5HL2Z2F0YW4gNgotCQkJCVN0b2NraG9sbSBLaXN0YSAxNjQgODAKLQkJCQlTV0VERU4KLQotMDAtMTMtNUYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMzVGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNjAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMzYwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNjEgICAoaGV4KQkJQmlvc3BhY2UgQ28uLCBMdGQuCi0wMDEzNjEgICAgIChiYXNlIDE2KQkJQmlvc3BhY2UgQ28uLCBMdGQuCi0JCQkJMTB0aCBGbG9vciwgUG9vbmdsaW0gQmxkZywgODIzIFllb2tzYW0gMS1kb25nCi0JCQkJR2FuZ25hbS1ndSBTZW91bCAxMzUtNzg0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTYyICAgKGhleCkJCVNoaW5IZXVuZyBQcmVjaXNpb24gQ28uLCBMdGQuCi0wMDEzNjIgICAgIChiYXNlIDE2KQkJU2hpbkhldW5nIFByZWNpc2lvbiBDby4sIEx0ZC4KLQkJCQlEYWVIYSBCbGRnLiA0MDEKLQkJCQkxMDEtNyBTaGluZ2lsRG9uZwotCQkJCVlvdW5nRHVuZ1BvR3UgU2VvdWwgMTUwLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy02MyAgIChoZXgpCQlWZXJhc2NhcGUsIEluYy4KLTAwMTM2MyAgICAgKGJhc2UgMTYpCQlWZXJhc2NhcGUsIEluYy4KLQkJCQkxMTAxIDMxc3QgU3QuLCBTdWl0ZSAjMTkwCi0JCQkJRG93bmVycyBHcm92ZSBJTCA2MDUxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNjQgICAoaGV4KQkJUGFyYWRpZ20gVGVjaG5vbG9neSBJbmMuLgotMDAxMzY0ICAgICAoYmFzZSAxNikJCVBhcmFkaWdtIFRlY2hub2xvZ3kgSW5jLi4KLQkJCQkzRiwgTm8uIDI4NSwgU2VjLjIsIFRpLURpbmcgQmx2ZCBOZWktSHUsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTY1ICAgKGhleCkJCU5vcnRlbAotMDAxMzY1ICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLTY2ICAgKGhleCkJCU5ldHVyaXR5IFRlY2hub2xvZ2llcyBJbmMuCi0wMDEzNjYgICAgIChiYXNlIDE2KQkJTmV0dXJpdHkgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk4MzAgU3Rld2FydCBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNjcgICAoaGV4KQkJTmFyYXlvbi4gQ28uLCBMdGQuCi0wMDEzNjcgICAgIChiYXNlIDE2KQkJTmFyYXlvbi4gQ28uLCBMdGQuCi0JCQkJIzUwMiBIeW9jaGFuZyBUL1cgMTgxLTMKLQkJCQlKYW1zaWwtZG9uZywgU29uZ3BhLWd1Ci0JCQkJU2VvdWwgIDEzOC0yMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtNjggICAoaGV4KQkJTWFlcnNrIERhdGEgRGVmZW5jZQotMDAxMzY4ICAgICAoYmFzZSAxNikJCU1hZXJzayBEYXRhIERlZmVuY2UKLQkJCQlFbGxlZ2FhcmR2ZWogMjUKLQkJCQlTb2VuZGVyYm9yZyBESyA2NDAwCi0JCQkJREVOTUFSSwotCi0wMC0xMy02OSAgIChoZXgpCQlIb25kYSBFbGVjdHJvbiBDby4sIExFRC4KLTAwMTM2OSAgICAgKGJhc2UgMTYpCQlIb25kYSBFbGVjdHJvbiBDby4sIExFRC4KLQkJCQlLYW5lbWF0c3UgQnVpbGRpbmcgMyBGbG9vcgotCQkJCTItMTQtMSwgS3lvYmFzaGkgIAotCQkJCUNodW8ta3UgVG9reW8gMTA0LTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xMy02QSAgIChoZXgpCQlIYWNoIExhbmdlIFNBCi0wMDEzNkEgICAgIChiYXNlIDE2KQkJSGFjaCBMYW5nZSBTQQotCQkJCTYsIHJvdXRlIGRlIENvbXBvaXMKLQkJCQlDUCAyMTIKLQkJCQlWRVNFTkFaIEdFTkVWQSAxMjIyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTMtNkIgICAoaGV4KQkJRS1URUMKLTAwMTM2QiAgICAgKGJhc2UgMTYpCQlFLVRFQwotCQkJCTItMTctMTQtNTAzIEhha2F0YWVraW1hZQotCQkJCUhha2F0YWt1IEZ1a3Vva2FzaGkKLQkJCQlGdWt1b2thIEZ1a3Vva2FrZW4gODEyLTAwMTEKLQkJCQlKQVBBTgotCi0wMC0xMy02QyAgIChoZXgpCQlUb21Ub20KLTAwMTM2QyAgICAgKGJhc2UgMTYpCQlUb21Ub20KLQkJCQlPb3N0ZXJkb2tzc3RyYWF0IDExNAotCQkJCTEwMTEgREsgQW1zdGVyZGFtIAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTEzLTZEICAgKGhleCkJCVRlbnRhY3VsdXMgQUIKLTAwMTM2RCAgICAgKGJhc2UgMTYpCQlUZW50YWN1bHVzIEFCCi0JCQkJU3R1ZGllZ2FuZ2VuIDMKLQkJCQlPc3RlcnN1bmQgSmFtdGxhbmQgU0UgLSA4MzEgNDAKLQkJCQlTV0VERU4KLQotMDAtMTMtNkUgICAoaGV4KQkJVGVjaG1ldHJvIENvcnAuCi0wMDEzNkUgICAgIChiYXNlIDE2KQkJVGVjaG1ldHJvIENvcnAuCi0JCQkJNEYuIERvbmdhbSBCL0QuLCAyNjQtNSwgWWFuZ0phZS1Eb25nCi0JCQkJU2VvY2hvLUt1Ci0JCQkJU2VvdWwgIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtNkYgICAoaGV4KQkJUGFja2V0TW90aW9uLCBJbmMuCi0wMDEzNkYgICAgIChiYXNlIDE2KQkJUGFja2V0TW90aW9uLCBJbmMuCi0JCQkJMjEyMSBFbCBDYW1pbm8gUmVhbAotCQkJCTEwdGggRmxvb3IKLQkJCQlTYW4gTWF0ZW8gQ0EgOTQ0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTcwICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDEzNzAgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLTcxICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDEzNzEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy03MiAgIChoZXgpCQlEZWxsIEluYy4KLTAwMTM3MiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy03MyAgIChoZXgpCQlCTHdhdmUgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTAwMTM3MyAgICAgKGJhc2UgMTYpCQlCTHdhdmUgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLQkJCQkyM0ZHSCwgQmxvY2sgQSxaaGVuWWUgQnVpbGRpbmcgLCBCYW9BbiBOYW4gUm9hZCAsIEx1b0h1ICwgU2hlbnpoZW4gLCBDaGluYQotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi0wMC0xMy03NCAgIChoZXgpCQlBdGhlcm9zIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDEzNzQgICAgIChiYXNlIDE2KQkJQXRoZXJvcyBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTU0ODAgR3JlYXQgQW1lcmljYSBQYXJrd2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTc1ICAgKGhleCkJCUFtZXJpY2FuIFNlY3VyaXR5IFByb2R1Y3RzIENvLgotMDAxMzc1ICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIFNlY3VyaXR5IFByb2R1Y3RzIENvLgotCQkJCTExOTI1IFBhY2lmaWMgYXZlLgotCQkJCUZvbnRhbmEgQ0EgOTIzMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTc2ICAgKGhleCkJCVRhYm9yIEVsZWN0cm9uaWNzIEx0ZC4KLTAwMTM3NiAgICAgKGJhc2UgMTYpCQlUYWJvciBFbGVjdHJvbmljcyBMdGQuCi0JCQkJOSBIYXRhdHNpYSBTdC4KLQkJCQlUZWwgSGFuYW4gIDIwMzAyCi0JCQkJSVNSQUVMCi0KLTAwLTEzLTc3ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ08uLCBMVEQKLTAwMTM3NyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENPLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4gM0RvbmcsIFllb25ndG9uZy1HdQotCQkJCVN1d29uIENpdHksIEdleW9uZ2dpIERvLCBLb3JlYQotCQkJCVN1d29uIEdleW9uZ2dpIDQ0Mzc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy03OCAgIChoZXgpCQlRU0FOIFRlY2hub2xvZ3ksIEluYy4KLTAwMTM3OCAgICAgKGJhc2UgMTYpCQlRU0FOIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyRi4sIE5vLjMxLCBMYW5lIDU4MywgUnVlaUd1YW5nIFJkLiwgTmVpaHUgRGlzdC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtNzkgICAoaGV4KQkJUE9OREVSIElORk9STUFUSU9OIElORFVTVFJJRVMgTFRELgotMDAxMzc5ICAgICAoYmFzZSAxNikJCVBPTkRFUiBJTkZPUk1BVElPTiBJTkRVU1RSSUVTIExURC4KLQkJCQkxNEYsTm8uNzcsbGFuZTcwMCwgQ2h1bmctQ2hlbmcgUm9hZAotCQkJCUhzaW4tVGllbiBDaXR5IFRhaXBlaSBIc2llbiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTdBICAgKGhleCkJCU5ldHZveCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMzdBICAgICAoYmFzZSAxNikJCU5ldHZveCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLjIxLTEgU2VjLiAxIENodW5nIEh1YSBXZXN0IFJvYWQKLQkJCQlUYWluYW4gIDcwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtN0IgICAoaGV4KQkJTW92b24gQ29ycG9yYXRpb24KLTAwMTM3QiAgICAgKGJhc2UgMTYpCQlNb3ZvbiBDb3Jwb3JhdGlvbgotCQkJCTV0aCwgSHl1bmp1ayBCL0QKLQkJCQkxNDAtMjgsIFNhbXN1bmctZG9uZywgS2FuZ25hbS1rdQotCQkJCVNlb3VsICAxMzUtMDkyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTdDICAgKGhleCkJCUthaWNvbSBjby4sIEx0ZC4KLTAwMTM3QyAgICAgKGJhc2UgMTYpCQlLYWljb20gY28uLCBMdGQuCi0JCQkJIzEwOSwgR2F5YW5nIFRlY2hubyBUb3duIDE0ODcsIEdheWFuZy1kb25nLEthbmdzby1ndQotCQkJCVNlb3VsICAxNTctODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTdEICAgKGhleCkJCUR5bmFsYWIsIEluYy4KLTAwMTM3RCAgICAgKGJhc2UgMTYpCQlEeW5hbGFiLCBJbmMuCi0JCQkJNTU1IExhbmNhc3RlciBBdmUuCi0JCQkJUmV5bm9sZHNidXJnIE9IIDQzMDY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy03RSAgIChoZXgpCQlDb3JFZGdlIE5ldHdvcmtzLCBJbmMuCi0wMDEzN0UgICAgIChiYXNlIDE2KQkJQ29yRWRnZSBOZXR3b3JrcywgSW5jLgotCQkJCTc2MDAgQm9vbmUgQXZlIE4KLQkJCQlTdWl0ZSAxCi0JCQkJQnJvb2tseW4gUGFyayBNTiA1NTQyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtN0YgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMzdGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtODAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMzgwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtODEgICAoaGV4KQkJQ0hJUFMgJiBTeXN0ZW1zLCBJbmMuCi0wMDEzODEgICAgIChiYXNlIDE2KQkJQ0hJUFMgJiBTeXN0ZW1zLCBJbmMuCi0JCQkJNDc1MCBQYXRyaWNrIEhlbnJ5IERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtODIgICAoaGV4KQkJQ2V0YWNlYSBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAxMzgyICAgICAoYmFzZSAxNikJCUNldGFjZWEgTmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQkzNzA4IFdlc3QgMzZ0aCBBdmVudWUKLQkJCQlWYW5jb3V2ZXIgQnJpdGlzaCBDb2x1bWJpYSBWNk4gMlM0Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLTgzICAgKGhleCkJCUFwcGxpY2F0aW9uIFRlY2hub2xvZ2llcyBhbmQgRW5naW5lZXJpbmcgUmVzZWFyY2ggTGFib3JhdG9yeQotMDAxMzgzICAgICAoYmFzZSAxNikJCUFwcGxpY2F0aW9uIFRlY2hub2xvZ2llcyBhbmQgRW5naW5lZXJpbmcgUmVzZWFyY2ggTGFib3JhdG9yeQotCQkJCVNoaW5qdWt1IDEtY2hvbWUgQmxkZy4KLQkJCQkxLTEwLTQsIFNoaW5qdWt1Ci0JCQkJU2hpbmp1a3Uta3UgVG9reW8gMTYwLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0xMy04NCAgIChoZXgpCQlBZHZhbmNlZCBNb3Rpb24gQ29udHJvbHMKLTAwMTM4NCAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBNb3Rpb24gQ29udHJvbHMKLQkJCQkzODA1IENhbGxlIFRlY2F0ZQotCQkJCUNhbWFyaWxsbyBDYWxpZm9ybmlhIDkzMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy04NSAgIChoZXgpCQlBZGQtT24gVGVjaG5vbG9neSBDby4sIExURC4KLTAwMTM4NSAgICAgKGJhc2UgMTYpCQlBZGQtT24gVGVjaG5vbG9neSBDby4sIExURC4KLQkJCQkxRiwgTm8uMTEsIExhbmUgMjA2LCBEYS1BbiBSb2FkIFNlYy4gMSwKLQkJCQlUYWlwZWkgIDEwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtODYgICAoaGV4KQkJQUJCIEluYy4vVG90YWxmbG93Ci0wMDEzODYgICAgIChiYXNlIDE2KQkJQUJCIEluYy4vVG90YWxmbG93Ci0JCQkJNzA1MSBJbmR1c3RyaWFsIEJsdmQuCi0JCQkJQmFydGxlc3ZpbGxlIE9LIDc0MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy04NyAgIChoZXgpCQkyN00gVGVjaG5vbG9naWVzIEFCCi0wMDEzODcgICAgIChiYXNlIDE2KQkJMjdNIFRlY2hub2xvZ2llcyBBQgotCQkJCURpc2tldHRnYXRhbiAxMQotCQkJCUxpbmv2cGluZyAgUy01ODMgMzUKLQkJCQlTV0VERU4KLQotMDAtMTMtODggICAoaGV4KQkJV2lNZWRpYSBBbGxpYW5jZQotMDAxMzg4ICAgICAoYmFzZSAxNikJCVdpTWVkaWEgQWxsaWFuY2UKLQkJCQkyNDAwIENhbWlubyBSYW1vbgotCQkJCVN1aXRlIDM3NQotCQkJCVNhbiBSYW1vbiBDQSA5NDU4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtODkgICAoaGV4KQkJUmVkZXMgZGUgVGVsZWZvbu1hIE3zdmlsIFMuQS4KLTAwMTM4OSAgICAgKGJhc2UgMTYpCQlSZWRlcyBkZSBUZWxlZm9u7WEgTfN2aWwgUy5BLgotCQkJCUMvUHVlcnRvIGRlIGxhIE1vcmN1ZXJhIDE0IEI0Ci0JCQkJTGVnYW7pcyBNYWRyaWQgMjg5MTgKLQkJCQlTUEFJTgotCi0wMC0xMy04QSAgIChoZXgpCQlRSU5HREFPIEdPRVJURUsgRUxFQ1RST05JQ1MgQ08uLExURC4KLTAwMTM4QSAgICAgKGJhc2UgMTYpCQlRSU5HREFPIEdPRVJURUsgRUxFQ1RST05JQ1MgQ08uLExURC4KLQkJCQlSb29tIDYwNSxJbm5vdmF0aW9uIEJ1aWxkaW5nLEhpLXRlY2ggSW5kdXN0cmlhbCBQYXJrLAotCQkJCVFJTkdEQU8gU0hBTkRPTkcgMjY2MDYxCi0JCQkJQ0hJTkEKLQotMDAtMTMtOEIgICAoaGV4KQkJUGhhbnRvbSBUZWNobm9sb2dpZXMgTExDCi0wMDEzOEIgICAgIChiYXNlIDE2KQkJUGhhbnRvbSBUZWNobm9sb2dpZXMgTExDCi0JCQkJNzgyNSBGYXkgQXZlbnVlLCBTdWl0ZSAyMDAKLQkJCQlMYSBKb2xsYSBDQSA5MjAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtOEMgICAoaGV4KQkJS3VteW91bmcuQ28uTHRkCi0wMDEzOEMgICAgIChiYXNlIDE2KQkJS3VteW91bmcuQ28uTHRkCi0JCQkJU2VvdWwgS1kgYnVpbGRpbmcsIDQwLTE3IEhhbmdhbmcgUm8sIDNHYSwgWW91bmdzYW4tR3UKLQkJCQlTZW91bCAgMTQwLTg4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy04RCAgIChoZXgpCQlLaW5naG9sZAotMDAxMzhEICAgICAoYmFzZSAxNikJCUtpbmdob2xkCi0JCQkJMTFGLCBOby4gOTY1LCBKdW5namVuZyBSZC4KLQkJCQlKdW5naGUgVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtOEUgICAoaGV4KQkJRk9BQiBFbGVrdHJvbmlrIEFCCi0wMDEzOEUgICAgIChiYXNlIDE2KQkJRk9BQiBFbGVrdHJvbmlrIEFCCi0JCQkJU2Fua3QgSm9yZ2VucyBWYWcgOAotCQkJCUdvdGhlbmJ1cmcgIDQyMiA0OQotCQkJCVNXRURFTgotCi0wMC0xMy04RiAgIChoZXgpCQlBc2lhcm9jayBJbmNvcnBvcmF0aW9uCi0wMDEzOEYgICAgIChiYXNlIDE2KQkJQXNpYXJvY2sgSW5jb3Jwb3JhdGlvbgotCQkJCVAuTy4gQm94OTU3LCBPZmZzaG9yZSBJbmNvcnBvcmF0aW9ucyBDZW50cmUKLQkJCQlSb2FkIFRvd24gVG9ydG9sYSAKLQkJCQlWSVJHSU4gSVNMQU5EUywgQlJJVElTSAotCi0wMC0xMy05MCAgIChoZXgpCQlUZXJtdGVrIENvbXB1dGVyIENvLiwgTHRkCi0wMDEzOTAgICAgIChiYXNlIDE2KQkJVGVybXRlayBDb21wdXRlciBDby4sIEx0ZAotCQkJCTJGLCBOby4gMTAwLCBMaSBEZSBTdC4sCi0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy05MSAgIChoZXgpCQlPVUVOIENPLixMVEQuCi0wMDEzOTEgICAgIChiYXNlIDE2KQkJT1VFTiBDTy4sTFRELgotCQkJCUdvdGFuZGEgTlQgQmxkZy43RiwKLQkJCQk1LTIgSGlnYXNoaSBHb3RhbmRhIDQtY2hvbWUKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0xMy05MiAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLTAwMTM5MiAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmVudWUKLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTkzICAgKGhleCkJCVBhbnRhIFN5c3RlbXMsIEluYy4KLTAwMTM5MyAgICAgKGJhc2UgMTYpCQlQYW50YSBTeXN0ZW1zLCBJbmMuCi0JCQkJMjA0NTAgU3RldmVucyBDcmVlayBCbHZkLgotCQkJCVN1aXRlIDQwMAotCQkJCUN1cGVydGlubyBDYWxpZm9ybmlhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy05NCAgIChoZXgpCQlJbmZvaGFuZCBDby4sTHRkCi0wMDEzOTQgICAgIChiYXNlIDE2KQkJSW5mb2hhbmQgQ28uLEx0ZAotCQkJCUtyYW56LVRlY2hubyAjMTIwNywgNTQ0Mi0xLCBTYW5nZGFld29uLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjItODE5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTk1ICAgKGhleCkJCWNvbmdhdGVjIEFHCi0wMDEzOTUgICAgIChiYXNlIDE2KQkJY29uZ2F0ZWMgQUcKLQkJCQlBdXdpZXNlbnN0cmFzc2UgNQotCQkJCURlZ2dlbmRvcmYgIDk0NDY5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMy05NiAgIChoZXgpCQlBY2JlbCBQb2x5dGVjaCBJbmMuCi0wMDEzOTYgICAgIChiYXNlIDE2KQkJQWNiZWwgUG9seXRlY2ggSW5jLgotCQkJCU5vLjE1OSxTZWMuMywgVGFtLUtpbmcgUmQuLAotCQkJCVRhbXN1aSBUYWlwZWkgMjUxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy05NyAgIChoZXgpCQlYc2lnbyBTeXN0ZW1zLCBJbmMuCi0wMDEzOTcgICAgIChiYXNlIDE2KQkJWHNpZ28gU3lzdGVtcywgSW5jLgotCQkJCTk0MCBTdGV3YXJ0IERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy05OCAgIChoZXgpCQlUcmFmZmljU2ltIENvLixMdGQKLTAwMTM5OCAgICAgKGJhc2UgMTYpCQlUcmFmZmljU2ltIENvLixMdGQKLQkJCQkyMy05IE1pdGEtYmlydSAyRiwgQ2hpeW9kYSAzLWNob21lCi0JCQkJTmFrYS1rdSwgTmFnb3lhCi0JCQkJQWljaGkgTm9uIDQ2MC0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMTMtOTkgICAoaGV4KQkJU1RBQyBDb3Jwb3JhdGlvbi4KLTAwMTM5OSAgICAgKGJhc2UgMTYpCQlTVEFDIENvcnBvcmF0aW9uLgotCQkJCTItMTYtMzcsZnVqaW1pCi0JCQkJc2F5YW1hLXNoaSBzYWl0YW1hIDM1MC0xMzA2Ci0JCQkJSkFQQU4KLQotMDAtMTMtOUEgICAoaGV4KQkJSy11YmlxdWUgSUQgQ29ycC4KLTAwMTM5QSAgICAgKGJhc2UgMTYpCQlLLXViaXF1ZSBJRCBDb3JwLgotCQkJCVlhbWFzYW4gQmxkZy44RiwKLQkJCQlOaWhvbmJhc2hpIEhvbmNobzItNi0xMwotCQkJCUNodW8ta3UgVG9reW8gMTAzLTAwMjMKLQkJCQlKQVBBTgotCi0wMC0xMy05QiAgIChoZXgpCQlpb0lNQUdFIEx0ZC4KLTAwMTM5QiAgICAgKGJhc2UgMTYpCQlpb0lNQUdFIEx0ZC4KLQkJCQkzIE1hc2tpdCBTdHJlZXQKLQkJCQlIZXJ6bGl5YSBQaXR1YWNoIElMIDQ2NzMzCi0JCQkJSVNSQUVMCi0KLTAwLTEzLTlDICAgKGhleCkJCUV4YXZlcmEgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDEzOUMgICAgIChiYXNlIDE2KQkJRXhhdmVyYSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxOTUgTmV3IEhhbXBzaGlyZSBBdmVudWUKLQkJCQlTdWl0ZSAxNTUKLQkJCQlQb3J0c21vdXRoIE5IIDAzODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy05RCAgIChoZXgpCQlNYXJ2ZWxsIEhpc3BhbmEgUy5MLiAKLTAwMTM5RCAgICAgKGJhc2UgMTYpCQlNYXJ2ZWxsIEhpc3BhbmEgUy5MLiAKLQkJCQlDLyBDaGFybGVzIFJvYmVydCBEYXJ3aW4sIDIKLQkJCQlQYXJjIFRlY25vbG9naWMgUGF0ZXJuYSA0Njk4MAotCQkJCVNQQUlOCi0KLTAwLTEzLTlFICAgKGhleCkJCUNpYXJhIFRlY2hub2xvZ2llcyBJbmMuCi0wMDEzOUUgICAgIChiYXNlIDE2KQkJQ2lhcmEgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk5MzAwIFRyYW5zIENhbmFkYSBIaWdod2F5Ci0JCQkJU2FpbnQtTGF1cmVudCBRdWViZWMgSDRTIDFLNQotCQkJCUNBTkFEQQotCi0wMC0xMy05RiAgIChoZXgpCQlFbGVjdHJvbmljcyBEZXNpZ24gU2VydmljZXMsIENvLiwgTHRkLgotMDAxMzlGICAgICAoYmFzZSAxNikJCUVsZWN0cm9uaWNzIERlc2lnbiBTZXJ2aWNlcywgQ28uLCBMdGQuCi0JCQkJNS0xMC0yMCBUb2t1bWFydQotCQkJCUl0YWJhc2hpLWt1IFRva3lvIDE3NS0wMDgzCi0JCQkJSkFQQU4KLQotMDAtMTMtQTAgICAoaGV4KQkJQUxHT1NZU1RFTSBDby4sIEx0ZC4KLTAwMTNBMCAgICAgKGJhc2UgMTYpCQlBTEdPU1lTVEVNIENvLiwgTHRkLgotCQkJCTY1NiBrb2JpcmFvIG1paGFyYS1jaG8KLQkJCQlzYWthaSBvc2FrYSA1ODctMDAyMQotCQkJCUpBUEFOCi0KLTAwLTEzLUExICAgKGhleCkJCUNyb3cgRWxlY3Ryb25pYyBFbmdlbmVlcmluZwotMDAxM0ExICAgICAoYmFzZSAxNikJCUNyb3cgRWxlY3Ryb25pYyBFbmdlbmVlcmluZwotCQkJCTEyIEtpbm5lcmV0IHN0LgotCQkJCUFpcnBvcnQgQ2l0eSAgCi0JCQkJSVNSQUVMCi0KLTAwLTEzLUEyICAgKGhleCkJCU1heFN0cmVhbSwgSW5jCi0wMDEzQTIgICAgIChiYXNlIDE2KQkJTWF4U3RyZWFtLCBJbmMKLQkJCQkzNTUgU291dGggNTIwIFdlc3QgU3VpdGUgMTgwCi0JCQkJTGluZG9uIFV0IDg0MDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1BMyAgIChoZXgpCQlTaWVtZW5zIENvbSBDUEUgRGV2aWNlcwotMDAxM0EzICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQ29tIENQRSBEZXZpY2VzCi0JCQkJNDg0OSBBbHBoYSBSb2FkCi0JCQkJRGFsbGFzIFRleGFzIDc1MjQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1BNCAgIChoZXgpCQlLZXlFeWUgQ29tbXVuaWNhdGlvbnMKLTAwMTNBNCAgICAgKGJhc2UgMTYpCQlLZXlFeWUgQ29tbXVuaWNhdGlvbnMKLQkJCQk5Nzg1IEdvZXRoZQotCQkJCVNhY3JhbWVudG8gQ0EgOTU4MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUE1ICAgKGhleCkJCUdlbmVyYWwgU29sdXRpb25zLCBMVEQuCi0wMDEzQTUgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBTb2x1dGlvbnMsIExURC4KLQkJCQk1OTAyIFNvdmVyZWlnbiBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUE2ICAgKGhleCkJCUV4dHJpY29tIEx0ZAotMDAxM0E2ICAgICAoYmFzZSAxNikJCUV4dHJpY29tIEx0ZAotCQkJCUdsaWwgWWFtCi0JCQkJSGVyemxpYSAgNDY5MDUKLQkJCQlJU1JBRUwKLQotMDAtMTMtQTcgICAoaGV4KQkJQkFUVEVMTEUgTUVNT1JJQUwgSU5TVElUVVRFCi0wMDEzQTcgICAgIChiYXNlIDE2KQkJQkFUVEVMTEUgTUVNT1JJQUwgSU5TVElUVVRFCi0JCQkJNTA1IEtJTkcgQVZFCi0JCQkJQ09MVU1CVVMgT0hJTyA0MzIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQTggICAoaGV4KQkJVGFuaXN5cyBUZWNobm9sb2d5Ci0wMDEzQTggICAgIChiYXNlIDE2KQkJVGFuaXN5cyBUZWNobm9sb2d5Ci0JCQkJMTIyMDEgVGVjaG5vbG9neSBCbHZkLgotCQkJCVN1aXRlIDEyNQotCQkJCUF1c3RpbiBUWCA3ODcyNy02NjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1BOSAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0wMDEzQTkgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMgNS0xLTIKLQkJCQlLaXRhc2hpbmFnYXdhLAotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTAwLTEzLUFBICAgKGhleCkJCUFMUyAgJiBURUMgTHRkLgotMDAxM0FBICAgICAoYmFzZSAxNikJCUFMUyAgJiBURUMgTHRkLgotCQkJCTYgQi4gS2F6YWNoeWEgc3RyLgotCQkJCVNhcmF0b3YgU2FyYXRvdiByZWdpb24gNDEwNjAwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTEzLUFCICAgKGhleCkJCVRlbGVtb3RpdmUgQUcKLTAwMTNBQiAgICAgKGJhc2UgMTYpCQlUZWxlbW90aXZlIEFHCi0JCQkJQnJlaXR3aWVzZW4KLQkJCQlNdWVobGhhdXNlbiBCYWRlbiBXdWVydHRlbWJlcmcgNzMzNDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLUFDICAgKGhleCkJCVN1bm15dW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0wMDEzQUMgICAgIChiYXNlIDE2KQkJU3VubXl1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLQkJCQlMQVJHTy1QTEFaQSA4RiwgSmFuZ2hhbmctRG9uZwotCQkJCTg1Ny0xLCBJbHNhbi1LdQotCQkJCUtveWFuZyBLeXVuZ2tpIDQxMS04MzcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtQUQgICAoaGV4KQkJU2VuZG8gTHRkCi0wMDEzQUQgICAgIChiYXNlIDE2KQkJU2VuZG8gTHRkCi0JCQkJSGF0Y2hmb3JkIEJyb29rCi0JCQkJSGF0Y2hmb3JkIFdheQotCQkJCUJpcm1pbmdoYW0gV2VzdCBNaWRsYW5kcyBCMjYgM1JaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTMtQUUgICAoaGV4KQkJUmFkaWFuY2UgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDEzQUUgICAgIChiYXNlIDE2KQkJUmFkaWFuY2UgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMzUwIFd5bm4gRHIuCi0JCQkJSHVudHN2aWxsZSBBbGFiYW1hIDM1ODA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1BRiAgIChoZXgpCQlOVU1BIFRlY2hub2xvZ3ksSW5jLgotMDAxM0FGICAgICAoYmFzZSAxNikJCU5VTUEgVGVjaG5vbG9neSxJbmMuCi0JCQkJNEYsTm83NzgsU2VjIDQsUGF0Y2ggUmQuCi0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLUIwICAgKGhleCkJCUphYmxvdHJvbgotMDAxM0IwICAgICAoYmFzZSAxNikJCUphYmxvdHJvbgotCQkJCVBvZCBTa2Fsa291IDMzCi0JCQkJSmFibG9uZWMgbmFkIE5pc291ICA0NjYwMQotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTEzLUIxICAgKGhleCkJCUludGVsbGlnZW50IENvbnRyb2wgU3lzdGVtcyAoQXNpYSkgUHRlIEx0ZAotMDAxM0IxICAgICAoYmFzZSAxNikJCUludGVsbGlnZW50IENvbnRyb2wgU3lzdGVtcyAoQXNpYSkgUHRlIEx0ZAotCQkJCTcwIFViaSBDcmVzY2VudCAjMDEtMTIKLQkJCQlVYmkgVGVjaCBQYXJrCi0JCQkJNDA4NTcwCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTEzLUIyICAgKGhleCkJCUNhcmFsbG9uIExpbWl0ZWQKLTAwMTNCMiAgICAgKGJhc2UgMTYpCQlDYXJhbGxvbiBMaW1pdGVkCi0JCQkJU3R1ZGlvIEcyMCBTaGVwaGVyZHMgQnVpbGRpbmcKLQkJCQlSb2NrbGV5IFJvYWQKLQkJCQlMb25kb24gVzE0IDBEQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEzLUIzICAgKGhleCkJCUVjb20gQ29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTNCMyAgICAgKGJhc2UgMTYpCQlFY29tIENvbW11bmljYXRpb25zIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJRmxvb3IgNywgTWFjaGluZXJ5IEluZHVzdHJ5IEJ1aWxkaW5nLCBOby4yMiwKLQkJCQlCYWl3YW56aHVhbmcgU3RyZWV0LCBYaWNoZW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgCi0JCQkJQ0hJTkEKLQotMDAtMTMtQjQgICAoaGV4KQkJQXBwZWFyIFRWCi0wMDEzQjQgICAgIChiYXNlIDE2KQkJQXBwZWFyIFRWCi0JCQkJTGlsbGVha2VydmVpZW4gNmQKLQkJCQlQLk8uIEJveCA4IExpbGxlYWtlcgotCQkJCU5PLTAyMTYgT3NsbyAKLQkJCQlOT1JXQVkKLQotMDAtMTMtQjUgICAoaGV4KQkJV2F2ZXNhdAotMDAxM0I1ICAgICAoYmFzZSAxNikJCVdhdmVzYXQKLQkJCQkxMzc1LCBUcmFucy1DYW5hZGEgSGlnaHdheQotCQkJCVN1aXRlIDMwMAotCQkJCURvcnZhbCBRdWViZWMgSDlQIDJXOAotCQkJCUNBTkFEQQotCi0wMC0xMy1CNiAgIChoZXgpCQlTbGluZyBNZWRpYSwgSW5jLgotMDAxM0I2ICAgICAoYmFzZSAxNikJCVNsaW5nIE1lZGlhLCBJbmMuCi0JCQkJMTg0MCBHYXRld2F5IENlbnRlcgotCQkJCTJuZCBGbG9vcgotCQkJCVNhbiBNYXRlbyBDQSA5NDQwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQjcgICAoaGV4KQkJU2NhbnRlY2ggSUQKLTAwMTNCNyAgICAgKGJhc2UgMTYpCQlTY2FudGVjaCBJRAotCQkJCUFtZXJzZm9vcnRzZXN0cmFhdCAxMjQKLQkJCQlTb2VzdGVyYmVyZyBVdHJlY2h0IDM3NjkgQU4KLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMy1COCAgIChoZXgpCQlSeUNvIEVsZWN0cm9uaWMgU3lzdGVtcyBMaW1pdGVkCi0wMDEzQjggICAgIChiYXNlIDE2KQkJUnlDbyBFbGVjdHJvbmljIFN5c3RlbXMgTGltaXRlZAotCQkJCVVuaXQgRSwgQ2FydGVsIEJ1c2luZXNzIEVzdGF0ZQotCQkJCUVkaW5idXJnaCBXYXkKLQkJCQlIYXJsb3cgRXNzZXggQ00yMCAyVFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMy1COSAgIChoZXgpCQlCTSBTUEEKLTAwMTNCOSAgICAgKGJhc2UgMTYpCQlCTSBTUEEKLQkJCQlWSUEgTUlMQU5PIDU0LzU2Ci0JCQkJUm96emFubyAgMjAwODkKLQkJCQlJVEFMWQotCi0wMC0xMy1CQSAgIChoZXgpCQlSZWFkeUxpbmtzIEluYwotMDAxM0JBICAgICAoYmFzZSAxNikJCVJlYWR5TGlua3MgSW5jCi0JCQkJNjU5NSBFZGVudmFsZSBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAxODAKLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUJCICAgKGhleCkJCVNtYXJ0dnVlIENvcnBvcmF0aW9uCi0wMDEzQkIgICAgIChiYXNlIDE2KQkJU21hcnR2dWUgQ29ycG9yYXRpb24KLQkJCQkxMDIgV29vZG1vbnQgQm91bGV2YXJkCi0JCQkJU3VpdGUgMjAwCi0JCQkJTmFzaHZpbGxlIFROIDM3MjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1CQyAgIChoZXgpCQlBcnRpbWkgTHRkCi0wMDEzQkMgICAgIChiYXNlIDE2KQkJQXJ0aW1pIEx0ZAotCQkJCUJldGplbWFuIEhvdXNlCi0JCQkJMTA0IEhpbGxzIFJvYWQKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0IyIDFMUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEzLUJEICAgKGhleCkJCUhZTUFUT00gU0EKLTAwMTNCRCAgICAgKGJhc2UgMTYpCQlIWU1BVE9NIFNBCi0JCQkJWm9uZSBJbmR1c3RyaWVsbGUKLQkJCQkxNzUgcnVlIGRlIE1hc3NhY2FuCi0JCQkJVkVOREFSR1VFUyBIRVJBVUxUIDM0NzQwCi0JCQkJRlJBTkNFCi0KLTAwLTEzLUJFICAgKGhleCkJCVZpcnR1YWwgQ29uZXhpb25zCi0wMDEzQkUgICAgIChiYXNlIDE2KQkJVmlydHVhbCBDb25leGlvbnMKLQkJCQk0MTAgcnVlIFN0LU5pY29sYXMsIHN1aXRlIDYwMAotCQkJCU1vbnRy6WFsIFF16WJlYyBIMlkgMlA1Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLUJGICAgKGhleCkJCU1lZGlhIFN5c3RlbSBQbGFubmluZyBDb3JwLgotMDAxM0JGICAgICAoYmFzZSAxNikJCU1lZGlhIFN5c3RlbSBQbGFubmluZyBDb3JwLgotCQkJCTRGIFZlbGNvLUt1cm9tb24gQmxkZy4KLQkJCQkzLTE0LTUgVWVubywKLQkJCQlUYWl0by1rdSwgVG9reW8gMTEwLTAwMDUKLQkJCQlKQVBBTgotCi0wMC0xMy1DMCAgIChoZXgpCQlUcml4IFRlY25vbG9naWEgTHRkYS4KLTAwMTNDMCAgICAgKGJhc2UgMTYpCQlUcml4IFRlY25vbG9naWEgTHRkYS4KLQkJCQlSdWEgZGEgUGF6LCAxOTU3IC0gQ2jhY2FyYSBTYW50byBBbnT0bmlvCi0JCQkJU+NvIFBhdWxvICAwNDcxMy0wMDIKLQkJCQlCUkFaSUwKLQotMDAtMTMtQzEgICAoaGV4KQkJQXNva2EgVVNBIENvcnBvcmF0aW9uCi0wMDEzQzEgICAgIChiYXNlIDE2KQkJQXNva2EgVVNBIENvcnBvcmF0aW9uCi0JCQkJNTU4IFBpbGdyaW0gRHJpdmUKLQkJCQlVbml0IEgKLQkJCQlGb3N0ZXIgQ2l0eSBDQSA5NDQwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQzIgICAoaGV4KQkJV0FDT00gQ28uLEx0ZAotMDAxM0MyICAgICAoYmFzZSAxNikJCVdBQ09NIENvLixMdGQKLQkJCQkyLTUxMC0xIFRveW9ub2RhaSBPdG9uZS1tYWNoaQotCQkJCUtpdGFzYWl0YW1hLWd1biBTYWl0YW1hIDM0OS0xMTQ4Ci0JCQkJSkFQQU4KLQotMDAtMTMtQzMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxM0MzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQzQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxM0M0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQzUgICAoaGV4KQkJTElHSFRST04gRklCRVItT1BUSUMgREVWSUNFUyBJTkMuCi0wMDEzQzUgICAgIChiYXNlIDE2KQkJTElHSFRST04gRklCRVItT1BUSUMgREVWSUNFUyBJTkMuCi0JCQkJNTEtMSBNb29ucHl1bmctRG9uZywgVGFlZHVjay1HdQotCQkJCVRhZWpvbiAzMDYtMjIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLUM2ICAgKGhleCkJCU9wZW5HZWFyLCBJbmMKLTAwMTNDNiAgICAgKGJhc2UgMTYpCQlPcGVuR2VhciwgSW5jCi0JCQkJNzk4NCBTb3V0aCBXZWxieSBQYXJrICMxMDEKLQkJCQlTYWx0IExha2UgQ2l0eSBVVEFIIDg0MDg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1DNyAgIChoZXgpCQlJT05PUyBDby4sTHRkLgotMDAxM0M3ICAgICAoYmFzZSAxNikJCUlPTk9TIENvLixMdGQuCi0JCQkJMS0zNi0xOCBNaXlhc2FrYQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1Ni0wMDUxCi0JCQkJSkFQQU4KLQotMDAtMTMtQzggICAoaGV4KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TIFMuUC5BLgotMDAxM0M4ICAgICAoYmFzZSAxNikJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUyBTLlAuQS4KLQkJCQlWSUFMRSBTQVJDQSAyMjIKLQkJCQlNSUxBTk8gIDIwMTI2Ci0JCQkJSVRBTFkKLQotMDAtMTMtQzkgICAoaGV4KQkJQmV5b25kIEFjaGlldmUgRW50ZXJwcmlzZXMgTHRkLgotMDAxM0M5ICAgICAoYmFzZSAxNikJCUJleW9uZCBBY2hpZXZlIEVudGVycHJpc2VzIEx0ZC4KLQkJCQkKLQkJCQlQLk8uIEJveCA5NTcsIE9mZnNob3JlIEluY29ycG9yYXRpb25zIENlbnRyZQotCQkJCVJvYWQgVG93biBUb3J0b2xhIAotCQkJCVZJUkdJTiBJU0xBTkRTLCBCUklUSVNICi0KLTAwLTEzLUNBICAgKGhleCkJCVBpY28gRGlnaXRhbAotMDAxM0NBICAgICAoYmFzZSAxNikJCVBpY28gRGlnaXRhbAotCQkJCTYyNjAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUNCICAgKGhleCkJCVplbml0ZWwgTm9yd2F5IEFTCi0wMDEzQ0IgICAgIChiYXNlIDE2KQkJWmVuaXRlbCBOb3J3YXkgQVMKLQkJCQlTYW5kYWtlciB2IDI0IGMKLQkJCQlQTyBCb3ggNDQ5OAotCQkJCU9zbG8gMDQwMwotCQkJCU5PUldBWQotCi0wMC0xMy1DQyAgIChoZXgpCQlUYWxsIE1hcGxlIFN5c3RlbXMKLTAwMTNDQyAgICAgKGJhc2UgMTYpCQlUYWxsIE1hcGxlIFN5c3RlbXMKLQkJCQk4NSBTYXJhdG9nYSBBdmUgU3VpdGUgMTM5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUNEICAgKGhleCkJCU1USSBjby4gTFRECi0wMDEzQ0QgICAgIChiYXNlIDE2KQkJTVRJIGNvLiBMVEQKLQkJCQkxNjYtMTAgS2FyYWstZG9uZwotCQkJCVImRCBHcm91cCAzCi0JCQkJU29uZ3BhLWt1IFNlb3VsIDEzOC04MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtQ0UgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDEzQ0UgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLXRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xMy1DRiAgIChoZXgpCQk0QWNjZXNzIENvbW11bmljYXRpb25zCi0wMDEzQ0YgICAgIChiYXNlIDE2KQkJNEFjY2VzcyBDb21tdW5pY2F0aW9ucwotCQkJCTEgTi4gTGFTYWxsZSBTdC4KLQkJCQlTdWl0ZSAyMDE1Ci0JCQkJQ2hpY2FnbyBJTCA2MDYwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRDAgICAoaGV4KQkJdCsgTWVkaWNhbCBMdGQKLTAwMTNEMCAgICAgKGJhc2UgMTYpCQl0KyBNZWRpY2FsIEx0ZAotCQkJCTE3NEUgTWlsdG9uIFBhcmsKLQkJCQlBYmluZ2RvbiAgT1gxNCA0U0UKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMy1EMSAgIChoZXgpCQlLSVJLIHRlbGVjb20gQS9TCi0wMDEzRDEgICAgIChiYXNlIDE2KQkJS0lSSyB0ZWxlY29tIEEvUwotCQkJCUxhbmdtYXJrc3ZlaiAzNAotCQkJCUhvcnNlbnMgIDg3MDAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLUQyICAgKGhleCkJCVBBR0UgSUJFUklDQSwgUy5BLgotMDAxM0QyICAgICAoYmFzZSAxNikJCVBBR0UgSUJFUklDQSwgUy5BLgotCQkJCUFWLiBERSBMQSBJTkRVU1RSSUEsIDI0Ci0JCQkJVFJFUyBDQU5UT1MgTUFEUklEIDI4NzYwCi0JCQkJU1BBSU4KLQotMDAtMTMtRDMgICAoaGV4KQkJTUlDUk8tU1RBUiBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotMDAxM0QzICAgICAoYmFzZSAxNikJCU1JQ1JPLVNUQVIgSU5URVJOQVRJT05BTCBDTy4sIExURC4KLQkJCQlOTy4gNjksIExJLURFIFNULgotCQkJCUpVTkctSEUgQ0lUWSBUQUlQRUkgSFNJRU4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy1ENCAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTAwMTNENCAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQlOby41IFNoaW5nIFllaCBTdHJlZXQKLQkJCQlLd2VpIFNoYW4gSHNpYW5nCi0JCQkJVGFvIFl1YW4gSHNpZW4gIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtRDUgICAoaGV4KQkJV2lOZXR3b3JrcyBMVEQKLTAwMTNENSAgICAgKGJhc2UgMTYpCQlXaU5ldHdvcmtzIExURAotCQkJCTMyIE1hc2tpdCBTdC4KLQkJCQlIZXJ6ZWxpeWEgIDQ2NzMzCi0JCQkJSVNSQUVMCi0KLTAwLTEzLUQ2ICAgKGhleCkJCVRJSSBORVRXT1JLIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAxM0Q2ICAgICAoYmFzZSAxNikJCVRJSSBORVRXT1JLIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTEzODUgQUtST04gU1RSRUVUCi0JCQkJQ09QSUFHVUUgTlkgMTE3MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUQ3ICAgKGhleCkJCVNQSURDT00gVGVjaG5vbG9naWVzIFNBCi0wMDEzRDcgICAgIChiYXNlIDE2KQkJU1BJRENPTSBUZWNobm9sb2dpZXMgU0EKLQkJCQkxMzcgYXZlbnVlIGR1IEdlbmVyYWwgTEVDTEVSQwotCQkJCUJPVVJHIExBIFJFSU5FICA5MjM0MAotCQkJCUZSQU5DRQotCi0wMC0xMy1EOCAgIChoZXgpCQlQcmluY2V0b24gSW5zdHJ1bWVudHMKLTAwMTNEOCAgICAgKGJhc2UgMTYpCQlQcmluY2V0b24gSW5zdHJ1bWVudHMKLQkJCQkzNjYwIFF1YWtlcmJyaWRnZSBSb2FkCi0JCQkJVHJlbnRvbiBOSiAwODYxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRDkgICAoaGV4KQkJTWF0cml4IFByb2R1Y3QgRGV2ZWxvcG1lbnQsIEluYy4KLTAwMTNEOSAgICAgKGJhc2UgMTYpCQlNYXRyaXggUHJvZHVjdCBEZXZlbG9wbWVudCwgSW5jLgotCQkJCTEzIE5vcnRoIEJpcmQgU3RyZWV0Ci0JCQkJU3VuIFByYWlyaWUgV0kgNTM1OTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLURBICAgKGhleCkJCURpc2t3YXJlIENvLiwgTHRkCi0wMDEzREEgICAgIChiYXNlIDE2KQkJRGlza3dhcmUgQ28uLCBMdGQKLQkJCQkxLTQtMTIgS2liYQotCQkJCU5ha29qaWtpYmEgQmxkZy41RgotCQkJCUtvdG8ta3UgVG9reW8gMTM1LTAwNDIKLQkJCQlKQVBBTgotCi0wMC0xMy1EQiAgIChoZXgpCQlTSE9FSSBFbGVjdHJpYyBDby4sTHRkCi0wMDEzREIgICAgIChiYXNlIDE2KQkJU0hPRUkgRWxlY3RyaWMgQ28uLEx0ZAotCQkJCTEtMjktMixXYWthYmF5YXNoaQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1NC0wMDIzCi0JCQkJSkFQQU4KLQotMDAtMTMtREMgICAoaGV4KQkJSUJURUsgSU5DLgotMDAxM0RDICAgICAoYmFzZSAxNikJCUlCVEVLIElOQy4KLQkJCQkxNkYsIDMwLCBQZWktUGluZyBFYXN0IFJkLiwKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtREQgICAoaGV4KQkJQWJib3R0IERpYWdub3N0aWNzCi0wMDEzREQgICAgIChiYXNlIDE2KQkJQWJib3R0IERpYWdub3N0aWNzCi0JCQkJNTQ0MCBQYXRyaWNrIEhlbnJ5IERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLURFICAgKGhleCkJCUFkYXB0NCwgTExDCi0wMDEzREUgICAgIChiYXNlIDE2KQkJQWRhcHQ0LCBMTEMKLQkJCQkxMDUwIFcgTmFzYSBCbHZkLAotCQkJCVN1aXRlIDEzNAotCQkJCU1lbGJvdXJuZSBGTCAzMjkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtREYgICAoaGV4KQkJUnl2b3IgQ29ycC4KLTAwMTNERiAgICAgKGJhc2UgMTYpCQlSeXZvciBDb3JwLgotCQkJCTE1MTQ1IFJlZCBIaWxsIEF2ZS4KLQkJCQlTdWl0ZSBCCi0JCQkJVHVzdGluIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1FMCAgIChoZXgpCQlNdXJhdGEgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLTAwMTNFMCAgICAgKGJhc2UgMTYpCQlNdXJhdGEgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLQkJCQkyMjg4LCBPc2hpbm9oYXJhLAotCQkJCVlhc3Utc2hpIFNoaWdhIDUyMC0yMzkzCi0JCQkJSkFQQU4KLQotMDAtMTMtRTEgICAoaGV4KQkJSXByb2JlIEFCCi0wMDEzRTEgICAgIChiYXNlIDE2KQkJSXByb2JlIEFCCi0JCQkJRmlubGFuZHNnYXRhbiAxMgotCQkJCUtpc3RhIFNFLTE2NDc0Ci0JCQkJU1dFREVOCi0KLTAwLTEzLUUyICAgKGhleCkJCUdlb1Zpc2lvbiBJbmMuCi0wMDEzRTIgICAgIChiYXNlIDE2KQkJR2VvVmlzaW9uIEluYy4KLQkJCQkxMkYuLE5vLjMxNixTZWMuMSwKLQkJCQlOZWlodSBSZCxOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy1FMyAgIChoZXgpCQlDb1ZpIFRlY2hub2xvZ2llcywgSW5jLgotMDAxM0UzICAgICAoYmFzZSAxNikJCUNvVmkgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNjMwMCBCcmlkZ2Vwb2ludCBQYXJrd2F5Ci0JCQkJU3VpdGUgMzAwLCBCbGRnLiBJSQotCQkJCUF1c3RpbiBUZXhhcyA3ODczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRTQgICAoaGV4KQkJWUFOR0pBRSBTWVNURU1TIENPUlAuCi0wMDEzRTQgICAgIChiYXNlIDE2KQkJWUFOR0pBRSBTWVNURU1TIENPUlAuCi0JCQkJMTIwMi4gSEFOU0hJTiBJVCBUT1dFUiBHdXJvLTNEb25nLAotCQkJCUd1cm8tR3UKLQkJCQlTZW91bCAxNTItODQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLUU1ICAgKGhleCkJCVRFTk9TWVMsIElOQy4KLTAwMTNFNSAgICAgKGJhc2UgMTYpCQlURU5PU1lTLCBJTkMuCi0JCQkJU2VvamluIEIvRCwgMTU2NC0xLCBTZW9jaG8tZG9uZywKLQkJCQlTZW9jaG8tZ3UKLQkJCQlTZW91bCAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLUU2ICAgKGhleCkJCVRlY2hub2x1dGlvbgotMDAxM0U2ICAgICAoYmFzZSAxNikJCVRlY2hub2x1dGlvbgotCQkJCVp1aWRlbGlqa2hhbGZyb25kIDEKLQkJCQlHT1VEQSBaSCAyODAxIERECi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTMtRTcgICAoaGV4KQkJSGFsY3JvCi0wMDEzRTcgICAgIChiYXNlIDE2KQkJSGFsY3JvCi0JCQkJU3VpdGUgMSwgTGV2ZWwgMQotCQkJCTggR3JlZW5oaWxsIFJkCi0JCQkJV2F5dmlsbGUgU291dGggQXVzdHJhbGlhIDUwMzQKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTMtRTggICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDEzRTggICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLXRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xMy1FOSAgIChoZXgpCQlWZXJpV2F2ZSwgSW5jLgotMDAxM0U5ICAgICAoYmFzZSAxNikJCVZlcmlXYXZlLCBJbmMuCi0JCQkJOTYwMCBTVyBPYWsgU3QuCi0JCQkJUG9ydGxhbmQgT1IgOTcyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUVBICAgKGhleCkJCUthbXN0cnVwIEEvUwotMDAxM0VBICAgICAoYmFzZSAxNikJCUthbXN0cnVwIEEvUwotCQkJCUluZHVzdHJpdmVqIDI4Ci0JCQkJU3RpbGxpbmcgIDg2NjAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLUVCICAgKGhleCkJCVN5c21hc3RlciBDb3Jwb3JhdGlvbgotMDAxM0VCICAgICAoYmFzZSAxNikJCVN5c21hc3RlciBDb3Jwb3JhdGlvbgotCQkJCTU4MDEgQ2hyaXN0aWUgQXZlLgotCQkJCVN1aXRlIDQwMAotCQkJCUVtZXJ5dmlsbGUgQ0EgOTQ2MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUVDICAgKGhleCkJCVN1bmJheSBTb2Z0d2FyZSBBRwotMDAxM0VDICAgICAoYmFzZSAxNikJCVN1bmJheSBTb2Z0d2FyZSBBRwotCQkJCVNlZXN0cmFzc2UgNzgKLQkJCQlSdWVzY2hsaWtvbiBaSCA4ODAzCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTMtRUQgICAoaGV4KQkJUFNJQQotMDAxM0VEICAgICAoYmFzZSAxNikJCVBTSUEKLQkJCQk1MTctMTMgSW5kdXNwaXMgNXRoCi0JCQkJU2FuZ0RhZVdvbkRvbmcgSnVuZ1dvbkd1Ci0JCQkJU3VuZ05hbSBLeXVuZ0dpIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy1FRSAgIChoZXgpCQlKQlggRGVzaWducyBJbmMuCi0wMDEzRUUgICAgIChiYXNlIDE2KQkJSkJYIERlc2lnbnMgSW5jLgotCQkJCVBPIEJveCA5NzAxNTgKLQkJCQlCb2NhIFJhdG9uIEZMIDMzNDk3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1FRiAgIChoZXgpCQlLaW5nam9uIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkCi0wMDEzRUYgICAgIChiYXNlIDE2KQkJS2luZ2pvbiBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCVJvb20gODI3LEh1YW5hbiBEaWFubGkgQnVsZGluZyxOby4yMDUwCi0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODAzMQotCQkJCUNISU5BCi0KLTAwLTEzLUYwICAgKGhleCkJCVdhdmVmcm9udCBTZW1pY29uZHVjdG9yCi0wMDEzRjAgICAgIChiYXNlIDE2KQkJV2F2ZWZyb250IFNlbWljb25kdWN0b3IKLQkJCQk0NzQ2IDQ0dGggQXZlIFNXCi0JCQkJU3VpdGUgMjAxCi0JCQkJU2VhdHRsZSBXQSA5ODExNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRjEgICAoaGV4KQkJQU1PRCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxM0YxICAgICAoYmFzZSAxNikJCUFNT0QgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkyRi4sIE5vLiAxNiwgUHJvc3Blcml0eSBSb2FkIElJCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSwgIDMwMDc4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy1GMiAgIChoZXgpCQlLbGFzIEx0ZAotMDAxM0YyICAgICAoYmFzZSAxNikJCUtsYXMgTHRkCi0JCQkJQnJhY2V0b3duIEJ1c2luZXNzIFBhcmsKLQkJCQlDbG9uZWUgQ28gTWVhdGggCi0JCQkJSVJFTEFORAotCi0wMC0xMy1GMyAgIChoZXgpCQlHaWdhLWJ5dGUgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAxM0YzICAgICAoYmFzZSAxNikJCUdpZ2EtYnl0ZSBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJOEYsIE5vLjQzLCBGdS1Ic2luIFJvYWQuIEhzaW4tVGllbgotCQkJCVRhaXBlaSBIc2llbiAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy1GNCAgIChoZXgpCQlQc2l0ZWsgKFB0eSkgTHRkCi0wMDEzRjQgICAgIChiYXNlIDE2KQkJUHNpdGVrIChQdHkpIEx0ZAotCQkJCVRoZSBWaW5leWFyZHMgT2ZmaWNlIEVzdGF0ZQotCQkJCTk5IEppcCBkZSBKYWdlciBEcml2ZQotCQkJCVR5Z2VyIFZhbGxleSBDYXBlIFRvd24gNzUzMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xMy1GNSAgIChoZXgpCQlBa2ltYmkgU3lzdGVtcwotMDAxM0Y1ICAgICAoYmFzZSAxNikJCUFraW1iaSBTeXN0ZW1zCi0JCQkJMTQwMCBGYXNoaW9uIElzbGFuZCBCbHZkCi0JCQkJU3VpdGUgOTAwCi0JCQkJU2FuIE1hdGVvIENBIDk0NDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1GNiAgIChoZXgpCQlDaW50ZWNoCi0wMDEzRjYgICAgIChiYXNlIDE2KQkJQ2ludGVjaAotCQkJCTIxYSByb3V0ZSBkZSBsYSB3YW50emVuYXUKLQkJCQlIb2VuaGVpbSAgNjc4MDAKLQkJCQlGUkFOQ0UKLQotMDAtMTMtRjcgICAoaGV4KQkJU01DIE5ldHdvcmtzLCBJbmMuCi0wMDEzRjcgICAgIChiYXNlIDE2KQkJU01DIE5ldHdvcmtzLCBJbmMuCi0JCQkJMzggVGVzbGEKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUY4ICAgKGhleCkJCURleCBTZWN1cml0eSBTb2x1dGlvbnMKLTAwMTNGOCAgICAgKGJhc2UgMTYpCQlEZXggU2VjdXJpdHkgU29sdXRpb25zCi0JCQkJMTAgSnVuY3Rpb24gUm9hZCBQYXJrdG93bgotCQkJCTJuZCBGbG9vciBCUCBIb3VzZQotCQkJCUpvaGFubmVzYnVyZyBHdXRlbmcgMjAwMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xMy1GOSAgIChoZXgpCQlDYXZlcmEgU3lzdGVtcwotMDAxM0Y5ICAgICAoYmFzZSAxNikJCUNhdmVyYSBTeXN0ZW1zCi0JCQkJMjM1NSBPYWtsYW5kIFJkLCBTdWl0ZSMzMwotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1GQSAgIChoZXgpCQlMaWZlU2l6ZSBDb21tdW5pY2F0aW9ucywgSW5jCi0wMDEzRkEgICAgIChiYXNlIDE2KQkJTGlmZVNpemUgQ29tbXVuaWNhdGlvbnMsIEluYwotCQkJCTkwMSBTLiBNb3BhYwotCQkJCUJsZGcgMywgU3VpdGUgMzAwCi0JCQkJQXVzdGluIFRYIDc4NzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1GQiAgIChoZXgpCQlSS0MgSU5TVFJVTUVOVCBJTkMuCi0wMDEzRkIgICAgIChiYXNlIDE2KQkJUktDIElOU1RSVU1FTlQgSU5DLgotCQkJCTE2LTYsIEt1Z2FoYXJhIDUtY2hvbWUsCi0JCQkJT2h0YS1rdSBUb2t5byAxNDYtODUxNQotCQkJCUpBUEFOCi0KLTAwLTEzLUZDICAgKGhleCkJCVNpQ29ydGV4LCBJbmMKLTAwMTNGQyAgICAgKGJhc2UgMTYpCQlTaUNvcnRleCwgSW5jCi0JCQkJMyBDbG9ja3Rvd2VyIFBsYWNlCi0JCQkJU3VpdGUgMjEwCi0JCQkJTWF5bmFyZCBNQSAwMTc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRkQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTNGRCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTMtRkUgICAoaGV4KQkJR1JBTkRURUMgRUxFQ1RST05JQyBDT1JQLgotMDAxM0ZFICAgICAoYmFzZSAxNikJCUdSQU5EVEVDIEVMRUNUUk9OSUMgQ09SUC4KLQkJCQk4RixOTy4yNjgsTGlhbiBDaGVuZyBSZC4sQ2h1bmcgSG8gQ2l0eSwKLQkJCQlIc2llbiAyMzUKLQkJCQlUYWlwZWkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtRkYgICAoaGV4KQkJRGFnZS1NVEkgb2YgTUMsIEluYy4KLTAwMTNGRiAgICAgKGJhc2UgMTYpCQlEYWdlLU1USSBvZiBNQywgSW5jLgotCQkJCTcwMSBOLiBSb2Vza2UgQXZlLgotCQkJCU1pY2hpZ2FuIENpdHkgSU4gNDYzNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTAwICAgKGhleCkJCU1JTkVSVkEgS09SRUEgQ08uLCBMVEQKLTAwMTQwMCAgICAgKGJhc2UgMTYpCQlNSU5FUlZBIEtPUkVBIENPLiwgTFRECi0JCQkJIzIwMywgU0ggU2llbm5lLCBTZW9oeWVvbi1Eb25nCi0JCQkJQnVuZGFuZy1HdQotCQkJCVNlb25nbmFtLVNpIEd5ZW9uZ2dpLURvIDQ2My04MjEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtMDEgICAoaGV4KQkJUml2ZXJ0cmVlIE5ldHdvcmtzIENvcnAuCi0wMDE0MDEgICAgIChiYXNlIDE2KQkJUml2ZXJ0cmVlIE5ldHdvcmtzIENvcnAuCi0JCQkJUiMzMDQsIEstQ2VudGVyLCAxNTkxLTkKLQkJCQlCdXJpbS1kb25nLCBEb25nYWhuLWd1Ci0JCQkJQW55YW5nLXNpIEt5dW5nZ2ktZG8gNDMxLTgxNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC0wMiAgIChoZXgpCQlray1lbGVjdHJvbmljIGEvcwotMDAxNDAyICAgICAoYmFzZSAxNikJCWtrLWVsZWN0cm9uaWMgYS9zCi0JCQkJQ3lwcmVzdmVqIDYKLQkJCQlIZXJuaW5nICA3NDAwCi0JCQkJREVOTUFSSwotCi0wMC0xNC0wMyAgIChoZXgpCQlSZW5hc2lzLCBMTEMKLTAwMTQwMyAgICAgKGJhc2UgMTYpCQlSZW5hc2lzLCBMTEMKLQkJCQkxNTMwIE4uIFN0YXRlIFN0LgotCQkJCVN1aXRlIEUKLQkJCQlMZWhpIFVUIDg0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0wNCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxNDA0ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMDUgICAoaGV4KQkJT3BlbklCLCBJbmMuCi0wMDE0MDUgICAgIChiYXNlIDE2KQkJT3BlbklCLCBJbmMuCi0JCQkJT3BlbkZhYnJpY3MsIEluYy4sIGMvbyBRTG9naWMgQ29ycG9yYXRpb24KLQkJCQkyMDcxIFN0aWVybGluIENvdXJ0LCBTdWl0ZSAyMDAKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzLTQ2NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTA2ICAgKGhleCkJCUdvIE5ldHdvcmtzCi0wMDE0MDYgICAgIChiYXNlIDE2KQkJR28gTmV0d29ya3MKLQkJCQkxMjYgWWlnYWwgQWxvbiBzdC4KLQkJCQlUZWwgQXZpdiAgNjc0NDMKLQkJCQlJU1JBRUwKLQotMDAtMTQtMDcgICAoaGV4KQkJU3BlcmlhbiBQcm90ZWN0aW9uIEluc3RydW1lbnRhdGlvbgotMDAxNDA3ICAgICAoYmFzZSAxNikJCVNwZXJpYW4gUHJvdGVjdGlvbiBJbnN0cnVtZW50YXRpb24KLQkJCQk2NTEgU291dGggTWFpbiBTdHJlZXQKLQkJCQlNaWRkbGV0b3duIENUIDA2NDU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0wOCAgIChoZXgpCQlFa2EgU3lzdGVtcyBJbmMuCi0wMDE0MDggICAgIChiYXNlIDE2KQkJRWthIFN5c3RlbXMgSW5jLgotCQkJCTIwMjUxIENlbnR1cnkgQmx2ZAotCQkJCVN1aXRlIDEyMAotCQkJCUdlcm1hbnRvd24gTUQgMjA4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTA5ICAgKGhleCkJCU1BR05FVEkgTUFSRUxMSSAgIFMuRS4gUy5wLkEuCi0wMDE0MDkgICAgIChiYXNlIDE2KQkJTUFHTkVUSSBNQVJFTExJICAgUy5FLiBTLnAuQS4KLQkJCQlaSSBOb3JkLCBBbGxlZSBkJ0FyZ2Vuc29uCi0JCQkJQ0hBVEVMTEVSQVVMVCAgODYxMDAKLQkJCQlGUkFOQ0UKLQotMDAtMTQtMEEgICAoaGV4KQkJV0VQSU8gQ28uLCBMdGQuCi0wMDE0MEEgICAgIChiYXNlIDE2KQkJV0VQSU8gQ28uLCBMdGQuCi0JCQkJIzExMjUsIE9wdXMxLCBHdXJvZG9uZ2NvbXBsZXggYnVpbGRpbmcKLQkJCQk2MTEtMjYsR3Vyby1kb25nLEd1cm8tZ3UsCi0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtMEIgICAoaGV4KQkJRklSU1QgSU5URVJOQVRJT05BTCBDT01QVVRFUiwgSU5DLgotMDAxNDBCICAgICAoYmFzZSAxNikJCUZJUlNUIElOVEVSTkFUSU9OQUwgQ09NUFVURVIsIElOQy4KLQkJCQlGSUMgQlVJTERJTkcsIE5PLjMwMCwgWUFORyBHVUFORyBTVC4sCi0JCQkJTkVJSFUKLQkJCQlUQUlQRUkgQ09VTlRZIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtMEMgICAoaGV4KQkJR0tCIENDVFYgQ08uLCBMVEQuCi0wMDE0MEMgICAgIChiYXNlIDE2KQkJR0tCIENDVFYgQ08uLCBMVEQuCi0JCQkJN0YsIE5vLiAxLCBMYW5lIDY0MSwKLQkJCQlTaGVuIExpbmcgU291dGggUmQuLAotCQkJCVRhIFlhIEhzaWFuZywgVEFJQ0hVTkcgNDI4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0wRCAgIChoZXgpCQlOb3J0ZWwKLTAwMTQwRCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNC0wRSAgIChoZXgpCQlOb3J0ZWwKLTAwMTQwRSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNC0wRiAgIChoZXgpCQlGZWRlcmFsIFN0YXRlIFVuaXRhcnkgRW50ZXJwcmlzZSBMZW5pbmdyYWQgUiZEIEluc3RpdHV0ZSBvZgotMDAxNDBGICAgICAoYmFzZSAxNikJCUZlZGVyYWwgU3RhdGUgVW5pdGFyeSBFbnRlcnByaXNlIExlbmluZ3JhZCBSJkQgSW5zdGl0dXRlIG9mCi0JCQkJMTEgV2Fyc2hhd3NrYXlhIFN0LgotCQkJCVN0LiBQZXRlcnNidXJnIDE5NjEyOAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xNC0xMCAgIChoZXgpCQlTdXpob3UgS2VkYSBUZWNobm9sb2d5IENPLixMdGQKLTAwMTQxMCAgICAgKGJhc2UgMTYpCQlTdXpob3UgS2VkYSBUZWNobm9sb2d5IENPLixMdGQKLQkJCQkxMzEsSmluc2hhbiBSb2FkCi0JCQkJU3V6aG91IEppYW5nU3UgMjE1MDExCi0JCQkJQ0hJTkEKLQotMDAtMTQtMTEgICAoaGV4KQkJRGV1dHNjaG1hbm4gQXV0b21hdGlvbiBHbWJIICYgQ28uIEtHCi0wMDE0MTEgICAgIChiYXNlIDE2KQkJRGV1dHNjaG1hbm4gQXV0b21hdGlvbiBHbWJIICYgQ28uIEtHCi0JCQkJQ2FybC1aZWlzcy1TdHIuIDgKLQkJCQlCYWQgQ2FtYmVyZyAgRCAtIDY1NTIwCi0JCQkJR0VSTUFOWQotCi0wMC0xNC0xMiAgIChoZXgpCQlTLVRFQyBlbGVjdHJvbmljcyBBRwotMDAxNDEyICAgICAoYmFzZSAxNikJCVMtVEVDIGVsZWN0cm9uaWNzIEFHCi0JCQkJSW5kdXN0cmllc3RyYXNzZSA0OQotCQkJCVp1ZyA2MzAwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTQtMTMgICAoaGV4KQkJVHJlYmluZyAmIEhpbXN0ZWR0IFByb3plc3NhdXRvbWF0aW9uIEdtYkggJiBDby4gS0cKLTAwMTQxMyAgICAgKGJhc2UgMTYpCQlUcmViaW5nICYgSGltc3RlZHQgUHJvemVzc2F1dG9tYXRpb24gR21iSCAmIENvLiBLRwotCQkJCVdpbGhlbG0tSGVubmVtYW5uLVN0ci4gMTMKLQkJCQlTY2h3ZXJpbiBNZWNrbGVuYnVyZy1Wb3Jwb21tZXJuIDE5MDYxCi0JCQkJR0VSTUFOWQotCi0wMC0xNC0xNCAgIChoZXgpCQlKdW1wbm9kZSBTeXN0ZW1zIExMQy4KLTAwMTQxNCAgICAgKGJhc2UgMTYpCQlKdW1wbm9kZSBTeXN0ZW1zIExMQy4KLQkJCQk4MDAgV2FzaGluZ3RvbiBBdmUgTi4KLQkJCQlTdWl0ZSAzMDkKLQkJCQlNaW5uZWFwb2xpcyBNTiA1NTA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMTUgICAoaGV4KQkJSW50ZWMgQXV0b21hdGlvbiBJbmMuCi0wMDE0MTUgICAgIChiYXNlIDE2KQkJSW50ZWMgQXV0b21hdGlvbiBJbmMuCi0JCQkJMjc1MSBBcmJ1dHVzIFJkLgotCQkJCVZpY3RvcmlhIEJyaXRpc2ggQ29sdW1iaWEgVjhOIDVYNwotCQkJCUNBTkFEQQotCi0wMC0xNC0xNiAgIChoZXgpCQlTY29zY2hlIEluZHVzdHJpZXMsIEluYy4KLTAwMTQxNiAgICAgKGJhc2UgMTYpCQlTY29zY2hlIEluZHVzdHJpZXMsIEluYy4KLQkJCQlQTyBCb3ggMjkwMQotCQkJCU94bmFyZCBDQSA5MzAzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMTcgICAoaGV4KQkJUlNFIEluZm9ybWF0aW9ucyBUZWNobm9sb2dpZSBHbWJICi0wMDE0MTcgICAgIChiYXNlIDE2KQkJUlNFIEluZm9ybWF0aW9ucyBUZWNobm9sb2dpZSBHbWJICi0JCQkJU2lsYmVyYmVyZ3N0cmFzc2UgOQotCQkJCVdvbGZzYmVyZyBL5HJudGVuIDk0MDAKLQkJCQlBVVNUUklBCi0KLTAwLTE0LTE4ICAgKGhleCkJCUM0TGluZQotMDAxNDE4ICAgICAoYmFzZSAxNikJCUM0TGluZQotCQkJCTEwMDEgSHl1bmRhaSBQYXJpc2lhbiwKLQkJCQk5MDctMTAgTW9rNS1Eb25nCi0JCQkJWWFuZ2NodW4tR3UgU2VvdWwgMTU4LTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC0xOSAgIChoZXgpCQlTSURTQQotMDAxNDE5ICAgICAoYmFzZSAxNikJCVNJRFNBCi0JCQkJUFRNIC0gVE9SUkVTIFFVRVZFRE8gMQotCQkJCVRSRVMgQ0FOVE9TIE1BRFJJRCAyODc2MAotCQkJCVNQQUlOCi0KLTAwLTE0LTFBICAgKGhleCkJCURFSUNZIENPUlBPUkFUSU9OCi0wMDE0MUEgICAgIChiYXNlIDE2KQkJREVJQ1kgQ09SUE9SQVRJT04KLQkJCQkzLTMtNixTYWthZS1jaG8sSGFtdXJhLXNoaSwKLQkJCQlUb2t5byAyMDUtMDAwMgotCQkJCUpBUEFOCi0KLTAwLTE0LTFCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTQxQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTFDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTQxQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTFEICAgKGhleCkJCUx1c3QgQW50cmllYnN0ZWNobmlrIEdtYkgKLTAwMTQxRCAgICAgKGJhc2UgMTYpCQlMdXN0IEFudHJpZWJzdGVjaG5payBHbWJICi0JCQkJR2V3ZXJiZXN0cmFzc2UgNS05Ci0JCQkJTGFobmF1IEhlc3NlbiAzNTYzMwotCQkJCUdFUk1BTlkKLQotMDAtMTQtMUUgICAoaGV4KQkJUC5BLiBTZW1pLCBJbmMuCi0wMDE0MUUgICAgIChiYXNlIDE2KQkJUC5BLiBTZW1pLCBJbmMuCi0JCQkJMzk2NSBGcmVlZG9tIENpcmNsZSwgRmwgOAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0xRiAgIChoZXgpCQlTdW5Ld2FuZyBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAxNDFGICAgICAoYmFzZSAxNikJCVN1bkt3YW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJIzM2NShUZWNobm8tcGFyaywgMzAxIGRvbmcsIDkwMSBobywpIFNhbWp1bmctZG9uZywgT2hqdW5nLWt1LAotCQkJCUJ1Y2hlb24tc2hpIEt5dW5nZ2ktZG8gNDIxLTgwOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC0yMCAgIChoZXgpCQlHLUxpbmtzIG5ldHdvcmtpbmcgY29tcGFueQotMDAxNDIwICAgICAoYmFzZSAxNikJCUctTGlua3MgbmV0d29ya2luZyBjb21wYW55Ci0JCQkJMUZMLiBOTy4xNS00OSwgTUlORyBERVIgU0VDT05EIFJPQUQsCi0JCQkJQ0hJIERVIERJU1RSSUNULAotCQkJCUtlZWx1bmcgIDIwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtMjEgICAoaGV4KQkJVG90YWwgV2lyZWxlc3MgVGVjaG5vbG9naWVzIFB0ZS4gTHRkLgotMDAxNDIxICAgICAoYmFzZSAxNikJCVRvdGFsIFdpcmVsZXNzIFRlY2hub2xvZ2llcyBQdGUuIEx0ZC4KLQkJCQlCbGsgMTAwMywgQnVraXQgTWVyYWggQ2VudHJhbCwgIzA0LTE4Ci0JCQkJVGVjaG5vcHJlbmV1ciBDZW50cmUKLQkJCQkxNTk4MzYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTQtMjIgICAoaGV4KQkJRGVsbCBJbmMuCi0wMDE0MjIgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMuCi0JCQkJT25lIERlbGwgV2F5Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMjMgICAoaGV4KQkJSi1TIENvLiBORVVST0NPTQotMDAxNDIzICAgICAoYmFzZSAxNikJCUotUyBDby4gTkVVUk9DT00KLQkJCQlFbmVyZ2V0aWNoZXNraWkgcHJvZXpkLCA2Ci0JCQkJTW9zY293ICAxMTEyNTAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTQtMjQgICAoaGV4KQkJTWVycnkgRWxlY3RyaWNzIENPLiwgTFRELgotMDAxNDI0ICAgICAoYmFzZSAxNikJCU1lcnJ5IEVsZWN0cmljcyBDTy4sIExURC4KLQkJCQlOTy4yMiwyM3JkIFJPQUQKLQkJCQlQQVJLIFRBSUNIVU5HLAotCQkJCVRBSUNIVU5HIENJVFkgIDQwODUwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0yNSAgIChoZXgpCQlHYWxhY3RpYyBDb21wdXRpbmcgQ29ycC4KLTAwMTQyNSAgICAgKGJhc2UgMTYpCQlHYWxhY3RpYyBDb21wdXRpbmcgQ29ycC4KLQkJCQkxL0YKLQkJCQkxMiBMZWUgQ2h1bmcgU3RyZWV0Ci0JCQkJQ2hhaSBXYW4gRGlzdHJpY3QgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xNC0yNiAgIChoZXgpCQlOTCBUZWNobm9sb2d5Ci0wMDE0MjYgICAgIChiYXNlIDE2KQkJTkwgVGVjaG5vbG9neQotCQkJCTgwMCBUdXJucGlrZSBTdHJlZXQKLQkJCQlTVEUgMTAwCi0JCQkJTm9ydGggQW5kb3ZlciBNQSAwMTg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMjcgICAoaGV4KQkJSmF6ek11dGFudAotMDAxNDI3ICAgICAoYmFzZSAxNikJCUphenpNdXRhbnQKLQkJCQkyIGFsbGVlIGR1IERveWVuIEdlb3JnZXMgQnJ1cwotCQkJCVBlc3NhYyAgMzM2MDAKLQkJCQlGUkFOQ0UKLQotMDAtMTQtMjggICAoaGV4KQkJVm9jb2xsZWN0LCBJbmMKLTAwMTQyOCAgICAgKGJhc2UgMTYpCQlWb2NvbGxlY3QsIEluYwotCQkJCTcwMyBSb2RpIFJvYWQKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0yOSAgIChoZXgpCQlWIENlbnRlciBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDE0MjkgICAgIChiYXNlIDE2KQkJViBDZW50ZXIgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCTdGLTcsIE5PLjM1LCBIc2ludGFpIFJkLgotCQkJCUp1YmVpIENpdHkgSHNpbmNodSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTJBICAgKGhleCkJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtIENvLiwgTHRkCi0wMDE0MkEgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uLCBMdGQKLQkJCQlOby4yMiwgQWxsZXkgMzgsIExhbmUgOTEsIFNlYy4gMSwKLQkJCQlOZWkgSHUgUm9hZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0yQiAgIChoZXgpCQlFZGF0YSBDb21tdW5pY2F0aW9uIEluYy4KLTAwMTQyQiAgICAgKGJhc2UgMTYpCQlFZGF0YSBDb21tdW5pY2F0aW9uIEluYy4KLQkJCQkyRi0xLCBOby4gODcyLCBDaHVuZy1DaGVuZyBSZAotCQkJCUNodW5nLUhvIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0yQyAgIChoZXgpCQlLb25jZXB0IEludGVybmF0aW9uYWwsIEluYy4KLTAwMTQyQyAgICAgKGJhc2UgMTYpCQlLb25jZXB0IEludGVybmF0aW9uYWwsIEluYy4KLQkJCQkyNTAwIEUgRm9vdGhpbGwgQmx2ZC4gIzQwNwotCQkJCVBhc2FkZW5hIENBIDkxMTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0yRCAgIChoZXgpCQlUb3JhZGV4IEFHCi0wMDE0MkQgICAgIChiYXNlIDE2KQkJVG9yYWRleCBBRwotCQkJCUFsdHNhZ2Vuc3RyYXNzZSA1Ci0JCQkJSG9ydyBMVSA2MDQ4Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTQtMkUgICAoaGV4KQkJNzcgRWxla3Ryb25pa2EgS2Z0LgotMDAxNDJFICAgICAoYmFzZSAxNikJCTc3IEVsZWt0cm9uaWthIEtmdC4KLQkJCQlGZWhlcnZhcmkgdXQgOTguCi0JCQkJQnVkYXBlc3QgSC0xMTYzCi0JCQkJSFVOR0FSWQotCi0wMC0xNC0yRiAgIChoZXgpCQlXaWxkUGFja2V0cwotMDAxNDJGICAgICAoYmFzZSAxNikJCVdpbGRQYWNrZXRzCi0JCQkJMTM0MCBUcmVhdCBCb3VsZXZhcmQKLQkJCQlTdWl0ZSA1MDAKLQkJCQlXYWxudXQgQ3JlZWsgQ0EgOTQ1OTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTMwICAgKGhleCkJCVZpUG93RVIsIEluYwotMDAxNDMwICAgICAoYmFzZSAxNikJCVZpUG93RVIsIEluYwotCQkJCTlGLiwgTm8uMjA1LTMsIFNlYy4gMywgQmVpc2luIFJkCi0JCQkJU2luZGlhbiBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtMzEgICAoaGV4KQkJUERMIEVsZWN0cm9uaWNzIEx0ZAotMDAxNDMxICAgICAoYmFzZSAxNikJCVBETCBFbGVjdHJvbmljcyBMdGQKLQkJCQk4MSBBdXN0aW4gU3RyZWV0Ci0JCQkJTmFwaWVyIEhhd2tlcyBCYXkgNDAxNQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTE0LTMyICAgKGhleCkJCVRhcmFsbGF4IFdpcmVsZXNzLCBJbmMuCi0wMDE0MzIgICAgIChiYXNlIDE2KQkJVGFyYWxsYXggV2lyZWxlc3MsIEluYy4KLQkJCQkxMCBXZXN0IDEwMCBTb3V0aCwKLQkJCQlTdWl0ZSA2MDAKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMzMgICAoaGV4KQkJRW1wb3dlciBUZWNobm9sb2dpZXMoQ2FuYWRhKSBJbmMuCi0wMDE0MzMgICAgIChiYXNlIDE2KQkJRW1wb3dlciBUZWNobm9sb2dpZXMoQ2FuYWRhKSBJbmMuCi0JCQkJVW5pdCA0MDUgLSA1NjAwIFBhcmt3b29kIFdheSwKLQkJCQlSaWNobW9uZCBCcml0aXNoIENvbHVtYmlhIFY2ViAyTTIKLQkJCQlDQU5BREEKLQotMDAtMTQtMzQgICAoaGV4KQkJS2VyaSBTeXN0ZW1zLCBJbmMKLTAwMTQzNCAgICAgKGJhc2UgMTYpCQlLZXJpIFN5c3RlbXMsIEluYwotCQkJCVN1aXRlIDEwMAotCQkJCTE1MzAgT2FrbGFuZCBSZAotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0zNSAgIChoZXgpCQlDaXR5Q29tIENvcnAuCi0wMDE0MzUgICAgIChiYXNlIDE2KQkJQ2l0eUNvbSBDb3JwLgotCQkJCTNGLiwgTm8uNTMyLCBTZWMuIDIsCi0JCQkJSmhvbmdzaGFuIFJkLgotCQkJCUpob25naGUgQ2l0eSBUYWlwZWkgSHNpZW4gMjM1NTcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTM2ICAgKGhleCkJCVF3ZXJ0eSBFbGVrdHJvbmlrIEFCCi0wMDE0MzYgICAgIChiYXNlIDE2KQkJUXdlcnR5IEVsZWt0cm9uaWsgQUIKLQkJCQlC5GxpbmdlIEtsb2NrYXJn5XJkCi0JCQkJVHlzdGJlcmdhICA2MTAgNjAKLQkJCQlTV0VERU4KLQotMDAtMTQtMzcgICAoaGV4KQkJR1NUZWxldGVjaCBDby4sTHRkLgotMDAxNDM3ICAgICAoYmFzZSAxNikJCUdTVGVsZXRlY2ggQ28uLEx0ZC4KLQkJCQkxMzg1LTE0LCBKdWFuLURvbmcsIE5hbS1ndQotCQkJCUluY2hlb24gNDAyLTIwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC0zOCAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMTQzOCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OSBTb3V0aAotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMzkgICAoaGV4KQkJQmxvbmRlciBUb25ndWUgTGFib3JhdG9yaWVzLCBJbmMuCi0wMDE0MzkgICAgIChiYXNlIDE2KQkJQmxvbmRlciBUb25ndWUgTGFib3JhdG9yaWVzLCBJbmMuCi0JCQkJT25lIEpha2UgQnJvd24gUm9hZAotCQkJCU9sZCBCcmlkZ2UgTmV3IEplcnNleSAwODg1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtM0EgICAoaGV4KQkJUkFZVEFMSyBJTlRFUk5BVElPTkFMIFNSTAotMDAxNDNBICAgICAoYmFzZSAxNikJCVJBWVRBTEsgSU5URVJOQVRJT05BTCBTUkwKLQkJCQlTdC4gTWFyZWNjaGlhIDc5Ci0JCQkJVmVydWNjaGlvIChSTikgNDc4MjYKLQkJCQlJVEFMWQotCi0wMC0xNC0zQiAgIChoZXgpCQlTZW5zb3ZhdGlvbiBBRwotMDAxNDNCICAgICAoYmFzZSAxNikJCVNlbnNvdmF0aW9uIEFHCi0JCQkJTHVkd2lnc2hhZmVuZXIgU3RyLiAyOQotCQkJCVN0b2NrYWNoIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3ODMzMwotCQkJCUdFUk1BTlkKLQotMDAtMTQtM0MgICAoaGV4KQkJUmhlaW5tZXRhbGwgQ2FuYWRhIEluYy4KLTAwMTQzQyAgICAgKGJhc2UgMTYpCQlSaGVpbm1ldGFsbCBDYW5hZGEgSW5jLgotCQkJCTIyNSBib3VsIGR1IHNlbWluYWlyZSBzdWQKLQkJCQlTdC1KZWFuLXN1ci1SaWNoZWxpZXUgUXVlYmVjIEozQiA4RTkKLQkJCQlDQU5BREEKLQotMDAtMTQtM0QgICAoaGV4KQkJQWV2b2UgSW5jLgotMDAxNDNEICAgICAoYmFzZSAxNikJCUFldm9lIEluYy4KLQkJCQkxMUYsIE5vIDIzLCBLZWVsdW5nIFJvYWQKLQkJCQlUYWlwZWkgSHNpbllpIERpc3RyaWN0IDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtM0UgICAoaGV4KQkJQWlyTGluayBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxNDNFICAgICAoYmFzZSAxNikJCUFpckxpbmsgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkzMTU5IENvcnBvcmF0ZSBQbGFjZQotCQkJCUhheXdhcmQgQ0EgOTQ1NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTNGICAgKGhleCkJCUhvdHdheSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDE0M0YgICAgIChiYXNlIDE2KQkJSG90d2F5IFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQlOby4gODEsIEhzaW4gVGFpIDV0aCBSb2FkIFNlY3Rpb24gMQotCQkJCTExRi0zCi0JCQkJU2hpSnIgVGFpcGVpIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtNDAgICAoaGV4KQkJQVRPTUlDIENvcnBvcmF0aW9uCi0wMDE0NDAgICAgIChiYXNlIDE2KQkJQVRPTUlDIENvcnBvcmF0aW9uCi0JCQkJTUFNUE8gQkxERwotCQkJCTEtMy0xMSxBU0FLVVNBQkFTSEkKLQkJCQlUQUlUTy1LVSBUT0tZTyAxMTEtMDA1MwotCQkJCUpBUEFOCi0KLTAwLTE0LTQxICAgKGhleCkJCUlubm92YXRpb24gU291bmQgVGVjaG5vbG9neSBDby4sIExURC4KLTAwMTQ0MSAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aW9uIFNvdW5kIFRlY2hub2xvZ3kgQ28uLCBMVEQuCi0JCQkJQnVpbGRpbmcgMnRoLixDdWloYWkgSW5kdXN0cmlhbCBBcmVhLAotCQkJCUh1YWlkZSwgRnV5b25nIFRvd24KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAzCi0JCQkJQ0hJTkEKLQotMDAtMTQtNDIgICAoaGV4KQkJQVRUTyBDT1JQT1JBVElPTgotMDAxNDQyICAgICAoYmFzZSAxNikJCUFUVE8gQ09SUE9SQVRJT04KLQkJCQkxLTI1LTIzIEhvbmdvLAotCQkJCUJ1bmt5by1rdSwKLQkJCQlUb2t5byAxMTMtODQyNQotCQkJCUpBUEFOCi0KLTAwLTE0LTQzICAgKGhleCkJCUNvbnN1bHRyb25pY3MgRXVyb3BlIEx0ZAotMDAxNDQzICAgICAoYmFzZSAxNikJCUNvbnN1bHRyb25pY3MgRXVyb3BlIEx0ZAotCQkJCUVsZWN0cm9uIFdheQotCQkJCUNoYW5kbGVycyBGb3JkIEhhbnRzIFNPNTMgNFNFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTQtNDQgICAoaGV4KQkJR3J1bmRmb3MgRWxlY3Ryb25pY3MKLTAwMTQ0NCAgICAgKGJhc2UgMTYpCQlHcnVuZGZvcyBFbGVjdHJvbmljcwotCQkJCUJpcmtldmFlbmdldCAyLTEwCi0JCQkJQmplcnJpbmdicm8gIERLODg1MAotCQkJCURFTk1BUksKLQotMDAtMTQtNDUgICAoaGV4KQkJVGVsZWZvbi1HcmFkbmphIGQuby5vLgotMDAxNDQ1ICAgICAoYmFzZSAxNikJCVRlbGVmb24tR3JhZG5qYSBkLm8uby4KLQkJCQlQbGVzaXZpY2thIDMKLQkJCQlTdmV0YSBOZWRlbGphIFp1cGFuaWphIFphZ3JlYmFja2EgMTA0MzEKLQkJCQlDUk9BVElBCi0KLTAwLTE0LTQ2ICAgKGhleCkJCVN1cGVyVmlzaW9uIFNvbHV0aW9ucyBMTEMKLTAwMTQ0NiAgICAgKGJhc2UgMTYpCQlTdXBlclZpc2lvbiBTb2x1dGlvbnMgTExDCi0JCQkJNzYyIEluZHVzdHJpYWwgRHIuCi0JCQkJRWxtaHVyc3QgSUwgNjAxMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTQ3ICAgKGhleCkJCUJPQVogSW5jLgotMDAxNDQ3ICAgICAoYmFzZSAxNikJCUJPQVogSW5jLgotCQkJCTI4MiBQdWtvay1yaSBTb25nU2FuLW15b24gRGFuZ3ppbi1ndW4gQ2h1bmdjaGVvbmduYW0tZG8sICAzNDMtODM0Ci0JCQkJIzMwMSwgMTQyOS03IFNlb0Noby1kb25nCi0JCQkJU2VvdWwgU2VvQ2hvLWd1IDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtNDggICAoaGV4KQkJSW52ZW50ZWMgTXVsdGltZWRpYSAmIFRlbGVjb20gQ29ycG9yYXRpb24KLTAwMTQ0OCAgICAgKGJhc2UgMTYpCQlJbnZlbnRlYyBNdWx0aW1lZGlhICYgVGVsZWNvbSBDb3Jwb3JhdGlvbgotCQkJCTVGLE5PLjM5NixTZWMuMSBOZWktSHUgUm9hZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC00OSAgIChoZXgpCQlTaWNodWFuIENoYW5naG9uZyBFbGVjdHJpYyBMdGQuCi0wMDE0NDkgICAgIChiYXNlIDE2KQkJU2ljaHVhbiBDaGFuZ2hvbmcgRWxlY3RyaWMgTHRkLgotCQkJCU5vLjM1LEVhc3QgTWlhblhpbiBSb2FkCi0JCQkJTWlhbllhbmcgU2lDaHVhbiBQUkMgNjIxMDAwCi0JCQkJQ0hJTkEKLQotMDAtMTQtNEEgICAoaGV4KQkJVGFpd2FuIFRoaWNrLUZpbG0gSW5kLiBDb3JwLgotMDAxNDRBICAgICAoYmFzZSAxNikJCVRhaXdhbiBUaGljay1GaWxtIEluZC4gQ29ycC4KLQkJCQlOTy4xMjYsV3V1IEdvbmcgMm5kIFJELAotCQkJCVd1dSBHdXUgSW5kdXN0cmlhbCBab25lCi0JCQkJVGFpcGVpIEhzaWVuICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTRCICAgKGhleCkJCUhpZm4sIEluYy4KLTAwMTQ0QiAgICAgKGJhc2UgMTYpCQlIaWZuLCBJbmMuCi0JCQkJNzUwIFVuaXZlcnNpdHkgQXZlCi0JCQkJU3VpdGUgMjAwCi0JCQkJTG9zIEdhdG9zIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC00QyAgIChoZXgpCQlHZW5lcmFsIE1ldGVycyBDb3JwLgotMDAxNDRDICAgICAoYmFzZSAxNikJCUdlbmVyYWwgTWV0ZXJzIENvcnAuCi0JCQkJMTkzNSBEb21pbmlvbiBXYXkKLQkJCQlDb2xvcmFkbyBTcHJpbmdzIENvbG9yYWRvIDgwOTE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC00RCAgIChoZXgpCQlJbnRlbGxpZ2VudCBTeXN0ZW1zCi0wMDE0NEQgICAgIChiYXNlIDE2KQkJSW50ZWxsaWdlbnQgU3lzdGVtcwotCQkJCTExMTAxIEpvaG5zIEhvcGtpbnMgUm9hZAotCQkJCUxhdXJlbCBNRCAyMDcyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNEUgICAoaGV4KQkJU1JJU0EKLTAwMTQ0RSAgICAgKGJhc2UgMTYpCQlTUklTQQotCQkJCTM2LzEsIE5ha2hpbW92c2tpeSBwci10Ci0JCQkJTW9zY293IDExNzIxOAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xNC00RiAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMTQ0RiAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJsZGcuIDE3LCBVTVBLMTctMTMxCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNTAgICAoaGV4KQkJSGVpbSBTeXN0ZW1zIEdtYkgKLTAwMTQ1MCAgICAgKGJhc2UgMTYpCQlIZWltIFN5c3RlbXMgR21iSAotCQkJCUZyaWVkcmljaCBFYmVydCBTdHJhc3NlCi0JCQkJVGVjaG5vbG9naWVQYXJrCi0JCQkJQmVyZ2lzY2ggR2xhZGJhY2ggTlJXIDUxNDI5Ci0JCQkJR0VSTUFOWQotCi0wMC0xNC01MSAgIChoZXgpCQlBcHBsZSBDb21wdXRlciBJbmMuCi0wMDE0NTEgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCU1TOjM1R1BPCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC01MiAgIChoZXgpCQlDQUxDVUxFWCxJTkMuCi0wMDE0NTIgICAgIChiYXNlIDE2KQkJQ0FMQ1VMRVgsSU5DLgotCQkJCTEzMiBXLiBMQVMgQ1JVQ0VTIEFWRS4KLQkJCQlMQVMgQ1JVQ0VTIE5FVyBNRVhJQ08gODgwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTUzICAgKGhleCkJCUFEVkFOVEVDSCBURUNITk9MT0dJRVMgQ08uLExURAotMDAxNDUzICAgICAoYmFzZSAxNikJCUFEVkFOVEVDSCBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCSMxMjAyIEFDRSBURUNITk8gVE9XRVIsIDY4NC0xCi0JCQkJRGV1bmdjaG9uLTNEb25nLCBLYW5nc2VvLUt1Ci0JCQkJU2VvdWwgMTU3LTcyMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC01NCAgIChoZXgpCQlTeW13YXZlCi0wMDE0NTQgICAgIChiYXNlIDE2KQkJU3ltd2F2ZQotCQkJCTEwMjUxIFZpc3RhIFNvcnJlbnRvIFBhcmt3YXkKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTU1ICAgKGhleCkJCUNvZGVyIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCi0wMDE0NTUgICAgIChiYXNlIDE2KQkJQ29kZXIgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLQkJCQlUYWtlZGEgQmxkZywgMS0zMC02IFNoaXJhc2FnaSwKLQkJCQlOYWthbm8ta3UgVG9reW8gMTY1LTAwMzUKLQkJCQlKQVBBTgotCi0wMC0xNC01NiAgIChoZXgpCQlFZGdlIFByb2R1Y3RzCi0wMDE0NTYgICAgIChiYXNlIDE2KQkJRWRnZSBQcm9kdWN0cwotCQkJCTEwODAgU291dGggRGVwb3QgRHJpdmUKLQkJCQlPZ2RlbiBVdGFoIDg0NDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC01NyAgIChoZXgpCQlULVZJUFMgQVMKLTAwMTQ1NyAgICAgKGJhc2UgMTYpCQlULVZJUFMgQVMKLQkJCQlPc3RlbnNqb3ZlaWVuIDE4Ci0JCQkJT3NsbyBOTy0wNjYxCi0JCQkJTk9SV0FZCi0KLTAwLTE0LTU4ICAgKGhleCkJCUhTIEF1dG9tYXRpYyBBcFMKLTAwMTQ1OCAgICAgKGJhc2UgMTYpCQlIUyBBdXRvbWF0aWMgQXBTCi0JCQkJQmplcnJpbmdicm92ZWogNzAKLQkJCQlSb2RvdnJlICAyNjEwCi0JCQkJREVOTUFSSwotCi0wMC0xNC01OSAgIChoZXgpCQlNb3JhbSBDby4sIEx0ZC4KLTAwMTQ1OSAgICAgKGJhc2UgMTYpCQlNb3JhbSBDby4sIEx0ZC4KLQkJCQkzRiwgTWFud29sIEJsZGcuLCAxMDIyLTQKLQkJCQlZb3VuZ3RvbmctZG9uZywgWW91bmd0b25nLWd1Ci0JCQkJU3V3b24tc2hpIEd5b3VuZ2dpLWRvIDQ0My04MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtNUEgICAoaGV4KQkJTmVyYXRlYyBBRwotMDAxNDVBICAgICAoYmFzZSAxNikJCU5lcmF0ZWMgQUcKLQkJCQlSb3Nzd2llc3N0cmFzc2UgMjkKLQkJCQlDSC04NjA4IEJ1Ymlrb24gWkgKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNC01QiAgIChoZXgpCQlTZWVrZXJOZXQgSW5jLgotMDAxNDVCICAgICAoYmFzZSAxNikJCVNlZWtlck5ldCBJbmMuCi0JCQkJMzAwIFNhdGVsbGl0ZSBCbHZkLgotCQkJCVN1d2FuZWUgR2VvcmdpYSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNUMgICAoaGV4KQkJSW50cm9uaWNzIEIuVi4KLTAwMTQ1QyAgICAgKGJhc2UgMTYpCQlJbnRyb25pY3MgQi5WLgotCQkJCUhlcm1lc3dlZyAyMgotCQkJCUJhcm5ldmVsZCBHZWxkZXJsYW5kIDM3NzEgTkQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNC01RCAgIChoZXgpCQlXSiBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxNDVEICAgICAoYmFzZSAxNikJCVdKIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNDAxIFJpdmVyIE9ha3MgUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC01RSAgIChoZXgpCQlJQk0gQ29ycAotMDAxNDVFICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAuTy4gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC01RiAgIChoZXgpCQlBRElURUMgQ08uIExURAotMDAxNDVGICAgICAoYmFzZSAxNikJCUFESVRFQyBDTy4gTFRECi0JCQkJNEYgSHlvd29uIEIvRCwgOTktNSwKLQkJCQlLYXJhay1kb25nLFNvbmdwYS1ndQotCQkJCVNlb3VsIDEzOC04MDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtNjAgICAoaGV4KQkJS3lvY2VyYSBXaXJlbGVzcyBDb3JwLgotMDAxNDYwICAgICAoYmFzZSAxNikJCUt5b2NlcmEgV2lyZWxlc3MgQ29ycC4KLQkJCQkxMDMwMCBDYW1wdXMgUG9pbnQgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTYxICAgKGhleCkJCUNPUk9OQSBDT1JQT1JBVElPTgotMDAxNDYxICAgICAoYmFzZSAxNikJCUNPUk9OQSBDT1JQT1JBVElPTgotCQkJCTctNywgSElHQVNISS1TSElOQk8KLQkJCQlTQU5KTy1TSEkgTklJR0FUQSA5NTUtODUxMAotCQkJCUpBUEFOCi0KLTAwLTE0LTYyICAgKGhleCkJCURpZ2l3ZWxsIFRlY2hub2xvZ3ksIGluYwotMDAxNDYyICAgICAoYmFzZSAxNikJCURpZ2l3ZWxsIFRlY2hub2xvZ3ksIGluYwotCQkJCTRGLCBOby4xLCBQcm9zcGVyaXR5IDFzdCBSb2FkCi0JCQkJSHNpbmNodSBTY2llbmNlIFBhcmsgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC02MyAgIChoZXgpCQlJRENTIE4uVi4KLTAwMTQ2MyAgICAgKGJhc2UgMTYpCQlJRENTIE4uVi4KLQkJCQlIZWxsZWJlZW1kZW4gOQotCQkJCUhhc3NlbHQgTGltYnVyZyAzNTAwCi0JCQkJQkVMR0lVTQotCi0wMC0xNC02NCAgIChoZXgpCQlDcnlwdG9zb2Z0Ci0wMDE0NjQgICAgIChiYXNlIDE2KQkJQ3J5cHRvc29mdAotCQkJCUxlcm1vbnRvdmEgc3RyLCAzCi0JCQkJUGVuemEgcmVnaW9uIDQ0MDAyNgotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xNC02NSAgIChoZXgpCQlOb3ZvIE5vcmRpc2sgQS9TCi0wMDE0NjUgICAgIChiYXNlIDE2KQkJTm92byBOb3JkaXNrIEEvUwotCQkJCU5vdm8gQWxsZQotCQkJCUJhZ3N2YWVyZCAgMjg4MAotCQkJCURFTk1BUksKLQotMDAtMTQtNjYgICAoaGV4KQkJS2xlaW5oZW56IEVsZWt0cm9uaWsgR21iSAotMDAxNDY2ICAgICAoYmFzZSAxNikJCUtsZWluaGVueiBFbGVrdHJvbmlrIEdtYkgKLQkJCQlHcmVpbmVyYmVyZyAxNAotCQkJCU11bmljaCAgODEzNzEKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTY3ICAgKGhleCkJCUFycm93U3BhbiBJbmMuCi0wMDE0NjcgICAgIChiYXNlIDE2KQkJQXJyb3dTcGFuIEluYy4KLQkJCQk0Njk5IE9sZCBJcm9uc2lkZXMgRHIuIFN1aXRlIDEwMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC02OCAgIChoZXgpCQlDZWxQbGFuIEludGVybmF0aW9uYWwsIEluYy4KLTAwMTQ2OCAgICAgKGJhc2UgMTYpCQlDZWxQbGFuIEludGVybmF0aW9uYWwsIEluYy4KLQkJCQkxODM1IEFsZXhhbmRlciBCZWxsIERyaXZlCi0JCQkJc3VpdGUgMjAwCi0JCQkJUmVzdG9uIFZBIDIwMTkxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC02OSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE0NjkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC02QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE0NkEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC02QiAgIChoZXgpCQlBbmFncmFuLCBJbmMuCi0wMDE0NkIgICAgIChiYXNlIDE2KQkJQW5hZ3JhbiwgSW5jLgotCQkJCTU4MCBOb3J0aCBQYXN0b3JpYSBBdgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNkMgICAoaGV4KQkJTmV0Z2VhciBJbmMuCi0wMDE0NkMgICAgIChiYXNlIDE2KQkJTmV0Z2VhciBJbmMuCi0JCQkJNDUwMCBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNkQgICAoaGV4KQkJUkYgVGVjaG5vbG9naWVzCi0wMDE0NkQgICAgIChiYXNlIDE2KQkJUkYgVGVjaG5vbG9naWVzCi0JCQkJMzEyNSBOIDEyNnRoIFN0cmVldAotCQkJCUJyb29rZmllbGQgV0kgNTMwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTZFICAgKGhleCkJCUguIFN0b2xsIEdtYkggJiBDby4gS0cKLTAwMTQ2RSAgICAgKGJhc2UgMTYpCQlILiBTdG9sbCBHbWJIICYgQ28uIEtHCi0JCQkJU3RvbGx3ZWcKLQkJCQlSZXV0bGluZ2VuIERldXRzY2hsYW5kIDcyNzYwCi0JCQkJR0VSTUFOWQotCi0wMC0xNC02RiAgIChoZXgpCQlLb2hsZXIgQ28KLTAwMTQ2RiAgICAgKGJhc2UgMTYpCQlLb2hsZXIgQ28KLQkJCQk0NDQgSGlnaGxhbmQgRHJpdmUKLQkJCQlNUyAwNzIKLQkJCQlLb2hsZXIgV0kgNTMwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTcwICAgKGhleCkJCVByb2tvbSBTb2Z0d2FyZSBTQQotMDAxNDcwICAgICAoYmFzZSAxNikJCVByb2tvbSBTb2Z0d2FyZSBTQQotCQkJCUFsLiBKZXJvem9saW1za2llIDY1Lzc5Ci0JCQkJV2Fyc3phd2EgTWF6b3dpZWNraWUgMDAtNjk3Ci0JCQkJUE9MQU5ECi0KLTAwLTE0LTcxICAgKGhleCkJCUVhc3Rlcm4gQXNpYSBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMTQ3MSAgICAgKGJhc2UgMTYpCQlFYXN0ZXJuIEFzaWEgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJMTNGLCBOby4gOTksIFNlYy4gMSwgTmFua2FuIFJvYWQsCi0JCQkJTHVjaHUsIFRhb3l1YW4gMzM4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC03MiAgIChoZXgpCQlDaGluYSBCcm9hZGJhbmQgV2lyZWxlc3MgSVAgU3RhbmRhcmQgR3JvdXAKLTAwMTQ3MiAgICAgKGJhc2UgMTYpCQlDaGluYSBCcm9hZGJhbmQgV2lyZWxlc3MgSVAgU3RhbmRhcmQgR3JvdXAKLQkJCQlQLk8uQk9YIDg4LFdlc3QgSGlnaC10ZWNoCi0JCQkJRGV2ZWxvcG1lbnQgQ2VudGVyLAotCQkJCVhpJ2FuIFNoYWFuIFhpIDcxMDA3NQotCQkJCUNISU5BCi0KLTAwLTE0LTczICAgKGhleCkJCUJvb2toYW0gSW5jCi0wMDE0NzMgICAgIChiYXNlIDE2KQkJQm9va2hhbSBJbmMKLQkJCQkxMCBCcmV3ZXIgSHVudCBXYXkKLQkJCQlLYW5hdGEgT04gSzJLIDJCNQotCQkJCUNBTkFEQQotCi0wMC0xNC03NCAgIChoZXgpCQlLNDAgRWxlY3Ryb25pY3MKLTAwMTQ3NCAgICAgKGJhc2UgMTYpCQlLNDAgRWxlY3Ryb25pY3MKLQkJCQk2MDAgVG9sbGdhdGUgUmQuIFVuaXQgQQotCQkJCUVsZ2luIElMIDYwMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC03NSAgIChoZXgpCQlXaWxpbmUgTmV0d29ya3MsIEluYy4KLTAwMTQ3NSAgICAgKGJhc2UgMTYpCQlXaWxpbmUgTmV0d29ya3MsIEluYy4KLQkJCQk3NDEgQWxleGFuZGVyIFJkCi0JCQkJUHJpbmNldG9uIE5KIDA4NTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC03NiAgIChoZXgpCQlNdWx0aUNvbSBJbmR1c3RyaWVzIExpbWl0ZWQKLTAwMTQ3NiAgICAgKGJhc2UgMTYpCQlNdWx0aUNvbSBJbmR1c3RyaWVzIExpbWl0ZWQKLQkJCQlSb29tIDEyMDYtNywgTWFuaGF0dGFuIENlbnRlciwKLQkJCQk4IEt3YWkgQ2hlb25nIFJkLgotCQkJCUt3YWkgQ2h1bmcsIE4uVC4gIAotCQkJCUhPTkcgS09ORwotCi0wMC0xNC03NyAgIChoZXgpCQlOZXJ0ZWMgIEluYy4KLTAwMTQ3NyAgICAgKGJhc2UgMTYpCQlOZXJ0ZWMgIEluYy4KLQkJCQk5NTAgQ293aWUgc3QuCi0JCQkJR3JhbmJ5IFF1ZWJlYyBKMkogMVAyCi0JCQkJQ0FOQURBCi0KLTAwLTE0LTc4ICAgKGhleCkJCVNoZW5aaGVuIFRQLUxJTksgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAxNDc4ICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIFRQLUxJTksgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCTMvRixCbGRnLlIxLUIsSGktdGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2hlbm5hbiBSZC4KLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMTQtNzkgICAoaGV4KQkJTkVDIE1hZ251cyBDb21tdW5pY2F0aW9ucyxMdGQuCi0wMDE0NzkgICAgIChiYXNlIDE2KQkJTkVDIE1hZ251cyBDb21tdW5pY2F0aW9ucyxMdGQuCi0JCQkJNC0yOAotCQkJCU1pdGEgMS1DaG9tZQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDgtMDA3MwotCQkJCUpBUEFOCi0KLTAwLTE0LTdBICAgKGhleCkJCUV1YnVzIEdtYkgKLTAwMTQ3QSAgICAgKGJhc2UgMTYpCQlFdWJ1cyBHbWJICi0JCQkJR29sbGllcnN0ci4gNzAgIEF1ZmdhbmcgRSAgNC5TdG9jawotCQkJCU11bmljaCBCYXZhcmlhIDgwMzM5Ci0JCQkJR0VSTUFOWQotCi0wMC0xNC03QiAgIChoZXgpCQlJdGVyaXMsIEluYy4KLTAwMTQ3QiAgICAgKGJhc2UgMTYpCQlJdGVyaXMsIEluYy4KLQkJCQkxNTE1IFMuIE1hbmNoZXN0ZXIgQXZlLgotCQkJCUFuYWhlaW0gQ0EgOTI4MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTdDICAgKGhleCkJCTNDb20gTHRkCi0wMDE0N0MgICAgIChiYXNlIDE2KQkJM0NvbSBMdGQKLQkJCQlQZW9wbGVidWlsZGluZyAyCi0JCQkJUGVvcGxlYnVpbGRpbmcgRXN0YXRlLCBNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE0LTdEICAgKGhleCkJCUFlb24gRGlnaXRhbCBJbnRlcm5hdGlvbmFsCi0wMDE0N0QgICAgIChiYXNlIDE2KQkJQWVvbiBEaWdpdGFsIEludGVybmF0aW9uYWwKLQkJCQkzMS02LCBUaGUgQnVuZCBDZW50ZXIKLQkJCQkyMjIgWWFuIEFuIEUuIFJkCi0JCQkJU2hhbmdoYWkgU0ggMjAwMDAyCi0JCQkJQ0hJTkEKLQotMDAtMTQtN0UgICAoaGV4KQkJSW5uZXJXaXJlbGVzcwotMDAxNDdFICAgICAoYmFzZSAxNikJCUlubmVyV2lyZWxlc3MKLQkJCQkxMTU1IEthcyBEcml2ZSwgU3VpdGUgMjAwCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtN0YgICAoaGV4KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLTAwMTQ3RiAgICAgKGJhc2UgMTYpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotCQkJCVByaW5zIEJvdWRld2lqbmxhYW4gNDcKLQkJCQlFZGVnZW0gQW50d2VycCBCLTI2NTAKLQkJCQlCRUxHSVVNCi0KLTAwLTE0LTgwICAgKGhleCkJCUhpdGFjaGktTEcgRGF0YSBTdG9yYWdlIEtvcmVhLCBJbmMKLTAwMTQ4MCAgICAgKGJhc2UgMTYpCQlIaXRhY2hpLUxHIERhdGEgU3RvcmFnZSBLb3JlYSwgSW5jCi0JCQkJMTktMSxDaGVvbmdoby1yaQotCQkJCUppbnd1eS1NeXVuCi0JCQkJUHl1bmd0YWlrIEt5dW5nZ2ktRG8gNDUxLTcxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC04MSAgIChoZXgpCQlNdWx0aWxpbmsgSW5jCi0wMDE0ODEgICAgIChiYXNlIDE2KQkJTXVsdGlsaW5rIEluYwotCQkJCTU4MCBUZXJuZXMgQXZlCi0JCQkJRWx5cmlhIE9IIDQ0MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC04MiAgIChoZXgpCQlHb0JhY2tUViwgSW5jCi0wMDE0ODIgICAgIChiYXNlIDE2KQkJR29CYWNrVFYsIEluYwotCQkJCTkzNyBIYW1pbHRvbiBBdmVudWUKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC04MyAgIChoZXgpCQllWFMgSW5jLgotMDAxNDgzICAgICAoYmFzZSAxNikJCWVYUyBJbmMuCi0JCQkJMTkwMCBBbGFtZWRhIGRlIGxhcyBQdWxnYXMKLQkJCQlTdWl0ZSAxMDMKLQkJCQlTYW4gTWF0ZW8gQ0EgOTQ0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTg0ICAgKGhleCkJCUNlcm1hdGUgVGVjaG5vbG9naWVzIEluYy4KLTAwMTQ4NCAgICAgKGJhc2UgMTYpCQlDZXJtYXRlIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJN0YtMSwgTm8gMTY4IExpZW4tQ2hlbiBSZC4KLQkJCQlDaHVuZy1IbyBDaXR5IFRhaXBlaSBDb3VudHkgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC04NSAgIChoZXgpCQlHaWdhLUJ5dGUKLTAwMTQ4NSAgICAgKGJhc2UgMTYpCQlHaWdhLUJ5dGUKLQkJCQlOby4yMTUsTmFuLVBpbmcgUm9hZCwKLQkJCQlQaW4tSmVuIFRhb3l1YW4gMzI2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC04NiAgIChoZXgpCQlFY2hvIERpZ2l0YWwgQXVkaW8gQ29ycG9yYXRpb24KLTAwMTQ4NiAgICAgKGJhc2UgMTYpCQlFY2hvIERpZ2l0YWwgQXVkaW8gQ29ycG9yYXRpb24KLQkJCQk2NDUwIFZpYSBSZWFsICMxCi0JCQkJQ2FycGludGVyaWEgQ0EgOTMwMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTg3ICAgKGhleCkJCUFtZXJpY2FuIFRlY2hub2xvZ3kgSW50ZWdyYXRvcnMKLTAwMTQ4NyAgICAgKGJhc2UgMTYpCQlBbWVyaWNhbiBUZWNobm9sb2d5IEludGVncmF0b3JzCi0JCQkJMTM1OCBSb3NhbGlhIEF2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC04OCAgIChoZXgpCQlBa29ycmkKLTAwMTQ4OCAgICAgKGJhc2UgMTYpCQlBa29ycmkKLQkJCQkzMDUgRm9zdGVyIFN0cmVldAotCQkJCUxpdHRsZXRvbiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtODkgICAoaGV4KQkJQjE1NDAyMTAwIC0gSkFOREVJLCBTLkwuCi0wMDE0ODkgICAgIChiYXNlIDE2KQkJQjE1NDAyMTAwIC0gSkFOREVJLCBTLkwuCi0JCQkJUE9MLiBJTkQuIFBPQ09NQUNPLCBFLTI4Ci0JCQkJTEEgQ09SVdFBICAxNTE5MAotCQkJCVNQQUlOCi0KLTAwLTE0LThBICAgKGhleCkJCUVsaW4gRWJnIFRyYWN0aW9uIEdtYmgKLTAwMTQ4QSAgICAgKGJhc2UgMTYpCQlFbGluIEViZyBUcmFjdGlvbiBHbWJoCi0JCQkJQ3VtYmVybGFuZHN0cmFzc2UgMzIKLQkJCQlWaWVubmEgIDExNDAKLQkJCQlBVVNUUklBCi0KLTAwLTE0LThCICAgKGhleCkJCUdsb2JvIEVsZWN0cm9uaWMgR21iSCAmIENvLiBLRwotMDAxNDhCICAgICAoYmFzZSAxNikJCUdsb2JvIEVsZWN0cm9uaWMgR21iSCAmIENvLiBLRwotCQkJCUluZHVzdHJpZXN0cmFzc2UgNGEKLQkJCQlOaWVkZXJsYXVlciBCYXllcm4gOTc2MTgKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LThDICAgKGhleCkJCUZvcnRyZXNzIFRlY2hub2xvZ2llcwotMDAxNDhDICAgICAoYmFzZSAxNikJCUZvcnRyZXNzIFRlY2hub2xvZ2llcwotCQkJCTIgVGVjaG5vbG9neSBQYXJrIERyaXZlCi0JCQkJV2VzdGZvcmQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LThEICAgKGhleCkJCUN1YmljIERlZmVuc2UgU2ltdWxhdGlvbiBTeXN0ZW1zCi0wMDE0OEQgICAgIChiYXNlIDE2KQkJQ3ViaWMgRGVmZW5zZSBTaW11bGF0aW9uIFN5c3RlbXMKLQkJCQkyMDAxIFcuIE9ha3JpZGdlIFJvYWQKLQkJCQlPcmxhbmRvIEZMIDMyODA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC04RSAgIChoZXgpCQlUZWxlIFBvd2VyIEluYy4KLTAwMTQ4RSAgICAgKGJhc2UgMTYpCQlUZWxlIFBvd2VyIEluYy4KLQkJCQkxLTQ2LTE1I0IxRgotCQkJCUFzYWhpZ2Fva2EKLQkJCQlOZXJpbWEta3UgVG9reW8gMTc2LTAwMDUKLQkJCQlKQVBBTgotCi0wMC0xNC04RiAgIChoZXgpCQlQcm90cm9uaWMgKEZhciBFYXN0KSBMdGQuCi0wMDE0OEYgICAgIChiYXNlIDE2KQkJUHJvdHJvbmljIChGYXIgRWFzdCkgTHRkLgotCQkJCVJtLiAyNTA0LCBOYW55YW5nIFBsYXphLAotCQkJCTU3IEh1bmcgVG8gUm9hZAotCQkJCUt3dW4gVG9uZyBLb3dsb29uIDg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0xNC05MCAgIChoZXgpCQlBU1AgQ29ycG9yYXRpb24KLTAwMTQ5MCAgICAgKGJhc2UgMTYpCQlBU1AgQ29ycG9yYXRpb24KLQkJCQk0NjUgSW5kdXN0cmlhbCBQYXJrIFJvYWQKLQkJCQlIYXJ0d2VsbCBHQSAzMDY0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtOTEgICAoaGV4KQkJRGFuaWVscyBFbGVjdHJvbmljcyBMdGQuCi0wMDE0OTEgICAgIChiYXNlIDE2KQkJRGFuaWVscyBFbGVjdHJvbmljcyBMdGQuCi0JCQkJNDMgRXJpZSBTdAotCQkJCVZpY3RvcmlhIEJDIFY4ViAxUDgKLQkJCQlDQU5BREEKLQotMDAtMTQtOTIgICAoaGV4KQkJTGl0ZW9uLCBNb2JpbGUgTWVkaWEgU29sdXRpb24gU0JVCi0wMDE0OTIgICAgIChiYXNlIDE2KQkJTGl0ZW9uLCBNb2JpbGUgTWVkaWEgU29sdXRpb24gU0JVCi0JCQkJNEYsIDMsIExhbmUgNzY4LCBTZWMuIDQsCi0JCQkJUGF0ZWggUm9hZCwKLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtOTMgICAoaGV4KQkJU3lzdGltYXggU29sdXRpb25zCi0wMDE0OTMgICAgIChiYXNlIDE2KQkJU3lzdGltYXggU29sdXRpb25zCi0JCQkJMTMwMCBFIExvb2tvdXQgRHJpdmUKLQkJCQlSaWNoYXJkc29uIFRleGFzIDc1MDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC05NCAgIChoZXgpCQlFU1UgQUcKLTAwMTQ5NCAgICAgKGJhc2UgMTYpCQlFU1UgQUcKLQkJCQlMdWthc3N0cmFzc2UgMjkKLQkJCQlTdC4gR2FsbGVuICA5MDA4Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTQtOTUgICAoaGV4KQkJMldpcmUsIEluYy4KLTAwMTQ5NSAgICAgKGJhc2UgMTYpCQkyV2lyZSwgSW5jLgotCQkJCTE3MDQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTk2ICAgKGhleCkJCVBob25pYyBDb3JwLgotMDAxNDk2ICAgICAoYmFzZSAxNikJCVBob25pYyBDb3JwLgotCQkJCTEydGhGbCwgNTkgVHVuZyBIc2luZyBSZAotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC05NyAgIChoZXgpCQlaSElZVUFOIEVsZXRyb25pY3MgY28uLGx0ZC4KLTAwMTQ5NyAgICAgKGJhc2UgMTYpCQlaSElZVUFOIEVsZXRyb25pY3MgY28uLGx0ZC4KLQkJCQkyIEZsb29yLCBOTy4zIEJ1aWxkaW5nLCBIdWFuZ3pob3UgSW5kdXN0cmlhbCBFc3RhdGUsIENoZWJlaSBSb2FkLAotCQkJCVRpYW5oZQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYwCi0JCQkJQ0hJTkEKLQotMDAtMTQtOTggICAoaGV4KQkJVmlraW5nIERlc2lnbiBUZWNobm9sb2d5Ci0wMDE0OTggICAgIChiYXNlIDE2KQkJVmlraW5nIERlc2lnbiBUZWNobm9sb2d5Ci0JCQkJMkYsIE5vLjIsIExhbmUgNDIsCi0JCQkJSG91LUdhbmcgU3RyZWV0LCBTaGloLUxpbiBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTExCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC05OSAgIChoZXgpCQlIZWxpY29tbSBJbmMKLTAwMTQ5OSAgICAgKGJhc2UgMTYpCQlIZWxpY29tbSBJbmMKLQkJCQkxOTQ3IENhbWlubyBWaWRhIFJvYmxlCi0JCQkJU3VpdGUgMTA5Ci0JCQkJQ2FybHNiYWQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTlBICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxNDlBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTYwMCBOIFVzIEh3eSA0NQotCQkJCVJtIE1XMTEzCi0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC05QiAgIChoZXgpCQlOb2tvdGEgQ29tbXVuaWNhdGlvbnMsIExMQwotMDAxNDlCICAgICAoYmFzZSAxNikJCU5va290YSBDb21tdW5pY2F0aW9ucywgTExDCi0JCQkJMjAwIEdhbGxlcmlhIFBhcmt3YXkKLQkJCQlTdWl0ZSAxODIwCi0JCQkJQXRsYW50YSBHZW9yZ2lhIDMwMzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC05QyAgIChoZXgpCQlIRiBDb21wYW55Ci0wMDE0OUMgICAgIChiYXNlIDE2KQkJSEYgQ29tcGFueQotCQkJCU5vZGUgUGFyayBUb3VyYWluZQotCQkJCUJQMSBUYXV4aWdueSAgMzczMTAKLQkJCQlGUkFOQ0UKLQotMDAtMTQtOUQgICAoaGV4KQkJU291bmQgSUQgSW5jLgotMDAxNDlEICAgICAoYmFzZSAxNikJCVNvdW5kIElEIEluYy4KLQkJCQkzNDMwIFdlc3QgQmF5c2hvcmUgUm9hZAotCQkJCVBhbG8gQWx0byBDYWxpZm9ybmlhIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC05RSAgIChoZXgpCQlVYk9ORSBDby4sIEx0ZAotMDAxNDlFICAgICAoYmFzZSAxNikJCVViT05FIENvLiwgTHRkCi0JCQkJU2hpbnlvdW5nIEIuRC4gNjAyLCBTZW9IeWVvbjItRG9uZwotCQkJCUJ1bmRhbmctR3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtOUYgICAoaGV4KQkJU3lzdGVtIGFuZCBDaGlwcywgSW5jLgotMDAxNDlGICAgICAoYmFzZSAxNikJCVN5c3RlbSBhbmQgQ2hpcHMsIEluYy4KLQkJCQk0RixOby4gMSwgTGFuZSA1MCwgTmFuS2FuZyBSb2FkLCBTZWN0aW9uIDMsCi0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LUEwICAgKGhleCkJCUFjY3NlbnNlLCBJbmMuCi0wMDE0QTAgICAgIChiYXNlIDE2KQkJQWNjc2Vuc2UsIEluYy4KLQkJCQk0NjAgV2FyZCBEcml2ZQotCQkJCVN1aXRlIEUyCi0JCQkJU2FudGEgQmFyYmFyYSBDYWxpZm9ybmlhIDkzMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1BMSAgIChoZXgpCQlTeW5jaHJvbm91cyBDb21tdW5pY2F0aW9uIENvcnAKLTAwMTRBMSAgICAgKGJhc2UgMTYpCQlTeW5jaHJvbm91cyBDb21tdW5pY2F0aW9uIENvcnAKLQkJCQk5IGZsb29yLCBObzE2OCwgUnVlaWd1YW5nIFJvYWQsIE5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LUEyICAgKGhleCkJCUNvcmUgTWljcm8gU3lzdGVtcyBJbmMuCi0wMDE0QTIgICAgIChiYXNlIDE2KQkJQ29yZSBNaWNybyBTeXN0ZW1zIEluYy4KLQkJCQlXYWp1biBCbGRnLiA2RiwgMi0yMi0yLCBLb2lzaGlrYXdhCi0JCQkJQnVua3lvLUt1IFRva3lvIDExMi0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMTQtQTMgICAoaGV4KQkJVml0ZWxlYyBCVgotMDAxNEEzICAgICAoYmFzZSAxNikJCVZpdGVsZWMgQlYKLQkJCQlrYXBpdHRlbHdlZyAxOAotCQkJCVAuTy5Cb3ggNjU0MwotCQkJCUJyZWRhIE5CIE5MIDQ4MjcgSEcKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNC1BNCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAxNEE0ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNUYtMSwgNSBIU0lOLUFOIFJPQUQKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtQTUgICAoaGV4KQkJR2VtdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDE0QTUgICAgIChiYXNlIDE2KQkJR2VtdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDEgSmVuIEFpIFJvYWQKLQkJCQlIc2luY2h1IEluZHVzdHJpYWwgUGFyawotCQkJCUh1a291LCBIc2luY2h1ICAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LUE2ICAgKGhleCkJCVRlcmFuZXRpY3MsIEluYy4KLTAwMTRBNiAgICAgKGJhc2UgMTYpCQlUZXJhbmV0aWNzLCBJbmMuCi0JCQkJMzk2NSBGcmVlZG9tIENpcmNsZQotCQkJCSBTaXh0aCBGbG9vcgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1BNyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxNEE3ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICAxNzkwVgotCQkJCURFTk1BUksKLQotMDAtMTQtQTggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNEE4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQTkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNEE5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQUEgICAoaGV4KQkJQXNobHkgQXVkaW8sIEluYy4KLTAwMTRBQSAgICAgKGJhc2UgMTYpCQlBc2hseSBBdWRpbywgSW5jLgotCQkJCTg0NyBIb2x0IFJvYWQKLQkJCQlXZWJzdGVyIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1BQiAgIChoZXgpCQlTZW5oYWkgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxNEFCICAgICAoYmFzZSAxNikJCVNlbmhhaSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJUm0uMTBBLiAyOC9GLlNFR1BsYXphIEh1YXFpYW5nYmVpIFJvYWQKLQkJCQlTaGVuZ3poZW4gR3Vhbmdkb25nIDUxODAzMQotCQkJCUNISU5BCi0KLTAwLTE0LUFDICAgKGhleCkJCUJvdW50aWZ1bCBXaUZpCi0wMDE0QUMgICAgIChiYXNlIDE2KQkJQm91bnRpZnVsIFdpRmkKLQkJCQk3MDcgV2VzdCA3MDAgU291dGgKLQkJCQlXb29kcyBDcm9zcyBVdGFoIDg0MDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1BRCAgIChoZXgpCQlHYXNzbmVyIFdpZWdlLSB1LiBNZcOfdGVjaG5payBHbWJICi0wMDE0QUQgICAgIChiYXNlIDE2KQkJR2Fzc25lciBXaWVnZS0gdS4gTWXDn3RlY2huaWsgR21iSAotCQkJCU3vv71uY2huZXIgQnVuZGVzc3RyYe+/vWUgMTIzICAgCi0JCQkJU2FsemJ1cmcgIEEtNTAyMAotCQkJCUFVU1RSSUEKLQotMDAtMTQtQUUgICAoaGV4KQkJV2l6bG9naWNzIENvLiwgTHRkLgotMDAxNEFFICAgICAoYmFzZSAxNikJCVdpemxvZ2ljcyBDby4sIEx0ZC4KLQkJCQlSbSMxMzIxLCBTYW1jaGFuZyBQbGF6YSwgMTczLAotCQkJCURvd2hhLURvbmcgTWFwby1HdSwKLQkJCQlTZW91bCAgMTIxLTc0NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1BRiAgIChoZXgpCQlEYXRhc3ltIEluYy4KLTAwMTRBRiAgICAgKGJhc2UgMTYpCQlEYXRhc3ltIEluYy4KLQkJCQk0MzUgRWxnaW4gU3RyZWV0Ci0JCQkJQnJhbnRmb3JkIE9udGFyaW8gTjNTN1A1Ci0JCQkJQ0FOQURBCi0KLTAwLTE0LUIwICAgKGhleCkJCU5hZWlsIENvbW11bml0eQotMDAxNEIwICAgICAoYmFzZSAxNikJCU5hZWlsIENvbW11bml0eQotCQkJCSM1MDYgQWNlVHdpbiBUb3dlciAxLCBHdXJvLURvbmcKLQkJCQlTZW91bCBHdXJvLUd1IDE1Mjc3OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1CMSAgIChoZXgpCQlBdml0ZWMgQUIKLTAwMTRCMSAgICAgKGJhc2UgMTYpCQlBdml0ZWMgQUIKLQkJCQlCb3ggNzEzOQotCQkJCVNVTkRCWUJFUkcgIFNFLTE3NCAwNwotCQkJCVNXRURFTgotCi0wMC0xNC1CMiAgIChoZXgpCQltQ3ViZWxvZ2ljcyBDb3Jwb3JhdGlvbgotMDAxNEIyICAgICAoYmFzZSAxNikJCW1DdWJlbG9naWNzIENvcnBvcmF0aW9uCi0JCQkJNEYsIFVuaWJvb2tzIEIvRCwgNTE0LTEsIERvZ29rLURvbmcsIEthbmdOYW0KLQkJCQlTZW91bCAgMTM1LTI3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1CMyAgIChoZXgpCQlDb3JlU3RhciBJbnRlcm5hdGlvbmFsIENvcnAKLTAwMTRCMyAgICAgKGJhc2UgMTYpCQlDb3JlU3RhciBJbnRlcm5hdGlvbmFsIENvcnAKLQkJCQkxMDQ0IFNhbmR5IEhpbGwgUmQKLQkJCQlJcndpbiBQQSAxNTY0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQjQgICAoaGV4KQkJR2VuZXJhbCBEeW5hbWljcyBVbml0ZWQgS2luZ2RvbSBMdGQKLTAwMTRCNCAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIER5bmFtaWNzIFVuaXRlZCBLaW5nZG9tIEx0ZAotCQkJCUNhc3RsZWhhbSBSb2FkCi0JCQkJU3QgTGVvbmFyZHMgb24gU2VhIEVhc3QgU3Vzc2V4IFROMzggOU5KCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTQtQjUgICAoaGV4KQkJUEhZU0lPTUVUUklYLElOQwotMDAxNEI1ICAgICAoYmFzZSAxNikJCVBIWVNJT01FVFJJWCxJTkMKLQkJCQkxMDEgQklMTEVSSUNBIEFWRSAjNQotCQkJCU4uIEJJTExFUklDQSBNQSAwMTg2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQjYgICAoaGV4KQkJRW5zd2VyIFRlY2hub2xvZ3kgSW5jLgotMDAxNEI2ICAgICAoYmFzZSAxNikJCUVuc3dlciBUZWNobm9sb2d5IEluYy4KLQkJCQkxRiBOby43MCBTZWMuMiBDaHVuZyBTaHVuIFN0LgotCQkJCVRhaXBlaSAgMTE2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC1CNyAgIChoZXgpCQlBUiBJbmZvdGVrIEluYy4KLTAwMTRCNyAgICAgKGJhc2UgMTYpCQlBUiBJbmZvdGVrIEluYy4KLQkJCQk5RiwgTm8uMTg1LCBHYW5nUWlhbiBSb2FkCi0JCQkJTmVpSHUgVGVjaG5vbG9neSBQYXJrLAotCQkJCVRhaXBlaSAgMTE0OTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LUI4ICAgKGhleCkJCUhpbGwtUm9tCi0wMDE0QjggICAgIChiYXNlIDE2KQkJSGlsbC1Sb20KLQkJCQkxMTI1IEUuIFBlYXJsIFN0cmVldAotCQkJCUJhdGVzdmlsbGUgSU4gNDcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUI5ICAgKGhleCkJCU1TVEFSIFNFTUlDT05EVUNUT1IKLTAwMTRCOSAgICAgKGJhc2UgMTYpCQlNU1RBUiBTRU1JQ09ORFVDVE9SCi0JCQkJMTEtMTMgcnVlIFJlbukgSmFjcXVlcwotCQkJCUlzc3kgbGVzIE1vdWxpbmVhdXggIDkyMTMwCi0JCQkJRlJBTkNFCi0KLTAwLTE0LUJBICAgKGhleCkJCUNhcnZlcnMgU0EgZGUgQ1YKLTAwMTRCQSAgICAgKGJhc2UgMTYpCQlDYXJ2ZXJzIFNBIGRlIENWCi0JCQkJQWx2YXJleiBkZWwgQ2FzdGlsbG8gMTU1MAotCQkJCUNoYXB1bHRlcGVjIENvdW50cnkKLQkJCQlHdWFkYWxhamFyYSBKYWxpc2NvIDQ0NjIwCi0JCQkJTUVYSUNPCi0KLTAwLTE0LUJCICAgKGhleCkJCU9wZW4gSW50ZXJmYWNlIE5vcnRoIEFtZXJpY2EKLTAwMTRCQiAgICAgKGJhc2UgMTYpCQlPcGVuIEludGVyZmFjZSBOb3J0aCBBbWVyaWNhCi0JCQkJNTA2IDJuZCBBdmVudWUsIFN1aXRlIDQyMAotCQkJCVNlYXR0bGUgV0EgOTgxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUJDICAgKGhleCkJCVNZTkVDVElDIFRFTEVDT00gRVhQT1JUUyBQVlQuIExURC4KLTAwMTRCQyAgICAgKGJhc2UgMTYpCQlTWU5FQ1RJQyBURUxFQ09NIEVYUE9SVFMgUFZULiBMVEQuCi0JCQkJMTk2LCAxc3QgTWFpbiwgM3JkIFN0YWdlLCA0dGggQmxvY2sKLQkJCQlCYXNhdmVzaHdhciBOYWdhcgotCQkJCUJBTkdBTE9SRSAgNTYwMDc5Ci0JCQkJSU5ESUEKLQotMDAtMTQtQkQgICAoaGV4KQkJaW5jTkVUV09SS1MsIEluYwotMDAxNEJEICAgICAoYmFzZSAxNikJCWluY05FVFdPUktTLCBJbmMKLQkJCQkxOTggQnJpZ2h0b24gQXZlCi0JCQkJTG9uZyBCcmFuY2ggTkogMDc3NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUJFICAgKGhleCkJCVdpbmsgY29tbXVuaWNhdGlvbiB0ZWNobm9sb2d5IENPLkxURAotMDAxNEJFICAgICAoYmFzZSAxNikJCVdpbmsgY29tbXVuaWNhdGlvbiB0ZWNobm9sb2d5IENPLkxURAotCQkJCUh1aWppYW5nIEluZCBCbGRpbmcgRGFzaGkgVG93bgotCQkJCVBhbnl1IERpc3RyaWN0Ci0JCQkJR3VhbmcgemhvdSBHdWFuZyBkb25nIDUxMTQzMAotCQkJCUNISU5BCi0KLTAwLTE0LUJGICAgKGhleCkJCUNpc2NvLUxpbmtzeXMgTExDCi0wMDE0QkYgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cyBMTEMKLQkJCQkxMjEgVGhlb3J5IERyLgotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQzAgICAoaGV4KQkJU3ltc3RyZWFtIFRlY2hub2xvZ3kgR3JvdXAgTHRkCi0wMDE0QzAgICAgIChiYXNlIDE2KQkJU3ltc3RyZWFtIFRlY2hub2xvZ3kgR3JvdXAgTHRkCi0JCQkJTGV2ZWwgMSwgMyBDaGVzdGVyIFN0cmVldAotCQkJCU9ha2xlaWdoIFZpY3RvcmlhIDMxNjYKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTQtQzEgICAoaGV4KQkJVS5TLiBSb2JvdGljcyBDb3Jwb3JhdGlvbgotMDAxNEMxICAgICAoYmFzZSAxNikJCVUuUy4gUm9ib3RpY3MgQ29ycG9yYXRpb24KLQkJCQk5MzUgTmF0aW9uYWwgUGFya3dheQotCQkJCVNjaGF1bWJ1cmcgSUwgNjAxNzMtNTE1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQzIgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDE0QzIgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgVG9tYmFsbCBQYXJrd2F5Ci0JCQkJTVMwNzA0MDUKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1DMyAgIChoZXgpCQlTZWFnYXRlIFRlY2hub2xvZ3kgTExDCi0wMDE0QzMgICAgIChiYXNlIDE2KQkJU2VhZ2F0ZSBUZWNobm9sb2d5IExMQwotCQkJCTEyODAgRGlzYyBEcml2ZQotCQkJCVNoYWtvcGVlIE1OIDU1Mzc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1DNCAgIChoZXgpCQlWaXRlbGNvbSBNb2JpbGUgVGVjaG5vbG9neQotMDAxNEM0ICAgICAoYmFzZSAxNikJCVZpdGVsY29tIE1vYmlsZSBUZWNobm9sb2d5Ci0JCQkJUFRBLCBBdmRhLCBKdWFuIEzzcGV6IFBl8WFsdmVyLCBuuiA3Ci0JCQkJMjk1OTAsIENhbXBhbmlsbGFzCi0JCQkJQ2FtcGFuaWxsYXMuIE1hbGFnYS4gCi0JCQkJU1BBSU4KLQotMDAtMTQtQzUgICAoaGV4KQkJQWxpdmUgVGVjaG5vbG9naWVzIFB0eSBMdGQKLTAwMTRDNSAgICAgKGJhc2UgMTYpCQlBbGl2ZSBUZWNobm9sb2dpZXMgUHR5IEx0ZAotCQkJCTExIFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlBcnVuZGVsIFF1ZWVuc2xhbmQgNDIxNAotCQkJCUFVU1RSQUxJQQotCi0wMC0xNC1DNiAgIChoZXgpCQlRdWl4YW50IEx0ZAotMDAxNEM2ICAgICAoYmFzZSAxNikJCVF1aXhhbnQgTHRkCi0JCQkJNjFBIE1vdW50IFBsZWFzYW50Ci0JCQkJQmlnZ2luIEhpbGwKLQkJCQlFbmdsYW5kIEtlbnQgVE4xNiAzVFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNC1DNyAgIChoZXgpCQlOb3J0ZWwKLTAwMTRDNyAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNC1DOCAgIChoZXgpCQlDb250ZW1wb3JhcnkgUmVzZWFyY2ggQ29ycAotMDAxNEM4ICAgICAoYmFzZSAxNikJCUNvbnRlbXBvcmFyeSBSZXNlYXJjaCBDb3JwCi0JCQkJMTc2MzAgRGF2ZW5wb3J0IFJkCi0JCQkJU1RFIDExMwotCQkJCURhbGxhcyBUWCA3NTI1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQzkgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDE0QzkgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1DQSAgIChoZXgpCQlLZXkgUmFkaW8gU3lzdGVtcyBMaW1pdGVkCi0wMDE0Q0EgICAgIChiYXNlIDE2KQkJS2V5IFJhZGlvIFN5c3RlbXMgTGltaXRlZAotCQkJCVZlbnVzIEhvdXNlCi0JCQkJQ2FsbGV2YSBQYXJrCi0JCQkJQWxkZXJtYXN0b24gQmVya3NoaXJlIFJHNyA4REEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNC1DQiAgIChoZXgpCQlMaWZlU3luYyBDb3Jwb3JhdGlvbgotMDAxNENCICAgICAoYmFzZSAxNikJCUxpZmVTeW5jIENvcnBvcmF0aW9uCi0JCQkJMSBFIEJyb3dhcmQgQm91bGV2YXJkLCBTdWl0ZSAxNzAxCi0JCQkJRm9ydCBMYXVkZXJkYWxlIEZsb3JpZGEgMzMzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUNDICAgKGhleCkJCVpldGVjLCBJbmMuCi0wMDE0Q0MgICAgIChiYXNlIDE2KQkJWmV0ZWMsIEluYy4KLQkJCQk4MjI2IEJyYWNrZW4gUGxhY2UgU0UKLQkJCQlTbm9xdWFsbWllIFdBIDk4MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1DRCAgIChoZXgpCQlEaWdpdGFsWm9uZSBDby4sIEx0ZC4KLTAwMTRDRCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsWm9uZSBDby4sIEx0ZC4KLQkJCQlOby4gMTAwMSBFJkMgVmVudHVyZURyZWFtVG93ZXIyCi0JCQkJMTk3LTEwIEd1cm8tZG9uZywgR3Vyby1ndQotCQkJCVNlb3VsICAxNTItODQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUNFICAgKGhleCkJCU5GIENPUlBPUkFUSU9OCi0wMDE0Q0UgICAgIChiYXNlIDE2KQkJTkYgQ09SUE9SQVRJT04KLQkJCQk2LTMtMjAsIFRzdW5hc2hpbWEtaGlnYXNoaQotCQkJCUtvaG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMy04NTA4Ci0JCQkJSkFQQU4KLQotMDAtMTQtQ0YgICAoaGV4KQkJSU5WSVNJTyBDb21tdW5pY2F0aW9ucwotMDAxNENGICAgICAoYmFzZSAxNikJCUlOVklTSU8gQ29tbXVuaWNhdGlvbnMKLQkJCQlTdGFtaG9sbWVuIDE1NwotCQkJCUh2aWRvdnJlICAyNjUwCi0JCQkJREVOTUFSSwotCi0wMC0xNC1EMCAgIChoZXgpCQlCVEkgU3lzdGVtcyBJbmMuCi0wMDE0RDAgICAgIChiYXNlIDE2KQkJQlRJIFN5c3RlbXMgSW5jLgotCQkJCTUwIE5vcnRoc2lkZSBSb2FkCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJIIDVaNgotCQkJCUNBTkFEQQotCi0wMC0xNC1EMSAgIChoZXgpCQlUUkVORG5ldAotMDAxNEQxICAgICAoYmFzZSAxNikJCVRSRU5EbmV0Ci0JCQkJMjA2NzUgTWFuaGF0dGFuIFBsYWNlCi0JCQkJVG9ycmFuY2UgQ0EgOTA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUQyICAgKGhleCkJCUtZVUtJIENPUlBPUkFUSU9OCi0wMDE0RDIgICAgIChiYXNlIDE2KQkJS1lVS0kgQ09SUE9SQVRJT04KLQkJCQk0LTE5LTE4IFNISU1JWlUsTUlOQU1JLUtVCi0JCQkJRlVLVU9LQSAgODE1LTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xNC1EMyAgIChoZXgpCQlTRVBTQQotMDAxNEQzICAgICAoYmFzZSAxNikJCVNFUFNBCi0JCQkJY2FsbGUgQWxiYXRyb3MsIDcgeSA5Ci0JCQkJUG9sLiBJbmQuIExhIEVzdGFjafNuCi0JCQkJUElOVE8gTWFkcmlkIDI4MzIwCi0JCQkJU1BBSU4KLQotMDAtMTQtRDQgICAoaGV4KQkJSyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDE0RDQgICAgIChiYXNlIDE2KQkJSyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMzI1IEdhbmJhcmEKLQkJCQlLYW1pLW1hY2hpCi0JCQkJS2FtaS1ndW4gTWl5YWdpLWtlbiA5ODEtNDI2MwotCQkJCUpBUEFOCi0KLTAwLTE0LUQ1ICAgKGhleCkJCURhdGFuZyBUZWxlY29tIFRlY2hub2xvZ3kgQ08uICwgTENELE9wdGljYWwgQ29tbXVuaWNhdGlvbiBCcgotMDAxNEQ1ICAgICAoYmFzZSAxNikJCURhdGFuZyBUZWxlY29tIFRlY2hub2xvZ3kgQ08uICwgTENELE9wdGljYWwgQ29tbXVuaWNhdGlvbiBCcgotCQkJCTNyZCBGbG9vcixCdWlsZGluZyA4LEhpLVRlY2ggSW5jdWJhdGlvbiBQYXJrLAotCQkJCU5hbnlhbnhpYW4sVGlhbmZ1IEF2ZSxjaGVuZ2R1IEhpLVRlY2ggWm9uZSwKLQkJCQlDaGVuZ0R1IFNpQ2h1YW4gNjEwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMTQtRDYgICAoaGV4KQkJSmVvbmdtaW4gRWxlY3Ryb25pY3MgQ28uLEx0ZC4KLTAwMTRENiAgICAgKGJhc2UgMTYpCQlKZW9uZ21pbiBFbGVjdHJvbmljcyBDby4sTHRkLgotCQkJCSM3MTAsIEJ5dWtzYW4gRGlnaXRhbCBWYWxsZXkgMiwKLQkJCQlLYXNhbi1Eb25nLCBLZXVtY2hlb24tR3UsCi0JCQkJU2VvdWwgIDE1MyA3ODMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtRDcgICAoaGV4KQkJRGF0YXN0b3JlIFRlY2hub2xvZ3kgQ29ycAotMDAxNEQ3ICAgICAoYmFzZSAxNikJCURhdGFzdG9yZSBUZWNobm9sb2d5IENvcnAKLQkJCQk5RiwgTk8uMTAsIFNFQy4xLCBDaHVuZyBIc2luZyBSRC4sIFd1LUt1Ci0JCQkJVGFpcGVpIEhzaWVuLCAgMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC1EOCAgIChoZXgpCQliaW8tbG9naWMgU0EKLTAwMTREOCAgICAgKGJhc2UgMTYpCQliaW8tbG9naWMgU0EKLQkJCQkxLCBydWUgZGUgbCdFdXJvcGUKLQkJCQlDTEFJWCAgMzg2NDAKLQkJCQlGUkFOQ0UKLQotMDAtMTQtRDkgICAoaGV4KQkJSVAgRmFicmljcywgSW5jLgotMDAxNEQ5ICAgICAoYmFzZSAxNikJCUlQIEZhYnJpY3MsIEluYy4KLQkJCQkxNDk2NCBOVyBHcmVlbmJyaWVyIFBhcmt3YXkKLQkJCQlCZWF2ZXJ0b24gT3JlZ29uIDk3MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1EQSAgIChoZXgpCQlIdW50bGVpZ2ggSGVhbHRoY2FyZQotMDAxNERBICAgICAoYmFzZSAxNikJCUh1bnRsZWlnaCBIZWFsdGhjYXJlCi0JCQkJSHVudGxlaWdoIEhlYWx0aGNhcmUgLSBEaWFnbm9zdGljIFByb2R1Y3RzIERpdmlzaW9uCi0JCQkJMzUgUG9ydG1hbm1vb3IgUm9hZAotCQkJCUNhcmRpZmYgIENGMjQgNUhOCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTQtREIgICAoaGV4KQkJRWxtYSBUcmVuZXcgRWxlY3Ryb25pYyBHbWJICi0wMDE0REIgICAgIChiYXNlIDE2KQkJRWxtYSBUcmVuZXcgRWxlY3Ryb25pYyBHbWJICi0JCQkJU3R1dHRnYXJ0ZXIgU3RyYXNzZSAxMQotCQkJCVBmb3J6aGVpbSBCVyA3NTE3OQotCQkJCUdFUk1BTlkKLQotMDAtMTQtREMgICAoaGV4KQkJQ29tbXVuaWNhdGlvbiBTeXN0ZW0gRGVzaWduICYgTWFudWZhY3R1cmluZyAoQ1NETSkKLTAwMTREQyAgICAgKGJhc2UgMTYpCQlDb21tdW5pY2F0aW9uIFN5c3RlbSBEZXNpZ24gJiBNYW51ZmFjdHVyaW5nIChDU0RNKQotCQkJCVBvc3RidXMgMTgxCi0JCQkJQnVzc3VtIE5IIDE0MDAgQUQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNC1ERCAgIChoZXgpCQlDb3ZlcmdlbmNlIEluYy4KLTAwMTRERCAgICAgKGJhc2UgMTYpCQlDb3ZlcmdlbmNlIEluYy4KLQkJCQlPbmUgQ2xvY2sgVG93ZXIgUGxhY2UsIFN1aXRlIDIwMAotCQkJCU1heW5hcmQgTUEgMDE3NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LURFICAgKGhleCkJCVNhZ2UgSW5zdHJ1bWVudHMgSW5jLgotMDAxNERFICAgICAoYmFzZSAxNikJCVNhZ2UgSW5zdHJ1bWVudHMgSW5jLgotCQkJCTI0MCBBaXJwb3J0IEJsdmQuCi0JCQkJRnJlZWRvbSBDQSA5NTAxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtREYgICAoaGV4KQkJSEktUCBUZWNoIENvcnBvcmF0aW9uCi0wMDE0REYgICAgIChiYXNlIDE2KQkJSEktUCBUZWNoIENvcnBvcmF0aW9uCi0JCQkJMS0yNy0yMyBIaWdhc2hpdG9rb3JvemF3YQotCQkJCVRva29yb3phd2EgU2FpdGFtYSAzNTktMDAyMQotCQkJCUpBUEFOCi0KLTAwLTE0LUUwICAgKGhleCkJCUxFVCdTIENvcnBvcmF0aW9uCi0wMDE0RTAgICAgIChiYXNlIDE2KQkJTEVUJ1MgQ29ycG9yYXRpb24KLQkJCQlCYW5jaG8gQmxkZy4gNEYsIDItMTgtMjAgTWFydW5vdWNoaSwgTmFrYQotCQkJCU5hZ295YSBBaWNoaSA0NjAtMDAwMgotCQkJCUpBUEFOCi0KLTAwLTE0LUUxICAgKGhleCkJCURhdGEgRGlzcGxheSBBRwotMDAxNEUxICAgICAoYmFzZSAxNikJCURhdGEgRGlzcGxheSBBRwotCQkJCUluZHVzdHJpZXN0cmHfZSAxCi0JCQkJR2VybWVyaW5nIEJheWVybiA4MjExMAotCQkJCUdFUk1BTlkKLQotMDAtMTQtRTIgICAoaGV4KQkJZGF0YWNvbSBzeXN0ZW1zIGluYy4KLTAwMTRFMiAgICAgKGJhc2UgMTYpCQlkYXRhY29tIHN5c3RlbXMgaW5jLgotCQkJCTkgYWRsZXIgZHJpdmUKLQkJCQllYXN0IHN5cmFjdXNlIG4ueS4gMTMwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUUzICAgKGhleCkJCW1tLWxhYiBHbWJICi0wMDE0RTMgICAgIChiYXNlIDE2KQkJbW0tbGFiIEdtYkgKLQkJCQlTdGFtbWhlaW1lciBTdHJhc3NlIDEwCi0JCQkJRC03MDgwNgotCQkJCUtvcm53ZXN0aGVpbSAgCi0JCQkJR0VSTUFOWQotCi0wMC0xNC1FNCAgIChoZXgpCQlJbnRlZ3JhbCBUZWNobm9sb2dpZXMKLTAwMTRFNCAgICAgKGJhc2UgMTYpCQlJbnRlZ3JhbCBUZWNobm9sb2dpZXMKLQkJCQk5ODU1IENyb3NzcG9pbnQgQmx2ZAotCQkJCVN0ZSAxMjYKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyNTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUU1ICAgKGhleCkJCUFsdGljYXN0Ci0wMDE0RTUgICAgIChiYXNlIDE2KQkJQWx0aWNhc3QKLQkJCQkxNnRoIGZsb29yLCBOYXJhIEJsZGcsIDEzMjgtMwotCQkJCVNlb2Noby1kb25nLCBTZW9jaG8tZ3UsCi0JCQkJU2VvdWwgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1FNiAgIChoZXgpCQlBSU0gSW5mcmFyb3Rtb2R1bGUgR21iSAotMDAxNEU2ICAgICAoYmFzZSAxNikJCUFJTSBJbmZyYXJvdG1vZHVsZSBHbWJICi0JCQkJU29lZmxpbmdlcnN0ci4gMTAwCi0JCQkJVWxtIEJXIDg5MDc3Ci0JCQkJR0VSTUFOWQotCi0wMC0xNC1FNyAgIChoZXgpCQlTdG9saW54LC4gSW5jCi0wMDE0RTcgICAgIChiYXNlIDE2KQkJU3RvbGlueCwuIEluYwotCQkJCTNGIE9oY2hhbmcgQmxkZy4sIDYxIFlhbmdqYWUtZG9uZwotCQkJCVNlb2Noby1ndQotCQkJCVNlb3VsICAxMzctODg5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUU4ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE0RTggICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1FOSAgIChoZXgpCQlOb3J0ZWNoIEludGVybmF0aW9uYWwKLTAwMTRFOSAgICAgKGJhc2UgMTYpCQlOb3J0ZWNoIEludGVybmF0aW9uYWwKLQkJCQkzMkEgV2lnYW50aG9ycGUgUm9hZAotCQkJCVdpbGxvd3RvbiBIdWIKLQkJCQlQaWV0ZXJtYXJ0aXpidXJnIEt3YVp1bHUgTmF0YWwgMzIwMQotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xNC1FQSAgIChoZXgpCQlTIERpZ20gSW5jLiAoU2FmZSBQYXJhZGlnbSBJbmMuKQotMDAxNEVBICAgICAoYmFzZSAxNikJCVMgRGlnbSBJbmMuIChTYWZlIFBhcmFkaWdtIEluYy4pCi0JCQkJNUYsIFNoaW4tYW4gQmxkZy4gODktOCwKLQkJCQlNb29uanVuZy1Eb25nCi0JCQkJU29uZ3BhLUd1IFNlb3VsIDEzOC0yMDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtRUIgICAoaGV4KQkJQXdhcmVQb2ludCBDb3Jwb3JhdGlvbgotMDAxNEVCICAgICAoYmFzZSAxNikJCUF3YXJlUG9pbnQgQ29ycG9yYXRpb24KLQkJCQk4ODk5IFVuaXZlcnNpdHkgQ2VudGVyIExhbmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUVDICAgKGhleCkJCUFjcm8gVGVsZWNvbQotMDAxNEVDICAgICAoYmFzZSAxNikJCUFjcm8gVGVsZWNvbQotCQkJCTcxNCBXb29saW0gZS1CaXogQ2VudGVyIDE3MC01IEd1cm8tZG9uZwotCQkJCUd1cm8tR3UgU2VvdWwgMTUyLTc2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1FRCAgIChoZXgpCQlBaXJhaywgSW5jLgotMDAxNEVEICAgICAoYmFzZSAxNikJCUFpcmFrLCBJbmMuCi0JCQkJMjE2NDEgQmVhdW1lYWRlIENpcmNsZQotCQkJCVN1aXRlIDMwMAotCQkJCUFzaGJ1cm4gVmlyZ2luaWEgMjAxNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUVFICAgKGhleCkJCVdlc3Rlcm4gRGlnaXRhbCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTRFRSAgICAgKGJhc2UgMTYpCQlXZXN0ZXJuIERpZ2l0YWwgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjA1MTEgTGFrZSBGb3Jlc3QgRHIuCi0JCQkJTGFrZSBGb3Jlc3QgQ2EgOTI2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUVGICAgKGhleCkJCVRaZXJvIFRlY2hub2xvZ2llcywgSW5jLgotMDAxNEVGICAgICAoYmFzZSAxNikJCVRaZXJvIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTQ1NSBXLiBNYXVkZSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUYwICAgKGhleCkJCUJ1c2luZXNzIFNlY3VyaXR5IE9MIEFCCi0wMDE0RjAgICAgIChiYXNlIDE2KQkJQnVzaW5lc3MgU2VjdXJpdHkgT0wgQUIKLQkJCQlCb3ggMTEwIDY1Ci0JCQkJU3RvcmEgUmFieSBCeWF2YWcgODgKLQkJCQlMdW5kICAyMjAgMTEKLQkJCQlTV0VERU4KLQotMDAtMTQtRjEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNEYxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRjIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNEYyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRjMgICAoaGV4KQkJVmlYUyBTeXN0ZW1zIEluYwotMDAxNEYzICAgICAoYmFzZSAxNikJCVZpWFMgU3lzdGVtcyBJbmMKLQkJCQkyMjM1IFNoZXBwYXJkIEF2ZSBFYXN0Ci0JCQkJU3VpdGUxNzA1Ci0JCQkJVE9ST05UTyBPTlRBUklPIE0ySiA1QjUKLQkJCQlDQU5BREEKLQotMDAtMTQtRjQgICAoaGV4KQkJRGVrVGVjIERpZ2l0YWwgVmlkZW8gQi5WLgotMDAxNEY0ICAgICAoYmFzZSAxNikJCURla1RlYyBEaWdpdGFsIFZpZGVvIEIuVi4KLQkJCQlWYW4gUmllYmVlY2t3ZWcgNDNBCi0JCQkJSGlsdmVyc3VtIE5IIDEyMTJBRQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE0LUY1ICAgKGhleCkJCU9TSSBTZWN1cml0eSBEZXZpY2VzCi0wMDE0RjUgICAgIChiYXNlIDE2KQkJT1NJIFNlY3VyaXR5IERldmljZXMKLQkJCQkxNTgwIEpheWtlbiBXYXkKLQkJCQlDaHVsYSBWaXN0YSBDYWxpZm9ybmlhIDkxOTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1GNiAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzLCBJbmMuCi0wMDE0RjYgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcywgSW5jLgotCQkJCTExOTQgTi4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1GNyAgIChoZXgpCQlDcmV2aXMKLTAwMTRGNyAgICAgKGJhc2UgMTYpCQlDcmV2aXMKLQkJCQlELTExRiwgRGlnaXRhbCBFbXBpcmUgQmxkZy4sIDk4MC0zCi0JCQkJWW91bmd0b25nCi0JCQkJU3V3b24gIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1GOCAgIChoZXgpCQlTY2llbnRpZmljIEF0bGFudGEKLTAwMTRGOCAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljIEF0bGFudGEKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTVMgNS4yLjQyOAotCQkJCUxhd3JlbmNldmlsbGUgR2EgMzAwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUY5ICAgKGhleCkJCVZhbnRhZ2UgQ29udHJvbHMKLTAwMTRGOSAgICAgKGJhc2UgMTYpCQlWYW50YWdlIENvbnRyb2xzCi0JCQkJMTA2MSBTb3V0aCA4MDAgRWFzdAotCQkJCU9yZW0gVVQgODQwOTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUZBICAgKGhleCkJCUFzR2EgUy5BLgotMDAxNEZBICAgICAoYmFzZSAxNikJCUFzR2EgUy5BLgotCQkJCVJvZCBSb2JlcnRvIE1vcmVpcmEgS20gMDQKLQkJCQlQYXVsaW5pYSBTYW8gUGF1bG8gMTMxNDAtMDAwCi0JCQkJQlJBWklMCi0KLTAwLTE0LUZCICAgKGhleCkJCVRlY2huaWNhbCBTb2x1dGlvbnMgSW5jLgotMDAxNEZCICAgICAoYmFzZSAxNikJCVRlY2huaWNhbCBTb2x1dGlvbnMgSW5jLgotCQkJCTEtNzE1NyBIb25leW1hbiBTdHJlZXQKLQkJCQlEZWx0YSBCQyBWNEcgMUUyCi0JCQkJQ0FOQURBCi0KLTAwLTE0LUZDICAgKGhleCkJCUV4dGFuZG9uLCBJbmMuCi0wMDE0RkMgICAgIChiYXNlIDE2KQkJRXh0YW5kb24sIEluYy4KLQkJCQkzOTM1MCBDaXZpYyBDZW50ZXIgRHJpdmUgU3RlLiAxNjAKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1GRCAgIChoZXgpCQlUaGVjdXMgVGVjaG5vbG9neSBDb3JwLgotMDAxNEZEICAgICAoYmFzZSAxNikJCVRoZWN1cyBUZWNobm9sb2d5IENvcnAuCi0JCQkJMTVGLixOby4gNzksU2VjLiAxLFNpbnRhaSA1dGggUkQuLAotCQkJCVNpamhpaCBDaXR5IFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC1GRSAgIChoZXgpCQlBcnRlY2ggRWxlY3Ryb25pY3MKLTAwMTRGRSAgICAgKGJhc2UgMTYpCQlBcnRlY2ggRWxlY3Ryb25pY3MKLQkJCQkjMzAxLCBZYW5namFlIEJsZGcuLCAyNzYtMgotCQkJCVlhbmdqYWUtRG9uZywgU2VvY2hvLUt1Ci0JCQkJU2VvdWwgIDEzNy04OTUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtRkYgICAoaGV4KQkJUHJlY2lzZSBBdXRvbWF0aW9uLCBJbmMuCi0wMDE0RkYgICAgIChiYXNlIDE2KQkJUHJlY2lzZSBBdXRvbWF0aW9uLCBJbmMuCi0JCQkJMTQwMiBBbGV4YW5kcmEgQmx2ZAotCQkJCUNyeXN0YWwgTGFrZSBJTCA2MDAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMDAgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDE1MDAgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xNS0wMSAgIChoZXgpCQlMZXhCb3gKLTAwMTUwMSAgICAgKGJhc2UgMTYpCQlMZXhCb3gKLQkJCQkzLCBhdmVudWUgRGlkaWVyIERhdXJhdAotCQkJCVRPVUxPVVNFICAzMTQwMAotCQkJCUZSQU5DRQotCi0wMC0xNS0wMiAgIChoZXgpCQlCRVRBIHRlY2gKLTAwMTUwMiAgICAgKGJhc2UgMTYpCQlCRVRBIHRlY2gKLQkJCQkxNSBydWUgZCdhcG9sbG8KLQkJCQlMJ1VOSU9OICAzMTI0MAotCQkJCUZSQU5DRQotCi0wMC0xNS0wMyAgIChoZXgpCQlQUk9GSWNvbW1zIHMuci5vLgotMDAxNTAzICAgICAoYmFzZSAxNikJCVBST0ZJY29tbXMgcy5yLm8uCi0JCQkJVHVyZ2VuZXZvdmEgNQotCQkJCUJybm8gRVUvRXVyb3BlIDYxOCAwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTE1LTA0ICAgKGhleCkJCUdBTUUgUExVUyBDTy4sIExURC4KLTAwMTUwNCAgICAgKGJhc2UgMTYpCQlHQU1FIFBMVVMgQ08uLCBMVEQuCi0JCQkJMTY0LTU3LCBZZW9uZ2h3YS1kb25nLCBKYW5nYW4tZ3UKLQkJCQlTdXdvbiBHeWVvbmdnaS1kbyA0NDAtODE4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTA1ICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0wMDE1MDUgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLQkJCQk3NjAgTm9ydGggTWFyeSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTA2ICAgKGhleCkJCU5lbyBQaG90b25pY3MKLTAwMTUwNiAgICAgKGJhc2UgMTYpCQlOZW8gUGhvdG9uaWNzCi0JCQkJOTEwIEUuIENhbGlmb3JuaWEgU3QuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0wNyAgIChoZXgpCQlSZW5haXNzYW5jZSBMZWFybmluZyBJbmMKLTAwMTUwNyAgICAgKGJhc2UgMTYpCQlSZW5haXNzYW5jZSBMZWFybmluZyBJbmMKLQkJCQkyOTExIFBlYWNoIFN0cmVldAotCQkJCVBPIEJveCA4MDM2Ci0JCQkJV2lzY29uc2luIFJhcGlkcyBXaXNjb25zaW4gNTQ0OTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTA4ICAgKGhleCkJCUdsb2JhbCBUYXJnZXQgRW50ZXJwcmlzZSBJbmMKLTAwMTUwOCAgICAgKGJhc2UgMTYpCQlHbG9iYWwgVGFyZ2V0IEVudGVycHJpc2UgSW5jCi0JCQkJNUYsIE5vLiAxODYsIFNlYy4gMiwgQ2h1bmctSHNpbmcgUmQuLAotCQkJCUhzaW4gVGllbiwgVGFpcGVpIGNvdW50eSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTA5ICAgKGhleCkJCVBsdXMgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAxNTA5ICAgICAoYmFzZSAxNikJCVBsdXMgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCU9mZmljZSAjMjA1LCAgR2F5YW5nIFRlY2huby10b3duLAotCQkJCUdheWFuZyAzLSBkb25nLCBHYW5nc2VvLWt1Ci0JCQkJU2VvdWwgMTU3LTgxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0wQSAgIChoZXgpCQlTb25vYSBTeXN0ZW1zLCBJbmMKLTAwMTUwQSAgICAgKGJhc2UgMTYpCQlTb25vYSBTeXN0ZW1zLCBJbmMKLQkJCQkzOTAwIEZyZWVkb20gQ2lyY2xlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTBCICAgKGhleCkJCVNBR0UgSU5GT1RFQ0ggTFRELgotMDAxNTBCICAgICAoYmFzZSAxNikJCVNBR0UgSU5GT1RFQ0ggTFRELgotCQkJCTNGLCBObzMwLCBJTkRVU1RSWSBFLiA5VEggUkQuLFNDSUVOQ0UtQkFTRUQKLQkJCQlJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOLUNIVSBUQUlXQU4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS0wQyAgIChoZXgpCQlBVk0gR21iSAotMDAxNTBDICAgICAoYmFzZSAxNikJCUFWTSBHbWJICi0JCQkJQWx0LU1vYWJpdCA5NQotCQkJCUJlcmxpbiAgMTA1NTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTBEICAgKGhleCkJCUhvYW5hIE1lZGljYWwsIEluYy4KLTAwMTUwRCAgICAgKGJhc2UgMTYpCQlIb2FuYSBNZWRpY2FsLCBJbmMuCi0JCQkJODI4IEZvcnQgU3RyZWV0IE1hbGwKLQkJCQlTdWl0ZSA2MjAKLQkJCQlIb25vbHVsdSBISSA5NjgxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMEUgICAoaGV4KQkJT1BFTkJSQUlOIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLTAwMTUwRSAgICAgKGJhc2UgMTYpCQlPUEVOQlJBSU4gVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCSM4MDQsQU5ZQU5HIEstQ0VOVEVSLDE1OTEtOSAsIEJVUklNLURPTkcsRE9OR0FOLUdVLAotCQkJCUFOWUFORyBLWVVOR0dJLURPIDQzMS04MTUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMEYgICAoaGV4KQkJbWluZ2pvbmcKLTAwMTUwRiAgICAgKGJhc2UgMTYpCQltaW5nam9uZwotCQkJCThGLE5PLjEsTEFORSAxNixTWkUgQ0hVQU4gUk9BRCxTRUMuMixQQU5DSElBTyBDSVRZLgotCQkJCVRBSVBFSSAgMjIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS0xMCAgIChoZXgpCQlUZWNoc3BoZXJlIENvLiwgTHRkCi0wMDE1MTAgICAgIChiYXNlIDE2KQkJVGVjaHNwaGVyZSBDby4sIEx0ZAotCQkJCTRGLCBXb25pbCBCbGRnLiwgOTgwLTU0LCBCYW5nYmFlLWRvbmcsIFNlb0Noby1ndQotCQkJCVNlb3VsIDEzNy0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMTEgICAoaGV4KQkJRGF0YSBDZW50ZXIgU3lzdGVtcwotMDAxNTExICAgICAoYmFzZSAxNikJCURhdGEgQ2VudGVyIFN5c3RlbXMKLQkJCQkxNDgwMiBWZW50dXJlIERyaXZlCi0JCQkJRGFsbGFzIFRYIDc1MjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0xMiAgIChoZXgpCQladXJpY2ggVW5pdmVyc2l0eSBvZiBBcHBsaWVkIFNjaWVuY2VzCi0wMDE1MTIgICAgIChiYXNlIDE2KQkJWnVyaWNoIFVuaXZlcnNpdHkgb2YgQXBwbGllZCBTY2llbmNlcwotCQkJCVRlY2huaWt1bXN0cmFzc2UgOQotCQkJCVdpbnRlcnRodXIgWkggQ0gtODQwMQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE1LTEzICAgKGhleCkJCUVGUyBzYXMKLTAwMTUxMyAgICAgKGJhc2UgMTYpCQlFRlMgc2FzCi0JCQkJQlAgMzQKLQkJCQlNSUxMRVJZICBGLTY5MzkwCi0JCQkJRlJBTkNFCi0KLTAwLTE1LTE0ICAgKGhleCkJCUh1IFpob3UgTkFWQSBOZXR3b3JrcyZFbGVjdHJvbmljcyBMdGQuCi0wMDE1MTQgICAgIChiYXNlIDE2KQkJSHUgWmhvdSBOQVZBIE5ldHdvcmtzJkVsZWN0cm9uaWNzIEx0ZC4KLQkJCQkzL0YsTm8uMzI4LTQsR3VhbmcgWXVhbiBSZC4KLQkJCQlIdSBaaG91IFpoZSBKaWFuZyAzMTMwMDAKLQkJCQlDSElOQQotCi0wMC0xNS0xNSAgIChoZXgpCQlMZWlwb2xkK0NvLkdtYkgKLTAwMTUxNSAgICAgKGJhc2UgMTYpCQlMZWlwb2xkK0NvLkdtYkgKLQkJCQlLcmV1endpZXNlIDEyCi0JCQkJUm9ja2VuaGF1c2VuIFJMUCBELTY3ODA2Ci0JCQkJR0VSTUFOWQotCi0wMC0xNS0xNiAgIChoZXgpCQlVUklFTCBTWVNURU1TIElOQy4KLTAwMTUxNiAgICAgKGJhc2UgMTYpCQlVUklFTCBTWVNURU1TIElOQy4KLQkJCQkjMjA0IEJ5dWNrc2FuIERpZ2l0YWx2YWxsZXkgMXN0LCAyMTItMTYsIEd1cm8tZG9uZywgR3Vyby1ndQotCQkJCVNlb3VsICAxNTItMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTE3ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxNTE3ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKbG4gSGktVGVjaCAgMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xNS0xOCAgIChoZXgpCQlTaGVuemhlbiAxME1PT05TIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ08uLEx0ZAotMDAxNTE4ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIDEwTU9PTlMgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDTy4sTHRkCi0JCQkJQWRkOjNGLEh1YXhpbmcgYnVpbGRpbmcsIFFpYW9YaWFuZyByb2FkLAotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwNTMKLQkJCQlDSElOQQotCi0wMC0xNS0xOSAgIChoZXgpCQlTdG9yZUFnZSBOZXR3b3JraW5nIFRlY2hub2xvZ2llcwotMDAxNTE5ICAgICAoYmFzZSAxNikJCVN0b3JlQWdlIE5ldHdvcmtpbmcgVGVjaG5vbG9naWVzCi0JCQkJNjMgQmFyLVllaHVkYSBzdC4KLQkJCQlOZXNoZXIgIDM2NjUxCi0JCQkJSVNSQUVMCi0KLTAwLTE1LTFBICAgKGhleCkJCUh1bnRlciBFbmdpbmVlcmluZyBDb21wYW55Ci0wMDE1MUEgICAgIChiYXNlIDE2KQkJSHVudGVyIEVuZ2luZWVyaW5nIENvbXBhbnkKLQkJCQkxMTI1MCBIdW50ZXIgRHJpdmUKLQkJCQlCcmlkZ2V0b24gTWlzc291cmkgNjMwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTFCICAgKGhleCkJCUlzaWxvbiBTeXN0ZW1zIEluYy4KLTAwMTUxQiAgICAgKGJhc2UgMTYpCQlJc2lsb24gU3lzdGVtcyBJbmMuCi0JCQkJMzEwMSBXZXN0ZXJuIEF2ZW51ZQotCQkJCVNlYXR0bGUgV0EgOTgxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTFDICAgKGhleCkJCUxFTkVDTwotMDAxNTFDICAgICAoYmFzZSAxNikJCUxFTkVDTwotCQkJCTZ0aC4sRG9uZyBNb29uIEdvb2QgTW9ybmluZyBUb3dlcgotCQkJCTEzMjMgQmVha3Nlb2stRG9uZyBJbHNhbi1HdQotCQkJCUt5ZW9uZyBLaS1EbyBHb1lhbmctU2kgNDExLTgxNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0xRCAgIChoZXgpCQlNMkkgQ09SUE9SQVRJT04KLTAwMTUxRCAgICAgKGJhc2UgMTYpCQlNMkkgQ09SUE9SQVRJT04KLQkJCQlLeW9uZ2dpIFZlbnR1cmUgQW55YW5nIHRlY2huaWNhbCBjZW50ZXIsIDEzdGggRmxvb3IsIDU3Mi01LCBBbnlhbmcgOC1Eb25nLCBNYW5hbi1HdQotCQkJCUFueWFuZy1TaGkgS3lvbmdnaS1EbyA0MzAtNzMxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTFFICAgKGhleCkJCUV0aGVybmV0IFBvd2VybGluayBTdGFuZGFyZGl6YXRpb24gR3JvdXAgKEVQU0cpCi0wMDE1MUUgICAgIChiYXNlIDE2KQkJRXRoZXJuZXQgUG93ZXJsaW5rIFN0YW5kYXJkaXphdGlvbiBHcm91cCAoRVBTRykKLQkJCQljL28gWnVyaWNoIFVuaXZlcnNpdHkgb2YgQXBwbGllZCBTY2llbmNlcwotCQkJCVRlY2huaWt1bXN0cmFzc2UgOQotCQkJCUNILTg0MDEgV2ludGVydGh1ciAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNS0xRiAgIChoZXgpCQlNdWx0aXZpc2lvbiBJbnRlbGxpZ2VudCBTdXJ2ZWlsbGFuY2UgKEhvbmcgS29uZykgTHRkCi0wMDE1MUYgICAgIChiYXNlIDE2KQkJTXVsdGl2aXNpb24gSW50ZWxsaWdlbnQgU3VydmVpbGxhbmNlIChIb25nIEtvbmcpIEx0ZAotCQkJCTI2L0YsIEFpdGtlbiBWYW5zb24gQ2VudHJlLAotCQkJCTYxIEhvaSBZdWVuIFJvYWQsIEt3dW4gVG9uZywgS293bG9vbiwKLQkJCQlIT05HIEtPTkcKLQotMDAtMTUtMjAgICAoaGV4KQkJUmFkaW9jcmFmdHMgQVMKLTAwMTUyMCAgICAgKGJhc2UgMTYpCQlSYWRpb2NyYWZ0cyBBUwotCQkJCVNhbmRha2VydmVpZW4gNjQKLQkJCQlPc2xvIDA0ODQKLQkJCQlOT1JXQVkKLQotMDAtMTUtMjEgICAoaGV4KQkJSG9yb3F1YXJ0egotMDAxNTIxICAgICAoYmFzZSAxNikJCUhvcm9xdWFydHoKLQkJCQlCUCAyNTEKLQkJCQlGT05URU5BWSBMRSBDT01URSBWRU5ERUUgODUyMDUKLQkJCQlGUkFOQ0UKLQotMDAtMTUtMjIgICAoaGV4KQkJRGVhIFNlY3VyaXR5Ci0wMDE1MjIgICAgIChiYXNlIDE2KQkJRGVhIFNlY3VyaXR5Ci0JCQkJVmlhIE1hZ2VudGEgOQotCQkJCU1hc3NhIE1TIDU0MTAwCi0JCQkJSVRBTFkKLQotMDAtMTUtMjMgICAoaGV4KQkJTWV0ZW9yIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0wMDE1MjMgICAgIChiYXNlIDE2KQkJTWV0ZW9yIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJMjI2MTQgNjZ0aCBBdmVudWUgU291dGgKLQkJCQlLZW50IFdBIDk4MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0yNCAgIChoZXgpCQlOdW1hdGljcywgSW5jLgotMDAxNTI0ICAgICAoYmFzZSAxNikJCU51bWF0aWNzLCBJbmMuCi0JCQkJNDYyODAgRHlsYW4gRHIuCi0JCQkJTm92aSBNaWNoaWdhbiA0ODM3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMjUgICAoaGV4KQkJQ2hhbWJlcmxhaW4gQWNjZXNzIFNvbHV0aW9ucwotMDAxNTI1ICAgICAoYmFzZSAxNikJCUNoYW1iZXJsYWluIEFjY2VzcyBTb2x1dGlvbnMKLQkJCQk5MTYwIEUuIEJhaGlhIERyLgotCQkJCVNjb3R0c2RhbGUgQVogODUyNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTI2ICAgKGhleCkJCVJlbW90ZSBUZWNobm9sb2dpZXMgSW5jCi0wMDE1MjYgICAgIChiYXNlIDE2KQkJUmVtb3RlIFRlY2hub2xvZ2llcyBJbmMKLQkJCQk3NjUxIEFuYWdyYW0gRHJpdmUKLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTI3ICAgKGhleCkJCUJhbGJvYSBJbnN0cnVtZW50cwotMDAxNTI3ICAgICAoYmFzZSAxNikJCUJhbGJvYSBJbnN0cnVtZW50cwotCQkJCTEzODIgQmVsbCBBdmUKLQkJCQlUdXN0aW4gQ0EgOTI3ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTI4ICAgKGhleCkJCUZsb29kbGlnaHQgTWVkaWNhbCBQcm9kdWN0cyBMTEMgZC5iLmEuIEZsb29kbGlnaHRNZWRhZXMKLTAwMTUyOCAgICAgKGJhc2UgMTYpCQlGbG9vZGxpZ2h0IE1lZGljYWwgUHJvZHVjdHMgTExDIGQuYi5hLiBGbG9vZGxpZ2h0TWVkYWVzCi0JCQkJMTQ0MDggVyAxMDVUSCBTVAotCQkJCUxFTkVYQSBLUyA2NjIxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMjkgICAoaGV4KQkJTjMgQ29ycG9yYXRpb24KLTAwMTUyOSAgICAgKGJhc2UgMTYpCQlOMyBDb3Jwb3JhdGlvbgotCQkJCSM0MDIgR3dhbmdNeWVvbmcgVGVjaG5vIFRvd24KLQkJCQk2MjYtMyBDbHVsc2FuIDEtRG9uZywgR3dhbmdNeWVvbmctQ2l0eQotCQkJCUd5ZW9uZ0dpLURvICA0MjMtMDMxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTJBICAgKGhleCkJCU5va2lhIEdtYkgKLTAwMTUyQSAgICAgKGJhc2UgMTYpCQlOb2tpYSBHbWJICi0JCQkJUmVuc2luZ3N0ci4gMTUKLQkJCQlCb2NodW0gTlJXIDQ0ODA3Ci0JCQkJR0VSTUFOWQotCi0wMC0xNS0yQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1MkIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0yQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1MkMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0yRCAgIChoZXgpCQlUZW5YIE5ldHdvcmtzLCBMTEMKLTAwMTUyRCAgICAgKGJhc2UgMTYpCQlUZW5YIE5ldHdvcmtzLCBMTEMKLQkJCQk0ODU1IFdpbGV5IFBvc3QgV2F5Ci0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTJFICAgKGhleCkJCVBhY2tldEhvcCwgSW5jLgotMDAxNTJFICAgICAoYmFzZSAxNikJCVBhY2tldEhvcCwgSW5jLgotCQkJCTEzMDEgU2hvcmV3YXkgUm9hZAotCQkJCVN1aXRlIDIwMAotCQkJCUJlbG1vbnQgQ2FsaWZvcm5pYSA5NDAwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMkYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTUyRiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTMwICAgKGhleCkJCUJ1cy1UZWNoLCBJbmMuCi0wMDE1MzAgICAgIChiYXNlIDE2KQkJQnVzLVRlY2gsIEluYy4KLQkJCQkxMjkgTWlkZGxlc2V4IFR1cm5waWtlCi0JCQkJQnVybGluZ3RvbiBNYSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMzEgICAoaGV4KQkJS09DT00KLTAwMTUzMSAgICAgKGJhc2UgMTYpCQlLT0NPTQotCQkJCTVGLCBLT0NPTSBCbGRnLiwgMjYwLTcKLQkJCQlZdW1jaGFuZy1Eb25nLCBLYW5nc2VvLUd1Ci0JCQkJU0VPVUwgIDE1Ny0wNDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMzIgICAoaGV4KQkJQ29uc3VtZXIgVGVjaG5vbG9naWVzIEdyb3VwLCBMTEMKLTAwMTUzMiAgICAgKGJhc2UgMTYpCQlDb25zdW1lciBUZWNobm9sb2dpZXMgR3JvdXAsIExMQwotCQkJCTM1MDAgSm9yZGFuIE9ha3MgRHIuCi0JCQkJRWZsYW5kIE5DIDI3MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0zMyAgIChoZXgpCQlOQURBTS5DTy4sTFRECi0wMDE1MzMgICAgIChiYXNlIDE2KQkJTkFEQU0uQ08uLExURAotCQkJCSM5MS0zIFdhbmdyaW0tTGkKLQkJCQlCb25nZGFtLUV1cAotCQkJCUh3YXNlb25nIEd5ZW9uZ2dpIDQ0NS04OTUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMzQgICAoaGV4KQkJQSBCRUxUUtNOSUNBLCBDb21wYW5oaWEgZGUgQ29tdW5pY2Hn9WVzLCBMZGEKLTAwMTUzNCAgICAgKGJhc2UgMTYpCQlBIEJFTFRS005JQ0EsIENvbXBhbmhpYSBkZSBDb211bmljYef1ZXMsIExkYQotCQkJCVIuIERyLiBKb3PpIEJhcHRpc3RhIGRlIFNvdXNhLCAyNwotCQkJCUxpc2JvbiAgMTU0OS0wMDIgTGlzCi0JCQkJUE9SVFVHQUwKLQotMDAtMTUtMzUgICAoaGV4KQkJT1RFIFNwYQotMDAxNTM1ICAgICAoYmFzZSAxNikJCU9URSBTcGEKLQkJCQl2aWEgQmFyc2FudGkgOAotCQkJCUZsb3JlbmNlIEZJIDUwMTI3Ci0JCQkJSVRBTFkKLQotMDAtMTUtMzYgICAoaGV4KQkJUG93ZXJ0ZWNoIGNvLixMdGQKLTAwMTUzNiAgICAgKGJhc2UgMTYpCQlQb3dlcnRlY2ggY28uLEx0ZAotCQkJCSM3MDUsIGRvbmd5b3VuZyBWZW50dXJlc3RlbCwgMTk5LTMyCi0JCQkJQW55YW5nNy1kb25nLCBNYW5hbi1ndQotCQkJCUFueWFuZyBDaXR5IEt5b3VuZ2tpLWRvIDQzMC0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMzcgICAoaGV4KQkJVmVudHVzIE5ldHdvcmtzCi0wMDE1MzcgICAgIChiYXNlIDE2KQkJVmVudHVzIE5ldHdvcmtzCi0JCQkJODAwIENvbm5lY3RpY3V0IEF2ZQotCQkJCTFzdCBmbG9vciB3ZXN0Ci0JCQkJTm9yd2FsayBDVCAwNjg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMzggICAoaGV4KQkJUkZJRCwgSW5jLgotMDAxNTM4ICAgICAoYmFzZSAxNikJCVJGSUQsIEluYy4KLQkJCQkxNDEwMCBFYXN0IEpld2VsbCBBdmUuCi0JCQkJU3VpdGUgMTIKLQkJCQlBdXJvcmEgQ08gODAwMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTM5ICAgKGhleCkJCVRlY2hub2RyaXZlIFNSTAotMDAxNTM5ICAgICAoYmFzZSAxNikJCVRlY2hub2RyaXZlIFNSTAotCQkJCVZpYSBMZW9uYXJkbyBkYSBWaW5jaSAxNjIKLQkJCQlUcmV6emFubyBzdWwgTmF2aWdsaW8gTWlsYW5vIDIwMDkwCi0JCQkJSVRBTFkKLQotMDAtMTUtM0EgICAoaGV4KQkJU2hlbnpoZW4gU3lzY2FuIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMTUzQSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBTeXNjYW4gVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTEzRiwgT2x5bXBpYyBQbGF6YSwKLQkJCQlTaGFuZyBiYW8gUm9hZCwgRnV0aWFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMzQKLQkJCQlDSElOQQotCi0wMC0xNS0zQiAgIChoZXgpCQlFTUggbWV0ZXJpbmcgR21iSCAmIENvLiBLRwotMDAxNTNCICAgICAoYmFzZSAxNikJCUVNSCBtZXRlcmluZyBHbWJIICYgQ28uIEtHCi0JCQkJU3VlZHJpbmcgNQotCQkJCVdpdHRlbmJ1cmcgTWVja2xlbmJ1cmctVm9ycG9tbWVybiAxOTI0MwotCQkJCUdFUk1BTlkKLQotMDAtMTUtM0MgICAoaGV4KQkJS3Byb3RlY2ggQ28uLCBMdGQuCi0wMDE1M0MgICAgIChiYXNlIDE2KQkJS3Byb3RlY2ggQ28uLCBMdGQuCi0JCQkJMm5kIEZsb29yLCAjIDIwMiwgTXlvdW5nLWppIGUtU3BhY2UgSUkKLQkJCQkyMTgsIEFuLXlhbmcgNyBEb25nLCBNYW4tYW4gR3UsCi0JCQkJQW4teWFuZyBDaXR5IEd5ZW9uZy1naSBEbyA0MzAtODE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTNEICAgKGhleCkJCUVMSU0gUFJPRFVDVCBDTy4KLTAwMTUzRCAgICAgKGJhc2UgMTYpCQlFTElNIFBST0RVQ1QgQ08uCi0JCQkJNjAyLTIgR0FZQU5HIFRFQ0hOTyBUT1dOLCBHQVlBTkcsIDMtRE9ORwotCQkJCUtBTkdTRU8tR1UgU0VPVUwgS09SRUEKLQkJCQlTRU9VTCAxNTctNzkzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTNFICAgKGhleCkJCVEtTWF0aWMgU3dlZGVuIEFCCi0wMDE1M0UgICAgIChiYXNlIDE2KQkJUS1NYXRpYyBTd2VkZW4gQUIKLQkJCQlOZW9uZ2F0YW4gOAotCQkJCU1vbG5kYWwgIDQzMSA1MwotCQkJCVNXRURFTgotCi0wMC0xNS0zRiAgIChoZXgpCQlBbGNhdGVsIEFsZW5pYSBTcGFjZSBJdGFsaWEKLTAwMTUzRiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIEFsZW5pYSBTcGFjZSBJdGFsaWEKLQkJCQlTdHJhZGEgUGFkYW5hIFN1cGVyaW9yZSAyOTAKLQkJCQlWaW1vZHJvbmUgTUkgMjAwOTAKLQkJCQlJVEFMWQotCi0wMC0xNS00MCAgIChoZXgpCQlOb3J0ZWwKLTAwMTU0MCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNS00MSAgIChoZXgpCQlTdHJhdGFMaWdodCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxNTQxICAgICAoYmFzZSAxNikJCVN0cmF0YUxpZ2h0IENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjEwNSBTLiBCYXNjb20gQXZlbnVlCi0JCQkJU3VpdGUgMzAwCi0JCQkJQ2FtcGJlbGwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTQyICAgKGhleCkJCU1JQ1JPSEFSRCBTLlIuTC4KLTAwMTU0MiAgICAgKGJhc2UgMTYpCQlNSUNST0hBUkQgUy5SLkwuCi0JCQkJVmlhIFByaW1vIE1hZ2dpbyAzNgotCQkJCVNhbiBWaXR0b3JlIE9sb25hIE1pbGFubyAyMDAyOAotCQkJCUlUQUxZCi0KLTAwLTE1LTQzICAgKGhleCkJCUFiZXJkZWVuIFRlc3QgQ2VudGVyCi0wMDE1NDMgICAgIChiYXNlIDE2KQkJQWJlcmRlZW4gVGVzdCBDZW50ZXIKLQkJCQk0MDAgQ29sbGVyYW4gUm9hZAotCQkJCUJsZGcuIDM1MAotCQkJCUFiZXJkZWVuIFByb3ZpbmcgR3JvdW5kcyBNRCAyMTAwNS01MDU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS00NCAgIChoZXgpCQljb00ucy5hLnQuIEFHCi0wMDE1NDQgICAgIChiYXNlIDE2KQkJY29NLnMuYS50LiBBRwotCQkJCUJlc3NlbHN0ci4gMwotCQkJCU1hbm5oZWltICBELTY4MjE5Ci0JCQkJR0VSTUFOWQotCi0wMC0xNS00NSAgIChoZXgpCQlTRUVDT0RFIENvLiwgTHRkLgotMDAxNTQ1ICAgICAoYmFzZSAxNikJCVNFRUNPREUgQ28uLCBMdGQuCi0JCQkJNHRoIEZsb29yLCBBbWluIEJsZGcuLCAxMTAtMSwgWWFuZ2phZWRvbmcsIFNlb2Nob2d1Ci0JCQkJU2VvdWwgIDEzNy04OTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtNDYgICAoaGV4KQkJSVRHIFdvcmxkd2lkZSBTZG4gQmhkCi0wMDE1NDYgICAgIChiYXNlIDE2KQkJSVRHIFdvcmxkd2lkZSBTZG4gQmhkCi0JCQkJMiwgSmFsYW4gQXN0YWthVTgvODMKLQkJCQlTZWtzeWVuIFU4LCBCdWtpdCBKZWx1dG9uZwotCQkJCVNoYWggQWxhbSBTZWxhbmdvciBEYXJ1bCBFaHNhbiA0MDE1MAotCQkJCU1BTEFZU0lBCi0KLTAwLTE1LTQ3ICAgKGhleCkJCUFpWmVuIFNvbHV0aW9ucyBJbmMuCi0wMDE1NDcgICAgIChiYXNlIDE2KQkJQWlaZW4gU29sdXRpb25zIEluYy4KLQkJCQkxMEYtMSwgTm8uMjksIFB1ZGluZyBSZC4KLQkJCQlIc2luY2h1IEhzaW5jaHUgQ291bnR5IDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtNDggICAoaGV4KQkJQ1VCRSBURUNITk9MT0dJRVMKLTAwMTU0OCAgICAgKGJhc2UgMTYpCQlDVUJFIFRFQ0hOT0xPR0lFUwotCQkJCTEwLCBydWUgZGVzIFJvc2npcmlzdGVzCi0JCQkJQ0hBTVBBR05FIEFVIE1PTlQgRCdPUiBGUkFOQ0UgNjk0MTAKLQkJCQlGUkFOQ0UKLQotMDAtMTUtNDkgICAoaGV4KQkJRGl4dGFsIEJpb21lZGljYSBJbmQuIENvbS4gTHRkYQotMDAxNTQ5ICAgICAoYmFzZSAxNikJCURpeHRhbCBCaW9tZWRpY2EgSW5kLiBDb20uIEx0ZGEKLQkJCQlSLiBFbmcuIEZyYW5jaXNjbyBQaXR0YSBCcml0bywgNzAzCi0JCQkJU2FvIFBhdWxvIFNQIDA0NzUzLTA4MAotCQkJCUJSQVpJTAotCi0wMC0xNS00QSAgIChoZXgpCQlXQU5TSElIIEVMRUNUUk9OSUMgQ08uLCBMVEQKLTAwMTU0QSAgICAgKGJhc2UgMTYpCQlXQU5TSElIIEVMRUNUUk9OSUMgQ08uLCBMVEQKLQkJCQkzRiA3MiwgV1UgS09ORyA2dGggUkQuLAotCQkJCVdVIEtVIElORFVTVFJJQUwgRElTVFJJQ1QsCi0JCQkJVEFJUEVJIEhTSUVOIFRBSVdBTiAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTRCICAgKGhleCkJCVdvbmRlIFByb3VkIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMTU0QiAgICAgKGJhc2UgMTYpCQlXb25kZSBQcm91ZCBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJMjFGLiwgTm8uMTAwLCBTZWMuMSwgU2hpbnRhaSA1dGggUmQKLQkJCQlTaWpoaWggY2l0eSBUYWlwZWkgQ291bnR5IDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtNEMgICAoaGV4KQkJU2F1bmRlcnMgRWxlY3Ryb25pY3MKLTAwMTU0QyAgICAgKGJhc2UgMTYpCQlTYXVuZGVycyBFbGVjdHJvbmljcwotCQkJCTgyIEluZHVzdHJpYWwgUGFyayBSZAotCQkJCVNhY28gTUUgMDQwNzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTREICAgKGhleCkJCU5ldHJvbm9tZSBTeXN0ZW1zLCBJbmMuCi0wMDE1NEQgICAgIChiYXNlIDE2KQkJTmV0cm9ub21lIFN5c3RlbXMsIEluYy4KLQkJCQkxNDQgRW1lcnl2aWxsZSBEcml2ZQotCQkJCVN1aXRlIDIzMAotCQkJCUNyYW5iZXJyeSBUd3AuIFBBIDE2MDY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS00RSAgIChoZXgpCQlJRUMKLTAwMTU0RSAgICAgKGJhc2UgMTYpCQlJRUMKLQkJCQkzLCBydWUgZGUgVmFyZW1i6QotCQkJCVAuTy4gQm94IDEzMQotCQkJCUNIIC0gMTIxMSBHRU5FVkEgMjAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTRGICAgKGhleCkJCW9uZSBSRiBUZWNobm9sb2d5Ci0wMDE1NEYgICAgIChiYXNlIDE2KQkJb25lIFJGIFRlY2hub2xvZ3kKLQkJCQkxMzYwIFJvdXRlIGRlcyBEb2xpbmVzCi0JCQkJQmF0IEI0IExlcyBDYXJkb3VsaW5lcwotCQkJCVZhbGJvbm5lIFNvcGhpYS1BbnRpcG9saXMgUEFDQSAwNjU2MAotCQkJCUZSQU5DRQotCi0wMC0xNS01MCAgIChoZXgpCQlOaXRzIFRlY2hub2xvZ3kgSW5jCi0wMDE1NTAgICAgIChiYXNlIDE2KQkJTml0cyBUZWNobm9sb2d5IEluYwotCQkJCTJGTC4gTm8uIDggQWxsZXkgMTYsIExhbmUgMjM1LCBCYXVjaGlhdSBSZC4sCi0JCQkJU2hpbmRpYW4gQ2l0eSBUYWlwZWkgSHNpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS01MSAgIChoZXgpCQlSYWRpb1B1bHNlIEluYy4KLTAwMTU1MSAgICAgKGJhc2UgMTYpCQlSYWRpb1B1bHNlIEluYy4KLQkJCQkybmQgZmwuIEhhbnMgQi9ELCAxMTEtNTUKLQkJCQlTZW9uZ25hZS1kb25nLCBHYW5nZG9uZy1ndQotCQkJCVNlb3VsICAxMzQtODgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTUyICAgKGhleCkJCVdpLUdlYXIgSW5jLgotMDAxNTUyICAgICAoYmFzZSAxNikJCVdpLUdlYXIgSW5jLgotCQkJCTM0MCBDaHVyY2ggU3RyZWV0Ci0JCQkJU3VpdGUgMTAKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS01MyAgIChoZXgpCQlDeXR5YyBDb3Jwb3JhdGlvbgotMDAxNTUzICAgICAoYmFzZSAxNikJCUN5dHljIENvcnBvcmF0aW9uCi0JCQkJMjUwIENhbXB1cyBEaXZlCi0JCQkJTWFybGJvcm91Z2ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTU0ICAgKGhleCkJCUF0YWx1bSBXaXJlbGVzcyBTLkEuCi0wMDE1NTQgICAgIChiYXNlIDE2KQkJQXRhbHVtIFdpcmVsZXNzIFMuQS4KLQkJCQlDLyBPcmVsbGFuYSA1LCAxuiBJCi0JCQkJTWFkcmlkICAyODAwNAotCQkJCVNQQUlOCi0KLTAwLTE1LTU1ICAgKGhleCkJCURGTSBHbWJICi0wMDE1NTUgICAgIChiYXNlIDE2KQkJREZNIEdtYkgKLQkJCQlMYWhyZXIgU3RyYXNzZSA2Ci0JCQkJTGFociBCYWRlbi1XdWVydHRlbWJlcmcgNzc5MzMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTU2ICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwMTU1NiAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJTGUgUG9ubmFudCBkZSBQYXJpcwotCQkJCTI3IFJ1ZSBMZWJsYW5jCi0JCQkJQ0VERVggUGFyaXMgNzU1MTIKLQkJCQlGUkFOQ0UKLQotMDAtMTUtNTcgICAoaGV4KQkJT2xpdmV0dGkKLTAwMTU1NyAgICAgKGJhc2UgMTYpCQlPbGl2ZXR0aQotCQkJCVZpYSBKZXJ2aXMgNzcKLQkJCQlJdnJlYSBUb3Jpbm8gMTAwMTUKLQkJCQlJVEFMWQotCi0wMC0xNS01OCAgIChoZXgpCQlGT1hDT05OCi0wMDE1NTggICAgIChiYXNlIDE2KQkJRk9YQ09OTgotCQkJCU5vLjIsMm5kIERvbmdIdWFuIFJvYWQsMTB0aCBZb3VTb25nCi0JCQkJSW5kdXN0cmlhbCBEaXN0cmljdCxMb25nSHVhIFN0cmVldCxCYW8nYW4sCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEwOQotCQkJCUNISU5BCi0KLTAwLTE1LTU5ICAgKGhleCkJCVNlY3VyYXBsYW5lIFRlY2hub2xvZ2llcywgSW5jLgotMDAxNTU5ICAgICAoYmFzZSAxNikJCVNlY3VyYXBsYW5lIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwODAwIE4uIE1hdmluZWUgRHIuCi0JCQkJVHVjc29uIEFaIDg1NzM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS01QSAgIChoZXgpCQlEQUlOSVBQT04gUEhBUk1BQ0VVVElDQUwgQ08uLCBMVEQuCi0wMDE1NUEgICAgIChiYXNlIDE2KQkJREFJTklQUE9OIFBIQVJNQUNFVVRJQ0FMIENPLiwgTFRELgotCQkJCTItNi04LCBET1NIT01BQ0hJLCBDSFVPLUtVCi0JCQkJT1NBS0EgQ0lUWSBPU0FLQSBQUkVGLiA1NDEtODUyNAotCQkJCUpBUEFOCi0KLTAwLTE1LTVCICAgKGhleCkJCVNhbXBvIENvcnBvcmF0aW9uCi0wMDE1NUIgICAgIChiYXNlIDE2KQkJU2FtcG8gQ29ycG9yYXRpb24KLQkJCQkyMTYgQ2h1bmcgU2hhbiBSb2FkLAotCQkJCVNlYy4gMSwgUGFuY2hpYW8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAyMjAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTVDICAgKGhleCkJCURyZXNzZXIgV2F5bmUKLTAwMTU1QyAgICAgKGJhc2UgMTYpCQlEcmVzc2VyIFdheW5lCi0JCQkJMzgxNCBKYXJyZXR0IFdheQotCQkJCUF1c3RpbiBUZXhhcyA3ODcyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNUQgICAoaGV4KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0wMDE1NUQgICAgIChiYXNlIDE2KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0JCQkJT25lIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdBIDk4MDUyLTgzMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTVFICAgKGhleCkJCU1vcmdhbiBTdGFubGV5Ci0wMDE1NUUgICAgIChiYXNlIDE2KQkJTW9yZ2FuIFN0YW5sZXkKLQkJCQk3NTAgN3RoIEF2ZW51ZQotCQkJCU5ldyBZb3JrIE5ZIDEwMDE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS01RiAgIChoZXgpCQlHcmVlblBlYWsgVGVjaG5vbG9naWVzCi0wMDE1NUYgICAgIChiYXNlIDE2KQkJR3JlZW5QZWFrIFRlY2hub2xvZ2llcwotCQkJCUxpbmRlc3RyYWF0IDE5Ci0JCQkJWmVsZSAgOTI0MAotCQkJCUJFTEdJVU0KLQotMDAtMTUtNjAgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDE1NjAgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkgU291dGgKLQkJCQlNUzA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTYxICAgKGhleCkJCUpKUGx1cyBDb3Jwb3JhdGlvbgotMDAxNTYxICAgICAoYmFzZSAxNikJCUpKUGx1cyBDb3Jwb3JhdGlvbgotCQkJCTY3OCBNYXNzYWNodXNldHRzIEF2ZQotCQkJCVN1aXRlIDUwMwotCQkJCUNhbWJyaWRnZSBNQSAwMjEzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNjIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNTYyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNjMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNTYzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNjQgICAoaGV4KQkJQkVIUklOR0VSIFNwZXppZWxsZSBTdHVkaW90ZWNobmlrIEdtYkgKLTAwMTU2NCAgICAgKGJhc2UgMTYpCQlCRUhSSU5HRVIgU3BlemllbGxlIFN0dWRpb3RlY2huaWsgR21iSAotCQkJCUhhbm5zLU1hcnRpbi1TY2hsZXllci1TdHIuIDM2LTM4Ci0JCQkJV2lsbGljaCAgCi0JCQkJR0VSTUFOWQotCi0wMC0xNS02NSAgIChoZXgpCQlYSUFNRU4gWUVBTElOSyBORVRXT1JLIFRFQ0hOT0xPR1kgQ08uLExURAotMDAxNTY1ICAgICAoYmFzZSAxNikJCVhJQU1FTiBZRUFMSU5LIE5FVFdPUksgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJN0YgSHVhbGlhbiBFbGVjdHJvbmljIEJMREcuNTgwIEppYWhlIFJvYWQsWGlhbWVuIENoaW5hCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi0wMC0xNS02NiAgIChoZXgpCQlBLUZpcnN0IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDE1NjYgICAgIChiYXNlIDE2KQkJQS1GaXJzdCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTVGLCBOby4gMTExLTIsIFNoaW4tVGVoIFJkLiwKLQkJCQlTYW4tQ2h1bmcgQ2l0eSBUYWlwZWkgU2hpZW4gMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS02NyAgIChoZXgpCQlSQURXSU4gSW5jLgotMDAxNTY3ICAgICAoYmFzZSAxNikJCVJBRFdJTiBJbmMuCi0JCQkJOTAwIENvcnBvcmF0ZSBEcml2ZQotCQkJCU1haHdhaCBOSiAwNzQzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNjggICAoaGV4KQkJRGlsaXRoaXVtIE5ldHdvcmtzCi0wMDE1NjggICAgIChiYXNlIDE2KQkJRGlsaXRoaXVtIE5ldHdvcmtzCi0JCQkJNTQwMSBPbGQgUmVkd29vZCBId3kKLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNjkgICAoaGV4KQkJUEVDTyBJSSwgSW5jLgotMDAxNTY5ICAgICAoYmFzZSAxNikJCVBFQ08gSUksIEluYy4KLQkJCQk3MDYwIEh1bnRsZXkgUm9hZAotCQkJCUNvbHVtYnVzIE9IIDQzMjI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02QSAgIChoZXgpCQlERzJMIFRlY2hub2xvZ2llcyBQdnQuIEx0ZC4KLTAwMTU2QSAgICAgKGJhc2UgMTYpCQlERzJMIFRlY2hub2xvZ2llcyBQdnQuIEx0ZC4KLQkJCQlBTUwgQ2VudGVyIDEsIEduZC4gRmxvb3IsIDggTWFoYWwgSW5kbC4gRXN0LgotCQkJCU9mZi4gTWFoYWthbGkgQ2F2ZXMgUm9hZCwgQW5kaGVyaSBFCi0JCQkJTXVtYmFpIE1haGFyYXNodHJhIDQwMDA5MwotCQkJCUlORElBCi0KLTAwLTE1LTZCICAgKGhleCkJCVBlcmZpc2FucyBOZXR3b3JrcyBDb3JwLgotMDAxNTZCICAgICAoYmFzZSAxNikJCVBlcmZpc2FucyBOZXR3b3JrcyBDb3JwLgotCQkJCTQxMTggMTR0aCBBdmVudWUKLQkJCQlVbml0IDQKLQkJCQlNYXJraGFtIE9udGFyaW8gTDNSIDBKMwotCQkJCUNBTkFEQQotCi0wMC0xNS02QyAgIChoZXgpCQlTQU5FIFNZU1RFTSBDTy4sIExURAotMDAxNTZDICAgICAoYmFzZSAxNikJCVNBTkUgU1lTVEVNIENPLiwgTFRECi0JCQkJUGlrYS1CdWlsZGluZyA0RiAjODk0IEhvZ3llLURvbmcgRG9uZ2FuLUdVCi0JCQkJQW55YW5nLXNpIEt5dW5nZ2ktZG8gNDMxLTgzNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS02RCAgIChoZXgpCQlVYmlxdWl0aSBOZXR3b3JrcyBJbmMuCi0wMDE1NkQgICAgIChiYXNlIDE2KQkJVWJpcXVpdGkgTmV0d29ya3MgSW5jLgotCQkJCTQ5NSBNb250YWd1ZSBFeHB3eS4KLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNkUgICAoaGV4KQkJQS4gVy4gQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEx0ZAotMDAxNTZFICAgICAoYmFzZSAxNikJCUEuIFcuIENvbW11bmljYXRpb24gU3lzdGVtcyBMdGQKLQkJCQlDcm9vayBCYXJuCi0JCQkJVGhlIENyb29rLCBSb3dlbHRvd24KLQkJCQlDYXJsaXNsZSBDdW1icmlhIENBNiA2TEgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNS02RiAgIChoZXgpCQlYaXJhbmV0IENvbW11bmljYXRpb25zIEdtYkgKLTAwMTU2RiAgICAgKGJhc2UgMTYpCQlYaXJhbmV0IENvbW11bmljYXRpb25zIEdtYkgKLQkJCQlCZXJ0b2x0LUJyZWNodC1BbGxlZSAyNAotCQkJCURyZXNkZW4gU2F4b255IDAxMzA5Ci0JCQkJR0VSTUFOWQotCi0wMC0xNS03MCAgIChoZXgpCQlTeW1ib2wgVGVjaG5vbG9naWVzV2hvbGx5IG93bmVkIFN1YnNpZGlhcnkgb2YgTW90b3JvbGEKLTAwMTU3MCAgICAgKGJhc2UgMTYpCQlTeW1ib2wgVGVjaG5vbG9naWVzV2hvbGx5IG93bmVkIFN1YnNpZGlhcnkgb2YgTW90b3JvbGEKLQkJCQlPbmUgTW90b3JvbGEgUGxhemEKLQkJCQlIb2x0c3ZpbGxlIE5ZIDExNzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS03MSAgIChoZXgpCQlOb2xhbiBTeXN0ZW1zCi0wMDE1NzEgICAgIChiYXNlIDE2KQkJTm9sYW4gU3lzdGVtcwotCQkJCTE1OTUgQ2xlbyBTcHJpbmdzIERyLgotCQkJCVNhbiBKb3NlIENhLiA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNzIgICAoaGV4KQkJUmVkLUxlbW9uCi0wMDE1NzIgICAgIChiYXNlIDE2KQkJUmVkLUxlbW9uCi0JCQkJVW5pdCA0LCA5L0YsIFBhcmFtb3VudCBCdWlsZGluZwotCQkJCU5vLiAxMiwgS2EgWWlwIFN0cmVldAotCQkJCUNoYWkgV2FuICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTUtNzMgICAoaGV4KQkJTmV3U29mdCAgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxNTczICAgICAoYmFzZSAxNikJCU5ld1NvZnQgIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkzRiwgMTktMywgU2FuQ2hvbmcgUkQsIE5hbkthbmcsCi0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTc0ICAgKGhleCkJCUhvcml6b24gU2VtaWNvbmR1Y3RvcnMgTHRkLgotMDAxNTc0ICAgICAoYmFzZSAxNikJCUhvcml6b24gU2VtaWNvbmR1Y3RvcnMgTHRkLgotCQkJCTkgSGFtZW5vZmltIFN0LgotCQkJCVBPQiAyMTkyCi0JCQkJSGVyemxpeWEgIDQ2MTIwCi0JCQkJSVNSQUVMCi0KLTAwLTE1LTc1ICAgKGhleCkJCU5ldmlzIE5ldHdvcmtzIEluYy4KLTAwMTU3NSAgICAgKGJhc2UgMTYpCQlOZXZpcyBOZXR3b3JrcyBJbmMuCi0JCQkJMzk0NSBGcmVlZG9tIENpcmNsZQotCQkJCVN1aXRlIDcyMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS03NiAgIChoZXgpCQlzY2lsIGFuaW1hbCBjYXJlIGNvbXBhbnkgR21iSAotMDAxNTc2ICAgICAoYmFzZSAxNikJCXNjaWwgYW5pbWFsIGNhcmUgY29tcGFueSBHbWJICi0JCQkJRGluYS1XZWlzc21hbm4tQWxsZWUgNgotCQkJCVZpZXJuaGVpbSBIZXNzZW4gNjg1MTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTc3ICAgKGhleCkJCUFsbGllZCBUZWxlc2lzCi0wMDE1NzcgICAgIChiYXNlIDE2KQkJQWxsaWVkIFRlbGVzaXMKLQkJCQkzMjAwIE5vcnRoIEZpcnN0IFN0cmVldAotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTc4ICAgKGhleCkJCUF1ZGlvIC8gVmlkZW8gSW5ub3ZhdGlvbnMKLTAwMTU3OCAgICAgKGJhc2UgMTYpCQlBdWRpbyAvIFZpZGVvIElubm92YXRpb25zCi0JCQkJQTMtMzM3NSBOb3J0aCBTZXJ2aWNlIFJvYWQKLQkJCQlCdXJsaW5ndG9uIE9OIEw3TiAzRzIKLQkJCQlDQU5BREEKLQotMDAtMTUtNzkgICAoaGV4KQkJTHVuYXRvbmUgSW5kdXN0cmllbGxlIEVsZWt0cm9uaWsgR21iSAotMDAxNTc5ICAgICAoYmFzZSAxNikJCUx1bmF0b25lIEluZHVzdHJpZWxsZSBFbGVrdHJvbmlrIEdtYkgKLQkJCQlSZW5uYmFobndlZyA1NQotCQkJCVdpZW4gIDEyMjAKLQkJCQlBVVNUUklBCi0KLTAwLTE1LTdBICAgKGhleCkJCVRlbGVmaW4gUy5wLkEuCi0wMDE1N0EgICAgIChiYXNlIDE2KQkJVGVsZWZpbiBTLnAuQS4KLQkJCQlWaWEgQWxiZXJlIDg3L0EKLQkJCQlWZXJvbmEgVlIgMzcxMzgKLQkJCQlJVEFMWQotCi0wMC0xNS03QiAgIChoZXgpCQlMZXV6ZSBlbGVjdHJvbmljIEdtYkggKyBDby4gS0cKLTAwMTU3QiAgICAgKGJhc2UgMTYpCQlMZXV6ZSBlbGVjdHJvbmljIEdtYkggKyBDby4gS0cKLQkJCQlJbiBkZXIgQnJhaWtlIDEKLQkJCQlPd2VuIEJhZGVuLVf8cnR0ZW1iZXJnIDczMjc3Ci0JCQkJR0VSTUFOWQotCi0wMC0xNS03QyAgIChoZXgpCQlEYXZlIE5ldHdvcmtzLCBJbmMuCi0wMDE1N0MgICAgIChiYXNlIDE2KQkJRGF2ZSBOZXR3b3JrcywgSW5jLgotCQkJCTIxNTEgTyd0b29sIEF2ZW51ZQotCQkJCVN1aXRlIEgKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtN0QgICAoaGV4KQkJUE9TREFUQSBDTy4sIExURC4KLTAwMTU3RCAgICAgKGJhc2UgMTYpCQlQT1NEQVRBIENPLiwgTFRELgotCQkJCTI3Ni0yLFNlb2h5ZW9uLWRvbmcsQnVuZGFuZy1ndSwKLQkJCQlTZW9uZ25hbS1DaXR5IEt5ZW9uZ2dpLURvIDQ2My03NzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtN0UgICAoaGV4KQkJV2VpZG3vv71sbGVyIEludGVyZmFjZSBHbWJIICYgQ28uIEtHICAgCi0wMDE1N0UgICAgIChiYXNlIDE2KQkJV2VpZG3vv71sbGVyIEludGVyZmFjZSBHbWJIICYgQ28uIEtHICAgCi0JCQkJS2xpbmdlbmJlcmdzdHJh77+9ZSAxNgotCQkJCURldG1vbGQgIDMyNzU4IAotCQkJCUdFUk1BTlkKLQotMDAtMTUtN0YgICAoaGV4KQkJQ2h1YW5HIEludGVybmF0aW9uYWwgSG9sZGluZyBDTy4sTFRELgotMDAxNTdGICAgICAoYmFzZSAxNikJCUNodWFuRyBJbnRlcm5hdGlvbmFsIEhvbGRpbmcgQ08uLExURC4KLQkJCQkxRiwgTk8uMTIsIEFsbGV5IDEsIExhbmUgMTI1LCBHdW9saWFuIFN0cmVldCA0TGlybiwgV3VoYW4gVmlsbGFnZQotCQkJCVRhb3l1YW4gTG9uZ3RhbiAzMjUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTgwICAgKGhleCkJCVUtV0FZIENPUlBPUkFUSU9OCi0wMDE1ODAgICAgIChiYXNlIDE2KQkJVS1XQVkgQ09SUE9SQVRJT04KLQkJCQkzRi0yLCBOTy4gMTI1LCBMQU5FIDIzNSwgUEFPLUNISUFPCi0JCQkJSFNJTlRJRU4gQ0lUWSBUQUlQRUkgSFNJRU4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS04MSAgIChoZXgpCQlNQUtVUyBJbmMuCi0wMDE1ODEgICAgIChiYXNlIDE2KQkJTUFLVVMgSW5jLgotCQkJCTRGIERhZWRvIEJsZGcuIDc0OC0xNCBZZW9rc2FtLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTgyICAgKGhleCkJCVRWb25pY3MgTHRkCi0wMDE1ODIgICAgIChiYXNlIDE2KQkJVFZvbmljcyBMdGQKLQkJCQlQZW5vY2VkIFRlY2hub2xvZ3kgUGFyawotCQkJCVBlbmNvZWQgTWlkIEdsYW0gQ0YzNSA1SFoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNS04MyAgIChoZXgpCQlJVlQgY29ycG9yYXRpb24KLTAwMTU4MyAgICAgKGJhc2UgMTYpCQlJVlQgY29ycG9yYXRpb24KLQkJCQlTaGFuZ2RpIFhpbnhpIHJvYWQsIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0xNS04NCAgIChoZXgpCQlTY2hlbmNrIFByb2Nlc3MgR21iSAotMDAxNTg0ICAgICAoYmFzZSAxNikJCVNjaGVuY2sgUHJvY2VzcyBHbWJICi0JCQkJUGFsbGFzd2llc2Vuc3RyLiAxMDAKLQkJCQlEYXJtc3RhZHQgSGVzc2VuIDY0MjkzCi0JCQkJR0VSTUFOWQotCi0wMC0xNS04NSAgIChoZXgpCQlBb252aXNpb24gVGVjaG5vbG9weSBDb3JwLgotMDAxNTg1ICAgICAoYmFzZSAxNikJCUFvbnZpc2lvbiBUZWNobm9sb3B5IENvcnAuCi0JCQkJMkYsIE5vLiA1OCwgUGFyayAybmQgQXZlLiBTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1IDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtODYgICAoaGV4KQkJWGlhbWVuIE92ZXJzZWFzIENoaW5lc2UgRWxlY3Ryb25pYyBDby4sIEx0ZC4KLTAwMTU4NiAgICAgKGJhc2UgMTYpCQlYaWFtZW4gT3ZlcnNlYXMgQ2hpbmVzZSBFbGVjdHJvbmljIENvLiwgTHRkLgotCQkJCU5vLiAyMiwgSHVsaSBTdHJlZXQsCi0JCQkJSHVsaSBJbmR1c3RyaWFsIERpc3RyaWN0Ci0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi0wMC0xNS04NyAgIChoZXgpCQlUYWtlbmFrYSBTZWlzYWt1c2hvIENvLixMdGQKLTAwMTU4NyAgICAgKGJhc2UgMTYpCQlUYWtlbmFrYSBTZWlzYWt1c2hvIENvLixMdGQKLQkJCQkxNzggSElTSElFCi0JCQkJSElHQVNISS1PU0FLQSBDSVRZIE9TQUtBIDU3OC0wOTg0Ci0JCQkJSkFQQU4KLQotMDAtMTUtODggICAoaGV4KQkJQmFsZGEgU29sdXRpb24gTWFsYXlzaWEgU2RuIEJoZAotMDAxNTg4ICAgICAoYmFzZSAxNikJCUJhbGRhIFNvbHV0aW9uIE1hbGF5c2lhIFNkbiBCaGQKLQkJCQkzIEphbGFuIFphcmliIDYKLQkJCQlLYXdhc2FuIFBlcmluZHVzdHJpYW4gWmFyaWIKLQkJCQlMYWhhdCwgSXBvaCBQZXJhayAzMTUwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE1LTg5ICAgKGhleCkJCUQtTUFYIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxNTg5ICAgICAoYmFzZSAxNikJCUQtTUFYIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTdGLTYsTk8uMjYsTGlhbiBDaGVuZyBSRC4sQ2h1bmctSG8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS04QSAgIChoZXgpCQlTVVJFQ09NIFRlY2hub2xvZ3kgQ29ycC4KLTAwMTU4QSAgICAgKGJhc2UgMTYpCQlTVVJFQ09NIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk2RiwgTm8uIDEyNSwgU2VjLiAyLCBEYXR1bmcgUmQuCi0JCQkJU2hpanIgQ2l0eSwgVGFpcGVpIENvdW50eSAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS04QiAgIChoZXgpCQlQYXJrIEFpciBTeXN0ZW1zIEx0ZAotMDAxNThCICAgICAoYmFzZSAxNikJCVBhcmsgQWlyIFN5c3RlbXMgTHRkCi0JCQkJTm9ydGhmaWVsZHMKLQkJCQlNYXJrZXQgRGVlcGluZwotCQkJCVBldGVyYm9yb3VnaCAgUEU2IDhVRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LThDICAgKGhleCkJCUxpYWIgQXBTCi0wMDE1OEMgICAgIChiYXNlIDE2KQkJTGlhYiBBcFMKLQkJCQlPZXN0cmUgQWxsZSA2Ci0JCQkJU3RvZXZyaW5nICBESy05NTMwCi0JCQkJREVOTUFSSwotCi0wMC0xNS04RCAgIChoZXgpCQlKZW5uaWMgTHRkCi0wMDE1OEQgICAgIChiYXNlIDE2KQkJSmVubmljIEx0ZAotCQkJCUZ1cm5pdmFsIFN0cmVldAotCQkJCVNoZWZmaWVsZCBZb3Jrc2hpcmUgUzEgNFFUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTUtOEUgICAoaGV4KQkJUGx1c3Rlay5JTkMKLTAwMTU4RSAgICAgKGJhc2UgMTYpCQlQbHVzdGVrLklOQwotCQkJCTEzRi0xLE5vMyhCdWlsZGluZyBGKSBZdWFuIFF1IFN0cmVldAotCQkJCVRhaXBlaSBZdWFuIFF1IDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtOEYgICAoaGV4KQkJTlRUIEFkdmFuY2VkIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMTU4RiAgICAgKGJhc2UgMTYpCQlOVFQgQWR2YW5jZWQgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCVNoaW5qdWt1IE1pdHN1aSBCbGRnLiAyLTEtMSwgTmlzaGktc2hpbmp1a3UKLQkJCQlTaGluanVrdS1rdSBUb2t5byAxNjMtMDQzMQotCQkJCUpBUEFOCi0KLTAwLTE1LTkwICAgKGhleCkJCUhlY3Ryb25pYyBHbWJICi0wMDE1OTAgICAgIChiYXNlIDE2KQkJSGVjdHJvbmljIEdtYkgKLQkJCQlBbGxtZW5kc3RyYXNzZSAxNQotCQkJCUJvbm5kb3JmIEJhZGVuLVf8cnR0ZW1iZXJnIDc5ODQ4Ci0JCQkJR0VSTUFOWQotCi0wMC0xNS05MSAgIChoZXgpCQlSTFcgSW5jLgotMDAxNTkxICAgICAoYmFzZSAxNikJCVJMVyBJbmMuCi0JCQkJMjAyOSBDYXRvIEF2ZS4KLQkJCQlTdGF0ZSBDb2xsZWdlIFBBIDE2ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS05MiAgIChoZXgpCQlGYWNvbSBVSyBMdGQgKE1lbGtzaGFtKQotMDAxNTkyICAgICAoYmFzZSAxNikJCUZhY29tIFVLIEx0ZCAoTWVsa3NoYW0pCi0JCQkJTGFuY2FzdGVyIEhvdXNlCi0JCQkJQm93ZXJoaWxsIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJTWVsa3NoYW0gV2lsdHNoaXJlIFNOMTA0RkIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNS05MyAgIChoZXgpCQlVNEVBIFRlY2hub2xvZ2llcyBJbmMuCi0wMDE1OTMgICAgIChiYXNlIDE2KQkJVTRFQSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTQ4ODYwIE1pbG1vbnQgRHJpdmUKLQkJCQlTdWl0ZTEwN0MKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS05NCAgIChoZXgpCQlCSVhPTE9OIENPLixMVEQKLTAwMTU5NCAgICAgKGJhc2UgMTYpCQlCSVhPTE9OIENPLixMVEQKLQkJCQk1MDItNTA4LERpZ2l0YWwgRW1waXJlIEJsZGcuCi0JCQkJOTgwLTMgWWVvbmd0b25nLURvbmcKLQkJCQlZZW9uZ3RvbmctR3UsU3V3b24gR3llb25nZ2ktRG8gNDQzLTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS05NSAgIChoZXgpCQlRdWVzdGVyIFRhbmdlbnQgQ29ycG9yYXRpb24KLTAwMTU5NSAgICAgKGJhc2UgMTYpCQlRdWVzdGVyIFRhbmdlbnQgQ29ycG9yYXRpb24KLQkJCQkyMDEgLSA5ODY1IFdlc3QgU2FhbmljaCBSb2FkCi0JCQkJU2lkbmV5IEJDIFY4TCA1WTgKLQkJCQlDQU5BREEKLQotMDAtMTUtOTYgICAoaGV4KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotMDAxNTk2ICAgICAoYmFzZSAxNikJCUFSUklTIEludGVybmF0aW9uYWwKLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1aXRlIDMwMAotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTk3ICAgKGhleCkJCUFFVEEgQVVESU8gU1lTVEVNUwotMDAxNTk3ICAgICAoYmFzZSAxNikJCUFFVEEgQVVESU8gU1lTVEVNUwotCQkJCTE4LTIyLCBhdmVudWUgRWRvdWFyZCBIZXJyaW90Ci0JCQkJS2VwbGVyIDQKLQkJCQlMZSBQbGVzc2lzIFJvYmluc29uICA5MjM1MAotCQkJCUZSQU5DRQotCi0wMC0xNS05OCAgIChoZXgpCQlLb2xla3RvciBncm91cAotMDAxNTk4ICAgICAoYmFzZSAxNikJCUtvbGVrdG9yIGdyb3VwCi0JCQkJVm9qa292YSAxMAotCQkJCUlkcmlqYSAgNTI4MAotCQkJCVNMT1ZFTklBCi0KLTAwLTE1LTk5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLTAwMTU5OSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM0RvbmcsIFllb25ndG9uZy1HdQotCQkJCVN1d29uIEd5ZW9uZ2dpIDQ0My03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtOUEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTU5QSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTlCICAgKGhleCkJCU5vcnRlbAotMDAxNTlCICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE1LTlDICAgKGhleCkJCUItS1lVTkcgU1lTVEVNIENvLixMdGQuCi0wMDE1OUMgICAgIChiYXNlIDE2KQkJQi1LWVVORyBTWVNURU0gQ28uLEx0ZC4KLQkJCQkjODEyLFdPT0xJTSBFLUJJWiBDRU5URVIsMTcwLTUKLQkJCQlHVVJPLURPTkcgR1VSTy1HVSAxNTItODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTlEICAgKGhleCkJCU1pbmljb20gQWR2YW5jZWQgU3lzdGVtcyBsdGQKLTAwMTU5RCAgICAgKGJhc2UgMTYpCQlNaW5pY29tIEFkdmFuY2VkIFN5c3RlbXMgbHRkCi0JCQkJMTYsIEhhcnRvbSBTdC4KLQkJCQlIYXItSG90enZpbQotCQkJCUplcnVzYWxlbSAgOTE0NTAKLQkJCQlJU1JBRUwKLQotMDAtMTUtOUUgICAoaGV4KQkJTWFkIENhdHogSW50ZXJhY3RpdmUgSW5jCi0wMDE1OUUgICAgIChiYXNlIDE2KQkJTWFkIENhdHogSW50ZXJhY3RpdmUgSW5jCi0JCQkJVW5pdHMgMys0IFdlc3QgUG9pbnQgUm93Ci0JCQkJR3JlYXQgUGFyayBSZCwgQWxtb25kc2J1cnkKLQkJCQlCcmlzdG9sIFNvdXRoIEdsb3VjZXN0ZXJzaGlyZSBCUzMyIDRRRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LTlGICAgKGhleCkJCVRlcmFzY2FsYSwgSW5jLgotMDAxNTlGICAgICAoYmFzZSAxNikJCVRlcmFzY2FsYSwgSW5jLgotCQkJCTE0NSBCb2R3ZWxsIFN0cmVldAotCQkJCUF2b24gTUEgMDIzMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUEwICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE1QTAgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTE1LUExICAgKGhleCkJCUVDQS1TSU5URVJTCi0wMDE1QTEgICAgIChiYXNlIDE2KQkJRUNBLVNJTlRFUlMKLQkJCQk1LCBydWUgUGF1bCBNZXNwbOkKLQkJCQlUT1VMT1VTRSBDZWRleCAwMSAzMTEwNgotCQkJCUZSQU5DRQotCi0wMC0xNS1BMiAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDE1QTIgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJU3V3YW5lZSBHQSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQTMgICAoaGV4KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotMDAxNUEzICAgICAoYmFzZSAxNikJCUFSUklTIEludGVybmF0aW9uYWwKLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1aXRlIDMwMAotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUE0ICAgKGhleCkJCUFSUklTIEludGVybmF0aW9uYWwKLTAwMTVBNCAgICAgKGJhc2UgMTYpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1BNSAgIChoZXgpCQlEQ0kgQ28uLCBMdGQuCi0wMDE1QTUgICAgIChiYXNlIDE2KQkJRENJIENvLiwgTHRkLgotCQkJCTR0aCBGbC4gU3VzdW5nIEIvRCwgODkzLTQKLQkJCQlKaWpvay1kb25nCi0JCQkJWXVzZW9uZy1ndSBEYWVqZW9uIDMwNS0zMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtQTYgICAoaGV4KQkJRGlnaXRhbCBFbGVjdHJvbmljcyBQcm9kdWN0cyBMdGQuCi0wMDE1QTYgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBFbGVjdHJvbmljcyBQcm9kdWN0cyBMdGQuCi0JCQkJUm9vbSAzMDEsIDMgcmQgRmxvb3IsIFRzdW4gWWlwIENlbnRyZQotCQkJCTQxIFRzdW4gWWlwIFN0cmVldAotCQkJCUt3dW4gVG9uZyAgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE1LUE3ICAgKGhleCkJCVJvYmF0ZWNoIEFHCi0wMDE1QTcgICAgIChiYXNlIDE2KQkJUm9iYXRlY2ggQUcKLQkJCQlQaWxhdHVzcmluZyAxMAotCQkJCU11cmkgQUcgNTYzMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE1LUE4ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE1QTggICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTiBVcyBId3kgNDUKLQkJCQlSbSBNVzExMwotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQTkgICAoaGV4KQkJS1dBTkcgV09PIEkmQyBDTy4sTFRECi0wMDE1QTkgICAgIChiYXNlIDE2KQkJS1dBTkcgV09PIEkmQyBDTy4sTFRECi0JCQkJODk4LTIzLCBIb2d5ZS1kb25nLERvbmdhbi1ndQotCQkJCUFueWFuZy1zaSxHeWVvbmdnaS1kbwotCQkJCTQzMS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtQUEgICAoaGV4KQkJUmV4dGVjaG5payBJbnRlcm5hdGlvbmFsIENvLiwKLTAwMTVBQSAgICAgKGJhc2UgMTYpCQlSZXh0ZWNobmlrIEludGVybmF0aW9uYWwgQ28uLAotCQkJCVJvb20gNS0zLCBOby41MSwgU2VjdGlvbiAyLCBLZWVsdW5nIFJvYWQKLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtQUIgICAoaGV4KQkJUFJPIENPIFNPVU5EIElOQwotMDAxNUFCICAgICAoYmFzZSAxNikJCVBSTyBDTyBTT1VORCBJTkMKLQkJCQkyMjUgUEFSU09OUyBTVFJFRVQKLQkJCQlLQUxBTUFaT08gTUlDSElHQU4gNDkwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUFDICAgKGhleCkJCUNhcGVsb24gQUIKLTAwMTVBQyAgICAgKGJhc2UgMTYpCQlDYXBlbG9uIEFCCi0JCQkJSuRnZXJob3JucyB25GcgMQotCQkJCUt1bmdlbnMgS3VydmEgU3RvY2tob2xtIFMtMTQxIDc1Ci0JCQkJU1dFREVOCi0KLTAwLTE1LUFEICAgKGhleCkJCUFjY2VkaWFuIE5ldHdvcmtzCi0wMDE1QUQgICAgIChiYXNlIDE2KQkJQWNjZWRpYW4gTmV0d29ya3MKLQkJCQk0ODc4IExldnksIHN1aXRlIDIwMgotCQkJCXN1aXRlIDIwMgotCQkJCVN0LUxhdXJlbnQgUXVlYmVjIEg5UCAyVjQKLQkJCQlDQU5BREEKLQotMDAtMTUtQUUgICAoaGV4KQkJa3l1bmcgaWwKLTAwMTVBRSAgICAgKGJhc2UgMTYpCQlreXVuZyBpbAotCQkJCXdvYXIgcm9uZy1teW4geW91Z2F0ZS1yaSAxMDEtMgotCQkJCXBhanUtY2l0eSBneWVvbmcgZ2kgNDEzLTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS1BRiAgIChoZXgpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDE1QUYgICAgIChiYXNlIDE2KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCThGLiwgTm8uOTQsIEJhb3pob25nIFJkLiwgWGluZGlhbgotCQkJCVRhaXBlaSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1CMCAgIChoZXgpCQlBVVRPVEVMRU5FVCBDTy4sTFRECi0wMDE1QjAgICAgIChiYXNlIDE2KQkJQVVUT1RFTEVORVQgQ08uLExURAotCQkJCTJGLCA4OTgtMjQsIEhvZ3llMi1kb25nLCBEb25nYW4tZ3UKLQkJCQlBbnlhbmctQ2l0eSBLeXVuZ2dpLWRvIDQzMS04MzYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtQjEgICAoaGV4KQkJQW1iaWVudCBDb3Jwb3JhdGlvbgotMDAxNUIxICAgICAoYmFzZSAxNikJCUFtYmllbnQgQ29ycG9yYXRpb24KLQkJCQk3OSBDaGFwZWwgU3QuCi0JCQkJTmV3dG9uIE1BIDAyNDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1CMiAgIChoZXgpCQlBZHZhbmNlZCBJbmR1c3RyaWFsIENvbXB1dGVyLCBJbmMuCi0wMDE1QjIgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgSW5kdXN0cmlhbCBDb21wdXRlciwgSW5jLgotCQkJCTE3OTcwIEUuIEFqYXggQ2lyY2xlCi0JCQkJQ2l0eSBvZiBJbmR1c3RyeSBDQSA5MTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQjMgICAoaGV4KQkJQ2FyZXRlY2ggQUIKLTAwMTVCMyAgICAgKGJhc2UgMTYpCQlDYXJldGVjaCBBQgotCQkJCU55Ym9yZ3N25GdlbiAxOTcKLQkJCQlLYWxpeCAgOTUyOTEKLQkJCQlTV0VERU4KLQotMDAtMTUtQjQgICAoaGV4KQkJUG9seW1hcCAgV2lyZWxlc3MgTExDCi0wMDE1QjQgICAgIChiYXNlIDE2KQkJUG9seW1hcCAgV2lyZWxlc3MgTExDCi0JCQkJMzEwIFMuIFdpbGxpYW1zIEJsdmQuIFN0ZS4gMzUwCi0JCQkJVHVjc29uIEFaIDg1NzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1CNSAgIChoZXgpCQlDSSBOZXR3b3JrIENvcnAuCi0wMDE1QjUgICAgIChiYXNlIDE2KQkJQ0kgTmV0d29yayBDb3JwLgotCQkJCTJGIERhaW5pIElub3VlIEJsZGcKLQkJCQkxLTYtNiBBa2FzYWthIE1pbmF0by1rdQotCQkJCVRva3lvICAxMDctMDA1MgotCQkJCUpBUEFOCi0KLTAwLTE1LUI2ICAgKGhleCkJCVNoaW5NYXl3YSBJbmR1c3RyaWVzLCBMdGQuCi0wMDE1QjYgICAgIChiYXNlIDE2KQkJU2hpbk1heXdhIEluZHVzdHJpZXMsIEx0ZC4KLQkJCQkxLTEgU2hpbm1laXdhLWNobwotCQkJCVRha2FyYXp1a2EgSHlvZ28gNjY1LTg1NTAKLQkJCQlKQVBBTgotCi0wMC0xNS1CNyAgIChoZXgpCQlUb3NoaWJhCi0wMDE1QjcgICAgIChiYXNlIDE2KQkJVG9zaGliYQotCQkJCTItOSxTdWVoaXJvLUNobwotCQkJCU9tZSBUb2t5byAxOTg4NzEwCi0JCQkJSkFQQU4KLQotMDAtMTUtQjggICAoaGV4KQkJVGFob2UKLTAwMTVCOCAgICAgKGJhc2UgMTYpCQlUYWhvZQotCQkJCXVsLiBVbml3ZXJzeXRlY2thIDEKLQkJCQlXcm9jbGF3ICA1MDk1MQotCQkJCVBPTEFORAotCi0wMC0xNS1COSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxNUI5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzk0LTEKLQkJCQlJbXNvby1Eb25nCi0JCQkJR3VtaS1DaXR5IEd5ZW9uZy1CdWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS1CQSAgIChoZXgpCQlpYmEgQUcKLTAwMTVCQSAgICAgKGJhc2UgMTYpCQlpYmEgQUcKLQkJCQlLb2VuaWdzd2FydGVyc3RyYXNzZSA0NAotCQkJCUZ1ZXJ0aCBCYXZhcmlhIDkwNzYyCi0JCQkJR0VSTUFOWQotCi0wMC0xNS1CQiAgIChoZXgpCQlTTUEgU29sYXIgVGVjaG5vbG9neSBBRwotMDAxNUJCICAgICAoYmFzZSAxNikJCVNNQSBTb2xhciBUZWNobm9sb2d5IEFHCi0JCQkJU29ubmVuYWxsZWUgMQotCQkJCU5pZXN0ZXRhbCBIZXNzZW4gMzQyNjYKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LUJDICAgKGhleCkJCURldmVsY28KLTAwMTVCQyAgICAgKGJhc2UgMTYpCQlEZXZlbGNvCi0JCQkJT2xvZiBQYWxtZXMgQWxs6SA0MAotCQkJCUFhcmh1cyBOICA4MjAwCi0JCQkJREVOTUFSSwotCi0wMC0xNS1CRCAgIChoZXgpCQlHcm91cCA0IFRlY2hub2xvZ3kgTHRkCi0wMDE1QkQgICAgIChiYXNlIDE2KQkJR3JvdXAgNCBUZWNobm9sb2d5IEx0ZAotCQkJCUNoYWxsZW5nZSBIb3VzZQotCQkJCUludGVybmF0aW9uYWwgRHJpdmUKLQkJCQlUZXdrZXNidXJ5IEdsb3VjZXN0ZXJzaGlyZSBHTDIwIDhVUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LUJFICAgKGhleCkJCUlxdWEgTHRkLgotMDAxNUJFICAgICAoYmFzZSAxNikJCUlxdWEgTHRkLgotCQkJCUh5dm9uaW5rYXR1IDEKLQkJCQlTYWxvIFZhcnNpbmFpcy1TdW9taSAyNDI0MAotCQkJCUZJTkxBTkQKLQotMDAtMTUtQkYgICAoaGV4KQkJdGVjaG5pY29iCi0wMDE1QkYgICAgIChiYXNlIDE2KQkJdGVjaG5pY29iCi0JCQkJNCBSdWUgQ2FtaWxsZSBTYWludC1TYWVucwotCQkJCUxBTkVTVEVSIE1vcmJpaGFuIDU2NjAyCi0JCQkJRlJBTkNFCi0KLTAwLTE1LUMwICAgKGhleCkJCURJR0lUQUwgVEVMRU1FRElBIENPLixMVEQuCi0wMDE1QzAgICAgIChiYXNlIDE2KQkJRElHSVRBTCBURUxFTUVESUEgQ08uLExURC4KLQkJCQkxN1RIIEZMT09SLCBDSElOQSBZVVNFIEJVSUxESU5HLAotCQkJCU5PIDYwMTMgU0hFTk5BTiBST0FELEZVVElBTiBESVNUUklDVAotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0xNS1DMSAgIChoZXgpCQlTT05ZIENvbXB1dGVyIEVudGVydGFpbm1lbnQgaW5jLAotMDAxNUMxICAgICAoYmFzZSAxNikJCVNPTlkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBpbmMsCi0JCQkJNi0yMSwyQ2hvbWUKLQkJCQlNaW5hbWktQW95YW1hCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNy0wMDYyCi0JCQkJSkFQQU4KLQotMDAtMTUtQzIgICAoaGV4KQkJM00gR2VybWFueQotMDAxNUMyICAgICAoYmFzZSAxNikJCTNNIEdlcm1hbnkKLQkJCQlDYXJsIFNjaHVyeiBTdHIuIDEKLQkJCQlOZXVzcyBOUlcgNDE0NTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LUMzICAgKGhleCkJCVJ1ZiBUZWxlbWF0aWsgQUcKLTAwMTVDMyAgICAgKGJhc2UgMTYpCQlSdWYgVGVsZW1hdGlrIEFHCi0JCQkJUnVldGlzdHJhc3NlIDEzCi0JCQkJU2NobGllcmVuIFpIIDg5NTIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNS1DNCAgIChoZXgpCQlGTE9WRUwgQ08uLCBMVEQuCi0wMDE1QzQgICAgIChiYXNlIDE2KQkJRkxPVkVMIENPLiwgTFRELgotCQkJCVRoZSBUYWNoaWhpIGJ1aWxkaW5nIE5vLDMgaGFsbCwgNi0xLCBTYWthZS1jaG8sCi0JCQkJVGFjaGlrYXdhLXNoaQotCQkJCVRva3lvICAxOTAtMDAwMwotCQkJCUpBUEFOCi0KLTAwLTE1LUM1ICAgKGhleCkJCURlbGwgSW5jCi0wMDE1QzUgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1QzYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1QzcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DOCAgIChoZXgpCQlGbGV4aVBhbmVsIEx0ZAotMDAxNUM4ICAgICAoYmFzZSAxNikJCUZsZXhpUGFuZWwgTHRkCi0JCQkJNyBiaXMgcnVlIExhbG8KLQkJCQlQYXJpcyA3NTAxNgotCQkJCUZSQU5DRQotCi0wMC0xNS1DOSAgIChoZXgpCQlHdW1zdGl4LCBJbmMKLTAwMTVDOSAgICAgKGJhc2UgMTYpCQlHdW1zdGl4LCBJbmMKLQkJCQkzMTMwIEFscGluZSBSb2FkCi0JCQkJU3VpdGUgMjg4LTYwNgotCQkJCVBvcnRvbGEgVmFsbGV5IENBIDk0MDI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DQSAgIChoZXgpCQlUZXJhUmVjb24sIEluYy4KLTAwMTVDQSAgICAgKGJhc2UgMTYpCQlUZXJhUmVjb24sIEluYy4KLQkJCQkyOTU1IENhbXB1cyBEcml2ZSwgU3VpdGUgMzI1Ci0JCQkJU2FuIE1hdGVvIENBIDk0NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DQiAgIChoZXgpCQlTdXJmIENvbW11bmljYXRpb24gU29sdXRpb25zIEx0ZC4KLTAwMTVDQiAgICAgKGJhc2UgMTYpCQlTdXJmIENvbW11bmljYXRpb24gU29sdXRpb25zIEx0ZC4KLQkJCQlQLk8uIEJveCAzNDMKLQkJCQlTb2x0YW0gSW5kdXN0cmlhbCBab25lCi0JCQkJWW9rbmVhbSAgMjAxNjQKLQkJCQlJU1JBRUwKLQotMDAtMTUtQ0MgICAoaGV4KQkJVEVQQ08gVVFVRVNULCBMVEQuCi0wMDE1Q0MgICAgIChiYXNlIDE2KQkJVEVQQ08gVVFVRVNULCBMVEQuCi0JCQkJU2Fubm9taXlhIEludGVzIEJsZGcuIDhGCi0JCQkJNy0xLTggSXNvZ2FtaS1kb3JpLCBDaHVvLWt1Ci0JCQkJS29iZSBIWU9HTyA2NTEtMDA4NgotCQkJCUpBUEFOCi0KLTAwLTE1LUNEICAgKGhleCkJCUV4YXJ0ZWNoIEludGVybmF0aW9uYWwgQ29ycC4KLTAwMTVDRCAgICAgKGJhc2UgMTYpCQlFeGFydGVjaCBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJMy9GLCBOby42MiwgTGFuZSAxODgsIFJ1ZWkgR3VhbmcgUmQuLCBOZWlodQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1DRSAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDE1Q0UgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJU3V3YW5lZSBHQSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQ0YgICAoaGV4KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotMDAxNUNGICAgICAoYmFzZSAxNikJCUFSUklTIEludGVybmF0aW9uYWwKLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1aXRlIDMwMAotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUQwICAgKGhleCkJCUFSUklTIEludGVybmF0aW9uYWwKLTAwMTVEMCAgICAgKGJhc2UgMTYpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1EMSAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxNUQxICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1EMiAgIChoZXgpCQlYYW50ZWNoIENvcnBvcmF0aW9uCi0wMDE1RDIgICAgIChiYXNlIDE2KQkJWGFudGVjaCBDb3Jwb3JhdGlvbgotCQkJCTEzMTAwIFRlbGZhaXIgQXZlbnVlCi0JCQkJU2Vjb25kIEZsb29yCi0JCQkJU3lsbWFyIENBIDkxMzQyLTM1NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUQzICAgKGhleCkJCVBhbnRlY2gmQ3VyaXRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxNUQzICAgICAoYmFzZSAxNikJCVBhbnRlY2gmQ3VyaXRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTE0NTEtMzQsIFNlb2Noby1kb25nLCBTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS1ENCAgIChoZXgpCQlFbWl0b3IgQUIKLTAwMTVENCAgICAgKGJhc2UgMTYpCQlFbWl0b3IgQUIKLQkJCQlTavZ2aWtzYmFja2VuIDE0Ci0JCQkJU3RvY2tob2xtICAxMTcgNDMKLQkJCQlTV0VERU4KLQotMDAtMTUtRDUgICAoaGV4KQkJTklDRVZUCi0wMDE1RDUgICAgIChiYXNlIDE2KQkJTklDRVZUCi0JCQkJV2Fyc2hhd3Nrb2Ugc2hvc3NlIDEyNQotCQkJCU1vc2NvdyAgMTE3NDA1Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE1LUQ2ICAgKGhleCkJCU9TTGlOSyBTcC4geiBvLm8uCi0wMDE1RDYgICAgIChiYXNlIDE2KQkJT1NMaU5LIFNwLiB6IG8uby4KLQkJCQl1bC4gTWFyc2EgMjcKLQkJCQlHZGFuc2sgIDgwMjk5Ci0JCQkJUE9MQU5ECi0KLTAwLTE1LUQ3ICAgKGhleCkJCVJldGkgQ29ycG9yYXRpb24KLTAwMTVENyAgICAgKGJhc2UgMTYpCQlSZXRpIENvcnBvcmF0aW9uCi0JCQkJNkYsTm8gMTMsIExhbmUgMTIwLCBTZWMgMSwgTmVpaHUgUmQuLAotCQkJCVRhaXBlaSBDaXR5ICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LUQ4ICAgKGhleCkJCUludGVybGluayBFbGVjdHJvbmljcwotMDAxNUQ4ICAgICAoYmFzZSAxNikJCUludGVybGluayBFbGVjdHJvbmljcwotCQkJCTU0NiBGbHlubiBSb2FkCi0JCQkJQ2FtYXJpbGxvIENBIDkzMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1EOSAgIChoZXgpCQlQS0MgRWxlY3Ryb25pY3MgT3kKLTAwMTVEOSAgICAgKGJhc2UgMTYpCQlQS0MgRWxlY3Ryb25pY3MgT3kKLQkJCQlQYWp1bmlpdHludGllIDQzCi0JCQkJUkFBSEUgIDkyMTIwCi0JCQkJRklOTEFORAotCi0wMC0xNS1EQSAgIChoZXgpCQlJUklURUwgQS5ELgotMDAxNURBICAgICAoYmFzZSAxNikJCUlSSVRFTCBBLkQuCi0JCQkJQmF0YWpuaWNraSBwdXQgMjMKLQkJCQlCZW9ncmFkIFNlcmJpYSAxMTA4MAotCQkJCVlVR09TTEFWSUEKLQotMDAtMTUtREIgICAoaGV4KQkJQ2FuZXN0YSBJbmMuCi0wMDE1REIgICAgIChiYXNlIDE2KQkJQ2FuZXN0YSBJbmMuCi0JCQkJOTY1IFdlc3QgTWF1ZGUgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENhbGlmb3JuaWEgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LURDICAgKGhleCkJCUtUJkMgQ28uLCBMdGQuCi0wMDE1REMgICAgIChiYXNlIDE2KQkJS1QmQyBDby4sIEx0ZC4KLQkJCQk0ODctNCwgS1QmQyBCbGRnLgotCQkJCUJhbmdId2EtRG9uZwotCQkJCUdhbmdTZW8tS3UgU2VvdWwgMTU3LTg0OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS1ERCAgIChoZXgpCQlJUCBDb250cm9sIFN5c3RlbXMgTHRkLgotMDAxNUREICAgICAoYmFzZSAxNikJCUlQIENvbnRyb2wgU3lzdGVtcyBMdGQuCi0JCQkJVW5pdCAxNSwgSGktVGVjaCBWaWxsYWdlLAotCQkJCVdpdG5leSBXYXksIEJvbGRvbiBCdXNpbmVzcyBQYXJrLAotCQkJCUJvbGRvbiBUeW5lICYgV2VhciBORTM1IDlQRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LURFICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE1REUgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAgVgotCQkJCURFTk1BUksKLQotMDAtMTUtREYgICAoaGV4KQkJQ2xpdmV0IFMucC5BLgotMDAxNURGICAgICAoYmFzZSAxNikJCUNsaXZldCBTLnAuQS4KLQkJCQl2aWEgQ2FtcCBMb25jIDI1Ci0JCQkJRmVsdHJlIEJlbGx1bm8gMzIwMzAKLQkJCQlJVEFMWQotCi0wMC0xNS1FMCAgIChoZXgpCQlTVC1Fcmljc3NvbgotMDAxNUUwICAgICAoYmFzZSAxNikJCVNULUVyaWNzc29uCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgIFNFLTIyMSA4MwotCQkJCVNXRURFTgotCi0wMC0xNS1FMSAgIChoZXgpCQlQaWNvY2hpcCBMdGQKLTAwMTVFMSAgICAgKGJhc2UgMTYpCQlQaWNvY2hpcCBMdGQKLQkJCQlVcHBlciBCb3JvdWdoIENvdXJ0Ci0JCQkJVXBwZXIgQm9yb3VnaCBXYWxscwotCQkJCUJhdGggIEJBMSAxUkcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNS1FMiAgIChoZXgpCQlEci5JbmcuIEhlcmJlcnQgS25hdWVyIEdtYkgKLTAwMTVFMiAgICAgKGJhc2UgMTYpCQlEci5JbmcuIEhlcmJlcnQgS25hdWVyIEdtYkgKLQkJCQlIZWdhdWVyIFdlZyAzOAotCQkJCUJlcmxpbiAgMTQxNjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LUUzICAgKGhleCkJCURyZWFtIFRlY2hub2xvZ2llcyBDb3Jwb3JhdGlvbgotMDAxNUUzICAgICAoYmFzZSAxNikJCURyZWFtIFRlY2hub2xvZ2llcyBDb3Jwb3JhdGlvbgotCQkJCUViaXN1IFByaW1lIFNxdWFyZSwgMS0xLTM5IEhpcm9vCi0JCQkJU2hpYnV5YS1rdSBUb2t5byAxNTAtMDAxMgotCQkJCUpBUEFOCi0KLTAwLTE1LUU0ICAgKGhleCkJCVppbW1lciBFbGVrdHJvbWVkaXppbgotMDAxNUU0ICAgICAoYmFzZSAxNikJCVppbW1lciBFbGVrdHJvbWVkaXppbgotCQkJCUp1bmtlcnNzdHJhc3NlIDkKLQkJCQlOZXUtVWxtIEJheWVybiA4OTIzMQotCQkJCUdFUk1BTlkKLQotMDAtMTUtRTUgICAoaGV4KQkJQ2hlZXJ0ZWsgSW5jLgotMDAxNUU1ICAgICAoYmFzZSAxNikJCUNoZWVydGVrIEluYy4KLQkJCQlOby4yLCBEdS1TaW5nIEZpcnN0IFJvYWQsIFNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtRTYgICAoaGV4KQkJTU9CSUxFIFRFQ0hOSUtBIEluYy4KLTAwMTVFNiAgICAgKGJhc2UgMTYpCQlNT0JJTEUgVEVDSE5JS0EgSW5jLgotCQkJCVNvdG9ib3JpIFNreSBCbGQuIDV0aCBGbG9vcgotCQkJCTItMTEgSWNoaWdheWEgSG9ubXVyYS1jaG8sCi0JCQkJU2hpbmp1a3Uta3UgVG9reW8gMTYyLTA4NDUKLQkJCQlKQVBBTgotCi0wMC0xNS1FNyAgIChoZXgpCQlRdWFudGVjIFByb0F1ZGlvCi0wMDE1RTcgICAgIChiYXNlIDE2KQkJUXVhbnRlYyBQcm9BdWRpbwotCQkJCUxlb3BvbGRzdHJhc3NlIDE4Ci0JCQkJTfxuY2hlbiAgRC04MDgwMgotCQkJCUdFUk1BTlkKLQotMDAtMTUtRTggICAoaGV4KQkJTm9ydGVsCi0wMDE1RTggICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTUtRTkgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDE1RTkgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJMkYsIE5vLjIzMy0yLCBQYW8tQ2hpYW8gUm9hZAotCQkJCUhzaW4tVGllbiwgVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtRUEgICAoaGV4KQkJVGVsbHVtYXQgKFB0eSkgTHRkCi0wMDE1RUEgICAgIChiYXNlIDE2KQkJVGVsbHVtYXQgKFB0eSkgTHRkCi0JCQkJNjQvNzQgV2hpdGUgUm9hZAotCQkJCVJldHJlYXQKLQkJCQlDYXBlIFRvd24gV2VzdGVybiBQcm92aW5jZSA3OTQ1Ci0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTE1LUVCICAgKGhleCkJCVpURSBDT1JQT1JBVElPTgotMDAxNUVCICAgICAoYmFzZSAxNikJCVpURSBDT1JQT1JBVElPTgotCQkJCTUvRixBIFdpbmcsWlRFIFBsYXphLEtlamkgUm9hZCBTb3V0aCxIaS1UZWNoIEluZHVzdHJpYWwgUGFyayxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE1LUVDICAgKGhleCkJCUJvY2EgRGV2aWNlcyBMTEMKLTAwMTVFQyAgICAgKGJhc2UgMTYpCQlCb2NhIERldmljZXMgTExDCi0JCQkJNjM1MyBXLiBSb2dlcnMgQ2lyY2xlICM0Ci0JCQkJQm9jYSBSYXRvbiBGbG9yaWRhIDMzNDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1FRCAgIChoZXgpCQlGdWxjcnVtIE1pY3Jvc3lzdGVtcywgSW5jLgotMDAxNUVEICAgICAoYmFzZSAxNikJCUZ1bGNydW0gTWljcm9zeXN0ZW1zLCBJbmMuCi0JCQkJMjY2MzAgQWdvdXJhIFJvYWQKLQkJCQlDYWxhYmFzYXMgQ0EgOTEzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUVFICAgKGhleCkJCU9tbmV4IENvbnRyb2wgU3lzdGVtcwotMDAxNUVFICAgICAoYmFzZSAxNikJCU9tbmV4IENvbnRyb2wgU3lzdGVtcwotCQkJCSM3NCAtIDE4MzMgQ29hc3QgTWVyaWRpYW4gUmQuCi0JCQkJUG9ydCBDb3F1aXRsYW0gQkMgVjNDIDZHNQotCQkJCUNBTkFEQQotCi0wMC0xNS1FRiAgIChoZXgpCQlORUMgVE9LSU4gQ29ycG9yYXRpb24KLTAwMTVFRiAgICAgKGJhc2UgMTYpCQlORUMgVE9LSU4gQ29ycG9yYXRpb24KLQkJCQkxMTIwLCBTaGltb2t1emF3YQotCQkJCVNhZ2FtaWhhcmEgS2FuYWdhd2EgMjI5LTExOTgKLQkJCQlKQVBBTgotCi0wMC0xNS1GMCAgIChoZXgpCQlFR08gQlYKLTAwMTVGMCAgICAgKGJhc2UgMTYpCQlFR08gQlYKLQkJCQlQYXJhZGUgMTUKLQkJCQkncy1IZXJ0b2dlbmJvc2NoIE5vb3JkLUJyYWJhbnQgNTIxMUtMCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTUtRjEgICAoaGV4KQkJS1lMSU5LIENvbW11bmljYXRpb25zIENvcnAuCi0wMDE1RjEgICAgIChiYXNlIDE2KQkJS1lMSU5LIENvbW11bmljYXRpb25zIENvcnAuCi0JCQkJOEYtOCwgTm8uIDM1MSwgU2VjLiAyLCBaaG9uZ3NoYW4gUmQuLCBaaG9uZ2hlIENpdHkKLQkJCQlUYWlwZWkgQ291bnR5Ci0JCQkJMjM1MDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LUYyICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAxNUYyICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCU5vLjUgU2hpbmcgWWVoIFN0cmVldCxLd2VpIFNoYW4gSHNpYW5nLFRhb3l1YW4KLQkJCQlUYWlwZWkgIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtRjMgICAoaGV4KQkJUEVMVE9SIEFCCi0wMDE1RjMgICAgIChiYXNlIDE2KQkJUEVMVE9SIEFCCi0JCQkJQm94IDIzNDEKLQkJCQlTRS0zMzEgMDIgIFbEUk5BTU8gIFNFLTMzMSAwMgotCQkJCVNXRURFTgotCi0wMC0xNS1GNCAgIChoZXgpCQlFdmVudGlkZQotMDAxNUY0ICAgICAoYmFzZSAxNikJCUV2ZW50aWRlCi0JCQkJMSBBbHNhbiBXYXkKLQkJCQlMaXR0bGUgRmVycnkgTkogMDc2NDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUY1ICAgKGhleCkJCVN1c3RhaW5hYmxlIEVuZXJneSBTeXN0ZW1zCi0wMDE1RjUgICAgIChiYXNlIDE2KQkJU3VzdGFpbmFibGUgRW5lcmd5IFN5c3RlbXMKLQkJCQkjNTAwLCA2MDkgMTR0aCBTdHJlZXQgTlcKLQkJCQlDYWxnYXJ5IEFiIFQyVCAxUDMKLQkJCQlDQU5BREEKLQotMDAtMTUtRjYgICAoaGV4KQkJU0NJRU5DRSBBTkQgRU5HSU5FRVJJTkcgU0VSVklDRVMsIElOQy4KLTAwMTVGNiAgICAgKGJhc2UgMTYpCQlTQ0lFTkNFIEFORCBFTkdJTkVFUklORyBTRVJWSUNFUywgSU5DLgotCQkJCTQwMTUgUFVMQVNLSSBQSUtFIE5XCi0JCQkJSFVOVFNWSUxMRSBBTCAzNTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtRjcgICAoaGV4KQkJV2ludGVjcm9uaWNzIEx0ZC4KLTAwMTVGNyAgICAgKGJhc2UgMTYpCQlXaW50ZWNyb25pY3MgTHRkLgotCQkJCU5vLiA3MTYsIDExRi0zLCBKdW5nIEplbmcgUmQuCi0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1GOCAgIChoZXgpCQlLaW5ndHJvbmljcyBJbmR1c3RyaWFsIENvLiBMdGQuCi0wMDE1RjggICAgIChiYXNlIDE2KQkJS2luZ3Ryb25pY3MgSW5kdXN0cmlhbCBDby4gTHRkLgotCQkJCVBlbnRob3VzZSwgQ2VudHVyeSBDZW50cmUsCi0JCQkJNDQtNDYgSHVuZyBUbyBSb2FkLCBLd3VuIFRvbmcKLQkJCQlLb3dsb29uICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTUtRjkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNUY5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtRkEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNUZBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtRkIgICAoaGV4KQkJc2V0ZXggc2NoZXJtdWx5IHRleHRpbGUgY29tcHV0ZXIgZ21iaAotMDAxNUZCICAgICAoYmFzZSAxNikJCXNldGV4IHNjaGVybXVseSB0ZXh0aWxlIGNvbXB1dGVyIGdtYmgKLQkJCQlIYXVwdHN0cmFzc2UgMjUKLQkJCQlNZW5nZXJza2lyY2hlbiBIZXNzZW4gMzU3OTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LUZDICAgKGhleCkJCUxpdHRlbGZ1c2UgU3RhcnRjbwotMDAxNUZDICAgICAoYmFzZSAxNikJCUxpdHRlbGZ1c2UgU3RhcnRjbwotCQkJCTM3MTQgS2lubmVhciBQbAotCQkJCVNhc2thdG9vbiBTSyBTN1AgMEE2Ci0JCQkJQ0FOQURBCi0KLTAwLTE1LUZEICAgKGhleCkJCUNvbXBsZXRlIE1lZGlhIFN5c3RlbXMKLTAwMTVGRCAgICAgKGJhc2UgMTYpCQlDb21wbGV0ZSBNZWRpYSBTeXN0ZW1zCi0JCQkJR3JvdmUgUGxhY2UKLQkJCQlDdWNrZmllbGQgTGFuZQotCQkJCVdhcm5pbmdsaWQgV2VzdCBzdXNzZXggUkgxNyA1U04KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNS1GRSAgIChoZXgpCQlTQ0hJTExJTkcgUk9CT1RJQ1MgTExDCi0wMDE1RkUgICAgIChiYXNlIDE2KQkJU0NISUxMSU5HIFJPQk9USUNTIExMQwotCQkJCTIwMSBDT1VTVEVBVSBQTAotCQkJCURBVklTIENBIDk1NjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1GRiAgIChoZXgpCQlOb3ZhdGVsIFdpcmVsZXNzLCBJbmMuCi0wMDE1RkYgICAgIChiYXNlIDE2KQkJTm92YXRlbCBXaXJlbGVzcywgSW5jLgotCQkJCTk2NDUgU2NyYW50b24gUm9hZAotCQkJCVN1aXRlIDIwNQotCQkJCVNhbiBEaWVnbyBDYWxpZm9ybmlhIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0wMCAgIChoZXgpCQlDZWxsZUJyaXRlIE1vYmlsZSBTeW5jaHJvbml6YXRpb24KLTAwMTYwMCAgICAgKGJhc2UgMTYpCQlDZWxsZUJyaXRlIE1vYmlsZSBTeW5jaHJvbml6YXRpb24KLQkJCQkyNSBCYXNlbCBTdC4KLQkJCQlQT0IgNzU2NQotCQkJCVBldGFjaCBUaWt2YSAgNDkxNzAKLQkJCQlJU1JBRUwKLQotMDAtMTYtMDEgICAoaGV4KQkJQnVmZmFsbyBJbmMuCi0wMDE2MDEgICAgIChiYXNlIDE2KQkJQnVmZmFsbyBJbmMuCi0JCQkJNC0xNSBTaGliYXRhIGhvbmRvcmkKLQkJCQlOYWdveWEgTWluYW1pLWt1LCBBaWNoaSA0NTctODUyMAotCQkJCUpBUEFOCi0KLTAwLTE2LTAyICAgKGhleCkJCUNFWU9OIFRFQ0hOT0xPR1kgQ08uLExURC4KLTAwMTYwMiAgICAgKGJhc2UgMTYpCQlDRVlPTiBURUNITk9MT0dZIENPLixMVEQuCi0JCQkJMTNGIFNhbXN1bmcgSW5zdXJhbmNlIEIvRC4gIzk0Mi05Ci0JCQkJSW5neWUtRG9uZyxQYWxkYWwtR3UKLQkJCQlTdXdvbi1DaXR5IEd5ZW9uZ2dpLURvIDQ0Mi04MzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtMDMgICAoaGV4KQkJQ09PTEtTS1kgQ28uLCBMVEQKLTAwMTYwMyAgICAgKGJhc2UgMTYpCQlDT09MS1NLWSBDby4sIExURAotCQkJCVNoaW5nc3VuZyBvZmZjZXRlbCBBNTExLCAxNTg4LTEKLQkJCQlTZWNobyBTZW91bCAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTA0ICAgKGhleCkJCVNpZ3BybwotMDAxNjA0ICAgICAoYmFzZSAxNikJCVNpZ3BybwotCQkJCTY1NSBXIEV2ZWx5biBTVAotCQkJCVN1aXRlIDIKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0wNSAgIChoZXgpCQlZT1JLVklMTEUgU09VTkQgSU5DLgotMDAxNjA1ICAgICAoYmFzZSAxNikJCVlPUktWSUxMRSBTT1VORCBJTkMuCi0JCQkJNDYyNSBXSVRNRVIgSU5EVVNUUklBTCBFU1RBVEUKLQkJCQlOSUFHQVJBIEZBTExTIE5ZIDE0MzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0wNiAgIChoZXgpCQlJZGVhbCBJbmR1c3RyaWVzCi0wMDE2MDYgICAgIChiYXNlIDE2KQkJSWRlYWwgSW5kdXN0cmllcwotCQkJCTkxNDUgQmFsYm9hIEF2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMDcgICAoaGV4KQkJQ3VydmVzIEludGVybmF0aW9uYWwgSW5jLgotMDAxNjA3ICAgICAoYmFzZSAxNikJCUN1cnZlcyBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQkxMDAgUml0Y2hpZSBSb2FkCi0JCQkJV2FjbyBUZXhhcyA3NjcxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMDggICAoaGV4KQkJU2VxdWFucyBDb21tdW5pY2F0aW9ucwotMDAxNjA4ICAgICAoYmFzZSAxNikJCVNlcXVhbnMgQ29tbXVuaWNhdGlvbnMKLQkJCQkxOSBMZSBQYXJ2aXMgZGUgbGEgROlmZW5zZQotCQkJCULidGltZW50IENpdGlDZW50ZXIKLQkJCQlQQVJJUyBMQSBERUZFTlNFIENFREVYIDkyMDczCi0JCQkJRlJBTkNFCi0KLTAwLTE2LTA5ICAgKGhleCkJCVVuaXRlY2ggZWxlY3Ryb25pY3MgY28uLCBsdGQuCi0wMDE2MDkgICAgIChiYXNlIDE2KQkJVW5pdGVjaCBlbGVjdHJvbmljcyBjby4sIGx0ZC4KLQkJCQk1RixOby4xMzYsTGFuZSAyMzUgLFBhby1jaGlhbyBSZC4sCi0JCQkJSHNpbi1UaWVuIGNpdHkgVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtMEEgICAoaGV4KQkJU1dFRVggRXVyb3BlIEJWCi0wMDE2MEEgICAgIChiYXNlIDE2KQkJU1dFRVggRXVyb3BlIEJWCi0JCQkJQW1wZXJld2VnIDMKLQkJCQlEZWxmdCBadWlkLUhvbGxhbmQgMjYyNyBCRwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE2LTBCICAgKGhleCkJCVRWV29ya3MgTExDCi0wMDE2MEIgICAgIChiYXNlIDE2KQkJVFZXb3JrcyBMTEMKLQkJCQlUd28gQmVsdmVkZXJlIFBsYWNlLCAjMjAwCi0JCQkJTWlsbCBWYWxsZXkgQ0EgOTQ5NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTBDICAgKGhleCkJCUxQTCAgREVWRUxPUE1FTlQgUy5BLiBERSBDLlYKLTAwMTYwQyAgICAgKGJhc2UgMTYpCQlMUEwgIERFVkVMT1BNRU5UIFMuQS4gREUgQy5WCi0JCQkJTEFHTyBHSU5FQlJBIDM4MCBQMwotCQkJCUNPTC4gRlJBTkNJU0NPIEkgTUFERVJPCi0JCQkJRC5GLiAxMTQ4MAotCQkJCU1FWElDTwotCi0wMC0xNi0wRCAgIChoZXgpCQlCZSBIZXJlIENvcnBvcmF0aW9uCi0wMDE2MEQgICAgIChiYXNlIDE2KQkJQmUgSGVyZSBDb3Jwb3JhdGlvbgotCQkJCTM5MzAwIENpdmljIENlbnRlciBEci4sIFN1aXRlIDE4MAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTBFICAgKGhleCkJCU9wdGljYSBUZWNobm9sb2dpZXMgSW5jLgotMDAxNjBFICAgICAoYmFzZSAxNikJCU9wdGljYSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTIwNTEgRG9nd29vZCBTdHJlZXQKLQkJCQlTdWl0ZSAyMTAKLQkJCQlMb3Vpc3ZpbGxlIENPIDgwMDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0wRiAgIChoZXgpCQlCQURHRVIgTUVURVIgSU5DCi0wMDE2MEYgICAgIChiYXNlIDE2KQkJQkFER0VSIE1FVEVSIElOQwotCQkJCTQ1NDUgVyBCUk9XTiBERUVSIFJECi0JCQkJTUlMV0FVS0VFIFdJIDUzMjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0xMCAgIChoZXgpCQlDYXJpbmEgVGVjaG5vbG9neQotMDAxNjEwICAgICAoYmFzZSAxNikJCUNhcmluYSBUZWNobm9sb2d5Ci0JCQkJNjkwQSBEaXNjb3ZlcnkgRHJpdmUKLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0xMSAgIChoZXgpCQlBbHRlY29uIFNybAotMDAxNjExICAgICAoYmFzZSAxNikJCUFsdGVjb24gU3JsCi0JCQkJVmlhIEYubGxpIENhaXJvbGksIDE3Ci0JCQkJTGlzc29uZSBNaWxhbm8gMjAwMzUKLQkJCQlJVEFMWQotCi0wMC0xNi0xMiAgIChoZXgpCQlPdHN1a2EgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE2MTIgICAgIChiYXNlIDE2KQkJT3RzdWthIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTEtMTAgU2FzYWdhb2thLCBNaW5ha3VjaGkKLQkJCQlrb3VrYSBzaGlnYSA1MjgtMDA2MQotCQkJCUpBUEFOCi0KLTAwLTE2LTEzICAgKGhleCkJCUxpYnJlU3RyZWFtIFRlY2hub2xvZ2llcyBJbmMuCi0wMDE2MTMgICAgIChiYXNlIDE2KQkJTGlicmVTdHJlYW0gVGVjaG5vbG9naWVzIEluYy4KLQkJCQk4OTUgV2F2ZXJsZXkgU3RyZWV0Ci0JCQkJU3VpdGUgMTEwCi0JCQkJV2lubmlwZWcgTWFuaXRvYmEgUjNUIDVQNAotCQkJCUNBTkFEQQotCi0wMC0xNi0xNCAgIChoZXgpCQlQaWNvc2Vjb25kIFB1bHNlIExhYnMKLTAwMTYxNCAgICAgKGJhc2UgMTYpCQlQaWNvc2Vjb25kIFB1bHNlIExhYnMKLQkJCQkyNTAwIDU1dGggU3RyZWV0Ci0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMTUgICAoaGV4KQkJTml0dGFuIENvbXBhbnksIExpbWl0ZWQKLTAwMTYxNSAgICAgKGJhc2UgMTYpCQlOaXR0YW4gQ29tcGFueSwgTGltaXRlZAotCQkJCTExLTYsIDEtY2hvbWUsIEhhdGFnYXlhCi0JCQkJU2hpYnV5YS1rdSBUb2t5byAxNTEtODUzNQotCQkJCUpBUEFOCi0KLTAwLTE2LTE2ICAgKGhleCkJCUJST1dBTiBDT01NVU5JQ0FUSU9OIElOQy4KLTAwMTYxNiAgICAgKGJhc2UgMTYpCQlCUk9XQU4gQ09NTVVOSUNBVElPTiBJTkMuCi0JCQkJTm8uMSBKZW4tQWkgUm9hZCwgSHNpbkNodSBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHVLb3UgSHNpYW5nIEhzaW5DaHUgSHNpZW4gMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi0xNyAgIChoZXgpCQlNU0kKLTAwMTYxNyAgICAgKGJhc2UgMTYpCQlNU0kKLQkJCQlOby42OSwgTGktRGUgU3QsIEp1bmctSG8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi0xOCAgIChoZXgpCQlISVZJT04gQ28uLCBMdGQuCi0wMDE2MTggICAgIChiYXNlIDE2KQkJSElWSU9OIENvLiwgTHRkLgotCQkJCTJGLiwgQWt5dW5nIEJsZGcuLCA1NC0xMCwgTXVuamVvbmctZG9uZywKLQkJCQlTb25ncGEtR3UgU2VvdWwgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTE5ICAgKGhleCkJCUxhIEZhY3Rvcu1hIGRlIENvbXVuaWNhY2lvbmVzIEFwbGljYWRhcyxTLkwuCi0wMDE2MTkgICAgIChiYXNlIDE2KQkJTGEgRmFjdG9y7WEgZGUgQ29tdW5pY2FjaW9uZXMgQXBsaWNhZGFzLFMuTC4KLQkJCQlDL0FncmljdWx0dXJhLDExMQotCQkJCVRlcnJhc3NhIEJhcmNlbG9uYSAwODIyMwotCQkJCVNQQUlOCi0KLTAwLTE2LTFBICAgKGhleCkJCURhbWV0cmljIEFCCi0wMDE2MUEgICAgIChiYXNlIDE2KQkJRGFtZXRyaWMgQUIKLQkJCQlCb3ggMTIwCi0JCQkJU2thcmhvbG1lbiBTdG9ja2hvbG0gU0UtMTI3MjMKLQkJCQlTV0VERU4KLQotMDAtMTYtMUIgICAoaGV4KQkJTWljcm9uZXQgQ29ycG9yYXRpb24KLTAwMTYxQiAgICAgKGJhc2UgMTYpCQlNaWNyb25ldCBDb3Jwb3JhdGlvbgotCQkJCTE3ODgtMzg4IE5vbXVyYSBIaXJvb2thCi0JCQkJU2hpb2ppcmktc2hpIE5hZ2Fuby1rZW4gMzk5LTA3MDIKLQkJCQlKQVBBTgotCi0wMC0xNi0xQyAgIChoZXgpCQllOmN1ZQotMDAxNjFDICAgICAoYmFzZSAxNikJCWU6Y3VlCi0JCQkJRnJpZWRyaWNoLUxpc3QtU3RyYXNzZSAyMwotCQkJCVBhZGVyYm9ybiAgMzMxMDAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LTFEICAgKGhleCkJCUlubm92YXRpdmUgV2lyZWxlc3MgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDE2MUQgICAgIChiYXNlIDE2KQkJSW5ub3ZhdGl2ZSBXaXJlbGVzcyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMDQ3IFZpc3RhIFBhcmsgRHIuCi0JCQkJU3VpdGUgQQotCQkJCUZvcmVzdCBWQSAyNDU1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMUUgICAoaGV4KQkJV29vamlubmV0Ci0wMDE2MUUgICAgIChiYXNlIDE2KQkJV29vamlubmV0Ci0JCQkJMjkyIG9zYW4gZG9uZ3RhbgotCQkJCWh3YXNlb25nIGt5b25nZ2kgNDQ1LTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi0xRiAgIChoZXgpCQlTVU5XQVZFVEVDIENvLiwgTHRkLgotMDAxNjFGICAgICAoYmFzZSAxNikJCVNVTldBVkVURUMgQ28uLCBMdGQuCi0JCQkJIzgyMywgS3dhbnlhbmctZG9uZywgRG9uZ2FuLWt1Ci0JCQkJQW55YW5nLXNpIEt5dW5na2ktZG8gNDMxLTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi0yMCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotMDAxNjIwICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTAwLTE2LTIxICAgKGhleCkJCUNvbG9yYWRvIFZuZXQKLTAwMTYyMSAgICAgKGJhc2UgMTYpCQlDb2xvcmFkbyBWbmV0Ci0JCQkJMjU1IEUuIDZ0aCBTdC4KLQkJCQlMb3ZlbGFuZCBDTyA4MDUzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMjIgICAoaGV4KQkJQkJIIFNZU1RFTVMgR01CSAotMDAxNjIyICAgICAoYmFzZSAxNikJCUJCSCBTWVNURU1TIEdNQkgKLQkJCQlC9nR0Z2Vyc3RyYXNzZSA0MAotCQkJCVdlaWRlbiBpLmQuT1BmLiBCYXllcm4gOTI2MzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LTIzICAgKGhleCkJCUludGVydmFsIE1lZGlhCi0wMDE2MjMgICAgIChiYXNlIDE2KQkJSW50ZXJ2YWwgTWVkaWEKLQkJCQkzMjAwIEFzaCBTdHJlZXQKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTI0ICAgKGhleCkJCVRlbmVyb3MsIEluYy4KLTAwMTYyNCAgICAgKGJhc2UgMTYpCQlUZW5lcm9zLCBJbmMuCi0JCQkJMjE1IENhc3RybyBTdC4KLQkJCQkzcmQgRmxvb3IKLQkJCQlNdC4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMjUgICAoaGV4KQkJSW1waW5qLCBJbmMuCi0wMDE2MjUgICAgIChiYXNlIDE2KQkJSW1waW5qLCBJbmMuCi0JCQkJNzAxIE4uIDM0dGggU3RyZWV0Ci0JCQkJU3VpdGUgMzAwCi0JCQkJU2VhdHRsZSBXQSA5ODEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMjYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTYyNiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTI3ICAgKGhleCkJCWVtYmVkZGVkLWxvZ2ljIERFU0lHTiBBTkQgTU9SRSBHbWJICi0wMDE2MjcgICAgIChiYXNlIDE2KQkJZW1iZWRkZWQtbG9naWMgREVTSUdOIEFORCBNT1JFIEdtYkgKLQkJCQlIYW5zZXN0cmFzc2UgMjQKLQkJCQlNdWVuc3RlciBOUlcgNDgxNTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LTI4ICAgKGhleCkJCVVsdHJhIEVsZWN0cm9uaWNzIE1hbnVmYWN0dXJpbmcgYW5kIENhcmQgU3lzdGVtcwotMDAxNjI4ICAgICAoYmFzZSAxNikJCVVsdHJhIEVsZWN0cm9uaWNzIE1hbnVmYWN0dXJpbmcgYW5kIENhcmQgU3lzdGVtcwotCQkJCUhhbXBzaGlyZSBSb2FkCi0JCQkJR3JhbmJ5IEVzdGF0ZQotCQkJCVdleW1vdXRoIERvcnNldCBEVDQgOVhECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtMjkgICAoaGV4KQkJTml2dXMgR21iSAotMDAxNjI5ICAgICAoYmFzZSAxNikJCU5pdnVzIEdtYkgKLQkJCQlJbSBU5GxlIDIKLQkJCQlFcHBpbmdlbiBCYWRlbi1XdWVydHRlbWJlcmcgNzUwMzEKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LTJBICAgKGhleCkJCUFudGlrIGNvbXB1dGVycyAmIGNvbW11bmljYXRpb25zIHMuci5vLgotMDAxNjJBICAgICAoYmFzZSAxNikJCUFudGlrIGNvbXB1dGVycyAmIGNvbW11bmljYXRpb25zIHMuci5vLgotCQkJCVJhenVzb3ZhIDIKLQkJCQlLb3NpY2UgU0sgU0stMDQwMDEKLQkJCQlTTE9WQUtJQQotCi0wMC0xNi0yQiAgIChoZXgpCQlUb2dhbWkgRWxlY3RyaWMgTWZnLmNvLixMdGQuCi0wMDE2MkIgICAgIChiYXNlIDE2KQkJVG9nYW1pIEVsZWN0cmljIE1mZy5jby4sTHRkLgotCQkJCTEtMSBPaHRha2FyYS1LaXRhbWFjaGkKLQkJCQlTYWdhLlBSRiA4NDAtMDgwMgotCQkJCUpBUEFOCi0KLTAwLTE2LTJDICAgKGhleCkJCVhhbmJvbwotMDAxNjJDICAgICAoYmFzZSAxNikJCVhhbmJvbwotCQkJCTExNSBXZXN0IDMwdGgsIDZ0aCBGbAotCQkJCU5ldyBZb3JrIE5ZIDEwMDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0yRCAgIChoZXgpCQlTVE5ldCBDby4sIEx0ZC4KLTAwMTYyRCAgICAgKGJhc2UgMTYpCQlTVE5ldCBDby4sIEx0ZC4KLQkJCQlTaGluLXdoYSBCdWlsZGluZyA0RiwgOTU0LTI1Ci0JCQkJS3dhbnlhbmctZG9uZywgRG9uZ2FuLWd1Ci0JCQkJQW55YW5nLXNpIEt5dW5na2ktZG8gIDQzMS0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtMkUgICAoaGV4KQkJU3BhY2UgU2h1dHRsZSBIaS1UZWNoIENvLiwgTHRkLgotMDAxNjJFICAgICAoYmFzZSAxNikJCVNwYWNlIFNodXR0bGUgSGktVGVjaCBDby4sIEx0ZC4KLQkJCQlOby4gMjI2LCBXdS1IbyBTdC4sIFd1LUx1bmcgVmlsbGFnZSwKLQkJCQlDaGl1bmctTGluIEhzaWFuZywKLQkJCQlIc2luY2h1IEhzaWVuICAzMDcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTJGICAgKGhleCkJCUdldXRlYnL8Y2sgR21iSAotMDAxNjJGICAgICAoYmFzZSAxNikJCUdldXRlYnL8Y2sgR21iSAotCQkJCUltIE5hc3NlbiA3LTkKLQkJCQlXaW5kaGFnZW4gIDUzNTc4Ci0JCQkJR0VSTUFOWQotCi0wMC0xNi0zMCAgIChoZXgpCQlWYXRpdiBUZWNobm9sb2dpZXMKLTAwMTYzMCAgICAgKGJhc2UgMTYpCQlWYXRpdiBUZWNobm9sb2dpZXMKLQkJCQk5MzM5IEdlbmVzZWUgQXZlbnVlCi0JCQkJU3VpdGUgMTMwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0zMSAgIChoZXgpCQlYdGVhbQotMDAxNjMxICAgICAoYmFzZSAxNikJCVh0ZWFtCi0JCQkJcm9vbSA4MDEsIE5vLjEwMiBpbnRlcm5hdGlvbmFsIFNjaWVuY2UgJiBUZWNob2xvZ3kgUGFyawotCQkJCU5vLjIgU2hhbmdEaSBJbmZvIFJvYWQsIEhhaURpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nIDg2MTAKLQkJCQlDSElOQQotCi0wMC0xNi0zMiAgIChoZXgpCQlTQU1TVU5HIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDAxNjMyICAgICAoYmFzZSAxNikJCVNBTVNVTkcgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJNDE2LCBNRVRBTi0zRE9ORywKLQkJCQlZT1VOR1RPTkctR1UKLQkJCQlTVVdPTiBLWVVOR0tJLURPIDQ0Mi03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtMzMgICAoaGV4KQkJT3hmb3JkIERpYWdub3N0aWNzIEx0ZC4KLTAwMTYzMyAgICAgKGJhc2UgMTYpCQlPeGZvcmQgRGlhZ25vc3RpY3MgTHRkLgotCQkJCVNhbmR5YnJhZQotCQkJCVdoaXRlYmFybiBEciwgQm9hcnMgSGlsbAotCQkJCU94Zm9yZCBPeG9uLiBPWDEgNUhKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtMzQgICAoaGV4KQkJTWF0aHRlY2gsIEluYy4KLTAwMTYzNCAgICAgKGJhc2UgMTYpCQlNYXRodGVjaCwgSW5jLgotCQkJCTY0MDIgQXJsaW5ndG9uIEJsdmQuLAotCQkJCVN1aXRlIDEyMDAKLQkJCQlGYWxscyBDaHVyY2ggVmlyZ2luaWEgMjIwNDItMjM1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMzUgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDE2MzUgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkgU291dGgKLQkJCQlNUzA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTM2ICAgKGhleCkJCVF1YW50YSBDb21wdXRlciBJbmMuCi0wMDE2MzYgICAgIChiYXNlIDE2KQkJUXVhbnRhIENvbXB1dGVyIEluYy4KLQkJCQlOby4gMjExLCBXZW4gSHdhIDJSZC4sIEt1ZWkgU2hhbiBIc2lhbmcKLQkJCQlUYW8gWXVhbiBTaGllbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi0zNyAgIChoZXgpCQlDaXRlbCBTcmwKLTAwMTYzNyAgICAgKGJhc2UgMTYpCQlDaXRlbCBTcmwKLQkJCQlWaWEgTC4gRy4gQ29sdW1lbGxhLCAzNgotCQkJCU1pbGFuIE1JIDIwMTI4Ci0JCQkJSVRBTFkKLQotMDAtMTYtMzggICAoaGV4KQkJVEVDT00gQ28uLCBMdGQuCi0wMDE2MzggICAgIChiYXNlIDE2KQkJVEVDT00gQ28uLCBMdGQuCi0JCQkJMjMgUiZEIFJvYWQgMiBTY2llbmNlIEJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW4tQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTM5ICAgKGhleCkJCVVCSVFVQU0gQ28uLEx0ZAotMDAxNjM5ICAgICAoYmFzZSAxNikJCVVCSVFVQU0gQ28uLEx0ZAotCQkJCVRlY2hub3ZpbGwgNEYsMjcyLTMgWWF0YXAzCi0JCQkJQnVuZGFuZwotCQkJCVNlb25nbmFtIEt5ZW9uZ2dpIDQ2My04MzYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtM0EgICAoaGV4KQkJWVZFUyBURUNITk9MT0dZIENPLiwgTFRELgotMDAxNjNBICAgICAoYmFzZSAxNikJCVlWRVMgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQlOby43NCwgRnVzaW5nIDJuZCBSZC4KLQkJCQlHdWVpc2hhbiBUYW95dWFuIDMzMzc3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi0zQiAgIChoZXgpCQlWZXJ0ZXhSU0kvR2VuZXJhbCBEeW5hbWljcwotMDAxNjNCICAgICAoYmFzZSAxNikJCVZlcnRleFJTSS9HZW5lcmFsIER5bmFtaWNzCi0JCQkJMjEyMCBPbGQgR2F0ZXNidXJnIFJkLgotCQkJCVN0YXRlIGNvbGxlZ2UgUEEgMTY4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTNDICAgKGhleCkJCVJlYm94IEIuVi4KLTAwMTYzQyAgICAgKGJhc2UgMTYpCQlSZWJveCBCLlYuCi0JCQkJSGVuZHJpayBGaWdlZXdlZyAxWAotCQkJCUhhYXJsZW0gTm9vcmQtSG9sbGFuZCAyMDMxIEJKCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTYtM0QgICAoaGV4KQkJVHNpbmdodWEgVG9uZ2ZhbmcgTGVnZW5kIFNpbGljb24gVGVjaC4gQ28uLCBMdGQuCi0wMDE2M0QgICAgIChiYXNlIDE2KQkJVHNpbmdodWEgVG9uZ2ZhbmcgTGVnZW5kIFNpbGljb24gVGVjaC4gQ28uLCBMdGQuCi0JCQkJMjZGIFRTSU5HSFVBIFRPTkdGQU5HIEhJLVRFQ0ggUExBWkEKLQkJCQlCRUlKSU5HICAxMDAwODMKLQkJCQlDSElOQQotCi0wMC0xNi0zRSAgIChoZXgpCQlYZW5zb3VyY2UsIEluYy4KLTAwMTYzRSAgICAgKGJhc2UgMTYpCQlYZW5zb3VyY2UsIEluYy4KLQkJCQkyMzAwIEdlbmcgUmQuCi0JCQkJU3VpdGUgMjUwCi0JCQkJUGFsbyBBbHRvIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0zRiAgIChoZXgpCQlDUmVURSBTWVNURU1TIEluYy4KLTAwMTYzRiAgICAgKGJhc2UgMTYpCQlDUmVURSBTWVNURU1TIEluYy4KLQkJCQk3RixOby4yNTAsU2VjLjMsUGVpIFNoZW4gUmQuLFNoZW4gS2VuZyBIc2lhbmcKLQkJCQlUYWlwZWkgQ291bnR5ICAyMjIwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNDAgICAoaGV4KQkJQXNtb2JpbGUgQ29tbXVuaWNhdGlvbiBJbmMuCi0wMDE2NDAgICAgIChiYXNlIDE2KQkJQXNtb2JpbGUgQ29tbXVuaWNhdGlvbiBJbmMuCi0JCQkJTm8uMTEgTGFuZSAxMjAsIExpLVRlIFJkLiwgUGVpdG91IDExMiwgVGFpcGVpLCBUYWl3YW4sIFIuTy5DCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTQxICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotMDAxNjQxICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTEFORSAzNTEsIFNFQy4xLFRBSVBJTkcgUkQuIAotCQkJCVRTQU9UVUVOIE5BTlRPVSA1NDI2MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNDIgICAoaGV4KQkJUGFuZ29saW4KLTAwMTY0MiAgICAgKGJhc2UgMTYpCQlQYW5nb2xpbgotCQkJCTk1MDEgU2F0ZWxsaXRlIEJvdWxldmFyZCwgU3VpdGUgMTA5Ci0JCQkJT3JsYW5kbyBGTCAzMjgzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNDMgICAoaGV4KQkJU3VuaGlsbG8gQ29ycG9yYXRpb24KLTAwMTY0MyAgICAgKGJhc2UgMTYpCQlTdW5oaWxsbyBDb3Jwb3JhdGlvbgotCQkJCTQ0NCBLZWxsZXkgRHJpdmUKLQkJCQlXZXN0IEJlcmxpbiBOZXcgSmVyc2V5IDA4MDkxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi00NCAgIChoZXgpCQlMSVRFLU9OIFRlY2hub2xvZ3kgQ29ycC4KLTAwMTY0NCAgICAgKGJhc2UgMTYpCQlMSVRFLU9OIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkxOEYsIE5vLjM5MiwgUnVleSBLdWFuZyBSb2FkLCBOaWVodSwKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNDUgICAoaGV4KQkJUG93ZXIgRGlzdHJpYnV0aW9uLCBJbmMuCi0wMDE2NDUgICAgIChiYXNlIDE2KQkJUG93ZXIgRGlzdHJpYnV0aW9uLCBJbmMuCi0JCQkJNDIwMCBPYWtsZXlzIEN0LgotCQkJCVJpY2htb25kIFZBIDIzMjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi00NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE2NDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi00NyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE2NDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi00OCAgIChoZXgpCQlTU0QgQ29tcGFueSBMaW1pdGVkCi0wMDE2NDggICAgIChiYXNlIDE2KQkJU1NEIENvbXBhbnkgTGltaXRlZAotCQkJCTMtMy00IEhpZ2FzaGl5YWd1cmEKLQkJCQlLdXNhdHN1LWNpdHkgU2hpZ2EgNTI1LTAwNTQKLQkJCQlKQVBBTgotCi0wMC0xNi00OSAgIChoZXgpCQlTZXRPbmUgR21iSAotMDAxNjQ5ICAgICAoYmFzZSAxNikJCVNldE9uZSBHbWJICi0JCQkJSGVnZW5oZWltZXIgU3RyLiAyCi0JCQkJV2VpbCBhbSBSaGVpbiBCYWRlbiBXdWVydGVtYmVyZyBELTc5NTc2Ci0JCQkJR0VSTUFOWQotCi0wMC0xNi00QSAgIChoZXgpCQlWaWJyYXRpb24gVGVjaG5vbG9neSBMaW1pdGVkCi0wMDE2NEEgICAgIChiYXNlIDE2KQkJVmlicmF0aW9uIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVZpYnRlY2ggSG91c2UsIENlbnRyYWwgQm91bGV2YXJkCi0JCQkJQ2VudHJhbCBQYXJrCi0JCQkJTGFyYmVydCBTY290bGFuZCBGSzUgNFJVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtNEIgICAoaGV4KQkJUXVvcmlvbiBEYXRhIFN5c3RlbXMgR21iSAotMDAxNjRCICAgICAoYmFzZSAxNikJCVF1b3Jpb24gRGF0YSBTeXN0ZW1zIEdtYkgKLQkJCQlBbiBkZXIgS2xpbmdlIDYKLQkJCQlFcmZ1cnQgVGh1cmluZ2lhIDk5MTk1Ci0JCQkJR0VSTUFOWQotCi0wMC0xNi00QyAgIChoZXgpCQlQTEFORVQgSU5UIENvLiwgTHRkCi0wMDE2NEMgICAgIChiYXNlIDE2KQkJUExBTkVUIElOVCBDby4sIEx0ZAotCQkJCTh0aCBGbG9vciwgU2FldW0gQi9ELCAxMzYxLTUKLQkJCQlTZW9jaG8tRG9uZywgU2VvY2hvLUt1Ci0JCQkJU2VvdWwgIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtNEQgICAoaGV4KQkJQWxjYXRlbCBOb3J0aCBBbWVyaWNhIElQIERpdmlzaW9uCi0wMDE2NEQgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBOb3J0aCBBbWVyaWNhIElQIERpdmlzaW9uCi0JCQkJNzAxIEUuIE1pZGRsZWZpZWxkIFJELgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTRFICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE2NEUgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTE2LTRGICAgKGhleCkJCVdvcmxkIEV0aG5pYyBCcm9hZGNhc3RpbiBJbmMuCi0wMDE2NEYgICAgIChiYXNlIDE2KQkJV29ybGQgRXRobmljIEJyb2FkY2FzdGluIEluYy4KLQkJCQk1MCBDYWxpZm9ybmlhIFN0cmVldCwgU3VpdGUgMTUwMAotCQkJCVNhbiBGcmFuY2lzY28gQ2FsaWZvcm5pYSA5NDExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNTAgICAoaGV4KQkJSGVybGV5IEdlbmVyYWwgTWljcm93YXZlIElzcmFlbC4gCi0wMDE2NTAgICAgIChiYXNlIDE2KQkJSGVybGV5IEdlbmVyYWwgTWljcm93YXZlIElzcmFlbC4gCi0JCQkJS0lCQlVUWiBFWUFMCi0JCQkJRC5OLiBIQVNIQVJPTiBIQVRJQ0hPTgotCQkJCTQ1ODQwCi0JCQkJSVNSQUVMCi0KLTAwLTE2LTUxICAgKGhleCkJCUV4ZW8gU3lzdGVtcwotMDAxNjUxICAgICAoYmFzZSAxNikJCUV4ZW8gU3lzdGVtcwotCQkJCTE2NTAsIHJ1ZSBNaWNoZWxpbiwgc3VpdGUgMjAxCi0JCQkJTGF2YWwgUXXpYmVjIEg3TCA0UjMKLQkJCQlDQU5BREEKLQotMDAtMTYtNTIgICAoaGV4KQkJSG9hdGVjaCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTY1MiAgICAgKGJhc2UgMTYpCQlIb2F0ZWNoIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTFGLiwgTm8uMjI0LCBHdW9zaGVuZyBTdC4KLQkJCQlaaHViZWkgSHNpbkNodSBIc2llbiAzMDI0NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNTMgICAoaGV4KQkJTEVHTyBTeXN0ZW0gQS9TIElFIEVsZWN0cm9uaWNzIERpdmlzaW9uCi0wMDE2NTMgICAgIChiYXNlIDE2KQkJTEVHTyBTeXN0ZW0gQS9TIElFIEVsZWN0cm9uaWNzIERpdmlzaW9uCi0JCQkJQWFzdHZlaiAxCi0JCQkJQmlsbHVuZCBLb21tdW5lIDcxOTAKLQkJCQlERU5NQVJLCi0KLTAwLTE2LTU0ICAgKGhleCkJCUZsZXgtUCBJbmR1c3RyaWVzIFNkbi4gQmhkLgotMDAxNjU0ICAgICAoYmFzZSAxNikJCUZsZXgtUCBJbmR1c3RyaWVzIFNkbi4gQmhkLgotCQkJCU5vLjEyOC0xMi0yLCBNZW5hcmEgVU1OTywKLQkJCQlKYWxhbiBNYWNhbGlzdGVyLAotCQkJCUdlb3JnZXRvd24gUGVuYW5nIDEwNDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTYtNTUgICAoaGV4KQkJRlVITyBURUNITk9MT0dZIENvLiwgTFRECi0wMDE2NTUgICAgIChiYXNlIDE2KQkJRlVITyBURUNITk9MT0dZIENvLiwgTFRECi0JCQkJTm8uIDMwLCBMYW5lIDcyNiwgSmlubWEgUmQsIFNlYy4gMwotCQkJCUNoYW5nIEh1YSBUYWl3YSA1MDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTU2ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAxNjU2ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTE2LTU3ICAgKGhleCkJCUFlZ2F0ZSBMdGQKLTAwMTY1NyAgICAgKGJhc2UgMTYpCQlBZWdhdGUgTHRkCi0JCQkJVGVjaG5vbG9neSBDZW50cmUKLQkJCQlNZWxib3VybiBIZXJ0Zm9yZHNoaXJlIFNHOCA2RFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNi01OCAgIChoZXgpCQlGdXNpb250ZWNoIFRlY2hub2xvZ2llcyBJbmMuCi0wMDE2NTggICAgIChiYXNlIDE2KQkJRnVzaW9udGVjaCBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTZGLCBOby43OCwgQ2hlbmcgS3VuZyBSZC4sIFNlYy4gMSwKLQkJCQlOYW4gS2FuZwotCQkJCVRhaXBlaSAgMTE1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi01OSAgIChoZXgpCQlaLk0uUC4gUkFEV0FHCi0wMDE2NTkgICAgIChiYXNlIDE2KQkJWi5NLlAuIFJBRFdBRwotCQkJCUJyYWNrYSAyOCBzdHJlZXQKLQkJCQlSQURPTSBNYXpvd2llY2tpZSAyNi02MDAKLQkJCQlQT0xBTkQKLQotMDAtMTYtNUEgICAoaGV4KQkJSGFybWFuIFNwZWNpYWx0eSBHcm91cAotMDAxNjVBICAgICAoYmFzZSAxNikJCUhhcm1hbiBTcGVjaWFsdHkgR3JvdXAKLQkJCQkzIE9hayBQYXJrIERyaXZlCi0JCQkJQmVkZm9yZCBNQSAwMTczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNUIgICAoaGV4KQkJR3JpcCBBdWRpbwotMDAxNjVCICAgICAoYmFzZSAxNikJCUdyaXAgQXVkaW8KLQkJCQk2MzQ1IFcuIExvdWlzZSBEcml2ZQotCQkJCUdsZW5kYWxlIEFyaXpvbmEgODUzMTAtNDI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNUMgICAoaGV4KQkJVHJhY2tmbG93IEx0ZAotMDAxNjVDICAgICAoYmFzZSAxNikJCVRyYWNrZmxvdyBMdGQKLQkJCQkxNjctMTY5IEtlbnNpbmd0b24gSGlnaCBTdHJlZXQKLQkJCQlMb25kb24gRW5nbGFuZCBXODZTSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE2LTVEICAgKGhleCkJCUFpckRlZmVuc2UsIEluYy4KLTAwMTY1RCAgICAgKGJhc2UgMTYpCQlBaXJEZWZlbnNlLCBJbmMuCi0JCQkJNDgwMCBOb3J0aCBQb2ludCBQa3d5Ci0JCQkJU3RlIDEwMAotCQkJCUFscGhhcmV0dGEgR0EgMzAwMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTVFICAgKGhleCkJCVByZWNpc2lvbiBJL08KLTAwMTY1RSAgICAgKGJhc2UgMTYpCQlQcmVjaXNpb24gSS9PCi0JCQkJNDAwNSBNaXJhbmRhIEF2ZS4sIFN1aXRlIDIxMAotCQkJCVBhbG8gQWx0byBDQSA5NDMwNC0xMjMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi01RiAgIChoZXgpCQlGYWlybW91bnQgQXV0b21hdGlvbgotMDAxNjVGICAgICAoYmFzZSAxNikJCUZhaXJtb3VudCBBdXRvbWF0aW9uCi0JCQkJNDYyMSBXZXN0IENoZXN0ZXIgUGlrZQotCQkJCU5ld3Rvd24gU3F1YXJlIFBBIDE5MDczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi02MCAgIChoZXgpCQlOb3J0ZWwKLTAwMTY2MCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNi02MSAgIChoZXgpCQlOb3ZhdGl1bSBTb2x1dGlvbnMgKFApIEx0ZAotMDAxNjYxICAgICAoYmFzZSAxNikJCU5vdmF0aXVtIFNvbHV0aW9ucyAoUCkgTHRkCi0JCQkJM3JkIEZsb29yLCBUZW1wbGUgVG93ZXJzLCAjNjcyCi0JCQkJQW5uYSBTYWxhaSwgTmFuZGFuYW0sCi0JCQkJQ2hlbm5haSBUYW1pbCBOYWR1IDYwMDAzNQotCQkJCUlORElBCi0KLTAwLTE2LTYyICAgKGhleCkJCUxpeXVoIFRlY2hub2xvZ3kgTHRkLgotMDAxNjYyICAgICAoYmFzZSAxNikJCUxpeXVoIFRlY2hub2xvZ3kgTHRkLgotCQkJCTdGLTEsIE5vLiA5MiwgU2VjLiAxLCBIZWkgSHUgUmQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTYzICAgKGhleCkJCUtCVCBNb2JpbGUKLTAwMTY2MyAgICAgKGJhc2UgMTYpCQlLQlQgTW9iaWxlCi0JCQkJNEYsIFBvbGFyaXMgSSwgMTUtMywgSmVvbmdqYS1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0tc2ksIEd5ZW9uZ2dpLWRvIDQ2My04MTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtNjQgICAoaGV4KQkJUHJvZC1FbCBTcEEKLTAwMTY2NCAgICAgKGJhc2UgMTYpCQlQcm9kLUVsIFNwQQotCQkJCVZpYSBQYWxtYW5vdmEgMTg1Ci0JCQkJTWlsYW5vIE1JIDIwMTMyCi0JCQkJSVRBTFkKLQotMDAtMTYtNjUgICAoaGV4KQkJQ2VsbG9uIEZyYW5jZQotMDAxNjY1ICAgICAoYmFzZSAxNikJCUNlbGxvbiBGcmFuY2UKLQkJCQlSb3V0ZSBkJ0FuZ2VycyBMZSBNYW5zIGNlZGV4IDkKLQkJCQlMZSBNYW5zIFNhcnRoZSA3MjA4MQotCQkJCUZSQU5DRQotCi0wMC0xNi02NiAgIChoZXgpCQlRdWFudGllciBDb21tdW5pY2F0aW9uIEluYy4KLTAwMTY2NiAgICAgKGJhc2UgMTYpCQlRdWFudGllciBDb21tdW5pY2F0aW9uIEluYy4KLQkJCQkxRiwgTm8uIDM2LCBJbmR1c3RyeSBFLiBSZCBJViwKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgcGFyawotCQkJCUhzaW4tQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTY3ICAgKGhleCkJCUEtVEVDIFN1YnN5c3RlbSBJTkMuCi0wMDE2NjcgICAgIChiYXNlIDE2KQkJQS1URUMgU3Vic3lzdGVtIElOQy4KLQkJCQk0RiwgTm8uIDg2LCBDaHVuZy1Ic2luZyBSb2FkLCBTaGlqciBDaXR5LAotCQkJCVRhaXBlaSBDb3VudHkKLQkJCQkyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTY4ICAgKGhleCkJCUVpc2hpbiBFbGVjdHJvbmljcwotMDAxNjY4ICAgICAoYmFzZSAxNikJCUVpc2hpbiBFbGVjdHJvbmljcwotCQkJCU5pc2hpa3UgTWl5YXNoaXRhIDEtMTkKLQkJCQlLb2JlIENpdHkgSHlvZ28gUHJlZmVjdHVyZSA2NTEtMjE0NgotCQkJCUpBUEFOCi0KLTAwLTE2LTY5ICAgKGhleCkJCU1SViBDb21tdW5pY2F0aW9uIChOZXR3b3JrcykgTFRECi0wMDE2NjkgICAgIChiYXNlIDE2KQkJTVJWIENvbW11bmljYXRpb24gKE5ldHdvcmtzKSBMVEQKLQkJCQlQLk8gQm94IDYxNAotCQkJCVlva25lYW0gIDIwNjkyCi0JCQkJSVNSQUVMCi0KLTAwLTE2LTZBICAgKGhleCkJCVRQUwotMDAxNjZBICAgICAoYmFzZSAxNikJCVRQUwotCQkJCTE0NSBxdWFpIGRlIFN0YWxpbmdyYWQKLQkJCQlJc3N5IExlcyBNb3VsaW5lYXV4IElsZSBkZSBGcmFuY2UgOTIxMzcKLQkJCQlGUkFOQ0UKLQotMDAtMTYtNkIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMDAxNjZCICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQk0MTYsTWFldGFuLTNEb25nLFllb25ndG9uZy1HdQotCQkJCVN1d29uLUNpdHkgS3llb25nZ2ktRG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi02QyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0b25pY3MgRGlnaXRhbCBWaWRlbyBTeXN0ZW0gRGl2aXNpb24KLTAwMTY2QyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0b25pY3MgRGlnaXRhbCBWaWRlbyBTeXN0ZW0gRGl2aXNpb24KLQkJCQk0MTYsIE1hZXRhbi0zRG9uZyxZZW9uZ3RvbmctR3UKLQkJCQlTdXdvbiBHeWVvbmdnaS1EbyA0NDMtNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTZEICAgKGhleCkJCVl1bG9uZyBDb21wdXRlciBUZWxlY29tbXVuaWNhdGlvbiBTY2llbnRpZmljKHNoZW56aGVuKUNvLixMdAotMDAxNjZEICAgICAoYmFzZSAxNikJCVl1bG9uZyBDb21wdXRlciBUZWxlY29tbXVuaWNhdGlvbiBTY2llbnRpZmljKHNoZW56aGVuKUNvLixMdAotCQkJCTgvRi5oaWdoIFRlY2ggUGxhemEsVGlhbkFuIEN5YmVycGFyayxDaGVnb25nbWlhbwotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0xNi02RSAgIChoZXgpCQlBcmJpdHJvbiBJbmMuCi0wMDE2NkUgICAgIChiYXNlIDE2KQkJQXJiaXRyb24gSW5jLgotCQkJCTk3MDUgUGF0dXhlbnQgV29vZHMgRHJpdmUKLQkJCQlDb2x1bWJpYSBNRCAyMTA0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNkYgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMTY2RiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCUxvdCA4LCBKbG4gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xNi03MCAgIChoZXgpCQlTS05FVCBDb3Jwb3JhdGlvbgotMDAxNjcwICAgICAoYmFzZSAxNikJCVNLTkVUIENvcnBvcmF0aW9uCi0JCQkJRm9udGFuYSBTaGlueW9rb2hhbWEKLQkJCQlTaGlueW9rb2hhbWEgMiwxNywyIGtvaG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMTYtNzEgICAoaGV4KQkJU3ltcGhveCBJbmZvcm1hdGlvbiBDby4KLTAwMTY3MSAgICAgKGJhc2UgMTYpCQlTeW1waG94IEluZm9ybWF0aW9uIENvLgotCQkJCTE1RiwgTm8uIDUxLCBTZWMuIDMsIE1pbnNoZW5nIEUuIFJvYWQKLQkJCQlUYWlwZWkgQ2l0eSAgMTA0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi03MiAgIChoZXgpCQlaZW53YXkgZW50ZXJwcmlzZSBsdGQKLTAwMTY3MiAgICAgKGJhc2UgMTYpCQlaZW53YXkgZW50ZXJwcmlzZSBsdGQKLQkJCQk2Ri4sIE5vLjIwLCBMYW5lIDE1MCwgSmhvbmdzaW5nIFJkLiwgU2lqaGloIENpdHkKLQkJCQlUYWlwZWkgIDg4NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNzMgICAoaGV4KQkJQnVyeSBHbWJIICYgQ28uIEtHCi0wMDE2NzMgICAgIChiYXNlIDE2KQkJQnVyeSBHbWJIICYgQ28uIEtHCi0JCQkJUm9iZXJ0LUtvY2gtU3RyLiAxLTcKLQkJCQlMb2VobmUgR2VybWFueSAzMjU4NAotCQkJCUdFUk1BTlkKLQotMDAtMTYtNzQgICAoaGV4KQkJRXVyb0NCIChQaGlscy4pLCBJbmMuCi0wMDE2NzQgICAgIChiYXNlIDE2KQkJRXVyb0NCIChQaGlscy4pLCBJbmMuCi0JCQkJU0ZCIE5vLjIKLQkJCQlNYWN0YW4gRWNvbm9taWMgWm9uZSAtIEkKLQkJCQlMYXB1bGFwdSBDaXR5IENlYnUgNjAxNQotCQkJCVBISUxJUFBJTkVTCi0KLTAwLTE2LTc1ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxNjc1ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTYwMCBOIFVTIEh3eSA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNzYgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMTY3NiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCUxvdCA4LCBKbG4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE2LTc3ICAgKGhleCkJCUJpaGwrV2llZGVtYW5uIEdtYkgKLTAwMTY3NyAgICAgKGJhc2UgMTYpCQlCaWhsK1dpZWRlbWFubiBHbWJICi0JCQkJRmxvc3N3b2VydGhzdHIuIDQxCi0JCQkJTWFubmhlaW0gQmFkZW4gV/xydGVtYmVyZyA2ODE5OQotCQkJCUdFUk1BTlkKLQotMDAtMTYtNzggICAoaGV4KQkJU0hFTlpIRU4gQkFPQU4gR0FPS0UgRUxFQ1RST05JQ1MgQ08uLCBMVEQKLTAwMTY3OCAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBCQU9BTiBHQU9LRSBFTEVDVFJPTklDUyBDTy4sIExURAotCQkJCUdBT0tFIElORFVTVFJJQUwgUEFSSywgTk8uOCBUQU5HS0VORyBST0FELCBTSElZQU4gVE9XTgotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgxMDgKLQkJCQlDSElOQQotCi0wMC0xNi03OSAgIChoZXgpCQllT24gQ29tbXVuaWNhdGlvbnMKLTAwMTY3OSAgICAgKGJhc2UgMTYpCQllT24gQ29tbXVuaWNhdGlvbnMKLQkJCQk0MTA1IFJveWFsIERyaXZlLCBTdWl0ZSAxMDAKLQkJCQlLZW5uZXNhdyBHZW9yZ2lhIDMwMTQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi03QSAgIChoZXgpCQlTa3l3b3J0aCBPdmVyc2VhcyBEdmVsb3BtZW50IEx0ZC4KLTAwMTY3QSAgICAgKGJhc2UgMTYpCQlTa3l3b3J0aCBPdmVyc2VhcyBEdmVsb3BtZW50IEx0ZC4KLQkJCQlSb29tIDE1MDUtMDYsV2VzdGxhbmRzIENlbnRyZQotCQkJCTIwIFdlc3RsYW5kcyBSb2FkLCBRdWFycnkgQmF5LAotCQkJCUhPTkcgS09ORwotCi0wMC0xNi03QiAgIChoZXgpCQlIYXZlciZCb2Vja2VyCi0wMDE2N0IgICAgIChiYXNlIDE2KQkJSGF2ZXImQm9lY2tlcgotCQkJCUNhcmwtSGF2ZXItUGxhdHogMwotCQkJCU9lbGRlIE5SVyA1OTMwMgotCQkJCUdFUk1BTlkKLQotMDAtMTYtN0MgICAoaGV4KQkJaVJleCBUZWNobm9sb2dpZXMgQlYKLTAwMTY3QyAgICAgKGJhc2UgMTYpCQlpUmV4IFRlY2hub2xvZ2llcyBCVgotCQkJCUhpZ2hUZWNoIENhbXB1cwotCQkJCUJ1aWxkaW5nIDQ2LCByb29tIHAtMDA1Ci0JCQkJRWluZGhvdmVuIEJyYWJhbnQgNTY1NkFFCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTYtN0QgICAoaGV4KQkJU2t5LUxpbmUgSW5mb3JtYXRpb24gQ28uLCBMdGQuCi0wMDE2N0QgICAgIChiYXNlIDE2KQkJU2t5LUxpbmUgSW5mb3JtYXRpb24gQ28uLCBMdGQuCi0JCQkJOEYuLE5vLjM4LFNpaHl1YW4gUmQuLAotCQkJCVNpbmlodWFuZyBUYWlwZWkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi03RSAgIChoZXgpCQlESUJPU1MuQ08uLExURAotMDAxNjdFICAgICAoYmFzZSAxNikJCURJQk9TUy5DTy4sTFRECi0JCQkJMTI2LTEsIEdvbmdkYW4tZG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC05MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtN0YgICAoaGV4KQkJQmx1ZWJpcmQgU29mdCBJbmMuCi0wMDE2N0YgICAgIChiYXNlIDE2KQkJQmx1ZWJpcmQgU29mdCBJbmMuCi0JCQkJNTYyLTIxIEdhbmduYW0tZ3UsCi0JCQkJU2VvdWwgIDEzNS04OTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtODAgICAoaGV4KQkJQmFsbHkgR2FtaW5nICsgU3lzdGVtcwotMDAxNjgwICAgICAoYmFzZSAxNikJCUJhbGx5IEdhbWluZyArIFN5c3RlbXMKLQkJCQk5NTAgU2FuZGhpbGwgUm9hZAotCQkJCVJlbm8gTlYgODk1MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTgxICAgKGhleCkJCVZlY3RvciBJbmZvcm1hdGlrIEdtYkgKLTAwMTY4MSAgICAgKGJhc2UgMTYpCQlWZWN0b3IgSW5mb3JtYXRpayBHbWJICi0JCQkJSW5nZXJzaGVpbWVyIFN0ci4gMjQKLQkJCQlTdHV0dGdhcnQgQmFkZW4tV3VlcnR0ZW1iZXJnIDcwNDk5Ci0JCQkJR0VSTUFOWQotCi0wMC0xNi04MiAgIChoZXgpCQlQcm8gRGV4LCBJbmMKLTAwMTY4MiAgICAgKGJhc2UgMTYpCQlQcm8gRGV4LCBJbmMKLQkJCQkxODAwIE5XIDE2OXRoIFBsYWNlCi0JCQkJQzEwMAotCQkJCUJlYXZlcnRvbiBPcmVnb24gOTcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTgzICAgKGhleCkJCVdFQklPIEludGVybmF0aW9uYWwgQ28uLC5MdGQuCi0wMDE2ODMgICAgIChiYXNlIDE2KQkJV0VCSU8gSW50ZXJuYXRpb25hbCBDby4sLkx0ZC4KLQkJCQkyMUYuLE5vLjE3MSBTb25nZGUgUmQuLFNpbnlpIERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTA4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtODQgICAoaGV4KQkJRG9uamluIENvLixMdGQuCi0wMDE2ODQgICAgIChiYXNlIDE2KQkJRG9uamluIENvLixMdGQuCi0JCQkJMjFGLENhbmdzb25nIEJ1aWxkaW5nLFRhaXJhbixGdXRpYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMTYtODUgICAoaGV4KQkJRWxpc2EgT3lqCi0wMDE2ODUgICAgIChiYXNlIDE2KQkJRWxpc2EgT3lqCi0JCQkJRWxla3Ryb25paWtrYXRpZSA0Ci0JCQkJOTA1NzAgT3VsdSAKLQkJCQlGSU5MQU5ECi0KLTAwLTE2LTg2ICAgKGhleCkJCUthcmwgU3RvcnogSW1hZ2luZwotMDAxNjg2ICAgICAoYmFzZSAxNikJCUthcmwgU3RvcnogSW1hZ2luZwotCQkJCTE3NSBDcmVtb25hIERyLgotCQkJCUdvbGV0YSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtODcgICAoaGV4KQkJQ2h1YmIgQ1NDLVZlbmRvciBBUAotMDAxNjg3ICAgICAoYmFzZSAxNikJCUNodWJiIENTQy1WZW5kb3IgQVAKLQkJCQlPdHRhd2EgU1ROCi0JCQkJUC5PLiBCT1ggOTgzMgotCQkJCU90dGF3YSAgSzFHIDZXNgotCQkJCUNBTkFEQQotCi0wMC0xNi04OCAgIChoZXgpCQlTZXJ2ZXJFbmdpbmVzIExMQwotMDAxNjg4ICAgICAoYmFzZSAxNikJCVNlcnZlckVuZ2luZXMgTExDCi0JCQkJMjA5IE4uIEZhaXIgT2FrcyBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTg5ICAgKGhleCkJCVBpbGtvciBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAxNjg5ICAgICAoYmFzZSAxNikJCVBpbGtvciBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCTM4MSxXb25jaHVuLURvbmcsWWVvdW5ndG9uZy1HdQotCQkJCVN1d29uIEt5dW5nIEtpLURvIDQ0Mi0zODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtOEEgICAoaGV4KQkJaWQtQ29uZmlybSBJbmMKLTAwMTY4QSAgICAgKGJhc2UgMTYpCQlpZC1Db25maXJtIEluYwotCQkJCTE4MDAgQm91bGRlciBTdAotCQkJCVN1aXRlIDQwMAotCQkJCURlbnZlciBDTyA4MDIxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtOEIgICAoaGV4KQkJUGFyYWxhbiBDb3Jwb3JhdGlvbgotMDAxNjhCICAgICAoYmFzZSAxNikJCVBhcmFsYW4gQ29ycG9yYXRpb24KLQkJCQk0NjU1IFJ1ZmZuZXIgU3QuCi0JCQkJU2FuIERpZWdvIENBIDkyMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi04QyAgIChoZXgpCQlEU0wgUGFydG5lciBBUwotMDAxNjhDICAgICAoYmFzZSAxNikJCURTTCBQYXJ0bmVyIEFTCi0JCQkJSGF2cmV2ZWllbiA0OQotCQkJCU9zbG8gIDA2ODAKLQkJCQlOT1JXQVkKLQotMDAtMTYtOEQgICAoaGV4KQkJS09SV0lOIENPLiwgTHRkLgotMDAxNjhEICAgICAoYmFzZSAxNikJCUtPUldJTiBDTy4sIEx0ZC4KLQkJCQkzcmQgRmxvb3IsIEhhbmEgQmxkZywgMTIzLTcgTm9uaHl1bi1kb25nCi0JCQkJS2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LThFICAgKGhleCkJCVZpbWljcm8gY29ycG9yYXRpb24KLTAwMTY4RSAgICAgKGJhc2UgMTYpCQlWaW1pY3JvIGNvcnBvcmF0aW9uCi0JCQkJMTUvRixTaGluaW5nIFRvd2VyLE5vLjM1LHh1ZXl1YW4KLQkJCQlSb2FkLEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODMKLQkJCQlDSElOQQotCi0wMC0xNi04RiAgIChoZXgpCQlHTiBOZXRjb20gYXMKLTAwMTY4RiAgICAgKGJhc2UgMTYpCQlHTiBOZXRjb20gYXMKLQkJCQlNZXRhbGJ1ZW4gNjYKLQkJCQlQLk8uQm94IDIwMQotCQkJCUJhbGxlcnVwIFNrb3ZsdW5kZSBESyAtIDI3NTAKLQkJCQlERU5NQVJLCi0KLTAwLTE2LTkwICAgKGhleCkJCUotVEVLIElOQ09SUE9SQVRJT04KLTAwMTY5MCAgICAgKGJhc2UgMTYpCQlKLVRFSyBJTkNPUlBPUkFUSU9OCi0JCQkJMkYtMSwgTm8uIDgzLCBTZWMuIDIsIEdvbmdEYW9XdSBSZC4sCi0JCQkJSHNpbmNodSBDaXR5ICAzMDA3MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtOTEgICAoaGV4KQkJTW9zZXItQmFlciBBRwotMDAxNjkxICAgICAoYmFzZSAxNikJCU1vc2VyLUJhZXIgQUcKLQkJCQlTcGl0YWxzdHJhc3NlIDcKLQkJCQlTdW1pc3dhbGQgQkUgMzQ1NAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE2LTkyICAgKGhleCkJCVNjaWVudGlmaWMtQXRsYW50YSwgSW5jLgotMDAxNjkyICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMtQXRsYW50YSwgSW5jLgotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlBVEwgMS4zLjQ3MwotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTkzICAgKGhleCkJCVBvd2VyTGluayBUZWNobm9sb2d5IEluYy4KLTAwMTY5MyAgICAgKGJhc2UgMTYpCQlQb3dlckxpbmsgVGVjaG5vbG9neSBJbmMuCi0JCQkJTjAuIDE4LCBBbGxleSAxLCBMYW5lIDE1MSwgU2VjLiAxLCBKaG9uZ3NpbmcgUmQuLCBXdWd1IFRvd25zaGlwCi0JCQkJVGFpcGVpIEhzaWVuICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTk0ICAgKGhleCkJCVNlbm5oZWlzZXIgQ29tbXVuaWNhdGlvbnMgQS9TCi0wMDE2OTQgICAgIChiYXNlIDE2KQkJU2VubmhlaXNlciBDb21tdW5pY2F0aW9ucyBBL1MKLQkJCQlMYW5nYWdlciA2Ci0JCQkJU29scvhkIFN0cmFuZCBDb3BlbmhhZ2VuIDI2ODAKLQkJCQlERU5NQVJLCi0KLTAwLTE2LTk1ICAgKGhleCkJCUFWQyBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMTY5NSAgICAgKGJhc2UgMTYpCQlBVkMgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJNi9GIEVudGVycHJpc2UgU3F1YXJlIElJSQotCQkJCTM5IFdhbmcgQ2hpdSBSb2FkCi0JCQkJS293bG9vbiBCYXkgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xNi05NiAgIChoZXgpCQlRREkgVGVjaG5vbG9neSAoSC5LLikgTGltaXRlZAotMDAxNjk2ICAgICAoYmFzZSAxNikJCVFESSBUZWNobm9sb2d5IChILksuKSBMaW1pdGVkCi0JCQkJMTYvRiwgU3RhbmRhcmQgQ2hhcnRlcmVkIEJhbmsgQnVpbGRpbmcgNC00QQotCQkJCURlcyBWb2V1eCBSb2FkIENlbnRyYWwKLQkJCQlIb25nIEtvbmcgIAotCQkJCUNISU5BCi0KLTAwLTE2LTk3ICAgKGhleCkJCU5FQyBDb3Jwb3JhdGlvbgotMDAxNjk3ICAgICAoYmFzZSAxNikJCU5FQyBDb3Jwb3JhdGlvbgotCQkJCTctMSwgU2hpYmEgNS1jaG9tZSBNaW5hdG8ta3UsCi0JCQkJVG9reW8gMTA4LTgwMDEKLQkJCQlKQVBBTgotCi0wMC0xNi05OCAgIChoZXgpCQlUJkEgTW9iaWxlIFBob25lcwotMDAxNjk4ICAgICAoYmFzZSAxNikJCVQmQSBNb2JpbGUgUGhvbmVzCi0JCQkJNC9GLCBTb3V0aCBCdWlsZGluZyxOby4yOTY2LCBKaW5rZSBSb2FkCi0JCQkJWmhhbmdqaWFuZyBIaWdoLVRlY2sgUGFyawotCQkJCVB1ZG9uZyBTaGFuZ2hhaSAyMDEyMDMKLQkJCQlDSElOQQotCi0wMC0xNi05OSAgIChoZXgpCQlUb25pYyBEVkIgTWFya2V0aW5nIEx0ZAotMDAxNjk5ICAgICAoYmFzZSAxNikJCVRvbmljIERWQiBNYXJrZXRpbmcgTHRkCi0JCQkJVW5pdCBCLCAxMC9GLCBTdW1taXQgQnVpbGRpbmcsCi0JCQkJMzAgTWFuIFl1ZSBTdHJlZXQsCi0JCQkJSHVuZyBIb20gS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTYtOUEgICAoaGV4KQkJUXVhZHJpY3MgTHRkCi0wMDE2OUEgICAgIChiYXNlIDE2KQkJUXVhZHJpY3MgTHRkCi0JCQkJMSBCcmlkZXdlbGwgU3RyZWV0Ci0JCQkJQnJpc3RvbCAgQlMxIDJBQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE2LTlCICAgKGhleCkJCUFsc3RvbSBUcmFuc3BvcnQKLTAwMTY5QiAgICAgKGJhc2UgMTYpCQlBbHN0b20gVHJhbnNwb3J0Ci0JCQkJMTEsIDEzIGF2ZW51ZSBkZSBCZWwgQWlyCi0JCQkJVmlsbGV1cmJhbm5lIFJob25lIDY5MTAwCi0JCQkJRlJBTkNFCi0KLTAwLTE2LTlDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTY5QyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTlEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTY5RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTlFICAgKGhleCkJCVRWIE9uZSBMdGQKLTAwMTY5RSAgICAgKGJhc2UgMTYpCQlUViBPbmUgTHRkCi0JCQkJVW5pdCBWIENvbnRpbmVudGFsIEFwcHJvYWNoCi0JCQkJV2VzdHdvb2QgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlNYXJnYXRlIEtlbnQgQ1Q5IDRKRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE2LTlGICAgKGhleCkJCVZpbXRyb24gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE2OUYgICAgIChiYXNlIDE2KQkJVmltdHJvbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQk3Ri4sIE5vLjksIEFsbGV5IDIsIExhbmUgMzUKLQkJCQlKaWh1IFJkLgotCQkJCU5laWh1IERpc3RyaWN0IFRhaXBlaSBDaXR5IDExNDkyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1BMCAgIChoZXgpCQlBdXRvLU1hc2tpbgotMDAxNkEwICAgICAoYmFzZSAxNikJCUF1dG8tTWFza2luCi0JCQkJU29waGllIFJhZGljaHMgVmVpIDcKLQkJCQlMSUxMRVNUUk9NIEFrZXJzaHVzIDIwMDMKLQkJCQlOT1JXQVkKLQotMDAtMTYtQTEgICAoaGV4KQkJM0xlYWYgTmV0d29ya3MKLTAwMTZBMSAgICAgKGJhc2UgMTYpCQkzTGVhZiBOZXR3b3JrcwotCQkJCTMyNTUtMSBTY290dCBCbHZkCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUEyICAgKGhleCkJCUNlbnRyYUxpdGUgU3lzdGVtcywgSW5jLgotMDAxNkEyICAgICAoYmFzZSAxNikJCUNlbnRyYUxpdGUgU3lzdGVtcywgSW5jLgotCQkJCTY0MjAgV2FsbCBTdHJlZXQKLQkJCQlNb2JpbGUgQUwgMzY2OTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUEzICAgKGhleCkJCUluZ2V0ZWFtIFRyYW5zbWlzc2lvbiZEaXN0cmlidXRpb24sIFMuQS4KLTAwMTZBMyAgICAgKGJhc2UgMTYpCQlJbmdldGVhbSBUcmFuc21pc3Npb24mRGlzdHJpYnV0aW9uLCBTLkEuCi0JCQkJQy8gVXNhdXN1YWdhLCA3Ci0JCQkJUG9sLiBBcnR1bmR1YWdhCi0JCQkJQmFzYXVyaSBCaXprYWlhIDQ4OTcwCi0JCQkJU1BBSU4KLQotMDAtMTYtQTQgICAoaGV4KQkJRXp1cmlvIEx0ZAotMDAxNkE0ICAgICAoYmFzZSAxNikJCUV6dXJpbyBMdGQKLQkJCQlVbml0IDIKLQkJCQkxMjYgQ29saW5kYWxlIEF2ZW51ZQotCQkJCUxvbmRvbiAgTlc5IDVIRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE2LUE1ICAgKGhleCkJCVRhbmRiZXJnIFN0b3JhZ2UgQVNBCi0wMDE2QTUgICAgIChiYXNlIDE2KQkJVGFuZGJlcmcgU3RvcmFnZSBBU0EKLQkJCQlQb3N0Ym9rcyAxOTEKLQkJCQkxMzI1IEx5c2FrZXIKLQkJCQlOT1JXQVkKLQotMDAtMTYtQTYgICAoaGV4KQkJRG92YWRvIEZaLUxMQwotMDAxNkE2ICAgICAoYmFzZSAxNikJCURvdmFkbyBGWi1MTEMKLQkJCQlBbC1UaHVyYXlhIFRvd2VyIDEsIG9mZmljZSA1MDQKLQkJCQlQLk8uIEJveCA1MDA0MjIKLQkJCQlEdWJhaSAgCi0JCQkJVU5JVEVEIEFSQUIgRU1JUkFURVMKLQotMDAtMTYtQTcgICAoaGV4KQkJQVdFVEEgRyZQCi0wMDE2QTcgICAgIChiYXNlIDE2KQkJQVdFVEEgRyZQCi0JCQkJQnVyZy4gV2lua2VsbGFhbiAzCi0JCQkJTm9vdGRvcnAgIDI2MzEgSEcKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNi1BOCAgIChoZXgpCQlDV1QgQ08uLCBMVEQuCi0wMDE2QTggICAgIChiYXNlIDE2KQkJQ1dUIENPLiwgTFRELgotCQkJCTEwRiBOby4gNzQgU2VjLiAxIENodW5nLUh1YSBSZC4KLQkJCQlUYWlwZWkgIDEwOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtQTkgICAoaGV4KQkJMkVJCi0wMDE2QTkgICAgIChiYXNlIDE2KQkJMkVJCi0JCQkJUnVhIGRvcyBSdWJpcywgNzcgLSBBc3N1bXBjYW8KLQkJCQlBZ3VhcyBkZSBMaW5kb2lhIFNhbyBQYXVsbyAxMzk0MC0wMDAKLQkJCQlCUkFaSUwKLQotMDAtMTYtQUEgICAoaGV4KQkJS2VpIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBJbmMuCi0wMDE2QUEgICAgIChiYXNlIDE2KQkJS2VpIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBJbmMuCi0JCQkJOC1CQU4gQ0hVT1UKLQkJCQlLT0JFIEhZT0dPIDY1MC0wMDI0Ci0JCQkJSkFQQU4KLQotMDAtMTYtQUIgICAoaGV4KQkJUEJJLURhbnNlbnNvciBBL1MKLTAwMTZBQiAgICAgKGJhc2UgMTYpCQlQQkktRGFuc2Vuc29yIEEvUwotCQkJCVJvZW5uZWRldmVqIDE4Ci0JCQkJUmluZ3N0ZWQgIERLLTQxMDAKLQkJCQlERU5NQVJLCi0KLTAwLTE2LUFDICAgKGhleCkJCVRvaG8gVGVjaG5vbG9neSBDb3JwLgotMDAxNkFDICAgICAoYmFzZSAxNikJCVRvaG8gVGVjaG5vbG9neSBDb3JwLgotCQkJCUhJR0FTSEkgNS0xCi0JCQkJT1JJWlVTSElNT01BQ0hJCi0JCQkJSU5BWkFXQS1DSVRZIEFJQ0hJIDQ5Mi04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTYtQUQgICAoaGV4KQkJQlQtTGlua3MgQ29tcGFueSBMaW1pdGVkCi0wMDE2QUQgICAgIChiYXNlIDE2KQkJQlQtTGlua3MgQ29tcGFueSBMaW1pdGVkCi0JCQkJUm0gODAyLCBOYW4gRnVuZyBDZW50cmUsIDI2NC0yOTggQ2FzdGxlIFBlYWsgUmQKLQkJCQlUc3VlbiBXYW4KLQkJCQlIT05HIEtPTkcKLQotMDAtMTYtQUUgICAoaGV4KQkJSU5WRU5URUwKLTAwMTZBRSAgICAgKGJhc2UgMTYpCQlJTlZFTlRFTAotCQkJCTM1IHJ1ZSBUb3VybmVmb3J0Ci0JCQkJUEFSSVMgIDc1MDA1Ci0JCQkJRlJBTkNFCi0KLTAwLTE2LUFGICAgKGhleCkJCVNoZW56aGVuIFVuaW9uIE5ldHdvcmtzIEVxdWlwbWVudCBDby4sTHRkLgotMDAxNkFGICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFVuaW9uIE5ldHdvcmtzIEVxdWlwbWVudCBDby4sTHRkLgotCQkJCVlpaGFpIFNxdWFyZSBlYXN0IGJ1aWxkaW5nIDIzMDcsIENodWFuZ3llIHJvYWQsIE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU0Ci0JCQkJQ0hJTkEKLQotMDAtMTYtQjAgICAoaGV4KQkJVksgQ29ycG9yYXRpb24KLTAwMTZCMCAgICAgKGJhc2UgMTYpCQlWSyBDb3Jwb3JhdGlvbgotCQkJCVZLIEIvRCwgNTQ4LTYsIEFueWFuZyA4ZG9uZywgTWFuYW4tZ3UKLQkJCQlBbnlhbmcgS3lvdW5nZ2kgNDMwLTg5MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtQjEgICAoaGV4KQkJS0JTCi0wMDE2QjEgICAgIChiYXNlIDE2KQkJS0JTCi0JCQkJODggcnVlIFBpZXJyZSBT6W1hcmQKLQkJCQlCUCA1NQotCQkJCU1vaXNzeSBjZWRleCBJbGUgZGUgRnJhbmNlIDc3NTUyCi0JCQkJRlJBTkNFCi0KLTAwLTE2LUIyICAgKGhleCkJCURyaXZlQ2FtIEluYwotMDAxNkIyICAgICAoYmFzZSAxNikJCURyaXZlQ2FtIEluYwotCQkJCTM5NTQgTXVycGh5IENhbnlvbiBSb2FkCi0JCQkJU3VpdGUgRDIwNQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQjMgICAoaGV4KQkJUGhvdG9uaWNicmlkZ2VzIChDaGluYSkgQ28uLCBMdGQuCi0wMDE2QjMgICAgIChiYXNlIDE2KQkJUGhvdG9uaWNicmlkZ2VzIChDaGluYSkgQ28uLCBMdGQuCi0JCQkJTm8uIDkwMCwgWWlzaGFuIHJvYWQsCi0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTAwLTE2LUI0ICAgKGhleCkJCVBSSVZBVEUKLTAwMTZCNCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMTYtQjUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTZCNSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUI2ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMKLTAwMTZCNiAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzCi0JCQkJMTIxIFRoZW9yeQotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQjcgICAoaGV4KQkJU2VvdWwgQ29tbXRlY2gKLTAwMTZCNyAgICAgKGJhc2UgMTYpCQlTZW91bCBDb21tdGVjaAotCQkJCTQ0OC0xMSwgU2VvbmduYWUgM2RvbmcuIEdhbmdkb25nIGd1LAotCQkJCVNlb3VsICAxMzQwMzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtQjggICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLTAwMTZCOCAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNr5W5lIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTAwLTE2LUI5ICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcKLTAwMTZCOSAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZAotCQkJCU1TIDU2NjIKLQkJCQlSb3NldmlsbGUgQ0EgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUJBICAgKGhleCkJCVdFQVRIRVJORVdTIElOQy4KLTAwMTZCQSAgICAgKGJhc2UgMTYpCQlXRUFUSEVSTkVXUyBJTkMuCi0JCQkJTkFLQVNFIDEtMyBNVEcKLQkJCQlDSElCQSAgMjYyLTAwMzIKLQkJCQlKQVBBTgotCi0wMC0xNi1CQiAgIChoZXgpCQlMYXctQ2hhaW4gQ29tcHV0ZXIgVGVjaG5vbG9neSBDbyBMdGQKLTAwMTZCQiAgICAgKGJhc2UgMTYpCQlMYXctQ2hhaW4gQ29tcHV0ZXIgVGVjaG5vbG9neSBDbyBMdGQKLQkJCQk3Ri0yLCAyODYtNCwgaHNpbiB5YSByb2FkLCBjaGllbiBjaGVuIGRpc3RyaWN0Ci0JCQkJS2FvaHNpdW5nICA4MDY3MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtQkMgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTZCQyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTYtQkQgICAoaGV4KQkJQVRJIEluZHVzdHJpYWwgQXV0b21hdGlvbgotMDAxNkJEICAgICAoYmFzZSAxNikJCUFUSSBJbmR1c3RyaWFsIEF1dG9tYXRpb24KLQkJCQkxMDMxIEdvb2R3b3J0aCBEcml2ZQotCQkJCUFwZXggTm9ydGggQ2Fyb2xpbmEgMjc1MzktMzg2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQkUgICAoaGV4KQkJSU5GUkFORVQsIEluYy4KLTAwMTZCRSAgICAgKGJhc2UgMTYpCQlJTkZSQU5FVCwgSW5jLgotCQkJCTh0aCBGbG9vciwgQ293ZWxsIEIvRCwgNjYtMQotCQkJCUJhbnBvLURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAxMzctMDQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LUJGICAgKGhleCkJCVBhbG9ERXggR3JvdXAgT3kKLTAwMTZCRiAgICAgKGJhc2UgMTYpCQlQYWxvREV4IEdyb3VwIE95Ci0JCQkJUC5PLiBCb3ggNjQKLQkJCQlOYWhrZWxhbnRpZSAxNjAKLQkJCQlUdXVzdWxhICAwNDMwMQotCQkJCUZJTkxBTkQKLQotMDAtMTYtQzAgICAoaGV4KQkJU2VtdGVjaCBDb3Jwb3JhdGlvbgotMDAxNkMwICAgICAoYmFzZSAxNikJCVNlbXRlY2ggQ29ycG9yYXRpb24KLQkJCQkyMDAgRmx5bm4gUmQKLQkJCQlDYW1hcmlsbG8gQ2FsaWZvcm5pYSA5MzAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQzEgICAoaGV4KQkJRWxla3NlbiBMdGQKLTAwMTZDMSAgICAgKGJhc2UgMTYpCQlFbGVrc2VuIEx0ZAotCQkJCVBpbmV3b29kIFN0dWRpb3MKLQkJCQlJdmVyIEhlYXRoCi0JCQkJSXZlciBCdWNrcyBTTDAgME5ICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtQzIgICAoaGV4KQkJQXZ0ZWMgU3lzdGVtcyBJbmMKLTAwMTZDMiAgICAgKGJhc2UgMTYpCQlBdnRlYyBTeXN0ZW1zIEluYwotCQkJCTE0NDMyIEFsYmVtYXJsZSBQb2ludCBQbGFjZQotCQkJCUNoYW50aWxseSBWaXJnaW5pYSAyMDE1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQzMgICAoaGV4KQkJQkEgU3lzdGVtcyBJbmMKLTAwMTZDMyAgICAgKGJhc2UgMTYpCQlCQSBTeXN0ZW1zIEluYwotCQkJCTY4OTUgVmlhIERlbCBPcm8KLQkJCQlTYW4gSm9zZSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQzQgICAoaGV4KQkJU2lSRiBUZWNobm9sb2d5LCBJbmMuCi0wMDE2QzQgICAgIChiYXNlIDE2KQkJU2lSRiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjE3IERldmNvbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQzUgICAoaGV4KQkJU2hlbnpoZW4gWGluZyBGZW5nIEluZHVzdHJ5IENvLixMdGQKLTAwMTZDNSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBYaW5nIEZlbmcgSW5kdXN0cnkgQ28uLEx0ZAotCQkJCUZsb29yIDEgLSA0LCBCbG9jayAyNSwgSG9uZ3RpYW4gSmlueXVhbiBJbmR1c3RyaWFsLAotCQkJCUhvbmd0aWFuIFJvYWQgSHVhbmdwdSwgU2hhamluLCBCYW9hbiwKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgODYKLQkJCQlDSElOQQotCi0wMC0xNi1DNiAgIChoZXgpCQlOb3J0aCBBdGxhbnRpYyBJbmR1c3RyaWVzCi0wMDE2QzYgICAgIChiYXNlIDE2KQkJTm9ydGggQXRsYW50aWMgSW5kdXN0cmllcwotCQkJCTE3MCBXaWxidXIgUGxhY2UKLQkJCQlCb2hlbWlhIE5ZIDExNzE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE2QzcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DOCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE2QzggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DOSAgIChoZXgpCQlOQVQgU2VhdHRsZSwgSW5jLgotMDAxNkM5ICAgICAoYmFzZSAxNikJCU5BVCBTZWF0dGxlLCBJbmMuCi0JCQkJMjIxMjUgMTd0aCBBdmUgU0UKLQkJCQlCb3RoZWxsIFdBIDk4MDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DQSAgIChoZXgpCQlOb3J0ZWwKLTAwMTZDQSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNi1DQiAgIChoZXgpCQlBcHBsZSBDb21wdXRlcgotMDAxNkNCICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyCi0JCQkJMSBJbmZpbml0ZSBMb29wIE1TOjM1R1BPCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DQyAgIChoZXgpCQlYY3V0ZSBNb2JpbGUgQ29ycC4KLTAwMTZDQyAgICAgKGJhc2UgMTYpCQlYY3V0ZSBNb2JpbGUgQ29ycC4KLQkJCQkzRi4gTm8uMjUsIEFsbHkxNSwgTGFuZSAxMjAsIFNlYy4xLCBOZWlodSBSZC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtQ0QgICAoaGV4KQkJSElKSSBISUdILVRFQ0ggQ08uLCBMVEQuCi0wMDE2Q0QgICAgIChiYXNlIDE2KQkJSElKSSBISUdILVRFQ0ggQ08uLCBMVEQuCi0JCQkJT2hnYSA4MTMzCi0JCQkJSGlqaQotCQkJCUhheWFtaSBPaXRhIDg3OS0xNTA0Ci0JCQkJSkFQQU4KLQotMDAtMTYtQ0UgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMTZDRSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCTY2LCBDaHVuZyBTaGFuIFJkLiBUdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1DRiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAxNkNGICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNjYsIENodW5nIFNoYW4gUmQuIFR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUQwICAgKGhleCkJCUFUZWNoIGVsZWt0cm9uaWthIGQuby5vLgotMDAxNkQwICAgICAoYmFzZSAxNikJCUFUZWNoIGVsZWt0cm9uaWthIGQuby5vLgotCQkJCUJhYyBwcmkgTWF0ZXJpamkgMzAKLQkJCQlNYXRlcmlqYSBTSSA2MjQyCi0JCQkJU0xPVkVOSUEKLQotMDAtMTYtRDEgICAoaGV4KQkJWkFUIGEucy4KLTAwMTZEMSAgICAgKGJhc2UgMTYpCQlaQVQgYS5zLgotCQkJCUsgUG9kbGVzaSA1NDEKLQkJCQlQcmlicmFtIFZJICAyNjE4MAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTE2LUQyICAgKGhleCkJCUNhc3BpYW4KLTAwMTZEMiAgICAgKGJhc2UgMTYpCQlDYXNwaWFuCi0JCQkJMTcwIEJheXRlY2ggRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRDMgICAoaGV4KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotMDAxNkQzICAgICAoYmFzZSAxNikJCVdpc3Ryb24gQ29ycG9yYXRpb24KLQkJCQkyMUYsIDg4LCBTZWMuMSwgSHNpbiBUYWkgV3UgUmQuLCBIc2ljaGloLAotCQkJCVRhaXBlaSBIc2llbiAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1ENCAgIChoZXgpCQlDb21wYWwgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMTZENCAgICAgKGJhc2UgMTYpCQlDb21wYWwgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk3dGgsIEZMLCBOby4gMzE5LCBTZWMuIDQsIFBhLVRlaCByZC4KLQkJCQlUYWlwZWkgIDg4NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtRDUgICAoaGV4KQkJU3luY2NvbSBDby4sIEx0ZAotMDAxNkQ1ICAgICAoYmFzZSAxNikJCVN5bmNjb20gQ28uLCBMdGQKLQkJCQkjMzA2IE15dW5naSBlLXNwYWNlICAyMTgtMjAKLQkJCQlBbnlhbmc3LWRvbmcgTWFuYW4tZ3UKLQkJCQlBbnlhbmctc2kgS3l1bmdraS1kbyA0MzAtODE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LUQ2ICAgKGhleCkJCVREQSBUZWNoIFB0eSBMdGQKLTAwMTZENiAgICAgKGJhc2UgMTYpCQlUREEgVGVjaCBQdHkgTHRkCi0JCQkJMjEwIC8gNTQgQ3VycmllIFN0cmVldAotCQkJCUFkZWxhaWRlIFNvdXRoIEF1c3RyYWxpYSA1MDAwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTE2LUQ3ICAgKGhleCkJCVN1bndheXMgQUcKLTAwMTZENyAgICAgKGJhc2UgMTYpCQlTdW53YXlzIEFHCi0JCQkJTWFjYWlyZXN0ci4zLTUKLQkJCQlLb25zdGFueiBCYWRlbiBX/HJ0dGVtYmVyZyA3ODQ2NwotCQkJCUdFUk1BTlkKLQotMDAtMTYtRDggICAoaGV4KQkJU2VuZWEgQUIKLTAwMTZEOCAgICAgKGJhc2UgMTYpCQlTZW5lYSBBQgotCQkJCUb2cmV0YWdzYWxsZW4gMTIKLQkJCQnFa2Vyc2JlcmdhICAxODQ4NAotCQkJCVNXRURFTgotCi0wMC0xNi1EOSAgIChoZXgpCQlOSU5HQk8gQklSRCBDTy4sTFRELgotMDAxNkQ5ICAgICAoYmFzZSAxNikJCU5JTkdCTyBCSVJEIENPLixMVEQuCi0JCQkJTm8uOTk5IERhY2hlbmcgRWFzdCBSb2FkCi0JCQkJRmVuZ2h1YSBaaGVqaWFuZyAzMTU1MDAKLQkJCQlDSElOQQotCi0wMC0xNi1EQSAgIChoZXgpCQlGdXRyb25pYyBUZWNobm9sb2d5IENvLiBMdGQuCi0wMDE2REEgICAgIChiYXNlIDE2KQkJRnV0cm9uaWMgVGVjaG5vbG9neSBDby4gTHRkLgotCQkJCVJvb20gMTAxNkEsIDEwL0YuLCBQcm9maXQgSW5kLiBCbGRnLiwKLQkJCQkxLTE1IEt3YWkgRnVuZyBDcmVzY2VudCwKLQkJCQlLd2FpIENodW5nICAwMDAwMAotCQkJCUhPTkcgS09ORwotCi0wMC0xNi1EQiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxNkRCICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pLUNpdHkgR3llb25nLUJ1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LURDICAgKGhleCkJCUFSQ0hPUwotMDAxNkRDICAgICAoYmFzZSAxNikJCUFSQ0hPUwotCQkJCTEyIHJ1ZSBBTVBFUkUKLQkJCQlJR05ZIEVTU09OTkVTIDkxNDMwCi0JCQkJRlJBTkNFCi0KLTAwLTE2LUREICAgKGhleCkJCUdpZ2FiZWFtIENvcnBvcmF0aW9uCi0wMDE2REQgICAgIChiYXNlIDE2KQkJR2lnYWJlYW0gQ29ycG9yYXRpb24KLQkJCQk0MDcgU3ByaW5ncGFyayBQbGFjZQotCQkJCVN0ZSA5MDAKLQkJCQlIZXJuZG9uIFZBIDIwMTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1ERSAgIChoZXgpCQlGQVNUIEluYwotMDAxNkRFICAgICAoYmFzZSAxNikJCUZBU1QgSW5jCi0JCQkJOTA1IEhvbmV5c3BvdCBSZAotCQkJCVN0cmF0Zm9yZCBDVCAwNjYxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtREYgICAoaGV4KQkJTHVuZGlub3ZhIEFCCi0wMDE2REYgICAgIChiYXNlIDE2KQkJTHVuZGlub3ZhIEFCCi0JCQkJRGFsYnl2YWdlbiAxCi0JCQkJTHVuZCBTa2FhbmUgU0UtMjI0IDYwCi0JCQkJU1dFREVOCi0KLTAwLTE2LUUwICAgKGhleCkJCTNDb20gTHRkCi0wMDE2RTAgICAgIChiYXNlIDE2KQkJM0NvbSBMdGQKLQkJCQlQZW9wbGVidWlsZGluZyAyCi0JCQkJUGVvcGxlYnVpbGRpbmcgRXN0YXRlLCBNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE2LUUxICAgKGhleCkJCVNpbGljb25TdG9yLCBJbmMuCi0wMDE2RTEgICAgIChiYXNlIDE2KQkJU2lsaWNvblN0b3IsIEluYy4KLQkJCQk0ODQzMCBMYWtldmlldyBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUUyICAgKGhleCkJCUFtZXJpY2FuIEZpYmVydGVrLCBJbmMuCi0wMDE2RTIgICAgIChiYXNlIDE2KQkJQW1lcmljYW4gRmliZXJ0ZWssIEluYy4KLQkJCQkxMjAgQmVsbW9udCBEcml2ZQotCQkJCVNvbWVyc2V0IE5ldyBKZXJzZXkgMDg4NzMtMTIwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRTMgICAoaGV4KQkJQVNLRVkgQ09NUFVURVIgQ09SUC4KLTAwMTZFMyAgICAgKGJhc2UgMTYpCQlBU0tFWSBDT01QVVRFUiBDT1JQLgotCQkJCTEwRiwgTk8uMTE5LCBDSElFTktBTkcgUkQuLAotCQkJCUNIVU5HLUhPLCBUQUlQRUkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtRTQgICAoaGV4KQkJVkFOR1VBUkQgU0VDVVJJVFkgRU5HSU5FRVJJTkcgQ09SUC4KLTAwMTZFNCAgICAgKGJhc2UgMTYpCQlWQU5HVUFSRCBTRUNVUklUWSBFTkdJTkVFUklORyBDT1JQLgotCQkJCTMsIExBTkUgMzIsIEtTTyBDSElORyBSRC4KLQkJCQlZQU5HTUVJIFRBT1lVQU4gMzI2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1FNSAgIChoZXgpCQlGT1JETEVZIERFVkVMT1BNRU5UIExJTUlURUQKLTAwMTZFNSAgICAgKGJhc2UgMTYpCQlGT1JETEVZIERFVkVMT1BNRU5UIExJTUlURUQKLQkJCQlST09NIDcwNiwgN1RIIEZMT09SLCBZVSBTVU5HIEJPT04gQlVJTERJTkcsIDEwNy0xMTEgREVTIFZPRVVYIFJPQUQsIENFTlRSQUwsCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE2LUU2ICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0wMDE2RTYgICAgIChiYXNlIDE2KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlQaW4tSmVuIENpdHksIFRhb3l1YW4KLQkJCQkzMjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUU3ICAgKGhleCkJCUR5bmFtaXggUHJvbW90aW9ucyBMaW1pdGVkCi0wMDE2RTcgICAgIChiYXNlIDE2KQkJRHluYW1peCBQcm9tb3Rpb25zIExpbWl0ZWQKLQkJCQk3ODgtNzkwLCBGaW5jaGxleSBSb2FkCi0JCQkJTG9uZG9uICBOVzExIDdUSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE2LUU4ICAgKGhleCkJCVNpZ21hIERlc2lnbnMsIEluYy4KLTAwMTZFOCAgICAgKGJhc2UgMTYpCQlTaWdtYSBEZXNpZ25zLCBJbmMuCi0JCQkJMTc3OCBNY0NhcnRoeSBCbHZkLgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1FOSAgIChoZXgpCQlUaWJhIE1lZGljYWwgSW5jCi0wMDE2RTkgICAgIChiYXNlIDE2KQkJVGliYSBNZWRpY2FsIEluYwotCQkJCTUwMjQgTGFrZXdvb2QgRHJpdmUKLQkJCQlQbGFubyBUWCA3NTA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRUEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMTZFQSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIFBhcmsgMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrIEt1bGltIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTYtRUIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMTZFQiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyayBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE2LUVDICAgKGhleCkJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMTZFQyAgICAgKGJhc2UgMTYpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJTm8uIDIyLCBBbGxleSAzOCwgTGFuZSA5MSwgU2VjLiAxLCBOZWkgSHUgUm9hZCwKLQkJCQlUYWlwZWkgIDExNDQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1FRCAgIChoZXgpCQlEaWdpdGFsIFNhZmV0eSBUZWNobm9sb2dpZXMsIEluYwotMDAxNkVEICAgICAoYmFzZSAxNikJCURpZ2l0YWwgU2FmZXR5IFRlY2hub2xvZ2llcywgSW5jCi0JCQkJNTExIERhdmlzIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJTW9ycmlzdmlsbGUgTkMgMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUVFICAgKGhleCkJCVJveWFsRGlnaXRhbCBJbmMuCi0wMDE2RUUgICAgIChiYXNlIDE2KQkJUm95YWxEaWdpdGFsIEluYy4KLQkJCQk4Ri4sIE5vLjMwOCwgU2VjLjEsIE5laWh1IFJkLgotCQkJCU5laWh1IERpc3RyaWN0LAotCQkJCVRhaXBlaSBDaXR5ICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUVGICAgKGhleCkJCUtva28gRml0bmVzcywgSW5jLgotMDAxNkVGICAgICAoYmFzZSAxNikJCUtva28gRml0bmVzcywgSW5jLgotCQkJCTEzNiBMb25nd2F0ZXIgRHJpdmUKLQkJCQlOb3J3ZWxsIE1BIDAyMDYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1GMCAgIChoZXgpCQlEZWxsCi0wMDE2RjAgICAgIChiYXNlIDE2KQkJRGVsbAotCQkJCTkwOSBIZXJtb3NhIEN0Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1GMSAgIChoZXgpCQlPbW5pU2Vuc2UsIExMQwotMDAxNkYxICAgICAoYmFzZSAxNikJCU9tbmlTZW5zZSwgTExDCi0JCQkJMiBSb2JpbiBEcml2ZQotCQkJCUxhZHlzIElzbGFuZCBTQyAyOTkwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRjIgICAoaGV4KQkJRG1vYmlsZSBTeXN0ZW0gQ28uLCBMdGQuCi0wMDE2RjIgICAgIChiYXNlIDE2KQkJRG1vYmlsZSBTeXN0ZW0gQ28uLCBMdGQuCi0JCQkJMkYsIE5vLjEzLTIwLCBTZWMuNiwgTWluY3l1YW4gRS5SZCwKLQkJCQlOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1GMyAgIChoZXgpCQlDQVNUIEluZm9ybWF0aW9uIENvLiwgTHRkCi0wMDE2RjMgICAgIChiYXNlIDE2KQkJQ0FTVCBJbmZvcm1hdGlvbiBDby4sIEx0ZAotCQkJCTVGIE1TQSBCbGRnLiA4OTEtNDMgRGFjY2hpLURvbmcsCi0JCQkJZ2FuZ25hbS1HdQotCQkJCVNFT1VMICAxMzUtMjgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LUY0ICAgKGhleCkJCUVpZGljb20gQ28uLCBMdGQuCi0wMDE2RjQgICAgIChiYXNlIDE2KQkJRWlkaWNvbSBDby4sIEx0ZC4KLQkJCQlQb2x5Y2hlbSBCL0QgNHRoIEZsb29yLCA5MDAtMQotCQkJCUt3YW55YW5nLWRvbmcsIERvbmdhbi1rdQotCQkJCUFueWFuZy1zaSBLeWVvbmdnaS1kbyA0MzEtMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LUY1ICAgKGhleCkJCURhbGlhbiBHb2xkZW4gSHVhbHUgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQKLTAwMTZGNSAgICAgKGJhc2UgMTYpCQlEYWxpYW4gR29sZGVuIEh1YWx1IERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJTm8uMSBIdWEgUm9hZCxRaXhpYW5saW5nCi0JCQkJRGFsaWFuIExpYW9OaW5nIDExNjAyMwotCQkJCUNISU5BCi0KLTAwLTE2LUY2ICAgKGhleCkJCVZpZGVvIFByb2R1Y3RzIEdyb3VwCi0wMDE2RjYgICAgIChiYXNlIDE2KQkJVmlkZW8gUHJvZHVjdHMgR3JvdXAKLQkJCQkxNjAwIEVtZXJzb24gQXZlbnVlCi0JCQkJT3huYXJkIENhbGlmb3JuaWEgOTMwMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUY3ICAgKGhleCkJCUwtMyBDb21tdW5pY2F0aW9ucywgRWxlY3Ryb2R5bmFtaWNzLCBJbmMuCi0wMDE2RjcgICAgIChiYXNlIDE2KQkJTC0zIENvbW11bmljYXRpb25zLCBFbGVjdHJvZHluYW1pY3MsIEluYy4KLQkJCQkxMjAwIEhpY2tzIFJkLgotCQkJCVJvbGxpbmcgTWVhZG93cyBJTCA2MDAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRjggICAoaGV4KQkJQVZJUVRFQ0ggVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwMTZGOCAgICAgKGJhc2UgMTYpCQlBVklRVEVDSCBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTZGIDEyLCBMaS1oc2luIFJvYWQsIFNCSVAKLQkJCQlIc2luLWNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1GOSAgIChoZXgpCQlDRVRSVEEgUE9ULCBkLm8uby4sIEtyYW5qCi0wMDE2RjkgICAgIChiYXNlIDE2KQkJQ0VUUlRBIFBPVCwgZC5vLm8uLCBLcmFuagotCQkJCVBsYW5pbmEgMwotCQkJCUtyYW5qIFNJIDQwMDAKLQkJCQlTTE9WRU5JQQotCi0wMC0xNi1GQSAgIChoZXgpCQlFQ0kgVGVsZWNvbSBMdGQuCi0wMDE2RkEgICAgIChiYXNlIDE2KQkJRUNJIFRlbGVjb20gTHRkLgotCQkJCTMwIEhhc2l2aW0gU3QuCi0JCQkJUGV0YWggVGlrdmEgIDQ5MTMzCi0JCQkJSVNSQUVMCi0KLTAwLTE2LUZCICAgKGhleCkJCVNIRU5aSEVOIE1UQyBDTy4sTFRELgotMDAxNkZCICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIE1UQyBDTy4sTFRELgotCQkJCTUvRiBCZW5ZdWFuIEJsZGcsNjAxNSBTaGVuTmFuIFJvYWQKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMTYtRkMgICAoaGV4KQkJVE9IS0VOIENPLixMVEQuCi0wMDE2RkMgICAgIChiYXNlIDE2KQkJVE9IS0VOIENPLixMVEQuCi0JCQkJMi0xNi0yMCBUYW1hZ2F3YQotCQkJCUNob2Z1IFRva3lvIDE4Mi0wMDI1Ci0JCQkJSkFQQU4KLQotMDAtMTYtRkQgICAoaGV4KQkJSmF0eSBFbGVjdHJvbmljcwotMDAxNkZEICAgICAoYmFzZSAxNikJCUphdHkgRWxlY3Ryb25pY3MKLQkJCQlKYXR5IEJsZGcgMTBGLCAxNjU5LTUgQm9uZ2NodW4xMS1Eb25nCi0JCQkJS3dhbmFrLUt1Ci0JCQkJU2VvdWwgIDE1MS04MzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtRkUgICAoaGV4KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotMDAxNkZFICAgICAoYmFzZSAxNikJCUFscHMgRWxlY3RyaWMgQ28uLCBMdGQKLQkJCQkxLTItMSwgT2tpbm91Y2hpLAotCQkJCVNvbWEtY2l0eSwgRnVrdXNoaW1hLXByZWYuLCA5NzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTE2LUZGICAgKGhleCkJCVdhbWluIE9wdG9jb21tIE1mZyBDb3JwCi0wMDE2RkYgICAgIChiYXNlIDE2KQkJV2FtaW4gT3B0b2NvbW0gTWZnIENvcnAKLQkJCQlOby4gMjM5IFFpYW9oZSBSb2FkCi0JCQkJWmhvbmdoZSBDaXR5IFRhaXBlaSBDb3VudHkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy0wMCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxNzAwICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIFVTIEh3eSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMDEgICAoaGV4KQkJS0RFLCBJbmMuCi0wMDE3MDEgICAgIChiYXNlIDE2KQkJS0RFLCBJbmMuCi0JCQkJS0RFIFRPV04sIDQyLTcsIE1hbmd3b2wtZG9uZwotCQkJCUhhbmFtIEd5ZW9uZ2dpLWRvIDQ2NS0xNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctMDIgICAoaGV4KQkJT3N1bmcgTWlkaWNvbSBDby4sIEx0ZAotMDAxNzAyICAgICAoYmFzZSAxNikJCU9zdW5nIE1pZGljb20gQ28uLCBMdGQKLQkJCQkyMzEtMTgsIERvcmltMi1kb25nLAotCQkJCVNlb3VsLCBZb3VuZ2RldW5ncG8tZ3UgMTUwLTgzMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy0wMyAgIChoZXgpCQlNT1NEQU4gSW50ZXJuYXRpb24gQ28uLEx0ZAotMDAxNzAzICAgICAoYmFzZSAxNikJCU1PU0RBTiBJbnRlcm5hdGlvbiBDby4sTHRkCi0JCQkJTm8uNzQgQ2hlZ2d1bmcgU2hpbnRzdWVuLFNoYW5odWEgSmVuLAotCQkJCVRhaW5hbiAgNzQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy0wNCAgIChoZXgpCQlTaGluY28gRWxlY3Ryb25pY3MgR3JvdXAgQ28uLEx0ZAotMDAxNzA0ICAgICAoYmFzZSAxNikJCVNoaW5jbyBFbGVjdHJvbmljcyBHcm91cCBDby4sTHRkCi0JCQkJTm8uNSBXYWlodWFuIFJvYWQKLQkJCQlDaGFuZ3pob3UgSmlhbmdzdSAyMTMwMjIKLQkJCQlDSElOQQotCi0wMC0xNy0wNSAgIChoZXgpCQlNZXRob2RlIEVsZWN0cm9uaWNzCi0wMDE3MDUgICAgIChiYXNlIDE2KQkJTWV0aG9kZSBFbGVjdHJvbmljcwotCQkJCTc0MDEgVy4gV2lsc29uCi0JCQkJQ2hpY2FnbyBJTCA2MDcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMDYgICAoaGV4KQkJVGVjaGZhaXRoIFdpcmVsZXNzIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBMaW1pdGVkLgotMDAxNzA2ICAgICAoYmFzZSAxNikJCVRlY2hmYWl0aCBXaXJlbGVzcyBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgTGltaXRlZC4KLQkJCQkyL0YgTTggV2VzdCBOby4xIEppdSBYaWFuIFFpYW8gRG9uZyBSb2FkLAotCQkJCUNoYW8gWWFuZyBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDAxNgotCQkJCUNISU5BCi0KLTAwLTE3LTA3ICAgKGhleCkJCUluR3JpZCwgSW5jCi0wMDE3MDcgICAgIChiYXNlIDE2KQkJSW5HcmlkLCBJbmMKLQkJCQk5MjAgQ2Fzc2F0dCBSZAotCQkJCVN1aXRlIDIyMAotCQkJCUJlcnd5biBQYSAxOTMxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMDggICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDE3MDggICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0wOSAgIChoZXgpCQlFeGFsdCBDb21tdW5pY2F0aW9ucwotMDAxNzA5ICAgICAoYmFzZSAxNikJCUV4YWx0IENvbW11bmljYXRpb25zCi0JCQkJNTgwIERpdmlzaW9uIFN0cmVldAotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0wQSAgIChoZXgpCQlJTkVXIERJR0lUQUwgQ09NUEFOWQotMDAxNzBBICAgICAoYmFzZSAxNikJCUlORVcgRElHSVRBTCBDT01QQU5ZCi0JCQkJU3VwcGx5IEJ1cmVhdSAzdGggZmxvb3IgS1QmRyAyMDMtMSwKLQkJCQlQeW9uZyBjaG9uLWRvbmcsIERhZWRlb2cKLQkJCQlEYWVqZW9uICAzMDYtNzEyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LTBCICAgKGhleCkJCUNvbnRlbGEsIEluYy4KLTAwMTcwQiAgICAgKGJhc2UgMTYpCQlDb250ZWxhLCBJbmMuCi0JCQkJNi04IFNvb25hZS1kb25nLCBCdW5kYW5nLWd1LAotCQkJCTV0aCBGbG9vciwgS29yZWEgRmlyc3QgQmxkZy4sCi0JCQkJU3VuZ25hbSBLeXVuZ2dpLWRvIDQ2My04MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctMEMgICAoaGV4KQkJVHdpZyBDb20gTHRkLiAKLTAwMTcwQyAgICAgKGJhc2UgMTYpCQlUd2lnIENvbSBMdGQuIAotCQkJCU1lcmluaWl0eW5rYXR1IDExCi0JCQkJU2FsbyAyNDAwCi0JCQkJRklOTEFORAotCi0wMC0xNy0wRCAgIChoZXgpCQlEdXN0IE5ldHdvcmtzIEluYy4KLTAwMTcwRCAgICAgKGJhc2UgMTYpCQlEdXN0IE5ldHdvcmtzIEluYy4KLQkJCQkzMDY5NSBIdW50d29vZCBBdmUuCi0JCQkJSGF5d2FyZCBDYS4gOTQ1NDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTBFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTcwRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTBGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTcwRiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTEwICAgKGhleCkJCUNhc2EgU3lzdGVtcyBJbmMuCi0wMDE3MTAgICAgIChiYXNlIDE2KQkJQ2FzYSBTeXN0ZW1zIEluYy4KLQkJCQkxMCwgTmV3IEVuZ2xhbmQgQnVzaW5lc3MgQ2VudGVyIERyLgotCQkJCVN1aXRlIDExMAotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTExICAgKGhleCkJCUdFIEhlYWx0aGNhcmUgQmlvLVNjaWVuY2VzIEFCCi0wMDE3MTEgICAgIChiYXNlIDE2KQkJR0UgSGVhbHRoY2FyZSBCaW8tU2NpZW5jZXMgQUIKLQkJCQlCavZya2dhdGFuIDMwCi0JCQkJVXBwc2FsYSBTRSA3NTE4NAotCQkJCVNXRURFTgotCi0wMC0xNy0xMiAgIChoZXgpCQlJU0NPIEludGVybmF0aW9uYWwKLTAwMTcxMiAgICAgKGJhc2UgMTYpCQlJU0NPIEludGVybmF0aW9uYWwKLQkJCQkxMDAxIENhbWJyaWRnZSBEcml2ZQotCQkJCUVsayBHcm92ZSBWaWxsYWdlIElMIDYwMDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0xMyAgIChoZXgpCQlUaWdlciBOZXRDb20KLTAwMTcxMyAgICAgKGJhc2UgMTYpCQlUaWdlciBOZXRDb20KLQkJCQlKLTE1IE11ZGFuIEN1biwgWWlqaW5nIEh1YXl1YW4sCi0JCQkJQWlndW8gUm9hZCwgTHVvaHUgRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMwotCQkJCUNISU5BCi0KLTAwLTE3LTE0ICAgKGhleCkJCUJSIENvbnRyb2xzIE5lZGVybGFuZCBidgotMDAxNzE0ICAgICAoYmFzZSAxNikJCUJSIENvbnRyb2xzIE5lZGVybGFuZCBidgotCQkJCUJyYW5kZXJ3ZWcgMQotCQkJCVp3b2xsZSBPdmVyaWpzc2VsIDgwNDIgUEQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNy0xNSAgIChoZXgpCQlRc3RpawotMDAxNzE1ICAgICAoYmFzZSAxNikJCVFzdGlrCi0JCQkJQ2FydGVsIEJ1c2luZXNzIEVzdGF0ZQotCQkJCUVkaW5idXJnaCBXYXkKLQkJCQlIYXJsb3cgRXNzZXggQ00yMCAyVFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy0xNiAgIChoZXgpCQlRbm8gVGVjaG5vbG9neSBJbmMuCi0wMDE3MTYgICAgIChiYXNlIDE2KQkJUW5vIFRlY2hub2xvZ3kgSW5jLgotCQkJCTZGLTIsIE5vLjI1LCBQdWRpbmcgUm9hZAotCQkJCUhzaW5jaHUgVGFpd2FuIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctMTcgICAoaGV4KQkJTGVpY2EgR2Vvc3lzdGVtcyBBRwotMDAxNzE3ICAgICAoYmFzZSAxNikJCUxlaWNhIEdlb3N5c3RlbXMgQUcKLQkJCQlIZWlucmljaCBXaWxkIFN0cmFzc2UKLQkJCQlIZWVyYnJ1Z2cgU3QuIEdhbGxlbiBDSC05NDM1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTctMTggICAoaGV4KQkJVmFuc2NvIEVsZWN0cm9uaWNzIE95Ci0wMDE3MTggICAgIChiYXNlIDE2KQkJVmFuc2NvIEVsZWN0cm9uaWNzIE95Ci0JCQkJVGlpbGVubHlvamFua2F0dSA1Ci0JCQkJRk9SU1NBICAzMDEwMQotCQkJCUZJTkxBTkQKLQotMDAtMTctMTkgICAoaGV4KQkJQXVkaW9Db2RlcyBVU0EsIEluYwotMDAxNzE5ICAgICAoYmFzZSAxNikJCUF1ZGlvQ29kZXMgVVNBLCBJbmMKLQkJCQkyNyBXb3JsZCdzIEZhaXIgRHJpdmUKLQkJCQlTb21lcnNldCBOSiAwODg3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMUEgICAoaGV4KQkJV2luZWdhcmQgQ29tcGFueQotMDAxNzFBICAgICAoYmFzZSAxNikJCVdpbmVnYXJkIENvbXBhbnkKLQkJCQkzMDAwIEtpcmt3b29kIFN0cmVldAotCQkJCUJ1cmxpbmd0b24gSUEgNTI2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTFCICAgKGhleCkJCUlubm92YXRpb24gTGFiIENvcnAuCi0wMDE3MUIgICAgIChiYXNlIDE2KQkJSW5ub3ZhdGlvbiBMYWIgQ29ycC4KLQkJCQkxMkZMLiwgTm8uIDI4NSwgU2VjLiAyLCBUaURpbmcgQmx2ZC4sCi0JCQkJVGFpcGVpICAxMTQ5MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctMUMgICAoaGV4KQkJTlQgTWljcm9TeXN0ZW1zLCBJbmMuCi0wMDE3MUMgICAgIChiYXNlIDE2KQkJTlQgTWljcm9TeXN0ZW1zLCBJbmMuCi0JCQkJMS01LTMtMkYgVGFtYWdhd2FkYWkKLQkJCQlTZXRhZ2F5YSBUb2t5byAxNTgtMDA5NgotCQkJCUpBUEFOCi0KLTAwLTE3LTFEICAgKGhleCkJCURJR0lUCi0wMDE3MUQgICAgIChiYXNlIDE2KQkJRElHSVQKLQkJCQlWaWEgUGFzdGV1ciAsIDEvMwotCQkJCVMuUGlldHJvIE1vc2V6em8gTk9WQVJBIDI4MDYwCi0JCQkJSVRBTFkKLQotMDAtMTctMUUgICAoaGV4KQkJVGhlbyBCZW5uaW5nIEdtYkggJiBDby4gS0cKLTAwMTcxRSAgICAgKGJhc2UgMTYpCQlUaGVvIEJlbm5pbmcgR21iSCAmIENvLiBLRwotCQkJCU11ZW5zdGVyc3RyYd9lIDEzNS0xMzcKLQkJCQlCb2Nob2x0IE5SVyA0NjM5NwotCQkJCUdFUk1BTlkKLQotMDAtMTctMUYgICAoaGV4KQkJSU1WIENvcnBvcmF0aW9uCi0wMDE3MUYgICAgIChiYXNlIDE2KQkJSU1WIENvcnBvcmF0aW9uCi0JCQkJMi02LTEwIFRha2VqaW1hCi0JCQkJTmlzaGl5b2RvZ2F3YS1rdQotCQkJCU9zYWthICA1NTUtMDAxMQotCQkJCUpBUEFOCi0KLTAwLTE3LTIwICAgKGhleCkJCUltYWdlIFNlbnNpbmcgU3lzdGVtcywgSW5jLgotMDAxNzIwICAgICAoYmFzZSAxNikJCUltYWdlIFNlbnNpbmcgU3lzdGVtcywgSW5jLgotCQkJCTE2MDAgVW5pdmVyc2l0eSBBdmUuIFcuCi0JCQkJU3VpdGUgNTAwCi0JCQkJU3QuIFBhdWwgTU4gNTUxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTIxICAgKGhleCkJCUZJVFJFIFMucC5BLgotMDAxNzIxICAgICAoYmFzZSAxNikJCUZJVFJFIFMucC5BLgotCQkJCVZpYSBWYWxzb2xkYSwgMTUKLQkJCQlNSUxBTiBNSUxBTk8gMjAxNDIKLQkJCQlJVEFMWQotCi0wMC0xNy0yMiAgIChoZXgpCQlIYW5hemVkZXIgRWxlY3Ryb25pYyBHbWJICi0wMDE3MjIgICAgIChiYXNlIDE2KQkJSGFuYXplZGVyIEVsZWN0cm9uaWMgR21iSAotCQkJCUouTS4gRGltbWVsc3RyIDEwCi0JCQkJUmllZCBpLiBJLiBPYmVy9nN0ZXJyZWljaCA0OTEwCi0JCQkJQVVTVFJJQQotCi0wMC0xNy0yMyAgIChoZXgpCQlTdW1taXQgRGF0YSBDb21tdW5pY2F0aW9ucwotMDAxNzIzICAgICAoYmFzZSAxNikJCVN1bW1pdCBEYXRhIENvbW11bmljYXRpb25zCi0JCQkJNTI2IFNvdXRoIE1haW4gU3RyZWV0Ci0JCQkJU3VpdGUgODA1Ci0JCQkJQWtyb24gT2hpbyA0NDMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMjQgICAoaGV4KQkJU3R1ZGVyIFByb2Zlc3Npb25hbCBBdWRpbyBHbWJICi0wMDE3MjQgICAgIChiYXNlIDE2KQkJU3R1ZGVyIFByb2Zlc3Npb25hbCBBdWRpbyBHbWJICi0JCQkJQWx0aGFyZHN0cmFzc2UgMzAKLQkJCQlSZWdlbnNkb3JmIFr8cmljaCBDSC04MTA1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTctMjUgICAoaGV4KQkJTGlxdWlkIENvbXB1dGluZwotMDAxNzI1ICAgICAoYmFzZSAxNikJCUxpcXVpZCBDb21wdXRpbmcKLQkJCQkzNDAgVGVycnkgRm94IERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDNBMgotCQkJCUNBTkFEQQotCi0wMC0xNy0yNiAgIChoZXgpCQltMmMgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEx0ZC4KLTAwMTcyNiAgICAgKGJhc2UgMTYpCQltMmMgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEx0ZC4KLQkJCQkyNDAzLCAyNC9GLCBOYW55YW5nIFBsYXphCi0JCQkJNTcgSHVuZyBUbyBSb2FkCi0JCQkJS3d1bnRvbmcgSG9uZyBLb25nIDk5OSA5OTkKLQkJCQlDSElOQQotCi0wMC0xNy0yNyAgIChoZXgpCQlUaGVybW8gUmFtc2V5IEl0YWxpYSBzLnIubC4KLTAwMTcyNyAgICAgKGJhc2UgMTYpCQlUaGVybW8gUmFtc2V5IEl0YWxpYSBzLnIubC4KLQkJCQlTdHJhZGEgUml2b2x0YW5hIGttIDYvNwotCQkJCVJvZGFubyBNaWxhbm8gMjAwOTAKLQkJCQlJVEFMWQotCi0wMC0xNy0yOCAgIChoZXgpCQlTZWxleCBDb21tdW5pY2F0aW9ucwotMDAxNzI4ICAgICAoYmFzZSAxNikJCVNlbGV4IENvbW11bmljYXRpb25zCi0JCQkJVmlhIFBpZXJhZ29zdGluaSA4MAotCQkJCUdlbm92YSAgMTYxNTEKLQkJCQlJVEFMWQotCi0wMC0xNy0yOSAgIChoZXgpCQlVYmljb2QgQ28uTFRECi0wMDE3MjkgICAgIChiYXNlIDE2KQkJVWJpY29kIENvLkxURAotCQkJCTdGIENodW4tZ2luIEJsZGcsIDUzLTUgV29uaHlvLXJvCi0JCQkJWW9uZ3Nhbi1ndQotCQkJCVNlb3VsICAxNDAtNzE5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LTJBICAgKGhleCkJCVByb3dhcmUgVGVjaG5vbG9neSBDb3JwLgotMDAxNzJBICAgICAoYmFzZSAxNikJCVByb3dhcmUgVGVjaG5vbG9neSBDb3JwLgotCQkJCTZGbC4sIE5vLiA0LCBBbGxleSAxLCBMYW5lIDIzNSwgUGFvQ2hhbyBSZC4KLQkJCQlIc2luIFRpZW4gQ2l0eSBUYWlwZWkgSHNpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy0yQiAgIChoZXgpCQlHbG9iYWwgVGVjaG5vbG9naWVzIEluYy4KLTAwMTcyQiAgICAgKGJhc2UgMTYpCQlHbG9iYWwgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk0L0YgS2ljb3ggQmxkZy4sMTg4LTUsR3Vyby1Eb25nLEd1cm8tZ3UsCi0JCQkJU2VvdWwgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy0yQyAgIChoZXgpCQlUQUVKSU4gSU5GT1RFQ0gKLTAwMTcyQyAgICAgKGJhc2UgMTYpCQlUQUVKSU4gSU5GT1RFQ0gKLQkJCQk2RiBXb29saW0gZS1CaXogQ2VudGVyLCAxNzAtNQotCQkJCUd1cm8tRG9uZywgR3Vyby1HdSwKLQkJCQlTZW91bCAgMTUyLTc2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy0yRCAgIChoZXgpCQlBeGNlbiBQaG90b25pY3MgQ29ycG9yYXRpb24KLTAwMTcyRCAgICAgKGJhc2UgMTYpCQlBeGNlbiBQaG90b25pY3MgQ29ycG9yYXRpb24KLQkJCQk2RiwgTm8uIDExOSwgQmF1anVuZyBSZC4sCi0JCQkJU2hpbmRpYW4gQ2l0eSwgVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTJFICAgKGhleCkJCUZYQyBJbmMuCi0wMDE3MkUgICAgIChiYXNlIDE2KQkJRlhDIEluYy4KLQkJCQkxMC0xNiA2RiwgTmlob25iYXNoaSBUb21pemF3YS1DaG91LCBDaHVvLWt1Ci0JCQkJVG9reW8gIDEwMy0wMDA2Ci0JCQkJSkFQQU4KLQotMDAtMTctMkYgICAoaGV4KQkJTmV1TGlvbiBJbmNvcnBvcmF0ZWQKLTAwMTcyRiAgICAgKGJhc2UgMTYpCQlOZXVMaW9uIEluY29ycG9yYXRlZAotCQkJCTE2MDAgT2xkIENvdW50cnkgUm9hZAotCQkJCVBsYWludmlldyBOWSAxMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMzAgICAoaGV4KQkJQXV0b21hdGlvbiBFbGVjdHJvbmljcwotMDAxNzMwICAgICAoYmFzZSAxNikJCUF1dG9tYXRpb24gRWxlY3Ryb25pY3MKLQkJCQkxMTEgQmlnIEhvcm4gUmQuCi0JCQkJQ2FzcGVyIFd5IDgyNjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zMSAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTAwMTczMSAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQlOby41IFNoaW5nIFllaCBTdHJlZXQsS3dlaSBTaGFuIEhzaWFuZyxUYW95dWFuCi0JCQkJVGFpcGVpICAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTMyICAgKGhleCkJCVNjaWVuY2UtVGVjaG5pY2FsIENlbnRlciAiUklTU0EiCi0wMDE3MzIgICAgIChiYXNlIDE2KQkJU2NpZW5jZS1UZWNobmljYWwgQ2VudGVyICJSSVNTQSIKLQkJCQlzdC4gQWJyYW10c2V2c2thamEsIGguOQotCQkJCU1vc2NvdyAgMTI4NTcyCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE3LTMzICAgKGhleCkJCVNGUgotMDAxNzMzICAgICAoYmFzZSAxNikJCVNGUgotCQkJCTQyIFF1YWkgZHUgcG9pbnQgZHUgam91cgotCQkJCUJvdWxvZ25lIEJpbGxhbmNvdXJ0IEhhdXRzIGRlIFNlaW5lIDkyNjU5Ci0JCQkJRlJBTkNFCi0KLTAwLTE3LTM0ICAgKGhleCkJCUFEQyBUZWxlY29tbXVuaWNhdGlvbnMKLTAwMTczNCAgICAgKGJhc2UgMTYpCQlBREMgVGVsZWNvbW11bmljYXRpb25zCi0JCQkJNTQxIEUgVHJpbWJsZSBSb2FkICAgIAotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzQtMTIyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMzUgICAoaGV4KQkJUFJJVkFURQotMDAxNzM1ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0xNy0zNiAgIChoZXgpCQlpaVRyb24gSW5jLgotMDAxNzM2ICAgICAoYmFzZSAxNikJCWlpVHJvbiBJbmMuCi0JCQkJODggTWVyY3kgU3QuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMzcgICAoaGV4KQkJSW5kdXN0cmllIERpYWwgRmFjZSBTLnAuQS4KLTAwMTczNyAgICAgKGJhc2UgMTYpCQlJbmR1c3RyaWUgRGlhbCBGYWNlIFMucC5BLgotCQkJCXZpYSBDYW56bywgNAotCQkJCVBlc2NoaWVyYSBCb3Jyb21lbyBNaWxhbm8gMjAwNjgKLQkJCQlJVEFMWQotCi0wMC0xNy0zOCAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCi0wMDE3MzggICAgIChiYXNlIDE2KQkJSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwotCQkJCTEgQXpyaWVsaSBDZW50ZXIKLQkJCQlUZWwgQXZpdiAgNjcwMjEKLQkJCQlJU1JBRUwKLQotMDAtMTctMzkgICAoaGV4KQkJQnJpZ2h0IEhlYWRwaG9uZSBFbGVjdHJvbmljcyBDb21wYW55Ci0wMDE3MzkgICAgIChiYXNlIDE2KQkJQnJpZ2h0IEhlYWRwaG9uZSBFbGVjdHJvbmljcyBDb21wYW55Ci0JCQkJOEYsIDEwOSwgTGkgRGUgU3RyZWV0Ci0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgQ291bnR5IDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctM0EgICAoaGV4KQkJUmVhY2ggU3lzdGVtcyBJbmMuCi0wMDE3M0EgICAgIChiYXNlIDE2KQkJUmVhY2ggU3lzdGVtcyBJbmMuCi0JCQkJMTMzMCBCcm9hZHdheQotCQkJCVN1aXRlIDEyMDEKLQkJCQlPYWtsYW5kIENBIDk0NjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDE3M0IgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zQyAgIChoZXgpCQlFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucwotMDAxNzNDICAgICAoYmFzZSAxNikJCUV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zCi0JCQkJMzIyNSBEZW1pbmcgV2F5Ci0JCQkJU3VpdGUgMTIwCi0JCQkJTWlkZGxldG9uIFdJIDUzNTYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zRCAgIChoZXgpCQlOZW9sb2d5Ci0wMDE3M0QgICAgIChiYXNlIDE2KQkJTmVvbG9neQotCQkJCTEzMDAwIEdyZWdnIFN0cmVldCBTdWl0ZSBBCi0JCQkJUG93YXkgQ0EgOTIwNjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTNFICAgKGhleCkJCUxldWNvdHJvbkVxdWlwYW1lbnRvcyBMdGRhLgotMDAxNzNFICAgICAoYmFzZSAxNikJCUxldWNvdHJvbkVxdWlwYW1lbnRvcyBMdGRhLgotCQkJCVJ1YSBKb3JnZSBEaW9uaXNpbyBCYXJib3NhLCAzMTIKLQkJCQlTYW50YSBSaXRhIGRvIFNhcHVjYWkgTWluYXMgR2VyYWlzIDM3LjU0MC0wMDAKLQkJCQlCUkFaSUwKLQotMDAtMTctM0YgICAoaGV4KQkJQmVsa2luIENvcnBvcmF0aW9uCi0wMDE3M0YgICAgIChiYXNlIDE2KQkJQmVsa2luIENvcnBvcmF0aW9uCi0JCQkJNTAxIFcuIFdhbG51dCBTdHJlZXQKLQkJCQlDb21wdG9uIENBIDkwMjIwLTUyMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTQwICAgKGhleCkJCUJsdWJlcmkgR2FtaW5nIFRlY2hub2xvZ2llcyBJbmMKLTAwMTc0MCAgICAgKGJhc2UgMTYpCQlCbHViZXJpIEdhbWluZyBUZWNobm9sb2dpZXMgSW5jCi0JCQkJMjEyNSwgcnVlIExldGVuZHJlIFN1aXRlIDQyMAotCQkJCURydW1tb25kdmlsbGUgUXVlYmVjIEoyQyA3RzEKLQkJCQlDQU5BREEKLQotMDAtMTctNDEgICAoaGV4KQkJREVGSURFVgotMDAxNzQxICAgICAoYmFzZSAxNikJCURFRklERVYKLQkJCQkyNyBBdmVudWUgZGUgVmVyZHVuCi0JCQkJVmFudmVzICA5MjE3MAotCQkJCUZSQU5DRQotCi0wMC0xNy00MiAgIChoZXgpCQlGVUpJVFNVIExJTUlURUQKLTAwMTc0MiAgICAgKGJhc2UgMTYpCQlGVUpJVFNVIExJTUlURUQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiw0MDMKLQkJCQlLb3N1Z2ktY2hvIDEtY2hvbWUsTmFrYWhhcmEta3UKLQkJCQlLYXdhc2FraSBLYW5hZ2F3YSAyMTEtODU4OAotCQkJCUpBUEFOCi0KLTAwLTE3LTQzICAgKGhleCkJCURlY2sgU3JsCi0wMDE3NDMgICAgIChiYXNlIDE2KQkJRGVjayBTcmwKLQkJCQlWaWEgRmFiaW8gRmlsemkgMgotCQkJCU1pbGFuICAyMDEyNAotCQkJCUlUQUxZCi0KLTAwLTE3LTQ0ICAgKGhleCkJCUFyYW5lbyBMdGQuCi0wMDE3NDQgICAgIChiYXNlIDE2KQkJQXJhbmVvIEx0ZC4KLQkJCQkxMDMgTWVkaW5hdCBIYXllaHVkaW0KLQkJCQlIZXJ6bGl5YSAgNDY3MzMKLQkJCQlJU1JBRUwKLQotMDAtMTctNDUgICAoaGV4KQkJSU5OT1RaIENPLiwgTHRkCi0wMDE3NDUgICAgIChiYXNlIDE2KQkJSU5OT1RaIENPLiwgTHRkCi0JCQkJMTRGLCBQcmltZSBDZW50ZXIgNTQ2LTQgR3V1aS1Eb25nIEt3YW5nZ2luLUd1Ci0JCQkJU2VvdWwgU2VvdWwgMTQzLTIwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy00NiAgIChoZXgpCQlGcmVlZG9tOSBJbmMuCi0wMDE3NDYgICAgIChiYXNlIDE2KQkJRnJlZWRvbTkgSW5jLgotCQkJCTQxNDBCIFNMQURFVklFVyBDUkUuLAotCQkJCVVOSVQgNCwKLQkJCQlNSVNTSVNTQVVHQSwgT250YXJpbyBMNUw2QTEKLQkJCQlDQU5BREEKLQotMDAtMTctNDcgICAoaGV4KQkJVHJpbWJsZQotMDAxNzQ3ICAgICAoYmFzZSAxNikJCVRyaW1ibGUKLQkJCQkzNDUgU1cgQXZlcnkgQXZlCi0JCQkJQ29ydmFsbGlzIE9SIDk3MzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy00OCAgIChoZXgpCQlOZW9rb3JvcyBCcmFzaWwgTHRkYQotMDAxNzQ4ICAgICAoYmFzZSAxNikJCU5lb2tvcm9zIEJyYXNpbCBMdGRhCi0JCQkJUnVhIDg2LCBudW1lcm8gNTAxLCBTZXRvciBTdWwKLQkJCQlHb2lhbmlhIEdvaWFzIDc0MDgzLTMzMAotCQkJCUJSQVpJTAotCi0wMC0xNy00OSAgIChoZXgpCQlIWVVOREFFIFlPTkctTy1TQSBDTy4sTFRECi0wMDE3NDkgICAgIChiYXNlIDE2KQkJSFlVTkRBRSBZT05HLU8tU0EgQ08uLExURAotCQkJCTQ0OC0xMCwgSHl1Y2tqYWUgQi9EIFNlb25nbmFlLCBLYW5nZG9uZy1ndQotCQkJCVNlb3VsICAxMzQtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LTRBICAgKGhleCkJCVNPQ09NRUMKLTAwMTc0QSAgICAgKGJhc2UgMTYpCQlTT0NPTUVDCi0JCQkJcnVlIGRlIFdlc3Rob3VzZQotCQkJCUJFTkZFTEQgQ0VERVggIDY3MjM1Ci0JCQkJRlJBTkNFCi0KLTAwLTE3LTRCICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE3NEIgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTE3LTRDICAgKGhleCkJCU1pbGxpcG9yZQotMDAxNzRDICAgICAoYmFzZSAxNikJCU1pbGxpcG9yZQotCQkJCTEsIHJ1ZSBKYWNxdWVzIE1vbm9kCi0JCQkJUm9uZC1wb2ludCBkZXMgU2FuZ2xpZXJzCi0JCQkJR3V5YW5jb3VydCAgNzgyODAKLQkJCQlGUkFOQ0UKLQotMDAtMTctNEQgICAoaGV4KQkJRFlOQU1JQyBORVRXT1JLIEZBQ1RPUlksIElOQy4KLTAwMTc0RCAgICAgKGJhc2UgMTYpCQlEWU5BTUlDIE5FVFdPUksgRkFDVE9SWSwgSU5DLgotCQkJCTI2MjUwIEVERU4gTEFORElORyBSRC4KLQkJCQlIQVlXQVJEIENBIDk0NTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy00RSAgIChoZXgpCQlQYXJhbWEtdGVjaCBDby4sTHRkLgotMDAxNzRFICAgICAoYmFzZSAxNikJCVBhcmFtYS10ZWNoIENvLixMdGQuCi0JCQkJMi0xOS04LCBTaGFyeW8sIEhpZ2FzaGkta3UKLQkJCQlGdWt1b2thICA4MTItMDA2OAotCQkJCUpBUEFOCi0KLTAwLTE3LTRGICAgKGhleCkJCWlDYXRjaCBJbmMuCi0wMDE3NEYgICAgIChiYXNlIDE2KQkJaUNhdGNoIEluYy4KLQkJCQkxMEYtMiwgTm8uIDEwOSwgU2VjLiA2LCBNaW5jeXVhbiBFLiBSZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctNTAgICAoaGV4KQkJR1NJIEdyb3VwLCBNaWNyb0UgU3lzdGVtcwotMDAxNzUwICAgICAoYmFzZSAxNikJCUdTSSBHcm91cCwgTWljcm9FIFN5c3RlbXMKLQkJCQk4IEVyaWUgRHJpdmUKLQkJCQlOYXRpY2sgTUEgMDE3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTUxICAgKGhleCkJCU9ubGluZSBDb3Jwb3JhdGlvbgotMDAxNzUxICAgICAoYmFzZSAxNikJCU9ubGluZSBDb3Jwb3JhdGlvbgotCQkJCTIyRi0zLCBOby4gMzk4LCBIdWFuIFBlaSBSb2FkLAotCQkJCUNodW5nIExpIFRhb3l1YW4gMzIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy01MiAgIChoZXgpCQlEQUdTLCBJbmMKLTAwMTc1MiAgICAgKGJhc2UgMTYpCQlEQUdTLCBJbmMKLQkJCQlDLTUxMCwgV29vbGltIExpb24ncyBWYWxsZXksIDM3MS0yOCwgR2FzYW4gRG9uZywgR2V1bWNoZW9uIEt1Ci0JCQkJU2VvdWwgIDE1My03ODYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctNTMgICAoaGV4KQkJbkZvcmUgVGVjaG5vbG9neSBJbmMuCi0wMDE3NTMgICAgIChiYXNlIDE2KQkJbkZvcmUgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTBGLCA0MSBEb25nIFhpbmcgUmQsCi0JCQkJVGFpcGVpIFRhaXBlaSAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTU0ICAgKGhleCkJCUFya2lubyBIaVRPUCBDb3Jwb3JhdGlvbiBMaW1pdGVkCi0wMDE3NTQgICAgIChiYXNlIDE2KQkJQXJraW5vIEhpVE9QIENvcnBvcmF0aW9uIExpbWl0ZWQKLQkJCQkzRi4sIE5vLjgsIFNpbmdodWEgUmQuCi0JCQkJS3dlaSBTaGFuIEluZC4gUGFyawotCQkJCVRhb3l1YW4gQ2l0eSBUYW95dWFuIENvdW50eSAgMzMwNjgsCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy01NSAgIChoZXgpCQlHRSBTZWN1cml0eQotMDAxNzU1ICAgICAoYmFzZSAxNikJCUdFIFNlY3VyaXR5Ci0JCQkJMTIzNDUgU1cgTGV2ZXRvbiBEcml2ZQotCQkJCVR1YWxhdGluIE9SIDk3MDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy01NiAgIChoZXgpCQlWaW5jaSBMYWJzIE95Ci0wMDE3NTYgICAgIChiYXNlIDE2KQkJVmluY2kgTGFicyBPeQotCQkJCUZpbmxheXNvbmlua3VqYSAyMSBBCi0JCQkJVGFtcGVyZSBM5G5zaS1TdW9taSAzMzIxMAotCQkJCUZJTkxBTkQKLQotMDAtMTctNTcgICAoaGV4KQkJUklYIFRFQ0hOT0xPR1kgTElNSVRFRAotMDAxNzU3ICAgICAoYmFzZSAxNikJCVJJWCBURUNITk9MT0dZIExJTUlURUQKLQkJCQkxNyBEQUkgV0FORyBTVFJFRVQKLQkJCQlUQUkgUE8gSU5EVVNUUklBTCBFU1RBVEUKLQkJCQlUQUkgUE8gTkVXIFRFUlJJVE9SSUVTIAotCQkJCUhPTkcgS09ORwotCi0wMC0xNy01OCAgIChoZXgpCQlUaHJ1VmlzaW9uIEx0ZAotMDAxNzU4ICAgICAoYmFzZSAxNikJCVRocnVWaXNpb24gTHRkCi0JCQkJQ2VudHJhbCAxMjcsIE5vLjE4Ci0JCQkJTWlsdG9uIFBhcmsKLQkJCQlBYmluZ2RvbiBPeGZvcmRzaGlyZSBPWDE0IDRTQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE3LTU5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTc1OSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTVBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTc1QSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTVCICAgKGhleCkJCUFDUyBTb2x1dGlvbnMgU3dpdHplcmxhbmQgTHRkLgotMDAxNzVCICAgICAoYmFzZSAxNikJCUFDUyBTb2x1dGlvbnMgU3dpdHplcmxhbmQgTHRkLgotCQkJCUZyYW5rZW5zdHJhc3NlIDcwCi0JCQkJQmVybi0gQnVlbXBsaXogIDMwMTgKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNy01QyAgIChoZXgpCQlTSEFSUCBDT1JQT1JBVElPTgotMDAxNzVDICAgICAoYmFzZSAxNikJCVNIQVJQIENPUlBPUkFUSU9OCi0JCQkJMjItMjIsIE5BR0FJS0UtQ0hPLAotCQkJCUFCRU5PLUtVCi0JCQkJT1NBS0EgIDU0NS04NTIyCi0JCQkJSkFQQU4KLQotMDAtMTctNUQgICAoaGV4KQkJRG9uZ3NlbyBzeXN0ZW0uCi0wMDE3NUQgICAgIChiYXNlIDE2KQkJRG9uZ3NlbyBzeXN0ZW0uCi0JCQkJOTc0LTIxIE1hbnN1LWRvbmcgTmFtZG9uZy1ndQotCQkJCUluY2hlb24gSW4tQ2hlb24gNDA1LTg2NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy01RSAgIChoZXgpCQlaZWQtMwotMDAxNzVFICAgICAoYmFzZSAxNikJCVplZC0zCi0JCQkJNTAxIFZhbGxleSBXYXkKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctNUYgICAoaGV4KQkJWEVOT0xJTksgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDE3NUYgICAgIChiYXNlIDE2KQkJWEVOT0xJTksgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJMm5kIEZsLiwgSnVuZ3lvdSBCL0QgNzk3LTIyCi0JCQkJWWVva3NhbS1kb25nIEdhbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTkzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy02MCAgIChoZXgpCQlOYWl0byBEZW5zZWkgTWFjaGlkYSBNRkcuQ08uLExURAotMDAxNzYwICAgICAoYmFzZSAxNikJCU5haXRvIERlbnNlaSBNYWNoaWRhIE1GRy5DTy4sTFRECi0JCQkJMi0xNy0yOCBGdWNoaW5vYmUKLQkJCQlTYWdhbWloYXJhIEthbmFnYXdhIDIyOS0wMDA2Ci0JCQkJSkFQQU4KLQotMDAtMTctNjEgICAoaGV4KQkJWktTb2Z0d2FyZSBJbmMuCi0wMDE3NjEgICAgIChiYXNlIDE2KQkJWktTb2Z0d2FyZSBJbmMuCi0JCQkJWGlud2VpemFpLCBCYW50aWFuLCBMb25nZ2FuZyBkaXN0cmljdCxTaGVuemhlbiBDaGluYSA1MTgxMjkKLQkJCQlDSElOQQotCi0wMC0xNy02MiAgIChoZXgpCQlTb2xhciBUZWNobm9sb2d5LCBJbmMuCi0wMDE3NjIgICAgIChiYXNlIDE2KQkJU29sYXIgVGVjaG5vbG9neSwgSW5jLgotCQkJCTc2MjAgQ2V0cm9uaWEgUm9hZAotCQkJCUFsbGVudG93biBQQSAxODEwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctNjMgICAoaGV4KQkJRXNzZW50aWEgUy5wLkEuCi0wMDE3NjMgICAgIChiYXNlIDE2KQkJRXNzZW50aWEgUy5wLkEuCi0JCQkJVmlhIEcuQi4gVmljbywgMjkKLQkJCQlDZWxsYSAoUkUpIFJlZ2dpbyBFbWlsaWEgNDIwNDAKLQkJCQlJVEFMWQotCi0wMC0xNy02NCAgIChoZXgpCQlBVE1lZGlhIEdtYkgKLTAwMTc2NCAgICAgKGJhc2UgMTYpCQlBVE1lZGlhIEdtYkgKLQkJCQlTdHVobHNhdHplbmhhdXN3ZWcgNjkKLQkJCQlTYWFyYnJ1ZWNrZW4gU2FhcmxhbmQgNjYxMjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE3LTY1ICAgKGhleCkJCU5vcnRlbAotMDAxNzY1ICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNy02NiAgIChoZXgpCQlBY2NlbnNlIFRlY2hub2xvZ3ksIEluYy4KLTAwMTc2NiAgICAgKGJhc2UgMTYpCQlBY2NlbnNlIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkzNSBUYW5zdW1hY2hpCi0JCQkJU2hpbmp5dWt1LWt1IFRva3lvIDE2MjA4MzMKLQkJCQlKQVBBTgotCi0wMC0xNy02NyAgIChoZXgpCQlFYXJmb3JjZSBBUwotMDAxNzY3ICAgICAoYmFzZSAxNikJCUVhcmZvcmNlIEFTCi0JCQkJUC5PLkJveCA0Ci0JCQkJQnJ5bmUgIDQzNDkKLQkJCQlOT1JXQVkKLQotMDAtMTctNjggICAoaGV4KQkJWmlud2F2ZSBMdGQKLTAwMTc2OCAgICAgKGJhc2UgMTYpCQlaaW53YXZlIEx0ZAotCQkJCVppbndhdmUgTHRkLCBIYXJzdG9uIE1pbGwKLQkJCQlIYXJzdG9uCi0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCMiA1R0cKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy02OSAgIChoZXgpCQlDeW1waG9uaXggQ29ycAotMDAxNzY5ICAgICAoYmFzZSAxNikJCUN5bXBob25peCBDb3JwCi0JCQkJODg3MSBTLiBTYW5keSBQYXJrd2F5LCBTdWl0ZSAxNTAKLQkJCQlTYW5keSBVVCA4NDA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctNkEgICAoaGV4KQkJQXZhZ28gVGVjaG5vbG9naWVzCi0wMDE3NkEgICAgIChiYXNlIDE2KQkJQXZhZ28gVGVjaG5vbG9naWVzCi0JCQkJMzUwIFdlc3QgVHJpbWJsZSBSZAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy02QiAgIChoZXgpCQlLaXlvbiwgSW5jLgotMDAxNzZCICAgICAoYmFzZSAxNikJCUtpeW9uLCBJbmMuCi0JCQkJOTM4MSBKdWRpY2lhbCBEcml2ZQotCQkJCVN1aXRlIDE2MAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctNkMgICAoaGV4KQkJUGl2b3QzLCBJbmMuCi0wMDE3NkMgICAgIChiYXNlIDE2KQkJUGl2b3QzLCBJbmMuCi0JCQkJNjYwNSBDeXByZXNzd29vZCBEcml2ZSwgU3RlIDM1MAotCQkJCVNwcmluZyBUWCA3NzM3OS03NzQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy02RCAgIChoZXgpCQlDT1JFIENPUlBPUkFUSU9OCi0wMDE3NkQgICAgIChiYXNlIDE2KQkJQ09SRSBDT1JQT1JBVElPTgotCQkJCTEtMjItMywgU2FuZ2VuamF5YSwKLQkJCQlTZXRhZ2F5YS1rdSBUb2t5by10byAxNTQtODU1MgotCQkJCUpBUEFOCi0KLTAwLTE3LTZFICAgKGhleCkJCURVQ0FUSSBTSVNURU1JCi0wMDE3NkUgICAgIChiYXNlIDE2KQkJRFVDQVRJIFNJU1RFTUkKLQkJCQlWSUEgTUFSQ08gRU1JTElPIExFUElETywgMTgyCi0JCQkJQk9MT0dOQSAgNDAxMzIKLQkJCQlJVEFMWQotCi0wMC0xNy02RiAgIChoZXgpCQlQQVggQ29tcHV0ZXIgVGVjaG5vbG9neShTaGVuemhlbikgTHRkLgotMDAxNzZGICAgICAoYmFzZSAxNikJCVBBWCBDb21wdXRlciBUZWNobm9sb2d5KFNoZW56aGVuKSBMdGQuCi0JCQkJNC9GLCBOby4zIEJ1aWxkaW5nLCBTb2Z0d2FyZSBQYXJrLCBTZWNvbmQgQ2VudHJhbCBTY2llbmNlLVRlY2ggUm9hZCwgSGlnaC1UZWNoCi0JCQkJaW5kdXN0cmlhbCBQYXJrCi0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE3LTcwICAgKGhleCkJCUFydGkgSW5kdXN0cmlhbCBFbGVjdHJvbmljcyBMdGQuCi0wMDE3NzAgICAgIChiYXNlIDE2KQkJQXJ0aSBJbmR1c3RyaWFsIEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQlHZXItU2FuIFNpdGVzaSwgNjU3LiBTb2thawotCQkJCU5vOiA4MCwgRXJnYXppCi0JCQkJQW5rYXJhIFRSIDA2MzcwCi0JCQkJVFVSS0VZCi0KLTAwLTE3LTcxICAgKGhleCkJCUFQRCBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMTc3MSAgICAgKGJhc2UgMTYpCQlBUEQgQ29tbXVuaWNhdGlvbnMgTHRkCi0JCQkJTmV3bGFuZHMgQ2VudHJlCi0JCQkJSW5nbGVtaXJlIExhbmUKLQkJCQlIVUxMIEVhc3QgWW9ya3NoaXJlIEhVNiA3VFEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy03MiAgIChoZXgpCQlBU1RSTyBTdHJvYmVsIEtvbW11bmlrYXRpb25zc3lzdGVtZSBHbWJICi0wMDE3NzIgICAgIChiYXNlIDE2KQkJQVNUUk8gU3Ryb2JlbCBLb21tdW5pa2F0aW9uc3N5c3RlbWUgR21iSAotCQkJCU9sZWZhbnQgMS0zCi0JCQkJQmVyZ2lzY2ggR2xhZGJhY2ggTlJXIDUxNDI3Ci0JCQkJR0VSTUFOWQotCi0wMC0xNy03MyAgIChoZXgpCQlMYWtldHVuZSBUZWNobm9sb2dpZXMgQ28uIEx0ZAotMDAxNzczICAgICAoYmFzZSAxNikJCUxha2V0dW5lIFRlY2hub2xvZ2llcyBDby4gTHRkCi0JCQkJTm8uIDM4IFppamluZ2h1YSBSZC4gV2VzdGxha2UgRGlzdHJpY3QKLQkJCQlHdWRhbmcgSW5kdXN0cmlhbCBab25lIEJ1aWxkaW5nIDExLCA1RgotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMwotCQkJCUNISU5BCi0KLTAwLTE3LTc0ICAgKGhleCkJCUVsZXN0YSBHbWJICi0wMDE3NzQgICAgIChiYXNlIDE2KQkJRWxlc3RhIEdtYkgKLQkJCQlHb3R0bGllYiBEYWltbGVyIFN0cmFzc2UgMQotCQkJCUtvbnN0YW56ICA3ODQ2NwotCQkJCUdFUk1BTlkKLQotMDAtMTctNzUgICAoaGV4KQkJVFRFIEdlcm1hbnkgR21iSAotMDAxNzc1ICAgICAoYmFzZSAxNikJCVRURSBHZXJtYW55IEdtYkgKLQkJCQlIZXJtYW5uLVNjaHdlci1TdHIuIDMKLQkJCQlWaWxsaW5nZW4tU2Nod2VubmluZ2VuIEJhZGVuLVf8cnR0ZW1iZXJnIDc4MDQ4Ci0JCQkJR0VSTUFOWQotCi0wMC0xNy03NiAgIChoZXgpCQlNZXNvIFNjYWxlIERpYWdub3N0aWNzLCBMTEMKLTAwMTc3NiAgICAgKGJhc2UgMTYpCQlNZXNvIFNjYWxlIERpYWdub3N0aWNzLCBMTEMKLQkJCQk5MjM4IEdhaXRoZXIgUmQuCi0JCQkJR2FpdGhlcnNidXJnIE1EIDIwODc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy03NyAgIChoZXgpCQlPYnNpZGlhbiBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotMDAxNzc3ICAgICAoYmFzZSAxNikJCU9ic2lkaWFuIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0JCQkJRWRtb250b24gUmVzZWFyY2ggUGFyawotCQkJCVN1aXRlIDEwNiAgIDk2NTAtMjAgQXZlCi0JCQkJRWRtb250b24gQWxiZXJ0YSBUNk4xRzEKLQkJCQlDQU5BREEKLQotMDAtMTctNzggICAoaGV4KQkJQ2VudHJhbCBNdXNpYyBDby4KLTAwMTc3OCAgICAgKGJhc2UgMTYpCQlDZW50cmFsIE11c2ljIENvLgotCQkJCTA3MTEtMDcxMiBUb3dlciBELCBTT0hPIE5ldyBUb3duCi0JCQkJTm8uIDg4IEppYW5ndW8gUm9hZCwgQ2hhb3lhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwMjIKLQkJCQlDSElOQQotCi0wMC0xNy03OSAgIChoZXgpCQlRdWlja1RlbAotMDAxNzc5ICAgICAoYmFzZSAxNikJCVF1aWNrVGVsCi0JCQkJQ29ybmlzaGUgRWwtTmlsZSwgTWFhc2FyYQotCQkJCUNhaXJvICAxMTc0MwotCQkJCUVHWVBUCi0KLTAwLTE3LTdBICAgKGhleCkJCUFTU0EgQUJMT1kgQUIKLTAwMTc3QSAgICAgKGJhc2UgMTYpCQlBU1NBIEFCTE9ZIEFCCi0JCQkJVGhlcmVzIFN2ZW5zc29ucyBnYXRhIDE1Ci0JCQkJNDE3NTUgR290ZWJvcmcKLQkJCQlHb3RlYm9yZyAgNDE3NTUKLQkJCQlTV0VERU4KLQotMDAtMTctN0IgICAoaGV4KQkJQXphbGVhIE5ldHdvcmtzIGluYwotMDAxNzdCICAgICAoYmFzZSAxNikJCUF6YWxlYSBOZXR3b3JrcyBpbmMKLQkJCQk2NzMgUyBNaWxwaXRhcyBCbHZkCi0JCQkJU3VpdGUgMTA1Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTdDICAgKGhleCkJCVNtYXJ0bGluayBOZXR3b3JrIFN5c3RlbXMgTGltaXRlZAotMDAxNzdDICAgICAoYmFzZSAxNikJCVNtYXJ0bGluayBOZXR3b3JrIFN5c3RlbXMgTGltaXRlZAotCQkJCUwtNywgVmVybmEgRWxlY3Ryb25pYyBjaXR5Ci0JCQkJVmVybmEKLQkJCQlOYWdvYSBHb2EgNDAzIDcyMgotCQkJCUlORElBCi0KLTAwLTE3LTdEICAgKGhleCkJCUlEVCBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTAwMTc3RCAgICAgKGJhc2UgMTYpCQlJRFQgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0JCQkJQmxvY2sgQywgOS9GLCBLYWlzZXIgRXN0YXRlLCBQaGFzZSBJCi0JCQkJNDEgTWFuIFl1ZSBTdHJlZXQsIEh1bmdob20sIEtvd2xvb24KLQkJCQlIT05HIEtPTkcKLQotMDAtMTctN0UgICAoaGV4KQkJTWVzaGNvbSBUZWNobm9sb2dpZXMgSW5jLgotMDAxNzdFICAgICAoYmFzZSAxNikJCU1lc2hjb20gVGVjaG5vbG9naWVzIEluYy4KLQkJCQlNZXJpdHVsbGlua2F0dSAxIEMKLQkJCQlIZWxzaW5raSAgMDAxNzAKLQkJCQlGSU5MQU5ECi0KLTAwLTE3LTdGICAgKGhleCkJCVdvcmxkc21hcnQgUmV0ZWNoCi0wMDE3N0YgICAgIChiYXNlIDE2KQkJV29ybGRzbWFydCBSZXRlY2gKLQkJCQkyMyBIaS1UZWNoIENvdXJ0Ci0JCQkJRWlnaHQgTWlsZSBQbGFpbnMgUUxEIDQxMTMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTctODAgICAoaGV4KQkJQXBwbGllZCBCaW9zeXN0ZW1zIEIuVi4KLTAwMTc4MCAgICAgKGJhc2UgMTYpCQlBcHBsaWVkIEJpb3N5c3RlbXMgQi5WLgotCQkJCUJsayAzMywgTWFyc2lsaW5nIEluZHVzdHJpYWwgRXN0YXRlIFJvYWQgMywKLQkJCQkjMDUtMDMKLQkJCQk3MzkyNTYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTctODEgICAoaGV4KQkJR3JleXN0b25lIERhdGEgU3lzdGVtLCBJbmMuCi0wMDE3ODEgICAgIChiYXNlIDE2KQkJR3JleXN0b25lIERhdGEgU3lzdGVtLCBJbmMuCi0JCQkJNDA4MDAgRW5jeWNvcGVkaWEgQ2lyY2xlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctODIgICAoaGV4KQkJTG9CZW5uIEluYy4KLTAwMTc4MiAgICAgKGJhc2UgMTYpCQlMb0Jlbm4gSW5jLgotCQkJCTE1MCBLYXRpbWF2aWsgUm9hZAotCQkJCVN1aXRlIDIwMgotCQkJCU90dGF3YSBPbnRhcmlvIEsyTCAyTjIKLQkJCQlDQU5BREEKLQotMDAtMTctODMgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTc4MyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctODQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTc4NCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBId3kgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTg1ICAgKGhleCkJCVNwYXJyIEVsZWN0cm9uaWNzIEx0ZAotMDAxNzg1ICAgICAoYmFzZSAxNikJCVNwYXJyIEVsZWN0cm9uaWNzIEx0ZAotCQkJCVNwYXJyIEVsZWN0cm9uaWNzIEx0ZAotCQkJCTQzIEhNVCBNYWluIFJvYWQgTWF0aGlrZXJlCi0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAwNTQKLQkJCQlJTkRJQQotCi0wMC0xNy04NiAgIChoZXgpCQl3aXNlbWJlZAotMDAxNzg2ICAgICAoYmFzZSAxNikJCXdpc2VtYmVkCi0JCQkJODA4LCBoYW5zaW4gSVQgdG93ZXIsIDIzNSBndXJvMy1kb25nLCBndXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi03NjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctODcgICAoaGV4KQkJQnJvdGhlciwgQnJvdGhlciAmIFNvbnMgQXBTCi0wMDE3ODcgICAgIChiYXNlIDE2KQkJQnJvdGhlciwgQnJvdGhlciAmIFNvbnMgQXBTCi0JCQkJVmVkIEFtYWdlcmJhbmVuIDkKLQkJCQlDb3BlbmhhZ2VuIFMgIERLLTIzMDAKLQkJCQlERU5NQVJLCi0KLTAwLTE3LTg4ICAgKGhleCkJCVBoaWxpcHMgTGlnaHRpbmcgQlYKLTAwMTc4OCAgICAgKGJhc2UgMTYpCQlQaGlsaXBzIExpZ2h0aW5nIEJWCi0JCQkJTWF0aGlsZGVsYWFuIDEKLQkJCQlFaW5kaG92ZW4gTm9vcmQgQnJhYmFudCA1NjExIEJECi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTctODkgICAoaGV4KQkJWmVuaXRyb24gQ29ycG9yYXRpb24KLTAwMTc4OSAgICAgKGJhc2UgMTYpCQlaZW5pdHJvbiBDb3Jwb3JhdGlvbgotCQkJCU5vLiA4LCBMYW5lIDI1MCwgU2luaHUgMm5kIFJkLiwgTmVpaHUgRGlzdHJpY3QsCi0JCQkJVGFpcGVpICAxMTQ5NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctOEEgICAoaGV4KQkJREFSVFMgVEVDSE5PTE9HSUVTIENPUlAuCi0wMDE3OEEgICAgIChiYXNlIDE2KQkJREFSVFMgVEVDSE5PTE9HSUVTIENPUlAuCi0JCQkJMkYsTm8uMTE5LENoaWVuIEthbmcgUmQuLAotCQkJCUNodW5nLUhvIFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LThCICAgKGhleCkJCVRlbGVkeW5lIFRlY2hub2xvZ2llcyBJbmNvcnBvcmF0ZWQKLTAwMTc4QiAgICAgKGJhc2UgMTYpCQlUZWxlZHluZSBUZWNobm9sb2dpZXMgSW5jb3Jwb3JhdGVkCi0JCQkJMTIzMzMgV2VzdCBPbHltcGljIEJsdmQKLQkJCQlMb3MgQW5nZWxlcyBDQSA5MDA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctOEMgICAoaGV4KQkJSW5kZXBlbmRlbnQgV2l0bmVzcywgSW5jCi0wMDE3OEMgICAgIChiYXNlIDE2KQkJSW5kZXBlbmRlbnQgV2l0bmVzcywgSW5jCi0JCQkJMTUxNSBXZXN0IDIyMDAgU291dGgKLQkJCQlTdWl0ZSBFCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LThEICAgKGhleCkJCUNoZWNrcG9pbnQgU3lzdGVtcywgSW5jLgotMDAxNzhEICAgICAoYmFzZSAxNikJCUNoZWNrcG9pbnQgU3lzdGVtcywgSW5jLgotCQkJCTEwMSBXb2xmIERyaXZlCi0JCQkJVGhvcm9mYXJlIE5KIDA4MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy04RSAgIChoZXgpCQlHdW5uZWJvIENhc2ggQXV0b21hdGlvbiBBQgotMDAxNzhFICAgICAoYmFzZSAxNikJCUd1bm5lYm8gQ2FzaCBBdXRvbWF0aW9uIEFCCi0JCQkJRmFicmlrc2dhdGFuIDEwCi0JCQkJR/Z0ZWJvcmcgIDQwMiAyNwotCQkJCVNXRURFTgotCi0wMC0xNy04RiAgIChoZXgpCQlOSU5HQk8gWUlET05HIEVMRUNUUk9OSUMgQ08uLExURC4KLTAwMTc4RiAgICAgKGJhc2UgMTYpCQlOSU5HQk8gWUlET05HIEVMRUNUUk9OSUMgQ08uLExURC4KLQkJCQlOby42NSBTaW1pbmcgRWFzdCBSZAotCQkJCVl1eWFvIENpdHksIFpoZWppYW5nIFByb3ZpbmNlIFpoZWppYW5nIFByb3ZpbmNlIENoaW5hIFAuQyAzMTU0MDAKLQkJCQlDSElOQQotCi0wMC0xNy05MCAgIChoZXgpCQlIWVVOREFJIERJR0lURUNIIENvLCBMdGQuCi0wMDE3OTAgICAgIChiYXNlIDE2KQkJSFlVTkRBSSBESUdJVEVDSCBDbywgTHRkLgotCQkJCTEzdGggRmwsIENob3VuZy1KaW4gQmxkZywgNTMtNQotCQkJCVdvbmh5by1ybyAzR2EsIFlvbmdzYW4tR3UKLQkJCQlTZW91bCAgMTQwLTcxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy05MSAgIChoZXgpCQlMaW5UZWNoIEdtYkgKLTAwMTc5MSAgICAgKGJhc2UgMTYpCQlMaW5UZWNoIEdtYkgKLQkJCQlGcmllZHJpY2gtRW5nZWxzLVN0ci4gMzUKLQkJCQlCZXJsaW4gIDEzMTU2Ci0JCQkJR0VSTUFOWQotCi0wMC0xNy05MiAgIChoZXgpCQlGYWxjb20gV2lyZWxlc3MgQ29tdW5pY2F0aW9ucyBHbWJoCi0wMDE3OTIgICAgIChiYXNlIDE2KQkJRmFsY29tIFdpcmVsZXNzIENvbXVuaWNhdGlvbnMgR21iaAotCQkJCUdld2VyYmVyaW5nIDYKLQkJCQlMYW5nZXdpZXNlbiBUaHVyaW5naWEgOTg3MDQKLQkJCQlHRVJNQU5ZCi0KLTAwLTE3LTkzICAgKGhleCkJCVRpZ2kgQ29ycG9yYXRpb24KLTAwMTc5MyAgICAgKGJhc2UgMTYpCQlUaWdpIENvcnBvcmF0aW9uCi0JCQkJMjA3MCBDaGFpbiBCcmlkZ2Ugcm9hZAotCQkJCVN1aXRlIEctMTAwCi0JCQkJVmllbm5hIFZhIDIyMTgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy05NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE3OTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy05NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE3OTUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy05NiAgIChoZXgpCQlSaXR0bWV5ZXIgQUcKLTAwMTc5NiAgICAgKGJhc2UgMTYpCQlSaXR0bWV5ZXIgQUcKLQkJCQlJbndpbGVycmllZHN0cmFzc2UgNTcKLQkJCQlQb3N0ZmFjaCA0NjQKLQkJCQlCYWFyIFpHIENILTYzNDEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNy05NyAgIChoZXgpCQlUZWxzeSBFbGV0dHJvbmljYSBTLnAuQS4KLTAwMTc5NyAgICAgKGJhc2UgMTYpCQlUZWxzeSBFbGV0dHJvbmljYSBTLnAuQS4KLQkJCQlDb3JzbyBTdml6emVyYSAxODUKLQkJCQlUb3Jpbm8gIDEwMTQ5Ci0JCQkJSVRBTFkKLQotMDAtMTctOTggICAoaGV4KQkJQXpvbmljIFRlY2hub2xvZ3kgQ28uLCBMVEQKLTAwMTc5OCAgICAgKGJhc2UgMTYpCQlBem9uaWMgVGVjaG5vbG9neSBDby4sIExURAotCQkJCTE1Ri0zLCBOby4gMTYzLCBTZWMuLCAxIEtlZWx1bmcgUmQuCi0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTk5ICAgKGhleCkJCVNtYXJUaXJlIFN5c3RlbXMgSW5jLgotMDAxNzk5ICAgICAoYmFzZSAxNikJCVNtYXJUaXJlIFN5c3RlbXMgSW5jLgotCQkJCVN1aXRlIDE1MAotCQkJCTEzMTUxIFZhbmllciBQbGFjZQotCQkJCVJpY2htb25kIEJDIFY2ViAySjEKLQkJCQlDQU5BREEKLQotMDAtMTctOUEgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDE3OUEgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTm8uIDI4OSwgU2luaHUgM3JkIFJkLiwgTmVpaHUgRGlzdHJpY3QsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTlCICAgKGhleCkJCUNoYW50IFNpbmNlcmUgQ08uLCBMVEQuCi0wMDE3OUIgICAgIChiYXNlIDE2KQkJQ2hhbnQgU2luY2VyZSBDTy4sIExURC4KLQkJCQk3Ri0yLE5PLjE4OCxTZWMgMyxUYSBUdW5nIFJvb2QsCi0JCQkJSHNpIENoaWggQ2l0eSBUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy05QyAgIChoZXgpCQlERVBSQUcgU0NIVUxaIEdNQkggdS4gQ08uCi0wMDE3OUMgICAgIChiYXNlIDE2KQkJREVQUkFHIFNDSFVMWiBHTUJIIHUuIENPLgotCQkJCUt1cmb8cnN0ZW5yaW5nIDEyLjE4Ci0JCQkJQW1iZXJnIEJheWVybiA5MjIyNAotCQkJCUdFUk1BTlkKLQotMDAtMTctOUQgICAoaGV4KQkJS2VsbWFuIExpbWl0ZWQKLTAwMTc5RCAgICAgKGJhc2UgMTYpCQlLZWxtYW4gTGltaXRlZAotCQkJCVJhdGhkb3duIENsb3NlCi0JCQkJTGlzc3VlIEVhc3QgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlMaXNidXJuIENvLiBBbnRyaW0gQlQyOCAyUkIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy05RSAgIChoZXgpCQlTaXJpdCBJbmMKLTAwMTc5RSAgICAgKGJhc2UgMTYpCQlTaXJpdCBJbmMKLQkJCQkyNTI1IE1lcmlkaWFuIFBhcmt3YXkKLQkJCQlTdWl0ZSA2MAotCQkJCUR1cmhhbSBOQyAyNzcxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctOUYgICAoaGV4KQkJQXByaWNvcm4KLTAwMTc5RiAgICAgKGJhc2UgMTYpCQlBcHJpY29ybgotCQkJCTEyMTkxIEtpcmtoYW0gUkQKLQkJCQlQb3dheSBDYWxpZm9ybmlhIDkyMDY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1BMCAgIChoZXgpCQlSb2JvVGVjaCBzcmwKLTAwMTdBMCAgICAgKGJhc2UgMTYpCQlSb2JvVGVjaCBzcmwKLQkJCQlWaWEgTWF6emluaSA4MgotCQkJCVNhcnphbmEgKFNQKSAgSS0xOTAzOAotCQkJCUlUQUxZCi0KLTAwLTE3LUExICAgKGhleCkJCTNzb2Z0IGluYy4KLTAwMTdBMSAgICAgKGJhc2UgMTYpCQkzc29mdCBpbmMuCi0JCQkJc2hpbnlvdW5nIGJsZGcgNGYsIGNodW5nZGFtLWRvbmcsIGdhbmduYW0tZ3UKLQkJCQlzZW91bCAgMTM1LTEwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1BMiAgIChoZXgpCQlDYW1yaXZveCBMdGQuCi0wMDE3QTIgICAgIChiYXNlIDE2KQkJQ2Ftcml2b3ggTHRkLgotCQkJCVRoZSBKZWZmcmV5cyBCdWlsZGluZwotCQkJCUNvd2xleSBSb2FkCi0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCNCAwV1MKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy1BMyAgIChoZXgpCQlNSVggcy5yLmwuCi0wMDE3QTMgICAgIChiYXNlIDE2KQkJTUlYIHMuci5sLgotCQkJCVZpYSBDYWxkZXJhLCAyMQotCQkJCU1pbGFuICBJLTIwMTUzCi0JCQkJSVRBTFkKLQotMDAtMTctQTQgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0wMDE3QTQgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUE1ICAgKGhleCkJCVJhbGluayBUZWNobm9sb2d5IENvcnAKLTAwMTdBNSAgICAgKGJhc2UgMTYpCQlSYWxpbmsgVGVjaG5vbG9neSBDb3JwCi0JCQkJU3VpdGUgMjE1LCBCbGRnIDUzLiAxOTUtNjEgU2VjLjQsIENodW5nIEhzaW5nIFJkLAotCQkJCUNodXR1bmcgSHNpbmNodSAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LUE2ICAgKGhleCkJCVlPU0lOIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDAxN0E2ICAgICAoYmFzZSAxNikJCVlPU0lOIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTZGLTIsIE5vLjE3LCBMYW4gMTc0LCBTaGluLU1pbmcgUm9hZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy1BNyAgIChoZXgpCQlNb2JpbGUgQ29tcHV0aW5nIFByb21vdGlvbiBDb25zb3J0aXVtCi0wMDE3QTcgICAgIChiYXNlIDE2KQkJTW9iaWxlIENvbXB1dGluZyBQcm9tb3Rpb24gQ29uc29ydGl1bQotCQkJCTMtNS0xMiBTaGliYS1Lb2VuCi0JCQkJTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwNS0wMDExCi0JCQkJSkFQQU4KLQotMDAtMTctQTggICAoaGV4KQkJRURNIENvcnBvcmF0aW9uCi0wMDE3QTggICAgIChiYXNlIDE2KQkJRURNIENvcnBvcmF0aW9uCi0JCQkJMy01LTIgSXRhYmFzaGkKLQkJCQlJdGFiYXNoaS1rdSBUb2t5byAxNzMtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTE3LUE5ICAgKGhleCkJCVNlbnRpdmlzaW9uCi0wMDE3QTkgICAgIChiYXNlIDE2KQkJU2VudGl2aXNpb24KLQkJCQlNYXJ5bmFyc2thIDE5YQotCQkJCVdhcnNhdyBNYXpvd2llY2tpZSAwMi02NzQKLQkJCQlQT0xBTkQKLQotMDAtMTctQUEgICAoaGV4KQkJZWxhYi1leHBlcmllbmNlIGluYy4KLTAwMTdBQSAgICAgKGJhc2UgMTYpCQllbGFiLWV4cGVyaWVuY2UgaW5jLgotCQkJCTEwNCBBbm90c3VwaWEKLQkJCQlBbm90c3VkYWkgNC02LTEKLQkJCQlUc3Utc2hpIG1pZSBwcmVmZWN0dXJlIDUxNC0wMTMxCi0JCQkJSkFQQU4KLQotMDAtMTctQUIgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDE3QUIgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTctQUMgICAoaGV4KQkJTydOZWlsIFByb2R1Y3QgRGV2ZWxvcG1lbnQgSW5jLgotMDAxN0FDICAgICAoYmFzZSAxNikJCU8nTmVpbCBQcm9kdWN0IERldmVsb3BtZW50IEluYy4KLQkJCQk4IE1hc29uCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1BRCAgIChoZXgpCQlBY2VOZXQgQ29ycG9yYXRpb24KLTAwMTdBRCAgICAgKGJhc2UgMTYpCQlBY2VOZXQgQ29ycG9yYXRpb24KLQkJCQk3Ri00LCBOby4xNDYsIFdlbi1TaGluIFJvYWQKLQkJCQlHdWVpc2hhbiBUQU9ZVUFOIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctQUUgICAoaGV4KQkJR0FJLVRyb25pY3MKLTAwMTdBRSAgICAgKGJhc2UgMTYpCQlHQUktVHJvbmljcwotCQkJCUJydW5lbCBEcml2ZQotCQkJCVN0cmV0dG9uIFBhcmsKLQkJCQlCdXJ0b24gVXBvbiBUcmVudCBTdGFmZm9yZHNoaXJlIERFMTMgMEJaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTctQUYgICAoaGV4KQkJRW5lcm1ldAotMDAxN0FGICAgICAoYmFzZSAxNikJCUVuZXJtZXQKLQkJCQlTYWx2ZXNlbmludGllCi0JCQkJSnlza+QgIEZJTi00MDQyMAotCQkJCUZJTkxBTkQKLQotMDAtMTctQjAgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTdCMCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTctQjEgICAoaGV4KQkJQUNJU1QgTWVkaWNhbCBTeXN0ZW1zLCBJbmMuCi0wMDE3QjEgICAgIChiYXNlIDE2KQkJQUNJU1QgTWVkaWNhbCBTeXN0ZW1zLCBJbmMuCi0JCQkJNzQ1MCBGbHlpbmcgQ2xvdWQgRHJpdmUKLQkJCQlTdWl0ZSAxNTAKLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUIyICAgKGhleCkJCVNLIFRlbGVzeXMKLTAwMTdCMiAgICAgKGJhc2UgMTYpCQlTSyBUZWxlc3lzCi0JCQkJNEYsIEt5dW5nZG9uZyBibGRnLCA0LTQsIFN1bmFlLURvbmcsIFB1bmRhbmctR3UKLQkJCQlTdW5nbmFtLUNpdHkgS3VuZ2dpLURvIDQ2My04MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctQjMgICAoaGV4KQkJQWZ0ZWsgSW5mb3N5cyBMaW1pdGVkCi0wMDE3QjMgICAgIChiYXNlIDE2KQkJQWZ0ZWsgSW5mb3N5cyBMaW1pdGVkCi0JCQkJUGF3YW4gQ29tcGxleAotCQkJCVNoZWVsYSBWaWhhciBDb2xvbnkKLQkJCQlQdW5lIE1haGFyYXNodHJhIDQxMSAwMzgKLQkJCQlJTkRJQQotCi0wMC0xNy1CNCAgIChoZXgpCQlSZW1vdGUgU2VjdXJpdHkgU3lzdGVtcywgTExDCi0wMDE3QjQgICAgIChiYXNlIDE2KQkJUmVtb3RlIFNlY3VyaXR5IFN5c3RlbXMsIExMQwotCQkJCTQ4MDYgVXBwZXIgQnJhbmRvbiBQbGFjZQotCQkJCU1hcmlldHRhIEdlb3JnaWEgMzAwNjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUI1ICAgKGhleCkJCVBlZXJsZXNzIFN5c3RlbXMgQ29ycG9yYXRpb24KLTAwMTdCNSAgICAgKGJhc2UgMTYpCQlQZWVybGVzcyBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJMjM4MSBSb3NlY3JhbnMgQXZlbnVlLCBTdWl0ZSA0MDAKLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1CNiAgIChoZXgpCQlBcXVhbnRpYQotMDAxN0I2ICAgICAoYmFzZSAxNikJCUFxdWFudGlhCi0JCQkJNzAwIFRhc21hbiBEci4KLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctQjcgICAoaGV4KQkJVG9uemUgVGVjaG5vbG9neSBDby4KLTAwMTdCNyAgICAgKGJhc2UgMTYpCQlUb256ZSBUZWNobm9sb2d5IENvLgotCQkJCTVGLTEwLCBOby42LCBMYW5lIDE4MCwKLQkJCQlTZWMgNiwgTWluY3l1YW4gRWFzdCBSb2FkCi0JCQkJVGFpcGVpICAxMTQ5MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctQjggICAoaGV4KQkJTk9WQVRST04gQ08uLCBMVEQuCi0wMDE3QjggICAgIChiYXNlIDE2KQkJTk9WQVRST04gQ08uLCBMVEQuCi0JCQkJIzYwMSBwb2xhcmlzIGJsZGcuLCAxNS0zIGplb25namEtZG9uZywgYnVuZGFuZy1ndQotCQkJCVNlb25nIE5hbSBHeWVvbmdnaSBEbyA0NjMtODExCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUI5ICAgKGhleCkJCUdhbWJybyBMdW5kaWEgQUIKLTAwMTdCOSAgICAgKGJhc2UgMTYpCQlHYW1icm8gTHVuZGlhIEFCCi0JCQkJQk9YIDEwMTAxCi0JCQkJTFVORCBTa+VuZSAyMjAxMAotCQkJCVNXRURFTgotCi0wMC0xNy1CQSAgIChoZXgpCQlTRURPIENPLiwgTFRELgotMDAxN0JBICAgICAoYmFzZSAxNikJCVNFRE8gQ08uLCBMVEQuCi0JCQkJMzAyLCBLVCBCbGRnLCAxQU5ORVgsIDM1LTEKLQkJCQlZZW9uZ2RldW5ncG8tZG9uZyA4Z2EsIFllb25nZGV1bmdwby1ndQotCQkJCVNlb3VsICAxNTAtMDM4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUJCICAgKGhleCkJCVN5cmlueCBJbmR1c3RyaWFsIEVsZWN0cm9uaWNzCi0wMDE3QkIgICAgIChiYXNlIDE2KQkJU3lyaW54IEluZHVzdHJpYWwgRWxlY3Ryb25pY3MKLQkJCQlEZSBGYWN0b3JpaiAxMwotCQkJCVp3YWFnIE5vb3JkIEhvbGxhbmQgMTY4OSBBSwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE3LUJDICAgKGhleCkJCVRvdWNodHVuZXMgTXVzaWMgQ29ycG9yYXRpb24KLTAwMTdCQyAgICAgKGJhc2UgMTYpCQlUb3VjaHR1bmVzIE11c2ljIENvcnBvcmF0aW9uCi0JCQkJMyBQbGFjZSBkdSBDb21tZXJjZQotCQkJCTR0aCBGbG9vcgotCQkJCU1vbnRy6WFsIFF16WJlYyBIM0UgMUg3Ci0JCQkJQ0FOQURBCi0KLTAwLTE3LUJEICAgKGhleCkJCVRpYmV0c3lzdGVtCi0wMDE3QkQgICAgIChiYXNlIDE2KQkJVGliZXRzeXN0ZW0KLQkJCQk2RiBJVCBDYXN0bGUgSUkgNTUwLTEgR2FzYW4tZG9uZwotCQkJCVNlb3VsIEdldW1jaGVvbi1ndSAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUJFICAgKGhleCkJCVRyYXRlYyBUZWxlY29tIEIuVi4KLTAwMTdCRSAgICAgKGJhc2UgMTYpCQlUcmF0ZWMgVGVsZWNvbSBCLlYuCi0JCQkJRGUgU21hbGxlIFppamRlIDEyCi0JCQkJVmVlbmVuZGFhbCAgTkwwLTM5MDMgTFAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNy1CRiAgIChoZXgpCQlDb2hlcmVudCBSZXNlYXJjaCBMaW1pdGVkCi0wMDE3QkYgICAgIChiYXNlIDE2KQkJQ29oZXJlbnQgUmVzZWFyY2ggTGltaXRlZAotCQkJCTggUHJpbmNlc3MgTWV3cwotCQkJCUhvcmFjZSBSb2FkCi0JCQkJS2luZ3N0b24gdXBvbiBUaGFtZXMgU3VycmV5IEtUMSAyU1oKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy1DMCAgIChoZXgpCQlQdXJlVGVjaCBTeXN0ZW1zLCBJbmMuCi0wMDE3QzAgICAgIChiYXNlIDE2KQkJUHVyZVRlY2ggU3lzdGVtcywgSW5jLgotCQkJCTIwNzUgVyBQaW5uYWNsZSBQZWFrIFJvYWQgIzEyMAotCQkJCVBob2VuaXggQVogODUwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUMxICAgKGhleCkJCUNNIFByZWNpc2lvbiBUZWNobm9sb2d5IExURC4KLTAwMTdDMSAgICAgKGJhc2UgMTYpCQlDTSBQcmVjaXNpb24gVGVjaG5vbG9neSBMVEQuCi0JCQkJMiBGbCwgTm8uIDE3NywgQ2hpZW4tRSBSb2FkLCBDaHVuZy1IbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LUMyICAgKGhleCkJCVBpcmVsbGkgQnJvYWRiYW5kIFNvbHV0aW9ucwotMDAxN0MyICAgICAoYmFzZSAxNikJCVBpcmVsbGkgQnJvYWRiYW5kIFNvbHV0aW9ucwotCQkJCXYuU2FyY2EgMjIyCi0JCQkJTWlsYW5vICAyMDEyNgotCQkJCUlUQUxZCi0KLTAwLTE3LUMzICAgKGhleCkJCUtURiBUZWNobm9sb2dpZXMgSW5jLgotMDAxN0MzICAgICAoYmFzZSAxNikJCUtURiBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTR0aCBGbC4sIENlbnRyYWwgVG93ZXIsIDI2NS0zLCBTZW9oeXVuLURvbmcKLQkJCQlCdW5kbmFnLUd1Ci0JCQkJU3VuZ25hbS1DaXR5IEt5dW5nZ2ktRG8gNDYzLTc2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1DNCAgIChoZXgpCQlRdWFudGEgTWljcm9zeXN0ZW1zLCBJTkMuCi0wMDE3QzQgICAgIChiYXNlIDE2KQkJUXVhbnRhIE1pY3Jvc3lzdGVtcywgSU5DLgotCQkJCTE4OCBXZW5od2EgMm5kIFJELiwgS3VlaXNoYW4gSHNpYW5nCi0JCQkJVGFveXVhbiBTaGllbiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy1DNSAgIChoZXgpCQlTb25pY1dBTEwKLTAwMTdDNSAgICAgKGJhc2UgMTYpCQlTb25pY1dBTEwKLQkJCQkxMTQzIEJvcnJlZ2FzIEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctQzYgICAoaGV4KQkJQ3Jvc3MgTWF0Y2ggVGVjaG5vbG9naWVzIEluYwotMDAxN0M2ICAgICAoYmFzZSAxNikJCUNyb3NzIE1hdGNoIFRlY2hub2xvZ2llcyBJbmMKLQkJCQk0MDAsIGJvdWwuIEplYW4tTGVzYWdlCi0JCQkJSGFsbCBPdWVzdCwgU3VpdGUgMzAKLQkJCQlRdeliZWMsIFFjICBHMUsgOFcxCi0JCQkJQ0FOQURBCi0KLTAwLTE3LUM3ICAgKGhleCkJCU1BUkEgU3lzdGVtcyBDb25zdWx0aW5nIEFCCi0wMDE3QzcgICAgIChiYXNlIDE2KQkJTUFSQSBTeXN0ZW1zIENvbnN1bHRpbmcgQUIKLQkJCQlJbnN0cnVtZW50duRnZW4gNDUKLQkJCQlTdG9ja2hvbG0gIDEyNiA1MwotCQkJCVNXRURFTgotCi0wMC0xNy1DOCAgIChoZXgpCQlLeW9jZXJhIE1pdGEgQ29ycG9yYXRpb24KLTAwMTdDOCAgICAgKGJhc2UgMTYpCQlLeW9jZXJhIE1pdGEgQ29ycG9yYXRpb24KLQkJCQkyLTE0LTksIFRhbWFnYXdhZGFpCi0JCQkJU2V0YWdheWEtV2FyZAotCQkJCVRva3lvICAxNTgtODYxMAotCQkJCUpBUEFOCi0KLTAwLTE3LUM5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE3QzkgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQk0MTYsIE1hZXRhbi0zRG9uZywgWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24gR2V5b25nZ2ktRG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1DQSAgIChoZXgpCQlRaXNkYSBDb3Jwb3JhdGlvbgotMDAxN0NBICAgICAoYmFzZSAxNikJCVFpc2RhIENvcnBvcmF0aW9uCi0JCQkJMTU3IFNoYW4gWWluZyBSb2FkLAotCQkJCUd1ZWlTaGFuIFRhb3l1YW4sIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctQ0IgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAxN0NCICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE5vcnRoIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg5LTEyMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUNDICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50Ci0wMDE3Q0MgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQKLQkJCQk2MDEgRGF0YSBEci4KLQkJCQlNL1MgMzIwCi0JCQkJUGxhbm8gVFggNzUwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUNEICAgKGhleCkJCUNFQyBXaXJlbGVzcyBSJkQgTHRkLgotMDAxN0NEICAgICAoYmFzZSAxNikJCUNFQyBXaXJlbGVzcyBSJkQgTHRkLgotCQkJCVdlc3QgTTUgQnVpbGRpbmcsTm8uMSBFYXN0IFJvYWQKLQkJCQlKaXV4aWFucWlhbyBDaGFvIFlhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwMTYKLQkJCQlDSElOQQotCi0wMC0xNy1DRSAgIChoZXgpCQlNQiBJbnRlcm5hdGlvbmFsIFRlbGVjb20gTGFicyBzcmwKLTAwMTdDRSAgICAgKGJhc2UgMTYpCQlNQiBJbnRlcm5hdGlvbmFsIFRlbGVjb20gTGFicyBzcmwKLQkJCQlWaWEgTWlsYW5vIDI1NQotCQkJCUJhcmFuemF0ZSBkaSBCb2xsYXRlIE1pbGFubyAyMDAyMQotCQkJCUlUQUxZCi0KLTAwLTE3LUNGICAgKGhleCkJCWlNQ0EtR21iSAotMDAxN0NGICAgICAoYmFzZSAxNikJCWlNQ0EtR21iSAotCQkJCURvcmZzdHJhc3NlIDI4YgotCQkJCUl0emVob2UgU2NobGVzd2lnLUhvbHN0ZWluIDI1NTI0Ci0JCQkJR0VSTUFOWQotCi0wMC0xNy1EMCAgIChoZXgpCQlPcHRpY29tIENvbW11bmljYXRpb25zLCBMTEMKLTAwMTdEMCAgICAgKGJhc2UgMTYpCQlPcHRpY29tIENvbW11bmljYXRpb25zLCBMTEMKLQkJCQkxMDUwIENvbm5lY3RpY3V0IEF2ZW51ZSwgTlcKLQkJCQlTdWl0ZSAxMDAwCi0JCQkJV2FzaGluZ3RvbiBEQyAyMDAzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRDEgICAoaGV4KQkJTm9ydGVsCi0wMDE3RDEgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE3LUQyICAgKGhleCkJCVRISU5MSU5YIFBUWSBMVEQKLTAwMTdEMiAgICAgKGJhc2UgMTYpCQlUSElOTElOWCBQVFkgTFRECi0JCQkJMzEgQ2Fyd29vbGEgQ3Jlc2NlbnQKLQkJCQlNb29sb29sYWJhIFF1ZWVuc2xhbmQgNDU1NwotCQkJCUFVU1RSQUxJQQotCi0wMC0xNy1EMyAgIChoZXgpCQlFdHltb3RpYyBSZXNlYXJjaCwgSW5jLgotMDAxN0QzICAgICAoYmFzZSAxNikJCUV0eW1vdGljIFJlc2VhcmNoLCBJbmMuCi0JCQkJNjEgTWFydGluIExhbmUKLQkJCQlFbGsgR3JvdmUgVmlsbGFnZSBJTCA2MDA2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRDQgICAoaGV4KQkJTW9uc29vbiBNdWx0aW1lZGlhLCBJbmMKLTAwMTdENCAgICAgKGJhc2UgMTYpCQlNb25zb29uIE11bHRpbWVkaWEsIEluYwotCQkJCTE3MzAgU291dGggQW1waGxldHQgYmx2ZC4gU3VpdGUgMTAxCi0JCQkJU2FuIE1hdGVvIENBIDk0NDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1ENSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxN0Q1ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pLUNpdHkgR3llb25nLUJ1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUQ2ICAgKGhleCkJCUJsdWVjaGlwcyBNaWNyb2hvdXNlIENvLixMdGQuCi0wMDE3RDYgICAgIChiYXNlIDE2KQkJQmx1ZWNoaXBzIE1pY3JvaG91c2UgQ28uLEx0ZC4KLQkJCQkyMTIvMiBNLjEwIFRhbWJvbCBVbW9uZwotCQkJCUFtcGh1ciBNdWFuZwotCQkJCUxhbXBodW4gIDUxMTUwCi0JCQkJVEhBSUxBTkQKLQotMDAtMTctRDcgICAoaGV4KQkJSU9OIEdlb3BoeXNpY2FsIENvcnBvcmF0aW9uIEluYy4KLTAwMTdENyAgICAgKGJhc2UgMTYpCQlJT04gR2VvcGh5c2ljYWwgQ29ycG9yYXRpb24gSW5jLgotCQkJCTg1MCBEb3JvdGh5Ci0JCQkJU3VpdGUgNTEwCi0JCQkJUmljaGFyZHNvbiBUZXhhcyA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRDggICAoaGV4KQkJTWFnbnVtIFNlbWljb25kdWN0b3IsIEluYy4KLTAwMTdEOCAgICAgKGJhc2UgMTYpCQlNYWdudW0gU2VtaWNvbmR1Y3RvciwgSW5jLgotCQkJCTU5MSBZb3NlbWl0ZSBEcml2ZQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1EOSAgIChoZXgpCQlBQUkgQ29ycG9yYXRpb24KLTAwMTdEOSAgICAgKGJhc2UgMTYpCQlBQUkgQ29ycG9yYXRpb24KLQkJCQlQLk8uIEJveCAxMjYKLQkJCQlIdW50IFZhbGxleSBNYXJ5bGFuZCAyMTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctREEgICAoaGV4KQkJU3BhbnMgTG9naWMKLTAwMTdEQSAgICAgKGJhc2UgMTYpCQlTcGFucyBMb2dpYwotCQkJCTIwMSBTYW4gQW50b25pbyBDaXJjbGUKLQkJCQkjMjgwCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctREIgICAoaGV4KQkJQ0FOS08gVEVDSE5PTE9HSUVTIElOQy4KLTAwMTdEQiAgICAgKGJhc2UgMTYpCQlDQU5LTyBURUNITk9MT0dJRVMgSU5DLgotCQkJCTUgRkwuIERPTkcgU1VORyBCTERHLiAxNy04Ci0JCQkJWU9JRE8tRE9ORywgWUVPTkdERVVOR1BPLUtVCi0JCQkJU0VPVUwgIDE1MC04NzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctREMgICAoaGV4KQkJREFFTVlVTkcgWkVSTzEKLTAwMTdEQyAgICAgKGJhc2UgMTYpCQlEQUVNWVVORyBaRVJPMQotCQkJCSM4MDksSHlvc3VuZyBJbnRlbGxpYW4KLQkJCQkxNTk0LTEgR3dhbnlhbmctZG9uZyxEb25nYW4tZ3UKLQkJCQlBbnlhbmctc2kgR3llb25nZ2ktZG8gNDMxLTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1ERCAgIChoZXgpCQlDbGlwc2FsIEF1c3RyYWxpYQotMDAxN0REICAgICAoYmFzZSAxNikJCUNsaXBzYWwgQXVzdHJhbGlhCi0JCQkJMzMtMzcgUG9ydCBXYWtlZmllbGQgUmQKLQkJCQlHZXBwcyBDcm9zcyBTb3V0aCBBdXN0cmFsaWEgNTA5NAotCQkJCUFVU1RSQUxJQQotCi0wMC0xNy1ERSAgIChoZXgpCQlBZHZhbnRhZ2UgU2l4IEx0ZAotMDAxN0RFICAgICAoYmFzZSAxNikJCUFkdmFudGFnZSBTaXggTHRkCi0JCQkJMjA4IEdlb3JnZSBTdAotCQkJCVNoYXcKLQkJCQlPTERIQU0gTGFuY3MgT0wyIDhEUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE3LURGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTdERiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUUwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTdFMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUUxICAgKGhleCkJCURBQ09TIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMTdFMSAgICAgKGJhc2UgMTYpCQlEQUNPUyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJMTA0IERhZXJ5dW5nLVRlY2hub3Rvd24gSUlJIDQ0OAotCQkJCUdhc2FuLURvbmcKLQkJCQlTRU9VTCBLZXVtY2hlb24tR3UgMTUzLTc3MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1FMiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMTdFMiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FMyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0UzICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FNCAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U0ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FNSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U1ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FNiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U2ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FNyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U3ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FOCAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U4ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FOSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0U5ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FQSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0VBICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FQiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0VCICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FQyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxN0VDICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FRCAgIChoZXgpCQlXb29Kb29JVCBMdGQuCi0wMDE3RUQgICAgIChiYXNlIDE2KQkJV29vSm9vSVQgTHRkLgotCQkJCUhhbmtvb2t0aXJlIEIvRCA0dGggZmxvb3IsIDUwMS0xOSwKLQkJCQlTaW53b2wyIC1kb25nLAotCQkJCVlhbmdjaGVvbi1ndSwgU2VvdWwgMTU4LTgzOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1FRSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxN0VFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRUYgICAoaGV4KQkJSUJNIENvcnAKLTAwMTdFRiAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTIwNTEgTWlzc2lvbiBDb2xsZWdlIEJsdmQgCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUYwICAgKGhleCkJCVNaQ09NIEJyb2FkYmFuZCBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxN0YwICAgICAoYmFzZSAxNikJCVNaQ09NIEJyb2FkYmFuZCBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCVJvb20gNjAyIE5vLjggQnVpbGRpbmcgLFNoZW56aGVuIFNvZnR3YXJlIFBhcmssCi0JCQkJSGktVGVjaCBDLlpvbmUgLE5hbnNoYW4gQXJlYQotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xNy1GMSAgIChoZXgpCQlSZW51IEVsZWN0cm9uaWNzIFB2dCBMdGQKLTAwMTdGMSAgICAgKGJhc2UgMTYpCQlSZW51IEVsZWN0cm9uaWNzIFB2dCBMdGQKLQkJCQlTciBObyAyLzYsIEJhbmVyIFJvYWQsCi0JCQkJQmFuZXIsCi0JCQkJUHVuZSBNYWhhcmFzaHRyYSA0MTEwNDUKLQkJCQlJTkRJQQotCi0wMC0xNy1GMiAgIChoZXgpCQlBcHBsZSBDb21wdXRlcgotMDAxN0YyICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyCi0JCQkJMSBJbmZpbml0ZSBMb29wIE1TOjM1R1BPCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1GMyAgIChoZXgpCQlIYXJyaXMgQ29ycGFyYXRpb24KLTAwMTdGMyAgICAgKGJhc2UgMTYpCQlIYXJyaXMgQ29ycGFyYXRpb24KLQkJCQkxMDI1IFdlc3QgTkFTQSBCbHZkCi0JCQkJTWVsYm91cm5lIEZMIDMyOTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1GNCAgIChoZXgpCQlaRVJPTiBBTExJQU5DRQotMDAxN0Y0ICAgICAoYmFzZSAxNikJCVpFUk9OIEFMTElBTkNFCi0JCQkJIDNGIERPT1JJIEJVSUxELiAyNDQtMTQgYnVuamksIFBvaS1kb25nLCBHYW5nbmFtLWd1Ci0JCQkJU0VPVUwgIDEzNS05NjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctRjUgICAoaGV4KQkJTElHIE5FT1BURUsKLTAwMTdGNSAgICAgKGJhc2UgMTYpCQlMSUcgTkVPUFRFSwotCQkJCTkyNiBHb3NhZWstZG9uZwotCQkJCUd3b25zZW9uLWd1Ci0JCQkJU3V3b24tc2kgR3llb25nZ2ktZG8gNDQxLTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1GNiAgIChoZXgpCQlQeXJhbWlkIE1lcmlkZW4gSW5jLgotMDAxN0Y2ICAgICAoYmFzZSAxNikJCVB5cmFtaWQgTWVyaWRlbiBJbmMuCi0JCQkJNDUgR3JhY2V5IEF2ZS4KLQkJCQlNZXJpZGVuIENUIDA2NDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1GNyAgIChoZXgpCQlDRU0gU29sdXRpb25zIFB2dCBMdGQKLTAwMTdGNyAgICAgKGJhc2UgMTYpCQlDRU0gU29sdXRpb25zIFB2dCBMdGQKLQkJCQk0OSxLYW5pamEgQmhhdmFuCi0JCQkJUmFjZSBDb3Vyc2UgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwIDAwMQotCQkJCUlORElBCi0KLTAwLTE3LUY4ICAgKGhleCkJCU1vdGVjaCBJbmR1c3RyaWVzIEluYy4KLTAwMTdGOCAgICAgKGJhc2UgMTYpCQlNb3RlY2ggSW5kdXN0cmllcyBJbmMuCi0JCQkJNkYsIE5vLiAyNDgsIFNlYy4gMywgUGVpLVNoZW4gUmQuLAotCQkJCVNoZW4tS2VuZyBIc2lhbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIyMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctRjkgICAoaGV4KQkJRm9yY29tIFNwLiB6IG8uby4KLTAwMTdGOSAgICAgKGJhc2UgMTYpCQlGb3Jjb20gU3AuIHogby5vLgotCQkJCUdham93YSA2Ci0JCQkJUG96bmFuIFdMS1AgNjAtODE1Ci0JCQkJUE9MQU5ECi0KLTAwLTE3LUZBICAgKGhleCkJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotMDAxN0ZBICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotCQkJCU9uZSBNaWNyb3NvZnQgV2F5Ci0JCQkJUkVELUIvMTA3MgotCQkJCVJlZG1vbmQgV2FzaGluZ3RvbiA5ODA1Mi02Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1GQiAgIChoZXgpCQlGQQotMDAxN0ZCICAgICAoYmFzZSAxNikJCUZBCi0JCQkJNjI4LTcsIER1bmdjaG9uLURvbmcKLQkJCQlTZW91bCBLYW5nc2VvLUt1IDE1Ny04MzgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctRkMgICAoaGV4KQkJU3VwcmVtYSBJbmMuCi0wMDE3RkMgICAgIChiYXNlIDE2KQkJU3VwcmVtYSBJbmMuCi0JCQkJMTZGIFBhcmt2aWV3IE9mZmljZSBUb3dlciwKLQkJCQlKZW9uZ2phLWRvbmcsIEJ1bmRhbmctZ3UsCi0JCQkJU2VvbmduYW0gR3llb25nZ2kgNDYzLTg2MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1GRCAgIChoZXgpCQlBbXVsZXQgSG90a2V5Ci0wMDE3RkQgICAgIChiYXNlIDE2KQkJQW11bGV0IEhvdGtleQotCQkJCUNhdmFsaWVyIFJvYWQKLQkJCQlIZWF0aGZpZWxkIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJSGVhdGhmaWVsZCBEZXZvbiBUUTEyIDZUUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE3LUZFICAgKGhleCkJCVRBTE9TIFNZU1RFTSBJTkMuCi0wMDE3RkUgICAgIChiYXNlIDE2KQkJVEFMT1MgU1lTVEVNIElOQy4KLQkJCQk2MTkxIENPUk5FUlNUT05FIENULiBTVEUgIzEwOQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRkYgICAoaGV4KQkJUExBWUxJTkUgQ28uLEx0ZC4KLTAwMTdGRiAgICAgKGJhc2UgMTYpCQlQTEFZTElORSBDby4sTHRkLgotCQkJCTEtNC0yMSBNT1RPQUtBU0FLQQotCQkJCU1JTkFUT0tVCi0JCQkJVE9LWU8gIDEwNy0wMDUxCi0JCQkJSkFQQU4KLQotMDAtMTgtMDAgICAoaGV4KQkJVU5JR1JBTkQgTFRECi0wMDE4MDAgICAgIChiYXNlIDE2KQkJVU5JR1JBTkQgTFRECi0JCQkJN0YtMiwgTm8uNDUsIEppbmdkZSBTdC4sIEpob25naGUgQ2l0eSwKLQkJCQlUYWlwZWkgQ291bnR5Ci0JCQkJMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0wMSAgIChoZXgpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotMDAxODAxICAgICAoYmFzZSAxNikJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wMiAgIChoZXgpCQlBbHBoYSBOZXR3b3JrcyBJbmMuCi0wMDE4MDIgICAgIChiYXNlIDE2KQkJQWxwaGEgTmV0d29ya3MgSW5jLgotCQkJCU5vLjggTGktc2hpbmcgU2V2ZW50aCBSb2FkLFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0wMyAgIChoZXgpCQlBcmNTb2Z0IFNoYW5naGFpIENvLiBMVEQKLTAwMTgwMyAgICAgKGJhc2UgMTYpCQlBcmNTb2Z0IFNoYW5naGFpIENvLiBMVEQKLQkJCQkyMHRoIEZsb29yLCBTdWl0ZSAoRUFTVCkgMjAwOCwgQ2hpbmEgTWVyY2hhbnRzIFBsYXphLCAzMzMKLQkJCQlTaGFuZ2hhaSAgMjAwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMTgtMDQgICAoaGV4KQkJRS1URUsgRElHSVRBTCBURUNITk9MT0dZIExJTUlURUQKLTAwMTgwNCAgICAgKGJhc2UgMTYpCQlFLVRFSyBESUdJVEFMIFRFQ0hOT0xPR1kgTElNSVRFRAotCQkJCVVOSVQxNTIwLDE1L0YuLFRPV0VSIDIsR1JBTkQgQ0VOVFVSWSBQTEFDRSwxOTMgUFJJTkNFIEVEV0FSRCBST0FEIFdFU1QsS09XTE9PTiwKLQkJCQlIT05HIEtPTkcKLQotMDAtMTgtMDUgICAoaGV4KQkJQmVpamluZyBJbkhhbmQgTmV0d29ya2luZyBUZWNobm9sb2d5IENvLixMdGQuCi0wMDE4MDUgICAgIChiYXNlIDE2KQkJQmVpamluZyBJbkhhbmQgTmV0d29ya2luZyBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJMy9GLEJ1aWxkaW5nIEEsR0VNIFRlY2hjaGVudGVyCi0JCQkJTm8sOSAzcmQgU3RyZWV0IG9mIFNoYW5nZGkKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0xOC0wNiAgIChoZXgpCQlIb2trZWkgSW5kdXN0cmllcyBDby4sIEx0ZC4KLTAwMTgwNiAgICAgKGJhc2UgMTYpCQlIb2trZWkgSW5kdXN0cmllcyBDby4sIEx0ZC4KLQkJCQlJbWFoaXJhIDQzMgotCQkJCUhha3VzYW4gSXNoaWthd2EgOTI0LTA4MjcKLQkJCQlKQVBBTgotCi0wMC0xOC0wNyAgIChoZXgpCQlGYW5zdGVsIENvcnAuCi0wMDE4MDcgICAgIChiYXNlIDE2KQkJRmFuc3RlbCBDb3JwLgotCQkJCTc0NjYgRS4gTW9udGUgQ3Jpc3RvIEF2ZS4KLQkJCQlTY290dHNkYWxlIEFyaXpvbmEgODUyNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTA4ICAgKGhleCkJCVNpZ2h0TG9naXgsIEluYy4KLTAwMTgwOCAgICAgKGJhc2UgMTYpCQlTaWdodExvZ2l4LCBJbmMuCi0JCQkJNzQ1IEFsZXhhbmRlciBSb2FkCi0JCQkJUHJpbmNldG9uIE5KIDA4NTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wOSAgIChoZXgpCQlDUkVTWU4KLTAwMTgwOSAgICAgKGJhc2UgMTYpCQlDUkVTWU4KLQkJCQk4LTIyLEphbXdvbi1kb25nCi0JCQkJU2VvdWwgU2VvY2hvLUd1ICMxMzctOTAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTBBICAgKGhleCkJCU1lcmFraSwgSW5jLgotMDAxODBBICAgICAoYmFzZSAxNikJCU1lcmFraSwgSW5jLgotCQkJCTk5IFJob2RlIElzbGFuZCBTdC4KLQkJCQlTYW4gRnJhbmNpc2NvLCBDQSA5NDEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtMEIgICAoaGV4KQkJQnJpbGxpYW50IFRlbGVjb21tdW5pY2F0aW9ucwotMDAxODBCICAgICAoYmFzZSAxNikJCUJyaWxsaWFudCBUZWxlY29tbXVuaWNhdGlvbnMKLQkJCQkzMDcgT3JjaGFyZCBDaXR5IERyLgotCQkJCVN1aXRlIDEwMgotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wQyAgIChoZXgpCQlPcHRlbGlhbiBBY2Nlc3MgTmV0d29ya3MKLTAwMTgwQyAgICAgKGJhc2UgMTYpCQlPcHRlbGlhbiBBY2Nlc3MgTmV0d29ya3MKLQkJCQkyMkEtMTA1MSBCYXh0ZXIgUm9hZAotCQkJCU90dGF3YSBPbnRhcmlvIEsyQyAzUDIKLQkJCQlDQU5BREEKLQotMDAtMTgtMEQgICAoaGV4KQkJVGVyYWJ5dGVzIFNlcnZlciBTdG9yYWdlIFRlY2ggQ29ycAotMDAxODBEICAgICAoYmFzZSAxNikJCVRlcmFieXRlcyBTZXJ2ZXIgU3RvcmFnZSBUZWNoIENvcnAKLQkJCQkxNDI1NyBFIERvbiBKdWxpYW4gUmQKLQkJCQlDaXR5IG9mIEluZHVzdHJ5IENBIDkxNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wRSAgIChoZXgpCQlBdmVnYSBTeXN0ZW1zCi0wMDE4MEUgICAgIChiYXNlIDE2KQkJQXZlZ2EgU3lzdGVtcwotCQkJCTU5IFZpY3RvcmlhIFN0cmVldAotCQkJCU1jTWFob25zIFBvaW50IE5TVyAyMDYwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTE4LTBGICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE4MEYgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgRGVubWFyayAxNzkwVgotCQkJCURFTk1BUksKLQotMDAtMTgtMTAgICAoaGV4KQkJSVBUcmFkZSBTLkEuCi0wMDE4MTAgICAgIChiYXNlIDE2KQkJSVBUcmFkZSBTLkEuCi0JCQkJUGFyYyBTY2llbnRpZmlxdWUKLQkJCQlBdmVudWUgZGVzIENoYXNzZXVycyBBcmRlbm5haXMsIDQKLQkJCQlTYXJ0LVRpbG1hbiBXYWxsb25pZSA0MDMxCi0JCQkJQkVMR0lVTQotCi0wMC0xOC0xMSAgIChoZXgpCQlOZXVyb3MgVGVjaG5vbG9neSBJbnRlcm5hdGlvbmFsLCBMTEMuCi0wMDE4MTEgICAgIChiYXNlIDE2KQkJTmV1cm9zIFRlY2hub2xvZ3kgSW50ZXJuYXRpb25hbCwgTExDLgotCQkJCTY1MCBXIExha2UgU3QKLQkJCQlTdWl0ZSAzMzAKLQkJCQlDaGljYWdvIElMIDYwNjYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0xMiAgIChoZXgpCQlCZWlqaW5nIFhpbndlaSBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDE4MTIgICAgIChiYXNlIDE2KQkJQmVpamluZyBYaW53ZWkgVGVsZWNvbSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVhpbndlaSBCbGRnLiwgTm8uIDcgWmhvbmdndWFuY3VuIFNvZnR3YXJlIFBhcmssCi0JCQkJTm8uIDggRG9uZ2JlaXdhbmcgV2VzdCBSb2FkCi0JCQkJSGFpZGlhbiBEaXN0cmljdCBCZWlqaW5nIDEwMDA5NAotCQkJCUNISU5BCi0KLTAwLTE4LTEzICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDE4MTMgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa+VuZSAyMjE4OAotCQkJCVNXRURFTgotCi0wMC0xOC0xNCAgIChoZXgpCQlNaXR1dG95byBDb3Jwb3JhdGlvbgotMDAxODE0ICAgICAoYmFzZSAxNikJCU1pdHV0b3lvIENvcnBvcmF0aW9uCi0JCQkJMjAtMSwgU2FrYWRvIDEtY2hvbWUsIFRha2F0c3Uta3UsCi0JCQkJS2F3YXNha2ktc2hpICAyMTMtODUzMwotCQkJCUpBUEFOCi0KLTAwLTE4LTE1ICAgKGhleCkJCUdaIFRlY2hub2xvZ2llcywgSW5jLgotMDAxODE1ICAgICAoYmFzZSAxNikJCUdaIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCVJvb20gMSwgNUYuLCBOby45NCwgQmFvamhvbmcgUmQuCi0JCQkJU2luZGlhbiBDaXR5Ci0JCQkJVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTE2ICAgKGhleCkJCVViaXhvbiBDby4sIEx0ZC4KLTAwMTgxNiAgICAgKGJhc2UgMTYpCQlVYml4b24gQ28uLCBMdGQuCi0JCQkJQ2hlb25nZG9uZyBCdWlsZGluZyAyRgotCQkJCTEzNDQtMjkgU2VvY2hvIGRvbmcgU2VvY2hvIGt1Ci0JCQkJU2VvdWwgIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtMTcgICAoaGV4KQkJRC4gRS4gU2hhdyBSZXNlYXJjaCwgTExDCi0wMDE4MTcgICAgIChiYXNlIDE2KQkJRC4gRS4gU2hhdyBSZXNlYXJjaCwgTExDCi0JCQkJMTIwIFcuIDQ1dGggU3QuLCAzM3JkIEZsb29yCi0JCQkJTmV3IFlvcmsgTlkgMTAwMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTE4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTgxOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTE5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTgxOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTFBICAgKGhleCkJCUFWZXJNZWRpYSBJbmZvcm1hdGlvbiBJbmMuCi0wMDE4MUEgICAgIChiYXNlIDE2KQkJQVZlck1lZGlhIEluZm9ybWF0aW9uIEluYy4KLQkJCQk3RiwgTm8uIDEzNywgSmlhbiBZaSBSZC4sCi0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0xQiAgIChoZXgpCQlUYWlKaW4gTWV0YWwgQ28uLCBMdGQuCi0wMDE4MUIgICAgIChiYXNlIDE2KQkJVGFpSmluIE1ldGFsIENvLiwgTHRkLgotCQkJCSM5NS05LCBIYW5nZG9uZzctR2EsIEpvb25nLUd1Ci0JCQkJSW4gQ2hlb24gIDQwMC0wMzcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtMUMgICAoaGV4KQkJRXh0ZXJpdHkgTGltaXRlZAotMDAxODFDICAgICAoYmFzZSAxNikJCUV4dGVyaXR5IExpbWl0ZWQKLQkJCQlSaWRnZSBXYXksIEhpbGxlbmQgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlEYWxnZXR5IEJheQotCQkJCUR1bmZlcm1saW5lIEZpZmUgS1kxMSA5SkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC0xRCAgIChoZXgpCQlBU0lBIEVMRUNUUk9OSUNTIENPLixMVEQKLTAwMTgxRCAgICAgKGJhc2UgMTYpCQlBU0lBIEVMRUNUUk9OSUNTIENPLixMVEQKLQkJCQk2MjAtMyBET0NIRU9OLURPTkcKLQkJCQlHV0FOR1NBTi1HVQotCQkJCUdXQU5HSlUgIDUwNi0zMDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtMUUgICAoaGV4KQkJR0RYIFRlY2hub2xvZ2llcyBMdGQuCi0wMDE4MUUgICAgIChiYXNlIDE2KQkJR0RYIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJNjEtNjMgQmFjayBTbmVkZG9uIFN0cmVldAotCQkJCVBhaXNsZXkgUmVuZnJld3NoaXJlIFBBMyAyREQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC0xRiAgIChoZXgpCQlQYWxtbWljcm8gQ29tbXVuaWNhdGlvbnMKLTAwMTgxRiAgICAgKGJhc2UgMTYpCQlQYWxtbWljcm8gQ29tbXVuaWNhdGlvbnMKLQkJCQlSb29tIDA2MTEsIEJsZGcuQiBUc2luZ2h1YSBUb25nZmFuZyBUZWNobm9sb2d5IFBsYXphCi0JCQkJMSBXYW5nemh1YW5nIFJvYWQKLQkJCQlCZWlqaW5nICAxMDAwODMKLQkJCQlDSElOQQotCi0wMC0xOC0yMCAgIChoZXgpCQl3NW5ldHdvcmtzCi0wMDE4MjAgICAgIChiYXNlIDE2KQkJdzVuZXR3b3JrcwotCQkJCTQ4Mzg5IEZyZW1vbnQgQmx2ZAotCQkJCVN1aXRlIDEwNgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTIxICAgKGhleCkJCVNJTkRPUklDT0gKLTAwMTgyMSAgICAgKGJhc2UgMTYpCQlTSU5ET1JJQ09ICi0JCQkJMjc3LTIyLCAyZ2EsIFN1bmdzdS1kb25nLCBTdW5nZG9uZy1ndSwKLQkJCQlTZW91bCAgMTMzLTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC0yMiAgIChoZXgpCQlDRUMgVEVMRUNPTSBDTy4sTFRELgotMDAxODIyICAgICAoYmFzZSAxNikJCUNFQyBURUxFQ09NIENPLixMVEQuCi0JCQkJMTB0aEZMLkNFQyBCdWlsZGluZyw2IFpob25nZ3VhbmN1biBTb3V0aCBTdHJlZXQKLQkJCQlCZWlqaW5nICAxMDAwODYKLQkJCQlDSElOQQotCi0wMC0xOC0yMyAgIChoZXgpCQlEZWx0YSBFbGVjdHJvbmljcywgSW5jLgotMDAxODIzICAgICAoYmFzZSAxNikJCURlbHRhIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMTg2IFJ1ZXkgS3VhbmcgUm9hZCwgTmVpaHUsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTI0ICAgKGhleCkJCUtpbWFsZGkgRWxlY3Ryb25pY3MsIFMuTC4KLTAwMTgyNCAgICAgKGJhc2UgMTYpCQlLaW1hbGRpIEVsZWN0cm9uaWNzLCBTLkwuCi0JCQkJQ3RyYS4gZGUgUnVi7SwgMjkyIEIKLQkJCQlQb2wuIEluZC4gQ2FuIEd1aXRhcmQKLQkJCQlUZXJyYXNzYSBCYXJjZWxvbmEgMDgyMjgKLQkJCQlTUEFJTgotCi0wMC0xOC0yNSAgIChoZXgpCQlQUklWQVRFCi0wMDE4MjUgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTE4LTI2ICAgKGhleCkJCUNhbGUgQWNjZXNzIEFCCi0wMDE4MjYgICAgIChiYXNlIDE2KQkJQ2FsZSBBY2Nlc3MgQUIKLQkJCQlCb3ggMTMwNwotCQkJCVNvbG5hICBTRS0xNzEgMjUKLQkJCQlTV0VERU4KLQotMDAtMTgtMjcgICAoaGV4KQkJTkVDIFVOSUZJRUQgU09MVVRJT05TIE5FREVSTEFORCBCLlYuCi0wMDE4MjcgICAgIChiYXNlIDE2KQkJTkVDIFVOSUZJRUQgU09MVVRJT05TIE5FREVSTEFORCBCLlYuCi0JCQkJQU5UT04gUEhJTElQU1dFRyAxCi0JCQkJSElMVkVSU1VNIE5IIDEyMjNLWgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE4LTI4ICAgKGhleCkJCWUydiB0ZWNobm9sb2dpZXMgKFVLKSBsdGQuCi0wMDE4MjggICAgIChiYXNlIDE2KQkJZTJ2IHRlY2hub2xvZ2llcyAoVUspIGx0ZC4KLQkJCQkxMDYgV2F0ZXJob3VzZSBMYW5lCi0JCQkJQ2hlbG1zZm9yZCBFc3NleCBDTTEgMlFVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTgtMjkgICAoaGV4KQkJR2F0c29tZXRlcgotMDAxODI5ICAgICAoYmFzZSAxNikJCUdhdHNvbWV0ZXIKLQkJCQlDbGFlcyBUaWxseXdlZyAyCi0JCQkJSGFhcmxlbSBOb29yZC1Ib2xsYW5kIDIwMzEgQ1cKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xOC0yQSAgIChoZXgpCQlUYWl3YW4gVmlkZW8gJiBNb25pdG9yCi0wMDE4MkEgICAgIChiYXNlIDE2KQkJVGFpd2FuIFZpZGVvICYgTW9uaXRvcgotCQkJCTNGLCAxNDEgSmVuIEFpIFJkIFNlYy4gMwotCQkJCVRhaXBlaSBDaXR5ICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTJCICAgKGhleCkJCVNvZnRpZXIKLTAwMTgyQiAgICAgKGJhc2UgMTYpCQlTb2Z0aWVyCi0JCQkJVGlkaGFyIDMKLQkJCQlNaWxsZW5pdW0gYmxkZyBmbG9vciAxMQotCQkJCVJhJ2FuYW5hIG5vbmUgNDM2NjUKLQkJCQlJU1JBRUwKLQotMDAtMTgtMkMgICAoaGV4KQkJQXNjZW5kIE5ldHdvcmtzLCBJbmMuCi0wMDE4MkMgICAgIChiYXNlIDE2KQkJQXNjZW5kIE5ldHdvcmtzLCBJbmMuCi0JCQkJTm8uIDQgLSA0LCBMYW5lIDQxMywgQ2h1bmdDaGFuIFJvYWQsCi0JCQkJQmVuUXVhbyBDaXR5IFRhaXBlaSAyMjAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTJEICAgKGhleCkJCUFydGVjIEdyb3VwIE/cCi0wMDE4MkQgICAgIChiYXNlIDE2KQkJQXJ0ZWMgR3JvdXAgT9wKLQkJCQlU/HJpIDEwQwotCQkJCVRhbGxpbm4gSGFyanVtYWEgMTEzMTMKLQkJCQlFU1RPTklBCi0KLTAwLTE4LTJFICAgKGhleCkJCVhTdHJlYW1IRCwgTExDCi0wMDE4MkUgICAgIChiYXNlIDE2KQkJWFN0cmVhbUhELCBMTEMKLQkJCQk3OTAwQiBXZXN0cGFyayBEcml2ZQotCQkJCVN1aXRlIDIwMFQKLQkJCQlNY0xlYW4gVkEgMjIxMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTJGICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MkYgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTMwICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MzAgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTMxICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MzEgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTMyICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MzIgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTMzICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MzMgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTM0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDE4MzQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTM1ICAgKGhleCkJCVRob3JhdGVjIC8gSVRDCi0wMDE4MzUgICAgIChiYXNlIDE2KQkJVGhvcmF0ZWMgLyBJVEMKLQkJCQkyNjU2IFBhdHRvbiBSb2FkCi0JCQkJUm9zZXZpbGxlIE1OIDU1MTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0zNiAgIChoZXgpCQlSZWxpYW5jZSBFbGVjdHJpYyBMaW1pdGVkCi0wMDE4MzYgICAgIChiYXNlIDE2KQkJUmVsaWFuY2UgRWxlY3RyaWMgTGltaXRlZAotCQkJCTItMy0yIEZ1a3V1cmEsIEthbmF6YXdhLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjM2LTg2NDEKLQkJCQlKQVBBTgotCi0wMC0xOC0zNyAgIChoZXgpCQlVbml2ZXJzYWwgQUJJVCBDby4sIEx0ZC4KLTAwMTgzNyAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgQUJJVCBDby4sIEx0ZC4KLQkJCQk3RiwgTm8uIDMyMyBZYW5nZ3VhbmcgU3QuLAotCQkJCU5laWh1IFRhaXBlaSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTM4ICAgKGhleCkJCVBhbkFjY2VzcyBDb21tdW5pY2F0aW9ucyxJbmMuCi0wMDE4MzggICAgIChiYXNlIDE2KQkJUGFuQWNjZXNzIENvbW11bmljYXRpb25zLEluYy4KLQkJCQlGbG9vciA4LFRvd2VyIEIsR2xvYmFsIFRyYWRlIENlbnRlciwzNiBCZWlzYW5odWFuZG9uZ2x1LERvbmdjaGVuZyBEaXN0cmljdAotCQkJCUJlaWppbmcgMTAwMDEzCi0JCQkJQ0hJTkEKLQotMDAtMTgtMzkgICAoaGV4KQkJQ2lzY28tTGlua3N5cyBMTEMKLTAwMTgzOSAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzIExMQwotCQkJCTEyMSBUaGVvcnkKLQkJCQlJcnZpbmUgQ0EgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTNBICAgKGhleCkJCVdlc3RlbGwgVGVjaG5vbG9naWVzCi0wMDE4M0EgICAgIChiYXNlIDE2KQkJV2VzdGVsbCBUZWNobm9sb2dpZXMKLQkJCQk3NTAgTi4gQ29tbW9ucyBEci4KLQkJCQlBdXJvcmEgSUwgNjA1MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTNCICAgKGhleCkJCUNFTklUUyBDby4sIEx0ZC4KLTAwMTgzQiAgICAgKGJhc2UgMTYpCQlDRU5JVFMgQ28uLCBMdGQuCi0JCQkJM0YsIFlhbmdqYWUgQmxkZy4sIDI2NC0zCi0JCQkJWWFuZ2phZS1Eb25nLCBTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC0zQyAgIChoZXgpCQlFbmNvcmUgU29mdHdhcmUgTGltaXRlZAotMDAxODNDICAgICAoYmFzZSAxNikJCUVuY29yZSBTb2Z0d2FyZSBMaW1pdGVkCi0JCQkJNkYgTGVvIENvbXBsZXgKLQkJCQk0NCBSZXNpZGVuY3kgQ3Jvc3MgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwMDI1Ci0JCQkJSU5ESUEKLQotMDAtMTgtM0QgICAoaGV4KQkJVmVydGV4IExpbmsgQ29ycG9yYXRpb24KLTAwMTgzRCAgICAgKGJhc2UgMTYpCQlWZXJ0ZXggTGluayBDb3Jwb3JhdGlvbgotCQkJCU1laXRldHN1IEZ1ZG9zYW4gVGFrZWJhc2hpIEJsZGcgNkYKLQkJCQkzLTE1IEthbmRhIE5pc2hpa2ljaG8KLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMS0wMDU0Ci0JCQkJSkFQQU4KLQotMDAtMTgtM0UgICAoaGV4KQkJRGlnaWxlbnQsIEluYwotMDAxODNFICAgICAoYmFzZSAxNikJCURpZ2lsZW50LCBJbmMKLQkJCQkyMTUgRS4gTWFpbiBTdC4KLQkJCQlTdWl0ZSBECi0JCQkJUHVsbG1hbiBXQSA5OTE2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtM0YgICAoaGV4KQkJMldpcmUsIEluYwotMDAxODNGICAgICAoYmFzZSAxNikJCTJXaXJlLCBJbmMKLQkJCQkxNzA0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00MCAgIChoZXgpCQkzIFBob2VuaXgsIEluYy4KLTAwMTg0MCAgICAgKGJhc2UgMTYpCQkzIFBob2VuaXgsIEluYy4KLQkJCQkxMzEzNSBMZWUgSmFja3NvbiBId3kKLQkJCQlTdWl0ZSAzMzAKLQkJCQlGYWlyZmF4IFZpcmdpbmlhIDIyMDMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00MSAgIChoZXgpCQlIaWdoIFRlY2ggQ29tcHV0ZXIgQ29ycAotMDAxODQxICAgICAoYmFzZSAxNikJCUhpZ2ggVGVjaCBDb21wdXRlciBDb3JwCi0JCQkJMjMgSHNpbiBIdWEgUmQuCi0JCQkJVGFveXVhbiAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC00MiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxODQyICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwIFYKLQkJCQlERU5NQVJLCi0KLTAwLTE4LTQzICAgKGhleCkJCURhd2V2aXNpb24gTHRkCi0wMDE4NDMgICAgIChiYXNlIDE2KQkJRGF3ZXZpc2lvbiBMdGQKLQkJCQkxOTcgSGlnaCBTdHJlZXQKLQkJCQlDb3R0ZW5oYW0gQ2FtYnJpZGdlIENCNCA4UlgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC00NCAgIChoZXgpCQlIZWFkcyBVcCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTg0NCAgICAgKGJhc2UgMTYpCQlIZWFkcyBVcCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyMDMzIENoZW5uYXVsdCBEcml2ZSwgU3VpdGUgMTAwCi0JCQkJQ2Fycm9sbHRvbiBUZXhhcyA3NTAwNi01MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00NSAgIChoZXgpCQlOUEwgUHVsc2FyIEx0ZC4KLTAwMTg0NSAgICAgKGJhc2UgMTYpCQlOUEwgUHVsc2FyIEx0ZC4KLQkJCQlaYWhhcm92YSwgMThhCi0JCQkJUGVuemEgIDQ0MDA0NAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xOC00NiAgIChoZXgpCQlDcnlwdG8gUy5BLgotMDAxODQ2ICAgICAoYmFzZSAxNikJCUNyeXB0byBTLkEuCi0JCQkJVi4gSXBpcm91IDQ1Ci0JCQkJTWFyb3VzaSBBdGhlbnMgMTUxMjUKLQkJCQlHUkVFQ0UKLQotMDAtMTgtNDcgICAoaGV4KQkJQWNlTmV0IFRlY2hub2xvZ3kgSW5jLgotMDAxODQ3ICAgICAoYmFzZSAxNikJCUFjZU5ldCBUZWNobm9sb2d5IEluYy4KLQkJCQkxMzMgVmllbm5hIERyLgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00OCAgIChoZXgpCQlWZWNpbWEgTmV0d29ya3MgSW5jLgotMDAxODQ4ICAgICAoYmFzZSAxNikJCVZlY2ltYSBOZXR3b3JrcyBJbmMuCi0JCQkJMTUwIENhcmRpbmFsIFBsYWNlCi0JCQkJU2Fza2F0b29uIFNrIFM3TCA2SDcKLQkJCQlDQU5BREEKLQotMDAtMTgtNDkgICAoaGV4KQkJUGlnZW9uIFBvaW50IFN5c3RlbXMKLTAwMTg0OSAgICAgKGJhc2UgMTYpCQlQaWdlb24gUG9pbnQgU3lzdGVtcwotCQkJCTIxOTEgUy4gRWwgQ2FtaW5vIFJlYWwKLQkJCQlTdWl0ZSAyMDkKLQkJCQlPY2VhbnNpZGUgQ0EgOTIwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTRBICAgKGhleCkJCUNhdGNoZXIsIEluYy4KLTAwMTg0QSAgICAgKGJhc2UgMTYpCQlDYXRjaGVyLCBJbmMuCi0JCQkJNTg2NCBPd2VucyBBdmUuCi0JCQkJU3VpdGUgMTAxCi0JCQkJQ2FybHNiYWQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTRCICAgKGhleCkJCUxhcyBWZWdhcyBHYW1pbmcsIEluYy4KLTAwMTg0QiAgICAgKGJhc2UgMTYpCQlMYXMgVmVnYXMgR2FtaW5nLCBJbmMuCi0JCQkJNDAwMCBXZXN0IEFsaSBCYWJhIExhbmUsIFN1aXRlIEQKLQkJCQlMYXMgVmVnYXMgTmV2YWRhIDg5MTE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00QyAgIChoZXgpCQlCb2dlbiBDb21tdW5pY2F0aW9ucwotMDAxODRDICAgICAoYmFzZSAxNikJCUJvZ2VuIENvbW11bmljYXRpb25zCi0JCQkJNTAgU3ByaW5nIFN0LgotCQkJCVJhbXNleSBOSiAwNzQ0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNEQgICAoaGV4KQkJTmV0Z2VhciBJbmMuCi0wMDE4NEQgICAgIChiYXNlIDE2KQkJTmV0Z2VhciBJbmMuCi0JCQkJNDUwMCBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNEUgICAoaGV4KQkJTGlhbmhlIFRlY2hub2xvZ2llcywgSW5jLgotMDAxODRFICAgICAoYmFzZSAxNikJCUxpYW5oZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkzRiwgIzExOSwgRGFIdSBTaGFuWmh1YW5nIFN0LgotCQkJCU5laWh1IERpc3RyaWN0IFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtNEYgICAoaGV4KQkJOCBXYXlzIFRlY2hub2xvZ3kgQ29ycC4KLTAwMTg0RiAgICAgKGJhc2UgMTYpCQk4IFdheXMgVGVjaG5vbG9neSBDb3JwLgotCQkJCTJGLTEsIE5vLiAyMTYsIFNlYy4gMywgUm9vc2V2ZWx0IFJkLgotCQkJCVRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTUwICAgKGhleCkJCVNlY2ZvbmUgS2Z0Ci0wMDE4NTAgICAgIChiYXNlIDE2KQkJU2VjZm9uZSBLZnQKLQkJCQk1MSBCZXJjc2VueWkgc3RyCi0JCQkJSmFzemJlcmVueSAgNTEwMAotCQkJCUhVTkdBUlkKLQotMDAtMTgtNTEgICAoaGV4KQkJU1dzb2Z0Ci0wMDE4NTEgICAgIChiYXNlIDE2KQkJU1dzb2Z0Ci0JCQkJMTM3NTUgU3VucmlzZSBWYWxsZXkgRHJpdmUsIFN1aXRlIDYwMAotCQkJCUhlcm5kb24gVkEgMjAxNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTUyICAgKGhleCkJCVN0b3JMaW5rIFNlbWljb25kdWN0b3JzLCBJbmMuCi0wMDE4NTIgICAgIChiYXNlIDE2KQkJU3RvckxpbmsgU2VtaWNvbmR1Y3RvcnMsIEluYy4KLQkJCQkxODA0IE4uIFNob3JlbGluZSBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAyNDAKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC01MyAgIChoZXgpCQlBdGVyYSBOZXR3b3JrcyBMVEQuCi0wMDE4NTMgICAgIChiYXNlIDE2KQkJQXRlcmEgTmV0d29ya3MgTFRELgotCQkJCTMxLCBIYWJhcnplbCBTdC4KLQkJCQlSYW1hdCBIYWNoYXlhbAotCQkJCVRlbC1Bdml2ICA2OTcxMAotCQkJCUlTUkFFTAotCi0wMC0xOC01NCAgIChoZXgpCQlBcmdhcmQgQ28uLCBMdGQKLTAwMTg1NCAgICAgKGJhc2UgMTYpCQlBcmdhcmQgQ28uLCBMdGQKLQkJCQkyNTcxIExhcmRwcmFvIFJkLgotCQkJCXdhbmd0aG9uZ2xhbmcgQmFuZ2tvayAxMDMxMAotCQkJCVRIQUlMQU5ECi0KLTAwLTE4LTU1ICAgKGhleCkJCUFlcm9tYXJpdGltZSBTeXN0ZW1iYXUgR21iSAotMDAxODU1ICAgICAoYmFzZSAxNikJCUFlcm9tYXJpdGltZSBTeXN0ZW1iYXUgR21iSAotCQkJCUx1ZHdpZy1FcmhhcmQtU3RyLiAxNgotCQkJCUQtODUzNzUgTmV1ZmFocm4gCi0JCQkJR0VSTUFOWQotCi0wMC0xOC01NiAgIChoZXgpCQlFeWVGaSwgSW5jCi0wMDE4NTYgICAgIChiYXNlIDE2KQkJRXllRmksIEluYwotCQkJCTE0OSBDb21tb253ZWFsdGggRHJpdmUKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC01NyAgIChoZXgpCQlVbmlsZXZlciBSJkQKLTAwMTg1NyAgICAgKGJhc2UgMTYpCQlVbmlsZXZlciBSJkQKLQkJCQlCbGRnLiA1MAotCQkJCVNoYXJuYnJvb2sKLQkJCQlCZWRmb3JkIEJlZGZvcmRzaGlyZSBNSzQ0IDFMUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE4LTU4ICAgKGhleCkJCVRhZ01hc3RlciBBQgotMDAxODU4ICAgICAoYmFzZSAxNikJCVRhZ01hc3RlciBBQgotCQkJCUtyb25ib3Jnc2dy5G5kIDEKLQkJCQlLaXN0YSBTdG9ja2hvbG0gUy0xNjQ4NwotCQkJCVNXRURFTgotCi0wMC0xOC01OSAgIChoZXgpCQlTdHJhd2JlcnJ5IExpbnV4IENvLixMdGQuCi0wMDE4NTkgICAgIChiYXNlIDE2KQkJU3RyYXdiZXJyeSBMaW51eCBDby4sTHRkLgotCQkJCTEtMjgtOC0yMDQgSGlnYXNoaWF5YXNlCi0JCQkJQWRhY2hpa3UgVG9reW8gMTIwLTAwMDQKLQkJCQlKQVBBTgotCi0wMC0xOC01QSAgIChoZXgpCQl1Q29udHJvbCwgSW5jLgotMDAxODVBICAgICAoYmFzZSAxNikJCXVDb250cm9sLCBJbmMuCi0JCQkJNTkxNCBXLiBDb3VydHlhcmQgRHJpdmUKLQkJCQlTdWl0ZSAyMTAKLQkJCQlBdXN0aW4gVFggNzg3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTVCICAgKGhleCkJCU5ldHdvcmsgQ2hlbWlzdHJ5LCBJbmMKLTAwMTg1QiAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIENoZW1pc3RyeSwgSW5jCi0JCQkJMTgwNCBFbWJhcmNhZGVybyBSZAotCQkJCVBhbG8gQWx0byBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNUMgICAoaGV4KQkJRURTIExhYiBQdGUgTHRkCi0wMDE4NUMgICAgIChiYXNlIDE2KQkJRURTIExhYiBQdGUgTHRkCi0JCQkJMjAgQXllciBSYWphaCBDcmVzY2VudAotCQkJCSMwOC0yNgotCQkJCTEzOTk2NAotCQkJCVNJTkdBUE9SRQotCi0wMC0xOC01RCAgIChoZXgpCQlUQUlHVUVOIFRFQ0hOT0xPR1kgKFNIRU4tWkhFTikgQ08uLCBMVEQuCi0wMDE4NUQgICAgIChiYXNlIDE2KQkJVEFJR1VFTiBURUNITk9MT0dZIChTSEVOLVpIRU4pIENPLiwgTFRELgotCQkJCU5vLiAyMywgVGhlIFRoaXJkIEluZHVzdHJpYWwgUGFyayBvZiBYaWEgVmlsbGFnZSwKLQkJCQlHb25nbWluZywgQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gQ2l0eSwgR3Vhbmdkb25nLCA4MTUxMDYKLQkJCQlDSElOQQotCi0wMC0xOC01RSAgIChoZXgpCQlOZXh0ZXJtIEluYy4KLTAwMTg1RSAgICAgKGJhc2UgMTYpCQlOZXh0ZXJtIEluYy4KLQkJCQkxLTEyLTMsIFNoaWJhdXJhLCBNaW5hdG8ta3UsCi0JCQkJVG9reW8gIDEwNS0wMDIzCi0JCQkJSkFQQU4KLQotMDAtMTgtNUYgICAoaGV4KQkJVEFDIEluYy4KLTAwMTg1RiAgICAgKGJhc2UgMTYpCQlUQUMgSW5jLgotCQkJCTY2IE5pc2hpaXNoaWdhdHN1Ym9jaG8gTmlzaGluYW5hanlvIFNoaW1vZ3lva3UKLQkJCQlLeW90byAgNjAwLTg4OTYKLQkJCQlKQVBBTgotCi0wMC0xOC02MCAgIChoZXgpCQlTSU0gVGVjaG5vbG9neSBHcm91cCBTaGFuZ2hhaSBTaW1jb20gTHRkLiwKLTAwMTg2MCAgICAgKGJhc2UgMTYpCQlTSU0gVGVjaG5vbG9neSBHcm91cCBTaGFuZ2hhaSBTaW1jb20gTHRkLiwKLQkJCQlTSU0gVGVjaG5vbG9neSBidWlsZGluZywKLQkJCQk3MDAgWWlzaGFuIFJkLCBTaGFuZ2hhaSAyMDAyMzMKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMTgtNjEgICAoaGV4KQkJT29tYSwgSW5jLgotMDAxODYxICAgICAoYmFzZSAxNikJCU9vbWEsIEluYy4KLQkJCQk1NTUgVW5pdmVyc2l0eSBBdmVudWUKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTYyICAgKGhleCkJCVNlYWdhdGUgVGVjaG5vbG9neQotMDAxODYyICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neQotCQkJCTEyODAgRGlzYyBEcml2ZQotCQkJCVNoYWtvcGVlIE1OIDU1Mzc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC02MyAgIChoZXgpCQlWZXJpdGVjaCBFbGVjdHJvbmljcyBMaW1pdGVkCi0wMDE4NjMgICAgIChiYXNlIDE2KQkJVmVyaXRlY2ggRWxlY3Ryb25pY3MgTGltaXRlZAotCQkJCThGLCA2NywgU2VjLiAxLCBaaG9uZ3NoYW4gUm9hZCwgWGluemh1YW5nLAotCQkJCVRhaXBlaSAgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC02NCAgIChoZXgpCQlDeWJlY3RlYyBJbmMuCi0wMDE4NjQgICAgIChiYXNlIDE2KQkJQ3liZWN0ZWMgSW5jLgotCQkJCTczMCwgcnVlIENvbW1lcmNpYWxlCi0JCQkJU3VpdGUgMjAwCi0JCQkJU3QtSmVhbi1DaHJ5c29zdG9tZSBRQyBHNlogMkM1Ci0JCQkJQ0FOQURBCi0KLTAwLTE4LTY1ICAgKGhleCkJCVNpZW1lbnMgSGVhbHRoY2FyZSBEaWFnbm9zdGljcyBNYW51ZmFjdHVyaW5nIEx0ZAotMDAxODY1ICAgICAoYmFzZSAxNikJCVNpZW1lbnMgSGVhbHRoY2FyZSBEaWFnbm9zdGljcyBNYW51ZmFjdHVyaW5nIEx0ZAotCQkJCU5vcnRoZXJuIFJvYWQKLQkJCQlDaGlsdG9uIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJU3VkYnVyeSBTdWZmb2xrIEMwMTAgMlhRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTgtNjYgICAoaGV4KQkJTGV1dHJvbiBWaXNpb24KLTAwMTg2NiAgICAgKGJhc2UgMTYpCQlMZXV0cm9uIFZpc2lvbgotCQkJCUluZHVzdHJpZXN0cmFzc2UgNTcKLQkJCQlHbGF0dGJydWdnIFpIIDgxNTIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xOC02NyAgIChoZXgpCQlFdm9sdXRpb24gUm9ib3RpY3MgUmV0YWlsCi0wMDE4NjcgICAgIChiYXNlIDE2KQkJRXZvbHV0aW9uIFJvYm90aWNzIFJldGFpbAotCQkJCTQzMyBOLiBGYWlyIE9ha3MgQXZlCi0JCQkJUGFzYWRlbmEgQ0EgOTExMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTY4ICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YSwgQSBDaXNjbyBDb21wYW55Ci0wMDE4NjggICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBBIENpc2NvIENvbXBhbnkKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNjkgICAoaGV4KQkJS0lOR0pJTQotMDAxODY5ICAgICAoYmFzZSAxNikJCUtJTkdKSU0KLQkJCQlOby4xMC0xOCwyLUNob21lCi0JCQkJSGlnYXNoaS1LYW5kYQotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xOC02QSAgIChoZXgpCQlHbG9iYWwgTGluayBEaWdpdGFsIFRlY2hub2xvZ3kgQ28sLkxURAotMDAxODZBICAgICAoYmFzZSAxNikJCUdsb2JhbCBMaW5rIERpZ2l0YWwgVGVjaG5vbG9neSBDbywuTFRECi0JCQkJUWliYW95aWRpbmcgSW5kLkFyZWEKLQkJCQlMaXVjaG9uZ3dlaSBXYW5qaWFuZyB0b3duCi0JCQkJRG9uZ2d1YW4gR3Vhbmdkb25nIDUyMzA1MQotCQkJCUNISU5BCi0KLTAwLTE4LTZCICAgKGhleCkJCVNhbWJ1IENvbW11bmljcyBDTy4sIExURC4KLTAwMTg2QiAgICAgKGJhc2UgMTYpCQlTYW1idSBDb21tdW5pY3MgQ08uLCBMVEQuCi0JCQkJMzhCLTFMIE5hbWRvbmcgSW5kdXN0cmlhbCBDb21wbGV4Ci0JCQkJNjI2IE5hbWNob24tZG9uZywgTmFtZG9uZy1ndQotCQkJCUluY2hlb24gIDQwNS0xMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtNkMgICAoaGV4KQkJTmVvbm9kZSBBQgotMDAxODZDICAgICAoYmFzZSAxNikJCU5lb25vZGUgQUIKLQkJCQlCaWJsaW90ZWtzZ2F0YW4gMTEsIDFzdCBmbG9vcgotCQkJCVN0b2NraG9sbSAgUy0xMTEgNDYKLQkJCQlTV0VERU4KLQotMDAtMTgtNkQgICAoaGV4KQkJWmhlbmppYW5nIFNhcHBoaXJlIEVsZWN0cm9uaWMgSW5kdXN0cnkgQ08uCi0wMDE4NkQgICAgIChiYXNlIDE2KQkJWmhlbmppYW5nIFNhcHBoaXJlIEVsZWN0cm9uaWMgSW5kdXN0cnkgQ08uCi0JCQkJV2VpIFNhbiBSb2FkLERpbmdtYW8gRGV2ZWxvcCBBcmVhCi0JCQkJemhlbmppYW5nIGppYW5nc3UgMjEyMDA5Ci0JCQkJQ0hJTkEKLQotMDAtMTgtNkUgICAoaGV4KQkJM0NvbSBMdGQKLTAwMTg2RSAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cy4gSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE4LTZGICAgKGhleCkJCVNldGhhIEluZHVzdHJpYSBFbGV0cm9uaWNhIExUREEKLTAwMTg2RiAgICAgKGJhc2UgMTYpCQlTZXRoYSBJbmR1c3RyaWEgRWxldHJvbmljYSBMVERBCi0JCQkJUnVhIEFsdmFybyBkZSBNYWNlZG8gMTM0Ci0JCQkJUGFyYWRhIGRlIEx1Y2FzCi0JCQkJUmlvIGRlIEphbmVpcm8gUkogMjEuMjUwLTYyMAotCQkJCUJSQVpJTAotCi0wMC0xOC03MCAgIChoZXgpCQlFMjggU2hhbmdoYWkgTGltaXRlZAotMDAxODcwICAgICAoYmFzZSAxNikJCUUyOCBTaGFuZ2hhaSBMaW1pdGVkCi0JCQkJMi9GIEVhc3Rlcm4gVG93ZXIKLQkJCQk2ODkgQmVpamluZyBSb2FkIChFYXN0KQotCQkJCVNoYW5naGFpICAyMDAwMDEKLQkJCQlDSElOQQotCi0wMC0xOC03MSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMTg3MSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzIgICAoaGV4KQkJRXhwZXJ0aXNlIEVuZ2luZWVyaW5nCi0wMDE4NzIgICAgIChiYXNlIDE2KQkJRXhwZXJ0aXNlIEVuZ2luZWVyaW5nCi0JCQkJNDE4NiBTb3JyZW50byBWYWxsZXkgQmx2ZCBTdWl0ZSAtSgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxODczICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxODc0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzUgICAoaGV4KQkJQW5hQ2lzZSBUZXN0bm9sb2d5IFB0ZSBMdGQKLTAwMTg3NSAgICAgKGJhc2UgMTYpCQlBbmFDaXNlIFRlc3Rub2xvZ3kgUHRlIEx0ZAotCQkJCTMgQmlzaGFuIFBsYWNlICMwMi0wNgotCQkJCUNQRiBCaXNoYW4gQnVpbGRpbmcKLQkJCQk1Nzk4MzgKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTgtNzYgICAoaGV4KQkJV293V2VlIEx0ZC4KLTAwMTg3NiAgICAgKGJhc2UgMTYpCQlXb3dXZWUgTHRkLgotCQkJCTkyIEdyYW52aWxsZSBSZC4gU3VpdGUgMzAxQS1DCi0JCQkJRW5lcmd5IFBsYXphCi0JCQkJVC5TLlQuIEVhc3QgS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTgtNzcgICAoaGV4KQkJQW1wbGV4IEEvUwotMDAxODc3ICAgICAoYmFzZSAxNikJCUFtcGxleCBBL1MKLQkJCQlTaWxrZWJvcmd2ZWogMgotCQkJCUFhcmh1cyBDICA4MDAwCi0JCQkJREVOTUFSSwotCi0wMC0xOC03OCAgIChoZXgpCQlNYWNrd2FyZSBHbWJICi0wMDE4NzggICAgIChiYXNlIDE2KQkJTWFja3dhcmUgR21iSAotCQkJCVNjaORuemxlIDEzCi0JCQkJV2FpYmxpbmdlbiBCYWRlbi1X/HJ0dGVtYmVyZyA3MTMzMgotCQkJCUdFUk1BTlkKLQotMDAtMTgtNzkgICAoaGV4KQkJZFN5cwotMDAxODc5ICAgICAoYmFzZSAxNikJCWRTeXMKLQkJCQlTb2VmbGluZ2VyIFN0ci4gMTAwCi0JCQkJVWxtIEJXIDg5MDc3Ci0JCQkJR0VSTUFOWQotCi0wMC0xOC03QSAgIChoZXgpCQlXaXJlbW9sZAotMDAxODdBICAgICAoYmFzZSAxNikJCVdpcmVtb2xkCi0JCQkJNjAgV29vZGxhd24gU3QuCi0JCQkJV2VzdCBIYXJ0Zm9yZCBDVCAwNjExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtN0IgICAoaGV4KQkJNE5TWVMgQ28uIEx0ZC4KLTAwMTg3QiAgICAgKGJhc2UgMTYpCQk0TlNZUyBDby4gTHRkLgotCQkJCTNGLCBIYW5hIEJsZGcKLQkJCQkxMTgtMiwgT3J5dS1Eb25nCi0JCQkJR3Vyby1HdSBTZW91bCAxNTItMTAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTdDICAgKGhleCkJCUlOVEVSQ1JPU1MsIExMQwotMDAxODdDICAgICAoYmFzZSAxNikJCUlOVEVSQ1JPU1MsIExMQwotCQkJCU5vdm9zZWxvdiBzdHIuLCA1OC83Ci0JCQkJUnlhemFuICAzOTAwNDkKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTgtN0QgICAoaGV4KQkJQXJtb3JsaW5rIHNoYW5naGFpIENvLiBMdGQKLTAwMTg3RCAgICAgKGJhc2UgMTYpCQlBcm1vcmxpbmsgc2hhbmdoYWkgQ28uIEx0ZAotCQkJCU5PIDUxNSwgU2hlbmdmdSByb2FkCi0JCQkJU2hhbmdoYWkgIDIwMTEwOAotCQkJCUNISU5BCi0KLTAwLTE4LTdFICAgKGhleCkJCVJHQiBTcGVjdHJ1bQotMDAxODdFICAgICAoYmFzZSAxNikJCVJHQiBTcGVjdHJ1bQotCQkJCTk1MCBNYXJpbmEgVmlsbGFnZSBQa3d5Ci0JCQkJQWxhbWVkYSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtN0YgICAoaGV4KQkJWk9ESUFORVQKLTAwMTg3RiAgICAgKGJhc2UgMTYpCQlaT0RJQU5FVAotCQkJCTIzLCBydWUgZGVzIEZyYWlzZXR0ZXMKLQkJCQlQQUxBSVNFQVUgRVNTT05ORSA5MTEyMAotCQkJCUZSQU5DRQotCi0wMC0xOC04MCAgIChoZXgpCQlNYXhpbSBJbnRlZ3JhdGVkIENpcmN1aXRzCi0wMDE4ODAgICAgIChiYXNlIDE2KQkJTWF4aW0gSW50ZWdyYXRlZCBDaXJjdWl0cwotCQkJCTI5MDAgTGFrZXNpZGUgRHJpdmUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtODEgICAoaGV4KQkJQnV5YW5nIEVsZWN0cm9uaWNzIEluZHVzdHJpYWwgQ28uLCBMdGQKLTAwMTg4MSAgICAgKGJhc2UgMTYpCQlCdXlhbmcgRWxlY3Ryb25pY3MgSW5kdXN0cmlhbCBDby4sIEx0ZAotCQkJCTQzNC0xNDAsIE9yeXUtRG9uZwotCQkJCVNlby1LdQotCQkJCUluY2hlb24gIDQwNC0zMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtODIgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMTg4MiAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCUYxLTIwLFNlY3Rpb24gRixIdWF3ZWkgQmFzZSxCYW50aWFuLCBMb25nZ2FuZyBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi0wMC0xOC04MyAgIChoZXgpCQlGT1JNT1NBMjEgSU5DLgotMDAxODgzICAgICAoYmFzZSAxNikJCUZPUk1PU0EyMSBJTkMuCi0JCQkJOEYtNiwgTk8uMzUxLCBDSFVORyBTSEFOIFJELiwgU0VDLjIKLQkJCQlDSFVORyBITyBDSVRZCi0JCQkJVEFJUEVJICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTg0ICAgKGhleCkJCUZPTgotMDAxODg0ICAgICAoYmFzZSAxNikJCUZPTgotCQkJCUF2ZGEuIEJydXNlbGFzLCBuLiA3LCBQbGFudGEgMywgQWxjb2JlbmRhcwotCQkJCU1hZHJpZCAyODEwMAotCQkJCVNQQUlOCi0KLTAwLTE4LTg1ICAgKGhleCkJCUF2aWdpbG9uIENvcnBvcmF0aW9uCi0wMDE4ODUgICAgIChiYXNlIDE2KQkJQXZpZ2lsb24gQ29ycG9yYXRpb24KLQkJCQlCb3ggMzc4LCAxMDEgLSAxMDAxIFdlc3QgQnJvYWR3YXkKLQkJCQlWYW5jb3V2ZXIgQkMgVjZIIDRFNAotCQkJCUNBTkFEQQotCi0wMC0xOC04NiAgIChoZXgpCQlFTC1URUNILCBJTkMuCi0wMDE4ODYgICAgIChiYXNlIDE2KQkJRUwtVEVDSCwgSU5DLgotCQkJCUEtNzExLCBXT09MSU0gTElPTidTIFZBTExFWSwgMzcxLTI4Ci0JCQkJR0FTQU4tRE9ORywgR0VVTUNIRU9OLUdVLAotCQkJCVNFT1VMICAxNTAtODM0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTg3ICAgKGhleCkJCU1ldGFzeXN0ZW0gU3BBCi0wMDE4ODcgICAgIChiYXNlIDE2KQkJTWV0YXN5c3RlbSBTcEEKLQkJCQlWaWEgT2JlcmRhbiAxNgotCQkJCVJlZ2dpbyBFbWlsaWEgUkUgNDIxMDAKLQkJCQlJVEFMWQotCi0wMC0xOC04OCAgIChoZXgpCQlHT1RJVkUgYS5zLgotMDAxODg4ICAgICAoYmFzZSAxNikJCUdPVElWRSBhLnMuCi0JCQkJWuFtb2Nr4SAzNAotCQkJCUJyYXRpc2xhdmEgIDgxMTAxCi0JCQkJU0xPVkFLSUEKLQotMDAtMTgtODkgICAoaGV4KQkJV2luTmV0IFNvbHV0aW9ucyBMaW1pdGVkCi0wMDE4ODkgICAgIChiYXNlIDE2KQkJV2luTmV0IFNvbHV0aW9ucyBMaW1pdGVkCi0JCQkJUm04MDQsIEtvcm5oaWxsIE1ldHJvIFRvd2VyLCBRdWFycnkgQmF5Ci0JCQkJSEsgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE4LThBICAgKGhleCkJCUluZmlub3ZhIExMQwotMDAxODhBICAgICAoYmFzZSAxNikJCUluZmlub3ZhIExMQwotCQkJCTUxIFN0b3V0cyBMYW5lLCBVbml0IDEgJiAyCi0JCQkJTW9ubW91dGggSnVuY3Rpb24gTmV3IEplcnNleSAwODg1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtOEIgICAoaGV4KQkJRGVsbAotMDAxODhCICAgICAoYmFzZSAxNikJCURlbGwKLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC04QyAgIChoZXgpCQlNb2JpbGUgQWN0aW9uIFRlY2hub2xvZ3kgSW5jLgotMDAxODhDICAgICAoYmFzZSAxNikJCU1vYmlsZSBBY3Rpb24gVGVjaG5vbG9neSBJbmMuCi0JCQkJNUYsIE5vLiAyMDUtMywgU2VjLiAzLCBCZWlzaGluIFJkLgotCQkJCVNoaW5kaWFuIENpdHksIFRhaXBlaSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC04RCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxODhEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICAxNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xOC04RSAgIChoZXgpCQlFa2FoYXUsIEluYy4KLTAwMTg4RSAgICAgKGJhc2UgMTYpCQlFa2FoYXUsIEluYy4KLQkJCQlUYWxsYmVyZ2lua2F0dSAyCi0JCQkJSEVMU0lOS0kgVVVTSU1BQSAwMDE4MAotCQkJCUZJTkxBTkQKLQotMDAtMTgtOEYgICAoaGV4KQkJTW9udGdvbWVyeSBUZWNobm9sb2d5LCBJbmMuCi0wMDE4OEYgICAgIChiYXNlIDE2KQkJTW9udGdvbWVyeSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJODAwIEVhc3QgQ29tbWVyY2UgU3RyZWV0Ci0JCQkJR3JlZW52aWxsZSBBTCAzNjAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtOTAgICAoaGV4KQkJUmFkaW9DT00sIHMuci5vLgotMDAxODkwICAgICAoYmFzZSAxNikJCVJhZGlvQ09NLCBzLnIuby4KLQkJCQlNaXNpa292YSAyMgotCQkJCUJyYXRpc2xhdmEgIDgxMSAwNgotCQkJCVNMT1ZBS0lBCi0KLTAwLTE4LTkxICAgKGhleCkJCVpob25nc2hhbiBHZW5lcmFsIEstbWF0ZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAxODkxICAgICAoYmFzZSAxNikJCVpob25nc2hhbiBHZW5lcmFsIEstbWF0ZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCTMvRiBCMSBCdWlsZGluZywgRnV3YW4gSW5kLiBab25lIFN1biBXZW4gRWFzdCBSb2FkCi0JCQkJWmhvbmdzaGFuIEd1YW5nZG9uZyA1Mjg0MDMKLQkJCQlDSElOQQotCi0wMC0xOC05MiAgIChoZXgpCQlhZHMtdGVjIEdtYkgKLTAwMTg5MiAgICAgKGJhc2UgMTYpCQlhZHMtdGVjIEdtYkgKLQkJCQlSYWlmZmVpc2Vuc3RyYXNzZSAxNAotCQkJCUxlaW5mZWxkZW4tRWNodGVyZGluZ2VuIEJhZGVuLVf8cnR0ZW1iZXJnIDcwNzcxCi0JCQkJR0VSTUFOWQotCi0wMC0xOC05MyAgIChoZXgpCQlTSEVOWkhFTiBQSE9UT04gQlJPQURCQU5EIFRFQ0hOT0xPR1kgQ08uLExURAotMDAxODkzICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIFBIT1RPTiBCUk9BREJBTkQgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJMi9GIEhpdmFjIEJMRCwydGggTGFuZ3NoYW4gUmQsTm9ydGggSGktVGVjaCBJbmR1c3RyaWFsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE4LTk0ICAgKGhleCkJCXppbW9jb20KLTAwMTg5NCAgICAgKGJhc2UgMTYpCQl6aW1vY29tCi0JCQkJM341RiwgQm9uZ1VpIEJsZGcsIDc2LTEsIE11bmplb25nLWRvbmcKLQkJCQlTb25ncGFndQotCQkJCVNlb3VsICAxMzgtMjAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTk1ICAgKGhleCkJCUhhbnN1biBUZWNobm9sb2dpZXMgSW5jLgotMDAxODk1ICAgICAoYmFzZSAxNikJCUhhbnN1biBUZWNobm9sb2dpZXMgSW5jLgotCQkJCVJvb20gMzAxLCBCdWlsZGluZyAxMDMsIFdhbmdqaW5na2VqaXl1YW4sIENoYW95YW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMTAyCi0JCQkJQ0hJTkEKLQotMDAtMTgtOTYgICAoaGV4KQkJR3JlYXQgV2VsbCBFbGVjdHJvbmljIExURAotMDAxODk2ICAgICAoYmFzZSAxNikJCUdyZWF0IFdlbGwgRWxlY3Ryb25pYyBMVEQKLQkJCQlUaGUgVGhpcmQgSW5kdXN0cmlhbCAgQXJlYQotCQkJCUd1YW5sYW4gVG93bgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMTAKLQkJCQlDSElOQQotCi0wMC0xOC05NyAgIChoZXgpCQlKRVNTLUxJTksgUFJPRFVDVFMgQ28uLCBMVEQKLTAwMTg5NyAgICAgKGJhc2UgMTYpCQlKRVNTLUxJTksgUFJPRFVDVFMgQ28uLCBMVEQKLQkJCQk5RiwgTm8uIDE3NiwgSmlhbi1ZaSBSZC4sIENodW5nIEhvIENpdHkKLQkJCQlUYWlwZWkgQ291bnR5ICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTk4ICAgKGhleCkJCUtJTkdTVEFURSBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotMDAxODk4ICAgICAoYmFzZSAxNikJCUtJTkdTVEFURSBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotCQkJCTEwRiwgTm8uNjktMTEsIFNlYy4yLCBDaHVuZyBDaGVuZyBFLiBSZC4sCi0JCQkJVGFtc2h1aSBUb3duCi0JCQkJVGFpcGVpIENvdW50eSAgMjUxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC05OSAgIChoZXgpCQlTaGVuWmhlbiBqaWVzaHVuIFNjaWVuY2UmVGVjaG5vbG9neSBJbmR1c3RyeSBDTyxMVEQuCi0wMDE4OTkgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gamllc2h1biBTY2llbmNlJlRlY2hub2xvZ3kgSW5kdXN0cnkgQ08sTFRELgotCQkJCUNoaW5hIEd1YW5nRG9uZyBzdGF0ZSBTaGVuemhlbiBDaXR5IEZ1dGlhbiBzZWN0aW9uIE5PMTcuIE1laWxpbiBSb2FkCi0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODA0OQotCQkJCUNISU5BCi0KLTAwLTE4LTlBICAgKGhleCkJCUhBTkEgTWljcm9uIEluYy4KLTAwMTg5QSAgICAgKGJhc2UgMTYpCQlIQU5BIE1pY3JvbiBJbmMuCi0JCQkJIzk1LTEgV29ubmFtLUxpLCBVbWJvbmctTXllb24KLQkJCQlDaHVuZy1OYW0sIFNvdXRoIEtvcmVhLgotCQkJCUFzYW4tQ2l0eSBDaHVuZy1OYW0gMzM2LTg2NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC05QiAgIChoZXgpCQlUaG9tc29uIEluYy4KLTAwMTg5QiAgICAgKGJhc2UgMTYpCQlUaG9tc29uIEluYy4KLQkJCQkxMDEgV2VzdCAxMDNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyOTAtMTEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtOUMgICAoaGV4KQkJV2VsZGV4IENvcnBvcmF0aW9uCi0wMDE4OUMgICAgIChiYXNlIDE2KQkJV2VsZGV4IENvcnBvcmF0aW9uCi0JCQkJNjc1MSBLYXRlbGxhIEF2ZW51ZQotCQkJCUN5cHJlc3MgQ0EgOTA2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTlEICAgKGhleCkJCU5hdmNhc3QgSW5jLgotMDAxODlEICAgICAoYmFzZSAxNikJCU5hdmNhc3QgSW5jLgotCQkJCVN1aXRlIDYxMiwgNjcxMSBNaXNzaXNzYXVnYSBSb2FkCi0JCQkJTWlzc2lzc2F1Z2EgT04gbTJyIDFhMwotCQkJCUNBTkFEQQotCi0wMC0xOC05RSAgIChoZXgpCQlPTU5JS0VZIEdtYkguCi0wMDE4OUUgICAgIChiYXNlIDE2KQkJT01OSUtFWSBHbWJILgotCQkJCUZlcmlodW1lcnN0cmFzc2UgMTMKLQkJCQlMaW56IFVwcGVyYXVzdHJpYSA0MDQwCi0JCQkJQVVTVFJJQQotCi0wMC0xOC05RiAgIChoZXgpCQlMZW5udGVrIENvcnBvcmF0aW9uCi0wMDE4OUYgICAgIChiYXNlIDE2KQkJTGVubnRlayBDb3Jwb3JhdGlvbgotCQkJCTRGLCAxMjUgR3VhbmdNaW5nIDNyZC4gUm9hZAotCQkJCUpodSBCZWkgSHNpbiBDaHUgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1BMCAgIChoZXgpCQlDaWVybWEgQXNjZW5zZXVycwotMDAxOEEwICAgICAoYmFzZSAxNikJCUNpZXJtYSBBc2NlbnNldXJzCi0JCQkJMTcgYXZlbnVlIGd1aWdsaW9uZGEgZGUgc2FpbnQgYWdhdGhlCi0JCQkJTmljZSBQQUNBIDA2MzAwCi0JCQkJRlJBTkNFCi0KLTAwLTE4LUExICAgKGhleCkJCVRpcWl0IENvbXB1dGVycywgSW5jLgotMDAxOEExICAgICAoYmFzZSAxNikJCVRpcWl0IENvbXB1dGVycywgSW5jLgotCQkJCTIyMTUgT2xkIFBhZ2UgTWlsbCBSZAotCQkJCVBhbG8gQWx0byBDQSA5NDMwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtQTIgICAoaGV4KQkJWElQIFRlY2hub2xvZ3kgQUIKLTAwMThBMiAgICAgKGJhc2UgMTYpCQlYSVAgVGVjaG5vbG9neSBBQgotCQkJCVBPIEJveCA0MzcKLQkJCQlK9m5r9nBpbmcgU3dlZGVuIFNFLSA1NTEgMTYKLQkJCQlTV0VERU4KLQotMDAtMTgtQTMgICAoaGV4KQkJWklQUFkgVEVDSE5PTE9HWSBDT1JQLgotMDAxOEEzICAgICAoYmFzZSAxNikJCVpJUFBZIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkxMEYsIE5vLiA1MCwgTWluY3l1YW4gUmQuLCBTaW5kaWFuIENpdHkKLQkJCQlUYWlwZWkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtQTQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxlIERldmljZXMKLTAwMThBNCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGUgRGV2aWNlcwotCQkJCTYwMCBOLiBId3kgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUE1ICAgKGhleCkJCUFEaWdpdCBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMThBNSAgICAgKGJhc2UgMTYpCQlBRGlnaXQgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJUm0gRDMwMkUsTm8uMTg1IDNGLTIsS3VyLVdvbmcgUm9hZCwKLQkJCQlMdW5nLVRhbmcsCi0JCQkJVGFvLXl1YW4sICAzMjUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUE2ICAgKGhleCkJCVBlcnNpc3RlbnQgU3lzdGVtcywgTExDCi0wMDE4QTYgICAgIChiYXNlIDE2KQkJUGVyc2lzdGVudCBTeXN0ZW1zLCBMTEMKLQkJCQkxMTggTi4gSG93YXJkIFN0LiAjNzIKLQkJCQlCYWx0aW1vcmUgTUQgMjEyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUE3ICAgKGhleCkJCVlvZ2dpZSBTZWN1cml0eSBTeXN0ZW1zIExURC4KLTAwMThBNyAgICAgKGJhc2UgMTYpCQlZb2dnaWUgU2VjdXJpdHkgU3lzdGVtcyBMVEQuCi0JCQkJUC5QLkJveCAxNTYKLQkJCQlCZXRoIEhhbGV2eSAgNDI4NzAKLQkJCQlJU1JBRUwKLQotMDAtMTgtQTggICAoaGV4KQkJQW5OZWFsIFRlY2hub2xvZ3kgSW5jLgotMDAxOEE4ICAgICAoYmFzZSAxNikJCUFuTmVhbCBUZWNobm9sb2d5IEluYy4KLQkJCQlOby4zMC0xMSwgV3VuaHVhIFJkLiwgTWluc3lvbmcKLQkJCQlDaGlheWkgIDYyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtQTkgICAoaGV4KQkJRXRoZXJuZXQgRGlyZWN0IENvcnBvcmF0aW9uCi0wMDE4QTkgICAgIChiYXNlIDE2KQkJRXRoZXJuZXQgRGlyZWN0IENvcnBvcmF0aW9uCi0JCQkJMTlGLE5vLjM0NSBDaHVuZyBIbyBSb2FkLCBZdW5nIEhvIENpdHkKLQkJCQlUYWlwZWkgIDIzNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtQUEgICAoaGV4KQkJUHJvdGVjIEZpcmUgRGV0ZWN0aW9uIHBsYwotMDAxOEFBICAgICAoYmFzZSAxNikJCVByb3RlYyBGaXJlIERldGVjdGlvbiBwbGMKLQkJCQlQcm90ZWMgSG91c2UKLQkJCQlDaHVyY2hpbGwgV2F5Ci0JCQkJTmVsc29uIExhbmNhc2hpcmUgQkI5IDZSVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE4LUFCICAgKGhleCkJCUJFSUpJTkcgTEhXVCBNSUNST0VMRUNUUk9OSUNTIElOQy4KLTAwMThBQiAgICAgKGJhc2UgMTYpCQlCRUlKSU5HIExIV1QgTUlDUk9FTEVDVFJPTklDUyBJTkMuCi0JCQkJMTgvRixRVUFOVFVNIFBMQVpBLE5PLjI3IFpISSBDSFVOIFJELixIQUkgRElBTiBESVNUUklDVCxCRUlKSU5HCi0JCQkJQ0hJTkEKLQotMDAtMTgtQUMgICAoaGV4KQkJU2hhbmdoYWkgSmlhbyBEYSBISVNZUyBUZWNobm9sb2d5IENvLiBMdGQuCi0wMDE4QUMgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgSmlhbyBEYSBISVNZUyBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJN0YgSGFvcmFuIEhpVGVjaCBCbGRnLiwgTm8uMTk1NCBIdWFzaGFuIFJvYWQKLQkJCQlzaGFuZ2hhaSB4dWh1aSAyMDAwMzAKLQkJCQlDSElOQQotCi0wMC0xOC1BRCAgIChoZXgpCQlOSURFQyBTQU5LWU8gQ09SUE9SQVRJT04KLTAwMThBRCAgICAgKGJhc2UgMTYpCQlOSURFQyBTQU5LWU8gQ09SUE9SQVRJT04KLQkJCQk1MzI5LCBTaGltb3N1d2EtbWFjaGksIFN1d2EtZ3VuCi0JCQkJTmFnYW5vIDM5My04NTExCi0JCQkJSkFQQU4KLQotMDAtMTgtQUUgICAoaGV4KQkJVFZUIENPLixMVEQKLTAwMThBRSAgICAgKGJhc2UgMTYpCQlUVlQgQ08uLExURAotCQkJCTUvRixOb3J0aCBCbG9jayxDRSBMaWdodGluZyBIb3VzZQotCQkJCUhpLXRlY2ggUGFyaywgTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlzaGVuemhlbiBndWFuZ2RvbmcgNTE4MDI2Ci0JCQkJQ0hJTkEKLQotMDAtMTgtQUYgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMThBRiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaS1DaXR5IEd5ZW9uZy1CdWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1CMCAgIChoZXgpCQlOb3J0ZWwKLTAwMThCMCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTgtQjEgICAoaGV4KQkJSUJNIENvcnAKLTAwMThCMSAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTIwNTEgTWlzc2lvbiBDb2xsZWdlIEJsdmQgCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUIyICAgKGhleCkJCUFERVVOSVMgUkYKLTAwMThCMiAgICAgKGJhc2UgMTYpCQlBREVVTklTIFJGCi0JCQkJMjgzIFJ1ZSBORUVMCi0JCQkJQ1JPTExFUyBJU0VSRSAzODkyMAotCQkJCUZSQU5DRQotCi0wMC0xOC1CMyAgIChoZXgpCQlURUMgV2l6SG9tZSBDby4sIEx0ZC4KLTAwMThCMyAgICAgKGJhc2UgMTYpCQlURUMgV2l6SG9tZSBDby4sIEx0ZC4KLQkJCQkxOGZsLiwgSW4tU29uZyBibGRnLiwgMTk0LTE1LAotCQkJCUhlb2h5dW4tRG9uZywgMUdhLCBKdW5nLUd1Ci0JCQkJU2VvdWwgIDEwMC05NTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtQjQgICAoaGV4KQkJRGF3b24gTWVkaWEgSW5jLgotMDAxOEI0ICAgICAoYmFzZSAxNikJCURhd29uIE1lZGlhIEluYy4KLQkJCQlSbTUwMy4gd29vbGltIGUtYml6IGNlbnRlciAxNzAtNSwgR3VybzNkb25nIEd1cm9ndSwKLQkJCQlTZW91bCAgMTUyLTc2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1CNSAgIChoZXgpCQlNYWduYSBDYXJ0YQotMDAxOEI1ICAgICAoYmFzZSAxNikJCU1hZ25hIENhcnRhCi0JCQkJTmFyaXRhd2VnIDEyNgotCQkJCUFtc3RlcmRhbSBOb29yZCBIb2xsYW5kIDEwNDMgQ0EKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xOC1CNiAgIChoZXgpCQlTM0MsIEluYy4KLTAwMThCNiAgICAgKGJhc2UgMTYpCQlTM0MsIEluYy4KLQkJCQkxMDEwIFN0ZXdhcnQgRHIuCi0JCQkJU3Vubnl2YWxlIENhbGlmb3JuaWEgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUI3ICAgKGhleCkJCUQzIExFRCwgTExDCi0wMDE4QjcgICAgIChiYXNlIDE2KQkJRDMgTEVELCBMTEMKLQkJCQkzODAgTW91bnRhaW4gUmQKLQkJCQlTdWl0ZSAxNDEyCi0JCQkJVW5pb24gQ2l0eSBOSiAwNzA4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtQjggICAoaGV4KQkJTmV3IFZvaWNlIEludGVybmF0aW9uYWwgQUcKLTAwMThCOCAgICAgKGJhc2UgMTYpCQlOZXcgVm9pY2UgSW50ZXJuYXRpb25hbCBBRwotCQkJCVN0LiBHYWxsZXJzdHJhc3NlIDgKLQkJCQlMYWNoZW4gU1ogODg1MwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE4LUI5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMThCOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUJBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMThCQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUJCICAgKGhleCkJCUVsaXdlbGwgQ29udHJvbHMgc3JsCi0wMDE4QkIgICAgIChiYXNlIDE2KQkJRWxpd2VsbCBDb250cm9scyBzcmwKLQkJCQlWaWEgZGVsbCdJbmR1c3RyaWEsIDE1Ci0JCQkJUGlldmUgZCdBbHBhZ28gQmVsbHVubyAzMjAxMAotCQkJCUlUQUxZCi0KLTAwLTE4LUJDICAgKGhleCkJCVpBTyBOVlAgQm9saWQKLTAwMThCQyAgICAgKGJhc2UgMTYpCQlaQU8gTlZQIEJvbGlkCi0JCQkJUGlvbmVyc2theWEgc3RyLiwgNAotCQkJCUtvcm9seW92IE1vc2NvdyByZWdpb24gMTQxMDcwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE4LUJEICAgKGhleCkJCVNIRU5aSEVOIERWQldPUkxEIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDE4QkQgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gRFZCV09STEQgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQkyTkQgRkxPT1IsIEJVSUxESU5HIEEsIFFJTkdIVSBYSU5RSUFPIElORFVTVFJZIEFSRUEsCi0JCQkJTE9OR0hVQSwgQkFPIEFOIERJU1RSSUNUCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTE4LUJFICAgKGhleCkJCUFOU0EgQ29ycG9yYXRpb24KLTAwMThCRSAgICAgKGJhc2UgMTYpCQlBTlNBIENvcnBvcmF0aW9uCi0JCQkJMTdGLiwgTm8uNzM4LCBDaHVuZyBDaGVuZyBSZC4KLQkJCQlDaHVuZyBIbyBDaXR5LCBUYWlwZWkgQ291bnR5ICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUJGICAgKGhleCkJCUVzc2VuY2UgVGVjaG5vbG9neSBTb2x1dGlvbiwgSW5jLgotMDAxOEJGICAgICAoYmFzZSAxNikJCUVzc2VuY2UgVGVjaG5vbG9neSBTb2x1dGlvbiwgSW5jLgotCQkJCUIxLCBOby4gMjA3LCBCZWlzaW4gUmQuLCBTZWMuIDMKLQkJCQlTaW5kaWFuLCBUYWlwZWkgQ291bnR5ICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUMwICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE4QzAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1DMSAgIChoZXgpCQlBbG1pdGVjIEluZm9ybeF0aWNhIGUgQ29t6XJjaW8gTHRkYS4KLTAwMThDMSAgICAgKGJhc2UgMTYpCQlBbG1pdGVjIEluZm9ybeF0aWNhIGUgQ29t6XJjaW8gTHRkYS4KLQkJCQk0NjEsIEZyYW5jaXNjbyBkZSBNb3JhaXMgU3QuCi0JCQkJU+NvIFBhdWxvICAwNDcxNC0wMTAKLQkJCQlCUkFaSUwKLQotMDAtMTgtQzIgICAoaGV4KQkJRmlyZXRpZGUsIEluYwotMDAxOEMyICAgICAoYmFzZSAxNikJCUZpcmV0aWRlLCBJbmMKLQkJCQkxNjc5NSBMYXJrIEF2LCBTdWl0ZSAyMDAKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUMzICAgKGhleCkJCUMmUyBNaWNyb3dhdmUKLTAwMThDMyAgICAgKGJhc2UgMTYpCQlDJlMgTWljcm93YXZlCi0JCQkJU3VudGVjaCBDaXR5IDh0aCBmbG9vciwgU2FuZyBEYWUgV29uLURvbmcsIEp1bmcgV29uLUd1Ci0JCQkJU3VuZ25hbSBHeXVuZ2dpLURvIDgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LUM0ICAgKGhleCkJCVJhYmEgVGVjaG5vbG9naWVzIExMQwotMDAxOEM0ICAgICAoYmFzZSAxNikJCVJhYmEgVGVjaG5vbG9naWVzIExMQwotCQkJCTg4MzAgU3RhbmZvcmQgQmx2ZCBTdWl0ZSAyMDUKLQkJCQlDb2x1bWJpYSBNYXJ5bGFuZCAyMTA0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtQzUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMThDNSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTgtQzYgICAoaGV4KQkJT1BXIEZ1ZWwgTWFuYWdlbWVudCBTeXN0ZW1zCi0wMDE4QzYgICAgIChiYXNlIDE2KQkJT1BXIEZ1ZWwgTWFuYWdlbWVudCBTeXN0ZW1zCi0JCQkJNjkwMCBTYW50YSBGZSBEcml2ZQotCQkJCUhvZGdraW5zIElsbGlub2lzIDYwNTI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1DNyAgIChoZXgpCQlSZWFsIFRpbWUgQXV0b21hdGlvbgotMDAxOEM3ICAgICAoYmFzZSAxNikJCVJlYWwgVGltZSBBdXRvbWF0aW9uCi0JCQkJMjgyNSBOIE1heWZhaXIgUmQgU3RlIDExCi0JCQkJV2F1d2F0b3NhIFdJIDUzMjIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1DOCAgIChoZXgpCQlJU09OQVMgSW5jLgotMDAxOEM4ICAgICAoYmFzZSAxNikJCUlTT05BUyBJbmMuCi0JCQkJNjMyNSBHdW5wYXJrIERyaXZlCi0JCQkJU3VpdGUgMTAxCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtQzkgICAoaGV4KQkJRU9wcyBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMThDOSAgICAgKGJhc2UgMTYpCQlFT3BzIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJvb20gMjAwMSwgRmFpcm1vbnQgSG91c2UsCi0JCQkJOCBDb3R0b24gVHJlZSBEcml2ZSwgQ2VudHJhbCwKLQkJCQlIb25nIEtvbmcgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xOC1DQSAgIChoZXgpCQlWaXByaW5ldCBHbWJICi0wMDE4Q0EgICAgIChiYXNlIDE2KQkJVmlwcmluZXQgR21iSAotCQkJCUJhc2lsaWthc3RyYXNzZSAzCi0JCQkJQmluZ2VuIGFtIFJoZWluICA1NTQxMQotCQkJCUdFUk1BTlkKLQotMDAtMTgtQ0IgICAoaGV4KQkJVGVjb2Jlc3QgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDE4Q0IgICAgIChiYXNlIDE2KQkJVGVjb2Jlc3QgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJNTMvRi4sQmxvY2sgQSxVbml0ZWQgUGxhemEsCi0JCQkJTm8uNTAyMixCaW4gSGUgUm9hZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMjYKLQkJCQlDSElOQQotCi0wMC0xOC1DQyAgIChoZXgpCQlBWElPSE0gU0FTCi0wMDE4Q0MgICAgIChiYXNlIDE2KQkJQVhJT0hNIFNBUwotCQkJCTEgUlVFIEQnQVJDVUVJTAotCQkJCU1PTlRST1VHRSAgOTIxMjAKLQkJCQlGUkFOQ0UKLQotMDAtMTgtQ0QgICAoaGV4KQkJRXJhZSBFbGVjdHJvbmljcyBJbmR1c3RyeSBDby4sIEx0ZAotMDAxOENEICAgICAoYmFzZSAxNikJCUVyYWUgRWxlY3Ryb25pY3MgSW5kdXN0cnkgQ28uLCBMdGQKLQkJCQkjMzcxLTUxLCBHYXNhbi1kb25nCi0JCQkJR2V1bWNoZW4tZ3UgU2VvdWwgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1DRSAgIChoZXgpCQlEcmVhbXRlY2ggQ28uLCBMdGQKLTAwMThDRSAgICAgKGJhc2UgMTYpCQlEcmVhbXRlY2ggQ28uLCBMdGQKLQkJCQkjMzQwLTUsIFlhbmctZGFuZyBSaSwgSmlrLXNhbiBNeWVvbgotCQkJCUNoZW9uLWFuIHNpIENodW5nLU5hbSAzMzA4MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtQ0YgICAoaGV4KQkJQmFsZG9yIEVsZWN0cmljIENvbXBhbnkKLTAwMThDRiAgICAgKGJhc2UgMTYpCQlCYWxkb3IgRWxlY3RyaWMgQ29tcGFueQotCQkJCTYwMCBTLiBaZXJvIFN0LgotCQkJCUZvcnQgU21pdGggQVIgNzI5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUQwICAgKGhleCkJCUF0Um9hZCwgIEEgVHJpbWJsZSBDb21wYW55Ci0wMDE4RDAgICAgIChiYXNlIDE2KQkJQXRSb2FkLCAgQSBUcmltYmxlIENvbXBhbnkKLQkJCQk0NzA3MSBCYXlzaWRlIFBhcmt3YXkKLQkJCQlGcmVtb250IENhbGlmb3JuaWEgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUQxICAgKGhleCkJCVNpZW1lbnMgSG9tZSAmIE9mZmljZSBDb21tLiBEZXZpY2VzCi0wMDE4RDEgICAgIChiYXNlIDE2KQkJU2llbWVucyBIb21lICYgT2ZmaWNlIENvbW0uIERldmljZXMKLQkJCQk0ODQ5IEFscGhhIFJkLgotCQkJCURhbGxhcyBUZXhhcyA3NTI0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRDIgICAoaGV4KQkJSGlnaC1HYWluIEFudGVubmFzIExMQwotMDAxOEQyICAgICAoYmFzZSAxNikJCUhpZ2gtR2FpbiBBbnRlbm5hcyBMTEMKLQkJCQkxMTY3OSBTLiBDb3Jtb3JhbnQgQ2lyY2xlCi0JCQkJUGFya2VyIENPIDgwMTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1EMyAgIChoZXgpCQlURUFNQ0FTVAotMDAxOEQzICAgICAoYmFzZSAxNikJCVRFQU1DQVNUCi0JCQkJQ2VudHJlIEVzcGFjZSBQZXJmb3JtYW5jZQotCQkJCVNhaW50IEdyZWdvaXJlICAzNTc2OQotCQkJCUZSQU5DRQotCi0wMC0xOC1ENCAgIChoZXgpCQlVbmlmaWVkIERpc3BsYXkgSW50ZXJmYWNlIFNJRwotMDAxOEQ0ICAgICAoYmFzZSAxNikJCVVuaWZpZWQgRGlzcGxheSBJbnRlcmZhY2UgU0lHCi0JCQkJMTUyMDEgU1cgR3JlZW5icmllciBQYXJrd2F5Ci0JCQkJQmVhdmVydG9uIE9yZWdvbiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRDUgICAoaGV4KQkJUkVJR05DT00KLTAwMThENSAgICAgKGJhc2UgMTYpCQlSRUlHTkNPTQotCQkJCTE0RiBLYW1jbyBZYW5qYWUgVG93ZXIsIDk0OS0zCi0JCQkJRG9nb2sgMS1kb25nbSwgR2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtNzM5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LUQ2ICAgKGhleCkJCVN3aXJsbmV0IEEvUwotMDAxOEQ2ICAgICAoYmFzZSAxNikJCVN3aXJsbmV0IEEvUwotCQkJCURpcGxvbXZlaiAzODEKLQkJCQlMeW5nYnkgIERLLTI4MDAKLQkJCQlERU5NQVJLCi0KLTAwLTE4LUQ3ICAgKGhleCkJCUphdmFkIE5hdmlnYXRpb24gU3lzdGVtcyBJbmMuCi0wMDE4RDcgICAgIChiYXNlIDE2KQkJSmF2YWQgTmF2aWdhdGlvbiBTeXN0ZW1zIEluYy4KLQkJCQkxNzMxIFRlY2hub2xvZ3kgRHJpdmUsIFN1aXRlIDY4MAotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1EOCAgIChoZXgpCQlBUkNIIE1FVEVSIENvcnBvcmF0aW9uCi0wMDE4RDggICAgIChiYXNlIDE2KQkJQVJDSCBNRVRFUiBDb3Jwb3JhdGlvbgotCQkJCTRGLCBOby4zLTIsIEluZHVzdHJ5IEUuIFJkLgotCQkJCTksSHNpbmNodSBTY2llbmNlIFBhcmsKLQkJCQlIc2luY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUQ5ICAgKGhleCkJCVNhbnRvc2hhIEludGVybmF0b25hbCwgSW5jCi0wMDE4RDkgICAgIChiYXNlIDE2KQkJU2FudG9zaGEgSW50ZXJuYXRvbmFsLCBJbmMKLQkJCQkzODQzIFMuIEJyaXN0b2wgU3QuICMyNDIKLQkJCQlTYW50YSBBbmEgQ0EgOTI3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LURBICAgKGhleCkJCUFNQkVSIHdpcmVsZXNzIEdtYkgKLTAwMThEQSAgICAgKGJhc2UgMTYpCQlBTUJFUiB3aXJlbGVzcyBHbWJICi0JCQkJQWxiaW4tS29lYmlzLVN0ci4gMTgKLQkJCQlLb2VsbiAgNTExNDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE4LURCICAgKGhleCkJCUVQTCBUZWNobm9sb2d5IEx0ZAotMDAxOERCICAgICAoYmFzZSAxNikJCUVQTCBUZWNobm9sb2d5IEx0ZAotCQkJCUxvbmdEb25nLExvbmdnYW5nIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODExNgotCQkJCUNISU5BCi0KLTAwLTE4LURDICAgKGhleCkJCVByb3N0YXIgQ28uLCBMdGQuCi0wMDE4REMgICAgIChiYXNlIDE2KQkJUHJvc3RhciBDby4sIEx0ZC4KLQkJCQlBLTcwMyBUZWNobm90b3duLCAyNTAtMyBIYWd5ZS1kb25nLCBOb3dvbi1ndQotCQkJCVNlb3VsICAxMzktMjMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LUREICAgKGhleCkJCVNpbGljb25kdXN0IEVuZ2luZWVyaW5nIEx0ZAotMDAxOEREICAgICAoYmFzZSAxNikJCVNpbGljb25kdXN0IEVuZ2luZWVyaW5nIEx0ZAotCQkJCVBPIEJveCA3NC0yOTkKLQkJCQlNYXJrZXQgUmQKLQkJCQlBdWNrbGFuZCAgCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMTgtREUgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMThERSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTgtREYgICAoaGV4KQkJVGhlIE1vcmV5IENvcnBvcmF0aW9uCi0wMDE4REYgICAgIChiYXNlIDE2KQkJVGhlIE1vcmV5IENvcnBvcmF0aW9uCi0JCQkJMTAwIE1vcmV5IERyaXZlCi0JCQkJV29vZHJpZGdlIElMIDYwNTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1FMCAgIChoZXgpCQlBTkFWRU8KLTAwMThFMCAgICAgKGJhc2UgMTYpCQlBTkFWRU8KLQkJCQlMZXMgQ2FyculzIGR1IHBhcmMKLQkJCQkxMCBydWUgZGVzIFJvc2npcmlzdGVzCi0JCQkJQ0hBTVBBR05FIGF1IE1PTlQgRCdPUiBSaPRuZSBGLTY5NDEwCi0JCQkJRlJBTkNFCi0KLTAwLTE4LUUxICAgKGhleCkJCVZlcmtlcmsgU2VydmljZSBTeXN0ZW1lbgotMDAxOEUxICAgICAoYmFzZSAxNikJCVZlcmtlcmsgU2VydmljZSBTeXN0ZW1lbgotCQkJCU1vbGVudmxpZXQgMQotCQkJCVp3aWpuZHJlY2h0IFp1aWQtSG9sbGFuZCBOTC0zMzM1TEgKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xOC1FMiAgIChoZXgpCQlUb3BkYXRhIFNpc3RlbWFzIGRlIEF1dG9tYWNhbyBMdGRhCi0wMDE4RTIgICAgIChiYXNlIDE2KQkJVG9wZGF0YSBTaXN0ZW1hcyBkZSBBdXRvbWFjYW8gTHRkYQotCQkJCVJ1YSBEciBDYXJ2YWxobyBDaGF2ZXMsIDY2MgotCQkJCUN1cml0aWJhIFBSIDgwLjIyMC0wMTAKLQkJCQlCUkFaSUwKLQotMDAtMTgtRTMgICAoaGV4KQkJVmlzdWFsZ2F0ZSBTeXN0ZW1zLCBJbmMuCi0wMDE4RTMgICAgIChiYXNlIDE2KQkJVmlzdWFsZ2F0ZSBTeXN0ZW1zLCBJbmMuCi0JCQkJNjQgQmFrZXJzZmllbGQgU3RyZWV0Ci0JCQkJVG9yb250byBPbnRhcmlvIE0zSiAyVzcKLQkJCQlDQU5BREEKLQotMDAtMTgtRTQgICAoaGV4KQkJWUlHVUFORwotMDAxOEU0ICAgICAoYmFzZSAxNikJCVlJR1VBTkcKLQkJCQkzL0ZMLkluZHVzdHJ5IHpvbmUsRnV4aW5saW4sSGFuZ2NoZW5nLFhpeGlhbmcsQmFvYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI2Ci0JCQkJQ0hJTkEKLQotMDAtMTgtRTUgICAoaGV4KQkJQWRob2NvIEFHCi0wMDE4RTUgICAgIChiYXNlIDE2KQkJQWRob2NvIEFHCi0JCQkJVGVjaG5vcGFyawotCQkJCUphZWdlcnN0ci4gMgotCQkJCVdpbnRlcnRodXIgWkggQ0gtODQwNiAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xOC1FNiAgIChoZXgpCQlDb21wdXRlciBIYXJkd2FyZSBEZXNpZ24gU0lBCi0wMDE4RTYgICAgIChiYXNlIDE2KQkJQ29tcHV0ZXIgSGFyZHdhcmUgRGVzaWduIFNJQQotCQkJCUR6ZWx6YXZhcyAxMjBpCi0JCQkJUmlnYSAgTFYtMTAyMQotCQkJCUxBVFZJQQotCi0wMC0xOC1FNyAgIChoZXgpCQlDYW1lbyBDb21tdW5pY2F0aW9ucywgSU5DLgotMDAxOEU3ICAgICAoYmFzZSAxNikJCUNhbWVvIENvbW11bmljYXRpb25zLCBJTkMuCi0JCQkJTk8uNDIsIFNlYy4gNiwgTWluY3l1YW4gRS4gUmQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUU4ICAgKGhleCkJCUhhY2V0cm9uIENvcnBvcmF0aW9uCi0wMDE4RTggICAgIChiYXNlIDE2KQkJSGFjZXRyb24gQ29ycG9yYXRpb24KLQkJCQlOby4gNTQyLAotCQkJCVNlYy4xLCBZYW5nLUhVIFJkLAotCQkJCVlhbmctTWVpLCBUYW8tWXVhbiwgMzI2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1FOSAgIChoZXgpCQlOdW1hdGEgQ29ycG9yYXRpb24KLTAwMThFOSAgICAgKGJhc2UgMTYpCQlOdW1hdGEgQ29ycG9yYXRpb24KLQkJCQk4LTItMzkgbmFua28taGlnYXNoaQotCQkJCVN1bWlub2Uta3UKLQkJCQlPc2FrYS1zaGkgT3Nha2EtZnUgNTU5LTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xOC1FQSAgIChoZXgpCQlBbGx0ZWMgR21iSAotMDAxOEVBICAgICAoYmFzZSAxNikJCUFsbHRlYyBHbWJICi0JCQkJQW4gZGVyIFRyYXZlIDI3LTMxCi0JCQkJU2VsbXNkb3JmIE1lY2tsZW5idXJnLVZvcnBvbW1lcm4gMjM5MjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE4LUVCICAgKGhleCkJCUJyb1ZpcyBXaXJlbGVzcyBOZXR3b3JrcwotMDAxOEVCICAgICAoYmFzZSAxNikJCUJyb1ZpcyBXaXJlbGVzcyBOZXR3b3JrcwotCQkJCTE5OTI1IFN0ZXZlbnMgQ3JlZWsgQmx2ZAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRUMgICAoaGV4KQkJV2VsZGluZyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDE4RUMgICAgIChiYXNlIDE2KQkJV2VsZGluZyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMjQ3NzUgQ3Jlc3R2aWV3IENvdXJ0Ci0JCQkJRmFybWluZ3RvbiBIaWxscyBNSSA0ODMzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRUQgICAoaGV4KQkJQWNjdXRlY2ggVWx0cmFzeXN0ZW1zIENvLiwgTHRkLgotMDAxOEVEICAgICAoYmFzZSAxNikJCUFjY3V0ZWNoIFVsdHJhc3lzdGVtcyBDby4sIEx0ZC4KLQkJCQkxMUYtNCwgTm8uIDE1MCwKLQkJCQlDSElFTi1ZSSBST0FELAotCQkJCUNIVU5HLUhPIENJVFksIFRBSVBFSSBIU0lFTiwgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1FRSAgIChoZXgpCQlWaWRlb2xvZ3kgSW1hZ2luZyBTb2x1dGlvbnMsIEluYy4KLTAwMThFRSAgICAgKGJhc2UgMTYpCQlWaWRlb2xvZ3kgSW1hZ2luZyBTb2x1dGlvbnMsIEluYy4KLQkJCQkzNyBNIExhcmsgSW5kdXN0cmlhbCBQYXJrd2F5Ci0JCQkJR3JlZW52aWxsZSBSSSAwMjgyOC0zMDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1FRiAgIChoZXgpCQlFc2NhcGUgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMThFRiAgICAgKGJhc2UgMTYpCQlFc2NhcGUgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyNjE1IFBhY2lmaWMgQ29hc3QgSHd5Ci0JCQkJU3RlIDMyOQotCQkJCUhlcm1vc2EgQmVhY2ggQ0EgOTAyNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUYwICAgKGhleCkJCUpPWVRPVE8gQ28uLCBMdGQuCi0wMDE4RjAgICAgIChiYXNlIDE2KQkJSk9ZVE9UTyBDby4sIEx0ZC4KLQkJCQkzRiBTdW5nd29vIEJsZGcuIDcxNy0zLCBTb29zZW8tRG9uZwotCQkJCUthbmduYW0tR3UKLQkJCQlTZW91bCAgMTM1LTIyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1GMSAgIChoZXgpCQlDaHVuaWNoaSBEZW5zaGkgQ28uLExURC4KLTAwMThGMSAgICAgKGJhc2UgMTYpCQlDaHVuaWNoaSBEZW5zaGkgQ28uLExURC4KLQkJCQkxIERlbmppeWFtYQotCQkJCU5hcnVtaSBjaG8gTWlkb3JpIGt1Ci0JCQkJTmFnb3lhIEFpY2hpIDQ1OC04NTI1Ci0JCQkJSkFQQU4KLQotMDAtMTgtRjIgICAoaGV4KQkJQmVpamluZyBUaWFueXUgQ29tbXVuaWNhdGlvbiBFcXVpcG1lbnQgQ28uLCBMdGQKLTAwMThGMiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFRpYW55dSBDb21tdW5pY2F0aW9uIEVxdWlwbWVudCBDby4sIEx0ZAotCQkJCTI3dGggRmxvb3IsIFRlbmdkYSBQbGF6YQotCQkJCVhpemhpbWVuZ3dhaSBTdHJlZXQsIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwNDQKLQkJCQlDSElOQQotCi0wMC0xOC1GMyAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTAwMThGMyAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91Ci0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUY0ICAgKGhleCkJCUVPIFRFQ0hOSUNTIENvLiwgTHRkLgotMDAxOEY0ICAgICAoYmFzZSAxNikJCUVPIFRFQ0hOSUNTIENvLiwgTHRkLgotCQkJCTg2NC00LCBLd2FueWFuZyAyLURvbmcKLQkJCQlEb25nYW4tR3UKLQkJCQlBbnlhbmcgS3llb25nZ2ktRG8gNDMxLTA2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1GNSAgIChoZXgpCQlTaGVuemhlbiBTdHJlYW1pbmcgVmlkZW8gVGVjaG5vbG9neSBDb21wYW55IExpbWl0ZWQKLTAwMThGNSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBTdHJlYW1pbmcgVmlkZW8gVGVjaG5vbG9neSBDb21wYW55IExpbWl0ZWQKLQkJCQk1L0YsIEJsb2NrIDMsIFNvZnR3YXJlIFBhcnQgTm8uMSwgS2VqaSBNaWRkbGUgMiBSb2FkLAotCQkJCVNoZW56aGVuIEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrCi0JCQkJU2hlbnpoZW4gR2F1bmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE4LUY2ICAgKGhleCkJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0wMDE4RjYgICAgIChiYXNlIDE2KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3Ci0JCQkJRWRlZ2VtIEFudHdlcnAgQi0yNjUwCi0JCQkJQkVMR0lVTQotCi0wMC0xOC1GNyAgIChoZXgpCQlLYW1lbGVvbiBUZWNobm9sb2dpZXMKLTAwMThGNyAgICAgKGJhc2UgMTYpCQlLYW1lbGVvbiBUZWNobm9sb2dpZXMKLQkJCQkyMTcsIHJ1ZSBTdCBIb25vcukKLQkJCQlQYXJpcyAgNzUwMDEKLQkJCQlGUkFOQ0UKLQotMDAtMTgtRjggICAoaGV4KQkJQ2lzY28tTGlua3N5cyBMTEMKLTAwMThGOCAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ0EgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUY5ICAgKGhleCkJCVZWT05ELCBJbmMuCi0wMDE4RjkgICAgIChiYXNlIDE2KQkJVlZPTkQsIEluYy4KLQkJCQkzMDAwIEJyaWRnZSBQYXJrd2F5Ci0JCQkJU3VpdGUgMTAyCi0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1GQSAgIChoZXgpCQlZdXNoaW4gUHJlY2lzaW9uIEVxdWlwbWVudCBDby4sTHRkLgotMDAxOEZBICAgICAoYmFzZSAxNikJCVl1c2hpbiBQcmVjaXNpb24gRXF1aXBtZW50IENvLixMdGQuCi0JCQkJMTEtMjYwIEtPR0FIT05NQUNISQotCQkJCUZVU0hJTUktS1UKLQkJCQlLWU9UTyAgNjEyLTg0OTIgSkFQCi0JCQkJSkFQQU4KLQotMDAtMTgtRkIgICAoaGV4KQkJQ29tcHJvIFRlY2hub2xvZ3kKLTAwMThGQiAgICAgKGJhc2UgMTYpCQlDb21wcm8gVGVjaG5vbG9neQotCQkJCTMvRiBObyAxMiwgQWxsZXkgNiwgTGFuZSA0NSwgUGFvIFNoaW4gUmQKLQkJCQlIc2ludGllbiAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1GQyAgIChoZXgpCQlBbHRlYyBFbGVjdHJvbmljIEFHCi0wMDE4RkMgICAgIChiYXNlIDE2KQkJQWx0ZWMgRWxlY3Ryb25pYyBBRwotCQkJCUxlbmdnZW5iYWNoc3RyYXNzZSAzCi0JCQkJRmFocndlaWQgWvxyaWNoIENILTg5NTEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xOC1GRCAgIChoZXgpCQlPcHRpbWFsIFRlY2hub2xvZ2llcyBJbnRlcm5hdGlvbmFsIEluYy4KLTAwMThGRCAgICAgKGJhc2UgMTYpCQlPcHRpbWFsIFRlY2hub2xvZ2llcyBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQkxMiBTcGFuaXNoIE1haW4gRHJpdmUKLQkJCQlQTyBCb3ggRi00MjQwOS8zNTkKLQkJCQlGcmVlcG9ydCBHQkkgCi0JCQkJQkFIQU1BUwotCi0wMC0xOC1GRSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMThGRSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDYwMzA4Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRkYgICAoaGV4KQkJUG93ZXJRdWF0dHJvIENvLgotMDAxOEZGICAgICAoYmFzZSAxNikJCVBvd2VyUXVhdHRybyBDby4KLQkJCQlK4W5vcyB1LiAxNzUuCi0JCQkJQnVkYXBlc3QgIEgtMTE2MQotCQkJCUhVTkdBUlkKLQotMDAtMTktMDAgICAoaGV4KQkJSW50ZWxsaXZlcmVzZSAtIERCQSBWb2ljZWNvbQotMDAxOTAwICAgICAoYmFzZSAxNikJCUludGVsbGl2ZXJlc2UgLSBEQkEgVm9pY2Vjb20KLQkJCQk1OTAwIFdpbmR3YXJkIFBhcmt3YXkKLQkJCQlTdWl0ZSA1MDAKLQkJCQlBbHBoYXJldHRhIEdlb3JnaWEgMzAwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTAxICAgKGhleCkJCUYxTUVESUEKLTAwMTkwMSAgICAgKGJhc2UgMTYpCQlGMU1FRElBCi0JCQkJNjEwLCBLZXVta2FuZyBIaWdodGVjaCClsSwgMTM4LTEgU2FuZ2RhZXdvbi1Eb25nLCBKdW5nd29uLUd1Ci0JCQkJU2VvbmduYW0tU2kgR3llb25nZ2ktRG8gNDYyLTcwNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0wMiAgIChoZXgpCQlDYW1icmlkZ2UgQ29uc3VsdGFudHMgTHRkCi0wMDE5MDIgICAgIChiYXNlIDE2KQkJQ2FtYnJpZGdlIENvbnN1bHRhbnRzIEx0ZAotCQkJCVNjaWVuY2UgUGFyawotCQkJCU1pbHRvbiBSb2FkCi0JCQkJQ2FtYnJpZGdlIENhbWJzIENCNCAwRFcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOS0wMyAgIChoZXgpCQlCaWdmb290IE5ldHdvcmtzIEluYwotMDAxOTAzICAgICAoYmFzZSAxNikJCUJpZ2Zvb3QgTmV0d29ya3MgSW5jCi0JCQkJMzkyNSBXZXN0IEJyYWtlciBMYW5lCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0wNCAgIChoZXgpCQlXQiBFbGVjdHJvbmljcyBTcC4geiBvLm8uCi0wMDE5MDQgICAgIChiYXNlIDE2KQkJV0IgRWxlY3Ryb25pY3MgU3AuIHogby5vLgotCQkJCXVsLiBQb3puYW5za2EgMTI5LzEzMwotCQkJCU96YXJvdyBNYXpvd2llY2tpIE1hem93aWVja2llIDA1LTg1MAotCQkJCVBPTEFORAotCi0wMC0xOS0wNSAgIChoZXgpCQlTQ0hSQUNLIFNlY29uZXQgQUcKLTAwMTkwNSAgICAgKGJhc2UgMTYpCQlTQ0hSQUNLIFNlY29uZXQgQUcKLQkJCQlFaWJlc2JydW5uZXJnYXNzZSAxOAotCQkJCVdpZW4g1nN0ZXJyZWljaCAxMTIyCi0JCQkJQVVTVFJJQQotCi0wMC0xOS0wNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5MDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0wNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5MDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0wOCAgIChoZXgpCQlEdWF4ZXMgQ29ycG9yYXRpb24KLTAwMTkwOCAgICAgKGJhc2UgMTYpCQlEdWF4ZXMgQ29ycG9yYXRpb24KLQkJCQkyLTUsIEthc3VtaWdhc2VraSAzLWNob21lLCBDaGl5b2RhLWt1LgotCQkJCVRva3lvIEZvcmVpZ24gMTAwLTYwMTQKLQkJCQlKQVBBTgotCi0wMC0xOS0wOSAgIChoZXgpCQlEZXZpIEEvUwotMDAxOTA5ICAgICAoYmFzZSAxNikJCURldmkgQS9TCi0JCQkJVWx2ZWhhdmV2ZWogNjEKLQkJCQlWZWpsZSAgNzEwMAotCQkJCURFTk1BUksKLQotMDAtMTktMEEgICAoaGV4KQkJSEFTV0FSRSBJTkMuCi0wMDE5MEEgICAgIChiYXNlIDE2KQkJSEFTV0FSRSBJTkMuCi0JCQkJNC0xMi0zIEhJR0FTSEkKLQkJCQlLVU5JVEFDSEkgVE9LWU8gMTg2LTAwMDIKLQkJCQlKQVBBTgotCi0wMC0xOS0wQiAgIChoZXgpCQlTb3V0aGVybiBWaXNpb24gU3lzdGVtcywgSW5jLgotMDAxOTBCICAgICAoYmFzZSAxNikJCVNvdXRoZXJuIFZpc2lvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJODIxNSBNYWRpc29uIEJsdmQsIFN1aXRlIDE1MAotCQkJCU1hZGlzb24gQUwgMzU3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTBDICAgKGhleCkJCUVuY29yZSBFbGVjdHJvbmljcywgSW5jLgotMDAxOTBDICAgICAoYmFzZSAxNikJCUVuY29yZSBFbGVjdHJvbmljcywgSW5jLgotCQkJCTE2NDgzIE9sZCBWYWxsZXkgQmx2ZC4KLQkJCQlMYSBQdWVudGUgQ0EgOTE3NDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTBEICAgKGhleCkJCUlFRUUgMTM5NGMKLTAwMTkwRCAgICAgKGJhc2UgMTYpCQlJRUVFIDEzOTRjCi0JCQkJYy9vIDEzOTQgVHJhZGUgQXNzb2NpYXRpb24KLQkJCQkxNTYwIEVhc3QgU291dGhsYWtlIEJsdmQuLCBTdWl0ZSAyMjAKLQkJCQlTb3V0aGxha2UgVFggNzYwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTBFICAgKGhleCkJCUF0ZWNoIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDE5MEUgICAgIChiYXNlIDE2KQkJQXRlY2ggVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk0IEZsLiwgTm8uIDEwMywgU2VjIDIsIEppdXpvbmcgUmQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTBGICAgKGhleCkJCUFkdmFuc3VzIENvcnAuCi0wMDE5MEYgICAgIChiYXNlIDE2KQkJQWR2YW5zdXMgQ29ycC4KLQkJCQlOby41IFNoaW5nIFllaCBTdHJlZXQsIEt3ZWkgSHNpYW5nCi0JCQkJVGFveXVhbiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS0xMCAgIChoZXgpCQlLbmljayBFbGVrdHJvbmlzY2hlIE1lc3NnZXJhZXRlIEdtYkggJiBDby4gS0cKLTAwMTkxMCAgICAgKGJhc2UgMTYpCQlLbmljayBFbGVrdHJvbmlzY2hlIE1lc3NnZXJhZXRlIEdtYkggJiBDby4gS0cKLQkJCQlCZXVja2VzdHIuIDIyCi0JCQkJQmVybGluICAxNDE2MwotCQkJCUdFUk1BTlkKLQotMDAtMTktMTEgICAoaGV4KQkJSnVzdCBJbiBNb2JpbGUgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0wMDE5MTEgICAgIChiYXNlIDE2KQkJSnVzdCBJbiBNb2JpbGUgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0JCQkJNXRoIEZsb29yLCAybmQgQXJlYSwgSGFpd2FuZ3hpbmcgQnVpbGRpbmcsIDYyIFhpbmdndWFuZyBBdmUuLCBOLkhpZ2gtVGVjaCBQYXJrCi0JCQkJQ2hvbmdxaW5nICA0MDExMjEKLQkJCQlDSElOQQotCi0wMC0xOS0xMiAgIChoZXgpCQlXZWxjYXQgSW5jCi0wMDE5MTIgICAgIChiYXNlIDE2KQkJV2VsY2F0IEluYwotCQkJCUVhc3QgVG93ZXIgNkYsIFNoaW5hZ2F3YSBTZWFzaWRlLCA0LTEyLTgsIEhpZ2FzaGkgU2hpbmFnYXdhLCBTaGluYWdhd2EgU2VjdGlvbgotCQkJCVRva3lvICAxNDAtMDAwMgotCQkJCUpBUEFOCi0KLTAwLTE5LTEzICAgKGhleCkJCUNodWFuZy1ZaSBOZXR3b3JrIEVxdWlwbWVudCBDby5MdGQuCi0wMDE5MTMgICAgIChiYXNlIDE2KQkJQ2h1YW5nLVlpIE5ldHdvcmsgRXF1aXBtZW50IENvLkx0ZC4KLQkJCQkyMzggVGlhbk11U2hhbiBSZC4sIFdlc3QgTGFrZSBkaXN0cmljdAotCQkJCUhhbmdaaG91IFpoZUppYW5nIDMxMDAwMAotCQkJCUNISU5BCi0KLTAwLTE5LTE0ICAgKGhleCkJCVdpbml4IENvLiwgTHRkCi0wMDE5MTQgICAgIChiYXNlIDE2KQkJV2luaXggQ28uLCBMdGQKLQkJCQkzNjMgQW5nYWRlIEJsZGcuLCBZYW5namFlLWRvbmcKLQkJCQlTZW9jaG8tZ3UKLQkJCQlTZW91bCAgMTM3LTg5OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0xNSAgIChoZXgpCQlURUNPTSBDby4sIEx0ZC4KLTAwMTkxNSAgICAgKGJhc2UgMTYpCQlURUNPTSBDby4sIEx0ZC4KLQkJCQkyMyBSJkQgUm9hZCAyIFNjaWVuY2UgQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktMTYgICAoaGV4KQkJUGF5VGVjIEFHCi0wMDE5MTYgICAgIChiYXNlIDE2KQkJUGF5VGVjIEFHCi0JCQkJUm9zZW5nYXJ0ZW5zdHJhc3NlIDMKLQkJCQlab2xsaWtlcmJlcmcgWkggODEyNQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE5LTE3ICAgKGhleCkJCVBvc2lmbGV4IEluYy4KLTAwMTkxNyAgICAgKGJhc2UgMTYpCQlQb3NpZmxleCBJbmMuCi0JCQkJNiwgV3UtQ2h1YW4gUm9hZAotCQkJCVd1IEt1Ci0JCQkJVGFpcGVpIEhzaWVuICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTE4ICAgKGhleCkJCUludGVyYWN0aXZlIFdlYXIgQUcKLTAwMTkxOCAgICAgKGJhc2UgMTYpCQlJbnRlcmFjdGl2ZSBXZWFyIEFHCi0JCQkJUGV0ZXJzYnJ1bm5lciBTdHIuIDMKLQkJCQlTdGFybmJlcmcgQmF2YXJpYSA4MjMxOQotCQkJCUdFUk1BTlkKLQotMDAtMTktMTkgICAoaGV4KQkJQVNURUwgSW5jLgotMDAxOTE5ICAgICAoYmFzZSAxNikJCUFTVEVMIEluYy4KLQkJCQk1OS03IEphbmctZG9uZyBZdXN1bmctR3UKLQkJCQlEYWVqZW9uIENodW5nbmFtIDMwNS0zNDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktMUEgICAoaGV4KQkJSVJMSU5LCi0wMDE5MUEgICAgIChiYXNlIDE2KQkJSVJMSU5LCi0JCQkJSGFuWW91bmcgQi9EIDZGLCA0LTYKLQkJCQlNdW5qZW9uZy1kb25nLCBTb25wYS1rdQotCQkJCVNFT1VMICAxMzgtODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTFCICAgKGhleCkJCVNwdXRuaWsgRW5naW5lZXJpbmcgQUcKLTAwMTkxQiAgICAgKGJhc2UgMTYpCQlTcHV0bmlrIEVuZ2luZWVyaW5nIEFHCi0JCQkJSPZoZXdlZyA4NQotCQkJCUJpZWwtQmllbm5lIEJFICAyNTAyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTktMUMgICAoaGV4KQkJU2Vuc2ljYXN0IFN5c3RlbXMKLTAwMTkxQyAgICAgKGJhc2UgMTYpCQlTZW5zaWNhc3QgU3lzdGVtcwotCQkJCTIwMCBSZXNlcnZvaXIgU3QKLQkJCQlTdWl0ZSAxMDAKLQkJCQlOZWVkaGFtIE1BIDAyNDk0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0xRCAgIChoZXgpCQlOaW50ZW5kbyBDby4sTHRkLgotMDAxOTFEICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLixMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTktMUUgICAoaGV4KQkJQmV5b25kd2l6IENvLiwgTHRkLgotMDAxOTFFICAgICAoYmFzZSAxNikJCUJleW9uZHdpeiBDby4sIEx0ZC4KLQkJCQkzRiwgRGFlY2hhbmcgQmxkZy4sCi0JCQkJOC0yLCBTb29uYWUtZG9uZywgQnVuZGFuZy1ndQotCQkJCVN1bmduYW0gS3l1bmdraS1kbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTFGICAgKGhleCkJCU1pY3JvbGluayBjb21tdW5pY2F0aW9ucyBJbmMuCi0wMDE5MUYgICAgIChiYXNlIDE2KQkJTWljcm9saW5rIGNvbW11bmljYXRpb25zIEluYy4KLQkJCQk4RiAsIDMxICwgSHNpbnRhaSBSb2FkICwgQ2h1cGVpIENpdHkgLCBIc2luY2h1Ci0JCQkJQ2h1cGVpIFRhaXdhbiAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTIwICAgKGhleCkJCUtVTUUgZWxlY3RyaWMgQ28uLEx0ZC4KLTAwMTkyMCAgICAgKGJhc2UgMTYpCQlLVU1FIGVsZWN0cmljIENvLixMdGQuCi0JCQkJNC0yLTI0IEtpdGFrYXdhcmEKLQkJCQlJdGFtaS1jaXR5IEh5b3VnbyAKLQkJCQlKQVBBTgotCi0wMC0xOS0yMSAgIChoZXgpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4KLTAwMTkyMSAgICAgKGJhc2UgMTYpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4KLQkJCQlOby4yMixBbGxleSAzOCxMYW5lIDkxLCBTZWMuIDEsTmVpIEh1IFJvYWQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTIyICAgKGhleCkJCUNNIENvbWFuZG9zIExpbmVhcmVzCi0wMDE5MjIgICAgIChiYXNlIDE2KQkJQ00gQ29tYW5kb3MgTGluZWFyZXMKLQkJCQlBdiBFbmcgQWxiZXJ0byBkZSBaYWdvdHRpcywgNzYwCi0JCQkJSnVydWJhdHViYQotCQkJCVNhbyBQYXVsbyBTUCAwNDY3NS0wODUKLQkJCQlCUkFaSUwKLQotMDAtMTktMjMgICAoaGV4KQkJUGhvbmV4IEtvcmVhIENvLiwgTFRELgotMDAxOTIzICAgICAoYmFzZSAxNikJCVBob25leCBLb3JlYSBDby4sIExURC4KLQkJCQkzMy0zLCBHZW95ZW8tRG9uZwotCQkJCVNlb3VsIFNvbmdwYS1HdSAxMzgtODE0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTI0ICAgKGhleCkJCUxCTkwgIEVuZ2luZWVyaW5nCi0wMDE5MjQgICAgIChiYXNlIDE2KQkJTEJOTCAgRW5naW5lZXJpbmcKLQkJCQkxIEN5Y2xvdHJvbiBSZC4KLQkJCQlNUzQ2UjAxMjUKLQkJCQlCZXJrZWxleSBDQSA5NDcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMjUgICAoaGV4KQkJSW50ZWxpY2lzIENvcnBvcmF0aW9uCi0wMDE5MjUgICAgIChiYXNlIDE2KQkJSW50ZWxpY2lzIENvcnBvcmF0aW9uCi0JCQkJNDYzMyBPbGQgSXJvbnNpZGVzIERyaXZlLCBTdWl0ZSAxNTAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMjYgICAoaGV4KQkJQml0c0dlbiBDby4sIEx0ZC4KLTAwMTkyNiAgICAgKGJhc2UgMTYpCQlCaXRzR2VuIENvLiwgTHRkLgotCQkJCSM1MDIsIE93bmVyJ3MgVG93ZXIsICMxNi01LCBTdW5lYS1kb25nCi0JCQkJQnVuZGFuZy1ndSBTZW9uZ25hbS1zaSA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTI3ICAgKGhleCkJCUltQ29TeXMgTHRkCi0wMDE5MjcgICAgIChiYXNlIDE2KQkJSW1Db1N5cyBMdGQKLQkJCQlCdW5kZXNzdHJhc3NlIDUKLQkJCQladWcgWkcgNjMwMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE5LTI4ICAgKGhleCkJCVNpZW1lbnMgQUcsIFRyYW5zcG9ydGF0aW9uIFN5c3RlbXMKLTAwMTkyOCAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHLCBUcmFuc3BvcnRhdGlvbiBTeXN0ZW1zCi0JCQkJV2VybmVyLXZvbi1TaWVtZW5zLVN0cmHfZSA2NwotCQkJCUVybGFuZ2VuICA5MTA1MgotCQkJCUdFUk1BTlkKLQotMDAtMTktMjkgICAoaGV4KQkJMk0yQiBNb250YWRvcmEgZGUgTWFxdWluYXMgQmFoaWEgQnJhc2lsIExUREEKLTAwMTkyOSAgICAgKGJhc2UgMTYpCQkyTTJCIE1vbnRhZG9yYSBkZSBNYXF1aW5hcyBCYWhpYSBCcmFzaWwgTFREQQotCQkJCVJ1YSBEamFsbWEgZHV0cmEsIDY2OCwgU2V0ZSBQb3J0YXMKLQkJCQlTYWx2YWRvciBCYWhpYSA0MDI0MDA4MAotCQkJCUJSQVpJTAotCi0wMC0xOS0yQSAgIChoZXgpCQlBbnRpb3BlIEFzc29jaWF0ZXMKLTAwMTkyQSAgICAgKGJhc2UgMTYpCQlBbnRpb3BlIEFzc29jaWF0ZXMKLQkJCQkxOCBDbGF5IFN0cmVldAotCQkJCUZhaXIgSGF2ZW4gTmV3IEplcnNleSAwNzcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMkIgICAoaGV4KQkJQWNsYXJhIFJGIFN5c3RlbXMgSW5jLgotMDAxOTJCICAgICAoYmFzZSAxNikJCUFjbGFyYSBSRiBTeXN0ZW1zIEluYy4KLQkJCQkzMDQwMCBTb2xvbiBSb2FkCi0JCQkJU29sb24gT0ggNDQxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTJDICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxOTJDICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTYwMCBOLiBId3kgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTJEICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0wMDE5MkQgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlSZW5zaW5nc3RyLiAxNQotCQkJCUJvY2h1bSBOUlcgNDQ4MDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTJFICAgKGhleCkJCVNwZWN0cmFsIEluc3RydW1lbnRzLCBJbmMuCi0wMDE5MkUgICAgIChiYXNlIDE2KQkJU3BlY3RyYWwgSW5zdHJ1bWVudHMsIEluYy4KLQkJCQk0MjAgTiBCb25pdGEgQXZlCi0JCQkJVHVjc29uIEFaIDg1NzQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0yRiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5MkYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0zMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5MzAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0zMSAgIChoZXgpCQlCYWxsdWZmIEdtYkgKLTAwMTkzMSAgICAgKGJhc2UgMTYpCQlCYWxsdWZmIEdtYkgKLQkJCQlTY2h1cndhbGRzdHIuIDkKLQkJCQlOZXVoYXVzZW4gQlcgNzM3NjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTMyICAgKGhleCkJCUd1ZGUgQW5hbG9nLSB1bmQgRGlnaWFsc3lzdGVtZSBHbWJICi0wMDE5MzIgICAgIChiYXNlIDE2KQkJR3VkZSBBbmFsb2ctIHVuZCBEaWdpYWxzeXN0ZW1lIEdtYkgKLQkJCQlFaW50cmFjaHN0cmFzc2UgMTEzCi0JCQkJQ29sb2duZSBOUlcgNTA2NjgKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTMzICAgKGhleCkJCVN0cml4IFN5c3RlbXMsIEluYy4KLTAwMTkzMyAgICAgKGJhc2UgMTYpCQlTdHJpeCBTeXN0ZW1zLCBJbmMuCi0JCQkJMjY2MTAgQWdvdXJhIFJvYWQKLQkJCQlDYWxhYmFzYXMgQ0EgOTEzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTM0ICAgKGhleCkJCVRSRU5ET04gVE9VQ0ggVEVDSE5PTE9HWSBDT1JQLgotMDAxOTM0ICAgICAoYmFzZSAxNikJCVRSRU5ET04gVE9VQ0ggVEVDSE5PTE9HWSBDT1JQLgotCQkJCTJGIE5vLjUsIEFsbGV5IDIyLCBMYW5lIDUxMywgUnVlaWd1YW5nIFJkLiwgTmVpaHUKLQkJCQlUYWlwZWkgQ2l0eSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS0zNSAgIChoZXgpCQlEdWVyciBEZW50YWwgR21iSCAmIENvLiBLRwotMDAxOTM1ICAgICAoYmFzZSAxNikJCUR1ZXJyIERlbnRhbCBHbWJIICYgQ28uIEtHCi0JCQkJSG9lcGZpZ2hlaW1lciBTdHJhc3NlIDE3Ci0JCQkJQmlldGlnaGVpbS1CaXNzaW5nZW4gQmFkZW4tV3VlcnR0ZW1iZXJnIDc0MzIxCi0JCQkJR0VSTUFOWQotCi0wMC0xOS0zNiAgIChoZXgpCQlTVEVSTElURSBPUFRJQ0FMIFRFQ0hOT0xPR0lFUyBMSU1JVEVECi0wMDE5MzYgICAgIChiYXNlIDE2KQkJU1RFUkxJVEUgT1BUSUNBTCBURUNITk9MT0dJRVMgTElNSVRFRAotCQkJCUUtMSxFLTIsJkUtMwotCQkJCU1JREMgLCBXQUxVSgotCQkJCUFVUkFOR0FCQUQgTUFIQVJBU1RSQSA0MzExMzYKLQkJCQlJTkRJQQotCi0wMC0xOS0zNyAgIChoZXgpCQlDb21tZXJjZUd1YXJkIEFCCi0wMDE5MzcgICAgIChiYXNlIDE2KQkJQ29tbWVyY2VHdWFyZCBBQgotCQkJCUd1c3RhdnNsdW5kc3YgMTUxQQotCQkJCUJST01NQSAgMTY3MTQKLQkJCQlTV0VERU4KLQotMDAtMTktMzggICAoaGV4KQkJVU1CIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDAxOTM4ICAgICAoYmFzZSAxNikJCVVNQiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQkxMDEwLCA1LCBBQ0UgVGVjaG5vIFRvd2VyLCAxOTctMjIsIEd1cm8tZG9uZywgR3Vyby1ndQotCQkJCVNlb3VsICAxNTEtNzY2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTM5ICAgKGhleCkJCUdpZ2FtaXBzCi0wMDE5MzkgICAgIChiYXNlIDE2KQkJR2lnYW1pcHMKLQkJCQk1dGggRmxvb3IsIFlhbmdqYWUgQnVpbGRpbmcsIDI2MSwgWWFuZ2phZS1Eb25nCi0JCQkJU2VvY2hvLUd1IFNlb3VsIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktM0EgICAoaGV4KQkJT0VTT0xVVElPTlMKLTAwMTkzQSAgICAgKGJhc2UgMTYpCQlPRVNPTFVUSU9OUwotCQkJCVRlY2hub3BhcmssIDk1OC0zIERhZWNob24tRG9uZywgQnVrLUd1Ci0JCQkJR3dhbmdqdSBCdWstR3UgNTAwLTcwNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0zQiAgIChoZXgpCQlXaWxpYm94IERlbGliZXJhbnQgR3JvdXAgTExDCi0wMDE5M0IgICAgIChiYXNlIDE2KQkJV2lsaWJveCBEZWxpYmVyYW50IEdyb3VwIExMQwotCQkJCTE0NDAgRHV0Y2ggVmFsbGV5IFBsYWNlCi0JCQkJU3VpdGUgMTE1NQotCQkJCUF0bGFudGEgR0EgMzAzMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTNDICAgKGhleCkJCUhpZ2hQb2ludCBUZWNobm9sb2dpZXMgSW5jb3Jwb3JhdGVkCi0wMDE5M0MgICAgIChiYXNlIDE2KQkJSGlnaFBvaW50IFRlY2hub2xvZ2llcyBJbmNvcnBvcmF0ZWQKLQkJCQkxMTYxIENhZGlsbGFjIENvdXJ0Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTNEICAgKGhleCkJCUdNQyBHdWFyZGlhbiBNb2JpbGl0eSBDb3JwLgotMDAxOTNEICAgICAoYmFzZSAxNikJCUdNQyBHdWFyZGlhbiBNb2JpbGl0eSBDb3JwLgotCQkJCVN1aXRlIDIwMAotCQkJCTQzIEF1cmlnYSBEci4KLQkJCQlPdHRhd2EgT04gSzJFIDdZOAotCQkJCUNBTkFEQQotCi0wMC0xOS0zRSAgIChoZXgpCQlQSVJFTExJIEJST0FEQkFORCBTT0xVVElPTlMKLTAwMTkzRSAgICAgKGJhc2UgMTYpCQlQSVJFTExJIEJST0FEQkFORCBTT0xVVElPTlMKLQkJCQlWSUFMRSBTQVJDQSAyMjIKLQkJCQlNSUxBTk8gIDIwMTI2Ci0JCQkJSVRBTFkKLQotMDAtMTktM0YgICAoaGV4KQkJUkRJIHRlY2hub2xvZ3koU2hlbnpoZW4pIENvLixMVEQKLTAwMTkzRiAgICAgKGJhc2UgMTYpCQlSREkgdGVjaG5vbG9neShTaGVuemhlbikgQ28uLExURAotCQkJCUJ1aWxkaW5nIEMxJkMyLCAgWGluIFRhbmcgSW5kdXN0cmlhbCBab25lLEVhc3QgQmFpU2hpWGlhIFZpbGxhZ2UsIEZ1eW9uZyBUb3duLCBCYW9hbiBEaXN0cmljdAotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyBwcm92aW5jZSA1MTgxMDMKLQkJCQlDSElOQQotCi0wMC0xOS00MCAgIChoZXgpCQlSYWNrYWJsZSBTeXN0ZW1zCi0wMDE5NDAgICAgIChiYXNlIDE2KQkJUmFja2FibGUgU3lzdGVtcwotCQkJCTE5MzMgTWlsbW9udCBEcml2ZQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS00MSAgIChoZXgpCQlQaXRuZXkgQm93ZXMsIEluYwotMDAxOTQxICAgICAoYmFzZSAxNikJCVBpdG5leSBCb3dlcywgSW5jCi0JCQkJMzUgV2F0ZXJ2aWV3IERyaXZlCi0JCQkJTVNDIDI2LTIxCi0JCQkJU2hlbHRvbiBDVCAwNjQ4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNDIgICAoaGV4KQkJT04gU09GVFdBUkUgSU5URVJOQVRJT05BTCBMSU1JVEVECi0wMDE5NDIgICAgIChiYXNlIDE2KQkJT04gU09GVFdBUkUgSU5URVJOQVRJT05BTCBMSU1JVEVECi0JCQkJOUYsIE5PLiAxNywgU0VDLiAxLCBDSEVORy1URSBSRC4KLQkJCQlUQUlQRUkgIDEwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktNDMgICAoaGV4KQkJQmVsZGVuCi0wMDE5NDMgICAgIChiYXNlIDE2KQkJQmVsZGVuCi0JCQkJNzkzIEZvcnQgTWlsbCBIaWdod2F5Ci0JCQkJRm9ydCBNaWxsIFNvdXRoIENhcm9saW5hIDI5NzE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS00NCAgIChoZXgpCQlGb3NzaWwgUGFydG5lcnMsIEwuUC4KLTAwMTk0NCAgICAgKGJhc2UgMTYpCQlGb3NzaWwgUGFydG5lcnMsIEwuUC4KLQkJCQkyMjgwIE4uIEdyZWVudmlsbGUgQXZlLgotCQkJCVJpY2hhcmRzb24gVFggNzUwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTQ1ICAgKGhleCkJCVRlbi1UZWMgSW5jLgotMDAxOTQ1ICAgICAoYmFzZSAxNikJCVRlbi1UZWMgSW5jLgotCQkJCTExODUgRG9sbHkgUGFydG9uIFBrd3kKLQkJCQlTZXZpZXJ2aWxsZSBUTiAzNzg2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNDYgICAoaGV4KQkJQ2lhbmV0IEluZHVzdHJpYSBlIENvbWVyY2lvIFMvQQotMDAxOTQ2ICAgICAoYmFzZSAxNikJCUNpYW5ldCBJbmR1c3RyaWEgZSBDb21lcmNpbyBTL0EKLQkJCQlyb2QgU0M0MDEsIGttMDEgVGVjbm9wb2xpcy9BbGZhbWEgNG8uIEFuZGFyCi0JCQkJRmxvcmlhbm9wb2xpcyBTYW50YSBDYXRhcmluYSA4ODAzMC05MDIKLQkJCQlCUkFaSUwKLQotMDAtMTktNDcgICAoaGV4KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBBIENpc2NvIENvbXBhbnkKLTAwMTk0NyAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljIEF0bGFudGEsIEEgQ2lzY28gQ29tcGFueQotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlBVEwgMS4zLjQ3MwotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTQ4ICAgKGhleCkJCUFpcmVTcGlkZXIgTmV0d29ya3MKLTAwMTk0OCAgICAgKGJhc2UgMTYpCQlBaXJlU3BpZGVyIE5ldHdvcmtzCi0JCQkJMTE3MSBNb250YWd1ZSBFeHByZXNzIFdheQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS00OSAgIChoZXgpCQlURU5URUwgIENPTVRFQ0ggQ08uLCBMVEQuCi0wMDE5NDkgICAgIChiYXNlIDE2KQkJVEVOVEVMICBDT01URUNIIENPLiwgTFRELgotCQkJCTMvRi4sIE5PLiA0MiwgTEFORSA4MCwgU0VDLiAzLCBOQU4tS0FORyBSRC4sCi0JCQkJVEFJUEVJICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTRBICAgKGhleCkJCVRFU1RPIEFHCi0wMDE5NEEgICAgIChiYXNlIDE2KQkJVEVTVE8gQUcKLQkJCQlUZXN0byBTdHJhc3NlIDEKLQkJCQlMZW56a2lyY2ggQmFkZW4tV/xydGVtYmVyZyA3OTg1MwotCQkJCUdFUk1BTlkKLQotMDAtMTktNEIgICAoaGV4KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotMDAxOTRCICAgICAoYmFzZSAxNikJCVNBR0VNIENPTU1VTklDQVRJT04KLQkJCQkyNyBSVUUgTEVCTEFOQwotCQkJCVBBUklTICA3NTUxMgotCQkJCUZSQU5DRQotCi0wMC0xOS00QyAgIChoZXgpCQlGdWppYW4gU3RlbGNvbSBpbmZvcm1hdGlvbiAmIFRlY2hub2xvZ3kgQ08uLEx0ZAotMDAxOTRDICAgICAoYmFzZSAxNikJCUZ1amlhbiBTdGVsY29tIGluZm9ybWF0aW9uICYgVGVjaG5vbG9neSBDTy4sTHRkCi0JCQkJNEYsQnVpbGRpbmcgQSxTdGFydCBTY2llbmNlIFBhcmssIE5vLjY4LEhvbmdzaGFueXVhbiBSZAotCQkJCUZ1emhvdSBGdWppYW4gMzUwMDAyCi0JCQkJQ0hJTkEKLQotMDAtMTktNEQgICAoaGV4KQkJQXZhZ28gVGVjaG5vbG9naWVzIFNkbiBCaGQKLTAwMTk0RCAgICAgKGJhc2UgMTYpCQlBdmFnbyBUZWNobm9sb2dpZXMgU2RuIEJoZAotCQkJCUJheWFuIExlcGFzIEZyZWUgSW5kdXN0cmlhbCBab25lCi0JCQkJQmF5YW4gTGVwYXMgUGVuYW5nIDExOTAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTktNEUgICAoaGV4KQkJVWx0cmEgRWxlY3Ryb25pY3MgLSBUQ1MgKFRhY3RpY2FsIENvbW11bmljYXRpb24gU3lzdGVtcykKLTAwMTk0RSAgICAgKGJhc2UgMTYpCQlVbHRyYSBFbGVjdHJvbmljcyAtIFRDUyAoVGFjdGljYWwgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zKQotCQkJCTU5OTAgQ290ZSBEZSBMaWVzc2UKLQkJCQlUTVIgUXVlYmVjIEg0VCAxVjcKLQkJCQlDQU5BREEKLQotMDAtMTktNEYgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTk0RiAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTktNTAgICAoaGV4KQkJSGFybWFuIE11bHRpbWVkaWEKLTAwMTk1MCAgICAgKGJhc2UgMTYpCQlIYXJtYW4gTXVsdGltZWRpYQotCQkJCTg0MDAgQmFsYm9hIEJsdmQuCi0JCQkJTm9ydGhyaWRnZSBDQSA5MTMyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNTEgICAoaGV4KQkJTkVUQ09OUywgcy5yLm8uCi0wMDE5NTEgICAgIChiYXNlIDE2KQkJTkVUQ09OUywgcy5yLm8uCi0JCQkJU3RhcmEgVmFqbm9yc2thIDM3Ci0JCQkJQnJhdGlzbGF2YSBTbG92YWtpYSA4MzEgMDQKLQkJCQlTTE9WQUtJQQotCi0wMC0xOS01MiAgIChoZXgpCQlBQ09HSVRPIENvLiwgTHRkCi0wMDE5NTIgICAgIChiYXNlIDE2KQkJQUNPR0lUTyBDby4sIEx0ZAotCQkJCSM1MDEgU2hpbnlvdW5nIFBhbGFjZSBUb3dlciwgMjQ2LTIsIFNlb2h5dW4KLQkJCQlTdW5nbmFtIEt5dW5nZ2kgNDYzLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS01MyAgIChoZXgpCQlDaGFpbmxlYWRlciBDb21tdW5pY2F0aW9ucyBDb3JwLgotMDAxOTUzICAgICAoYmFzZSAxNikJCUNoYWlubGVhZGVyIENvbW11bmljYXRpb25zIENvcnAuCi0JCQkJNUYsIE5vLiA0MDAsIFNlYy4gMiBCYWRlIFJkLiwKLQkJCQlUYWlwZWkgIDEwNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktNTQgICAoaGV4KQkJTGVhZiBDb3Jwb3JhdGlvbi4KLTAwMTk1NCAgICAgKGJhc2UgMTYpCQlMZWFmIENvcnBvcmF0aW9uLgotCQkJCUFtdXplIDFGCi0JCQkJSGlnYXNoaSBOYXJ1c2UgMzUtMTAKLQkJCQlJc2VoYXJhIENpdHkgS2FuYWdhd2EtUHJlZi4gMjU5LTExMTcKLQkJCQlKQVBBTgotCi0wMC0xOS01NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5NTUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS01NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5NTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS01NyAgIChoZXgpCQlTYWFmbmV0IENhbmFkYSBJbmMuCi0wMDE5NTcgICAgIChiYXNlIDE2KQkJU2FhZm5ldCBDYW5hZGEgSW5jLgotCQkJCTEwNy0xMDg5IEVhc3QgS2VudCBBdmUgKE4pCi0JCQkJVmFuY291dmVyIEJDIFY1WCA0VjkKLQkJCQlDQU5BREEKLQotMDAtMTktNTggICAoaGV4KQkJQmx1ZXRvb3RoIFNJRywgSW5jLgotMDAxOTU4ICAgICAoYmFzZSAxNikJCUJsdWV0b290aCBTSUcsIEluYy4KLQkJCQk1MDAgMTA4dGggQXZlbnVlIE5FCi0JCQkJU3VpdGUgMjUwCi0JCQkJQmVsbGV2dWUgV0EgOTgwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTU5ICAgKGhleCkJCVN0YWNjYXRvIENvbW11bmljYXRpb25zIEluYy4KLTAwMTk1OSAgICAgKGJhc2UgMTYpCQlTdGFjY2F0byBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJNjE5NSBMdXNrIEJsdmQuCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS01QSAgIChoZXgpCQlKZW5hZXIgQW50cmllYnN0ZWNobmlrIEdtYkgKLTAwMTk1QSAgICAgKGJhc2UgMTYpCQlKZW5hZXIgQW50cmllYnN0ZWNobmlrIEdtYkgKLQkJCQlCdWNoYWVyIFN0cmFzc2UgMQotCQkJCUplbmEgVGh1ZXJpbmdlbiAwNzc0NQotCQkJCUdFUk1BTlkKLQotMDAtMTktNUIgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDE5NUIgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTk8uMjg5LCBTaW5odSAzcmQgUmQuLAotCQkJCU5laWh1IERpc3RyaWN0LCBUYWlwZWkgQ2l0eSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTVDICAgKGhleCkJCUlubm90ZWNoIENvcnBvcmF0aW9uCi0wMDE5NUMgICAgIChiYXNlIDE2KQkJSW5ub3RlY2ggQ29ycG9yYXRpb24KLQkJCQkzLTE3LTYKLQkJCQlTaGluLVlva29oYW1hLCBLb2hva3Uta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjItODU4MAotCQkJCUpBUEFOCi0KLTAwLTE5LTVEICAgKGhleCkJCVNoZW5aaGVuIFhpbkh1YVRvbmcgT3B0byBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDE5NUQgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gWGluSHVhVG9uZyBPcHRvIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQk1RixCYW9kYVpob3UsU2hhbmNoZW5nIEluZHVzdHJpYWwgWm9uZSxCYW9BbiBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMDgKLQkJCQlDSElOQQotCi0wMC0xOS01RSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxOTVFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNUYgICAoaGV4KQkJVmFsZW1vdW50IE5ldHdvcmtzIENvcnBvcmF0aW9uCi0wMDE5NUYgICAgIChiYXNlIDE2KQkJVmFsZW1vdW50IE5ldHdvcmtzIENvcnBvcmF0aW9uCi0JCQkJMTIwMS0gNXRoIEF2ZQotCQkJCVBPIEJveCA2ODcKLQkJCQlWYWxlbW91bnQgQkMgVjBFMlowCi0JCQkJQ0FOQURBCi0KLTAwLTE5LTYwICAgKGhleCkJCURvQ29NbyBTeXN0ZW1zLCBJbmMuCi0wMDE5NjAgICAgIChiYXNlIDE2KQkJRG9Db01vIFN5c3RlbXMsIEluYy4KLQkJCQlNZWd1cm8gVGVjaG5vIEJsZGcuIDJuZCBGbG9vcgotCQkJCTQtMzEtMTggTmlzaGktR290YW5kYQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAzMQotCQkJCUpBUEFOCi0KLTAwLTE5LTYxICAgKGhleCkJCUJsYXVwdW5rdCBHbWJICi0wMDE5NjEgICAgIChiYXNlIDE2KQkJQmxhdXB1bmt0IEdtYkgKLQkJCQlSb2JlcnQtQm9zY2gtU3RyYXNzZSAyMDAKLQkJCQlIaWxkZXNoZWltIEhlc3NlbiAzMTEzOQotCQkJCUdFUk1BTlkKLQotMDAtMTktNjIgICAoaGV4KQkJQ29tbWVyY2lhbnQsIExQCi0wMDE5NjIgICAgIChiYXNlIDE2KQkJQ29tbWVyY2lhbnQsIExQCi0JCQkJMjkwMSBXaWxjcmVzdAotCQkJCVN1aXRlIDI1MAotCQkJCUhvdXN0b24gVGV4YXMgNzcwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTYzICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDE5NjMgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa+VuZSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMTktNjQgICAoaGV4KQkJRG9vcmtpbmcgSW5jLgotMDAxOTY0ICAgICAoYmFzZSAxNikJCURvb3JraW5nIEluYy4KLQkJCQkxMjAgR2xhc2dvdyBTdC4KLQkJCQlJbmdsZXdvb2QgQ0EuIDkwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS02NSAgIChoZXgpCQlZdUh1YSBUZWxUZWNoIChTaGFuZ0hhaSkgQ28uLCBMdGQuCi0wMDE5NjUgICAgIChiYXNlIDE2KQkJWXVIdWEgVGVsVGVjaCAoU2hhbmdIYWkpIENvLiwgTHRkLgotCQkJCVl1SHVhIFImRCBCdWlsZGluZywyNyB4aW4gamluIHFpYW8gcm9hZCwKLQkJCQlQdWRvbmcsCi0JCQkJU0hBTkdIQUkgIDIwMTIwNgotCQkJCUNISU5BCi0KLTAwLTE5LTY2ICAgKGhleCkJCUFzaWFyb2NrIFRlY2hub2xvZ3kgTGltaXRlZAotMDAxOTY2ICAgICAoYmFzZSAxNikJCUFzaWFyb2NrIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVAuTy4gQm94OTU3LCBPZmZzaG9yZSBJbmNvcnBvcmF0aW9ucyBDZW50cmUKLQkJCQlSb2FkIFRvd24gVG9ydG9sYSAKLQkJCQlWSVJHSU4gSVNMQU5EUywgQlJJVElTSAotCi0wMC0xOS02NyAgIChoZXgpCQlURUxEQVQgU3AuSi4KLTAwMTk2NyAgICAgKGJhc2UgMTYpCQlURUxEQVQgU3AuSi4KLQkJCQlLaWpvd3NrYSA0NAotCQkJCU5JUCA1NTQgMTkgMjYgMDQyCi0JCQkJQnlkZ29zemN6IHdvai4ga3VqYXdza28tcG9tb3Jza2llIDg1LTcwMwotCQkJCVBPTEFORAotCi0wMC0xOS02OCAgIChoZXgpCQlEaWdpdGFsIFZpZGVvIE5ldHdvcmtzKFNoYW5naGFpKSBDTy4gTFRELgotMDAxOTY4ICAgICAoYmFzZSAxNikJCURpZ2l0YWwgVmlkZW8gTmV0d29ya3MoU2hhbmdoYWkpIENPLiBMVEQuCi0JCQkJOXRoIEZsb29yLEhlY2h1YW4gQnVpbGRpbmcsIE5vLjEwMjYgWWlTaGFuIFJkCi0JCQkJU2hhbmdoYWkgIDIwMTEwMwotCQkJCUNISU5BCi0KLTAwLTE5LTY5ICAgKGhleCkJCU5vcnRlbAotMDAxOTY5ICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xOS02QSAgIChoZXgpCQlNaWtyb00gR21iSAotMDAxOTZBICAgICAoYmFzZSAxNikJCU1pa3JvTSBHbWJICi0JCQkJRG92ZXN0ci4gMQotCQkJCUJlcmxpbiAgMTA1ODcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTZCICAgKGhleCkJCURhbnBleCBDb3Jwb3JhdGlvbgotMDAxOTZCICAgICAoYmFzZSAxNikJCURhbnBleCBDb3Jwb3JhdGlvbgotCQkJCTIxMTQgUmluZ3dvb2QgQXZlbnVlCi0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNkMgICAoaGV4KQkJRVRST1ZJU0lPTiBURUNITk9MT0dZCi0wMDE5NkMgICAgIChiYXNlIDE2KQkJRVRST1ZJU0lPTiBURUNITk9MT0dZCi0JCQkJMkYsIDE5LTUgU2FuIENodW5nIFJkLiwKLQkJCQlCbG9jayBDLCBOYW4gS2FuZyBTb2Z0d2FyZSBQYXJrLCBOYW4gS2FuZyBEaXN0cmljdCwKLQkJCQlUQUlQRUkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktNkQgICAoaGV4KQkJUmF5Yml0IFN5c3RlbXMgS29yZWEsIEluYwotMDAxOTZEICAgICAoYmFzZSAxNikJCVJheWJpdCBTeXN0ZW1zIEtvcmVhLCBJbmMKLQkJCQlEcmVhbSBUb3dlciAxMjIxCi0JCQkJOTIzLTE0LCBNb2tkb25nLCBZYW5nY2h1bmt1Ci0JCQkJU2VvdWwgIDE1OC03MTgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktNkUgICAoaGV4KQkJTWV0YWNvbSAoUHR5KSBMdGQuCi0wMDE5NkUgICAgIChiYXNlIDE2KQkJTWV0YWNvbSAoUHR5KSBMdGQuCi0JCQkJNiBOZGFiZW5pIEJ1c2luZXNzIFBhcmsKLQkJCQlJbnlvbmkgU3RyLCBOZGFiZW5pCi0JCQkJQ2FwZSBUb3duIFdlc3Rlcm4gQ2FwZSA3NDA1Ci0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTE5LTZGICAgKGhleCkJCVNlbnNvUGFydCBHbWJICi0wMDE5NkYgICAgIChiYXNlIDE2KQkJU2Vuc29QYXJ0IEdtYkgKLQkJCQlBbSBXaWVkZW5iYWNoIDEKLQkJCQlXaWVkZW4gQmFkZW4tV3VlcnR0ZW1iZXJnIEQtNzk2OTUKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTcwICAgKGhleCkJCVotQ29tLCBJbmMuCi0wMDE5NzAgICAgIChiYXNlIDE2KQkJWi1Db20sIEluYy4KLQkJCQk3Ri0yLCBOTy45LCBQUk9TUEVSSVRZIDFTVCBSRC4KLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktNzEgICAoaGV4KQkJR3Vhbmd6aG91IFVuaWNvbXAgVGVjaG5vbG9neSBDby4sTHRkCi0wMDE5NzEgICAgIChiYXNlIDE2KQkJR3Vhbmd6aG91IFVuaWNvbXAgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJNy9GLE5vcnRoIFRvd2VyLEppbnNoYW4gQnVpbGRpbmcuTm8uMjQ4Ci0JCQkJUmQgV3VzaGFuLCBUaWFuaGUgRGlzdHJpY3QKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDYzMAotCQkJCUNISU5BCi0KLTAwLTE5LTcyICAgKGhleCkJCVBsZXh1cyAoWGlhbWVuKSBDby4sbHRkCi0wMDE5NzIgICAgIChiYXNlIDE2KQkJUGxleHVzIChYaWFtZW4pIENvLixsdGQKLQkJCQlOby42IFhpYW5neGluZyAyIFJvYWQKLQkJCQlYaWFuZ3l1IEZyZWUgVHJhZGUgWm9uZQotCQkJCVhpYW1lbiBGdWppYW4gMzYxMDA2Ci0JCQkJQ0hJTkEKLQotMDAtMTktNzMgICAoaGV4KQkJWmV1Z21hIFN5c3RlbXMKLTAwMTk3MyAgICAgKGJhc2UgMTYpCQlaZXVnbWEgU3lzdGVtcwotCQkJCVN1aXRlIDI1MAotCQkJCTEzNTcxIENvbW1lcmNlIFBhcmt3YXkKLQkJCQlSaWNobW9uZCBCQyBWNlYgMlIyCi0JCQkJQ0FOQURBCi0KLTAwLTE5LTc0ICAgKGhleCkJCUFib0NvbSBTeXN0ZW1zLCBJbmMuCi0wMDE5NzQgICAgIChiYXNlIDE2KQkJQWJvQ29tIFN5c3RlbXMsIEluYy4KLQkJCQkxRiAsIE5vLiAyMSwgWWFuZmEgMm5kIFJkLiwgU0JJUAotCQkJCUhzaW5jaHUgQ2l0eSBIc2luY2h1IDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktNzUgICAoaGV4KQkJQmVpamluZyBIdWlzZW4gbmV0d29ya3MgdGVjaG5vbG9neSBJbmMKLTAwMTk3NSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEh1aXNlbiBuZXR3b3JrcyB0ZWNobm9sb2d5IEluYwotCQkJCUppYSMyIG9mIFhpbGkgb2YgQmFpeXVuIHJvYWQsWGljaGVuZyBkaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA0NQotCQkJCUNISU5BCi0KLTAwLTE5LTc2ICAgKGhleCkJCVhpcGhlciBUZWNobm9sb2dpZXMsIExMQwotMDAxOTc2ICAgICAoYmFzZSAxNikJCVhpcGhlciBUZWNobm9sb2dpZXMsIExMQwotCQkJCTE1NiBSaXZlciBSb2FkCi0JCQkJV2lsbGluZ3RvbiBDVCAwNjI3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNzcgICAoaGV4KQkJQWVyb2hpdmUgTmV0d29ya3MsIEluYy4KLTAwMTk3NyAgICAgKGJhc2UgMTYpCQlBZXJvaGl2ZSBOZXR3b3JrcywgSW5jLgotCQkJCTMxNTAtQyBDb3JvbmFkbyBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS03OCAgIChoZXgpCQlEYXR1bSBTeXN0ZW1zLCBJbmMuCi0wMDE5NzggICAgIChiYXNlIDE2KQkJRGF0dW0gU3lzdGVtcywgSW5jLgotCQkJCTM2NjYgVGlmZmFuaSBDdC4KLQkJCQlTYW50YSBDcnV6IENBIDk1MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS03OSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxOTc5ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xOS03QSAgIChoZXgpCQlNQVplVCBHbWJICi0wMDE5N0EgICAgIChiYXNlIDE2KQkJTUFaZVQgR21iSAotCQkJCUdvZXNjaHdpdHplciBTdHIuIDMyCi0JCQkJSmVuYSAgRC0wNzc0NQotCQkJCUdFUk1BTlkKLQotMDAtMTktN0IgICAoaGV4KQkJUGljb3Rlc3QgQ29ycC4KLTAwMTk3QiAgICAgKGJhc2UgMTYpCQlQaWNvdGVzdCBDb3JwLgotCQkJCThGLTEsIDI4Ni05LCBIc2luLVlhIFJkLiwgODA2NzMKLQkJCQlLYW9oc2l1bmcgIDgwNjczCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS03QyAgIChoZXgpCQlSaWVkZWwgQ29tbXVuaWNhdGlvbnMgR21iSAotMDAxOTdDICAgICAoYmFzZSAxNikJCVJpZWRlbCBDb21tdW5pY2F0aW9ucyBHbWJICi0JCQkJVWVsbGVuZGFobGVyIFN0ci4gMzUzCi0JCQkJV3VwcGVydGFsIE5SVyA0MjEwOQotCQkJCUdFUk1BTlkKLQotMDAtMTktN0QgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZAotMDAxOTdEICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQKLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS03RSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkCi0wMDE5N0UgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZAotCQkJCTY2LCBDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTdGICAgKGhleCkJCVBMQU5UUk9OSUNTLCBJTkMuCi0wMDE5N0YgICAgIChiYXNlIDE2KQkJUExBTlRST05JQ1MsIElOQy4KLQkJCQkzNDUgRU5DSU5BTCBTVFJFRVQKLQkJCQlTQU5UQSBDUlVaIENBTElGT1JOSUEgOTUwNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTgwICAgKGhleCkJCUdyaWRwb2ludCBTeXN0ZW1zCi0wMDE5ODAgICAgIChiYXNlIDE2KQkJR3JpZHBvaW50IFN5c3RlbXMKLQkJCQk0MDQzIENhcmxpbmcgQXZlbnVlLCBTdWl0ZSAyMDAKLQkJCQlPdHRhd2EgT250YXJpbyBLMksgMkEzCi0JCQkJQ0FOQURBCi0KLTAwLTE5LTgxICAgKGhleCkJCVZpdm94IEluYwotMDAxOTgxICAgICAoYmFzZSAxNikJCVZpdm94IEluYwotCQkJCTQwIFNwZWVuIFN0cmVldAotCQkJCVN1aXRlIDQwMgotCQkJCUZyYW1pbmdoYW0gTUEgMDE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTgyICAgKGhleCkJCVNtYXJEVFYKLTAwMTk4MiAgICAgKGJhc2UgMTYpCQlTbWFyRFRWCi0JCQkJNTMxIEF2ZW51ZSBkdSBTZXJwb2xldAotCQkJCVpFIEF0aOlsaWEgMgotCQkJCUxhIENpb3RhdCBGcmFuY2UgMTMgNzA0Ci0JCQkJRlJBTkNFCi0KLTAwLTE5LTgzICAgKGhleCkJCUNDVCBSJkQgTGltaXRlZAotMDAxOTgzICAgICAoYmFzZSAxNikJCUNDVCBSJkQgTGltaXRlZAotCQkJCTE4L0YgQ0NUIFRlbGVjb20gQnVpbGRpbmcKLQkJCQkxMSBXbyBTaGluZyBTdHJlZXQKLQkJCQlGb3RhbiwgU2hhdGluIE4uVC4gMDAwMAotCQkJCUhPTkcgS09ORwotCi0wMC0xOS04NCAgIChoZXgpCQlFU1RJQyBDb3Jwb3JhdGlvbgotMDAxOTg0ICAgICAoYmFzZSAxNikJCUVTVElDIENvcnBvcmF0aW9uCi0JCQkJMi01LTkgSGFzaGliYWhpZ2FzaGluby1jaG8KLQkJCQlNb3JpZ3VjaGkgT3Nha2EgNTcwLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xOS04NSAgIChoZXgpCQlJVCBXYXRjaGRvZ3MsIEluYwotMDAxOTg1ICAgICAoYmFzZSAxNikJCUlUIFdhdGNoZG9ncywgSW5jCi0JCQkJMTI4ODUgUmVzZWFyY2gsIFN1aXRlIDIxMEIKLQkJCQlBdXN0aW4gVFggNzg3NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTg2ICAgKGhleCkJCUNoZW5nIEhvbmdqaWFuCi0wMDE5ODYgICAgIChiYXNlIDE2KQkJQ2hlbmcgSG9uZ2ppYW4KLQkJCQlSbS4yMzA1Qi5TZWdlIFBsYXphLEh1YXFpYW5nIE5vcnRoIFJkLiwKLQkJCQlGdXRpYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMTktODcgICAoaGV4KQkJUGFuYXNvbmljIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMTk4NyAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgTW9iaWxlIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTYwMCBTYWVkby1jaG8sIFRzdXp1a2kta3UsCi0JCQkJWW9rb2hhbWEgQ2l0eSBLYW5hZ2F3YSBQcmVmZWN0dXJlIDIyNC04NTM5Ci0JCQkJSkFQQU4KLQotMDAtMTktODggICAoaGV4KQkJV2kyV2ksIEluYwotMDAxOTg4ICAgICAoYmFzZSAxNikJCVdpMldpLCBJbmMKLQkJCQkyMTA3IE4uIDFzdCBTdHJlZXQKLQkJCQlTdWl0ZSA1NDAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktODkgICAoaGV4KQkJU29uaXRyb2wgQ29ycG9yYXRpb24KLTAwMTk4OSAgICAgKGJhc2UgMTYpCQlTb25pdHJvbCBDb3Jwb3JhdGlvbgotCQkJCTE3MDcgT3JsYW5kbyBDZW50cmFsIFBrd3kuCi0JCQkJU3VpdGUgNTAwCi0JCQkJT3JsYW5kbyBGTCAzMjgwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktOEEgICAoaGV4KQkJTm9ydGhyb3AgR3J1bW1hbiBTeXN0ZW1zIENvcnAuCi0wMDE5OEEgICAgIChiYXNlIDE2KQkJTm9ydGhyb3AgR3J1bW1hbiBTeXN0ZW1zIENvcnAuCi0JCQkJNzA1NSBUcm95IEhpbGwgRHJpdmUKLQkJCQlFbGtyaWRnZSBNYXJ5bGFuZCAyMTA3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktOEIgICAoaGV4KQkJTm92ZXJhIE9wdGljcyBLb3JlYSwgSW5jLgotMDAxOThCICAgICAoYmFzZSAxNikJCU5vdmVyYSBPcHRpY3MgS29yZWEsIEluYy4KLQkJCQk0NjMtMSBKZW9uIE1pbiBEb25nIFl1c2VvbmcgR3UKLQkJCQlEZWFqZW9uICAzMDUtODExCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LThDICAgKGhleCkJCWlYU2VhCi0wMDE5OEMgICAgIChiYXNlIDE2KQkJaVhTZWEKLQkJCQk1NSBhdiBhdWd1c3RlIFJlbm9pcgotCQkJCU1hcmx5IGxlIFJvaSAgNzgxNjAKLQkJCQlGUkFOQ0UKLQotMDAtMTktOEQgICAoaGV4KQkJT2NlYW4gT3B0aWNzLCBJbmMuCi0wMDE5OEQgICAgIChiYXNlIDE2KQkJT2NlYW4gT3B0aWNzLCBJbmMuCi0JCQkJODMwIERvdWdsYXMgQXZlCi0JCQkJRHVuZWRpbiBGTCAzNDY5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktOEUgICAoaGV4KQkJT3RpY29uIEEvUwotMDAxOThFICAgICAoYmFzZSAxNikJCU90aWNvbiBBL1MKLQkJCQlLb25nZWJha2tlbiA5Ci0JCQkJU234cnVtICAyNzY1Ci0JCQkJREVOTUFSSwotCi0wMC0xOS04RiAgIChoZXgpCQlBbGNhdGVsIEJlbGwgTi5WLgotMDAxOThGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgQmVsbCBOLlYuCi0JCQkJQ29wZXJuaWN1c2xhYW4gNTAKLQkJCQlBbnR3ZXJwICBCLTIwMTgKLQkJCQlCRUxHSVVNCi0KLTAwLTE5LTkwICAgKGhleCkJCUVMTSBEQVRBIENvLiwgTHRkLgotMDAxOTkwICAgICAoYmFzZSAxNikJCUVMTSBEQVRBIENvLiwgTHRkLgotCQkJCTItMTUgVEVDSE5PLVBBUksgMS1DSE9NRQotCQkJCVNISU1PTk9QUE9STywgQVRTVUJFVFNVLUtVCi0JCQkJU0FQUE9STyBIT0tLQUlETyAwMDQtMDAxNQotCQkJCUpBUEFOCi0KLTAwLTE5LTkxICAgKGhleCkJCWF2aW5mbwotMDAxOTkxICAgICAoYmFzZSAxNikJCWF2aW5mbwotCQkJCUppYWh1aXl1YW4gNzAzLEh1YWFvIENlbnRlciwzMSMgWml6aHV5dWFuIFJvYWQsCi0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4OQotCQkJCUNISU5BCi0KLTAwLTE5LTkyICAgKGhleCkJCUJsdWVzb2NrZXQsIEluYwotMDAxOTkyICAgICAoYmFzZSAxNikJCUJsdWVzb2NrZXQsIEluYwotCQkJCTEwIE5vcnRoIEF2ZQotCQkJCUJ1cmxpbmd0b24gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTkzICAgKGhleCkJCUNoYW5nc2h1IFN3aXRjaGdlYXIgTUZHLiBDby4sTHRkLiAoRm9ybWVyIENoYW5nc2h1IFN3aXRjaGdlYQotMDAxOTkzICAgICAoYmFzZSAxNikJCUNoYW5nc2h1IFN3aXRjaGdlYXIgTUZHLiBDby4sTHRkLiAoRm9ybWVyIENoYW5nc2h1IFN3aXRjaGdlYQotCQkJCU5vLiA4IEppYW55ZSBSb2FkCi0JCQkJQ2hhbmdzaHUgSmlhbmdzdSAyMTU1MDAKLQkJCQlDSElOQQotCi0wMC0xOS05NCAgIChoZXgpCQlKb3JqaW4gVGVjaG5vbG9naWVzIEluYy4KLTAwMTk5NCAgICAgKGJhc2UgMTYpCQlKb3JqaW4gVGVjaG5vbG9naWVzIEluYy4KLQkJCQk1RiwgTm8uMjgsIExhbmUxNDEsIFNpbmctYWkgUmQuCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktOTUgICAoaGV4KQkJSnVyb25nIEhpLVRlY2ggKFN1emhvdSlDby5sdGQKLTAwMTk5NSAgICAgKGJhc2UgMTYpCQlKdXJvbmcgSGktVGVjaCAoU3V6aG91KUNvLmx0ZAotCQkJCTI3NSxYaW5nIExvbmcgU3RyZWV0o6xTdXpob3UgSW5kdWR0cmlhbCBQYXJrCi0JCQkJU3V6aG91IEppYW5nIFN1IDIxNTAyMQotCQkJCUNISU5BCi0KLTAwLTE5LTk2ICAgKGhleCkJCVR1cmJvQ2hlZiBUZWNobm9sb2dpZXMgSW5jLgotMDAxOTk2ICAgICAoYmFzZSAxNikJCVR1cmJvQ2hlZiBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTQyNDAgSW50ZXJuYXRpb25hbCBQYXJrd2F5Ci0JCQkJU3VpdGUgMTA1Ci0JCQkJQ2Fycm9sbHRvbiBUZXhhcyA3NTAwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktOTcgICAoaGV4KQkJU29mdCBEZXZpY2UgU2RuIEJoZAotMDAxOTk3ICAgICAoYmFzZSAxNikJCVNvZnQgRGV2aWNlIFNkbiBCaGQKLQkJCQk2Ny0yIEphbGFuIDIvMjdGCi0JCQkJS0xTQyBXYW5nc2EgTWFqdQotCQkJCUt1YWxhIEx1bXB1ciBXUCA1MzMwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE5LTk4ICAgKGhleCkJCVNBVE8gQ09SUE9SQVRJT04KLTAwMTk5OCAgICAgKGJhc2UgMTYpCQlTQVRPIENPUlBPUkFUSU9OCi0JCQkJMS0yMDcsT05BUkktQ0hPLAotCQkJCU9NSVlBLUtVCi0JCQkJU0FJVEFNQS1TSEkgU0FJVEFNQSAzMzAtMDg1MgotCQkJCUpBUEFOCi0KLTAwLTE5LTk5ICAgKGhleCkJCUZ1aml0c3UgVGVjaG5vbG9neSBTb2x1dGlvbnMKLTAwMTk5OSAgICAgKGJhc2UgMTYpCQlGdWppdHN1IFRlY2hub2xvZ3kgU29sdXRpb25zCi0JCQkJQnVlcmdlcm1laXN0ZXItVWxyaWNoLVN0cmFzc2UgMTAwCi0JCQkJQXVnc2J1cmcgIDg2MTk5Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS05QSAgIChoZXgpCQlFRE8tRVZJCi0wMDE5OUEgICAgIChiYXNlIDE2KQkJRURPLUVWSQotCQkJCTcwNjUgQ29sdW1iaWEgR2F0ZXdheSBEci4KLQkJCQlDb2x1bWJpYSBNRCAyMTA0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktOUIgICAoaGV4KQkJRGl2ZXJzaWZpZWQgVGVjaG5pY2FsIFN5c3RlbXMsIEluYy4KLTAwMTk5QiAgICAgKGJhc2UgMTYpCQlEaXZlcnNpZmllZCBUZWNobmljYWwgU3lzdGVtcywgSW5jLgotCQkJCTkwOSBFbGVjdHJpYyBBdmVudWUKLQkJCQlTdWl0ZSAyMDYKLQkJCQlTZWFsIEJlYWNoIENhbGlmb3JuaWEgOTA3NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTlDICAgKGhleCkJCUNUUklORwotMDAxOTlDICAgICAoYmFzZSAxNikJCUNUUklORwotCQkJCSM1MTQsIFdvcmxkIE1lcmlkaWFuIFZlbnR1cmUgQ2VudGVyIElJCi0JCQkJR2FzbmEtZG9uZwotCQkJCUtldW1jaGVvbi1ndSBTZW91bCAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTlEICAgKGhleCkJCVZJWklPLCBJbmMuCi0wMDE5OUQgICAgIChiYXNlIDE2KQkJVklaSU8sIEluYy4KLQkJCQkzOSBUZXNsYQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktOUUgICAoaGV4KQkJU0hPV0FERU5TSEkgRUxFQ1RST05JQ1MsSU5DLgotMDAxOTlFICAgICAoYmFzZSAxNikJCVNIT1dBREVOU0hJIEVMRUNUUk9OSUNTLElOQy4KLQkJCQkxOTc4IEhJUk9PS0EtTk9NVVJBCi0JCQkJU0hJT0pJUkktQ0lUWSBOQUdBTk8tUFJFRi4gMzk5LTA3MDIKLQkJCQlKQVBBTgotCi0wMC0xOS05RiAgIChoZXgpCQlES1QgQS9TCi0wMDE5OUYgICAgIChiYXNlIDE2KQkJREtUIEEvUwotCQkJCUZhbm9ldmVqIDYKLQkJCQlLci4gU2FhYnkgIERLLTQwNjAKLQkJCQlERU5NQVJLCi0KLTAwLTE5LUEwICAgKGhleCkJCU5JSE9OIERBVEEgU1lTVEVOUywgSU5DLgotMDAxOUEwICAgICAoYmFzZSAxNikJCU5JSE9OIERBVEEgU1lTVEVOUywgSU5DLgotCQkJCTYtOSwgS295by1jaG8gbmFrYQotCQkJCUhpZ2FzaGluYWRhLWt1Ci0JCQkJS29iZS1zaGkgSHlvZ28gNjU4LTAwMzIKLQkJCQlKQVBBTgotCi0wMC0xOS1BMSAgIChoZXgpCQlMRyBJTkZPUk1BVElPTiAmIENPTU0uCi0wMDE5QTEgICAgIChiYXNlIDE2KQkJTEcgSU5GT1JNQVRJT04gJiBDT01NLgotCQkJCTYwLTM5LEthc2FuLWRvbmcsS3VtY2hvbi1rdQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LUEyICAgKGhleCkJCU9SRFlOIFRFQ0hOT0xPR0lFUwotMDAxOUEyICAgICAoYmFzZSAxNikJCU9SRFlOIFRFQ0hOT0xPR0lFUwotCQkJCU96b25lIE1hbmF5IFRlY2ggUGFyaywgCi0JCQkJMm5kIEZsb29yLCBUb3dlciBCLCBCZWd1ciBIb2JsaSwgSG9uZ2FzYW5kcmEsIEhvc3VyIFJvYWQsIAotCQkJCUJhbmdhbG9yZSAgIDU2MCAwNjgKLQkJCQlJTkRJQQotCi0wMC0xOS1BMyAgIChoZXgpCQlhc3RlZWwgZWxlY3Ryb25pcXVlIGF0bGFudGlxdWUKLTAwMTlBMyAgICAgKGJhc2UgMTYpCQlhc3RlZWwgZWxlY3Ryb25pcXVlIGF0bGFudGlxdWUKLQkJCQl6YSBkZSBsYSBsYW5kZSBkZSBzYWludCBqZWFuCi0JCQkJYnAgOTAxMTEKLQkJCQlzYWludGUgbWFyaWUgZGUgcmVkb24gIDM1NjAwCi0JCQkJRlJBTkNFCi0KLTAwLTE5LUE0ICAgKGhleCkJCUF1c3RhciBUZWNobm9sb2d5IChoYW5nIHpob3UpIENvLixMdGQKLTAwMTlBNCAgICAgKGJhc2UgMTYpCQlBdXN0YXIgVGVjaG5vbG9neSAoaGFuZyB6aG91KSBDby4sTHRkCi0JCQkJNy00MDIsV2VzdCBMYWtlIFNvZnR3YXJlIFBhcnQKLQkJCQlObyAxLEppYWdvbmcgUmQuCi0JCQkJSGFuZyBaaG91IFpoZSBKaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi0wMC0xOS1BNSAgIChoZXgpCQlSYWRhckZpbmQgQ29ycG9yYXRpb24KLTAwMTlBNSAgICAgKGJhc2UgMTYpCQlSYWRhckZpbmQgQ29ycG9yYXRpb24KLQkJCQkyMTAwIEdhdGV3YXkgQ2VudHJlIEJsdmQuLCBTdWl0ZSAxNTAKLQkJCQlNb3JyaXN2aWxsZSBOQyAyNzU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQTYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDE5QTYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQTcgICAoaGV4KQkJSVRVLVQKLTAwMTlBNyAgICAgKGJhc2UgMTYpCQlJVFUtVAotCQkJCVBsYWNlIGRlcyBOYXRpb25zCi0JCQkJR2VuZXZhIDIwICBDSC0xMjExCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTktQTggICAoaGV4KQkJV2lRdWVzdCBDb21tdW5pY2F0aW9ucwotMDAxOUE4ICAgICAoYmFzZSAxNikJCVdpUXVlc3QgQ29tbXVuaWNhdGlvbnMKLQkJCQk5MTUgRW50ZXJwcmlzZSBCbHZkLgotCQkJCVN1aXRlIDIwMAotCQkJCUFsbGVuIFRleGFzIDc1MDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1BOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5QTkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1BQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5QUEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1BQiAgIChoZXgpCQlSYXljb20gQ08gLiwgTFRECi0wMDE5QUIgICAgIChiYXNlIDE2KQkJUmF5Y29tIENPIC4sIExURAotCQkJCUEsMy00L0ZMLCBCdWlsZGluZyAxLDI3IENodWFuZ3hpbiBSb2FkLAotCQkJCUNoYW5ncGluZyBTY2llbmNlIFBhcmsKLQkJCQlCZWlqaW5nICAxMDIyMDAKLQkJCQlDSElOQQotCi0wMC0xOS1BQyAgIChoZXgpCQlHU1AgU1lTVEVNUyBJbmMuCi0wMDE5QUMgICAgIChiYXNlIDE2KQkJR1NQIFNZU1RFTVMgSW5jLgotCQkJCTEzRkwsIDEwMSBEb25nLCBDaHVudWkgVGVjaG5vIFBhcmsgMSwKLQkJCQkyMDAtMSwgQ2h1bnVpLURvbmcsIFdvbm1pLUdVLAotCQkJCUJ1Y2hlb24tQ2l0eSBHeWVvbmdnaS1EbyA0MjAtODU3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LUFEICAgKGhleCkJCUJPQlNUIFNBCi0wMDE5QUQgICAgIChiYXNlIDE2KQkJQk9CU1QgU0EKLQkJCQlydGUgZGVzIGZsdW1lYXV4IDUwCi0JCQkJQ2FzZSBQb3N0YWxlIDEwMDEgTGF1c2FubmUKLQkJCQlQUklMTFkgVkQgMTAwOAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE5LUFFICAgKGhleCkJCUhvcGxpbmcgVGVjaG5vbG9naWVzIGIudi4KLTAwMTlBRSAgICAgKGJhc2UgMTYpCQlIb3BsaW5nIFRlY2hub2xvZ2llcyBiLnYuCi0JCQkJQ2FtZXJhc3RyYWF0IDEwCi0JCQkJQWxtZXJlIEZsZXZvbGFuZCAxMzIyIEJDCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTktQUYgICAoaGV4KQkJUmlnb2wgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDE5QUYgICAgIChiYXNlIDE2KQkJUmlnb2wgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJTm8uIDE1NiBDYWkgSGUgVmlsbGFnZSwgU2hhIEhlIFRvd24KLQkJCQlDaGFuZyBQaW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAyMjA2Ci0JCQkJQ0hJTkEKLQotMDAtMTktQjAgICAoaGV4KQkJSGFuWWFuZyBTeXN0ZW0KLTAwMTlCMCAgICAgKGJhc2UgMTYpCQlIYW5ZYW5nIFN5c3RlbQotCQkJCTcwMUhvLCBLb2ZvbW8gVGVjaG5vIENlbnRlciBJSSwgMTI4OS01Ci0JCQkJSnVuZ3dhbmctRG9uZwotCQkJCVNoaWh1bmctU2hpIEt5dW5nZ2ktRG8gNDI5LTg1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS1CMSAgIChoZXgpCQlBcnJvdzcgQ29ycG9yYXRpb24KLTAwMTlCMSAgICAgKGJhc2UgMTYpCQlBcnJvdzcgQ29ycG9yYXRpb24KLQkJCQlLYW1pamltYSAzLTI3LTcKLQkJCQlIYW1hbWF0c3UgU2hpenVva2EgNDMzLTgxMjIKLQkJCQlKQVBBTgotCi0wMC0xOS1CMiAgIChoZXgpCQlYWW5ldHNvZnQgQ28uLEx0ZAotMDAxOUIyICAgICAoYmFzZSAxNikJCVhZbmV0c29mdCBDby4sTHRkCi0JCQkJTk8uMTU4Wmhlbnl1IFN0cmVldCBIaWdoIEluZHVzdHJpZXMgRGV2ZWxvcG1lbnQgYXJlYQotCQkJCUNoYW5nQ2h1biBKaUxpbiAxMzAwMDAKLQkJCQlDSElOQQotCi0wMC0xOS1CMyAgIChoZXgpCQlTdGFuZm9yZCBSZXNlYXJjaCBTeXN0ZW1zCi0wMDE5QjMgICAgIChiYXNlIDE2KQkJU3RhbmZvcmQgUmVzZWFyY2ggU3lzdGVtcwotCQkJCTEyOTAtRCBSZWFtd29vZCBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUI0ICAgKGhleCkJCVZpZGVvQ2FzdCBMdGQuCi0wMDE5QjQgICAgIChiYXNlIDE2KQkJVmlkZW9DYXN0IEx0ZC4KLQkJCQlHeWFybWF0IHUuIDk5L0IKLQkJCQlCdWRhcGVzdCAgMTE0NwotCQkJCUhVTkdBUlkKLQotMDAtMTktQjUgICAoaGV4KQkJRmFtYXIgRnVlZ3VpbmEgUy5BLgotMDAxOUI1ICAgICAoYmFzZSAxNikJCUZhbWFyIEZ1ZWd1aW5hIFMuQS4KLQkJCQlSb2RuZXkgNzAKLQkJCQlCdWVub3MgQWlyZXMgIDE0MjcKLQkJCQlBUkdFTlRJTkEKLQotMDAtMTktQjYgICAoaGV4KQkJRXVybyBFbW1lIHMuci5sLgotMDAxOUI2ICAgICAoYmFzZSAxNikJCUV1cm8gRW1tZSBzLnIubC4KLQkJCQlWaWEgQmVsdmVkZXJlLCAyNAotCQkJCUdhbGxpYXRlIExvbWJhcmRvIFZhcmVzZSAyMTAyMAotCQkJCUlUQUxZCi0KLTAwLTE5LUI3ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE5QjcgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTE5LUI4ICAgKGhleCkJCUJvdW5kYXJ5IERldmljZXMKLTAwMTlCOCAgICAgKGJhc2UgMTYpCQlCb3VuZGFyeSBEZXZpY2VzCi0JCQkJNzIwMCBXLiBPYWtsYW5kCi0JCQkJQ2hhbmRsZXIgQVogODUyMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUI5ICAgKGhleCkJCURlbGwgSW5jLgotMDAxOUI5ICAgICAoYmFzZSAxNikJCURlbGwgSW5jLgotCQkJCU9uZSBEZWxsIFdheQotCQkJCU1TIDg1NDUKLQkJCQlSb3VuZCBSb2NrIFRYIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1CQSAgIChoZXgpCQlQYXJhZG94IFNlY3VyaXR5IFN5c3RlbXMgTHRkCi0wMDE5QkEgICAgIChiYXNlIDE2KQkJUGFyYWRveCBTZWN1cml0eSBTeXN0ZW1zIEx0ZAotCQkJCTc4MCBJbmR1c3RyaWFsIEJsdmQKLQkJCQlTdC1FdXN0YWNoZSBRdWViZWMgSjdSIDVWMwotCQkJCUNBTkFEQQotCi0wMC0xOS1CQiAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMTlCQiAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDYwMzA4Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQkMgICAoaGV4KQkJRUxFQ1RSTyBDSEFOQ0UgU1JMCi0wMDE5QkMgICAgIChiYXNlIDE2KQkJRUxFQ1RSTyBDSEFOQ0UgU1JMCi0JCQkJQ0FSSFVFIDMxNzkKLQkJCQlBVi4gRVZBIFBFUk9OIDcwNDkKLQkJCQlDQVBJVEFMIEZFREVSQUwgQlVFTk9TIEFJUkVTIDE0NDAKLQkJCQlBUkdFTlRJTkEKLQotMDAtMTktQkQgICAoaGV4KQkJTmV3IE1lZGlhIExpZmUKLTAwMTlCRCAgICAgKGJhc2UgMTYpCQlOZXcgTWVkaWEgTGlmZQotCQkJCUhlYSBKdSBCaWxkLCA1RiwgODM3LTcsIFllb2tzYW0tZG9uZwotCQkJCUthbmduYW0tZ3UgU2VvdWwgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS1CRSAgIChoZXgpCQlBbHRhaSBUZWNobm9sb2dpZXMgTGltaXRlZAotMDAxOUJFICAgICAoYmFzZSAxNikJCUFsdGFpIFRlY2hub2xvZ2llcyBMaW1pdGVkCi0JCQkJVW5pdCAxMDNCIGFuZCAxMDUsIDEvRiwgQmxvY2sgOSwKLQkJCQlIb25nIEtvbmcgU2NpZW5jZSBQYXJrCi0JCQkJU2hhdGluIE5ldyBUZXJyaXRvcmllcyAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTktQkYgICAoaGV4KQkJQ2l0aXdheSB0ZWNobm9sb2d5IENvLixsdGQKLTAwMTlCRiAgICAgKGJhc2UgMTYpCQlDaXRpd2F5IHRlY2hub2xvZ3kgQ28uLGx0ZAotCQkJCU5vLjIgQnVpbGRpbmcsSmlhIDMyLEJlaWhleWFuIEF2ZW51ZSxFYXN0IENpdHkKLQkJCQlQZWlqaW5nICAxMDAwMDYKLQkJCQlDSElOQQotCi0wMC0xOS1DMCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMTlDMCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1DMSAgIChoZXgpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0wMDE5QzEgICAgIChiYXNlIDE2KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGksCi0JCQkJU29tYS1jaXR5IEZ1a3VzaGltYS1wcmVmLiA5NzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTE5LUMyICAgKGhleCkJCUVxdXVzdGVrIFNvbHV0aW9ucywgSW5jLgotMDAxOUMyICAgICAoYmFzZSAxNikJCUVxdXVzdGVrIFNvbHV0aW9ucywgSW5jLgotCQkJCSMyODYgLSA1NDg5IEJ5cm5lIFJvYWQsCi0JCQkJQnVybmFieSBCQyBWNUogM0oxCi0JCQkJQ0FOQURBCi0KLTAwLTE5LUMzICAgKGhleCkJCVF1YWxpdHJvbAotMDAxOUMzICAgICAoYmFzZSAxNikJCVF1YWxpdHJvbAotCQkJCVdpbGRmbG93ZXIgV2F5Ci0JCQkJQXBvbGxvIFJvYWQKLQkJCQlCZWxmYXN0IENvLiBBbnRyaW0gQlQxMiA2VEEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOS1DNCAgIChoZXgpCQlJbmZvY3J5cHQgSW5jLgotMDAxOUM0ICAgICAoYmFzZSAxNikJCUluZm9jcnlwdCBJbmMuCi0JCQkJNzExLCBCWVVDS1NBTiBESUdJVEFMIFZBTExFWSAxIDIxMi0xNiwKLQkJCQlHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktQzUgICAoaGV4KQkJU09OWSBDb21wdXRlciBFbnRlcnRhaW5tZW50IGluYywKLTAwMTlDNSAgICAgKGJhc2UgMTYpCQlTT05ZIENvbXB1dGVyIEVudGVydGFpbm1lbnQgaW5jLAotCQkJCTYtMjEsMkNob21lCi0JCQkJTWluYW1pLUFveWFtYQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDctMDA2MgotCQkJCUpBUEFOCi0KLTAwLTE5LUM2ICAgKGhleCkJCVpURSBDb3Jwb3JhdGlvbgotMDAxOUM2ICAgICAoYmFzZSAxNikJCVpURSBDb3Jwb3JhdGlvbgotCQkJCVRlY2hub2xvZ3kgTWFuYWdlbWVudCBEZXBhcnRtZW50LCAKLQkJCQkxMi9GLiwgWlRFIFImRCBCdWlsZGluZywgS2VqaW5hbiBSb2FkCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE5LUM3ICAgKGhleCkJCUNhbWJyaWRnZSBJbmR1c3RyaWVzKEdyb3VwKSBDby4sTHRkLgotMDAxOUM3ICAgICAoYmFzZSAxNikJCUNhbWJyaWRnZSBJbmR1c3RyaWVzKEdyb3VwKSBDby4sTHRkLgotCQkJCVJvb20gMzA5LDMzMyBIb25nIFFpYW8gUm9hZAotCQkJCVNoYW5naGFpICAyMDAwMzAKLQkJCQlDSElOQQotCi0wMC0xOS1DOCAgIChoZXgpCQlBbnlEQVRBIENvcnBvcmF0aW9uCi0wMDE5QzggICAgIChiYXNlIDE2KQkJQW55REFUQSBDb3Jwb3JhdGlvbgotCQkJCTE4OTAyIEJhcmRlZW4gQXZlLgotCQkJCUlydmluZSBDQSA5MTYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQzkgICAoaGV4KQkJUyZDIEVMRUNUUklDIENPTVBBTlkKLTAwMTlDOSAgICAgKGJhc2UgMTYpCQlTJkMgRUxFQ1RSSUMgQ09NUEFOWQotCQkJCTExMzUgQVRMQU5USUMgQVZFCi0JCQkJQUxBTUVEQSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQ0EgICAoaGV4KQkJQnJvYWRhdGEgQ29tbXVuaWNhdGlvbnMsIEluYwotMDAxOUNBICAgICAoYmFzZSAxNikJCUJyb2FkYXRhIENvbW11bmljYXRpb25zLCBJbmMKLQkJCQkyNTQ1IFcgMjM3dGggU3QgU3RlIEsKLQkJCQlUb3JyYW5jZSBDYSA5MDUwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQ0IgICAoaGV4KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMTlDQiAgICAgKGJhc2UgMTYpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotCQkJCU5vLiA2LCBJbm5vdmF0aW9uIFJvYWQgSUkKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyaywgSHNpbmNodSAzMDAKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LUNDICAgKGhleCkJCVJDRyAoSEspIEx0ZAotMDAxOUNDICAgICAoYmFzZSAxNikJCVJDRyAoSEspIEx0ZAotCQkJCTkvRi4sIENvcmUgQywgQ3liZXJwb3J0IDMKLQkJCQkxMDAgQ3liZXJwb3J0IFJkCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE5LUNEICAgKGhleCkJCUNoZW5nZHUgZXRoZXJjb20gaW5mb3JtYXRpb24gdGVjaG5vbG9neSBMdGQuCi0wMDE5Q0QgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSBldGhlcmNvbSBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5IEx0ZC4KLQkJCQlTb3V0aCBFeHRlbnNpb24gb2YgVGlhbmZ1IFdpZGUgUm9hZCBOby43IGRlcGFydG1lbnQgcm9vbSAyMDEKLQkJCQlDaGVuZ2R1IFNpY2h1YW4gNjEwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMTktQ0UgICAoaGV4KQkJUHJvZ3Jlc3NpdmUgR2FtaW5nIEludGVybmF0aW9uYWwKLTAwMTlDRSAgICAgKGJhc2UgMTYpCQlQcm9ncmVzc2l2ZSBHYW1pbmcgSW50ZXJuYXRpb25hbAotCQkJCTkyMCBQaWxvdCBSb2FkCi0JCQkJTGFzIFZlZ2FzIE5WIDg5MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1DRiAgIChoZXgpCQlTQUxJQ1JVLCBTLkEuCi0wMDE5Q0YgICAgIChiYXNlIDE2KQkJU0FMSUNSVSwgUy5BLgotCQkJCUF2LiBTZXJyYSAsIDEwMAotCQkJCVN0YS5NYS5QYWxhdXRvcmRlcmEgQmFyY2Vsb25hIDA4NDYwCi0JCQkJU1BBSU4KLQotMDAtMTktRDAgICAoaGV4KQkJQ2F0aGV4aXMKLTAwMTlEMCAgICAgKGJhc2UgMTYpCQlDYXRoZXhpcwotCQkJCVBPIEJveCAxMDkxCi0JCQkJVW1obGFuZ2EgUm9ja3MKLQkJCQlEdXJiYW4gS3dhWnVsdSBOYXRhbCA0MzIwCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTE5LUQxICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi0wMDE5RDEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE5LUQyICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi0wMDE5RDIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE5LUQzICAgKGhleCkJCVRSQUsgTWljcm93YXZlCi0wMDE5RDMgICAgIChiYXNlIDE2KQkJVFJBSyBNaWNyb3dhdmUKLQkJCQk0NzI2IEVpc2VuaG93ZXIgQmx2ZAotCQkJCVRhbXBhIEZMIDMzNjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1ENCAgIChoZXgpCQlJQ1ggVGVjaG5vbG9naWVzCi0wMDE5RDQgICAgIChiYXNlIDE2KQkJSUNYIFRlY2hub2xvZ2llcwotCQkJCTM0NDAgRnJhbmNpcy1IdWdoZXMKLQkJCQlTdWl0ZSAxMjAKLQkJCQlMYXZhbCBRdWViZWMgSDdMIDVBOQotCQkJCUNBTkFEQQotCi0wMC0xOS1ENSAgIChoZXgpCQlJUCBJbm5vdmF0aW9ucywgSW5jLgotMDAxOUQ1ICAgICAoYmFzZSAxNikJCUlQIElubm92YXRpb25zLCBJbmMuCi0JCQkJMTUxNyAxNDZ0aCBBdmUKLQkJCQlEb3JyIE1JIDQ5MzIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1ENiAgIChoZXgpCQlMUyBDYWJsZSBMdGQuCi0wMDE5RDYgICAgIChiYXNlIDE2KQkJTFMgQ2FibGUgTHRkLgotCQkJCTEyRiBMUyBUb3dlciwgMTAyNi02LCBIb2dleS1kb25nCi0JCQkJQW55YW5nLXNpIEd5ZW9uZ2dpLWRvIDQzMS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktRDcgICAoaGV4KQkJRk9SVFVORVRFSyBDTy4sIExURAotMDAxOUQ3ICAgICAoYmFzZSAxNikJCUZPUlRVTkVURUsgQ08uLCBMVEQKLQkJCQkxMkYsIE5vLiA3NSwgU2VjIDEsIENob25ncWluZyBTLiBSZC4sCi0JCQkJWmhvbmd6aGVuZyBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS1EOCAgIChoZXgpCQlNQVhGT1IKLTAwMTlEOCAgICAgKGJhc2UgMTYpCQlNQVhGT1IKLQkJCQkjRSA4MDksIEJ1bmRhbmcsIFRlY2huby1QYXJrCi0JCQkJWWF0YXAtRG9uZywgQnVuZ2RhbmctR3UKLQkJCQlTZW9uZ25hbS1DaXR5IEd5ZW9uZ2dpLURvIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktRDkgICAoaGV4KQkJWmV1dHNjaGVsIEdtYkgKLTAwMTlEOSAgICAgKGJhc2UgMTYpCQlaZXV0c2NoZWwgR21iSAotCQkJCUhlZXJ3ZWcgMgotCQkJCVT8YmluZ2VuLUhpcnNjaGF1IEJXIEQtNzIwNzAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LURBICAgKGhleCkJCVdlbGx0cmFucyBPJkUgVGVjaG5vbG9neSBDby4gLCBMdGQuCi0wMDE5REEgICAgIChiYXNlIDE2KQkJV2VsbHRyYW5zIE8mRSBUZWNobm9sb2d5IENvLiAsIEx0ZC4KLQkJCQl0aGUgM3JkIEZsb29yLCBidWlsZGluZyBDLUQsIEhpLXRlY2ggRGlnaXRhbCBIYXJib3IsIEd1YW5kb25nIEluZHVzdHJpYWwgUGFyawotCQkJCVd1aGFuIEh1YmVpIDQzMDA3NAotCQkJCUNISU5BCi0KLTAwLTE5LURCICAgKGhleCkJCU1JQ1JPLVNUQVIgSU5URVJOQVRJT05BTCBDTy4sIExURC4KLTAwMTlEQiAgICAgKGJhc2UgMTYpCQlNSUNSTy1TVEFSIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0JCQkJTk8uIDY5LCBMSS1ERSBTVC4sIEpVTkctSEUgQ0lUWQotCQkJCVRBSVBFSSBIU0lFTiAgMjM1Ci0JCQkJVFVWQUxVCi0KLTAwLTE5LURDICAgKGhleCkJCUVORU5TWVMgVGVjaG5vbG9naWVzCi0wMDE5REMgICAgIChiYXNlIDE2KQkJRU5FTlNZUyBUZWNobm9sb2dpZXMKLQkJCQlMZSBHZXJtYW5pdW0KLQkJCQk4MCBBdmVudWUgZGVzIGJ1dHRlcyBkZSBDb+tzbWVzCi0JCQkJUkVOTkVTIEJyaXR0YW55IDM1NzAwCi0JCQkJRlJBTkNFCi0KLTAwLTE5LUREICAgKGhleCkJCUZFSS1aeWZlciwgSW5jLgotMDAxOUREICAgICAoYmFzZSAxNikJCUZFSS1aeWZlciwgSW5jLgotCQkJCTE1MTUgUy4gTWFuY2hlc3RlcgotCQkJCUFuYWhlaW0gQ0EgOTI4MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LURFICAgKGhleCkJCU1PQklURUsKLTAwMTlERSAgICAgKGJhc2UgMTYpCQlNT0JJVEVLCi0JCQkJNUYsTm8uNjAsTGFuZSAzMjEsWWFuZy1Ld2FuZyBTdHJlZXQKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktREYgICAoaGV4KQkJVGhvbXNvbiBJbmMuCi0wMDE5REYgICAgIChiYXNlIDE2KQkJVGhvbXNvbiBJbmMuCi0JCQkJMTAxIFdlc3QgMTAzcmQgU3RyZWV0Ci0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjkwLTExMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUUwICAgKGhleCkJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAxOUUwICAgICAoYmFzZSAxNikJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCVNvdXRoIEJ1aWxkaW5nLCBOby41IEtleXVhbiBSb2FkCi0JCQkJQ2VudHJhbCBab25lLCBTY2llbmNlICYgVGVjaG5vbG9neSBQYXJrCi0JCQkJTmFuc2hhbiBTaGVuemhlbiA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xOS1FMSAgIChoZXgpCQlOb3J0ZWwKLTAwMTlFMSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTktRTIgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAxOUUyICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4uIE1hdGhpbGRhIEF2ZS4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUUzICAgKGhleCkJCUFwcGxlIENvbXB1dGVyIEluYy4KLTAwMTlFMyAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlciBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENhbGlmb3JuaWEgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUU0ICAgKGhleCkJCTJXaXJlLCBJbmMKLTAwMTlFNCAgICAgKGJhc2UgMTYpCQkyV2lyZSwgSW5jCi0JCQkJMTcwNCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRTUgICAoaGV4KQkJTHlueCBTdHVkaW8gVGVjaG5vbG9neSwgSW5jLgotMDAxOUU1ICAgICAoYmFzZSAxNikJCUx5bnggU3R1ZGlvIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxNTQwIEJhcnRvbiBSZCAjIDI2OAotCQkJCVJlZGxhbmRzIENBIDkyMzczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1FNiAgIChoZXgpCQlUT1lPIE1FRElDIENPLixMVEQuCi0wMDE5RTYgICAgIChiYXNlIDE2KQkJVE9ZTyBNRURJQyBDTy4sTFRELgotCQkJCTEtMTctMjIgS2l0YWhvcmllLCBOaXNoaS1rdQotCQkJCU9zYWthICA1NTAtMDAxNAotCQkJCUpBUEFOCi0KLTAwLTE5LUU3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTlFNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUU4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTlFOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUU5ICAgKGhleCkJCVMtSW5mb3JtYXRpb24gVGVjaG5vbGd5LCBDby4sIEx0ZC4KLTAwMTlFOSAgICAgKGJhc2UgMTYpCQlTLUluZm9ybWF0aW9uIFRlY2hub2xneSwgQ28uLCBMdGQuCi0JCQkJU3VuZ3dvbyBCbGRnLCA3MTctMyBTdXNlby1kb25nLAotCQkJCUdhbmduYW0tZ3UsCi0JCQkJU2VvdWwgIDEzNS04ODQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktRUEgICAoaGV4KQkJVGVyYU1hZ2UgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAxOUVBICAgICAoYmFzZSAxNikJCVRlcmFNYWdlIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlHb2xkZW4gTGFuZCBCdWlsZGluZyBTdWl0ZSA5MDcKLQkJCQkzMiBMaWFuZyBNYSBCcmlkZ2UgUm9hZAotCQkJCUJlaWppbmcgIDEwMDAxNgotCQkJCUNISU5BCi0KLTAwLTE5LUVCICAgKGhleCkJCVB5cm9uaXggTHRkCi0wMDE5RUIgICAgIChiYXNlIDE2KQkJUHlyb25peCBMdGQKLQkJCQlCcmFpdGh3ZWxsIFdheQotCQkJCUhlbGxhYnkKLQkJCQlSb3RoZXJoYW0gU291dGggWW9ya3NoaXJlIFM2NiA4UVkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOS1FQyAgIChoZXgpCQlTYWdhbW9yZSBTeXN0ZW1zLCBJbmMuCi0wMDE5RUMgICAgIChiYXNlIDE2KQkJU2FnYW1vcmUgU3lzdGVtcywgSW5jLgotCQkJCTU1IE1pZGRsZXNleCBTdHJlZXQKLQkJCQlTdWl0ZSAyMTcKLQkJCQlOb3J0aCBDaGVsbXNmb3JkIE1BIDAxODYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1FRCAgIChoZXgpCQlBeGVzc3RlbCBJbmMuCi0wMDE5RUQgICAgIChiYXNlIDE2KQkJQXhlc3N0ZWwgSW5jLgotCQkJCTY4MTUgRmxhbmRlcnMgU3IuCi0JCQkJU3RlIDIxMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRUUgICAoaGV4KQkJQ0FSTE8gR0FWQVpaSSBDT05UUk9MUyBTUEEtQ29udHJvbHMgRGl2aXNpb24KLTAwMTlFRSAgICAgKGJhc2UgMTYpCQlDQVJMTyBHQVZBWlpJIENPTlRST0xTIFNQQS1Db250cm9scyBEaXZpc2lvbgotCQkJCVZpYSBTYWZmb3J6ZSA4Ci0JCQkJQkVMTFVOTyBCTCBJLTMyMTAwCi0JCQkJSVRBTFkKLQotMDAtMTktRUYgICAoaGV4KQkJU0hFTlpIRU4gTElOTktJTkcgRUxFQ1RST05JQ1MgQ08uLExURAotMDAxOUVGICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIExJTk5LSU5HIEVMRUNUUk9OSUNTIENPLixMVEQKLQkJCQlSb29tIDkwMSxCIEJsb2NrLFFpbmdodWEgSW5mb3JtYXRpb24gQ2VudGVyIEhpLXRlYyBwYXJrIE5vcnRoIERpc3RyaWN0LE5hbnNoYW4gRGlzdHJpY3QsU2hlbnpoZW4KLQkJCQlzaGVuemhlbiBndWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMTktRjAgICAoaGV4KQkJVU5JT05NQU4gVEVDSE5PTE9HWSBDTy4sTFRECi0wMDE5RjAgICAgIChiYXNlIDE2KQkJVU5JT05NQU4gVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJMThGLCBIVUFZQU5HIFRPV0VSLFlBTkRBWUkgUk9BRAotCQkJCUhVSVpIT1UgR1VBTkdET05HIDUxNjAwNwotCQkJCUNISU5BCi0KLTAwLTE5LUYxICAgKGhleCkJCVN0YXIgQ29tbXVuaWNhdGlvbiBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxOUYxICAgICAoYmFzZSAxNikJCVN0YXIgQ29tbXVuaWNhdGlvbiBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTEwL0YsVG93ZXIgQixTT0hPIE5ldyBUb3duLE5vLjg4IGppYW5ndW9Sb2FkLENoYW95YW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDIyCi0JCQkJQ0hJTkEKLQotMDAtMTktRjIgICAoaGV4KQkJVGVyYWR5bmUgSy5LLgotMDAxOUYyICAgICAoYmFzZSAxNikJCVRlcmFkeW5lIEsuSy4KLQkJCQkyNzItMTMsIEhlaXNlaSwgVGFrYW9ubwotCQkJCU96dS1tYWNoaQotCQkJCUtpa3VjaGktZ3VuIEt1bWFtb3RvIDg2OS0xMjMyCi0JCQkJSkFQQU4KLQotMDAtMTktRjMgICAoaGV4KQkJQ2V0aXMsIEluYwotMDAxOUYzICAgICAoYmFzZSAxNikJCUNldGlzLCBJbmMKLQkJCQk1MDI1IEdhbGxleSBSZAotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ08gODA5MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUY0ICAgKGhleCkJCUNvbnZlcmdlbnMgT3kgTHRkCi0wMDE5RjQgICAgIChiYXNlIDE2KQkJQ29udmVyZ2VucyBPeSBMdGQKLQkJCQlXZXN0ZW5kaW50aWUgOTkgQgotCQkJCUVzcG9vIFV1c2ltYWEgRklOLTAyMTYwCi0JCQkJRklOTEFORAotCi0wMC0xOS1GNSAgIChoZXgpCQlJbWFnaW5hdGlvbiBUZWNobm9sb2dpZXMgTHRkCi0wMDE5RjUgICAgIChiYXNlIDE2KQkJSW1hZ2luYXRpb24gVGVjaG5vbG9naWVzIEx0ZAotCQkJCVp1cmljaCBIb3VzZQotCQkJCUNhbmFsIFdoYXJmCi0JCQkJTGVlZHMgV2VzdCBZb3Jrc2hpcmUgTFMxMSA1REIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOS1GNiAgIChoZXgpCQlBY2NvbmV0IChQVEUpIEx0ZAotMDAxOUY2ICAgICAoYmFzZSAxNikJCUFjY29uZXQgKFBURSkgTHRkCi0JCQkJTm8uIDE2IEF5ZXIgUmFqYWggQ3Jlc2NlbnQKLQkJCQkjIDAzLTAzCi0JCQkJU2luZ2Fwb3JlICAxMzk5NjUKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTktRjcgICAoaGV4KQkJT25zZXQgQ29tcHV0ZXIgQ29ycG9yYXRpb24KLTAwMTlGNyAgICAgKGJhc2UgMTYpCQlPbnNldCBDb21wdXRlciBDb3Jwb3JhdGlvbgotCQkJCVAuTy4gQm94IDM0NTAKLQkJCQlQb2Nhc3NldCBNQSAwMjU1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRjggICAoaGV4KQkJRW1iZWRkZWQgU3lzdGVtcyBEZXNpZ24sIEluYy4KLTAwMTlGOCAgICAgKGJhc2UgMTYpCQlFbWJlZGRlZCBTeXN0ZW1zIERlc2lnbiwgSW5jLgotCQkJCTY4MTAgRGVlcnBhdGggUm9hZAotCQkJCVN1aXRlIDMwMAotCQkJCUVsa3JpZGdlIE1EIDIxMDc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1GOSAgIChoZXgpCQlUREstTGFtYmRhCi0wMDE5RjkgICAgIChiYXNlIDE2KQkJVERLLUxhbWJkYQotCQkJCTQwNSBFc3NleCBSb2FkCi0JCQkJTmVwdHVuZSBOSiAwNzc1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRkEgICAoaGV4KQkJQ2FibGUgVmlzaW9uIEVsZWN0cm9uaWNzIENPLiwgTFRELgotMDAxOUZBICAgICAoYmFzZSAxNikJCUNhYmxlIFZpc2lvbiBFbGVjdHJvbmljcyBDTy4sIExURC4KLQkJCQkxMkYtMywgTm8uMTYsIENoaWVuIFBhIFJkLgotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktRkIgICAoaGV4KQkJQlNreUIgTHRkCi0wMDE5RkIgICAgIChiYXNlIDE2KQkJQlNreUIgTHRkCi0JCQkJMTY5IEtJTkdTIFJPQUQKLQkJCQlCUkVOVFdPT0QgRVNTRVggQ00xNCA0RUYKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOS1GQyAgIChoZXgpCQlQVC4gVWZvYWtzZXMgU3Vrc2VzIEx1YXJiaWFzYQotMDAxOUZDICAgICAoYmFzZSAxNikJCVBULiBVZm9ha3NlcyBTdWtzZXMgTHVhcmJpYXNhCi0JCQkJSmwuIFN1bHRhbiBIYXNhbnVkaW4gTm8uIDQxCi0JCQkJS2ViYXlvcmFuIEJhcnUKLQkJCQlKYWthcnRhIFNlbGF0YW4gREtJIEpha2FydGEgMTIxNjAKLQkJCQlJTkRPTkVTSUEKLQotMDAtMTktRkQgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDE5RkQgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTktRkUgICAoaGV4KQkJU0hFTlpIRU4gU0VFQ09NTSBURUNITk9MT0dZIENPLixMVEQuCi0wMDE5RkUgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gU0VFQ09NTSBURUNITk9MT0dZIENPLixMVEQuCi0JCQkJUm9vbSA2MDksNDA0WWFubmFuIFJvYWQKLQkJCQlTaGVuWmhlbiBHdWFuZ2RvbmcgNTE4MDMxCi0JCQkJQ0hJTkEKLQotMDAtMTktRkYgICAoaGV4KQkJRmlubnp5bWVzCi0wMDE5RkYgICAgIChiYXNlIDE2KQkJRmlubnp5bWVzCi0JCQkJODAwIFdlc3QgQ3VtbWluZ3MgUGFyawotCQkJCVN1aXRlIDU1NTAKLQkJCQlXb2J1cm4gTUEgMDE4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTAwICAgKGhleCkJCU1BVFJJWCBJTkMuCi0wMDFBMDAgICAgIChiYXNlIDE2KQkJTUFUUklYIElOQy4KLQkJCQlBUyBibGQuMy0xMy0yMAotCQkJCU5pc2hpLVRlbW1hIEtpdGEtS3UKLQkJCQlPc2FrYSAgNTMwLTAwNDcKLQkJCQlKQVBBTgotCi0wMC0xQS0wMSAgIChoZXgpCQlTbWl0aHMgTWVkaWNhbAotMDAxQTAxICAgICAoYmFzZSAxNikJCVNtaXRocyBNZWRpY2FsCi0JCQkJNDM1MCBSaXZlcmdyZWVuIFBhcmt3YXkKLQkJCQlTdWl0ZSAyMDAKLQkJCQlEdWx1dGggR0EgMzAwOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTAyICAgKGhleCkJCVNFQ1VSRSBDQVJFIFBST0RVQ1RTLCBJTkMKLTAwMUEwMiAgICAgKGJhc2UgMTYpCQlTRUNVUkUgQ0FSRSBQUk9EVUNUUywgSU5DCi0JCQkJMzkgQ0hFTkVMTCBEUklWRQotCQkJCUNPTkNPUkQgTkggMDMzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTAzICAgKGhleCkJCUFuZ2VsIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxQTAzICAgICAoYmFzZSAxNikJCUFuZ2VsIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTE3LCBMYW5lIDEzNCwgU2hvdSBTaGFuIFJvYWQsIFRhaSBTaGFuLAotCQkJCVRhaXBlaSAgMjQzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS0wNCAgIChoZXgpCQlJbnRlcmF5IFNvbHV0aW9ucyBCVgotMDAxQTA0ICAgICAoYmFzZSAxNikJCUludGVyYXkgU29sdXRpb25zIEJWCi0JCQkJTXIuIFcuTS4gT3BwZWRpamsgdmFuIFZlZW53ZWcgOAotCQkJCUJVUkdVTSBGcmllc2xhbmQgOTI1MSBHQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFBLTA1ICAgKGhleCkJCU9QVElCQVNFIExURAotMDAxQTA1ICAgICAoYmFzZSAxNikJCU9QVElCQVNFIExURAotCQkJCTcgU2hhbmthciBTdC4KLQkJCQlIZXJ6bGl5YSBJU1JBRUwgNDYxMjAKLQkJCQlJU1JBRUwKLQotMDAtMUEtMDYgICAoaGV4KQkJT3BWaXN0YSwgSW5jLgotMDAxQTA2ICAgICAoYmFzZSAxNikJCU9wVmlzdGEsIEluYy4KLQkJCQk4NzAgTm9ydGggTWNDYXJ0aHkgQmx2ZC4KLQkJCQlNaWxwaXRhcyBDYWxpZm9ybmlhIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0wNyAgIChoZXgpCQlBcmVjb250IFZpc2lvbgotMDAxQTA3ICAgICAoYmFzZSAxNikJCUFyZWNvbnQgVmlzaW9uCi0JCQkJMjQwMCBOLiBMaW5jb2xuIEF2ZQotCQkJCUFsdGFkZW5hIENBIDkxMDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0wOCAgIChoZXgpCQlEYWxtYW4gVGVjaG5pY2FsIFNlcnZpY2VzCi0wMDFBMDggICAgIChiYXNlIDE2KQkJRGFsbWFuIFRlY2huaWNhbCBTZXJ2aWNlcwotCQkJCTM2IER1a2UgQ2xvc2UKLQkJCQlXZXN0IFdheQotCQkJCUFuZG92ZXIgSGFtcHNoaXJlIFNQMTAgNUFQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUEtMDkgICAoaGV4KQkJV2F5ZmFyZXIgVHJhbnNpdCBTeXN0ZW1zIEx0ZAotMDAxQTA5ICAgICAoYmFzZSAxNikJCVdheWZhcmVyIFRyYW5zaXQgU3lzdGVtcyBMdGQKLQkJCQkxMCBXaWxsaXMgV2F5Ci0JCQkJRmxlZXRzIEluc2R1c3RyaWFsIEVzdAotCQkJCVBvb2xlIERvcnNldCBCSDE1IDNTUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFBLTBBICAgKGhleCkJCUFkYXB0aXZlIE1pY3JvLVdhcmUgSW5jLgotMDAxQTBBICAgICAoYmFzZSAxNikJCUFkYXB0aXZlIE1pY3JvLVdhcmUgSW5jLgotCQkJCTY5MTcgSW5ub3ZhdGlvbiBCbHZkCi0JCQkJRm9ydCBXYXluZSBJTiA0NjgxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMEIgICAoaGV4KQkJQk9OQSBURUNITk9MT0dZIElOQy4KLTAwMUEwQiAgICAgKGJhc2UgMTYpCQlCT05BIFRFQ0hOT0xPR1kgSU5DLgotCQkJCTRGLCBFLVBsYWNlIEJsZGcuLCA3MTktMjQKLQkJCQlZZW9rc2FtLURvbmcsIEdhbmduYW0tR3UsCi0JCQkJU2VvdWwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtMEMgICAoaGV4KQkJU3dlLURpc2ggU2F0ZWxsaXRlIFN5c3RlbXMgQUIKLTAwMUEwQyAgICAgKGJhc2UgMTYpCQlTd2UtRGlzaCBTYXRlbGxpdGUgU3lzdGVtcyBBQgotCQkJCVRvcmdnYXRhbiAxNQotCQkJCVNvbG5hIFN0b2NraG9sbSBTRS0xNzEgMDYKLQkJCQlTV0VERU4KLQotMDAtMUEtMEQgICAoaGV4KQkJSGFuZEhlbGQgZW50ZXJ0YWlubWVudCwgSW5jLgotMDAxQTBEICAgICAoYmFzZSAxNikJCUhhbmRIZWxkIGVudGVydGFpbm1lbnQsIEluYy4KLQkJCQk1MzkgQnJ5YW50IFN0cmVldCwgU3VpdGUgNDAzCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMEUgICAoaGV4KQkJQ2hlbmcgVWVpIFByZWNpc2lvbiBJbmR1c3RyeSBDby4sTHRkCi0wMDFBMEUgICAgIChiYXNlIDE2KQkJQ2hlbmcgVWVpIFByZWNpc2lvbiBJbmR1c3RyeSBDby4sTHRkCi0JCQkJSnVuZGEgSW5kdXN0cnkgRGlzdHJpY3QsIERvbmdrZW5nIFRvd24sRG9uZ2d1YW4gQ2l0eQotCQkJCURvbmdHdWFuIEd1YW5nIERvbmcgNTIzNDU1Ci0JCQkJQ0hJTkEKLQotMDAtMUEtMEYgICAoaGV4KQkJU2lzdGVtYXMgQXZhbnphZG9zIGRlIENvbnRyb2wsIFMuQS4KLTAwMUEwRiAgICAgKGJhc2UgMTYpCQlTaXN0ZW1hcyBBdmFuemFkb3MgZGUgQ29udHJvbCwgUy5BLgotCQkJCWNhbGxlIENvbHF1aWRlIDYKLQkJCQlMYXMgUm96YXMgTWFkcmlkIDI4MjMwCi0JCQkJU1BBSU4KLQotMDAtMUEtMTAgICAoaGV4KQkJTFVDRU5UIFRSQU5TIEVMRUNUUk9OSUNTIENPLixMVEQKLTAwMUExMCAgICAgKGJhc2UgMTYpCQlMVUNFTlQgVFJBTlMgRUxFQ1RST05JQ1MgQ08uLExURAotCQkJCTlGLTEsTm8uMTYsQ2hpZW4gUGFoIFJkLgotCQkJCUNodW5nIEhvIFRhaXBlaSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTExICAgKGhleCkJCUdvb2dsZSBJbmMuCi0wMDFBMTEgICAgIChiYXNlIDE2KQkJR29vZ2xlIEluYy4KLQkJCQkxNjAwIEFtcGhpdGhlYXRlciBQYXJrd2F5Ci0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMTIgICAoaGV4KQkJRXNzaWxvcgotMDAxQTEyICAgICAoYmFzZSAxNikJCUVzc2lsb3IKLQkJCQk2NCBCaXMgQXZlbnVlIEF1YmVydAotCQkJCTk0MzAwIFZpbmNlbm5lcyAKLQkJCQlGUkFOQ0UKLQotMDAtMUEtMTMgICAoaGV4KQkJV2FubGlkYSBHcm91cCBDby4sIExURAotMDAxQTEzICAgICAoYmFzZSAxNikJCVdhbmxpZGEgR3JvdXAgQ28uLCBMVEQKLQkJCQlKaWFoZSBSb2FkIE5vLjYxOAotCQkJCVhpYW1lbiBGdWppYW4gMzYxMDA2Ci0JCQkJQ0hJTkEKLQotMDAtMUEtMTQgICAoaGV4KQkJWGluIEh1YSBDb250cm9sIEVuZ2luZWVyaW5nIENvLixMdGQuCi0wMDFBMTQgICAgIChiYXNlIDE2KQkJWGluIEh1YSBDb250cm9sIEVuZ2luZWVyaW5nIENvLixMdGQuCi0JCQkJMTYwIFdlbmppbmcgUmQuLCBNaW5oYW5nCi0JCQkJU2hhbmdoYWkgIDIwMDAyNDUKLQkJCQlDSElOQQotCi0wMC0xQS0xNSAgIChoZXgpCQlnZW1hbHRvIGUtUGF5bWVudAotMDAxQTE1ICAgICAoYmFzZSAxNikJCWdlbWFsdG8gZS1QYXltZW50Ci0JCQkJNiBydWUgZGUgbGEgVmVycmVyaWUKLQkJCQlNZXVkb24gIDkyMTk3Ci0JCQkJRlJBTkNFCi0KLTAwLTFBLTE2ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFBMTYgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFBLTE3ICAgKGhleCkJCVRlYWsgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDFBMTcgICAgIChiYXNlIDE2KQkJVGVhayBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyOTAxIFRhc21hbiBEci4sIFN0ZS4gIzIxMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0xOCAgIChoZXgpCQlBZHZhbmNlZCBTaW11bGF0aW9uIFRlY2hub2xvZ3kgaW5jLgotMDAxQTE4ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFNpbXVsYXRpb24gVGVjaG5vbG9neSBpbmMuCi0JCQkJNTAwQSBIdW50bWFyIFBhcmsgRHJpdmUKLQkJCQlIZXJuZG9uIFZBIDIwMTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0xOSAgIChoZXgpCQlDb21wdXRlciBFbmdpbmVlcmluZyBMaW1pdGVkCi0wMDFBMTkgICAgIChiYXNlIDE2KQkJQ29tcHV0ZXIgRW5naW5lZXJpbmcgTGltaXRlZAotCQkJCVBPIEJveCAyNi0yNQotCQkJCUVwc29tCi0JCQkJQXVja2xhbmQgQUsgMTM0NAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTFBLTFBICAgKGhleCkJCUdlbnRleCBDb3Jwb3JhdGlvbi9FbGVjdHJvLUFjb3VzdGljIFByb2R1Y3RzCi0wMDFBMUEgICAgIChiYXNlIDE2KQkJR2VudGV4IENvcnBvcmF0aW9uL0VsZWN0cm8tQWNvdXN0aWMgUHJvZHVjdHMKLQkJCQkyNDU2IEJyb3duIEF2ZW51ZQotCQkJCU1hbmNoZXN0ZXIgTkggMDMxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTFCICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxQTFCICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTYwMCBOLiBId3kgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTFDICAgKGhleCkJCUdUJlQgRW5naW5lZXJpbmcgUHRlIEx0ZAotMDAxQTFDICAgICAoYmFzZSAxNikJCUdUJlQgRW5naW5lZXJpbmcgUHRlIEx0ZAotCQkJCTIgQW5nIE1vIEtpbyBTdC42NCwgRWNvbiBCdWlsZGluZywgIzA0LTAwCi0JCQkJU2luZ2Fwb3JlIDU2OTA4NAotCQkJCVNJTkdBUE9SRQotCi0wMC0xQS0xRCAgIChoZXgpCQlQQ2hvbWUgT25saW5lIEluYy4KLTAwMUExRCAgICAgKGJhc2UgMTYpCQlQQ2hvbWUgT25saW5lIEluYy4KLQkJCQkxMUYsIDEwNSwgU2VjLiAyLCBUdW4tSHdhIFMuIFJkLgotCQkJCVRhaXBlaSAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTFFICAgKGhleCkJCUFydWJhIE5ldHdvcmtzCi0wMDFBMUUgICAgIChiYXNlIDE2KQkJQXJ1YmEgTmV0d29ya3MKLQkJCQkxMzIyIENyb3NzbWFuIEF2Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0xRiAgIChoZXgpCQlDb2FzdGFsIEVudmlyb25tZW50YWwgU3lzdGVtcwotMDAxQTFGICAgICAoYmFzZSAxNikJCUNvYXN0YWwgRW52aXJvbm1lbnRhbCBTeXN0ZW1zCi0JCQkJODIwIEZpcnN0IEF2ZW51ZSBTb3V0aAotCQkJCVNlYXR0bGUgd2EgOTgxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTIwICAgKGhleCkJCUNNT1RFQ0ggQ28uIEx0ZC4KLTAwMUEyMCAgICAgKGJhc2UgMTYpCQlDTU9URUNIIENvLiBMdGQuCi0JCQkJNUYgRXRyb25peCBCbGRnLiAxNy0xMAotCQkJCVlvaWRvLURvbmcKLQkJCQlZb3VuZ2R1bmdwby1HdSBTZW91bCAxNTAtODc0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTIxICAgKGhleCkJCUluZGFjIEIuVi4KLTAwMUEyMSAgICAgKGJhc2UgMTYpCQlJbmRhYyBCLlYuCi0JCQkJSW5zdGl0dXRlbndlZyAxNUEKLQkJCQlFbnNjaGVkZSBPdmVyaWpzc2VsIDc1MjEgUEgKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xQS0yMiAgIChoZXgpCQllUS0zIEVudHdpY2tsdW5nIEdtYkgKLTAwMUEyMiAgICAgKGJhc2UgMTYpCQllUS0zIEVudHdpY2tsdW5nIEdtYkgKLQkJCQlNYWlidXJnZXIgU3RyLiAzNgotCQkJCUxlZXIgTmllZGVyc2FjaHNlbiBELTI2Nzg5Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS0yMyAgIChoZXgpCQlJY2UgUXViZSwgSW5jCi0wMDFBMjMgICAgIChiYXNlIDE2KQkJSWNlIFF1YmUsIEluYwotCQkJCTE0MSBXaWxzb24gQXZlCi0JCQkJR3JlZW5zYnVyZyBQYSAxNTYwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMjQgICAoaGV4KQkJR2FsYXh5IFRlbGVjb20gVGVjaG5vbG9naWVzIEx0ZAotMDAxQTI0ICAgICAoYmFzZSAxNikJCUdhbGF4eSBUZWxlY29tIFRlY2hub2xvZ2llcyBMdGQKLQkJCQlOby4yNSwgVGhlIDFzdCBHYW94aW4gUm9hZAotCQkJCVhpJ2FuIENpdHkgU2hhbm54aSA3MTAwNzUKLQkJCQlDSElOQQotCi0wMC0xQS0yNSAgIChoZXgpCQlERUxUQSBET1JFCi0wMDFBMjUgICAgIChiYXNlIDE2KQkJREVMVEEgRE9SRQotCQkJCUJPTk5FTUFJTgotCQkJCUNPTUJPVVJHIEJSRVRBR05FIDM1IDM1MjcwCi0JCQkJRlJBTkNFCi0KLTAwLTFBLTI2ICAgKGhleCkJCURlbHRhbm9kZSBTb2x1dGlvbnMgQUIKLTAwMUEyNiAgICAgKGJhc2UgMTYpCQlEZWx0YW5vZGUgU29sdXRpb25zIEFCCi0JCQkJQm94IDkyIDE4NAotCQkJCVN0b2NraG9sbSAgMTIwIDA5Ci0JCQkJU1dFREVOCi0KLTAwLTFBLTI3ICAgKGhleCkJCVViaXN0YXIKLTAwMUEyNyAgICAgKGJhc2UgMTYpCQlVYmlzdGFyCi0JCQkJOEYsIFNlb25nZG8gQnVpbGRpbmcsIDU4Ny0yMwotCQkJCVNpbnNhLURvbmcsIEdhbmduYW0tR3UKLQkJCQlTZW91bCAgMTM1LTc0NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS0yOCAgIChoZXgpCQlBU1dUIENvLiwgTFRELiBUYWl3YW4gQnJhbmNoIEguSy4KLTAwMUEyOCAgICAgKGJhc2UgMTYpCQlBU1dUIENvLiwgTFRELiBUYWl3YW4gQnJhbmNoIEguSy4KLQkJCQk3Ri4sIE5vLjMgTGFuZSA5MSwgRG9uZ21laSBSZC4KLQkJCQlIc2luY2h1ICAzMDA3MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtMjkgICAoaGV4KQkJVGVjaHNvbmljIEluZHVzdHJpZXMgZC9iL2EgSHVtbWluYmlyZAotMDAxQTI5ICAgICAoYmFzZSAxNikJCVRlY2hzb25pYyBJbmR1c3RyaWVzIGQvYi9hIEh1bW1pbmJpcmQKLQkJCQkxMjIwIE9sZCBBbHBoYXJldHRhIFJkCi0JCQkJU3VpdGUgMzQwCi0JCQkJQWxwaGFyZXR0YSBHQSAzMDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMkEgICAoaGV4KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxQTJBICAgICAoYmFzZSAxNikJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk0Ri4sIE5vLiA5ICwgUGFyayBBdmVudWUgSUksCi0JCQkJU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS0yQiAgIChoZXgpCQlBeWVjb20gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMUEyQiAgICAgKGJhc2UgMTYpCQlBeWVjb20gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMjUsIFImRCBSb2FkIDIsIFNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS0yQyAgIChoZXgpCQlTQVRFQyBDby4sTFRECi0wMDFBMkMgICAgIChiYXNlIDE2KQkJU0FURUMgQ28uLExURAotCQkJCTM1OC00LCBQYWxnb2syLURvbmcsIFNhbmdub2stR3UKLQkJCQlBbnNhbi1TaSBLeXVuZ2tpLURvIDQyNi0xOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtMkQgICAoaGV4KQkJVGhlIE5hdnZvIEdyb3VwCi0wMDFBMkQgICAgIChiYXNlIDE2KQkJVGhlIE5hdnZvIEdyb3VwCi0JCQkJNDQwMCBCYWtlciBSb2FkCi0JCQkJTWlubmV0b25rYSBNTiA1NTM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMkUgICAoaGV4KQkJWmlvdmEgQ29wb3JhdGlvbgotMDAxQTJFICAgICAoYmFzZSAxNikJCVppb3ZhIENvcG9yYXRpb24KLQkJCQlVbml0IDMsIDctOSBTaGVycmlmZnMgcm9hZAotCQkJCUxvbnNkYWxlIFMuQS4gNTE2MAotCQkJCUFVU1RSQUxJQQotCi0wMC0xQS0yRiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFBMkYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0zMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFBMzAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0zMSAgIChoZXgpCQlTQ0FOIENPSU4gSW5kdXN0cmllcyBBQgotMDAxQTMxICAgICAoYmFzZSAxNikJCVNDQU4gQ09JTiBJbmR1c3RyaWVzIEFCCi0JCQkJSmFnZXJzaGlsbGdhdGFuIDI2Ci0JCQkJTWFsbW9lIFNrYW5lIDIxMzc1Ci0JCQkJU1dFREVOCi0KLTAwLTFBLTMyICAgKGhleCkJCUFDVElWQSBNVUxUSU1FRElBCi0wMDFBMzIgICAgIChiYXNlIDE2KQkJQUNUSVZBIE1VTFRJTUVESUEKLQkJCQlTSUNQIENTRQotCQkJCVNBTlQgSk9BTiBERVNQSSBCQVJDRUxPTkEgMDg5NzAKLQkJCQlTUEFJTgotCi0wMC0xQS0zMyAgIChoZXgpCQlBU0kgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMUEzMyAgICAgKGJhc2UgMTYpCQlBU0kgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkxMDQyIEUgR3VhZGFsdXBlIFJkCi0JCQkJVGVtcGUgQVogODUyODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTM0ICAgKGhleCkJCUtvbmthIEdyb3VwIENvLiwgTHRkLgotMDAxQTM0ICAgICAoYmFzZSAxNikJCUtvbmthIEdyb3VwIENvLiwgTHRkLgotCQkJCU92ZXJzZWEgQ2hpbmVzZSBUb3duLE5hbnNoYW4sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1MwotCQkJCUNISU5BCi0KLTAwLTFBLTM1ICAgKGhleCkJCUJBUlRFQyBHbWJICi0wMDFBMzUgICAgIChiYXNlIDE2KQkJQkFSVEVDIEdtYkgKLQkJCQlTY2h1bHN0ci4gMzAKLQkJCQlHb3R0ZXN6ZWxsIEJhdmFyaWEgOTQyMzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLTM2ICAgKGhleCkJCUFpcGVybW9uIEdtYkggJiBDby4gS0cKLTAwMUEzNiAgICAgKGJhc2UgMTYpCQlBaXBlcm1vbiBHbWJIICYgQ28uIEtHCi0JCQkJWmFtZG9yZmVyIFN0ci4gMTAwCi0JCQkJTXVuY2hlbgotCQkJCU11bmljaCBCYXZhcmlhIEQtODE2NzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLTM3ICAgKGhleCkJCUxlYXIgQ29ycG9yYXRpb24KLTAwMUEzNyAgICAgKGJhc2UgMTYpCQlMZWFyIENvcnBvcmF0aW9uCi0JCQkJSW5kdXN0cmllc3RyYXNzZSA0OAotCQkJCUtyb25hY2ggQmF5ZXJuIDk2MzE3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS0zOCAgIChoZXgpCQlTYW5taW5hLVNDSQotMDAxQTM4ICAgICAoYmFzZSAxNikJCVNhbm1pbmEtU0NJCi0JCQkJMTMwMDAgU291dGggTWVtb3JpYWwgUGFya3dheQotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTM5ICAgKGhleCkJCU1lcnRlbiBHbWJIJkNvS0cKLTAwMUEzOSAgICAgKGJhc2UgMTYpCQlNZXJ0ZW4gR21iSCZDb0tHCi0JCQkJRnJpdHotS290ei1TdHIuIDgKLQkJCQlXaWVobCBOUlcgNTE2NzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLTNBICAgKGhleCkJCURvbmdhaGVsZWNvbW0KLTAwMUEzQSAgICAgKGJhc2UgMTYpCQlEb25nYWhlbGVjb21tCi0JCQkJNjc4LTMsSmVpbC1yaSxZYW5nZ2ktbXl1bixDaGVvaW4tZ3UKLQkJCQlZb25naW4tc2kgR3llb25nZ2ktZG8gNDQ5LTgyMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS0zQiAgIChoZXgpCQlEb2FoIEVsZWNvbSBJbmMuCi0wMDFBM0IgICAgIChiYXNlIDE2KQkJRG9haCBFbGVjb20gSW5jLgotCQkJCTh0aCBmbC4gQ2VudHVyeSBQbGF6YSwgMjc3LTQwCi0JCQkJU3VuZ3N1LTJHYSAzRG9uZwotCQkJCVNlb3VsICAxMzMtMTIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTNDICAgKGhleCkJCVRlY2hub3dhdmUgTHRkLgotMDAxQTNDICAgICAoYmFzZSAxNikJCVRlY2hub3dhdmUgTHRkLgotCQkJCVNha3VyYWkgQmxkZy4xRiwKLQkJCQkxLTM1LTYgTmFrYWNobwotCQkJCU11c2FzaGluby1zaGkgVG9reW8gMTgwLTAwMDYKLQkJCQlKQVBBTgotCi0wMC0xQS0zRCAgIChoZXgpCQlBamluIFZpc2lvbiBDby4sTHRkCi0wMDFBM0QgICAgIChiYXNlIDE2KQkJQWppbiBWaXNpb24gQ28uLEx0ZAotCQkJCTE0MDQsIE1hcmlvLVRvd2VyLCAyMjItMTIKLQkJCQlHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS0zRSAgIChoZXgpCQlGYXN0ZXIgVGVjaG5vbG9neSBMTEMKLTAwMUEzRSAgICAgKGJhc2UgMTYpCQlGYXN0ZXIgVGVjaG5vbG9neSBMTEMKLQkJCQkxODEyIEF2ZW51ZSBECi0JCQkJU3VpdGUgMjAyCi0JCQkJS2F0eSBUZXhhcyA3NzQ5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtM0YgICAoaGV4KQkJaW50ZWxicmFzCi0wMDFBM0YgICAgIChiYXNlIDE2KQkJaW50ZWxicmFzCi0JCQkJcm9kb3ZpYSBiciAxMDEga20gMjEwCi0JCQkJaW50ZWxicmFzCi0JCQkJc2FvIGpvc2Ugc2MgODgxMDQ4MDAKLQkJCQlCUkFaSUwKLQotMDAtMUEtNDAgICAoaGV4KQkJQS1GT1VSIFRFQ0ggQ08uLCBMVEQuCi0wMDFBNDAgICAgIChiYXNlIDE2KQkJQS1GT1VSIFRFQ0ggQ08uLCBMVEQuCi0JCQkJNkYsIE5vLiAxMDgsIE1pbi1DaHVhbiBSZC4sCi0JCQkJSHNpbi1UaWVuIFRhaXBlaSAyMzE0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNDEgICAoaGV4KQkJSU5PQ09WQSBDby4sTHRkCi0wMDFBNDEgICAgIChiYXNlIDE2KQkJSU5PQ09WQSBDby4sTHRkCi0JCQkJNUYgU0VPVUwgQkQuNzM2LTE3Ci0JCQkJWWVva3NhbS1Eb25nLCBLYW5nbmFtLUt1IFNFT1VMIDEzNS05MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtNDIgICAoaGV4KQkJVGVjaGNpdHkgVGVjaG5vbG9neSBjby4sIEx0ZC4KLTAwMUE0MiAgICAgKGJhc2UgMTYpCQlUZWNoY2l0eSBUZWNobm9sb2d5IGNvLiwgTHRkLgotCQkJCTRGLCBOby4gNCwgQWxsZXkgMSwgU3p1IFdlaSBMYW5lLCBDaHVuZyBDaGVuZyBSZC4sCi0JCQkJSHNpbiBUZWluIENpdHkgVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNDMgICAoaGV4KQkJTG9naWNhbCBMaW5rIENvbW11bmljYXRpb25zCi0wMDFBNDMgICAgIChiYXNlIDE2KQkJTG9naWNhbCBMaW5rIENvbW11bmljYXRpb25zCi0JCQkJMTkwOSBDZW50cmFsIERyaXZlIFN1aXRlIDIwNQotCQkJCUJlZGZvcmQgVFggNzYwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTQ0ICAgKGhleCkJCUpXVHJhZGluZyBDby4sIEx0ZAotMDAxQTQ0ICAgICAoYmFzZSAxNikJCUpXVHJhZGluZyBDby4sIEx0ZAotCQkJCTE1OTAgS3dhbnlhbmctZG9uZywgRG9uZ2FuLWt1Ci0JCQkJQWhueWFuZyBLeXVuZ2tpIC0gZG8gNDMxLTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS00NSAgIChoZXgpCQlHTiBOZXRjb20gYXMKLTAwMUE0NSAgICAgKGJhc2UgMTYpCQlHTiBOZXRjb20gYXMKLQkJCQlNZXRhbGJ1ZW4gNjYKLQkJCQlQLk8uQm94IDIwMQotCQkJCUJhbGxlcnVwIFNrb3ZsdW5kZSBESyAtIDI3NTAKLQkJCQlERU5NQVJLCi0KLTAwLTFBLTQ2ICAgKGhleCkJCURpZ2l0YWwgTXVsdGltZWRpYSBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDFBNDYgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBNdWx0aW1lZGlhIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlEb29yaW0gQmxkZywgM3JkIEZsLCAxNjQtMjEgUG9pLURvbmcsCi0JCQkJU2VvdWwgS2FuZ25hbS1HdSAxMzUtOTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTQ3ICAgKGhleCkJCUFnYW1pIFN5c3RlbXMsIEluYy4KLTAwMUE0NyAgICAgKGJhc2UgMTYpCQlBZ2FtaSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTI2OSBJbm5zYnJ1Y2sgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ2FsaWZvcm5pYSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNDggICAoaGV4KQkJVGFrYWNvbSBDb3Jwb3JhdGlvbgotMDAxQTQ4ICAgICAoYmFzZSAxNikJCVRha2Fjb20gQ29ycG9yYXRpb24KLQkJCQkzMDQtNzA5IEF6YS1OaXNoaXlhbm1hCi0JCQkJT3Jvc2hpLWNobwotCQkJCVRva2ktc2hpIEdpZnUta2VuIDUwOS01MjAyCi0JCQkJSkFQQU4KLQotMDAtMUEtNDkgICAoaGV4KQkJTWljcm8gVmlzaW9uIENvLixMVEQKLTAwMUE0OSAgICAgKGJhc2UgMTYpCQlNaWNybyBWaXNpb24gQ28uLExURAotCQkJCTEtOS0xNQotCQkJCUthbmRvdWppIE1pbmFtaQotCQkJCU5paWdhdGEtY2l0eSBOaWlnYXRhLWtlbiA5NTAtMDk4NgotCQkJCUpBUEFOCi0KLTAwLTFBLTRBICAgKGhleCkJCVF1bXJhbmV0IEluYy4KLTAwMUE0QSAgICAgKGJhc2UgMTYpCQlRdW1yYW5ldCBJbmMuCi0JCQkJNTMwIExha2VzaWRlIERyaXZlCi0JCQkJU3VpdGUgMjIwCi0JCQkJU3Vubnl2YWxlIENhbGlmb3JuaWEgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTRCICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxQTRCICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNjAzMDgKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS00QyAgIChoZXgpCQlDcm9zc2JvdyBUZWNobm9sb2d5LCBJbmMKLTAwMUE0QyAgICAgKGJhc2UgMTYpCQlDcm9zc2JvdyBUZWNobm9sb2d5LCBJbmMKLQkJCQk0MTQ1IE4uIEZpcnN0IFN0cmVldAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS00RCAgIChoZXgpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotMDAxQTREICAgICAoYmFzZSAxNikJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0JCQkJCi0JCQkJUGluLUplbiBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNEUgICAoaGV4KQkJTlRJIEFHIC8gTGluTW90Ci0wMDFBNEUgICAgIChiYXNlIDE2KQkJTlRJIEFHIC8gTGluTW90Ci0JCQkJSGFlcmRsaXN0cmFzc2UgMTUKLQkJCQlTcHJlaXRlbmJhY2ggQUcgODk1NwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFBLTRGICAgKGhleCkJCUFWTSBHbWJICi0wMDFBNEYgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotMDAtMUEtNTAgICAoaGV4KQkJUGhlZU5ldCBUZWNobm9sb2d5IENvcnAuCi0wMDFBNTAgICAgIChiYXNlIDE2KQkJUGhlZU5ldCBUZWNobm9sb2d5IENvcnAuCi0JCQkJUm0uIDMsIDIwRiwgTm8uIDc5LCBTZWMuIDEgSHNpbiBUYWkgV3UgUmQuCi0JCQkJSHNpLUNoaWggVGFpcGVpIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNTEgICAoaGV4KQkJQWxmcmVkIE1hbm4gRm91bmRhdGlvbgotMDAxQTUxICAgICAoYmFzZSAxNikJCUFsZnJlZCBNYW5uIEZvdW5kYXRpb24KLQkJCQlQLk8uIEJveCA5MDUKLQkJCQlTYW50YSBDbGFyaXRhIENBIDkxMzgwLTkwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTUyICAgKGhleCkJCU1lc2hsaW54IFdpcmVsZXNzIEluYy4KLTAwMUE1MiAgICAgKGJhc2UgMTYpCQlNZXNobGlueCBXaXJlbGVzcyBJbmMuCi0JCQkJMTQxMCBHIEF2ZW51ZSwgU3VpdGUgVAotCQkJCVBsYW5vIFRleGFzIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS01MyAgIChoZXgpCQlaeWxheWEKLTAwMUE1MyAgICAgKGJhc2UgMTYpCQlaeWxheWEKLQkJCQk0NDQgTi4gRnJlZGVyaWNrIEF2ZS4KLQkJCQlTdWl0ZSAzMTgKLQkJCQlHYWl0aGVyc2J1cmcgTUQgMjA4NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTU0ICAgKGhleCkJCUhpcCBTaGluZyBFbGVjdHJvbmljcyBMdGQuCi0wMDFBNTQgICAgIChiYXNlIDE2KQkJSGlwIFNoaW5nIEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQlVbml0IDEvMi8zLCAyMC9GLCBOZXcgVHJlYXN1cmUgQ2VudGVyCi0JCQkJMTAgTmcgRm9uZyBTdHJlZXQsIFNhbiBQbyBLb25nLCBLb3dsb29uCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFBLTU1ICAgKGhleCkJCUFDQS1EaWdpdGFsIENvcnBvcmF0aW9uCi0wMDFBNTUgICAgIChiYXNlIDE2KQkJQUNBLURpZ2l0YWwgQ29ycG9yYXRpb24KLQkJCQkxNyBGLCBOby4gODY2LTcsIENodW5nIENoZW5nIFJkLiwKLQkJCQlDaHVuZyBIbyBDaXR5IFRhaXBlaSBDb3VudHkgMjM1ODYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTU2ICAgKGhleCkJCVZpZXdUZWwgQ28sLiBMdGQuCi0wMDFBNTYgICAgIChiYXNlIDE2KQkJVmlld1RlbCBDbywuIEx0ZC4KLQkJCQkjQi01MDIsQnVuZGFuZyBUZWNobm8gUGFyayAxNDgKLQkJCQlZYVRhcC1Eb25nCi0JCQkJQnVuRGFuZy1LdSwgU2VvbmdOYW0tU2kgR3llb25nR2ktRG8gNDYzLTc2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS01NyAgIChoZXgpCQlNYXRyaXggRGVzaWduIEdyb3VwLCBMTEMKLTAwMUE1NyAgICAgKGJhc2UgMTYpCQlNYXRyaXggRGVzaWduIEdyb3VwLCBMTEMKLQkJCQk1NzQxIFByb3NwZWN0IERyLgotCQkJCU5ld2J1cmdoIElOIDQ3NjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS01OCAgIChoZXgpCQlDQ1YgRGV1dHNjaGxhbmQgR21iSCAtIENlbGVjdHJvbmljIGVIZWFsdGggRGl2LgotMDAxQTU4ICAgICAoYmFzZSAxNikJCUNDViBEZXV0c2NobGFuZCBHbWJIIC0gQ2VsZWN0cm9uaWMgZUhlYWx0aCBEaXYuCi0JCQkJTm9yZGxpY2h0c3RyYXNzZSA2MwotCQkJCUJlcmxpbiAgRC0xMzQwNQotCQkJCUdFUk1BTlkKLQotMDAtMUEtNTkgICAoaGV4KQkJSXJjb25hCi0wMDFBNTkgICAgIChiYXNlIDE2KQkJSXJjb25hCi0JCQkJVW5pdCA0Qi0xLCBDb3Jwb3JhdGUgUGFyawotCQkJCUJsYW5jaGFyZHN0b3duIER1YmxpbiAxNQotCQkJCUlSRUxBTkQKLQotMDAtMUEtNUEgICAoaGV4KQkJS29yZWEgRWxlY3RyaWMgUG93ZXIgRGF0YSBOZXR3b3JrICAoS0ROKSBDby4sIEx0ZAotMDAxQTVBICAgICAoYmFzZSAxNikJCUtvcmVhIEVsZWN0cmljIFBvd2VyIERhdGEgTmV0d29yayAgKEtETikgQ28uLCBMdGQKLQkJCQk2NjUgTkFFU09OLURPTkcsCi0JCQkJR1lFT05HR0ktRE8gVUlXQU5HLVNJLCBOQUVTT04tRE9ORyA0MzctMDgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTVCICAgKGhleCkJCU5ldENhcmUgU2VydmljZSBDby4sIEx0ZC4KLTAwMUE1QiAgICAgKGJhc2UgMTYpCQlOZXRDYXJlIFNlcnZpY2UgQ28uLCBMdGQuCi0JCQkJNS0xMy0xNiBTaGltaXp1LCBBc2FoaS1rdQotCQkJCU9zYWthICA1MzUtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTFBLTVDICAgKGhleCkJCUV1Y2huZXIgR21iSCtDby4gS0cKLTAwMUE1QyAgICAgKGJhc2UgMTYpCQlFdWNobmVyIEdtYkgrQ28uIEtHCi0JCQkJS29obGhhbW1lcnN0ci4gMTYKLQkJCQlMZWluZmVsZGVuLUVjaHRlcmRpbmdlbiBCVyA3MDc3MQotCQkJCUdFUk1BTlkKLQotMDAtMUEtNUQgICAoaGV4KQkJTW9iaW5ub3ZhIENvcnAuCi0wMDFBNUQgICAgIChiYXNlIDE2KQkJTW9iaW5ub3ZhIENvcnAuCi0JCQkJMTFGLCA4NDUsIENIVU5HIFNIQU4gUkQKLQkJCQlUQU9ZVUFOICAzMzA1OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNUUgICAoaGV4KQkJVGhpbmNvbSBUZWNobm9sb2d5IENvLixMdGQKLTAwMUE1RSAgICAgKGJhc2UgMTYpCQlUaGluY29tIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTE3Ri0zLCBOby4zOTgsIEh1YW5iZWkgUmQuLAotCQkJCVpob25nbGkgQ2l0eSBUYW95dWFuIENvbnRyeSAzMjAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTVGICAgKGhleCkJCUtpdFdvcmtzLmZpIEx0ZC4KLTAwMUE1RiAgICAgKGJhc2UgMTYpCQlLaXRXb3Jrcy5maSBMdGQuCi0JCQkJU25vd3BvbGlzCi0JCQkJVnVva2F0dGkgS2FpbnV1IDg4NjEwCi0JCQkJRklOTEFORAotCi0wMC0xQS02MCAgIChoZXgpCQlXYXZlIEVsZWN0cm9uaWNzIENvLixMdGQuCi0wMDFBNjAgICAgIChiYXNlIDE2KQkJV2F2ZSBFbGVjdHJvbmljcyBDby4sTHRkLgotCQkJCTN0aCBGbC4sRGFlU2FuIFBsYXphIEIvRCxHdXVuLURvbmcsIDEyLTEsR3dvbnNlb24tR3UKLQkJCQlTdXdvbi1zaSBLeWVvbmdnaS1EbyA0NDEtODE0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTYxICAgKGhleCkJCVBhY1N0YXIgQ29ycC4KLTAwMUE2MSAgICAgKGJhc2UgMTYpCQlQYWNTdGFyIENvcnAuCi0JCQkJMTUwNTUgU1cgU2VxdW9pYSBQa3d5LCBTdWl0ZSAxMDAKLQkJCQlQb3J0bGFuZCBPUiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNjIgICAoaGV4KQkJRGF0YSBSb2JvdGljcywgSW5jb3Jwb3JhdGVkCi0wMDFBNjIgICAgIChiYXNlIDE2KQkJRGF0YSBSb2JvdGljcywgSW5jb3Jwb3JhdGVkCi0JCQkJMTg4MSBMYW5kaW5ncyBEcgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTYzICAgKGhleCkJCUVsc3RlciBTb2x1dGlvbnMsIExMQywKLTAwMUE2MyAgICAgKGJhc2UgMTYpCQlFbHN0ZXIgU29sdXRpb25zLCBMTEMsCi0JCQkJMjA4IFNvdXRoIFJvZ2VycyBMYW5lCi0JCQkJUmFsZWlnaCBOQyAyNzYxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNjQgICAoaGV4KQkJSUJNIENvcnAKLTAwMUE2NCAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNjUgICAoaGV4KQkJU2VsdXhpdAotMDAxQTY1ICAgICAoYmFzZSAxNikJCVNlbHV4aXQKLQkJCQlOeWhhdm5zZ2FkZSA5LCAyLnNhbAotCQkJCUFhbGJvcmcgTm9yZCBKeWxsYW5kIDkwMDAKLQkJCQlERU5NQVJLCi0KLTAwLTFBLTY2ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxQTY2ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTY3ICAgKGhleCkJCUluZmluaXRlIFFMIFNkbiBCaGQKLTAwMUE2NyAgICAgKGJhc2UgMTYpCQlJbmZpbml0ZSBRTCBTZG4gQmhkCi0JCQkJRy4wMiwgQmxvY2sgQSwgRGF0YXJhbiBIYW1vZGFsCi0JCQkJTm8uNCwgSmFsYW4gMTMvNCwgU2VjdC4gMTMsCi0JCQkJUGV0YWxpbmcgSmF5YSBTZWxhbmdvciBEYXJ1bCBFaHNhbiA0NjMwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFBLTY4ICAgKGhleCkJCVdlbHRlYyBFbnRlcnByaXNlIENvLiwgTHRkLgotMDAxQTY4ICAgICAoYmFzZSAxNikJCVdlbHRlYyBFbnRlcnByaXNlIENvLiwgTHRkLgotCQkJCTJGLCBOby4gMzUxIFl1bmcgSG8gUmQuCi0JCQkJVGFpcGVpIEhzaWVuCi0JCQkJQ2h1bmcgSG8gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNjkgICAoaGV4KQkJV3VoYW4gWWFuZ3R6ZSBPcHRpY2FsIFRlY2hub2xvZ3kgQ08uLEx0ZC4KLTAwMUE2OSAgICAgKGJhc2UgMTYpCQlXdWhhbiBZYW5ndHplIE9wdGljYWwgVGVjaG5vbG9neSBDTy4sTHRkLgotCQkJCTQjLEd1YW5zaGFuIDIgUm9hZAotCQkJCVd1aGFuIEh1YmVpIDQzMDA3MwotCQkJCUNISU5BCi0KLTAwLTFBLTZBICAgKGhleCkJCVRyYW56YXMsIEluYy4KLTAwMUE2QSAgICAgKGJhc2UgMTYpCQlUcmFuemFzLCBJbmMuCi0JCQkJUXVlZW5zIHRvd2VyIEMxNwotCQkJCU1pbmF0b21pcmFpIDItMy01IE5pc2hpLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2Eta2VuIDIyMC02MjE3Ci0JCQkJSkFQQU4KLQotMDAtMUEtNkIgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDFBNkIgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSxTZWMuMSwgVEFJUElORyBSRC4KLQkJCQlUU0FPVFVFTiwKLQkJCQlOQU5UT1UgIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS02QyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFBNkMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS02RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFBNkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS02RSAgIChoZXgpCQlJbXBybyBUZWNobm9sb2dpZXMKLTAwMUE2RSAgICAgKGJhc2UgMTYpCQlJbXBybyBUZWNobm9sb2dpZXMKLQkJCQk0N0IgR2lsbGl0cyBSZAotCQkJCVBpbmV0b3duIEt3YVp1bHUtTmF0YWwgMzYxMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xQS02RiAgIChoZXgpCQlNSS5URUwgcy5yLmwuCi0wMDFBNkYgICAgIChiYXNlIDE2KQkJTUkuVEVMIHMuci5sLgotCQkJCVZJQSBHVUlETyBST1NTQSwgMjIKLQkJCQlDT1JOQVRFIEQnQUREQSBNSUxBTk8gMjAwNDAKLQkJCQlJVEFMWQotCi0wMC0xQS03MCAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTAwMUE3MCAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTcxICAgKGhleCkJCURpb3N0ZWNoIENvLiwgTHRkLgotMDAxQTcxICAgICAoYmFzZSAxNikJCURpb3N0ZWNoIENvLiwgTHRkLgotCQkJCTE1MS0yMSwgQnVrLXJpLCBOYW1zYS1teWVvbiwKLQkJCQlDaGVvaW4tZ3UKLQkJCQlZb25naW4tY2l0eSBHeWVvbmdnaS1kbyA0NDkgODg0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTcyICAgKGhleCkJCU1vc2FydCBTZW1pY29uZHVjdG9yIENvcnAuCi0wMDFBNzIgICAgIChiYXNlIDE2KQkJTW9zYXJ0IFNlbWljb25kdWN0b3IgQ29ycC4KLQkJCQkyM0YuLCBOby4zMywgU2VjLjEsCi0JCQkJTWluIFNoZW5nIFJkLiwgUGFuY2hpYW8gQ2l0eQotCQkJCVRhaXBlaSAgMjIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS03MyAgIChoZXgpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMUE3MyAgICAgKGJhc2UgMTYpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMSBKZW4gQWkgUm9hZCwgSHNpbmNodSBJbmR1c3RyaWFsIFBhcmssIEh1a291LAotCQkJCUhzaW5jaHUgIDMwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNzQgICAoaGV4KQkJUHJvY2FyZSBJbnRlcm5hdGlvbmFsIENvCi0wMDFBNzQgICAgIChiYXNlIDE2KQkJUHJvY2FyZSBJbnRlcm5hdGlvbmFsIENvCi0JCQkJNUYsIE5vLjg4LCBKaG91emloIFN0cmVldCwgTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNzUgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLTAwMUE3NSAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNr5W5lIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTAwLTFBLTc2ICAgKGhleCkJCVNEVCBpbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMVEQuCi0wMDFBNzYgICAgIChiYXNlIDE2KQkJU0RUIGluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLExURC4KLQkJCQlTYW1pbCBCL0IgMkYsIDUtNjMgSHlvY2hhbmctZG9uZwotCQkJCVlvbmdzYW4tS3UsCi0JCQkJU2VvdWwgIDE0MC04OTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtNzcgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDFBNzcgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4uIEh3eSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNzggICAoaGV4KQkJdWJ0b3MKLTAwMUE3OCAgICAgKGJhc2UgMTYpCQl1YnRvcwotCQkJCVJuLjIxMywgV29vbGltIExpb26hr3MgVmFsbGV5IKWxLCAjNjgwCi0JCQkJc2VvdWwgR2FzYW4tZG9uZyAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTc5ICAgKGhleCkJCVRFTEVDT01VTklDQVRJT04gVEVDSE5PTE9HSUVTIExURC4KLTAwMUE3OSAgICAgKGJhc2UgMTYpCQlURUxFQ09NVU5JQ0FUSU9OIFRFQ0hOT0xPR0lFUyBMVEQuCi0JCQkJNEQgWkhVS09WQSBCTFYuCi0JCQkJT0RFU1NBICA2NTEyMQotCQkJCVVLUkFJTkUKLQotMDAtMUEtN0EgICAoaGV4KQkJTGlzbW9yZSBJbnN0cnVtZW50cyBMaW1pdGVkCi0wMDFBN0EgICAgIChiYXNlIDE2KQkJTGlzbW9yZSBJbnN0cnVtZW50cyBMaW1pdGVkCi0JCQkJVW5pdCAyIFRyaXN0YXIgQ2VudHJlLCBTdGFyIFJvYWQKLQkJCQlQYXJ0cmlkZ2UgR3JlZW4KLQkJCQlIb3JzaGFtIFdlc3QgU3Vzc2V4IFJIMTMgOFJBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUEtN0IgICAoaGV4KQkJVGVsZWNvLCBJbmMuCi0wMDFBN0IgICAgIChiYXNlIDE2KQkJVGVsZWNvLCBJbmMuCi0JCQkJNDMwIFdvb2RydWZmIFJkLgotCQkJCVN1aXRlIDMwMAotCQkJCUdyZWVudmlsbGUgU0MgMjk2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTdDICAgKGhleCkJCUhpcnNjaG1hbm4gTXVsdGltZWRpYSBCLlYuCi0wMDFBN0MgICAgIChiYXNlIDE2KQkJSGlyc2NobWFubiBNdWx0aW1lZGlhIEIuVi4KLQkJCQlQYW1wdXNsYWFuIDE3MAotCQkJCVdlZXNwIE5vb3JkLUhvbGxhbmQgMTM4MiBKUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFBLTdEICAgKGhleCkJCWN5YmVyLWJsdWUoSEspTHRkCi0wMDFBN0QgICAgIChiYXNlIDE2KQkJY3liZXItYmx1ZShISylMdGQKLQkJCQlSb29tIDE0MDggYmxvY2sgQyBzdGFycyBQbGF6YSBIb25nTGlSb2FkLEZ1VGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgwMjgKLQkJCQlDSElOQQotCi0wMC0xQS03RSAgIChoZXgpCQlMTiBTcml0aGFpIENvbW0gTHRkLgotMDAxQTdFICAgICAoYmFzZSAxNikJCUxOIFNyaXRoYWkgQ29tbSBMdGQuCi0JCQkJNzEvMTIgTS41LCBCYW5nbmEtVHJhZCBSZCwgS00uNTIsIFRoYWthbQotCQkJCUJhbmdwYWtvbmcgQ2hhY2hvZW5nc2FvIDI0MTMwCi0JCQkJVEhBSUxBTkQKLQotMDAtMUEtN0YgICAoaGV4KQkJR0NJIFNjaWVuY2UmVGVjaG5vbG9neSBDby4sTHRkLgotMDAxQTdGICAgICAoYmFzZSAxNikJCUdDSSBTY2llbmNlJlRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlOby4zODEsIFhpbmdhbmd6aG9uZyBSb2FkLAotCQkJCWd1YW5nemhvdSBndWFuZ2RvbmcgNTEwMzEwCi0JCQkJQ0hJTkEKLQotMDAtMUEtODAgICAoaGV4KQkJU29ueSBDb3Jwb3JhdGlvbgotMDAxQTgwICAgICAoYmFzZSAxNikJCVNvbnkgQ29ycG9yYXRpb24KLQkJCQlHb3RlbnlhbWEgVGVjIDUtMS0yCi0JCQkJS2l0YXNoaW5hZ2F3YQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTAwLTFBLTgxICAgKGhleCkJCVplbGF4Ci0wMDFBODEgICAgIChiYXNlIDE2KQkJWmVsYXgKLQkJCQkybmQgYnVpZC4sIDFCLCBaYXZvZHNrYXlhIHN0LiwKLQkJCQlNb3Njb3cgIDEyNDY4MQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xQS04MiAgIChoZXgpCQlQUk9CQSBCdWlsZGluZyBBdXRvbWF0aW9uIENvLixMVEQKLTAwMUE4MiAgICAgKGJhc2UgMTYpCQlQUk9CQSBCdWlsZGluZyBBdXRvbWF0aW9uIENvLixMVEQKLQkJCQlQZW5naHVhbiBCdWlsZGluZyA1MDEsIFNoYW5nZGkgRWFzdCBSb2FkICMxLCBIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTFBLTgzICAgKGhleCkJCVBlZ2FzdXMgVGVjaG5vbG9naWVzIEluYy4KLTAwMUE4MyAgICAgKGJhc2UgMTYpCQlQZWdhc3VzIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMTA4IFBhd25vb2sgRmFybSBSZC4KLQkJCQlMZW5vaXIgQ2l0eSBUTiAzNzc3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtODQgICAoaGV4KQkJViBPbmUgTXVsdGltZWRpYSBQdGUgTHRkCi0wMDFBODQgICAgIChiYXNlIDE2KQkJViBPbmUgTXVsdGltZWRpYSBQdGUgTHRkCi0JCQkJQmxrIDU0LCBLYWxsYW5nIEJhaHJ1Ci0JCQkJIzAyLTA0Ci0JCQkJMzM5MzM2Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTFBLTg1ICAgKGhleCkJCU5WIE1pY2hlbCBWYW4gZGUgV2llbGUKLTAwMUE4NSAgICAgKGJhc2UgMTYpCQlOViBNaWNoZWwgVmFuIGRlIFdpZWxlCi0JCQkJTS4gVmFuZGV3aWVsZXN0cmFhdCA3Ci0JCQkJTWFya2UgV2VzdC1WbGFhbmRlcmVuIDg1MTAKLQkJCQlCRUxHSVVNCi0KLTAwLTFBLTg2ICAgKGhleCkJCUFkdmFuY2VkSU8gU3lzdGVtcyBJbmMKLTAwMUE4NiAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZElPIFN5c3RlbXMgSW5jCi0JCQkJNTk1IEhvd2UgU3RyZWV0LCBTdWl0ZSA1MDIKLQkJCQlWYW5jb3V2ZXIgQkMgVjZDIDJUNQotCQkJCUNBTkFEQQotCi0wMC0xQS04NyAgIChoZXgpCQlDYW5ob2xkIEludGVybmF0aW9uYWwgTGltaXRlZAotMDAxQTg3ICAgICAoYmFzZSAxNikJCUNhbmhvbGQgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0JCQkJRmxhdCA0LCAxMy9GLiwgQmxvY2sgNCwgVGFpIFBpbmcgSW5kdXN0cmlhbCBDZW50cmUKLQkJCQk1MUEgVGluZyBLb2sgUm9hZCwgVGFpIFBvLCBOLlQuLAotCQkJCTAwODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFBLTg4ICAgKGhleCkJCVZlbmVyZ3ksQ28sTHRkCi0wMDFBODggICAgIChiYXNlIDE2KQkJVmVuZXJneSxDbyxMdGQKLQkJCQlXZXN0IDZ0aCBGbG9vcixNLTggQnVpbGRpbmcgTWFxdWVsaW5nIFpvbmUsCi0JCQkJU2hlbnpoZW4gSGlnaC1UZWNoIFBhcmssIE5hbnNoYW4gZGlzdHJpY3QsCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTFBLTg5ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFBODkgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFBLThBICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDFBOEEgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWktQ2l0eSBHeWVvbmctQnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtOEIgICAoaGV4KQkJQ0hVTklMIEVMRUNUUklDIElORC4sIENPLgotMDAxQThCICAgICAoYmFzZSAxNikJCUNIVU5JTCBFTEVDVFJJQyBJTkQuLCBDTy4KLQkJCQkzMDgsQnl1Y2tTYW4gRGlnaXRhbCBWYWxsZXksMTMyLTcsR2FtamVvbi1Eb25nLFNhc2FuZy1HdQotCQkJCUJ1c2FuIEd5ZW9uZ1NhbmdOYW1EbyA2MTctODAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLThDICAgKGhleCkJCUFzdGFybyBBRwotMDAxQThDICAgICAoYmFzZSAxNikJCUFzdGFybyBBRwotCQkJCUFtYWxpZW5iYWRzdHIuIDM2Ci0JCQkJQmF1IDMzYQotCQkJCUthcmxzcnVoZSBCVyA3NjIyNwotCQkJCUdFUk1BTlkKLQotMDAtMUEtOEQgICAoaGV4KQkJQVZFQ1MgQmVyZ2VuIEdtYkgKLTAwMUE4RCAgICAgKGJhc2UgMTYpCQlBVkVDUyBCZXJnZW4gR21iSAotCQkJCUJpbGxyb3Roc3RyLiAxMSBhCi0JCQkJQmVyZ2VuIGF1ZiBS/GdlbiBNL1YgMTg1MjgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLThFICAgKGhleCkJCTNXYXkgTmV0d29ya3MgTHRkCi0wMDFBOEUgICAgIChiYXNlIDE2KQkJM1dheSBOZXR3b3JrcyBMdGQKLQkJCQk3MjAwIENhbWJyaWRnZSBSZXNlYXJjaCBQYXJrCi0JCQkJV2F0ZXJiZWFjaAotCQkJCUNhbWJyaWRnZSBDYW1icmlkZ2VzaGlyZSBDQjUgOVRMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUEtOEYgICAoaGV4KQkJTm9ydGVsCi0wMDFBOEYgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFBLTkwICAgKGhleCkJCVRy83BpY28gU2lzdGVtYXMgZSBUZWxlY29tdW5pY2Hn9WVzIGRhIEFtYXr0bmlhIExUREEuCi0wMDFBOTAgICAgIChiYXNlIDE2KQkJVHLzcGljbyBTaXN0ZW1hcyBlIFRlbGVjb211bmljYef1ZXMgZGEgQW1hevRuaWEgTFREQS4KLQkJCQlSb2QuICBDYW1waW5hcy1Nb2dpLU1pcmltIChTUCAzNDApICBLbSAxMTgsNQotCQkJCVBvbGlzIGRlIFRlY25vbG9naWEgKENQcUQpLVBy6WRpbyA5QQotCQkJCUNhbXBpbmFzIFPjbyBQYXVsbyAxMy4wODYtOTAyCi0JCQkJQlJBWklMCi0KLTAwLTFBLTkxICAgKGhleCkJCUZ1c2lvbkR5bmFtaWMgTHRkLgotMDAxQTkxICAgICAoYmFzZSAxNikJCUZ1c2lvbkR5bmFtaWMgTHRkLgotCQkJCTEgQi5TLlIuIHRvd2VycywgNC10aCBmbG9vcgotCQkJCTIgQmVuIEd1cmlvbiBzdHJlZXQKLQkJCQlSYW1hdCBHYW4gIDUyNTczCi0JCQkJSVNSQUVMCi0KLTAwLTFBLTkyICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAxQTkyICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtOTMgICAoaGV4KQkJRVJDTyBMZXVjaHRlbiBHbWJICi0wMDFBOTMgICAgIChiYXNlIDE2KQkJRVJDTyBMZXVjaHRlbiBHbWJICi0JCQkJQnJvY2toYXVzZXIgV2VnIDgwLTgyCi0JCQkJTPxkZW5zY2hlaWQgTlJXIEQtNTg1MDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLTk0ICAgKGhleCkJCVZvdHJvbmljIEdtYkgKLTAwMUE5NCAgICAgKGJhc2UgMTYpCQlWb3Ryb25pYyBHbWJICi0JCQkJU2FhcmJydWVja2VyIFN0ci4gOAotCQkJCVN0LiBJbmdiZXJ0IFNhYXJsYW5kIDY2Mzg2Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS05NSAgIChoZXgpCQlIaXNlbnNlIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBUZWNobm9saWd5IENvLixMdGQuCi0wMDFBOTUgICAgIChiYXNlIDE2KQkJSGlzZW5zZSBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgVGVjaG5vbGlneSBDby4sTHRkLgotCQkJCTExLEppYW5nWGkgUm9hZCwKLQkJCQlRaW5nRGFvIFNoYW5Eb25nIDI2NjA3MQotCQkJCUNISU5BCi0KLTAwLTFBLTk2ICAgKGhleCkJCUVDTEVSIFMuQS4KLTAwMUE5NiAgICAgKGJhc2UgMTYpCQlFQ0xFUiBTLkEuCi0JCQkJTW90b3JzIDE2Ni0xNjgKLQkJCQlCYXJjZWxvbmEgIDA4MDM4Ci0JCQkJU1BBSU4KLQotMDAtMUEtOTcgICAoaGV4KQkJZml0aXZpc2lvbiB0ZWNobm9sb2d5IEluYy4KLTAwMUE5NyAgICAgKGJhc2UgMTYpCQlmaXRpdmlzaW9uIHRlY2hub2xvZ3kgSW5jLgotCQkJCThGLCBOby4gMzU2LCBTZWMuIDEsIE5laWh1IFJkCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtOTggICAoaGV4KQkJQXNvdGVsIENvbW11bmljYXRpb24gTGltaXRlZCBUYWl3YW4gQnJhbmNoCi0wMDFBOTggICAgIChiYXNlIDE2KQkJQXNvdGVsIENvbW11bmljYXRpb24gTGltaXRlZCBUYWl3YW4gQnJhbmNoCi0JCQkJM0cxNywgTm81LCBIc2luIFlpIFJvYWQsIFNlYy4gNQotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS05OSAgIChoZXgpCQlTbWFydHkgKEhaKSBJbmZvcm1hdGlvbiBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAxQTk5ICAgICAoYmFzZSAxNikJCVNtYXJ0eSAoSFopIEluZm9ybWF0aW9uIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJWW9uZ2h1YSBJbmR1c3RyaWFsIERpc3RyaWN0LEh1aXNoZW4gUm9hZCxaaGVubG9uZyBUb3duCi0JCQkJSHVpWmhvdSBHdWFuZ0RvbmcgNTE2MjI3Ci0JCQkJQ0hJTkEKLQotMDAtMUEtOUEgICAoaGV4KQkJU2t5d29ydGggRGlnaXRhbCB0ZWNobm9sb2d5KHNoZW56aGVuKWNvLmx0ZC4KLTAwMUE5QSAgICAgKGJhc2UgMTYpCQlTa3l3b3J0aCBEaWdpdGFsIHRlY2hub2xvZ3koc2hlbnpoZW4pY28ubHRkLgotCQkJCTEzRixCbG9jayBBLFNreXdvcnRoIEJ1aWxkaW5nLEdhb3hpbiBBVkUuMS5TLAotCQkJCU5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTFBLTlCICAgKGhleCkJCUFERUMgJiBQYXJ0ZXIgQUcKLTAwMUE5QiAgICAgKGJhc2UgMTYpCQlBREVDICYgUGFydGVyIEFHCi0JCQkJU3RhbGRlbmJhY2hzdHJhc3NlIDMwCi0JCQkJUGZhZWZmaWtvbiBaSCA4ODA4Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUEtOUMgICAoaGV4KQkJUmlnaHRIYW5kIFRlY2hub2xvZ2llcywgSW5jLgotMDAxQTlDICAgICAoYmFzZSAxNikJCVJpZ2h0SGFuZCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk2NTQ1IE4gT2xtc3RlZCBBdmVudWUKLQkJCQlDaGljYWdvIElMIDYwNjMxLTE0MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTlEICAgKGhleCkJCVNraXBwZXIgV2lyZWxlc3MsIEluYy4KLTAwMUE5RCAgICAgKGJhc2UgMTYpCQlTa2lwcGVyIFdpcmVsZXNzLCBJbmMuCi0JCQkJU2hpbmp1a3UtU3VtaXRvbW8gQmxkZy4gMjBGCi0JCQkJMi02LTEgTmlzaGktU2hpbmp1a3UKLQkJCQlTaGluanVrdSBUb2t5byAxNjMtMDIyMAotCQkJCUpBUEFOCi0KLTAwLTFBLTlFICAgKGhleCkJCUlDT04gRGlnaXRhbCBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTAwMUE5RSAgICAgKGJhc2UgMTYpCQlJQ09OIERpZ2l0YWwgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0JCQkJU3VpdGUyMjA5LCAyMi9GLiwgU2t5TGluZSBUb3dlciwKLQkJCQkzOSBXYW5nIEt3b25nIFJvYWQsIEtvd2xvb24gQmF5Ci0JCQkJQ0hJTkEKLQotMDAtMUEtOUYgICAoaGV4KQkJQS1MaW5rIEV1cm9wZSBMdGQKLTAwMUE5RiAgICAgKGJhc2UgMTYpCQlBLUxpbmsgRXVyb3BlIEx0ZAotCQkJCVAuTy5Cb3ggMwotCQkJCUVzcG9vICBGSS0wMjk0MQotCQkJCUZJTkxBTkQKLQotMDAtMUEtQTAgICAoaGV4KQkJRGVsbCBJbmMKLTAwMUFBMCAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUExICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUFBMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUEyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUFBMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUEzICAgKGhleCkJCURFTE9STUUKLTAwMUFBMyAgICAgKGJhc2UgMTYpCQlERUxPUk1FCi0JCQkJMiBERUxPUk1FIERSSVZFCi0JCQkJWUFSTU9VVEggTUFJTkUgMDQwOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUE0ICAgKGhleCkJCUZ1dHVyZSBVbml2ZXJzaXR5LUhha29kYXRlCi0wMDFBQTQgICAgIChiYXNlIDE2KQkJRnV0dXJlIFVuaXZlcnNpdHktSGFrb2RhdGUKLQkJCQkxMTYtMiBLYW1lZGFuYWthbm8tY2hvCi0JCQkJSGFrb2RhdGUgSG9ra2FpZG8gMDQxLTg2NTUKLQkJCQlKQVBBTgotCi0wMC0xQS1BNSAgIChoZXgpCQlCUk4gUGhvZW5peAotMDAxQUE1ICAgICAoYmFzZSAxNikJCUJSTiBQaG9lbml4Ci0JCQkJMjUwMCBBdWd1c3RpbmUgRHJpdmUsIFN1aXRlIDIwMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1BNiAgIChoZXgpCQlUZWxlZnVua2VuIFJhZGlvIENvbW11bmljYXRpb24gU3lzdGVtcyBHbWJIICZDTy5LRwotMDAxQUE2ICAgICAoYmFzZSAxNikJCVRlbGVmdW5rZW4gUmFkaW8gQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEdtYkggJkNPLktHCi0JCQkJRWJlcmhhcmQtRmluY2toLVN0cmFzc2UgNTUKLQkJCQlVbG0gQmFkZW4tV/xydHRlbWJlcmcgODkwNzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLUE3ICAgKGhleCkJCVRvcmlhbiBXaXJlbGVzcwotMDAxQUE3ICAgICAoYmFzZSAxNikJCVRvcmlhbiBXaXJlbGVzcwotCQkJCTIwNCBKb2huc3RvbiBTdHJlZXQKLQkJCQlDb2xsaW5nd29vZCBWaWN0b3JpYSAzMDY2Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFBLUE4ICAgKGhleCkJCU1hbWl5YSBEaWdpdGFsIEltYWdpbmcgQ28uLCBMdGQuCi0wMDFBQTggICAgIChiYXNlIDE2KQkJTWFtaXlhIERpZ2l0YWwgSW1hZ2luZyBDby4sIEx0ZC4KLQkJCQkyLTE0LTIyIFVlbm8KLQkJCQlUYWl0by1rdSBUb2t5byAxMTAtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTFBLUE5ICAgKGhleCkJCUZVSklBTiBTVEFSLU5FVCBDT01NVU5JQ0FUSU9OIENPLixMVEQKLTAwMUFBOSAgICAgKGJhc2UgMTYpCQlGVUpJQU4gU1RBUi1ORVQgQ09NTVVOSUNBVElPTiBDTy4sTFRECi0JCQkJMTktMjIjIEJ1aWxkaW5nLCBTdGFyLW5ldCBTY2llbmNlIFBsYXphLCBKdXl1YW56aG91LAotCQkJCTYxOCBKaW5zaGFuIFJvYWQsCi0JCQkJRlVaSE9VIEZVSklBTiAzNTAwMDIKLQkJCQlDSElOQQotCi0wMC0xQS1BQSAgIChoZXgpCQlBbmFsb2dpYyBDb3JwLgotMDAxQUFBICAgICAoYmFzZSAxNikJCUFuYWxvZ2ljIENvcnAuCi0JCQkJOCBDZW50ZW5uaWFsIERyaXZlCi0JCQkJUGVhYm9keSBNQSAwMTk2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQUIgICAoaGV4KQkJZVdpbmdzIHMuci5sLgotMDAxQUFCICAgICAoYmFzZSAxNikJCWVXaW5ncyBzLnIubC4KLQkJCQl2aWEgUy4gUXVhc2ltb2RvIDQ2Ci0JCQkJQ2FzdGVsIE1hZ2dpb3JlIEJvbG9nbmEgNDAwMTMKLQkJCQlJVEFMWQotCi0wMC0xQS1BQyAgIChoZXgpCQlDb3JlbGF0dXMgQUIKLTAwMUFBQyAgICAgKGJhc2UgMTYpCQlDb3JlbGF0dXMgQUIKLQkJCQlUZWduZXJnYXRhbiAzNwotCQkJCVN0b2NraG9sbSAgMTExNjEKLQkJCQlTV0VERU4KLQotMDAtMUEtQUQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUFBRCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUFFICAgKGhleCkJCVNhdmFudCBTeXN0ZW1zIExMQwotMDAxQUFFICAgICAoYmFzZSAxNikJCVNhdmFudCBTeXN0ZW1zIExMQwotCQkJCTc3MEEgTWFpbiBTdAotCQkJCU9zdGVydmlsbGUgTWFzc2FjaHVzZXR0cyAwMjY1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQUYgICAoaGV4KQkJQkxVU0VOUyBURUNITk9MT0dZCi0wMDFBQUYgICAgIChiYXNlIDE2KQkJQkxVU0VOUyBURUNITk9MT0dZCi0JCQkJRURJRklDSU8gQ05MLC0gQVYuCi0JCQkJRkVSTkFORE8gQ0FTQVMgTk9WT0EgLE66IDM3QiAyugotCQkJCTE1NzA3IC0gU0FOVElBR08gREUgQ09NUE9TVEVMQSBBIENPUlXRQSAKLQkJCQlTUEFJTgotCi0wMC0xQS1CMCAgIChoZXgpCQlTaWduYWwgTmV0d29ya3MgUHZ0LiBMdGQuLAotMDAxQUIwICAgICAoYmFzZSAxNikJCVNpZ25hbCBOZXR3b3JrcyBQdnQuIEx0ZC4sCi0JCQkJTm8uMTIsIEthbHBhdGFydSBBcGFydG1lbnRzLAotCQkJCVJhY2UgQ291cnNlIENyb3NzIFJvYWQsIE1hZGhhdm5hZ2FyLAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwMDAxCi0JCQkJSU5ESUEKLQotMDAtMUEtQjEgICAoaGV4KQkJQXNpYSBQYWNpZmljIFNhdGVsbGl0ZSBJbmR1c3RyaWVzIENvLiwgTHRkLgotMDAxQUIxICAgICAoYmFzZSAxNikJCUFzaWEgUGFjaWZpYyBTYXRlbGxpdGUgSW5kdXN0cmllcyBDby4sIEx0ZC4KLQkJCQk5dGggRkwsIElUIENhc3RsZSAyLURvbmcsICM1NTAtMSwgR2FzYW4tRG9uZywgR2V1bUNoZW9uLUd1LAotCQkJCVNlb3VsICAxNTMtNzY4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLUIyICAgKGhleCkJCUN5YmVyIFNvbHV0aW9ucyBJbmMuCi0wMDFBQjIgICAgIChiYXNlIDE2KQkJQ3liZXIgU29sdXRpb25zIEluYy4KLQkJCQk2LTYtMywgTWluYW1pIFlvc2hpbmFyaQotCQkJCUFvYmEta3UKLQkJCQlTZW5kYWkgTWl5YWdpLWtlbiA5ODktMzIwNAotCQkJCUpBUEFOCi0KLTAwLTFBLUIzICAgKGhleCkJCVZJU0lPTklURSBJTkMuCi0wMDFBQjMgICAgIChiYXNlIDE2KQkJVklTSU9OSVRFIElOQy4KLQkJCQkjNzA3IERhZXJ5dW5nIFRlY2hub3Rvd24tMiA1NjktMjEKLQkJCQlHYXNhbi1Eb25nIEdldW1jaGVvbi1HdQotCQkJCVNlb3VsICAxNTMtNzcxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLUI0ICAgKGhleCkJCUZGRUkgTHRkLgotMDAxQUI0ICAgICAoYmFzZSAxNikJCUZGRUkgTHRkLgotCQkJCUJsb2NrIDIsICBFYXRvbiBDb3VydAotCQkJCUVhdG9uIFJvYWQKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydGZvcmRzaGlyZSBIUDIgN0RSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUEtQjUgICAoaGV4KQkJSG9tZSBOZXR3b3JrIFN5c3RlbQotMDAxQUI1ICAgICAoYmFzZSAxNikJCUhvbWUgTmV0d29yayBTeXN0ZW0KLQkJCQkxMDcsIEh5dW5kYWkgSS1WYWxseQotCQkJCVNhbmdkYWV3b24gMShpbCktZG9uZywgSnVuZ3dvbi1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2Mi03MTQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtQjYgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMUFCNiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEwOCBXaWxkIEJhc2luIFN0ZSAzNTAKLQkJCQlBdXN0aW4gVFggNzg3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUI3ICAgKGhleCkJCUV0aG9zIE5ldHdvcmtzIExURC4KLTAwMUFCNyAgICAgKGJhc2UgMTYpCQlFdGhvcyBOZXR3b3JrcyBMVEQuCi0JCQkJMiBNYXNraXQgU3QuCi0JCQkJQnVpbGRpbmcgRCwgUE9Cb3ggNDA5MAotCQkJCUhlcnpsaWEgIDQ2NzY2Ci0JCQkJSVNSQUVMCi0KLTAwLTFBLUI4ICAgKGhleCkJCUFuc2VyaSBDb3Jwb3JhdGlvbgotMDAxQUI4ICAgICAoYmFzZSAxNikJCUFuc2VyaSBDb3Jwb3JhdGlvbgotCQkJCTM1RSBJbmR1c3RyaWFsIFdheQotCQkJCVN1aXRlIDEwMQotCQkJCVJvY2hlc3RlciBOSCAwMzg2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQjkgICAoaGV4KQkJUE1DCi0wMDFBQjkgICAgIChiYXNlIDE2KQkJUE1DCi0JCQkJNTYsIGF2ZW51ZSBSYXNwYWlsCi0JCQkJU2FpbnQgTWF1ciB2YWwgZGUgbWFybmUgOTQxMDAKLQkJCQlGUkFOQ0UKLQotMDAtMUEtQkEgICAoaGV4KQkJQ2F0b24gT3ZlcnNlYXMgTGltaXRlZAotMDAxQUJBICAgICAoYmFzZSAxNikJCUNhdG9uIE92ZXJzZWFzIExpbWl0ZWQKLQkJCQlSb29tIDEwMiwgTm8uIDEwMSwgTGFuZSA5MQotCQkJCUUtU2hhbiBSb2FkLCBQdWRvbmcgRGlzdHJpY3QKLQkJCQlTaGFuZ2hhaSAgMjAwMTI3Ci0JCQkJQ0hJTkEKLQotMDAtMUEtQkIgICAoaGV4KQkJRm9udGFsIFRlY2hub2xvZ3kgSW5jb3Jwb3JhdGlvbgotMDAxQUJCICAgICAoYmFzZSAxNikJCUZvbnRhbCBUZWNobm9sb2d5IEluY29ycG9yYXRpb24KLQkJCQlSbS41MjIsIEJsZGcuIDUyLCAxOTUsIFNlYy4gNCwgQ2h1bmdIc2luZyBSZC4sIENodXR1bmcKLQkJCQlIc2luY2h1ICAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLUJDICAgKGhleCkJCVU0RUEgVGVjaG5vbG9naWVzIEx0ZAotMDAxQUJDICAgICAoYmFzZSAxNikJCVU0RUEgVGVjaG5vbG9naWVzIEx0ZAotCQkJCUNpdHkgUG9pbnQKLQkJCQlUZW1wbGUgR2F0ZQotCQkJCUJyaXN0b2wgIEJTMSA2UEwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQS1CRCAgIChoZXgpCQlJbXBhdGljYSBJbmMuCi0wMDFBQkQgICAgIChiYXNlIDE2KQkJSW1wYXRpY2EgSW5jLgotCQkJCTIwNS0xNzI1IFN0LiBMYXVyZW50IEJsdmQuCi0JCQkJT3R0YXdhIE9OIEsxRyAzVjQKLQkJCQlDQU5BREEKLQotMDAtMUEtQkUgICAoaGV4KQkJQ09NUFVURVIgSEktVEVDSCBJTkMuCi0wMDFBQkUgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgSEktVEVDSCBJTkMuCi0JCQkJSGlnYXNoaVVlbm8zLTE4LTcKLQkJCQlUYWl0b2t1IFRva3lvIDExMC0wMDE1Ci0JCQkJSkFQQU4KLQotMDAtMUEtQkYgICAoaGV4KQkJVFJVTVBGIExhc2VyIE1hcmtpbmcgU3lzdGVtcyBBRwotMDAxQUJGICAgICAoYmFzZSAxNikJCVRSVU1QRiBMYXNlciBNYXJraW5nIFN5c3RlbXMgQUcKLQkJCQlBdXNzZXJmZWxkCi0JCQkJR3J1ZXNjaCBHUiA3MjE0Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUEtQzAgICAoaGV4KQkJSk9ZQklFTiBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0wMDFBQzAgICAgIChiYXNlIDE2KQkJSk9ZQklFTiBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJMThGLTEsIE5PLjcwMCwgWkhPTkdaSEVORyBSRC4sCi0JCQkJWkhPTkdIRSBDSVRZICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLUMxICAgKGhleCkJCTNDb20gTHRkCi0wMDFBQzEgICAgIChiYXNlIDE2KQkJM0NvbSBMdGQKLQkJCQlQZW9wbGVidWlsZGluZyAyCi0JCQkJUGVvcGxlYnVpbGRpbmcgRXN0YXRlLCBNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFBLUMyICAgKGhleCkJCVlFQyBDby4sTHRkLgotMDAxQUMyICAgICAoYmFzZSAxNikJCVlFQyBDby4sTHRkLgotCQkJCTU0My05IFRzdXJ1bWEKLQkJCQlNYWNoaWRhIFRva3lvIDE5NC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMUEtQzMgICAoaGV4KQkJU2NpZW50aWZpYy1BdGxhbnRhLCBJbmMKLTAwMUFDMyAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljLUF0bGFudGEsIEluYwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlBVEwgMS4zLjQ3MwotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUM0ICAgKGhleCkJCTJXaXJlLCBJbmMKLTAwMUFDNCAgICAgKGJhc2UgMTYpCQkyV2lyZSwgSW5jCi0JCQkJMTcwNCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQzUgICAoaGV4KQkJQnJlYWtpbmdQb2ludCBTeXN0ZW1zLCBJbmMuCi0wMDFBQzUgICAgIChiYXNlIDE2KQkJQnJlYWtpbmdQb2ludCBTeXN0ZW1zLCBJbmMuCi0JCQkJMzkwMCBOLiBDYXBpdGFsIG9mIFRleGFzIEh3eQotCQkJCVN1aXRlIDE4MAotCQkJCUF1c3RpbiBUWCA3ODc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQzYgICAoaGV4KQkJTWljcm8gQ29udHJvbCBEZXNpZ25zCi0wMDFBQzYgICAgIChiYXNlIDE2KQkJTWljcm8gQ29udHJvbCBEZXNpZ25zCi0JCQkJMTc0OTAgQ2FyaWJvdSBEcgotCQkJCU1vbnVtZW50IENvLiA4MDEzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQzcgICAoaGV4KQkJVU5JUE9JTlQKLTAwMUFDNyAgICAgKGJhc2UgMTYpCQlVTklQT0lOVAotCQkJCTdGIEd3YW5nc3VuZyBCbGQgODMxLTQ3IFllb2tTYW0tRG9uZwotCQkJCUthbmduYW0tR3UgU2VvdWwgMTM1LTkzNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS1DOCAgIChoZXgpCQlJU0wgKEluc3RydW1lbnRhdGlvbiBTY2llbnRpZmlxdWUgZGUgTGFib3JhdG9pcmUpCi0wMDFBQzggICAgIChiYXNlIDE2KQkJSVNMIChJbnN0cnVtZW50YXRpb24gU2NpZW50aWZpcXVlIGRlIExhYm9yYXRvaXJlKQotCQkJCUltcGFzc2UgZGVzIDQgdmVudHMKLQkJCQlQYXJjIGQnQWN0aXZpdOkgZGUgbGEgTWVzbmlsbGnpcmUKLQkJCQlWRVJTT04gQ0FMVkFET1MgMTQ3OTAKLQkJCQlGUkFOQ0UKLQotMDAtMUEtQzkgICAoaGV4KQkJU1VaVUtFTiBDTy4sTFRECi0wMDFBQzkgICAgIChiYXNlIDE2KQkJU1VaVUtFTiBDTy4sTFRECi0JCQkJU1VaVUtFTiBUT01FSSBCTERHLgotCQkJCTI2IEhJTUVXQUtBLUNITyBNRUlUTy1LVQotCQkJCU5BR09ZQS1TSSBBSUNISS1LRU4gNDY1LTAwNDUKLQkJCQlKQVBBTgotCi0wMC0xQS1DQSAgIChoZXgpCQlUaWxlcmEgQ29ycG9yYXRpb24KLTAwMUFDQSAgICAgKGJhc2UgMTYpCQlUaWxlcmEgQ29ycG9yYXRpb24KLQkJCQkxOTAwIFdlc3QgUGFyayBEcml2ZQotCQkJCVN1aXRlIDI5MAotCQkJCVdlc3Rib3JvdWdoIE1BIDAxNTgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1DQiAgIChoZXgpCQlBdXRvY29tIFByb2R1Y3RzIEx0ZAotMDAxQUNCICAgICAoYmFzZSAxNikJCUF1dG9jb20gUHJvZHVjdHMgTHRkCi0JCQkJVW5pdCA0IFRhY2hicm9vayBMaW5rLCBUYWNoYnJvb2sgUGFyayBEcml2ZQotCQkJCVdhcndpY2sgV2Fyd2lja3NoaXJlIENWMzQgNlJICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUEtQ0MgICAoaGV4KQkJQ2VsZXN0aWFsIFNlbWljb25kdWN0b3IsIEx0ZAotMDAxQUNDICAgICAoYmFzZSAxNikJCUNlbGVzdGlhbCBTZW1pY29uZHVjdG9yLCBMdGQKLQkJCQlVZ2xhbmQgSG91c2UsIFNvdXRoIENodXJjaCBTdHJlZXQsCi0JCQkJIENheW1hbiBJc2xhbmRzCi0JCQkJR2VvcmdlIFRvd24sICBDYXltYW4gSXNsYW5kcyAwMDAwMAotCQkJCUNBWU1BTiBJU0xBTkRTCi0KLTAwLTFBLUNEICAgKGhleCkJCVRpZGVsIEVuZ2luZWVyaW5nIExQCi0wMDFBQ0QgICAgIChiYXNlIDE2KQkJVGlkZWwgRW5naW5lZXJpbmcgTFAKLQkJCQkyMDI1IFcgQmVsdCBMaW5lIFJvYWQgU3VpdGUgMTE0Ci0JCQkJQ2Fycm9sbHRvbiBUWCA3NTAxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQ0UgICAoaGV4KQkJWVVQSVRFUlUgQ09SUE9SQVRJT04KLTAwMUFDRSAgICAgKGJhc2UgMTYpCQlZVVBJVEVSVSBDT1JQT1JBVElPTgotCQkJCTMsIERhbm5vdWUsIEl3YXp1LWNobywgT2themFraS1jaXR5LCBBaWNoaQotCQkJCU9rYXpha2kgQWljaGkgNDQ0LTIxNDQKLQkJCQlKQVBBTgotCi0wMC0xQS1DRiAgIChoZXgpCQlDLlQuIEVMRVRUUk9OSUNBCi0wMDFBQ0YgICAgIChiYXNlIDE2KQkJQy5ULiBFTEVUVFJPTklDQQotCQkJCVZpYSBDYWR1dGkgZGkgTmFzc2lyaXlhIDUgQgotCQkJCUJhcmJlcmlubyBWYWwgRCdFbHNhIChGSSkgIDUwMDIxCi0JCQkJSVRBTFkKLQotMDAtMUEtRDAgICAoaGV4KQkJQWxiaXMgVGVjaG5vbG9naWVzIEFHCi0wMDFBRDAgICAgIChiYXNlIDE2KQkJQWxiaXMgVGVjaG5vbG9naWVzIEFHCi0JCQkJQWxiaXNyaWVkZXJzdHJhc3NlIDE5OQotCQkJCUNIIDgwNDcgWnVlcmljaCAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xQS1EMSAgIChoZXgpCQlGQVJHTyBDTy4sIExURC4KLTAwMUFEMSAgICAgKGJhc2UgMTYpCQlGQVJHTyBDTy4sIExURC4KLQkJCQk0Ri4gS1lFTVlVTkcgQi9ECi0JCQkJMTY1LTQgU0FNU1VORy1ET05HLCBLQU5HTkFNLUtVCi0JCQkJU0VPVUwgIDEzNSA4ODUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtRDIgICAoaGV4KQkJRWxldHJvbmljYSBOaXRyb24gTHRkYQotMDAxQUQyICAgICAoYmFzZSAxNikJCUVsZXRyb25pY2EgTml0cm9uIEx0ZGEKLQkJCQlSdWEgRHIuIFVsaXNzZXMgRXNjb2JhciA0MTUKLQkJCQlKYXJkaW0gVmlzdGEgQWxlZ3JlCi0JCQkJQ2FtYW5kdWNhaWEgTWluYXMgR2VyYWlzIDM3NjUwLTAwMAotCQkJCUJSQVpJTAotCi0wMC0xQS1EMyAgIChoZXgpCQlWYW1wIEx0ZC4KLTAwMUFEMyAgICAgKGJhc2UgMTYpCQlWYW1wIEx0ZC4KLQkJCQlQTyBCb3ggODEwCi0JCQkJVmFhc2EgIDY1MTAxCi0JCQkJRklOTEFORAotCi0wMC0xQS1ENCAgIChoZXgpCQlpUE9YIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFBRDQgICAgIChiYXNlIDE2KQkJaVBPWCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTE1Ri0xLCBOby4xODYsIEppYW4tWWkgUmQuLCBDaHVuZy1IbyBDaXR5LAotCQkJCVRhaXBlaSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS1ENSAgIChoZXgpCQlLTUMgQ0hBSU4gSU5EVVNUUklBTCBDTy4sIExURC4KLTAwMUFENSAgICAgKGJhc2UgMTYpCQlLTUMgQ0hBSU4gSU5EVVNUUklBTCBDTy4sIExURC4KLQkJCQk3Ri04LCBOby4gODEsIFN1aS1MaWggUmQuLCBIc2luY2h1Ci0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS1ENiAgIChoZXgpCQlKSUFHTlNVIEFFVE5BIEVMRUNUUklDIENPLixMVEQKLTAwMUFENiAgICAgKGJhc2UgMTYpCQlKSUFHTlNVIEFFVE5BIEVMRUNUUklDIENPLixMVEQKLQkJCQlOTy41NzEgUUlBTkhVIFJPQUQsUUlBTlFJQU8gSU5EVVNUUlkgUEFSSyxXVVhJLEpJQU5HU1UsQ0hJTkEKLQkJCQlXVVhJIEpJQU5HU1UgMjE0MTUxCi0JCQkJQ0hJTkEKLQotMDAtMUEtRDcgICAoaGV4KQkJQ2hyaXN0aWUgRGlnaXRhbCBTeXN0ZW1zLCBJbmMuCi0wMDFBRDcgICAgIChiYXNlIDE2KQkJQ2hyaXN0aWUgRGlnaXRhbCBTeXN0ZW1zLCBJbmMuCi0JCQkJODA5IFdlbGxpbmd0b24gU3RyZWV0IE5vcnRoCi0JCQkJS2l0Y2hlbmVyIE9udGFyaW8gTjJHIDRZNwotCQkJCUNBTkFEQQotCi0wMC0xQS1EOCAgIChoZXgpCQlBbHN0ZXJBZXJvIEdtYkgKLTAwMUFEOCAgICAgKGJhc2UgMTYpCQlBbHN0ZXJBZXJvIEdtYkgKLQkJCQlM/GJlY2tlciBTdHJh32UgMQotCQkJCUhhbWJ1cmcgIDIyMDg3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS1EOSAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIEJyb2FkYmFuZCBFbGVjdHJpYyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxQUQ5ICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgQnJvYWRiYW5kIEVsZWN0cmljIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjg1IER1bmxvcCBCbHZkLiBTVwotCQkJCVN1aXRlIEsKLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1EQSAgIChoZXgpCQlCaXotMi1NZSBJbmMuCi0wMDFBREEgICAgIChiYXNlIDE2KQkJQml6LTItTWUgSW5jLgotCQkJCTEzMDEgV2VzdCBFYXUgR2FsbGllIEJsdmQKLQkJCQlTdWl0ZSAxMDYKLQkJCQlNZWxib3VybmUgRkwgMzI5MzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLURCICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDFBREIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1EQyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQURDICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQS1ERCAgIChoZXgpCQlQZVBXYXZlIEx0ZAotMDAxQUREICAgICAoYmFzZSAxNikJCVBlUFdhdmUgTHRkCi0JCQkJMTcvRi4sIFBhcmsgQnVpbGRpbmcsCi0JCQkJNDc2IENhc3RsZSBQZWFrIFJvYWQKLQkJCQlDaGV1bmcgU2hhIFdhbiBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0xQS1ERSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxQURFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtREYgICAoaGV4KQkJSW50ZXJhY3RpdmV0diBQdHkgTGltaXRlZAotMDAxQURGICAgICAoYmFzZSAxNikJCUludGVyYWN0aXZldHYgUHR5IExpbWl0ZWQKLQkJCQlTdWl0ZSAxMCBMZXZlbCAzCi0JCQkJNTYgQm93bWFuIFN0cmVldAotCQkJCVB5cm1vbnQsIFN5ZG5leSBOU1cgMjAwOQotCQkJCUFVU1RSQUxJQQotCi0wMC0xQS1FMCAgIChoZXgpCQlNeXRob2xvZ3kgVGVjaCBFeHByZXNzIEluYy4KLTAwMUFFMCAgICAgKGJhc2UgMTYpCQlNeXRob2xvZ3kgVGVjaCBFeHByZXNzIEluYy4KLQkJCQkyRiwgTm8uMTAsIExhbmUgMjM1LCBCYW8gQ2hpYW8gcm9hZCwKLQkJCQlIc2luLVRpZW4uCi0JCQkJVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLUUxICAgKGhleCkJCUVER0UgQUNDRVNTIElOQwotMDAxQUUxICAgICAoYmFzZSAxNikJCUVER0UgQUNDRVNTIElOQwotCQkJCTU0NDAgQkVBVU1PTlQgQ0VOVEVSIEJMVkQKLQkJCQlTVUlURSA0OTAKLQkJCQlUQU1QQSBGTCAzMzYzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRTIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQUUyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRTMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQUUzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRTQgICAoaGV4KQkJTWVkaWNpcyBUZWNobm9sb2dpZXMgQ29ycG9yYXRpb24KLTAwMUFFNCAgICAgKGJhc2UgMTYpCQlNZWRpY2lzIFRlY2hub2xvZ2llcyBDb3Jwb3JhdGlvbgotCQkJCTExODE4IE5vcnRoIENyZWVrIFBhcmt3YXkgTi4KLQkJCQlCb3RoZWxsIFdBIDk4MDExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1FNSAgIChoZXgpCQlNdm94IFRlY2hub2xvZ2llcyBJbmMuCi0wMDFBRTUgICAgIChiYXNlIDE2KQkJTXZveCBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTE5MDUwIFBydW5lcmlkZ2UgQXZlCi0JCQkJU3RlLiAxMjgKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUU2ICAgKGhleCkJCUF0bGFudGEgQWR2YW5jZWQgQ29tbXVuaWNhdGlvbnMgSG9sZGluZ3MgTGltaXRlZAotMDAxQUU2ICAgICAoYmFzZSAxNikJCUF0bGFudGEgQWR2YW5jZWQgQ29tbXVuaWNhdGlvbnMgSG9sZGluZ3MgTGltaXRlZAotCQkJCTE5MDAgV2VzdCBPYWsgQ2lyY2xlLCBNYXJpZXR0YQotCQkJCUF0bGFudGEgR2VvcmdpYSAzMDA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRTcgICAoaGV4KQkJQXp0ZWsgTmV0d29ya3MsIEluYy4KLTAwMUFFNyAgICAgKGJhc2UgMTYpCQlBenRlayBOZXR3b3JrcywgSW5jLgotCQkJCTI0NzcgNTV0aCBTdC4gIzIwMgotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUU4ICAgKGhleCkJCVNpZW1lbnMgRW50ZXJwcmlzZSBDb21tdW5pY2F0aW9ucyBHbWJIICYgQ28uIEtHCi0wMDFBRTggICAgIChiYXNlIDE2KQkJU2llbWVucyBFbnRlcnByaXNlIENvbW11bmljYXRpb25zIEdtYkggJiBDby4gS0cKLQkJCQlTRU4gU0MgTUMKLQkJCQlIb2ZtYW5uc3RyYXNzZSA1MQotCQkJCU11bmljaCA4MTM3OQotCQkJCUdFUk1BTlkKLQotMDAtMUEtRTkgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFBRTkgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUEtRUEgICAoaGV4KQkJUmFkaW8gVGVybWluYWwgU3lzdGVtcyBQdHkgTHRkCi0wMDFBRUEgICAgIChiYXNlIDE2KQkJUmFkaW8gVGVybWluYWwgU3lzdGVtcyBQdHkgTHRkCi0JCQkJMXN0IEZsb29yCi0JCQkJMTA4IERvaGVydHlzIFJvYWQKLQkJCQlMYXZlcnRvbiBOb3J0aCBWaWN0b3JpYSAzMDI2Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFBLUVCICAgKGhleCkJCUFsbGllZCBUZWxlc2lzIEsuSy4KLTAwMUFFQiAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcyBLLksuCi0JCQkJTm8uMiBUT0MgQmxkZy4KLQkJCQk3LTIxLTExIE5pc2hpLUdvdGFuZGEKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xQS1FQyAgIChoZXgpCQlLZXVtYmVlIEVsZWN0cm9uaWNzIENvLixMdGQuCi0wMDFBRUMgICAgIChiYXNlIDE2KQkJS2V1bWJlZSBFbGVjdHJvbmljcyBDby4sTHRkLgotCQkJCTMtMjYsIEphbmdzYW5nLWRvbmcsIFNhbmdyb2stZ3UKLQkJCQlBbnNhbi1zaSBLeXVuZ2tpLWRvIDQyNi00MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtRUQgICAoaGV4KQkJSU5DT1RFQyBHbWJICi0wMDFBRUQgICAgIChiYXNlIDE2KQkJSU5DT1RFQyBHbWJICi0JCQkJQmxvbWVzdHJhc3NlIDI1IC0gMjcKLQkJCQlCaWVsZWZlbGQgTlJXIDMzNjA5Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS1FRSAgIChoZXgpCQlTaGVuenRlY2ggTHRkCi0wMDFBRUUgICAgIChiYXNlIDE2KQkJU2hlbnp0ZWNoIEx0ZAotCQkJCTgxMywgOEYsIEhPTExZV09PRCBQTEFaQSwgNjEwIE5BVEhBTiBST0FELAotCQkJCUtPV0xPT04gIDg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0xQS1FRiAgIChoZXgpCQlMb29wY29tbSBUZWNobm9sb2d5LCBJbmMuCi0wMDFBRUYgICAgIChiYXNlIDE2KQkJTG9vcGNvbW0gVGVjaG5vbG9neSwgSW5jLgotCQkJCTE4Ri0xLCBOby4gMTUwLCBKaWFuIFlpIFJkLiwKLQkJCQlDaHVuZy1IbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLUYwICAgKGhleCkJCUFsY2F0ZWwgLSBJUEQKLTAwMUFGMCAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIC0gSVBECi0JCQkJNzAxIEUuIE1pZGRsZWZpZWxkIFJkLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUYxICAgKGhleCkJCUVtYmVkZGVkIEFydGlzdHMgQUIKLTAwMUFGMSAgICAgKGJhc2UgMTYpCQlFbWJlZGRlZCBBcnRpc3RzIEFCCi0JCQkJU29kcmEgUHJvbWVuYWRlbiA1MQotCQkJCU1hbG1vZSAgMjExIDM4Ci0JCQkJU1dFREVOCi0KLTAwLTFBLUYyICAgKGhleCkJCUR5bmF2aXNpb25zIFNjaHdlaXogQUcKLTAwMUFGMiAgICAgKGJhc2UgMTYpCQlEeW5hdmlzaW9ucyBTY2h3ZWl6IEFHCi0JCQkJRnJlaXNpbmdlciBMYW5kc3RyYXNzZSAyMQotCQkJCUQtODA5MzkgTXVlbmNoZW4gCi0JCQkJR0VSTUFOWQotCi0wMC0xQS1GMyAgIChoZXgpCQlTYW15b3VuZyBFbGVjdHJvbmljcwotMDAxQUYzICAgICAoYmFzZSAxNikJCVNhbXlvdW5nIEVsZWN0cm9uaWNzCi0JCQkJMTQ2LTEsIHNhbmdkYWV3b24tZG9uZywgam9vbmd3b24tZ3UKLQkJCQlzdW5nbmFtLXNoaSBHeXVuZ2dpLWRvIDQ2Mi04MDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtRjQgICAoaGV4KQkJSGFuZHJlYW1uZXQKLTAwMUFGNCAgICAgKGJhc2UgMTYpCQlIYW5kcmVhbW5ldAotCQkJCSMxMjA5IE1hcmlvVG93ZXIsIDIyMi0xMgotCQkJCUd1cm8tRG9uZywgR3Vyby1HdQotCQkJCVNlb3VsICAxNTItODQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLUY1ICAgKGhleCkJCVBFTlRBT05FLiBDTy4sIExURC4KLTAwMUFGNSAgICAgKGJhc2UgMTYpCQlQRU5UQU9ORS4gQ08uLCBMVEQuCi0JCQkJSHlvIENoYW5nIEJsZGcsIDNGLCAxMDEzLTYsIElua3llLWRvbmcgUGFsZGFsLUd1LAotCQkJCVN1d29uIENpdHkgR3l1bmdnaS1EbyA0MjItODMzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLUY2ICAgKGhleCkJCVdvdmVuIFN5c3RlbXMsIEluYy4KLTAwMUFGNiAgICAgKGJhc2UgMTYpCQlXb3ZlbiBTeXN0ZW1zLCBJbmMuCi0JCQkJMjQ1NSBBdWd1c3RpbmUgRHJpdmUKLQkJCQlTdWl0ZSAyMTEKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRjcgICAoaGV4KQkJZGF0YXNjaGFsdCBlK2EgR21iSAotMDAxQUY3ICAgICAoYmFzZSAxNikJCWRhdGFzY2hhbHQgZSthIEdtYkgKLQkJCQlBbiBkZXIgSPxsc2hvcnN0IDctOQotCQkJCUz8YmVjayAgMjM1NjgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLUY4ICAgKGhleCkJCUNvcGxleSBDb250cm9scyBDb3Jwb3JhdGlvbgotMDAxQUY4ICAgICAoYmFzZSAxNikJCUNvcGxleSBDb250cm9scyBDb3Jwb3JhdGlvbgotCQkJCTIwIERhbiBSb2FkCi0JCQkJQ2FudG9uIE1BIDAyMDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1GOSAgIChoZXgpCQlBZXJvVklyb25tZW50IChBViBJbmMpCi0wMDFBRjkgICAgIChiYXNlIDE2KQkJQWVyb1ZJcm9ubWVudCAoQVYgSW5jKQotCQkJCTQ2ODUgSW5kdXN0cmlhbCBTdAotCQkJCVBPIEExODI3MQotCQkJCVNpbWkgVmFsbGV5IENBIDkzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1GQSAgIChoZXgpCQlXZWxjaCBBbGx5biwgSW5jLgotMDAxQUZBICAgICAoYmFzZSAxNikJCVdlbGNoIEFsbHluLCBJbmMuCi0JCQkJNDYxOSBKb3JkYW4gUm9hZAotCQkJCVBPIEJveCAxODcKLQkJCQlTa2FuZWF0ZWxlcyBGYWxscyBOWSAxMzE1My0wMTg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1GQiAgIChoZXgpCQlKb2J5IEluYy4KLTAwMUFGQiAgICAgKGJhc2UgMTYpCQlKb2J5IEluYy4KLQkJCQkxNTM1IE1pc3Npb24gU3QuCi0JCQkJRmxvb3IgMgotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUZDICAgKGhleCkJCU1vZHVzTGluayBDb3Jwb3JhdGlvbgotMDAxQUZDICAgICAoYmFzZSAxNikJCU1vZHVzTGluayBDb3Jwb3JhdGlvbgotCQkJCTI5MDUgUHJlc3Rvbndvb2QgRHJpdmUKLQkJCQlQbGFubyBUZXhhcyA3NTA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRkQgICAoaGV4KQkJRVZPTElTCi0wMDFBRkQgICAgIChiYXNlIDE2KQkJRVZPTElTCi0JCQkJMjkgYXZlbnVlIGRlIGxhIGZvbnRhaW5lCi0JCQkJWkkgQW5nZXJzIGJlYXVjb3V6ZQotCQkJCUJlYXVjb3V6ZSAgNDkwNzAKLQkJCQlGUkFOQ0UKLQotMDAtMUEtRkUgICAoaGV4KQkJU09GQUNSRUFMCi0wMDFBRkUgICAgIChiYXNlIDE2KQkJU09GQUNSRUFMCi0JCQkJMTQ5IGF2ZW51ZSBkdSBNQUlORQotCQkJCVBBUklTIFJlZ2lvbiBQYXJpc2llbm5lIDc1MDE0Ci0JCQkJRlJBTkNFCi0KLTAwLTFBLUZGICAgKGhleCkJCVdpenlvdW5nIFRlY2guCi0wMDFBRkYgICAgIChiYXNlIDE2KQkJV2l6eW91bmcgVGVjaC4KLQkJCQk5RiwgTm8uIDI1LCBTZWMuIDEsIE5hbmppbmcgRS4gUmQuCi0JCQkJVGFpcGVpICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTAwICAgKGhleCkJCU5lb3Bvc3QgVGVjaG5vbG9naWVzCi0wMDFCMDAgICAgIChiYXNlIDE2KQkJTmVvcG9zdCBUZWNobm9sb2dpZXMKLQkJCQkxMTMgcnVlIEplYW4tTWFyaW4gTmF1ZGluCi0JCQkJQmFnbmV1eCAgOTIyMjAKLQkJCQlGUkFOQ0UKLQotMDAtMUItMDEgICAoaGV4KQkJQXBwbGllZCBSYWRpbyBUZWNobm9sb2dpZXMKLTAwMUIwMSAgICAgKGJhc2UgMTYpCQlBcHBsaWVkIFJhZGlvIFRlY2hub2xvZ2llcwotCQkJCTExMjQgU291dGggU2VydmljZSBSb2FkIFdlc3QKLQkJCQlPYWt2aWxsZSBPbnRhcmlvIEw2TCA1VDcKLQkJCQlDQU5BREEKLQotMDAtMUItMDIgICAoaGV4KQkJRUQgQ28uTHRkCi0wMDFCMDIgICAgIChiYXNlIDE2KQkJRUQgQ28uTHRkCi0JCQkJNTE3LTE1IFNhbmdEYWVXb24tRG9uZwotCQkJCVNlb25nTmFtLUNpdHkgR3llb25nR2ktRG8gNDYyLTgwNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi0wMyAgIChoZXgpCQlBY3Rpb24gVGVjaG5vbG9neSAoU1opIENvLiwgTHRkCi0wMDFCMDMgICAgIChiYXNlIDE2KQkJQWN0aW9uIFRlY2hub2xvZ3kgKFNaKSBDby4sIEx0ZAotCQkJCUFjdGlvbiBUZWNobm9sb2d5IEJ1aWxkaW5nIEJhb3l1YW4gUm9hZCwgWGl4aWFuZywgQmFvJ2FuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwMgotCQkJCUNISU5BCi0KLTAwLTFCLTA0ICAgKGhleCkJCUFmZmluaXR5IEludGVybmF0aW9uYWwgUy5wLmEKLTAwMUIwNCAgICAgKGJhc2UgMTYpCQlBZmZpbml0eSBJbnRlcm5hdGlvbmFsIFMucC5hCi0JCQkJQy5zbyBTYXZvbmEgNTEKLQkJCQlWaWxsYXN0ZWxsb25lIFRvcmlubyBJMTAwMjkKLQkJCQlJVEFMWQotCi0wMC0xQi0wNSAgIChoZXgpCQlZTUMgQUcKLTAwMUIwNSAgICAgKGJhc2UgMTYpCQlZTUMgQUcKLQkJCQlTb25uZW5zdHJhc3NlIDQKLQkJCQlLcmV1emxpbmdlbiBUaHVyZ2F1IDgyODAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xQi0wNiAgIChoZXgpCQlBdGVsaWVycyBSLiBMQVVNT05JRVIKLTAwMUIwNiAgICAgKGJhc2UgMTYpCQlBdGVsaWVycyBSLiBMQVVNT05JRVIKLQkJCQkxMSwgcnVlIGR1IENoZW5pdmFsCi0JCQkJQlAgMQotCQkJCU5lc2xlcyBsYSBWYWxs6WUgVmFsIGQnT2lzZSA5NTY5MAotCQkJCUZSQU5DRQotCi0wMC0xQi0wNyAgIChoZXgpCQlNZW5kb2Npbm8gU29mdHdhcmUKLTAwMUIwNyAgICAgKGJhc2UgMTYpCQlNZW5kb2Npbm8gU29mdHdhcmUKLQkJCQk0NzAwMSBCZW5lY2lhIFN0LgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTA4ICAgKGhleCkJCURhbmZvc3MgRHJpdmVzIEEvUwotMDAxQjA4ICAgICAoYmFzZSAxNikJCURhbmZvc3MgRHJpdmVzIEEvUwotCQkJCVVsc25hZXMgMQotCQkJCUdyYWFzdGVuIDYzMDAgCi0JCQkJREVOTUFSSwotCi0wMC0xQi0wOSAgIChoZXgpCQlNYXRyaXggVGVsZWNvbSBQdnQuIEx0ZC4KLTAwMUIwOSAgICAgKGJhc2UgMTYpCQlNYXRyaXggVGVsZWNvbSBQdnQuIEx0ZC4KLQkJCQkzOTQsIEdJREMsIE1ha2FycHVyYSwKLQkJCQlWYWRvZGFyYSBHdWphcmF0IDM5MDAxMAotCQkJCUlORElBCi0KLTAwLTFCLTBBICAgKGhleCkJCUludGVsbGlnZW50IERpc3RyaWJ1dGVkIENvbnRyb2xzIEx0ZAotMDAxQjBBICAgICAoYmFzZSAxNikJCUludGVsbGlnZW50IERpc3RyaWJ1dGVkIENvbnRyb2xzIEx0ZAotCQkJCUtleW5lcyBIb3VzZSwgQ2hlc3RlciBQYXJrCi0JCQkJQWxmcmV0b24gUm9hZAotCQkJCURlcmJ5IERlcmJ5c2hpcmUgREUyMSA0QVMKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi0wQiAgIChoZXgpCQlQaGlkZ2V0cyBJbmMuCi0wMDFCMEIgICAgIChiYXNlIDE2KQkJUGhpZGdldHMgSW5jLgotCQkJCTI3MTVBIDE2QSBTdHJlZXQgTi5XLgotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMk0gM1I3Ci0JCQkJQ0FOQURBCi0KLTAwLTFCLTBDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUIwQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTBEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUIwRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTBFICAgKGhleCkJCUlub1RlYyBHbWJIIE9yZ2FuaXNhdGlvbnNzeXN0ZW1lCi0wMDFCMEUgICAgIChiYXNlIDE2KQkJSW5vVGVjIEdtYkggT3JnYW5pc2F0aW9uc3N5c3RlbWUKLQkJCQlCaWVkcmljaHN0cmFzc2UgMTEKLQkJCQlXb2VsZmVyc2hlaW0gSGVzc2VuIEQtNjEyMDAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLTBGICAgKGhleCkJCVBldHJhdGVjCi0wMDFCMEYgICAgIChiYXNlIDE2KQkJUGV0cmF0ZWMKLQkJCQlEZXJlY2ggSGEtU2hhcm9uIDEyCi0JCQkJS2ZhciBTYWJhIFNoYXJvbiA0NDI3MQotCQkJCUlTUkFFTAotCi0wMC0xQi0xMCAgIChoZXgpCQlTaGVuWmhlbiBLYW5nIEh1aSBUZWNobm9sb2d5IENvLixsdGQKLTAwMUIxMCAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBLYW5nIEh1aSBUZWNobm9sb2d5IENvLixsdGQKLQkJCQlDaGluYSAgR3VhbmdEb25nCi0JCQkJVHdvIHMsZmxvb3IgQmFvQW4gRGlzdHJpY3QgTG9uZ0h1YQotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMDkKLQkJCQlDSElOQQotCi0wMC0xQi0xMSAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMUIxMSAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOTy4yODksIFNpbmh1IDNyZCBSZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QsIFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItMTIgICAoaGV4KQkJQXBwcmlvbgotMDAxQjEyICAgICAoYmFzZSAxNikJCUFwcHJpb24KLQkJCQlOYXNhIEFtZXMgUmVyZWFyY2ggQ2VudGVyCi0JCQkJUC5PLiBCb3ggOTUgQnVpbGRpbmcgMTkgU3VpdGUgMTAwMAotCQkJCU1vZmZldHQgRmllbGQgQ2FsaWZvcm5pYSA5NDAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMTMgICAoaGV4KQkJSWNyb24gVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uCi0wMDFCMTMgICAgIChiYXNlIDE2KQkJSWNyb24gVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uCi0JCQkJMjIxIC0gNDY2NCBMb3VnaGVlZCBIaWdod2F5Ci0JCQkJQnVybmFieSBCQyBWNUMgNVQ1Ci0JCQkJQ0FOQURBCi0KLTAwLTFCLTE0ICAgKGhleCkJCUNhcmV4IExpZ2h0aW5nIEVxdWlwbWVudCBGYWN0b3J5Ci0wMDFCMTQgICAgIChiYXNlIDE2KQkJQ2FyZXggTGlnaHRpbmcgRXF1aXBtZW50IEZhY3RvcnkKLQkJCQk1MCBDaGFuZyBUYW5nIFJkLiwgWWFuIFRpYW4gRGlzdHJpY3QsCi0JCQkJRnVuZ2tvbmcsIERvbmdHdWFuCi0JCQkJR3Vhbmdkb25nIHByb3ZpbmNlIAotCQkJCUNISU5BCi0KLTAwLTFCLTE1ICAgKGhleCkJCVZveHRlbCwgSW5jLgotMDAxQjE1ICAgICAoYmFzZSAxNikJCVZveHRlbCwgSW5jLgotCQkJCTEyNzI1IFNXIE1pbGxpa2FuIFdheQotCQkJCVN1aXRlIDIzMAotCQkJCUJlYXZlcnRvbiBPUiA5NzAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMTYgICAoaGV4KQkJQ2VsdHJvIEx0ZC4KLTAwMUIxNiAgICAgKGJhc2UgMTYpCQlDZWx0cm8gTHRkLgotCQkJCUF6b3JpbSBCdXNpbmVzcyBQYXJrCi0JCQkJOTQgRW0gSG1vc2hhdm90IFJvYWQuCi0JCQkJUGV0YWNoIFRpa3ZhICA0OTUyNwotCQkJCUlTUkFFTAotCi0wMC0xQi0xNyAgIChoZXgpCQlQYWxvIEFsdG8gTmV0d29ya3MKLTAwMUIxNyAgICAgKGJhc2UgMTYpCQlQYWxvIEFsdG8gTmV0d29ya3MKLQkJCQkyMTMwIEdvbGQgU3RyZWV0IFN1aXRlIDIwMAotCQkJCUFsdmlzbyBDQSA5NTAyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMTggICAoaGV4KQkJVHN1a2VuIEVsZWN0cmljIEluZC4gQ28uLEx0ZAotMDAxQjE4ICAgICAoYmFzZSAxNikJCVRzdWtlbiBFbGVjdHJpYyBJbmQuIENvLixMdGQKLQkJCQkzLTkgQWtlZG91cmkgSXp1bWkta3UKLQkJCQlTZW5kYWkgQ2l0eSBNaXlhZ2kgOTgxLTMyMDYKLQkJCQlKQVBBTgotCi0wMC0xQi0xOSAgIChoZXgpCQlJRUVFIEkmTSBTb2NpZXR5IFRDOSAKLTAwMUIxOSAgICAgKGJhc2UgMTYpCQlJRUVFIEkmTSBTb2NpZXR5IFRDOSAKLQkJCQkxMDAgQnVyZWF1IERyLiwgTWFpbCBTdG9wIDgyMjAKLQkJCQlHYWl0aGVyc2J1cmcgTUQgMjA4OTktODIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMUEgICAoaGV4KQkJZS10cmVlcyBKYXBhbiwgSW5jLgotMDAxQjFBICAgICAoYmFzZSAxNikJCWUtdHJlZXMgSmFwYW4sIEluYy4KLQkJCQlPb3dhZGEtY2hvIDItOS0yCi0JCQkJRGFpd2F1bnl1IGJsZGcgM0YKLQkJCQlIYWNoaW9qaS1jaXR5IFRva3lvIDE1MC0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMUItMUIgICAoaGV4KQkJU2llbWVucyBBRywKLTAwMUIxQiAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHLAotCQkJCUkgSUEgU0MgRVdLIFBVMSwgT2VzdGxpY2hlIFJoZWluYnJ1ZWNrZW5zdHJhc3NlIDUwCi0JCQkJNzYxODEsIEthcmxzcnVoZSBCYWRlbiBXdWVydHRlbWJlcmcgCi0JCQkJR0VSTUFOWQotCi0wMC0xQi0xQyAgIChoZXgpCQlDb2hlcmVudAotMDAxQjFDICAgICAoYmFzZSAxNikJCUNvaGVyZW50Ci0JCQkJMTI4MCBCbHVlcyBIaWxscyBBdmUuCi0JCQkJQmxvb21maWVsZCBDVCAwNjAwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMUQgICAoaGV4KQkJUGhvZW5peCBJbnRlcm5hdGlvbmFsIENvLiwgTHRkCi0wMDFCMUQgICAgIChiYXNlIDE2KQkJUGhvZW5peCBJbnRlcm5hdGlvbmFsIENvLiwgTHRkCi0JCQkJMTFGLiBOby40Mi0xLCBTZWMuMSwgWmhvbmd5YW5nIE4uIFJkLiBCZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItMUUgICAoaGV4KQkJSEFSVCBDb21tdW5pY2F0aW9uIEZvdW5kYXRpb24KLTAwMUIxRSAgICAgKGJhc2UgMTYpCQlIQVJUIENvbW11bmljYXRpb24gRm91bmRhdGlvbgotCQkJCVNURSAxLTM1MAotCQkJCTkzOTAgUmVzZWFyY2ggQmx2ZAotCQkJCUF1c3RpbiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMUYgICAoaGV4KQkJREVMVEEgLSBEYW5pc2ggRWxlY3Ryb25pY3MsIExpZ2h0ICYgQWNvdXN0aWNzCi0wMDFCMUYgICAgIChiYXNlIDE2KQkJREVMVEEgLSBEYW5pc2ggRWxlY3Ryb25pY3MsIExpZ2h0ICYgQWNvdXN0aWNzCi0JCQkJVmVubGlnaGVkc3ZlaiA0Ci0JCQkJSPhyc2hvbG0gIERLLTI5NzAKLQkJCQlERU5NQVJLCi0KLTAwLTFCLTIwICAgKGhleCkJCVRQaW5lIFRlY2hub2xvZ3kKLTAwMUIyMCAgICAgKGJhc2UgMTYpCQlUUGluZSBUZWNobm9sb2d5Ci0JCQkJM0YsIE5vLjEsIEFOLUkgUmQsCi0JCQkJS2VlbHVuZyAgMTExCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi0yMSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMUIyMSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFCLTIyICAgKGhleCkJCVBhbGl0IE1pY3Jvc3lzdGVtcyAoIEguSy4pIEx0ZC4KLTAwMUIyMiAgICAgKGJhc2UgMTYpCQlQYWxpdCBNaWNyb3N5c3RlbXMgKCBILksuKSBMdGQuCi0JCQkJUm9vbSA0LTYsMTFGLE5hbiBGdW5nIENvbW1lcmNpYWwgQ2VudGVyCi0JCQkJMTkgTGFtIExvayBSb2FkLEtvd2xvb24gQmF5Ci0JCQkJS293bG9vbiAgMTExCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFCLTIzICAgKGhleCkJCVNpbXBsZUNvbVRvb2xzCi0wMDFCMjMgICAgIChiYXNlIDE2KQkJU2ltcGxlQ29tVG9vbHMKLQkJCQk1OTggSW5kaWFuIFRyYWlsIFJkIFMuCi0JCQkJU3VpdGUgIzEwMgotCQkJCUluZGlhbiBUcmFpbCBOQyAyODA3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMjQgICAoaGV4KQkJUXVhbnRhIENvbXB1dGVyIEluYy4KLTAwMUIyNCAgICAgKGJhc2UgMTYpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotCQkJCU5vLiAyMTEsIFdlbiBId2EgMm5kIFJkLiwKLQkJCQlLdWVpIFNoYW4gSHNpYW5nIFRhbyBZdWFuIFNoaWVuIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItMjUgICAoaGV4KQkJTm9ydGVsCi0wMDFCMjUgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFCLTI2ICAgKGhleCkJCVJPTi1UZWxlY29tIFpBTwotMDAxQjI2ICAgICAoYmFzZSAxNikJCVJPTi1UZWxlY29tIFpBTwotCQkJCTE1IEEsIFphcmVjaG5heWEgc3QuCi0JCQkJVHJlaGdvcm55IENoZWx5YWJpbnNrIHJlZ2lvbiA0NTYwODAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUItMjcgICAoaGV4KQkJTWVybGluIENTSQotMDAxQjI3ICAgICAoYmFzZSAxNikJCU1lcmxpbiBDU0kKLQkJCQkxMjYyNSBEYW5pZWxzb24gQ291cnQKLQkJCQlTdWl0ZSAxMDkKLQkJCQlQb3dheSBDQSA5MjA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMjggICAoaGV4KQkJUE9MWUdPTiwgSlNDCi0wMDFCMjggICAgIChiYXNlIDE2KQkJUE9MWUdPTiwgSlNDCi0JCQkJMzcvMSwgS2FybCBNYXJ4IHN0ci4sIGZsb29yIDUKLQkJCQlVZmEgQmFzaGtvcnRvc3RhbiA0NTAwNzcKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUItMjkgICAoaGV4KQkJQXZhbnRpcy5Dby4sTHRkCi0wMDFCMjkgICAgIChiYXNlIDE2KQkJQXZhbnRpcy5Dby4sTHRkCi0JCQkJNTAyIFNFT0lMIEJMREcuCi0JCQkJMTU0My04IFNFT0NITy1ET05HLCBTRU9DSE8tR1UKLQkJCQlTRU9VTCAgMTMyLTg3MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi0yQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFCMkEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0yQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFCMkIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0yQyAgIChoZXgpCQlBVFJPTiBlbGVjdHJvbmljIEdtYkgKLTAwMUIyQyAgICAgKGJhc2UgMTYpCQlBVFJPTiBlbGVjdHJvbmljIEdtYkgKLQkJCQlBbSBaaWVnZWxzdGFkZWwgMTIgKyAxNAotCQkJCU1hcmt0IFNjaHdhYmVuICA4NTU3MAotCQkJCUdFUk1BTlkKLQotMDAtMUItMkQgICAoaGV4KQkJTWVkLUVuZyBTeXN0ZW1zIEluYy4KLTAwMUIyRCAgICAgKGJhc2UgMTYpCQlNZWQtRW5nIFN5c3RlbXMgSW5jLgotCQkJCTI0MDAgU3QuIExhdXJlbnQgQmx2ZC4KLQkJCQlPdHRhd2EgT250YXJpbyBLMUcgNkM0Ci0JCQkJQ0FOQURBCi0KLTAwLTFCLTJFICAgKGhleCkJCVNpbmt5byBFbGVjdHJvbiBJbmMKLTAwMUIyRSAgICAgKGJhc2UgMTYpCQlTaW5reW8gRWxlY3Ryb24gSW5jCi0JCQkJMy0zLTIxIGFzYWhpZ2Fva2EKLQkJCQloaW5vLWNpdHkgVG9reW8gMTkxLTAwNjUKLQkJCQlKQVBBTgotCi0wMC0xQi0yRiAgIChoZXgpCQlORVRHRUFSIEluYy4KLTAwMUIyRiAgICAgKGJhc2UgMTYpCQlORVRHRUFSIEluYy4KLQkJCQk0NTAwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0zMCAgIChoZXgpCQlTb2xpdGVjaCBJbmMuCi0wMDFCMzAgICAgIChiYXNlIDE2KQkJU29saXRlY2ggSW5jLgotCQkJCTE4MzggTWFpbiBTdHJlZXQKLQkJCQlTdGV2ZW5zdmlsbGUgTUQgMjE2NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTMxICAgKGhleCkJCU5ldXJhbCBJbWFnZS4gQ28uIEx0ZC4KLTAwMUIzMSAgICAgKGJhc2UgMTYpCQlOZXVyYWwgSW1hZ2UuIENvLiBMdGQuCi0JCQkJQTMwNywgQ0FTSSwgT3Nha2EgVW5pdi4KLQkJCQkyLTEsIFlhbWFkYS1va2EKLQkJCQlTdWl0YSBjaXR5IE9zYWthIDU2NS0wODcxCi0JCQkJSkFQQU4KLQotMDAtMUItMzIgICAoaGV4KQkJUUxvZ2ljIENvcnBvcmF0aW9uCi0wMDFCMzIgICAgIChiYXNlIDE2KQkJUUxvZ2ljIENvcnBvcmF0aW9uCi0JCQkJMjY2NTAgQWxpc28gVmllam8gUGFya3dheQotCQkJCUFsaXNvIFZpZWpvIENhbGlmb3JuaWEgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTMzICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFCMzMgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFCLTM0ICAgKGhleCkJCUZvY3VzIFN5c3RlbSBJbmMuCi0wMDFCMzQgICAgIChiYXNlIDE2KQkJRm9jdXMgU3lzdGVtIEluYy4KLQkJCQkxOUYtMSwgTm8uIDI2NiBXZW4gSHdhIDJuZCBSZC4sIFNlYy4gMQotCQkJCUxpbmtvdSBUYWlwZWkgQ291bnR5IAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItMzUgICAoaGV4KQkJQ2hvbmdRaW5nIEpJTk9VIFNjaWVuY2UgJiBUZWNobm9sb2d5IERldmVsb3BtZW50IENPLixMdGQKLTAwMUIzNSAgICAgKGJhc2UgMTYpCQlDaG9uZ1FpbmcgSklOT1UgU2NpZW5jZSAmIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ08uLEx0ZAotCQkJCUNodWFuZ3lleXVhbiAyMDgjIEtleXVhbiAzcmQgUm9hZCAxMDYjCi0JCQkJIEhpLVRlY2ggRGV2ZWxvcG1lbnQgWm9uZQotCQkJCUNob25ncWluZyAgNDAwMDMwCi0JCQkJQ0hJTkEKLQotMDAtMUItMzYgICAoaGV4KQkJVHN1YmF0YSBFbmdpbmVlcmluZyBDby4sTHRkLiAoSGVhZCBPZmZpY2UpCi0wMDFCMzYgICAgIChiYXNlIDE2KQkJVHN1YmF0YSBFbmdpbmVlcmluZyBDby4sTHRkLiAoSGVhZCBPZmZpY2UpCi0JCQkJS295YW5hZ2kgMS0yCi0JCQkJU2VuanUgYmxkLgotCQkJCUliYXJha2kgT3Nha2EgNTY3LTA4NTIKLQkJCQlKQVBBTgotCi0wMC0xQi0zNyAgIChoZXgpCQlDb21wdXRlYyBPeQotMDAxQjM3ICAgICAoYmFzZSAxNikJCUNvbXB1dGVjIE95Ci0JCQkJSnVob2xhbmthdHUgOAotCQkJCVBMIDY2Ci0JCQkJS291dm9sYSBLeW1pIDQ1MjAwCi0JCQkJRklOTEFORAotCi0wMC0xQi0zOCAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELgotMDAxQjM4ICAgICAoYmFzZSAxNikJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuCi0JCQkJTk8uIDI1LCBUSEUgM1JEIEFWRU5VRQotCQkJCUtVTlNIQU4gRVhQT1JUIFBST0NFU1NJTkcgWk9ORQotCQkJCUtVTlNIQU4gQ0lUWSBTVVpIT1UgUFJPVklOQ0UgMjE1MzAwCi0JCQkJQ0hJTkEKLQotMDAtMUItMzkgICAoaGV4KQkJUHJveGljYXN0Ci0wMDFCMzkgICAgIChiYXNlIDE2KQkJUHJveGljYXN0Ci0JCQkJMzEyIFN1bm55ZmllbGQgRHJpdmUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlHbGVuc2hhdyBQQSAxNTExNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItM0EgICAoaGV4KQkJU0lNUyBDb3JwLgotMDAxQjNBICAgICAoYmFzZSAxNikJCVNJTVMgQ29ycC4KLQkJCQlSQU9OIEJsZGcsIDlGLCA5Mi04LCBXb25oeW9yby0yZ2EsIFlvbmdzYW4tZ3UKLQkJCQlTZW91bCAgMTQwLTg0NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi0zQiAgIChoZXgpCQlZaS1RaW5nIENPLiwgTFRECi0wMDFCM0IgICAgIChiYXNlIDE2KQkJWWktUWluZyBDTy4sIExURAotCQkJCTMxMCBST09NLDEyRgotCQkJCU5PLjUtMSBIRU5HIFlBTkcgUkQuCi0JCQkJVEFJUEVJICAxMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTNDICAgKGhleCkJCVNvZnR3YXJlIFRlY2hub2xvZ2llcyBHcm91cCxJbmMuCi0wMDFCM0MgICAgIChiYXNlIDE2KQkJU29mdHdhcmUgVGVjaG5vbG9naWVzIEdyb3VwLEluYy4KLQkJCQkxMDMzMCBXLiBSb29zZXZlbHQgUm9hZAotCQkJCVN1aXRlIDMxMAotCQkJCVdlc2NoZXN0ZXIgSUwgNjAxNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTNEICAgKGhleCkJCUV1cm9UZWwgU3BhCi0wMDFCM0QgICAgIChiYXNlIDE2KQkJRXVyb1RlbCBTcGEKLQkJCQl2aWFsZSBNYXJ0aXJpIGRlbGxhIExpYmVydGEsNAotCQkJCUxpc3NvbmUgTWlsYW4gMjAwMzUKLQkJCQlJVEFMWQotCi0wMC0xQi0zRSAgIChoZXgpCQlDdXJ0aXMsIEluYy4KLTAwMUIzRSAgICAgKGJhc2UgMTYpCQlDdXJ0aXMsIEluYy4KLQkJCQkyNDA1IEFubmFwb2xpcyBMYW5lCi0JCQkJU3VpdGUgMjIwCi0JCQkJTWlubmVhcG9saXMgTU4gNTU0NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTNGICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLTAwMUIzRiAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZC4KLQkJCQlSb3NldmlsbGUgQ2FsaWZvcm5pYSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNDAgICAoaGV4KQkJTmV0d29yayBBdXRvbWF0aW9uIG14YyBBQgotMDAxQjQwICAgICAoYmFzZSAxNikJCU5ldHdvcmsgQXV0b21hdGlvbiBteGMgQUIKLQkJCQlCb3ggNzI5NAotCQkJCVN0b2NraG9sbSAgMTAzOTAKLQkJCQlTV0VERU4KLQotMDAtMUItNDEgICAoaGV4KQkJR2VuZXJhbCBJbmZpbml0eSBDby4sTHRkLgotMDAxQjQxICAgICAoYmFzZSAxNikJCUdlbmVyYWwgSW5maW5pdHkgQ28uLEx0ZC4KLQkJCQkzRixOby4xNjksIFhpbmctYWkgUmQsCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItNDIgICAoaGV4KQkJV2lzZSAmIEJsdWUKLTAwMUI0MiAgICAgKGJhc2UgMTYpCQlXaXNlICYgQmx1ZQotCQkJCSM3MTUtMyBBbnlhbmcgTWVnYXZhbGxleQotCQkJCTc5OSBHd2FueWFuZy1Eb25nLCBEb25nYW4tR3UKLQkJCQlBbnlhbmctU2kgR3l1bmdnaS1EbyA0MzEtNzY3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTQzICAgKGhleCkJCUJlaWppbmcgREcgVGVsZWNvbW11bmljYXRpb25zIGVxdWlwbWVudCBDby4sTHRkCi0wMDFCNDMgICAgIChiYXNlIDE2KQkJQmVpamluZyBERyBUZWxlY29tbXVuaWNhdGlvbnMgZXF1aXBtZW50IENvLixMdGQKLQkJCQlOby41IEppYW5ndGFpIFJvYWQsIENoYW95YW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDE2Ci0JCQkJQ0hJTkEKLQotMDAtMUItNDQgICAoaGV4KQkJU2FuRGlzayBDb3Jwb3JhdGlvbgotMDAxQjQ0ICAgICAoYmFzZSAxNikJCVNhbkRpc2sgQ29ycG9yYXRpb24KLQkJCQk2MDEgTWNDYXJ0aHkgQm91bGV2YXJkCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTQ1ICAgKGhleCkJCUFCQiBBUywgRGl2aXNpb24gQXV0b21hdGlvbiBQcm9kdWN0cwotMDAxQjQ1ICAgICAoYmFzZSAxNikJCUFCQiBBUywgRGl2aXNpb24gQXV0b21hdGlvbiBQcm9kdWN0cwotCQkJCUJlcmdlcnZlaWVuIDEyCi0JCQkJUE9CIDkwCi0JCQkJQmlsbGluZ3N0YWQgIE5PLTEzNzUKLQkJCQlOT1JXQVkKLQotMDAtMUItNDYgICAoaGV4KQkJQmx1ZW9uZSBUZWNobm9sb2d5IENvLixMdGQKLTAwMUI0NiAgICAgKGJhc2UgMTYpCQlCbHVlb25lIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCVJvb20gMzA5LDMgRmxvb3IsIDQwNCBCdWlsZGluZywgU2hhbmdCdSBpbmR1c3RyaWFsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTAwLTFCLTQ3ICAgKGhleCkJCUZ1dGFycXVlIEEvUwotMDAxQjQ3ICAgICAoYmFzZSAxNikJCUZ1dGFycXVlIEEvUwotCQkJCUFhZ2FkZSAxNUIKLQkJCQlBYWxib3JnICA5MDAwCi0JCQkJREVOTUFSSwotCi0wMC0xQi00OCAgIChoZXgpCQlTaGVuemhlbiBMYW50ZWNoIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxQjQ4ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIExhbnRlY2ggRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJMzA2IFJvb20sIE5hbnNoYW4gV2F0ZXIgQnVpbGRpbmcsCi0JCQkJTmFuaGFpIFJvYWQsIE5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDUyCi0JCQkJQ0hJTkEKLQotMDAtMUItNDkgICAoaGV4KQkJUm9iZXJ0cyBSYWRpbyBsaW1pdGVkCi0wMDFCNDkgICAgIChiYXNlIDE2KQkJUm9iZXJ0cyBSYWRpbyBsaW1pdGVkCi0JCQkJU3dpbnRvbiBXb3JrcwotCQkJCVRhbGJvdCBSb2FkCi0JCQkJTWV4Ym9yb3VnaCBTb3V0aCBZb3Jrc2hpcmUgUzY0IDhBSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLTRBICAgKGhleCkJCVcmVyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxQjRBICAgICAoYmFzZSAxNikJCVcmVyBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTI5MDMgQnVua2VyIEhpbGwgTGFuZQotCQkJCVN1aXRlIDEwNwotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi00QiAgIChoZXgpCQlTQU5JT04gQ28uLCBMdGQuCi0wMDFCNEIgICAgIChiYXNlIDE2KQkJU0FOSU9OIENvLiwgTHRkLgotCQkJCSMyMDggQUNFVEVDSE5PIFRPV0VSLCA1NS03LCBNVUxMQUUtRE9ORyAzR0EsCi0JCQkJWUVPTkdERVVOR1BPLUdVIFNFT1VMIDE1MC05OTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItNEMgICAoaGV4KQkJU2lnbnRlY2gKLTAwMUI0QyAgICAgKGJhc2UgMTYpCQlTaWdudGVjaAotCQkJCTYwOSBTZW9uaWwgVGVjaG5vcGlhIDYwOQotCQkJCVNhbmdkYWV3b24gMURvbmcgSnVuZ3dvbiBndQotCQkJCVN1bmduYW1zaSBLeXVuZ2dpZG8gNDYyLTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi00RCAgIChoZXgpCQlBcmVjYSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDFCNEQgICAgIChiYXNlIDE2KQkJQXJlY2EgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCThGLiwgTm8uIDIyLCBMYW5lIDM1LCBKaS1IdSBSZC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItNEUgICAoaGV4KQkJTmF2bWFuIE5ldyBaZWFsYW5kCi0wMDFCNEUgICAgIChiYXNlIDE2KQkJTmF2bWFuIE5ldyBaZWFsYW5kCi0JCQkJNy0yMSBLYXdhbmEgU3RyZWV0Ci0JCQkJTm9ydGhjb3RlCi0JCQkJQXVja2xhbmQgIDA2MjcKLQkJCQlORVcgWkVBTEFORAotCi0wMC0xQi00RiAgIChoZXgpCQlBdmF5YSBJbmMuCi0wMDFCNEYgICAgIChiYXNlIDE2KQkJQXZheWEgSW5jLgotCQkJCVJvb20gMUEgMzA5Ci0JCQkJMzA3IE1pZGRsZXRvd24gTGluY3JvZnQgUmQKLQkJCQlMaW5jcm9mdCBOSiAwNzczOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNTAgICAoaGV4KQkJTml6aG55IE5vdmdvcm9kIEZhY3RvcnkgbmFtZWQgYWZ0ZXIgTS5GcnVuemUsIEZTVUUgKE5aaUYpCi0wMDFCNTAgICAgIChiYXNlIDE2KQkJTml6aG55IE5vdmdvcm9kIEZhY3RvcnkgbmFtZWQgYWZ0ZXIgTS5GcnVuemUsIEZTVUUgKE5aaUYpCi0JCQkJMTc0LCBHYWdhcmluYSBBdmVudWUKLQkJCQlOaXpobnkgTm92Z29yb2QgIDYwMzk1MAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xQi01MSAgIChoZXgpCQlWZWN0b3IgVGVjaG5vbG9neSBDb3JwLgotMDAxQjUxICAgICAoYmFzZSAxNikJCVZlY3RvciBUZWNobm9sb2d5IENvcnAuCi0JCQkJTm8uNywgTGFuZTEyLCBZYWpvdSBSb2FkLgotCQkJCVR1Y2hlbmcgVGFpcGVpIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItNTIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDFCNTIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4uIEh3eSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNTMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQjUzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNTQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQjU0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNTUgICAoaGV4KQkJSHVyY28gQXV0b21hdGlvbiBMdGQuCi0wMDFCNTUgICAgIChiYXNlIDE2KQkJSHVyY28gQXV0b21hdGlvbiBMdGQuCi0JCQkJNkYsIE5vLiAzMSwgU2hpbnRhaSBSZC4KLQkJCQlKdWJlaSBDaXR5LCBIc2luY2h1IEhzaWVuIDMwMjQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi01NiAgIChoZXgpCQlUZWh1dGkgTmV0d29ya3MgTHRkLgotMDAxQjU2ICAgICAoYmFzZSAxNikJCVRlaHV0aSBOZXR3b3JrcyBMdGQuCi0JCQkJMSwgU2hlbmthciBTdC4KLQkJCQlIZXJ0emxpeWEgIDQ2MTA1Ci0JCQkJSVNSQUVMCi0KLTAwLTFCLTU3ICAgKGhleCkJCVNFTUlORElBIFNZU1RFTVMgUFJJVkFURSBMSU1JVEVECi0wMDFCNTcgICAgIChiYXNlIDE2KQkJU0VNSU5ESUEgU1lTVEVNUyBQUklWQVRFIExJTUlURUQKLQkJCQkjMTEwNi85LEEuTS5JbmR1c3RyaWFsIEVzdGF0ZSxHYXJ2ZWJoYWkgcGFseWEsCi0JCQkJN3RoIE1pbGUsIEhvc3VyIFJvYWQsCi0JCQkJQkFOR0FMT1JFIEtBUk5BVEFLQSA1NjAwNjgKLQkJCQlJTkRJQQotCi0wMC0xQi01OCAgIChoZXgpCQlBQ0UgQ0FEIEVudGVycHJpc2UgQ28uLCBMdGQuCi0wMDFCNTggICAgIChiYXNlIDE2KQkJQUNFIENBRCBFbnRlcnByaXNlIENvLiwgTHRkLgotCQkJCTJGLCBOby4gOTQsIEJhbyBDaHVuZyBSb2FkLAotCQkJCUhzaW4gVGllbiBDaXR5LCBUYWlwZWkgSHNpZW4gMjMxNDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTU5ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDFCNTkgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMUItNUEgICAoaGV4KQkJQXBvbGxvIEltYWdpbmcgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDFCNUEgICAgIChiYXNlIDE2KQkJQXBvbGxvIEltYWdpbmcgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTg1NDUgUmFuZ2VsYW5kIFJkCi0JCQkJUmFtb25hIENBIDkyMDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi01QiAgIChoZXgpCQkyV2lyZSwgSW5jLgotMDAxQjVCICAgICAoYmFzZSAxNikJCTJXaXJlLCBJbmMuCi0JCQkJMTcwNCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNUMgICAoaGV4KQkJQXp1cmV0ZWMgQ28uLCBMdGQuCi0wMDFCNUMgICAgIChiYXNlIDE2KQkJQXp1cmV0ZWMgQ28uLCBMdGQuCi0JCQkJM0YsIE5vLjgsIEFsbGV5IDgsIExhbmUgNDUsIEJhb3hpbmcgUmQuLAotCQkJCVhpbmRpYW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItNUQgICAoaGV4KQkJVm9sb2xpbmsgUHR5IEx0ZAotMDAxQjVEICAgICAoYmFzZSAxNikJCVZvbG9saW5rIFB0eSBMdGQKLQkJCQlMZXZlbCAyLCA1NDEgQmxhY2tidXJuIFJvYWQKLQkJCQlNb3VudCBXYXZlcmxleSBWaWN0b3JpYSAzMTQ5Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFCLTVFICAgKGhleCkJCUJQTCBMaW1pdGVkCi0wMDFCNUUgICAgIChiYXNlIDE2KQkJQlBMIExpbWl0ZWQKLQkJCQlCUEwgVG93ZXJzCi0JCQkJMTMsIEthc3R1cmJhIFJvYWQKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDAwMQotCQkJCUlORElBCi0KLTAwLTFCLTVGICAgKGhleCkJCUFsaWVuIFRlY2hub2xvZ3kKLTAwMUI1RiAgICAgKGJhc2UgMTYpCQlBbGllbiBUZWNobm9sb2d5Ci0JCQkJMTgyMjAgQnV0dGVyZmllbGQgQmx2ZC4KLQkJCQlNb3JnYW4gSGlsbCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNjAgICAoaGV4KQkJTkFWSUdPTiBBRwotMDAxQjYwICAgICAoYmFzZSAxNikJCU5BVklHT04gQUcKLQkJCQlCZXJsaW5lciBQbGF0eiAxMQotCQkJCVd1ZXJ6YnVyZyBCYXZhcmlhIDk3MDgwCi0JCQkJR0VSTUFOWQotCi0wMC0xQi02MSAgIChoZXgpCQlEaWdpdGFsIEFjb3VzdGljcywgTExDCi0wMDFCNjEgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBBY291c3RpY3MsIExMQwotCQkJCTM3IFNoZXJ3b29kIFRlcnJhY2UKLQkJCQlMYWtlIEJsdWZmIElMIDYwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi02MiAgIChoZXgpCQlKSFQgT3B0b2VsZWN0cm9uaWNzIENvLixMdGQuCi0wMDFCNjIgICAgIChiYXNlIDE2KQkJSkhUIE9wdG9lbGVjdHJvbmljcyBDby4sTHRkLgotCQkJCUhldGlhbiBJbmR1c3RyaWFsIFBhcmsgMnJkLEhvdWppZSBUb3duLCBEb25ndWFuLAotCQkJCURvbmdndWFuIEd1YW5nZG9uZyA1MjM5NDUKLQkJCQlDSElOQQotCi0wMC0xQi02MyAgIChoZXgpCQlBcHBsZSBDb21wdXRlciBJbmMuCi0wMDFCNjMgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDYWxpZm9ybmlhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi02NCAgIChoZXgpCQlJc2FhY0xhbmRLb3JlYSBDby4sIEx0ZCwKLTAwMUI2NCAgICAgKGJhc2UgMTYpCQlJc2FhY0xhbmRLb3JlYSBDby4sIEx0ZCwKLQkJCQlSbSA2MDgsIEhhbmdhbmctSHl1bmRhaS1IeWVsIEJsZGcuIDItMzYsCi0JCQkJSGFuZ2FuZ25vIDItZ2EsIFlvbmdzYW4tZ3UsCi0JCQkJU2VvdWwgIDE0MC04NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItNjUgICAoaGV4KQkJQ2hpbmEgR3JpZGNvbSBDby4sIEx0ZAotMDAxQjY1ICAgICAoYmFzZSAxNikJCUNoaW5hIEdyaWRjb20gQ28uLCBMdGQKLQkJCQkyMS9GLCBIdWFuZW5nIEJ1aWxkaW5nLCBOby4gMjA2OCBTaGVubmFuIE1haW4gUm9hZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyAwMDg2Ci0JCQkJQ0hJTkEKLQotMDAtMUItNjYgICAoaGV4KQkJU2VubmhlaXNlciBlbGVjdHJvbmljIEdtYkggJiBDby4gS0cKLTAwMUI2NiAgICAgKGJhc2UgMTYpCQlTZW5uaGVpc2VyIGVsZWN0cm9uaWMgR21iSCAmIENvLiBLRwotCQkJCUFtIExhYm9yIDEKLQkJCQlXZWRlbWFyayBOaWVkZXJzYWNoc2VuIDMwOTAwCi0JCQkJR0VSTUFOWQotCi0wMC0xQi02NyAgIChoZXgpCQlVYmlxdWlzeXMgTHRkCi0wMDFCNjcgICAgIChiYXNlIDE2KQkJVWJpcXVpc3lzIEx0ZAotCQkJCVRoZSBTdGVsbGEgQnVpbGRpbmcKLQkJCQlXaW5kbWlsbCBIaWxsIEJ1c2luZXNzIFBhcmsKLQkJCQlTd2luZG9uIFdpbHRzaGlyZSBTTjUgNk5YCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItNjggICAoaGV4KQkJTW9kbm5ldCBDby4sIEx0ZAotMDAxQjY4ICAgICAoYmFzZSAxNikJCU1vZG5uZXQgQ28uLCBMdGQKLQkJCQkyMTM5IERhZW15dW5nLURvbmcgRElQIG1haW4gQi9EIFJvb20jNTA1LCBOYW1ndQotCQkJCURhZWd1IEt5dW5nc2FuZyBCb29rZG8gNzA1LTcwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi02OSAgIChoZXgpCQlFcXVhbGluZSBDb3Jwb3JhdGlvbgotMDAxQjY5ICAgICAoYmFzZSAxNikJCUVxdWFsaW5lIENvcnBvcmF0aW9uCi0JCQkJOUYsIE5vLiAyMzQsIFNlY3Rpb24gNCwgQ2hlbmctRGUgUm9hZCwKLQkJCQlUYWlwZWkgSHNpZW4gMjUxNjIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTZBICAgKGhleCkJCVBvd2Vyd2F2ZSBUZWNobm9sb2dpZXMgU3dlZGVuIEFCCi0wMDFCNkEgICAgIChiYXNlIDE2KQkJUG93ZXJ3YXZlIFRlY2hub2xvZ2llcyBTd2VkZW4gQUIKLQkJCQkxNjQgMjYKLQkJCQlLaXN0YQotCQkJCUtuYXJyYXJu5HNnYXRhbiA3LCBLaXN0YSAgCi0JCQkJU1dFREVOCi0KLTAwLTFCLTZCICAgKGhleCkJCVN3eXggU29sdXRpb25zIEFHCi0wMDFCNkIgICAgIChiYXNlIDE2KQkJU3d5eCBTb2x1dGlvbnMgQUcKLQkJCQlKb3NlcGgtdm9uLUZyYXVuaG9mZXItc3RyLjEzYQotCQkJCURvcnRtdW5kIE5SVyA0NDIyNwotCQkJCUdFUk1BTlkKLQotMDAtMUItNkMgICAoaGV4KQkJTG9va1ggRGlnaXRhbCBNZWRpYSBCVgotMDAxQjZDICAgICAoYmFzZSAxNikJCUxvb2tYIERpZ2l0YWwgTWVkaWEgQlYKLQkJCQlSb2VrZW52ZWxkd2VnIDEKLQkJCQlCcnVuc3N1bSBMaW1idXJnIDY0NDZESwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFCLTZEICAgKGhleCkJCU1pZHRyb25pY3MsIEluYy4KLTAwMUI2RCAgICAgKGJhc2UgMTYpCQlNaWR0cm9uaWNzLCBJbmMuCi0JCQkJNzAwMCBNb25yb2UgU3QuCi0JCQkJV2lsbG93YnJvb2sgSUwgNjA1MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTZFICAgKGhleCkJCUFudWUgU3lzdGVtcywgSW5jLgotMDAxQjZFICAgICAoYmFzZSAxNikJCUFudWUgU3lzdGVtcywgSW5jLgotCQkJCTkxMTEgSm9sbHl2aWxsZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi02RiAgIChoZXgpCQlUZWxldHJhayBMdGQKLTAwMUI2RiAgICAgKGJhc2UgMTYpCQlUZWxldHJhayBMdGQKLQkJCQkyMTQgS2VwYSBSb2FkCi0JCQkJTWlzc2lvbiBCYXkKLQkJCQlBdWNrbGFuZCAgMTA3MQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTFCLTcwICAgKGhleCkJCUlSSSBVYml0ZXEsIElOQy4KLTAwMUI3MCAgICAgKGJhc2UgMTYpCQlJUkkgVWJpdGVxLCBJTkMuCi0JCQkJU2hpbmp1a3UtTm9tdXJhIEJsZGcuIDQ3RiwKLQkJCQkxLTI2LTIgTmlzaGktc2hpbmp1a3UsCi0JCQkJU2hpbmp1a3Uta3UgVG9reW8gMTYzLTA1NDcKLQkJCQlKQVBBTgotCi0wMC0xQi03MSAgIChoZXgpCQlUZWx1bGFyIENvcnAuCi0wMDFCNzEgICAgIChiYXNlIDE2KQkJVGVsdWxhciBDb3JwLgotCQkJCTMxMSBTb3V0aCBXYWNrZXIgRHJpdmUKLQkJCQlTdWl0ZSA0MzAwCi0JCQkJQ2hpY2FnbyBJTCA2MDYwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNzIgICAoaGV4KQkJU2ljZXAgcy5wLmEuCi0wMDFCNzIgICAgIChiYXNlIDE2KQkJU2ljZXAgcy5wLmEuCi0JCQkJVmlhIGNhbGFicmlhLCAxNAotCQkJCUNlcnRhbGRvICA1MDA1MgotCQkJCUlUQUxZCi0KLTAwLTFCLTczICAgKGhleCkJCURUTCBCcm9hZGNhc3QgTHRkCi0wMDFCNzMgICAgIChiYXNlIDE2KQkJRFRMIEJyb2FkY2FzdCBMdGQKLQkJCQlKb2huc29uJ3MgRXN0YXRlCi0JCQkJU2lsdmVyZGFsZSBSb2FkCi0JCQkJSEFZRVMgTWlkZGxlc2V4IFVCMyAzQkEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi03NCAgIChoZXgpCQlNaXJhTGluayBDb3Jwb3JhdGlvbgotMDAxQjc0ICAgICAoYmFzZSAxNikJCU1pcmFMaW5rIENvcnBvcmF0aW9uCi0JCQkJMTExIFNXIDV0aCBBdmUuCi0JCQkJU3RlLiAxMDAwCi0JCQkJUG9ydGxhbmQgT1IgOTcyMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTc1ICAgKGhleCkJCUh5cGVybWVkaWEgU3lzdGVtcwotMDAxQjc1ICAgICAoYmFzZSAxNikJCUh5cGVybWVkaWEgU3lzdGVtcwotCQkJCTJCIEJlcmdtYW4gU3QuCi0JCQkJUmFiYmluIEluZHVzdHJpYWwgUGFyawotCQkJCVJlaG92b3QgIDc2NzA1Ci0JCQkJSVNSQUVMCi0KLTAwLTFCLTc2ICAgKGhleCkJCVJpcGNvZGUsIEluYy4KLTAwMUI3NiAgICAgKGJhc2UgMTYpCQlSaXBjb2RlLCBJbmMuCi0JCQkJMTEzMCBFLiBBcmFwYWhvIFJvYWQKLQkJCQlTdWl0ZSA0MzUKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi03NyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMUI3NyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFCLTc4ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxQjc4ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJbXMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi03OSAgIChoZXgpCQlGQUlWRUxFWSBUUkFOU1BPUlQKLTAwMUI3OSAgICAgKGJhc2UgMTYpCQlGQUlWRUxFWSBUUkFOU1BPUlQKLQkJCQlaSSBkdSBib2lzIGRlIHBsYW50ZQotCQkJCXJ1ZSBhbWVsaWEgZWFyaGFydAotCQkJCUxBIFZJTExFIEFVWCBEQU1FUyAgMzc3MDAKLQkJCQlGUkFOQ0UKLQotMDAtMUItN0EgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFCN0EgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUItN0IgICAoaGV4KQkJVGhlIFRpbnRvbWV0ZXIgTHRkCi0wMDFCN0IgICAgIChiYXNlIDE2KQkJVGhlIFRpbnRvbWV0ZXIgTHRkCi0JCQkJU29sYXIgV2F5Ci0JCQkJU29sc3RpY2UgUGFyawotCQkJCUFtZXNidXJ5IFdpbHRzaGlyZSBTUDQgN1NaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItN0MgICAoaGV4KQkJQSAmIFIgQ2FtYnJpZGdlCi0wMDFCN0MgICAgIChiYXNlIDE2KQkJQSAmIFIgQ2FtYnJpZGdlCi0JCQkJUGVtYnJva2UgQXZlbnVlCi0JCQkJV2F0ZXJiZWFjaAotCQkJCUNhbWJyaWRnZSBDQU1CUyBDQjI1IDlRUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLTdEICAgKGhleCkJCUNYUiBBbmRlcnNvbiBKYWNvYnNvbgotMDAxQjdEICAgICAoYmFzZSAxNikJCUNYUiBBbmRlcnNvbiBKYWNvYnNvbgotCQkJCVJ1ZSBkZSBsJ29ybmV0dGUKLQkJCQlBYm9uZGFudCAgMjg0MTAKLQkJCQlGUkFOQ0UKLQotMDAtMUItN0UgICAoaGV4KQkJQmVja21hbm4gR21iSAotMDAxQjdFICAgICAoYmFzZSAxNikJCUJlY2ttYW5uIEdtYkgKLQkJCQlCcmFuZHRzdHIuIDEKLQkJCQlIb2V2ZWxob2YgTlJXIDMzMTYxCi0JCQkJR0VSTUFOWQotCi0wMC0xQi03RiAgIChoZXgpCQlUTU4gVGVjaG5vbG9naWVzIFRlbGVjb211bmljYWNvZXMgTHRkYQotMDAxQjdGICAgICAoYmFzZSAxNikJCVRNTiBUZWNobm9sb2dpZXMgVGVsZWNvbXVuaWNhY29lcyBMdGRhCi0JCQkJUnVhIE5pbHphLCA0MjIKLQkJCQlTYW8gUGF1bG8gU1AgMDM2NTEtMTIwCi0JCQkJQlJBWklMCi0KLTAwLTFCLTgwICAgKGhleCkJCUxPUkQgQ29ycG9yYXRpb24KLTAwMUI4MCAgICAgKGJhc2UgMTYpCQlMT1JEIENvcnBvcmF0aW9uCi0JCQkJMjAwMCBXZXN0IEdyYW5kdmlldyBCbHZkCi0JCQkJRXJpZSBQYSAxNjUwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItODEgICAoaGV4KQkJREFUQVEgSW5zdHJ1bWVudHMsIEluYy4KLTAwMUI4MSAgICAgKGJhc2UgMTYpCQlEQVRBUSBJbnN0cnVtZW50cywgSW5jLgotCQkJCTI0MSBTcHJpbmdzaWRlIERyaXZlCi0JCQkJQWtyb24gT2hpbyA0NDMzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItODIgICAoaGV4KQkJVGFpd2FuIFNlbWljb25kdWN0b3IgQ28uLCBMdGQuCi0wMDFCODIgICAgIChiYXNlIDE2KQkJVGFpd2FuIFNlbWljb25kdWN0b3IgQ28uLCBMdGQuCi0JCQkJMTFGLCBOby4gMjA1LCBTZWMuIDMsIEJlaXNoaW4gUmQsCi0JCQkJU2hpbmRpYW4gVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItODMgICAoaGV4KQkJRmluc29mdCBMdGQKLTAwMUI4MyAgICAgKGJhc2UgMTYpCQlGaW5zb2Z0IEx0ZAotCQkJCTE2LTE4IEhhdHRvbiBHYXJkZW4KLQkJCQlMb25kb24gIEVDMU4gOEFUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItODQgICAoaGV4KQkJU2NhbiBFbmdpbmVlcmluZyBUZWxlY29tCi0wMDFCODQgICAgIChiYXNlIDE2KQkJU2NhbiBFbmdpbmVlcmluZyBUZWxlY29tCi0JCQkJU3ZvYm9keSBzdHIuIDc1Ci0JCQkJVm9yb25lemggIDM5NDAzMAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xQi04NSAgIChoZXgpCQlNQU4gRGllc2VsIFNFCi0wMDFCODUgICAgIChiYXNlIDE2KQkJTUFOIERpZXNlbCBTRQotCQkJCVRlZ2xob2xtc2dhZGUgNDEKLQkJCQlDb3BlbmhhZ2VuICAyNDUwCi0JCQkJREVOTUFSSwotCi0wMC0xQi04NiAgIChoZXgpCQlCb3NjaCBBY2Nlc3MgU3lzdGVtcyBHbWJICi0wMDFCODYgICAgIChiYXNlIDE2KQkJQm9zY2ggQWNjZXNzIFN5c3RlbXMgR21iSAotCQkJCUNoYXJsb3R0ZW5idXJnZXIgQWxsZWUgNTAgICAgICAgICAgICAKLQkJCQlBQUNIRU4gICAgRC01MjA2OCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLTg3ICAgKGhleCkJCURlZXBzb3VuZCBUZWNoLiBDby4sIEx0ZAotMDAxQjg3ICAgICAoYmFzZSAxNikJCURlZXBzb3VuZCBUZWNoLiBDby4sIEx0ZAotCQkJCTNGIE5vLiA1NzYgU2VjLiAxLCBNaW5zaGVuZyBOLiBSZC4sIEd1ZWlzaGFuIFRvd25zaGlwLAotCQkJCVRhb3l1YW4gIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItODggICAoaGV4KQkJRGl2aW5ldCBBY2Nlc3MgVGVjaG5vbG9naWVzIEx0ZAotMDAxQjg4ICAgICAoYmFzZSAxNikJCURpdmluZXQgQWNjZXNzIFRlY2hub2xvZ2llcyBMdGQKLQkJCQk0dGggRmxvb3IsIE1lZGlhIENlbnRlciwKLQkJCQlTYWthYWwgTmFnYXIsIEJhbmVyIFJvYWQKLQkJCQlQdW5lIE1haGFyYXNodHJhIDQxMTAwNwotCQkJCUlORElBCi0KLTAwLTFCLTg5ICAgKGhleCkJCUVNWkEgVmlzdWFsIFNlbnNlIEx0ZC4KLTAwMUI4OSAgICAgKGJhc2UgMTYpCQlFTVpBIFZpc3VhbCBTZW5zZSBMdGQuCi0JCQkJMjAgSGEndGEnYXMgU3QuLCBCZWl0aCBIYXBhbW9uCi0JCQkJc3VpdGUgMzkxCi0JCQkJS2ZhciBTYWJhICA0NDQyNQotCQkJCUlTUkFFTAotCi0wMC0xQi04QSAgIChoZXgpCQkyTSBFbGVjdHJvbmljIEEvUwotMDAxQjhBICAgICAoYmFzZSAxNikJCTJNIEVsZWN0cm9uaWMgQS9TCi0JCQkJTWFsZXJ2ZWogMTAKLQkJCQlUYWFzdHJ1cCAgMjYzMAotCQkJCURFTk1BUksKLQotMDAtMUItOEIgICAoaGV4KQkJTkVDIEFjY2Vzc1RlY2huaWNhLCBMdGQuCi0wMDFCOEIgICAgIChiYXNlIDE2KQkJTkVDIEFjY2Vzc1RlY2huaWNhLCBMdGQuCi0JCQkJODAwIFNoaW1vbWF0YQotCQkJCUtha2VnYXdhIFNoaXp1b2thIDQzNi04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUItOEMgICAoaGV4KQkJSk1pY3JvbiBUZWNobm9sb2d5IENvcnAuCi0wMDFCOEMgICAgIChiYXNlIDE2KQkJSk1pY3JvbiBUZWNobm9sb2d5IENvcnAuCi0JCQkJMUYsIE5vLjEzLCBJbm5vdmF0aW9uIFJvYWQgMQotCQkJCUhzaW5jaHUgU2NpZW5jZSBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi04RCAgIChoZXgpCQlFbGVjdHJvbmljIENvbXB1dGVyIFN5c3RlbXMsIEluYy4KLTAwMUI4RCAgICAgKGJhc2UgMTYpCQlFbGVjdHJvbmljIENvbXB1dGVyIFN5c3RlbXMsIEluYy4KLQkJCQk0MTggRG9uZWdhbCBEcml2ZQotCQkJCVRvd3NvbiBNRCAyMTI4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItOEUgICAoaGV4KQkJSHVsdSBTd2VkZW4gQUIKLTAwMUI4RSAgICAgKGJhc2UgMTYpCQlIdWx1IFN3ZWRlbiBBQgotCQkJCUJveCAxMjMyOCwgMTAyMjgKLQkJCQlLaXN0YSBTdG9ja2hvbG0gMTY0IDQwCi0JCQkJU1dFREVOCi0KLTAwLTFCLThGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUI4RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTkwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUI5MCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTkxICAgKGhleCkJCUVGS09OIEFHCi0wMDFCOTEgICAgIChiYXNlIDE2KQkJRUZLT04gQUcKLQkJCQlBbmRyaXR6ZXIgUmVpY2hzc3RyYXNzZSA2NgotCQkJCUdyYXogU3R5cmlhIDgwNDUKLQkJCQlBVVNUUklBCi0KLTAwLTFCLTkyICAgKGhleCkJCWwtYWNvdXN0aWNzCi0wMDFCOTIgICAgIChiYXNlIDE2KQkJbC1hY291c3RpY3MKLQkJCQlwYXJjIGRlIGxhIGZvbnRhaW5lIGRlIGpvdXZlbmNlCi0JCQkJbWFyY291c3NpcyBlc3Nvbm5lIDkxNDYyCi0JCQkJRlJBTkNFCi0KLTAwLTFCLTkzICAgKGhleCkJCUpDIERlY2F1eCBTQSBETlQKLTAwMUI5MyAgICAgKGJhc2UgMTYpCQlKQyBEZWNhdXggU0EgRE5UCi0JCQkJMjEgcnVlIGNsYXVkZSBCZXJuYXJkCi0JCQkJTUFVUkVQQVMgIDc4MzEwCi0JCQkJRlJBTkNFCi0KLTAwLTFCLTk0ICAgKGhleCkJCVQuRS5NLkEuIFMucC5BLgotMDAxQjk0ICAgICAoYmFzZSAxNikJCVQuRS5NLkEuIFMucC5BLgotCQkJCXZpYSBkZWxsYSBTY2llbnphIDIxIEEvQwotCQkJCUNhc3RlbG51b3ZvIFJhbmdvbmUgTW9kZW5hIDQxMDUxCi0JCQkJSVRBTFkKLQotMDAtMUItOTUgICAoaGV4KQkJVklERU8gU1lTVEVNUyBTUkwKLTAwMUI5NSAgICAgKGJhc2UgMTYpCQlWSURFTyBTWVNURU1TIFNSTAotCQkJCUxvYy4gR29yaXp6bywgMTYKLQkJCQkzMzAzMAotCQkJCUNBTUlOTyBBTCBUQUdMSUFNRU5UTyBVRCAKLQkJCQlJVEFMWQotCi0wMC0xQi05NiAgIChoZXgpCQlHZW5lcmFsIFNlbnNpbmcKLTAwMUI5NiAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIFNlbnNpbmcKLQkJCQkxMDggTGluY29sbiBTdC4KLQkJCQlCb3N0b24gTUEgMDIxMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTk3ICAgKGhleCkJCVZpb2xpbiBUZWNobm9sb2dpZXMKLTAwMUI5NyAgICAgKGJhc2UgMTYpCQlWaW9saW4gVGVjaG5vbG9naWVzCi0JCQkJMzMgV29vZCBBdmUgU291dGgKLQkJCQlJc2VsaW4gTkogMDg4MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTk4ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDFCOTggICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUdVTUkgR3llb25nLUJ1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTk5ICAgKGhleCkJCUtTIFN5c3RlbSBHbWJICi0wMDFCOTkgICAgIChiYXNlIDE2KQkJS1MgU3lzdGVtIEdtYkgKLQkJCQlBbGV4YW5kZXJzdHIuIDM3Ci0JCQkJTXVlbGhlaW0gTlJXIDQ1NDcyCi0JCQkJR0VSTUFOWQotCi0wMC0xQi05QSAgIChoZXgpCQlBcG9sbG8gRmlyZSBEZXRlY3RvcnMgTHRkCi0wMDFCOUEgICAgIChiYXNlIDE2KQkJQXBvbGxvIEZpcmUgRGV0ZWN0b3JzIEx0ZAotCQkJCTM2IEJyb29rc2lkZSBSb2FkCi0JCQkJSGF2YW50IEhhbXBzaGlyZSBQMDkgMUpSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItOUIgICAoaGV4KQkJSG9zZS1NY0Nhbm4gQ29tbXVuaWNhdGlvbnMKLTAwMUI5QiAgICAgKGJhc2UgMTYpCQlIb3NlLU1jQ2FubiBDb21tdW5pY2F0aW9ucwotCQkJCTEyNDEgV2VzdCBOZXdwb3J0IENlbnRlciBEcml2ZQotCQkJCURlZXJmaWVsZCBCZWFjaCBGTCAzMzQ0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItOUMgICAoaGV4KQkJU0FURUwgc3AuIHogby5vLgotMDAxQjlDICAgICAoYmFzZSAxNikJCVNBVEVMIHNwLiB6IG8uby4KLQkJCQlTY2h1YmVydGEgNzkKLQkJCQlHZGFuc2sgcG9tb3Jza2llIDgwLTE3MgotCQkJCVBPTEFORAotCi0wMC0xQi05RCAgIChoZXgpCQlOb3Z1cyBTZWN1cml0eSBTcC4geiBvLm8uCi0wMDFCOUQgICAgIChiYXNlIDE2KQkJTm92dXMgU2VjdXJpdHkgU3AuIHogby5vLgotCQkJCXVsLiBQdbNhd3NrYSA0MzEKLQkJCQlXYXJzYXcgd29qLiBtYXpvd2llY2tpZSAwMi04MDEKLQkJCQlQT0xBTkQKLQotMDAtMUItOUUgICAoaGV4KQkJQVNLRVkgIENPTVBVVEVSICBDT1JQCi0wMDFCOUUgICAgIChiYXNlIDE2KQkJQVNLRVkgIENPTVBVVEVSICBDT1JQCi0JCQkJMTBGLE5PLjExOSxDSElFTktBTkcgUkQsCi0JCQkJQ0hVTkctSE8sVFBJUEVJICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTlGICAgKGhleCkJCUNhbHlwdGVjaCBQdHkgTHRkCi0wMDFCOUYgICAgIChiYXNlIDE2KQkJQ2FseXB0ZWNoIFB0eSBMdGQKLQkJCQk1LzQ4NiBMb3dlciBIZWlkZWxiZXJnIFJvYWQKLQkJCQlIZWlkZWxiZXJnIFZpY3RvcmlhIDMwODQKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUItQTAgICAoaGV4KQkJQXdveAotMDAxQkEwICAgICAoYmFzZSAxNikJCUF3b3gKLQkJCQk5MywgUGxhY2UgUGllcnJlIER1aGVtLAotCQkJCUxlcyBDZW50dXJpZXMKLQkJCQkzNDAwMCBNb250cGVsbGllciAKLQkJCQlGUkFOQ0UKLQotMDAtMUItQTEgICAoaGV4KQkJxW1pYyBBQgotMDAxQkExICAgICAoYmFzZSAxNikJCcVtaWMgQUIKLQkJCQlVcHBzYWxhIHNjaWVuY2UgcGFyawotCQkJCURhZyBIYW1tcnNravZsZHMgduRnIDUyIEIKLQkJCQlVcHBzYWxhICA3NTE4MwotCQkJCVNXRURFTgotCi0wMC0xQi1BMiAgIChoZXgpCQlJRFMgSW1hZ2luZyBEZXZlbG9wbWVudCBTeXN0ZW1zIEdtYkgKLTAwMUJBMiAgICAgKGJhc2UgMTYpCQlJRFMgSW1hZ2luZyBEZXZlbG9wbWVudCBTeXN0ZW1zIEdtYkgKLQkJCQlEaW1iYWNoZXIgU3RyLiA2Ci0JCQkJT2JlcnN1bG0gQlcgNzQxODIKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLUEzICAgKGhleCkJCUZsZXhpdCBHcm91cCBHbWJICi0wMDFCQTMgICAgIChiYXNlIDE2KQkJRmxleGl0IEdyb3VwIEdtYkgKLQkJCQlCcuR1aGF1c3N0cmHfZSAxNAotCQkJCVNhbHpidXJnIFNhbHpidXJnIDUwMjAKLQkJCQlBVVNUUklBCi0KLTAwLTFCLUE0ICAgKGhleCkJCVMuQS5FIEFmaWtpbQotMDAxQkE0ICAgICAoYmFzZSAxNikJCVMuQS5FIEFmaWtpbQotCQkJCUtpYnV0eiBBZmlraW0KLQkJCQlLaWJ1dHogQWZpa2ltICAxNTE0OAotCQkJCUlTUkFFTAotCi0wMC0xQi1BNSAgIChoZXgpCQlNeXVuZ01pbiBTeXN0ZW1zLCBJbmMuCi0wMDFCQTUgICAgIChiYXNlIDE2KQkJTXl1bmdNaW4gU3lzdGVtcywgSW5jLgotCQkJCSM0MTAsRG9vc2FuIFZlbnR1cmUgRGltZSAyLWNoYSwxMzA3LTM3Ci0JCQkJS3dhbnlhbmctRG9uZywKLQkJCQlLeXVuZ2tpLWRvICA0MzEtMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLUE2ICAgKGhleCkJCWludG90ZWNoIGluYy4KLTAwMUJBNiAgICAgKGJhc2UgMTYpCQlpbnRvdGVjaCBpbmMuCi0JCQkJIDEzRiBETUMgUiZEIENlbnRlciBFMy0yIEJ1aWxkaW5nIExhbmQgRGV2ZWxvcG1lbnQgRGlzdHJpY3QgU2FuZ2FtLURvbmcKLQkJCQlNYXBvZ3UgU2VvdWwgMTIxLTI3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi1BNyAgIChoZXgpCQlMb3JpY2EgU29sdXRpb25zCi0wMDFCQTcgICAgIChiYXNlIDE2KQkJTG9yaWNhIFNvbHV0aW9ucwotCQkJCTI3NSBOb3J0aHBvaW50ZSBQYXJrd2F5Ci0JCQkJQW1oZXJzdCBOWSAxNDIyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQTggICAoaGV4KQkJVUJJJk1PQkksLkluYwotMDAxQkE4ICAgICAoYmFzZSAxNikJCVVCSSZNT0JJLC5JbmMKLQkJCQkzRiwgRHVpZG8gQmxkZywgIzI4OC01LCBZYW5namFlLURvbmcKLQkJCQlTZW9jaG8tR3UgU2VvdWwgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi1BOSAgIChoZXgpCQlCUk9USEVSIElORFVTVFJJRVMsIExURC4KLTAwMUJBOSAgICAgKGJhc2UgMTYpCQlCUk9USEVSIElORFVTVFJJRVMsIExURC4KLQkJCQlQcmludGluZyAmIFNvbHV0aW9ucyBDb21wYW55LCBEZXZlbG9wbWVudCBNYW5hZ2VtZW50IERlcHQuCi0JCQkJMTUtMSBOYWVzaGlyby1jaG8sIE1penVoby1rdQotCQkJCU5hZ295YSBBaWNoaSA0NjctODU2MQotCQkJCUpBUEFOCi0KLTAwLTFCLUFBICAgKGhleCkJCVhlbklDcyBudgotMDAxQkFBICAgICAoYmFzZSAxNikJCVhlbklDcyBudgotCQkJCUFtYmFjaHRlbmxhYW4gNDQKLQkJCQlMZXV2ZW4gVmxhYW1zLUJyYWJhbnQgQi0zMDAxCi0JCQkJQkVMR0lVTQotCi0wMC0xQi1BQiAgIChoZXgpCQlUZWxjaGVteSwgSW5jb3Jwb3JhdGVkCi0wMDFCQUIgICAgIChiYXNlIDE2KQkJVGVsY2hlbXksIEluY29ycG9yYXRlZAotCQkJCTI5MDUgUHJlbWllcmUgUGFya3dheQotCQkJCVN1aXRlIDI4MAotCQkJCUR1bHV0aCBHQSAzMDA5NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQUMgICAoaGV4KQkJQ3VydGlzcyBXcmlnaHQgQ29udHJvbHMgRW1iZWRkZWQgQ29tcHV0aW5nCi0wMDFCQUMgICAgIChiYXNlIDE2KQkJQ3VydGlzcyBXcmlnaHQgQ29udHJvbHMgRW1iZWRkZWQgQ29tcHV0aW5nCi0JCQkJMTAyMDEgV2F0ZXJpZGdlIENpcmNsZQotCQkJCVN1aXRlIDMwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQUQgICAoaGV4KQkJaUNvbnRyb2wgSW5jb3Jwb3JhdGVkCi0wMDFCQUQgICAgIChiYXNlIDE2KQkJaUNvbnRyb2wgSW5jb3Jwb3JhdGVkCi0JCQkJMzIzNSBLaWZlciBSb2FkCi0JCQkJU3VpdGUgMjYwCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQUUgICAoaGV4KQkJTWljcm8gQ29udHJvbCBTeXN0ZW1zLCBJbmMKLTAwMUJBRSAgICAgKGJhc2UgMTYpCQlNaWNybyBDb250cm9sIFN5c3RlbXMsIEluYwotCQkJCTU4NzcgRW50ZXJwcmlzZSBQYXJrd2F5Ci0JCQkJRm9ydCBNeWVycyBGbG9yaWRhIDMzOTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1BRiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQkFGICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQi1CMCAgIChoZXgpCQlCSEFSQVQgRUxFQ1RST05JQ1MKLTAwMUJCMCAgICAgKGJhc2UgMTYpCQlCSEFSQVQgRUxFQ1RST05JQ1MKLQkJCQlKQUxBSEFMTEkgUE9TVAotCQkJCUJBTkdBTE9SRSBLQVJOQVRBS0EgNTYwMDEzCi0JCQkJSU5ESUEKLQotMDAtMUItQjEgICAoaGV4KQkJV2lzdHJvbiBOZXdlYiBDb3JwLgotMDAxQkIxICAgICAoYmFzZSAxNikJCVdpc3Ryb24gTmV3ZWIgQ29ycC4KLQkJCQlOby4gMTAtMSwgTGktaHNpbiBSb2FkIEksIEhzaW5jaHUgU2NpZW5jZSBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItQjIgICAoaGV4KQkJSW50ZWxsZWN0IEludGVybmF0aW9uYWwgTlYKLTAwMUJCMiAgICAgKGJhc2UgMTYpCQlJbnRlbGxlY3QgSW50ZXJuYXRpb25hbCBOVgotCQkJCUtsZWluZSBLbG9vc3RlcnN0cmFhdCAyMwotCQkJCVphdmVudGVtIFZsYWFtc2UgYnJhYmFudCAxOTMyCi0JCQkJQkVMR0lVTQotCi0wMC0xQi1CMyAgIChoZXgpCQlDb25kYWxvIEdtYkgKLTAwMUJCMyAgICAgKGJhc2UgMTYpCQlDb25kYWxvIEdtYkgKLQkJCQlLb2hsc3RhdHQgMwotCQkJCUxpY2h0ZW5hdSBCYXZhcmlhIDg2NzA2Ci0JCQkJR0VSTUFOWQotCi0wMC0xQi1CNCAgIChoZXgpCQlBaXJ2b2QgTGltaXRlZAotMDAxQkI0ICAgICAoYmFzZSAxNikJCUFpcnZvZCBMaW1pdGVkCi0JCQkJSGVhdGhlciBIb3VzZQotCQkJCUhlYXRoZXIgUm9hZAotCQkJCVNhbmR5Zm9yZCBJbmQgRXN0IER1YmxpbiAxOCBEMTgKLQkJCQlJUkVMQU5ECi0KLTAwLTFCLUI1ICAgKGhleCkJCVpGIEVsZWN0cm9uaWNzIEdtYkgKLTAwMUJCNSAgICAgKGJhc2UgMTYpCQlaRiBFbGVjdHJvbmljcyBHbWJICi0JCQkJQ2hlcnJ5c3RyYXNzZSAxCi0JCQkJQXVlcmJhY2ggaS4gZC4gT3BmLiBCYXllcm4gRC05MTI3NQotCQkJCUdFUk1BTlkKLQotMDAtMUItQjYgICAoaGV4KQkJQmlyZCBFbGVjdHJvbmljIENvcnAuCi0wMDFCQjYgICAgIChiYXNlIDE2KQkJQmlyZCBFbGVjdHJvbmljIENvcnAuCi0JCQkJMzAzMDMgQXVyb3JhIFJvYWQKLQkJCQlTb2xvbiBPaGlvIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1CNyAgIChoZXgpCQlBbHRhIEhlaWdodHMgVGVjaG5vbG9neSBDb3JwLgotMDAxQkI3ICAgICAoYmFzZSAxNikJCUFsdGEgSGVpZ2h0cyBUZWNobm9sb2d5IENvcnAuCi0JCQkJMTA4IEFsdGEgSGVpZ2h0cyBDb3VydAotCQkJCUxvcyBHYXRvcyBDYWxpZm9ybmlhIDk1MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1COCAgIChoZXgpCQlCTFVFV0FZIEVMRUNUUk9OSUMgQ087TFRECi0wMDFCQjggICAgIChiYXNlIDE2KQkJQkxVRVdBWSBFTEVDVFJPTklDIENPO0xURAotCQkJCVdvcmtzaG9wIEIsRG9uZyBGZW5nIFZpbGxhZ2UsCi0JCQkJRnJvbnQgQmFpeXVuLEd1IFRhbmcgQW8KLQkJCQlIdWlaaG91IEd1YW5nRG9uZyA1MTYwMDgKLQkJCQlDSElOQQotCi0wMC0xQi1COSAgIChoZXgpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4KLTAwMUJCOSAgICAgKGJhc2UgMTYpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4KLQkJCQlOby4yMiwgQWxsZXkgMzgsIExhbmUgOTEgLCBTZWMuIDEgLCBOZWkgSHUgUm9hZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1CQSAgIChoZXgpCQlOb3J0ZWwKLTAwMUJCQSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUItQkIgICAoaGV4KQkJUkZUZWNoIENvLixMdGQKLTAwMUJCQiAgICAgKGJhc2UgMTYpCQlSRlRlY2ggQ28uLEx0ZAotCQkJCTMzOS0xNyBKd2FoYW5nLVJpLFdvbnNhbS1NeXVuLAotCQkJCUNoZW9pbi1HdQotCQkJCVlvbmdpbi1TaSBLeXVuZ2tpLURvIDQ0OS04NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItQkMgICAoaGV4KQkJU2lsdmVyIFBlYWsgU3lzdGVtcywgSW5jLgotMDAxQkJDICAgICAoYmFzZSAxNikJCVNpbHZlciBQZWFrIFN5c3RlbXMsIEluYy4KLQkJCQk0NzEgRWwgQ2FtaW5vIFJlYWwKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQkQgICAoaGV4KQkJRk1DIEtvbmdzYmVyZyBTdWJzZWEgQVMKLTAwMUJCRCAgICAgKGJhc2UgMTYpCQlGTUMgS29uZ3NiZXJnIFN1YnNlYSBBUwotCQkJCUtpcmtlZ2FhcmRzdmVpZW4gNDUKLQkJCQlLb25nc2JlcmcgQnVza2VydWQgMzYwMQotCQkJCU5PUldBWQotCi0wMC0xQi1CRSAgIChoZXgpCQlJQ09QIERpZ2l0YWwKLTAwMUJCRSAgICAgKGJhc2UgMTYpCQlJQ09QIERpZ2l0YWwKLQkJCQkxNjgwMSBXLiAxMTZ0aCBTdC4KLQkJCQlMZW5leGEgS1MgNjYyMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUJGICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwMUJCRiAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMTQgUnVlIFBhdWwgRGF1dGllcgotCQkJCVbpbGl6eSAgNzg0NTcKLQkJCQlGUkFOQ0UKLQotMDAtMUItQzAgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAxQkMwICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1DMSAgIChoZXgpCQlIT0xVWCBUZWNobm9sb2d5LCBJbmMuCi0wMDFCQzEgICAgIChiYXNlIDE2KQkJSE9MVVggVGVjaG5vbG9neSwgSW5jLgotCQkJCTFGLCBOby4gMzAsIFImRCBSZC4gSUksCi0JCQkJU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLUMyICAgKGhleCkJCUludGVncmF0ZWQgQ29udHJvbCBUZWNobm9sb2d5IExpbWl0aWVkCi0wMDFCQzIgICAgIChiYXNlIDE2KQkJSW50ZWdyYXRlZCBDb250cm9sIFRlY2hub2xvZ3kgTGltaXRpZWQKLQkJCQk2QyBBc2NlbnNpb24gUGxhY2UKLQkJCQlNYWlyYW5naSBCYXkKLQkJCQlBdWNrbGFuZCBBdWNrbGFuZCAwNzM1Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMUItQzMgICAoaGV4KQkJTW9iaXNvbHV0aW9uIENvLixMdGQKLTAwMUJDMyAgICAgKGJhc2UgMTYpCQlNb2Jpc29sdXRpb24gQ28uLEx0ZAotCQkJCTg0OC0xNgotCQkJCUd1eWVvbmctRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItQzQgICAoaGV4KQkJVWx0cmF0ZWMsIEluYy4KLTAwMUJDNCAgICAgKGJhc2UgMTYpCQlVbHRyYXRlYywgSW5jLgotCQkJCTQ1MCBTY2llbmNlIERyaXZlCi0JCQkJTWFkaXNvbiBXSSA1MzcxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQzUgICAoaGV4KQkJSUVFRSBSZWdpc3RyYXRpb24gQXV0aG9yaXR5Ci0wMDFCQzUgICAgIChiYXNlIDE2KQkJSUVFRSBSZWdpc3RyYXRpb24gQXV0aG9yaXR5Ci0JCQkJNDQ1IEhvZXMgTGFuZQotCQkJCVBpc2NhdGF3YXkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUM2ICAgKGhleCkJCVN0cmF0byBSZWNoZW56ZW50cnVtIEFHCi0wMDFCQzYgICAgIChiYXNlIDE2KQkJU3RyYXRvIFJlY2hlbnplbnRydW0gQUcKLQkJCQlQYXNjYWxzdHJhc3NlIDEwCi0JCQkJRC0xMDU4NyBCZXJsaW4gCi0JCQkJR0VSTUFOWQotCi0wMC0xQi1DNyAgIChoZXgpCQlTdGFyVmVkaWEgVGVjaG5vbG9neSBJbmMuCi0wMDFCQzcgICAgIChiYXNlIDE2KQkJU3RhclZlZGlhIFRlY2hub2xvZ3kgSW5jLgotCQkJCTNGLCBOby4gMjQ3LCBEb25lIFNlYy4gMSwgR3VhbmdtaW5nIDZ0aCBSZC4KLQkJCQlKaHViZWkgSHNpbi1DaHUgQ291bnR5IDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItQzggICAoaGV4KQkJTUlVUkEgQ08uLExURAotMDAxQkM4ICAgICAoYmFzZSAxNikJCU1JVVJBIENPLixMVEQKLQkJCQk4NjQtMSxIb2p5b3RzdWppCi0JCQkJTWF0c3V5YW1hIEVoaW1lIDc5OS0yNDMwCi0JCQkJSkFQQU4KLQotMDAtMUItQzkgICAoaGV4KQkJRlNOIERJU1BMQVkgSU5DCi0wMDFCQzkgICAgIChiYXNlIDE2KQkJRlNOIERJU1BMQVkgSU5DCi0JCQkJQmFla3N1ay1Eb25nIDExNDEtMSwgSWxzYW4gVGVjaG5vIFRvd24gMTAwOQotCQkJCUtveWFuZy1TaSwgSWxzYW4tR3UsIEt5ZW9uZ2dpLURvLCBSZXB1YmxpYyBvZiBLb3JlYQotCQkJCUtveWFuZy1zaSBLeWVvbmdnaS1EbyA0MTA3MjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItQ0EgICAoaGV4KQkJQmVpamluZyBSdW4gVGVjaG5vbG9neSBMVEQuIENvbXBhbnkKLTAwMUJDQSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFJ1biBUZWNobm9sb2d5IExURC4gQ29tcGFueQotCQkJCTQvRiwgSGFuZ3RpYW4gVGVjaG5vbG9neSBCdWlsZGluZwotCQkJCUJlaWppbmcgMTAwMDM3Ci0JCQkJQ0hJTkEKLQotMDAtMUItQ0IgICAoaGV4KQkJUEVNUEVLIFNZU1RFTVMgUFRZIExURAotMDAxQkNCICAgICAoYmFzZSAxNikJCVBFTVBFSyBTWVNURU1TIFBUWSBMVEQKLQkJCQlVTklUIDMgLyAxMyBIT1lMRSBBVkVOVUUKLQkJCQlDQVNUTEUgSElMTCBOU1cgMjE1NAotCQkJCUFVU1RSQUxJQQotCi0wMC0xQi1DQyAgIChoZXgpCQlLSU5HVEVLIENDVFYgQUxMSUFOQ0UgQ08uLCBMVEQuCi0wMDFCQ0MgICAgIChiYXNlIDE2KQkJS0lOR1RFSyBDQ1RWIEFMTElBTkNFIENPLiwgTFRELgotCQkJCTVGLTMsIE5PLiAxMDYsIFNFQy4gMywgSFNJTiBZSSBST0FECi0JCQkJVEFJUEVJICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLUNEICAgKGhleCkJCURBVklTQ09NTVMgKFMpIFBURSBMVEQKLTAwMUJDRCAgICAgKGJhc2UgMTYpCQlEQVZJU0NPTU1TIChTKSBQVEUgTFRECi0JCQkJQmxrIDcwIFViaSBDcmVzY2VudCAjMDEtMDcKLQkJCQlVYmkgVGVjaHBhcmsKLQkJCQk0MDg1NzAKLQkJCQlTSU5HQVBPUkUKLQotMDAtMUItQ0UgICAoaGV4KQkJTWVhc3VyZW1lbnQgRGV2aWNlcyBMdGQKLTAwMUJDRSAgICAgKGJhc2UgMTYpCQlNZWFzdXJlbWVudCBEZXZpY2VzIEx0ZAotCQkJCVNpbHZlcmJ1cm4gQ3Jlc2NlbnQKLQkJCQlCcmlkZ2Ugb2YgRG9uCi0JCQkJQWJlcmRlZW4gQWJlcmRlZW5zaGlyZSBBQjIzIDhFVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLUNGICAgKGhleCkJCURhdGF1cGlhIENvcnBvcmF0aW9uCi0wMDFCQ0YgICAgIChiYXNlIDE2KQkJRGF0YXVwaWEgQ29ycG9yYXRpb24KLQkJCQlPbmUgQWxld2lmZSBDZW50ZXIKLQkJCQlDYW1icmlkZ2UgTUEgMDIxNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUQwICAgKGhleCkJCUlERU5URUMgU09MVVRJT05TCi0wMDFCRDAgICAgIChiYXNlIDE2KQkJSURFTlRFQyBTT0xVVElPTlMKLQkJCQlIZXJ0enN0ci4gMTAKLQkJCQlXZWluaGVpbSAgNjk0NjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLUQxICAgKGhleCkJCVNPR0VTVE1BVElDCi0wMDFCRDEgICAgIChiYXNlIDE2KQkJU09HRVNUTUFUSUMKLQkJCQk0MDkgUm91dGUgZGUgbGEgR2FyZQotCQkJCUNIQVRFQVVORVVGIERFIEdBREFHTkUgUEFDQSA4NDQ3MAotCQkJCUZSQU5DRQotCi0wMC0xQi1EMiAgIChoZXgpCQlVTFRSQS1YIEFTSUEgUEFDSUZJQyBJbmMuCi0wMDFCRDIgICAgIChiYXNlIDE2KQkJVUxUUkEtWCBBU0lBIFBBQ0lGSUMgSW5jLgotCQkJCTUtMS0xNSBTb3Rva2FuZGEKLQkJCQlUb2t5byBDaGl5b2RhLWt1IDEwMS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMUItRDMgICAoaGV4KQkJTWF0c3VzaGl0YSBFbGVjdHJpYyBQYW5hc29uaWMgQVZDCi0wMDFCRDMgICAgIChiYXNlIDE2KQkJTWF0c3VzaGl0YSBFbGVjdHJpYyBQYW5hc29uaWMgQVZDCi0JCQkJMS0xNSBNYXRzdW8tY2hvCi0JCQkJNjc4LTUxOAotCQkJCUthZG9tYSBPc2FrYSA1NzEtODUwNAotCQkJCUpBUEFOCi0KLTAwLTFCLUQ0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUJENCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1ENSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFCRDUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItRDYgICAoaGV4KQkJS2VsdmluIEh1Z2hlcyBMdGQKLTAwMUJENiAgICAgKGJhc2UgMTYpCQlLZWx2aW4gSHVnaGVzIEx0ZAotCQkJCU5ldyBOb3J0aCBSb2FkCi0JCQkJSGFpbmF1bHQKLQkJCQlJbGZvcmQgRXNzZXggSUc2IDJVUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLUQ3ICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YSwgQSBDaXNjbyBDb21wYW55Ci0wMDFCRDcgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBBIENpc2NvIENvbXBhbnkKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJQVRMIDEuMy40NzMKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1EOCAgIChoZXgpCQlEVlRlbCBMVEQKLTAwMUJEOCAgICAgKGJhc2UgMTYpCQlEVlRlbCBMVEQKLQkJCQk1IFNhcGlyCi0JCQkJNDY4NTIgSGVyemVsaWEgCi0JCQkJSVNSQUVMCi0KLTAwLTFCLUQ5ICAgKGhleCkJCUVkZ2V3YXRlciBDb21wdXRlciBTeXN0ZW1zCi0wMDFCRDkgICAgIChiYXNlIDE2KQkJRWRnZXdhdGVyIENvbXB1dGVyIFN5c3RlbXMKLQkJCQkxMTI1IElubm92YXRpb24gRHJpdmUKLQkJCQlPdHRhd2EgT250YXJpbyBLMkstM0c2Ci0JCQkJQ0FOQURBCi0KLTAwLTFCLURBICAgKGhleCkJCVVUU3RhcmNvbSBJbmMKLTAwMUJEQSAgICAgKGJhc2UgMTYpCQlVVFN0YXJjb20gSW5jCi0JCQkJMTI3NSBIYXJib3IgQmF5IFBLV1kKLQkJCQlBbGFtZWRhIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1EQiAgIChoZXgpCQlWYWxlbyBWRUNTCi0wMDFCREIgICAgIChiYXNlIDE2KQkJVmFsZW8gVkVDUwotCQkJCTIgQXZlbnVlIEZlcm5hbmQgUG91aWxsb24KLQkJCQlFdXJvcGFyYwotCQkJCUNSRVRFSUwgSWxlIGRlIEZyYW5jZSA5NDA0MgotCQkJCUZSQU5DRQotCi0wMC0xQi1EQyAgIChoZXgpCQlWZW5jZXIgQ28uLCBMdGQuCi0wMDFCREMgICAgIChiYXNlIDE2KQkJVmVuY2VyIENvLiwgTHRkLgotCQkJCTIwRi0xLCBOby43NywgU2VjLjEsIEhzaW4gVGFpIFd1IFJkLiwKLQkJCQlIc2kgQ2hpaCBUYWlwZWkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1ERCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMUJERCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1ERSAgIChoZXgpCQlSZW5rdXMtSGVpbnosIEluYy4KLTAwMUJERSAgICAgKGJhc2UgMTYpCQlSZW5rdXMtSGVpbnosIEluYy4KLQkJCQkxOTIwMSBDb29rIFN0LgotCQkJCUZvb3RoaWxsIFJhbmNoIENBIDkyNjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1ERiAgIChoZXgpCQlJc2tyYSBNSVMKLTAwMUJERiAgICAgKGJhc2UgMTYpCQlJc2tyYSBNSVMKLQkJCQlManVibGphbnNrYSBjZXN0YSAyNGEKLQkJCQlLcmFuaiBTbG92ZW5pYSA0MDAwCi0JCQkJU0xPVkVOSUEKLQotMDAtMUItRTAgICAoaGV4KQkJVEVMRU5PVCBFTEVDVFJPTklDIEdtYkgKLTAwMUJFMCAgICAgKGJhc2UgMTYpCQlURUxFTk9UIEVMRUNUUk9OSUMgR21iSAotCQkJCVdpZXNlbnRhbHN0cmHfZSA0MgotCQkJCUFhbGVuIEJhZGVuLVf8cnR0ZW1iZXJnIDczNDM0Ci0JCQkJR0VSTUFOWQotCi0wMC0xQi1FMSAgIChoZXgpCQlWaWFMb2d5Ci0wMDFCRTEgICAgIChiYXNlIDE2KQkJVmlhTG9neQotCQkJCTI0MDAgTGluY29sbiBBdmUKLQkJCQlBbHRhZGVuYSBDQSA5MTAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItRTIgICAoaGV4KQkJQWhuTGFiLEluYy4KLTAwMUJFMiAgICAgKGJhc2UgMTYpCQlBaG5MYWIsSW5jLgotCQkJCTZ0aCBGbCwgQ0NNTSBCbGRnLCAxMiBZZW91aWRvLWRvbmcKLQkJCQlTZW91bCAgMTUwODY5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLUUzICAgKGhleCkJCUhlYWx0aCBIZXJvIE5ldHdvcmssIEluYy4KLTAwMUJFMyAgICAgKGJhc2UgMTYpCQlIZWFsdGggSGVybyBOZXR3b3JrLCBJbmMuCi0JCQkJMjAwMCBTZWFwb3J0IEJsdmQuCi0JCQkJU3VpdGUgNDAwCi0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1FNCAgIChoZXgpCQlUT1dORVQgU1JMCi0wMDFCRTQgICAgIChiYXNlIDE2KQkJVE9XTkVUIFNSTAotCQkJCVZJQSBERUkgRklOQUxFLCAyMAotCQkJCTYxMDQzIENBR0xJIChQVSkgCi0JCQkJSVRBTFkKLQotMDAtMUItRTUgICAoaGV4KQkJODAyYXV0b21hdGlvbiBMaW1pdGVkCi0wMDFCRTUgICAgIChiYXNlIDE2KQkJODAyYXV0b21hdGlvbiBMaW1pdGVkCi0JCQkJMTggRmlyc3QgQXZlbnVlCi0JCQkJV29ydGhpbmcgV2VzdCBTdXNzZXggQk4xNCA5TkoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi1FNiAgIChoZXgpCQlWUiBBRwotMDAxQkU2ICAgICAoYmFzZSAxNikJCVZSIEFHCi0JCQkJUvx0aXN0cmFzc2UgMTgKLQkJCQlTY2hsaWVyZW4gIENILTg5NTIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xQi1FNyAgIChoZXgpCQlQb3N0ZWsgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDFCRTcgICAgIChiYXNlIDE2KQkJUG9zdGVrIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCVN1aXRlIDUxMCwgU2hhbmdoYW5nIEJ1aWxkaW5nCi0JCQkJSG9uZ2xpIFJvYWQKLQkJCQlTaGVuIFpoZW4gR3VhbmcgRG9uZyA1MTgwMjgKLQkJCQlDSElOQQotCi0wMC0xQi1FOCAgIChoZXgpCQlVbHRyYXRyb25payBHbWJICi0wMDFCRTggICAgIChiYXNlIDE2KQkJVWx0cmF0cm9uaWsgR21iSAotCQkJCUdld2VyYmVzdHIuIDUyCi0JCQkJSGVycnNjaGluZyBCYXZhcmlhIEQtODIyMTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLUU5ICAgKGhleCkJCUJyb2FkY29tIENvcnBvcmF0aW9uCi0wMDFCRTkgICAgIChiYXNlIDE2KQkJQnJvYWRjb20gQ29ycG9yYXRpb24KLQkJCQkxNjIxNSBBbHRvbiBQYXJrd2F5Ci0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1FQSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMUJFQSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xQi1FQiAgIChoZXgpCQlETVAgRWxlY3Ryb25pY3MgSU5DLgotMDAxQkVCICAgICAoYmFzZSAxNikJCURNUCBFbGVjdHJvbmljcyBJTkMuCi0JCQkJOEYuLCBOby4xMiwgV3VjeXVhbiA3dGggUmQuCi0JCQkJV3VndSBUb3duc2hpcAotCQkJCVRhaXBlaSBDb3VudHkgIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItRUMgICAoaGV4KQkJTmV0aW8gVGVjaG5vbG9naWVzIENvLiwgTHRkCi0wMDFCRUMgICAgIChiYXNlIDE2KQkJTmV0aW8gVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJNEYtMSwgTm8uIDU4MiwgUnVlaWd1YW5nIFJkLiwgTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNDkyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1FRCAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotMDAxQkVEICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUVFICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFCRUUgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFCLUVGICAgKGhleCkJCUJsb3Nzb21zIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkLgotMDAxQkVGICAgICAoYmFzZSAxNikJCUJsb3Nzb21zIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCUJMSzI1LEhlbmdmZW5nIEluZC5DaXR5LEhlemhvdQotCQkJCVhpeGlhbmcgVG93bgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjYKLQkJCQlDSElOQQotCi0wMC0xQi1GMCAgIChoZXgpCQlWYWx1ZSBQbGF0Zm9ybXMgTGltaXRlZAotMDAxQkYwICAgICAoYmFzZSAxNikJCVZhbHVlIFBsYXRmb3JtcyBMaW1pdGVkCi0JCQkJUm0gNzEyLTcxMywgQnVpbGRpbmcgOSwgNSwgU2NpZW5jZSBQYXJrIFdlc3QgQXZlLiwKLQkJCQlIb25nIEtvbmcgU2NpZW5jZSBQYXJrLAotCQkJCVNoYXRpbiwgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xQi1GMSAgIChoZXgpCQlOYW5qaW5nIFNpbHZlck5ldCBTb2Z0d2FyZSBDby4sIEx0ZC4KLTAwMUJGMSAgICAgKGJhc2UgMTYpCQlOYW5qaW5nIFNpbHZlck5ldCBTb2Z0d2FyZSBDby4sIEx0ZC4KLQkJCQkzL0YsIDEwIGJ1aWxkaW5nLCBOYW5qaW5nIFdvcmxkIFdpbmRvdyBUZWNobm9sb2d5ICYgU29mdHdhcmUgUGFyawotCQkJCTEyIERpbmdIdWFpTWVuLCBHdWxvdSBEaXN0cmljdCwgTmFuamluZwotCQkJCU5hbmppbmcgSmlhbmdzdSAyMTAwMTMKLQkJCQlDSElOQQotCi0wMC0xQi1GMiAgIChoZXgpCQlLV09STEQgQ09NUFVURVIgQ08uLCBMVEQKLTAwMUJGMiAgICAgKGJhc2UgMTYpCQlLV09STEQgQ09NUFVURVIgQ08uLCBMVEQKLQkJCQlOby4gMTEzLCBKaWFuIDJuZCBSZC4sCi0JCQkJSmhvbmdoZSBUYWlwZWkgY291bnR5IDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItRjMgICAoaGV4KQkJVFJBTlNSQURJTyBTZW5kZXJTeXN0ZW1lIEJlcmxpbiBBRwotMDAxQkYzICAgICAoYmFzZSAxNikJCVRSQU5TUkFESU8gU2VuZGVyU3lzdGVtZSBCZXJsaW4gQUcKLQkJCQlNZXJ0ZW5zc3RyYXNzZSA2MwotCQkJCUJlcmxpbiAxMzU4NwotCQkJCUdFUk1BTlkKLQotMDAtMUItRjQgICAoaGV4KQkJS0VOV0lOIElORFVTVFJJQUwoSEspIExURC4KLTAwMUJGNCAgICAgKGJhc2UgMTYpCQlLRU5XSU4gSU5EVVNUUklBTChISykgTFRELgotCQkJCVJNLjE1MTIgMTUvRiBTSEFUSU4gR0FMTEVSSUEKLQkJCQkxOC0yNCBTSEFOIE1FSSBTVCwgRk9UQU4KLQkJCQlIT05HIEtPTkcKLQotMDAtMUItRjUgICAoaGV4KQkJVGVsbGluayBTaXN0ZW1hcyBkZSBUZWxlY29tdW5pY2FjafNuIFMuTC4KLTAwMUJGNSAgICAgKGJhc2UgMTYpCQlUZWxsaW5rIFNpc3RlbWFzIGRlIFRlbGVjb211bmljYWNp824gUy5MLgotCQkJCUMvIE1hcu1hIFR1YmF1IE66IDUgQmFqbyBCCi0JCQkJTWFkcmlkICAyODA1MAotCQkJCVNQQUlOCi0KLTAwLTFCLUY2ICAgKGhleCkJCUNPTldJU0UgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMdGQuCi0wMDFCRjYgICAgIChiYXNlIDE2KQkJQ09OV0lTRSBUZWNobm9sb2d5IENvcnBvcmF0aW9uIEx0ZC4KLQkJCQkyRiBOby40NCwgUGFyayBBdmUuIDIsIEhzaW5jaHUgU2NpZW5jZSBQYXJrCi0JCQkJSHNpbmNodSBDaXR5ICAzMDA3NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItRjcgICAoaGV4KQkJTHVuZCBJUCBQcm9kdWN0cyBBQgotMDAxQkY3ICAgICAoYmFzZSAxNikJCUx1bmQgSVAgUHJvZHVjdHMgQUIKLQkJCQlEYWxieXYuIDEKLQkJCQlMdW5kIFNrYW5lIDIyNCA2MAotCQkJCVNXRURFTgotCi0wMC0xQi1GOCAgIChoZXgpCQlEaWdpdHJheCBJbmMuCi0wMDFCRjggICAgIChiYXNlIDE2KQkJRGlnaXRyYXggSW5jLgotCQkJCTI0NDMgVHJhbnNtaXR0ZXIgUmQsCi0JCQkJU3VpdGUgMjA2Ci0JCQkJUGFuYW1hIENpdHkgRkwgMzI0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUY5ICAgKGhleCkJCUludGVsbGl0ZWN0IFdhdGVyIEx0ZAotMDAxQkY5ICAgICAoYmFzZSAxNikJCUludGVsbGl0ZWN0IFdhdGVyIEx0ZAotCQkJCVN1aXRlIDE5LCBCYXNlcG9pbnQgQnVzaW5lc3MgQ2VudHJlCi0JCQkJQXZpYXRpb24gUGFyayBXZXN0Ci0JCQkJQ2hyaXN0Y2h1cmNoIERvcnNldCBCSDIzIF5OVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLUZBICAgKGhleCkJCUcuaS5OLiBtYkgKLTAwMUJGQSAgICAgKGJhc2UgMTYpCQlHLmkuTi4gbWJICi0JCQkJUmFpZmZlaXNlbnN0ci4gMTUKLQkJCQlHcmllc2hlaW0gSGVzc2VuIDY0MzQ3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQi1GQiAgIChoZXgpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0wMDFCRkIgICAgIChiYXNlIDE2KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGkKLQkJCQlTb21hLWNpdHkgRnVrdXNoaW1hLS1wcmVmIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUItRkMgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDFCRkMgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1GRCAgIChoZXgpCQlEaWduc3lzIEluYy4KLTAwMUJGRCAgICAgKGJhc2UgMTYpCQlEaWduc3lzIEluYy4KLQkJCQkxNEYsIERpZ2l0YWwgRW1waXJlIEJsZGcuLCBCLTE0MDgKLQkJCQlZZW9uZ3RvbmctZ3UsCi0JCQkJU3V3b24gR3llb25nZ2ktZG8gNDQzLTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi1GRSAgIChoZXgpCQlaYXZpbyBJbmMuCi0wMDFCRkUgICAgIChiYXNlIDE2KQkJWmF2aW8gSW5jLgotCQkJCU5vLjEsTGlzaW5nIDFzdCBSZC4gU2NpZW5jZSBCYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1GRiAgIChoZXgpCQlNaWxsZW5uaWEgTWVkaWEgaW5jLgotMDAxQkZGICAgICAoYmFzZSAxNikJCU1pbGxlbm5pYSBNZWRpYSBpbmMuCi0JCQkJNDIwMCBEYXkgU3ByaW5nIENUCi0JCQkJUGxhY2VydmlsbGUgQ0EgOTU2NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTAwICAgKGhleCkJCUVudHJ5IFBvaW50LCBMTEMKLTAwMUMwMCAgICAgKGJhc2UgMTYpCQlFbnRyeSBQb2ludCwgTExDCi0JCQkJUC5PLiBCb3ggMzM1NAotCQkJCTkzMCBFYXN0IExpbmNvbG4gUm9hZAotCQkJCUlkYWhvIEZhbGxzIElkYWhvIDgzNDAzLTMzNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTAxICAgKGhleCkJCUFCQiBPeSBEcml2ZXMKLTAwMUMwMSAgICAgKGJhc2UgMTYpCQlBQkIgT3kgRHJpdmVzCi0JCQkJSGlvbW90aWUgMTMKLQkJCQlIZWxzaW5raSAgRkktMDAzODAKLQkJCQlGSU5MQU5ECi0KLTAwLTFDLTAyICAgKGhleCkJCVBhbm8gTG9naWMKLTAwMUMwMiAgICAgKGJhc2UgMTYpCQlQYW5vIExvZ2ljCi0JCQkJMjAwMCBTZWFwb3J0IERyaXZlLCBTdWl0ZSAyMDAKLQkJCQlTdWl0ZSAyMDAKLQkJCQlSZWR3b29kIENpdHkgQ0EgOTQwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTAzICAgKGhleCkJCUJldHR5IFRWIFRlY2hub2xvZ3kgQUcKLTAwMUMwMyAgICAgKGJhc2UgMTYpCQlCZXR0eSBUViBUZWNobm9sb2d5IEFHCi0JCQkJSGFyZHR1cm1zdHJhc3NlIDIKLQkJCQladXJpY2ggIDgwMDA1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUMtMDQgICAoaGV4KQkJQWlyZ2FpbiwgSW5jLgotMDAxQzA0ICAgICAoYmFzZSAxNikJCUFpcmdhaW4sIEluYy4KLQkJCQkxOTMwIFBhbG9tYXIgUG9pbnQgV2F5Ci0JCQkJU3VpdGUgMTA3Ci0JCQkJQ2FybHNiYWQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTA1ICAgKGhleCkJCU5vbmluIE1lZGljYWwgSW5jLgotMDAxQzA1ICAgICAoYmFzZSAxNikJCU5vbmluIE1lZGljYWwgSW5jLgotCQkJCTEzNzAwIDFzdCBBdmVudWUgTm9ydGgKLQkJCQlQbHltb3V0aCBNTiA1NTQ0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMDYgICAoaGV4KQkJU2llbWVucyBOdW1lcmljYWwgQ29udHJvbCBMdGQuLCBOYW5qaW5nCi0wMDFDMDYgICAgIChiYXNlIDE2KQkJU2llbWVucyBOdW1lcmljYWwgQ29udHJvbCBMdGQuLCBOYW5qaW5nCi0JCQkJTm8uIDE4IFNpZW1lbnMgUm9hZCwgSmlhbmduaW5nIERldmVsb3BtZW50IFpvbmUKLQkJCQlOYW5qaW5nIEppYW5nU3UgMjExMTAwCi0JCQkJQ0hJTkEKLQotMDAtMUMtMDcgICAoaGV4KQkJQ3dsaW51eCBMaW1pdGVkCi0wMDFDMDcgICAgIChiYXNlIDE2KQkJQ3dsaW51eCBMaW1pdGVkCi0JCQkJVW5pdCAxMzgsIDEzL0YsIFdlc3dpY2sgQ29tbWVyY2lhbCBCdWlsZGluZywKLQkJCQkxNDctMTUxIFF1ZWVuJ3MgUm9hZCBFYXN0LAotCQkJCVdhbiBDaGFpICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUMtMDggICAoaGV4KQkJRWNobzM2MCwgSW5jLgotMDAxQzA4ICAgICAoYmFzZSAxNikJCUVjaG8zNjAsIEluYy4KLQkJCQkyMTAwMCBBdGxhbnRpYyBCbHZkCi0JCQkJU3VpdGUgNjAwCi0JCQkJRHVsbGVzIFZBIDIwMTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0wOSAgIChoZXgpCQlTQUUgRWxlY3Ryb25pYyBDby4sTHRkLgotMDAxQzA5ICAgICAoYmFzZSAxNikJCVNBRSBFbGVjdHJvbmljIENvLixMdGQuCi0JCQkJMjMvRixZaW5nIExvbmcgWmhhbiBZZSBCdWlsZGluZywKLQkJCQlOby42MDI1LCBTaGVuIE5hbiBSb2FkLEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMUMtMEEgICAoaGV4KQkJU2hlbnpoZW4gQUVFIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMUMwQSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBBRUUgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTFzdCBGbG9vciBCIEJ1aWxkaW5nLCBTaGVuemhlbiwKLQkJCQlUc2luZ2h1YSBIaS1UZWNoIFBhcmssIE5hbnNoYW4gSGktVGVjaCBQYXJrIE5vcnRoLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xQy0wQiAgIChoZXgpCQlTbWFydEFudCBUZWxlY29tCi0wMDFDMEIgICAgIChiYXNlIDE2KQkJU21hcnRBbnQgVGVsZWNvbQotCQkJCTJGLCBOby4gNjY5LCBTZWMuIDQsIENodW5nIEhzaW5nIFJkLiwgQ2h1dHVuZwotCQkJCUhzaW5jaHUgIDMxMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtMEMgICAoaGV4KQkJVEFOSVRBIENvcnBvcmF0aW9uCi0wMDFDMEMgICAgIChiYXNlIDE2KQkJVEFOSVRBIENvcnBvcmF0aW9uCi0JCQkJMS0xNC0yLE1hZW5vLWNobwotCQkJCUl0YWJhc2hpLWt1Ci0JCQkJVG9reW8gIDE3NC04NjMwCi0JCQkJSkFQQU4KLQotMDAtMUMtMEQgICAoaGV4KQkJRy1UZWNobm9sb2d5LCBJbmMuCi0wMDFDMEQgICAgIChiYXNlIDE2KQkJRy1UZWNobm9sb2d5LCBJbmMuCi0JCQkJMTY1MyBTdGFuZm9yZCBTdHJlZXQKLQkJCQlTYW50YSBNb25pY2EgQ0EgOTA0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTBFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUMwRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0wRiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFDMEYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTAgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi0wMDFDMTAgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0xMSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxQzExICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUMxMiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTMgICAoaGV4KQkJT1BUU1lTIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDFDMTMgICAgIChiYXNlIDE2KQkJT1BUU1lTIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJU1VJVEUgQi04MDIgQlVOREFORyBURUNITk8gUEFSSwotCQkJCVlBVEFQLURPTkcsIEJVTkRBTkctS1UKLQkJCQlTRU9OR05BTS1TSSBHWUVPTkdHSS1ETyA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTE0ICAgKGhleCkJCVZNd2FyZSwgSW5jCi0wMDFDMTQgICAgIChiYXNlIDE2KQkJVk13YXJlLCBJbmMKLQkJCQkzNDAxIEhpbGx2aWV3IEF2ZW51ZQotCQkJCVBhbG8gQWx0byBDQSA5NDMwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTUgICAoaGV4KQkJVFhQIENvcnBvcmF0aW9uCi0wMDFDMTUgICAgIChiYXNlIDE2KQkJVFhQIENvcnBvcmF0aW9uCi0JCQkJMTI5OSBDb21tZXJjZSBEci4KLQkJCQlSaWNoYXJkc29uIFRleGFzIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0xNiAgIChoZXgpCQlUaHlzc2VuS3J1cHAgRWxldmF0b3IKLTAwMUMxNiAgICAgKGJhc2UgMTYpCQlUaHlzc2VuS3J1cHAgRWxldmF0b3IKLQkJCQk5MjgwIENyZXN0d3luIEhpbGxzIERyaXZlCi0JCQkJTWVtcGhpcyBUTiAzODEyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTcgICAoaGV4KQkJTm9ydGVsCi0wMDFDMTcgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFDLTE4ICAgKGhleCkJCVNpY2VydCBTLnIuTC4KLTAwMUMxOCAgICAgKGJhc2UgMTYpCQlTaWNlcnQgUy5yLkwuCi0JCQkJVmlhIEJlcm5hcmRpbm8gQWxpbWVuYSwgMTI4Ci0JCQkJUm9tZSAgMDAxNzMKLQkJCQlJVEFMWQotCi0wMC0xQy0xOSAgIChoZXgpCQlzZWN1bmV0IFNlY3VyaXR5IE5ldHdvcmtzIEFHCi0wMDFDMTkgICAgIChiYXNlIDE2KQkJc2VjdW5ldCBTZWN1cml0eSBOZXR3b3JrcyBBRwotCQkJCUtyb25wcmluemVuc3RyYd9lIDMwCi0JCQkJRXNzZW4gTlJXIDQ1MTI4Ci0JCQkJR0VSTUFOWQotCi0wMC0xQy0xQSAgIChoZXgpCQlUaG9tYXMgSW5zdHJ1bWVudGF0aW9uLCBJbmMKLTAwMUMxQSAgICAgKGJhc2UgMTYpCQlUaG9tYXMgSW5zdHJ1bWVudGF0aW9uLCBJbmMKLQkJCQkxMzMgTGFuZGluZyBSZAotCQkJCUNhcGUgTWF5IENvdXJ0IEhvdXNlIE5KIDA4MjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0xQiAgIChoZXgpCQlIeXBlcnN0b25lIEdtYkgKLTAwMUMxQiAgICAgKGJhc2UgMTYpCQlIeXBlcnN0b25lIEdtYkgKLQkJCQlMaW5lLUVpZC1TdHIuIDMKLQkJCQlLb25zdGFueiBCYWRlbi1X/HJ0dGVtYmVyZyA3ODQ2NwotCQkJCUdFUk1BTlkKLQotMDAtMUMtMUMgICAoaGV4KQkJQ2VudGVyIENvbW11bmljYXRpb24gU3lzdGVtcyBHbWJICi0wMDFDMUMgICAgIChiYXNlIDE2KQkJQ2VudGVyIENvbW11bmljYXRpb24gU3lzdGVtcyBHbWJICi0JCQkJSWduYXotS29lY2stU3RyYXNzZSAxOQotCQkJCVZpZW5uYSAgQS0xMjEwCi0JCQkJQVVTVFJJQQotCi0wMC0xQy0xRCAgIChoZXgpCQlDSEVOWkhPVSBHT1NQRUxMIERJR0lUQUwgVEVDSE5PTE9HWSBDTy4sTFRECi0wMDFDMUQgICAgIChiYXNlIDE2KQkJQ0hFTlpIT1UgR09TUEVMTCBESUdJVEFMIFRFQ0hOT0xPR1kgQ08uLExURAotCQkJCUJBSUxVVEFORyxTVVhJQU4gRElTVFJJQ1QsCi0JCQkJQ0hFTlpIT1UgSFVOQU4gNDIzMDI1Ci0JCQkJQ0hJTkEKLQotMDAtMUMtMUUgICAoaGV4KQkJZW10cmlvbiBHbWJICi0wMDFDMUUgICAgIChiYXNlIDE2KQkJZW10cmlvbiBHbWJICi0JCQkJR3Jlc2NoYmFjaHN0cmFzc2UgMTIKLQkJCQlLYXJsc3J1aGUgQmFkZW4gV3VlcnR0ZW1iZXJnIDc2MjI5Ci0JCQkJR0VSTUFOWQotCi0wMC0xQy0xRiAgIChoZXgpCQlRdWVzdCBSZXRhaWwgVGVjaG5vbG9neSBQdHkgTHRkCi0wMDFDMUYgICAgIChiYXNlIDE2KQkJUXVlc3QgUmV0YWlsIFRlY2hub2xvZ3kgUHR5IEx0ZAotCQkJCTM3LTM5IFdhbHNoIFN0cmVldAotCQkJCVRoZWJhcnRvbiBTQSA1MDMxCi0JCQkJQVVTVFJBTElBCi0KLTAwLTFDLTIwICAgKGhleCkJCUNMQiBCZW5lbHV4Ci0wMDFDMjAgICAgIChiYXNlIDE2KQkJQ0xCIEJlbmVsdXgKLQkJCQlSYW1nYXRzZXdlZyAxNwotCQkJCVJhYW1zZG9ua3N2ZWVyIE5CUiA0OTQxIFZOCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUMtMjEgICAoaGV4KQkJTnVjc2FmZSBJbmMuCi0wMDFDMjEgICAgIChiYXNlIDE2KQkJTnVjc2FmZSBJbmMuCi0JCQkJNjAxIE9hayBSaWRnZSBUdXJucGlrZQotCQkJCU9hayBSaWRnZSBUZW5uZXNzZWUgMzc4MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTIyICAgKGhleCkJCUFlcmlzIEVsZXR0cm9uaWNhIHMuci5sLgotMDAxQzIyICAgICAoYmFzZSAxNikJCUFlcmlzIEVsZXR0cm9uaWNhIHMuci5sLgotCQkJCVpvbmEgSW5kLmxlIFZhbGxlY3VwYQotCQkJCUNvbG9ubmVsbGEgVGVyYW1vIDY0MDEwCi0JCQkJSVRBTFkKLQotMDAtMUMtMjMgICAoaGV4KQkJRGVsbCBJbmMKLTAwMUMyMyAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTI0ICAgKGhleCkJCUZvcm1vc2EgV2lyZWxlc3MgU3lzdGVtcyBDb3JwLgotMDAxQzI0ICAgICAoYmFzZSAxNikJCUZvcm1vc2EgV2lyZWxlc3MgU3lzdGVtcyBDb3JwLgotCQkJCU5vLiA0MDgsIEd1YW5kb25nIFJkLiwKLQkJCQlIc2luQ2h1IENpdHkgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtMjUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotMDAxQzI1ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQk2NixDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTI2ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTAwMUMyNiAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy0yNyAgIChoZXgpCQlTdW5lbGwgRWxlY3Ryb25pY3MgQ28uCi0wMDFDMjcgICAgIChiYXNlIDE2KQkJU3VuZWxsIEVsZWN0cm9uaWNzIENvLgotCQkJCTNyZCBGbG9vcixCbGRnLjUxNCxCYUd1YSBSZAotCQkJCUZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nZG9uZyA1MTgwMjkKLQkJCQlDSElOQQotCi0wMC0xQy0yOCAgIChoZXgpCQlTcGhhaXJvbiBUZWNobm9sb2dpZXMgR21iSCAKLTAwMUMyOCAgICAgKGJhc2UgMTYpCQlTcGhhaXJvbiBUZWNobm9sb2dpZXMgR21iSCAKLQkJCQlQaGlsaXBwLVJlaXMtU3RyYXNzZSAxCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQkJCQlCYXV0emVuIFNheG9ueSAwMjYyNSAgICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLTI5ICAgKGhleCkJCUNPUkUgRElHSVRBTCBFTEVDVFJPTklDUyBDTy4sIExURAotMDAxQzI5ICAgICAoYmFzZSAxNikJCUNPUkUgRElHSVRBTCBFTEVDVFJPTklDUyBDTy4sIExURAotCQkJCTEwMDYjIDEwMiBDSFVOVUlURUNITk9QQVJLIDIwMC0xCi0JCQkJQ0hVTlVJLURPTkcsIFdPTk1JLUdVCi0JCQkJQlVDSEVPTi1DSVRZIEdZVU5HR0ktRE8gNDIwLTg1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy0yQSAgIChoZXgpCQlFbnZpc2Fjb3IgVGVjaG5vbG9naWVzIEluYy4KLTAwMUMyQSAgICAgKGJhc2UgMTYpCQlFbnZpc2Fjb3IgVGVjaG5vbG9naWVzIEluYy4KLQkJCQkxNDg0NS02IFlvbmdlIFN0cmVldCwgU3VpdGUgMzEwCi0JCQkJQXVyb3JhIE9OIEw0RyA2SDgKLQkJCQlDQU5BREEKLQotMDAtMUMtMkIgICAoaGV4KQkJQWxlcnRtZS5jb20gTGltaXRlZAotMDAxQzJCICAgICAoYmFzZSAxNikJCUFsZXJ0bWUuY29tIExpbWl0ZWQKLQkJCQkyNy0yOCBCcmlkZ2UgU3RyZWV0Ci0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCMiAxVUoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQy0yQyAgIChoZXgpCQlTeW5hcHNlCi0wMDFDMkMgICAgIChiYXNlIDE2KQkJU3luYXBzZQotCQkJCTEzMiBFeHBvcnQgQ2lyY2xlCi0JCQkJSHVudHN2aWxsZSBBTCAzNTgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMkQgICAoaGV4KQkJRmxleFJhZGlvIFN5c3RlbXMKLTAwMUMyRCAgICAgKGJhc2UgMTYpCQlGbGV4UmFkaW8gU3lzdGVtcwotCQkJCTg5MDAgTWFyeWJhbmsgRHIuCi0JCQkJQXVzdGluIFRYIDc4NzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0yRSAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDFDMkUgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQKLQkJCQlSb3NldmlsbGUgQ0EgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTJGICAgKGhleCkJCVBmaXN0ZXIgR21iSAotMDAxQzJGICAgICAoYmFzZSAxNikJCVBmaXN0ZXIgR21iSAotCQkJCVN05HR6bGluZ2VyIFN0cmHfZSA3MAotCQkJCUF1Z3NidXJnIEJhdmFyaWEgODYxNjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLTMwICAgKGhleCkJCU1vZGUgTGlnaHRpbmcgKFVLICkgTHRkLgotMDAxQzMwICAgICAoYmFzZSAxNikJCU1vZGUgTGlnaHRpbmcgKFVLICkgTHRkLgotCQkJCVRoZSBNYWx0aW5ncwotCQkJCTYzIEhpZ2ggU3RyZWV0Ci0JCQkJV2FyZSBIZXJ0Zm9yZHNoaXJlIFNHMTIgOUFECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtMzEgICAoaGV4KQkJTW9iaWxlIFhQIFRlY2hub2xvZ3kgQ28uLCBMVEQKLTAwMUMzMSAgICAgKGJhc2UgMTYpCQlNb2JpbGUgWFAgVGVjaG5vbG9neSBDby4sIExURAotCQkJCVJvb20gTm8uMjUwNixUcmktdG93ZXIgQyBidWlsZGluZyxOby42NqOsWmhvbmdndWFuY3VuIEVhc3QgUm9hZCxIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMUMtMzIgICAoaGV4KQkJVGVsaWFuIENvcnBvcmF0aW9uCi0wMDFDMzIgICAgIChiYXNlIDE2KQkJVGVsaWFuIENvcnBvcmF0aW9uCi0JCQkJNEZMLiBOYW1qZW9uIEJsZGcuIDUzLTMgSGFhbmRvbmcKLQkJCQlLd2FuZ215dW5nc2kgS3lvdW5na2lkbyA0MjMwNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtMzMgICAoaGV4KQkJU3V0cm9uCi0wMDFDMzMgICAgIChiYXNlIDE2KQkJU3V0cm9uCi0JCQkJMjEzMDAgUmlkZ2V0b3AgQ2lyCi0JCQkJU3RlcmxpbmcgVkEgMjAxNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTM0ICAgKGhleCkJCUhVRVkgQ0hJQU8gSU5URVJOQVRJT05BTCBDTy4sIExURC4KLTAwMUMzNCAgICAgKGJhc2UgMTYpCQlIVUVZIENISUFPIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0JCQkJNUYsIE5PLiA2NDktMSwKLQkJCQlDSFVORyBDSEVORyBSRC4sCi0JCQkJSFNJTiBDSFVBTkcgQ0lUWSBUQUlQRUkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy0zNSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQzM1ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwVgotCQkJCURFTk1BUksKLQotMDAtMUMtMzYgICAoaGV4KQkJaU5FV2lUIE5WCi0wMDFDMzYgICAgIChiYXNlIDE2KQkJaU5FV2lUIE5WCi0JCQkJU2NoYWxp625ob2V2ZWRyZWVmIDIwRAotCQkJCU1lY2hlbGVuIEFudHdlcnAgMjgwMAotCQkJCUJFTEdJVU0KLQotMDAtMUMtMzcgICAoaGV4KQkJQ2FsbHBvZCwgSW5jLgotMDAxQzM3ICAgICAoYmFzZSAxNikJCUNhbGxwb2QsIEluYy4KLQkJCQk4NTAgVy4gSmFja3NvbgotCQkJCVN1aXRlIDI2MAotCQkJCUNoaWNhZ28gSUwgNjA2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTM4ICAgKGhleCkJCUJpby1SYWQgTGFib3JhdG9yaWVzLCBJbmMuCi0wMDFDMzggICAgIChiYXNlIDE2KQkJQmlvLVJhZCBMYWJvcmF0b3JpZXMsIEluYy4KLQkJCQkyNDUgV2ludGVyIFN0LgotCQkJCVN1aXRlIDEwMAotCQkJCVdhbHRoYW0gTUEgMDI0NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTM5ICAgKGhleCkJCVMgTmV0c3lzdGVtcyBJbmMuCi0wMDFDMzkgICAgIChiYXNlIDE2KQkJUyBOZXRzeXN0ZW1zIEluYy4KLQkJCQkxMEYgU3VuZ3dvbiBCbGRnLiwgMTQxIFNhbXN1bmctRG9uZwotCQkJCUthbmduYW0tS3UKLQkJCQlTZW91bCAgMTM1LTcxNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy0zQSAgIChoZXgpCQlFbGVtZW50IExhYnMsIEluYy4KLTAwMUMzQSAgICAgKGJhc2UgMTYpCQlFbGVtZW50IExhYnMsIEluYy4KLQkJCQkzMzUwIFNjb3R0IEJvdWxldmFyZAotCQkJCUJ1aWxkaW5nICMyCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTNCICAgKGhleCkJCUFtUm9hZCBUZWNobm9sb2d5IEluYy4KLTAwMUMzQiAgICAgKGJhc2UgMTYpCQlBbVJvYWQgVGVjaG5vbG9neSBJbmMuCi0JCQkJMThGLTMgTm8uIDE1MCAsIENoaWVuIEkgUmQKLQkJCQlDaHVuZyBIbyBUYWlwZWkgSHNpZW4gMjM1MTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTNDICAgKGhleCkJCVNlb24gRGVzaWduIEluYy4KLTAwMUMzQyAgICAgKGJhc2UgMTYpCQlTZW9uIERlc2lnbiBJbmMuCi0JCQkJMTExLTNCIEJ1cmJpZGdlIFN0cmVldAotCQkJCUNvcXVpdGxhbSBCQyBWM0sgN0IyCi0JCQkJQ0FOQURBCi0KLTAwLTFDLTNEICAgKGhleCkJCVdhdmVTdG9ybQotMDAxQzNEICAgICAoYmFzZSAxNikJCVdhdmVTdG9ybQotCQkJCTQwIHJ1ZSBkJ09yYWRvdXItc3VyLUdsYW5lCi0JCQkJUGFyaXMgzmxlLWRlLUZyYW5jZSA3NTAxNQotCQkJCUZSQU5DRQotCi0wMC0xQy0zRSAgIChoZXgpCQlFQ0tleSBMaW1pdGVkCi0wMDFDM0UgICAgIChiYXNlIDE2KQkJRUNLZXkgTGltaXRlZAotCQkJCVBPIEJveCAxMjggMDU3Ci0JCQkJUmVtdWVyYQotCQkJCUF1Y2tsYW5kICAxMDUwCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMUMtM0YgICAoaGV4KQkJSW50ZXJuYXRpb25hbCBQb2xpY2UgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDFDM0YgICAgIChiYXNlIDE2KQkJSW50ZXJuYXRpb25hbCBQb2xpY2UgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNDE1MCBTLiA4N3RoIEUuIEF2ZW51ZQotCQkJCVR1bHNhIE9LIDc0MTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy00MCAgIChoZXgpCQlWREctU2VjdXJpdHkgYnYKLTAwMUM0MCAgICAgKGJhc2UgMTYpCQlWREctU2VjdXJpdHkgYnYKLQkJCQlSYWRvbnN0cmFhdCAxMC0xNAotCQkJCVpvZXRlcm1lZXIgWkggMjcxOCBUQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFDLTQxICAgKGhleCkJCXNjZW10ZWMgVHJhbnNwb25kZXIgVGVjaG5vbG9neSBHbWJICi0wMDFDNDEgICAgIChiYXNlIDE2KQkJc2NlbXRlYyBUcmFuc3BvbmRlciBUZWNobm9sb2d5IEdtYkgKLQkJCQlHZXdlcmJlcGFya3N0ci4gMjAKLQkJCQlSZWljaHNob2YgTlJXIDUxNTgwCi0JCQkJR0VSTUFOWQotCi0wMC0xQy00MiAgIChoZXgpCQlQYXJhbGxlbHMsIEluYy4KLTAwMUM0MiAgICAgKGJhc2UgMTYpCQlQYXJhbGxlbHMsIEluYy4KLQkJCQk2NjAgU1cgMzloIFN0cmVldAotCQkJCVN1aXRlIDIwNQotCQkJCVJlbnRvbiBXQSA5ODA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNDMgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDFDNDMgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTQ0ICAgKGhleCkJCUJvc2NoIFNlY3VyaXR5IFN5c3RlbXMgQlYKLTAwMUM0NCAgICAgKGJhc2UgMTYpCQlCb3NjaCBTZWN1cml0eSBTeXN0ZW1zIEJWCi0JCQkJS2FwaXR0ZWx3ZWcgMTAKLQkJCQk0ODI3IEhHICBCcmVkYSBCcmFiYW50IDQ4MjcKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xQy00NSAgIChoZXgpCQlDaGVuYnJvIE1pY29tIENvLiwgTHRkLgotMDAxQzQ1ICAgICAoYmFzZSAxNikJCUNoZW5icm8gTWljb20gQ28uLCBMdGQuCi0JCQkJMTVGbC4sIE5vLiAxNTAsIEppYW4gWWkgUm9hZAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtNDYgICAoaGV4KQkJUVRVTQotMDAxQzQ2ICAgICAoYmFzZSAxNikJCVFUVU0KLQkJCQkjNTA3IEJ5dWNrc2FuL0t5dW5naW4gRGlnaXRhbCBWYWxsZXkgMiA0ODEtMTAKLQkJCQlHYXNhbi1kb25nIEdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtNzgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTQ3ICAgKGhleCkJCUhhbmd6aG91IEhvbGx5c3lzIEF1dG9tYXRpb24gQ28uLCBMdGQKLTAwMUM0NyAgICAgKGJhc2UgMTYpCQlIYW5nemhvdSBIb2xseXN5cyBBdXRvbWF0aW9uIENvLiwgTHRkCi0JCQkJTm8uMTAgTWlkZGxlIFJvYWQsIEppYW5jYWljaGVuZywgSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwOTYKLQkJCQlDSElOQQotCi0wMC0xQy00OCAgIChoZXgpCQlXaURlRmksIEluYy4KLTAwMUM0OCAgICAgKGJhc2UgMTYpCQlXaURlRmksIEluYy4KLQkJCQkxMzMzIEdhdGV3YXkgQmx2ZAotCQkJCVN1aXRlIDEwMTIKLQkJCQlNZWxib3VybmUgRkwgMzI5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTQ5ICAgKGhleCkJCVpvbHRhbiBUZWNobm9sb2d5IEluYy4KLTAwMUM0OSAgICAgKGJhc2UgMTYpCQlab2x0YW4gVGVjaG5vbG9neSBJbmMuCi0JCQkJNEYsIE5vLjMwLCBXdW5zaSBTdC4KLQkJCQlKaHViZWkgSHNpbmNodSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTRBICAgKGhleCkJCUFWTSBHbWJICi0wMDFDNEEgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotMDAtMUMtNEIgICAoaGV4KQkJR2VuZXI4LCBJbmMuCi0wMDFDNEIgICAgIChiYXNlIDE2KQkJR2VuZXI4LCBJbmMuCi0JCQkJODk3IEluZGVwZW5kZW5jZSBBdmUKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy00QyAgIChoZXgpCQlQZXRyb3Rlc3QgSW5zdHJ1bWVudHMKLTAwMUM0QyAgICAgKGJhc2UgMTYpCQlQZXRyb3Rlc3QgSW5zdHJ1bWVudHMKLQkJCQlMdWR3aWctRXJoYXJkLVJpbmcgMTMKLQkJCQlEYWhsZXdpdHogQkJHIDE1ODI3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQy00RCAgIChoZXgpCQlaZWV0b28sIEluYy4KLTAwMUM0RCAgICAgKGJhc2UgMTYpCQlaZWV0b28sIEluYy4KLQkJCQkxMjggR3JlYXQgUm9hZAotCQkJCUJlZGZvcmQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTRFICAgKGhleCkJCVRBU0EgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0wMDFDNEUgICAgIChiYXNlIDE2KQkJVEFTQSBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLQkJCQk1RqOsQnVpbGRpbmcyo6xOby4xMjk1ICxYaW4gSmlucWlhbyBSb2FkLAotCQkJCVNoYW5naGFpICAyMDEyMDYKLQkJCQlDSElOQQotCi0wMC0xQy00RiAgIChoZXgpCQlNQUNBQiBBQgotMDAxQzRGICAgICAoYmFzZSAxNikJCU1BQ0FCIEFCCi0JCQkJVmFubmj2Z3NnYXRhbiA3Ci0JCQkJVHJlbGxlYm9yZyAgMjMxNjYKLQkJCQlTV0VERU4KLQotMDAtMUMtNTAgICAoaGV4KQkJVENMIFRlY2hub2x5IEVsZWN0cm9uaWNzKEh1aXpob3UpQ28uLEx0ZAotMDAxQzUwICAgICAoYmFzZSAxNikJCVRDTCBUZWNobm9seSBFbGVjdHJvbmljcyhIdWl6aG91KUNvLixMdGQKLQkJCQkxMC9GLCBCbG9jayBBICwgVENMIFRvd2VyCi0JCQkJMSBHYW94aW4gTmFuIFJvYWQsIE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUMtNTEgICAoaGV4KQkJQ2VsZW5vIENvbW11bmljYXRpb25zCi0wMDFDNTEgICAgIChiYXNlIDE2KQkJQ2VsZW5vIENvbW11bmljYXRpb25zCi0JCQkJMjIgWmFyaGluIFN0cmVldAotCQkJCVJhJ2FuYW5hICA0MzY2NQotCQkJCUlTUkFFTAotCi0wMC0xQy01MiAgIChoZXgpCQlWSVNJT05FRSBTUkwKLTAwMUM1MiAgICAgKGJhc2UgMTYpCQlWSVNJT05FRSBTUkwKLQkJCQlWSUFMRSBERUxMQSBSRVBVQkJMSUNBLCAyMgotCQkJCVZJTExPUkJBIFRSRVZJU08gMzEwNTAKLQkJCQlJVEFMWQotCi0wMC0xQy01MyAgIChoZXgpCQlTeW5lcmd5IExpZ2h0aW5nIENvbnRyb2xzCi0wMDFDNTMgICAgIChiYXNlIDE2KQkJU3luZXJneSBMaWdodGluZyBDb250cm9scwotCQkJCU9uZSBMaXRob25pYSBXYXkKLQkJCQlDb255ZXJzIEdBIDMwMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01NCAgIChoZXgpCQlIaWxsc3RvbmUgTmV0d29ya3MgSW5jCi0wMDFDNTQgICAgIChiYXNlIDE2KQkJSGlsbHN0b25lIE5ldHdvcmtzIEluYwotCQkJCUEtMTkwNSBlLVdpbmcgQ2VudGVyCi0JCQkJWmhpY2h1biBSb2FkLCBIYWlkaWFuCi0JCQkJQmVpamluZyAgMTAwMDg2Ci0JCQkJQ0hJTkEKLQotMDAtMUMtNTUgICAoaGV4KQkJU2hlbnpoZW4gS2FpZmEgVGVjaG5vbG9neSBDby4KLTAwMUM1NSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBLYWlmYSBUZWNobm9sb2d5IENvLgotCQkJCTcwMDYgQ2FpdGlhbiBSb2FkLCBGdXRpYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzNQotCQkJCUNISU5BCi0KLTAwLTFDLTU2ICAgKGhleCkJCVBhZG8gU3lzdGVtcywgSW5jLgotMDAxQzU2ICAgICAoYmFzZSAxNikJCVBhZG8gU3lzdGVtcywgSW5jLgotCQkJCSM3MDYgTG9hZGxhbmQgRVogVG93ZXIgMTUzCi0JCQkJR3VtaS1Eb25nLCBCdW5kYW5nLUd1Ci0JCQkJU3VuZ05hbSBHeXVuZyBnaS1EbyA0NjMtODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTU3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUM1NyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFDNTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNTkgICAoaGV4KQkJREVWT04gSVQKLTAwMUM1OSAgICAgKGJhc2UgMTYpCQlERVZPTiBJVAotCQkJCTExMDAgRklSU1QgQVZFTlVFCi0JCQkJU1VJVEUgMTAwCi0JCQkJS0lORyBPRiBQUlVTU0lBIFBBIDE5NDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01QSAgIChoZXgpCQlBZHZhbmNlZCBSZWxheSBDb3Jwb3JhdGlvbgotMDAxQzVBICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFJlbGF5IENvcnBvcmF0aW9uCi0JCQkJMTg5NiBDb2x1bWJpYSBTdAotCQkJCUV1Z2VuZSBPUiA5NzQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNUIgICAoaGV4KQkJQ2h1YmIgRWxlY3Ryb25pYyBTZWN1cml0eSBTeXN0ZW1zIEx0ZAotMDAxQzVCICAgICAoYmFzZSAxNikJCUNodWJiIEVsZWN0cm9uaWMgU2VjdXJpdHkgU3lzdGVtcyBMdGQKLQkJCQlTaGFkc3dvcnRoIFJvYWQKLQkJCQlCbGFja2J1cm4gTGFuY2FzaGlyZSBCQjEgMlBSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtNUMgICAoaGV4KQkJSW50ZWdyYXRlZCBNZWRpY2FsIFN5c3RlbXMsIEluYy4KLTAwMUM1QyAgICAgKGJhc2UgMTYpCQlJbnRlZ3JhdGVkIE1lZGljYWwgU3lzdGVtcywgSW5jLgotCQkJCTE5ODQgT2Jpc3BvIEF2ZW51ZQotCQkJCVNpZ25hbCBIaWxsIENBIDkwNzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01RCAgIChoZXgpCQlMZWljYSBNaWNyb3N5c3RlbXMKLTAwMUM1RCAgICAgKGJhc2UgMTYpCQlMZWljYSBNaWNyb3N5c3RlbXMKLQkJCQlQT0JveCA4MAotCQkJCTUxNSBDb2xkaGFtcyBMYW5lCi0JCQkJQ2FtYnJpZGdlICBDQjEgM1laCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtNUUgICAoaGV4KQkJQVNUT04gRnJhbmNlCi0wMDFDNUUgICAgIChiYXNlIDE2KQkJQVNUT04gRnJhbmNlCi0JCQkJMTUxIEF2ZW51ZSBHYWxsaWVuaQotCQkJCUJBR05PTEVUIGlsZSBkZSBmcmFuY2UgOTMxNzcKLQkJCQlGUkFOQ0UKLQotMDAtMUMtNUYgICAoaGV4KQkJV2lubGFuZCBFbGVjdHJvbmljcywgSW5jLgotMDAxQzVGICAgICAoYmFzZSAxNikJCVdpbmxhbmQgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkxOTUwIEV4Y2VsIERyaXZlCi0JCQkJTWFua2F0byBNTiA1NjAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNjAgICAoaGV4KQkJQ1NQIEZyb250aWVyIFRlY2hub2xvZ2llcyxJbmMuCi0wMDFDNjAgICAgIChiYXNlIDE2KQkJQ1NQIEZyb250aWVyIFRlY2hub2xvZ2llcyxJbmMuCi0JCQkJMy0yLTMsU2FzYXp1a2EKLQkJCQlTaGlidXlhLWt1IFRva3lvIDE1MS0wMDczCi0JCQkJSkFQQU4KLQotMDAtMUMtNjEgICAoaGV4KQkJR2FsYXh5IFRlY2hub2xvZ3kgKEhLKSBMdGQuCi0wMDFDNjEgICAgIChiYXNlIDE2KQkJR2FsYXh5IFRlY2hub2xvZ3kgKEhLKSBMdGQuCi0JCQkJVW5pdCA4MDIsIDgvRiwgU2h1aSBIaW5nIENlbnRyZSwgMTMgU2hldW5nIFl1ZXQgUm9hZCwKLQkJCQlLb3dsb29uIEJheSAgS2xuLiwgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFDLTYyICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIEluYwotMDAxQzYyICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIEluYwotCQkJCTYwLTM5LCBHYXNhbi1Eb25nCi0JCQkJS3VtY2hvbi1HdQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTYzICAgKGhleCkJCVRSVUVOCi0wMDFDNjMgICAgIChiYXNlIDE2KQkJVFJVRU4KLQkJCQk0RiBTQU1XT04gQkxERy4sIDQ1MS03Ci0JCQkJIEJBTkdCQUUtRE9ORywgU0VPQ0hPLUdVCi0JCQkJU0VPVUwgIDEzNy04MTgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtNjQgICAoaGV4KQkJQ2VsbG5ldCtIdW50Ci0wMDFDNjQgICAgIChiYXNlIDE2KQkJQ2VsbG5ldCtIdW50Ci0JCQkJNjQzNiBDb3VudHkgUm9hZCAxMQotCQkJCVBlcXVvdCBMYWtlcyBNaW5uZXNvdGEgNTY0NzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTY1ICAgKGhleCkJCUpvZVNjYW4sIEluYy4KLTAwMUM2NSAgICAgKGJhc2UgMTYpCQlKb2VTY2FuLCBJbmMuCi0JCQkJMTE5IEUgOHRoIFN0LgotCQkJCVZhbmNvdXZlciBXQSA5ODY2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNjYgICAoaGV4KQkJVUNBTVAgQ08uLExURAotMDAxQzY2ICAgICAoYmFzZSAxNikJCVVDQU1QIENPLixMVEQKLQkJCQkjMTAxNSwgS29sb24gU2NpZW5jZSBWYWxsZXkgpbEKLQkJCQlTZW91bCBHdXJvLURvbmcsR3Vyby1ndSwgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy02NyAgIChoZXgpCQlQdW1wa2luIE5ldHdvcmtzLCBJbmMuCi0wMDFDNjcgICAgIChiYXNlIDE2KQkJUHVtcGtpbiBOZXR3b3JrcywgSW5jLgotCQkJCTNGTCBKdW5nSG8gQmxkZywgMTA4LTQgU2FuZ2RvLURvbmcsIERvbmdqYWstR3UKLQkJCQlTRU9VTCAgMTU2LTAzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy02OCAgIChoZXgpCQlBbmh1aSBTdW4gQ3JlYXRlIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0wMDFDNjggICAgIChiYXNlIDE2KQkJQW5odWkgU3VuIENyZWF0ZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCU5PLjE5OSBYaWFuZ3poYW5nIFJvYWQKLQkJCQlIZWZlaSBBbmh1aSAyMzAwODgKLQkJCQlDSElOQQotCi0wMC0xQy02OSAgIChoZXgpCQlQYWNrZXQgVmlzaW9uIEx0ZAotMDAxQzY5ICAgICAoYmFzZSAxNikJCVBhY2tldCBWaXNpb24gTHRkCi0JCQkJU0MgSG91c2UKLQkJCQlWYW53YWxsIFJvYWQKLQkJCQlNYWlkZW5oZWFkIEJlcmtzIFNMNiA0VUIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQy02QSAgIChoZXgpCQlXZWlzcyBFbmdpbmVlcmluZyBMdGQuCi0wMDFDNkEgICAgIChiYXNlIDE2KQkJV2Vpc3MgRW5naW5lZXJpbmcgTHRkLgotCQkJCUZsb3Jhc3RyYXNzZSA0MgotCQkJCVVzdGVyIFpIIDg2MTAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xQy02QiAgIChoZXgpCQlDT1ZBWCAgQ28uIEx0ZAotMDAxQzZCICAgICAoYmFzZSAxNikJCUNPVkFYICBDby4gTHRkCi0JCQkJMy0yNy0yMiBraXRhaGFuYWRhLWNobyBraXRha3UKLQkJCQlzYWthaS1zaGkgb29zYWthIDU5MS04MDAyCi0JCQkJSkFQQU4KLQotMDAtMUMtNkMgICAoaGV4KQkJSmFiaWwgQ2lyY3VpdCAoR3Vhbmd6aG91KSBMaW1pdGVkCi0wMDFDNkMgICAgIChiYXNlIDE2KQkJSmFiaWwgQ2lyY3VpdCAoR3Vhbmd6aG91KSBMaW1pdGVkCi0JCQkJMTI4LCBKdW4gQ2hlbmcgUm9hZCx1YW5nemhvdSBFY29ub21pYyBhbmQgVGVjaG5vbG9naWNhbCBEZXZlbG9wbWVudCBEaXN0cmljdAotCQkJCUd1YW5nZG9uZyBQcm92aW5jZQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNTMwCi0JCQkJQ0hJTkEKLQotMDAtMUMtNkQgICAoaGV4KQkJS1lPSFJJVFNVIEVMRUNUUk9OSUMgSU5EVVNUUlkgQ08uLCBMVEQuCi0wMDFDNkQgICAgIChiYXNlIDE2KQkJS1lPSFJJVFNVIEVMRUNUUk9OSUMgSU5EVVNUUlkgQ08uLCBMVEQuCi0JCQkJMi01LTEsIE5JUFBPTkJBU0hJLU5JU0hJLAotCQkJCU5BTklXQS1LVQotCQkJCU9TQUtBICA1NTYtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTFDLTZFICAgKGhleCkJCU5ld2J1cnkgTmV0d29ya3MsIEluYy4KLTAwMUM2RSAgICAgKGJhc2UgMTYpCQlOZXdidXJ5IE5ldHdvcmtzLCBJbmMuCi0JCQkJNDE5IEJveWxzdG9uIFN0cmVldAotCQkJCUJvc3RvbiBNQSAwMjExNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNkYgICAoaGV4KQkJRW1maXQgTHRkCi0wMDFDNkYgICAgIChiYXNlIDE2KQkJRW1maXQgTHRkCi0JCQkJS29udHRpc2VudGllIDggQgotCQkJCVZhYWpha29za2kgIDQwODAwCi0JCQkJRklOTEFORAotCi0wMC0xQy03MCAgIChoZXgpCQlOT1ZBQ09NTSBMVERBCi0wMDFDNzAgICAgIChiYXNlIDE2KQkJTk9WQUNPTU0gTFREQQotCQkJCVJVQSBCRUlKVUksIDcwCi0JCQkJU0FOVE8gQU1BUk8KLQkJCQlTQU8gUEFVTE8gIDA0Njg5LTAwMAotCQkJCUJSQVpJTAotCi0wMC0xQy03MSAgIChoZXgpCQlFbWVyZ2VudCBFbGVjdHJvbmljcwotMDAxQzcxICAgICAoYmFzZSAxNikJCUVtZXJnZW50IEVsZWN0cm9uaWNzCi0JCQkJQmxkZyAyIExldmVsIDMgU3VpdGUgMzA1Ci0JCQkJMjU5MSBXZXhmb3JkLUJheW5lIFJvYWQKLQkJCQlTZXdpY2tsZXkgUEEgMTUxNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTcyICAgKGhleCkJCU1heWVyICYgQ2llIEdtYkggJiBDbyBLRwotMDAxQzcyICAgICAoYmFzZSAxNikJCU1heWVyICYgQ2llIEdtYkggJiBDbyBLRwotCQkJCUVtaWwgTWF5ZXIgU3RyYXNzZSAxMAotCQkJCUFsYnN0YWR0IEJhZGVuIFf8cnR0ZW1iZXJnIDcyNDYxCi0JCQkJR0VSTUFOWQotCi0wMC0xQy03MyAgIChoZXgpCQlBcmlzdGEgTmV0d29ya3MsIEluYy4KLTAwMUM3MyAgICAgKGJhc2UgMTYpCQlBcmlzdGEgTmV0d29ya3MsIEluYy4KLQkJCQkyNzUgTWlkZGxlZmllbGQgUm9hZCwgU3RlIDUwCi0JCQkJTWVubG8gUGFyayBDYWxpZm9ybmlhIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy03NCAgIChoZXgpCQlTeXN3YW4gVGVjaG5vbG9naWVzIEluYy4KLTAwMUM3NCAgICAgKGJhc2UgMTYpCQlTeXN3YW4gVGVjaG5vbG9naWVzIEluYy4KLQkJCQkyMDUwIEJlYXZlcmNyZWVrIFJvYWQKLQkJCQlTdWl0ZSAxMDEgIzM4OAotCQkJCU9yZWdvbiBDaXR5IE9yZWdvbiA5NzA0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNzUgICAoaGV4KQkJUkYgU3lzdGVtcyBHbWJICi0wMDFDNzUgICAgIChiYXNlIDE2KQkJUkYgU3lzdGVtcyBHbWJICi0JCQkJRWluc3RlaW5zdHJh32UgMTEKLQkJCQlWaWVybmhlaW0gSGVzc2VuIEQgNjg1MTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLTc2ICAgKGhleCkJCVRoZSBXYW5kc3dvcnRoIEdyb3VwIEx0ZAotMDAxQzc2ICAgICAoYmFzZSAxNikJCVRoZSBXYW5kc3dvcnRoIEdyb3VwIEx0ZAotCQkJCUFsYmVydCBEcml2ZQotCQkJCVNoZWVyd2F0ZXIKLQkJCQlXb2tpbmcgU3VycmV5IEdVMjEgNVNFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtNzcgICAoaGV4KQkJUHJvZHlzCi0wMDFDNzcgICAgIChiYXNlIDE2KQkJUHJvZHlzCi0JCQkJQy9UcmlnbyA1NCBQb2wuIEluZC4gUG9sdm9yYW5jYQotCQkJCUxlZ2FuZXMgTUFEUklEIDI4OTE0Ci0JCQkJU1BBSU4KLQotMDAtMUMtNzggICAoaGV4KQkJV1lQTEFZIFNBUwotMDAxQzc4ICAgICAoYmFzZSAxNikJCVdZUExBWSBTQVMKLQkJCQkyMDAgYXZlbnVlIGRlIFByb3ZlbmNlCi0JCQkJQUxMQVVDSCBCZFIgMTMxOTAKLQkJCQlGUkFOQ0UKLQotMDAtMUMtNzkgICAoaGV4KQkJQ29oZXNpdmUgRmluYW5jaWFsIFRlY2hub2xvZ2llcyBMTEMKLTAwMUM3OSAgICAgKGJhc2UgMTYpCQlDb2hlc2l2ZSBGaW5hbmNpYWwgVGVjaG5vbG9naWVzIExMQwotCQkJCTIwMCBTb3V0aCBXYWNrZXIgRHIuCi0JCQkJU3VpdGUgMTUwMAotCQkJCUNoaWNhZ28gSUwgNjA2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTdBICAgKGhleCkJCVBlcmZlY3RvbmUgTmV0d2FyZSBDb21wYW55IEx0ZAotMDAxQzdBICAgICAoYmFzZSAxNikJCVBlcmZlY3RvbmUgTmV0d2FyZSBDb21wYW55IEx0ZAotCQkJCVVuaXQgODE1LCBTdW4gRnVuZyBDZW50cmUsCi0JCQkJS3dvayBTaHVpIFJkLAotCQkJCUt3YWkgQ2h1bmcgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xQy03QiAgIChoZXgpCQlDYXN0bGVuZXQgVGVjaG5vbG9neSBJbmMuCi0wMDFDN0IgICAgIChiYXNlIDE2KQkJQ2FzdGxlbmV0IFRlY2hub2xvZ3kgSW5jLgotCQkJCU5vLjY0LCBDaHVuZy1TaGFuIFJkLgotCQkJCVR1LUNoZW5nIENpdHkgVGFpcGVpIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtN0MgICAoaGV4KQkJUEVSUSBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDFDN0MgICAgIChiYXNlIDE2KQkJUEVSUSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMjYwMCBMSUJFUkVUWSBBVkVOVUUKLQkJCQlQLk8uIEJPWCAyNjAwCi0JCQkJUElUVFNCVVJHSCBQQSAxNTIzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtN0QgICAoaGV4KQkJRXhjZWxwb2ludCBNYW51ZmFjdHVyaW5nIFB0ZSBMdGQKLTAwMUM3RCAgICAgKGJhc2UgMTYpCQlFeGNlbHBvaW50IE1hbnVmYWN0dXJpbmcgUHRlIEx0ZAotCQkJCTE1LCBDaGFuZ2kgQnVzaW5lc3MgUGFyawotCQkJCUNlbnRyYWwgMSwgNXRoIExldmVsCi0JCQkJNDg2MDU3Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTFDLTdFICAgKGhleCkJCVRvc2hpYmEKLTAwMUM3RSAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LFN1ZWhpcm8tQ2hvCi0JCQkJT21lIFRva3lvIDE5ODg3MTAKLQkJCQlKQVBBTgotCi0wMC0xQy03RiAgIChoZXgpCQlDaGVjayBQb2ludCBTb2Z0d2FyZSBUZWNobm9sb2dpZXMKLTAwMUM3RiAgICAgKGJhc2UgMTYpCQlDaGVjayBQb2ludCBTb2Z0d2FyZSBUZWNobm9sb2dpZXMKLQkJCQkzQSBKYWJvdGluc2t5IFN0LgotCQkJCURpYW1vbmQgVG93ZXIKLQkJCQlSYW1hdCBHYW4gIDUyNTIwCi0JCQkJSVNSQUVMCi0KLTAwLTFDLTgwICAgKGhleCkJCU5ldyBCdXNpbmVzcyBEaXZpc2lvbi9SaGVhLUluZm9ybWF0aW9uIENPLiwgTFRELgotMDAxQzgwICAgICAoYmFzZSAxNikJCU5ldyBCdXNpbmVzcyBEaXZpc2lvbi9SaGVhLUluZm9ybWF0aW9uIENPLiwgTFRELgotCQkJCTRGIDU5NCBZZW9uZyBQdW5nIEJsZGcsIEd1ZXVpLURvbmcKLQkJCQlTZW91bCBHd2FuZ2ppbi1HdSAxNDMtMjAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTgxICAgKGhleCkJCU5leHRHZW4gVmVudHVyaSBMVEQKLTAwMUM4MSAgICAgKGJhc2UgMTYpCQlOZXh0R2VuIFZlbnR1cmkgTFRECi0JCQkJVGVjaG5pdW0gMgotCQkJCUtpbmdzIFJvYWQKLQkJCQlTd2Fuc2VhIFdlc3QgR2xhbW9yZ2FuIFNBMThQSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFDLTgyICAgKGhleCkJCUdlbmV3IFRlY2hub2xvZ2llcwotMDAxQzgyICAgICAoYmFzZSAxNikJCUdlbmV3IFRlY2hub2xvZ2llcwotCQkJCTNBMyBCdWlsZGluZyBCMSwgQ3liZXItdGVjaCBab25lLAotCQkJCUdhb3hpbiBBdmUuIDdTLCBIaS10ZWNoIEluZHVzdHJpYWwgUGFyaywKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUMtODMgICAoaGV4KQkJTmV3IExldmVsIFRlbGVjb20gQ28uLCBMdGQuCi0wMDFDODMgICAgIChiYXNlIDE2KQkJTmV3IExldmVsIFRlbGVjb20gQ28uLCBMdGQuCi0JCQkJSU5OT1BMRVggMS03MDMKLQkJCQkzNzEtNDcsICBHYXNhbi1Eb25nLCBHZXVtY2hlb24tR3UKLQkJCQlTZW91bCAgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy04NCAgIChoZXgpCQlTVEwgU29sdXRpb24gQ28uLEx0ZC4KLTAwMUM4NCAgICAgKGJhc2UgMTYpCQlTVEwgU29sdXRpb24gQ28uLEx0ZC4KLQkJCQkjNzEwLCBXb3JsZCBNZXJpZGlhbiBWZW50dXJlIENlbnRlciBJCi0JCQkJNjAtMjQsIEdhc2FuLWRvbmcsIEdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTI3ODEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtODUgICAoaGV4KQkJRXVuaWNvcm4KLTAwMUM4NSAgICAgKGJhc2UgMTYpCQlFdW5pY29ybgotCQkJCTIyNi0xNiB1bmJvIGIvZCBzdWNrY2hvbi1kb25nIHNvbmdwYS1ndQotCQkJCXNlb3VsICAxMzg4NDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtODYgICAoaGV4KQkJQ3Jhbml0ZSBTeXN0ZW1zLCBJbmMuCi0wMDFDODYgICAgIChiYXNlIDE2KQkJQ3Jhbml0ZSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTIxIEFsYnJpZ2h0IFdheQotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtODcgICAoaGV4KQkJVXJpdmVyIEluYy4KLTAwMUM4NyAgICAgKGJhc2UgMTYpCQlVcml2ZXIgSW5jLgotCQkJCTNyZC4sIEZsLiwgQm9nd2FuZyBCbGRnLiwgUG9pLWRvbmcsIDIzOC03IEdhbmduYW0tZ3UsCi0JCQkJU2VvdWwgIDEzNS05NjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtODggICAoaGV4KQkJVFJBTlNZU1RFTSBJTkMuCi0wMDFDODggICAgIChiYXNlIDE2KQkJVFJBTlNZU1RFTSBJTkMuCi0JCQkJTm8uIDEtMiwgTGktSHNpbiBSZCAxLCBTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtODkgICAoaGV4KQkJRm9yY2UgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMUM4OSAgICAgKGJhc2UgMTYpCQlGb3JjZSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCVBPIEJveCAyNTAyODYKLQkJCQlQbGFubyBUWCA3NTAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtOEEgICAoaGV4KQkJQ2lycmFzY2FsZSBDb3Jwb3JhdGlvbgotMDAxQzhBICAgICAoYmFzZSAxNikJCUNpcnJhc2NhbGUgQ29ycG9yYXRpb24KLQkJCQk5NDQ5IENhcnJvbGwgUGFyayBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtOEIgICAoaGV4KQkJTUogSW5ub3ZhdGlvbnMgTHRkLgotMDAxQzhCICAgICAoYmFzZSAxNikJCU1KIElubm92YXRpb25zIEx0ZC4KLQkJCQkzMzMgV3llY3JvZnQgUm9hZAotCQkJCVVuaXQgMwotCQkJCU9ha3ZpbGxlIE9udGFyaW8gTDZLIDJIMgotCQkJCUNBTkFEQQotCi0wMC0xQy04QyAgIChoZXgpCQlESUFMIFRFQ0hOT0xPR1kgTFRELgotMDAxQzhDICAgICAoYmFzZSAxNikJCURJQUwgVEVDSE5PTE9HWSBMVEQuCi0JCQkJNkYtNCwgTk8uMTgsIExBTkUuNjA5LCBTRUMuNSwgQ0hPTkdTSU4gUkQuLAotCQkJCVNBTkNIT05HIENJVFkgVEFJUEVJIENPVU5UWSAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLThEICAgKGhleCkJCU1lc2EgSW1hZ2luZwotMDAxQzhEICAgICAoYmFzZSAxNikJCU1lc2EgSW1hZ2luZwotCQkJCUJhZGVuZXJzdHJhc3NlIDU2OQotCQkJCVr8cmljaCBaSCA4MDQ4Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUMtOEUgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQgSVBECi0wMDFDOEUgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQgSVBECi0JCQkJNzAxIEUuIE1pZGRsZWZpZWxkIFJkLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLThGICAgKGhleCkJCUFkdmFuY2VkIEVsZWN0cm9uaWMgRGVzaWduLCBJbmMuCi0wMDFDOEYgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgRWxlY3Ryb25pYyBEZXNpZ24sIEluYy4KLQkJCQkzNDQgSm9obiBMIERpZXRzY2ggQmx2ZC4sIFVuaXQgIzIKLQkJCQlOb3J0aCBBdHRsZWJvcm8gTUEgMDI3NjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTkwICAgKGhleCkJCUVtcGFja2V0IENvcnBvcmF0aW9uCi0wMDFDOTAgICAgIChiYXNlIDE2KQkJRW1wYWNrZXQgQ29ycG9yYXRpb24KLQkJCQlPc2FraSBLSSBibGRnLgotCQkJCTEtMTktMTAgT3Nha2kKLQkJCQlTaGluYWdhd2EgVG9reW8gMTQxLTAwMzIKLQkJCQlKQVBBTgotCi0wMC0xQy05MSAgIChoZXgpCQlHZWZlbiBJbmMuCi0wMDFDOTEgICAgIChiYXNlIDE2KQkJR2VmZW4gSW5jLgotCQkJCTIwNjAwIE5vcmRob2ZmIFN0cmVldAotCQkJCUNoYXRzd29ydGggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTkyICAgKGhleCkJCVRlcnZlbGEKLTAwMUM5MiAgICAgKGJhc2UgMTYpCQlUZXJ2ZWxhCi0JCQkJNDMgTmFnb2cgUGFyawotCQkJCVN1aXRlIDIwMQotCQkJCUFjdG9uIE1BIDAxNzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy05MyAgIChoZXgpCQlFeGFEaWdtIEluYwotMDAxQzkzICAgICAoYmFzZSAxNikJCUV4YURpZ20gSW5jCi0JCQkJMjg3MSBQdWxsbWFuIFN0Ci0JCQkJU2FudGEgQW5hIENBIDkyNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy05NCAgIChoZXgpCQlMSS1DT1IgQmlvc2NpZW5jZXMKLTAwMUM5NCAgICAgKGJhc2UgMTYpCQlMSS1DT1IgQmlvc2NpZW5jZXMKLQkJCQk0NjQ3IFN1cGVyaW9yIFN0cmVldAotCQkJCUxpbmNvbG4gTkUgNjg1MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTk1ICAgKGhleCkJCU9wdGljb21tIENvcnBvcmF0aW9uCi0wMDFDOTUgICAgIChiYXNlIDE2KQkJT3B0aWNvbW0gQ29ycG9yYXRpb24KLQkJCQk2ODI3IE5hbmN5IFJpZGdlIERyCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy05NiAgIChoZXgpCQlMaW5rd2lzZSBUZWNobm9sb2d5IFB0ZSBMdGQKLTAwMUM5NiAgICAgKGJhc2UgMTYpCQlMaW5rd2lzZSBUZWNobm9sb2d5IFB0ZSBMdGQKLQkJCQlCbGsgMywgQW5nIE1vIEtpbyBJbmR1c3RyaWFsIFBhcmsgMkEKLQkJCQkjMDYtMDMuIEFNSyBUZWNoIEkKLQkJCQk1NjgwNTAKLQkJCQlTSU5HQVBPUkUKLQotMDAtMUMtOTcgICAoaGV4KQkJRW56eXRlayBUZWNobm9sb2d5IEluYy4sCi0wMDFDOTcgICAgIChiYXNlIDE2KQkJRW56eXRlayBUZWNobm9sb2d5IEluYy4sCi0JCQkJN0YsIE5vLjM1LCBIc3VlaCBGdSBSZC4sCi0JCQkJSHNpbmNodSAgMzAwLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtOTggICAoaGV4KQkJTFVDS1kgVEVDSE5PTE9HWSAoSEspIENPTVBBTlkgTElNSVRFRAotMDAxQzk4ICAgICAoYmFzZSAxNikJCUxVQ0tZIFRFQ0hOT0xPR1kgKEhLKSBDT01QQU5ZIExJTUlURUQKLQkJCQlGTEFUL1JNIDE1MDMgMTUvRiBJU0xBTkQgQkVWRVJMRVkgTk8gMSBHUkVBVCBHRU9SR0UgU1RSRUVUIENBVVNFV0FZIEJBWQotCQkJCTk5OTA3NwotCQkJCUhPTkcgS09ORwotCi0wMC0xQy05OSAgIChoZXgpCQlTaHVucmEgU29mdHdhcmUgTHRkLgotMDAxQzk5ICAgICAoYmFzZSAxNikJCVNodW5yYSBTb2Z0d2FyZSBMdGQuCi0JCQkJMjAgSGF0YSdhcyBTdC4KLQkJCQlLZWZhci1TYWJhICA0NDQyNQotCQkJCUlTUkFFTAotCi0wMC0xQy05QSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQzlBICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQy05QiAgIChoZXgpCQlGRUlHIEVMRUNUUk9OSUMgR21iSAotMDAxQzlCICAgICAoYmFzZSAxNikJCUZFSUcgRUxFQ1RST05JQyBHbWJICi0JCQkJTGFuZ2UgU3RyYd9lIDQKLQkJCQlXZWlsYnVyZyBIZXNzZW4gMzU3ODEKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLTlDICAgKGhleCkJCU5vcnRlbAotMDAxQzlDICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xQy05RCAgIChoZXgpCQlMaWVjdGhpIEFHCi0wMDFDOUQgICAgIChiYXNlIDE2KQkJTGllY3RoaSBBRwotCQkJCTEwIFVudGVyaG9seiBTdHJlZXQKLQkJCQlLcmllZ3N0ZXR0ZW4gU29sb3RodXJuIDQ1NjYKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xQy05RSAgIChoZXgpCQlEdWFsdGVjaCBJVCBBQgotMDAxQzlFICAgICAoYmFzZSAxNikJCUR1YWx0ZWNoIElUIEFCCi0JCQkJQmFuZWhhZ3NnYXRhbiAxRgotCQkJCUdPVEhFTkJVUkcgVuRzdHJhIEf2dGFsYW5kIDQxNDUxCi0JCQkJU1dFREVOCi0KLTAwLTFDLTlGICAgKGhleCkJCVJhem9yc3RyZWFtLCBMTEMKLTAwMUM5RiAgICAgKGJhc2UgMTYpCQlSYXpvcnN0cmVhbSwgTExDCi0JCQkJMjM4MS1DIFJlbmFpc3NhbmNlIERyaXZlCi0JCQkJTGFzIFZlZ2FzIE5WIDg5MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1BMCAgIChoZXgpCQlQcm9kdWN0aW9uIFJlc291cmNlIEdyb3VwLCBMTEMKLTAwMUNBMCAgICAgKGJhc2UgMTYpCQlQcm9kdWN0aW9uIFJlc291cmNlIEdyb3VwLCBMTEMKLQkJCQk1MzkgVGVtcGxlIEhpbGwgUm9hZAotCQkJCU5ldyBXaW5kc29yIE5ZIDEyNTUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1BMSAgIChoZXgpCQlBS0FNQUkgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDFDQTEgICAgIChiYXNlIDE2KQkJQUtBTUFJIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTggQ0FNQlJJREdFIENFTlRFUgotCQkJCUNBTUJSSURHRSBNQSAwMjE0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQTIgICAoaGV4KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TCi0wMDFDQTIgICAgIChiYXNlIDE2KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TCi0JCQkJVklBTEUgU0FSQ0EgMjIyCi0JCQkJTUlMQU5PICAyMDEyNgotCQkJCUlUQUxZCi0KLTAwLTFDLUEzICAgKGhleCkJCVRlcnJhCi0wMDFDQTMgICAgIChiYXNlIDE2KQkJVGVycmEKLQkJCQlEcmF1Z3lzdGVzIHN0ci4gMjIKLQkJCQlLYXVuYXMgIExULTUxMjU2Ci0JCQkJTElUSFVBTklBCi0KLTAwLTFDLUE0ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDFDQTQgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa+VuZSAyMjE4OAotCQkJCVNXRURFTgotCi0wMC0xQy1BNSAgIChoZXgpCQlaeWdvIENvcnBvcmF0aW9uCi0wMDFDQTUgICAgIChiYXNlIDE2KQkJWnlnbyBDb3Jwb3JhdGlvbgotCQkJCTIxIExhdXJlbCBCcm9vayBSZC4KLQkJCQlNaWRkbGVmaWVsZCBDVCAwNjQ1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQTYgICAoaGV4KQkJV2luNE5FVAotMDAxQ0E2ICAgICAoYmFzZSAxNikJCVdpbjRORVQKLQkJCQkxMzAxIEtPTE9OIERpZ2l0YWwgVG93ZXIsCi0JCQkJMjIyLTcgS3Vyby1kb25nCi0JCQkJS3Vyby1ndSBTZW91bCAxNTItODQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLUE3ICAgKGhleCkJCUludGVybmF0aW9uYWwgUXVhcnR6IExpbWl0ZWQKLTAwMUNBNyAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIFF1YXJ0eiBMaW1pdGVkCi0JCQkJMm5kIEZsb29yLCAyLCBEYWkgV2FuZyBTdHJlZXQsCi0JCQkJVGFpIFBvIEluZHVzdHJpYWwgRXN0YXRlLCBUYWkgUG8sIE4uVC4KLQkJCQlIb25nIEtvbmcgODUyCi0JCQkJQ0hJTkEKLQotMDAtMUMtQTggICAoaGV4KQkJQWlyVGllcyBXaXJlbGVzcyBOZXR3b3JrcwotMDAxQ0E4ICAgICAoYmFzZSAxNikJCUFpclRpZXMgV2lyZWxlc3MgTmV0d29ya3MKLQkJCQlCdXl1a2RlcmUgQ2FkIE5vIDEwMyBLYXQgNQotCQkJCU1lY2lkaXlla295LCBJc3RhbmJ1bCAzNDQ2MAotCQkJCVRVUktFWQotCi0wMC0xQy1BOSAgIChoZXgpCQlBdWRpb21hdGljYSBTcmwKLTAwMUNBOSAgICAgKGJhc2UgMTYpCQlBdWRpb21hdGljYSBTcmwKLQkJCQlWaWEgTWFuZnJlZGkgMTIKLQkJCQlGbG9yZW5jZSBJdGFseSA1MDEzNgotCQkJCUlUQUxZCi0KLTAwLTFDLUFBICAgKGhleCkJCUJlbGxvbiBQdHkgTHRkCi0wMDFDQUEgICAgIChiYXNlIDE2KQkJQmVsbG9uIFB0eSBMdGQKLQkJCQlVbml0IDEyLzEyLTE4IFZpY3RvcmlhIFN0IEVhc3QKLQkJCQlMaWRjb21iZSBOU1cgMjAwMAotCQkJCUFVU1RSQUxJQQotCi0wMC0xQy1BQiAgIChoZXgpCQlNZXllciBTb3VuZCBMYWJvcmF0b3JpZXMsIEluYy4KLTAwMUNBQiAgICAgKGJhc2UgMTYpCQlNZXllciBTb3VuZCBMYWJvcmF0b3JpZXMsIEluYy4KLQkJCQkyODMyIFNhbiBQYWJsbyBBdmUuCi0JCQkJQmVya2VsZXkgQ0EgOTQ3MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUFDICAgKGhleCkJCVFuaXEgVGVjaG5vbG9neSBDb3JwLgotMDAxQ0FDICAgICAoYmFzZSAxNikJCVFuaXEgVGVjaG5vbG9neSBDb3JwLgotCQkJCTVGLCBOby4xMzMsIFNlYy40LCBNaW5zaGVuZyBFLiBSZC4sCi0JCQkJU29uZ3NoYW4gRGlzdHJpY3QsCi0JCQkJVGFpcGVpICAxMDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLUFEICAgKGhleCkJCVd1aGFuIFRlbGVjb21tdW5pY2F0aW9uIERldmljZXMgQ28uLEx0ZAotMDAxQ0FEICAgICAoYmFzZSAxNikJCVd1aGFuIFRlbGVjb21tdW5pY2F0aW9uIERldmljZXMgQ28uLEx0ZAotCQkJCTg4IFlvdWtleXVhbiBSb2FkLEhvbmdzaGFuIERpc3RyaWN0Ci0JCQkJV3VoYW4gSHViZWkgNDMwMDc0Ci0JCQkJQ0hJTkEKLQotMDAtMUMtQUUgICAoaGV4KQkJV2lDaG9ydXMsIEluYy4KLTAwMUNBRSAgICAgKGJhc2UgMTYpCQlXaUNob3J1cywgSW5jLgotCQkJCTM1OTAgTiAxc3QgU3RyZWV0LCBTdWl0ZSAzMDAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQUYgICAoaGV4KQkJUGxhdG8gTmV0d29ya3MgSW5jLgotMDAxQ0FGICAgICAoYmFzZSAxNikJCVBsYXRvIE5ldHdvcmtzIEluYy4KLQkJCQkyODU1IEtpZmVyIFJvYWQKLQkJCQlTdWl0ZSAyMDQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQjAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQ0IwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUIxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUNCMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CMiAgIChoZXgpCQlCUFQgU1BBCi0wMDFDQjIgICAgIChiYXNlIDE2KQkJQlBUIFNQQQotCQkJCVZpYSBTdGF6aW9uZSw0OAotCQkJCVNlc3RvIGFsIFJlZ2hlbmEgUG9yZGVub25lIDMzMDc5Ci0JCQkJSVRBTFkKLQotMDAtMUMtQjMgICAoaGV4KQkJQVBQTEUsIElOQwotMDAxQ0IzICAgICAoYmFzZSAxNikJCUFQUExFLCBJTkMKLQkJCQkxIElORklOSVRFIExPT1AKLQkJCQlDVVBFUlRJTk8gQ0FMSUZPUk5JQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQjQgICAoaGV4KQkJSXJpZGl1bSBTYXRlbGxpdGUgTExDCi0wMDFDQjQgICAgIChiYXNlIDE2KQkJSXJpZGl1bSBTYXRlbGxpdGUgTExDCi0JCQkJODQ0MCBTLiBSaXZlciBQYXJrd2F5Ci0JCQkJVGVtcGUgQVogODUyODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUI1ICAgKGhleCkJCU5laWh1YSBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLExURC4oTkhOKQotMDAxQ0I1ICAgICAoYmFzZSAxNikJCU5laWh1YSBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLExURC4oTkhOKQotCQkJCVBsb3QgWGlubWVpIFJvYWQgMTAyLVEsTmV3IERpc3RyaWN0Ci0JCQkJV3VYaSBKaWFuZ3N1IDIxNDAyOAotCQkJCUNISU5BCi0KLTAwLTFDLUI2ICAgKGhleCkJCUR1em9uIENOVCBDby4sIEx0ZC4KLTAwMUNCNiAgICAgKGJhc2UgMTYpCQlEdXpvbiBDTlQgQ28uLCBMdGQuCi0JCQkJMTR0aCBGbG9vciwgSVJFIGJ1aWxkaW5nIDIKLQkJCQlZYW5ncHl1bmctZG9uZyA0Z2EsIFlvdW5nZHVuZ3BvLWd1Ci0JCQkJU2VvdWwgIDE1MC05NjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtQjcgICAoaGV4KQkJVVNDIERpZ2lBcmsgQ29ycG9yYXRpb24KLTAwMUNCNyAgICAgKGJhc2UgMTYpCQlVU0MgRGlnaUFyayBDb3Jwb3JhdGlvbgotCQkJCTZGIFRlbm5veiBDZW50cmFsIFRvd2VyIDItMi0yNCBIaWdhc2hpc2hpbmFnYXdhCi0JCQkJVG9reW8gU2hpbmFnYXdhLWt1IDE0MC0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMUMtQjggICAoaGV4KQkJQ0JDIENvLiwgTHRkCi0wMDFDQjggICAgIChiYXNlIDE2KQkJQ0JDIENvLiwgTHRkCi0JCQkJMi0xNS0xMywgVHN1a2lzaGltYSwgQ2h1by1rdQotCQkJCVRva3lvICAxMDQtMDA1MgotCQkJCUpBUEFOCi0KLTAwLTFDLUI5ICAgKGhleCkJCUtXQU5HIFNVTkcgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDFDQjkgICAgIChiYXNlIDE2KQkJS1dBTkcgU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQkyMDEsIFdPUkxEIFZFTlRVUkUgVE9XTiA2MC0yNCwgR0FTQU4tRE9ORyBHRVVNQ0hVTi1HVSwKLQkJCQlTRU9VTCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy1CQSAgIChoZXgpCQlWZXJTY2llbnQsIEluYy4KLTAwMUNCQSAgICAgKGJhc2UgMTYpCQlWZXJTY2llbnQsIEluYy4KLQkJCQk3NzAwIEVxdWl0YWJsZSBEcml2ZQotCQkJCVN1aXRlIDEwMAotCQkJCUVkZW4gUHJhaXJpZSBNTiA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQkIgICAoaGV4KQkJTXVzaWNpYW5MaW5rCi0wMDFDQkIgICAgIChiYXNlIDE2KQkJTXVzaWNpYW5MaW5rCi0JCQkJMjQwMSBDb3J5IEF2ZS4KLQkJCQlTYW4gSm9zZSBDQSA5NTEyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQkMgICAoaGV4KQkJQ2FzdEdyYWJiZXIsIExMQwotMDAxQ0JDICAgICAoYmFzZSAxNikJCUNhc3RHcmFiYmVyLCBMTEMKLQkJCQk2NTA3IFdpbGtpbnMgQXZlbnVlCi0JCQkJUGl0dHNidXJnaCBQQSAxNTIxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQkQgICAoaGV4KQkJRXp6ZSBNb2JpbGUgVGVjaC4sIEluYy4KLTAwMUNCRCAgICAgKGJhc2UgMTYpCQlFenplIE1vYmlsZSBUZWNoLiwgSW5jLgotCQkJCTNGLCBCdWJtdXNhIEJsZGcuLCAxNTEtMzEKLQkJCQlOb25oeXVuLWRvbmcsIEthbmduYW0ta3UKLQkJCQlTZW91bCAxMzUtODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLUJFICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAxQ0JFICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUMtQkYgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFDQkYgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xQy1DMCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMUNDMCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFDLUMxICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxQ0MxICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQzIgICAoaGV4KQkJUGFydCBJSSBSZXNlYXJjaCwgSW5jLgotMDAxQ0MyICAgICAoYmFzZSAxNikJCVBhcnQgSUkgUmVzZWFyY2gsIEluYy4KLQkJCQk0NjAxIEUuIEFpcnBvcnQgRHIuCi0JCQkJT250YXJpbyBDQSA5MTc2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQzMgICAoaGV4KQkJUGFjZSBwbGMKLTAwMUNDMyAgICAgKGJhc2UgMTYpCQlQYWNlIHBsYwotCQkJCVNhbHRzIE1pbGwKLQkJCQlWaWN0b3JpYSBSb2FkCi0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQxOCAzTEYKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQy1DNCAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMUNDNCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCW1zMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQzUgICAoaGV4KQkJM0NPTSBMVEQKLTAwMUNDNSAgICAgKGJhc2UgMTYpCQkzQ09NIExURAotCQkJCTNDb20gRXVyb3BlIEx0ZCwgUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQy1DNiAgIChoZXgpCQlQcm9TdG9yIFN5c3RlbXMKLTAwMUNDNiAgICAgKGJhc2UgMTYpCQlQcm9TdG9yIFN5c3RlbXMKLQkJCQk1NTU1IENlbnRyYWwgQXZlbnVlCi0JCQkJU3VpdGUgMTAwCi0JCQkJQm91bGRlciBDb2xvcmFkbyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQzcgICAoaGV4KQkJUmVtYnJhbmR0IFRlY2hub2xvZ2llcywgTExDIGQvYi9hIFJFTVNUUkVBTQotMDAxQ0M3ICAgICAoYmFzZSAxNikJCVJlbWJyYW5kdCBUZWNobm9sb2dpZXMsIExMQyBkL2IvYSBSRU1TVFJFQU0KLQkJCQkxNDAgU291dGggQmV2ZXJseSBEcml2ZQotCQkJCVN1aXRlIDIwMwotCQkJCUJldmVybHkgSGlsbHMgQ0EgOTAyMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUM4ICAgKGhleCkJCUlORFVTVFJPTklDIEluZHVzdHJpZS1FbGVjdHJvbmljIEdtYkggJiBDby4gS0cKLTAwMUNDOCAgICAgKGJhc2UgMTYpCQlJTkRVU1RST05JQyBJbmR1c3RyaWUtRWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0JCQkJQ2FybC1KYWNvYi1Lb2xiLVdlZyAxCi0JCQkJV2VydGhlaW0gQmFkZW4tV3VlcnR0ZW1iZXJnIDk3ODc3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQy1DOSAgIChoZXgpCQlLYWlzZSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFDQzkgICAgIChiYXNlIDE2KQkJS2Fpc2UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLjY3OCwgV3Vuc3l1ZSBSZC4sIFp1b3lpbmcgRGlzdHJpY3QsCi0JCQkJS2FvaHNpdW5nICA4MTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLUNBICAgKGhleCkJCVNoYW5naGFpIEdhb3poaSBTY2llbmNlICYgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDby4KLTAwMUNDQSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBHYW96aGkgU2NpZW5jZSAmIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uCi0JCQkJTm8uMjgzIFFpbiBKaWFuZyBSZC4gU2hhbmdoYWksQ2hpbmEKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMUMtQ0IgICAoaGV4KQkJRm9ydGggQ29ycG9yYXRpb24gUHVibGljIENvbXBhbnkgTGltaXRlZAotMDAxQ0NCICAgICAoYmFzZSAxNikJCUZvcnRoIENvcnBvcmF0aW9uIFB1YmxpYyBDb21wYW55IExpbWl0ZWQKLQkJCQkyMjYvMTIsMTMsMTYgUGFob2x5b3RoaW4gUm9hZAotCQkJCVNhbXNlbm5haSwgUGF5YXRoYWkKLQkJCQlCYW5na29rICAxMDQwMAotCQkJCVRIQUlMQU5ECi0KLTAwLTFDLUNDICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkCi0wMDFDQ0MgICAgIChiYXNlIDE2KQkJUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQKLQkJCQkzMDUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMDAtMUMtQ0QgICAoaGV4KQkJQWxla3Ryb25hIENvcnBvcmF0aW9uCi0wMDFDQ0QgICAgIChiYXNlIDE2KQkJQWxla3Ryb25hIENvcnBvcmF0aW9uCi0JCQkJOTUgSGF0aGF3YXkgU3RyZWV0LCBTdWl0ZSAxMAotCQkJCVByb3ZpZGVuY2UgUkkgMDI5MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUNFICAgKGhleCkJCUJ5IFRlY2hkZXNpZ24KLTAwMUNDRSAgICAgKGJhc2UgMTYpCQlCeSBUZWNoZGVzaWduCi0JCQkJQy8gTWFycXVlcyBkZSBBaHVtYWRhIDExCi0JCQkJTWFkcmlkICAyODAyOAotCQkJCVNQQUlOCi0KLTAwLTFDLUNGICAgKGhleCkJCUxJTUVURUsKLTAwMUNDRiAgICAgKGJhc2UgMTYpCQlMSU1FVEVLCi0JCQkJIzIxMy0xLCBCeXVja3NhbiBEaWdpdGFsIFZhbGxleSBJSSwgNDgwLTEwLCBHYXNhbi1kb25nLAotCQkJCUdldW1jaGVuLWd1Ci0JCQkJU2VvdWwgIDE1My03ODMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtRDAgICAoaGV4KQkJQ2lyY2xlb25lIENvLixMdGQuCi0wMDFDRDAgICAgIChiYXNlIDE2KQkJQ2lyY2xlb25lIENvLixMdGQuCi0JCQkJODYwLTEsTm9kYQotCQkJCUJlcHB1LXNoaSBPb2l0YS1rZW4gODc0LTAwMTYKLQkJCQlKQVBBTgotCi0wMC0xQy1EMSAgIChoZXgpCQlXYXZlcyBBdWRpbyBMVEQKLTAwMUNEMSAgICAgKGJhc2UgMTYpCQlXYXZlcyBBdWRpbyBMVEQKLQkJCQlBenJpbGVpIENlbnRlciAzLCBUcmlhbmdsZSB0b3dlcgotCQkJCTMybmQgZmxvb3IKLQkJCQlUZWwgQXZpdiBDZW50cmFsIDY3MDIzCi0JCQkJSVNSQUVMCi0KLTAwLTFDLUQyICAgKGhleCkJCUtpbmcgQ2hhbXBpb24gKEhvbmcgS29uZykgTGltaXRlZAotMDAxQ0QyICAgICAoYmFzZSAxNikJCUtpbmcgQ2hhbXBpb24gKEhvbmcgS29uZykgTGltaXRlZAotCQkJCVVuaXQgMTUyMCwgMTUvRiwgUGhhc2UgMSwgTWV0cm8gQ2VudHJlLAotCQkJCTMyIExhbSBIaW5nIFN0cmVldCwgS293bG9vbiBCYXksCi0JCQkJS293bG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFDLUQzICAgKGhleCkJCVpQIEVuZ2luZWVyaW5nIFNFTAotMDAxQ0QzICAgICAoYmFzZSAxNikJCVpQIEVuZ2luZWVyaW5nIFNFTAotCQkJCXZpYSBBcmRpdG8gRGVzaW8sIDYwCi0JCQkJVGVjbm9wb2xvIFRpYnVydGlubwotCQkJCVJPTUUgIDAwMTMxCi0JCQkJSVRBTFkKLQotMDAtMUMtRDQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUNENCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUMtRDUgICAoaGV4KQkJWmVlVmVlLCBJbmMuCi0wMDFDRDUgICAgIChiYXNlIDE2KQkJWmVlVmVlLCBJbmMuCi0JCQkJMSBNb25hcmNoIERyaXZlCi0JCQkJU3VpdGUgMjAwCi0JCQkJTGl0dGxldG9uIE1BIDAxNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1ENiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQ0Q2ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQy1ENyAgIChoZXgpCQlIYXJtYW4vQmVja2VyIEF1dG9tb3RpdmUgU3lzdGVtcyBHbWJICi0wMDFDRDcgICAgIChiYXNlIDE2KQkJSGFybWFuL0JlY2tlciBBdXRvbW90aXZlIFN5c3RlbXMgR21iSAotCQkJCUJlY2tlci1H9nJpbmctU3RyLiAxNgotCQkJCUthcmxzYmFkIEJhZGVuIC0gV/xydHRlbWJlcmcgNzYzMDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLUQ4ICAgKGhleCkJCUJsdWVBbnQgV2lyZWxlc3MKLTAwMUNEOCAgICAgKGJhc2UgMTYpCQlCbHVlQW50IFdpcmVsZXNzCi0JCQkJMjQ1IFN0LktpbGRhIFJkLCBTdCBLaWxkYQotCQkJCU1lbGJvdXJuZSBWaWN0b3JpYSAzMTgyCi0JCQkJQVVTVFJBTElBCi0KLTAwLTFDLUQ5ICAgKGhleCkJCUdsb2JhbFRvcCBUZWNobm9sb2d5IEluYy4KLTAwMUNEOSAgICAgKGJhc2UgMTYpCQlHbG9iYWxUb3AgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTYgTmFuLWtlIDl0aCBSZC4gU2NpZW5jZS1iYXNlIEluZHVzdHJpYWwgUGFyaywKLQkJCQlTaGFuSHVhIFRhaW5hbiBjb3VudHkgNzQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy1EQSAgIChoZXgpCQlFeGVnaW4gVGVjaG5vbG9naWVzIExpbWl0ZWQKLTAwMUNEQSAgICAgKGJhc2UgMTYpCQlFeGVnaW4gVGVjaG5vbG9naWVzIExpbWl0ZWQKLQkJCQkyMDQgLSAyMDcxIEtpbmdzd2F5IEF2ZW51ZQotCQkJCVBvcnQgQ29xdWl0bGFtIEJDIFYzQyA2TjIKLQkJCQlDQU5BREEKLQotMDAtMUMtREIgICAoaGV4KQkJQ0FSUE9JTlQgQ08uLExURAotMDAxQ0RCICAgICAoYmFzZSAxNikJCUNBUlBPSU5UIENPLixMVEQKLQkJCQkxMzQwLTYsIE5hbWdhbmcgQmxkIDdGLCBTZW9jaG8tRG9uZwotCQkJCVNlb2Noby1LdSwKLQkJCQlTRU9VTCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy1EQyAgIChoZXgpCQlDdXN0b20gQ29tcHV0ZXIgU2VydmljZXMsIEluYy4KLTAwMUNEQyAgICAgKGJhc2UgMTYpCQlDdXN0b20gQ29tcHV0ZXIgU2VydmljZXMsIEluYy4KLQkJCQkxMDIwIFNwcmluZyBDaXR5IERyaXZlCi0JCQkJV2F1a2VzaGEgV0kgNTMxODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUREICAgKGhleCkJCUNPV0JFTEwgRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi0wMDFDREQgICAgIChiYXNlIDE2KQkJQ09XQkVMTCBFTkdJTkVFUklORyBDTy4sIExURC4KLQkJCQkxNzM5LTEgTmFnYXRvcm8KLQkJCQlTQUtVIE5hZ2FubyAzODUtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTFDLURFICAgKGhleCkJCUludGVyYWN0aXZlIE11bHRpbWVkaWEgZVhjaGFuZ2UgSW5jLgotMDAxQ0RFICAgICAoYmFzZSAxNikJCUludGVyYWN0aXZlIE11bHRpbWVkaWEgZVhjaGFuZ2UgSW5jLgotCQkJCU5PLiAxNjUgV2VubGluIFJvYWQuCi0JCQkJVGFpcGVpIFRhaXdhbiAxMTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLURGICAgKGhleCkJCUJlbGtpbiBJbnRlcm5hdGlvbmFsIEluYy4KLTAwMUNERiAgICAgKGJhc2UgMTYpCQlCZWxraW4gSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJNTAxIFcuIFdhbG51dCBTdC4KLQkJCQlDb21wdG9uIENhIDkwMjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1FMCAgIChoZXgpCQlEQVNBTiBUUFMKLTAwMUNFMCAgICAgKGJhc2UgMTYpCQlEQVNBTiBUUFMKLQkJCQlIVU1BWCBWaWxsYWdlIDZGLCAxMS00IFN1bmFlLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLUUxICAgKGhleCkJCUlORFJBIFNJU1RFTUFTLCBTLkEuCi0wMDFDRTEgICAgIChiYXNlIDE2KQkJSU5EUkEgU0lTVEVNQVMsIFMuQS4KLQkJCQlDdHJhLiBkZSBMb2VjaGVzLCBuLrogOQotCQkJCVRPUlJFStNOIERFIEFSRE9aIE1BRFJJRCAyODg1MAotCQkJCVNQQUlOCi0KLTAwLTFDLUUyICAgKGhleCkJCUF0dGVybyBUZWNoLCBMTEMuCi0wMDFDRTIgICAgIChiYXNlIDE2KQkJQXR0ZXJvIFRlY2gsIExMQy4KLQkJCQkxMzE1IERpcmVjdG9ycyBSb3cgLSBTdWl0ZSAxMDcKLQkJCQlGb3J0IFdheW5lIEluZGlhbmEgNDY4MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUUzICAgKGhleCkJCU9wdGltZWRpY2FsIFN5c3RlbXMKLTAwMUNFMyAgICAgKGJhc2UgMTYpCQlPcHRpbWVkaWNhbCBTeXN0ZW1zCi0JCQkJMjM1IEhlbWJyZWUgUGFyayBEcml2ZQotCQkJCVJvc3dlbGwgR0EgMzAwNzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUU0ICAgKGhleCkJCUVsZVN5IEpTQwotMDAxQ0U0ICAgICAoYmFzZSAxNikJCUVsZVN5IEpTQwotCQkJCUFsdGF5c2theWEgc3RyZWV0LCAxNjFhCi0JCQkJVG9tc2sgb2JsYXN0IDYzNDAyMQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xQy1FNSAgIChoZXgpCQlNQlMgRWxlY3Ryb25pYyBTeXN0ZW1zIEdtYkgKLTAwMUNFNSAgICAgKGJhc2UgMTYpCQlNQlMgRWxlY3Ryb25pYyBTeXN0ZW1zIEdtYkgKLQkJCQlSaW5nc3RyYXNzZSAzCi0JCQkJODIzMTkgU3Rhcm5iZXJnIEJhdmFyaWEgODIzMTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLUU2ICAgKGhleCkJCUlOTkVTCi0wMDFDRTYgICAgIChiYXNlIDE2KQkJSU5ORVMKLQkJCQk4MCBhdmVudWUgZGVzIEJ1dHRlcyBkZSBDb+tzbWVzCi0JCQkJUkVOTkVTICAzNTcwMAotCQkJCUZSQU5DRQotCi0wMC0xQy1FNyAgIChoZXgpCQlSb2NvbiBQTEMgUmVzZWFyY2ggQ2VudHJlCi0wMDFDRTcgICAgIChiYXNlIDE2KQkJUm9jb24gUExDIFJlc2VhcmNoIENlbnRyZQotCQkJCTIxIFZlayA1NkEgc3RyLgotCQkJCVNvZmlhICAxNzAwCi0JCQkJQlVMR0FSSUEKLQotMDAtMUMtRTggICAoaGV4KQkJQ3VtbWlucyBJbmMKLTAwMUNFOCAgICAgKGJhc2UgMTYpCQlDdW1taW5zIEluYwotCQkJCTE0MDAgNzNyZCBBdmUgTkUKLQkJCQlGcmlkbGV5IE1OIDU1NDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1FOSAgIChoZXgpCQlHYWxheHkgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDFDRTkgICAgIChiYXNlIDE2KQkJR2FsYXh5IFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCTkvRiBXaW4gRnVsbCBDb21tZXJpY2FsIEJ1aWxkaW5nLCAxNzItMTc2IFdpbmcgTG9rIFN0cmVldCwKLQkJCQlTaGV1bmcgV2FuLCAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFDLUVBICAgKGhleCkJCVNjaWVudGlmaWMtQXRsYW50YSwgSW5jCi0wMDFDRUEgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYy1BdGxhbnRhLCBJbmMKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJQVRMIDIuVC42MDMKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1FQiAgIChoZXgpCQlOb3J0ZWwKLTAwMUNFQiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUMtRUMgICAoaGV4KQkJTW9iaWxlc29mdCAoQXVzdC4pIFB0eSBMdGQKLTAwMUNFQyAgICAgKGJhc2UgMTYpCQlNb2JpbGVzb2Z0IChBdXN0LikgUHR5IEx0ZAotCQkJCVN1aXRlIDIsIDI3LTM1IEdyb3N2ZW5vciBTdHJlZXQKLQkJCQlOZXV0cmFsIEJheQotCQkJCVN5ZG5leSBOU1cgMjA4OQotCQkJCUFVU1RSQUxJQQotCi0wMC0xQy1FRCAgIChoZXgpCQlFTlZJUk9OTkVNRU5UIFNBCi0wMDFDRUQgICAgIChiYXNlIDE2KQkJRU5WSVJPTk5FTUVOVCBTQQotCQkJCTExMSBiZC4gUm9iZXNwaWVycmUKLQkJCQlQT0lTU1kgWXZlbGluZXMgNzgzMDAKLQkJCQlGUkFOQ0UKLQotMDAtMUMtRUUgICAoaGV4KQkJU0hBUlAgQ29ycG9yYXRpb24KLTAwMUNFRSAgICAgKGJhc2UgMTYpCQlTSEFSUCBDb3Jwb3JhdGlvbgotCQkJCTIyLTIyLE5hZ2Fpa2UtY2hvLEFiZW5vLWt1Ci0JCQkJT3Nha2EgIDU0NS04NTIyCi0JCQkJSkFQQU4KLQotMDAtMUMtRUYgICAoaGV4KQkJUHJpbWF4IEVsZWN0cm9uaWNzIExURAotMDAxQ0VGICAgICAoYmFzZSAxNikJCVByaW1heCBFbGVjdHJvbmljcyBMVEQKLQkJCQk2NjksIFJ1ZXkgS3VhbmcgUm9hZCwgTmVpaHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtRjAgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDFDRjAgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTk8uMjg5LCBTaW5odSAzcmQgUmQuLAotCQkJCU5laWh1IERpc3RyaWN0LCBUYWlwZWkgQ2l0eSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLUYxICAgKGhleCkJCVNVUG9YIFRlY2hub2xvZ3kgQ28uICwgTFRELgotMDAxQ0YxICAgICAoYmFzZSAxNikJCVNVUG9YIFRlY2hub2xvZ3kgQ28uICwgTFRELgotCQkJCTdGLCA0MTkgLCBDaHVuZyBTYW4gUmQuICwgU2VjIDIKLQkJCQlDaHVuZyBIbyBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy1GMiAgIChoZXgpCQlUZW5sb24gVGVjaG5vbG9neSBDby4sTHRkLgotMDAxQ0YyICAgICAoYmFzZSAxNikJCVRlbmxvbiBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJNC9GLixTaGVuaHVhIEJsZGcsTm8uMzE1NSxCaW5oZSBSb2FkLEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMzMKLQkJCQlDSElOQQotCi0wMC0xQy1GMyAgIChoZXgpCQlFVlMgQlJPQURDQVNUIEVRVUlQTUVOVAotMDAxQ0YzICAgICAoYmFzZSAxNikJCUVWUyBCUk9BRENBU1QgRVFVSVBNRU5UCi0JCQkJTGllZ2UgU2NpZW5jZSBQYXJrCi0JCQkJcnVlIEJvaXMgU3QgSmVhbiAxNgotCQkJCU91Z3JlZSBMaWVnZSA0MTAyCi0JCQkJQkVMR0lVTQotCi0wMC0xQy1GNCAgIChoZXgpCQlNZWRpYSBUZWNobm9sb2d5IFN5c3RlbXMgSW5jCi0wMDFDRjQgICAgIChiYXNlIDE2KQkJTWVkaWEgVGVjaG5vbG9neSBTeXN0ZW1zIEluYwotCQkJCTc2NiBMYWtlZmllbGQgUm9hZAotCQkJCVVuaXQgRgotCQkJCVdlc3RsYWtlIFZpbGxhZ2UgQ0EgOTEzNzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUY1ICAgKGhleCkJCVdpc2VibHVlIFRlY2hub2xvZ3kgTGltaXRlZAotMDAxQ0Y1ICAgICAoYmFzZSAxNikJCVdpc2VibHVlIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJtIEc1LCA1L0YsIEtpbmdzZm9yZCBJbmR1c3RyaWFsIEJ1aWxkaW5nIFBoYXNlIElJLCAyNi0zMiBLd2FpIEhlaSBTdHJlZXQsCi0JCQkJS3dhaSBDaHVuZyBOLlQuIAotCQkJCUhPTkcgS09ORwotCi0wMC0xQy1GNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFDRjYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRjcgICAoaGV4KQkJQXVkaW9TY2llbmNlCi0wMDFDRjcgICAgIChiYXNlIDE2KQkJQXVkaW9TY2llbmNlCi0JCQkJNzI5IHdlc3QgMTZ0aCBzdAotCQkJCVN1aXRlIEMyCi0JCQkJQ29zdGEgTWVzYSBDYWxpZm9ybmlhIDkyNjI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1GOCAgIChoZXgpCQlQYXJhZGUgVGVjaG5vbG9naWVzLCBMdGQuCi0wMDFDRjggICAgIChiYXNlIDE2KQkJUGFyYWRlIFRlY2hub2xvZ2llcywgTHRkLgotCQkJCUMvTyBQYXJhZGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNTMwIExha2VzaWRlIERyLiBTdWl0ZSAyMzAKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUY5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUNGOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1GQSAgIChoZXgpCQlBbGFybS5jb20KLTAwMUNGQSAgICAgKGJhc2UgMTYpCQlBbGFybS5jb20KLQkJCQk4MTUwIExlZXNidXJnIFBpa2UKLQkJCQlTdWl0ZSAxNDAwCi0JCQkJVmllbm5hIFZBIDIyMTgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1GQiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxQ0ZCICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRkMgICAoaGV4KQkJU3VtaW5ldCBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyAoU2hhbmdoYWkpIENvLiwgTHRkLgotMDAxQ0ZDICAgICAoYmFzZSAxNikJCVN1bWluZXQgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgKFNoYW5naGFpKSBDby4sIEx0ZC4KLQkJCQk0RiwgM0JsZC4gNjQ3IExvbmcsIFNvbmdUYW8gUm9hZCwgWmhhbmdKaWFuZyBIaS1UZWNoIFBhcmsKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMDAtMUMtRkQgICAoaGV4KQkJVW5pdmVyc2FsIEVsZWN0cm9uaWNzCi0wMDFDRkQgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEVsZWN0cm9uaWNzCi0JCQkJNjEwMSBHYXRld2F5IERyaXZlCi0JCQkJQ3lwcmVzcyBDYWxpZm9ybmlhIDkwNjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1GRSAgIChoZXgpCQlRdWFydGljcyBJbmMKLTAwMUNGRSAgICAgKGJhc2UgMTYpCQlRdWFydGljcyBJbmMKLQkJCQkxNTI0MSBMYWd1bmEgQ2FueW9uIFJvYWQKLQkJCQlTdGUgMjAwCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1GRiAgIChoZXgpCQlOYXBlcmEgTmV0d29ya3MgSW5jCi0wMDFDRkYgICAgIChiYXNlIDE2KQkJTmFwZXJhIE5ldHdvcmtzIEluYwotCQkJCTc2ODMgU0UgMjd0aAotCQkJCVN1aXRlIDEyMAotCQkJCU1lcmNlciBJc2xhbmQgV0EgOTgwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTAwICAgKGhleCkJCUJyaXZvIFN5c3RlbXMsIExMQwotMDAxRDAwICAgICAoYmFzZSAxNikJCUJyaXZvIFN5c3RlbXMsIExMQwotCQkJCTQzMzAgRWFzdCBXZXN0IEhpZ2h3YXkKLQkJCQlTdWl0ZSAyNTAKLQkJCQlCZXRoZXNkYSBNRCAyMDgxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMDEgICAoaGV4KQkJTmVwdHVuZSBEaWdpdGFsCi0wMDFEMDEgICAgIChiYXNlIDE2KQkJTmVwdHVuZSBEaWdpdGFsCi0JCQkJTWVkbmFyb2RuaSBtZWpuaSBwcmVob2QgNgotCQkJCVZydG9qYmEgTm92YSBHb3JpY2EgNTI5MAotCQkJCVNMT1ZFTklBCi0KLTAwLTFELTAyICAgKGhleCkJCUN5YmVydGVjaCBUZWxlY29tIERldmVsb3BtZW50Ci0wMDFEMDIgICAgIChiYXNlIDE2KQkJQ3liZXJ0ZWNoIFRlbGVjb20gRGV2ZWxvcG1lbnQKLQkJCQlIYXplbmtvb2cgMjUKLQkJCQlBbGttYWFyIE5vb3JkIEhvbGxhbmQgMTgyMiBCUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFELTAzICAgKGhleCkJCURlc2lnbiBTb2x1dGlvbnMgSW5jLgotMDAxRDAzICAgICAoYmFzZSAxNikJCURlc2lnbiBTb2x1dGlvbnMgSW5jLgotCQkJCTgxIERhdmlkIExvdmUgUGxhY2UKLQkJCQlHb2xldGEgQ2EgOTMxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTA0ICAgKGhleCkJCVppcGl0IFdpcmVsZXNzLCBJbmMuCi0wMDFEMDQgICAgIChiYXNlIDE2KQkJWmlwaXQgV2lyZWxlc3MsIEluYy4KLQkJCQk0OSBTYWx0ZXJzIFJvYWQuCi0JCQkJU3VpdGUgNgotCQkJCUdyZWVudmlsbGUgU0MgMjk2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTA1ICAgKGhleCkJCWlMaWdodAotMDAxRDA1ICAgICAoYmFzZSAxNikJCWlMaWdodAotCQkJCVVuaXQgNCBFbnRlcnByaXNlIENlbnRyZQotCQkJCVJvZ3VlcyBIaWxsCi0JCQkJUGVuc2h1cnN0IEtlbnQgVE4xMSA4QkcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRC0wNiAgIChoZXgpCQlITSBFbGVjdHJvbmljcywgSW5jLgotMDAxRDA2ICAgICAoYmFzZSAxNikJCUhNIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMTQxMTAgU3Rvd2UgRHJpdmUKLQkJCQlQb3dheSBDQSA5MjA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMDcgICAoaGV4KQkJU2hlbnpoZW4gU2FuZyBGZWkgQ29uc3VtZXIgQ29tbXVuaWNhdGlvbnMgQ28uLEx0ZAotMDAxRDA3ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFNhbmcgRmVpIENvbnN1bWVyIENvbW11bmljYXRpb25zIENvLixMdGQKLQkJCQkxMSBTY2llbmNlIGFuZCBUZWNobm9sb2d5IFJvYWQsCi0JCQkJU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBJbmR1c3RyaWFsIFBhcmsgTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUQtMDggICAoaGV4KQkJSklBTkdTVSBZSU5IRSBFTEVDVFJPTklDUyBDTy4sIExURAotMDAxRDA4ICAgICAoYmFzZSAxNikJCUpJQU5HU1UgWUlOSEUgRUxFQ1RST05JQ1MgQ08uLCBMVEQKLQkJCQkxODggTkFOSFVBTiBST0FECi0JCQkJVEFOR1FJQU8KLQkJCQlaSEFOR0pJQUdBTkcgSklBTkdTVSAyMTU2MTEKLQkJCQlDSElOQQotCi0wMC0xRC0wOSAgIChoZXgpCQlEZWxsIEluYwotMDAxRDA5ICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0wQSAgIChoZXgpCQlEYXZpcyBJbnN0cnVtZW50cywgSW5jLgotMDAxRDBBICAgICAoYmFzZSAxNikJCURhdmlzIEluc3RydW1lbnRzLCBJbmMuCi0JCQkJMzQ2NSBEaWFibG8gQXZlLgotCQkJCUhheXdhcmQgQ0EgOTQ1NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTBCICAgKGhleCkJCVBvd2VyIFN0YW5kYXJkcyBMYWIKLTAwMUQwQiAgICAgKGJhc2UgMTYpCQlQb3dlciBTdGFuZGFyZHMgTGFiCi0JCQkJMTIwMSBNYXJpbmEgVmlsbGFnZSBQYXJrd2F5ICMxMDEKLQkJCQlBbGFtZWRhIENBIDk0NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0wQyAgIChoZXgpCQlNb2JpbGVDb21waWEKLTAwMUQwQyAgICAgKGJhc2UgMTYpCQlNb2JpbGVDb21waWEKLQkJCQlEb25nd29uIEJsZGcsIDcyNS0zMCwgWWVva3NhbS1kb25nLCBHYW5nbmFtLWd1LAotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELTBEICAgKGhleCkJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBpbmMuCi0wMDFEMEQgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IGluYy4KLQkJCQk2LTIxLDJDaG9tZQotCQkJCU1pbmFtaS1Bb3lhbWEKLQkJCQlNaW5hdG8tS3UgVG9reW8gMTA3LTAwNjIKLQkJCQlKQVBBTgotCi0wMC0xRC0wRSAgIChoZXgpCQlBZ2FwaGEgVGVjaG5vbG9neSBjby4sIEx0ZC4KLTAwMUQwRSAgICAgKGJhc2UgMTYpCQlBZ2FwaGEgVGVjaG5vbG9neSBjby4sIEx0ZC4KLQkJCQk5RiBOby4xMjEsIFNoaW5nZGUgUmQuLAotCQkJCVNhbmNodW5nIENpdHkgVGFpcGVpIENvdW50eSAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTBGICAgKGhleCkJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAxRDBGICAgICAoYmFzZSAxNikJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCTMvRiwgQmxkZy4gUjEtQiwKLQkJCQlIaS10ZWNoIEluZHVzdHJpYWwgUGFyaywgU2hlbm5hbiBSZC4sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTFELTEwICAgKGhleCkJCUxpZ2h0SGF1cyBMb2dpYywgSW5jLgotMDAxRDEwICAgICAoYmFzZSAxNikJCUxpZ2h0SGF1cyBMb2dpYywgSW5jLgotCQkJCTEyNi0xMDIwIE1haW5sYW5kIFN0cmVldAotCQkJCVZhbmNvdXZlciBCQyBWNkIgMlQ0Ci0JCQkJQ0FOQURBCi0KLTAwLTFELTExICAgKGhleCkJCUFuYWxvZ3VlICYgTWljcm8gTHRkCi0wMDFEMTEgICAgIChiYXNlIDE2KQkJQW5hbG9ndWUgJiBNaWNybyBMdGQKLQkJCQlMYWtlc2lkZSBIb3VzZQotCQkJCUxha2VzaWRlCi0JCQkJTGxhbnRhcm5hbSBJbmR1c3RyaWFsIFBhcmsgQ3dtYnJhbiBOUDQ0IDNYUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFELTEyICAgKGhleCkJCVJPSE0gQ08uLCBMVEQuCi0wMDFEMTIgICAgIChiYXNlIDE2KQkJUk9ITSBDTy4sIExURC4KLQkJCQkyMSBTYWlpbi1NaXpvc2FraS1jaG8sCi0JCQkJVWt5by1rdSwKLQkJCQlLeW90by1zaGkgS1lPVE8gNjE1LTg1ODUKLQkJCQlKQVBBTgotCi0wMC0xRC0xMyAgIChoZXgpCQlOZXh0R1RWCi0wMDFEMTMgICAgIChiYXNlIDE2KQkJTmV4dEdUVgotCQkJCTEzRiBCeXVja3Nhbi9LeXVuZ2luIERpZ2l0YWwgVmFsbGV5IGxsCi0JCQkJR2FzYW4tZG9uZywgR2V1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtMTQgICAoaGV4KQkJU1BFUkFEVE9ORSBJTkZPUk1BVElPTiBURUNITk9MT0dZIExJTUlURUQKLTAwMUQxNCAgICAgKGJhc2UgMTYpCQlTUEVSQURUT05FIElORk9STUFUSU9OIFRFQ0hOT0xPR1kgTElNSVRFRAotCQkJCVJvb20gMTAwMSBOTy40MTggR3VpIFBpbmcgUm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMUQtMTUgICAoaGV4KQkJU2hlbnpoZW4gRG9scGhpbiBFbGVjdHJvbmljIENvLiwgTHRkCi0wMDFEMTUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gRG9scGhpbiBFbGVjdHJvbmljIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcyMSxCYW95dWFuLCBOby4xIEluZHVzdHJpYWwgWm9uZSwKLQkJCQlYaXhpYW5nLCBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAzCi0JCQkJQ0hJTkEKLQotMDAtMUQtMTYgICAoaGV4KQkJRWZpeG8KLTAwMUQxNiAgICAgKGJhc2UgMTYpCQlFZml4bwotCQkJCTUgYXZlbnVlIGRlIFNhaW50IE1lbmV0Ci0JCQkJSW1tZXVibGUgQXhpb21lLCBC4nQgQgotCQkJCU1BUlNFSUxMRSBQQUNBIDEzMDExCi0JCQkJRlJBTkNFCi0KLTAwLTFELTE3ICAgKGhleCkJCURpZ2l0YWwgU2t5IENvcnBvcmF0aW9uCi0wMDFEMTcgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBTa3kgQ29ycG9yYXRpb24KLQkJCQk1LTUtMTUgU290b2thbmRhLAotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTAwMjEKLQkJCQlKQVBBTgotCi0wMC0xRC0xOCAgIChoZXgpCQlQb3dlciBJbm5vdmF0aW9uIEdtYkgKLTAwMUQxOCAgICAgKGJhc2UgMTYpCQlQb3dlciBJbm5vdmF0aW9uIEdtYkgKLQkJCQlSZWhsYW5kIDIKLQkJCQlBY2hpbSBOaWVkZXJzYWNoc2VuIDI4ODMyCi0JCQkJR0VSTUFOWQotCi0wMC0xRC0xOSAgIChoZXgpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDFEMTkgICAgIChiYXNlIDE2KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLiwgTm8uIDkgLCBQYXJrIEF2ZW51ZSBJSSwKLQkJCQlTY2llbmNlLWJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTFBICAgKGhleCkJCU92aXNMaW5rIFMuQS4KLTAwMUQxQSAgICAgKGJhc2UgMTYpCQlPdmlzTGluayBTLkEuCi0JCQkJQy9BbmRyZXMgT2Jpc3BvLCAzNy4gUGwuIDQuCi0JCQkJTWFkcmlkICAyODA0MwotCQkJCVNQQUlOCi0KLTAwLTFELTFCICAgKGhleCkJCVNhbmdlYW4gRWxlY3Ryb25pY3MgSW5jLgotMDAxRDFCICAgICAoYmFzZSAxNikJCVNhbmdlYW4gRWxlY3Ryb25pY3MgSW5jLgotCQkJCU5vLiAxOCwgTGFuZSA3LCBMaS1EZSBzdHJlZXQKLQkJCQlDaHVuZyBIbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTFDICAgKGhleCkJCUdlbm5ldCBzLmEuCi0wMDFEMUMgICAgIChiYXNlIDE2KQkJR2VubmV0IHMuYS4KLQkJCQkyIE1lc29nZWlvbiBhdmUuCi0JCQkJUGlyZ29zIEF0aGlub24KLQkJCQlBdGhlbnMgQXR0aWtpIDExNTI3Ci0JCQkJR1JFRUNFCi0KLTAwLTFELTFEICAgKGhleCkJCUludGVyLU0gQ29ycG9yYXRpb24KLTAwMUQxRCAgICAgKGJhc2UgMTYpCQlJbnRlci1NIENvcnBvcmF0aW9uCi0JCQkJNjUzLTUgQmFuZ2hhay1Eb25nLCBEb2JvbmctS3UKLQkJCQlTZW91bCAgMTMyLTg0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC0xRSAgIChoZXgpCQlLWVVTSFUgVEVOIENPLixMVEQKLTAwMUQxRSAgICAgKGJhc2UgMTYpCQlLWVVTSFUgVEVOIENPLixMVEQKLQkJCQkyMzYwIFlVTk9LSU1PVE9NQUNISQotCQkJCVNBU0VCTy1DaXR5IE5BR0FTQUtJIFByZWZlY3R1cmUgODU3LTAxMTUKLQkJCQlKQVBBTgotCi0wMC0xRC0xRiAgIChoZXgpCQlTaWF1bGl1IFRhdXJvIFRlbGV2aXpvcmlhaSwgSlNDCi0wMDFEMUYgICAgIChiYXNlIDE2KQkJU2lhdWxpdSBUYXVybyBUZWxldml6b3JpYWksIEpTQwotCQkJCVByYW1vbmVzLDE1Ci0JCQkJU2lhdWxpYWkgIExULTU3MzE4Ci0JCQkJTElUSFVBTklBCi0KLTAwLTFELTIwICAgKGhleCkJCUNPTVRSRU5EIENPLgotMDAxRDIwICAgICAoYmFzZSAxNikJCUNPTVRSRU5EIENPLgotCQkJCTNGLTEgMTAgTEFORSA2MDkgQ0hVTkcgSFNJTiBST0FELCBTRUMgNSwgU0FOIENIVU5HIENJVFksIFRBSVBFSSBUQUlXQU4gMjQxCi0JCQkJVEFJUEVJICAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTIxICAgKGhleCkJCUFsY2FkIFNMCi0wMDFEMjEgICAgIChiYXNlIDE2KQkJQWxjYWQgU0wKLQkJCQlQb2wuIEluZC4gQXJyZWNoZS1VZ2FsZGUsIDEKLQkJCQlJcvpuIEd1aXD6emNvYSBFLTIwMzA1Ci0JCQkJU1BBSU4KLQotMDAtMUQtMjIgICAoaGV4KQkJRm9zcyBBbmFseXRpY2FsIEEvUwotMDAxRDIyICAgICAoYmFzZSAxNikJCUZvc3MgQW5hbHl0aWNhbCBBL1MKLQkJCQlTbGFuZ2VydXBnYWRlIDY5Ci0JCQkJSGlsbGVy+GQgU2VlbGFuZCAzNDAwCi0JCQkJREVOTUFSSwotCi0wMC0xRC0yMyAgIChoZXgpCQlTRU5TVVMgCi0wMDFEMjMgICAgIChiYXNlIDE2KQkJU0VOU1VTIAotCQkJCTQ0IENBU1RJTElBTiBEUklWRQotCQkJCUdPTEVUQSBDQUxJRk9STklBIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0yNCAgIChoZXgpCQlBY2xhcmEgUG93ZXItTGluZSBTeXN0ZW1zIEluYy4KLTAwMUQyNCAgICAgKGJhc2UgMTYpCQlBY2xhcmEgUG93ZXItTGluZSBTeXN0ZW1zIEluYy4KLQkJCQk5NDUgSG9ybmV0IERyaXZlCi0JCQkJSGF6ZWx3b29kIE1PIDYzMDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0yNSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMUQyNSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtMjYgICAoaGV4KQkJUm9ja3JpZGdlc291bmQgVGVjaG5vbG9neSBDby4KLTAwMUQyNiAgICAgKGJhc2UgMTYpCQlSb2NrcmlkZ2Vzb3VuZCBUZWNobm9sb2d5IENvLgotCQkJCUZ1bWluIEluZHVzdHJpYWwgUGFyaywgSG91amllIFRvd24KLQkJCQlEb25nIEd1YW4gR3VhbmcgRG9uZyA1MjM5NTYKLQkJCQlDSElOQQotCi0wMC0xRC0yNyAgIChoZXgpCQlOQUMtSU5URVJDT00KLTAwMUQyNyAgICAgKGJhc2UgMTYpCQlOQUMtSU5URVJDT00KLQkJCQlDLiBRVUlOVEVMQSwgMjcgUE9SVEFMIDQgTE9DQUwKLQkJCQlWSUdPIFBPTlRFVkVEUkEgMzYyMDkKLQkJCQlTUEFJTgotCi0wMC0xRC0yOCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotMDAxRDI4ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTAwLTFELTI5ICAgKGhleCkJCURvcm8gQUIKLTAwMUQyOSAgICAgKGJhc2UgMTYpCQlEb3JvIEFCCi0JCQkJTWFnaXN0cmF0c3bkZ2VuIDEwCi0JCQkJTHVuZCAgMjI2IDQzCi0JCQkJU1dFREVOCi0KLTAwLTFELTJBICAgKGhleCkJCVRpZGV3YXkgRWxlY3Ryb25pYyBMVEQKLTAwMUQyQSAgICAgKGJhc2UgMTYpCQlUaWRld2F5IEVsZWN0cm9uaWMgTFRECi0JCQkJWmhpSmkgSW5kdXN0cmlhbCAgQXJlYSAsSmluWWUgUm9hZAotCQkJCUI0IERvbmcuIGt1aXlvbmcgVG93bgotCQkJCXNoZW5nemhlbiBsb25nZ2FuZyBndWFuZ2RvbmcgNTE4MTE5Ci0JCQkJQ0hJTkEKLQotMDAtMUQtMkIgICAoaGV4KQkJV3VoYW4gUG9udCBUZWNobm9sb2d5IENPLiAsIExURAotMDAxRDJCICAgICAoYmFzZSAxNikJCVd1aGFuIFBvbnQgVGVjaG5vbG9neSBDTy4gLCBMVEQKLQkJCQlCdWlsZGluZyBFLCBHdWFuZG9uZyBTY2llbmNlIGFuZCBUZWNobm9sb2d5IEluZHVzdHJ5ICBQYXJrLAotCQkJCUVhc3QgTGFrZSBIaWdoIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgWm9uZSwKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi0wMC0xRC0yQyAgIChoZXgpCQlXYXZldHJlbmQgVGVjaG5vbG9naWVzIChQdHkpIExpbWl0ZWQKLTAwMUQyQyAgICAgKGJhc2UgMTYpCQlXYXZldHJlbmQgVGVjaG5vbG9naWVzIChQdHkpIExpbWl0ZWQKLQkJCQlXYXZldHJlbmQgSG91c2UsIEJ1aWxkaW5nIDgxNi8zCi0JCQkJSGFtbWV0cyBDcm9zc2luZyBPZmZpY2UgUGFyayxTZWxib3VybmUgcm9hZCwgZm91cndheXMKLQkJCQlHYXV0ZW5nICAyMDIxCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTFELTJEICAgKGhleCkJCVB5bG9uZSwgSW5jLgotMDAxRDJEICAgICAoYmFzZSAxNikJCVB5bG9uZSwgSW5jLgotCQkJCTRGIE5ha2FubyBCbGRnLiA0LTMwLTggS2l0YS1TaGluanVrdQotCQkJCVNoaW5qdWt1LWt1LCBUb2t5byAxNjktMDA3NAotCQkJCUpBUEFOCi0KLTAwLTFELTJFICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotMDAxRDJFICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTJGICAgKGhleCkJCVF1YW50dW1WaXNpb24gQ29ycG9yYXRpb24KLTAwMUQyRiAgICAgKGJhc2UgMTYpCQlRdWFudHVtVmlzaW9uIENvcnBvcmF0aW9uCi0JCQkJMzM1IFBsYW50YXRpb24gV2F5Ci0JCQkJUm9zd2VsbCBHYSAzMDA3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMzAgICAoaGV4KQkJWVggV2lyZWxlc3MgUy5BLgotMDAxRDMwICAgICAoYmFzZSAxNikJCVlYIFdpcmVsZXNzIFMuQS4KLQkJCQlBdi4gVmljdfFhIE1hY2tlbm5hICM0ODYwCi0JCQkJRWRpZmljaW8gNTEyLCBwaXNvIDMuIE1hY3VsCi0JCQkJU2FudGlhZ28gIDg1ODA3MTAKLQkJCQlDSElMRQotCi0wMC0xRC0zMSAgIChoZXgpCQlISUdIUFJPIElOVEVSTkFUSU9OQUwgUiZEIENPLC5MVEQuCi0wMDFEMzEgICAgIChiYXNlIDE2KQkJSElHSFBSTyBJTlRFUk5BVElPTkFMIFImRCBDTywuTFRELgotCQkJCTNGLE5vLjI5NSxSdWlHdWFuZyBSZCxOZWkgSHUsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTMyICAgKGhleCkJCUxvbmdrYXkgQ29tbXVuaWNhdGlvbiAmIFRlY2hub2xvZ3kgKFNoYW5naGFpKSBDby4gTHRkCi0wMDFEMzIgICAgIChiYXNlIDE2KQkJTG9uZ2theSBDb21tdW5pY2F0aW9uICYgVGVjaG5vbG9neSAoU2hhbmdoYWkpIENvLiBMdGQKLQkJCQlOby41IEJ1aWxkaW5nLCBVbml0IDIsIExhbmUgMjk5IEJpc2hlbmcgUmQsCi0JCQkJU2hhbmdoYWkgIDIwMTIwNAotCQkJCUNISU5BCi0KLTAwLTFELTMzICAgKGhleCkJCU1hdmVyaWNrIFN5c3RlbXMgSW5jLgotMDAxRDMzICAgICAoYmFzZSAxNikJCU1hdmVyaWNrIFN5c3RlbXMgSW5jLgotCQkJCTkwOCwgRGFlcnVuZ3Bvc3R0b3dlciAyLWNoYSwgMTgyLTEzCi0JCQkJR3Vyby1kb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi03OTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtMzQgICAoaGV4KQkJU1lSSVMgVGVjaG5vbG9neSBDb3JwCi0wMDFEMzQgICAgIChiYXNlIDE2KQkJU1lSSVMgVGVjaG5vbG9neSBDb3JwCi0JCQkJMjEgRi0yLCAgTk8uIDEyLCAgU0VDLiAxLCAgVGFpanVuZ2dhbmcgUmQuCi0JCQkJVGFpY2h1bmcgIDQwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtMzUgICAoaGV4KQkJVmljb25pY3MgRWxlY3Ryb25pY3MgSW5jLgotMDAxRDM1ICAgICAoYmFzZSAxNikJCVZpY29uaWNzIEVsZWN0cm9uaWNzIEluYy4KLQkJCQk5MjQ1IExhbmdlbGllcgotCQkJCVNhaW50IExlb25hcmQgUXVlYmVjIEgxUDNLOQotCQkJCUNBTkFEQQotCi0wMC0xRC0zNiAgIChoZXgpCQlFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBPRiBJTkRJQSBMSU1JVEVECi0wMDFEMzYgICAgIChiYXNlIDE2KQkJRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gT0YgSU5ESUEgTElNSVRFRAotCQkJCUNPTlRST0wgQU5EIEFVVE9NQVRJT04gRElWSVNJT04tMwotCQkJCUVDSUwgUE9TVAotCQkJCUhZREVSQUJBRCBBTkRIUkEgUFJBREVTSCA1MDAgMDYyCi0JCQkJSU5ESUEKLQotMDAtMUQtMzcgICAoaGV4KQkJVGhhbGVzLVBhbmRhIFRyYW5zcG9ydGF0aW9uIFN5c3RlbQotMDAxRDM3ICAgICAoYmFzZSAxNikJCVRoYWxlcy1QYW5kYSBUcmFuc3BvcnRhdGlvbiBTeXN0ZW0KLQkJCQk2dGggZmxvb3IsIEhVSUpJRSBQbGF6YSwgMjY4IFpob25nc2hhbiBSZC4KLQkJCQluYW5qaW5nIGppYW5nc3UgMjEwMDA4Ci0JCQkJQ0hJTkEKLQotMDAtMUQtMzggICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0wMDFEMzggICAgIChiYXNlIDE2KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0JCQkJMTI4MCBEaXNjIERyaXZlCi0JCQkJU2hha29wZWUgTU4gNTUzNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTM5ICAgKGhleCkJCU1PT0hBRElHSVRBTCBDTy4sIExURAotMDAxRDM5ICAgICAoYmFzZSAxNikJCU1PT0hBRElHSVRBTCBDTy4sIExURAotCQkJCVNlb3VsIEhpZ2h0ZWNoIFZlbnR1cmUgQ2VudGVyIEMtMzA3IDY0Ny0yNgotCQkJCURldW5nY2hvbi1Eb25nIEdhbmdzZW8tR3UKLQkJCQlTRU9VTCAgMTU3LTAzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC0zQSAgIChoZXgpCQltaCBhY291c3RpY3MgTExDCi0wMDFEM0EgICAgIChiYXNlIDE2KQkJbWggYWNvdXN0aWNzIExMQwotCQkJCTI1QSBTdW1taXQgQXZlCi0JCQkJU3VtbWl0IE5KIDA3OTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0zQiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRDNCICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRC0zQyAgIChoZXgpCQlNdXNjbGUgQ29ycG9yYXRpb24KLTAwMUQzQyAgICAgKGJhc2UgMTYpCQlNdXNjbGUgQ29ycG9yYXRpb24KLQkJCQkyLTUtMzUsIEtpa2F3YS1oaWdhc2hpCi0JCQkJT3Nha2EgIDUzMi0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMUQtM0QgICAoaGV4KQkJQXZpZHluZSBDb3Jwb3JhdGlvbgotMDAxRDNEICAgICAoYmFzZSAxNikJCUF2aWR5bmUgQ29ycG9yYXRpb24KLQkJCQkyMDIgV2VzdCBEcgotCQkJCU1lbGJvdXJuZSBGTCAzMjkwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtM0UgICAoaGV4KQkJU0FLQSBURUNITk8gU0NJRU5DRSBDTy4sTFRECi0wMDFEM0UgICAgIChiYXNlIDE2KQkJU0FLQSBURUNITk8gU0NJRU5DRSBDTy4sTFRECi0JCQkJTmlzaGkgMTA1LTEKLQkJCQlLaXRhenVrYS1tYWNoaQotCQkJCUthbmF6YXdhIElzaGlrYXdhIDkyMC0wMzY3Ci0JCQkJSkFQQU4KLQotMDAtMUQtM0YgICAoaGV4KQkJTWl0cm9uIFB0eSBMdGQKLTAwMUQzRiAgICAgKGJhc2UgMTYpCQlNaXRyb24gUHR5IEx0ZAotCQkJCVVuaXQgMTEKLQkJCQkxMi0xOCBDbGFyZW5kb24gU3RyZWV0Ci0JCQkJQXJ0YXJtb24gTlNXIDIwNjUKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUQtNDAgICAoaGV4KQkJTGl2aW5nIEluZGVwZW5kZW50bHkgR3JvdXAsIEluYy4KLTAwMUQ0MCAgICAgKGJhc2UgMTYpCQlMaXZpbmcgSW5kZXBlbmRlbnRseSBHcm91cCwgSW5jLgotCQkJCTc2NyBUaGlyZCBBdmUsIDE0dGggRmxvb3IKLQkJCQlOZXcgWW9yayBOWSAxMDAxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNDEgICAoaGV4KQkJSGFyZHkgSW5zdHJ1bWVudHMKLTAwMUQ0MSAgICAgKGJhc2UgMTYpCQlIYXJkeSBJbnN0cnVtZW50cwotCQkJCTM4NjAgQ2FsbGUgRm9ydHVuYWRhCi0JCQkJU2FuIERpZWdvIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC00MiAgIChoZXgpCQlOb3J0ZWwKLTAwMUQ0MiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUQtNDMgICAoaGV4KQkJU2hlbnpoZW4gRy1saW5rIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMUQ0MyAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBHLWxpbmsgRGlnaXRhbCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTRGLCBFIEJ1aWxkaW5nLEh1YWNodWFuZyBEYSBUZWNobm9sb2d5IFpvbmUgLEhhbmdjaGVuZyBIaWdod2F5LEd1c2h1LFhpeGlhbmcgLAotCQkJCXNoZW56aGVuIEd1YW5nRG9uZyA1MTgxMjYKLQkJCQlDSElOQQotCi0wMC0xRC00NCAgIChoZXgpCQlLcm9obmUKLTAwMUQ0NCAgICAgKGJhc2UgMTYpCQlLcm9obmUKLQkJCQlLZXJrZXBsYWF0IDEyCi0JCQkJRG9yZHJlY2h0IFpIIDMzMTMgTEMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xRC00NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFENDUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNDYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRDQ2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTQ3ICAgKGhleCkJCUNvdm90ZSBHbWJIICYgQ28gS0cKLTAwMUQ0NyAgICAgKGJhc2UgMTYpCQlDb3ZvdGUgR21iSCAmIENvIEtHCi0JCQkJUml0dGVyaHVmZW4gMzAKLQkJCQlCZXJsaW4gIDE0MTY1Ci0JCQkJR0VSTUFOWQotCi0wMC0xRC00OCAgIChoZXgpCQlTZW5zb3ItVGVjaG5payBXaWVkZW1hbm4gR21iSAotMDAxRDQ4ICAgICAoYmFzZSAxNikJCVNlbnNvci1UZWNobmlrIFdpZWRlbWFubiBHbWJICi0JCQkJQW0gQuRyZW53YWxkIDYKLQkJCQlLYXVmYmV1cmVuIEJheWVybiA4NzYwMAotCQkJCUdFUk1BTlkKLQotMDAtMUQtNDkgICAoaGV4KQkJSW5ub3ZhdGlvbiBXaXJlbGVzcyBJbmMuCi0wMDFENDkgICAgIChiYXNlIDE2KQkJSW5ub3ZhdGlvbiBXaXJlbGVzcyBJbmMuCi0JCQkJNEYtMSwgTk8uODEsIFNIVUVJTEkgUkQuCi0JCQkJSFNJTkNIVSAgMzAwNTkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTRBICAgKGhleCkJCUNhcmVzdHJlYW0gSGVhbHRoLCBJbmMuCi0wMDFENEEgICAgIChiYXNlIDE2KQkJQ2FyZXN0cmVhbSBIZWFsdGgsIEluYy4KLQkJCQkxNTAgVmVyb25hIFN0cmVldAotCQkJCVJvY2hlc3RzZXIgTlkgMTQ2MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTRCICAgKGhleCkJCUdyaWQgQ29ubmVjdCBJbmMuCi0wMDFENEIgICAgIChiYXNlIDE2KQkJR3JpZCBDb25uZWN0IEluYy4KLQkJCQkxNjMwIFcuIERpZWhsIFJkCi0JCQkJTmFwZXJ2aWxsZSBJTCA2MDU2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNEMgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTAwMUQ0QyAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTYwMSBEYXRhIERyaXZlCi0JCQkJTS9TIDMyMAotCQkJCVBsYW5vIFRYIDc1MDc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC00RCAgIChoZXgpCQlBZGFwdGl2ZSBSZWNvZ25pdGlvbiBIdW5nYXJ5LCBJbmMKLTAwMUQ0RCAgICAgKGJhc2UgMTYpCQlBZGFwdGl2ZSBSZWNvZ25pdGlvbiBIdW5nYXJ5LCBJbmMKLQkJCQlLaXJhbHloYWdvIHRlciA4LTkKLQkJCQlCdWRhcGVzdCBFdXJvcGUgMTEyNgotCQkJCUhVTkdBUlkKLQotMDAtMUQtNEUgICAoaGV4KQkJVENNIE1vYmlsZSBMTEMKLTAwMUQ0RSAgICAgKGJhc2UgMTYpCQlUQ00gTW9iaWxlIExMQwotCQkJCTkyMTggTWV0Y2FsZiwKLQkJCQlTdWl0ZSAjMjkzCi0JCQkJT3ZlcmxhbmQgUGFyayBLYW5zYXMgNjYyMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTRGICAgKGhleCkJCUFwcGxlIENvbXB1dGVyIEluYy4KLTAwMUQ0RiAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlciBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENhbGlmb3JuaWEgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTUwICAgKGhleCkJCVNQSU5FVElYIFNBCi0wMDFENTAgICAgIChiYXNlIDE2KQkJU1BJTkVUSVggU0EKLQkJCQlQYXJjIFNjaWVudGlmaXF1ZSBkZSBsJ0VQRkwsIELidGltZW50IEMKLQkJCQlMYXVzYW5uZSBWRCAxMDE1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUQtNTEgICAoaGV4KQkJQmFiY29jayAmIFdpbGNveCBQb3dlciBHZW5lcmF0aW9uIEdyb3VwLCBJbmMKLTAwMUQ1MSAgICAgKGJhc2UgMTYpCQlCYWJjb2NrICYgV2lsY294IFBvd2VyIEdlbmVyYXRpb24gR3JvdXAsIEluYwotCQkJCTExODY0IENhbm9uIEJsdmQsIFN1aXRlIDEwNQotCQkJCU5ld3BvcnQgTmV3cyBWQSAyMzYwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNTIgICAoaGV4KQkJRGVmem9uZSBCLlYuCi0wMDFENTIgICAgIChiYXNlIDE2KQkJRGVmem9uZSBCLlYuCi0JCQkJVHJhbnNwb3J0Y2VudHJ1bSAxMAotCQkJCUVuc2NoZWRlIE92ZXJpanNzZWwgNzU0NyBSVwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFELTUzICAgKGhleCkJCVMmTyBFbGVjdHJvbmljcyAoTWFsYXlzaWEpIFNkbi4gQmhkLgotMDAxRDUzICAgICAoYmFzZSAxNikJCVMmTyBFbGVjdHJvbmljcyAoTWFsYXlzaWEpIFNkbi4gQmhkLgotCQkJCUxvdCAyMDIsIEJha2FyIEFyYW5nCi0JCQkJSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQkwODAwMCBTdW5nYWkgUGV0YW5pIEtlZGFoIAotCQkJCU1BTEFZU0lBCi0KLTAwLTFELTU0ICAgKGhleCkJCVN1bm5pYyBUZWNobm9sb2d5ICYgTWVyY2hhbmRpc2UgSU5DLgotMDAxRDU0ICAgICAoYmFzZSAxNikJCVN1bm5pYyBUZWNobm9sb2d5ICYgTWVyY2hhbmRpc2UgSU5DLgotCQkJCTZGLCBOTy43NCxaSE9VLVogU1QuLAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC01NSAgIChoZXgpCQlaQU5UQVosIEluYwotMDAxRDU1ICAgICAoYmFzZSAxNikJCVpBTlRBWiwgSW5jCi0JCQkJNTc1OCBXLiBMYXMgUG9zaXRhcyBBdmVudWUKLQkJCQlQbGVhc2FudG9uIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC01NiAgIChoZXgpCQlLcmFtZXIgRWxlY3Ryb25pY3MgTHRkLgotMDAxRDU2ICAgICAoYmFzZSAxNikJCUtyYW1lciBFbGVjdHJvbmljcyBMdGQuCi0JCQkJMyBBbSBWZU9sYW1vIFN0cmVldAotCQkJCUplcnVzYWxlbSAgOTU0NjMKLQkJCQlJU1JBRUwKLQotMDAtMUQtNTcgICAoaGV4KQkJQ0FFVEVDIE1lc3N0ZWNobmlrCi0wMDFENTcgICAgIChiYXNlIDE2KQkJQ0FFVEVDIE1lc3N0ZWNobmlrCi0JCQkJU2NobG9zc3N0cmFzc2UgOTVhCi0JCQkJT2xjaGluZyBCYXllcm4gODIxNDAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELTU4ICAgKGhleCkJCUNRIEluYwotMDAxRDU4ICAgICAoYmFzZSAxNikJCUNRIEluYwotCQkJCTVGLCBOby4gNDMsIExhbmUgNzYsIFJ1aSBHdWFuZyBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTU5ICAgKGhleCkJCU1pdHJhIEVuZXJneSAmIEluZnJhc3RydWN0dXJlCi0wMDFENTkgICAgIChiYXNlIDE2KQkJTWl0cmEgRW5lcmd5ICYgSW5mcmFzdHJ1Y3R1cmUKLQkJCQlCb3VsZXZhcmQgZGUgbCdFdXJvcGUgMTMxCi0JCQkJMTMwMSBXYXZyZSAKLQkJCQlCRUxHSVVNCi0KLTAwLTFELTVBICAgKGhleCkJCTJXaXJlIEluYy4KLTAwMUQ1QSAgICAgKGJhc2UgMTYpCQkyV2lyZSBJbmMuCi0JCQkJMTcwNCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gIEpvc2UgQ2FsaWZvcm5pYSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNUIgICAoaGV4KQkJVGVjdmFuIEluZm9ybWF0aWNhIEx0ZGEKLTAwMUQ1QiAgICAgKGJhc2UgMTYpCQlUZWN2YW4gSW5mb3JtYXRpY2EgTHRkYQotCQkJCVJ1YSBHdWFpY3VydXMsIDE0NQotCQkJCVZpbGEgQ29uY2VpY+NvCi0JCQkJRGlhZGVtYSBT428gUGF1bG8gMDk5MTEtNjMwCi0JCQkJQlJBWklMCi0KLTAwLTFELTVDICAgKGhleCkJCVRvbSBDb21tdW5pY2F0aW9uIEluZHVzdHJpYWwgQ28uLEx0ZC4KLTAwMUQ1QyAgICAgKGJhc2UgMTYpCQlUb20gQ29tbXVuaWNhdGlvbiBJbmR1c3RyaWFsIENvLixMdGQuCi0JCQkJMTE3MyBOaXBwYS1jaG9oIEtvaG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMy0wMDU3Ci0JCQkJSkFQQU4KLQotMDAtMUQtNUQgICAoaGV4KQkJQ29udHJvbCBEeW5hbWljcyBQdHkuIEx0ZC4KLTAwMUQ1RCAgICAgKGJhc2UgMTYpCQlDb250cm9sIER5bmFtaWNzIFB0eS4gTHRkLgotCQkJCVBPIEJveCA2MzYKLQkJCQlNT1JMRVkgV2VzdGVybiBBdXN0cmFsaWEgNjk0MwotCQkJCUFVU1RSQUxJQQotCi0wMC0xRC01RSAgIChoZXgpCQlDT01JTkcgTUVESUEgQ09SUC4KLTAwMUQ1RSAgICAgKGJhc2UgMTYpCQlDT01JTkcgTUVESUEgQ09SUC4KLQkJCQlCT05BIEJsZC4gNHRoIEZsLiwgNTQ4LTE4Ci0JCQkJRG9nb2stMURvbmcsIEthbmduYW0tS3UsCi0JCQkJU2VvdWwgIDEzNS0xNTgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtNUYgICAoaGV4KQkJT3ZlclNwZWVkIFNBUkwKLTAwMUQ1RiAgICAgKGJhc2UgMTYpCQlPdmVyU3BlZWQgU0FSTAotCQkJCTE1LCBhbGxlZSBkdSBCb2lzIENhaWxsZXkKLQkJCQlMZSBUaHVpdC1TaWdub2wgTm9ybWFuZGllIDI3MzcwCi0JCQkJRlJBTkNFCi0KLTAwLTFELTYwICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAxRDYwICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtNjEgICAoaGV4KQkJQklKIENvcnBvcmF0aW9uCi0wMDFENjEgICAgIChiYXNlIDE2KQkJQklKIENvcnBvcmF0aW9uCi0JCQkJN0YgVGFrYW1pemF3YSBCdWlsZGluZywyLTctMTAsCi0JCQkJS2l0YXNhaXdhaSxOaXNoaQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMUQtNjIgICAoaGV4KQkJSW5QaGFzZSBUZWNobm9sb2dpZXMKLTAwMUQ2MiAgICAgKGJhc2UgMTYpCQlJblBoYXNlIFRlY2hub2xvZ2llcwotCQkJCTIwMDAgUGlrZSBSb2FkCi0JCQkJTG9uZ21vbnQgQ29sb3JhZG8gODA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTYzICAgKGhleCkJCU1pZWxlICYgQ2llLiBLRwotMDAxRDYzICAgICAoYmFzZSAxNikJCU1pZWxlICYgQ2llLiBLRwotCQkJCUNhcmwtTWllbGUtU3RyLiAyOQotCQkJCUf8dGVyc2xvaCAgMzMzMzIKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELTY0ICAgKGhleCkJCUFkYW0gQ29tbXVuaWNhdGlvbnMgU3lzdGVtcyBJbnQgTHRkCi0wMDFENjQgICAgIChiYXNlIDE2KQkJQWRhbSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zIEludCBMdGQKLQkJCQlUaGUgTWlzc2lvbgotCQkJCVdlbGxpbmd0b24gU3RyZWV0Ci0JCQkJU3RvY2twb3J0IENoZXNoaXJlIFNLMSAzQUgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRC02NSAgIChoZXgpCQlNaWNyb3dhdmUgUmFkaW8gQ29tbXVuaWNhdGlvbnMKLTAwMUQ2NSAgICAgKGJhc2UgMTYpCQlNaWNyb3dhdmUgUmFkaW8gQ29tbXVuaWNhdGlvbnMKLQkJCQkxMDEgQmlsbGVyaWNhIEF2ZW11ZSwgQmxkZyA2Ci0JCQkJTi4gQmlsbGVyaWNhIE1BIDAxODYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC02NiAgIChoZXgpCQlIeXVuZGFpIFRlbGVjb20KLTAwMUQ2NiAgICAgKGJhc2UgMTYpCQlIeXVuZGFpIFRlbGVjb20KLQkJCQlIeXVuZGFpIFRlbGVjb20gQmxkZy4sIDQyNzMtMTIsIFNoaW5naWwtRG9uZywgWW91bmdkdW5ncG8tR3UsCi0JCQkJU2VvdWwgIDE1MC04NTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtNjcgICAoaGV4KQkJQU1FQwotMDAxRDY3ICAgICAoYmFzZSAxNikJCUFNRUMKLQkJCQk5RixOby4zNjAsUnVlbCBHdWFuZyBSZCxOZWlodQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC02OCAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDAxRDY4ICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NyBCCi0JCQkJRWRlZ2VtIEFudHdlcnAgQi0yNjUwCi0JCQkJQkVMR0lVTQotCi0wMC0xRC02OSAgIChoZXgpCQlLbm9yci1CcmVtc2UgQUcKLTAwMUQ2OSAgICAgKGJhc2UgMTYpCQlLbm9yci1CcmVtc2UgQUcKLQkJCQlNb29zYWNoZXIgU3RyLiA4MAotCQkJCU11ZW5jaGVuIEJZIDgwODA5Ci0JCQkJR0VSTUFOWQotCi0wMC0xRC02QSAgIChoZXgpCQlBbHBoYSBOZXR3b3JrcyBJbmMuCi0wMDFENkEgICAgIChiYXNlIDE2KQkJQWxwaGEgTmV0d29ya3MgSW5jLgotCQkJCU5vLjggTGktc2hpbmcgU2V2ZW50aCBSb2FkLFNjaWVuY2UtYmFzZWQKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTZCICAgKGhleCkJCU1vdG9yb2xhIChmb3JtZXJseSBOZXRvcGlhLCBJbmMKLTAwMUQ2QiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSAoZm9ybWVybHkgTmV0b3BpYSwgSW5jCi0JCQkJNjAwMSBTaGVsbG1vdW5kIFN0Ci0JCQkJNHRoIEZsb29yCi0JCQkJRW1lcnl2aWxsZSBDQSA5NDYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNkMgICAoaGV4KQkJQ2xhcmlQaHkgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMUQ2QyAgICAgKGJhc2UgMTYpCQlDbGFyaVBoeSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTE2IFRlY2hub2xvZ3kgRHIuLCBTdWl0ZSAxNjUKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTZEICAgKGhleCkJCUNvbmZpZGFudCBJbnRlcm5hdGlvbmFsIExMQwotMDAxRDZEICAgICAoYmFzZSAxNikJCUNvbmZpZGFudCBJbnRlcm5hdGlvbmFsIExMQwotCQkJCTI1MzAgTWVyaWRpYW4gUGt3eQotCQkJCUR1cmhhbSBOb3J0aCBDYXJvbGluYSAyNzcxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNkUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUQ2RSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRC02RiAgIChoZXgpCQlDaGFpbnpvbmUgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAxRDZGICAgICAoYmFzZSAxNikJCUNoYWluem9uZSBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJQ2hhaW56b25lIFRlY2guIEluZCBQYXJrLCBOYW54aW4gMXN0IFJkLgotCQkJCUd1aWNoZW5nIE5hbmhhaQotCQkJCUZvc2hhbiBHdWFuZ2RvbmcgNTI4MjAwCi0JCQkJQ0hJTkEKLQotMDAtMUQtNzAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRDcwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTcxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUQ3MSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC03MiAgIChoZXgpCQlXaXN0cm9uIENvcnBvcmF0aW9uCi0wMDFENzIgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotCQkJCTIxRiwgODgsIFNlYy4xLCBIc2luIFRhaSBXdSBSZC4sIEhzaWNoaWgsCi0JCQkJVGFpcGVpIEhzaWVuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtNzMgICAoaGV4KQkJQnVmZmFsbyBJbmMuCi0wMDFENzMgICAgIChiYXNlIDE2KQkJQnVmZmFsbyBJbmMuCi0JCQkJMTUsU2hpYmF0YSBIb25kb3JpIDQtY2hvbWUsCi0JCQkJTWluYW1pLWt1Ci0JCQkJTmFnb3lhIEFpY2hpIFByZWYuIDQ1Ny04NTIwCi0JCQkJSkFQQU4KLQotMDAtMUQtNzQgICAoaGV4KQkJVGlhbmppbiBDaGluYS1TaWxpY29uIE1pY3JvZWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDFENzQgICAgIChiYXNlIDE2KQkJVGlhbmppbiBDaGluYS1TaWxpY29uIE1pY3JvZWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJMzAxLDNGIEJ1aWxkaW5nIDIxMSxOby4yMTQgSG9uZ3FpIFJvYWQsIE5hbmthaSBEaXN0cmljdCwgVGlhbmppbiBDaGluYQotCQkJCVRpYW5qaW4gIDMwMDE5MAotCQkJCUNISU5BCi0KLTAwLTFELTc1ICAgKGhleCkJCVJhZGlvc2NhcGUgUExDCi0wMDFENzUgICAgIChiYXNlIDE2KQkJUmFkaW9zY2FwZSBQTEMKLQkJCQkxIEFsYmFueSBUZXJyYWNlCi0JCQkJUmVnZW50J3MgUGFyayBMb25kb24gTlcxIDREUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFELTc2ICAgKGhleCkJCUV5ZWhlaWdodCBMdGQuCi0wMDFENzYgICAgIChiYXNlIDE2KQkJRXllaGVpZ2h0IEx0ZC4KLQkJCQlVbml0IDM0LCBQYXJrIEhvdXNlCi0JCQkJMTUtMTkgR3JlZW5oaWxsIENyZXNjZW50Ci0JCQkJV2F0Zm9yZCBIZXJ0cyBXRDE4IDhQSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFELTc3ICAgKGhleCkJCU5TR2F0ZQotMDAxRDc3ICAgICAoYmFzZSAxNikJCU5TR2F0ZQotCQkJCVJtIDEzMDQsIDM5IEtpcnBpY2huYXlhIFN0cmVldAotCQkJCU1vc2NvdyAgMTA1MTg3Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFELTc4ICAgKGhleCkJCUludmVuZ28gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkCi0wMDFENzggICAgIChiYXNlIDE2KQkJSW52ZW5nbyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkzL0YsTm8uVDItQixIaWdoLVRlY2ggSW5kdXN0cmlhbCBQYXJrIFNvdXRoCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTFELTc5ICAgKGhleCkJCVNJR05BTUFYIExMQwotMDAxRDc5ICAgICAoYmFzZSAxNikJCVNJR05BTUFYIExMQwotCQkJCTEwOTAgVmVybW9udCBBdmVudWUKLQkJCQlXYXNoaW5ndG9uIFdhc2hpbmd0b24gRC5DLiAyMDAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtN0EgICAoaGV4KQkJV2lkZWJhbmQgU2VtaWNvbmR1Y3RvciwgSW5jLgotMDAxRDdBICAgICAoYmFzZSAxNikJCVdpZGViYW5kIFNlbWljb25kdWN0b3IsIEluYy4KLQkJCQkxMzUwIFBlYXIgQXZlCi0JCQkJU3VpdGUgQwotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTdCICAgKGhleCkJCUljZSBFbmVyZ3ksIEluYy4KLTAwMUQ3QiAgICAgKGJhc2UgMTYpCQlJY2UgRW5lcmd5LCBJbmMuCi0JCQkJOTM1MSBFYXN0bWFuIFBhcmsgRHJpdmUKLQkJCQlTdWl0ZSBCCi0JCQkJV2luZHNvciBDb2xvcmFkbyA4MDU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtN0MgICAoaGV4KQkJQUJFIEVsZXR0cm9uaWNhIFMucC5BLgotMDAxRDdDICAgICAoYmFzZSAxNikJCUFCRSBFbGV0dHJvbmljYSBTLnAuQS4KLQkJCQlWaWEgTGVvbmFyZG8gZGEgVmluY2ksIDkyCi0JCQkJQ0FSQVZBR0dJTyBCRyAyNDA0MwotCQkJCUlUQUxZCi0KLTAwLTFELTdEICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0wMDFEN0QgICAgIChiYXNlIDE2KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlQaW4tSmVuIENpdHksIFRhb3l1YW4sCi0JCQkJUGluLUplbiBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtN0UgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi0wMDFEN0UgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC03RiAgIChoZXgpCQlUZWtyb24gSW50ZXJuYXRpb25hbCBMdGQKLTAwMUQ3RiAgICAgKGJhc2UgMTYpCQlUZWtyb24gSW50ZXJuYXRpb25hbCBMdGQKLQkJCQk0MDkgQ3ViYSBTdHJlZXQsIEFsaWNldG93bgotCQkJCVBPIEJveCAzMS0yODUKLQkJCQlMb3dlciBIdXR0IFdlbGxpbmd0b24gNTAxMAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTFELTgwICAgKGhleCkJCUJlaWppbmcgSHVhaHVhbiBFbGV0cm9uaWNzIENvLixMdGQKLTAwMUQ4MCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEh1YWh1YW4gRWxldHJvbmljcyBDby4sTHRkCi0JCQkJTm8uMjYsU2hhbmdkaSA2dGggU3QuSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0xRC04MSAgIChoZXgpCQlHVUFOR1pIT1UgR0FURVdBWSBFTEVDVFJPTklDUyBDTy4sIExURAotMDAxRDgxICAgICAoYmFzZSAxNikJCUdVQU5HWkhPVSBHQVRFV0FZIEVMRUNUUk9OSUNTIENPLiwgTFRECi0JCQkJQjIwIyw0RixOby45IEppYW5nb25nIFJvYWQsVGlhbmhlIFNvZnR3YXJlIFBhcmssVGlhbmhlIERpc3RyaWN0LAotCQkJCUdVQU5HWkhPVSBHdWFuZ2RvbmcgNTEwNjY1Ci0JCQkJQ0hJTkEKLQotMDAtMUQtODIgICAoaGV4KQkJR04gQS9TIChHTiBOZXRjb20gQS9TKQotMDAxRDgyICAgICAoYmFzZSAxNikJCUdOIEEvUyAoR04gTmV0Y29tIEEvUykKLQkJCQlMYXV0cnVwYmplcmcgNwotCQkJCVAuTy5Cb3ggOTkKLQkJCQlCYWxsZXJ1cCAgREsgLSAyNzUwCi0JCQkJREVOTUFSSwotCi0wMC0xRC04MyAgIChoZXgpCQlFbWl0ZWNoIENvcnBvcmF0aW9uCi0wMDFEODMgICAgIChiYXNlIDE2KQkJRW1pdGVjaCBDb3Jwb3JhdGlvbgotCQkJCTJGLE5vLjctMSxJbmR1c3RyeSBFLFJkLjkKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAzMDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTg0ICAgKGhleCkJCUdhdGV3YXksIEluYy4KLTAwMUQ4NCAgICAgKGJhc2UgMTYpCQlHYXRld2F5LCBJbmMuCi0JCQkJNjEwIEdhdGV3YXkgRHJpdmUKLQkJCQlQLk8uIEJveCAyMDAwCi0JCQkJTm9ydGggU2lvdXggQ2l0eSBTb3V0aCBEYWtvdGEgNTcwNDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTg1ICAgKGhleCkJCUNhbGwgRGlyZWN0IENlbGx1bGFyIFNvbHV0aW9ucwotMDAxRDg1ICAgICAoYmFzZSAxNikJCUNhbGwgRGlyZWN0IENlbGx1bGFyIFNvbHV0aW9ucwotCQkJCVN1aXRlIDE0NSwgTmF0aW9uYWwgSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQlBdXN0cmFsaWFuIFRlY2hub2xvZ3kgUGFyawotCQkJCUV2ZWxlaWdoIE5TVyAxNDMwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTFELTg2ICAgKGhleCkJCVNoaW53YSBJbmR1c3RyaWVzKENoaW5hKSBMdGQuCi0wMDFEODYgICAgIChiYXNlIDE2KQkJU2hpbndhIEluZHVzdHJpZXMoQ2hpbmEpIEx0ZC4KLQkJCQk4IFBpbmduYW56aG9uZyBSb2FkLCBQaW5nbmFuIEluZHVzdHJpYWwgUGFyaywgWmhvbmdrYWkgTm8uNCBSb2FkLAotCQkJCUh1aXpob3UgQ2l0eSBHdWFuZ2RvbmcgUHJvdmluY2UgNTE2MDA2Ci0JCQkJQ0hJTkEKLQotMDAtMUQtODcgICAoaGV4KQkJVmlnVGVjaCBMYWJzIFNkbiBCaGQKLTAwMUQ4NyAgICAgKGJhc2UgMTYpCQlWaWdUZWNoIExhYnMgU2RuIEJoZAotCQkJCTQ1LTExIFRoZSBCb3VsZXZhcmQgTWlkIFZhbGxleSBDaXR5Ci0JCQkJTGluZ2thcmFuIFN5ZWQgUHV0cmEKLQkJCQlLdWFsYSBMdW1wdXIgU2VsYW5nb3IgNTkyMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRC04OCAgIChoZXgpCQlDbGVhcndpcmUKLTAwMUQ4OCAgICAgKGJhc2UgMTYpCQlDbGVhcndpcmUKLQkJCQk0NDAwIENhcmlsbG9uIFBvaW50Ci0JCQkJS2lya2xhbmQgV2FzaGluZ3RvbiA5ODAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtODkgICAoaGV4KQkJVmF1bHRTdG9yIENvcnBvcmF0aW9uCi0wMDFEODkgICAgIChiYXNlIDE2KQkJVmF1bHRTdG9yIENvcnBvcmF0aW9uCi0JCQkJMTAxMCBCcmlvc28gRHJpdmUKLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC04QSAgIChoZXgpCQlUZWNoVHJleCBJbmMKLTAwMUQ4QSAgICAgKGJhc2UgMTYpCQlUZWNoVHJleCBJbmMKLQkJCQk2MjIxIEhpZ2h3YXkgNywgVW5pdCAxMgotCQkJCVdvb2RicmlkZ2UgT250YWxpbyBMNEggMEs4Ci0JCQkJQ0FOQURBCi0KLTAwLTFELThCICAgKGhleCkJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUwotMDAxRDhCICAgICAoYmFzZSAxNikJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUwotCQkJCVZJQUxFIFNBUkNBIDIyMgotCQkJCU1JTEFOTyAgMjAxMjYKLQkJCQlJVEFMWQotCi0wMC0xRC04QyAgIChoZXgpCQlMYSBDcm9zc2UgVGVjaG5vbG9neSBMVEQKLTAwMUQ4QyAgICAgKGJhc2UgMTYpCQlMYSBDcm9zc2UgVGVjaG5vbG9neSBMVEQKLQkJCQkyODA5IExvc2V5IEJsdmQuIFNvLgotCQkJCUxhIENyb3NzZSBXSSA1NDYwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtOEQgICAoaGV4KQkJUmF5dGVrIEdtYkgKLTAwMUQ4RCAgICAgKGJhc2UgMTYpCQlSYXl0ZWsgR21iSAotCQkJCUJsYW5rZW5idXJnZXIgU3RyLiAxMzUKLQkJCQlCZXJsaW4gIDEzMTI3Ci0JCQkJR0VSTUFOWQotCi0wMC0xRC04RSAgIChoZXgpCQlBbGVyZW9uLCBJbmMuCi0wMDFEOEUgICAgIChiYXNlIDE2KQkJQWxlcmVvbiwgSW5jLgotCQkJCTc2MDAgTi4gQ2FwaXRhbCBvZiBUZXhhcyBId3kKLQkJCQlCbGRnIEMsICMyMDAKLQkJCQlBdXN0aW4gVFggNzg3MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELThGICAgKGhleCkJCVB1cmVXYXZlIE5ldHdvcmtzCi0wMDFEOEYgICAgIChiYXNlIDE2KQkJUHVyZVdhdmUgTmV0d29ya3MKLQkJCQkyNjYwLUMgTWFyaW5lIFdheQotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTkwICAgKGhleCkJCUVNQ08gRmxvdyBTeXN0ZW1zCi0wMDFEOTAgICAgIChiYXNlIDE2KQkJRU1DTyBGbG93IFN5c3RlbXMKLQkJCQkyMTUwIE1pbGxlciBEcml2ZQotCQkJCUxvbmdtb250IENPIDgwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC05MSAgIChoZXgpCQlEaWdpdGl6ZSwgSW5jCi0wMDFEOTEgICAgIChiYXNlIDE2KQkJRGlnaXRpemUsIEluYwotCQkJCTE1OCBFZGlzb24gUm9hZAotCQkJCUxha2UgSG9wYXRjb25nIE5ldyBKZXJzZXkgMDc4NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTkyICAgKGhleCkJCU1JQ1JPLVNUQVIgSU5UJ0wgQ08uLExURC4KLTAwMUQ5MiAgICAgKGJhc2UgMTYpCQlNSUNSTy1TVEFSIElOVCdMIENPLixMVEQuCi0JCQkJTm8uNjksTGktRGUgU3QsSnVuZy1IbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtOTMgICAoaGV4KQkJTW9kYWNvbQotMDAxRDkzICAgICAoYmFzZSAxNikJCU1vZGFjb20KLQkJCQlKaW5zdWsgQnVpbGRpbmcgMTUzNi03Ci0JCQkJU2VvY2hvLURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAxMzctMDczCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELTk0ICAgKGhleCkJCUNsaW1heCBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDFEOTQgICAgIChiYXNlIDE2KQkJQ2xpbWF4IFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlOby4gMjU4LCBIc2luIEh1IDJuZCBSb2FkCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgQ2l0eSBUYWlwZWkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC05NSAgIChoZXgpCQlGbGFzaCwgSW5jLgotMDAxRDk1ICAgICAoYmFzZSAxNikJCUZsYXNoLCBJbmMuCi0JCQkJMzcwMyBOLiAyMDB0aCBTdC4KLQkJCQlFbGtob3JuIE5FIDY4MDIyLTI5MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTk2ICAgKGhleCkJCVdhdGNoR3VhcmQgVmlkZW8KLTAwMUQ5NiAgICAgKGJhc2UgMTYpCQlXYXRjaEd1YXJkIFZpZGVvCi0JCQkJMzAwMSBTdW1taXQgQXZlLgotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC05NyAgIChoZXgpCQlBbGVydHVzIFRlY2hub2xvZ2llcyBMTEMKLTAwMUQ5NyAgICAgKGJhc2UgMTYpCQlBbGVydHVzIFRlY2hub2xvZ2llcyBMTEMKLQkJCQkxMTc4NSBCZWx0c3ZpbGxlIERyaXZlCi0JCQkJU3VpdGUgMTMyNQotCQkJCUJlbHRzdmlsbGUgTUQgMjA3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTk4ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFEOTggICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFELTk5ICAgKGhleCkJCUN5YW4gT3B0aWMsIEluYy4KLTAwMUQ5OSAgICAgKGJhc2UgMTYpCQlDeWFuIE9wdGljLCBJbmMuCi0JCQkJMTM5MCBOLiBNY0Rvd2VsbCBCbHZkCi0JCQkJU3VpdGUgRy0zMjcKLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtOUEgICAoaGV4KQkJR09ERVggSU5URVJOQVRJT05BTCBDTy4sIExURAotMDAxRDlBICAgICAoYmFzZSAxNikJCUdPREVYIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQKLQkJCQk0Ri4gTk8uMTY4LCBMaWFuLUNoZW5nIFJvYWQgQ2h1bmctSG8gQ2l0eSwKLQkJCQlUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC05QiAgIChoZXgpCQlIb2t1eW8gQXV0b21hdGljIENvLiwgTHRkLgotMDAxRDlCICAgICAoYmFzZSAxNikJCUhva3V5byBBdXRvbWF0aWMgQ28uLCBMdGQuCi0JCQkJTmlpdGFrYSAxLTEwLTkKLQkJCQlZb2RvZ2F3YS1LdQotCQkJCU9zYWthICA1MzItMDAzMwotCQkJCUpBUEFOCi0KLTAwLTFELTlDICAgKGhleCkJCVJvY2t3ZWxsIEF1dG9tYXRpb24KLTAwMUQ5QyAgICAgKGJhc2UgMTYpCQlSb2Nrd2VsbCBBdXRvbWF0aW9uCi0JCQkJMSBBbGxlbi1CcmFkbGV5IERyaXZlCi0JCQkJQ1MtQzIzOQotCQkJCU1heWZpZWxkIEhlaWdodHMgT2hpbyA0NDEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtOUQgICAoaGV4KQkJQVJUSk9ZIElOVEVSTkFUSU9OQUwgTElNSVRFRAotMDAxRDlEICAgICAoYmFzZSAxNikJCUFSVEpPWSBJTlRFUk5BVElPTkFMIExJTUlURUQKLQkJCQlSb29tIDE2MDEsTm8uMjM5IFpob25nWGluZyBSb2FkLEx1b0h1IERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMQotCQkJCUNISU5BCi0KLTAwLTFELTlFICAgKGhleCkJCUFYSU9OIFRFQ0hOT0xPR0lFUwotMDAxRDlFICAgICAoYmFzZSAxNikJCUFYSU9OIFRFQ0hOT0xPR0lFUwotCQkJCTE1MSBSVUUgUEFSQyBJTk5PVkFUSU9OCi0JCQkJTEEgUE9DQVRJRVJFIFFVRUJFQyBHMFIxWjAKLQkJCQlDQU5BREEKLQotMDAtMUQtOUYgICAoaGV4KQkJTUFUVCAgIFIuUC5UcmFjenluc2N5IFNwLkouCi0wMDFEOUYgICAgIChiYXNlIDE2KQkJTUFUVCAgIFIuUC5UcmFjenluc2N5IFNwLkouCi0JCQkJUG9sbm9jbmEgNDQKLQkJCQlLb3NjaWFuIHdpZWxrb3BvbHNraWUgUEwtNjQwMDAKLQkJCQlQT0xBTkQKLQotMDAtMUQtQTAgICAoaGV4KQkJSGVuZyBZdSBFbGVjdHJvbmljIE1hbnVmYWN0dXJpbmcgQ29tcGFueSBMaW1pdGVkCi0wMDFEQTAgICAgIChiYXNlIDE2KQkJSGVuZyBZdSBFbGVjdHJvbmljIE1hbnVmYWN0dXJpbmcgQ29tcGFueSBMaW1pdGVkCi0JCQkJUm9vbSAxMDA0LCBIU0ggTW9uZ2tvayBQbGF6YSwKLQkJCQk3OTQtODAyIE5hdGhhbiBSb2FkLAotCQkJCUtvd2xvb24gIAotCQkJCUhPTkcgS09ORwotCi0wMC0xRC1BMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFEQTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQTIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxREEyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUEzICAgKGhleCkJCVNhYmlPc28KLTAwMURBMyAgICAgKGJhc2UgMTYpCQlTYWJpT3NvCi0JCQkJMTg5IFMgU3RhdGUgU3VpdGUgIzI1MAotCQkJCUNsZWFyZmllbGQgVXRhaCA4NDAxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQTQgICAoaGV4KQkJSGFuZ3pob3UgU3lzdGVtIFRlY2hub2xvZ3kgQ08uLCBMVEQKLTAwMURBNCAgICAgKGJhc2UgMTYpCQlIYW5nemhvdSBTeXN0ZW0gVGVjaG5vbG9neSBDTy4sIExURAotCQkJCVJPT00gQTE1MDUgSHVhWGluZyB0aW1lcyBwbGF6YSxOTyA0NzggV2Vuc2FuIFJvYWQKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi0wMC0xRC1BNSAgIChoZXgpCQlXQiBFbGVjdHJvbmljcwotMDAxREE1ICAgICAoYmFzZSAxNikJCVdCIEVsZWN0cm9uaWNzCi0JCQkJTGFuZ2VsYW5kc3ZlaiAxQQotCQkJCUhlcm5pbmcgSGVybmluZyA3NDAwCi0JCQkJREVOTUFSSwotCi0wMC0xRC1BNiAgIChoZXgpCQlNZWRpYSBOdW1lcmljcyBMaW1pdGVkCi0wMDFEQTYgICAgIChiYXNlIDE2KQkJTWVkaWEgTnVtZXJpY3MgTGltaXRlZAotCQkJCVJvZGVuYmFjaGVyIENoYXVzc2VlIDYKLQkJCQlIYW5hdSBIZXNzZW4gNjM0NTcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELUE3ICAgKGhleCkJCVNlYW1sZXNzIEludGVybmV0Ci0wMDFEQTcgICAgIChiYXNlIDE2KQkJU2VhbWxlc3MgSW50ZXJuZXQKLQkJCQkyMDUwIFJ1c3NldHQgV2F5IFN1aXRlIDMzOAotCQkJCUNhcnNvbiBDaXR5IE5ldmFkYSA4OTcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQTggICAoaGV4KQkJVGFrYWhhdGEgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxREE4ICAgICAoYmFzZSAxNikJCVRha2FoYXRhIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkxMTg4LEt1Ym90YSxLdWJvdGEtbWFjaGkKLQkJCQlZb25lemF3YS1zaGkgWWFtYWdhdGEtUHJlZi4gOTkyLTAwMDMKLQkJCQlKQVBBTgotCi0wMC0xRC1BOSAgIChoZXgpCQlDYXN0bGVzIFRlY2hub2xvZ3ksIENvLiwgTFRECi0wMDFEQTkgICAgIChiYXNlIDE2KQkJQ2FzdGxlcyBUZWNobm9sb2d5LCBDby4sIExURAotCQkJCTJGLCBOby4yMDUsIFNlYyAzIEJlaXNoaW4gUmQuLAotCQkJCUhzaW4tVGllbiBDaXR5IFRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELUFBICAgKGhleCkJCURyYXlUZWsgQ29ycC4KLTAwMURBQSAgICAgKGJhc2UgMTYpCQlEcmF5VGVrIENvcnAuCi0JCQkJTm8uIDI2LCBGdS1TaGluZyBSb2FkCi0JCQkJSHVLb3UgQ291bnR5LCBIc2luLUNodSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luLUNodSAgMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC1BQiAgIChoZXgpCQlTd2lzc1F1YWwgTGljZW5zZSBBRwotMDAxREFCICAgICAoYmFzZSAxNikJCVN3aXNzUXVhbCBMaWNlbnNlIEFHCi0JCQkJQmFhcmVyc3RyYXNzZSA3OAotCQkJCVp1ZyBQb3N0ZmFjaCAxMTcKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRC1BQyAgIChoZXgpCQlHaWdhbW9uIFN5c3RlbXMgTExDCi0wMDFEQUMgICAgIChiYXNlIDE2KQkJR2lnYW1vbiBTeXN0ZW1zIExMQwotCQkJCTU5OCBHaWJyYWx0YXIgRHJpdmUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQUQgICAoaGV4KQkJU2lub3RlY2ggRW5naW5lZXJpbmcgQ29uc3VsdGFudHMsIEluYy4gIEdlb3RlY2huaWNhbCBFbmdpbmVlCi0wMDFEQUQgICAgIChiYXNlIDE2KQkJU2lub3RlY2ggRW5naW5lZXJpbmcgQ29uc3VsdGFudHMsIEluYy4gIEdlb3RlY2huaWNhbCBFbmdpbmVlCi0JCQkJQmFzZW1lbnQgTm8uNyBMYW5lIDI2LCBZYXQtU2VuIFJkLgotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC1BRSAgIChoZXgpCQlDSEFORyBUU0VORyBURUNITk9MT0dZIENPLiwgTFRECi0wMDFEQUUgICAgIChiYXNlIDE2KQkJQ0hBTkcgVFNFTkcgVEVDSE5PTE9HWSBDTy4sIExURAotCQkJCTJGIE5PLjE2MCBCQUNLIEJVSUxESU5HLCBMRU4gQ0hFTkcgUkQuLCBDSFVORyBITyBDSVRZCi0JCQkJVEFJUEVJIEhTSUVOIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtQUYgICAoaGV4KQkJTm9ydGVsCi0wMDFEQUYgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFELUIwICAgKGhleCkJCUZ1SmlhbiBIZW5nVG9uZyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMdGQKLTAwMURCMCAgICAgKGJhc2UgMTYpCQlGdUppYW4gSGVuZ1RvbmcgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJTm8uMTQtODA0LEJ1aWxkaW5nIDIsSmluWGl1RnVDaGVuZyxOby4zMzgsSHVhTGluIFJvYWQKLQkJCQlGdVpob3UgQ2l0eSBGdUppYW4gUHJvdmluY2UgMzUwMDAxCi0JCQkJQ0hJTkEKLQotMDAtMUQtQjEgICAoaGV4KQkJQ3Jlc2NlbmRvIE5ldHdvcmtzCi0wMDFEQjEgICAgIChiYXNlIDE2KQkJQ3Jlc2NlbmRvIE5ldHdvcmtzCi0JCQkJNiBZb25pIE5ldGFueWFodSBTdC4KLQkJCQlPci1ZZWh1ZGEgIDYwMzc2Ci0JCQkJSVNSQUVMCi0KLTAwLTFELUIyICAgKGhleCkJCUhPS0tBSURPIEVMRUNUUklDIEVOR0lORUVSSU5HIENPLixMVEQuCi0wMDFEQjIgICAgIChiYXNlIDE2KQkJSE9LS0FJRE8gRUxFQ1RSSUMgRU5HSU5FRVJJTkcgQ08uLExURC4KLQkJCQlTb3V0aDE1LVdlc3QyMwotCQkJCU5hbnBvcm8tQ2hvIEhva2thaWRvIDA2OS0wMjE1Ci0JCQkJSkFQQU4KLQotMDAtMUQtQjMgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotMDAxREIzICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkCi0JCQkJUm9zZXZpbGxlIENBIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1CNCAgIChoZXgpCQlLVU1ITyBFTkcgQ08uLExURAotMDAxREI0ICAgICAoYmFzZSAxNikJCUtVTUhPIEVORyBDTy4sTFRECi0JCQkJNDk4LTEzLCBIWVVOREFJIEIvRCA1RgotCQkJCVBZRU9OR1JJIDMtRE9ORywgU0VPLUdVCi0JCQkJREFFR1UgIDcwMy04MzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtQjUgICAoaGV4KQkJSnVuaXBlciBuZXR3b3JrcwotMDAxREI1ICAgICAoYmFzZSAxNikJCUp1bmlwZXIgbmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQjYgICAoaGV4KQkJQmVzdENvbW0gTmV0d29ya3MsIEluYy4KLTAwMURCNiAgICAgKGJhc2UgMTYpCQlCZXN0Q29tbSBOZXR3b3JrcywgSW5jLgotCQkJCTQ0MDAgRS4gQnJvYWR3YXkgQmx2ZC4KLQkJCQlTdWl0ZSAyMDEKLQkJCQlUdWNzb24gQVogODU3MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUI3ICAgKGhleCkJCVRlbmRyaWwgTmV0d29ya3MsIEluYy4KLTAwMURCNyAgICAgKGJhc2UgMTYpCQlUZW5kcmlsIE5ldHdvcmtzLCBJbmMuCi0JCQkJNTcwMC1EIEZsYXRpcm9uIFBhcmt3YXkKLQkJCQlTdWl0ZSA1NzAwLUQKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1COCAgIChoZXgpCQlJbnRvdG8gSW5jLgotMDAxREI4ICAgICAoYmFzZSAxNikJCUludG90byBJbmMuCi0JCQkJMzEwMCBEZSBMYSBDcnV6IEJsdmQuICAjMzAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUI5ICAgKGhleCkJCVdlbGxzcHJpbmcgV2lyZWxlc3MKLTAwMURCOSAgICAgKGJhc2UgMTYpCQlXZWxsc3ByaW5nIFdpcmVsZXNzCi0JCQkJMTA3IE1hZ2VsbGEgQ291cnQKLQkJCQlOb3J0aCBXYWxlcyBQYSAxOTQ1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQkEgICAoaGV4KQkJU29ueSBDb3Jwb3JhdGlvbgotMDAxREJBICAgICAoYmFzZSAxNikJCVNvbnkgQ29ycG9yYXRpb24KLQkJCQlHb3RlbnlhbWEgVGVjLDUtMS0xMiwKLQkJCQlLaXRhc2hpbmFnYXdhCi0JCQkJU2hpbmFnYXdhLWt1IFRva3lvIDE0MS0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMUQtQkIgICAoaGV4KQkJRHluYW1pYyBTeXN0ZW0gRWxlY3Ryb25pY3MgQ29ycC4KLTAwMURCQiAgICAgKGJhc2UgMTYpCQlEeW5hbWljIFN5c3RlbSBFbGVjdHJvbmljcyBDb3JwLgotCQkJCTVGLE5PLDksTEFORSAxMzAsU0VDIDEsS1VBTkdHIEZVIFJELlNBTiBDSFVORyBDSVRZLAotCQkJCVRhaXBlaSBIc2llbiAyNDE1OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtQkMgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFEQkMgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUQtQkQgICAoaGV4KQkJVmVyc2FtZWQgSW5jLgotMDAxREJEICAgICAoYmFzZSAxNikJCVZlcnNhbWVkIEluYy4KLQkJCQkyIEJsdWUgSGlsbCBQbGF6YQotCQkJCVBlYXJsIFJpdmVyIE5ZIDEwOTY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1CRSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMURCRSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gVVMgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSWxsaW5vaXMgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUJGICAgKGhleCkJCVJhZGlpZW50IFRlY2hub2xvZ2llcywgSW5jLgotMDAxREJGICAgICAoYmFzZSAxNikJCVJhZGlpZW50IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTIwODQtQSBXYWxzaCBBdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQzAgICAoaGV4KQkJRW5waGFzZSBFbmVyZ3kKLTAwMURDMCAgICAgKGJhc2UgMTYpCQlFbnBoYXNlIEVuZXJneQotCQkJCTIwMSAxc3QgU3RyZWV0LCBTdWl0ZSAxMTEKLQkJCQlQZXRhbHVtYSBDQSA5NDk1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQzEgICAoaGV4KQkJQXVkaW5hdGUgUHR5IEwKLTAwMURDMSAgICAgKGJhc2UgMTYpCQlBdWRpbmF0ZSBQdHkgTAotCQkJCUxldmVsIDEsIDQ1OCBXYXR0bGUgU3QKLQkJCQlVbHRpbW8gTlNXIDIwMDcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUQtQzIgICAoaGV4KQkJWE9SVEVDIE9ZCi0wMDFEQzIgICAgIChiYXNlIDE2KQkJWE9SVEVDIE9ZCi0JCQkJSPZ5dORt9m50aWUgNgotCQkJCUxlbXDk5GzkIFBpcmthbm1hYSAzMzg4MAotCQkJCUZJTkxBTkQKLQotMDAtMUQtQzMgICAoaGV4KQkJUklLT1IgVFYsIEx0ZAotMDAxREMzICAgICAoYmFzZSAxNikJCVJJS09SIFRWLCBMdGQKLQkJCQlLb3N0b21hcm92c2t5IHBlci4sMwotCQkJCU1vc2NvdyAgMTA1MTIwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFELUM0ICAgKGhleCkJCUFJT0kgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMURDNCAgICAgKGJhc2UgMTYpCQlBSU9JIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJS0RYIE9tb3JpLCBCbGRnLiA4RgotCQkJCTEtNi04IE9tb3JpIEtpdGEsIE90YS1rdQotCQkJCVRva3lvICAxNDMtMDAxNgotCQkJCUpBUEFOCi0KLTAwLTFELUM1ICAgKGhleCkJCUJlaWppbmcgSmlheHVuIEZlaWhvbmcgRWxlY3RyaWNpYWwgQ28uLCBMdGQuCi0wMDFEQzUgICAgIChiYXNlIDE2KQkJQmVpamluZyBKaWF4dW4gRmVpaG9uZyBFbGVjdHJpY2lhbCBDby4sIEx0ZC4KLQkJCQlFbGVjdHJpY2FsIEJ1aWxkaW5nLE5vLiAzMSBKaWFvZGEgRWFzdCBSb2FkLAotCQkJCUJlaWppbmcgSGFpZGlhbiBEaXN0cmljdCwgMTAwMDQ0Ci0JCQkJQ0hJTkEKLQotMDAtMUQtQzYgICAoaGV4KQkJU05SIEluYy4KLTAwMURDNiAgICAgKGJhc2UgMTYpCQlTTlIgSW5jLgotCQkJCVZCSUMgVDIyM2hvLCBJQ1UsIDEwMy02IE11bmppLWRvbmcsIFlvdXNlb25nLWd1Ci0JCQkJRGFlamVvbiAgMzA1LTczMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC1DNyAgIChoZXgpCQlMLTMgQ29tbXVuaWNhdGlvbnMgR2VuZXZhIEFlcm9zcGFjZQotMDAxREM3ICAgICAoYmFzZSAxNikJCUwtMyBDb21tdW5pY2F0aW9ucyBHZW5ldmEgQWVyb3NwYWNlCi0JCQkJNDI0MCBJbnRlcm5hdGlvbmFsIFBhcmt3YXkKLQkJCQlTdWl0ZSAxMDAKLQkJCQlDYXJyb2xsdG9uIFRleGFzIDc1MDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DOCAgIChoZXgpCQlTY2FkYU1ldHJjcywgTExDLgotMDAxREM4ICAgICAoYmFzZSAxNikJCVNjYWRhTWV0cmNzLCBMTEMuCi0JCQkJNTk1IFZpc3RhIEhpbGxzIENvdXJ0Ci0JCQkJRXVyZWthIE1pc3NvdXJpIDYzMDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DOSAgIChoZXgpCQlHYWluU3BhbiBDb3JwLgotMDAxREM5ICAgICAoYmFzZSAxNikJCUdhaW5TcGFuIENvcnAuCi0JCQkJUC5PLiBCb3ggMjIzNTgwCi0JCQkJQ2FybWVsIENBIDkzOTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DQSAgIChoZXgpCQlQQVYgRWxlY3Ryb25pY3MgTGltaXRlZAotMDAxRENBICAgICAoYmFzZSAxNikJCVBBViBFbGVjdHJvbmljcyBMaW1pdGVkCi0JCQkJNyBMYXZlcm9jayBSb2FkCi0JCQkJU3RpcmxpbmcgUm9hZCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUFpcmRyaWUgTGFuYXJrc2hpcmUgTUw2IDdVRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFELUNCICAgKGhleCkJCUV46W5zIERldmVsb3BtZW50IE95Ci0wMDFEQ0IgICAgIChiYXNlIDE2KQkJRXjpbnMgRGV2ZWxvcG1lbnQgT3kKLQkJCQlLYXVwcGFrYXR1IDM2Ci0JCQkJS2FqYWFuaSBLYWludXUgODcxMDAKLQkJCQlGSU5MQU5ECi0KLTAwLTFELUNDICAgKGhleCkJCUhldHJhIFNlY3VyZSBTb2x1dGlvbnMKLTAwMURDQyAgICAgKGJhc2UgMTYpCQlIZXRyYSBTZWN1cmUgU29sdXRpb25zCi0JCQkJMjM1MCBDb21tZXJjZSBQYXJrIERyLgotCQkJCVBhbG0gQmF5IEZMIDMyOTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DRCAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxRENEICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DRSAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxRENFICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DRiAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxRENGICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1EMCAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQwICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1EMSAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQxICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1EMiAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQyICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1EMyAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQzICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1ENCAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQ0ICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1ENSAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQ1ICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1ENiAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQ2ICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1ENyAgIChoZXgpCQlBbGdvbGl0aAotMDAxREQ3ICAgICAoYmFzZSAxNikJCUFsZ29saXRoCi0JCQkJNDAwIElzYWJleQotCQkJCVNhaW50LUxhdXJlbnQgUWMgSDRUIDFWMwotCQkJCUNBTkFEQQotCi0wMC0xRC1EOCAgIChoZXgpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLTAwMUREOCAgICAgKGJhc2UgMTYpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLQkJCQlPbmUgTWljcm9zb2Z0IFdheQotCQkJCVJlZG1vbmQgV2FzaGluZ3RvbiA5ODA1Mi02Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1EOSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uLEx0ZC4KLTAwMUREOSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uLEx0ZC4KLQkJCQk2NixDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtREEgICAoaGV4KQkJTWlrcm9lbGVrdHJvbmlrYSBzcG9sLiBzIHIuIG8uCi0wMDFEREEgICAgIChiYXNlIDE2KQkJTWlrcm9lbGVrdHJvbmlrYSBzcG9sLiBzIHIuIG8uCi0JCQkJRHLhYnkgODQ5Ci0JCQkJVnlzb2vpIE39dG8gQ1ogNTY2IDAxCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMUQtREIgICAoaGV4KQkJQy1CRUwgQ29ycG9yYXRpb24KLTAwMUREQiAgICAgKGJhc2UgMTYpCQlDLUJFTCBDb3Jwb3JhdGlvbgotCQkJCUZ1dGFiYWNobyAzNS0xMgotCQkJCTZGIE9rYWRhIEJpbGRnCi0JCQkJSXRhYmFzaGkta3UgVG9reW8gMTczLTAwMTEKLQkJCQlKQVBBTgotCi0wMC0xRC1EQyAgIChoZXgpCQlIYW5nWmhvdSBEZUNoYW5nTG9uZyBUZWNoJkluZm8gQ28uLEx0ZAotMDAxRERDICAgICAoYmFzZSAxNikJCUhhbmdaaG91IERlQ2hhbmdMb25nIFRlY2gmSW5mbyBDby4sTHRkCi0JCQkJUm9vbSAxMTAyLEtlSmkgTWFuc2lvbiwKLQkJCQlFYXN0IFNvZnR3YXJlIFBhcmssOTAgV2VuU2FuIFJvYWQuCi0JCQkJSGFuZ1pob3UgWmhlSmlhbmcgMzEwMDEyCi0JCQkJQ0hJTkEKLQotMDAtMUQtREQgICAoaGV4KQkJREFUIEguSy4gTElNSVRFRAotMDAxREREICAgICAoYmFzZSAxNikJCURBVCBILksuIExJTUlURUQKLQkJCQlTdWl0ZSAxNDA1IDE0L0YuLCBDaXR5IFBsYXphIDQsIFRhaSBLb28gV2FuIFJkLAotCQkJCVRhaSBLb28gU2hpbmcgSG9uZyBLb25nIElzbGFuZCAwNjQ4MjgKLQkJCQlIT05HIEtPTkcKLQotMDAtMUQtREUgICAoaGV4KQkJWmhlamlhbmcgQnJvYWRjYXN0JlRlbGV2aXNpb24gVGVjaG5vbG9neSBDby4sTHRkLgotMDAxRERFICAgICAoYmFzZSAxNikJCVpoZWppYW5nIEJyb2FkY2FzdCZUZWxldmlzaW9uIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlCdWlsZGluZyBOby4xNixYaWRvdW1lbiBJbmR1c3RyeSBQYXJrLFdlbnlpIFJvYWQsCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDEyCi0JCQkJQ0hJTkEKLQotMDAtMUQtREYgICAoaGV4KQkJU3VuaXRlYyBFbnRlcnByaXNlIENvLiwgTHRkLgotMDAxRERGICAgICAoYmFzZSAxNikJCVN1bml0ZWMgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQkzRi4sIE5vLiA5OC0xLCBNaW5jeXVhbiBSZC4KLQkJCQlTaW5kaWFuIENpdHkgVGFpcGVpIENvdW50eSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELUUwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxREUwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUQtRTEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFERTEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRC1FMiAgIChoZXgpCQlSYWRpb25vciBDb21tdW5pY2F0aW9ucwotMDAxREUyICAgICAoYmFzZSAxNikJCVJhZGlvbm9yIENvbW11bmljYXRpb25zCi0JCQkJSW5ndmFsZCBZc3RnYWFyZHMgdmVnIDIzCi0JCQkJVHJvbmRoZWltIFRSRCA3MDQ2Ci0JCQkJTk9SV0FZCi0KLTAwLTFELUUzICAgKGhleCkJCUludHVpY29tCi0wMDFERTMgICAgIChiYXNlIDE2KQkJSW50dWljb20KLQkJCQkxODgwIFMuIEZsYXRpcm9uIEN0LgotCQkJCVN1aXRlIFIKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1FNCAgIChoZXgpCQlWaXNpb25lZXJlZCBJbWFnZSBTeXN0ZW1zCi0wMDFERTQgICAgIChiYXNlIDE2KQkJVmlzaW9uZWVyZWQgSW1hZ2UgU3lzdGVtcwotCQkJCTEwNTYxIEdhcmRlbiBHcm92ZSBCbHZkCi0JCQkJR2FyZGVuIEdyb3ZlIENhbGlmb3JuaWEgOTI4NDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUU1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMURFNSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1FNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFERTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRTcgICAoaGV4KQkJTWFyaW5lIFNvbmljIFRlY2hub2xvZ3ksIEx0ZC4KLTAwMURFNyAgICAgKGJhc2UgMTYpCQlNYXJpbmUgU29uaWMgVGVjaG5vbG9neSwgTHRkLgotCQkJCTU1MDggR2VvcmdlIFdhc2hpbmd0b24gTWVtb3JpYWwgSGlnaHdheQotCQkJCVAuTy4gQm94IDczMAotCQkJCVdoaXRlIE1hcnNoIFZpcmdpbmlhIDIzMTgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1FOCAgIChoZXgpCQlOaWtrbyBEZW5raSBUc3VzaGluIENvbXBhbnkoTkRUQykKLTAwMURFOCAgICAgKGJhc2UgMTYpCQlOaWtrbyBEZW5raSBUc3VzaGluIENvbXBhbnkoTkRUQykKLQkJCQk0NDAgS2Ftb3NoaWRhLXRvd24sIEFvYmEta3UKLQkJCQlZb2tvaGFtYSAgMjI3LTAwMzMKLQkJCQlKQVBBTgotCi0wMC0xRC1FOSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxREU5ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRC1FQSAgIChoZXgpCQlDb21tdGVzdCBJbnN0cnVtZW50cyBMdGQKLTAwMURFQSAgICAgKGJhc2UgMTYpCQlDb21tdGVzdCBJbnN0cnVtZW50cyBMdGQKLQkJCQlMZXZlbCAyLCAyMiBNb29yaG91c2UgQXZlCi0JCQkJQ2hyaXN0Y2h1cmNoIENhbnRlcmJ1cnkgODI0MwotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTFELUVCICAgKGhleCkJCURJTkVDIEludGVybmF0aW9uYWwKLTAwMURFQiAgICAgKGJhc2UgMTYpCQlESU5FQyBJbnRlcm5hdGlvbmFsCi0JCQkJUnVlIGRlIGxhIEdhcmUsIDMwCi0JCQkJQlJBSU5FIEwnQUxMRVVEIEJSQUJBTlQgV0FMTE9OIDE0MjAKLQkJCQlCRUxHSVVNCi0KLTAwLTFELUVDICAgKGhleCkJCU1hcnVzeXMKLTAwMURFQyAgICAgKGJhc2UgMTYpCQlNYXJ1c3lzCi0JCQkJRXVuc3VuZyBCbGRnLiA1RgotCQkJCTUzLTggQ2h1bmdEYW0tRG9uZyBLYW5nTmFtLUt1Ci0JCQkJU2VvdWwgIDEzNS03NjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtRUQgICAoaGV4KQkJR3JpZCBOZXQsIEluYy4KLTAwMURFRCAgICAgKGJhc2UgMTYpCQlHcmlkIE5ldCwgSW5jLgotCQkJCTM0MCBCcmFubmFuIFN0cmVldAotCQkJCVN1aXRlIDUwMQotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUVFICAgKGhleCkJCU5FWFRWSVNJT04gU0lTVEVNQVMgRElHSVRBSVMgREUgVEVMRVZJU8NPIExUREEuCi0wMDFERUUgICAgIChiYXNlIDE2KQkJTkVYVFZJU0lPTiBTSVNURU1BUyBESUdJVEFJUyBERSBURUxFVklTw08gTFREQS4KLQkJCQlBbGFtZWRhIFJpbyBOZWdybywgMTAzMCAtIDE5by4gYW5kYXIgY29uai4gMTkwNAotCQkJCUJhcnVlcmkgU+NvIFBhdWxvIDA2NDU0LTAwMAotCQkJCUJSQVpJTAotCi0wMC0xRC1FRiAgIChoZXgpCQlUUklNTSwgSU5DLgotMDAxREVGICAgICAoYmFzZSAxNikJCVRSSU1NLCBJTkMuCi0JCQkJNDA3IFJBSUxST0FEIFNUUkVFVAotCQkJCUJVVE5FUiBOQyAyNzUwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRjAgICAoaGV4KQkJVmlkaWVudCBTeXN0ZW1zLCBJbmMuCi0wMDFERjAgICAgIChiYXNlIDE2KQkJVmlkaWVudCBTeXN0ZW1zLCBJbmMuCi0JCQkJNDAwMCBCdXJ0b24gRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NDA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRjEgICAoaGV4KQkJSW50ZWdvIFN5c3RlbXMsIEluYy4KLTAwMURGMSAgICAgKGJhc2UgMTYpCQlJbnRlZ28gU3lzdGVtcywgSW5jLgotCQkJCTUzNDMgQm93ZGVuIFJvYWQKLQkJCQlKYWNrc29udmlsbGUgRkwgMzIyMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUYyICAgKGhleCkJCU5ldGZsaXgsIEluYy4KLTAwMURGMiAgICAgKGJhc2UgMTYpCQlOZXRmbGl4LCBJbmMuCi0JCQkJMTAwIFdpbmNoZXN0ZXIgQ2lyY2xlCi0JCQkJTG9zIEdhdG9zIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1GMyAgIChoZXgpCQlTQlMgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMURGMyAgICAgKGJhc2UgMTYpCQlTQlMgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlXMi1CNS82IEhpZ2gtdGVjaCBpbmR1c3RyaWFsIHBhcmsKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUQtRjQgICAoaGV4KQkJTWFnZWxsYW4gVGVjaG5vbG9neSBQdHkgTGltaXRlZAotMDAxREY0ICAgICAoYmFzZSAxNikJCU1hZ2VsbGFuIFRlY2hub2xvZ3kgUHR5IExpbWl0ZWQKLQkJCQk2NSBKb2huc3RvbiBTdHJlZXQKLQkJCQlBbm5hbmRhbGUgTlNXIDIwMDAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUQtRjUgICAoaGV4KQkJU3Vuc2hpbmUgQ28sTFRECi0wMDFERjUgICAgIChiYXNlIDE2KQkJU3Vuc2hpbmUgQ28sTFRECi0JCQkJMS0zLTUgS29qaW1hY2hpCi0JCQkJQ2hpeW9kYS1rdQotCQkJCVRPS1lPIEthbnRvIHJlZ2lvbiAxMDItMDA4MwotCQkJCUpBUEFOCi0KLTAwLTFELUY2ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxREY2ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC1GNyAgIChoZXgpCQlSLiBTVEFITCBTY2hhbHRnZXLkdGUgR21iSAotMDAxREY3ICAgICAoYmFzZSAxNikJCVIuIFNUQUhMIFNjaGFsdGdlcuR0ZSBHbWJICi0JCQkJYW0gQmFobmhvZiAzMAotCQkJCVdhbGRlbmJ1cmcgQmFkZW4gV/xydHRlbWJlcmcgNzQ2MzgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELUY4ICAgKGhleCkJCVdlYnBybyBWaXNpb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxREY4ICAgICAoYmFzZSAxNikJCVdlYnBybyBWaXNpb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLiwgTm8uNTczLCBDaW5ncGluZyBSZC4KLQkJCQlBbnBpbmcgRGlzdHJpY3QgIDcwOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtRjkgICAoaGV4KQkJQ3liaW90cm9uaWNzIChGYXIgRWFzdCkgTGltaXRlZAotMDAxREY5ICAgICAoYmFzZSAxNikJCUN5YmlvdHJvbmljcyAoRmFyIEVhc3QpIExpbWl0ZWQKLQkJCQlVbml0IDE5MDYsIEVhc3Rlcm4gQ2VudHJlLAotCQkJCTEwNjUgS2luZydzIFJvYWQsCi0JCQkJUXVhcnJ5IEJheSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFELUZBICAgKGhleCkJCUZ1amlhbiBMQU5ESSBDb21tZXJjaWFsIEVxdWlwbWVudCBDby4sTHRkCi0wMDFERkEgICAgIChiYXNlIDE2KQkJRnVqaWFuIExBTkRJIENvbW1lcmNpYWwgRXF1aXBtZW50IENvLixMdGQKLQkJCQlCdWlsZGluZyAyMyx0aGUgMXN0IHNlY3Rpb24sU29mdHdhcmUgR2FyZGVuCi0JCQkJTm8uODkgU29mdHdhcmUgUm9hZCwKLQkJCQlGdXpob3UgRnVqaWFuIDM1MDAwMwotCQkJCUNISU5BCi0KLTAwLTFELUZCICAgKGhleCkJCU5FVENMRVVTIFN5c3RlbXMgQ29ycG9yYXRpb24KLTAwMURGQiAgICAgKGJhc2UgMTYpCQlORVRDTEVVUyBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJM0YsIERhaWljaGktbWFlZGEgQmxkZy4KLQkJCQkzLTUtMywgWWFtYXRvLWhpZ2FzaGkKLQkJCQlZYW1hdG8tc2hpICAyNDItMDAxNwotCQkJCUpBUEFOCi0KLTAwLTFELUZDICAgKGhleCkJCUtTSUMKLTAwMURGQyAgICAgKGJhc2UgMTYpCQlLU0lDCi0JCQkJIzZGLCBLb3JlYSBGZWRlcmF0aW9uIG9mIFRlYWNoZXIncyBBc3NvY2lhdGlvbnMsIDExNC0xLCBUYWVCb25nLVJvLAotCQkJCVNlb3VsIFNlb2Noby1LdSAxMzctNzE1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELUZEICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFERkQgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFELUZFICAgKGhleCkJCVBhbG0sIEluYwotMDAxREZFICAgICAoYmFzZSAxNikJCVBhbG0sIEluYwotCQkJCTk1MCBXZXN0IE1hdWRlIEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRkYgICAoaGV4KQkJTmV0d29yayBDcml0aWNhbCBTb2x1dGlvbnMgTHRkCi0wMDFERkYgICAgIChiYXNlIDE2KQkJTmV0d29yayBDcml0aWNhbCBTb2x1dGlvbnMgTHRkCi0JCQkJMTJCIFNvdXRodmlldyBQYXJrCi0JCQkJQ2F2ZXJzaGFtCi0JCQkJUmVhZGluZyBCZXJrc2hpcmUgUkc0NUFGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtMDAgICAoaGV4KQkJU2hhbnRvdSBJbnN0aXR1dGUgb2YgVWx0cmFzb25pYyBJbnN0cnVtZW50cwotMDAxRTAwICAgICAoYmFzZSAxNikJCVNoYW50b3UgSW5zdGl0dXRlIG9mIFVsdHJhc29uaWMgSW5zdHJ1bWVudHMKLQkJCQlOby43NywgSmluc2hhIFJvYWQsCi0JCQkJU2hhbnRvdSBHdWFuZ2RvbmcgNTE1MDQxCi0JCQkJQ0hJTkEKLQotMDAtMUUtMDEgICAoaGV4KQkJUmVuZXNhcyBUZWNobm9sb2d5IFNhbGVzIENvLiwgTHRkLgotMDAxRTAxICAgICAoYmFzZSAxNikJCVJlbmVzYXMgVGVjaG5vbG9neSBTYWxlcyBDby4sIEx0ZC4KLQkJCQkyLTYtMgotCQkJCU90ZW1hY2hpCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDAtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTFFLTAyICAgKGhleCkJCVNvdWdvdSBLZWlrYWt1IEtvdWd5b3UgQ28uLEx0ZC4KLTAwMUUwMiAgICAgKGJhc2UgMTYpCQlTb3Vnb3UgS2Vpa2FrdSBLb3VneW91IENvLixMdGQuCi0JCQkJSEsyIGJsZC4gMi0yMS0xMAotCQkJCU5pc2hpb2dpbWluYW1pCi0JCQkJU3VnaW5hbWlrdSBUb2t5byAxNjctMDA1MwotCQkJCUpBUEFOCi0KLTAwLTFFLTAzICAgKGhleCkJCUxpQ29tbSBDby4sIEx0ZC4KLTAwMUUwMyAgICAgKGJhc2UgMTYpCQlMaUNvbW0gQ28uLCBMdGQuCi0JCQkJOTA4LTEgU0VPLVJJLCBJRE9ORy1NWUVPTgotCQkJCVlPTkdJTi1TSSBHWUVPTkdHSS1ETyA0NDktODM0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTA0ICAgKGhleCkJCUhhbnNvbiBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotMDAxRTA0ICAgICAoYmFzZSAxNikJCUhhbnNvbiBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotCQkJCTk4MTAgVmFyaWVsIEF2ZS4KLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0wNSAgIChoZXgpCQlYc2VlZCBUZWNobm9sb2dpZXMgJiBDb21wdXRpbmcKLTAwMUUwNSAgICAgKGJhc2UgMTYpCQlYc2VlZCBUZWNobm9sb2dpZXMgJiBDb21wdXRpbmcKLQkJCQlUb3BheiBIb3VzZSwgTUFUQU0KLQkJCQk1IE5haHVtIEhhdCBTdC4KLQkJCQlIYWlmYSAgMzkxMDAKLQkJCQlJU1JBRUwKLQotMDAtMUUtMDYgICAoaGV4KQkJV0lCUkFJTgotMDAxRTA2ICAgICAoYmFzZSAxNikJCVdJQlJBSU4KLQkJCQkzMDYgSkVJIFBsYXRzIEIvRCA0NTktMTEgR2FzYW4tZG9uZywgR2V1bWNoZW9uLWd1Ci0JCQkJU0VPVUwgIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMDcgICAoaGV4KQkJV2lueSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxRTA3ICAgICAoYmFzZSAxNikJCVdpbnkgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzMDUtMzAzLCBCdWNoZW9uIFRlY2huby1wYXJrLCAjMzY1Ci0JCQkJU2FtamVvbmctZG9uZywgT2plb25nLWd1Ci0JCQkJQnVjaGVvbiBHeWVvbmdnaS1kbyA0MjEtNzQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTA4ICAgKGhleCkJCUNlbnRlYyBOZXR3b3JrcyBJbmMKLTAwMUUwOCAgICAgKGJhc2UgMTYpCQlDZW50ZWMgTmV0d29ya3MgSW5jCi0JCQkJU2NpZW5jZSBQbGF6YSAxMEYgLCAzMjggQWlycG9ydCBSZAotCQkJCVN1emhvdSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlTdXpob3UgSmlhbmdzdSAyMTUwMjEKLQkJCQlDSElOQQotCi0wMC0xRS0wOSAgIChoZXgpCQlaRUZBVEVLIENvLixMVEQKLTAwMUUwOSAgICAgKGJhc2UgMTYpCQlaRUZBVEVLIENvLixMVEQKLQkJCQkzMjYtNCBHYXNhbmRvbmcsIEdldW1jaGVvbmd1Ci0JCQkJU2VvdWwgIDE1My04MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMEEgICAoaGV4KQkJU3liYSBUZWNoIExpbWl0ZWQKLTAwMUUwQSAgICAgKGJhc2UgMTYpCQlTeWJhIFRlY2ggTGltaXRlZAotCQkJCVJNMTMwMSwgVmFudGEgSW5kdXN0cmlhbCBDZW50cmUsCi0JCQkJMjEtMzMgVGFpIExpbiBQYWkgUmQuCi0JCQkJS3dhaSBDaHVuZyAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLTBCICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxRTBCICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0wQyAgIChoZXgpCQlTaGVyd29vZCBJbmZvcm1hdGlvbiBQYXJ0bmVycywgSW5jLgotMDAxRTBDICAgICAoYmFzZSAxNikJCVNoZXJ3b29kIEluZm9ybWF0aW9uIFBhcnRuZXJzLCBJbmMuCi0JCQkJMTEyMCBXLCAxMjJuZCBBdmUsIFN0ZSAzMDAKLQkJCQlXZXN0bWluc3RlciBDTyA4MDIzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMEQgICAoaGV4KQkJTWljcmFuIEx0ZC4KLTAwMUUwRCAgICAgKGJhc2UgMTYpCQlNaWNyYW4gTHRkLgotCQkJCVZlcnNoaW5pbmEgc3QuIDQ3Ci0JCQkJVG9tc2sgVG9tc2sgUmVnaW9uIDYzNDAzNAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRS0wRSAgIChoZXgpCQlNQVhJIFZJRVcgSE9MRElOR1MgTElNSVRFRAotMDAxRTBFICAgICAoYmFzZSAxNikJCU1BWEkgVklFVyBIT0xESU5HUyBMSU1JVEVECi0JCQkJU3VpdGUgMjMwMiwyMy9GIEdyZWF0IEVhZ2xlIENlbnRyZSwgMjMgSGFyYm91ciBSb2FkLCBXYW5jaGFpCi0JCQkJSG9uZyBLb25nICAKLQkJCQlDSElOQQotCi0wMC0xRS0wRiAgIChoZXgpCQlCcmlvdCBJbnRlcm5hdGlvbmFsCi0wMDFFMEYgICAgIChiYXNlIDE2KQkJQnJpb3QgSW50ZXJuYXRpb25hbAotCQkJCTIgcnVlIHJvZ2VyIEJvbm5ldAotCQkJCVBvbnQgZGUgbCdBcmNoZSBFdXJlIDI3MzQwCi0JCQkJRlJBTkNFCi0KLTAwLTFFLTEwICAgKGhleCkJCVNoZW5aaGVuIEh1YXdlaSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBDby4sTHRkLgotMDAxRTEwICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIEh1YXdlaSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCUhVQVdFSSBJTkRVU1RSSUFMIFBLIEJBTlRJQU4sIExPTkdHQU5HIERJU1QgU0hFTlpIRU4KLQkJCQlTSEVOWkhFTiBHVUFOR0RPTkcgNTE4MDc3Ci0JCQkJQ0hJTkEKLQotMDAtMUUtMTEgICAoaGV4KQkJRUxFTFVYIElOVEVSTkFUSU9OQUwgTFRECi0wMDFFMTEgICAgIChiYXNlIDE2KQkJRUxFTFVYIElOVEVSTkFUSU9OQUwgTFRECi0JCQkJM0YuLCBOTy4xMDMgQ0hPVyBUWkUgU1RSRUVUCi0JCQkJTkVJLUhVIERJU1RSSUNUICgxMTQpCi0JCQkJVEFJUEVJICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTEyICAgKGhleCkJCUVjb2xhYgotMDAxRTEyICAgICAoYmFzZSAxNikJCUVjb2xhYgotCQkJCTY1NSBMb25lIE9hayBEcml2ZQotCQkJCVJlc2VhcmNoIENlbnRlciBEb2NrIC0tIEY0NDE2Ci0JCQkJRWFnYW4gTU4gNTUxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTEzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUUxMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0xNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFMTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMTUgICAoaGV4KQkJQmVlY2ggSGlsbCBFbGVjdHJvbmljcwotMDAxRTE1ICAgICAoYmFzZSAxNikJCUJlZWNoIEhpbGwgRWxlY3Ryb25pY3MKLQkJCQlCZWVjaGNyb2Z0LCBCZWVjaCBIaWxsIFJvYWQKLQkJCQlCZWVjaCBIaWxsCi0JCQkJUmVhZGluZyBCZXJrc2hpcmUgUkc3IDJBVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFFLTE2ICAgKGhleCkJCUtleXRyb25peAotMDAxRTE2ICAgICAoYmFzZSAxNikJCUtleXRyb25peAotCQkJCVVuZ2FyZ2Fzc2UgNjQtNjYvMS8xMDkKLQkJCQlWaWVubmEgIDEwMzAKLQkJCQlBVVNUUklBCi0KLTAwLTFFLTE3ICAgKGhleCkJCVNUTiBCVgotMDAxRTE3ICAgICAoYmFzZSAxNikJCVNUTiBCVgotCQkJCUFtZXJpa2F3ZWcgNAotCQkJCUh1bHN0IFplZWxhbmQgNDU2MSBQQgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFFLTE4ICAgKGhleCkJCVJhZGlvIEFjdGl2aXR5IHNybAotMDAxRTE4ICAgICAoYmFzZSAxNikJCVJhZGlvIEFjdGl2aXR5IHNybAotCQkJCVZpYSBQb250ZSBOdW92byA4Ci0JCQkJTWlsYW5vIE1JIDIwMTI4Ci0JCQkJSVRBTFkKLQotMDAtMUUtMTkgICAoaGV4KQkJR1RSSQotMDAxRTE5ICAgICAoYmFzZSAxNikJCUdUUkkKLQkJCQlNL1MgMDgyMQotCQkJCUF0bGFudGEgR0EgMzAzMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTFBICAgKGhleCkJCUJlc3QgU291cmNlIFRhaXdhbiBJbmMuCi0wMDFFMUEgICAgIChiYXNlIDE2KQkJQmVzdCBTb3VyY2UgVGFpd2FuIEluYy4KLQkJCQkyRiwgTm8uMTYsIExhbmUgNTYsIEpob25namhlbmcgVy4gUmQuLAotCQkJCUpodWJlaSBDaXR5LCBIc2luY2h1IENvdW50eSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTFCICAgKGhleCkJCURpZ2l0YWwgU3RyZWFtIFRlY2hub2xvZ3ksIEluYy4KLTAwMUUxQiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFN0cmVhbSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNCw1LDZ0aCBGbC4sIFRhZUNoYW5nIEIvRCwgNDUxLTEKLQkJCQlTdW5nTmFlLURvbmcsIEdhbmdEb25nLUt1Ci0JCQkJU2VvdWwgIDEzNC0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMUMgICAoaGV4KQkJU1dTIEF1c3RyYWxpYSBQdHkgTGltaXRlZAotMDAxRTFDICAgICAoYmFzZSAxNikJCVNXUyBBdXN0cmFsaWEgUHR5IExpbWl0ZWQKLQkJCQkyMyBTY2FubG9uIERyaXZlCi0JCQkJRXBwaW5nIFZpY3RvcmlhIDMwNzYKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUUtMUQgICAoaGV4KQkJRWFzdCBDb2FzdCBEYXRhY29tLCBJbmMuCi0wMDFFMUQgICAgIChiYXNlIDE2KQkJRWFzdCBDb2FzdCBEYXRhY29tLCBJbmMuCi0JCQkJMjQ1IEd1cyBIaXBwIEJsdmQuLCBTVEUgMwotCQkJCVJvY2tsZWRnZSBGTCAzMjk1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMUUgICAoaGV4KQkJSG9uZXl3ZWxsIExpZmUgU2FmZXR5Ci0wMDFFMUUgICAgIChiYXNlIDE2KQkJSG9uZXl3ZWxsIExpZmUgU2FmZXR5Ci0JCQkJMTIgQ2xpbnRvbnZpbGxlIFJvYWQKLQkJCQlOb3J0aGZvcmQgQ1QgMDQyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMUYgICAoaGV4KQkJTm9ydGVsCi0wMDFFMUYgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFFLTIwICAgKGhleCkJCUludGVydGFpbiBJbmMuCi0wMDFFMjAgICAgIChiYXNlIDE2KQkJSW50ZXJ0YWluIEluYy4KLQkJCQlTdWl0ZSA2MDggTEcgRWNsYXQtMiwgMjQ1LTQgU2VvaHl1bi1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJU3VuZ25nbS1zaGkgS3l1bmdnaS1kbyA0NjMtODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTIxICAgKGhleCkJCVFpc2RhIENvLgotMDAxRTIxICAgICAoYmFzZSAxNikJCVFpc2RhIENvLgotCQkJCTE1NyBTaGFuLVlpbmcgUm9hZCwgR3VlaXNoYW4KLQkJCQlUYW95dWFuICAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTIyICAgKGhleCkJCUFSVk9PIEltYWdpbmcgUHJvZHVjdHMgQlYKLTAwMUUyMiAgICAgKGJhc2UgMTYpCQlBUlZPTyBJbWFnaW5nIFByb2R1Y3RzIEJWCi0JCQkJUE8gQm94IDQzOQotCQkJCVdvZXJkZW4gVVQgMzQ0MCBBSwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFFLTIzICAgKGhleCkJCUVsZWN0cm9uaWMgRWR1Y2F0aW9uYWwgRGV2aWNlcywgSW5jCi0wMDFFMjMgICAgIChiYXNlIDE2KQkJRWxlY3Ryb25pYyBFZHVjYXRpb25hbCBEZXZpY2VzLCBJbmMKLQkJCQkxOTAzIFMgR3JhbnQgU3QKLQkJCQlEZW52ZXIgQ08gODAyMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTI0ICAgKGhleCkJCVpoZWppYW5nIEJlbGwgVGVjaG5vbG9neSBDby4sbHRkCi0wMDFFMjQgICAgIChiYXNlIDE2KQkJWmhlamlhbmcgQmVsbCBUZWNobm9sb2d5IENvLixsdGQKLQkJCQk2IFhpZG91bWVuIFJkLiBXZXN0IExha2UgZGlzdHJpY3QKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi0wMC0xRS0yNSAgIChoZXgpCQlJbnRlayBEaWdpdGFsIEluYwotMDAxRTI1ICAgICAoYmFzZSAxNikJCUludGVrIERpZ2l0YWwgSW5jCi0JCQkJMTEwMSwgMTF0aCBGbC4sIEFueWFuZyBLLWNlbnRlciBidWlsZGluZywgMTU5MS05Ci0JCQkJR3dhbnlhbmctZG9uZywgRG9uZ2FuLWd1Ci0JCQkJQW55YW5nIEd5ZW9uZ2dpLWRvIDQzMS04MTUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMjYgICAoaGV4KQkJRGlnaWZyaWVuZHMgQ28uIEx0ZAotMDAxRTI2ICAgICAoYmFzZSAxNikJCURpZ2lmcmllbmRzIENvLiBMdGQKLQkJCQlKb3lhbmcgQi9EIDZ0aCBGbG9vcgotCQkJCTExMyBTYW1zdW5nLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTA5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS0yNyAgIChoZXgpCQlTQk4gVEVDSCBDby4sTHRkLgotMDAxRTI3ICAgICAoYmFzZSAxNikJCVNCTiBURUNIIENvLixMdGQuCi0JCQkJIzcwNiBJbmR1c3RyaWFsIEFjYWRlbWljIENlbnRlciwgS29ua3VrIFVuaXZlcnNpdHksIEh3YXlhbmctZG9uZywgR3dhbmdqaW4tZ3UKLQkJCQlTZW91bCAgMTQzLTcwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS0yOCAgIChoZXgpCQlMdW1leGlzIENvcnBvcmF0aW9uCi0wMDFFMjggICAgIChiYXNlIDE2KQkJTHVtZXhpcyBDb3Jwb3JhdGlvbgotCQkJCTMxODQgQWlyd2F5IEF2ZSBCbGRnIEQKLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0yOSAgIChoZXgpCQlIeXBlcnRoZXJtIEluYwotMDAxRTI5ICAgICAoYmFzZSAxNikJCUh5cGVydGhlcm0gSW5jCi0JCQkJMTUgR3JlYXQgSG9sbG93IFJkCi0JCQkJUE8gQm94IDUwMTAKLQkJCQlIYW5vdmVyIE5IIDAzNzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0yQSAgIChoZXgpCQlOZXRnZWFyIEluYy4KLTAwMUUyQSAgICAgKGJhc2UgMTYpCQlOZXRnZWFyIEluYy4KLQkJCQk0NTAwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0yQiAgIChoZXgpCQlSYWRpbyBTeXN0ZW1zIERlc2lnbiwgSW5jLgotMDAxRTJCICAgICAoYmFzZSAxNikJCVJhZGlvIFN5c3RlbXMgRGVzaWduLCBJbmMuCi0JCQkJNjAxIEhlcm9uIERyaXZlCi0JCQkJTG9nYW4gVHdwIE5ldyBKZXJzZXkgMDgwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTJDICAgKGhleCkJCUN5VmVyc2UgQ29ycG9yYXRpb24KLTAwMUUyQyAgICAgKGJhc2UgMTYpCQlDeVZlcnNlIENvcnBvcmF0aW9uCi0JCQkJU2hvdXRvdSBSb3VrdWJhbmthbiBCbGRnLiA0RgotCQkJCTEtMjgtNCwgU2hvdXRvdQotCQkJCVNoaWJ1eWEta3UgVG9reW8gMTUwLTAwNDYKLQkJCQlKQVBBTgotCi0wMC0xRS0yRCAgIChoZXgpCQlTVElNCi0wMDFFMkQgICAgIChiYXNlIDE2KQkJU1RJTQotCQkJCVpBQyBsZXMgQ09VU1RFTExJRVJTCi0JCQkJNiBSdWUgZGUgTCdBQlJJVkFETwotCQkJCUNBU1RSSUVTIEhFUkFVTFQgMzQxNjAKLQkJCQlGUkFOQ0UKLQotMDAtMUUtMkUgICAoaGV4KQkJU0lSVEkgUy5wLkEuCi0wMDFFMkUgICAgIChiYXNlIDE2KQkJU0lSVEkgUy5wLkEuCi0JCQkJVmlhIFN0YW1pcmEgZCdBbmNvbmEgOQotCQkJCU1JTEFOICAyMDEyNwotCQkJCUlUQUxZCi0KLTAwLTFFLTJGICAgKGhleCkJCURpTW90byBQdHkgTHRkCi0wMDFFMkYgICAgIChiYXNlIDE2KQkJRGlNb3RvIFB0eSBMdGQKLQkJCQk3IE1lbGphcmVuIFBsYWNlCi0JCQkJQnVkZXJpbSBRdWVlbnNsYW5kIDQ1NTYKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUUtMzAgICAoaGV4KQkJU2hpcmVlbiBJbmMKLTAwMUUzMCAgICAgKGJhc2UgMTYpCQlTaGlyZWVuIEluYwotCQkJCTg1MzEgWmlnZ3kgTGFuZQotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMzEgICAoaGV4KQkJSU5GT01BUksgQ08uLExURC4KLTAwMUUzMSAgICAgKGJhc2UgMTYpCQlJTkZPTUFSSyBDTy4sTFRELgotCQkJCTVGLixHZW93biBCbGRnLiwxMzYwLTUzCi0JCQkJU2VvdWwgU2VvY2hvLWRvbmcsU2VvY2hvLWd1IDEzNy04NjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMzIgICAoaGV4KQkJWmVuc3lzCi0wMDFFMzIgICAgIChiYXNlIDE2KQkJWmVuc3lzCi0JCQkJRW1kcnVwdmVqIDI2Ci0JCQkJQ29wZW5oYWdlbiBPICBESy0yMTAwCi0JCQkJREVOTUFSSwotCi0wMC0xRS0zMyAgIChoZXgpCQlJbnZlbnRlYyBDb3Jwb3JhdGlvbgotMDAxRTMzICAgICAoYmFzZSAxNikJCUludmVudGVjIENvcnBvcmF0aW9uCi0JCQkJSW52ZW50ZWMgQnVpbGRpbmcsIDY2IEhvdS1LYW5nIFN0cmVldAotCQkJCVNoaW4tTGluIERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTM0ICAgKGhleCkJCUNyeXB0b01ldHJpY3MKLTAwMUUzNCAgICAgKGJhc2UgMTYpCQlDcnlwdG9NZXRyaWNzCi0JCQkJMTYwIE1pY2hhZWwgQ293cGxhbmQgRHIKLQkJCQlPdHRhd2EgT250YXJpbyBLMk0gMVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFFLTM1ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAxRTM1ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUUtMzYgICAoaGV4KQkJSVBURQotMDAxRTM2ICAgICAoYmFzZSAxNikJCUlQVEUKLQkJCQlHZWxlZW5sYWFuIDUKLQkJCQlHZW5rIExpbWJ1cmcgMzYwMAotCQkJCUJFTEdJVU0KLQotMDAtMUUtMzcgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDFFMzcgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSwgU0VDLjEsVEFJUElORyBSRC4KLQkJCQlUU0FPVFVFTgotCQkJCU5BTlRPVSA1NDI2MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtMzggICAoaGV4KQkJQmx1ZWNhcmQgU29mdHdhcmUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMUUzOCAgICAgKGJhc2UgMTYpCQlCbHVlY2FyZCBTb2Z0d2FyZSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUQtODAxIFNoYW5nZGkgU2NpZW5jZSBCdWlsZGluZwotCQkJCU5vLjggU2hhbmdkaSBXZXN0IFJvYWQKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0xRS0zOSAgIChoZXgpCQlDb21zeXMgQ29tbXVuaWNhdGlvbiBMdGQuCi0wMDFFMzkgICAgIChiYXNlIDE2KQkJQ29tc3lzIENvbW11bmljYXRpb24gTHRkLgotCQkJCTkgSGFtZW5vZmltIHN0LgotCQkJCUhlcnplbGlhICA0NjcyNQotCQkJCUlTUkFFTAotCi0wMC0xRS0zQSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRTNBICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaXNrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFFLTNCICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFFM0IgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFFLTNDICAgKGhleCkJCUx5bmdib3ggTWVkaWEgQUIKLTAwMUUzQyAgICAgKGJhc2UgMTYpCQlMeW5nYm94IE1lZGlhIEFCCi0JCQkJRGlza2V0dGdhdGFuIDExQgotCQkJCUxpbmtvcGluZyAgU0UtNTgzMzUKLQkJCQlTV0VERU4KLQotMDAtMUUtM0QgICAoaGV4KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotMDAxRTNEICAgICAoYmFzZSAxNikJCUFscHMgRWxlY3RyaWMgQ28uLCBMdGQKLQkJCQkxLTItMSwgT2tpbm91Y2hpCi0JCQkJU29tYSBjaXR5IEZ1a3VzaGltLXByZWYgOTc2LTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xRS0zRSAgIChoZXgpCQlLTVcgSW5jLgotMDAxRTNFICAgICAoYmFzZSAxNikJCUtNVyBJbmMuCi0JCQkJNjUgWW91bmdjaHVuLXJpLCBEb25ndGFuLW15dW4KLQkJCQlId2FzdW5nLXNpIEt5dW5na2ktZG8gNDQ1LTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS0zRiAgIChoZXgpCQlUcmVsbGlzV2FyZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMUUzRiAgICAgKGJhc2UgMTYpCQlUcmVsbGlzV2FyZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNjUxNiBWaWEgRXNwcmlsbG8sIFN1aXRlIDMwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNDAgICAoaGV4KQkJU2hhbmdoYWkgRGFyZUdsb2JhbCBUZWNobm9sb2dpZXMgIENvLixMdGQuCi0wMDFFNDAgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgRGFyZUdsb2JhbCBUZWNobm9sb2dpZXMgIENvLixMdGQuCi0JCQkJMjJGLCBsbmZvIFRlY2ggQnVpbGRpbmcsIE5PLjE1NTUgS29uZ2ppYW5nIFJvYWQsCi0JCQkJU2hhbmdoYWkgIDIwMDA5MgotCQkJCUNISU5BCi0KLTAwLTFFLTQxICAgKGhleCkJCU1pY3Jvd2F2ZSBDb21tdW5pY2F0aW9uICYgQ29tcG9uZW50LCBJbmMuCi0wMDFFNDEgICAgIChiYXNlIDE2KQkJTWljcm93YXZlIENvbW11bmljYXRpb24gJiBDb21wb25lbnQsIEluYy4KLQkJCQkjMjA0LCBXT09MSU0gTElPTmBTIFZBTExFWSAyLCA2ODAKLQkJCQlHYXNhbi1Eb25nLCBHZXVtY2hvbi1HVQotCQkJCVNlb3VsICAxNTAtNzg3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTQyICAgKGhleCkJCVRlbHRvbmlrYQotMDAxRTQyICAgICAoYmFzZSAxNikJCVRlbHRvbmlrYQotCQkJCVppcm11bnUgMjcKLQkJCQlWaWxuaXVzICBMVCAtIDA5MTA1Ci0JCQkJTElUSFVBTklBCi0KLTAwLTFFLTQzICAgKGhleCkJCUFJU0lOIEFXIENPLixMVEQuCi0wMDFFNDMgICAgIChiYXNlIDE2KQkJQUlTSU4gQVcgQ08uLExURC4KLQkJCQk2LTE4IEhBUkFZQU1BCi0JCQkJT0tBLUNITwotCQkJCU9LQVpBS0kgQUlDSEkgNDQ0LTg1NjQKLQkJCQlKQVBBTgotCi0wMC0xRS00NCAgIChoZXgpCQlTQU5URUMKLTAwMUU0NCAgICAgKGJhc2UgMTYpCQlTQU5URUMKLQkJCQlBbiBkZXIgU3RydXNiZWsgMzEKLQkJCQlBaHJlbnNidXJnIFNjaGxlc3dpZyBIb2xzdGVpbiAyMjkyNgotCQkJCUdFUk1BTlkKLQotMDAtMUUtNDUgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTAwMUU0NSAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OAotCQkJCVNXRURFTgotCi0wMC0xRS00NiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxRTQ2ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNDcgICAoaGV4KQkJUFQuIEhhcmlmZiBEYXlhIFR1bmdnYWwgRW5naW5lZXJpbmcKLTAwMUU0NyAgICAgKGJhc2UgMTYpCQlQVC4gSGFyaWZmIERheWEgVHVuZ2dhbCBFbmdpbmVlcmluZwotCQkJCUpsLiBTb2VrYXJubyBIYXR0YSBOby4gNDUwCi0JCQkJQmFuZHVuZyBKYXdhIEJhcmF0IDQwMjY2Ci0JCQkJSU5ET05FU0lBCi0KLTAwLTFFLTQ4ICAgKGhleCkJCVdpLUxpbmtzCi0wMDFFNDggICAgIChiYXNlIDE2KQkJV2ktTGlua3MKLQkJCQkzMzIgQXlpb3Ugc3RyZWV0Ci0JCQkJTGltYXNzb2wgIDM3MjUKLQkJCQlDWVBSVVMKLQotMDAtMUUtNDkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRTQ5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTRBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUU0QSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS00QiAgIChoZXgpCQlDaXR5IFRoZWF0cmljYWwKLTAwMUU0QiAgICAgKGJhc2UgMTYpCQlDaXR5IFRoZWF0cmljYWwKLQkJCQk0NzUgQmFyZWxsIEF2ZQotCQkJCUNhcmxzdGFkdCBOZXcgSmVyc2V5IDA3MDcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS00QyAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uLCBMdGQuCi0wMDFFNEMgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLiwgTHRkLgotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS00RCAgIChoZXgpCQlXZWxraW4gU2NpZW5jZXMsIExMQwotMDAxRTREICAgICAoYmFzZSAxNikJCVdlbGtpbiBTY2llbmNlcywgTExDCi0JCQkJMTAyIFMuIFRlam9uIFN0LCBTdWl0ZSAyMDAKLQkJCQlDb2xvcmFkbyBTcHJpbmdzIENPIDgwOTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS00RSAgIChoZXgpCQlEQUtPIEVEVi1JbmdlbmlldXItIHVuZCBTeXN0ZW1oYXVzIEdtYkgKLTAwMUU0RSAgICAgKGJhc2UgMTYpCQlEQUtPIEVEVi1JbmdlbmlldXItIHVuZCBTeXN0ZW1oYXVzIEdtYkgKLQkJCQlFcm5zdC1IYWVja2VsLVBsYXR6IDUvNgotCQkJCUplbmEgVGh1cmluZ2lhIDA3NzQ1Ci0JCQkJR0VSTUFOWQotCi0wMC0xRS00RiAgIChoZXgpCQlEZWxsIEluYy4KLTAwMUU0RiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTUwICAgKGhleCkJCUJBVFRJU1RPTkkgUkVTRUFSQ0gKLTAwMUU1MCAgICAgKGJhc2UgMTYpCQlCQVRUSVNUT05JIFJFU0VBUkNICi0JCQkJUEFSQ08gRE9OSUNBIDU2Ci0JCQkJRklTQ0lBTk8gU0FMRVJOTyA4NDA4NAotCQkJCUlUQUxZCi0KLTAwLTFFLTUxICAgKGhleCkJCUNvbnZlcnRlciBJbmR1c3RyeSBTcmwKLTAwMUU1MSAgICAgKGJhc2UgMTYpCQlDb252ZXJ0ZXIgSW5kdXN0cnkgU3JsCi0JCQkJVmlhIEV1Y2xpZGUsIDEyCi0JCQkJRm9ybGknIEZDIDQ3MTAwCi0JCQkJSVRBTFkKLQotMDAtMUUtNTIgICAoaGV4KQkJQXBwbGUgQ29tcHV0ZXIgSW5jCi0wMDFFNTIgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENhbGlmb3JuaWEgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTUzICAgKGhleCkJCUZ1cnRoZXIgVGVjaCBDby4sIExURAotMDAxRTUzICAgICAoYmFzZSAxNikJCUZ1cnRoZXIgVGVjaCBDby4sIExURAotCQkJCThGLE5PIDQyMSwgU3VuZ3NoYW4gUkQuLFRhaXBlaSwgVGFpd24sUi5PLkMuCi0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTU0ICAgKGhleCkJCVRPWU8gRUxFQ1RSSUMgQ29ycG9yYXRpb24KLTAwMUU1NCAgICAgKGJhc2UgMTYpCQlUT1lPIEVMRUNUUklDIENvcnBvcmF0aW9uCi0JCQkJMS0zOSBISUtJU0FXQQotCQkJCUtBR0lZQS1DSE8KLQkJCQlLQVNVR0FJIEFJQ0hJIDQ4MC0wMzkzCi0JCQkJSkFQQU4KLQotMDAtMUUtNTUgICAoaGV4KQkJQ09XT04gU1lTVEVNUyxJbmMuCi0wMDFFNTUgICAgIChiYXNlIDE2KQkJQ09XT04gU1lTVEVNUyxJbmMuCi0JCQkJNnRoIEZsLiBDT1dPTiBUT1dFUiw2ODktMywKLQkJCQlZZW9rc2FtLURvbmcsR2FuZ25hbS1HdSwKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS01NiAgIChoZXgpCQlCYWxseSBXdWxmZiBFbnRlcnRhaW5tZW50IEdtYkgKLTAwMUU1NiAgICAgKGJhc2UgMTYpCQlCYWxseSBXdWxmZiBFbnRlcnRhaW5tZW50IEdtYkgKLQkJCQlNYXliYWNodWZlciA0OC01MQotCQkJCUJlcmxpbiAgMTIwNDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTFFLTU3ICAgKGhleCkJCUFMQ09NQSwgc3BvbC4gcyByLm8uCi0wMDFFNTcgICAgIChiYXNlIDE2KQkJQUxDT01BLCBzcG9sLiBzIHIuby4KLQkJCQlLbHVrb3ZpY2UgMzEzLCBQcmFoYSAtIDUKLQkJCQlQcmFoYSAgMTUyIDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMUUtNTggICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDFFNTggICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTk8uMjg5LCBTaW5odSAzcmQgUmQuLAotCQkJCU5laWh1IERpc3RyaWN0LCBUYWlwZWkgQ2l0eSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTU5ICAgKGhleCkJCVNpbGljb24gVHVybmtleSBFeHByZXNzLCBMTEMKLTAwMUU1OSAgICAgKGJhc2UgMTYpCQlTaWxpY29uIFR1cm5rZXkgRXhwcmVzcywgTExDCi0JCQkJNzQ5IE1pbmVyIFJvYWQKLQkJCQlIaWdobGFuZCBIZWlnaHRzIE9oaW8gNDQxNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTVBICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDFFNUEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS01QiAgIChoZXgpCQlVbml0cm9uIENvbXBhbnksIEluYy4KLTAwMUU1QiAgICAgKGJhc2UgMTYpCQlVbml0cm9uIENvbXBhbnksIEluYy4KLQkJCQkxMDkyNSBNaWxsZXIgUm9hZAotCQkJCURhbGxhcyBUWCA3NTIzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNUMgICAoaGV4KQkJUkIgR2VuZXJhbEVrb25vbWlrCi0wMDFFNUMgICAgIChiYXNlIDE2KQkJUkIgR2VuZXJhbEVrb25vbWlrCi0JCQkJQnVsZXZhciBkZXNwb3RhIHN0ZWZhbmEgNTlhCi0JCQkJQmVvZ3JhZCBTZXJiaWEgMTEwMDAKLQkJCQlZVUdPU0xBVklBCi0KLTAwLTFFLTVEICAgKGhleCkJCUhvbG9zeXMgZC5vLm8uCi0wMDFFNUQgICAgIChiYXNlIDE2KQkJSG9sb3N5cyBkLm8uby4KLQkJCQlNYXRpamUgR3VwY2EgNwotCQkJCU9yb3NsYXZqZSAgNDkyNDMKLQkJCQlDUk9BVElBCi0KLTAwLTFFLTVFICAgKGhleCkJCUNPbXB1dGltZSBMdGQuCi0wMDFFNUUgICAgIChiYXNlIDE2KQkJQ09tcHV0aW1lIEx0ZC4KLQkJCQkxNy9GIEdyZWF0IEVhZ2xlIENlbnRyZQotCQkJCTIzIEhhcmJvdXIgUm9hZAotCQkJCVdhbmNoYWkgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xRS01RiAgIChoZXgpCQlLd2lrQnl0ZSwgTExDCi0wMDFFNUYgICAgIChiYXNlIDE2KQkJS3dpa0J5dGUsIExMQwotCQkJCTI0MzAgVy4gMTJ0aCBTdHJlZXQKLQkJCQlUZW1wZSBBWiA4NTI4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNjAgICAoaGV4KQkJRGlnaXRhbCBMaWdodGluZyBTeXN0ZW1zLCBJbmMKLTAwMUU2MCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIExpZ2h0aW5nIFN5c3RlbXMsIEluYwotCQkJCTEyMzAyIFN3IDEyOHRoIGN0LCAgICMxMDUKLQkJCQlNaWFtaSBGTCAzMzE4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNjEgICAoaGV4KQkJSVRFQyBHbWJICi0wMDFFNjEgICAgIChiYXNlIDE2KQkJSVRFQyBHbWJICi0JCQkJTGFzc25pdHp0aGFsIDMwMAotCQkJCUEtODIwMCAgR2xlaXNkb3JmCi0JCQkJQVVTVFJJQQotCi0wMC0xRS02MiAgIChoZXgpCQlTaWVtb24KLTAwMUU2MiAgICAgKGJhc2UgMTYpCQlTaWVtb24KLQkJCQkyNyBTaWVtb24gQ29tcGFueSBEcml2ZQotCQkJCVdhdGVydG93biBDVCAwNjc5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNjMgICAoaGV4KQkJVmlicm8tTWV0ZXIgU0EKLTAwMUU2MyAgICAgKGJhc2UgMTYpCQlWaWJyby1NZXRlciBTQQotCQkJCVJvdXRlIGRlIE1vbmNvciA0Ci0JCQkJRnJpYm91cmcgIENILTE3MDEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRS02NCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMUU2NCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFFLTY1ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxRTY1ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUUtNjYgICAoaGV4KQkJUkVTT0wgRWxla3Ryb25pc2NoZSBSZWdlbHVuZ2VuIEdtYkgKLTAwMUU2NiAgICAgKGJhc2UgMTYpCQlSRVNPTCBFbGVrdHJvbmlzY2hlIFJlZ2VsdW5nZW4gR21iSAotCQkJCUhlaXNrYW1wc3RyLiAxMAotCQkJCUhhdHRpbmdlbiBOUlcgNDU1MjcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFFLTY3ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxRTY3ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUUtNjggICAoaGV4KQkJUXVhbnRhIENvbXB1dGVyCi0wMDFFNjggICAgIChiYXNlIDE2KQkJUXVhbnRhIENvbXB1dGVyCi0JCQkJTk8uIDIxMSwgV0VOIEhXQSAyUkQuLCBLVUVJIFNIQU4gSFNJQU5HCi0JCQkJVEFJUEVJIFRBTyBZVUFOIFNISUVOIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtNjkgICAoaGV4KQkJVGhvbXNvbiBJbmMuCi0wMDFFNjkgICAgIChiYXNlIDE2KQkJVGhvbXNvbiBJbmMuCi0JCQkJMTAxIFdlc3QuIDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNkEgICAoaGV4KQkJQmVpamluZyBCbHVleG9uIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxRTZBICAgICAoYmFzZSAxNikJCUJlaWppbmcgQmx1ZXhvbiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlKaW5xaXV6aGljaHVuIDctMzAxLFpoaWNodW4gUmQuLAotCQkJCUhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODgKLQkJCQlDSElOQQotCi0wMC0xRS02QiAgIChoZXgpCQlTY2llbnRpZmljIEF0bGFudGEsIEEgQ2lzY28gQ29tcGFueQotMDAxRTZCICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgQXRsYW50YSwgQSBDaXNjbyBDb21wYW55Ci0JCQkJNTAzMCBTdWdhcmxvYWYgUGFya3dheQotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTZDICAgKGhleCkJCUNhcmJvbiBNb3VudGFpbiBMTEMKLTAwMUU2QyAgICAgKGJhc2UgMTYpCQlDYXJib24gTW91bnRhaW4gTExDCi0JCQkJNDgyMCBGaXNoZXIgUm9hZAotCQkJCUF0aGVucyBPSCA0NTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNkQgICAoaGV4KQkJSVQgUiZEIENlbnRlcgotMDAxRTZEICAgICAoYmFzZSAxNikJCUlUIFImRCBDZW50ZXIKLQkJCQk0NjEtMjUsIEplb25taW4tZG9uZyxZdXNlb25nLUd1Ci0JCQkJRGFlamVvbiAgMzA1LTgxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS02RSAgIChoZXgpCQlTaGVuemhlbiBGaXJzdCBNaWxlIENvbW11bmljYXRpb25zIEx0ZAotMDAxRTZFICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEZpcnN0IE1pbGUgQ29tbXVuaWNhdGlvbnMgTHRkCi0JCQkJNXRoIEZsb29yLCBCbG9jayBSMy1BCi0JCQkJSGlnaC1UZWNoIEluZHVzdHJpYWwgUGFyawotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xRS02RiAgIChoZXgpCQlNYWduYS1Qb3dlciBFbGVjdHJvbmljcywgSW5jLgotMDAxRTZGICAgICAoYmFzZSAxNikJCU1hZ25hLVBvd2VyIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMzkgUm95YWwgUm9hZAotCQkJCUZsZW1pbmd0b24gTkogMDg4MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTcwICAgKGhleCkJCUNvYmhhbSBEZWZlbmNlIENvbW11bmljYXRpb25zIEx0ZAotMDAxRTcwICAgICAoYmFzZSAxNikJCUNvYmhhbSBEZWZlbmNlIENvbW11bmljYXRpb25zIEx0ZAotCQkJCUhhc2xpbmdkZW4gUm9hZAotCQkJCUJsYWNrYnVybiBMYW5jYXNoaXJlIEJCMSAyRUUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRS03MSAgIChoZXgpCQlJZ2VhQ2FyZSBTeXN0ZW1zIEluYy4KLTAwMUU3MSAgICAgKGJhc2UgMTYpCQlJZ2VhQ2FyZSBTeXN0ZW1zIEluYy4KLQkJCQk5MSBHcmFudG9uIERyaXZlCi0JCQkJUmljaG1vbmQgSGlsbCBPbnRhcmlvIEw0QiAyTjUKLQkJCQlDQU5BREEKLQotMDAtMUUtNzIgICAoaGV4KQkJUENTCi0wMDFFNzIgICAgIChiYXNlIDE2KQkJUENTCi0JCQkJUlVFIFNBSU5UIEVYVVBFUlkKLQkJCQlCUDcwMzIyCi0JCQkJTEVTQ0FSIFBZUkVORUVTIEFUTEFOVElRVUVTIDY0MjMwCi0JCQkJRlJBTkNFCi0KLTAwLTFFLTczICAgKGhleCkJCVpURSBDT1JQT1JBVElPTgotMDAxRTczICAgICAoYmFzZSAxNikJCVpURSBDT1JQT1JBVElPTgotCQkJCTEyL0YgWlRFIFBsYXphLEtlamkgUm9hZCBTb3V0aCxIaS1UZWNoIEluZHVzdHJpYWwgUGFyayxOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEdVQU5HRE9ORyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xRS03NCAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0wMDFFNzQgICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCTE0IFJ1ZSBQYXVsIERhdXRpZXIKLQkJCQlWZWxpenkgIDc4NDU3Ci0JCQkJRlJBTkNFCi0KLTAwLTFFLTc1ICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzCi0wMDFFNzUgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MKLQkJCQk2MC0zOSxLYXNhbi1kb25nLEt1bWNob24ta3UKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS03NiAgIChoZXgpCQlUaGVybW8gRmlzaGVyIFNjaWVudGlmaWMKLTAwMUU3NiAgICAgKGJhc2UgMTYpCQlUaGVybW8gRmlzaGVyIFNjaWVudGlmaWMKLQkJCQkyMjE1IEdyYW5kIEF2ZW51ZSBQYXJrd2F5Ci0JCQkJQXVzdGluIFRleGFzIDc4NzI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS03NyAgIChoZXgpCQlBaXIyQXBwCi0wMDFFNzcgICAgIChiYXNlIDE2KQkJQWlyMkFwcAotCQkJCTUwIE9sZCBGb3JnZSBSZAotCQkJCUhhbm92ZXIgTUEgMDIzMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTc4ICAgKGhleCkJCU93aXRlayBUZWNobm9sb2d5IEx0ZC4sCi0wMDFFNzggICAgIChiYXNlIDE2KQkJT3dpdGVrIFRlY2hub2xvZ3kgTHRkLiwKLQkJCQlOby4yLCBMYW5lIDc4LCBDaW5nc2hhbiA2dGggU3QuLAotCQkJCVlhbmdtZWkgVG93bnNoaXAsCi0JCQkJVGFveXVhbiBDb3VudHkgIDMyNjU3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS03OSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFNzkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtN0EgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRTdBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTdCICAgKGhleCkJCVIuSS5DTy4gUy5yLmwuCi0wMDFFN0IgICAgIChiYXNlIDE2KQkJUi5JLkNPLiBTLnIubC4KLQkJCQl2aWEgQWRyaWF0aWNhLCAxNwotCQkJCUNhc3RlbGZpZGFyZG8gQU4gNjAwMjIKLQkJCQlJVEFMWQotCi0wMC0xRS03QyAgIChoZXgpCQlUYWl3aWNrIExpbWl0ZWQKLTAwMUU3QyAgICAgKGJhc2UgMTYpCQlUYWl3aWNrIExpbWl0ZWQKLQkJCQk1L0YuLCBCbG9jayBFLCBIaW5nIFlpcCBGYWN0b3J5IEJsZGcuLAotCQkJCTMxIEhpbmcgWWlwIFN0cmVldC4sIEt3dW4gVG9uZywgS2xuLiwgSEsuCi0JCQkJQ2hpbmEgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLTdEICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxRTdEICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS03RSAgIChoZXgpCQlOb3J0ZWwKLTAwMUU3RSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUUtN0YgICAoaGV4KQkJQ0JNIG9mIEFtZXJpY2EKLTAwMUU3RiAgICAgKGJhc2UgMTYpCQlDQk0gb2YgQW1lcmljYQotCQkJCTE0NTUgV2VzdCBOZXdwb3J0IENlbnRlciBEcml2ZQotCQkJCURlZXJmaWVsZCBCZWFjaCBGbG9yaWRhIDMzNDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS04MCAgIChoZXgpCQlMYXN0IE1pbGUgTHRkLgotMDAxRTgwICAgICAoYmFzZSAxNikJCUxhc3QgTWlsZSBMdGQuCi0JCQkJMTIvRiBWSVAgQ29tbWVyY2lhbCBDZW50cmUKLQkJCQkxMjAgQ2FudG9uIFJvYWQKLQkJCQlUc2ltc2hhdHN1aSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLTgxICAgKGhleCkJCUNOQiBUZWNobm9sb2d5IEluYy4KLTAwMUU4MSAgICAgKGJhc2UgMTYpCQlDTkIgVGVjaG5vbG9neSBJbmMuCi0JCQkJIzcwMSBTdGFyIFZhbGxleSwgNjAtMTEgR2FzYW4tRG9uZywKLQkJCQlHZXVtY2hlb24tR3UKLQkJCQlTZW91bCAgMTUzNzc3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTgyICAgKGhleCkJCVBsaWFudCBUZWNobm9sb2d5LCBJbmMuCi0wMDFFODIgICAgIChiYXNlIDE2KQkJUGxpYW50IFRlY2hub2xvZ3ksIEluYy4KLQkJCQk2MzAgQWxkZXIgRHJpdmUsCi0JCQkJU3VpdGUgMjAyCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTgzICAgKGhleCkJCUxBTi9NQU4gU3RhbmRhcmRzIEFzc29jaWF0aW9uIChMTVNDKQotMDAxRTgzICAgICAoYmFzZSAxNikJCUxBTi9NQU4gU3RhbmRhcmRzIEFzc29jaWF0aW9uIChMTVNDKQotCQkJCUMvTyBJRUVFIFN0YW5kYXJkcyBBc3NvY2lhdGlvbgotCQkJCTQ0NSBIb2VzIExhbmUsCi0JCQkJUGlzY2F0YXdheSBOSiAwODg1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtODQgICAoaGV4KQkJUGlrYSBUZWNobm9sb2dpZXMgSW5jLgotMDAxRTg0ICAgICAoYmFzZSAxNikJCVBpa2EgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk1MzUgTGVnZ2V0IERyaXZlCi0JCQkJU3VpdGUgNDAwCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDNCOAotCQkJCUNBTkFEQQotCi0wMC0xRS04NSAgIChoZXgpCQlMYWdvdGVrIENvcnBvcmF0aW9uCi0wMDFFODUgICAgIChiYXNlIDE2KQkJTGFnb3RlayBDb3Jwb3JhdGlvbgotCQkJCTExNjYxIFNFIDFzdCBTdC4gIzIwOAotCQkJCUJlbGxldnVlIFdBIDk4MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS04NiAgIChoZXgpCQlNRUwgQ28uLEx0ZC4KLTAwMUU4NiAgICAgKGJhc2UgMTYpCQlNRUwgQ28uLEx0ZC4KLQkJCQlUc3VrYWdvc2hpIDUtNS0xLFdhcmFiaS1zaGksU2FpdGFtYSxKYXBuYQotCQkJCVdhcmFiaSBTYWl0YW1hIDMzNS0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMUUtODcgICAoaGV4KQkJUmVhbGVhc2UgTGltaXRlZAotMDAxRTg3ICAgICAoYmFzZSAxNikJCVJlYWxlYXNlIExpbWl0ZWQKLQkJCQkxNS9GLCBNb3JyaXNvbiBDb21tZXJjaWFsIEJ1aWxkaW5nCi0JCQkJMzEgTW9ycmlzb24gSGlsbCBSb2FkCi0JCQkJV2FuQ2hhaSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLTg4ICAgKGhleCkJCUFORE9SIFNZU1RFTSBTVVBQT1JUIENPLiwgTFRELgotMDAxRTg4ICAgICAoYmFzZSAxNikJCUFORE9SIFNZU1RFTSBTVVBQT1JUIENPLiwgTFRELgotCQkJCU1pbmFtaS1TaGluYWdhd2EgMi0xNS04Ci0JCQkJU2luYWdhd2EgVG9reW8gMTQwLTAwMDQKLQkJCQlKQVBBTgotCi0wMC0xRS04OSAgIChoZXgpCQlDUkZTIExpbWl0ZWQKLTAwMUU4OSAgICAgKGJhc2UgMTYpCQlDUkZTIExpbWl0ZWQKLQkJCQlCdWlsZGluZyA3MjAwCi0JCQkJQ2FtYnJpZGdlIFJlc2VhcmNoIFBhcmsKLQkJCQlXYXRlcmJlYWNoIENhbWJyaWRnZXNoaXJlIENCMjUgOVRMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtOEEgICAoaGV4KQkJZUNvcHksIEluYwotMDAxRThBICAgICAoYmFzZSAxNikJCWVDb3B5LCBJbmMKLQkJCQkxIE9yYWNsZSBEcgotCQkJCU5hc2h1YSBOSCAwMzA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtOEIgICAoaGV4KQkJSW5mcmEgQWNjZXNzIEtvcmVhIENvLiwgTHRkLgotMDAxRThCICAgICAoYmFzZSAxNikJCUluZnJhIEFjY2VzcyBLb3JlYSBDby4sIEx0ZC4KLQkJCQk5RiBEYWV5YW5nIEIvRCwKLQkJCQk3MzUtMTEgQm9uZ2NodW4gMWRvbmcsCi0JCQkJS3dhbmFrLWd1LCBTZW91bCAxNTEtODMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLThDICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAxRThDICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtOEQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUU4RCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtOEUgICAoaGV4KQkJSHVua2VsZXIgQUcKLTAwMUU4RSAgICAgKGJhc2UgMTYpCQlIdW5rZWxlciBBRwotCQkJCUJhaG5ob2ZzdHJhc3NlIDMxCi0JCQkJV2lrb24gQ0ggNDgwNgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFFLThGICAgKGhleCkJCUNBTk9OIElOQy4KLTAwMUU4RiAgICAgKGJhc2UgMTYpCQlDQU5PTiBJTkMuCi0JCQkJMy0zMC0yCi0JCQkJU2hpbW9tYXJ1a28KLQkJCQlPaHRhLUt1IFRva3lvIDE0Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUUtOTAgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zIENvCi0wMDFFOTAgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zIENvCi0JCQkJTm8uMjM5LCBTZWMuIDIsIFRpIERpbmcgQmx2ZAotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTkxICAgKGhleCkJCUtJTUlOIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0wMDFFOTEgICAgIChiYXNlIDE2KQkJS0lNSU4gRWxlY3Ryb25pYyBDby4sIEx0ZC4KLQkJCQkyOTMtNCwgRG9uZ2Rhbi1Eb25nCi0JCQkJR3VtaS1jaXR5IEd5ZW9uZ0J1ayA3MzAtOTA2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTkyICAgKGhleCkJCUpFVUxJTiBTLkEuCi0wMDFFOTIgICAgIChiYXNlIDE2KQkJSkVVTElOIFMuQS4KLQkJCQlaSSBOsDEKLQkJCQlydWUgSmFjcXVlcyBNb25vZAotCQkJCUV2cmV1eCAgRjI3MDE5Ci0JCQkJRlJBTkNFCi0KLTAwLTFFLTkzICAgKGhleCkJCUNpcmlUZWNoIFN5c3RlbXMgSW5jCi0wMDFFOTMgICAgIChiYXNlIDE2KQkJQ2lyaVRlY2ggU3lzdGVtcyBJbmMKLQkJCQk5MjAgSGlsbHZpZXcgQ3QKLQkJCQkjMTcwCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTk0ICAgKGhleCkJCVNVUEVSQ09NIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwMUU5NCAgICAgKGJhc2UgMTYpCQlTVVBFUkNPTSBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJOEYsIE5PIDEwMC0xLCBNaW5nLUNodWFuIFJkLgotCQkJCVNoaW5nIFRpZW4gVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtOTUgICAoaGV4KQkJU0lHTUFMSU5LCi0wMDFFOTUgICAgIChiYXNlIDE2KQkJU0lHTUFMSU5LCi0JCQkJRG9vU2FuIFZlbnR1cmVEaWdtIDEwMjgsCi0JCQkJMTI2LTEgUHl1bmdjaG9uLWRvbmcsIERvbmdhbi1LdQotCQkJCUFueWFuZy1DaXR5IEt5dW5nZ2ktZG8gNDMxLTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS05NiAgIChoZXgpCQlTZXB1cmEgUGxjCi0wMDFFOTYgICAgIChiYXNlIDE2KQkJU2VwdXJhIFBsYwotCQkJCVJhZGlvIEhvdXNlCi0JCQkJU3QgQW5kcmV3cyBSb2FkCi0JCQkJQ2FtYnJpZGdlIENBTUJSSURHRVNISVJFIENCNCAxR1IKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRS05NyAgIChoZXgpCQlNZWRpdW0gTGluayBTeXN0ZW0gVGVjaG5vbG9neSBDTy4sIExURCwKLTAwMUU5NyAgICAgKGJhc2UgMTYpCQlNZWRpdW0gTGluayBTeXN0ZW0gVGVjaG5vbG9neSBDTy4sIExURCwKLQkJCQkxMUYuLTIsIE5vLjcsIEFsbGV5IDkyLCBMYW5lIDc3LCBTZWMuIDQsIFNpbmhhaSBSZC4sCi0JCQkJV3Vuc2hhbiBEaXN0cmljdCwgVGFpcGVpIDExNjkzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS05OCAgIChoZXgpCQlHcmVlbkxpbmUgQ29tbXVuaWNhdGlvbnMKLTAwMUU5OCAgICAgKGJhc2UgMTYpCQlHcmVlbkxpbmUgQ29tbXVuaWNhdGlvbnMKLQkJCQlBbHJhYmlhaCwgQWxyYWJlZWEgc3RyZWV0Ci0JCQkJQnVpbGRpbmcgOCwgUC5PLiBCb3ggOTIxCi0JCQkJQW1tYW4gQ2VudHJhbCBSZWdpb24gMTE5NTMKLQkJCQlKT1JEQU4KLQotMDAtMUUtOTkgICAoaGV4KQkJVmFudGFub2wgSW5kdXN0cmlhbCBDb3Jwb3JhdGlvbgotMDAxRTk5ICAgICAoYmFzZSAxNikJCVZhbnRhbm9sIEluZHVzdHJpYWwgQ29ycG9yYXRpb24KLQkJCQk5RiwgTk8gMzEgLiBTaGluLVRhaSBSb2FkCi0JCQkJSnViZWkgQ2l0eSBTaGluY2h1IDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtOUEgICAoaGV4KQkJSEFNSUxUT04gQm9uYWR1eiBBRwotMDAxRTlBICAgICAoYmFzZSAxNikJCUhBTUlMVE9OIEJvbmFkdXogQUcKLQkJCQlWaWEgQ3J1c2NoIDgKLQkJCQlCb25hZHV6IEdyYXVidWVuZGVuIDc0MDIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRS05QiAgIChoZXgpCQlTYW4tRWlzaGEsIEx0ZC4KLTAwMUU5QiAgICAgKGJhc2UgMTYpCQlTYW4tRWlzaGEsIEx0ZC4KLQkJCQkyLTEgRWJhcmEgNS1jaG9tZQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDItODYxMQotCQkJCUpBUEFOCi0KLTAwLTFFLTlDICAgKGhleCkJCUZpZHVzdHJvbiBJTkMKLTAwMUU5QyAgICAgKGJhc2UgMTYpCQlGaWR1c3Ryb24gSU5DCi0JCQkJTk8uNzcwLTYsIEpob25naWhlbmcgUmQuCi0JCQkJSmhvbmdoZSBDaXR5IFRhaXBlaSBDb3VudHkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS05RCAgIChoZXgpCQlSZWNhbGwgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDFFOUQgICAgIChiYXNlIDE2KQkJUmVjYWxsIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEzMCBFbnRlcnByaXNlIEF2ZS4KLQkJCQlTdWl0ZSBGCi0JCQkJUGFsbSBCYXkgRkwgMzI5MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTlFICAgKGhleCkJCWRkbSBob3B0ICsgc2NodWxlciBHbWJoICsgQ28uIEtHCi0wMDFFOUUgICAgIChiYXNlIDE2KQkJZGRtIGhvcHQgKyBzY2h1bGVyIEdtYmggKyBDby4gS0cKLQkJCQlLb2VuaWdzYmVyZ2VyIFN0cmFzc2UgMTIKLQkJCQlSb3R0d2VpbCBCYWRlbi1XdWVydHRlbWJlcmcgNzg2MjYKLQkJCQlHRVJNQU5ZCi0KLTAwLTFFLTlGICAgKGhleCkJCVZpc2lvbmVlcmluZyBTeXN0ZW1zLCBJbmMuCi0wMDFFOUYgICAgIChiYXNlIDE2KQkJVmlzaW9uZWVyaW5nIFN5c3RlbXMsIEluYy4KLQkJCQk1OTMxIFNlYSBMaW9uIFBsYWNlCi0JCQkJU3VpdGUgMTA5Ci0JCQkJQ2FybHNiYWQgQ2FsaWZvcm5pYSA5MjAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQTAgICAoaGV4KQkJWExOLXQKLTAwMUVBMCAgICAgKGJhc2UgMTYpCQlYTE4tdAotCQkJCUhvb2dzdHJhYXQgNTIKLQkJCQlQdXR0ZSBBbnR3ZXJwIEIyNTgwCi0JCQkJQkVMR0lVTQotCi0wMC0xRS1BMSAgIChoZXgpCQlCcnVuYXRhIGEvcwotMDAxRUExICAgICAoYmFzZSAxNikJCUJydW5hdGEgYS9zCi0JCQkJVmVzdGVybHVuZHZlaiAxNAotCQkJCUhlcmxldiAgMjczMAotCQkJCURFTk1BUksKLQotMDAtMUUtQTIgICAoaGV4KQkJU3lteCBTeXN0ZW1zLCBJbmMuCi0wMDFFQTIgICAgIChiYXNlIDE2KQkJU3lteCBTeXN0ZW1zLCBJbmMuCi0JCQkJNjMyMCBOVyA4NHRoIEF2ZW51ZQotCQkJCU1pYW1pIEZsb3JpZGEgMzMxNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUEzICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFFQTMgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFFLUE0ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFFQTQgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFFLUE1ICAgKGhleCkJCVJPQk9UT1VTLCBJbmMuCi0wMDFFQTUgICAgIChiYXNlIDE2KQkJUk9CT1RPVVMsIEluYy4KLQkJCQlOZXggQ2VudGVyLTIwMShMYWIuKSwgU0sgbiBUZWNobm9wYXJrCi0JCQkJU2FuZ2RhZXdvbi1kb25nLCBKdW5nd29uLWd1Ci0JCQkJU2VvbmduYW0tc2kgR3llb25nZ2ktZG8gNDYyLTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS1BNiAgIChoZXgpCQlCZXN0IElUIFdvcmxkIChJbmRpYSkgUHZ0LiBMdGQuCi0wMDFFQTYgICAgIChiYXNlIDE2KQkJQmVzdCBJVCBXb3JsZCAoSW5kaWEpIFB2dC4gTHRkLgotCQkJCTg3LzcwLzkzIE1pc3RyeSBJbmR1c3RyaWFsIENvbXBsZXgsCi0JCQkJTUlEQyBDcm9zcyBSb2FkICdBJywgQW5kaGVyaSAoRWFzdCkKLQkJCQlNdW1iYWkgTWFoYXJhc2h0cmEgNDAwMDkzCi0JCQkJSU5ESUEKLQotMDAtMUUtQTcgICAoaGV4KQkJQWN0aW9uVGVjIEVsZWN0cm9uaWNzLCBJbmMKLTAwMUVBNyAgICAgKGJhc2UgMTYpCQlBY3Rpb25UZWMgRWxlY3Ryb25pY3MsIEluYwotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQTggICAoaGV4KQkJRGF0YW5nIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBFcXVpcG1lbnQgQ08uLExURAotMDAxRUE4ICAgICAoYmFzZSAxNikJCURhdGFuZyBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgRXF1aXBtZW50IENPLixMVEQKLQkJCQlOby4yOSxYdWV5dWFuIFJkLixIYWlkaWFuIERpc3RyaWN0LEJlaWppbmcsMTAwMDgzIFAuUi5DaGluYQotCQkJCUJlaWppbmcgIDEwMDA4MwotCQkJCUNISU5BCi0KLTAwLTFFLUE5ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAxRUE5ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUUtQUEgICAoaGV4KQkJRS1TZW56YSBUZWNobm9sb2dpZXMgR21iSAotMDAxRUFBICAgICAoYmFzZSAxNikJCUUtU2VuemEgVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlCbGFyZXJzdHJhc3NlIDU2Ci0JCQkJS29uc3RhbnogQlcgNzg0NjIKLQkJCQlHRVJNQU5ZCi0KLTAwLTFFLUFCICAgKGhleCkJCVRlbGVXZWxsIE95Ci0wMDFFQUIgICAgIChiYXNlIDE2KQkJVGVsZVdlbGwgT3kKLQkJCQlBbGFob3RpZSAxNCBiCi0JCQkJSmFydmVucGFhIFV1c2ltYWEgMDQ0MzAKLQkJCQlGSU5MQU5ECi0KLTAwLTFFLUFDICAgKGhleCkJCUFybWFkZXVzIFN5c3RlbXMKLTAwMUVBQyAgICAgKGJhc2UgMTYpCQlBcm1hZGV1cyBTeXN0ZW1zCi0JCQkJVGVjaG5vcG9sZSAtICA0MCwgcnVlIE1hcmMgU2VndWluCi0JCQkJQlAgMjExOAotCQkJCU1VTEhPVVNFIGNlZGV4IEhhdXQtUmhpbiA2ODA2MAotCQkJCUZSQU5DRQotCi0wMC0xRS1BRCAgIChoZXgpCQlXaW5ndGVjaCBHcm91cCBMaW1pdGVkCi0wMDFFQUQgICAgIChiYXNlIDE2KQkJV2luZ3RlY2ggR3JvdXAgTGltaXRlZAotCQkJCTZ0aCBmbG9vciwgVW5pdCBHLCBOby42NjgsIEVhc3QgQmVpamluZyBSb2FkLAotCQkJCVNoYW5naGFpICAyMDAwMDEKLQkJCQlDSElOQQotCi0wMC0xRS1BRSAgIChoZXgpCQlDb250aW5lbnRhbCBBdXRvbW90aXZlIFN5c3RlbXMKLTAwMUVBRSAgICAgKGJhc2UgMTYpCQlDb250aW5lbnRhbCBBdXRvbW90aXZlIFN5c3RlbXMKLQkJCQkyMTQ0MCBXZXN0IExha2UgQ29vayBSb2FkCi0JCQkJRGVlciBQYXJrIElMIDYwMDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1BRiAgIChoZXgpCQlPcGhpciBPcHRyb25pY3MgTHRkCi0wMDFFQUYgICAgIChiYXNlIDE2KQkJT3BoaXIgT3B0cm9uaWNzIEx0ZAotCQkJCVBPQiA0NTAyMQotCQkJCUplcnVzYWxlbSAgOTE0NTAKLQkJCQlJU1JBRUwKLQotMDAtMUUtQjAgICAoaGV4KQkJSW1lc0QgRWxlY3Ryb25pY2EgUy5MLgotMDAxRUIwICAgICAoYmFzZSAxNikJCUltZXNEIEVsZWN0cm9uaWNhIFMuTC4KLQkJCQlFbnRlbudhIDgxCi0JCQkJQmFyY2Vsb25hICAwODAxNQotCQkJCVNQQUlOCi0KLTAwLTFFLUIxICAgKGhleCkJCUNyeXB0c29mdCBQdHkgTHRkCi0wMDFFQjEgICAgIChiYXNlIDE2KQkJQ3J5cHRzb2Z0IFB0eSBMdGQKLQkJCQlQLk8uIEJveCA2Mzg5Ci0JCQkJRmFpcmZpZWxkIEdhcmRlbnMgUXVlZW5zbGFuZCA0MTAzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTFFLUIyICAgKGhleCkJCUxHIGlubm90ZWsKLTAwMUVCMiAgICAgKGJhc2UgMTYpCQlMRyBpbm5vdGVrCi0JCQkJSGFueWFuZyBVbml2LiAxMjcxLCBTYS1kb25nLCBTYW5ncm9rLWd1Ci0JCQkJQW5zYW4tc2kgR3llb25nZ2ktZG8gNDI2LTc5MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS1CMyAgIChoZXgpCQlQcmltZXggV2lyZWxlc3MKLTAwMUVCMyAgICAgKGJhc2UgMTYpCQlQcmltZXggV2lyZWxlc3MKLQkJCQk5NjUgV2VsbHMgU3RyZWV0Ci0JCQkJTGFrZSBHZW5ldmEgV0kgNTMxNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUI0ICAgKGhleCkJCVVOSUZBVCBURUNITk9MT0dZIExURC4KLTAwMUVCNCAgICAgKGJhc2UgMTYpCQlVTklGQVQgVEVDSE5PTE9HWSBMVEQuCi0JCQkJNy9GTE9PUiBTVUkgSE9ORyBJTkQuIEJMREcuLAotCQkJCTU0Ny01NDkgQ0FTVExFIFBFQUsgUk9BRAotCQkJCUtXQUkgQ0hVTkcsIE4uVC4gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLUI1ICAgKGhleCkJCUV2ZXIgU3BhcmtsZSBUZWNobm9sb2dpZXMgTHRkCi0wMDFFQjUgICAgIChiYXNlIDE2KQkJRXZlciBTcGFya2xlIFRlY2hub2xvZ2llcyBMdGQKLQkJCQlVbml0IDQwMywgTmFuIEZ1bmcgQ29tbWVyY2lhbCBDZW50cmUKLQkJCQkxOSwgTGFtIExvayBTdC4KLQkJCQlLb3dsb29uIEJheSBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0xRS1CNiAgIChoZXgpCQlUQUcgSGV1ZXIgU0EKLTAwMUVCNiAgICAgKGJhc2UgMTYpCQlUQUcgSGV1ZXIgU0EKLQkJCQlSdWUgTG91aXMtSm9zZXBoIENoZXZyb2xldCA2QQotCQkJCWxhIENoYXV4LWRlLUZvbmRzIE5FIDIzMDAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRS1CNyAgIChoZXgpCQlUQlRlY2gsIENvLiwgTHRkLgotMDAxRUI3ICAgICAoYmFzZSAxNikJCVRCVGVjaCwgQ28uLCBMdGQuCi0JCQkJMTEwOSwgSHl1bmRhaSBLcmltLCAxMzMwLTE4LCBTZW9jaG8tZG9uZywKLQkJCQlTZW9jaG8tR3UsCi0JCQkJU2VvdWwgIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtQjggICAoaGV4KQkJRm9ydGlzLCBJbmMuCi0wMDFFQjggICAgIChiYXNlIDE2KQkJRm9ydGlzLCBJbmMuCi0JCQkJIzUwMiBUZWNobm8gcGxhemEsIDE0OS0xMCBZYXRhcC1kb25nLAotCQkJCUJ1bmRhbmctZ3UsCi0JCQkJU2VvbmduYW0tc2ksIEd5ZW9uZ2dpLWRvLCA0NjMtODE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLUI5ICAgKGhleCkJCVNpbmcgRmFpIFRlY2hub2xvZ3kgTGltaXRlZAotMDAxRUI5ICAgICAoYmFzZSAxNikJCVNpbmcgRmFpIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCU5vLjcwMCwgS2FvaHNpdW5nIFVuaXZlcnNpdHkgUmQuLCBOYW4tVHp1IERpc3QuCi0JCQkJTlVLIEFkdmFuY2VkIEJ1c2luZXNzIEluY3ViYXRpb24gQ2VudGVyCi0JCQkJS2FvaHNpdW5nICA4MTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLUJBICAgKGhleCkJCUhpZ2ggRGVuc2l0eSBEZXZpY2VzIEFTCi0wMDFFQkEgICAgIChiYXNlIDE2KQkJSGlnaCBEZW5zaXR5IERldmljZXMgQVMKLQkJCQlWZXN0cmUgU3RyYW5kZ2F0ZSAyNgotCQkJCUtyaXN0aWFuc2FuZCAgNDYxMQotCQkJCU5PUldBWQotCi0wMC0xRS1CQiAgIChoZXgpCQlCTFVFTElHSFQgVEVDSE5PTE9HWSBJTkMuCi0wMDFFQkIgICAgIChiYXNlIDE2KQkJQkxVRUxJR0hUIFRFQ0hOT0xPR1kgSU5DLgotCQkJCTY0NzIgQ0FNREVOIEFWRS4sIFNVSVRFIDEwMkIKLQkJCQlTQU4gSk9TRSBDQSA5NTEyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQkMgICAoaGV4KQkJV0lOVEVDSCBBVVRPTUFUSU9OIENPLixMVEQuCi0wMDFFQkMgICAgIChiYXNlIDE2KQkJV0lOVEVDSCBBVVRPTUFUSU9OIENPLixMVEQuCi0JCQkJIzExMTUsIFRBRUtXQU5HIEJMVkQuCi0JCQkJWU9VTkdST05HLURPTkcsIFlPVU5HVE9ORy1HVQotCQkJCVNVV09OLVNJIEtZVU5HR0kgNDQzLTgxNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS1CRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFQkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQkUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRUJFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUJGICAgKGhleCkJCUhhYXMgQXV0b21hdGlvbiBJbmMuCi0wMDFFQkYgICAgIChiYXNlIDE2KQkJSGFhcyBBdXRvbWF0aW9uIEluYy4KLQkJCQkyODAwIFN0dXJnaXMgUmQKLQkJCQlPeG5hcmQgQ0EgOTMwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUMwICAgKGhleCkJCU1pY3JvY2hpcCBUZWNobm9sb2d5IEluYy4KLTAwMUVDMCAgICAgKGJhc2UgMTYpCQlNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuCi0JCQkJMjM1NSBXLiBDaGFuZGxlciBCbHZkLiwKLQkJCQlDaGFuZGxlciBBWiA4NTIyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQzEgICAoaGV4KQkJM0NPTSBFVVJPUEUgTFRECi0wMDFFQzEgICAgIChiYXNlIDE2KQkJM0NPTSBFVVJPUEUgTFRECi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCU1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIRVJUUy4gSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFFLUMyICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMUVDMiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmlmaW50ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1DMyAgIChoZXgpCQlLb3ppbywgSW5jLgotMDAxRUMzICAgICAoYmFzZSAxNikJCUtvemlvLCBJbmMuCi0JCQkJMjQwMCBUcmFkZSBDZW50cmUgQXZlCi0JCQkJTG9uZ21vbnQgQ08gODA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUM0ICAgKGhleCkJCUNlbGlvIENvcnAKLTAwMUVDNCAgICAgKGJhc2UgMTYpCQlDZWxpbyBDb3JwCi0JCQkJMjY1IEUgMTAwIFMgICMgMjgwCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUM1ICAgKGhleCkJCU1pZGRsZSBBdGxhbnRpYyBQcm9kdWN0cyBJbmMKLTAwMUVDNSAgICAgKGJhc2UgMTYpCQlNaWRkbGUgQXRsYW50aWMgUHJvZHVjdHMgSW5jCi0JCQkJMzAwIEZhaXJmaWVsZCBSb2FkCi0JCQkJRmFpcmZpZWxkIE5KIDA3MDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1DNiAgIChoZXgpCQlPYnZpdXMgSG9sZGluZ3MgTExDCi0wMDFFQzYgICAgIChiYXNlIDE2KQkJT2J2aXVzIEhvbGRpbmdzIExMQwotCQkJCTIwODExIE5XIENvcm5lbGwgUm9hZAotCQkJCVN1aXRlIDcwMAotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQzcgICAoaGV4KQkJMldpcmUKLTAwMUVDNyAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3MDQgQXV0b21hdGlvbiBQcmt3eQotCQkJCVNhbiBKb3NlIENhIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1DOCAgIChoZXgpCQlSYXBpZCBNb2JpbGUgKFB0eSkgTHRkCi0wMDFFQzggICAgIChiYXNlIDE2KQkJUmFwaWQgTW9iaWxlIChQdHkpIEx0ZAotCQkJCUJ1aWxkaW5nIEMsRCxFIEFwZXggQ29ycG9yYXRlIFBhcmsKLQkJCQlRdWludGluIEJyYW5kIFN0cmVldCwgUGVyc2VxdW9yIFRlY2hub3BhcmsKLQkJCQlQcmV0b3JpYSBHYXV0ZW5nIDAwMjAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMUUtQzkgICAoaGV4KQkJRGVsbCBJbmMKLTAwMUVDOSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQ0EgICAoaGV4KQkJTm9ydGVsCi0wMDFFQ0EgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFFLUNCICAgKGhleCkJCSJSUEMgIkVuZXJnb2F1dG9tYXRpa2EiIEx0ZAotMDAxRUNCICAgICAoYmFzZSAxNikJCSJSUEMgIkVuZXJnb2F1dG9tYXRpa2EiIEx0ZAotCQkJCUtyYXNub2themFybWVubmF5YSBzdC4sIDEzLzEKLQkJCQlNb3Njb3cgIDExMTI1MAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRS1DQyAgIChoZXgpCQlDRFZJCi0wMDFFQ0MgICAgIChiYXNlIDE2KQkJQ0RWSQotCQkJCTMxIEF2ZW51ZSBkdSBH6W7pcmFsIExlY2xlcmMKLQkJCQlQQU5USU4gSWxlIGRlIEZyYW5jZSA5MzUwMAotCQkJCUZSQU5DRQotCi0wMC0xRS1DRCAgIChoZXgpCQlLWUxBTkQKLTAwMUVDRCAgICAgKGJhc2UgMTYpCQlLWUxBTkQKLQkJCQlObzk1IEJ1aWxkaW5nLAotCQkJCVNvdXRoZWFzdCBDb3JuZXIgb2YgWGlzYW5xaSBCcmlkZ2UsCi0JCQkJSGFpZGlhbiBCZWlqaW5nIDEwMDA5NgotCQkJCUNISU5BCi0KLTAwLTFFLUNFICAgKGhleCkJCUJJU0EgVGVjaG5vbG9naWVzIChIb25nIEtvbmcpIExpbWl0ZWQKLTAwMUVDRSAgICAgKGJhc2UgMTYpCQlCSVNBIFRlY2hub2xvZ2llcyAoSG9uZyBLb25nKSBMaW1pdGVkCi0JCQkJMTEwMiwgVHJhbnMgQXNpYSBDZW50cmUsCi0JCQkJMTggS2luIEhvbmcgU3RyZWV0LAotCQkJCUt3YWkgQ2h1bmcgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xRS1DRiAgIChoZXgpCQlQSElMSVBTIEVMRUNUUk9OSUNTIFVLIExURAotMDAxRUNGICAgICAoYmFzZSAxNikJCVBISUxJUFMgRUxFQ1RST05JQ1MgVUsgTFRECi0JCQkJUEhJTElQUyBDRU5UUkUKLQkJCQlHVUlMREZPUkQgQlVTSU5FU1MgUEFSSwotCQkJCUdVSUxERk9SRCBTVVJSRVkgR1UyIDhYSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFFLUQwICAgKGhleCkJCUNPTk5FWElVTQotMDAxRUQwICAgICAoYmFzZSAxNikJCUNPTk5FWElVTQotCQkJCTM5IEwnQUxCQVJFREUKLQkJCQlBVVpJRUxMRSAgMzE2NTAKLQkJCQlGUkFOQ0UKLQotMDAtMUUtRDEgICAoaGV4KQkJS2V5cHJvY2Vzc29yIEIuVi4KLTAwMUVEMSAgICAgKGJhc2UgMTYpCQlLZXlwcm9jZXNzb3IgQi5WLgotCQkJCVBhYXNoZXV2ZWx3ZWcgMjAKLQkJCQlBbXN0ZXJkYW0gTkggMTEwNSBCSgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFFLUQyICAgKGhleCkJCVJheSBTaGluZSBWaWRlbyBUZWNobm9sb2d5IEluYwotMDAxRUQyICAgICAoYmFzZSAxNikJCVJheSBTaGluZSBWaWRlbyBUZWNobm9sb2d5IEluYwotCQkJCTZGLE5vLjk4LFNlYy4xLFhpbnRhaSA1dGggUmQuCi0JCQkJWGl6aGkgQ2l0eSBUYWlwZWkgQ291bnR5IDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtRDMgICAoaGV4KQkJRG90IFRlY2hub2xvZ3kgSW50J2wgQ28uLCBMdGQuCi0wMDFFRDMgICAgIChiYXNlIDE2KQkJRG90IFRlY2hub2xvZ3kgSW50J2wgQ28uLCBMdGQuCi0JCQkJVW5pdCAxMDAxLCBGb3Vyc2VhcyBCdWlsZGluZyAyMDgtMjEyLCBOYXRoYW4gUm9hZAotCQkJCUtvd2xvb24gIAotCQkJCUhPTkcgS09ORwotCi0wMC0xRS1ENCAgIChoZXgpCQlEb2JsZSBFbmdpbmVlcmluZwotMDAxRUQ0ICAgICAoYmFzZSAxNikJCURvYmxlIEVuZ2luZWVyaW5nCi0JCQkJODUgV2FsbnV0IFN0cmVldAotCQkJCVdhdGVydG93biBNYXNzYWNodXNldHRzIDAyNDcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1ENSAgIChoZXgpCQlUZWtvbi1BdXRvbWF0aWNzCi0wMDFFRDUgICAgIChiYXNlIDE2KQkJVGVrb24tQXV0b21hdGljcwotCQkJCVplbGVub2dyYWQsIDUxMi0yOQotCQkJCU1vc2NvdyAgMTI0NDgyCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFFLUQ2ICAgKGhleCkJCUFsZW50ZWMgJiBPcmlvbiBBQgotMDAxRUQ2ICAgICAoYmFzZSAxNikJCUFsZW50ZWMgJiBPcmlvbiBBQgotCQkJCUJveCAxMDgKLQkJCQkxMzIgMjMgU2FsdHNq9i1Cb28gCi0JCQkJU1dFREVOCi0KLTAwLTFFLUQ3ICAgKGhleCkJCUgtU3RyZWFtIFdpcmVsZXNzLCBJbmMuCi0wMDFFRDcgICAgIChiYXNlIDE2KQkJSC1TdHJlYW0gV2lyZWxlc3MsIEluYy4KLQkJCQkyNTk1IEVhc3QgQmF5c2hvcmUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCVBhbG8gQWx0byBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtRDggICAoaGV4KQkJRGlnaXRhbCBVbml0ZWQgSW5jLgotMDAxRUQ4ICAgICAoYmFzZSAxNikJCURpZ2l0YWwgVW5pdGVkIEluYy4KLQkJCQk5RiwgTm8uMjIwLCBHYW5nY2lhbiBSZC4KLQkJCQlUYWlwZWkgIDExNDQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS1EOSAgIChoZXgpCQlNaXRzdWJpc2hpIFByZWNpc2lvbiBDby4sTFRkLgotMDAxRUQ5ICAgICAoYmFzZSAxNikJCU1pdHN1YmlzaGkgUHJlY2lzaW9uIENvLixMVGQuCi0JCQkJMzQ1IEtBTUlNQUNISVlBCi0JCQkJS0FNQUtVUkEtQ2l0eSBLQU5BR0FXQS1QcmVmZWN0dXJlIDI0Ny04NTA1Ci0JCQkJSkFQQU4KLQotMDAtMUUtREEgICAoaGV4KQkJV2VzZW1hbm4gRWxla3Ryb3RlY2huaWVrIEIuVi4KLTAwMUVEQSAgICAgKGJhc2UgMTYpCQlXZXNlbWFubiBFbGVrdHJvdGVjaG5pZWsgQi5WLgotCQkJCURyb29nYmxvZW0gMzEKLQkJCQlSb3R0ZXJkYW0gWnVpZC1Ib2xsYW5kIDMwNjggQVcKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xRS1EQiAgIChoZXgpCQlHaWtlbiBUcmFzdGVtIENvLiwgTHRkLgotMDAxRURCICAgICAoYmFzZSAxNikJCUdpa2VuIFRyYXN0ZW0gQ28uLCBMdGQuCi0JCQkJNC0xIFRha2VkYSBEYW5rYXdhcmFjaG8gRnVzaGltaWt1Ci0JCQkJS3lvdG8gIDYxMi04NDE0Ci0JCQkJSkFQQU4KLQotMDAtMUUtREMgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTAwMUVEQyAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OAotCQkJCVNXRURFTgotCi0wMC0xRS1ERCAgIChoZXgpCQlXQVNLTyBTLkEuCi0wMDFFREQgICAgIChiYXNlIDE2KQkJV0FTS08gUy5BLgotCQkJCUJlcmJlY2tpZWdvIDYKLQkJCQlHbGl3aWNlIFNpbGVzaWEgNDQtMTAwCi0JCQkJUE9MQU5ECi0KLTAwLTFFLURFICAgKGhleCkJCUJZRCBDT01QQU5ZIExJTUlURUQKLTAwMUVERSAgICAgKGJhc2UgMTYpCQlCWUQgQ09NUEFOWSBMSU1JVEVECi0JCQkJTk8uMSxCYW9waW5nIFJvYWQsQmFvbG9uZyBJbmR1c3RyaWFsIFRvd24sTG9uZ2dhbmcKLQkJCQlTSEVOIFpIRU4gR3Vhbmdkb25nIDUxODExNgotCQkJCUNISU5BCi0KLTAwLTFFLURGICAgKGhleCkJCU1hc3RlciBJbmR1c3RyaWFsaXphdGlvbiBDZW50ZXIgS2lzdGEKLTAwMUVERiAgICAgKGJhc2UgMTYpCQlNYXN0ZXIgSW5kdXN0cmlhbGl6YXRpb24gQ2VudGVyIEtpc3RhCi0JCQkJVG9yc2hhbW5zZ2F0YW4gMzYKLQkJCQlLaXN0YQotCQkJCVN0b2NraG9sbSAgU0UtMTY0IDgwCi0JCQkJU1dFREVOCi0KLTAwLTFFLUUwICAgKGhleCkJCVVybWV0IERvbXVzIFNwQQotMDAxRUUwICAgICAoYmFzZSAxNikJCVVybWV0IERvbXVzIFNwQQotCQkJCVZpYSBCb2xvZ25hIDE4OC9DCi0JCQkJVG9yaW5vIFRPIEktMTAxNTQKLQkJCQlJVEFMWQotCi0wMC0xRS1FMSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMUVFMSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtRTIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDFFRTIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLUUzICAgKGhleCkJCVQmVyBFbGVjdHJvbmljcyAoU2hlblpoZW4pIENvLixMdGQKLTAwMUVFMyAgICAgKGJhc2UgMTYpCQlUJlcgRWxlY3Ryb25pY3MgKFNoZW5aaGVuKSBDby4sTHRkCi0JCQkJMkYgQmFpeWluZyBCdWlsZGluZywgTm8uMTksIE5hbmhhaVJkLiwgTmFuc2hhbiBEaXN0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA1MgotCQkJCUNISU5BCi0KLTAwLTFFLUU0ICAgKGhleCkJCUFDUyBTb2x1dGlvbnMgRnJhbmNlCi0wMDFFRTQgICAgIChiYXNlIDE2KQkJQUNTIFNvbHV0aW9ucyBGcmFuY2UKLQkJCQlSdWUgQ2xhdWRlIENoYXBwZQotCQkJCUd1aWxoZXJhbmQgR3JhbmdlcyBBcmRlY2hlIDA3NTAzCi0JCQkJRlJBTkNFCi0KLTAwLTFFLUU1ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAxRUU1ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtRTYgICAoaGV4KQkJU2hlbnpoZW4gQWR2YW5jZWQgVmlkZW8gSW5mby1UZWNoIENvLiwgTHRkLgotMDAxRUU2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEFkdmFuY2VkIFZpZGVvIEluZm8tVGVjaCBDby4sIEx0ZC4KLQkJCQlUaWFueGlhbmcgMTFBLCAgVGlhbidhbiBDeWJlciBQYXJrICwgRnV0aWFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0OAotCQkJCUNISU5BCi0KLTAwLTFFLUU3ICAgKGhleCkJCUVwaWMgU3lzdGVtcyBJbmMKLTAwMUVFNyAgICAgKGJhc2UgMTYpCQlFcGljIFN5c3RlbXMgSW5jCi0JCQkJMzkwIFMuIEFiYm90dCBBdmUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtRTggICAoaGV4KQkJTXl0ZWsKLTAwMUVFOCAgICAgKGJhc2UgMTYpCQlNeXRlawotCQkJCTE1MSBMYWZheWV0dGUgU3RyIDMgRmwKLQkJCQlOZXcgWW9yayBOWSAxMDAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtRTkgICAoaGV4KQkJU3RvbmVyaWRnZSBFbGVjdHJvbmljcyBBQgotMDAxRUU5ICAgICAoYmFzZSAxNikJCVN0b25lcmlkZ2UgRWxlY3Ryb25pY3MgQUIKLQkJCQlH5XJkc2ZvZ2RlduRnZW4gMThBCi0JCQkJQnJvbW1hIFN0b2NraG9sbSAxNjggNjYKLQkJCQlTV0VERU4KLQotMDAtMUUtRUEgICAoaGV4KQkJU2Vuc29yIFN3aXRjaCwgSW5jLgotMDAxRUVBICAgICAoYmFzZSAxNikJCVNlbnNvciBTd2l0Y2gsIEluYy4KLQkJCQk5MDAgTm9ydGhyb3AgUm9hZAotCQkJCVdhbGxpbmdmb3JkIENUIDA2NDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1FQiAgIChoZXgpCQlUYWxrLUEtUGhvbmUgQ28uCi0wMDFFRUIgICAgIChiYXNlIDE2KQkJVGFsay1BLVBob25lIENvLgotCQkJCTUwMTMgTi4gS2VkemllIEF2ZS4KLQkJCQlDaGljYWdvIElMIDYwNjI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1FQyAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELgotMDAxRUVDICAgICAoYmFzZSAxNikJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuCi0JCQkJTk8uIDI1LCBUSEUgM1JEIFN0cmVldAotCQkJCUtVTlNIQU4gRVhQT1JUIFBST0NFU1NJTkcgWk9ORQotCQkJCUtVTlNIQU4gQ0lUWSBTVVpIT1UgUFJPVklOQ0UgMjE1MzAwCi0JCQkJQ0hJTkEKLQotMDAtMUUtRUQgICAoaGV4KQkJQWR2ZW50aXEgTHRkLgotMDAxRUVEICAgICAoYmFzZSAxNikJCUFkdmVudGlxIEx0ZC4KLQkJCQlUZWNobm9sb2d5IEhvdXNlCi0JCQkJVHJhZmFsZ2FyIFdheQotCQkJCUJhciBIaWxsIENhbWJzLiBDQjMgOFNRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtRUUgICAoaGV4KQkJRVRMIFN5c3RlbXMgTHRkCi0wMDFFRUUgICAgIChiYXNlIDE2KQkJRVRMIFN5c3RlbXMgTHRkCi0JCQkJQ29sZHdlbGwgUmFkaW8gU3RhdGlvbgotCQkJCU1hZGxleQotCQkJCUhlcmVmb3JkIEhlcmVmb3Jkc2hpcmUgSFIyIDlORQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFFLUVGICAgKGhleCkJCUNhbnRyb25pYyBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTAwMUVFRiAgICAgKGJhc2UgMTYpCQlDYW50cm9uaWMgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0JCQkJVW5pdCA1MTUtNTE2LCBCdWlsZGluZyAxNSwgRWFzdCBXaW5nLCBObyA4IFNjaWVuY2UgUGFyayBXZXN0IEF2ZW51ZSwgSG9uZyBLb25nIFNjaWVuY2UgUGFyayBQaGFzZSBJSQotCQkJCVNoYXRpbiBOZXcgVGVycml0b3JpZXMgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLUYwICAgKGhleCkJCUdpZ2FmaW4gTmV0d29ya3MKLTAwMUVGMCAgICAgKGJhc2UgMTYpCQlHaWdhZmluIE5ldHdvcmtzCi0JCQkJMTkwNTAgUHJ1bmVyaWRnZQotCQkJCVN1aXRlIDIwMAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtRjEgICAoaGV4KQkJU2VydmltYXQKLTAwMUVGMSAgICAgKGJhc2UgMTYpCQlTZXJ2aW1hdAotCQkJCVpBRVQgTGVzIEhhaWVzCi0JCQkJUnVlIEJlbm9pdCBGcmFjaG9uCi0JCQkJU3QgTWF4aW1pbiBPaXNlIDYwNzQwCi0JCQkJRlJBTkNFCi0KLTAwLTFFLUYyICAgKGhleCkJCU1pY3JvIE1vdGlvbiBJbmMKLTAwMUVGMiAgICAgKGJhc2UgMTYpCQlNaWNybyBNb3Rpb24gSW5jCi0JCQkJNzA3MCBXaW5jaGVzdGVyIENpcmNsZQotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUYzICAgKGhleCkJCUZyb20yCi0wMDFFRjMgICAgIChiYXNlIDE2KQkJRnJvbTIKLQkJCQkyRiwgTWVzdGVyIGluYwotCQkJCTE2ODctMywgU2luaWwtZG9uZwotCQkJCURhZWplb24gIDMwNi0yMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtRjQgICAoaGV4KQkJTC0zIENvbW11bmljYXRpb25zIERpc3BsYXkgU3lzdGVtcwotMDAxRUY0ICAgICAoYmFzZSAxNikJCUwtMyBDb21tdW5pY2F0aW9ucyBEaXNwbGF5IFN5c3RlbXMKLQkJCQkxMzU1IEJsdWVncmFzcyBMYWtlcyBQYXJrd2F5Ci0JCQkJQWxwaGFyZXR0YSBHQSAzMDAwNC04NDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1GNSAgIChoZXgpCQlIaXRlayBBdXRvbWF0ZWQgSW5jLgotMDAxRUY1ICAgICAoYmFzZSAxNikJCUhpdGVrIEF1dG9tYXRlZCBJbmMuCi0JCQkJUm9vbSBDMy05MDEsIE5vLjM4MywgSHVhbWVuIFNoaWppYQotCQkJCVdlbnNhbmx1IFJvYWQsCi0JCQkJSGFuZ3pob3UgIDMxMDAxMgotCQkJCUNISU5BCi0KLTAwLTFFLUY2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUVGNiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1GNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFRjcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtRjggICAoaGV4KQkJRW1maW5pdHkgSW5jLgotMDAxRUY4ICAgICAoYmFzZSAxNikJCUVtZmluaXR5IEluYy4KLQkJCQkxMTEgRWxtIFN0cmVldAotCQkJCVN1aXRlIDIwMQotCQkJCVN1ZGJ1cnkgT250YXJpbyBQM0MxVDMKLQkJCQlDQU5BREEKLQotMDAtMUUtRjkgICAoaGV4KQkJUGFzY29tIEtvbW11bmlrYXRpb25zIHN5c3RlbWUgR21iSC4KLTAwMUVGOSAgICAgKGJhc2UgMTYpCQlQYXNjb20gS29tbXVuaWthdGlvbnMgc3lzdGVtZSBHbWJILgotCQkJCVRlY2hub2xvZ2llc3RyLiA0Ci0JCQkJQXJiaW5nIFVwcGVyIEF1c3RyaWEgNDMzMgotCQkJCUFVU1RSSUEKLQotMDAtMUUtRkEgICAoaGV4KQkJUFJPVEVJIEx0ZC4KLTAwMUVGQSAgICAgKGJhc2UgMTYpCQlQUk9URUkgTHRkLgotCQkJCTYwQSBCLlNhbXBzb25pZXZza3ksICBCdXNpbmVzcyBDZW50ZXIKLQkJCQlTdC5QZXRlcnNidXJnIFJVIDE5NDA0NAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRS1GQiAgIChoZXgpCQlUcmlvIE1vdGlvbiBUZWNobm9sb2d5IEx0ZAotMDAxRUZCICAgICAoYmFzZSAxNikJCVRyaW8gTW90aW9uIFRlY2hub2xvZ3kgTHRkCi0JCQkJU2hhbm5vbiBXYXkKLQkJCQlUZXdrZXNidXJ5IEdsb3VjZXN0ZXJzaGlyZSBHTDIwIDhORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFFLUZDICAgKGhleCkJCUpTQyAiTUFTU0EtSyIKLTAwMUVGQyAgICAgKGJhc2UgMTYpCQlKU0MgIk1BU1NBLUsiCi0JCQkJMTUsIEEsIFBpcm9nb3Zza2F5YSBuYWIuCi0JCQkJU2FpbnQtUGV0ZXJzYnVyZyBMZW5pbmdyYWRza2l5IHJlZy4gMTk0MDQ0Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFFLUZEICAgKGhleCkJCU1pY3JvYml0IDIuMCBBQgotMDAxRUZEICAgICAoYmFzZSAxNikJCU1pY3JvYml0IDIuMCBBQgotCQkJCU55c3RhZGVuIDEKLQkJCQlLQUxJWCAgOTUyNjEKLQkJCQlTV0VERU4KLQotMDAtMUUtRkUgICAoaGV4KQkJTEVWRUwgcy5yLm8uCi0wMDFFRkUgICAgIChiYXNlIDE2KQkJTEVWRUwgcy5yLm8uCi0JCQkJUGxob3Zza+EgMTk5NwotCQkJCU7hY2hvZCAgNTQ3IDAxCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMUUtRkYgICAoaGV4KQkJTXVlbGxlci1FbGVrdHJvbmlrIEdtYkggJiBDby4gS0cKLTAwMUVGRiAgICAgKGJhc2UgMTYpCQlNdWVsbGVyLUVsZWt0cm9uaWsgR21iSCAmIENvLiBLRwotCQkJCUZyYW56LUtsZWluZS1TdHIuIDE4Ci0JCQkJU2FsemtvdHRlbiBOUlcgMzMxNTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTAwICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFGMDAgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTBWCi0JCQkJREVOTUFSSwotCi0wMC0xRi0wMSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRjAxICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwdgotCQkJCURFTk1BUksKLQotMDAtMUYtMDIgICAoaGV4KQkJUGl4ZWxtZXRyaXggQ29ycG9yYXRpb24gUHRlIEx0ZAotMDAxRjAyICAgICAoYmFzZSAxNikJCVBpeGVsbWV0cml4IENvcnBvcmF0aW9uIFB0ZSBMdGQKLQkJCQkzMSBLYWtpIEJ1a2l0IFJvYWQgMwotCQkJCSMwNy0wMywgVGVjaGxpbmsKLQkJCQk0MTc4MTgKLQkJCQlTSU5HQVBPUkUKLQotMDAtMUYtMDMgICAoaGV4KQkJTlVNIEFHCi0wMDFGMDMgICAgIChiYXNlIDE2KQkJTlVNIEFHCi0JCQkJQmF0dGVuaHVzc3RyYXNzZSAxNgotCQkJCVRldWZlbiBBUiA5MDUzCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUYtMDQgICAoaGV4KQkJR3JhbmNoIEx0ZC4KLTAwMUYwNCAgICAgKGJhc2UgMTYpCQlHcmFuY2ggTHRkLgotCQkJCTQwIEtvcm9sZXZhIHN0ci4KLQkJCQk1MyBQaXNhcmV2YSBzdHIuCi0JCQkJTm92b3NpYmlyc2sgTlNPIDYzMDAxNQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRi0wNSAgIChoZXgpCQlpVEFTIFRlY2hub2xvZ3kgQ29ycC4KLTAwMUYwNSAgICAgKGJhc2UgMTYpCQlpVEFTIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQlOby4gNzUsIFNodWl5dWFuIFN0LgotCQkJCUhzaW5jaHUgQ2l0eSAgMzAwNjkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLTA2ICAgKGhleCkJCUludGVncmF0ZWQgRGlzcGF0Y2ggU29sdXRpb25zCi0wMDFGMDYgICAgIChiYXNlIDE2KQkJSW50ZWdyYXRlZCBEaXNwYXRjaCBTb2x1dGlvbnMKLQkJCQk2NDUgTW91bnRhaW4gQXZlCi0JCQkJV3lja29mZiBOSiAwNzQ4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMDcgICAoaGV4KQkJQVpURVEgTW9iaWxlCi0wMDFGMDcgICAgIChiYXNlIDE2KQkJQVpURVEgTW9iaWxlCi0JCQkJU3VpdGUgMjEwLCA1MjUgVW5pdmVyc2l0eSBBdmUKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTA4ICAgKGhleCkJCVJJU0NPIExURAotMDAxRjA4ICAgICAoYmFzZSAxNikJCVJJU0NPIExURAotCQkJCTMyIEhhY2hhcm9zaGV0IFN0Ci0JCQkJS2lyaWF0IE1hbGFjaGkgIDgzMTAxCi0JCQkJSVNSQUVMCi0KLTAwLTFGLTA5ICAgKGhleCkJCUpBU1RFQyBDTy4sIExURC4KLTAwMUYwOSAgICAgKGJhc2UgMTYpCQlKQVNURUMgQ08uLCBMVEQuCi0JCQkJSmFzdGVjIEIvRCwgOTItNwotCQkJCUt1bS1nb2sgRG9uZywgQm9vbi1EYW5nIEd1Ci0JCQkJU2VvbmctbmFtIFNpICBLeXVuZy1naSBEbyA0NjMtODA0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTBBICAgKGhleCkJCU5vcnRlbAotMDAxRjBBICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTE4MzAgTWF0aGVzb24gQm91bGV2YXJkCi0JCQkJU3VpdGUgMQotCQkJCU1pc3Npc3NhdWdhIE9udGFyaW8gTDRXIDBCMwotCQkJCUNBTkFEQQotCi0wMC0xRi0wQiAgIChoZXgpCQlGZWRlcmFsIFN0YXRlIFVuaXRhcnkgRW50ZXJwcmlzZSBJbmR1c3RyaWFsIFVuaW9uIkVsZWN0cm9wcmlib3IiCi0wMDFGMEIgICAgIChiYXNlIDE2KQkJRmVkZXJhbCBTdGF0ZSBVbml0YXJ5IEVudGVycHJpc2UgSW5kdXN0cmlhbCBVbmlvbiJFbGVjdHJvcHJpYm9yIgotCQkJCQotCQkJCVBlbnphICA0NDAwMTEKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUYtMEMgICAoaGV4KQkJSW50ZWxsaWdlbnQgRGlnaXRhbCBTZXJ2aWNlcyBHbWJICi0wMDFGMEMgICAgIChiYXNlIDE2KQkJSW50ZWxsaWdlbnQgRGlnaXRhbCBTZXJ2aWNlcyBHbWJICi0JCQkJR3JldmVzbXVlaGxlbmVyIFN0cmFzc2UgOAotCQkJCU1hbGxlbnRpbiBNZWNrbGVuYnVyZy1Wb3Jwb21tZXJuIDIzNjM5Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi0wRCAgIChoZXgpCQlMMyBDb21tdW5pY2F0aW9ucyAtIFRlbGVtZXRyeSBXZXN0Ci0wMDFGMEQgICAgIChiYXNlIDE2KQkJTDMgQ29tbXVuaWNhdGlvbnMgLSBUZWxlbWV0cnkgV2VzdAotCQkJCTkwMjAgQmFsYm9hIEF2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMEUgICAoaGV4KQkJSmFwYW4gS3lhc3RlbSBDby4sIEx0ZAotMDAxRjBFICAgICAoYmFzZSAxNikJCUphcGFuIEt5YXN0ZW0gQ28uLCBMdGQKLQkJCQkxLTQtNAotCQkJCU5pc2hpa2ktY2hvCi0JCQkJVGFjaGlrYXdhIFRva3lvIDE5MC0wMDIyCi0JCQkJSkFQQU4KLQotMDAtMUYtMEYgICAoaGV4KQkJU2VsZWN0IEVuZ2luZWVyZWQgU3lzdGVtcwotMDAxRjBGICAgICAoYmFzZSAxNikJCVNlbGVjdCBFbmdpbmVlcmVkIFN5c3RlbXMKLQkJCQk3OTkxIFcuIDI2IEF2ZQotCQkJCUhpYWxlYWggRmxvcmlkYSAzMzAxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMTAgICAoaGV4KQkJVE9MRURPIERPIEJSQVNJTCBJTkRVU1RSSUEgREUgQkFMQU5DQVMgIExUREEKLTAwMUYxMCAgICAgKGJhc2UgMTYpCQlUT0xFRE8gRE8gQlJBU0lMIElORFVTVFJJQSBERSBCQUxBTkNBUyAgTFREQQotCQkJCVJVQSBNQU5PRUwgQ1JFTU9ORVNJLCAxCi0JCQkJRVNUUkFEQSBTQU1VRUwgQUlaRU1CRVJHLCAzNDUKLQkJCQlTQU8gQkVSTkFSRE8gRE8gQ0FNUE8gU1AgMDk4NTEtOTAwCi0JCQkJQlJBWklMCi0KLTAwLTFGLTExICAgKGhleCkJCU9QRU5NT0tPLCBJTkMuCi0wMDFGMTEgICAgIChiYXNlIDE2KQkJT1BFTk1PS08sIElOQy4KLQkJCQk3RiwgTm8gMzAwLCBZYW5nIEd1YW5nIFN0cmVldAotCQkJCU5laUh1Ci0JCQkJVGFpcGVpICAxMTQ5MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtMTIgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAxRjEyICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0xMyAgIChoZXgpCQlTLiYgQS5TLiBMdGQuCi0wMDFGMTMgICAgIChiYXNlIDE2KQkJUy4mIEEuUy4gTHRkLgotCQkJCUJvdXRyb3MgQmxkZy4gMXN0IGJzbXQKLQkJCQlHaGFiaSBTdHJlZXQKLQkJCQlCZWlydXQgIDIwNjcgNzgwOAotCQkJCUxFQkFOT04KLQotMDAtMUYtMTQgICAoaGV4KQkJTmV4RwotMDAxRjE0ICAgICAoYmFzZSAxNikJCU5leEcKLQkJCQk1RiBTZW91bCBBY2FkZW15IEJsZGcsIERhZWNoaS1Eb25nLCBHYW5nbmFtLUd1LAotCQkJCVNlb3VsICAxMzUtMjgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTE1ICAgKGhleCkJCUJpb3NjcnlwdCBJbmMKLTAwMUYxNSAgICAgKGJhc2UgMTYpCQlCaW9zY3J5cHQgSW5jCi0JCQkJNTA1IENvY2hyYW5lIERyaXZlCi0JCQkJTWFya2hhbSBPbnRhcmlvIEwzUiA4RTMKLQkJCQlDQU5BREEKLQotMDAtMUYtMTYgICAoaGV4KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotMDAxRjE2ICAgICAoYmFzZSAxNikJCVdpc3Ryb24gQ29ycG9yYXRpb24KLQkJCQkyMUYsIDg4LCBTZWMuMSxIc2luIFRhaSBXdSBSZC4sIEhzaWNoaWgsCi0JCQkJVGFpcGVpIEhzaWVuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtMTcgICAoaGV4KQkJSURYIENvbXBhbnksIEx0ZC4KLTAwMUYxNyAgICAgKGJhc2UgMTYpCQlJRFggQ29tcGFueSwgTHRkLgotCQkJCTYtMjgtMTEgU2h1a3VnYXdhcmEsIFRhbmEta3UKLQkJCQlLYXdhc2FraS1TaGkgS2FuYWdhd2EtS2VuIDIxNDAwMjEKLQkJCQlKQVBBTgotCi0wMC0xRi0xOCAgIChoZXgpCQlIYWt1c2FuLk1mZy5DbywuTHRkCi0wMDFGMTggICAgIChiYXNlIDE2KQkJSGFrdXNhbi5NZmcuQ28sLkx0ZAotCQkJCVRvbWluLUtvdWd5b3UtSWtlYnVrdXJvIEJMRC41RgotCQkJCTItMjYtNSAgTWluYW1pLUlrZWJ1a3VybwotCQkJCVRvc2ltYSBXYXJkIFRva3lvLU1ldC4gMTcxLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0xRi0xOSAgIChoZXgpCQlCRU4tUkkgRUxFQ1RST05JQ0EgUy5BLgotMDAxRjE5ICAgICAoYmFzZSAxNikJCUJFTi1SSSBFTEVDVFJPTklDQSBTLkEuCi0JCQkJUE9MLiBJTkQuIFZFTlRPUlJPIERFTCBDQU5PCi0JCQkJQy8uIExPWk9ZQSA4Ci0JCQkJQUxDT1JDT04gTUFEUklEIDI4OTI1Ci0JCQkJU1BBSU4KLQotMDAtMUYtMUEgICAoaGV4KQkJUHJvbWludmVzdAotMDAxRjFBICAgICAoYmFzZSAxNikJCVByb21pbnZlc3QKLQkJCQk3LCBCb2JydWlza2F5YSB1bGljYQotCQkJCVNhaW50LVBldGVyc2J1cmcgTm9ydGgtV2VzdCBGZWRlcmFsIERpc3RyaWN0IDE5NTAwOQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRi0xQiAgIChoZXgpCQlSb3lhbFRlayBDb21wYW55IEx0ZC4KLTAwMUYxQiAgICAgKGJhc2UgMTYpCQlSb3lhbFRlayBDb21wYW55IEx0ZC4KLQkJCQlTdWl0ZSA5Ri0xLCBOby4gMTA3MSwgQ2h1bmcgQ2hlbmcgUmQuCi0JCQkJVGFveXVhbiBTaGllbiBUYW95dWFuIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtMUMgICAoaGV4KQkJS09CSVNISSBFTEVDVFJJQyBDby4sTHRkLgotMDAxRjFDICAgICAoYmFzZSAxNikJCUtPQklTSEkgRUxFQ1RSSUMgQ28uLEx0ZC4KLQkJCQkxODA1LTEKLQkJCQlLYW1peWEKLQkJCQlLb3Vub3N1LXNoaSBTYWl0YW1hLWtlbiAzNjUtMDAyNwotCQkJCUpBUEFOCi0KLTAwLTFGLTFEICAgKGhleCkJCUF0bGFzIE1hdGVyaWFsIFRlc3RpbmcgVGVjaG5vbG9neSBMTEMKLTAwMUYxRCAgICAgKGJhc2UgMTYpCQlBdGxhcyBNYXRlcmlhbCBUZXN0aW5nIFRlY2hub2xvZ3kgTExDCi0JCQkJNDExNCBOLiBSYXZlbnN3b29kIEF2ZS4KLQkJCQlDaGljYWdvIElMIDYwNjEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0xRSAgIChoZXgpCQlBc3RlYyBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDFGMUUgICAgIChiYXNlIDE2KQkJQXN0ZWMgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTEyRiwgTm8uMiwgSmlhbiBCYSBSZC4KLQkJCQlDaHVuZyBIbyBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0xRiAgIChoZXgpCQlFZGltYXggVGVjaG5vbG9neSBDby4gTHRkLgotMDAxRjFGICAgICAoYmFzZSAxNikJCUVkaW1heCBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJTm8uIDMsIFd1LUNodWFuIDNyZCBSb2FkLCBXdS1LdSBJbmR1c3RyaWFsIFBhcmssCi0JCQkJVGFpcGVpIEhzaWVuIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtMjAgICAoaGV4KQkJTG9naXRlY2ggRXVyb3BlIFNBCi0wMDFGMjAgICAgIChiYXNlIDE2KQkJTG9naXRlY2ggRXVyb3BlIFNBCi0JCQkJTW91bGluIGR1IENob2MgRAotCQkJCVJvbWFuZWwgc3VyIE1vcmdlcyBDSCAxMTIyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUYtMjEgICAoaGV4KQkJSW5uZXIgTW9uZ29saWEgWWluIEFuIFNjaWVuY2UgJiBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLixMCi0wMDFGMjEgICAgIChiYXNlIDE2KQkJSW5uZXIgTW9uZ29saWEgWWluIEFuIFNjaWVuY2UgJiBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLixMCi0JCQkJWWluQW4gQnVpbGRpbmcgWWl3ZWkgUm9hZC5SdVlpCi0JCQkJRGV2ZWxvcG1lbnQgWm9uZSxIb2hob3QKLQkJCQlCZWlqaW5nICAwMTAwMTAKLQkJCQlDSElOQQotCi0wMC0xRi0yMiAgIChoZXgpCQlGaWJlcnhvbiwgSW5jLgotMDAxRjIyICAgICAoYmFzZSAxNikJCUZpYmVyeG9uLCBJbmMuCi0JCQkJNTIwMSBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTdWl0ZSAzNDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMjMgICAoaGV4KQkJSW50ZXJhY291c3RpY3MKLTAwMUYyMyAgICAgKGJhc2UgMTYpCQlJbnRlcmFjb3VzdGljcwotCQkJCURyZWplcnZhZW5nZXQgOAotCQkJCUFzc2VucyBESyA1NjEwCi0JCQkJREVOTUFSSwotCi0wMC0xRi0yNCAgIChoZXgpCQlESUdJVFZJRVcgVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwMUYyNCAgICAgKGJhc2UgMTYpCQlESUdJVFZJRVcgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQlOTy4gMTQtMjIsIFRJQU4tRlUgLAotCQkJCVNBTlNJQSBUT1dOU0hJUCwKLQkJCQlUQUlQRUkgQ09VTlRZICAyMzcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLTI1ICAgKGhleCkJCU1CUyBHbWJICi0wMDFGMjUgICAgIChiYXNlIDE2KQkJTUJTIEdtYkgKLQkJCQlS9m1lcnN0cmHfZSAxNQotCQkJCUtyZWZlbGQgTm9yZHJoZWluLVdlc3RmYWxlbiA0NzgwOQotCQkJCUdFUk1BTlkKLQotMDAtMUYtMjYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRjI2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTI3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUYyNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0yOCAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDFGMjggICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQKLQkJCQlSb3NldmlsbGUgQ0EgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTI5ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAxRjI5ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDIKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0yQSAgIChoZXgpCQlBQ0NNCi0wMDFGMkEgICAgIChiYXNlIDE2KQkJQUNDTQotCQkJCU9ib3VyIEluZHVzdHJpYWwgQ2l0eSwgSW5kdXN0cmlhbCB6b25lIEEsIGxvdDE0LCBibG9jayAxMjAwNi4KLQkJCQlDYWlybyAgCi0JCQkJRUdZUFQKLQotMDAtMUYtMkIgICAoaGV4KQkJT3JhbmdlIExvZ2ljCi0wMDFGMkIgICAgIChiYXNlIDE2KQkJT3JhbmdlIExvZ2ljCi0JCQkJIzcwNiBBY2VUZWNobm9Ub3dlciAxMC1jaGEsNDcwLTUKLQkJCQlHYXNhbi1kb25nIEdldW1jaGVvbi1ndQotCQkJCVNFT1VMICAxNTMtNzg5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTJDICAgKGhleCkJCVN0YXJicmlkZ2UgTmV0d29ya3MKLTAwMUYyQyAgICAgKGJhc2UgMTYpCQlTdGFyYnJpZGdlIE5ldHdvcmtzCi0JCQkJMzI2NSBNZXJpZGlhbiBQYXJrd2F5Ci0JCQkJU3VpdGUgMTM0Ci0JCQkJV2VzdG9uIEZMIDMzMzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0yRCAgIChoZXgpCQlFbGVjdHJvLU9wdGljYWwgSW1hZ2luZywgSW5jLgotMDAxRjJEICAgICAoYmFzZSAxNikJCUVsZWN0cm8tT3B0aWNhbCBJbWFnaW5nLCBJbmMuCi0JCQkJNDMwMCBGb3J0dW5lIFBsYWNlLCBTdWl0ZSBDCi0JCQkJV2VzdCBNZWxib3VybmUgRkwgMzI5MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTJFICAgKGhleCkJCVRyaWFuZ2xlIFJlc2VhcmNoIEludCdsIFB0ZSBMdGQKLTAwMUYyRSAgICAgKGJhc2UgMTYpCQlUcmlhbmdsZSBSZXNlYXJjaCBJbnQnbCBQdGUgTHRkCi0JCQkJMTAgVWJpIENyZXNjZW50ICMwNS04MwotCQkJCVViaSBUZWNocGFyayBTRyA0MDg2NjQKLQkJCQlTSU5HQVBPUkUKLQotMDAtMUYtMkYgICAoaGV4KQkJQmVya2VyIEdtYkggJiBDby4gS0cKLTAwMUYyRiAgICAgKGJhc2UgMTYpCQlCZXJrZXIgR21iSCAmIENvLiBLRwotCQkJCUtsYWdlYmFjaCAzOAotCQkJCVNjaGFsa3NtdWVobGUgTlJXIDU4NTc5Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi0zMCAgIChoZXgpCQlUcmF2ZWxwaW5nCi0wMDFGMzAgICAgIChiYXNlIDE2KQkJVHJhdmVscGluZwotCQkJCQotCQkJCUxlaXB6aWdlciBTdHIuIDQ2Ci0JCQkJQ2hlbW5pdHogU2F4b255IDA5MTEzCi0JCQkJR0VSTUFOWQotCi0wMC0xRi0zMSAgIChoZXgpCQlSYWRpb2NvbXAKLTAwMUYzMSAgICAgKGJhc2UgMTYpCQlSYWRpb2NvbXAKLQkJCQlLcmFrZXN2ZWogMTcKLQkJCQlIaWxsZXJvZWQgQ29wZW5oYWdlbiAzNDAwCi0JCQkJREVOTUFSSwotCi0wMC0xRi0zMiAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMUYzMiAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyBLWU9UTyA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTFGLTMzICAgKGhleCkJCU5ldGdlYXIgSW5jLgotMDAxRjMzICAgICAoYmFzZSAxNikJCU5ldGdlYXIgSW5jLgotCQkJCTQ1MDAgR3JlYXQgQW1lcmljYSBQa3d5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTM0ICAgKGhleCkJCUx1bmcgSHdhIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxRjM0ICAgICAoYmFzZSAxNikJCUx1bmcgSHdhIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTNGLCAyNDgsIFBlaSBTaGVuZyBSZC4gU2VjLiAzLAotCQkJCVNoZW5nIEtlbmcKLQkJCQlUYWlwZWkgSHNpZW4gMjIyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0zNSAgIChoZXgpCQlBSVI4MDIgTExDCi0wMDFGMzUgICAgIChiYXNlIDE2KQkJQUlSODAyIExMQwotCQkJCTExNjkgQmFueW9uIENvdXJ0Ci0JCQkJTmFwZXJ2aWxsZSBJTCA2MDU0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMzYgICAoaGV4KQkJQmVsbHdpbiBJbmZvcm1hdGlvbiBDby4gTHRkLiwKLTAwMUYzNiAgICAgKGJhc2UgMTYpCQlCZWxsd2luIEluZm9ybWF0aW9uIENvLiBMdGQuLAotCQkJCTE3Ri0xLE5vLjEyOCxDaHVuZyBEZSBSZC4KLQkJCQlUYWljaHVuZyAgNDA0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0zNyAgIChoZXgpCQlHZW5lc2lzIEkmQwotMDAxRjM3ICAgICAoYmFzZSAxNikJCUdlbmVzaXMgSSZDCi0JCQkJIzUxNSBsaXNhbnRla2V1bm90YXVuCi0JCQkJMTE0MS0xIEJhZWtzZW9rLURvbmcsIGxpc2FuZG9uZy1HdQotCQkJCUdveWFuZyBHeWVvbmdnaSA0MTAtNzIyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTM4ICAgKGhleCkJCVBPU0lUUk9OCi0wMDFGMzggICAgIChiYXNlIDE2KQkJUE9TSVRST04KLQkJCQlFU1RSQURBIFRFTEVCUkFTLVVOSUNBTVAsIEtNMCw5NyAtIENKLjAxCi0JCQkJQkFJUlJPOiBDSURBREUgVU5JVkVSU0lUQVJJQQotCQkJCUNBTVBJTkFTIFNBTyBQQVVMTyAxMzA4NC05NzEKLQkJCQlCUkFaSUwKLQotMDAtMUYtMzkgICAoaGV4KQkJQ29uc3RydWNjaW9uZXMgeSBBdXhpbGlhciBkZSBGZXJyb2NhcnJpbGVzLCBTLkEuCi0wMDFGMzkgICAgIChiYXNlIDE2KQkJQ29uc3RydWNjaW9uZXMgeSBBdXhpbGlhciBkZSBGZXJyb2NhcnJpbGVzLCBTLkEuCi0JCQkJQy8gSi5NLiBJdHVycmlveiwgMjYKLQkJCQlCZWFzYWluIEd1aXD6emNvYSBFLTIwMjAwCi0JCQkJU1BBSU4KLQotMDAtMUYtM0EgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLiwgTHRkLgotMDAxRjNBICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby4sIEx0ZC4KLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLTNCICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxRjNCICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUYtM0MgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFGM0MgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRi0zRCAgIChoZXgpCQlRYml0IEdtYkgKLTAwMUYzRCAgICAgKGJhc2UgMTYpCQlRYml0IEdtYkgKLQkJCQlTdGVnd2llc2Vuc3RyYXNzZSAzMgotCQkJCUJydWNoc2FsIEdlcm1hbnkgNzY2NDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTNFICAgKGhleCkJCVJQLVRlY2huaWsgZS5LLgotMDAxRjNFICAgICAoYmFzZSAxNikJCVJQLVRlY2huaWsgZS5LLgotCQkJCUhlcm1hbm4tU3RhdWRpbmdlci1TdHIuIDEwLTE2Ci0JCQkJUm9kZ2F1IEhlc3NlbiA2MzExMAotCQkJCUdFUk1BTlkKLQotMDAtMUYtM0YgICAoaGV4KQkJQVZNIEdtYkgKLTAwMUYzRiAgICAgKGJhc2UgMTYpCQlBVk0gR21iSAotCQkJCUFsdC1Nb2FiaXQgOTUKLQkJCQlCZXJsaW4gIDEwNTU5Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi00MCAgIChoZXgpCQlTcGVha2VyY3JhZnQgSW5jLgotMDAxRjQwICAgICAoYmFzZSAxNikJCVNwZWFrZXJjcmFmdCBJbmMuCi0JCQkJOTQwIENvbHVtYmlhIEF2ZS4sCi0JCQkJUml2ZXJzaWRlIENBIDkyNTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00MSAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLTAwMUY0MSAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00MiAgIChoZXgpCQlFdGhlcnN0YWNrIFB0eSBMdGQKLTAwMUY0MiAgICAgKGJhc2UgMTYpCQlFdGhlcnN0YWNrIFB0eSBMdGQKLQkJCQkyMDEgTmF0aW9uYWwgSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQlBdXN0cmFsaWFuIFRlY2hub2xvZ3kgUGFyayBOU1cgMjIzNAotCQkJCUFVU1RSQUxJQQotCi0wMC0xRi00MyAgIChoZXgpCQlFTlRFUyBFTEVLVFJPTklLCi0wMDFGNDMgICAgIChiYXNlIDE2KQkJRU5URVMgRUxFS1RST05JSwotCQkJCVkuIER1ZHVsbHUgT3JnLiBTYW4uIEJvbC4gQW5kIFNhbmF5aSBTaXQuIE5vLjYKLQkJCQlVbXJhbml5ZQotCQkJCUlzdGFuYnVsIER1ZHVsbHUgMzQ3NzUKLQkJCQlUVVJLRVkKLQotMDAtMUYtNDQgICAoaGV4KQkJR0UgVHJhbnNwb3J0YXRpb24gU3lzdGVtcwotMDAxRjQ0ICAgICAoYmFzZSAxNikJCUdFIFRyYW5zcG9ydGF0aW9uIFN5c3RlbXMKLQkJCQkyOTAxIEVhc3QgTGFrZSBSb2FkCi0JCQkJRXJpZSBQQSAxNjUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtNDUgICAoaGV4KQkJRW50ZXJhc3lzCi0wMDFGNDUgICAgIChiYXNlIDE2KQkJRW50ZXJhc3lzCi0JCQkJNTAgTWludXRlbWFuIFJvYWQKLQkJCQlBbmRvdmVyIE1BIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00NiAgIChoZXgpCQlOb3J0ZWwKLTAwMUY0NiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRleGFzIDc1MDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00NyAgIChoZXgpCQlNQ1MgTG9naWMgSW5jLgotMDAxRjQ3ICAgICAoYmFzZSAxNikJCU1DUyBMb2dpYyBJbmMuCi0JCQkJNkYuIFNhbWhvIENlbnRlciBCIEJsZGcuLCAyNzUtNgotCQkJCVlhbmdqYWUtRG9uZywgU2VjaG8tS3UKLQkJCQlTZW91bCAgMTM3LTk0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi00OCAgIChoZXgpCQlNb2ppeCBJbmMuCi0wMDFGNDggICAgIChiYXNlIDE2KQkJTW9qaXggSW5jLgotCQkJCTExMDc1IFNhbnRhIE1vbmljYSBCbHZkLgotCQkJCVN1aXRlIDM1MAotCQkJCUxvcyBBbmdlbGVzIENhIDkwMDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00OSAgIChoZXgpCQlFdXJvc2F0IERpc3RyaWJ1dGlvbiBMdGQKLTAwMUY0OSAgICAgKGJhc2UgMTYpCQlFdXJvc2F0IERpc3RyaWJ1dGlvbiBMdGQKLQkJCQk1IE94Z2F0ZSBDZW50cmUKLQkJCQlPeGdhdGUgTGFuZQotCQkJCUxvbmRvbiAgTlcyIDdKQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFGLTRBICAgKGhleCkJCUFsYmVudGlhIFN5c3RlbXMgUy5BLgotMDAxRjRBICAgICAoYmFzZSAxNikJCUFsYmVudGlhIFN5c3RlbXMgUy5BLgotCQkJCUFsYmFsYSAxMwotCQkJCU1hZHJpZCAgMjgwMzcKLQkJCQlTUEFJTgotCi0wMC0xRi00QiAgIChoZXgpCQlMaW5lYWdlIFBvd2VyCi0wMDFGNEIgICAgIChiYXNlIDE2KQkJTGluZWFnZSBQb3dlcgotCQkJCTMwMDAgU2t5bGluZSBEci4KLQkJCQlNZXNxdWl0ZSBUWCA3NTE0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtNEMgICAoaGV4KQkJUm9zZW1hbiBFbmdpbmVlcmluZyBMdGQKLTAwMUY0QyAgICAgKGJhc2UgMTYpCQlSb3NlbWFuIEVuZ2luZWVyaW5nIEx0ZAotCQkJCTY1IFdlaXptYW4gU3RyZWV0Ci0JCQkJR2l2YXRhaW0gSXNyYWVsIDUzNDY4Ci0JCQkJSVNSQUVMCi0KLTAwLTFGLTREICAgKGhleCkJCVNlZ25ldGljcyBMTEMKLTAwMUY0RCAgICAgKGJhc2UgMTYpCQlTZWduZXRpY3MgTExDCi0JCQkJU2hraXBlcnNraSBwcm90b2sgMTQKLQkJCQlTYWludC1QZXRlcnNidXJnICAxOTkxMDYKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUYtNEUgICAoaGV4KQkJQ29uTWVkIExpbnZhdGVjCi0wMDFGNEUgICAgIChiYXNlIDE2KQkJQ29uTWVkIExpbnZhdGVjCi0JCQkJMTEzMTEgQ29uY2VwdCBCbHZkLgotCQkJCUxhcmdvIEZMIDMzNzczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00RiAgIChoZXgpCQlUaGlua3dhcmUgQ28uIEx0ZC4KLTAwMUY0RiAgICAgKGJhc2UgMTYpCQlUaGlua3dhcmUgQ28uIEx0ZC4KLQkJCQkxNUZMLCBIYW5taSBUb3dlciwgNDUsCi0JCQkJQmFuZ2ktRG9uZywgU29uZ3BhLWd1Ci0JCQkJU2VvdWwgIDEzOC03MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtNTAgICAoaGV4KQkJU3dpc3NkaXMgQUcKLTAwMUY1MCAgICAgKGJhc2UgMTYpCQlTd2lzc2RpcyBBRwotCQkJCUdyYXN3ZWcgNwotCQkJCVNjaHdhcnpoYWV1c2VybiBCRSA0OTExCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUYtNTEgICAoaGV4KQkJSEQgQ29tbXVuaWNhdGlvbnMgQ29ycAotMDAxRjUxICAgICAoYmFzZSAxNikJCUhEIENvbW11bmljYXRpb25zIENvcnAKLQkJCQkyMTgwIEZpZnRoIEF2ZQotCQkJCVJvbmtvbmtvbWEgTlkgMTE3NzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTUyICAgKGhleCkJCVVWVCBVbnRlcm5laG1lbnNiZXJhdHVuZyBm/HIgVmVya2VociB1bmQgVGVjaG5payBHbWJICi0wMDFGNTIgICAgIChiYXNlIDE2KQkJVVZUIFVudGVybmVobWVuc2JlcmF0dW5nIGb8ciBWZXJrZWhyIHVuZCBUZWNobmlrIEdtYkgKLQkJCQlKb3NlZnNzdHIuNTQtNTYKLQkJCQlNYWlueiBSTFAgNTUxMTgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTUzICAgKGhleCkJCUdFTUFDIEdlc2VsbHNjaGFmdCBm/HIgTWlrcm9lbGVrdHJvbmlrYW53ZW5kdW5nIENoZW1uaXR6IG1iSAotMDAxRjUzICAgICAoYmFzZSAxNikJCUdFTUFDIEdlc2VsbHNjaGFmdCBm/HIgTWlrcm9lbGVrdHJvbmlrYW53ZW5kdW5nIENoZW1uaXR6IG1iSAotCQkJCVp3aWNrYXVlciBTdHIuIDIyNwotCQkJCUNoZW1uaXR6IFNhY2hzZW4gMDkxMTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTU0ICAgKGhleCkJCUxvcmV4IFRlY2hub2xvZ3kgSW5jLgotMDAxRjU0ICAgICAoYmFzZSAxNikJCUxvcmV4IFRlY2hub2xvZ3kgSW5jLgotCQkJCTMwMCBBbGRlbiBSb2FkCi0JCQkJTWFya2hhbSBPbnRhcmlvIEwzUjRDMQotCQkJCUNBTkFEQQotCi0wMC0xRi01NSAgIChoZXgpCQlIb25leXdlbGwgU2VjdXJpdHkgKENoaW5hKSBDby4sIEx0ZC4KLTAwMUY1NSAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgU2VjdXJpdHkgKENoaW5hKSBDby4sIEx0ZC4KLQkJCQlCbG9jayAyOCwgU2VjdGlvbiAyLCBIdWFpICBEZSBDdWkgR2FuZyBJbmR1c3RyaWFsICBFc3RhdGUsIEZ1IFlvbmcsIEJhbyBBbiwgU2hlblpoZW4sIFAuUi4gQ2hpbmEKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTAzCi0JCQkJQ0hJTkEKLQotMDAtMUYtNTYgICAoaGV4KQkJRElHSVRBTCBGT1JFQ0FTVAotMDAxRjU2ICAgICAoYmFzZSAxNikJCURJR0lUQUwgRk9SRUNBU1QKLQkJCQk1dGggRmwuLCA1MDcsIEUmQyBWZW50dXJlIERyZWFtIFRvd2VyIElJSSwgMTk3LTMzCi0JCQkJR3VybyAzLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCBHeXVuZ2dpLWRvIDE1Mi03MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtNTcgICAoaGV4KQkJUGhvbmlrIElubm92YXRpb24gQ28uLExURAotMDAxRjU3ICAgICAoYmFzZSAxNikJCVBob25payBJbm5vdmF0aW9uIENvLixMVEQKLQkJCQkyOS8xNjcgTW9vMiwgMzQ1IFJkLCBMYW1wbywKLQkJCQlCYW5nYnVhdGhvbmcKLQkJCQlOb250aGFidXJpICAxMTExMAotCQkJCVRIQUlMQU5ECi0KLTAwLTFGLTU4ICAgKGhleCkJCUVNSCBFbmVyZ2llbWVzc3RlY2huaWsgR21iSAotMDAxRjU4ICAgICAoYmFzZSAxNikJCUVNSCBFbmVyZ2llbWVzc3RlY2huaWsgR21iSAotCQkJCVZvciBkZW0gSGFzc2VsIDIKLQkJCQlCcmFja2VsIE5pZWRlcnNhY2hzZW4gMjE0MzgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTU5ICAgKGhleCkJCUtyb25iYWNrIFRyYWNlcnMKLTAwMUY1OSAgICAgKGJhc2UgMTYpCQlLcm9uYmFjayBUcmFjZXJzCi0JCQkJYy9vIElISywgTTE0NgotCQkJCUxhdXRydXB2YW5nIDE1Ci0JCQkJQmFsbGVydXAgQ29wZW5oYWdlbiAyNzUwCi0JCQkJREVOTUFSSwotCi0wMC0xRi01QSAgIChoZXgpCQlCZWNrd2l0aCBFbGVjdHJpYyBDby4KLTAwMUY1QSAgICAgKGJhc2UgMTYpCQlCZWNrd2l0aCBFbGVjdHJpYyBDby4KLQkJCQk2MTkwIDExOHRoIEF2ZSBObwotCQkJCUxhcmdvIEZsb3JpZGEgMzM3NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTVCICAgKGhleCkJCUFwcGxlLCBJbmMuCi0wMDFGNUIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlNUyAzNS1HUE8KLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTVDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFGNUMgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFGLTVEICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFGNUQgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFGLTVFICAgKGhleCkJCUR5bmEgVGVjaG5vbG9neSBDby4sTHRkLgotMDAxRjVFICAgICAoYmFzZSAxNikJCUR5bmEgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCUhhb0hhaSBCdWlsZGluZyAxRixOby43LDV0aCBTdHJlZXQsU2hhbmdkaSwKLQkJCQlIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMUYtNUYgICAoaGV4KQkJQmxhdGFuZCBHbWJICi0wMDFGNUYgICAgIChiYXNlIDE2KQkJQmxhdGFuZCBHbWJICi0JCQkJTGljaHRlbmJlcmdzdHJh32UgOAotCQkJCUdhcmNoaW5nIEJhdmFyaWEgODU3NDgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTYwICAgKGhleCkJCUNPTVBBU1MgU1lTVEVNUyBDT1JQLgotMDAxRjYwICAgICAoYmFzZSAxNikJCUNPTVBBU1MgU1lTVEVNUyBDT1JQLgotCQkJCTZGLCBOby4gNDEzLCBTZWMuIDIsIFRpLURpbmcgQmx2ZC4sCi0JCQkJVGFpcGVpIE5laWh1RGlzdCAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLTYxICAgKGhleCkJCVRhbGVudCBDb21tdW5pY2F0aW9uIE5ldHdvcmtzIEluYy4KLTAwMUY2MSAgICAgKGJhc2UgMTYpCQlUYWxlbnQgQ29tbXVuaWNhdGlvbiBOZXR3b3JrcyBJbmMuCi0JCQkJUm0uIDkxMCBSJkYgUGxhemEsICM3NiwgSHVhbmdwdSBBdmUuIFdlc3QsCi0JCQkJR3Vhbmd6aG91IChDYW50b24pIEd1YW5nZG9uZyBQcm92aW5jZSA1MTAzNjAKLQkJCQlDSElOQQotCi0wMC0xRi02MiAgIChoZXgpCQlKU0MgIlN0aWxzb2Z0IgotMDAxRjYyICAgICAoYmFzZSAxNikJCUpTQyAiU3RpbHNvZnQiCi0JCQkJTWF5YWtvdnNrb2dvIDE1Ci0JCQkJU3RhdnJvcG9sICAzNTUwMDAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUYtNjMgICAoaGV4KQkJSlNDIEdvb2R3aW4tRXVyb3BhCi0wMDFGNjMgICAgIChiYXNlIDE2KQkJSlNDIEdvb2R3aW4tRXVyb3BhCi0JCQkJMjAvNSBNYXJrc2lzdHNrYXlhIHN0LgotCQkJCU1vc2NvdyAgMTA5MTQ3Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFGLTY0ICAgKGhleCkJCUJlaWppbmcgQXV0ZWxhbiBUZWNobm9sb2d5IEluYy4KLTAwMUY2NCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEF1dGVsYW4gVGVjaG5vbG9neSBJbmMuCi0JCQkJUm9vbSBCLTEyQjAxLCBLZXNoaSBQbGF6YSwgWGlueGkgcm9hZCwKLQkJCQlTaGFuZ2RpIHBhcmssSGFpZGlhbiwKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0xRi02NSAgIChoZXgpCQlLT1JFQSBFTEVDVFJJQyBURVJNSU5BTCBDTy4sIExURC4KLTAwMUY2NSAgICAgKGJhc2UgMTYpCQlLT1JFQSBFTEVDVFJJQyBURVJNSU5BTCBDTy4sIExURC4KLQkJCQkjNy0zOCBTT05HRE8tRE9ORwotCQkJCVlFT05TVS1HVSBJTkNIRU9OIDQwNi04NDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtNjYgICAoaGV4KQkJUExBTkFSIExMQwotMDAxRjY2ICAgICAoYmFzZSAxNikJCVBMQU5BUiBMTEMKLQkJCQkzMiwgRWxraW5hIHN0cgotCQkJCUNoZWx5YWJpbnNrIFNVIDQ1NDA5MQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRi02NyAgIChoZXgpCQlIaXRhY2hpLEx0ZC4KLTAwMUY2NyAgICAgKGJhc2UgMTYpCQlIaXRhY2hpLEx0ZC4KLQkJCQlNaW5hbWlvaSA2LTI3LTE4LCBTaGluYWdhd2Eta3UKLQkJCQlUb2t5byAxNDAtODU3MgotCQkJCUpBUEFOCi0KLTAwLTFGLTY4ICAgKGhleCkJCU1hcnRpbnNzb24gRWxla3Ryb25payBBQgotMDAxRjY4ICAgICAoYmFzZSAxNikJCU1hcnRpbnNzb24gRWxla3Ryb25payBBQgotCQkJCUJveCA5MDYwCi0JCQkJSORnZXJzdGVuIFN0b2NraG9sbSAxMjYgMDkKLQkJCQlTV0VERU4KLQotMDAtMUYtNjkgICAoaGV4KQkJUGluZ29vZCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxRjY5ICAgICAoYmFzZSAxNikJCVBpbmdvb2QgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSbTE5MTcsIFNvdXRoIEJsb2NrLCBDYW5nc29uZyBCbGRnLiwgVGFpcmFuIEluZHVzdHJpYWwgWm9uZSwgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTFGLTZBICAgKGhleCkJCVBhY2tldEZsdXggVGVjaG5vbG9naWVzLCBJbmMuCi0wMDFGNkEgICAgIChiYXNlIDE2KQkJUGFja2V0Rmx1eCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk1MCAxMXRoIEF2ZW51ZQotCQkJCUhlbGVuYSBNVCA1OTYwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtNkIgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MKLTAwMUY2QiAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcwotCQkJCTYwLTM5LEthc2FuLWRvbmcsS3VtY2hvbi1rdQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTZDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUY2QyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi02RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFGNkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtNkUgICAoaGV4KQkJVnRlY2ggRW5naW5lZXJpbmcgQ29ycG9yYXRpb24KLTAwMUY2RSAgICAgKGJhc2UgMTYpCQlWdGVjaCBFbmdpbmVlcmluZyBDb3Jwb3JhdGlvbgotCQkJCTIwIE5ldyBFbmdsYW5kIEJ1c2luZXNzIENlbnRlcgotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTZGICAgKGhleCkJCUZ1amlhbiBTdW5uYWRhIENvbW11bmljYXRpb24gQ28uLEx0ZC4KLTAwMUY2RiAgICAgKGJhc2UgMTYpCQlGdWppYW4gU3VubmFkYSBDb21tdW5pY2F0aW9uIENvLixMdGQuCi0JCQkJNy9Go6xNYWluIEJ1aWxkaW5no6xGdWppYW4gVG9yY2ggSGktVGVjaCBJbm5vdmF0aW9uIFBhcmujrCM2MTEgSW5kdXN0cmlhbCBSb2Fko6wgRnV6aG91o6xQUkMgMzUwMDAyCi0JCQkJNyMgQnVpbGRpbmcgQiBEaXN0cmljdCwgU29mdHdhcmUgUGFyaywgVG9uZ1BhbiBSb2FkIEZ1emhvdSwgUFJDIDM1MDAwMwotCQkJCUZ1emhvdSBGdWppYW4gMzUwMDAyCi0JCQkJQ0hJTkEKLQotMDAtMUYtNzAgICAoaGV4KQkJQm90aWsgVGVjaG5vbG9naWVzIExURAotMDAxRjcwICAgICAoYmFzZSAxNikJCUJvdGlrIFRlY2hub2xvZ2llcyBMVEQKLQkJCQlUcnVkb3ZheWEsIDEKLQkJCQlQZXJlc2xhdmwtWmFsZXNza3kgWWFyb3NsYXZza2F5YSAxNTIwMjAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUYtNzEgICAoaGV4KQkJeEcgVGVjaG5vbG9neSwgSW5jLgotMDAxRjcxICAgICAoYmFzZSAxNikJCXhHIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyNDAgUy4gUGluZWFwcGxlIEF2ZW51ZQotCQkJCVN1aXRlIDcwMQotCQkJCVNhcmFzb3RhIEZMIDM0MjM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi03MiAgIChoZXgpCQlRaW5nRGFvIEhpcGhvbmUgVGVjaG5vbG9neSBDbywuTHRkCi0wMDFGNzIgICAgIChiYXNlIDE2KQkJUWluZ0RhbyBIaXBob25lIFRlY2hub2xvZ3kgQ28sLkx0ZAotCQkJCU5PLjEwNixKaWFuZ1hpIFJvYWQKLQkJCQlRaW5nRGFvIFNoYW5Eb25nIDI2NjA3MQotCQkJCUNISU5BCi0KLTAwLTFGLTczICAgKGhleCkJCVRlcmF2aWV3IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFGNzMgICAgIChiYXNlIDE2KQkJVGVyYXZpZXcgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkyM0YsIE5vLiAyOS01LCBTZWMuIDIsIEpob25namhlbmcgRS4gUm9hZCwKLQkJCQlEYW5zaHVpIFRvd25zaGlwLAotCQkJCVRhaXBlaSBDb3VudHkgIDI1MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtNzQgICAoaGV4KQkJRWlnZW4gRGV2ZWxvcG1lbnQKLTAwMUY3NCAgICAgKGJhc2UgMTYpCQlFaWdlbiBEZXZlbG9wbWVudAotCQkJCTE4MDcgVzEwdGggQXZlCi0JCQkJVmFuY291dmVyIEJDIFY2SiAyQTkKLQkJCQlDQU5BREEKLQotMDAtMUYtNzUgICAoaGV4KQkJR2lCYWhuIE1lZGlhCi0wMDFGNzUgICAgIChiYXNlIDE2KQkJR2lCYWhuIE1lZGlhCi0JCQkJMTgxNiBSb3NlZGFsZSBTdXNlby1kb25nCi0JCQkJS2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtODg1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTc2ICAgKGhleCkJCUFpckxvZ2ljIFN5c3RlbXMgSW5jLgotMDAxRjc2ICAgICAoYmFzZSAxNikJCUFpckxvZ2ljIFN5c3RlbXMgSW5jLgotCQkJCTMwMjIgUGVsZWtlIFN0LlN1aXRlIDEKLQkJCQlMaWh1J2UgSEkgOTY3NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTc3ICAgKGhleCkJCUhFT0wgREVTSUdOCi0wMDFGNzcgICAgIChiYXNlIDE2KQkJSEVPTCBERVNJR04KLQkJCQkxIGJkIGQnYXJtb3IKLQkJCQlMQU5OSU9OIEJSRVRBR05FIDIyMzAwCi0JCQkJRlJBTkNFCi0KLTAwLTFGLTc4ICAgKGhleCkJCUJsdWUgRm94IFBvcmluaSBUZXh0aWxlCi0wMDFGNzggICAgIChiYXNlIDE2KQkJQmx1ZSBGb3ggUG9yaW5pIFRleHRpbGUKLQkJCQkxMjA4IFBvaW50ZSBDZW50cmUgRHJpdmUKLQkJCQlTVEUgMjAwCi0JCQkJQ2hhdHRhbm9vZ2EgVE4gMzc0MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTc5ICAgKGhleCkJCUxvZGFtIEVsZWN0cm9uaWNzIEEvUwotMDAxRjc5ICAgICAoYmFzZSAxNikJCUxvZGFtIEVsZWN0cm9uaWNzIEEvUwotCQkJCUvmcnZlaiA3NwotCQkJCVP4bmRlcmJvcmcgQWxzIERLLTY0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTFGLTdBICAgKGhleCkJCVdpV2lkZSBJbmMuCi0wMDFGN0EgICAgIChiYXNlIDE2KQkJV2lXaWRlIEluYy4KLQkJCQkxMEIxMCwgSHVhIEppZSBQbGF6YQotCQkJCSMxMyBEYSBaaG9uZyBTaSwgSGFpZGlhbgotCQkJCUJlaWppbmcgIDEwMDA4OQotCQkJCUNISU5BCi0KLTAwLTFGLTdCICAgKGhleCkJCVRlY2hOZXhpb24gTHRkLgotMDAxRjdCICAgICAoYmFzZSAxNikJCVRlY2hOZXhpb24gTHRkLgotCQkJCTE3Ri0xLCBOby4gMTYsIEppYW4gQmEgUm9hZCwKLQkJCQlDaHVuZyBIbyAgVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtN0MgICAoaGV4KQkJV2l0ZWxjb20gQVMKLTAwMUY3QyAgICAgKGJhc2UgMTYpCQlXaXRlbGNvbSBBUwotCQkJCVZlcmZ0c2d0IDEwCi0JCQkJTW9zcyBPc3Rmb2xkIDE1MTEKLQkJCQlOT1JXQVkKLQotMDAtMUYtN0QgICAoaGV4KQkJZW1iZWRkZWQgd2lyZWxlc3MgR21iSAotMDAxRjdEICAgICAoYmFzZSAxNikJCWVtYmVkZGVkIHdpcmVsZXNzIEdtYkgKLQkJCQlT9mZsaW5nZXIgU3RyLiAxMDAKLQkJCQlVbG0gQlcgODkwNzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTdFICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDFGN0UgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVVMgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSWxsaW5vaXMgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTdGICAgKGhleCkJCVBoYWJyaXggTGltaXRlZAotMDAxRjdGICAgICAoYmFzZSAxNikJCVBoYWJyaXggTGltaXRlZAotCQkJCUJsaW5kbWFucyBHYXRlIENvdHRhZ2UKLQkJCQlXb29sdG9uIEhpbGwKLQkJCQlOZXdidXJ5IEhhbXBzaGlyZSBSRzIwIDlYQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFGLTgwICAgKGhleCkJCUx1Y2FzIEhvbGRpbmcgYnYKLTAwMUY4MCAgICAgKGJhc2UgMTYpCQlMdWNhcyBIb2xkaW5nIGJ2Ci0JCQkJRG9tZWluIDI4Ci0JCQkJR2VtZXJ0IE5CIDU0MjFBUgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFGLTgxICAgKGhleCkJCUFjY2VsIFNlbWljb25kdWN0b3IgQ29ycAotMDAxRjgxICAgICAoYmFzZSAxNikJCUFjY2VsIFNlbWljb25kdWN0b3IgQ29ycAotCQkJCTFGLE1haW5ibGRnLDE0OSBDaHVuIFhpYW8gUm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMDAtMUYtODIgICAoaGV4KQkJQ2FsLUNvbXAgRWxlY3Ryb25pY3MgJiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZAotMDAxRjgyICAgICAoYmFzZSAxNikJCUNhbC1Db21wIEVsZWN0cm9uaWNzICYgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQKLQkJCQkzRiwgIzIwNSwgU2VjLjMgUGVpaHNpbiBSZC4KLQkJCQlIc2ludGVpbiBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtODMgICAoaGV4KQkJVGVsZXBsYW4gVGVjaG5vbG9neSBTZXJ2aWNlcyBTZG4gQmhkCi0wMDFGODMgICAgIChiYXNlIDE2KQkJVGVsZXBsYW4gVGVjaG5vbG9neSBTZXJ2aWNlcyBTZG4gQmhkCi0JCQkJMjU4MCwgVGluZ2thdCBQZXJ1c2FoYWFuIDRCCi0JCQkJWm9uIFBlcmRhZ2FuZ2FuIEJlYmFzIER1YQotCQkJCVBlcmFpIFBlbmFuZyAxMzYwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFGLTg0ICAgKGhleCkJCUdpZ2xlIFNlbWljb25kdWN0b3IKLTAwMUY4NCAgICAgKGJhc2UgMTYpCQlHaWdsZSBTZW1pY29uZHVjdG9yCi0JCQkJQmFyY2Vsb25hIEFjdGl2YSAtIFZpdmVybyBHbG9yaWFzCi0JCQkJTGxhY3VuYSAxNjIKLQkJCQlCYXJjZWxvbmEgIDA4MDE4Ci0JCQkJU1BBSU4KLQotMDAtMUYtODUgICAoaGV4KQkJQXByaXZhIElTUywgTExDCi0wMDFGODUgICAgIChiYXNlIDE2KQkJQXByaXZhIElTUywgTExDCi0JCQkJNjkwMCBFIENhbWVsYmFjayBSZAotCQkJCVN1aXRlIDcwMAotCQkJCVNjb3R0c2RhbGUgQVogODUyNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTg2ICAgKGhleCkJCWRpZ0Vjb3IKLTAwMUY4NiAgICAgKGJhc2UgMTYpCQlkaWdFY29yCi0JCQkJMTYyNSBOLiAxMTAwIFcuCi0JCQkJU3ByaW5ndmlsbGUgVVQgODQ2NjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTg3ICAgKGhleCkJCVNreWRpZ2l0YWwgSW5jLgotMDAxRjg3ICAgICAoYmFzZSAxNikJCVNreWRpZ2l0YWwgSW5jLgotCQkJCSMyOC05IFdvbmh5b3JvMS1nYSwgWW9uZ3Nhbi1ndSwKLQkJCQlTZW91bCAgMTQwLTg0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi04OCAgIChoZXgpCQlGTVMgRm9yY2UgTWVhc3VyaW5nIFN5c3RlbXMgQUcKLTAwMUY4OCAgICAgKGJhc2UgMTYpCQlGTVMgRm9yY2UgTWVhc3VyaW5nIFN5c3RlbXMgQUcKLQkJCQlBc3BzdHJhc3NlIDYKLQkJCQlPYmVyZ2xhdHQgWnVyaWNoIDgxNTQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRi04OSAgIChoZXgpCQlTaWduYWxpb24gR21iSAotMDAxRjg5ICAgICAoYmFzZSAxNikJCVNpZ25hbGlvbiBHbWJICi0JCQkJU3VkaGF1c3dlZyA1Ci0JCQkJRHJlc2RlbiBTYXhvbnkgMDEwOTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLThBICAgKGhleCkJCUVsbGlvbiBEaWdpdGFsIEluYy4KLTAwMUY4QSAgICAgKGJhc2UgMTYpCQlFbGxpb24gRGlnaXRhbCBJbmMuCi0JCQkJU3VpdGUgODA5LCBTaWNveCBUb3dlciwgNTEzLTE0LCBTYW5nZGFld29uLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTdW5nbmFtLWNpdHkgS3lvbmdnaS1kbyA0MjYtNzI2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLThCICAgKGhleCkJCUNhY2hlIElRCi0wMDFGOEIgICAgIChiYXNlIDE2KQkJQ2FjaGUgSVEKLQkJCQk4ODM0IE5vcnRoIENhcGl0YWwgb2YgVGV4YXMgSHd5Ci0JCQkJQXVzdGluIFRleGFzIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi04QyAgIChoZXgpCQlDQ1MgSW5jLgotMDAxRjhDICAgICAoYmFzZSAxNikJCUNDUyBJbmMuCi0JCQkJU2hpbW9kYWNoaXVyaS1hZ2FydQotCQkJCUthcmFzdW1hLWRvcmksIEthbWlneW8ta3UKLQkJCQlLeW90byBLeW90byA2MDItODAxMQotCQkJCUpBUEFOCi0KLTAwLTFGLThEICAgKGhleCkJCUluZ2VuaWV1cmJ1ZXJvIFN0YXJrIEdtYkggdW5kIEtvLiBLRwotMDAxRjhEICAgICAoYmFzZSAxNikJCUluZ2VuaWV1cmJ1ZXJvIFN0YXJrIEdtYkggdW5kIEtvLiBLRwotCQkJCVJ1ZG9sZi1EaWVzZWwtU3RyYXNzZSA0NAotCQkJCUxhaWNoaW5nZW4gQlcgODkxNTAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLThFICAgKGhleCkJCU1ldHJpcyBVU0EgSW5jLgotMDAxRjhFICAgICAoYmFzZSAxNikJCU1ldHJpcyBVU0EgSW5jLgotCQkJCTEyNzAxIEdyYW5kIFJpdmVyCi0JCQkJQnJpZ2h0b24gTUkgNDgxMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLThGICAgKGhleCkJCVNoYW5naGFpIEJlbGxtYW5uIERpZ2l0YWwgU291cmNlIENvLixMdGQuCi0wMDFGOEYgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgQmVsbG1hbm4gRGlnaXRhbCBTb3VyY2UgQ28uLEx0ZC4KLQkJCQk0MDQtNDA4IE1haW4gQmQsIEZEVVNQLCBOby4xMSBHdW90YWkgUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDQzMwotCQkJCUNISU5BCi0KLTAwLTFGLTkwICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0wMDFGOTAgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLQkJCQk3NjAgTm9ydGggTWFyeSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTkxICAgKGhleCkJCURCUyBMb2RnaW5nIFRlY2hub2xvZ2llcywgTExDCi0wMDFGOTEgICAgIChiYXNlIDE2KQkJREJTIExvZGdpbmcgVGVjaG5vbG9naWVzLCBMTEMKLQkJCQkyMTE5NiBMaW1iZXIKLQkJCQlNaXNzaW9uIFZpZWpvIENBIDkyNjkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi05MiAgIChoZXgpCQlWaWRlb0lRLCBJbmMuCi0wMDFGOTIgICAgIChiYXNlIDE2KQkJVmlkZW9JUSwgSW5jLgotCQkJCTIxMyBCdXJsaW5ndG9uIFJvYWQKLQkJCQlTdWl0ZSAxMDQKLQkJCQlCZWRmb3JkIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi05MyAgIChoZXgpCQlYaW90ZWNoIENvcnBvcmF0aW9uCi0wMDFGOTMgICAgIChiYXNlIDE2KQkJWGlvdGVjaCBDb3Jwb3JhdGlvbgotCQkJCTY0NTUgRmx5aW5nIENsb3VkIERyaXZlCi0JCQkJRWRlbiBQcmFpcmllIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi05NCAgIChoZXgpCQlMYXNjYXIgRWxlY3Ryb25pY3MgTHRkCi0wMDFGOTQgICAgIChiYXNlIDE2KQkJTGFzY2FyIEVsZWN0cm9uaWNzIEx0ZAotCQkJCU1vZHVsZSBIb3VzZQotCQkJCVdoaXRlcGFyaXNoCi0JCQkJTnIgU2FsaXNidXJ5IFdpbHRzaGlyZSBTUDUgMlNKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUYtOTUgICAoaGV4KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotMDAxRjk1ICAgICAoYmFzZSAxNikJCVNBR0VNIENPTU1VTklDQVRJT04KLQkJCQkxNCBSdWUgUGF1bCBEYXV0aWVyCi0JCQkJVmVsaXp5ICA3ODQ1NwotCQkJCUZSQU5DRQotCi0wMC0xRi05NiAgIChoZXgpCQlBUFJPVEVDSCBDTy5MVEQKLTAwMUY5NiAgICAgKGJhc2UgMTYpCQlBUFJPVEVDSCBDTy5MVEQKLQkJCQlLT0xPTkRJR0lUQUwgVE9XRVIgQVNUT04gMjAxLCA1MDUtMTQKLQkJCQlHQVNBTi1ET05HLEtVTUNIT04tR1UKLQkJCQlTRU9VTCAgS1NYWCAwMDIyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTk3ICAgKGhleCkJCUJFUlRBTkEgU1JMCi0wMDFGOTcgICAgIChiYXNlIDE2KQkJQkVSVEFOQSBTUkwKLQkJCQlWSUFMRSBHQUxJTEVPIEZFUlJBUklTIDI3Ci0JCQkJQlJVSU5PIFRPUklOTyAxMDA5MAotCQkJCUlUQUxZCi0KLTAwLTFGLTk4ICAgKGhleCkJCURBSUlDSEktREVOVFNVIExURC4KLTAwMUY5OCAgICAgKGJhc2UgMTYpCQlEQUlJQ0hJLURFTlRTVSBMVEQuCi0JCQkJT09NT1JJIDY5MC0xCi0JCQkJS0FOSSBHSUZVIDUwOS0wMjM4Ci0JCQkJSkFQQU4KLQotMDAtMUYtOTkgICAoaGV4KQkJU0VST05JQ1MgY28ubHRkCi0wMDFGOTkgICAgIChiYXNlIDE2KQkJU0VST05JQ1MgY28ubHRkCi0JCQkJIzQwMSBUZWNobm9wb2xpcywKLQkJCQk3MTFIb3Nhbi1kb25nLCBEYWxzZW8tZ3UKLQkJCQlEYWVndSBHeWVvbmctYnVrIDcwNC0yMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtOUEgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDFGOUEgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJMjIyMSBMYWtlc2lkZSBCbHZkCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4Mi00Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi05QiAgIChoZXgpCQlQT1NCUk8KLTAwMUY5QiAgICAgKGJhc2UgMTYpCQlQT1NCUk8KLQkJCQlTaGlueW91bmdHdG93ZXIgNkYsIDI3MS0xCi0JCQkJU2VvaHl1bi1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0tc2kgS3l1bmdnaS1kbyA0NjMtODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTlDICAgKGhleCkJCUxFRENPCi0wMDFGOUMgICAgIChiYXNlIDE2KQkJTEVEQ08KLQkJCQk0NzgwMSBXIEFuY2hvciBDb3VydAotCQkJCVBseW1vdXRoIE1JIDQ4MTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi05RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFGOUQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtOUUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRjlFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTlGICAgKGhleCkJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0wMDFGOUYgICAgIChiYXNlIDE2KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3Ci0JCQkJRWRlZ2VtIEFudHdlcnAgQi0yNjUwCi0JCQkJQkVMR0lVTQotCi0wMC0xRi1BMCAgIChoZXgpCQlBMTAgTmV0d29ya3MKLTAwMUZBMCAgICAgKGJhc2UgMTYpCQlBMTAgTmV0d29ya3MKLQkJCQkyMzA5IEJlcmluZyBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BMSAgIChoZXgpCQlHdHJhbiBJbmMKLTAwMUZBMSAgICAgKGJhc2UgMTYpCQlHdHJhbiBJbmMKLQkJCQkyNjUxIExhdmVyeSBDb3VydAotCQkJCU5ld2J1cnkgUGFyayBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQTIgICAoaGV4KQkJRGF0cm9uIFdvcmxkIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDFGQTIgICAgIChiYXNlIDE2KQkJRGF0cm9uIFdvcmxkIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMzAzMCBFbnRlcnByaXNlIENvdXJ0Ci0JCQkJVmlzdGEgQ2FsaWZvcm5pYSA5MjA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQTMgICAoaGV4KQkJVCZXIEVsZWN0cm9uaWNzKFNoZW56aGVuKUNvLixMdGQuCi0wMDFGQTMgICAgIChiYXNlIDE2KQkJVCZXIEVsZWN0cm9uaWNzKFNoZW56aGVuKUNvLixMdGQuCi0JCQkJMkYsQmFpeWluZyBCdWlsZGluZywgTm8uMTAxOSwKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDY3Ci0JCQkJQ0hJTkEKLQotMDAtMUYtQTQgICAoaGV4KQkJU2hlblpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDFGQTQgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJNEYsQmFpeWluZyBCdWlsZGluZywgTm8uMTAxOSxOYW5oYWkgUkQsU2hla291LAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNjcKLQkJCQlDSElOQQotCi0wMC0xRi1BNSAgIChoZXgpCQlCbHVlLVdoaXRlIEluZHVzdHJpZXMKLTAwMUZBNSAgICAgKGJhc2UgMTYpCQlCbHVlLVdoaXRlIEluZHVzdHJpZXMKLQkJCQk1MzAwIEJ1c2luZXNzIERyaXZlCi0JCQkJSHVudGluZ3RvbiBCZWFjaCBDQSA5MjY0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQTYgICAoaGV4KQkJU3RpbG8gc3JsCi0wMDFGQTYgICAgIChiYXNlIDE2KQkJU3RpbG8gc3JsCi0JCQkJVmlhIEJlc2FuYSwgNAotCQkJCTIwMTIyIE1pbGFubyAKLQkJCQlJVEFMWQotCi0wMC0xRi1BNyAgIChoZXgpCQlTb255IENvbXB1dGVyIEVudGVydGFpbm1lbnQgSW5jLgotMDAxRkE3ICAgICAoYmFzZSAxNikJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBJbmMuCi0JCQkJMi02LTIxIE1pbmFtaS1Bb3lhbWEsCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNy0wMDYyCi0JCQkJSkFQQU4KLQotMDAtMUYtQTggICAoaGV4KQkJU21hcnQgRW5lcmd5IEluc3RydW1lbnRzIEluYy4KLTAwMUZBOCAgICAgKGJhc2UgMTYpCQlTbWFydCBFbmVyZ3kgSW5zdHJ1bWVudHMgSW5jLgotCQkJCTI5NyBMYWtlc2hvcmUgUm9hZCBFYXN0Ci0JCQkJVW5pdCAxCi0JCQkJT2FrdmlsbGUgT250YXJpbyBMNkogMUozCi0JCQkJQ0FOQURBCi0KLTAwLTFGLUE5ICAgKGhleCkJCUF0bGFudGEgRFRILCBJbmMuCi0wMDFGQTkgICAgIChiYXNlIDE2KQkJQXRsYW50YSBEVEgsIEluYy4KLQkJCQk1Mzg4IE5ldyBQZWFjaHRyZWUgUmQKLQkJCQlDaGFtYmxlZSBHQSAzMDM0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQUEgICAoaGV4KQkJVGFzZW9uLCBJbmMuCi0wMDFGQUEgICAgIChiYXNlIDE2KQkJVGFzZW9uLCBJbmMuCi0JCQkJIDMwOTkgTi4gRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUFCICAgKGhleCkJCUkuUyBISUdIIFRFQ0guSU5DCi0wMDFGQUIgICAgIChiYXNlIDE2KQkJSS5TIEhJR0ggVEVDSC5JTkMKLQkJCQk2MDMtMSxTdW5nYm9uLXJpLERhZXNvLW15dW4KLQkJCQlFdW1zdW5nLWd1biBDaHVuZ2NoZW9uZ2J1ay1kbyAzNjktODIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLUFDICAgKGhleCkJCUdvb2RtaWxsIFN5c3RlbXMgTHRkCi0wMDFGQUMgICAgIChiYXNlIDE2KQkJR29vZG1pbGwgU3lzdGVtcyBMdGQKLQkJCQlTaW5pa2FsbGlvbnRpZSAxMAotCQkJCUVzcG9vIFV1c2ltYWEgMDI2MzAKLQkJCQlGSU5MQU5ECi0KLTAwLTFGLUFEICAgKGhleCkJCUJyb3duIElubm92YXRpb25zLCBJbmMKLTAwMUZBRCAgICAgKGJhc2UgMTYpCQlCcm93biBJbm5vdmF0aW9ucywgSW5jCi0JCQkJMzY5IENvbmdyZXNzIFN0cmVldAotCQkJCUZvdXJ0aCBGbG9vcgotCQkJCUJvc3RvbiBNQSAwMjIxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQUUgICAoaGV4KQkJQmxpY2sgU291dGggQWZyaWNhIChQdHkpIEx0ZAotMDAxRkFFICAgICAoYmFzZSAxNikJCUJsaWNrIFNvdXRoIEFmcmljYSAoUHR5KSBMdGQKLQkJCQlQTyBCb3ggMTkwOAotCQkJCVJpdm9uaWEKLQkJCQlKb2hhbm5lc2J1cmcgR2F1dGVuZyAyMTA4Ci0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTFGLUFGICAgKGhleCkJCU5leHRJTywgSW5jLgotMDAxRkFGICAgICAoYmFzZSAxNikJCU5leHRJTywgSW5jLgotCQkJCTEyNDAxIFJlc2VhcmNoIEJsdmQuCi0JCQkJQmxkZy4gMiBTdWl0ZSAyMDAKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUIwICAgKGhleCkJCVRpbWVJUFMsIEluYy4KLTAwMUZCMCAgICAgKGJhc2UgMTYpCQlUaW1lSVBTLCBJbmMuCi0JCQkJMzUyMiBOIENvbW90YXJhIFN0Ci0JCQkJV2ljaGl0YSBLUyA2NzIyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQjEgICAoaGV4KQkJQ3liZXJ0ZWNoIEluYy4KLTAwMUZCMSAgICAgKGJhc2UgMTYpCQlDeWJlcnRlY2ggSW5jLgotCQkJCTkzNSBIb3JzaGFtIFJkCi0JCQkJVW5pdCBJCi0JCQkJSG9yc2hhbSBQQSAxOTA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQjIgICAoaGV4KQkJU29udGhlaW0gSW5kdXN0cmllIEVsZWt0cm9uaWsgR21iSAotMDAxRkIyICAgICAoYmFzZSAxNikJCVNvbnRoZWltIEluZHVzdHJpZSBFbGVrdHJvbmlrIEdtYkgKLQkJCQlEaWVzZWxzdHJhc3NlIDcKLQkJCQlLZW1wdGVuIEFsbGdhZXUgQmF2YXJpYSBELTg3NDM3Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi1CMyAgIChoZXgpCQkyV2lyZQotMDAxRkIzICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQjQgICAoaGV4KQkJU21hcnRTaGFyZSBTeXN0ZW1zCi0wMDFGQjQgICAgIChiYXNlIDE2KQkJU21hcnRTaGFyZSBTeXN0ZW1zCi0JCQkJVG9iYWtzdmVqZW4gMjUsIDEuIHRoLgotCQkJCVNvZWJvcmcgIERLLTI4NjAKLQkJCQlERU5NQVJLCi0KLTAwLTFGLUI1ICAgKGhleCkJCUkvTyBJbnRlcmNvbm5lY3QgSW5jLgotMDAxRkI1ICAgICAoYmFzZSAxNikJCUkvTyBJbnRlcmNvbm5lY3QgSW5jLgotCQkJCTEyMDIgRSBXYWtlaGFtIEF2ZQotCQkJCVNhbnRhIEFuYSBDQSA5MjcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQjYgICAoaGV4KQkJQ2hpIExpbiBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxRkI2ICAgICAoYmFzZSAxNikJCUNoaSBMaW4gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4xOCwgU2hlbmcgTGkgMXN0IFN0LiwgSmVuIFRlIEhzaWFuZywKLQkJCQlUYWluYW4gVGFpd2FuIDcxNzU4Ci0JCQkJQ0hJTkEKLQotMDAtMUYtQjcgICAoaGV4KQkJV2lNYXRlIFRlY2hub2xvZ2llcyBDb3JwLgotMDAxRkI3ICAgICAoYmFzZSAxNikJCVdpTWF0ZSBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQkxNEEgQnVpbGRpbmcgMiwgR3VpbWlhbyBHYXJkZW4sIE5hbmd1YW5nbHUsIE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU0Ci0JCQkJQ0hJTkEKLQotMDAtMUYtQjggICAoaGV4KQkJVW5pdmVyc2FsIFJlbW90ZSBDb250cm9sLCBJbmMuCi0wMDFGQjggICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIFJlbW90ZSBDb250cm9sLCBJbmMuCi0JCQkJNTAwIE1hbWFyb25lY2sgQXZlbnVlCi0JCQkJU3VpdGUgNTAyCi0JCQkJSGFycmlzb24gTlkgMTA1MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUI5ICAgKGhleCkJCVBhbHRyb25pY3MKLTAwMUZCOSAgICAgKGJhc2UgMTYpCQlQYWx0cm9uaWNzCi0JCQkJMTE0NSBQYWx0cm9uaWNzIEN0Ci0JCQkJQ3J5c3RhbCBMYWtlIElMIDYwMDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CQSAgIChoZXgpCQlCb1lvdW5nIFRlY2guICYgTWFya2V0aW5nLCBJbmMuCi0wMDFGQkEgICAgIChiYXNlIDE2KQkJQm9Zb3VuZyBUZWNoLiAmIE1hcmtldGluZywgSW5jLgotCQkJCVlvdW5nZGV1bmdwby1HdSBNdW5yYWUzZ2EgODQtMgotCQkJCURvbmdndWsgTWVydGlhbiA2MDIKLQkJCQlTZW91bCAgMTUwLTA5MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi1CQiAgIChoZXgpCQlYZW5hdGVjaCBDby4sTFRECi0wMDFGQkIgICAgIChiYXNlIDE2KQkJWGVuYXRlY2ggQ28uLExURAotCQkJCSA1MTQtMiBZYSBUYWItRG9uZyBCdW4gRGFuZyBHdQotCQkJCVNlb25nIG5hbXNpIEd5b25nIGdpLWRvIDQ2My04MzkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtQkMgICAoaGV4KQkJRVZHQSBDb3Jwb3JhdGlvbgotMDAxRkJDICAgICAoYmFzZSAxNikJCUVWR0EgQ29ycG9yYXRpb24KLQkJCQkyOTAwIFNhdHVybiBTdC4KLQkJCQlTdWl0ZSBCCi0JCQkJQnJlYSBDQSA5MjgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQkQgICAoaGV4KQkJS3lvY2VyYSBXaXJlbGVzcyBDb3JwLgotMDAxRkJEICAgICAoYmFzZSAxNikJCUt5b2NlcmEgV2lyZWxlc3MgQ29ycC4KLQkJCQkxMDMwMCBDYW1wdXMgUG9pbnQgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUJFICAgKGhleCkJCVNoZW56aGVuIE1vcG5ldCBJbmR1c3RyaWFsIENvLixMdGQKLTAwMUZCRSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBNb3BuZXQgSW5kdXN0cmlhbCBDby4sTHRkCi0JCQkJRiAzLk5vLjMgS2V5dWFuIFJkLgotCQkJCVNoZW56aGVuIE5hbnNoYW4gU2NpZW5jZSZJbmR1c3RyeSBQYXJrCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTFGLUJGICAgKGhleCkJCUZ1bGh1YSBNaWNyb2VsZWN0cm9uaWNzIENvcnAuIFRhaXdhbiBCcmFuY2gKLTAwMUZCRiAgICAgKGJhc2UgMTYpCQlGdWxodWEgTWljcm9lbGVjdHJvbmljcyBDb3JwLiBUYWl3YW4gQnJhbmNoCi0JCQkJMUYsIE5vLjEyLCBSJkQgUm9hZCwKLQkJCQlTY2llbmNlLWJhc2VkIEluZC4gUGFyaywKLQkJCQlIc2luLUNodSwgMzAwICA4ODYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLUMwICAgKGhleCkJCUNvbnRyb2wgRXhwcmVzcyBGaW5sYW5kIE95Ci0wMDFGQzAgICAgIChiYXNlIDE2KQkJQ29udHJvbCBFeHByZXNzIEZpbmxhbmQgT3kKLQkJCQlMYWl0YWF0c2lsbGFudGllIDMKLQkJCQlTYXZvbmxpbm5hICA1NzE3MAotCQkJCUZJTkxBTkQKLQotMDAtMUYtQzEgICAoaGV4KQkJSGFubG9uZyBUZWNobm9sb2d5IENvLixMVEQKLTAwMUZDMSAgICAgKGJhc2UgMTYpCQlIYW5sb25nIFRlY2hub2xvZ3kgQ28uLExURAotCQkJCVJNLjIyMjAsQmxvY2sgQixOZXcgQ2VudHVyeSBQbGF6YSwxIFRhaSBQaW5nIE5hbiBSb2FkLAotCQkJCU5hbmppbmcgSmlhbmdzdSAyMTAwMDIKLQkJCQlDSElOQQotCi0wMC0xRi1DMiAgIChoZXgpCQlKb3cgVG9uZyBUZWNobm9sb2d5IENvIEx0ZAotMDAxRkMyICAgICAoYmFzZSAxNikJCUpvdyBUb25nIFRlY2hub2xvZ3kgQ28gTHRkCi0JCQkJNDYgTGFuZSAzMzcgQ2h1bmcgQ2hlbmcgUmQKLQkJCQlZdW5nIEthbmcgQ2l0eSBUYWluYW4gQ291bnR5IDcxMDY2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi1DMyAgIChoZXgpCQlTbWFydFN5bmNoLCBJbmMKLTAwMUZDMyAgICAgKGJhc2UgMTYpCQlTbWFydFN5bmNoLCBJbmMKLQkJCQk0NDAwIE9sZCBDYW50b24gUmQKLQkJCQlTdWl0ZSAzMDAKLQkJCQlKYWNrc29uIE1TIDM5MjExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1DNCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMUZDNCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1DNSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMUZDNSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyBLWU9UTyA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTFGLUM2ICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAxRkM2ICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsVGFpcGVpIDExMgotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi1DNyAgIChoZXgpCQlDYXNpbyBIaXRhY2hpIE1vYmlsZSBDb211bmljYXRpb25zIENvLiwgTHRkLgotMDAxRkM3ICAgICAoYmFzZSAxNikJCUNhc2lvIEhpdGFjaGkgTW9iaWxlIENvbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJMi0yMjktMSwgU2FrdXJhZ2Fva2EKLQkJCQlIaWdhc2hpeWFtYXRvLXNoaSBUb2t5byAyMDctODUwMQotCQkJCUpBUEFOCi0KLTAwLTFGLUM4ICAgKGhleCkJCVVwLVRvZGF5IEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDFGQzggICAgIChiYXNlIDE2KQkJVXAtVG9kYXkgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQk3L0YuLCBVbmlmeSBDb21tZXJjaWFsICYgSW5kdXN0cmlhbCBCdWlsZGluZwotCQkJCTMxIFRhaSBZaXAgU3RyZWV0LCBLd3VuIFRvbmcsCi0JCQkJS293bG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFGLUM5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUZDOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1DQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFGQ0EgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQ0IgICAoaGV4KQkJTklXIFNvbHV0aW9ucwotMDAxRkNCICAgICAoYmFzZSAxNikJCU5JVyBTb2x1dGlvbnMKLQkJCQlQLk8uIEJveCA2MgotCQkJCU9uZSBUcmVlIEhpbGwgU291dGggQXVzdHJhbGlhIDUxMTQKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUYtQ0MgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDFGQ0MgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLUNEICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTAwMUZDRCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLUNFICAgKGhleCkJCVFURUNIIExMQwotMDAxRkNFICAgICAoYmFzZSAxNikJCVFURUNIIExMQwotCQkJCU5vdm96YXZvZHNrYXlhIHN0LiAxOCBidWlsZC4gMQotCQkJCU1vc2NvdyBNb3Njb3cgcmVnaW9uIDEyMTMwOQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRi1DRiAgIChoZXgpCQlNU0kgVGVjaG5vbG9neSBHbWJICi0wMDFGQ0YgICAgIChiYXNlIDE2KQkJTVNJIFRlY2hub2xvZ3kgR21iSAotCQkJCUhhbmF1ZXIgTGFuZHN0cmHfZSAzMjgtMzMwCi0JCQkJRnJhbmtmdXJ0IGFtIE1haW4gSGVzc2VuIDYwMzE0Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi1EMCAgIChoZXgpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotMDAxRkQwICAgICAoYmFzZSAxNikJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0JCQkJTm8uMjE1LE5hbi1QaW5nIFJvYWQsCi0JCQkJUGluLUplbiBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtRDEgICAoaGV4KQkJT1BURVggQ08uLExURC4KLTAwMUZEMSAgICAgKGJhc2UgMTYpCQlPUFRFWCBDTy4sTFRELgotCQkJCTUtOC0xMgotCQkJCU9nb3RvCi0JCQkJT3RzdSBTaGlnYSA1MjAtMDEwMQotCQkJCUpBUEFOCi0KLTAwLTFGLUQyICAgKGhleCkJCUNPTU1URUNIIFRFQ0hOT0xPR1kgTUFDQU8gQ09NTUVSQ0lBTCBPRkZTSE9SRSBMVEQuCi0wMDFGRDIgICAgIChiYXNlIDE2KQkJQ09NTVRFQ0ggVEVDSE5PTE9HWSBNQUNBTyBDT01NRVJDSUFMIE9GRlNIT1JFIExURC4KLQkJCQkzMSxUQUkgWUlQIFNUUkVFVCwgNy9GIEtXVU4gVE9ORywKLQkJCQlLT1dMT09OLCBIT05HS09ORyAKLQkJCQlDSElOQQotCi0wMC0xRi1EMyAgIChoZXgpCQlSSVZBIE5ldHdvcmtzIEluYy4KLTAwMUZEMyAgICAgKGJhc2UgMTYpCQlSSVZBIE5ldHdvcmtzIEluYy4KLQkJCQk1NTUgUml2YSBBdmUKLQkJCQlFYXN0IEJydW5zd2ljayBOSiAwODgxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRDQgICAoaGV4KQkJNElQTkVULCBJTkMuCi0wMDFGRDQgICAgIChiYXNlIDE2KQkJNElQTkVULCBJTkMuCi0JCQkJMzgxMjkgQ0FNQlJJREdFIENPVVJUCi0JCQkJRlJFTU9OVCBDQSA5NDUzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRDUgICAoaGV4KQkJTUlDUk9SSVNDIHMuci5vLgotMDAxRkQ1ICAgICAoYmFzZSAxNikJCU1JQ1JPUklTQyBzLnIuby4KLQkJCQlEZWxuaWNrYSAyMjIKLQkJCQlKaWNpbiBrcmFsb3ZlaHJhZGVja3kga3JhaiA1MDYwMQotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTFGLUQ2ICAgKGhleCkJCVNoZW56aGVuIEFsbHl3bGwKLTAwMUZENiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBBbGx5d2xsCi0JCQkJS2VqaXl1YW4gTmFuc2hhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xRi1ENyAgIChoZXgpCQlURUxFUkFEIFNBCi0wMDFGRDcgICAgIChiYXNlIDE2KQkJVEVMRVJBRCBTQQotCQkJCTIsIGF2ZW51ZSBkZSBsYSBidXR0ZSBhdXggY2FpbGxlcwotCQkJCUFOR0xFVCAgNjQ2MDAKLQkJCQlGUkFOQ0UKLQotMDAtMUYtRDggICAoaGV4KQkJQS1UUlVTVCBDT01QVVRFUiBDT1JQT1JBVElPTgotMDAxRkQ4ICAgICAoYmFzZSAxNikJCUEtVFJVU1QgQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQkzRi4sIE5PLjM2MSwgRlVTSU5HIDFTVCBSRC4sIEdVRUlTSEFOIFRPV05TSElQLAotCQkJCVRBT1lVQU4gIDMzMzc1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi1EOSAgIChoZXgpCQlSU0QgQ29tbXVuaWNhdGlvbnMgTHRkCi0wMDFGRDkgICAgIChiYXNlIDE2KQkJUlNEIENvbW11bmljYXRpb25zIEx0ZAotCQkJCTggQm9ycm93bWVhZG93IFJvYWQKLQkJCQlTcHJpbmdrZXJzZSBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCVN0aXJsaW5nIFNjb3RsYW5kIEZLNyA3VVcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRi1EQSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMUZEQSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1EQiAgIChoZXgpCQlOZXR3b3JrIFN1cHBseSBDb3JwLiwKLTAwMUZEQiAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIFN1cHBseSBDb3JwLiwKLQkJCQkxOTM4IE5BS0FEQUlSQSBLQU5BRQotCQkJCUlJREEgTkFHQU5PIDM5NS0wODAxCi0JCQkJSkFQQU4KLQotMDAtMUYtREMgICAoaGV4KQkJTW9iaWxlIFNhZmUgVHJhY2sgTHRkCi0wMDFGREMgICAgIChiYXNlIDE2KQkJTW9iaWxlIFNhZmUgVHJhY2sgTHRkCi0JCQkJTmllbWVua2F0dSA3MwotCQkJCTE1MTQ5IExhaHRpIAotCQkJCUZJTkxBTkQKLQotMDAtMUYtREQgICAoaGV4KQkJR0RJIExMQwotMDAxRkREICAgICAoYmFzZSAxNikJCUdESSBMTEMKLQkJCQlPbmUgTWlkQW1lcmljYSBQbGF6YQotCQkJCVN1aXRlIDEwMTAKLQkJCQlPYWticm9vayBUZXJyYWNlIElMIDYwMTgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1ERSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRkRFICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRi1ERiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRkRGICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRi1FMCAgIChoZXgpCQlFZGdlVmVsb2NpdHkgQ29ycAotMDAxRkUwICAgICAoYmFzZSAxNikJCUVkZ2VWZWxvY2l0eSBDb3JwCi0JCQkJMyBCb3VyYm9uIFN0cmVldAotCQkJCVBlYWJvZHkgTUEgMDE5NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUUxICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0wMDFGRTEgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi1FMiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAxRkUyICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNjYsIENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtRTMgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MKLTAwMUZFMyAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcwotCQkJCTYwLTM5LEthc2FuLWRvbmcsS3VtY2hvbi1rdSwKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi1FNCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAxRkU0ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2vlbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMUYtRTUgICAoaGV4KQkJSW4tQ2lyY3VpdCBHbWJICi0wMDFGRTUgICAgIChiYXNlIDE2KQkJSW4tQ2lyY3VpdCBHbWJICi0JCQkJS/ZuaWdzYnL8Y2tlciBTdHJhc3NlIDY5Ci0JCQkJRHJlc2RlbiAgMDEwOTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLUU2ICAgKGhleCkJCUFscGhpb24gQ29ycG9yYXRpb24KLTAwMUZFNiAgICAgKGJhc2UgMTYpCQlBbHBoaW9uIENvcnBvcmF0aW9uCi0JCQkJMTk2IFByaW5jZXRvbiBIaWdodHN0b3duIFJvYWQKLQkJCQlTdWl0ZSAxQQotCQkJCVByaW5jZXRvbiBKdW5jdGlvbiBOZXcgSmVyc2V5IDA4NTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1FNyAgIChoZXgpCQlTaW1ldAotMDAxRkU3ICAgICAoYmFzZSAxNikJCVNpbWV0Ci0JCQkJU3RyYWRhIGRlbCBQb3J0b25lIDEyOQotCQkJCUdydWdsaWFzY28gVG9yaW5vIDEwMDk1Ci0JCQkJSVRBTFkKLQotMDAtMUYtRTggICAoaGV4KQkJS1VSVVNVR0FXQSBFbGVjdHJvbmljcyBJbmR1c3RyeSBJbmMsLgotMDAxRkU4ICAgICAoYmFzZSAxNikJCUtVUlVTVUdBV0EgRWxlY3Ryb25pY3MgSW5kdXN0cnkgSW5jLC4KLQkJCQkyRiwgNTItNSwgTm9nYXRhIDZjaG9tZQotCQkJCU5ha2Fuby1LdSBUT0tZTyAxNjUtMDAyNwotCQkJCUpBUEFOCi0KLTAwLTFGLUU5ICAgKGhleCkJCVByaW50cmV4LCBJbmMuCi0wMDFGRTkgICAgIChiYXNlIDE2KQkJUHJpbnRyZXgsIEluYy4KLQkJCQkyNzYgRWFzdCBHaXNoIFJvYWQKLQkJCQlTYW4gSm9zZSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRUEgICAoaGV4KQkJQXBwbGllZCBNZWRpYSBUZWNobm9sb2dpZXMgQ29ycG9yYXRpb24KLTAwMUZFQSAgICAgKGJhc2UgMTYpCQlBcHBsaWVkIE1lZGlhIFRlY2hub2xvZ2llcyBDb3Jwb3JhdGlvbgotCQkJCTQwOTEgQU1UQyBDZW50ZXIgRHJpdmUKLQkJCQlDbGVhcndhdGVyIEZMIDMzNzY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1FQiAgIChoZXgpCQlUcmlvIERhdGFjb20gUHR5IEx0ZAotMDAxRkVCICAgICAoYmFzZSAxNikJCVRyaW8gRGF0YWNvbSBQdHkgTHRkCi0JCQkJNDEgQXN0ZXIgQXZlbnVlCi0JCQkJQ2FycnVtIERvd25zIFZpY3RvcmlhIDMyMDEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUYtRUMgICAoaGV4KQkJU3luYXBzZSDpbGVjdHJvbmlxdWUKLTAwMUZFQyAgICAgKGJhc2UgMTYpCQlTeW5hcHNlIOlsZWN0cm9uaXF1ZQotCQkJCTEwMTAsIDdlIEF2ZW51ZQotCQkJCUdyYW5kLU3ocmUgUXXpYmVjIEc5VCAyQjgKLQkJCQlDQU5BREEKLQotMDAtMUYtRUQgICAoaGV4KQkJVGVjYW4gU3lzdGVtcyBJbmMuCi0wMDFGRUQgICAgIChiYXNlIDE2KQkJVGVjYW4gU3lzdGVtcyBJbmMuCi0JCQkJMjQ1MCBaYW5rZXIgUm9hZAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1FRSAgIChoZXgpCQl1YmlzeXMgdGVjaG5vbG9naWVzIEdtYkgKLTAwMUZFRSAgICAgKGJhc2UgMTYpCQl1YmlzeXMgdGVjaG5vbG9naWVzIEdtYkgKLQkJCQlBbSBXZWhyaGFobiA0NQotCQkJCUT8c3NlbGRvcmYgTlJXIDQwMjExCi0JCQkJR0VSTUFOWQotCi0wMC0xRi1FRiAgIChoZXgpCQlTSElOU0VJIElORFVTVFJJRVMgQ08uLExURAotMDAxRkVGICAgICAoYmFzZSAxNikJCVNISU5TRUkgSU5EVVNUUklFUyBDTy4sTFRECi0JCQkJNC0xMi0xNSxIT1JJRlVORSwgS0lUQS1LVSwKLQkJCQlUT0tPWU8gIDExNC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMUYtRjAgICAoaGV4KQkJQXVkaW8gUGFydG5lcnNoaXAKLTAwMUZGMCAgICAgKGJhc2UgMTYpCQlBdWRpbyBQYXJ0bmVyc2hpcAotCQkJCUdhbGxlcnkgQ291cnQKLQkJCQlIYW5rZXkgUGxhY2UKLQkJCQlMb25kb24gIFNFMSA0QkIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRi1GMSAgIChoZXgpCQlQYXJhZG94IEhlbGxhcyBTLkEuCi0wMDFGRjEgICAgIChiYXNlIDE2KQkJUGFyYWRveCBIZWxsYXMgUy5BLgotCQkJCTMgS29yaW50aG95IFN0Ci0JCQkJTWV0YW1vcmZvc2kKLQkJCQlBdGhlbnMgQXR0aWtpIDE0NDUxCi0JCQkJR1JFRUNFCi0KLTAwLTFGLUYyICAgKGhleCkJCVZJQSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMUZGMiAgICAgKGJhc2UgMTYpCQlWSUEgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMUYsIDUzMSwgQ2h1bmctQ2hlbmcgUm9hZAotCQkJCUhzaW4tVGllbiBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi1GMyAgIChoZXgpCQlBcHBsZSwgSW5jCi0wMDFGRjMgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRjQgICAoaGV4KQkJUG93ZXIgTW9uaXRvcnMsIEluYy4KLTAwMUZGNCAgICAgKGJhc2UgMTYpCQlQb3dlciBNb25pdG9ycywgSW5jLgotCQkJCTgwMCBOb3J0aCBNYWluIFN0cmVldAotCQkJCU10LiBDcmF3Zm9yZCBWaXJnaW5pYSAyMjg0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRjUgICAoaGV4KQkJS29uZ3NiZXJnIERlZmVuY2UgJiBBZXJvc3BhY2UKLTAwMUZGNSAgICAgKGJhc2UgMTYpCQlLb25nc2JlcmcgRGVmZW5jZSAmIEFlcm9zcGFjZQotCQkJCU9sYXYgQnJ1bmJvcmdzIHZlaSA2Ci0JCQkJQmlsbGluZ3N0YWQgIDEzOTYKLQkJCQlOT1JXQVkKLQotMDAtMUYtRjYgICAoaGV4KQkJUFMgQXVkaW8gSW50ZXJuYXRpb25hbAotMDAxRkY2ICAgICAoYmFzZSAxNikJCVBTIEF1ZGlvIEludGVybmF0aW9uYWwKLQkJCQk0ODI2IFN0ZXJsaW5nIERyaXZlCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRjcgICAoaGV4KQkJTmFrYWppbWEgQWxsIFByZWNpc2lvbiBDby4sIEx0ZC4KLTAwMUZGNyAgICAgKGJhc2UgMTYpCQlOYWthamltYSBBbGwgUHJlY2lzaW9uIENvLiwgTHRkLgotCQkJCUthbWktR29teW8xNDgwCi0JCQkJU2FrYWtpLU1hY2hpCi0JCQkJSGFuaXNoaW5hLUd1biBOYWdhbm8tS2VuIDM4OS0wNjA2Ci0JCQkJSkFQQU4KLQotMDAtMUYtRjggICAoaGV4KQkJU2llbWVucyBBRywgU2VjdG9yIEluZHVzdHJ5LCBEcml2ZSBUZWNobm9sb2dpZXMsIE1vdGlvbiBDb250cm9sIFN5c3RlbXMKLTAwMUZGOCAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHLCBTZWN0b3IgSW5kdXN0cnksIERyaXZlIFRlY2hub2xvZ2llcywgTW90aW9uIENvbnRyb2wgU3lzdGVtcwotCQkJCUZyYXVlbmF1cmFjaGVyc3RyYXNzZSA4MAotCQkJCUVybGFuZ2VuIEJhdmFyaWEgOTEwNTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLUY5ICAgKGhleCkJCUFkdmFuY2VkIEtub3dsZWRnZSBBc3NvY2lhdGVzCi0wMDFGRjkgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgS25vd2xlZGdlIEFzc29jaWF0ZXMKLQkJCQkzMzUwIFNjb3R0IEJsdmQsIFN1aXRlIDQwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQtMzExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRkEgICAoaGV4KQkJQ29yZXRyZWUsIENvLCBMdGQKLTAwMUZGQSAgICAgKGJhc2UgMTYpCQlDb3JldHJlZSwgQ28sIEx0ZAotCQkJCSM1MDIgSVQgVmVudHVyZSBUb3duLCA2OTQKLQkJCQlUYXByaWItZG9uZywgWXVzdW5nLUd1Ci0JCQkJRGFlamVvbiAgMzA1LTUxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi1GQiAgIChoZXgpCQlHcmVlbiBQYWNrZXQgQmhkCi0wMDFGRkIgICAgIChiYXNlIDE2KQkJR3JlZW4gUGFja2V0IEJoZAotCQkJCUxvdCAxLTQsIEluY3ViYXRvciAyLCBUZWNobm9sb2d5IFBhcmsgTWFsYXlzaWEKLQkJCQlMZWJ1aHJheWEgUHVjaG9uZyAtIFNnIEJlc2ksIEJ1a2l0IEphbGlsCi0JCQkJS3VhbGEgTHVtcHVyIFdpbGF5YWggUGVyc2VrdXR1YW4gNTcwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRi1GQyAgIChoZXgpCQlSaWNjaXVzK1NvaG4gR21iSAotMDAxRkZDICAgICAoYmFzZSAxNikJCVJpY2NpdXMrU29obiBHbWJICi0JCQkJSGF5bmF1ZXIgU3RyLiA0OQotCQkJCUJlcmxpbiAgMTIyNDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLUZEICAgKGhleCkJCUluZGlnbyBNb2JpbGUgVGVjaG5vbG9naWVzIENvcnAuCi0wMDFGRkQgICAgIChiYXNlIDE2KQkJSW5kaWdvIE1vYmlsZSBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQkxMUYsIE5vMjIsIExhbjQwNyxUaURpbmcgQmx2ZCBTZWN0aW9uMiwgTmVpaHUgVGVjaG5vbG9neSBQYXJrCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtRkUgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotMDAxRkZFICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkCi0JCQkJUm9zZXZpbGxlIENBIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1GRiAgIChoZXgpCQlSZXNwaXJvbmljcywgSW5jLgotMDAxRkZGICAgICAoYmFzZSAxNikJCVJlc3Bpcm9uaWNzLCBJbmMuCi0JCQkJMTc0MCBHb2xkZW4gTWlsZSBIaWdod2F5Ci0JCQkJTW9ucm9ldmlsbGUgUEEgMTUxNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTAwICAgKGhleCkJCUxFWE1BUksgSU5URVJOQVRJT05BTCwgSU5DLgotMDAyMDAwICAgICAoYmFzZSAxNikJCUxFWE1BUksgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTc0MCBORVcgQ0lSQ0xFIFJPQUQKLQkJCQlCTERHLiAzNQotCQkJCUxFWElOR1RPTiBLWSA0MDU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMDEgICAoaGV4KQkJRFNQIFNPTFVUSU9OUywgSU5DLgotMDAyMDAxICAgICAoYmFzZSAxNikJCURTUCBTT0xVVElPTlMsIElOQy4KLQkJCQkyNDY0IEVNQkFSQ0FERVJPIFdBWQotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMDIgICAoaGV4KQkJU0VSSVRFQ0ggRU5URVJQUklTRSBDTy4sIExURC4KLTAwMjAwMiAgICAgKGJhc2UgMTYpCQlTRVJJVEVDSCBFTlRFUlBSSVNFIENPLiwgTFRELgotCQkJCUZMLiAxODIsIE5PLiA1MzEtMQotCQkJCUNIVU5HIENIRU5HIFJPQUQgSFNJTiBUSUVOIENJVFkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtMDMgICAoaGV4KQkJUElYRUwgUE9XRVIgTFRELgotMDAyMDAzICAgICAoYmFzZSAxNikJCVBJWEVMIFBPV0VSIExURC4KLQkJCQlVbml0IDUgQ29sbGVnZSBCdXNpbmVzcyBQYXJrCi0JCQkJQ29sZGhhbXMgTGFuZQotCQkJCUNBTUJSSURHRSAgQ0IxIDNIRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIwLTA0ICAgKGhleCkJCVlBTUFUQUtFLUhPTkVZV0VMTCBDTy4sIExURC4KLTAwMjAwNCAgICAgKGJhc2UgMTYpCQlZQU1BVEFLRS1IT05FWVdFTEwgQ08uLCBMVEQuCi0JCQkJNTQgU1VaVUtBV0EsIElTRUhBUkEKLQkJCQlLQU5BR0FXQSAyNTktMTEgIAotCQkJCUpBUEFOCi0KLTAwLTIwLTA1ICAgKGhleCkJCVNJTVBMRSBURUNITk9MT0dZCi0wMDIwMDUgICAgIChiYXNlIDE2KQkJU0lNUExFIFRFQ0hOT0xPR1kKLQkJCQkzMDAxIERBSU1MRVIgUk9BRAotCQkJCVNBTlRBIEFOQSBDQSA5MjcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMDYgICAoaGV4KQkJR0FSUkVUVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAyMDA2ICAgICAoYmFzZSAxNikJCUdBUlJFVFQgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk0ODUzMSBXQVJNU1BSSU5HUyBCTFZELgotCQkJCUZSRU1PTlQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTA3ICAgKGhleCkJCVNGQSwgSU5DLgotMDAyMDA3ICAgICAoYmFzZSAxNikJCVNGQSwgSU5DLgotCQkJCTE0MDEgTUNDT1JNSUNLIERSSVZFCi0JCQkJTEFORE9WRVIgTUQgMjA3ODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTA4ICAgKGhleCkJCUNBQkxFICYgQ09NUFVURVIgVEVDSE5PTE9HWQotMDAyMDA4ICAgICAoYmFzZSAxNikJCUNBQkxFICYgQ09NUFVURVIgVEVDSE5PTE9HWQotCQkJCTE1NTUgU08uIFNJTkNMQUlSIFNUUkVFVAotCQkJCUFOQUhFSU0gQ0EgOTI4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTA5ICAgKGhleCkJCVBBQ0tBUkQgQkVMTCBFTEVDLiwgSU5DLgotMDAyMDA5ICAgICAoYmFzZSAxNikJCVBBQ0tBUkQgQkVMTCBFTEVDLiwgSU5DLgotCQkJCTk0MjUgQ0FOT0dBIEFWRU5VRQotCQkJCUNIQVRTV09SVEggQ0EgOTEzMjExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0wQSAgIChoZXgpCQlTT1VSQ0UtQ09NTSBDT1JQLgotMDAyMDBBICAgICAoYmFzZSAxNikJCVNPVVJDRS1DT01NIENPUlAuCi0JCQkJMjUwMjAgVy4gQVZFTlVFIFNUQU5GT1JECi0JCQkJVU5JVCAxODAKLQkJCQlWQUxFTkNJQSBDQSA5MTM1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMEIgICAoaGV4KQkJT0NUQUdPTiBTWVNURU1TIENPUlAuCi0wMDIwMEIgICAgIChiYXNlIDE2KQkJT0NUQUdPTiBTWVNURU1TIENPUlAuCi0JCQkJNjUxMCBXLiA5MVNUIEFWRU5VRQotCQkJCVdFU1RNSU5TVEVSIENPIDgwMDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0wQyAgIChoZXgpCQlBREFTVFJBIFNZU1RFTVMgQ09SUC4KLTAwMjAwQyAgICAgKGJhc2UgMTYpCQlBREFTVFJBIFNZU1RFTVMgQ09SUC4KLQkJCQkyODMxMCBJTkRVU1RSSUFMIEJMVkQuLVNURS1LCi0JCQkJSEFZV0FSRCBDQSA5NDU0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMEQgICAoaGV4KQkJQ0FSTCBaRUlTUwotMDAyMDBEICAgICAoYmFzZSAxNikJCUNBUkwgWkVJU1MKLQkJCQlQT1NURkFDSCAxMzgwCi0JCQkJQUJULiAgMS1FTCA3MzQ0NCBPQkVSS09DSEVOCi0JCQkJR0VSTUFOWQotCi0wMC0yMC0wRSAgIChoZXgpCQlTQVRFTExJVEUgVEVDSE5PTE9HWSBNR01ULCBJTkMKLTAwMjAwRSAgICAgKGJhc2UgMTYpCQlTQVRFTExJVEUgVEVDSE5PTE9HWSBNR01ULCBJTkMKLQkJCQkzNTMwIEhZTEFORCBBVkVOVUUKLQkJCQlDT1NUQSBNRVNBIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0wRiAgIChoZXgpCQlUQU5CQUMgQ08uLCBMVEQuCi0wMDIwMEYgICAgIChiYXNlIDE2KQkJVEFOQkFDIENPLiwgTFRELgotCQkJCVNBS1VSQUkgREFJIDIgQkcKLQkJCQkyNy00IElSSVlBIDEtQ0hPTUUgVEFJVE8tS1UgVE9LWU8gMTEwCi0JCQkJSkFQQU4KLQotMDAtMjAtMTAgICAoaGV4KQkJSkVPTCBTWVNURU0gVEVDSE5PTE9HWSBDTy4gTFRECi0wMDIwMTAgICAgIChiYXNlIDE2KQkJSkVPTCBTWVNURU0gVEVDSE5PTE9HWSBDTy4gTFRECi0JCQkJMy0xLTIgTXVzYXNoaW5vCi0JCQkJQWtpc2hpbWEtc2hpIFRva3lvIDE5Ni04NTU4Ci0JCQkJSkFQQU4KLQotMDAtMjAtMTEgICAoaGV4KQkJQ0FOT1BVUyBDTy4sIExURC4KLTAwMjAxMSAgICAgKGJhc2UgMTYpCQlDQU5PUFVTIENPLiwgTFRELgotCQkJCUtPQkUgSEktVEVDSCBQQVJLCi0JCQkJMS0yLTIgTVVST1RBTkkgTklTSEktS1UgS09CRQotCQkJCTY1MS0yMiBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLTEyICAgKGhleCkJCUNBTVRST05JQ1MgTUVESUNBTCBTWVNURU1TCi0wMDIwMTIgICAgIChiYXNlIDE2KQkJQ0FNVFJPTklDUyBNRURJQ0FMIFNZU1RFTVMKLQkJCQlQLk8uIEJPWCA5NTAKLQkJCQlIQVJUTEFORCBXSSA1MzAyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMTMgICAoaGV4KQkJRElWRVJTSUZJRUQgVEVDSE5PTE9HWSwgSU5DLgotMDAyMDEzICAgICAoYmFzZSAxNikJCURJVkVSU0lGSUVEIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkxMTIgRS4gU1RBVEUgU1RSRUVUCi0JCQkJUklER0VMQU5EIE1TIDM5MTU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0xNCAgIChoZXgpCQlHTE9CQUwgVklFVyBDTy4sIExURC4KLTAwMjAxNCAgICAgKGJhc2UgMTYpCQlHTE9CQUwgVklFVyBDTy4sIExURC4KLQkJCQk0RiwgTk8uIDIzLCBMQU5FIDMwNgotCQkJCUZVLVRFSCAxIFJELiBIU0ktQ0hJSCwgVEFJUEVJLCBIU0lFTgotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIwLTE1ICAgKGhleCkJCUFDVElTIENPTVBVVEVSIFNBCi0wMDIwMTUgICAgIChiYXNlIDE2KQkJQUNUSVMgQ09NUFVURVIgU0EKLQkJCQkxNiBDSEVNSU4gREVTIEFVTFgKLQkJCQkxMjI4IFBMQU4gTEVTIE9WQVRFUwotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjAtMTYgICAoaGV4KQkJU0hPV0EgRUxFQ1RSSUMgV0lSRSAmIENBQkxFIENPCi0wMDIwMTYgICAgIChiYXNlIDE2KQkJU0hPV0EgRUxFQ1RSSUMgV0lSRSAmIENBQkxFIENPCi0JCQkJTk8uIDIwLTI1LCBTRUlTSElOIDgtQ0hPTUUKLQkJCQlTQUdBTUlIQVJBLCBLQU5BR0FXQQotCQkJCTIyOSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLTE3ICAgKGhleCkJCU9SQk9URUNICi0wMDIwMTcgICAgIChiYXNlIDE2KQkJT1JCT1RFQ0gKLQkJCQlJTkRVU1RSSUFMIFpPTkUKLQkJCQlQLk8uIEJPWCAyMTUgNzA2NTEgIFlBVk5FCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTIwLTE4ICAgKGhleCkJCUNJUyBURUNITk9MT0dZIElOQy4KLTAwMjAxOCAgICAgKGJhc2UgMTYpCQlDSVMgVEVDSE5PTE9HWSBJTkMuCi0JCQkJRkwuIDktMSwgTk8uIDk0LCBQQU8gQ0hVTkcgUkQuCi0JCQkJSFNJTiBUSUVOIENJVFkKLQkJCQlUQUlQRUkgSFNJRU4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtMTkgICAoaGV4KQkJT0hMRVIgR21iSAotMDAyMDE5ICAgICAoYmFzZSAxNikJCU9ITEVSIEdtYkgKLQkJCQlNQVlCQUNIU1RSQVNFIDMwCi0JCQkJNzEzMzIgV0FJQkxJTkdFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC0yMC0xQSAgIChoZXgpCQlNUlYgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMjAxQSAgICAgKGJhc2UgMTYpCQlNUlYgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyMDQxNSBOb3JkaG9mZiBTdC4KLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0xQiAgIChoZXgpCQlOT1JUSEVSTiBURUxFQ09NL05FVFdPUksKLTAwMjAxQiAgICAgKGJhc2UgMTYpCQlOT1JUSEVSTiBURUxFQ09NL05FVFdPUksKLQkJCQlTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMjUwIFNJRE5FWSBTVFJFRVQgQkVMTEVWSUxMRSwgT05UQVJJTwotCQkJCUs4TiA1QjcKLQkJCQlDQU5BREEKLQotMDAtMjAtMUMgICAoaGV4KQkJRVhDRUwsIElOQy4KLTAwMjAxQyAgICAgKGJhc2UgMTYpCQlFWENFTCwgSU5DLgotCQkJCTM1NSBPTEQgUExZTU9VVEggUk9BRAotCQkJCVNBR0FNT1JFIEJFQUNIIE1BIDAyNTYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0xRCAgIChoZXgpCQlLQVRBTkEgUFJPRFVDVFMKLTAwMjAxRCAgICAgKGJhc2UgMTYpCQlLQVRBTkEgUFJPRFVDVFMKLQkJCQlUSEUgU1RVRElPLCBRVUFSUlkgSElMTCBCT1gsCi0JCQkJV0lMVFNISVJFIFNOMTQgOUhUICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC0xRSAgIChoZXgpCQlORVRRVUVTVCBDT1JQT1JBVElPTgotMDAyMDFFICAgICAoYmFzZSAxNikJCU5FVFFVRVNUIENPUlBPUkFUSU9OCi0JCQkJNTIzIEZFTExPV1NISVAgUk9BRC1TVEUuIzIwNQotCQkJCU1ULiBMQVVSRUwgTkogMDgwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTFGICAgKGhleCkJCUJFU1QgUE9XRVIgVEVDSE5PTE9HWSwgSU5DLgotMDAyMDFGICAgICAoYmFzZSAxNikJCUJFU1QgUE9XRVIgVEVDSE5PTE9HWSwgSU5DLgotCQkJCVAuTy4gQk9YIDI4MAotCQkJCU5FQ0VEQUggV0kgNTQ2NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTIwICAgKGhleCkJCU1FR0FUUk9OIENPTVBVVEVSIElORFVTVFJJRVMgUFRZLCBMVEQuCi0wMDIwMjAgICAgIChiYXNlIDE2KQkJTUVHQVRST04gQ09NUFVURVIgSU5EVVNUUklFUyBQVFksIExURC4KLQkJCQkKLQkJCQlVTklUIDIsICA2Mi02NCBDSEFSVEVSIFNUUkVFVCBSSU5HV09PRCBWCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLTIxICAgKGhleCkJCUFMR09SSVRITVMgU09GVFdBUkUgUFZULiBMVEQuCi0wMDIwMjEgICAgIChiYXNlIDE2KQkJQUxHT1JJVEhNUyBTT0ZUV0FSRSBQVlQuIExURC4KLQkJCQk4MyBKT0xMWSBNQUtFUiBDSEFNQkVSUyBJSQotCQkJCU5BUklNQU4gUE9JTlQgQk9NQkFZICA0MDAwMjEKLQkJCQlJTkRJQQotCQkJCUlORElBCi0KLTAwLTIwLTIyICAgKGhleCkJCU5NUyBDb21tdW5pY2F0aW9ucwotMDAyMDIyICAgICAoYmFzZSAxNikJCU5NUyBDb21tdW5pY2F0aW9ucwotCQkJCTEwMCBDcm9zc2luZyBCb3VsZXZhcmQKLQkJCQlGcmFtaW5naGFtIE1BIDAxNzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yMyAgIChoZXgpCQlULkMuIFRFQ0hOT0xPR0lFUyBQVFkuIExURAotMDAyMDIzICAgICAoYmFzZSAxNikJCVQuQy4gVEVDSE5PTE9HSUVTIFBUWS4gTFRECi0JCQkJNi82MCBGQUlSRk9SRCBSRC4KLQkJCQlQQURTVE9XICBOU1cyMjExCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLTI0ICAgKGhleCkJCVBBQ0lGSUMgQ09NTVVOSUNBVElPTiBTQ0lFTkNFUwotMDAyMDI0ICAgICAoYmFzZSAxNikJCVBBQ0lGSUMgQ09NTVVOSUNBVElPTiBTQ0lFTkNFUwotCQkJCTk2NDUgU0NSQU5UT04gUk9BRAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMjUgICAoaGV4KQkJQ09OVFJPTCBURUNITk9MT0dZLCBJTkMuCi0wMDIwMjUgICAgIChiYXNlIDE2KQkJQ09OVFJPTCBURUNITk9MT0dZLCBJTkMuCi0JCQkJNTczNCBNSURETEVCUk9PSyBQSUtFCi0JCQkJS05PWFZJTExFIFROIDM3OTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yNiAgIChoZXgpCQlBTUtMWSBTWVNURU1TLCBJTkMuCi0wMDIwMjYgICAgIChiYXNlIDE2KQkJQU1LTFkgU1lTVEVNUywgSU5DLgotCQkJCTE1ODAxIFJPQ0tGSUVMRCBCTFZELiwgI1AKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTI3ICAgKGhleCkJCU1JTkcgRk9SVFVORSBJTkRVU1RSWSBDTy4sIExURAotMDAyMDI3ICAgICAoYmFzZSAxNikJCU1JTkcgRk9SVFVORSBJTkRVU1RSWSBDTy4sIExURAotCQkJCTRGLCBOTy4gODAwIENIVU5HIENIRU5HIFJELAotCQkJCUNIVU5HIEhPIENJVFksIFRBSVBFSSBIU0lFTgotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC0yOCAgIChoZXgpCQlXRVNUIEVHRyBTWVNURU1TLCBJTkMuCi0wMDIwMjggICAgIChiYXNlIDE2KQkJV0VTVCBFR0cgU1lTVEVNUywgSU5DLgotCQkJCTY1IEhJR0ggUklER0UgUk9BRC1TVEUuIzI4NgotCQkJCVNUQU1GT1JEIENUIDA2OTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yOSAgIChoZXgpCQlURUxFUFJPQ0VTU0lORyBQUk9EVUNUUywgSU5DLgotMDAyMDI5ICAgICAoYmFzZSAxNikJCVRFTEVQUk9DRVNTSU5HIFBST0RVQ1RTLCBJTkMuCi0JCQkJNDU2NSBFLiBJTkRVU1RSSUFMIFNUUkVFVAotCQkJCUJVSUxESU5HICM3SwotCQkJCVNJTUkgVkFMTEVZIENBIDkzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yQSAgIChoZXgpCQlOLlYuIERaSU5FCi0wMDIwMkEgICAgIChiYXNlIDE2KQkJTi5WLiBEWklORQotCQkJCUtPTklORyBMRU9QT0xEIElJSSBMQUFOIDIKLQkJCQlCIC0gODUwMCBLT1JUUklKSwotCQkJCUJFTEdJVU0KLQkJCQlCRUxHSVVNCi0KLTAwLTIwLTJCICAgKGhleCkJCUFEVkFOQ0VEIFRFTEVDT01NVU5JQ0FUSU9OUyBNT0RVTEVTLCBMVEQuCi0wMDIwMkIgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgVEVMRUNPTU1VTklDQVRJT05TIE1PRFVMRVMsIExURC4KLQkJCQkKLQkJCQlNT1VOVCBQTEVBU0FOVCBIT1VTRSBIVU5USU5HRE9OIFJPQUQsCi0JCQkJQ2FtYnJpZGdlIENCMyBPQkwgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIwLTJDICAgKGhleCkJCVdFTExUUk9OSVggQ08uLCBMVEQuCi0wMDIwMkMgICAgIChiYXNlIDE2KQkJV0VMTFRST05JWCBDTy4sIExURC4KLQkJCQkzRiwgTk8uIDM2LTEsIEhXQU5HIEhTSSBTVFJFRVQKLQkJCQlTSElOLUxJTiBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtMkQgICAoaGV4KQkJVEFJWU8gQ09SUE9SQVRJT04KLTAwMjAyRCAgICAgKGJhc2UgMTYpCQlUQUlZTyBDT1JQT1JBVElPTgotCQkJCTEtMi02IFNBTk5PSCwgT0hUQS1LVQotCQkJCVRPS1lPCi0JCQkJMTQzIAotCQkJCUpBUEFOCi0KLTAwLTIwLTJFICAgKGhleCkJCURBWVNUQVIgRElHSVRBTAotMDAyMDJFICAgICAoYmFzZSAxNikJCURBWVNUQVIgRElHSVRBTAotCQkJCTU1NTYgQVRMQU5UQSBISUdIV0FZCi0JCQkJRkxPV0VSWSBCUkFOQ0ggR0EgMzA1NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTJGICAgKGhleCkJCVpFVEEgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwMjAyRiAgICAgKGJhc2UgMTYpCQlaRVRBIENPTU1VTklDQVRJT05TLCBMVEQuCi0JCQkJWkVOSVRIIEhPVVNFCi0JCQkJR1JFU0ZPUkQgSU5EVVNUUklBTCBQQVJLCi0JCQkJV1JFWEhBTSwgQ0xXWUQsIExMMTIgOExYICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC0zMCAgIChoZXgpCQlBTkFMT0cgJiBESUdJVEFMIFNZU1RFTVMKLTAwMjAzMCAgICAgKGJhc2UgMTYpCQlBTkFMT0cgJiBESUdJVEFMIFNZU1RFTVMKLQkJCQkxLzIgTEFWRUxMRSBST0FECi0JCQkJQkFOR0FMT1JFIC0gNTYwMDAxCi0JCQkJSU5ESUEKLQkJCQlJTkRJQQotCi0wMC0yMC0zMSAgIChoZXgpCQlFUlRFQyBHbWJICi0wMDIwMzEgICAgIChiYXNlIDE2KQkJRVJURUMgR21iSAotCQkJCUFNIFBFU1RBTE9aWklSSU5HIDI0Ci0JCQkJRC05MTA1OCBFUkxBTkdFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC0yMC0zMiAgIChoZXgpCQlBTENBVEVMIFRBSVNFTAotMDAyMDMyICAgICAoYmFzZSAxNikJCUFMQ0FURUwgVEFJU0VMCi0JCQkJNCwgTUlORyBTSEVORyBTVFJFRVQgVFUtQ0hFTkcKLQkJCQlJTkRVU1RSSUFMIERJU1RSSUNUIFRBSVBFSSBIU0lFSAotCQkJCVRBSVdBTiBST0MKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIwLTMzICAgKGhleCkJCVNZTkFQU0UgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIwMzMgICAgIChiYXNlIDE2KQkJU1lOQVBTRSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk0ODIyIEFMQkVNQVJMRSBST0FELCAjMTA0Ci0JCQkJQ0hBUkxPVFRFIE5DIDI4MjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0zNCAgIChoZXgpCQlST1RFQyBJTkRVU1RSSUVBVVRPTUFUSU9OIEdNQkgKLTAwMjAzNCAgICAgKGJhc2UgMTYpCQlST1RFQyBJTkRVU1RSSUVBVVRPTUFUSU9OIEdNQkgKLQkJCQlHVVRFTkJFUkdTVFIuIDE1Ci0JCQkJNzY0MzcgUkFTVEFUVAotCQkJCUdFUk1BTlkKLQotMDAtMjAtMzUgICAoaGV4KQkJSUJNIENvcnAKLTAwMjAzNSAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMzYgICAoaGV4KQkJQk1DIFNPRlRXQVJFCi0wMDIwMzYgICAgIChiYXNlIDE2KQkJQk1DIFNPRlRXQVJFCi0JCQkJMTYwMCBDSVRZIFdFU1QgQkxWRC4sICMxNjAwCi0JCQkJSE9VU1RPTiBUWCA3NzA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMzcgICAoaGV4KQkJU0VBR0FURSBURUNITk9MT0dZCi0wMDIwMzcgICAgIChiYXNlIDE2KQkJU0VBR0FURSBURUNITk9MT0dZCi0JCQkJODAwMSBFLiBCTE9PTUlOR1RPTiBGV1kKLQkJCQlNL1MgLSBNUFMwNDMKLQkJCQlCTE9PTUlOR1RPTiBNTiA1NTQyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMzggICAoaGV4KQkJVk1FIE1JQ1JPU1lTVEVNUyBJTlRFUk5BVElPTkFMIENPUlBPUkFUSU9OCi0wMDIwMzggICAgIChiYXNlIDE2KQkJVk1FIE1JQ1JPU1lTVEVNUyBJTlRFUk5BVElPTkFMIENPUlBPUkFUSU9OCi0JCQkJMTIwOTAgUy4gTUVNT1JJQUwgUEFSS1dBWQotCQkJCUhVTlRTVklMTEUgQUwgMzU4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTM5ICAgKGhleCkJCVNDSU5FVFMKLTAwMjAzOSAgICAgKGJhc2UgMTYpCQlTQ0lORVRTCi0JCQkJMTU3NSBURU5BS0EgLSBTVEUjIE44Ci0JCQkJU1VOTllWQUxFIENBIDk0MDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0zQSAgIChoZXgpCQlESUdJVEFMIEJJME1FVFJJQ1MgSU5DLgotMDAyMDNBICAgICAoYmFzZSAxNikJCURJR0lUQUwgQkkwTUVUUklDUyBJTkMuCi0JCQkJNTYwMCBST1dMQU5EIFJPQUQtIFNURS4jMjA1Ci0JCQkJTUlOTkVUT05LQSBNTiA1NTM2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtM0IgICAoaGV4KQkJV0lTRE0gTFRELgotMDAyMDNCICAgICAoYmFzZSAxNikJCVdJU0RNIExURC4KLQkJCQlTVC4gSk9ITlMgSU5OT1ZBVElPTiBDRU5UUkUKLQkJCQlDT1dMRVkgUk9BRCBDQU1CUklER0UgIENCNCA0V1MKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtM0MgICAoaGV4KQkJRVVST1RJTUUgQUIKLTAwMjAzQyAgICAgKGJhc2UgMTYpCQlFVVJPVElNRSBBQgotCQkJCUJPWCAyNzcKLQkJCQlTLTUzMjI0IFNLQVJBCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTIwLTNEICAgKGhleCkJCUhvbmV5d2VsbCBFQ0MKLTAwMjAzRCAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgRUNDCi0JCQkJMTk4NSBEb3VnbGFzIERyaXZlCi0JCQkJTU4xMC0xMjFBCi0JCQkJR29sZGVuIFZhbGxleSBNTiA1NTQyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtM0UgICAoaGV4KQkJTG9naUNhbiBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjAzRSAgICAgKGJhc2UgMTYpCQlMb2dpQ2FuIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE1MCBLQVJMIENMQVJLIFJPQUQKLQkJCQlFRE1PTlRPTiwgQUxCRVJUQSBUNk4gMUUyICAKLQkJCQlDQU5BREEKLQotMDAtMjAtM0YgICAoaGV4KQkJSlVLSSBDT1JQT1JBVElPTgotMDAyMDNGICAgICAoYmFzZSAxNikJCUpVS0kgQ09SUE9SQVRJT04KLQkJCQk4LTItMSBLT0tVUllPLUNITwotCQkJCUNIT0ZVLVNISSBUT0tZTyAgMTgyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0yMC00MCAgIChoZXgpCQlNb3Rvcm9sYSBCcm9hZGJhbmQgQ29tbXVuaWNhdGlvbnMgU2VjdG9yCi0wMDIwNDAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgQnJvYWRiYW5kIENvbW11bmljYXRpb25zIFNlY3RvcgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTQxICAgKGhleCkJCURBVEEgTkVUCi0wMDIwNDEgICAgIChiYXNlIDE2KQkJREFUQSBORVQKLQkJCQlTVVdPTiBQLk8uIEJPWCAxMDYsIFNVV09OCi0JCQkJS1lVTkdHSS1ETwotCQkJCUtPUkVBIDQ0MC02MDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjAtNDIgICAoaGV4KQkJREFUQU1FVFJJQ1MgQ09SUC4KLTAwMjA0MiAgICAgKGJhc2UgMTYpCQlEQVRBTUVUUklDUyBDT1JQLgotCQkJCTg5NjYgQ09NQU5DSEUgQVZFLgotCQkJCUNIQVRTV09SVEggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTQzICAgKGhleCkJCU5FVVJPTiBDT01QQU5ZIExJTUlURUQKLTAwMjA0MyAgICAgKGJhc2UgMTYpCQlORVVST04gQ09NUEFOWSBMSU1JVEVECi0JCQkJMTUgS1dBSSBZSSBST0FELCAgQkxPQ0sgMiwKLQkJCQkyMVNUIEZMT09SLCBGTEFUIEIKLQkJCQlLV0FJIENIVU5HLCAgIE4uVC4gIAotCQkJCUhPTkcgS09ORwotCi0wMC0yMC00NCAgIChoZXgpCQlHRU5JVEVDSCBQVFkgTFRECi0wMDIwNDQgICAgIChiYXNlIDE2KQkJR0VOSVRFQ0ggUFRZIExURAotCQkJCVAuTy4gQk9YIDE5NgotCQkJCUFTUVVJVEggTlNXIDIwNzcKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjAtNDUgICAoaGV4KQkJSU9OIE5ldHdvcmtzLCBJbmMuCi0wMDIwNDUgICAgIChiYXNlIDE2KQkJSU9OIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTU1MSBTb3V0aCBXYXNoaW5ndG9uIEF2ZS4KLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC00NiAgIChoZXgpCQlDSVBSSUNPLCBJTkMuCi0wMDIwNDYgICAgIChiYXNlIDE2KQkJQ0lQUklDTywgSU5DLgotCQkJCTI4MDAgQ0FNUFVTIERSSVZFLS1TVUlURSAjNjAKLQkJCQlQTFlNT1VUSCBNTiA1NTQ0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNDcgICAoaGV4KQkJU1RFSU5CUkVDSEVSIENPUlAuCi0wMDIwNDcgICAgIChiYXNlIDE2KQkJU1RFSU5CUkVDSEVSIENPUlAuCi0JCQkJMzAgTk9SVEggQVZFTlVFCi0JCQkJQlVSTElOR1RPTiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNDggICAoaGV4KQkJTWFyY29uaSBDb21tdW5pY2F0aW9ucwotMDAyMDQ4ICAgICAoYmFzZSAxNikJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMKLQkJCQkxMDAwIEZvcmUgRHJpdmUKLQkJCQlXYXJyZW5kYWxlIFBBIDE1MDg2LTc1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTQ5ICAgKGhleCkJCUNPTVRST04sIElOQy4KLTAwMjA0OSAgICAgKGJhc2UgMTYpCQlDT01UUk9OLCBJTkMuCi0JCQkJU0FOQ0FUSEVSSU5BIEJMREcuCi0JCQkJMzYtMTIgU0hJTkpVS1UgMS1DSE9NRSBTSElOSlVLVS1LVQotCQkJCVRPS1lPIDE2MCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLTRBICAgKGhleCkJCVBST05FVCBHTUJICi0wMDIwNEEgICAgIChiYXNlIDE2KQkJUFJPTkVUIEdNQkgKLQkJCQlLQVJMU1RSQVNTRSA0OQotCQkJCUQtNzgwNSBGIFZJTExJTkdFTi1TQ0hXRU5OSU5HRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0yMC00QiAgIChoZXgpCQlBVVRPQ09NUFVURVIgQ08uLCBMVEQuCi0wMDIwNEIgICAgIChiYXNlIDE2KQkJQVVUT0NPTVBVVEVSIENPLiwgTFRELgotCQkJCU5PLiAxOCwgUEVJIFlVQU4gUk9BRAotCQkJCUNIVU5HLUxJIENJVFksIFRBTy1ZVUFOIEhTSUVOCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIwLTRDICAgKGhleCkJCU1JVFJPTiBDT01QVVRFUiBQVEUgTFRELgotMDAyMDRDICAgICAoYmFzZSAxNikJCU1JVFJPTiBDT01QVVRFUiBQVEUgTFRELgotCQkJCTEwMjAgSE9VR0FORyBBVkVOVUUgMSAjMDMtMzUwNAotCQkJCVNJTkdBUE9SRSAxOTUzCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTIwLTREICAgKGhleCkJCUlOT1ZJUyBHTUJICi0wMDIwNEQgICAgIChiYXNlIDE2KQkJSU5PVklTIEdNQkgKLQkJCQlIQU5OUy1CUkFVTiBTVFJBU1NFIDUwCi0JCQkJODUzNzUgTkVVRkFIUk4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0yMC00RSAgIChoZXgpCQlORVRXT1JLIFNFQ1VSSVRZIFNZU1RFTVMsIElOQy4KLTAwMjA0RSAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFNFQ1VSSVRZIFNZU1RFTVMsIElOQy4KLQkJCQk5NDAxIFdBUExFUyBTVFJFRVQsU1RFLiAjMTAwCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC00RiAgIChoZXgpCQlERVVUU0NIRSBBRVJPU1BBQ0UgQUcKLTAwMjA0RiAgICAgKGJhc2UgMTYpCQlERVVUU0NIRSBBRVJPU1BBQ0UgQUcKLQkJCQlHRVNDSEFFRlRTRkVMRAotCQkJCVZFUlRFSURJR1VORyBVTkQgWklWSUxFIFNZU1RFTSA4MTY2MyBNVUUKLQkJCQlCVU5ERVNSRVBVQkxJSyBERVVUU0NITEFORAotCQkJCUdFUk1BTlkKLQotMDAtMjAtNTAgICAoaGV4KQkJS09SRUEgQ09NUFVURVIgSU5DLgotMDAyMDUwICAgICAoYmFzZSAxNikJCUtPUkVBIENPTVBVVEVSIElOQy4KLQkJCQk0NjksIERBRUhFVU5HLURPTkcKLQkJCQlNQVBPLUdVLCBTRU9VTAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIwLTUxICAgKGhleCkJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi0wMDIwNTEgICAgIChiYXNlIDE2KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMjcgSmV0cGxleCBDaXJjbGUKLQkJCQlNYWRpc29uIEFMIDM1NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC01MiAgIChoZXgpCQlSQUdVTEEgU1lTVEVNUwotMDAyMDUyICAgICAoYmFzZSAxNikJCVJBR1VMQSBTWVNURU1TCi0JCQkJNDU0MCBTLiBKVVBJVEVSIERSSVZFCi0JCQkJU0FMVCBMQUtFIENJVFkgVVQgODQxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTUzICAgKGhleCkJCUhVTlRTVklMTEUgTUlDUk9TWVNURU1TLCBJTkMuCi0wMDIwNTMgICAgIChiYXNlIDE2KQkJSFVOVFNWSUxMRSBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQlQLk8uIEJPWCAxMjQxNQotCQkJCUhVTlRTVklMTEUgQUwgMzU4MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTU0ICAgKGhleCkJCVN5Y2Ftb3JlIE5ldHdvcmtzCi0wMDIwNTQgICAgIChiYXNlIDE2KQkJU3ljYW1vcmUgTmV0d29ya3MKLQkJCQkyMjAgTWlsbCBSZAotCQkJCUNoZWxtc2ZvcmQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTU1ICAgKGhleCkJCUFMVEVDSCBDTy4sIExURC4KLTAwMjA1NSAgICAgKGJhc2UgMTYpCQlBTFRFQ0ggQ08uLCBMVEQuCi0JCQkJT0hJU0hJIEJMREcuLCAyLTIzLTExCi0JCQkJTklTSEktTklQUE9SSSwgQVJBS0FXQS1LVQotCQkJCSBUT0tZTyAxMTYgIAotCQkJCUpBUEFOCi0KLTAwLTIwLTU2ICAgKGhleCkJCU5FT1BST0RVQ1RTCi0wMDIwNTYgICAgIChiYXNlIDE2KQkJTkVPUFJPRFVDVFMKLQkJCQkyNSBDSEFQTUFOIFNUUkVFVAotCQkJCUJMQUNLQlVSTiBOT1JUSCBWSUNUT1JJQSAzMTMwCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLTU3ICAgKGhleCkJCVRJVFpFIERBVEVOVEVDSE5JSyBHbWJICi0wMDIwNTcgICAgIChiYXNlIDE2KQkJVElUWkUgREFURU5URUNITklLIEdtYkgKLQkJCQlESUVTRUxTVFJBU1NFIDEwCi0JCQkJRFMtNzEyNzIgUkVOTklOR0VOLTIgIAotCQkJCUdFUk1BTlkKLQotMDAtMjAtNTggICAoaGV4KQkJQUxMSUVEIFNJR05BTCBJTkMuCi0wMDIwNTggICAgIChiYXNlIDE2KQkJQUxMSUVEIFNJR05BTCBJTkMuCi0JCQkJUk9VVEUgNDYKLQkJCQlURVRFUkJPUk8gTkogMDc2MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTU5ICAgKGhleCkJCU1JUk8gQ09NUFVURVIgUFJPRFVDVFMgQUcKLTAwMjA1OSAgICAgKGJhc2UgMTYpCQlNSVJPIENPTVBVVEVSIFBST0RVQ1RTIEFHCi0JCQkJQ0FSTCBNSUVMRSBTVFIuIDQKLQkJCQlELTM4MTEyIEJSQVVOU0NIV0VJRyAgCi0JCQkJR0VSTUFOWQotCi0wMC0yMC01QSAgIChoZXgpCQlDT01QVVRFUiBJREVOVElDUwotMDAyMDVBICAgICAoYmFzZSAxNikJCUNPTVBVVEVSIElERU5USUNTCi0JCQkJNSBTSEFXTVVUIFJPQUQKLQkJCQlDQU5UT04gTUEgMDIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTVCICAgKGhleCkJCUtlbnRyb3gsIExMQwotMDAyMDVCICAgICAoYmFzZSAxNikJCUtlbnRyb3gsIExMQwotCQkJCTIwMDEwIE5XIFRhbmFzYm91cm5lIERyLgotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNUMgICAoaGV4KQkJSW50ZXJOZXQgU3lzdGVtcyBvZiBGbG9yaWRhLCBJbmMuCi0wMDIwNUMgICAgIChiYXNlIDE2KQkJSW50ZXJOZXQgU3lzdGVtcyBvZiBGbG9yaWRhLCBJbmMuCi0JCQkJUC5PLiBCT1ggNTc4Ci0JCQkJQ1JFU1RWSUVXIEZMIDMyNTM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC01RCAgIChoZXgpCQlOQU5PTUFUSUMgT1kKLTAwMjA1RCAgICAgKGJhc2UgMTYpCQlOQU5PTUFUSUMgT1kKLQkJCQlQVUlTVE9MQU4gUkFJVFRJIDQKLQkJCQkwMDc2MCBIRUxTSU5LSQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTIwLTVFICAgKGhleCkJCUNBU1RMRSBST0NLLCBJTkMuCi0wMDIwNUUgICAgIChiYXNlIDE2KQkJQ0FTVExFIFJPQ0ssIElOQy4KLQkJCQkyMCBTT1VUSCBTQU5UQSBDUlVaIEFWRS4KLQkJCQlTVUlURSAjMzEwCi0JCQkJTE9TIEdBVE9TIENBIDk1MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC01RiAgIChoZXgpCQlHQU1NQURBVEEgQ09NUFVURVIgR01CSAotMDAyMDVGICAgICAoYmFzZSAxNikJCUdBTU1BREFUQSBDT01QVVRFUiBHTUJICi0JCQkJR1VURU5CRVJHU1RSLiAxMwotCQkJCTgyMTY4IFBVQ0hIRUlNCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMjAtNjAgICAoaGV4KQkJQUxDQVRFTCBJVEFMSUEgUy5wLkEuCi0wMDIwNjAgICAgIChiYXNlIDE2KQkJQUxDQVRFTCBJVEFMSUEgUy5wLkEuCi0JCQkJVklBIFRSRU5UTywgMzAKLQkJCQkyMDA1OSBWSU1FUkNBVEUgKE1JKSAgCi0JCQkJSVRBTFkKLQotMDAtMjAtNjEgICAoaGV4KQkJR2FycmV0dENvbSwgSW5jLgotMDAyMDYxICAgICAoYmFzZSAxNikJCUdhcnJldHRDb20sIEluYy4KLQkJCQk5OTEgQU5OQVBPTElTIFdBWQotCQkJCU5vcnRoIEFuZG92ZXIgTUEgMDE4NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTYyICAgKGhleCkJCVNDT1JQSU9OIExPR0lDLCBMVEQuCi0wMDIwNjIgICAgIChiYXNlIDE2KQkJU0NPUlBJT04gTE9HSUMsIExURC4KLQkJCQkxOSBCUk9PS1NJREUgUk9BRAotCQkJCU9YSEVZLCBXQVRGT1JECi0JCQkJSEVSVFMgV0QxIDRCVyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtNjMgICAoaGV4KQkJV0lQUk8gSU5GT1RFQ0ggTFRELgotMDAyMDYzICAgICAoYmFzZSAxNikJCVdJUFJPIElORk9URUNIIExURC4KLQkJCQlVTklUUyA0Ny00OCwgU0RGIEJMT0NLIFZJSQotCQkJCU1FUFosIEtBREFQUEVSSSBNQURSQVMtNjAwMDQ1Ci0JCQkJSU5ESUEKLQotMDAtMjAtNjQgICAoaGV4KQkJUFJPVEVDIE1JQ1JPU1lTVEVNUywgSU5DLgotMDAyMDY0ICAgICAoYmFzZSAxNikJCVBST1RFQyBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQkyOTcgTEFCUk9TU0UKLQkJCQlQT0lOVEUtQ0xBSVJFLCBRVUVCRUMgSDlSIDFBMyAgCi0JCQkJQ0FOQURBCi0KLTAwLTIwLTY1ICAgKGhleCkJCVNVUEVSTkVUIE5FVFdPUktJTkcgSU5DLgotMDAyMDY1ICAgICAoYmFzZSAxNikJCVNVUEVSTkVUIE5FVFdPUktJTkcgSU5DLgotCQkJCTE2IFRPWkVSRVQgSEEnQVJFVFogU1QuCi0JCQkJVEVMLUFWSVYgNjc4OTEgIAotCQkJCUlTUkFFTAotCi0wMC0yMC02NiAgIChoZXgpCQlHRU5FUkFMIE1BR0lDLCBJTkMuCi0wMDIwNjYgICAgIChiYXNlIDE2KQkJR0VORVJBTCBNQUdJQywgSU5DLgotCQkJCTI0NjUgTEFUSEFNIFNUUkVFVAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTY3ICAgKGhleCkJCVBSSVZBVEUKLTAwMjA2NyAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMjAtNjggICAoaGV4KQkJSVNEWU5FCi0wMDIwNjggICAgIChiYXNlIDE2KQkJSVNEWU5FCi0JCQkJMTEgUk9YQlVSWSBBVkVOVUUKLQkJCQlOQVRJQ0sgTUEgMDE3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTY5ICAgKGhleCkJCUlTRE4gU1lTVEVNUyBDT1JQT1JBVElPTgotMDAyMDY5ICAgICAoYmFzZSAxNikJCUlTRE4gU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTgzMjAgT0xEIENPVVJUSE9VU0UgUkQuCi0JCQkJU1VJVEUgIzIwMwotCQkJCVZJRU5OQSBWQSAyMjE4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNkEgICAoaGV4KQkJT1NBS0EgQ09NUFVURVIgQ09SUC4KLTAwMjA2QSAgICAgKGJhc2UgMTYpCQlPU0FLQSBDT01QVVRFUiBDT1JQLgotCQkJCTItOCBLT1lBQ0hPVSBORVlBR0FXLVNISQotCQkJCU9TQUtBIDU3MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMjAtNkIgICAoaGV4KQkJS09OSUNBIE1JTk9MVEEgSE9MRElOR1MsIElOQy4KLTAwMjA2QiAgICAgKGJhc2UgMTYpCQlLT05JQ0EgTUlOT0xUQSBIT0xESU5HUywgSU5DLgotCQkJCTEtNi0xLCBNYXJ1bm91Y2hpLAotCQkJCUNoaXlvZGEta3UKLQkJCQlUb2t5byAgMTAwLTAwMDUKLQkJCQlKQVBBTgotCi0wMC0yMC02QyAgIChoZXgpCQlFVkVSR1JFRU4gVEVDSE5PTE9HWSBDT1JQLgotMDAyMDZDICAgICAoYmFzZSAxNikJCUVWRVJHUkVFTiBURUNITk9MT0dZIENPUlAuCi0JCQkJMjMxIEVNRVJTT04gU1RSRUVUCi0JCQkJUEFMTyBBTFRPIENBIDk0MzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC02RCAgIChoZXgpCQlEQVRBIFJBQ0UsIElOQy4KLTAwMjA2RCAgICAgKGJhc2UgMTYpCQlEQVRBIFJBQ0UsIElOQy4KLQkJCQkxMTU1MCBJSC0xMFdFU1QgIFNURSMzOTUKLQkJCQlTQU4gQU5UT05JTyBUWCA3ODIzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNkUgICAoaGV4KQkJWEFDVCwgSU5DLgotMDAyMDZFICAgICAoYmFzZSAxNikJCVhBQ1QsIElOQy4KLQkJCQlQLk8uIEJPWCA1NQotCQkJCUFSR1lMRSBUWCA3NjIyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNkYgICAoaGV4KQkJRkxPV1BPSU5UIENPUlBPUkFUSU9OCi0wMDIwNkYgICAgIChiYXNlIDE2KQkJRkxPV1BPSU5UIENPUlBPUkFUSU9OCi0JCQkJNzI5MSBDT1JPTkFETyBEUklWRSwgU1RFIyA0Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTcwICAgKGhleCkJCUhZTkVULCBMVEQuCi0wMDIwNzAgICAgIChiYXNlIDE2KQkJSFlORVQsIExURC4KLQkJCQkxMDIgSkFCT1RJTlNLWSBTVC4KLQkJCQlQTyBCT1ggMzYzOAotCQkJCVBFVEFDSCBUSUtWQSA0OTEzMCAgCi0JCQkJSVNSQUVMCi0KLTAwLTIwLTcxICAgKGhleCkJCUlCUiBHTUJICi0wMDIwNzEgICAgIChiYXNlIDE2KQkJSUJSIEdNQkgKLQkJCQlLT0hMRVJTVFIuIDQ1Ci0JCQkJRC00NjI4NiBET1JTVEVOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTcyICAgKGhleCkJCVdPUktMSU5LIElOTk9WQVRJT05TCi0wMDIwNzIgICAgIChiYXNlIDE2KQkJV09SS0xJTksgSU5OT1ZBVElPTlMKLQkJCQkyNDUyIEFSTVNUUk9ORyBTVFJFRVQKLQkJCQlMSVZFUk1PUkUgQ0EgOTQ1NU8KLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTczICAgKGhleCkJCUZVU0lPTiBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDIwNzMgICAgIChiYXNlIDE2KQkJRlVTSU9OIFNZU1RFTVMgQ09SUE9SQVRJT04KLQkJCQk3NjAwIFNUQU5ESVNIIFBMQUNFCi0JCQkJUk9DS1ZJTExFIE1EIDIwODU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC03NCAgIChoZXgpCQlTVU5HV09PTiBTWVNURU1TCi0wMDIwNzQgICAgIChiYXNlIDE2KQkJU1VOR1dPT04gU1lTVEVNUwotCQkJCVlVU1VOIEJMREcuNDQtNAotCQkJCVNBTVNVTkctRE9ORyBLQU5HTkFNLUtVLCBTRU9VTCAxMzUtMDkwCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjAtNzUgICAoaGV4KQkJTU9UT1JPTEEgQ09NTVVOSUNBVElPTiBJU1JBRUwKLTAwMjA3NSAgICAgKGJhc2UgMTYpCQlNT1RPUk9MQSBDT01NVU5JQ0FUSU9OIElTUkFFTAotCQkJCTMgS1JFTUVORVRTS0kgU1RSRUVUCi0JCQkJUE9CIDI1MDE2Ci0JCQkJVEVMLUFWSVYgIDYxMjUwICAKLQkJCQlJU1JBRUwKLQotMDAtMjAtNzYgICAoaGV4KQkJUkVVRE8gQ09SUE9SQVRJT04KLTAwMjA3NiAgICAgKGJhc2UgMTYpCQlSRVVETyBDT1JQT1JBVElPTgotCQkJCTQtMS0xMCBTSElOU0FOCi0JCQkJTkFHQU9LQSBDSVRZLCBOSUlHQVRBIDk0MC0yMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMjAtNzcgICAoaGV4KQkJS0FSRElPUyBTWVNURU1TIENPUlAuCi0wMDIwNzcgICAgIChiYXNlIDE2KQkJS0FSRElPUyBTWVNURU1TIENPUlAuCi0JCQkJMjYgTiBTVU1NSVQgQVZFLgotCQkJCUdBSVRIRVJTQlVSRyBNRCAyMDg3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNzggICAoaGV4KQkJUlVOVE9QLCBJTkMuCi0wMDIwNzggICAgIChiYXNlIDE2KQkJUlVOVE9QLCBJTkMuCi0JCQkJNS9GLCBOTy4gMTAsIEFMTEVZIDgsIExBTkUgNDUKLQkJCQlQQU8gU0hJTiBST0FELCBIU0lOVElFTiBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC03OSAgIChoZXgpCQlNSUtST04gR01CSAotMDAyMDc5ICAgICAoYmFzZSAxNikJCU1JS1JPTiBHTUJICi0JCQkJQlJFU0xBVUVSU1RSLiAxLTMKLQkJCQk4NTM4NiBFQ0hJTkcgIAotCQkJCUdFUk1BTlkKLQotMDAtMjAtN0EgICAoaGV4KQkJV2lTRSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAyMDdBICAgICAoYmFzZSAxNikJCVdpU0UgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkxMzAgS05PV0xFUyBEUklWRQotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtN0IgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMjA3QiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCTIxMTEgTkUgMjV0aCBBdmVudWUKLQkJCQlKRjMtNDIwCi0JCQkJSGlsbHNib3JvIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC03QyAgIChoZXgpCQlBVVRFQyBHbWJICi0wMDIwN0MgICAgIChiYXNlIDE2KQkJQVVURUMgR21iSAotCQkJCUJBSE5IT0ZTVFIuIDU3Ci0JCQkJNTUyMzQgRlJBTUVSU0hFSU0gIAotCQkJCUdFUk1BTlkKLQotMDAtMjAtN0QgICAoaGV4KQkJQURWQU5DRUQgQ09NUFVURVIgQVBQTElDQVRJT05TCi0wMDIwN0QgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgQ09NUFVURVIgQVBQTElDQVRJT05TCi0JCQkJMTA3IFBFTk5TIFRSQUlMCi0JCQkJTkVXVE9XTiBQQSAxODk0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtN0UgICAoaGV4KQkJRklORUNPTSBDby4sIEx0ZC4KLTAwMjA3RSAgICAgKGJhc2UgMTYpCQlGSU5FQ09NIENvLiwgTHRkLgotCQkJCTExMDggSFdBS09LLURPTkcsIEtBTkdTRU8tS1UKLQkJCQlTRU9VTCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIwLTdGICAgKGhleCkJCUtZT0VJIFNBTkdZTyBDTy4sIExURC4KLTAwMjA3RiAgICAgKGJhc2UgMTYpCQlLWU9FSSBTQU5HWU8gQ08uLCBMVEQuCi0JCQkJRElSLiAmIEdFTidMIE1HUi5JTkQuIFNZU1RFTVMKLQkJCQkyMC00LCBTSE9UTyAyLUNIT01FIFNISUJVWUEtS1UKLQkJCQlUT0tZTwotCQkJCUpBUEFOCi0KLTAwLTIwLTgwICAgKGhleCkJCVNZTkVSR1kgKFVLKSBMVEQuCi0wMDIwODAgICAgIChiYXNlIDE2KQkJU1lORVJHWSAoVUspIExURC4KLQkJCQlIQVJUQ1JBTiBIT1VTRQotCQkJCUNBUlBFTkRFUlMgUEFSSywKLQkJCQlXQVRGT1JEIEhFUlRTLiAgV0QxIDVFWiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtODEgICAoaGV4KQkJVElUQU4gRUxFQ1RST05JQ1MKLTAwMjA4MSAgICAgKGJhc2UgMTYpCQlUSVRBTiBFTEVDVFJPTklDUwotCQkJCTMwMzMgU0NJRU5DRSBQQVJLIFJPQUQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTgyICAgKGhleCkJCU9ORUFDIENPUlBPUkFUSU9OCi0wMDIwODIgICAgIChiYXNlIDE2KQkJT05FQUMgQ09SUE9SQVRJT04KLQkJCQkyNzk0NCBOLiBCUkFETEVZIFJELgotCQkJCUxJQkVSVFlWSUxMRSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtODMgICAoaGV4KQkJUFJFU1RJQ09NIElOQ09SUE9SQVRFRAotMDAyMDgzICAgICAoYmFzZSAxNikJCVBSRVNUSUNPTSBJTkNPUlBPUkFURUQKLQkJCQkzMjc1LCAxU1QgU1RSRUVULCBTVEUuICMxCi0JCQkJU1QtSFVCRVJUIChRVUVCRUMpCi0JCQkJQ0FOQURBIEozWSA4WTYKLQkJCQlDQU5BREEKLQotMDAtMjAtODQgICAoaGV4KQkJT0NFIFBSSU5USU5HIFNZU1RFTVMsIEdNQkgKLTAwMjA4NCAgICAgKGJhc2UgMTYpCQlPQ0UgUFJJTlRJTkcgU1lTVEVNUywgR01CSAotCQkJCVNJRU1FTlNBTExFRSAyCi0JCQkJRC04NTU4NiBQT0lORwotCQkJCUdFUk1BTlkKLQotMDAtMjAtODUgICAoaGV4KQkJRVhJREUgRUxFQ1RST05JQ1MKLTAwMjA4NSAgICAgKGJhc2UgMTYpCQlFWElERSBFTEVDVFJPTklDUwotCQkJCVAuTy4gQk9YICA1ODE4OQotCQkJCVJBTEVJR0ggTkMgMjc2NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTg2ICAgKGhleCkJCU1JQ1JPVEVDSCBFTEVDVFJPTklDUyBMSU1JVEVECi0wMDIwODYgICAgIChiYXNlIDE2KQkJTUlDUk9URUNIIEVMRUNUUk9OSUNTIExJTUlURUQKLQkJCQlMQU5DQVNURVIgUk9BRAotCQkJCUNSRVNTRVggSU5EVVNUUklBTCBFU1RBVEUgSElHSCBXWUNPTUJFLAotCQkJCUtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC04NyAgIChoZXgpCQlNRU1PVEVDLCBJTkMuCi0wMDIwODcgICAgIChiYXNlIDE2KQkJTUVNT1RFQywgSU5DLgotCQkJCTc3NTUgSGVucmktQm91cmFzc2EKLQkJCQlNT05UUkVBTCwgUVVFQkVDICAgSDRTIDFQNwotCQkJCUNBTkFEQQotCi0wMC0yMC04OCAgIChoZXgpCQlHTE9CQUwgVklMTEFHRSBDT01NVU5JQ0FUSU9OCi0wMDIwODggICAgIChiYXNlIDE2KQkJR0xPQkFMIFZJTExBR0UgQ09NTVVOSUNBVElPTgotCQkJCTExNDQgRUFTVCBBUlFVRVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC04OSAgIChoZXgpCQlUM1BMVVMgTkVUV09SS0lORywgSU5DLgotMDAyMDg5ICAgICAoYmFzZSAxNikJCVQzUExVUyBORVRXT1JLSU5HLCBJTkMuCi0JCQkJMjg0MCBTQU4gVE9NQVMgRVhQUkVTU1dBWQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC04QSAgIChoZXgpCQlTT05JWCBDT01NVU5JQ0FUSU9OUywgTFRELgotMDAyMDhBICAgICAoYmFzZSAxNikJCVNPTklYIENPTU1VTklDQVRJT05TLCBMVEQuCi0JCQkJV0lMS0lOU09OIFJPQUQKLQkJCQlDSVJFTkNFU1RFUiwgR0xPUy4gR0w3IDFZVAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC04QiAgIChoZXgpCQlMQVBJUyBURUNITk9MT0dJRVMsIElOQy4KLTAwMjA4QiAgICAgKGJhc2UgMTYpCQlMQVBJUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMTAwIE1BUklOQSBWSUxMQUdFIFBLV1kKLQkJCQlTVUlURSAjMTAwCi0JCQkJQUxBTUVEQSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOEMgICAoaGV4KQkJR0FMQVhZIE5FVFdPUktTLCBJTkMuCi0wMDIwOEMgICAgIChiYXNlIDE2KQkJR0FMQVhZIE5FVFdPUktTLCBJTkMuCi0JCQkJOTM0OCBERSBTT1RPIEFWRU5VRQotCQkJCUNIQVRTV09SVEggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLThEICAgKGhleCkJCUNNRCBURUNITk9MT0dZCi0wMDIwOEQgICAgIChiYXNlIDE2KQkJQ01EIFRFQ0hOT0xPR1kKLQkJCQkxIFZBTkRFUkJJTFQKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLThFICAgKGhleCkJCUNIRVZJTiBTT0ZUV0FSRSBFTkcuIExURC4KLTAwMjA4RSAgICAgKGJhc2UgMTYpCQlDSEVWSU4gU09GVFdBUkUgRU5HLiBMVEQuCi0JCQkJMiBCT1JPVUdIR0FURSwgT1RMRVksCi0JCQkJTEVFRFMsIFdFU1QsIFlPUktTSElSRQotCQkJCUxTMjEgM0FMIFVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtOEYgICAoaGV4KQkJRUNJIFRFTEVDT00gTFRELgotMDAyMDhGICAgICAoYmFzZSAxNikJCUVDSSBURUxFQ09NIExURC4KLQkJCQlIQVNJVklNIFNULiAzMCwKLQkJCQlQRVRBQ0gtVElLVkEgNDkxMzMgIAotCQkJCUlTUkFFTAotCi0wMC0yMC05MCAgIChoZXgpCQlBRFZBTkNFRCBDT01QUkVTU0lPTiBURUNITk9MT0dZLCBJTkMuCi0wMDIwOTAgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgQ09NUFJFU1NJT04gVEVDSE5PTE9HWSwgSU5DLgotCQkJCTgyMCBGTFlOTiBST0FECi0JCQkJQ0FNQVJJTExPIENBIDkzMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC05MSAgIChoZXgpCQlKMTI1LCBOQVRJT05BTCBTRUNVUklUWSBBR0VOQ1kKLTAwMjA5MSAgICAgKGJhc2UgMTYpCQlKMTI1LCBOQVRJT05BTCBTRUNVUklUWSBBR0VOQ1kKLQkJCQk5ODAwIFNBVkFHRSBST0FECi0JCQkJRlQuIE1FQURFIE1EIDIwNzU1LTYwMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTkyICAgKGhleCkJCUNIRVNTIEVOR0lORUVSSU5HIEIuVi4KLTAwMjA5MiAgICAgKGJhc2UgMTYpCQlDSEVTUyBFTkdJTkVFUklORyBCLlYuCi0JCQkJTklFVVdFIEdSQUNIVCA3NAotCQkJCTIwMTEgTkogSEFBUkxFTQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIwLTkzICAgKGhleCkJCUxBTkRJTkdTIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMjA5MyAgICAgKGJhc2UgMTYpCQlMQU5ESU5HUyBURUNITk9MT0dZIENPUlAuCi0JCQkJMTYzIFdBVEVSIFNUUkVFVAotCQkJCU1FUlJJTEwgQkxPQ0sgVU5JVCBBMgotCQkJCUVYRVRFUiBOSCAwMzgzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOTQgICAoaGV4KQkJQ1VCSVggQ09SUE9SQVRJT04KLTAwMjA5NCAgICAgKGJhc2UgMTYpCQlDVUJJWCBDT1JQT1JBVElPTgotCQkJCTI4MDAgTE9DS0hFRUQgV0FZCi0JCQkJQ0FSU09OIENJVFkgTlYgODk3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTk1ICAgKGhleCkJCVJJVkEgRUxFQ1RST05JQ1MKLTAwMjA5NSAgICAgKGJhc2UgMTYpCQlSSVZBIEVMRUNUUk9OSUNTCi0JCQkJVU5JVCAxNywgQkFSUlNGT0xEIFJELgotCQkJCVdJTkdBVEVTIElORFVTVFJJQUwgUEFSSyBXRVNUSE9VR0hUT04sIEIKLQkJCQlMQU5DQVNISVJFIEVOR0xBTkQgQkw1IDNYVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIwLTk2ICAgKGhleCkJCUludmVuc3lzCi0wMDIwOTYgICAgIChiYXNlIDE2KQkJSW52ZW5zeXMKLQkJCQkxMzU0IENsaWZmb3JkIEF2ZW51ZQotCQkJCUxvdmVzIFBhcmsgSUwgNjExMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTk3ICAgKGhleCkJCUFQUExJRUQgU0lHTkFMIFRFQ0hOT0xPR1kKLTAwMjA5NyAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIFNJR05BTCBURUNITk9MT0dZCi0JCQkJMTYwIFNPQlJBTlRFIFdBWQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOTggICAoaGV4KQkJSEVDVFJPTklDIEFCCi0wMDIwOTggICAgIChiYXNlIDE2KQkJSEVDVFJPTklDIEFCCi0JCQkJQk9YIDMwMDIKLQkJCQlTLTc1MDAzIFVQUFNBTEEgIAotCQkJCVNXRURFTgotCi0wMC0yMC05OSAgIChoZXgpCQlCT04gRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDIwOTkgICAgIChiYXNlIDE2KQkJQk9OIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTQtNCAyOCwgTUlaVURPLUNITwotCQkJCUFNQUdBU0FLSSwgNjYxCi0JCQkJSFlPR08gSFlPR08gSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0yMC05QSAgIChoZXgpCQlUSEUgM0RPIENPTVBBTlkKLTAwMjA5QSAgICAgKGJhc2UgMTYpCQlUSEUgM0RPIENPTVBBTlkKLQkJCQk2MDAgR0FMVkVTVE9OIERSSVZFCi0JCQkJUkVEV09PRCBDSVRZIENBIDk0MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC05QiAgIChoZXgpCQlFUlNBVCBFTEVDVFJPTklDIEdNQkgKLTAwMjA5QiAgICAgKGJhc2UgMTYpCQlFUlNBVCBFTEVDVFJPTklDIEdNQkgKLQkJCQlIQUFSQkVSR1NUUi4gNjEKLQkJCQlELTk5MDk3IEVSRlVSVAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTlDICAgKGhleCkJCVBSSU1BUlkgQUNDRVNTIENPUlAuCi0wMDIwOUMgICAgIChiYXNlIDE2KQkJUFJJTUFSWSBBQ0NFU1MgQ09SUC4KLQkJCQkxMDA4MCBDQVJST0xMIENBTllPTiBSRAotCQkJCVNBTiBESUVHTyBDQSA5MjEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOUQgICAoaGV4KQkJTElQUEVSVCBBVVRPTUFUSU9OU1RFQ0hOSUsKLTAwMjA5RCAgICAgKGJhc2UgMTYpCQlMSVBQRVJUIEFVVE9NQVRJT05TVEVDSE5JSwotCQkJCUQtNjgxNjUgTUFOTkhFSU0KLQkJCQlLUkFQUE1VRUhMU1RSLiAzNAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTlFICAgKGhleCkJCUJST1dOJ1MgT1BFUkFUSU5HIFNZU1RFTSBTRVJWSUNFUywgTFRELgotMDAyMDlFICAgICAoYmFzZSAxNikJCUJST1dOJ1MgT1BFUkFUSU5HIFNZU1RFTSBTRVJWSUNFUywgTFRELgotCQkJCVNULiBBR05FUyBIT1VTRSwgQ1JFU1NXRUxMIFBLLAotCQkJCUJMQUNLSEVBVEgsIExvbmRvbiBTRTMgOVJEICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC05RiAgIChoZXgpCQlNRVJDVVJZIENPTVBVVEVSIFNZU1RFTVMsIElOQy4KLTAwMjA5RiAgICAgKGJhc2UgMTYpCQlNRVJDVVJZIENPTVBVVEVSIFNZU1RFTVMsIElOQy4KLQkJCQkxOTkgUklWRVJORUNLIFJPQUQKLQkJCQlDSEVMTVNGT1JEIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1BMCAgIChoZXgpCQlPQSBMQUJPUkFUT1JZIENPLiwgTFRELgotMDAyMEEwICAgICAoYmFzZSAxNikJCU9BIExBQk9SQVRPUlkgQ08uLCBMVEQuCi0JCQkJMjI4IEtBTUlNQUNISVlBIEtBTUFLVVJBCi0JCQkJS0FOQUdBV0EgMjQ3Ci0JCQkJSkFQQU4KLQotMDAtMjAtQTEgICAoaGV4KQkJRE9WQVRST04KLTAwMjBBMSAgICAgKGJhc2UgMTYpCQlET1ZBVFJPTgotCQkJCVBST0RVQ1RTIERJVklTSU9OCi0JCQkJMTE5OCBCT1NUT04gQVZFTlVFCi0JCQkJTE9OR01PTlQgQ08gODA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUEyICAgKGhleCkJCUdBTENPTSBORVRXT1JLSU5HIExURC4KLTAwMjBBMiAgICAgKGJhc2UgMTYpCQlHQUxDT00gTkVUV09SS0lORyBMVEQuCi0JCQkJUC5PLiBCT1ggMTU2OAotCQkJCVJBTUFUIEhBU0hBUk9OIDQ3MTEzICAKLQkJCQlJU1JBRUwKLQotMDAtMjAtQTMgICAoaGV4KQkJRElWSUNPTSBJTkMuCi0wMDIwQTMgICAgIChiYXNlIDE2KQkJRElWSUNPTSBJTkMuCi0JCQkJNTgwIENPVFRPTldPT0QgRFJJVkUKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQTQgICAoaGV4KQkJTVVMVElQT0lOVCBORVRXT1JLUwotMDAyMEE0ICAgICAoYmFzZSAxNikJCU1VTFRJUE9JTlQgTkVUV09SS1MKLQkJCQkxOSBEQVZJUyBEUklWRQotCQkJCUJFTE1PTlQgQ0EgOTQwMDItMzAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQTUgICAoaGV4KQkJQVBJIEVOR0lORUVSSU5HCi0wMDIwQTUgICAgIChiYXNlIDE2KQkJQVBJIEVOR0lORUVSSU5HCi0JCQkJMjY4OSBQT1BMQVJXT09EIFdBWQotCQkJCVNBTiBKT1NFIENBIDk1MTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1BNiAgIChoZXgpCQlQcm94aW0gV2lyZWxlc3MKLTAwMjBBNiAgICAgKGJhc2UgMTYpCQlQcm94aW0gV2lyZWxlc3MKLQkJCQkxNTYxIEJ1Y2tleWUgRHJpdmUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQTcgICAoaGV4KQkJUEFJUkdBSU4gVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIwQTcgICAgIChiYXNlIDE2KQkJUEFJUkdBSU4gVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTQ0MDIgRlJBTktMSU4gQVZFTlVFCi0JCQkJVFVTVElOIENBIDkyNjgwLTcwMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUE4ICAgKGhleCkJCVNBU1QgVEVDSE5PTE9HWSBDT1JQLgotMDAyMEE4ICAgICAoYmFzZSAxNikJCVNBU1QgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTIyNSBPTEQgTkVXIEJSVU5TV0lDSyBSRC4KLQkJCQlTVUlURSAjMTAxCi0JCQkJUElTQ0FUQVdBWSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQTkgICAoaGV4KQkJV0hJVEUgSE9SU0UgSU5EVVNUUklBTAotMDAyMEE5ICAgICAoYmFzZSAxNikJCVdISVRFIEhPUlNFIElORFVTVFJJQUwKLQkJCQk0Ri4gTk8uMTYsIEFMTEVZIDU2LCBMQU5FIDE4MQotCQkJCVNFQy40LCBDSFVORyBIU0lBTyBFQVNUIFJPQUQgVEFJUEVJCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC1BQSAgIChoZXgpCQlESUdJTUVESUEgVklTSU9OIExURC4KLTAwMjBBQSAgICAgKGJhc2UgMTYpCQlESUdJTUVESUEgVklTSU9OIExURC4KLQkJCQlDUkFXTEVZIENPVVJUCi0JCQkJV0lOQ0hFU1RFUiwgSEFNUFNISVJFCi0JCQkJU08yMSAyUUEgVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC1BQiAgIChoZXgpCQlNSUNSTyBJTkRVU1RSSUVTIENPUlAuCi0wMDIwQUIgICAgIChiYXNlIDE2KQkJTUlDUk8gSU5EVVNUUklFUyBDT1JQLgotCQkJCTgzOTkgR1JFRU4gTUVBRE9XUyBEUi4gTi4KLQkJCQlXRVNURVJWSUxMRSBPSCA0MzA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQUMgICAoaGV4KQkJSU5URVJGTEVYIERBVEVOU1lTVEVNRSBHTUJICi0wMDIwQUMgICAgIChiYXNlIDE2KQkJSU5URVJGTEVYIERBVEVOU1lTVEVNRSBHTUJICi0JCQkJR1JPQldJRVNFTlNUUkFTRSAyNAotCQkJCVctNzIwMSBEVVJDSEhBVVNFTgotCQkJCVdFU1RHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0yMC1BRCAgIChoZXgpCQlMSU5RIFNZU1RFTVMKLTAwMjBBRCAgICAgKGJhc2UgMTYpCQlMSU5RIFNZU1RFTVMKLQkJCQlQLk8uIEJPWCAxMTA0MAotCQkJCVRVQ1NPTiBBWiA4NTczNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQUUgICAoaGV4KQkJT1JORVQgREFUQSBDT01NVU5JQ0FUSU9OIFRFQ0guCi0wMDIwQUUgICAgIChiYXNlIDE2KQkJT1JORVQgREFUQSBDT01NVU5JQ0FUSU9OIFRFQ0guCi0JCQkJUC5PLiBCT1ggMzIzCi0JCQkJQ0FSTUlFTCAgMjAxMDAKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMjAtQUYgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDAyMEFGICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUIwICAgKGhleCkJCUdBVEVXQVkgREVWSUNFUywgSU5DLgotMDAyMEIwICAgICAoYmFzZSAxNikJCUdBVEVXQVkgREVWSUNFUywgSU5DLgotCQkJCTI0NDAgU1RBTldFTEwgRFJJVkUKLQkJCQlDT05DT1JEIENBIDk0NTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1CMSAgIChoZXgpCQlDT01URUNIIFJFU0VBUkNIIElOQy4KLTAwMjBCMSAgICAgKGJhc2UgMTYpCQlDT01URUNIIFJFU0VBUkNIIElOQy4KLQkJCQkyNDI3MSBUQUhPRQotCQkJCUxBR1VOQSBOSUdVRUwgQ0EgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUIyICAgKGhleCkJCUdLRCBHZXNlbGxzY2hhZnQgRnVyIEtvbW11bmlrYXRpb24gVW5kIERhdGVudGVjaG5pawotMDAyMEIyICAgICAoYmFzZSAxNikJCUdLRCBHZXNlbGxzY2hhZnQgRnVyIEtvbW11bmlrYXRpb24gVW5kIERhdGVudGVjaG5pawotCQkJCQotCQkJCVNBQVJCVVJHRVIgUklORyAxMC0xMgotCQkJCTY4MjI5IE1BTk5IRUlNICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLUIzICAgKGhleCkJCVNDTFRFQyBDT01NVU5JQ0FUSU9OUyBTWVNURU1TCi0wMDIwQjMgICAgIChiYXNlIDE2KQkJU0NMVEVDIENPTU1VTklDQVRJT05TIFNZU1RFTVMKLQkJCQkzIEFQT0xMTyBQTEFDRQotCQkJCUxBTkUgQ09WRSBOLlMuVy4gMjA2NgotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC0yMC1CNCAgIChoZXgpCQlURVJNQSBFTEVLVFJPTklLIEFTCi0wMDIwQjQgICAgIChiYXNlIDE2KQkJVEVSTUEgRUxFS1RST05JSyBBUwotCQkJCUhPVk1BUktFTiA0LAotCQkJCURLLTg1MjAgTFlTVFJVUCAgCi0JCQkJREVOTUFSSwotCi0wMC0yMC1CNSAgIChoZXgpCQlZQVNLQVdBIEVMRUNUUklDIENPUlBPUkFUSU9OCi0wMDIwQjUgICAgIChiYXNlIDE2KQkJWUFTS0FXQSBFTEVDVFJJQyBDT1JQT1JBVElPTgotCQkJCTItMSBLVVJPU0FLSS1TSElST0lTSEkKLQkJCQlZQUhBVEFOSVNISS1LVSBLSVRBS1lVU0hVLUNJVFkKLQkJCQlKQVBBTgotCi0wMC0yMC1CNiAgIChoZXgpCQlBR0lMRSBORVRXT1JLUywgSU5DLgotMDAyMEI2ICAgICAoYmFzZSAxNikJCUFHSUxFIE5FVFdPUktTLCBJTkMuCi0JCQkJMjAwIEJBS0VSIEFWRU5VRQotCQkJCUNPTkNPUkQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUI3ICAgKGhleCkJCU5BTUFRVUEgQ09NUFVURVJXQVJFCi0wMDIwQjcgICAgIChiYXNlIDE2KQkJTkFNQVFVQSBDT01QVVRFUldBUkUKLQkJCQlQLk8uIEJPWCA3MTU1Ci0JCQkJU1RFTExFTiBCT1NDSCA3NTk5Ci0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTIwLUI4ICAgKGhleCkJCVBSSU1FIE9QVElPTiwgSU5DLgotMDAyMEI4ICAgICAoYmFzZSAxNikJCVBSSU1FIE9QVElPTiwgSU5DLgotCQkJCTIzNDEgVy4gMjA1VEggU1RSRUVUICMxMTYKLQkJCQlUT1JSQU5DRSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQjkgICAoaGV4KQkJTUVUUklDT00sIElOQy4KLTAwMjBCOSAgICAgKGJhc2UgMTYpCQlNRVRSSUNPTSwgSU5DLgotCQkJCTk4MCBVTklWRVJTSVRZIEFWRU5VRQotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQkEgICAoaGV4KQkJQ0VOVEVSIEZPUiBISUdIIFBFUkZPUk1BTkNFCi0wMDIwQkEgICAgIChiYXNlIDE2KQkJQ0VOVEVSIEZPUiBISUdIIFBFUkZPUk1BTkNFCi0JCQkJQ09NUFVUSU5HIE9GIFdQSQotCQkJCVNVSVRFICMxNzAgMjkzIEJPU1RPTiBQT1NUIFJPQUQgVy4KLQkJCQlNQVJMQk9STyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQkIgICAoaGV4KQkJWkFYIENPUlBPUkFUSU9OCi0wMDIwQkIgICAgIChiYXNlIDE2KQkJWkFYIENPUlBPUkFUSU9OCi0JCQkJMjAtMTIgT0dJS1VCTyA1LUNIT01FCi0JCQkJU1VHSU5BTUktS1UgVE9LWU8KLQkJCQkxNjcgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0yMC1CQyAgIChoZXgpCQlMb25nIFJlYWNoIE5ldHdvcmtzIFB0eSBMdGQKLTAwMjBCQyAgICAgKGJhc2UgMTYpCQlMb25nIFJlYWNoIE5ldHdvcmtzIFB0eSBMdGQKLQkJCQlVbml0IDMsIDExOC0xMjIgQm93ZGVuIFN0Ci0JCQkJTUVBRE9XQkFOSyBOU1cgMjExNCAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLUJEICAgKGhleCkJCU5JT0JSQVJBIFIgJiBEIENPUlBPUkFUSU9OCi0wMDIwQkQgICAgIChiYXNlIDE2KQkJTklPQlJBUkEgUiAmIEQgQ09SUE9SQVRJT04KLQkJCQlQTyBCT1ggMzQxOAotCQkJCUpPUExJTiBNTyA2NDgwMy0zNDE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1CRSAgIChoZXgpCQlMQU4gQUNDRVNTIENPUlAuCi0wMDIwQkUgICAgIChiYXNlIDE2KQkJTEFOIEFDQ0VTUyBDT1JQLgotCQkJCTI3MzAgTU9OVEVSRVkgU1RSRUVULCBTVEUuIzEwMgotCQkJCVRPUlJBTkNFIENBIDkwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1CRiAgIChoZXgpCQlBRUhSIFRFU1QgU1lTVEVNUwotMDAyMEJGICAgICAoYmFzZSAxNikJCUFFSFIgVEVTVCBTWVNURU1TCi0JCQkJMTY2NyBQTFlNT1VUSCBTVFJFRVQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DMCAgIChoZXgpCQlQVUxTRSBFTEVDVFJPTklDUywgSU5DLgotMDAyMEMwICAgICAoYmFzZSAxNikJCVBVTFNFIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJNTcwNiBGUkVERVJJQ0sgQVZFTlVFCi0JCQkJUk9DS1ZJTExFIE1EIDIwODUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DMSAgIChoZXgpCQlTQVhBLCBJbmMuCi0wMDIwQzEgICAgIChiYXNlIDE2KQkJU0FYQSwgSW5jLgotCQkJCU5CRiBQbGF0aW51bSBUb3dlciAxLTE3LTMgU2hpcm9rYW5lCi0JCQkJTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwOC04MDUwCi0JCQkJSkFQQU4KLQotMDAtMjAtQzIgICAoaGV4KQkJVEVYQVMgTUVNT1JZIFNZU1RFTVMsIElOQy4KLTAwMjBDMiAgICAgKGJhc2UgMTYpCQlURVhBUyBNRU1PUlkgU1lTVEVNUywgSU5DLgotCQkJCTExMjAwIFdFU1RIRUlNRVIgUkQtU1RFIzEwMDAKLQkJCQlIT1VTVE9OIFRYIDc3MDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DMyAgIChoZXgpCQlDT1VOVEVSIFNPTFVUSU9OUyBMVEQuCi0wMDIwQzMgICAgIChiYXNlIDE2KQkJQ09VTlRFUiBTT0xVVElPTlMgTFRELgotCQkJCTI2MyBIRUFHRSBST0FECi0JCQkJUklQTEVZLCBERVJCWVMgREU1IDNHSCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtQzQgICAoaGV4KQkJSU5FVCxJTkMuCi0wMDIwQzQgICAgIChiYXNlIDE2KQkJSU5FVCxJTkMuCi0JCQkJODAxIEUuIENBTVBCRUxMLVNURS4jMzMwCi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQzUgICAoaGV4KQkJRUFHTEUgVEVDSE5PTE9HWQotMDAyMEM1ICAgICAoYmFzZSAxNikJCUVBR0xFIFRFQ0hOT0xPR1kKLQkJCQkyODY1IFpBTktFUiBST0FECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUM2ICAgKGhleCkJCU5FQ1RFQwotMDAyMEM2ICAgICAoYmFzZSAxNikJCU5FQ1RFQwotCQkJCVJBTUEgVkkgUk9BRAotCQkJCVJBSlRIRVZJIEJBTkdLT0sgIDEwNDAwCi0JCQkJVEhBSUxBTkQKLQkJCQlUSEFJTEFORAotCi0wMC0yMC1DNyAgIChoZXgpCQlBS0FJIFByb2Zlc3Npb25hbCBNLkkuIENvcnAuCi0wMDIwQzcgICAgIChiYXNlIDE2KQkJQUtBSSBQcm9mZXNzaW9uYWwgTS5JLiBDb3JwLgotCQkJCTEtMywgSGlyYW51bWEgMS1DaG9tZSwKLQkJCQlOaXNoaS1rdSwgWW9rb2hhbWEsCi0JCQkJMjIwLTAwMjMgCi0JCQkJSkFQQU4KLQotMDAtMjAtQzggICAoaGV4KQkJTEFSU0NPTSBJTkNPUlBPUkFURUQKLTAwMjBDOCAgICAgKGJhc2UgMTYpCQlMQVJTQ09NIElOQ09SUE9SQVRFRAotCQkJCTQ2MDAgUEFUUklDSyBIRU5SWSBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DOSAgIChoZXgpCQlWSUNUUk9OIEJWCi0wMDIwQzkgICAgIChiYXNlIDE2KQkJVklDVFJPTiBCVgotCQkJCVBPQiAzMQotCQkJCU5MIDk3MDAgQUEgR1JPTklOR0VOCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjAtQ0EgICAoaGV4KQkJRElHSVRBTCBPQ0VBTgotMDAyMENBICAgICAoYmFzZSAxNikJCURJR0lUQUwgT0NFQU4KLQkJCQkxMTIwNiBUSE9NUFNPTiBBVkVOVUUKLQkJCQlMRU5FWEEgS1MgNjYyMTktMjMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQ0IgICAoaGV4KQkJUFJFVEVDIEVMRUNUUk9OSUNTIENPUlAuCi0wMDIwQ0IgICAgIChiYXNlIDE2KQkJUFJFVEVDIEVMRUNUUk9OSUNTIENPUlAuCi0JCQkJMzk4OTkgQkFMRU5USU5FIERSLgotCQkJCVNVSVRFICMzMDUKLQkJCQlORVdBUksgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUNDICAgKGhleCkJCURJR0lUQUwgU0VSVklDRVMsIExURC4KLTAwMjBDQyAgICAgKGJhc2UgMTYpCQlESUdJVEFMIFNFUlZJQ0VTLCBMVEQuCi0JCQkJOSBXQVlURSBTVFJFRVQKLQkJCQlDT1NIQU0gSEFNUFNISVJFCi0JCQkJRU5HTEFORCBQTzYgM0JTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtQ0QgICAoaGV4KQkJSFlCUklEIE5FVFdPUktTLCBJTkMuCi0wMDIwQ0QgICAgIChiYXNlIDE2KQkJSFlCUklEIE5FVFdPUktTLCBJTkMuCi0JCQkJMTAyMDEgQlVCQiBST0FECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0LTQxNjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUNFICAgKGhleCkJCUxPR0lDQUwgREVTSUdOIEdST1VQLCBJTkMuCi0wMDIwQ0UgICAgIChiYXNlIDE2KQkJTE9HSUNBTCBERVNJR04gR1JPVVAsIElOQy4KLQkJCQk2MzAxIENIQVBFTCBISUxMIFJPQUQKLQkJCQlSQUxFSUdIIE5DIDI3NjA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DRiAgIChoZXgpCQlURVNUICYgTUVBU1VSRU1FTlQgU1lTVEVNUyBJTkMKLTAwMjBDRiAgICAgKGJhc2UgMTYpCQlURVNUICYgTUVBU1VSRU1FTlQgU1lTVEVNUyBJTkMKLQkJCQkyMDQ1IFNJVEtBIENPVVJUCi0JCQkJTE9WRUxBTkQgQ08gODA1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUQwICAgKGhleCkJCVZFUlNBTFlOWCBDT1JQT1JBVElPTgotMDAyMEQwICAgICAoYmFzZSAxNikJCVZFUlNBTFlOWCBDT1JQT1JBVElPTgotCQkJCTg5NTAgQ0FSTEVZIENJUkNMRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRDEgICAoaGV4KQkJTUlDUk9DT01QVVRFUiBTWVNURU1TIChNKSBTRE4uCi0wMDIwRDEgICAgIChiYXNlIDE2KQkJTUlDUk9DT01QVVRFUiBTWVNURU1TIChNKSBTRE4uCi0JCQkJMjMtMjUsIEpBTEFOIEpFSkFLQSBUVUpVSAotCQkJCVRBTUFOIE1BTFVSSSwgQ0hFUkFTIDU1MTAwIEtVQUxBIExVTVBVUgotCQkJCU1BTEFZU0lBCi0JCQkJTUFMQVlTSUEKLQotMDAtMjAtRDIgICAoaGV4KQkJUkFEIERBVEEgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwMjBEMiAgICAgKGJhc2UgMTYpCQlSQUQgREFUQSBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCTggSEFORUNIT1NIRVQgU1RSRUVUCi0JCQkJVEVMLUFWSVYgIDY5NzEwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTIwLUQzICAgKGhleCkJCU9TVCAoT1VFU1QgU1RBTkRBUkQgVEVMRU1BVElRVQotMDAyMEQzICAgICAoYmFzZSAxNikJCU9TVCAoT1VFU1QgU1RBTkRBUkQgVEVMRU1BVElRVQotCQkJCVJVRSBEVSBCQVMgVklMTEFHRQotCQkJCUJQIDE1OCwgWi5JLiBTVUQtRVNUIDM1NTE1IENFU1NPTi1TRVZJR04KLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMjAtRDQgICAoaGV4KQkJQ0FCTEVUUk9OIC0gWkVJVFRORVQgSU5DLgotMDAyMEQ0ICAgICAoYmFzZSAxNikJCUNBQkxFVFJPTiAtIFpFSVRUTkVUIElOQy4KLQkJCQkzNSBJTkRVU1RSSUFMIFdBWQotCQkJCVAuTy4gQk9YIDUwMDUKLQkJCQlST0hFU1RFUiBOSCAwMzg2Ni01MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1ENSAgIChoZXgpCQlWSVBBIEdNQkgKLTAwMjBENSAgICAgKGJhc2UgMTYpCQlWSVBBIEdNQkgKLQkJCQlXRVRURVJLUkVVWiAyNwotCQkJCUQtOTEwNTggRVJMQU5HRU4KLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLUQ2ICAgKGhleCkJCUJSRUVaRUNPTQotMDAyMEQ2ICAgICAoYmFzZSAxNikJCUJSRUVaRUNPTQotCQkJCUFUSURJTSBURUNITk9MT0dJQ0FMIFBLLUJMREcuMwotCQkJCVRFTC1BVklWICA2MTEzMQotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0yMC1ENyAgIChoZXgpCQlKQVBBTiBNSU5JQ09NUFVURVIgU1lTVEVNUyBDTy4sIEx0ZC4KLTAwMjBENyAgICAgKGJhc2UgMTYpCQlKQVBBTiBNSU5JQ09NUFVURVIgU1lTVEVNUyBDTy4sIEx0ZC4KLQkJCQkzLTMzLTE4IFRBS0FJRE9ISUdBU0hJCi0JCQkJU1VHSU5BTUktS1UKLQkJCQlUT0tZTyAxNjggIAotCQkJCUpBUEFOCi0KLTAwLTIwLUQ4ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyMEQ4ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTQ0MDEgR3JlYXQgQW1lcmljYSBQa3d5LgotCQkJCVNhbnRhIENsYXJhIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1EOSAgIChoZXgpCQlQQU5BU09OSUMgVEVDSE5PTE9HSUVTLCBJTkMuL01JRUNPLVVTCi0wMDIwRDkgICAgIChiYXNlIDE2KQkJUEFOQVNPTklDIFRFQ0hOT0xPR0lFUywgSU5DLi9NSUVDTy1VUwotCQkJCTE3MDMgTi4gUkFOREFMTCBSRC4KLQkJCQlFTEdJTiBJTCA2MDEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtREEgICAoaGV4KQkJQWxjYXRlbCBOb3J0aCBBbWVyaWNhIEVTRAotMDAyMERBICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTm9ydGggQW1lcmljYSBFU0QKLQkJCQkyNjgwMSBXZXN0IEFnb3VyYSBSb2FkCi0JCQkJQ0FMQUJBU0FTIENBIDkxMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1EQiAgIChoZXgpCQlYTkVUIFRFQ0hOT0xPR1ksIElOQy4KLTAwMjBEQiAgICAgKGJhc2UgMTYpCQlYTkVUIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk0MjYgUy4gSElMTFZJRVcgRFJJVkUKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtREMgICAoaGV4KQkJREVOU0lUUk9OIFRBSVdBTiBMVEQuCi0wMDIwREMgICAgIChiYXNlIDE2KQkJREVOU0lUUk9OIFRBSVdBTiBMVEQuCi0JCQkJS1lPV0EgTkFOQUJBTktBTiA1RgotCQkJCTEtMTEtNSBPTU9SSS1LSVRBIE9UQS1LVSwgIFRPS1lPIDE0MwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMjAtREQgICAoaGV4KQkJQ3liZXJ0ZWMgUHR5IEx0ZAotMDAyMEREICAgICAoYmFzZSAxNikJCUN5YmVydGVjIFB0eSBMdGQKLQkJCQlVbml0IDExLCA0MSBIaWdnaW5ib3RoYW0gUm9hZAotCQkJCUdsYWRlc3ZpbGxlIE5TVyAyMTExCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLURFICAgKGhleCkJCUpBUEFOIERJR0lUQUwgTEFCT1JBVCdZIENPLkxURAotMDAyMERFICAgICAoYmFzZSAxNikJCUpBUEFOIERJR0lUQUwgTEFCT1JBVCdZIENPLkxURAotCQkJCUpETCBLQVdBU0FLSSBSICYgRCBDRU5URVIKLQkJCQkxMC0xIE1JTkFNSS1LVVJPS0FXQSBBU0FPLUtVLCBLQVdBU0tBS0ktCi0JCQkJS0FOQUdBV0EtS0VOICAyMTUKLQkJCQlKQVBBTgotCi0wMC0yMC1ERiAgIChoZXgpCQlLWU9TQU4gRUxFQ1RSSUMgTUZHLiBDTy4sIExURC4KLTAwMjBERiAgICAgKGJhc2UgMTYpCQlLWU9TQU4gRUxFQ1RSSUMgTUZHLiBDTy4sIExURC4KLQkJCQkyLTI5LCBIRUlBTi1DSE8sIFRTVVJVTUktS1UKLQkJCQlZT0tPSEFNQSwgMjMwCi0JCQkJSkFQQU4KLQotMDAtMjAtRTAgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDIwRTAgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlLgotCQkJCVN1bm55dmFsZS4gQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUUxICAgKGhleCkJCUFMQU1BUiBFTEVDVFJPTklDUwotMDAyMEUxICAgICAoYmFzZSAxNikJCUFMQU1BUiBFTEVDVFJPTklDUwotCQkJCTQ4OSBESVZJU0lPTiBTVFJFRVQKLQkJCQlDQU1QQkVMTCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRTIgICAoaGV4KQkJSU5GT1JNQVRJT04gUkVTT1VSQ0UgRU5HSU5FRVJJTkcKLTAwMjBFMiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBSRVNPVVJDRSBFTkdJTkVFUklORwotCQkJCTgwMjkgQ09SUE9SQVRFIERSSVZFCi0JCQkJQkFMVElNT1JFIE1EIDIxMjM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FMyAgIChoZXgpCQlNQ0QgS0VOQ09NIENPUlBPUkFUSU9OCi0wMDIwRTMgICAgIChiYXNlIDE2KQkJTUNEIEtFTkNPTSBDT1JQT1JBVElPTgotCQkJCTIwOTUwIENBU1RMRSBST0NLIFJPQUQKLQkJCQlMQUdVTkEgQkVBQ0ggQ0EgOTI2NTEtMTExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRTQgICAoaGV4KQkJSFNJTkcgVEVDSCBFTlRFUlBSSVNFIENPLiwgTFRECi0wMDIwRTQgICAgIChiYXNlIDE2KQkJSFNJTkcgVEVDSCBFTlRFUlBSSVNFIENPLiwgTFRECi0JCQkJTk8uIDIsIExBTkUgMTI4LCBTRUMuIDIKLQkJCQlDSFVORyBTSEFOIE4uIFJELgotCQkJCVRFSVBFSSwgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtRTUgICAoaGV4KQkJQVBFWCBEQVRBLCBJTkMuCi0wMDIwRTUgICAgIChiYXNlIDE2KQkJQVBFWCBEQVRBLCBJTkMuCi0JCQkJNjYyNCBPV0VOUyBEUklWRQotCQkJCVBMRUFTQU5UT04gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUU2ICAgKGhleCkJCUxJREtPUElORyBNQUNISU5FIFRPT0xTIEFCCi0wMDIwRTYgICAgIChiYXNlIDE2KQkJTElES09QSU5HIE1BQ0hJTkUgVE9PTFMgQUIKLQkJCQlCT1ggOTEwCi0JCQkJNTMxIDE5IExJREtPUElORwotCQkJCVNXRURFTgotCi0wMC0yMC1FNyAgIChoZXgpCQlCJlcgTlVDTEVBUiBTRVJWSUNFIENPTVBBTlkKLTAwMjBFNyAgICAgKGJhc2UgMTYpCQlCJlcgTlVDTEVBUiBTRVJWSUNFIENPTVBBTlkKLQkJCQlTUEVDSUFMIFBST0RVQ1RTICYgSU5URUcuU1ZDUy4KLQkJCQkxNTUgTUlMTCBSSURHRSBST0FECi0JCQkJTFlOQ0hCVVJHIFZBIDI0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FOCAgIChoZXgpCQlEQVRBVFJFSyBDT1JQT1JBVElPTgotMDAyMEU4ICAgICAoYmFzZSAxNikJCURBVEFUUkVLIENPUlBPUkFUSU9OCi0JCQkJNDUwNSBXWUxBTkQgRFJJVkUKLQkJCQlFTEtIQVJUIElOIDQ2NTE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FOSAgIChoZXgpCQlEQU5URUwKLTAwMjBFOSAgICAgKGJhc2UgMTYpCQlEQU5URUwKLQkJCQlQLk8uIEJPWCA1NTAxMwotCQkJCTI5OTEgTk9SVEggQVJHWUxFIEFWRS4KLQkJCQlGUkVTTk8gQ0EgOTM3MjctMTM4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRUEgICAoaGV4KQkJRUZGSUNJRU5UIE5FVFdPUktTLCBJTkMuCi0wMDIwRUEgICAgIChiYXNlIDE2KQkJRUZGSUNJRU5UIE5FVFdPUktTLCBJTkMuCi0JCQkJNDIwMSBTUFJJTkcgVkFMTEVZIFJPQUQKLQkJCQlTVUlURSAjMTIwMAotCQkJCURBTExBUyBUWCA3NTI0NC0zNjY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FQiAgIChoZXgpCQlDSU5DSU5OQVRJIE1JQ1JPV0FWRSwgSU5DLgotMDAyMEVCICAgICAoYmFzZSAxNikJCUNJTkNJTk5BVEkgTUlDUk9XQVZFLCBJTkMuCi0JCQkJT05FIE1JQ1JPV0FWRSBQTEFaQQotCQkJCUNJTkNJTk5BVEkgT0ggNDUyNDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUVDICAgKGhleCkJCVRFQ0hXQVJFIFNZU1RFTVMgQ09SUC4KLTAwMjBFQyAgICAgKGJhc2UgMTYpCQlURUNIV0FSRSBTWVNURU1TIENPUlAuCi0JCQkJIzEwMCAtIDEyMDUxIEhPUlNFU0hPRSBXQVkKLQkJCQlSSUNITU9ORCwgQi5DLiBDQU5BREEKLQkJCQlWN0EgNFY0Ci0JCQkJQ0FOQURBCi0KLTAwLTIwLUVEICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLiwgTFRELgotMDAyMEVEICAgICAoYmFzZSAxNikJCUdJR0EtQllURSBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTM2NSBDTE9WRVJMRUFGCi0JCQkJQkFMRFdJTiBQQVJLIENBIDkxNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FRSAgIChoZXgpCQlHVEVDSCBDT1JQT1JBVElPTgotMDAyMEVFICAgICAoYmFzZSAxNikJCUdURUNIIENPUlBPUkFUSU9OCi0JCQkJNTUgVEVDSE5PTE9HWSBXQVkKLQkJCQlXRVNUIEdSRUVOV0lDSCBSSSAwMjgxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRUYgICAoaGV4KQkJVVNDIENPUlBPUkFUSU9OCi0wMDIwRUYgICAgIChiYXNlIDE2KQkJVVNDIENPUlBPUkFUSU9OCi0JCQkJNi00LCBPU0FLSSAxLUNIT01FCi0JCQkJU0hJTkFHQVdBLUtVIFRPS1lPLAotCQkJCTE0MSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLUYwICAgKGhleCkJCVVOSVZFUlNBTCBNSUNST0VMRUNUUk9OSUNTIENPLgotMDAyMEYwICAgICAoYmFzZSAxNikJCVVOSVZFUlNBTCBNSUNST0VMRUNUUk9OSUNTIENPLgotCQkJCTMsIDI3VEggUkQuLCBUQUlDSFVORyBJTkQuUEFSSwotCQkJCVRBSUNIVU4KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtRjEgICAoaGV4KQkJQUxUT1MgSU5ESUEgTElNSVRFRAotMDAyMEYxICAgICAoYmFzZSAxNikJCUFMVE9TIElORElBIExJTUlURUQKLQkJCQlELTYwLCBPS0xITEEgSU5EVVNUUklBTAotCQkJCUFSRUEsIFBIQVNFIDEgTkVXIERFTEhJIC0xMTAwMjAKLQkJCQlJTkRJQQotCQkJCUlORElBCi0KLTAwLTIwLUYyICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbiAKLTAwMjBGMiAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24gCi0JCQkJNTAwIE9yYWNsZSBQYXJrd2F5Ci0JCQkJUmVkd29vZCBTaG9yZXMgQ0EgOTUwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUYzICAgKGhleCkJCVJBWU5FVCBDT1JQT1JBVElPTgotMDAyMEYzICAgICAoYmFzZSAxNikJCVJBWU5FVCBDT1JQT1JBVElPTgotCQkJCTE1NSBDT05TVElUVVRJT04gRFJJVkUKLQkJCQlNRU5MTyBQQVJLIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1GNCAgIChoZXgpCQlTUEVDVFJJWCBDT1JQT1JBVElPTgotMDAyMEY0ICAgICAoYmFzZSAxNikJCVNQRUNUUklYIENPUlBPUkFUSU9OCi0JCQkJMTA2IFdJTE1PVCBST0FELCBTVUlURSAyNTAKLQkJCQlERUVSRklFTEQgSUwgNjAwMTUtNTE1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRjUgICAoaGV4KQkJUEFOREFURUwgQUcKLTAwMjBGNSAgICAgKGJhc2UgMTYpCQlQQU5EQVRFTCBBRwotCQkJCUZBU0FORU5XRUcgMjUKLQkJCQlELTIyMTQ1ICBIQU1CVVJHCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMjAtRjYgICAoaGV4KQkJTkVUIFRFSyAgQU5EIEtBUkxORVQsIElOQy4KLTAwMjBGNiAgICAgKGJhc2UgMTYpCQlORVQgVEVLICBBTkQgS0FSTE5FVCwgSU5DLgotCQkJCUxJVFRMRSBTVFJFQU1TCi0JCQkJVEhFIEFCQk9UU0JST09LLCBCT1VSTkUgRU5EIEJVQ0tTLCBTTDggNQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtRjcgICAoaGV4KQkJQ1lCRVJEQVRBIENPUlBPUkFUSU9OCi0wMDIwRjcgICAgIChiYXNlIDE2KQkJQ1lCRVJEQVRBIENPUlBPUkFUSU9OCi0JCQkJMyBKdXN0aW4gQ291cnQKLQkJCQlNT05URVJFWSBDQSA5Mzk0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRjggICAoaGV4KQkJQ0FSUkVSQSBDT01QVVRFUlMsIElOQy4KLTAwMjBGOCAgICAgKGJhc2UgMTYpCQlDQVJSRVJBIENPTVBVVEVSUywgSU5DLgotCQkJCTIzMTgxIFZFUkRVR08gRFJJVkUtU1RFLiMxMDVBCi0JCQkJTEFHVU5BIEhJTExTIENBIDkyNjUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1GOSAgIChoZXgpCQlQQVJBTElOSyBORVRXT1JLUywgSU5DLgotMDAyMEY5ICAgICAoYmFzZSAxNikJCVBBUkFMSU5LIE5FVFdPUktTLCBJTkMuCi0JCQkJNEYsIE5PLiAyNywgU0VDLjMsIFBBVEVIIFJELgotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC1GQSAgIChoZXgpCQlHREUgU1lTVEVNUywgSU5DLgotMDAyMEZBICAgICAoYmFzZSAxNikJCUdERSBTWVNURU1TLCBJTkMuCi0JCQkJUC5PLiBCT1ggODU0NjggLSBCTERHLiM2MQotCQkJCVNBTiBESUVHTyBDQSA5MjE4Ni01NDY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1GQiAgIChoZXgpCQlPQ1RFTCBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDAyMEZCICAgICAoYmFzZSAxNikJCU9DVEVMIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJMTAwMSBNVVJQSFkgUkFOQ0ggUkQKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRkMgICAoaGV4KQkJTUFUUk9YCi0wMDIwRkMgICAgIChiYXNlIDE2KQkJTUFUUk9YCi0JCQkJMTA1NSBTVC4gUkVHSVMsCi0JCQkJRE9SVkFMLCBRVUVCRUMgIEg5UC0yVDQgIAotCQkJCUNBTkFEQQotCi0wMC0yMC1GRCAgIChoZXgpCQlJVFYgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIwRkQgICAgIChiYXNlIDE2KQkJSVRWIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTY4MDAgT1dFTlNNT1VUSCBBVkUuICAjMjMwCi0JCQkJQ0FOT0dBIFBBUksgQ0EgOTEzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUZFICAgKGhleCkJCVRPUFdBUkUgSU5DLiAvIEdSQU5EIENPTVBVVEVSCi0wMDIwRkUgICAgIChiYXNlIDE2KQkJVE9QV0FSRSBJTkMuIC8gR1JBTkQgQ09NUFVURVIKLQkJCQlDT1JQT1JBVElPTgotCQkJCUIxLCBOTy4gOSwgTEFORSA1MCBTRUNUSU9OIDMsIE5BTiBLQU5HIFIKLQkJCQlUQUlQRUkgIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtRkYgICAoaGV4KQkJU1lNTUVUUklDQUwgVEVDSE5PTE9HSUVTCi0wMDIwRkYgICAgIChiYXNlIDE2KQkJU1lNTUVUUklDQUwgVEVDSE5PTE9HSUVTCi0JCQkJNTAwIEhVTlRNQVIgUEFSSyBEUklWRQotCQkJCUhFUk5ET04gVkEgMjIwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTAwICAgKGhleCkJCUdlbVRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyMTAwICAgICAoYmFzZSAxNikJCUdlbVRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLjEgSmVuIEFpIFJvYWQsIEhzaW5jaHUgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUh1a291LCBIc2luY2h1IDMwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtMDEgICAoaGV4KQkJQXBsaWNhY2lvbmVzIEVsZWN0cm9uaWNhcyBRdWFzYXIgKEFFUSkKLTAwMjEwMSAgICAgKGJhc2UgMTYpCQlBcGxpY2FjaW9uZXMgRWxlY3Ryb25pY2FzIFF1YXNhciAoQUVRKQotCQkJCUMvUmV5IFBhc3RvciA0MAotCQkJCVBvbGlnb25vIEluZHVzdHJpYWwgQnV0YXJxdWUKLQkJCQlMZWdhbmVzIE1hZHJpZCAyODkxNAotCQkJCVNQQUlOCi0KLTAwLTIxLTAyICAgKGhleCkJCVVwZGF0ZUxvZ2ljIEluYy4KLTAwMjEwMiAgICAgKGJhc2UgMTYpCQlVcGRhdGVMb2dpYyBJbmMuCi0JCQkJMiBXaWxsb3cgU3RyZWV0LCBTdWl0ZSAxMDEKLQkJCQlTb3V0aGJvcm91Z2ggTUEgMDE3NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTAzICAgKGhleCkJCUdISSBFbGVjdHJvbmljcywgTExDCi0wMDIxMDMgICAgIChiYXNlIDE2KQkJR0hJIEVsZWN0cm9uaWNzLCBMTEMKLQkJCQkzNTU1NSBHYXJmaWVsZCBSZC4KLQkJCQlTdWl0ZSA0QgotCQkJCUNsaW50b24gVG93bnNoaXAgTUkgNDgwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTA0ICAgKGhleCkJCUdpZ2FzZXQgQ29tbXVuaWNhdGlvbnMgR21iSAotMDAyMTA0ICAgICAoYmFzZSAxNikJCUdpZ2FzZXQgQ29tbXVuaWNhdGlvbnMgR21iSAotCQkJCUZyYW5rZW5zdHJhc3NlIDIKLQkJCQk0NjM5NSBCb2Nob2x0IAotCQkJCUdFUk1BTlkKLQotMDAtMjEtMDUgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTAwMjEwNSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTcwMSBFLiBNaWRkbGVmaWVsZCBSZC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0wNiAgIChoZXgpCQlSSU0gVGVzdGluZyBTZXJ2aWNlcwotMDAyMTA2ICAgICAoYmFzZSAxNikJCVJJTSBUZXN0aW5nIFNlcnZpY2VzCi0JCQkJNDQwIFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT04gTjJMIDVSOQotCQkJCUNBTkFEQQotCi0wMC0yMS0wNyAgIChoZXgpCQlTZW93b25pbnRlY2ggQ28gTHRkLgotMDAyMTA3ICAgICAoYmFzZSAxNikJCVNlb3dvbmludGVjaCBDbyBMdGQuCi0JCQkJNjg5LTQ3IEdldW1qZW9uZ2RvbmcKLQkJCQlHdW5wb3NpIEt5b3VuZ2tpZG8gNDM2LTg2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS0wOCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyMTA4ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yMS0wOSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyMTA5ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yMS0wQSAgIChoZXgpCQlieWQ6c2lnbiBDb3Jwb3JhdGlvbgotMDAyMTBBICAgICAoYmFzZSAxNikJCWJ5ZDpzaWduIENvcnBvcmF0aW9uCi0JCQkJMi0xMC02IFRzdWtpamkKLQkJCQlCUFMgU1FVQVJFIDJGCi0JCQkJQ2h1by1rdSBUb2t5byAxMDQtMDA0NQotCQkJCUpBUEFOCi0KLTAwLTIxLTBCICAgKGhleCkJCUdFTUlOSSBUUkFaRSBSRklEIFBWVC4gTFRELgotMDAyMTBCICAgICAoYmFzZSAxNikJCUdFTUlOSSBUUkFaRSBSRklEIFBWVC4gTFRELgotCQkJCTEsIERSLiBSQU5HQSBST0FECi0JCQkJQUxXQVJQRVQKLQkJCQlDSEVOTkFJIFRBTUlMTkFEVSA2MDAwMTgKLQkJCQlJTkRJQQotCi0wMC0yMS0wQyAgIChoZXgpCQlDeW10ZWMgU3lzdGVtcywgSW5jLgotMDAyMTBDICAgICAoYmFzZSAxNikJCUN5bXRlYyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTA4NDUgT2xpdmUgQm91bGV2ZWFyZAotCQkJCVN1aXRlIDMwNgotCQkJCVN0IExvdWlzIE1PIDYzMTQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0wRCAgIChoZXgpCQlTQU1TSU4gSU5OT1RFQwotMDAyMTBEICAgICAoYmFzZSAxNikJCVNBTVNJTiBJTk5PVEVDCi0JCQkJU0FSSVlVTkRPTkcgSUxTQU5ET05HLUdVCi0JCQkJMjUyLTIzCi0JCQkJR09ZQU5HIEtZVU5HR0kgNDExNTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTBFICAgKGhleCkJCU9ycGFrIFN5c3RlbXMgTC5ULkQuCi0wMDIxMEUgICAgIChiYXNlIDE2KQkJT3JwYWsgU3lzdGVtcyBMLlQuRC4KLQkJCQkzMSBMZWNoaSBTdAotCQkJCUJuZWkgLSBCcmFrICA1MTExNAotCQkJCUlTUkFFTAotCi0wMC0yMS0wRiAgIChoZXgpCQlDZXJuaXVtIENvcnAKLTAwMjEwRiAgICAgKGJhc2UgMTYpCQlDZXJuaXVtIENvcnAKLQkJCQkxOTQzIElzYWFjIE5ld3RvbiBTcQotCQkJCVN1aXRlIDIwMAotCQkJCVJlc3RvbiBWQSAyMDE5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMTAgICAoaGV4KQkJQ2xlYXJib3ggU3lzdGVtcwotMDAyMTEwICAgICAoYmFzZSAxNikJCUNsZWFyYm94IFN5c3RlbXMKLQkJCQlVbml0IDExLCAxMi0xNCBCZWF1bW9udCBSb2FkCi0JCQkJTXQgS3VyaW5nLUdhaSBOU1cgMjA4MAotCQkJCUFVU1RSQUxJQQotCi0wMC0yMS0xMSAgIChoZXgpCQlVbmlwaG9uZSBJbmMuCi0wMDIxMTEgICAgIChiYXNlIDE2KQkJVW5pcGhvbmUgSW5jLgotCQkJCTc5NSBNYWluIFN0cmVldAotCQkJCUhhbGYgTW9vbiBCYXkgQ0EgOTQwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTEyICAgKGhleCkJCVdJU0NPTSBTWVNURU0gQ08uLExURAotMDAyMTEyICAgICAoYmFzZSAxNikJCVdJU0NPTSBTWVNURU0gQ08uLExURAotCQkJCTEwMCBKaWFuZ2p1biBSb2FkLEppYW5nbmluZywKLQkJCQlOYW5qaW5nICAyMTExMDAKLQkJCQlDSElOQQotCi0wMC0yMS0xMyAgIChoZXgpCQlQYWR0ZWMgUy9BCi0wMDIxMTMgICAgIChiYXNlIDE2KQkJUGFkdGVjIFMvQQotCQkJCVJvYWQgQ2FtcGluYXMgTW9naS1NaXJpbSBrbSAxMTgsNQotCQkJCUNhbXBpbmFzIFPjbyBQYXVsbyAxMzA4Ni05MDIKLQkJCQlCUkFaSUwKLQotMDAtMjEtMTQgICAoaGV4KQkJSHlsYWIgVGVjaG5vbG9neSBJbmMuCi0wMDIxMTQgICAgIChiYXNlIDE2KQkJSHlsYWIgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTVGLTIuLE5vLjg3MixKaG9uZ2poZW5nIFJkLgotCQkJCUpob25naGUgQ2l0eSwgVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtMTUgICAoaGV4KQkJUEhZV0UgU3lzdGVtZSBHbWJIICYgQ28uIEtHCi0wMDIxMTUgICAgIChiYXNlIDE2KQkJUEhZV0UgU3lzdGVtZSBHbWJIICYgQ28uIEtHCi0JCQkJUm9iZXJ0LUJvc2NoLUJyZWl0ZSAxMAotCQkJCUdvZXR0aW5nZW4gTmllZGVyc2FjaHNlbiAzNzA3OQotCQkJCUdFUk1BTlkKLQotMDAtMjEtMTYgICAoaGV4KQkJVHJhbnNjb24gRWxlY3Ryb25pYyBTeXN0ZW1zLCBzcG9sLiBzIHIuIG8uCi0wMDIxMTYgICAgIChiYXNlIDE2KQkJVHJhbnNjb24gRWxlY3Ryb25pYyBTeXN0ZW1zLCBzcG9sLiBzIHIuIG8uCi0JCQkJS3ZhcGlsb3ZhIDIxMzMKLQkJCQlGcnlkZWstTWlzdGVrICA3MzgwMgotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTIxLTE3ICAgKGhleCkJCVRlbGxvcmQKLTAwMjExNyAgICAgKGJhc2UgMTYpCQlUZWxsb3JkCi0JCQkJR3Vyb2d1IEd1cm9kb25nIDE3MC01IFdvb2xpbSBlLUJpeiBDZW50ZXIgNzA5Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMTggICAoaGV4KQkJQXRoZW5hIFRlY2gsIEluYy4KLTAwMjExOCAgICAgKGJhc2UgMTYpCQlBdGhlbmEgVGVjaCwgSW5jLgotCQkJCTM3MjEgTWFjaW50b3NoIERyCi0JCQkJVmludCBIaWxsIFRlY2ggUGFyawotCQkJCVdhcnJlbnRvbiBWQSAyMDE4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMTkgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvLU1lY2hhbmljcwotMDAyMTE5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryby1NZWNoYW5pY3MKLQkJCQkzMTQsIE1ldGFuIDMgZG9uZwotCQkJCVN1d29uIEt5dW5nLWdpIGRvIDQ0My03NDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMUEgICAoaGV4KQkJTEluVGVjaCBDb3Jwb3JhdGlvbgotMDAyMTFBICAgICAoYmFzZSAxNikJCUxJblRlY2ggQ29ycG9yYXRpb24KLQkJCQlLcmFzbm9rYXphcm1lbm5heWEgc3QuLCAxMgotCQkJCU1vc2NvdyAgMTExMjUwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTIxLTFCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjExQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0xQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIxMUMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMUQgICAoaGV4KQkJRGF0YWxpbmUgQUIKLTAwMjExRCAgICAgKGJhc2UgMTYpCQlEYXRhbGluZSBBQgotCQkJCUthdHJpbmVkYWxzZ2F0YW4gNTMKLQkJCQlCT1LFUyAgUy01MDQ1MQotCQkJCVNXRURFTgotCi0wMC0yMS0xRSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMTFFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMUYgICAoaGV4KQkJU0hJTlNVTkcgREVMVEFURUNIIENPLixMVEQuCi0wMDIxMUYgICAgIChiYXNlIDE2KQkJU0hJTlNVTkcgREVMVEFURUNIIENPLixMVEQuCi0JCQkJNDQtMTAKLQkJCQlVTkdOQU0tRE9ORwotCQkJCUNIQU5HV09OLUNJVFkgS1lVTkdOQU0tRE8gNjQxLTI5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS0yMCAgIChoZXgpCQlTZXF1ZWwgVGVjaG5vbG9naWVzCi0wMDIxMjAgICAgIChiYXNlIDE2KQkJU2VxdWVsIFRlY2hub2xvZ2llcwotCQkJCTI5NTEgQ2xldmVsYW5kIEF2ZSBOCi0JCQkJUm9zZXZpbGxlIE1OIDU1MTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0yMSAgIChoZXgpCQlWUm1hZ2ljIEdtYkgKLTAwMjEyMSAgICAgKGJhc2UgMTYpCQlWUm1hZ2ljIEdtYkgKLQkJCQlBdWd1c3RhYW5sYWdlIDMyCi0JCQkJTWFubmhlaW0gQlcgNjgxNjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLTIyICAgKGhleCkJCUNoaXAtcHJvIEx0ZC4KLTAwMjEyMiAgICAgKGJhc2UgMTYpCQlDaGlwLXBybyBMdGQuCi0JCQkJNUYuLTQsIE5vLjYzLCBTaXdlaSBSZC4sIE5vcnRoIERpc3RyaWN0LAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtMjMgICAoaGV4KQkJQWVyb3NhdCBBdmlvbmljcwotMDAyMTIzICAgICAoYmFzZSAxNikJCUFlcm9zYXQgQXZpb25pY3MKLQkJCQk2MiBTdGF0ZSBSZC4KLQkJCQkxMDFBIFN1aXRlIDJCCi0JCQkJQW1oZXJzdCBOSCAwMzAzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMjQgICAoaGV4KQkJT3B0b3MgUGxjCi0wMDIxMjQgICAgIChiYXNlIDE2KQkJT3B0b3MgUGxjCi0JCQkJUXVlZW5zZmVycnkgSG91c2UKLQkJCQlDYXJuZWdpZSBCdXNpbmVzcyBDYW1wdXMKLQkJCQlEdW5mZXJtbGluZSBGaWZlIEtZMTEgOEdSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjEtMjUgICAoaGV4KQkJS1VLIEpFIFRPTkcgU0hJTiBDby4sTFRECi0wMDIxMjUgICAgIChiYXNlIDE2KQkJS1VLIEpFIFRPTkcgU0hJTiBDby4sTFRECi0JCQkJNDc2LTMKLQkJCQlKYWtKZW9uLURvbmcsCi0JCQkJSW5jaGVvbiBLd2FuZ3lvdWstU2kgNDA3LTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS0yNiAgIChoZXgpCQlTaGVuemhlbiBUb3JjaCBFcXVpcG1lbnQgQ28uLCBMdGQuCi0wMDIxMjYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gVG9yY2ggRXF1aXBtZW50IENvLiwgTHRkLgotCQkJCUZsb29yIDUsIEJsb2NrIDMsIExpbWluZyBJbmR1c3RyaWFsIERpc3RyaWN0LCBaaG9uZ3NoYW55dWFuIFJvYWQsIE5hbnNoYW4sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1MgotCQkJCUNISU5BCi0KLTAwLTIxLTI3ICAgKGhleCkJCVRQLUxJTksgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjEyNyAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJU291dGggQnVpbGRpbmcsIE5vLjUgS2V5dWFuIFJvYWQsIENlbnRyYWwgWm9uZSwKLQkJCQlTY2llbmNlICYgVGVjaG5vbG9neSBQYXJrLE5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjEtMjggICAoaGV4KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0wMDIxMjggICAgIChiYXNlIDE2KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0JCQkJMTcgTmV0d29yayBDaXJjbGUKLQkJCQlCdWlsZGluZyAxNywgVU1QSzE3LTEzMQotCQkJCU1lbmxvIFBhcmsgQ0EgOTUwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTI5ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAyMTI5ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMkEgICAoaGV4KQkJQXVkaW92b3ggQ29ycG9yYXRpb24KLTAwMjEyQSAgICAgKGJhc2UgMTYpCQlBdWRpb3ZveCBDb3Jwb3JhdGlvbgotCQkJCTE1MCBNYXJjdXMgQmx2ZAotCQkJCUhhdXBwYXVnZSBOWSAxMTc4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMkIgICAoaGV4KQkJTVNBIEF1ZXIKLTAwMjEyQiAgICAgKGJhc2UgMTYpCQlNU0EgQXVlcgotCQkJCVRoaWVtYW5uc3RyLiAxCi0JCQkJQmVybGluICAxMjA1OQotCQkJCUdFUk1BTlkKLQotMDAtMjEtMkMgICAoaGV4KQkJU2VtSW5kaWEgU3lzdGVtIFByaXZhdGUgTGltaXRlZAotMDAyMTJDICAgICAoYmFzZSAxNikJCVNlbUluZGlhIFN5c3RlbSBQcml2YXRlIExpbWl0ZWQKLQkJCQlOby4gMTEwNi85LCBBLk0gSW5kdXN0cmlhbCBFc3RhdGUsIEdhcnZlYmhhdmlwYWx5YQotCQkJCTd0aCBtaWxlLCBIb3N1ciBSb2FkCi0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAgMDY4Ci0JCQkJSU5ESUEKLQotMDAtMjEtMkQgICAoaGV4KQkJU0NJTU9MRVggQ09SUE9SQVRJT04KLTAwMjEyRCAgICAgKGJhc2UgMTYpCQlTQ0lNT0xFWCBDT1JQT1JBVElPTgotCQkJCTI0MzAsIFNhaWpvdSwgU2hvd2EtY2hvCi0JCQkJTmFrYWtvbWEtZ3VuLCBZYW1hbmFzaGkgIDQwOS0zODY2Ci0JCQkJSkFQQU4KLQotMDAtMjEtMkUgICAoaGV4KQkJZHJlc2Rlbi1lbGVrdHJvbmlrCi0wMDIxMkUgICAgIChiYXNlIDE2KQkJZHJlc2Rlbi1lbGVrdHJvbmlrCi0JCQkJR2xhc2V3YWxkdHN0cmHfZSAyMgotCQkJCURyZXNkZW4gU2F4b255IEQtMDEyNzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLTJGICAgKGhleCkJCVBob2ViZSBNaWNybyBJbmMuCi0wMDIxMkYgICAgIChiYXNlIDE2KQkJUGhvZWJlIE1pY3JvIEluYy4KLQkJCQk0NzYwNiBLYXRvIFJkCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMzAgICAoaGV4KQkJS2VpY28gSGlnaHRlY2ggSW5jLgotMDAyMTMwICAgICAoYmFzZSAxNikJCUtlaWNvIEhpZ2h0ZWNoIEluYy4KLQkJCQlBY2UgdHdpbiB0b3dlciBJLCAxMnRoIEZsLgotCQkJCTIxMi0xLCBHdXJvLWRvbmcsIGd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS0zMSAgIChoZXgpCQlCbHlua2UgSW5jLgotMDAyMTMxICAgICAoYmFzZSAxNikJCUJseW5rZSBJbmMuCi0JCQkJMTMzIFJpY2htb25kIFN0LiBXZXN0Ci0JCQkJU3VpdGUgNjAwCi0JCQkJVG9yb250byBPbnRhcmlvIE01SCAyTDMKLQkJCQlDQU5BREEKLQotMDAtMjEtMzIgICAoaGV4KQkJTWFzdGVyY2xvY2ssIEluYy4KLTAwMjEzMiAgICAgKGJhc2UgMTYpCQlNYXN0ZXJjbG9jaywgSW5jLgotCQkJCTI0ODQgV2VzdCBDbGF5IFN0LgotCQkJCVN0LiBDaGFybGVzIE1PIDYzMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zMyAgIChoZXgpCQlCdWlsZGluZyBCLCBJbmMKLTAwMjEzMyAgICAgKGJhc2UgMTYpCQlCdWlsZGluZyBCLCBJbmMKLQkJCQkxMDAwIE5XIDY1dGggU3RyZWV0LCBTdWl0ZSAzMDAKLQkJCQlGdC4gTGF1ZGVyZGFsZSBGTCAzMzMwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMzQgICAoaGV4KQkJQnJhbmR5d2luZSBDb21tdW5pY2F0aW9ucwotMDAyMTM0ICAgICAoYmFzZSAxNikJCUJyYW5keXdpbmUgQ29tbXVuaWNhdGlvbnMKLQkJCQkxMTUzIFdhcm5lciBBdmUKLQkJCQlUdXN0aW4gQ0EgOTI3ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTM1ICAgKGhleCkJCUFMQ0FURUwtTFVDRU5UCi0wMDIxMzUgICAgIChiYXNlIDE2KQkJQUxDQVRFTC1MVUNFTlQKLQkJCQlSYW1pcmV6IGRlIFByYWRvIDUKLQkJCQlNYWRyaWQgIDI4MDQ1Ci0JCQkJU1BBSU4KLQotMDAtMjEtMzYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjEzNiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVUyBIaWdod2F5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zNyAgIChoZXgpCQlCYXkgQ29udHJvbHMsIExMQwotMDAyMTM3ICAgICAoYmFzZSAxNikJCUJheSBDb250cm9scywgTExDCi0JCQkJNjUyOCBXZWF0aGVyZmllbGQgQ3QKLQkJCQlNYXVtZWUgT0ggNDM1MzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTM4ICAgKGhleCkJCUNlcGhlaWQKLTAwMjEzOCAgICAgKGJhc2UgMTYpCQlDZXBoZWlkCi0JCQkJOTA0IENhcmliYmVhbiBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMzkgICAoaGV4KQkJRXNjaGVybG9naWMgSW5jLgotMDAyMTM5ICAgICAoYmFzZSAxNikJCUVzY2hlcmxvZ2ljIEluYy4KLQkJCQkxNDgxIFJvc2ViYW5rIFJkLgotCQkJCVBpY2tlcmluZyBPbnRhcmlvIEwxViAxUDMKLQkJCQlDQU5BREEKLQotMDAtMjEtM0EgICAoaGV4KQkJV2luY2hlc3RlciBTeXN0ZW1zIEluYy4KLTAwMjEzQSAgICAgKGJhc2UgMTYpCQlXaW5jaGVzdGVyIFN5c3RlbXMgSW5jLgotCQkJCTEwMSBCaWxsZXJpY2EgQXZlbnVlCi0JCQkJQmxkZyA1IHN1aXRlIDEwMQotCQkJCUJpbGxlcmljYSwgTUEgMDE4NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTNCICAgKGhleCkJCUJlcmtzaGlyZSBQcm9kdWN0cywgSW5jCi0wMDIxM0IgICAgIChiYXNlIDE2KQkJQmVya3NoaXJlIFByb2R1Y3RzLCBJbmMKLQkJCQlQTyBCb3ggMjgxOQotCQkJCUN1bW1pbmcgR0EgMzAwMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTNDICAgKGhleCkJCUFsaXBoQ29tCi0wMDIxM0MgICAgIChiYXNlIDE2KQkJQWxpcGhDb20KLQkJCQkxNTAgRXhlY3V0aXZlIFBhcmsgQmx2ZAotCQkJCVN1aXRlIDQ1NTAKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zRCAgIChoZXgpCQlDZXJtZXRlayBNaWNyb2VsZWN0cm9uaWNzLCBJbmMuCi0wMDIxM0QgICAgIChiYXNlIDE2KQkJQ2VybWV0ZWsgTWljcm9lbGVjdHJvbmljcywgSW5jLgotCQkJCTM3NCBUdXJxdW9pc2UgU3RyZWV0Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTNFICAgKGhleCkJCVRvbVRvbQotMDAyMTNFICAgICAoYmFzZSAxNikJCVRvbVRvbQotCQkJCU9vc3RlcmRva3NzdHJhYXQgMTE0Ci0JCQkJQW1zdGVyZGFtIE5vcnRoIEhvbGxhbmQgMTAxMSBESwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIxLTNGICAgKGhleCkJCUEtVGVhbSBUZWNobm9sb2d5IEx0ZC4KLTAwMjEzRiAgICAgKGJhc2UgMTYpCQlBLVRlYW0gVGVjaG5vbG9neSBMdGQuCi0JCQkJUm0uIDE2MDgsIDE2L0YuLCBNZXRyb3BvbGUgU3F1YXJlLAotCQkJCTIgT24gWWl1IFN0LiwgU2hhdGluLAotCQkJCU5ldyBUZXJyaXRvcmllcywgIAotCQkJCUhPTkcgS09ORwotCi0wMC0yMS00MCAgIChoZXgpCQlFTiBUZWNobm9sb2dpZXMgSW5jLgotMDAyMTQwICAgICAoYmFzZSAxNikJCUVOIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJR2V1bWJvayBCbGRnLiA5RiwgQmFuZC15aS1kb25nIDQ1LTIsIFNvbmdwYS1ndQotCQkJCVNlb3VsICAxMzgtODI4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTQxICAgKGhleCkJCVJBRExJVkUKLTAwMjE0MSAgICAgKGJhc2UgMTYpCQlSQURMSVZFCi0JCQkJNCBIYW5lY2hvc2hldCBTdC4KLQkJCQlUZWwgQXZpdiAgNjk3MTAKLQkJCQlJU1JBRUwKLQotMDAtMjEtNDIgICAoaGV4KQkJQWR2YW5jZWQgQ29udHJvbCBTeXN0ZW1zIGRvbwotMDAyMTQyICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIENvbnRyb2wgU3lzdGVtcyBkb28KLQkJCQlCdWxldmFyIFpvcmFuYSBEamluZGppY2EgOGEKLQkJCQlCZWxncmFkZSBTZXJiaWEgMTEwNzAKLQotMDAtMjEtNDMgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjE0MyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTQ0ICAgKGhleCkJCVNTIFRlbGVjb21zCi0wMDIxNDQgICAgIChiYXNlIDE2KQkJU1MgVGVsZWNvbXMKLQkJCQkyMyBCb3RoYSBBdmVudWUKLQkJCQlMeXR0ZWx0b24gTWFub3IKLQkJCQlDZW50dXJpb24gR2F1dGVuZyAwMTQwCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTIxLTQ1ICAgKGhleCkJCVNlbXB0aWFuIFRlY2hub2xvZ2llcyBMdGQuCi0wMDIxNDUgICAgIChiYXNlIDE2KQkJU2VtcHRpYW4gVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQlOby4gODA5LCAgVG93ZXIgQiwgU2hpIEppIEtlIE1hbwotCQkJCU5vLiA2NiBSZC4gWmhvbmdndWFuIEN1biBEb25nCi0JCQkJQmVpamluZyAgMTAwMTkwCi0JCQkJQ0hJTkEKLQotMDAtMjEtNDYgICAoaGV4KQkJU0NJIFRlY2hub2xvZ3kKLTAwMjE0NiAgICAgKGJhc2UgMTYpCQlTQ0kgVGVjaG5vbG9neQotCQkJCVBPQiAxMDAwCi0JCQkJSHVudHN2aWxsZSBBTCAzNTgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNDcgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDIxNDcgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjEtNDggICAoaGV4KQkJS2FjbyBTb2xhciBLb3JlYQotMDAyMTQ4ICAgICAoYmFzZSAxNikJCUthY28gU29sYXIgS29yZWEKLQkJCQlDaHVuZy13b24ta3UgU2FuZy1kZWEtd29uLWRvbmcgMzMzLTEKLQkJCQlTb25nbmFtIEt5dW5nLWtpZG8gNDYyLTgwNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS00OSAgIChoZXgpCQlDaGluYSBEYWhlbmcgR3JvdXAgLEluYy4KLTAwMjE0OSAgICAgKGJhc2UgMTYpCQlDaGluYSBEYWhlbmcgR3JvdXAgLEluYy4KLQkJCQkxMkYgRGFoZW5nIFNjaWVuY2UgJiBUZWNobm9sb2d5IFRvd2VyICxOTy4zIFN1emhvdSBTdHIuCi0JCQkJQmVpamluZyAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMjEtNEEgICAoaGV4KQkJUGl4ZWwgVmVsb2NpdHksIEluYwotMDAyMTRBICAgICAoYmFzZSAxNikJCVBpeGVsIFZlbG9jaXR5LCBJbmMKLQkJCQkzOTE3IFJlc2VhcmNoIFBhcmsgRHIuCi0JCQkJU3VpdGUgQjcKLQkJCQlBbm4gQXJib3IgTUkgNDgxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTRCICAgKGhleCkJCVNoZW56aGVuIEhBTVAgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAyMTRCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEhBTVAgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLjMwMi0zMDMsMyBGbG9vcixEaXN0cmljdCBBLFRDTCBUb3dlcixHYW94aW4gTmFuIFlpIFJvYWQsTmFuU2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yMS00QyAgIChoZXgpCQlTQU1TVU5HIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDAyMTRDICAgICAoYmFzZSAxNikJCVNBTVNVTkcgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJNDE2LCBNRVRBTi0zRE9ORywKLQkJCQlZT1VOR1RPTkctR1UKLQkJCQlTVVdPTiBLWVVOR0tJLURPIDQ0Mi03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtNEQgICAoaGV4KQkJR3Vhbmd6aG91IFNreXRvbmUgVHJhbnNtaXNzaW9uIFRlY2hub2xvZ3kgQ29tLiBMdGQuCi0wMDIxNEQgICAgIChiYXNlIDE2KQkJR3Vhbmd6aG91IFNreXRvbmUgVHJhbnNtaXNzaW9uIFRlY2hub2xvZ3kgQ29tLiBMdGQuCi0JCQkJMy9GIFdlc3QsIEJsb2NrIDQsIEh1YW5nemhvdQotCQkJCUluZHVzdHJpYWwgUGFyaywgQ2hlYmVpIFJvYWQuCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2NjAKLQkJCQlDSElOQQotCi0wMC0yMS00RSAgIChoZXgpCQlHUyBZdWFzYSBQb3dlciBTdXBwbHkgTHRkLgotMDAyMTRFICAgICAoYmFzZSAxNikJCUdTIFl1YXNhIFBvd2VyIFN1cHBseSBMdGQuCi0JCQkJMSwgSW5vYmFuYmEtY2hvLCBOaXNoaW5vc2hvLCBLaXNzaG9pbiwgTWluYW1pLWt1LAotCQkJCUt5b3RvICA2MDEtODUyMAotCQkJCUpBUEFOCi0KLTAwLTIxLTRGICAgKGhleCkJCUFMUFMgRWxlY3RyaWMgQ28uLCBMdGQKLTAwMjE0RiAgICAgKGJhc2UgMTYpCQlBTFBTIEVsZWN0cmljIENvLiwgTHRkCi0JCQkJMS0yLTEsIE9raW5vdWNoaQotCQkJCVNvbWEgY2l0eSBGdWt1c2hpbWEgOTc2LTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yMS01MCAgIChoZXgpCQlFWUVWSUVXIEVMRUNUUk9OSUNTCi0wMDIxNTAgICAgIChiYXNlIDE2KQkJRVlFVklFVyBFTEVDVFJPTklDUwotCQkJCTMgRmxvb3IsIE5vLiA4NiwgS3VuZyBZZWggMzIgUm9hZAotCQkJCVRBSUNIVU5HICA0MDcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIxLTUxICAgKGhleCkJCU1pbGxpbmV0IENvLiwgTHRkLgotMDAyMTUxICAgICAoYmFzZSAxNikJCU1pbGxpbmV0IENvLiwgTHRkLgotCQkJCTJGLCBXZXN0IEJ1aWxkaW5nLCBJVCBWZW50dXJlIFRvd2VyLCA3OCwgR2FyYWtib24tRG9uZwotCQkJCVNvbmdwYS1ndSBTZW91bCAxMzgtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTUyICAgKGhleCkJCUdlbmVyYWwgU2F0ZWxsaXRlIFJlc2VhcmNoICYgRGV2ZWxvcG1lbnQgTGltaXRlZAotMDAyMTUyICAgICAoYmFzZSAxNikJCUdlbmVyYWwgU2F0ZWxsaXRlIFJlc2VhcmNoICYgRGV2ZWxvcG1lbnQgTGltaXRlZAotCQkJCUxpdC4gIkUiLCBidWlsZGluZyAyLCA0IE5vdm9sYWRvemhza2F5YSBzdHIKLQkJCQlTYWludCBQZXRlcnNidXJnICAxOTcxMTAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjEtNTMgICAoaGV4KQkJU2VhTWljcm8gSW5jLgotMDAyMTUzICAgICAoYmFzZSAxNikJCVNlYU1pY3JvIEluYy4KLQkJCQkzMjUwIEpheSBTdHJlZXQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNTQgICAoaGV4KQkJRC1UQUNRIFNvbHV0aW9ucyBMdGQKLTAwMjE1NCAgICAgKGJhc2UgMTYpCQlELVRBQ1EgU29sdXRpb25zIEx0ZAotCQkJCUphbWVzIFdhdHQgQnVpbGRpbmcKLQkJCQlTRVRQCi0JCQkJRWFzdCBLaWxicmlkZSBMYW5hcmtzaGlyZSBHNzUgMFFECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjEtNTUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMTU1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTU2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjE1NiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS01NyAgIChoZXgpCQlOYXRpb25hbCBEYXRhY2FzdCwgSW5jLgotMDAyMTU3ICAgICAoYmFzZSAxNikJCU5hdGlvbmFsIERhdGFjYXN0LCBJbmMuCi0JCQkJMjEwMCBDcnlzdGFsIERyaXZlLCBTdWl0ZSA3NTAKLQkJCQlBcmxpbmd0b24gVkEgMjIyMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTU4ICAgKGhleCkJCVN0eWxlIEZseWluZyBUZWNobm9sb2d5IENvLgotMDAyMTU4ICAgICAoYmFzZSAxNikJCVN0eWxlIEZseWluZyBUZWNobm9sb2d5IENvLgotCQkJCTIyL0YsQ3liZXIgVG93ZXIgQixOby4yIFpob25nIEd1YW4gQ3VuIFNvdXRoIFN0cmVldCxIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDA4NgotCQkJCUNISU5BCi0KLTAwLTIxLTU5ICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLTAwMjE1OSAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOLiBNYXRoaWxkYSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTVBICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAyMTVBICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDIKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS01QiAgIChoZXgpCQlJbm90aXZlCi0wMDIxNUIgICAgIChiYXNlIDE2KQkJSW5vdGl2ZQotCQkJCURlIFBpbmNrYXJ0IDU0Ci0JCQkJTnVlbmVuIE5vb3JkIEJyYWJhbnQgNTY3NCBDQwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIxLTVDICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyMTVDICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjEtNUQgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDIxNUQgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yMS01RSAgIChoZXgpCQlJQk0gQ29ycAotMDAyMTVFICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAuTy4gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS01RiAgIChoZXgpCQlJSFNFIEdtYkgKLTAwMjE1RiAgICAgKGJhc2UgMTYpCQlJSFNFIEdtYkgKLQkJCQlNYXliYWNoc3RyYXNzZSAxMQotCQkJCU9iZXJ0ZXVyaW5nZW4gQmFkZW4tV/xydHRlbWJlcmcgODgwOTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLTYwICAgKGhleCkJCUhpZGVhIFNvbHV0aW9ucyBDby4gTHRkLgotMDAyMTYwICAgICAoYmFzZSAxNikJCUhpZGVhIFNvbHV0aW9ucyBDby4gTHRkLgotCQkJCTRGLCBEbyZDYW4gaG91c2UgRGxkZy4sICM2NTYtMTY4MywgU2VvbmdzdSAxLWdhIDItZG9uZywgU2Vvbmdkb25nLWd1Ci0JCQkJU2VvdWwgIDY1Ni0xNjgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTYxICAgKGhleCkJCVlvdXJuZXQgSW5jLgotMDAyMTYxICAgICAoYmFzZSAxNikJCVlvdXJuZXQgSW5jLgotCQkJCUtUIFImRCBDZW50ZXIKLQkJCQkxNyBVbXllb24tZG9uZywgU2VvY2hvLWd1Ci0JCQkJU2VvdWwgIDEzNy03OTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtNjIgICAoaGV4KQkJTm9ydGVsCi0wMDIxNjIgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJMTgzMCBNYXRoZXNvbiBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAxCi0JCQkJTWlzc2lzc2F1Z2EgT250YXJpbyBMNFcgMEIzCi0JCQkJQ0FOQURBCi0KLTAwLTIxLTYzICAgKGhleCkJCUFTS0VZIENPTVBVVEVSIENPUlAKLTAwMjE2MyAgICAgKGJhc2UgMTYpCQlBU0tFWSBDT01QVVRFUiBDT1JQCi0JCQkJMTBGLE5PLjExOS5DSElFTktBTkcgUkQsQ0hVTkctSE8sCi0JCQkJVEFJUEVJIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtNjQgICAoaGV4KQkJU3BlY2lhbCBEZXNpZ24gQnVyZWF1IGZvciBTZWlzbWljIEluc3RydW1lbnRhdGlvbgotMDAyMTY0ICAgICAoYmFzZSAxNikJCVNwZWNpYWwgRGVzaWduIEJ1cmVhdSBmb3IgU2Vpc21pYyBJbnN0cnVtZW50YXRpb24KLQkJCQkxMjksIEtyYWlueWF5YSBTdHIuCi0JCQkJU2FyYXRvdiBTYXJhdG92IHJlZ2lvbiA0MTAwMTkKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjEtNjUgICAoaGV4KQkJUHJlc3N0ZWsgSW5jLgotMDAyMTY1ICAgICAoYmFzZSAxNikJCVByZXNzdGVrIEluYy4KLQkJCQk1NSBFeGVjdXRpdmUgRHJpdmUKLQkJCQlIdWRzb24gTmV3IEhhbXBzaGlyZSAwMzA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNjYgICAoaGV4KQkJTm92QXRlbCBJbmMuCi0wMDIxNjYgICAgIChiYXNlIDE2KQkJTm92QXRlbCBJbmMuCi0JCQkJMTEyMCAtIDY4IEF2ZSBORQotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMkUgOFM1Ci0JCQkJQ0FOQURBCi0KLTAwLTIxLTY3ICAgKGhleCkJCUhXQSBKSU4gVCZJIENvcnAuCi0wMDIxNjcgICAgIChiYXNlIDE2KQkJSFdBIEpJTiBUJkkgQ29ycC4KLQkJCQk1Ri4sIFNFSFdBIEJsZGcgMTY0LTI0LCBQb2ktZG9uZywgR2FuZ25hbS1ndSwgU2VvdWwsIEtvcmVhCi0JCQkJR2FuZ25hbS1ndSBTZW91bCAxMzUtOTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTY4ICAgKGhleCkJCWlWZWlhLCBMTEMKLTAwMjE2OCAgICAgKGJhc2UgMTYpCQlpVmVpYSwgTExDCi0JCQkJNTEgRnJhbmtsaW4gU3RyZWV0Ci0JCQkJU3VpdGUgMzAxCi0JCQkJQW5uYXBvbGlzIE1EIDIxNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS02OSAgIChoZXgpCQlQcm9sb2dpeCwgTExDLgotMDAyMTY5ICAgICAoYmFzZSAxNikJCVByb2xvZ2l4LCBMTEMuCi0JCQkJMTcyMTcgTkUgMTMzcmQgUGxhY2UKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTItMjE1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNkEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDIxNkEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yMS02QiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjE2QiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTIxLTZDICAgKGhleCkJCU9EVkEKLTAwMjE2QyAgICAgKGJhc2UgMTYpCQlPRFZBCi0JCQkJNDIyMCBWYXJzaXR5IERyaXZlCi0JCQkJU3VpdGUgQQotCQkJCUFubiBBcmJvciBNSSA0ODEwOC01MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS02RCAgIChoZXgpCQlTb2x0ZWNoIENvLiwgTHRkLgotMDAyMTZEICAgICAoYmFzZSAxNikJCVNvbHRlY2ggQ28uLCBMdGQuCi0JCQkJIzMwLTMsM0YKLQkJCQlXb25oeW9ybzItS2EKLQkJCQlZb25nc2FuIEt1IFNlb3VsIDE0MDgzNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS02RSAgIChoZXgpCQlGdW5jdGlvbiBBVEkgKEh1aXpob3UpIFRlbGVjb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMjE2RSAgICAgKGJhc2UgMTYpCQlGdW5jdGlvbiBBVEkgKEh1aXpob3UpIFRlbGVjb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQlOby4gOCwgSHVpdGFpIFJvYWQsIEh1aXRhaSBJbmR1c3RyaWFsIFpvbmUKLQkJCQlIdWl6aG91IENpdHkgR3Vhbmdkb25nIFByb3ZpbmNlIDUxNjAwNgotCQkJCUNISU5BCi0KLTAwLTIxLTZGICAgKGhleCkJCVN5bUNvbSwgSW5jLgotMDAyMTZGICAgICAoYmFzZSAxNikJCVN5bUNvbSwgSW5jLgotCQkJCTI4ODAgTm9ydGggUGxhemEgRHJpdmUKLQkJCQlSYXBpZCBDaXR5IFNEIDU3NzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS03MCAgIChoZXgpCQlEZWxsIEluYwotMDAyMTcwICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS03MSAgIChoZXgpCQlXZXN1bmcgVE5DIENvLiwgTHRkLgotMDAyMTcxICAgICAoYmFzZSAxNikJCVdlc3VuZyBUTkMgQ28uLCBMdGQuCi0JCQkJMTAyLTE0MDksIEJ1Y2hlb24gQ2h1bnVpIFRlY2hub3BhcmsgMXN0LAotCQkJCTIwMC0xLCBDaHVudWktZG9uZywgV29ubWktR3UKLQkJCQlCdWNoZW9uLUNpdHksIEd5ZW9uZ2dnaS1EbyA0MjAtODU3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTcyICAgKGhleCkJCVNlb3VsdGVrIFZhbGxleQotMDAyMTcyICAgICAoYmFzZSAxNikJCVNlb3VsdGVrIFZhbGxleQotCQkJCUJhbmctaSBEb25nIDUxLTUsIFNvbmdwYQotCQkJCVNlb3VsICAxMzgtMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTczICAgKGhleCkJCUlvbiBUb3JyZW50IFN5c3RlbXMsIEluYy4KLTAwMjE3MyAgICAgKGJhc2UgMTYpCQlJb24gVG9ycmVudCBTeXN0ZW1zLCBJbmMuCi0JCQkJMzcgU291bmR2aWV3IFJkCi0JCQkJU3VpdGUgIDIKLQkJCQlHdWlsZm9yZCBDVCAwNjQzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNzQgICAoaGV4KQkJQXZhTEFOIFdpcmVsZXNzCi0wMDIxNzQgICAgIChiYXNlIDE2KQkJQXZhTEFOIFdpcmVsZXNzCi0JCQkJOTU4IFNhbiBMZWFuZHJvIEF2ZSwgU3VpdGUgOTAwCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNzUgICAoaGV4KQkJUGFjaWZpYyBTYXRlbGxpdGUgSW50ZXJuYXRpb25hbCBMdGQuCi0wMDIxNzUgICAgIChiYXNlIDE2KQkJUGFjaWZpYyBTYXRlbGxpdGUgSW50ZXJuYXRpb25hbCBMdGQuCi0JCQkJMjAvRiBUYWkgVHVuZyBCdWlsZGluZywKLQkJCQk4IEZsZW1pbmcgUm9hZCwKLQkJCQlXYW5jaGFpICAxMDAwMDAKLQkJCQlIT05HIEtPTkcKLQotMDAtMjEtNzYgICAoaGV4KQkJWU1heCBUZWxlY29tIEx0ZC4KLTAwMjE3NiAgICAgKGJhc2UgMTYpCQlZTWF4IFRlbGVjb20gTHRkLgotCQkJCTExIE1vc2hlIExldmkgc3RyLgotCQkJCVVNSSBCdWlsZGluZwotCQkJCVJpc2hvbiBMZSBaaW9uICA3NTY1OAotCQkJCUlTUkFFTAotCi0wMC0yMS03NyAgIChoZXgpCQlXLiBMLiBHb3JlICYgQXNzb2NpYXRlcwotMDAyMTc3ICAgICAoYmFzZSAxNikJCVcuIEwuIEdvcmUgJiBBc3NvY2lhdGVzCi0JCQkJNDAyIFZpZXZlcyBXYXkKLQkJCQlFbGt0b24gTUQgMjE5MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTc4ICAgKGhleCkJCU1hdHVzY2hlayBNZXNzdGVjaG5payBHbWJICi0wMDIxNzggICAgIChiYXNlIDE2KQkJTWF0dXNjaGVrIE1lc3N0ZWNobmlrIEdtYkgKLQkJCQlXZXJuZXIgSGVpc2VuYmVyZyBTdHJh32UgMTQKLQkJCQlBbHNkb3JmIE5SVyA1MjQ3NwotCQkJCUdFUk1BTlkKLQotMDAtMjEtNzkgICAoaGV4KQkJSU9HRUFSLCBJbmMuCi0wMDIxNzkgICAgIChiYXNlIDE2KQkJSU9HRUFSLCBJbmMuCi0JCQkJMjMgSHViYmxlCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS03QSAgIChoZXgpCQlTZWppbiBFbGVjdHJvbiwgSW5jLgotMDAyMTdBICAgICAoYmFzZSAxNikJCVNlamluIEVsZWN0cm9uLCBJbmMuCi0JCQkJU0ogVGVjaG5vdmlsbGUKLQkJCQk0dGggRmxvb3IgUm9vbSA0MTIsIDYwLTE5IEthU2FuLURvbmcsIEtldW1DaG9uLUt1Ci0JCQkJU2VvdWwgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtN0IgICAoaGV4KQkJQmFzdGVjIEFCCi0wMDIxN0IgICAgIChiYXNlIDE2KQkJQmFzdGVjIEFCCi0JCQkJSORzdHbkZ2VuIDRBCi0JCQkJTWFsbfYgTSAyMTIgMzUKLQkJCQlTV0VERU4KLQotMDAtMjEtN0MgICAoaGV4KQkJMldpcmUKLTAwMjE3QyAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTdEICAgKGhleCkJCVBZWElTIFMuUi5MLgotMDAyMTdEICAgICAoYmFzZSAxNikJCVBZWElTIFMuUi5MLgotCQkJCUMvTyBESVAuIElORk9STUFUSUNBIEUgU0lTVEVNSVNUSUNBIC0gVU5JVkVSU0lUWSBPRiBQQVZJQQotCQkJCVZJQSBGRVJSQVRBIDEKLQkJCQlQQVZJQSAgMjcxMDAKLQkJCQlJVEFMWQotCi0wMC0yMS03RSAgIChoZXgpCQlUZWxpdCBDb21tdW5pY2F0aW9uIHMucC5hCi0wMDIxN0UgICAgIChiYXNlIDE2KQkJVGVsaXQgQ29tbXVuaWNhdGlvbiBzLnAuYQotCQkJCVZpYSBzdGF6aW9uZSBkaSBwcm9zZWNjbyA1QgotCQkJCVNHT05JQ08gVHJpZXN0ZSAzNDAxMAotCQkJCUlUQUxZCi0KLTAwLTIxLTdGICAgKGhleCkJCUludHJhY28gVGVjaG5vbG9neSBQdGUgTHRkCi0wMDIxN0YgICAgIChiYXNlIDE2KQkJSW50cmFjbyBUZWNobm9sb2d5IFB0ZSBMdGQKLQkJCQk3NTBlIENoYWkgQ2hlZSBSb2FkICMwNS0wMQotCQkJCVNpbmdhcG9yZSAgNDY5MDAwNQotCQkJCVNJTkdBUE9SRQotCi0wMC0yMS04MCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMTgwICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtODEgICAoaGV4KQkJU2kyIE1pY3Jvc3lzdGVtcyBMaW1pdGVkCi0wMDIxODEgICAgIChiYXNlIDE2KQkJU2kyIE1pY3Jvc3lzdGVtcyBMaW1pdGVkCi0JCQkJTm8gODQsIFN5IE5vIDE1MCwgRVBJUCwgV2hpdGVmaWVsZCBJbmR1c3RyaWFsIEFyZWEKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDA2NgotCQkJCUlORElBCi0KLTAwLTIxLTgyICAgKGhleCkJCVNhbmRMaW5rcyBTeXN0ZW1zLCBMdGQuCi0wMDIxODIgICAgIChiYXNlIDE2KQkJU2FuZExpbmtzIFN5c3RlbXMsIEx0ZC4KLQkJCQlQLk8uQm94IDQ2MjkKLQkJCQlQZXRhaC1UaXF3YSBJc3JhZWwgNDkyNzcKLQkJCQlJU1JBRUwKLQotMDAtMjEtODMgICAoaGV4KQkJVkFURUNIIEhZRFJPCi0wMDIxODMgICAgIChiYXNlIDE2KQkJVkFURUNIIEhZRFJPCi0JCQkJV2llbmVyYmVyZ3N0cmFzc2UgNDEKLQkJCQlPYmplY3QgRAotCQkJCVZpZW5uYSAgQS0xMTIwCi0JCQkJQVVTVFJJQQotCi0wMC0yMS04NCAgIChoZXgpCQlQT1dFUlNPRlQgU1JMCi0wMDIxODQgICAgIChiYXNlIDE2KQkJUE9XRVJTT0ZUIFNSTAotCQkJCVZJQSBFTlJJQ08gQ09OVEksIDUKLQkJCQlTQ0FORElDQ0kgRkkgNTAwMTgKLQkJCQlJVEFMWQotCi0wMC0yMS04NSAgIChoZXgpCQlNSUNSTy1TVEFSIElOVCdMIENPLixMVEQuCi0wMDIxODUgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlQnTCBDTy4sTFRELgotCQkJCU5vLjY5LExpLURlIFN0LEp1bmctSG8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMS04NiAgIChoZXgpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZAotMDAyMTg2ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkCi0JCQkJMTQxLCBMYW5lIDM1MSwgU2VjLjEsIFRhaXBpbmcgUm9hZCwKLQkJCQlUU0FPVFVFTiAKLQkJCQlOQU5UT1UgIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMS04NyAgIChoZXgpCQlJbWFjcyBHbWJICi0wMDIxODcgICAgIChiYXNlIDE2KQkJSW1hY3MgR21iSAotCQkJCU1pdHRlbGZlbGRzdHJhc3NlIDI1Ci0JCQkJS29ybndlc3RoZWltIEdlcm1hbnkgRC03MDgwNgotCQkJCUdFUk1BTlkKLQotMDAtMjEtODggICAoaGV4KQkJRU1DIENvcnBvcmF0aW9uCi0wMDIxODggICAgIChiYXNlIDE2KQkJRU1DIENvcnBvcmF0aW9uCi0JCQkJMjQyMSBNaXNzaW9uIENvbGxlZ2UgQmx2ZAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS04OSAgIChoZXgpCQlBcHBUZWNoLCBJbmMuCi0wMDIxODkgICAgIChiYXNlIDE2KQkJQXBwVGVjaCwgSW5jLgotCQkJCTM2MyBHcmV5aG91bmQgUGFzcwotCQkJCUNhcm1lbCBJbmRpYW5hIDQ2MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS04QSAgIChoZXgpCQlFbGVjdHJvbmljIERlc2lnbiBhbmQgTWFudWZhY3R1cmluZyBDb21wYW55Ci0wMDIxOEEgICAgIChiYXNlIDE2KQkJRWxlY3Ryb25pYyBEZXNpZ24gYW5kIE1hbnVmYWN0dXJpbmcgQ29tcGFueQotCQkJCTMxIE1pbGxyYWNlIERyCi0JCQkJTHluY2hidXJnIFZBIDI0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS04QiAgIChoZXgpCQlXZXNjb24gVGVjaG5vbG9neSwgSW5jLgotMDAyMThCICAgICAoYmFzZSAxNikJCVdlc2NvbiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNDY1NS0xNzAgT2xkIElyb25zaWRlcyBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENhbGlmb3JuaWEgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLThDICAgKGhleCkJCVRvcENvbnRyb2wgR01CSAotMDAyMThDICAgICAoYmFzZSAxNikJCVRvcENvbnRyb2wgR01CSAotCQkJCUVuemVuYmVyZ3dlZyAyNC9BCi0JCQkJVGVybGFuIChCWikgIDM5MDE4Ci0JCQkJSVRBTFkKLQotMDAtMjEtOEQgICAoaGV4KQkJQVAgUm91dGVyIEluZC4gRWxldHJvbmljYSBMVERBCi0wMDIxOEQgICAgIChiYXNlIDE2KQkJQVAgUm91dGVyIEluZC4gRWxldHJvbmljYSBMVERBCi0JCQkJQXYuIExvbWFudG8gSnVuaW9yLCAxMDAwCi0JCQkJQmFpcnJvIFBvbnRhbAotCQkJCUlsaGV1cyBCYWhpYSA0NTY1NC0wMDAKLQkJCQlCUkFaSUwKLQotMDAtMjEtOEUgICAoaGV4KQkJTUVLSUNTIENPLiwgTFRELgotMDAyMThFICAgICAoYmFzZSAxNikJCU1FS0lDUyBDTy4sIExURC4KLQkJCQlJbmR1c3RyaWFsIFpvbmUgODYxLTEwLCBUYWVneWUtRG9uZwotCQkJCUNodW5jaG9uIEthbmd3b24gMjAwLTk0NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS04RiAgIChoZXgpCQlBdmFudGdhcmRlIEFjb3VzdGljIExhdXRzcHJlY2hlcnN5c3RlbWUgR21iSAotMDAyMThGICAgICAoYmFzZSAxNikJCUF2YW50Z2FyZGUgQWNvdXN0aWMgTGF1dHNwcmVjaGVyc3lzdGVtZSBHbWJICi0JCQkJTmliZWx1bmdlbnN0ci4gMzQ5Ci0JCQkJTGF1dGVydGFsIC0gUmVpY2hlbmJhY2ggSGVzc2VuIEQtNjQ2ODYKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLTkwICAgKGhleCkJCUdvbGlhdGggU29sdXRpb25zCi0wMDIxOTAgICAgIChiYXNlIDE2KQkJR29saWF0aCBTb2x1dGlvbnMKLQkJCQkzMDgyIFN0ZXJsaW5nIENpcmNsZQotCQkJCUJvdWxkZXIgQ29sb3JhZG8gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTkxICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMDAyMTkxICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5PLjI4OSwgU2luaHUgM3JkIFJELgotCQkJCU5laWh1IERpc3RyaWN0IFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtOTIgICAoaGV4KQkJQmFvZGluZyBHYWxheHkgRWxlY3Ryb25pYyBUZWNobm9sb2d5ICBDby4sTHRkCi0wMDIxOTIgICAgIChiYXNlIDE2KQkJQmFvZGluZyBHYWxheHkgRWxlY3Ryb25pYyBUZWNobm9sb2d5ICBDby4sTHRkCi0JCQkJTk8uOTEgRmVuZ2ZhbiBSZC4sR2FvS2FpIERpc3RyaWN0LEJhb2RpbmcgQ2l0eSxIZWJlaSBQcm92LkNoaW5hIDA3MTA1MQotCQkJCUJhb2RpbmcgQ2l0eSBIZWJlaSBQcm92LiAwNzEwNTEKLQkJCQlDSElOQQotCi0wMC0yMS05MyAgIChoZXgpCQlWaWRlb2ZvbiBNVgotMDAyMTkzICAgICAoYmFzZSAxNikJCVZpZGVvZm9uIE1WCi0JCQkJNiBCbGFja29hayBNZXdzCi0JCQkJTmV3dG93biBQQSAxODk0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtOTQgICAoaGV4KQkJUGluZyBDb21tdW5pY2F0aW9uCi0wMDIxOTQgICAgIChiYXNlIDE2KQkJUGluZyBDb21tdW5pY2F0aW9uCi0JCQkJU2FuZGFrZXJ2ZWllbiAyNEMKLQkJCQlPc2xvICAwNDczCi0JCQkJTk9SV0FZCi0KLTAwLTIxLTk1ICAgKGhleCkJCUdXRCBNZWRpYSBMaW1pdGVkCi0wMDIxOTUgICAgIChiYXNlIDE2KQkJR1dEIE1lZGlhIExpbWl0ZWQKLQkJCQkxMCBMZWVkcyBSb2FkCi0JCQkJU2hlZmZpZWxkIFNvdXRoIFlvcmtzaGlyZSBTOSAzVFkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMS05NiAgIChoZXgpCQlUZWxzZXkgIFMucC5BLgotMDAyMTk2ICAgICAoYmFzZSAxNikJCVRlbHNleSAgUy5wLkEuCi0JCQkJVmlhbGUgZGVsbCdJbmR1c3RyaWEsIDEKLQkJCQlRdWludG8gRGlUcmV2aXNvIDMxMDU1Ci0JCQkJSVRBTFkKLQotMDAtMjEtOTcgICAoaGV4KQkJRUxJVEVHUk9VUCBDT01QVVRFUiBTWVNURU0KLTAwMjE5NyAgICAgKGJhc2UgMTYpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTQotCQkJCU5PLjIzOSwgU2VjLiAyLCBUaSBEaW5nIEJsdmQuLAotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIxLTk4ICAgKGhleCkJCVRoYWkgUmFkaW8gQ28sIExURAotMDAyMTk4ICAgICAoYmFzZSAxNikJCVRoYWkgUmFkaW8gQ28sIExURAotCQkJCUhpLVRlY2ggSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQk3ODcgTTAwIDEgQmFhbmxhbmUgU3ViIERpc3RyaWN0IEJhbmcgUGEtSW4gRGlzdHJpY3QKLQkJCQlBeXV0dGhheWEgIDEzMTYwCi0JCQkJVEhBSUxBTkQKLQotMDAtMjEtOTkgICAoaGV4KQkJVmFjb24gUGxjCi0wMDIxOTkgICAgIChiYXNlIDE2KQkJVmFjb24gUGxjCi0JCQkJUC5PLkJveCAyNQotCQkJCVZhYXNhICA2NTM4MAotCQkJCUZJTkxBTkQKLQotMDAtMjEtOUEgICAoaGV4KQkJQ2FtYnJpZGdlIFZpc3VhbCBOZXR3b3JrcyBMdGQKLTAwMjE5QSAgICAgKGJhc2UgMTYpCQlDYW1icmlkZ2UgVmlzdWFsIE5ldHdvcmtzIEx0ZAotCQkJCTYxIFNlbHd5biBSb2FkCi0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCMyA5RUEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMS05QiAgIChoZXgpCQlEZWxsIEluYwotMDAyMTlCICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS05QyAgIChoZXgpCQlIb25leXdsZCBUZWNobm9sb2d5IENvcnAuCi0wMDIxOUMgICAgIChiYXNlIDE2KQkJSG9uZXl3bGQgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLjQwLEhzdWVoLUZ1IFJkLgotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtOUQgICAoaGV4KQkJQWRlc3lzIEJWCi0wMDIxOUQgICAgIChiYXNlIDE2KQkJQWRlc3lzIEJWCi0JCQkJTW9sZW53ZWVyIDQKLQkJCQlXYXRlcmluZ2VuIFp1aWQgSG9sbGFuZCAyMjkxIE5SCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjEtOUUgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLTAwMjE5RSAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNr5W5lIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTAwLTIxLTlGICAgKGhleCkJCVNBVEVMIE9ZCi0wMDIxOUYgICAgIChiYXNlIDE2KQkJU0FURUwgT1kKLQkJCQlNZXJpbmlpdHlua2F0dSAxNwotCQkJCVNBTE8gTGFuc2ktU3VvbWVuIExhYW5pIDI0MTAwCi0JCQkJRklOTEFORAotCi0wMC0yMS1BMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIxQTAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQTEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMUExICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUEyICAgKGhleCkJCUVLRS1FbGVjdHJvbmljcyBMdGQuCi0wMDIxQTIgICAgIChiYXNlIDE2KQkJRUtFLUVsZWN0cm9uaWNzIEx0ZC4KLQkJCQlQaWlzcGFucG9ydHRpIDcKLQkJCQlFU1BPTyAgMDIyNDAKLQkJCQlGSU5MQU5ECi0KLTAwLTIxLUEzICAgKGhleCkJCU1pY3JvbWludAotMDAyMUEzICAgICAoYmFzZSAxNikJCU1pY3JvbWludAotCQkJCTExMSBDb21tZXJjZSBTdAotCQkJCUxha2UgTWFyeSBGTCAzMjc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQTQgICAoaGV4KQkJRGJpaSBOZXR3b3JrcwotMDAyMUE0ICAgICAoYmFzZSAxNikJCURiaWkgTmV0d29ya3MKLQkJCQkyMjE3IFZpYSBCbGFuY2EKLQkJCQlPY2VhbnNpZGUgQ0EgOTIwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUE1ICAgKGhleCkJCUVSTFBoYXNlIFBvd2VyIFRlY2hub2xvZ2llcyBMdGQuCi0wMDIxQTUgICAgIChiYXNlIDE2KQkJRVJMUGhhc2UgUG93ZXIgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQk3NCBTY3VyZmllbGQgQmx2ZC4KLQkJCQlXaW5uaXBlZyBNYW5pdG9iYSBSM1kgMUc0Ci0JCQkJQ0FOQURBCi0KLTAwLTIxLUE2ICAgKGhleCkJCVZpZGVvdGVjIFNwYQotMDAyMUE2ICAgICAoYmFzZSAxNikJCVZpZGVvdGVjIFNwYQotCQkJCVZpYSBGcml1bGksNgotCQkJCVNjaGlvIFZpY2VuemEgMzYwMTUKLQkJCQlJVEFMWQotCi0wMC0yMS1BNyAgIChoZXgpCQlIYW50bGUgU3lzdGVtIENvLiwgTHRkLgotMDAyMUE3ICAgICAoYmFzZSAxNikJCUhhbnRsZSBTeXN0ZW0gQ28uLCBMdGQuCi0JCQkJNDgxLTEwIEJ5dWNrc2FuIERpZ2l0YWwgVmFsbHkgSUksIFJNIDE1MTEKLQkJCQlHYXNhbi1Eb25nLCBHdW1jaG9uLUd1Ci0JCQkJU2VvdWwgQ2l0eSBTZW91bCAxNTMtNzgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLUE4ICAgKGhleCkJCVRlbGVwaG9uaWNzIENvcnBvcmF0aW9uCi0wMDIxQTggICAgIChiYXNlIDE2KQkJVGVsZXBob25pY3MgQ29ycG9yYXRpb24KLQkJCQk4MTUgQnJvYWQgSG9sbG93IFJvYWQKLQkJCQlGYXJtaW5nZGFsZSBOZXcgWW9yayAxMTc5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQTkgICAoaGV4KQkJTW9iaWxpbmsgVGVsZWNvbSBDby4sTHRkCi0wMDIxQTkgICAgIChiYXNlIDE2KQkJTW9iaWxpbmsgVGVsZWNvbSBDby4sTHRkCi0JCQkJMjkyLTMgU2luZGFuZy1yaSwgU2FuZG9uZy1teXVuCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTg1MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS1BQSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyMUFBICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yMS1BQiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyMUFCICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwIFYKLQkJCQlERU5NQVJLCi0KLTAwLTIxLUFDICAgKGhleCkJCUluZnJhcmVkIEludGVncmF0ZWQgU3lzdGVtcyBMdGQKLTAwMjFBQyAgICAgKGJhc2UgMTYpCQlJbmZyYXJlZCBJbnRlZ3JhdGVkIFN5c3RlbXMgTHRkCi0JCQkJUGFyayBDaXJjbGUsIFRpdGhlIEJhcm4gV2F5Ci0JCQkJU3dhbiBWYWxsZXkKLQkJCQlOb3J0aGFtcHRvbiBOb3J0aGFudHMgTk40IDlCRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIxLUFEICAgKGhleCkJCU5vcmRpYyBJRCBPeQotMDAyMUFEICAgICAoYmFzZSAxNikJCU5vcmRpYyBJRCBPeQotCQkJCU15bGx5b2phbmthdHUgMkEKLQkJCQlTQUxPICBGSU4tMjQxMDAKLQkJCQlGSU5MQU5ECi0KLTAwLTIxLUFFICAgKGhleCkJCUFMQ0FURUwtTFVDRU5UIEZSQU5DRSAtIFdURAotMDAyMUFFICAgICAoYmFzZSAxNikJCUFMQ0FURUwtTFVDRU5UIEZSQU5DRSAtIFdURAotCQkJCTctOSwgQXZlbnVlIE1vcmFuZSBTYXVsbmllcgotCQkJCUJQIDU3Ci0JCQkJVkVMSVpZICA3ODE0MQotCQkJCUZSQU5DRQotCi0wMC0yMS1BRiAgIChoZXgpCQlSYWRpbyBGcmVxdWVuY3kgU3lzdGVtcwotMDAyMUFGICAgICAoYmFzZSAxNikJCVJhZGlvIEZyZXF1ZW5jeSBTeXN0ZW1zCi0JCQkJS2FiZWxrYW1wIDIwCi0JCQkJSGFubm92ZXIgIDMwMTc5Ci0JCQkJR0VSTUFOWQotCi0wMC0yMS1CMCAgIChoZXgpCQlUeWNvIFRlbGVjb21tdW5pY2F0aW9ucwotMDAyMUIwICAgICAoYmFzZSAxNikJCVR5Y28gVGVsZWNvbW11bmljYXRpb25zCi0JCQkJMTAxMSBQYXd0dWNrZXQgQmx2ZAotCQkJCUxvd2VsbCBNYXNzYWNodXNldHRzIDAxODUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1CMSAgIChoZXgpCQlESUdJVEFMIFNPTFVUSU9OUyBMVEQKLTAwMjFCMSAgICAgKGJhc2UgMTYpCQlESUdJVEFMIFNPTFVUSU9OUyBMVEQKLQkJCQlUc2FyaWdyYWRza28gU2hvc2UgN2ttIEJMVkQKLQkJCQlIaSBUZWNoIFBhcmsgSXpvdCwKLQkJCQlTb2ZpYSBTb2ZpYSAxNzg0Ci0JCQkJQlVMR0FSSUEKLQotMDAtMjEtQjIgICAoaGV4KQkJRmliZXJibGF6ZSBBL1MKLTAwMjFCMiAgICAgKGJhc2UgMTYpCQlGaWJlcmJsYXplIEEvUwotCQkJCUtpbGRldmFuZ3N2ZWogOQotCQkJCUdvZWRlcnVwCi0JCQkJUm9za2lsZGUgIDQwMDAKLQkJCQlERU5NQVJLCi0KLTAwLTIxLUIzICAgKGhleCkJCVJvc3MgQ29udHJvbHMKLTAwMjFCMyAgICAgKGJhc2UgMTYpCQlSb3NzIENvbnRyb2xzCi0JCQkJT25lIFJvc3MgV2F5Ci0JCQkJTGF2b25pYSBHQSAzMDU1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQjQgICAoaGV4KQkJQVBSTyBNRURJQSBDTy4sIExURAotMDAyMUI0ICAgICAoYmFzZSAxNikJCUFQUk8gTUVESUEgQ08uLCBMVEQKLQkJCQkjMTMtNSxEb2RhbmctRG9uZyxXb25taS1HdSwKLQkJCQlCdWNoZW9uLUNpdHkgS3l1bmdnaS1EbyA0MjAtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLUI1ICAgKGhleCkJCVZ5cm8gR2FtZXMgTGltaXRlZAotMDAyMUI1ICAgICAoYmFzZSAxNikJCVZ5cm8gR2FtZXMgTGltaXRlZAotCQkJCTE0IFN0LiBTdGVwaGVuJ3MgR3JlZW4KLQkJCQlEdWJsaW4gIDIKLQkJCQlJUkVMQU5ECi0KLTAwLTIxLUI2ICAgKGhleCkJCVRyaWFjdGEgUG93ZXIgVGVjaG5vbG9naWVzIEluYy4KLTAwMjFCNiAgICAgKGJhc2UgMTYpCQlUcmlhY3RhIFBvd2VyIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJQm94IDU4MiwgNyBNaWxsIFN0cmVldAotCQkJCUFsbW9udGUgT250YXJpbyBLMEEgMUEwCi0JCQkJQ0FOQURBCi0KLTAwLTIxLUI3ICAgKGhleCkJCUxleG1hcmsgSW50ZXJuYXRpb25hbCBJbmMuCi0wMDIxQjcgICAgIChiYXNlIDE2KQkJTGV4bWFyayBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQk3NDAgV2VzdCBOZXcgQ2lyY2xlIFJvYWQKLQkJCQlMZXhpbmd0b24gS1kgNDA1NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUI4ICAgKGhleCkJCUlucGhpIENvcnBvcmF0aW9uCi0wMDIxQjggICAgIChiYXNlIDE2KQkJSW5waGkgQ29ycG9yYXRpb24KLQkJCQkyMzkzIFRvd25zR2F0ZSBSZC4sIFN1aXRlIDEwMQotCQkJCVdlc3RsYWtlIFZpbGxhZ2UgQ0EgOTEzNjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUI5ICAgKGhleCkJCVVuaXZlcnNhbCBEZXZpY2VzIEluYy4KLTAwMjFCOSAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgRGV2aWNlcyBJbmMuCi0JCQkJNTM1MyBZYXJtb3V0aCBBdmUuICMyMDkKLQkJCQlFbmNpbm8gQ0EgOTEzMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUJBICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDIxQkEgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUJCICAgKGhleCkJCVJpa2VuIEtlaWtpIENvLiwgTHRkLgotMDAyMUJCICAgICAoYmFzZSAxNikJCVJpa2VuIEtlaWtpIENvLiwgTHRkLgotCQkJCSAyLTctNiBBenVzYXdhCi0JCQkJSXRhYmFzaGktS3UgVG9reW8gMTc0LTg3NDQKLQkJCQlKQVBBTgotCi0wMC0yMS1CQyAgIChoZXgpCQlaQUxBIENPTVBVVEVSCi0wMDIxQkMgICAgIChiYXNlIDE2KQkJWkFMQSBDT01QVVRFUgotCQkJCUVMIEJPVU5JCi0JCQkJQU5OQUJBICAyMzAwMAotCQkJCUFMR0VSSUEKLQotMDAtMjEtQkQgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDIxQkQgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjEtQkUgICAoaGV4KQkJQ2lzY28sIFNlcnZpY2UgUHJvdmlkZXIgVmlkZW8gVGVjaG5vbG9neSBHcm91cAotMDAyMUJFICAgICAoYmFzZSAxNikJCUNpc2NvLCBTZXJ2aWNlIFByb3ZpZGVyIFZpZGVvIFRlY2hub2xvZ3kgR3JvdXAKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTWFpbCBTdG9wIDIuVC42MDMKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1CRiAgIChoZXgpCQlIaXRhY2hpIEhpZ2gtVGVjaCBDb250cm9sIFN5c3RlbXMgQ29ycG9yYXRpb24KLTAwMjFCRiAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIEhpZ2gtVGVjaCBDb250cm9sIFN5c3RlbXMgQ29ycG9yYXRpb24KLQkJCQk1MDAsTWl5dS1jaG8KLQkJCQlNaXRvLXNoaSBJYmFyYWtpLWtlbiAzMTktMDMxNgotCQkJCUpBUEFOCi0KLTAwLTIxLUMwICAgKGhleCkJCU1vYmlsZSBBcHBsaWFuY2UsIEluYy4KLTAwMjFDMCAgICAgKGJhc2UgMTYpCQlNb2JpbGUgQXBwbGlhbmNlLCBJbmMuCi0JCQkJIzgxOSBLcmFueiBUZWNobm8sCi0JCQkJU2FuZ2RhZXdvbi0xIERvbmcsIEp1bmd3b24tR3UKLQkJCQlTZW9uZyBuYW0gR3llb25nZ2ktRG8gNDYyLTcyOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS1DMSAgIChoZXgpCQlBQkIgT3kgLyBEaXN0cmlidXRpb24gQXV0b21hdGlvbgotMDAyMUMxICAgICAoYmFzZSAxNikJCUFCQiBPeSAvIERpc3RyaWJ1dGlvbiBBdXRvbWF0aW9uCi0JCQkJUE8gQm94IDY5OQotCQkJCVZhYXNhICBGSS02NTEwMQotCQkJCUZJTkxBTkQKLQotMDAtMjEtQzIgICAoaGV4KQkJR0wgQ29tbXVuaWNhdGlvbnMgSW5jCi0wMDIxQzIgICAgIChiYXNlIDE2KQkJR0wgQ29tbXVuaWNhdGlvbnMgSW5jCi0JCQkJODE4IFdlc3QgRGlhbW9uZCBBdmUKLQkJCQlUaGlyZCBGbG9vcgotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQzMgICAoaGV4KQkJQ09STkVMTCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAyMUMzICAgICAoYmFzZSAxNikJCUNPUk5FTEwgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk3OTE1IE4uIDgxc3QgU3RyZWV0Ci0JCQkJTWlsd2F1a2VlIFdpc2NvbnNpbiA1MzIyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQzQgICAoaGV4KQkJQ29uc2lsaXVtIEFCCi0wMDIxQzQgICAgIChiYXNlIDE2KQkJQ29uc2lsaXVtIEFCCi0JCQkJVuRzdHJhIEZpbm5ib2RhduRnZW4gMi00Ci0JCQkJTmFja2EgU3RvY2tob2xtIDEzMTMxCi0JCQkJU1dFREVOCi0KLTAwLTIxLUM1ICAgKGhleCkJCTNEU1AgQ29ycAotMDAyMUM1ICAgICAoYmFzZSAxNikJCTNEU1AgQ29ycAotCQkJCTE2MjcxIExhZ3VuYSBDYW55b24gUm9hZAotCQkJCVN1aXRlIDIwMAotCQkJCUlydmluZSwgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUM2ICAgKGhleCkJCUNTSiBHbG9iYWwsIEluYy4KLTAwMjFDNiAgICAgKGJhc2UgMTYpCQlDU0ogR2xvYmFsLCBJbmMuCi0JCQkJOXRoIEZsLiBTYW13aGFuIEJsZGcuIEFubmV4LCAxNy0yNiBZZW91aWRvLWRvbmcsCi0JCQkJWW91bmdkZXVuZ3BvLUd1Ci0JCQkJU2VvdWwgIDE1MC04NzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtQzcgICAoaGV4KQkJUnVzc291bmQKLTAwMjFDNyAgICAgKGJhc2UgMTYpCQlSdXNzb3VuZAotCQkJCTUgRm9yYmVzIFJvYWQKLQkJCQlOZXdtYXJrZXQgTkggMDM4NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUM4ICAgKGhleCkJCUxPSFVJUyBOZXR3b3JrcwotMDAyMUM4ICAgICAoYmFzZSAxNikJCUxPSFVJUyBOZXR3b3JrcwotCQkJCTI2ODEgVFYgTW9uc3RlcgotCQkJCVZvdGxhYW4gNDA4IFZvdGxhYW4gMzEKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMS1DOSAgIChoZXgpCQlXYXZlY29tIEFzaWEgUGFjaWZpYyBMaW1pdGVkCi0wMDIxQzkgICAgIChiYXNlIDE2KQkJV2F2ZWNvbSBBc2lhIFBhY2lmaWMgTGltaXRlZAotCQkJCTIwMSBCaW8tSW5mb3JtYXRpY3MgQ2VudHJlLCAgTm8uMiBTY2llbmNlIFBhcmsgV2VzdCBBdmUKLQkJCQlIb25nIEtvbmcgU2NpZW5jZSBQYXJrLCBTaGF0aW4sIE5UCi0JCQkJSE9ORyBLT05HCi0KLTAwLTIxLUNBICAgKGhleCkJCUFSVCBTeXN0ZW0gQ28uLCBMdGQuCi0wMDIxQ0EgICAgIChiYXNlIDE2KQkJQVJUIFN5c3RlbSBDby4sIEx0ZC4KLQkJCQlNb2JpbGUgVGVjaG5vIEJsZGcgUm9vbSA5MTAKLQkJCQk1NzMtMTMsIEJva2h5ZW9uLWRvbmcsIEJ1ay1ndQotCQkJCURhZS1HdSAgNzAyLTAyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS1DQiAgIChoZXgpCQlTTVMgVEVDTk9MT0dJQSBFTEVUUk9OSUNBIExUREEKLTAwMjFDQiAgICAgKGJhc2UgMTYpCQlTTVMgVEVDTk9MT0dJQSBFTEVUUk9OSUNBIExUREEKLQkJCQlBdi4gUGly4m1pZGUsIDY2MQotCQkJCURJQURFTUEgU8NPIFBBVUxPIDA5OTcwMzMwCi0JCQkJQlJBWklMCi0KLTAwLTIxLUNDICAgKGhleCkJCUZsZXh0cm9uaWNzIEludGVybmF0aW9uYWwKLTAwMjFDQyAgICAgKGJhc2UgMTYpCQlGbGV4dHJvbmljcyBJbnRlcm5hdGlvbmFsCi0JCQkJMjI0MSBMdW5keSBBdmUuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUNEICAgKGhleCkJCUxpdmVUVgotMDAyMUNEICAgICAoYmFzZSAxNikJCUxpdmVUVgotCQkJCTEzMzMgR2F0ZXdheSBEcml2ZSwgU3VpdGUgMTAwNwotCQkJCU1lbGJvdXJuZSBGbG9yaWRhIDMyOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1DRSAgIChoZXgpCQlOVEMtTWV0cm90ZWsKLTAwMjFDRSAgICAgKGJhc2UgMTYpCQlOVEMtTWV0cm90ZWsKLQkJCQk5LCBOZXZ6b3Jvdm95IHN0cmVldAotCQkJCVNhaW50LVBldGVyc2J1cmcgIDE5MjE0OAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yMS1DRiAgIChoZXgpCQlUaGUgQ3J5cHRvIEdyb3VwCi0wMDIxQ0YgICAgIChiYXNlIDE2KQkJVGhlIENyeXB0byBHcm91cAotCQkJCVp1Z2Vyc3RyYXNzZSA0MgotCQkJCVN0ZWluaGF1c2VuIFp1ZyA2MzEyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjEtRDAgICAoaGV4KQkJR2xvYmFsIERpc3BsYXkgU29sdXRpb25zIFNwYQotMDAyMUQwICAgICAoYmFzZSAxNikJCUdsb2JhbCBEaXNwbGF5IFNvbHV0aW9ucyBTcGEKLQkJCQlWaWEgVGV6emUsIDIwL0EKLQkJCQlWQVQgSVQwMjk0MDE4MDI0OQotCQkJCUNvcm5lZG8gVmljZW50aW5vIFZpY2VuemEgMzYwNzMKLQkJCQlJVEFMWQotCi0wMC0yMS1EMSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMjFEMSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtRDIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDIxRDIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLUQzICAgKGhleCkJCUJPQ09NIFNFQ1VSSVRZKEFTSUEgUEFDSUZJQykgTElNSVRFRAotMDAyMUQzICAgICAoYmFzZSAxNikJCUJPQ09NIFNFQ1VSSVRZKEFTSUEgUEFDSUZJQykgTElNSVRFRAotCQkJCUZsci4zLE5PLjI5LCM2OSBHdWlxaW5nIFJECi0JCQkJQ2hpbmEKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMjEtRDQgICAoaGV4KQkJVm9sbG1lciBXZXJrZSBHbWJICi0wMDIxRDQgICAgIChiYXNlIDE2KQkJVm9sbG1lciBXZXJrZSBHbWJICi0JCQkJTWFzY2hpbmVuZmFicmlrCi0JCQkJQmliZXJhY2ggQmFkZW4tV/xydHRlbWJlcmcgODg0MDAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLUQ1ICAgKGhleCkJCVgyRSBHbWJICi0wMDIxRDUgICAgIChiYXNlIDE2KQkJWDJFIEdtYkgKLQkJCQlSYWlmZmVpc2Vuc3RyYXNzZSA5Ci0JCQkJV2luZGVuIFJoZWlubGFuZC1QZmFseiA3Njg3MgotCQkJCUdFUk1BTlkKLQotMDAtMjEtRDYgICAoaGV4KQkJTFhJIENvbnNvcnRpdW0KLTAwMjFENiAgICAgKGJhc2UgMTYpCQlMWEkgQ29uc29ydGl1bQotCQkJCVAuTy4gQm94IDEwMTYKLQkJCQlOaXdvdCBDTyA4MDU0NC0xMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1ENyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIxRDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRDggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMUQ4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUQ5ICAgKGhleCkJCVNFS09OSUMgQ09SUE9SQVRJT04KLTAwMjFEOSAgICAgKGJhc2UgMTYpCQlTRUtPTklDIENPUlBPUkFUSU9OCi0JCQkJNy0yNC0xNAotCQkJCU9JWlVNSS1HQUtVRU4tQ0hPCi0JCQkJTkVSSU1BLUtVIFRPS1lPIDE3OC04Njg2Ci0JCQkJSkFQQU4KLQotMDAtMjEtREEgICAoaGV4KQkJQXV0b21hdGlvbiBQcm9kdWN0cyBHcm91cCBJbmMuCi0wMDIxREEgICAgIChiYXNlIDE2KQkJQXV0b21hdGlvbiBQcm9kdWN0cyBHcm91cCBJbmMuCi0JCQkJMTAyNSBXZXN0IDE3MDAgTm9ydGgKLQkJCQlMb2dhbiBVdGFoIDg0MzIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1EQiAgIChoZXgpCQlTYW50YWNoaSBWaWRlbyBUZWNobm9sb2d5IChTaGVuemhlbikgQ28uLCBMdGQuCi0wMDIxREIgICAgIChiYXNlIDE2KQkJU2FudGFjaGkgVmlkZW8gVGVjaG5vbG9neSAoU2hlbnpoZW4pIENvLiwgTHRkLgotCQkJCVNhbnRhY2hpIEJ1aWxkaW5nLCMxNCBLYWlmZW5nIFJvYWQsTWVpbGluLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNDkKLQkJCQlDSElOQQotCi0wMC0yMS1EQyAgIChoZXgpCQlURUNOT0FMQVJNIFMuci5sLgotMDAyMURDICAgICAoYmFzZSAxNikJCVRFQ05PQUxBUk0gUy5yLmwuCi0JCQkJVmlhIENpcmllJwotCQkJCVNhbiBNYXVybyBUb3JpbmVzZSBUb3Jpbm8gMTAwOTkKLQkJCQlJVEFMWQotCi0wMC0yMS1ERCAgIChoZXgpCQlOb3J0aHN0YXIgU3lzdGVtcyBDb3JwCi0wMDIxREQgICAgIChiYXNlIDE2KQkJTm9ydGhzdGFyIFN5c3RlbXMgQ29ycAotCQkJCTVGLCBOby4yMDAgR2FuZyBRaWFuIFJkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIxLURFICAgKGhleCkJCUZpcmVwcm8gV2lyZWxlc3MKLTAwMjFERSAgICAgKGJhc2UgMTYpCQlGaXJlcHJvIFdpcmVsZXNzCi0JCQkJMjcsIFphbXJ1ZHB1ciBDb21tdW5pdHkgQ2VudGVyLAotCQkJCUthaWxhc2ggQ29sb255Ci0JCQkJTmV3IERlbGhpIEhhcnlhbmEgMTEwMDIwCi0JCQkJSU5ESUEKLQotMDAtMjEtREYgICAoaGV4KQkJTWFydGluIENocmlzdCBHbWJICi0wMDIxREYgICAgIChiYXNlIDE2KQkJTWFydGluIENocmlzdCBHbWJICi0JCQkJQW4gZGVyIFVudGVyZW4gU29lc2UgNTAKLQkJCQlPc3Rlcm9kZSBOaWVkZXJzYWNoc2VuIDM3NTIwCi0JCQkJR0VSTUFOWQotCi0wMC0yMS1FMCAgIChoZXgpCQlDb21tQWdpbGl0eSBMdGQKLTAwMjFFMCAgICAgKGJhc2UgMTYpCQlDb21tQWdpbGl0eSBMdGQKLQkJCQlJbm5vdmF0aW9uIENlbnRyZQotCQkJCUVwaW5hbCBXYXkKLQkJCQlMb3VnaGJvcm91Z2ggTGVpY3MgTEUxMSAzRUgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMS1FMSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMjFFMSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyLTQzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUUyICAgKGhleCkJCUNyZWF0aXZlIEVsZWN0cm9uaWMgR21iSAotMDAyMUUyICAgICAoYmFzZSAxNikJCUNyZWF0aXZlIEVsZWN0cm9uaWMgR21iSAotCQkJCUxvcmNoZXIgU3RyYXNzZSA1MgotCQkJCUJpcmVuYmFjaCBCYWRlbi1X/HJ0dGVtYmVyZyA3MzEwMgotCQkJCUdFUk1BTlkKLQotMDAtMjEtRTMgICAoaGV4KQkJU2VyaWFsVGVrIExMQwotMDAyMUUzICAgICAoYmFzZSAxNikJCVNlcmlhbFRlayBMTEMKLQkJCQkxNjMwIE9ha2xhbmQgUmQKLQkJCQlTdWl0ZSBBMTE3Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUU0ICAgKGhleCkJCUktV0lOCi0wMDIxRTQgICAgIChiYXNlIDE2KQkJSS1XSU4KLQkJCQkyNyBSdWUgZGVzIEVjb25kZWF1eAotCQkJCUVQSU5BWSBTVVIgU0VJTkUgU2VpbmUgU2FpbnQgRGVuaXMgOTM4MDAKLQkJCQlGUkFOQ0UKLQotMDAtMjEtRTUgICAoaGV4KQkJRGlzcGxheSBTb2x1dGlvbiBBRwotMDAyMUU1ICAgICAoYmFzZSAxNikJCURpc3BsYXkgU29sdXRpb24gQUcKLQkJCQlUYWxob2ZzdHIuIDMyYQotCQkJCUdpbGNoaW5nIEQgODIyMDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLUU2ICAgKGhleCkJCVN0YXJsaWdodCBWaWRlbyBMaW1pdGVkCi0wMDIxRTYgICAgIChiYXNlIDE2KQkJU3RhcmxpZ2h0IFZpZGVvIExpbWl0ZWQKLQkJCQk1L0YuLCBTaGluZyBEYW8gSW5kdXN0cmlhbCBCdWlsZGluZywKLQkJCQkyMzIgQWJlcmRlZW4gTWFpbiBSb2FkLAotCQkJCUhPTkcgS09ORwotCi0wMC0yMS1FNyAgIChoZXgpCQlJbmZvcm1hdGljcyBTZXJ2aWNlcyBDb3Jwb3JhdGlvbgotMDAyMUU3ICAgICAoYmFzZSAxNikJCUluZm9ybWF0aWNzIFNlcnZpY2VzIENvcnBvcmF0aW9uCi0JCQkJMTQwLCBOZWdpbiBCbGRnLiwKLQkJCQlNaXJkYW1hZCBCbHZkCi0JCQkJVGVocmFuICAxNTQ5NTM0NTExCi0JCQkJSVJBTiwgSVNMQU1JQyBSRVBVQkxJQyBPRgotCi0wMC0yMS1FOCAgIChoZXgpCQlNdXJhdGEgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLTAwMjFFOCAgICAgKGJhc2UgMTYpCQlNdXJhdGEgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLQkJCQkxMC0xLCBIaWdhc2hpa290YXJpIDEtY2hvbWUKLQkJCQlOYWdhb2tha3lvLXNoaSBLeW90byA2MTctODU1NQotCQkJCUpBUEFOCi0KLTAwLTIxLUU5ICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjFFOSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1FQSAgIChoZXgpCQlCeXN0cm9uaWMgTGFzZXIgQUcKLTAwMjFFQSAgICAgKGJhc2UgMTYpCQlCeXN0cm9uaWMgTGFzZXIgQUcKLQkJCQlJbmR1c3RyaWVzdHIuIDIxCi0JCQkJMzM2MiBOaWVkZXL2bnogCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjEtRUIgICAoaGV4KQkJRVNQIFNZU1RFTVMsIExMQwotMDAyMUVCICAgICAoYmFzZSAxNikJCUVTUCBTWVNURU1TLCBMTEMKLQkJCQkxNDIyIEVhc3QgRm91cnRoIFN0cmVldAotCQkJCUNoYXJsb3R0ZSBOQyAyODIwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRUMgICAoaGV4KQkJU29sdXRyb25pYyBHbWJICi0wMDIxRUMgICAgIChiYXNlIDE2KQkJU29sdXRyb25pYyBHbWJICi0JCQkJS3VlZmVyc3RyYXNzZSAxOAotCQkJCUtvZW5nZW4gIDczMjU3Ci0JCQkJR0VSTUFOWQotCi0wMC0yMS1FRCAgIChoZXgpCQlUZWxlZ2VzaXMKLTAwMjFFRCAgICAgKGJhc2UgMTYpCQlUZWxlZ2VzaXMKLQkJCQk4NCBTdGF0aW9uIFJvYWQKLQkJCQlNYXJsb3cgQnVja3MgU0w3IDFOWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIxLUVFICAgKGhleCkJCUZ1bGwgU3BlY3RydW0gSW5jLgotMDAyMUVFICAgICAoYmFzZSAxNikJCUZ1bGwgU3BlY3RydW0gSW5jLgotCQkJCTExNDkgQ2hlc3RudXQgU3RyZWV0LCBTdWl0ZSAxMDAKLQkJCQlNZW5sbyBQYXJrIENhbGlmb3JuaWEgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUVGICAgKGhleCkJCUthcHN5cwotMDAyMUVGICAgICAoYmFzZSAxNikJCUthcHN5cwotCQkJCTc5MCBBdiBkdSBEb2N0ZXVyIE1hdXJpY2UgRG9uYXQKLQkJCQlMZSBNYXJjbyBQb2xvIEExCi0JCQkJMDYyNTAgTW91Z2lucyBTb3BoaWEgQW50aXBvbGlzIAotCQkJCUZSQU5DRQotCi0wMC0yMS1GMCAgIChoZXgpCQlFVzMgVGVjaG5vbG9naWVzIExMQwotMDAyMUYwICAgICAoYmFzZSAxNikJCUVXMyBUZWNobm9sb2dpZXMgTExDCi0JCQkJMjAgSG9tZXN0ZWFkIFZpbGxhZ2UgRHJpdmUKLQkJCQlXYXJ3aWNrIE5ZIDEwOTkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1GMSAgIChoZXgpCQlUdXR1cyBEYXRhIEFCCi0wMDIxRjEgICAgIChiYXNlIDE2KQkJVHV0dXMgRGF0YSBBQgotCQkJCVN2YXJkdmFnZW4gMTEKLQkJCQlEYW5kZXJ5ZCBTdG9ja2hvbG0gMTgyMzMKLQkJCQlTV0VERU4KLQotMDAtMjEtRjIgICAoaGV4KQkJRUFTWTNDQUxMIFRlY2hub2xvZ3kgTGltaXRlZAotMDAyMUYyICAgICAoYmFzZSAxNikJCUVBU1kzQ0FMTCBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlSb29tIDE5MDMtNiwgMTkvRi4sIEhJTkcgWUlQIENvbW1lcmNpYWwgQ2VudHJlCi0JCQkJMjcyLTI4NCBERVMgVk9FVVggUm9hZCBDZW50cmFsCi0JCQkJSG9uZyBLb25nICA5OTkwNzcKLQkJCQlDSElOQQotCi0wMC0yMS1GMyAgIChoZXgpCQlTaTE0IFNwQQotMDAyMUYzICAgICAoYmFzZSAxNikJCVNpMTQgU3BBCi0JCQkJVmlhIFRvbW1hc2VvIDc3Ci0JCQkJUGFkb3ZhIFBEIDM1MTMxCi0JCQkJSVRBTFkKLQotMDAtMjEtRjQgICAoaGV4KQkJSU5SYW5nZSBTeXN0ZW1zLCBJbmMKLTAwMjFGNCAgICAgKGJhc2UgMTYpCQlJTlJhbmdlIFN5c3RlbXMsIEluYwotCQkJCTIyMCBMYWtlbW9udCBQYXJrIEJsdmQKLQkJCQlBbHRvb25hIFBBIDE2NjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1GNSAgIChoZXgpCQlXZXN0ZXJuIEVuZ3JhdmVycyBTdXBwbHksIEluYy4KLTAwMjFGNSAgICAgKGJhc2UgMTYpCQlXZXN0ZXJuIEVuZ3JhdmVycyBTdXBwbHksIEluYy4KLQkJCQkxNzYyMSBOIEJsYWNrIENhbnlvbiBIaWdod2F5Ci0JCQkJUGhvZW5peCBBWiA4NTAyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRjYgICAoaGV4KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0wMDIxRjYgICAgIChiYXNlIDE2KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0JCQkJOTAwIENoZWxtc2ZvcmQgU3RyZWV0Ci0JCQkJTG93ZWxsIE1BIDAxODUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1GNyAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDIxRjcgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQKLQkJCQlSb3NldmlsbGUgQ0EgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUY4ICAgKGhleCkJCUVuc2VvLCBJbmMuCi0wMDIxRjggICAgIChiYXNlIDE2KQkJRW5zZW8sIEluYy4KLQkJCQk0MDEgSW50ZXJuYXRpb25hbCBQYXJrd2F5Ci0JCQkJU3VpdGUgMTAwCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRjkgICAoaGV4KQkJV0lSRUNPTSBUZWNobm9sb2dpZXMKLTAwMjFGOSAgICAgKGJhc2UgMTYpCQlXSVJFQ09NIFRlY2hub2xvZ2llcwotCQkJCTEzNSwgcnVlIEphY3F1ZXMgQ2hhcmxlcwotCQkJCU9MSVZFVCBMb2lyZXQgNDUxNjYKLQkJCQlGUkFOQ0UKLQotMDAtMjEtRkEgICAoaGV4KQkJQTRTUCBUZWNobm9sb2dpZXMgTHRkLgotMDAyMUZBICAgICAoYmFzZSAxNikJCUE0U1AgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQlLZWlsYXJhbnRhIDE5IEQKLQkJCQlFc3BvbyBVdXNpbWFhIDAyMTUwCi0JCQkJRklOTEFORAotCi0wMC0yMS1GQiAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotMDAyMUZCICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAtMzksS2FzYW4tZG9uZyxLdW1jaG9uLWt1LAotCQkJCVNlb3VsICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLUZDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIxRkMgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIxLUZEICAgKGhleCkJCURTVEEgUy5MLgotMDAyMUZEICAgICAoYmFzZSAxNikJCURTVEEgUy5MLgotCQkJCU1hamFkYSA0Ci0JCQkJVHJlcyBDYW50b3MgTWFkcmlkIDI4NzYwCi0JCQkJU1BBSU4KLQotMDAtMjEtRkUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjFGRSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjEtRkYgICAoaGV4KQkJQ3lmcm93eSBQb2xzYXQgU0EKLTAwMjFGRiAgICAgKGJhc2UgMTYpCQlDeWZyb3d5IFBvbHNhdCBTQQotCQkJCaN1Ymlub3dhIDRBCi0JCQkJV2Fyc2F3IE1hem93aWVja2llIDAzLTg3OAotCQkJCVBPTEFORAotCi0wMC0yMi0wMCAgIChoZXgpCQlJQk0gQ29ycAotMDAyMjAwICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMjA1MSBNaXNzaW9uIENvbGxlZ2UgQmx2ZCAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMDEgICAoaGV4KQkJQWtzeXMgTmV0d29ya3MgSW5jCi0wMDIyMDEgICAgIChiYXNlIDE2KQkJQWtzeXMgTmV0d29ya3MgSW5jCi0JCQkJNDI4LCAzNTUzIC0gMzEgU3RyZWV0IE5XCi0JCQkJQ2FsZ2FyeSAgVDJMIDJLNwotCQkJCUNBTkFEQQotCi0wMC0yMi0wMiAgIChoZXgpCQlFeGNpdG8gRWxla3Ryb25payBpIFNr5W5lIEFCCi0wMDIyMDIgICAgIChiYXNlIDE2KQkJRXhjaXRvIEVsZWt0cm9uaWsgaSBTa+VuZSBBQgotCQkJCUJveCAxMjYKLQkJCQlM9mRkZWv2cGluZ2UgIDI0NiAyMgotCQkJCVNXRURFTgotCi0wMC0yMi0wMyAgIChoZXgpCQlHbGVuc291bmQgRWxlY3Ryb25pY3MgTHRkCi0wMDIyMDMgICAgIChiYXNlIDE2KQkJR2xlbnNvdW5kIEVsZWN0cm9uaWNzIEx0ZAotCQkJCTEgLSA2IEJyb29rcyBQbGFjZQotCQkJCU1haWRzdG9uZSBLZW50IE1FMTcgMVVOCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItMDQgICAoaGV4KQkJS09SQVRFSwotMDAyMjA0ICAgICAoYmFzZSAxNikJCUtPUkFURUsKLQkJCQlHZXVtamVvbmctZG9uZwotCQkJCUd1bnBvLXNpIEd5ZW9uZ2dpLWRvIDQzNS04MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItMDUgICAoaGV4KQkJV2VMaW5rIFNvbHV0aW9ucywgSW5jLgotMDAyMjA1ICAgICAoYmFzZSAxNikJCVdlTGluayBTb2x1dGlvbnMsIEluYy4KLQkJCQkzRiwgTm8uIDg4LCBTZWMuIDEsIE5laS1IdSBSZC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItMDYgICAoaGV4KQkJQ3liZXJkeW5lIEluYy4KLTAwMjIwNiAgICAgKGJhc2UgMTYpCQlDeWJlcmR5bmUgSW5jLgotCQkJCTUwNIFAQzQ5LTIKLQkJCQlUc3VrdWJhLXNoaSBJYmFyYWtpLWtlbiAzMDUtMDgxNwotCQkJCUpBUEFOCi0KLTAwLTIyLTA3ICAgKGhleCkJCUludGVubyBCcm9hZGJhbmQgVGVjaG5vbG9neSBBQgotMDAyMjA3ICAgICAoYmFzZSAxNikJCUludGVubyBCcm9hZGJhbmQgVGVjaG5vbG9neSBBQgotCQkJCURyaXZoanVsc3bkZ2VuIDIyCi0JCQkJU3RvY2tob2xtIFNFIDEyNjMwCi0JCQkJU1dFREVOCi0KLTAwLTIyLTA4ICAgKGhleCkJCUNlcnRpY29tIENvcnAKLTAwMjIwOCAgICAgKGJhc2UgMTYpCQlDZXJ0aWNvbSBDb3JwCi0JCQkJNTUyMCBFeHBsb3JlciBEcml2ZSwgNHRoIEZsb29yCi0JCQkJTWlzc2lzc2F1Z2EgT04gTDRXIDVMMQotCQkJCUNBTkFEQQotCi0wMC0yMi0wOSAgIChoZXgpCQlPbXJvbiBIZWFsdGhjYXJlIENvLiwgTHRkCi0wMDIyMDkgICAgIChiYXNlIDE2KQkJT21yb24gSGVhbHRoY2FyZSBDby4sIEx0ZAotCQkJCTI0IFlhbWFub3NoaXRhLWNobyBZYW1hbm91Y2hpCi0JCQkJVWt5b2t1Ci0JCQkJS3lvdG8gIDYxNTAwODQKLQkJCQlKQVBBTgotCi0wMC0yMi0wQSAgIChoZXgpCQlPbkxpdmUsIEluYwotMDAyMjBBICAgICAoYmFzZSAxNikJCU9uTGl2ZSwgSW5jCi0JCQkJMTgxIEx5dHRvbiBBdmUKLQkJCQlQYWxvIEFsdG8gQ2FsaWZvcm5pYSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMEIgICAoaGV4KQkJTmF0aW9uYWwgU291cmNlIENvZGluZyBDZW50ZXIKLTAwMjIwQiAgICAgKGJhc2UgMTYpCQlOYXRpb25hbCBTb3VyY2UgQ29kaW5nIENlbnRlcgotCQkJCVN1aXRlIDcwMSxQb3dlciBDcmVhdGl2ZSBBLE5vLjEKLQkJCQlTaGFuZ2RpIEVhc3QgUm9hZCxIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMjItMEMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMjBDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTBEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjIwRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0wRSAgIChoZXgpCQlJbmRpZ28gU2VjdXJpdHkgQ28uLCBMdGQuCi0wMDIyMEUgICAgIChiYXNlIDE2KQkJSW5kaWdvIFNlY3VyaXR5IENvLiwgTHRkLgotCQkJCTJuZCBGbG9vciwgMjc3LTE2OSBTdW5nc29vMi1HYSwgU3VuZ2RvbmctR3UKLQkJCQlTZW91bCAgMTMzLTgzMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi0wRiAgIChoZXgpCQlNb0NBIChNdWx0aW1lZGlhIG92ZXIgQ29heCBBbGxpYW5jZSkKLTAwMjIwRiAgICAgKGJhc2UgMTYpCQlNb0NBIChNdWx0aW1lZGlhIG92ZXIgQ29heCBBbGxpYW5jZSkKLQkJCQk5MCBJbnZlcm5lc3MgQ2lyY2xlIEVhc3QKLQkJCQlFbmdsZXdvb2QgQ0EgOTQ1ODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTEwICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIyMTAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0xMSAgIChoZXgpCQlSb2hhdGkgU3lzdGVtcwotMDAyMjExICAgICAoYmFzZSAxNikJCVJvaGF0aSBTeXN0ZW1zCi0JCQkJMTE5MiBCb3JyZWdhcyBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTEyICAgKGhleCkJCUNBSSBOZXR3b3JrcywgSW5jLgotMDAyMjEyICAgICAoYmFzZSAxNikJCUNBSSBOZXR3b3JrcywgSW5jLgotCQkJCTE3MTUgRS4gV2lsc2hpcmUgQXZlbnVlCi0JCQkJU1RFIDcxOQotCQkJCVNhbnRhIEFuYSBDYWxpZm9ybmlhIDkyNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0xMyAgIChoZXgpCQlQQ0kgQ09SUE9SQVRJT04KLTAwMjIxMyAgICAgKGJhc2UgMTYpCQlQQ0kgQ09SUE9SQVRJT04KLQkJCQlOby4yNSwgTGFuZSA2NiwgSGViZWkgMXN0IFN0LiwgIEJlaXR1biBEaXN0cmljdAotCQkJCVRhaWNodW5nICA0MDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTE0ICAgKGhleCkJCVJJTk5BSSBLT1JFQQotMDAyMjE0ICAgICAoYmFzZSAxNikJCVJJTk5BSSBLT1JFQQotCQkJCTU2MC0yLCBTaGliam9uZy0xZG9uZywgUHVweW91bmctZ3UKLQkJCQk1dGggUmVzZWFyY2ggVGVhbQotCQkJCVB1cHlvdW5nLWd1IEluY2hlb24gNDAzLTg0NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi0xNSAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTAwMjIxNSAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91LAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi0xNiAgIChoZXgpCQlTSElCQVVSQSBWRU5ESU5HIE1BQ0hJTkUgQ09SUE9SQVRJT04KLTAwMjIxNiAgICAgKGJhc2UgMTYpCQlTSElCQVVSQSBWRU5ESU5HIE1BQ0hJTkUgQ09SUE9SQVRJT04KLQkJCQlFa2ltYWUtY2hvMTMtMTAKLQkJCQlPYmFtYS1zaGkgRnVrdWkta2VuIDkxNy0wMDc3Ci0JCQkJSkFQQU4KLQotMDAtMjItMTcgICAoaGV4KQkJTmVhdCBFbGVjdHJvbmljcwotMDAyMjE3ICAgICAoYmFzZSAxNikJCU5lYXQgRWxlY3Ryb25pY3MKLQkJCQlWYXJ1duRnZW4gMgotCQkJCUz2ZGRla/ZwaW5nZSBTa+VuZSBTRS0yNDY0MgotCQkJCVNXRURFTgotCi0wMC0yMi0xOCAgIChoZXgpCQlWZXJpdnVlIEluYy4KLTAwMjIxOCAgICAgKGJhc2UgMTYpCQlWZXJpdnVlIEluYy4KLQkJCQkzIENhcmxpc2xlIFJvYWQKLQkJCQlXZXN0Zm9yZCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMTkgICAoaGV4KQkJRGVsbCBJbmMKLTAwMjIxOSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMUEgICAoaGV4KQkJQXVkaW8gUHJlY2lzaW9uCi0wMDIyMUEgICAgIChiYXNlIDE2KQkJQXVkaW8gUHJlY2lzaW9uCi0JCQkJNTc1MCBTVyBBcmN0aWMgRHJpdmUKLQkJCQlCZWF2ZXJ0b24gT1IgOTcwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTFCICAgKGhleCkJCU1vcmVnYSBTeXN0ZW1zCi0wMDIyMUIgICAgIChiYXNlIDE2KQkJTW9yZWdhIFN5c3RlbXMKLQkJCQk1NzcwIEh1cm9udGFyaW8gU3RyZWV0Ci0JCQkJU3VpdGUgNTAxCi0JCQkJTWlzc2lzc2F1Z2EgT250YXJpbyBMNVIgM0c1Ci0JCQkJQ0FOQURBCi0KLTAwLTIyLTFDICAgKGhleCkJCVBSSVZBVEUKLTAwMjIxQyAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMjItMUQgICAoaGV4KQkJRnJlZWdlbmUgVGVjaG5vbG9neSBMVEQKLTAwMjIxRCAgICAgKGJhc2UgMTYpCQlGcmVlZ2VuZSBUZWNobm9sb2d5IExURAotCQkJCTMvRiAsQyBCTERHLFdlaXBlbmdkYSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlsb25na291IGluZHVzdHJpYWwgYXJlYSxiYW8tYW4gZGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHb25nZG9uZyA1MTgxMDkKLQkJCQlDSElOQQotCi0wMC0yMi0xRSAgIChoZXgpCQlNZWRpYSBEZXZpY2VzIENvLiwgTHRkLgotMDAyMjFFICAgICAoYmFzZSAxNikJCU1lZGlhIERldmljZXMgQ28uLCBMdGQuCi0JCQkJUm0xMDAyIEFjZSBUZWNobm9Ub3dlcig5dGgpIDM0NS0zMAotCQkJCUthc2FuLWRvbmcsIEt1bWNob24ta3UKLQkJCQlTZW91bCAgMTUzLTgwMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi0xRiAgIChoZXgpCQllU2FuZyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDIyMUYgICAgIChiYXNlIDE2KQkJZVNhbmcgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCSMxLTgxNywgSVQgQ2FzdGxlIDU1MC0xLCBHYXNhbi1Eb25nLAotCQkJCUdldW1jaGVvbi1HdSwKLQkJCQlTZW91bCAgMTUzLTc2OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi0yMCAgIChoZXgpCQlNaXRhYyBUZWNobm9sb2d5IENvcnAKLTAwMjIyMCAgICAgKGJhc2UgMTYpCQlNaXRhYyBUZWNobm9sb2d5IENvcnAKLQkJCQk5dGggRmwuLCAjNzUsIE1pbi1zaGVuZyBFLiBSb2FkLCBTZWMuIDMsCi0JCQkJVGFpcGVpICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTIxICAgKGhleCkJCUlUT0ggREVOS0kgQ08sTFRELgotMDAyMjIxICAgICAoYmFzZSAxNikJCUlUT0ggREVOS0kgQ08sTFRELgotCQkJCTExNDYtMiwgQXNhenVtYS1jaG8KLQkJCQlLYXNhaSBIeW9nbyA2NzktMDE4MAotCQkJCUpBUEFOCi0KLTAwLTIyLTIyICAgKGhleCkJCVNjaGFmZm5lciBEZXV0c2NobGFuZCBHbWJIIAotMDAyMjIyICAgICAoYmFzZSAxNikJCVNjaGFmZm5lciBEZXV0c2NobGFuZCBHbWJIIAotCQkJCU7vv71ydGluZ2VuIEJyYW5jaAotCQkJCVJhaWR3YW5nZXIgU3RyLiAxMiAKLQkJCQlO77+9cnRpbmdlbiBCVyBELTcyNjIyIAotCQkJCUdFUk1BTlkKLQotMDAtMjItMjMgICAoaGV4KQkJVGltZUtlZXBpbmcgU3lzdGVtcywgSW5jLgotMDAyMjIzICAgICAoYmFzZSAxNikJCVRpbWVLZWVwaW5nIFN5c3RlbXMsIEluYy4KLQkJCQkzMDcwMCBCYWluYnJpZGdlIFJvYWQKLQkJCQlTdWl0ZSBICi0JCQkJU29sb24gT0ggNDQxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTI0ICAgKGhleCkJCUdvb2QgV2lsbCBJbnN0cnVtZW50IENvLiwgTHRkLgotMDAyMjI0ICAgICAoYmFzZSAxNikJCUdvb2QgV2lsbCBJbnN0cnVtZW50IENvLiwgTHRkLgotCQkJCU5vLiA3LTEgSmhvbmdzaW5nIFJvYWQsCi0JCQkJVHVjaGVuZyBDaXR5Ci0JCQkJVGFpcGVpICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTI1ICAgKGhleCkJCVRoYWxlcyBBdmlvbmljcyBMdGQKLTAwMjIyNSAgICAgKGJhc2UgMTYpCQlUaGFsZXMgQXZpb25pY3MgTHRkCi0JCQkJODYgQnVzaGV5IFJvYWQKLQkJCQlSYXluZXMgUGFyawotCQkJCUxvbmRvbiAgU1cyMCAwSlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi0yNiAgIChoZXgpCQlBdmFhaywgSW5jLgotMDAyMjI2ICAgICAoYmFzZSAxNikJCUF2YWFrLCBJbmMuCi0JCQkJOTY0NSBTY3JhbnRvbiBSZC4sIFN1aXRlIDExMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMjcgICAoaGV4KQkJdXYtZWxlY3Ryb25pYyBHbWJICi0wMDIyMjcgICAgIChiYXNlIDE2KQkJdXYtZWxlY3Ryb25pYyBHbWJICi0JCQkJR3Jvc3N3aWVzZW5zdHJhc3NlIDIwCi0JCQkJRHVyY2hoYXVzZW4gQmFkZW4tV/xydHRlbWJlcmcgNzg1OTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTI4ICAgKGhleCkJCUJyZWV6ZSBJbm5vdmF0aW9ucyBMdGQuCi0wMDIyMjggICAgIChiYXNlIDE2KQkJQnJlZXplIElubm92YXRpb25zIEx0ZC4KLQkJCQlIYXIgSG90enZpbSwgUC5PLiBCb3ggNDUzOTcKLQkJCQlKZXJ1c2FsZW0gSXNyYWVsIDkxNDUxCi0JCQkJSVNSQUVMCi0KLTAwLTIyLTI5ICAgKGhleCkJCUNvbXB1bWVkaWNzIEx0ZAotMDAyMjI5ICAgICAoYmFzZSAxNikJCUNvbXB1bWVkaWNzIEx0ZAotCQkJCTMwIC0gNDAgRmxvY2toYXJ0IFN0cmVldAotCQkJCUFiYm90c2ZvcmQgVmljdG9yaWEgMzA2NwotCQkJCUFVU1RSQUxJQQotCi0wMC0yMi0yQSAgIChoZXgpCQlTb3VuZEVhciBBL1MKLTAwMjIyQSAgICAgKGJhc2UgMTYpCQlTb3VuZEVhciBBL1MKLQkJCQlSZW50ZW1lc3RlcnZlaiA4MAotCQkJCUNvcGVuaGFnZW4gTlYgRGVubWFyayBESy0yNDAwCi0JCQkJREVOTUFSSwotCi0wMC0yMi0yQiAgIChoZXgpCQlOdWNvbW0sIEluYy4KLTAwMjIyQiAgICAgKGJhc2UgMTYpCQlOdWNvbW0sIEluYy4KLQkJCQkxMDEgQmlsYnkgUm9hZAotCQkJCUhhY2tldHRzdG93biBOSiAwNzg0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMkMgICAoaGV4KQkJQ2V0b24gQ29ycAotMDAyMjJDICAgICAoYmFzZSAxNikJCUNldG9uIENvcnAKLQkJCQk4MjU5IDEyMm5kIEF2ZSBORSwgU3VpdGUgMjc1Ci0JCQkJS2lya2xhbmQgV2FzaGluZ3RvbiA5ODAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMkQgICAoaGV4KQkJU01DIE5ldHdvcmtzIEluYy4KLTAwMjIyRCAgICAgKGJhc2UgMTYpCQlTTUMgTmV0d29ya3MgSW5jLgotCQkJCTIwIE1hc29uCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0yRSAgIChoZXgpCQltYWludGVjaCBHbWJICi0wMDIyMkUgICAgIChiYXNlIDE2KQkJbWFpbnRlY2ggR21iSAotCQkJCVNlZXdlZyA2MAotCQkJCUj2Y2hiZXJnIEJhdmFyaWEgOTcyMDQKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTJGICAgKGhleCkJCU9wZW4gR3JpZCBDb21wdXRpbmcsIEluYy4KLTAwMjIyRiAgICAgKGJhc2UgMTYpCQlPcGVuIEdyaWQgQ29tcHV0aW5nLCBJbmMuCi0JCQkJNDAzMC0xIFdlc3QgQnJha2VyIExhbmUgU1RFMTMwCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0zMCAgIChoZXgpCQlGdXR1cmVMb2dpYyBJbmMuCi0wMDIyMzAgICAgIChiYXNlIDE2KQkJRnV0dXJlTG9naWMgSW5jLgotCQkJCTQyNSBFLiBDb2xvcmFkbyBTdC4sIFN0ZS4gMTAwCi0JCQkJR2xlbmRhbGUgQ0EgOTEyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTMxICAgKGhleCkJCVNNVCZDIENvLiwgTHRkLgotMDAyMjMxICAgICAoYmFzZSAxNikJCVNNVCZDIENvLiwgTHRkLgotCQkJCTJGci4gSGFrc2FuIEJsZGcuIDExMCwgR3dhbmdqYW5nLWRvbmcsIEd3YW5namluLWd1Ci0JCQkJU2VvdWwgIDE0My04MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItMzIgICAoaGV4KQkJRGVzaWduIERlc2lnbiBUZWNobm9sb2d5IEx0ZAotMDAyMjMyICAgICAoYmFzZSAxNikJCURlc2lnbiBEZXNpZ24gVGVjaG5vbG9neSBMdGQKLQkJCQlVbml0IDksIEFzaCBSb2FkIFNvdXRoCi0JCQkJV3JleGhhbSBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCVdyZXhoYW0gTm9ydGggV2FsZXMgTEwxMyA5VUcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi0zMyAgIChoZXgpCQlQaXJlbGxpIEJyb2FkYmFuZCBTb2x1dGlvbnMKLTAwMjIzMyAgICAgKGJhc2UgMTYpCQlQaXJlbGxpIEJyb2FkYmFuZCBTb2x1dGlvbnMKLQkJCQlWSUFMRSBTQVJDQSAyMjIKLQkJCQlNSUxBTk8gIDIwMTI2Ci0JCQkJSVRBTFkKLQotMDAtMjItMzQgICAoaGV4KQkJQ29ydmVudGlzIEluYy4KLTAwMjIzNCAgICAgKGJhc2UgMTYpCQlDb3J2ZW50aXMgSW5jLgotCQkJCTE0MTAgRW5lcmd5IFBhcmsgRHIuIFN1aXRlICMxCi0JCQkJU3QuIFBhdWwgTWlubmVzb3RhIDU1MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0zNSAgIChoZXgpCQlTdHJ1a3RvbiBTeXN0ZW1zIGJ2Ci0wMDIyMzUgICAgIChiYXNlIDE2KQkJU3RydWt0b24gU3lzdGVtcyBidgotCQkJCVdlc3RrYW5hYWxkaWprIDIKLQkJCQlVdHJlY2h0ICAzNTQyIERBCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjItMzYgICAoaGV4KQkJVkVDVE9SIFNQLiBaIE8uTy4KLTAwMjIzNiAgICAgKGJhc2UgMTYpCQlWRUNUT1IgU1AuIFogTy5PLgotCQkJCUtSWkVNT1dBIDYKLQkJCQlHRFlOSUEgIDgxLTU3NwotCQkJCVBPTEFORAotCi0wMC0yMi0zNyAgIChoZXgpCQlTaGluaGludCBHcm91cAotMDAyMjM3ICAgICAoYmFzZSAxNikJCVNoaW5oaW50IEdyb3VwCi0JCQkJVW5pdCAxNTA2LCAxNS9GLCBOYW55YW5nIFBsYXphLCwgNTcgSHVuZyBUbyBSb2FkLAotCQkJCUt3dW4gVG9uZywgS2xuCi0JCQkJSE9ORyBLT05HCi0KLTAwLTIyLTM4ICAgKGhleCkJCUxPR0lQTFVTCi0wMDIyMzggICAgIChiYXNlIDE2KQkJTE9HSVBMVVMKLQkJCQkxLCBSVUUgQ0xFTUVOVCBBREVSCi0JCQkJQi02MDQxIEdPU1NFTEVJRVMKLQkJCQlHT1NTRUxJRVMgSEFJTkFVVCBCLTYwNDEKLQkJCQlCRUxHSVVNCi0KLTAwLTIyLTM5ICAgKGhleCkJCUluZGlhbmEgTGlmZSBTY2llbmNlcyBJbmNvcnBvcmF0ZWQKLTAwMjIzOSAgICAgKGJhc2UgMTYpCQlJbmRpYW5hIExpZmUgU2NpZW5jZXMgSW5jb3Jwb3JhdGVkCi0JCQkJODg3NSBCYXNoIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJbmRpYW5hIDQ2MjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0zQSAgIChoZXgpCQlTY2llbnRpZmljIEF0bGFudGEsIENpc2NvIFNQVlQgR3JvdXAKLTAwMjIzQSAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljIEF0bGFudGEsIENpc2NvIFNQVlQgR3JvdXAKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItM0IgICAoaGV4KQkJQ29tbXVuaWNhdGlvbiBOZXR3b3JrcywgTExDCi0wMDIyM0IgICAgIChiYXNlIDE2KQkJQ29tbXVuaWNhdGlvbiBOZXR3b3JrcywgTExDCi0JCQkJMyBDb3Jwb3JhdGUgRHJpdmUKLQkJCQlEYW5idXJ5IENUIDA2ODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0zQyAgIChoZXgpCQlSQVRJTyBFbnR3aWNrbHVuZ2VuIEdtYkgKLTAwMjIzQyAgICAgKGJhc2UgMTYpCQlSQVRJTyBFbnR3aWNrbHVuZ2VuIEdtYkgKLQkJCQlMdWR3aWctRXJoYXJkLVN0cmFzc2UgMjIKLQkJCQlIYW1idXJnICAyMDQ1OQotCQkJCUdFUk1BTlkKLQotMDAtMjItM0QgICAoaGV4KQkJSnVtcEdlbiBTeXN0ZW1zLCBMTEMKLTAwMjIzRCAgICAgKGJhc2UgMTYpCQlKdW1wR2VuIFN5c3RlbXMsIExMQwotCQkJCTIxMTEgUGFsb21hciBBaXJwb3J0IFJkLCBTdGUgMTQwCi0JCQkJQ2FybHNiYWQgQ0EgOTIwMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTNFICAgKGhleCkJCUlSVHJhbnMgR21iSAotMDAyMjNFICAgICAoYmFzZSAxNikJCUlSVHJhbnMgR21iSAotCQkJCUVpbnN0ZWluc3RyYXNzZSAxNAotCQkJCVVudGVyc2NobGVpc3NoZWltIEJBWUVSTiA4NTcxNgotCQkJCUdFUk1BTlkKLQotMDAtMjItM0YgICAoaGV4KQkJTmV0Z2VhciBJbmMuCi0wMDIyM0YgICAgIChiYXNlIDE2KQkJTmV0Z2VhciBJbmMuCi0JCQkJNDUwMCBHcmVhdCBBbWVyaWNhIFBreQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi00MCAgIChoZXgpCQlVbml2ZXJzYWwgVGVsZWNvbSBTL0EKLTAwMjI0MCAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgVGVsZWNvbSBTL0EKLQkJCQlBdmVuaWRhIFBhdWxpc3RhLCAyNDQ0IC0gMTcgYW5kYXIKLQkJCQlTYW8gUGF1bG8gIDAxMzEwLTMwMAotCQkJCUJSQVpJTAotCi0wMC0yMi00MSAgIChoZXgpCQlBcHBsZSwgSW5jCi0wMDIyNDEgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNDIgICAoaGV4KQkJQWxhY3JvbiBJbmMuCi0wMDIyNDIgICAgIChiYXNlIDE2KQkJQWxhY3JvbiBJbmMuCi0JCQkJNzEgU3BpdCBCcm9vayBSZC4KLQkJCQlTdWl0ZSAyMDQKLQkJCQlOYXNodWEgTkggMDMwNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTQzICAgKGhleCkJCUF6dXJlV2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjI0MyAgICAgKGJhc2UgMTYpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJOEYuLCBOby4gOTQsIEJhb3pob25nIFJkLiwgWGluZGlhbgotCQkJCVRhaXBlaSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi00NCAgIChoZXgpCQlDaGVuZ2R1IExpbmtvbiBDb21tdW5pY2F0aW9ucyBEZXZpY2UgQ28uLCBMdGQKLTAwMjI0NCAgICAgKGJhc2UgMTYpCQlDaGVuZ2R1IExpbmtvbiBDb21tdW5pY2F0aW9ucyBEZXZpY2UgQ28uLCBMdGQKLQkJCQk1Zi0wMiwgSnVudG9uZyBCdWlsZGluZywgTm8uIDUzLFNodWFuZ2ZlbmcgUm9hZCwgV3Vob3UgRGlzdHJpY3QsCi0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLTAwLTIyLTQ1ICAgKGhleCkJCUxlaW5lICYgTGluZGUgQUIKLTAwMjI0NSAgICAgKGJhc2UgMTYpCQlMZWluZSAmIExpbmRlIEFCCi0JCQkJQm94IDgKLQkJCQlTdHLkbmdu5HMgU/ZkZXJtYW5sYW5kIFNFLTY0NSAyMQotCQkJCVNXRURFTgotCi0wMC0yMi00NiAgIChoZXgpCQlFdm9jIEludGVsbGlnZW50IFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMjI0NiAgICAgKGJhc2UgMTYpCQlFdm9jIEludGVsbGlnZW50IFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlOby4zMSBHYW94aW4gQ2VudGVyYWwgQXZlbnVlIDR0aCBSb2FkLE5hbnNoYW4gRGlzdHJpY3QgU2hlbnpoZW4gQ2l0eQotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yMi00NyAgIChoZXgpCQlEQUMgRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi0wMDIyNDcgICAgIChiYXNlIDE2KQkJREFDIEVOR0lORUVSSU5HIENPLiwgTFRELgotCQkJCTEtNSBPeWFuYWdpLWNobwotCQkJCUthbWl0b2JhLCBNaW5hbWkta3UKLQkJCQlLeW90byAgNjAxLTgxMjgKLQkJCQlKQVBBTgotCi0wMC0yMi00OCAgIChoZXgpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLTAwMjI0OCAgICAgKGJhc2UgMTYpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLQkJCQlPbmUgTWljcm9zb2Z0IFdheQotCQkJCVJlZG1vbmQgV2FzaGluZ3RvbiA5ODA1Mi02Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi00OSAgIChoZXgpCQlIT01FIE1VTFRJRU5FUkdZIFNMCi0wMDIyNDkgICAgIChiYXNlIDE2KQkJSE9NRSBNVUxUSUVORVJHWSBTTAotCQkJCUNBUElUwU4gSEFZQSAxCi0JCQkJRURJRklDSU8gRVVDT0NFTlRSTyBCQUpPCi0JCQkJTUFEUklEICAyODAyMAotCQkJCVNQQUlOCi0KLTAwLTIyLTRBICAgKGhleCkJCVJBWUxBU0UgQUcKLTAwMjI0QSAgICAgKGJhc2UgMTYpCQlSQVlMQVNFIEFHCi0JCQkJQXJnZWxzcmllZGVyIEZlbGQgMi00Ci0JCQkJV2Vzc2xpbmcgQmF2YXJpYSA4MjIzNAotCQkJCUdFUk1BTlkKLQotMDAtMjItNEIgICAoaGV4KQkJQUlSVEVDSCBURUNITk9MT0dJRVMsIElOQy4KLTAwMjI0QiAgICAgKGJhc2UgMTYpCQlBSVJURUNIIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTE5ZmwtNCwgbm8uNzcsIEhzaW4gVGFpIFd1IFJkLiwgc2VjLjEsIEhzaW4tQ2hpaAotCQkJCVRhaXBlaSAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi00QyAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjI0QyAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yMi00RCAgIChoZXgpCQlNSVRBQyBJTlRFUk5BVElPTkFMIENPUlAuCi0wMDIyNEQgICAgIChiYXNlIDE2KQkJTUlUQUMgSU5URVJOQVRJT05BTCBDT1JQLgotCQkJCTZUSCBGTC4sIE5PMTg3LCBUSURJTkcgQkxWRC4sIFNFQy4gMgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi00RSAgIChoZXgpCQlTRUVuZXJneSBDb3JwLgotMDAyMjRFICAgICAoYmFzZSAxNikJCVNFRW5lcmd5IENvcnAuCi0JCQkJNEYsIE5vLjYxLCBEb25nc2luZyBSRC4KLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItNEYgICAoaGV4KQkJQnl6b3JvIE5ldHdvcmtzIEx0ZC4KLTAwMjI0RiAgICAgKGJhc2UgMTYpCQlCeXpvcm8gTmV0d29ya3MgTHRkLgotCQkJCVJvb20gNUExLEJsb2NrIEEsIEtlc2hpIFBsYXphLE5vLiAyOEEgSW5mby4gUm9hZCwKLQkJCQlIYWlEaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMjItNTAgICAoaGV4KQkJUG9pbnQgU2l4IFdpcmVsZXNzLCBMTEMKLTAwMjI1MCAgICAgKGJhc2UgMTYpCQlQb2ludCBTaXggV2lyZWxlc3MsIExMQwotCQkJCTIzMzMgQWx1bW5pIFBhcmsgUGxhemEKLQkJCQlTdWl0ZSAzMDUKLQkJCQlMZXhpbmd0b24gS1kgNDA1MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTUxICAgKGhleCkJCUx1bWFzZW5zZSBUZWNobm9sb2dpZXMKLTAwMjI1MSAgICAgKGJhc2UgMTYpCQlMdW1hc2Vuc2UgVGVjaG5vbG9naWVzCi0JCQkJMzAzMyBTY290dCBCbHZkLgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi01MiAgIChoZXgpCQlaT0xMIExpZmVjb3IgQ29ycG9yYXRpb24KLTAwMjI1MiAgICAgKGJhc2UgMTYpCQlaT0xMIExpZmVjb3IgQ29ycG9yYXRpb24KLQkJCQkxMjEgRnJlZXBvcnQgUm9hZAotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTUzICAgKGhleCkJCUVudG9yaWFuIFRlY2hub2xvZ2llcwotMDAyMjUzICAgICAoYmFzZSAxNikJCUVudG9yaWFuIFRlY2hub2xvZ2llcwotCQkJCTg5MDAgU2hvYWwgQ3JlZWsgQmx2ZAotCQkJCUF1c3RpbiBUWCA3ODc1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNTQgICAoaGV4KQkJQmlnZWxvdyBBZXJvc3BhY2UKLTAwMjI1NCAgICAgKGJhc2UgMTYpCQlCaWdlbG93IEFlcm9zcGFjZQotCQkJCTE4OTkgVy4gQnJvb2tzIEF2ZQotCQkJCU5vcnRoIExhcyBWZWdhcyBOViA4OTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNTUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMjU1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTU2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjI1NiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi01NyAgIChoZXgpCQkzQ29tIEV1cm9wZSBMdGQKLTAwMjI1NyAgICAgKGJhc2UgMTYpCQkzQ29tIEV1cm9wZSBMdGQKLQkJCQlQZW9wbGVidWlsZGluZyAyCi0JCQkJTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzLiBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItNTggICAoaGV4KQkJVGFpeW8gWXVkZW4gQ28uLCBMdGQuCi0wMDIyNTggICAgIChiYXNlIDE2KQkJVGFpeW8gWXVkZW4gQ28uLCBMdGQuCi0JCQkJOC0xLCBTYWthZS1jaG8KLQkJCQlUYWthc2FraS1zaGkgR3VubWEta2VuIDM3MC04NTIyCi0JCQkJSkFQQU4KLQotMDAtMjItNTkgICAoaGV4KQkJR3Vhbmd6aG91IE5ldyBQb3N0Y29tIEVxdWlwbWVudCBDby4sTHRkLgotMDAyMjU5ICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBOZXcgUG9zdGNvbSBFcXVpcG1lbnQgQ28uLEx0ZC4KLQkJCQlOby4zoaFHdWFuZ3B1eGkgUm9hZCxHdWFuZ3pob3UgU2NpZW5jZSBDaXR5LAotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYzCi0JCQkJQ0hJTkEKLQotMDAtMjItNUEgICAoaGV4KQkJR2FyZGUgU2VjdXJpdHkgQUIKLTAwMjI1QSAgICAgKGJhc2UgMTYpCQlHYXJkZSBTZWN1cml0eSBBQgotCQkJCUJveCA3OAotCQkJCVNvZGVyaGFtbiAgUy04MjYgMjIKLQkJCQlTV0VERU4KLQotMDAtMjItNUIgICAoaGV4KQkJVGVyYWRpY2kgQ29ycG9yYXRpb24KLTAwMjI1QiAgICAgKGJhc2UgMTYpCQlUZXJhZGljaSBDb3Jwb3JhdGlvbgotCQkJCSM1MDAgLSA0NDAwIERvbWluaW9uIFN0LgotCQkJCUJ1cm5hYnkgQkMgVjVHICRHMwotCQkJCUNBTkFEQQotCi0wMC0yMi01QyAgIChoZXgpCQlNdWx0aW1lZGlhICYgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5Ci0wMDIyNUMgICAgIChiYXNlIDE2KQkJTXVsdGltZWRpYSAmIENvbW11bmljYXRpb24gVGVjaG5vbG9neQotCQkJCURpZ2l0YWwgRW1waXJlIEQtODAxICM5ODAtMwotCQkJCVllb25nVG9uZy1Eb25nCi0JCQkJU3V3b24tQ2l0eSBLeWVvbmdHaS1EbyA0NDMtODEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLTVEICAgKGhleCkJCURpZ2ljYWJsZSBOZXR3b3JrIEluZGlhIFB2dC4gTHRkLgotMDAyMjVEICAgICAoYmFzZSAxNikJCURpZ2ljYWJsZSBOZXR3b3JrIEluZGlhIFB2dC4gTHRkLgotCQkJCTdCLCBTaGFoIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJT2ZmLiBWZWVyYSBEZXNhaSBSb2FkLAotCQkJCUFuZGhlcmkgLSBXZXN0LCBNdW1iYWkuIE1haGFyYXNodHJhIDQwMCAwNTMKLQkJCQlJTkRJQQotCi0wMC0yMi01RSAgIChoZXgpCQlVd2luIFRlY2hub2xvZ2llcyBDby4sTFRECi0wMDIyNUUgICAgIChiYXNlIDE2KQkJVXdpbiBUZWNobm9sb2dpZXMgQ28uLExURAotCQkJCTJGLE5vLjIyLlImRCBSRCBJSSxTQklQCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi01RiAgIChoZXgpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAyMjVGICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsOTAsQ2hpZW4gMSBSb2FkLENodW5nSG8sCi0JCQkJVGFpcGVpIEhzaWVuLCAyMzU4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItNjAgICAoaGV4KQkJQUZSRUVZIEluYy4KLTAwMjI2MCAgICAgKGJhc2UgMTYpCQlBRlJFRVkgSW5jLgotCQkJCTZGLCBOby4yNDksIENoaWVuIEkgUm9hZAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIENvdW50eSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTYxICAgKGhleCkJCUZyb250aWVyIFNpbGljb24gTHRkCi0wMDIyNjEgICAgIChiYXNlIDE2KQkJRnJvbnRpZXIgU2lsaWNvbiBMdGQKLQkJCQlHbGVuZWFnbGVzLCBUaGUgQmVsZnJ5Ci0JCQkJQ29sb25pYWwgV2F5Ci0JCQkJV2F0Zm9yZCBIZXJ0Zm9yZHNoaXJlIFdEMjQgNFdICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItNjIgICAoaGV4KQkJQkVQIE1hcmluZQotMDAyMjYyICAgICAoYmFzZSAxNikJCUJFUCBNYXJpbmUKLQkJCQkxMyBUYXJuZGFsZSBHcm92ZSBBbGJhbnkKLQkJCQlOb3J0aCBTaG9yZQotCQkJCUF1Y2tsYW5kICAwNjMyCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMjItNjMgICAoaGV4KQkJS29vcyBUZWNobmljYWwgU2VydmljZXMsIEluYy4KLTAwMjI2MyAgICAgKGJhc2UgMTYpCQlLb29zIFRlY2huaWNhbCBTZXJ2aWNlcywgSW5jLgotCQkJCTEwMjUgR3JlZW53b29kIEJsdmQuCi0JCQkJU3VpdGUgMzkxCi0JCQkJTGFrZSBNYXJ5IEZMIDMyNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi02NCAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMjI2NCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAyCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNjUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjI2NSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjItNjYgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjI2NiAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjItNjcgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDIyNjcgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJMjIyMSBMYWtlc2lkZSBCbHZkCi0JCQkJUmljaGFyZHNvbiBUZXhhcyA3NTA4Mi00Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi02OCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAyMjY4ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNjYsIENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItNjkgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMjI2OSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCTY2LCBDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTZBICAgKGhleCkJCUhvbmV5d2VsbAotMDAyMjZBICAgICAoYmFzZSAxNikJCUhvbmV5d2VsbAotCQkJCTg4NDAgRXZlcmdyZWVuIEJsdmQuCi0JCQkJTWlubmVhcG9saXMgTU4gNTU0MzMtNjA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNkIgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi0wMDIyNkIgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi02QyAgIChoZXgpCQlMaW5rU3ByaXRlIFRlY2hub2xvZ2llcywgSW5jLgotMDAyMjZDICAgICAoYmFzZSAxNikJCUxpbmtTcHJpdGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTQxMCBDYW5ub24gTW91bnRhaW4gRHIKLQkJCQlMb25nbW9udCBDTyA4MDUwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNkQgICAoaGV4KQkJU2hlbnpoZW4gR0lFQyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMjI2RCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBHSUVDIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTI0L0YsIFhpTmlhbiBDZW50ZXIsIFNoZW5OYW4gUm9hZCA2MDIxIywgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIFByb3ZpbmNlIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTIyLTZFICAgKGhleCkJCUdvd2VsbCBFbGVjdHJvbmljIExpbWl0ZWQKLTAwMjI2RSAgICAgKGJhc2UgMTYpCQlHb3dlbGwgRWxlY3Ryb25pYyBMaW1pdGVkCi0JCQkJUm9vbSAzNjAxICwzNiBGbG9vcixHb2xkZW4gQ2VudHJhbCBUb3dlcixKaW50aWFuIFJvYWQsRnV0aWFuIENlbnRyYWwgRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODA0OAotCQkJCUNISU5BCi0KLTAwLTIyLTZGICAgKGhleCkJCTNvbmVkYXRhIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTAwMjI2RiAgICAgKGJhc2UgMTYpCQkzb25lZGF0YSBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJMy9GLCBCLzIsIEppdXhpYW5nbGluZyBJbmR1c3RyaWFsIERpc3RyaWN0LCBYaWxpIFRvd24sIE5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NQotCQkJCUNISU5BCi0KLTAwLTIyLTcwICAgKGhleCkJCUFCSyBOb3J0aCBBbWVyaWNhLCBMTEMKLTAwMjI3MCAgICAgKGJhc2UgMTYpCQlBQksgTm9ydGggQW1lcmljYSwgTExDCi0JCQkJNDQwIE5vcnRoIFdvbGZlIFJkLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNzEgICAoaGV4KQkJSuRnZXIgQ29tcHV0ZXJnZXN0ZXVlcnRlIE1lc3N0ZWNobmlrIEdtYkgKLTAwMjI3MSAgICAgKGJhc2UgMTYpCQlK5GdlciBDb21wdXRlcmdlc3RldWVydGUgTWVzc3RlY2huaWsgR21iSAotCQkJCVJoZWluc3RyYd9lIDItNAotCQkJCUxvcnNjaCBIZXNzZW4gNjQ2NTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTcyICAgKGhleCkJCUFtZXJpY2FuIE1pY3JvLUZ1ZWwgRGV2aWNlIENvcnAuCi0wMDIyNzIgICAgIChiYXNlIDE2KQkJQW1lcmljYW4gTWljcm8tRnVlbCBEZXZpY2UgQ29ycC4KLQkJCQkyMTgxIEJ1Y2hhbmFuIExvb3AKLQkJCQlGZXJuZGFsZSBXQSA5ODI0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNzMgICAoaGV4KQkJVGVjaHdheQotMDAyMjczICAgICAoYmFzZSAxNikJCVRlY2h3YXkKLQkJCQlSbSAxMDAyLCBEYWVoeXVuIFRlY2hubyBXb3JsZCBCZCwKLQkJCQkxNzQsIE9qdW4tRG9uZywKLQkJCQlVaXdhbmctU2ksIEt5dW5na2ktRG8gNDM3LTgyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi03NCAgIChoZXgpCQlGYW1pbHlQaG9uZSBBQgotMDAyMjc0ICAgICAoYmFzZSAxNikJCUZhbWlseVBob25lIEFCCi0JCQkJQW5ja2FyZ3JpcHNnYXRhbiAzCi0JCQkJTWFsbfYgIDIxMTE5Ci0JCQkJU1dFREVOCi0KLTAwLTIyLTc1ICAgKGhleCkJCUJlbGtpbiBJbnRlcm5hdGlvbmFsLCBJbmMuCi0wMDIyNzUgICAgIChiYXNlIDE2KQkJQmVsa2luIEludGVybmF0aW9uYWwsIEluYy4KLQkJCQk1MDEgVy4gV2FsbnV0IFN0LgotCQkJCUNvbXB0b24gQ0EuIDkwMjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi03NiAgIChoZXgpCQlUcmlwbGUgRVlFIEIuVi4KLTAwMjI3NiAgICAgKGJhc2UgMTYpCQlUcmlwbGUgRVlFIEIuVi4KLQkJCQlWYWFzc2Vuc2V3ZWcgNzEKLQkJCQlFbXN0ICA4MTY2IEFUCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjItNzcgICAoaGV4KQkJTkVDIEF1c3RyYWxpYSBQdHkgTHRkCi0wMDIyNzcgICAgIChiYXNlIDE2KQkJTkVDIEF1c3RyYWxpYSBQdHkgTHRkCi0JCQkJNjQ5LTY1NSBTcHJpbmd2YWxlIFJkCi0JCQkJTXVsZ3JhdmUgVmljdG9yaWEgMzE3MAotCQkJCUFVU1RSQUxJQQotCi0wMC0yMi03OCAgIChoZXgpCQlTaGVuemhlbiAgVG9uZ2ZhbmcgTXVsdGltZWRpYSAgVGVjaG5vbG9neSBDby4sTHRkLgotMDAyMjc4ICAgICAoYmFzZSAxNikJCVNoZW56aGVuICBUb25nZmFuZyBNdWx0aW1lZGlhICBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJOXRoIEZsb29yLEJ1aWxkaW5nICNELFRvbmdmYW5nIEluZm9ybWF0aW9uIEhhcmJvdXIsSGlnaC10ZWNoIEluZHVzdHJpYWwgUGFyayxMYW5nc2hhbiBSRCwgTmFuU2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbmcgR3VhbmdEb25nIDUxODA1OAotCQkJCUNISU5BCi0KLTAwLTIyLTc5ICAgKGhleCkJCU5pcHBvbiBDb25sdXggQ28uLCBMdGQuCi0wMDIyNzkgICAgIChiYXNlIDE2KQkJTmlwcG9uIENvbmx1eCBDby4sIEx0ZC4KLQkJCQk1LTMtOCwgQ2hpeW9kYQotCQkJCVNha2Fkby1zaGkgU2FpdGFtYSAzNTAtMDIxNAotCQkJCUpBUEFOCi0KLTAwLTIyLTdBICAgKGhleCkJCVRlbGVjb20gRGVzaWduCi0wMDIyN0EgICAgIChiYXNlIDE2KQkJVGVsZWNvbSBEZXNpZ24KLQkJCQlaYSBSZW1vcmEKLQkJCQlWb2llIFJvbWFpbmUKLQkJCQkzMzE3MCBHcmFkaWduYW4gCi0JCQkJRlJBTkNFCi0KLTAwLTIyLTdCICAgKGhleCkJCUFwb2dlZSBMYWJzLCBJbmMuCi0wMDIyN0IgICAgIChiYXNlIDE2KQkJQXBvZ2VlIExhYnMsIEluYy4KLQkJCQkyMTAgUy4gM3JkIFN0LgotCQkJCU5vcnRoIFdhbGVzIFBBIDE5NDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi03QyAgIChoZXgpCQlXb29yaSBTTVQgQ28uLGx0ZAotMDAyMjdDICAgICAoYmFzZSAxNikJCVdvb3JpIFNNVCBDby4sbHRkCi0JCQkJNjQ5LTIsU3V3b2xhbS1yaSxTZW90YW4tTXl1bgotCQkJCVB5b25ndGFlayBLeW9uZ2dpLURvIDQ1MS04NTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItN0QgICAoaGV4KQkJWUUgREFUQSBJTkMuCi0wMDIyN0QgICAgIChiYXNlIDE2KQkJWUUgREFUQSBJTkMuCi0JCQkJMTgyIFNoaW5rbwotCQkJCUlydW1hIFNhaXRhbWEgMzU4LTAwNTUKLQkJCQlKQVBBTgotCi0wMC0yMi03RSAgIChoZXgpCQlDaGVuZ2R1IDMwS2FpdGlhbiBDb21tdW5pY2F0aW9uIEluZHVzdHJ5IENvLkx0ZAotMDAyMjdFICAgICAoYmFzZSAxNikJCUNoZW5nZHUgMzBLYWl0aWFuIENvbW11bmljYXRpb24gSW5kdXN0cnkgQ28uTHRkCi0JCQkJTm8uNiBDaHVhbmd5ZSBSb2FkCi0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLTAwLTIyLTdGICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotMDAyMjdGICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTgwICAgKGhleCkJCUEyQiBFbGVjdHJvbmljcyBBQgotMDAyMjgwICAgICAoYmFzZSAxNikJCUEyQiBFbGVjdHJvbmljcyBBQgotCQkJCUJveCAxNAotCQkJCU1vdGFsYSAgUy01OTEgMjEKLQkJCQlTV0VERU4KLQotMDAtMjItODEgICAoaGV4KQkJRGFpbnRyZWUgTmV0d29ya3MgSW5jCi0wMDIyODEgICAgIChiYXNlIDE2KQkJRGFpbnRyZWUgTmV0d29ya3MgSW5jCi0JCQkJMzM0MCBXYWxudXQgQXZlCi0JCQkJU3VpdGUgMjc1Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItODIgICAoaGV4KQkJODA4NiBMaW1pdGVkCi0wMDIyODIgICAgIChiYXNlIDE2KQkJODA4NiBMaW1pdGVkCi0JCQkJMTcgTG93ZmllbGQgTGFuZQotCQkJCUJhbGRlcnRvbgotCQkJCU5ld2FyayBOb3R0cyBORzI0IDNISgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIyLTgzICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLTAwMjI4MyAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItODQgICAoaGV4KQkJREVTQVkgQSZWIFNDSUVOQ0UgQU5EIFRFQ0hOT0xPR1kgQ08uLExURAotMDAyMjg0ICAgICAoYmFzZSAxNikJCURFU0FZIEEmViBTQ0lFTkNFIEFORCBURUNITk9MT0dZIENPLixMVEQKLQkJCQlERVNBWSAzcmQgWm9uZSxDaGVuamlhbmcsCi0JCQkJSHVpemhvdSBHdWFuZ2RvbmcgNTE2MjI5Ci0JCQkJQ0hJTkEKLQotMDAtMjItODUgICAoaGV4KQkJTk9NVVMgQ09NTSBTWVNURU1TCi0wMDIyODUgICAgIChiYXNlIDE2KQkJTk9NVVMgQ09NTSBTWVNURU1TCi0JCQkJNjAxLCBHdW5qYW4gVG93ZXIsCi0JCQkJT2ZmLiBBbGVtYmljIEdvcndhIFJvYWQKLQkJCQlCYXJvZGEgR3VqYXJhdCAzOTAwMjMKLQkJCQlJTkRJQQotCi0wMC0yMi04NiAgIChoZXgpCQlBU1RST04KLTAwMjI4NiAgICAgKGJhc2UgMTYpCQlBU1RST04KLQkJCQlPdWRlaG9vZ2V2ZWVuc2VkaWprIDQKLQkJCQlEd2luZ2Vsb28gRHJlbnRoZSA3OTkxUEQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMi04NyAgIChoZXgpCQlUaXRhbiBXaXJlbGVzcyBMTEMKLTAwMjI4NyAgICAgKGJhc2UgMTYpCQlUaXRhbiBXaXJlbGVzcyBMTEMKLQkJCQkzOTE0IEdhdHRpcyBTY2hvb2wgUmQKLQkJCQlTdWl0ZSAxMDIKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi04OCAgIChoZXgpCQlTYWdyYWQsIEluYy4KLTAwMjI4OCAgICAgKGJhc2UgMTYpCQlTYWdyYWQsIEluYy4KLQkJCQk3NTEgTm9ydGggRHJpdmUKLQkJCQlNZWxib3VybmUgRkwgMzI5MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTg5ICAgKGhleCkJCU9wdG9zZWN1cml0eSBJbmMuCi0wMDIyODkgICAgIChiYXNlIDE2KQkJT3B0b3NlY3VyaXR5IEluYy4KLQkJCQk1MDUsIEJvdWwuIGR1IFBhcmMgVGVjaG5vbG9naXF1ZQotCQkJCVF1ZWJlYyAgRzFQIDRTOQotCQkJCUNBTkFEQQotCi0wMC0yMi04QSAgIChoZXgpCQlUZXJhdHJvbmlrIGVsZWt0cm9uaXNjaGUgc3lzdGVtZSBnbWJoCi0wMDIyOEEgICAgIChiYXNlIDE2KQkJVGVyYXRyb25payBlbGVrdHJvbmlzY2hlIHN5c3RlbWUgZ21iaAotCQkJCUthcmwtVWxyaWNoLVN0cmFzc2UgMQotCQkJCUdyb3NzLVVtc3RhZHQgIEQtNjQ4MjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLThCICAgKGhleCkJCUtlbnNpbmd0b24gQ29tcHV0ZXIgUHJvZHVjdHMgR3JvdXAKLTAwMjI4QiAgICAgKGJhc2UgMTYpCQlLZW5zaW5ndG9uIENvbXB1dGVyIFByb2R1Y3RzIEdyb3VwCi0JCQkJMzMzIFR3aW4gRG9scGhpbiBEci4KLQkJCQlTaXh0aCBGbG9vcgotCQkJCVJlZHdvb2QgU2hvcmVzIENBIDk0MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi04QyAgIChoZXgpCQlQaG90b24gRXVyb3BlIEdtYkgKLTAwMjI4QyAgICAgKGJhc2UgMTYpCQlQaG90b24gRXVyb3BlIEdtYkgKLQkJCQlK/GxpY2hlciBTdHJh32UgMzc2Ci0JCQkJQWFjaGVuIE5vcmRyaGVpbi1XZXN0ZmFsZW4gNTIwNzAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLThEICAgKGhleCkJCUdCUyBMYWJvcmF0b3JpZXMgTExDCi0wMDIyOEQgICAgIChiYXNlIDE2KQkJR0JTIExhYm9yYXRvcmllcyBMTEMKLQkJCQkyMzI1IER1bGxlcyBDb3JuZXIgQmx2ZAotCQkJCUhlcm5kb24gVkEgMjAxNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLThFICAgKGhleCkJCVRWLU5VTUVSSUMKLTAwMjI4RSAgICAgKGJhc2UgMTYpCQlUVi1OVU1FUklDCi0JCQkJMjQtMjYgcnVlIExvdWlzIEFybWFuZAotCQkJCVBhcmlzICA3NTAxNQotCQkJCUZSQU5DRQotCi0wMC0yMi04RiAgIChoZXgpCQlDTlJTCi0wMDIyOEYgICAgIChiYXNlIDE2KQkJQ05SUwotCQkJCU1SQ1QKLQkJCQkxIHBsYWNlIEFyaXN0aWRlIEJyaWFuZAotCQkJCU1ldWRvbiBJbGUgZGUgRnJhbmNlIDkyMTk1Ci0JCQkJRlJBTkNFCi0KLTAwLTIyLTkwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjI5MCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi05MSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIyOTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItOTIgICAoaGV4KQkJQ2luZXRhbAotMDAyMjkyICAgICAoYmFzZSAxNikJCUNpbmV0YWwKLQkJCQk4NjUxIENhc3RsZSBQYXJrCi0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi05MyAgIChoZXgpCQlaVEUgQ29ycG9yYXRpb24KLTAwMjI5MyAgICAgKGJhc2UgMTYpCQlaVEUgQ29ycG9yYXRpb24KLQkJCQkxMi9GIHp0ZSBwbGF6YSxrZWppIFJvYWQgU291dGgsSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yMi05NCAgIChoZXgpCQlLeW9jZXJhIENvcnBvcmF0aW9uCi0wMDIyOTQgICAgIChiYXNlIDE2KQkJS3lvY2VyYSBDb3Jwb3JhdGlvbgotCQkJCTItMS0xLEthZ2FoYXJhCi0JCQkJVHN1enVraS1rdQotCQkJCVlva29oYW1hLXNoaSBLYW5hZ2F3YSAyMjQtODUwMgotCQkJCUpBUEFOCi0KLTAwLTIyLTk1ICAgKGhleCkJCVNHTSBUZWNobm9sb2d5IGZvciBsaWdodGluZyBzcGEKLTAwMjI5NSAgICAgKGJhc2UgMTYpCQlTR00gVGVjaG5vbG9neSBmb3IgbGlnaHRpbmcgc3BhCi0JCQkJVmlhIFBpbyBMYSBUb3JyZSAxCi0JCQkJVGF2dWxsaWEgUFUgNjEwMTAKLQkJCQlJVEFMWQotCi0wMC0yMi05NiAgIChoZXgpCQlMaW5vV2F2ZSBDb3Jwb3JhdGlvbgotMDAyMjk2ICAgICAoYmFzZSAxNikJCUxpbm9XYXZlIENvcnBvcmF0aW9uCi0JCQkJMTAwMS0xMDEgQ2hhbXBsYWluIEF2ZW51ZQotCQkJCUJ1cmxpbmd0b24gT25hdGFyaW8gTDdMIDVaNAotCQkJCUNBTkFEQQotCi0wMC0yMi05NyAgIChoZXgpCQlYTU9TIFNlbWljb25kdWN0b3IKLTAwMjI5NyAgICAgKGJhc2UgMTYpCQlYTU9TIFNlbWljb25kdWN0b3IKLQkJCQlWZW50dXJlcnMgSG91c2UKLQkJCQlLaW5nIFN0cmVldAotCQkJCUJyaXN0b2wgIEJTMSA0UEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi05OCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAyMjk4ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2vlbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjItOTkgICAoaGV4KQkJU2VhTWljcm8gSW5jLgotMDAyMjk5ICAgICAoYmFzZSAxNikJCVNlYU1pY3JvIEluYy4KLQkJCQk0Njc3IE9sZCBJcm9uc2lkZXMgRHIuLAotCQkJCVN1aXRlIDMxMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi05QSAgIChoZXgpCQlMYXN0YXIsIEluYy4KLTAwMjI5QSAgICAgKGJhc2UgMTYpCQlMYXN0YXIsIEluYy4KLQkJCQkzNTU1IEtldHRlcmluZyBCTFZELgotCQkJCU1vcmFpbmUgT2hpbyA0NTQzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItOUIgICAoaGV4KQkJQXZlckxvZ2ljIFRlY2hub2xvZ2llcywgSW5jLgotMDAyMjlCICAgICAoYmFzZSAxNikJCUF2ZXJMb2dpYyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk3Ri0yLCBOby4yLCBMYW5lIDI1OCwgUnVpIEd1YW5nIFJkLiwgTmVpLUh1IERpc3QuLAotCQkJCVRhaXBlaSBUYWl3YW4gMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi05QyAgIChoZXgpCQlWZXJpc21vIE5ldHdvcmtzIEluYwotMDAyMjlDICAgICAoYmFzZSAxNikJCVZlcmlzbW8gTmV0d29ya3MgSW5jCi0JCQkJMjk1IEJlcm5hbmRvIEF2ZW51ZQotCQkJCVN0ZSAjIDMwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTlEICAgKGhleCkJCVBZVU5HLUhXQSBJTkQuQ08uLExURAotMDAyMjlEICAgICAoYmFzZSAxNikJCVBZVU5HLUhXQSBJTkQuQ08uLExURAotCQkJCTIzMC0xCi0JCQkJRHVja3dvby1SSSwgUGFsdGFuLU1ZVU4KLQkJCQlIV0FTVU5HLVNJIEtZVU5HR0ktRE8gNDQ1LTkxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi05RSAgIChoZXgpCQlTb2NpYWwgQWlkIFJlc2VhcmNoIENvLiwgTHRkLgotMDAyMjlFICAgICAoYmFzZSAxNikJCVNvY2lhbCBBaWQgUmVzZWFyY2ggQ28uLCBMdGQuCi0JCQkJU291dGggMywgV2VzdCAxMCwgQ2h1by1rdQotCQkJCTdGLCBGdWt1eWFtYS1NaW5hbWktM2p5b3UgQnVpbGQuCi0JCQkJU2FwcG9ybyBIb2trYWlkbyAwNjAtMDA2MwotCQkJCUpBUEFOCi0KLTAwLTIyLTlGICAgKGhleCkJCVNlbnN5cyBUcmFmZmljIEFCCi0wMDIyOUYgICAgIChiYXNlIDE2KQkJU2Vuc3lzIFRyYWZmaWMgQUIKLQkJCQlTbG90dHNnYXRhbiAxNAotCQkJCUJveCAyMTc0Ci0JCQkJSm9ua29waW5nIFNtYWxhbmQgNTUzMjIKLQkJCQlTV0VERU4KLQotMDAtMjItQTAgICAoaGV4KQkJRGVscGhpIENvcnBvcmF0aW9uCi0wMDIyQTAgICAgIChiYXNlIDE2KQkJRGVscGhpIENvcnBvcmF0aW9uCi0JCQkJTS9DLTQ4MC00MDUtMjU1Ci0JCQkJNTgyMCBEZWxwaGkgRHJpdmUKLQkJCQlUcm95IE1JIDQ4NDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1BMSAgIChoZXgpCQlIdWF3ZWkgU3ltYW50ZWMgVGVjaG5vbG9naWVzIENvLixMdGQuCi0wMDIyQTEgICAgIChiYXNlIDE2KQkJSHVhd2VpIFN5bWFudGVjIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCUJ1aWxkaW5nIDEsVGhlIFdlc3QgWm9uZSBTY2llbmNlIFBhcmsgb2YgVUVTVEMsTm8uODgsVGlhbmNoZW4gUm9hZAotCQkJCUNoZW5nZHUgU2ljaHVhbiA2MTE3MzEKLQkJCQlDSElOQQotCi0wMC0yMi1BMiAgIChoZXgpCQlYdHJhbXVzIFRlY2hub2xvZ2llcwotMDAyMkEyICAgICAoYmFzZSAxNikJCVh0cmFtdXMgVGVjaG5vbG9naWVzCi0JCQkJNXRoIEZsLiwgTm8uIDEwMiwgTGlkZSBTdC4sCi0JCQkJWmhvbmdoZSBDaXR5IFRhaXBlaSBDb3VudHkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi1BMyAgIChoZXgpCQlDYWxpZm9ybmlhIEVhc3Rlcm4gTGFib3JhdG9yaWVzCi0wMDIyQTMgICAgIChiYXNlIDE2KQkJQ2FsaWZvcm5pYSBFYXN0ZXJuIExhYm9yYXRvcmllcwotCQkJCTQ1OTAgUGF0cmljayBIZW5yeSBEci4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQTQgICAoaGV4KQkJMldpcmUKLTAwMjJBNCAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUE1ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDIyQTUgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUE2ICAgKGhleCkJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBBbWVyaWNhCi0wMDIyQTYgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEFtZXJpY2EKLQkJCQk5MTkgRWFzdCBIaWxsc2RhbGUgQmx2ZAotCQkJCUZvc3RlciBDaXR5IENhbGlmb3JuaWEgOTQ0MDQtMjE3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQTcgICAoaGV4KQkJVHljbyBFbGVjdHJvbmljcyBBTVAgR21iSAotMDAyMkE3ICAgICAoYmFzZSAxNikJCVR5Y28gRWxlY3Ryb25pY3MgQU1QIEdtYkgKLQkJCQlBbXBlcmVzdHIuIDEyLTE0Ci0JCQkJQmVuc2hlaW0gSGVzc2VuIDY0NjI1Ci0JCQkJR0VSTUFOWQotCi0wMC0yMi1BOCAgIChoZXgpCQlPdW1hbiBGaW5sYW5kIE95Ci0wMDIyQTggICAgIChiYXNlIDE2KQkJT3VtYW4gRmlubGFuZCBPeQotCQkJCVZvaW1hdGllIDYKLQkJCQlLZW1wZWxlICBGSU4tOTA0NDAKLQkJCQlGSU5MQU5ECi0KLTAwLTIyLUE5ICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIEluYwotMDAyMkE5ICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIEluYwotCQkJCTYwLTM5LEdhc2FuLWRvbmcKLQkJCQlHdW1jaG9uLWd1Ci0JCQkJU2VvdWwgIDE1My0wMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItQUEgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDIyQUEgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjItQUIgICAoaGV4KQkJU2hlbnpoZW4gVHVyYm9zaWdodCBUZWNobm9sb2d5IEx0ZAotMDAyMkFCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFR1cmJvc2lnaHQgVGVjaG5vbG9neSBMdGQKLQkJCQlVbml0IEMtOEEsU2hlbm5hbiBHYXJkZW4gQmxkZyxIaWdodGVjaCBQYXJrLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjItQUMgICAoaGV4KQkJSGFuZ3pob3UgU2l5dWFuIFRlY2guIENvLiwgTHRkCi0wMDIyQUMgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgU2l5dWFuIFRlY2guIENvLiwgTHRkCi0JCQkJNSBGLCBUb3dlciBCLCBOby4gMzcsIFhpYW5nIFl1YW4gUm9hZAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMgotCQkJCUNISU5BCi0KLTAwLTIyLUFEICAgKGhleCkJCVRFTEVTSVMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIyQUQgICAgIChiYXNlIDE2KQkJVEVMRVNJUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkyODE4MSBSaXZlciBEcml2ZQotCQkJCUNpcmNsZXZpbGxlIE9oaW8gNDMxMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUFFICAgKGhleCkJCU1hdHRlbCBJbmMuCi0wMDIyQUUgICAgIChiYXNlIDE2KQkJTWF0dGVsIEluYy4KLQkJCQkzMzMgQ29udGluZW50YWwgQmx2ZC4KLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1BRiAgIChoZXgpCQlTYWZldHkgVmlzaW9uCi0wMDIyQUYgICAgIChiYXNlIDE2KQkJU2FmZXR5IFZpc2lvbgotCQkJCTYxMDAgVy4gU2FtIEhvdXN0b24gUGt3eS4gTm9ydGgKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CMCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMjJCMCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFNpbmh1IDNyZCBSRC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QsIFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItQjEgICAoaGV4KQkJRWxiaXQgU3lzdGVtcwotMDAyMkIxICAgICAoYmFzZSAxNikJCUVsYml0IFN5c3RlbXMKLQkJCQlQT0IgNTM5Ci0JCQkJSGFpZmEgIDMxMDUzCi0JCQkJSVNSQUVMCi0KLTAwLTIyLUIyICAgKGhleCkJCTRSRiBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMjJCMiAgICAgKGJhc2UgMTYpCQk0UkYgQ29tbXVuaWNhdGlvbnMgTHRkCi0JCQkJMjYgR2xvdmVyIFN0cmVldAotCQkJCU5nYXVyYW5nYSBXZWxsaW5ndG9uIDYwMzUKLQkJCQlORVcgWkVBTEFORAotCi0wMC0yMi1CMyAgIChoZXgpCQlTZWkgUy5wLkEuCi0wMDIyQjMgICAgIChiYXNlIDE2KQkJU2VpIFMucC5BLgotCQkJCVZpYSBSdWZmaWxsaSwgMQotCQkJCUN1cm5vIEJlcmdhbW8gMjQwMzUKLQkJCQlJVEFMWQotCi0wMC0yMi1CNCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMkI0ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIFUuUy4gSGlnaHdheSA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQjUgICAoaGV4KQkJTk9WSVRBCi0wMDIyQjUgICAgIChiYXNlIDE2KQkJTk9WSVRBCi0JCQkJM0YzMDEsTmFtc3VuZyBCL0QgMzQwLTMwCi0JCQkJR2FzYW4tRG9uZwotCQkJCUdldW1jaGVvbi1HdSBTZW91bCAxNTMtNzgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLUI2ICAgKGhleCkJCVN1cGVyZmxvdyBUZWNobm9sb2dpZXMgR3JvdXAKLTAwMjJCNiAgICAgKGJhc2UgMTYpCQlTdXBlcmZsb3cgVGVjaG5vbG9naWVzIEdyb3VwCi0JCQkJNDA2MCBEaXhvbiBTdHJlZXQKLQkJCQlEZXMgTW9pbmVzIElBIDUwMjY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CNyAgIChoZXgpCQlHU1MgR3J1bmRpZyBTQVQtU3lzdGVtcyBHbWJICi0wMDIyQjcgICAgIChiYXNlIDE2KQkJR1NTIEdydW5kaWcgU0FULVN5c3RlbXMgR21iSAotCQkJCUJldXRoZXJuZXIgU3RyYXNzZSA0MwotCQkJCU51ZXJuYmVyZyBCYXllcm4gOTA0NzEKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUI4ICAgKGhleCkJCU5vcmNvdHQKLTAwMjJCOCAgICAgKGJhc2UgMTYpCQlOb3Jjb3R0Ci0JCQkJQnJvb2tmaWVsZCBIb3VzZQotCQkJCUdyaW1zZGl0Y2ggTGFuZSBvZmYgVGFycG9ybGV5IFJvYWQKLQkJCQlOb3Jjb3R0IEJyb29rIENoZXNoaXJlIFdBNCA0RUEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi1COSAgIChoZXgpCQlBbmFsb2dpeCBTZW1pbmNvbmR1Y3RvciwgSW5jCi0wMDIyQjkgICAgIChiYXNlIDE2KQkJQW5hbG9naXggU2VtaW5jb25kdWN0b3IsIEluYwotCQkJCTMyMTEgU2NvdHQgQmx2ZC4sIFN1aXRlIDEwMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CQSAgIChoZXgpCQlIVVRIIEVsZWt0cm9uaWsgU3lzdGVtZSBHbWJICi0wMDIyQkEgICAgIChiYXNlIDE2KQkJSFVUSCBFbGVrdHJvbmlrIFN5c3RlbWUgR21iSAotCQkJCUVjaHRlcm5hY2hlciBTdHIuIDEwCi0JCQkJVHJvaXNkb3JmLVNwaWNoIE5SVyA1Mzg0MgotCQkJCUdFUk1BTlkKLQotMDAtMjItQkIgICAoaGV4KQkJYmV5ZXJkeW5hbWljIEdtYkggJiBDby4gS0cKLTAwMjJCQiAgICAgKGJhc2UgMTYpCQliZXllcmR5bmFtaWMgR21iSCAmIENvLiBLRwotCQkJCVRoZXJlc2llbnN0ci4gOAotCQkJCUhlaWxicm9ubiAgNzQwNzIKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUJDICAgKGhleCkJCUpEU1UgRnJhbmNlIFNBUwotMDAyMkJDICAgICAoYmFzZSAxNikJCUpEU1UgRnJhbmNlIFNBUwotCQkJCTM0IHJ1ZSBOZWNrZXIKLQkJCQlTQUlOVCBFVElFTk5FIExPSVJFIDQyMDAwCi0JCQkJRlJBTkNFCi0KLTAwLTIyLUJEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjJCRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIyQkUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQkYgICAoaGV4KQkJU2llQW1wIEdyb3VwIG9mIENvbXBhbmllcwotMDAyMkJGICAgICAoYmFzZSAxNikJCVNpZUFtcCBHcm91cCBvZiBDb21wYW5pZXMKLQkJCQkyIEFuZyBNbyBLaW8gU3RyZWV0IDY0Ci0JCQkJQW5nIE1vIEtpbyBJbmR1c3RyaWFsIFBhcmsgMywgVW5pdCAwMi0wMUQgRWNvbiBCdWlsZGluZwotCQkJCVNpbmdhcG9yZSAgNTY5MDg0Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTIyLUMwICAgKGhleCkJCVNoZW56aGVuIEZvcmNlbGluayBFbGVjdHJvbmljIENvLCBMdGQKLTAwMjJDMCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBGb3JjZWxpbmsgRWxlY3Ryb25pYyBDbywgTHRkCi0JCQkJMm5kIGFuZCAzcmQgZmxvb3IsIEhhc3NlIG1hbnVmYWN0dXJlIGJ1aWxkaW5nLCBIYXNlZSBpbmR1c3RyaWFsIHBhcmsKLQkJCQlCYW54dWVnYW5nIGluZHVzdHJpYWwgYXJlYSwgTG9uZ2dhbmcgZGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTEyCi0JCQkJQ0hJTkEKLQotMDAtMjItQzEgICAoaGV4KQkJQWN0aXZlIFN0b3JhZ2UgSW5jLgotMDAyMkMxICAgICAoYmFzZSAxNikJCUFjdGl2ZSBTdG9yYWdlIEluYy4KLQkJCQkyMjk1IEplZmZlcnNvbiBTdHJlZXQKLQkJCQlUb3JyYW5jZSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQzIgICAoaGV4KQkJUHJvdmlldyBFbGV0cm9uaWNhIGRvIEJyYXNpbCBMVERBCi0wMDIyQzIgICAgIChiYXNlIDE2KQkJUHJvdmlldyBFbGV0cm9uaWNhIGRvIEJyYXNpbCBMVERBCi0JCQkJUi4gQWNhcuEsIDIwMyAtIERpc3RyaXRvIEluZHVzdHJpYWwKLQkJCQlNYW5hdXMgQW1hem9uYXMgNjkwNzUtMDMwCi0JCQkJQlJBWklMCi0KLTAwLTIyLUMzICAgKGhleCkJCVplZXBvcnQgVGVjaG5vbG9neSBJbmMuCi0wMDIyQzMgICAgIChiYXNlIDE2KQkJWmVlcG9ydCBUZWNobm9sb2d5IEluYy4KLQkJCQkxRixObzIzMSxYaWFuemhlbmcgMm5kIFJkLgotCQkJCUhzaW5DaHUgVGFpd2FuIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItQzQgICAoaGV4KQkJZXBybyBHbWJICi0wMDIyQzQgICAgIChiYXNlIDE2KQkJZXBybyBHbWJICi0JCQkJSm9lYmtlc3dlZyAzCi0JCQkJR3JvbmF1IE5SVyA0ODU5OQotCQkJCUdFUk1BTlkKLQotMDAtMjItQzUgICAoaGV4KQkJSU5GT1JTT04gQ28sTHRkLgotMDAyMkM1ICAgICAoYmFzZSAxNikJCUlORk9SU09OIENvLEx0ZC4KLQkJCQlSb29tIDcwNCxUb3dlciBCMSwgQ2hhbmdZdWFuVGlhbkRpIFBsYXphCi0JCQkJU3VaaG91IFN0cmVldCwgSGFpRGlhbiBEaXN0cmljdAotCQkJCUJlaUppbmcgQ2l0eSAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMjItQzYgICAoaGV4KQkJU3V0dXMgSW5jCi0wMDIyQzYgICAgIChiYXNlIDE2KQkJU3V0dXMgSW5jCi0JCQkJMzAxLTM5OTkgSGVubmluZyBEcml2ZQotCQkJCUJ1cm5hYnkgQnJpdGlzaCBDb2x1bWJpYSBWNUMgNlA5Ci0JCQkJQ0FOQURBCi0KLTAwLTIyLUM3ICAgKGhleCkJCVNFR0dFUiBNaWNyb2NvbnRyb2xsZXIgR21iSCAmIENvLiBLRwotMDAyMkM3ICAgICAoYmFzZSAxNikJCVNFR0dFUiBNaWNyb2NvbnRyb2xsZXIgR21iSCAmIENvLiBLRwotCQkJCUluIGRlbiBXZWlkZW4gMTEKLQkJCQlIaWxkZW4gTlJXIDQwNzIxCi0JCQkJR0VSTUFOWQotCi0wMC0yMi1DOCAgIChoZXgpCQlBcHBsaWVkIEluc3RydW1lbnRzCi0wMDIyQzggICAgIChiYXNlIDE2KQkJQXBwbGllZCBJbnN0cnVtZW50cwotCQkJCUVkaXNvbndlZyAzOWQKLQkJCQlWbGlzc2luZ2VuIFplZWxhbmQgTkwtNDM4Mk5WCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjItQzkgICAoaGV4KQkJTGVub3JkLCBCYXVlciAmIENvIEdtYkgKLTAwMjJDOSAgICAgKGJhc2UgMTYpCQlMZW5vcmQsIEJhdWVyICYgQ28gR21iSAotCQkJCURvaGxlbnN0ciAzMgotCQkJCU9iZXJoYXVzZW4gTlJXIDQ2MTQ1Ci0JCQkJR0VSTUFOWQotCi0wMC0yMi1DQSAgIChoZXgpCQlBbnZpeiBCaW9tZXRyaWMgVGVjaC4gQ28uLCBMdGQuCi0wMDIyQ0EgICAgIChiYXNlIDE2KQkJQW52aXogQmlvbWV0cmljIFRlY2guIENvLiwgTHRkLgotCQkJCTV0aCBGbG9vciwgNDI5OSBKaW5kdSBSb2FkLAotCQkJCVNoYW5naGFpICAyMDExMDgKLQkJCQlDSElOQQotCi0wMC0yMi1DQiAgIChoZXgpCQlJT05PREVTIEluYy4KLTAwMjJDQiAgICAgKGJhc2UgMTYpCQlJT05PREVTIEluYy4KLQkJCQkxNTU1IEF2ZW5pcgotCQkJCVN1aXRlIDEwMwotCQkJCUxhdmFsIFF1ZWJlYyBIN1MyTjUKLQkJCQlDQU5BREEKLQotMDAtMjItQ0MgICAoaGV4KQkJU2NpTG9nLCBJbmMuCi0wMDIyQ0MgICAgIChiYXNlIDE2KQkJU2NpTG9nLCBJbmMuCi0JCQkJODg0NSBTb3V0aCBHcmVlbnZpZXcgRHJpdmUKLQkJCQlTdWl0ZSA0Ci0JCQkJTWlkZGxldG9uIFdpc2NvbnNpbiA1MzU2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQ0QgICAoaGV4KQkJQXJlZCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyMkNEICAgICAoYmFzZSAxNikJCUFyZWQgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk2Ri04IE5vLjgzIFNlYy4xLCBOYW5rYW4gUmQuIEx1emh1IFNoaWFuZwotCQkJCVRhb3l1YW4gQ291bnR5IFRhaXdhbiAzMzg1OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItQ0UgICAoaGV4KQkJQ2lzY28sIFNlcnZpY2UgUHJvdmlkZXIgVmlkZW8gVGVjaG5vbG9neSBHcm91cAotMDAyMkNFICAgICAoYmFzZSAxNikJCUNpc2NvLCBTZXJ2aWNlIFByb3ZpZGVyIFZpZGVvIFRlY2hub2xvZ3kgR3JvdXAKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQ0YgICAoaGV4KQkJUExBTkVYIENvbW11bmljYXRpb25zIElOQwotMDAyMkNGICAgICAoYmFzZSAxNikJCVBMQU5FWCBDb21tdW5pY2F0aW9ucyBJTkMKLQkJCQkyRiBGgUVOSVNTQVkgRWJpc3UgQmxkZzMtMTYtMwotCQkJCVNoaWJ1eWEta3UgVG9reW8gMTUwLTAwMTEKLQkJCQlKQVBBTgotCi0wMC0yMi1EMCAgIChoZXgpCQlQb2xhciBFbGVjdHJvIE95Ci0wMDIyRDAgICAgIChiYXNlIDE2KQkJUG9sYXIgRWxlY3RybyBPeQotCQkJCVByb2Zlc3NvcmludGllIDUKLQkJCQlLZW1wZWxlIE91bHUgOTA0NDAKLQkJCQlGSU5MQU5ECi0KLTAwLTIyLUQxICAgKGhleCkJCUFsYnJlY2h0IEp1bmcgR21iSCAmIENvLiBLRwotMDAyMkQxICAgICAoYmFzZSAxNikJCUFsYnJlY2h0IEp1bmcgR21iSCAmIENvLiBLRwotCQkJCVZvbG1lc3RyYd9lIDEKLQkJCQlTY2hhbGtzbfxobGUgTlJXIDU4NTc5Ci0JCQkJR0VSTUFOWQotCi0wMC0yMi1EMiAgIChoZXgpCQlBbGwgRWFydGggQ29t6XJjaW8gZGUgRWxldHL0bmljb3MgTFREQS4KLTAwMjJEMiAgICAgKGJhc2UgMTYpCQlBbGwgRWFydGggQ29t6XJjaW8gZGUgRWxldHL0bmljb3MgTFREQS4KLQkJCQlSdWEgQmVudG8gZGUgQXJydWRhIENhbWFyZ28KLQkJCQkyNzAgLSBKZC4gU2FudGFuYQotCQkJCUNhbXBpbmFzIFPjbyBQYXVsbyAxMzA4OC02NTAKLQkJCQlCUkFaSUwKLQotMDAtMjItRDMgICAoaGV4KQkJSHViLVRlY2gKLTAwMjJEMyAgICAgKGJhc2UgMTYpCQlIdWItVGVjaAotCQkJCTc3LCBJbWFlLWRvbmcKLQkJCQlCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0tc2kgR3llb25nZ2ktZG8gNDYzLTgyOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi1ENCAgIChoZXgpCQlDb21Xb3J0aCBDby4sIEx0ZC4KLTAwMjJENCAgICAgKGJhc2UgMTYpCQlDb21Xb3J0aCBDby4sIEx0ZC4KLQkJCQkyLTM1LTcgTmlzaGltYWdvbWUKLQkJCQlPaHRhLWt1IFRva3lvIDE0My0wMDI2Ci0JCQkJSkFQQU4KLQotMDAtMjItRDUgICAoaGV4KQkJRWF0b24gQ29ycC4gRWxlY3RyaWNhbCBHcm91cCBEYXRhIENlbnRlciBTb2x1dGlvbnMgLSBQdWxpenppCi0wMDIyRDUgICAgIChiYXNlIDE2KQkJRWF0b24gQ29ycC4gRWxlY3RyaWNhbCBHcm91cCBEYXRhIENlbnRlciBTb2x1dGlvbnMgLSBQdWxpenppCi0JCQkJMzIwMCBTLiBTdXNhbiBTdC4KLQkJCQlTYW50YSBBbmEgQ0EgOTI3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUQ2ICAgKGhleCkJCUN5cGFrIEFCCi0wMDIyRDYgICAgIChiYXNlIDE2KQkJQ3lwYWsgQUIKLQkJCQlQLk8uIEJPWCAyMzMyCi0JCQkJRnVuY2tlbnMgR3LkbmQgMQotCQkJCVN0b2NraG9sbSAgMTAzIDE4Ci0JCQkJU1dFREVOCi0KLTAwLTIyLUQ3ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyMkQ3ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTIyLUQ4ICAgKGhleCkJCVNoZW56aGVuIEdTVCBTZWN1cml0eSBhbmQgU2FmZXR5IFRlY2hub2xvZ3kgTGltaXRlZAotMDAyMkQ4ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEdTVCBTZWN1cml0eSBhbmQgU2FmZXR5IFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJvb20gNTAyLEJ1aWxkaW5nIDYgb2YgS3VwYWkgSW5mb21hdGlvbiBIYXJib3VyLAotCQkJCU5vLjIgTWVuZ3hpIFJvYWQsIEhOVElBKE5vcnRoIGFyZWEpLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMjItRDkgICAoaGV4KQkJRm9ydGV4IEluZHVzdHJpYWwgTHRkLgotMDAyMkQ5ICAgICAoYmFzZSAxNikJCUZvcnRleCBJbmR1c3RyaWFsIEx0ZC4KLQkJCQlGbGF0IDE2LCAxMiAvRi4sUGFjaWZpYyBUcmFkZSBDZW50cmUKLQkJCQkyIEthaSBIaW5nIFJvYWQsS293bG9vbiBCYXksCi0JCQkJS293bG9vbiBIb25nIEtvbmcgODUyCi0JCQkJQ0hJTkEKLQotMDAtMjItREEgICAoaGV4KQkJQU5BVEVLLCBMTEMKLTAwMjJEQSAgICAgKGJhc2UgMTYpCQlBTkFURUssIExMQwotCQkJCTMyMTkgRWFzdCBDYW1lbGJhY2sgUm9hZAotCQkJCVN1aXRlIDUwMgotCQkJCVBob2VuaXggQVogODUwMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLURCICAgKGhleCkJCVRyYW5zbG9naWMgQ29ycG9yYXRpb24KLTAwMjJEQiAgICAgKGJhc2UgMTYpCQlUcmFuc2xvZ2ljIENvcnBvcmF0aW9uCi0JCQkJMTA4MjUgRS4gNDd0aCBBdmVudWUKLQkJCQlEZW52ZXIgQ29sb3JhZG8gODAyMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLURDICAgKGhleCkJCVZpZ2lsIEhlYWx0aCBTb2x1dGlvbnMgSW5jLgotMDAyMkRDICAgICAoYmFzZSAxNikJCVZpZ2lsIEhlYWx0aCBTb2x1dGlvbnMgSW5jLgotCQkJCTIxMDItNDQ2NCBNYXJraGFtIFN0Ci0JCQkJVmljdG9yaWEgQkMgVjhaIDdYOAotCQkJCUNBTkFEQQotCi0wMC0yMi1ERCAgIChoZXgpCQlQcm90ZWN0YSBFbGVjdHJvbmljcyBMdGQKLTAwMjJERCAgICAgKGJhc2UgMTYpCQlQcm90ZWN0YSBFbGVjdHJvbmljcyBMdGQKLQkJCQlLZXNtYXJrIHN0ciA3L0EKLQkJCQlCdWRhcGVzdCBIdW5nYXJ5IDExNTgKLQkJCQlIVU5HQVJZCi0KLTAwLTIyLURFICAgKGhleCkJCU9QUE8gRGlnaXRhbCwgSW5jLgotMDAyMkRFICAgICAoYmFzZSAxNikJCU9QUE8gRGlnaXRhbCwgSW5jLgotCQkJCTI2MjlCIFRlcm1pbmFsIEJsdmQKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1ERiAgIChoZXgpCQlUQU1VWiBNb25pdG9ycwotMDAyMkRGICAgICAoYmFzZSAxNikJCVRBTVVaIE1vbml0b3JzCi0JCQkJVGllZGVua2FtcCAxNgotCQkJCUhlbnN0ZWR0LVVsemJ1cmcgU0ggMjQ1NTgKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUUwICAgKGhleCkJCUF0bGFudGljIFNvZnR3YXJlIFRlY2hub2xvZ2llcyBTLnIuTC4KLTAwMjJFMCAgICAgKGJhc2UgMTYpCQlBdGxhbnRpYyBTb2Z0d2FyZSBUZWNobm9sb2dpZXMgUy5yLkwuCi0JCQkJVmlhIE1hcnRpbm8gQmFzc2ksIDkKLQkJCQlNaWxhbm8gIDIwMTQ4Ci0JCQkJSVRBTFkKLQotMDAtMjItRTEgICAoaGV4KQkJWk9SVCBMYWJzLCBMTEMuCi0wMDIyRTEgICAgIChiYXNlIDE2KQkJWk9SVCBMYWJzLCBMTEMuCi0JCQkJNDRIIERvdmVyIFBvaW50IFJvYWQKLQkJCQlEb3ZlciBOSCAwMzgyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItRTIgICAoaGV4KQkJV0FCVEVDIFRyYW5zaXQgRGl2aXNpb24KLTAwMjJFMiAgICAgKGJhc2UgMTYpCQlXQUJURUMgVHJhbnNpdCBEaXZpc2lvbgotCQkJCTEzMCBSaWRnZXZpZXcgQ2lyY2xlCi0JCQkJRHVuY2FuIFNDIDI5MzM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1FMyAgIChoZXgpCQlBbWVyaWdvbgotMDAyMkUzICAgICAoYmFzZSAxNikJCUFtZXJpZ29uCi0JCQkJMjE2ODAgSGFnZ2VydHkgUm9hZAotCQkJCVN1aXRlIDEwMQotCQkJCU5vcnRodmlsbGUgTWljaGlnYW4gNDgxNjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUU0ICAgKGhleCkJCUFQQVNTIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDIyRTQgICAgIChiYXNlIDE2KQkJQVBBU1MgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQkyRiwgTm8uIDI2NywgU2VjLiAzLCBDaGVuZ2RlIFJkLiwKLQkJCQlEYXRvbmcgRGlzdHJpY3QKLQkJCQlURUlQRUkgIDExMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItRTUgICAoaGV4KQkJRmlzaGVyLVJvc2Vtb3VudCBTeXN0ZW1zIEluYy4KLTAwMjJFNSAgICAgKGJhc2UgMTYpCQlGaXNoZXItUm9zZW1vdW50IFN5c3RlbXMgSW5jLgotCQkJCTEyMzAxIFJlc2VhcmNoIEJsdmQKLQkJCQlCdWlsZGluZyAzCi0JCQkJQXVzdGluIFRleGFzIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1FNiAgIChoZXgpCQlJbnRlbGxpZ2VudCBEYXRhCi0wMDIyRTYgICAgIChiYXNlIDE2KQkJSW50ZWxsaWdlbnQgRGF0YQotCQkJCUVkZi4gSW52ZXJpbm5vdmEg4oCTIEF2ZGEuIFB1bnRvIE1vYmksIDQuIFBhcnF1ZSBDaWVudMOtZmljbyBUZWNub2zDs2dpY28KLQkJCQlURUNOT0FMQ0FMw4EuIENydGEuIE5hY2lvbmFsIElJIE1hZHJpZC1CYXJjZWxvbmEgS20uIDMxLDYwMAotCQkJCUFsY2Fsw6EgZGUgSGVuYXJlcyBNYWRyaWQgMjg4MDUKLQkJCQlTUEFJTgotCi0wMC0yMi1FNyAgIChoZXgpCQlXUFMgUGFya2luZyBTeXN0ZW1zCi0wMDIyRTcgICAgIChiYXNlIDE2KQkJV1BTIFBhcmtpbmcgU3lzdGVtcwotCQkJCUhvZXZlbndlZyAxMQotCQkJCUVpbmRob3ZlbiBOb29yZC1CcmFiYW50IDU2NTIgQVcKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMi1FOCAgIChoZXgpCQlBcHBsaXRpb24gQ28uLCBMdGQuCi0wMDIyRTggICAgIChiYXNlIDE2KQkJQXBwbGl0aW9uIENvLiwgTHRkLgotCQkJCTUwOS0xLCBCdW5kYW5nIFRlY2hubyBQYXJrIEQtZG9uZywKLQkJCQkxNTEgWWF0YXAtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nTmFtIEt5dW5nZ2ktZG8gNDYzLTc2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi1FOSAgIChoZXgpCQlQcm9WaXNpb24gQ29tbXVuaWNhdGlvbnMKLTAwMjJFOSAgICAgKGJhc2UgMTYpCQlQcm9WaXNpb24gQ29tbXVuaWNhdGlvbnMKLQkJCQkxIFBvcnRsYW5kIFNxdWFyZQotCQkJCUJyaXN0b2wgIEJTMiA4UlIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi1FQSAgIChoZXgpCQlSdXN0ZWxjb20gSW5jLgotMDAyMkVBICAgICAoYmFzZSAxNikJCVJ1c3RlbGNvbSBJbmMuCi0JCQkJR2FyYWduaXkgcHJvZXpkLCAxCi0JCQkJU3QuLVBldGVyc2J1cmcgIDE5MjI4OAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yMi1FQiAgIChoZXgpCQlEYXRhIFJlc3BvbnMgQS9TCi0wMDIyRUIgICAgIChiYXNlIDE2KQkJRGF0YSBSZXNwb25zIEEvUwotCQkJCUVsbGVr5nIgNgotCQkJCUhlcmxldiAgMjczMAotCQkJCURFTk1BUksKLQotMDAtMjItRUMgICAoaGV4KQkJSURFQUxCVCBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0wMDIyRUMgICAgIChiYXNlIDE2KQkJSURFQUxCVCBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJNkYuLCBOTy44LCBMQU5FIDM0NSwgWUFOR0dVQU5HIFNULiwgTkVJSFUgRElTVFJJQ1QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItRUQgICAoaGV4KQkJVFNJIFBvd2VyIENvcnBvcmF0aW9uCi0wMDIyRUQgICAgIChiYXNlIDE2KQkJVFNJIFBvd2VyIENvcnBvcmF0aW9uCi0JCQkJMTEwMyBXZXN0IFBpZXJjZSBBdmVudWUKLQkJCQlBbnRpZ28gV0kgNTQ0MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUVFICAgKGhleCkJCUFsZ28gQ29tbXVuaWNhdGlvbiBQcm9kdWN0cyBMdGQKLTAwMjJFRSAgICAgKGJhc2UgMTYpCQlBbGdvIENvbW11bmljYXRpb24gUHJvZHVjdHMgTHRkCi0JCQkJNDUwMCBCZWVkaWUgU3RyZWV0Ci0JCQkJQnVybmFieSBCQyBWNUogNUwyCi0JCQkJQ0FOQURBCi0KLTAwLTIyLUVGICAgKGhleCkJCUliaXMgVGVrLCBMTEMKLTAwMjJFRiAgICAgKGJhc2UgMTYpCQlJYmlzIFRlaywgTExDCi0JCQkJOTEyIFBpdHRzYnVyZ2ggUm9hZAotCQkJCUJ1dGxlciBQQSAxNjAwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItRjAgICAoaGV4KQkJMyBHcmVlbnMgQXZpYXRpb24gTGltaXRlZAotMDAyMkYwICAgICAoYmFzZSAxNikJCTMgR3JlZW5zIEF2aWF0aW9uIExpbWl0ZWQKLQkJCQkxMCBIZWRpbmdoYW0gQ2xvc2UKLQkJCQlNYWNjbGVzZmllbGQgIFNLMTAgM0xaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItRjEgICAoaGV4KQkJUFJJVkFURQotMDAyMkYxICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yMi1GMiAgIChoZXgpCQlTdW5Qb3dlciBDb3JwCi0wMDIyRjIgICAgIChiYXNlIDE2KQkJU3VuUG93ZXIgQ29ycAotCQkJCTE0MTQgSGFyYm91ciBXYXkgU291dGgKLQkJCQlSaWNobW9uZCBDQSA5NDgwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItRjMgICAoaGV4KQkJU0hBUlAgQ09SUE9SQVRJT04KLTAwMjJGMyAgICAgKGJhc2UgMTYpCQlTSEFSUCBDT1JQT1JBVElPTgotCQkJCTIyLTIyLE5hZ2Fpa2UtY2hvLAotCQkJCUFiZW5vLUtVLAotCQkJCU9zYWthLCA1NDUtODUyMiwKLQkJCQlKQVBBTgotCi0wMC0yMi1GNCAgIChoZXgpCQlBTVBBSyBUZWNobm9sb2d5LCBJbmMuCi0wMDIyRjQgICAgIChiYXNlIDE2KQkJQU1QQUsgVGVjaG5vbG9neSwgSW5jLgotCQkJCU5vLiA4LTEsIE5hbnl1YW4gMm5kIFJkLgotCQkJCUpob25nbGkgVGFveXVhbiAzMjAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLUY1ICAgKGhleCkJCUFkdmFuY2VkIFJlYWx0aW1lIFRyYWNraW5nIEdtYkgKLTAwMjJGNSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBSZWFsdGltZSBUcmFja2luZyBHbWJICi0JCQkJQW0gT2VmZXJsIDYKLQkJCQlXZWlsaGVpbSBCYXllcm4gRC04MjM2MgotCQkJCUdFUk1BTlkKLQotMDAtMjItRjYgICAoaGV4KQkJU3lyYWN1c2UgUmVzZWFyY2ggQ29ycG9yYXRpb24KLTAwMjJGNiAgICAgKGJhc2UgMTYpCQlTeXJhY3VzZSBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotCQkJCTYyMjUgUnVubmluZyBSaWRnZSBSb2FkCi0JCQkJTm9ydGggU3lyYWN1c2UgTlkgMTMyMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUY3ICAgKGhleCkJCUNvbmNlcHRyb25pYwotMDAyMkY3ICAgICAoYmFzZSAxNikJCUNvbmNlcHRyb25pYwotCQkJCURhdGFiYW5rd2VnIDcKLQkJCQlBTUVSU0ZPT1JUIHV0cmVjaHQgMzgyMSBBTAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIyLUY4ICAgKGhleCkJCVBJTUEgRWxlY3Ryb25pYyBTeXN0ZW1zIEx0ZC4KLTAwMjJGOCAgICAgKGJhc2UgMTYpCQlQSU1BIEVsZWN0cm9uaWMgU3lzdGVtcyBMdGQuCi0JCQkJNSBIYXR6b3JlZiBTdC4KLQkJCQlIb2xvbiAgNTg4NTYKLQkJCQlJU1JBRUwKLQotMDAtMjItRjkgICAoaGV4KQkJUG9sbGluIEVsZWN0cm9uaWMgR21iSAotMDAyMkY5ICAgICAoYmFzZSAxNikJCVBvbGxpbiBFbGVjdHJvbmljIEdtYkgKLQkJCQlNYXgtUG9sbGluLVN0ci4gMQotCQkJCVBmb2VycmluZyAgODUxMDQKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUZBICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyMkZBICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjItRkIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDIyRkIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yMi1GQyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyMkZDICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yMi1GRCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyMkZEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yMi1GRSAgIChoZXgpCQlNaWNyb3Byb2Nlc3NvciBEZXNpZ25zIEluYwotMDAyMkZFICAgICAoYmFzZSAxNikJCU1pY3JvcHJvY2Vzc29yIERlc2lnbnMgSW5jCi0JCQkJNjUgTG9uZ21lYWRvdyBEcml2ZQotCQkJCVBPIEJveCAxNjAKLQkJCQlTaGVsYnVybmUgVmVybW9udCAwNTQ4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItRkYgICAoaGV4KQkJTklWSVMgTExDCi0wMDIyRkYgICAgIChiYXNlIDE2KQkJTklWSVMgTExDCi0JCQkJMTAwMCBDaXJjbGUgNzUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlBdGxhbnRhIEdBIDMwMzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0wMCAgIChoZXgpCQlDYXllZSBDb21wdXRlciBMdGQuCi0wMDIzMDAgICAgIChiYXNlIDE2KQkJQ2F5ZWUgQ29tcHV0ZXIgTHRkLgotCQkJCVVuaXRzIDEwMDItMTAwMywgMTAvRiwgSm9pbi1JbiBIYW5nIFNpbmcgQ2VudHJlCi0JCQkJNzEtNzUgQ29udGFpbmVyIFBvcnQgUm9hZAotCQkJCUt3YWkgQ2h1bmcgTi5UIAotCQkJCUhPTkcgS09ORwotCi0wMC0yMy0wMSAgIChoZXgpCQlXaXRyb24gVGVjaG5vbG9neSBMaW1pdGVkCi0wMDIzMDEgICAgIChiYXNlIDE2KQkJV2l0cm9uIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCTYvRiwgWGluIFJ1aSBCdWlsZGluZywgMzIgVGFvIEh1YSBSb2FkLCBGdXRpYW4gRnJlZSBUcmFkZSBab25lLAotCQkJCVNoZW56aGVuIDg2Ci0JCQkJQ0hJTkEKLQotMDAtMjMtMDIgICAoaGV4KQkJQ29iYWx0IERpZ2l0YWwsIEluYy4KLTAwMjMwMiAgICAgKGJhc2UgMTYpCQlDb2JhbHQgRGlnaXRhbCwgSW5jLgotCQkJCTI0MDYgRWFzdCBVbml2ZXJzaXR5IEF2ZW51ZQotCQkJCVVyYmFuYSBJTCA2MTgwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMDMgICAoaGV4KQkJTElURS1PTiBJVCBDb3Jwb3JhdGlvbgotMDAyMzAzICAgICAoYmFzZSAxNikJCUxJVEUtT04gSVQgQ29ycG9yYXRpb24KLQkJCQkxNEYsIE5vLiAzOTIsIFJ1ZXkgS3VhbmcgUm9hZCwgTmVpaHUKLQkJCQlUYWlwZWkgQ2l0eSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy0wNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzMDQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMDUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMzA1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTA2ICAgKGhleCkJCUFMUFMgRWxlY3RyaWMgQ28uLCBMdGQKLTAwMjMwNiAgICAgKGJhc2UgMTYpCQlBTFBTIEVsZWN0cmljIENvLiwgTHRkCi0JCQkJMS0yLTEsIE9raW5vdWNoaQotCQkJCVNvbWEgY2l0eSBGdWt1c2hpbWEgOTc2LTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yMy0wNyAgIChoZXgpCQlGVVRVUkUgSU5OT1ZBVElPTiBURUNIIENPLixMVEQKLTAwMjMwNyAgICAgKGJhc2UgMTYpCQlGVVRVUkUgSU5OT1ZBVElPTiBURUNIIENPLixMVEQKLQkJCQkzMTIgMy1ET05HLCBHV0FOR01ZVU5HIElORFVTVFJJQUwgQ09NUExFWCAyMDEKLQkJCQlIQUFOLURPTkcKLQkJCQlHV0FOR01ZVU5HIEdZVU5HR0kgNDIzMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTA4ICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMjMwOCAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOby4gOSAsIFBhcmsgQXZlbnVlIElJLAotCQkJCVNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgVGFpd2FuIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtMDkgICAoaGV4KQkJSmFuYW0gVGVjaG5vbG9naWVzIExMQwotMDAyMzA5ICAgICAoYmFzZSAxNikJCUphbmFtIFRlY2hub2xvZ2llcyBMTEMKLQkJCQkxMDAgQ3Jvc3N3YXlzIFBhcmsgV2VzdAotCQkJCVN1aXRlIDEwNQotCQkJCVdvb2RidXJ5IE5ZIDExNzk3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0wQSAgIChoZXgpCQlBUkJVUkcgR21iSCAmIENvIEtHCi0wMDIzMEEgICAgIChiYXNlIDE2KQkJQVJCVVJHIEdtYkggJiBDbyBLRwotCQkJCUFydGh1ciBIZWhsIFN0cmFzc2UKLQkJCQlMb3NzYnVyZyAgRC03MjI5MAotCQkJCUdFUk1BTlkKLQotMDAtMjMtMEIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjMwQiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTBDICAgKGhleCkJCUNMT1ZFUiBFTEVDVFJPTklDUyBDTy4sTFRELgotMDAyMzBDICAgICAoYmFzZSAxNikJCUNMT1ZFUiBFTEVDVFJPTklDUyBDTy4sTFRELgotCQkJCUFLRU5PIDMwNi0xCi0JCQkJT0JBVEEgQ2h5b3UKLQkJCQlJU0UgQ2l0eSBNSUUgUHJlZmVjdHVyZSA1MTktMDUwMQotCQkJCUpBUEFOCi0KLTAwLTIzLTBEICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyMzBEICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVGV4YXMgNzUwODItNDM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMEUgICAoaGV4KQkJR29yYmEgQUcKLTAwMjMwRSAgICAgKGJhc2UgMTYpCQlHb3JiYSBBRwotCQkJCVNhbmRhY2tlcnN0cmFzc2UKLQkJCQlPYmVyYvxyZW4gU0cgQ0ggLSA5MjQ1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjMtMEYgICAoaGV4KQkJSGlyc2NoIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCi0wMDIzMEYgICAgIChiYXNlIDE2KQkJSGlyc2NoIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCi0JCQkJMTkwMCBDYXJuZWdpZSwgQmxkZyBCCi0JCQkJU2FudGEgQW5hIENBIDkyNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0xMCAgIChoZXgpCQlMTkMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjMxMCAgICAgKGJhc2UgMTYpCQlMTkMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxOUYsIE5vLiA3OC0yLCBTZWMuIDMsIFRhaWNodW5nIEthbmcgUmQuCi0JCQkJVGFpY2h1bmcgIDQwNzY0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy0xMSAgIChoZXgpCQlHbG9zY29tIENvLiwgTHRkLgotMDAyMzExICAgICAoYmFzZSAxNikJCUdsb3Njb20gQ28uLCBMdGQuCi0JCQkJIzUwNyBDaGFuZ2h5dW4gQmxkZy4KLQkJCQk5NjAtMSBIb2d5ZS1kb25nCi0JCQkJQW55YW5nIENpdHkgS3l1bmdnby1kbyA0MzEtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTEyICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjMxMiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0xMyAgIChoZXgpCQlRb29sIFRlY2hub2xvZ2llcyBMdGQuCi0wMDIzMTMgICAgIChiYXNlIDE2KQkJUW9vbCBUZWNobm9sb2dpZXMgTHRkLgotCQkJCUdvdGFuZGEgTm8uMyBIYW5hdGFuaSBCbGRnIDNGLAotCQkJCTUtMjgtOSxIaWdhc2hpLWdvdGFuZGEKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0yMy0xNCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjMxNCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTIzLTE1ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyMzE1ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjMtMTYgICAoaGV4KQkJS0lTQU4gRUxFQ1RST05JQ1MgQ08KLTAwMjMxNiAgICAgKGJhc2UgMTYpCQlLSVNBTiBFTEVDVFJPTklDUyBDTwotCQkJCTMxNy0xNQotCQkJCVNVTkcgU1UgMkdBIDNET05HCi0JCQkJU0VPVU5HLURPTkcgR1UgU0VPVUwgMTMzLTEyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy0xNyAgIChoZXgpCQlMYXNlcmNyYWZ0IEluYwotMDAyMzE3ICAgICAoYmFzZSAxNikJCUxhc2VyY3JhZnQgSW5jCi0JCQkJMTQ1MCBPYWticm9vayBEcml2ZQotCQkJCVN1aXRlIDkwMAotCQkJCU5vcmNyb3NzIEdBIDMwMDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0xOCAgIChoZXgpCQlUb3NoaWJhCi0wMDIzMTggICAgIChiYXNlIDE2KQkJVG9zaGliYQotCQkJCTItOSxTdWVoaXJvLUNobwotCQkJCU9tZSBUb2t5byAxOTg4NzEwCi0JCQkJSkFQQU4KLQotMDAtMjMtMTkgICAoaGV4KQkJU2llbG94IExMQwotMDAyMzE5ICAgICAoYmFzZSAxNikJCVNpZWxveCBMTEMKLQkJCQkxNzAgRWFzdCBOaW50aCBBdmUuCi0JCQkJUnVubmVtZWRlIE5KIDA4MDc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0xQSAgIChoZXgpCQlJVEYgQ28uLCBMdGQuCi0wMDIzMUEgICAgIChiYXNlIDE2KQkJSVRGIENvLiwgTHRkLgotCQkJCTItMi0xMSBOaXNoaWtpLWNobwotCQkJCVRhY2hpa2F3YS1zaGkgVG9reW8gMTkwLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0yMy0xQiAgIChoZXgpCQlEYW5haGVyIE1vdGlvbiAtIEtvbGxtb3JnZW4KLTAwMjMxQiAgICAgKGJhc2UgMTYpCQlEYW5haGVyIE1vdGlvbiAtIEtvbGxtb3JnZW4KLQkJCQkyMDEgVy4gUm9jayBSb2FkCi0JCQkJUmFkZm9yZCBWQSAyNDE0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMUMgICAoaGV4KQkJRm91cmllciBTeXN0ZW1zIEx0ZC4KLTAwMjMxQyAgICAgKGJhc2UgMTYpCQlGb3VyaWVyIFN5c3RlbXMgTHRkLgotCQkJCTE2IEhhbWVsYWNoYSBTdAotCQkJCVJvc2ggSGFheWluICA0ODA5MQotCQkJCUlTUkFFTAotCi0wMC0yMy0xRCAgIChoZXgpCQlEZWx0YWNvbSBFbGVjdHJvbmljcyBMdGQKLTAwMjMxRCAgICAgKGJhc2UgMTYpCQlEZWx0YWNvbSBFbGVjdHJvbmljcyBMdGQKLQkJCQkyRixaSVQsN2ttIFR6YXJpZ3JhZHNrbyBTaG9zZQotCQkJCVNvZmlhIFNvZmlhLWdyYWQgMTc4NAotCQkJCUJVTEdBUklBCi0KLTAwLTIzLTFFICAgKGhleCkJCUNlenplciBNdWx0aW1lZGlhIFRlY2hub2xvZ2llcwotMDAyMzFFICAgICAoYmFzZSAxNikJCUNlenplciBNdWx0aW1lZGlhIFRlY2hub2xvZ2llcwotCQkJCVDpcGluaehyZSBkJ2VudHJlcHJpc2VzIENSRUFUSUMKLQkJCQkxMTUgcnVlIENsYXVkZSBDaGFwcGUKLQkJCQlQbG91emFu6SAgMjkyODAKLQkJCQlGUkFOQ0UKLQotMDAtMjMtMUYgICAoaGV4KQkJR3VhbmdkYSBFbGVjdHJvbmljICYgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLTAwMjMxRiAgICAgKGJhc2UgMTYpCQlHdWFuZ2RhIEVsZWN0cm9uaWMgJiBUZWxlY29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLiwgTHRkLgotCQkJCSM4IEdhb3Blbmdkb25nIFJvYWQsIEdhb3hpbiBEaXN0cmljdAotCQkJCUNoZW5nZHUgU2ljaHVhbiA2MTAwNDEKLQkJCQlDSElOQQotCi0wMC0yMy0yMCAgIChoZXgpCQlOaWNpcmEgTmV0d29ya3MKLTAwMjMyMCAgICAgKGJhc2UgMTYpCQlOaWNpcmEgTmV0d29ya3MKLQkJCQkzNjAwIFcuIEJheXNob3JlIFJkLiwgCi0JCQkJU3VpdGUgMjA1Ci0JCQkJUGFsbyBBbHRvIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0yMSAgIChoZXgpCQlBdml0ZWNoIEludGVybmF0aW9uYWwgQ29ycAotMDAyMzIxICAgICAoYmFzZSAxNikJCUF2aXRlY2ggSW50ZXJuYXRpb25hbCBDb3JwCi0JCQkJMTUzMzMgTkUgOTB0aCBTdHJlZXQKLQkJCQlSZWRtb25kIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0yMiAgIChoZXgpCQlLSVNTIFRla25pY2FsIFNvbHV0aW9ucywgSW5jLgotMDAyMzIyICAgICAoYmFzZSAxNikJCUtJU1MgVGVrbmljYWwgU29sdXRpb25zLCBJbmMuCi0JCQkJMTU4MyBTLiBOYXZham8gV2F5Ci0JCQkJQ2hhbmRsZXIgQXJpem9uYSA4NTI4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMjMgICAoaGV4KQkJWnlsaW4gQVMKLTAwMjMyMyAgICAgKGJhc2UgMTYpCQlaeWxpbiBBUwotCQkJCUF1Z2xlbmRzZGFsZW4gNzgKLQkJCQlTdGF2YW5nZXIgIDQwMTcKLQkJCQlOT1JXQVkKLQotMDAtMjMtMjQgICAoaGV4KQkJRy1QUk8gQ09NUFVURVIKLTAwMjMyNCAgICAgKGJhc2UgMTYpCQlHLVBSTyBDT01QVVRFUgotCQkJCWZpcnN0IGFycmFuZ2UgQywgWWluZ0h1IGluZHVzdHJpYWwgZXN0YXRlCi0JCQkJUWluZ1hpIENvdW50cnkKLQkJCQlEb25nR3VhbiBDaXR5IEd1YW5nRG9uZyBQcm92aW5jZSA1MjM2NDgKLQkJCQlDSElOQQotCi0wMC0yMy0yNSAgIChoZXgpCQlJT0xBTiBIb2xkaW5nCi0wMDIzMjUgICAgIChiYXNlIDE2KQkJSU9MQU4gSG9sZGluZwotCQkJCU1vbiBQbGFpc2lyIDI2Ci0JCQkJRXR0ZW4gTGV1ciAgNDg3OUFOCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjMtMjYgICAoaGV4KQkJRnVqaXRzdSBMaW1pdGVkCi0wMDIzMjYgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBMaW1pdGVkCi0JCQkJTXVzYXNoaS1rb3N1Z2kgVG93ZXIgUGxhY2UgQmxkZy4sCi0JCQkJNDAzLCBLb3N1Z2ktY2hvIDEtY2hvbWUsTmFrYWhhcmEta3UKLQkJCQlLYXdhc2FraSBLYW5hZ2F3YSAyMTEtMDA2MwotCQkJCUpBUEFOCi0KLTAwLTIzLTI3ICAgKGhleCkJCVNob3V5byBFbGVjdHJvbmljcyBDTy4sIExURAotMDAyMzI3ICAgICAoYmFzZSAxNikJCVNob3V5byBFbGVjdHJvbmljcyBDTy4sIExURAotCQkJCTRGLiwgTm8uOCwgTGFuZSAzNDUsIFlhbmcgS3VuZyBTdC4KLQkJCQlUYWlwZWkgIDExNDkxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy0yOCAgIChoZXgpCQlBTENPTiBURUxFQ09NTVVOSUNBVElPTlMgQ08uLCBMVEQuCi0wMDIzMjggICAgIChiYXNlIDE2KQkJQUxDT04gVEVMRUNPTU1VTklDQVRJT05TIENPLiwgTFRELgotCQkJCTJuZCBGTCwgTk8gNDgwLTUsIFNFQy4gNiwgWUVOLVBJTkcgTi4gUkQuLAotCQkJCVNISUgtTElOCi0JCQkJVEFJUEVJIFRBSVdBTiAxMTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTI5ICAgKGhleCkJCUREUmRyaXZlIExMQwotMDAyMzI5ICAgICAoYmFzZSAxNikJCUREUmRyaXZlIExMQwotCQkJCTExMDc2IEVsYXRpIFN0Ci0JCQkJTm9ydGhnbGVubiBDTyA4MDIzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMkEgICAoaGV4KQkJZW9uYXMgSVQtQmVyYXR1bmcgdW5kIC1FbnR3aWNrbHVuZyBHbWJICi0wMDIzMkEgICAgIChiYXNlIDE2KQkJZW9uYXMgSVQtQmVyYXR1bmcgdW5kIC1FbnR3aWNrbHVuZyBHbWJICi0JCQkJR3JlaWZlbmhhZ2VuZXIgU3RyLiA1NAotCQkJCUJlcmxpbiAgMTA0MzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTJCICAgKGhleCkJCUlSRCBBL1MKLTAwMjMyQiAgICAgKGJhc2UgMTYpCQlJUkQgQS9TCi0JCQkJS3VsbGluZ2dhZGUgMzEKLQkJCQlTdmVuZGJvcmcgRnluIDU3MDAKLQkJCQlERU5NQVJLCi0KLTAwLTIzLTJDICAgKGhleCkJCVNlbnRpY2FyZQotMDAyMzJDICAgICAoYmFzZSAxNikJCVNlbnRpY2FyZQotCQkJCTE2MSBXb3JjZXN0ZXIgUmQKLQkJCQlTdWl0ZSAzMDUKLQkJCQlGcmFtaW5naGFtIE1BIDAxNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0yRCAgIChoZXgpCQlTYW5kRm9yY2UKLTAwMjMyRCAgICAgKGJhc2UgMTYpCQlTYW5kRm9yY2UKLQkJCQkxMjk1MCBTYXJhdG9nYSBBdmUuCi0JCQkJU2FyYXRvZ2EgQ2FsaWZvcm5pYSA5NTA3MC00NjU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0yRSAgIChoZXgpCQlLZWRhaCBFbGVjdHJvbmljcyBFbmdpbmVlcmluZywgTExDCi0wMDIzMkUgICAgIChiYXNlIDE2KQkJS2VkYWggRWxlY3Ryb25pY3MgRW5naW5lZXJpbmcsIExMQwotCQkJCVplbGVub2dyYWQsIDQ0NQotCQkJCU1vc2NvdyAgMTI0NDk4Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTIzLTJGICAgKGhleCkJCUFkdmFuY2VkIENhcmQgU3lzdGVtcyBMdGQuCi0wMDIzMkYgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgQ2FyZCBTeXN0ZW1zIEx0ZC4KLQkJCQlVbml0IDIwMTAtMTMsIENoZXZhbGllciBDb21tZXJjaWFsIENlbnRyZSwKLQkJCQk4IFdhbmcgSG9pIFJvYWQsCi0JCQkJS293bG9vbiBCYXksIFNBUiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMjMtMzAgICAoaGV4KQkJRElaSVBJQSwgSU5DLgotMDAyMzMwICAgICAoYmFzZSAxNikJCURJWklQSUEsIElOQy4KLQkJCQkxNXRoIEZsb29yLCBFYXN0IFdpbmcsIElUIFZlbnR1cmUgVG93ZXIKLQkJCQk3OCBHYXJhay1kb25nLCBTb25ncGEtR3UsCi0JCQkJU2VvdWwgIDEzODE2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy0zMSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjMzMSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyBLWU9UTyA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTIzLTMyICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjMzMiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0zMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzMzMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMzQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMzM0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTM1ICAgKGhleCkJCUxpbmtmbGV4IENvLixMdGQKLTAwMjMzNSAgICAgKGJhc2UgMTYpCQlMaW5rZmxleCBDby4sTHRkCi0JCQkJNUYuIE1pbiBZb3VuZyBCbGRnLiAxNzUtMgotCQkJCU5vbmh5ZW9uLURvbmcsIEdhbmduYW0tR3UKLQkJCQlTZW91bCAgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy0zNiAgIChoZXgpCQlNRVRFTCBzLnIuby4KLTAwMjMzNiAgICAgKGJhc2UgMTYpCQlNRVRFTCBzLnIuby4KLQkJCQlWZWxrYSBKZXNlbmljZSAxMjUKLQkJCQlWZWxrYSBKZXNlbmljZSBOYWNob2QgNTUyMjQKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0yMy0zNyAgIChoZXgpCQlHbG9iYWwgU3RhciBTb2x1dGlvbnMgVUxDCi0wMDIzMzcgICAgIChiYXNlIDE2KQkJR2xvYmFsIFN0YXIgU29sdXRpb25zIFVMQwotCQkJCTQ2MDAgSmFjb21icyBSb2FkCi0JCQkJUmljaG1vbmQgQkMgVjZWIDNCMQotCQkJCUNBTkFEQQotCi0wMC0yMy0zOCAgIChoZXgpCQlPSi1FbGVjdHJvbmljcyBBL1MKLTAwMjMzOCAgICAgKGJhc2UgMTYpCQlPSi1FbGVjdHJvbmljcyBBL1MKLQkJCQlTdGVuYWdlciAxM0IKLQkJCQlT+G5kZXJib3JnICA2NDAwCi0JCQkJREVOTUFSSwotCi0wMC0yMy0zOSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0wMDIzMzkgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy0zQSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMjMzQSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtM0IgICAoaGV4KQkJQy1NYXRpYyBTeXN0ZW1zIEx0ZAotMDAyMzNCICAgICAoYmFzZSAxNikJCUMtTWF0aWMgU3lzdGVtcyBMdGQKLQkJCQlXYXJyZW4gQ291cnQKLQkJCQlQYXJrIFJvYWQKLQkJCQlDcm93Ym9yb3VnaCBFYXN0IFN1c3NleCBUTjYgMlFYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjMtM0MgICAoaGV4KQkJQWxmbGV4Ci0wMDIzM0MgICAgIChiYXNlIDE2KQkJQWxmbGV4Ci0JCQkJQmxhdXctcm9vZGxhYW4gMzAwCi0JCQkJWk9FVEVSTUVFUiAgMjcxOCBTSwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIzLTNEICAgKGhleCkJCW5vdmVybyBHbWJICi0wMDIzM0QgICAgIChiYXNlIDE2KQkJbm92ZXJvIEdtYkgKLQkJCQlSZW5zaW5nc3RyYXNzZSAxNQotCQkJCUJvY2h1bSAgNDQ4MDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTNFICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50LUlQRAotMDAyMzNFICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50LUlQRAotCQkJCTcwMSBFLiBNaWRkbGVmaWVsZCBSZC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0zRiAgIChoZXgpCQlQdXJlY2hvaWNlIEluYwotMDAyMzNGICAgICAoYmFzZSAxNikJCVB1cmVjaG9pY2UgSW5jCi0JCQkJMTE0ODEgUnVwcCBEcml2ZQotCQkJCUJ1cm5zdmlsbGUgTU4gNTUzMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTQwICAgKGhleCkJCU1pWCBUZWxlbWF0aWNzCi0wMDIzNDAgICAgIChiYXNlIDE2KQkJTWlYIFRlbGVtYXRpY3MKLQkJCQlCbGFhdXdrbGlwIE9mZmljZSBQYXJrIDIKLQkJCQlDbnIgU3RyYW5kICYgV2ViZXJzdmFsbGVpIFJkCi0JCQkJU3RlbGxlbmJvc2NoIFdlc3Rlcm4gQ2FwZSA3NjAwCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTIzLTQxICAgKGhleCkJCVNpZW1lbnMgQUcKLTAwMjM0MSAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHCi0JCQkJSW5kdXN0cnkgU2VjdG9yLCBCdWlsZGluZyBUZWNobm9sb2dpZXMgRGl2aXNpb24KLQkJCQlJIEJUIERFIFNQLCBTaWVtZW5zYWxsZWUgODQKLQkJCQlLYXJsc3J1aGUgRGV1dHNjaGxhbmQgRC03NjE4NwotCQkJCUdFUk1BTlkKLQotMDAtMjMtNDIgICAoaGV4KQkJQ29mZmVlIEVxdWlwbWVudCBDb21wYW55Ci0wMDIzNDIgICAgIChiYXNlIDE2KQkJQ29mZmVlIEVxdWlwbWVudCBDb21wYW55Ci0JCQkJNDIxNiA2dGggQXZlIE5XCi0JCQkJU2VhdHRsZSBXQSA5ODEwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNDMgICAoaGV4KQkJVEVNIEFHCi0wMDIzNDMgICAgIChiYXNlIDE2KQkJVEVNIEFHCi0JCQkJVHJpc3RzdHJhc3NlIDgKLQkJCQlDaHVyICA3MDA3Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjMtNDQgICAoaGV4KQkJT2JqZWN0aXZlIEludGVyZmFjZSBTeXN0ZW1zCi0wMDIzNDQgICAgIChiYXNlIDE2KQkJT2JqZWN0aXZlIEludGVyZmFjZSBTeXN0ZW1zCi0JCQkJMTM4NzMgUGFyayBDZW50ZXIgUmQKLQkJCQlTdWl0ZSAzNjAKLQkJCQlIZXJuZG9uIFZBIDIwMTcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy00NSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAyMzQ1ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2vlbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjMtNDYgICAoaGV4KQkJVmVzdGFjCi0wMDIzNDYgICAgIChiYXNlIDE2KQkJVmVzdGFjCi0JCQkJUC5PLiBCb3ggNzM1OAotCQkJCVNocmV3c2J1cnkgTkogMDc3MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTQ3ICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLTAwMjM0NyAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZAotCQkJCVJvc2V2aWxsZSBDYWxpZm9ybmlhIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy00OCAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0wMDIzNDggICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCTE0IFJ1ZSBQYXVsIERhdXRpZXIKLQkJCQlWZWxpenkgIDc4NDU3Ci0JCQkJRlJBTkNFCi0KLTAwLTIzLTQ5ICAgKGhleCkJCUhlbG1ob2x0eiBDZW50cmUgQmVybGluIGZvciBNYXRlcmlhbCBhbmQgRW5lcmd5Ci0wMDIzNDkgICAgIChiYXNlIDE2KQkJSGVsbWhvbHR6IENlbnRyZSBCZXJsaW4gZm9yIE1hdGVyaWFsIGFuZCBFbmVyZ3kKLQkJCQlEZXBhcnRtZW50IEZNRAotCQkJCUdsaWVuaWNrZXIgU3RyYXNzZSAxMDAKLQkJCQlCZXJsaW4gIDE0MTA5Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy00QSAgIChoZXgpCQlQUklWQVRFCi0wMDIzNEEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTIzLTRCICAgKGhleCkJCUlueXVhbiBUZWNobm9sb2d5IEluYy4KLTAwMjM0QiAgICAgKGJhc2UgMTYpCQlJbnl1YW4gVGVjaG5vbG9neSBJbmMuCi0JCQkJTm8uIDMsIFNpbmd5ZSBTdC4sCi0JCQkJR3VlaXNoYW4gVG93bnNoaXAKLQkJCQlUYW95dWFuIENvdW50eSAgMzMzNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTRDICAgKGhleCkJCUtUQyBBQgotMDAyMzRDICAgICAoYmFzZSAxNikJCUtUQyBBQgotCQkJCUYgTyBQZXRlcnNvbnMgZ2F0YSA2Ci0JCQkJVmFzdHJhIEZyb2x1bmRhIEdvdGhlbmJ1cmcgU0UtNDIxMzEKLQkJCQlTV0VERU4KLQotMDAtMjMtNEQgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMjM0RCAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCTY2LCBDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuIFRhaXdhbiAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTRFICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0wMDIzNEUgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLQkJCQk2NixDaHVuZyBTaGFuIFJkLlR1LWNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuIFRhaXdhbiAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTRGICAgKGhleCkJCUx1bWlub3VzIFBvd2VyIFRlY2hub2xvZ2llcyBQdnQuIEx0ZC4KLTAwMjM0RiAgICAgKGJhc2UgMTYpCQlMdW1pbm91cyBQb3dlciBUZWNobm9sb2dpZXMgUHZ0LiBMdGQuCi0JCQkJQzgtQzksIENvbW11bml0eSBDZW50ZXIsCi0JCQkJQmVoaW5kIEphbmFrIENpbmVtYSwgSmFuYWtwdXJpLAotCQkJCU5ldyBEZWxoaSAgMTEwMDU4Ci0JCQkJSU5ESUEKLQotMDAtMjMtNTAgICAoaGV4KQkJTHluVGVjCi0wMDIzNTAgICAgIChiYXNlIDE2KQkJTHluVGVjCi0JCQkJODQwMSBNZWxyb3NlIERyaXZlCi0JCQkJTGVuZXhhIEtTIDY2MjE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy01MSAgIChoZXgpCQkyV2lyZQotMDAyMzUxICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNTIgICAoaGV4KQkJREFUQVNFTlNPUiBTLnAuQS4KLTAwMjM1MiAgICAgKGJhc2UgMTYpCQlEQVRBU0VOU09SIFMucC5BLgotCQkJCVZpYSBMYXZpbm8sIDI2NQotCQkJCU1vbnRlIFNhbiBQaWV0cm8gKEJPKSAgNDAwNTAKLQkJCQlJVEFMWQotCi0wMC0yMy01MyAgIChoZXgpCQlGIEUgVCBFbGV0dHJvbmljYSBzbmMKLTAwMjM1MyAgICAgKGJhc2UgMTYpCQlGIEUgVCBFbGV0dHJvbmljYSBzbmMKLQkJCQlWaWEgQS5NYW56b25pIDE0L2EKLQkJCQlDUDMwMyBQUFRUIFBvZ2dpYm9uc2kgQ2VudHJvCi0JCQkJUG9nZ2lib25zaSBTaWVuYSA1MzAzNgotCQkJCUlUQUxZCi0KLTAwLTIzLTU0ICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAyMzU0ICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsCi0JCQkJVGFpcGVpIFRhaXdhbiAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTU1ICAgKGhleCkJCUtpbmNvIEF1dG9tYXRpb24oU2hhbmdoYWkpIEx0ZC4KLTAwMjM1NSAgICAgKGJhc2UgMTYpCQlLaW5jbyBBdXRvbWF0aW9uKFNoYW5naGFpKSBMdGQuCi0JCQkJQmxkZzEsIE5vLjEzODcsIFpoYW5nZG9uZyBSb2FkLAotCQkJCVpoYW5namlhbmcgSGktdGVjaCBQYXJrLCBQdWRvbmcuCi0JCQkJU2hhbmdoYWkgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMDAtMjMtNTYgICAoaGV4KQkJUGFja2V0IEZvcmVuc2ljcyBMTEMKLTAwMjM1NiAgICAgKGJhc2UgMTYpCQlQYWNrZXQgRm9yZW5zaWNzIExMQwotCQkJCTQyMCBTIFNtaXRoIFJkCi0JCQkJVGVtcGUgQVogODUyODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTU3ICAgKGhleCkJCVBpdHJvbm90IFRlY2hub2xvZ2llcyBhbmQgRW5naW5lZXJpbmcgUC5ULkUuIEx0ZC4KLTAwMjM1NyAgICAgKGJhc2UgMTYpCQlQaXRyb25vdCBUZWNobm9sb2dpZXMgYW5kIEVuZ2luZWVyaW5nIFAuVC5FLiBMdGQuCi0JCQkJOCBIYXR1dCBzdAotCQkJCVBhcmRlc2l5YSAgNDI4MTUKLQkJCQlJU1JBRUwKLQotMDAtMjMtNTggICAoaGV4KQkJU1lTVEVMIFNBCi0wMDIzNTggICAgIChiYXNlIDE2KQkJU1lTVEVMIFNBCi0JCQkJWkkgREUgQkVMTEUgQUlSRQotCQkJCUJQIDMxCi0JCQkJQVlUUkUgIDE3NDQwCi0JCQkJRlJBTkNFCi0KLTAwLTIzLTU5ICAgKGhleCkJCUJlbmNobWFyayBFbGVjdHJvbmljcyAoIFRoYWlsYW5kICkgUHVibGljIENvbXBhbnkgTGltaXRlZAotMDAyMzU5ICAgICAoYmFzZSAxNikJCUJlbmNobWFyayBFbGVjdHJvbmljcyAoIFRoYWlsYW5kICkgUHVibGljIENvbXBhbnkgTGltaXRlZAotCQkJCTk0IE1vbyAxLCBIaS1UZWNoIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJQmFubGFuZQotCQkJCUJhbmcgUGEtaW4gQXl1ZGhheWEgMTMxNjAKLQkJCQlUSEFJTEFORAotCi0wMC0yMy01QSAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTHRkLgotMDAyMzVBICAgICAoYmFzZSAxNikJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMdGQuCi0JCQkJTk8gMjUsIFRoZSAzcmQgc3RyZWV0LAotCQkJCUt1YW5TaGFuIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUKLQkJCQlLdWFuU2hhbiBTVVpIT1UgMjE1MzAwCi0JCQkJQ0hJTkEKLQotMDAtMjMtNUIgICAoaGV4KQkJR3VsZnN0cmVhbQotMDAyMzVCICAgICAoYmFzZSAxNikJCUd1bGZzdHJlYW0KLQkJCQkzMiBMdW1tdXMgRHJpdmUKLQkJCQlSREMgTGFiIFItMDgKLQkJCQlTYXZhbm5haCBHQSAzMTQwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNUMgICAoaGV4KQkJQXByaXVzLCBJbmMuCi0wMDIzNUMgICAgIChiYXNlIDE2KQkJQXByaXVzLCBJbmMuCi0JCQkJNDQwIE4uIFdvbGZlIFJkCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy01RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzNUQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNUUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMzVFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTVGICAgKGhleCkJCVNpbGljb24gTWljcm8gU2Vuc29ycyBHbWJICi0wMDIzNUYgICAgIChiYXNlIDE2KQkJU2lsaWNvbiBNaWNybyBTZW5zb3JzIEdtYkgKLQkJCQlHcmVuenN0cmFzc2UgMjggLyBHZWLkdWRlIDMyCi0JCQkJRHJlc2RlbiBTYXhvbnkgMDExMDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTYwICAgKGhleCkJCUxvb2tpdCBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDIzNjAgICAgIChiYXNlIDE2KQkJTG9va2l0IFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlGTCA4IFNlYXNob3JlIE1hbnNpb24KLQkJCQlCYW8nYW4gQ0JEIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwMAotCQkJCUNISU5BCi0KLTAwLTIzLTYxICAgKGhleCkJCVVuaWdlbiBDb3Jwb3JhdGlvbgotMDAyMzYxICAgICAoYmFzZSAxNikJCVVuaWdlbiBDb3Jwb3JhdGlvbgotCQkJCTQ1Mzg4IFdhcm0gU3ByaW5ncyBCbHZkCi0JCQkJRnJlbW9udCBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNjIgICAoaGV4KQkJR29sZGxpbmUgQ29udHJvbHMKLTAwMjM2MiAgICAgKGJhc2UgMTYpCQlHb2xkbGluZSBDb250cm9scwotCQkJCTYxIFdoaXRlY2FwIERyCi0JCQkJTm9ydGggS2luZ3N0b3duIFJJIDAyODUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy02MyAgIChoZXgpCQlaaHVoYWkgUmF5U2hhcnAgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjM2MyAgICAgKGJhc2UgMTYpCQlaaHVoYWkgUmF5U2hhcnAgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4xMTkgb2YgSHVhd2VpIFJvYWQsIFFpYW5zaGFuIFNjaWVuY2UgJiBUZWNobm9sb2d5IFBhcmssCi0JCQkJWmh1aGFpIEd1YW5nZG9uZyA1MTkwNzAKLQkJCQlDSElOQQotCi0wMC0yMy02NCAgIChoZXgpCQlQb3dlciBJbnN0cnVtZW50cyBQdGUgTHRkCi0wMDIzNjQgICAgIChiYXNlIDE2KQkJUG93ZXIgSW5zdHJ1bWVudHMgUHRlIEx0ZAotCQkJCUJMSyA0MCBUT0ggR1VBTiBSRCBFQVNULCAjMDEtNjIgRU5URVJQUklTRSBIVUIKLQkJCQk2MDg1ODIKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjMtNjUgICAoaGV4KQkJRUxLQS1FbGVrdHJvbmlrIEdtYkgKLTAwMjM2NSAgICAgKGJhc2UgMTYpCQlFTEtBLUVsZWt0cm9uaWsgR21iSAotCQkJCVRhbHN0cmFzc2UgMTA0Ci0JCQkJTPxkZW5zY2hlaWQgTlJXIDU4NTE1Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy02NiAgIChoZXgpCQlCZWlqaW5nIFNpYXN1biBFbGVjdHJvbmljIFN5c3RlbSBDby4sTHRkLgotMDAyMzY2ICAgICAoYmFzZSAxNikJCUJlaWppbmcgU2lhc3VuIEVsZWN0cm9uaWMgU3lzdGVtIENvLixMdGQuCi0JCQkJUm0uMTAxOCBIdWF0aWFuIEJsZGcsIE5vLjYgQmVpIFhpYW9tYWNoYW5nCi0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDAzOAotCQkJCUNISU5BCi0KLTAwLTIzLTY3ICAgKGhleCkJCVVuaUNvbnRyb2xzIGEucy4KLTAwMjM2NyAgICAgKGJhc2UgMTYpCQlVbmlDb250cm9scyBhLnMuCi0JCQkJS3Jlbmlja2EgMjI1NwotCQkJCVByYWd1ZSAxMCAgMTAwIDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMjMtNjggICAoaGV4KQkJTW90b3JvbGEKLTAwMjM2OCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYQotCQkJCTEgTW90b3JvbGEgUGxhemEKLQkJCQlIb2x0c3ZpbGxlIE5ZIDExNzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy02OSAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTAwMjM2OSAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTZBICAgKGhleCkJCUNsZWFyQWNjZXNzLCBJbmMuCi0wMDIzNkEgICAgIChiYXNlIDE2KQkJQ2xlYXJBY2Nlc3MsIEluYy4KLQkJCQkxMzAxIE5FIDE0NHRoIFN0cmVldAotCQkJCVN1aXRlIDExOQotCQkJCVZhbmNvdXZlciBXQSA5ODY4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNkIgICAoaGV4KQkJWGVtYmVkZGVkLCBJbmMuCi0wMDIzNkIgICAgIChiYXNlIDE2KQkJWGVtYmVkZGVkLCBJbmMuCi0JCQkJMTA1MCBIaWdobGFuZCBEcgotCQkJCVN1aXRlIEUKLQkJCQlBbm4gQXJib3IgTUkgNDgxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTZDICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjM2QyAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy02RCAgIChoZXgpCQlSZXNNZWQgTHRkCi0wMDIzNkQgICAgIChiYXNlIDE2KQkJUmVzTWVkIEx0ZAotCQkJCTEsIEVsaXphYmV0aCBNYWNhcnRodXIgRHJpdmUKLQkJCQlCZWxsYSBWaXN0YSBOU1cgMjE1MwotCQkJCUFVU1RSQUxJQQotCi0wMC0yMy02RSAgIChoZXgpCQlCdXJzdGVyIEdtYkggJiBDbyBLRwotMDAyMzZFICAgICAoYmFzZSAxNikJCUJ1cnN0ZXIgR21iSCAmIENvIEtHCi0JCQkJVGFsc3RyYXNzZSAxLTUKLQkJCQlHZXJuc2JhY2ggQmFkZW4tV/xydHRlbWJlcmcgNzY1OTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTZGICAgKGhleCkJCURBUSBTeXN0ZW0KLTAwMjM2RiAgICAgKGJhc2UgMTYpCQlEQVEgU3lzdGVtCi0JCQkJNzA5LTEsIEJ1bmRhbmcgVGVjaG5vIFBhcmsgQS1Eb25nLAotCQkJCVlhdGFwLURvbmcsIEJ1bmRhbmctR3UKLQkJCQlTdW5nbmFtLVNpIEt5dW5nZ2ktRG8sIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtNzAgICAoaGV4KQkJU25lbGwKLTAwMjM3MCAgICAgKGJhc2UgMTYpCQlTbmVsbAotCQkJCUhhcnRtYW4gSG91c2UKLQkJCQlEYW5laGlsbAotCQkJCVJlYWRpbmcgQmVya3MgUkc2IDRQQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIzLTcxICAgKGhleCkJCVNPQU0gU3lzdGVsCi0wMDIzNzEgICAgIChiYXNlIDE2KQkJU09BTSBTeXN0ZWwKLQkJCQkxODItMTMsIERhZXJ1bmcgUG9zdCBUb3dlciBJSSwgMTUwNAotCQkJCVNlb3VsIEd1cm8tZG9uZywgR3Vyby1ndSAxNTItODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTcyICAgKGhleCkJCU1PUkUgU1RBUiBJTkRVU1RSSUFMIEdST1VQIExJTUlURUQKLTAwMjM3MiAgICAgKGJhc2UgMTYpCQlNT1JFIFNUQVIgSU5EVVNUUklBTCBHUk9VUCBMSU1JVEVECi0JCQkJUm0xMjIxLTEyMjUsIEYxMiBTYW5nZGEgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBCdWlsZGluZyAsCi0JCQkJS2VqaSBSb2FkICwgSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTIzLTczICAgKGhleCkJCUdyaWRJcm9uIFN5c3RlbXMsIEluYy4KLTAwMjM3MyAgICAgKGJhc2UgMTYpCQlHcmlkSXJvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJNzI2IFBhbG9tYXIgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy03NCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMzc0ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNzUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjM3NSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTc2ICAgKGhleCkJCUhUQyBDb3Jwb3JhdGlvbgotMDAyMzc2ICAgICAoYmFzZSAxNikJCUhUQyBDb3Jwb3JhdGlvbgotCQkJCU5vLjIzIFhpbmdodWEgUm9hZAotCQkJCVRhb3l1YW4gQ2l0eQotCQkJCVRhb3l1YW4gQ291bnR5ICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTc3ICAgKGhleCkJCUlzb3RlayBFbGVjdHJvbmljcyBMdGQKLTAwMjM3NyAgICAgKGJhc2UgMTYpCQlJc290ZWsgRWxlY3Ryb25pY3MgTHRkCi0JCQkJOSBDbGF5dG9uIFdvb2QgQmFuawotCQkJCVdlc3QgUGFyayBSaW5nIFJvYWQKLQkJCQlMZWVkcyAgTFMxNiA2UVoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMy03OCAgIChoZXgpCQlHTiBOZXRjb20gQS9TCi0wMDIzNzggICAgIChiYXNlIDE2KQkJR04gTmV0Y29tIEEvUwotCQkJCUxhdXRydXBiamVyZyA3Ci0JCQkJUC5PLkJveCA5OQotCQkJCUJhbGxlcnVwICBESyAtIDI3NTAKLQkJCQlERU5NQVJLCi0KLTAwLTIzLTc5ICAgKGhleCkJCVVuaW9uIEJ1c2luZXNzIE1hY2hpbmVzIENvLiBMdGQuCi0wMDIzNzkgICAgIChiYXNlIDE2KQkJVW5pb24gQnVzaW5lc3MgTWFjaGluZXMgQ28uIEx0ZC4KLQkJCQlVbml0IDIsIDIvRiwgQmxvY2sgQSwgSG9uZyBLb25nIEluZHVzdHJpYWwgQ2VudHJlLAotCQkJCTQ4OS00OTEgQ2FzdGxlIFBlYWsgUm9hZCwKLQkJCQlMYWkgQ2hpIEtvayBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0yMy03QSAgIChoZXgpCQlSSU0KLTAwMjM3QSAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMDAtMjMtN0IgICAoaGV4KQkJV0hESSBMTEMKLTAwMjM3QiAgICAgKGJhc2UgMTYpCQlXSERJIExMQwotCQkJCTIzNTAgTWlzc2lvbiBDb2xsZWdlIEJsdmQuCi0JCQkJU3VpdGUgNTAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTdDICAgKGhleCkJCU5FT1RJT04KLTAwMjM3QyAgICAgKGJhc2UgMTYpCQlORU9USU9OCi0JCQkJWkkgbGVzIFBhbHVkcwotCQkJCTE2NSwgYXZlbnVlIGR1IE1hcmluIEJsYW5jCi0JCQkJQVVCQUdORSAgRi0xMzQwMAotCQkJCUZSQU5DRQotCi0wMC0yMy03RCAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMjM3RCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAyCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtN0UgICAoaGV4KQkJRUxTVEVSIEdNQkgKLTAwMjM3RSAgICAgKGJhc2UgMTYpCQlFTFNURVIgR01CSAotCQkJCUtVSEJSVUVDS0VOU1RSQVNTRSAyLTQKLQkJCQlIQU1FTE4gIDMxNzg1Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy03RiAgIChoZXgpCQlQTEFOVFJPTklDUwotMDAyMzdGICAgICAoYmFzZSAxNikJCVBMQU5UUk9OSUNTCi0JCQkJMzQ1IEVOQ0lOQUwgU1QKLQkJCQlTQU5UQSBDUlVaIENBIDk1MDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy04MCAgIChoZXgpCQlOYW5vdGVxCi0wMDIzODAgICAgIChiYXNlIDE2KQkJTmFub3RlcQotCQkJCSBQTyBCb3ggNzk5MQotCQkJCTEgUGlldGVyIFN0cmVldCwgSGlnaHZlbGQgUGFyawotCQkJCUNlbnR1cmlvbiBHYXV0ZW5nIDAwNDYKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMjMtODEgICAoaGV4KQkJTGVuZ2RhIFRlY2hub2xvZ3koWGlhbWVuKSBDby4sTHRkLgotMDAyMzgxICAgICAoYmFzZSAxNikJCUxlbmdkYSBUZWNobm9sb2d5KFhpYW1lbikgQ28uLEx0ZC4KLQkJCQk1L0YsIDQ3IEhhaWppbmcgU291dGggMm5kIFJvYWQsWGlhbWVuIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUsIEhhaWNhbmcgRGlzdHJpY3QsCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMjYKLQkJCQlDSElOQQotCi0wMC0yMy04MiAgIChoZXgpCQlMaWggUm9uZyBFbGVjdHJvbmljIEVudGVycHJpc2UgQ28uLCBMdGQuCi0wMDIzODIgICAgIChiYXNlIDE2KQkJTGloIFJvbmcgRWxlY3Ryb25pYyBFbnRlcnByaXNlIENvLiwgTHRkLgotCQkJCU5vLiAyLCBMYW5lIDM4NywgSHNpbiBTaHUgUmQuCi0JCQkJSHNpbiBDaHVhbmcgQ2l0eSwgVGFpcGVpIDI0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtODMgICAoaGV4KQkJSW5NYWdlIFN5c3RlbXMgSW5jCi0wMDIzODMgICAgIChiYXNlIDE2KQkJSW5NYWdlIFN5c3RlbXMgSW5jCi0JCQkJMzI1NS0xIFNjb3R0IEJsdmQsICMxMDQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtODQgICAoaGV4KQkJR0dIIEVuZ2luZWVyaW5nIHMuci5sLgotMDAyMzg0ICAgICAoYmFzZSAxNikJCUdHSCBFbmdpbmVlcmluZyBzLnIubC4KLQkJCQlWaWEgQWd1Y2NoaSA4NC8yCi0JCQkJQm9sb2duYSAgNDAxMzMKLQkJCQlJVEFMWQotCi0wMC0yMy04NSAgIChoZXgpCQlBTlRJUE9ERQotMDAyMzg1ICAgICAoYmFzZSAxNikJCUFOVElQT0RFCi0JCQkJNSBSVUUgREUgRE9VQUkKLQkJCQlQQVJJUyBJTEUgREUgRlJBTkNFIDc1MDA5Ci0JCQkJRlJBTkNFCi0KLTAwLTIzLTg2ICAgKGhleCkJCVRvdXIgJiBBbmRlcnNzb24gQUIKLTAwMjM4NiAgICAgKGJhc2UgMTYpCQlUb3VyICYgQW5kZXJzc29uIEFCCi0JCQkJQW5uZWx1bmQKLQkJCQlManVuZyAgNTI0IDgwCi0JCQkJU1dFREVOCi0KLTAwLTIzLTg3ICAgKGhleCkJCVRoaW5rRmxvb2QsIEluYy4KLTAwMjM4NyAgICAgKGJhc2UgMTYpCQlUaGlua0Zsb29kLCBJbmMuCi0JCQkJMTM4IENsYWZsaW4gU3QKLQkJCQlCZWxtb250IE1BIDAyNDc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy04OCAgIChoZXgpCQlWLlQuIFRlbGVtYXRpY2EgUy5wLmEuCi0wMDIzODggICAgIChiYXNlIDE2KQkJVi5ULiBUZWxlbWF0aWNhIFMucC5hLgotCQkJCVZpYSBHb3JreSwgMjEKLQkJCQlTYW4gR2l1bGlhbm8gTWlsYW5lc2UgTWlsYW5vIDIwMDk4Ci0JCQkJSVRBTFkKLQotMDAtMjMtODkgICAoaGV4KQkJSEFOR1pIT1UgSDNDIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMjM4OSAgICAgKGJhc2UgMTYpCQlIQU5HWkhPVSBIM0MgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCU9yaWVudGFsIEVsZWN0cm9uaWNzIEJsZGcuLCAjMiwgQ2h1YW5neWUgUm9hZKOsU2hhbmdkaSBJbmZvcm1hdGlvbiBJbmR1c3RyeSBCYXNlLAotCQkJCUhhaWRpYW4gRGlzdHJpY3QsIEJlaWppbmcsIFAuUi5DaGluYQotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTIzLThBICAgKGhleCkJCUNpZW5hIENvcnBvcmF0aW9uCi0wMDIzOEEgICAgIChiYXNlIDE2KQkJQ2llbmEgQ29ycG9yYXRpb24KLQkJCQk5MjAgRWxrcmlkZ2UgTGFuZGluZwotCQkJCUxpbnRoaWN1bSBNRCAyMTA5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtOEIgICAoaGV4KQkJUXVhbnRhIENvbXB1dGVyIEluYy4KLTAwMjM4QiAgICAgKGJhc2UgMTYpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotCQkJCU5PLiAyMTEsIFdFTiBIV0EgMlJELixLVUVJIFNIQU4gSFNJQU5HLCBUQU8gWVVBTiBTSElFTiwKLQkJCQlUQUlQRUkgVEFJV0FOIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtOEMgICAoaGV4KQkJUFJJVkFURQotMDAyMzhDICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yMy04RCAgIChoZXgpCQlUZWNobm8gRGVzaWduIENvLiwgTHRkLgotMDAyMzhEICAgICAoYmFzZSAxNikJCVRlY2hubyBEZXNpZ24gQ28uLCBMdGQuCi0JCQkJMzEyLTIKLQkJCQlUb3Jpa28sIE5pc2hpaGFyYS1tdXJhCi0JCQkJQXNvLWd1biBLdW1hbW90by1rZW4gODYxLTI0MDEKLQkJCQlKQVBBTgotCi0wMC0yMy04RSAgIChoZXgpCQlQSVJFTExJIEJST0FEQkFORCBTT0xVVElPTlMKLTAwMjM4RSAgICAgKGJhc2UgMTYpCQlQSVJFTExJIEJST0FEQkFORCBTT0xVVElPTlMKLQkJCQlWSUFMRSBTQVJDQSAyMjIKLQkJCQlNSUxBTk8gIDIwMTI2Ci0JCQkJSVRBTFkKLQotMDAtMjMtOEYgICAoaGV4KQkJTklERUMgQ09QQUwgQ09SUE9SQVRJT04KLTAwMjM4RiAgICAgKGJhc2UgMTYpCQlOSURFQyBDT1BBTCBDT1JQT1JBVElPTgotCQkJCTItMTgtMTAsU0hJTVVSQQotCQkJCUlUQUJBU0hJLUtVIFRPS1lPIDE3NC04NTUwCi0JCQkJSkFQQU4KLQotMDAtMjMtOTAgICAoaGV4KQkJQWxnb2x3YXJlIENvcnBvcmF0aW9uCi0wMDIzOTAgICAgIChiYXNlIDE2KQkJQWxnb2x3YXJlIENvcnBvcmF0aW9uCi0JCQkJMTNGLTUsIE5vLiA3NywgU2VjLiAxLCBTaW50YWkgNXRoIFJkLiwKLQkJCQlTaWpoaWggQ2l0eSwKLQkJCQlUYWlwZWkgQ291bnR5IFRhaXdhbiAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTkxICAgKGhleCkJCU1heGlhbgotMDAyMzkxICAgICAoYmFzZSAxNikJCU1heGlhbgotCQkJCTIxdGggRmwuIEtJTlMgdG93ZXIsIDI1LTEKLQkJCQlKZW9uamEtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLWNpdHkgR3llb25nZ2ktZG8gNDYzLTg0NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy05MiAgIChoZXgpCQlQcm90ZXVzIEluZHVzdHJpZXMgSW5jLgotMDAyMzkyICAgICAoYmFzZSAxNikJCVByb3RldXMgSW5kdXN0cmllcyBJbmMuCi0JCQkJMzQwIFBpb25lZXIgV2F5Ci0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtOTMgICAoaGV4KQkJQUpJTkVYVEVLCi0wMDIzOTMgICAgIChiYXNlIDE2KQkJQUpJTkVYVEVLCi0JCQkJOS0zLCBIb2xpbWRvbmcsIERhbHNlb2d1Ci0JCQkJRGFlZ3UgIDcwNC0yNDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtOTQgICAoaGV4KQkJU2FtamVvbgotMDAyMzk0ICAgICAoYmFzZSAxNikJCVNhbWplb24KLQkJCQkjMTMxMy0xIEpvaWwtUmksIFNhbWRvbmctTXlldW4sVWxqdS1HdW4KLQkJCQlVbHNhbiBDaXR5IFNvdXRoIEtvcmVhIDY4OS05MzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtOTUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjM5NSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTk2ICAgKGhleCkJCUFOREVTIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwMjM5NiAgICAgKGJhc2UgMTYpCQlBTkRFUyBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJMkYsTm8uIDEsIExpLUhzaW4gRmlyc3QgUm9hZCwKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW4tQ2h1IFRhaXdhbiAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTk3ICAgKGhleCkJCVdlc3RlbGwgVGVjaG5vbG9naWVzIEluYy4KLTAwMjM5NyAgICAgKGJhc2UgMTYpCQlXZXN0ZWxsIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMTE4NTIgUHJlc2xleSBDcgotCQkJCVBsYWluZmllbGQgSUwgNjA1ODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTk4ICAgKGhleCkJCVNreSBDb250cm9sCi0wMDIzOTggICAgIChiYXNlIDE2KQkJU2t5IENvbnRyb2wKLQkJCQl1bC4gU3Zvcm5vc3RpIDQxCi0JCQkJQnJhdGlzbGF2YSBCQSA4MiAxMDcKLQkJCQlTTE9WQUtJQQotCi0wMC0yMy05OSAgIChoZXgpCQlWRCBEaXZpc2lvbiwgU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4KLTAwMjM5OSAgICAgKGJhc2UgMTYpCQlWRCBEaXZpc2lvbiwgU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4KLQkJCQk0MTYsIE1hZXRhbi0zZG9uZywgeWVvbmd0b25nLWd1LCBTdXdvbi1jaXR5Ci0JCQkJS29yZWEKLQkJCQlTdXdvbiAgNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy05QSAgIChoZXgpCQlFYXN5RGF0YSBTb2Z0d2FyZSBHbWJICi0wMDIzOUEgICAgIChiYXNlIDE2KQkJRWFzeURhdGEgU29mdHdhcmUgR21iSAotCQkJCVN0ZWluYmFjaGVyIFN0cmHfZSAxNC0yNAotCQkJCUVzY2hib3JuIC8gVHMuIEhlc3NlbiBELTY1NzYwCi0JCQkJR0VSTUFOWQotCi0wMC0yMy05QiAgIChoZXgpCQlFbHN0ZXIgU29sdXRpb25zLCBMTEMKLTAwMjM5QiAgICAgKGJhc2UgMTYpCQlFbHN0ZXIgU29sdXRpb25zLCBMTEMKLQkJCQkyMDggU291dGggUm9nZXJzIExhbmUKLQkJCQlSYWxlaWdoIE5vcnRoIENhcm9saW5hIDI3NjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy05QyAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi0wMDIzOUMgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTlEICAgKGhleCkJCU1hcG93ZXIgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTAwMjM5RCAgICAgKGJhc2UgMTYpCQlNYXBvd2VyIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJTm8uIDUwIE1pbnF1YW4gUm9hZAotCQkJCUx1emh1IFNoaWFuZwotCQkJCVRhb3l1YW4gQ291bnR5ICAzMzg0NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtOUUgICAoaGV4KQkJSmlhbmdzdSBMZW1vdGUgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkCi0wMDIzOUUgICAgIChiYXNlIDE2KQkJSmlhbmdzdSBMZW1vdGUgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkCi0JCQkJTWVuZ2xhbiBJbmR1c3RyaWFsIFBhcmssWXVzaGFuCi0JCQkJQ2hhbmdzaHUgSmlhbmdzdSAyMTU1MDAKLQkJCQlDSElOQQotCi0wMC0yMy05RiAgIChoZXgpCQlJbnN0aXR1dCBm/HIgUHL8ZnRlY2huaWsKLTAwMjM5RiAgICAgKGJhc2UgMTYpCQlJbnN0aXR1dCBm/HIgUHL8ZnRlY2huaWsKLQkJCQlTY2h1bHN0ci4gMwotCQkJCVRvZHRlbndlaXMgQmF5ZXJuIDg2NDQ3Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy1BMCAgIChoZXgpCQlIYW5hIENOUyBDby4sIExURC4KLTAwMjNBMCAgICAgKGJhc2UgMTYpCQlIYW5hIENOUyBDby4sIExURC4KLQkJCQlUYWVqYW5nLWRvbmcgMTcyMC01MiBUYWVqYW5nLU5vbmdHb25nLURhbmppCi0JCQkJV29uanUgR2FuZ3dvbi1kbyAyMjAtOTYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUExICAgKGhleCkJCVRyZW5kIEVsZWN0cm9uaWNzIEx0ZAotMDAyM0ExICAgICAoYmFzZSAxNikJCVRyZW5kIEVsZWN0cm9uaWNzIEx0ZAotCQkJCUd1dCBOby4gMzUwCi0JCQkJVmlsbGFnZSAtIEJoYWxnYW9uCi0JCQkJQXVyYW5hZ2FiYWQgTWFoYXJhc2h0cmEgNDMxMjEwCi0JCQkJSU5ESUEKLQotMDAtMjMtQTIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjNBMiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUEzICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIzQTMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1BNCAgIChoZXgpCQlOZXcgQ29uY2VwdHMgRGV2ZWxvcG1lbnQgQ29ycC4KLTAwMjNBNCAgICAgKGJhc2UgMTYpCQlOZXcgQ29uY2VwdHMgRGV2ZWxvcG1lbnQgQ29ycC4KLQkJCQkyNjUwIEJyaWRnZSBMYW5lCi0JCQkJV29vZHN0b2NrIElMIDYwMDk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1BNSAgIChoZXgpCQlTYWdlVFYsIExMQwotMDAyM0E1ICAgICAoYmFzZSAxNikJCVNhZ2VUViwgTExDCi0JCQkJOTgwMCBTLiBMYSBDaWVuZWdhIEJsdmQKLQkJCQlTdWl0ZSA5MDUKLQkJCQlJbmdsZXdvb2QgQ0EgOTAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUE2ICAgKGhleCkJCUUtTW9uCi0wMDIzQTYgICAgIChiYXNlIDE2KQkJRS1Nb24KLQkJCQlPbmUgT3hmb3JkIFZhbGxleSwgU3VpdGUgNDE4Ci0JCQkJTGFuZ2hvcm5lIFBBIDE5MDQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1BNyAgIChoZXgpCQlSZWRwaW5lIFNpZ25hbHMsIEluYy4KLTAwMjNBNyAgICAgKGJhc2UgMTYpCQlSZWRwaW5lIFNpZ25hbHMsIEluYy4KLQkJCQlQbG90IDg3LCBTYWdhciBTb2NpZXR5Ci0JCQkJQmFuamFyYSBIaWxscyBSb2FkIE5vLiAyCi0JCQkJSHlkZXJhYmFkIEFQIDUwMDAzNAotCQkJCUlORElBCi0KLTAwLTIzLUE4ICAgKGhleCkJCU1hcnNoYWxsIEVsZWN0cm9uaWNzCi0wMDIzQTggICAgIChiYXNlIDE2KQkJTWFyc2hhbGwgRWxlY3Ryb25pY3MKLQkJCQkxOTEwIEUgTWFwbGUgQXZlCi0JCQkJRWwgU2VndW5kbyBDYSA5MDI0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQTkgICAoaGV4KQkJQmVpamluZyBEZXRpYW5xdWFuIEVsZWN0cm9tZWNoYW5pY2FsIEVxdWlwbWVudCBDby4sIEx0ZAotMDAyM0E5ICAgICAoYmFzZSAxNikJCUJlaWppbmcgRGV0aWFucXVhbiBFbGVjdHJvbWVjaGFuaWNhbCBFcXVpcG1lbnQgQ28uLCBMdGQKLQkJCQlOby4gMiBDaGFwZW5nIFJvYWQsIEhhaWRpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDkxCi0JCQkJQ0hJTkEKLQotMDAtMjMtQUEgICAoaGV4KQkJSEZSLCBJbmMuCi0wMDIzQUEgICAgIChiYXNlIDE2KQkJSEZSLCBJbmMuCi0JCQkJNUYsIEhhbmEgRVogVG93ZXIKLQkJCQkxNTgsIEd1bWktZG9uZywgQnVuZGFuZy1ndQotCQkJCVN1bmduYW0tc2kgS3l1bmdnaS1kbyA0NjMtODcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUFCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjNBQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1BQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzQUMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQUQgICAoaGV4KQkJWG1hcmsgQ29ycG9yYXRpb24KLTAwMjNBRCAgICAgKGJhc2UgMTYpCQlYbWFyayBDb3Jwb3JhdGlvbgotCQkJCTMwOSBMZWdnZXQgIERyaXZlCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDNBMwotCQkJCUNBTkFEQQotCi0wMC0yMy1BRSAgIChoZXgpCQlEZWxsIEluYy4KLTAwMjNBRSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUFGICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIzQUYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVS5TLiBIaWdod2F5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElsbGlub2lzIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1CMCAgIChoZXgpCQlDT01YSU9OIFRlY2hub2xvZ3kgSW5jLgotMDAyM0IwICAgICAoYmFzZSAxNikJCUNPTVhJT04gVGVjaG5vbG9neSBJbmMuCi0JCQkJMTFGLCBOby4gMTExLCBTZWMgMiwgS2VlbHVuZyBSZC4sIFNpbnlpIERpc3RyaWMKLQkJCQlUYWlwZWkgVGFpd2FuIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtQjEgICAoaGV4KQkJTG9uZ2NoZWVyIFRlY2hub2xvZ3kgKFNpbmdhcG9yZSkgUHRlIEx0ZAotMDAyM0IxICAgICAoYmFzZSAxNikJCUxvbmdjaGVlciBUZWNobm9sb2d5IChTaW5nYXBvcmUpIFB0ZSBMdGQKLQkJCQk0MyBLYWtpIEJ1a2l0IFZpZXcsICAjMDQtMDEgICwKLQkJCQlLYWtpIEJ1a2l0IFRlY2ggUGFyayBJSSwKLQkJCQk0MTU5NzAKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjMtQjIgICAoaGV4KQkJSW50ZWxsaWdlbnQgTWVjaGF0cm9uaWMgU3lzdGVtcyBJbmMKLTAwMjNCMiAgICAgKGJhc2UgMTYpCQlJbnRlbGxpZ2VudCBNZWNoYXRyb25pYyBTeXN0ZW1zIEluYwotCQkJCTE2MSBSb2dlciBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4ySiAxQjEKLQkJCQlDQU5BREEKLQotMDAtMjMtQjMgICAoaGV4KQkJTHl5biBBQgotMDAyM0IzICAgICAoYmFzZSAxNikJCUx5eW4gQUIKLQkJCQlJREVPTiBTY2llbmNlIFBhcmsKLQkJCQlTY2hlZWxlduRnZW4gMTcKLQkJCQlMdW5kICAyMjMgNzAKLQkJCQlTV0VERU4KLQotMDAtMjMtQjQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjNCNCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gdiAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjMtQjUgICAoaGV4KQkJT1JUQU5BIExURAotMDAyM0I1ICAgICAoYmFzZSAxNikJCU9SVEFOQSBMVEQKLQkJCQlPU1RJTSBLT0NBU0lOQU4gU0FOQVlJIFNJVEVTSQotCQkJCTEzLiBTT0tBSyBOTzozNy0zOSBZLiBNQUhBTExFCi0JCQkJQU5LQVJBICAwNjM3MAotCQkJCVRVUktFWQotCi0wMC0yMy1CNiAgIChoZXgpCQlTRUNVUklURSBDT01NVU5JQ0FUSU9OUyAvIEhPTkVZV0VMTAotMDAyM0I2ICAgICAoYmFzZSAxNikJCVNFQ1VSSVRFIENPTU1VTklDQVRJT05TIC8gSE9ORVlXRUxMCi0JCQkJRk9OVCBERSBMJ09STUUKLQkJCQkxMTk4IEFWIERVIERPQ1RFVVIgRE9OQVQKLQkJCQlNT1VHSU5TIEZSQU5DRSAwNjI1MAotCQkJCUZSQU5DRQotCi0wMC0yMy1CNyAgIChoZXgpCQlRLUxpZ2h0IENvLiwgTHRkLgotMDAyM0I3ICAgICAoYmFzZSAxNikJCVEtTGlnaHQgQ28uLCBMdGQuCi0JCQkJMTc4LTEgV29vZ3llLVJpLCBTYW5nZG9uZy1NeXVuLAotCQkJCUdpbWhhZS1TaSBHeXVuZ3NhbmdOYW0tRG8gNjIxLTgxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy1COCAgIChoZXgpCQlTaWNodWFuIEppdXpob3UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLixMdGQKLTAwMjNCOCAgICAgKGJhc2UgMTYpCQlTaWNodWFuIEppdXpob3UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4yNTkgSml1emhvdSBSb2FkLAotCQkJCU1pYW55YW5nIFNpY2h1YW4gNjIxMDAwCi0JCQkJQ0hJTkEKLQotMDAtMjMtQjkgICAoaGV4KQkJRUFEUyBEZXV0c2NobGFuZCBHbWJICi0wMDIzQjkgICAgIChiYXNlIDE2KQkJRUFEUyBEZXV0c2NobGFuZCBHbWJICi0JCQkJV2lsbHkgTWVzc2Vyc2NobWl0dCBTdHIuCi0JCQkJT3R0b2JydW5uIEJhdmFyaWEgODU1MjEKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLUJBICAgKGhleCkJCUNocm9tYQotMDAyM0JBICAgICAoYmFzZSAxNikJCUNocm9tYQotCQkJCTY4LCBId2EtWWEgMXN0IFJkLiwgSHdhLVlhIFRlY2huaWNhbCBQYXJrLAotCQkJCUt1ZWktU2hhbiBIc2lhbmcsCi0JCQkJVGFveXVhbiBIc2llbiBUYWl3YW4gMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy1CQiAgIChoZXgpCQlTY2htaXR0IEluZHVzdHJpZXMKLTAwMjNCQiAgICAgKGJhc2UgMTYpCQlTY2htaXR0IEluZHVzdHJpZXMKLQkJCQkyNzY1IE5XIE5pY29sYWkgU3QKLQkJCQlQb3J0bGFuZCBPcmVnb24gOTcyMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUJDICAgKGhleCkJCUVRLVNZUyBHbWJICi0wMDIzQkMgICAgIChiYXNlIDE2KQkJRVEtU1lTIEdtYkgKLQkJCQlIaW50ZXIgZGVuIEfkcnRlbiAxNWIKLQkJCQlUcmV1ZW5icmlldHplbiBPVCBGZWxkaGVpbSBCcmFuZGVuYnVyZyAxNDkyOQotCQkJCUdFUk1BTlkKLQotMDAtMjMtQkQgICAoaGV4KQkJRGlnaXRhbCBBbGx5LCBJbmMuCi0wMDIzQkQgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBBbGx5LCBJbmMuCi0JCQkJMTIxOCBWYWxsZXkgUmlkZ2UgRHJpdmUKLQkJCQlHcmFpbiBWYWxsZXkgTU8gNjQwMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUJFICAgKGhleCkJCUNpc2NvIFNQVlRHCi0wMDIzQkUgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQkYgICAoaGV4KQkJTWFpbnBpbmUsIEluYy4KLTAwMjNCRiAgICAgKGJhc2UgMTYpCQlNYWlucGluZSwgSW5jLgotCQkJCVBPIEJveCAyNDEKLQkJCQlXaWxzb252aWxsZSBPcmVnb24gOTcwNzAtMDI0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQzAgICAoaGV4KQkJQnJvYWR3YXkgTmV0d29ya3MKLTAwMjNDMCAgICAgKGJhc2UgMTYpCQlCcm9hZHdheSBOZXR3b3JrcwotCQkJCTE3NTQgVGVjaG5vbG9neSBEcml2ZSwgU3VpdGUgMjA4Ci0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQzEgICAoaGV4KQkJU2VjdXJpdGFzIERpcmVjdCBBQgotMDAyM0MxICAgICAoYmFzZSAxNikJCVNlY3VyaXRhcyBEaXJlY3QgQUIKLQkJCQlLYWxlbmRlZ2F0YW4gMjYKLQkJCQlNYWxt9iAgMjAzMjAKLQkJCQlTV0VERU4KLQotMDAtMjMtQzIgICAoaGV4KQkJU0FNU1VORyBFbGVjdHJvbmljcy4gQ28uIExURAotMDAyM0MyICAgICAoYmFzZSAxNikJCVNBTVNVTkcgRWxlY3Ryb25pY3MuIENvLiBMVEQKLQkJCQkxOXRoIEZsLiwgS29yZWEgTGlmZSBCbGRnLiAxMzM4LTEyCi0JCQkJU2VvY2hvIDIgRG9uZyBTZW9jaG8tZ3UgRG9tYXN0aWMgU2FsZXMmIE1hcmtldGluZyBEaXZpc2lvbgotCQkJCVNlb3VsICAxMzctODYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUMzICAgKGhleCkJCUxvZ01lSW4sIEluYy4KLTAwMjNDMyAgICAgKGJhc2UgMTYpCQlMb2dNZUluLCBJbmMuCi0JCQkJNTAwIFVuaWNvcm4gUGFyayBEcml2ZQotCQkJCVdvYnVybiBNYXNzYWNodXNldHRzIDAxODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1DNCAgIChoZXgpCQlMdXggTHVtZW4KLTAwMjNDNCAgICAgKGJhc2UgMTYpCQlMdXggTHVtZW4KLQkJCQlLZXJuZW5lcmdpZXN0cmFhdCA1M0EKLQkJCQlXaWxyaWprIEFudHdlcnAgMjYxMAotCQkJCUJFTEdJVU0KLQotMDAtMjMtQzUgICAoaGV4KQkJUmFkaWF0aW9uIFNhZmV0eSBhbmQgQ29udHJvbCBTZXJ2aWNlcyBJbmMKLTAwMjNDNSAgICAgKGJhc2UgMTYpCQlSYWRpYXRpb24gU2FmZXR5IGFuZCBDb250cm9sIFNlcnZpY2VzIEluYwotCQkJCTkxIFBvcnRzbW91dGggQXZlCi0JCQkJU3RyYXRoYW0gTmV3IEhhbXBzaGlyZSAwMzg4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQzYgICAoaGV4KQkJU01DIENvcnBvcmF0aW9uCi0wMDIzQzYgICAgIChiYXNlIDE2KQkJU01DIENvcnBvcmF0aW9uCi0JCQkJNC0yLTIsIEtpbnVub2RhaQotCQkJCVRzdWt1YmEgTWlyYWktc2hpIEliYXJha2kta2VuIDMwMC0yNDkzCi0JCQkJSkFQQU4KLQotMDAtMjMtQzcgICAoaGV4KQkJQVZTeXN0ZW0KLTAwMjNDNyAgICAgKGJhc2UgMTYpCQlBVlN5c3RlbQotCQkJCXVsLiBGcmllZGxlaW5hIDQKLQkJCQlLcmFr83cgbWGzb3BvbHNraWUgMzAtMDA5Ci0JCQkJUE9MQU5ECi0KLTAwLTIzLUM4ICAgKGhleCkJCVRFQU0tUgotMDAyM0M4ICAgICAoYmFzZSAxNikJCVRFQU0tUgotCQkJCUdyYWdkYW5za2kgc3RyLjExMSwgQSwgOS1OCi0JCQkJU3QuIFBldGVyc2J1cmcgIDE5NTI2NQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yMy1DOSAgIChoZXgpCQlTaWNodWFuIFRpYW55aSBJbmZvcm1hdGlvbiBTY2llbmNlICYgVGVjaG5vbG9neSBTdG9jayBDTy4sTFRECi0wMDIzQzkgICAgIChiYXNlIDE2KQkJU2ljaHVhbiBUaWFueWkgSW5mb3JtYXRpb24gU2NpZW5jZSAmIFRlY2hub2xvZ3kgU3RvY2sgQ08uLExURAotCQkJCU5vLjEsSG90IFNwcmluZyBIaWdod2F5LERheWkgQ291bnR5Ci0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMTMzMAotCQkJCUNISU5BCi0KLTAwLTIzLUNBICAgKGhleCkJCUJlaGluZCBUaGUgU2V0LCBMTEMKLTAwMjNDQSAgICAgKGJhc2UgMTYpCQlCZWhpbmQgVGhlIFNldCwgTExDCi0JCQkJMjE4NSBLbm9sbHdvb2QgRHIuCi0JCQkJQm91bGRlciBDTyA4MDMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQ0IgICAoaGV4KQkJU2hlbnpoZW4gRnVsbC1qb2luIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAyM0NCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEZ1bGwtam9pbiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQk5L0YsTm8uMSxYaW5ydWkgUm9hZCxIb3VydWkgLFhpeGlhbmcgVG93biwgQmFvJ2FuIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTIzLUNDICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyM0NDICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTIzLUNEICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotMDAyM0NEICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCVNvdXRoIEJ1aWxkaW5nLCBOby41IEtleXVhbiBSb2FkLCBDZW50cmFsIFpvbmUsCi0JCQkJU2NpZW5jZSAmIFRlY2hub2xvZ3kgUGFyayBOYW5zaGFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTIzLUNFICAgKGhleCkJCUtJVEEgREVOU0hJIENPUlBPUkFUSU9OCi0wMDIzQ0UgICAgIChiYXNlIDE2KQkJS0lUQSBERU5TSEkgQ09SUE9SQVRJT04KLQkJCQkxMkYgVE9LWU8tTklTSElJS0VCVUtVUk8gQmlsZy4sCi0JCQkJMS03LTcsIE5pc2hpLWlrZWJ1a3VybwotCQkJCVRvc2hpbWEta3UsIFRva3lvIDE3MS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMjMtQ0YgICAoaGV4KQkJQ1VNTUlOUy1BTExJU09OIENPUlAuCi0wMDIzQ0YgICAgIChiYXNlIDE2KQkJQ1VNTUlOUy1BTExJU09OIENPUlAuCi0JCQkJODkxIEZFRUhBTlZJTExFIERSSVZFCi0JCQkJTVQuIFBST1NQRUNUIElMIDYwMDU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1EMCAgIChoZXgpCQlVbmlsb2MgVVNBIEluYy4KLTAwMjNEMCAgICAgKGJhc2UgMTYpCQlVbmlsb2MgVVNBIEluYy4KLQkJCQkzMzMzIE1pY2hlbHNvbiBEcml2ZQotCQkJCVN1aXRlIDYwMAotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRDEgICAoaGV4KQkJVFJHCi0wMDIzRDEgICAgIChiYXNlIDE2KQkJVFJHCi0JCQkJV2lzbWEgS29zZ29ybyAxM3RoIEZsb29yCi0JCQkJSmwuIE1ILiBUaGFtcmluIDUzCi0JCQkJSmFrYXJ0YSBQdXNhdCAgMTAzNTAKLQkJCQlJTkRPTkVTSUEKLQotMDAtMjMtRDIgICAoaGV4KQkJSW5oYW5kIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDIzRDIgICAgIChiYXNlIDE2KQkJSW5oYW5kIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMzAgV2VzdCBHdWRlIERyaXZlCi0JCQkJU3VpdGUgNTUwCi0JCQkJUm9ja3ZpbGxlIE1hcnlsYW5kIDIwODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1EMyAgIChoZXgpCQlBaXJMaW5rIFdpRmkgTmV0d29ya2luZyBDb3JwLgotMDAyM0QzICAgICAoYmFzZSAxNikJCUFpckxpbmsgV2lGaSBOZXR3b3JraW5nIENvcnAuCi0JCQkJMTlGLTEgUm9vbSBBICwgTm8uOTcsIFNlYyA0LCBDaHVuZyBIc2luIFJkLiwKLQkJCQlTYW4gQ2h1bmcgQ2l0eSwgVGFpcGVpIEhzaWVuIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtRDQgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMjNENCAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRDUgICAoaGV4KQkJV0FSRU1BIGVsZWN0cm9uaWMgR21iSAotMDAyM0Q1ICAgICAoYmFzZSAxNikJCVdBUkVNQSBlbGVjdHJvbmljIEdtYkgKLQkJCQlEaWxsYmVyZyAzMwotCQkJCU1hcmt0aGVpZGVuZmVsZCBCYXZhcmlhIDk3ODI4Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy1ENiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMVEQKLTAwMjNENiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMVEQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtRDcgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMDAyM0Q3ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtRDggICAoaGV4KQkJQmFsbC1JdCBPeQotMDAyM0Q4ICAgICAoYmFzZSAxNikJCUJhbGwtSXQgT3kKLQkJCQlVdXNpa2F0dSAyNCBHIDc2Ci0JCQkJT3VsdSAgOTAxMDAKLQkJCQlGSU5MQU5ECi0KLTAwLTIzLUQ5ICAgKGhleCkJCUJhbm5lciBFbmdpbmVlcmluZwotMDAyM0Q5ICAgICAoYmFzZSAxNikJCUJhbm5lciBFbmdpbmVlcmluZwotCQkJCTk3MTQgMTB0aCBBdmUuIE4uCi0JCQkJUGx5bW91dGggTU4gNTU0NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLURBICAgKGhleCkJCUluZHVzdHJpYWwgQ29tcHV0ZXIgU291cmNlIChEZXV0c2NobGFuZClHbWJICi0wMDIzREEgICAgIChiYXNlIDE2KQkJSW5kdXN0cmlhbCBDb21wdXRlciBTb3VyY2UgKERldXRzY2hsYW5kKUdtYkgKLQkJCQlNYXJpZS1DdXJpZS1TdHJh32UgOQotCQkJCVB1bGhlaW0gTlJXIDUwMjU5Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy1EQiAgIChoZXgpCQlzYXhuZXQgZ21iaAotMDAyM0RCICAgICAoYmFzZSAxNikJCXNheG5ldCBnbWJoCi0JCQkJV2lsbHktQnJhbmR0LVJpbmcgMQotCQkJCU9lbHNuaXR6IFNhY2hzZW4gMDg2MDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLURDICAgKGhleCkJCUJlbmVpbiwgSW5jCi0wMDIzREMgICAgIChiYXNlIDE2KQkJQmVuZWluLCBJbmMKLQkJCQlIeW9qYWNob25qZXNhbmdnYTIyOCBCOSwgMjk3LAotCQkJCXNlb2h5dW4tZG9uZywgYnVuZGFuZy1ndQotCQkJCVNlbmduYW0tc2kgS3l1bmdnaS1kbyA0NjMtODE4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUREICAgKGhleCkJCUVMR0lOIFMuQS4KLTAwMjNERCAgICAgKGJhc2UgMTYpCQlFTEdJTiBTLkEuCi0JCQkJUlVBIEJBUkFPIERFIENBTVBJTkFTLCAzMDUKLQkJCQlDQU1QT1MgRUxJU0VPUwotCQkJCVNBTyBQQVVMTyAgMDEyMDEtOTAxCi0JCQkJQlJBWklMCi0KLTAwLTIzLURFICAgKGhleCkJCUFuc3luYyBJbmMuCi0wMDIzREUgICAgIChiYXNlIDE2KQkJQW5zeW5jIEluYy4KLQkJCQk0OTcwIFJvYmVydCBKIE1hdHRoZXdzIFBreQotCQkJCVN1aXRlIDE2MAotCQkJCUVsIERvcmFkbyBIaWxscyBDQSA5NTc2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtREYgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyM0RGICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUUwICAgKGhleCkJCUlOTyBUaGVyYXBldXRpY3MgTExDCi0wMDIzRTAgICAgIChiYXNlIDE2KQkJSU5PIFRoZXJhcGV1dGljcyBMTEMKLQkJCQkyOTAyIERhaXJ5IERyaXZlCi0JCQkJTWFkaXNvbiBXSSA1MzcxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRTEgICAoaGV4KQkJQ2F2ZW5hIEltYWdlIFByb2R1Y3RzIEFCCi0wMDIzRTEgICAgIChiYXNlIDE2KQkJQ2F2ZW5hIEltYWdlIFByb2R1Y3RzIEFCCi0JCQkJTnl0b3Jwc3ZhZ2VuIDI2Ci0JCQkJVORieSBTdG9ja2hvbG0gc2UtMTgzIDUzCi0JCQkJU1dFREVOCi0KLTAwLTIzLUUyICAgKGhleCkJCVNFQSBTaWduYWxpc2F0aW9uCi0wMDIzRTIgICAgIChiYXNlIDE2KQkJU0VBIFNpZ25hbGlzYXRpb24KLQkJCQkyMC0yMiBSdWUgUGllcnJlIE1lbmTocyBGcmFuY2UKLQkJCQlCUCAyMzEKLQkJCQlWYXVseCBlbiBWZWxpbiBDRURFWCAgNjk1MTUKLQkJCQlGUkFOQ0UKLQotMDAtMjMtRTMgICAoaGV4KQkJTWljcm90cm9uaWMgQUcKLTAwMjNFMyAgICAgKGJhc2UgMTYpCQlNaWNyb3Ryb25pYyBBRwotCQkJCUR1ZW5uZXJuc3RyYXNzZSAzMgotCQkJCU9lbnNpbmdlbiBTb2xvdGh1cm4gNDcwMgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTIzLUU0ICAgKGhleCkJCUlQbmVjdCBjby4gbHRkLgotMDAyM0U0ICAgICAoYmFzZSAxNikJCUlQbmVjdCBjby4gbHRkLgotCQkJCTgwOCBhbGJhdHJvc3MgQi9EIDIzNy0xOAotCQkJCUdhc2FuLWRvbmcsIEdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUU1ICAgKGhleCkJCUlQYVhpb20gTmV0d29ya3MKLTAwMjNFNSAgICAgKGJhc2UgMTYpCQlJUGFYaW9tIE5ldHdvcmtzCi0JCQkJQXN0b24gQ291cnQKLQkJCQlLaW5nc21lYWQgQnVzaW5lc3MgUGFyaywgRnJlZGVyaWNrIFBsYWNlCi0JCQkJSGlnaCBXeWNvbWJlIEJ1Y2tpbmdoYW1zaGlyZSBIUDExIDFMQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIzLUU2ICAgKGhleCkJCVBpcmt1cywgSW5jLgotMDAyM0U2ICAgICAoYmFzZSAxNikJCVBpcmt1cywgSW5jLgotCQkJCTJGLDEtMS0yCi0JCQkJU2hpbXVyYQotCQkJCUl0YWJhc2hpLWt1IFRva3lvIDE3NC0wMDU2Ci0JCQkJSkFQQU4KLQotMDAtMjMtRTcgICAoaGV4KQkJSGlua2UgQS9TCi0wMDIzRTcgICAgIChiYXNlIDE2KQkJSGlua2UgQS9TCi0JCQkJVGluZ2JqZXJndmVqIDIKLQkJCQlCamFldmVyc2tvdiAgREstNDYzMgotCQkJCURFTk1BUksKLQotMDAtMjMtRTggICAoaGV4KQkJRGVtY28gQ29ycC4KLTAwMjNFOCAgICAgKGJhc2UgMTYpCQlEZW1jbyBDb3JwLgotCQkJCSM5MTksIERvb3NhbiBWZW50dXJlZGlnbSwgMTI2LTEKLQkJCQlQeXVuZ2Nob24tRG9uZywgRG9uZ2FuLUt1Ci0JCQkJQW55YW5nLVNpIEt5dW5na2ktRG8gNDMxLTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy1FOSAgIChoZXgpCQlGNSBOZXR3b3JrcywgSW5jLgotMDAyM0U5ICAgICAoYmFzZSAxNikJCUY1IE5ldHdvcmtzLCBJbmMuCi0JCQkJNDAxIEVsbGlvdHQgQXZlLiBXLgotCQkJCVNlYXR0bGUgV0EgOTgxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUVBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjNFQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1FQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzRUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRUMgICAoaGV4KQkJQWxnb3JpdGhtaXggR21iSAotMDAyM0VDICAgICAoYmFzZSAxNikJCUFsZ29yaXRobWl4IEdtYkgKLQkJCQlLbGV0dGdhdXN0cmFzc2UgMjEKLQkJCQlXYWxkc2h1dC1UaWVuZ2VuIEJXIDc5NzYxCi0JCQkJR0VSTUFOWQotCi0wMC0yMy1FRCAgIChoZXgpCQlNb3Rvcm9sYSBDSFMKLTAwMjNFRCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBDSFMKLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1FRSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyM0VFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRUYgICAoaGV4KQkJWnVlbmQgU3lzdGVtdGVjaG5payBBRwotMDAyM0VGICAgICAoYmFzZSAxNikJCVp1ZW5kIFN5c3RlbXRlY2huaWsgQUcKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDgKLQkJCQlBbHRzdGFldHRlbiBTRyA5NDUwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjMtRjAgICAoaGV4KQkJU2hhbmdoYWkgSmluZ2hhbiBXZWlnaGluZyBBcHBhcmF0dXMgQ28uIEx0ZC4KLTAwMjNGMCAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBKaW5naGFuIFdlaWdoaW5nIEFwcGFyYXR1cyBDby4gTHRkLgotCQkJCUJ1aWxkaW5nIDU4LCBOby45OSBDaHVuZ3VhbmcgUm9hZCwgWGluemh1YW5nIEluZHVzdHJpYWwgWm9uZSxNaW5oYW5nLAotCQkJCVNoYW5naGFpICAyMDExMDgKLQkJCQlDSElOQQotCi0wMC0yMy1GMSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAyM0YxICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2vlbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjMtRjIgICAoaGV4KQkJVFZMb2dpYwotMDAyM0YyICAgICAoYmFzZSAxNikJCVRWTG9naWMKLQkJCQlzdWl0ZSA5MTQgQUNFIFRlY2hubyBUb3dlci05dGgKLQkJCQlHYXNhbi1kb25nCi0JCQkJR2V1bWNoZW9uLWd1IFNFT1VMIDE1My03ODIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtRjMgICAoaGV4KQkJR2xvY29tLCBJbmMuCi0wMDIzRjMgICAgIChiYXNlIDE2KQkJR2xvY29tLCBJbmMuCi0JCQkJMjIgRmlyc3RmaWVsZCBSb2FkCi0JCQkJU3VpdGUgMTI1Ci0JCQkJR2FpdGhlcnNidXJnIE1hcnlsYW5kIDIwODc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1GNCAgIChoZXgpCQlNYXN0ZXJuYXV0Ci0wMDIzRjQgICAgIChiYXNlIDE2KQkJTWFzdGVybmF1dAotCQkJCTQsIHJ1ZSBDaGFybGVzIENyb3MKLQkJCQlMb3V2aWVycyAgMjc0MDcKLQkJCQlGUkFOQ0UKLQotMDAtMjMtRjUgICAoaGV4KQkJV0lMTyBTRQotMDAyM0Y1ICAgICAoYmFzZSAxNikJCVdJTE8gU0UKLQkJCQlOb3J0a2lyY2hlbnN0ci4gMTAwCi0JCQkJRCAtIDQ0MjYzIERvcnRtdW5kIE5SVyA0NDI2MwotCQkJCUdFUk1BTlkKLQotMDAtMjMtRjYgICAoaGV4KQkJU29mdHdlbGwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjNGNiAgICAgKGJhc2UgMTYpCQlTb2Z0d2VsbCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTRGLCBOby4gNDE5LCBKaG9uZ2hlIFJkLiwgWW9uZ2hlIENpdHksCi0JCQkJVGFpcGVpIENvdW50eSAgMjM0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy1GNyAgIChoZXgpCQlQUklWQVRFCi0wMDIzRjcgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTIzLUY4ICAgKGhleCkJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0wMDIzRjggICAgIChiYXNlIDE2KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQlOTy42IElubm92YXRpb24gUm9hZCBJSSwKLQkJCQlTY2llbmNlIFBhcmssCi0JCQkJSHNpbi1DaHUsIFRhaXdhbiAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLUY5ICAgKGhleCkJCURvdWJsZS1UYWtlIFNvZnR3YXJlLCBJTkMuCi0wMDIzRjkgICAgIChiYXNlIDE2KQkJRG91YmxlLVRha2UgU29mdHdhcmUsIElOQy4KLQkJCQk4NDcwIEFsbGlzb24gUG9pbnRlIEJsdmQKLQkJCQlTdWl0ZSAzMDAKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUZBICAgKGhleCkJCVJHIE5ldHMsIEluYy4KLTAwMjNGQSAgICAgKGJhc2UgMTYpCQlSRyBOZXRzLCBJbmMuCi0JCQkJMTAwMCBFLiBXaWxsaWFtIFN0cmVldAotCQkJCVN1aXRlIDIwNAotCQkJCUNhcnNvbiBDaXR5IE5WIDg5NzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1GQiAgIChoZXgpCQlJUCBEYXRhdGVsLCBJbmMuCi0wMDIzRkIgICAgIChiYXNlIDE2KQkJSVAgRGF0YXRlbCwgSW5jLgotCQkJCTEzMTEwIFNvdXRod2VzdCBGcmVld2F5Ci0JCQkJU3VnYXIgTGFuZCBUZXhhcyA3NzQ3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRkMgICAoaGV4KQkJVWx0cmEgU3RlcmVvIExhYnMsIEluYwotMDAyM0ZDICAgICAoYmFzZSAxNikJCVVsdHJhIFN0ZXJlbyBMYWJzLCBJbmMKLQkJCQkxODEgQm9uZXR0aSBEcml2ZQotCQkJCVNhbiBMdWlzIE9iaXNwbyBDQSA5MzQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRkQgICAoaGV4KQkJQUZUIEF0bGFzIEZhaHJ6ZXVndGVjaG5payBHbWJICi0wMDIzRkQgICAgIChiYXNlIDE2KQkJQUZUIEF0bGFzIEZhaHJ6ZXVndGVjaG5payBHbWJICi0JCQkJR2V3ZXJiZXN0ci4gMTQKLQkJCQlXZXJkb2hsICA1ODc5MQotCQkJCUdFUk1BTlkKLQotMDAtMjMtRkUgICAoaGV4KQkJQmlvZGV2aWNlcywgU0EKLTAwMjNGRSAgICAgKGJhc2UgMTYpCQlCaW9kZXZpY2VzLCBTQQotCQkJCVJ1YSA1IGRlIE91dHVicm8gMzA5Ci0JCQkJUG9ydG8gIDQxMDAtMTc1Ci0JCQkJUE9SVFVHQUwKLQotMDAtMjMtRkYgICAoaGV4KQkJQmVpamluZyBIVFRDIFRlY2hub2xvZ3kgTHRkLgotMDAyM0ZGICAgICAoYmFzZSAxNikJCUJlaWppbmcgSFRUQyBUZWNobm9sb2d5IEx0ZC4KLQkJCQlCLTEzRC0zIEtlc2hpIEJ1aWxkaW5nLEppYSBOby4yOCBYaW54aSBSb2FkLFNIQU5HREkgSVQgSW5kdXN0cnkgQmFzZQotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTI0LTAwICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyNDAwICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVFggNzUwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTAxICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMDAyNDAxICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5vLjI4OSwgWGluaHUgM3JkLgotCQkJCU5laWh1IERpc3RyaWN0IFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMDIgICAoaGV4KQkJT3AtVGVjdGlvbiBHbWJICi0wMDI0MDIgICAgIChiYXNlIDE2KQkJT3AtVGVjdGlvbiBHbWJICi0JCQkJQm9yc2lnc3RyYd9lIDgwCi0JCQkJSGVpbnNiZXJnIEdlcm1hbnkgNTI1MjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LTAzICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI0MDMgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTI0LTA0ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI0MDQgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTI0LTA1ICAgKGhleCkJCURpbG9nIE5vcmRpYyBBQgotMDAyNDA1ICAgICAoYmFzZSAxNikJCURpbG9nIE5vcmRpYyBBQgotCQkJCUZha3RvcnbkZ2VuIDkKLQkJCQlLdW5nc2JhY2thIEhhbGxhbmQgNDM5IDM0Ci0JCQkJU1dFREVOCi0KLTAwLTI0LTA2ICAgKGhleCkJCVBvaW50bW9iaWxlCi0wMDI0MDYgICAgIChiYXNlIDE2KQkJUG9pbnRtb2JpbGUKLQkJCQkzMDEsV29ybGQgTWVyaWRpYW4gVmVydHVyZSBDZW50ZXItMSA2MC0yNAotCQkJCUdhc2FuLWRvbmcKLQkJCQlTZW91bCBHZXVtY2hlb24tZ3UgMTUzNzgxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTA3ICAgKGhleCkJCVRFTEVNIFNBUwotMDAyNDA3ICAgICAoYmFzZSAxNikJCVRFTEVNIFNBUwotCQkJCTE2LCBSVUUgREUgTCdFVEFORwotCQkJCUdJRVJFUyBSSE9ORSBBTFBFUyAzODYxMAotCQkJCUZSQU5DRQotCi0wMC0yNC0wOCAgIChoZXgpCQlQYWNpZmljIEJpb3NjaWVuY2VzCi0wMDI0MDggICAgIChiYXNlIDE2KQkJUGFjaWZpYyBCaW9zY2llbmNlcwotCQkJCTE1MDUgQWRhbXMgRHJpdmUKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0wOSAgIChoZXgpCQlUaGUgVG9ybyBDb21wYW55Ci0wMDI0MDkgICAgIChiYXNlIDE2KQkJVGhlIFRvcm8gQ29tcGFueQotCQkJCTU4MjUgSmFzbWluZSBTdHJlZXQKLQkJCQlSaXZlcnNpZGUgQ0EgOTI1MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTBBICAgKGhleCkJCVVTIEJldmVyYWdlIE5ldAotMDAyNDBBICAgICAoYmFzZSAxNikJCVVTIEJldmVyYWdlIE5ldAotCQkJCTEwMDEgVy4gRmF5ZXR0ZSBTdHJlZXQKLQkJCQkzQQotCQkJCVN5cmFjdXNlIE5ZIDEzMjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0wQiAgIChoZXgpCQlWaXJ0dWFsIENvbXB1dGVyIEluYy4KLTAwMjQwQiAgICAgKGJhc2UgMTYpCQlWaXJ0dWFsIENvbXB1dGVyIEluYy4KLQkJCQkzIExBTiBEcml2ZQotCQkJCVdlc3Rmb3JkIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0wQyAgIChoZXgpCQlERUxFQyBHbWJICi0wMDI0MEMgICAgIChiYXNlIDE2KQkJREVMRUMgR21iSAotCQkJCVJ1aGV3ZWcgMTctMjEKLQkJCQlH9mxsaGVpbSBSaGVpbmxhbmQtUGZhbHogNjczMDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LTBEICAgKGhleCkJCU9uZVBhdGggTmV0d29ya3MgTFRELgotMDAyNDBEICAgICAoYmFzZSAxNikJCU9uZVBhdGggTmV0d29ya3MgTFRELgotCQkJCTggSGFydG9tIFN0Ci0JCQkJSmVydXNhbGVtICA5MTQ1MAotCQkJCUlTUkFFTAotCi0wMC0yNC0wRSAgIChoZXgpCQlJbnZlbnRlYyBCZXN0YSBDby4sIEx0ZC4KLTAwMjQwRSAgICAgKGJhc2UgMTYpCQlJbnZlbnRlYyBCZXN0YSBDby4sIEx0ZC4KLQkJCQkxMEZMLCBOby4zNiwgTGFuZSA1MTMsIFJ1aSBHdWFuZyBSb2FkLCBOZWkgSHUgRGlzdC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMEYgICAoaGV4KQkJSXNoaWkgVG9vbCAmIEVuZ2luZWVyaW5nIENvcnBvcmF0aW9uCi0wMDI0MEYgICAgIChiYXNlIDE2KQkJSXNoaWkgVG9vbCAmIEVuZ2luZWVyaW5nIENvcnBvcmF0aW9uCi0JCQkJMi01LTYwIEhpZ2FzaGktT21pY2hpCi0JCQkJT2l0YSAgODcwLTA4MjMKLQkJCQlKQVBBTgotCi0wMC0yNC0xMCAgIChoZXgpCQlOVUVURVEgVGVjaG5vbG9neSxJbmMuCi0wMDI0MTAgICAgIChiYXNlIDE2KQkJTlVFVEVRIFRlY2hub2xvZ3ksSW5jLgotCQkJCTExRiwgTm8uIDExMiwgU2VjLiAxLCBaaG9uZy1YaWFvIEUgUmQuCi0JCQkJVGFpcGVpICAxMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTExICAgKGhleCkJCVBoYXJtYVNtYXJ0IExMQwotMDAyNDExICAgICAoYmFzZSAxNikJCVBoYXJtYVNtYXJ0IExMQwotCQkJCTM0OTUgV2ludG9uIFBsYWNlCi0JCQkJQmxkZyBBLCBTdWl0ZSAxCi0JCQkJUm9jaGVzdGVyIE5ZIDE0NjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0xMiAgIChoZXgpCQlCZW5pZ24gVGVjaG5vbG9naWVzIENvLCBMdGQuCi0wMDI0MTIgICAgIChiYXNlIDE2KQkJQmVuaWduIFRlY2hub2xvZ2llcyBDbywgTHRkLgotCQkJCTUwNCByb29tLCA1RiwgU291dGggYnVpbGRpbmcsIEZvcnNhZmUgVG93ZXIsCi0JCQkJU291dGggT25lIFN0cmVldCwgSGktVGVjaCBab25lLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNC0xMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI0MTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMTQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNDE0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTE1ICAgKGhleCkJCU1hZ25ldGljIEF1dG9jb250cm9sIEdtYkgKLTAwMjQxNSAgICAgKGJhc2UgMTYpCQlNYWduZXRpYyBBdXRvY29udHJvbCBHbWJICi0JCQkJR3JpZW5tYXR0IDIwCi0JCQkJU2Nob3BmaGVpbSAgRC03OTY1MAotCQkJCUdFUk1BTlkKLQotMDAtMjQtMTYgICAoaGV4KQkJQW55IFVzZQotMDAyNDE2ICAgICAoYmFzZSAxNikJCUFueSBVc2UKLQkJCQlMRyBBUFQgMjExLTE4MDUsCi0JCQkJU2hpbmJvbmctRG9uZywgU3VqaS1HdSwKLQkJCQlZb25naW4gQ2l0eSBHeWVvbmctR2kgUHJvdmluY2UgNDQ4LTE1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNC0xNyAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDAyNDE3ICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NwotCQkJCUVkZWdlbSAtIEFudHdlcnAgIEItMjY1MAotCQkJCUJFTEdJVU0KLQotMDAtMjQtMTggICAoaGV4KQkJTmV4dHdhdmUgU2VtaWNvbmR1Y3RvcgotMDAyNDE4ICAgICAoYmFzZSAxNikJCU5leHR3YXZlIFNlbWljb25kdWN0b3IKLQkJCQkzNjExIFZhbGxleSBDZW50cmUgRHIKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTE5ICAgKGhleCkJCVBSSVZBVEUKLTAwMjQxOSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMjQtMUEgICAoaGV4KQkJUmVkIEJlZXRsZSBJbmMuCi0wMDI0MUEgICAgIChiYXNlIDE2KQkJUmVkIEJlZXRsZSBJbmMuCi0JCQkJODk4IFNpbGFzIERlYW5lIEhpZ2h3YXkKLQkJCQlXZXRoZXJzZmllbGQgQ1QgMDYxMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTFCICAgKGhleCkJCWlXT1cgQ29tbXVuaWNhdGlvbnMgUHRlIEx0ZAotMDAyNDFCICAgICAoYmFzZSAxNikJCWlXT1cgQ29tbXVuaWNhdGlvbnMgUHRlIEx0ZAotCQkJCTEgTG9yb25nIDIgVG9hIFBheW9oICMwNC0wMQotCQkJCVllbGxvdyBQYWdlcyBCdWlsZGluZwotCQkJCTMxOTYzNwotCQkJCVNJTkdBUE9SRQotCi0wMC0yNC0xQyAgIChoZXgpCQlGdUdhbmcgRWxlY3Ryb25pYyAoREcpIENvLixMdGQKLTAwMjQxQyAgICAgKGJhc2UgMTYpCQlGdUdhbmcgRWxlY3Ryb25pYyAoREcpIENvLixMdGQKLQkJCQlJbmR1c3RyeSBTdHJlZXQsIERvbmctS2VuZwotCQkJCUd1YW5nIERvbmcgUHJvdmluY2UKLQkJCQlEb25nIEd1YW4gQ2l0eSAgNTIzNDQ4Ci0JCQkJQ0hJTkEKLQotMDAtMjQtMUQgICAoaGV4KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLTAwMjQxRCAgICAgKGJhc2UgMTYpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCU5vLjIxNSxOYW4tUGluZyBSb2FkLAotCQkJCVBpbi1KZW4gVGFveXVhbiAzMjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTFFICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyNDFFICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTI0LTFGICAgKGhleCkJCURDVC1EZWx0YSBHbWJICi0wMDI0MUYgICAgIChiYXNlIDE2KQkJRENULURlbHRhIEdtYkgKLQkJCQlCb2RhbnJ1ZWNrc3RyYXNzZSAxCi0JCQkJQm9kbWFuIC0gTHVkd2lnc2hhZmVuIEJhZGVuIC0gV/xydHRlbWJlcmcgNzgzNTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LTIwICAgKGhleCkJCU5ldFVQIEluYy4KLTAwMjQyMCAgICAgKGJhc2UgMTYpCQlOZXRVUCBJbmMuCi0JCQkJT2xvZiBQYWxtZSBzdC4sIDEsIHNlY3QuIDcKLQkJCQlNb3Njb3cgIDExOTMxMQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yNC0yMSAgIChoZXgpCQlNSUNSTy1TVEFSIElOVCdMIENPLiwgTFRELgotMDAyNDIxICAgICAoYmFzZSAxNikJCU1JQ1JPLVNUQVIgSU5UJ0wgQ08uLCBMVEQuCi0JCQkJTm8uNjksIExpLURlIFN0Ci0JCQkJSnVuZy1IbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTIyICAgKGhleCkJCUtuYXBwIExvZ2lzdGlrIEF1dG9tYXRpb24gR21iSAotMDAyNDIyICAgICAoYmFzZSAxNikJCUtuYXBwIExvZ2lzdGlrIEF1dG9tYXRpb24gR21iSAotCQkJCUf8bnRlci1LbmFwcC1TdHJhc3NlIDUtNwotCQkJCUhhcnQgYmVpIEdyYXogU3R5cmlhIDgwNzUKLQkJCQlBVVNUUklBCi0KLTAwLTI0LTIzICAgKGhleCkJCUF6dXJlV2F2ZSBUZWNobm9sb2dpZXMgKFNoYW5naGFpKSBJbmMuCi0wMDI0MjMgICAgIChiYXNlIDE2KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcyAoU2hhbmdoYWkpIEluYy4KLQkJCQlOTy4gOCwgTEFORSA2NiwgQ0hFTkdCQU8gUkQuCi0JCQkJTUFMVSBDT1VOVFksIEpJQURJTkcgRElTVFJJQ1QsCi0JCQkJU0hBTkdIQUkgIDIwMTgwMQotCQkJCUNISU5BCi0KLTAwLTI0LTI0ICAgKGhleCkJCUF4aXMgTmV0d29yayBUZWNobm9sb2d5Ci0wMDI0MjQgICAgIChiYXNlIDE2KQkJQXhpcyBOZXR3b3JrIFRlY2hub2xvZ3kKLQkJCQlVbml0IDEwLCBNaWRzaGlyZXMgQnVzIFBhcmsKLQkJCQlTbWVhdG9uIENsb3NlCi0JCQkJQXlsZXNidXJ5IEJ1Y2tzIEhQMTkgOEhMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjQtMjUgICAoaGV4KQkJU2hlbnpoZW5zaGkgY2h1YW5nemhpY2hlbmcgVGVjaG5vbG9neSBDby4sTHRkCi0wMDI0MjUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW5zaGkgY2h1YW5nemhpY2hlbmcgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJNXRoIEZsb29yLEJsb2NrMiwyNXRoIEJ1aWxkaW5nLEluZHVzdHJpYWwgWm9uZSBXZXN0IEtleXVhbiBTY2ktdGVjaCBHYXJkZW4gTmFuc2hhbiBEaXN0cmljaCxTaGVuemhlbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNC0yNiAgIChoZXgpCQlOT0hNSSBCT1NBSSBMVEQuCi0wMDI0MjYgICAgIChiYXNlIDE2KQkJTk9ITUkgQk9TQUkgTFRELgotCQkJCTctMyxLdWRhbi1NaW5hbWkgNC1DaG9tZSwKLQkJCQlDaGl5b2RhLWt1Ci0JCQkJVG9reW8gIDEwMi04Mjc3Ci0JCQkJSkFQQU4KLQotMDAtMjQtMjcgICAoaGV4KQkJU1NJIENPTVBVVEVSIENPUlAKLTAwMjQyNyAgICAgKGJhc2UgMTYpCQlTU0kgQ09NUFVURVIgQ09SUAotCQkJCTRGLCBOTzQsIExBTkUgMjM1LCBCQU8gQ0hJQU8gUk9BRAotCQkJCUhTSU4gVElFTiBUQUlQRUkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC0yOCAgIChoZXgpCQlFbmVyZ3lJQ1QKLTAwMjQyOCAgICAgKGJhc2UgMTYpCQlFbmVyZ3lJQ1QKLQkJCQlUaGVvZG9vciBTZXZlbnNsYWFuIDEwNGEKLQkJCQlLb3J0cmlqayAgODUwMAotCQkJCUJFTEdJVU0KLQotMDAtMjQtMjkgICAoaGV4KQkJTUsgTUFTVEVSIElOQy4KLTAwMjQyOSAgICAgKGJhc2UgMTYpCQlNSyBNQVNURVIgSU5DLgotCQkJCTZGLCAtMSwgTk8uIDExMCxTRUMuIDMsIEpIT05HU0hBTiBSRC4sCi0JCQkJSkhPTkctSEUgQ0lUWSwgVEFJUEVJIENPVU5UWSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTJBICAgKGhleCkJCUhpdHRpdGUgTWljcm93YXZlIENvcnBvcmF0aW9uCi0wMDI0MkEgICAgIChiYXNlIDE2KQkJSGl0dGl0ZSBNaWNyb3dhdmUgQ29ycG9yYXRpb24KLQkJCQkyMCBBbHBoYSBSZAotCQkJCUNoZWxtc2ZvcmQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTJCICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby4sTHRkLgotMDAyNDJCICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby4sTHRkLgotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gVGFpd2FuIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMkMgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMjQyQyAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMkUgICAoaGV4KQkJRGF0YXN0cmlwIEluYy4KLTAwMjQyRSAgICAgKGJhc2UgMTYpCQlEYXRhc3RyaXAgSW5jLgotCQkJCTEgV2F0ZXJ2aWV3IERyaXZlCi0JCQkJU3VpdGUgMTAzCi0JCQkJU2hlbHRvbiBDVCAwNjQ4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMkYgICAoaGV4KQkJVmlydGVuU3lzIEluYwotMDAyNDJGICAgICAoYmFzZSAxNikJCVZpcnRlblN5cyBJbmMKLQkJCQk4NzA1IE5pbWJ1cyBBdmUgU3RlIDEwMAotCQkJCUJlYXZlcnRvbiBPUiA5NzAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMzAgICAoaGV4KQkJUnVieSBUZWNoIENvcnAuCi0wMDI0MzAgICAgIChiYXNlIDE2KQkJUnVieSBUZWNoIENvcnAuCi0JCQkJM0YsIE5PLiAxLCBMYW5lIDUwLCBOYW4gS2FuZyBSb2FkLCBTZWMuIDMsCi0JCQkJVGFpcGVpICAxMTUxMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMzEgICAoaGV4KQkJVW5pLXYgY28uLGx0ZAotMDAyNDMxICAgICAoYmFzZSAxNikJCVVuaS12IGNvLixsdGQKLQkJCQk1L0YsQ09GQ08gUHJvcGVydHkgVG93ZXIsCi0JCQkJdGhlIDNyZCBBcmVhLCBCYW8nYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI2Ci0JCQkJQ0hJTkEKLQotMDAtMjQtMzIgICAoaGV4KQkJTmVvc3RhciBUZWNobm9sb2d5IENvLixMVEQKLTAwMjQzMiAgICAgKGJhc2UgMTYpCQlOZW9zdGFyIFRlY2hub2xvZ3kgQ28uLExURAotCQkJCThGLiwgTm8uMTAyLCBTZWMuIDEsIFNpbnRhaSA1dGggUmQuCi0JCQkJU2lqaGloIENpdHkgVGFpcGVpIDIyMTYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC0zMyAgIChoZXgpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0wMDI0MzMgICAgIChiYXNlIDE2KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGkKLQkJCQlTb21hIGNpdHkgRnVrdXNoaW1hLWtlbiA5NzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTI0LTM0ICAgKGhleCkJCUxlY3Ryb3NvbmljcywgSW5jLgotMDAyNDM0ICAgICAoYmFzZSAxNikJCUxlY3Ryb3NvbmljcywgSW5jLgotCQkJCTU4MSBMYXNlciBSZC4KLQkJCQlSaW8gUmFuY2hvIE5NIDg3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0zNSAgIChoZXgpCQlXSURFIENPUlBPUkFUSU9OCi0wMDI0MzUgICAgIChiYXNlIDE2KQkJV0lERSBDT1JQT1JBVElPTgotCQkJCUxFQURFUlMgVE9XRVIgN1RIIEZMLiwgR09NQUUtRE9ORywgR0lIRVVORy1HVQotCQkJCVlPTkdJTiBHWUVPTkdHSSA0NDYtOTAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTM2ICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjQzNiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0zNyAgIChoZXgpCQlNb3Rvcm9sYSAtIEJTRwotMDAyNDM3ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIC0gQlNHCi0JCQkJMTEwMSBNYXJpbmEgVmlsbGFnZSBQa3d5Ci0JCQkJU3RlIDIwMAotCQkJCUFsYW1lZGEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTM4ICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0wMDI0MzggICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLQkJCQkxNzQ1IFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMzkgICAoaGV4KQkJRXNzZW50aWFsIFZpZXdpbmcgU3lzdGVtcyBMaW1pdGVkCi0wMDI0MzkgICAgIChiYXNlIDE2KQkJRXNzZW50aWFsIFZpZXdpbmcgU3lzdGVtcyBMaW1pdGVkCi0JCQkJSGlsbGluZ3RvbiBQYXJrIElubm92YXRpb24gQ2VudHJlCi0JCQkJMSBBaW5zbGllIFJvYWQKLQkJCQlHbGFzZ293IFJlbmZyZXdzaGlyZSBHNTIgNFJVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjQtM0EgICAoaGV4KQkJTHVkbCBFbGVjdHJvbmljIFByb2R1Y3RzCi0wMDI0M0EgICAgIChiYXNlIDE2KQkJTHVkbCBFbGVjdHJvbmljIFByb2R1Y3RzCi0JCQkJMTcxIEJyYWR5IEF2ZQotCQkJCUhhd3Rob3JuZSBOWSAxMDUzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtM0IgICAoaGV4KQkJQ1NTSSAoUykgUHRlIEx0ZAotMDAyNDNCICAgICAoYmFzZSAxNikJCUNTU0kgKFMpIFB0ZSBMdGQKLQkJCQk3MCBCZW5kZW1lZXIgUm9hZCBVbml0IDA0LTA0Ci0JCQkJMzM5OTQwCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTI0LTNDICAgKGhleCkJCVMuQS5BLkEuCi0wMDI0M0MgICAgIChiYXNlIDE2KQkJUy5BLkEuQS4KLQkJCQlaLkEuIENyb2l4IFNhaW50IE1hdGhpZXUKLQkJCQlHQUxMQVJET04gRXVyZSBldCBMb2lyIDI4MzIwCi0JCQkJRlJBTkNFCi0KLTAwLTI0LTNEICAgKGhleCkJCUVtZXJzb24gQXBwbGlhbmNlIE1vdG9ycyBhbmQgQ29udHJvbHMKLTAwMjQzRCAgICAgKGJhc2UgMTYpCQlFbWVyc29uIEFwcGxpYW5jZSBNb3RvcnMgYW5kIENvbnRyb2xzCi0JCQkJMTkwMSBTb3V0aCBTdC4KLQkJCQlFbGdpbiBJTCA2MDEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtM0YgICAoaGV4KQkJU3RvcndpemUsIEluYy4KLTAwMjQzRiAgICAgKGJhc2UgMTYpCQlTdG9yd2l6ZSwgSW5jLgotCQkJCTExIEFsYXRsZWYgU3QuCi0JCQkJWWVodWQgIDU2MjE2Ci0JCQkJSVNSQUVMCi0KLTAwLTI0LTQwICAgKGhleCkJCUhhbG8gTW9uaXRvcmluZywgSW5jLgotMDAyNDQwICAgICAoYmFzZSAxNikJCUhhbG8gTW9uaXRvcmluZywgSW5jLgotCQkJCTUxNSBTcGFya21hbiBEci4KLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC00MSAgIChoZXgpCQlXYW56bCBNZXRhbGx3YXJlbmZhYnJpayBHbWJICi0wMDI0NDEgICAgIChiYXNlIDE2KQkJV2FuemwgTWV0YWxsd2FyZW5mYWJyaWsgR21iSAotCQkJCUJ1YmVzaGVpbWVyIFN0cmFzc2UgNAotCQkJCUxlaXBoZWltIEJhdmFyaWEgODkzNDAKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LTQyICAgKGhleCkJCUF4b25hIExpbWl0ZWQKLTAwMjQ0MiAgICAgKGJhc2UgMTYpCQlBeG9uYSBMaW1pdGVkCi0JCQkJMTQ4IEdyZWVuIExhbmUKLQkJCQlTdC4gQWxiYW5zIEhlcnRzIEFMMyA2RVUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNC00MyAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMjQ0MyAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC00NCAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjQ0NCAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyBLWU9UTyA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTI0LTQ1ICAgKGhleCkJCUxpcXVpZHhTdHJlYW0gU3lzdGVtcyBJbmMuCi0wMDI0NDUgICAgIChiYXNlIDE2KQkJTGlxdWlkeFN0cmVhbSBTeXN0ZW1zIEluYy4KLQkJCQk4NDgwIEJvdWwuIER1IEdvbGYKLQkJCQlNb250cmVhbCBRdWViZWMgSDFKIDNBMQotCQkJCUNBTkFEQQotCi0wMC0yNC00NiAgIChoZXgpCQlNTUIgUmVzZWFyY2ggSW5jLgotMDAyNDQ2ICAgICAoYmFzZSAxNikJCU1NQiBSZXNlYXJjaCBJbmMuCi0JCQkJMzUgUHJpbmNlIEFydGh1ciBBdmUuCi0JCQkJVG9yb250byBPbnRhcmlvIE01UiAxQjIKLQkJCQlDQU5BREEKLQotMDAtMjQtNDcgICAoaGV4KQkJS2F6dGVrIFN5c3RlbXMKLTAwMjQ0NyAgICAgKGJhc2UgMTYpCQlLYXp0ZWsgU3lzdGVtcwotCQkJCTE3IEJyb21maWVsZCBSb2FkCi0JCQkJQWN0b24gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTQ4ICAgKGhleCkJCVNwaWRlckNsb3VkIFdpcmVsZXNzLCBJbmMKLTAwMjQ0OCAgICAgKGJhc2UgMTYpCQlTcGlkZXJDbG91ZCBXaXJlbGVzcywgSW5jCi0JCQkJMzkwMCBGcmVlZG9tIENpcmNsZSwgU3VpdGUgMTA0Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTQ5ICAgKGhleCkJCVNoZW4gWmhlbiBMaXRlIFN0YXIgRWxlY3Ryb25pY3MgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAyNDQ5ICAgICAoYmFzZSAxNikJCVNoZW4gWmhlbiBMaXRlIFN0YXIgRWxlY3Ryb25pY3MgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCVhpbmdob25nIFNjaWVuY2UgUGFyaywxc3QgSW5kLkFyZWEsCi0JCQkJRmVuZ2h1YW5nZ3VhbmcsIFhpeGlhbmcsQmFvYW4gQXJlYQotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMDIKLQkJCQlDSElOQQotCi0wMC0yNC00QSAgIChoZXgpCQlWb3lhbnQgSW50ZXJuYXRpb25hbAotMDAyNDRBICAgICAoYmFzZSAxNikJCVZveWFudCBJbnRlcm5hdGlvbmFsCi0JCQkJNDQ0IENhc3RybyBTdAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTRCICAgKGhleCkJCVBFUkNFUFRST04gSU5DCi0wMDI0NEIgICAgIChiYXNlIDE2KQkJUEVSQ0VQVFJPTiBJTkMKLQkJCQk0NzgyNyBIQUxZQVJEIERSCi0JCQkJUE8gI0NDNjczNDgKLQkJCQlQTFlNT1VUSCBNSSA0ODE3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNEMgICAoaGV4KQkJU29sYXJ0cm9uIE1ldHJvbG9neSBMdGQKLTAwMjQ0QyAgICAgKGJhc2UgMTYpCQlTb2xhcnRyb24gTWV0cm9sb2d5IEx0ZAotCQkJCVN0ZXluaW5nIFdheQotCQkJCUJvZ25vciBSZWdpcyBXZXN0IFN1c3NleCBQTzIwIDlTVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI0LTREICAgKGhleCkJCUhva2thaWRvIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCi0wMDI0NEQgICAgIChiYXNlIDE2KQkJSG9ra2FpZG8gRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLQkJCQkxLTEgRWFzdCAxMCBOb3J0aCAxMAotCQkJCUhpZ2FzaGkta3UKLQkJCQlTYXBwb3JvIEhva2thaWRvIDA2NS0wMDEwCi0JCQkJSkFQQU4KLQotMDAtMjQtNEUgICAoaGV4KQkJUmFkQ2hpcHMsIEluYy4KLTAwMjQ0RSAgICAgKGJhc2UgMTYpCQlSYWRDaGlwcywgSW5jLgotCQkJCTQyMiBFYXN0IFZlcm1pam8gQXZlLgotCQkJCVN1aXRlIDQwMQotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ08gODA5MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTRGICAgKGhleCkJCUFzYW50cm9uIFRlY2hub2xvZ2llcyBMdGQuCi0wMDI0NEYgICAgIChiYXNlIDE2KQkJQXNhbnRyb24gVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQkzRi0xLCBOby4zMCBKaWhlIFJkLiwgMTExCi0JCQkJU2hpaGxpbiBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTExNjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTUwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjQ1MCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC01MSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI0NTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNTIgICAoaGV4KQkJU2lsaWNvbiBTb2Z0d2FyZSBHbWJICi0wMDI0NTIgICAgIChiYXNlIDE2KQkJU2lsaWNvbiBTb2Z0d2FyZSBHbWJICi0JCQkJU3RldWJlbnN0ci4gNDYKLQkJCQlNYW5uaGVpbSBCYWRlbi1X/HJ0dGVtYmVyZyA2ODE2MwotCQkJCUdFUk1BTlkKLQotMDAtMjQtNTMgICAoaGV4KQkJSW5pdHJhIGQuby5vLgotMDAyNDUzICAgICAoYmFzZSAxNikJCUluaXRyYSBkLm8uby4KLQkJCQlTbG9tc2tvdmEgMzMKLQkJCQlManVibGphbmEgIDEwMDAKLQkJCQlTTE9WRU5JQQotCi0wMC0yNC01NCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0wMDI0NTQgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIExURAotCQkJCTQxNiwgTWFldGFuIDNEb25nLCBZZW9uZ3RvbmctR3UsCi0JCQkJU3V3b24gR3llb25nZ2ktRG8gNDQzNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTU1ICAgKGhleCkJCU11TG9naWMgQlYKLTAwMjQ1NSAgICAgKGJhc2UgMTYpCQlNdUxvZ2ljIEJWCi0JCQkJT2xpdmllciB2YW4gTm9vcnRzdHJhYXQgNAotCQkJCVNjaGllZGFtIFpIIDMxMjRMQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI0LTU2ICAgKGhleCkJCTJXaXJlCi0wMDI0NTYgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC01OCAgIChoZXgpCQlQQSBCYXN0aW9uIENDCi0wMDI0NTggICAgIChiYXNlIDE2KQkJUEEgQmFzdGlvbiBDQwotCQkJCTk3LCBsaXRlciBLLCBCdWRkeW9ubm92c2t5IGF2ZS4KLQkJCQlSb3N0b3Ytb24tRG9uICAzNDQwMTEKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjQtNTkgICAoaGV4KQkJQUJCIFNUT1RaLUtPTlRBS1QgR21iSAotMDAyNDU5ICAgICAoYmFzZSAxNikJCUFCQiBTVE9UWi1LT05UQUtUIEdtYkgKLQkJCQlFcHBlbGhlaW1lciBTdHJh32UgODIKLQkJCQlTVE8vS0UxCi0JCQkJSGVpZGVsYmVyZyAgNjkxMjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LTVBICAgKGhleCkJCU5hbmppbmcgUGFuZGEgRWxlY3Ryb25pY3MgQ29tcGFueSBMaW1pdGVkCi0wMDI0NUEgICAgIChiYXNlIDE2KQkJTmFuamluZyBQYW5kYSBFbGVjdHJvbmljcyBDb21wYW55IExpbWl0ZWQKLQkJCQlaaG9uZ3NoYW4gRWFzdFJvYWQgMzAxLAotCQkJCU5BTkpJTkcgSklBTkdTVSAyMTAwMTYKLQkJCQlDSElOQQotCi0wMC0yNC01QiAgIChoZXgpCQlSQUlET04gVEVDSE5PTE9HWSwgSU5DLgotMDAyNDVCICAgICAoYmFzZSAxNikJCVJBSURPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJNEYtOCwgTk8uMTYsIExhbmUgNjA5LCBTZWMuNSwgQ2h1bmctSHNpbiBSZC4sCi0JCQkJU2FuLUNodW5nIENpdHkgVGFpcGVpIGNvdW50eSwgMjQxNTkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTVDICAgKGhleCkJCURlc2lnbi1Db20gVGVjaG5vbG9naWVzIFB0eS4gTHRkLgotMDAyNDVDICAgICAoYmFzZSAxNikJCURlc2lnbi1Db20gVGVjaG5vbG9naWVzIFB0eS4gTHRkLgotCQkJCTE0IFJlZGxhbmQgRHJpdmUKLQkJCQlNaXRjaGFtIFZpY3RvcmlhIDMxMzIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjQtNUQgICAoaGV4KQkJVGVyYmVyZyBiZXN0dXJpbmdzdGVjaG5pZWsgQi5WLgotMDAyNDVEICAgICAoYmFzZSAxNikJCVRlcmJlcmcgYmVzdHVyaW5nc3RlY2huaWVrIEIuVi4KLQkJCQlMYWdlIERpamstTm9vcmQgMwotCQkJCUlKc3NlbHN0ZWluIFV0cmVjaHQgMzQwMSBWQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI0LTVFICAgKGhleCkJCUhpdmlzaW9uIENvLixsdGQKLTAwMjQ1RSAgICAgKGJhc2UgMTYpCQlIaXZpc2lvbiBDby4sbHRkCi0JCQkJMjIwMS0yMjAyLCBDT0ZDTyBQcm9wZXJ0eSBUb3dlciwKLQkJCQkzcmQgQmFvJ2FuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwMQotCQkJCUNISU5BCi0KLTAwLTI0LTVGICAgKGhleCkJCVZpbmUgVGVsZWNvbSBDTy4sTHRkLgotMDAyNDVGICAgICAoYmFzZSAxNikJCVZpbmUgVGVsZWNvbSBDTy4sTHRkLgotCQkJCTE5MS00LCA0RiwgQW55YW5nLWRvbmcsIE1hbmFuLWd1Ci0JCQkJQW55YW5nLXNpIEd5ZW9uZ2dpLWRvIDQzMC0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjAgICAoaGV4KQkJR2lhdmFsIFNjaWVuY2UgRGV2ZWxvcG1lbnQgQ28uIEx0ZC4KLTAwMjQ2MCAgICAgKGJhc2UgMTYpCQlHaWF2YWwgU2NpZW5jZSBEZXZlbG9wbWVudCBDby4gTHRkLgotCQkJCTU4IEJlaSBTaSBIdWFuIFhpIFJkCi0JCQkJSWRlYWwgUGxhemEsIFN1aXRlIDQxMwotCQkJCUJlaWppbmcgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMjQtNjEgICAoaGV4KQkJU2hpbiBXYW5nIFRlY2guCi0wMDI0NjEgICAgIChiYXNlIDE2KQkJU2hpbiBXYW5nIFRlY2guCi0JCQkJNjMyLTYyLCBHdXJvLURvbmcsIEd1cm8tR3UKLQkJCQkxMDUtSG8sIEMtRG9uZywgR3Vyb2N1bGF0aW9uIERlcHQuCi0JCQkJU2VvdWwgIDE1Mi04NjYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjIgICAoaGV4KQkJUmF5em9uZSBDb3Jwb3JhdGlvbgotMDAyNDYyICAgICAoYmFzZSAxNikJCVJheXpvbmUgQ29ycG9yYXRpb24KLQkJCQkjMjAwOCwgQi1Eb25nLCBTYW1obyBCTERHCi0JCQkJWWFuZ2phZTItRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy05NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjMgICAoaGV4KQkJUGh5YnJpZGdlIEluYwotMDAyNDYzICAgICAoYmFzZSAxNikJCVBoeWJyaWRnZSBJbmMKLQkJCQkxMjAwIFNwZWVycyBSb2FkCi0JCQkJVW5pdCAzNwotCQkJCU9ha3ZpbGxlIE9udGFyaW8gTDZMMlg0Ci0JCQkJQ0FOQURBCi0KLTAwLTI0LTY0ICAgKGhleCkJCUJyaWRnZSBUZWNobm9sb2dpZXMgQ28gQVMKLTAwMjQ2NCAgICAgKGJhc2UgMTYpCQlCcmlkZ2UgVGVjaG5vbG9naWVzIENvIEFTCi0JCQkJTfhsbGVwYXJrZW4gNAotCQkJCU9zbG8gIDA0NTkKLQkJCQlOT1JXQVkKLQotMDAtMjQtNjUgICAoaGV4KQkJRWxlbnRlYwotMDAyNDY1ICAgICAoYmFzZSAxNikJCUVsZW50ZWMKLQkJCQk0MDEtMTMgQ2h1bmdneWUtUmksRG9uZ3Rhbi1NeXVuCi0JCQkJSHdhc3VuZyBLeXVuZ2dpIDQ0NS04MTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjYgICAoaGV4KQkJVW5pdHJvbiBudgotMDAyNDY2ICAgICAoYmFzZSAxNikJCVVuaXRyb24gbnYKLQkJCQlGcmFucmtpamtsYWFuIDI3Ci0JCQkJUG9wZXJpbmdlIFctdmwgODk3MAotCQkJCUJFTEdJVU0KLQotMDAtMjQtNjcgICAoaGV4KQkJQU9DIEludGVybmF0aW9uYWwgKEV1cm9wZSkgR21iSAotMDAyNDY3ICAgICAoYmFzZSAxNikJCUFPQyBJbnRlcm5hdGlvbmFsIChFdXJvcGUpIEdtYkgKLQkJCQlMYWhuc3RyYXNzZSA4NkEKLQkJCQlCZXJsaW4gIDEyMDU1Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC02OCAgIChoZXgpCQlTdW1hdmlzaW9uIFRlY2hub2xvZ2llcyBDby4sTHRkCi0wMDI0NjggICAgIChiYXNlIDE2KQkJU3VtYXZpc2lvbiBUZWNobm9sb2dpZXMgQ28uLEx0ZAotCQkJCTZGLCBCbG9jayBBMiwgUG93ZXIgQ3JlYXRpdmUgQnVpbGRpbmcsTm8uMSBTaGFuZ2RpIEVhc3QgUm9hZCwgSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTI0LTY5ICAgKGhleCkJCVNtYXJ0IERvb3JwaG9uZXMKLTAwMjQ2OSAgICAgKGJhc2UgMTYpCQlTbWFydCBEb29ycGhvbmVzCi0JCQkJU3BpZXZlbGRzdHJhYXQgMjQKLQkJCQlMb2tlcmVuICA5MTYwCi0JCQkJQkVMR0lVTQotCi0wMC0yNC02QSAgIChoZXgpCQlTb2xpZCBZZWFyIENvLiwgTHRkLgotMDAyNDZBICAgICAoYmFzZSAxNikJCVNvbGlkIFllYXIgQ28uLCBMdGQuCi0JCQkJMkYtMSwgTm8uIDk0LCBCYW8tY2h1bmcgUm9hZCwKLQkJCQlIc2luLXRpZW4gQ2l0eSBUYWlwZWkgSHNpZW4gMjMxNDcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTZCICAgKGhleCkJCUNvdmlhLCBJbmMuCi0wMDI0NkIgICAgIChiYXNlIDE2KQkJQ292aWEsIEluYy4KLQkJCQlCZW5leCBTLTMgQmxkZy4sIDMtMjAtOCwgU2hpbnlva29oYW1hLEtvaG9rdS1rdSwKLQkJCQlZb2tvaGFtYS1jaXR5IEthbmFnYXdhLXByZWYuIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMjQtNkMgICAoaGV4KQkJQVJVQkEgTkVUV09SS1MsIElOQy4KLTAwMjQ2QyAgICAgKGJhc2UgMTYpCQlBUlVCQSBORVRXT1JLUywgSU5DLgotCQkJCTEzNDQgQ3Jvc3NtYW4gQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC02RCAgIChoZXgpCQlXZWluemllcmwgRW5naW5lZXJpbmcgR21iSAotMDAyNDZEICAgICAoYmFzZSAxNikJCVdlaW56aWVybCBFbmdpbmVlcmluZyBHbWJICi0JCQkJQmFobmhvZnN0ci4gNgotCQkJCVR5cmxhY2hpbmcgQmF2YXJpYSA4NDU1OAotCQkJCUdFUk1BTlkKLQotMDAtMjQtNkUgICAoaGV4KQkJUGhpaG9uZyBVU0EgQ29ycC4KLTAwMjQ2RSAgICAgKGJhc2UgMTYpCQlQaGlob25nIFVTQSBDb3JwLgotCQkJCTQ3ODAwIEZyZW1vbnQgQmx2ZC4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC02RiAgIChoZXgpCQlPbmRhIENvbW11bmljYXRpb24gc3BhCi0wMDI0NkYgICAgIChiYXNlIDE2KQkJT25kYSBDb21tdW5pY2F0aW9uIHNwYQotCQkJCXZpYSBkZWwgbGF2b3JvIDkKLQkJCQlwb3JkZW5vbmUgIDMzMTcwCi0JCQkJSVRBTFkKLQotMDAtMjQtNzAgICAoaGV4KQkJQVVST1RFQ0ggdWx0cmFzb3VuZCBBUy4KLTAwMjQ3MCAgICAgKGJhc2UgMTYpCQlBVVJPVEVDSCB1bHRyYXNvdW5kIEFTLgotCQkJCVN2aW5nZW4gMQotCQkJCVR5ZGFsIFNyLVRyIE4tNzU5MAotCQkJCU5PUldBWQotCi0wMC0yNC03MSAgIChoZXgpCQlGdXNpb24gTXVsdGlTeXN0ZW1zIGRiYSBGdXNpb24taW8KLTAwMjQ3MSAgICAgKGJhc2UgMTYpCQlGdXNpb24gTXVsdGlTeXN0ZW1zIGRiYSBGdXNpb24taW8KLQkJCQk2MzUwIFMuIDMwMDAgRS4sIDZ0aCBmbG9vcgotCQkJCVNhbHQgbGFrZSBDaXR5IFVUIDg0MTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC03MiAgIChoZXgpCQlSZURyaXZlbiBQb3dlciBJbmMuCi0wMDI0NzIgICAgIChiYXNlIDE2KQkJUmVEcml2ZW4gUG93ZXIgSW5jLgotCQkJCTI0QSBCYXRoIFJkLgotCQkJCUlyb3F1b2lzIE9udGFyaW8gSzBFIDFLMAotCQkJCUNBTkFEQQotCi0wMC0yNC03MyAgIChoZXgpCQkzQ29tIEV1cm9wZSBMdGQKLTAwMjQ3MyAgICAgKGJhc2UgMTYpCQkzQ29tIEV1cm9wZSBMdGQKLQkJCQlQZW9wbGUgQnVpbGRpbmcgMgotCQkJCU1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cy4gSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI0LTc0ICAgKGhleCkJCUF1dHJvbmljYSBGaXJlIEFuZCBTZWN1cmlydHkKLTAwMjQ3NCAgICAgKGJhc2UgMTYpCQlBdXRyb25pY2EgRmlyZSBBbmQgU2VjdXJpcnR5Ci0JCQkJSGFha29uIFZJSSdzIGcuNAotCQkJCVRyb25kaGVpbSBOLTc0ODMKLQkJCQlOT1JXQVkKLQotMDAtMjQtNzUgICAoaGV4KQkJQ29tcGFzcyBTeXN0ZW0oRW1iZWRkZWQgRGVwdC4pCi0wMDI0NzUgICAgIChiYXNlIDE2KQkJQ29tcGFzcyBTeXN0ZW0oRW1iZWRkZWQgRGVwdC4pCi0JCQkJMTQwMyBBQ0UgVGVjaG5vVG93ZXIgOHRoCi0JCQkJMTkxLTcsIEd1cm8tZG9uZywgR3Vyby1HdQotCQkJCVNlb3VsICAxNTItMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTc2ICAgKGhleCkJCVRBUC50dgotMDAyNDc2ICAgICAoYmFzZSAxNikJCVRBUC50dgotCQkJCTE2dzM2MSBTb3V0aCBGcm9udGFnZSBSb2FkCi0JCQkJU3VpdGUgMTI4Ci0JCQkJQnVyciBSaWRnZSBJTCA2MDUyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNzcgICAoaGV4KQkJVGliYm8gVGVjaG5vbG9neQotMDAyNDc3ICAgICAoYmFzZSAxNikJCVRpYmJvIFRlY2hub2xvZ3kKLQkJCQk5Ri0zLCBObyAzMSwgTGFuZSAxNjksIEthbmctTmluZyBTdC4sCi0JCQkJSHNpLUNoaWggVGFpcGVpIEhzaWVuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtNzggICAoaGV4KQkJTWFnIFRlY2ggRWxlY3Ryb25pY3MgQ28gTGltaXRlZAotMDAyNDc4ICAgICAoYmFzZSAxNikJCU1hZyBUZWNoIEVsZWN0cm9uaWNzIENvIExpbWl0ZWQKLQkJCQlGbGF0IC8gUm9vbSBUNzggR09GIEJhbmdrb2sgQnVpbGRpbmcKLQkJCQkxOCBCb25oYW0gU3RyYW5kIFdlc3QKLQkJCQlTaGV1bmcgV2FuIEhLIAotCQkJCUhPTkcgS09ORwotCi0wMC0yNC03OSAgIChoZXgpCQlPcHRlYyBEaXNwbGF5cywgSW5jLgotMDAyNDc5ICAgICAoYmFzZSAxNikJCU9wdGVjIERpc3BsYXlzLCBJbmMuCi0JCQkJNTI4IFMuIDZ0aCBBdmVudWUKLQkJCQlDaXR5IG9mIEluZHVzdHJ5IENhbGlmb3JuaWEgOTE3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTdBICAgKGhleCkJCUZVIFlJIENIRU5HIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDI0N0EgICAgIChiYXNlIDE2KQkJRlUgWUkgQ0hFTkcgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxM0YsIE5vLiAxMDUtMSwgSmlsaW4gUmQuLCBMdWp1IFNoaWFuZywKLQkJCQlUYW95dWFuICAzMzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTdCICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0wMDI0N0IgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLQkJCQk3NjAgTm9ydGggTWFyeSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTdDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI0N0MgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTBWCi0JCQkJREVOTUFSSwotCi0wMC0yNC03RCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNDdEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yNC03RSAgIChoZXgpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZAotMDAyNDdFICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkCi0JCQkJMTQxLCBMQU5FIDM1MSxTRUMuMSwgIFRBSVBJTkcgUkQuCi0JCQkJVFNBT1RVRU4KLQkJCQlOQU5UT1UgNTQyNjEKLQkJCQlUQU5aQU5JQSwgVU5JVEVEIFJFUFVCTElDIE9GCi0KLTAwLTI0LTdGICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyNDdGICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVFggNzUwODItNDM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtODAgICAoaGV4KQkJTWV0ZW9jb250cm9sIEdtYkgKLTAwMjQ4MCAgICAgKGJhc2UgMTYpCQlNZXRlb2NvbnRyb2wgR21iSAotCQkJCVNwaWNoZXJlcnN0cmFzc2UgNDgKLQkJCQlBdWdzYnVyZyBCYXZhcmlhIDg2MTUyCi0JCQkJR0VSTUFOWQotCi0wMC0yNC04MSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwMjQ4MSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAyCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtODIgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi0wMDI0ODIgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtODMgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MKLTAwMjQ4MyAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcwotCQkJCTYwLTM5LEthc2FuLWRvbmcsS3VtY2hvbi1rdSwKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNC04NCAgIChoZXgpCQlCYW5nIGFuZCBPbHVmc2VuIE1lZGljb20gYS9zCi0wMDI0ODQgICAgIChiYXNlIDE2KQkJQmFuZyBhbmQgT2x1ZnNlbiBNZWRpY29tIGEvcwotCQkJCUdpbXNpbmdsdW5kdmVqIDIwCi0JCQkJU3RydWVyIERLIERLNzYwMAotCQkJCURFTk1BUksKLQotMDAtMjQtODUgICAoaGV4KQkJQ29udGVYdHJlYW0gTHRkCi0wMDI0ODUgICAgIChiYXNlIDE2KQkJQ29udGVYdHJlYW0gTHRkCi0JCQkJOTQgRW0tSGFNb3NoYXZvdAotCQkJCVBPQiAzMjQ2Ci0JCQkJUGV0YWNoLVRpa3ZhICA0OTUyNwotCQkJCUlTUkFFTAotCi0wMC0yNC04NiAgIChoZXgpCQlEZXNpZ25BcnQgTmV0d29ya3MKLTAwMjQ4NiAgICAgKGJhc2UgMTYpCQlEZXNpZ25BcnQgTmV0d29ya3MKLQkJCQk0IEhhJ2hhcm9zaGV0IFN0Ci0JCQkJUC5PLiBCb3ggMjI3OAotCQkJCVJhJ2FuYW5hICA0MzEwMQotCQkJCUlTUkFFTAotCi0wMC0yNC04NyAgIChoZXgpCQlCbGFja2JvYXJkIEluYy4KLTAwMjQ4NyAgICAgKGJhc2UgMTYpCQlCbGFja2JvYXJkIEluYy4KLQkJCQkyMjYwMSBOb3J0aCAxOXRoIEF2ZW51ZQotCQkJCVN1aXRlIDIwMAotCQkJCVBob2VuaXggQVogODUwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTg4ICAgKGhleCkJCUNlbnRyZSBGb3IgRGV2ZWxvcG1lbnQgT2YgVGVsZW1hdGljcwotMDAyNDg4ICAgICAoYmFzZSAxNikJCUNlbnRyZSBGb3IgRGV2ZWxvcG1lbnQgT2YgVGVsZW1hdGljcwotCQkJCUIwMSwgRWxlY3Ryb25pYyBDaXR5LCBQaGFzZSAxCi0JCQkJSG9zdXIgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwMTAwCi0JCQkJSU5ESUEKLQotMDAtMjQtODkgICAoaGV4KQkJVm9kYWZvbmUgT21uaXRlbCBOLlYuCi0wMDI0ODkgICAgIChiYXNlIDE2KQkJVm9kYWZvbmUgT21uaXRlbCBOLlYuCi0JCQkJVmlhIEplcnZpcyAxMwotCQkJCTEwMDE1IEl2cmVhIFRvcmlubwotCQkJCUlUQUxZCi0KLTAwLTI0LThBICAgKGhleCkJCUthZ2EgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDI0OEEgICAgIChiYXNlIDE2KQkJS2FnYSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQlIb25nbyAyLTItOQotCQkJCUJ1bmt5by1rdQotCQkJCVRva3lvIDExMy04NTAzCi0JCQkJSkFQQU4KLQotMDAtMjQtOEIgICAoaGV4KQkJSFlCVVMgQ08uLCBMVEQuCi0wMDI0OEIgICAgIChiYXNlIDE2KQkJSFlCVVMgQ08uLCBMVEQuCi0JCQkJUm0jIDcwMSwgRGFlcnVuZyBQb3N0IFRvd2VyIDFzdAotCQkJCTIxMi04LCBHdXJvLTNkb25nLCBHdXJvLWd1Ci0JCQkJU0VPVUwgIDE1Mi03OTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtOEMgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDI0OEMgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtOEQgICAoaGV4KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4KLTAwMjQ4RCAgICAgKGJhc2UgMTYpCQlTb255IENvbXB1dGVyIEVudGVydGFpbm1lbnQgSW5jLgotCQkJCTItNi0yMSBNaW5hbWktQW95YW1hLAotCQkJCU1pbmF0by1rdSBUb2t5byAxMDctMDA2MgotCQkJCUpBUEFOCi0KLTAwLTI0LThFICAgKGhleCkJCUluZm93YXJlIFpSdC4KLTAwMjQ4RSAgICAgKGJhc2UgMTYpCQlJbmZvd2FyZSBaUnQuCi0JCQkJSHVzZWcgdS4gMTAvYQotCQkJCUJ1ZGFwZXN0ICAxMjIzCi0JCQkJSFVOR0FSWQotCi0wMC0yNC04RiAgIChoZXgpCQlETy1NT05JWAotMDAyNDhGICAgICAoYmFzZSAxNikJCURPLU1PTklYCi0JCQkJIzUwMSwgS29yZWFuYSBCL0QKLQkJCQk3LTUsIFN1bmFlLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA4MgotCQkJCUtPUkVBLCBERU1PQ1JBVElDIFBFT1BMRSdTIFJFUFVCTEkKLQotMDAtMjQtOTAgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTFRECi0wMDI0OTAgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTFRECi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTkxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTAwMjQ5MSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTkyICAgKGhleCkJCU1vdG9yb2xhLCBCcm9hZGJhbmQgU29sdXRpb25zIEdyb3VwCi0wMDI0OTIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEJyb2FkYmFuZCBTb2x1dGlvbnMgR3JvdXAKLQkJCQkxMTAxIE1hcmluYSBWaWxsYWdlIFBhcmt3YXkKLQkJCQlTdWl0ZSAyMDAKLQkJCQlBbGFtZWRhIENBIDk0NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC05MyAgIChoZXgpCQlNb3Rvcm9sYSwgSW5jCi0wMDI0OTMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYwotCQkJCTExMDEgTWFyaW5hIFZpbGxhZ2UgUGFya3dheQotCQkJCVN1aXRlIDIwMAotCQkJCUFsYW1lZGEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTk0ICAgKGhleCkJCVNoZW56aGVuIEJhb3hpbiBUZWNoIENPLiwgTHRkLgotMDAyNDk0ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEJhb3hpbiBUZWNoIENPLiwgTHRkLgotCQkJCTZGIEh1YWxlIEJMREcuLCBaaG9uZ2hhbmdiZWkgUmQuLAotCQkJCUZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgwMjgKLQkJCQlDSElOQQotCi0wMC0yNC05NSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyNDk1ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIFUuUy4gSGlnaHdheSA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtOTYgICAoaGV4KQkJR2luemluZ2VyIGVsZWN0cm9uaWMgc3lzdGVtcwotMDAyNDk2ICAgICAoYmFzZSAxNikJCUdpbnppbmdlciBlbGVjdHJvbmljIHN5c3RlbXMKLQkJCQlHZXdlcmJlZ2ViaWV0IFBpcmF0aCAxNgotCQkJCVdlbmcgVXBwZXIgQXVzdHJpYSA0OTUyCi0JCQkJQVVTVFJJQQotCi0wMC0yNC05NyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI0OTcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtOTggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNDk4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTk5ICAgKGhleCkJCUFxdWlsYSBUZWNobm9sb2dpZXMKLTAwMjQ5OSAgICAgKGJhc2UgMTYpCQlBcXVpbGEgVGVjaG5vbG9naWVzCi0JCQkJODQyOUEgV2FzaGluZ3RvbiBQbGFjZSBORQotCQkJCUFsYnVxdWVycXVlIE5NIDg3MTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC05QSAgIChoZXgpCQlCZWlqaW5nIFpob25nY2h1YW5nIFRlbGVjb21tdW5pY2F0aW9uIFRlc3QgQ28uLCBMdGQuCi0wMDI0OUEgICAgIChiYXNlIDE2KQkJQmVpamluZyBaaG9uZ2NodWFuZyBUZWxlY29tbXVuaWNhdGlvbiBUZXN0IENvLiwgTHRkLgotCQkJCTEyLTE0LEJsb2NrIEMsQmVpamluZyBJbnRlcm5hdGlvbmFsIEJ1aWxkaW5nLCMxOCxaaG9uZyBHdWFuIEN1biBOYW4gUm9hZCwKLQkJCQlIYWkgRGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4MQotCQkJCUNISU5BCi0KLTAwLTI0LTlCICAgKGhleCkJCUFjdGlvbiBTdGFyIEVudGVycHJpc2UgQ28uLCBMdGQuCi0wMDI0OUIgICAgIChiYXNlIDE2KQkJQWN0aW9uIFN0YXIgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQkxMEYsIE5vLjE1OSwgVGEtVHVuZyBSZC4sIFNlYy4yCi0JCQkJSHNpY2hpaCBUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC05QyAgIChoZXgpCQlCaW1lbmcgQ29tdW5pY2F0aW9uIFN5c3RlbSBDby4gTHRkCi0wMDI0OUMgICAgIChiYXNlIDE2KQkJQmltZW5nIENvbXVuaWNhdGlvbiBTeXN0ZW0gQ28uIEx0ZAotCQkJCUxldmVsIDE2L2YsIFRvd2VyIEIsU2lub3RyYW5zIFBsYXphLE5vLjQzLCBYaSBaaGkgTWVuIE5vcnRoZXJuIFJvYWQsSGFpIGRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwNDQKLQkJCQlDSElOQQotCi0wMC0yNC05RCAgIChoZXgpCQlORVMgVGVjaG5vbG9neSBJbmMuCi0wMDI0OUQgICAgIChiYXNlIDE2KQkJTkVTIFRlY2hub2xvZ3kgSW5jLgotCQkJCSMyMDUgQUNFIFRlY2hub3Rvd2VyIDEwLCA0NzAtNSBHYXNhbi1kb25nCi0JCQkJR2V1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My03ODkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtOUUgICAoaGV4KQkJQURDLUVsZWt0cm9uaWsgR21iSAotMDAyNDlFICAgICAoYmFzZSAxNikJCUFEQy1FbGVrdHJvbmlrIEdtYkgKLQkJCQnWc3RpbmdzdHJh32UgMTNiCi0JCQkJSGFtbSBOUlcgRC01OTA2MwotCQkJCUdFUk1BTlkKLQotMDAtMjQtOUYgICAoaGV4KQkJUklNIFRlc3RpbmcgU2VydmljZXMKLTAwMjQ5RiAgICAgKGJhc2UgMTYpCQlSSU0gVGVzdGluZyBTZXJ2aWNlcwotCQkJCTQ0MCBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDVSOQotCQkJCUNBTkFEQQotCi0wMC0yNC1BMCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyNEEwICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQTEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjRBMSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUEyICAgKGhleCkJCUhvbmcgS29uZyBNaWRkbGV3YXJlIFRlY2hub2xvZ3kgTGltaXRlZAotMDAyNEEyICAgICAoYmFzZSAxNikJCUhvbmcgS29uZyBNaWRkbGV3YXJlIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJvb20gMTMxNSAsTGVpZ2h0b24gQ2VudHJlLDc3IExlaWdodG9uIFJvYWQKLQkJCQlDYXVzZXdheSBCYXkgIDg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0yNC1BMyAgIChoZXgpCQlTb25pbSBUZWNobm9sb2dpZXMgSW5jCi0wMDI0QTMgICAgIChiYXNlIDE2KQkJU29uaW0gVGVjaG5vbG9naWVzIEluYwotCQkJCTE4NzUgUy5HcmFudCBTdHJlZXQKLQkJCQlTdGUjNjIwCi0JCQkJU2FubWF0ZW8gQ0EgOTQ0MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUE0ICAgKGhleCkJCVNpa2x1IENvbW11bmljYXRpb24KLTAwMjRBNCAgICAgKGJhc2UgMTYpCQlTaWtsdSBDb21tdW5pY2F0aW9uCi0JCQkJNyBTaG9oYW0gU3QuLCAsIDNyZCBGbG9vcgotCQkJCVBldGFoIFRpa3ZhICA0OTUxNwotCQkJCUlTUkFFTAotCi0wMC0yNC1BNSAgIChoZXgpCQlCdWZmYWxvIEluYy4KLTAwMjRBNSAgICAgKGJhc2UgMTYpCQlCdWZmYWxvIEluYy4KLQkJCQkxNSwgU2hpYmF0YSBIb25kb3JpIDQtY2hvbWUKLQkJCQlNaW5hbWkta3UsTmFnb3lhIEFpY2hpIFByZWYuIDQ1Ny04NTIwCi0JCQkJSkFQQU4KLQotMDAtMjQtQTYgICAoaGV4KQkJVEVMRVNUQVIgRElHSVRBTCBHbWJICi0wMDI0QTYgICAgIChiYXNlIDE2KQkJVEVMRVNUQVIgRElHSVRBTCBHbWJICi0JCQkJVnVsa2FuaPZoZSAvIEI0MTAKLQkJCQlEcmVpcyAtIEJy/GNrICA1NDU1MgotCQkJCUdFUk1BTlkKLQotMDAtMjQtQTcgICAoaGV4KQkJQWR2YW5jZWQgVmlkZW8gQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAyNEE3ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFZpZGVvIENvbW11bmljYXRpb25zIEluYy4KLQkJCQk2MzMgVyA1dGggU3RyZWV0Ci0JCQkJNjgwMAotCQkJCUxvcyBBbmdlbGVzIENBIDkwMDE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1BOCAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDI0QTggICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQKLQkJCQlSb3NldmlsbGUgQ2FsaWZvcm5pYSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQTkgICAoaGV4KQkJQWcgTGVhZGVyIFRlY2hub2xvZ3kKLTAwMjRBOSAgICAgKGJhc2UgMTYpCQlBZyBMZWFkZXIgVGVjaG5vbG9neQotCQkJCTIyMDIgUyBSaXZlcnNpZGUgRHIuCi0JCQkJUE8gQm94IDIzNDgKLQkJCQlBbWVzIElBIDUwMDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1BQSAgIChoZXgpCQlEeWNvciBUZWNobm9sb2dpZXMgTHRkLgotMDAyNEFBICAgICAoYmFzZSAxNikJCUR5Y29yIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJMTg1MSA5NCBTdHJlZXQKLQkJCQlFZG1vbnRvbiBBbGJlcnRhIFQ2TiAxRTYKLQkJCQlDQU5BREEKLQotMDAtMjQtQUIgICAoaGV4KQkJQTcgRW5naW5lZXJpbmcsIEluYy4KLTAwMjRBQiAgICAgKGJhc2UgMTYpCQlBNyBFbmdpbmVlcmluZywgSW5jLgotCQkJCTEyMTI3IEtpcmtoYW0gUm9hZCBTdWl0ZSAxMDEKLQkJCQlQb3dheSBDQSA5MjA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQUMgICAoaGV4KQkJSGFuZ3pob3UgRFB0ZWNoIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMjRBQyAgICAgKGJhc2UgMTYpCQlIYW5nemhvdSBEUHRlY2ggVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCUh1YXJvbmcgU2hpZGFpIEJsZC4sIE5PLjM4ODAsSmlhbmctTmFuIEF2ZW51ZSwgQmluamlhbmcgRGlzdHJpY3QKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwNTEKLQkJCQlDSElOQQotCi0wMC0yNC1BRCAgIChoZXgpCQlBZG9sZiBUaGllcyBHbWJoICYgQ28uIEtHCi0wMDI0QUQgICAgIChiYXNlIDE2KQkJQWRvbGYgVGhpZXMgR21iaCAmIENvLiBLRwotCQkJCUhhdXB0c3RyLiA3NgotCQkJCUf2dHRpbmdlbiAgMzcwODMKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LUFFICAgKGhleCkJCU1vcnBobwotMDAyNEFFICAgICAoYmFzZSAxNikJCU1vcnBobwotCQkJCTE4IGNoYXVzc2VlIEp1bGVzIENlc2FyCi0JCQkJT1NOWSAgOTU1MjAKLQkJCQlGUkFOQ0UKLQotMDAtMjQtQUYgICAoaGV4KQkJRWNob1N0YXIgVGVjaG5vbG9naWVzCi0wMDI0QUYgICAgIChiYXNlIDE2KQkJRWNob1N0YXIgVGVjaG5vbG9naWVzCi0JCQkJOTQgSW52ZXJuZXNzIENpcmNsZQotCQkJCUVuZ2xld29vZCBDTyA4MDExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQjAgICAoaGV4KQkJRVNBQiBBQgotMDAyNEIwICAgICAoYmFzZSAxNikJCUVTQUIgQUIKLQkJCQlCb3ggODAwNAotCQkJCUxpbmRob2xtc2FsbOluIDkKLQkJCQlHb3RoZW5idXJnICBTRS00MDIgNzcKLQkJCQlTV0VERU4KLQotMDAtMjQtQjEgICAoaGV4KQkJQ291bG9tYiBUZWNobm9sb2dpZXMKLTAwMjRCMSAgICAgKGJhc2UgMTYpCQlDb3Vsb21iIFRlY2hub2xvZ2llcwotCQkJCTE2OTIgRGVsbCBBdmUKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQjIgICAoaGV4KQkJTmV0Z2VhcgotMDAyNEIyICAgICAoYmFzZSAxNikJCU5ldGdlYXIKLQkJCQkzNTAgRWFzdCBQbHVtZXJpYSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1CMyAgIChoZXgpCQlHcmFmLVN5dGVjbyBHbWJIICYgQ28uIEtHCi0wMDI0QjMgICAgIChiYXNlIDE2KQkJR3JhZi1TeXRlY28gR21iSCAmIENvLiBLRwotCQkJCUthaXNlcnN0ci4gMTgKLQkJCQlUdW5pbmdlbiBCYWRlbi1X/HJ0dGVtYmVyZyA3ODYwOQotCQkJCUdFUk1BTlkKLQotMDAtMjQtQjQgICAoaGV4KQkJRVNDQVRST05JQyBHbWJICi0wMDI0QjQgICAgIChiYXNlIDE2KQkJRVNDQVRST05JQyBHbWJICi0JCQkJV3VlcnpidXJnZXIgU3RyLiA4Ci0JCQkJTGFhdHplbiBMb3dlciBTYXhvbnkgMzA4ODAKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LUI1ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyNEI1ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVFggNzUwODItNDM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQjYgICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0wMDI0QjYgICAgIChiYXNlIDE2KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0JCQkJMTI4MCBEaXNjIERyaXZlCi0JCQkJU2hha29wZWUgTU4gNTUzNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUI3ICAgKGhleCkJCUdyaWRQb2ludCwgSW5jLgotMDAyNEI3ICAgICAoYmFzZSAxNikJCUdyaWRQb2ludCwgSW5jLgotCQkJCTI4MDEgQ2xhcmVuZG9uIEJsdmQuCi0JCQkJU3VpdGUgMTAwCi0JCQkJQXJsaW5ndG9uIFZBIDIyMjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1COCAgIChoZXgpCQlmcmVlIGFsbGlhbmNlIHNkbiBiaGQKLTAwMjRCOCAgICAgKGJhc2UgMTYpCQlmcmVlIGFsbGlhbmNlIHNkbiBiaGQKLQkJCQlCLTMtMiBQbGF6YSBEYW1hcwotCQkJCVNyaSBIYXJ0YW1hcwotCQkJCUt1YWxhIEx1bXB1ciBXUCA1MDQ4MAotCQkJCU1BTEFZU0lBCi0KLTAwLTI0LUI5ICAgKGhleCkJCVd1aGFuIEhpZ2hlYXN5IEVsZWN0cm9uaWMgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDby5MdGQKLTAwMjRCOSAgICAgKGJhc2UgMTYpCQlXdWhhbiBIaWdoZWFzeSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uTHRkCi0JCQkJQmxkZyBBMiBPcHRpY3MgVmFsbGV5IFNvZnR3YXJlIFBhcmssR3VhbnNoYW4gMXN0IFJkLAotCQkJCVd1aGFuIEh1YmVpIDQzMDAzMwotCQkJCUNISU5BCi0KLTAwLTI0LUJBICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDI0QkEgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUJCICAgKGhleCkJCUNFTlRSQUwgQ29ycG9yYXRpb24KLTAwMjRCQiAgICAgKGJhc2UgMTYpCQlDRU5UUkFMIENvcnBvcmF0aW9uCi0JCQkJTklTU08gMTcgQmxkZy43RiAyLTE0LTMwCi0JCQkJU2hpbnlva29oYW1hIEtvdWhva3Uta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjItMDAzMwotCQkJCUpBUEFOCi0KLTAwLTI0LUJDICAgKGhleCkJCUh1Um9iIENvLixMdGQKLTAwMjRCQyAgICAgKGJhc2UgMTYpCQlIdVJvYiBDby4sTHRkCi0JCQkJMjEyMSwgSmVvbmd3YW5nLURvbmcKLQkJCQlTaWhldW5nLVNpIEd5ZW9uZ2dpLURvIDQyOS03OTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtQkQgICAoaGV4KQkJSGFpbnpsIEluZHVzdHJpZXN5c3RlbWUgR21iSAotMDAyNEJEICAgICAoYmFzZSAxNikJCUhhaW56bCBJbmR1c3RyaWVzeXN0ZW1lIEdtYkgKLQkJCQlJbmR1c3RyaWV6ZWlsZSA1NgotCQkJCVBvc3RmYWNoIDEwMAotCQkJCUxpbnogVXBwZXIgQXVzdHJpYSA0MDIxCi0JCQkJQVVTVFJJQQotCi0wMC0yNC1CRSAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0wMDI0QkUgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMuIDUtMS0xMgotCQkJCUtpdGFzaGluYWdhd2EKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMDEKLQkJCQlKQVBBTgotCi0wMC0yNC1CRiAgIChoZXgpCQlDSUFUCi0wMDI0QkYgICAgIChiYXNlIDE2KQkJQ0lBVAotCQkJCTMwLCBBdmVudWUgSmVhbiBGYWxjb25uaWVyCi0JCQkJQ3Vsb3ogIDAxMzUwCi0JCQkJRlJBTkNFCi0KLTAwLTI0LUMwICAgKGhleCkJCU5USSBDT01PRE8gSU5DCi0wMDI0QzAgICAgIChiYXNlIDE2KQkJTlRJIENPTU9ETyBJTkMKLQkJCQlSbSM1MDIsIEthbmd5b25nIEJsZGcsIFN1bmduYW0tZG9uZwotCQkJCUNoZXVuZ3dvbi1ndQotCQkJCVN1bmduYW0tc2kgS3l1bmdnaS1kbyA0NjItODI3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LUMxICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDI0QzEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQlOby4xMTg3IEJpbkFuIFJvYWQsIEJpbmppYW5nIERpc3RyaWN0LAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDA1MwotCQkJCUNISU5BCi0KLTAwLTI0LUMyICAgKGhleCkJCUFzdW1vIENvLixMdGQuCi0wMDI0QzIgICAgIChiYXNlIDE2KQkJQXN1bW8gQ28uLEx0ZC4KLQkJCQlPeWEtS2l0YSAxLTMtMQotCQkJCUVCSU5BLUNJVFkgS0FOQUdBV0EtUFJFRi4gMjQzLTA0MTkKLQkJCQlKQVBBTgotCi0wMC0yNC1DMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI0QzMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQzQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNEM0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUM1ICAgKGhleCkJCU1lcmlkaWFuIEF1ZGlvIExpbWl0ZWQKLTAwMjRDNSAgICAgKGJhc2UgMTYpCQlNZXJpZGlhbiBBdWRpbyBMaW1pdGVkCi0JCQkJMTEgTGF0aGFtIFJvYWQKLQkJCQlIdW50aW5nZG9uIENhbWJzIFBFMjkgNllFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjQtQzYgICAoaGV4KQkJSGFnZXIgRWxlY3RybyBTQVMKLTAwMjRDNiAgICAgKGJhc2UgMTYpCQlIYWdlciBFbGVjdHJvIFNBUwotCQkJCTEzMiwgYm91bGV2YXJkIGQnRXVyb3BlCi0JCQkJT2Jlcm5haSBCYXMtUmhpbiA2NzIxNQotCQkJCUZSQU5DRQotCi0wMC0yNC1DNyAgIChoZXgpCQlNb2JpbGFybSBMdGQKLTAwMjRDNyAgICAgKGJhc2UgMTYpCQlNb2JpbGFybSBMdGQKLQkJCQk3NjggQ2FubmluZyBIaWdod2F5Ci0JCQkJQXBwbGVjcm9zcwotCQkJCVdlc3Rlcm4gQXVzdHJhbGlhIDYxNTMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjQtQzggICAoaGV4KQkJQnJvYWRiYW5kIFNvbHV0aW9ucyBHcm91cAotMDAyNEM4ICAgICAoYmFzZSAxNikJCUJyb2FkYmFuZCBTb2x1dGlvbnMgR3JvdXAKLQkJCQkxMTAxIE1hcmluYSBWaWxsYWdlIFBhcmt3YXkKLQkJCQlBbGFtZWRhIENBIDk0NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1DOSAgIChoZXgpCQlCcm9hZGJhbmQgU29sdXRpb25zIEdyb3VwCi0wMDI0QzkgICAgIChiYXNlIDE2KQkJQnJvYWRiYW5kIFNvbHV0aW9ucyBHcm91cAotCQkJCTExMDEgTWFyaW5hIFZpbGxhZ2UgUGFya3dheQotCQkJCUFsYW1lZGEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUNBICAgKGhleCkJCVRvYmlpIFRlY2hub2xvZ3kgQUIKLTAwMjRDQSAgICAgKGJhc2UgMTYpCQlUb2JpaSBUZWNobm9sb2d5IEFCCi0JCQkJS2FybHNyb3bkZ2VuIDJECi0JCQkJRGFuZGVyeWQgIDE4MjUzCi0JCQkJU1dFREVOCi0KLTAwLTI0LUNCICAgKGhleCkJCUF1dG9uZXQgTW9iaWxlCi0wMDI0Q0IgICAgIChiYXNlIDE2KQkJQXV0b25ldCBNb2JpbGUKLQkJCQkyMjM1IE1lcmN1cnkgV2F5IFN0ZS4gMTQ1Ci0JCQkJU2FudGEgUm9zYSBDQSA5NTQwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQ0MgICAoaGV4KQkJRmFzY2luYXRpb25zIFRveXMgYW5kIEdpZnRzLCBJbmMuCi0wMDI0Q0MgICAgIChiYXNlIDE2KQkJRmFzY2luYXRpb25zIFRveXMgYW5kIEdpZnRzLCBJbmMuCi0JCQkJMTkyMjQgRGVzIE1vaW5lcyBXYXkgUwotCQkJCVN0ZSAxMDAKLQkJCQlTZWF0dGxlIFdhc2hpbmd0b24gOTgxNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUNEICAgKGhleCkJCVdpbGxvdyBHYXJhZ2UsIEluYy4KLTAwMjRDRCAgICAgKGJhc2UgMTYpCQlXaWxsb3cgR2FyYWdlLCBJbmMuCi0JCQkJNjggV2lsbG93IFJkLgotCQkJCU1lbmxvIFBhcmsgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUNFICAgKGhleCkJCUV4ZWx0ZWNoIEluYwotMDAyNENFICAgICAoYmFzZSAxNikJCUV4ZWx0ZWNoIEluYwotCQkJCTczMTcgSmFjayBOZXdlbGwgQmx2ZCBOb3J0aAotCQkJCUZvcnQgV29ydGggVFggNzYxMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUNGICAgKGhleCkJCUluc2NhcGUgRGF0YSBDb3Jwb3JhdGlvbgotMDAyNENGICAgICAoYmFzZSAxNikJCUluc2NhcGUgRGF0YSBDb3Jwb3JhdGlvbgotCQkJCTE2MTEgU291dGggTWFpbiBTdHJlZXQKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtRDAgICAoaGV4KQkJU2hlbnpoZW4gU09HT09EIEluZHVzdHJ5IENPLixMVEQuCi0wMDI0RDAgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU09HT09EIEluZHVzdHJ5IENPLixMVEQuCi0JCQkJU09HT09EIFNjaWVuY2UgUGFyayxBdmlhdGlvbiBSb2FkLFhpWGlhbmcgVG93bixCYW8nYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmd6aG91IDUxODEwMgotCQkJCUNISU5BCi0KLTAwLTI0LUQxICAgKGhleCkJCVRob21zb24gSW5jLgotMDAyNEQxICAgICAoYmFzZSAxNikJCVRob21zb24gSW5jLgotCQkJCTEwMSBXZXN0IDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtRDIgICAoaGV4KQkJQXNrZXkgQ29tcHV0ZXIKLTAwMjREMiAgICAgKGJhc2UgMTYpCQlBc2tleSBDb21wdXRlcgotCQkJCTEwRixOTy4xMTksQ0hJRU5LQU5HIFJELENIVU5HLUhPLFRBSVBFSSwKLQkJCQlUQUlXQU4gVEFJUEVJIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtRDMgICAoaGV4KQkJUVVBTElDQSBJbmMuCi0wMDI0RDMgICAgIChiYXNlIDE2KQkJUVVBTElDQSBJbmMuCi0JCQkJNS0yOS0xNSxUb3lvLAotCQkJCUtvdG8ta3UsCi0JCQkJVG9reW8gIDEzNS0wMDE2Ci0JCQkJSkFQQU4KLQotMDAtMjQtRDQgICAoaGV4KQkJRlJFRUJPWCBTQQotMDAyNEQ0ICAgICAoYmFzZSAxNikJCUZSRUVCT1ggU0EKLQkJCQk4IHJ1ZSBkZSBsYSBWaWxsZSBsJ0V2ZXF1ZQotCQkJCVBBUklTIElkRiA3NTAwOAotCQkJCUZSQU5DRQotCi0wMC0yNC1ENSAgIChoZXgpCQlXaW53YXJkIEluZHVzdHJpYWwgTGltaXRlZAotMDAyNEQ1ICAgICAoYmFzZSAxNikJCVdpbndhcmQgSW5kdXN0cmlhbCBMaW1pdGVkCi0JCQkJUm0uNywgUCBGbG9vciwgVG93ZXIgQSwKLQkJCQlIdW5nIEhvbSBDb21tZXJjaWFsIENlbnRyZSwKLQkJCQlIb25nS29uZyAgODUyCi0JCQkJQ0hJTkEKLQotMDAtMjQtRDYgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDI0RDYgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yNC1ENyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjRENyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTI0LUQ4ICAgKGhleCkJCUlsU3VuZyBQcmVjaXNpb24KLTAwMjREOCAgICAgKGJhc2UgMTYpCQlJbFN1bmcgUHJlY2lzaW9uCi0JCQkJMTgyLTIsIEplZ2ktcmksIEplb25nbmFtLW15ZW9uCi0JCQkJSHdhbnNlb25nLXNpIEd5ZW9uZ2dpLWRvIDQ0NS05NjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtRDkgICAoaGV4KQkJQklDT00sIEluYy4KLTAwMjREOSAgICAgKGJhc2UgMTYpCQlCSUNPTSwgSW5jLgotCQkJCTc1NSBNYWluIFN0cmVldAotCQkJCUJ1aWxkaW5nIDMKLQkJCQlNb25yb2UgQ1QgMDY0NjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LURBICAgKGhleCkJCUlubm92YXIgU3lzdGVtcyBMaW1pdGVkCi0wMDI0REEgICAgIChiYXNlIDE2KQkJSW5ub3ZhciBTeXN0ZW1zIExpbWl0ZWQKLQkJCQkxMjE1NSBDb21taXNzaW9uZXIgRHJpdmUKLQkJCQlQTyBCb3ggNjY4Ci0JCQkJTm9ydGggSmFja3NvbiBPaGlvIDQ0NDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1EQiAgIChoZXgpCQlBbGNvaG9sIE1vbml0b3JpbmcgU3lzdGVtcwotMDAyNERCICAgICAoYmFzZSAxNikJCUFsY29ob2wgTW9uaXRvcmluZyBTeXN0ZW1zCi0JCQkJMTI0MSBXLiBNaW5lcmFsIEF2ZW51ZQotCQkJCVN1aXRlIDIwMAotCQkJCUxpdHRsZXRvbiBDTyA4MDEyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtREMgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAyNERDICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1ERCAgIChoZXgpCQlDZW50cmFrLCBJbmMuCi0wMDI0REQgICAgIChiYXNlIDE2KQkJQ2VudHJhaywgSW5jLgotCQkJCTIwNyBQZW5ucyBUcmFpbAotCQkJCU5ld3Rvd24gUEEgMTg5NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LURFICAgKGhleCkJCUdMT0JBTCBUZWNobm9sb2d5IEluYy4KLTAwMjRERSAgICAgKGJhc2UgMTYpCQlHTE9CQUwgVGVjaG5vbG9neSBJbmMuCi0JCQkJTm8uMTY4LFNoYW5zaGFuIFJkLiwgV2FuZ2NodW4gSW5kdXN0cmlhbCBQYXJrLAotCQkJCU5pbmdibyAgMzE1MTc2Ci0JCQkJQ0hJTkEKLQotMDAtMjQtREYgICAoaGV4KQkJRGlnaXRhbGJveCBFdXJvcGUgR21iSAotMDAyNERGICAgICAoYmFzZSAxNikJCURpZ2l0YWxib3ggRXVyb3BlIEdtYkgKLQkJCQlTYW5kc3RyYd9lIDY1Ci0JCQkJUmF0aW5nZW4gIDQwODc4Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC1FMCAgIChoZXgpCQlEUyBUZWNoLCBMTEMKLTAwMjRFMCAgICAgKGJhc2UgMTYpCQlEUyBUZWNoLCBMTEMKLQkJCQkyMjEwIEh1dHRvbiBEcml2ZQotCQkJCVN1aXRlIDEwMAotCQkJCUNhcnJvbGx0b24gVFggNzUwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUUxICAgKGhleCkJCUNvbnZleSBDb21wdXRlciBDb3JwLgotMDAyNEUxICAgICAoYmFzZSAxNikJCUNvbnZleSBDb21wdXRlciBDb3JwLgotCQkJCTEzMDIgRS4gQ29sbGlucyBCbHZkLgotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUUyICAgKGhleCkJCUhBU0VHQVdBIEVMRUNUUklDIENPLixMVEQuCi0wMDI0RTIgICAgIChiYXNlIDE2KQkJSEFTRUdBV0EgRUxFQ1RSSUMgQ08uLExURC4KLQkJCQk1LTYtMjAgU0hJT0UKLQkJCQlMSUdIVE5JTkcgVEVDSE5PTE9HWSBDRU5URVIKLQkJCQlBTUFHQVNBS0kgSFlPR08gNjYxLTA5NzYKLQkJCQlKQVBBTgotCi0wMC0yNC1FMyAgIChoZXgpCQlDQU8gR3JvdXAKLTAwMjRFMyAgICAgKGJhc2UgMTYpCQlDQU8gR3JvdXAKLQkJCQk0NjI4IFdlc3QgU2t5aGF3ayBEcml2ZQotCQkJCVdlc3QgSm9yZGFuIFVUIDg0MDg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1FNCAgIChoZXgpCQlXaXRoaW5ncwotMDAyNEU0ICAgICAoYmFzZSAxNikJCVdpdGhpbmdzCi0JCQkJMzdiaXMgcnVlIGR1IEdlbmVyYWwgTGVjbGVyYwotCQkJCUlzc3kgbGVzIE1vdWxpbmVhdXggIDkyNDQyCi0JCQkJRlJBTkNFCi0KLTAwLTI0LUU1ICAgKGhleCkJCVNlZXIgVGVjaG5vbG9neSwgSW5jCi0wMDI0RTUgICAgIChiYXNlIDE2KQkJU2VlciBUZWNobm9sb2d5LCBJbmMKLQkJCQkyNjgxIFBhcmxleXMgV2F5Ci0JCQkJU3VpdGUgMjAxCi0JCQkJU2FsdCBMYWtlIENpdHkgVXRhaCA4NDEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtRTYgICAoaGV4KQkJSW4gTW90aW9uIFRlY2hub2xvZ3kgSW5jLgotMDAyNEU2ICAgICAoYmFzZSAxNikJCUluIE1vdGlvbiBUZWNobm9sb2d5IEluYy4KLQkJCQkjMzUwLCA2MjUgQWduZXMgU3RyZWV0Ci0JCQkJTmV3IFdlc3RtaW5zdGVyIEJDIFYzTSA1WTQKLQkJCQlDQU5BREEKLQotMDAtMjQtRTcgICAoaGV4KQkJUGxhc3RlciBOZXR3b3JrcwotMDAyNEU3ICAgICAoYmFzZSAxNikJCVBsYXN0ZXIgTmV0d29ya3MKLQkJCQk5MzUgSGFtaWx0b24gQXZlbnVlCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNS0xNDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1FOCAgIChoZXgpCQlEZWxsIEluYy4KLTAwMjRFOCAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUU5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuLCBTdG9yYWdlIFN5c3RlbSBEaXZpc2lvbgotMDAyNEU5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuLCBTdG9yYWdlIFN5c3RlbSBEaXZpc2lvbgotCQkJCTQxNiwgTWFldGFuIDNEb25nLCBZZW9uZ3RvbmctR3UKLQkJCQlTdXdvbiBDaXR5IEdleW9uZ2dpIERvIDQ0My03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtRUEgICAoaGV4KQkJaXJpcy1HbWJIIGluZnJhcmVkICYgaW50ZWxsaWdlbnQgc2Vuc29ycwotMDAyNEVBICAgICAoYmFzZSAxNikJCWlyaXMtR21iSCBpbmZyYXJlZCAmIGludGVsbGlnZW50IHNlbnNvcnMKLQkJCQlPc3RlbmRzdHJhc3NlIDEtMTQKLQkJCQlCZXJsaW4gIDEyNDU5Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC1FQiAgIChoZXgpCQlDbGVhclBhdGggTmV0d29ya3MsIEluYy4KLTAwMjRFQiAgICAgKGJhc2UgMTYpCQlDbGVhclBhdGggTmV0d29ya3MsIEluYy4KLQkJCQkxOTQwIEUuIE1hcmlwb3NhIEF2ZS4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1FQyAgIChoZXgpCQlVbml0ZWQgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkLgotMDAyNEVDICAgICAoYmFzZSAxNikJCVVuaXRlZCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJNS9GLDl0aCBCdWlsZGluZyxTb2Z0d2FyZSBQYXJrLDJuZCBLZWppLXpob25nIFJvYWQsSGlnaC1UZWNoIEluZHVzdHJpYWwgUGFyawotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNC1FRCAgIChoZXgpCQlZVCBFbGVjLiBDbywuTHRkLgotMDAyNEVEICAgICAoYmFzZSAxNikJCVlUIEVsZWMuIENvLC5MdGQuCi0JCQkJQmxvY2sgQiwyIEZsb29yICxCYW8gWWluZyBJbmR1c3RyaWFsIERpc3RyaWN0LAotCQkJCUxvbmcgR2FuZyBMb25nWGksCi0JCQkJV3UgTGlhbiBMdSBTaGVuemhlbiA1MTgxMTYKLQkJCQlDSElOQQotCi0wMC0yNC1FRSAgIChoZXgpCQlXeW5tYXggSW5jLgotMDAyNEVFICAgICAoYmFzZSAxNikJCVd5bm1heCBJbmMuCi0JCQkJMThGLiwgTm8uIDc1LCBTZWMuIDEsIFhpblRhaSA1dGggIFJkLiwKLQkJCQlYaXpoaSAgQ2l0eSwgVGFpcGVpIENvdW50eSAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LUVGICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDI0RUYgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCAgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjQtRjAgICAoaGV4KQkJU2Vhbm9kZXMKLTAwMjRGMCAgICAgKGJhc2UgMTYpCQlTZWFub2RlcwotCQkJCUJhdGltZW50IFBsYXRvbgotCQkJCTI1IEJ2ZCBWaWN0b3IgSHVnbwotCQkJCUNvbG9taWVycyAgMzE3NzAKLQkJCQlGUkFOQ0UKLQotMDAtMjQtRjEgICAoaGV4KQkJU2hlbnpoZW4gRmFuaGFpIFNhbmppYW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAyNEYxICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEZhbmhhaSBTYW5qaWFuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkzRqOsR3VhbmdjYWkgWGludGlhbmRpIEJ1aWxkaW5nLE5hbnNoYW4gUmQsTmFuc2hhbiwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU0Ci0JCQkJQ0hJTkEKLQotMDAtMjQtRjIgICAoaGV4KQkJVW5pcGhvbmUgVGVsZWNvbW11bmljYXRpb24gQ28uLCBMdGQuCi0wMDI0RjIgICAgIChiYXNlIDE2KQkJVW5pcGhvbmUgVGVsZWNvbW11bmljYXRpb24gQ28uLCBMdGQuCi0JCQkJTm8uIDI1LCBDaHUtS3VuZyAzcmQgTGFuZSwgQ2h1LUhvdSBUc3VuZywgSmVuLVd1IEhzaWFuZywKLQkJCQlLYW9oc2l1bmcgSHNpZW4gIDgxNDQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC1GMyAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjRGMyAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyBLWU9UTyA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTI0LUY0ICAgKGhleCkJCUthbWluYXJpbyBUZWNobm9sb2dpZXMgTHRkLgotMDAyNEY0ICAgICAoYmFzZSAxNikJCUthbWluYXJpbyBUZWNobm9sb2dpZXMgTHRkLgotCQkJCVlhdGFtIEluZHVzdHJpYWwgUGFyawotCQkJCUNQQyBCdWlsZGluZwotCQkJCVlva25lYW0gSVNSQUVMIDIwNjkyCi0JCQkJSVNSQUVMCi0KLTAwLTI0LUY1ICAgKGhleCkJCU5EUyBTdXJnaWNhbCBJbWFnaW5nCi0wMDI0RjUgICAgIChiYXNlIDE2KQkJTkRTIFN1cmdpY2FsIEltYWdpbmcKLQkJCQk1NzUwIEhlbGx5ZXIgQXZlLgotCQkJCVNhbiBKb3NlIENBLiA5NTEzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtRjYgICAoaGV4KQkJTUlZT1NISSBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotMDAyNEY2ICAgICAoYmFzZSAxNikJCU1JWU9TSEkgRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04KLQkJCQkzLTEzLTIxIEtVU0hJUk8KLQkJCQlLQVdBTklTSEktQ0lUWSBIWU9HTy1QUkVGLiA2NjYtMDAyNAotCQkJCUpBUEFOCi0KLTAwLTI0LUY3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjRGNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1GOCAgIChoZXgpCQlUZWNobmljYWwgU29sdXRpb25zIENvbXBhbnkgTHRkLgotMDAyNEY4ICAgICAoYmFzZSAxNikJCVRlY2huaWNhbCBTb2x1dGlvbnMgQ29tcGFueSBMdGQuCi0JCQkJQm94IDMxNzUwCi0JCQkJV2hpdGVob3JzZSBZdWtvbiBZMUEgNkwzCi0JCQkJQ0FOQURBCi0KLTAwLTI0LUY5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjRGOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1GQSAgIChoZXgpCQlIaWxnZXIgdS4gS2VybiBHTUJICi0wMDI0RkEgICAgIChiYXNlIDE2KQkJSGlsZ2VyIHUuIEtlcm4gR01CSAotCQkJCUthZWZlcnRhbGVyIFN0cmFzc2UgMjUzLTI1NQotCQkJCU1hbm5oZWltIEJhZGVuLVd1ZXJ0dGVtYmVyZyA2ODE2NwotCQkJCUdFUk1BTlkKLQotMDAtMjQtRkIgICAoaGV4KQkJUFJJVkFURQotMDAyNEZCICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yNC1GQyAgIChoZXgpCQlRdW9QaW4gQ28uLCBMdGQuCi0wMDI0RkMgICAgIChiYXNlIDE2KQkJUXVvUGluIENvLiwgTHRkLgotCQkJCSMxMDksIFImRCBDZW50ZXIgZm9yIEFkdmFuY2VkIFRlY2hub2xvZ3kgNjggWWF0YXAtZG9uZyBCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0gS3l1bmdraS1kbyA0NjMtODE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LUZEICAgKGhleCkJCVByb3NpbGllbnQgVGVjaG5vbG9naWVzIEFCCi0wMDI0RkQgICAgIChiYXNlIDE2KQkJUHJvc2lsaWVudCBUZWNobm9sb2dpZXMgQUIKLQkJCQnFcnN0YeRuZ3N25GdlbiAyNSAoM3JkIGZsb29yKSwgKEJveCA0NzIzMSkKLQkJCQlTdG9ja2hvbG0gIFNFLTEwMDc0Ci0JCQkJU1dFREVOCi0KLTAwLTI0LUZFICAgKGhleCkJCUFWTSBHbWJICi0wMDI0RkUgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotMDAtMjQtRkYgICAoaGV4KQkJUUxvZ2ljIENvcnBvcmF0aW9uCi0wMDI0RkYgICAgIChiYXNlIDE2KQkJUUxvZ2ljIENvcnBvcmF0aW9uCi0JCQkJMjY2NTAgQWxpc28gVmllam8gUGFya3dheQotCQkJCUFsaXNvIFZpZWpvIENBIDkyNjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0wMCAgIChoZXgpCQlBcHBsZSwgSW5jCi0wMDI1MDAgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMDEgICAoaGV4KQkJSlNDICJTdXBlcnRlbCIKLTAwMjUwMSAgICAgKGJhc2UgMTYpCQlKU0MgIlN1cGVydGVsIgotCQkJCTM4QSBQZXRyb2dyYWRza2F5YSBlbWIuCi0JCQkJU3QuUGV0ZXJzYnVyZyAgMTk3MTAxCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTI1LTAyICAgKGhleCkJCU5hdHVyYWxQb2ludAotMDAyNTAyICAgICAoYmFzZSAxNikJCU5hdHVyYWxQb2ludAotCQkJCVBPIEJveCAyMzE3Ci0JCQkJQ29ydmFsbGlzIE9SIDk3MzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0wMyAgIChoZXgpCQlJQk0gQ29ycAotMDAyNTAzICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMjA1MSBNaXNzaW9uIENvbGxlZ2UgQmx2ZCAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMDQgICAoaGV4KQkJVmFsaWFudCBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0wMDI1MDQgICAgIChiYXNlIDE2KQkJVmFsaWFudCBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0JCQkJNzEtMSBTaGl2YWppIE1hcmcKLQkJCQlOZXcgRGVsaGkgRGVsaGkgMTEwMDE1Ci0JCQkJSU5ESUEKLQotMDAtMjUtMDUgICAoaGV4KQkJZWtzIEVuZ2VsIEdtYkggJiBDby4gS0cKLTAwMjUwNSAgICAgKGJhc2UgMTYpCQlla3MgRW5nZWwgR21iSCAmIENvLiBLRwotCQkJCVNjaHVldHplbnN0cmFzc2UgMgotCQkJCVdlbmRlbi1IaWxsbWlja2UgTlJXIDU3NDgyCi0JCQkJR0VSTUFOWQotCi0wMC0yNS0wNiAgIChoZXgpCQlBLkkuIEFOVElUQUNDSEVHR0lPIElUQUxJQSBTUkwKLTAwMjUwNiAgICAgKGJhc2UgMTYpCQlBLkkuIEFOVElUQUNDSEVHR0lPIElUQUxJQSBTUkwKLQkJCQlWSUNPTE8gREVMTEUgREFNRSA0Ci0JCQkJQk9MT0dOQSAgNDAxMjQKLQkJCQlJVEFMWQotCi0wMC0yNS0wNyAgIChoZXgpCQlBU1RBSyBJbmMuCi0wMDI1MDcgICAgIChiYXNlIDE2KQkJQVNUQUsgSW5jLgotCQkJCTE5MTEgSGFydG9nIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTA4ICAgKGhleCkJCU1hcXVldCBDYXJkaW9wdWxtb25hcnkgQUcKLTAwMjUwOCAgICAgKGJhc2UgMTYpCQlNYXF1ZXQgQ2FyZGlvcHVsbW9uYXJ5IEFHCi0JCQkJSGVjaGluZ2VyIFN0cmFzc2UgMzgKLQkJCQlIaXJybGluZ2VuICA3MjE0NQotCQkJCUdFUk1BTlkKLQotMDAtMjUtMDkgICAoaGV4KQkJU0hBUkVUUk9OSUMgR3JvdXAgTFRECi0wMDI1MDkgICAgIChiYXNlIDE2KQkJU0hBUkVUUk9OSUMgR3JvdXAgTFRECi0JCQkJU2hhSmluZyxCYW8nYW4gWm9uZSwKLQkJCQlTaGVuWmhlbiBHdWFuZ2RvbmcgNTE4MTA0Ci0JCQkJQ0hJTkEKLQotMDAtMjUtMEEgICAoaGV4KQkJU2VjdXJpdHkgRXhwZXJ0IENvLiBMdGQKLTAwMjUwQSAgICAgKGJhc2UgMTYpCQlTZWN1cml0eSBFeHBlcnQgQ28uIEx0ZAotCQkJCThGLTMsIE5vLjIsIEppYW4gOHRoIFJkLiwKLQkJCQlKaG9uZ2hlIFRhaXBlaSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTBCICAgKGhleCkJCUNFTlRST0ZBQ1RPUiAgSU5DCi0wMDI1MEIgICAgIChiYXNlIDE2KQkJQ0VOVFJPRkFDVE9SICBJTkMKLQkJCQlSb2FkIFRvd24sIFRvcnRvbGEsIFAuTy5Cb3ggMzE2MSwKLQkJCQlUb3J0b2xhICAxOTQyOTUKLQkJCQlWSVJHSU4gSVNMQU5EUywgQlJJVElTSAotCi0wMC0yNS0wQyAgIChoZXgpCQlFbmVydHJhYwotMDAyNTBDICAgICAoYmFzZSAxNikJCUVuZXJ0cmFjCi0JCQkJOTQgUml2ZXIgUmQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlIdWRzb24gTkggMDMwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTBEICAgKGhleCkJCUdaVCBUZWxrb20tVGVsbW9yIHNwLiB6IG8uby4KLTAwMjUwRCAgICAgKGJhc2UgMTYpCQlHWlQgVGVsa29tLVRlbG1vciBzcC4geiBvLm8uCi0JCQkJTWlja2lld2ljemEgNS83Ci0JCQkJR2RhbnNrIHBvbW9yc2tpZSA4MC00MjUKLQkJCQlQT0xBTkQKLQotMDAtMjUtMEUgICAoaGV4KQkJZ3QgZ2VybWFuIHRlbGVtYXRpY3MgZ21iaAotMDAyNTBFICAgICAoYmFzZSAxNikJCWd0IGdlcm1hbiB0ZWxlbWF0aWNzIGdtYmgKLQkJCQlSYW5rZXN0cmFzc2UgMjYKLQkJCQlCZXJsaW4gIEQtMTA3ODkKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTBGICAgKGhleCkJCU9uLVJhbXAgV2lyZWxlc3MsIEluYy4KLTAwMjUwRiAgICAgKGJhc2UgMTYpCQlPbi1SYW1wIFdpcmVsZXNzLCBJbmMuCi0JCQkJMTY4ODUgV2VzdCBCZXJuYXJkbyBEcml2ZQotCQkJCVN1aXRlIDI1NQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMTAgICAoaGV4KQkJUGljby1UZXNsYSBNYWduZXRpYyBUaGVyYXBpZXMKLTAwMjUxMCAgICAgKGJhc2UgMTYpCQlQaWNvLVRlc2xhIE1hZ25ldGljIFRoZXJhcGllcwotCQkJCTc4NTIgU291dGggRWxhdGkKLQkJCQkjMjAyCi0JCQkJTGl0dGxldG9uIENPIDgwMTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0xMSAgIChoZXgpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTSBDTy4sIExURC4KLTAwMjUxMSAgICAgKGJhc2UgMTYpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTSBDTy4sIExURC4KLQkJCQlOTy4gMjM5LCBTZWMuIDIsIFRpIERpbmcgQmx2ZC4KLQkJCQlUYWlwZWkgVGFpd2FuIDExNDkzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS0xMiAgIChoZXgpCQlaVEUgQ29ycG9yYXRpb24KLTAwMjUxMiAgICAgKGJhc2UgMTYpCQlaVEUgQ29ycG9yYXRpb24KLQkJCQkxMkYsIFImRCBCdWlsZGluZywgWnRlLCBIaS1UZWNoIEluZHVzdHJpYWwgUGFyawotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNS0xMyAgIChoZXgpCQlDWFAgRElHSVRBTCBCVgotMDAyNTEzICAgICAoYmFzZSAxNikJCUNYUCBESUdJVEFMIEJWCi0JCQkJRGUgUmV1bHZlciA5N0EKLQkJCQlFbnNjaGVkZSAgNzU0NFJUCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjUtMTQgICAoaGV4KQkJUEMgV29ydGggSW50J2wgQ28uLCBMdGQuCi0wMDI1MTQgICAgIChiYXNlIDE2KQkJUEMgV29ydGggSW50J2wgQ28uLCBMdGQuCi0JCQkJMThGLCBOby4xMDAsIEhzaW4tVGFpLVd1IFJkLiwgU2VjLiAxLAotCQkJCUhzaS1DaGloLCBUYWlwZWkgMjIxMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTE1ICAgKGhleCkJCVNGUgotMDAyNTE1ICAgICAoYmFzZSAxNikJCVNGUgotCQkJCTQyIFF1YWkgZHUgcG9pbnQgZHUgam91cgotCQkJCUJvdWxvZ25lIGJpbGxhbmNvdXJ0IC4gOTI2NTkKLQkJCQlGUkFOQ0UKLQotMDAtMjUtMTYgICAoaGV4KQkJSW50ZWdyYXRlZCBEZXNpZ24gVG9vbHMsIEluYy4KLTAwMjUxNiAgICAgKGJhc2UgMTYpCQlJbnRlZ3JhdGVkIERlc2lnbiBUb29scywgSW5jLgotCQkJCTEyMDIgRSBQYXJrIEF2ZW51ZQotCQkJCVRhbGxhaGFzc2VlIEZMIDMyMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0xNyAgIChoZXgpCQlWZW5udGlzLCBMTEMKLTAwMjUxNyAgICAgKGJhc2UgMTYpCQlWZW5udGlzLCBMTEMKLQkJCQkxMTMwMSBKYW1lcyBTdHJlZXQKLQkJCQlIb2xsYW5kIE1JIDQ5NDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0xOCAgIChoZXgpCQlQb3dlciBQTFVTIENvbW11bmljYXRpb25zIEFHCi0wMDI1MTggICAgIChiYXNlIDE2KQkJUG93ZXIgUExVUyBDb21tdW5pY2F0aW9ucyBBRwotCQkJCUFtIEV4ZXJ6aWVycGxhdHogMgotCQkJCU1hbm5oZWltIEJhZGVuIFd1ZXJ0dGVtYmVyZyA2ODE2NwotCQkJCUdFUk1BTlkKLQotMDAtMjUtMTkgICAoaGV4KQkJVmlhYXMgSW5jCi0wMDI1MTkgICAgIChiYXNlIDE2KQkJVmlhYXMgSW5jCi0JCQkJMzE3NSBTb3V0aCBXaW5jaGVzdGVyIEJsdmQKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMUEgICAoaGV4KQkJUHNpYmVyIERhdGEgU3lzdGVtcyBJbmMuCi0wMDI1MUEgICAgIChiYXNlIDE2KQkJUHNpYmVyIERhdGEgU3lzdGVtcyBJbmMuCi0JCQkJNzA3NS1LIE1pc3Npb24gR29yZ2UgUmQKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTFCICAgKGhleCkJCVBoaWxpcHMgQ2FyZVNlcnZhbnQKLTAwMjUxQiAgICAgKGJhc2UgMTYpCQlQaGlsaXBzIENhcmVTZXJ2YW50Ci0JCQkJSGlnaCBUZWNoIENhbXB1cyAyNwotCQkJCUVpbmRob3ZlbiBOb29yZC1CcmFiYW50IDU2NTYgQUUKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yNS0xQyAgIChoZXgpCQlFRFQKLTAwMjUxQyAgICAgKGJhc2UgMTYpCQlFRFQKLQkJCQkxNDAwIFNXIENvbXB0b24KLQkJCQlTdWl0ZSAzMTUKLQkJCQlCZWF2ZXJ0b24gT1IgOTcwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTFEICAgKGhleCkJCURTQSBFbmNvcmUsIExMQwotMDAyNTFEICAgICAoYmFzZSAxNikJCURTQSBFbmNvcmUsIExMQwotCQkJCTUwIFBvY29ubyBSZAotCQkJCUJyb29rZmllbGQgQ1QgMDY4MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTFFICAgKGhleCkJCVJPVEVMIFRFQ0hOT0xPR0lFUwotMDAyNTFFICAgICAoYmFzZSAxNikJCVJPVEVMIFRFQ0hOT0xPR0lFUwotCQkJCUNFVklaTElERVJFIDE0LkNEIE5POjIvMTkgQkFMR0FUCi0JCQkJQU5LQVJBICAwNjUyMAotCQkJCVRVUktFWQotCi0wMC0yNS0xRiAgIChoZXgpCQlaWU5VUyBWSVNJT04gSU5DLgotMDAyNTFGICAgICAoYmFzZSAxNikJCVpZTlVTIFZJU0lPTiBJTkMuCi0JCQkJMS0xLTctMUEKLQkJCQlTQUdBTUlIQVJBIEtBTkFHQVdBIDIyOS0wMDM5Ci0JCQkJSkFQQU4KLQotMDAtMjUtMjAgICAoaGV4KQkJU01BIFJhaWx3YXkgVGVjaG5vbG9neSBHbWJICi0wMDI1MjAgICAgIChiYXNlIDE2KQkJU01BIFJhaWx3YXkgVGVjaG5vbG9neSBHbWJICi0JCQkJTWlyYW1zdHIuIDg3Ci0JCQkJS2Fzc2VsIEhlc3NlIDM0MTIzCi0JCQkJR0VSTUFOWQotCi0wMC0yNS0yMSAgIChoZXgpCQlMb2dpdGVrIEVsZWN0cm9uaWMgU3lzdGVtcywgSW5jLgotMDAyNTIxICAgICAoYmFzZSAxNikJCUxvZ2l0ZWsgRWxlY3Ryb25pYyBTeXN0ZW1zLCBJbmMuCi0JCQkJNTYyMiBFZGdlbW9vciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTIyICAgKGhleCkJCUFTUm9jayBJbmNvcnBvcmF0aW9uCi0wMDI1MjIgICAgIChiYXNlIDE2KQkJQVNSb2NrIEluY29ycG9yYXRpb24KLQkJCQkyRi4sIE5vLiAzNywgU2VjLiAyLCBKaG9uZ3lhbmcgUy4gUmQuLCBCZWl0b3UgRGlzdHJpY3QsCi0JCQkJVGFpcGVpIFRhaXdhbiAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTIzICAgKGhleCkJCU9DUCBJbmMuCi0wMDI1MjMgICAgIChiYXNlIDE2KQkJT0NQIEluYy4KLQkJCQkxODQ5NSBTIERpeGllIEh3eSAgICBQTUIgMTA3Ci0JCQkJTWlhbWkgRmxvcmlkYSAzMzE1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMjQgICAoaGV4KQkJTGlnaHRjb21tIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMjUyNCAgICAgKGJhc2UgMTYpCQlMaWdodGNvbW0gVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTkvRi4sSGktVGVjaCBWZW50dXJlIFBhcmsgVG93ZXIgQSwKLQkJCQlUaWFuIGFuIEN5YmVyIFBhcmssRnV0aWFuCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTI1LTI1ICAgKGhleCkJCUNURVJBIE5ldHdvcmtzIEx0ZC4KLTAwMjUyNSAgICAgKGJhc2UgMTYpCQlDVEVSQSBOZXR3b3JrcyBMdGQuCi0JCQkJMjQgSW1iZXIgU3QuCi0JCQkJUGV0YWNoLVRpa3ZhICA0OTUxMTEKLQkJCQlJU1JBRUwKLQotMDAtMjUtMjYgICAoaGV4KQkJR2VudWluZSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDI1MjYgICAgIChiYXNlIDE2KQkJR2VudWluZSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJS2xpbmdlbG5iZXJnIEJsZGcuCi0JCQkJMS0xMy0xMiBTaGluLVlva29oYW1hIEtvdWhva3Uta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjItMDAzMwotCQkJCUpBUEFOCi0KLTAwLTI1LTI3ICAgKGhleCkJCUJpdHJvZGUgQ29ycC4KLTAwMjUyNyAgICAgKGJhc2UgMTYpCQlCaXRyb2RlIENvcnAuCi0JCQkJMTY0MiBNYW51ZmFjdHVyZXJzIERyLgotCQkJCUZlbnRvbiBNTyA2MzAyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMjggICAoaGV4KQkJRGFpZG8gU2lnbmFsIENvLiwgTHRkLgotMDAyNTI4ICAgICAoYmFzZSAxNikJCURhaWRvIFNpZ25hbCBDby4sIEx0ZC4KLQkJCQkyLTIwLTIKLQkJCQlOYWthaWtlZ2FtaQotCQkJCU9odGEta3UgVE9LWU8gMTQ2LTg2NzgKLQkJCQlKQVBBTgotCi0wMC0yNS0yOSAgIChoZXgpCQlDT01FTElUIEdST1VQIFMuUC5BCi0wMDI1MjkgICAgIChiYXNlIDE2KQkJQ09NRUxJVCBHUk9VUCBTLlAuQQotCQkJCURPTiBBUlJJR09OSSBOLiA1Ci0JCQkJU0FOIExPUkVOWk8sIFJPVkVUVEEgQkVSR0FNTyAyNDAyMAotCQkJCUlUQUxZCi0KLTAwLTI1LTJBICAgKGhleCkJCUNoZW5nZHUgR2VlWWEgVGVjaG5vbG9neSBDby4sTFRECi0wMDI1MkEgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSBHZWVZYSBUZWNobm9sb2d5IENvLixMVEQKLQkJCQk1MCBTaHV4aSBSb2FkLAotCQkJCUNoZW5nZHUgU2lDaHVhbiA2MTAwOTEKLQkJCQlDSElOQQotCi0wMC0yNS0yQiAgIChoZXgpCQlTdGlybGluZyBFbmVyZ3kgU3lzdGVtcwotMDAyNTJCICAgICAoYmFzZSAxNikJCVN0aXJsaW5nIEVuZXJneSBTeXN0ZW1zCi0JCQkJU2FuZGlhIE5hdGlvbmFsIExhYnMgLSBOU1RURgotCQkJCVBPIEJveCA1ODAwIE1TIDExMjcKLQkJCQlBbGJ1cXVlcnF1ZSBOTSA4NzE4NS0xMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0yQyAgIChoZXgpCQlFbnRvdXJhZ2UgU3lzdGVtcywgSW5jLgotMDAyNTJDICAgICAoYmFzZSAxNikJCUVudG91cmFnZSBTeXN0ZW1zLCBJbmMuCi0JCQkJNzkwMSBKb25lcyBCcmFuY2ggRHJpdmUKLQkJCQlTdWl0ZSA3MDAKLQkJCQlNY0xlYW4gVmlyZ2luaWEgMjIxMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTJEICAgKGhleCkJCUtpcnl1bmcgRWxlY3Ryb25pY3MKLTAwMjUyRCAgICAgKGJhc2UgMTYpCQlLaXJ5dW5nIEVsZWN0cm9uaWNzCi0JCQkJS2lyeXVuZyBCbGRnLiA2ODYtNzAsIFNpbmRhZWJhbmctZG9uZwotCQkJCURvbmdqYWstZ3UsCi0JCQkJU2VvdWwgIDE1Ni0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtMkUgICAoaGV4KQkJQ2lzY28gU1BWVEcKLTAwMjUyRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0yRiAgIChoZXgpCQlFbmVyZ3ksIEluYy4KLTAwMjUyRiAgICAgKGJhc2UgMTYpCQlFbmVyZ3ksIEluYy4KLQkJCQkzMjk3IFBhY2lmaWMgU3RyZWV0Ci0JCQkJQ2hhcmxlc3RvbiBTQyAyOTQxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMzAgICAoaGV4KQkJQWV0YXMgU3lzdGVtcyBJbmMuCi0wMDI1MzAgICAgIChiYXNlIDE2KQkJQWV0YXMgU3lzdGVtcyBJbmMuCi0JCQkJM0EzLCBOby4gMSwgTGlIc2luIFJvYWQgSQotCQkJCUhzaW5DaHUgVGFpd2FuIDMwMDc4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS0zMSAgIChoZXgpCQlDbG91ZCBFbmdpbmVzLCBJbmMuCi0wMDI1MzEgICAgIChiYXNlIDE2KQkJQ2xvdWQgRW5naW5lcywgSW5jLgotCQkJCTg1NyBNb250Z29tZXJ5IFN0cmVldAotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTMyICAgKGhleCkJCURpZ2l0YWwgUmVjb3JkZXJzCi0wMDI1MzIgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBSZWNvcmRlcnMKLQkJCQk0MDE4IFBhdHJpb3QgRHJpdmUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlEdXJoYW0gTkMgMjc3MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTMzICAgKGhleCkJCVdJVFRFTlNURUlOIEFHCi0wMDI1MzMgICAgIChiYXNlIDE2KQkJV0lUVEVOU1RFSU4gQUcKLQkJCQlXYWx0ZXItV2l0dGVuc3RlaW4tU3RyLiAxCi0JCQkJSWdlcnNoZWltICA5Nzk5OQotCQkJCUdFUk1BTlkKLQotMDAtMjUtMzUgICAoaGV4KQkJTWluaW1heCBHbWJIICYgQ28gS0cKLTAwMjUzNSAgICAgKGJhc2UgMTYpCQlNaW5pbWF4IEdtYkggJiBDbyBLRwotCQkJCUluZHVzdHJpZXN0cmFzc2UgMTAvMTIKLQkJCQlCYWQgT2xkZXNsb2UgU0ggMjM4NDAKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTM2ICAgKGhleCkJCU9raSBFbGVjdHJpYyBJbmR1c3RyeSBDby4sIEx0ZC4KLTAwMjUzNiAgICAgKGJhc2UgMTYpCQlPa2kgRWxlY3RyaWMgSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJMS0xNi04IENodW91Ci0JCQkJV2FyYWJpLXNoaSBTYWl0YW1hIDMzNS04NTEwCi0JCQkJSkFQQU4KLQotMDAtMjUtMzcgICAoaGV4KQkJUnVuY29tIFRlY2hub2xvZ2llcyBMdGQuCi0wMDI1MzcgICAgIChiYXNlIDE2KQkJUnVuY29tIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJMTEgTW9zaGUgTGV2aSBTdHIuIDExdGggRmxyLgotCQkJCVVNSSBCdWlsZGluZwotCQkJCVJpc2hvbiBMZSBaaW9uICA3NTY1OAotCQkJCUlTUkFFTAotCi0wMC0yNS0zOCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLiwgTWVtb3J5IERpdmlzaW9uCi0wMDI1MzggICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4sIE1lbW9yeSBEaXZpc2lvbgotCQkJCVNhbiAjMTYgQmFud29sLURvbmcsIFRhZWFuLUd1Ci0JCQkJSHdhc3VuZyBDaXR5IEd5ZW9uZ2dpIERvIDQ0NS03MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtMzkgICAoaGV4KQkJSWZUQSBHbWJICi0wMDI1MzkgICAgIChiYXNlIDE2KQkJSWZUQSBHbWJICi0JCQkJSW5kdXN0cmllc3RyYXNzZSAzMwotCQkJCUdyb2ViZW56ZWxsIEJhdmFyaWEgODIxOTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTNBICAgKGhleCkJCUNFVkEsIEx0ZC4KLTAwMjUzQSAgICAgKGJhc2UgMTYpCQlDRVZBLCBMdGQuCi0JCQkJMiBNYXNraXQgU3RyZWV0LgotCQkJCVAuTy4gQm94IDIwNjgKLQkJCQlIZXJ6ZWxpYSAgNDYxMjAKLQkJCQlJU1JBRUwKLQotMDAtMjUtM0IgICAoaGV4KQkJZGluIERpZXRtYXIgTm9ja2VyIEZhY2lsaXR5bWFuYWdlbWVudCBHbWJICi0wMDI1M0IgICAgIChiYXNlIDE2KQkJZGluIERpZXRtYXIgTm9ja2VyIEZhY2lsaXR5bWFuYWdlbWVudCBHbWJICi0JCQkJS290emluYXN0cmFzc2UgNQotCQkJCUxpbnogVXBwZXIgQXVzdHJpYSA0MDMwCi0JCQkJQVVTVFJJQQotCi0wMC0yNS0zQyAgIChoZXgpCQkyV2lyZQotMDAyNTNDICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtM0QgICAoaGV4KQkJRFJTIENvbnNvbGlkYXRlZCBDb250cm9scwotMDAyNTNEICAgICAoYmFzZSAxNikJCURSUyBDb25zb2xpZGF0ZWQgQ29udHJvbHMKLQkJCQkyMSBTb3V0aCBTdHJlZXQKLQkJCQlEYW5idXJ5IENUIDA2ODEwLTgxNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTNFICAgKGhleCkJCVNlbnN1cyBNZXRlcmluZyBTeXN0ZW1zCi0wMDI1M0UgICAgIChiYXNlIDE2KQkJU2Vuc3VzIE1ldGVyaW5nIFN5c3RlbXMKLQkJCQk5OTQxIFcuIEVtZXJhbGQgU3RyZWV0Ci0JCQkJQm9pc2UgSWRhaG8gODM3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTQwICAgKGhleCkJCVF1YXNhciBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjU0MCAgICAgKGJhc2UgMTYpCQlRdWFzYXIgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTcwMSBCYXJyZXR0IExha2VzIEJvdWxldmFyZAotCQkJCVN1aXRlIDE2MAotCQkJCUtlbm5lc2F3IEdBIDMwMTQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS00MSAgIChoZXgpCQlNYXF1ZXQgQ3JpdGljYWwgQ2FyZSBBQgotMDAyNTQxICAgICAoYmFzZSAxNikJCU1hcXVldCBDcml0aWNhbCBDYXJlIEFCCi0JCQkJUvZudGdlbnbkZ2VuIDIKLQkJCQlTb2xuYSAgU0UtMTcxIDk1Ci0JCQkJU1dFREVOCi0KLTAwLTI1LTQyICAgKGhleCkJCVBpdHRhc29mdAotMDAyNTQyICAgICAoYmFzZSAxNikJCVBpdHRhc29mdAotCQkJCSM5MTMgRGFlcnl1bmcgVGVjaG5vIFRvd24gOHRoIDQ4MS0xMWdhCi0JCQkJR2FzYW4tZG9uZwotCQkJCUdldW1jaGVvbi1ndSBTZW91bCAxNTMtNzc1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LTQzICAgKGhleCkJCU1PTkVZVEVDSAotMDAyNTQzICAgICAoYmFzZSAxNikJCU1PTkVZVEVDSAotCQkJCVJ1YSBHdWlyYXRpbmdhIDkzMSB1bi4gMTAzCi0JCQkJQ2hhY2FyYSBJbmdsZXNhCi0JCQkJU2FvIFBhdWxvIFNQIDA0MTQxLTAwMQotCQkJCUJSQVpJTAotCi0wMC0yNS00NCAgIChoZXgpCQlMb0phY2sgQ29ycG9yYXRpb24KLTAwMjU0NCAgICAgKGJhc2UgMTYpCQlMb0phY2sgQ29ycG9yYXRpb24KLQkJCQk3ODAgRGVkaGFtIFN0cmVldAotCQkJCU1BIDAyMDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS00NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI1NDUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNDYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNTQ2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTQ3ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI1NDcgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTI1LTQ4ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI1NDggICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTI1LTQ5ICAgKGhleCkJCUplb3JpY2ggVGVjaC4gQ28uLEx0ZC4KLTAwMjU0OSAgICAgKGJhc2UgMTYpCQlKZW9yaWNoIFRlY2guIENvLixMdGQuCi0JCQkJNEYuLCBOby42LCBMbi4gNzAsIFNlYy4gMiwgQWNhZGVtaWEgUmQuLCBOYW5nYW5nIERpc3RyaWN0LCBUYWlwZWkgQ2l0eSAxMTUsIFRhaXdhbiAoUi5PLkMuKQotCQkJCVRhaXBlaSBUYWl3YW4gMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS00QSAgIChoZXgpCQlSaW5nQ3ViZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjU0QSAgICAgKGJhc2UgMTYpCQlSaW5nQ3ViZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMDAgV2VzdCBFdmVseW4gQXZlLCBTdWl0ZSAyMTAKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS00QiAgIChoZXgpCQlBcHBsZSwgSW5jCi0wMDI1NEIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCWN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNEMgICAoaGV4KQkJVmlkZW9uIENlbnRyYWwsIEluYy4KLTAwMjU0QyAgICAgKGJhc2UgMTYpCQlWaWRlb24gQ2VudHJhbCwgSW5jLgotCQkJCTIxNzEgU2FuZHkgRHJpdmUKLQkJCQlTdGF0ZSBDb2xsZWdlIFBBIDE2ODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS00RCAgIChoZXgpCQlTaW5nYXBvcmUgVGVjaG5vbG9naWVzIEVsZWN0cm9uaWNzIExpbWl0ZWQKLTAwMjU0RCAgICAgKGJhc2UgMTYpCQlTaW5nYXBvcmUgVGVjaG5vbG9naWVzIEVsZWN0cm9uaWNzIExpbWl0ZWQKLQkJCQkyNCBBbmcgTW8gS2lvCi0JCQkJU3RyZWV0IDY1Ci0JCQkJNTY5MDYxCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTI1LTRFICAgKGhleCkJCVZlcnRleCBXaXJlbGVzcyBDby4sIEx0ZC4KLTAwMjU0RSAgICAgKGJhc2UgMTYpCQlWZXJ0ZXggV2lyZWxlc3MgQ28uLCBMdGQuCi0JCQkJNUYsIFNlb2h5ZW9uIFBsYXphLCAyNTQtNSwgU2VvaHllb24tZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtNEYgICAoaGV4KQkJRUxFVFRST0xBQiBTcmwKLTAwMjU0RiAgICAgKGJhc2UgMTYpCQlFTEVUVFJPTEFCIFNybAotCQkJCVZpYSBEZWxsJ0luZHVzdHJpYSAyNQotCQkJCVNhbiBWZW5kZW1pYW5vIFRyZXZpc28gMzEwMjAKLQkJCQlJVEFMWQotCi0wMC0yNS01MCAgIChoZXgpCQlSaXZlcmJlZCBUZWNobm9sb2d5Ci0wMDI1NTAgICAgIChiYXNlIDE2KQkJUml2ZXJiZWQgVGVjaG5vbG9neQotCQkJCTEyNSBDYW1icmlkZ2UgUGFyayBEcml2ZQotCQkJCUNhbWJyaWRnZSBNQSAwMjE0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNTEgICAoaGV4KQkJU0UtRWxla3Ryb25pYyBHbWJICi0wMDI1NTEgICAgIChiYXNlIDE2KQkJU0UtRWxla3Ryb25pYyBHbWJICi0JCQkJRXl0aHN0ci4gMTYKLQkJCQlHb2VwcGluZ2VuICA3MzAzNwotCQkJCUdFUk1BTlkKLQotMDAtMjUtNTIgICAoaGV4KQkJVlhJIENPUlBPUkFUSU9OCi0wMDI1NTIgICAgIChiYXNlIDE2KQkJVlhJIENPUlBPUkFUSU9OCi0JCQkJT25lIEZyb250IFNyZWV0Ci0JCQkJUm9sbGluc2ZvcmQgTkggMDM4NjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTUzICAgKGhleCkJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUwotMDAyNTUzICAgICAoYmFzZSAxNikJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUwotCQkJCVZJQUxFIFNBUkNBIDIyMgotCQkJCU1JTEFOTyBJVEFMWSAyMDEyNgotCQkJCUlUQUxZCi0KLTAwLTI1LTU0ICAgKGhleCkJCVBpeGVsOCBOZXR3b3JrcwotMDAyNTU0ICAgICAoYmFzZSAxNikJCVBpeGVsOCBOZXR3b3JrcwotCQkJCTIyIEdyZWF0IE9ha3MgQmx2ZCwgU3VpdGUgMTUwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTU1ICAgKGhleCkJCVZpc29uaWMgVGVjaG5vbG9naWVzIDE5OTMgTHRkCi0wMDI1NTUgICAgIChiYXNlIDE2KQkJVmlzb25pYyBUZWNobm9sb2dpZXMgMTk5MyBMdGQKLQkJCQkyMyBIYWJhcnplbCBzdCcKLQkJCQlUZWwgLSBBdml2ICA2OTcxMAotCQkJCUlTUkFFTAotCi0wMC0yNS01NiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAyNTU2ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJTm8uMTkyNSwgTmFubGUgUm9hZAotCQkJCVNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lCi0JCQkJU2hhbmdIYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLTAwLTI1LTU3ICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbgotMDAyNTU3ICAgICAoYmFzZSAxNikJCVJlc2VhcmNoIEluIE1vdGlvbgotCQkJCTQ0MCBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDVXOQotCQkJCUNBTkFEQQotCi0wMC0yNS01OCAgIChoZXgpCQlNUEVESUEKLTAwMjU1OCAgICAgKGJhc2UgMTYpCQlNUEVESUEKLQkJCQlTaGlueW91bmcgVG93ZXIgMTJGIDI0Ni0yCi0JCQkJU2VvaHllb24tZGluZyBCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0gR3llb25nZ2ktZG8gNDYzLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS01OSAgIChoZXgpCQlTeXBoYW4gVGVjaG5vbG9naWVzIEx0ZAotMDAyNTU5ICAgICAoYmFzZSAxNikJCVN5cGhhbiBUZWNobm9sb2dpZXMgTHRkCi0JCQkJVGhlIFdhdGVybWlsbAotCQkJCUJyb3VnaHRvbiBIYWxsCi0JCQkJU2tpcHRvbiBOb3J0aCBZb3Jrc2hpcmUgQkQyMyAzQUcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNS01QSAgIChoZXgpCQlUYW50YWx1cyBTeXN0ZW1zIENvcnAuCi0wMDI1NUEgICAgIChiYXNlIDE2KQkJVGFudGFsdXMgU3lzdGVtcyBDb3JwLgotCQkJCTMwMS0zNDgwIEdpbG1vcmUgV2F5Ci0JCQkJQnVybmFieSBCQyBWNUcgNFkxCi0JCQkJQ0FOQURBCi0KLTAwLTI1LTVCICAgKGhleCkJCUNvYWNoQ29tbSwgTExDCi0wMDI1NUIgICAgIChiYXNlIDE2KQkJQ29hY2hDb21tLCBMTEMKLQkJCQkyMDUgVGVjaG5vbG9neSBQYXJrd2F5Ci0JCQkJQXVidXJuIEFMIDM2ODMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS01QyAgIChoZXgpCQlORUMgQ29ycG9yYXRpb24KLTAwMjU1QyAgICAgKGJhc2UgMTYpCQlORUMgQ29ycG9yYXRpb24KLQkJCQkxNzUzLCBTaGltb251bWFiZSwgTmFrYWhhcmEtS3UsIEthd2FzYWtpCi0JCQkJS2FuYWdhd2EgIDIxMS04NjY2Ci0JCQkJSkFQQU4KLQotMDAtMjUtNUQgICAoaGV4KQkJTW9ybmluZ3N0YXIgQ29ycG9yYXRpb24KLTAwMjU1RCAgICAgKGJhc2UgMTYpCQlNb3JuaW5nc3RhciBDb3Jwb3JhdGlvbgotCQkJCTkwNTUgR3VpbGZvcmQgUmQuCi0JCQkJU3VpdGUgRwotCQkJCUNvbHVtYmlhIE1EIDIxMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS01RSAgIChoZXgpCQlTaGFuZ2hhaSBEYXJlIFRlY2hub2xvZ2llcyBDby4sTHRkLgotMDAyNTVFICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERhcmUgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJMjJGLEluZm8gVGVjaCBCdWlsZGluZywgTm8uMTU1NSxLb25namlhbmcgUm9hZCwKLQkJCQlTaGFuZ2hhaSAyMDAwOTIKLQkJCQlDSElOQQotCi0wMC0yNS01RiAgIChoZXgpCQlTZW5UZWMgQUcKLTAwMjU1RiAgICAgKGJhc2UgMTYpCQlTZW5UZWMgQUcKLQkJCQlSaW5nc3RyYXNzZSAzOQotCQkJCVRoZXJ3aWwgIDQxMDYKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0yNS02MCAgIChoZXgpCQlJYnJpZGdlIE5ldHdvcmtzICYgQ29tbXVuaWNhdGlvbnMgTHRkLgotMDAyNTYwICAgICAoYmFzZSAxNikJCUlicmlkZ2UgTmV0d29ya3MgJiBDb21tdW5pY2F0aW9ucyBMdGQuCi0JCQkJMjgsQmVkZm9yZCBSb2FkIEVhc3QgSGFtCi0JCQkJTG9uZG9uICBFNiAyTk4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNS02MSAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDI1NjEgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQuCi0JCQkJUm9zZXZpbGxlIENhbGlmb3JuaWEgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTYyICAgKGhleCkJCWludGVyYnJvIENvLiBMdGQuCi0wMDI1NjIgICAgIChiYXNlIDE2KQkJaW50ZXJicm8gQ28uIEx0ZC4KLQkJCQk2RiBKb3lhbmcgQi9ELCAxMTMgU2Ftc2VvbmctRG9uZywgR2FuZ25hbS1HdQotCQkJCVNlb3VsICAxMzUtMDkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LTYzICAgKGhleCkJCUx1eHRlcmEgSW5jCi0wMDI1NjMgICAgIChiYXNlIDE2KQkJTHV4dGVyYSBJbmMKLQkJCQkyMzIwLiBDYW1pbm8gVmlkYSBSb2JsZQotCQkJCVN1aXRlIDEwMAotCQkJCUNhcmxzYmFkIENBIDkyMDExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS02NCAgIChoZXgpCQlEZWxsIEluYy4KLTAwMjU2NCAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTY1ICAgKGhleCkJCVZpemltYXggSW5jLgotMDAyNTY1ICAgICAoYmFzZSAxNikJCVZpemltYXggSW5jLgotCQkJCTIyODQsIHJ1ZSBkZSBsYSBQcm92aW5jZQotCQkJCUxvbmd1ZXVpbCBRdeliZWMgSjRHIDFHMQotCQkJCUNBTkFEQQotCi0wMC0yNS02NiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMjU2NiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtNjcgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMDAyNTY3ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtNjggICAoaGV4KQkJU2hlbnpoZW4gSHVhd2VpIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvLiwgTHRkCi0wMDI1NjggICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gSHVhd2VpIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTA4Ci0JCQkJQ0hJTkEKLQotMDAtMjUtNjkgICAoaGV4KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotMDAyNTY5ICAgICAoYmFzZSAxNikJCVNBR0VNIENPTU1VTklDQVRJT04KLQkJCQkxNCBSdWUgUGF1bCBEYXV0aWVyCi0JCQkJVmVsaXp5ICA3ODQ1NwotCQkJCUZSQU5DRQotCi0wMC0yNS02QSAgIChoZXgpCQlpbklUIC0gSW5zdGl0dXQgSW5kdXN0cmlhbCBJVAotMDAyNTZBICAgICAoYmFzZSAxNikJCWluSVQgLSBJbnN0aXR1dCBJbmR1c3RyaWFsIElUCi0JCQkJTGllYmlnc3RyYXNzZSA4NwotCQkJCUxlbWdvIE5vcnRocmhpbmUtV2VzdGZhbGlhIDMyNjU3Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS02QiAgIChoZXgpCQlBVEVOSVggRS5FLiBzLnIubC4KLTAwMjU2QiAgICAgKGJhc2UgMTYpCQlBVEVOSVggRS5FLiBzLnIubC4KLQkJCQlWaWEgVG9ycmljZWxsaSwgMTUvYgotCQkJCVZFUk9OQSBWUiAzNzEzNQotCQkJCUlUQUxZCi0KLTAwLTI1LTZDICAgKGhleCkJCSJBemltdXQiIFByb2R1Y3Rpb24gQXNzb2NpYXRpb24gSlNDCi0wMDI1NkMgICAgIChiYXNlIDE2KQkJIkF6aW11dCIgUHJvZHVjdGlvbiBBc3NvY2lhdGlvbiBKU0MKLQkJCQkyLUIgQXRhZXZhIFN0cmVldAotCQkJCU1ha2hhY2hrYWxhIERhZ2VzdGFuIDM2NzAwNQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yNS02RCAgIChoZXgpCQlCcm9hZGJhbmQgRm9ydW0KLTAwMjU2RCAgICAgKGJhc2UgMTYpCQlCcm9hZGJhbmQgRm9ydW0KLQkJCQk0ODM3NyBGcmVtb250IEJvdWxldmFyZAotCQkJCVN1aXRlIDExNwotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTZFICAgKGhleCkJCVZhbiBCcmVkYSBCLlYuCi0wMDI1NkUgICAgIChiYXNlIDE2KQkJVmFuIEJyZWRhIEIuVi4KLQkJCQlNZXJjdXJpdXN3ZWcgMjEKLQkJCQlCcnVtbWVuIEdlbGRlcmxhbmQgNjk3MSBHVgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI1LTZGICAgKGhleCkJCURhbnRoZXJtIFBvd2VyCi0wMDI1NkYgICAgIChiYXNlIDE2KQkJRGFudGhlcm0gUG93ZXIKLQkJCQlNYXJpZW5seXN0dmVqIDY1Ci0JCQkJU2tpdmUgIDc4MDAKLQkJCQlERU5NQVJLCi0KLTAwLTI1LTcwICAgKGhleCkJCUVhc3Rlcm4gQ29tbXVuaWNhdGlvbnMgQ29tcGFueSBMaW1pdGVkCi0wMDI1NzAgICAgIChiYXNlIDE2KQkJRWFzdGVybiBDb21tdW5pY2F0aW9ucyBDb21wYW55IExpbWl0ZWQKLQkJCQlOby4zOTggV2Vuc2FuIFJvYWQsCi0JCQkJTm8uNjYgRG9uZ3hpbiBSb2FkLFImRCBidWlsZGluZyxCMzExCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDEzCi0JCQkJQ0hJTkEKLQotMDAtMjUtNzEgICAoaGV4KQkJWmhlamlhbmcgVGlhbmxlIERpZ2l0YWwgRWxlY3RyaWMgQ28uLEx0ZAotMDAyNTcxICAgICAoYmFzZSAxNikJCVpoZWppYW5nIFRpYW5sZSBEaWdpdGFsIEVsZWN0cmljIENvLixMdGQKLQkJCQlOby44IFRpYW5sZSBSZCxFY29ub21pYyBEZXZlbG9wbWVudCBab25lCi0JCQkJU2hlbmd6aG91IFpoZWppYW5nIDMxMjQwMAotCQkJCUNISU5BCi0KLTAwLTI1LTcyICAgKGhleCkJCU5lbW8tUSBJbnRlcm5hdGlvbmFsIEFCCi0wMDI1NzIgICAgIChiYXNlIDE2KQkJTmVtby1RIEludGVybmF0aW9uYWwgQUIKLQkJCQlCb3ggMjEwCi0JCQkJU29sbGVudHVuYSAgMTkxMjMKLQkJCQlTV0VERU4KLQotMDAtMjUtNzMgICAoaGV4KQkJU1QgRWxlY3Ryb25pY3MgKEluZm8tU2VjdXJpdHkpIFB0ZSBMdGQKLTAwMjU3MyAgICAgKGJhc2UgMTYpCQlTVCBFbGVjdHJvbmljcyAoSW5mby1TZWN1cml0eSkgUHRlIEx0ZAotCQkJCTEwMCwgSnVyb25nIEVhc3QgU3RyZWV0IDIxLCBTVCBFbGVjdHJvbmljcyBKdXJvbmcgRWFzdCBCbGRnCi0JCQkJNjA5NjAyCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTI1LTc0ICAgKGhleCkJCUtVTklNSSBNRURJQSBERVZJQ0UgQ28uLCBMdGQuCi0wMDI1NzQgICAgIChiYXNlIDE2KQkJS1VOSU1JIE1FRElBIERFVklDRSBDby4sIEx0ZC4KLQkJCQkzIEtJVEFNQUNISURBIFlBTUFaQUtJCi0JCQkJS1VOSU1JLCBEQVRFIEZVS1VTSElNQSA5NjktMTc3MQotCQkJCUpBUEFOCi0KLTAwLTI1LTc1ICAgKGhleCkJCUZpYmVyUGxleCBJbmMKLTAwMjU3NSAgICAgKGJhc2UgMTYpCQlGaWJlclBsZXggSW5jCi0JCQkJMTA4NDAtNDEyIEd1aWxmb3JkIFJkCi0JCQkJQW5uYXBvbGlzIEp1bmN0aW9uIE1EIDIwNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS03NiAgIChoZXgpCQlORUxJIFRFQ0hOT0xPR0lFUwotMDAyNTc2ICAgICAoYmFzZSAxNikJCU5FTEkgVEVDSE5PTE9HSUVTCi0JCQkJUm91dGUgTmF0aW9uYWxlCi0JCQkJSW1tZXVibGUgT3JjaGlzCi0JCQkJTEUgUkhFVSAgMzU2NTAKLQkJCQlGUkFOQ0UKLQotMDAtMjUtNzcgICAoaGV4KQkJRC1CT1ggVGVjaG5vbG9naWVzCi0wMDI1NzcgICAgIChiYXNlIDE2KQkJRC1CT1ggVGVjaG5vbG9naWVzCi0JCQkJMjE3MiBkZSBsYSBQcm92aW5jZQotCQkJCUxvbmd1ZXVpbCBRdWViZWMgSjRHIDFSNwotCQkJCUNBTkFEQQotCi0wMC0yNS03OCAgIChoZXgpCQlKU0MgIkNvbmNlcm4gIlNvenZlemRpZSIKLTAwMjU3OCAgICAgKGJhc2UgMTYpCQlKU0MgIkNvbmNlcm4gIlNvenZlemRpZSIKLQkJCQlQbGVraGFub3Zza2F5YSBzdC4sIDE0Ci0JCQkJVm9yb25lemggIDM5NDAxOAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yNS03OSAgIChoZXgpCQlKICYgRiBMYWJzCi0wMDI1NzkgICAgIChiYXNlIDE2KQkJSiAmIEYgTGFicwotCQkJCTEyMTQgVy4gQm9zdG9uIFBvc3QgUm9hZAotCQkJCU1hbWFyb25lY2sgTlkgMTA1NDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTdBICAgKGhleCkJCUNBTUNPIFByb2R1a3Rpb25zLSB1bmQgVmVydHJpZWJzLUdtYkggZvxyIEJlc2NoYWxsdW5ncy0gdW5kIEJlbGV1Y2h0dW5nc2FubGFnZW4KLTAwMjU3QSAgICAgKGJhc2UgMTYpCQlDQU1DTyBQcm9kdWt0aW9ucy0gdW5kIFZlcnRyaWVicy1HbWJIIGb8ciBCZXNjaGFsbHVuZ3MtIHVuZCBCZWxldWNodHVuZ3NhbmxhZ2VuCi0JCQkJRmlzY2hwaWNrZSA1Ci0JCQkJV2VuZGVuIE5SVyA1NzQ4MgotCQkJCUdFUk1BTlkKLQotMDAtMjUtN0IgICAoaGV4KQkJU1RKICBFTEVDVFJPTklDUyAgUFZUICBMVEQKLTAwMjU3QiAgICAgKGJhc2UgMTYpCQlTVEogIEVMRUNUUk9OSUNTICBQVlQgIExURAotCQkJCVgtMjQgT0tITEEgIElORFVTVFJJQUwgIEFSRUEKLQkJCQlQSEFTRSAtIDIKLQkJCQlORVcgIERFTEhJIERFTEhJIDExMCAwMjAKLQkJCQlJTkRJQQotCi0wMC0yNS03QyAgIChoZXgpCQlIdWFjaGVudGVsIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uLCBMdGQKLTAwMjU3QyAgICAgKGJhc2UgMTYpCQlIdWFjaGVudGVsIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uLCBMdGQKLQkJCQk3NDcgWGluWXUgUmQuIEhpZ2gtVGVjaCBab25lCi0JCQkJSmluYW4gU2hhbmRvbmcgUHJvdmluY2UgMjUwMTAxCi0JCQkJQ0hJTkEKLQotMDAtMjUtN0QgICAoaGV4KQkJUG9pbnRSZWQgVGVsZWNvbSBQcml2YXRlIEx0ZC4KLTAwMjU3RCAgICAgKGJhc2UgMTYpCQlQb2ludFJlZCBUZWxlY29tIFByaXZhdGUgTHRkLgotCQkJCTE1RiAtIDUuLCBOby4gMTA3MSwgWmhvbmd6aGVuZyBSb2FkLAotCQkJCVRhb3l1YW4gQ2l0eSAzMzAgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjUtN0UgICAoaGV4KQkJTkVXIFBPUyBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMjU3RSAgICAgKGJhc2UgMTYpCQlORVcgUE9TIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCTZGUk0sIDZGLCBDaGluYSBFY29ub21pYyBUcmFkZSBCdWlsZGluZwotCQkJCTdSZCBaaXpodSwgWmh1emlsaW4sIEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi0wMC0yNS03RiAgIChoZXgpCQlDYWxsVGVjaFNvbHV0aW9uIENvLixMdGQKLTAwMjU3RiAgICAgKGJhc2UgMTYpCQlDYWxsVGVjaFNvbHV0aW9uIENvLixMdGQKLQkJCQkjMTIzLERhZXdvb3BydWdpbyBCL0QsMzQ0LTEsIFNlb2d5by1Eb25nLE1hcG8tZ3UKLQkJCQlTZW91bCAgMTIxLTgzNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS04MCAgIChoZXgpCQlFcXVpcHNvbiBTLkEuCi0wMDI1ODAgICAgIChiYXNlIDE2KQkJRXF1aXBzb24gUy5BLgotCQkJCVBvbGlnb25vIEluZC4gTLRBbHRlcvMKLQkJCQlBdmRhLiBTYWxlciwgMTQKLQkJCQlTaWxsYSBWYWxlbmNpYSA0NjQ2MAotCQkJCVNQQUlOCi0KLTAwLTI1LTgxICAgKGhleCkJCXgtc3RhciBuZXR3b3JrcyBJbmMuCi0wMDI1ODEgICAgIChiYXNlIDE2KQkJeC1zdGFyIG5ldHdvcmtzIEluYy4KLQkJCQkxRixOTzEtMixDaHVuZ2NoaW5nIFMuUmQuU2VjIDMKLQkJCQlUYWlwZWkgIDEwMDc2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS04MiAgIChoZXgpCQlNYWtzYXQgVGVjaG5vbG9naWVzIChQKSBMdGQKLTAwMjU4MiAgICAgKGJhc2UgMTYpCQlNYWtzYXQgVGVjaG5vbG9naWVzIChQKSBMdGQKLQkJCQlELTEwLzYsIE9raGxhLCBQaGFzZS1JCi0JCQkJTmV3IERlbGhpICAxMTAwMjAKLQkJCQlJTkRJQQotCi0wMC0yNS04MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI1ODMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtODQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNTg0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTg1ICAgKGhleCkJCUtPS1VZTyBTJlQgQ28uLCBMdGQuCi0wMDI1ODUgICAgIChiYXNlIDE2KQkJS09LVVlPIFMmVCBDby4sIEx0ZC4KLQkJCQkxLTgtMzUKLQkJCQlLb25hbgotCQkJCU1pbmF0by1rdSBUb2t5byAxMDgtODcxMAotCQkJCUpBUEFOCi0KLTAwLTI1LTg2ICAgKGhleCkJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAyNTg2ICAgICAoYmFzZSAxNikJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCUJ1aWxkaW5nIDcsIFNlY29uZCBQYXJ0LCBIb25naHVhbGluZyBJbmR1c3RyaWFsIFpvbmUKLQkJCQlYaWxpIHRvd24sIE5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjUtODcgICAoaGV4KQkJVml0YWxpdHksIEluYy4KLTAwMjU4NyAgICAgKGJhc2UgMTYpCQlWaXRhbGl0eSwgSW5jLgotCQkJCU9uZSBCcm9hZHdheQotCQkJCTE0dGggRmxvb3IKLQkJCQlDYW1icmlkZ2UgTUEgMDIxNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTg4ICAgKGhleCkJCUdlbmllIEluZHVzdHJpZXMsIEluYy4KLTAwMjU4OCAgICAgKGJhc2UgMTYpCQlHZW5pZSBJbmR1c3RyaWVzLCBJbmMuCi0JCQkJMTg2MjAgTkUgNjd0aCBDdAotCQkJCVJlZG1vbmQgV0EgOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTg5ICAgKGhleCkJCUhpbGxzIEluZHVzdHJpZXMgTGltaXRlZAotMDAyNTg5ICAgICAoYmFzZSAxNikJCUhpbGxzIEluZHVzdHJpZXMgTGltaXRlZAotCQkJCTUgQ2FtYnJpYSBSb2FkCi0JCQkJS2V5c2Jvcm91Z2gKLQkJCQlNZWxib3VybmUgVklDIDMxNzMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjUtOEEgICAoaGV4KQkJUG9sZS9aZXJvIENvcnBvcmF0aW9uCi0wMDI1OEEgICAgIChiYXNlIDE2KQkJUG9sZS9aZXJvIENvcnBvcmF0aW9uCi0JCQkJNTUzMCBVbmlvbiBDZW50cmUgRHJpdmUKLQkJCQlXZXN0IENoZXN0ZXIgT0ggNDUwNjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LThCICAgKGhleCkJCU1lbGxhbm94IFRlY2hub2xvZ2llcyBMdGQKLTAwMjU4QiAgICAgKGJhc2UgMTYpCQlNZWxsYW5veCBUZWNobm9sb2dpZXMgTHRkCi0JCQkJMzUwIE9ha21lYWQgUGFya3dheQotCQkJCVN1bm55dmFsZSwgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LThDICAgKGhleCkJCUVTVVMgRUxFS1RST05JSyBTQU4uIFZFIERJUy4gVElDLiBMVEQuIFNUSS4KLTAwMjU4QyAgICAgKGJhc2UgMTYpCQlFU1VTIEVMRUtUUk9OSUsgU0FOLiBWRSBESVMuIFRJQy4gTFRELiBTVEkuCi0JCQkJRVNFTlNFSElSIE1BSEFMTEVTSSBLVVJLQ1VMRVIgQ0FEREVTSQotCQkJCVNBRklSIFNPS0FLIE5POjExLzEgRFVEVUxMVSBVTVJBTklZRQotCQkJCUlTVEFOQlVMICAzNDc3NgotCQkJCVRVUktFWQotCi0wMC0yNS04RCAgIChoZXgpCQlIYWllcgotMDAyNThEICAgICAoYmFzZSAxNikJCUhhaWVyCi0JCQkJTm8uMSxIYWllciBSb2FkCi0JCQkJUWluZ2RhbyBTaGFuZG9uZyAyNjYxMDEKLQkJCQlDSElOQQotCi0wMC0yNS04RSAgIChoZXgpCQlUaGUgV2VhdGhlciBDaGFubmVsCi0wMDI1OEUgICAgIChiYXNlIDE2KQkJVGhlIFdlYXRoZXIgQ2hhbm5lbAotCQkJCU1haWwgU3RvcCA1MDAKLQkJCQkzMDAgSW50ZXJzdGF0ZSBOb3J0aCBQa3d5Ci0JCQkJQXRsYW50YSBHQSAzMDMzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtOEYgICAoaGV4KQkJVHJpZGVudCBNaWNyb3N5c3RlbXMsIEluYy4KLTAwMjU4RiAgICAgKGJhc2UgMTYpCQlUcmlkZW50IE1pY3Jvc3lzdGVtcywgSW5jLgotCQkJCTM0MDggR2FycmV0dCBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS05MCAgIChoZXgpCQlTdXBlciBNaWNybyBDb21wdXRlciwgSW5jLgotMDAyNTkwICAgICAoYmFzZSAxNikJCVN1cGVyIE1pY3JvIENvbXB1dGVyLCBJbmMuCi0JCQkJOTgwIFJvY2sgQXZlbnVlCi0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtOTEgICAoaGV4KQkJTkVYVEVLLCBJbmMuCi0wMDI1OTEgICAgIChiYXNlIDE2KQkJTkVYVEVLLCBJbmMuCi0JCQkJNDEwIERvdWdsYXNzIFN0cmVldAotCQkJCVJlYWRpbmcgUEEgMTk2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTkyICAgKGhleCkJCUd1YW5nemhvdSBTaGlydWkgRWxlY3Ryb25pYyBDby4sIEx0ZAotMDAyNTkyICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBTaGlydWkgRWxlY3Ryb25pYyBDby4sIEx0ZAotCQkJCTMwMUQsIE5vLjksIENhaXBpbiBSb2FkLAotCQkJCUd1YW5nemhvdSBTY2llbmNlIFBhcmsKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTAwLTI1LTkzICAgKGhleCkJCURhdE5ldCBJbmZvcm1hdGlrYWkgS2Z0LgotMDAyNTkzICAgICAoYmFzZSAxNikJCURhdE5ldCBJbmZvcm1hdGlrYWkgS2Z0LgotCQkJCUjpdHZleulyIHUuIDUuCi0JCQkJU3ppZ2V0c3plbnRtaWts83MgUGVzdCBtZWd5ZSAyMzEwCi0JCQkJSFVOR0FSWQotCi0wMC0yNS05NCAgIChoZXgpCQlFdXJvZGVzaWduIEJHIExURAotMDAyNTk0ICAgICAoYmFzZSAxNikJCUV1cm9kZXNpZ24gQkcgTFRECi0JCQkJMTUtMTcgVGludGlhdmEgU3RyLiwKLQkJCQlTb2ZpYSAgMTExMwotCQkJCUJVTEdBUklBCi0KLTAwLTI1LTk1ICAgKGhleCkJCU5vcnRod2VzdCBTaWduYWwgU3VwcGx5LCBJbmMKLTAwMjU5NSAgICAgKGJhc2UgMTYpCQlOb3J0aHdlc3QgU2lnbmFsIFN1cHBseSwgSW5jCi0JCQkJMTI5NjUgU1cgSGVybWFuIFJkCi0JCQkJVHVhbGF0aW4gT1IgOTcwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTk2ICAgKGhleCkJCUdJR0FWSVNJT04gc3JsCi0wMDI1OTYgICAgIChiYXNlIDE2KQkJR0lHQVZJU0lPTiBzcmwKLQkJCQlWaWEgRmlnaW5pLCAxNgotCQkJCU11Z2dp8iBNaWxhbm8gMjAwNTMKLQkJCQlJVEFMWQotCi0wMC0yNS05NyAgIChoZXgpCQlLYWxraSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcwotMDAyNTk3ICAgICAoYmFzZSAxNikJCUthbGtpIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzCi0JCQkJIzE0NywybmQgRmxvb3IsIEFuYW50YVB1c2hwYSBCdWlsZGluZywKLQkJCQk1dGggTWFpbiBSb2FkLDd0aCBTZWN0b3IsSFNSIExheW91dAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwMDM0Ci0JCQkJSU5ESUEKLQotMDAtMjUtOTggICAoaGV4KQkJWmhvbmcgU2hhbiBDaXR5IExpdGFpIEVsZWN0cm9uaWMgSW5kdXN0cmlhbCBDby4gTHRkCi0wMDI1OTggICAgIChiYXNlIDE2KQkJWmhvbmcgU2hhbiBDaXR5IExpdGFpIEVsZWN0cm9uaWMgSW5kdXN0cmlhbCBDby4gTHRkCi0JCQkJTm8uMyBJbmR1c3RyaWFsIERpc3RyaWN0LCBXdWd1aXNoYW4sIENoZW5nIGd1aSBSb2FkCi0JCQkJWmhvbmcgc2hhbiBDaXR5IEd1YW5nIGRvbmcgUHJvdmluY2UgNTI4NDU4Ci0JCQkJQ0hJTkEKLQotMDAtMjUtOTkgICAoaGV4KQkJSGVkb24gZS5kLiBCLlYuCi0wMDI1OTkgICAgIChiYXNlIDE2KQkJSGVkb24gZS5kLiBCLlYuCi0JCQkJRWxla3Ryb25pY2F3ZWcgMTUKLQkJCQlEZWxmdCBadWlkIEhvbGxhbmQgMjYyOCBYRwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI1LTlBICAgKGhleCkJCUNFU3Ryb25pY3MgR21iSAotMDAyNTlBICAgICAoYmFzZSAxNikJCUNFU3Ryb25pY3MgR21iSAotCQkJCUZyaWVkcmljaHN0ci4gMjQzCi0JCQkJVmVsYmVydCAgNDI1NTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTlCICAgKGhleCkJCUJlaWppbmcgUEtVTklUWSBNaWNyb3N5c3RlbXMgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAyNTlCICAgICAoYmFzZSAxNikJCUJlaWppbmcgUEtVTklUWSBNaWNyb3N5c3RlbXMgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTExdGggRmxvb3IsIFJlc291cmNlIFBsYXphLCBOby4xNTEgTm9ydGggWmhvbmdndWFuY3VuIFN0cmVldAotCQkJCUhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODAKLQkJCQlDSElOQQotCi0wMC0yNS05QyAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTAwMjU5QyAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTlEICAgKGhleCkJCVBSSVZBVEUKLTAwMjU5RCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMjUtOUUgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMjU5RSAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCUIxLTcsSHVhd2VpIEJhc2UsQmFudGlhbiwgTG9uZ2dhbmcgRGlzdHJpY3QsU2hlblpoZW4sR3VhbmdEb25nLENISU5BCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTAwLTI1LTlGICAgKGhleCkJCVRlY2hub0RpZ2l0YWwgVGVjaG5vbG9naWVzIEdtYkgKLTAwMjU5RiAgICAgKGJhc2UgMTYpCQlUZWNobm9EaWdpdGFsIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJSGFlc3NsZXJzdHIuIDgKLQkJCQlFcmZ1cnQgVGh1cmluZ2lhIDk5MDk2Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS1BMCAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjVBMCAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yNS1BMSAgIChoZXgpCQlFbmFsYXN5cwotMDAyNUExICAgICAoYmFzZSAxNikJCUVuYWxhc3lzCi0JCQkJMjUwIEF2ZW5pZGEgQ2FtcGlsbG8KLQkJCQlDYWxleGljbyBDYWxpZm9ybmlhIDkyMjMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1BMiAgIChoZXgpCQlBbHRhIERlZmluaWNpb24gTElOQ0VPIFMuTC4KLTAwMjVBMiAgICAgKGJhc2UgMTYpCQlBbHRhIERlZmluaWNpb24gTElOQ0VPIFMuTC4KLQkJCQlNYXJpYSBkZSBMdW5hIDExLCBuYXZlIDQKLQkJCQlaYXJhZ296YSAgRXMtNTAwMTgKLQkJCQlTUEFJTgotCi0wMC0yNS1BMyAgIChoZXgpCQlUcmltYXggV2lyZWxlc3MsIEluYy4KLTAwMjVBMyAgICAgKGJhc2UgMTYpCQlUcmltYXggV2lyZWxlc3MsIEluYy4KLQkJCQkyNjc1IFMgSG9yc2VzaG9lIERyCi0JCQkJU3VpdGUgNDAxCi0JCQkJTmFwbGVzIEZMIDM0MTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1BNCAgIChoZXgpCQlFdXJvRGVzaWduIGVtYmVkZGVkIHRlY2hub2xvZ2llcyBHbWJICi0wMDI1QTQgICAgIChiYXNlIDE2KQkJRXVyb0Rlc2lnbiBlbWJlZGRlZCB0ZWNobm9sb2dpZXMgR21iSAotCQkJCVdhbGRzdHJh32UgNEEKLQkJCQlLaXJjaGRvcmYgYS5kLiBBbXBlciBCYXllcm4gODU0MTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LUE1ICAgKGhleCkJCVdhbG51dCBNZWRpYSBOZXR3b3JrCi0wMDI1QTUgICAgIChiYXNlIDE2KQkJV2FsbnV0IE1lZGlhIE5ldHdvcmsKLQkJCQk0NDAgTiBXb2xmZSBSZAotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQTYgICAoaGV4KQkJQ2VudHJhbCBOZXR3b3JrIFNvbHV0aW9uIENvLiwgTHRkLgotMDAyNUE2ICAgICAoYmFzZSAxNikJCUNlbnRyYWwgTmV0d29yayBTb2x1dGlvbiBDby4sIEx0ZC4KLQkJCQk1ODQtMSwgUGFqYW5nLURvbmcsIEphbmdBbi1HdQotCQkJCVN1d29uLVNpLCBLeXVuZ2dpLURvIDQ0MC04NTQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtQTcgICAoaGV4KQkJQ29tdmVyZ2UsIEluYy4KLTAwMjVBNyAgICAgKGJhc2UgMTYpCQlDb212ZXJnZSwgSW5jLgotCQkJCTUzOTAgVHJpYW5nbGUgUGFya3dheQotCQkJCVN1aXRlIDMwMAotCQkJCU5vcmNyb3NzIEdBIDMwMDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1BOCAgIChoZXgpCQlLb250cm9uIChCZWlKaW5nKSBUZWNobm9sb2d5IENvLixMdGQKLTAwMjVBOCAgICAgKGJhc2UgMTYpCQlLb250cm9uIChCZWlKaW5nKSBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkxNyBCdWlsZGluZywgQmxvY2sgIzEsQUJQLiAgMTg4IFdlc3Rlcm4gU291dGggNHRoIFJpbmcgUm9hZAotCQkJCUJlaUppbmcgIDEwMDA3MAotCQkJCUNISU5BCi0KLTAwLTI1LUE5ICAgKGhleCkJCVNoYW5naGFpIEVtYmVkd2F5IEluZm9ybWF0aW9uIFRlY2hub2xvZ2llcyBDby4sTHRkCi0wMDI1QTkgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgRW1iZWR3YXkgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIENvLixMdGQKLQkJCQkyRixCdWlsZGluZyA5LEx1amlhenVpIFNvZnR3YXJlIFBhcmssIE5vLjIwLExhbmUgOTEsRSdTaGFuIFJvYWQKLQkJCQlTaGFuZ2hhaSAgMjAwMTI3Ci0JCQkJQ0hJTkEKLQotMDAtMjUtQUEgICAoaGV4KQkJQmVpamluZyBTb3VsIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMjVBQSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFNvdWwgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCVJvb20gNjA2LFhpbnpoZW5nIE9mZmljZSBCdWlsZGluZwotCQkJCU5vLjEgQ2hhbmd3YSBNaWRkbGUgU3RyZWV0LEhhaWRpYW4gRGlzdHJpY3QuCi0JCQkJQkVJSklORyAgMTAwMDg5Ci0JCQkJQ0hJTkEKLQotMDAtMjUtQUIgICAoaGV4KQkJQUlPIExDRCBQQyBCVSAvIFRQVgotMDAyNUFCICAgICAoYmFzZSAxNikJCUFJTyBMQ0QgUEMgQlUgLyBUUFYKLQkJCQkxMEYuLCBOby4sIDIzMCwgTGlhbmNoZW5nIFJkLgotCQkJCVpob25naGUgQ2l0eSBUYWlwZWkgVGFpd2FuIDIzNTUzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1BQyAgIChoZXgpCQlJLVRlY2ggY29ycG9yYXRpb24KLTAwMjVBQyAgICAgKGJhc2UgMTYpCQlJLVRlY2ggY29ycG9yYXRpb24KLQkJCQkxLTE1IFNoaW4tb2dhd2EgbWFjaGkKLQkJCQlTaGluanl1a3Uta3UgVG9reW8gMTYyLTA4MTQKLQkJCQlKQVBBTgotCi0wMC0yNS1BRCAgIChoZXgpCQlNYW51ZmFjdHVyaW5nIFJlc291cmNlcyBJbnRlcm5hdGlvbmFsCi0wMDI1QUQgICAgIChiYXNlIDE2KQkJTWFudWZhY3R1cmluZyBSZXNvdXJjZXMgSW50ZXJuYXRpb25hbAotCQkJCTE2MDAgVW5pb24gSGlsbCBSb2FkCi0JCQkJQWxwaGFyZXR0YSBHQSAzMDAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQUUgICAoaGV4KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0wMDI1QUUgICAgIChiYXNlIDE2KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0JCQkJT25lIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTItNjM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQUYgICAoaGV4KQkJQ09NRklMRSBUZWNobm9sb2d5Ci0wMDI1QUYgICAgIChiYXNlIDE2KQkJQ09NRklMRSBUZWNobm9sb2d5Ci0JCQkJR3VybyA1IGRvbmcsIEd1cm8tZ3UKLQkJCQkxMDQtNQotCQkJCVNlb3VsICAxNTItODQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUIwICAgKGhleCkJCVNjaG1hcnR6IEluYwotMDAyNUIwICAgICAoYmFzZSAxNikJCVNjaG1hcnR6IEluYwotCQkJCTIzMDcgVmFsZXJpYW4gVHJsCi0JCQkJUm91bmQgUm9jayBUWCA3ODY2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQjEgICAoaGV4KQkJTWF5YS1DcmVhdGlvbiBDb3Jwb3JhdGlvbgotMDAyNUIxICAgICAoYmFzZSAxNikJCU1heWEtQ3JlYXRpb24gQ29ycG9yYXRpb24KLQkJCQkzRiwgQnVpbGRpbmcgTS0xMCwgQ2VudHJlIG9kIEhpLVRlY2ggSW5kLiBEaXN0LgotCQkJCVNoZW56aGVuICA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNS1CMiAgIChoZXgpCQlMRkstTGVua2ZsdWdr9nJwZXJzeXN0ZW1lIEdtYkgKLTAwMjVCMiAgICAgKGJhc2UgMTYpCQlMRkstTGVua2ZsdWdr9nJwZXJzeXN0ZW1lIEdtYkgKLQkJCQlMYW5kc2h1dGVyIFN0cmHfZSAgMjYKLQkJCQlVbnRlcnNjaGxlad9oZWltIEJhdmFyaWEgODU3MTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LUIzICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAyNUIzICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlNUyA2LjMuMDQ5Ci0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQjQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNUI0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUI1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjVCNSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1CNiAgIChoZXgpCQlUZWxlY29tIEZNCi0wMDI1QjYgICAgIChiYXNlIDE2KQkJVGVsZWNvbSBGTQotCQkJCTg5NSBQbHltb3V0aCBSb2FkCi0JCQkJU2xvdWdoIEJlcmtzIFNMMSA0TFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNS1CNyAgIChoZXgpCQlDb3N0YXIgIGVsZWN0cm9uaWNzLCBpbmMuLAotMDAyNUI3ICAgICAoYmFzZSAxNikJCUNvc3RhciAgZWxlY3Ryb25pY3MsIGluYy4sCi0JCQkJM2ZsLC0xIG5vIDEzLGxhbmUgMTIwLG5laS1odSByb2FkIHNlYy4xLAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1COCAgIChoZXgpCQlBZ2lsZSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAyNUI4ICAgICAoYmFzZSAxNikJCUFnaWxlIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTI0MjcgUmVud2ljayBEcgotCQkJCVJhbmNobyBDdWNhbW9uZ2EgQ2FsaWZvcm5pYSA5MTczOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQjkgICAoaGV4KQkJQWdpbGluayBTeXN0ZW1zIENvcnAuCi0wMDI1QjkgICAgIChiYXNlIDE2KQkJQWdpbGluayBTeXN0ZW1zIENvcnAuCi0JCQkJIzMwMC0xMjc1IFdlc3QgNnRoIEF2ZQotCQkJCVZhbmNvdXZlciBCQyBWNkggMUE2Ci0JCQkJQ0FOQURBCi0KLTAwLTI1LUJBICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50IElQRAotMDAyNUJBICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50IElQRAotCQkJCTcwMSBFLiBNaWRkbGVmaWVsZCBSZC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1CQiAgIChoZXgpCQlJTk5FUklOVCBDby4sIEx0ZC4KLTAwMjVCQiAgICAgKGJhc2UgMTYpCQlJTk5FUklOVCBDby4sIEx0ZC4KLQkJCQlEb25neW91bmcgQ2VudHJhbFRvd2VyICMyMDIsIEdldW1qdW5nLWRvbmcsCi0JCQkJR3VucG8tc2ksS3l1bmdnaS1kbyw0MzUtMDUwIFNvdXRoIEtPUkVBLgotCQkJCUd1bnBvLXNpIEt5dW5nZ2ktZG8gNDMwMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUJDICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjVCQyAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1CRCAgIChoZXgpCQlJdGFsZGF0YSBJbmdlZ25lcmlhIGRlbGwnSWRlYSBTLnAuQS4KLTAwMjVCRCAgICAgKGJhc2UgMTYpCQlJdGFsZGF0YSBJbmdlZ25lcmlhIGRlbGwnSWRlYSBTLnAuQS4KLQkJCQl2aWFsZSBFcm9pIGRpIENlZmFsb25pYSAxMjMKLQkJCQlSb21hICAwMDEyOAotCQkJCUlUQUxZCi0KLTAwLTI1LUJFICAgKGhleCkJCVRla3RyYXAgU3lzdGVtcyBJbmMuCi0wMDI1QkUgICAgIChiYXNlIDE2KQkJVGVrdHJhcCBTeXN0ZW1zIEluYy4KLQkJCQkxNSBCdXRlYXUgU3QuCi0JCQkJU3VpdGUgMjMwLTkKLQkJCQlHYXRpbmVhdSBRdWViZWMgSjhaIDFWNAotCQkJCUNBTkFEQQotCi0wMC0yNS1CRiAgIChoZXgpCQlXaXJlbGVzcyBDYWJsZXMgSW5jLgotMDAyNUJGICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIENhYmxlcyBJbmMuCi0JCQkJMjg4MCBaYW5rZXIgUmQsIFN0ZSAyMDMKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQzAgICAoaGV4KQkJWmlsbGlvblRWIENvcnBvcmF0aW9uCi0wMDI1QzAgICAgIChiYXNlIDE2KQkJWmlsbGlvblRWIENvcnBvcmF0aW9uCi0JCQkJMTE3MCBLaWZlciBSb2FkCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1DMSAgIChoZXgpCQlOYXdvbyBLb3JlYSBDb3JwLgotMDAyNUMxICAgICAoYmFzZSAxNikJCU5hd29vIEtvcmVhIENvcnAuCi0JCQkJNEZsLiwgSGFud29uIEJsZGcuLCA2LTEsIFN1bmFlLWRvbmcsIEJ1bmRhbmctZ3UsCi0JCQkJU2VvbmduYW0tc2kgR3llb25nZ2ktZG8gNDYzLTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS1DMiAgIChoZXgpCQlSaW5nQmVsbCBDby4sTHRkLgotMDAyNUMyICAgICAoYmFzZSAxNikJCVJpbmdCZWxsIENvLixMdGQuCi0JCQkJMTA1ODYgS2luZ0dlb3JnZSBId3kKLQkJCQlTdXJyZXkgQi5DIFYzVCAyWDMKLQkJCQlDQU5BREEKLQotMDAtMjUtQzMgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDI1QzMgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLTAwLTI1LUM0ICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotMDAyNUM0ICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUM1ICAgKGhleCkJCVN0YXIgTGluayBDb21tdW5pY2F0aW9uIFB2dC4gTHRkLgotMDAyNUM1ICAgICAoYmFzZSAxNikJCVN0YXIgTGluayBDb21tdW5pY2F0aW9uIFB2dC4gTHRkLgotCQkJCUhSMTE0LzYgJiBIcjEzMi82LCBQdWxwcmVobGFkcHVyLAotCQkJCVN1cmFqIGt1bmQgUm9hZCwgTmVhciBCYWRhcnB1ciwKLQkJCQlOZXcgRGVsaGkgIDExMDA0NAotCQkJCUlORElBCi0KLTAwLTI1LUM2ICAgKGhleCkJCWthc2VyY29ycCwgbHRkCi0wMDI1QzYgICAgIChiYXNlIDE2KQkJa2FzZXJjb3JwLCBsdGQKLQkJCQlTb3V0aCAyMCxHYW9idSBSb2FkLEdhb2J1IFRvd24KLQkJCQlEb25nd2FuIEd1YW5nZG9uZyA1MjMwMDAKLQkJCQlDSElOQQotCi0wMC0yNS1DNyAgIChoZXgpCQlhbHRlayBDb3Jwb3JhdGlvbgotMDAyNUM3ICAgICAoYmFzZSAxNikJCWFsdGVrIENvcnBvcmF0aW9uCi0JCQkJM0YsIE5vLiAxMCwgTGktSHNpbiBSb2FkLCBTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LUM4ICAgKGhleCkJCVMtQWNjZXNzIEdtYkgKLTAwMjVDOCAgICAgKGJhc2UgMTYpCQlTLUFjY2VzcyBHbWJICi0JCQkJT2JlcmhhdXNlbnN0cmFzc2UgNDcKLQkJCQlXZXR0c3dpbCBhL0EgWnVlcmljaCA4OTA3Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjUtQzkgICAoaGV4KQkJU0hFTlpIRU4gSFVBUFUgRElHSVRBTCBDTy4sIExURAotMDAyNUM5ICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIEhVQVBVIERJR0lUQUwgQ08uLCBMVEQKLQkJCQlGdXRpYW4gRGlzdHJpY3QsQ2hlZ29uZ21pYW8sVGlhbkFuIEN5YmVycGFyawotCQkJCTE3L0YgRWFzdCxIaWdoLVRlY2ggUGxhemEsIFBoYXNlIKLyCi0JCQkJU2hlblpoZW4gR3Vhbmdkb25nIFByb3ZpbmNlIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTI1LUNBICAgKGhleCkJCUxTIFJlc2VhcmNoLCBMTEMKLTAwMjVDQSAgICAgKGJhc2UgMTYpCQlMUyBSZXNlYXJjaCwgTExDCi0JCQkJVzY2IE4yMjAgQ29tbWVyY2UgQ291cnQKLQkJCQlDZWRhcmJ1cmcgV0kgNTMwMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUNCICAgKGhleCkJCVJlaW5lciBTQ1QKLTAwMjVDQiAgICAgKGJhc2UgMTYpCQlSZWluZXIgU0NUCi0JCQkJUmVpbmVyIEthcnRlbmdlcuR0ZSBHbWJIICYgQ28uIEtHLgotCQkJCUdvZXRoZXN0ci4gMTQKLQkJCQlGdXJ0d2FuZ2VuICA3ODEyMAotCQkJCUdFUk1BTlkKLQotMDAtMjUtQ0MgICAoaGV4KQkJTW9iaWxlIENvbW11bmljYXRpb25zIEtvcmVhIEluY29ycG9yYXRlZAotMDAyNUNDICAgICAoYmFzZSAxNikJCU1vYmlsZSBDb21tdW5pY2F0aW9ucyBLb3JlYSBJbmNvcnBvcmF0ZWQKLQkJCQkxMDExLTEwMTIsIFN1d29uIEhpZ2ggVmVudHVyZSBWYWxsZXksCi0JCQkJOTU4IEdvc2Flay1kb25nLCBHd29uc2Vvbi1ndSwKLQkJCQlTdXdvbi1zaSwgR3llb25nZ2ktZG8sIDQ0MS0zNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtQ0QgICAoaGV4KQkJU2t5bGFuZSBPcHRpY3MKLTAwMjVDRCAgICAgKGJhc2UgMTYpCQlTa3lsYW5lIE9wdGljcwotCQkJCVJ1ZSBkJ0FybG9uLCA2Ci0JCQkJV2luZGhvZiAgODM5OQotCQkJCUxVWEVNQk9VUkcKLQotMDAtMjUtQ0UgICAoaGV4KQkJSW5uZXJTcGFjZQotMDAyNUNFICAgICAoYmFzZSAxNikJCUlubmVyU3BhY2UKLQkJCQlQTyBCb3ggMjE4NgotCQkJCUdyYW5kIFJhcGlkcyBNSSA0OTUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQ0YgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjVDRiAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjUtRDAgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjVEMCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCSBDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTI1LUQxICAgKGhleCkJCUVhc3RlY2ggRWxlY3Ryb25pY3MgKFRhaXdhbikgSW5jLgotMDAyNUQxICAgICAoYmFzZSAxNikJCUVhc3RlY2ggRWxlY3Ryb25pY3MgKFRhaXdhbikgSW5jLgotCQkJCTEzRiwgTm8uIDk5LCBTZWMuIDEsIE5hbmthbiBSb2FkLCBMdWNodSBTaGlhbmcKLQkJCQlUYW95dWFuIEhzaWVuIDMzOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjUtRDIgICAoaGV4KQkJSW5wZWdWaXNpb24gQ28uLCBMdGQKLTAwMjVEMiAgICAgKGJhc2UgMTYpCQlJbnBlZ1Zpc2lvbiBDby4sIEx0ZAotCQkJCTIyNi0zLCBCdWdvay1kb25nLCBHZXVtamVvbmctZ3UsCi0JCQkJQnVzYW4gIDYwOS0zMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtRDMgICAoaGV4KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcywgSW5jCi0wMDI1RDMgICAgIChiYXNlIDE2KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcywgSW5jCi0JCQkJOEYgLiwgTm8uOTQsIEJhb3pob25nIFJkLgotCQkJCVhpbmRpYW4gQ2l0eSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1ENCAgIChoZXgpCQlGb3J0cmVzcyBUZWNobm9sb2dpZXMKLTAwMjVENCAgICAgKGJhc2UgMTYpCQlGb3J0cmVzcyBUZWNobm9sb2dpZXMKLQkJCQkyIFRlY2hub2xvZ3kgUGFyayBEcgotCQkJCVdlc3Rmb3JkIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1ENSAgIChoZXgpCQlSb2JvbmljYSAoUHR5KSBMdGQKLTAwMjVENSAgICAgKGJhc2UgMTYpCQlSb2JvbmljYSAoUHR5KSBMdGQKLQkJCQk0MSBQYXJrIEF2ZW51ZSBOb3J0aAotCQkJCUhpZ2h3YXkgQnVzaW5lc3MgUGFyawotCQkJCUNlbnR1cmlvbiBHYXV0ZW5nIDAwNDYKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMjUtRDYgICAoaGV4KQkJVGhlIEtyb2dlciBDby4KLTAwMjVENiAgICAgKGJhc2UgMTYpCQlUaGUgS3JvZ2VyIENvLgotCQkJCTExNDUwIEdyb29tcyBSb2FkCi0JCQkJQmx1ZSBBc2ggT0ggNDUyNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUQ3ICAgKGhleCkJCUNFRE8KLTAwMjVENyAgICAgKGJhc2UgMTYpCQlDRURPCi0JCQkJVmlkZW5za2EgMTI3Ci0JCQkJQlJOTyAgNjE5MDAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0yNS1EOCAgIChoZXgpCQlLT1JFQSBNQUlOVEVOQU5DRQotMDAyNUQ4ICAgICAoYmFzZSAxNikJCUtPUkVBIE1BSU5URU5BTkNFCi0JCQkJM0YgSEFFTElNIEJVSURJTkcgMTAzLTcsIEdVUk8tNURPTkcKLQkJCQlHVVJPLUdVLAotCQkJCVNFT1VMICAxNTItODQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUQ5ICAgKGhleCkJCURhdGFGYWIgU3lzdGVtcyBJbmMuCi0wMDI1RDkgICAgIChiYXNlIDE2KQkJRGF0YUZhYiBTeXN0ZW1zIEluYy4KLQkJCQkzODUtMyBIb25nenVuIFJvYWQKLQkJCQlQaW5nemhlbiBDaXR5IFRhb3l1YW4gQ291bnR5IDMyNDY2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1EQSAgIChoZXgpCQlTZWN1cmEgS2V5Ci0wMDI1REEgICAgIChiYXNlIDE2KQkJU2VjdXJhIEtleQotCQkJCTIwMzAxIE5vcmRob2ZmIFN0LgotCQkJCUNoYXRzd29ydGggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LURCICAgKGhleCkJCUFUSSBFbGVjdHJvbmljcyhTaGVuemhlbikgQ28uLCBMVEQKLTAwMjVEQiAgICAgKGJhc2UgMTYpCQlBVEkgRWxlY3Ryb25pY3MoU2hlbnpoZW4pIENvLiwgTFRECi0JCQkJMkYsMXN0IEJ1bGlkaW5nLFRhbmd5YW5zaGFuIEluZHVzdHJpYWwgUGFyaywKLQkJCQlUYW5na2VuZyBWaWxsYWdlLFNoaXlhbiBUb3duLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDgKLQkJCQlDSElOQQotCi0wMC0yNS1EQyAgIChoZXgpCQlTdW1pdG9tbyBFbGVjdHJpYyBOZXR3b3JrcywgSW5jCi0wMDI1REMgICAgIChiYXNlIDE2KQkJU3VtaXRvbW8gRWxlY3RyaWMgTmV0d29ya3MsIEluYwotCQkJCTEtMS0zLCBTaGltYXlhLCBLb25vaGFuYS1rdQotCQkJCU9zYWthIE9zYWthIFByZWZlY3R1cmUgNTU0LTAwMjQKLQkJCQlKQVBBTgotCi0wMC0yNS1ERCAgIChoZXgpCQlTVU5OWVRFSyBJTkZPUk1BVElPTiBDTy4sIExURC4KLTAwMjVERCAgICAgKGJhc2UgMTYpCQlTVU5OWVRFSyBJTkZPUk1BVElPTiBDTy4sIExURC4KLQkJCQkxMkYsIE5PLiA4OCwgSFNJTi1URSBST0FECi0JCQkJU0FOIENIVU5HIENJVFkKLQkJCQlUQUlQRUkgSFNJRU4gIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjUtREUgICAoaGV4KQkJUHJvYml0cyBDby4sIExURC4KLTAwMjVERSAgICAgKGJhc2UgMTYpCQlQcm9iaXRzIENvLiwgTFRELgotCQkJCSMxNTAyLCBLb2xvbiBTY2llbmNlIFZhbGxleSBJSSwgODExCi0JCQkJR3Vyby1Eb25nLCBHdXJvLUd1LAotCQkJCVNlb3VsICAxNTItODc4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LURGICAgKGhleCkJCVBSSVZBVEUKLTAwMjVERiAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMjUtRTAgICAoaGV4KQkJQ2VlZFRlYyBTZG4gQmhkCi0wMDI1RTAgICAgIChiYXNlIDE2KQkJQ2VlZFRlYyBTZG4gQmhkCi0JCQkJMzAzLTQtNSwgS3J5c3RhbCBQb2ludCBCdXNpbmVzcyBDZW50ZXIKLQkJCQlCYXlhbiBMZXBhcyBQZW5hbmcgMTE5MDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yNS1FMSAgIChoZXgpCQlTSEFOR0hBSSBTRUVZT08gRUxFQ1RST05JQyAmIFRFQ0hOT0xPR1kgQ08uLCBMVEQKLTAwMjVFMSAgICAgKGJhc2UgMTYpCQlTSEFOR0hBSSBTRUVZT08gRUxFQ1RST05JQyAmIFRFQ0hOT0xPR1kgQ08uLCBMVEQKLQkJCQlSTTcwMSxYSU4nQU4gQlVJTERJTkcsOTkgVElBTlpIT1UgUkQsWFVIVUkgRElTVFJJQ1QsU0hBTkdIQUkKLQkJCQlTSEFOR0hBSSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMjUtRTIgICAoaGV4KQkJRXZlcnNwcmluZyBJbmR1c3RyeSBDby4sIEx0ZC4KLTAwMjVFMiAgICAgKGJhc2UgMTYpCQlFdmVyc3ByaW5nIEluZHVzdHJ5IENvLiwgTHRkLgotCQkJCTdGLiwgTm8uIDYwOSwgU2VjIDEsIFdhbnNob3UgUmQuCi0JCQkJR3VlaXNoYW4gVG93bnNoaXAgVGFveXVhbiBDb3VudHkgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1FMyAgIChoZXgpCQlIYW5zaGluaXQgSW5jLgotMDAyNUUzICAgICAoYmFzZSAxNikJCUhhbnNoaW5pdCBJbmMuCi0JCQkJRG9uZy1Xb24gQmxkIDNGLCAzOTUtMTMsIEdhbC1NYSAyLCBTZW8tR3UKLQkJCQlEYWVqZW9uICAzMDItODA5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUU0ICAgKGhleCkJCU9NTkktV2lGaSwgTExDCi0wMDI1RTQgICAgIChiYXNlIDE2KQkJT01OSS1XaUZpLCBMTEMKLQkJCQkxMDcgUGluZSBIaWxsIFJvYWQKLQkJCQlCZXJ3aWNrIE1haW5lIDAzOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1FNSAgIChoZXgpCQlMRyBFbGVjdHJvbmljcyBJbmMKLTAwMjVFNSAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcyBJbmMKLQkJCQk2MC0zOSAsR2FzYW4tRG9uZwotCQkJCUd1bWNob24tZ3UKLQkJCQlTZW91bCAgMTUzLTAyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS1FNiAgIChoZXgpCQlCZWxnaWFuIE1vbml0b3JpbmcgU3lzdGVtcyBidmJhCi0wMDI1RTYgICAgIChiYXNlIDE2KQkJQmVsZ2lhbiBNb25pdG9yaW5nIFN5c3RlbXMgYnZiYQotCQkJCVRoLiBTZXZlbnNsYWFuIDEwNgotCQkJCUtvcnRyaWprIFdWTCA4NTAwCi0JCQkJQkVMR0lVTQotCi0wMC0yNS1FNyAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAyNUU3ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTAwLTI1LUU4ICAgKGhleCkJCUlkYWhvIFRlY2hub2xvZ3kKLTAwMjVFOCAgICAgKGJhc2UgMTYpCQlJZGFobyBUZWNobm9sb2d5Ci0JCQkJMzkwIFdha2FyYSB3YXkKLQkJCQlTYWx0IGxha2UgQ2l0eSBVVCA4NDEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtRTkgICAoaGV4KQkJaS1tYXRlIERldmVsb3BtZW50LCBJbmMuCi0wMDI1RTkgICAgIChiYXNlIDE2KQkJaS1tYXRlIERldmVsb3BtZW50LCBJbmMuCi0JCQkJODM4MyAxNTh0aCBBdmUuIE4uRS4sIFN1aXRlIDMwMCwgUmVkbW9uZCwKLQkJCQlXQSA5ODA1Mi0zODcxCi0JCQkJV2FzaGluZ3RvbiBXQSA5ODA1Mi0zODcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1FQSAgIChoZXgpCQlJcGhpb24gQlYKLTAwMjVFQSAgICAgKGJhc2UgMTYpCQlJcGhpb24gQlYKLQkJCQlXaWxsZW1zdHJhYXQgMTA2Ci0JCQkJRWluZGhvdmVuICA1NjE2R0UKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yNS1FQiAgIChoZXgpCQlSZXV0ZWNoIFJhZGFyIFN5c3RlbXMgKFBUWSkgTHRkCi0wMDI1RUIgICAgIChiYXNlIDE2KQkJUmV1dGVjaCBSYWRhciBTeXN0ZW1zIChQVFkpIEx0ZAotCQkJCTM1IEVsZWN0cm9uIEF2ZW51ZQotCQkJCVRlY2hub3BhcmsKLQkJCQlTdGVsbGVuYm9zY2ggV2VzdGVybiBDYXBlIDc2MDAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMjUtRUMgICAoaGV4KQkJSHVtYW53YXJlCi0wMDI1RUMgICAgIChiYXNlIDE2KQkJSHVtYW53YXJlCi0JCQkJNDQ1IHJ1ZSBkdSBQYXJjIEluZHVzdHJpZWwKLQkJCQlMb25ndWV1aWwgUXXpYmVjIEo0SCAzVjcKLQkJCQlDQU5BREEKLQotMDAtMjUtRUQgICAoaGV4KQkJTnVWbyBUZWNobm9sb2dpZXMgTExDCi0wMDI1RUQgICAgIChiYXNlIDE2KQkJTnVWbyBUZWNobm9sb2dpZXMgTExDCi0JCQkJMzAxNSBLdXN0b20gRHJpdmUKLQkJCQlIZWJyb24gS1kgNDEwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUVFICAgKGhleCkJCUF2dGV4IEx0ZAotMDAyNUVFICAgICAoYmFzZSAxNikJCUF2dGV4IEx0ZAotCQkJCVVuaXQgRzUgQ2FwaXRhbCBCdXNpbmVzcyBQYXJrCi0JCQkJUGFya3dheQotCQkJCUNhcmRpZmYgIENGMyAyUFgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNS1FRiAgIChoZXgpCQlJLVRFQyBDby4sIEx0ZC4KLTAwMjVFRiAgICAgKGJhc2UgMTYpCQlJLVRFQyBDby4sIEx0ZC4KLQkJCQk3L0YsS0FXQVJBTUFDSEkgS09ZTyBCTERHLjMtNC0zLEtBV0FSQU1DSEksQ0hVTy1LVSwKLQkJCQlPU0FLQSAgNTQxLTAwNDgKLQkJCQlKQVBBTgotCi0wMC0yNS1GMCAgIChoZXgpCQlTdWdhIEVsZWN0cm9uaWNzIExpbWl0ZWQKLTAwMjVGMCAgICAgKGJhc2UgMTYpCQlTdWdhIEVsZWN0cm9uaWNzIExpbWl0ZWQKLQkJCQlVbml0cyAxOTA0LTE5MDcsIENoZXZhbGllciBDb21tZXJjaWFsIENlbnRyZSwKLQkJCQk4IFdhbmcgSG9pIFJvYWQsICwKLQkJCQlLb3dsb29uIEJheSBIb25nIEtvbmcgCi0JCQkJQ0hJTkEKLQotMDAtMjUtRjEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjVGMSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUYyICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDI1RjIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1GMyAgIChoZXgpCQlOb3Jkd2VzdGRldXRzY2hlIFrkaGxlcnJldmlzaW9uCi0wMDI1RjMgICAgIChiYXNlIDE2KQkJTm9yZHdlc3RkZXV0c2NoZSBa5GhsZXJyZXZpc2lvbgotCQkJCUluZy4gQXVnLiBLbmVtZXllciBHbWJIICYgQ28uIEtHCi0JCQkJSGVpZGV3ZWcgMzMKLQkJCQlCYWQgTGFlciBOaWVkZXJzYWNoc2VuIDQ5MTk2Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS1GNCAgIChoZXgpCQlLb0NvIENvbm5lY3RvciBBRwotMDAyNUY0ICAgICAoYmFzZSAxNikJCUtvQ28gQ29ubmVjdG9yIEFHCi0JCQkJTWFyaWVuc3RyYd9lIDEyCi0JCQkJQmVybGluICAxMDExNwotCQkJCUdFUk1BTlkKLQotMDAtMjUtRjUgICAoaGV4KQkJRFZTIEtvcmVhLCBDby4sIEx0ZAotMDAyNUY1ICAgICAoYmFzZSAxNikJCURWUyBLb3JlYSwgQ28uLCBMdGQKLQkJCQk0OTctMywgU2FuZ0hhLURvbmcsIEdpaGV1bmctZ3UKLQkJCQlSJkQgSGFyZHdhcmUgMlRlYW0KLQkJCQlZb25nLUluIGNpdHkgR3llb25nZ2ktZG8gNDQ2LTkxNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS1GNiAgIChoZXgpCQluZXRUQUxLLmNvbSwgSW5jLgotMDAyNUY2ICAgICAoYmFzZSAxNikJCW5ldFRBTEsuY29tLCBJbmMuCi0JCQkJMTEwMCBOVyAxNjNSRCBEUklWRQotCQkJCVNVSVRFIEItNAotCQkJCU5PUlRIIE1JQU1JIEJFQUNIIEZMIDMzMTY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1GNyAgIChoZXgpCQlBbnNhbGRvIFNUUyBVU0EKLTAwMjVGNyAgICAgKGJhc2UgMTYpCQlBbnNhbGRvIFNUUyBVU0EKLQkJCQkxMDAwIFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlVbmlvbiBTd2l0Y2ggJiBTaWduYWwgQnVpbGRpbmcKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1GOSAgIChoZXgpCQlHTUsgZWxlY3Ryb25pYyBkZXNpZ24gR21iSAotMDAyNUY5ICAgICAoYmFzZSAxNikJCUdNSyBlbGVjdHJvbmljIGRlc2lnbiBHbWJICi0JCQkJRGFpbWxlcnN0ci4gOAotCQkJCVdlcm5iZXJnLUtvZWJsaXR6IEJhdmFyaWEgRC05MjUzMwotCQkJCUdFUk1BTlkKLQotMDAtMjUtRkEgICAoaGV4KQkJSiZNIEFuYWx5dGlrIEFHCi0wMDI1RkEgICAgIChiYXNlIDE2KQkJSiZNIEFuYWx5dGlrIEFHCi0JCQkJV2lsbHktTWVzc2Vyc2NobWl0dC1TdHJhc3NlIDgKLQkJCQlFc3NpbmdlbiBCVyA3MzQ1NwotCQkJCUdFUk1BTlkKLQotMDAtMjUtRkIgICAoaGV4KQkJVHVuc3RhbGwgSGVhbHRoY2FyZSBBL1MKLTAwMjVGQiAgICAgKGJhc2UgMTYpCQlUdW5zdGFsbCBIZWFsdGhjYXJlIEEvUwotCQkJCVN0cm9lbW1lbiA2Ci0JCQkJTm9lcnJlc3VuZGJ5ICA5NDAwCi0JCQkJREVOTUFSSwotCi0wMC0yNS1GQyAgIChoZXgpCQlFTkRBIEVORFVTVFJJWUVMIEVMRUtUUk9OSUsgTFRELiBTVEkuCi0wMDI1RkMgICAgIChiYXNlIDE2KQkJRU5EQSBFTkRVU1RSSVlFTCBFTEVLVFJPTklLIExURC4gU1RJLgotCQkJCVkuIER1ZHVsbHUgQmFyYmFyb3MgQy4gS3V0dXAgUy4gTm8uIDIwCi0JCQkJVW1yYW5peWUKLQkJCQlJc3RhbmJ1bCAgMzQ3NzUKLQkJCQlUVVJLRVkKLQotMDAtMjUtRkQgICAoaGV4KQkJT0JSIENlbnRydW0gVGVjaG5pa2kgTW9yc2tpZWogUy5BLgotMDAyNUZEICAgICAoYmFzZSAxNikJCU9CUiBDZW50cnVtIFRlY2huaWtpIE1vcnNraWVqIFMuQS4KLQkJCQlEaWNrbWFuYSA2MgotCQkJCUdkeW5pYSAgODEtMTA5Ci0JCQkJUE9MQU5ECi0KLTAwLTI1LUZFICAgKGhleCkJCVBpbG90IEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCi0wMDI1RkUgICAgIChiYXNlIDE2KQkJUGlsb3QgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLQkJCQlOby4gMiwgVHp1LUNoaWFuZyAzcmQgUm9hZCwgQ2h1bmctTGkgSW5kdXN0cmlhbCBab25lLAotCQkJCVRhb3l1YW4gIEhzaWVuIDMyMDYzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1GRiAgIChoZXgpCQlDcmVOb3ZhIFRlY2hub2xvZ3kgR21iSAotMDAyNUZGICAgICAoYmFzZSAxNikJCUNyZU5vdmEgVGVjaG5vbG9neSBHbWJICi0JCQkJQW4gZGVyIFNjaGluZGhvaGwgNwotCQkJCVN1bHpiYWNoIEhlc3NlbiA2NTg0MwotCQkJCUdFUk1BTlkKLQotMDAtMjYtMDAgICAoaGV4KQkJVEVBQyBBdXN0cmFsaWEgUHR5IEx0ZC4KLTAwMjYwMCAgICAgKGJhc2UgMTYpCQlURUFDIEF1c3RyYWxpYSBQdHkgTHRkLgotCQkJCTc1IE5vcnRoZ2F0ZSBEcml2ZQotCQkJCVRob21hc3Rvd24gVmljdG9yaWEgMzA3NAotCQkJCUFVU1RSQUxJQQotCi0wMC0yNi0wMSAgIChoZXgpCQlQUklWQVRFCi0wMDI2MDEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTI2LTAyICAgKGhleCkJCVNNQVJUIFRlbXBzIExMQwotMDAyNjAyICAgICAoYmFzZSAxNikJCVNNQVJUIFRlbXBzIExMQwotCQkJCTMwMyBTIEJ5cmtpdCBTdAotCQkJCU1pc2hhd2FrYSBJTiA0NjU0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMDMgICAoaGV4KQkJU2hlbnpoZW4gV2lzdGFyIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMjYwMyAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBXaXN0YXIgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCVJtOTE5LCBTY2llbmNlICZUZWNobm9sb2d5IFNlcnZpY2UgQ2VudGVyCi0JCQkJTm8uMSBRaWxpbiBSZAotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjYtMDQgICAoaGV4KQkJQXVkaW8gUHJvY2Vzc2luZyBUZWNobm9sb2d5IEx0ZAotMDAyNjA0ICAgICAoYmFzZSAxNikJCUF1ZGlvIFByb2Nlc3NpbmcgVGVjaG5vbG9neSBMdGQKLQkJCQlXaGl0ZXJvY2sgQnVzaW5lc3MgUGFyawotCQkJCTcyOSBTcHJpbmdmaWVsZCBSb2FkCi0JCQkJQmVsZmFzdCBDb3VudHkgQW50cmltIEJUMTIgN0ZQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjYtMDUgICAoaGV4KQkJQ0MgU3lzdGVtcyBBQgotMDAyNjA1ICAgICAoYmFzZSAxNikJCUNDIFN5c3RlbXMgQUIKLQkJCQlCb3ggODMKLQkJCQlBbGZ0YSBTd2VkZW4gODIyMjIKLQkJCQlTV0VERU4KLQotMDAtMjYtMDYgICAoaGV4KQkJUkFVTUZFTEQgR21iSAotMDAyNjA2ICAgICAoYmFzZSAxNikJCVJBVU1GRUxEIEdtYkgKLQkJCQlSZWljaGVuYmVyZ2VyIFN0ci4gMTI0Ci0JCQkJQmVybGluICAxMDk5OQotCQkJCUdFUk1BTlkKLQotMDAtMjYtMDcgICAoaGV4KQkJRW5hYmxpbmcgVGVjaG5vbG9neSBQdHkgTHRkCi0wMDI2MDcgICAgIChiYXNlIDE2KQkJRW5hYmxpbmcgVGVjaG5vbG9neSBQdHkgTHRkCi0JCQkJMjMvNDQgS2luZ3MgUGFyayBSb2FkCi0JCQkJV2VzdCBQZXJ0aCBXZXN0ZXJuIEF1c3RyYWxpYSA2MDA1Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTI2LTA4ICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjYwOCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wOSAgIChoZXgpCQlQaHlsbGlzIENvLiwgTHRkLgotMDAyNjA5ICAgICAoYmFzZSAxNikJCVBoeWxsaXMgQ28uLCBMdGQuCi0JCQkJOXRoIEZsLiwgUm9vbSAzLzQsIE5vLiA1MiwgU2VjLiAyLCBDaHVuZyBTaGFuIE5vcnRoIFJvYWQsCi0JCQkJVGFpcGVpICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTBBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjYwQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2MEIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMEMgICAoaGV4KQkJRGF0YXJhbQotMDAyNjBDICAgICAoYmFzZSAxNikJCURhdGFyYW0KLQkJCQkxODYgUHJpbmNldG9uIFJkLgotCQkJCUJsZGcuIDNBCi0JCQkJV2VzdCBXaW5kc29yIE5KIDA4NTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wRCAgIChoZXgpCQlNaWNyb25ldGljcywgSW5jLgotMDAyNjBEICAgICAoYmFzZSAxNikJCU1pY3JvbmV0aWNzLCBJbmMuCi0JCQkJMjYgSGFtcHNoaXJlIERyCi0JCQkJSHVkc29uIE5IIDAzMDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wRSAgIChoZXgpCQlBYmxhemUgU3lzdGVtcywgTExDCi0wMDI2MEUgICAgIChiYXNlIDE2KQkJQWJsYXplIFN5c3RlbXMsIExMQwotCQkJCTUyMyBXZXN0IFZhbGxleSBSb2FkCi0JCQkJV2F5bmUgUGVubnN5bHZhbmlhIDE5MDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wRiAgIChoZXgpCQlMaW5uIFByb2R1Y3RzIEx0ZAotMDAyNjBGICAgICAoYmFzZSAxNikJCUxpbm4gUHJvZHVjdHMgTHRkCi0JCQkJR2xhc2dvdyBSb2FkCi0JCQkJV2F0ZXJmb290Ci0JCQkJR2xhc2dvdyAgRzc2IDBFUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI2LTEwICAgKGhleCkJCUFwYWNld2F2ZSBUZWNobm9sb2dpZXMKLTAwMjYxMCAgICAgKGJhc2UgMTYpCQlBcGFjZXdhdmUgVGVjaG5vbG9naWVzCi0JCQkJNDgzODkgRnJlbW9udCBCbHZkLCBTVEUjMTAwCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMTEgICAoaGV4KQkJTGljZXJhIEFCCi0wMDI2MTEgICAgIChiYXNlIDE2KQkJTGljZXJhIEFCCi0JCQkJVGVrbmlrcmluZ2VuIDFDCi0JCQkJTGlua/ZwaW5nICA1ODMzMAotCQkJCVNXRURFTgotCi0wMC0yNi0xMiAgIChoZXgpCQlTcGFjZSBFeHBsb3JhdGlvbiBUZWNobm9sb2dpZXMKLTAwMjYxMiAgICAgKGJhc2UgMTYpCQlTcGFjZSBFeHBsb3JhdGlvbiBUZWNobm9sb2dpZXMKLQkJCQkxIFJvY2tldCBSb2FkCi0JCQkJSGF3dGhvcm5lIENBIDkwMjUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0xMyAgIChoZXgpCQlFbmdlbCBBeGlsIFMuTC4KLTAwMjYxMyAgICAgKGJhc2UgMTYpCQlFbmdlbCBBeGlsIFMuTC4KLQkJCQlQdWlnIGRlbHMgVHVkb25zLCA2Ci0JCQkJUG9sLiBJbmR1c3RyaWFsIFNhbnRpZ2EKLQkJCQlCYXJiZXJhIGRlbCBWYWxsZXMgQmFyY2Vsb25hIDA4MjEwCi0JCQkJU1BBSU4KLQotMDAtMjYtMTQgICAoaGV4KQkJS1RORgotMDAyNjE0ICAgICAoYmFzZSAxNikJCUtUTkYKLQkJCQkyMDQsRGFlcnl1bmd0ZWNobm90b3duMSwzMjcsR2FzYW4tRG9uZywKLQkJCQlHZXVtY2hlb24tR3UsCi0JCQkJU2VvdWwgIDE1My03NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtMTUgICAoaGV4KQkJVGVyYWNvbSBMaW1pdGVkCi0wMDI2MTUgICAgIChiYXNlIDE2KQkJVGVyYWNvbSBMaW1pdGVkCi0JCQkJQi04NAotCQkJCVNlY3RvciAtIDYwCi0JCQkJTm9pZGEgVXR0YXIgUHJhZGVzaCAyMDEzMDEKLQkJCQlJTkRJQQotCi0wMC0yNi0xNiAgIChoZXgpCQlSb3NlbW91bnQgSW5jLgotMDAyNjE2ICAgICAoYmFzZSAxNikJCVJvc2Vtb3VudCBJbmMuCi0JCQkJODIwMCBNYXJrZXQgQm91bGV2YXJkCi0JCQkJQ2hhbmhhc3NlbiBNTiA1NTMxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMTcgICAoaGV4KQkJT0VNIFdvcmxkd2lkZQotMDAyNjE3ICAgICAoYmFzZSAxNikJCU9FTSBXb3JsZHdpZGUKLQkJCQkyOTIwIEtlbGx5IEF2ZQotCQkJCVdhdGVydG93biBTRCA1NzIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMTggICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDI2MTggICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdQotCQkJCVRhaXBlaSBUYWl3YW4gMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi0xOSAgIChoZXgpCQlGUkMKLTAwMjYxOSAgICAgKGJhc2UgMTYpCQlGUkMKLQkJCQkxNTExIFNvdXRoIEJlbmphbWluIEF2ZW51ZQotCQkJCU1hc29uIENpdHkgSUEgNTA0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTFBICAgKGhleCkJCUZlbXRvY29tbSBTeXN0ZW0gVGVjaG5vbG9neSBDb3JwLgotMDAyNjFBICAgICAoYmFzZSAxNikJCUZlbXRvY29tbSBTeXN0ZW0gVGVjaG5vbG9neSBDb3JwLgotCQkJCTJGLi0yLE5vLjI4LCBUYWl5dWFuIFN0LiwKLQkJCQlKaHViZWkgQ2l0eSwgSHNpbmNodSBDb3VudHJ5LCAzMDI4OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtMUIgICAoaGV4KQkJTEFVUkVMIEJBTksgTUFDSElORVMgQ08uLCBMVEQuCi0wMDI2MUIgICAgIChiYXNlIDE2KQkJTEFVUkVMIEJBTksgTUFDSElORVMgQ08uLCBMVEQuCi0JCQkJMTItNgotCQkJCWhpZ2FzaGl0YWJhdGEgMS1DaG9tZQotCQkJCUtpdGEtS3UgVG9reW8gMTE0LTAwMTMKLQkJCQlKQVBBTgotCi0wMC0yNi0xQyAgIChoZXgpCQlORU9WSUEgSU5DLgotMDAyNjFDICAgICAoYmFzZSAxNikJCU5FT1ZJQSBJTkMuCi0JCQkJNTAzIExPVFRFIElUIENBU1RMRSAxRE9ORyw1NTAtMQotCQkJCUdBU0FOLURPTkcsIEdFVU1DSEVPTi1HVQotCQkJCVNFT1VMICAxNTMtNzY4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTFEICAgKGhleCkJCUNPUCBTRUNVUklUWSBTWVNURU0gQ09SUC4KLTAwMjYxRCAgICAgKGJhc2UgMTYpCQlDT1AgU0VDVVJJVFkgU1lTVEVNIENPUlAuCi0JCQkJNH43RiwgTm8uNSwgTGFuZSAxMzAsIE1pbi1DaHVuZyBSZC4sCi0JCQkJSHNpbiBUaWVuIENpdHkKLQkJCQlUYWlwZWkgIDIzMTQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi0xRSAgIChoZXgpCQlRSU5HQkFORyBFTEVDKFNaKSBDTy4sIExURAotMDAyNjFFICAgICAoYmFzZSAxNikJCVFJTkdCQU5HIEVMRUMoU1opIENPLiwgTFRECi0JCQkJTm8uIDIsIHFpbWluIFJkLiBOb3J0aCBEaXN0cmljdCwgSGlnaC10ZWNoIEluZHVzdHJpYWwgUGFyaywgTmFuc2hhbiwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjYtMUYgICAoaGV4KQkJU0FFIE1hZ25ldGljcyAoSC5LLikgTHRkLgotMDAyNjFGICAgICAoYmFzZSAxNikJCVNBRSBNYWduZXRpY3MgKEguSy4pIEx0ZC4KLQkJCQlTQUUgVGVjaG5vbG9neSBDZW50cmUKLQkJCQk2IFNjaWVuY2UgUGFyayBFYXN0IEF2ZW51ZQotCQkJCUhvbmcgS29uZyBTY2llbmNlIFBhcmsgU2hhdGluLCBOZXcgVGVycml0b3JpZXMgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTI2LTIwICAgKGhleCkJCUlTR1VTIEdtYkgKLTAwMjYyMCAgICAgKGJhc2UgMTYpCQlJU0dVUyBHbWJICi0JCQkJT2JlcmRvcmZzdHJh32UgMTggLSAyMgotCQkJCVZTIC0gU2Nod2VubmluZ2VuIEJXIDc4MDU0Ci0JCQkJR0VSTUFOWQotCi0wMC0yNi0yMSAgIChoZXgpCQlJbnRlbGlDbG91ZCBUZWNobm9sb2d5IEluYy4KLTAwMjYyMSAgICAgKGJhc2UgMTYpCQlJbnRlbGlDbG91ZCBUZWNobm9sb2d5IEluYy4KLQkJCQk4OTUgRG92ZSBTdC4KLQkJCQlTdGUuIDMwMAotCQkJCU5ld3BvcnQgQmVhY2ggQ0EgOTI2NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTIyICAgKGhleCkJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuCi0wMDI2MjIgICAgIChiYXNlIDE2KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURC4KLQkJCQlOTy4gMjUsIFRIRSAzUkQgU3RyZWV0IEtVTlNIQU4gRVhQT1JUIFBST0NFU1NJTkcgWk9ORQotCQkJCUtVTlNIQU4gU1VaSE9VIDIxNTMwMAotCQkJCUNISU5BCi0KLTAwLTI2LTIzICAgKGhleCkJCUpSRCBDb21tdW5pY2F0aW9uIEluYwotMDAyNjIzICAgICAoYmFzZSAxNikJCUpSRCBDb21tdW5pY2F0aW9uIEluYwotCQkJCTE2L0YsIFRDTCBUb3dlciwgR2FveGluIE5hbnlpIFJvYWQsIE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjYtMjQgICAoaGV4KQkJVGhvbXNvbiBJbmMuCi0wMDI2MjQgICAgIChiYXNlIDE2KQkJVGhvbXNvbiBJbmMuCi0JCQkJMTAxIFdlc3QgMTAzcmQgU3RyZWV0Ci0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0yNSAgIChoZXgpCQlNZWRpYVNwdXRuaWsKLTAwMjYyNSAgICAgKGJhc2UgMTYpCQlNZWRpYVNwdXRuaWsKLQkJCQlZYXJvc2xhdnNrb2Ugc2hvc3NlLCAxOSwKLQkJCQlNb3Njb3cgIDEyOTMzNwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yNi0yNiAgIChoZXgpCQlHZW9waHlzaWNhbCBTdXJ2ZXkgU3lzdGVtcywgSW5jLgotMDAyNjI2ICAgICAoYmFzZSAxNikJCUdlb3BoeXNpY2FsIFN1cnZleSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTIgSW5kdXN0cmlhbCBXYXkKLQkJCQlTYWxlbSBOSCAwMzA3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMjcgICAoaGV4KQkJVHJ1ZXNlbGwKLTAwMjYyNyAgICAgKGJhc2UgMTYpCQlUcnVlc2VsbAotCQkJCTMwMSBTdW5neXVuIEJsZGcsIDg5LTIKLQkJCQlZYW5namFlLWRvbmcsCi0JCQkJU2VvY2hvLWd1LCBTZW91bCAxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTI4ICAgKGhleCkJCWNvbXBhbnl0ZWMgYXV0b21h5+NvIGUgY29udHJvbGUgbHRkYQotMDAyNjI4ICAgICAoYmFzZSAxNikJCWNvbXBhbnl0ZWMgYXV0b21h5+NvIGUgY29udHJvbGUgbHRkYQotCQkJCVJ1YSBNYXJjaWxpbyBEaWFzIDMwMDUKLQkJCQlQZWxvdGFzIFJpbyBHcmFuZGUgZG8gU3VsIDk2MDIwLTQ4MAotCQkJCUJSQVpJTAotCi0wMC0yNi0yOSAgIChoZXgpCQlKdXBob29uIFN5c3RlbSBTb2Z0d2FyZSBJbmMuCi0wMDI2MjkgICAgIChiYXNlIDE2KQkJSnVwaG9vbiBTeXN0ZW0gU29mdHdhcmUgSW5jLgotCQkJCVJvb20gOTEwLEJ1aWxkaW5nIDIKLQkJCQlTaGFuZ2RvbmcgSW50ZXJuYXRpb24gQnVpbGRpbmcsSmlhbmdkb25nIERpc3RyaWN0Ci0JCQkJTmluZ2JvIFpoZWppYW5nIDMxNTA0MQotCQkJCUNISU5BCi0KLTAwLTI2LTJBICAgKGhleCkJCVByb3hlbnNlLCBMTEMKLTAwMjYyQSAgICAgKGJhc2UgMTYpCQlQcm94ZW5zZSwgTExDCi0JCQkJNjg5IE5XIFN0b25lcGluZSBEcgotCQkJCUJlbmQgT3JlZ29uIDk3NzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0yQiAgIChoZXgpCQlXb25ncyBFbGVjdHJvbmljcyBDby4gTHRkLgotMDAyNjJCICAgICAoYmFzZSAxNikJCVdvbmdzIEVsZWN0cm9uaWNzIENvLiBMdGQuCi0JCQkJV2FuZmVuZyBJbmQuIEVzYXRhLCBTaGFqaW5nLCBCYW9hbiwKLQkJCQlTaGVuemhlbiBHdWFuZyBEb25nIDUxODEwNAotCQkJCUNISU5BCi0KLTAwLTI2LTJDICAgKGhleCkJCUlLVCBBZHZhbmNlZCBUZWNobm9sb2dpZXMgcy5yLm8uCi0wMDI2MkMgICAgIChiYXNlIDE2KQkJSUtUIEFkdmFuY2VkIFRlY2hub2xvZ2llcyBzLnIuby4KLQkJCQlQaXNlY2tlaG8gMzM0LzE5Ci0JCQkJUHJhaGEgNSAgMTUwMDAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0yNi0yRCAgIChoZXgpCQlXaXN0cm9uIENvcnBvcmF0aW9uCi0wMDI2MkQgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotCQkJCTIxRiwgODgsIFNlYy4xLCBIc2luIFRhaSBXdSBSZC4sIEhzaWNoaWgsCi0JCQkJVGFpcGVpIEhzaWVuIFRhaXdhbiAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTJFICAgKGhleCkJCUNoZW5nZHUgSml1emhvdSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgSW5jCi0wMDI2MkUgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSBKaXV6aG91IEVsZWN0cm9uaWMgVGVjaG5vbG9neSBJbmMKLQkJCQlBMiBCdWlsZGluZyxUaWFuZnUgU29mdHdhcmUgUGFyawotCQkJCU5vLjc2NSxNaWQgVGlhbmZ1IEF2ZW51ZSxIaWdoLXRlY2ggaW5kdXN0cmlhbCBEZXZlbG9wbWVudCBab25lCi0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLTAwLTI2LTJGICAgKGhleCkJCUhBTUFNQVRTVSBUT0EgRUxFQ1RST05JQ1MKLTAwMjYyRiAgICAgKGJhc2UgMTYpCQlIQU1BTUFUU1UgVE9BIEVMRUNUUk9OSUNTCi0JCQkJOTE2Mi0xCi0JCQkJTUlZQUtPREEtQ0hPCi0JCQkJSEFNQU1BVFNVIFNJWlVPS0EgNDMxLTIxMDIKLQkJCQlKQVBBTgotCi0wMC0yNi0zMCAgIChoZXgpCQlBQ09SRUwgUy5BLlMKLTAwMjYzMCAgICAgKGJhc2UgMTYpCQlBQ09SRUwgUy5BLlMKLQkJCQkzLCBSdWUgUGF1bCBMQU5HRVZJTgotCQkJCVNBSU5ULVBFUkFZICBGLTA3MTMwCi0JCQkJRlJBTkNFCi0KLTAwLTI2LTMxICAgKGhleCkJCUNPTU1UQUNUIExURAotMDAyNjMxICAgICAoYmFzZSAxNikJCUNPTU1UQUNUIExURAotCQkJCU5haGFsIFNuaXIgMTAKLQkJCQlQTyBCb3ggMTY5Ci0JCQkJWWF6bmUgIDgxMTAxCi0JCQkJSVNSQUVMCi0KLTAwLTI2LTMyICAgKGhleCkJCUluc3RydW1lbnRhdGlvbiBUZWNobm9sb2dpZXMgZC5kLgotMDAyNjMyICAgICAoYmFzZSAxNikJCUluc3RydW1lbnRhdGlvbiBUZWNobm9sb2dpZXMgZC5kLgotCQkJCVZlbGlrYSBwb3QgMjIKLQkJCQlTb2xrYW4gTm92YSBHb3JpY2EgNTI1MAotCQkJCVNMT1ZFTklBCi0KLTAwLTI2LTMzICAgKGhleCkJCU1JUiAtIE1lZGljYWwgSW50ZXJuYXRpb25hbCBSZXNlYXJjaAotMDAyNjMzICAgICAoYmFzZSAxNikJCU1JUiAtIE1lZGljYWwgSW50ZXJuYXRpb25hbCBSZXNlYXJjaAotCQkJCVZpYSBkZWwgTWFnZ2lvbGlubyAxMjUKLQkJCQlSb21lIFJNIDAwMTU1Ci0JCQkJSVRBTFkKLQotMDAtMjYtMzQgICAoaGV4KQkJSW5maW5ldGEgU3lzdGVtcywgSW5jCi0wMDI2MzQgICAgIChiYXNlIDE2KQkJSW5maW5ldGEgU3lzdGVtcywgSW5jCi0JCQkJMjg3MCBaYW5rZXIgUmQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMzUgICAoaGV4KQkJQmx1ZXRlY2huaXggR21iSAotMDAyNjM1ICAgICAoYmFzZSAxNikJCUJsdWV0ZWNobml4IEdtYkgKLQkJCQlXYWlkaGF1c2Vuc3RyLiAzLzE5Ci0JCQkJVmllbm5hICAxMTQwCi0JCQkJQVVTVFJJQQotCi0wMC0yNi0zNiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyNjM2ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIFVTIDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0zNyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm8tTWVjaGFuaWNzCi0wMDI2MzcgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvLU1lY2hhbmljcwotCQkJCTMxNCwgTWV0YW4gZG9uZwotCQkJCVN1d29uIEt5dW5nLWtpIGRvIDQ0My03NDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtMzggICAoaGV4KQkJWGlhIE1lbiBKb3lhdGVjaCBDby4sIEx0ZC4KLTAwMjYzOCAgICAgKGJhc2UgMTYpCQlYaWEgTWVuIEpveWF0ZWNoIENvLiwgTHRkLgotCQkJCVJvb20gMzA0LCAyOHRoIEJ1aWxkaW5nLCBHdWFucmkgUm9hZCwgWGlhbWVuIFNvZnR3YXJlIFBhcmsKLQkJCQlYaWFtZW4gRnVqaWFuIFByb3ZpbmNlIDM2MTAwOAotCQkJCUNISU5BCi0KLTAwLTI2LTM5ICAgKGhleCkJCVQuTS4gRWxlY3Ryb25pY3MsIEluYy4KLTAwMjYzOSAgICAgKGJhc2UgMTYpCQlULk0uIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJNDUgTWFpbiBTdAotCQkJCUJveWxzdG9uIE1BIDAxNTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0zQSAgIChoZXgpCQlEaWdpdGVjIFN5c3RlbXMKLTAwMjYzQSAgICAgKGJhc2UgMTYpCQlEaWdpdGVjIFN5c3RlbXMKLQkJCQlDNUEvMjU3LCAxc3QgRmxvb3IKLQkJCQlKYW5ha3B1cmkKLQkJCQlOZXcgRGVsaGkgRGVsaGkgMTEwMDU4Ci0JCQkJSU5ESUEKLQotMDAtMjYtM0IgICAoaGV4KQkJT25ibmV0ZWNoCi0wMDI2M0IgICAgIChiYXNlIDE2KQkJT25ibmV0ZWNoCi0JCQkJNTA2LCBTYW1zdW5nIElUIFZhbGxleSwgMTk3LTUKLQkJCQlHdXJvLURvbmcKLQkJCQlHdXJvLUd1IFNlb3VsIDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtM0MgICAoaGV4KQkJQmFjaG1hbm4gR21iSCAmIENvLiBLRwotMDAyNjNDICAgICAoYmFzZSAxNikJCUJhY2htYW5uIEdtYkggJiBDby4gS0cKLQkJCQlFcm5zdGhhbGRlbnN0cmFzc2UgMzMKLQkJCQlTdHV0dGdhcnQgQlcgNzA1NjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTI2LTNEICAgKGhleCkJCU1JQSBDb3Jwb3JhdGlvbgotMDAyNjNEICAgICAoYmFzZSAxNikJCU1JQSBDb3Jwb3JhdGlvbgotCQkJCTEtMy0xNSBZb3NoaW5vLWNobywgTWluYW1pLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjMyLTAwMTQKLQkJCQlKQVBBTgotCi0wMC0yNi0zRSAgIChoZXgpCQlUcmFwZXplIE5ldHdvcmtzCi0wMDI2M0UgICAgIChiYXNlIDE2KQkJVHJhcGV6ZSBOZXR3b3JrcwotCQkJCTU3NTMgV2VzdCBMYXMgUG9zaXRhcyBCbHZkLgotCQkJCVBsZWFzYW50b24gQ2FsaWZvcm5pYSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtM0YgICAoaGV4KQkJTElPUyBUZWNobm9sb2d5IEdtYkgKLTAwMjYzRiAgICAgKGJhc2UgMTYpCQlMSU9TIFRlY2hub2xvZ3kgR21iSAotCQkJCVNjaGFuemVuc3RyYd9lIDM5Ci0JCQkJQnVpbGRpbmcgRDktRDEzCi0JCQkJS/ZsbiBHZXJtYW55IEQtNTEwNjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTI2LTQwICAgKGhleCkJCUJhdXN0ZW0gQnJvYWRiYW5kIFRlY2hub2xvZ2llcywgTHRkLgotMDAyNjQwICAgICAoYmFzZSAxNikJCUJhdXN0ZW0gQnJvYWRiYW5kIFRlY2hub2xvZ2llcywgTHRkLgotCQkJCTkxMCBRdWFudHVtIFBsYXphCi0JCQkJTm8uMjMgWmhpY2h1biBSb2FkCi0JCQkJQmVpamluZyAgMTAwMTkxCi0JCQkJQ0hJTkEKLQotMDAtMjYtNDEgICAoaGV4KQkJTW90b3JvbGEsIEluYwotMDAyNjQxICAgICAoYmFzZSAxNikJCU1vdG9yb2xhLCBJbmMKLQkJCQkxMTAxIE1hcmluYSBWaWxsYWdlIFBhcmt3YXkKLQkJCQlTdWl0ZSAyMDAKLQkJCQlBbGFtZWRhIENBIDk0NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi00MiAgIChoZXgpCQlNb3Rvcm9sYSwgSW5jCi0wMDI2NDIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYwotCQkJCTExMDEgTWFyaW5hIFZpbGxhZ2UgUGFya3dheQotCQkJCVN1aXRlIDIwMAotCQkJCUFsYW1lZGEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTQzICAgKGhleCkJCUFscHMgRWxlY3RyaWMgQ28uLCBMdGQKLTAwMjY0MyAgICAgKGJhc2UgMTYpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0JCQkJMS0yLTEsT2tpbm91Y2hpCi0JCQkJU29tYS1jaXR5IEZ1a3VzaGltYS1rZW4gOTc2LTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yNi00NCAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDAyNjQ0ICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NwotCQkJCUVkZWdlbSBBbnR3ZXJwIEItMjY1MAotCQkJCUJFTEdJVU0KLQotMDAtMjYtNDUgICAoaGV4KQkJQ2lyY29udHJvbCBTLkEuCi0wMDI2NDUgICAgIChiYXNlIDE2KQkJQ2lyY29udHJvbCBTLkEuCi0JCQkJTGVwYW50IDQzCi0JCQkJVGVycmFzc2EgQmFyY2Vsb25hIDA4MjIzCi0JCQkJU1BBSU4KLQotMDAtMjYtNDYgICAoaGV4KQkJU0hFTllBTkcgVE9OR0ZBTkcgTVVMVElNRURJQSBURUNITk9MT0dZIENPTVBBTlkgTElNSVRFRAotMDAyNjQ2ICAgICAoYmFzZSAxNikJCVNIRU5ZQU5HIFRPTkdGQU5HIE1VTFRJTUVESUEgVEVDSE5PTE9HWSBDT01QQU5ZIExJTUlURUQKLQkJCQlOby4xMCBQaW5nIE5hbiBFYXN0IFJvYWQKLQkJCQlIdW5uYW4gTmV3IERpc3RyaWN0LgotCQkJCVNoZW55YW5nIExpYW8gTmluZyAxMTAwMTQKLQkJCQlDSElOQQotCi0wMC0yNi00NyAgIChoZXgpCQlXRkUgVEVDSE5PTE9HWSBDT1JQLgotMDAyNjQ3ICAgICAoYmFzZSAxNikJCVdGRSBURUNITk9MT0dZIENPUlAuCi0JCQkJMTdGIE5PLjIzOCxDaGluLUh1YSBOIFJkLAotCQkJCVRhaWNodW5nICA0MDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTQ4ICAgKGhleCkJCUVtaXRlY2ggQ29ycC4KLTAwMjY0OCAgICAgKGJhc2UgMTYpCQlFbWl0ZWNoIENvcnAuCi0JCQkJTm8uIDE1Ni01QSwgQ2hlbmdHb25nIDFzdCBTdC4sCi0JCQkJSmh1YmVpIENpdHkgSHNpbmNodSBDb3VudHkgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi00QSAgIChoZXgpCQlBcHBsZSwgSW5jCi0wMDI2NEEgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTRDICAgKGhleCkJCVNoYW5naGFpIERpZ2lWaXNpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjY0QyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBEaWdpVmlzaW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDMzMyBHdWFuZ2ppIFJkLgotCQkJCVNoYW5naGFpICAyMDAwODMKLQkJCQlDSElOQQotCi0wMC0yNi00RCAgIChoZXgpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDI2NEQgICAgIChiYXNlIDE2KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLiwgTm8uIDkgLCBQYXJrIEF2ZW51ZSBJSSAsCi0JCQkJSHNpbmNodSBTY2llbmNlIFBhcmsgLAotCQkJCUhzaW5jaHUgVGFpd2FuIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtNEUgICAoaGV4KQkJUmFpbCAmIFJvYWQgUHJvdGVjIEdtYkgKLTAwMjY0RSAgICAgKGJhc2UgMTYpCQlSYWlsICYgUm9hZCBQcm90ZWMgR21iSAotCQkJCU5vcmRlcmhvZmVuZGVuIDEyLTEzCi0JCQkJRmxlbnNidXJnICAyNDkzNwotCQkJCUdFUk1BTlkKLQotMDAtMjYtNEYgICAoaGV4KQkJS3L8Z2VyJkdvdGhlIEdtYkgKLTAwMjY0RiAgICAgKGJhc2UgMTYpCQlLcvxnZXImR290aGUgR21iSAotCQkJCUF0emVuZG9yZmVyIFN0cmFzc2UgMTkKLQkJCQlTdGFzc2Z1cnQgU2FjaHNlbiBBbmhhbHQgMzk0MTgKLQkJCQlHRVJNQU5ZCi0KLTAwLTI2LTUwICAgKGhleCkJCTJXaXJlCi0wMDI2NTAgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi01MSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2NTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNTIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNjUyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTUzICAgKGhleCkJCURheVNlcXVlcnJhIENvcnBvcmF0aW9uCi0wMDI2NTMgICAgIChiYXNlIDE2KQkJRGF5U2VxdWVycmEgQ29ycG9yYXRpb24KLQkJCQkxNTQgQ29vcGVyIFJvYWQKLQkJCQlTdWl0ZSAjOTAyCi0JCQkJV2VzdCBCZXJsaW4gTkogMDgwOTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTU0ICAgKGhleCkJCTNDb20gQ29ycG9yYXRpb24KLTAwMjY1NCAgICAgKGJhc2UgMTYpCQkzQ29tIENvcnBvcmF0aW9uCi0JCQkJNTM1MyBCZXRzeSBSb3NzIERyaXZlCi0JCQkJQmxkZyAxNCwgTS9TIDE0MjUKLQkJCQlTYW50YSBDbGFyYSBDYWxpZm9ybmlhIDk1MDU0LTExNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTU1ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDAyNjU1ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlNcyAwNjAzMDIKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi01NiAgIChoZXgpCQlTYW5zb25pYyBFbGVjdHJvbmljcyBVU0EKLTAwMjY1NiAgICAgKGJhc2UgMTYpCQlTYW5zb25pYyBFbGVjdHJvbmljcyBVU0EKLQkJCQk5OTUwIEJhbGR3aW4gUGxhY2UKLQkJCQlFbCBNb250ZSBDYWlsZm9ybmlhIDkxNzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi01NyAgIChoZXgpCQlPT08gTlBQIEVLUkEKLTAwMjY1NyAgICAgKGJhc2UgMTYpCQlPT08gTlBQIEVLUkEKLQkJCQlJLllha292bGV2YSBTdC4sIDMKLQkJCQlDaGVib2tzYXJ5IENodXZhc2ggUmVwdWJsaWMgNDI4MDAzCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTI2LTU4ICAgKGhleCkJCVQtUGxhdGZvcm1zIChDeXBydXMpIExpbWl0ZWQKLTAwMjY1OCAgICAgKGJhc2UgMTYpCQlULVBsYXRmb3JtcyAoQ3lwcnVzKSBMaW1pdGVkCi0JCQkJVGhlbWlzdG9rbGkgRGVydmkgMywgSnVsaWEgSG91c2UKLQkJCQlOaWNvc2lhICBQLkMuLTEwNjYKLQkJCQlDWVBSVVMKLQotMDAtMjYtNTkgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDI2NTkgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjYtNUEgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDI2NUEgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTm8uMjg5LCBTaW5odSAzcmQgUmQuLAotCQkJCU5laWh1IERpc3RyaWN0ICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTVCICAgKGhleCkJCUhpdHJvbiBUZWNobm9sb2dpZXMuIEluYwotMDAyNjVCICAgICAoYmFzZSAxNikJCUhpdHJvbiBUZWNobm9sb2dpZXMuIEluYwotCQkJCU5vLiAxLTgsIExpc2luZyAxc3QgUmQuIEhzaW5jaHUgU2NpZW5jZSBQYXJrLAotCQkJCUhzaW4tY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTVDICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTAwMjY1QyAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi0wMC0yNi01RCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0wMDI2NUQgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi01RSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0wMDI2NUUgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMDAtMjYtNUYgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDI2NUYgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTYwICAgKGhleCkJCUxvZ2l3YXlzCi0wMDI2NjAgICAgIChiYXNlIDE2KQkJTG9naXdheXMKLQkJCQkyNC8yNiBydWUgTG91aXMgQVJNQU5ECi0JCQkJUEFSSVMgIDc1MDE1Ci0JCQkJRlJBTkNFCi0KLTAwLTI2LTYxICAgKGhleCkJCUlydW10ZWsgQ28uLCBMdGQuCi0wMDI2NjEgICAgIChiYXNlIDE2KQkJSXJ1bXRlayBDby4sIEx0ZC4KLQkJCQlBcHQgNzA4ICA1MTMtMjIgSm9vbmdpbCBFaW5lcyBQbGF0egotCQkJCVNhbmdkYWV3b24tZG9uZywgSnVuZ3dvbi1HdQotCQkJCVNlb25nbmFtLUNpdHkgR3l1bmdnaS1kbyA0NjItMTIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTYyICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0wMDI2NjIgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLQkJCQk3NjAgTm9ydGggTWFyeSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTYzICAgKGhleCkJCVNoZW56aGVuIEh1aXRhaXdlaSBUZWNoLiBMdGQsIGNvLgotMDAyNjYzICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEh1aXRhaXdlaSBUZWNoLiBMdGQsIGNvLgotCQkJCUppYW5EYSBCdWlsZGluZyw1MDEtNTAyCi0JCQkJS2V3ZWkgTm8uIDEKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjYtNjQgICAoaGV4KQkJQ29yZSBTeXN0ZW0gSmFwYW4KLTAwMjY2NCAgICAgKGJhc2UgMTYpCQlDb3JlIFN5c3RlbSBKYXBhbgotCQkJCUJ1bnNodSBCbGRnLDItMjctNixNeW9qaW4KLQkJCQlIYWNoaW9qaSBUb2t5byAxOTIwMDQ2Ci0JCQkJSkFQQU4KLQotMDAtMjYtNjUgICAoaGV4KQkJUHJvdGVjdGVkTG9naWMgQ29ycG9yYXRpb24KLTAwMjY2NSAgICAgKGJhc2UgMTYpCQlQcm90ZWN0ZWRMb2dpYyBDb3Jwb3JhdGlvbgotCQkJCVBPIEJveCA2NzcwNwotCQkJCUFsYnVxdWVycXVlIE5NIDg3MTkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi02NiAgIChoZXgpCQlFRk0gTmV0d29ya3MKLTAwMjY2NiAgICAgKGJhc2UgMTYpCQlFRk0gTmV0d29ya3MKLQkJCQk2RiBCZW5wb3NyYSBJSSBCL0QgMTgwMi0xCi0JCQkJQm9qZW9uZy1kb25nIEdpaGV1bmctZ3UsCi0JCQkJWW9uZyBJbiBLeXVuZ2dpLWRvIDQ0Ni05MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtNjcgICAoaGV4KQkJQ0FSRUNPTSBDTy4sTFRELgotMDAyNjY3ICAgICAoYmFzZSAxNikJCUNBUkVDT00gQ08uLExURC4KLQkJCQkzLTM1LTQKLQkJCQlUYW1hZ2F3YQotCQkJCUNob2Z1IFRva3lvIDE4Mi0wMDI1Ci0JCQkJSkFQQU4KLQotMDAtMjYtNjggICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjY2OCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjYtNjkgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjY2OSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjYtNkEgICAoaGV4KQkJRVNTRU5TSVVNIE5WCi0wMDI2NkEgICAgIChiYXNlIDE2KQkJRVNTRU5TSVVNIE5WCi0JCQkJR2FzdG9uIEdlZW5zbGFhbiA5Ci0JCQkJTEVVVkVOIFZMIEJSQUJBTlQgMzAwMQotCQkJCUJFTEdJVU0KLQotMDAtMjYtNkIgICAoaGV4KQkJU0hJTkUgVU5JT04gRU5URVJQUklTRSBMSU1JVEVECi0wMDI2NkIgICAgIChiYXNlIDE2KQkJU0hJTkUgVU5JT04gRU5URVJQUklTRSBMSU1JVEVECi0JCQkJVU5JVCAxMjExLCAxMkZMLiwgQ0hFVkFMSUVSIENPTU1FUkNJQUwgQ0VOVEVSLAotCQkJCU5PLjggV0FORyBIT0kgUk9BRCwgS09XTE9PTkJBWQotCQkJCUtPV0xPT04gIE5JTAotCQkJCUhPTkcgS09ORwotCi0wMC0yNi02QyAgIChoZXgpCQlJbnZlbnRlYwotMDAyNjZDICAgICAoYmFzZSAxNikJCUludmVudGVjCi0JCQkJSW52ZW50ZWMgQnVpbGRpbmcsIDY2IEhvdS1LYW5nIFN0cmVldCBTaGloLUxpbiBEaXN0cmljdCwKLQkJCQlUYWlwZWkgIDExMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtNkQgICAoaGV4KQkJTW9iaWxlQWNjZXNzIE5ldHdvcmtzCi0wMDI2NkQgICAgIChiYXNlIDE2KQkJTW9iaWxlQWNjZXNzIE5ldHdvcmtzCi0JCQkJODM5MSBPbGQgQ291cnRob3VzZSBSZC4KLQkJCQlTdWl0ZSAzMDAKLQkJCQlWaWVubmEgVkEgMjIxODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTZFICAgKGhleCkJCU5pc3Noby1kZW5raSBDby4sTFRELgotMDAyNjZFICAgICAoYmFzZSAxNikJCU5pc3Noby1kZW5raSBDby4sTFRELgotCQkJCTMtNy02LGNoaWRvcmkKLQkJCQlvaHRhIFRva3lvIDE0Ni0wMDgzCi0JCQkJSkFQQU4KLQotMDAtMjYtNkYgICAoaGV4KQkJQ29vcmRpd2lzZSBUZWNobm9sb2d5IENvcnAuCi0wMDI2NkYgICAgIChiYXNlIDE2KQkJQ29vcmRpd2lzZSBUZWNobm9sb2d5IENvcnAuCi0JCQkJMkYuLCBOby4xMjMsIFNlYy4gMSwgTGlvdWppYSA1dGggUmQuCi0JCQkJSmh1YmVpIENpdHksIEhzaW5jaHUgQ291bnR5ICAzMDI3MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtNzAgICAoaGV4KQkJQ2luY2ggQ29ubmVjdG9ycwotMDAyNjcwICAgICAoYmFzZSAxNikJCUNpbmNoIENvbm5lY3RvcnMKLQkJCQkxNzAwIEZpbmxleSBSb2FkCi0JCQkJTG9tYmFyZCBJTCA2MDE0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNzEgICAoaGV4KQkJQVVUT1ZJU0lPTiBDby4sIEx0ZAotMDAyNjcxICAgICAoYmFzZSAxNikJCUFVVE9WSVNJT04gQ28uLCBMdGQKLQkJCQlTaGluc2VnYWUgWUJTIEJsZGcuIDEwMgotCQkJCTIyNy0xLCBZb25nZGFwLURvbmcKLQkJCQlTZW9uZ2RvbmctZ3UgU2VvdWwgMTMzLTg0NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi03MiAgIChoZXgpCQlBQU1QIG9mIEFtZXJpY2EKLTAwMjY3MiAgICAgKGJhc2UgMTYpCQlBQU1QIG9mIEFtZXJpY2EKLQkJCQkxMzE5MCA1NnRoIENvdXJ0Ci0JCQkJU3VpdGUgNDAxCi0JCQkJQ2xlYXJ3YXRlciBGbG9yaWRhIDMzNzYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi03MyAgIChoZXgpCQlSSUNPSCBDT01QQU5ZIExURC4KLTAwMjY3MyAgICAgKGJhc2UgMTYpCQlSSUNPSCBDT01QQU5ZIExURC4KLQkJCQk4MTAgU0hJTU9JTUFJWlVNSQotCQkJCUViaW5hIENpdHkgS0FOQUdBV0EgUFJFRiAyNDMtMDQ2MAotCQkJCUpBUEFOCi0KLTAwLTI2LTc0ICAgKGhleCkJCUVsZWN0cm9uaWMgU29sdXRpb25zLCBJbmMuCi0wMDI2NzQgICAgIChiYXNlIDE2KQkJRWxlY3Ryb25pYyBTb2x1dGlvbnMsIEluYy4KLQkJCQkxMzU1IEhvcml6b24gQXZlbnVlCi0JCQkJTGFmYXlldHRlIENPIDgwMDI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi03NSAgIChoZXgpCQlBenRlY2ggRWxlY3Ryb25pY3MgUHRlIEx0ZAotMDAyNjc1ICAgICAoYmFzZSAxNikJCUF6dGVjaCBFbGVjdHJvbmljcyBQdGUgTHRkCi0JCQkJMzEgVWJpIFJvYWQgMQotCQkJCUF6dGVjaCBCdWlsZGluZwotCQkJCVNpbmdhcG9yZSAgNDA4Njk0Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTI2LTc2ICAgKGhleCkJCUNPTU1pZHQgQVMKLTAwMjY3NiAgICAgKGJhc2UgMTYpCQlDT01NaWR0IEFTCi0JCQkJS2lrcmVnYXRhIDU3LTU5Ci0JCQkJTGV2YW5nZXIgTm9yZC1Ucm9lbmRlbGFnIDc2MDAKLQkJCQlOT1JXQVkKLQotMDAtMjYtNzcgICAoaGV4KQkJREVJRiBBL1MKLTAwMjY3NyAgICAgKGJhc2UgMTYpCQlERUlGIEEvUwotCQkJCUZyaXNlbmJvcmd2ZWogMzMKLQkJCQlTa2l2ZSAgNzgwMAotCQkJCURFTk1BUksKLQotMDAtMjYtNzggICAoaGV4KQkJTG9naWMgSW5zdHJ1bWVudCBTQQotMDAyNjc4ICAgICAoYmFzZSAxNikJCUxvZ2ljIEluc3RydW1lbnQgU0EKLQkJCQk0MywgQXZlbnVlIGRlIGwnRXVyb3BlCi0JCQkJQlAgNjAwMTIKLQkJCQlEb21vbnQgIDk1MzMwCi0JCQkJRlJBTkNFCi0KLTAwLTI2LTc5ICAgKGhleCkJCUV1cGhvbmljIFRlY2hub2xvZ2llcywgSW5jLgotMDAyNjc5ICAgICAoYmFzZSAxNikJCUV1cGhvbmljIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTItNS0xMCBTaGluLXlva29oYW1hLCBLb3Vob2t1LWt1Ci0JCQkJWW9rb2hhbWEgIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMjYtN0EgICAoaGV4KQkJd3VoYW4gaG9uZ3hpbiB0ZWxlY29tbXVuaWNhdGlvbiB0ZWNobm9sb2dpZXMgY28uLGx0ZAotMDAyNjdBICAgICAoYmFzZSAxNikJCXd1aGFuIGhvbmd4aW4gdGVsZWNvbW11bmljYXRpb24gdGVjaG5vbG9naWVzIGNvLixsdGQKLQkJCQlOby41IERvbnhpbiBSb2FkLFd1aGFuIEVhc3QgTGFrZSBIaWdoLVRlY2ggRGV2ZWxvcG1lbnQgWm9uZQotCQkJCVd1aGFuIEh1YmVpIDQzMDA3MwotCQkJCUNISU5BCi0KLTAwLTI2LTdCICAgKGhleCkJCUdTSSBIZWxtaG9sdHp6ZW50cnVtIGb8ciBTY2h3ZXJpb25lbmZvcnNjaHVuZyBHbWJICi0wMDI2N0IgICAgIChiYXNlIDE2KQkJR1NJIEhlbG1ob2x0enplbnRydW0gZvxyIFNjaHdlcmlvbmVuZm9yc2NodW5nIEdtYkgKLQkJCQlQbGFuY2tzdHJh32UgMQotCQkJCURhcm1zdGFkdCBIZXNzZW4gNjQyOTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTI2LTdDICAgKGhleCkJCU1ldHotV2Vya2UgR21iSCAmIENvIEtHCi0wMDI2N0MgICAgIChiYXNlIDE2KQkJTWV0ei1XZXJrZSBHbWJIICYgQ28gS0cKLQkJCQlPaG1zdHJhc3NlIDU1Ci0JCQkJWmlybmRvcmYgIDkwNTEzCi0JCQkJR0VSTUFOWQotCi0wMC0yNi03RCAgIChoZXgpCQlBLU1heCBUZWNobm9sb2d5IE1hY2FvIENvbW1lcmNpYWwgT2Zmc2hvcmUgQ29tcGFueSBMaW1pdGVkCi0wMDI2N0QgICAgIChiYXNlIDE2KQkJQS1NYXggVGVjaG5vbG9neSBNYWNhbyBDb21tZXJjaWFsIE9mZnNob3JlIENvbXBhbnkgTGltaXRlZAotCQkJCUF2ZW5pZGEgRGEgUHJhaWEgR3JhbmRlIE5vLiA0MDkKLQkJCQlFZGlmaWNpbyBEb3MgU2Vydmljb3MgSnVyaWRpY29zIERhIENoaW5hIDVBCi0JCQkJTWFjYXUgIAotCQkJCUNISU5BCi0KLTAwLTI2LTdFICAgKGhleCkJCVBhcnJvdCBTQQotMDAyNjdFICAgICAoYmFzZSAxNikJCVBhcnJvdCBTQQotCQkJCTE3NCBxdWFpIGRlIEplbW1hcGVzCi0JCQkJUGFyaXMgIDc4MTAwCi0JCQkJRlJBTkNFCi0KLTAwLTI2LTdGICAgKGhleCkJCVplbnRlcmlvIEFCCi0wMDI2N0YgICAgIChiYXNlIDE2KQkJWmVudGVyaW8gQUIKLQkJCQlEaXNrZXR0Z2F0YW4gMTFCCi0JCQkJTGlua/ZwaW5nICA1ODMzNQotCQkJCVNXRURFTgotCi0wMC0yNi04MCAgIChoZXgpCQlMb2NraWUgSW5ub3ZhdGlvbiBQdHkgTHRkCi0wMDI2ODAgICAgIChiYXNlIDE2KQkJTG9ja2llIElubm92YXRpb24gUHR5IEx0ZAotCQkJCVVuaXQgMjQKLQkJCQkyLTEyIFRlbXBsZSBTdHJlZXQKLQkJCQlBc2h3b29kIFZJQ1RPUklBIDMxNDcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjYtODEgICAoaGV4KQkJSW50ZXJzcGlybyBBQgotMDAyNjgxICAgICAoYmFzZSAxNikJCUludGVyc3Bpcm8gQUIKLQkJCQlCb3ggMTAwNjAKLQkJCQlMaWRpbmf2ICAxODExMAotCQkJCVNXRURFTgotCi0wMC0yNi04MiAgIChoZXgpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjY4MiAgICAgKGJhc2UgMTYpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4xIEplbiBBaSBSb2FkLCBIc2luY2h1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1IFRhaXdhbiAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTgzICAgKGhleCkJCUFqb2hvIEVudGVycHJpc2UgQ28uLCBMdGQuCi0wMDI2ODMgICAgIChiYXNlIDE2KQkJQWpvaG8gRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQkxRi4sIE5vLjMwMC0zLCBTZWMuIDMsIEhvcGluZyBXLiBSZC4sIFdhbi1IdWEgMTA4Ci0JCQkJVGFpcGVpIFRhaXdhbiAxMDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTg0ICAgKGhleCkJCUtJU0FOIFNZU1RFTQotMDAyNjg0ICAgICAoYmFzZSAxNikJCUtJU0FOIFNZU1RFTQotCQkJCVlVQ0hFT04gUEFDVE9QSUEgNjIzLCBBTllBTkc3Ci0JCQkJQU5ZQU5HIEdZRU9OR0dJIDQzMC03MjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtODUgICAoaGV4KQkJRGlnaXRhbCBJbm5vdmF0aW9uCi0wMDI2ODUgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBJbm5vdmF0aW9uCi0JCQkJVHJhdmJhbmV2ZWllbiA2Ci0JCQkJVHJvbmRoZWltICA3MDQ0Ci0JCQkJTk9SV0FZCi0KLTAwLTI2LTg2ICAgKGhleCkJCVF1YW50ZW5uYSBDb21tdW5jYXRpb25zLCBJbmMuCi0wMDI2ODYgICAgIChiYXNlIDE2KQkJUXVhbnRlbm5hIENvbW11bmNhdGlvbnMsIEluYy4KLQkJCQkzNDUwIFcuIFdhcnJlbiBBdmUuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtODcgICAoaGV4KQkJQUxMSUVEIFRFTEVTSVMsIEsuSyBjb3JlZ2EgZGl2aXNpb24uCi0wMDI2ODcgICAgIChiYXNlIDE2KQkJQUxMSUVEIFRFTEVTSVMsIEsuSyBjb3JlZ2EgZGl2aXNpb24uCi0JCQkJMS0xOS0yMCwgU2hpbnlva29oYW1hCi0JCQkJS291aG9rdS1rdQotCQkJCVlva29oYW1hLWNpdHkgS2FuYWdhd2Eta2VuIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMjYtODggICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAyNjg4ICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi04OSAgIChoZXgpCQlHZW5lcmFsIER5bmFtaWNzIFJvYm90aWMgU3lzdGVtcwotMDAyNjg5ICAgICAoYmFzZSAxNikJCUdlbmVyYWwgRHluYW1pY3MgUm9ib3RpYyBTeXN0ZW1zCi0JCQkJMTIzMSBUZWNoIENvdXJ0Ci0JCQkJV2VzdG1pbnN0ZXIgTUQgMjExNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LThBICAgKGhleCkJCVRlcnJpZXIgU0MgTHRkCi0wMDI2OEEgICAgIChiYXNlIDE2KQkJVGVycmllciBTQyBMdGQKLQkJCQlTdHJldHRpdCBGYXJtCi0JCQkJU25vbGwgSGF0Y2ggUm9hZAotCQkJCUVhc3QgUGVja2hhbSBLZW50IFROMTIgNUVFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjYtOEIgICAoaGV4KQkJR3Vhbmd6aG91IEVzY2VuZSBDb21wdXRlciBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMjY4QiAgICAgKGJhc2UgMTYpCQlHdWFuZ3pob3UgRXNjZW5lIENvbXB1dGVyIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJvb20gMjA5LCBOby41NC01NiBZdWVoZSBCdWlsZGluZywgSHVhY3VpIFN0cmVldCwgVGlhbmhlIEluZHVzdHJpYWwgUGFyawotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgUHJvdmluY2UgNTEwMDY1Ci0JCQkJQ0hJTkEKLQotMDAtMjYtOEMgICAoaGV4KQkJU3RhckxlYWYgTHRkLgotMDAyNjhDICAgICAoYmFzZSAxNikJCVN0YXJMZWFmIEx0ZC4KLQkJCQlDaGFzdG9uIEhvdXNlLCBNaWxsIENvdXJ0Ci0JCQkJR3JlYXQgU2hlbGZvcmQKLQkJCQlDYW1icmlkZ2UgIENCMjIgNUxECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjYtOEQgICAoaGV4KQkJQ2VsbFRlbCBTLnAuQS4KLTAwMjY4RCAgICAgKGJhc2UgMTYpCQlDZWxsVGVsIFMucC5BLgotCQkJCVZpYSBSb21hbm8gNzIKLQkJCQlTY2FybWFnbm8gVG9yaW5vIDEwMDEwCi0JCQkJSVRBTFkKLQotMDAtMjYtOEUgICAoaGV4KQkJQWx0YSBTb2x1dGlvbnMsIEluYy4KLTAwMjY4RSAgICAgKGJhc2UgMTYpCQlBbHRhIFNvbHV0aW9ucywgSW5jLgotCQkJCTExMzA1IFJhbmNobyBCZXJuYXJkbyBSb2FkCi0JCQkJU3VpdGUgMTA0Ci0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi04RiAgIChoZXgpCQlNVEEgU3BBCi0wMDI2OEYgICAgIChiYXNlIDE2KQkJTVRBIFNwQQotCQkJCVZpYWxlIGRlbGwgSW5kdXN0cmlhIDEyCi0JCQkJQ29kb2dubyBMT0RJIDI2ODQ1Ci0JCQkJSVRBTFkKLQotMDAtMjYtOTAgICAoaGV4KQkJSSBETyBJVAotMDAyNjkwICAgICAoYmFzZSAxNikJCUkgRE8gSVQKLQkJCQkxMzA4LCBXb29saW1MaW9uczJuZCBEb2tzYW4gU3RhdGlvbgotCQkJCVNlb3VsICAxNTMtNzg3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTkxICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwMjY5MSAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMTQgUnVlIFBhdWwgRGF1dGllcgotCQkJCVZlbGl6eSAgNzg0NTcKLQkJCQlGUkFOQ0UKLQotMDAtMjYtOTIgICAoaGV4KQkJTWl0c3ViaXNoaSBFbGVjdHJpYyBDby4KLTAwMjY5MiAgICAgKGJhc2UgMTYpCQlNaXRzdWJpc2hpIEVsZWN0cmljIENvLgotCQkJCTItNy0zIE1hcnVub3VjaGkKLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMC04MzEwCi0JCQkJSkFQQU4KLQotMDAtMjYtOTMgICAoaGV4KQkJUVZpZGl1bSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjY5MyAgICAgKGJhc2UgMTYpCQlRVmlkaXVtIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEyOTg5IENoYXBhcnJhbCBSaWRnZSBSZAotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtOTQgICAoaGV4KQkJU2Vuc2NpZW50IEx0ZAotMDAyNjk0ICAgICAoYmFzZSAxNikJCVNlbnNjaWVudCBMdGQKLQkJCQlVbml0IDIsIEJsb2NrIEEsIEFyZW5hIEJ1c2luZXNzIENlbnRyZQotCQkJCUhvbHkgUm9vZCBDbG9zZQotCQkJCVBvb2xlIERvcnNldCBCSDE3IDdGSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI2LTk1ICAgKGhleCkJCVpUIEdyb3VwIEludCdsIEluYwotMDAyNjk1ICAgICAoYmFzZSAxNikJCVpUIEdyb3VwIEludCdsIEluYwotCQkJCTM1MCBNZWFkb3dsYW5kcyBQYXJrd2F5Ci0JCQkJU2VjYXVjdXMgTkogMDcwOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTk2ICAgKGhleCkJCU5PT0xJWCBDby4sIEx0ZAotMDAyNjk2ICAgICAoYmFzZSAxNikJCU5PT0xJWCBDby4sIEx0ZAotCQkJCURBRUNIQU5HIEIvRCAzRiwgOC0yIFNVTkFFLURPTkcKLQkJCQlCVURBTkctR1UKLQkJCQlTVU5HTkFNLVNJIEtZVU5HR0ktRE8gNDYzLTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi05NyAgIChoZXgpCQlDaGVldGFoIFRlY2hub2xvZ2llcywgTC5QLgotMDAyNjk3ICAgICAoYmFzZSAxNikJCUNoZWV0YWggVGVjaG5vbG9naWVzLCBMLlAuCi0JCQkJMzgxIE1hbnNmaWVsZCBBdmVudWUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi05OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2OTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtOTkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNjk5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTlBICAgKGhleCkJCWNhcmluYSBzeXN0ZW0gY28uLCBsdGQuCi0wMDI2OUEgICAgIChiYXNlIDE2KQkJY2FyaW5hIHN5c3RlbSBjby4sIGx0ZC4KLQkJCQkxLTUtMiBNaW5hdG9qaW1hLW1pbmFtaW1hY2hpCi0JCQkJQ2h1by1rdQotCQkJCUtvYmUgSHlvZ28gNjUwLTAwNDcKLQkJCQlKQVBBTgotCi0wMC0yNi05QiAgIChoZXgpCQlTT0tSQVQgTHRkLgotMDAyNjlCICAgICAoYmFzZSAxNikJCVNPS1JBVCBMdGQuCi0JCQkJVm9sa29uc2tvZ28gMgotCQkJCUlya3V0c2sgIDY2NDAwNwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yNi05QyAgIChoZXgpCQlJVFVTIEpBUEFOIENPLiBMVEQKLTAwMjY5QyAgICAgKGJhc2UgMTYpCQlJVFVTIEpBUEFOIENPLiBMVEQKLQkJCQk3RiBTaGlua2F3YSBCL0QKLQkJCQkxLTEtNyBTaGlua2F3YQotCQkJCUNodW9rdSBUb2t5byAxMDQwMDMzCi0JCQkJSkFQQU4KLQotMDAtMjYtOUQgICAoaGV4KQkJTTJNbmV0IENvLiwgTHRkLgotMDAyNjlEICAgICAoYmFzZSAxNikJCU0yTW5ldCBDby4sIEx0ZC4KLQkJCQk2MDcgRG93bnRvd24gQmxkLiAxMDQzLTEgSG9neWUtRG9uZyBEb25nYW4tR3UKLQkJCQlBbnlhbmctQ2l0eSBLeXVuZ2dpLURvIDQzMS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtOUUgICAoaGV4KQkJUXVhbnRhIENvbXB1dGVyIEluYwotMDAyNjlFICAgICAoYmFzZSAxNikJCVF1YW50YSBDb21wdXRlciBJbmMKLQkJCQlOTy4gMjExLCBXRU4gSFdBIDJSRC4sIEtVRUkgU0hBTiBIU0lBTkcsIFRBSVBFSSwgU0hJRU4KLQkJCQlUQU8gWVVBTiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi05RiAgIChoZXgpCQlQUklWQVRFCi0wMDI2OUYgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTI2LUEwICAgKGhleCkJCW1vYmxpYwotMDAyNkEwICAgICAoYmFzZSAxNikJCW1vYmxpYwotCQkJCTdGLCAyNzEtMSwgU2VvaHllb24tZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEt5ZW9uZ2dpLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtQTEgICAoaGV4KQkJTWVnZ2VyCi0wMDI2QTEgICAgIChiYXNlIDE2KQkJTWVnZ2VyCi0JCQkJNDI3MSBCcm9uemUgV2F5Ci0JCQkJRGFsbGFzIFRleGFzIDc1MjM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1BMiAgIChoZXgpCQlJbnN0cnVtZW50YXRpb24gVGVjaG5vbG9neSBTeXN0ZW1zCi0wMDI2QTIgICAgIChiYXNlIDE2KQkJSW5zdHJ1bWVudGF0aW9uIFRlY2hub2xvZ3kgU3lzdGVtcwotCQkJCTE5MzYwIEJ1c2luZXNzIENlbnRlciBEcml2ZQotCQkJCU5vcnRocmlkZ2UgQ0EgOTEzMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUEzICAgKGhleCkJCUZRIEluZ2VuaWVyaWEgRWxlY3Ryb25pY2EgUy5BLgotMDAyNkEzICAgICAoYmFzZSAxNikJCUZRIEluZ2VuaWVyaWEgRWxlY3Ryb25pY2EgUy5BLgotCQkJCUNvcnNlZ2EgMzcyIDEgMgotCQkJCUJhcmNlbG9uYSAgMDgwMzcKLQkJCQlTUEFJTgotCi0wMC0yNi1BNCAgIChoZXgpCQlOb3Z1cyBQcm9kdXRvcyBFbGV0cm9uaWNvcyBMdGRhCi0wMDI2QTQgICAgIChiYXNlIDE2KQkJTm92dXMgUHJvZHV0b3MgRWxldHJvbmljb3MgTHRkYQotCQkJCVJ1YSBBbHZhcm8gQ2hhdmVzLCAxNTUKLQkJCQlCYWlycm8gRmxvcmVzdGEKLQkJCQlQb3J0byBBbGVncmUgUlMgOTAyMjAtMDQwCi0JCQkJQlJBWklMCi0KLTAwLTI2LUE1ICAgKGhleCkJCU1JQ1JPUk9CT1QuQ08uLExURAotMDAyNkE1ICAgICAoYmFzZSAxNikJCU1JQ1JPUk9CT1QuQ08uLExURAotCQkJCTE2Ny0zIEd1bmdweWVvbmctcmkKLQkJCQlEb2NoZW9rLW15ZW9uCi0JCQkJR3dhbmdqdS1zaSBHeWVvbmdnaS1EbyA0NjQtODgxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUE2ICAgKGhleCkJCVRSSVhFTEwKLTAwMjZBNiAgICAgKGJhc2UgMTYpCQlUUklYRUxMCi0JCQkJNDYwLCBSdWUgZHUgcG9tbWFyaW4KLQkJCQlNT0lSQU5TICAzODIxMAotCQkJCUZSQU5DRQotCi0wMC0yNi1BNyAgIChoZXgpCQlDT05ORUNUIFNSTAotMDAyNkE3ICAgICAoYmFzZSAxNikJCUNPTk5FQ1QgU1JMCi0JCQkJVmlhIENlcm5haWEsIDExCi0JCQkJTWlsYW4gIDIwMTIxCi0JCQkJSVRBTFkKLQotMDAtMjYtQTggICAoaGV4KQkJREFFSEFQIEhZUEVSLVRFQ0gKLTAwMjZBOCAgICAgKGJhc2UgMTYpCQlEQUVIQVAgSFlQRVItVEVDSAotCQkJCU1lZ2EgY2VudGVyICMxMTA4LCBTSyBUZWNobm8tUGFyaywgIzE5MC0xLCBTYW5nZGFld29uLURvbmcsIEp1bmd3b24tR3UKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaS1EbyA0NjItODA3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUE5ICAgKGhleCkJCVN0cm9uZyBUZWNobm9sb2dpZXMgUHR5IEx0ZAotMDAyNkE5ICAgICAoYmFzZSAxNikJCVN0cm9uZyBUZWNobm9sb2dpZXMgUHR5IEx0ZAotCQkJCTYwIFdlZGdld29vZCBSb2FkCi0JCQkJSGFsbGFtIFZpY3RvcmlhIDM4MDMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjYtQUEgICAoaGV4KQkJS2VubWVjIE1lY2hhbmljYWwgRW5naW5lZXJpbmcgQ28uLCBMdGQuCi0wMDI2QUEgICAgIChiYXNlIDE2KQkJS2VubWVjIE1lY2hhbmljYWwgRW5naW5lZXJpbmcgQ28uLCBMdGQuCi0JCQkJM0YsIE5vLiA5NywgU2VjLjIgTmFuLUthbmcgUmQuLAotCQkJCVRhaXBlaSAgMTE1NzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LUFCICAgKGhleCkJCVNFSUtPIEVQU09OIENPUlBPUkFUSU9OCi0wMDI2QUIgICAgIChiYXNlIDE2KQkJU0VJS08gRVBTT04gQ09SUE9SQVRJT04KLQkJCQkzLTMtNSBPV0EKLQkJCQlTVVdBLVNISSBOQUdBTk8tS0VOIDM5Mi04NTAyCi0JCQkJSkFQQU4KLQotMDAtMjYtQUMgICAoaGV4KQkJU2hhbmdoYWkgTFVTVEVSIFRlcmFiYW5kIHBob3RvbmljIENvLiwgTHRkLgotMDAyNkFDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIExVU1RFUiBUZXJhYmFuZCBwaG90b25pYyBDby4sIEx0ZC4KLQkJCQlGNCwgTm8uMzkgQ2hlbmdaaG9uZyBSZC4KLQkJCQlKaWFEaW5nIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMTgwMAotCQkJCUNISU5BCi0KLTAwLTI2LUFEICAgKGhleCkJCUFyYWRhIFN5c3RlbXMsIEluYy4KLTAwMjZBRCAgICAgKGJhc2UgMTYpCQlBcmFkYSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTAyNCBNb3JzZSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUFFICAgKGhleCkJCVdpcmVsZXNzIE1lYXN1cmVtZW50IEx0ZAotMDAyNkFFICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIE1lYXN1cmVtZW50IEx0ZAotCQkJCVRoZSBDcmVzY2VudAotCQkJCUVNU1dPUlRIICBQTzEwIDhKUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI2LUFGICAgKGhleCkJCUR1ZWxjbyBBL1MKLTAwMjZBRiAgICAgKGJhc2UgMTYpCQlEdWVsY28gQS9TCi0JCQkJTW9tbWFya3ZlaiA1Ci0JCQkJVm9sbGVydXAKLQkJCQlTb2VuZGVyYm9yZyBTb2VuZGVyanlsbGFuZCBESzY0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTI2LUIwICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjZCMCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1CMSAgIChoZXgpCQlOYXZpcyBBdXRvIE1vdGl2ZSBTeXN0ZW1zLCBJbmMuCi0wMDI2QjEgICAgIChiYXNlIDE2KQkJTmF2aXMgQXV0byBNb3RpdmUgU3lzdGVtcywgSW5jLgotCQkJCTNyZCBGTE9PUiwgSFlVTkRBSSBBUVVBIFBBTEFDRSA3ODUsIFdPTyAxLURPTkcsIEhBRVVOREFFR1UKLQkJCQlCVVNBTiAgNjEyLTgyMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi1CMiAgIChoZXgpCQlTZXRyaXggQUcKLTAwMjZCMiAgICAgKGJhc2UgMTYpCQlTZXRyaXggQUcKLQkJCQlUaGVyZXNpZW5zdHJhc3NlIDYtOAotCQkJCU11ZW5jaGVuIEJheWVybiA4MDMzMwotCQkJCUdFUk1BTlkKLQotMDAtMjYtQjMgICAoaGV4KQkJVGhhbGVzIENvbW11bmljYXRpb25zIEluYwotMDAyNkIzICAgICAoYmFzZSAxNikJCVRoYWxlcyBDb21tdW5pY2F0aW9ucyBJbmMKLQkJCQkyMjYwNSBHYXRld2F5IENlbnRlciBEcml2ZQotCQkJCUNsYXJrc2J1cmcgTUQgMjA4NzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUI0ICAgKGhleCkJCUZvcmQgTW90b3IgQ29tcGFueQotMDAyNkI0ICAgICAoYmFzZSAxNikJCUZvcmQgTW90b3IgQ29tcGFueQotCQkJCTIwMzAwIFJvdHVuZGEgRHJpdmUKLQkJCQlCdWlsZGluZyAjNSwgMkUwOTkKLQkJCQlEZWFyYm9ybiBNSSA0ODEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQjUgICAoaGV4KQkJSUNPTU0gVGVsZSBMdGQKLTAwMjZCNSAgICAgKGJhc2UgMTYpCQlJQ09NTSBUZWxlIEx0ZAotCQkJCTMwNCwgVHJlbmRzZXQgVG93ZXJzLAotCQkJCVJhb2QgIyAyLCBCYW5qYXJhIEhpbGxzCi0JCQkJSHlkZXJhYmFkIEFQIDUwMDAzNAotCQkJCUlORElBCi0KLTAwLTI2LUI2ICAgKGhleCkJCUFza2V5IENvbXB1dGVyCi0wMDI2QjYgICAgIChiYXNlIDE2KQkJQXNrZXkgQ29tcHV0ZXIKLQkJCQkxMEYsTk8uMTE5LENISUVOS0FORyBSRCxDSFVORy1ITwotCQkJCVRBSVBFSSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi1CNyAgIChoZXgpCQlLaW5nc3RvbiBUZWNobm9sb2d5IENvbXBhbnksIEluYy4KLTAwMjZCNyAgICAgKGJhc2UgMTYpCQlLaW5nc3RvbiBUZWNobm9sb2d5IENvbXBhbnksIEluYy4KLQkJCQkxNzYwMCBOZXdob3BlIFN0LgotCQkJCUZvdW50YWluIFZhbGxleSBDQSA5MjcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQjggICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLTAwMjZCOCAgICAgKGJhc2UgMTYpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQjkgICAoaGV4KQkJRGVsbCBJbmMKLTAwMjZCOSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQkEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjZCQSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLCBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQkIgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyNkJCICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gIENBCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1CQyAgIChoZXgpCQlHZW5lcmFsIEphY2sgVGVjaG5vbG9neSBMdGQuCi0wMDI2QkMgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBKYWNrIFRlY2hub2xvZ3kgTHRkLgotCQkJCVRoZSBBcmVhIG9mIEFkbWluaXN0cmF0aW9uIG9mIExpYW4gQmVpLAotCQkJCUNoYW5nIFBpbmcKLQkJCQlEb25nIEd1YW4gR3VhbmcgRG9uZyA1MjM1ODAKLQkJCQlDSElOQQotCi0wMC0yNi1CRCAgIChoZXgpCQlKVEVDIENhcmQgJiBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotMDAyNkJEICAgICAoYmFzZSAxNikJCUpURUMgQ2FyZCAmIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0JCQkJRGFibyBCbGRnLCA0RiwgNjEtMSwgR3llc3UtZG9uZywgU29zYS1ndQotCQkJCUJ1Y2hlb24gR3l1bmdnaS1kbyA0MjItMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUJFICAgKGhleCkJCVNjaG9vbmRlcmJlZWsgRWxla3Ryb25pY2EgU3lzdGVtZW4gQi5WLgotMDAyNkJFICAgICAoYmFzZSAxNikJCVNjaG9vbmRlcmJlZWsgRWxla3Ryb25pY2EgU3lzdGVtZW4gQi5WLgotCQkJCVJvZ2dlc3RyYWF0IDMtNQotCQkJCU5pZXV3IFZlbm5lcCBOb29yZCBIb2xsYW5kIDIxNTNHQwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI2LUJGICAgKGhleCkJCVNoZW5aaGVuIFRlbW9iaSBTY2llbmNlJlRlY2ggRGV2ZWxvcG1lbnQgQ28uLEx0ZAotMDAyNkJGICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIFRlbW9iaSBTY2llbmNlJlRlY2ggRGV2ZWxvcG1lbnQgQ28uLEx0ZAotCQkJCTRGbG9vckcsIEppbnJ1biBUb3dlciwgNjAxOSBTaGVubmFuIFJvYWQKLQkJCQlGdVRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuWmhlbiAgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjYtQzAgICAoaGV4KQkJRW5lcmd5SHViCi0wMDI2QzAgICAgIChiYXNlIDE2KQkJRW5lcmd5SHViCi0JCQkJMjMyIDNyZCBTdCBDMjAxCi0JCQkJQnJvb2tseW4gTlkgMTEyMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUMxICAgKGhleCkJCUFSVFJBWSBDTy4sIExURC4KLTAwMjZDMSAgICAgKGJhc2UgMTYpCQlBUlRSQVkgQ08uLCBMVEQuCi0JCQkJNUYgVWVubyBCbGRnLCAxLTE3LTUgS291ZW5qaWtpdGEsCi0JCQkJU3VnaW5hbWkta3UsCi0JCQkJVG9reW8gIDE2Ni0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMjYtQzIgICAoaGV4KQkJU0NESSBDby4gTFRECi0wMDI2QzIgICAgIChiYXNlIDE2KQkJU0NESSBDby4gTFRECi0JCQkJIzQ1MSwgSGFnYWwtRG9uZywgR2loZXVuZy1HdSwKLQkJCQlZb25naW4tU2kgR3llb25nZ2ktRG8gNDQ2LTkzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi1DMyAgIChoZXgpCQlJbnNpZ2h0ZWsgQ29ycC4KLTAwMjZDMyAgICAgKGJhc2UgMTYpCQlJbnNpZ2h0ZWsgQ29ycC4KLQkJCQk1RixOTy43NTUsQ2h1bmcgQ2hlbmcgUmQuLAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtQzQgICAoaGV4KQkJQ2FkbW9zIG1pY3Jvc3lzdGVtcyBTLnIubC4KLTAwMjZDNCAgICAgKGJhc2UgMTYpCQlDYWRtb3MgbWljcm9zeXN0ZW1zIFMuci5sLgotCQkJCVZpYSBQaWV0cm8gRnJhdHRpbmksIDI1NQotCQkJCVJvbWEgIDAwMTQ5Ci0JCQkJSVRBTFkKLQotMDAtMjYtQzUgICAoaGV4KQkJR3Vhbmdkb25nIEdvc3VuIFRlbGVjb21tdW5pY2F0aW9ucyBDby4sTHRkCi0wMDI2QzUgICAgIChiYXNlIDE2KQkJR3Vhbmdkb25nIEdvc3VuIFRlbGVjb21tdW5pY2F0aW9ucyBDby4sTHRkCi0JCQkJR3Vhbmdkb25nIHNvZnR3YXJlIHBhcmsgRCwgTm8uMTEsIENhaVBpbmcgcm9hZCAsIEd1YW5nemhvdSBzY2llbmNlIGNpdHkKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTAwLTI2LUM2ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyNkM2ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjYtQzcgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDI2QzcgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yNi1DOCAgIChoZXgpCQlTeXN0ZW0gU2Vuc29yCi0wMDI2QzggICAgIChiYXNlIDE2KQkJU3lzdGVtIFNlbnNvcgotCQkJCTM4MjUgT2hpbyBBdmVudWUKLQkJCQlTYWludCBDaGFybGVzIElMIDYwMTc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1DOSAgIChoZXgpCQlQcm92ZW50aXggU3lzdGVtcywgSW5jLgotMDAyNkM5ICAgICAoYmFzZSAxNikJCVByb3ZlbnRpeCBTeXN0ZW1zLCBJbmMuCi0JCQkJNDUxOCBWYWxsZXlkYWxlIFJvYWQKLQkJCQlTdWl0ZSAyMDIKLQkJCQlCaXJtaW5naGFtIEFMIDM1MjQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1DQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2Q0EgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQ0IgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNkNCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUNDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI2Q0MgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAgVgotCQkJCURFTk1BUksKLQotMDAtMjYtQ0QgICAoaGV4KQkJUHVycGxlQ29tbSwgSW5jLgotMDAyNkNEICAgICAoYmFzZSAxNikJCVB1cnBsZUNvbW0sIEluYy4KLQkJCQkyNjIwIEF1Z3VzdGluZSBEci4sIFN0ZS4gMTAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUNFICAgKGhleCkJCUtvenVtaSBVU0EgQ29ycC4KLTAwMjZDRSAgICAgKGJhc2UgMTYpCQlLb3p1bWkgVVNBIENvcnAuCi0JCQkJMzAwNSBIYXJ0cmlkZ2UgVGVycmFjZQotCQkJCVdlbGxpbmd0b24gRkwgMzM0MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUNGICAgKGhleCkJCURFS0EgUiZECi0wMDI2Q0YgICAgIChiYXNlIDE2KQkJREVLQSBSJkQKLQkJCQkzNDAgQ29tbWVyY2lhbCBTdHJlZXQKLQkJCQlNYW5jaGVzdGVyIE5IIDAzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1EMCAgIChoZXgpCQlTZW1paGFsZgotMDAyNkQwICAgICAoYmFzZSAxNikJCVNlbWloYWxmCi0JCQkJdWwuIFJhY2lib3Jza2EgMTVELzMyCi0JCQkJS3Jha293ICAzMC0zODQKLQkJCQlQT0xBTkQKLQotMDAtMjYtRDEgICAoaGV4KQkJUyBTcXVhcmVkIElubm92YXRpb25zIEluYy4KLTAwMjZEMSAgICAgKGJhc2UgMTYpCQlTIFNxdWFyZWQgSW5ub3ZhdGlvbnMgSW5jLgotCQkJCTY4MDctMTA0IFN0cmVldAotCQkJCUVkbW9udG9uIEFCIFQ2SCAyTDUKLQkJCQlDQU5BREEKLQotMDAtMjYtRDIgICAoaGV4KQkJUGN1YmUgU3lzdGVtcywgSW5jLgotMDAyNkQyICAgICAoYmFzZSAxNikJCVBjdWJlIFN5c3RlbXMsIEluYy4KLQkJCQkxODU3IE8nVG9vbGUgTGFuZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1EMyAgIChoZXgpCQlaZW5vIEluZm9ybWF0aW9uIFN5c3RlbQotMDAyNkQzICAgICAoYmFzZSAxNikJCVplbm8gSW5mb3JtYXRpb24gU3lzdGVtCi0JCQkJIzE0MDQgQS1Eb25nIERpZ2l0YWwgRW1waXJlIEJsZGcsIDk4MC0zLCBZb3VuZ3RvbmctZG9uZywgWW91bmd0b25nLWd1Ci0JCQkJU3V3b24gQ2l0eSBHeWVvbmdnaS1EbyA0NDMtNzAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUQ0ICAgKGhleCkJCUlSQ0EgU3BBCi0wMDI2RDQgICAgIChiYXNlIDE2KQkJSVJDQSBTcEEKLQkJCQlWaWFsZSBWZW5lemlhIDMxIC0gQy5QLiAyNDgKLQkJCQlTYW4gVmVuZGVtaWFubyAoVHJldmlzbykgSXRhbHkgMzEwMjAKLQkJCQlJVEFMWQotCi0wMC0yNi1ENSAgIChoZXgpCQlPcnkgU29sdWNvZXMgZW0gQ29tZXJjaW8gZGUgSW5mb3JtYXRpY2EgTHRkYS4KLTAwMjZENSAgICAgKGJhc2UgMTYpCQlPcnkgU29sdWNvZXMgZW0gQ29tZXJjaW8gZGUgSW5mb3JtYXRpY2EgTHRkYS4KLQkJCQlBdi4gVW5pc2lub3MsIDYxNQotCQkJCVNhbyBMZW9wb2xkbyBSUyA5MzAyMjAwMAotCQkJCUJSQVpJTAotCi0wMC0yNi1ENiAgIChoZXgpCQlOaW5nYm8gQW5keSBPcHRvZWxlY3Ryb25pYyBDby4sIEx0ZC4KLTAwMjZENiAgICAgKGJhc2UgMTYpCQlOaW5nYm8gQW5keSBPcHRvZWxlY3Ryb25pYyBDby4sIEx0ZC4KLQkJCQlMYW5qaWFuZyBTdHJlZXQgSW5kdXN0cmlhbCBab25lCi0JCQkJWXV5YW8gWmhlamlhbmcgMzE1NDAwCi0JCQkJQ0hJTkEKLQotMDAtMjYtRDcgICAoaGV4KQkJWGlhbWVuIEJCIEVsZWN0cm9uICYgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjZENyAgICAgKGJhc2UgMTYpCQlYaWFtZW4gQkIgRWxlY3Ryb24gJiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTMwMywgQW5neWUgQnVpbGRpbmcsIFRvcmNoIEhpZ2gtdGVjaCBEZXZlbG9wbWVudCBab25lCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDkKLQkJCQlDSElOQQotCi0wMC0yNi1EOCAgIChoZXgpCQlNYWdpYyBQb2ludCBJbmMuCi0wMDI2RDggICAgIChiYXNlIDE2KQkJTWFnaWMgUG9pbnQgSW5jLgotCQkJCVN1aXRlIDIwMywgQnVpbGRpbmcgMTcsIE5vLiAyOTUgTGluIE5hbiBSb2FkLCBQdWRvbmcgU29mdHdhcmUgUGFyayBTYW5saW4gV29ybGQgRXhwbyBCbG9jawotCQkJCVNoYW5naGFpICAyMDAwMTI2Ci0JCQkJQ0hJTkEKLQotMDAtMjYtRDkgICAoaGV4KQkJUGFjZSBwbGMKLTAwMjZEOSAgICAgKGJhc2UgMTYpCQlQYWNlIHBsYwotCQkJCVNhbHRzIE1pbGwKLQkJCQlWaWN0b3JpYSBSb2FkCi0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQxOCAzTEYKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNi1EQSAgIChoZXgpCQlVbml2ZXJzYWwgTWVkaWEgQ29ycG9yYXRpb24gL1Nsb3Zha2lhLyBzLnIuby4KLTAwMjZEQSAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgTWVkaWEgQ29ycG9yYXRpb24gL1Nsb3Zha2lhLyBzLnIuby4KLQkJCQlNaWNraWV3aWN6b3ZhIDcxMDQvMTQKLQkJCQlCcmF0aXNsYXZhICA4MTEgMDcKLQkJCQlTTE9WQUtJQQotCi0wMC0yNi1EQiAgIChoZXgpCQlJb25pY3MgRU1TIEluYy4KLTAwMjZEQiAgICAgKGJhc2UgMTYpCQlJb25pY3MgRU1TIEluYy4KLQkJCQlDYXJtZWxyYXkgSW5kdXN0cmlhbCBQYXJrIDIsIEJyZ3kuIFR1bG8KLQkJCQlDYWxhbWJhIExhZ3VuYSA0MDI3Ci0JCQkJUEhJTElQUElORVMKLQotMDAtMjYtREMgICAoaGV4KQkJT3B0aWNhbCBTeXN0ZW1zIERlc2lnbgotMDAyNkRDICAgICAoYmFzZSAxNikJCU9wdGljYWwgU3lzdGVtcyBEZXNpZ24KLQkJCQk3LzEgVnVrbyBQbGFjZQotCQkJCVdhcnJpZXdvb2QgTlNXIDIxMDIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjYtREQgICAoaGV4KQkJRml2YWwgQ29ycG9yYXRpb24KLTAwMjZERCAgICAgKGJhc2UgMTYpCQlGaXZhbCBDb3Jwb3JhdGlvbgotCQkJCXJvb20gMjAxLTcgc2FnaXR0YXJpdXMgQgotCQkJCXd1eGkgc29mdHdhcmUgcGFyawotCQkJCWppYW5nc3UgcHJvdmluY2UgMjE0MDI4Ci0JCQkJQ0hJTkEKLQotMDAtMjYtREUgICAoaGV4KQkJRkRJIE1BVEVMRUMKLTAwMjZERSAgICAgKGJhc2UgMTYpCQlGREkgTUFURUxFQwotCQkJCVJvdXRlIGRlIHNhaW50IHN5bXBob3JpZW4KLQkJCQlCUCA2OQotCQkJCUxlcyBsYW5kZXMgR+ludXNzb24gIDg1MTMwCi0JCQkJRlJBTkNFCi0KLTAwLTI2LURGICAgKGhleCkJCVRhaURvYyBUZWNobm9sb2d5IENvcnAuCi0wMDI2REYgICAgIChiYXNlIDE2KQkJVGFpRG9jIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk3RiwgTm8uIDEyNywgV3Vnb25nIDJuZCBSZC4sIDI0ODg4IFd1Z3UgVG93bnNoaXAKLQkJCQlUYWlwZWkgQ291bnR5IFRhaXdhbiAyNDg4OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtRTAgICAoaGV4KQkJQVNJVEVRCi0wMDI2RTAgICAgIChiYXNlIDE2KQkJQVNJVEVRCi0JCQkJNUYsIERPTkdZT1VORyBCbGRnLDM4Mi02LFlhdGFwIGRvbmcKLQkJCQlCdW5kYW5nIEd1LAotCQkJCVN1bmcgTmFtIHNpIEt5b3VuZ2dpLWRvIDQ2My04MjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtRTEgICAoaGV4KQkJU3RhbmZvcmQgVW5pdmVyc2l0eSwgT3BlbkZsb3cgR3JvdXAKLTAwMjZFMSAgICAgKGJhc2UgMTYpCQlTdGFuZm9yZCBVbml2ZXJzaXR5LCBPcGVuRmxvdyBHcm91cAotCQkJCTM1MyBTZXJyYSBNYWxsCi0JCQkJRUUgLSBDb21wdXRlciBTeXN0ZW1zIExhYm9yYXRvcnkKLQkJCQlTdGFuZm9yZCBDQSA5NDMwNS05MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1FMiAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotMDAyNkUyICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAtMzksR2FzYW4tZG9uZyxHdW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUUzICAgKGhleCkJCURUSQotMDAyNkUzICAgICAoYmFzZSAxNikJCURUSQotCQkJCVJ1ZSBkZSBsYSBnYXJlLCAzNQotCQkJCU5BTklOTkUgTkFNVVIgNTEwMAotCQkJCUJFTEdJVU0KLQotMDAtMjYtRTQgICAoaGV4KQkJQ0FOQUwgT1ZFUlNFQVMKLTAwMjZFNCAgICAgKGJhc2UgMTYpCQlDQU5BTCBPVkVSU0VBUwotCQkJCTQ4IHF1YWkgZHUgcG9pbnQgZHUgam91cgotCQkJCUJvdWxvZ25lLUJpbGxhbmNvdXJ0ICA5MjY1OQotCQkJCUZSQU5DRQotCi0wMC0yNi1FNSAgIChoZXgpCQlBRUcgUG93ZXIgU29sdXRpb25zCi0wMDI2RTUgICAgIChiYXNlIDE2KQkJQUVHIFBvd2VyIFNvbHV0aW9ucwotCQkJCUVtaWwgU2llcG1hbm5zdHIuIDMyCi0JCQkJV2Fyc3RlaW4gTlJXIDU5NTgxCi0JCQkJR0VSTUFOWQotCi0wMC0yNi1FNiAgIChoZXgpCQlWaXNpb25oaXRlY2ggQ28uLCBMdGQuCi0wMDI2RTYgICAgIChiYXNlIDE2KQkJVmlzaW9uaGl0ZWNoIENvLiwgTHRkLgotCQkJCVZpc2lvbiBibGRnLiAxNTAtMwotCQkJCVNpbWdvay1Eb25nLCBXb25taS1LdQotCQkJCUJ1Y2hvbiBLeXVuZ2dpLURvIDQyMC04MjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtRTcgICAoaGV4KQkJU2hhbmdoYWkgT05MQU4gQ29tbXVuaWNhdGlvbiBUZWNoLiBDby4sIEx0ZC4KLTAwMjZFNyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBPTkxBTiBDb21tdW5pY2F0aW9uIFRlY2guIENvLiwgTHRkLgotCQkJCTNGLCA2QywgTm8uIDE2NTgsIEd1bWVpIFJvYWQsIFh1aHVpIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTAwLTI2LUU4ICAgKGhleCkJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotMDAyNkU4ICAgICAoYmFzZSAxNikJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTEwLTEsIEhpZ2FzaGlrb3RhcmkgMS1jaG9tZQotCQkJCU5hZ2Fva2FreW8tc2hpIEt5b3RvIDYxNy04NTU1Ci0JCQkJSkFQQU4KLQotMDAtMjYtRTkgICAoaGV4KQkJU1AgQ29ycAotMDAyNkU5ICAgICAoYmFzZSAxNikJCVNQIENvcnAKLQkJCQlHdXJvIDMtZG9uZyAsR3Vyby1ndQotCQkJCUFjZSBUZWNobm8gOCBDaGEgMTMwNQotCQkJCVNlb3VsICAxNTItNzgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUVBICAgKGhleCkJCUNoZWVyY2hpcCBFbGVjdHJvbmljIFRlY2hub2xvZ3kgKFNoYW5nSGFpKSBDby4sIEx0ZC4KLTAwMjZFQSAgICAgKGJhc2UgMTYpCQlDaGVlcmNoaXAgRWxlY3Ryb25pYyBUZWNobm9sb2d5IChTaGFuZ0hhaSkgQ28uLCBMdGQuCi0JCQkJUk9PTSAxMjAyLCBOTy4gNTEsIDcgQXJlYSwgTk8uIDE0NjcgQ0FPQkFPIFJPQUQ7Ci0JCQkJTUlOSEFORyBBUkVBCi0JCQkJU0hBTkdIQUkgIDIwMTEwMQotCQkJCUNISU5BCi0KLTAwLTI2LUVCICAgKGhleCkJCUFkdmFuY2VkIFNwZWN0cnVtIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDI2RUIgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgU3BlY3RydW0gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxRi4sIE5vLjY3IEpob25namhlbmcgUmQuCi0JCQkJU2luamh1YW5nIFRhaXdhbiAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LUVDICAgKGhleCkJCUxlZ3JhbmQgSG9tZSBTeXN0ZW1zLCBJbmMKLTAwMjZFQyAgICAgKGJhc2UgMTYpCQlMZWdyYW5kIEhvbWUgU3lzdGVtcywgSW5jCi0JCQkJMzAxIEZ1bGxpbmcgTWlsbCBSZAotCQkJCVN1aXRlIEcKLQkJCQlNaWRkbGV0b3duIFBBIDE3MDU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1FRCAgIChoZXgpCQl6dGUgY29ycG9yYXRpb24KLTAwMjZFRCAgICAgKGJhc2UgMTYpCQl6dGUgY29ycG9yYXRpb24KLQkJCQkxMi9GIHp0ZSBwbGF6YSxrZWppIFJvYWQgU291dGgsSEktVGVjaCBJbmR1c3RyaWFsIFBhcmssTmFuc2hhbiBEaXN0cmljdAotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNi1FRSAgIChoZXgpCQlUS00gR21iSAotMDAyNkVFICAgICAoYmFzZSAxNikJCVRLTSBHbWJICi0JCQkJU2NobG9zc3N0cmHfZSAxMjMKLQkJCQlN9m5jaGVuZ2xhZGJhY2ggTlJXIDQxMjM4Ci0JCQkJR0VSTUFOWQotCi0wMC0yNi1FRiAgIChoZXgpCQlUZWNobm9sb2d5IEFkdmFuY2VtZW50IEdyb3VwLCBJbmMuCi0wMDI2RUYgICAgIChiYXNlIDE2KQkJVGVjaG5vbG9neSBBZHZhbmNlbWVudCBHcm91cCwgSW5jLgotCQkJCTIyMzU1IFRhZyBXYXkKLQkJCQlEdWxsZXMgVkEgMjAxNjYtOTMxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtRjAgICAoaGV4KQkJY1RyaXhzIEludGVybmF0aW9uYWwgR21iSC4KLTAwMjZGMCAgICAgKGJhc2UgMTYpCQljVHJpeHMgSW50ZXJuYXRpb25hbCBHbWJILgotCQkJCUxpZWZlcmluZ2VyIEhhdXB0c3RyLiAxNDAKLQkJCQlTYWx6YnVyZyBTYWx6YnVyZyA1MDIwCi0JCQkJQVVTVFJJQQotCi0wMC0yNi1GMSAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDI2RjEgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQuCi0JCQkJUm9zZXZpbGxlIENhbGlmb3JuaWEgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUYyICAgKGhleCkJCU5ldGdlYXIKLTAwMjZGMiAgICAgKGJhc2UgMTYpCQlOZXRnZWFyCi0JCQkJMzUwIEVhc3QgUGx1bWVyaWEgRHJpdmUKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1GMyAgIChoZXgpCQlTTUMgTmV0d29ya3MKLTAwMjZGMyAgICAgKGJhc2UgMTYpCQlTTUMgTmV0d29ya3MKLQkJCQkyMCBNYXNvbgotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtRjQgICAoaGV4KQkJTmVzc2xhYgotMDAyNkY0ICAgICAoYmFzZSAxNikJCU5lc3NsYWIKLQkJCQk0ODktMiBNYWV0YW4gMy1kb25nLCBZZW9uZyBUb25nLWd1Ci0JCQkJU3V3b24tc2kgR3llb25nZ2ktZG8gNDQzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi1GNSAgIChoZXgpCQlYUlBMVVMgSW5jLgotMDAyNkY1ICAgICAoYmFzZSAxNikJCVhSUExVUyBJbmMuCi0JCQkJIzgwNSBBY2UgVGVjaG5vIFRvd2VyIDJuZCAxOTctMTcKLQkJCQlHdXJvM0RvbmcsIEd1cm8tR3UKLQkJCQlTZW91bCAgMTUyLTc2NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi1GNiAgIChoZXgpCQlNaWxpdGFyeSBDb21tdW5pY2F0aW9uIEluc3RpdHV0ZQotMDAyNkY2ICAgICAoYmFzZSAxNikJCU1pbGl0YXJ5IENvbW11bmljYXRpb24gSW5zdGl0dXRlCi0JCQkJdWwuIFdhcnN6YXdza2EgMjJBCi0JCQkJWmVncnplICAwNS0xMzAKLQkJCQlQT0xBTkQKLQotMDAtMjYtRjcgICAoaGV4KQkJSW5mb3N5cyBUZWNobm9sb2dpZXMgTHRkLgotMDAyNkY3ICAgICAoYmFzZSAxNikJCUluZm9zeXMgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQk0NCwgRWxlY3Ryb25pY3MgQ2l0eQotCQkJCUhvc3VyIFJvYWQKLQkJCQlCYW5nYWxvcmUgS2FybmFrYXRhIDU2MDEwMAotCQkJCUlORElBCi0KLTAwLTI2LUY4ICAgKGhleCkJCUdvbGRlbiBIaWdod2F5IEluZHVzdHJ5IERldmVsb3BtZW50IENvLiwgTHRkLgotMDAyNkY4ICAgICAoYmFzZSAxNikJCUdvbGRlbiBIaWdod2F5IEluZHVzdHJ5IERldmVsb3BtZW50IENvLiwgTHRkLgotCQkJCUZsb29yIDcsIEJsb2NrIDgsIFZpc2lvbiBTaGVuemhlbiBCdXNpbmVzcyBQYXJrLCBOby45IEdhb3hpbiA5dGggU291dGggUm9hZAotCQkJCVNoZW56aGVuIEhpLXRlY2ggSW5kdXN0cmlhbCBQYXJrLCBOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gQ2l0eSBHdWFuZ2RvbmcgUHJvdmluY2UgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjYtRjkgICAoaGV4KQkJUy5FLk0uIHNybAotMDAyNkY5ICAgICAoYmFzZSAxNikJCVMuRS5NLiBzcmwKLQkJCQl2aWEgTGVjY28sIDYxCi0JCQkJVmltZXJjYXRlIE1vbnphIEJyaWFuemEgMjAwNTkKLQkJCQlJVEFMWQotCi0wMC0yNi1GQSAgIChoZXgpCQlCYW5kUmljaCBJbmMuCi0wMDI2RkEgICAgIChiYXNlIDE2KQkJQmFuZFJpY2ggSW5jLgotCQkJCTdGLiwgTm8uMTg4LCBCYW9jaWFvIFJvYWQKLQkJCQlTaW5kaWFuIENpdHkgVGFpcGVpIDIzMTQ1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi1GQiAgIChoZXgpCQlBaXJEaW8gV2lyZWxlc3MsIEluYy4KLTAwMjZGQiAgICAgKGJhc2UgMTYpCQlBaXJEaW8gV2lyZWxlc3MsIEluYy4KLQkJCQkxMy01LCBOby4gNzksIFNlYy4gMSwgSHNpbiBUYWkgV3UgUm9hZAotCQkJCUhzaWNoaWggQ2l0eSwgVGFpcGVpIENvdW50eSBUYWl3YW4gMjIxMDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LUZDICAgKGhleCkJCUFjU2lQIFRlY2hub2xvZ3kgQ29ycC4KLTAwMjZGQyAgICAgKGJhc2UgMTYpCQlBY1NpUCBUZWNobm9sb2d5IENvcnAuCi0JCQkJM0YuLCBOby4yMiwgRGFsaW4gUmQuLAotCQkJCVRhb3l1YW4gQ2l0eSwgVGFveXVhbiBDb3VudHkgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi1GRCAgIChoZXgpCQlJbnRlcmFjdGl2ZSBJbnRlbGxpZ2VuY2UKLTAwMjZGRCAgICAgKGJhc2UgMTYpCQlJbnRlcmFjdGl2ZSBJbnRlbGxpZ2VuY2UKLQkJCQk3NjAxIEludGVyYWN0aXZlIFdheQotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtRkUgICAoaGV4KQkJTUtEIFRlY2hub2xvZ3kgSW5jLgotMDAyNkZFICAgICAoYmFzZSAxNikJCU1LRCBUZWNobm9sb2d5IEluYy4KLQkJCQkgUi5COCwgTm8uMSBMaXNpbmcgMXN0ICBSZC4sCi0JCQkJSHNpbmNodSAgMzAwNzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LUZGICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbgotMDAyNkZGICAgICAoYmFzZSAxNikJCVJlc2VhcmNoIEluIE1vdGlvbgotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi0wMC0yNy0wMCAgIChoZXgpCQlTaGVuemhlbiBTaWdsZW50IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDI3MDAgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU2lnbGVudCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUJVSUxESU5HIEE4LFRBTkdMQU5HIElORFVTVFJJQUwgWk9ORSxYSUxJLE5BTlNIQU4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjctMDEgICAoaGV4KQkJSU5DT3N0YXJ0ZWMgR21iSAotMDAyNzAxICAgICAoYmFzZSAxNikJCUlOQ09zdGFydGVjIEdtYkgKLQkJCQlSaGVpbnN0ci4gMTcKLQkJCQlUZWx0b3cgR2VybWFueSAxNDUxMwotCQkJCUdFUk1BTlkKLQotMDAtMjctMDIgICAoaGV4KQkJU29sYXJFZGdlIFRlY2hub2xvZ2llcwotMDAyNzAyICAgICAoYmFzZSAxNikJCVNvbGFyRWRnZSBUZWNobm9sb2dpZXMKLQkJCQkxIEFiYmEgRWJhbiBTdC4KLQkJCQlQT0IgMTI3NjYKLQkJCQlIZXJ6ZWxpYSAgNDY3MjUKLQkJCQlJU1JBRUwKLQotMDAtMjctMDMgICAoaGV4KQkJVGVzdGVjaCBFbGVjdHJvbmljcyBQdGUgTHRkCi0wMDI3MDMgICAgIChiYXNlIDE2KQkJVGVzdGVjaCBFbGVjdHJvbmljcyBQdGUgTHRkCi0JCQkJQmxvY2sgMTE4LCAjMDUtMTEwLAotCQkJCUFsanVuaWVkIEF2ZSAyCi0JCQkJU2luZ2Fwb3JlICAzODAxMTgKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjctMDQgICAoaGV4KQkJQWNjZWxlcmF0ZWQgQ29uY2VwdHMsIExMQwotMDAyNzA0ICAgICAoYmFzZSAxNikJCUFjY2VsZXJhdGVkIENvbmNlcHRzLCBMTEMKLQkJCQk0MDE3IFcgRHIgTWFydGluIEx1dGhlciBLaW5nIEpyIEJsdmQKLQkJCQlUYW1wYSBGTCAzMzYxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjctMDUgICAoaGV4KQkJU2VjdHJvbmljCi0wMDI3MDUgICAgIChiYXNlIDE2KQkJU2VjdHJvbmljCi0JCQkJWi5JLiBMZXMgU2F1bG5pZXJzCi0JCQkJU2FpbnRlLU1hdXJlIGRlIFRvdXJhaW5lICAzNzgwMAotCQkJCUZSQU5DRQotCi0wMC0yNy0wNiAgIChoZXgpCQlZT0lTWVMKLTAwMjcwNiAgICAgKGJhc2UgMTYpCQlZT0lTWVMKLQkJCQkzMDktNTIgU1VOR1NVLTJHQSwgMURPTkcsIFNVTkdET05HLUdVCi0JCQkJU0VPVUwgIDEzMy04MjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjctMDcgICAoaGV4KQkJTGlmdCBDb21wbGV4IERTLCBKU0MKLTAwMjcwNyAgICAgKGJhc2UgMTYpCQlMaWZ0IENvbXBsZXggRFMsIEpTQwotCQkJCW1pa3JvcmF5b24gR29yc2t5LCA2Ci0JCQkJTm92b3NpYmlyc2sgIDYzMDA3MwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yNy0wOCAgIChoZXgpCQlOb3JkaWFnIEFTQQotMDAyNzA4ICAgICAoYmFzZSAxNikJCU5vcmRpYWcgQVNBCi0JCQkJRnJ5c2phdmVpZW4gNDAKLQkJCQlPc2xvICAwODg0Ci0JCQkJTk9SV0FZCi0KLTAwLTI3LTA5ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyNzA5ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTI3LTBBICAgKGhleCkJCUlFRSBTLkEuCi0wMDI3MEEgICAgIChiYXNlIDE2KQkJSUVFIFMuQS4KLQkJCQlaQUUgV2VpZXJnZXdhbgotCQkJCTExLCBydWUgRWRtb25kIFJldXRlcgotCQkJCUNvbnRlcm4gIEwtNTMyNgotCQkJCUxVWEVNQk9VUkcKLQotMDAtMjctMEIgICAoaGV4KQkJQWR1cmEgVGVjaG5vbG9naWVzCi0wMDI3MEIgICAgIChiYXNlIDE2KQkJQWR1cmEgVGVjaG5vbG9naWVzCi0JCQkJMjggU2Vjb25kIFN0cmVldAotCQkJCTR0aCBGbG9vcgotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI3LTBDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjcwQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNy0wRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI3MEQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjctMEUgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDI3MEUgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yNy0wRiAgIChoZXgpCQlFbnZpc2lvbm5vdmF0aW9uIEluYwotMDAyNzBGICAgICAoYmFzZSAxNikJCUVudmlzaW9ubm92YXRpb24gSW5jCi0JCQkJNCBXYXJlaGFtIERyaXZlCi0JCQkJTWlzc2lzc2F1Z2EgT250YXJpbyBMNU0gMUI2Ci0JCQkJQ0FOQURBCi0KLTAwLTI3LTEwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyNzEwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjctMTEgICAoaGV4KQkJTGFuUHJvIEluYwotMDAyNzExICAgICAoYmFzZSAxNikJCUxhblBybyBJbmMKLQkJCQkxODgwIE5XIDkzQXYKLQkJCQlNaWFtaSBGbG9yaWRhIDMzMTcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNy0xMiAgIChoZXgpCQlNYXhWaXNpb24gTExDCi0wMDI3MTIgICAgIChiYXNlIDE2KQkJTWF4VmlzaW9uIExMQwotCQkJCTQ5NSBQcm9kdWN0aW9uIEF2ZQotCQkJCU1hZGlzb24gQUwgMzU3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI3LTEzICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotMDAyNzEzICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTEFORSAzNTEsIFNFQy4xLCBUQUlQSU5HIFJELgotCQkJCVRTQU9UVUVOCi0JCQkJTkFOVE9VIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNy0xNCAgIChoZXgpCQlHcmFpbm11c3RhcmRzLCBDbyxsdGQuCi0wMDI3MTQgICAgIChiYXNlIDE2KQkJR3JhaW5tdXN0YXJkcywgQ28sbHRkLgotCQkJCUhFSVdBIE1LIEJsZGcsMi00OC00LE5paG9uYmFzaGktSGFtYS1jaG8KLQkJCQlDaHVvLWt1LAotCQkJCVRva3lvICAxMDMtMDAwNwotCQkJCUpBUEFOCi0KLTAwLTI3LTE1ICAgKGhleCkJCVJlYm91bmQgVGVsZWNvbS4gQ28uLCBMdGQKLTAwMjcxNSAgICAgKGJhc2UgMTYpCQlSZWJvdW5kIFRlbGVjb20uIENvLiwgTHRkCi0JCQkJMTJGLEJ1aWxkaW5nIE5vLjgyLE5vLjExOTgsTm9ydGggUWluemhvdSBSZCwKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMjctMTYgICAoaGV4KQkJQWRhY2hpLVN5b2thaSBDby4sIEx0ZC4KLTAwMjcxNiAgICAgKGJhc2UgMTYpCQlBZGFjaGktU3lva2FpIENvLiwgTHRkLgotCQkJCTIyOC0yIEhhemFtYSBNYWtpCi0JCQkJRnVrdWNoaXlhbWEtc2hpIEt5b3RvIDYyMC0wOTEzCi0JCQkJSkFQQU4KLQotMDAtMjctMTcgICAoaGV4KQkJQ0UgRGlnaXRhbChaaGVuamlhbmcpQ28uLEx0ZAotMDAyNzE3ICAgICAoYmFzZSAxNikJCUNFIERpZ2l0YWwoWmhlbmppYW5nKUNvLixMdGQKLQkJCQlXZWkgMyBSb2FkLCBEaW5nbWFvLCBFY28uRGV2LlpvbmUsCi0JCQkJSmlhbmdzdQotCQkJCVpoZW5qaWFuZyAgMjEyMDA5Ci0JCQkJQ0hJTkEKLQotMDAtMjctMTggICAoaGV4KQkJU3V6aG91IE5FVyBTRUFVTklPTiBWaWRlbyBUZWNobm9sb2d5IENvLixMdGQKLTAwMjcxOCAgICAgKGJhc2UgMTYpCQlTdXpob3UgTkVXIFNFQVVOSU9OIFZpZGVvIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTM4MyBKaW5nbWFvIFJvYWQsIEluZHVzdHJ5IFBhcmsKLQkJCQlTdXpob3UgSmlhbmdzdSAyMTUwMjEKLQkJCQlDSElOQQotCi0wMC0yNy0xOSAgIChoZXgpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLTAwMjcxOSAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLQkJCQlCdWlsZGluZyA3LCBTZWNvbmQgUGFydCwgSG9uZ2h1YWxpbmcgSW5kdXN0cmlhbCBab25lLCBYaWxpIHRvd24KLQkJCQlOYW5zaGFuCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTI3LTFBICAgKGhleCkJCUdlZW5vdm8gVGVjaG5vbG9neSBMdGQuCi0wMDI3MUEgICAgIChiYXNlIDE2KQkJR2Vlbm92byBUZWNobm9sb2d5IEx0ZC4KLQkJCQlVbml0IDQwMiwgNC9GLiwgVG93ZXIgSSxTSFVJIFFJTkcgTVUgSFVBIFlVQU4sCi0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4MAotCQkJCUNISU5BCi0KLTAwLTI3LTFCICAgKGhleCkJCUFsZWMgU2ljaGVyaGVpdHNzeXN0ZW1lIEdtYkgKLTAwMjcxQiAgICAgKGJhc2UgMTYpCQlBbGVjIFNpY2hlcmhlaXRzc3lzdGVtZSBHbWJICi0JCQkJRnJpZWRyaWNoLUhvZWxzY2hlci1TdHJhc3NlIDM2NwotCQkJCURvcnRtdW5kICA0NDMyOAotCQkJCUdFUk1BTlkKLQotMDAtMjctMUMgICAoaGV4KQkJTUVSQ1VSWSBDT1JQT1JBVElPTgotMDAyNzFDICAgICAoYmFzZSAxNikJCU1FUkNVUlkgQ09SUE9SQVRJT04KLQkJCQk1MzEtNiwgR2Fqd2Fkb25nLAotCQkJCVNlb2d1Ci0JCQkJSW5jaGVvbiAgNDA0LTI1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNy0xRCAgIChoZXgpCQlDb21iYSBUZWxlY29tIFN5c3RlbXMgKENoaW5hKSBMdGQuCi0wMDI3MUQgICAgIChiYXNlIDE2KQkJQ29tYmEgVGVsZWNvbSBTeXN0ZW1zIChDaGluYSkgTHRkLgotCQkJCTEwIFNoZW56aG91IFJvYWQKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTAwLTI3LTFFICAgKGhleCkJCVhhZ3lsIENvbW11bmljYXRpb25zCi0wMDI3MUUgICAgIChiYXNlIDE2KQkJWGFneWwgQ29tbXVuaWNhdGlvbnMKLQkJCQkxNjY3IE1hcnJvbmllciBDcnQKLQkJCQlDdW1iZXJsYW5kIE9udGFyaW8gSzRDIDFDMgotCQkJCUNBTkFEQQotCi0wMC0yNy0xRiAgIChoZXgpCQlNSVBSTyBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAyNzFGICAgICAoYmFzZSAxNikJCU1JUFJPIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJODE0LFBlaWthbmcgUm9hZAotCQkJCUNoaWF5aSAgNjAwOTYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI3LTIwICAgKGhleCkJCU5FVy1TT0wgQ09NCi0wMDI3MjAgICAgIChiYXNlIDE2KQkJTkVXLVNPTCBDT00KLQkJCQlCdWNoZW9uIFRlY25vcGFyayA0MDMtNjAyCi0JCQkJWWFrZGFlLWRvbmcgV29ubWktZ3UKLQkJCQlCdWNoZW9uIGNpdHkgS3lvdW5na2ktZG8gNDIwLTczNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNy0yMSAgIChoZXgpCQlTaGVuemhlbiBCYW9hbiBGZW5kYSBJbmR1c3RyaWFsIENvLiwgTHRkCi0wMDI3MjEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQmFvYW4gRmVuZGEgSW5kdXN0cmlhbCBDby4sIEx0ZAotCQkJCUZlbmRhIEhpLVRlY2ggUGFyawotCQkJCVpob3VzaGkgUm9hZCwgU2hpeWFuCi0JCQkJQmFvYW4gU2hlbnpoZW4gNTE4MTA4Ci0JCQkJQ0hJTkEKLQotMDAtMjctMjIgICAoaGV4KQkJVWJpcXVpdGkgTmV0d29ya3MKLTAwMjcyMiAgICAgKGJhc2UgMTYpCQlVYmlxdWl0aSBOZXR3b3JrcwotCQkJCTkxIEUuIFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjctRjggICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLTAwMjdGOCAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotCQkJCTE3NDUgVGVjaG5vbG9neSBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0wMCAgIChoZXgpCQlBTExXRUxMIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMzAwMCAgICAgKGJhc2UgMTYpCQlBTExXRUxMIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQk0RiwgIzE1LCBMQU5FMywgU0VDLjIKLQkJCQlDSElFTiBLV08gTi4gUk9BRCBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtMDEgICAoaGV4KQkJU01QCi0wMDMwMDEgICAgIChiYXNlIDE2KQkJU01QCi0JCQkJMjIsIFJVRSBERVMgQ09TTU9OQVVURVMKLQkJCQkzMTQwMCBUT1VMT1VTRQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0zMC0wMiAgIChoZXgpCQlFeHBhbmQgTmV0d29ya3MKLTAwMzAwMiAgICAgKGJhc2UgMTYpCQlFeHBhbmQgTmV0d29ya3MKLQkJCQlBdGlkaW0gVGVjaCBQYXJrLCBCbGRnLiA0Ci0JCQkJUC5PLiBCb3ggNTgxNDIKLQkJCQlUZWwtQXZpdiA2MTU4MCAgCi0JCQkJSVNSQUVMCi0KLTAwLTMwLTAzICAgKGhleCkJCVBoYXN5cyBMdGQuCi0wMDMwMDMgICAgIChiYXNlIDE2KQkJUGhhc3lzIEx0ZC4KLQkJCQkjMTAwLTk0MDQgNDFzdCBBdmVudWUKLQkJCQlFZG1vbnRvbiBBbGJlcnRhIFQ2WCAxUjIgCi0JCQkJQ0FOQURBCi0KLTAwLTMwLTA0ICAgKGhleCkJCUxFQURURUsgUkVTRUFSQ0ggSU5DLgotMDAzMDA0ICAgICAoYmFzZSAxNikJCUxFQURURUsgUkVTRUFSQ0ggSU5DLgotCQkJCTE4RiwgTm8uMTY2LCBDaGllbi1ZaSBSb2FkCi0JCQkJQ2h1bmctSG8gVGFpcGVpLAotCQkJCUhzaWVuICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTA1ICAgKGhleCkJCUZ1aml0c3UgU2llbWVucyBDb21wdXRlcnMKLTAwMzAwNSAgICAgKGJhc2UgMTYpCQlGdWppdHN1IFNpZW1lbnMgQ29tcHV0ZXJzCi0JCQkJQnVlcmdlcm1laXN0ZXIgdWxyaWNoIDEwMAotCQkJCTg2MTk5IEF1Z3NidXJnICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTA2ICAgKGhleCkJCVNVUEVSUE9XRVIgQ09NUFVURVIKLTAwMzAwNiAgICAgKGJhc2UgMTYpCQlTVVBFUlBPV0VSIENPTVBVVEVSCi0JCQkJRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJTk8uIDIwIFdVLUdPTkcgNlRIIFJPQUQgV1UtS1UgSU5EVVNUUidMCi0JCQkJVGFpcGVpIDI0OCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0wNyAgIChoZXgpCQlPUFRJLCBJTkMuCi0wMDMwMDcgICAgIChiYXNlIDE2KQkJT1BUSSwgSU5DLgotCQkJCTE0NDAgTUNDQVJUSFkgQkxWRC4KLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMDggICAoaGV4KQkJQVZJTyBESUdJVEFMLCBJTkMuCi0wMDMwMDggICAgIChiYXNlIDE2KQkJQVZJTyBESUdJVEFMLCBJTkMuCi0JCQkJOTU3IElORFVTVFJJQUwgUk9BRAotCQkJCVNBTiBDQVJMT1MgQ0EgOTQwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTA5ICAgKGhleCkJCVRhY2hpb24gTmV0d29ya3MsIEluYy4KLTAwMzAwOSAgICAgKGJhc2UgMTYpCQlUYWNoaW9uIE5ldHdvcmtzLCBJbmMuCi0JCQkJMiBNZXJpZGlhbiBSb2FkCi0JCQkJRWF0b250b3duIE5KIDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0wQSAgIChoZXgpCQlBWlRFQ0ggRWxlY3Ryb25pY3MgUHRlIEx0ZAotMDAzMDBBICAgICAoYmFzZSAxNikJCUFaVEVDSCBFbGVjdHJvbmljcyBQdGUgTHRkCi0JCQkJMzEgVUJJIFJPQUQgMQotCQkJCUFaVEVDSCBCVUlMRElORwotCQkJCTQwODY5NAotCQkJCVNJTkdBUE9SRQotCi0wMC0zMC0wQiAgIChoZXgpCQltUEhBU0UgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDMwMEIgICAgIChiYXNlIDE2KQkJbVBIQVNFIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTI1MCAxNHRoIFN0cmVldAotCQkJCUdDQVRUIEJsZGcuIC0gUm9vbSAjMjQ4QQotCQkJCUF0bGFudGEgR0EgMzAzMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTBDICAgKGhleCkJCUNPTkdSVUVOQ1ksIExURC4KLTAwMzAwQyAgICAgKGJhc2UgMTYpCQlDT05HUlVFTkNZLCBMVEQuCi0JCQkJMjMgSEFTSVZJTSBTVFJFRVQKLQkJCQlQT0IgNzgxMwotCQkJCVBFVEFILVRJS1ZBIDQ5MTcwICAKLQkJCQlJU1JBRUwKLQotMDAtMzAtMEQgICAoaGV4KQkJTU1DIFRlY2hub2xvZ3ksIEluYy4KLTAwMzAwRCAgICAgKGJhc2UgMTYpCQlNTUMgVGVjaG5vbG9neSwgSW5jLgotCQkJCSMxNTAyLCBTZW91bCBWZW50dXJlIFRvd24sIEFqdSBCbGRnCi0JCQkJNjc5LTUsIFllb2tzYW0tRG9uZywgS2FuZ25hbS1HdQotCQkJCVNlb3VsIDEzNS0wODAgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC0wRSAgIChoZXgpCQlLbG90eiBEaWdpdGFsIEFHCi0wMDMwMEUgICAgIChiYXNlIDE2KQkJS2xvdHogRGlnaXRhbCBBRwotCQkJCUhhbnMtU3RpZXNzYmVyZ2Vyc3RyLiAyQQotCQkJCUQtODU1NDAgSGFhciAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC0wRiAgIChoZXgpCQlJTVQgLSBJbmZvcm1hdGlvbiBNYW5hZ2VtZW50IFQKLTAwMzAwRiAgICAgKGJhc2UgMTYpCQlJTVQgLSBJbmZvcm1hdGlvbiBNYW5hZ2VtZW50IFQKLQkJCQlHZXdlcmJlc3RyYXNzZSA4Ci0JCQkJQ0gtOTQ3MCBCdWNocyAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMzAtMTAgICAoaGV4KQkJVklTSU9ORVRJQ1MgSU5URVJOQVRJT05BTAotMDAzMDEwICAgICAoYmFzZSAxNikJCVZJU0lPTkVUSUNTIElOVEVSTkFUSU9OQUwKLQkJCQkzRiwgTk8uIDMsIFBST1NQRVJJVFkgUk9BRCAxCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTkNIVQotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTExICAgKGhleCkJCUhNUyBGSUVMREJVUyBTWVNURU1TIEFCCi0wMDMwMTEgICAgIChiYXNlIDE2KQkJSE1TIEZJRUxEQlVTIFNZU1RFTVMgQUIKLQkJCQlQSUxFRkVMVFNHQVRBTiA5My05NQotCQkJCTMwMjUwIEhBTE1TU1RBRAotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC0zMC0xMiAgIChoZXgpCQlESUdJVEFMIEVOR0lORUVSSU5HIExURC4KLTAwMzAxMiAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEVOR0lORUVSSU5HIExURC4KLQkJCQkyIFRSRU5DSCBST0FELCBNQUxMVVNLCi0JCQkJQkVMRkFTVCBCVDM2IDRUWQotCQkJCU5PUlRIRVJOIElSRUxBTkQKLQkJCQlJUkVMQU5ECi0KLTAwLTMwLTEzICAgKGhleCkJCU5FQyBDb3Jwb3JhdGlvbgotMDAzMDEzICAgICAoYmFzZSAxNikJCU5FQyBDb3Jwb3JhdGlvbgotCQkJCTEtMTAgTmlzc2hpbmNobywgRnVjaHUKLQkJCQlUb2t5byAxODMtODUwMSAgCi0JCQkJSkFQQU4KLQotMDAtMzAtMTQgICAoaGV4KQkJRElWSU8sIElOQy4KLTAwMzAxNCAgICAgKGJhc2UgMTYpCQlESVZJTywgSU5DLgotCQkJCTk5NyBFLiBBUlFVRVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0xNSAgIChoZXgpCQlDUCBDTEFSRSBDT1JQLgotMDAzMDE1ICAgICAoYmFzZSAxNikJCUNQIENMQVJFIENPUlAuCi0JCQkJNzggQ0hFUlJZIEhJTEwgRFJJVkUKLQkJCQlCRVZFUkxZIE1BIDAxOTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0xNiAgIChoZXgpCQlJU0hJREEgQ08uLCBMVEQuCi0wMDMwMTYgICAgIChiYXNlIDE2KQkJSVNISURBIENPLiwgTFRELgotCQkJCTk1OS0xIFNISU1PTUFHQVJJCi0JCQkJUklUVE8tQ0hPIEtVUklUQS1HVU4gU0hJR0EgIDUyMC0zMDI2Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0zMC0xNyAgIChoZXgpCQlCbHVlQXJjIFVLIEx0ZAotMDAzMDE3ICAgICAoYmFzZSAxNikJCUJsdWVBcmMgVUsgTHRkCi0JCQkJUXVlZW5zZ2F0ZSBIb3VzZQotCQkJCUNvb2toYW0gUm9hZAotCQkJCUJyYWNrbmVsbCAgUkcxMiAxUkIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0zMC0xOCAgIChoZXgpCQlKZXR3YXkgSW5mb3JtYXRpb24gQ28uLCBMdGQuCi0wMDMwMTggICAgIChiYXNlIDE2KQkJSmV0d2F5IEluZm9ybWF0aW9uIENvLiwgTHRkLgotCQkJCTRGLCBOby4gMTY4LCBMSSBUSEUgU1QuCi0JCQkJQ2h1bmcgSG8gQ2l0eSAyMzUgVGFpcGVpIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtMTkgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAzMDE5ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUgLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0xQSAgIChoZXgpCQlTTUFSVEJSSURHRVMgUFRFLiBMVEQuCi0wMDMwMUEgICAgIChiYXNlIDE2KQkJU01BUlRCUklER0VTIFBURS4gTFRELgotCQkJCTc0NSBUb2EgUGF5b2ggTG9yb25nIDUKLQkJCQkjMDQtMDEKLQkJCQkzMTk0NTUKLQkJCQlTSU5HQVBPUkUKLQotMDAtMzAtMUIgICAoaGV4KQkJU0hVVFRMRSwgSU5DLgotMDAzMDFCICAgICAoYmFzZSAxNikJCVNIVVRUTEUsIElOQy4KLQkJCQk1RiwgTm8uIDM0LCBMYW5lIDYwCi0JCQkJV2VuLUh1IFN0LiwgTmVpLUh1IERpc3QuLAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0xQyAgIChoZXgpCQlBTFRWQVRFUiBBSVJEQVRBIFNZU1RFTVMKLTAwMzAxQyAgICAgKGJhc2UgMTYpCQlBTFRWQVRFUiBBSVJEQVRBIFNZU1RFTVMKLQkJCQlHTUJIICYgQ08uIEtHCi0JCQkJUklFTUVOU1RSQVNTRSAzMCA3NDkwNiBCQUQgUkFQUEVOQVUKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0zMC0xRCAgIChoZXgpCQlTS1lTVFJFQU0sIElOQy4KLTAwMzAxRCAgICAgKGJhc2UgMTYpCQlTS1lTVFJFQU0sIElOQy4KLQkJCQk0NTUgRGVHdWlnbmUgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYtMzgzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMUUgICAoaGV4KQkJM0NPTSBFdXJvcGUgTHRkLgotMDAzMDFFICAgICAoYmFzZSAxNikJCTNDT00gRXVyb3BlIEx0ZC4KLQkJCQkzQ09NIENlbnRyZQotCQkJCUJvdW5kYXJ5IFdheSwgSGVtZWwgSGVtcHN0ZWFkCi0JCQkJSGVydHMuICBIUDIgN1lVICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0zMC0xRiAgIChoZXgpCQlPUFRJQ0FMIE5FVFdPUktTLCBJTkMuCi0wMDMwMUYgICAgIChiYXNlIDE2KQkJT1BUSUNBTCBORVRXT1JLUywgSU5DLgotCQkJCTE2NiBCQVlQT0lOVEUgUEFSS1dBWQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0yMCAgIChoZXgpCQlUU0ksIEluYy4uCi0wMDMwMjAgICAgIChiYXNlIDE2KQkJVFNJLCBJbmMuLgotCQkJCTUwMCBDYXJkaWdhbiBSb2FkCi0JCQkJU2hvcmV2aWV3IE1OIDU1MTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0yMSAgIChoZXgpCQlIU0lORyBURUNILiBFTlRFUlBSSVNFIENPLixMVEQKLTAwMzAyMSAgICAgKGJhc2UgMTYpCQlIU0lORyBURUNILiBFTlRFUlBSSVNFIENPLixMVEQKLQkJCQkyRiwgTk8uIDIyLCBBTExMRVkgMzgsIExBTkUgOTEKLQkJCQlTRUMuIDEsIE5FSSBIVSBST0FECi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTIyICAgKGhleCkJCUZvbmcgS2FpIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDMwMjIgICAgIChiYXNlIDE2KQkJRm9uZyBLYWkgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQk0Ri0zLCBOby4gMTMsIFd1IENodWFuIDFzdCBSb2FkCi0JCQkJSHNpbiBDaHVhbmcgQ2l0eSwgVGFpcGVpIEhzaWVuICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTIzICAgKGhleCkJCUNPR0VOVCBDT01QVVRFUiBTWVNURU1TLCBJTkMuCi0wMDMwMjMgICAgIChiYXNlIDE2KQkJQ09HRU5UIENPTVBVVEVSIFNZU1RFTVMsIElOQy4KLQkJCQkxMCBSSVZFUiBST0FEIC0gU1RFLiAjMjA1Ci0JCQkJVVhCUklER0UgTUEgMDE1NjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTI0ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMzAyNCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFIC1TSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0yNSAgIChoZXgpCQlDSEVDS09VVCBDT01QVVRFUiBTWVNURU1TLCBMVEQKLTAwMzAyNSAgICAgKGJhc2UgMTYpCQlDSEVDS09VVCBDT01QVVRFUiBTWVNURU1TLCBMVEQKLQkJCQlUT1dOU0VORCBGQVJNIFJPQUQKLQkJCQlIT1VHSFRPTiBSRUdJUywgRFVOU1RBQkxFIEJFREZPUkRTSElSRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMzAtMjYgICAoaGV4KQkJSGVpVGVsIERpZ2l0YWwgVmlkZW8gR21iSAotMDAzMDI2ICAgICAoYmFzZSAxNikJCUhlaVRlbCBEaWdpdGFsIFZpZGVvIEdtYkgKLQkJCQlTdHV0aGFnZW4gMjUKLQkJCQkyNDExMyBNb2xmc2VlCi0JCQkJR0VSTUFOWQotCi0wMC0zMC0yNyAgIChoZXgpCQlLRVJCQU5HTywgSU5DLgotMDAzMDI3ICAgICAoYmFzZSAxNikJCUtFUkJBTkdPLCBJTkMuCi0JCQkJMjE3NzEgU1RFVkVOUyBDUkVFSyBCTFZELiAjMTAwCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0yOCAgIChoZXgpCQlGQVNFIFNhbGRhdHVyYSBzcmwKLTAwMzAyOCAgICAgKGJhc2UgMTYpCQlGQVNFIFNhbGRhdHVyYSBzcmwKLQkJCQlWLlIuIEJlcm5hcmRpIDUKLQkJCQkxMDA0MiBTdHVwaW5pcWktTmljaGVsaW5vCi0JCQkJVE9SSU5PICAKLQkJCQlJVEFMWQotCi0wMC0zMC0yOSAgIChoZXgpCQlPUElDT00KLTAwMzAyOSAgICAgKGJhc2UgMTYpCQlPUElDT00KLQkJCQlST09NICMzMDIsIFNUWUxFIEZBQ1RPUlkgMTUxCi0JCQkJWUFUQUItRE9ORywgQlVOREFORy1HVSBTVU5HTkFNLVNJLCBLWVVORwotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTMwLTJBICAgKGhleCkJCVNPVVRIRVJOIElORk9STUFUSU9OCi0wMDMwMkEgICAgIChiYXNlIDE2KQkJU09VVEhFUk4gSU5GT1JNQVRJT04KLQkJCQlTWVNURU0sIElOQy4KLQkJCQlOTy44LCBSJkQgUkQuIElWIFNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBCi0JCQkJSFNJTkNIVSBUQUlXQU4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtMkIgICAoaGV4KQkJSU5BTFAgTkVUV09SS1MsIElOQy4KLTAwMzAyQiAgICAgKGJhc2UgMTYpCQlJTkFMUCBORVRXT1JLUywgSU5DLgotCQkJCU1FUklFRFdFRyA3Ci0JCQkJQ0gtMzE3MiBOSUVERVJXQU5HRU4KLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTMwLTJDICAgKGhleCkJCVNZTEFOVFJPIFNZU1RFTVMgQ09SUE9SQVRJT04KLTAwMzAyQyAgICAgKGJhc2UgMTYpCQlTWUxBTlRSTyBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMTY4NiBERUxMIEFWRU5VRQotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0yRCAgIChoZXgpCQlRVUFOVFVNIEJSSURHRSBDT01NVU5JQ0FUSU9OUwotMDAzMDJEICAgICAoYmFzZSAxNikJCVFVQU5UVU0gQlJJREdFIENPTU1VTklDQVRJT05TCi0JCQkJT05FIEhJR0ggU1RSRUVUCi0JCQkJTk9SVEggQU5ET1ZFUiBNQSAwMTg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMkUgICAoaGV4KQkJSG9mdCAmIFdlc3NlbCBBRwotMDAzMDJFICAgICAoYmFzZSAxNikJCUhvZnQgJiBXZXNzZWwgQUcKLQkJCQlSb3RlbmJ1cmdlciBTdHJhc3NlIDIwCi0JCQkJMzA2NTkgSGFubm92ZXIgIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtMkYgICAoaGV4KQkJR0UgQXZpYXRpb24gU3lzdGVtCi0wMDMwMkYgICAgIChiYXNlIDE2KQkJR0UgQXZpYXRpb24gU3lzdGVtCi0JCQkJMzI5MCBQYXR0ZXJzb24gQXZlLiwgUy5FLgotCQkJCUdyYW5kIFJhcGlkcyBNSSA0OTUxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMzAgICAoaGV4KQkJSEFSTU9OSVggQ09SUE9SQVRJT04KLTAwMzAzMCAgICAgKGJhc2UgMTYpCQlIQVJNT05JWCBDT1JQT1JBVElPTgotCQkJCTE3NTUgT1NHT09EIFNUUkVFVAotCQkJCU5PUlRIIEFORE9WRVIgTUEgMDE4NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTMxICAgKGhleCkJCUxJR0hUV0FWRSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAzMDMxICAgICAoYmFzZSAxNikJCUxJR0hUV0FWRSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTI2MSBQRVBFJ1MgRkFSTSBST0FECi0JCQkJTUlMRk9SRCBDVCAwNjQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMzIgICAoaGV4KQkJTWFnaWNSYW0sIEluYy4KLTAwMzAzMiAgICAgKGJhc2UgMTYpCQlNYWdpY1JhbSwgSW5jLgotCQkJCTE4NTAgQmV2ZXJseSBCbHZkLgotCQkJCUxvcyBBbmdlbGVzIENBIDkwMDU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0zMyAgIChoZXgpCQlPUklFTlQgVEVMRUNPTSBDTy4sIExURC4KLTAwMzAzMyAgICAgKGJhc2UgMTYpCQlPUklFTlQgVEVMRUNPTSBDTy4sIExURC4KLQkJCQlNSVNVTkcgQlVMRElORyAxMTUtNwotCQkJCU5PTkhZVU4tRE9ORywgS0FOR01BTi1LVSBTRU9VTAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTMwLTM0ICAgKGhleCkJCVNFVCBFTkdJTkVFUklORwotMDAzMDM0ICAgICAoYmFzZSAxNikJCVNFVCBFTkdJTkVFUklORwotCQkJCTE1NzUwIFZJTkVZQVJEIEJMVkQuIFNURS4gIzEwMAotCQkJCU1PUkdBTiBISUxMIENBIDk1MDM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0zNSAgIChoZXgpCQlDb3JuaW5nIEluY29ycG9yYXRlZAotMDAzMDM1ICAgICAoYmFzZSAxNikJCUNvcm5pbmcgSW5jb3Jwb3JhdGVkCi0JCQkJRGF0YSBDZW50ZXIKLQkJCQlNL1MgLSBTUC1XVy0wMQotCQkJCUNvcm5pbmcgTlkgMTQ4MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTM2ICAgKGhleCkJCVJNUCBFTEVLVFJPTklLU1lTVEVNRSBHTUJICi0wMDMwMzYgICAgIChiYXNlIDE2KQkJUk1QIEVMRUtUUk9OSUtTWVNURU1FIEdNQkgKLQkJCQlIQU5OUy1NQVJUSU4tU0NITEUnUi1TVFIuMTItMTQKLQkJCQlELTQ3ODc3IFdJTExJQ0gtTVVOQ0hIRUlERQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTM3ICAgKGhleCkJCVBhY2thcmQgQmVsbCBOZWMgU2VydmljZXMKLTAwMzAzNyAgICAgKGJhc2UgMTYpCQlQYWNrYXJkIEJlbGwgTmVjIFNlcnZpY2VzCi0JCQkJMjk5IGF2ZW51ZSBQYXR0b24sIEJQIDY0NQotCQkJCTQ5MDA2IEFuZ2VycyBDZWRleCAwMSAgCi0JCQkJRlJBTkNFCi0KLTAwLTMwLTM4ICAgKGhleCkJCVhDUCwgSU5DLgotMDAzMDM4ICAgICAoYmFzZSAxNikJCVhDUCwgSU5DLgotCQkJCTQwIEVMTSBTVFJFRVQKLQkJCQlEUllERU4gTlkgMTMwNTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTM5ICAgKGhleCkJCVNPRlRCT09LIFBSRVNTCi0wMDMwMzkgICAgIChiYXNlIDE2KQkJU09GVEJPT0sgUFJFU1MKLQkJCQk3NzQ1IEhFUlNDSEVMIEFWRU5VRQotCQkJCUxBIEpPTExBIENBIDkyMDM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0zQSAgIChoZXgpCQlNQUFURUwKLTAwMzAzQSAgICAgKGJhc2UgMTYpCQlNQUFURUwKLQkJCQk0OTUgUlVFIERFIFBPTU1BUklOCi0JCQkJMzgzNjAgVk9SRVBQRSAgCi0JCQkJRlJBTkNFCi0KLTAwLTMwLTNCICAgKGhleCkJCVBvd2VyQ29tIFRlY2hub2xvZ3kKLTAwMzAzQiAgICAgKGJhc2UgMTYpCQlQb3dlckNvbSBUZWNobm9sb2d5Ci0JCQkJMkYsIE5vLiAzNCwgSW5kdXN0cnkgRS4gUm9hZCBJVgotCQkJCUhzaW5jaHUgU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1IDMwMCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0zQyAgIChoZXgpCQlPTk5UTyBDT1JQLgotMDAzMDNDICAgICAoYmFzZSAxNikJCU9OTlRPIENPUlAuCi0JCQkJMTJGLTIsICBOTy4gMTYxCi0JCQkJU1VORyBURUggUkQuLCBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtM0QgICAoaGV4KQkJSVZBIENPUlBPUkFUSU9OCi0wMDMwM0QgICAgIChiYXNlIDE2KQkJSVZBIENPUlBPUkFUSU9OCi0JCQkJMjkgSFVEU09OIFJPQUQKLQkJCQlTVURCVVJZIE1BIDAxNzc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0zRSAgIChoZXgpCQlSYWRjb20gTHRkLgotMDAzMDNFICAgICAoYmFzZSAxNikJCVJhZGNvbSBMdGQuCi0JCQkJMTIgSGFuZWNob3NoZXQgU3RyZWV0Ci0JCQkJVGVsLUF2aXYgNjk3MTAgIAotCQkJCUlTUkFFTAotCi0wMC0zMC0zRiAgIChoZXgpCQlUdXJib0NvbW0gVGVjaCBJbmMuCi0wMDMwM0YgICAgIChiYXNlIDE2KQkJVHVyYm9Db21tIFRlY2ggSW5jLgotCQkJCTRGLTIsIE5vIDE3MSwgU3VuZy1UY2ggUm9hZAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC00MCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDMwNDAgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRSAtU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNDEgICAoaGV4KQkJU0FFSklOIFQgJiBNIENPLiwgTFRELgotMDAzMDQxICAgICAoYmFzZSAxNikJCVNBRUpJTiBUICYgTSBDTy4sIExURC4KLQkJCQkyTkQgRkwuLCBTQUVKSU4gQkxERy4gNjg5Ci0JCQkJSUxXT04tRE9ORywgS0FOR05BTS1HVSwgU0VPVUwKLQkJCQkxMzUtMjMwIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTMwLTQyICAgKGhleCkJCURlVGVXZS1EZXV0c2NoZSBUZWxlcGhvbndlcmtlCi0wMDMwNDIgICAgIChiYXNlIDE2KQkJRGVUZVdlLURldXRzY2hlIFRlbGVwaG9ud2Vya2UKLQkJCQlaZXVnaG9mc3RyYXNzZSAxCi0JCQkJRC0xMDk5NyBCZXJsaW4gIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtNDMgICAoaGV4KQkJSURSRUFNIFRFQ0hOT0xPR0lFUywgUFRFLiBMVEQuCi0wMDMwNDMgICAgIChiYXNlIDE2KQkJSURSRUFNIFRFQ0hOT0xPR0lFUywgUFRFLiBMVEQuCi0JCQkJNTQgS0FMTEFORyBCQUhSVSwgIzAyLTE0Ci0JCQkJU0lOR0FQT1JFIDMzOTMzNgotCQkJCVNJTkdBUE9SRQotCQkJCVNJTkdBUE9SRQotCi0wMC0zMC00NCAgIChoZXgpCQlDcmFkbGVQb2ludCwgSW5jCi0wMDMwNDQgICAgIChiYXNlIDE2KQkJQ3JhZGxlUG9pbnQsIEluYwotCQkJCTgwNSBXLiBGcmFua2xpbiBTdC4KLQkJCQlCb2lzZSBJRCA4MzcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNDUgICAoaGV4KQkJVmlsbGFnZSBOZXR3b3JrcywgSW5jLiAoVk5JKQotMDAzMDQ1ICAgICAoYmFzZSAxNikJCVZpbGxhZ2UgTmV0d29ya3MsIEluYy4gKFZOSSkKLQkJCQkxMDAgVmlsbGFnZSBDb3VydCAtIFN0ZS4gIzMwMQotCQkJCUhhemxldCBOSiAwNzczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNDYgICAoaGV4KQkJQ29udHJvbGxlZCBFbGVjdHJvbmljIE1hbmFnZW1lCi0wMDMwNDYgICAgIChiYXNlIDE2KQkJQ29udHJvbGxlZCBFbGVjdHJvbmljIE1hbmFnZW1lCi0JCQkJVW5pdCA0IFJhdmVuaGlsbCBCdXNpbmVzcyBQYXJrCi0JCQkJUmF2ZW5oaWxsIFJvYWQKLQkJCQlCZWxmYXN0ICAKLQkJCQlJUkVMQU5ECi0KLTAwLTMwLTQ3ICAgKGhleCkJCU5JU1NFSSBFTEVDVFJJQyBDTy4sIExURC4KLTAwMzA0NyAgICAgKGJhc2UgMTYpCQlOSVNTRUkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJMzIgTUlZQVdBS0UsIFNISU1PTk9JU0hJS0ktQ0hPCi0JCQkJTkFLQUdBV0EtS1UsIE5BR09ZQSA0NTQtMDk0NQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMzAtNDggICAoaGV4KQkJU3VwZXJtaWNybyBDb21wdXRlciwgSW5jLgotMDAzMDQ4ICAgICAoYmFzZSAxNikJCVN1cGVybWljcm8gQ29tcHV0ZXIsIEluYy4KLQkJCQkyMDUxIEp1bmN0aW9uIEF2ZW51ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC00OSAgIChoZXgpCQlCUllBTlQgVEVDSE5PTE9HWSwgTFRELgotMDAzMDQ5ICAgICAoYmFzZSAxNikJCUJSWUFOVCBURUNITk9MT0dZLCBMVEQuCi0JCQkJUC5PLiBCT1ggNjk1NTcKLQkJCQlCUllBTlNUT04sIDIwMjEKLQkJCQlTT1VUSCBBRlJJQ0EKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMzAtNEEgICAoaGV4KQkJRnJhdW5ob2ZlciBJUE1TCi0wMDMwNEEgICAgIChiYXNlIDE2KQkJRnJhdW5ob2ZlciBJUE1TCi0JCQkJTWFyaWEtUmVpY2hlLVN0cmFzc2UgMgotCQkJCTAxMTA5Ci0JCQkJR0VSTUFOWQotCi0wMC0zMC00QiAgIChoZXgpCQlPUkJBQ09NIFNZU1RFTVMsIElOQy4KLTAwMzA0QiAgICAgKGJhc2UgMTYpCQlPUkJBQ09NIFNZU1RFTVMsIElOQy4KLQkJCQkxNzA0IFRBWUxPUlMgTEFORQotCQkJCUNJTk5BTUlOU09OIE5KIDA4MDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC00QyAgIChoZXgpCQlBUFBJQU4gQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMzA0QyAgICAgKGJhc2UgMTYpCQlBUFBJQU4gQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk4MCBDRU5UUkFMIFNUUkVFVAotCQkJCUJPWEJPUk9VR0ggTUEgMDE3MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTREICAgKGhleCkJCUVTSQotMDAzMDREICAgICAoYmFzZSAxNikJCUVTSQotCQkJCTI2MDEgU3VtbWl0IEF2ZW51ZQotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC00RSAgIChoZXgpCQlCVVNURUMgUFJPRFVDVElPTiBMVEQuCi0wMDMwNEUgICAgIChiYXNlIDE2KQkJQlVTVEVDIFBST0RVQ1RJT04gTFRELgotCQkJCVdPUkxEIEFWSUFUSU9OIFBBUksKLQkJCQlTaGFubm9uIENvdW50eSBDbGFyZSAKLQkJCQlJUkVMQU5ECi0KLTAwLTMwLTRGICAgKGhleCkJCVBMQU5FVCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDMwNEYgICAgIChiYXNlIDE2KQkJUExBTkVUIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkxMUYsIE5vLiA5NiwgTWluLUNodWFuIFJvYWQKLQkJCQlIc2luLVRpZW4gVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTUwICAgKGhleCkJCVZlcnNhIFRlY2hub2xvZ3kKLTAwMzA1MCAgICAgKGJhc2UgMTYpCQlWZXJzYSBUZWNobm9sb2d5Ci0JCQkJNDQzMCBFLiBNaXJhbG9tYSBBdmUuLCAtIFN0ZS4KLQkJCQlBbmFoZWltIENBIDkyODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC01MSAgIChoZXgpCQlPUkJJVCBBVklPTklDICYgQ09NTVVOSUNBVElPTgotMDAzMDUxICAgICAoYmFzZSAxNikJCU9SQklUIEFWSU9OSUMgJiBDT01NVU5JQ0FUSU9OCi0JCQkJU1lTVEVNUywgTFRELgotCQkJCVAuTy4gQk9YIDMxNzEgSU5EVVNUUklBTCBaT05FLCBORVRBTllBIDQKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMzAtNTIgICAoaGV4KQkJRUxBU1RJQyBORVRXT1JLUwotMDAzMDUyICAgICAoYmFzZSAxNikJCUVMQVNUSUMgTkVUV09SS1MKLQkJCQk2MTIwIFdJTkRXQVJEIFBBUktXQVkgLVNURSMxMDAKLQkJCQlBTFBIQVJFVFRBIEdBIDMwMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC01MyAgIChoZXgpCQlCYXNsZXIgQUcKLTAwMzA1MyAgICAgKGJhc2UgMTYpCQlCYXNsZXIgQUcKLQkJCQlBbiBEZXIgU3RydXNiZWsgNjAtNjIKLQkJCQkyMjkyNiBBaHJlbnNidXJnICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTU0ICAgKGhleCkJCUNBU1RMRU5FVCBURUNITk9MT0dZLCBJTkMuCi0wMDMwNTQgICAgIChiYXNlIDE2KQkJQ0FTVExFTkVUIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQlOTy4gMTMwIFdVLUtVTkcgUkQuLAotCQkJCVdVLUtVIEhTSUFORyBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtNTUgICAoaGV4KQkJUmVuZXNhcyBUZWNobm9sb2d5IEFtZXJpY2EsIEluYy4KLTAwMzA1NSAgICAgKGJhc2UgMTYpCQlSZW5lc2FzIFRlY2hub2xvZ3kgQW1lcmljYSwgSW5jLgotCQkJCTQ1MCBIb2xnZXIgV2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTU2ICAgKGhleCkJCUJlY2sgSVBDIEdtYkgKLTAwMzA1NiAgICAgKGJhc2UgMTYpCQlCZWNrIElQQyBHbWJICi0JCQkJR3L8bmluZ2VyIFdlZyAyNAotCQkJCUQtMzU0MTUgUG9obGhlaW0gCi0JCQkJR0VSTUFOWQotCi0wMC0zMC01NyAgIChoZXgpCQlRVGVsTmV0LCBJbmMuCi0wMDMwNTcgICAgIChiYXNlIDE2KQkJUVRlbE5ldCwgSW5jLgotCQkJCTQwMCAtIDMxMTUgMTJ0aCBTdHJlZXQgTkUKLQkJCQlDYWxnYXJ5IEFsYmVydGEgVDJFIDdKMgotCQkJCUNBTkFEQQotCi0wMC0zMC01OCAgIChoZXgpCQlBUEkgTU9USU9OCi0wMDMwNTggICAgIChiYXNlIDE2KQkJQVBJIE1PVElPTgotCQkJCTQ1IEhBWkVMV09PRCBEUklWRQotCQkJCUFNSEVSU1QgTlkgMTQyMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTU5ICAgKGhleCkJCUtPTlRST04gQ09NUEFDVCBDT01QVVRFUlMgQUcKLTAwMzA1OSAgICAgKGJhc2UgMTYpCQlLT05UUk9OIENPTVBBQ1QgQ09NUFVURVJTIEFHCi0JCQkJTm9yZHN0cmFzc2UgMTEvRgotCQkJCSBMVVRFUkJBQ0ggIDQ1NDIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0zMC01QSAgIChoZXgpCQlURUxHRU4gQ09SUE9SQVRJT04KLTAwMzA1QSAgICAgKGJhc2UgMTYpCQlURUxHRU4gQ09SUE9SQVRJT04KLQkJCQkzMTAxIFNPVkVSRUlHTiBEUi4gLSBTVEUuCi0JCQkJTEFOU0lORyBNSSA0ODkxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNUIgICAoaGV4KQkJVG9rbyBJbmMuCi0wMDMwNUIgICAgIChiYXNlIDE2KQkJVG9rbyBJbmMuCi0JCQkJMTggQ09NSUdBWUEsIFRTVVJVR0FTSElNQS1TSEkKLQkJCQlTQUlUQU1BLUtFTgotCQkJCUpBUEFOIDM1MC0yMjgxCi0JCQkJSkFQQU4KLQotMDAtMzAtNUMgICAoaGV4KQkJU01BUiBMYWJvcmF0b3JpZXMgQ29ycC4KLTAwMzA1QyAgICAgKGJhc2UgMTYpCQlTTUFSIExhYm9yYXRvcmllcyBDb3JwLgotCQkJCTEwOTYwIE1pbGxyaWRnZSBOb3J0aCAtIFN0ZS4gIzEwNwotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTVEICAgKGhleCkJCURJR0lUUkEgU1lTVEVNUywgSU5DLgotMDAzMDVEICAgICAoYmFzZSAxNikJCURJR0lUUkEgU1lTVEVNUywgSU5DLgotCQkJCTgtNjEsIEdBV09MLURPTkcKLQkJCQlZT05HU0FOLUtVIFNFT1VMCi0JCQkJS09SRUEgMTQwLTE1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC01RSAgIChoZXgpCQlBYmVsa28gSW5ub3ZhdGlvbgotMDAzMDVFICAgICAoYmFzZSAxNikJCUFiZWxrbyBJbm5vdmF0aW9uCi0JCQkJQm94IDgwOAotCQkJCVMtOTcxMjUgTHVsZWEgIAotCQkJCVNXRURFTgotCi0wMC0zMC01RiAgIChoZXgpCQlIYXNzZWxibGFkCi0wMDMwNUYgICAgIChiYXNlIDE2KQkJSGFzc2VsYmxhZAotCQkJCUhlanJldmVqIDMwCi0JCQkJQ29wZW5oYWdlbiBOViBESy0yNDAwCi0JCQkJREVOTUFSSwotCi0wMC0zMC02MCAgIChoZXgpCQlQb3dlcmZpbGUsIEluYy4KLTAwMzA2MCAgICAgKGJhc2UgMTYpCQlQb3dlcmZpbGUsIEluYy4KLQkJCQkzMzUwIFRob21hcyBSb2FkCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQtMjA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNjEgICAoaGV4KQkJTW9ieVRFTAotMDAzMDYxICAgICAoYmFzZSAxNikJCU1vYnlURUwKLQkJCQk0MzAxIENvbm5lY3RpY3V0IEF2ZS4gTlcKLQkJCQlTdGUuICM0NTQKLQkJCQlXYXNoaW5ndG9uIERDIDIwMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC02MiAgIChoZXgpCQlQQVRIIDEgTkVUV09SSyBURUNITk9MJ1MgSU5DLgotMDAzMDYyICAgICAoYmFzZSAxNikJCVBBVEggMSBORVRXT1JLIFRFQ0hOT0wnUyBJTkMuCi0JCQkJMzYzNiBOT0JFTCBEUklWRSAtIFNURS4gIzI3NQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNjMgICAoaGV4KQkJU0FOVEVSQSBTWVNURU1TLCBJTkMuCi0wMDMwNjMgICAgIChiYXNlIDE2KQkJU0FOVEVSQSBTWVNURU1TLCBJTkMuCi0JCQkJMjkwMSBTVU1NSVQgQVZFTlVFIC0gU1RFLiAjMTAwCi0JCQkJUExBTk8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTY0ICAgKGhleCkJCUFETElOSyBURUNITk9MT0dZLCBJTkMuCi0wMDMwNjQgICAgIChiYXNlIDE2KQkJQURMSU5LIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk5RiwgTk8uIDE2NiwgSklFTi1ZSSBSLkQuCi0JCQkJQ0hVTkctSE8gQ0lUWSBUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtNjUgICAoaGV4KQkJQVBQTEUgQ09NUFVURVIsIElOQy4KLTAwMzA2NSAgICAgKGJhc2UgMTYpCQlBUFBMRSBDT01QVVRFUiwgSU5DLgotCQkJCTIwNjUwIFZBTExFWSBHUkVFTiBEUklWRQotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNjYgICAoaGV4KQkJUkZNCi0wMDMwNjYgICAgIChiYXNlIDE2KQkJUkZNCi0JCQkJMzA3OSBQcmVtaWVyZSBQa3d5Ci0JCQkJU3VpdGUgMTQwCi0JCQkJRHVsdXRoIEdBIDMwMDk3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC02NyAgIChoZXgpCQlCSU9TVEFSIE1JQ1JPVEVDSCBJTlQnTCBDT1JQLgotMDAzMDY3ICAgICAoYmFzZSAxNikJCUJJT1NUQVIgTUlDUk9URUNIIElOVCdMIENPUlAuCi0JCQkJMkZMLiBOTy4gMTA4LTIgTUlOIENIVUFOIFJPQUQKLQkJCQlIU0lOIFRJRU4gQ0lUWSwgVEFJUEVJIEhTSUVOICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTY4ICAgKGhleCkJCUNZQkVSTkVUSUNTIFRFQ0guIENPLiwgTFRELgotMDAzMDY4ICAgICAoYmFzZSAxNikJCUNZQkVSTkVUSUNTIFRFQ0guIENPLiwgTFRELgotCQkJCURBSVRPSCBCTERHLiA0RiAzLTMyLTEKLQkJCQlUQUtBREEsIFRPU0hJTUEtS1UsIFRPS1lPCi0JCQkJSkFQQU4gMTcxLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0zMC02OSAgIChoZXgpCQlJTVBBQ0NUIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMzA2OSAgICAgKGJhc2UgMTYpCQlJTVBBQ0NUIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkyRiwgTk8uIDEyLCBSJkQgUkQuIElJCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTi1DSFUKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtNkEgICAoaGV4KQkJUEVOVEEgTUVESUEgQ08uLCBMVEQuCi0wMDMwNkEgICAgIChiYXNlIDE2KQkJUEVOVEEgTUVESUEgQ08uLCBMVEQuCi0JCQkJRS01MDQgQnVuZGFuZyBUZWNobm9wYXJrLDE1MQotCQkJCVlhdG9wLWRvbmcgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtIEd5ZW9uZ2dpLWRvIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC02QiAgIChoZXgpCQlDTU9TIFNZU1RFTVMsIElOQy4KLTAwMzA2QiAgICAgKGJhc2UgMTYpCQlDTU9TIFNZU1RFTVMsIElOQy4KLQkJCQkyMzQ0MCBIQVdUSE9STkUgQkxWRC1TVEUgIzI5MAotCQkJCVRPUlJBTkNFIENBIDkwNTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC02QyAgIChoZXgpCQlIaXRleCBIb2xkaW5nIEdtYkgKLTAwMzA2QyAgICAgKGJhc2UgMTYpCQlIaXRleCBIb2xkaW5nIEdtYkgKLQkJCQlHcmVzY2hiYWNoc3RyLiAxMgotCQkJCTc2MjI5IEthcmxzcnVoZSAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC02RCAgIChoZXgpCQlMVUNFTlQgVEVDSE5PTE9HSUVTCi0wMDMwNkQgICAgIChiYXNlIDE2KQkJTFVDRU5UIFRFQ0hOT0xPR0lFUwotCQkJCTMwMCBCQUtFUiBBVkVOVUUgLSBTVEUuICMxMDAKLQkJCQlDT05DT1JEIE1BIDAxNzQyLTIxNjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTZFICAgKGhleCkJCUhFV0xFVFQgUEFDS0FSRAotMDAzMDZFICAgICAoYmFzZSAxNikJCUhFV0xFVFQgUEFDS0FSRAotCQkJCTExMDAwIFdPTEZFIFJPQUQKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTZGICAgKGhleCkJCVNFWUVPTiBURUNILiBDTy4sIExURC4KLTAwMzA2RiAgICAgKGJhc2UgMTYpCQlTRVlFT04gVEVDSC4gQ08uLCBMVEQuCi0JCQkJTkFNQ0hFT04gQkxERy4gNkYsCi0JCQkJREFFQ0hJLURPTkcsIDk1Ny0wMTMgS0FOR05BTS1HVSwgU0VPVUwKLQkJCQlLT1JFQSAxMzUtMjgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTMwLTcwICAgKGhleCkJCTFOZXQgQ29ycG9yYXRpb24KLTAwMzA3MCAgICAgKGJhc2UgMTYpCQkxTmV0IENvcnBvcmF0aW9uCi0JCQkJMzQ3IEVsaXphYmV0aCBBdmVudWUgLSBTdGUuICMxMDAKLQkJCQlTb21lcnNldCBOSiAwODg3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNzEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAzMDcxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdiAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTcyICAgKGhleCkJCUludGVsbGlieXRlIEluYy4KLTAwMzA3MiAgICAgKGJhc2UgMTYpCQlJbnRlbGxpYnl0ZSBJbmMuCi0JCQkJQ2FuYWRhIFRydXN0IFRvd2VyIC0gQkNFIFBsYWNlCi0JCQkJMTYxIEJheSBTdC4gMjd0aCBGbG9vciwKLQkJCQlUb3JvbnRvIE9udGFyaW8gTTVKIDJTMQotCQkJCUNBTkFEQQotCi0wMC0zMC03MyAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIE1pY3Jvc3lzdGVtcywgSW4KLTAwMzA3MyAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIE1pY3Jvc3lzdGVtcywgSW4KLQkJCQk1MjEgVmFsbGV5IFdheQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC03NCAgIChoZXgpCQlFUVVJSU5FVCBMVEQuCi0wMDMwNzQgICAgIChiYXNlIDE2KQkJRVFVSUlORVQgTFRELgotCQkJCUVESVNPTiBIT1VTRQotCQkJCUVESVNPTiBST0FECi0JCQkJIFNXSU5ET04sIFNOMyA1SkEgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTMwLTc1ICAgKGhleCkJCUFEVEVDSAotMDAzMDc1ICAgICAoYmFzZSAxNikJCUFEVEVDSAotCQkJCVJVRSBEVSBWQUwgU1QgTEFNQkVSVCAxOTEgLyBpCi0JCQkJIFNFUkFJTkcgIDQxMDAKLQkJCQlCRUxHSVVNCi0KLTAwLTMwLTc2ICAgKGhleCkJCUFrYW1iYSBDb3Jwb3JhdGlvbgotMDAzMDc2ICAgICAoYmFzZSAxNikJCUFrYW1iYSBDb3Jwb3JhdGlvbgotCQkJCTE1NTk1IExvcyBHYXRvcyBCbHZkLgotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNzcgICAoaGV4KQkJT05QUkVNIE5FVFdPUktTCi0wMDMwNzcgICAgIChiYXNlIDE2KQkJT05QUkVNIE5FVFdPUktTCi0JCQkJNDI1MDEgQUxCUkFFIFNUUkVFVAotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTc4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMzA3OCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNzkgICAoaGV4KQkJQ1FPUywgSU5DLgotMDAzMDc5ICAgICAoYmFzZSAxNikJCUNRT1MsIElOQy4KLQkJCQkyNSBNQVVDSExZICAtIFNURS4gIzMyOQotCQkJCUlSVklORSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtN0EgICAoaGV4KQkJQWR2YW5jZWQgVGVjaG5vbG9neSAmIFN5c3RlbXMKLTAwMzA3QSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBUZWNobm9sb2d5ICYgU3lzdGVtcwotCQkJCVlva29oYW1hIEJ1c2luZXNzIFBhcmsgRWFzdCBUb3dlciA5RiwKLQkJCQkxMzQgR291ZG8tY2hvLCBIb2RvZ2F5YS1rdSwgWW9rb2hhbWEsIEthCi0JCQkJMjQwLTAwMDUKLQkJCQlKQVBBTgotCi0wMC0zMC03QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDMwN0IgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTdDICAgKGhleCkJCUFESUQgU0EKLTAwMzA3QyAgICAgKGJhc2UgMTYpCQlBRElEIFNBCi0JCQkJNzAgUlUgQU5BVE9MRSBGUkFOQ0UKLQkJCQk5MiAzMDAgTEVWQUxMT0lTLVBFUlJFVCBDRURFWCAgCi0JCQkJRlJBTkNFCi0KLTAwLTMwLTdEICAgKGhleCkJCUdSRSBBTUVSSUNBLCBJTkMuCi0wMDMwN0QgICAgIChiYXNlIDE2KQkJR1JFIEFNRVJJQ0EsIElOQy4KLQkJCQk0MjUgSEFSQk9SIEJMVkQuCi0JCQkJQkVMTU9OVCBDQSA5NDAwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtN0UgICAoaGV4KQkJUmVkZmxleCBDb21tdW5pY2F0aW9uIFN5c3RlbXMKLTAwMzA3RSAgICAgKGJhc2UgMTYpCQlSZWRmbGV4IENvbW11bmljYXRpb24gU3lzdGVtcwotCQkJCTExLTI5IEVhc3Rlcm4gUm9hZAotCQkJCVNvdXRoIE1lbGJvdXJuZSBWaWN0b3JpYSAzMjA1IAotCQkJCUFVU1RSQUxJQQotCi0wMC0zMC03RiAgIChoZXgpCQlJUkxBTiBMVEQuCi0wMDMwN0YgICAgIChiYXNlIDE2KQkJSVJMQU4gTFRELgotCQkJCTEgSEFUQU1BUiBTVFJFRVQKLQkJCQlQLk8uIEJPWCAyODggWU9LTkVBTSAyMDY5MgotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0zMC04MCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDMwODAgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRSAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTgxICAgKGhleCkJCUFMVE9TIEMmQwotMDAzMDgxICAgICAoYmFzZSAxNikJCUFMVE9TIEMmQwotCQkJCTE1MC0wMTAgUk0uIDEwMTIsIDQ0LTEKLQkJCQlEQUUgWU9VTkcgQi9ELCBZT1ZJRE8tRE9ORyBZT1VOR0NIVU5HUE8tCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtODIgICAoaGV4KQkJVEFJSEFOIEVMRUNUUklDIFdJUkUgQ08uLCBMVEQuCi0wMDMwODIgICAgIChiYXNlIDE2KQkJVEFJSEFOIEVMRUNUUklDIFdJUkUgQ08uLCBMVEQuCi0JCQkJQ29tbXVuaWNhdGlvbiBFbmdpbmVlcmluZyBUZWFtCi0JCQkJOTk2IFNpaGV1bmctRG9uZyBLZXltIENoZW9uLWt1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC04MyAgIChoZXgpCQlJdnJvbiBTeXN0ZW1zCi0wMDMwODMgICAgIChiYXNlIDE2KQkJSXZyb24gU3lzdGVtcwotCQkJCTE5LTIwIFlPUksgUk9BRAotCQkJCURVTiBMQU9HSEFJUkUgQ09VTlRZIERVQkxJTgotCQkJCUlSRUxBTkQKLQkJCQlJUkVMQU5ECi0KLTAwLTMwLTg0ICAgKGhleCkJCUFMTElFRCBURUxFU1lOIElOVEVSTkFJT05BTAotMDAzMDg0ICAgICAoYmFzZSAxNikJCUFMTElFRCBURUxFU1lOIElOVEVSTkFJT05BTAotCQkJCUNPUlBPUkFUSU9OCi0JCQkJOTYwIFNURVdBUlQgRFJJVkUsICBTVEUuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04NSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDMwODUgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04NiAgIChoZXgpCQlUcmFuc2lzdG9yIERldmljZXMsIEluYy4KLTAwMzA4NiAgICAgKGJhc2UgMTYpCQlUcmFuc2lzdG9yIERldmljZXMsIEluYy4KLQkJCQkzNkEgTmV3YnVyZ2ggUm9hZAotCQkJCUhhY2tldHRzdG93biBOSiAwNzg0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtODcgICAoaGV4KQkJVkVHQSBHUklFU0hBQkVSIEtHCi0wMDMwODcgICAgIChiYXNlIDE2KQkJVkVHQSBHUklFU0hBQkVSIEtHCi0JCQkJQU0gSE9IRU5TVEVJTiAxMTMKLQkJCQk3Nzc2MSBTQ0hVTFRBQ0gKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0zMC04OCAgIChoZXgpCQlTaWFyYSBTeXN0ZW1zLCBJbmMuCi0wMDMwODggICAgIChiYXNlIDE2KQkJU2lhcmEgU3lzdGVtcywgSW5jLgotCQkJCTMwMCBGZXJndXNvbiBEcml2ZSAtIDJuZCBGbG9vcgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTg5ICAgKGhleCkJCVNwZWN0cmFwb2ludCBXaXJlbGVzcywgTExDCi0wMDMwODkgICAgIChiYXNlIDE2KQkJU3BlY3RyYXBvaW50IFdpcmVsZXNzLCBMTEMKLQkJCQkxMTI1IEUuIENvbGxpbnMgQmx2ZC4KLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04QSAgIChoZXgpCQlOSUNPVFJBIFNJU1RFTUkgUy5QLkEKLTAwMzA4QSAgICAgKGJhc2UgMTYpCQlOSUNPVFJBIFNJU1RFTUkgUy5QLkEKLQkJCQk0MSBWaWEgUHJpbW8gTWFnZ2lvCi0JCQkJQmFyYW56YXRlIChNSSkgMjAwMjEKLQkJCQlJVEFMWQotCi0wMC0zMC04QiAgIChoZXgpCQlCcml4IE5ldHdvcmtzCi0wMDMwOEIgICAgIChiYXNlIDE2KQkJQnJpeCBOZXR3b3JrcwotCQkJCTMwMCBDb25jb3JkIFJvYWQKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLThDICAgKGhleCkJCVF1YW50dW0gQ29ycG9yYXRpb24KLTAwMzA4QyAgICAgKGJhc2UgMTYpCQlRdWFudHVtIENvcnBvcmF0aW9uCi0JCQkJMTAxMjUgRmVkZXJhbCBEcml2ZQotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ08gODA5MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLThEICAgKGhleCkJCVBpbm5hY2xlIFN5c3RlbXMsIEluYy4KLTAwMzA4RCAgICAgKGJhc2UgMTYpCQlQaW5uYWNsZSBTeXN0ZW1zLCBJbmMuCi0JCQkJRnJhbmtmdXJ0ZXIgU3RyLiAzYwotCQkJCUQtMzgxMjIgQnJhdW5zY2h3ZWlnIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtOEUgICAoaGV4KQkJQ1JPU1MgTUFUQ0ggVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDMwOEUgICAgIChiYXNlIDE2KQkJQ1JPU1MgTUFUQ0ggVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMzk2MCBSQ0EgQmx2ZC4sIFN1aXRlIDYwMDEKLQkJCQlQYWxtIEJlYWNoIEZMIDMzNDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04RiAgIChoZXgpCQlNSUNSSUxPUiwgSW5jLgotMDAzMDhGICAgICAoYmFzZSAxNikJCU1JQ1JJTE9SLCBJbmMuCi0JCQkJMTcgTGFrZXNpZGUgT2ZmaWNlIFBhcmsKLQkJCQk2MDcgTm9ydGggQXZlbnVlCi0JCQkJV2FrZWZpZWxkIE1BIDAxODgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05MCAgIChoZXgpCQlDWVJBIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAzMDkwICAgICAoYmFzZSAxNikJCUNZUkEgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJODAwMCBDQVBXRUxMIERSSVZFCi0JCQkJT0FLTEFORCBDQSA5NDYyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtOTEgICAoaGV4KQkJVEFJV0FOIEZJUlNUIExJTkUgRUxFQy4gQ09SUC4KLTAwMzA5MSAgICAgKGJhc2UgMTYpCQlUQUlXQU4gRklSU1QgTElORSBFTEVDLiBDT1JQLgotCQkJCTQwIENodW5nLVNoYW4gUm9hZAotCQkJCVR1LUNoZW5nIEluZHVzdHJpYWwgUGFyawotCQkJCVRhaXBlaSBDb3VudHkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtOTIgICAoaGV4KQkJTW9kdU5PUk0gR21iSAotMDAzMDkyICAgICAoYmFzZSAxNikJCU1vZHVOT1JNIEdtYkgKLQkJCQlMYW5ncnV0aXN0cmFzc2UgMzMKLQkJCQlDSC04ODQwIEVpbnNsZWRlbG4gIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTMwLTkzICAgKGhleCkJCVNvbm5ldCBUZWNobm9sb2dpZXMsIEluYwotMDAzMDkzICAgICAoYmFzZSAxNikJCVNvbm5ldCBUZWNobm9sb2dpZXMsIEluYwotCQkJCTggQXV0cnkKLQkJCQlJcnZpbmUsIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDMwOTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTk1ICAgKGhleCkJCVByb2NvbXAgSW5mb3JtYXRpY3MsIEx0ZC4KLTAwMzA5NSAgICAgKGJhc2UgMTYpCQlQcm9jb21wIEluZm9ybWF0aWNzLCBMdGQuCi0JCQkJNUYsIDY5LTEwLCBTZWMuIDIsCi0JCQkJQ2h1bmcgQ2hlbmcgRS4gUm9hZAotCQkJCVRhbXNodWksIFRhaXBlaSwgSHNpZW4gIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtOTYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAzMDk2ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUgLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05NyAgIChoZXgpCQlBQiBSZWdpbgotMDAzMDk3ICAgICAoYmFzZSAxNikJCUFCIFJlZ2luCi0JCQkJQm94IDM2NgotCQkJCVNFLTI2MTIzIExhbmRza3JvbmEgCi0JCQkJU1dFREVOCi0KLTAwLTMwLTk4ICAgKGhleCkJCUdsb2JhbCBDb252ZXJnaW5nIFRlY2hub2xvZ2llcwotMDAzMDk4ICAgICAoYmFzZSAxNikJCUdsb2JhbCBDb252ZXJnaW5nIFRlY2hub2xvZ2llcwotCQkJCTE4MDAgUHJlc3RvbiBQYXJrIEJsdmQuCi0JCQkJU3VpdGUgIzI1MAotCQkJCVBsYW5vIFRYIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05OSAgIChoZXgpCQlCT0VOSUcgVU5EIEtBTExFTkJBQ0ggT0hHCi0wMDMwOTkgICAgIChiYXNlIDE2KQkJQk9FTklHIFVORCBLQUxMRU5CQUNIIE9IRwotCQkJCUFNIFNQT0VSS0VMIDEwMAotCQkJCTQ0MjI3IERPUlRNVU5ECi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMzAtOUEgICAoaGV4KQkJQVNUUk8gVEVSUkEgQ09SUC4KLTAwMzA5QSAgICAgKGJhc2UgMTYpCQlBU1RSTyBURVJSQSBDT1JQLgotCQkJCTExNTI2IFNPUlJFTlRPIFZBTExFWSBST0FECi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05QiAgIChoZXgpCQlTbWFydHdhcmUKLTAwMzA5QiAgICAgKGJhc2UgMTYpCQlTbWFydHdhcmUKLQkJCQk0OSBBViBBcmlzdGlkZQotCQkJCUJyaWFuZAotCQkJCTkyMTYwIEFudG9ueSAgCi0JCQkJRlJBTkNFCi0KLTAwLTMwLTlDICAgKGhleCkJCVRpbWluZyBBcHBsaWNhdGlvbnMsIEluYy4KLTAwMzA5QyAgICAgKGJhc2UgMTYpCQlUaW1pbmcgQXBwbGljYXRpb25zLCBJbmMuCi0JCQkJNDc3NSBXYWxudXQgU3QuCi0JCQkJU3VpdGUgMUIKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05RCAgIChoZXgpCQlOaW1ibGUgTWljcm9zeXN0ZW1zLCBJbmMuCi0wMDMwOUQgICAgIChiYXNlIDE2KQkJTmltYmxlIE1pY3Jvc3lzdGVtcywgSW5jLgotCQkJCTUwIENodXJjaCBTdHJlZXQgLSA1dGggRmxvb3IKLQkJCQlDYW1icmlkZ2UgTUEgMDIxMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTlFICAgKGhleCkJCVdPUktCSVQgQ09SUE9SQVRJT04uCi0wMDMwOUUgICAgIChiYXNlIDE2KQkJV09SS0JJVCBDT1JQT1JBVElPTi4KLQkJCQkxLTItMiBDaHVvdSwgWWFtYXRvCi0JCQkJS2FuYWdhd2EgIDI0Mi0wMDIxICAKLQkJCQlKQVBBTgotCi0wMC0zMC05RiAgIChoZXgpCQlBTUJFUiBORVRXT1JLUwotMDAzMDlGICAgICAoYmFzZSAxNikJCUFNQkVSIE5FVFdPUktTCi0JCQkJMjQ3NSBBVUdVU1RJTkUgRFIuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUEwICAgKGhleCkJCVRZQ08gU1VCTUFSSU5FIFNZU1RFTVMsIExURC4KLTAwMzBBMCAgICAgKGJhc2UgMTYpCQlUWUNPIFNVQk1BUklORSBTWVNURU1TLCBMVEQuCi0JCQkJMjUwIElORFVTVFJJQUwgV0FZIFdFU1QKLQkJCQlFQVRPTlRPV04gTkogMDc3MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUExICAgKGhleCkJCVdFQkdBVEUgSW5jLgotMDAzMEExICAgICAoYmFzZSAxNikJCVdFQkdBVEUgSW5jLgotCQkJCTRGLCBQaWthIEJsZGcuLCA4OTQtMjAsIEhveWtlIDItZG9uZwotCQkJCURvbmdhbi1LdSwKLQkJCQlBbnlhbmctU2kgS3l1bmdnaS1EbyAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtQTIgICAoaGV4KQkJTGlnaHRuZXIgRW5naW5lZXJpbmcKLTAwMzBBMiAgICAgKGJhc2UgMTYpCQlMaWdodG5lciBFbmdpbmVlcmluZwotCQkJCTg1NTEgTGEgSm9sbGEgU2hvcmVzIERyCi0JCQkJTGEgSm9sbGEgQ0EgOTIwMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUEzICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMzBBMyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFIC1TSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1BNCAgIChoZXgpCQlXb29kd2luZCBDb21tdW5pY2F0aW9ucyBTeXN0ZW0KLTAwMzBBNCAgICAgKGJhc2UgMTYpCQlXb29kd2luZCBDb21tdW5pY2F0aW9ucyBTeXN0ZW0KLQkJCQkyMDMwMCBDZW50dXJ5IEJsdmQuLCBTdWl0ZSAyMDBCCi0JCQkJR2VybWFudG93biBNRCAyMDg3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQTUgICAoaGV4KQkJQUNUSVZFIFBPV0VSCi0wMDMwQTUgICAgIChiYXNlIDE2KQkJQUNUSVZFIFBPV0VSCi0JCQkJMTE1MjUgU1RPTkVIT0xMT1cgLSBTVEUuIzI1NQotCQkJCUFVU1RJTiBUWCA3ODc1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQTYgICAoaGV4KQkJVklBTkVUIFRFQ0hOT0xPR0lFUywgTFRELgotMDAzMEE2ICAgICAoYmFzZSAxNikJCVZJQU5FVCBURUNITk9MT0dJRVMsIExURC4KLQkJCQk4IEhBQ0hBUkFTSCBTVFJFRVQKLQkJCQlSQU1BVCBIQVNIQVJPTiA0NzI2MgotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0zMC1BNyAgIChoZXgpCQlTQ0hXRUlUWkVSIEVOR0lORUVSSU5HCi0wMDMwQTcgICAgIChiYXNlIDE2KQkJU0NIV0VJVFpFUiBFTkdJTkVFUklORwotCQkJCUxBQk9SQVRPUklFUywgSU5DLgotCQkJCTIzNTAgTkUgSE9QS0lOUyBDT1VSVAotCQkJCVBVTExNQU4gV0EgOTkxNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUE4ICAgKGhleCkJCU9MJ0UgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMzBBOCAgICAgKGJhc2UgMTYpCQlPTCdFIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTk2MiBaQU5LRVIgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1BOSAgIChoZXgpCQlOZXRpdmVyc2UsIEluYy4KLTAwMzBBOSAgICAgKGJhc2UgMTYpCQlOZXRpdmVyc2UsIEluYy4KLQkJCQkxMDAgQ2VudHVyeSBDZW50ZXIgQ291cnQKLQkJCQlTdWl0ZSAjNjAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUFBICAgKGhleCkJCUFYVVMgTUlDUk9TWVNURU1TLCBJTkMuCi0wMDMwQUEgICAgIChiYXNlIDE2KQkJQVhVUyBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQkyRi00LCBOTy4xOC9OLiA2MDksIFNFQy4gNQotCQkJCUNIVU4tSFNJTiBST0FELCBTQU4gQ0hVTkcgVEFJUEVJIENPVU5UWQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1BQiAgIChoZXgpCQlERUxUQSBORVRXT1JLUywgSU5DLgotMDAzMEFCICAgICAoYmFzZSAxNikJCURFTFRBIE5FVFdPUktTLCBJTkMuCi0JCQkJOCwgS09OIEpBTiBXRVNUIFJPQUQKLQkJCQlMSVVUVSBJTkRVU1RSSUFMIFpPTkUgS0VFTFVORwotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1BQyAgIChoZXgpCQlTeXN0ZW1lIExhdWVyIEdtYkggJiBDby4sIEx0ZC4KLTAwMzBBQyAgICAgKGJhc2UgMTYpCQlTeXN0ZW1lIExhdWVyIEdtYkggJiBDby4sIEx0ZC4KLQkJCQlLZWx0ZXJzdHJhc3NlIDU5Ci0JCQkJNzI2NjkgVW50ZXJlbnNpbmdlbiAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC1BRCAgIChoZXgpCQlTSEFOR0hBSSBDT01NVU5JQ0FUSU9OCi0wMDMwQUQgICAgIChiYXNlIDE2KQkJU0hBTkdIQUkgQ09NTVVOSUNBVElPTgotCQkJCVRFQ0hOT0xPR0lFUyBDRU5URVIKLQkJCQkxNSBHVUktUUlORyBST0FEIFNIQU5HSEFJIDIwMDIzMwotCQkJCVAuUi4gQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0zMC1BRSAgIChoZXgpCQlUaW1lcyBOIFN5c3RlbSwgSW5jLgotMDAzMEFFICAgICAoYmFzZSAxNikJCVRpbWVzIE4gU3lzdGVtLCBJbmMuCi0JCQkJMTgyNiBLcmFtZXIgTGFuZSAtIFN0ZS4KLQkJCQlBdXN0aW4gVFggNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUFGICAgKGhleCkJCUhvbmV5d2VsbCBHbWJICi0wMDMwQUYgICAgIChiYXNlIDE2KQkJSG9uZXl3ZWxsIEdtYkgKLQkJCQlCb2VibGluZ2VyIFN0ci4gMTcKLQkJCQlQLk8uIEJveCAxMTY0Ci0JCQkJRC03MTA5OCBTY2hvZW5haWNoICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLUIwICAgKGhleCkJCUNvbnZlcmdlbmV0IFRlY2hub2xvZ2llcwotMDAzMEIwICAgICAoYmFzZSAxNikJCUNvbnZlcmdlbmV0IFRlY2hub2xvZ2llcwotCQkJCTIyMjIgVHJhZGUgWm9uZSBCb3VsZXZhcmQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQjEgICAoaGV4KQkJVHJ1bmtOZXQKLTAwMzBCMSAgICAgKGJhc2UgMTYpCQlUcnVua05ldAotCQkJCUF1YmVyZ2VudmlsbGVyIEFsbGVlIDUxCi0JCQkJRGllYnVyZyAgRC02NDgwNwotCQkJCUdFUk1BTlkKLQotMDAtMzAtQjIgICAoaGV4KQkJTC0zIFNvbm9tYSBFTwotMDAzMEIyICAgICAoYmFzZSAxNikJCUwtMyBTb25vbWEgRU8KLQkJCQk0MjggQXZpYXRpb24gQmx2ZAotCQkJCVNhbnRhIFJvc2EgQ0EgOTU0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUIzICAgKGhleCkJCVNhbiBWYWxsZXkgU3lzdGVtcywgSW5jLgotMDAzMEIzICAgICAoYmFzZSAxNikJCVNhbiBWYWxsZXkgU3lzdGVtcywgSW5jLgotCQkJCTIxMDUgUy4gQmFzY29tIEF2ZS4gLSBTdGUuICMzOTAKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQjQgICAoaGV4KQkJSU5URVJTSUwgQ09SUC4KLTAwMzBCNCAgICAgKGJhc2UgMTYpCQlJTlRFUlNJTCBDT1JQLgotCQkJCVAuTy4gQk9YIDg4MwotCQkJCTI0MDEgUEFMTSBCQVkgUk9BRAotCQkJCU1FTEJPVVJORSBGTCAzMjkwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQjUgICAoaGV4KQkJVGFkaXJhbiBNaWNyb3dhdmUgTmV0d29ya3MKLTAwMzBCNSAgICAgKGJhc2UgMTYpCQlUYWRpcmFuIE1pY3Jvd2F2ZSBOZXR3b3JrcwotCQkJCTQwMDAgR3JlZW5icmlhciBEcml2ZQotCQkJCVN0YWZmb3JkIFRYIDc3NDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1CNiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDMwQjYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRSAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUI3ICAgKGhleCkJCVRlbGV0cm9sIFN5c3RlbXMsIEluYy4KLTAwMzBCNyAgICAgKGJhc2UgMTYpCQlUZWxldHJvbCBTeXN0ZW1zLCBJbmMuCi0JCQkJVGVjaG5vbG9neSBDZW50ZXIKLQkJCQkyODYgQ29tbWVyY2lhbCBTdHJlZXQKLQkJCQlNYW5jaGVzdGVyIE5IIDAzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1COCAgIChoZXgpCQlSaXZlckRlbHRhIE5ldHdvcmtzCi0wMDMwQjggICAgIChiYXNlIDE2KQkJUml2ZXJEZWx0YSBOZXR3b3JrcwotCQkJCVRocmVlIEhpZ2h3b29kIERyaXZlIEVhc3QKLQkJCQlUZXdrc2J1cnkgTUEgMDE4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUI5ICAgKGhleCkJCUVDVEVMCi0wMDMwQjkgICAgIChiYXNlIDE2KQkJRUNURUwKLQkJCQkyMjI0MCBDT01TQVQgRFJJVkUKLQkJCQlDTEFSS1NCVVJHIE1EIDIwODcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1CQSAgIChoZXgpCQlBQyZUIFNZU1RFTSBDTy4sIExURC4KLTAwMzBCQSAgICAgKGJhc2UgMTYpCQlBQyZUIFNZU1RFTSBDTy4sIExURC4KLQkJCQlST09NIDcwMiwgS0VVTS1XSEEgUExBWkEKLQkJCQkxMTQyLTUsIFNBTkJPTi1ET05HIEtPT05QTy1TSEksIEtZT05HS0ktCi0JCQkJNDM1LTA0MCBTT1VUSCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC1CQiAgIChoZXgpCQlDYWNoZUZsb3csIEluYy4KLTAwMzBCQiAgICAgKGJhc2UgMTYpCQlDYWNoZUZsb3csIEluYy4KLQkJCQk2NTAgQWxtYW5vciBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQkMgICAoaGV4KQkJT3B0cm9uaWMgQUcKLTAwMzBCQyAgICAgKGJhc2UgMTYpCQlPcHRyb25pYyBBRwotCQkJCXVudGVyZWdnZXJzdHJhc3NlIDUzCi0JCQkJOTQwMyBHb2xkYWNoICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0zMC1CRCAgIChoZXgpCQlCRUxLSU4gQ09NUE9ORU5UUwotMDAzMEJEICAgICAoYmFzZSAxNikJCUJFTEtJTiBDT01QT05FTlRTCi0JCQkJNTAxIFdFU1QgV0FMTlVUIFNUUkVFVAotCQkJCUNPTVBUT04gQ0EgOTAyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUJFICAgKGhleCkJCUNpdHktTmV0IFRlY2hub2xvZ3ksIEluYy4KLTAwMzBCRSAgICAgKGJhc2UgMTYpCQlDaXR5LU5ldCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTM1IEUuIENoZXNudXQgQXZlLiwgU3RlLgotCQkJCU1vbnJvdmlhIENBIDkxMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1CRiAgIChoZXgpCQlNVUxUSURBVEEgR01CSAotMDAzMEJGICAgICAoYmFzZSAxNikJCU1VTFRJREFUQSBHTUJICi0JCQkJQUxTRkVMREVSIFNUUi4gMwotCQkJCUQtNjQyODkgREFSTVNUQURUCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMzAtQzAgICAoaGV4KQkJTGFyYSBUZWNobm9sb2d5LCBJbmMuCi0wMDMwQzAgICAgIChiYXNlIDE2KQkJTGFyYSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjM0NSBOb3J0aCBGaXJzdCBTdHJlZXQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQzEgICAoaGV4KQkJSEVXTEVUVC1QQUNLQVJECi0wMDMwQzEgICAgIChiYXNlIDE2KQkJSEVXTEVUVC1QQUNLQVJECi0JCQkJMTEwMDAgV09MRkUgUk9BRAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQzIgICAoaGV4KQkJQ09NT05FCi0wMDMwQzIgICAgIChiYXNlIDE2KQkJQ09NT05FCi0JCQkJUGFyYyBEZSBNYXJ0aWNvdAotCQkJCTMzNjEwIENlc3RhcyAgCi0JCQkJRlJBTkNFCi0KLTAwLTMwLUMzICAgKGhleCkJCUZMVUVDS0lHRVIgRUxFS1RST05JSyBBRwotMDAzMEMzICAgICAoYmFzZSAxNikJCUZMVUVDS0lHRVIgRUxFS1RST05JSyBBRwotCQkJCUtJUkNIQkFSR1NUUkFTU0UgMjAxCi0JCQkJQ0gtMzQwMCBCVVJHRE9SRgotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMzAtQzQgICAoaGV4KQkJQ2Fub24gSW1hZ2luZyBTeXN0ZW1zIEluYy4KLTAwMzBDNCAgICAgKGJhc2UgMTYpCQlDYW5vbiBJbWFnaW5nIFN5c3RlbXMgSW5jLgotCQkJCTEtMjQgWW9uZXlhbWEsIENodW8ta3UKLQkJCQlOaWlnYXRhLXNoaSBOaWlnYXRhIDk1MC0wOTE2Ci0JCQkJSkFQQU4KLQotMDAtMzAtQzUgICAoaGV4KQkJQ0FERU5DRSBERVNJR04gU1lTVEVNUwotMDAzMEM1ICAgICAoYmFzZSAxNikJCUNBREVOQ0UgREVTSUdOIFNZU1RFTVMKLQkJCQlDQU5BREEsIExURC4KLQkJCQkyNDAtMTEzMCBNT1JSSVNPTiBEUklWRSBPVFRBV0EsIE9OVEFSSU8KLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMzAtQzYgICAoaGV4KQkJQ09OVFJPTCBTT0xVVElPTlMsIElOQy4KLTAwMzBDNiAgICAgKGJhc2UgMTYpCQlDT05UUk9MIFNPTFVUSU9OUywgSU5DLgotCQkJCTIwMSA4NVRIIEFWRU5VRSBOVwotCQkJCU1JTk5FQVBPTElTIE1OIDU1NDMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1DNyAgIChoZXgpCQlNYWNyb21hdGUgQ29ycC4KLTAwMzBDNyAgICAgKGJhc2UgMTYpCQlNYWNyb21hdGUgQ29ycC4KLQkJCQk4RixVbml2ZXJzYWwgQ2VudGVyLE51bWJlciAxNzkKLQkJCQlTZWMuMSxUYS1UdW5nIFJvYWQsIEhzaS1DaGloCi0JCQkJVGFpcGVpIEhzaWVuIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtQzggICAoaGV4KQkJR0FEIExJTkUsIExURC4KLTAwMzBDOCAgICAgKGJhc2UgMTYpCQlHQUQgTElORSwgTFRELgotCQkJCUJFSVQgUk9LQVIgSEFSIEhPVFpWSU0KLQkJCQlKRVJVU0FMRU0KLQkJCQlJU1JBRUwKLQotMDAtMzAtQzkgICAoaGV4KQkJTHV4TiwgTgotMDAzMEM5ICAgICAoYmFzZSAxNikJCUx1eE4sIE4KLQkJCQk1NzAgTWF1ZGUgQ291cnQKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNBICAgKGhleCkJCURpc2NvdmVyeSBDb20KLTAwMzBDQSAgICAgKGJhc2UgMTYpCQlEaXNjb3ZlcnkgQ29tCi0JCQkJNDkzNSBDZW50dXJ5IFN0cmVldAotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNCICAgKGhleCkJCU9NTkkgRkxPVyBDT01QVVRFUlMsIElOQy4KLTAwMzBDQiAgICAgKGJhc2UgMTYpCQlPTU5JIEZMT1cgQ09NUFVURVJTLCBJTkMuCi0JCQkJMTA3MDEgQ09SUE9SQVRFIERSSVZFLVNURS4jMzAwCi0JCQkJU1RBRkZPUkQgVFggNzc0NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNDICAgKGhleCkJCVRlbm9yIE5ldHdvcmtzLCBJbmMuCi0wMDMwQ0MgICAgIChiYXNlIDE2KQkJVGVub3IgTmV0d29ya3MsIEluYy4KLQkJCQk1MCBOYWdvZyBQYXJrCi0JCQkJQWN0b24gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNEICAgKGhleCkJCUNPTkVYQU5UIFNZU1RFTVMsIElOQy4KLTAwMzBDRCAgICAgKGJhc2UgMTYpCQlDT05FWEFOVCBTWVNURU1TLCBJTkMuCi0JCQkJNDMxMSBKQU1CT1JFRSBST0FECi0JCQkJTkVXUE9SVCBCRUFDSCBDQSA5MjY2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQ0UgICAoaGV4KQkJWmFmZmlyZQotMDAzMENFICAgICAoYmFzZSAxNikJCVphZmZpcmUKLQkJCQkyNjMwIE9yY2hhcmQgUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0LTIwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNGICAgKGhleCkJCVRXTyBURUNITk9MT0dJRVMsIElOQy4KLTAwMzBDRiAgICAgKGJhc2UgMTYpCQlUV08gVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNDE5IFNBUkdPTiBXQVkKLQkJCQlIT1JTSEFNIFBBIDE5MDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1EMCAgIChoZXgpCQlUZWxsYWJzCi0wMDMwRDAgICAgIChiYXNlIDE2KQkJVGVsbGFicwotCQkJCTE3NTAgRm91bmRlcidzIFBhcmt3YXkKLQkJCQlTdWl0ZSAxMDAKLQkJCQlBbHBoYXJldHRhIEdBIDMwMDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1EMSAgIChoZXgpCQlJTk9WQSBDT1JQT1JBVElPTgotMDAzMEQxICAgICAoYmFzZSAxNikJCUlOT1ZBIENPUlBPUkFUSU9OCi0JCQkJMTEwIEFWT04gU1RSRUVUCi0JCQkJQ0hBUkxPVFRFU1ZJTEUgVkEgMjI5MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUQyICAgKGhleCkJCVdJTiBURUNITk9MT0dJRVMsIENPLiwgTFRELgotMDAzMEQyICAgICAoYmFzZSAxNikJCVdJTiBURUNITk9MT0dJRVMsIENPLiwgTFRELgotCQkJCTRGLTYsIE5vLiA4MSwgU2VjLiAxCi0JCQkJSHNpbiBUYWkgV3UgUm9hZCwgSHNpLUNoaQotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1EMyAgIChoZXgpCQlBZ2lsZW50IFRlY2hub2xvZ2llcwotMDAzMEQzICAgICAoYmFzZSAxNikJCUFnaWxlbnQgVGVjaG5vbG9naWVzCi0JCQkJMTUwMSBQYWdlIE1pbGwgUm9hZAotCQkJCVBhbG8gQWx0byBDQSA5NDMwNC0xMTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1ENCAgIChoZXgpCQlBQUUgU3lzdGVtcywgSW5jCi0wMDMwRDQgICAgIChiYXNlIDE2KQkJQUFFIFN5c3RlbXMsIEluYwotCQkJCTY0MiBOb3J0aCBQYXN0b3JpYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUQ1ICAgKGhleCkJCURSZXNlYXJjaCBHbWJICi0wMDMwRDUgICAgIChiYXNlIDE2KQkJRFJlc2VhcmNoIEdtYkgKLQkJCQlPdHRvLVNjaG1pcmdhbC1TdHIuMwotCQkJCTEwMzE5IEJlcmxpbiAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC1ENiAgIChoZXgpCQlNU0MgVkVSVFJJRUJTIEdNQkgKLTAwMzBENiAgICAgKGJhc2UgMTYpCQlNU0MgVkVSVFJJRUJTIEdNQkgKLQkJCQlJTkRVU1RSSUVTVFIuIDE2Ci0JCQkJRC03NjI5NyBTVFVURU5TRUUKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0zMC1ENyAgIChoZXgpCQlJbm5vdmF0aXZlIFN5c3RlbXMsIEwuTC5DLgotMDAzMEQ3ICAgICAoYmFzZSAxNikJCUlubm92YXRpdmUgU3lzdGVtcywgTC5MLkMuCi0JCQkJMTAwMCBJbm5vdmF0aXZlIERyaXZlCi0JCQkJTWl0Y2hlbGwgU0QgNTczMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUQ4ICAgKGhleCkJCVNJVEVLCi0wMDMwRDggICAgIChiYXNlIDE2KQkJU0lURUsKLQkJCQlWSUEgTU9OVEUgRklPUklOTyA5Ci0JCQkJMzcwNTcgLSBTLiBHSU9WQU5OSSBMVVAuIFZFUk9OQQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtMzAtRDkgICAoaGV4KQkJREFUQUNPUkUgU09GVFdBUkUgQ09SUC4KLTAwMzBEOSAgICAgKGJhc2UgMTYpCQlEQVRBQ09SRSBTT0ZUV0FSRSBDT1JQLgotCQkJCUNPUlBPUkFURSBQQVJLCi0JCQkJNjI2MSBOVyA2VEggV0FZICMxMTAKLQkJCQlGT1JUIExBVURFUkRBTEUgRkwgMzMzMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLURBICAgKGhleCkJCUNPTVRSRU5EIENPLgotMDAzMERBICAgICAoYmFzZSAxNikJCUNPTVRSRU5EIENPLgotCQkJCTNGLTEgMTAgTEFORSA2MDkgQ0hVTkcKLQkJCQlIU0lOIFJPQUQsIFNFQyA1LCBTQU4gQ0hVTkcgQ0lUWSwgVEFJUEVJCi0JCQkJVEFJV0FOIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtREIgICAoaGV4KQkJTWluZHJlYWR5IFNvbHV0aW9ucywgSW5jLgotMDAzMERCICAgICAoYmFzZSAxNikJCU1pbmRyZWFkeSBTb2x1dGlvbnMsIEluYy4KLQkJCQkyODAwIE1hcmllLUN1cmllIEF2ZW51ZQotCQkJCVNhaW50LUxhdXJlbnQKLQkJCQlRdWViZWMgIEg0UyAyQzIKLQkJCQlDQU5BREEKLQotMDAtMzAtREMgICAoaGV4KQkJUklHSFRFQ0ggQ09SUE9SQVRJT04KLTAwMzBEQyAgICAgKGJhc2UgMTYpCQlSSUdIVEVDSCBDT1JQT1JBVElPTgotCQkJCTRGLCBOTy4gMzUxLCBDSFVORy1TSFVOIFJELgotCQkJCVNFQy4gMiwgQ0hVTkctSE8gQ0lUWSBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtREQgICAoaGV4KQkJSU5ESUdJVEEgQ09SUE9SQVRJT04KLTAwMzBERCAgICAgKGJhc2UgMTYpCQlJTkRJR0lUQSBDT1JQT1JBVElPTgotCQkJCTMwIENvcnBvcmF0ZSBQYXJrIERyaXZlCi0JCQkJU3VpdGUgMzEwCi0JCQkJSXJ2aW5lIENBIDkyNjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1ERSAgIChoZXgpCQlXQUdPIEtvbnRha3R0ZWNobmlrIEdtYkgKLTAwMzBERSAgICAgKGJhc2UgMTYpCQlXQUdPIEtvbnRha3R0ZWNobmlrIEdtYkgKLQkJCQlIYW5zYXN0cmFzc2UgMjcKLQkJCQkzMjQyMyBNaW5kZW4gIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtREYgICAoaGV4KQkJS0IvVEVMIFRFTEVDT01VTklDQUNJT05FUwotMDAzMERGICAgICAoYmFzZSAxNikJCUtCL1RFTCBURUxFQ09NVU5JQ0FDSU9ORVMKLQkJCQlTLkEuIERFIEMuVi4KLQkJCQlUT1JSRSBURUxNRVggNCAgUElTTywgUExBWkEgQ1VJQ1VJTENPCi0JCQkJTWV4aWNvIENpdHkgMTQwNjAgIAotCQkJCU1FWElDTwotCi0wMC0zMC1FMCAgIChoZXgpCQlPWEZPUkQgU0VNSUNPTkRVQ1RPUiBMVEQuCi0wMDMwRTAgICAgIChiYXNlIDE2KQkJT1hGT1JEIFNFTUlDT05EVUNUT1IgTFRELgotCQkJCTI1IE1JTFRPTiBQQVJLCi0JCQkJQWJpbmdkb24gT3hvbiBPWDE0IDRTSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTMwLUUxICAgKGhleCkJCU5ldHdvcmsgRXF1aXBtZW50IFRlY2hub2xvZ2llcywgSW5jLgotMDAzMEUxICAgICAoYmFzZSAxNikJCU5ldHdvcmsgRXF1aXBtZW50IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTY5MDAgUGFzZW8gUGFkcmUgUGFya3dheQotCQkJCUZyZW1vbnQgQ0EgOTQ1NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUUyICAgKGhleCkJCUdBUk5FVCBTWVNURU1TIENPLiwgTFRELgotMDAzMEUyICAgICAoYmFzZSAxNikJCUdBUk5FVCBTWVNURU1TIENPLiwgTFRELgotCQkJCVN1bmd3b24gQmxkZy4gNTQ1LTcKLQkJCQlEb2dvay1Eb25nLCBLYW5nbmFtLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC1FMyAgIChoZXgpCQlTRURPTkEgTkVUV09SS1MgQ09SUC4KLTAwMzBFMyAgICAgKGJhc2UgMTYpCQlTRURPTkEgTkVUV09SS1MgQ09SUC4KLQkJCQkxMEEgSEVBUlNUIFdBWQotCQkJCUtBTkFUQSwgIE9OVEFSSU8KLQkJCQlDQU5BREEgSzJMIDJQNAotCQkJCUNBTkFEQQotCi0wMC0zMC1FNCAgIChoZXgpCQlDSElZT0RBIFNZU1RFTSBSSUtFTgotMDAzMEU0ICAgICAoYmFzZSAxNikJCUNISVlPREEgU1lTVEVNIFJJS0VOCi0JCQkJMi03LCBLQU5EQS1OSVNISUtJLUNITwotCQkJCUNISVlPREEtS1UgVE9LWU8KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTMwLUU1ICAgKGhleCkJCUFtcGVyIERhdG9zIFMuQS4KLTAwMzBFNSAgICAgKGJhc2UgMTYpCQlBbXBlciBEYXRvcyBTLkEuCi0JCQkJQy9NYXJjb25pIG4qMyAgKFBUTSkKLQkJCQlUcmVzIENhbnRvcwotCQkJCTI4NzYwIE1hZHJpZCAgCi0JCQkJU1BBSU4KLQotMDAtMzAtRTYgICAoaGV4KQkJRHJhZWdlciBNZWRpY2FsIFN5c3RlbXMsIEluYy4KLTAwMzBFNiAgICAgKGJhc2UgMTYpCQlEcmFlZ2VyIE1lZGljYWwgU3lzdGVtcywgSW5jLgotCQkJCTYgVGVjaCBEcml2ZQotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUU3ICAgKGhleCkJCUNORiBNT0JJTEUgU09MVVRJT05TLCBJTkMuCi0wMDMwRTcgICAgIChiYXNlIDE2KQkJQ05GIE1PQklMRSBTT0xVVElPTlMsIElOQy4KLQkJCQk3NzIyIEUuIEdSQVkgUk9BRAotCQkJCVNDT1RUU0RBTEUgQVogODUyNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUU4ICAgKGhleCkJCUVOU0lNIENPUlAuCi0wMDMwRTggICAgIChiYXNlIDE2KQkJRU5TSU0gQ09SUC4KLQkJCQkxMjE1IFRlcnJhIEJlbGxhIEF2ZS4KLQkJCQlNb3VudGFpbnZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUU5ICAgKGhleCkJCUdNQSBDT01NVU5JQ0FUSU9OIE1BTlVGQUNUJ0cKLTAwMzBFOSAgICAgKGJhc2UgMTYpCQlHTUEgQ09NTVVOSUNBVElPTiBNQU5VRkFDVCdHCi0JCQkJTUFSS0VUSU5HLCAoMTk5MSkgTFRELgotCQkJCTEwMiBKQUJVVElOU0tJIFNUUkVFVCBLSVJZQVQgQVJJRSwgUEVUQUMKLQkJCQlJU1JBRUwgSVNSQUVMIDQ5MTMwCi0JCQkJSVNSQUVMCi0KLTAwLTMwLUVBICAgKGhleCkJCVRlcmFGb3JjZSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDMwRUEgICAgIChiYXNlIDE2KQkJVGVyYUZvcmNlIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkxMTAwIEVYRUNVVElWRSBEUklWRQotCQkJCVJJQ0hBUkRTT04gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUVCICAgKGhleCkJCVRVUkJPTkVUIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDMwRUIgICAgIChiYXNlIDE2KQkJVFVSQk9ORVQgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxOUYtMSwgTk8uIDE3MSwgU1VORy1URUggUk9BRAotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1FQyAgIChoZXgpCQlCT1JHQVJEVAotMDAzMEVDICAgICAoYmFzZSAxNikJCUJPUkdBUkRUCi0JCQkJRElFU0VMU1RSLiAxNQotCQkJCUQ3MTY2NSBWQUlISU5HRU4vRU5aCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMzAtRUQgICAoaGV4KQkJRXhwZXJ0IE1hZ25ldGljcyBDb3JwLgotMDAzMEVEICAgICAoYmFzZSAxNikJCUV4cGVydCBNYWduZXRpY3MgQ29ycC4KLQkJCQkxMi9GLiwgVW5pdCBELCBNVEcgQmxkZy4sIDEtMywgTmFrYXNlCi0JCQkJTWloYW1hLWt1LCBDaGliYS1jaXR5LCAyNjEtODUwMSAgCi0JCQkJSkFQQU4KLQotMDAtMzAtRUUgICAoaGV4KQkJRFNHIFRlY2hub2xvZ3ksIEluYy4KLTAwMzBFRSAgICAgKGJhc2UgMTYpCQlEU0cgVGVjaG5vbG9neSwgSW5jLgotCQkJCTZGLTQgTm8uIDI3MCwgQ2h3aWcgSHNpYW8KLQkJCQlFYXN0IFJvYWQsIFNlYy4gNAotCQkJCSBUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtRUYgICAoaGV4KQkJTkVPTiBURUNITk9MT0dZLCBJTkMuCi0wMDMwRUYgICAgIChiYXNlIDE2KQkJTkVPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJODUgV0VTVCBNT05UQUdVRSBFWFBSRVNTV0FZCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUYwICAgKGhleCkJCVVuaWZvcm0gSW5kdXN0cmlhbCBDb3JwLgotMDAzMEYwICAgICAoYmFzZSAxNikJCVVuaWZvcm0gSW5kdXN0cmlhbCBDb3JwLgotCQkJCTE4RiwgMTcxLCBTaHVuZyBUZWggUm9hZAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1GMSAgIChoZXgpCQlBY2N0b24gVGVjaG5vbG9neSBDb3JwLgotMDAzMEYxICAgICAoYmFzZSAxNikJCUFjY3RvbiBUZWNobm9sb2d5IENvcnAuCi0JCQkJTm8uIDEsIENyZWF0aW9uIFJkLiBJVgotCQkJCVMuRy5aLlAKLQkJCQlIc2luY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLUYyICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMzBGMiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA4NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRjMgICAoaGV4KQkJQXQgV29yayBDb21wdXRlcnMKLTAwMzBGMyAgICAgKGJhc2UgMTYpCQlBdCBXb3JrIENvbXB1dGVycwotCQkJCVAuTy4gQm94IDk0NwotCQkJCUNvcnZhbGxpcyBPUiA5NzMzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRjQgICAoaGV4KQkJU1RBUkRPVCBURUNITk9MT0dJRVMKLTAwMzBGNCAgICAgKGJhc2UgMTYpCQlTVEFSRE9UIFRFQ0hOT0xPR0lFUwotCQkJCTY4MjAtSCBPUkFOR0UgVEhPUlBFIEFWRS4KLQkJCQlCVUVOQSBQQVJLIENBIDkwNjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1GNSAgIChoZXgpCQlXaWxkIExhYi4gTHRkLgotMDAzMEY1ICAgICAoYmFzZSAxNikJCVdpbGQgTGFiLiBMdGQuCi0JCQkJMS0zMy0xNy02MDQgSGFyYXlhbWEKLQkJCQlVcmF3YSBDaXR5IFNhaXRhbWEgcHJpZi4gMzM2LTA5MzEgCi0JCQkJSkFQQU4KLQotMDAtMzAtRjYgICAoaGV4KQkJU0VDVVJFTE9HSVggQ09SUE9SQVRJT04KLTAwMzBGNiAgICAgKGJhc2UgMTYpCQlTRUNVUkVMT0dJWCBDT1JQT1JBVElPTgotCQkJCTEzNzUwIFNBTiBQRURSTwotCQkJCVNBTiBBTlRPTklPIFRYIDc4MjMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1GNyAgIChoZXgpCQlSQU1JWCBJTkMuCi0wMDMwRjcgICAgIChiYXNlIDE2KQkJUkFNSVggSU5DLgotCQkJCTE2NzIgRE9OTE9OIFNUUkVFVAotCQkJCVZFTlRVUkEgQ0EgOTMwMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUY4ICAgKGhleCkJCUR5bmFwcm8gU3lzdGVtcywgSW5jLgotMDAzMEY4ICAgICAoYmFzZSAxNikJCUR5bmFwcm8gU3lzdGVtcywgSW5jLgotCQkJCTgwMCBDYXJsZXRvbiBDb3VydAotCQkJCUFubmFjaXMgSXNsYW5kCi0JCQkJTmV3IFdlc3RtaW5zdGVyIEJyaXRpc2ggQ29sdW1iaWEgVjNNIDZMMyAKLQkJCQlDQU5BREEKLQotMDAtMzAtRjkgICAoaGV4KQkJU29sbGFlIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDMwRjkgICAgIChiYXNlIDE2KQkJU29sbGFlIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJNjA3IEluY2hlbyBJVCBUb3dlcgotCQkJCTU5Mi01LCBEb2h3YS0xLWRvbmcKLQkJCQlOYW0tZ3UgSW5jaGVvbiAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtRkEgICAoaGV4KQkJVEVMSUNBLCBJTkMuCi0wMDMwRkEgICAgIChiYXNlIDE2KQkJVEVMSUNBLCBJTkMuCi0JCQkJNzM0IEZPUkVTVCBTVFJFRVQsIEJMREcuCi0JCQkJU1VJVEUgIzEwMAotCQkJCU1BUkxCT1JPIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1GQiAgIChoZXgpCQlBWlMgVGVjaG5vbG9neSBBRwotMDAzMEZCICAgICAoYmFzZSAxNikJCUFaUyBUZWNobm9sb2d5IEFHCi0JCQkJU3RlaW5iZWlzc3RyYXNzZSAyLTQKLQkJCQk3MjUxMCBTdGV0dGVuIEEuSy5NLiAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC1GQyAgIChoZXgpCQlUZXJhd2F2ZSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAzMEZDICAgICAoYmFzZSAxNikJCVRlcmF3YXZlIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMzA2OTUgSHVudHdvb2QgQXZlbnVlCi0JCQkJSGF5d2FyZCBDQSA5NDU0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRkQgICAoaGV4KQkJSU5URUdSQVRFRCBTWVNURU1TIERFU0lHTgotMDAzMEZEICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgU1lTVEVNUyBERVNJR04KLQkJCQkzNjUwLUcgQ0VOVFJFIENJUkNMRSBEUklWRQotCQkJCUZPUlQgTUlMTCBTQyAyOTcxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRkUgICAoaGV4KQkJRFNBIEdtYkgKLTAwMzBGRSAgICAgKGJhc2UgMTYpCQlEU0EgR21iSAotCQkJCVBhc2NhbHN0ci4gMjgKLQkJCQk1MjA3NiBBYWNoZW4gIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtRkYgICAoaGV4KQkJREFUQUZBQiBTWVNURU1TLCBJTkMuCi0wMDMwRkYgICAgIChiYXNlIDE2KQkJREFUQUZBQiBTWVNURU1TLCBJTkMuCi0JCQkJUk9PTSAjMTkxMCwgMTlGLCBOTy4gMzMzCi0JCQkJS0VFTFVORyBST0FEIFNFQy4gMSwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMzLTZDICAgKGhleCkJCVN5bmFwU2Vuc2UgQ29ycG9yYXRpb24KLTAwMzM2QyAgICAgKGJhc2UgMTYpCQlTeW5hcFNlbnNlIENvcnBvcmF0aW9uCi0JCQkJMjM2NSBJcm9uIFBvaW50IFJvYWQsIFN1aXRlIDEwMAotCQkJCUZvbHNvbSBDQSA5NTYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzQtRjEgICAoaGV4KQkJUmFkaWNvbSBSZXNlYXJjaCwgSW5jLgotMDAzNEYxICAgICAoYmFzZSAxNikJCVJhZGljb20gUmVzZWFyY2gsIEluYy4KLQkJCQkyMTQ4IEJlcmluZyBEcml2ZQotCQkJCVNhbiBKb3NlIENhIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zNS0zMiAgIChoZXgpCQlFbGVjdHJvLU1ldHJpY3MgQ29ycG9yYXRpb24KLTAwMzUzMiAgICAgKGJhc2UgMTYpCQlFbGVjdHJvLU1ldHJpY3MgQ29ycG9yYXRpb24KLQkJCQkyMzEgRW50ZXJwcmlzZSBSb2FkCi0JCQkJSm9obnN0b3duIE5ldyBZb3JrIDEyMDk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zQS05OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDNBOTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zQS05OSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDNBOTkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zQS05QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDNBOUEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zQS05QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDNBOUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zQS05QyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDNBOUMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zQS05RCAgIChoZXgpCQlORUMgQWNjZXNzVGVjaG5pY2EsIEx0ZC4KLTAwM0E5RCAgICAgKGJhc2UgMTYpCQlORUMgQWNjZXNzVGVjaG5pY2EsIEx0ZC4KLQkJCQk4MDAgU2hpbW9tYXRhCi0JCQkJS2FrZWdhd2EgU2hpenVva2EgNDM2LTg1MDEKLQkJCQlKQVBBTgotCi0wMC0zQS1BRiAgIChoZXgpCQlCbHVlQml0IEx0ZC4KLTAwM0FBRiAgICAgKGJhc2UgMTYpCQlCbHVlQml0IEx0ZC4KLQkJCQlVbml0IEIsIDIxL0YuLCA3OCBIdW5nIFRvIFJvYWQsCi0JCQkJS3d1biBUb25nLCAKLQkJCQlLb3dsb29uLCAgIAotCQkJCUhPTkcgS09ORwotCi0wMC0zQy1DNSAgIChoZXgpCQlXT05XT08gRW5naW5lZXJpbmcgQ28uLCBMdGQKLTAwM0NDNSAgICAgKGJhc2UgMTYpCQlXT05XT08gRW5naW5lZXJpbmcgQ28uLCBMdGQKLQkJCQk3RiAyMDEsIFRlY2huby1QYXJrIFNzYW5nWW9uZyBJSUksIAotCQkJCTM2LTEgU2FtamVvbmctZG9uZyBPamVvbmctZ3UsCi0JCQkJQnVjaGVvbiBDaXR5IEd5ZW9uZ2dpLURvIDQyMS04MDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtM0QtNDEgICAoaGV4KQkJSGF0dGVsYW5kIENvbXB1dGVyIEFTCi0wMDNENDEgICAgIChiYXNlIDE2KQkJSGF0dGVsYW5kIENvbXB1dGVyIEFTCi0JCQkJQWFtc29zZW4KLQkJCQlOZWRyZSBWYXRzIFJvZ2FsYW5kIDU1NzgKLQkJCQlOT1JXQVkKLQotMDAtNDAtMDAgICAoaGV4KQkJUENJIENPTVBPTkVOVEVTIERBIEFNWk9OSUEgTFRECi0wMDQwMDAgICAgIChiYXNlIDE2KQkJUENJIENPTVBPTkVOVEVTIERBIEFNWk9OSUEgTFRECi0JCQkJUlVBIEpPU0VGIEtSWVNTCi0JCQkJMTI5IC0gU0FPIFBBVUxPIC0gU1AKLQkJCQkwMTE0MCBCUkFTSUwKLQkJCQlCUkFaSUwKLQotMDAtNDAtMDEgICAoaGV4KQkJWllYRUwgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwNDAwMSAgICAgKGJhc2UgMTYpCQlaWVhFTCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTRGLCAxMTEsIENIVU5HIFNIQU4gTi4gUk9BRAotCQkJCVNFQyAyLCAgVEFJUEVJCi0JCQkJVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtMDIgICAoaGV4KQkJUEVSTEUgU1lTVEVNUyBMSU1JVEVECi0wMDQwMDIgICAgIChiYXNlIDE2KQkJUEVSTEUgU1lTVEVNUyBMSU1JVEVECi0JCQkJNjAgUkVORlJFVyBEUklWRQotCQkJCU1BUktIQU0gT05UQVJJTwotCQkJCUNBTkFEQSBMM1IgMEUxCi0JCQkJQ0FOQURBCi0KLTAwLTQwLTAzICAgKGhleCkJCUVtZXJzb24gUHJvY2VzcyBNYW5hZ2VtZW50IFBvd2VyICYgV2F0ZXIgU29sdXRpb25zLCBJbmMuCi0wMDQwMDMgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBQcm9jZXNzIE1hbmFnZW1lbnQgUG93ZXIgJiBXYXRlciBTb2x1dGlvbnMsIEluYy4KLQkJCQkyMDAgQmV0YSBEcml2ZQotCQkJCVBJVFRTQlVSR0ggUEEgMTUyMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTA0ICAgKGhleCkJCUlDTSBDTy4gTFRELgotMDA0MDA0ICAgICAoYmFzZSAxNikJCUlDTSBDTy4gTFRELgotCQkJCTQtMi05IE5JSE9OQkFTSEkgTkFOSVdBLUtVCi0JCQkJT1NBS0EsICg1NTYpCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0wNSAgIChoZXgpCQlBTkkgQ09NTVVOSUNBVElPTlMgSU5DLgotMDA0MDA1ICAgICAoYmFzZSAxNikJCUFOSSBDT01NVU5JQ0FUSU9OUyBJTkMuCi0JCQkJOCBBTlpJTwotCQkJCUlSVklORSBDQSA5MjcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMDYgICAoaGV4KQkJU0FNUE8gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDA0MDA2ICAgICAoYmFzZSAxNikJCVNBTVBPIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQkyNi0yIFRJTkctSFUsCi0JCQkJVEEtS0FORyBUU1VOIEtVRUktU0hBTiBIU0lBTkcsIFRBT1lVQU4gSAotCQkJCTMzMzM0IFRBSVdBTiAzMzMzNCBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC0wNyAgIChoZXgpCQlURUxNQVQgSU5GT1JNQVRJUVVFCi0wMDQwMDcgICAgIChiYXNlIDE2KQkJVEVMTUFUIElORk9STUFUSVFVRQotCQkJCTYgUlVFIERFIEwnSU5EVVNUUklFCi0JCQkJQlAgMTIgIDY4MzYwIFNPVUxUWgotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC00MC0wOCAgIChoZXgpCQlBIFBMVVMgSU5GTyBDT1JQT1JBVElPTgotMDA0MDA4ICAgICAoYmFzZSAxNikJCUEgUExVUyBJTkZPIENPUlBPUkFUSU9OCi0JCQkJNUYsIE5PLjIsIExBTkUgMjM1Ci0JCQkJQkFPIENISUFPIFJPQUQgSFNJTiBUSUVOLCBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtMDkgICAoaGV4KQkJVEFDSElCQU5BIFRFQ1RST04gQ08uLCBMVEQuCi0wMDQwMDkgICAgIChiYXNlIDE2KQkJVEFDSElCQU5BIFRFQ1RST04gQ08uLCBMVEQuCi0JCQkJU1lTVEVNQVRJQyBFUVVJUE1FTlQgRElWSVNJT04KLQkJCQkyLTItNSBISUdBU0hJWUFNQSwgTUVHVVJPS1UgVE9LWU8sIDE1MwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtMEEgICAoaGV4KQkJUElWT1RBTCBURUNITk9MT0dJRVMsIElOQy4KLTAwNDAwQSAgICAgKGJhc2UgMTYpCQlQSVZPVEFMIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTEwMCBXLiBSSU5DT04gQVZFTlVFLVNURSAjMjExCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTBCICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNDAwQiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMEMgICAoaGV4KQkJR0VORVJBTCBNSUNSTyBTWVNURU1TLCBJTkMuCi0wMDQwMEMgICAgIChiYXNlIDE2KQkJR0VORVJBTCBNSUNSTyBTWVNURU1TLCBJTkMuCi0JCQkJUC5PLiBCT1ggMzY4OQotCQkJCVJBTkNITyBDVUNBTU9OR0EgQ0EgOTE3MjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTBEICAgKGhleCkJCUxBTk5FVCBEQVRBIENPTU1VTklDQVRJT05TLExURAotMDA0MDBEICAgICAoYmFzZSAxNikJCUxBTk5FVCBEQVRBIENPTU1VTklDQVRJT05TLExURAotCQkJCUFUSURJTSBURUNITk9MT0cnTCBQQVJLLCBCRy4jMwotCQkJCVRFTCBBVklWIDYxMTMxCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTQwLTBFICAgKGhleCkJCU1FTU9URUMsIElOQy4KLTAwNDAwRSAgICAgKGJhc2UgMTYpCQlNRU1PVEVDLCBJTkMuCi0JCQkJNzc1NSBIZW5yaS1Cb3VyYXNzYQotCQkJCU1PTlRSRUFMLCBRVUVCRUMgICBINFMgMVA3Ci0JCQkJQ0FOQURBCi0KLTAwLTQwLTBGICAgKGhleCkJCURBVEFDT00gVEVDSE5PTE9HSUVTCi0wMDQwMEYgICAgIChiYXNlIDE2KQkJREFUQUNPTSBURUNITk9MT0dJRVMKLQkJCQkxMTAwMSAzMVNUIFBMQUNFIFdFU1QKLQkJCQlFVkVSRVRUIFdBIDk4MjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xMCAgIChoZXgpCQlTT05JQyBTWVNURU1TLCBJTkMuCi0wMDQwMTAgICAgIChiYXNlIDE2KQkJU09OSUMgU1lTVEVNUywgSU5DLgotCQkJCTU3NSBQQVNUT1JJQSBOT1JUSCBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xMSAgIChoZXgpCQlBTkRPVkVSIENPTlRST0xTIENPUlBPUkFUSU9OCi0wMDQwMTEgICAgIChiYXNlIDE2KQkJQU5ET1ZFUiBDT05UUk9MUyBDT1JQT1JBVElPTgotCQkJCTMwMCBCUklDS1NUT05FIFNRVUFSRQotCQkJCUFORE9WRVIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTEyICAgKGhleCkJCVdJTkRBVEEsIElOQy4KLTAwNDAxMiAgICAgKGJhc2UgMTYpCQlXSU5EQVRBLCBJTkMuCi0JCQkJMTAgQkVBUkZPT1QgUk9BRAotCQkJCU5PUlRIQk9STyBNQSAwMTUzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMTMgICAoaGV4KQkJTlRUIERBVEEgQ09NTS4gU1lTVEVNUyBDT1JQLgotMDA0MDEzICAgICAoYmFzZSAxNikJCU5UVCBEQVRBIENPTU0uIFNZU1RFTVMgQ09SUC4KLQkJCQlERVZFTE9QTUVOVCBIRUFEUVVBUlRFUlMKLQkJCQlUT1lPU1UgQ0VOVEVSIEJMREcuLCAzLTMtMyBUT1lPU1UsIEtPVE8tCi0JCQkJVE9LWU8gMTM1IFRPS1lPIDEzNSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTE0ICAgKGhleCkJCUNPTVNPRlQgR01CSAotMDA0MDE0ICAgICAoYmFzZSAxNikJCUNPTVNPRlQgR01CSAotCQkJCVdBQ0hIQVVTU1RSLiA1QQotCQkJCTc1MDAgS0FSTFNSVUhFIDQxCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtMTUgICAoaGV4KQkJQVNDT00gSU5GUkFTWVMgQUcKLTAwNDAxNSAgICAgKGJhc2UgMTYpCQlBU0NPTSBJTkZSQVNZUyBBRwotCQkJCURQVC4gRUFTTyAzNzI2Ci0JCQkJR0xVVFotQkxPVFpIRUlNU1RSLiAxIENILTQ1MDMgIFNPTE9USFVSTgotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtNDAtMTYgICAoaGV4KQkJQURDIC0gR2xvYmFsIENvbm5lY3Rpdml0eSBTb2x1dGlvbnMgRGl2aXNpb24KLTAwNDAxNiAgICAgKGJhc2UgMTYpCQlBREMgLSBHbG9iYWwgQ29ubmVjdGl2aXR5IFNvbHV0aW9ucyBEaXZpc2lvbgotCQkJCVAuTy4gQm94IDExMDEKLQkJCQlNaW5uZWFwb2xpcyBNTiA1NTQ0MC0xMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xNyAgIChoZXgpCQlTaWxleCBUZWNobm9sb2d5IEFtZXJpY2EKLTAwNDAxNyAgICAgKGJhc2UgMTYpCQlTaWxleCBUZWNobm9sb2d5IEFtZXJpY2EKLQkJCQkxNTcgV2VzdCA3MDY1IFNvdXRoCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQwNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTE4ICAgKGhleCkJCUFET0JFIFNZU1RFTVMsIElOQy4KLTAwNDAxOCAgICAgKGJhc2UgMTYpCQlBRE9CRSBTWVNURU1TLCBJTkMuCi0JCQkJMTU4NSBDSEFSTEVTVE9OIFJPQUQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xOSAgIChoZXgpCQlBRU9OIFNZU1RFTVMsIElOQy4KLTAwNDAxOSAgICAgKGJhc2UgMTYpCQlBRU9OIFNZU1RFTVMsIElOQy4KLQkJCQk4NDAxIFdBU0hJTkdUT04gUExBQ0UgTkUKLQkJCQlBTEJVUVVFUlFVRSBOTSA4NzExMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMUEgICAoaGV4KQkJRlVKSSBFTEVDVFJJQyBDTy4sIExURC4KLTAwNDAxQSAgICAgKGJhc2UgMTYpCQlGVUpJIEVMRUNUUklDIENPLiwgTFRELgotCQkJCU5FVyBZVVJBS1VDSE8gQkxERwotCQkJCTEyLTEgWVVSQUtVQ0hPIDEtQ0hPTUUgQ0hJWU9EQS1LVSwgVE9LWU8KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTFCICAgKGhleCkJCVBSSU5URVIgU1lTVEVNUyBDT1JQLgotMDA0MDFCICAgICAoYmFzZSAxNikJCVBSSU5URVIgU1lTVEVNUyBDT1JQLgotCQkJCTIwNyBQRVJSWSBQQVJLV0FZCi0JCQkJR0FJVEhFUlNCVVJHIE1EIDIwODc3LTIxNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTFDICAgKGhleCkJCUFTVCBSRVNFQVJDSCwgSU5DLgotMDA0MDFDICAgICAoYmFzZSAxNikJCUFTVCBSRVNFQVJDSCwgSU5DLgotCQkJCU1TIDItNzgKLQkJCQkxNjE1IEFMVE9OIFBBUktXQVkKLQkJCQlJUlZJTkUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTFEICAgKGhleCkJCUlOVklTSUJMRSBTT0ZUV0FSRSwgSU5DLgotMDA0MDFEICAgICAoYmFzZSAxNikJCUlOVklTSUJMRSBTT0ZUV0FSRSwgSU5DLgotCQkJCTExNDIgQ0hFU1MgRFJJVkUKLQkJCQlGT1NURVIgQ0lUWSBDQSA5NDQwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMUUgICAoaGV4KQkJSUNDCi0wMDQwMUUgICAgIChiYXNlIDE2KQkJSUNDCi0JCQkJODIzMCBNT05UR09NRVJZIFJPQUQKLQkJCQlDSU5DSU5OQVRJIE9IIDQ1MjM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xRiAgIChoZXgpCQlDT0xPUkdSQVBIIExURAotMDA0MDFGICAgICAoYmFzZSAxNikJCUNPTE9SR1JBUEggTFRECi0JCQkJVU5JVCAyLCBNQVJTIEhPVVNFCi0JCQkJQ0FMTEVWQSBQQVJLLCBBTERFUk1BU1RPTiBOUi4gUkVBRElORywgQgotCQkJCVJHNyA0UVcgLSBVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTIwICAgKGhleCkJCVRFIENvbm5lY3Rpdml0eSBMdGQuCi0wMDQwMjAgICAgIChiYXNlIDE2KQkJVEUgQ29ubmVjdGl2aXR5IEx0ZC4KLQkJCQlLaW5tZWwgUGFyawotCQkJCUJvZGVsd3lkZGFuIFJIWUwgTEwxOCA1VFoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC0yMSAgIChoZXgpCQlSQVNURVIgR1JBUEhJQ1MKLTAwNDAyMSAgICAgKGJhc2UgMTYpCQlSQVNURVIgR1JBUEhJQ1MKLQkJCQkyODUgTi4gV09MRkUgUk9BRAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMjIgICAoaGV4KQkJS0xFVkVSIENPTVBVVEVSUywgSU5DLgotMDA0MDIyICAgICAoYmFzZSAxNikJCUtMRVZFUiBDT01QVVRFUlMsIElOQy4KLQkJCQkxMDI4IFcuIE1BVURFIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMjMgICAoaGV4KQkJTE9HSUMgQ09SUE9SQVRJT04KLTAwNDAyMyAgICAgKGJhc2UgMTYpCQlMT0dJQyBDT1JQT1JBVElPTgotCQkJCTMtMTQtMTAgTUVJSkktU0VJTUVJIEJVSUxESU5HCi0JCQkJTUlUQSBNSU5BVE8tS1UgVE9LWU8KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTI0ICAgKGhleCkJCUNPTVBBQyBJTkMuCi0wMDQwMjQgICAgIChiYXNlIDE2KQkJQ09NUEFDIElOQy4KLQkJCQkxNi03IE5JSE9OQkFTSSBIQU1BQ0hPIDMtQ0hPCi0JCQkJQ0hVTy1LVSwgVE9LWU8KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTI1ICAgKGhleCkJCU1PTEVDVUxBUiBEWU5BTUlDUwotMDA0MDI1ICAgICAoYmFzZSAxNikJCU1PTEVDVUxBUiBEWU5BTUlDUwotCQkJCTg4MCBFQVNUIEFSUVVFUyBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYtNDUzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMjYgICAoaGV4KQkJQnVmZmFsbywgSW5jCi0wMDQwMjYgICAgIChiYXNlIDE2KQkJQnVmZmFsbywgSW5jCi0JCQkJTUVMQ08gSEktVEVDSCBDRU5URVIsCi0JCQkJNC0xNSAgU2hpYmF0YSwgSG9uZG9yaSwgCi0JCQkJTUlOQU1JLUtVLCBOQUdPWUEgQWljaGkgNDU3LTg1MjAKLQkJCQlKQVBBTgotCi0wMC00MC0yNyAgIChoZXgpCQlTTUMgTUFTU0FDSFVTRVRUUywgSU5DLgotMDA0MDI3ICAgICAoYmFzZSAxNikJCVNNQyBNQVNTQUNIVVNFVFRTLCBJTkMuCi0JCQkJMjUgV0FMS0VSUyBCUk9PSyBEUklWRQotCQkJCVJFQURJTkcgTUEgMDE4NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTI4ICAgKGhleCkJCU5FVENPTU0gTElNSVRFRAotMDA0MDI4ICAgICAoYmFzZSAxNikJCU5FVENPTU0gTElNSVRFRAotCQkJCTMgT0xZTVBJQyBCVVNJTkVTUyBDRU5UUkUKLQkJCQlQQVlDT0NLRSBST0FEIEJBU0lMRE9OLCBFU1NFWCBTUzE0IDNFWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtMjkgICAoaGV4KQkJQ09NUEVYCi0wMDQwMjkgICAgIChiYXNlIDE2KQkJQ09NUEVYCi0JCQkJQi5QLiAzNQotCQkJCTc0MzcxIFBSSU5HWS1GUkFOQ0UKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNDAtMkEgICAoaGV4KQkJQ0FOT0dBLVBFUktJTlMKLTAwNDAyQSAgICAgKGJhc2UgMTYpCQlDQU5PR0EtUEVSS0lOUwotCQkJCTIxMDEyIExBU1NFTiBTVFJFRVQKLQkJCQlDSEFUU1dPUlRIIENBIDkxMzExLTQyNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTJCICAgKGhleCkJCVRSSUdFTSBDT01QVVRFUiwgSU5DLgotMDA0MDJCICAgICAoYmFzZSAxNikJCVRSSUdFTSBDT01QVVRFUiwgSU5DLgotCQkJCUtJU1VORyBCL0QgNEYsIDc4NC02Ci0JCQkJWUVPS1NBTS1ET05HLCBLQU5HTkFNLUdVCi0JCQkJU0VPVUwgS09SRUEgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC00MC0yQyAgIChoZXgpCQlJU0lTIERJU1RSSUJVVEVEIFNZU1RFTVMsIElOQy4KLTAwNDAyQyAgICAgKGJhc2UgMTYpCQlJU0lTIERJU1RSSUJVVEVEIFNZU1RFTVMsIElOQy4KLQkJCQkxMTEgU09VVEggQ0FZVUdBIFNUUkVFVAotCQkJCVNVSVRFICMyMDAKLQkJCQlJVEhBQ0EgTlkgMTQ4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTJEICAgKGhleCkJCUhBUlJJUyBBREFDT00gQ09SUE9SQVRJT04KLTAwNDAyRCAgICAgKGJhc2UgMTYpCQlIQVJSSVMgQURBQ09NIENPUlBPUkFUSU9OCi0JCQkJMTEwMCBWRU5UVVJFIENPVVJUCi0JCQkJQ0FSUk9MTFRPTiBUWCA3NTAwNi01NDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0yRSAgIChoZXgpCQlQUkVDSVNJT04gU09GVFdBUkUsIElOQy4KLTAwNDAyRSAgICAgKGJhc2UgMTYpCQlQUkVDSVNJT04gU09GVFdBUkUsIElOQy4KLQkJCQk2MDAgUyBGRURFUkFMIEhXWSBTVEUKLQkJCQlERUVSRklFTEQgQkVBQ0ggRkwgMzM0NDEtNDE5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMkYgICAoaGV4KQkJWExOVCBERVNJR05TIElOQy4KLTAwNDAyRiAgICAgKGJhc2UgMTYpCQlYTE5UIERFU0lHTlMgSU5DLgotCQkJCTE1MDUwIEFWRU5VRSBPRiBTQ0lFTkNFCi0JCQkJU1VJVEUgMjAwCi0JCQkJU0FOIERJRUdPIENBIDkyMTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zMCAgIChoZXgpCQlHSyBDT01QVVRFUgotMDA0MDMwICAgICAoYmFzZSAxNikJCUdLIENPTVBVVEVSCi0JCQkJQkFTTEVSIFNUUkFTU0UgMTAzCi0JCQkJRC03ODAwIEZSRUlCVVJHCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtMzEgICAoaGV4KQkJS09LVVNBSSBFTEVDVFJJQyBDTy4sIExURAotMDA0MDMxICAgICAoYmFzZSAxNikJCUtPS1VTQUkgRUxFQ1RSSUMgQ08uLCBMVEQKLQkJCQkyLTEgWUFTVVVDSEkKLQkJCQlZQVRTVU8tTUFDSEkgTkVJR1VOCi0JCQkJVE9ZQU1BIDkzOS0yMyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTMyICAgKGhleCkJCURJR0lUQUwgQ09NTVVOSUNBVElPTlMKLTAwNDAzMiAgICAgKGJhc2UgMTYpCQlESUdJVEFMIENPTU1VTklDQVRJT05TCi0JCQkJQVNTT0NJQVRFUywgSU5DLgotCQkJCTIwMTAgRk9SVFVORSBEUklWRSwgIzEwMQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zMyAgIChoZXgpCQlBRERUUk9OIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDQwMzMgICAgIChiYXNlIDE2KQkJQUREVFJPTiBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTQ2NTYwIEZSRU1PTlQgQkxWRC4gIzMwMwotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTM0ICAgKGhleCkJCUJVU1RFSyBDT1JQT1JBVElPTgotMDA0MDM0ICAgICAoYmFzZSAxNikJCUJVU1RFSyBDT1JQT1JBVElPTgotCQkJCTQxNTEgQlVSVE9OIERSSVZFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTM1ICAgKGhleCkJCU9QQ09NCi0wMDQwMzUgICAgIChiYXNlIDE2KQkJT1BDT00KLQkJCQkxMjE1IFcuIENST1NCWSBSRC4KLQkJCQlDQVJST0xMVE9OIFRYIDc1MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zNiAgIChoZXgpCQlUUklCRSBDT01QVVRFUiBXT1JLUywgSU5DLgotMDA0MDM2ICAgICAoYmFzZSAxNikJCVRSSUJFIENPTVBVVEVSIFdPUktTLCBJTkMuCi0JCQkJMTE5NSBQQVJLIEFWRU5VRS1TVEUgIzIxMQotCQkJCUVNRVJZVklMTEUgQ0EgOTQ2MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTM3ICAgKGhleCkJCVNFQS1JTEFOLCBJTkMuCi0wMDQwMzcgICAgIChiYXNlIDE2KQkJU0VBLUlMQU4sIElOQy4KLQkJCQkxNDYwMiBOT1JUSCBVUyBISUdIV0FZICMzMQotCQkJCUNBUk1FTCBJTiA0NjAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMzggICAoaGV4KQkJVEFMRU5UIEVMRUNUUklDIElOQ09SUE9SQVRFRAotMDA0MDM4ICAgICAoYmFzZSAxNikJCVRBTEVOVCBFTEVDVFJJQyBJTkNPUlBPUkFURUQKLQkJCQkzUkQgRkwuLCBOTy4gMjYwLCBQQSBURUggUk9BRAotCQkJCVNFQy4gMiBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtMzkgICAoaGV4KQkJT1BURUMgREFJSUNISSBERU5LTyBDTy4sIExURC4KLTAwNDAzOSAgICAgKGJhc2UgMTYpCQlPUFRFQyBEQUlJQ0hJIERFTktPIENPLiwgTFRELgotCQkJCUZJQkVSIE9QVElDUyAmIFRFTEVDT00uIERJVi4KLQkJCQkzLTEtMSBNQVJVTk9VQ0hJIENISVlPREFLVSBUT0tZTyAxMDAKLQkJCQlKQVBBTgotCi0wMC00MC0zQSAgIChoZXgpCQlJTVBBQ1QgVEVDSE5PTE9HSUVTCi0wMDQwM0EgICAgIChiYXNlIDE2KQkJSU1QQUNUIFRFQ0hOT0xPR0lFUwotCQkJCTYgUlVFIERFIEwnQUNBRElFCi0JCQkJWi5BLiBDT1VSVEFCT0VVRiA5MTk1MyBMRVMgVUxJUyBDRURFWAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC00MC0zQiAgIChoZXgpCQlTWU5FUkpFVCBJTlRFUk5BVElPTkFMIENPUlAuCi0wMDQwM0IgICAgIChiYXNlIDE2KQkJU1lORVJKRVQgSU5URVJOQVRJT05BTCBDT1JQLgotCQkJCTVGLCBOTyAzNSwgS1VBTkcgRlUgUy4gUk9BRAotCQkJCVRBSVBFSSwKLQkJCQlUQUlXQU4gUi4gTy4gQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTNDICAgKGhleCkJCUZPUktTLCBJTkMuCi0wMDQwM0MgICAgIChiYXNlIDE2KQkJRk9SS1MsIElOQy4KLQkJCQkxLTI3LTQgSVJJWUEsCi0JCQkJSVJJWUEgMS0yNy00IFRBSVRPLAotCQkJCTExMCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTNEICAgKGhleCkJCVRFUkFEQVRBCi0wMDQwM0QgICAgIChiYXNlIDE2KQkJVEVSQURBVEEKLQkJCQkxMDAgTi4gU0VQVUxWRURBIEJMVkQuCi0JCQkJRUwgU0VHVU5ETyBDQSA5MDI0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtM0UgICAoaGV4KQkJUkFTVEVSIE9QUyBDT1JQT1JBVElPTgotMDA0MDNFICAgICAoYmFzZSAxNikJCVJBU1RFUiBPUFMgQ09SUE9SQVRJT04KLQkJCQkyNTAwIFdBTFNIIEFWRU5VRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zRiAgIChoZXgpCQlTU0FOR1lPTkcgQ09NUFVURVIgU1lTVEVNUwotMDA0MDNGICAgICAoYmFzZSAxNikJCVNTQU5HWU9ORyBDT01QVVRFUiBTWVNURU1TCi0JCQkJQ09SUE9SQVRJT04KLQkJCQk2MC0xLCAzR0EsIENIVU5HTVUtUk8sIEpVTkctR1UgU0VPVUwKLQkJCQlLT1JFQSAxMDAtNzA1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTQwLTQwICAgKGhleCkJCVJJTkcgQUNDRVNTLCBJTkMuCi0wMDQwNDAgICAgIChiYXNlIDE2KQkJUklORyBBQ0NFU1MsIElOQy4KLQkJCQk5NTctUiBJTkRVU1RSSUFMIFJPQUQKLQkJCQlTQU4gQ0FSTE9TIENBIDk0MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC00MSAgIChoZXgpCQlGVUpJS1VSQSBMVEQuCi0wMDQwNDEgICAgIChiYXNlIDE2KQkJRlVKSUtVUkEgTFRELgotCQkJCTEtNS0xLCBLSUJBLCBLT1RPLUtVCi0JCQkJVE9LWU8gMTM1Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC00MiAgIChoZXgpCQlOLkEuVC4gR01CSAotMDA0MDQyICAgICAoYmFzZSAxNikJCU4uQS5ULiBHTUJICi0JCQkJR09FVEhFU1RSLiAyCi0JCQkJNTIxMCBUUk9JU0RPUkYtU0lFR0xBUgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLTQzICAgKGhleCkJCU5va2lhIFNpZW1lbnMgTmV0d29ya3MgR21iSCAmIENvLiBLRy4KLTAwNDA0MyAgICAgKGJhc2UgMTYpCQlOb2tpYSBTaWVtZW5zIE5ldHdvcmtzIEdtYkggJiBDby4gS0cuCi0JCQkJV2VybmVyLXZvbi1TaWVtZW5zIFN0ci4gMi02Ci0JCQkJQnJ1Y2hzYWwgQmFkZW4tV/xydGVtYmVyZyA3NjY0NgotCQkJCUZJTkxBTkQKLQotMDAtNDAtNDQgICAoaGV4KQkJUU5JWCBDT01QVVRFUiBDTy4sIExURC4KLTAwNDA0NCAgICAgKGJhc2UgMTYpCQlRTklYIENPTVBVVEVSIENPLiwgTFRELgotCQkJCTgsOUYgS09SRUFOIFRFQUNIRVInUyBNVVQuQkxERwotCQkJCTM1LTMsIFlFT1VJRE9fRE9ORywgWUVPTkdERVVOR1BPX0dVCi0JCQkJU0VPVUwgS09SRUEgMTUwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC00MC00NSAgIChoZXgpCQlUV0lOSEVBRCBDT1JQT1JBVElPTgotMDA0MDQ1ICAgICAoYmFzZSAxNikJCVRXSU5IRUFEIENPUlBPUkFUSU9OCi0JCQkJMTUzNyBDRU5UUkUgUE9JTlRFIERSSVZFCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTQ2ICAgKGhleCkJCVVEQyBSRVNFQVJDSCBMSU1JVEVECi0wMDQwNDYgICAgIChiYXNlIDE2KQkJVURDIFJFU0VBUkNIIExJTUlURUQKLQkJCQk4QSBLSU5HIFdBTiBJTkRVU1RSSUFMIEJMREcuCi0JCQkJNTQgSFVORyBUTyBST0FELCBLV1VOIFRPTkcKLQkJCQlIT05HIEtPTkcKLQkJCQlIT05HIEtPTkcKLQotMDAtNDAtNDcgICAoaGV4KQkJV0lORCBSSVZFUiBTWVNURU1TCi0wMDQwNDcgICAgIChiYXNlIDE2KQkJV0lORCBSSVZFUiBTWVNURU1TCi0JCQkJMTAxMCBBVExBTlRJQyBBVkVOVUUKLQkJCQlBTEFNRURBIENBIDk0NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC00OCAgIChoZXgpCQlTTUQgSU5GT1JNQVRJQ0EgUy5BLgotMDA0MDQ4ICAgICAoYmFzZSAxNikJCVNNRCBJTkZPUk1BVElDQSBTLkEuCi0JCQkJTEFSR08gTU9WSU1FTlRPIERBUyBGT1JDQVMKLQkJCQlBUk1BREFTLCA0IEFMRlJBR0lERSwgIDI3MDAgQU1BRE9SQQotCQkJCVBPUlRVR0FMCi0JCQkJUE9SVFVHQUwKLQotMDAtNDAtNDkgICAoaGV4KQkJVEVHSU1FTlRBIEFHCi0wMDQwNDkgICAgIChiYXNlIDE2KQkJVEVHSU1FTlRBIEFHCi0JCQkJRk9SUkVOU1RSQVNTRQotCQkJCUNILTYzNDMgUk9US1JFVVoKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTQwLTRBICAgKGhleCkJCVdFU1QgQVVTVFJBTElBTiBERVBBUlRNRU5UCi0wMDQwNEEgICAgIChiYXNlIDE2KQkJV0VTVCBBVVNUUkFMSUFOIERFUEFSVE1FTlQKLQkJCQlPRiBFTVBMT1lNRU5UIChERVZFVCkKLQkJCQlMRVZFUiAyLCAxNTEgUk9ZQUwgU1QuIEVBU1QgUEVSVEggIDYwMDEKLQkJCQlXRVNURVJOIEFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC00MC00QiAgIChoZXgpCQlNQVBMRSBDT01QVVRFUiBTWVNURU1TCi0wMDQwNEIgICAgIChiYXNlIDE2KQkJTUFQTEUgQ09NUFVURVIgU1lTVEVNUwotCQkJCVAuTy4gQk9YIDEwMDUwCi0JCQkJU1QuIEpPSE4nUywgTkYKLQkJCQlDQU5BREEgQUxBIDRMNQotCQkJCUNBTkFEQQotCi0wMC00MC00QyAgIChoZXgpCQlIWVBFUlRFQyBQVFkgTFRELgotMDA0MDRDICAgICAoYmFzZSAxNikJCUhZUEVSVEVDIFBUWSBMVEQuCi0JCQkJUC5PLiBCT1ggMTc4MgotCQkJCU1BQ1FVQVJJRSBDRU5UUkUgTlNXLCAyMTEzCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTQwLTREICAgKGhleCkJCVRFTEVDT01NVU5JQ0FUSU9OUyBURUNITklRVUVTCi0wMDQwNEQgICAgIChiYXNlIDE2KQkJVEVMRUNPTU1VTklDQVRJT05TIFRFQ0hOSVFVRVMKLQkJCQlNL1MKLQkJCQkyMDQwMCBPQlNFUlZBVElPTiBEUklWRQotCQkJCUdFUk1BTlRPV04gTUQgMjA4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTRFICAgKGhleCkJCUZMVUVOVCwgSU5DLgotMDA0MDRFICAgICAoYmFzZSAxNikJCUZMVUVOVCwgSU5DLgotCQkJCTU5NCBXT1JDRVNURVIgUk9BRC1TVEUuIzMwOAotCQkJCU5BVElDSyBNQSAwMTc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNEYgICAoaGV4KQkJU1BBQ0UgJiBOQVZBTCBXQVJGQVJFIFNZU1RFTVMKLTAwNDA0RiAgICAgKGJhc2UgMTYpCQlTUEFDRSAmIE5BVkFMIFdBUkZBUkUgU1lTVEVNUwotCQkJCU5VV0MKLQkJCQlDT0RFIDIyMjIsICBCTERHIDExNzEtMwotCQkJCU5FV1BPUlQgUkkgMDI4NDEtNTA0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNTAgICAoaGV4KQkJSVJPTklDUywgSU5DT1JQT1JBVEVECi0wMDQwNTAgICAgIChiYXNlIDE2KQkJSVJPTklDUywgSU5DT1JQT1JBVEVECi0JCQkJNzY3IFdBUlJFTiBSRAotCQkJCUlUSEFDQSBOLlkuIDE0ODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC01MSAgIChoZXgpCQlHUkFDSUxJUywgSU5DLgotMDA0MDUxICAgICAoYmFzZSAxNikJCUdSQUNJTElTLCBJTkMuCi0JCQkJNjIzIFBBTEFDRSBTVFJFRVQKLQkJCQlBVVJPUkEgSUwgNjA1MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTUyICAgKGhleCkJCVNUQVIgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDQwNTIgICAgIChiYXNlIDE2KQkJU1RBUiBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk1MTUgU0hBVyBST0FECi0JCQkJU1RFUkxJTkcgVkEgMjIwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTUzICAgKGhleCkJCUFNUFJPIENPTVBVVEVSUwotMDA0MDUzICAgICAoYmFzZSAxNikJCUFNUFJPIENPTVBVVEVSUwotCQkJCTk5MCBBTE1PTkRPUiBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTU0ICAgKGhleCkJCUNPTk5FQ1RJT04gTUFDSElORVMgU0VSVklDRVMKLTAwNDA1NCAgICAgKGJhc2UgMTYpCQlDT05ORUNUSU9OIE1BQ0hJTkVTIFNFUlZJQ0VTCi0JCQkJMTIgSEVOU0hBVyBTVFJFRVQKLQkJCQlXT0JVUk4gTUEgMDE4MDEtNDY2NjY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC01NSAgIChoZXgpCQlNRVRST05JWCBHTUJICi0wMDQwNTUgICAgIChiYXNlIDE2KQkJTUVUUk9OSVggR01CSAotCQkJCU5FVUUgS05PQ0hFTkhBVUVSU1RSQUJFIDUKLQkJCQlELTMzMDAgQlJBVU5TQ0hXRUlHCi0JCQkJV0VTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC01NiAgIChoZXgpCQlNQ00gSkFQQU4gTFRELgotMDA0MDU2ICAgICAoYmFzZSAxNikJCU1DTSBKQVBBTiBMVEQuCi0JCQkJU1lVVUtBRU4gQkxELiAyLTExLTEKLQkJCQlLT01BWkFXQSBTRVRBR0FZQS1LVSBUT0tZTyAxNTQKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTU3ICAgKGhleCkJCUxPQ0tIRUVEIC0gU0FOREVSUwotMDA0MDU3ICAgICAoYmFzZSAxNikJCUxPQ0tIRUVEIC0gU0FOREVSUwotCQkJCURBTklFTCBXRUJTVEVSIEhJR0hXQVkgU09VVEgKLQkJCQlQLk8uIEJPWCA4NjgKLQkJCQlOQVNIVUEgTkggMDMwNjEtMDg2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNTggICAoaGV4KQkJS1JPTk9TLCBJTkMuCi0wMDQwNTggICAgIChiYXNlIDE2KQkJS1JPTk9TLCBJTkMuCi0JCQkJNDAwIEZJRlRIIEFWRU5VRQotCQkJCVdBTFRIQU0gTUEgMDIxNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTU5ICAgKGhleCkJCVlPU0hJREEgS09HWU8gSy4gSy4KLTAwNDA1OSAgICAgKGJhc2UgMTYpCQlZT1NISURBIEtPR1lPIEsuIEsuCi0JCQkJVEVDSE5JQ0FMIFJFU0VBUkNIIERFUFQuCi0JCQkJMjAwIFlPU0hJREEgS1VST0JFIENJVFkgVE9ZQU1BIFBSRUYuCi0JCQkJOTM5IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtNUEgICAoaGV4KQkJR09MRFNUQVIgSU5GT1JNQVRJT04gJiBDT01NLgotMDA0MDVBICAgICAoYmFzZSAxNikJCUdPTERTVEFSIElORk9STUFUSU9OICYgQ09NTS4KLQkJCQk1MzMsIEhPR0FFLURPTkcsIEFOWUFORy1TSEkKLQkJCQlLWU9OR0tJLURPIDQzMC0wODAKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC00MC01QiAgIChoZXgpCQlGVU5BU1NFVCBMSU1JVEVECi0wMDQwNUIgICAgIChiYXNlIDE2KQkJRlVOQVNTRVQgTElNSVRFRAotCQkJCU9SQ0hBUkRTLCAxNCBUT1dOU0VORAotCQkJCVNPTUVSU0VUIFRBMTkgT0FVIElMTUlOU1RFUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtNUMgICAoaGV4KQkJRlVUVVJFIFNZU1RFTVMsIElOQy4KLTAwNDA1QyAgICAgKGJhc2UgMTYpCQlGVVRVUkUgU1lTVEVNUywgSU5DLgotCQkJCVJPT00gMTAyIERPTkcgQkFORyBCL0QsCi0JCQkJWUVPRyBTQU0tRE9ORyA3NDAtNSwgS0FORyBOQU0tS1UKLQkJCQlTRU9VTCAxMzAtMDgwIFNFT1VMIDEzMC0wODAgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNDAtNUQgICAoaGV4KQkJU1RBUi1URUssIElOQy4KLTAwNDA1RCAgICAgKGJhc2UgMTYpCQlTVEFSLVRFSywgSU5DLgotCQkJCTcxIExZTUFOIFNUUkVFVAotCQkJCU5PUlRIQk9STyBNQSAwMTUzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNUUgICAoaGV4KQkJTk9SVEggSElMTFMgSVNSQUVMCi0wMDQwNUUgICAgIChiYXNlIDE2KQkJTk9SVEggSElMTFMgSVNSQUVMCi0JCQkJUC5PLiBCT1ggMTI4MAotCQkJCVlPS05FQU0gMjA2OTIKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtNDAtNUYgICAoaGV4KQkJQUZFIENPTVBVVEVSUyBMVEQuCi0wMDQwNUYgICAgIChiYXNlIDE2KQkJQUZFIENPTVBVVEVSUyBMVEQuCi0JCQkJNjIgQU5DSE9SQUdFIFJPQUQKLQkJCQlTVVRUT04gQ09MREZJRUxEIFdFU1QgTUlETEFORFMgQjc0IDJQRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtNjAgICAoaGV4KQkJQ09NRU5ERUMgTFRECi0wMDQwNjAgICAgIChiYXNlIDE2KQkJQ09NRU5ERUMgTFRECi0JCQkJRU5URVJQUklTRSBXQVksCi0JCQkJQVNUT04gU0NJRU5DRSBQQVJLLCBBU1RPTiBUUklBTkdMRQotCQkJCUJJUk1JTkdIQU0gQklSTUlOR0hBTSBFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtNjEgICAoaGV4KQkJREFUQVRFQ0ggRU5URVJQUklTRVMgQ08uLCBMVEQuCi0wMDQwNjEgICAgIChiYXNlIDE2KQkJREFUQVRFQ0ggRU5URVJQUklTRVMgQ08uLCBMVEQuCi0JCQkJKExJTiBLT1UgSU5EVVNUUklBTCBaT05FIFNFQyw0Ci0JCQkJMjcsIEhTSS1TSElIIExBS0UgUk9BRCBLVUVJLVNIQU4gSFNJQU5HCi0JCQkJVEFPWVVBTiBDT1VOVFkgVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtNjIgICAoaGV4KQkJRS1TWVNURU1TLCBJTkMuL0dBUkxBTkQgRElWLgotMDA0MDYyICAgICAoYmFzZSAxNikJCUUtU1lTVEVNUywgSU5DLi9HQVJMQU5EIERJVi4KLQkJCQlQLk8uIEJPWCA2NjAwMjMKLQkJCQlNQUlMIFNUT1AgNjMwMDAKLQkJCQlEQUxMQVMgVFggNzUyNjYtMDAyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNjMgICAoaGV4KQkJVklBIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA0MDYzICAgICAoYmFzZSAxNikJCVZJQSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk1MDIwIEJSQU5ESU4gQ09VUlQKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC02NCAgIChoZXgpCQlLTEEgSU5TVFJVTUVOVFMgQ09SUE9SQVRJT04KLTAwNDA2NCAgICAgKGJhc2UgMTYpCQlLTEEgSU5TVFJVTUVOVFMgQ09SUE9SQVRJT04KLQkJCQkxNjAgUklPIFJPQkxFUwotCQkJCVNBTiBKT1NFIENBIDk1MTYxLTkwNTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTY1ICAgKGhleCkJCUdURSBTUEFDRU5FVAotMDA0MDY1ICAgICAoYmFzZSAxNikJCUdURSBTUEFDRU5FVAotCQkJCTE3MDAgT0xEIE1FQURPVyBST0FECi0JCQkJTUNMRUFOIFZBIDIyMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC02NiAgIChoZXgpCQlISVRBQ0hJIENBQkxFLCBMVEQuCi0wMDQwNjYgICAgIChiYXNlIDE2KQkJSElUQUNISSBDQUJMRSwgTFRELgotCQkJCU9QVE8gRUxFQ1RST05JQyBTWVNURU0gTEFCCi0JCQkJODgwIElTQUdPWkFXLUNITywgSElUQUNISS1TSEkgSUJBUkFLSS1LRQotCQkJCTMxOS0xNCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTY3ICAgKGhleCkJCU9NTklCWVRFIENPUlBPUkFUSU9OCi0wMDQwNjcgICAgIChiYXNlIDE2KQkJT01OSUJZVEUgQ09SUE9SQVRJT04KLQkJCQkyNDUgV0VTVCBST09TRVZFTFQgUk9BRAotCQkJCVdFU1QgQ0hJQ0FHTyBJTCA2MDE4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNjggICAoaGV4KQkJRVhURU5ERUQgU1lTVEVNUwotMDA0MDY4ICAgICAoYmFzZSAxNikJCUVYVEVOREVEIFNZU1RFTVMKLQkJCQk2MTIzIE5PUlRIIE1FRUtFUiBBVkVOVUUKLQkJCQlCT0lTRSBJRCA4MzcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNjkgICAoaGV4KQkJTEVNQ09NIFNZU1RFTVMsIElOQy4KLTAwNDA2OSAgICAgKGJhc2UgMTYpCQlMRU1DT00gU1lTVEVNUywgSU5DLgotCQkJCTIxMDQgV0VTVCBQRU9SSUEgQVZFTlVFCi0JCQkJUEhPRU5JWCBBWiA4NTAyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNkEgICAoaGV4KQkJS0VOVEVLIElORk9STUFUSU9OIFNZU1RFTVMsSU5DCi0wMDQwNkEgICAgIChiYXNlIDE2KQkJS0VOVEVLIElORk9STUFUSU9OIFNZU1RFTVMsSU5DCi0JCQkJMjk0NSBXSUxERVJORVNTIFBMQUNFCi0JCQkJQk9VTERFUiBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNkIgICAoaGV4KQkJU1lTR0VOCi0wMDQwNkIgICAgIChiYXNlIDE2KQkJU1lTR0VOCi0JCQkJNTU2IEdJQlJBTFRBUiBEUklWRQotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC02QyAgIChoZXgpCQlDT1BFUk5JUVVFCi0wMDQwNkMgICAgIChiYXNlIDE2KQkJQ09QRVJOSVFVRQotCQkJCTYsIE1BSUwgREUgTCdFVVJPUEUgQlAgMjUKLQkJCQk3ODE3MCBMQSBDRUxMRS1TQUlOVC1DTE9VRAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC00MC02RCAgIChoZXgpCQlMQU5DTywgSU5DLgotMDA0MDZEICAgICAoYmFzZSAxNikJCUxBTkNPLCBJTkMuCi0JCQkJODAwIFdFU1QgQUlSUE9SVCBGUkVFV0FZCi0JCQkJU1VJVEUgIzExMDAKLQkJCQlJUlZJTkcgVFggNzUwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTZFICAgKGhleCkJCUNPUk9MTEFSWSwgSU5DLgotMDA0MDZFICAgICAoYmFzZSAxNikJCUNPUk9MTEFSWSwgSU5DLgotCQkJCTI4MDIgS0VMVklOCi0JCQkJSVJWSU5FIENBIDkyNzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC02RiAgIChoZXgpCQlTWU5DIFJFU0VBUkNIIElOQy4KLTAwNDA2RiAgICAgKGJhc2UgMTYpCQlTWU5DIFJFU0VBUkNIIElOQy4KLQkJCQk3IFNUVURFQkFLRVIKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTcwICAgKGhleCkJCUlOVEVSV0FSRSBDTy4sIExURC4KLTAwNDA3MCAgICAgKGJhc2UgMTYpCQlJTlRFUldBUkUgQ08uLCBMVEQuCi0JCQkJN0YgS1VEQU4gTkVXIENFTlRSQUwgQkxERy4sCi0JCQkJMS00LTUgS1VEQU4tS0lUQSwgQ0hJWU9EQS1LVQotCQkJCVRPS1lPIDEwMiBUT0tZTyAxMDIgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC03MSAgIChoZXgpCQlBVE0gQ09NUFVURVIgR01CSAotMDA0MDcxICAgICAoYmFzZSAxNikJCUFUTSBDT01QVVRFUiBHTUJICi0JCQkJQlVDS0xFU1RSLiAxLTUsUE9TVEZBQ0ggMTAxMDQzCi0JCQkJRDc3NTAgS09OU1RBTloKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC03MiAgIChoZXgpCQlBcHBsaWVkIElubm92YXRpb24gSW5jLgotMDA0MDcyICAgICAoYmFzZSAxNikJCUFwcGxpZWQgSW5ub3ZhdGlvbiBJbmMuCi0JCQkJNTgwMCBJbm5vdmF0aW9uIERyaXZlCi0JCQkJRHVibGluIE9IIDQzMDE2LTMyNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTczICAgKGhleCkJCUJBU1MgQVNTT0NJQVRFUwotMDA0MDczICAgICAoYmFzZSAxNikJCUJBU1MgQVNTT0NJQVRFUwotCQkJCTQzNSBUQVNTTyBTVFJFRVQsIFNURS4gIzMyNQotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNzQgICAoaGV4KQkJQ0FCTEUgQU5EIFdJUkVMRVNTCi0wMDQwNzQgICAgIChiYXNlIDE2KQkJQ0FCTEUgQU5EIFdJUkVMRVNTCi0JCQkJQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxOTE5IEdBTExPV1MgUk9BRAotCQkJCVZJRU5OQSBWQSAyMjE4Mi0zOTY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC03NSAgIChoZXgpCQlNLVRSQURFIChVSykgTFRECi0wMDQwNzUgICAgIChiYXNlIDE2KQkJTS1UUkFERSAoVUspIExURAotCQkJCTExLTEyIE5PUlRIRklFTEQgUFJPU1BFQ1QKLQkJCQlQVVRORVkgQlJJREdFIFJPQUQgTE9ORE9OIFNXMTggMUhSCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC03NiAgIChoZXgpCQlTdW4gQ29udmVyc2lvbiBUZWNobm9sb2dpZXMKLTAwNDA3NiAgICAgKGJhc2UgMTYpCQlTdW4gQ29udmVyc2lvbiBUZWNobm9sb2dpZXMKLQkJCQkxMDAgQ29tbWVyY2UgQm91bGV2YXJkCi0JCQkJUXVha2VydG93biBQQSA3ODk1MS0yMjM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC03NyAgIChoZXgpCQlNQVhUT04gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDA0MDc3ICAgICAoYmFzZSAxNikJCU1BWFRPTiBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJNEZLLCAyNDksIFNFQy4gMywKLQkJCQlDSFVORyBIU0lBTyBFLiBSRC4sIFRBSVBFSQotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtNzggICAoaGV4KQkJV0VBUk5FUyBBVVRPTUFUSU9OIFBURSBMVEQKLTAwNDA3OCAgICAgKGJhc2UgMTYpCQlXRUFSTkVTIEFVVE9NQVRJT04gUFRFIExURAotCQkJCTgwMSBMT1JPTkcgNywgVE9BIFBBWU9ICi0JCQkJU0lOR0FQT1JFIDEyMzEKLQkJCQlTSU5HQVBPUkUKLQotMDAtNDAtNzkgICAoaGV4KQkJSlVLTyBNQU5VRkFDVFVSRSBDT01QQU5ZLCBMVEQuCi0wMDQwNzkgICAgIChiYXNlIDE2KQkJSlVLTyBNQU5VRkFDVFVSRSBDT01QQU5ZLCBMVEQuCi0JCQkJRkxBVCBDLCAzUkQgRkxPT1IsIENEVyBCTERHLgotCQkJCTM4OCBDQVNUTEUgUEVBSyBST0FELCBUU1VFTiBXQU4sIE4uVC4KLQkJCQlIT05HIEtPTkcKLQkJCQlIT05HIEtPTkcKLQotMDAtNDAtN0EgICAoaGV4KQkJU09DSUVURSBEJ0VYUExPSVRBVElPTiBEVSBDTklUCi0wMDQwN0EgICAgIChiYXNlIDE2KQkJU09DSUVURSBEJ0VYUExPSVRBVElPTiBEVSBDTklUCi0JCQkJMiBHTEFDRSBERSBMQSBERUZFTlNFIDkyMDUzCi0JCQkJUEFSSVMtTEEtREVGRU5TRQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC00MC03QiAgIChoZXgpCQlTQ0lFTlRJRklDIEFUTEFOVEEKLTAwNDA3QiAgICAgKGJhc2UgMTYpCQlTQ0lFTlRJRklDIEFUTEFOVEEKLQkJCQlJbmZvcm1hdGlvbiBUZWNobm9sb2d5Ci0JCQkJNDMxMSBDb21tdW5pY2F0aW9ucyBEcml2ZSBNYWlsIENvZGU6ICAzMAotCQkJCU5vcmNyb3NzIEdBIDMwMDkxLTY4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTdDICAgKGhleCkJCVFVTUUgQ09SUE9SQVRJT04KLTAwNDA3QyAgICAgKGJhc2UgMTYpCQlRVU1FIENPUlBPUkFUSU9OCi0JCQkJNTAwIFlPU0VNSVRFIERSSVZFLCBNL1MtMjkKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNS01NDI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC03RCAgIChoZXgpCQlFWFRFTlNJT04gVEVDSE5PTE9HWSBDT1JQLgotMDA0MDdEICAgICAoYmFzZSAxNikJCUVYVEVOU0lPTiBURUNITk9MT0dZIENPUlAuCi0JCQkJMzAgSE9MTElTIFNUUkVFVAotCQkJCUZSQU1JTkdIQU0gTUEgMDE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTdFICAgKGhleCkJCUVWRVJHUkVFTiBTWVNURU1TLCBJTkMuCi0wMDQwN0UgICAgIChiYXNlIDE2KQkJRVZFUkdSRUVOIFNZU1RFTVMsIElOQy4KLQkJCQkxMjAgTEFORElORyBDT1VSVC1TVUlURQotCQkJCU5PVkFUTyBDQSA5NDk0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtN0YgICAoaGV4KQkJRkxJUiBTeXN0ZW1zCi0wMDQwN0YgICAgIChiYXNlIDE2KQkJRkxJUiBTeXN0ZW1zCi0JCQkJQk9YIDMKLQkJCQkxODItMTEgIERBTkRFUllECi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTQwLTgwICAgKGhleCkJCUFUSEVOSVggQ09SUE9SQVRJT04KLTAwNDA4MCAgICAgKGJhc2UgMTYpCQlBVEhFTklYIENPUlBPUkFUSU9OCi0JCQkJNjc1IEFMTUFOT1IgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC04MSAgIChoZXgpCQlNQU5ORVNNQU5OIFNDQU5HUkFQSElDIEdNQkgKLTAwNDA4MSAgICAgKGJhc2UgMTYpCQlNQU5ORVNNQU5OIFNDQU5HUkFQSElDIEdNQkgKLQkJCQlSSVNTRU5FUiBTVFJBU1NFIDExMi0xMTQKLQkJCQlXLTIwMDAgV0VERUwKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC04MiAgIChoZXgpCQlMQUJPUkFUT1JZIEVRVUlQTUVOVCBDT1JQLgotMDA0MDgyICAgICAoYmFzZSAxNikJCUxBQk9SQVRPUlkgRVFVSVBNRU5UIENPUlAuCi0JCQkJMS03LTMgTUlOQVRPTUFDSEkKLQkJCQlUVUNISVVSQS1DSVRZIElCQVJBR0ktS0VOLAotCQkJCTMwMCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTgzICAgKGhleCkJCVREQSBJTkRVU1RSSUEgREUgUFJPRFVUT1MKLTAwNDA4MyAgICAgKGJhc2UgMTYpCQlUREEgSU5EVVNUUklBIERFIFBST0RVVE9TCi0JCQkJRUxFVFJPTklDT1MgUy5BLgotCQkJCVJVRSBBR09TVElOTyBUT0dORVJJLCA5MiAwNDY5MCAtIFNBTyBQQVUKLQkJCQlCUkFaSUwKLQkJCQlCUkFaSUwKLQotMDAtNDAtODQgICAoaGV4KQkJSE9ORVlXRUxMIEFDUwotMDA0MDg0ICAgICAoYmFzZSAxNikJCUhPTkVZV0VMTCBBQ1MKLQkJCQkKLQkJCQk1MTIgVmlyZ2luaWEgRHJpdmUKLQkJCQlGb3J0IFdhc2hpbmd0b24gUEEgMTkwMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTg1ICAgKGhleCkJCVNBQUIgSU5TVFJVTUVOVFMgQUIKLTAwNDA4NSAgICAgKGJhc2UgMTYpCQlTQUFCIElOU1RSVU1FTlRTIEFCCi0JCQkJUC5PLiBCT1ggMTAxNwotCQkJCVMtNTUxIDExIEpPTktPUElORwotCQkJCVNXRURFTgotCi0wMC00MC04NiAgIChoZXgpCQlNSUNIRUxTICYgS0xFQkVSSE9GRiBDT01QVVRFUgotMDA0MDg2ICAgICAoYmFzZSAxNikJCU1JQ0hFTFMgJiBLTEVCRVJIT0ZGIENPTVBVVEVSCi0JCQkJR0FUSEUgMTE3Ci0JCQkJNTYwMCBXVVBQRVJUQUwgMQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLTg3ICAgKGhleCkJCVVCSVRSRVggQ09SUE9SQVRJT04KLTAwNDA4NyAgICAgKGJhc2UgMTYpCQlVQklUUkVYIENPUlBPUkFUSU9OCi0JCQkJMTlUSCBGTE9PUiwgMTU1IENBUkxUT04gU1RSRUVUCi0JCQkJV0lOTklQRUcsIE1BTklUT0JBCi0JCQkJQ0FOQURBIFIzQyAzSDgKLQkJCQlDQU5BREEKLQotMDAtNDAtODggICAoaGV4KQkJTU9CSVVTIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA0MDg4ICAgICAoYmFzZSAxNikJCU1PQklVUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk1ODM1IERPWUxFIFNUUkVFVAotCQkJCUVNRVJZVklMTEUgQ0EgOTQ2MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTg5ICAgKGhleCkJCU1FSURFTlNIQSBDT1JQT1JBVElPTgotMDA0MDg5ICAgICAoYmFzZSAxNikJCU1FSURFTlNIQSBDT1JQT1JBVElPTgotCQkJCUZBQ1RPUlkgTk8uNCwgNTE1IEtBTUlOQUtBTUlaTwotCQkJCUhJR0FTSEkgTUFLQURPIE5VTUFaVS1DSVRZIFNISVpVT0tBLVBSRUYKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLThBICAgKGhleCkJCVRQUyBURUxFUFJPQ0VTU0lORyBTWVMuIEdNQkgKLTAwNDA4QSAgICAgKGJhc2UgMTYpCQlUUFMgVEVMRVBST0NFU1NJTkcgU1lTLiBHTUJICi0JCQkJU0NIV0FERVJNVUNITFNUUkFTU0UgNC04Ci0JCQkJVy04NTAxIENBRE9MWkJVUkcKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC04QiAgIChoZXgpCQlSQVlMQU4gQ09SUE9SQVRJT04KLTAwNDA4QiAgICAgKGJhc2UgMTYpCQlSQVlMQU4gQ09SUE9SQVRJT04KLQkJCQkxMjAgSU5ERVBFTkRFTkNFIERSSVZFCi0JCQkJTUVOTE8gUEFSSyBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOEMgICAoaGV4KQkJQVhJUyBDT01NVU5JQ0FUSU9OUyBBQgotMDA0MDhDICAgICAoYmFzZSAxNikJCUFYSVMgQ09NTVVOSUNBVElPTlMgQUIKLQkJCQlTQ0hFRUxFVkFHRU4gMTYKLQkJCQlTLTIyMyA3MCBMVU5ECi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTQwLThEICAgKGhleCkJCVRIRSBHT09EWUVBUiBUSVJFICYgUlVCQkVSIENPLgotMDA0MDhEICAgICAoYmFzZSAxNikJCVRIRSBHT09EWUVBUiBUSVJFICYgUlVCQkVSIENPLgotCQkJCTExNDQgRUFTVCBNQVJLRVQgU1RSRUVUCi0JCQkJQUtST04gT0ggNDQzMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLThFICAgKGhleCkJCURJR0lMT0csIElOQy4KLTAwNDA4RSAgICAgKGJhc2UgMTYpCQlESUdJTE9HLCBJTkMuCi0JCQkJMjM2MCBNQVJZTEFORCBST0FECi0JCQkJV0lMTE9XIEdST1ZFIFBBIDE5MDkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC04RiAgIChoZXgpCQlXTS1EQVRBIE1JTkZPIEFCCi0wMDQwOEYgICAgIChiYXNlIDE2KQkJV00tREFUQSBNSU5GTyBBQgotCQkJCU9MT0YgQVNLTFVORFMgR0FUQSAxNAotCQkJCUJPWCAyMDY1IDQyMSAwMiBHT1RFQk9SRwotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC00MC05MCAgIChoZXgpCQlBTlNFTCBDT01NVU5JQ0FUSU9OUwotMDA0MDkwICAgICAoYmFzZSAxNikJCUFOU0VMIENPTU1VTklDQVRJT05TCi0JCQkJMTcwMSBKVU5DVElPTiBDT1VSVAotCQkJCVNBTiBKT1NFIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC05MSAgIChoZXgpCQlQUk9DT01QIElORFVTVFJJQSBFTEVUUk9OSUNBCi0wMDQwOTEgICAgIChiYXNlIDE2KQkJUFJPQ09NUCBJTkRVU1RSSUEgRUxFVFJPTklDQQotCQkJCUFWLiBLRU5LSVRJIFNJTU9NT1RPLCA3NjcKLQkJCQkwNTM0NyAtIFNBTyBQQVVMTyAvIFNQCi0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLTQwLTkyICAgKGhleCkJCUFTUCBDT01QVVRFUiBQUk9EVUNUUywgSU5DLgotMDA0MDkyICAgICAoYmFzZSAxNikJCUFTUCBDT01QVVRFUiBQUk9EVUNUUywgSU5DLgotCQkJCTE2MCBTQU4gR0FCUklFTCBEUklWRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOTMgICAoaGV4KQkJUEFYREFUQSBORVRXT1JLUyBMVEQuCi0wMDQwOTMgICAgIChiYXNlIDE2KQkJUEFYREFUQSBORVRXT1JLUyBMVEQuCi0JCQkJQ09NTVVOSUNBVElPTlMgSE9VU0UsCi0JCQkJRlJPR01PUkUgUk9BRCBIRU1FTCBIRU1QU1RFQUQsIEhFUlRTIEhQMwotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC05NCAgIChoZXgpCQlTSE9HUkFQSElDUywgSU5DLgotMDA0MDk0ICAgICAoYmFzZSAxNikJCVNIT0dSQVBISUNTLCBJTkMuCi0JCQkJMTg5MCBOLiBTSE9SRUxJTkUgQkxWRC4KLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC05NSAgIChoZXgpCQlSLlAuVC4gSU5URVJHUk9VUFMgSU5UJ0wgTFRELgotMDA0MDk1ICAgICAoYmFzZSAxNikJCVIuUC5ULiBJTlRFUkdST1VQUyBJTlQnTCBMVEQuCi0JCQkJOUYsIDUwIE1JTiBDSFVBTiBSRAotCQkJCUhTSU4gVElFTiwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTk2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwNDA5NiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC05NyAgIChoZXgpCQlEQVRFWCBESVZJU0lPTiBPRgotMDA0MDk3ICAgICAoYmFzZSAxNikJCURBVEVYIERJVklTSU9OIE9GCi0JCQkJSU5TVFJVTUVOVEFSSVVNIENPUlAuCi0JCQkJUC5PLiBCT1ggNDQ2LCBTRi0wMDEwMSBIRUxTSU5LSQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTQwLTk4ICAgKGhleCkJCURSRVNTTEVSIEdNQkggJiBDTy4KLTAwNDA5OCAgICAgKGJhc2UgMTYpCQlEUkVTU0xFUiBHTUJIICYgQ08uCi0JCQkJS0FDS0VSVFNUUkFTU0UgMTAKLQkJCQlELTUyMDcyIEFBQ0hFTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLTk5ICAgKGhleCkJCU5FV0dFTiBTWVNURU1TIENPUlAuCi0wMDQwOTkgICAgIChiYXNlIDE2KQkJTkVXR0VOIFNZU1RFTVMgQ09SUC4KLQkJCQkxNzU4MCBORVdIT1BFIFNUUkVFVAotCQkJCUZPVU5UQUlOIFZBTExFWSBDQSA5MjcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOUEgICAoaGV4KQkJTkVUV09SSyBFWFBSRVNTLCBJTkMuCi0wMDQwOUEgICAgIChiYXNlIDE2KQkJTkVUV09SSyBFWFBSRVNTLCBJTkMuCi0JCQkJMjIwMCBHUkVFTiBST0FEIC0gU1RFCi0JCQkJQU5OIEFSQk9SIE1JIDQ4MTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC05QiAgIChoZXgpCQlIQUwgQ09NUFVURVIgU1lTVEVNUyBJTkMuCi0wMDQwOUIgICAgIChiYXNlIDE2KQkJSEFMIENPTVBVVEVSIFNZU1RFTVMgSU5DLgotCQkJCTEzMTUgREVMTCBBVkVOVUUKLQkJCQlDQU1QQkVMTCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOUMgICAoaGV4KQkJVFJBTlNXQVJFCi0wMDQwOUMgICAgIChiYXNlIDE2KQkJVFJBTlNXQVJFCi0JCQkJMjEsIFJVRSBEVSA4IE1BSSAxOTQ1Ci0JCQkJOTQxMTA3IEFSQ1VFSUwKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNDAtOUQgICAoaGV4KQkJRElHSUJPQVJELCBJTkMuCi0wMDQwOUQgICAgIChiYXNlIDE2KQkJRElHSUJPQVJELCBJTkMuCi0JCQkJNjQwMCBGTFlJTkcgQ0xPVUQgRFJJVkUKLQkJCQlFREVOIFBSQUlSSUUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTlFICAgKGhleCkJCUNPTkNVUlJFTlQgVEVDSE5PTE9HSUVTICBMVEQuCi0wMDQwOUUgICAgIChiYXNlIDE2KQkJQ09OQ1VSUkVOVCBURUNITk9MT0dJRVMgIExURC4KLQkJCQk2NTQgVEhFIENSRVNDRU5UCi0JCQkJQ09MQ0hFU1RFUiBCVVNJTkVTUyBQQVJLIENPTENIRVNURVIsIEVTUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtOUYgICAoaGV4KQkJVGVsY28gU3lzdGVtcywgSW5jLiAKLTAwNDA5RiAgICAgKGJhc2UgMTYpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuIAotCQkJCTE1IEJlcmtzaGlyZSBSb2FkCi0JCQkJTWFuc2ZpZWxkLCBNQSAwMjA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQTAgICAoaGV4KQkJR09MRFNUQVIgQ08uLCBMVEQuCi0wMDQwQTAgICAgIChiYXNlIDE2KQkJR09MRFNUQVIgQ08uLCBMVEQuCi0JCQkJNiBHQSAzQiBNVU5MQUUgWUVPTkdERVVOR1BPCi0JCQkJU0VPVUwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC00MC1BMSAgIChoZXgpCQlFUkdPIENPTVBVVElORwotMDA0MEExICAgICAoYmFzZSAxNikJCUVSR08gQ09NUFVUSU5HCi0JCQkJT05FIElOVEVSQ09OVElORU5UQUwgV0FZCi0JCQkJUEVBQk9EWSBNQSAwMTk2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQTIgICAoaGV4KQkJS0lOR1NUQVIgVEVDSE5PTE9HWSBJTkMuCi0wMDQwQTIgICAgIChiYXNlIDE2KQkJS0lOR1NUQVIgVEVDSE5PTE9HWSBJTkMuCi0JCQkJMS0zRiwgTk8uIDE4NSwgU0VDLiAzLAotCQkJCUNIRU5HIFRFSCBST0FECi0JCQkJVEFJUEVJIFRBSVdBTiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC1BMyAgIChoZXgpCQlNSUNST1VOSVRZIFNZU1RFTVMgRU5HSU5FRVJJTkcKLTAwNDBBMyAgICAgKGJhc2UgMTYpCQlNSUNST1VOSVRZIFNZU1RFTVMgRU5HSU5FRVJJTkcKLQkJCQkyNTUgQ0FTUElBTiBEUklWRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OS0xMDE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1BNCAgIChoZXgpCQlST1NFIEVMRUNUUk9OSUNTCi0wMDQwQTQgICAgIChiYXNlIDE2KQkJUk9TRSBFTEVDVFJPTklDUwotCQkJCVAuTy4gQk9YIDc0MjU3MQotCQkJCUhPVVNUT04gVFggNzcyNzQtMjU3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQTUgICAoaGV4KQkJQ0xJTklDT01QIElOVEwuCi0wMDQwQTUgICAgIChiYXNlIDE2KQkJQ0xJTklDT01QIElOVEwuCi0JCQkJNDUxMCBFWEVDQ1VUSVZFIERSSVZFLVNURS4jMjAwCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1BNiAgIChoZXgpCQlDcmF5LCBJbmMuCi0wMDQwQTYgICAgIChiYXNlIDE2KQkJQ3JheSwgSW5jLgotCQkJCTY1NUYgTE9ORSBPQUsgRFJJVkUKLQkJCQlFQUdBTiBNTiA1NTEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQTcgICAoaGV4KQkJSVRBVVRFQyBQSElMQ08gUy5BLgotMDA0MEE3ICAgICAoYmFzZSAxNikJCUlUQVVURUMgUEhJTENPIFMuQS4KLQkJCQlHUlVQTyBJVEFVVEVDIFBISUxDTwotCQkJCVJVQSBTQU5UQSBDQVRBUklOQSwgMSAwMzA4Ni0wMjAgU0FPIFBBVUwKLQkJCQlCUkFaSUwKLQkJCQlCUkFaSUwKLQotMDAtNDAtQTggICAoaGV4KQkJSU1GIElOVEVSTkFUSU9OQUwgTFRELgotMDA0MEE4ICAgICAoYmFzZSAxNikJCUlNRiBJTlRFUk5BVElPTkFMIExURC4KLQkJCQlOTy41IDIvRiBLSU5HU0ZPUkQgSU5ELiBDRU5UUkUKLQkJCQkxMyBXQU5HIEhPSSBST0FEIEtPV0xPT04gQkFZLCBLT1dMT09OCi0JCQkJSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLTQwLUE5ICAgKGhleCkJCURBVEFDT00gSU5DLgotMDA0MEE5ICAgICAoYmFzZSAxNikJCURBVEFDT00gSU5DLgotCQkJCTE0NiBISUdIV0FZIFJPVVRFIDM0IC0gU1RFIDI1MAotCQkJCUhPTE1ERUwgTkogMDc3MzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUFBICAgKGhleCkJCVZBTE1FVCBBVVRPTUFUSU9OIElOQy4KLTAwNDBBQSAgICAgKGJhc2UgMTYpCQlWQUxNRVQgQVVUT01BVElPTiBJTkMuCi0JCQkJUC5PLiBCT1ggMjM3Ci0JCQkJU0YtMzMxMDEgVEFNUEVSRQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTQwLUFCICAgKGhleCkJCVJPTEFORCBERyBDT1JQT1JBVElPTgotMDA0MEFCICAgICAoYmFzZSAxNikJCVJPTEFORCBERyBDT1JQT1JBVElPTgotCQkJCTEyMjcgT0tVQk8tQ0hPLCBIQU1BTUFUU1UtU0hJCi0JCQkJU0hJWlVPS0EtS0VOCi0JCQkJNDMyIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtQUMgICAoaGV4KQkJU1VQRVIgV09SS1NUQVRJT04sIElOQy4KLTAwNDBBQyAgICAgKGJhc2UgMTYpCQlTVVBFUiBXT1JLU1RBVElPTiwgSU5DLgotCQkJCTIxOTAgUEFSQUdPTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1BRCAgIChoZXgpCQlTTUEgUkVHRUxTWVNURU1FIEdNQkgKLTAwNDBBRCAgICAgKGJhc2UgMTYpCQlTTUEgUkVHRUxTWVNURU1FIEdNQkgKLQkJCQlIQU5OT1ZFUlNDSEUgU1RSLiAxLTUKLQkJCQlEIDM1MDEgTklFU1RFVEFMCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtQUUgICAoaGV4KQkJREVMVEEgQ09OVFJPTFMsIElOQy4KLTAwNDBBRSAgICAgKGJhc2UgMTYpCQlERUxUQSBDT05UUk9MUywgSU5DLgotCQkJCTEzNTIwIDc4VEggQVZFTlVFCi0JCQkJU1VSUkVZLCBCLkMuCi0JCQkJQ0FOQURBIFYzVyA4SjYKLQkJCQlDQU5BREEKLQotMDAtNDAtQUYgICAoaGV4KQkJRElHSVRBTCBQUk9EVUNUUywgSU5DLgotMDA0MEFGICAgICAoYmFzZSAxNikJCURJR0lUQUwgUFJPRFVDVFMsIElOQy4KLQkJCQk0MTEgV0FWRVJMWSBPQUtTIFJPQUQKLQkJCQlXQUxUSEFNIE1BIDAyMTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1CMCAgIChoZXgpCQlCWVRFWCBDT1JQT1JBVElPTiwgRU5HSU5FRVJJTkcKLTAwNDBCMCAgICAgKGJhc2UgMTYpCQlCWVRFWCBDT1JQT1JBVElPTiwgRU5HSU5FRVJJTkcKLQkJCQkxMzg3MyBQQVJLIENFTlRFUiBST0FECi0JCQkJSEVSTkRPTiBWQSAyMjA3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQjEgICAoaGV4KQkJQ09ET05JQ1MgSU5DLgotMDA0MEIxICAgICAoYmFzZSAxNikJCUNPRE9OSUNTIElOQy4KLQkJCQkxNzk5MSBFTkdMRVdPT0QgRFJJVkUKLQkJCQlNSURETEVCVVJHIEhUUyBPSCA0NDEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQjIgICAoaGV4KQkJU1lTVEVNRk9SU0NIVU5HCi0wMDQwQjIgICAgIChiYXNlIDE2KQkJU1lTVEVNRk9SU0NIVU5HCi0JCQkJS09OSUdTVFJBU1NFIDMzQQotCQkJCTUzMDAgQk9OTiAxCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtQjMgICAoaGV4KQkJUGFyVGVjaCBJbmMuCi0wMDQwQjMgICAgIChiYXNlIDE2KQkJUGFyVGVjaCBJbmMuCi0JCQkJODM4MyBTZW5lY2EgVHVybnBpa2UKLQkJCQlORVcgSEFSVEZPUkQgTlkgMTM0MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUI0ICAgKGhleCkJCU5FWFRDT00gSy5LLgotMDA0MEI0ICAgICAoYmFzZSAxNikJCU5FWFRDT00gSy5LLgotCQkJCTEtMTItMSBTSElCVVlBCi0JCQkJU0hJQlVZQS1LVSwgVE9LWU8sIDE1MAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtQjUgICAoaGV4KQkJVklERU8gVEVDSE5PTE9HWSBDT01QVVRFUlMgTFRECi0wMDQwQjUgICAgIChiYXNlIDE2KQkJVklERU8gVEVDSE5PTE9HWSBDT01QVVRFUlMgTFRECi0JCQkJMzMvRi4sIEJMT0NLICMxLAotCQkJCVRBSSBQSU5HIElORFVTVFJJQUwgQ0VOVEVSIDU3IFRJTkcgS09LIFIKLQkJCQlOLlQuIEhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC00MC1CNiAgIChoZXgpCQlDT01QVVRFUk0gIENPUlBPUkFUSU9OCi0wMDQwQjYgICAgIChiYXNlIDE2KQkJQ09NUFVURVJNICBDT1JQT1JBVElPTgotCQkJCTExMSBXT09EIFNUUkVFVAotCQkJCVBJVFRTQlVSR0ggUEEgMTUyMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUI3ICAgKGhleCkJCVNURUFMVEggQ09NUFVURVIgU1lTVEVNUwotMDA0MEI3ICAgICAoYmFzZSAxNikJCVNURUFMVEggQ09NUFVURVIgU1lTVEVNUwotCQkJCTIzNDEgUkVHSU5BIENULgotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1COCAgIChoZXgpCQlJREVBIEFTU09DSUFURVMKLTAwNDBCOCAgICAgKGJhc2UgMTYpCQlJREVBIEFTU09DSUFURVMKLQkJCQkyOSBEVU5IQU0gUk9BRAotCQkJCUJJTExFUklDQSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQjkgICAoaGV4KQkJTUFDUSBFTEVDVFJPTklRVUUgU0EKLTAwNDBCOSAgICAgKGJhc2UgMTYpCQlNQUNRIEVMRUNUUk9OSVFVRSBTQQotCQkJCVJVRSBERSBMJ0FFUk9ORUYgMgotCQkJCUIgLSAxMTQwIEJSVVNTRUxTCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtNDAtQkEgICAoaGV4KQkJQUxMSUFOVCBDT01QVVRFUiBTWVNURU1TIENPUlAuCi0wMDQwQkEgICAgIChiYXNlIDE2KQkJQUxMSUFOVCBDT01QVVRFUiBTWVNURU1TIENPUlAuCi0JCQkJT05FIE1PTkFSQ0ggRFJJVkUKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUJCICAgKGhleCkJCUdPTERTVEFSIENBQkxFIENPLiwgTFRELgotMDA0MEJCICAgICAoYmFzZSAxNikJCUdPTERTVEFSIENBQkxFIENPLiwgTFRELgotCQkJCTU1NSwgSE9HWUUtRE9ORywgQU5ZQU5HLVNISQotCQkJCUtZVU5HS0ktRE8sIDQzMC0wODAKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC00MC1CQyAgIChoZXgpCQlBTEdPUklUSE1JQ1MgTFRELgotMDA0MEJDICAgICAoYmFzZSAxNikJCUFMR09SSVRITUlDUyBMVEQuCi0JCQkJMyBEUkFZVE9OIFBBUksKLQkJCQlMT05ET04gTjUgMU5VCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLUJEICAgKGhleCkJCVNUQVJMSUdIVCBORVRXT1JLUywgSU5DLgotMDA0MEJEICAgICAoYmFzZSAxNikJCVNUQVJMSUdIVCBORVRXT1JLUywgSU5DLgotCQkJCTQ0NCBDQVNUUk8gU1RSRUVUIFNURQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUJFICAgKGhleCkJCUJPRUlORyBERUZFTlNFICYgU1BBQ0UKLTAwNDBCRSAgICAgKGJhc2UgMTYpCQlCT0VJTkcgREVGRU5TRSAmIFNQQUNFCi0JCQkJUC5PLiBCT1ggMzk5OQotCQkJCU1BSUwgU1RPUCA4OC0xMgotCQkJCVNFQVRUTEUgV0EgOTgxMjQtMjQ5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQkYgICAoaGV4KQkJQ0hBTk5FTCBTWVNURU1TIElOVEVSTidMIElOQy4KLTAwNDBCRiAgICAgKGJhc2UgMTYpCQlDSEFOTkVMIFNZU1RFTVMgSU5URVJOJ0wgSU5DLgotCQkJCTkzIFNPLiBMQSBQQVRFUkEgTEFORQotCQkJCVNBTlRBIEJBUkJBUkEgQ0EgOTMxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUMwICAgKGhleCkJCVZJU1RBIENPTlRST0xTIENPUlBPUkFUSU9OCi0wMDQwQzAgICAgIChiYXNlIDE2KQkJVklTVEEgQ09OVFJPTFMgQ09SUE9SQVRJT04KLQkJCQkyNzgyNSBGUkVNT05UIENPVVJUCi0JCQkJVkFMRU5DSUEgQ0EgOTEzNTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUMxICAgKGhleCkJCUJJWkVSQkEtV0VSS0UgV0lMSEVJTSBLUkFVVAotMDA0MEMxICAgICAoYmFzZSAxNikJCUJJWkVSQkEtV0VSS0UgV0lMSEVJTSBLUkFVVAotCQkJCUdNQkggJiBDTy4gS0csCi0JCQkJV0lMSEVMTS1LUkFVVC1TVFIuIDY1IFAuTy4gQk9YIDEwMDE2NAotCQkJCUQtNzQ2MCBCQUxJTkdFTiBELTc0NjAgQkFMSU5HRU4gR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtQzIgICAoaGV4KQkJQVBQTElFRCBDT01QVVRJTkcgREVWSUNFUwotMDA0MEMyICAgICAoYmFzZSAxNikJCUFQUExJRUQgQ09NUFVUSU5HIERFVklDRVMKLQkJCQlBTEVQSCBQQVJLCi0JCQkJMTAwIFNPVVRIIENBTVBVUyBEUklWRQotCQkJCVRFUlJFIEhBVVRFIElOIDQ3ODAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DMyAgIChoZXgpCQlGSVNDSEVSIEFORCBQT1JURVIgQ08uCi0wMDQwQzMgICAgIChiYXNlIDE2KQkJRklTQ0hFUiBBTkQgUE9SVEVSIENPLgotCQkJCTEyNSBFLiBDT1VOVFkgTElORSBST0FECi0JCQkJV0FSTUlOU1RFUiBQQSAxODk3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQzQgICAoaGV4KQkJS0lOS0VJIFNZU1RFTSBDT1JQT1JBVElPTgotMDA0MEM0ICAgICAoYmFzZSAxNikJCUtJTktFSSBTWVNURU0gQ09SUE9SQVRJT04KLQkJCQkxLTIyLTE3LCBLQU1JS0lUQSwgSElSQU5PS1UKLQkJCQlPU0FLQSwgNTQ3Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC1DNSAgIChoZXgpCQlNSUNPTSBDT01NVU5JQ0FUSU9OUyBJTkMuCi0wMDQwQzUgICAgIChiYXNlIDE2KQkJTUlDT00gQ09NTVVOSUNBVElPTlMgSU5DLgotCQkJCTQxMDAgTE9TIEFOR0VMRVMgQVZFTlVFCi0JCQkJU0lNSSBWQUxMRVkgQ0EgOTMwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUM2ICAgKGhleCkJCUZJQkVSTkVUIFJFU0VBUkNILCBJTkMuCi0wMDQwQzYgICAgIChiYXNlIDE2KQkJRklCRVJORVQgUkVTRUFSQ0gsIElOQy4KLQkJCQkxIFRBUkEgQk9VTEVWQVJELSM0MDUKLQkJCQlOQVNIVUEgTkggMDMwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUM3ICAgKGhleCkJCVJVQlkgVEVDSCBDT1JQT1JBVElPTgotMDA0MEM3ICAgICAoYmFzZSAxNikJCVJVQlkgVEVDSCBDT1JQT1JBVElPTgotCQkJCTZGLTEsIE5PLjMsIExBTkUgMjUwLAotCQkJCVNFQy4gNSBOQU5LSU5HIEUuUk9BRAotCQkJCVRBSVBFSSBUQUlXQU4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtQzggICAoaGV4KQkJTUlMQU4gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDA0MEM4ICAgICAoYmFzZSAxNikJCU1JTEFOIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQk4OTQgUk9TUyBEUklWRS0tU1RFICMxMDUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUM5ICAgKGhleCkJCU5DVUJFCi0wMDQwQzkgICAgIChiYXNlIDE2KQkJTkNVQkUKLQkJCQk5MTkgRUFTVCBISUxMU0RBTEUgQkxWRC4KLQkJCQlTVUlURSAyMDAKLQkJCQlGT1NURVIgQ0lUWSBDQSA5NDQwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQ0EgICAoaGV4KQkJRklSU1QgSU5URVJOQVQnTCBDT01QVVRFUiwgSU5DCi0wMDQwQ0EgICAgIChiYXNlIDE2KQkJRklSU1QgSU5URVJOQVQnTCBDT01QVVRFUiwgSU5DCi0JCQkJRklDIEJ1aWxkaW5nCi0JCQkJTm8gMzAwIFlhbmcgR3VhbmcgU3RyZWV0Ci0JCQkJTmVpaHUgVGFpcGVpIDExNCBUYWlwZWkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC1DQiAgIChoZXgpCQlMQU5XQU4gVEVDSE5PTE9HSUVTCi0wMDQwQ0IgICAgIChiYXNlIDE2KQkJTEFOV0FOIFRFQ0hOT0xPR0lFUwotCQkJCTE1NjYgTEEgUFJBREVSQSBEUklWRQotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DQyAgIChoZXgpCQlTSUxDT00gTUFOVUYnRyBURUNITk9MT0dZIElOQy4KLTAwNDBDQyAgICAgKGJhc2UgMTYpCQlTSUxDT00gTUFOVUYnRyBURUNITk9MT0dZIElOQy4KLQkJCQk1NjIwIFRJTUJFUkxFQSBCT1VMRVZBUkQKLQkJCQlNSVNTSVNTQVVHQSwgT05UQVJJTwotCQkJCUNBTkFEQSBMNFcgNE02Ci0JCQkJQ0FOQURBCi0KLTAwLTQwLUNEICAgKGhleCkJCVRFUkEgTUlDUk9TWVNURU1TLCBJTkMuCi0wMDQwQ0QgICAgIChiYXNlIDE2KQkJVEVSQSBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQkyNTAwIEdSRUFUIEFNRVJJQ0EgUEFSS1dBWQotCQkJCVNURS4gIzI1MAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DRSAgIChoZXgpCQlORVQtU09VUkNFLCBJTkMuCi0wMDQwQ0UgICAgIChiYXNlIDE2KQkJTkVULVNPVVJDRSwgSU5DLgotCQkJCTEyNjUgRUwgQ0FNSU5PIFJFQUwKLQkJCQlTVUlURSAxMDEKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQ0YgICAoaGV4KQkJU1RSQVdCRVJSWSBUUkVFLCBJTkMuCi0wMDQwQ0YgICAgIChiYXNlIDE2KQkJU1RSQVdCRVJSWSBUUkVFLCBJTkMuCi0JCQkJMTYwIFNPVVRIIFdPTEZFIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUQwICAgKGhleCkJCU1JVEFDIElOVEVSTkFUSU9OQUwgQ09SUC4KLTAwNDBEMCAgICAgKGJhc2UgMTYpCQlNSVRBQyBJTlRFUk5BVElPTkFMIENPUlAuCi0JCQkJOFRIIEZMLiA1ODUgTUlORyBTSEVORyBFLiBSRC4KLQkJCQlUQUlQRUkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLUQxICAgKGhleCkJCUZVS1VEQSBERU5TSEkgQ08uLCBMVEQuCi0wMDQwRDEgICAgIChiYXNlIDE2KQkJRlVLVURBIERFTlNISSBDTy4sIExURC4KLQkJCQlSICYgRCBERVBBUlRNRU5UIE5PLiAxCi0JCQkJMzUtOCwgSE9OR08gMi1DSE9NRSwgQlVOS1lPLUtVIFRPS1lPIDExMwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtRDIgICAoaGV4KQkJUEFHSU5FIENPUlBPUkFUSU9OCi0wMDQwRDIgICAgIChiYXNlIDE2KQkJUEFHSU5FIENPUlBPUkFUSU9OCi0JCQkJMTk2MS1BIENPTkNPVVJTRSBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1EMyAgIChoZXgpCQlLSU1QU0lPTiBJTlRFUk5BVElPTkFMIENPUlAuCi0wMDQwRDMgICAgIChiYXNlIDE2KQkJS0lNUFNJT04gSU5URVJOQVRJT05BTCBDT1JQLgotCQkJCTQ3MDEgUEFUUklDSyBIRU5SWSBEUklWRQotCQkJCVNVSVRFIDQwMQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1ENCAgIChoZXgpCQlHQUdFIFRBTEtFUiBDT1JQLgotMDA0MEQ0ICAgICAoYmFzZSAxNikJCUdBR0UgVEFMS0VSIENPUlAuCi0JCQkJMTM2ODAgTkUgMTZUSCBTVFJFRVQKLQkJCQlCRUxMRVZVRSBXQSA5ODAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRDUgICAoaGV4KQkJU2FydG9yaXVzIE1lY2hhdHJvbmljcyBUJkggR21iSCAKLTAwNDBENSAgICAgKGJhc2UgMTYpCQlTYXJ0b3JpdXMgTWVjaGF0cm9uaWNzIFQmSCBHbWJIIAotCQkJCVdFRU5ERVIgTEFORFNUUjogOTQgLSAxMDgKLQkJCQkzNDAwIEdPVFRJTkdFTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLUQ2ICAgKGhleCkJCUxPQ0FNQVRJT04gQi5WLgotMDA0MEQ2ICAgICAoYmFzZSAxNikJCUxPQ0FNQVRJT04gQi5WLgotCQkJCVBPU1RCT1ggMzYwCi0JCQkJNzUwMCBBSiBFTlNDSEVERQotCQkJCUhPTExBTkQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC00MC1ENyAgIChoZXgpCQlTVFVESU8gR0VOIElOQy4KLTAwNDBENyAgICAgKGJhc2UgMTYpCQlTVFVESU8gR0VOIElOQy4KLQkJCQkzLTEyLTggVEFLQU5BV0EgIzIwMgotCQkJCU1JTkFUT0tVLCBUT0tZTyAxMDgKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLUQ4ICAgKGhleCkJCU9DRUFOIE9GRklDRSBBVVRPTUFUSU9OIExURC4KLTAwNDBEOCAgICAgKGJhc2UgMTYpCQlPQ0VBTiBPRkZJQ0UgQVVUT01BVElPTiBMVEQuCi0JCQkJNFRIICYgNVRIIEZMT09SLCBLQURFUiBCTERHLgotCQkJCTIyIEtBSSBDSEVVTkcgUk9BRCBLT1dMT09OIEJBWSwgS09XTE9PTgotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC00MC1EOSAgIChoZXgpCQlBTUVSSUNBTiBNRUdBVFJFTkRTIElOQy4KLTAwNDBEOSAgICAgKGJhc2UgMTYpCQlBTUVSSUNBTiBNRUdBVFJFTkRTIElOQy4KLQkJCQk2MTQ1RiBOIEJFTFQgUEFSS1dBWQotCQkJCU5PUkNST1NTIEdBIDMwMDcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1EQSAgIChoZXgpCQlURUxTUEVDIExURAotMDA0MERBICAgICAoYmFzZSAxNikJCVRFTFNQRUMgTFRECi0JCQkJTEFOQ0FTVEVSIFBBUktFUiBST0FECi0JCQkJUk9DSEVTVEVSIEFJUlBPUlQsIFJPQ0hFU1RFUiBLRU5UIE1FMSAzUQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC1EQiAgIChoZXgpCQlBRFZBTkNFRCBURUNITklDQUwgU09MVVRJT05TCi0wMDQwREIgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgVEVDSE5JQ0FMIFNPTFVUSU9OUwotCQkJCTgwNTAgU0VNSU5PTEUgT0ZGSUNFIENFTlRFUgotCQkJCVNVSVRFIDIxMAotCQkJCVNFTUlOT0xFIEZMIDM0NjQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1EQyAgIChoZXgpCQlUUklURUMgRUxFQ1RST05JQyBHTUJICi0wMDQwREMgICAgIChiYXNlIDE2KQkJVFJJVEVDIEVMRUNUUk9OSUMgR01CSAotCQkJCVJPQkVSVCBLT0NIIFNUUi4gMzUKLQkJCQlENjUwMCBNQUlOWiA0MgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLUREICAgKGhleCkJCUhPTkcgVEVDSE5PTE9HSUVTCi0wMDQwREQgICAgIChiYXNlIDE2KQkJSE9ORyBURUNITk9MT0dJRVMKLQkJCQk1MzIgV0VEREVMTCBEUklWRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtREUgICAoaGV4KQkJRWxzYWcgRGF0YW1hdCBzcGEKLTAwNDBERSAgICAgKGJhc2UgMTYpCQlFbHNhZyBEYXRhbWF0IHNwYQotCQkJCUVMU0FHIFMuUC5BLgotCQkJCVZJQSBHLiBQVUNDSU5JLCAyCi0JCQkJR0VOT1ZBICAxNjE1NAotCQkJCUlUQUxZCi0KLTAwLTQwLURGICAgKGhleCkJCURJR0FMT0cgU1lTVEVNUywgSU5DLgotMDA0MERGICAgICAoYmFzZSAxNikJCURJR0FMT0cgU1lTVEVNUywgSU5DLgotCQkJCTMxODAgU09VVEggMTY2VEggU1RSRUVUCi0JCQkJTkVXIEJFUkxJTiBXSSA1MzE1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRTAgICAoaGV4KQkJQVRPTVdJREUgTFRELgotMDA0MEUwICAgICAoYmFzZSAxNikJCUFUT01XSURFIExURC4KLQkJCQkyMyBUSEUgR1JFRU5XQVkKLQkJCQlPUlBJTkdUT04gQlI1IDJBWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtRTEgICAoaGV4KQkJTUFSTkVSIElOVEVSTkFUSU9OQUwsIElOQy4KLTAwNDBFMSAgICAgKGJhc2UgMTYpCQlNQVJORVIgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTE2MTcgOTNSRCBMQU5FIE5FCi0JCQkJQkxBSU5FIE1OIDU1NDQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1FMiAgIChoZXgpCQlNRVNBIFJJREdFIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA0MEUyICAgICAoYmFzZSAxNikJCU1FU0EgUklER0UgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNjcyNSBNRVNBIFJJREdFIFJPQUQtU1RFIzEwMAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRTMgICAoaGV4KQkJUVVJTiBTWVNURU1TIExURAotMDA0MEUzICAgICAoYmFzZSAxNikJCVFVSU4gU1lTVEVNUyBMVEQKLQkJCQlPQUtMQU5EUyBCVVNJTkVTUyBDRU5UUkUKLQkJCQlPQUtMQU5EUyBQQVJLLCBXT0tJTkdIQU0gQkVSS1MgIFJHMTEgMkZECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC1FNCAgIChoZXgpCQlFLU0gVEVDSE5PTE9HWSwgSU5DLgotMDA0MEU0ICAgICAoYmFzZSAxNikJCUUtTSBURUNITk9MT0dZLCBJTkMuCi0JCQkJOTI0NSBTT1VUSFdFU1QgTklNQlVTIEFWRS4KLQkJCQlCRUFWRVJUT04gT1IgOTcwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUU1ICAgKGhleCkJCVNZQlVTIENPUlBPUkFUSU9OCi0wMDQwRTUgICAgIChiYXNlIDE2KQkJU1lCVVMgQ09SUE9SQVRJT04KLQkJCQkyMzAwIFRBTEwgUElORSBEUklWRS1TVEUuICMxMDAKLQkJCQlMQVJHTyBGTCAzNDY0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRTYgICAoaGV4KQkJQy5BLkUuTi4KLTAwNDBFNiAgICAgKGJhc2UgMTYpCQlDLkEuRS5OLgotCQkJCTIsIENIRU1JTiBMQVRFUkFMCi0JCQkJRjk0MjkwIFZJTExFTkVVVkUgTEUgUk9JCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTQwLUU3ICAgKGhleCkJCUFSTk9TIElOU1RSVU1FTlRTICYgQ09NUFVURVIKLTAwNDBFNyAgICAgKGJhc2UgMTYpCQlBUk5PUyBJTlNUUlVNRU5UUyAmIENPTVBVVEVSCi0JCQkJU1lTVEVNUyAoR1JPVVApIENPLiwgTFRELgotCQkJCTQvRi4sIEVVUkVLQSBJTkQuIEJMREcuLCAxLTE3IFNBSSBMQVUgS08KLQkJCQlUU1VFTiBXQU4gTi5ULiBIT05HIEtPTkcKLQkJCQlIT05HIEtPTkcKLQotMDAtNDAtRTggICAoaGV4KQkJQ0hBUkxFUyBSSVZFUiBEQVRBIFNZU1RFTVMsSU5DCi0wMDQwRTggICAgIChiYXNlIDE2KQkJQ0hBUkxFUyBSSVZFUiBEQVRBIFNZU1RFTVMsSU5DCi0JCQkJOTgzIENPTkNPUkQgU1RSRUVUCi0JCQkJRlJBTUlOR0hBTSBNQSAwMTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRTkgICAoaGV4KQkJQUNDT1JEIFNZU1RFTVMsIElOQy4KLTAwNDBFOSAgICAgKGJhc2UgMTYpCQlBQ0NPUkQgU1lTVEVNUywgSU5DLgotCQkJCTU3MiBWQUxMRVkgV0FZCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUVBICAgKGhleCkJCVBMQUlOIFRSRUUgU1lTVEVNUyBJTkMKLTAwNDBFQSAgICAgKGJhc2UgMTYpCQlQTEFJTiBUUkVFIFNZU1RFTVMgSU5DCi0JCQkJQ0hJRUYgRVhFQ1RVVklFIE9GRklDRVIKLQkJCQk1OSBJQkVSIFJPQUQsIFNUSVRUU1ZJTExFIE9OVEFSSU8gSzJTIDFFCi0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTQwLUVCICAgKGhleCkJCU1BUlRJTiBNQVJJRVRUQSBDT1JQT1JBVElPTgotMDA0MEVCICAgICAoYmFzZSAxNikJCU1BUlRJTiBNQVJJRVRUQSBDT1JQT1JBVElPTgotCQkJCTEyNTA2IExBS0UgVU5ERVJISUxMCi0JCQkJT1JMQU5ETyBGTCAzMjgyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRUMgICAoaGV4KQkJTUlLQVNBIFNZU1RFTSBFTkdJTkVFUklORwotMDA0MEVDICAgICAoYmFzZSAxNikJCU1JS0FTQSBTWVNURU0gRU5HSU5FRVJJTkcKLQkJCQlDTy4sIExURC4KLQkJCQkxLTMtMTAsIE1JTkFNSS1TSElOTUFDSEksIENIVU8tS1UsIE9TQUtBCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC1FRCAgIChoZXgpCQlORVRXT1JLIENPTlRST0xTIElOVCdOQVRMIElOQy4KLTAwNDBFRCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIENPTlRST0xTIElOVCdOQVRMIElOQy4KLQkJCQk5IFdPT0RMQVdOIEdSRUVOCi0JCQkJQ0hBUkxPVFRFIE5DIDI4MjE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1FRSAgIChoZXgpCQlPUFRJTUVNCi0wMDQwRUUgICAgIChiYXNlIDE2KQkJT1BUSU1FTQotCQkJCTI5NyBOLiBCRVJOQVJETyBBVkVOVUUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzLTUyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUVGICAgKGhleCkJCUhZUEVSQ09NLCBJTkMuCi0wMDQwRUYgICAgIChiYXNlIDE2KQkJSFlQRVJDT00sIElOQy4KLQkJCQkyODUxIFdFU1QgS0FUSExFRU4gUk9BRAotCQkJCVBIT0VOSVggQVogODUwMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUYwICAgKGhleCkJCU1pY3JvQnJhaW4sSW5jLgotMDA0MEYwICAgICAoYmFzZSAxNikJCU1pY3JvQnJhaW4sSW5jLgotCQkJCVl1emFuIEJsZGcuIDRGLAotCQkJCTIwNSxLaWJ1dGFrZSxOYWdha3V0ZSYjODIwODsgQ2hvLAotCQkJCUFpY2hpLWd1biBBSUNISSAgNDgwLTExMTcKLQkJCQlKQVBBTgotCi0wMC00MC1GMSAgIChoZXgpCQlDSFVPIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDA0MEYxICAgICAoYmFzZSAxNikJCUNIVU8gRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJMS05LTksIE1PVE9IT05HTy1DSE8KLQkJCQlIQUNISU9KSS1TSEkgVE9LWU8gMTkyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC1GMiAgIChoZXgpCQlKQU5JQ0ggJiBLTEFTUyBDT01QVVRFUlRFQ0hOSUsKLTAwNDBGMiAgICAgKGJhc2UgMTYpCQlKQU5JQ0ggJiBLTEFTUyBDT01QVVRFUlRFQ0hOSUsKLQkJCQlaVU0gQUxURU4gWk9MTEhBVVMgMjAKLQkJCQlXLTU2MDAgV1VQUEVSVEFMIDIKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC1GMyAgIChoZXgpCQlORVRDT1IKLTAwNDBGMyAgICAgKGJhc2UgMTYpCQlORVRDT1IKLQkJCQk4NTAgQVVCVVJOIENPVVJUCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRjQgICAoaGV4KQkJQ0FNRU8gQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwNDBGNCAgICAgKGJhc2UgMTYpCQlDQU1FTyBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTcxIFNQSVRCUk9PSyBST0FELCBTVEUgIzQxMAotCQkJCU5BU0hVQSBOSCAwMzA2MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUY1ICAgKGhleCkJCU9FTSBFTkdJTkVTCi0wMDQwRjUgICAgIChiYXNlIDE2KQkJT0VNIEVOR0lORVMKLQkJCQkxMTkwIERFTEwgQVZFTlVFLCBTVEUuCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUY2ICAgKGhleCkJCUtBVFJPTiBDT01QVVRFUlMgSU5DLgotMDA0MEY2ICAgICAoYmFzZSAxNikJCUtBVFJPTiBDT01QVVRFUlMgSU5DLgotCQkJCTQgRkwuIE5PLiAyLCBBTExFWSAyMwotCQkJCUxBTkUgOTEgU0VDLiAxIE5FSSBIVSBST0FECi0JCQkJVEFJUEVJIFRBSVBFSSBUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLUY3ICAgKGhleCkJCVBvbGFyb2lkIENvcnBvcmF0aW9uCi0wMDQwRjcgICAgIChiYXNlIDE2KQkJUG9sYXJvaWQgQ29ycG9yYXRpb24KLQkJCQkzMDAgQmFrZXIgQXZlbnVlCi0JCQkJQ29uY29yZCBNQSAwMTc0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRjggICAoaGV4KQkJU1lTVEVNSEFVUyBESVNDT00KLTAwNDBGOCAgICAgKGJhc2UgMTYpCQlTWVNURU1IQVVTIERJU0NPTQotCQkJCURJU1RSSUJVVEVEIENPTVBVVElORyBHTUJICi0JCQkJUk9FUk1PTkRFUlNUUi4gNjE1IEQtNTEwMCBBQUNIRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC1GOSAgIChoZXgpCQlDT01CSU5FVAotMDA0MEY5ICAgICAoYmFzZSAxNikJCUNPTUJJTkVUCi0JCQkJMzMzIFcuIEVMIENBTUlOTyBSRUFMLVNURSMzMTAKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUZBICAgKGhleCkJCU1JQ1JPQk9BUkRTLCBJTkMuCi0wMDQwRkEgICAgIChiYXNlIDE2KQkJTUlDUk9CT0FSRFMsIElOQy4KLQkJCQkzMS04LCBUQUtBU0VDSE8sRlVOQUJBU0hJLUNJVFkKLQkJCQlDSElCQSAyNzMgQ0hJQkEgMjczIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtRkIgICAoaGV4KQkJQ0FTQ0FERSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDA0MEZCICAgICAoYmFzZSAxNikJCUNBU0NBREUgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQlQUk9EVUNUSU9OIFFVQUxJVFkgRU5HSU5FRVIKLQkJCQkyMzkgTElUVExFVE9OIFJPQUQtVU5JVCA0QQotCQkJCVdFU1RGT1JEIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1GQyAgIChoZXgpCQlJQlIgQ09NUFVURVIgVEVDSE5JSyBHTUJICi0wMDQwRkMgICAgIChiYXNlIDE2KQkJSUJSIENPTVBVVEVSIFRFQ0hOSUsgR01CSAotCQkJCUZSQU5LRlVSVEVSIFNUUi4gMTE0Ci0JCQkJRCA2MDU2IEhFVVNFTlNUQU1NCi0JCQkJV0VTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC1GRCAgIChoZXgpCQlMWEUKLTAwNDBGRCAgICAgKGJhc2UgMTYpCQlMWEUKLQkJCQkzMDMgUkVTRUFSQ0ggRFJJVkUKLQkJCQlOT1JDUk9TUyBHQSAzMDA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRkUgICAoaGV4KQkJU1lNUExFWCBDT01NVU5JQ0FUSU9OUwotMDA0MEZFICAgICAoYmFzZSAxNikJCVNZTVBMRVggQ09NTVVOSUNBVElPTlMKLQkJCQk1IFJFU0VBUkNIIERSSVZFCi0JCQkJQU5OIEFSQk9SIE1JIDQ4MTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1GRiAgIChoZXgpCQlURUxFQklUIENPUlBPUkFUSU9OCi0wMDQwRkYgICAgIChiYXNlIDE2KQkJVEVMRUJJVCBDT1JQT1JBVElPTgotCQkJCTEzMTUgQ0hFU0FQRUFLRSBURVJSQUNFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5LTExMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQyLTUyICAgKGhleCkJCVJMWCBUZWNobm9sb2dpZXMKLTAwNDI1MiAgICAgKGJhc2UgMTYpCQlSTFggVGVjaG5vbG9naWVzCi0JCQkJMjUyMzEgR3JvZ3JhbnMgTWlsbCBSZAotCQkJCVN1aXRlIDYwMAotCQkJCVRoZSBXb29kbGFuZHMgVHggNzczODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQ1LTAxICAgKGhleCkJCVZlcnN1cyBUZWNobm9sb2d5LCBJbmMuCi0wMDQ1MDEgICAgIChiYXNlIDE2KQkJVmVyc3VzIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyNjAwIE1pbGxlciBDcmVlayBSb2FkCi0JCQkJVHJhdmVyc2UgQ2l0eSBNSSA0OTY4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMDAgICAoaGV4KQkJTkVYTyBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA1MDAwICAgICAoYmFzZSAxNikJCU5FWE8gQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkyTkQgRkwuLCAxNjAsIE1JTkdDSFUgUk9BRAotCQkJCUhTSU5DSFUgQ0lUWSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC0wMSAgIChoZXgpCQlZQU1BU0hJVEEgU1lTVEVNUyBDT1JQLgotMDA1MDAxICAgICAoYmFzZSAxNikJCVlBTUFTSElUQSBTWVNURU1TIENPUlAuCi0JCQkJNS03LTEyIElLRUdBTUkKLQkJCQlPVEEtS1UgVE9LWU8gIAotCQkJCUpBUEFOCi0KLTAwLTUwLTAyICAgKGhleCkJCU9NTklTRUMgQUcKLTAwNTAwMiAgICAgKGJhc2UgMTYpCQlPTU5JU0VDIEFHCi0JCQkJUklFVFNUUkFTU0UgMTQKLQkJCQlDSC04MTA4IERBRUxMSUtPTiAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtNTAtMDMgICAoaGV4KQkJR1JFVEFHIE1BQ0JFVEggQUcKLTAwNTAwMyAgICAgKGJhc2UgMTYpCQlHUkVUQUcgTUFDQkVUSCBBRwotCQkJCUFMVEhBUkRTVFJBU1NFIDcwCi0JCQkJQ0gtODEwNSBSRUdFTlNET1JGICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC01MC0wNCAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMDUwMDQgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQkFZRlJPTlQgUExBWkEKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMDYgICAoaGV4KQkJVEFDIEFCCi0wMDUwMDYgICAgIChiYXNlIDE2KQkJVEFDIEFCCi0JCQkJSkFHRVJTSElMTEdBVE9OIDE4Ci0JCQkJMjEzNzUgTUFMTU8gIAotCQkJCVNXRURFTgotCi0wMC01MC0wNyAgIChoZXgpCQlTSUVNRU5TIFRFTEVDT01NVU5JQ0FUSU9OIFNZU1RFTVMgTElNSVRFRAotMDA1MDA3ICAgICAoYmFzZSAxNikJCVNJRU1FTlMgVEVMRUNPTU1VTklDQVRJT04gU1lTVEVNUyBMSU1JVEVECi0JCQkJTk8uIDkwLCBTRUMuIDEsIENISUVOIEtVTyBOT1JUSCBST0FECi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTA4ICAgKGhleCkJCVRJVkEgTUlDUk9DT01QVVRFUiBDT1JQLiAoVE1DKQotMDA1MDA4ICAgICAoYmFzZSAxNikJCVRJVkEgTUlDUk9DT01QVVRFUiBDT1JQLiAoVE1DKQotCQkJCTQ4NTUwIEZSRU1PTlQgQkxWRC4KLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0wOSAgIChoZXgpCQlQSElMSVBTIEJST0FEQkFORCBORVRXT1JLUwotMDA1MDA5ICAgICAoYmFzZSAxNikJCVBISUxJUFMgQlJPQURCQU5EIE5FVFdPUktTCi0JCQkJNjQgUEVSSU1FVEVSIENFTlRSRSBFQVNUCi0JCQkJQVRMQU5UQSBHQSAzMDM0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMEEgICAoaGV4KQkJSVJJUyBURUNITk9MT0dJRVMsIElOQy4KLTAwNTAwQSAgICAgKGJhc2UgMTYpCQlJUklTIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCVdFU1RNT1JFTEFORCBJTkRVU1JJQUwgUEFSSwotCQkJCVIuUi4gMTIgIEJPWCAzNgotCQkJCUdSRUVOU0JVUkcgUEEgMTU2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTBCICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTAwQiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCU0vUyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTBDICAgKGhleCkJCWUtVGVrIExhYnMsIEluYy4KLTAwNTAwQyAgICAgKGJhc2UgMTYpCQllLVRlayBMYWJzLCBJbmMuCi0JCQkJMTA1NyBFQVNUIEhFTlJJRVRUQSBSRC4KLQkJCQlST0NIRVNURVIgTlkgMTQ2MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTBEICAgKGhleCkJCVNBVE9SSSBFTEVDVE9SSUMgQ08uLCBMVEQuCi0wMDUwMEQgICAgIChiYXNlIDE2KQkJU0FUT1JJIEVMRUNUT1JJQyBDTy4sIExURC4KLQkJCQlUSUdVU0FEQUkgMzgtOCAgTUlET1JJLUtVCi0JCQkJWU9LT0hBTUEsIEtBTkFHQVdBICAKLQkJCQlKQVBBTgotCi0wMC01MC0wRSAgIChoZXgpCQlDSFJPTUFUSVMgTkVUV09SS1MsIElOQy4KLTAwNTAwRSAgICAgKGJhc2UgMTYpCQlDSFJPTUFUSVMgTkVUV09SS1MsIElOQy4KLQkJCQkzIEJFVEhFU0RBIE1FVFJPIENFTlRFUgotCQkJCUJFVEhFU0RBIE1EIDIwODE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0wRiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwMEYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUgLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTEwICAgKGhleCkJCU5vdmFORVQgTGVhcm5pbmcsIEluYy4KLTAwNTAxMCAgICAgKGJhc2UgMTYpCQlOb3ZhTkVUIExlYXJuaW5nLCBJbmMuCi0JCQkJMTI1IFcuIENIVVJDSCBTVFJFRVQtU1RFLiAjMzAwCi0JCQkJQ0hBTVBBSUdOIElMIDYxODIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0xMiAgIChoZXgpCQlDQkwgLSBHTUJICi0wMDUwMTIgICAgIChiYXNlIDE2KQkJQ0JMIC0gR01CSAotCQkJCURBUk1TVEFFRFRFUiBTVFIuIDgxCi0JCQkJRC02NDgzOSBNVUVOU1RFUiAgCi0JCQkJR0VSTUFOWQotCi0wMC01MC0xMyAgIChoZXgpCQlDaGFwYXJyYWwgTmV0d29yayBTdG9yYWdlCi0wMDUwMTMgICAgIChiYXNlIDE2KQkJQ2hhcGFycmFsIE5ldHdvcmsgU3RvcmFnZQotCQkJCTc0MjAgRS4gRHJ5IENyZWVrIFBhcmt3YXkKLQkJCQlMb25nbW9udCBDTyA4MDUwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMTQgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDE0ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQlNL1MvIFNKQS0yCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTE1ICAgKGhleCkJCUJSSUdIVCBTVEFSIEVOR0lORUVSSU5HCi0wMDUwMTUgICAgIChiYXNlIDE2KQkJQlJJR0hUIFNUQVIgRU5HSU5FRVJJTkcKLQkJCQkxOSBFTkZJRUxEIERSSVZFCi0JCQkJQU5ET1ZFUiBNQSAwMTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMTYgICAoaGV4KQkJU1NUL1dPT0RIRUFEIElORFVTVFJJRVMKLTAwNTAxNiAgICAgKGJhc2UgMTYpCQlTU1QvV09PREhFQUQgSU5EVVNUUklFUwotCQkJCTUwIE5PUlRITEFORCBST0FECi0JCQkJV0FURVJMT08KLQkJCQlPTlRBUklPIE4yViAxTjMgIAotCQkJCUNBTkFEQQotCi0wMC01MC0xNyAgIChoZXgpCQlSU1IgUy5SLkwuCi0wMDUwMTcgICAgIChiYXNlIDE2KQkJUlNSIFMuUi5MLgotCQkJCVZJQSBTSU5JR0FHTElBLCAzOAotCQkJCUxVUkFURSBDQUNDSVZJTyAoQ08pCi0JCQkJMjIwNzUgSVRBTFkKLQkJCQlJVEFMWQotCi0wMC01MC0xOCAgIChoZXgpCQlBTUlULCBJbmMuCi0wMDUwMTggICAgIChiYXNlIDE2KQkJQU1JVCwgSW5jLgotCQkJCU5vLjMyLCBIdWFuZ29uZyBSZC4sCi0JCQkJWW9uZ2thbmcgQ2l0eSwgVGFpbmFuIENvdW50eSA3MTA0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtMTkgICAoaGV4KQkJU1BSSU5HIFRJREUgTkVUV09SS1MsIElOQy4KLTAwNTAxOSAgICAgKGJhc2UgMTYpCQlTUFJJTkcgVElERSBORVRXT1JLUywgSU5DLgotCQkJCTg1IFNXQU5TT04gUk9BRAotCQkJCUJPWEJPUk9VR0ggTUEgMDE3MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTFBICAgKGhleCkJCUlRaW5WaXNpb24KLTAwNTAxQSAgICAgKGJhc2UgMTYpCQlJUWluVmlzaW9uCi0JCQkJMzMxMjIgVmFsbGUgUm9hZAotCQkJCVNhbiBKdWFuIENhcGlzdHJhbm8gQ0EgOTI2NzUtNDg1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMUIgICAoaGV4KQkJQUJMIENBTkFEQSwgSU5DLgotMDA1MDFCICAgICAoYmFzZSAxNikJCUFCTCBDQU5BREEsIElOQy4KLQkJCQk4NTUwIENPVEUgREUgTElFU1NFCi0JCQkJU1QtTEFVUkVOVCAoUVVFQkVDKSBINFQgMUgyICAKLQkJCQlDQU5BREEKLQotMDAtNTAtMUMgICAoaGV4KQkJSkFUT00gU1lTVEVNUywgSU5DLgotMDA1MDFDICAgICAoYmFzZSAxNikJCUpBVE9NIFNZU1RFTVMsIElOQy4KLQkJCQk5OSBNSUNIQUVMIENPV1BMQU5EIERSSVZFCi0JCQkJS0FOQVRBCi0JCQkJT05UQVJJTywgSzJNIDFYMyAgCi0JCQkJQ0FOQURBCi0KLTAwLTUwLTFFICAgKGhleCkJCU1pcmFuZGEgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDUwMUUgICAgIChiYXNlIDE2KQkJTWlyYW5kYSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkzNDk5LCBEb3VnbGFzIEIuIEZsb3JlYW5pCi0JCQkJU2FuaXQtTGF1cmVudCwgUUMKLQkJCQlINFMgMkM2IAotCQkJCUNBTkFEQQotCi0wMC01MC0xRiAgIChoZXgpCQlNUkcgU1lTVEVNUywgTFRELgotMDA1MDFGICAgICAoYmFzZSAxNikJCU1SRyBTWVNURU1TLCBMVEQuCi0JCQkJV0lMTE9XIEhPVVNFLCBTTEFEIFJPQUQKLQkJCQlTVFJPVUQKLQkJCQlHTE9TLiAgR0w1IDFRRyBFbmdsYW5kICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC0yMCAgIChoZXgpCQlNRURJQVNUQVIgQ08uLCBMVEQuCi0wMDUwMjAgICAgIChiYXNlIDE2KQkJTUVESUFTVEFSIENPLiwgTFRELgotCQkJCTNGTCwgU09IVU4gQkxERy4KLQkJCQk5NTEtMzMgRE9HT0stRE9ORywgS0FOR05BTS1LVSBTRU9VTAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTUwLTIxICAgKGhleCkJCUVJUyBJTlRFUk5BVElPTkFMLCBJTkMuCi0wMDUwMjEgICAgIChiYXNlIDE2KQkJRUlTIElOVEVSTkFUSU9OQUwsIElOQy4KLQkJCQkxMzUxIFdBU0hJTkdUT04gQkxWRC4KLQkJCQlTVEFNRk9SRCBDVCAwNjkwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMjIgICAoaGV4KQkJWk9ORVQgVEVDSE5PTE9HWSwgSU5DLgotMDA1MDIyICAgICAoYmFzZSAxNikJCVpPTkVUIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk4MzAgUk9PTSwgQkxERy4gNTMsIDE5NSwgU0VDLjQKLQkJCQlDSFVORyBIU0lVTkcgUkQsIENIVVRVTkcKLQkJCQlIU0lOQ0hBICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTIzICAgKGhleCkJCVBHIERFU0lHTiBFTEVDVFJPTklDUywgSU5DLgotMDA1MDIzICAgICAoYmFzZSAxNikJCVBHIERFU0lHTiBFTEVDVFJPTklDUywgSU5DLgotCQkJCTQ4NzAwIFNUUlVDVFVSQUwgRFJJVkUKLQkJCQlDSEVTVEVSRklFTEQgTUkgNDgwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTI0ICAgKGhleCkJCU5BVklDIFNZU1RFTVMsIElOQy4KLTAwNTAyNCAgICAgKGJhc2UgMTYpCQlOQVZJQyBTWVNURU1TLCBJTkMuCi0JCQkJNzQgQ1JFU0NFTlQgU1RSRUVUCi0JCQkJTkVFREhBTSBNQQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMjYgICAoaGV4KQkJQ09TWVNURU1TLCBJTkMuCi0wMDUwMjYgICAgIChiYXNlIDE2KQkJQ09TWVNURU1TLCBJTkMuCi0JCQkJMTI2MyBPQUtNRUFEIFBBUktXQVkKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTI3ICAgKGhleCkJCUdFTklDT00gQ09SUE9SQVRJT04KLTAwNTAyNyAgICAgKGJhc2UgMTYpCQlHRU5JQ09NIENPUlBPUkFUSU9OCi0JCQkJOTAwIENMT1BQRVIgUk9BRCAtIFNURS4gIzExMAotCQkJCUdBSVRIRVJTQlVSRyBNRCAyMDg3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMjggICAoaGV4KQkJQVZBTCBDT01NVU5JQ0FUSU9OUwotMDA1MDI4ICAgICAoYmFzZSAxNikJCUFWQUwgQ09NTVVOSUNBVElPTlMKLQkJCQkxNzc3IE5PUlRIIENBTElGT1JOSUEgQkxWRC4KLQkJCQlXQUxOVVQgQ1JFRUsgQ0EgOTQ1OTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTI5ICAgKGhleCkJCTEzOTQgUFJJTlRFUiBXT1JLSU5HIEdST1VQCi0wMDUwMjkgICAgIChiYXNlIDE2KQkJMTM5NCBQUklOVEVSIFdPUktJTkcgR1JPVVAKLQkJCQlQLk8uIEJPWCAyMzE1OAotCQkJCVNBTiBKT1NFIENBIDk1MTUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0yQSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwMkEgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCU0vUyBTSkEtMgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0yQiAgIChoZXgpCQlHRU5SQUQgTFRELgotMDA1MDJCICAgICAoYmFzZSAxNikJCUdFTlJBRCBMVEQuCi0JCQkJT1JJT04gQlVTSU5FU1MgUEFSSwotCQkJCUJJUkRIQUxMIExBTkUgU1RPQ0tQT1JULCBDSEVTSElSRQotCQkJCVVOSVRFRCBLSU5HRE9NIFNLMyBPWEcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC0yQyAgIChoZXgpCQlTT1lPIENPTVBVVEVSLCBJTkMuCi0wMDUwMkMgICAgIChiYXNlIDE2KQkJU09ZTyBDT01QVVRFUiwgSU5DLgotCQkJCU5PLiAyMSBXVS1LVU5HIDUgUkQuCi0JCQkJSFNJTkcgQ0hVQU5HIENJVFkgVEFJUEVJIEhTSUVOCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTJEICAgKGhleCkJCUFDQ0VMLCBJTkMuCi0wMDUwMkQgICAgIChiYXNlIDE2KQkJQUNDRUwsIElOQy4KLQkJCQkxRiwgTk8uIDcsIFImRCAxU1QgUk9BRAotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC0yRSAgIChoZXgpCQlDQU1CRVggQ09SUE9SQVRJT04KLTAwNTAyRSAgICAgKGJhc2UgMTYpCQlDQU1CRVggQ09SUE9SQVRJT04KLQkJCQkxMTUgRmxhbmRlcnMgUm9hZAotCQkJCVdlc3Rib3JvdWdoIE1BIDAxNTgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0yRiAgIChoZXgpCQlUb2xsQnJpZGdlIFRlY2hub2xvZ2llcywgSW5jLgotMDA1MDJGICAgICAoYmFzZSAxNikJCVRvbGxCcmlkZ2UgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJODcyIEhFUk1PU0EgRFJJVkUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTMwICAgKGhleCkJCUZVVFVSRSBQTFVTIFNZU1RFTVMKLTAwNTAzMCAgICAgKGJhc2UgMTYpCQlGVVRVUkUgUExVUyBTWVNURU1TCi0JCQkJMzYgT0xERSBFTkdMSVNIIFJELgotCQkJCUJFREZPUkQgTkggMDMxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTMxICAgKGhleCkJCUFFUk9GTEVYIExBQk9SQVRPUklFUywgSU5DLgotMDA1MDMxICAgICAoYmFzZSAxNikJCUFFUk9GTEVYIExBQk9SQVRPUklFUywgSU5DLgotCQkJCTM1IFNPVVRIIFNFUlZJQ0UgUk9BRAotCQkJCVBMQUlOVklFVyBOWSAxMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMzIgICAoaGV4KQkJUElDQVpPIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDUwMzIgICAgIChiYXNlIDE2KQkJUElDQVpPIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNjEgREFHR0VUVCBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zMyAgIChoZXgpCQlNQVlBTiBORVRXT1JLUwotMDA1MDMzICAgICAoYmFzZSAxNikJCU1BWUFOIE5FVFdPUktTCi0JCQkJMzM1MCBTQ09UVCBCTFZELiAtIEJMREcuICM5Ci0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTM2ICAgKGhleCkJCU5FVENBTSwgTFRELgotMDA1MDM2ICAgICAoYmFzZSAxNikJCU5FVENBTSwgTFRELgotCQkJCTYwNzEgTi4gUEFTRU8gWkFMRElWQVIKLQkJCQlUVUNTT04gQVogODU3NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTM3ICAgKGhleCkJCUtPR0EgRUxFQ1RST05JQ1MgQ08uCi0wMDUwMzcgICAgIChiYXNlIDE2KQkJS09HQSBFTEVDVFJPTklDUyBDTy4KLQkJCQk1LTgtMTAsIFRFSEFSQSwgUklUVE8tQ0hPCi0JCQkJS1VSSVRBIEdVTgotCQkJCVNISUdBLCA0MjAtMzA0NyAgCi0JCQkJSkFQQU4KLQotMDAtNTAtMzggICAoaGV4KQkJREFJTiBURUxFQ09NIENPLiwgTFRELgotMDA1MDM4ICAgICAoYmFzZSAxNikJCURBSU4gVEVMRUNPTSBDTy4sIExURC4KLQkJCQkyTkQgRmxyLiwgT0gtU1VORyBCTERHLiAjMi0yOAotCQkJCVlBTkdKQUUtRE9ORywgU0VPQ0hPLUdVIFNFT1VMIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC01MC0zOSAgIChoZXgpCQlNQVJJTkVSIE5FVFdPUktTCi0wMDUwMzkgICAgIChiYXNlIDE2KQkJTUFSSU5FUiBORVRXT1JLUwotCQkJCTE1ODUgUy4gTUFOQ0hFU1RFUiBBVkUuCi0JCQkJQU5BSEVJTSBDQSA5MjgwMi0yOTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zQSAgIChoZXgpCQlEQVRPTkcgRUxFQ1RST05JQ1MgTFRELgotMDA1MDNBICAgICAoYmFzZSAxNikJCURBVE9ORyBFTEVDVFJPTklDUyBMVEQuCi0JCQkJQ0xBWVRPTiBXT09EIENMT1NFCi0JCQkJV0VTVCBQQVJLCi0JCQkJTGVlZHMgTFMxNiA2UUUgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTUwLTNCICAgKGhleCkJCU1FRElBRklSRSBDT1JQT1JBVElPTgotMDA1MDNCICAgICAoYmFzZSAxNikJCU1FRElBRklSRSBDT1JQT1JBVElPTgotCQkJCTExMzE3IEZSRURFUklDSyBBVkVOVUUKLQkJCQlCRUxUU1ZJTExFIE1EIDIwNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zQyAgIChoZXgpCQlUU0lOR0hVQSBOT1ZFTCBFTEVDVFJPTklDUwotMDA1MDNDICAgICAoYmFzZSAxNikJCVRTSU5HSFVBIE5PVkVMIEVMRUNUUk9OSUNTCi0JCQkJQ08uLCBMVEQuCi0JCQkJUk9PTSAxMjA1LCBIVUFZRSBCVUlMRElORyBUU0lOR0hVQSBVTklWRQotCQkJCTEwMDA4NCAxMDAwODQgQ0hJTkEKLQkJCQlDSElOQQotCi0wMC01MC0zRSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwM0UgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlNL1MvIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtM0YgICAoaGV4KQkJQU5DSE9SIEdBTUVTCi0wMDUwM0YgICAgIChiYXNlIDE2KQkJQU5DSE9SIEdBTUVTCi0JCQkJODE1IFBJTE9UIFJPQUQsIFN1aXRlIEcKLQkJCQlMQVMgVkVHQVMgTlYgODkxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTQwICAgKGhleCkJCVBhbmFzb25pYyBFbGVjdHJpYyBXb3JrcyBDby4sIEx0ZC4KLTAwNTA0MCAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgRWxlY3RyaWMgV29ya3MgQ28uLCBMdGQuCi0JCQkJVHN1LUZhY3RvcnksIDE2NjgsIEZ1amlrYXRhCi0JCQkJVHN1LXNoaSBNaWUta2VuIDUxNC04NTU1Ci0JCQkJSkFQQU4KLQotMDAtNTAtNDEgICAoaGV4KQkJQ29yZXRyb25pYyBDb3Jwb3JhdGlvbgotMDA1MDQxICAgICAoYmFzZSAxNikJCUNvcmV0cm9uaWMgQ29ycG9yYXRpb24KLQkJCQlOTy4xMSwgTEkgSFNJTiBSRC4KLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSyBISVNOQ0hVCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC00MiAgIChoZXgpCQlTQ0kgTUFOVUZBQ1RVUklORyBTSU5HQVBPUkUgUFRFLCBMVEQuCi0wMDUwNDIgICAgIChiYXNlIDE2KQkJU0NJIE1BTlVGQUNUVVJJTkcgU0lOR0FQT1JFIFBURSwgTFRELgotCQkJCTMgREVQT1QgQ0xPU0UKLQkJCQlTSU5HQVBPUkUgMTA5ODQwIAotCQkJCVNJTkdBUE9SRQotCi0wMC01MC00MyAgIChoZXgpCQlNQVJWRUxMIFNFTUlDT05EVUNUT1IsIElOQy4KLTAwNTA0MyAgICAgKGJhc2UgMTYpCQlNQVJWRUxMIFNFTUlDT05EVUNUT1IsIElOQy4KLQkJCQk2NDUgQUxNQU5PUiBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTQ0ICAgKGhleCkJCUFTQUNBIENPUlBPUkFUSU9OCi0wMDUwNDQgICAgIChiYXNlIDE2KQkJQVNBQ0EgQ09SUE9SQVRJT04KLQkJCQk0MjAgQ09SUE9SQVRFIENJUkNMRSwgVW5pdCBICi0JCQkJR09MREVOIENPIDgwNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC00NSAgIChoZXgpCQlSSU9XT1JLUyBTT0xVVElPTlMsIElOQy4KLTAwNTA0NSAgICAgKGJhc2UgMTYpCQlSSU9XT1JLUyBTT0xVVElPTlMsIElOQy4KLQkJCQk0RiwgTk8uMjgsIExBTkUgNTgzCi0JCQkJSlVJLUtXQU5HIFJPQUQgVEFJUEVJLCAgMTE0NTcKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtNDYgICAoaGV4KQkJTUVOSUNYIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0wMDUwNDYgICAgIChiYXNlIDE2KQkJTUVOSUNYIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0JCQkJTk8uOSwgTUlORyBUU1VOIFJPQUQKLQkJCQlDSFVUVU5HLCBIU0lOQ0hVCi0JCQkJVEFJV0FOIDMxMCBUQUlXQU4gMzEwIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtNDcgICAoaGV4KQkJUFJJVkFURQotMDA1MDQ3ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC01MC00OCAgIChoZXgpCQlJTkZPTElCUklBCi0wMDUwNDggICAgIChiYXNlIDE2KQkJSU5GT0xJQlJJQQotCQkJCTQxMSBXQVZFUkxZIE9BS1MgUkQtU1RFICMzMjMKLQkJCQlXQUxUSEFNIE1BIDAyMTU0LTg0MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTQ5ICAgKGhleCkJCUFyYm9yIE5ldHdvcmtzIEluYwotMDA1MDQ5ICAgICAoYmFzZSAxNikJCUFyYm9yIE5ldHdvcmtzIEluYwotCQkJCTYgT21uaSBXYXkKLQkJCQlDaGVsbXNmb3JkIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC00QSAgIChoZXgpCQlFTFRFQ08gQS5TLgotMDA1MDRBICAgICAoYmFzZSAxNikJCUVMVEVDTyBBLlMuCi0JCQkJUk9TSU5TS0EgQ0VTVEEgIFAuTy4gQk9YIEMtOQotCQkJCTAxMDAxIFpJTElOQQotCQkJCVNMT1ZBS0lBCi0JCQkJU0xPVkFLSUEKLQotMDAtNTAtNEIgICAoaGV4KQkJQkFSQ09ORVQgTi5WLgotMDA1MDRCICAgICAoYmFzZSAxNikJCUJBUkNPTkVUIE4uVi4KLQkJCQlMVUlQQUFSRFNUUkFBVCAxMgotCQkJCTg1MDAgS09SVFJJSksKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC01MC00QyAgIChoZXgpCQlHYWxpbCBNb3Rpb24gQ29udHJvbAotMDA1MDRDICAgICAoYmFzZSAxNikJCUdhbGlsIE1vdGlvbiBDb250cm9sCi0JCQkJMjcwIFRlY2hub2xvZ3kgV2F5Ci0JCQkJUm9ja2xpbiBDQSA5NTc2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNEQgICAoaGV4KQkJVG9reW8gRWxlY3Ryb24gRGV2aWNlIExpbWl0ZWQKLTAwNTA0RCAgICAgKGJhc2UgMTYpCQlUb2t5byBFbGVjdHJvbiBEZXZpY2UgTGltaXRlZAotCQkJCTEsIEhpZ2FzaGlrYXRhLW1hY2hpLCBUc3V6dWtpLWt1LAotCQkJCVlva29oYW1hLXNoaSBLYW5hZ2F3YS1rZW4gCi0JCQkJSkFQQU4KLQotMDAtNTAtNEUgICAoaGV4KQkJU0lFUlJBIE1PTklUT1IgQ09SUC4KLTAwNTA0RSAgICAgKGJhc2UgMTYpCQlTSUVSUkEgTU9OSVRPUiBDT1JQLgotCQkJCTE5OTEgVEFST0IgQ09VUlQKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNEYgICAoaGV4KQkJT0xFTkNPTSBFTEVDVFJPTklDUwotMDA1MDRGICAgICAoYmFzZSAxNikJCU9MRU5DT00gRUxFQ1RST05JQ1MKLQkJCQlTT0xUQU0gSU5EVVNUUklBTCBQQVJLCi0JCQkJUC5PLiBCT1ggMTk2Ci0JCQkJWU9LTkVBTSAyMDY5MiAgCi0JCQkJSVNSQUVMCi0KLTAwLTUwLTUwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTA1MCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRS0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC01MSAgIChoZXgpCQlJV0FUU1UgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDUwNTEgICAgIChiYXNlIDE2KQkJSVdBVFNVIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTctNDEsIEtVR0FZQU1BIDEtQ0hPTUUKLQkJCQlTVUdJTkFNSS1LVSwgVE9LWU8gMTY4LTg1MDEgIAotCQkJCUpBUEFOCi0KLTAwLTUwLTUyICAgKGhleCkJCVRJQVJBIE5FVFdPUktTLCBJTkMuCi0wMDUwNTIgICAgIChiYXNlIDE2KQkJVElBUkEgTkVUV09SS1MsIElOQy4KLQkJCQkxMTMgRk9PUklFUiBBVkVOVUUKLQkJCQlGUkVNT05UIENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC01MyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwNTMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUtU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC01NCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwNTQgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCU0vUyBTSkEtMgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC01NSAgIChoZXgpCQlET01TIEEvUwotMDA1MDU1ICAgICAoYmFzZSAxNikJCURPTVMgQS9TCi0JCQkJRk9STUVSVkFOR0VOIDI4Ci0JCQkJREstMjYwMCBHTE9TVFJVUAotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLTUwLTU2ICAgKGhleCkJCVZNd2FyZSwgSW5jLgotMDA1MDU2ICAgICAoYmFzZSAxNikJCVZNd2FyZSwgSW5jLgotCQkJCTM0MDEgSGlsbHZpZXcgQXZlbnVlCi0JCQkJUEFMTyBBTFRPIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC01NyAgIChoZXgpCQlCUk9BREJBTkQgQUNDRVNTIFNZU1RFTVMKLTAwNTA1NyAgICAgKGJhc2UgMTYpCQlCUk9BREJBTkQgQUNDRVNTIFNZU1RFTVMKLQkJCQkyMDEgRk9SRVNUIFNUUkVFVAotCQkJCU1BUkxCT1JPVUdIIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC01OCAgIChoZXgpCQlWZWdhU3RyZWFtIEdyb3VwIExpbXRlZAotMDA1MDU4ICAgICAoYmFzZSAxNikJCVZlZ2FTdHJlYW0gR3JvdXAgTGltdGVkCi0JCQkJQXNtZWMgQ2VudHJlLCBFYWdsZSBIb3VzZQotCQkJCVRoZSBSaW5nCi0JCQkJQnJhY2tuZWxsIEJlcmtzaGlyZSBSRzEyIDFIQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTUwLTU5ICAgKGhleCkJCWlCQUhOCi0wMDUwNTkgICAgIChiYXNlIDE2KQkJaUJBSE4KLQkJCQkxMDc1NyBTLiBSaXZlciBGcm9udCBQYXJrd2F5Ci0JCQkJU3VpdGUgMzAwCi0JCQkJU291dGggSm9yZGFuIFVUIDg0MDk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC01QSAgIChoZXgpCQlORVRXT1JLIEFMQ0hFTVksIElOQy4KLTAwNTA1QSAgICAgKGJhc2UgMTYpCQlORVRXT1JLIEFMQ0hFTVksIElOQy4KLQkJCQkxNTIxLjUgUEFDSUZJQyBBVkVOVUUKLQkJCQlTQU5UQSBDUlVaIENBIDk1MDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC01QiAgIChoZXgpCQlLQVdBU0FLSSBMU0kgVS5TLkEuLCBJTkMuCi0wMDUwNUIgICAgIChiYXNlIDE2KQkJS0FXQVNBS0kgTFNJIFUuUy5BLiwgSU5DLgotCQkJCTI1NzAgTk9SVEhGSVJTVCBTVFJFRVQKLQkJCQlTVUlURSAjMzAxCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTVDICAgKGhleCkJCVRVTkRPIENPUlBPUkFUSU9OCi0wMDUwNUMgICAgIChiYXNlIDE2KQkJVFVORE8gQ09SUE9SQVRJT04KLQkJCQk3IEdJQk9SRUkgSVNSQUVMIFNUUkVFVAotCQkJCU5BVEFOWUEgNDI1MDQgIAotCQkJCUlTUkFFTAotCi0wMC01MC01RSAgIChoZXgpCQlESUdJVEVLIE1JQ1JPTE9HSUMgUy5BLgotMDA1MDVFICAgICAoYmFzZSAxNikJCURJR0lURUsgTUlDUk9MT0dJQyBTLkEuCi0JCQkJU0FOVCBKT0FOIERFIExBIFNBTExFIDYKLQkJCQlFMDgwMjIgQkFSQ0VMT05BCi0JCQkJU1BBSU4KLQkJCQlTUEFJTgotCi0wMC01MC01RiAgIChoZXgpCQlCUkFORCBJTk5PVkFUT1JTCi0wMDUwNUYgICAgIChiYXNlIDE2KQkJQlJBTkQgSU5OT1ZBVE9SUwotCQkJCURFIFBJTkNLIEFSVCA1NAotCQkJCTU2NzQgQ0MgTlVFTkVOICAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC01MC02MCAgIChoZXgpCQlUQU5EQkVSRyBURUxFQ09NIEFTCi0wMDUwNjAgICAgIChiYXNlIDE2KQkJVEFOREJFUkcgVEVMRUNPTSBBUwotCQkJCVBoaWxpcCBQZWRlcnNlbnMgdmVpIDIwCi0JCQkJMTM2MSBMeXNha2VyIAotCQkJCU5PUldBWQotCi0wMC01MC02MiAgIChoZXgpCQlLT1VXRUxMIEVMRUNUUk9OSUNTIENPUlAuICAqKgotMDA1MDYyICAgICAoYmFzZSAxNikJCUtPVVdFTEwgRUxFQ1RST05JQ1MgQ09SUC4gICoqCi0JCQkJN0YsIE5PLjk5LCBOQU4tS0FORyBST0FECi0JCQkJU0VDLiAzLCBUQUlQRUkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTYzICAgKGhleCkJCU9ZIENPTVNFTCBTWVNURU0gQUIKLTAwNTA2MyAgICAgKGJhc2UgMTYpCQlPWSBDT01TRUwgU1lTVEVNIEFCCi0JCQkJVEVHRUxCUlVLU0dBVEFOIDUtNwotCQkJCUZJTi02NTEwMCBWQVNBICAKLQkJCQlGSU5MQU5ECi0KLTAwLTUwLTY0ICAgKGhleCkJCUNBRSBFTEVDVFJPTklDUwotMDA1MDY0ICAgICAoYmFzZSAxNikJCUNBRSBFTEVDVFJPTklDUwotCQkJCVAuTy4gQk9YIDE4MDAKLQkJCQlTVC4gTEFVUkVOVCwgUVVFQkVDIEg0TCA0WDQgIAotCQkJCUNBTkFEQQotCi0wMC01MC02NSAgIChoZXgpCQlUREstTGFtYmRhIENvcnBvcmF0aW9uCi0wMDUwNjUgICAgIChiYXNlIDE2KQkJVERLLUxhbWJkYSBDb3Jwb3JhdGlvbgotCQkJCTM2LTEgS2FzdW1pbm9zYXRvCi0JCQkJQW1pLU1hY2hpIEluYXNoaWtpLUd1biBJYmFyYWtpLCAzMDAtMDM5NgotCQkJCUpBUEFOCi0KLTAwLTUwLTY2ICAgKGhleCkJCUF0ZWNvTSBHbWJIIGFkdmFuY2VkIHRlbGVjb211bmljYXRpb24gbW9kdWxlcwotMDA1MDY2ICAgICAoYmFzZSAxNikJCUF0ZWNvTSBHbWJIIGFkdmFuY2VkIHRlbGVjb211bmljYXRpb24gbW9kdWxlcwotCQkJCUtBSVNFUlNUUi4gMTAwCi0JCQkJRC01MjEzNCBIRVJaT0dFTlJBVEggIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtNjcgICAoaGV4KQkJQUVST0NPTU0sIElOQy4KLTAwNTA2NyAgICAgKGJhc2UgMTYpCQlBRVJPQ09NTSwgSU5DLgotCQkJCTEzMjU2IFcuIDk4VEggU1RSRUVUCi0JCQkJTEVORVhBIEtTIDY2MjE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC02OCAgIChoZXgpCQlFTEVDVFJPTklDIElORFVTVFJJRVMgQVNTT0NJQVRJT04KLTAwNTA2OCAgICAgKGJhc2UgMTYpCQlFTEVDVFJPTklDIElORFVTVFJJRVMgQVNTT0NJQVRJT04KLQkJCQkyNTAwIFdJTFNPTiBCTFZELgotCQkJCUFSTElOR1RPTiBWQSAyMjIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNjkgICAoaGV4KQkJUGl4U3RyZWFtIEluY29ycG9yYXRlZAotMDA1MDY5ICAgICAoYmFzZSAxNikJCVBpeFN0cmVhbSBJbmNvcnBvcmF0ZWQKLQkJCQkxODAgQ09MVU1CSUEgU1QuIFcuCi0JCQkJV0FURVJMT08KLQkJCQlPbnRhcmlvIE4yTCAzTDMgIAotCQkJCUNBTkFEQQotCi0wMC01MC02QSAgIChoZXgpCQlFREVWQSwgSU5DLgotMDA1MDZBICAgICAoYmFzZSAxNikJCUVERVZBLCBJTkMuCi0JCQkJMjk4IFMuIFNVTk5ZVkFMRSBBVkUuIC0gIzIwOAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNkIgICAoaGV4KQkJU1BYLUFURUcKLTAwNTA2QiAgICAgKGJhc2UgMTYpCQlTUFgtQVRFRwotCQkJCTgwMiBTLiBNQUlOIFNUUkVFVAotCQkJCVdBWUxBTkQgTUkgNDkzNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTZDICAgKGhleCkJCUJlaWplciBFbGVjdHJvbmljcyBQcm9kdWN0cyBBQgotMDA1MDZDICAgICAoYmFzZSAxNikJCUJlaWplciBFbGVjdHJvbmljcyBQcm9kdWN0cyBBQgotCQkJCUJveCA0MjYKLQkJCQlTRS0yMDEgMjQgTWFsbW9lIAotCQkJCVNXRURFTgotCi0wMC01MC02RCAgIChoZXgpCQlWSURFT0pFVCBTWVNURU1TCi0wMDUwNkQgICAgIChiYXNlIDE2KQkJVklERU9KRVQgU1lTVEVNUwotCQkJCUlOVEVSTkFUSU9OQUwgSU5DLgotCQkJCTE1MDAgTUlUVEVMIEJMVkQuCi0JCQkJV09PRERBTEUgSUwgNjAwOTEtMTA3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNkUgICAoaGV4KQkJQ09SREVSIEVOR0lORUVSSU5HIENPUlBPUkFUSU9OCi0wMDUwNkUgICAgIChiYXNlIDE2KQkJQ09SREVSIEVOR0lORUVSSU5HIENPUlBPUkFUSU9OCi0JCQkJMTUxIEtBTE1VUyBEUklWRSAtIFNURSAjQTEwMwotCQkJCUNPU1RBIE1FU0EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTZGICAgKGhleCkJCUctQ09OTkVDVAotMDA1MDZGICAgICAoYmFzZSAxNikJCUctQ09OTkVDVAotCQkJCVAuTy4gQk9YIDIyMDAKLQkJCQlIRVJaTElZQSA0NjEyMCAgCi0JCQkJSVNSQUVMCi0KLTAwLTUwLTcwICAgKGhleCkJCUNIQUlOVEVDSCBDT01QVVRFUiBDTy4sIExURC4KLTAwNTA3MCAgICAgKGJhc2UgMTYpCQlDSEFJTlRFQ0ggQ09NUFVURVIgQ08uLCBMVEQuCi0JCQkJNVRIIEYsIEFMTEVZIDIsIExBTkUgMjIyCi0JCQkJTElFTi1DSEVORyBSRC4sIENIVU5HLUhPIFRBSVBFSS1IU0lFTgotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTcxICAgKGhleCkJCUFJV0EgQ08uLCBMVEQuCi0wMDUwNzEgICAgIChiYXNlIDE2KQkJQUlXQSBDTy4sIExURC4KLQkJCQkxLTExLCBLQU1JVE9NQVRTVVJJIDQtQ0hPTUUKLQkJCQlVVFNVTk9NSVlBLVNISSwgVE9DSElHSS1LRU4gMzIwLTg1ICAKLQkJCQlKQVBBTgotCi0wMC01MC03MiAgIChoZXgpCQlDT1JWSVMgQ09SUE9SQVRJT04KLTAwNTA3MiAgICAgKGJhc2UgMTYpCQlDT1JWSVMgQ09SUE9SQVRJT04KLQkJCQk4MzIwIEdVSUxGT1JEIFJPQUQKLQkJCQlDT0xVTUJJQSBNRCAyMTA0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNzMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDczICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJTS9TIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNzQgICAoaGV4KQkJQURWQU5DRUQgSEktVEVDSCBDT1JQLgotMDA1MDc0ICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIEhJLVRFQ0ggQ09SUC4KLQkJCQkxOTkwIEVBU1QgR1JBTkQgQVZFLgotCQkJCUVMIFNFR1VORE8gQ0EgOTA1MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTc1ICAgKGhleCkJCUtFU1RSRUwgU09MVVRJT05TCi0wMDUwNzUgICAgIChiYXNlIDE2KQkJS0VTVFJFTCBTT0xVVElPTlMKLQkJCQkyMzcwIENIQVJMRVNUT04gUk9BRAotCQkJCU1ULiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC03NiAgIChoZXgpCQlJQk0gQ29ycAotMDA1MDc2ICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAgTyBCb3ggMTIxOTUKLQkJCQlSZWVhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNzcgICAoaGV4KQkJUFJPTElGSUMgVEVDSE5PTE9HWSwgSU5DLgotMDA1MDc3ICAgICAoYmFzZSAxNikJCVBST0xJRklDIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk2RiAxLCBMQU5FIDUxLCBTRUMgMQotCQkJCU5BTi1DSEFOIFJPQUQgVEFJUEVJCi0JCQkJMTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC03OCAgIChoZXgpCQlNRUdBVE9OIEhPVVNFLCBMVEQuCi0wMDUwNzggICAgIChiYXNlIDE2KQkJTUVHQVRPTiBIT1VTRSwgTFRELgotCQkJCVpJUDogMjI0IE5PLjEtMy01IE5BS0FNQUNISUJBSQotCQkJCVRTVURVS0kgV0FSRAotCQkJCVlPS09IQU1BICAKLQkJCQlKQVBBTgotCi0wMC01MC03OSAgIChoZXgpCQlQUklWQVRFCi0wMDUwNzkgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTUwLTdBICAgKGhleCkJCVhQRUVELCBJTkMuCi0wMDUwN0EgICAgIChiYXNlIDE2KQkJWFBFRUQsIElOQy4KLQkJCQk0Njk5IE9MRCBJUk9OU0lERVMgRFJJVkUKLQkJCQlTVUlURSAjMzAwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTdCICAgKGhleCkJCU1FUkxPVCBDT01NVU5JQ0FUSU9OUwotMDA1MDdCICAgICAoYmFzZSAxNikJCU1FUkxPVCBDT01NVU5JQ0FUSU9OUwotCQkJCUJFUktTSElSRSBDT1JQT1JBVEUgUEFSSwotCQkJCTQgQkVSS1NISVJFIEJMVkQuCi0JCQkJQkVUSEVMIENUIDA2ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC03QyAgIChoZXgpCQlWSURFT0NPTiBBRwotMDA1MDdDICAgICAoYmFzZSAxNikJCVZJREVPQ09OIEFHCi0JCQkJQUxCRVJULVNDSFdFSVRaRVItU1RSLiA2NAotCQkJCUQtODE3MzUgTVVOSUNICi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNTAtN0QgICAoaGV4KQkJSUZQCi0wMDUwN0QgICAgIChiYXNlIDE2KQkJSUZQCi0JCQkJTEVTU0lOR1NUUi4gNAotCQkJCUQtNzgzMTUgUkFET0xGWkVMTCAgCi0JCQkJR0VSTUFOWQotCi0wMC01MC03RSAgIChoZXgpCQlORVdFUiBURUNITk9MT0dZCi0wMDUwN0UgICAgIChiYXNlIDE2KQkJTkVXRVIgVEVDSE5PTE9HWQotCQkJCTQ4NDggV0VTVCBJUlZJTkcgU1QuCi0JCQkJV0lDSElUQSBLUyA2NzIwOS0yNjIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC03RiAgIChoZXgpCQlEcmF5VGVrIENvcnAuCi0wMDUwN0YgICAgIChiYXNlIDE2KQkJRHJheVRlayBDb3JwLgotCQkJCTI2LCBGdXNoaW5nIFJkLgotCQkJCUhzaW5jaHUgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSBIdWtvdSAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTgwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTA4MCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJTS9TIFNKQS0yCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTgxICAgKGhleCkJCU1VUkFUQSBNQUNISU5FUlksIExURC4KLTAwNTA4MSAgICAgKGJhc2UgMTYpCQlNVVJBVEEgTUFDSElORVJZLCBMVEQuCi0JCQkJMTM2LCBUQUtFREEtTVVLQUlTSElSTy1DSE8KLQkJCQlGVVNISU1JLUtVLCBLWU9UTyA2MTItODY4NiAgCi0JCQkJSkFQQU4KLQotMDAtNTAtODIgICAoaGV4KQkJRk9SRVNTT04gQ09SUE9SQVRJT04KLTAwNTA4MiAgICAgKGJhc2UgMTYpCQlGT1JFU1NPTiBDT1JQT1JBVElPTgotCQkJCTNGLCBOTy45IFNFQy4xCi0JCQkJQ0hBTkcgQU4gRUFTVCBST0FECi0JCQkJVEFJUEVJIDEwNDA0ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTgzICAgKGhleCkJCUdJTEJBUkNPLCBJTkMuCi0wMDUwODMgICAgIChiYXNlIDE2KQkJR0lMQkFSQ08sIElOQy4KLQkJCQlQT0IgMjIwODcKLQkJCQlHUkVFTlNCT1JPIE5DIDI3NDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC04NCAgIChoZXgpCQlBVEwgUFJPRFVDVFMKLTAwNTA4NCAgICAgKGJhc2UgMTYpCQlBVEwgUFJPRFVDVFMKLQkJCQkyODAxIEtFTFZJTiBBVkVOVUUKLQkJCQlJUlZJTkUgQ0EgOTI2MTQtNTg3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtODYgICAoaGV4KQkJVEVMS09NIFNBLCBMVEQuCi0wMDUwODYgICAgIChiYXNlIDE2KQkJVEVMS09NIFNBLCBMVEQuCi0JCQkJVEVMS09NIExBQk9SQVRPUlkKLQkJCQlQLiBCQUcgWDc0Ci0JCQkJUFJFVE9SSUEgIAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC01MC04NyAgIChoZXgpCQlURVJBU0FLSSBFTEVDVFJJQyBDTy4sIExURC4KLTAwNTA4NyAgICAgKGJhc2UgMTYpCQlURVJBU0FLSSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQk3LTItMTAgSEFOTkFOLUNITyBBQkVOTy1LVQotCQkJCU9TQUtBLCA1NDUtMDAyMSAgCi0JCQkJSkFQQU4KLQotMDAtNTAtODggICAoaGV4KQkJQU1BTk8gQ09SUE9SQVRJT04KLTAwNTA4OCAgICAgKGJhc2UgMTYpCQlBTUFOTyBDT1JQT1JBVElPTgotCQkJCTI3NSwgTUFNRURPLUNITwotCQkJCUtPVUhPS1UtS1UsIFlPS09IQU1BCi0JCQkJMjIyLTg1NTggIAotCQkJCUpBUEFOCi0KLTAwLTUwLTg5ICAgKGhleCkJCVNBRkVUWSBNQU5BR0VNRU5UIFNZU1RFTVMKLTAwNTA4OSAgICAgKGJhc2UgMTYpCQlTQUZFVFkgTUFOQUdFTUVOVCBTWVNURU1TCi0JCQkJQlJBTkRFUklKU1RSQUFUIDYKLQkJCQk1MjIzIEFTICdTLUhFUlRPR0VOQk9TQ0gnICBORVRIRVJMQU5EUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTUwLThCICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDA1MDhCICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC04QyAgIChoZXgpCQlSU0kgU1lTVEVNUwotMDA1MDhDICAgICAoYmFzZSAxNikJCVJTSSBTWVNURU1TCi0JCQkJNTU1NSBXLiA3OFRIIFNUUkVFVCwgU3VpdGUgRgotCQkJCUVESU5BIE1OIDU1NDM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC04RCAgIChoZXgpCQlBQklUIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMDUwOEQgICAgIChiYXNlIDE2KQkJQUJJVCBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTNGLTcsIE5PLiA3OSwgU0VDLjEKLQkJCQlIU0lOIFRBSSBXVSBST0FELCBIU0kgQ0hJCi0JCQkJVEFJUEVJIEhTSUVOICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLThFICAgKGhleCkJCU9QVElNQVRJT04sIElOQy4KLTAwNTA4RSAgICAgKGJhc2UgMTYpCQlPUFRJTUFUSU9OLCBJTkMuCi0JCQkJUC5PLiBCT1ggMTQzNTcKLQkJCQlIVU5UU1ZJTExFIEFMIDM1ODE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC04RiAgIChoZXgpCQlBU0lUQSBURUNITk9MT0dJRVMgSU5UJ0wgTFRELgotMDA1MDhGICAgICAoYmFzZSAxNikJCUFTSVRBIFRFQ0hOT0xPR0lFUyBJTlQnTCBMVEQuCi0JCQkJVU5JVCAyIEJBTExZQlJJVCBCVVNJTkVTUyBQQVJLCi0JCQkJR0FMV0FZCi0JCQkJSVJFTEFORAotCi0wMC01MC05MCAgIChoZXgpCQlEQ1RSSQotMDA1MDkwICAgICAoYmFzZSAxNikJCURDVFJJCi0JCQkJTk8uNDAgWFVFIFlVQU4gUkQKLQkJCQlIQUlESUFOIERJU1RSSUNUIEJFSUpJTkcsIDEwMDA4MywgUC5SLgotCQkJCUNISU5BCi0JCQkJQ0hJTkEKLQotMDAtNTAtOTEgICAoaGV4KQkJTkVUQUNDRVNTLCBJTkMuCi0wMDUwOTEgICAgIChiYXNlIDE2KQkJTkVUQUNDRVNTLCBJTkMuCi0JCQkJMTggS0VFV0FZRElOIERSSVZFCi0JCQkJU0FMRU0gTkggMDMwNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTkyICAgKGhleCkJCVJJR0FLVSBJTkRVU1RSSUFMIENPUlBPUkFUSU9OCi0wMDUwOTIgICAgIChiYXNlIDE2KQkJUklHQUtVIElORFVTVFJJQUwgQ09SUE9SQVRJT04KLQkJCQkxNC04IEFLQU9KSS1DSE8KLQkJCQlUQUtBVFNVS0ktU0hJLCBPU0FLQSA1NjktMTE0NiAgCi0JCQkJSkFQQU4KLQotMDAtNTAtOTMgICAoaGV4KQkJQk9FSU5HCi0wMDUwOTMgICAgIChiYXNlIDE2KQkJQk9FSU5HCi0JCQkJMzM3MCBNaXJhbG9tYSBBdmVudWUKLQkJCQlBbmFoZWltIENBIDkyODAzLTMxMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTk0ICAgKGhleCkJCVBBQ0UgcGxjCi0wMDUwOTQgICAgIChiYXNlIDE2KQkJUEFDRSBwbGMKLQkJCQlWSUNUT1JJQSBSRCwgU0FMVEFJUkUKLQkJCQlTSElQTEVZLCBXLiBZT1JLU0hJUkUgQlJBREZPUkQgIEJEMjggM0xGCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTUwLTk1ICAgKGhleCkJCVBFUkFDT00gTkVUV09SS1MKLTAwNTA5NSAgICAgKGJhc2UgMTYpCQlQRVJBQ09NIE5FVFdPUktTCi0JCQkJMTMwMDAgV0VTVE9OIFBBUktXQVkKLQkJCQlTVUlURSAjMTA1Ci0JCQkJQ0FSWSBOQyAyNzUxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtOTYgICAoaGV4KQkJU0FMSVggVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDUwOTYgICAgIChiYXNlIDE2KQkJU0FMSVggVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJOTA0IFdJTkQgUklWRVIgTEFORS0gU1RFLiAjMTAxCi0JCQkJR0FJVEhFUlNCVVJHIE1EIDIwODc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC05NyAgIChoZXgpCQlNTUMtRU1CRURERUQgQ09NUFVURVJURUNITklLIEdtYkgKLTAwNTA5NyAgICAgKGJhc2UgMTYpCQlNTUMtRU1CRURERUQgQ09NUFVURVJURUNITklLIEdtYkgKLQkJCQlVTFJJQ0hTQkVSR0VSU1RSLiAxNwotCQkJCUQtOTQ0NjkgREVHR0VORE9SRiAgCi0JCQkJR0VSTUFOWQotCi0wMC01MC05OCAgIChoZXgpCQlHTE9CQUxPT1AsIExURC4KLTAwNTA5OCAgICAgKGJhc2UgMTYpCQlHTE9CQUxPT1AsIExURC4KLQkJCQkxMiBIQVNIQVJPTiBST0FECi0JCQkJS0ZBUiBTQUJBIDQ0MjY5ICAKLQkJCQlJU1JBRUwKLQotMDAtNTAtOTkgICAoaGV4KQkJM0NPTSBFVVJPUEUsIExURC4KLTAwNTA5OSAgICAgKGJhc2UgMTYpCQkzQ09NIEVVUk9QRSwgTFRELgotCQkJCUJPVU5EQVJZIFdBWQotCQkJCUhFTUVMIEhFTVBTVEVBRAotCQkJCUhFUlRTLiBIUDIgN1lVICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC05QSAgIChoZXgpCQlUQUcgRUxFQ1RST05JQyBTWVNURU1TCi0wMDUwOUEgICAgIChiYXNlIDE2KQkJVEFHIEVMRUNUUk9OSUMgU1lTVEVNUwotCQkJCUdFTkVTSVMgQlVTSU5FU1MgUEFSSwotCQkJCUFsYmVydCBEcml2ZQotCQkJCVdPS0lORywgU1VSUkVZIEdVMjEgNVJXICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC05QiAgIChoZXgpCQlTV0lUQ0hDT1JFIEFCCi0wMDUwOUIgICAgIChiYXNlIDE2KQkJU1dJVENIQ09SRSBBQgotCQkJCVBPU0lUSU9ORU4gMTUzCi0JCQkJMTE1IDc0IFNUT0NLSE9MTQotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC01MC05QyAgIChoZXgpCQlCRVRBIFJFU0VBUkNICi0wMDUwOUMgICAgIChiYXNlIDE2KQkJQkVUQSBSRVNFQVJDSAotCQkJCUJFVEFTVFIuIDEKLQkJCQk4NTc3NCBVTlRFUkZPRUhSSU5HICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLTlEICAgKGhleCkJCVRIRSBJTkRVU1RSRUUgQi5WLgotMDA1MDlEICAgICAoYmFzZSAxNikJCVRIRSBJTkRVU1RSRUUgQi5WLgotCQkJCVAuTy4gQk9YIDQ2MgotCQkJCTU2MDAgQUwgRUlOREhPVkVOCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtNTAtOUUgICAoaGV4KQkJTGVzIFRlY2hub2xvZ2llcyBTb2Z0QWNvdXN0aWsgSW5jLgotMDA1MDlFICAgICAoYmFzZSAxNikJCUxlcyBUZWNobm9sb2dpZXMgU29mdEFjb3VzdGlrIEluYy4KLQkJCQkKLQkJCQkzOTAsIFJVRSBTQUlOVC1WQUxMSUVSIEVTVCwgNHRoIGZsb29yCi0JCQkJUXVlYmVjIEcxSyAgM1A2ICAKLQkJCQlDQU5BREEKLQotMDAtNTAtOUYgICAoaGV4KQkJSE9SSVpPTiBDT01QVVRFUgotMDA1MDlGICAgICAoYmFzZSAxNikJCUhPUklaT04gQ09NUFVURVIKLQkJCQlUUklOSVRZIEJMREcuIDQtMjItNwotCQkJCU5JU0hJLUFaQUJVLCBNSU5BVE8tS1UKLQkJCQkgVE9LWU8gMTA2ICAKLQkJCQlKQVBBTgotCi0wMC01MC1BMCAgIChoZXgpCQlERUxUQSBDT01QVVRFUiBTWVNURU1TLCBJTkMuCi0wMDUwQTAgICAgIChiYXNlIDE2KQkJREVMVEEgQ09NUFVURVIgU1lTVEVNUywgSU5DLgotCQkJCTExNzE5IE5FIDk1VEggU1RSRUVUIC0gU1RFLgotCQkJCVZBTkNPVVZFUiBXQSA5ODY4Mi0yNDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1BMSAgIChoZXgpCQlDQVJMTyBHQVZBWlpJLCBJTkMuCi0wMDUwQTEgICAgIChiYXNlIDE2KQkJQ0FSTE8gR0FWQVpaSSwgSU5DLgotCQkJCTIyMiBQRU5OQlJJR0hUIERSLiAtIFNURS4jMjEwCi0JCQkJSE9VU1RPTiBUWCA3NzA5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQTIgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MEEyICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1BMyAgIChoZXgpCQlUcmFuc01lZGlhIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDUwQTMgICAgIChiYXNlIDE2KQkJVHJhbnNNZWRpYSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTIwIEdSRUFUIE9BS1MgQkxWRC4sICMyMTAKLQkJCQlTQU4gSk9TRSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQTQgICAoaGV4KQkJSU8gVEVDSCwgSU5DLgotMDA1MEE0ICAgICAoYmFzZSAxNikJCUlPIFRFQ0gsIElOQy4KLQkJCQkyNTk3MSBDQU5OT04gUk9BRAotCQkJCUNMRVZFTEFORCBPSCA0NDE0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQTUgICAoaGV4KQkJQ0FQSVRPTCBCVVNJTkVTUyBTWVNURU1TLCBMVEQuCi0wMDUwQTUgICAgIChiYXNlIDE2KQkJQ0FQSVRPTCBCVVNJTkVTUyBTWVNURU1TLCBMVEQuCi0JCQkJNDMvNDQgUklWRVJTSURFCi0JCQkJU0lSIFRIT01BUyBMT05HTEVZIFJPQUQKLQkJCQlST0NIRVNURVIsIEtFTlQgRW5nbGFuZCBNRTIgNERQIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTUwLUE2ICAgKGhleCkJCU9QVFJPTklDUwotMDA1MEE2ICAgICAoYmFzZSAxNikJCU9QVFJPTklDUwotCQkJCTE3NSBDUkVNT05BIERSSVZFCi0JCQkJR09MRVRBIENBIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1BNyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwQTcgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlNL1MgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1BOCAgIChoZXgpCQlPcGVuQ29uIFN5c3RlbXMsIEluYy4KLTAwNTBBOCAgICAgKGJhc2UgMTYpCQlPcGVuQ29uIFN5c3RlbXMsIEluYy4KLQkJCQkzNzcgSE9FUyBMQU5FCi0JCQkJUElTQ0FUQVdBWSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQTkgICAoaGV4KQkJTU9MREFUIFdJUkVMRVNTIFRFQ0hOT0xHSUVTCi0wMDUwQTkgICAgIChiYXNlIDE2KQkJTU9MREFUIFdJUkVMRVNTIFRFQ0hOT0xHSUVTCi0JCQkJMyBTSElNT04gSVNSQUVMSSBTVFJFRVQKLQkJCQlSSVNIT04gTEUgWklPTiA3NTY1NAotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC01MC1BQSAgIChoZXgpCQlLT05JQ0EgTUlOT0xUQSBIT0xESU5HUywgSU5DLgotMDA1MEFBICAgICAoYmFzZSAxNikJCUtPTklDQSBNSU5PTFRBIEhPTERJTkdTLCBJTkMuCi0JCQkJMS02LTEsIE1hcnVub3VjaGksCi0JCQkJQ2hpeW9kYS1rdQotCQkJCVRva3lvICAxMDAtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTUwLUFCICAgKGhleCkJCU5BTFRFQywgSW5jLgotMDA1MEFCICAgICAoYmFzZSAxNikJCU5BTFRFQywgSW5jLgotCQkJCTEtMS0xNSwgTmFrYW5vZ28sIFNoaW1penUta3UKLQkJCQlTaGl6dW9rYS1zaGkgU2hpenVva2EgNDI0LTA4ODgKLQkJCQlKQVBBTgotCi0wMC01MC1BQyAgIChoZXgpCQlNQVBMRSBDT01QVVRFUiBDT1JQT1JBVElPTgotMDA1MEFDICAgICAoYmFzZSAxNikJCU1BUExFIENPTVBVVEVSIENPUlBPUkFUSU9OCi0JCQkJMkYsIE5PLiAxODQsIFNFQy4gMgotCQkJCUNIQU5HLUFOIEUuIFJELgotCQkJCVRhaXBlaSAgCi0JCQkJVEFKSUtJU1RBTgotCi0wMC01MC1BRCAgIChoZXgpCQlDb21tVW5pcXVlIFdpcmVsZXNzIENvcnAuCi0wMDUwQUQgICAgIChiYXNlIDE2KQkJQ29tbVVuaXF1ZSBXaXJlbGVzcyBDb3JwLgotCQkJCTEwNzAgTUFSSU5BIFZJTExBR0UgUEFSS1dBWQotCQkJCVNVSVRFICMyMDYKLQkJCQlBTEFNRURBIENBIDk0NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1BRSAgIChoZXgpCQlJV0FLSSBFTEVDVFJPTklDUyBDTy4sIExURC4KLTAwNTBBRSAgICAgKGJhc2UgMTYpCQlJV0FLSSBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQkxLCBLQU1BTk9NQUUKLQkJCQlKT0JBTi1LQU1JWVVOQUdBWUEtTUFDSEkKLQkJCQlJV0FLSS1DSVRZLCBGVUtVU0hJTUEgOTcyLTgzMjIgOTcyLTgzMjIgCi0JCQkJSkFQQU4KLQotMDAtNTAtQUYgICAoaGV4KQkJSU5URVJHT04sIElOQy4KLTAwNTBBRiAgICAgKGJhc2UgMTYpCQlJTlRFUkdPTiwgSU5DLgotCQkJCTU4MDAgUkFOQ0hFU1RFUiBEUklWRQotCQkJCUhPVVNUT04gVFggNzcwMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUIwICAgKGhleCkJCVRFQ0hOT0xPR1kgQVRMQU5UQSBDT1JQT1JBVElPTgotMDA1MEIwICAgICAoYmFzZSAxNikJCVRFQ0hOT0xPR1kgQVRMQU5UQSBDT1JQT1JBVElPTgotCQkJCTUwMCBTdWdhciBNaWxsIFJvYWQKLQkJCQlTdWl0ZSAyMDJBCi0JCQkJQXRsYW50YSBHQSAzMDM1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQjEgICAoaGV4KQkJR0lERElOR1MgJiBMRVdJUwotMDA1MEIxICAgICAoYmFzZSAxNikJCUdJRERJTkdTICYgTEVXSVMKLQkJCQk2NjAgUy4gTUlMSVRBUlkgUkQuCi0JCQkJRk9ORCBEVSBMQUMgV0kgNTQ5MzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUIyICAgKGhleCkJCUJST0RFTCBBVVRPTUFUSU9OCi0wMDUwQjIgICAgIChiYXNlIDE2KQkJQlJPREVMIEFVVE9NQVRJT04KLQkJCQlEaXN0ZWxidXNjaCAyNAotCQkJCTQyNTQ5IFZlbGJlcnQgCi0JCQkJR0VSTUFOWQotCi0wMC01MC1CMyAgIChoZXgpCQlWT0lDRUJPQVJEIENPUlBPUkFUSU9OCi0wMDUwQjMgICAgIChiYXNlIDE2KQkJVk9JQ0VCT0FSRCBDT1JQT1JBVElPTgotCQkJCTMxNTEgV0VTVCBGSUZUSCBTVFJFRVQKLQkJCQlPWE5BUkQgQ0EgOTMwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUI0ICAgKGhleCkJCVNBVENIV0VMTCBDT05UUk9MIFNZU1RFTVMsIExURAotMDA1MEI0ICAgICAoYmFzZSAxNikJCVNBVENIV0VMTCBDT05UUk9MIFNZU1RFTVMsIExURAotCQkJCVAuTy4gQk9YIDU3LCAgOTQgRkFSTkhBTSBST0FECi0JCQkJU0xPVUdILAotCQkJCUJFUktTSElSRSBTTDEgNFVIICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC1CNSAgIChoZXgpCQlGSUNIRVQtQkFVQ0hFCi0wMDUwQjUgICAgIChiYXNlIDE2KQkJRklDSEVULUJBVUNIRQotCQkJCTE1LTE3IEFWRS4gTU9SQU5FLVNBVUxOSUVSCi0JCQkJNzgxNDAgVkVMSVpZCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTUwLUI2ICAgKGhleCkJCUdPT0QgV0FZIElORC4gQ08uLCBMVEQuCi0wMDUwQjYgICAgIChiYXNlIDE2KQkJR09PRCBXQVkgSU5ELiBDTy4sIExURC4KLQkJCQk1RiwgTk8uOCwgQUxMRVkgNiwKLQkJCQlMQU5FIDQ1IFBBTy1IU0lOIFJELi1IU0lOIFRJRU4gVEFJUEVJIEhTCi0JCQkJVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtQjcgICAoaGV4KQkJQk9TRVIgVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwNTBCNyAgICAgKGJhc2UgMTYpCQlCT1NFUiBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTE1Ri02LCA3NyBIU0lOIFRBSSBXVSBST0FECi0JCQkJU0VDLiAxLCBIU0ktQ0hJCi0JCQkJVEFJUEVJIEhTSUVOICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLUI4ICAgKGhleCkJCUlOT1ZBIENPTVBVVEVSUyBHTUJIICYgQ08uIEtHCi0wMDUwQjggICAgIChiYXNlIDE2KQkJSU5PVkEgQ09NUFVURVJTIEdNQkggJiBDTy4gS0cKLQkJCQlTVURFVEVOU1RSQVNTRSA1Ci0JCQkJODc2MDAgS0FVRkJFVVJFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC01MC1COSAgIChoZXgpCQlYSVRST04gVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDUwQjkgICAgIChiYXNlIDE2KQkJWElUUk9OIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTYyOTUtRCBGRVJSSVMgU1FVQVJFCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1CQSAgIChoZXgpCQlELUxJTksKLTAwNTBCQSAgICAgKGJhc2UgMTYpCQlELUxJTksKLQkJCQkyRiwgTk8uIDIzM0wtMiwgUEFPLUNISUFPIFJELgotCQkJCUhzaW4tVGllbiAyMzEKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtQkIgICAoaGV4KQkJQ01TIFRFQ0hOT0xPR0lFUwotMDA1MEJCICAgICAoYmFzZSAxNikJCUNNUyBURUNITk9MT0dJRVMKLQkJCQkxMzk1NSBGQVJNSU5HVE9OIFJBT0QKLQkJCQlMSVZPTklBIE1JIDQ4MTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1CQyAgIChoZXgpCQlIQU1NRVIgU1RPUkFHRSBTT0xVVElPTlMKLTAwNTBCQyAgICAgKGJhc2UgMTYpCQlIQU1NRVIgU1RPUkFHRSBTT0xVVElPTlMKLQkJCQk4NDUwIENFTlRSQUwgQVZFTlVFCi0JCQkJTkVXQVJLIENBIDk0NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1CRCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwQkQgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUgLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUJFICAgKGhleCkJCUZBU1QgTVVMVElNRURJQSBBRwotMDA1MEJFICAgICAoYmFzZSAxNikJCUZBU1QgTVVMVElNRURJQSBBRwotCQkJCVJVRURFU0hFSU1FUlNUUi4gMTEtMTMKLQkJCQk4MDY4NiBNVU5JQ0ggIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtQkYgICAoaGV4KQkJTWV0YWxsaWdlbmNlIFRlY2hub2xvZ3kgQ29ycC4KLTAwNTBCRiAgICAgKGJhc2UgMTYpCQlNZXRhbGxpZ2VuY2UgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5PLjksIFBBUksgQVZFTlVFIElJCi0JCQkJU0NJRU5DRS1CQVNFIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU4tQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLUMwICAgKGhleCkJCUdBVEFOLCBJTkMuCi0wMDUwQzAgICAgIChiYXNlIDE2KQkJR0FUQU4sIElOQy4KLQkJCQk1OTMzIENPUk9OQURPIExBTkUKLQkJCQlQTEVBU0FOVE9OIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1DMSAgIChoZXgpCQlHRU1GTEVYIE5FVFdPUktTLCBMVEQuCi0wMDUwQzEgICAgIChiYXNlIDE2KQkJR0VNRkxFWCBORVRXT1JLUywgTFRELgotCQkJCTIzMC02NjUxIEZSQVNFUldPT0QgUEwuCi0JCQkJUklDSE1PTkQsIEIuQy4KLQkJCQlDQU5BREEgVjZXIDFKMwotCQkJCUNBTkFEQQotCi0wMC01MC1DMiAgIChoZXgpCQlJRUVFIFJFR0lTVFJBVElPTiBBVVRIT1JJVFkKLTAwNTBDMiAgICAgKGJhc2UgMTYpCQlJRUVFIFJFR0lTVFJBVElPTiBBVVRIT1JJVFkKLQkJCQk0NDUgSE9FUyBMQU5FCi0JCQkJUElTQ0FUQVdBWSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQzQgICAoaGV4KQkJSU1ECi0wMDUwQzQgICAgIChiYXNlIDE2KQkJSU1ECi0JCQkJSEVSQlNUUkFTU0UgOAotCQkJCUQtODIxNzggUFVDSEhFSU0gIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtQzUgICAoaGV4KQkJQURTIFRlY2hub2xvZ2llcywgSW5jCi0wMDUwQzUgICAgIChiYXNlIDE2KQkJQURTIFRlY2hub2xvZ2llcywgSW5jCi0JCQkJMTI2MjcgSGlkZGVuY3JlZWsgV2F5Ci0JCQkJQ2Vycml0b3MgQ0EgOTA3MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUM2ICAgKGhleCkJCUxPT1AgVEVMRUNPTU1VTklDQVRJT04gSU5URVJOQVRJT05BTCwgSU5DLgotMDA1MEM2ICAgICAoYmFzZSAxNikJCUxPT1AgVEVMRUNPTU1VTklDQVRJT04gSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTJGLCBOTy4gMjIsIFBST1NQRVJJVFkgUkQuIDIKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhTSU5DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtQzggICAoaGV4KQkJIEFkZG9uaWNzIFRlY2hub2xvZ2llcywgSW5jLgotMDA1MEM4ICAgICAoYmFzZSAxNikJCSBBZGRvbmljcyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxOTE4IEp1bmN0aW9uIEF2ZS4sCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUM5ICAgKGhleCkJCU1BU1BSTyBERU5LT0ggQ09SUC4KLTAwNTBDOSAgICAgKGJhc2UgMTYpCQlNQVNQUk8gREVOS09IIENPUlAuCi0JCQkJQVNBREEgTklTU0hJTiBBSUNISQotCQkJCTQ3MC0wMTk0Ci0JCQkJSkFQQU4KLQotMDAtNTAtQ0EgICAoaGV4KQkJTkVUIFRPIE5FVCBURUNITk9MT0dJRVMKLTAwNTBDQSAgICAgKGJhc2UgMTYpCQlORVQgVE8gTkVUIFRFQ0hOT0xPR0lFUwotCQkJCTY4MCBDRU5UUkFMIEFWRU5VRSAtIFNURS4gIzMwMQotCQkJCURPVkVSIE5IIDAzODIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1DQiAgIChoZXgpCQlKRVRURVIKLTAwNTBDQiAgICAgKGJhc2UgMTYpCQlKRVRURVIKLQkJCQlHUkFFVEVSU1RSQVNTRSAyCi0JCQkJRDcxNjQyICBMVURXSUdTQlVSRwotCQkJCUdFUk1BTlkKLQotMDAtNTAtQ0MgICAoaGV4KQkJWFlSQVRFWAotMDA1MENDICAgICAoYmFzZSAxNikJCVhZUkFURVgKLQkJCQlNQUlMIFBPSU5UOiAyNi8xMzsgREVQVDogIFNUT1JBR0UgU1lTVEVNCi0JCQkJTGFuZ3N0b25lIFJvYWQKLQkJCQlIYXZhbnQgUE85IDFTQSAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtQ0QgICAoaGV4KQkJRElHSUFOU1dFUiBBL1MKLTAwNTBDRCAgICAgKGJhc2UgMTYpCQlESUdJQU5TV0VSIEEvUwotCQkJCVNLQUxIVVNFIDUKLQkJCQk5MjQwIE5JQkUKLQkJCQlERU5NQVJLCi0KLTAwLTUwLUNFICAgKGhleCkJCUxHIElOVEVSTkFUSU9OQUwgQ09SUC4KLTAwNTBDRSAgICAgKGJhc2UgMTYpCQlMRyBJTlRFUk5BVElPTkFMIENPUlAuCi0JCQkJTEcgVFdJTiBUT1dFUlMKLQkJCQkyMCBZT0lETy1ET05HLCBZT1VOR0RVTkdQTy1HVQotCQkJCVNFT1VMLCAgMTUwLTYwNiAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTUwLUNGICAgKGhleCkJCVZBTkxJTksgQ09NTVVOSUNBVElPTiBURUNITk9MT0dZIFJFU0VBUkNIIElOU1RJVFVURQotMDA1MENGICAgICAoYmFzZSAxNikJCVZBTkxJTksgQ09NTVVOSUNBVElPTiBURUNITk9MT0dZIFJFU0VBUkNIIElOU1RJVFVURQotCQkJCTIxMCBZQURJIE9GRklDRSBCVUlMRElORwotCQkJCSBOTy4gNDggQkVJIFNBTiBIdWFuIFpob25nIEx1Ci0JCQkJQkVJSklORyAxMDAwODggIAotCQkJCUNISU5BCi0KLTAwLTUwLUQwICAgKGhleCkJCU1JTkVSVkEgU1lTVEVNUwotMDA1MEQwICAgICAoYmFzZSAxNikJCU1JTkVSVkEgU1lTVEVNUwotCQkJCTE1ODUgQ0hBUkxFU1RPTiBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA4NDk0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRDEgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MEQxICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJTS9TIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRDIgICAoaGV4KQkJQ01DIEVsZWN0cm9uaWNzIEluYwotMDA1MEQyICAgICAoYmFzZSAxNikJCUNNQyBFbGVjdHJvbmljcyBJbmMKLQkJCQk2MDAgRHIuRnJlZGVyaWstUGhpbGlwcyBCbHZkCi0JCQkJTW9udHJlYWwgIFFDIEg0TSAyUzkKLQkJCQlDQU5BREEKLQotMDAtNTAtRDMgICAoaGV4KQkJRElHSVRBTCBBVURJTyBQUk9DRVNTSU5HIFBUWS4gTFRELgotMDA1MEQzICAgICAoYmFzZSAxNikJCURJR0lUQUwgQVVESU8gUFJPQ0VTU0lORyBQVFkuIExURC4KLQkJCQlQTyBCT1ggNDAKLQkJCQlDT05DT1JEIFdFU1QKLQkJCQlOU1cgMjEzOCAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTUwLUQ0ICAgKGhleCkJCUpPT0hPTkcgSU5GT1JNQVRJT04gJgotMDA1MEQ0ICAgICAoYmFzZSAxNikJCUpPT0hPTkcgSU5GT1JNQVRJT04gJgotCQkJCUNPTU1VTklDQVRJT05TLCBMVEQuCi0JCQkJSlVOR05BTSBCL0QsIDcyMS0zOSBZRU9LU0FNLURPTkcsIEtBTkdOQQotCQkJCVNFT1VMIFNFT1VMIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTUwLUQ1ICAgKGhleCkJCUFEIFNZU1RFTVMgQ09SUC4KLTAwNTBENSAgICAgKGJhc2UgMTYpCQlBRCBTWVNURU1TIENPUlAuCi0JCQkJMS00LTEsIE5BS0FDSE8sIE1VU0FTSElOTyBDSVRZCi0JCQkJVE9LWU8gMTgwLTAwMDYgIAotCQkJCUpBUEFOCi0KLTAwLTUwLUQ2ICAgKGhleCkJCUFUTEFTIENPUENPIFRPT0xTIEFCCi0wMDUwRDYgICAgIChiYXNlIDE2KQkJQVRMQVMgQ09QQ08gVE9PTFMgQUIKLQkJCQkKLQkJCQlTLTEwNSAyMyBTVE9DS0hPTE0gIAotCQkJCVNXRURFTgotCi0wMC01MC1ENyAgIChoZXgpCQlURUxTVFJBVAotMDA1MEQ3ICAgICAoYmFzZSAxNikJCVRFTFNUUkFUCi0JCQkJMzYwMCBBVkVOVUUKLQkJCQlQTEFOTyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRDggICAoaGV4KQkJVU5JQ09STiBDT01QVVRFUiBDT1JQLgotMDA1MEQ4ICAgICAoYmFzZSAxNikJCVVOSUNPUk4gQ09NUFVURVIgQ09SUC4KLQkJCQk3IEZMLiwgIE5PLiA5NiBLV0FORyBGVSBOT1JUSCBST0FECi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLUQ5ICAgKGhleCkJCUVOR0VUUk9OLUVOR0VOSEFSSUEgRUxFVFJPTklDQSBJTkQuIGUgQ09NLiBMVERBCi0wMDUwRDkgICAgIChiYXNlIDE2KQkJRU5HRVRST04tRU5HRU5IQVJJQSBFTEVUUk9OSUNBIElORC4gZSBDT00uIExUREEKLQkJCQlWSUEgU09DUkFURVMgTS4gQklUVEVOQ09VUlQsIDEwOTkKLQkJCQkzMjAxMC0wMTAgQ29udGFnZW0gTUcgIAotCQkJCUJSQVpJTAotCi0wMC01MC1EQSAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMDUwREEgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQkFZRlJPTlQgUExBWkEKLQkJCQlNUzogNDIyMAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1EQiAgIChoZXgpCQlDT05URU1QT1JBUlkgQ09OVFJPTAotMDA1MERCICAgICAoYmFzZSAxNikJCUNPTlRFTVBPUkFSWSBDT05UUk9MCi0JCQkJU1lTVEVNUywgSU5DLgotCQkJCTI0MzEgQ1VSVElTUyBTVFJFRVQKLQkJCQlET1dORVJTIEdST1ZFIElMIDYwNTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1EQyAgIChoZXgpCQlUQVMgVEVMRUZPTkJBVSBBLiBTQ0hXQUJFIEdNQkggJiBDTy4gS0cKLTAwNTBEQyAgICAgKGJhc2UgMTYpCQlUQVMgVEVMRUZPTkJBVSBBLiBTQ0hXQUJFIEdNQkggJiBDTy4gS0cKLQkJCQkKLQkJCQlMQU5HTUFBUiAyNQotCQkJCUQtNDEyMzggTU9OQ0hFTkdMQURCQUNIICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLUREICAgKGhleCkJCVNFUlJBIFNPTERBRFVSQSwgUy5BLgotMDA1MEREICAgICAoYmFzZSAxNikJCVNFUlJBIFNPTERBRFVSQSwgUy5BLgotCQkJCVBPTC4gSU5ELiBaT05BIEZSQU5DQSwKLQkJCQlTRUNUT1IgQywgQ0FMTEUgRCwgTi4gMjkgMDgwNDAgQkFSQ0VMT05BCi0JCQkJU1BBSU4KLQkJCQlTUEFJTgotCi0wMC01MC1ERSAgIChoZXgpCQlTSUdOVU0gU1lTVEVNUyBDT1JQLgotMDA1MERFICAgICAoYmFzZSAxNikJCVNJR05VTSBTWVNURU1TIENPUlAuCi0JCQkJMTIxMSBGbHlubiBSZCwKLQkJCQkjMTA0Ci0JCQkJQ2FtYXJpbGxvIENBIDkzMDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1ERiAgIChoZXgpCQlBaXJGaWJlciwgSW5jLgotMDA1MERGICAgICAoYmFzZSAxNikJCUFpckZpYmVyLCBJbmMuCi0JCQkJUC5PLiBCT1ggNTAyMTQ4Ci0JCQkJU0FOIERJRUdPIENBIDkyMTUwLTIxNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUUxICAgKGhleCkJCU5TIFRFQ0ggRUxFQ1RST05JQ1MgU0ROIEJIRAotMDA1MEUxICAgICAoYmFzZSAxNikJCU5TIFRFQ0ggRUxFQ1RST05JQ1MgU0ROIEJIRAotCQkJCU5PLiAyMSAmIDIzIEpBTEFOIENBTkdHSUggMTAKLQkJCQlUQU1BTiBQRVJJTkRVU1RSSUFOIENFTUVSTEFORwotCQkJCTgxODAwIFVsdSBUaXJhbS1Kb2hvciBCYWhydSAgCi0JCQkJTUFMQVlTSUEKLQotMDAtNTAtRTIgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MEUyICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1FMyAgIChoZXgpCQlNb3Rvcm9sYSwgSW5jLgotMDA1MEUzICAgICAoYmFzZSAxNikJCU1vdG9yb2xhLCBJbmMuCi0JCQkJMjQ1MCBXYWxzaCBBdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRTQgICAoaGV4KQkJQVBQTEUgQ09NUFVURVIsIElOQy4KLTAwNTBFNCAgICAgKGJhc2UgMTYpCQlBUFBMRSBDT01QVVRFUiwgSU5DLgotCQkJCTIwNjUwIFZBTExFWSBHUkVFTiBEUi4KLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUU2ICAgKGhleCkJCUhBS1VTQU4gQ09SUE9SQVRJT04KLTAwNTBFNiAgICAgKGJhc2UgMTYpCQlIQUtVU0FOIENPUlBPUkFUSU9OCi0JCQkJSiBUT1dFUiwgMS0xLCBOSUtLT1UtQ0hPCi0JCQkJRlVDSFUtU0hJIFRPS1lPIDE4My0wMDQ0Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC01MC1FNyAgIChoZXgpCQlQQVJBRElTRSBJTk5PVkFUSU9OUyAoQVNJQSkKLTAwNTBFNyAgICAgKGJhc2UgMTYpCQlQQVJBRElTRSBJTk5PVkFUSU9OUyAoQVNJQSkKLQkJCQlQVEUuIExURC4KLQkJCQkyNSBTRVJBTkdPT04gTk9SVEggQVZFLiA1IDZUSCBGTE9PUiBVUkFDCi0JCQkJU0lOR0FQT1JFIDU1NDkxNAotCQkJCVNJTkdBUE9SRQotCi0wMC01MC1FOCAgIChoZXgpCQlOT01BRElYIElOQy4KLTAwNTBFOCAgICAgKGJhc2UgMTYpCQlOT01BRElYIElOQy4KLQkJCQkyNzAxIE9DRUFOIFBBUksgQkxWRC4tU1RFLiMyMzEKLQkJCQlTQU5UQSBNT05JQ0EgQ0EgOTA0MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUVBICAgKGhleCkJCVhFTCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA1MEVBICAgICAoYmFzZSAxNikJCVhFTCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTE3MTAxIEUuIE9ISU8gRFJJVkUKLQkJCQlBVVJPUkEgQ08gODAwMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUVCICAgKGhleCkJCUFMUEhBLVRPUCBDT1JQT1JBVElPTgotMDA1MEVCICAgICAoYmFzZSAxNikJCUFMUEhBLVRPUCBDT1JQT1JBVElPTgotCQkJCTE5Ri4sIE5PLiAyLCBMQU5FIDE1MAotCQkJCVNFQy4gNSwgSFNJTi1ZSSBST0FECi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLUVDICAgKGhleCkJCU9MSUNPTSBBL1MKLTAwNTBFQyAgICAgKGJhc2UgMTYpCQlPTElDT00gQS9TCi0JCQkJTllCUk9WRUogMTE0Ci0JCQkJREstMjgwMCBMWU5HQlkKLQkJCQlERU5NQVJLCi0KLTAwLTUwLUVEICAgKGhleCkJCUFOREEgTkVUV09SS1MKLTAwNTBFRCAgICAgKGJhc2UgMTYpCQlBTkRBIE5FVFdPUktTCi0JCQkJMjkyMSBDT1BQRVIgUk9BRAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1FRSAgIChoZXgpCQlURUsgRElHSVRFTCBDT1JQT1JBVElPTgotMDA1MEVFICAgICAoYmFzZSAxNikJCVRFSyBESUdJVEVMIENPUlBPUkFUSU9OCi0JCQkJMjAwMTAgQ0VOVFVSWSBCTFZELiAjMzAwCi0JCQkJR0VSTUFOVE9XTiBNRCAyMDg3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRUYgICAoaGV4KQkJU1BFIFN5c3RlbWhhdXMgR21iSAotMDA1MEVGICAgICAoYmFzZSAxNikJCVNQRSBTeXN0ZW1oYXVzIEdtYkgKLQkJCQlXQUxEU1RSQVNTRSA3Ci0JCQkJNjMxNTAgSEVVU0VOU1RBTU0gIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtRjAgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MEYwICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJTS9TIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRjEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwNTBGMSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCTk0IEVtLUhhbW9zaGF2b3QgV2F5LgotCQkJCVBhcmsgQXpvcmltLFAuTy4gQm94IDEwMDk3Ci0JCQkJUGV0YWNoLVRpa3ZhICAKLQkJCQlJU1JBRUwKLQotMDAtNTAtRjIgICAoaGV4KQkJTUlDUk9TT0ZUIENPUlAuCi0wMDUwRjIgICAgIChiYXNlIDE2KQkJTUlDUk9TT0ZUIENPUlAuCi0JCQkJT05FIE1JQ1JPU09GVCBXQVkKLQkJCQlSRURNT05EIFdBIDk4MDUyLTYzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUYzICAgKGhleCkJCUdMT0JBTCBORVQgSU5GT1JNQVRJT04gQ08uLCBMdGQuCi0wMDUwRjMgICAgIChiYXNlIDE2KQkJR0xPQkFMIE5FVCBJTkZPUk1BVElPTiBDTy4sIEx0ZC4KLQkJCQlOT1JUSCBUT1dFUi0gUk0gMTMwNQotCQkJCVdPUkxEIFRSQURFIENFTlRSRSBDT01QTEVYIE5PLjM3MS0zNzUsIEgKLQkJCQlHVUFORyBaSE9VIDUxMDA5NSAgCi0JCQkJQ0hJTkEKLQotMDAtNTAtRjQgICAoaGV4KQkJU0lHTUFURUsgR01CSCAmIENPLiBLRwotMDA1MEY0ICAgICAoYmFzZSAxNikJCVNJR01BVEVLIEdNQkggJiBDTy4gS0cKLQkJCQlBLTUxMTIgTEFNUFJFQ0hUU0hBVVNFTiwKLQkJCQlCVVJNT09TRVIgU1RSQVNTRSAxMAotCQkJCUFVU1RSSUEKLQkJCQlBVVNUUklBCi0KLTAwLTUwLUY2ICAgKGhleCkJCVBBTi1JTlRFUk5BVElPTkFMIElORFVTVFJJQUwgQ09SUC4KLTAwNTBGNiAgICAgKGJhc2UgMTYpCQlQQU4tSU5URVJOQVRJT05BTCBJTkRVU1RSSUFMIENPUlAuCi0JCQkJR0YsIE5PLiAxNzYsIENIQU5HIENIVU4gUkQuCi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLUY3ICAgKGhleCkJCVZFTlRVUkUgTUFOVUZBQ1RVUklORyAoU0lOR0FQT1JFKSBMVEQuCi0wMDUwRjcgICAgIChiYXNlIDE2KQkJVkVOVFVSRSBNQU5VRkFDVFVSSU5HIChTSU5HQVBPUkUpIExURC4KLQkJCQkKLQkJCQk1MDA2IEFORyBNTyBLSU8gQVZFTlVFCi0JCQkJIzA1LTAxIFRlY2hwbGFjZSBJSSAgNTY5ODczCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTUwLUY4ICAgKGhleCkJCUVOVFJFR0EgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDUwRjggICAgIChiYXNlIDE2KQkJRU5UUkVHQSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkyNTY5MSBBVExBTlRJQyBPQ0VBTiBEUklWRQotCQkJCVNVSVRFICMxOAotCQkJCUxBS0UgRk9SRVNUIENBIDkyNjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1GOSAgIChoZXgpCQlTRU5TT1JNQVRJQyBBQ0QKLTAwNTBGOSAgICAgKGJhc2UgMTYpCQlTRU5TT1JNQVRJQyBBQ0QKLQkJCQk3MCBXRVNUVklFVyBTVFJFRVQKLQkJCQlMRVhJTkdUT04gTUEgMDIxNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUZBICAgKGhleCkJCU9YVEVMLCBMVEQuCi0wMDUwRkEgICAgIChiYXNlIDE2KQkJT1hURUwsIExURC4KLQkJCQlUSEUgTUFSS0VUIFBMQUNFCi0JCQkJRElEQ09UCi0JCQkJMFgxMSA3TEUgRW5nbGFuZCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtRkIgICAoaGV4KQkJVlNLIEVMRUNUUk9OSUNTCi0wMDUwRkIgICAgIChiYXNlIDE2KQkJVlNLIEVMRUNUUk9OSUNTCi0JCQkJVkVORVRJRUxBQU4gMzkKLQkJCQk4NTMwIEhBUkVMQkVLRQotCQkJCUJFTEdJVU0KLQkJCQlCRUxHSVVNCi0KLTAwLTUwLUZDICAgKGhleCkJCUVESU1BWCBURUNITk9MT0dZIENPLiwgTFRELgotMDA1MEZDICAgICAoYmFzZSAxNikJCUVESU1BWCBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTMgV1UtQ0hVTiAzcmQgUk9BRAotCQkJCVd1LUt1IEluZHVzdHJpYWwgUGFyawotCQkJCVRBSVBFSSBIc2llbiAgMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC1GRCAgIChoZXgpCQlWSVNJT05DT01NIENPLiwgTFRELgotMDA1MEZEICAgICAoYmFzZSAxNikJCVZJU0lPTkNPTU0gQ08uLCBMVEQuCi0JCQkJNCwgNUYsIERBRVdPTiBCL0QKLQkJCQkxOTgtOCwgU0VPQklOR0dPLURPTkcKLQkJCQlZT05HU0FOLUdVLCBTRU9VTCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTUwLUZFICAgKGhleCkJCVBDVFZuZXQgQVNBCi0wMDUwRkUgICAgIChiYXNlIDE2KQkJUENUVm5ldCBBU0EKLQkJCQlTVFJBTkRWRUlMRU4gNTAKLQkJCQlOLTEzMjQgTFlTQUtFUiAgCi0JCQkJTk9SV0FZCi0KLTAwLTUwLUZGICAgKGhleCkJCUhBS0tPIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDA1MEZGICAgICAoYmFzZSAxNikJCUhBS0tPIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTIzOCwgS0FNSUtBU0hJV0FOTy1NQUNISQotCQkJCU1BVFRPLVNISSwgSVNISUtBV0EgOTI0LTAwMzUgIAotCQkJCUpBUEFOCi0KLTAwLTUyLTE4ICAgKGhleCkJCVd1eGkgS2Vib2RhIEVsZWN0cm9uIENvLkx0ZAotMDA1MjE4ICAgICAoYmFzZSAxNikJCVd1eGkgS2Vib2RhIEVsZWN0cm9uIENvLkx0ZAotCQkJCU5vLjE1NSBDaHVuaHVpIFJvYWQsIFhpc2hhbiBEaXN0cmljdCwgCi0JCQkJV3V4aSBKaWFuZ3N1IDIxNDEwMQotCQkJCUNISU5BCi0KLTAwLTU0LUFGICAgKGhleCkJCUNvbnRpbmVudGFsIEF1dG9tb3RpdmUgU3lzdGVtcyBJbmMuCi0wMDU0QUYgICAgIChiYXNlIDE2KQkJQ29udGluZW50YWwgQXV0b21vdGl2ZSBTeXN0ZW1zIEluYy4KLQkJCQkyMTQ0MCBXLiBMYWtlIENvb2sgUmQuCi0JCQkJRGVlciBQYXJrIElMIDYwMDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0wMCAgIChoZXgpCQlYWUNPTSBJTkMuCi0wMDYwMDAgICAgIChiYXNlIDE2KQkJWFlDT00gSU5DLgotCQkJCTc1MCBOLiBNQVBMRQotCQkJCVNBTElORSBNSSA0ODE3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMDEgICAoaGV4KQkJSW5ub1N5cywgSW5jLgotMDA2MDAxICAgICAoYmFzZSAxNikJCUlubm9TeXMsIEluYy4KLQkJCQkzMDk1IFJJQ0hNT05EIFBLV1kgIzIwNwotCQkJCVJJQ0hNT05EIENBIDk0ODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0wMiAgIChoZXgpCQlTQ1JFRU4gU1VCVElUTElORyBTWVNURU1TLCBMVEQKLTAwNjAwMiAgICAgKGJhc2UgMTYpCQlTQ1JFRU4gU1VCVElUTElORyBTWVNURU1TLCBMVEQKLQkJCQlUSEUgT0xEIFJFQ1RPUlkKLQkJCQlDSFVSQ0ggTEFORQotCQkJCUNMQVlET04gSVBTV0lDSCAgSVA2IE9FUSAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC02MC0wMyAgIChoZXgpCQlURVJBT0tBIFdFSUdIIFNZU1RFTSBQVEUsIExURC4KLTAwNjAwMyAgICAgKGJhc2UgMTYpCQlURVJBT0tBIFdFSUdIIFNZU1RFTSBQVEUsIExURC4KLQkJCQkzQSBUVUFTIEFWRU5VRSA4Ci0JCQkJU0lOR0FQT1JFIDYzOTEyOCAKLQkJCQlTSU5HQVBPUkUKLQotMDAtNjAtMDQgICAoaGV4KQkJQ09NUFVUQURPUkVTIE1PRFVMQVJFUyBTQQotMDA2MDA0ICAgICAoYmFzZSAxNikJCUNPTVBVVEFET1JFUyBNT0RVTEFSRVMgU0EKLQkJCQlBVkRBIE1PTlRFU0lFUlJBIFMvTgotCQkJCUVESUZJQ0lPIENPTkdSRVNPUyAzMTQKLQkJCQk0MTAyMC1TRVZJTExBICAKLQkJCQlTUEFJTgotCi0wMC02MC0wNSAgIChoZXgpCQlGRUVEQkFDSyBEQVRBIExURC4KLTAwNjAwNSAgICAgKGJhc2UgMTYpCQlGRUVEQkFDSyBEQVRBIExURC4KLQkJCQlQQVJLIFJPQUQKLQkJCQlDUk9XQk9ST1VHSAotCQkJCUVBU1QgU1VTU0VYLCBUTjYgMlFSICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC02MC0wNiAgIChoZXgpCQlTT1RFQyBDTy4sIExURAotMDA2MDA2ICAgICAoYmFzZSAxNikJCVNPVEVDIENPLiwgTFRECi0JCQkJWU9LT0hBTUEgQkFTSEFNSUNISSBCTERHLiwKLQkJCQk0LTU1IE9IVEEtQ0hPIE5BS0EtS1UKLQkJCQlZT0tPSEFNQSAgMjMxICAKLQkJCQlKQVBBTgotCi0wMC02MC0wNyAgIChoZXgpCQlBQ1JFUyBHQU1JTkcsIElOQy4KLTAwNjAwNyAgICAgKGJhc2UgMTYpCQlBQ1JFUyBHQU1JTkcsIElOQy4KLQkJCQk4MTUgTlcgOVRIIFNUUkVFVAotCQkJCUNPUlZBTExJUyBPUiA5NzMzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMDggICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDA2MDA4ICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTA5ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNjAwOSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTBBICAgKGhleCkJCVNPUkQgQ09NUFVURVIgQ09SUE9SQVRJT04KLTAwNjAwQSAgICAgKGJhc2UgMTYpCQlTT1JEIENPTVBVVEVSIENPUlBPUkFUSU9OCi0JCQkJMjAtNywgTUFTQUdPIDUtQ0hPTUUKLQkJCQlNSUhBTUEtS1UsIENISUJBLVNISQotCQkJCUNISUJBIDI2MSAgCi0JCQkJSkFQQU4KLQotMDAtNjAtMEIgICAoaGV4KQkJTE9HV0FSRSBHbWJICi0wMDYwMEIgICAgIChiYXNlIDE2KQkJTE9HV0FSRSBHbWJICi0JCQkJU0NIV0VERU5TVFIuIDkKLQkJCQlELTEzMzU5IEJFUkxJTiAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC0wQyAgIChoZXgpCQlFdXJvdGVjaCBJbmMuCi0wMDYwMEMgICAgIChiYXNlIDE2KQkJRXVyb3RlY2ggSW5jLgotCQkJCTEwMjYwIE9sZCBDb2x1bWJpYSBSb2FkCi0JCQkJQ09MVU1CSUEgTUQgMjEwNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTBEICAgKGhleCkJCURpZ2l0YWwgTG9naWMgR21iSAotMDA2MDBEICAgICAoYmFzZSAxNikJCURpZ2l0YWwgTG9naWMgR21iSAotCQkJCVN0YWhsd2Vya3N0ci4gMjUKLQkJCQlNdWRlcnNiYWNoICA1NzU1NQotCQkJCUdFUk1BTlkKLQotMDAtNjAtMEUgICAoaGV4KQkJV0FWRU5FVCBJTlRFUk5BVElPTkFMLCBJTkMuCi0wMDYwMEUgICAgIChiYXNlIDE2KQkJV0FWRU5FVCBJTlRFUk5BVElPTkFMLCBJTkMuCi0JCQkJNTgyNSBLRU5ORURZIFJPQUQKLQkJCQlNSVNTSVNTQVVHQSwgT05UQVJJTyBMNFogMkczICAKLQkJCQlDQU5BREEKLQotMDAtNjAtMEYgICAoaGV4KQkJV0VTVEVMTCwgSU5DLgotMDA2MDBGICAgICAoYmFzZSAxNikJCVdFU1RFTEwsIElOQy4KLQkJCQk3NSBFWEVDVVRJVkUgRFJJVkUKLQkJCQlBVVJPUkEgSUwgNjA1MDQtNDEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMTAgICAoaGV4KQkJTkVUV09SSyBNQUNISU5FUywgSU5DLgotMDA2MDEwICAgICAoYmFzZSAxNikJCU5FVFdPUksgTUFDSElORVMsIElOQy4KLQkJCQkyNTUgT0xEIE5FVyBCUlVOU1dJQ0sgUkQuLCAjIE4zMjAKLQkJCQlQSVNDQVRBV0FZIE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0xMSAgIChoZXgpCQlDUllTVEFMIFNFTUlDT05EVUNUT1IgQ09SUC4KLTAwNjAxMSAgICAgKGJhc2UgMTYpCQlDUllTVEFMIFNFTUlDT05EVUNUT1IgQ09SUC4KLQkJCQlQLk8uIEJPWCAxNzg0NwotCQkJCUFVU1RJTiBUWCA3ODc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMTIgICAoaGV4KQkJUE9XRVIgQ09NUFVUSU5HIENPUlBPUkFUSU9OCi0wMDYwMTIgICAgIChiYXNlIDE2KQkJUE9XRVIgQ09NUFVUSU5HIENPUlBPUkFUSU9OCi0JCQkJMTAyNjEgQlVCQiBST0FECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0xMyAgIChoZXgpCQlORVRTVEFMIE1BU0NISU5FTiBBRwotMDA2MDEzICAgICAoYmFzZSAxNikJCU5FVFNUQUwgTUFTQ0hJTkVOIEFHCi0JCQkJSU5EVVNUUklFU1RSQVNTRQotCQkJCUNILTg3NTIgTkFFRkVMUyAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtNjAtMTQgICAoaGV4KQkJRURFQyBDTy4sIExURC4KLTAwNjAxNCAgICAgKGJhc2UgMTYpCQlFREVDIENPLiwgTFRELgotCQkJCTlGIE9GIFQuTy5DLiBCVUlMRElORwotCQkJCTctMjItMTcgTklTSElHT1RBTkRBCi0JCQkJU0hJTkFHQVdBS1UsICBUT0tZTyAgCi0JCQkJSkFQQU4KLQotMDAtNjAtMTUgICAoaGV4KQkJTkVUMk5FVCBDT1JQT1JBVElPTgotMDA2MDE1ICAgICAoYmFzZSAxNikJCU5FVDJORVQgQ09SUE9SQVRJT04KLQkJCQkxMzEgQ09PTElER0UgU1RSRUVUCi0JCQkJSFVEU09OIE1BIDAxNzQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0xNiAgIChoZXgpCQlDTEFSSUlPTgotMDA2MDE2ICAgICAoYmFzZSAxNikJCUNMQVJJSU9OCi0JCQkJQ09TTElOIERSSVZFCi0JCQkJTWFpbCBTdG9wIEMyNQotCQkJCVNPVVRIQk9STyBNQSAwMTc3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMTcgICAoaGV4KQkJVE9LSU1FQyBJTkMuCi0wMDYwMTcgICAgIChiYXNlIDE2KQkJVE9LSU1FQyBJTkMuCi0JCQkJMi0xNiwgTUlOQU1JLUtBTUFUQSwgT0hUQS1LVQotCQkJCVRPS1lPIDE0NCAgCi0JCQkJSkFQQU4KLQotMDAtNjAtMTggICAoaGV4KQkJU1RFTExBUiBPTkUgQ09SUE9SQVRJT04KLTAwNjAxOCAgICAgKGJhc2UgMTYpCQlTVEVMTEFSIE9ORSBDT1JQT1JBVElPTgotCQkJCTUwMCAxMDhUSCBBVkUuIE5FLS1TVEUuICMyMjAwCi0JCQkJQkVMTEVWVUUgV0EgOTgwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTE5ICAgKGhleCkJCVJvY2hlIERpYWdub3N0aWNzCi0wMDYwMTkgICAgIChiYXNlIDE2KQkJUm9jaGUgRGlhZ25vc3RpY3MKLQkJCQk5MTE1IEhhZ3VlIFJvYWQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyNTAtMDQ1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMUEgICAoaGV4KQkJS0VJVEhMRVkgSU5TVFJVTUVOVFMKLTAwNjAxQSAgICAgKGJhc2UgMTYpCQlLRUlUSExFWSBJTlNUUlVNRU5UUwotCQkJCTMwNTAwIEJBSU5CUklER0UgUkQuCi0JCQkJU09MT04gT0ggNDQxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTFCICAgKGhleCkJCU1FU0EgRUxFQ1RST05JQ1MKLTAwNjAxQiAgICAgKGJhc2UgMTYpCQlNRVNBIEVMRUNUUk9OSUNTCi0JCQkJMTMyMyA2MVNUIFNUUkVFVAotCQkJCUVNRVJZVklMTEUgQ0EgOTQ2MDgtMjExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMUMgICAoaGV4KQkJVEVMWE9OIENPUlBPUkFUSU9OCi0wMDYwMUMgICAgIChiYXNlIDE2KQkJVEVMWE9OIENPUlBPUkFUSU9OCi0JCQkJMzMzMCBXLiBNQVJLRVQgU1RSRUVUCi0JCQkJUE8gQk9YIDU1ODIKLQkJCQlBS1JPTiBPSCA0NDMzNC0wNTgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0xRCAgIChoZXgpCQlMVUNFTlQgVEVDSE5PTE9HSUVTCi0wMDYwMUQgICAgIChiYXNlIDE2KQkJTFVDRU5UIFRFQ0hOT0xPR0lFUwotCQkJCTEwMSBDUkFXRk9SRFMgQ09STkVSIFJELgotCQkJCVJPT00gIDRLLTMyMQotCQkJCUhPTE1ERUwgTkogMDc3MzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTFFICAgKGhleCkJCVNPRlRMQUIsIElOQy4KLTAwNjAxRSAgICAgKGJhc2UgMTYpCQlTT0ZUTEFCLCBJTkMuCi0JCQkJUC5PLiBCT1ggOAotCQkJCUNISU1ORVkgUk9DSyBDTyA4MTEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMUYgICAoaGV4KQkJU1RBTExJT04gVEVDSE5PTE9HSUVTCi0wMDYwMUYgICAgIChiYXNlIDE2KQkJU1RBTExJT04gVEVDSE5PTE9HSUVTCi0JCQkJMzMgV09PRFNUT0NLIFJPQUQKLQkJCQlUT09XT05HIFEtTC1ELSA0MDY2ICAKLQkJCQlBVVNUUkFMSUEKLQotMDAtNjAtMjAgICAoaGV4KQkJUElWT1RBTCBORVRXT1JLSU5HLCBJTkMuCi0wMDYwMjAgICAgIChiYXNlIDE2KQkJUElWT1RBTCBORVRXT1JLSU5HLCBJTkMuCi0JCQkJNzI0NiBTSEFST04gRFIuLCBTVEUKLQkJCQlTQU4gSk9TRSBDQSA5NTEyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjEgICAoaGV4KQkJRFNDIENPUlBPUkFUSU9OCi0wMDYwMjEgICAgIChiYXNlIDE2KQkJRFNDIENPUlBPUkFUSU9OCi0JCQkJUkVDUlVJVC1TSElOT0hUU1VLQSBCTERHLiwKLQkJCQkyLTI1LTE1IE1JTkFNSU9IVFNVS0EsIFRPU0hJTUEtS1UsCi0JCQkJVE9LWU8gMTcwICAKLQkJCQlKQVBBTgotCi0wMC02MC0yMiAgIChoZXgpCQlWSUNPTSBTWVNURU1TLCBJTkMuCi0wMDYwMjIgICAgIChiYXNlIDE2KQkJVklDT00gU1lTVEVNUywgSU5DLgotCQkJCTE5NjEgTEFORElOR1MgRFJJVkUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0yMyAgIChoZXgpCQlQRVJJQ09NIFNFTUlDT05EVUNUT1IgQ09SUC4KLTAwNjAyMyAgICAgKGJhc2UgMTYpCQlQRVJJQ09NIFNFTUlDT05EVUNUT1IgQ09SUC4KLQkJCQkyMzgwIEJFUklORyBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0yNCAgIChoZXgpCQlHUkFESUVOVCBURUNITk9MT0dJRVMsIElOQy4KLTAwNjAyNCAgICAgKGJhc2UgMTYpCQlHUkFESUVOVCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkyIE1PVU5UIFJPWUFMIEFWRU5VRQotCQkJCU1BUkxCT1JPIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0yNSAgIChoZXgpCQlBQ1RJVkUgSU1BR0lORyBQTEMKLTAwNjAyNSAgICAgKGJhc2UgMTYpCQlBQ1RJVkUgSU1BR0lORyBQTEMKLQkJCQlIQVRUT1JJIEhPVVNFCi0JCQkJVkFOV0FMTCBCVVNJTkVTUyBQQVJLCi0JCQkJTUFJREVOSEVBRCBCZXJrc2hpcmUgU0w2IDRVQiAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC02MC0yNiAgIChoZXgpCQlWSUtJTkcgTW9kdWxhciBTb2x1dGlvbnMKLTAwNjAyNiAgICAgKGJhc2UgMTYpCQlWSUtJTkcgTW9kdWxhciBTb2x1dGlvbnMKLQkJCQkxMSBDT0xVTUJJQQotCQkJCUxBR1VOQSBISUxMUyBDQSA5MjY1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjcgICAoaGV4KQkJU3VwZXJpb3IgTW9kdWxhciBQcm9kdWN0cwotMDA2MDI3ICAgICAoYmFzZSAxNikJCVN1cGVyaW9yIE1vZHVsYXIgUHJvZHVjdHMKLQkJCQlHZW5lcmFsIFRlY2hub2xvZ3kgRGl2aXNpb24KLQkJCQk0MTUgUElORURBIENPVVJUCi0JCQkJTUVMQk9VUk5FIEZMIDMyOTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0yOCAgIChoZXgpCQlNQUNST1ZJU0lPTiBDT1JQT1JBVElPTgotMDA2MDI4ICAgICAoYmFzZSAxNikJCU1BQ1JPVklTSU9OIENPUlBPUkFUSU9OCi0JCQkJMjgzMCBEZSBMYSBDcnV6IEJvdWxldmFyZAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0yOSAgIChoZXgpCQlDQVJZIFBFUklQSEVSQUxTIElOQy4KLTAwNjAyOSAgICAgKGJhc2UgMTYpCQlDQVJZIFBFUklQSEVSQUxTIElOQy4KLQkJCQkxOTAgQ09MT05OQURFIFJPQUQgUywgVU5JVCA5Ci0JCQkJTkVQRUFOLCBPTlRBUklPIEsyRSA3SjUgIAotCQkJCUNBTkFEQQotCi0wMC02MC0yQSAgIChoZXgpCQlTWU1JQ1JPTiBDT01QVVRFUiBDT01NVU5JQ0FUSU9OUywgTFRELgotMDA2MDJBICAgICAoYmFzZSAxNikJCVNZTUlDUk9OIENPTVBVVEVSIENPTU1VTklDQVRJT05TLCBMVEQuCi0JCQkJVU5JVCA0IEdSRUVOIExBTkUgQlVTSU5FU1MgUEFSSwotCQkJCTIzOCBHcmVlbiBsYW5lCi0JCQkJTG9uZG9uIFNFOSAzVEwgIAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMkIgICAoaGV4KQkJUEVBSyBBVURJTwotMDA2MDJCICAgICAoYmFzZSAxNikJCVBFQUsgQVVESU8KLQkJCQkxNzkwIDMwVEggU1RSRUVUIFNURSAjNDE0Ci0JCQkJQk9VTERFUiBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMkMgICAoaGV4KQkJTElOWCBEYXRhIFRlcm1pbmFscywgSW5jLgotMDA2MDJDICAgICAoYmFzZSAxNikJCUxJTlggRGF0YSBUZXJtaW5hbHMsIEluYy4KLQkJCQk2MjUgRElHSVRBTCBEUklWRS1TVEUgIzEwMAotCQkJCVBMQU5PIFRYIDc1MDc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0yRCAgIChoZXgpCQlBTEVSVE9OIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA2MDJEICAgICAoYmFzZSAxNikJCUFMRVJUT04gVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNjY3MCAxODVUSCBBVkUuIE4uRS4KLQkJCQlSRURNT05EIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0yRSAgIChoZXgpCQlDWUNMQURFUyBDT1JQT1JBVElPTgotMDA2MDJFICAgICAoYmFzZSAxNikJCUNZQ0xBREVTIENPUlBPUkFUSU9OCi0JCQkJNDE5MzQgQ0hSSVNUWSBTVFJFRVQKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0yRiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDYwMkYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0zMCAgIChoZXgpCQlWSUxMQUdFIFRST05JQyBFTlRXSUNLTFVORwotMDA2MDMwICAgICAoYmFzZSAxNikJCVZJTExBR0UgVFJPTklDIEVOVFdJQ0tMVU5HCi0JCQkJV0VMTFdFRyA5NQotCQkJCTMxMTU3IFNBUlNURURUICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLTMxICAgKGhleCkJCUhSSyBTWVNURU1TCi0wMDYwMzEgICAgIChiYXNlIDE2KQkJSFJLIFNZU1RFTVMKLQkJCQlQLk8uIEJPWCA1MTQKLQkJCQlXRVNUVklMTEUgMzYzMCAgCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTYwLTMyICAgKGhleCkJCUktQ1VCRSwgSU5DLgotMDA2MDMyICAgICAoYmFzZSAxNikJCUktQ1VCRSwgSU5DLgotCQkJCTIzMjgtQyBXQUxTSCBBVkVOVUUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMzMgICAoaGV4KQkJQUNVSVRZIElNQUdJTkcsIElOQy4KLTAwNjAzMyAgICAgKGJhc2UgMTYpCQlBQ1VJVFkgSU1BR0lORywgSU5DLgotCQkJCTkgVE9XTlNFTkQgV0VTVAotCQkJCU5BU0hVQSBOSCAwMzA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMzQgICAoaGV4KQkJUk9CRVJUIEJPU0NIIEdtYkgKLTAwNjAzNCAgICAgKGJhc2UgMTYpCQlST0JFUlQgQk9TQ0ggR21iSAotCQkJCVBPU1RCT1ggMTEgNjIKLQkJCQlELTY0NzAxIEVSQkFDSCAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC0zNSAgIChoZXgpCQlEQUxMQVMgU0VNSUNPTkRVQ1RPUiwgSU5DLgotMDA2MDM1ICAgICAoYmFzZSAxNikJCURBTExBUyBTRU1JQ09ORFVDVE9SLCBJTkMuCi0JCQkJNDQwMSBTT1VUSCBCRUxUV09PRCBQQVJLV0FZCi0JCQkJREFMTEFTIFRYIDc1MjQ0LTMyOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTM2ICAgKGhleCkJCUFJVCBBdXN0cmlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSBHbWJICi0wMDYwMzYgICAgIChiYXNlIDE2KQkJQUlUIEF1c3RyaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5IEdtYkgKLQkJCQlEb25hdS1DaXR5LVN0cmHfZSAxCi0JCQkJVmllbm5hICAxMjIwCi0JCQkJQVVTVFJJQQotCi0wMC02MC0zNyAgIChoZXgpCQlOWFAgU2VtaWNvbmR1Y3RvcnMKLTAwNjAzNyAgICAgKGJhc2UgMTYpCQlOWFAgU2VtaWNvbmR1Y3RvcnMKLQkJCQlNaWxsYnJvb2sgVGVjaG5vbG9neSBDYW1wdXMKLQkJCQlNaWxsYnJvb2sgU291dGhhbXB0b24gU08xNSAwREoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC02MC0zOCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwNjAzOCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlHbG9iYWwgT3BlcmF0aW9ucyBFbmdpbmVlcmluZwotCQkJCURlcCA2ODAwIFByb2dyYW0gTWFuYWdlciA4MjAwIERpeGllIFJvYWQKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIDE2VCA1UDYgCi0JCQkJQ0FOQURBCi0KLTAwLTYwLTM5ICAgKGhleCkJCVNhbkNvbSBUZWNobm9sb2d5LCBJbmMuCi0wMDYwMzkgICAgIChiYXNlIDE2KQkJU2FuQ29tIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk3NzE5IFdPT0QgSE9MTE9XIERSSVZFCi0JCQkJU1VJVEUgIzE1NgotCQkJCUFVU1RJTiBUWCA3ODczMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtM0EgICAoaGV4KQkJUVVJQ0sgQ09OVFJPTFMgTFRELgotMDA2MDNBICAgICAoYmFzZSAxNikJCVFVSUNLIENPTlRST0xTIExURC4KLQkJCQlEVVJIQU0gSE9VU0UsIFdBUldJQ0sgQ09VUlQKLQkJCQlQQVJLIFJPQUQsIE1JRERMRVRPTgotCQkJCU1BTkNIRVNURVIgIE0yNCAxQUUgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTYwLTNCICAgKGhleCkJCUFNVEVDIHNwYQotMDA2MDNCICAgICAoYmFzZSAxNikJCUFNVEVDIHNwYQotCQkJCUxPQy4gUy4gTUFSVElOTwotCQkJCTUzMDI1IFBJQU5DQVNUQUdOQUlPIChTSUVOQSkgIAotCQkJCUlUQUxZCi0KLTAwLTYwLTNDICAgKGhleCkJCUhBR0lXQVJBIFNZUy1DT00gQ08uLCBMVEQuCi0wMDYwM0MgICAgIChiYXNlIDE2KQkJSEFHSVdBUkEgU1lTLUNPTSBDTy4sIExURC4KLQkJCQkyLTQtMyBOSVNISUtJIE5BS0EtS1UKLQkJCQlOQUdPWUEKLQkJCQlBSUNISSA0NjAgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTNEICAgKGhleCkJCTNDWAotMDA2MDNEICAgICAoYmFzZSAxNikJCTNDWAotCQkJCTIwODUgSEFNSUxUT04gQVZFLiwgLVNURS4jMjIwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTNFICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNjAzRSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTNGICAgKGhleCkJCVBBVEFQU0NPIERFU0lHTlMKLTAwNjAzRiAgICAgKGJhc2UgMTYpCQlQQVRBUFNDTyBERVNJR05TCi0JCQkJNTM1MCBQQVJUTkVSUyBDT1VSVAotCQkJCUZSRURFUklDSyBNRCAyMTcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNDAgICAoaGV4KQkJTkVUUk8gQ09SUC4KLTAwNjA0MCAgICAgKGJhc2UgMTYpCQlORVRSTyBDT1JQLgotCQkJCTMxMjAgU0NPVFQgQkxWRC4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNDEgICAoaGV4KQkJWW9rb2dhd2EgRWxlY3RyaWMgQ29ycG9yYXRpb24KLTAwNjA0MSAgICAgKGJhc2UgMTYpCQlZb2tvZ2F3YSBFbGVjdHJpYyBDb3Jwb3JhdGlvbgotCQkJCTItOS0zMSBOYWthY2hvLCBNdXNhc2hpbm8tc2hpCi0JCQkJVG9reW8gMTgwLTg3NTAgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTQyICAgKGhleCkJCVRLUyAoVVNBKSwgSU5DLgotMDA2MDQyICAgICAoYmFzZSAxNikJCVRLUyAoVVNBKSwgSU5DLgotCQkJCTEyMDEgQ09NTUVSQ0UKLQkJCQlSSUNIQVJEU09OIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00MyAgIChoZXgpCQlpRGlyZWN0LCBJTkMuCi0wMDYwNDMgICAgIChiYXNlIDE2KQkJaURpcmVjdCwgSU5DLgotCQkJCTEzODY1IFN1bnJpc2UgVmFsbHkgRHJpdmUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlIZXJuZG9uIFZBIDIwMTcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00NCAgIChoZXgpCQlMSVRUT04vUE9MWS1TQ0lFTlRJRklDCi0wMDYwNDQgICAgIChiYXNlIDE2KQkJTElUVE9OL1BPTFktU0NJRU5USUZJQwotCQkJCTIyMDAgU09VVEggTUFJTiBTVFJFRVQKLQkJCQlCTEFDS1NCVVJHIFZBIDI0MDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00NSAgIChoZXgpCQlQQVRITElHSFQgVEVDSE5PTE9HSUVTCi0wMDYwNDUgICAgIChiYXNlIDE2KQkJUEFUSExJR0hUIFRFQ0hOT0xPR0lFUwotCQkJCTc2NyBXQVJSRU4gUk9BRAotCQkJCUlUSEFDQSBOWSAxNDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNDYgICAoaGV4KQkJVk1FVFJPLCBJTkMuCi0wMDYwNDYgICAgIChiYXNlIDE2KQkJVk1FVFJPLCBJTkMuCi0JCQkJMTg4MCBEQUlSWSBBU0hGT1JELSBTVEUgIzUzNQotCQkJCUhPVVNUT04gVFggNzcwNzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTQ3ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNjA0NyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTQ4ICAgKGhleCkJCUVNQyBDT1JQT1JBVElPTgotMDA2MDQ4ICAgICAoYmFzZSAxNikJCUVNQyBDT1JQT1JBVElPTgotCQkJCTE3MSBTT1VUSCBTVC4sCi0JCQkJSE9QS0lOVE9OIE1BIDAxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00OSAgIChoZXgpCQlWSU5BIFRFQ0hOT0xPR0lFUwotMDA2MDQ5ICAgICAoYmFzZSAxNikJCVZJTkEgVEVDSE5PTE9HSUVTCi0JCQkJNiBVTklPTiBTUVVBUkUgLSBTVEUgRgotCQkJCVVOSU9OIENJVFkgQ0EgOTQ1ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTRBICAgKGhleCkJCVNBSUMgSURFQVMgR1JPVVAKLTAwNjA0QSAgICAgKGJhc2UgMTYpCQlTQUlDIElERUFTIEdST1VQCi0JCQkJNzEyMCBDT0xVTUJJQSBHQVRFV0FZIERSSVZFCi0JCQkJQ09MVU1CSUEgTUQgMjEwNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTRCICAgKGhleCkJCVNhZmUtY29tIEdtYkggJiBDby4gS0cKLTAwNjA0QiAgICAgKGJhc2UgMTYpCQlTYWZlLWNvbSBHbWJIICYgQ28uIEtHCi0JCQkJQnVyZyBMaWNodGVuZmVscwotCQkJCTM1MTA0IExpY2h0ZW5mZWxzICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLTRDICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwNjA0QyAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMjcgUlVFIExFQkxBTkMKLQkJCQlDRURFWCAxNSBQQVJJUyA3NTUxMgotCQkJCUZSQU5DRQotCi0wMC02MC00RCAgIChoZXgpCQlNTUMgTkVUV09SS1MsIElOQy4KLTAwNjA0RCAgICAgKGJhc2UgMTYpCQlNTUMgTkVUV09SS1MsIElOQy4KLQkJCQkxMTM0IEVBU1QgQVJRVUVTIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4Ni00NjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00RSAgIChoZXgpCQlDWUNMRSBDT01QVVRFUiBDT1JQT1JBVElPTiwgSU5DLgotMDA2MDRFICAgICAoYmFzZSAxNikJCUNZQ0xFIENPTVBVVEVSIENPUlBPUkFUSU9OLCBJTkMuCi0JCQkJMjAyNDUgU1RFVkVOUyBDUkVFSyBCTFZELgotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNEYgICAoaGV4KQkJU1VaVUtJIE1GRy4gQ08uLCBMVEQuCi0wMDYwNEYgICAgIChiYXNlIDE2KQkJU1VaVUtJIE1GRy4gQ08uLCBMVEQuCi0JCQkJNTUyLTUxIEFKSUdBVVJBCi0JCQkJSElUQUNISU5BS0EKLQkJCQlJQkFSQUtJLCAzMTEtMTIgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTUwICAgKGhleCkJCUlOVEVSTklYIElOQy4KLTAwNjA1MCAgICAgKGJhc2UgMTYpCQlJTlRFUk5JWCBJTkMuCi0JCQkJNTktMTAgVEFLQUtVUkEtQ0hPCi0JCQkJSEFDSElPSkkKLQkJCQlUT0tZTyAxOTIgCi0JCQkJSkFQQU4KLQotMDAtNjAtNTEgICAoaGV4KQkJUVVBTElUWSBTRU1JQ09ORFVDVE9SCi0wMDYwNTEgICAgIChiYXNlIDE2KQkJUVVBTElUWSBTRU1JQ09ORFVDVE9SCi0JCQkJODUxIE1BUlRJTiBBVkVOVUUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNTIgICAoaGV4KQkJUEVSSVBIRVJBTFMgRU5URVJQUklTRSBDTy4sIEx0ZC4KLTAwNjA1MiAgICAgKGJhc2UgMTYpCQlQRVJJUEhFUkFMUyBFTlRFUlBSSVNFIENPLiwgTHRkLgotCQkJCTNGLCBOTy4xMCwgQUxMRVkgNiwgTEFORSA0NQotCQkJCVBBTyBTSElOIFJPQUQsIEhTSU4gVElFTiBDSVRZCi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTYwLTUzICAgKGhleCkJCVRPWU9EQSBNQUNISU5FIFdPUktTLCBMVEQuCi0wMDYwNTMgICAgIChiYXNlIDE2KQkJVE9ZT0RBIE1BQ0hJTkUgV09SS1MsIExURC4KLQkJCQkxLTcgS0lUQUpJWk9ZQU1BIE5PREFDSE9VCi0JCQkJS0FSSVlBIENJVFksIEFJQ0hJICAKLQkJCQlKQVBBTgotCi0wMC02MC01NCAgIChoZXgpCQlDT05UUk9MV0FSRSBHTUJICi0wMDYwNTQgICAgIChiYXNlIDE2KQkJQ09OVFJPTFdBUkUgR01CSAotCQkJCVdBTERTVFJBU1NFIDkyCi0JCQkJNjMxMjggRElFVFpFTkJBQ0ggIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtNTUgICAoaGV4KQkJQ09STkVMTCBVTklWRVJTSVRZCi0wMDYwNTUgICAgIChiYXNlIDE2KQkJQ09STkVMTCBVTklWRVJTSVRZCi0JCQkJMTEwIE1BUExFIEFWRU5VRQotCQkJCUlUSEFDQSBOWSAxNDg1MC00OTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC01NiAgIChoZXgpCQlORVRXT1JLIFRPT0xTLCBJTkMuCi0wMDYwNTYgICAgIChiYXNlIDE2KQkJTkVUV09SSyBUT09MUywgSU5DLgotCQkJCTI5NzUgQk9XRVJTIEFWRU5VRSwgIzIwMgotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUxLTA5NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTU3ICAgKGhleCkJCU1VUkFUQSBNQU5VRkFDVFVSSU5HIENPLiwgTFRELgotMDA2MDU3ICAgICAoYmFzZSAxNikJCU1VUkFUQSBNQU5VRkFDVFVSSU5HIENPLiwgTFRELgotCQkJCTEtMTgtMSBIQUtVU0FOIE1JRE9SSS1LVQotCQkJCVlPS09IQU1BICAyMjYgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTU4ICAgKGhleCkJCUNPUFBFUiBNT1VOVEFJTiBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA2MDU4ICAgICAoYmFzZSAxNikJCUNPUFBFUiBNT1VOVEFJTiBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTY2NTAgTFVTSyBCTFZELi1TVEUgI0IxMDMKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTU5ICAgKGhleCkJCVRFQ0hOSUNBTCBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDA2MDU5ICAgICAoYmFzZSAxNikJCVRFQ0hOSUNBTCBDT01NVU5JQ0FUSU9OUyBDT1JQLgotCQkJCTEwMCBET01JTk8gRFJJVkUKLQkJCQlDT05DT1JEIE1BIDAxNzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC01QSAgIChoZXgpCQlDRUxDT1JFLCBJTkMuCi0wMDYwNUEgICAgIChiYXNlIDE2KQkJQ0VMQ09SRSwgSU5DLgotCQkJCTgwMDEgQ0VOVEVSVklFVyBQQVJLV0FZCi0JCQkJU1VJVEUgIzIwMQotCQkJCU1FTVBISVMgVE4gMzgwMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTVCICAgKGhleCkJCUludHJhU2VydmVyIFRlY2hub2xvZ3ksIEluYy4KLTAwNjA1QiAgICAgKGJhc2UgMTYpCQlJbnRyYVNlcnZlciBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTI1IEhPUFBJTkcgQlJPT0sgUEFSSwotCQkJCUhPTExJU1RPTiBNQSAwMTc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNUMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA2MDVDICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNUQgICAoaGV4KQkJU0NBTklWQUxWRSBDT1JQLgotMDA2MDVEICAgICAoYmFzZSAxNikJCVNDQU5JVkFMVkUgQ09SUC4KLQkJCQkxNzIyIE4uIE1BRFNPTiBTVFJFRVQKLQkJCQlMSUJFUlRZIExBS0UgV0EgOTkwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTVFICAgKGhleCkJCUxJQkVSVFkgVEVDSE5PTE9HWSBORVRXT1JLSU5HCi0wMDYwNUUgICAgIChiYXNlIDE2KQkJTElCRVJUWSBURUNITk9MT0dZIE5FVFdPUktJTkcKLQkJCQlQLk8uIEJPWCAxMTU2NgotCQkJCUhBVEZJRUxELCBQUkVUT1JJQSAwMDI4ICAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtNjAtNUYgICAoaGV4KQkJTklQUE9OIFVOSVNPRlQgQ09SUE9SQVRJT04KLTAwNjA1RiAgICAgKGJhc2UgMTYpCQlOSVBQT04gVU5JU09GVCBDT1JQT1JBVElPTgotCQkJCUJSIE5JTkdZT0NITyAxLDItMTMtOQotCQkJCU5JSE9OQkFTSEktTklOR1lPQ0hPLCBDSFVPLUtVCi0JCQkJVE9LWU8gMTAzICAKLQkJCQlKQVBBTgotCi0wMC02MC02MCAgIChoZXgpCQlEQVdOSU5HIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA2MDYwICAgICAoYmFzZSAxNikJCURBV05JTkcgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNDA5IE1BU09OIFJPQUQKLQkJCQlGQUlSUE9SVCBOWSAxNDQ1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNjEgICAoaGV4KQkJV0hJU1RMRSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDA2MDYxICAgICAoYmFzZSAxNikJCVdISVNUTEUgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQkxMTAgTUFSU0ggRFJJVkUtU1RFICMxMDAKLQkJCQlGT1NURVIgQ0lUWSBDQSA5NDQwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNjIgICAoaGV4KQkJVEVMRVNZTkMsIElOQy4KLTAwNjA2MiAgICAgKGJhc2UgMTYpCQlURUxFU1lOQywgSU5DLgotCQkJCTU1NTUgT0FLQlJPT0sgUEtXWS1TVEUgIzExMAotCQkJCU5PUkNST1NTIEdBIDMwMDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC02MyAgIChoZXgpCQlQU0lPTiBEQUNPTSBQTEMuCi0wMDYwNjMgICAgIChiYXNlIDE2KQkJUFNJT04gREFDT00gUExDLgotCQkJCVBTSU9OIERBQ09NIEhPVVNFCi0JCQkJUFJFU0xFWSBXQVksCi0JCQkJQ1JPV05ISUxMIE1JTFRPTiBLRVlORVMgIE1LOCAwRUYgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtNjQgICAoaGV4KQkJTkVUQ09NTSBMSU1JVEVECi0wMDYwNjQgICAgIChiYXNlIDE2KQkJTkVUQ09NTSBMSU1JVEVECi0JCQkJUE8gQk9YIDM3OQotCQkJCU5PUlRIIFJZREUsIE5TVywgMjExMyAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTYwLTY1ICAgKGhleCkJCUJFUk5FQ0tFUiAmIFJBSU5FUiBJTkRVU1RSSUUtRUxFS1RST05JQyBHbWJICi0wMDYwNjUgICAgIChiYXNlIDE2KQkJQkVSTkVDS0VSICYgUkFJTkVSIElORFVTVFJJRS1FTEVLVFJPTklDIEdtYkgKLQkJCQlFR0dFTFNCRVJHIDEyMAotCQkJCTUxNDIgRUdHRUxTQkVSRyAgCi0JCQkJQVVTVFJJQQotCi0wMC02MC02NiAgIChoZXgpCQlMQUNST0lYIFRyYWZpYwotMDA2MDY2ICAgICAoYmFzZSAxNikJCUxBQ1JPSVggVHJhZmljCi0JCQkJMSBlcmUgQXZlbnVlLCAxMSBlbWUgcnVlCi0JCQkJMDY1MTYgQ0FSUk9TICAKLQkJCQlGUkFOQ0UKLQotMDAtNjAtNjcgICAoaGV4KQkJQUNFUiBORVRYVVMgSU5DLgotMDA2MDY3ICAgICAoYmFzZSAxNikJCUFDRVIgTkVUWFVTIElOQy4KLQkJCQk1Ri0zLCA1IEhTSU4gQU5OIFJPQUQgIFNCSVAKLQkJCQlIU0lOQ0hVIDMwMCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC02MC02OCAgIChoZXgpCQlEaWFsb2dpYyBDb3Jwb3JhdGlvbgotMDA2MDY4ICAgICAoYmFzZSAxNikJCURpYWxvZ2ljIENvcnBvcmF0aW9uCi0JCQkJOTgwMCBDYXZlbmRpc2ggQmx2ZCwgNXRoIEZsb29yCi0JCQkJTW9udHJlYWwgUXVlYmVjIEg0TSAyVjkKLQkJCQlDQU5BREEKLQotMDAtNjAtNjkgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDYwNjkgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTZBICAgKGhleCkJCU1JVFNVQklTSEkgV0lSRUxFU1MgQ09NTVVOSUNBVElPTlMuIElOQy4KLTAwNjA2QSAgICAgKGJhc2UgMTYpCQlNSVRTVUJJU0hJIFdJUkVMRVNTIENPTU1VTklDQVRJT05TLiBJTkMuCi0JCQkJMjAwMSBDSEVSUlkgRFJJVkUKLQkJCQlCUkFTRUxUT04gR0EgMzA1MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTZCICAgKGhleCkJCVN5bmNsYXllciBJbmMuCi0wMDYwNkIgICAgIChiYXNlIDE2KQkJU3luY2xheWVyIEluYy4KLQkJCQkxLTIwIEhpbWVnYW9rYQotCQkJCUthbmktQ2l0eQotCQkJCUdJRlUgNTA5LTAyNDkgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTZDICAgKGhleCkJCUFSRVNDT00KLTAwNjA2QyAgICAgKGJhc2UgMTYpCQlBUkVTQ09NCi0JCQkJMjgzMyBKVU5DVElPTiBBVkUuIC0gU1RFICMyMDYKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNkQgICAoaGV4KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUC4KLTAwNjA2RCAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQLgotCQkJCTU1MCBLSU5HIFNUUkVFVAotCQkJCU0vUyBMS0cxLTMvQTEwCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC02RSAgIChoZXgpCQlEQVZJQ09NIFNFTUlDT05EVUNUT1IsIElOQy4KLTAwNjA2RSAgICAgKGJhc2UgMTYpCQlEQVZJQ09NIFNFTUlDT05EVUNUT1IsIElOQy4KLQkJCQkyNDU3IEFVR1VTVElORSBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC02RiAgIChoZXgpCQlDTEFSSU9OIENPUlBPUkFUSU9OIE9GIEFNRVJJQ0EKLTAwNjA2RiAgICAgKGJhc2UgMTYpCQlDTEFSSU9OIENPUlBPUkFUSU9OIE9GIEFNRVJJQ0EKLQkJCQkxNyBMQUtFU0lERSBPRkZJQ0UgUEFSSwotCQkJCTYwNyBOT1JUSCBBVkVOVUUKLQkJCQlXQUtFRklFTEQgTUEgMDE4ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTcwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNjA3MCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTcxICAgKGhleCkJCU1JREFTIExBQiwgSU5DLgotMDA2MDcxICAgICAoYmFzZSAxNikJCU1JREFTIExBQiwgSU5DLgotCQkJCTQgS0FUQU1BQ0hJLAotCQkJCVNISU5KVUtVLUtVCi0JCQkJVE9LWU8gMTYwIAotCQkJCUpBUEFOCi0KLTAwLTYwLTcyICAgKGhleCkJCVZYTCBJTlNUUlVNRU5UUywgTElNSVRFRAotMDA2MDcyICAgICAoYmFzZSAxNikJCVZYTCBJTlNUUlVNRU5UUywgTElNSVRFRAotCQkJCVBMT1QgTk8uIDE3LCBLT05BUFBBTkEgQUdSQUhBUkEKLQkJCQlFTEVDVFJPTklDIENJVFkKLQkJCQlCQU5HQUxPUkUgLSAgNTYxIDIyOSAgCi0JCQkJSU5ESUEKLQotMDAtNjAtNzMgICAoaGV4KQkJUkVEQ1JFRUsgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwNjA3MyAgICAgKGJhc2UgMTYpCQlSRURDUkVFSyBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTM5MDAgTkVXUEFSSyBNQUxMIFJPQUQKLQkJCQlORVdBUksgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTc0ICAgKGhleCkJCVFTQyBBVURJTyBQUk9EVUNUUwotMDA2MDc0ICAgICAoYmFzZSAxNikJCVFTQyBBVURJTyBQUk9EVUNUUwotCQkJCTE2NzUgTUFDQVJUSFVSIEJMVkQuCi0JCQkJQ09TVEEgTUVTQSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNzUgICAoaGV4KQkJUEVOVEVLLCBJTkMuCi0wMDYwNzUgICAgIChiYXNlIDE2KQkJUEVOVEVLLCBJTkMuCi0JCQkJMSBQQVJLIFdBWQotCQkJCVVQUEVSIFNBRERMRSBSSVZFUiBOSiAwNzQ1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNzYgICAoaGV4KQkJU0NITFVNQkVSR0VSIFRFQ0hOT0xPR0lFUyBSRVRBSUwgUEVUUk9MRVVNIFNZU1RFTVMKLTAwNjA3NiAgICAgKGJhc2UgMTYpCQlTQ0hMVU1CRVJHRVIgVEVDSE5PTE9HSUVTIFJFVEFJTCBQRVRST0xFVU0gU1lTVEVNUwotCQkJCTgyNS1NIEdSRUVOQlJJRVIgQ0lSQ0xFCi0JCQkJQ0hFU0FQRUFLRSBWQSAyMzMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNzcgICAoaGV4KQkJUFJJU0EgTkVUV09SS1MKLTAwNjA3NyAgICAgKGJhc2UgMTYpCQlQUklTQSBORVRXT1JLUwotCQkJCTY2MjAgTWVzYSBSaWRnZSBSb2FkLAotCQkJCVN1aXRlIDIwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNzggICAoaGV4KQkJUE9XRVIgTUVBU1VSRU1FTlQgTFRELgotMDA2MDc4ICAgICAoYmFzZSAxNikJCVBPV0VSIE1FQVNVUkVNRU5UIExURC4KLQkJCQkyMTk1IEtFQVRJTkcgQ1JPU1MgUk9BRAotCQkJCVNBQU5JQ0hUT04sIEIuQy4gVjhNIDJBNSAgCi0JCQkJQ0FOQURBCi0KLTAwLTYwLTc5ICAgKGhleCkJCU1haW5zdHJlYW0gRGF0YSwgSW5jLgotMDA2MDc5ICAgICAoYmFzZSAxNikJCU1haW5zdHJlYW0gRGF0YSwgSW5jLgotCQkJCTM3NSBDaGlwZXRhIFdheSwgU3VpdGUgQgotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03QSAgIChoZXgpCQlEVlMgR21iSAotMDA2MDdBICAgICAoYmFzZSAxNikJCURWUyBHbWJICi0JCQkJS1JFUEVOU1RSQVNTRSA4Ci0JCQkJRC0zMDE2NSBIQU5OT1ZFUiAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC03QiAgIChoZXgpCQlGT1JFIFNZU1RFTVMsIElOQy4KLTAwNjA3QiAgICAgKGJhc2UgMTYpCQlGT1JFIFNZU1RFTVMsIElOQy4KLQkJCQkxMDAwIEZPUkUgRFJJVkUKLQkJCQlXQVJSRU5EQUxFIFBBIDE1MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03QyAgIChoZXgpCQlXYXZlQWNjZXNzLCBMdGQuCi0wMDYwN0MgICAgIChiYXNlIDE2KQkJV2F2ZUFjY2VzcywgTHRkLgotCQkJCVAuTy4gQk9YIDI0NzMKLQkJCQkxMCBIQVlFWklSQSBTVFJFRVQKLQkJCQlSQSdBTkFOQSA0MzY2MyAgCi0JCQkJSVNSQUVMCi0KLTAwLTYwLTdEICAgKGhleCkJCVNFTlRJRU5UIE5FVFdPUktTIElOQy4KLTAwNjA3RCAgICAgKGJhc2UgMTYpCQlTRU5USUVOVCBORVRXT1JLUyBJTkMuCi0JCQkJMjIwMSBDQU5UVSBDT1VSVC1TVEUgIzIwNQotCQkJCVNBUkFTT1RBIEZMIDM0MjMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03RSAgIChoZXgpCQlHSUdBTEFCUywgSU5DLgotMDA2MDdFICAgICAoYmFzZSAxNikJCUdJR0FMQUJTLCBJTkMuCi0JCQkJMjkwIFNBTlRBIEFOQSBDT1VSVAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtN0YgICAoaGV4KQkJQVVST1JBIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA2MDdGICAgICAoYmFzZSAxNikJCUFVUk9SQSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxNzYgU0VDT05EIEFWRU5VRQotCQkJCVdBTFRIQU0gTUEgMDIxNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTgwICAgKGhleCkJCU1JQ1JPVFJPTklYIERBVEFDT00gTFRELgotMDA2MDgwICAgICAoYmFzZSAxNikJCU1JQ1JPVFJPTklYIERBVEFDT00gTFRELgotCQkJCTIwMCBBQkVSREVFTiBEUklWRQotCQkJCUxPTkRPTiwgT05UQVJJTyBONVYgNE4yICAKLQkJCQlDQU5BREEKLQotMDAtNjAtODEgICAoaGV4KQkJVFYvQ09NIElOVEVSTkFUSU9OQUwKLTAwNjA4MSAgICAgKGJhc2UgMTYpCQlUVi9DT00gSU5URVJOQVRJT05BTAotCQkJCTE2NTE2IFZJQSBFU1BSSUxMTwotCQkJCVNBTiBESUVHTyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtODIgICAoaGV4KQkJTk9WQUxJTksgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDYwODIgICAgIChiYXNlIDE2KQkJTk9WQUxJTksgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNDg1MTEgV0FSTSBTUFJJTkdTIEJMVkQuICMyMDgKLQkJCQlGUkVNT05UIENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04MyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDYwODMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04NCAgIChoZXgpCQlESUdJVEFMIFZJREVPCi0wMDYwODQgICAgIChiYXNlIDE2KQkJRElHSVRBTCBWSURFTwotCQkJCTQ5MjAgQVZBTE9OIFJJREdFIFBLV1kKLQkJCQlTVUlURSAjNjAwCi0JCQkJTk9SQ1JPU1MgR0EgMzAwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTg1ICAgKGhleCkJCVN0b3JhZ2UgQ29uY2VwdHMKLTAwNjA4NSAgICAgKGJhc2UgMTYpCQlTdG9yYWdlIENvbmNlcHRzCi0JCQkJMTQzNTIgQ2hhbWJlciBSb2FkCi0JCQkJVHVzdGluIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04NiAgIChoZXgpCQlMT0dJQyBSRVBMQUNFTUVOVCBURUNILiBMVEQuCi0wMDYwODYgICAgIChiYXNlIDE2KQkJTE9HSUMgUkVQTEFDRU1FTlQgVEVDSC4gTFRELgotCQkJCTE0IEFSS1dSSUdIVCBST0FECi0JCQkJUkVBRElORyBCRVJLUyBSRzIwTFMKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTYwLTg3ICAgKGhleCkJCUtBTlNBSSBFTEVDVFJJQyBDTy4sIExURC4KLTAwNjA4NyAgICAgKGJhc2UgMTYpCQlLQU5TQUkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJNi0xNC05IE1JRE9SSUksIEFTQU1JTkFNSS1LVQotCQkJCUhJUk9TSElNQSA3MzEtMDEgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTg4ICAgKGhleCkJCVdISVRFIE1PVU5UQUlOIERTUCwgSU5DLgotMDA2MDg4ICAgICAoYmFzZSAxNikJCVdISVRFIE1PVU5UQUlOIERTUCwgSU5DLgotCQkJCTQxMCBBTUhFUlNUIFNUUkVFVC1TVEUgIzMyNQotCQkJCU5BU0hVQSBOSCAwMzA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtODkgICAoaGV4KQkJWEFUQQotMDA2MDg5ICAgICAoYmFzZSAxNikJCVhBVEEKLQkJCQkxNTEgRUFTVCBDTElGRiBST0FELVNURS4jMTAKLQkJCQlCVVJOU1ZJTExFIE1OIDU1MzM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04QSAgIChoZXgpCQlDSVRBREVMIENPTVBVVEVSCi0wMDYwOEEgICAgIChiYXNlIDE2KQkJQ0lUQURFTCBDT01QVVRFUgotCQkJCTI5IEFSTU9SWSBSRAotCQkJCU1JTEZPUkQgTUEgMDMwNTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLThCICAgKGhleCkJCUNvbmZlclRlY2ggSW50ZXJuYXRpb25hbAotMDA2MDhCICAgICAoYmFzZSAxNikJCUNvbmZlclRlY2ggSW50ZXJuYXRpb25hbAotCQkJCTEyMTEwIE4uIFBFQ09TIFNUUkVFVAotCQkJCVdFU1RNSU5TVEVSIENPIDgwMjM0LTIwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLThDICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwNjA4QyAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCQVlGUk9OVCBQTEFaQQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyLTgxNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLThEICAgKGhleCkJCVVOSVBVTFNFIENPUlAuCi0wMDYwOEQgICAgIChiYXNlIDE2KQkJVU5JUFVMU0UgQ09SUC4KLQkJCQkyLTcsIFNFTkdFTkRBSS1OSVNISQotCQkJCUtPU0hJR0FZQS1DSVRZCi0JCQkJU0FJVEFNQSAzNDMgIAotCQkJCUpPUkRBTgotCi0wMC02MC04RSAgIChoZXgpCQlIRSBFTEVDVFJPTklDUywgVEVDSE5PTE9HSUUgJiBTWVNURU1URUNITklLIEdtYkgKLTAwNjA4RSAgICAgKGJhc2UgMTYpCQlIRSBFTEVDVFJPTklDUywgVEVDSE5PTE9HSUUgJiBTWVNURU1URUNITklLIEdtYkgKLQkJCQlBTSBHTkVJU0VOQVVGTE9UIDgKLQkJCQkgRC02NjUzOCBORVVOSElSQ0hFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC04RiAgIChoZXgpCQlURUtSQU0gVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwNjA4RiAgICAgKGJhc2UgMTYpCQlURUtSQU0gVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQlCMSwgTk8uIDE3LCBMQU5FIDE1OSwgU0VDLiA2Ci0JCQkJUk9PU0VWRUxUIFJELAotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC02MC05MCAgIChoZXgpCQlBcnRpemEgTmV0d29ya3MgSW5jCi0wMDYwOTAgICAgIChiYXNlIDE2KQkJQXJ0aXphIE5ldHdvcmtzIEluYwotCQkJCUZhcmV0IFRhY2hpa2F3YSBDZW50ZXIgU3F1YXJlLCAyLTM2LTIgQWtlYm9uby1jaG8sIAotCQkJCVRhY2hpa2F3YS1zaGksIFRva3lvICAxOTAtMDAxMgotCQkJCUpBUEFOCi0KLTAwLTYwLTkxICAgKGhleCkJCUZJUlNUIFBBQ0lGSUMgTkVUV09SS1MsIElOQy4KLTAwNjA5MSAgICAgKGJhc2UgMTYpCQlGSVJTVCBQQUNJRklDIE5FVFdPUktTLCBJTkMuCi0JCQkJODcxIEZPWCBMQU5FCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTkyICAgKGhleCkJCU1JQ1JPL1NZUywgSU5DLgotMDA2MDkyICAgICAoYmFzZSAxNikJCU1JQ1JPL1NZUywgSU5DLgotCQkJCTM0NDcgT0NFQU4gVklFVyBCTFZELgotCQkJCUdMRU5EQUxFIENBIDkxMjA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05MyAgIChoZXgpCQlWQVJJQU4KLTAwNjA5MyAgICAgKGJhc2UgMTYpCQlWQVJJQU4KLQkJCQkyNzAwIE1JVENIRUxMIERSLgotCQkJCVdBTE5VVCBHUkVFSyBDQSA5NDU5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOTQgICAoaGV4KQkJSUJNIENvcnAKLTAwNjA5NCAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQTyBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTk1ICAgKGhleCkJCUFDQ1UtVElNRSBTWVNURU1TLCBJTkMuCi0wMDYwOTUgICAgIChiYXNlIDE2KQkJQUNDVS1USU1FIFNZU1RFTVMsIElOQy4KLQkJCQk0MjAgU09NRVJTIFJPQUQKLQkJCQlFTExJTkdUT04gQ1QgMDYwMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTk2ICAgKGhleCkJCVQuUy4gTUlDUk9URUNIIElOQy4KLTAwNjA5NiAgICAgKGJhc2UgMTYpCQlULlMuIE1JQ1JPVEVDSCBJTkMuCi0JCQkJMjA4MTggSElHR0lOUyBDT1VSVAotCQkJCVRPUlJBTkNFIENBIDkwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05NyAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMDYwOTcgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQkFZRlJPTlQgUExBWkEKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOTggICAoaGV4KQkJSFQgQ09NTVVOSUNBVElPTlMKLTAwNjA5OCAgICAgKGJhc2UgMTYpCQlIVCBDT01NVU5JQ0FUSU9OUwotCQkJCTQ0ODAgU0hPUFBJTkcgTEFORQotCQkJCVNJTUkgVkFMTEVZIENBIDkzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05OSAgIChoZXgpCQlTQkUsIEluYy4KLTAwNjA5OSAgICAgKGJhc2UgMTYpCQlTQkUsIEluYy4KLQkJCQkyMzA1IENhbWlubyBSYW1vbgotCQkJCVN1aXRlIDIwMAotCQkJCVNhbiBSYW1vbiBDQSA5NDU4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOUEgICAoaGV4KQkJTkpLIFRFQ0hOTyBDTy4KLTAwNjA5QSAgICAgKGJhc2UgMTYpCQlOSksgVEVDSE5PIENPLgotCQkJCU4xLTI1IEtBTUlZQVNBVE8KLQkJCQlLT01BVFNVICAjOTIzICAKLQkJCQlKQVBBTgotCi0wMC02MC05QiAgIChoZXgpCQlBU1RSTy1NRUQsIElOQy4KLTAwNjA5QiAgICAgKGJhc2UgMTYpCQlBU1RSTy1NRUQsIElOQy4KLQkJCQk2MDAgRUFTVCBHUkVFTldJQ0ggQVZFLgotCQkJCVdFU1QgV0FSV0lDSyBSSSAwMjg5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOUMgICAoaGV4KQkJUGVya2luLUVsbWVyIEluY29ycG9yYXRlZAotMDA2MDlDICAgICAoYmFzZSAxNikJCVBlcmtpbi1FbG1lciBJbmNvcnBvcmF0ZWQKLQkJCQk3MTAgQnJpZGdlcG9ydCBBdmUuCi0JCQkJU2hlbHRvbiBDVCAwNjQ4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOUQgICAoaGV4KQkJUE1JIEZPT0QgRVFVSVBNRU5UIEdST1VQCi0wMDYwOUQgICAgIChiYXNlIDE2KQkJUE1JIEZPT0QgRVFVSVBNRU5UIEdST1VQCi0JCQkJNzAxIFJJREdFIEFWRU5VRQotCQkJCVRST1kgT0ggNDUzNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTlFICAgKGhleCkJCUFTQyBYMyAtIElORk9STUFUSU9OIFRFQ0hOT0xPR1kgU1RBTkRBUkRTIFNFQ1JFVEFSSUFUUwotMDA2MDlFICAgICAoYmFzZSAxNikJCUFTQyBYMyAtIElORk9STUFUSU9OIFRFQ0hOT0xPR1kgU1RBTkRBUkRTIFNFQ1JFVEFSSUFUUwotCQkJCTEyNTAgRVlFIFNUUkVFVCBOVyAtIFNURSAjMjAwCi0JCQkJV0FTSElOR1RPTiBEQyAyMDAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOUYgICAoaGV4KQkJUEhBU1QgQ09SUE9SQVRJT04KLTAwNjA5RiAgICAgKGJhc2UgMTYpCQlQSEFTVCBDT1JQT1JBVElPTgotCQkJCTc5IFdFU1QgNDUwMCBTT1VUSCAtIEJMREcuIzE0Ci0JCQkJU0FMVCBMQUtFIENJVFkgVVQgODQxMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUEwICAgKGhleCkJCVNXSVRDSEVEIE5FVFdPUksgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDYwQTAgICAgIChiYXNlIDE2KQkJU1dJVENIRUQgTkVUV09SSyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMzgwNSAxU1QgQVZFTlVFIE5PUlRICi0JCQkJUExZTU9VVEggTU4gNTU0NDEtNTQ1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQTEgICAoaGV4KQkJVlBOZXQsIEluYy4KLTAwNjBBMSAgICAgKGJhc2UgMTYpCQlWUE5ldCwgSW5jLgotCQkJCTU1NSBOLiBNQVRISUxEQSBBVkUuLC1TVEUgIzExMAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQTIgICAoaGV4KQkJTklIT04gVU5JU1lTIExJTUlURUQgQ08uCi0wMDYwQTIgICAgIChiYXNlIDE2KQkJTklIT04gVU5JU1lTIExJTUlURUQgQ08uCi0JCQkJUC5PLiBCT1ggMTM1Ci0JCQkJVE9LWU8tVE8sICBLT1VUT1UtS1UKLQkJCQlTSElOT05PTUUgMS0xMC05ICAKLQkJCQlKQVBBTgotCi0wMC02MC1BMyAgIChoZXgpCQlDT05USU5VVU0gVEVDSE5PTE9HWSBDT1JQLgotMDA2MEEzICAgICAoYmFzZSAxNikJCUNPTlRJTlVVTSBURUNITk9MT0dZIENPUlAuCi0JCQkJMjIwIENPTlRJTlVVTSBEUklWRQotCQkJCUZMRVRDSEVSIE5DIDI4NzMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1BNCAgIChoZXgpCQlHUklOQUtFUiBTWVNURU0gVEVDSE5PTE9HSUVTCi0wMDYwQTQgICAgIChiYXNlIDE2KQkJR1JJTkFLRVIgU1lTVEVNIFRFQ0hOT0xPR0lFUwotCQkJCUJPWCA5MTItNTYxCi0JCQkJU0lMVkVSVE9OICAwMTI3ICAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtNjAtQTUgICAoaGV4KQkJUEVSRk9STUFOQ0UgVEVMRUNPTSBDT1JQLgotMDA2MEE1ICAgICAoYmFzZSAxNikJCVBFUkZPUk1BTkNFIFRFTEVDT00gQ09SUC4KLQkJCQkxMCBDQVJMU09OIFJPQUQKLQkJCQlST0NIRVNURVIgTlkgMTQ2MTAtMTAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQTYgICAoaGV4KQkJUEFSVElDTEUgTUVBU1VSSU5HIFNZU1RFTVMKLTAwNjBBNiAgICAgKGJhc2UgMTYpCQlQQVJUSUNMRSBNRUFTVVJJTkcgU1lTVEVNUwotCQkJCTU0NzUgQUlSUE9SVCBCTFZELgotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUE3ICAgKGhleCkJCU1JQ1JPU0VOUyBHbWJIICYgQ08uIEtHCi0wMDYwQTcgICAgIChiYXNlIDE2KQkJTUlDUk9TRU5TIEdtYkggJiBDTy4gS0cKLQkJCQlLdWVmZXJzdHJhc3NlIDE2Ci0JCQkJRC01OTA2NyBIYW1tICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLUE4ICAgKGhleCkJCVRJRE9NQVQgQUIKLTAwNjBBOCAgICAgKGJhc2UgMTYpCQlUSURPTUFUIEFCCi0JCQkJCi0JCQkJUy0xMjA4OSBTVE9DS0hPTE0gIAotCQkJCVNXRURFTgotCi0wMC02MC1BOSAgIChoZXgpCQlHRVNZVEVDIE1iSAotMDA2MEE5ICAgICAoYmFzZSAxNikJCUdFU1lURUMgTWJICi0JCQkJUEFTQ0FMU1RSQVNTRSA2Ci0JCQkJRCA1MjA3NiBBQUNIRU4gIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtQUEgICAoaGV4KQkJSU5URUxMSUdFTlQgREVWSUNFUyBJTkMuIChJREkpCi0wMDYwQUEgICAgIChiYXNlIDE2KQkJSU5URUxMSUdFTlQgREVWSUNFUyBJTkMuIChJREkpCi0JCQkJMTcxOC1MIEJFTE1PTlQgQVZFTlVFCi0JCQkJQkFMVElNT1JFIE1EIDIxMjQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1BQiAgIChoZXgpCQlMQVJTQ09NIElOQ09SUE9SQVRFRAotMDA2MEFCICAgICAoYmFzZSAxNikJCUxBUlNDT00gSU5DT1JQT1JBVEVECi0JCQkJMTg0NSBNQ0NBTkRMRVNTIERSSVZFCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUFDICAgKGhleCkJCVJFU0lMSUVOQ0UgQ09SUE9SQVRJT04KLTAwNjBBQyAgICAgKGJhc2UgMTYpCQlSRVNJTElFTkNFIENPUlBPUkFUSU9OCi0JCQkJMTc1NSBFTUJBUkNBREVSTyBST0FELVNURSAjMTIwCi0JCQkJUEFMTyBBTFRPIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1BRCAgIChoZXgpCQlNZWdhQ2hpcHMgQ29ycG9yYXRpb24KLTAwNjBBRCAgICAgKGJhc2UgMTYpCQlNZWdhQ2hpcHMgQ29ycG9yYXRpb24KLQkJCQk0LTEtNixNaXlhaGFyYQotCQkJCVlvZG9nYXdhLWt1Ci0JCQkJT3Nha2EgNTMyLTAwMDMKLQkJCQlKQVBBTgotCi0wMC02MC1BRSAgIChoZXgpCQlUUklPIElORk9STUFUSU9OIFNZU1RFTVMgQUIKLTAwNjBBRSAgICAgKGJhc2UgMTYpCQlUUklPIElORk9STUFUSU9OIFNZU1RFTVMgQUIKLQkJCQlGT0dERVZBR0VOIDRCCi0JCQkJUy0xODMgNjQgVEFCWSAKLQkJCQlTV0VERU4KLQotMDAtNjAtQUYgICAoaGV4KQkJUEFDSUZJQyBNSUNSTyBEQVRBLCBJTkMuCi0wMDYwQUYgICAgIChiYXNlIDE2KQkJUEFDSUZJQyBNSUNSTyBEQVRBLCBJTkMuCi0JCQkJMTY3NTEgTUlMTElLQU4gQVZFTlVFCi0JCQkJSVJWSU5FIENBIDkyNzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1CMCAgIChoZXgpCQlIRVdMRVRULVBBQ0tBUkQgQ08uCi0wMDYwQjAgICAgIChiYXNlIDE2KQkJSEVXTEVUVC1QQUNLQVJEIENPLgotCQkJCU1TIDQyTEUKLQkJCQkxMDAwMCBXT0xGRSBST0FECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1CMSAgIChoZXgpCQlJTlBVVC9PVVRQVVQsIElOQy4KLTAwNjBCMSAgICAgKGJhc2UgMTYpCQlJTlBVVC9PVVRQVVQsIElOQy4KLQkJCQkxMjMwMCBQQVJDIENSRVNUIERSSVZFCi0JCQkJU1RBRkZPUkQgVFggNzc0NzctMjQxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQjIgICAoaGV4KQkJUFJPQ0VTUyBDT05UUk9MIENPUlAuCi0wMDYwQjIgICAgIChiYXNlIDE2KQkJUFJPQ0VTUyBDT05UUk9MIENPUlAuCi0JCQkJNjg3NSBNSU1NUyBEUklWRQotCQkJCUFUTEFOVEEgR0EgMzAzNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUIzICAgKGhleCkJCVotQ09NLCBJTkMuCi0wMDYwQjMgICAgIChiYXNlIDE2KQkJWi1DT00sIElOQy4KLQkJCQk3Ri0yLCBOTy45LCBQUk9TUEVSSVRZIDFTVCBSRC4KLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNjAtQjQgICAoaGV4KQkJR0xFTkFZUkUgUiZEIElOQy4KLTAwNjBCNCAgICAgKGJhc2UgMTYpCQlHTEVOQVlSRSBSJkQgSU5DLgotCQkJCTE1NzAgS09PVEVOQVkgU1RSRUVUCi0JCQkJVkFOQ09VVkVSLCBCQyBWNUsgNUI4ICAKLQkJCQlDQU5BREEKLQotMDAtNjAtQjUgICAoaGV4KQkJS0VCQSBHbWJICi0wMDYwQjUgICAgIChiYXNlIDE2KQkJS0VCQSBHbWJICi0JCQkJR0VXRVJCRVBBUksgVVJGQUhSCi0JCQkJQS00MDQxIExJTlogIAotCQkJCUFVU1RSSUEKLQotMDAtNjAtQjYgICAoaGV4KQkJTEFORCBDT01QVVRFUiBDTy4sIExURC4KLTAwNjBCNiAgICAgKGJhc2UgMTYpCQlMQU5EIENPTVBVVEVSIENPLiwgTFRELgotCQkJCTctNC0xNyBOSVNISU5BS0FKSU1BCi0JCQkJWU9ET0dBV0FLVSA1MzIgIAotCQkJCUpBUEFOCi0KLTAwLTYwLUI3ICAgKGhleCkJCUNIQU5ORUxNQVRJQywgSU5DLgotMDA2MEI3ICAgICAoYmFzZSAxNikJCUNIQU5ORUxNQVRJQywgSU5DLgotCQkJCTE3MDAgR0lMTEVTUElFIFdBWQotCQkJCUVMIENBSk9OIENBIDkyMDIwLTA5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUI4ICAgKGhleCkJCUNPUkVMSVMgSW5jLgotMDA2MEI4ICAgICAoYmFzZSAxNikJCUNPUkVMSVMgSW5jLgotCQkJCTEyNjA3IEhpZGRlbmNyZWVrIFdheQotCQkJCUNlcnJpdG9zIENBIDkwNzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1COSAgIChoZXgpCQlORUMgSW5mcm9udGlhIENvcnBvcmF0aW9uCi0wMDYwQjkgICAgIChiYXNlIDE2KQkJTkVDIEluZnJvbnRpYSBDb3Jwb3JhdGlvbgotCQkJCTItNi0xLEtpdGFtaWthdGEsVGFrYXRzdS1rdQotCQkJCUthd2FzYWtpICAyMTMtODUxMQotCQkJCUpBUEFOCi0KLTAwLTYwLUJBICAgKGhleCkJCVNBSEFSQSBORVRXT1JLUywgSU5DLgotMDA2MEJBICAgICAoYmFzZSAxNikJCVNBSEFSQSBORVRXT1JLUywgSU5DLgotCQkJCTMzNSBISUdITEFORCBBVkUuCi0JCQkJQ0hFU0hJUkUgQ1QgMDY0MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUJCICAgKGhleCkJCUNBQkxFVFJPTiAtIE5FVExJTkssIElOQy4KLTAwNjBCQiAgICAgKGJhc2UgMTYpCQlDQUJMRVRST04gLSBORVRMSU5LLCBJTkMuCi0JCQkJMzUgSU5EVVNUUklBTCBXQVkKLQkJCQlQLk8uIEJPWCA1MDA1Ci0JCQkJUk9DSEVTVEVSIE5IIDAzODY2LTUwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUJDICAgKGhleCkJCUtldW5Zb3VuZyBFbGVjdHJvbmljcyAmIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0wMDYwQkMgICAgIChiYXNlIDE2KQkJS2V1bllvdW5nIEVsZWN0cm9uaWNzICYgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQkzMjUtNzYsIERBRUhFVU5HLURPTkcsIE1BUE8tR1UsCi0JCQkJU0VPVUwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC02MC1CRCAgIChoZXgpCQlIVUJCRUxMLVBVTFNFQ09NCi0wMDYwQkQgICAgIChiYXNlIDE2KQkJSFVCQkVMTC1QVUxTRUNPTQotCQkJCTI5MDAgVE9XRVJWSUVXIFJPQUQKLQkJCQlIRVJORE9OIFZBIDIxMDcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1CRSAgIChoZXgpCQlXRUJUUk9OSUNTCi0wMDYwQkUgICAgIChiYXNlIDE2KQkJV0VCVFJPTklDUwotCQkJCTNCLTEgIDgtMi0xMgotCQkJCU5JU0hJLUdPVEFOREEKLQkJCQlTSElOQUdBV0EtS1UgVE9LWU8gMTQxICAKLQkJCQlKQVBBTgotCi0wMC02MC1CRiAgIChoZXgpCQlNQUNSQUlHT1IgU1lTVEVNUywgSU5DLgotMDA2MEJGICAgICAoYmFzZSAxNikJCU1BQ1JBSUdPUiBTWVNURU1TLCBJTkMuCi0JCQkJUE8gQk9YIDEwMDgKLQkJCQlCUk9PS0xJTkUgVklMTEFHRSBNQSAwMjE0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQzAgICAoaGV4KQkJTmVyYSBOZXR3b3JrcyBBUwotMDA2MEMwICAgICAoYmFzZSAxNikJCU5lcmEgTmV0d29ya3MgQVMKLQkJCQlLb2tzdGFkdmVpZW4gMjMKLQkJCQlCZXJnZW4gIDUwMjAKLQkJCQlOT1JXQVkKLQotMDAtNjAtQzEgICAoaGV4KQkJV2F2ZVNwYW4gQ29ycG9yYXRpb24KLTAwNjBDMSAgICAgKGJhc2UgMTYpCQlXYXZlU3BhbiBDb3Jwb3JhdGlvbgotCQkJCTUwMCBOLiBCRVJOQVJETyBBVkUuCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQzIgICAoaGV4KQkJTVBMIEFHCi0wMDYwQzIgICAgIChiYXNlIDE2KQkJTVBMIEFHCi0JCQkJVGFlZmVybnN0cmFzc2UgMjAKLQkJCQlDSC01NDA1IERhZXR0d2lsIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTYwLUMzICAgKGhleCkJCU5FVFZJU0lPTiBDT1JQT1JBVElPTgotMDA2MEMzICAgICAoYmFzZSAxNikJCU5FVFZJU0lPTiBDT1JQT1JBVElPTgotCQkJCU1TIyAxQQotCQkJCU9ORSBDT01BQyBMT09QCi0JCQkJUk9OS09OS09NQSBOWSAxMTc3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQzQgICAoaGV4KQkJU09MSVRPTiBTWVNURU1TIEsuSy4KLTAwNjBDNCAgICAgKGJhc2UgMTYpCQlTT0xJVE9OIFNZU1RFTVMgSy5LLgotCQkJCTItNC0zIFNISU5KVUtVLCBTSElOSlVLVS1LVQotCQkJCVRPS1lPIDE2MCAgCi0JCQkJSkFQQU4KLQotMDAtNjAtQzUgICAoaGV4KQkJQU5DT1QgQ09SUC4KLTAwNjBDNSAgICAgKGJhc2UgMTYpCQlBTkNPVCBDT1JQLgotCQkJCTExNSBDT05TVElUVVRJT04gRFIuCi0JCQkJTUVOTE8gUEFSSyBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQzYgICAoaGV4KQkJRENTIEFHCi0wMDYwQzYgICAgIChiYXNlIDE2KQkJRENTIEFHCi0JCQkJU0FMWkFDSFNUUkFTUyAzMQotCQkJCUQtMTQxMjkgIEJFUkxJTiAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC1DNyAgIChoZXgpCQlBTUFUSSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDA2MEM3ICAgICAoYmFzZSAxNikJCUFNQVRJIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJMjA0MyBTQU1BUklUQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQzggICAoaGV4KQkJS1VLQSBXRUxESU5HIFNZU1RFTVMgJiBST0JPVFMKLTAwNjBDOCAgICAgKGJhc2UgMTYpCQlLVUtBIFdFTERJTkcgU1lTVEVNUyAmIFJPQk9UUwotCQkJCUJMVUVDSEVSU1RSQVNTRSAxNDQKLQkJCQlERVBULiBSRS1TSAotCQkJCUQtODYxNjUgQVVHU0JVUkcgIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtQzkgICAoaGV4KQkJQ29udHJvbE5ldCwgSW5jLgotMDA2MEM5ICAgICAoYmFzZSAxNikJCUNvbnRyb2xOZXQsIEluYy4KLQkJCQk3NDcgQ0FNREVOLCBTVEUuIEEKLQkJCQlDQU1QQkVMTCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQ0EgICAoaGV4KQkJSEFSTU9OSUMgU1lTVEVNUyBJTkNPUlBPUkFURUQKLTAwNjBDQSAgICAgKGJhc2UgMTYpCQlIQVJNT05JQyBTWVNURU1TIElOQ09SUE9SQVRFRAotCQkJCTE5OSAxU1QgU1RSRUVUIC0gU1RFICMzMDIKLQkJCQlMT1MgQUxUT1MgQ0EgOTQwMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUNCICAgKGhleCkJCUhJVEFDSEkgWk9TRU4gQ09SUE9SQVRJT04KLTAwNjBDQiAgICAgKGJhc2UgMTYpCQlISVRBQ0hJIFpPU0VOIENPUlBPUkFUSU9OCi0JCQkJMy00LCBTQUtVUkFKSU1BIDEtQ0hPTUUKLQkJCQlLT05PSEFOQS1LVSwgT1NBS0EgNTU0ICAKLQkJCQlKQVBBTgotCi0wMC02MC1DQyAgIChoZXgpCQlFTVRSQUssIElOQ09SUE9SQVRFRAotMDA2MENDICAgICAoYmFzZSAxNikJCUVNVFJBSywgSU5DT1JQT1JBVEVECi0JCQkJNzE1MCBDQU1QVVMgRFJJVkUsIFNURSAjMTgwCi0JCQkJQ09MT1JBRE8gU1BSSU5HUyBDTyA4MDkyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQ0QgICAoaGV4KQkJVmlkZW9TZXJ2ZXIsIEluYy4KLTAwNjBDRCAgICAgKGJhc2UgMTYpCQlWaWRlb1NlcnZlciwgSW5jLgotCQkJCTUgRk9SQkVTIFJPQUQKLQkJCQlMRVhJTkdUT04gTUEgMDIxNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUNFICAgKGhleCkJCUFDQ0xBSU0gQ09NTVVOSUNBVElPTlMKLTAwNjBDRSAgICAgKGJhc2UgMTYpCQlBQ0NMQUlNIENPTU1VTklDQVRJT05TCi0JCQkJNTAwMCBPTEQgSVJPTlNJREVTIERSSVZFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUNGICAgKGhleCkJCUFMVEVPTiBORVRXT1JLUywgSU5DLgotMDA2MENGICAgICAoYmFzZSAxNikJCUFMVEVPTiBORVRXT1JLUywgSU5DLgotCQkJCTUwIEdSRUFUIE9BS1MgQkxWRC4KLQkJCQlTQU4gSk9TRSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRDAgICAoaGV4KQkJU05NUCBSRVNFQVJDSCBJTkNPUlBPUkFURUQKLTAwNjBEMCAgICAgKGJhc2UgMTYpCQlTTk1QIFJFU0VBUkNIIElOQ09SUE9SQVRFRAotCQkJCTMwMDEgS0lNQkVSTElOIEhFSUdIVFMgUk9BRAotCQkJCUtOT1hWSUxMRSBUTiAzNzkyMC05NzE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1EMSAgIChoZXgpCQlDQVNDQURFIENPTU1VTklDQVRJT05TCi0wMDYwRDEgICAgIChiYXNlIDE2KQkJQ0FTQ0FERSBDT01NVU5JQ0FUSU9OUwotCQkJCTYgVEVDSE5PTE9HWSBQQVJLIERSSVZFCi0JCQkJV0VTVEZPUkQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUQyICAgKGhleCkJCUxVQ0VOVCBURUNITk9MT0dJRVMgVEFJV0FOIFRFTEVDT01NVU5JQ0FUSU9OUyBDTy4sIExURC4KLTAwNjBEMiAgICAgKGJhc2UgMTYpCQlMVUNFTlQgVEVDSE5PTE9HSUVTIFRBSVdBTiBURUxFQ09NTVVOSUNBVElPTlMgQ08uLCBMVEQuCi0JCQkJIzIsIElOTk9WQVRJT04gUk9BRCBJSQotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTiBDSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNjAtRDMgICAoaGV4KQkJQVQmVAotMDA2MEQzICAgICAoYmFzZSAxNikJCUFUJlQKLQkJCQkxMDEgQ1JBV0ZPUkRTIENPUk5FUiBST0FELCBSZC4gMUozMjEKLQkJCQlQLk8uIEJPWCAzMDMwCi0JCQkJSE9MTURFTCBOSiAwNzczMy0zMDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1ENCAgIChoZXgpCQlFTERBVCBDT01NVU5JQ0FUSU9OIExURC4KLTAwNjBENCAgICAgKGJhc2UgMTYpCQlFTERBVCBDT01NVU5JQ0FUSU9OIExURC4KLQkJCQkxMCBIQUtJU0hPTiBTVFJFRVQKLQkJCQlCTkVJLUJSQUsgIDUxMjAzICAKLQkJCQlJU1JBRUwKLQotMDAtNjAtRDUgICAoaGV4KQkJTUlZQUNISSBURUNITk9TIENPUlAuCi0wMDYwRDUgICAgIChiYXNlIDE2KQkJTUlZQUNISSBURUNITk9TIENPUlAuCi0JCQkJOTUtMywgRlVUQVNVWlVLQQotCQkJCU5PREEgQ0lUWSwgQ0hJQkEsIDI3OCAgCi0JCQkJSkFQQU4KLQotMDAtNjAtRDYgICAoaGV4KQkJTm92QXRlbCBXaXJlbGVzcyBUZWNobm9sb2dpZXMgTHRkLgotMDA2MEQ2ICAgICAoYmFzZSAxNikJCU5vdkF0ZWwgV2lyZWxlc3MgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQlTVUlURSAyMDAsIDY3MTUtOFRIIFNUUkVFVCBORQotCQkJCUNBTEdBUlksIEFMQkVSVEEgVDJFIDhNNCAgCi0JCQkJQ0FOQURBCi0KLTAwLTYwLUQ3ICAgKGhleCkJCUVDT0xFIFBPTFlURUNITklRVUUgRkVERVJBTEUgREUgTEFVU0FOTkUgKEVQRkwpCi0wMDYwRDcgICAgIChiYXNlIDE2KQkJRUNPTEUgUE9MWVRFQ0hOSVFVRSBGRURFUkFMRSBERSBMQVVTQU5ORSAoRVBGTCkKLQkJCQlFQ1VCTEVOUwotCQkJCUNILTEwMTUgTEFVU0FOTkUgIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTYwLUQ4ICAgKGhleCkJCUVMTUlDIFNZU1RFTVMsIElOQy4KLTAwNjBEOCAgICAgKGJhc2UgMTYpCQlFTE1JQyBTWVNURU1TLCBJTkMuCi0JCQkJREFJLUlDSEkgU0VJTUVJIEJMREcuCi0JCQkJNC01OSBCRU5URU4tRE9SSSwgTkFLQS1LVQotCQkJCVlPS09IQU1BIDIzMSAgCi0JCQkJSkFQQU4KLQotMDAtNjAtRDkgICAoaGV4KQkJVFJBTlNZUyBORVRXT1JLUyBJTkMuCi0wMDYwRDkgICAgIChiYXNlIDE2KQkJVFJBTlNZUyBORVRXT1JLUyBJTkMuCi0JCQkJMzQwMyBHUklGRklUSAotCQkJCVNULiBMQVVSRU5ULCBRVUVCRUMgSDRUIDFXNSAgCi0JCQkJQ0FOQURBCi0KLTAwLTYwLURBICAgKGhleCkJCUpCTSBFTEVDVFJPTklDUyBDTy4KLTAwNjBEQSAgICAgKGJhc2UgMTYpCQlKQk0gRUxFQ1RST05JQ1MgQ08uCi0JCQkJNDY0NSBMYUd1YXJkaWFuIERyaXZlCi0JCQkJU1QuIExPVUlTIE1PIDYzMTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1EQiAgIChoZXgpCQlOVFAgRUxFS1RST05JSyBBL1MKLTAwNjBEQiAgICAgKGJhc2UgMTYpCQlOVFAgRUxFS1RST05JSyBBL1MKLQkJCQlLTkFQSE9MTSA3Ci0JCQkJREstMjczMCBIRVJMRVYgIAotCQkJCURFTk1BUksKLQotMDAtNjAtREMgICAoaGV4KQkJVG95byBOZXR3b3JrIFN5c3RlbXMgICYgU3lzdGVtIEludGVncmF0aW9uIENvLiBMVEQKLTAwNjBEQyAgICAgKGJhc2UgMTYpCQlUb3lvIE5ldHdvcmsgU3lzdGVtcyAgJiBTeXN0ZW0gSW50ZWdyYXRpb24gQ28uIExURAotCQkJCTE4IE5paG9uLW9kb3JpLE5ha2Eta3UKLQkJCQlZb2tvaGFtYSwgS2FuYWdhd2EgIDIzMS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtNjAtREQgICAoaGV4KQkJTVlSSUNPTSwgSU5DLgotMDA2MEREICAgICAoYmFzZSAxNikJCU1ZUklDT00sIElOQy4KLQkJCQkzMjVCIE4uIFNBTlRBIEFOSVRBIEFWRS4KLQkJCQlBUkNBRElBIENBIDkxMDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1ERSAgIChoZXgpCQlLYXlzZXItVGhyZWRlIEdtYkgKLTAwNjBERSAgICAgKGJhc2UgMTYpCQlLYXlzZXItVGhyZWRlIEdtYkgKLQkJCQlXb2xmcmF0c2hhdXNlciBTdHIuIDQ4Ci0JCQkJRC04MTM3OSBNdW5pY2ggCi0JCQkJR0VSTUFOWQotCi0wMC02MC1ERiAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLTAwNjBERiAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLQkJCQkxNzQ1IFRlY2hub2xvZ3kgRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUUwICAgKGhleCkJCUFYSU9NIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDYwRTAgICAgIChiYXNlIDE2KQkJQVhJT00gVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQkzRiwgMTQsIExBTkUgMjM1Ci0JCQkJUEFPIENISUFPIFJPQUQsIEhTSU4gVElFTgotCQkJCVRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC02MC1FMSAgIChoZXgpCQlPUkNLSVQgQ09NTVVOSUNBVElPTlMgTFRELgotMDA2MEUxICAgICAoYmFzZSAxNikJCU9SQ0tJVCBDT01NVU5JQ0FUSU9OUyBMVEQuCi0JCQkJMzggTkFIQUxBVCBZSVpIQUsgU1RSRUVUCi0JCQkJVEVMLUFWSVYgIDY3NDQ4ICAKLQkJCQlJU1JBRUwKLQotMDAtNjAtRTIgICAoaGV4KQkJUVVFU1QgRU5HSU5FRVJJTkcgJiBERVZFTE9QTUVOVAotMDA2MEUyICAgICAoYmFzZSAxNikJCVFVRVNUIEVOR0lORUVSSU5HICYgREVWRUxPUE1FTlQKLQkJCQkxMzQ1IEVBU1QgUk9DSyBXUkVOIFJPQUQKLQkJCQlQSE9FTklYIEFaIDg1MDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1FMyAgIChoZXgpCQlBUkJJTiBJTlNUUlVNRU5UUwotMDA2MEUzICAgICAoYmFzZSAxNikJCUFSQklOIElOU1RSVU1FTlRTCi0JCQkJMzIwNiBMT05HTUlSRSBEUklWRQotCQkJCUNPTExFR0UgU1RBVElPTiBUWCA3Nzg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRTQgICAoaGV4KQkJQ09NUFVTRVJWRSwgSU5DLgotMDA2MEU0ICAgICAoYmFzZSAxNikJCUNPTVBVU0VSVkUsIElOQy4KLQkJCQk1MDAwIEFSTElOR1RPTiBDRU5UUkUgQkxWRC4KLQkJCQlQLk8uIEJPWCAyMDIxMgotCQkJCUNPTFVNQlVTIE9IIDQzMjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1FNSAgIChoZXgpCQlGVUpJIEFVVE9NQVRJT04gQ08uLCBMVEQuCi0wMDYwRTUgICAgIChiYXNlIDE2KQkJRlVKSSBBVVRPTUFUSU9OIENPLiwgTFRELgotCQkJCTMtMjMtMTAsIE5FR0lTSEkKLQkJCQlVUkFXQS1TSEksIDMzNiBTQUlUQU1BICAKLQkJCQlKQVBBTgotCi0wMC02MC1FNiAgIChoZXgpCQlTSE9NSVRJIFNZU1RFTVMgSU5DT1JQT1JBVEVECi0wMDYwRTYgICAgIChiYXNlIDE2KQkJU0hPTUlUSSBTWVNURU1TIElOQ09SUE9SQVRFRAotCQkJCTIwOTkgR0FURVdBWSBQTEFDRSAtIFNURS4jMjIwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUU3ICAgKGhleCkJCVJBTkRBVEEKLTAwNjBFNyAgICAgKGJhc2UgMTYpCQlSQU5EQVRBCi0JCQkJUE8gQk9YIDIwOQotCQkJCUhBV1RIT1JOICBWSUMgIDMxMjIgIAotCQkJCUFVU1RSQUxJQQotCi0wMC02MC1FOCAgIChoZXgpCQlISVRBQ0hJIENPTVBVVEVSIFBST0RVQ1RTIChBTUVSSUNBKSwgSU5DLgotMDA2MEU4ICAgICAoYmFzZSAxNikJCUhJVEFDSEkgQ09NUFVURVIgUFJPRFVDVFMgKEFNRVJJQ0EpLCBJTkMuCi0JCQkJMzEwMSBUQVNNQU4gRFJJVkUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRTkgICAoaGV4KQkJQVRPUCBURUNITk9MT0dJRVMsIElOQy4KLTAwNjBFOSAgICAgKGJhc2UgMTYpCQlBVE9QIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCVNVSVRFIDMwNSwgTk8uIDQ3LCBQQVJLIEFWRU5VRSBJSSwKLQkJCQkgU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOQ0hVIDMwMDQ3ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTYwLUVBICAgKGhleCkJCVN0cmVhbUxvZ2ljCi0wMDYwRUEgICAgIChiYXNlIDE2KQkJU3RyZWFtTG9naWMKLQkJCQkyMTMyOSBOT1JESE9GRiBTVFJFRVQKLQkJCQlDSEFUU1dPUlRIIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1FQiAgIChoZXgpCQlGT1VSVEhUUkFDSyBTWVNURU1TCi0wMDYwRUIgICAgIChiYXNlIDE2KQkJRk9VUlRIVFJBQ0sgU1lTVEVNUwotCQkJCVVOSVQgMyBUSEUgU1lDQU1PUkVTCi0JCQkJMjcgTUlMTCBST0FECi0JCQkJTUFSTE9XIC0gU0w3IDFRQiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtRUMgICAoaGV4KQkJSEVSTUFSWSBPUFRPIEVMRUNUUk9OSUNTIElOQy4KLTAwNjBFQyAgICAgKGJhc2UgMTYpCQlIRVJNQVJZIE9QVE8gRUxFQ1RST05JQ1MgSU5DLgotCQkJCTIwMS00MDUwIEdSQVZFTEVZIFNUCi0JCQkJQlVSTkFCWSwgQkMgVjVDLTNUNiAgCi0JCQkJQ0FOQURBCi0KLTAwLTYwLUVEICAgKGhleCkJCVJJQ0FSRE8gVEVTVCBBVVRPTUFUSU9OIExURC4KLTAwNjBFRCAgICAgKGJhc2UgMTYpCQlSSUNBUkRPIFRFU1QgQVVUT01BVElPTiBMVEQuCi0JCQkJTE9XRVNNT09SIFdIQVJGCi0JCQkJV09SQ0VTVEVSLCBXUjEyUlMgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTYwLUVFICAgKGhleCkJCUFQT0xMTwotMDA2MEVFICAgICAoYmFzZSAxNikJCUFQT0xMTwotCQkJCTM2MTAgQklSQ0ggU1RSRUVULS1TVEUgIzEwMAotCQkJCU5FV1BPUlQgQkVBQ0ggQ0EgOTI2NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUVGICAgKGhleCkJCUZMWVRFQ0ggVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwNjBFRiAgICAgKGJhc2UgMTYpCQlGTFlURUNIIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJTm8uMTY4IFNpbmctYWkgUmQuLCBOZWlodSBEaXN0cmljdAotCQkJCVRBSVBFSSBDSVRZICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTYwLUYwICAgKGhleCkJCUpPSE5TT04gJiBKT0hOU09OIE1FRElDQUwsIElOQwotMDA2MEYwICAgICAoYmFzZSAxNikJCUpPSE5TT04gJiBKT0hOU09OIE1FRElDQUwsIElOQwotCQkJCTQxMTAgR0VPUkdFIFJELgotCQkJCVRBTVBBIEZMIDMzNjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GMSAgIChoZXgpCQlFWFAgQ09NUFVURVIsIElOQy4KLTAwNjBGMSAgICAgKGJhc2UgMTYpCQlFWFAgQ09NUFVURVIsIElOQy4KLQkJCQkxNDEgRUlMRUVOIFdBWQotCQkJCVNZT1NTRVQgTlkgMTE3OTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUYyICAgKGhleCkJCUxBU0VSR1JBUEhJQ1MsIElOQy4KLTAwNjBGMiAgICAgKGJhc2UgMTYpCQlMQVNFUkdSQVBISUNTLCBJTkMuCi0JCQkJMjAgQURBCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GMyAgIChoZXgpCQlQZXJmb3JtYW5jZSBBbmFseXNpcyBCcm9hZGJhbmQsIFNwaXJlbnQgcGxjCi0wMDYwRjMgICAgIChiYXNlIDE2KQkJUGVyZm9ybWFuY2UgQW5hbHlzaXMgQnJvYWRiYW5kLCBTcGlyZW50IHBsYwotCQkJCTI3MzQ5IEFnb3VyYSBSb2FkCi0JCQkJQ2FsYWJhc2FzIEhpbGxzIENBIDkxMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GNCAgIChoZXgpCQlBRFZBTkNFRCBDT01QVVRFUiBTT0xVVElPTlMsIEluYy4KLTAwNjBGNCAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBDT01QVVRFUiBTT0xVVElPTlMsIEluYy4KLQkJCQkxMjY3NSBEQU5JRUxTT04gQ09VUlQKLQkJCQlTVUlURSAjNDA3Ci0JCQkJUE9XQVkgQ0EgOTIwNjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUY1ICAgKGhleCkJCUlDT04gV0VTVCwgSU5DLgotMDA2MEY1ICAgICAoYmFzZSAxNikJCUlDT04gV0VTVCwgSU5DLgotCQkJCTMzNDIgU09VVEggMzAwIEVBU1QKLQkJCQlTQUxUIExBS0UgQ0lUWSBVVCA4NDExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRjYgICAoaGV4KQkJTkVYVEVTVCBDT01NVU5JQ0FUSU9OUyBQUk9EVUNUUywgSU5DLgotMDA2MEY2ICAgICAoYmFzZSAxNikJCU5FWFRFU1QgQ09NTVVOSUNBVElPTlMgUFJPRFVDVFMsIElOQy4KLQkJCQlUV08gTUlEIEFNRVJJQ0EgUExBWkEsIFNURS41MDAKLQkJCQlPQUtCUk9PSyBURVJSQUNFIElMIDYwMTgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GNyAgIChoZXgpCQlEQVRBRlVTSU9OIFNZU1RFTVMKLTAwNjBGNyAgICAgKGJhc2UgMTYpCQlEQVRBRlVTSU9OIFNZU1RFTVMKLQkJCQlQLk8uIEJPWCA1ODIKLQkJCQlTVEVMTEVOQk9TQ0gsICA3NTk5ICAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtNjAtRjggICAoaGV4KQkJTG9yYW4gSW50ZXJuYXRpb25hbCBUZWNobm9sb2dpZXMgSW5jLgotMDA2MEY4ICAgICAoYmFzZSAxNikJCUxvcmFuIEludGVybmF0aW9uYWwgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk5NTUgR1JFRU4gVkFMTEVZIENSRVNDRU5UCi0JCQkJU1VJVEUgIzE2NQotCQkJCU9UVEFXQSwgT05UQVJJTyBLMkMgM1Y0ICAKLQkJCQlDQU5BREEKLQotMDAtNjAtRjkgICAoaGV4KQkJRElBTU9ORCBMQU5FIENPTU1VTklDQVRJT05TCi0wMDYwRjkgICAgIChiYXNlIDE2KQkJRElBTU9ORCBMQU5FIENPTU1VTklDQVRJT05TCi0JCQkJMTMxMCBSRURXT09EIFdBWSAtIFNURS4KLQkJCQlQRVRBTFVNQSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRkEgICAoaGV4KQkJRURVQ0FUSU9OQUwgVEVDSE5PTE9HWSBSRVNPVVJDRVMsIElOQy4KLTAwNjBGQSAgICAgKGJhc2UgMTYpCQlFRFVDQVRJT05BTCBURUNITk9MT0dZIFJFU09VUkNFUywgSU5DLgotCQkJCTE3NDIgQ0hVUkNIIFNUUkVFVAotCQkJCUhPTEJST09LIE5ZIDExNzQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GQiAgIChoZXgpCQlQQUNLRVRFRVIsIElOQy4KLTAwNjBGQiAgICAgKGJhc2UgMTYpCQlQQUNLRVRFRVIsIElOQy4KLQkJCQkxMDIwMSBOLiBERSBBTlpBIEJPVUxFVkFSRAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRkMgICAoaGV4KQkJQ09OU0VSVkFUSU9OIFRIUk9VR0ggSU5OT1ZBVElPTiBMVEQuCi0wMDYwRkMgICAgIChiYXNlIDE2KQkJQ09OU0VSVkFUSU9OIFRIUk9VR0ggSU5OT1ZBVElPTiBMVEQuCi0JCQkJMTA0MCBXSElQUExFIFNULi0gU1RFLiAjMjI1Ci0JCQkJUFJFU0NPVFQgQVogODYzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUZEICAgKGhleCkJCU5ldElDcywgSW5jLgotMDA2MEZEICAgICAoYmFzZSAxNikJCU5ldElDcywgSW5jLgotCQkJCTQyIE5BR09HIFBBUksKLQkJCQlBQ1RPTiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRkUgICAoaGV4KQkJTFlOWCBTWVNURU0gREVWRUxPUEVSUywgSU5DLgotMDA2MEZFICAgICAoYmFzZSAxNikJCUxZTlggU1lTVEVNIERFVkVMT1BFUlMsIElOQy4KLQkJCQkxNzVOIE5FVyBCT1NUT04gU1RSRUVUCi0JCQkJV09CVVJOIE1BIDAxODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GRiAgIChoZXgpCQlRdVZpcywgSW5jLgotMDA2MEZGICAgICAoYmFzZSAxNikJCVF1VmlzLCBJbmMuCi0JCQkJMjkyMSBTVyBXQU5BTUFLRVIgRFJJVkUKLQkJCQlTVUlURSAjMTA3Ci0JCQkJVE9QRUtBIEtTIDY2NjE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02NC00MCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDY0NDAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02RC1GQiAgIChoZXgpCQlWdXRyaXggKFVLKSBMdGQKLTAwNkRGQiAgICAgKGJhc2UgMTYpCQlWdXRyaXggKFVLKSBMdGQKLQkJCQlVbml0IDEgUmVkIExvZGdlIEJ1c2luZXNzIFBhcmsKLQkJCQlXYXJsZXlzIExhbmUKLQkJCQlXZXN0b24tc3VwZXItbWFyZSBOb3J0aCBTb21lcnNldCBCUzI0IDdUTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTcwLUIwICAgKGhleCkJCU0vQS1DT00gSU5DLiBDT01QQU5JRVMKLTAwNzBCMCAgICAgKGJhc2UgMTYpCQlNL0EtQ09NIElOQy4gQ09NUEFOSUVTCi0JCQkJMTE3MTcgRVhQTE9SQVRJT04gTEFORQotCQkJCUdFUk1BTlRPV04gTUQgMjA3NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTcwLUIzICAgKGhleCkJCURBVEEgUkVDQUxMIExURC4KLTAwNzBCMyAgICAgKGJhc2UgMTYpCQlEQVRBIFJFQ0FMTCBMVEQuCi0JCQkJU09OREVTIFBMQUNFCi0JCQkJRE9SS0lORyBTVVJSRVkgUkg0IDNFRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNzItOTggICAoaGV4KQkJS0FPTiBNRURJQSBDby4sIEx0ZC4KLTAwNzI5OCAgICAgKGJhc2UgMTYpCQlLQU9OIE1FRElBIENvLiwgTHRkLgotCQkJCUthb25tZWRpYSBCdWlsZGluZywgNTEzLTQKLQkJCQlZYXRhcC1Eb25nLCBCdW5kYW5nLUd1Ci0JCQkJU3VuZ25hbS1DaXR5IEt5b25nZ2ktRG8gNDYzLTgzOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC03OC05RSAgIChoZXgpCQlTQUdFTUNPTQotMDA3ODlFICAgICAoYmFzZSAxNikJCVNBR0VNQ09NCi0JCQkJMjUwIHJvdXRlIGRlIGwnRW1wZXJldXIKLQkJCQlSVUVJTCBNQUxNQUlTT04gIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLTAwLTdGLTI4ICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0wMDdGMjggICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLQkJCQk3NjAgTm9ydGggTWFyeSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTAwICAgKGhleCkJCU1VTFRJVEVDSCBTWVNURU1TLCBJTkMuCi0wMDgwMDAgICAgIChiYXNlIDE2KQkJTVVMVElURUNIIFNZU1RFTVMsIElOQy4KLQkJCQkyMjA1IFdPT0RBTEUgRFJJVkUKLQkJCQlNT1VORFMgVklFVyBNTiA1NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMDEgICAoaGV4KQkJUEVSSVBIT05JQ1MgQ09SUE9SQVRJT04KLTAwODAwMSAgICAgKGJhc2UgMTYpCQlQRVJJUEhPTklDUyBDT1JQT1JBVElPTgotCQkJCTQwMDAgVkVURVJBTlMgTUVNT1JJQUwgSElHSFdBWQotCQkJCUJPSEVNSUEgTkVXIFlPUksgMTE3MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTAyICAgKGhleCkJCVNBVEVMQ09NIChVSykgTFRECi0wMDgwMDIgICAgIChiYXNlIDE2KQkJU0FURUxDT00gKFVLKSBMVEQKLQkJCQlURUNITk9MT0dZIFRSQU5TRkVSIENFTlRSRQotCQkJCVNJTFdPT0QgUEFSSywgQlVDS0hVUlNUIFJPQUQgQVNDT1QsIEJFUksKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtMDMgICAoaGV4KQkJSFlURUMgRUxFQ1RST05JQ1MgTFRELgotMDA4MDAzICAgICAoYmFzZSAxNikJCUhZVEVDIEVMRUNUUk9OSUNTIExURC4KLQkJCQk1IENSQURPQ0sgUk9BRAotCQkJCVJFQURJTkcgQkVSS1MgUkc1IDREWAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0wNCAgIChoZXgpCQlBTlRMT1cgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwODAwNCAgICAgKGJhc2UgMTYpCQlBTlRMT1cgQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQk0IENPTFRIUk9QIFdBWQotCQkJCVRIQVRDSEFNIFJHMTkgNExXCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLTA1ICAgKGhleCkJCUNBQ1RVUyBDT01QVVRFUiBJTkMuCi0wMDgwMDUgICAgIChiYXNlIDE2KQkJQ0FDVFVTIENPTVBVVEVSIElOQy4KLQkJCQkxMTIwIE1FVFJPQ1JFU1QgRFJJVkUKLQkJCQlTVUlURSAxMDMKLQkJCQlDQVJST0xMVE9OIFRYIDc1MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0wNiAgIChoZXgpCQlDT01QVUFERCBDT1JQT1JBVElPTgotMDA4MDA2ICAgICAoYmFzZSAxNikJCUNPTVBVQUREIENPUlBPUkFUSU9OCi0JCQkJRU5HSU5FRVJJTkcKLQkJCQkxMjMwMyBURUNITk9MT0dZIEJMVkQuCi0JCQkJQVVTVElOIFRYIDc4NzI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0wNyAgIChoZXgpCQlETE9HIE5DLVNZU1RFTUUKLTAwODAwNyAgICAgKGJhc2UgMTYpCQlETE9HIE5DLVNZU1RFTUUKLQkJCQlXRVJORVItVk9OLVNJRU1FTlMgU1RSQVNTRSAxMwotCQkJCUQtODAzNywgT0xDSElORwotCQkJCUdFUk1BTlkKLQotMDAtODAtMDggICAoaGV4KQkJRFlOQVRFQ0ggQ09NUFVURVIgU1lTVEVNUwotMDA4MDA4ICAgICAoYmFzZSAxNikJCURZTkFURUNIIENPTVBVVEVSIFNZU1RFTVMKLQkJCQkyODAgQkVSTkFSRE8gQVZFTlVFCi0JCQkJUC5PLiBCT1ggNzQwMAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwMzktNzQwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMDkgICAoaGV4KQkJSlVQSVRFUiBTWVNURU1TLCBJTkMuCi0wMDgwMDkgICAgIChiYXNlIDE2KQkJSlVQSVRFUiBTWVNURU1TLCBJTkMuCi0JCQkJMzA3MyBURUFHQVJERU4gU1RSRUVUCi0JCQkJU0FOIExFQU5EUk8gQ0EgOTQ1NzctNTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMEEgICAoaGV4KQkJSkFQQU4gQ09NUFVURVIgQ09SUC4KLTAwODAwQSAgICAgKGJhc2UgMTYpCQlKQVBBTiBDT01QVVRFUiBDT1JQLgotCQkJCUwuIEsuIEJMREcuIEhJR0FTSEkgS0FOREEKLQkJCQkyLTYtOSBDSElZT0RBLUtVIFRPS1lPIDEwMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtMEIgICAoaGV4KQkJQ1NLIENPUlBPUkFUSU9OCi0wMDgwMEIgICAgIChiYXNlIDE2KQkJQ1NLIENPUlBPUkFUSU9OCi0JCQkJMThGIE1BVFNVU0hJVEEgSU1QIEJMREcsCi0JCQkJMS0zLTcgU0hJUk9NSSBDSFVPLUtVIE9TQUtBCi0JCQkJSkFQQU4gNTQwCi0JCQkJSkFQQU4KLQotMDAtODAtMEMgICAoaGV4KQkJVklERUNPTSBMSU1JVEVECi0wMDgwMEMgICAgIChiYXNlIDE2KQkJVklERUNPTSBMSU1JVEVECi0JCQkJTkVXVE9XTiBFU1RBVEUKLQkJCQlIRU5MRVktT04tVEhBTUVTIE9YT04gIFJHOSAxSEcKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtMEQgICAoaGV4KQkJVk9TU1dJTktFTCBGLlUuCi0wMDgwMEQgICAgIChiYXNlIDE2KQkJVk9TU1dJTktFTCBGLlUuCi0JCQkJQU0gSk9TVEVOSE9GIDE1Ci0JCQkJRC00MTMwIE1PRVJTCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtODAtMEUgICAoaGV4KQkJQVRMQU5USVggQ09SUE9SQVRJT04KLTAwODAwRSAgICAgKGJhc2UgMTYpCQlBVExBTlRJWCBDT1JQT1JBVElPTgotCQkJCTU0MDEgTlcgQlJPS0VOU09VTkQgQkxWRC4KLQkJCQlCT0NBIFJBVE9OIEZMIDMzNDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0wRiAgIChoZXgpCQlTVEFOREFSRCBNSUNST1NZU1RFTVMKLTAwODAwRiAgICAgKGJhc2UgMTYpCQlTVEFOREFSRCBNSUNST1NZU1RFTVMKLQkJCQkzMDAgS0VOTkVEWSBEUklWRQotCQkJCUhBVVBQQVVHRSBOWSAxMTc4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMTAgICAoaGV4KQkJQ09NTU9ET1JFIElOVEVSTkFUSU9OQUwKLTAwODAxMCAgICAgKGJhc2UgMTYpCQlDT01NT0RPUkUgSU5URVJOQVRJT05BTAotCQkJCTEyMDAgV0lMU09OIERSSVZFCi0JCQkJV0VTVCBDSEVTVEVSIFBBIDE5MzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xMSAgIChoZXgpCQlESUdJVEFMIFNZU1RFTVMgSU5UJ0wuIElOQy4KLTAwODAxMSAgICAgKGJhc2UgMTYpCQlESUdJVEFMIFNZU1RFTVMgSU5UJ0wuIElOQy4KLQkJCQk3NjU5IDE3OFRIIFBMLiBORQotCQkJCVAuTy4gQk9YIDkwOAotCQkJCVJFRE1PTkQgV0EgOTgwNzMtMDkwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMTIgICAoaGV4KQkJSU5URUdSQVRFRCBNRUFTVVJFTUVOVCBTWVNURU1TCi0wMDgwMTIgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBNRUFTVVJFTUVOVCBTWVNURU1TCi0JCQkJOTUyNSBTVyBHRU1JTkkgRFJJVkUKLQkJCQlCRUFWRVJUT04gT1IgOTcwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTEzICAgKGhleCkJCVRIT01BUy1DT05SQUQgQ09SUE9SQVRJT04KLTAwODAxMyAgICAgKGJhc2UgMTYpCQlUSE9NQVMtQ09OUkFEIENPUlBPUkFUSU9OCi0JCQkJMTkwOC1SIEtSQU1FUiBMQU5FCi0JCQkJQVVTVElOIFRYIDc4NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xNCAgIChoZXgpCQlFU1BSSVQgU1lTVEVNUwotMDA4MDE0ICAgICAoYmFzZSAxNikJCUVTUFJJVCBTWVNURU1TCi0JCQkJMTRGLCBOTy4gMSwgU0VDLiA0Ci0JCQkJTkFOIEtJTkcgRUFTVCBST0FEIDEwNTY5IFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC04MC0xNSAgIChoZXgpCQlTRUlLTyBTWVNURU1TLCBJTkMuCi0wMDgwMTUgICAgIChiYXNlIDE2KQkJU0VJS08gU1lTVEVNUywgSU5DLgotCQkJCVNZU1RFTVMgREVWRUxPUE1FTlQgRElWSVNJT04KLQkJCQk1LTQgSEFDQ0hPQk9SSSA0LUNIT1VNRSBDSFVVT1UtS1UgVE9LT1lPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC0xNiAgIChoZXgpCQlXQU5ERUwgQU5EIEdPTFRFUk1BTk4KLTAwODAxNiAgICAgKGJhc2UgMTYpCQlXQU5ERUwgQU5EIEdPTFRFUk1BTk4KLQkJCQkxMDMwIFNXQUJJQSBDT1VSVAotCQkJCVJFU0VBUkNIIFRSSUFOR0xFIFBBUksKLQkJCQlOQyAyNzcwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMTcgICAoaGV4KQkJUEZVIExJTUlURUQKLTAwODAxNyAgICAgKGJhc2UgMTYpCQlQRlUgTElNSVRFRAotCQkJCU5FVFdPUksgU0VDLgotCQkJCTY1OC0xLCBUU1VSVU1BIE1BQ0hJREEtU0hJLCBUT0tZTyAxOTQtMDAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTE4ICAgKGhleCkJCUtPQkUgU1RFRUwsIExURC4KLTAwODAxOCAgICAgKGJhc2UgMTYpCQlLT0JFIFNURUVMLCBMVEQuCi0JCQkJS09CRSBJU1VaVSBSRUNSVUlUIEJMREcuCi0JCQkJN1RIIEZMT09SIDItMiwgNC1DSE9NRSwgS1VNT0ktRE9SSSwgQ0hVTwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtMTkgICAoaGV4KQkJREFZTkEgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwODAxOSAgICAgKGJhc2UgMTYpCQlEQVlOQSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTUwIFNPVVRIIE1BSU4gU1RSRUVULSM1MzAKLQkJCQlTQUxUIExBS0UgQ0lUWSBVVEFIIDg0MTQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xQSAgIChoZXgpCQlCRUxMIEFUTEFOVElDCi0wMDgwMUEgICAgIChiYXNlIDE2KQkJQkVMTCBBVExBTlRJQwotCQkJCU45MiBXMTQ2MTIgIEFOVEhPTlkgQVZFTlVFCi0JCQkJTUVOT01PTkVFIEZBTExTIFdJIDUzMDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xQiAgIChoZXgpCQlLT0RJQUsgVEVDSE5PTE9HWQotMDA4MDFCICAgICAoYmFzZSAxNikJCUtPRElBSyBURUNITk9MT0dZCi0JCQkJMjM0MCBIQVJSSVMgV0FZCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTFDICAgKGhleCkJCU5FV1BPUlQgU1lTVEVNUyBTT0xVVElPTlMKLTAwODAxQyAgICAgKGJhc2UgMTYpCQlORVdQT1JUIFNZU1RFTVMgU09MVVRJT05TCi0JCQkJNDAxOSBXRVNURVJMWSBBVkVOVUUKLQkJCQlTVUlURSAxMDMKLQkJCQlORVdQT1JUIEJFQUNIIENBIDkyNjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xRCAgIChoZXgpCQlJTlRFR1JBVEVEIElORkVSRU5DRSBNQUNISU5FUwotMDA4MDFEICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgSU5GRVJFTkNFIE1BQ0hJTkVTCi0JCQkJMTQ2OCBFQVNUIEtBVEVMTEEKLQkJCQlBTkFIRUlNIENBIDkyODA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xRSAgIChoZXgpCQlYSU5FVFJPTiwgSU5DLgotMDA4MDFFICAgICAoYmFzZSAxNikJCVhJTkVUUk9OLCBJTkMuCi0JCQkJMjMzMCBCLiBXQUxTSCBBVkUuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTFGICAgKGhleCkJCUtSVVBQIEFUTEFTIEVMRUNUUk9OSUsgR01CSAotMDA4MDFGICAgICAoYmFzZSAxNikJCUtSVVBQIEFUTEFTIEVMRUNUUk9OSUsgR01CSAotCQkJCVAuTy4gQk9YIDQ0ODU0NQotCQkJCUQtMjgwMCBCUkVNRU4gNDQKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLTIwICAgKGhleCkJCU5FVFdPUksgUFJPRFVDVFMKLTAwODAyMCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFBST0RVQ1RTCi0JCQkJRElWSVNJT04gT0YgQU5EUkVXIENPUlBPUkFUSU9OCi0JCQkJMjc3MSBQTEFaQSBERUwgQU1PMwotCQkJCVRPUlJBTkNFIENBIDkwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yMSAgIChoZXgpCQlBbGNhdGVsIENhbmFkYSBJbmMuCi0wMDgwMjEgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBDYW5hZGEgSW5jLgotCQkJCTM0OSBUZXJyeSBGb3ggRHJpdmUKLQkJCQlLYW5hdGEgT250YXJpbyBLMksgMlY2Ci0JCQkJQ0FOQURBCi0KLTAwLTgwLTIyICAgKGhleCkJCVNDQU4tT1BUSUNTCi0wMDgwMjIgICAgIChiYXNlIDE2KQkJU0NBTi1PUFRJQ1MKLQkJCQkyMDEgVEVDSE5PTE9HWSBEUklWRQotCQkJCUlSVklORSBDQSA5MjcxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMjMgICAoaGV4KQkJSU5URUdSQVRFRCBCVVNJTkVTUyBORVRXT1JLUwotMDA4MDIzICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgQlVTSU5FU1MgTkVUV09SS1MKLQkJCQkxQk4gVEhFIFNZU1RFTVMgQ0VOVFJFCi0JCQkJMTQsIEJSSURHRUdBVEUgQlVTSU5FU1MgUEFSSywgR0FURUhPVVNFCi0JCQkJQlVDS1MgSFAxOSAzWE4gLSBFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtMjQgICAoaGV4KQkJS0FMUEFOQSwgSU5DLgotMDA4MDI0ICAgICAoYmFzZSAxNikJCUtBTFBBTkEsIElOQy4KLQkJCQkxMTU0IEVBU1QgQVJRVUVTIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMjUgICAoaGV4KQkJU1RPTExNQU5OIEdNQkgKLTAwODAyNSAgICAgKGJhc2UgMTYpCQlTVE9MTE1BTk4gR01CSAotCQkJCU1BWC1CUkFVRVItQUxMRUUgODEKLQkJCQlELTIwMDAgSEFNQlVSRyA1MAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLTI2ICAgKGhleCkJCU5FVFdPUksgUFJPRFVDVFMgQ09SUE9SQVRJT04KLTAwODAyNiAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFBST0RVQ1RTIENPUlBPUkFUSU9OCi0JCQkJMTQ0MCBXRVNUIENPTE9SQURPIEJMVkQuCi0JCQkJUEFTQURFTkEgQ0EgOTExMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTI3ICAgKGhleCkJCUFEQVBUSVZFIFNZU1RFTVMsIElOQy4KLTAwODAyNyAgICAgKGJhc2UgMTYpCQlBREFQVElWRSBTWVNURU1TLCBJTkMuCi0JCQkJMTQwMCBOLlcuIENPTVBUT04gRFJJVkUKLQkJCQlTVUlURSAzNDAKLQkJCQlCRUFWRVJUT04gT1IgOTcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTI4ICAgKGhleCkJCVRSQURQT1NUIChISykgTFRECi0wMDgwMjggICAgIChiYXNlIDE2KQkJVFJBRFBPU1QgKEhLKSBMVEQKLQkJCQk1L0YsIFNUQVIgQ0VOVFJFCi0JCQkJNDQzLTQ1MSBDQVNUTEUgUEVBSyBST0FEIEtXQUkgQ0hVTkcsIE4uVAotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC04MC0yOSAgIChoZXgpCQlFQUdMRSBURUNITk9MT0dZLCBJTkMuCi0wMDgwMjkgICAgIChiYXNlIDE2KQkJRUFHTEUgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTY4MDAgT1JBTkdFVEhPUlBFIEFWRS5VTklUCi0JCQkJQlVFTkEgUEFSSyBDQSA5MDYyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMkEgICAoaGV4KQkJVEVTVCBTWVNURU1TICYgU0lNVUxBVElPTlMgSU5DCi0wMDgwMkEgICAgIChiYXNlIDE2KQkJVEVTVCBTWVNURU1TICYgU0lNVUxBVElPTlMgSU5DCi0JCQkJMzI0MjkgSU5EVVNUUklBTCBEUklWRQotCQkJCU1BRElTT04gSEVJR0hUUyBNSSA0ODA3MS0xNTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yQiAgIChoZXgpCQlJTlRFR1JBVEVEIE1BUktFVElORyBDTwotMDA4MDJCICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgTUFSS0VUSU5HIENPCi0JCQkJMTM2MCBCT1JERUFVWCBEUklWRQotCQkJCUJMREcuICM0Ci0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yQyAgIChoZXgpCQlUSEUgU0FHRSBHUk9VUCBQTEMKLTAwODAyQyAgICAgKGJhc2UgMTYpCQlUSEUgU0FHRSBHUk9VUCBQTEMKLQkJCQlTQUdFIEhPVVNFLCBCRU5UT04gUEFSSyBST0FECi0JCQkJTkVXQ0FTVExFIFVQT04gVFlORSBORTcgN0xaCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0yRCAgIChoZXgpCQlYWUxPR0lDUyBJTkMKLTAwODAyRCAgICAgKGJhc2UgMTYpCQlYWUxPR0lDUyBJTkMKLQkJCQk1MyBUSElSRCBBVkVOVUUKLQkJCQlCVVJMSU5HVE9OIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yRSAgIChoZXgpCQlDQVNUTEUgUk9DSyBDT01QVVRJTkcKLTAwODAyRSAgICAgKGJhc2UgMTYpCQlDQVNUTEUgUk9DSyBDT01QVVRJTkcKLQkJCQkyMDgzNyBCT1lDRSBMQU5FCi0JCQkJU0FSQVRPR0EgQ0EgOTUwNzAtNDgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMkYgICAoaGV4KQkJTkFUSU9OQUwgSU5TVFJVTUVOVFMgQ09SUC4KLTAwODAyRiAgICAgKGJhc2UgMTYpCQlOQVRJT05BTCBJTlNUUlVNRU5UUyBDT1JQLgotCQkJCTExNTAwIE5vcnRoIE1vcGFjIEV4cHJlc3N3YXkKLQkJCQlBVVNUSU4gVFggNzg3NTktMzUwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMzAgICAoaGV4KQkJTkVYVVMgRUxFQ1RST05JQ1MKLTAwODAzMCAgICAgKGJhc2UgMTYpCQlORVhVUyBFTEVDVFJPTklDUwotCQkJCTM5IFNQUklOR0ZJRUxEIFJPQUQKLQkJCQlDQU1CUklER0UgQ0I0IDFBRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtMzEgICAoaGV4KQkJQkFTWVMsIENPUlAuCi0wMDgwMzEgICAgIChiYXNlIDE2KQkJQkFTWVMsIENPUlAuCi0JCQkJNTAxIE1BQ0FSQSBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTMyICAgKGhleCkJCUFDQ0VTUyBDTy4sIExURC4KLTAwODAzMiAgICAgKGJhc2UgMTYpCQlBQ0NFU1MgQ08uLCBMVEQuCi0JCQkJSElFSS1LVURBTiBCTERHLiBCMQotCQkJCTMtOC0xMSBLVURBTi1NSU5BTUksIENISVlPREEtS1UsIFRPS1lPIDEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTMzICAgKGhleCkJCUVNUyBBdmlhdGlvbiwgSW5jLgotMDA4MDMzICAgICAoYmFzZSAxNikJCUVNUyBBdmlhdGlvbiwgSW5jLgotCQkJCTEyMSBXSElUVEVOREFMRSBEUklWRQotCQkJCVN1aXRlIEEKLQkJCQlNT09SRVNUT1dOIE5KIDA4MDU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0zNCAgIChoZXgpCQlTTVQgR09VUElMCi0wMDgwMzQgICAgIChiYXNlIDE2KQkJU01UIEdPVVBJTAotCQkJCTMgUlVFIERFUyBBUkNISVZFUwotCQkJCTk0MDAwIENSRVRFSUwKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtODAtMzUgICAoaGV4KQkJVEVDSE5PTE9HWSBXT1JLUywgSU5DLgotMDA4MDM1ICAgICAoYmFzZSAxNikJCVRFQ0hOT0xPR1kgV09SS1MsIElOQy4KLQkJCQk0MDMwIEJSQUtFUiBMQU5FICMzNTAKLQkJCQlBVVNUSU4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTM2ICAgKGhleCkJCVJFRkxFWCBNQU5VRkFDVFVSSU5HIFNZU1RFTVMKLTAwODAzNiAgICAgKGJhc2UgMTYpCQlSRUZMRVggTUFOVUZBQ1RVUklORyBTWVNURU1TCi0JCQkJVU5JVCBELCBUSEUgRkxFTUlORyBDRU5UUkUsCi0JCQkJRkxFTUlORyBXQVksIENSQVdMRVkgV0VTVCBTVVNTRVggUkgxMCAyTgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0zNyAgIChoZXgpCQlFcmljc3NvbiBHcm91cAotMDA4MDM3ICAgICAoYmFzZSAxNikJCUVyaWNzc29uIEdyb3VwCi0JCQkJVGVsZWZvbmFrdGllYm9sYWdldAotCQkJCUxNIEVyaWNzc29uIENvcnAuIDEyNiAyNSBTVE9DS0hPTE0KLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtODAtMzggICAoaGV4KQkJREFUQSBSRVNFQVJDSCAmIEFQUExJQ0FUSU9OUwotMDA4MDM4ICAgICAoYmFzZSAxNikJCURBVEEgUkVTRUFSQ0ggJiBBUFBMSUNBVElPTlMKLQkJCQk5MDQxIEVYRUNVVElWRSBQQVJLIERSLgotCQkJCVNVSVRFIDIwMAotCQkJCUtOT1hWSUxMRSBUTiAzNzkyMy00NjA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0zOSAgIChoZXgpCQlBTENBVEVMIFNUQyBBVVNUUkFMSUEKLTAwODAzOSAgICAgKGJhc2UgMTYpCQlBTENBVEVMIFNUQyBBVVNUUkFMSUEKLQkJCQkyNTItMjgwIEJPVEFOWSBST0FECi0JCQkJQUxFWEFORFJJQSwgTlNXIDIwMTUKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtODAtM0EgICAoaGV4KQkJVkFSSVRZUEVSLCBJTkMuCi0wMDgwM0EgICAgIChiYXNlIDE2KQkJVkFSSVRZUEVSLCBJTkMuCi0JCQkJOTAwIE1JRERMRVNFWCBUVVJOUElLRQotCQkJCUJJTExFUklDQSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtM0IgICAoaGV4KQkJQVBUIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDgwM0IgICAgIChiYXNlIDE2KQkJQVBUIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJOTYwNyBEUi4gUEVSUlkgUk9BRAotCQkJCUlKQU1TVklMTEUgTUQgMjE3NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTNDICAgKGhleCkJCVRWUyBFTEVDVFJPTklDUyBMVEQKLTAwODAzQyAgICAgKGJhc2UgMTYpCQlUVlMgRUxFQ1RST05JQ1MgTFRECi0JCQkJNDQsIE1JTExFUiBST0FECi0JCQkJQkFOR0FMT1JFIDU2MCAwNTIKLQkJCQlJTkRJQQotCQkJCUlORElBCi0KLTAwLTgwLTNEICAgKGhleCkJCVNVUklHSUtFTiBDTy4sICBMVEQuCi0wMDgwM0QgICAgIChiYXNlIDE2KQkJU1VSSUdJS0VOIENPLiwgIExURC4KLQkJCQlZT1VUSCBCTERHLCA0LTEtOSBTSElOSlVLVQotCQkJCVNISU5KVUtVLUtVLCBUT0tZTwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtM0UgICAoaGV4KQkJU1lORVJORVRJQ1MKLTAwODAzRSAgICAgKGJhc2UgMTYpCQlTWU5FUk5FVElDUwotCQkJCTg1IFJBTkdFV0FZIFJPQUQKLQkJCQlOT1JUSCBCSUxMRVJJQ0EgTUEgMDE4NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTNGICAgKGhleCkJCVRBVFVORyBDT01QQU5ZCi0wMDgwM0YgICAgIChiYXNlIDE2KQkJVEFUVU5HIENPTVBBTlkKLQkJCQkyMiBDSFVOR1NIQU5HIE4uIFJELiAzUkQgU0VDLgotCQkJCVRBSVBFSSBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC04MC00MCAgIChoZXgpCQlKT0hOIEZMVUtFIE1BTlVGQUNUVVJJTkcgQ08uCi0wMDgwNDAgICAgIChiYXNlIDE2KQkJSk9ITiBGTFVLRSBNQU5VRkFDVFVSSU5HIENPLgotCQkJCVAuTy4gQk9YIEM5MDkwLU0vUyAyNDRGCi0JCQkJRVZFUkVUVCBXQSA5ODIwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNDEgICAoaGV4KQkJVkVCIEtPTUJJTkFUIFJPQk9UUk9OCi0wMDgwNDEgICAgIChiYXNlIDE2KQkJVkVCIEtPTUJJTkFUIFJPQk9UUk9OCi0JCQkJR1JVTkFFUiBTVFJBQkUgMiwgRFJFU0RFTiA4MDEwCi0JCQkJR0RSIEVBU1QgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtODAtNDIgICAoaGV4KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0wMDgwNDIgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0JCQkJMjkwMCBTLiBEaWFibG8gV2F5Ci0JCQkJVGVtcGUgQVogODUyODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTQzICAgKGhleCkJCU5FVFdPUkxELCBJTkMuCi0wMDgwNDMgICAgIChiYXNlIDE2KQkJTkVUV09STEQsIElOQy4KLQkJCQlLQU5EQSAzIEFNRVJFWCBCTERHLgotCQkJCTMtMTAgS0FOREFKSU5CT0NITyBDSElZT0RBLUtVICAgIFRPS1lPIDEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTQ0ICAgKGhleCkJCVNZU1RFQ0ggQ09NUFVURVIgQ09SUC4KLTAwODA0NCAgICAgKGJhc2UgMTYpCQlTWVNURUNIIENPTVBVVEVSIENPUlAuCi0JCQkJNjQ2NSBOQU5DWSBSSURHRSBEUklWRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNDUgICAoaGV4KQkJTUFUU1VTSElUQSBFTEVDVFJJQyBJTkQuIENPCi0wMDgwNDUgICAgIChiYXNlIDE2KQkJTUFUU1VTSElUQSBFTEVDVFJJQyBJTkQuIENPCi0JCQkJQ09NUFVURVIgRElWSVNJT04KLQkJCQkxMDA2LCBLQURPTUEsCi0JCQkJT1NBS0EgNTcxIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtNDYgICAoaGV4KQkJVU5JVkVSU0lUWSBPRiBUT1JPTlRPCi0wMDgwNDYgICAgIChiYXNlIDE2KQkJVU5JVkVSU0lUWSBPRiBUT1JPTlRPCi0JCQkJREVQVC4gT0YgRUxFQ1RSSUNBTCBFTkdJTidJTkcKLQkJCQkxMCBLSU5HUyBDT0xMRUdFIFJELiBUT1JPTlRPLCBPTlRBUklPIE01Ci0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTgwLTQ3ICAgKGhleCkJCUlOLU5FVCBDT1JQLgotMDA4MDQ3ICAgICAoYmFzZSAxNikJCUlOLU5FVCBDT1JQLgotCQkJCTE2NzIwIFdFU1QgQkVSTkFSRE8gRFJJVkUKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjctMTkwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNDggICAoaGV4KQkJQ09NUEVYIElOQ09SUE9SQVRFRAotMDA4MDQ4ICAgICAoYmFzZSAxNikJCUNPTVBFWCBJTkNPUlBPUkFURUQKLQkJCQk0MDU1IEVBU1QgTEEgUEFMTUEKLQkJCQlVTklUCi0JCQkJQU5BSEVJTSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNDkgICAoaGV4KQkJTklTU0lOIEVMRUNUUklDIENPLiwgTFRELgotMDA4MDQ5ICAgICAoYmFzZSAxNikJCU5JU1NJTiBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQk0NywgVU1FWlUgLSBUQUtBU0UgLSBDSE8KLQkJCQlVS1lPLUtVLCBLWU9UTywgNjE1Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC00QSAgIChoZXgpCQlQUk8tTE9HCi0wMDgwNEEgICAgIChiYXNlIDE2KQkJUFJPLUxPRwotCQkJCTEyIFVQUEVSIFJBR1NEQUxFIERSSVZFCi0JCQkJTU9OVEVSRVkgQ0EgOTM5NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTRCICAgKGhleCkJCUVBR0xFIFRFQ0hOT0xPR0lFUyBQVFkuTFRELgotMDA4MDRCICAgICAoYmFzZSAxNikJCUVBR0xFIFRFQ0hOT0xPR0lFUyBQVFkuTFRELgotCQkJCTcwIEtFWVMgUk9BRAotCQkJCU1PT1JBQkJJTiAgVklDLiAzMTg5Ci0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTgwLTRDICAgKGhleCkJCUNPTlRFQyBDTy4sIExURC4KLTAwODA0QyAgICAgKGJhc2UgMTYpCQlDT05URUMgQ08uLCBMVEQuCi0JCQkJMy05LTMxLCBISU1FU0FUTwotCQkJCU5JU0hJWU9ET0dBV0EtS1UgT1NBS0EsIDU1NQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtNEQgICAoaGV4KQkJQ1lDTE9ORSBNSUNST1NZU1RFTVMsIElOQy4KLTAwODA0RCAgICAgKGJhc2UgMTYpCQlDWUNMT05FIE1JQ1JPU1lTVEVNUywgSU5DLgotCQkJCTI1IFNDSUVOQ0UgUEFSSwotCQkJCU5FVyBIQVZFTiBDVCAwNjUxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNEUgICAoaGV4KQkJQVBFWCBDT01QVVRFUiBDT01QQU5ZCi0wMDgwNEUgICAgIChiYXNlIDE2KQkJQVBFWCBDT01QVVRFUiBDT01QQU5ZCi0JCQkJNDUwMCAxNTBUSCBBVkVOVUUsIE5FCi0JCQkJUkVETU9ORCBXQSA5ODA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNEYgICAoaGV4KQkJREFJS0lOIElORFVTVFJJRVMsIExURC4KLTAwODA0RiAgICAgKGJhc2UgMTYpCQlEQUlLSU4gSU5EVVNUUklFUywgTFRELgotCQkJCUVMRUNUUk9OSUNTIERJVklTSU9OCi0JCQkJU0hJR0EgUExBTlQgMTAwMC0yIE9IVEFOSSBPS0FNT1RPLUNITywgSwotCQkJCUpBUEFOIDUyNQotCQkJCUpBUEFOCi0KLTAwLTgwLTUwICAgKGhleCkJCVpJQVRFQ0ggQ09SUE9SQVRJT04KLTAwODA1MCAgICAgKGJhc2UgMTYpCQlaSUFURUNIIENPUlBPUkFUSU9OCi0JCQkJMzQzMyBST0JFUlRPIENPVVJUCi0JCQkJU0FOIExVSVMgT0JJU1BPIENBIDkzNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC01MSAgIChoZXgpCQlGSUJFUk1VWAotMDA4MDUxICAgICAoYmFzZSAxNikJCUZJQkVSTVVYCi0JCQkJOTMxMCBUT1BBTkdBIENBTllPTiBCTFZELgotCQkJCUNIQVRTV09SVEggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTUyICAgKGhleCkJCVRFQ0hOSUNBTExZIEVMSVRFIENPTkNFUFRTCi0wMDgwNTIgICAgIChiYXNlIDE2KQkJVEVDSE5JQ0FMTFkgRUxJVEUgQ09OQ0VQVFMKLQkJCQkyNjE1IFBBQ0lGSUMgQ09BU1QgSElHSFdBWQotCQkJCUhFUk1PU0EgQkVBQ0ggQ0EgOTAyNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTUzICAgKGhleCkJCUlOVEVMTElDT00sIElOQy4KLTAwODA1MyAgICAgKGJhc2UgMTYpCQlJTlRFTExJQ09NLCBJTkMuCi0JCQkJMjA0MTUgTk9SREhPRkYgU1RSRUVUCi0JCQkJQ0hBVFNXT1JUSCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNTQgICAoaGV4KQkJRlJPTlRJRVIgVEVDSE5PTE9HSUVTIENPUlAuCi0wMDgwNTQgICAgIChiYXNlIDE2KQkJRlJPTlRJRVIgVEVDSE5PTE9HSUVTIENPUlAuCi0JCQkJMTAyMDEgTk8uIFBULiBXQVNISU5HVE9OIFJPQUQKLQkJCQlNRVFVT04gV0kgNTMwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTU1ICAgKGhleCkJCUZFUk1JTEFCCi0wMDgwNTUgICAgIChiYXNlIDE2KQkJRkVSTUlMQUIKLQkJCQlQLk8uIEJPWCA1MDAsIE1TLTIzNAotCQkJCUJBVEFWSUEgSUwgNjA1MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTU2ICAgKGhleCkJCVNQSElOWCBFTEVLVFJPTklLIEdNQkgKLTAwODA1NiAgICAgKGJhc2UgMTYpCQlTUEhJTlggRUxFS1RST05JSyBHTUJICi0JCQkJV0FMRE1BVFRFTlNUUiwgMTMKLQkJCQk3ODA4IFdBTERLSVJDSCAzIFJBUFBFTkVDS1NUUkFCRSAxCi0JCQkJV0VTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC04MC01NyAgIChoZXgpCQlBRFNPRlQsIExURC4KLTAwODA1NyAgICAgKGJhc2UgMTYpCQlBRFNPRlQsIExURC4KLQkJCQlJbSBCYXVtZ2FydGVuIDYKLQkJCQlNT0hMSU4gQ0gtNDMxMyAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC04MC01OCAgIChoZXgpCQlQUklOVEVSIFNZU1RFTVMgQ09SUE9SQVRJT04KLTAwODA1OCAgICAgKGJhc2UgMTYpCQlQUklOVEVSIFNZU1RFTVMgQ09SUE9SQVRJT04KLQkJCQkyMDcgUEFSUlkgUEFSS1dBWQotCQkJCUdBSVRIRVJTQlVSRyBNRCAyMDg3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNTkgICAoaGV4KQkJU1RBTkxFWSBFTEVDVFJJQyBDTy4sIExURAotMDA4MDU5ICAgICAoYmFzZSAxNikJCVNUQU5MRVkgRUxFQ1RSSUMgQ08uLCBMVEQKLQkJCQlSJkQgTEFCT1JBVE9SWQotCQkJCTEtMy0xIEVEQS1OSVNISSwgTUlET1JJLUtVLCBZT0tPSEFNQS1TSEkKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTVBICAgKGhleCkJCVRVTElQIENPTVBVVEVSUyBJTlRFUk5BVCdMIEIuVgotMDA4MDVBICAgICAoYmFzZSAxNikJCVRVTElQIENPTVBVVEVSUyBJTlRFUk5BVCdMIEIuVgotCQkJCVAuTy4gQk9YIDMzMzMKLQkJCQk1MjAzIERIICdTLUhFUlRPR0VOQk9TQ0gKLQkJCQlUSEUgTkVUSEVSTEFORFMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC04MC01QiAgIChoZXgpCQlDT05ET1IgU1lTVEVNUywgSU5DLgotMDA4MDVCICAgICAoYmFzZSAxNikJCUNPTkRPUiBTWVNURU1TLCBJTkMuCi0JCQkJMjEzMyBTQU1BUklMVEFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTVDICAgKGhleCkJCUFHSUxJUyBDT1JQT1JBVElPTgotMDA4MDVDICAgICAoYmFzZSAxNikJCUFHSUxJUyBDT1JQT1JBVElPTgotCQkJCTExMDEgU0FOIEFOVE9OSU8gUk9BRAotCQkJCVNVSVRFIDEwMQotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMtMTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNUQgICAoaGV4KQkJQ0FOU1RBUgotMDA4MDVEICAgICAoYmFzZSAxNikJCUNBTlNUQVIKLQkJCQkzOTAwIFZJQ1RPUklBIFBBUksgQVZFTlVFCi0JCQkJTk9SVEggWU9SSyBPTlRBUklPLCBDQU5BREEKLQkJCQlNMkggM0g3Ci0JCQkJQ0FOQURBCi0KLTAwLTgwLTVFICAgKGhleCkJCUxTSSBMT0dJQyBDT1JQT1JBVElPTgotMDA4MDVFICAgICAoYmFzZSAxNikJCUxTSSBMT0dJQyBDT1JQT1JBVElPTgotCQkJCTE1NTEgTUNDQVJUSFkgQk9VTEVWQVJECi0JCQkJTVMgRzgxMwotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC01RiAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTAwODA1RiAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNjAgICAoaGV4KQkJTkVUV09SSyBJTlRFUkZBQ0UgQ09SUE9SQVRJT04KLTAwODA2MCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIElOVEVSRkFDRSBDT1JQT1JBVElPTgotCQkJCTE1MDE5IFdFU1QgOTUgU1RSRUVUCi0JCQkJTEVORVhBIEtTIDY2MjE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC02MSAgIChoZXgpCQlMSVRUT04gU1lTVEVNUywgSU5DLgotMDA4MDYxICAgICAoYmFzZSAxNikJCUxJVFRPTiBTWVNURU1TLCBJTkMuCi0JCQkJTS9TIDQ0LTIwCi0JCQkJMjk4NTEgQUdPVVJBIFJPQUQKLQkJCQlBR09VUkEgSElMTFMgQ0EgOTEzMDEtMDUwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNjIgICAoaGV4KQkJSU5URVJGQUNFICBDTy4KLTAwODA2MiAgICAgKGJhc2UgMTYpCQlJTlRFUkZBQ0UgIENPLgotCQkJCTgtMjYgT1pVIDUtQ0hPTUUgTUlOQU1JLUtVCi0JCQkJSElST1NISU1BIDczMgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtNjMgICAoaGV4KQkJSGlyc2NobWFubiBBdXRvbWF0aW9uIGFuZCBDb250cm9sIEdtYkgKLTAwODA2MyAgICAgKGJhc2UgMTYpCQlIaXJzY2htYW5uIEF1dG9tYXRpb24gYW5kIENvbnRyb2wgR21iSAotCQkJCVN0dXR0Z2FydGVyIFN0cmFzc2UgNDUtNTEgCi0JCQkJTmVja2FydGVuemxpbmdlbiAgIEQtNzI2NTQgCi0JCQkJR0VSTUFOWQotCi0wMC04MC02NCAgIChoZXgpCQlXWVNFIFRFQ0hOT0xPR1kKLTAwODA2NCAgICAgKGJhc2UgMTYpCQlXWVNFIFRFQ0hOT0xPR1kKLQkJCQkzNDcxIE5PUlRIIEZJUlNUIFNUUkVFVCBNL1MKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNjUgICAoaGV4KQkJQ1lCRVJHUkFQSElDIFNZU1RFTVMgUFRZIExURC4KLTAwODA2NSAgICAgKGJhc2UgMTYpCQlDWUJFUkdSQVBISUMgU1lTVEVNUyBQVFkgTFRELgotCQkJCTI5MCBCVVJXT09EIFJPQUQKLQkJCQlIQVdUSE9STiwgVklDVE9SSUEgMzEyMgotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC04MC02NiAgIChoZXgpCQlBUkNPTSBDT05UUk9MIFNZU1RFTVMsIExURC4KLTAwODA2NiAgICAgKGJhc2UgMTYpCQlBUkNPTSBDT05UUk9MIFNZU1RFTVMsIExURC4KLQkJCQlVTklUIDgsIENMSUZUT04gUk9BRAotCQkJCUNBTUJSSURHRSBDQkkgNFdICi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC02NyAgIChoZXgpCQlTUVVBUkUgRCBDT01QQU5ZCi0wMDgwNjcgICAgIChiYXNlIDE2KQkJU1FVQVJFIEQgQ09NUEFOWQotCQkJCTQwNDEgTk9SVEggUklDSEFSRCBTVFJFRVQKLQkJCQlQLk8uIEJPWCA0NzIKLQkJCQlNSUxXQVVLRUUgV0kgNTMyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTY4ICAgKGhleCkJCVlBTUFURUNIIFNDSUVOVElGSUMgTFRELgotMDA4MDY4ICAgICAoYmFzZSAxNikJCVlBTUFURUNIIFNDSUVOVElGSUMgTFRELgotCQkJCTEyNTUgTEFJUkQsIFNVSVRFIDI2MAotCQkJCU1PTlRSRUFMLCBRVUVCRUMgSDNQIDJUMQotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC04MC02OSAgIChoZXgpCQlDT01QVVRPTkUgU1lTVEVNUwotMDA4MDY5ICAgICAoYmFzZSAxNikJCUNPTVBVVE9ORSBTWVNURU1TCi0JCQkJMTEwMCBOT1JUSE1FQURPVyBQQVJLV0FZCi0JCQkJU1VJVEUgMTUwCi0JCQkJUk9TV0VMTCBHQSAzMDA3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNkEgICAoaGV4KQkJRVJJIChFTVBBQyBSRVNFQVJDSCBJTkMuKQotMDA4MDZBICAgICAoYmFzZSAxNikJCUVSSSAoRU1QQUMgUkVTRUFSQ0ggSU5DLikKLQkJCQk0NzU2MCBTRUFCUklER0UgRFJJVkUKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC02QiAgIChoZXgpCQlTQ0hNSUQgVEVMRUNPTU1VTklDQVRJT04KLTAwODA2QiAgICAgKGJhc2UgMTYpCQlTQ0hNSUQgVEVMRUNPTU1VTklDQVRJT04KLQkJCQlCSU5aU1RSQVNTRSAzNSwKLQkJCQlDSC04MDQ1IFpVUklDSAotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtODAtNkMgICAoaGV4KQkJQ0VHRUxFQyBQUk9KRUNUUyBMVEQKLTAwODA2QyAgICAgKGJhc2UgMTYpCQlDRUdFTEVDIFBST0pFQ1RTIExURAotCQkJCURFUFQuIE1ERCwKLQkJCQlCT1VHSFRPTiBSRCwgIFJVR0JZIFdBUktTLCBDTzIxIDFCVQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC02RCAgIChoZXgpCQlDRU5UVVJZIFNZU1RFTVMgQ09SUC4KLTAwODA2RCAgICAgKGJhc2UgMTYpCQlDRU5UVVJZIFNZU1RFTVMgQ09SUC4KLQkJCQkyLTgtMTIgTUlOQU1JLUNITwotCQkJCUtPS1VCVU5KSS1TSEksIFRPS1lPCi0JCQkJMTg1IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtNkUgICAoaGV4KQkJTklQUE9OIFNURUVMIENPUlBPUkFUSU9OCi0wMDgwNkUgICAgIChiYXNlIDE2KQkJTklQUE9OIFNURUVMIENPUlBPUkFUSU9OCi0JCQkJMzEtMSBTSElOS0FXQSAyLUNIT1VNRQotCQkJCUNIVU8tS1UgVE9LWU8gMTA0Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC02RiAgIChoZXgpCQlPTkVMQU4gTFRELgotMDA4MDZGICAgICAoYmFzZSAxNikJCU9ORUxBTiBMVEQuCi0JCQkJUC5PLiBCT1ggMTA3Ci0JCQkJSEVOTEVZIE9OIFRIQU1FUyBPWEZPUkRTSElSRSBSRzkgM05PUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtNzAgICAoaGV4KQkJQ09NUFVUQURPUkFTIE1JQ1JPTgotMDA4MDcwICAgICAoYmFzZSAxNikJCUNPTVBVVEFET1JBUyBNSUNST04KLQkJCQlHVUVSUkVSTyAyMDAxIC0gMTkKLQkJCQlJUkFQVUFUTyBHVE8gIDM2NjYwCi0JCQkJTUVYSUNPCi0JCQkJTUVYSUNPCi0KLTAwLTgwLTcxICAgKGhleCkJCVNBSSBURUNITk9MT0dZCi0wMDgwNzEgICAgIChiYXNlIDE2KQkJU0FJIFRFQ0hOT0xPR1kKLQkJCQk0MjI0IENBTVBVUyBQT0lOVCBDT1VSVAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMS0xNTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC03MiAgIChoZXgpCQlNSUNST1BMRVggU1lTVEVNUyBMVEQuCi0wMDgwNzIgICAgIChiYXNlIDE2KQkJTUlDUk9QTEVYIFNZU1RFTVMgTFRELgotCQkJCTEwNC0yMDcxIEtpbmdzd2F5Ci0JCQkJUG9ydCBDb3F1aXRsYW0sICBCQyBWM0MgNk4yCi0JCQkJQ0FOQURBCi0KLTAwLTgwLTczICAgKGhleCkJCURXQiBBU1NPQ0lBVEVTCi0wMDgwNzMgICAgIChiYXNlIDE2KQkJRFdCIEFTU09DSUFURVMKLQkJCQk5MzYwIFNXIEdFTUlOSSBEUklWRQotCQkJCUJFQVZFUlRPTiBPUiA5NzAwNS03MTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC03NCAgIChoZXgpCQlGSVNIRVIgQ09OVFJPTFMKLTAwODA3NCAgICAgKGJhc2UgMTYpCQlGSVNIRVIgQ09OVFJPTFMKLQkJCQkxNzEyIENFTlRSRSBDUkVFSyBEUklWRQotCQkJCUFVU1RJTiBUWCA3ODc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNzUgICAoaGV4KQkJUEFSU1lURUMgR01CSAotMDA4MDc1ICAgICAoYmFzZSAxNikJCVBBUlNZVEVDIEdNQkgKLQkJCQlKVUVMSUNIRVIgU1RSLiAzMzgKLQkJCQlENTEwMCBBQUNIRU4KLQkJCQlGLlIuIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLTc2ICAgKGhleCkJCU1DTkMKLTAwODA3NiAgICAgKGJhc2UgMTYpCQlNQ05DCi0JCQkJUC5PLiBCT1ggMTI4ODkKLQkJCQlSVFAgTkMgMjc3MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTc3ICAgKGhleCkJCUJST1RIRVIgSU5EVVNUUklFUywgTFRELgotMDA4MDc3ICAgICAoYmFzZSAxNikJCUJST1RIRVIgSU5EVVNUUklFUywgTFRELgotCQkJCVJFU0VBUkNIIExBQk9SQVRPUlkKLQkJCQk5LTM1IEhPUklUQS1ET1JJLCBNSVpVSE8tS1UgTkFHT1lBLCA0NjcKLQkJCQlKQVBBTgotCi0wMC04MC03OCAgIChoZXgpCQlQUkFDVElDQUwgUEVSSVBIRVJBTFMsIElOQy4KLTAwODA3OCAgICAgKGJhc2UgMTYpCQlQUkFDVElDQUwgUEVSSVBIRVJBTFMsIElOQy4KLQkJCQkzNzUgQ09ORUpPIFJJREdFIEFWRU5VRQotCQkJCVRIT1VTQU5EIE9BS1MgQ0EgOTEzNjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTc5ICAgKGhleCkJCU1JQ1JPQlVTIERFU0lHTlMgTFRELgotMDA4MDc5ICAgICAoYmFzZSAxNikJCU1JQ1JPQlVTIERFU0lHTlMgTFRELgotCQkJCVRSRUFEQVdBWSBISUxMCi0JCQkJTE9VRFdBVEVSIEhJR0ggV1lDT01CRSBCVUNLUyBIUDEwIDlRTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtN0EgICAoaGV4KQkJQUlURUNIIFNZU1RFTVMgTFRELgotMDA4MDdBICAgICAoYmFzZSAxNikJCUFJVEVDSCBTWVNURU1TIExURC4KLQkJCQkzMDgwIE9MQ09UVCBTVFJFRVQKLQkJCQlTVUlURSAxMDVBCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTdCICAgKGhleCkJCUFSVEVMIENPTU1VTklDQVRJT05TIENPUlAuCi0wMDgwN0IgICAgIChiYXNlIDE2KQkJQVJURUwgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQkyMiBLQU5FIElORFVTVFJJQUwgRFJJVkUKLQkJCQlIVURTT04gTUEgMDE3NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTdDICAgKGhleCkJCUZJQkVSQ09NLCBJTkMuCi0wMDgwN0MgICAgIChiYXNlIDE2KQkJRklCRVJDT00sIElOQy4KLQkJCQkzMzUzIE9SQU5HRSBBVkVOVUUgTkUKLQkJCQlST0FOT0tFIFZBIDI0MDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC03RCAgIChoZXgpCQlFUVVJTk9YIFNZU1RFTVMgSU5DLgotMDA4MDdEICAgICAoYmFzZSAxNikJCUVRVUlOT1ggU1lTVEVNUyBJTkMuCi0JCQkJMTQyNjAgU1cgMTE5VEggQVZFTlVFCi0JCQkJTUlBTUkgRkwgMzMxODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTdFICAgKGhleCkJCVNPVVRIRVJOIFBBQ0lGSUMgTFRELgotMDA4MDdFICAgICAoYmFzZSAxNikJCVNPVVRIRVJOIFBBQ0lGSUMgTFRELgotCQkJCVNBTldBIEJMREcuLCAyLTE2LTIwCi0JCQkJTUlOQU1JU0FJV0FJIE5JU0hJIFlPS09IQU1BCi0JCQkJSkFQQU4gSkFQQU4gMjIwCi0JCQkJSkFQQU4KLQotMDAtODAtN0YgICAoaGV4KQkJRFktNCBJTkNPUlBPUkFURUQKLTAwODA3RiAgICAgKGJhc2UgMTYpCQlEWS00IElOQ09SUE9SQVRFRAotCQkJCTMzMyBQQUxMQURJVU0gRFJJVkUsIE1TIDMxMgotCQkJCUtBTkFUQSwgT05UQVJJTywgSzJWIDFBNgotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC04MC04MCAgIChoZXgpCQlEQVRBTUVESUEgQ09SUE9SQVRJT04KLTAwODA4MCAgICAgKGJhc2UgMTYpCQlEQVRBTUVESUEgQ09SUE9SQVRJT04KLQkJCQk3NDAxIENFTlRSQUwgSElHSFdBWQotCQkJCVBFTk5TQVVLRU4gTkogMDgxMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTgxICAgKGhleCkJCUtFTkRBTEwgU1FVQVJFIFJFU0VBUkNIIENPUlAuCi0wMDgwODEgICAgIChiYXNlIDE2KQkJS0VOREFMTCBTUVVBUkUgUkVTRUFSQ0ggQ09SUC4KLQkJCQkxNzAgVFJBQ0VSIExBTkUKLQkJCQlXQUxUSEFNIE1BIDAyMTU0LTEzNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTgyICAgKGhleCkJCVBFUCBNT0RVTEFSIENPTVBVVEVSUyBHTUJICi0wMDgwODIgICAgIChiYXNlIDE2KQkJUEVQIE1PRFVMQVIgQ09NUFVURVJTIEdNQkgKLQkJCQlBUEZFTFNUUkFOR0VSIFNUUi4gMTYKLQkJCQlEIC0gODk1MCBLQVVGQkVVUkVOCi0JCQkJV0VTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC04MC04MyAgIChoZXgpCQlBTURBSEwKLTAwODA4MyAgICAgKGJhc2UgMTYpCQlBTURBSEwKLQkJCQkxMjUwIEVBU1QgQVJRVUVTIEFWRU5VRQotCQkJCU0vUyAyODYgUC5PLiBCT1ggMzQ3MAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OC0zNDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC04NCAgIChoZXgpCQlUSEUgQ0xPVUQgSU5DLgotMDA4MDg0ICAgICAoYmFzZSAxNikJCVRIRSBDTE9VRCBJTkMuCi0JCQkJQ0xPVUQgQkxERy4KLQkJCQk3MS0xLCBDSEVPTkctREFNIERPTkcgS0FORy1OQU0gS1UsIFNFT1VMCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtODAtODUgICAoaGV4KQkJSC1USFJFRSBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDgwODUgICAgIChiYXNlIDE2KQkJSC1USFJFRSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMTAwIFBBUksgRFJJVkUsIFNVSVRFIDIwNAotCQkJCVJFU0VBUkNIIFRSSUFOR0xFIFBBUksKLQkJCQlOQyAyNzcwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtODYgICAoaGV4KQkJQ09NUFVURVIgR0VORVJBVElPTiBJTkMuCi0wMDgwODYgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgR0VORVJBVElPTiBJTkMuCi0JCQkJMzg1NSBQUkVTSURFTlRJQUwgUEFSS1dBWQotCQkJCUFUTEFOVEEgR0EgMzAzNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTg3ICAgKGhleCkJCU9LSSBFTEVDVFJJQyBJTkRVU1RSWSBDTy4sIExURAotMDA4MDg3ICAgICAoYmFzZSAxNikJCU9LSSBFTEVDVFJJQyBJTkRVU1RSWSBDTy4sIExURAotCQkJCTEwLTMgU0hJQkFVUkEgNC1DSE9NRQotCQkJCU1JTkFUTy1LVSwgVE9LWU8gMTA4Ci0JCQkJSkFQQU4KLQotMDAtODAtODggICAoaGV4KQkJVklDVE9SIENPTVBBTlkgT0YgSkFQQU4sIExURC4KLTAwODA4OCAgICAgKGJhc2UgMTYpCQlWSUNUT1IgQ09NUEFOWSBPRiBKQVBBTiwgTFRELgotCQkJCTU4LTcgU0hJTk1FSS1DSE8sIFlPS09TVUtBCi0JCQkJS0FOQUdBV0EgICAyMzkKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTg5ICAgKGhleCkJCVRFQ05FVElDUyAoUFRZKSBMVEQuCi0wMDgwODkgICAgIChiYXNlIDE2KQkJVEVDTkVUSUNTIChQVFkpIExURC4KLQkJCQlQLk8uIEJPWC9QT1NCVVMgNTY0MTIKLQkJCQlQSU5FR09XUklFLCAyMTIzCi0JCQkJU09VVEggQUZSSUNBCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTgwLThBICAgKGhleCkJCVNVTU1JVCBNSUNST1NZU1RFTVMgQ09SUC4KLTAwODA4QSAgICAgKGJhc2UgMTYpCQlTVU1NSVQgTUlDUk9TWVNURU1TIENPUlAuCi0JCQkJNzEwIExBS0VXQVktU1RFLiMxNTAKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC04QiAgIChoZXgpCQlEQUNPTEwgTElNSVRFRAotMDA4MDhCICAgICAoYmFzZSAxNikJCURBQ09MTCBMSU1JVEVECi0JCQkJREFDT0xMIEhPVVNFLCBHQVJETkVSUyBMQU5FCi0JCQkJQkFUSEdBVEUgV0VTVCBMT1RISUFOCi0JCQkJU0NPVExBTkQgRUg0OCAxVFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC04QyAgIChoZXgpCQlOZXRTY291dCBTeXN0ZW1zLCBJbmMuCi0wMDgwOEMgICAgIChiYXNlIDE2KQkJTmV0U2NvdXQgU3lzdGVtcywgSW5jLgotCQkJCTE1MDEgTUFJTiBTVFJFRVQKLQkJCQlTVUlURSAjNDAKLQkJCQlURVdLU0JVUlkgTUEgMDE4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLThEICAgKGhleCkJCVdFU1RDT0FTVCBURUNITk9MT0dZIEIuVi4KLTAwODA4RCAgICAgKGJhc2UgMTYpCQlXRVNUQ09BU1QgVEVDSE5PTE9HWSBCLlYuCi0JCQkJUC5PLiBCT1ggMzMxNwotCQkJCTI2MDEgREggREVMRlQKLQkJCQlORVRIRVJMQU5EUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTgwLThFICAgKGhleCkJCVJBRFNUT05FIFRFQ0hOT0xPR1kKLTAwODA4RSAgICAgKGJhc2UgMTYpCQlSQURTVE9ORSBURUNITk9MT0dZCi0JCQkJV0FURVIgTEFORSwgVE9XQ0VTVEVSCi0JCQkJTk9SVEhBTlRTIE5OMTIgN0pOCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLThGICAgKGhleCkJCUMuIElUT0ggRUxFQ1RST05JQ1MsIElOQy4KLTAwODA4RiAgICAgKGJhc2UgMTYpCQlDLiBJVE9IIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJMjUwNSBNQ0NBQkUgV0FZCi0JCQkJSVJWSU5FIENBIDkyNzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC05MCAgIChoZXgpCQlNSUNST1RFSyBJTlRFUk5BVElPTkFMLCBJTkMuCi0wMDgwOTAgICAgIChiYXNlIDE2KQkJTUlDUk9URUsgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTMzMDAgTlcgMjExVEggVEVSUkFDRQotCQkJCUhJTExTQk9SIE9SIDk3MTI0LTcxMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTkxICAgKGhleCkJCVRPS1lPIEVMRUNUUklDIENPLixMVEQKLTAwODA5MSAgICAgKGJhc2UgMTYpCQlUT0tZTyBFTEVDVFJJQyBDTy4sTFRECi0JCQkJMTAtMTQgVUNISUtBTkRBCi0JCQkJMS1DSE9NRSBDSElZT0RBLUtVCi0JCQkJVE9LWU8gSkFQQU4gMTAxCi0JCQkJSkFQQU4KLQotMDAtODAtOTIgICAoaGV4KQkJU2lsZXggVGVjaG5vbG9neSwgSW5jLgotMDA4MDkyICAgICAoYmFzZSAxNikJCVNpbGV4IFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyLTMtMSBIaWthcmlkYWksCi0JCQkJU2Vpa2EtY2hvCi0JCQkJS3lvdG8gIDYxOS0wMjM3Ci0JCQkJSkFQQU4KLQotMDAtODAtOTMgICAoaGV4KQkJWFlST04gQ09SUE9SQVRJT04KLTAwODA5MyAgICAgKGJhc2UgMTYpCQlYWVJPTiBDT1JQT1JBVElPTgotCQkJCTc4NjQgTElMWSBDT1VSVAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtOTQgICAoaGV4KQkJQUxGQSBMQVZBTCBBVVRPTUFUSU9OIEFCCi0wMDgwOTQgICAgIChiYXNlIDE2KQkJQUxGQSBMQVZBTCBBVVRPTUFUSU9OIEFCCi0JCQkJQUROCi0JCQkJUy0yMDUgMjIgTUFMTU8KLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtODAtOTUgICAoaGV4KQkJQkFTSUMgTUVSVE9OIEhBTkRFTFNHRVMuTS5CLkguCi0wMDgwOTUgICAgIChiYXNlIDE2KQkJQkFTSUMgTUVSVE9OIEhBTkRFTFNHRVMuTS5CLkguCi0JCQkJRFVSQ0hMQVNTLVNUUkFTU0UgNDIKLQkJCQlBIC0gOTAyMCBLTEFHRU5GVVJUCi0JCQkJQVVTVFJJQQotCQkJCUFVU1RSSUEKLQotMDAtODAtOTYgICAoaGV4KQkJSFVNQU4gREVTSUdORUQgU1lTVEVNUywgSU5DLgotMDA4MDk2ICAgICAoYmFzZSAxNikJCUhVTUFOIERFU0lHTkVEIFNZU1RFTVMsIElOQy4KLQkJCQk0MjEgRkVIRUxFWSBEUklWRQotCQkJCUtJTkcgT0YgUFJVU1NJQSBQQSAxOTQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtOTcgICAoaGV4KQkJQ0VOVFJBTFAgQVVUT01BVElTTUVTCi0wMDgwOTcgICAgIChiYXNlIDE2KQkJQ0VOVFJBTFAgQVVUT01BVElTTUVTCi0JCQkJMjEsIFJVRSBNQVJDRUwgUEFHTk9MIDY5Njk0Ci0JCQkJVkVOSVNTSUVVWCBDRURFWAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC04MC05OCAgIChoZXgpCQlUREsgQ09SUE9SQVRJT04KLTAwODA5OCAgICAgKGJhc2UgMTYpCQlUREsgQ09SUE9SQVRJT04KLQkJCQlDT1JQLiBSJkQgREVQVC4gVEVDSC4gSERRVEVSUy4KLQkJCQkyLTE1LTcsIEhJR0FTSEktT1dBREEsIElDSElLQVdBLVNISQotCQkJCUNISUJBLUtFTiAyNzIsIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtOTkgICAoaGV4KQkJS0xPQ0tORVIgTU9FTExFUiBJUEMKLTAwODA5OSAgICAgKGJhc2UgMTYpCQlLTE9DS05FUiBNT0VMTEVSIElQQwotCQkJCUZSSVRaLUtPVFotU1RSLiA4Ci0JCQkJUC5PLiBCT1ggMTMgODAgRC01Mjc2IFdJRUhMIDEtQk9NSUcKLQkJCQlXRVNUIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLTlBICAgKGhleCkJCU5PVlVTIE5FVFdPUktTIExURAotMDA4MDlBICAgICAoYmFzZSAxNikJCU5PVlVTIE5FVFdPUktTIExURAotCQkJCUpPSE4gU0NPVFQgSE9VU0UKLQkJCQlNQVJLRVQgU1RSRUVUIEJSQUNLTkVMTCwgQkVSS1cgIFJHMTIgMUpCCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLTlCICAgKGhleCkJCUpVU1RTWVNURU0gQ09SUE9SQVRJT04KLTAwODA5QiAgICAgKGJhc2UgMTYpCQlKVVNUU1lTVEVNIENPUlBPUkFUSU9OCi0JCQkJMy00NiBPS0lOT0hBTUFISUdBU0hJCi0JCQkJVE9LVVNJTUFTSEkgNzcwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC05QyAgIChoZXgpCQlMVVhDT00sIElOQy4KLTAwODA5QyAgICAgKGJhc2UgMTYpCQlMVVhDT00sIElOQy4KLQkJCQkzMjQ5IExBVVJFTFZJRVcgQ09VUlQKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC05RCAgIChoZXgpCQlDb21tc2NyYWZ0IEx0ZC4KLTAwODA5RCAgICAgKGJhc2UgMTYpCQlDb21tc2NyYWZ0IEx0ZC4KLQkJCQlQTyBCT1ggMTYwCi0JCQkJQkVOVExFWSwgVy5BLiA2MTAyCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTgwLTlFICAgKGhleCkJCURBVFVTIEdNQkgKLTAwODA5RSAgICAgKGJhc2UgMTYpCQlEQVRVUyBHTUJICi0JCQkJSU5EVVNUUklFU1RSLiAyCi0JCQkJRC01MTAyIFdVUlNFTEVOL0FBQ0hFTgotCQkJCVdFU1QgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtODAtOUYgICAoaGV4KQkJQUxDQVRFTCBCVVNJTkVTUyBTWVNURU1TCi0wMDgwOUYgICAgIChiYXNlIDE2KQkJQUxDQVRFTCBCVVNJTkVTUyBTWVNURU1TCi0JCQkJNTQsIEFWRU5VRSBKRUFOIEpBVVJFUwotCQkJCTkyNzA3IENPTE9NQkVTIENFREVYCi0JCQkJRlJBTkNFCi0KLTAwLTgwLUEwICAgKGhleCkJCUVESVNBIEhFV0xFVFQgUEFDS0FSRCBTL0EKLTAwODBBMCAgICAgKGJhc2UgMTYpCQlFRElTQSBIRVdMRVRUIFBBQ0tBUkQgUy9BCi0JCQkJQUxBTUVEQSBSSU8gTkVHUk8sCi0JCQkJNzUwLUFMUEhBVklMTEUgMDY0NTQtMDAwICBCQVJVRVJJIFNQCi0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLTgwLUExICAgKGhleCkJCU1JQ1JPVEVTVCwgSU5DLgotMDA4MEExICAgICAoYmFzZSAxNikJCU1JQ1JPVEVTVCwgSU5DLgotCQkJCTQ3NDcgTi4gMjJORCBTVFJFRVQKLQkJCQlQSE9FTklYIEFaIDg1MDE2LTQ3MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUEyICAgKGhleCkJCUNSRUFUSVZFIEVMRUNUUk9OSUMgU1lTVEVNUwotMDA4MEEyICAgICAoYmFzZSAxNikJCUNSRUFUSVZFIEVMRUNUUk9OSUMgU1lTVEVNUwotCQkJCTcwIFJPVVRFIERVIFBPTlQgLSBCVVRJTgotCQkJCUNILTEyMTMgUEVUSVQtTEFOQ1kgR0VORVZBCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC04MC1BMyAgIChoZXgpCQlMYW50cm9uaXgKLTAwODBBMyAgICAgKGJhc2UgMTYpCQlMYW50cm9uaXgKLQkJCQkxNTM1MyBCYXJyYW5jYSBQYXJrd2F5Ci0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BNCAgIChoZXgpCQlMSUJFUlRZIEVMRUNUUk9OSUNTCi0wMDgwQTQgICAgIChiYXNlIDE2KQkJTElCRVJUWSBFTEVDVFJPTklDUwotCQkJCTMzMiBIQVJCT1IgV0FZCi0JCQkJU09VVEggU0FOIEZSQU5DSVNDTyBDQSA5NDA4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQTUgICAoaGV4KQkJU1BFRUQgSU5URVJOQVRJT05BTAotMDA4MEE1ICAgICAoYmFzZSAxNikJCVNQRUVEIElOVEVSTkFUSU9OQUwKLQkJCQkxMzIwIEFSQk9MSVRBIERSLgotCQkJCUxBIEhBQlJBIENBIDkwNjMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BNiAgIChoZXgpCQlSRVBVQkxJQyBURUNITk9MT0dZLCBJTkMuCi0wMDgwQTYgICAgIChiYXNlIDE2KQkJUkVQVUJMSUMgVEVDSE5PTE9HWSwgSU5DLgotCQkJCVAuTy4gQk9YIDE0MTAwNgotCQkJCUFVU1RJTiBUWCA3ODcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQTcgICAoaGV4KQkJSG9uZXl3ZWxsIEludGVybmF0aW9uYWwgSW5jCi0wMDgwQTcgICAgIChiYXNlIDE2KQkJSG9uZXl3ZWxsIEludGVybmF0aW9uYWwgSW5jCi0JCQkJVmFuY291dmVyIENlbnRlciBvZiBFeGNlbGxlbmNlIAotCQkJCTUwMCBCcm9va3NiYW5rIEF2ZW51ZSAKLQkJCQlOb3J0aCBWYW5jb3V2ZXIgIFY3SiAzUzQgCi0JCQkJQ0FOQURBCi0KLTAwLTgwLUE4ICAgKGhleCkJCVZJVEFDT00gQ09SUE9SQVRJT04KLTAwODBBOCAgICAgKGJhc2UgMTYpCQlWSVRBQ09NIENPUlBPUkFUSU9OCi0JCQkJMTMzMCBDSEFSTEVTVE9OIFJPQUQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BOSAgIChoZXgpCQlDTEVBUlBPSU5UIFJFU0VBUkNICi0wMDgwQTkgICAgIChiYXNlIDE2KQkJQ0xFQVJQT0lOVCBSRVNFQVJDSAotCQkJCTE5MCBOT1JUSCBNQUlOIFNUUkVFVAotCQkJCU5BVElDSyBNQQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQUEgICAoaGV4KQkJTUFYUEVFRAotMDA4MEFBICAgICAoYmFzZSAxNikJCU1BWFBFRUQKLQkJCQkxMTIwIENIRVNTIERSSVZFCi0JCQkJRk9TVEVSIENJVFkgQ0EgOTQ0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUFCICAgKGhleCkJCURVS0FORSBORVRXT1JLIElOVEVHUkFUSU9OCi0wMDgwQUIgICAgIChiYXNlIDE2KQkJRFVLQU5FIE5FVFdPUksgSU5URUdSQVRJT04KLQkJCQkyOTAwIERVS0FORSBEUklWRQotCQkJCVNULiBDSEFSTEVTIElMIDYwMTc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BQyAgIChoZXgpCQlJTUxPR0lYLCBESVZJU0lPTiBPRiBHRU5FU1lTCi0wMDgwQUMgICAgIChiYXNlIDE2KQkJSU1MT0dJWCwgRElWSVNJT04gT0YgR0VORVNZUwotCQkJCTE5MDAgU1VNTUlUIFRPV0VSIEJMVkQuU1RFIzc3MAotCQkJCU9STEFORE8gRkwgMzI4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUFEICAgKGhleCkJCUNORVQgVEVDSE5PTE9HWSwgSU5DLgotMDA4MEFEICAgICAoYmFzZSAxNikJCUNORVQgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTIxOTkgWkFOS0VSIFJPQUQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQUUgICAoaGV4KQkJSFVHSEVTIE5FVFdPUksgU1lTVEVNUwotMDA4MEFFICAgICAoYmFzZSAxNikJCUhVR0hFUyBORVRXT1JLIFNZU1RFTVMKLQkJCQkxMTcxNyBFWFBMT1JBVElPTiBMQU5FCi0JCQkJR0VSTUFOVE9XTiBNRCAyMDg3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQUYgICAoaGV4KQkJQUxMVU1FUiBDTy4sIExURC4KLTAwODBBRiAgICAgKGJhc2UgMTYpCQlBTExVTUVSIENPLiwgTFRELgotCQkJCTItOC04IENIVU8tQ0hPLCBNRUdVUk8tS1UKLQkJCQlUT0tZTyAxNTIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUIwICAgKGhleCkJCUFEVkFOQ0VEIElORk9STUFUSU9OCi0wMDgwQjAgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgSU5GT1JNQVRJT04KLQkJCQlURUNITk9MT0dZLCBJTkMuCi0JCQkJNUYgMS0yLTYgTklIT05CQVNISS1IT05DSE8gQ0hVTy1LVSwgIFRPSwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtQjEgICAoaGV4KQkJU09GVENPTSBBL1MKLTAwODBCMSAgICAgKGJhc2UgMTYpCQlTT0ZUQ09NIEEvUwotCQkJCVNUVURJRVNUUkFFREUgMjEKLQkJCQlESyAxNDU1IENPUEVOTkhBR0VOIEsuCi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtODAtQjIgICAoaGV4KQkJTkVUV09SSyBFUVVJUE1FTlQgVEVDSE5PTE9HSUVTCi0wMDgwQjIgICAgIChiYXNlIDE2KQkJTkVUV09SSyBFUVVJUE1FTlQgVEVDSE5PTE9HSUVTCi0JCQkJNjkwMCBQQVNFTyBQQURSRSBQQVJLV0FZCi0JCQkJRlJFTU9OVCBDQSA5NDU1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQjMgICAoaGV4KQkJQVZBTCBEQVRBIENPUlBPUkFUSU9OCi0wMDgwQjMgICAgIChiYXNlIDE2KQkJQVZBTCBEQVRBIENPUlBPUkFUSU9OCi0JCQkJTUFDSElEQSBFTkdJTkVFUklORyBDRU5URVIKLQkJCQkxNzU3LTEgS0FOQUktQ0hPIE1BQ0hJREEgQ0lUWSBUT0tZTyBKQVBBCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1CNCAgIChoZXgpCQlTT1BISUEgU1lTVEVNUwotMDA4MEI0ICAgICAoYmFzZSAxNikJCVNPUEhJQSBTWVNURU1TCi0JCQkJMzMzNyBLSUZFUiBST0FECi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUI1ICAgKGhleCkJCVVOSVRFRCBORVRXT1JLUyBJTkMuCi0wMDgwQjUgICAgIChiYXNlIDE2KQkJVU5JVEVEIE5FVFdPUktTIElOQy4KLQkJCQkyMTc4IFBBUkFHT04gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQjYgICAoaGV4KQkJVEhFTUlTIENPTVBVVEVSCi0wMDgwQjYgICAgIChiYXNlIDE2KQkJVEhFTUlTIENPTVBVVEVSCi0JCQkJNjY4MSBPV0VOUyBEUklWRQotCQkJCVBMRUFTT05UT04gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUI3ICAgKGhleCkJCVNURUxMQVIgQ09NUFVURVIKLTAwODBCNyAgICAgKGJhc2UgMTYpCQlTVEVMTEFSIENPTVBVVEVSCi0JCQkJOTUgV0VMTFMgQVZFTlVFCi0JCQkJTkVXVE9OIE1BIDAyMTU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1COCAgIChoZXgpCQlCVUcsIElOQ09SUE9SQVRFRAotMDA4MEI4ICAgICAoYmFzZSAxNikJCUJVRywgSU5DT1JQT1JBVEVECi0JCQkJMS0xNCBURUNITk8tUEFSSyAgMS1DSE9NRQotCQkJCVNISU1PTk9QUE9STywgQVRTVUJFVFNVLUtVIFNBUFBPUk8gMDA0LAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtQjkgICAoaGV4KQkJQVJDSEUgVEVDSE5PTElHSUVTIElOQy4KLTAwODBCOSAgICAgKGJhc2UgMTYpCQlBUkNIRSBURUNITk9MSUdJRVMgSU5DLgotCQkJCTQ4NTAyIEtBVE8gUk9BRAotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTIE1JTk9SIE9VVExZSU5HIElTTEFOCi0KLTAwLTgwLUJBICAgKGhleCkJCVNQRUNJQUxJWCAoQVNJQSkgUFRFLCBMVEQKLTAwODBCQSAgICAgKGJhc2UgMTYpCQlTUEVDSUFMSVggKEFTSUEpIFBURSwgTFRECi0JCQkJMyBXSU5URVJTRUxMUyBST0FECi0JCQkJQllGTEVFVCBTVVJSRVkgIEtUMTQ3TEYKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLUJCICAgKGhleCkJCUhVR0hFUyBMQU4gU1lTVEVNUwotMDA4MEJCICAgICAoYmFzZSAxNikJCUhVR0hFUyBMQU4gU1lTVEVNUwotCQkJCTEyMjUgQ0hBUkxFU1RPTiBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQkMgICAoaGV4KQkJSElUQUNISSBFTkdJTkVFUklORyBDTy4sIExURAotMDA4MEJDICAgICAoYmFzZSAxNikJCUhJVEFDSEkgRU5HSU5FRVJJTkcgQ08uLCBMVEQKLQkJCQk0LTgtMjYsIE9NSUtBQ0hPCi0JCQkJSElUQUNISSBDSVRZIElCQVJBS0kgUFJFRkVDVFVSRSAzMTktMTIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUJEICAgKGhleCkJCVRIRSBGVVJVS0FXQSBFTEVDVFJJQyBDTy4sIExURAotMDA4MEJEICAgICAoYmFzZSAxNikJCVRIRSBGVVJVS0FXQSBFTEVDVFJJQyBDTy4sIExURAotCQkJCTYtMSwgTUFSVU5PVUNISSAyLUNIT01FCi0JCQkJQ0hJWU9EQS1LVSwgVE9LWU8KLQkJCQkxMDAgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1CRSAgIChoZXgpCQlBUklFUyBSRVNFQVJDSAotMDA4MEJFICAgICAoYmFzZSAxNikJCUFSSUVTIFJFU0VBUkNICi0JCQkJNDY3OTEgRlJFTU9ORCBCTFZELgotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUJGICAgKGhleCkJCVRBS0FPS0EgRUxFQ1RSSUMgTUZHLiBDTy4gTFRELgotMDA4MEJGICAgICAoYmFzZSAxNikJCVRBS0FPS0EgRUxFQ1RSSUMgTUZHLiBDTy4gTFRELgotCQkJCUtBTkRBIEJSQU5DSCBPRkZJQ0UgVE9ORU4KLQkJCQkyLTEtMTEsIFNBUlVHQUtVLUNITyBDSElZT0RBLUtVLCBUT0tZTywKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUMwICAgKGhleCkJCVBFTlJJTCBEQVRBQ09NTQotMDA4MEMwICAgICAoYmFzZSAxNikJCVBFTlJJTCBEQVRBQ09NTQotCQkJCTEzMDAgUVVJTkNFIE9SQ0hBUkQgQkxWRC4KLQkJCQlHQUlUSEVSU0JVUkcgTUQgMjA4NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUMxICAgKGhleCkJCUxBTkVYIENPUlBPUkFUSU9OCi0wMDgwQzEgICAgIChiYXNlIDE2KQkJTEFORVggQ09SUE9SQVRJT04KLQkJCQkxMDcyNyBUVUNLRVIgU1RSRUVUCi0JCQkJQkVMVFNWSUxMRSBNRCAyMDcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQzIgICAoaGV4KQkJSUVFRSA4MDIuMSBDT01NSVRURUUKLTAwODBDMiAgICAgKGJhc2UgMTYpCQlJRUVFIDgwMi4xIENPTU1JVFRFRQotCQkJCTgwMi4xIENoYWlyLCBjL28gSUVFRSBTdGFuZGFyZHMgQXNzb2NpYXRpb24KLQkJCQk0NDUgSG9lcyBMYW5lCi0JCQkJUGlzY2F0YXdheSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQzMgICAoaGV4KQkJQklDQyBJTkZPUk1BVElPTiBTWVNURU1TICYgU1ZDCi0wMDgwQzMgICAgIChiYXNlIDE2KQkJQklDQyBJTkZPUk1BVElPTiBTWVNURU1TICYgU1ZDCi0JCQkJNTAwIENBUEFCSUxJVFkgR1JFRU4sIExVVE9OCi0JCQkJQkVERk9SRFNISVJFCi0JCQkJRU5HTEFORCBMVTEgM0xUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtQzQgICAoaGV4KQkJRE9DVU1FTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDgwQzQgICAgIChiYXNlIDE2KQkJRE9DVU1FTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTMwMCBDSEFSTEVTVE9OIFJPQUQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DNSAgIChoZXgpCQlOT1ZFTExDTyBERSBNRVhJQ08KLTAwODBDNSAgICAgKGJhc2UgMTYpCQlOT1ZFTExDTyBERSBNRVhJQ08KLQkJCQlDT05TVElUVVlFTlRFUyBOTy4gOTA3Ci0JCQkJQ09MLiBMT01BUyBBTFRBUwotCQkJCTExOTUwIE1FWElDTyAxMTk1MCBNRVhJQ08gRC5GLgotCQkJCU1FWElDTwotCi0wMC04MC1DNiAgIChoZXgpCQlOQVRJT05BTCBEQVRBQ09NTSBDT1JQT1JBVElPTgotMDA4MEM2ICAgICAoYmFzZSAxNikJCU5BVElPTkFMIERBVEFDT01NIENPUlBPUkFUSU9OCi0JCQkJMkYsIDI4LCBJTkRVU1RSWSBFQVNUIDlUSCBSRC4KLQkJCQlTQ0lFTkNFIFBBUkssIEhTSU4tQ0hVCi0JCQkJVEFJV0FOICAzMDA3NyBUQUlXQU4gIDMwMDc3IFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtODAtQzcgICAoaGV4KQkJWElSQ09NCi0wMDgwQzcgICAgIChiYXNlIDE2KQkJWElSQ09NCi0JCQkJMjYwMjUgTVVSRUFVIFJPQUQKLQkJCQlDQUxBQkFTQVMgQ0EgOTEzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUM4ICAgKGhleCkJCUQtTElOSyBTWVNURU1TLCBJTkMuCi0wMDgwQzggICAgIChiYXNlIDE2KQkJRC1MSU5LIFNZU1RFTVMsIElOQy4KLQkJCQk1MyBEaXNjb3ZlciBEci4KLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUM5ICAgKGhleCkJCUFMQkVSVEEgTUlDUk9FTEVDVFJPTklDIENFTlRSRQotMDA4MEM5ICAgICAoYmFzZSAxNikJCUFMQkVSVEEgTUlDUk9FTEVDVFJPTklDIENFTlRSRQotCQkJCTMxOCwgMTEzMTUgLSA4NyBBVkVOVUUKLQkJCQlFRE1PTlRPTiwgQUIgVDZHIDJDMgotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC04MC1DQSAgIChoZXgpCQlORVRDT00gUkVTRUFSQ0ggSU5DT1JQT1JBVEVECi0wMDgwQ0EgICAgIChiYXNlIDE2KQkJTkVUQ09NIFJFU0VBUkNIIElOQ09SUE9SQVRFRAotCQkJCTIwMSBURUNITk9MT0dZIERSSVZFCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DQiAgIChoZXgpCQlGQUxDTyBEQVRBIFBST0RVQ1RTCi0wMDgwQ0IgICAgIChiYXNlIDE2KQkJRkFMQ08gREFUQSBQUk9EVUNUUwotCQkJCTQ0MCBQT1RSRVJPIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4Ni00MTk2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DQyAgIChoZXgpCQlNSUNST1dBVkUgQllQQVNTIFNZU1RFTVMKLTAwODBDQyAgICAgKGJhc2UgMTYpCQlNSUNST1dBVkUgQllQQVNTIFNZU1RFTVMKLQkJCQkyNSBCUkFJTlRSRUUgSElMTCBPRkZJQ0UgUEFSSwotCQkJCUJSQUlOVFJFRSBNQSAwMjE4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQ0QgICAoaGV4KQkJTUlDUk9OSUNTIENPTVBVVEVSLCBJTkMuCi0wMDgwQ0QgICAgIChiYXNlIDE2KQkJTUlDUk9OSUNTIENPTVBVVEVSLCBJTkMuCi0JCQkJNDUzNjUgTk9SVEhQT1JUIExPT1AgV0VTVAotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUNFICAgKGhleCkJCUJST0FEQ0FTVCBURUxFVklTSU9OIFNZU1RFTVMKLTAwODBDRSAgICAgKGJhc2UgMTYpCQlCUk9BRENBU1QgVEVMRVZJU0lPTiBTWVNURU1TCi0JCQkJUC5PLiBCT1ggMzA4MTYKLQkJCQlTQUxUIExBS0UgQ0lUWSwgVVRBSAotCQkJCVV0YWggODQxMzAtMDgxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQ0YgICAoaGV4KQkJRU1CRURERUQgUEVSRk9STUFOQ0UgSU5DLgotMDA4MENGICAgICAoYmFzZSAxNikJCUVNQkVEREVEIFBFUkZPUk1BTkNFIElOQy4KLQkJCQkzMzg1IFNDT1RUIEJMVkQuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQtMzExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRDAgICAoaGV4KQkJQ09NUFVURVIgUEVSSVBIRVJBTFMsIElOQy4KLTAwODBEMCAgICAgKGJhc2UgMTYpCQlDT01QVVRFUiBQRVJJUEhFUkFMUywgSU5DLgotCQkJCTY2NyBSQU5DSE8gQ09ORUpPIEJMVkQuCi0JCQkJTkVXQlVSWSBQQVJLIENBIDkxMzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1EMSAgIChoZXgpCQlLSU1UUk9OIENPUlBPUkFUSU9OCi0wMDgwRDEgICAgIChiYXNlIDE2KQkJS0lNVFJPTiBDT1JQT1JBVElPTgotCQkJCTE3MDkgSlVOQ1RJT04gQ09VUlQKLQkJCQlCVUlMRElORyAzODAKLQkJCQlTQU4gSk9TRSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRDIgICAoaGV4KQkJU0hJTk5JSE9OREVOS08gQ08uLCBMVEQuCi0wMDgwRDIgICAgIChiYXNlIDE2KQkJU0hJTk5JSE9OREVOS08gQ08uLCBMVEQuCi0JCQkJNi04IE5JU0hJVEVOTUEgMiBDSE9NRQotCQkJCUtJVEEtS1UsIE9TQUtBIDUzMAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtRDMgICAoaGV4KQkJU0hJVkEgQ09SUC4KLTAwODBEMyAgICAgKGJhc2UgMTYpCQlTSElWQSBDT1JQLgotCQkJCTIwNSBCVVJMSU5HVE9OIFJPQUQKLQkJCQlCRURGT1JEIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1ENCAgIChoZXgpCQlDSEFTRSBSRVNFQVJDSCBMVEQuCi0wMDgwRDQgICAgIChiYXNlIDE2KQkJQ0hBU0UgUkVTRUFSQ0ggTFRELgotCQkJCTcgQ0hJTkVIQU0gQlVTSU5FU1MgUEFSSwotCQkJCUJBU0lOR1NUT0tFLCBSRyAyNCBPV0QKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtRDUgICAoaGV4KQkJQ0FEUkUgVEVDSE5PTE9HSUVTCi0wMDgwRDUgICAgIChiYXNlIDE2KQkJQ0FEUkUgVEVDSE5PTE9HSUVTCi0JCQkJMTk1NDUgTlcgVk9OIE5FVU1BTk4gRFJJVkUKLQkJCQlCRUFWRVJUT04gT1IgOTcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUQ2ICAgKGhleCkJCU5VVk9URUNILCBJTkMuCi0wMDgwRDYgICAgIChiYXNlIDE2KQkJTlVWT1RFQ0gsIElOQy4KLQkJCQkyMDE1IEJSSURHRVdBWSwgU1VJVEUgMjA0Ci0JCQkJU0FVU0FMSVRPIENBIDk0OTY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1ENyAgIChoZXgpCQlGYW50dW0gRW5naW5lZXJpbmcKLTAwODBENyAgICAgKGJhc2UgMTYpCQlGYW50dW0gRW5naW5lZXJpbmcKLQkJCQkKLQkJCQlQLk8uIEJveCAxNTA5Ci0JCQkJUm9ja3dhbGwgVFggNzUwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUQ4ICAgKGhleCkJCU5FVFdPUksgUEVSSVBIRVJBTFMgSU5DLgotMDA4MEQ4ICAgICAoYmFzZSAxNikJCU5FVFdPUksgUEVSSVBIRVJBTFMgSU5DLgotCQkJCTI4OTAgWk9OS0VSIFJPQUQgU1VJVEUgMjA5Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUQ5ICAgKGhleCkJCUVNSyBFbGVrdHJvbmlrIEdtYkggJiBDby4gS0cKLTAwODBEOSAgICAgKGJhc2UgMTYpCQlFTUsgRWxla3Ryb25payBHbWJIICYgQ28uIEtHCi0JCQkJT2JlcmUgQmVyZ3N0cmFzc2UgMTYKLQkJCQk3NTMzNSBEb2JlbCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLURBICAgKGhleCkJCUJSVUVMICYgS0pBRVIKLTAwODBEQSAgICAgKGJhc2UgMTYpCQlCUlVFTCAmIEtKQUVSCi0JCQkJMTgsIE5BRVJVTSBIT1ZFREdBREUKLQkJCQlESy0yODUwIE5BRVJVTQotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLTgwLURCICAgKGhleCkJCUdSQVBIT04gQ09SUE9SQVRJT04KLTAwODBEQiAgICAgKGJhc2UgMTYpCQlHUkFQSE9OIENPUlBPUkFUSU9OCi0JCQkJMTUwNiBERUxMIEFWRSAtICMKLQkJCQlDQU1QQkVMTCBDQSA5NTAwOC02OTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1EQyAgIChoZXgpCQlQSUNLRVIgSU5URVJOQVRJT05BTAotMDA4MERDICAgICAoYmFzZSAxNikJCVBJQ0tFUiBJTlRFUk5BVElPTkFMCi0JCQkJNTk1IE1JTkVSIFJPQUQKLQkJCQlDTEVWRUxBTkQgT0ggNDQxNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUREICAgKGhleCkJCUdNWCBJTkMvR0lNSVgKLTAwODBERCAgICAgKGJhc2UgMTYpCQlHTVggSU5DL0dJTUlYCi0JCQkJMzIyMyBBUk5PTEQgTEFORQotCQkJCU5PUlRIQlJPT0sgSUwgNjAwNjItMjQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtREUgICAoaGV4KQkJR0lQU0kgUy5BLgotMDA4MERFICAgICAoYmFzZSAxNikJCUdJUFNJIFMuQS4KLQkJCQkyLEJEIFZBVUJBTiAtIEIuUC4gMjY4Ci0JCQkJNzgwNTMgU1QuIFFVRU5USU4gRU4gWVZFTElORVMgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtODAtREYgICAoaGV4KQkJQURDIENPREVOT0xMIFRFQ0hOT0xPR1kgQ09SUC4KLTAwODBERiAgICAgKGJhc2UgMTYpCQlBREMgQ09ERU5PTEwgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTIwMCBDT1JQT1JBVEUgQkxWRC4gU08uCi0JCQkJWU9OS0VSUyBOWSAxMDcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRTAgICAoaGV4KQkJWFRQIFNZU1RFTVMsIElOQy4KLTAwODBFMCAgICAgKGJhc2UgMTYpCQlYVFAgU1lTVEVNUywgSU5DLgotCQkJCTE5MDAgU1RBVEUgU1RSRUVUICwgU1RFCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRTEgICAoaGV4KQkJU1RNSUNST0VMRUNUUk9OSUNTCi0wMDgwRTEgICAgIChiYXNlIDE2KQkJU1RNSUNST0VMRUNUUk9OSUNTCi0JCQkJMTAwMCBBWlRFQyBXRVNUCi0JCQkJQUxNT05EU0JVUlkgQlJJU1RPTCBCUzMyIDRTUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLUUyICAgKGhleCkJCVQuRC5JLiBDTy4sIExURC4KLTAwODBFMiAgICAgKGJhc2UgMTYpCQlULkQuSS4gQ08uLCBMVEQuCi0JCQkJREVWRUxPUE1FTlQgRElWLiAgIzMgRlVKSSBCTERHCi0JCQkJMS0zLTEzIElUQUNISUJPUkkgTklTSEktS1UgT1NBS0EgNTUwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1FMyAgIChoZXgpCQlDT1JBTCBORVRXT1JLIENPUlBPUkFUSU9OCi0wMDgwRTMgICAgIChiYXNlIDE2KQkJQ09SQUwgTkVUV09SSyBDT1JQT1JBVElPTgotCQkJCShOT1cgQkFZIE5FVFdPUktTKQotCQkJCTQ0MDEgR1JFQVQgQU1FUklDQU4gUEtXWSBNL1M6IFNDMDEtMDUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1Mi04MTg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1FNCAgIChoZXgpCQlOT1JUSFdFU1QgRElHSVRBTCBTWVNURU1TLCBJTkMKLTAwODBFNCAgICAgKGJhc2UgMTYpCQlOT1JUSFdFU1QgRElHSVRBTCBTWVNURU1TLCBJTkMKLQkJCQlQLk8uIEJPWCAxNTI4OAotCQkJCVNFQVRUTEUgV0EgOTgxMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUU1ICAgKGhleCkJCUxTSSBMb2dpYyBDb3Jwb3JhdGlvbgotMDA4MEU1ICAgICAoYmFzZSAxNikJCUxTSSBMb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTM3MTggTi4gUm9jayBSb2FkCi0JCQkJV2ljaGl0YSBLUyA2NzIyNi0xMzk3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1FNiAgIChoZXgpCQlQRUVSIE5FVFdPUktTLCBJTkMuCi0wMDgwRTYgICAgIChiYXNlIDE2KQkJUEVFUiBORVRXT1JLUywgSU5DLgotCQkJCTMzNTAgU0NPVFQgQkxWRC4gQkxERy4gMTQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRTcgICAoaGV4KQkJTFlOV09PRCBTQ0lFTlRJRklDIERFVi4gTFRELgotMDA4MEU3ICAgICAoYmFzZSAxNikJCUxZTldPT0QgU0NJRU5USUZJQyBERVYuIExURC4KLQkJCQlGQVJOSEFNIFRSQURJTkcgRVNUQVRFCi0JCQkJRkFSTkhBTSwgU1VSUkVZLCBHVTkgOU5OCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC1FOCAgIChoZXgpCQlDVU1VTFVTIENPUlBPUkFUSUlPTgotMDA4MEU4ICAgICAoYmFzZSAxNikJCUNVTVVMVVMgQ09SUE9SQVRJSU9OCi0JCQkJMjM1MDAgTUVSQ0FOVElMRSBST0FECi0JCQkJQ0xFVkVMQU5EIE9IIDQ0MTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1FOSAgIChoZXgpCQlNYWRnZSBMdGQuCi0wMDgwRTkgICAgIChiYXNlIDE2KQkJTWFkZ2UgTHRkLgotCQkJCU1hZGdlIEhvdXNlCi0JCQkJUHJpb3JzIFdheQotCQkJCU1haW5kZW5oZWFkIEJlcmtzaGlyZSBTTDYgMkhQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtRUEgICAoaGV4KQkJQURWQSBPcHRpY2FsIE5ldHdvcmtpbmcgTHRkLgotMDA4MEVBICAgICAoYmFzZSAxNikJCUFEVkEgT3B0aWNhbCBOZXR3b3JraW5nIEx0ZC4KLQkJCQlPbmUgVGVjaG5vbG9neSBQYXJrd2F5IFNvdXRoCi0JCQkJTm9yY3Jvc3MgR0EgMzAwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUVCICAgKGhleCkJCUNPTVBDT05UUk9MIEIuVi4KLTAwODBFQiAgICAgKGJhc2UgMTYpCQlDT01QQ09OVFJPTCBCLlYuCi0JCQkJU1RSQVRVTVNFRCBLMzEKLQkJCQk1NjExIE5CIEVJTkRIT1ZFTgotCQkJCVRIRSBORVRIRVJMQU5EUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTgwLUVDICAgKGhleCkJCVNVUEVSQ09NUFVUSU5HIFNPTFVUSU9OUywgSU5DLgotMDA4MEVDICAgICAoYmFzZSAxNikJCVNVUEVSQ09NUFVUSU5HIFNPTFVUSU9OUywgSU5DLgotCQkJCTYxNzUgTkFOQ1kgUklER0UgQkxWRC4KLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUVEICAgKGhleCkJCUlRIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA4MEVEICAgICAoYmFzZSAxNikJCUlRIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTExODExIE5FIEZJUlNUIFNUUkVFVAotCQkJCVNVSVRFIDIwMQotCQkJCUJFTExFVlVFIFdBIDk4MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1FRSAgIChoZXgpCQlUSE9NU09OIENTRgotMDA4MEVFICAgICAoYmFzZSAxNikJCVRIT01TT04gQ1NGCi0JCQkJNTEgRVNQTEFOQURFIERVIEdFTkVSQUwKLQkJCQlERSBHQVVMTEUgOTIwNDUgLSBQQVJJUyBMQSAgREVGRU5TRSAtIENFCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTgwLUVGICAgKGhleCkJCVJBVElPTkFMCi0wMDgwRUYgICAgIChiYXNlIDE2KQkJUkFUSU9OQUwKLQkJCQkzMzIwIFNDT1RUIEJPVUxFVkFSRAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GMCAgIChoZXgpCQlQYW5hc29uaWMgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDgwRjAgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTQtMS02MiBNaW5vc2hpbWEgSGFrYXRhIEZ1a3Vva2EKLQkJCQk4MTItODUzMQotCQkJCUpBUEFOCi0KLTAwLTgwLUYxICAgKGhleCkJCU9QVVMgU1lTVEVNUwotMDA4MEYxICAgICAoYmFzZSAxNikJCU9QVVMgU1lTVEVNUwotCQkJCTMwMDAgQ09ST05BRE8gRFJJVkUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRjIgICAoaGV4KQkJUkFZQ09NIFNZU1RFTVMgSU5DCi0wMDgwRjIgICAgIChiYXNlIDE2KQkJUkFZQ09NIFNZU1RFTVMgSU5DCi0JCQkJMTY1MjUgU0hFUk1BTiBXQVkgI0MtOAotCQkJCVZBTiBOVVlTIENBIDkxNDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GMyAgIChoZXgpCQlTVU4gRUxFQ1RST05JQ1MgQ09SUC4KLTAwODBGMyAgICAgKGJhc2UgMTYpCQlTVU4gRUxFQ1RST05JQ1MgQ09SUC4KLQkJCQkyNTAgQVNBSEkgS09DSElOTy1DSE8KLQkJCQlLT05BTi1DSVRZIEFJQ0hJCi0JCQkJNDgzIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtRjQgICAoaGV4KQkJVEVMRU1FQ0FOSVFVRSBFTEVDVFJJUVVFCi0wMDgwRjQgICAgIChiYXNlIDE2KQkJVEVMRU1FQ0FOSVFVRSBFTEVDVFJJUVVFCi0JCQkJMzMgQklTIEFWRU5VRSwKLQkJCQlEVSBNQVJFQ0hBTCBKT0ZGUkUgOTIwMDIgTkFOVEVSUkUgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtODAtRjUgICAoaGV4KQkJUXVhbnRlbCBMdGQKLTAwODBGNSAgICAgKGJhc2UgMTYpCQlRdWFudGVsIEx0ZAotCQkJCVR1cm5waWtlIFJvYWQKLQkJCQlOZXdidXJ5IEJlcmtzaGlyZSBSRzE0IDJOWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLUY2ICAgKGhleCkJCVNZTkVSR1kgTUlDUk9TWVNURU1TCi0wMDgwRjYgICAgIChiYXNlIDE2KQkJU1lORVJHWSBNSUNST1NZU1RFTVMKLQkJCQk5NjA1IFNDUkFOVE9OIFJPQUQtU1RFICM3MDAKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEtMTc3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRjcgICAoaGV4KQkJWkVOSVRIIEVMRUNUUk9OSUNTCi0wMDgwRjcgICAgIChiYXNlIDE2KQkJWkVOSVRIIEVMRUNUUk9OSUNTCi0JCQkJMTAwMCBNSUxXQVVLRUUgQVZFTlVFCi0JCQkJR0xFTlZJRVcgSUwgNjAwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUY4ICAgKGhleCkJCU1JWkFSLCBJTkMuCi0wMDgwRjggICAgIChiYXNlIDE2KQkJTUlaQVIsIElOQy4KLQkJCQkxNDE5IERVTk4gRFJJVkUKLQkJCQlDQVJST0xMVE9OIFRYIDc1MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GOSAgIChoZXgpCQlIRVVSSUtPTiBDT1JQT1JBVElPTgotMDA4MEY5ICAgICAoYmFzZSAxNikJCUhFVVJJS09OIENPUlBPUkFUSU9OCi0JCQkJODMxMCBFWENFTFNJT1IgRFJJVkUKLQkJCQlNQURJU09OIFdJIDUzNzE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GQSAgIChoZXgpCQlSV1QgR01CSAotMDA4MEZBICAgICAoYmFzZSAxNikJCVJXVCBHTUJICi0JCQkJVEFMQU5HRVJTVFIuIDUtNwotCQkJCUQgLSA4MDMzIEtSQUlMTElORwotCQkJCVdFU1QgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtODAtRkIgICAoaGV4KQkJQlZNIExJTUlURUQKLTAwODBGQiAgICAgKGJhc2UgMTYpCQlCVk0gTElNSVRFRAotCQkJCUhPQkIgTEFORQotCQkJCUhFREdFIEVORCBTT1VUSEFNUFRPTgotCQkJCUVOR0xBTkQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtRkMgICAoaGV4KQkJQVZBVEFSIENPUlBPUkFUSU9OCi0wMDgwRkMgICAgIChiYXNlIDE2KQkJQVZBVEFSIENPUlBPUkFUSU9OCi0JCQkJNjUgU09VVEggU1RSRUVUCi0JCQkJSE9QS0lOVE9OIE1BIDAxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GRCAgIChoZXgpCQlFWFNDRUVEIENPUlBSQVRJT04KLTAwODBGRCAgICAgKGJhc2UgMTYpCQlFWFNDRUVEIENPUlBSQVRJT04KLQkJCQkxLTE1LTEyLCBLSVRBS0FTRSwgU0FJV0FJLUtVCi0JCQkJS0FXQVNBS0ktQ0lUWSwgMjExIEtBTkFHQVdBCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1GRSAgIChoZXgpCQlBWlVSRSBURUNITk9MT0dJRVMsIElOQy4KLTAwODBGRSAgICAgKGJhc2UgMTYpCQlBWlVSRSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk2MyBTT1VUSCBTVFJFRVQKLQkJCQlIT1BLSU5UT04gTUEgMDE3NDgtMjIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRkYgICAoaGV4KQkJU09DLiBERSBURUxFSU5GT1JNQVRJUVVFIFJUQwotMDA4MEZGICAgICAoYmFzZSAxNikJCVNPQy4gREUgVEVMRUlORk9STUFUSVFVRSBSVEMKLQkJCQlQLk8uIEJPWCA5NTUgUExBQ0UgRFUgUEFSQwotCQkJCTMwMCBMRU8tUEFSSVNUQVUgICAgU1VJVEUgNzI1IE1PTlRSRUFMICgKLQkJCQlDQU5BREEgSDJXIDJOMQotCQkJCUNBTkFEQQotCi0wMC04Qy0xMCAgIChoZXgpCQlCbGFjayBCb3ggQ29ycC4KLTAwOEMxMCAgICAgKGJhc2UgMTYpCQlCbGFjayBCb3ggQ29ycC4KLQkJCQkxMDAwIFBhcmsgRHJpdmUKLQkJCQlMYXdyZW5jZSBQQSAxNTA1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOEMtRkEgICAoaGV4KQkJSW52ZW50ZWMgQ29ycG9yYXRpb24KLTAwOENGQSAgICAgKGJhc2UgMTYpCQlJbnZlbnRlYyBDb3Jwb3JhdGlvbgotCQkJCU5vLiAyNTUsIEplbi1IbyBSb2FkIFNlYy4gMiwgMzM1NDcsCi0JCQkJVGFjaGkgVGFveXVhbiAzMzU0NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOEQtNEUgICAoaGV4KQkJQ0pTQyBOSUkgU1RUCi0wMDhENEUgICAgIChiYXNlIDE2KQkJQ0pTQyBOSUkgU1RUCi0JCQkJTi5MZW5pbmdyYWRza2F5YSBzdHIsIDEwCi0JCQkJU21vbGVuc2sgIDIxNDAxMgotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC05MC0wMCAgIChoZXgpCQlESUFNT05EIE1VTFRJTUVESUEKLTAwOTAwMCAgICAgKGJhc2UgMTYpCQlESUFNT05EIE1VTFRJTUVESUEKLQkJCQkzMTIgU0UgU1RPTkVNSUxMIERSSVZFCi0JCQkJU1VJVEUgIzE1MAotCQkJCVZBTkNPVVZFUiBXQSA5ODY4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMDEgICAoaGV4KQkJTklTSElNVSBFTEVDVFJPTklDUyBJTkRVU1RSSUVTIENPLiwgTFRELgotMDA5MDAxICAgICAoYmFzZSAxNikJCU5JU0hJTVUgRUxFQ1RST05JQ1MgSU5EVVNUUklFUyBDTy4sIExURC4KLQkJCQk3MDAgVEFURU5PIE1JVEFHQVdBLUNITwotCQkJCUtBTlpBS0ktR1VOIFNBR0EgUFJFRi4gIAotCQkJCUpBUEFOCi0KLTAwLTkwLTAyICAgKGhleCkJCUFMTEdPTiBBQgotMDA5MDAyICAgICAoYmFzZSAxNikJCUFMTEdPTiBBQgotCQkJCUdBUkRBVE9SR0VUIDEKLQkJCQk0MTIgNTAgR09URUJPUkcgCi0JCQkJU1dFREVOCi0KLTAwLTkwLTAzICAgKGhleCkJCUFQTElPCi0wMDkwMDMgICAgIChiYXNlIDE2KQkJQVBMSU8KLQkJCQkxOCBBdmVudWUgRHUgOCBNYWkgMTk0NQotCQkJCTk1MjAwIFNBUkNFTExFUwotCQkJCUZSQU5DRQotCi0wMC05MC0wNCAgIChoZXgpCQkzQ09NIEVVUk9QRSBMVEQuCi0wMDkwMDQgICAgIChiYXNlIDE2KQkJM0NPTSBFVVJPUEUgTFRELgotCQkJCTNDT00gQ0VOVFJFLCBCT1VOREFSWSBXQVkKLQkJCQlIRU1FTCBIRU1QU1RFQUQKLQkJCQlIRVJUUy4gIEhQMiA3WVUgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLTA1ICAgKGhleCkJCVBST1RFQ0ggU1lTVEVNUyBDTy4sIExURC4KLTAwOTAwNSAgICAgKGJhc2UgMTYpCQlQUk9URUNIIFNZU1RFTVMgQ08uLCBMVEQuCi0JCQkJNUYsIE5PLiAzNCwgTEFORSA4MCwgU0VDLiAzCi0JCQkJTkFOS0FORyBST0FECi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTA2ICAgKGhleCkJCUhBTUFNQVRTVSBQSE9UT05JQ1MgSy5LLgotMDA5MDA2ICAgICAoYmFzZSAxNikJCUhBTUFNQVRTVSBQSE9UT05JQ1MgSy5LLgotCQkJCTgxMiBKT0tPLUNITwotCQkJCUhBTUFNQVRTVSAgNDMxLTMxOTYKLQkJCQlKQVBBTgotCi0wMC05MC0wNyAgIChoZXgpCQlET01FWCBURUNITk9MT0dZIENPUlAuCi0wMDkwMDcgICAgIChiYXNlIDE2KQkJRE9NRVggVEVDSE5PTE9HWSBDT1JQLgotCQkJCU5PLiAyLCBURUNITk9MT0dZIFJELiAxCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQkgSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC0wOCAgIChoZXgpCQlIYW5BIFN5c3RlbXMgSW5jLgotMDA5MDA4ICAgICAoYmFzZSAxNikJCUhhbkEgU3lzdGVtcyBJbmMuCi0JCQkJRUFITyBCL0QgNzQwLTEKLQkJCQlZRU9LIFNBTS1ET05HLCBLQU5HTkFNLUtVCi0JCQkJU0VPVUwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC05MC0wOSAgIChoZXgpCQlpIENvbnRyb2xzLCBJbmMuCi0wMDkwMDkgICAgIChiYXNlIDE2KQkJaSBDb250cm9scywgSW5jLgotCQkJCTJuZCBGbCwgSSdQYXJrIDMwMiwgMTEgSmVvbmdqYS1Eb25nLAotCQkJCUJ1bmRhbmctR1UsIFNlb25nbmFtLAotCQkJCUd5ZW9uZ2dpLURvIDQ2My04NTkgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTkwLTBBICAgKGhleCkJCVBST1RPTiBFTEVDVFJPTklDIElORFVTVFJJQUwgQ08uLCBMVEQuCi0wMDkwMEEgICAgIChiYXNlIDE2KQkJUFJPVE9OIEVMRUNUUk9OSUMgSU5EVVNUUklBTCBDTy4sIExURC4KLQkJCQkKLQkJCQk0RiwgNDUsIFNFQ1RJT04gMSwgU0FOLU1JTiBSRAotCQkJCVBhbmNoaWFvLCBUYWlwZWkgQ291bnR5ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTBCICAgKGhleCkJCUxBTk5FUiBFTEVDVFJPTklDUywgSU5DLgotMDA5MDBCICAgICAoYmFzZSAxNikJCUxBTk5FUiBFTEVDVFJPTklDUywgSU5DLgotCQkJCThGLTQsIE5PLiA3NywgU0VDLiAxCi0JCQkJSFNJTiBUQUkgV1UgUkQuLCBIU0lDSElICi0JCQkJVEFJUEVJIEhTSUVOIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtMEMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MDBDICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0wRCAgIChoZXgpCQlPdmVybGFuZCBTdG9yYWdlIEluYy4KLTAwOTAwRCAgICAgKGJhc2UgMTYpCQlPdmVybGFuZCBTdG9yYWdlIEluYy4KLQkJCQk0ODIwIE92ZXJsYW5kIEF2ZW51ZQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMEUgICAoaGV4KQkJSEFORExJTksgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDkwMEUgICAgIChiYXNlIDE2KQkJSEFORExJTksgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNUYsIDI0LTIsIEluZHVzdHJ5IEUuIFJvYWQgSVYsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSAzMDA3NyAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC0wRiAgIChoZXgpCQlLQVdBU0FLSSBIRUFWWSBJTkRVU1RSSUVTLCBMVEQKLTAwOTAwRiAgICAgKGJhc2UgMTYpCQlLQVdBU0FLSSBIRUFWWSBJTkRVU1RSSUVTLCBMVEQKLQkJCQlFTEVDLiAmIENPTlRST0wgVEVDSCBDRU5URVIKLQkJCQkxLTEgS0FXQVNBS0ktQ0hPIEFLQVNISSA2NzMtODY2NgotCQkJCUpBUEFOCi0KLTAwLTkwLTEwICAgKGhleCkJCVNJTVVMQVRJT04gTEFCT1JBVE9SSUVTLCBJTkMuCi0wMDkwMTAgICAgIChiYXNlIDE2KQkJU0lNVUxBVElPTiBMQUJPUkFUT1JJRVMsIElOQy4KLQkJCQkxMDA3OCBUWUxFUiBQTEFDRSAjQQotCQkJCUlKQU1TVklMTEUgTUQgMjE3NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTExICAgKGhleCkJCVdBVlRyYWNlLCBJbmMuCi0wMDkwMTEgICAgIChiYXNlIDE2KQkJV0FWVHJhY2UsIEluYy4KLQkJCQkxNTU1IDEzMk5EIEFWRS4gTkUKLQkJCQlCRUxMRVZVRSBXQSA5ODAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMTIgICAoaGV4KQkJR0xPQkVTUEFOIFNFTUlDT05EVUNUT1IsIElOQy4KLTAwOTAxMiAgICAgKGJhc2UgMTYpCQlHTE9CRVNQQU4gU0VNSUNPTkRVQ1RPUiwgSU5DLgotCQkJCTEwMCBTQ0hVTFogRFJJVkUKLQkJCQlSRUQgQkFOSyBOSiAwNzcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMTMgICAoaGV4KQkJU0FNU0FOIENPUlAuCi0wMDkwMTMgICAgIChiYXNlIDE2KQkJU0FNU0FOIENPUlAuCi0JCQkJRUxFQ1RST05JQ1MgJiBDT01NIERJVklTSU9OCi0JCQkJU0FNU0FOIEJMREcuLCA1MDYtNywgQU1TQS1ET05HCi0JCQkJS2FuZ2RvbmctR3UgU2VvdWwgMTM0LTA1MCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtOTAtMTQgICAoaGV4KQkJUk9UT1JLIElOU1RSVU1FTlRTLCBMVEQuCi0wMDkwMTQgICAgIChiYXNlIDE2KQkJUk9UT1JLIElOU1RSVU1FTlRTLCBMVEQuCi0JCQkJQ0hBVUwgRU5EIExBTkUKLQkJCQlMVVRPTiBCRURGT1JEU0hJUkUKLQkJCQlMVTQgOEVaIEVuZ2xhbmQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtMTUgICAoaGV4KQkJQ0VOVElHUkFNIENPTU1VTklDQVRJT05TIENPUlAuCi0wMDkwMTUgICAgIChiYXNlIDE2KQkJQ0VOVElHUkFNIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJOTEgRUFTVCBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMTYgICAoaGV4KQkJWkFDCi0wMDkwMTYgICAgIChiYXNlIDE2KQkJWkFDCi0JCQkJU3Tvv712ZXN0ci4gOQotCQkJCUQtMzExNDEgSGlsZGVzaGVpbSAgCi0JCQkJR0VSTUFOWQotCi0wMC05MC0xNyAgIChoZXgpCQlaeXBjb20sIEluYwotMDA5MDE3ICAgICAoYmFzZSAxNikJCVp5cGNvbSwgSW5jCi0JCQkJMjg0MDAgS29ob3V0ZWsgV2F5Ci0JCQkJU3VpdGUgMTcwCi0JCQkJVW5pb24gQ2l0eSBDQSA5NDU4Ny0xMjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0xOCAgIChoZXgpCQlJVE8gRUxFQ1RSSUMgSU5EVVNUUlkgQ08sIExURC4KLTAwOTAxOCAgICAgKGJhc2UgMTYpCQlJVE8gRUxFQ1RSSUMgSU5EVVNUUlkgQ08sIExURC4KLQkJCQk0LTI2LTEyIE1FSUVLSSBOQUtBTVVSQS1LVQotCQkJCU5BR09ZQS1DSVRZIEFJQ0hJIDQ1MC0wMDAyICAKLQkJCQlKQVBBTgotCi0wMC05MC0xOSAgIChoZXgpCQlIRVJNRVMgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDkwMTkgICAgIChiYXNlIDE2KQkJSEVSTUVTIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTMtMi0xMiBZVVNISU1BLCBCVU5LWU8tS1UKLQkJCQlUT0tZTywgMTEzLTAwMzQgIAotCQkJCUpBUEFOCi0KLTAwLTkwLTFBICAgKGhleCkJCVVOSVNQSEVSRSBTT0xVVElPTlMKLTAwOTAxQSAgICAgKGJhc2UgMTYpCQlVTklTUEhFUkUgU09MVVRJT05TCi0JCQkJNSBDQVJMSVNMRSBST0FECi0JCQkJV0VTVEZPUkQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTFCICAgKGhleCkJCURJR0lUQUwgQ09OVFJPTFMKLTAwOTAxQiAgICAgKGJhc2UgMTYpCQlESUdJVEFMIENPTlRST0xTCi0JCQkJMzA1IFBJT05FRVIgQkxWRC4KLQkJCQlTUFJJTkdCT1JPIE9IIDQ1MDY2LTExMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTFDICAgKGhleCkJCW1wcyBTb2Z0d2FyZSBHbWJoCi0wMDkwMUMgICAgIChiYXNlIDE2KQkJbXBzIFNvZnR3YXJlIEdtYmgKLQkJCQlMVURXSUdTVFIgMzYKLQkJCQk4NTU1MSBLSVJDSEhFSU0gIAotCQkJCUdFUk1BTlkKLQotMDAtOTAtMUQgICAoaGV4KQkJUEVDIChOWikgTFRELgotMDA5MDFEICAgICAoYmFzZSAxNikJCVBFQyAoTlopIExURC4KLQkJCQkyIFNUQVRJT04gUk9BRAotCQkJCVAuTy4gQk9YIDMwOAotCQkJCU1BUlRPTiAgCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtOTAtMUUgICAoaGV4KQkJU2VsZXN0YSBJbmdlZ25lcmlhIFMucC5BLgotMDA5MDFFICAgICAoYmFzZSAxNikJCVNlbGVzdGEgSW5nZWduZXJpYSBTLnAuQS4KLQkJCQl2aWEgZGkgRnJhbmNpYSwgMjgKLQkJCQlHZW5vdmEgIDE2MTQ5Ci0JCQkJSVRBTFkKLQotMDAtOTAtMUYgICAoaGV4KQkJQURURUMgUFJPRFVDVElPTlMsIElOQy4KLTAwOTAxRiAgICAgKGJhc2UgMTYpCQlBRFRFQyBQUk9EVUNUSU9OUywgSU5DLgotCQkJCTQwOCBSVVNTRUxMIFNUUkVFVAotCQkJCU5BU0hWSUxMRSBUTiAzNzIwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMjAgICAoaGV4KQkJUEhJTElQUyBBTkFMWVRJQ0FMIFgtUkFZIEIuVi4KLTAwOTAyMCAgICAgKGJhc2UgMTYpCQlQSElMSVBTIEFOQUxZVElDQUwgWC1SQVkgQi5WLgotCQkJCUxFTFlXRUcgMQotCQkJCTc2MDIgRUEgQUxNRUxPICAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC05MC0yMSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwMjEgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFIuIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0yMiAgIChoZXgpCQlJVkVYCi0wMDkwMjIgICAgIChiYXNlIDE2KQkJSVZFWAotCQkJCTQyOTUgSU5URVJOQVRJT05BTCBCTFZELgotCQkJCVNVSVRFCi0JCQkJTk9SQ1JPU1MgR0EgMzAwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTIzICAgKGhleCkJCVpJTE9HIElOQy4KLTAwOTAyMyAgICAgKGJhc2UgMTYpCQlaSUxPRyBJTkMuCi0JCQkJOTEwIEVhc3QgSGFtaWx0b24gQXZlLgotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0yNCAgIChoZXgpCQlQSVBFTElOS1MsIElOQy4KLTAwOTAyNCAgICAgKGJhc2UgMTYpCQlQSVBFTElOS1MsIElOQy4KLQkJCQkyNzEwIFdBTFNIIEFWRS4sIFNURSAjMzAwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTI1ICAgKGhleCkJCUJBRSBTeXN0ZW1zIEF1c3RyYWxpYSAoRWxlY3Ryb25pYyBTeXN0ZW1zKSBQdHkgTHRkCi0wMDkwMjUgICAgIChiYXNlIDE2KQkJQkFFIFN5c3RlbXMgQXVzdHJhbGlhIChFbGVjdHJvbmljIFN5c3RlbXMpIFB0eSBMdGQKLQkJCQkzIFNlY29uZCBBdmUKLQkJCQlNYXdzb24gTGFrZXMgU291dGggQXVzdHJhbGlhIDUwOTUKLQkJCQlBVVNUUkFMSUEKLQotMDAtOTAtMjYgICAoaGV4KQkJQURWQU5DRUQgU1dJVENISU5HIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDkwMjYgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgU1dJVENISU5HIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJODMzMCBCT09ORSBCT1VMRVZBUkQtLTVUSCBGTC4KLQkJCQlWSUVOTkEgVkEgMjIxODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTI3ICAgKGhleCkJCUlOVEVMIENPUlBPUkFUSU9OCi0wMDkwMjcgICAgIChiYXNlIDE2KQkJSU5URUwgQ09SUE9SQVRJT04KLQkJCQlIRjEtMDYKLQkJCQk1MjAwIE4uRS4gRUxBTSBZT1VORyBQQVJLV0FZCi0JCQkJSElMTFNCT1JPIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0yOCAgIChoZXgpCQlOSVBQT04gU0lHTkFMIENPLiwgTFRELgotMDA5MDI4ICAgICAoYmFzZSAxNikJCU5JUFBPTiBTSUdOQUwgQ08uLCBMVEQuCi0JCQkJMTEgSElSQUlERS1LT0dJTy1EQU5DSEkKLQkJCQlVSVNVTk9NSVlBIFRPQ0hJR0kgMzIxLTg2NTEgIAotCQkJCUpBUEFOCi0KLTAwLTkwLTI5ICAgKGhleCkJCUNSWVBUTyBBRwotMDA5MDI5ICAgICAoYmFzZSAxNikJCUNSWVBUTyBBRwotCQkJCVAuTy4gQk9YCi0JCQkJQ0gtNjMwMSBadWcgIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTkwLTJBICAgKGhleCkJCUNPTU1VTklDQVRJT04gREVWSUNFUywgSU5DLgotMDA5MDJBICAgICAoYmFzZSAxNikJCUNPTU1VTklDQVRJT04gREVWSUNFUywgSU5DLgotCQkJCTg1IEZ1bHRvbiBTdHJlZXQKLQkJCQlCb29udG9uIE5KIDA3MDA1LTE5MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTJCICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTAyQiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJU0pBLTIKLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMkMgICAoaGV4KQkJREFUQSAmIENPTlRST0wgRVFVSVBNRU5UIExURC4KLTAwOTAyQyAgICAgKGJhc2UgMTYpCQlEQVRBICYgQ09OVFJPTCBFUVVJUE1FTlQgTFRELgotCQkJCUNPVU5UWSBGQVJNLCBXRU5ET1ZFUiBSRC4KLQkJCQlTVE9LRSBNQU5ERVZJTExFCi0JCQkJQlVDS1MuIEhQMjIgU1RBICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC05MC0yRCAgIChoZXgpCQlEQVRBIEVMRUNUUk9OSUNTIChBVVNULikgUFRZLCBMVEQuCi0wMDkwMkQgICAgIChiYXNlIDE2KQkJREFUQSBFTEVDVFJPTklDUyAoQVVTVC4pIFBUWSwgTFRELgotCQkJCTcgU0VJU01JQyBDT1VSVAotCQkJCVJPV1ZJTExFCi0JCQkJVklDVE9SSUEgMzE3OCAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTkwLTJFICAgKGhleCkJCU5BTUNPIExJTUlURUQKLTAwOTAyRSAgICAgKGJhc2UgMTYpCQlOQU1DTyBMSU1JVEVECi0JCQkJMS0xLTMyIFNISU4tVVJBU0hJTUEtQ0hPCi0JCQkJS0FOQUdBV0EtS1UsIFlPS09IQU1BCi0JCQkJS0FOQUdBV0EgMjIxLTAwMzEgIAotCQkJCUpBUEFOCi0KLTAwLTkwLTJGICAgKGhleCkJCU5FVENPUkUgU1lTVEVNUywgSU5DLgotMDA5MDJGICAgICAoYmFzZSAxNikJCU5FVENPUkUgU1lTVEVNUywgSU5DLgotCQkJCTE4NyBCQUxMQVJEVkFMRSBTVFJFRVQKLQkJCQlXSUxNSU5HVE9OIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0zMCAgIChoZXgpCQlIT05FWVdFTEwtREFUSU5HCi0wMDkwMzAgICAgIChiYXNlIDE2KQkJSE9ORVlXRUxMLURBVElORwotCQkJCVZJQSBUSU5UT1JFVFRPLCAxNQotCQkJCTIxMDEyIENBU1NBTk8gTUFHTkFHTyAoVkEpICAKLQkJCQlJVEFMWQotCi0wMC05MC0zMSAgIChoZXgpCQlNWVNUSUNPTSwgTFRELgotMDA5MDMxICAgICAoYmFzZSAxNikJCU1ZU1RJQ09NLCBMVEQuCi0JCQkJUC5PLiA4MzY0Ci0JCQkJTkFUQU5JQSA0MjUwNCAgCi0JCQkJSVNSQUVMCi0KLTAwLTkwLTMyICAgKGhleCkJCVBFTENPTUJFIEdST1VQIExURC4KLTAwOTAzMiAgICAgKGJhc2UgMTYpCQlQRUxDT01CRSBHUk9VUCBMVEQuCi0JCQkJTUFJTiBST0FECi0JCQkJRE9WRVJDT1VSVCwgSEFSV0lDSAotCQkJCUVTU0VYIEMwMTIgNExQIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLTMzICAgKGhleCkJCUlOTk9WQVBIT05FIEFHCi0wMDkwMzMgICAgIChiYXNlIDE2KQkJSU5OT1ZBUEhPTkUgQUcKLQkJCQlCb2VibGluZ2VyIFN0ci4gNzYKLQkJCQlTSU5ERUxGSU5HRU4gIEQ3MTA2NQotCQkJCUdFUk1BTlkKLQotMDAtOTAtMzQgICAoaGV4KQkJSU1BR0lDLCBJTkMuCi0wMDkwMzQgICAgIChiYXNlIDE2KQkJSU1BR0lDLCBJTkMuCi0JCQkJMjM1IFdlc3QgUm9hZCAjNwotCQkJCVBvcnRzbW91dGggTkggMDM4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTM1ICAgKGhleCkJCUFMUEhBIFRFTEVDT00sIElOQy4KLTAwOTAzNSAgICAgKGJhc2UgMTYpCQlBTFBIQSBURUxFQ09NLCBJTkMuCi0JCQkJMkYsIE5PLjIsIExJIEhTSU4gUk9BRAotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTi1DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtMzYgICAoaGV4KQkJZW5zLCBpbmMuCi0wMDkwMzYgICAgIChiYXNlIDE2KQkJZW5zLCBpbmMuCi0JCQkJUC5PLiBCT1ggMTkyMDcKLQkJCQlSQUxFSUdIIE5DIDI3NjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0zNyAgIChoZXgpCQlBQ1VDT01NLCBJTkMuCi0wMDkwMzcgICAgIChiYXNlIDE2KQkJQUNVQ09NTSwgSU5DLgotCQkJCTQ2MzMgT0xEIElST05TSURFUyAtIFNURSAjMzEwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTM4ICAgKGhleCkJCUZPVU5UQUlOIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA5MDM4ICAgICAoYmFzZSAxNikJCUZPVU5UQUlOIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTUwIFJBTkRPTFBIIFJPQUQKLQkJCQlTT01FUlNFVCBOSiAwODg3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMzkgICAoaGV4KQkJU0hBU1RBIE5FVFdPUktTCi0wMDkwMzkgICAgIChiYXNlIDE2KQkJU0hBU1RBIE5FVFdPUktTCi0JCQkJMjQ5IEhVTUJPTERUIENPVVJUCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5LTEzMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTNBICAgKGhleCkJCU5JSE9OIE1FRElBIFRPT0wgSU5DLgotMDA5MDNBICAgICAoYmFzZSAxNikJCU5JSE9OIE1FRElBIFRPT0wgSU5DLgotCQkJCTE4NzUgT1lBTUEtQ0hPCi0JCQkJWU9LS0FJQ0hJLUNJVFkKLQkJCQlNSUUgNTEyLTExMDIgIAotCQkJCUpBUEFOCi0KLTAwLTkwLTNCICAgKGhleCkJCVRyaUVNUyBSZXNlYXJjaCBMYWIsIEluYy4KLTAwOTAzQiAgICAgKGJhc2UgMTYpCQlUcmlFTVMgUmVzZWFyY2ggTGFiLCBJbmMuCi0JCQkJMTI3NSBOLiBUVVNUSU4gQVZFTlVFCi0JCQkJQU5BSEVJTSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtM0MgICAoaGV4KQkJQVRMQU5USUMgTkVUV09SSyBTWVNURU1TCi0wMDkwM0MgICAgIChiYXNlIDE2KQkJQVRMQU5USUMgTkVUV09SSyBTWVNURU1TCi0JCQkJSU1NRVVCTEUgIktlbm5lZHkiCi0JCQkJWklURVIgQVZFTlVFIEpGIEtFTk5FRFkKLQkJCQkzMzcwMCBNRVJJR05BQyAKLQkJCQlGUkFOQ0UKLQotMDAtOTAtM0QgICAoaGV4KQkJQklPUEFDIFNZU1RFTVMsIElOQy4KLTAwOTAzRCAgICAgKGJhc2UgMTYpCQlCSU9QQUMgU1lTVEVNUywgSU5DLgotCQkJCTQyIEFFUk8gQ0FNSU5PCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtM0UgICAoaGV4KQkJTi5WLiBQSElMSVBTIElORFVTVFJJQUwgQUNUSVZJVElFUwotMDA5MDNFICAgICAoYmFzZSAxNikJCU4uVi4gUEhJTElQUyBJTkRVU1RSSUFMIEFDVElWSVRJRVMKLQkJCQkKLQkJCQlJTlRFUkxFVVZFTkxBQU4gNzQtNzYKLQkJCQlCLTMwMDEgTEVVVkVOICAKLQkJCQlCRUxHSVVNCi0KLTAwLTkwLTNGICAgKGhleCkJCUFaVEVDIFJBRElPTUVESUEKLTAwOTAzRiAgICAgKGJhc2UgMTYpCQlBWlRFQyBSQURJT01FRElBCi0JCQkJMzEsIFJVRSBEVSBDSEVNSU5ERUZFUgotCQkJCTY3MjAwIFNUUkFTQk9VUkcgIAotCQkJCUZSQU5DRQotCi0wMC05MC00MCAgIChoZXgpCQlTaWVtZW5zIE5ldHdvcmsgQ29udmVyZ2VuY2UgTExDCi0wMDkwNDAgICAgIChiYXNlIDE2KQkJU2llbWVucyBOZXR3b3JrIENvbnZlcmdlbmNlIExMQwotCQkJCVRlbiBUZWNobm9sb2d5IFBhcmsgRHJpdmUKLQkJCQlXZXN0Zm9yZCBNQSAwMTg4Ni0zMTQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC00MSAgIChoZXgpCQlBUFBMSUVEIERJR0lUQUwgQUNDRVNTCi0wMDkwNDEgICAgIChiYXNlIDE2KQkJQVBQTElFRCBESUdJVEFMIEFDQ0VTUwotCQkJCTk4NTUgU0NSQU5UT04gUk9BRAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNDIgICAoaGV4KQkJRUNDUywgSW5jLgotMDA5MDQyICAgICAoYmFzZSAxNikJCUVDQ1MsIEluYy4KLQkJCQlPTkUgU0hFSUxBIERSSVZFCi0JCQkJVElOVE9OIEZBTExTIE5KIDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC00MyAgIChoZXgpCQlOSUNISUJFSSBERU5TSEkgQ08uLCBMVEQuCi0wMDkwNDMgICAgIChiYXNlIDE2KQkJTklDSElCRUkgREVOU0hJIENPLiwgTFRELgotCQkJCTEtMTMtMTAgU0hJUk9HQU5FICBDSFVPLUtVCi0JCQkJRlVLVU9LQS1DSVRZICAKLQkJCQlKQVBBTgotCi0wMC05MC00NCAgIChoZXgpCQlBU1NVUkVEIERJR0lUQUwsIElOQy4KLTAwOTA0NCAgICAgKGJhc2UgMTYpCQlBU1NVUkVEIERJR0lUQUwsIElOQy4KLQkJCQk5LTExIEdPTERTTUlUSCBTVC4KLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTQ1ICAgKGhleCkJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMKLTAwOTA0NSAgICAgKGJhc2UgMTYpCQlNYXJjb25pIENvbW11bmljYXRpb25zCi0JCQkJMTAwMCBGb3JlIERyaXZlCi0JCQkJV2FycmVuZGFsZSBQQSAxNTA4Ni03NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC00NiAgIChoZXgpCQlERVhEWU5FLCBMVEQuCi0wMDkwNDYgICAgIChiYXNlIDE2KQkJREVYRFlORSwgTFRELgotCQkJCTE1IE1BUktFVCBQTC4KLQkJCQlDSVJFTkNFU1RFUgotCQkJCUdMT0NFU1RFUlNISVJFIEdMNyAyUEIgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLTQ3ICAgKGhleCkJCUdJR0EgRkFTVCBFLiBMVEQuCi0wMDkwNDcgICAgIChiYXNlIDE2KQkJR0lHQSBGQVNUIEUuIExURC4KLQkJCQkxNEYsIE5PLjExMiwgU0VDLiAxCi0JCQkJSFNJTi1UQUkgV1UgUkQuCi0JCQkJSHNpLUNoaWggVGFpcGVpIEhzaWVuIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtNDggICAoaGV4KQkJWkVBTCBDT1JQT1JBVElPTgotMDA5MDQ4ICAgICAoYmFzZSAxNikJCVpFQUwgQ09SUE9SQVRJT04KLQkJCQkzMDEsIEhJUkFJS0UKLQkJCQlOQUdBS1VURS1DSE8sIEFJQ0hJLVBSRUYuIDQ4MC0xMTU1ICAKLQkJCQlKQVBBTgotCi0wMC05MC00OSAgIChoZXgpCQlFTlRSSURJQSBDT1JQT1JBVElPTgotMDA5MDQ5ICAgICAoYmFzZSAxNikJCUVOVFJJRElBIENPUlBPUkFUSU9OCi0JCQkJMTAxIFBBUksgQ0VOVEVSIFBMQVpBCi0JCQkJU1VJVEUgIzUwMAotCQkJCVNBTiBKT1NFIENBIDk1MTEzLTIyMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTRBICAgKGhleCkJCUNPTkNVUiBTWVNURU0gVEVDSE5PTE9HSUVTCi0wMDkwNEEgICAgIChiYXNlIDE2KQkJQ09OQ1VSIFNZU1RFTSBURUNITk9MT0dJRVMKLQkJCQkyNTI1IFdBTExJTkdXT09EIERSLi1TVEUuICM4MDQKLQkJCQlBVVNUSU4gVFggNzg3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTRCICAgKGhleCkJCUdlbVRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotMDA5MDRCICAgICAoYmFzZSAxNikJCUdlbVRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiAxIEplbiBBaSBSb2FkLAotCQkJCUhzaW5jaHUgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUh1a291LCBIc2luY2h1LCBUYWl3YW4gMzAzNTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTRDICAgKGhleCkJCUVQSUdSQU0sIElOQy4KLTAwOTA0QyAgICAgKGJhc2UgMTYpCQlFUElHUkFNLCBJTkMuCi0JCQkJODcwIFdFU1QgTUFVREUgQVZFLgotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNEQgICAoaGV4KQkJU1BFQyBTLkEuCi0wMDkwNEQgICAgIChiYXNlIDE2KQkJU1BFQyBTLkEuCi0JCQkJQ0FTUCAxNzIgMy1CCi0JCQkJMDgwMTMgQkFSQ0VMT05BICAKLQkJCQlTUEFJTgotCi0wMC05MC00RSAgIChoZXgpCQlERUxFTSBCVgotMDA5MDRFICAgICAoYmFzZSAxNikJCURFTEVNIEJWCi0JCQkJTFVDSFRIQVZFTiBXRUcgNDIKLQkJCQk1NjU3IEVCIEVJTkRIT1ZFTiAgCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtOTAtNEYgICAoaGV4KQkJQUJCIFBPV0VSIFQmRCBDT01QQU5ZLCBJTkMuCi0wMDkwNEYgICAgIChiYXNlIDE2KQkJQUJCIFBPV0VSIFQmRCBDT01QQU5ZLCBJTkMuCi0JCQkJNzAzNiBTTk9XRFJJRlQgUk9BRAotCQkJCUFMTEVOVE9XTiBQQSAxODEwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNTAgICAoaGV4KQkJVEVMRVNURSBPWQotMDA5MDUwICAgICAoYmFzZSAxNikJCVRFTEVTVEUgT1kKLQkJCQlTRVBPTktBVFUgMQotCQkJCUxJVFRPSU5FTiAgRklOLTIwNjYwCi0JCQkJRklOTEFORAotCi0wMC05MC01MSAgIChoZXgpCQlVTFRJTUFURSBURUNITk9MT0dZIENPUlAuCi0wMDkwNTEgICAgIChiYXNlIDE2KQkJVUxUSU1BVEUgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTEwMCBSQVdTT04gUk9BRAotCQkJCVZJQ1RPUiBOWSAxNDU2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNTIgICAoaGV4KQkJU0VMQ09NIEVMRVRUUk9OSUNBIFMuUi5MLgotMDA5MDUyICAgICAoYmFzZSAxNikJCVNFTENPTSBFTEVUVFJPTklDQSBTLlIuTC4KLQkJCQlWSUEgR1JBTkRJLCA1Ci0JCQkJNDAwMTMgQ0FTVEVMTUFHR0lPUkUgQk8gIAotCQkJCUlUQUxZCi0KLTAwLTkwLTUzICAgKGhleCkJCURBRVdPTyBFTEVDVFJPTklDUyBDTy4sIExURC4KLTAwOTA1MyAgICAgKGJhc2UgMTYpCQlEQUVXT08gRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJRElUIFJFU0VBUkNIIENFTlRFUgotCQkJCURBRVdPTyBDRU5URVIgNTQxIE5BTURBRU1VTk5PIDUtR0EKLQkJCQlDSFVORy1HVSBTRU9VTCAxMDAtNzE0IAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC05MC01NCAgIChoZXgpCQlJTk5PVkFUSVZFIFNFTUlDT05EVUNUT1JTLCBJTkMKLTAwOTA1NCAgICAgKGJhc2UgMTYpCQlJTk5PVkFUSVZFIFNFTUlDT05EVUNUT1JTLCBJTkMKLQkJCQkyNTcwIFcuIEVMIENBTUlOTyBSRUFMCi0JCQkJU1VJVEUgIzIwNQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTU1ICAgKGhleCkJCVBBUktFUiBIQU5OSUZJTiBDT1JQT1JBVElPTiBDT01QVU1PVE9SIERJVklTSU9OCi0wMDkwNTUgICAgIChiYXNlIDE2KQkJUEFSS0VSIEhBTk5JRklOIENPUlBPUkFUSU9OIENPTVBVTU9UT1IgRElWSVNJT04KLQkJCQk1NTAwIEJVU0lORVNTIFBBUksgRFJJVkUKLQkJCQlST0hORVJUIFBBUksgQ0EgOTQ5MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTU2ICAgKGhleCkJCVRFTEVTVFJFQU0sIElOQy4KLTAwOTA1NiAgICAgKGJhc2UgMTYpCQlURUxFU1RSRUFNLCBJTkMuCi0JCQkJODQ4IEdPTEQgRkxBVCBSRC4sIFNVSVRFIDEKLQkJCQlORVZBREEgQ0lUWSBDQSA5NTk1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNTcgICAoaGV4KQkJQUFOZXRjb20sIEluYy4KLTAwOTA1NyAgICAgKGJhc2UgMTYpCQlBQU5ldGNvbSwgSW5jLgotCQkJCTQ5NDkgTElCRVJUWSBMQU5FIC0gU1RFLiAjMjAwCi0JCQkJQUxMRU5UT1dOIFBBIDE4MTA2LTkwMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTU4ICAgKGhleCkJCVVsdHJhIEVsZWN0cm9uaWNzIEx0ZC4sIENvbW1hbmQgYW5kIENvbnRyb2wgU3lzdGVtcwotMDA5MDU4ICAgICAoYmFzZSAxNikJCVVsdHJhIEVsZWN0cm9uaWNzIEx0ZC4sIENvbW1hbmQgYW5kIENvbnRyb2wgU3lzdGVtcwotCQkJCUtOQVZFUyBCRUVDSCBCVVNJTkVTUyBDRU5UUkUKLQkJCQlMT1VEV0FURVIsIEhJR0ggV1lDT01CRQotCQkJCUJVQ0tJTkdIQU1TSElSRSBIUDEwIDlVVCBFbmdsYW5kIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLTU5ICAgKGhleCkJCVRFTEVDT00gREVWSUNFIEsuSy4KLTAwOTA1OSAgICAgKGJhc2UgMTYpCQlURUxFQ09NIERFVklDRSBLLksuCi0JCQkJU0FOTUlZQU5BR0EgQkxERy4gM0YsIDEtNS0xMgotCQkJCU1PVE9BS0FTQUtBLCBNSU5BVE8tS1UKLQkJCQlUT0tZTyAxMDcgCi0JCQkJSkFQQU4KLQotMDAtOTAtNUEgICAoaGV4KQkJREVBUkJPUk4gR1JPVVAsIElOQy4KLTAwOTA1QSAgICAgKGJhc2UgMTYpCQlERUFSQk9STiBHUk9VUCwgSU5DLgotCQkJCTI3MDA3IEhJTExTIFRFQ0ggQ1QuCi0JCQkJRkFSTUlOR1RPTiBISUxMUyBNSSA0ODMzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNUIgICAoaGV4KQkJUkFZTU9ORCBBTkQgTEFFIEVOR0lORUVSSU5HCi0wMDkwNUIgICAgIChiYXNlIDE2KQkJUkFZTU9ORCBBTkQgTEFFIEVOR0lORUVSSU5HCi0JCQkJMjA4IENPTU1FUkNFIERSLiwgIFVOSVQgIzNDCi0JCQkJRk9SVCBDT0xMSU5TIENPIDgwNTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC01QyAgIChoZXgpCQlFRE1JCi0wMDkwNUMgICAgIChiYXNlIDE2KQkJRURNSQotCQkJCTYyNiBPTEQgR1lNUElFIFJPQUQKLQkJCQlOQVJBTkdCQSBRTEQgNDUwNCAKLQkJCQlBVVNUUkFMSUEKLQotMDAtOTAtNUQgICAoaGV4KQkJTkVUQ09NIFNJQ0hFUkhFSVRTVEVDSE5JSyBHbWJICi0wMDkwNUQgICAgIChiYXNlIDE2KQkJTkVUQ09NIFNJQ0hFUkhFSVRTVEVDSE5JSyBHbWJICi0JCQkJQk9QUFNUUkFTU0UgMzgKLQkJCQk1NTExOCBNQUlOWgotCQkJCUdFUk1BTlkKLQotMDAtOTAtNUUgICAoaGV4KQkJUkFVTEFORC1CT1JHIENPUlBPUkFUSU9OCi0wMDkwNUUgICAgIChiYXNlIDE2KQkJUkFVTEFORC1CT1JHIENPUlBPUkFUSU9OCi0JCQkJMzQ1MCBXLiBPQUtUT04gU1QuCi0JCQkJU0tPS0lFIElMIDYwMDc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC01RiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwNUYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCVNKQS0yCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTYwICAgKGhleCkJCVNZU1RFTSBDUkVBVEUgQ09SUC4KLTAwOTA2MCAgICAgKGJhc2UgMTYpCQlTWVNURU0gQ1JFQVRFIENPUlAuCi0JCQkJMy0xMy02IFlPU0hJS0FXQSBCTEQuCi0JCQkJS0ltc2hpIFNVTUlEQS1LVQotCQkJCVRPS1lPICAKLQkJCQlKQVBBTgotCi0wMC05MC02MSAgIChoZXgpCQlQQUNJRklDIFJFU0VBUkNIICYgRU5HSU5FRVJJTkcgQ09SUE9SQVRJT04KLTAwOTA2MSAgICAgKGJhc2UgMTYpCQlQQUNJRklDIFJFU0VBUkNIICYgRU5HSU5FRVJJTkcgQ09SUE9SQVRJT04KLQkJCQkyMDcwIExBUyBQQUxNQVMgRFJJVkUKLQkJCQlDQVJMU0JBRCBDQSA5MjAwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNjIgICAoaGV4KQkJSUNQIFZPUlRFWCBDT01QVVRFUlNZU1RFTUUgR21iSAotMDA5MDYyICAgICAoYmFzZSAxNikJCUlDUCBWT1JURVggQ09NUFVURVJTWVNURU1FIEdtYkgKLQkJCQlGQUxURVJTVFJBU1NFIDUxLTUzCi0JCQkJRCA3NDIyMyBGTEVJTiAgCi0JCQkJR0VSTUFOWQotCi0wMC05MC02MyAgIChoZXgpCQlDT0hFUkVOVCBDT01NVU5JQ0FUSU9OUyBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDkwNjMgICAgIChiYXNlIDE2KQkJQ09IRVJFTlQgQ09NTVVOSUNBVElPTlMgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTQ1MDg1IFVOSVZFUlNJVFkgRFJJVkUKLQkJCQlBU0hCVVJOIFZBIDIwMTQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC02NCAgIChoZXgpCQlUaG9tc29uIEluYy4KLTAwOTA2NCAgICAgKGJhc2UgMTYpCQlUaG9tc29uIEluYy4KLQkJCQkxMDEgV2VzdCAxMDNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyOTAtMTEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNjUgICAoaGV4KQkJRklOSVNBUiBDT1JQT1JBVElPTgotMDA5MDY1ICAgICAoYmFzZSAxNikJCUZJTklTQVIgQ09SUE9SQVRJT04KLQkJCQkxMzg5IE1vZmZldHQgUGFyayBEcgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNjYgICAoaGV4KQkJVHJvaWthIE5ldHdvcmtzLCBJbmMuCi0wMDkwNjYgICAgIChiYXNlIDE2KQkJVHJvaWthIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjgyOSBUb3duc2dhdGUgUm9hZCwKLQkJCQlTdWl0ZSAyMDAKLQkJCQlXZXN0bGFrZSBWaWxsYWdlIENBIDkxMzYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC02NyAgIChoZXgpCQlXYWxrQWJvdXQgQ29tcHV0ZXJzLCBJbmMuCi0wMDkwNjcgICAgIChiYXNlIDE2KQkJV2Fsa0Fib3V0IENvbXB1dGVycywgSW5jLgotCQkJCTI2NTUgTi4gT0NFQU4gRFJJVkUtLVNURS4gIzUxMAotCQkJCVNJTkdFUiBJU0xBTkQgRkwgMzM0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTY4ICAgKGhleCkJCURWVCBDT1JQLgotMDA5MDY4ICAgICAoYmFzZSAxNikJCURWVCBDT1JQLgotCQkJCTE2NzAgT0FLQlJPT0sgRFIuIC0gU1RFLiAjMzMwCi0JCQkJTk9SQ1JPU1MgR0EgMzAwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTY5ICAgKGhleCkJCUpVTklQRVIgTkVUV09SS1MsIElOQy4KLTAwOTA2OSAgICAgKGJhc2UgMTYpCQlKVU5JUEVSIE5FVFdPUktTLCBJTkMuCi0JCQkJMTE5NCBOLiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODktMTIwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNkEgICAoaGV4KQkJVFVSTlNUT05FIFNZU1RFTVMsIElOQy4KLTAwOTA2QSAgICAgKGJhc2UgMTYpCQlUVVJOU1RPTkUgU1lTVEVNUywgSU5DLgotCQkJCTI3NCBGZXJndXNvbiBEcml2ZQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTZCICAgKGhleCkJCUFQUExJRUQgUkVTT1VSQ0VTLCBJTkMuCi0wMDkwNkIgICAgIChiYXNlIDE2KQkJQVBQTElFRCBSRVNPVVJDRVMsIElOQy4KLQkJCQk5ODIxIFdJRE1FUiBST0FECi0JCQkJTEVORVhBIEtTIDY2MjE1LTEyMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTZDICAgKGhleCkJCVNhcnRvcml1cyBIYW1idXJnIEdtYkgKLTAwOTA2QyAgICAgKGJhc2UgMTYpCQlTYXJ0b3JpdXMgSGFtYnVyZyBHbWJICi0JCQkJTWVpZW5kb3JmZXJzdHIuIDIwNQotCQkJCUhhbWJ1cmcgIEQtMjIxNDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTkwLTZEICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTA2RCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4gLSAgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC02RSAgIChoZXgpCQlQUkFYT04sIElOQy4KLTAwOTA2RSAgICAgKGJhc2UgMTYpCQlQUkFYT04sIElOQy4KLQkJCQkxNzAwIERFTEwgQVZFTlVFCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTZGICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTA2RiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4gLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTcwICAgKGhleCkJCU5FTyBORVRXT1JLUywgSU5DLgotMDA5MDcwICAgICAoYmFzZSAxNikJCU5FTyBORVRXT1JLUywgSU5DLgotCQkJCTEwMzAwIEJSRU4gUk9BRCBFQVNUCi0JCQkJTUlOTkVUT05LQSBNTiA1NTM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNzEgICAoaGV4KQkJQXBwbGllZCBJbm5vdmF0aW9uIEluYy4KLTAwOTA3MSAgICAgKGJhc2UgMTYpCQlBcHBsaWVkIElubm92YXRpb24gSW5jLgotCQkJCTU4MDAgSW5ub3ZhdGlvbiBEcml2ZQotCQkJCUR1YmxpbiBPSCA0MzAxNi0zMjcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC03MiAgIChoZXgpCQlTSU1SQUQgQVMKLTAwOTA3MiAgICAgKGJhc2UgMTYpCQlTSU1SQUQgQVMKLQkJCQlQLk8uIEJPWCAxMTEKLQkJCQkzMTkxIEhPUlRFTiAKLQkJCQlOT1JXQVkKLQotMDAtOTAtNzMgICAoaGV4KQkJR0FJTyBURUNITk9MT0dZCi0wMDkwNzMgICAgIChiYXNlIDE2KQkJR0FJTyBURUNITk9MT0dZCi0JCQkJT0FLLVlPS09IQU1BIEJMREcuCi0JCQkJMi0xNS0xMCBLSVRBLVNBSVdBSSwKLQkJCQlOSVNISS1LVSBZT0tPSEFNQS1DSVRZIEthbmFnYXdhIAotCQkJCUpBUEFOCi0KLTAwLTkwLTc0ICAgKGhleCkJCUFSR09OIE5FVFdPUktTLCBJTkMuCi0wMDkwNzQgICAgIChiYXNlIDE2KQkJQVJHT04gTkVUV09SS1MsIElOQy4KLQkJCQkyNSBQT1JURVIgUk9BRAotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNzUgICAoaGV4KQkJTkVDIERPIEJSQVNJTCBTLkEuCi0wMDkwNzUgICAgIChiYXNlIDE2KQkJTkVDIERPIEJSQVNJTCBTLkEuCi0JCQkJUk9ET1ZJQSBQUkVTSURFTlRFIERVVFJBLCBLTSAyMTgKLQkJCQlDVU1CSUNBLUdVQVJVTEhPUwotCQkJCVNBTyBQQVVMTy1TUCBDRVAgLSAwNzIxMC05MDIgCi0JCQkJQlJBWklMCi0KLTAwLTkwLTc2ICAgKGhleCkJCUZNVCBBSVJDUkFGVCBHQVRFIFNVUFBPUlQgU1lTVEVNUyBBQgotMDA5MDc2ICAgICAoYmFzZSAxNikJCUZNVCBBSVJDUkFGVCBHQVRFIFNVUFBPUlQgU1lTVEVNUyBBQgotCQkJCQotCQkJCURBTEFTTElOR0FOIDgKLQkJCQlTRS0yMzEgMzIgVFJFTExFQk9SRyAgCi0JCQkJU1dFREVOCi0KLTAwLTkwLTc3ICAgKGhleCkJCUFEVkFOQ0VEIEZJQlJFIENPTU1VTklDQVRJT05TCi0wMDkwNzcgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgRklCUkUgQ09NTVVOSUNBVElPTlMKLQkJCQlQTyBCT1ggIzc1MTIzOQotCQkJCTEgV0lMTE9XQlJPT0sgQ1QKLQkJCQlQRVRBTFVNQSBDQSA5NDk3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNzggICAoaGV4KQkJTUVSIFRFTEVNQU5BR0VNRU5UIFNPTFVUSU9OUywgTFRELgotMDA5MDc4ICAgICAoYmFzZSAxNikJCU1FUiBURUxFTUFOQUdFTUVOVCBTT0xVVElPTlMsIExURC4KLQkJCQk1IEhBVFNPUkVGIFNUUi4KLQkJCQlJTkQuIEFSRUEKLQkJCQlIT0xPTiAgCi0JCQkJSVNSQUVMCi0KLTAwLTkwLTc5ICAgKGhleCkJCUNsZWFyT25lLCBJbmMuCi0wMDkwNzkgICAgIChiYXNlIDE2KQkJQ2xlYXJPbmUsIEluYy4KLQkJCQkyOTkgV0FTSElOR1RPTiBTVFJFRVQKLQkJCQlXT0JVUk4gTUEgMDE4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTdBICAgKGhleCkJCVBvbHljb20sIEluYy4KLTAwOTA3QSAgICAgKGJhc2UgMTYpCQlQb2x5Y29tLCBJbmMuCi0JCQkJNTc1NSBDRU5UUkFMIEFWRU5VRQotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTdCICAgKGhleCkJCUUtVEVDSCwgSU5DLgotMDA5MDdCICAgICAoYmFzZSAxNikJCUUtVEVDSCwgSU5DLgotCQkJCTMwLCBSJkQgUk9BRCAyCi0JCQkJU0NJRU5DRSBQQVJLCi0JCQkJSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC03QyAgIChoZXgpCQlESUdJVEFMQ0FTVCwgSU5DLgotMDA5MDdDICAgICAoYmFzZSAxNikJCURJR0lUQUxDQVNULCBJTkMuCi0JCQkJNTAzLCBJTEtXQU5HIEJMREcuLCAxNjU2LTIKLQkJCQlTRU9DSE8tRE9ORwotCQkJCVNFT0NITy1LVSAgU0VPVUwgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTkwLTdEICAgKGhleCkJCUxha2UgQ29tbXVuaWNhdGlvbnMKLTAwOTA3RCAgICAgKGJhc2UgMTYpCQlMYWtlIENvbW11bmljYXRpb25zCi0JCQkJQmVlY2ggSG91c2UsIEdyZWVuaGlsbHMgUm9hZAotCQkJCUR1YmxpbiAyNAotCQkJCUlSRUxBTkQKLQotMDAtOTAtN0UgICAoaGV4KQkJVkVUUk9OSVggQ09SUC4KLTAwOTA3RSAgICAgKGJhc2UgMTYpCQlWRVRST05JWCBDT1JQLgotCQkJCTIwMzAgQUxBTUVERSBQQURSRSBTRVJSQQotCQkJCVNBTlRBIEJBUkJBUkEgQ0EgOTMxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTdGICAgKGhleCkJCVdhdGNoR3VhcmQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDkwN0YgICAgIChiYXNlIDE2KQkJV2F0Y2hHdWFyZCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk1MDUgRmlmdGggQXZlIFNvdXRoCi0JCQkJU3VpdGUgNTAwCi0JCQkJU2VhdHRsZSBXQSA5ODEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtODAgICAoaGV4KQkJTk9UIExJTUlURUQsIElOQy4KLTAwOTA4MCAgICAgKGJhc2UgMTYpCQlOT1QgTElNSVRFRCwgSU5DLgotCQkJCTUwMCBBTExFUlRPTiBTVFJFRVQsIFNURSAjMTAyCi0JCQkJUkVEV09PRCBDSVRZIENBIDk0MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC04MSAgIChoZXgpCQlBTE9IQSBORVRXT1JLUywgSU5DLgotMDA5MDgxICAgICAoYmFzZSAxNikJCUFMT0hBIE5FVFdPUktTLCBJTkMuCi0JCQkJMTAwMUEgTydSRUlMTFkgQVZFTlVFCi0JCQkJUC5PLiBCT1ggMjk0NzIKLQkJCQlTQU4gRlJBTkNJU0NPIENBIDk0MTI5LTA0NzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTgyICAgKGhleCkJCUZPUkNFIElOU1RJVFVURQotMDA5MDgyICAgICAoYmFzZSAxNikJCUZPUkNFIElOU1RJVFVURQotCQkJCVBBUksgQUxMRSAzNDUKLQkJCQlESy0yNjA1IEJST0VOREJZICAKLQkJCQlERU5NQVJLCi0KLTAwLTkwLTgzICAgKGhleCkJCVRVUkJPIENPTU1VTklDQVRJT04sIElOQy4KLTAwOTA4MyAgICAgKGJhc2UgMTYpCQlUVVJCTyBDT01NVU5JQ0FUSU9OLCBJTkMuCi0JCQkJNEYtMiwgTk8uIDE3MSwgU1VORy1URUggUk9BRAotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC04NCAgIChoZXgpCQlBVEVDSCBTWVNURU0KLTAwOTA4NCAgICAgKGJhc2UgMTYpCQlBVEVDSCBTWVNURU0KLQkJCQk0RiBEQUVCT09ORyBCTERHLiAxNDUxLTc4Ci0JCQkJU0VPQ0hPLURPTkcgU0VPQ0hPLUtVCi0JCQkJIFNFT1VMICAxMzctMDcwICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtOTAtODUgICAoaGV4KQkJR09MREVOIEVOVEVSUFJJU0VTLCBJTkMuCi0wMDkwODUgICAgIChiYXNlIDE2KQkJR09MREVOIEVOVEVSUFJJU0VTLCBJTkMuCi0JCQkJNDQ1MCBXRVNUIEVBVSBHQUxMSUUgQkxWRC4KLQkJCQkyNTAgUEVSSU1FVEVSIENFTlRFUgotCQkJCU1FTEJPVVJORSBGTCAzMjkzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtODYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MDg2ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLiAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtODcgICAoaGV4KQkJSVRJUwotMDA5MDg3ICAgICAoYmFzZSAxNikJCUlUSVMKLQkJCQlDRU5UUkUgRVNQQUNFIFBFUkZPUk1BTkNFCi0JCQkJQUxQSEFTSVMtQkFUSU1FTlQgQzEKLQkJCQkzNTc2OSBTQUlOVC1HUkVHT0lSRSBDRURFWCAgCi0JCQkJRlJBTkNFCi0KLTAwLTkwLTg4ICAgKGhleCkJCUJBWEFMTCBTRUNVUklUWSBMVEQuCi0wMDkwODggICAgIChiYXNlIDE2KQkJQkFYQUxMIFNFQ1VSSVRZIExURC4KLQkJCQlVTklUIDEgQ0FTVExFSElMTAotCQkJCUhPUlNFRklFTEQgV0FZLCBCUkVEQlVSWSBQQVJLIElORC4gRXN0YXQKLQkJCQlTVE9DS1BPUlQgR3JlYXQgQnJpdGFpbiBTSzYgMlNWIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLTg5ICAgKGhleCkJCVNPRlRDT00gTUlDUk9TWVNURU1TLCBJTkMuCi0wMDkwODkgICAgIChiYXNlIDE2KQkJU09GVENPTSBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQk0NzUwOSBTRUFCUklER0UgRFJJVkUKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC04QSAgIChoZXgpCQlCQVlMWSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA5MDhBICAgICAoYmFzZSAxNikJCUJBWUxZIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTA1IEdSRUVOIENPVVJUCi0JCQkJQUpBWCBPbnRhcmlvICBMMVMgNlc5IAotCQkJCUNBTkFEQQotCi0wMC05MC04QiAgIChoZXgpCQlQRlUgU3lzdGVtcywgSW5jLgotMDA5MDhCICAgICAoYmFzZSAxNikJCVBGVSBTeXN0ZW1zLCBJbmMuCi0JCQkJMjYwMCBGZXJuYnJvb2sgTGFuZQotCQkJCVN1aXRlIDEzMAotCQkJCVBseW1vdXRoIE1OIDU1NDQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC04QyAgIChoZXgpCQlFVFJFTkQgRUxFQ1RST05JQ1MsIElOQy4KLTAwOTA4QyAgICAgKGJhc2UgMTYpCQlFVFJFTkQgRUxFQ1RST05JQ1MsIElOQy4KLQkJCQkyRiwgMjIgSU5EVVNUUlkgRS4gOVRIIFJPQUQKLQkJCQlIU0lOQ0hVIFNDSUVOQ0UgUEFSSwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtOEQgICAoaGV4KQkJVklDS0VSUyBFTEVDVFJPTklDUyBTWVNURU1TCi0wMDkwOEQgICAgIChiYXNlIDE2KQkJVklDS0VSUyBFTEVDVFJPTklDUyBTWVNURU1TCi0JCQkJMTE1MSBXLiBNQVNPTi1NT1JST1cgUkQuCi0JCQkJTEVCQU5PTiBPSCA0NTAzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOEUgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzIEJyb2FkYmFuZCBBY2Nlc3MKLTAwOTA4RSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MgQnJvYWRiYW5kIEFjY2VzcwotCQkJCTM5NjYwIEV1cmVrYSBEcml2ZQotCQkJCU5ld2FyayBDQSA5NDU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOEYgICAoaGV4KQkJQVVESU8gQ09ERVMgTFRELgotMDA5MDhGICAgICAoYmFzZSAxNikJCUFVRElPIENPREVTIExURC4KLQkJCQkzQSBORVRBTllBSFUgU1RSRUVUCi0JCQkJT1IgWUVIVURBIDYwMjU2ICAKLQkJCQlJU1JBRUwKLQotMDAtOTAtOTAgICAoaGV4KQkJSS1CVVMKLTAwOTA5MCAgICAgKGJhc2UgMTYpCQlJLUJVUwotCQkJCTkxNzQgU0tZIFBBUksgQ09VUlQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTkxICAgKGhleCkJCURpZ2l0YWxTY2FwZSwgSW5jLgotMDA5MDkxICAgICAoYmFzZSAxNikJCURpZ2l0YWxTY2FwZSwgSW5jLgotCQkJCTYgTU9SR0FOICAtIFNURS4jMTAwCi0JCQkJSVJWSU5FIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC05MiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwOTIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlNL1MgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC05MyAgIChoZXgpCQlOQU5BTyBDT1JQT1JBVElPTgotMDA5MDkzICAgICAoYmFzZSAxNikJCU5BTkFPIENPUlBPUkFUSU9OCi0JCQkJMTUzIFNISU1PS0FTSElXQU5PLCBNQVRUTwotCQkJCUlTSElLQVdBIDkyNC04NTY2ICAKLQkJCQlKQVBBTgotCi0wMC05MC05NCAgIChoZXgpCQlPU1BSRVkgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDkwOTQgICAgIChiYXNlIDE2KQkJT1NQUkVZIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTYwMCBBSVJQT1JUIEJMVkQuIC0gU1RFLiAjOTAwCi0JCQkJTU9SUklTVklMTEUgTkMgMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTk1ICAgKGhleCkJCVVOSVZFUlNBTCBBVklPTklDUwotMDA5MDk1ICAgICAoYmFzZSAxNikJCVVOSVZFUlNBTCBBVklPTklDUwotCQkJCTExMzUxIFdJTExPV1MgUk9BRCBORQotCQkJCVJFRE1PTkQgV0EgOTgwNTItMjU1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOTYgICAoaGV4KQkJQVNLRVkgQ09NUFVURVIgQ09SUC4KLTAwOTA5NiAgICAgKGJhc2UgMTYpCQlBU0tFWSBDT01QVVRFUiBDT1JQLgotCQkJCTJGLCBOTy4gMiwgTEFORSA0OTcKLQkJCQlDSFVORy1DSEVORyBSRC4sIEhTSU4tVElFTgotCQkJCVRBSVBFSSAgMjMxMzYgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtOTcgICAoaGV4KQkJU3ljYW1vcmUgTmV0d29ya3MKLTAwOTA5NyAgICAgKGJhc2UgMTYpCQlTeWNhbW9yZSBOZXR3b3JrcwotCQkJCTIyMCBNaWxsIFJkCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOTggICAoaGV4KQkJU0JDIERFU0lHTlMsIElOQy4KLTAwOTA5OCAgICAgKGJhc2UgMTYpCQlTQkMgREVTSUdOUywgSU5DLgotCQkJCTMwNzctSCBMRUVNQU4gRkVSUlkgUk9BRAotCQkJCUhVTlRTVklMTEUgQUwgMzU4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTk5ICAgKGhleCkJCUFMTElFRCBURUxFU0lTLCBLLksuCi0wMDkwOTkgICAgIChiYXNlIDE2KQkJQUxMSUVEIFRFTEVTSVMsIEsuSy4KLQkJCQlOTy4gMiAgVE9DIEJVSUxESU5HLCA3LTIxLTExTmlzaGktR290YW5kCi0JCQkJU2hpbmFnYXdhLUt1IFRva3lvIDE0MSAKLQkJCQlKQVBBTgotCi0wMC05MC05QSAgIChoZXgpCQlPTkUgV09STEQgU1lTVEVNUywgSU5DLgotMDA5MDlBICAgICAoYmFzZSAxNikJCU9ORSBXT1JMRCBTWVNURU1TLCBJTkMuCi0JCQkJMTE0NCBFQVNUIEFSUVVFUyBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTlCICAgKGhleCkJCUlNQUpFCi0wMDkwOUIgICAgIChiYXNlIDE2KQkJSU1BSkUKLQkJCQlH9nRhdmVya3NnYXRhbiA2QQotCQkJCUdvdGhlbmJ1cmcgIDQxNyA1NQotCQkJCVNXRURFTgotCi0wMC05MC05QyAgIChoZXgpCQlNb3Rvcm9sYSwgSW5jLgotMDA5MDlDICAgICAoYmFzZSAxNikJCU1vdG9yb2xhLCBJbmMuCi0JCQkJMjQ1MCBXYWxzaCBBdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOUQgICAoaGV4KQkJTm92YVRlY2ggUHJvY2VzcyBTb2x1dGlvbnMsIExMQwotMDA5MDlEICAgICAoYmFzZSAxNikJCU5vdmFUZWNoIFByb2Nlc3MgU29sdXRpb25zLCBMTEMKLQkJCQkxMTUwMCBDcm9ucmlkZ2UgRHJpdmUKLQkJCQlTdWl0ZSAxMTAKLQkJCQlPd2luZ3MgTWlsbHMgTUQgMjExMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTlFICAgKGhleCkJCUNyaXRpY2FsIElPLCBMTEMKLTAwOTA5RSAgICAgKGJhc2UgMTYpCQlDcml0aWNhbCBJTywgTExDCi0JCQkJNDg1IEUuIDE3dGggU3RyZWV0Ci0JCQkJU3VpdGUgMjAxMAotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTlGICAgKGhleCkJCURJR0ktREFUQSBDT1JQT1JBVElPTgotMDA5MDlGICAgICAoYmFzZSAxNikJCURJR0ktREFUQSBDT1JQT1JBVElPTgotCQkJCTg5MjAtRCBSb3V0ZSAxMDgKLQkJCQlDb2x1bWJpYSBNRCAyMTA0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQTAgICAoaGV4KQkJOFg4IElOQy4KLTAwOTBBMCAgICAgKGJhc2UgMTYpCQk4WDggSU5DLgotCQkJCTI0NDUgTUlTU0lPTiBDT0xMRUdFIEJMVkQuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUExICAgKGhleCkJCUZseWluZyBQaWcgU3lzdGVtcy9IaWdoIEVuZCBTeXN0ZW1zIEluYy4KLTAwOTBBMSAgICAgKGJhc2UgMTYpCQlGbHlpbmcgUGlnIFN5c3RlbXMvSGlnaCBFbmQgU3lzdGVtcyBJbmMuCi0JCQkJMjEwNSBHcmFjeSBGYXJtcyBMYW5lCi0JCQkJQXVzdGluIFRYIDc4NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1BMiAgIChoZXgpCQlDWUJFUlRBTiBURUNITk9MT0dZLCBJTkMuCi0wMDkwQTIgICAgIChiYXNlIDE2KQkJQ1lCRVJUQU4gVEVDSE5PTE9HWSwgSU5DLgotCQkJCUJMREcuNTMsIDE5NS01NiBTRUMuIDQsCi0JCQkJQ0hVTkcgSFNJTkcgUk9BRCwKLQkJCQlDSFVUVU5HIEhTSU5DSFUgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1BMyAgIChoZXgpCQlDb3JlY2VzcyBJbmMuCi0wMDkwQTMgICAgIChiYXNlIDE2KQkJQ29yZWNlc3MgSW5jLgotCQkJCTEzNS03MjYsIEtlb3B5dW5nIEItVG93biAxRiwgMjAzLCBOb25oeXUKLQkJCQlLYW5nbmFtLWd1LAotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtOTAtQTQgICAoaGV4KQkJQUxUSUdBIE5FVFdPUktTCi0wMDkwQTQgICAgIChiYXNlIDE2KQkJQUxUSUdBIE5FVFdPUktTCi0JCQkJMTI0IEdST1ZFIFNUUkVFVAotCQkJCUZSQU5LTElOIE1BIDAyMDM4LTMyMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUE1ICAgKGhleCkJCVNQRUNUUkEgTE9HSUMKLTAwOTBBNSAgICAgKGJhc2UgMTYpCQlTUEVDVFJBIExPR0lDCi0JCQkJMTcwMCBOLiA1NVRIIFNUUkVFVAotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUE2ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTBBNiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4gLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUE3ICAgKGhleCkJCUNMSUVOVEVDIENPUlBPUkFUSU9OCi0wMDkwQTcgICAgIChiYXNlIDE2KQkJQ0xJRU5URUMgQ09SUE9SQVRJT04KLQkJCQk4MTc1IFMuIFZJUkdJTklBIFNULgotCQkJCVNVSVRFICM4NTAtMjQ5Ci0JCQkJUkVOTyBOViA4OTUxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQTggICAoaGV4KQkJTmluZVRpbGVzIE5ldHdvcmtzLCBMdGQuCi0wMDkwQTggICAgIChiYXNlIDE2KQkJTmluZVRpbGVzIE5ldHdvcmtzLCBMdGQuCi0JCQkJOSBTdGF0aW9uIFJvYWQKLQkJCQlXYXRlcmJlYWNoIENhbWJyaWRnZSBDQjUgOUhUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtQTkgICAoaGV4KQkJV0VTVEVSTiBESUdJVEFMCi0wMDkwQTkgICAgIChiYXNlIDE2KQkJV0VTVEVSTiBESUdJVEFMCi0JCQkJMTU5OSBOT1JUSCBCUk9BRFdBWQotCQkJCVJPQ0hFU1RFUiBNTiA1NTkwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQUEgICAoaGV4KQkJSU5ESUdPIEFDVElWRSBWSVNJT04gU1lTVEVNUyBMSU1JVEVECi0wMDkwQUEgICAgIChiYXNlIDE2KQkJSU5ESUdPIEFDVElWRSBWSVNJT04gU1lTVEVNUyBMSU1JVEVECi0JCQkJVEhFIEVESU5CVVJHSCBURUNITk9QT0xFCi0JCQkJQkFTSCBMT0FOCi0JCQkJRWRpbmJ1cmdoIEVIMjYgT1BKICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC05MC1BQiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwQUIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUgICBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUFDICAgKGhleCkJCU9QVElWSVNJT04sIElOQy4KLTAwOTBBQyAgICAgKGJhc2UgMTYpCQlPUFRJVklTSU9OLCBJTkMuCi0JCQkJMzQ1MCBISUxMVklFVyBBVkVOVUUKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUFEICAgKGhleCkJCUFTUEVDVCBFTEVDVFJPTklDUywgSU5DLgotMDA5MEFEICAgICAoYmFzZSAxNikJCUFTUEVDVCBFTEVDVFJPTklDUywgSU5DLgotCQkJCTEyNzQwIEVBUkhBUlQgQVZFLgotCQkJCUFVQlVSTiBDQSA5NTYwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQUUgICAoaGV4KQkJSVRBTFRFTCBTLnAuQS4KLTAwOTBBRSAgICAgKGJhc2UgMTYpCQlJVEFMVEVMIFMucC5BLgotCQkJCUxPQ0FMSVRBJyBCT1NDSEVUVE8KLQkJCQk2NzEwMCBMJ0FRVUlMQSAgCi0JCQkJSVRBTFkKLQotMDAtOTAtQUYgICAoaGV4KQkJSi4gTU9SSVRBIE1GRy4gQ09SUC4KLTAwOTBBRiAgICAgKGJhc2UgMTYpCQlKLiBNT1JJVEEgTUZHLiBDT1JQLgotCQkJCTY4MCBISUdBU0hJSEFNQSBNSU5BTUktQ0hPCi0JCQkJRlVTSElNSS1LVSwgS1lPVE8gNjEyLTgyMTMgCi0JCQkJSkFQQU4KLQotMDAtOTAtQjAgICAoaGV4KQkJVkFERU0KLTAwOTBCMCAgICAgKGJhc2UgMTYpCQlWQURFTQotCQkJCTE5NjAgWkFOS0VSIFJECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUIxICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTBCMSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUi4gLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUIyICAgKGhleCkJCUFWSUNJIFNZU1RFTVMgSU5DLgotMDA5MEIyICAgICAoYmFzZSAxNikJCUFWSUNJIFNZU1RFTVMgSU5DLgotCQkJCTEyIEVMSVpBQkVUSCBEUklWRQotCQkJCUNIRUxNU0ZPUkQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUIzICAgKGhleCkJCUFHUkFOQVQgU1lTVEVNUwotMDA5MEIzICAgICAoYmFzZSAxNikJCUFHUkFOQVQgU1lTVEVNUwotCQkJCTEzNDUgTUFJTiBTVFJFRVQKLQkJCQlXQUxUSEFNIE1BIDAyMTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1CNCAgIChoZXgpCQlXSUxMT1dCUk9PSyBURUNITk9MT0dJRVMKLTAwOTBCNCAgICAgKGJhc2UgMTYpCQlXSUxMT1dCUk9PSyBURUNITk9MT0dJRVMKLQkJCQk3MTIwIEhBWVZFTkhVUlNUIEFWRS4tU1RFLiM0MDEKLQkJCQlWQU4gTlVZUyBDQSA5MTQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQjUgICAoaGV4KQkJTklLT04gQ09SUE9SQVRJT04KLTAwOTBCNSAgICAgKGJhc2UgMTYpCQlOSUtPTiBDT1JQT1JBVElPTgotCQkJCUVsZWN0cm9uaWMgSW1hZ2luZyBEaXZpc2lvbiwgRGVzaWduaW5nIEQKLQkJCQkxLTYtMywgTklTSEktT0hJLCBTSElOQUdBV0EtS1UKLQkJCQlUT0tZTyAxNDAtODYwMSAgCi0JCQkJSkFQQU4KLQotMDAtOTAtQjYgICAoaGV4KQkJRklCRVggU1lTVEVNUwotMDA5MEI2ICAgICAoYmFzZSAxNikJCUZJQkVYIFNZU1RFTVMKLQkJCQk1MzUwIE9MRCBSRURXT09EIEhJR0hXQVkKLQkJCQlQRVRBTFVNQSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQjcgICAoaGV4KQkJRElHSVRBTCBMSUdIVFdBVkUsIElOQy4KLTAwOTBCNyAgICAgKGJhc2UgMTYpCQlESUdJVEFMIExJR0hUV0FWRSwgSU5DLgotCQkJCTYwMSBDTEVWRUxBTkQgU1RSRUVULSA1VEggRkwuCi0JCQkJQ0xFQVJXQVRFUiBGTCAzMzc1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQjggICAoaGV4KQkJUk9IREUgJiBTQ0hXQVJaIEdNQkggJiBDTy4gS0cKLTAwOTBCOCAgICAgKGJhc2UgMTYpCQlST0hERSAmIFNDSFdBUlogR01CSCAmIENPLiBLRwotCQkJCVBPU1RGQUNIOiA4MCAxNCA2OS9BQlQuOiAzQ0sKLQkJCQlELTgxNjE0IE1VTkNIRU4gIAotCQkJCUdFUk1BTlkKLQotMDAtOTAtQjkgICAoaGV4KQkJQkVSQU4gSU5TVFJVTUVOVFMgTFRELgotMDA5MEI5ICAgICAoYmFzZSAxNikJCUJFUkFOIElOU1RSVU1FTlRTIExURC4KLQkJCQlIQVRDSE1PT1IgSU5EVVNUUklBTCBFU1RBVEUKLQkJCQlUT1JSSU5HVE9OCi0JCQkJTiBERVZPTiBFWDM4IDdIUCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtQkEgICAoaGV4KQkJVkFMSUQgTkVUV09SS1MsIElOQy4KLTAwOTBCQSAgICAgKGJhc2UgMTYpCQlWQUxJRCBORVRXT1JLUywgSU5DLgotCQkJCTYgQ1JPTVdFTEwgIzEwMgotCQkJCUlSVklORSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQkIgICAoaGV4KQkJVEFJTkVUIENPTU1VTklDQVRJT04gU1lTVEVNIENvcnAuCi0wMDkwQkIgICAgIChiYXNlIDE2KQkJVEFJTkVUIENPTU1VTklDQVRJT04gU1lTVEVNIENvcnAuCi0JCQkJMyBGTCwgTk8uIDYsIEFMTEVZIDIzLCBMQU5FIDkxIFNFQy4gMQotCQkJCU5laS1IdSBSb2FkCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLUJDICAgKGhleCkJCVRFTEVNQU5OIENPLiwgTFRELgotMDA5MEJDICAgICAoYmFzZSAxNikJCVRFTEVNQU5OIENPLiwgTFRELgotCQkJCTZGIERPTkdTSU4gQkxERy4KLQkJCQk1NDMsIERPR09LLURPTkcsIEtBTkdOQU0tS1UKLQkJCQlTRU9VTCwgMTM1LTI3MCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTkwLUJEICAgKGhleCkJCU9NTklBIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDkwQkQgICAgIChiYXNlIDE2KQkJT01OSUEgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMDAgTklDS0VSU09OIFJPQUQKLQkJCQlNQVJMQk9ST1VHSCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQkUgICAoaGV4KQkJSUJDL0lOVEVHUkFURUQgQlVTSU5FU1MgQ09NUFVURVJTCi0wMDkwQkUgICAgIChiYXNlIDE2KQkJSUJDL0lOVEVHUkFURUQgQlVTSU5FU1MgQ09NUFVURVJTCi0JCQkJMjY4NSBDIFBBUksgQ0VOVEVSIERSSVZFCi0JCQkJU0lNSSBWQUxMRVkgQ0EgOTMwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUJGICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTBCRiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRSAgIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQzAgICAoaGV4KQkJSy5KLiBMQVcgRU5HSU5FRVJTLCBJTkMuCi0wMDkwQzAgICAgIChiYXNlIDE2KQkJSy5KLiBMQVcgRU5HSU5FRVJTLCBJTkMuCi0JCQkJNDIzMDAgVy4gTklORSBNSUxFIFJPQUQKLQkJCQlOT1ZJIE1JIDQ4Mzc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1DMSAgIChoZXgpCQlQZWNvIElJLCBJbmMuCi0wMDkwQzEgICAgIChiYXNlIDE2KQkJUGVjbyBJSSwgSW5jLgotCQkJCTcwNjAgSHVudGxleSBSb2FkCi0JCQkJQ29sdW1idXMgT0ggNDMyMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUMyICAgKGhleCkJCUpLIG1pY3Jvc3lzdGVtcywgSW5jLgotMDA5MEMyICAgICAoYmFzZSAxNikJCUpLIG1pY3Jvc3lzdGVtcywgSW5jLgotCQkJCTEyNzUgWVVCQSBBVkVOVUUKLQkJCQlTQU4gUEFCTE8gQ0EgOTQ4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUMzICAgKGhleCkJCVRPUElDIFNFTUlDT05EVUNUT1IgQ09SUC4KLTAwOTBDMyAgICAgKGJhc2UgMTYpCQlUT1BJQyBTRU1JQ09ORFVDVE9SIENPUlAuCi0JCQkJMTFGLTEsIE5PLiAyLCBXVS1MSU4gUkQuCi0JCQkJSFNJTi1DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtQzQgICAoaGV4KQkJSkFWRUxJTiBTWVNURU1TLCBJTkMuCi0wMDkwQzQgICAgIChiYXNlIDE2KQkJSkFWRUxJTiBTWVNURU1TLCBJTkMuCi0JCQkJMTg4MSBMQU5HTEVZIEFWRS4KLQkJCQlJUlZJTkUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUM1ICAgKGhleCkJCUlOVEVSTkVUIE1BR0lDLCBJTkMuCi0wMDkwQzUgICAgIChiYXNlIDE2KQkJSU5URVJORVQgTUFHSUMsIElOQy4KLQkJCQk2NDUwIExVU0sgQkxWRC4tU1RFLiAjRS0yMDEKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUM2ICAgKGhleCkJCU9QVElNIFNZU1RFTVMsIElOQy4KLTAwOTBDNiAgICAgKGJhc2UgMTYpCQlPUFRJTSBTWVNURU1TLCBJTkMuCi0JCQkJODIwMSBHUkVFTlNCT1JPIERSLi1TVEUuICMxMDAwCi0JCQkJTUNMRUFOIFZBIDIyMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1DNyAgIChoZXgpCQlJQ09NIElOQy4KLTAwOTBDNyAgICAgKGJhc2UgMTYpCQlJQ09NIElOQy4KLQkJCQk2LTktMTYgS0FNSUhJR0FTSEkKLQkJCQlISVJBTk8tS1UsIE9TQUtBICAKLQkJCQlKQVBBTgotCi0wMC05MC1DOCAgIChoZXgpCQlXQVZFUklERVIgQ09NTVVOSUNBVElPTlMgKENBTkFEQSkgSU5DLgotMDA5MEM4ICAgICAoYmFzZSAxNikJCVdBVkVSSURFUiBDT01NVU5JQ0FUSU9OUyAoQ0FOQURBKSBJTkMuCi0JCQkJCi0JCQkJQnJpdGlzaCBDb2x1bWJpYSBWMUUgNFI5IAotCQkJCUNBTkFEQQotCi0wMC05MC1DOSAgIChoZXgpCQlEUEFDIFRlY2hub2xvZ2llcwotMDA5MEM5ICAgICAoYmFzZSAxNikJCURQQUMgVGVjaG5vbG9naWVzCi0JCQkJNzMyMSBMaW5jb2xuIFdheQotCQkJCUdhcmRlbiBHcm92ZSBDQSA5Mjg0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQ0EgICAoaGV4KQkJQUNDT1JEIFZJREVPIFRFTEVDT01NVU5JQ0FUSU9OUywgTFRELgotMDA5MENBICAgICAoYmFzZSAxNikJCUFDQ09SRCBWSURFTyBURUxFQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQkxMCwgTUFSVElOIEdFSEwgU1RSLCBQTyBCT1ggMzU2NAotCQkJCVBldGFjaC1UaWt2YSA0OTEzMCAgCi0JCQkJSVNSQUVMCi0KLTAwLTkwLUNCICAgKGhleCkJCVdpcmVsZXNzIE9uTGluZSwgSW5jLgotMDA5MENCICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIE9uTGluZSwgSW5jLgotCQkJCTQ0MTAgRUwgQ0FNSU5PIFJFQUwsICBTVEUgIzEwMQotCQkJCUxPUyBBTFRPUyBDQSA5NDAyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQ0MgICAoaGV4KQkJUGxhbmV4IENvbW11bmljYXRpb25zCi0wMDkwQ0MgICAgIChiYXNlIDE2KQkJUGxhbmV4IENvbW11bmljYXRpb25zCi0JCQkJMkYgRkVOSVNTQVkgRWJpc3UgQmxkZwotCQkJCTMtMTYtMyBIaWdhc2hpLAotCQkJCVNoaWJ1eWEta3UsIFRva3lvIDE1MC0wMDExCi0JCQkJSkFQQU4KLQotMDAtOTAtQ0QgICAoaGV4KQkJRU5ULUVNUFJFU0EgTkFDSU9OQUwgREUgVEVMRUNPTU1VTklDQUNPRVMsIFMuQS4KLTAwOTBDRCAgICAgKGJhc2UgMTYpCQlFTlQtRU1QUkVTQSBOQUNJT05BTCBERSBURUxFQ09NTVVOSUNBQ09FUywgUy5BLgotCQkJCVIuIEVORyBGUkVERVJJQ08gVUxSSUNIIC0gIEFQQVJUQURPIDMwODEKLQkJCQlHdWFyZGVpcmFzIC0gNDQ3MCBNb3JlaXJhIE1haWEgIAotCQkJCVBPUlRVR0FMCi0KLTAwLTkwLUNFICAgKGhleCkJCVRFVFJBIEdtYkgKLTAwOTBDRSAgICAgKGJhc2UgMTYpCQlURVRSQSBHbWJICi0JCQkJR0VXRVJCRVBBUksgIkFtV2FsZCIgNAotCQkJCUQtOTg2OTMgSUxNRU5BVSAgCi0JCQkJR0VSTUFOWQotCi0wMC05MC1DRiAgIChoZXgpCQlOT1JURUwKLTAwOTBDRiAgICAgKGJhc2UgMTYpCQlOT1JURUwKLQkJCQkyNTAgU0lETkVZIFNUUkVFVAotCQkJCUJlbGxldmlsbGUgT250YXJpbyBLOE4gNUI3IAotCQkJCUNBTkFEQQotCi0wMC05MC1EMCAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDA5MEQwICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NwotCQkJCUItMjY1MCBFREVHRU0gIAotCQkJCUJFTEdJVU0KLQotMDAtOTAtRDEgICAoaGV4KQkJTEVJQ0hVIEVOVEVSUFJJU0UgQ08uLCBMVEQuCi0wMDkwRDEgICAgIChiYXNlIDE2KQkJTEVJQ0hVIEVOVEVSUFJJU0UgQ08uLCBMVEQuCi0JCQkJOEYsIE5PLiAyMDMsIFBBLVRFSCBST0FELCBTRUMuMgotCQkJCVRBSVBFSSBDSVRZCi0JCQkJVEFJV0FOIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtRDIgICAoaGV4KQkJQVJURUwgVklERU8gU1lTVEVNUwotMDA5MEQyICAgICAoYmFzZSAxNikJCUFSVEVMIFZJREVPIFNZU1RFTVMKLQkJCQkyMzcgQ0VEQVIgSElMTCBTVC4KLQkJCQlNQVJMQk9STyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRDMgICAoaGV4KQkJR0lFU0VDS0UgJiBERVZSSUVOVCBHbWJICi0wMDkwRDMgICAgIChiYXNlIDE2KQkJR0lFU0VDS0UgJiBERVZSSUVOVCBHbWJICi0JCQkJUFJJTlpSRUdFTlRFTlNUUkFTU0UgMTU5Ci0JCQkJRC04MTY3NyAgTVVOQ0hFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC05MC1ENCAgIChoZXgpCQlCaW5kVmlldyBEZXZlbG9wbWVudCBDb3JwLgotMDA5MEQ0ICAgICAoYmFzZSAxNikJCUJpbmRWaWV3IERldmVsb3BtZW50IENvcnAuCi0JCQkJMzM1NSBXRVNUIEFMQUJBTUEgIzEyMDAKLQkJCQlIT1VTVE9OIFRYIDc3MDk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1ENSAgIChoZXgpCQlFVVBIT05JWCwgSU5DLgotMDA5MEQ1ICAgICAoYmFzZSAxNikJCUVVUEhPTklYLCBJTkMuCi0JCQkJMjIwIFBPUlRBR0UgQVZFLgotCQkJCVBBTE8gQUxUTyBDQSA5NDMwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRDYgICAoaGV4KQkJQ1JZU1RBTCBHUk9VUAotMDA5MEQ2ICAgICAoYmFzZSAxNikJCUNSWVNUQUwgR1JPVVAKLQkJCQk4NTAgS0FDRU5BIFJELgotCQkJCUhJQVdBVEhBIElBIDUyMjMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1ENyAgIChoZXgpCQlOZXRCb29zdCBDb3JwLgotMDA5MEQ3ICAgICAoYmFzZSAxNikJCU5ldEJvb3N0IENvcnAuCi0JCQkJMzkwIENBTUJSSURHRSBBVkVOVUUKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDYtMTUwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRDggICAoaGV4KQkJV0hJVEVDUk9TUyBTWVNURU1TCi0wMDkwRDggICAgIChiYXNlIDE2KQkJV0hJVEVDUk9TUyBTWVNURU1TCi0JCQkJM0EgV0FURVJTSURFIFBBUkssIENPT0tIQU0gUkQKLQkJCQlCUkFDS05FTEwKLQkJCQlCRVJLU0hJUkUgUkcxMiAxUkIgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLUQ5ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTBEOSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCU0vUy8gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1EQSAgIChoZXgpCQlEWU5BUkMsIElOQy4KLTAwOTBEQSAgICAgKGJhc2UgMTYpCQlEWU5BUkMsIElOQy4KLQkJCQkxODg3IExBTkRJTkdTIERSSVZFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtREIgICAoaGV4KQkJTkVYVCBMRVZFTCBDT01NVU5JQ0FUSU9OUwotMDA5MERCICAgICAoYmFzZSAxNikJCU5FWFQgTEVWRUwgQ09NTVVOSUNBVElPTlMKLQkJCQk2MDg1IFNUQVRFIEZBUk0gRFJJVkUKLQkJCQlST0hORVJUIFBBUksgQ0EgOTQ5MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLURDICAgKGhleCkJCVRFQ08gSU5GT1JNQVRJT04gU1lTVEVNUwotMDA5MERDICAgICAoYmFzZSAxNikJCVRFQ08gSU5GT1JNQVRJT04gU1lTVEVNUwotCQkJCUNPLiwgTFRELgotCQkJCTI4NDEgSlVOQ1RJT04gQVZFLiwgU1RFLiAjMTE2Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUREICAgKGhleCkJCVRIRSBNSUhBUlUgQ09NTVVOSUNBVElPTlMgQ08uLCBMVEQuCi0wMDkwREQgICAgIChiYXNlIDE2KQkJVEhFIE1JSEFSVSBDT01NVU5JQ0FUSU9OUyBDTy4sIExURC4KLQkJCQkKLQkJCQkxMjg1LCBJV0FTRSwgS0FNQUtVUkEtQ0lUWQotCQkJCUtBTkFHQVdBICAKLQkJCQlKQVBBTgotCi0wMC05MC1ERSAgIChoZXgpCQlDQVJES0VZIFNZU1RFTVMsIElOQy4KLTAwOTBERSAgICAgKGJhc2UgMTYpCQlDQVJES0VZIFNZU1RFTVMsIElOQy4KLQkJCQkxNzU3IFRBUE8gQ0FOWU9OIFJPQUQKLQkJCQlTSU1JIFZBTExFWSBDQSA5MzA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtREYgICAoaGV4KQkJTUlUU1VCSVNISSBDSEVNSUNBTCBBTUVSSUNBLCBJTkMuCi0wMDkwREYgICAgIChiYXNlIDE2KQkJTUlUU1VCSVNISSBDSEVNSUNBTCBBTUVSSUNBLCBJTkMuCi0JCQkJNDQ1IElORElPIFdBWQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRTAgICAoaGV4KQkJU1lTVFJBTiBDT1JQLgotMDA5MEUwICAgICAoYmFzZSAxNikJCVNZU1RSQU4gQ09SUC4KLQkJCQk0MTI2IExJTkRFTiBBVkVOVUUKLQkJCQlEQVlUT04gT0ggNDU0MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUUxICAgKGhleCkJCVRFTEVOQSBTLlAuQS4KLTAwOTBFMSAgICAgKGJhc2UgMTYpCQlURUxFTkEgUy5QLkEuCi0JCQkJVklBIFNBVk9OQSwgMTQ2Ci0JCQkJMjAxNDQgTUlMQU5PICAKLQkJCQlJVEFMWQotCi0wMC05MC1FMiAgIChoZXgpCQlESVNUUklCVVRFRCBQUk9DRVNTSU5HIFRFQ0hOT0xPR1kKLTAwOTBFMiAgICAgKGJhc2UgMTYpCQlESVNUUklCVVRFRCBQUk9DRVNTSU5HIFRFQ0hOT0xPR1kKLQkJCQkxNDAgQ0FOREFDRSBEUklWRQotCQkJCU9STEFORE8gRkwgMzI3NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUUzICAgKGhleCkJCUFWRVggRUxFQ1RST05JQ1MgSU5DLgotMDA5MEUzICAgICAoYmFzZSAxNikJCUFWRVggRUxFQ1RST05JQ1MgSU5DLgotCQkJCTQ4MDcgQlJBREZPUkQgRFJJVkUKLQkJCQlIVU5UU1ZJTExFIEFMIDM1ODA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1FNCAgIChoZXgpCQlORUMgQU1FUklDQSwgSU5DLgotMDA5MEU0ICAgICAoYmFzZSAxNikJCU5FQyBBTUVSSUNBLCBJTkMuCi0JCQkJMzEwMCBOLkUuIFNIVVRFIFJPQUQKLQkJCQlISUxMU0JPUk8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUU1ICAgKGhleCkJCVRFS05FTUEsIElOQy4KLTAwOTBFNSAgICAgKGJhc2UgMTYpCQlURUtORU1BLCBJTkMuCi0JCQkJMjY1NiBFLiBCQVlTSE9SRSBST0FECi0JCQkJUEFMTyBBTFRPIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1FNiAgIChoZXgpCQlBTGkgQ29ycG9yYXRpb24KLTAwOTBFNiAgICAgKGJhc2UgMTYpCQlBTGkgQ29ycG9yYXRpb24KLQkJCQk2RiwgMjQ2IE5laUh1IFJvYWQsIFNlYy4gMQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1FNyAgIChoZXgpCQlIT1JTQ0ggRUxFS1RST05JSyBBRwotMDA5MEU3ICAgICAoYmFzZSAxNikJCUhPUlNDSCBFTEVLVFJPTklLIEFHCi0JCQkJSEFBR0VSU1RSQVNTRQotCQkJCVBPU1RGQUNICi0JCQkJQ0gtOTQ3MyBHQU1TICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC05MC1FOCAgIChoZXgpCQlNT1hBIFRFQ0hOT0xPR0lFUyBDT1JQLiwgTFRELgotMDA5MEU4ICAgICAoYmFzZSAxNikJCU1PWEEgVEVDSE5PTE9HSUVTIENPUlAuLCBMVEQuCi0JCQkJN0YsIE5PLiAyLCBBTFk2LCBMTiAyMzUKLQkJCQlQQU8tQ0hJQU8gUkQsCi0JCQkJU0hJRU5HLVRJRU4gQ0lUWSBUQUlQRUkgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1FOSAgIChoZXgpCQlKQU5aIENPTVBVVEVSIEFHCi0wMDkwRTkgICAgIChiYXNlIDE2KQkJSkFOWiBDT01QVVRFUiBBRwotCQkJCUltIET2cmVuZXIgRmVsZCA4Ci0JCQkJRC0zMzEwMCBQYWRlcmJvcm4gCi0JCQkJR0VSTUFOWQotCi0wMC05MC1FQSAgIChoZXgpCQlBTFBIQSBURUNITk9MT0dJRVMsIElOQy4KLTAwOTBFQSAgICAgKGJhc2UgMTYpCQlBTFBIQSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkzNzY3IEFMUEhBIFdBWQotCQkJCUJFTExJTkdIQU0gV0EgOTgyMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUVCICAgKGhleCkJCVNFTlRSWSBURUxFQ09NIFNZU1RFTVMKLTAwOTBFQiAgICAgKGJhc2UgMTYpCQlTRU5UUlkgVEVMRUNPTSBTWVNURU1TCi0JCQkJODY2NCBDT01NRVJDRSBDT1VSVAotCQkJCUJVUk5BQlkgQkMgVjVBIDRONyAKLQkJCQlDQU5BREEKLQotMDAtOTAtRUMgICAoaGV4KQkJUFlSRVNDT00KLTAwOTBFQyAgICAgKGJhc2UgMTYpCQlQWVJFU0NPTQotCQkJCTMgQUxMRUUgRFUgTU9VTElOCi0JCQkJNjY2ODAgQ0FOT0hFUyAgCi0JCQkJRlJBTkNFCi0KLTAwLTkwLUVEICAgKGhleCkJCUNFTlRSQUwgU1lTVEVNIFJFU0VBUkNIIENPLiwgTFRELgotMDA5MEVEICAgICAoYmFzZSAxNikJCUNFTlRSQUwgU1lTVEVNIFJFU0VBUkNIIENPLiwgTFRELgotCQkJCTQtMTMtMiBISVlPU0hJQ0hPCi0JCQkJS09LVUJVTkpJLUNJVFkgVE9LWU8gMTg1MDAwMzIgCi0JCQkJSkFQQU4KLQotMDAtOTAtRUUgICAoaGV4KQkJUEVSU09OQUwgQ09NTVVOSUNBVElPTlMgVEVDSE5PTE9HSUVTCi0wMDkwRUUgICAgIChiYXNlIDE2KQkJUEVSU09OQUwgQ09NTVVOSUNBVElPTlMgVEVDSE5PTE9HSUVTCi0JCQkJNTAgU1RJTEVTIFJPQUQKLQkJCQlTQUxFTSBOSCAwMzA3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRUYgICAoaGV4KQkJSU5URUdSSVgsIElOQy4KLTAwOTBFRiAgICAgKGJhc2UgMTYpCQlJTlRFR1JJWCwgSU5DLgotCQkJCTIwMDEgQ09SUE9SQVRFIENFTlRFUiBEUklWRQotCQkJCU5FV0JVUlkgUEFSSyBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRjAgICAoaGV4KQkJSGFybW9uaWMgVmlkZW8gU3lzdGVtcyBMdGQuCi0wMDkwRjAgICAgIChiYXNlIDE2KQkJSGFybW9uaWMgVmlkZW8gU3lzdGVtcyBMdGQuCi0JCQkJMTkgQUxPTiBIQVRBVk9SIFNUUkVFVAotCQkJCVpvbmUgMywgUE8gQm94IDM2MDAKLQkJCQlDQUVTQVJFQSAgSW5kdXN0cmlhbCBQYXJrICAzODkwMAotCQkJCUlTUkFFTAotCi0wMC05MC1GMSAgIChoZXgpCQlET1QgSElMTCBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDkwRjEgICAgIChiYXNlIDE2KQkJRE9UIEhJTEwgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTYzMDUgRWwgQ2FtaW5vIFJlYWwKLQkJCQlDYXJsc2JhZCBDQSA5MjAwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRjIgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MEYyICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1GMyAgIChoZXgpCQlBU1BFQ1QgQ09NTVVOSUNBVElPTlMKLTAwOTBGMyAgICAgKGJhc2UgMTYpCQlBU1BFQ1QgQ09NTVVOSUNBVElPTlMKLQkJCQkxMzEwIFJpZGRlciBQYXJrIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEtMjMxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRjQgICAoaGV4KQkJTElHSFROSU5HIElOU1RSVU1FTlRBVElPTgotMDA5MEY0ICAgICAoYmFzZSAxNikJCUxJR0hUTklORyBJTlNUUlVNRU5UQVRJT04KLQkJCQlCT1ZFUkVTU0VTIDUwCi0JCQkJMTAxMCBMQVVTQU5ORSAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtOTAtRjUgICAoaGV4KQkJQ0xFVk8gQ08uCi0wMDkwRjUgICAgIChiYXNlIDE2KQkJQ0xFVk8gQ08uCi0JCQkJMzUsIFdVLUdPTiA2VEggUk9BRAotCQkJCVdVLUtVIElORFVTVFJJQUwgUEFSSwotCQkJCVRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1GNiAgIChoZXgpCQlFU0NBTEFURSBORVRXT1JLUywgSU5DLgotMDA5MEY2ICAgICAoYmFzZSAxNikJCUVTQ0FMQVRFIE5FVFdPUktTLCBJTkMuCi0JCQkJNiBIVUdIRVMKLQkJCQlJUlZJTkUgQ0EgOTI2MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUY3ICAgKGhleCkJCU5CQVNFIENPTU1VTklDQVRJT05TIExURC4KLTAwOTBGNyAgICAgKGJhc2UgMTYpCQlOQkFTRSBDT01NVU5JQ0FUSU9OUyBMVEQuCi0JCQkJSU5EVVNUUklBTCBQQVJLCi0JCQkJWU9RTkVBTSBJTElUIFAuTy4gQk9YIDExNAotCQkJCUlTUkFFTAotCi0wMC05MC1GOCAgIChoZXgpCQlNRURJQVRSSVggVEVMRUNPTQotMDA5MEY4ICAgICAoYmFzZSAxNikJCU1FRElBVFJJWCBURUxFQ09NCi0JCQkJNDIyOSBHQVJMT0NLCi0JCQkJU0hFUkJST09LRQotCQkJCVFVRUJFQyBKMUwgMkM4ICAKLQkJCQlDQU5BREEKLQotMDAtOTAtRjkgICAoaGV4KQkJTEVJVENICi0wMDkwRjkgICAgIChiYXNlIDE2KQkJTEVJVENICi0JCQkJMTAgRFlBUyBST0FECi0JCQkJRE9OIE1JTExTCi0JCQkJT05UQVJJTyBNM0IgMVY1ICAKLQkJCQlDQU5BREEKLQotMDAtOTAtRkEgICAoaGV4KQkJRU1VTEVYIENvcnAKLTAwOTBGQSAgICAgKGJhc2UgMTYpCQlFTVVMRVggQ29ycAotCQkJCTMzMzMgU3VzYW4gU3RyZWV0Ci0JCQkJQ29zdGEgTWVzYSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRkIgICAoaGV4KQkJUE9SVFdFTEwsIElOQy4KLTAwOTBGQiAgICAgKGJhc2UgMTYpCQlQT1JUV0VMTCwgSU5DLgotCQkJCTdGLTQsIE5PLiAxNjAsIFNFQy4gNgotCQkJCU1JTkctQ0hVQU5HIEUuIFJELgotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1GQyAgIChoZXgpCQlORVRXT1JLIENPTVBVVElORyBERVZJQ0VTCi0wMDkwRkMgICAgIChiYXNlIDE2KQkJTkVUV09SSyBDT01QVVRJTkcgREVWSUNFUwotCQkJCTMwMSBSQVZFTkRBTEUgRFJJVkUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1GRCAgIChoZXgpCQlDb3BwZXJDb20sIEluYy4KLTAwOTBGRCAgICAgKGJhc2UgMTYpCQlDb3BwZXJDb20sIEluYy4KLQkJCQkzMjU1LTEgU0NPVFQgQkxWRC4sLS1TVEUuIzEwMwotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1GRSAgIChoZXgpCQlFTEVDT00gQ08uLCBMVEQuICAoTEFORUVEIERJVi4pCi0wMDkwRkUgICAgIChiYXNlIDE2KQkJRUxFQ09NIENPLiwgTFRELiAgKExBTkVFRCBESVYuKQotCQkJCVNVTUlUT01PIEZVRE9TQU4KLQkJCQlISUdBU0hJIElLRUJVS1VSTyBCTERHLiA2RiwgMy0xMy0yIEhJR0FTCi0JCQkJVE9TSElNQS1LVSBUT0tZTyAxNzAtMDAxMyAKLQkJCQlKQVBBTgotCi0wMC05MC1GRiAgIChoZXgpCQlURUxMVVMgVEVDSE5PTE9HWSBJTkMuCi0wMDkwRkYgICAgIChiYXNlIDE2KQkJVEVMTFVTIFRFQ0hOT0xPR1kgSU5DLgotCQkJCTQwOTkwIEVOQ1lDTE9QRURJQSBDSVIuCi0JCQkJRlJFTU9OVCBDQSA5NDUzOC0yNDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MS1ENiAgIChoZXgpCQlDcnlzdGFsIEdyb3VwLCBJbmMuCi0wMDkxRDYgICAgIChiYXNlIDE2KQkJQ3J5c3RhbCBHcm91cCwgSW5jLgotCQkJCTg1MCBLYWNlbmEgUmQuCi0JCQkJSGlhd2F0aGEgSUEgNTIyMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkzLTYzICAgKGhleCkJCVVuaS1MaW5rIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDkzNjMgICAgIChiYXNlIDE2KQkJVW5pLUxpbmsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk3LTUsIE5vLjY2LCBTZWMuMiwgTmFuLUthbiBSZC4sIEx1LUNodSBIc2lhbmcsCi0JCQkJVGFveXVhbiAgMzM4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05Ny1GRiAgIChoZXgpCQlIZWltYW5uIFNlbnNvciBHbWJICi0wMDk3RkYgICAgIChiYXNlIDE2KQkJSGVpbWFubiBTZW5zb3IgR21iSAotCQkJCUdyZW56c3RyYXNzZSAyMgotCQkJCURyZXNkZW4gU2FjaHNlbiAwMTEwOQotCQkJCUdFUk1BTlkKLQotMDAtOUQtOEUgICAoaGV4KQkJQ0FSRElBQyBSRUNPUkRFUlMsIElOQy4KLTAwOUQ4RSAgICAgKGJhc2UgMTYpCQlDQVJESUFDIFJFQ09SREVSUywgSU5DLgotCQkJCTM0IFNDQVJCT1JPIFJPQUQKLQkJCQlMT05ET04gIE40IDRMIFUKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLTAwICAgKGhleCkJCUNFTlRJTExJT04gTkVUV09SS1MsIElOQy4KLTAwQTAwMCAgICAgKGJhc2UgMTYpCQlDRU5USUxMSU9OIE5FVFdPUktTLCBJTkMuCi0JCQkJMzU5IFJBVkVOREFMRSBEUklWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTAxICAgKGhleCkJCURSUyBTaWduYWwgU29sdXRpb25zCi0wMEEwMDEgICAgIChiYXNlIDE2KQkJRFJTIFNpZ25hbCBTb2x1dGlvbnMKLQkJCQk3MDAgUXVpbmNlIE9yY2hhcmQgUm9hZAotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg3OC0xNzk0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0wMiAgIChoZXgpCQlMRUVEUyAmIE5PUlRIUlVQIEFVU1RSQUxJQSBQVFkgTFRECi0wMEEwMDIgICAgIChiYXNlIDE2KQkJTEVFRFMgJiBOT1JUSFJVUCBBVVNUUkFMSUEgUFRZIExURAotCQkJCVBPIEJPWCA0MDA5Ci0JCQkJRUlHSFQgTUlMRSBQTEFJTlMgIFFMRCA0MTEzICAKLQkJCQlBVVNUUkFMSUEKLQotMDAtQTAtMDMgICAoaGV4KQkJU2llbWVucyBTd2l0emVybGFuZCBMdGQuLCBJIEIgVCBIVlAKLTAwQTAwMyAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIFN3aXR6ZXJsYW5kIEx0ZC4sIEkgQiBUIEhWUAotCQkJCUJ1aWxkaW5nIFRlY2hub2xvZ2llcyBEaXZpc2lvbiwgSW50ZXJuYXRpb25hbCBIZWFkcXVhcnRlcnMKLQkJCQlJIEJUIEhWUCBTWVMgUkQgRVUgR3ViZWxzdHJhc3NlIDIyCi0JCQkJWnVnICA2MzAxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtQTAtMDQgICAoaGV4KQkJTkVUUE9XRVIsIElOQy4KLTAwQTAwNCAgICAgKGJhc2UgMTYpCQlORVRQT1dFUiwgSU5DLgotCQkJCTU0NSBPQUtNRUFEIFBBUktXQVkKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTA1ICAgKGhleCkJCURBTklFTCBJTlNUUlVNRU5UUywgTFRELgotMDBBMDA1ICAgICAoYmFzZSAxNikJCURBTklFTCBJTlNUUlVNRU5UUywgTFRELgotCQkJCVRST0xMU1RSQVNTRSAzMwotCQkJCUNILTg0MDAgV0lOVEVSVEhVUiAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtQTAtMDYgICAoaGV4KQkJSU1BR0UgREFUQSBQUk9DRVNTSU5HIFNZU1RFTSBHUk9VUAotMDBBMDA2ICAgICAoYmFzZSAxNikJCUlNQUdFIERBVEEgUFJPQ0VTU0lORyBTWVNURU0gR1JPVVAKLQkJCQlTSElOVE9ZT0ZVVEEgMi0xCi0JCQkJS0FTSElXQS1DSVRZLCBDSElCQSAyNzcgIAotCQkJCUpBUEFOCi0KLTAwLUEwLTA3ICAgKGhleCkJCUFQRVhYIFRFQ0hOT0xPR1ksIElOQy4KLTAwQTAwNyAgICAgKGJhc2UgMTYpCQlBUEVYWCBURUNITk9MT0dZLCBJTkMuCi0JCQkJNTA2IFMuIDExVEgKLQkJCQlQTyBCT1ggOTI5MQotCQkJCUJPSVNFIElEIDgzNzA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0wOCAgIChoZXgpCQlORVRDT1JQCi0wMEEwMDggICAgIChiYXNlIDE2KQkJTkVUQ09SUAotCQkJCTggUExBQ0UgT0YgQ09NTUVSQ0UtLVNURSAjMjAwCi0JCQkJQlJPU1NBUkQsIFFVRUJFQwotCQkJCUNBTkFEQSBKNFcgM0gyCi0JCQkJQ0FOQURBCi0KLTAwLUEwLTA5ICAgKGhleCkJCVdISVRFVFJFRSBORVRXT1JLCi0wMEEwMDkgICAgIChiYXNlIDE2KQkJV0hJVEVUUkVFIE5FVFdPUksKLQkJCQlURUNITk9MT0dJRVMsIElOQy4KLQkJCQkzMjAwIEFTSCBTVFJFRVQKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTBBICAgKGhleCkJCUFpcnNwYW4KLTAwQTAwQSAgICAgKGJhc2UgMTYpCQlBaXJzcGFuCi0JCQkJVW5pdHJvbmljcyBCdWlsZGluZywgQXJhdmEgU3RyZWV0LCBBaXJwb3J0IENpdHkKLQkJCQlQT0IgMTk5Ci0JCQkJNzAxMDAKLQkJCQlJU1JBRUwKLQotMDAtQTAtMEIgICAoaGV4KQkJQ09NUFVURVggQ08uLCBMVEQuCi0wMEEwMEIgICAgIChiYXNlIDE2KQkJQ09NUFVURVggQ08uLCBMVEQuCi0JCQkJNDMyLTEzIEdPSllPQkFTSEktSElHQVNISSA0LUNIWU9NRQotCQkJCSBISUdBU0hJWUFNQUtVLCBLWU9UTy1DSVRZIDYwNSAgCi0JCQkJSkFQQU4KLQotMDAtQTAtMEMgICAoaGV4KQkJS0lOR01BWCBURUNITk9MT0dZLCBJTkMuCi0wMEEwMEMgICAgIChiYXNlIDE2KQkJS0lOR01BWCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMkZMLiwgTk8uIDQsIExBTkUgOTAyLCBTRUMuMgotCQkJCUtVQU5HIEZVIFJELiwgSFNJTi1DSFUgQ0lUWQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQTAtMEQgICAoaGV4KQkJVEhFIFBBTkRBIFBST0pFQ1QKLTAwQTAwRCAgICAgKGJhc2UgMTYpCQlUSEUgUEFOREEgUFJPSkVDVAotCQkJCTUyMDEgQ09OR1JFU1MgQVZFLiAtIEMtMTAwCi0JCQkJQk9DQSBSQVRPTiBGTCAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMEUgICAoaGV4KQkJVklTVUFMIE5FVFdPUktTLCBJTkMuCi0wMEEwMEUgICAgIChiYXNlIDE2KQkJVklTVUFMIE5FVFdPUktTLCBJTkMuCi0JCQkJMjA5MiBHQUlUSEVSIFJPQUQtIFNURSAjMjIwCi0JCQkJUk9DS1ZJTExFIE1EIDIwODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0wRiAgIChoZXgpCQlCcm9hZGJhbmQgVGVjaG5vbG9naWVzCi0wMEEwMEYgICAgIChiYXNlIDE2KQkJQnJvYWRiYW5kIFRlY2hub2xvZ2llcwotCQkJCVAuTy4gQm94IDEzNzM3Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyaywgTkMgMjc3MDktMzczNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMTAgICAoaGV4KQkJU1lTTE9HSUMgREFURU5URUNITklLIEFHCi0wMEEwMTAgICAgIChiYXNlIDE2KQkJU1lTTE9HSUMgREFURU5URUNITklLIEFHCi0JCQkJQnJ1Z2dlcnN0cmFzc2UgNjkKLQkJCQlDSC01NDAwIEJhZGVuICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC1BMC0xMSAgIChoZXgpCQlNVVRPSCBJTkRVU1RSSUVTIExURC4KLTAwQTAxMSAgICAgKGJhc2UgMTYpCQlNVVRPSCBJTkRVU1RSSUVTIExURC4KLQkJCQkyNTMgS0FOQUdBV0EtS0VOLAotCQkJCUNISUdBU0FLSS1TSEkgU0hJTU9NQUNISVlBIDEtMy0xCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1BMC0xMiAgIChoZXgpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuIAotMDBBMDEyICAgICAoYmFzZSAxNikJCVRlbGNvIFN5c3RlbXMsIEluYy4gCi0JCQkJMTUgQmVya3NoaXJlIFJvYWQKLQkJCQlNYW5zZmllbGQsIE1BIDAyMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0xMyAgIChoZXgpCQlURUxUUkVORCBMVEQuCi0wMEEwMTMgICAgIChiYXNlIDE2KQkJVEVMVFJFTkQgTFRELgotCQkJCVJJTkdXQVkgSE9VU0UsIEJFTEwgUk9BRAotCQkJCURBTkVTSElMTCwKLQkJCQlCQVNJTkdTVE9LRSBIQU1QU0hJUkUgUkcyNCA4RiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtMTQgICAoaGV4KQkJQ1NJUgotMDBBMDE0ICAgICAoYmFzZSAxNikJCUNTSVIKLQkJCQlQLk8uIEJPWCAzOTUKLQkJCQlQUkVUT1JJQSAwMDAxCi0JCQkJU09VVEggQUZSSUNBCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLUEwLTE1ICAgKGhleCkJCVdZTEUKLTAwQTAxNSAgICAgKGJhc2UgMTYpCQlXWUxFCi0JCQkJMzAwMCBCT1dFUlMgQVZFTlVFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTE2ICAgKGhleCkJCU1JQ1JPUE9MSVMgQ09SUC4KLTAwQTAxNiAgICAgKGJhc2UgMTYpCQlNSUNST1BPTElTIENPUlAuCi0JCQkJMjEyMTEgTk9SREhPRkYgU1RSRUVUCi0JCQkJQ0hBVFNXT1JUSCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMTcgICAoaGV4KQkJSiBCIE0gQ09SUE9SQVRJT04KLTAwQTAxNyAgICAgKGJhc2UgMTYpCQlKIEIgTSBDT1JQT1JBVElPTgotCQkJCTEwLTEsIEFSQU1PVE9TSElOIE1BQ0hJCi0JCQkJSElHQVNISSBPU0FLQQotCQkJCTU3NwotCQkJCUpBUEFOCi0KLTAwLUEwLTE4ICAgKGhleCkJCUNSRUFUSVZFIENPTlRST0xMRVJTLCBJTkMuCi0wMEEwMTggICAgIChiYXNlIDE2KQkJQ1JFQVRJVkUgQ09OVFJPTExFUlMsIElOQy4KLQkJCQkxMjggS0VORFJJQ0sgTEFORQotCQkJCVBJQ0FZVU5FIE1TIDM5NDY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0xOSAgIChoZXgpCQlORUJVTEEgQ09OU1VMVEFOVFMsIElOQy4KLTAwQTAxOSAgICAgKGJhc2UgMTYpCQlORUJVTEEgQ09OU1VMVEFOVFMsIElOQy4KLQkJCQkxNDQ5IERVTkNBTiBEUklWRQotCQkJCURFTFRBLCBCQyBWNEwgMVI1ICAKLQkJCQlDQU5BREEKLQotMDAtQTAtMUEgICAoaGV4KQkJQklOQVIgRUxFS1RST05JSyBBQgotMDBBMDFBICAgICAoYmFzZSAxNikJCUJJTkFSIEVMRUtUUk9OSUsgQUIKLQkJCQlNQUdORVRVQUdFTiAxOAotCQkJCVMtNDYxMzggVFJPTExIQVRUQU4KLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtQTAtMUIgICAoaGV4KQkJUFJFTUlTWVMgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQTAxQiAgICAgKGJhc2UgMTYpCQlQUkVNSVNZUyBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTQ4NjY0IE1JTE1PTlQgRFJJVkUKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0xQyAgIChoZXgpCQlOQVNDRU5UIE5FVFdPUktTIENPUlBPUkFUSU9OCi0wMEEwMUMgICAgIChiYXNlIDE2KQkJTkFTQ0VOVCBORVRXT1JLUyBDT1JQT1JBVElPTgotCQkJCTI3NyBNQUlOIFNUUkVFVCwgIDNSRCBGTFIuCi0JCQkJTUFSTEJPUk8gTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTFEICAgKGhleCkJCVNJWE5FVAotMDBBMDFEICAgICAoYmFzZSAxNikJCVNJWE5FVAotCQkJCVAuTy4gQk9YIDc2NwotCQkJCUNMSUZUT04gUEFSSyBOWSAxMjA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMUUgICAoaGV4KQkJRVNUIENPUlBPUkFUSU9OCi0wMEEwMUUgICAgIChiYXNlIDE2KQkJRVNUIENPUlBPUkFUSU9OCi0JCQkJMTIwIFJPWUFMTCBTVFJFRVQKLQkJCQlDQU5UT04gTUEgMDIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTFGICAgKGhleCkJCVRSSUNPUkQgU1lTVEVNUywgSU5DLgotMDBBMDFGICAgICAoYmFzZSAxNikJCVRSSUNPUkQgU1lTVEVNUywgSU5DLgotCQkJCTI4MDAgTk9SVEhXRVNUIEJPVUxFVkFSRAotCQkJCVBMWU1PVVRIIE1OIDU1NDQxLTI2MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTIwICAgKGhleCkJCUNJVElDT1JQL1RUSQotMDBBMDIwICAgICAoYmFzZSAxNikJCUNJVElDT1JQL1RUSQotCQkJCTMxMDAgT0NFQU4gUEFSSyBCTFZELgotCQkJCVNBTlRBIE1PTklDQSBDQSA5MDQwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMjEgICAoaGV4KQkJR2VuZXJhbCBEeW5hbWljcwotMDBBMDIxICAgICAoYmFzZSAxNikJCUdlbmVyYWwgRHluYW1pY3MKLQkJCQlDb21tdW5pY2F0aW9uIFN5c3RlbXMKLQkJCQk3N0EgU3RyZWV0Ci0JCQkJTmVlZGhhbSBIZWlnaHRzIE1BIDAyNDk0LTI4OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTIyICAgKGhleCkJCUNFTlRSRSBGT1IgREVWRUxPUE1FTlQgT0YgQURWQU5DRUQgQ09NUFVUSU5HCi0wMEEwMjIgICAgIChiYXNlIDE2KQkJQ0VOVFJFIEZPUiBERVZFTE9QTUVOVCBPRiBBRFZBTkNFRCBDT01QVVRJTkcKLQkJCQlVTklWRVJTSVRZIE9GIFBPT05BIENBTVBVUwotCQkJCUdBTkVTSCBLSElORCwgUHVuZSAtIDQxMSAwMDggIAotCQkJCUlORElBCi0KLTAwLUEwLTIzICAgKGhleCkJCUFQUExJRUQgQ1JFQVRJVkUgVEVDSE5PTE9HWSwgSU5DLgotMDBBMDIzICAgICAoYmFzZSAxNikJCUFQUExJRUQgQ1JFQVRJVkUgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTI2MjYgTE9NQkFSRFkgTEFORS0tU1RFLiMxMDcKLQkJCQlEQUxMQVMgVFggNzUyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTI0ICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwQTAyNCAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCQVlGUk9OVCBQTEFaQQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0yNSAgIChoZXgpCQlSRURDT00gTEFCUyBJTkMuCi0wMEEwMjUgICAgIChiYXNlIDE2KQkJUkVEQ09NIExBQlMgSU5DLgotCQkJCU9ORSBSRURDT00gQ0VOVEVSCi0JCQkJVklDVE9SIE5ZIDE0NTY0LTA5OTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTI2ICAgKGhleCkJCVRFTERBVCwgUy5BLgotMDBBMDI2ICAgICAoYmFzZSAxNikJCVRFTERBVCwgUy5BLgotCQkJCVBBUlFVRSBURUNOT0xPR0lDTyBNQURSSUQKLQkJCQkyODc2MCBUQUNTIENBTiBUT1MgKE1BRFJJRCkgIAotCQkJCVNQQUlOCi0KLTAwLUEwLTI3ICAgKGhleCkJCUZJUkVQT1dFUiBTWVNURU1TLCBJTkMuCi0wMEEwMjcgICAgIChiYXNlIDE2KQkJRklSRVBPV0VSIFNZU1RFTVMsIElOQy4KLQkJCQkxOTAgSU5ERVBFTkRFTkNFIERSSVZFCi0JCQkJTUVOTE8gUEFSSyBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMjggICAoaGV4KQkJQ09OTkVSIFBFUklQSEVSQUxTCi0wMEEwMjggICAgIChiYXNlIDE2KQkJQ09OTkVSIFBFUklQSEVSQUxTCi0JCQkJMzA2MSBaQU5LRVIgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTIxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTI5ICAgKGhleCkJCUNPVUxURVIgQ09SUE9SQVRJT04KLTAwQTAyOSAgICAgKGJhc2UgMTYpCQlDT1VMVEVSIENPUlBPUkFUSU9OCi0JCQkJMTE4MDAgUy5XLiAxNDdUSCBBVkUuCi0JCQkJTUlBTUkgRkwgMzMxOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTJBICAgKGhleCkJCVRSQU5DRUxMIFNZU1RFTVMKLTAwQTAyQSAgICAgKGJhc2UgMTYpCQlUUkFOQ0VMTCBTWVNURU1TCi0JCQkJMzE4MCBERSBMQSBDUlVaIEJMVkQuLVNURSMyMDAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NC0yNDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0yQiAgIChoZXgpCQlUUkFOU0lUSU9OUyBSRVNFQVJDSCBDT1JQLgotMDBBMDJCICAgICAoYmFzZSAxNikJCVRSQU5TSVRJT05TIFJFU0VBUkNIIENPUlAuCi0JCQkJU0hFTFRFUiBST0NLIExBTkUKLQkJCQlEQU5CVVJZIENUIDA2ODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0yQyAgIChoZXgpCQlpbnRlcldBVkUgQ29tbXVuaWNhdGlvbnMKLTAwQTAyQyAgICAgKGJhc2UgMTYpCQlpbnRlcldBVkUgQ29tbXVuaWNhdGlvbnMKLQkJCQk2NTYgQkFJUiBJU0xBTkQgQkxWRC4tU1RFLiMxMDgKLQkJCQlSRURXT09EIENJVFkgQ0EgOTQwNjMtMjcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMkQgICAoaGV4KQkJMTM5NCBUcmFkZSBBc3NvY2lhdGlvbgotMDBBMDJEICAgICAoYmFzZSAxNikJCTEzOTQgVHJhZGUgQXNzb2NpYXRpb24KLQkJCQkzOTI1IFdFU1QgQlJBS0VSIExBTkUKLQkJCQlBVVNUSU4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTJFICAgKGhleCkJCUJSQU5EIENPTU1VTklDQVRJT05TLCBMVEQuCi0wMEEwMkUgICAgIChiYXNlIDE2KQkJQlJBTkQgQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQlFTlRFUlBSSVNFIEhPVVNFLCBDSElWRVJTIFdBWSwKLQkJCQlISVNUT04sIENBTUJSSURHRSBDQjQgNFpSICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC0yRiAgIChoZXgpCQlQSVJFTExJIENBVkkKLTAwQTAyRiAgICAgKGJhc2UgMTYpCQlQSVJFTExJIENBVkkKLQkJCQlWSUFMRSBTQVJDQSAyMjIKLQkJCQkyMDEyNiBNSUxBTiAgCi0JCQkJSVRBTFkKLQotMDAtQTAtMzAgICAoaGV4KQkJQ0FQVE9SIE5WL1NBCi0wMEEwMzAgICAgIChiYXNlIDE2KQkJQ0FQVE9SIE5WL1NBCi0JCQkJREUgSEVORSAxMwotCQkJCUItMTc4MCBXRU1NRUwKLQkJCQlCRUxHSVVNCi0KLTAwLUEwLTMxICAgKGhleCkJCUhBWkVMVElORSBDT1JQT1JBVElPTiwgTVMgMS0xNwotMDBBMDMxICAgICAoYmFzZSAxNikJCUhBWkVMVElORSBDT1JQT1JBVElPTiwgTVMgMS0xNwotCQkJCTQ1MCBFLiBQVUxBU0tJIFJPQUQKLQkJCQlHUkVFTkxBV04gTlkgMTE3NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTMyICAgKGhleCkJCUdFUyBTSU5HQVBPUkUgUFRFLiBMVEQuCi0wMEEwMzIgICAgIChiYXNlIDE2KQkJR0VTIFNJTkdBUE9SRSBQVEUuIExURC4KLQkJCQkxNCBTVU5HRUkgS0FEVVQgQVZFTlVFCi0JCQkJU0lOR0FQT1JFIDI1NzIKLQkJCQlTSU5HQVBPUkUKLQotMDAtQTAtMzMgICAoaGV4KQkJaW1jIE1lQnN5c3RlbWUgR21iSAotMDBBMDMzICAgICAoYmFzZSAxNikJCWltYyBNZUJzeXN0ZW1lIEdtYkgKLQkJCQlWT0xUQVNUUkFTU0UgNQotCQkJCUQtMTMzNTUgQkVSTElOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLTM0ICAgKGhleCkJCUFYRUwKLTAwQTAzNCAgICAgKGJhc2UgMTYpCQlBWEVMCi0JCQkJMTYsIEFWRU5VRSBEVSBRVUVCRUMKLQkJCQlaLkEuIENPVVJUQUJPRVVGIDkxOTYyIExFUyBVTElTCi0JCQkJRlJBTkNFCi0KLTAwLUEwLTM1ICAgKGhleCkJCUNZTElOSyBDT1JQT1JBVElPTgotMDBBMDM1ICAgICAoYmFzZSAxNikJCUNZTElOSyBDT1JQT1JBVElPTgotCQkJCTMxMzEgSkFZIFNUUkVFVAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0zNiAgIChoZXgpCQlBUFBMSUVEIE5FVFdPUksgVEVDSE5PTE9HWQotMDBBMDM2ICAgICAoYmFzZSAxNikJCUFQUExJRUQgTkVUV09SSyBURUNITk9MT0dZCi0JCQkJMzE5IExJVFRMRVRPTiBST0FELS1TVEUgIzEwMQotCQkJCVdFU1RGT1JEIE1BIDAxODg2LTQxMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTM3ICAgKGhleCkJCU1pbmRyYXkgRFMgVVNBLCBJbmMuCi0wMEEwMzcgICAgIChiYXNlIDE2KQkJTWluZHJheSBEUyBVU0EsIEluYy4KLQkJCQk4MDAgTWFjYXJ0aHVyIEJsdmQuCi0JCQkJTWFod2FoIE5KIDA3NDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0zOCAgIChoZXgpCQlFTUFJTCBFTEVDVFJPTklDUwotMDBBMDM4ICAgICAoYmFzZSAxNikJCUVNQUlMIEVMRUNUUk9OSUNTCi0JCQkJUC5PLiBCT1ggMTU0Ci0JCQkJTU9PUk9PTEJBUkssIDMxMzggIAotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC0zOSAgIChoZXgpCQlST1NTIFRFQ0hOT0xPR1ksIElOQy4KLTAwQTAzOSAgICAgKGJhc2UgMTYpCQlST1NTIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk1MzE2IEhXWSAyOTAgV0VTVCAtIFNURS4gIzUwMAotCQkJCUFVU1RJTiBUWCA3ODczNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtM0EgICAoaGV4KQkJS1VCT1RFSyBDT1JQT1JBVElPTgotMDBBMDNBICAgICAoYmFzZSAxNikJCUtVQk9URUsgQ09SUE9SQVRJT04KLQkJCQk1NiBOSVNISUFLRVRBLUNITywgSElHQVNISUtVSk8KLQkJCQlNSU5BTUktS1UsIEtZT1RPIDYwMQotCQkJCUpBUEFOCi0KLTAwLUEwLTNCICAgKGhleCkJCVRPU0hJTiBFTEVDVFJJQyBDTy4sIExURC4KLTAwQTAzQiAgICAgKGJhc2UgMTYpCQlUT1NISU4gRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJM0ZMLiBSSVZFUi1TVE9ORSAzUkQuIEJMRy4yMzQKLQkJCQlNSVpPTk9LVUNISSwgVEFLQVRTVS1LViwgS0FXQVNBS0ktU0hJLAotCQkJCTIxMyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUEwLTNDICAgKGhleCkJCUVHJkcgTlVDTEVBUiBJTlNUUlVNRU5UUwotMDBBMDNDICAgICAoYmFzZSAxNikJCUVHJkcgTlVDTEVBUiBJTlNUUlVNRU5UUwotCQkJCTEwMCBNSURMQU5EIFJPQUQKLQkJCQlPQUsgUklER0UgVE4gMzc4MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTNEICAgKGhleCkJCU9QVE8tMjIKLTAwQTAzRCAgICAgKGJhc2UgMTYpCQlPUFRPLTIyCi0JCQkJNDMwNDQgQlVTSU5FU1MgUEFSSyBEUi4KLQkJCQlURU1FQ1VMQSBDQSA5MjU5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtM0UgICAoaGV4KQkJQVRNIEZPUlVNCi0wMEEwM0UgICAgIChiYXNlIDE2KQkJQVRNIEZPUlVNCi0JCQkJV09STERXSURFIEhFQURRVUFSVEVSUwotCQkJCTMwMyBWSU5UQUdFIFBBUksgRFJJVkUKLQkJCQlGT1NURVIgQ0lUWSBDQSA5NDQwNC0xMTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0zRiAgIChoZXgpCQlDT01QVVRFUiBTT0NJRVRZIE1JQ1JPUFJPQ0VTU09SICYgTUlDUk9QUk9DRVNTT1IgU1RBTkRBUkRTIEMKLTAwQTAzRiAgICAgKGJhc2UgMTYpCQlDT01QVVRFUiBTT0NJRVRZIE1JQ1JPUFJPQ0VTU09SICYgTUlDUk9QUk9DRVNTT1IgU1RBTkRBUkRTIEMKLQkJCQklIEFQUExFIENPTVBVVEVSLCBJTkMuCi0JCQkJIDEgSU5GSU5JVEUgTE9PUCwKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTQwICAgKGhleCkJCUFQUExFIENPTVBVVEVSCi0wMEEwNDAgICAgIChiYXNlIDE2KQkJQVBQTEUgQ09NUFVURVIKLQkJCQkyMDY1MCBWQUxMRVkgR1JFRU4gRFJJVkUKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTQxICAgKGhleCkJCUlORklDT04KLTAwQTA0MSAgICAgKGJhc2UgMTYpCQlJTkZJQ09OCi0JCQkJMiBUZWNobm9sb2d5IFBsYWNlCi0JCQkJRS4gU3lyYWN1c2UgTlkgMTMwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTQyICAgKGhleCkJCVNQVVIgUFJPRFVDVFMgQ09SUC4KLTAwQTA0MiAgICAgKGJhc2UgMTYpCQlTUFVSIFBST0RVQ1RTIENPUlAuCi0JCQkJOTI4OCBXLiBFTUVSQUxEIFNUUkVFVAotCQkJCUJPSVNFIElEIDgzNzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC00MyAgIChoZXgpCQlBTUVSSUNBTiBURUNITk9MT0dZIExBQlMsIElOQy4KLTAwQTA0MyAgICAgKGJhc2UgMTYpCQlBTUVSSUNBTiBURUNITk9MT0dZIExBQlMsIElOQy4KLQkJCQkxMTUgV0VTVCAzUkQgU1RSRUVUCi0JCQkJTE9XRVIgTEVWRUwKLQkJCQlTVEVWRU5TVklMTEUgTVQgNTk4NzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTQ0ICAgKGhleCkJCU5UVCBJVCBDTy4sIExURC4KLTAwQTA0NCAgICAgKGJhc2UgMTYpCQlOVFQgSVQgQ08uLCBMVEQuCi0JCQkJCi0JCQkJS0FOTkFJLVdJU0UgQkxERy4sIDItOS0xIEZVUk9VLUNITywgTkFLQQotCQkJCTIzMSAKLQkJCQlKQVBBTgotCi0wMC1BMC00NSAgIChoZXgpCQlQSE9FTklYIENPTlRBQ1QgR01CSCAmIENPLgotMDBBMDQ1ICAgICAoYmFzZSAxNikJCVBIT0VOSVggQ09OVEFDVCBHTUJIICYgQ08uCi0JCQkJUE9TVEZBQ0ggMTM0MQotCQkJCUQtMzI4MTkgQkxPTUJFUkcKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1BMC00NiAgIChoZXgpCQlTQ0lURVggQ09SUC4gTFRELgotMDBBMDQ2ICAgICAoYmFzZSAxNikJCVNDSVRFWCBDT1JQLiBMVEQuCi0JCQkJUC5PLkJPWCAzMzAKLQkJCQlIRVJaTElBIEIgNDYxMDMKLQkJCQlJU1JBRUwKLQotMDAtQTAtNDcgICAoaGV4KQkJSU5URUdSQVRFRCBGSVRORVNTIENPUlAuCi0wMEEwNDcgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBGSVRORVNTIENPUlAuCi0JCQkJMjYgNlRIIFNUUkVFVAotCQkJCVNUQU1GT1JEIENUIDA2OTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC00OCAgIChoZXgpCQlRVUVTVEVDSCwgTFRELgotMDBBMDQ4ICAgICAoYmFzZSAxNikJCVFVRVNURUNILCBMVEQuCi0JCQkJRUFTVEhFQVRIIEFWRU5VRQotCQkJCVdPS0lOR0hBTQotCQkJCUJFUktTLCBSRzExIDJQUCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtNDkgICAoaGV4KQkJRElHSVRFQ0ggSU5EVVNUUklFUywgSU5DLgotMDBBMDQ5ICAgICAoYmFzZSAxNikJCURJR0lURUNIIElORFVTVFJJRVMsIElOQy4KLQkJCQlQTyBCT1ggMjI2NwotCQkJCTU1IEtFTk9TSUEgQVZFTlVFCi0JCQkJREFOQlVSWSBDVCAwNjgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNEEgICAoaGV4KQkJTklTU0hJTiBFTEVDVFJJQyBDTy4sIExURC4KLTAwQTA0QSAgICAgKGJhc2UgMTYpCQlOSVNTSElOIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTUsIE1FT1RPR09TSEksIE1VVFNVU0hJLAotCQkJCVNISUtBVFNVLUNZTywgTklTSElLQVNVR0FJLAotCQkJCUFJQ0hJIDQ4MSAgCi0JCQkJSkFQQU4KLQotMDAtQTAtNEIgICAoaGV4KQkJVEZMIExBTiBJTkMuCi0wMEEwNEIgICAgIChiYXNlIDE2KQkJVEZMIExBTiBJTkMuCi0JCQkJOUYsIE5PLiA0OTkgQ0hVTkcgQ0hFTkcgUk9BRAotCQkJCVNISUgtTElOIERJU1RSSUNULCBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQTAtNEMgICAoaGV4KQkJSU5OT1ZBVElWRSBTWVNURU1TICYgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEEwNEMgICAgIChiYXNlIDE2KQkJSU5OT1ZBVElWRSBTWVNURU1TICYgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNDg1MTEgV0FSTSBTUFJJTkdTIEJMVkQuCi0JCQkJU1VJVEUgICMgMjExQwotCQkJCUZSRU1PTlQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTREICAgKGhleCkJCUVEQSBJTlNUUlVNRU5UUywgSU5DLgotMDBBMDREICAgICAoYmFzZSAxNikJCUVEQSBJTlNUUlVNRU5UUywgSU5DLgotCQkJCTQgVEhPUk5DTElGRkUgUEFSSyBEUklWRQotCQkJCVRPUk9OVE8sIE9OVEFSSU8KLQkJCQlNNEggMUgxCi0JCQkJQ0FOQURBCi0KLTAwLUEwLTRFICAgKGhleCkJCVZPRUxLRVIgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEEwNEUgICAgIChiYXNlIDE2KQkJVk9FTEtFUiBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkyMiBORVcgQk9TVE9OIENPVVJUCi0JCQkJREFOVklMTEUgQ0EgOTQ1MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTRGICAgKGhleCkJCUFNRVJJVEVDIENPUlAuCi0wMEEwNEYgICAgIChiYXNlIDE2KQkJQU1FUklURUMgQ09SUC4KLQkJCQk3NjAgQVJST1cgR1JBTkQgQ0lSQ0xFCi0JCQkJQ09WSU5BIENBIDkxNzIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC01MCAgIChoZXgpCQlDWVBSRVNTIFNFTUlDT05EVUNUT1IKLTAwQTA1MCAgICAgKGJhc2UgMTYpCQlDWVBSRVNTIFNFTUlDT05EVUNUT1IKLQkJCQkzOTAxIE5PUlRIIEZJUlNUIFNUUkVFVAotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC01MSAgIChoZXgpCQlBTkdJQSBDT01NVU5JQ0FUSU9OUy4gSU5DLgotMDBBMDUxICAgICAoYmFzZSAxNikJCUFOR0lBIENPTU1VTklDQVRJT05TLiBJTkMuCi0JCQkJNDQxIEVBU1QgQkFZIEJMVkQuCi0JCQkJUFJPVk8gVVRBSCA4NDYwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNTIgICAoaGV4KQkJU1RBTklMSVRFIEVMRUNUUk9OSUNTIFBUWS4gTFRECi0wMEEwNTIgICAgIChiYXNlIDE2KQkJU1RBTklMSVRFIEVMRUNUUk9OSUNTIFBUWS4gTFRECi0JCQkJNDI0LCBMQU5FIENPVkUgUk9BRAotCQkJCU5PUlRIIFJZREUgTlNXIDIxMTMgIAotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC01MyAgIChoZXgpCQlDT01QQUNUIERFVklDRVMsIElOQy4KLTAwQTA1MyAgICAgKGJhc2UgMTYpCQlDT01QQUNUIERFVklDRVMsIElOQy4KLQkJCQkxNjc5NSBMQVJLIEFWRU5VRQotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNTQgICAoaGV4KQkJUFJJVkFURQotMDBBMDU0ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC1BMC01NSAgIChoZXgpCQlEYXRhIERldmljZSBDb3Jwb3JhdGlvbgotMDBBMDU1ICAgICAoYmFzZSAxNikJCURhdGEgRGV2aWNlIENvcnBvcmF0aW9uCi0JCQkJMTA1IFdpbGJ1ciBQbGFjZQotCQkJCUJvaGVtaWEgTlkgMTE3MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTU2ICAgKGhleCkJCU1JQ1JPUFJPU1MKLTAwQTA1NiAgICAgKGJhc2UgMTYpCQlNSUNST1BST1NTCi0JCQkJMzMsIFJVRSBHQU5UT0lTCi0JCQkJNTkwMDAgTElMTEUgIAotCQkJCUZSQU5DRQotCi0wMC1BMC01NyAgIChoZXgpCQlMQU5DT00gU3lzdGVtcyBHbWJICi0wMEEwNTcgICAgIChiYXNlIDE2KQkJTEFOQ09NIFN5c3RlbXMgR21iSAotCQkJCUFkZW5hdWVyIFN0ci4yMCAvQjIKLQkJCQlELTUyMDcwIEFBQ0hFTgotCQkJCVf8cnNlbGVuICA1MjE0NgotCQkJCUdFUk1BTlkKLQotMDAtQTAtNTggICAoaGV4KQkJR0xPUlksIExURC4KLTAwQTA1OCAgICAgKGJhc2UgMTYpCQlHTE9SWSwgTFRELgotCQkJCTEtMy0xIFNISU1PVEVOTywgSElNRUpJCi0JCQkJSFlPR08gUFJFRi4gNjcwICAKLQkJCQlKQVBBTgotCi0wMC1BMC01OSAgIChoZXgpCQlIQU1JTFRPTiBIQUxMTUFSSwotMDBBMDU5ICAgICAoYmFzZSAxNikJCUhBTUlMVE9OIEhBTExNQVJLCi0JCQkJMjEwNSBMVU5EWSBBVkVOVUUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNUEgICAoaGV4KQkJS09GQVggSU1BR0UgUFJPRFVDVFMKLTAwQTA1QSAgICAgKGJhc2UgMTYpCQlLT0ZBWCBJTUFHRSBQUk9EVUNUUwotCQkJCTMgSkVOTkVSIFNUUkVFVAotCQkJCUlSVklORSBDQSA5MjcxOC0zODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC01QiAgIChoZXgpCQlNQVJRVUlQLCBJTkMuCi0wMEEwNUIgICAgIChiYXNlIDE2KQkJTUFSUVVJUCwgSU5DLgotCQkJCTEyNDUgRS4gV0FTSElOR1RPTiBBVkUuCi0JCQkJTUFESVNPTiBXSSA1MzcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNUMgICAoaGV4KQkJSU5WRU5UT1JZIENPTlZFUlNJT04sIElOQy4vCi0wMEEwNUMgICAgIChiYXNlIDE2KQkJSU5WRU5UT1JZIENPTlZFUlNJT04sIElOQy4vCi0JCQkJTkVLT1RFQ0ggRElWSVNJT04KLQkJCQkxMDIgVElERSBNSUxMIFJPQUQgLVNVSVRFICMgNgotCQkJCUhBTVBUT04gTkggMDM4NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTVEICAgKGhleCkJCUNTIENPTVBVVEVSIFNZU1RFTUUgR21iSAotMDBBMDVEICAgICAoYmFzZSAxNikJCUNTIENPTVBVVEVSIFNZU1RFTUUgR21iSAotCQkJCUlTQVJTVFJBU1NFIDMsCi0JCQkJODIwNjUgQkFJRVJCUlVOTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1BMC01RSAgIChoZXgpCQlNWVJJQUQgTE9HSUMgSU5DLgotMDBBMDVFICAgICAoYmFzZSAxNikJCU1ZUklBRCBMT0dJQyBJTkMuCi0JCQkJMTEwOSBTUFJJTkcgU1RSRUVUCi0JCQkJU0lMVkVSIFNQUklORyBNRCAyMDkxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNUYgICAoaGV4KQkJQlRHIEVsZWN0cm9uaWNzIERlc2lnbiBCVgotMDBBMDVGICAgICAoYmFzZSAxNikJCUJURyBFbGVjdHJvbmljcyBEZXNpZ24gQlYKLQkJCQlQLk8uIEJveCAxNTQzCi0JCQkJMzI2MAotCQkJCUJBIE91ZCBCZWlqZXJsYW5kICAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC1BMC02MCAgIChoZXgpCQlBQ0VSIFBFUklQSEVSQUxTLCBJTkMuCi0wMEEwNjAgICAgIChiYXNlIDE2KQkJQUNFUiBQRVJJUEhFUkFMUywgSU5DLgotCQkJCTlGLCAxMzUgQ0hJQU4gS1VPIE4uIFJELiBTRUMgMgotCQkJCVRBSVBFSSwgIDEwNDc5Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1BMC02MSAgIChoZXgpCQlQVVJJVEFOIEJFTk5FVFQKLTAwQTA2MSAgICAgKGJhc2UgMTYpCQlQVVJJVEFOIEJFTk5FVFQKLQkJCQkyMjAwIEZBUkFEQVkgQVZFTlVFCi0JCQkJQ0FSTFNCQUQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTYyICAgKGhleCkJCUFFUyBQUk9EQVRBCi0wMEEwNjIgICAgIChiYXNlIDE2KQkJQUVTIFBST0RBVEEKLQkJCQkyNDkgQkFMQ0FUVEEgUk9BRAotCQkJCUJBTENBVFRBCi0JCQkJV0VTVEVSTiBBVVNUUkFMSUEgNjAyMQotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC02MyAgIChoZXgpCQlKUkwgU1lTVEVNUywgSU5DLgotMDBBMDYzICAgICAoYmFzZSAxNikJCUpSTCBTWVNURU1TLCBJTkMuCi0JCQkJODMwNSBIV1kgNzEgV0VTVAotCQkJCUFVU1RJTiBUWCA3ODczNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNjQgICAoaGV4KQkJS1ZCL0FOQUxFQ1QKLTAwQTA2NCAgICAgKGJhc2UgMTYpCQlLVkIvQU5BTEVDVAotCQkJCTk0MjAgSkVST05JTU8gUk9BRAotCQkJCUlSVklORSBDQSA5MjcxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNjUgICAoaGV4KQkJU3ltYW50ZWMgQ29ycG9yYXRpb24KLTAwQTA2NSAgICAgKGJhc2UgMTYpCQlTeW1hbnRlYyBDb3Jwb3JhdGlvbgotCQkJCTIwMzMwIFN0ZXZlbnMgQ3JlZWsgQmx2ZC4KLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTY2ICAgKGhleCkJCUlTQSBDTy4sIExURC4KLTAwQTA2NiAgICAgKGJhc2UgMTYpCQlJU0EgQ08uLCBMVEQuCi0JCQkJU0hJTkpVS1UgTEFNQkRBWCBCTERHLiA1Ri4sCi0JCQkJMi00LTEyIE9LVUJPLCBTSElOSlVLVS1LVSBUT0tZTwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQTAtNjcgICAoaGV4KQkJTkVUV09SSyBTRVJWSUNFUyBHUk9VUAotMDBBMDY3ICAgICAoYmFzZSAxNikJCU5FVFdPUksgU0VSVklDRVMgR1JPVVAKLQkJCQkzNDIxIENPTU1JU1NJT04gQ09VUlQtU1RFICMyMDIKLQkJCQlXT09EQlJJREdFIFZBIDIyMTkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC02OCAgIChoZXgpCQlCSFAgTElNSVRFRAotMDBBMDY4ICAgICAoYmFzZSAxNikJCUJIUCBMSU1JVEVECi0JCQkJR1BPIEJPWCA4NkEKLQkJCQlNRUxCT1VSTkUgMzAwMSBWSUNUT1JJQQotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC02OSAgIChoZXgpCQlTeW1tZXRyaWNvbSwgSW5jLgotMDBBMDY5ICAgICAoYmFzZSAxNikJCVN5bW1ldHJpY29tLCBJbmMuCi0JCQkJMzc1MCBXZXN0d2luZCBCbHZkLgotCQkJCVNhbnRhIFJvc2EgQ0EgOTU0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTZBICAgKGhleCkJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi0wMEEwNkEgICAgIChiYXNlIDE2KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMjcgSmV0cGxleCBDaXJjbGUKLQkJCQlNYWRpc29uIEFMIDM1NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC02QiAgIChoZXgpCQlETVMgRE9SU0NIIE1JS1JPU1lTVEVNIEdNQkgKLTAwQTA2QiAgICAgKGJhc2UgMTYpCQlETVMgRE9SU0NIIE1JS1JPU1lTVEVNIEdNQkgKLQkJCQlIT0xNTFVFQ0sgMTMtMTUKLQkJCQlELTI0OTcyIFNURUlOQkVSUUtJUkNIRQotCQkJCUdFUk1BTlkKLQotMDAtQTAtNkMgICAoaGV4KQkJU0hJTkRFTkdFTiBFTEVDVFJJQyBNRkcuIENPLiwgTFRELgotMDBBMDZDICAgICAoYmFzZSAxNikJCVNISU5ERU5HRU4gRUxFQ1RSSUMgTUZHLiBDTy4sIExURC4KLQkJCQkxMC0xMywgTUlOQU1JLUNITywgSEFOTk9VLUNJVFkKLQkJCQlTQUlUQU1BIDM1NyAgCi0JCQkJSk9SREFOCi0KLTAwLUEwLTZEICAgKGhleCkJCU1BTk5FU01BTk4gVEFMTFkgQ09SUE9SQVRJT04KLTAwQTA2RCAgICAgKGJhc2UgMTYpCQlNQU5ORVNNQU5OIFRBTExZIENPUlBPUkFUSU9OCi0JCQkJUC5PLiBCT1ggOTcwMTgKLQkJCQlLRU5UIFdBIDk4MDY0LTk3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTZFICAgKGhleCkJCUFVU1RST04sIElOQy4KLTAwQTA2RSAgICAgKGJhc2UgMTYpCQlBVVNUUk9OLCBJTkMuCi0JCQkJUC5PLiBCT1ggMTQ3NjYKLQkJCQlBVVNUSU4gVFggNzg3NjEtNDc2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNkYgICAoaGV4KQkJVEhFIEFQUENPTiBHUk9VUCwgSU5DLgotMDBBMDZGICAgICAoYmFzZSAxNikJCVRIRSBBUFBDT04gR1JPVVAsIElOQy4KLQkJCQkyMyBSSUNITU9ORCBTVFJFRVQKLQkJCQlST0NIRVNURVIgTlkgMTQ2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTcwICAgKGhleCkJCUNPQVNUQ09NCi0wMEEwNzAgICAgIChiYXNlIDE2KQkJQ09BU1RDT00KLQkJCQkxMTUxIEhBUkJPUiBCQVkgUEFSS1dBWQotCQkJCUFMQU1FREEgQ0EgOTQ1MDItNjUxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNzEgICAoaGV4KQkJVklERU8gTE9UVEVSWSBURUNITk9MT0dJRVMsSU5DCi0wMEEwNzEgICAgIChiYXNlIDE2KQkJVklERU8gTE9UVEVSWSBURUNITk9MT0dJRVMsSU5DCi0JCQkJMjMxMSBTT1VUSCA3VEggQVZFTlVFCi0JCQkJQk9aRU1BTiBNVCA1OTcxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNzIgICAoaGV4KQkJT1ZBVElPTiBTWVNURU1TIExURC4KLTAwQTA3MiAgICAgKGJhc2UgMTYpCQlPVkFUSU9OIFNZU1RFTVMgTFRELgotCQkJCUdSRUFUIEhBU0VMRVkgVFJBRC4gRVNULgotCQkJCUdSRUFUIEhBU0VMRVksICBPWEZPUkRTSElSRSBPWDkgN1BGCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC03MyAgIChoZXgpCQlDT00yMSwgSU5DLgotMDBBMDczICAgICAoYmFzZSAxNikJCUNPTTIxLCBJTkMuCi0JCQkJMjExMyBMQU5ESU5HUyBEUklWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTc0ICAgKGhleCkJCVBFUkNFUFRJT04gVEVDSE5PTE9HWQotMDBBMDc0ICAgICAoYmFzZSAxNikJCVBFUkNFUFRJT04gVEVDSE5PTE9HWQotCQkJCTQwIFNIQVdNVVQgUk9BRAotCQkJCUNBTlRPTiBNQSAwMjAyMS0xNDA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03NSAgIChoZXgpCQlNSUNST04gVEVDSE5PTE9HWSwgSU5DLgotMDBBMDc1ICAgICAoYmFzZSAxNikJCU1JQ1JPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJODAwMCBTLiBGZWRlcmFsIFdheQotCQkJCVAuTy4gQm94IDYKLQkJCQlCb2lzZSBJRCA4MzcwNy0wMDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03NiAgIChoZXgpCQlDQVJEV0FSRSBMQUIsIElOQy4KLTAwQTA3NiAgICAgKGJhc2UgMTYpCQlDQVJEV0FSRSBMQUIsIElOQy4KLQkJCQkyODUgU09CUkFOVEUgV0FZLCBTVEUuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03NyAgIChoZXgpCQlGVUpJVFNVIE5FWElPTiwgSU5DLgotMDBBMDc3ICAgICAoYmFzZSAxNikJCUZVSklUU1UgTkVYSU9OLCBJTkMuCi0JCQkJMjg5IEdSRUFUIFJPQUQKLQkJCQlBQ1RPTiBNQSAwMTcyMC00NzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03OCAgIChoZXgpCQlNYXJjb25pIENvbW11bmljYXRpb25zCi0wMEEwNzggICAgIChiYXNlIDE2KQkJTWFyY29uaSBDb21tdW5pY2F0aW9ucwotCQkJCTEwMDAgRm9yZSBEcml2ZQotCQkJCVdhcnJlbmRhbGUgUEEgMTUwODYtNzUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNzkgICAoaGV4KQkJQUxQUyBFTEVDVFJJQyAoVVNBKSwgSU5DLgotMDBBMDc5ICAgICAoYmFzZSAxNikJCUFMUFMgRUxFQ1RSSUMgKFVTQSksIElOQy4KLQkJCQkzNTUzIE5PUlRIIDFTVCBTVFJFRVQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtN0EgICAoaGV4KQkJQURWQU5DRUQgUEVSSVBIRVJBTFMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEEwN0EgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgUEVSSVBIRVJBTFMgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJCi0JCQkJS09KSU1BIEJVSUxESU5HLCAxMDMxIEZVSklTQVdBCi0JCQkJRlVKSVNBV0EtU0hJLCBLQU5BR0FXQS1LRU4gMjUxICAKLQkJCQlKQVBBTgotCi0wMC1BMC03QiAgIChoZXgpCQlEQVdOIENPTVBVVEVSIElOQ09SUE9SQVRJT04KLTAwQTA3QiAgICAgKGJhc2UgMTYpCQlEQVdOIENPTVBVVEVSIElOQ09SUE9SQVRJT04KLQkJCQk2IEtFWFVFWVVBTiBTT1VUSCBST0FECi0JCQkJWkhPTkcgR1VBTiBDVU4gQkVJSklORyAxMDAwODAKLQkJCQlDSElOQQotCi0wMC1BMC03QyAgIChoZXgpCQlUT05ZQU5HIE5ZTE9OIENPLiwgTFRELgotMDBBMDdDICAgICAoYmFzZSAxNikJCVRPTllBTkcgTllMT04gQ08uLCBMVEQuCi0JCQkJRUxFQ1RST05JQyBSRVNFQVJDSCBMQUIKLQkJCQkxODMsIEhPR0UtRE9ORywgRE9OR0FOLUdVCi0JCQkJQU5ZQU5HLUNJVFksIEtZVU5HS0ktRE8gNDMwLTA4MCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUEwLTdEICAgKGhleCkJCVNFRVEgVEVDSE5PTE9HWSwgSU5DLgotMDBBMDdEICAgICAoYmFzZSAxNikJCVNFRVEgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTQ3MTMxIEJBWVNJREUgUEFSS1dBWQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTdFICAgKGhleCkJCUFWSUQgVEVDSE5PTE9HWSwgSU5DLgotMDBBMDdFICAgICAoYmFzZSAxNikJCUFWSUQgVEVDSE5PTE9HWSwgSU5DLgotCQkJCU1FVFJPUE9MSVRBTiBURUNITk9MT0dZIFBBUksKLQkJCQlPTkUgUEFSSyBXRVNUCi0JCQkJVEVXS1NCVVJZIE1BIDAxODc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03RiAgIChoZXgpCQlHU00tU1lOVEVMLCBMVEQuCi0wMEEwN0YgICAgIChiYXNlIDE2KQkJR1NNLVNZTlRFTCwgTFRELgotCQkJCVZJQ1RPUklBIFdPUktTLCBRVUVFTlMgTUlMTCBSRAotCQkJCUhVRERFUlNGSUVMRCBXRVNUIFlPUktTSElSRQotCQkJCUhEMSAzUEcgRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLTgwICAgKGhleCkJCVNCRSwgSW5jLgotMDBBMDgwICAgICAoYmFzZSAxNikJCVNCRSwgSW5jLgotCQkJCTQwMDAgRXhlY3V0aXZlIFBhcmt3YXkKLQkJCQlTdWl0ZSAyMDAKLQkJCQlTYW4gUmFtb24gQ0EgOTQ1ODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTgxICAgKGhleCkJCUFMQ0FURUwgREFUQSBORVRXT1JLUwotMDBBMDgxICAgICAoYmFzZSAxNikJCUFMQ0FURUwgREFUQSBORVRXT1JLUwotCQkJCTEyNTAyIFNVTlJJU0UgVkFMTEVZIERSSVZFCi0JCQkJUkVTVE9OIFZBIDIyMDk2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC04MiAgIChoZXgpCQlOS1QgRUxFS1RST05JSyBBL1MKLTAwQTA4MiAgICAgKGJhc2UgMTYpCQlOS1QgRUxFS1RST05JSyBBL1MKLQkJCQlOS1QgQUxMRSA4NQotCQkJCURLLTI2MDUgQlJPTkRCWQotCQkJCURFTk1BUksKLQotMDAtQTAtODMgICAoaGV4KQkJQVNJTU1QSE9OWSBUVVJLRVkKLTAwQTA4MyAgICAgKGJhc2UgMTYpCQlBU0lNTVBIT05ZIFRVUktFWQotCQkJCUVMRUNUUk9OSUNTLCBMVEQuCi0JCQkJIzE2MC4yNjAgLSA2NjUxIEVMTUJSSURHRSBXQVkgUklDSE1PTkQgQgotCQkJCVY3QyA0TjEKLQkJCQlDQU5BREEKLQotMDAtQTAtODQgICAoaGV4KQkJRGF0YXBsZXggUHR5IEx0ZAotMDBBMDg0ICAgICAoYmFzZSAxNikJCURhdGFwbGV4IFB0eSBMdGQKLQkJCQlMZXZlbCAyLCA3MSBFcHBpbmcgUmQsCi0JCQkJTk9SVEggIFJZREUgTlNXIDIxMTMKLQkJCQlBVVNUUkFMSUEKLQotMDAtQTAtODUgICAoaGV4KQkJUFJJVkFURQotMDBBMDg1ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC1BMC04NiAgIChoZXgpCQlBTUJFUiBXQVZFIFNZU1RFTVMsIElOQy4KLTAwQTA4NiAgICAgKGJhc2UgMTYpCQlBTUJFUiBXQVZFIFNZU1RFTVMsIElOQy4KLQkJCQk0MDMgTUFTU0FDSFVTRVRUUyBBVkVOVUUKLQkJCQlTVUlURSAjMjAyCi0JCQkJQUNUT04gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTg3ICAgKGhleCkJCVphcmxpbmsgU2VtaWNvbmR1Y3RvciBMdGQuCi0wMEEwODcgICAgIChiYXNlIDE2KQkJWmFybGluayBTZW1pY29uZHVjdG9yIEx0ZC4KLQkJCQlDaGVuZXkgTWFub3IsIFN3aW5kb24KLQkJCQlXaWx0c2hpcmUgU04yIDJRVyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtODggICAoaGV4KQkJRVNTRU5USUFMIENPTU1VTklDQVRJT05TCi0wMEEwODggICAgIChiYXNlIDE2KQkJRVNTRU5USUFMIENPTU1VTklDQVRJT05TCi0JCQkJNDM3NCBBTEVYQU5ERVIgQkxWRC4gTkUtU1RFCi0JCQkJQUxCVVFVRVJRVUUgTk0gODcxMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTg5ICAgKGhleCkJCVhQT0lOVCBURUNITk9MT0dJRVMsIElOQy4KLTAwQTA4OSAgICAgKGJhc2UgMTYpCQlYUE9JTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJOTAyIENMSU5UIE1PT1JFIFJELi1TVEUjMTMyCi0JCQkJQk9DQSBSQVRPTiBGTCAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOEEgICAoaGV4KQkJQlJPT0tUUk9VVCBURUNITk9MT0dZLCBJTkMuCi0wMEEwOEEgICAgIChiYXNlIDE2KQkJQlJPT0tUUk9VVCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTQ0IEdPVUxEIFNUUkVFVC0gU1VJVEUgIzIwMAotCQkJCU5FRURIQU0gTUEgMDIxOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLThCICAgKGhleCkJCUFTVE9OIEVMRUNUUk9OSUMgREVTSUdOUyBMVEQuCi0wMEEwOEIgICAgIChiYXNlIDE2KQkJQVNUT04gRUxFQ1RST05JQyBERVNJR05TIExURC4KLQkJCQkxMjMvMTI3IERFRVBDVVQgQlJJREdFIFJPQUQKLQkJCQlERUVQQ1VULCAgQ0FNQkVSTEVZIFNVUlJFWSwgR1UxNiA2U0QKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtOEMgICAoaGV4KQkJTXVsdGlNZWRpYSBMQU5zLCBJbmMuCi0wMEEwOEMgICAgIChiYXNlIDE2KQkJTXVsdGlNZWRpYSBMQU5zLCBJbmMuCi0JCQkJNTYwMCBFWEVDVVRJVkUgQ0VOVEVSIERSSVZFCi0JCQkJU1VJVEUgIzMxMgotCQkJCUNIQVJMT1RURSBOQyAyODIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOEQgICAoaGV4KQkJSkFDT01PIENPUlBPUkFUSU9OCi0wMEEwOEQgICAgIChiYXNlIDE2KQkJSkFDT01PIENPUlBPUkFUSU9OCi0JCQkJMjY5MDAgRS4gUElOSyBISUxMIFJPQUQKLQkJCQlJTkRFUEVOREVOQ0UgTU8gNjQwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLThFICAgKGhleCkJCUNoZWNrIFBvaW50IFNvZnR3YXJlIFRlY2hub2xvZ2llcwotMDBBMDhFICAgICAoYmFzZSAxNikJCUNoZWNrIFBvaW50IFNvZnR3YXJlIFRlY2hub2xvZ2llcwotCQkJCTgzMzMgUmlkZ2Vwb2ludCBEci4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlJcnZpbmcgVFggNzUwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLThGICAgKGhleCkJCURFU0tORVQgU1lTVEVNUywgSU5DLgotMDBBMDhGICAgICAoYmFzZSAxNikJCURFU0tORVQgU1lTVEVNUywgSU5DLgotCQkJCTgwIEJVU0lORVNTIFBBUksgRFJJVkUKLQkJCQlBUk1PTksgTlkgMTA1MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTkwICAgKGhleCkJCVRpbWVTdGVwIENvcnBvcmF0aW9uCi0wMEEwOTAgICAgIChiYXNlIDE2KQkJVGltZVN0ZXAgQ29ycG9yYXRpb24KLQkJCQkzNTkgVEVSUlkgRk9YIERSSVZFCi0JCQkJS0FOQVRBLCBPTlRBUklPIEsySyAyRTcgIAotCQkJCUNBTkFEQQotCi0wMC1BMC05MSAgIChoZXgpCQlBUFBMSUNPTSBJTlRFUk5BVElPTkFMCi0wMEEwOTEgICAgIChiYXNlIDE2KQkJQVBQTElDT00gSU5URVJOQVRJT05BTAotCQkJCTQzLCBSVUUgTUFaQUdSQU4KLQkJCQk3NjMyMCBDQVVERUJFQy1MRVMtRUxCRVVGCi0JCQkJRlJBTkNFCi0KLTAwLUEwLTkyICAgKGhleCkJCUguIEJPTExNQU5OIE1BTlVGQUNUVVJFUlMsIExURAotMDBBMDkyICAgICAoYmFzZSAxNikJCUguIEJPTExNQU5OIE1BTlVGQUNUVVJFUlMsIExURAotCQkJCTI2IFZJQ1RPUklBIFdBWQotCQkJCUJVUkdFU1MgSElMTCBXLiBTVVNTRVggUkggMTUgOU5GCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC05MyAgIChoZXgpCQlCL0UgQUVST1NQQUNFLCBJbmMuCi0wMEEwOTMgICAgIChiYXNlIDE2KQkJQi9FIEFFUk9TUEFDRSwgSW5jLgotCQkJCTE3NDgxIFJFRCBISUxMCi0JCQkJSVJWSU5FIENBIDkyNzE0LTU2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTk0ICAgKGhleCkJCUNPTVNBVCBDT1JQT1JBVElPTgotMDBBMDk0ICAgICAoYmFzZSAxNikJCUNPTVNBVCBDT1JQT1JBVElPTgotCQkJCTIyMzAwIENPTVNBVCBEUklWRQotCQkJCUNMQVJLU0JVUkcgTUQgMjA4NzEtOTQ3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOTUgICAoaGV4KQkJQUNBQ0lBIE5FVFdPUktTLCBJTkMuCi0wMEEwOTUgICAgIChiYXNlIDE2KQkJQUNBQ0lBIE5FVFdPUktTLCBJTkMuCi0JCQkJODMxIFdPQlVSTiBTVFJFRVQKLQkJCQlXSUxNSU5HVE9OIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC05NiAgIChoZXgpCQlNSVRVTUkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMEEwOTYgICAgIChiYXNlIDE2KQkJTUlUVU1JIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTgtOC0yLCAgS09LVVJZTy1DSE8KLQkJCQlDSE9GVS1TSEkgVE9LWU8gMTgyICAKLQkJCQlKQVBBTgotCi0wMC1BMC05NyAgIChoZXgpCQlKQyBJTkZPUk1BVElPTiBTWVNURU1TCi0wMEEwOTcgICAgIChiYXNlIDE2KQkJSkMgSU5GT1JNQVRJT04gU1lTVEVNUwotCQkJCTQ0ODcgVEVDSE5PTE9HWSBEUklWRQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgtNjM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOTggICAoaGV4KQkJTmV0QXBwCi0wMEEwOTggICAgIChiYXNlIDE2KQkJTmV0QXBwCi0JCQkJNDk1IEVhc3QgSmF2YSBEcml2ZQotCQkJCVN1bm55dmFsZSwgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTk5ICAgKGhleCkJCUstTkVUIExURC4KLTAwQTA5OSAgICAgKGJhc2UgMTYpCQlLLU5FVCBMVEQuCi0JCQkJU0FERExFUlMgSE9VU0UKLQkJCQkxMDAgUkVBRElORyBSRC4KLQkJCQlZQVRFTEVZLCBTVVJSRVkgR1UxNyA3UlggIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLTlBICAgKGhleCkJCU5JSE9OIEtPSERFTiBBTUVSSUNBCi0wMEEwOUEgICAgIChiYXNlIDE2KQkJTklIT04gS09IREVOIEFNRVJJQ0EKLQkJCQkyNDQ2IERVUE9OVCBEUklWRQotCQkJCUlSVklORSBDQSA5MjcxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOUIgICAoaGV4KQkJUVBTWCBDT01NVU5JQ0FUSU9OUywgTFRELgotMDBBMDlCICAgICAoYmFzZSAxNikJCVFQU1ggQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQkzMyBSSUNIQVJEU09OIFNUUkVFVAotCQkJCVdFU1QgUEVSVEggNjAwNQotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC05QyAgIChoZXgpCQlYeXBsZXgsIEluYy4KLTAwQTA5QyAgICAgKGJhc2UgMTYpCQlYeXBsZXgsIEluYy4KLQkJCQkyNSBGT1NURVIgU1RSRUVUCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC05RCAgIChoZXgpCQlKT0hOQVRIT04gRlJFRU1BTiBURUNITk9MT0dJRVMKLTAwQTA5RCAgICAgKGJhc2UgMTYpCQlKT0hOQVRIT04gRlJFRU1BTiBURUNITk9MT0dJRVMKLQkJCQlQLk8uIEJPWCA4ODAxMTQKLQkJCQlTQU4gRlJBTkNJU0NPIENBIDk0MTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC05RSAgIChoZXgpCQlJQ1RWCi0wMEEwOUUgICAgIChiYXNlIDE2KQkJSUNUVgotCQkJCTE0NjAwIFdJTkNIRVNURVIgQkxWRC4KLQkJCQlMT1MgR0FUT1MgQ0EgOTUwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTlGICAgKGhleCkJCUNPTU1WSVNJT04gQ09SUC4KLTAwQTA5RiAgICAgKGJhc2UgMTYpCQlDT01NVklTSU9OIENPUlAuCi0JCQkJNTEwIExPR1VFIEFWRS4KLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1BMCAgIChoZXgpCQlDT01QQUNUIERBVEEsIExURC4KLTAwQTBBMCAgICAgKGJhc2UgMTYpCQlDT01QQUNUIERBVEEsIExURC4KLQkJCQk1OCBESVRUT04gV0FMSwotCQkJCUNBTUJSSURHRSBDQjUgOFFFICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC1BMSAgIChoZXgpCQlFUElDIERBVEEgSU5DLgotMDBBMEExICAgICAoYmFzZSAxNikJCUVQSUMgREFUQSBJTkMuCi0JCQkJNzI4MCBSSVZFUiBST0FECi0JCQkJUklDSE1PTkQsICBCLkMuCi0JCQkJQ0FOQURBIFY2WCAxWDUKLQkJCQlDQU5BREEKLQotMDAtQTAtQTIgICAoaGV4KQkJRElHSUNPTSBTLlAuQS4KLTAwQTBBMiAgICAgKGJhc2UgMTYpCQlESUdJQ09NIFMuUC5BLgotCQkJCVZJQSBWT0xUQSAzOQotCQkJCTIxMDEwIENBUkRBTk8gQUwgQ0FNUE8gKFZBKQotCQkJCUlUQUxZCi0KLTAwLUEwLUEzICAgKGhleCkJCVJFTElBQkxFIFBPV0VSIE1FVEVSUwotMDBBMEEzICAgICAoYmFzZSAxNikJCVJFTElBQkxFIFBPV0VSIE1FVEVSUwotCQkJCTQwMCBCTE9TU09NIEhJTEwgUk9BRAotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMi00NTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1BNCAgIChoZXgpCQlNSUNST1MgU1lTVEVNUywgSU5DLgotMDBBMEE0ICAgICAoYmFzZSAxNikJCU1JQ1JPUyBTWVNURU1TLCBJTkMuCi0JCQkJMTIwMDAgQkFMVElNT1JFIEFWRU5VRQotCQkJCUJFTFRTVklMTEUgTUQgMjA3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUE1ICAgKGhleCkJCVRFS05PUiBNSUNST1NZU1RFTUUsIElOQy4KLTAwQTBBNSAgICAgKGJhc2UgMTYpCQlURUtOT1IgTUlDUk9TWVNURU1FLCBJTkMuCi0JCQkJNjE2IENVUkUgQk9JVklOCi0JCQkJQk9JU0JSSUFORCBRVUVCRUMKLQkJCQlKN0cgMkE3Ci0JCQkJQ0FOQURBCi0KLTAwLUEwLUE2ICAgKGhleCkJCU0uSS4gU1lTVEVNUywgSy5LLgotMDBBMEE2ICAgICAoYmFzZSAxNikJCU0uSS4gU1lTVEVNUywgSy5LLgotCQkJCTItNy0xMi0zMDggU2F0c3VraWdhb2thCi0JCQkJSWtlZGEtU2hpIE9zYWthIDU2My0wMDI5Ci0JCQkJSkFQQU4KLQotMDAtQTAtQTcgICAoaGV4KQkJVk9SQVggQ09SUE9SQVRJT04KLTAwQTBBNyAgICAgKGJhc2UgMTYpCQlWT1JBWCBDT1JQT1JBVElPTgotCQkJCTEwMzEgRUFTVCBEVUFORSBBVkVOVUUsIFNURSBICi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1BOCAgIChoZXgpCQlSRU5FWCBDT1JQT1JBVElPTgotMDBBMEE4ICAgICAoYmFzZSAxNikJCVJFTkVYIENPUlBPUkFUSU9OCi0JCQkJMjc1MCBLSUxMQVJORVkgRFJJVkUKLQkJCQlXT09EQlJJREdFIFZBIDIyMTkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1BOSAgIChoZXgpCQlOQVZURUwgQ09NTVVOSUNBVElPTlMgSU5DLgotMDBBMEE5ICAgICAoYmFzZSAxNikJCU5BVlRFTCBDT01NVU5JQ0FUSU9OUyBJTkMuCi0JCQkJNTUgUkVORlJFVyBEUklWRQotCQkJCU1BUktIQU0sIE9OVEFSSU8gTDNSIDhIMyAgCi0JCQkJQ0FOQURBCi0KLTAwLUEwLUFBICAgKGhleCkJCVNQQUNFTEFCUyBNRURJQ0FMCi0wMEEwQUEgICAgIChiYXNlIDE2KQkJU1BBQ0VMQUJTIE1FRElDQUwKLQkJCQk1MTUwIDIyMCBBdmUgU0UKLQkJCQlJc3NhcXVhaCBXQSA5ODAyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQUIgICAoaGV4KQkJTkVUQ1MgSU5GT1JNQVRJT05TVEVDSE5JSyBHTUJICi0wMEEwQUIgICAgIChiYXNlIDE2KQkJTkVUQ1MgSU5GT1JNQVRJT05TVEVDSE5JSyBHTUJICi0JCQkJS0FUSEFSSU5FTlNUUkFTU0UgMTctMTgKLQkJCQlELTEwNzExIEJFUkxJTiwKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1BMC1BQyAgIChoZXgpCQlHSUxBVCBTQVRFTExJVEUgTkVUV09SS1MsIExURC4KLTAwQTBBQyAgICAgKGJhc2UgMTYpCQlHSUxBVCBTQVRFTExJVEUgTkVUV09SS1MsIExURC4KLQkJCQkyNEEgSEFCQVJaRUwgU1RSRUVUCi0JCQkJVEVMIEFWSVYgIDY5NzEwCi0JCQkJSVNSQUVMCi0KLTAwLUEwLUFEICAgKGhleCkJCU1BUkNPTkkgU1BBCi0wMEEwQUQgICAgIChiYXNlIDE2KQkJTUFSQ09OSSBTUEEKLQkJCQlWSUEgTkVHUk9ORSwgMUEKLQkJCQkxNjE1MyBHRU5PVkEgQ09STklHTElBTk8gIAotCQkJCUlUQUxZCi0KLTAwLUEwLUFFICAgKGhleCkJCU5VQ09NIFNZU1RFTVMsIElOQy4KLTAwQTBBRSAgICAgKGJhc2UgMTYpCQlOVUNPTSBTWVNURU1TLCBJTkMuCi0JCQkJOUYtNiwgTk8gNCwgTEFORQotCQkJCTYwOSBDSFVORyBIU0lOIFJPQUQsIFNFQy4gNSwgU0FOIENIVU5HIEMKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQTAtQUYgICAoaGV4KQkJV01TIElORFVTVFJJRVMKLTAwQTBBRiAgICAgKGJhc2UgMTYpCQlXTVMgSU5EVVNUUklFUwotCQkJCTM0MDEgTi4gQ0FMSUZPUk5JQQotCQkJCUNISUNBR08gSUwgNjA2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUIwICAgKGhleCkJCUktTyBEQVRBIERFVklDRSwgSU5DLgotMDBBMEIwICAgICAoYmFzZSAxNikJCUktTyBEQVRBIERFVklDRSwgSU5DLgotCQkJCTI0LTEsIFNBS1VSQURBLU1BQ0hJCi0JCQkJS0FOQVpBV0EsIElTSElLQVdBIDkyMCAgCi0JCQkJSkFQQU4KLQotMDAtQTAtQjEgICAoaGV4KQkJRklSU1QgVklSVFVBTCBDT1JQT1JBVElPTgotMDBBMEIxICAgICAoYmFzZSAxNikJCUZJUlNUIFZJUlRVQUwgQ09SUE9SQVRJT04KLQkJCQkzMzkzIE9DVEFWSVVTIERSLi1TVEUuIyAxMDIKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjIgICAoaGV4KQkJU0hJTUEgU0VJS0kKLTAwQTBCMiAgICAgKGJhc2UgMTYpCQlTSElNQSBTRUlLSQotCQkJCTg1LCBTQUtBVEEgV0FLQVlBTUEtQ0lUWQotCQkJCVdBS0FZQU1BIDY0MQotCQkJCUpBUEFOCi0KLTAwLUEwLUIzICAgKGhleCkJCVpZS1JPTklYCi0wMEEwQjMgICAgIChiYXNlIDE2KQkJWllLUk9OSVgKLQkJCQk3MjQ4IFNPVVRIIFRVQ1NPTiBXQVkKLQkJCQlFTkdMRVdPT0QgQ08gODAxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUI0ICAgKGhleCkJCVRFWEFTIE1JQ1JPU1lTVEVNUywgSU5DLgotMDBBMEI0ICAgICAoYmFzZSAxNikJCVRFWEFTIE1JQ1JPU1lTVEVNUywgSU5DLgotCQkJCTU5NTkgQ09SUE9SQVRFIERSSVZFCi0JCQkJSE9VU1RPTiBUWCA3NzAzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjUgICAoaGV4KQkJM0ggVEVDSE5PTE9HWQotMDBBMEI1ICAgICAoYmFzZSAxNikJCTNIIFRFQ0hOT0xPR1kKLQkJCQkzMzc1IFNDT1RUIEJMVkQuICMzMzYKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjYgICAoaGV4KQkJU0FOUklUWiBBVVRPTUFUSU9OIENPLiwgTFRELgotMDBBMEI2ICAgICAoYmFzZSAxNikJCVNBTlJJVFogQVVUT01BVElPTiBDTy4sIExURC4KLQkJCQk0LTIxIE1JTkFNSSBOQVJVU0UKLQkJCQlNQUNISURBIENJVFkgVE9LWU8gIDE5NAotCQkJCUpBUEFOCi0KLTAwLUEwLUI3ICAgKGhleCkJCUNPUkRBTlQsIElOQy4KLTAwQTBCNyAgICAgKGJhc2UgMTYpCQlDT1JEQU5ULCBJTkMuCi0JCQkJMTE0MDAgQ09NTUVSQ0UgUEFSSyBEUi4KLQkJCQlSRVNUT04gVkEgMjIwOTEtMTUwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjggICAoaGV4KQkJU1lNQklPUyBMT0dJQyBJTkMuCi0wMEEwQjggICAgIChiYXNlIDE2KQkJU1lNQklPUyBMT0dJQyBJTkMuCi0JCQkJMjAwMSBEYW5maWVsZCBDdC4KLQkJCQlGb3J0IENvbGxpbnMgQ08gODA1MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUI5ICAgKGhleCkJCUVBR0xFIFRFQ0hOT0xPR1ksIElOQy4KLTAwQTBCOSAgICAgKGJhc2UgMTYpCQlFQUdMRSBURUNITk9MT0dZLCBJTkMuCi0JCQkJNjgwMCBPUkFOR0VUSE9SUEUgQVZFLiwgVU5JVCBBCi0JCQkJQlVFTkEgUEFSSyBDQSA5MDYyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQkEgICAoaGV4KQkJUEFUVE9OIEVMRUNUUk9OSUNTIENPLgotMDBBMEJBICAgICAoYmFzZSAxNikJCVBBVFRPTiBFTEVDVFJPTklDUyBDTy4KLQkJCQk3NjIyIFJJQ0tFTkJBQ0tFUiBEUklWRQotCQkJCUdBSVRIRVJTQlVSRyBNRCAyMDg3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQkIgICAoaGV4KQkJSElMQU4gR01CSAotMDBBMEJCICAgICAoYmFzZSAxNikJCUhJTEFOIEdNQkgKLQkJCQlIQUlELVVORC1ORVUtU1RSQVNTRSA3Ci0JCQkJRC03NjEzMSBLQVJMU1JVSEUKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLUJDICAgKGhleCkJCVZJQVNBVCwgSU5DT1JQT1JBVEVECi0wMEEwQkMgICAgIChiYXNlIDE2KQkJVklBU0FULCBJTkNPUlBPUkFURUQKLQkJCQk2MTU1IEVsIENhbWlubyBSZWFsCi0JCQkJQ2FybHNiYWQgQ2EgOTIwMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUJEICAgKGhleCkJCUktVEVDSCBDT1JQLgotMDBBMEJEICAgICAoYmFzZSAxNikJCUktVEVDSCBDT1JQLgotCQkJCTEwMjAwIFZBTExFWSBWSUVXIFJPQUQKLQkJCQlFREVOIFBSQUlSSUUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUJFICAgKGhleCkJCUlOVEVHUkFURUQgQ0lSQ1VJVCBTWVNURU1TLCBJTkMuIENPTU1VTklDQVRJT05TIEdST1VQCi0wMEEwQkUgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBDSVJDVUlUIFNZU1RFTVMsIElOQy4gQ09NTVVOSUNBVElPTlMgR1JPVVAKLQkJCQkxMjcxIFBBUktNT09SIEFWRU5VRQotCQkJCVNBTiBKT1NFIENBIDk1MTI2LTM0NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUJGICAgKGhleCkJCVdJUkVMRVNTIERBVEEgR1JPVVAgTU9UT1JPTEEKLTAwQTBCRiAgICAgKGJhc2UgMTYpCQlXSVJFTEVTUyBEQVRBIEdST1VQIE1PVE9ST0xBCi0JCQkJMTIwMSBFLiBXSUxFWSBST0FECi0JCQkJU0NIQVVNQlVSRyBJTCA2MDE3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQzAgICAoaGV4KQkJRElHSVRBTCBMSU5LIENPUlAuCi0wMEEwQzAgICAgIChiYXNlIDE2KQkJRElHSVRBTCBMSU5LIENPUlAuCi0JCQkJMjE3IEhVTUJPTERUIENPVVJUCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1DMSAgIChoZXgpCQlPUlRJVlVTIE1FRElDQUwgQUIKLTAwQTBDMSAgICAgKGJhc2UgMTYpCQlPUlRJVlVTIE1FRElDQUwgQUIKLQkJCQlCT1ggNTEzCi0JCQkJUy0xODMyNSBUQUJZCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLUEwLUMyICAgKGhleCkJCVIuQS4gU1lTVEVNUyBDTy4sIExURC4KLTAwQTBDMiAgICAgKGJhc2UgMTYpCQlSLkEuIFNZU1RFTVMgQ08uLCBMVEQuCi0JCQkJMTg1MC0zIEhJUk9PS0FOT01VUkEKLQkJCQlTSElPSklSSS1TSEksIE5BR0FNTyAzOTktMDcKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUEwLUMzICAgKGhleCkJCVVOSUNPTVBVVEVSIEdNQkgKLTAwQTBDMyAgICAgKGJhc2UgMTYpCQlVTklDT01QVVRFUiBHTUJICi0JCQkJTElNQlVSR0VSIFNUUkFTU0UgNDgKLQkJCQlELTYxNDc2IEtST05CRVJHIEkuVC5TLgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLUM0ICAgKGhleCkJCUNSSVNUSUUgRUxFQ1RST05JQ1MgTFRELgotMDBBMEM0ICAgICAoYmFzZSAxNikJCUNSSVNUSUUgRUxFQ1RST05JQ1MgTFRELgotCQkJCUJPTkQnUyBNSUxMCi0JCQkJU1RPTkVIT1VTRQotCQkJCUdMT1VDRVNURVJTSElSRSBHTDEwIDNSRyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtQzUgICAoaGV4KQkJWllYRUwgQ09NTVVOSUNBVElPTgotMDBBMEM1ICAgICAoYmFzZSAxNikJCVpZWEVMIENPTU1VTklDQVRJT04KLQkJCQkyTkQgRkxSLiwgIDU4IFBBUksgQVZFTlVFIElJCi0JCQkJU0NJRU5DRSBCQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOQ0hVIDMwMDc3ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUEwLUM2ICAgKGhleCkJCVFVQUxDT01NIElOQ09SUE9SQVRFRAotMDBBMEM2ICAgICAoYmFzZSAxNikJCVFVQUxDT01NIElOQ09SUE9SQVRFRAotCQkJCSA1Nzc1IE1vcmVob3VzZSBEcgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQzcgICAoaGV4KQkJVEFESVJBTiBURUxFQ09NTVVOSUNBVElPTlMKLTAwQTBDNyAgICAgKGJhc2UgMTYpCQlUQURJUkFOIFRFTEVDT01NVU5JQ0FUSU9OUwotCQkJCVAuTy4gQk9YIDUwMAotCQkJCVBFVEFILVRJS1ZBIDQ5MTA0ICAKLQkJCQlJU1JBRUwKLQotMDAtQTAtQzggICAoaGV4KQkJQURUUkFOIElOQy4KLTAwQTBDOCAgICAgKGJhc2UgMTYpCQlBRFRSQU4gSU5DLgotCQkJCTkwMSBFWFBMT1JFUiBCTFZELgotCQkJCUhVTlRTVklMTEUgQUwgMzU4MDYtMjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQzkgICAoaGV4KQkJSU5URUwgQ09SUE9SQVRJT04gLSBIRjEtMDYKLTAwQTBDOSAgICAgKGJhc2UgMTYpCQlJTlRFTCBDT1JQT1JBVElPTiAtIEhGMS0wNgotCQkJCTUyMDAgTkUgRUxBTSBZT1VORyBQQVJLV0FZCi0JCQkJSElMTFNCT1JPIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1DQSAgIChoZXgpCQlGVUpJVFNVIERFTlNPIExURC4KLTAwQTBDQSAgICAgKGJhc2UgMTYpCQlGVUpJVFNVIERFTlNPIExURC4KLQkJCQkzMDU1IE9SQ0hBUkQgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQ0IgICAoaGV4KQkJQVJLIFRFTEVDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBBMENCICAgICAoYmFzZSAxNikJCUFSSyBURUxFQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMjQgQ0FSTUVOIExBTkUtLVNVSVRFCi0JCQkJU0FOVEEgTUFSSUEgQ0EgOTM0NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUNDICAgKGhleCkJCUxJVEUtT04gQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQTBDQyAgICAgKGJhc2UgMTYpCQlMSVRFLU9OIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNzIwIFMuIEhJTExWSUVXIERSSVZFCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUNEICAgKGhleCkJCURSLiBKT0hBTk5FUyBIRUlERU5IQUlOIEdtYkgKLTAwQTBDRCAgICAgKGJhc2UgMTYpCQlEUi4gSk9IQU5ORVMgSEVJREVOSEFJTiBHbWJICi0JCQkJRFIuLUpPSEFOTkVTLUhFSURFTkhBSU4gU1RSLgotCQkJCTgzMzAxIFRSQVVOUkVVVCAgCi0JCQkJR0VSTUFOWQotCi0wMC1BMC1DRSAgIChoZXgpCQlFY2Vzc2EKLTAwQTBDRSAgICAgKGJhc2UgMTYpCQlFY2Vzc2EKLQkJCQkyODAwIENhbXB1cyBEcml2ZSAKLQkJCQlTdWl0ZSAxNDAKLQkJCQlQbHltb3V0aCBNTiA1NTQ0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQ0YgICAoaGV4KQkJU09UQVMsIElOQy4KLTAwQTBDRiAgICAgKGJhc2UgMTYpCQlTT1RBUywgSU5DLgotCQkJCTIgUkVTRUFSQ0ggUExBQ0UsIFNURS4KLQkJCQlST0NLVklMTEUgTUQgMjA4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUQwICAgKGhleCkJCVRFTiBYIFRFQ0hOT0xPR1ksIElOQy4KLTAwQTBEMCAgICAgKGJhc2UgMTYpCQlURU4gWCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTMwOTEgUE9ORCBTUFJJTkdTIFJPQUQsIFN1aXRlIEItMjAwCi0JCQkJQVVTVElOIFRYIDc4NzI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1EMSAgIChoZXgpCQlJTlZFTlRFQyBDT1JQT1JBVElPTgotMDBBMEQxICAgICAoYmFzZSAxNikJCUlOVkVOVEVDIENPUlBPUkFUSU9OCi0JCQkJSU5WRU5URUMgQlVJTERJTkcKLQkJCQk2NiBIT1UtS0FORyBTVFJFRVQgU0hJLUxJTiBESVNUUklDVCwgVEFJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUEwLUQyICAgKGhleCkJCUFMTElFRCBURUxFU0lTIElOVEVSTkFUSU9OQUwgQ09SUE9SQVRJT04KLTAwQTBEMiAgICAgKGJhc2UgMTYpCQlBTExJRUQgVEVMRVNJUyBJTlRFUk5BVElPTkFMIENPUlBPUkFUSU9OCi0JCQkJOTUwIEtJRkVSIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUQzICAgKGhleCkJCUlOU1RFTSBDT01QVVRFUiBTWVNURU1TLCBMVEQuCi0wMEEwRDMgICAgIChiYXNlIDE2KQkJSU5TVEVNIENPTVBVVEVSIFNZU1RFTVMsIExURC4KLQkJCQlXQUxUT04gSU5EVVNUUklBTCBFU1RBVEUKLQkJCQlTVE9ORSwgU1RBRkZPUkRTSElSRSBTVDE1IE9MVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLUQ0ICAgKGhleCkJCVJBRElPTEFOLCAgSU5DLgotMDBBMEQ0ICAgICAoYmFzZSAxNikJCVJBRElPTEFOLCAgSU5DLgotCQkJCTQ1NCBERUdVSUdORSBEUklWRSAtIFNURQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRDUgICAoaGV4KQkJU0lFUlJBIFdJUkVMRVNTIElOQy4KLTAwQTBENSAgICAgKGJhc2UgMTYpCQlTSUVSUkEgV0lSRUxFU1MgSU5DLgotCQkJCTEzODExIFdpcmVsZXNzIFdheQotCQkJCVJJQ0hNT05EIEIuQy4gVjZWIDNBNAotCQkJCUNBTkFEQQotCi0wMC1BMC1ENiAgIChoZXgpCQlTQkUsIElOQy4KLTAwQTBENiAgICAgKGJhc2UgMTYpCQlTQkUsIElOQy4KLQkJCQkyMzA1IENhbWlubyBSYW1vbgotCQkJCVNBTiBSQU1PTiBDQSA5NDU4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRDcgICAoaGV4KQkJS0FTVEVOIENIQVNFIEFQUExJRUQgUkVTRUFSQ0gKLTAwQTBENyAgICAgKGJhc2UgMTYpCQlLQVNURU4gQ0hBU0UgQVBQTElFRCBSRVNFQVJDSAotCQkJCTUxMDAgT1JCSVRPUiBEUklWRQotCQkJCU1JU1NJU1NBVUdBLCBPTlRBUklPCi0JCQkJTDRXIDRaNAotCQkJCUNBTkFEQQotCi0wMC1BMC1EOCAgIChoZXgpCQlTUEVDVFJBIC0gVEVLCi0wMEEwRDggICAgIChiYXNlIDE2KQkJU1BFQ1RSQSAtIFRFSwotCQkJCU9VVEdBTkcgTEFORQotCQkJCVBJQ0tFUklORyBOT1JUSCBZT1JLU0hJUkUKLQkJCQlFTkdMQU5EIFkwMTggRkpBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtRDkgICAoaGV4KQkJQ09OVkVYIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMEEwRDkgICAgIChiYXNlIDE2KQkJQ09OVkVYIENPTVBVVEVSIENPUlBPUkFUSU9OCi0JCQkJMzAwMCBXQVRFUlZJRVcgUEFSS1dBWQotCQkJCVAuTy4gQk9YIDgzMzg1MQotCQkJCVJJQ0hBUkRTT04gVFggNzUwODMtMzg1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtREEgICAoaGV4KQkJSU5URUdSQVRFRCBTWVNURU1TIFRlY2hub2xvZ3ksIEluYy4KLTAwQTBEQSAgICAgKGJhc2UgMTYpCQlJTlRFR1JBVEVEIFNZU1RFTVMgVGVjaG5vbG9neSwgSW5jLgotCQkJCTQ2MDEgUFJFU0lERU5UUyBEUklWRQotCQkJCVNVSVRFICMyMTAKLQkJCQlMQU5IQU0gTUQgMjA3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLURCICAgKGhleCkJCUZJU0hFUiAmIFBBWUtFTCBQUk9EVUNUSU9OCi0wMEEwREIgICAgIChiYXNlIDE2KQkJRklTSEVSICYgUEFZS0VMIFBST0RVQ1RJT04KLQkJCQlNQUNISU5FUlkgTElNSVRFRAotCQkJCVAuTy4gQk9YIDU4LTIyMywgR1JFRU5NT1VOVCBBVUNLTEFORAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLUEwLURDICAgKGhleCkJCU8uTi4gRUxFQ1RST05JQyBDTy4sIExURC4KLTAwQTBEQyAgICAgKGJhc2UgMTYpCQlPLk4uIEVMRUNUUk9OSUMgQ08uLCBMVEQuCi0JCQkJMy0yMC0yNywgVEFSVU1JCi0JCQkJU1VJVEEsIE9TQUtBIDU2NCAgCi0JCQkJSkFQQU4KLQotMDAtQTAtREQgICAoaGV4KQkJQVpPTklYIENPUlBPUkFUSU9OCi0wMEEwREQgICAgIChiYXNlIDE2KQkJQVpPTklYIENPUlBPUkFUSU9OCi0JCQkJOTAwIE1JRERMRVNFWCBUVVJOUElLRQotCQkJCUJMREcuCi0JCQkJQklMTEVSSUNBIE1BIDAxODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1ERSAgIChoZXgpCQlZQU1BSEEgQ09SUE9SQVRJT04KLTAwQTBERSAgICAgKGJhc2UgMTYpCQlZQU1BSEEgQ09SUE9SQVRJT04KLQkJCQlFTEVDVFJPTklDIERFVklDRVMgRElWSVNJT04KLQkJCQkyMDMgTUFUU1VOT0tJSklNQSBUT1lPT0tBLU1VUkEgSVdBVEEtR1VOCi0JCQkJNDM4LTAxCi0JCQkJSkFQQU4KLQotMDAtQTAtREYgICAoaGV4KQkJU1RTIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBBMERGICAgICAoYmFzZSAxNikJCVNUUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMzc2NSBTVC4gQ0hBUkxFUyBST0NLIFJELgotCQkJCVNVSVRFICMxMDgKLQkJCQlCUklER0VUT04gTU8gNjMwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUUwICAgKGhleCkJCVRFTk5ZU09OIFRFQ0hOT0xPR0lFUyBQVFkgTFRECi0wMEEwRTAgICAgIChiYXNlIDE2KQkJVEVOTllTT04gVEVDSE5PTE9HSUVTIFBUWSBMVEQKLQkJCQkxNCBCVVNJTkVTUyBQQVJLIERSSVZFCi0JCQkJTk9UVElORyBISUxMCi0JCQkJVklDVE9SSUEgLSAzMTY4ICAKLQkJCQlBVVNUUkFMSUEKLQotMDAtQTAtRTEgICAoaGV4KQkJV0VTVFBPUlQgUkVTRUFSQ0ggQVNTT0NJQVRFUywgSU5DLgotMDBBMEUxICAgICAoYmFzZSAxNikJCVdFU1RQT1JUIFJFU0VBUkNIIEFTU09DSUFURVMsIElOQy4KLQkJCQk2MTAyIEFSTElOR1RPTgotCQkJCVJBWVRPV04gTU8gNjQxMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUUyICAgKGhleCkJCUtlaXNva3VnaWtlbiBDb3Jwb3JhdGlvbgotMDBBMEUyICAgICAoYmFzZSAxNikJCUtlaXNva3VnaWtlbiBDb3Jwb3JhdGlvbgotCQkJCTIwMjEtNSBIb3VzaGFrdWppCi0JCQkJVGFrYW5lemF3YS1tYWNoaQotCQkJCVNoaW95YS1ndW4gVG9jaGlnaSAzMjktMTIzMwotCQkJCUpBUEFOCi0KLTAwLUEwLUUzICAgKGhleCkJCVhLTCBTWVNURU1TIENPUlAuCi0wMEEwRTMgICAgIChiYXNlIDE2KQkJWEtMIFNZU1RFTVMgQ09SUC4KLQkJCQk4NDIwIDE1NFRIIEFWRS4gTkUKLQkJCQlSRURNT05EIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1FNCAgIChoZXgpCQlPUFRJUVVFU1QKLTAwQTBFNCAgICAgKGJhc2UgMTYpCQlPUFRJUVVFU1QKLQkJCQkyMDQ5MCBCVVNJTkVTUyBQQVJLV0FZCi0JCQkJV0FMTlVUIENBIDkxNzg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1FNSAgIChoZXgpCQlOSEMgQ09NTVVOSUNBVElPTlMKLTAwQTBFNSAgICAgKGJhc2UgMTYpCQlOSEMgQ09NTVVOSUNBVElPTlMKLQkJCQk1NDUwIENPVEUgREUgTElFU1NFCi0JCQkJTU9OVFJFQUwsIFFVRUJFQyBINFAgMUE1Ci0JCQkJQ0FOQURBCi0KLTAwLUEwLUU2ICAgKGhleCkJCURJQUxPR0lDIENPUlBPUkFUSU9OCi0wMEEwRTYgICAgIChiYXNlIDE2KQkJRElBTE9HSUMgQ09SUE9SQVRJT04KLQkJCQkxNTE1IFJPVVRFIDEwCi0JCQkJUEFSU0lQUEFOWSBOSiAwNzA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRTcgICAoaGV4KQkJQ0VOVFJBTCBEQVRBIENPUlBPUkFUSU9OCi0wMEEwRTcgICAgIChiYXNlIDE2KQkJQ0VOVFJBTCBEQVRBIENPUlBPUkFUSU9OCi0JCQkJMTYwMiBORVdUT04gRFJJVkUKLQkJCQlDSEFNUEFJR04gSUwgNjE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUU4ICAgKGhleCkJCVJFVVRFUlMgSE9MRElOR1MgUExDCi0wMEEwRTggICAgIChiYXNlIDE2KQkJUkVVVEVSUyBIT0xESU5HUyBQTEMKLQkJCQk4NSwgRkxFRVQgU1RSRUVUCi0JCQkJTE9ORE9OICBFQzRQIDRBSgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC1FOSAgIChoZXgpCQlFTEVDVFJPTklDIFJFVEFJTElORyBTWVNURU1TIElOVEVSTkFUSU9OQUwKLTAwQTBFOSAgICAgKGJhc2UgMTYpCQlFTEVDVFJPTklDIFJFVEFJTElORyBTWVNURU1TIElOVEVSTkFUSU9OQUwKLQkJCQkzNzIgREFOQlVSWSBST0FECi0JCQkJV0lMVE9OIENUIDA2ODk3LTI1MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUVBICAgKGhleCkJCUVUSEVSQ09NIENPUlAuCi0wMEEwRUEgICAgIChiYXNlIDE2KQkJRVRIRVJDT00gQ09SUC4KLQkJCQk0NTk5MCBIT1RDSEtJU1MgU1QuCi0JCQkJRlJFRU1PTlQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUVCICAgKGhleCkJCUVuY29yZSBOZXR3b3JrcywgSW5jLgotMDBBMEVCICAgICAoYmFzZSAxNikJCUVuY29yZSBOZXR3b3JrcywgSW5jLgotCQkJCTM4MDAgQ29uY29yZGUgUGFya3dheSwKLQkJCQlTdWl0ZSAxNTAwCi0JCQkJQ2hhbnRpbGx5LCBWQSAyMDE1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRUMgICAoaGV4KQkJVFJBTlNNSVRUT04gTFRELgotMDBBMEVDICAgICAoYmFzZSAxNikJCVRSQU5TTUlUVE9OIExURC4KLQkJCQlTTUlTQlkgUk9BRAotCQkJCUFTSEJZIERFIExBIFpPVUNICi0JCQkJTEVJQ0VTVEVSU0hJUkUgTEU2NSAyVUcgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLUVEICAgKGhleCkJCUJyb29rcyBBdXRvbWF0aW9uLCBJbmMuCi0wMEEwRUQgICAgIChiYXNlIDE2KQkJQnJvb2tzIEF1dG9tYXRpb24sIEluYy4KLQkJCQkxNSBFbGl6YWJldGggRHJpdmUKLQkJCQlDaGVsbXNmb3JkIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1FRSAgIChoZXgpCQlOQVNIT0JBIE5FVFdPUktTCi0wMEEwRUUgICAgIChiYXNlIDE2KQkJTkFTSE9CQSBORVRXT1JLUwotCQkJCTktMTEgR09MRFNNSVRIIFNULgotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRUYgICAoaGV4KQkJTFVDSURBVEEgTFRELgotMDBBMEVGICAgICAoYmFzZSAxNikJCUxVQ0lEQVRBIExURC4KLQkJCQlMVUNJREFUQSBIT1VTRQotCQkJCVNFTFdZTiBDTE9TRSwKLQkJCQlHUkVBVCBTSEVMRk9SRCBDQU1CUklER0UgIENCMiA1SEEgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtRjAgICAoaGV4KQkJVE9ST05UTyBNSUNST0VMRUNUUk9OSUNTIElOQy4KLTAwQTBGMCAgICAgKGJhc2UgMTYpCQlUT1JPTlRPIE1JQ1JPRUxFQ1RST05JQ1MgSU5DLgotCQkJCTUxNDkgQlJBRENPIEJPVUxFVkFSRAotCQkJCU1JU1NJU1NBVUdBLCBPTlRBUklPCi0JCQkJTDRXIDJBNgotCQkJCUNBTkFEQQotCi0wMC1BMC1GMSAgIChoZXgpCQlNVEkKLTAwQTBGMSAgICAgKGJhc2UgMTYpCQlNVEkKLQkJCQk0OTA1IEUuIExBIFBBTE1BIEFWRU5VRQotCQkJCUFOQUhFSU0gQ0EgOTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUYyICAgKGhleCkJCUlORk9URUsgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQTBGMiAgICAgKGJhc2UgMTYpCQlJTkZPVEVLIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTExIEFOWkEgQkxWRC4sICMyMDMKLQkJCQlCVVJMSU5HQU1FIENBIDk0MDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GMyAgIChoZXgpCQlTVEFVQkxJCi0wMEEwRjMgICAgIChiYXNlIDE2KQkJU1RBVUJMSQotCQkJCTE4MyBSVUUgREVTIFVTSU5FUwotCQkJCUJQIDcwIEY3NDIxMCBGQVZFUkdFUwotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC1BMC1GNCAgIChoZXgpCQlHRQotMDBBMEY0ICAgICAoYmFzZSAxNikJCUdFCi0JCQkJVy02NTcKLQkJCQkzMDAwIE4uIEdSQU5EVklFVyBCTFZELgotCQkJCVdBVUtFU0hBIFdJIDUzMTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GNSAgIChoZXgpCQlSQURHVUFSRCBMVEQuCi0wMEEwRjUgICAgIChiYXNlIDE2KQkJUkFER1VBUkQgTFRELgotCQkJCTggSEFORUNIT1NIRVQgU1RSRUVUCi0JCQkJVEVMLUFWSVYgIDY5NzEwICAKLQkJCQlJU1JBRUwKLQotMDAtQTAtRjYgICAoaGV4KQkJQXV0b0dhcyBTeXN0ZW1zIEluYy4KLTAwQTBGNiAgICAgKGJhc2UgMTYpCQlBdXRvR2FzIFN5c3RlbXMgSW5jLgotCQkJCVAuTy4gQk9YIDY5NTcKLQkJCQlBQklPTEVORSBUWCA3OTYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRjcgICAoaGV4KQkJVi5JIENPTVBVVEVSIENPUlAuCi0wMEEwRjcgICAgIChiYXNlIDE2KQkJVi5JIENPTVBVVEVSIENPUlAuCi0JCQkJNTMxIEVOQ0lOSVRBUyBCTFZELS0jMTE0Ci0JCQkJRU5DSU5JVEFTIENBIDkyMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GOCAgIChoZXgpCQlTWU1CT0wgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEEwRjggICAgIChiYXNlIDE2KQkJU1lNQk9MIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTExMDEgU09VVEggV0lOQ0hFU1RFUiBCTFZELgotCQkJCVNVSVRFICAjIEItMTEwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUY5ICAgKGhleCkJCUJJTlRFQyBDT01NVU5JQ0FUSU9OUyBHTUJICi0wMEEwRjkgICAgIChiYXNlIDE2KQkJQklOVEVDIENPTU1VTklDQVRJT05TIEdNQkgKLQkJCQlTVUVEV0VTVFBBUksgOTQKLQkJCQk5MDQ0OSBOVUVSTkJFUkcgIAotCQkJCUdFUk1BTlkKLQotMDAtQTAtRkEgICAoaGV4KQkJTWFyY29uaSBDb21tdW5pY2F0aW9uIEdtYkgKLTAwQTBGQSAgICAgKGJhc2UgMTYpCQlNYXJjb25pIENvbW11bmljYXRpb24gR21iSAotCQkJCUdlcmJlcnN0cmFzc2UgMzMKLQkJCQlELTcxNTIyIEJhY25rbmFuZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLUZCICAgKGhleCkJCVRPUkFZIEVOR0lORUVSSU5HIENPLiwgTFRELgotMDBBMEZCICAgICAoYmFzZSAxNikJCVRPUkFZIEVOR0lORUVSSU5HIENPLiwgTFRELgotCQkJCTEtNDUsIE9FIDEtQ0hPTUUsIE9UU1UgQ0lUWQotCQkJCVNISUdBLAotCQkJCTUyMC0yMSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUEwLUZDICAgKGhleCkJCUlNQUdFIFNDSUVOQ0VTLCBJTkMuCi0wMEEwRkMgICAgIChiYXNlIDE2KQkJSU1BR0UgU0NJRU5DRVMsIElOQy4KLQkJCQk3NTAwIElOTk9WQVRJT04gV0FZCi0JCQkJTUFTT04gT0ggNDUwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUZEICAgKGhleCkJCVNDSVRFWCBESUdJVEFMIFBSSU5USU5HLCBJTkMuCi0wMEEwRkQgICAgIChiYXNlIDE2KQkJU0NJVEVYIERJR0lUQUwgUFJJTlRJTkcsIElOQy4KLQkJCQkzMTAwIFJFU0VBUkNIIEJMVkQuCi0JCQkJREFZVE9OIE9IIDQ1NDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GRSAgIChoZXgpCQlCT1NUT04gVEVDSE5PTE9HWSwgSU5DLgotMDBBMEZFICAgICAoYmFzZSAxNikJCUJPU1RPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTAwIFFVQU5OQVBPV0lUVCBQQVJLV0FZCi0JCQkJV0FLRUZJRUxEIE1BIDAxODgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GRiAgIChoZXgpCQlURUxMQUJTIE9QRVJBVElPTlMsIElOQy4KLTAwQTBGRiAgICAgKGJhc2UgMTYpCQlURUxMQUJTIE9QRVJBVElPTlMsIElOQy4KLQkJCQkxMDAwIFJFTUlOR1RPTiBCTFZELgotCQkJCUJPTElOR0JST09LICBJTCAgNjA0NDAKLQkJCQk2MDQ0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTEtREUgICAoaGV4KQkJU2hlblpoZW4gU2hpSHVhIFRlY2hub2xvZ3kgQ08uLExURAotMDBBMURFICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIFNoaUh1YSBUZWNobm9sb2d5IENPLixMVEQKLQkJCQlSb29tNTA1LDUvRiBUc2luZ1lpIEJ1aWxkaW5nLExhbmdTaGFuIDJlZCBSb2FkLEhpZ2gtVGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA1MgotCQkJCUNISU5BCi0KLTAwLUEyLURBICAgKGhleCkJCUlOQVQgR21iSAotMDBBMkRBICAgICAoYmFzZSAxNikJCUlOQVQgR21iSAotCQkJCU9zdGVuZHN0ci4gNTBBCi0JCQkJTnVyZW1iZXJnIEJhdmFyaWEgOTA0ODIKLQkJCQlHRVJNQU5ZCi0KLTAwLUFBLTAwICAgKGhleCkJCUlOVEVMIENPUlBPUkFUSU9OCi0wMEFBMDAgICAgIChiYXNlIDE2KQkJSU5URUwgQ09SUE9SQVRJT04KLQkJCQk1MjAwIE5FIEVMQU0gWU9VTkcgUEFSS1dBWQotCQkJCUhJTExTQk9STyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQUEtMDEgICAoaGV4KQkJSU5URUwgQ09SUE9SQVRJT04KLTAwQUEwMSAgICAgKGJhc2UgMTYpCQlJTlRFTCBDT1JQT1JBVElPTgotCQkJCQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQUEtMDIgICAoaGV4KQkJSU5URUwgQ09SUE9SQVRJT04KLTAwQUEwMiAgICAgKGJhc2UgMTYpCQlJTlRFTCBDT1JQT1JBVElPTgotCQkJCQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQUEtM0MgICAoaGV4KQkJT0xJVkVUVEkgVEVMRUNPTSBTUEEgKE9MVEVDTykKLTAwQUEzQyAgICAgKGJhc2UgMTYpCQlPTElWRVRUSSBURUxFQ09NIFNQQSAoT0xURUNPKQotCQkJCTEwMDYyIE1JTExFUiBBVkUuLVNURS4jMjA0Ci0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC0wOSAgIChoZXgpCQlHcmFzcyBWYWxsZXkgR3JvdXAKLTAwQjAwOSAgICAgKGJhc2UgMTYpCQlHcmFzcyBWYWxsZXkgR3JvdXAKLQkJCQlQLk8uIEJveCA1OTkwMDAKLQkJCQlOZXZhZGEgQ2l0eSBDQSA5NTk1OS03OTAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC0xNyAgIChoZXgpCQlJbmZvR2VhciBUZWNobm9sb2d5IENvcnAuCi0wMEIwMTcgICAgIChiYXNlIDE2KQkJSW5mb0dlYXIgVGVjaG5vbG9neSBDb3JwLgotCQkJCTIwNTUgV29vZHNpZGUgUm9hZAotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtMTkgICAoaGV4KQkJQ2FzaS1SdXNjbwotMDBCMDE5ICAgICAoYmFzZSAxNikJCUNhc2ktUnVzY28KLQkJCQkxMTU1IEJyb2tlbiBTb3VuZCBQa3d5Ci0JCQkJQm9jYSBSYXRvbiBGTCAzMzQ5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtMUMgICAoaGV4KQkJV2VzdHBvcnQgVGVjaG5vbG9naWVzCi0wMEIwMUMgICAgIChiYXNlIDE2KQkJV2VzdHBvcnQgVGVjaG5vbG9naWVzCi0JCQkJMTUgQ2FwZWxsYSBDb3VydCwgVW5pdCAxMTYKLQkJCQlOZXBlYW4gT250YXJpbyAKLQkJCQlDQU5BREEKLQotMDAtQjAtMUUgICAoaGV4KQkJUmFudGljIExhYnMsIEluYy4KLTAwQjAxRSAgICAgKGJhc2UgMTYpCQlSYW50aWMgTGFicywgSW5jLgotCQkJCTcwMiBCcmF6b3MsICBTdWl0ZSAjNTAwCi0JCQkJQXVzdGluIFRYIDc4NzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC0yQSAgIChoZXgpCQlPUlNZUyBHbWJICi0wMEIwMkEgICAgIChiYXNlIDE2KQkJT1JTWVMgR21iSAotCQkJCUFtIFN0YWR0Z3JhYmVuIDI1Ci0JCQkJRC04ODY3NyBNYXJrZG9yZiAgCi0JCQkJR0VSTUFOWQotCi0wMC1CMC0yRCAgIChoZXgpCQlWaWFHYXRlIFRlY2hub2xvZ2llcywgSW5jLgotMDBCMDJEICAgICAoYmFzZSAxNikJCVZpYUdhdGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNzQ1IFJvdXRlIDIwMi8yMDYKLQkJCQlTdWl0ZSA1Ci0JCQkJQnJpZGdld2F0ZXIgTkogMDg4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTMzICAgKGhleCkJCU9BTyAiSXpoZXZza2l5IHJhZGlvemF2b2QiCi0wMEIwMzMgICAgIChiYXNlIDE2KQkJT0FPICJJemhldnNraXkgcmFkaW96YXZvZCIKLQkJCQkxOSBCYXppc25heWEgc3RyZWV0Ci0JCQkJSXpoZXZzayBVZG11cnQgUmVwdWJsaWMgNDI2MDM0Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLUIwLTNCICAgKGhleCkJCUhpUSBOZXR3b3JrcwotMDBCMDNCICAgICAoYmFzZSAxNikJCUhpUSBOZXR3b3JrcwotCQkJCTI0NzUgQXVndXN0aW5lIERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTQ4ICAgKGhleCkJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDBCMDQ4ICAgICAoYmFzZSAxNikJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTg2MTYgRnJlZXBvcnQgUGFya3dheQotCQkJCU1TIEEyCi0JCQkJSXJ2aW5nIFRYIDc1MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC00QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwNEEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTUyICAgKGhleCkJCUF0aGVyb3MgQ29tbXVuaWNhdGlvbnMKLTAwQjA1MiAgICAgKGJhc2UgMTYpCQlBdGhlcm9zIENvbW11bmljYXRpb25zCi0JCQkJNTk1NSBULkcuIExlZSBCbHZkLCBTdGUuIDYwMAotCQkJCU9jYWxhIEZMIDMyODIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC02NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwNjQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTY5ICAgKGhleCkJCUhvbmV3ZWxsIE95Ci0wMEIwNjkgICAgIChiYXNlIDE2KQkJSG9uZXdlbGwgT3kKLQkJCQlQLk8uIEJveCAxNjgsIEZJTi03ODIwMQotCQkJCVZhcmthdXMKLQkJCQlGSU5MQU5ECi0KLTAwLUIwLTZEICAgKGhleCkJCUpvbmVzIEZ1dHVyZXggSW5jLgotMDBCMDZEICAgICAoYmFzZSAxNikJCUpvbmVzIEZ1dHVyZXggSW5jLgotCQkJCTM3MTUgQXRoZXJ0b24gUm9hZAotCQkJCVJvY2tsaW4gQ0EgOTU3NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTgwICAgKGhleCkJCU1hbm5lc21hbm4gSXB1bHN5cyBCLlYuCi0wMEIwODAgICAgIChiYXNlIDE2KQkJTWFubmVzbWFubiBJcHVsc3lzIEIuVi4KLQkJCQlCb3JkZXdpamtsYWFuIDE4Ci0JCQkJMjU5MSBYUiBUaGUgSGFndWUgIAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLUIwLTg2ICAgKGhleCkJCUxvY1NvZnQgTGltaXRlZAotMDBCMDg2ICAgICAoYmFzZSAxNikJCUxvY1NvZnQgTGltaXRlZAotCQkJCTcgQnJpZ2h0IFN0cmVldAotCQkJCUNsaXRoZXJvZSBMYW5jYXNoaXJlIEJCNyAxTlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1CMC04RSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwOEUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtOTEgICAoaGV4KQkJVHJhbnNtZXRhIENvcnAuCi0wMEIwOTEgICAgIChiYXNlIDE2KQkJVHJhbnNtZXRhIENvcnAuCi0JCQkJMzk0MCBGcmVlZG9tIENpcmNsZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC05NCAgIChoZXgpCQlBbGFyaXMsIEluYy4KLTAwQjA5NCAgICAgKGJhc2UgMTYpCQlBbGFyaXMsIEluYy4KLQkJCQk0NzMzOCBGcmVtb250IEJvdWxldmFyZAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTlBICAgKGhleCkJCU1vcnJvdyBUZWNobm9sb2dpZXMgQ29ycC4KLTAwQjA5QSAgICAgKGJhc2UgMTYpCQlNb3Jyb3cgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJMjMwMCBUYWxsIFBpbmVzIERyaXZlCi0JCQkJTGFyZ28gRkwgMzM3NzEtNTM0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtOUQgICAoaGV4KQkJUG9pbnQgR3JleSBSZXNlYXJjaCBJbmMuCi0wMEIwOUQgICAgIChiYXNlIDE2KQkJUG9pbnQgR3JleSBSZXNlYXJjaCBJbmMuCi0JCQkJMzA1LTE4NDcgV2VzdCBCcm9hZHdheQotCQkJCVZhbmNvdXZlciBCcml0aXNoIENvbHVtYmlhIFY2SiAxWTYgCi0JCQkJQ0FOQURBCi0KLTAwLUIwLUFDICAgKGhleCkJCVNJQUUtTWljcm9lbGV0dHJvbmljYSBTLnAuQS4KLTAwQjBBQyAgICAgKGJhc2UgMTYpCQlTSUFFLU1pY3JvZWxldHRyb25pY2EgUy5wLkEuCi0JCQkJVmlhIE1pY2hlbGFuZ2VsbyBCdW9uYXJyb3RpLCAyMQotCQkJCTIwMDkzIENvbG9nbm8gTS4gKE1sKSAgCi0JCQkJSVRBTFkKLQotMDAtQjAtQUUgICAoaGV4KQkJU3ltbWV0cmljb20KLTAwQjBBRSAgICAgKGJhc2UgMTYpCQlTeW1tZXRyaWNvbQotCQkJCTIzMDAgT3JjaGFyZCBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLUIzICAgKGhleCkJCVhzdHJlYW1pcyBQTEMKLTAwQjBCMyAgICAgKGJhc2UgMTYpCQlYc3RyZWFtaXMgUExDCi0JCQkJTWFnZGFsZW4gQ2VudHJlCi0JCQkJT3hmb3JkIFNjaWVuY2UgUGFyawotCQkJCU94Zm9yZCAwWDQgNEdBICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1CMC1DMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwQzIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLUM3ICAgKGhleCkJCVRlbGxhYnMgT3BlcmF0aW9ucywgSW5jLgotMDBCMEM3ICAgICAoYmFzZSAxNikJCVRlbGxhYnMgT3BlcmF0aW9ucywgSW5jLgotCQkJCU9uZSBUZWxsYWJzIENlbnRlcgotCQkJCTE0MTUgV2VzdCBEaWVobCBSb2FkCi0JCQkJTmFwZXJ2aWxsZSBJTCA2MDU2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtQ0UgICAoaGV4KQkJVEVDSE5PTE9HWSBSRVNDVUUKLTAwQjBDRSAgICAgKGJhc2UgMTYpCQlURUNITk9MT0dZIFJFU0NVRQotCQkJCTQ2IEF2ZW51ZSBkZXMgU3BlcmVzIEx1bWllcmUKLQkJCQk3ODE5IFRyb3BwZXMgIAotCQkJCUZSQU5DRQotCi0wMC1CMC1EMCAgIChoZXgpCQlEZWxsIENvbXB1dGVyIENvcnAuCi0wMEIwRDAgICAgIChiYXNlIDE2KQkJRGVsbCBDb21wdXRlciBDb3JwLgotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVFggNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLURCICAgKGhleCkJCU5leHRjZWxsLCBJbmMuCi0wMEIwREIgICAgIChiYXNlIDE2KQkJTmV4dGNlbGwsIEluYy4KLQkJCQk2NTEgRWFzdCAxOHRoIFN0cmVldAotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC1ERiAgIChoZXgpCQlSRUxEQVRBIEluYwotMDBCMERGICAgICAoYmFzZSAxNikJCVJFTERBVEEgSW5jCi0JCQkJMTcxOSBSb3V0ZSAxMCAgLSAgU3VpdGUgIzIwOQotCQkJCVBhcnNpcHBhbnkgTkogMDcwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLUU3ICAgKGhleCkJCUJyaXRpc2ggRmVkZXJhbCBMdGQuCi0wMEIwRTcgICAgIChiYXNlIDE2KQkJQnJpdGlzaCBGZWRlcmFsIEx0ZC4KLQkJCQlDYXN0bGUgTWlsbCBXb3JrcwotCQkJCUR1ZGxleSBEWTEgNERBIEVuZ2xhbmQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQjAtRUMgICAoaGV4KQkJRUFDRU0KLTAwQjBFQyAgICAgKGJhc2UgMTYpCQlFQUNFTQotCQkJCUF2ZW51ZSBMb3Vpc2UgMTQwLCBCdGUgNgotCQkJCUItMTA1MCBCUlVTU0VMUyAgCi0JCQkJQkVMR0lVTQotCi0wMC1CMC1FRSAgIChoZXgpCQlBamlsZSBTeXN0ZW1zLCBJbmMuCi0wMEIwRUUgICAgIChiYXNlIDE2KQkJQWppbGUgU3lzdGVtcywgSW5jLgotCQkJCTIwNCBDb2xsaW5zIFJkIE5FCi0JCQkJU3VpdGUgMTAwCi0JCQkJQ2VkYXIgUmFwaWRzIElBIDUyNDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC1GMCAgIChoZXgpCQlDQUxZIE5FVFdPUktTCi0wMEIwRjAgICAgIChiYXNlIDE2KQkJQ0FMWSBORVRXT1JLUwotCQkJCTI5NSBTYW50YSBBbm5hIENvdXJ0Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC1GNSAgIChoZXgpCQlOZXRXb3J0aCBUZWNobm9sb2dpZXMsIEluYy4KLTAwQjBGNSAgICAgKGJhc2UgMTYpCQlOZXRXb3J0aCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMDAwIEdlcm1hbnRvd24gUGlrZQotCQkJCWxkZy4gSi0xCi0JCQkJUGx5bW91dGggTWV0dGluZyBQQSAxOTQ2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjMtNDIgICAoaGV4KQkJTWFjcm9TQU4gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDBCMzQyICAgICAoYmFzZSAxNikJCU1hY3JvU0FOIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlSb29tIDEwMiwgTm8uMiBCdWlsZGluZwotCQkJCTMwMSBCaW4gWGluZyBSb2FkLEJpbmppYW5nIERpc3RyaWN0Ci0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDUyCi0JCQkJQ0hJTkEKLQotMDAtQjUtRDYgICAoaGV4KQkJT21uaWJpdCBJbmMuCi0wMEI1RDYgICAgIChiYXNlIDE2KQkJT21uaWJpdCBJbmMuCi0JCQkJMi03LTksIFNvdG8tS2FuZGEKLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtQkEtQzAgICAoaGV4KQkJQmlvbWV0cmljIEFjY2VzcyBDb21wYW55Ci0wMEJBQzAgICAgIChiYXNlIDE2KQkJQmlvbWV0cmljIEFjY2VzcyBDb21wYW55Ci0JCQkJMjU1NSBOb3J0aCBJSCAzNQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2NjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUJCLTAxICAgKGhleCkJCU9DVE9USE9SUEUgQ09SUC4KLTAwQkIwMSAgICAgKGJhc2UgMTYpCQlPQ1RPVEhPUlBFIENPUlAuCi0JCQkJMjg1IFdFU1QgR1JFRU4gU1RSRUVUCi0JCQkJUEFTQURFTkEgQ0EgOTExMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUJCLThFICAgKGhleCkJCUhNRSBDby4sIEx0ZC4KLTAwQkI4RSAgICAgKGJhc2UgMTYpCQlITUUgQ28uLCBMdGQuCi0JCQkJTm8uMjAwICwgTGlhbyBCZWkgU3RyLixTYW4gTWluIERpc3QuLAotCQkJCUthb2hzaXVuZyAgODA3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1CQi1GMCAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEJCRjAgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQkQtMjcgICAoaGV4KQkJRXhhciBDb3JwLgotMDBCRDI3ICAgICAoYmFzZSAxNikJCUV4YXIgQ29ycC4KLQkJCQk0ODcyMCBLYXRvIFJkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUJELTNBICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0wMEJEM0EgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1NzAKLQkJCQlGSU5MQU5ECi0KLTAwLUMwLTAwICAgKGhleCkJCUxBTk9QVElDUywgTFRELgotMDBDMDAwICAgICAoYmFzZSAxNikJCUxBTk9QVElDUywgTFRELgotCQkJCVAuTy4gQk9YIDE4NAotCQkJCU1JR0RBTCBIQS1FTUVLCi0JCQkJSVNSQUVMIElTUkFFTCAxMDU1MQotCQkJCUlTUkFFTAotCi0wMC1DMC0wMSAgIChoZXgpCQlESUFURUsgUEFUSUVOVCBNQU5BR01FTlQKLTAwQzAwMSAgICAgKGJhc2UgMTYpCQlESUFURUsgUEFUSUVOVCBNQU5BR01FTlQKLQkJCQlTWVNURU1TLCBJTkMuCi0JCQkJNTcyMCBPQkVSTElOIERSSVZFCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxLTE3MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTAyICAgKGhleCkJCVNFUkNPTU0gQ09SUE9SQVRJT04KLTAwQzAwMiAgICAgKGJhc2UgMTYpCQlTRVJDT01NIENPUlBPUkFUSU9OCi0JCQkJM0YsTk8uODEsWVUtWUlIIFJPQUQsQ0hVLU5BTiBDSEVOCi0JCQkJTUlBTy1MSUggSFNVQU4gMzUwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1DMC0wMyAgIChoZXgpCQlHTE9CQUxORVQgQ09NTVVOSUNBVElPTlMKLTAwQzAwMyAgICAgKGJhc2UgMTYpCQlHTE9CQUxORVQgQ09NTVVOSUNBVElPTlMKLQkJCQk5MTIsIFBMQUNFIFRSQU5TIENBTkFEQQotCQkJCUxPTkdVRVVJTCwgUUMKLQkJCQlDQU5BREEgSjRHIDJNMQotCQkJCUNBTkFEQQotCi0wMC1DMC0wNCAgIChoZXgpCQlKQVBBTiBCVVNJTkVTUyBDT01QVVRFUiBDTy5MVEQKLTAwQzAwNCAgICAgKGJhc2UgMTYpCQlKQVBBTiBCVVNJTkVTUyBDT01QVVRFUiBDTy5MVEQKLQkJCQkxMzY4IEZVVE9PLUNITywgS09IT0tVLUtVCi0JCQkJWU9LT0hBTUEtQ0lUWQotCQkJCTIyMiBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTA1ICAgKGhleCkJCUxJVklOR1NUT04gRU5URVJQUklTRVMsIElOQy4KLTAwQzAwNSAgICAgKGJhc2UgMTYpCQlMSVZJTkdTVE9OIEVOVEVSUFJJU0VTLCBJTkMuCi0JCQkJNjkyMCBLT0xMIENFTlRFUiBQQVJLV0FZICMyMjAKLQkJCQlQTEVBU0FOVE9OIENBIDk0NTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0wNiAgIChoZXgpCQlOSVBQT04gQVZJT05JQ1MgQ08uLCBMVEQuCi0wMEMwMDYgICAgIChiYXNlIDE2KQkJTklQUE9OIEFWSU9OSUNTIENPLiwgTFRELgotCQkJCUlORFVTVFJJQUwgU1lTVEVNIERJVklTSU9OCi0JCQkJMjgtMiwgSE9OR09IIDItQ0hPTUUsIFNFWUEtS1UgWU9LT0hBTUEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTA3ICAgKGhleCkJCVBJTk5BQ0xFIERBVEEgU1lTVEVNUywgSU5DLgotMDBDMDA3ICAgICAoYmFzZSAxNikJCVBJTk5BQ0xFIERBVEEgU1lTVEVNUywgSU5DLgotCQkJCTEzNTAgV0VTVCBGSUZUSCBBVkVOVUUKLQkJCQlDT0xVTUJVUyBPSCA0MzIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMDggICAoaGV4KQkJU0VDTyBTUkwKLTAwQzAwOCAgICAgKGJhc2UgMTYpCQlTRUNPIFNSTAotCQkJCVZJQSBDQUxBTUFORFJFSSA5MQotCQkJCTUyMTAwIEFSRVpaTwotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtQzAtMDkgICAoaGV4KQkJS1QgVEVDSE5PTE9HWSAoUykgUFRFIExURAotMDBDMDA5ICAgICAoYmFzZSAxNikJCUtUIFRFQ0hOT0xPR1kgKFMpIFBURSBMVEQKLQkJCQlLVCBCVUlMRElORwotCQkJCTEwMEUgUEFTSVIgUEFOSkFORyBST0FECi0JCQkJU0lOR0FQT1JFIDA1MTEKLQkJCQlTSU5HQVBPUkUKLQotMDAtQzAtMEEgICAoaGV4KQkJTUlDUk8gQ1JBRlQKLTAwQzAwQSAgICAgKGJhc2UgMTYpCQlNSUNSTyBDUkFGVAotCQkJCTItNC0zIE5JU0hJRlVSVU1BVFNVCi0JCQkJT0tBWUFNQSBDSVRZIE9LQVlBTUEgUFJFRi4gNzAwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC0wQiAgIChoZXgpCQlOT1JDT05UUk9MIEEuUy4KLTAwQzAwQiAgICAgKGJhc2UgMTYpCQlOT1JDT05UUk9MIEEuUy4KLQkJCQlQLk8uIEJPWCAxMDI0Ci0JCQkJTi0zMTk0IEhPUlRFTgotCQkJCU5PUldBWQotCQkJCU5PUldBWQotCi0wMC1DMC0wQyAgIChoZXgpCQlSRUxJQSBURUNITk9MR0lFUwotMDBDMDBDICAgICAoYmFzZSAxNikJCVJFTElBIFRFQ0hOT0xHSUVTCi0JCQkJMUYuLCBOTy4gMjQsIElORFVTVFJZIEUuIDlUSAotCQkJCVJELiwgU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTi0KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtMEQgICAoaGV4KQkJQURWQU5DRUQgTE9HSUMgUkVTRUFSQ0gsIElOQy4KLTAwQzAwRCAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBMT0dJQyBSRVNFQVJDSCwgSU5DLgotCQkJCTk0MDEgSkVST05JTU8KLQkJCQlJUlZJTkUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTBFICAgKGhleCkJCVBTSVRFQ0gsIElOQy4KLTAwQzAwRSAgICAgKGJhc2UgMTYpCQlQU0lURUNILCBJTkMuCi0JCQkJMTgzNjggQkFORElMSUVSIENJUkNMRQotCQkJCUZPVU5UQUlOIFZBTExFWSBDQSA5MjcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMEYgICAoaGV4KQkJUVVBTlRVTSBTT0ZUV0FSRSBTWVNURU1TIExURC4KLTAwQzAwRiAgICAgKGJhc2UgMTYpCQlRVUFOVFVNIFNPRlRXQVJFIFNZU1RFTVMgTFRELgotCQkJCTE3NSBURVJSRU5DRSBNQVRUSEVXUyBDUkVTQ0VOVAotCQkJCUtBTkFUQSwgT05UQVJJTyBDQU5BREEKLQkJCQlLMkwgM1Q1Ci0JCQkJQ0FOQURBCi0KLTAwLUMwLTEwICAgKGhleCkJCUhJUkFLQVdBIEhFV1RFQ0ggQ09SUC4KLTAwQzAxMCAgICAgKGJhc2UgMTYpCQlISVJBS0FXQSBIRVdURUNIIENPUlAuCi0JCQkJN0YsIEJMREcuQiwgT01PUkkgQkVMTFBPUlQKLQkJCQk2LTI2LTIsIE1JTkFNSS1PSSxTSElOQUdBV0EtS1UgVE9LWU8gMTQwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC0xMSAgIChoZXgpCQlJTlRFUkFDVElWRSBDT01QVVRJTkcgREVWSUNFUwotMDBDMDExICAgICAoYmFzZSAxNikJCUlOVEVSQUNUSVZFIENPTVBVVElORyBERVZJQ0VTCi0JCQkJMTczNSBURUNITk9MT0dZIERSSVZFLVNURSAjNzIwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTEyICAgKGhleCkJCU5FVFNQQU4gQ09SUE9SQVRJT04KLTAwQzAxMiAgICAgKGJhc2UgMTYpCQlORVRTUEFOIENPUlBPUkFUSU9OCi0JCQkJMTQxMSBFLiBDQU1QQkVMTCBSRAotCQkJCVNVSVRFICMxMDAwCi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMTMgICAoaGV4KQkJTkVUUklYCi0wMEMwMTMgICAgIChiYXNlIDE2KQkJTkVUUklYCi0JCQkJMTM1OTUgRFVMTEVTIFRFQ0hOT0xPR1kgRFJJVkUKLQkJCQlIRVJORE9OIFZBIDIyMDcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0xNCAgIChoZXgpCQlURUxFTUFUSUNTIENBTEFCQVNBUyBJTlQnTCxJTkMKLTAwQzAxNCAgICAgKGJhc2UgMTYpCQlURUxFTUFUSUNTIENBTEFCQVNBUyBJTlQnTCxJTkMKLQkJCQkyNjYzMCBBR09VUkEgUk9BRAotCQkJCUNBTEFCQVNBUyBDQSA5MTMwMi0xOTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0xNSAgIChoZXgpCQlORVcgTUVESUEgQ09SUE9SQVRJT04KLTAwQzAxNSAgICAgKGJhc2UgMTYpCQlORVcgTUVESUEgQ09SUE9SQVRJT04KLQkJCQkxNTM3NSBCQVJSQU5DQSBQQVJLV0FZCi0JCQkJQlVJTERJTkcKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTE2ICAgKGhleCkJCUVMRUNUUk9OSUMgVEhFQVRSRSBDT05UUk9MUwotMDBDMDE2ICAgICAoYmFzZSAxNikJCUVMRUNUUk9OSUMgVEhFQVRSRSBDT05UUk9MUwotCQkJCTMwMzAgTEFVUkEgTEFORQotCQkJCU1JRERMRVRPTiBXSSA1MzU2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMTcgICAoaGV4KQkJRmx1a2UgQ29ycG9yYXRpb24KLTAwQzAxNyAgICAgKGJhc2UgMTYpCQlGbHVrZSBDb3Jwb3JhdGlvbgotCQkJCTY5MjAgU2Vhd2F5IEJsdmQuCi0JCQkJRXZlcmV0dCBXQSA5ODIwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMTggICAoaGV4KQkJTEFOQVJUIENPUlBPUkFUSU9OCi0wMEMwMTggICAgIChiYXNlIDE2KQkJTEFOQVJUIENPUlBPUkFUSU9OCi0JCQkJMTQ1IFJPU0VNQVJZIFNUUkVFVAotCQkJCU5FRURIQU0gTUEgMDIxOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTE5ICAgKGhleCkJCUxFQVAgVEVDSE5PTE9HWSwgSU5DLgotMDBDMDE5ICAgICAoYmFzZSAxNikJCUxFQVAgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTIwCi0JCQkJQlVSTElOR1RPTiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMUEgICAoaGV4KQkJQ09ST01FVFJJQ1MgTUVESUNBTCBTWVNURU1TCi0wMEMwMUEgICAgIChiYXNlIDE2KQkJQ09ST01FVFJJQ1MgTUVESUNBTCBTWVNURU1TCi0JCQkJNjEgQkFSTkVTIFBBUksgUk9BRCBOT1JUSAotCQkJCVdBTExJTkdGT1JEIENUIDA2NDkyLTAzMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTFCICAgKGhleCkJCVNPQ0tFVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBDMDFCICAgICAoYmFzZSAxNikJCVNPQ0tFVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTI4MjMgV0hJUFBMRSBSRC4KLQkJCQlVTklPTiBDSVRZIENBIDk0NTg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0xQyAgIChoZXgpCQlJTlRFUkxJTksgQ09NTVVOSUNBVElPTlMgTFRELgotMDBDMDFDICAgICAoYmFzZSAxNikJCUlOVEVSTElOSyBDT01NVU5JQ0FUSU9OUyBMVEQuCi0JCQkJQlJVTkVMIFJPQUQsCi0JCQkJR09SU0UgTEFORSBJTkRVU1RSSUFMIEVTVEFURSBDTEFDVE9OLU9OLQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC0xRCAgIChoZXgpCQlHUkFORCBKVU5DVElPTiBORVRXT1JLUywgSU5DLgotMDBDMDFEICAgICAoYmFzZSAxNikJCUdSQU5EIEpVTkNUSU9OIE5FVFdPUktTLCBJTkMuCi0JCQkJMzEwMSBXSElQUExFIFJELiwgIzI3Ci0JCQkJVU5JT04gQ0lUWSBDQSA5NDU4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMUUgICAoaGV4KQkJTEEgRlJBTkNBSVNFIERFUyBKRVVYCi0wMEMwMUUgICAgIChiYXNlIDE2KQkJTEEgRlJBTkNBSVNFIERFUyBKRVVYCi0JCQkJQ0VOVFJFIERFIFJPVVNTWS9EVEkKLQkJCQk3NzIzMCBST1VTU1ktTEUtVklFVVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtQzAtMUYgICAoaGV4KQkJUy5FLlIuQy5FLkwuCi0wMEMwMUYgICAgIChiYXNlIDE2KQkJUy5FLlIuQy5FLkwuCi0JCQkJQi5QLiA0MzkKLQkJCQk0NDQ3NCBDQVJRVUVGT1UgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtQzAtMjAgICAoaGV4KQkJQVJDTyBFTEVDVFJPTklDLCBDT05UUk9MIExURC4KLTAwQzAyMCAgICAgKGJhc2UgMTYpCQlBUkNPIEVMRUNUUk9OSUMsIENPTlRST0wgTFRELgotCQkJCTI3NTAgTk9SVEggMjlUSCBBVkUuLVNURS4jMzE2Ci0JCQkJSE9MTFlXT09EIEZMIDMzMDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0yMSAgIChoZXgpCQlORVRFWFBSRVNTCi0wMEMwMjEgICAgIChiYXNlIDE2KQkJTkVURVhQUkVTUwotCQkJCTk4OSBFQVNUIEhJTExTREFMRSBCTFZELgotCQkJCVNVSVRFICMyOTAKLQkJCQlGT1NURVIgQ0lUWSBDQSA5NDQwNC0yMTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0yMiAgIChoZXgpCQlMQVNFUk1BU1RFUiBURUNITk9MT0dJRVMsIElOQy4KLTAwQzAyMiAgICAgKGJhc2UgMTYpCQlMQVNFUk1BU1RFUiBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk3MTU2IFNIQURZIE9BSyBST0FECi0JCQkJRURFTiBQUkFJUklFIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0yMyAgIChoZXgpCQlUVVRBTktIQU1PTiBFTEVDVFJPTklDUwotMDBDMDIzICAgICAoYmFzZSAxNikJCVRVVEFOS0hBTU9OIEVMRUNUUk9OSUNTCi0JCQkJMjQ0NiBFU1RBTkQgV0FZCi0JCQkJUExFQVNBTlQgSElMTCBDQSA5NDUyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMjQgICAoaGV4KQkJRURFTiBTSVNURU1BUyBERSBDT01QVVRBQ0FPIFNBCi0wMEMwMjQgICAgIChiYXNlIDE2KQkJRURFTiBTSVNURU1BUyBERSBDT01QVVRBQ0FPIFNBCi0JCQkJUlVBIERPIE9VVklET1IgMTIxIDUgQU5EQVIKLQkJCQlSSU8gREUgSkFORUlSTwotCQkJCUJSQVpJTAotCQkJCUJSQVpJTAotCi0wMC1DMC0yNSAgIChoZXgpCQlEQVRBUFJPRFVDVFMgQ09SUE9SQVRJT04KLTAwQzAyNSAgICAgKGJhc2UgMTYpCQlEQVRBUFJPRFVDVFMgQ09SUE9SQVRJT04KLQkJCQk2MjE5IERFU09UTyBBVkVOVUUKLQkJCQlXT09ETEFORCBISUxMUyBDQSA5MTM2NS0wNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0yNiAgIChoZXgpCQlMQU5TIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMEMwMjYgICAgIChiYXNlIDE2KQkJTEFOUyBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTE1MyBNSU5UU1UgUkQuIDJGLCBUQU9ZVUFOLAotCQkJCVRBSVdBTiBSLiBPLiBDLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtMjcgICAoaGV4KQkJQ0lQSEVSIFNZU1RFTVMsIElOQy4KLTAwQzAyNyAgICAgKGJhc2UgMTYpCQlDSVBIRVIgU1lTVEVNUywgSU5DLgotCQkJCTE4MDAgTlcgMTY5dGggUGxhY2UKLQkJCQlTdWl0ZSBCLTEwMAotCQkJCUJlYXZlcnRvbiBPUiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMjggICAoaGV4KQkJSkFTQ08gQ09SUE9SQVRJT04KLTAwQzAyOCAgICAgKGJhc2UgMTYpCQlKQVNDTyBDT1JQT1JBVElPTgotCQkJCTI5NjctNSBJU0hJS0FXQS1DSE8sCi0JCQkJSEFDSElPSkktU0hJIFRPS1lPIDE5MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtMjkgICAoaGV4KQkJTmV4YW5zIERldXRzY2hsYW5kIEdtYkggLSBBTlMKLTAwQzAyOSAgICAgKGJhc2UgMTYpCQlOZXhhbnMgRGV1dHNjaGxhbmQgR21iSCAtIEFOUwotCQkJCUJvbm5lbmJyb2ljaGVyIFN0ci4gMTAwCi0JCQkJNDEyMzggTW9lbmNoZW5nbGFkYmFjaAotCQkJCUdFUk1BTlkKLQotMDAtQzAtMkEgICAoaGV4KQkJT0hLVVJBIEVMRUNUUklDIENPLiwgTFRELgotMDBDMDJBICAgICAoYmFzZSAxNikJCU9IS1VSQSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQkyLTkwLTIwIFNISVJBS08gV0FLTyBDSVRZCi0JCQkJU0FJVEFNQSBQUkVGLgotCQkJCTM1MS0wMSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTJCICAgKGhleCkJCUdFUkxPRkYgR0VTRUxMU0NIQUZUIEZVUgotMDBDMDJCICAgICAoYmFzZSAxNikJCUdFUkxPRkYgR0VTRUxMU0NIQUZUIEZVUgotCQkJCUVMRUtST05JU0NIRSBTWVNURU1FTlRXSUNLTFVORwotCQkJCUZBU0FORU5XRUcgMjUgVy0yMDAwIEhBTUJVUkcgNzMKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1DMC0yQyAgIChoZXgpCQlDRU5UUlVNIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEMwMkMgICAgIChiYXNlIDE2KQkJQ0VOVFJVTSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTI4ODAgWkFOS0VSIFJPQUQtU1RFICMxMDgKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMkQgICAoaGV4KQkJRlVKSSBQSE9UTyBGSUxNIENPLiwgTFRELgotMDBDMDJEICAgICAoYmFzZSAxNikJCUZVSkkgUEhPVE8gRklMTSBDTy4sIExURC4KLQkJCQk3OTggTUlZQU5PREFJIEtBSVNFSS1NQUNISQotCQkJCUFTSElHQVJBLUtBTUktR1VOIEtBTkFHQVdBCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC0yRSAgIChoZXgpCQlORVRXSVoKLTAwQzAyRSAgICAgKGJhc2UgMTYpCQlORVRXSVoKLQkJCQkyNiBHT0xPTUIgU1RSRUVUCi0JCQkJSEFJRkEgIDMzMzkxCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLUMwLTJGICAgKGhleCkJCU9LVU1BIENPUlBPUkFUSU9OCi0wMEMwMkYgICAgIChiYXNlIDE2KQkJT0tVTUEgQ09SUE9SQVRJT04KLQkJCQlPR1VDSEktQ0hPLCBOSVdBLUdVTgotCQkJCUFJQ0hJIDQ4MC0wMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtMzAgICAoaGV4KQkJSU5URUdSQVRFRCBFTkdJTkVFUklORyBCLiBWLgotMDBDMDMwICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgRU5HSU5FRVJJTkcgQi4gVi4KLQkJCQlFTExFUk1BTlNUUkFBVCAxNQotCQkJCTEwOTkgQlcgQU1TVEVSREFNCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtQzAtMzEgICAoaGV4KQkJREVTSUdOIFJFU0VBUkNIIFNZU1RFTVMsIElOQy4KLTAwQzAzMSAgICAgKGJhc2UgMTYpCQlERVNJR04gUkVTRUFSQ0ggU1lTVEVNUywgSU5DLgotCQkJCTkyNSBFLiBFWEVDVVRJVkUgUEFSSyBEUi4KLQkJCQlTVUlURQotCQkJCVNBTFQgTEFLRSBDSVRZIFVUIDg0MTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0zMiAgIChoZXgpCQlJLUNVQkVEIExJTUlURUQKLTAwQzAzMiAgICAgKGJhc2UgMTYpCQlJLUNVQkVEIExJTUlURUQKLQkJCQlVTklUIEoxLCBUSEUgUE9BRERPQ0tTCi0JCQkJMzQ3IENIRVJSWSBISU5UT04gUk9BRCBDQU1CUklER0UKLQkJCQlDQjEgNERIIENCMSA0REggRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLTMzICAgKGhleCkJCVRFTEVCSVQgQ09NTVVOSUNBVElPTlMgQVBTCi0wMEMwMzMgICAgIChiYXNlIDE2KQkJVEVMRUJJVCBDT01NVU5JQ0FUSU9OUyBBUFMKLQkJCQlTS0FOREVSQk9SR1ZFSiAyMzQKLQkJCQlESy04MjYwIFZJQlkKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC1DMC0zNCAgIChoZXgpCQlUUkFOU0FDVElPTiBORVRXT1JLCi0wMEMwMzQgICAgIChiYXNlIDE2KQkJVFJBTlNBQ1RJT04gTkVUV09SSwotCQkJCVNFUlZJQ0VTLCBJTkMuCi0JCQkJT01OSUxJTksgQ09NTVVOSUNBVElPTlMgRElWLiAzMTAxIFRFQ0hOTwotCQkJCUxBTlNJTkcgTUkgNDg5MTAtODM1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMzUgICAoaGV4KQkJUVVJTlRBUiBDT01QQU5ZCi0wMEMwMzUgICAgIChiYXNlIDE2KQkJUVVJTlRBUiBDT01QQU5ZCi0JCQkJMzcwIEFNQVBPTEEgQVZFLiwgU1RFLiMxMDYKLQkJCQlUT1JSQU5DRSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMzYgICAoaGV4KQkJUkFZVEVDSCBFTEVDVFJPTklDIENPUlAuCi0wMEMwMzYgICAgIChiYXNlIDE2KQkJUkFZVEVDSCBFTEVDVFJPTklDIENPUlAuCi0JCQkJMkYsIE5PLjYsIExBTkUgNDk3Ci0JCQkJQ0hVTkcgQ0hFTkcgUkQsIEhTSU4gVElFTiBDSVRZIFRBSVBFSSBIUwotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLTM3ICAgKGhleCkJCURZTkFURU0KLTAwQzAzNyAgICAgKGJhc2UgMTYpCQlEWU5BVEVNCi0JCQkJMTU3OTUgUk9DS0ZJRUxEIEJMVkQuCi0JCQkJU1VJVEUKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTM4ICAgKGhleCkJCVJBU1RFUiBJTUFHRSBQUk9DRVNTSU5HIFNZU1RFTQotMDBDMDM4ICAgICAoYmFzZSAxNikJCVJBU1RFUiBJTUFHRSBQUk9DRVNTSU5HIFNZU1RFTQotCQkJCTQ2NjUgTkFVVElMVVMgQ09VUlQgU09VVEgKLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0zOSAgIChoZXgpCQlUZXJpZGlhbiBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uCi0wMEMwMzkgICAgIChiYXNlIDE2KQkJVGVyaWRpYW4gU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlvbgotCQkJCTY0NDAgT2FrIENhbnlvbgotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtM0EgICAoaGV4KQkJTUVOLU1JS1JPIEVMRUtUUk9OSUsgR01CSAotMDBDMDNBICAgICAoYmFzZSAxNikJCU1FTi1NSUtSTyBFTEVLVFJPTklLIEdNQkgKLQkJCQlXSUVTRU5UQUxTVFJBU1NFIDQwCi0JCQkJVy04NTAwIE5VRVJOQkVSRyA5MAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUMwLTNCICAgKGhleCkJCU1VTFRJQUNDRVNTIENPTVBVVElORyBDT1JQLgotMDBDMDNCICAgICAoYmFzZSAxNikJCU1VTFRJQUNDRVNTIENPTVBVVElORyBDT1JQLgotCQkJCTUzNTAgSE9MTElTVEVSIEFWRS4sIFNURS4KLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0zQyAgIChoZXgpCQlUT1dFUiBURUNIIFMuUi5MLgotMDBDMDNDICAgICAoYmFzZSAxNikJCVRPV0VSIFRFQ0ggUy5SLkwuCi0JCQkJVklBIFJJRE9MRkkgNiw4Ci0JCQkJNTYxMjQgUElTQQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtQzAtM0QgICAoaGV4KQkJV0lFU0VNQU5OICYgVEhFSVMgR01CSAotMDBDMDNEICAgICAoYmFzZSAxNikJCVdJRVNFTUFOTiAmIFRIRUlTIEdNQkgKLQkJCQlXSVRURU5FUiBTVFIuIDMxMgotCQkJCTU2MDAgV1VQUEVSVEFMIDIKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1DMC0zRSAgIChoZXgpCQlGQS4gR0VCUi4gSEVMTEVSIEdNQkgKLTAwQzAzRSAgICAgKGJhc2UgMTYpCQlGQS4gR0VCUi4gSEVMTEVSIEdNQkgKLQkJCQlQLk8uIEJPWCAxNDI4LCBERVAuIEVFNwotCQkJCTc0NDAgTlVSVElOR0VOCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQzAtM0YgICAoaGV4KQkJU1RPUkVTIEFVVE9NQVRFRCBTWVNURU1TLCBJTkMuCi0wMEMwM0YgICAgIChiYXNlIDE2KQkJU1RPUkVTIEFVVE9NQVRFRCBTWVNURU1TLCBJTkMuCi0JCQkJMTM2MCBBREFNUyBST0FECi0JCQkJQkVOU0FMRU0gUEEgMTkwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTQwICAgKGhleCkJCUVDQ0kKLTAwQzA0MCAgICAgKGJhc2UgMTYpCQlFQ0NJCi0JCQkJMTUwNzAtQiBBVkVOVUUgT0YgU0NJRU5DRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNDEgICAoaGV4KQkJRElHSVRBTCBUUkFOU01JU1NJT04gU1lTVEVNUwotMDBDMDQxICAgICAoYmFzZSAxNikJCURJR0lUQUwgVFJBTlNNSVNTSU9OIFNZU1RFTVMKLQkJCQk0ODMwIFJJVkVSIEdSRUVOIFBBUktXQVkKLQkJCQlEVUxVVEggR0EgMzAxMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTQyICAgKGhleCkJCURBVEFMVVggQ09SUC4KLTAwQzA0MiAgICAgKGJhc2UgMTYpCQlEQVRBTFVYIENPUlAuCi0JCQkJMjgzNiBDRVNTTkEgRFJJVkUKLQkJCQlXSU5DSEVTVEVSIFZBIDIyNjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00MyAgIChoZXgpCQlTVFJBVEFDT00KLTAwQzA0MyAgICAgKGJhc2UgMTYpCQlTVFJBVEFDT00KLQkJCQkxNDAwIFBBUktNT09SIEFWRU5VRQotCQkJCVNBTiBKT1NFIENBIDk1MTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00NCAgIChoZXgpCQlFTUNPTSBDT1JQT1JBVElPTgotMDBDMDQ0ICAgICAoYmFzZSAxNikJCUVNQ09NIENPUlBPUkFUSU9OCi0JCQkJODQwIEFWRU5VRQotCQkJCVBMQU5PIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00NSAgIChoZXgpCQlJU09MQVRJT04gU1lTVEVNUywgTFRELgotMDBDMDQ1ICAgICAoYmFzZSAxNikJCUlTT0xBVElPTiBTWVNURU1TLCBMVEQuCi0JCQkJMjYgU0lYIFBPSU5UIFJPQUQKLQkJCQlUT1JPTlRPLCBPTlRBUklPCi0JCQkJQ0FOQURBIE04WiAyVzkKLQkJCQlDQU5BREEKLQotMDAtQzAtNDYgICAoaGV4KQkJQmx1ZSBDaGlwIFRlY2hub2xvZ3kgTHRkCi0wMEMwNDYgICAgIChiYXNlIDE2KQkJQmx1ZSBDaGlwIFRlY2hub2xvZ3kgTHRkCi0JCQkJQ2hvd2xleSBPYWsgTGFuZQotCQkJCVRhdHRlbmhhbGwKLQkJCQlDaGVzdGVyIENoZXNoaXJlIENIMyA5RVgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC00NyAgIChoZXgpCQlVTklNSUNSTyBTWVNURU1TLCBJTkMuCi0wMEMwNDcgICAgIChiYXNlIDE2KQkJVU5JTUlDUk8gU1lTVEVNUywgSU5DLgotCQkJCTQ0MzgyIFMuIEdSSU1NRVIgQkxWRC4KLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00OCAgIChoZXgpCQlCQVkgVEVDSE5JQ0FMIEFTU09DSUFURVMKLTAwQzA0OCAgICAgKGJhc2UgMTYpCQlCQVkgVEVDSE5JQ0FMIEFTU09DSUFURVMKLQkJCQkyMDAgTi4gU0VDT05EIFNUUkVFVAotCQkJCVAuTy4gQk9YIDM4NwotCQkJCUJBWSBTVC4gTE9VSVMgTVMgMzk1MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTQ5ICAgKGhleCkJCVUuUy4gUk9CT1RJQ1MsIElOQy4KLTAwQzA0OSAgICAgKGJhc2UgMTYpCQlVLlMuIFJPQk9USUNTLCBJTkMuCi0JCQkJODEwMCBOT1JUSCBNQ0NPUk1JQ0sgQkxWRC4KLQkJCQlTS09LSUUgSUwgNjAwNzYtMjk5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNEEgICAoaGV4KQkJR1JPVVAgMjAwMCBBRwotMDBDMDRBICAgICAoYmFzZSAxNikJCUdST1VQIDIwMDAgQUcKLQkJCQlQLk8uIEJPWCAzMzEKLQkJCQlUQU5OQUdFUlRFTlNUUi4gOSBDSC04NjM1IERVUk5URU4KLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLUMwLTRCICAgKGhleCkJCUNSRUFUSVZFIE1JQ1JPU1lTVEVNUwotMDBDMDRCICAgICAoYmFzZSAxNikJCUNSRUFUSVZFIE1JQ1JPU1lTVEVNUwotCQkJCTksIEFWRU5VRSBEVSBDQU5BREEKLQkJCQlQQVJDIEhJR0hURUMgNiBaLkEuIERFIENPVVJUQUJPRVVGCi0JCQkJOTE5NjYgTEVTIFVMSVMtLS1GUkFOQwotCQkJCUZSQU5DRQotCi0wMC1DMC00QyAgIChoZXgpCQlERVBBUlRNRU5UIE9GIEZPUkVJR04gQUZGQUlSUwotMDBDMDRDICAgICAoYmFzZSAxNikJCURFUEFSVE1FTlQgT0YgRk9SRUlHTiBBRkZBSVJTCi0JCQkJJiBUUkFERQotCQkJCUFETUlOSVNUUkFUSVZFIEJVSUxESU5HIFBBUktFUyBQTEFDRSwgIFAKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtQzAtNEQgICAoaGV4KQkJTUlURUMsIElOQy4KLTAwQzA0RCAgICAgKGJhc2UgMTYpCQlNSVRFQywgSU5DLgotCQkJCUJSLUtBTUVJRE8gMSBCVUlMRElORwotCQkJCVotMzMtMSwgS0FNRUlETywgS09VVE9VLUtVIFRPS1lPLCAxMzYKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTRFICAgKGhleCkJCUNPTVRST0wgQ09SUE9SQVRJT04KLTAwQzA0RSAgICAgKGJhc2UgMTYpCQlDT01UUk9MIENPUlBPUkFUSU9OCi0JCQkJMjY3NSBQQVRUT04gUk9BRAotCQkJCVNULiBQQVVMIE1OIDU1MTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00RiAgIChoZXgpCQlERUxMIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMEMwNEYgICAgIChiYXNlIDE2KQkJREVMTCBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTE4MDcgV0VTVCBCUkFLRVIgTEFORS1CTERHLgotCQkJCUFVU1RJTiBUWCA3ODc1OC0zNjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01MCAgIChoZXgpCQlUT1lPIERFTktJIFNFSVpPIEsuSy4KLTAwQzA1MCAgICAgKGJhc2UgMTYpCQlUT1lPIERFTktJIFNFSVpPIEsuSy4KLQkJCQk0LTYtMzIgSElHQVNISUtBU0hJV0FHQVlBCi0JCQkJRUJJTkFTSEkKLQkJCQlLQU5BR0FXQSBKQVBBTiAyNDMtMDQKLQkJCQlKQVBBTgotCi0wMC1DMC01MSAgIChoZXgpCQlBRFZBTkNFRCBJTlRFR1JBVElPTiBSRVNFQVJDSAotMDBDMDUxICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIElOVEVHUkFUSU9OIFJFU0VBUkNICi0JCQkJMjE4OCBERUwgRlJBTkNPIFNUUkVFVAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01MiAgIChoZXgpCQlCVVJSLUJST1dOCi0wMEMwNTIgICAgIChiYXNlIDE2KQkJQlVSUi1CUk9XTgotCQkJCVAuTy4gQk9YIDExNDAwCi0JCQkJVFVDU09OIEFaIDg1NzM0LTE0MDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTUzICAgKGhleCkJCUFzcGVjdCBTb2Z0d2FyZSBJbmMuCi0wMEMwNTMgICAgIChiYXNlIDE2KQkJQXNwZWN0IFNvZnR3YXJlIEluYy4KLQkJCQk2IFRlY2hub2xvZ3kgUGFyayBEcml2ZQotCQkJCVdlc3Rmb3JkIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01NCAgIChoZXgpCQlORVRXT1JLIFBFUklQSEVSQUxTLCBMVEQuCi0wMEMwNTQgICAgIChiYXNlIDE2KQkJTkVUV09SSyBQRVJJUEhFUkFMUywgTFRELgotCQkJCTRUSCBGTE9PUiwgMTcgQk9XQVRFUiBSRC4KLQkJCQlXRVNUTUlOU1RFUiBJTkRVU1RSSUFMIEVTVEFURSBMT05ET04gU0UKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtNTUgICAoaGV4KQkJTU9EVUxBUiBDT01QVVRJTkcgVEVDSE5PTE9HSUVTCi0wMEMwNTUgICAgIChiYXNlIDE2KQkJTU9EVUxBUiBDT01QVVRJTkcgVEVDSE5PTE9HSUVTCi0JCQkJMjM1MiBNQUlOIFNUUkVFVAotCQkJCUNPTkNPUkQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTU2ICAgKGhleCkJCVNPTUVMRUMKLTAwQzA1NiAgICAgKGJhc2UgMTYpCQlTT01FTEVDCi0JCQkJQlAgNzAxMCAtIDk1MDUwCi0JCQkJQ0VSR1kgUE9OVE9JU0UgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtQzAtNTcgICAoaGV4KQkJTVlDTyBFTEVDVFJPTklDUwotMDBDMDU3ICAgICAoYmFzZSAxNikJCU1ZQ08gRUxFQ1RST05JQ1MKLQkJCQlNVVNTRVJPTkdSQU5EIDFHCi0JCQkJUy03NTYgVVBQU0FMQQotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC1DMC01OCAgIChoZXgpCQlEQVRBRVhQRVJUIENPUlAuCi0wMEMwNTggICAgIChiYXNlIDE2KQkJREFUQUVYUEVSVCBDT1JQLgotCQkJCTExNTYgU09OT1BSQSBDT1VSVE4tS0FORyBSRC4KLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTU5ICAgKGhleCkJCURFTlNPIENPUlBPUkFUSU9OCi0wMEMwNTkgICAgIChiYXNlIDE2KQkJREVOU08gQ09SUE9SQVRJT04KLQkJCQkxLTEsIFNob3dhLWNobywKLQkJCQlLYXJpeWEtc2hpLCBBaWNoaSA0NDgtODY2MQotCQkJCUpBUEFOCi0KLTAwLUMwLTVBICAgKGhleCkJCVNFTUFQSE9SRSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDBDMDVBICAgICAoYmFzZSAxNikJCVNFTUFQSE9SRSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotCQkJCTIxNyBIVU1CT0xEVCBDT1VSVAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OS0xMzAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01QiAgIChoZXgpCQlORVRXT1JLUyBOT1JUSFdFU1QsIElOQy4KLTAwQzA1QiAgICAgKGJhc2UgMTYpCQlORVRXT1JLUyBOT1JUSFdFU1QsIElOQy4KLQkJCQlQLk8uIEJPWCAxMTg4Ci0JCQkJSVNTQVFVQUggV0EgOTgwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTVDICAgKGhleCkJCUVMT05FWCBQTEMKLTAwQzA1QyAgICAgKGJhc2UgMTYpCQlFTE9ORVggUExDCi0JCQkJMiBBUFNMRVkgV0FZCi0JCQkJTE9ORE9OLCBOVzIgN0hGCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC01RCAgIChoZXgpCQlMJk4gVEVDSE5PTE9HSUVTCi0wMEMwNUQgICAgIChiYXNlIDE2KQkJTCZOIFRFQ0hOT0xPR0lFUwotCQkJCTI4OTkgQUdPVVJBIFJPQUQgIzE5NgotCQkJCVdFU1RMQUtFIFZJTExBR0UgQ0EgOTEzNjEtMzIwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNUUgICAoaGV4KQkJVkFSSS1MSVRFLCBJTkMuCi0wMEMwNUUgICAgIChiYXNlIDE2KQkJVkFSSS1MSVRFLCBJTkMuCi0JCQkJMjAxIFJFR0FMIFJPVwotCQkJCURBTExBUyBUWCA3NTI0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNUYgICAoaGV4KQkJRklORS1QQUwgQ09NUEFOWSBMSU1JVEVECi0wMEMwNUYgICAgIChiYXNlIDE2KQkJRklORS1QQUwgQ09NUEFOWSBMSU1JVEVECi0JCQkJUk0uIDksIDExRiwgS0lOR1NGT1JEIElORC4gQ1RSCi0JCQkJMTMsIFdBTkcgSE9JIFJPQUQgS09XTE9PTiBCQVksIEtMTgotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC1DMC02MCAgIChoZXgpCQlJRCBTQ0FORElOQVZJQSBBUwotMDBDMDYwICAgICAoYmFzZSAxNikJCUlEIFNDQU5ESU5BVklBIEFTCi0JCQkJUC5PLiBCT1ggNDIyNwotCQkJCU4tNTAyOCBCRVJHRU4KLQkJCQlOT1JXQVkKLQkJCQlOT1JXQVkKLQotMDAtQzAtNjEgICAoaGV4KQkJU09MRUNURUsgQ09SUE9SQVRJT04KLTAwQzA2MSAgICAgKGJhc2UgMTYpCQlTT0xFQ1RFSyBDT1JQT1JBVElPTgotCQkJCTYzNzAgTkFOQ1kgUklER0UgRFIuLVNURS4jMTA5Ci0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02MiAgIChoZXgpCQlJTVBVTFNFIFRFQ0hOT0xPR1kKLTAwQzA2MiAgICAgKGJhc2UgMTYpCQlJTVBVTFNFIFRFQ0hOT0xPR1kKLQkJCQkyMTAgREFITE9ORUdBIFNULiMyMDQKLQkJCQlDVU1NSU5HIEdBIDMwMTMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02MyAgIChoZXgpCQlNT1JOSU5HIFNUQVIgVEVDSE5PTE9HSUVTLCBJTkMKLTAwQzA2MyAgICAgKGJhc2UgMTYpCQlNT1JOSU5HIFNUQVIgVEVDSE5PTE9HSUVTLCBJTkMKLQkJCQkxNzYwIFpPTExJTkdFUiBST0FECi0JCQkJQ09MVU1CVVMgT0ggNDMyMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTY0ICAgKGhleCkJCUdFTkVSQUwgREFUQUNPTU0gSU5ELiBJTkMuCi0wMEMwNjQgICAgIChiYXNlIDE2KQkJR0VORVJBTCBEQVRBQ09NTSBJTkQuIElOQy4KLQkJCQlQQVJLIFJPQUQgRVhURU5TSU9OCi0JCQkJUC5PLiBCT1ggMTI5OQotCQkJCU1JRERMRUJVUlkgQ1QgMDY3NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTY1ICAgKGhleCkJCVNDT1BFIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEMwNjUgICAgIChiYXNlIDE2KQkJU0NPUEUgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMDAgT1RJUyBTVFJFRVQKLQkJCQlOT1JUSEJPUk8gTUEgMDE1MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTY2ICAgKGhleCkJCURPQ1VQT0lOVCwgSU5DLgotMDBDMDY2ICAgICAoYmFzZSAxNikJCURPQ1VQT0lOVCwgSU5DLgotCQkJCTI3MDEgQkFZVklFVyBEUklWRQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTY3ICAgKGhleCkJCVVOSVRFRCBCQVJDT0RFIElORFVTVFJJRVMKLTAwQzA2NyAgICAgKGJhc2UgMTYpCQlVTklURUQgQkFSQ09ERSBJTkRVU1RSSUVTCi0JCQkJMTIyNDAgSU5ESUFOIENSRUVLIENPVVJUCi0JCQkJQkVMVFNWSUxMRSBNRCAyMDcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNjggICAoaGV4KQkJSE1FIENsZWFyLUNvbSBMVEQuCi0wMEMwNjggICAgIChiYXNlIDE2KQkJSE1FIENsZWFyLUNvbSBMVEQuCi0JCQkJNzQwMCBCZWFjaCBEcml2ZQotCQkJCVdhdGVyYmVhY2gKLQkJCQlDYW1icmlkZ2VzaGlyZSAgQ0IyNSA5VFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC02OSAgIChoZXgpCQlBeHhjZWxlcmEgQnJvYWRiYW5kIFdpcmVsZXNzCi0wMEMwNjkgICAgIChiYXNlIDE2KQkJQXh4Y2VsZXJhIEJyb2FkYmFuZCBXaXJlbGVzcwotCQkJCTExMSBDYXN0aWxpYW4gRHJpdmUKLQkJCQlTYW50YSBCYXJiYXJhIENBIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02QSAgIChoZXgpCQlaQUhORVItRUxFS1RSSUsgR01CSCAmIENPLiBLRwotMDBDMDZBICAgICAoYmFzZSAxNikJCVpBSE5FUi1FTEVLVFJJSyBHTUJIICYgQ08uIEtHCi0JCQkJUC5PLiBCT1ggMTg0NgotCQkJCVRIVUVSSU5HRVIgU1RSQVNTRSAxMiBEVy04NjQwIEtST05BQ0gtR1UKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1DMC02QiAgIChoZXgpCQlPU0kgUExVUyBDT1JQT1JBVElPTgotMDBDMDZCICAgICAoYmFzZSAxNikJCU9TSSBQTFVTIENPUlBPUkFUSU9OCi0JCQkJMi0xLTIzIE5BS0FNRUdVUk8KLQkJCQlNRUdVUk8tS1UsIFRPS1lPICAxNTMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTZDICAgKGhleCkJCVNWRUMgQ09NUFVURVIgQ09SUC4KLTAwQzA2QyAgICAgKGJhc2UgMTYpCQlTVkVDIENPTVBVVEVSIENPUlAuCi0JCQkJM0YsIDUzMS0xIENIVU5HIENIRU5HIFJELgotCQkJCUhTSU4tVElFTiBDSVRZLCBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtNkQgICAoaGV4KQkJQk9DQSBSRVNFQVJDSCwgSU5DLgotMDBDMDZEICAgICAoYmFzZSAxNikJCUJPQ0EgUkVTRUFSQ0gsIElOQy4KLQkJCQk2NDAxIENPTkdSRVNTIEFWRU5VRQotCQkJCUJPQ0EgUkFUT04gRkwgMzM0ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTZFICAgKGhleCkJCUhBRlQgVEVDSE5PTE9HWSwgSU5DLgotMDBDMDZFICAgICAoYmFzZSAxNikJCUhBRlQgVEVDSE5PTE9HWSwgSU5DLgotCQkJCURBSU5JLURPSE8gQkxERy4KLQkJCQkzLUNIT01FIDI0LTcgTklOT01JWUEgVFNVS1VCQSBJQkFSQUdJCi0JCQkJMzA1IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtNkYgICAoaGV4KQkJS09NQVRTVSBMVEQuCi0wMEMwNkYgICAgIChiYXNlIDE2KQkJS09NQVRTVSBMVEQuCi0JCQkJMjU5NyBTSElOT01JWUEgSElSQVRTVUtBLVNISQotCQkJCUtBTkFHQVdBIDI1NAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtNzAgICAoaGV4KQkJU0VDVFJBIFNFQ1VSRS1UUkFOU01JU1NJT04gQUIKLTAwQzA3MCAgICAgKGJhc2UgMTYpCQlTRUNUUkEgU0VDVVJFLVRSQU5TTUlTU0lPTiBBQgotCQkJCVRFS05JS1JJTkdFTiAyCi0JCQkJUy01ODMgMzAgTElOS09QSU5HCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLUMwLTcxICAgKGhleCkJCUFSRUFORVggQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQzA3MSAgICAgKGJhc2UgMTYpCQlBUkVBTkVYIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMzMzMyBPQ1RBVklVUyBEUklWRSBVTklUIEMKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNzIgICAoaGV4KQkJS05YIExURC4KLTAwQzA3MiAgICAgKGJhc2UgMTYpCQlLTlggTFRELgotCQkJCUhPTExJTkdXT09EIEhPVVNFCi0JCQkJV0VTVCBDSEVWSU4gUk9BRCBPVExFWSwgVy4gWU9SS1NISVJFCi0JCQkJTFMyMSAzSEEgVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC03MyAgIChoZXgpCQlYRURJQSBDT1JQT1JBVElPTgotMDBDMDczICAgICAoYmFzZSAxNikJCVhFRElBIENPUlBPUkFUSU9OCi0JCQkJMzAxIEJBTExBUkRWQUxFIFNUUkVFVAotCQkJCVdJTE1JTkdUT04gTUEgMDE4ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTc0ICAgKGhleCkJCVRPWU9EQSBBVVRPTUFUSUMgTE9PTQotMDBDMDc0ICAgICAoYmFzZSAxNikJCVRPWU9EQSBBVVRPTUFUSUMgTE9PTQotCQkJCVdPUktTLCBMVEQuCi0JCQkJMi0xLCBUT1lPREEtQ0hPLCBLQVJJWUEtU0hJIEFJQ0hJLUtFTgotCQkJCTQ0OCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTc1ICAgKGhleCkJCVhBTlRFIENPUlBPUkFUSU9OCi0wMEMwNzUgICAgIChiYXNlIDE2KQkJWEFOVEUgQ09SUE9SQVRJT04KLQkJCQkyNTU5IEVNT0dFTkUgU1RSRUVUCi0JCQkJTU9CSUxFIEFMIDM2NjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC03NiAgIChoZXgpCQlJLURBVEEgSU5URVJOQVRJT05BTCBBLVMKLTAwQzA3NiAgICAgKGJhc2UgMTYpCQlJLURBVEEgSU5URVJOQVRJT05BTCBBLVMKLQkJCQkzNS00MyBWQURTVFJVUFZFSgotCQkJCURLLTI4ODAgQkFHU1ZBRVJECi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtQzAtNzcgICAoaGV4KQkJREFFV09PIFRFTEVDT00gTFRELgotMDBDMDc3ICAgICAoYmFzZSAxNikJCURBRVdPTyBURUxFQ09NIExURC4KLQkJCQlQUk9EVUNUUyBERVNJR04gREVQVC4gMQotCQkJCVBST0RVQ1RTIERFU0lHTiBDRU5URVIgU09DSE8uIFAuTy4gQk9YIDEKLQkJCQlTRU9VTCBTRU9VTCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1DMC03OCAgIChoZXgpCQlDT01QVVRFUiBTWVNURU1TIEVOR0lORUVSSU5HCi0wMEMwNzggICAgIChiYXNlIDE2KQkJQ09NUFVURVIgU1lTVEVNUyBFTkdJTkVFUklORwotCQkJCTQ2NzkxIEZSRU1PTlQgQkxWRC4KLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC03OSAgIChoZXgpCQlGT05TWVMgQ08uLExURC4KLTAwQzA3OSAgICAgKGJhc2UgMTYpCQlGT05TWVMgQ08uLExURC4KLQkJCQkyMDktNSwgWUFOR0pBRSwgU0VPQ0hPCi0JCQkJU0VPVUwgIEEzNzEzMAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUMwLTdBICAgKGhleCkJCVBSSVZBIEIuVi4KLTAwQzA3QSAgICAgKGJhc2UgMTYpCQlQUklWQSBCLlYuCi0JCQkJUC5PLiBCT1ggMTgKLQkJCQkyNjc4ICBaRyBERSBMSUVSIChaLUgpCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtQzAtN0IgICAoaGV4KQkJQVNDRU5EIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEMwN0IgICAgIChiYXNlIDE2KQkJQVNDRU5EIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTcwMSBIQVJCT1IgQkFZIFBBUktXQVkKLQkJCQlBTEFNRURBIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC03QyAgIChoZXgpCQlISUdIVEVDSCBJTkZPUk1BVElPTgotMDBDMDdDICAgICAoYmFzZSAxNikJCUhJR0hURUNIIElORk9STUFUSU9OCi0JCQkJU1lTVEVNIExURC4KLQkJCQlVTklUIDcsIDIvRiwgUE8gTFVORyBDRU5UUkUgMTEgV0FORyBDSElVCi0JCQkJSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLUMwLTdEICAgKGhleCkJCVJJU0MgREVWRUxPUE1FTlRTIExURC4KLTAwQzA3RCAgICAgKGJhc2UgMTYpCQlSSVNDIERFVkVMT1BNRU5UUyBMVEQuCi0JCQkJMTE3IEhBVEZJRUxEIFJPQUQKLQkJCQlTVC4gQUxCQU5TLCBIRVJUUyBBTDE0SjUKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtN0UgICAoaGV4KQkJS1VCT1RBIENPUlBPUkFUSU9OIEVMRUNUUk9OSUMKLTAwQzA3RSAgICAgKGJhc2UgMTYpCQlLVUJPVEEgQ09SUE9SQVRJT04gRUxFQ1RST05JQwotCQkJCURFVklDRSBERVBULgotCQkJCTItMzUsIEpJTk1VLUNITywgWUFPLUNJVFkgT1NBS0EgUFJFRi4KLQkJCQlKQVBBTiAjNTgxCi0JCQkJSkFQQU4KLQotMDAtQzAtN0YgICAoaGV4KQkJTlVQT04gQ09NUFVUSU5HIENPUlAuCi0wMEMwN0YgICAgIChiYXNlIDE2KQkJTlVQT04gQ09NUFVUSU5HIENPUlAuCi0JCQkJMTM5MSBXQVJORVIgQVZFLiwgLVNVSVRFCi0JCQkJVFVTVElOIENBIDkyNjgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04MCAgIChoZXgpCQlORVRTVEFSLCBJTkMuCi0wMEMwODAgICAgIChiYXNlIDE2KQkJTkVUU1RBUiwgSU5DLgotCQkJCUNFREFSIEJVU0lORVNTIENFTlRFUgotCQkJCTE4MDEgRS4gNzlUSCBTVFJFRVQKLQkJCQlNSU5ORUFQT0xJUyBNTiA1NTQyNS0xMjM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04MSAgIChoZXgpCQlNRVRST0RBVEEgTFRELgotMDBDMDgxICAgICAoYmFzZSAxNikJCU1FVFJPREFUQSBMVEQuCi0JCQkJQkxFTkhFSU0gSE9VU0UKLQkJCQlDUkFCVFJFRSBPRkZJQ0UgVklMTEFHRSBFVkVSU0xFWSBXQVksIEVHCi0JCQkJVFcyMCA4UlkgVFcyMCA4UlkgRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLTgyICAgKGhleCkJCU1PT1JFIFBST0RVQ1RTIENPLgotMDBDMDgyICAgICAoYmFzZSAxNikJCU1PT1JFIFBST0RVQ1RTIENPLgotCQkJCVNVTU5FWVRPV04gUElLRQotCQkJCVNQUklORyBIT1VTRSBQQSAxOTQ3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtODMgICAoaGV4KQkJVFJBQ0UgTU9VTlRBSU4gUFJPRFVDVFMsIElOQy4KLTAwQzA4MyAgICAgKGJhc2UgMTYpCQlUUkFDRSBNT1VOVEFJTiBQUk9EVUNUUywgSU5DLgotCQkJCTEwNDAgRUFTVCBCUk9LQVcgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04NCAgIChoZXgpCQlEQVRBIExJTksgQ09SUC4gTFRELgotMDBDMDg0ICAgICAoYmFzZSAxNikJCURBVEEgTElOSyBDT1JQLiBMVEQuCi0JCQkJMy0xNS0zIE1JRE9SSUNITwotCQkJCVRPS09ST1pBV0EtQ0lUWSBTQUlUQU1BICAzNTkKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTg1ICAgKGhleCkJCUVMRUNUUk9OSUNTIEZPUiBJTUFHSU5HLCBJTkMuCi0wMEMwODUgICAgIChiYXNlIDE2KQkJRUxFQ1RST05JQ1MgRk9SIElNQUdJTkcsIElOQy4KLQkJCQkyODU1IENBTVBVUyBEUklWRQotCQkJCVNBTiBNQVRFTyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtODYgICAoaGV4KQkJVEhFIExZTksgQ09SUE9SQVRJT04KLTAwQzA4NiAgICAgKGJhc2UgMTYpCQlUSEUgTFlOSyBDT1JQT1JBVElPTgotCQkJCTEwMSBRVUVFTlMgRFJJVkUKLQkJCQlLSU5HIE9GIFBSVVNTSUEgUEEgMTk0MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTg3ICAgKGhleCkJCVVVTkVUIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBDMDg3ICAgICAoYmFzZSAxNikJCVVVTkVUIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTMxMTAgRkFJUlZJRVcgUEFSSyBEUi4gIzU3MAotCQkJCUZBTExTIENIVVJDSCBWQSAyMjA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtODggICAoaGV4KQkJRUtGIEVMRUtUUk9OSUsgR01CSAotMDBDMDg4ICAgICAoYmFzZSAxNikJCUVLRiBFTEVLVFJPTklLIEdNQkgKLQkJCQlQSElMSVBQLVJFSVMtU1RSLiA0Ci0JCQkJNDcwMCBIQU1NCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQzAtODkgICAoaGV4KQkJVEVMSU5EVVMgRElTVFJJQlVUSU9OCi0wMEMwODkgICAgIChiYXNlIDE2KQkJVEVMSU5EVVMgRElTVFJJQlVUSU9OCi0JCQkJR0VMREVOQUFLU0VCQUFOIDMzNQotCQkJCTMwMDEgSEVWRVJMRUUKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC1DMC04QSAgIChoZXgpCQlMYXV0ZXJiYWNoIEdtYkgKLTAwQzA4QSAgICAgKGJhc2UgMTYpCQlMYXV0ZXJiYWNoIEdtYkgKLQkJCQlBbHRsYXVmc3RyLiA0MCwKLQkJCQlI77+9aGVua2lyY2hlbi1TaWVnZXJ0c2JydW5uLCA4NTYzNQotCQkJCUdFUk1BTlkKLQotMDAtQzAtOEIgICAoaGV4KQkJUklTUSBNT0RVTEFSIFNZU1RFTVMsIElOQy4KLTAwQzA4QiAgICAgKGJhc2UgMTYpCQlSSVNRIE1PRFVMQVIgU1lTVEVNUywgSU5DLgotCQkJCTM5ODk5IEJBTEVOVElORSBEUklWRS1TVEUgIzM3NQotCQkJCU5FV0FSSyBDQSA5NDU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOEMgICAoaGV4KQkJUEVSRk9STUFOQ0UgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEMwOEMgICAgIChiYXNlIDE2KQkJUEVSRk9STUFOQ0UgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMzE1IFNDSUVOQ0UgUEFSS1dBWQotCQkJCVJPQ0hFU1RFUiBOWSAxNDYyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOEQgICAoaGV4KQkJVFJPTklYIFBST0RVQ1QgREVWRUxPUE1FTlQKLTAwQzA4RCAgICAgKGJhc2UgMTYpCQlUUk9OSVggUFJPRFVDVCBERVZFTE9QTUVOVAotCQkJCTQ5MDggRS4gTUNET1dFTEwgUkQuIFNURS4jMTAwCi0JCQkJUEhPRU5JWCBBWiA4NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOEUgICAoaGV4KQkJTkVUV09SSyBJTkZPUk1BVElPTiBURUNITk9MT0dZCi0wMEMwOEUgICAgIChiYXNlIDE2KQkJTkVUV09SSyBJTkZPUk1BVElPTiBURUNITk9MT0dZCi0JCQkJMTA0MzAgUy4gREUgQU5aQSBCTFZELgotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOEYgICAoaGV4KQkJUGFuYXNvbmljIEVsZWN0cmljIFdvcmtzIENvLiwgTHRkLgotMDBDMDhGICAgICAoYmFzZSAxNikJCVBhbmFzb25pYyBFbGVjdHJpYyBXb3JrcyBDby4sIEx0ZC4KLQkJCQlUc3UtRmFjdG9yeQotCQkJCTE2NjggRnVqaWthdGEgVHN1LXNoaQotCQkJCU1pZS1rZW4gNTE0LTg1NTUgCi0JCQkJSkFQQU4KLQotMDAtQzAtOTAgICAoaGV4KQkJUFJBSU0gUy5SLkwuCi0wMEMwOTAgICAgIChiYXNlIDE2KQkJUFJBSU0gUy5SLkwuCi0JCQkJVklBIE1BQ0NBTkksIDE2OQotCQkJCTM4MTAwIFRSRU5UTyAoVE4pCi0JCQkJSVRBTFkKLQotMDAtQzAtOTEgICAoaGV4KQkJSkFCSUwgQ0lSQ1VJVCwgSU5DLgotMDBDMDkxICAgICAoYmFzZSAxNikJCUpBQklMIENJUkNVSVQsIElOQy4KLQkJCQkzMjI3NSBNQUxMWSBST0FECi0JCQkJTUFESVNPTiBIRUlHSFRTIE1JIDQ4MDcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC05MiAgIChoZXgpCQlNRU5ORU4gTUVESUNBTCBJTkMuCi0wMEMwOTIgICAgIChiYXNlIDE2KQkJTUVOTkVOIE1FRElDQUwgSU5DLgotCQkJCTEwMTIzIE1BSU4gU1RSRUVUCi0JCQkJQ0xBUkVOQ0UgTlkgMTQwMzEtMjA5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOTMgICAoaGV4KQkJQUxUQSBSRVNFQVJDSCBDT1JQLgotMDBDMDkzICAgICAoYmFzZSAxNikJCUFMVEEgUkVTRUFSQ0ggQ09SUC4KLQkJCQk2MTQgU09VVEggRkVERVJBTCBISUdIV0FZCi0JCQkJREVFUkZJRUxEIEJFQUNIIEZMIDMzNDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC05NCAgIChoZXgpCQlWTVggSU5DLgotMDBDMDk0ICAgICAoYmFzZSAxNikJCVZNWCBJTkMuCi0JCQkJMjExNSBPJ05FTCBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC05NSAgIChoZXgpCQlaTllYCi0wMEMwOTUgICAgIChiYXNlIDE2KQkJWk5ZWAotCQkJCTQ4NDIxIE1pbG1vbnQgRHJpdmUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC05NiAgIChoZXgpCQlUQU1VUkEgQ09SUE9SQVRJT04KLTAwQzA5NiAgICAgKGJhc2UgMTYpCQlUQU1VUkEgQ09SUE9SQVRJT04KLQkJCQlDT01NVU5JQ0FUSU9OIFNZU1RFTVMgRElWLgotCQkJCTE5LTQzIEhJR0FTSEkgT0laVU1JIDEgQ0hPTUUgTkVSSU1BLUtVLAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtOTcgICAoaGV4KQkJQVJDSElQRUwgU0EKLTAwQzA5NyAgICAgKGJhc2UgMTYpCQlBUkNISVBFTCBTQQotCQkJCTEgUlVFIERVIEJVTExPWgotCQkJCUYgNzQ5NDAgQU5ORUNZLUxFLVZJRVVYCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLUMwLTk4ICAgKGhleCkJCUNIVU5URVggRUxFQ1RST05JQyBDTy4sIExURC4KLTAwQzA5OCAgICAgKGJhc2UgMTYpCQlDSFVOVEVYIEVMRUNUUk9OSUMgQ08uLCBMVEQuCi0JCQkJNkYuLCBOTy4yLCBBTExFWSA2LCBMQU5FIDIzNQotCQkJCVBBTyBDSElBTyBSRC4sIEhTSU4gVElFTiwgVEFJUEVJIEhTSUVOCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLTk5ICAgKGhleCkJCVlPU0hJS0kgSU5EVVNUUklBTCBDTy4sTFRELgotMDBDMDk5ICAgICAoYmFzZSAxNikJCVlPU0hJS0kgSU5EVVNUUklBTCBDTy4sTFRELgotCQkJCTEtMzggTUFUU1VHQVNBS0kgMi1DSE9NRQotCQkJCVlPTkVaQVdBIFlBTUFHQVRBCi0JCQkJOTkyIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtOUEgICAoaGV4KQkJUEhPVE9OSUNTIENPUlBPUkFUSU9OCi0wMEMwOUEgICAgIChiYXNlIDE2KQkJUEhPVE9OSUNTIENPUlBPUkFUSU9OCi0JCQkJMjk0MCBOT1JUSCBGSVJTVCBTVFJFRVQKLQkJCQlTQU4gSk9TRSBDQSA5NTEyMy0yMDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC05QiAgIChoZXgpCQlSRUxJQU5DRSBDT01NL1RFQywgUi1URUMKLTAwQzA5QiAgICAgKGJhc2UgMTYpCQlSRUxJQU5DRSBDT01NL1RFQywgUi1URUMKLQkJCQlTWVNURU1TIElOQy4KLQkJCQkyMTAwIFJFTElBTkNFIFBBUktXQVksICBNUyAyMgotCQkJCUJFREZPUkQgVFggNzYwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTlDICAgKGhleCkJCUhJT0tJIEUuRS4gQ09SUE9SQVRJT04KLTAwQzA5QyAgICAgKGJhc2UgMTYpCQlISU9LSSBFLkUuIENPUlBPUkFUSU9OCi0JCQkJODEgS29penVtaSwgVWVkYSwgTmFnYW5vCi0JCQkJQ2hpeW9kYS1rdQotCQkJCVRva3lvICAzODYtMTE5MgotCQkJCUpBUEFOCi0KLTAwLUMwLTlEICAgKGhleCkJCURJU1RSSUJVVEVEIFNZU1RFTVMgSU5UJ0wsIElOQwotMDBDMDlEICAgICAoYmFzZSAxNikJCURJU1RSSUJVVEVEIFNZU1RFTVMgSU5UJ0wsIElOQwotCQkJCTUzMSBXRVNUIFJPT1NFVkxFVCBSRCwgU1RFICMyCi0JCQkJV0hFQVRPTiBJTCA2MDE4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOUUgICAoaGV4KQkJQ0FDSEUgQ09NUFVURVJTLCBJTkMuCi0wMEMwOUUgICAgIChiYXNlIDE2KQkJQ0FDSEUgQ09NUFVURVJTLCBJTkMuCi0JCQkJNDY2MDAgTEFORElORyBQQVJLV0FZCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOUYgICAoaGV4KQkJUVVBTlRBIENPTVBVVEVSLCBJTkMuCi0wMEMwOUYgICAgIChiYXNlIDE2KQkJUVVBTlRBIENPTVBVVEVSLCBJTkMuCi0JCQkJN0YuLCAxMTYsIEhPVS1LQU5HIFNULiwKLQkJCQlTSElILUxJTiBESVNULiBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtQTAgICAoaGV4KQkJQURWQU5DRSBNSUNSTyBSRVNFQVJDSCwgSU5DLgotMDBDMEEwICAgICAoYmFzZSAxNikJCUFEVkFOQ0UgTUlDUk8gUkVTRUFSQ0gsIElOQy4KLQkJCQkyMDQ1IENPUlBPUkFURSBDT1VSVAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1BMSAgIChoZXgpCQlUT0tZTyBERU5TSEkgU0VLRUkgQ08uCi0wMEMwQTEgICAgIChiYXNlIDE2KQkJVE9LWU8gREVOU0hJIFNFS0VJIENPLgotCQkJCTI1NS0xIFJFTktPSkksIFRBTUEtU0hJCi0JCQkJVE9LWU8KLQkJCQlKQVBBTiAyMDYKLQkJCQlKQVBBTgotCi0wMC1DMC1BMiAgIChoZXgpCQlJTlRFUk1FRElVTSBBL1MKLTAwQzBBMiAgICAgKGJhc2UgMTYpCQlJTlRFUk1FRElVTSBBL1MKLQkJCQlPRElOU1ZFSiAxOQotCQkJCURLLTI2MDAgR0xPU1RSVVAKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC1DMC1BMyAgIChoZXgpCQlEVUFMIEVOVEVSUFJJU0VTIENPUlBPUkFUSU9OCi0wMEMwQTMgICAgIChiYXNlIDE2KQkJRFVBTCBFTlRFUlBSSVNFUyBDT1JQT1JBVElPTgotCQkJCTlUSCBGTE9PUiA0OCBOQU4tS0FORyBST0FECi0JCQkJU0VDLjMsIFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1DMC1BNCAgIChoZXgpCQlVTklHUkFGIE9ZCi0wMEMwQTQgICAgIChiYXNlIDE2KQkJVU5JR1JBRiBPWQotCQkJCVJVVUtJTlRJRSAxOAotCQkJCTAyMzIwIEVTUDAwCi0JCQkJRklOTEFORAotCQkJCUZJTkxBTkQKLQotMDAtQzAtQTUgICAoaGV4KQkJRElDS0VOUyBEQVRBIFNZU1RFTVMKLTAwQzBBNSAgICAgKGJhc2UgMTYpCQlESUNLRU5TIERBVEEgU1lTVEVNUwotCQkJCTExNzUgTk9SVEhNRUFET1cgUEtXWS1TVEUgIzE1MAotCQkJCVJPU1dFTEwgR0EgMzAwNzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUE2ICAgKGhleCkJCUVYSUNPTSBBVVNUUkFMSUEgUFRZLiBMVEQKLTAwQzBBNiAgICAgKGJhc2UgMTYpCQlFWElDT00gQVVTVFJBTElBIFBUWS4gTFRECi0JCQkJNDQtNDYgTUFOREFSSU4gU1RSRUVUCi0JCQkJVklMTEFXT09EIE5TVyAyMTYzCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLUMwLUE3ICAgKGhleCkJCVNFRUwgTFRELgotMDBDMEE3ICAgICAoYmFzZSAxNikJCVNFRUwgTFRELgotCQkJCTMgWU9VTkcgU1FVQVJFCi0JCQkJTElWSU5HU1RPTiAgRUg1NCAgOUJKCi0JCQkJU0NPVExBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC1BOCAgIChoZXgpCQlHVkMgQ09SUE9SQVRJT04KLTAwQzBBOCAgICAgKGJhc2UgMTYpCQlHVkMgQ09SUE9SQVRJT04KLQkJCQkxOTYxIENPTkNPVVJTRSBEUklWRS1TVEUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQTkgICAoaGV4KQkJQkFSUk9OIE1DQ0FOTiBMVEQuCi0wMEMwQTkgICAgIChiYXNlIDE2KQkJQkFSUk9OIE1DQ0FOTiBMVEQuCi0JCQkJQkVNQUMgSE9VU0UKLQkJCQlGSUZUSCBBVkVOVUUsIExFVENIV09SVEggSEVSVFMuLCBTRzYgMkhGCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC1BQSAgIChoZXgpCQlTSUxJQ09OIFZBTExFWSBDT01QVVRFUgotMDBDMEFBICAgICAoYmFzZSAxNikJCVNJTElDT04gVkFMTEVZIENPTVBVVEVSCi0JCQkJNDQxIE4uIFdISVNNQU4gUkQuLCBCTERHLiMxMwotCQkJCU1ULiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1BQiAgIChoZXgpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuCi0wMEMwQUIgICAgIChiYXNlIDE2KQkJVGVsY28gU3lzdGVtcywgSW5jLgotCQkJCTE1IEJlcmtzaGlyZSBSb2FkCi0JCQkJTWFuc2ZpZWxkLCBNQSAwMjA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQUMgICAoaGV4KQkJR0FNQklUIENPTVBVVEVSIENPTU1VTklDQVRJT05TCi0wMEMwQUMgICAgIChiYXNlIDE2KQkJR0FNQklUIENPTVBVVEVSIENPTU1VTklDQVRJT05TCi0JCQkJU09MVEFNIElORFVTVFJJQUwgUEFSSwotCQkJCVAuTy4gQk9YIDEwNyBZT0tORUFNIDIwNjkyCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLUMwLUFEICAgKGhleCkJCU1BUkJFTiBDT01NVU5JQ0FUSU9OIFNZU1RFTVMKLTAwQzBBRCAgICAgKGJhc2UgMTYpCQlNQVJCRU4gQ09NTVVOSUNBVElPTiBTWVNURU1TCi0JCQkJMSBSVUUgRFUgQk9JUyBDSEFMQU5ECi0JCQkJTElTU0VTIDkxMDI5IEVWUlkgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtQzAtQUUgICAoaGV4KQkJVE9XRVJDT00gQ08uIElOQy4gREJBIFBDIEhPVVNFCi0wMEMwQUUgICAgIChiYXNlIDE2KQkJVE9XRVJDT00gQ08uIElOQy4gREJBIFBDIEhPVVNFCi0JCQkJODQxIEUuIEFSVEVTSUEgQkxWRC4KLQkJCQlDQVJTT04gQ0EgOTA3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUFGICAgKGhleCkJCVRFS0xPR0lYIElOQy4KLTAwQzBBRiAgICAgKGJhc2UgMTYpCQlURUtMT0dJWCBJTkMuCi0JCQkJMjEwMCBNRUFET1dWQUxFIEJPVUxFVkFSRAotCQkJCU1JU1NJU1NBVUdBLCBPTlRBUklPLAotCQkJCUNBTkFEQSBMNU4gN0o5Ci0JCQkJQ0FOQURBCi0KLTAwLUMwLUIwICAgKGhleCkJCUdDQyBURUNITk9MT0dJRVMsSU5DLgotMDBDMEIwICAgICAoYmFzZSAxNikJCUdDQyBURUNITk9MT0dJRVMsSU5DLgotCQkJCTU4MCBXSU5URVIgU1RSRUVUCi0JCQkJV0FMVEhBTSBNQSAwMjE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQjEgICAoaGV4KQkJR0VOSVVTIE5FVCBDTy4KLTAwQzBCMSAgICAgKGJhc2UgMTYpCQlHRU5JVVMgTkVUIENPLgotCQkJCTRGLCBIQU5TT08gQi9EIDIxMC01Ci0JCQkJWUFOR0pBRS1ET05HLCBTRU9DSE8tR1UgU0VPVUwKLQkJCQlTT1VUSCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1DMC1CMiAgIChoZXgpCQlOT1JBTkQgQ09SUE9SQVRJT04KLTAwQzBCMiAgICAgKGJhc2UgMTYpCQlOT1JBTkQgQ09SUE9SQVRJT04KLQkJCQk1NTAgMk5EIFNUUkVFVCBTRQotCQkJCUNFREFSIFJBUElEUyBJQSA1MjQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQjMgICAoaGV4KQkJQ09NU1RBVCBEQVRBQ09NTSBDT1JQT1JBVElPTgotMDBDMEIzICAgICAoYmFzZSAxNikJCUNPTVNUQVQgREFUQUNPTU0gQ09SUE9SQVRJT04KLQkJCQkxNzIwIFNQRUNUUlVNIERSSVZFCi0JCQkJTEFXUkVOQ0VWSUxMRSBHQSAzMDI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQjQgICAoaGV4KQkJTVlTT04gVEVDSE5PTE9HWSwgSU5DLgotMDBDMEI0ICAgICAoYmFzZSAxNikJCU1ZU09OIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkyRiwgTk8uIDMsIElORFVTVFJZIEUuIFJELklWCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTkNIVSwgKAotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtQjUgICAoaGV4KQkJQ09SUE9SQVRFIE5FVFdPUksgU1lTVEVNUyxJTkMuCi0wMEMwQjUgICAgIChiYXNlIDE2KQkJQ09SUE9SQVRFIE5FVFdPUksgU1lTVEVNUyxJTkMuCi0JCQkJNTcxMSBTSVggRk9SS1MgUk9BRC0tU1RFICMzMDYKLQkJCQlSQUxFSUdIIE5DIDI3NjA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1CNiAgIChoZXgpCQlPdmVybGFuZCBTdG9yYWdlLCBJbmMuCi0wMEMwQjYgICAgIChiYXNlIDE2KQkJT3ZlcmxhbmQgU3RvcmFnZSwgSW5jLgotCQkJCTQ4MjAgT3ZlcmxhbmQgQXZlbnVlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1CNyAgIChoZXgpCQlBTUVSSUNBTiBQT1dFUiBDT05WRVJTSU9OIENPUlAKLTAwQzBCNyAgICAgKGJhc2UgMTYpCQlBTUVSSUNBTiBQT1dFUiBDT05WRVJTSU9OIENPUlAKLQkJCQkyNjcgQk9TVE9OIFJPQUQgIzIKLQkJCQlOT1JUSCBCSUxMRVJJQ0EgTUEgMDE4NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUI4ICAgKGhleCkJCUZSQVNFUidTIEhJTEwgTFRELgotMDBDMEI4ICAgICAoYmFzZSAxNikJCUZSQVNFUidTIEhJTEwgTFRELgotCQkJCTI3NTAyIFcuIEdJTEwgUk9BRAotCQkJCVAuTy4gQk9YIDE4OQotCQkJCU1PUlJJU1RPV04gQVogODUzNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUI5ICAgKGhleCkJCUZVTksgU09GVFdBUkUsIElOQy4KLTAwQzBCOSAgICAgKGJhc2UgMTYpCQlGVU5LIFNPRlRXQVJFLCBJTkMuCi0JCQkJMjIyIFRISVJEIFNUUkVFVAotCQkJCUNBTUJSSURHRSBNQSAwMjE0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQkEgICAoaGV4KQkJTkVUVkFOVEFHRQotMDBDMEJBICAgICAoYmFzZSAxNikJCU5FVFZBTlRBR0UKLQkJCQkyMDEgQ09OVElORU5UQUwgQkxWRC4tU1RFLiMyMDEKLQkJCQlFTCBTRUNVTkRPIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1CQiAgIChoZXgpCQlGT1JWQUwgQ1JFQVRJVkUsIElOQy4KLTAwQzBCQiAgICAgKGJhc2UgMTYpCQlGT1JWQUwgQ1JFQVRJVkUsIElOQy4KLQkJCQkzLTI3LTEyIEhPTkdPCi0JCQkJQlVOS1lPLUtVIFRPS1lPICAxMTMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLUJDICAgKGhleCkJCVRFTEVDT00gQVVTVFJBTElBL0NTU0MKLTAwQzBCQyAgICAgKGJhc2UgMTYpCQlURUxFQ09NIEFVU1RSQUxJQS9DU1NDCi0JCQkJTE9DS0VEIEJBRyA4ODEyCi0JCQkJU09VVEhDT0FTVCBNQUlMIENFTlRSRSAyNTIxIE4uUy5XLgotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC1DMC1CRCAgIChoZXgpCQlJTkVYIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBDMEJEICAgICAoYmFzZSAxNikJCUlORVggVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMzM1MCBTQ09UVCBCTFZELgotCQkJCUJMREcuIzI5Ci0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUJFICAgKGhleCkJCUFMQ0FURUwgLSBTRUwKLTAwQzBCRSAgICAgKGJhc2UgMTYpCQlBTENBVEVMIC0gU0VMCi0JCQkJTE9SRU5aIFNUUi4KLQkJCQk3MDAwIFNUVVRUR0FSVCA0MAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUMwLUJGICAgKGhleCkJCVRFQ0hOT0xPR1kgQ09OQ0VQVFMsIExURC4KLTAwQzBCRiAgICAgKGJhc2UgMTYpCQlURUNITk9MT0dZIENPTkNFUFRTLCBMVEQuCi0JCQkJR1JBTkdFIEVTVEFURQotCQkJCUNXTUJSQU4sIEdXRU5ULCBOUDQ0IDNYUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtQzAgICAoaGV4KQkJU0hPUkUgTUlDUk9TWVNURU1TLCBJTkMuCi0wMEMwQzAgICAgIChiYXNlIDE2KQkJU0hPUkUgTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJMjMgUE9DQUhPTlRBUyBBVkVOVUUKLQkJCQlPQ0VBTlBPUlQgTkogMDc3NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUMxICAgKGhleCkJCVFVQUQvR1JBUEhJQ1MsIElOQy4KLTAwQzBDMSAgICAgKGJhc2UgMTYpCQlRVUFEL0dSQVBISUNTLCBJTkMuCi0JCQkJTjYzIFcyMzA3NSBIV1kgNzQKLQkJCQlTVVNTRVggV0kgNTMwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUMyICAgKGhleCkJCUlORklOSVRFIE5FVFdPUktTIExURC4KLTAwQzBDMiAgICAgKGJhc2UgMTYpCQlJTkZJTklURSBORVRXT1JLUyBMVEQuCi0JCQkJMTkgQlJPT0tTSURFIFJPQUQsIE9YSEVZCi0JCQkJV0FURk9SRCwgSEVSVFMgIFdEMSA0QlcgRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtQzMgICAoaGV4KQkJQUNVU09OIENPTVBVVEVEIFNPTk9HUkFQSFkKLTAwQzBDMyAgICAgKGJhc2UgMTYpCQlBQ1VTT04gQ09NUFVURUQgU09OT0dSQVBIWQotCQkJCTEyMjAgQ0hBUkxFU1RPTiBST0FECi0JCQkJUC5PLiBCT1ggNzM5MwotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwMzktNzM5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQzQgICAoaGV4KQkJQ09NUFVURVIgT1BFUkFUSU9OQUwKLTAwQzBDNCAgICAgKGJhc2UgMTYpCQlDT01QVVRFUiBPUEVSQVRJT05BTAotCQkJCVJFUVVJUkVNRU5UIEFOQUxZU1RTIExURAotCQkJCUNPUkFMIEhPVVNFLCAyNzRBIEhJR0ggU1RSRUVUIEFMREVSU0hPVCwKLQkJCQlHVTEyIDRMWiBHVTEyIDRMWiBFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtQzUgICAoaGV4KQkJU0lEIElORk9STUFUSUNBCi0wMEMwQzUgICAgIChiYXNlIDE2KQkJU0lEIElORk9STUFUSUNBCi0JCQkJUlVBIERSLiBHRVJBTERPIENBTVBPUyBNT1JFSVJBCi0JCQkJMjQwIC0gNSBBTkRBUiBDRVAgMDQ1NzEtMDIwIFNBTyBQQVVMTyAtCi0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLUMwLUM2ICAgKGhleCkJCVBFUlNPTkFMIE1FRElBIENPUlAuCi0wMEMwQzYgICAgIChiYXNlIDE2KQkJUEVSU09OQUwgTUVESUEgQ09SUC4KLQkJCQkxLTctNyBNWSBCTERHLiBISVJBVFNVS0EKLQkJCQlTSElOQUdBV0EsICBUT0tZTyAxNDIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLUM3ICAgKGhleCkJCVNQQVJLVFJVTSBNSUNST1NZU1RFTVMsIElOQy4KLTAwQzBDNyAgICAgKGJhc2UgMTYpCQlTUEFSS1RSVU0gTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJMjg2MCBaQU5LRVIgUk9BRCwgIFNURS4jMjEwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUM4ICAgKGhleCkJCU1JQ1JPIEJZVEUgUFRZLiBMVEQuCi0wMEMwQzggICAgIChiYXNlIDE2KQkJTUlDUk8gQllURSBQVFkuIExURC4KLQkJCQkxOTcgU0hFUkJPVVJORSBSRC4KLQkJCQlNT05UTU9SRU5DWSBNRUxCT1VSTkUgVklDCi0JCQkJQVVTVFJBTElBIDMwOTQKLQkJCQlBVVNUUkFMSUEKLQotMDAtQzAtQzkgICAoaGV4KQkJRUxTQUcgQkFJTEVZIFBST0NFU1MKLTAwQzBDOSAgICAgKGJhc2UgMTYpCQlFTFNBRyBCQUlMRVkgUFJPQ0VTUwotCQkJCUFVVE9NQVRJT04KLQkJCQkyOTgwMSBFVUNMSUQgQVZFTlVFIE1TLTNTMQotCQkJCVdJQ0tMSUZGRSBPSCA0NDA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQ0EgICAoaGV4KQkJQUxGQSwgSU5DLgotMDBDMENBICAgICAoYmFzZSAxNikJCUFMRkEsIElOQy4KLQkJCQkxMS0xLCBJTkRVU1RSWSBFQVNUIFJPQUQgSVYKLQkJCQlTQ0lFTkNFIEJBU0VEIElORFVTVFJJQUwgUEFSSyBIU0lOQ0hVCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1DMC1DQiAgIChoZXgpCQlDT05UUk9MIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwQzBDQiAgICAgKGJhc2UgMTYpCQlDT05UUk9MIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQkyNSBTT1VUSCBTVFJFRVQKLQkJCQlIT1BLSU5UT04gTUEgMDE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUNDICAgKGhleCkJCVRFTEVTQ0lFTkNFUyBDTyBTWVNURU1TLCBJTkMuCi0wMEMwQ0MgICAgIChiYXNlIDE2KQkJVEVMRVNDSUVOQ0VTIENPIFNZU1RFTVMsIElOQy4KLQkJCQkzNTEgTkVXIEFMQkFOWSBSRC4KLQkJCQlNT09SRVNUT1dOIE5KIDA4MDU3LTExNzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUNEICAgKGhleCkJCUNPTUVMVEEsIFMuQS4KLTAwQzBDRCAgICAgKGJhc2UgMTYpCQlDT01FTFRBLCBTLkEuCi0JCQkJQVZEQS4gUEFSQyBURUNOT0xPR0lDLCA0Ci0JCQkJMDgyOTAgQ0VSREFOWU9MQSBERUwgVkFMTEVTIEJBUkNFTE9OQQotCQkJCVNQQUlOCi0JCQkJU1BBSU4KLQotMDAtQzAtQ0UgICAoaGV4KQkJQ0VJIFNZU1RFTVMgJiBFTkdJTkVFUklORyBQVEUKLTAwQzBDRSAgICAgKGJhc2UgMTYpCQlDRUkgU1lTVEVNUyAmIEVOR0lORUVSSU5HIFBURQotCQkJCUJMSyA3MyAjMDItMTggQVlFUiBSQUpBSCBDUkVTQwotCQkJCUFZRVIgUkFKQUggSU5EVVNUUklBTCBFU1RBVEUKLQkJCQlTSU5HQVBPUkUgMDUxMwotCQkJCVNJTkdBUE9SRQotCi0wMC1DMC1DRiAgIChoZXgpCQlJTUFUUkFOIFZPSU1BIE9ZCi0wMEMwQ0YgICAgIChiYXNlIDE2KQkJSU1BVFJBTiBWT0lNQSBPWQotCQkJCUlWTwotCQkJCVAuTy4gQk9YIDM0MCAwMjE1MSBFU1BPTwotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLUMwLUQwICAgKGhleCkJCVJBVE9DIFNZU1RFTSBJTkMuCi0wMEMwRDAgICAgIChiYXNlIDE2KQkJUkFUT0MgU1lTVEVNIElOQy4KLQkJCQlBU0FISSBOQU1CQSBCTERHLgotCQkJCTEtNi0xNCBTSElLSVRTVSBISUdBU0hJIE5BTklXQUtVIE9TQUtBIEMKLQkJCQk1NTYgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC1EMSAgIChoZXgpCQlDT01UUkVFIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwQzBEMSAgICAgKGJhc2UgMTYpCQlDT01UUkVFIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQk1Ri03LCBOTy4gMSwgRlUtSFNJTkcgTk9SVEggUkQKLQkJCQlUQUlQRUkKLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJQ0hJTkEKLQotMDAtQzAtRDIgICAoaGV4KQkJU1lOVEVMTEVDVCwgSU5DLgotMDBDMEQyICAgICAoYmFzZSAxNikJCVNZTlRFTExFQ1QsIElOQy4KLQkJCQkxNTgxMCBOLiAyOFRIIEFWRU5VRQotCQkJCVBIT0VOSVggQVogODUwMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUQzICAgKGhleCkJCU9MWU1QVVMgSU1BR0UgU1lTVEVNUywgSU5DLgotMDBDMEQzICAgICAoYmFzZSAxNikJCU9MWU1QVVMgSU1BR0UgU1lTVEVNUywgSU5DLgotCQkJCTE1MjcxIEJBUlJBTkNBIFBBUktXQVkKLQkJCQlJUlZJTkUgQ0EgOTI3MTgtMjIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRDQgICAoaGV4KQkJQVhPTiBORVRXT1JLUywgSU5DLgotMDBDMEQ0ICAgICAoYmFzZSAxNikJCUFYT04gTkVUV09SS1MsIElOQy4KLQkJCQkxMDQgU1BSVUNFIFNUUkVFVAotCQkJCVdBVEVSVE9XTiBNQSAwMjE3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRDUgICAoaGV4KQkJV2VyYmVhZ2VudHVyIEr8cmdlbiBTaWViZXJ0Ci0wMEMwRDUgICAgIChiYXNlIDE2KQkJV2VyYmVhZ2VudHVyIEr8cmdlbiBTaWViZXJ0Ci0JCQkJSW0gS2xvc3RlcmdhcnRlbiA4Ci0JCQkJRC01MDMyMSBCcvxobCAgCi0JCQkJR0VSTUFOWQotCi0wMC1DMC1ENiAgIChoZXgpCQlKMSBTWVNURU1TLCBJTkMuCi0wMEMwRDYgICAgIChiYXNlIDE2KQkJSjEgU1lTVEVNUywgSU5DLgotCQkJCTMgRFVOV09PRFkgUEFSSy1TVEUuIzEwMwotCQkJCUFUTEFOVEEgR0EgMzAzMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUQ3ICAgKGhleCkJCVRBSVdBTiBUUkFESU5HIENFTlRFUiBEQkEKLTAwQzBENyAgICAgKGJhc2UgMTYpCQlUQUlXQU4gVFJBRElORyBDRU5URVIgREJBCi0JCQkJVFRDIENPTVBVVEVSIFBST0RVQ1RTCi0JCQkJMzI0NCBOLiBTS1lXQVkgQ0lSQ0xFICMxMDIKLQkJCQlJUlZJTkcgVFggNzUwMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUQ4ICAgKGhleCkJCVVOSVZFUlNBTCBEQVRBIFNZU1RFTVMKLTAwQzBEOCAgICAgKGJhc2UgMTYpCQlVTklWRVJTQUwgREFUQSBTWVNURU1TCi0JCQkJNTAwMCBCUkFERk9SRCBEUklWRQotCQkJCUhVTlRTVklMTEUgQUwgMzU4MDUtMTk5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRDkgICAoaGV4KQkJUVVJTlRFIE5FVFdPUksgQ09ORklERU5USUFMSVRZCi0wMEMwRDkgICAgIChiYXNlIDE2KQkJUVVJTlRFIE5FVFdPUksgQ09ORklERU5USUFMSVRZCi0JCQkJRVFVSVBNRU5UIElOQy4KLQkJCQkyMDcgLSAxMjEgRElNREFTIFNUUkVFVCBFQVNUIEJFTExFVklMTEUsCi0JCQkJQ0FOQURBIEs4TiAxQzMKLQkJCQlDQU5BREEKLQotMDAtQzAtREEgICAoaGV4KQkJTklDRSBTWVNURU1TIExURC4KLTAwQzBEQSAgICAgKGJhc2UgMTYpCQlOSUNFIFNZU1RFTVMgTFRELgotCQkJCTMgVEVWVU9UIEhBJ0FSRVRaIFNUCi0JCQkJVEVMIEFWSVYgIDY5NTQ2Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLUMwLURCICAgKGhleCkJCUlQQyBDT1JQT1JBVElPTiAoUFRFKSBMVEQuCi0wMEMwREIgICAgIChiYXNlIDE2KQkJSVBDIENPUlBPUkFUSU9OIChQVEUpIExURC4KLQkJCQkxMjIgRVVOT1MgQVZFLiwgNyAjMDUtMTAKLQkJCQlTSU5HQVBPUkUgMTQ0MAotCQkJCVNJTkdBUE9SRQotCi0wMC1DMC1EQyAgIChoZXgpCQlFT1MgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEMwREMgICAgIChiYXNlIDE2KQkJRU9TIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTM5NDUgRlJFRURPTSBDSVJDTEUsIFNURS4jNzcwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUREICAgKGhleCkJCVFMb2dpYyBDb3Jwb3JhdGlvbgotMDBDMEREICAgICAoYmFzZSAxNikJCVFMb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTYzMjEgQnVyeSBEci4KLQkJCQlFZGVuIFByYXJpZSBNTiA1NTM0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtREUgICAoaGV4KQkJWkNPTU0sIElOQy4KLTAwQzBERSAgICAgKGJhc2UgMTYpCQlaQ09NTSwgSU5DLgotCQkJCTEwNTAgQyBFQVNUIERVQU5FIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtREYgICAoaGV4KQkJS1lFIFN5c3RlbXMgQ29ycC4KLTAwQzBERiAgICAgKGJhc2UgMTYpCQlLWUUgU3lzdGVtcyBDb3JwLgotCQkJCU5vLiA0OTIgU2VjIDUsIENodW5nIEhzaW4gUm9hZAotCQkJCVRhaXBlaSBIc2llbiAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLUUwICAgKGhleCkJCURTQyBDT01NVU5JQ0FUSU9OIENPUlAuCi0wMEMwRTAgICAgIChiYXNlIDE2KQkJRFNDIENPTU1VTklDQVRJT04gQ09SUC4KLQkJCQkxMDAwIENPSVQgUk9BRCwgIE1TI0FEVlAgMwotCQkJCVBMQU5PIFRYIDc1MDc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1FMSAgIChoZXgpCQlTT05JQyBTT0xVVElPTlMKLTAwQzBFMSAgICAgKGJhc2UgMTYpCQlTT05JQyBTT0xVVElPTlMKLQkJCQkxODkxIEUuIEZSQU5DSVNDTyBCTFZELgotCQkJCVNBTiBSQUZBRUwgQ0EgOTQ5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUUyICAgKGhleCkJCUNBTENPTVAsIElOQy4KLTAwQzBFMiAgICAgKGJhc2UgMTYpCQlDQUxDT01QLCBJTkMuCi0JCQkJMjQxMSBXLiBMQVBBTE1BIEFWRU5VRQotCQkJCVAuTy4gQk9YIDMyNTAsIE1TMjIKLQkJCQlBTkFIRUlNIENBIDkyODAzLTMyNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUUzICAgKGhleCkJCU9TSVRFQ0ggQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQzBFMyAgICAgKGJhc2UgMTYpCQlPU0lURUNIIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNjc5IFNPVVRIR0FURSBEUklWRQotCQkJCUdVRUxQSCwgT05UQVJJTwotCQkJCUNBTkFEQSBOMUcgNFMyCi0JCQkJQ0FOQURBCi0KLTAwLUMwLUU0ICAgKGhleCkJCVNJRU1FTlMgQlVJTERJTkcKLTAwQzBFNCAgICAgKGJhc2UgMTYpCQlTSUVNRU5TIEJVSUxESU5HCi0JCQkJVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTAwMCBERUVSRklFTEQgUEFSS1dBWQotCQkJCUJVRkZBTE8gR1JPVkUgSUwgNjAwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUU1ICAgKGhleCkJCUdFU1BBQywgUy5BLgotMDBDMEU1ICAgICAoYmFzZSAxNikJCUdFU1BBQywgUy5BLgotCQkJCUNIRU1JTiBERVMgQVVMWCAxOAotCQkJCUNILTEyMjggR0VORVZBCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC1DMC1FNiAgIChoZXgpCQlWZXJpbGluayBDb3Jwb3JhdGlvbgotMDBDMEU2ICAgICAoYmFzZSAxNikJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi0JCQkJMTI3IEpldHBsZXggQ2lyY2xlCi0JCQkJTWFkaXNvbiBBTCAzNTc1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRTcgICAoaGV4KQkJRklCRVJEQVRBIEFCCi0wMEMwRTcgICAgIChiYXNlIDE2KQkJRklCRVJEQVRBIEFCCi0JCQkJUC5PLiBCT1ggMjAwOTUKLQkJCQlTLTE2MTAyIEJST01NQQotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC1DMC1FOCAgIChoZXgpCQlQTEVYQ09NLCBJTkMuCi0wMEMwRTggICAgIChiYXNlIDE2KQkJUExFWENPTSwgSU5DLgotCQkJCTY1IE1PUkVMQU5EIFJPQURFTlVZRQotCQkJCVNJTUkgVkFMTEVZIENBIDkzMDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1FOSAgIChoZXgpCQlPQUsgU09MVVRJT05TLCBMVEQuCi0wMEMwRTkgICAgIChiYXNlIDE2KQkJT0FLIFNPTFVUSU9OUywgTFRELgotCQkJCUJST0FEV0FZIEhPVVNFCi0JCQkJMTQ5LTE1MSBTVCBORU9UUyBSRCwgSEFSRFdJQ0sgQ0FNQlJJREdFCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLUVBICAgKGhleCkJCUFSUkFZIFRFQ0hOT0xPR1kgTFRELgotMDBDMEVBICAgICAoYmFzZSAxNikJCUFSUkFZIFRFQ0hOT0xPR1kgTFRELgotCQkJCTE0NSBGUklNTEVZIFJPQUQKLQkJCQlDQU1CRVJMRVksIFNVUlJFWQotCQkJCUVOR0xBTkQgR1UxNSAyUFMKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC1FQiAgIChoZXgpCQlTRUggQ09NUFVURVJURUNITklLIEdNQkgKLTAwQzBFQiAgICAgKGJhc2UgMTYpCQlTRUggQ09NUFVURVJURUNITklLIEdNQkgKLQkJCQlTdWVkcmluZyAxMQotCQkJCVAuTy4gQk9YIDE0MDgyOSBELTMzNjI4IEJpZWxlZmVsZAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUMwLUVDICAgKGhleCkJCURBVVBISU4gVEVDSE5PTE9HWQotMDBDMEVDICAgICAoYmFzZSAxNikJCURBVVBISU4gVEVDSE5PTE9HWQotCQkJCTQ1MCBFSVNFTkhPV0VSIExBTkUgTk9SVEgKLQkJCQlMT01CQVJEIElMIDYwMTQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1FRCAgIChoZXgpCQlVUyBBUk1ZIEVMRUNUUk9OSUMKLTAwQzBFRCAgICAgKGJhc2UgMTYpCQlVUyBBUk1ZIEVMRUNUUk9OSUMKLQkJCQlQUk9WSU5HIEdST1VORAotCQkJCTE4MzggUEFTRU8gU0FOIExVSVMKLQkJCQlTSUVSUkEgVklTVEEgQVogODU2MzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUVFICAgKGhleCkJCUtZT0NFUkEgQ09SUE9SQVRJT04KLTAwQzBFRSAgICAgKGJhc2UgMTYpCQlLWU9DRVJBIENPUlBPUkFUSU9OCi0JCQkJMi0xNC05IFRBTUFHQVdBREFJCi0JCQkJU0VUQUdBWUEtS1UsIFRPS1lPCi0JCQkJMTU4IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtRUYgICAoaGV4KQkJQUJJVCBDT1JQT1JBVElPTgotMDBDMEVGICAgICAoYmFzZSAxNikJCUFCSVQgQ09SUE9SQVRJT04KLQkJCQkyOS0xMSBISVJBT0tBLUNITwotCQkJCUhBQ0hJT1VKSS1TSEkgVE9LWU8KLQkJCQkxOTIgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC1GMCAgIChoZXgpCQlLSU5HU1RPTiBURUNITk9MT0dZIENPUlAuCi0wMEMwRjAgICAgIChiYXNlIDE2KQkJS0lOR1NUT04gVEVDSE5PTE9HWSBDT1JQLgotCQkJCTE3NjAwIE5FV0hPUEUgU1RSRUVUCi0JCQkJRk9VTlRBSU4gVkFMTEVZIENBIDkyNzA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GMSAgIChoZXgpCQlTSElOS08gRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMEMwRjEgICAgIChiYXNlIDE2KQkJU0hJTktPIEVMRUNUUklDIENPLiwgTFRELgotCQkJCUNPTVBVVEVSIFNZU1RFTSBESVZJU0lPTgotCQkJCTE1MCBNT1RPWUFTSElLSSwgU0FOWUEtQ0hPIFRPWU9IQVNISS1TSEkKLQkJCQlKQVBBTiA0NDEtMzEKLQkJCQlKQVBBTgotCi0wMC1DMC1GMiAgIChoZXgpCQlUUkFOU0lUSU9OIE5FVFdPUktTCi0wMEMwRjIgICAgIChiYXNlIDE2KQkJVFJBTlNJVElPTiBORVRXT1JLUwotCQkJCTY0NzUgQ0lUWSBXRVNUIFBBUktXQVkKLQkJCQlNSU5ORUFQT0xJUyBNTiA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRjMgICAoaGV4KQkJTkVUV09SSyBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDBDMEYzICAgICAoYmFzZSAxNikJCU5FVFdPUksgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQk1NTAxIEdSRUVOIFZBTExFWSBEUklWRQotCQkJCUJMT09NSU5HVE9OIE1OIDU1NDM3LTEwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUY0ICAgKGhleCkJCUlOVEVSTElOSyBTWVNURU0gQ08uLCBMVEQuCi0wMEMwRjQgICAgIChiYXNlIDE2KQkJSU5URVJMSU5LIFNZU1RFTSBDTy4sIExURC4KLQkJCQlJTlRFUkxJTksgQi9ELCA0NzYtMjAKLQkJCQlTRU9HWU8tRE9ORywgTUFQTy1LVSBTRU9VTAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUMwLUY1ICAgKGhleCkJCU1FVEFDT01QLCBJTkMuCi0wMEMwRjUgICAgIChiYXNlIDE2KQkJTUVUQUNPTVAsIElOQy4KLQkJCQkxMDk4OSBWSUEgRlJPTlRFUkEKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUY2ICAgKGhleCkJCUNFTEFOIFRFQ0hOT0xPR1kgSU5DLgotMDBDMEY2ICAgICAoYmFzZSAxNikJCUNFTEFOIFRFQ0hOT0xPR1kgSU5DLgotCQkJCU5PLiAxMDEsIE1JTi1IU0lBTkcgU1QuCi0JCQkJSFNJTi1DSFUgQ0lUWQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJQ0hJTkEKLQotMDAtQzAtRjcgICAoaGV4KQkJRU5HQUdFIENPTU1VTklDQVRJT04sIElOQy4KLTAwQzBGNyAgICAgKGJhc2UgMTYpCQlFTkdBR0UgQ09NTVVOSUNBVElPTiwgSU5DLgotCQkJCTkwNTMgU09RVUVMIERSSVZFCi0JCQkJQVBUT1MgQ0EgOTUwMDMtNDAzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRjggICAoaGV4KQkJQUJPVVQgQ09NUFVUSU5HIElOQy4KLTAwQzBGOCAgICAgKGJhc2UgMTYpCQlBQk9VVCBDT01QVVRJTkcgSU5DLgotCQkJCVAuTy4gQk9YIDE3MgotCQkJCUJFTE1PTlQgTUEgMDIxNzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUY5ICAgKGhleCkJCUVtZXJzb24gTmV0d29yayBQb3dlcgotMDBDMEY5ICAgICAoYmFzZSAxNikJCUVtZXJzb24gTmV0d29yayBQb3dlcgotCQkJCTI5MDAgUy4gRGlhYmxvIFdheSBTdWl0ZSAxOTAKLQkJCQlUZW1wZSBBWiA4NTI4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRkEgICAoaGV4KQkJQ0FOQVJZIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEMwRkEgICAgIChiYXNlIDE2KQkJQ0FOQVJZIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTg1MSBaQU5LRVIgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTEyLTQyMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUZCICAgKGhleCkJCUFEVkFOQ0VEIFRFQ0hOT0xPR1kgTEFCUwotMDBDMEZCICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIFRFQ0hOT0xPR1kgTEFCUwotCQkJCTIyMTAwIEJPVEhFTEwgSElHSFdBWSBTLkUuCi0JCQkJUC5PLiBCT1ggMzAwMwotCQkJCUJPVEhFTEwgV0EgOTgwNDEtMzAwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRkMgICAoaGV4KQkJRUxBU1RJQyBSRUFMSVRZLCBJTkMuCi0wMEMwRkMgICAgIChiYXNlIDE2KQkJRUxBU1RJQyBSRUFMSVRZLCBJTkMuCi0JCQkJOTI1IFNURVdBUlQgU1RSRUVUCi0JCQkJTUFESVNPTiBXSSA1MzcxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRkQgICAoaGV4KQkJUFJPU1VNCi0wMEMwRkQgICAgIChiYXNlIDE2KQkJUFJPU1VNCi0JCQkJMTIgUlVFIFNBREktQ0FSTk9UCi0JCQkJOTQzNzAgIE5PSVNFQVUKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtQzAtRkUgICAoaGV4KQkJQVBURUMgQ09NUFVURVIgU1lTVEVNUywgSU5DLgotMDBDMEZFICAgICAoYmFzZSAxNikJCUFQVEVDIENPTVBVVEVSIFNZU1RFTVMsIElOQy4KLQkJCQlQLk8uIEJPWCA2NzUwCi0JCQkJUE9SVExBTkQgT1IgOTcyMjgtNjc1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRkYgICAoaGV4KQkJRE9UIEhJTEwgU1lTVEVNUyBDT1JQT1JBVElPTgotMDBDMEZGICAgICAoYmFzZSAxNikJCURPVCBISUxMIFNZU1RFTVMgQ09SUE9SQVRJT04KLQkJCQk2MzA1IEVsIENhbWlubyBSZWFsCi0JCQkJQ2FybHNiYWQgQ0EgOTIwMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUNCLUJEICAgKGhleCkJCUNhbWJyaWRnZSBCcm9hZGJhbmQgTmV0d29ya3MgTHRkLgotMDBDQkJEICAgICAoYmFzZSAxNikJCUNhbWJyaWRnZSBCcm9hZGJhbmQgTmV0d29ya3MgTHRkLgotCQkJCVNlbHd5biBIb3VzZSBDYW1icmlkZ2UgQnVzaW5lc3MgUGFyawotCQkJCUNhbWJyaWRnZSBCdXNpbmVzcyBQYXJrCi0JCQkJQ2FtYnJpZGdlICBDQjQgMFdaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQ0YtMUMgICAoaGV4KQkJQ09NTVVOSUNBVElPTiBNQUNISU5FUlkgQ09SUC4KLTAwQ0YxQyAgICAgKGJhc2UgMTYpCQlDT01NVU5JQ0FUSU9OIE1BQ0hJTkVSWSBDT1JQLgotCQkJCTEyMjYgQU5BQ0FQQQotCQkJCVNBTlRBIEJBUkJBUkEgQ0EgOTMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTAwICAgKGhleCkJCUZFUlJBTiBTQ0lFTlRJRklDLCBJTkMuCi0wMEQwMDAgICAgIChiYXNlIDE2KQkJRkVSUkFOIFNDSUVOVElGSUMsIElOQy4KLQkJCQkxMTU1OCBTT1JSRU5UTyBWQUxMRVkgUk9BRAotCQkJCVNVSVRFICAjMQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMDEgICAoaGV4KQkJVlNUIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBEMDAxICAgICAoYmFzZSAxNikJCVZTVCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMjUgTkFHT0cgUEFSSwotCQkJCUFDVE9OIE1BIDAxNzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0wMiAgIChoZXgpCQlESVRFQ0ggQ09SUE9SQVRJT04KLTAwRDAwMiAgICAgKGJhc2UgMTYpCQlESVRFQ0ggQ09SUE9SQVRJT04KLQkJCQk4MjUgRUFTVCBNSURETEVGSUVMRCBSRAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTAzICAgKGhleCkJCUNPTURBIEVOVEVSUFJJU0VTIENPUlAuCi0wMEQwMDMgICAgIChiYXNlIDE2KQkJQ09NREEgRU5URVJQUklTRVMgQ09SUC4KLQkJCQkyRiwgTk8uIDUwMS0xOCwgQ0hVTkdDSEVOIFJPQUQKLQkJCQlIU0lOVElFTiwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBST0MKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTA0ICAgKGhleCkJCVBFTlRBQ09NIExURC4KLTAwRDAwNCAgICAgKGJhc2UgMTYpCQlQRU5UQUNPTSBMVEQuCi0JCQkJOCBIQVNBRE5BT1QgU1RSRUVUCi0JCQkJUC5PLiBCT1ggMTIxMDkgSEVSWkxJQSA0NjczMwotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC1EMC0wNSAgIChoZXgpCQlaSFMgWkVJVE1BTkFHRU1FTlRTWVNURU1FCi0wMEQwMDUgICAgIChiYXNlIDE2KQkJWkhTIFpFSVRNQU5BR0VNRU5UU1lTVEVNRQotCQkJCUhBUkQtVU5EIFNPRlRXQVJFIEdNQkgKLQkJCQlLUkVVWkJFUkdFUiBSSU5HIDU2IDY1MjA1IFdJRVNCQURFTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLTA2ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDAwNiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTA3ICAgKGhleCkJCU1JQyBBU1NPQ0lBVEVTLCBJTkMuCi0wMEQwMDcgICAgIChiYXNlIDE2KQkJTUlDIEFTU09DSUFURVMsIElOQy4KLQkJCQkxNTEwLTEsIEtBSURPS0kKLQkJCQlUQU1BLCBUT0tZTwotCQkJCUpBUEFOIEpBUEFOIDIwNi0wMDEyCi0JCQkJSkFQQU4KLQotMDAtRDAtMDggICAoaGV4KQkJTUFDVEVMTCBDT1JQT1JBVElPTgotMDBEMDA4ICAgICAoYmFzZSAxNikJCU1BQ1RFTEwgQ09SUE9SQVRJT04KLQkJCQk3MDAwIENBTUVST04gUk9BRAotCQkJCUFVU1RJTiBUWCA3ODc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMDkgICAoaGV4KQkJSFNJTkcgVEVDSC4gRU5URVJQUklTRSBDTy4gTFRECi0wMEQwMDkgICAgIChiYXNlIDE2KQkJSFNJTkcgVEVDSC4gRU5URVJQUklTRSBDTy4gTFRECi0JCQkJTk8uMiwgTEFORSAxMjgsIFNFQy4gMgotCQkJCUNIVU5HIFNIQU4gTi4gUkQuIFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC0wQSAgIChoZXgpCQlMQU5BQ0NFU1MgVEVMRUNPTSBTLkEuCi0wMEQwMEEgICAgIChiYXNlIDE2KQkJTEFOQUNDRVNTIFRFTEVDT00gUy5BLgotCQkJCUdSQU4gVklBIDgtMTAgIDQgIDEKLQkJCQkwODkwMi0gTCdIT1NQSVRBTEVUIERFIExMT0JSRUdBVAotCQkJCVNQQUlOCi0JCQkJU1BBSU4KLQotMDAtRDAtMEIgICAoaGV4KQkJUkhLIFRFQ0hOT0xPR1ksIElOQy4KLTAwRDAwQiAgICAgKGJhc2UgMTYpCQlSSEsgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTEwNTAgRUFTVCBNQVBMRSBST0FECi0JCQkJVFJPWSBNSSA0ODA4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMEMgICAoaGV4KQkJU05JSkRFUiBNSUNSTyBTWVNURU1TCi0wMEQwMEMgICAgIChiYXNlIDE2KQkJU05JSkRFUiBNSUNSTyBTWVNURU1TCi0JCQkJUC5PLiBCT1ggMzAwCi0JCQkJTkwtNTc1MCBBSCBERVVSTkUKLQkJCQlUSEUgTkVUSEVSTEFORFMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC1EMC0wRCAgIChoZXgpCQlNSUNST01FUklUSUNTIElOU1RSVU1FTlQKLTAwRDAwRCAgICAgKGJhc2UgMTYpCQlNSUNST01FUklUSUNTIElOU1RSVU1FTlQKLQkJCQlDT1JQT1JBVElPTgotCQkJCU9ORSBNSUNST01FRVJJVElDUyBEUklWRQotCQkJCU5PUkNST1NTIEdBIDMwMDkzLTE4NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTBFICAgKGhleCkJCVBMVVJJUywgSU5DLgotMDBEMDBFICAgICAoYmFzZSAxNikJCVBMVVJJUywgSU5DLgotCQkJCTEwNDU1IEJBTkRMRVkgRFJJVkUKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTBGICAgKGhleCkJCVNQRUVDSCBERVNJR04gR01CSAotMDBEMDBGICAgICAoYmFzZSAxNikJCVNQRUVDSCBERVNJR04gR01CSAotCQkJCUlORFVTVFJJRVNUUi4gMQotCQkJCUQtODIxMTAgR0VSTUVSSU5HCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtMTAgICAoaGV4KQkJQ09OVkVSR0VOVCBORVRXT1JLUywgSU5DLgotMDBEMDEwICAgICAoYmFzZSAxNikJCUNPTlZFUkdFTlQgTkVUV09SS1MsIElOQy4KLQkJCQkyIEhJR0hXT09EIERSSVZFCi0JCQkJVEVXS1NCVVJZIE1BIDAxODc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0xMSAgIChoZXgpCQlQUklTTSBWSURFTywgSU5DLgotMDBEMDExICAgICAoYmFzZSAxNikJCVBSSVNNIFZJREVPLCBJTkMuCi0JCQkJMTU4NTEgREFMTEFTIFBBUktXQVktU1RFLiMxMDYwCi0JCQkJQURESVNPTiBUWCA3NTAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMTIgICAoaGV4KQkJR0FURVdPUktTIENPUlAuCi0wMEQwMTIgICAgIChiYXNlIDE2KQkJR0FURVdPUktTIENPUlAuCi0JCQkJNzYzMSBNT1JSTyBST0FECi0JCQkJQVRBU0NBREVSTyBDQSA5MzQyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMTMgICAoaGV4KQkJUFJJTUVYIEFFUk9TUEFDRSBDT01QQU5ZCi0wMEQwMTMgICAgIChiYXNlIDE2KQkJUFJJTUVYIEFFUk9TUEFDRSBDT01QQU5ZCi0JCQkJUC5PLiBCT1ggOTcwMDkKLQkJCQkxMTQ0MSBXSUxMT1dTIFJPQUQgTkUKLQkJCQlSRURNT05EIFdBIDk4MDczLTk3MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTE0ICAgKGhleCkJCVJPT1QsIElOQy4KLTAwRDAxNCAgICAgKGJhc2UgMTYpCQlST09ULCBJTkMuCi0JCQkJOEYgVE9DMiBCbGRnLCA3LTIxLTExIE5pc2hpLUdvdGFuZGEKLQkJCQlTaGluYWdhd2Eta3UKLQkJCQlUb2t5byAxNDEtMDAzMQotCQkJCUpBUEFOCi0KLTAwLUQwLTE1ICAgKGhleCkJCVVOSVZFWCBNSUNST1RFQ0hOT0xPR1kgQ09SUC4KLTAwRDAxNSAgICAgKGJhc2UgMTYpCQlVTklWRVggTUlDUk9URUNITk9MT0dZIENPUlAuCi0JCQkJMiwgVFpFLUNISUFORyAzUkQgUk9BRAotCQkJCUNIVU5HLUxJIElORFVTVFJJQUwgUEFSSywgQ0hVTkctTEkKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTE2ICAgKGhleCkJCVNDTSBNSUNST1NZU1RFTVMsIElOQy4KLTAwRDAxNiAgICAgKGJhc2UgMTYpCQlTQ00gTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJMTYwIEtOT1dMRVMgRFJJVkUKLQkJCQlMT1MgR0FUT1MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTE3ICAgKGhleCkJCVNZTlRFQ0ggSU5GT1JNQVRJT04gQ08uLCBMVEQuCi0wMEQwMTcgICAgIChiYXNlIDE2KQkJU1lOVEVDSCBJTkZPUk1BVElPTiBDTy4sIExURC4KLQkJCQk4RiwgMjEwLCBUQS1UVU5HIFJELiwgU0VDLiAzCi0JCQkJSFNJLUNISUgsIFRBSVBFSSBIU0lFTgotCQkJCVRBSVdBTiBUQUlXQU4gUk9DCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC0xOCAgIChoZXgpCQlRV0VTLiBDT00sIElOQy4KLTAwRDAxOCAgICAgKGJhc2UgMTYpCQlRV0VTLiBDT00sIElOQy4KLQkJCQkxNDc0MiBORVdQT1JUIEFWRS4gLSBTVEUuICMyMDMKLQkJCQlUVVNUSU4gQ0EgOTI3ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTE5ICAgKGhleCkJCURBSU5JUFBPTiBTQ1JFRU4gQ09SUE9SQVRFCi0wMEQwMTkgICAgIChiYXNlIDE2KQkJREFJTklQUE9OIFNDUkVFTiBDT1JQT1JBVEUKLQkJCQlSRVBSRVNFTlRBVElWRVMgT0YgQU1FUklDQSxJTkMKLQkJCQkxNzk0MiBDT1dBTiBBVkVOVUUKLQkJCQlJUlZJTkUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTFBICAgKGhleCkJCVVSTUVUICBUTEMgUy5QLkEuCi0wMEQwMUEgICAgIChiYXNlIDE2KQkJVVJNRVQgIFRMQyBTLlAuQS4KLQkJCQlWSUEgREkgQ0FTVEVMIFJPTUFOTyAxNjcKLQkJCQkwMDEyOCAtIFJPTUEKLQkJCQlJVEFMWQotCi0wMC1EMC0xQiAgIChoZXgpCQlNSU1BS0kgRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi0wMEQwMUIgICAgIChiYXNlIDE2KQkJTUlNQUtJIEVOR0lORUVSSU5HIENPLiwgTFRELgotCQkJCTUtOS00MSBLSVRBIFNISU5BR0FXQQotCQkJCVNISU5BR0FXQS1LVSBUT0tZTyAxNDEtMDAwMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtRDAtMUMgICAoaGV4KQkJU0JTIFRFQ0hOT0xPR0lFUywKLTAwRDAxQyAgICAgKGJhc2UgMTYpCQlTQlMgVEVDSE5PTE9HSUVTLAotCQkJCUNPTk5FQ1RJVklUWSBQUk9EVUNUUwotCQkJCTEyODQgQ09SUE9SQVRFIENFTlRFUiBEUklWRQotCQkJCVNULiBQQVVMIE1OIDU1MTIxLTEyNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTFEICAgKGhleCkJCUZVUlVOTyBFTEVDVFJJQyBDTy4sIExURC4KLTAwRDAxRCAgICAgKGJhc2UgMTYpCQlGVVJVTk8gRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJTk8uIDktNTIsIEFTSElIQVJBLUNITwotCQkJCU5JU0hJTk9NSVlBLUNJVFkKLQkJCQk2NjItODU4MCAKLQkJCQlKQVBBTgotCi0wMC1EMC0xRSAgIChoZXgpCQlQSU5HVEVMIENPUlAuCi0wMEQwMUUgICAgIChiYXNlIDE2KQkJUElOR1RFTCBDT1JQLgotCQkJCTc3MyBXSU5URVIgU1RSRUVUCi0JCQkJTi4gQU5ET1ZFUiBNQSAwMTg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMUYgICAoaGV4KQkJQ1RBTSBQVFkuIExURC4KLTAwRDAxRiAgICAgKGJhc2UgMTYpCQlDVEFNIFBUWS4gTFRELgotCQkJCTM5OSBISUdIIFNUUkVFVAotCQkJCUFTSEJVUlRPTiAzMTQ3IFZJQ1RPUklBCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLUQwLTIwICAgKGhleCkJCUFJTSBTWVNURU0sIElOQy4KLTAwRDAyMCAgICAgKGJhc2UgMTYpCQlBSU0gU1lTVEVNLCBJTkMuCi0JCQkJNFRIIEZMT09SIENIVU5HV09PIEIvRCAyMTktMQotCQkJCVBPWUVFLURPTkcsIEdBTkdOQU0tS1UgU0VPTCwgMTM1LTIwMAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLTIxICAgKGhleCkJCVJFR0VOVCBFTEVDVFJPTklDUyBDT1JQLgotMDBEMDIxICAgICAoYmFzZSAxNikJCVJFR0VOVCBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTIwMCBDRU5URU5OSUFMIEFWRS4tU1RFLiAjMjAxCi0JCQkJUElTQ0FUQVdBWSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMjIgICAoaGV4KQkJSU5DUkVESUJMRSBURUNITk9MT0dJRVMsIElOQy4KLTAwRDAyMiAgICAgKGJhc2UgMTYpCQlJTkNSRURJQkxFIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTE2MDAgSElDS1MgUk9BRAotCQkJCVJPTExJTkcgTUVBRE9XUyBJTCA2MDAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMjMgICAoaGV4KQkJSU5GT1JUUkVORCBURUNITk9MT0dZLCBJTkMuCi0wMEQwMjMgICAgIChiYXNlIDE2KQkJSU5GT1JUUkVORCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTBGLCBOTy4gMzMgU0FOLU1JTiBSRC4KLQkJCQlTRUMuIDIgUEFOQ0hJQU8gQ0lUWSBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTI0ICAgKGhleCkJCUNvZ25leCBDb3Jwb3JhdGlvbgotMDBEMDI0ICAgICAoYmFzZSAxNikJCUNvZ25leCBDb3Jwb3JhdGlvbgotCQkJCU1vZHVsYXIgVmlzaW9uIFN5c3RlbXMgRGl2aXNpb24KLQkJCQlJbi1TaWdodCBQcm9kdWN0cyBHcm91cCAxNTg2NSBTVyA3NHRoIEF2Ci0JCQkJUG9ydGxhbmQgT1IgOTcyMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTI1ICAgKGhleCkJCVhST1NTVEVDSCwgSU5DLgotMDBEMDI1ICAgICAoYmFzZSAxNikJCVhST1NTVEVDSCwgSU5DLgotCQkJCUhBQkRPTkcgQi9EIDVGIDIxMC0yCi0JCQkJWUFOR0pBRS1ET05HLCBTRU9DSE8tS1UgU0VPVUwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC0yNiAgIChoZXgpCQlISVJTQ0hNQU5OIEFVU1RSSUEgR01CSAotMDBEMDI2ICAgICAoYmFzZSAxNikJCUhJUlNDSE1BTk4gQVVTVFJJQSBHTUJICi0JCQkJT0JFUkVSIFBBU1BFTFNXRUcgNiAtIDgKLQkJCQk2ODMwIFJBTktXRUlMLUJSRURFUklTCi0JCQkJQVVTVFJJQQotCQkJCUFVU1RSSUEKLQotMDAtRDAtMjcgICAoaGV4KQkJQVBQTElFRCBBVVRPTUFUSU9OLCBJTkMuCi0wMEQwMjcgICAgIChiYXNlIDE2KQkJQVBQTElFRCBBVVRPTUFUSU9OLCBJTkMuCi0JCQkJUC5PLiBCT1ggOTk5OQotCQkJCUJBUlRMRVNWSUxMRSBPSyA3NDAwNS05OTk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0yOCAgIChoZXgpCQlPTU5FT04gVklERU8gTkVUV09SS1MKLTAwRDAyOCAgICAgKGJhc2UgMTYpCQlPTU5FT04gVklERU8gTkVUV09SS1MKLQkJCQk5NjUgU3Rld2FydCBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4Ni0zOTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0yOSAgIChoZXgpCQlXQUtFRkVSTiBGT09EIENPUlBPUkFUSU9OCi0wMEQwMjkgICAgIChiYXNlIDE2KQkJV0FLRUZFUk4gRk9PRCBDT1JQT1JBVElPTgotCQkJCTIzMCBSQVJJVEFOIENFTlRFUiBQQVJLV0FZCi0JCQkJRURJU09OIE5KIDA4ODM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0yQSAgIChoZXgpCQlWb3hlbnQgU3lzdGVtcyBMdGQuCi0wMEQwMkEgICAgIChiYXNlIDE2KQkJVm94ZW50IFN5c3RlbXMgTHRkLgotCQkJCVVuaXQgMiwgUm93YW4gSG91c2UKLQkJCQlTaGVsZG9uIEJ1c2luZXNzIFBhcmsKLQkJCQlDaGlwcGVuaGFtIFdpbHRzaGlyZSBTTjE0IDBTUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTJCICAgKGhleCkJCUpFVENFTEwsIElOQy4KLTAwRDAyQiAgICAgKGJhc2UgMTYpCQlKRVRDRUxMLCBJTkMuCi0JCQkJMTczIENPTlNUSVRVVElPTiBEUklWRQotCQkJCU1FTkxPIFBBUksgQ0EgOTQwMjUtMTEwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMkMgICAoaGV4KQkJQ0FNUEJFTEwgU0NJRU5USUZJQywgSU5DLgotMDBEMDJDICAgICAoYmFzZSAxNikJCUNBTVBCRUxMIFNDSUVOVElGSUMsIElOQy4KLQkJCQk4MTUgVy4gMTgwMCBOLgotCQkJCUxPR0FOIFVUIDg0MzIxLTE3ODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTJEICAgKGhleCkJCUFERU1DTwotMDBEMDJEICAgICAoYmFzZSAxNikJCUFERU1DTwotCQkJCTE2NSBFSUxFRU4gV0FZCi0JCQkJU1lPU1NFVCBOWSAxMTc5MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMkUgICAoaGV4KQkJQ09NTVVOSUNBVElPTiBBVVRPTUFUSU9OIENPUlAuCi0wMEQwMkUgICAgIChiYXNlIDE2KQkJQ09NTVVOSUNBVElPTiBBVVRPTUFUSU9OIENPUlAuCi0JCQkJMTE4MCBNQ0RFUk1PVFQgRFJJVkUKLQkJCQlXRVNUIENIRVNURVIgUEEgMTkzODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTJGICAgKGhleCkJCVZMU0kgVEVDSE5PTE9HWSBJTkMuCi0wMEQwMkYgICAgIChiYXNlIDE2KQkJVkxTSSBURUNITk9MT0dZIElOQy4KLQkJCQk4Mzc1IFMuIFJJVkVSIFBBUktXQVkKLQkJCQlURU1QRSBBWiA4NTI4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMzAgICAoaGV4KQkJU2FmZXRyYW4gU3lzdGVtcyBDb3JwCi0wMEQwMzAgICAgIChiYXNlIDE2KQkJU2FmZXRyYW4gU3lzdGVtcyBDb3JwCi0JCQkJMTA2NTUgN3RoIFN0cmVldAotCQkJCVJhbmNobyBDdWNhbW9uZ2EgQ0EgOTE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTMxICAgKGhleCkJCUlORFVTVFJJQUwgTE9HSUMgQ09SUE9SQVRJT04KLTAwRDAzMSAgICAgKGJhc2UgMTYpCQlJTkRVU1RSSUFMIExPR0lDIENPUlBPUkFUSU9OCi0JCQkJMTUgUElFRE1PTlQgQ0VOVEVSLVNURSAjNzAwCi0JCQkJQVRMQU5UQSBHQSAzMDMwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMzIgICAoaGV4KQkJWUFOTyBFTEVDVFJJQyBDTy4sIExURC4KLTAwRDAzMiAgICAgKGJhc2UgMTYpCQlZQU5PIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTctMy0xIElCVUtJREFJSElHQVNISU1BQ0hJCi0JCQkJTklTSEktS1UsIEtPQkUsIDY1MS0yMjQyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC0zMyAgIChoZXgpCQlEQUxJQU4gREFYSUFOIE5FVFdPUksKLTAwRDAzMyAgICAgKGJhc2UgMTYpCQlEQUxJQU4gREFYSUFOIE5FVFdPUksKLQkJCQlTWVNURU0gQ08uLCBMVEQuCi0JCQkJOTggU0hFTkdMSSBSRCBYSUdBTkcgRElTVFJJQ1QgREFMSUFOLCBQLgotCQkJCUNISU5BCi0JCQkJQ0hJTkEKLQotMDAtRDAtMzQgICAoaGV4KQkJT1JNRUMgU1lTVEVNUyBDT1JQLgotMDBEMDM0ICAgICAoYmFzZSAxNikJCU9STUVDIFNZU1RFTVMgQ09SUC4KLQkJCQkxOSBMSU5ERU4gUEFSSwotCQkJCVJPQ0hFU1RFUiBOWSAxNDYyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMzUgICAoaGV4KQkJQkVIQVZJT1IgVEVDSC4gQ09NUFVURVIgQ09SUC4KLTAwRDAzNSAgICAgKGJhc2UgMTYpCQlCRUhBVklPUiBURUNILiBDT01QVVRFUiBDT1JQLgotCQkJCTIwRi1CLCBOby45OCwgU2VjLiAxLAotCQkJCVNpbnRhaSA1dGggUmQuCi0JCQkJU2lqaGloIENpdHkgVGFpcGVpIENvdW50eSAyMjEwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtMzYgICAoaGV4KQkJVEVDSE5PTE9HWSBBVExBTlRBIENPUlAuCi0wMEQwMzYgICAgIChiYXNlIDE2KQkJVEVDSE5PTE9HWSBBVExBTlRBIENPUlAuCi0JCQkJMTQxIFcuIFdJRVVDQSBSRC4gTi5FLgotCQkJCVNVSVRFICMzMDAKLQkJCQlBVExBTlRBIEdBIDMwMzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0zNyAgIChoZXgpCQlQYWNlIEZyYW5jZQotMDBEMDM3ICAgICAoYmFzZSAxNikJCVBhY2UgRnJhbmNlCi0JCQkJMzMgcnVlIGRlIFZlcmR1bgotCQkJCTkyMTUwIFN1cmVzbmVzIAotCQkJCUZSQU5DRQotCi0wMC1EMC0zOCAgIChoZXgpCQlGSVZFTUVSRSwgTFRELgotMDBEMDM4ICAgICAoYmFzZSAxNikJCUZJVkVNRVJFLCBMVEQuCi0JCQkJVU5JVCAxLUhFUk9OIElORFVTVFJJQUwgRVNUQVRFCi0JCQkJQkFTSU5HU1RPS0UgUk9BRCBTUEVOQ0VSUyBXT09ELCAgUkVBRElORwotCQkJCVJHNyAxUEogRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTM5ICAgKGhleCkJCVVUSUxJQ09NLCBJTkMuCi0wMEQwMzkgICAgIChiYXNlIDE2KQkJVVRJTElDT00sIElOQy4KLQkJCQkzMjMgTE9WRSBQTEFDRQotCQkJCVNBTlRBIEJBUkJBUkEgQ0EgOTMxMTItMzI4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtM0EgICAoaGV4KQkJWk9ORVdPUlgsIElOQy4KLTAwRDAzQSAgICAgKGJhc2UgMTYpCQlaT05FV09SWCwgSU5DLgotCQkJCTQwOTI1IENPVU5UWSBDRU5URVIgRFJJVkUKLQkJCQlTVUlURSAjMjAwCi0JCQkJVEVNRUNVTEEgQ0EgOTI1OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTNCICAgKGhleCkJCVZJU0lPTiBQUk9EVUNUUyBQVFkuIExURC4KLTAwRDAzQiAgICAgKGJhc2UgMTYpCQlWSVNJT04gUFJPRFVDVFMgUFRZLiBMVEQuCi0JCQkJU0VDT05EIEFWRU5VRSwgVEVDSE5PTE9HWSBQQVJLCi0JCQkJTUFXU09OIExBS0VTCi0JCQkJQVVTVFJBTElBIDUwOTUKLQkJCQlBVVNUUkFMSUEKLQotMDAtRDAtM0MgICAoaGV4KQkJVmllbywgSW5jLgotMDBEMDNDICAgICAoYmFzZSAxNikJCVZpZW8sIEluYy4KLQkJCQkxMjQxNiBIeW1lYWRvdyBEcml2ZSwKLQkJCQlTdWl0ZSAyMDAKLQkJCQlBdXN0aW4gVFggNzg3NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTNEICAgKGhleCkJCUdBTElMRU8gVEVDSE5PTE9HWSwgTFRELgotMDBEMDNEICAgICAoYmFzZSAxNikJCUdBTElMRU8gVEVDSE5PTE9HWSwgTFRELgotCQkJCU1PU0hBViBNQU5PRgotCQkJCUQuTi4gTUlTR0FWIDIwMTg0Ci0JCQkJSVNSQUVMCi0KLTAwLUQwLTNFICAgKGhleCkJCVJPQ0tFVENISVBTLCBJTkMuCi0wMEQwM0UgICAgIChiYXNlIDE2KQkJUk9DS0VUQ0hJUFMsIElOQy4KLQkJCQk3OTAxIFhFUlhFUyBBVkUuIFMuCi0JCQkJTUlOTkVBUE9MSVMgTU4gNTU0MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTNGICAgKGhleCkJCUFNRVJJQ0FOIENPTU1VTklDQVRJT04KLTAwRDAzRiAgICAgKGJhc2UgMTYpCQlBTUVSSUNBTiBDT01NVU5JQ0FUSU9OCi0JCQkJVEVDSE5PTElHSUVTIElOVEVSTkFUSU9OQUwgSU5DCi0JCQkJMzIwIFBST0ZFU1NJT05BTCBDRU5URVIgRFIuIFNVSVRFICMxMDAKLQkJCQlST0hORVJUIFBBUksgQ0EgOTQ5MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTQwICAgKGhleCkJCVNZU01BVEUgQ08uLCBMVEQuCi0wMEQwNDAgICAgIChiYXNlIDE2KQkJU1lTTUFURSBDTy4sIExURC4KLQkJCQkxMDkxIFdPTFBZT05HLURPTkcKLQkJCQlTRU8tR1UsIERFQUpDT04gMzAyLTI4MAotCQkJCVNPVVRIIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLTQxICAgKGhleCkJCUFNSUdPIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMEQwNDEgICAgIChiYXNlIDE2KQkJQU1JR08gVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQk0Ri0xQiwgTk8uMTIsIExBTkUgNjA5LCBTRUMuNSwKLQkJCQlDSFVORyBIU0lOIFJPQUQsIFNBTiBDSFVORyBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtNDIgICAoaGV4KQkJTUFITE8gR01CSCAmIENPLiBVRwotMDBEMDQyICAgICAoYmFzZSAxNikJCU1BSExPIEdNQkggJiBDTy4gVUcKLQkJCQlET05BVVNUUkFTU0UgMTIKLQkJCQlELTkzMzQyIFNBQUwvRE9OQVUKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC00MyAgIChoZXgpCQlaT05BTCBSRVRBSUwgREFUQSBTWVNURU1TCi0wMEQwNDMgICAgIChiYXNlIDE2KQkJWk9OQUwgUkVUQUlMIERBVEEgU1lTVEVNUwotCQkJCTI0IEZPUlRIIFNUUkVFVAotCQkJCUVESU5CVVJHSAotCQkJCVNDT1RMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRDAtNDQgICAoaGV4KQkJQUxJRElBTiBORVRXT1JLUywgSU5DLgotMDBEMDQ0ICAgICAoYmFzZSAxNikJCUFMSURJQU4gTkVUV09SS1MsIElOQy4KLQkJCQkxMzMwIFcuIE1JRERMRUZJRUxEIFJPQUQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC00NSAgIChoZXgpCQlLVkFTRVIgQUIKLTAwRDA0NSAgICAgKGJhc2UgMTYpCQlLVkFTRVIgQUIKLQkJCQlCT1ggNDA3NgotCQkJCTUxMSAwNCBLSU5OQUhVTFQKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtRDAtNDYgICAoaGV4KQkJRE9MQlkgTEFCT1JBVE9SSUVTLCBJTkMuCi0wMEQwNDYgICAgIChiYXNlIDE2KQkJRE9MQlkgTEFCT1JBVE9SSUVTLCBJTkMuCi0JCQkJMTAwIFBvdHJlcm8gQXZlbnVlCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwMy00OTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC00NyAgIChoZXgpCQlYTiBURUNITk9MT0dJRVMKLTAwRDA0NyAgICAgKGJhc2UgMTYpCQlYTiBURUNITk9MT0dJRVMKLQkJCQlQLk8uIEJPWCAzNTAKLQkJCQlDSEVORVkgV0EgOTkwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTQ4ICAgKGhleCkJCUVDVE9OLCBJTkMuCi0wMEQwNDggICAgIChiYXNlIDE2KQkJRUNUT04sIElOQy4KLQkJCQk1MTY4IENBTVBVUyBEUklWRQotCQkJCVBMWU1PVVRIIE1FRVRJTkcgUEEgMTk0NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTQ5ICAgKGhleCkJCUlNUFJFU1NURUsgQ08uLCBMVEQuCi0wMEQwNDkgICAgIChiYXNlIDE2KQkJSU1QUkVTU1RFSyBDTy4sIExURC4KLQkJCQk2RiwgU1BFQ0lBTFRZIENPTlNUUlVDVElPTiBDVFIKLQkJCQkxMjkwLCBTVU5TQU4tRE9ORyxTTy1HVQotCQkJCTMwMi0xMjAgS09SRUEgKFJFUC4pCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLTRBICAgKGhleCkJCVBSRVNFTkNFIFRFQ0hOT0xPR1kgR01CSAotMDBEMDRBICAgICAoYmFzZSAxNikJCVBSRVNFTkNFIFRFQ0hOT0xPR1kgR01CSAotCQkJCSsgQ08uIEtHCi0JCQkJU0VOREVOSE9SU1RFUiBTVFIuIDMyIEQtNDgzMTcgRFJFTlNURUlORgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLTRCICAgKGhleCkJCUxBIENJRSBHUk9VUCBTLkEuCi0wMEQwNEIgICAgIChiYXNlIDE2KQkJTEEgQ0lFIEdST1VQIFMuQS4KLQkJCQkxNyBSVUUgQU1QRVJFCi0JCQkJOTEzNDkgTUFTU1kgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtRDAtNEMgICAoaGV4KQkJRVVST1RFTCBURUxFQ09NIExURC4KLTAwRDA0QyAgICAgKGJhc2UgMTYpCQlFVVJPVEVMIFRFTEVDT00gTFRELgotCQkJCUNBTklTVEVSIEhPVVNFCi0JCQkJSkVXUlkgU1RSRUVUIFdJTkNIRVNURVIgQjAyMyA4U0EKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTREICAgKGhleCkJCURJViBPRiBSRVNFQVJDSCAmIFNUQVRJU1RJQ1MKLTAwRDA0RCAgICAgKGJhc2UgMTYpCQlESVYgT0YgUkVTRUFSQ0ggJiBTVEFUSVNUSUNTCi0JCQkJQk9HIE9GIFRIRSBGRURFUkFMIFJFU0VSVkUgU1lTCi0JCQkJTUFJTCBTVE9QIDk2IDIwVEggJgotCQkJCVdBU0hJTkdUT04gREMgMjA1NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTRFICAgKGhleCkJCUxPR0lCQUcKLTAwRDA0RSAgICAgKGJhc2UgMTYpCQlMT0dJQkFHCi0JCQkJMiwgUnVlIGRlIGxhIE1hbmRpbmnocmUKLQkJCQk3MjMwMCBTQUJMRS9TQVJUSEUKLQkJCQlGUkFOQ0UKLQotMDAtRDAtNEYgICAoaGV4KQkJQklUUk9OSUNTLCBJTkMuCi0wMEQwNEYgICAgIChiYXNlIDE2KQkJQklUUk9OSUNTLCBJTkMuCi0JCQkJUC5PLiBCT1ggMjIyOTAKLQkJCQlMRUhJR0ggVkFMTEVZIFBBIDE4MDAyLTIyOTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTUwICAgKGhleCkJCUlTS1JBVEVMCi0wMEQwNTAgICAgIChiYXNlIDE2KQkJSVNLUkFURUwKLQkJCQlMSlVCTEpBTlNLQSBDLiAyNEEKLQkJCQk0MDAwIEtSQU5KCi0JCQkJU0xPVkVOSUEKLQkJCQlTTE9WRU5JQQotCi0wMC1EMC01MSAgIChoZXgpCQlPMiBNSUNSTywgSU5DLgotMDBEMDUxICAgICAoYmFzZSAxNikJCU8yIE1JQ1JPLCBJTkMuCi0JCQkJMjkwMSBUQVNNQU4gRFJJVkUsIFNURS4jMjA1Ci0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTUyICAgKGhleCkJCUFTQ0VORCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBEMDUyICAgICAoYmFzZSAxNikJCUFTQ0VORCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCU9ORSBBU0NFTkQgUExBWkEKLQkJCQkxNzAxIEhBUkJPUiBCQVkgUEFSS1dBWQotCQkJCUFMQU1FREEgQ0EgOTQ1MDItMzAwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNTMgICAoaGV4KQkJQ09OTkVDVEVEIFNZU1RFTVMKLTAwRDA1MyAgICAgKGJhc2UgMTYpCQlDT05ORUNURUQgU1lTVEVNUwotCQkJCTEyNiBXLiBGSUdVRVJPQSBTVFJFRVQKLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC01NCAgIChoZXgpCQlTQVMgSU5TVElUVVRFIElOQy4KLTAwRDA1NCAgICAgKGJhc2UgMTYpCQlTQVMgSU5TVElUVVRFIElOQy4KLQkJCQlTQVMgQ0FNUFVTIERSSVZFLCBSNAotCQkJCUNBUlkgTkMgMjc1MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTU1ICAgKGhleCkJCUtBVEhSRUlOLVdFUktFIEtHCi0wMEQwNTUgICAgIChiYXNlIDE2KQkJS0FUSFJFSU4tV0VSS0UgS0cKLQkJCQlBTlRPTi1LQVRIUkVJTi1TVFJBU1MgMS0zCi0JCQkJRC04MzAwNCBST1NFTkhFSU0KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC01NiAgIChoZXgpCQlTT01BVCBDT1JQT1JBVElPTgotMDBEMDU2ICAgICAoYmFzZSAxNikJCVNPTUFUIENPUlBPUkFUSU9OCi0JCQkJNzAyIEtJTExBUk5FWSBTVFJFRVQKLQkJCQlVUkJBTkEgSUwgNjE4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTU3ICAgKGhleCkJCVVMVFJBSywgSU5DLgotMDBEMDU3ICAgICAoYmFzZSAxNikJCVVMVFJBSywgSU5DLgotCQkJCTEzMDEgV0FURVJTIFJJREdFIERSSVZFCi0JCQkJTEVXSVNWSUxMRSBUWCA3NTA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNTggICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMDU4ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNTkgICAoaGV4KQkJQU1CSVQgTUlDUk9TWVNURU1TIENPUlAuCi0wMEQwNTkgICAgIChiYXNlIDE2KQkJQU1CSVQgTUlDUk9TWVNURU1TIENPUlAuCi0JCQkJNUYtMSwgNSBIU0lOLUFOIFJPQUQKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSyBIU0lOQ0hVCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTVBICAgKGhleCkJCVNZTUJJT05JQ1MsIExURC4KLTAwRDA1QSAgICAgKGJhc2UgMTYpCQlTWU1CSU9OSUNTLCBMVEQuCi0JCQkJU1QuIEpPSE4nUyBJTk5PVkFUSU9OIFBBUksKLQkJCQlDQU1CUklER0UgIENCNCAwV1MKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRDAtNUIgICAoaGV4KQkJQUNST0xPT1AgTU9USU9OIENPTlRST0wKLTAwRDA1QiAgICAgKGJhc2UgMTYpCQlBQ1JPTE9PUCBNT1RJT04gQ09OVFJPTAotCQkJCVNZU1RFTVMKLQkJCQkzNjUwIENIRVNUTlVUIFNULiBOLgotCQkJCUNIQVNLQSBNTiA1NTMxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNUMgICAoaGV4KQkJVEVDSE5PVFJFTkQgU1lTVEVNVEVDSE5JSyBHTUJICi0wMEQwNUMgICAgIChiYXNlIDE2KQkJVEVDSE5PVFJFTkQgU1lTVEVNVEVDSE5JSyBHTUJICi0JCQkJV0lMSEVMTS1XT0xGRi1TVFJBU1NFIDYKLQkJCQlHRVItOTkwOTkgRVJGVVJUCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtNUQgICAoaGV4KQkJSU5URUxMSVdPUlhYLCBJTkMuCi0wMEQwNUQgICAgIChiYXNlIDE2KQkJSU5URUxMSVdPUlhYLCBJTkMuCi0JCQkJMTgxOSBNQUlOIFNUUkVFVCwgIFNURSAjMTEwMQotCQkJCVNBUkFTT1RBIEZMIDM0MjM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC01RSAgIChoZXgpCQlTVFJBVEFCRUFNIFRFQ0hOT0xPR1ksIElOQy4KLTAwRDA1RSAgICAgKGJhc2UgMTYpCQlTVFJBVEFCRUFNIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkxOTQzIExBTkRJTkdTIERSSVZFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNUYgICAoaGV4KQkJVkFMQ09NLCBJTkMuCi0wMEQwNUYgICAgIChiYXNlIDE2KQkJVkFMQ09NLCBJTkMuCi0JCQkJMTExMSBJTkRVU1RSWSBBVkVOVUUKLQkJCQlST0FOT0tFIFZBIDI0MDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC02MCAgIChoZXgpCQlQYW5hc29uaWMgRXVyb3BlIEx0ZC4KLTAwRDA2MCAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgRXVyb3BlIEx0ZC4KLQkJCQlMQUJPUkFUT1JJRVMgR01CSAotCQkJCU1PTlpBU1RSLiA0QyBELTYzMjI1IExBTkdFTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLTYxICAgKGhleCkJCVRSRU1PTiBFTlRFUlBSSVNFUyBDTy4sIExURC4KLTAwRDA2MSAgICAgKGJhc2UgMTYpCQlUUkVNT04gRU5URVJQUklTRVMgQ08uLCBMVEQuCi0JCQkJMTVGLCBOTy4gMTE2LCBTRUMuIDEKLQkJCQlIU0lOLVRBSSA1VEggUk9BRCBIU0lDSElILCBUQUlQRUkgQ09VTlRZCi0JCQkJVEFJV0FOIFRBSVdBTiBST0MKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTYyICAgKGhleCkJCURJR0lHUkFNCi0wMEQwNjIgICAgIChiYXNlIDE2KQkJRElHSUdSQU0KLQkJCQlQQVJDIERFIFBSRSBNSUxMSUVUCi0JCQkJMzgzMzAgTU9OVEJPTk5PVAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC1EMC02MyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEQwNjMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC02NCAgIChoZXgpCQlNVUxUSVRFTAotMDBEMDY0ICAgICAoYmFzZSAxNikJCU1VTFRJVEVMCi0JCQkJMjkwNSBSVUUgREUgQ0VMTEVTCi0JCQkJUVVFQkVDIENJVFksIFFVRUJFQyBQUk9WSU5DRQotCQkJCUNBTkFEQSBDQU5BREEgRzJDLTFXNwotCQkJCUNBTkFEQQotCi0wMC1EMC02NSAgIChoZXgpCQlUT0tPIEVMRUNUUklDCi0wMEQwNjUgICAgIChiYXNlIDE2KQkJVE9LTyBFTEVDVFJJQwotCQkJCTQwMDggS1VST0hBTUEsIEhBU1VEQS1TSEkKLQkJCQlTQUlUQU1BIDM0OS0wMTkyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC02NiAgIChoZXgpCQlXSU5UUklTUyBFTkdJTkVFUklORyBDT1JQLgotMDBEMDY2ICAgICAoYmFzZSAxNikJCVdJTlRSSVNTIEVOR0lORUVSSU5HIENPUlAuCi0JCQkJNjM0NCBGRVJSSVMgU1FVQVJFCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC02NyAgIChoZXgpCQlDQU1QSU8gQ09NTVVOSUNBVElPTlMKLTAwRDA2NyAgICAgKGJhc2UgMTYpCQlDQU1QSU8gQ09NTVVOSUNBVElPTlMKLQkJCQkyMDMzIEdBVEVXQVkgUEwsIFNVSVRFICM2MDAKLQkJCQlTQU4gSk9TRSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNjggICAoaGV4KQkJSVdJTEwgQ09SUE9SQVRJT04KLTAwRDA2OCAgICAgKGJhc2UgMTYpCQlJV0lMTCBDT1JQT1JBVElPTgotCQkJCU5PLjEwLCBXVS1DSFVBTiAzIFJELAotCQkJCUhTSU4tQ0hVQU4gQ0lUWSBUQUlQRUkKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTY5ICAgKGhleCkJCVRFQ0hOT0xPR0lDIFNZU1RFTVMKLTAwRDA2OSAgICAgKGJhc2UgMTYpCQlURUNITk9MT0dJQyBTWVNURU1TCi0JCQkJMTY2MTAgRS4gTEFTRVIgRFJJVkUtU1RFLiAjMTAKLQkJCQlGT1VOVEFJTiBISUxMUyBBWiA4NTI2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNkEgICAoaGV4KQkJTElOS1VQIFNZU1RFTVMgQ09SUE9SQVRJT04KLTAwRDA2QSAgICAgKGJhc2UgMTYpCQlMSU5LVVAgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTExOTAgQ09MRU1BTiBBVkUuLSBTVEUgIzJDCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTZCICAgKGhleCkJCVNSIFRFTEVDT00gSU5DLgotMDBEMDZCICAgICAoYmFzZSAxNikJCVNSIFRFTEVDT00gSU5DLgotCQkJCTgxNTAgVHJhbnMgQ2FuYWRhIEhpZ2h3YXkKLQkJCQlNb250cmVhbAotCQkJCVF1ZWJlYyAgSDRTIDFNNQotCQkJCUNBTkFEQQotCi0wMC1EMC02QyAgIChoZXgpCQlTSEFSRVdBVkUsIElOQy4KLTAwRDA2QyAgICAgKGJhc2UgMTYpCQlTSEFSRVdBVkUsIElOQy4KLQkJCQk1MTc1IEhJTExTREFMRSBDSVJDTEUKLQkJCQlFTCBET1JBRE8gSElMTFMgQ0EgOTU3NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTZEICAgKGhleCkJCUFDUklTT04sIElOQy4KLTAwRDA2RCAgICAgKGJhc2UgMTYpCQlBQ1JJU09OLCBJTkMuCi0JCQkJMjAgRU1QSVJFIEJMVkQuCi0JCQkJTU9PTkFDSElFIE5KIDA3MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC02RSAgIChoZXgpCQlUUkVORFZJRVcgUkVDT1JERVJTIExURC4KLTAwRDA2RSAgICAgKGJhc2UgMTYpCQlUUkVORFZJRVcgUkVDT1JERVJTIExURC4KLQkJCQk0IEFJUkZJRUxEIFdBWQotCQkJCUNIUklTVENIVVJDSCBET1JTRVQgQkgyMyAzVFMKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTZGICAgKGhleCkJCUtNQyBDT05UUk9MUwotMDBEMDZGICAgICAoYmFzZSAxNikJCUtNQyBDT05UUk9MUwotCQkJCVAuTy4gQk9YIDQ5NwotCQkJCTE5NDc2IE5FVyBQQVJJUyBJTkRVU1RSSUFMIERSLgotCQkJCU5FVyBQQVJJUyBJTiA0NjU1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNzAgICAoaGV4KQkJTE9ORyBXRUxMIEVMRUNUUk9OSUNTIENPUlAuCi0wMEQwNzAgICAgIChiYXNlIDE2KQkJTE9ORyBXRUxMIEVMRUNUUk9OSUNTIENPUlAuCi0JCQkJNEYsIE5PLiA1OS0xLCBUU0FPIERJIFdFSQotCQkJCVNIRU5HS0VORyBIU0lBTkcsIFRBSVBFSSBIU0lFTgotCQkJCVRBSVdBTiAyMjIgVEFJV0FOIDIyMiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTcxICAgKGhleCkJCUVDSEVMT04gQ09SUC4KLTAwRDA3MSAgICAgKGJhc2UgMTYpCQlFQ0hFTE9OIENPUlAuCi0JCQkJNTUwIE1lcmlkaWFuIEF2ZW51ZQotCQkJCVNhbiBKb3NlIENBIDk1MTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC03MiAgIChoZXgpCQlCUk9BRExPR0lDCi0wMEQwNzIgICAgIChiYXNlIDE2KQkJQlJPQURMT0dJQwotCQkJCTQ2MyBTLiBNSUxQSVRBUyBCTFZELgotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC03MyAgIChoZXgpCQlBQ04gQURWQU5DRUQgQ09NTVVOSUNBVElPTlMKLTAwRDA3MyAgICAgKGJhc2UgMTYpCQlBQ04gQURWQU5DRUQgQ09NTVVOSUNBVElPTlMKLQkJCQlORVRXT1JLUyBTQQotCQkJCVJVRSBEVSBQVUlUUy1HT0RFVCBCQSBDSC0yMDAwIE5FVUNIQVRFTAotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtRDAtNzQgICAoaGV4KQkJVEFRVUEgU1lTVEVNUywgSU5DLgotMDBEMDc0ICAgICAoYmFzZSAxNikJCVRBUVVBIFNZU1RFTVMsIElOQy4KLQkJCQkxNjAwIEZBTE1PVVRIIFJELiAtIFNURQotCQkJCUNFTlRFUlZJTExFIE1BIDAyNjMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC03NSAgIChoZXgpCQlBTEFSSVMgTUVESUNBTCBTWVNURU1TLCBJTkMuCi0wMEQwNzUgICAgIChiYXNlIDE2KQkJQUxBUklTIE1FRElDQUwgU1lTVEVNUywgSU5DLgotCQkJCVAuTy4gQk9YIDg1MzM1Ci0JCQkJMTAyMjEgV0FURVJJREdFIENJUkNMRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMS0yNzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC03NiAgIChoZXgpCQkgQmFuayBvZiBBbWVyaWNhCi0wMEQwNzYgICAgIChiYXNlIDE2KQkJIEJhbmsgb2YgQW1lcmljYQotCQkJCTExMDAgTWVycmlsbCBEcml2ZQotCQkJCVBlbm5pbmd0b24gTkogMDg1MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTc3ICAgKGhleCkJCUxVQ0VOVCBURUNITk9MT0dJRVMKLTAwRDA3NyAgICAgKGJhc2UgMTYpCQlMVUNFTlQgVEVDSE5PTE9HSUVTCi0JCQkJQ0xJRU5UIEFDQ0VTUyBCVVNJTkVTUyBVTklUCi0JCQkJMTAxIENSQVdGT1JEUyBDT1JORVIgUk9BRCBST09NICMxRS00MzdBTAotCQkJCUhPTE1ERUwgTkogMDc3MzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTc4ICAgKGhleCkJCUVsdGV4IG9mIFN3ZWRlbiBBQgotMDBEMDc4ICAgICAoYmFzZSAxNikJCUVsdGV4IG9mIFN3ZWRlbiBBQgotCQkJCUJveCAyNAotCQkJCTI4MyAyMSBPU0JZICAKLQkJCQlTV0VERU4KLQotMDAtRDAtNzkgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMDc5ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtN0EgICAoaGV4KQkJQU1BUVVFU1QgQ09NUFVURVIgQ09SUC4KLTAwRDA3QSAgICAgKGJhc2UgMTYpCQlBTUFRVUVTVCBDT01QVVRFUiBDT1JQLgotCQkJCTgvRiwgNzkgSFNJTi1UQUkKLQkJCQk1VEggUk9BRCwgU0VDLiAxIEhTMS1DSElILCBUQUlQRUkKLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC03QiAgIChoZXgpCQlDT01DQU0gSU5URVJOQVRJT05BTCBJTkMKLTAwRDA3QiAgICAgKGJhc2UgMTYpCQlDT01DQU0gSU5URVJOQVRJT05BTCBJTkMKLQkJCQkxMTQwIE1jRGVybW90dCBEcml2ZSBTdWl0ZSAyMDAKLQkJCQlXRVNUIENIRVNURVIgUEEgMTkzODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTdDICAgKGhleCkJCUtPWU8gRUxFQ1RST05JQ1MgSU5DLiBDTy4sTFRELgotMDBEMDdDICAgICAoYmFzZSAxNikJCUtPWU8gRUxFQ1RST05JQ1MgSU5DLiBDTy4sTFRELgotCQkJCTEtMTcxIFRFTkpJTi1DSE8gS09EQUlSQQotCQkJCVRPS1lPICAxODctMDAwNAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtRDAtN0QgICAoaGV4KQkJQ09TSU5FIENPTU1VTklDQVRJT05TCi0wMEQwN0QgICAgIChiYXNlIDE2KQkJQ09TSU5FIENPTU1VTklDQVRJT05TCi0JCQkJMTIwMCBCUklER0UgUEFSS1dBWQotCQkJCVJFRFdPT0QgQ0lUWSBDQSA5NDA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtN0UgICAoaGV4KQkJS0VZQ09SUCBMVEQuCi0wMEQwN0UgICAgIChiYXNlIDE2KQkJS0VZQ09SUCBMVEQuCi0JCQkJUC5PLiBCT1ggMTk5Ci0JCQkJQ0hBVFNXT09EIE5TVyAyMDU3Ci0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLUQwLTdGICAgKGhleCkJCVNUUkFURUdZICYgVEVDSE5PTE9HWSwgTElNSVRFRAotMDBEMDdGICAgICAoYmFzZSAxNikJCVNUUkFURUdZICYgVEVDSE5PTE9HWSwgTElNSVRFRAotCQkJCVN1aXRlIDQuMiwgQ2xpZnRvbiBIZWlnaHRzCi0JCQkJVHJpYW5nbGUgV2VzdAotCQkJCUJyaXN0b2wgQlM4IDFFSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTgwICAgKGhleCkJCUVYQUJZVEUgQ09SUE9SQVRJT04KLTAwRDA4MCAgICAgKGJhc2UgMTYpCQlFWEFCWVRFIENPUlBPUkFUSU9OCi0JCQkJMTY4NSAzOFRIIFNUUkVFVAotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTgxICAgKGhleCkJCVJURCBFbWJlZGRlZCBUZWNobm9sb2dpZXMsIEluYy4KLTAwRDA4MSAgICAgKGJhc2UgMTYpCQlSVEQgRW1iZWRkZWQgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTAzIElubm92YXRpb24gQmx2ZC4KLQkJCQlTdGF0ZSBDb2xsZWdlIFBBIDE2ODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04MiAgIChoZXgpCQlJT1dBVkUgSU5DLgotMDBEMDgyICAgICAoYmFzZSAxNikJCUlPV0FWRSBJTkMuCi0JCQkJMTAxMCBXSVNDT05TSU4gQVZFTlVFCi0JCQkJV0FTSElOR1RPTiBEQyAyMDAwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtODMgICAoaGV4KQkJSU5WRVJURVgsIElOQy4KLTAwRDA4MyAgICAgKGJhc2UgMTYpCQlJTlZFUlRFWCwgSU5DLgotCQkJCTEwMTIgTU9SU0UgQVZFTlVFLSBTVEUuIzkKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTg0ICAgKGhleCkJCU5FWENPTU0gU1lTVEVNUywgSU5DLgotMDBEMDg0ICAgICAoYmFzZSAxNikJCU5FWENPTU0gU1lTVEVNUywgSU5DLgotCQkJCVNVSVQgI05BTC05MDMsCi0JCQkJU1VOR05BTSBURUNITk8tUEFSSyAxNDggWUFUQVAtRE9ORywgQlVORAotCQkJCVNVTkdOQU0tQ0lUWSBTVU5HTkFNLUNJVFkgS1lVTkdHSS1ETyxLCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLTg1ICAgKGhleCkJCU9USVMgRUxFVkFUT1IgQ09NUEFOWQotMDBEMDg1ICAgICAoYmFzZSAxNikJCU9USVMgRUxFVkFUT1IgQ09NUEFOWQotCQkJCTUgRkFSTSBTUFJJTkdTIFJELgotCQkJCUZBUk1JTkdUT04gQ1QgMDYwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTg2ICAgKGhleCkJCUZPVkVPTiwgSU5DLgotMDBEMDg2ICAgICAoYmFzZSAxNikJCUZPVkVPTiwgSU5DLgotCQkJCTI4MjAgU2FuIFRvbWFzIEV4cHJlc3N3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtODcgICAoaGV4KQkJTUlDUk9GSVJTVCBJTkMuCi0wMEQwODcgICAgIChiYXNlIDE2KQkJTUlDUk9GSVJTVCBJTkMuCi0JCQkJMTEgRUFTVCBPQUsgU1RSRUVUCi0JCQkJT0FLTEFORCBOSiAwNzQzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtODggICAoaGV4KQkJTW90b3JvbGEsIEluYy4KLTAwRDA4OCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSwgSW5jLgotCQkJCTI0NTAgV2Fsc2ggQXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTg5ICAgKGhleCkJCURZTkFDT0xPUiwgSU5DLgotMDBEMDg5ICAgICAoYmFzZSAxNikJCURZTkFDT0xPUiwgSU5DLgotCQkJCU5vLjExNiwgWmhvdXppIFN0LiwgTmVpaHUgRGlzdC4KLQkJCQlUYWlwZWkgQ2l0eSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC04QSAgIChoZXgpCQlQSE9UUk9OIFVTQQotMDBEMDhBICAgICAoYmFzZSAxNikJCVBIT1RST04gVVNBCi0JCQkJMTEwMSBTLiBXSU5DSEVTVEVSIEJMVkQuCi0JCQkJU1VJVEUgI0QtMTQ0Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLThCICAgKGhleCkJCUFEVkEgT3B0aWNhbCBOZXR3b3JraW5nIEx0ZAotMDBEMDhCICAgICAoYmFzZSAxNikJCUFEVkEgT3B0aWNhbCBOZXR3b3JraW5nIEx0ZAotCQkJCUNMSUZUT04gVEVDSE5PTE9HWSBDRU5UUkUKLQkJCQlDTElGVE9OIE1PT1IKLQkJCQlZT1JLIE5PUlRIIFlPUktTSElSRSBZTzMwIDRHVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLThDICAgKGhleCkJCUdFTk9BIFRFQ0hOT0xPR1ksIElOQy4KLTAwRDA4QyAgICAgKGJhc2UgMTYpCQlHRU5PQSBURUNITk9MT0dZLCBJTkMuCi0JCQkJNTQwMSBURUNIIENJUkNMRQotCQkJCU1PT1JQQVJLIENBIDkzMDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04RCAgIChoZXgpCQlQSE9FTklYIEdST1VQLCBJTkMuCi0wMEQwOEQgICAgIChiYXNlIDE2KQkJUEhPRU5JWCBHUk9VUCwgSU5DLgotCQkJCTEyMyBNQVJDVVMgQkxWRC4KLQkJCQlIQVVQUEFVR0UgTlkgMTE3ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLThFICAgKGhleCkJCU5WSVNJT04gSU5DLgotMDBEMDhFICAgICAoYmFzZSAxNikJCU5WSVNJT04gSU5DLgotCQkJCTEyNSBDUk9XTiBQT0lOVCBDT1VSVAotCQkJCUdSQVNTIFZBTExFWSBDQSA5NTk0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOEYgICAoaGV4KQkJQVJERU5UIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBEMDhGICAgICAoYmFzZSAxNikJCUFSREVOVCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkyNTAgTi4gV09MRkUgUk9BRAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOTAgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMDkwICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOTEgICAoaGV4KQkJU01BUlRTQU4gU1lTVEVNUywgSU5DLgotMDBEMDkxICAgICAoYmFzZSAxNikJCVNNQVJUU0FOIFNZU1RFTVMsIElOQy4KLQkJCQk0NjU1IE9MRCBJUk9OU0lERVMgRFIuICM0ODAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOTIgICAoaGV4KQkJR0xFTkFZUkUgV0VTVEVSTiBNVUxUSVBMRVgKLTAwRDA5MiAgICAgKGJhc2UgMTYpCQlHTEVOQVlSRSBXRVNURVJOIE1VTFRJUExFWAotCQkJCTExOTYgQk9SUkVHQVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC05MyAgIChoZXgpCQlUUSAtIENPTVBPTkVOVFMgR01CSAotMDBEMDkzICAgICAoYmFzZSAxNikJCVRRIC0gQ09NUE9ORU5UUyBHTUJICi0JCQkJR1VUIERFTExJTkcgLSBNVUhMU1RSIDIKLQkJCQlELTgyMjI5IFNFRUZFTEQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC05NCAgIChoZXgpCQlUSU1FTElORSBWSVNUQSwgSU5DLgotMDBEMDk0ICAgICAoYmFzZSAxNikJCVRJTUVMSU5FIFZJU1RBLCBJTkMuCi0JCQkJMTc1NS1CIExBIENPU1RBIE1FQURPV1MgRFJJVkUKLQkJCQlTQU4gTUFSQ09TIENBIDkyMDY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC05NSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudCwgRW50ZXJwcmlzZSBCdXNpbmVzcyBHcm91cAotMDBEMDk1ICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50LCBFbnRlcnByaXNlIEJ1c2luZXNzIEdyb3VwCi0JCQkJMjY4MDEgV2VzdCBBZ291cmEgUm9hZAotCQkJCUNBTEFCQVNBUyBDQSA5MTMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOTYgICAoaGV4KQkJM0NPTSBFVVJPUEUgTFRELgotMDBEMDk2ICAgICAoYmFzZSAxNikJCTNDT00gRVVST1BFIExURC4KLQkJCQlCT1VOREFSWSBXQVkKLQkJCQlIRU1FTCBIRU1QU1RFQUQgSEVSVFMuIEhQMiA3WVUKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTk3ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDA5NyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJTS9TIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTk4ICAgKGhleCkJCVBob3RvbiBEeW5hbWljcyBDYW5hZGEgSW5jLgotMDBEMDk4ICAgICAoYmFzZSAxNikJCVBob3RvbiBEeW5hbWljcyBDYW5hZGEgSW5jLgotCQkJCTIyMSBXaGl0ZWhhbGwgRHJpdmUKLQkJCQlNYXJraGFtLCBPbnRhcmlvCi0JCQkJTDNSIDlUMQotCQkJCUNBTkFEQQotCi0wMC1EMC05OSAgIChoZXgpCQlFTENBUkQgT1kKLTAwRDA5OSAgICAgKGJhc2UgMTYpCQlFTENBUkQgT1kKLQkJCQlQLk8uIEJPWCAxMjAvQkVDS0VSSU5USUMgMzgKLQkJCQk1MTIwMSBLQU5HQVNOSUVNSQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLUQwLTlBICAgKGhleCkJCUZJTEFORVQgQ09SUE9SQVRJT04KLTAwRDA5QSAgICAgKGJhc2UgMTYpCQlGSUxBTkVUIENPUlBPUkFUSU9OCi0JCQkJOTMxIEJlbmVjaWEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC05QiAgIChoZXgpCQlTUEVDVEVMIExURC4KLTAwRDA5QiAgICAgKGJhc2UgMTYpCQlTUEVDVEVMIExURC4KLQkJCQkyMSBTVElMTE9SR0FOIElORFVTVFJJQUwgUEFSSwotCQkJCVNUSUxMT1JHQU4sIENPLiBEVUJMSU4KLQkJCQlJUkVMQU5ECi0JCQkJSVJFTEFORAotCi0wMC1EMC05QyAgIChoZXgpCQlLQVBBRElBIENPTU1VTklDQVRJT05TCi0wMEQwOUMgICAgIChiYXNlIDE2KQkJS0FQQURJQSBDT01NVU5JQ0FUSU9OUwotCQkJCTM5MjUgV0VTVCBCUk9LRVIgTEFORQotCQkJCUFVU1RJTiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOUQgICAoaGV4KQkJVkVSSVMgSU5EVVNUUklFUwotMDBEMDlEICAgICAoYmFzZSAxNikJCVZFUklTIElORFVTVFJJRVMKLQkJCQkxMDgzMSBTVyBDQVNDQURFCi0JCQkJUE9SVExBTkQgT1IgOTcyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTlFICAgKGhleCkJCTJXSVJFLCBJTkMuCi0wMEQwOUUgICAgIChiYXNlIDE2KQkJMldJUkUsIElOQy4KLQkJCQk2OTQgVEFTTUFOIERSSVZFCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTlGICAgKGhleCkJCU5PVlRFSyBURVNUIFNZU1RFTVMKLTAwRDA5RiAgICAgKGJhc2UgMTYpCQlOT1ZURUsgVEVTVCBTWVNURU1TCi0JCQkJMjE3MCBQQVJBR09OIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUEwICAgKGhleCkJCU1JUFMgREVOTUFSSwotMDBEMEEwICAgICAoYmFzZSAxNikJCU1JUFMgREVOTUFSSwotCQkJCUxBVVRSVVBWQU5HIDJCCi0JCQkJMjc1MCBCQUxMRVJVUAotCQkJCURLIC0gREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtRDAtQTEgICAoaGV4KQkJT1NLQVIgVklFUkxJTkcgR01CSCArIENPLiBLRwotMDBEMEExICAgICAoYmFzZSAxNikJCU9TS0FSIFZJRVJMSU5HIEdNQkggKyBDTy4gS0cKLQkJCQlQUkVUWkZFTERFUiBTVFIuIDIxCi0JCQkJOTEzMjAgRUJFUk1BTk5TVEFEVAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLUEyICAgKGhleCkJCUlOVEVHUkFURUQgREVWSUNFCi0wMEQwQTIgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBERVZJQ0UKLQkJCQlURUNITk9MT0dZLCBJTkMuCi0JCQkJMjk3NSBTVEVOREVSIFdBWSAgTS9TIDAtMzE4Ci0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUEzICAgKGhleCkJCVZPQ0FMIERBVEEsIElOQy4KLTAwRDBBMyAgICAgKGJhc2UgMTYpCQlWT0NBTCBEQVRBLCBJTkMuCi0JCQkJMTcwMSBOIEdSRUVOVklMTEUgIzMwNAotCQkJCVJJQ0hBUkRTT04gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUE0ICAgKGhleCkJCUFMQU5UUk8gQ09NTVVOSUNBVElPTlMKLTAwRDBBNCAgICAgKGJhc2UgMTYpCQlBTEFOVFJPIENPTU1VTklDQVRJT05TCi0JCQkJMTQxIFNUT05ZIENJUkNMRSwgIFNURS4gIzIxMAotCQkJCVNBTlRBUk9TQSBDQSA5NTQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQTUgICAoaGV4KQkJQU1FUklDQU4gQVJJVU0KLTAwRDBBNSAgICAgKGJhc2UgMTYpCQlBTUVSSUNBTiBBUklVTQotCQkJCTE0MjgxIENIQU1CRVJTIFJPQUQKLQkJCQlUVVNUSU4gQ0EgOTI3ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUE2ICAgKGhleCkJCUxBTkJJUkQgVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwRDBBNiAgICAgKGJhc2UgMTYpCQlMQU5CSVJEIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJUk9PTSBBLTIxMSwgUy5CLkkuCi0JCQkJNjQ3LTI2LCBERVVOR0NIT04tRE9ORywgS0FOR1NFTy1HVSwgIFNFTwotCQkJCUtPUkVBIDE1Ny0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtRDAtQTcgICAoaGV4KQkJVE9LWU8gU09LS0kgS0VOS1lVSk8gQ08uLCBMVEQuCi0wMEQwQTcgICAgIChiYXNlIDE2KQkJVE9LWU8gU09LS0kgS0VOS1lVSk8gQ08uLCBMVEQuCi0JCQkJOC0yLCBNSU5BTUktT0hJIDYtQ0hPTUUKLQkJCQlTSElOQUdBV0EtS1UgVE9LWU8KLQkJCQlKQVBBTiAxNDAtODU2MAotCQkJCUpBUEFOCi0KLTAwLUQwLUE4ICAgKGhleCkJCU5FVFdPUksgRU5HSU5FUywgSU5DLgotMDBEMEE4ICAgICAoYmFzZSAxNikJCU5FVFdPUksgRU5HSU5FUywgSU5DLgotCQkJCTYxIFBMRUFTQU5UIFNUUkVFVAotCQkJCVJBTkRPTFBIIE1BIDAyMzY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BOSAgIChoZXgpCQlTSElOQU5PIEtFTlNISSBDTy4sIExURC4KLTAwRDBBOSAgICAgKGJhc2UgMTYpCQlTSElOQU5PIEtFTlNISSBDTy4sIExURC4KLQkJCQlFTEVDVFJPTklDIEVRVUlQTUVOVCBESVZJU0lPTgotCQkJCTYtMTUtMjYsIENIVU8sIFVFREEtU0hJIE5BR0FOTy1LRU4sIDM4Ni0KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUQwLUFBICAgKGhleCkJCUNIQVNFIENPTU1VTklDQVRJT05TCi0wMEQwQUEgICAgIChiYXNlIDE2KQkJQ0hBU0UgQ09NTVVOSUNBVElPTlMKLQkJCQlTVC4gTEVPTkFSRFMgUk9BRAotCQkJCUVBU1QgU0hFRU4gTE9ORE9OIFNXMTYgN0xZCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC1BQiAgIChoZXgpCQlERUxUQUtBQkVMIFRFTEVDT00gQ1YKLTAwRDBBQiAgICAgKGJhc2UgMTYpCQlERUxUQUtBQkVMIFRFTEVDT00gQ1YKLQkJCQlIQU5aRVdFRyAxNAotCQkJCTI4MDMgTUMgR09VREEKLQkJCQlUSEUgTkVUSEVSTEFORFMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC1EMC1BQyAgIChoZXgpCQlHUkFZU09OIFdJUkVMRVNTCi0wMEQwQUMgICAgIChiYXNlIDE2KQkJR1JBWVNPTiBXSVJFTEVTUwotCQkJCTE0MCBWSVNUQSBDRU5UUkUgRFJJVkUKLQkJCQlGT1JFU1QgVkEgMjQ1NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUFEICAgKGhleCkJCVRMIElORFVTVFJJRVMKLTAwRDBBRCAgICAgKGJhc2UgMTYpCQlUTCBJTkRVU1RSSUVTCi0JCQkJMjU0MSBUUkFDWSBST0FECi0JCQkJTk9SVEhXT09EIE9IIDQzNjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BRSAgIChoZXgpCQlPUkVTSVMgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRDBBRSAgICAgKGJhc2UgMTYpCQlPUkVTSVMgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxNDY3MCBOVyBHUkVFTkJSSUVSIFBLV1kKLQkJCQlCRUFWRVJUT04gT1IgOTcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUFGICAgKGhleCkJCUNVVExFUi1IQU1NRVIsIElOQy4KLTAwRDBBRiAgICAgKGJhc2UgMTYpCQlDVVRMRVItSEFNTUVSLCBJTkMuCi0JCQkJUE1QIENFTlRFUgotCQkJCTI0MCBWSVNUQSBQQVJLIERSSVZFCi0JCQkJUElUVFNCVVJHSCBQQSAxNTIwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQjAgICAoaGV4KQkJQklUU1dJVENIIExURC4KLTAwRDBCMCAgICAgKGJhc2UgMTYpCQlCSVRTV0lUQ0ggTFRELgotCQkJCTMgTUVBRE9XIENPVVJULCBBTU9TIFJPQUQKLQkJCQlNRUFET1dIQUxMLCBTSEVGRklFTEQgUzkgMUJYCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC1CMSAgIChoZXgpCQlPTUVHQSBFTEVDVFJPTklDUyBTQQotMDBEMEIxICAgICAoYmFzZSAxNikJCU9NRUdBIEVMRUNUUk9OSUNTIFNBCi0JCQkJUk9VVEUgREUgU09MRVVSRSA2OAotCQkJCUNILTI1MDAgQklFTk5FIDQKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLUQwLUIyICAgKGhleCkJCVhJT1RFQ0ggQ09SUE9SQVRJT04KLTAwRDBCMiAgICAgKGJhc2UgMTYpCQlYSU9URUNIIENPUlBPUkFUSU9OCi0JCQkJNjQ1NSBGTFlJTkcgQ0xPVUQgRFJJVkUKLQkJCQlFREVOIFBSQUlSSUUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUIzICAgKGhleCkJCURSUyBGTElHSFQgU0FGRVRZIEFORAotMDBEMEIzICAgICAoYmFzZSAxNikJCURSUyBGTElHSFQgU0FGRVRZIEFORAotCQkJCUNPTU1VTklDQVRJT05TCi0JCQkJNDAgQ09OQ09VUlNFIEdBVEUgTkVQRUFOCi0JCQkJQ0FOQURBIEsyRSA4QTYKLQkJCQlDQU5BREEKLQotMDAtRDAtQjQgICAoaGV4KQkJS0FUU1VKSU1BIENPLiwgTFRELgotMDBEMEI0ICAgICAoYmFzZSAxNikJCUtBVFNVSklNQSBDTy4sIExURC4KLQkJCQkxLTYtMS0sIFNISVJBVE9SSQotCQkJCUtBVFNVU0hJS0EtS1UgVE9LWU8gMTI1LTAwNjMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUQwLUI1ICAgKGhleCkJCUlQcmljb3QgZm9ybWVybHkgRG90Q29tCi0wMEQwQjUgICAgIChiYXNlIDE2KQkJSVByaWNvdCBmb3JtZXJseSBEb3RDb20KLQkJCQkxMC0xMiwgYXZlbnVlIGRlIFZlcmR1bgotCQkJCUxhLUdhcmVubmUtQ29sb21iZXMgIEYtOTIyNTAKLQkJCQlGUkFOQ0UKLQotMDAtRDAtQjYgICAoaGV4KQkJQ1JFU0NFTlQgTkVUV09SS1MsIElOQy4KLTAwRDBCNiAgICAgKGJhc2UgMTYpCQlDUkVTQ0VOVCBORVRXT1JLUywgSU5DLgotCQkJCTIwMSBSSVZFUk5FQ0sgUk9BRAotCQkJCUNIRUxNU0ZPUkQgTUEgMDE4NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUI3ICAgKGhleCkJCUlOVEVMIENPUlBPUkFUSU9OCi0wMEQwQjcgICAgIChiYXNlIDE2KQkJSU5URUwgQ09SUE9SQVRJT04KLQkJCQk1MjAwIE5FIEVMQU0gWU9VTkcgUEFSS1dBWQotCQkJCUhGMS0wOAotCQkJCUhJTExTQk9STyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQjggICAoaGV4KQkJSW9tZWdhIENvcnBvcmF0aW9uCi0wMEQwQjggICAgIChiYXNlIDE2KQkJSW9tZWdhIENvcnBvcmF0aW9uCi0JCQkJCi0JCQkJQ0FOQURBCi0KLTAwLUQwLUI5ICAgKGhleCkJCU1JQ1JPVEVLIElOVEVSTkFUSU9OQUwsIElOQy4KLTAwRDBCOSAgICAgKGJhc2UgMTYpCQlNSUNST1RFSyBJTlRFUk5BVElPTkFMLCBJTkMuCi0JCQkJTk8uIDYgSU5EVVNUUlkgRUFTVCBST0FEIDMKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSyBIU0lOQ0hVCi0JCQkJVEFJV0FOIDMwMDc3IFRBSVdBTiAzMDA3NyBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLUJBICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDBCQSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1CQiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEQwQkIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRSAgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQkMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMEJDICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUtU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQkQgICAoaGV4KQkJU2lsaWNvbiBJbWFnZSBHbWJICi0wMEQwQkQgICAgIChiYXNlIDE2KQkJU2lsaWNvbiBJbWFnZSBHbWJICi0JCQkJR2FyYnNlbmVyIExhbmRzdHIuIDEwCi0JCQkJRC0zMDQxOSBIYW5ub3ZlcgotCQkJCUdFUk1BTlkKLQotMDAtRDAtQkUgICAoaGV4KQkJRU1VVEVDIElOQy4KLTAwRDBCRSAgICAgKGJhc2UgMTYpCQlFTVVURUMgSU5DLgotCQkJCVAuTy4gQk9YIDMwMzUKLQkJCQlFVkVSRVRUIFdBIDk4MjAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1CRiAgIChoZXgpCQlQSVZPVEFMIFRFQ0hOT0xPR0lFUwotMDBEMEJGICAgICAoYmFzZSAxNikJCVBJVk9UQUwgVEVDSE5PTE9HSUVTCi0JCQkJNzAgUy4gTEFLRSBBVkVOVUUgLSBTVEUuICM5MDAKLQkJCQlQQVNBREVOQSBDQSA5MTEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQzAgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMEMwICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFIuICBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1DMSAgIChoZXgpCQlIQVJNT05JQyBEQVRBIFNZU1RFTVMsIExURC4KLTAwRDBDMSAgICAgKGJhc2UgMTYpCQlIQVJNT05JQyBEQVRBIFNZU1RFTVMsIExURC4KLQkJCQkxMCBCRUlUIFNIQU1BSSBTVFJFRVQKLQkJCQlURUwtQVZJVgotCQkJCUlTUkFFTCA2NzAxOAotCQkJCUlTUkFFTAotCi0wMC1EMC1DMiAgIChoZXgpCQlCQUxUSEFaQVIgVEVDSE5PTE9HWSBBQgotMDBEMEMyICAgICAoYmFzZSAxNikJCUJBTFRIQVpBUiBURUNITk9MT0dZIEFCCi0JCQkJQU5LREFNTVNHQVRBTiAyNAotCQkJCVMtMTcxNDMgU09MTkEKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtRDAtQzMgICAoaGV4KQkJVklWSUQgVEVDSE5PTE9HWSBQVEUsIExURC4KLTAwRDBDMyAgICAgKGJhc2UgMTYpCQlWSVZJRCBURUNITk9MT0dZIFBURSwgTFRELgotCQkJCTEwMDMgQlVLSVQgTUVSQUggQ0VOVFJBTAotCQkJCSMwMy0wOSwgUzE1OTgzNgotCQkJCVNJTkdBUE9SRQotCQkJCVNJTkdBUE9SRQotCi0wMC1EMC1DNCAgIChoZXgpCQlURVJBVEVDSCBDT1JQT1JBVElPTgotMDBEMEM0ICAgICAoYmFzZSAxNikJCVRFUkFURUNIIENPUlBPUkFUSU9OCi0JCQkJMjIzIE1JRERMRVNFWCBUUlBLLgotCQkJCUJVUkxJTkdUT04gTUEgMDE4MDMtMzMwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQzUgICAoaGV4KQkJQ09NUFVUQVRJT05BTCBTWVNURU1TLCBJTkMuCi0wMEQwQzUgICAgIChiYXNlIDE2KQkJQ09NUFVUQVRJT05BTCBTWVNURU1TLCBJTkMuCi0JCQkJODM1IElOTk9WQVRJT04gRFJJVkUKLQkJCQlLTk9YVklMTEUgVE4gMzc5MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUM2ICAgKGhleCkJCVRIT01BUyAmIEJFVFRTIENPUlAuCi0wMEQwQzYgICAgIChiYXNlIDE2KQkJVEhPTUFTICYgQkVUVFMgQ09SUC4KLQkJCQlUaG9tYXMgJiBCZXR0cyBBdXN0LiBQdHkuIEx0ZC4KLQkJCQkyM2EgTnlyYW5nIFN0cmVldAotCQkJCUxpZGNvbWJlIE5ldyBTb3V0aCBXYWxlcyA5MjYxOAotCQkJCUFVU1RSQUxJQQotCi0wMC1EMC1DNyAgIChoZXgpCQlQQVRIV0FZLCBJTkMuCi0wMEQwQzcgICAgIChiYXNlIDE2KQkJUEFUSFdBWSwgSU5DLgotCQkJCTc3NyBCRVRBIERSSVZFCi0JCQkJTUFZRklFTEQgVklMTEFHRSBPSCA0NDE0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQzggICAoaGV4KQkJUHJldmFzIEEvUwotMDBEMEM4ICAgICAoYmFzZSAxNikJCVByZXZhcyBBL1MKLQkJCQlGcmVkZXJpa3NrYWogNgotCQkJCURLLTI0NTAgS/hiZW5oYXZuIFNWIAotCQkJCURFTk1BUksKLQotMDAtRDAtQzkgICAoaGV4KQkJQURWQU5URUNIIENPLiwgTFRELgotMDBEMEM5ICAgICAoYmFzZSAxNikJCUFEVkFOVEVDSCBDTy4sIExURC4KLQkJCQlGTC4gNCwgTk8uICAxMDgtMwotCQkJCU1JTkctQ0hVQU4gUk9BRCBTSElORy1USUVOIENJVFkKLQkJCQlUQUlQRUkgVEFJUEVJIFRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtQ0EgICAoaGV4KQkJSW50cmluc3ljIFNvZnR3YXJlIEludGVybmF0aW9uYWwgSW5jLgotMDBEMENBICAgICAoYmFzZSAxNikJCUludHJpbnN5YyBTb2Z0d2FyZSBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQk3MDAgV2VzdCBQZW5kZXIgU3RyZWV0Ci0JCQkJMTB0aCBmbG9vcgotCQkJCVZhbmNvdXZlciBCLkMuIFY2QyAxRzgKLQkJCQlDQU5BREEKLQotMDAtRDAtQ0IgICAoaGV4KQkJREFTQU4gQ08uLCBMVEQuCi0wMEQwQ0IgICAgIChiYXNlIDE2KQkJREFTQU4gQ08uLCBMVEQuCi0JCQkJNkYsIEtPU01PIFRPV0VSCi0JCQkJMTAwMiwgREFFQ0hJLURPTkcsIEtBTkdOQU0tS1UgU0VPVUwKLQkJCQlLT1JFQSAoWklQIDEzNS0yODApCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLUNDICAgKGhleCkJCVRFQ0hOT0xPR0lFUyBMWVJFIElOQy4KLTAwRDBDQyAgICAgKGJhc2UgMTYpCQlURUNITk9MT0dJRVMgTFlSRSBJTkMuCi0JCQkJMTIwMCBTVC1KRUFOLUJBUFRJU1RFLAotCQkJCVNVSVRFICMxMjAgUVVFQkVDLCBRVUVCRUMKLQkJCQlDQU5BREEgRzJFIDVFOAotCQkJCUNBTkFEQQotCi0wMC1EMC1DRCAgIChoZXgpCQlBVEFOIFRFQ0hOT0xPR1kgSU5DLgotMDBEMENEICAgICAoYmFzZSAxNikJCUFUQU4gVEVDSE5PTE9HWSBJTkMuCi0JCQkJIzUsIEFMTEVZIDE4LCBMQU5FIDgxLAotCQkJCUNISUVOIEtBTkcsIDJORCBST0FEIEhJTkNIVQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC1DRSAgIChoZXgpCQlBU1lTVCBFTEVDVFJPTklDCi0wMEQwQ0UgICAgIChiYXNlIDE2KQkJQVNZU1QgRUxFQ1RST05JQwotCQkJCUJST0RJU0NFIDcsIDEwQyBUUlpJTgotCQkJCTEyMzYgVFJaSU4KLQkJCQlTTE9WRU5JQQotCQkJCVNMT1ZFTklBCi0KLTAwLUQwLUNGICAgKGhleCkJCU1PUkVUT04gQkFZCi0wMEQwQ0YgICAgIChiYXNlIDE2KQkJTU9SRVRPTiBCQVkKLQkJCQkxMi85NyBKSUpBV1MgU1RSRUVUCi0JCQkJU1VNTkVSIFBBUksuIDQwNzQgUUxELgotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC1EMC1EMCAgIChoZXgpCQlaSE9OR1hJTkcgVEVMRUNPTSBMVEQuCi0wMEQwRDAgICAgIChiYXNlIDE2KQkJWkhPTkdYSU5HIFRFTEVDT00gTFRELgotCQkJCTgtOUYgQlVJTERJTkcgNTQsMzAxIwotCQkJCVpIT05HIFNIQU4gRE9OR0xVLCBOQU5KSU5HIFBSQywgUEM9MjEwMDAKLQkJCQlDSElOQQotCQkJCUNISU5BCi0KLTAwLUQwLUQxICAgKGhleCkJCVN5Y2Ftb3JlIE5ldHdvcmtzCi0wMEQwRDEgICAgIChiYXNlIDE2KQkJU3ljYW1vcmUgTmV0d29ya3MKLQkJCQkyMjAgTWlsbCBSZAotCQkJCUNoZWxtc2ZvcmQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUQyICAgKGhleCkJCUVQSUxPRyBDT1JQT1JBVElPTgotMDBEMEQyICAgICAoYmFzZSAxNikJCUVQSUxPRyBDT1JQT1JBVElPTgotCQkJCTUwMCBDT1JQT1JBVEUgQ0lSQ0xFIC0gU1RFLgotCQkJCUdPTERFTiBDTyA4MDQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRDMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMEQzICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUKLQkJCQlNL1MgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRDQgICAoaGV4KQkJVi1CSVRTLCBJTkMuCi0wMEQwRDQgICAgIChiYXNlIDE2KQkJVi1CSVRTLCBJTkMuCi0JCQkJMjE1MCBUUkFERSBaT05FIEJMVkQuCi0JCQkJU1VJVEUgIzEwNQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1ENSAgIChoZXgpCQlHUlVORElHIEFHCi0wMEQwRDUgICAgIChiYXNlIDE2KQkJR1JVTkRJRyBBRwotCQkJCUtVUkdBUlRFTlNHVFJFRVQgMzcKLQkJCQlELTkwNzYyIEZVRVJUSC9CQVlFUk4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC1ENiAgIChoZXgpCQlBRVRIUkEgVEVMRUNPTVVOSUNBWklPTkkKLTAwRDBENiAgICAgKGJhc2UgMTYpCQlBRVRIUkEgVEVMRUNPTVVOSUNBWklPTkkKLQkJCQlWSUEgTUFUVEVPIFJJQ0NJLCAxMAotCQkJCTYwMDIwIEFOQ09OQQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtRDAtRDcgICAoaGV4KQkJQjJDMiwgSU5DLgotMDBEMEQ3ICAgICAoYmFzZSAxNikJCUIyQzIsIElOQy4KLQkJCQkyMDIwIENIQUxMRU5HRVIgRFJJVkUtCi0JCQkJU1VJVEUgIzEwMQotCQkJCUFMQU1FREEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUQ4ICAgKGhleCkJCTNDb20gQ29ycG9yYXRpb24KLTAwRDBEOCAgICAgKGJhc2UgMTYpCQkzQ29tIENvcnBvcmF0aW9uCi0JCQkJMjEzMyBMRUdIT1JOIFNUUkVFVAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUQ5ICAgKGhleCkJCURFRElDQVRFRCBNSUNST0NPTVBVVEVSUwotMDBEMEQ5ICAgICAoYmFzZSAxNikJCURFRElDQVRFRCBNSUNST0NPTVBVVEVSUwotCQkJCUdST1VQLCBMVEQuCi0JCQkJMTEgT0FLIFNUUkVFVCwgUEVORExFQlVSWSBTV0lOVE9OLCBNQU5DSAotCQkJCU0yNzRGTCBVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLURBICAgKGhleCkJCVRBSUNPTSBEQVRBIFNZU1RFTVMgQ08uLCBMVEQuCi0wMEQwREEgICAgIChiYXNlIDE2KQkJVEFJQ09NIERBVEEgU1lTVEVNUyBDTy4sIExURC4KLQkJCQk0NSwgV1UtS1VORyA1IFJPQUQKLQkJCQlXVS1LVSBJTkQuIFBBVksgVEFJUEVJLUhTSUVOCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC1EQiAgIChoZXgpCQlNQ1FVQVkgSU5URVJOQVRJT05BTAotMDBEMERCICAgICAoYmFzZSAxNikJCU1DUVVBWSBJTlRFUk5BVElPTkFMCi0JCQkJMTM2MDAgSU5EVVNUUklBTCBQQVJLIEJMVkQuCi0JCQkJTUlOTkVBUE9MSVMgTU4gNTU0NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLURDICAgKGhleCkJCU1PRFVMQVIgTUlOSU5HIFNZU1RFTVMsIElOQy4KLTAwRDBEQyAgICAgKGJhc2UgMTYpCQlNT0RVTEFSIE1JTklORyBTWVNURU1TLCBJTkMuCi0JCQkJMzI4OSBFLiBIRU1JU1BIRVJFIExPT1AKLQkJCQlUVUNTT04gQVogODU3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUREICAgKGhleCkJCVNVTlJJU0UgVEVMRUNPTSwgSU5DLgotMDBEMEREICAgICAoYmFzZSAxNikJCVNVTlJJU0UgVEVMRUNPTSwgSU5DLgotCQkJCTIyIEdSRUFUIE9BS1MgQkxWRC4KLQkJCQlTQU4gSk9TRSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtREUgICAoaGV4KQkJUEhJTElQUyBNVUxUSU1FRElBIE5FVFdPUksKLTAwRDBERSAgICAgKGJhc2UgMTYpCQlQSElMSVBTIE1VTFRJTUVESUEgTkVUV09SSwotCQkJCVNZU1RFTVMgR01CSAotCQkJCUZJQ0hURVNUUkFTU0UgMUEgRC0wMjYwMSBCQVVUWkVOCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtREYgICAoaGV4KQkJS1VaVU1JIEVMRUNUUk9OSUNTLCBJTkMuCi0wMEQwREYgICAgIChiYXNlIDE2KQkJS1VaVU1JIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJMjgtNiBJSUpJTUEtQ0hZTywgU0FLQUUtS1UKLQkJCQlZT0tPSEFNQS1TSEkgS0FOQUdBV0EsIDI0NC0wODQyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC1FMCAgIChoZXgpCQlET09JTiBFTEVDVFJPTklDUyBDTy4KLTAwRDBFMCAgICAgKGJhc2UgMTYpCQlET09JTiBFTEVDVFJPTklDUyBDTy4KLQkJCQlET09JTiBCTERHLiAxNi02LCBTT09OQUUtRE9ORwotCQkJCUJVTkRBTkctR1UsIFNVTkdOQU0tU0kgS1lVTkdHSS1ETwotCQkJCUtPUkVBIDQ2My0wMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtRDAtRTEgICAoaGV4KQkJQVZJT05JVEVLIElTUkFFTCBJTkMuCi0wMEQwRTEgICAgIChiYXNlIDE2KQkJQVZJT05JVEVLIElTUkFFTCBJTkMuCi0JCQkJMSBFVEdBUiBTVFJFRVQKLQkJCQlUSVJBVCAgQ0FSTUVMICAzOTEyMAotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC1EMC1FMiAgIChoZXgpCQlNUlQgTUlDUk8sIElOQy4KLTAwRDBFMiAgICAgKGJhc2UgMTYpCQlNUlQgTUlDUk8sIElOQy4KLQkJCQkxNDAwMCBTLiBNSUxJVEFSWSBUUkFJTAotCQkJCURFTFJBWSBCRUFDSCBGTCAzMzQ4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRTMgICAoaGV4KQkJRUxFLUNIRU0gRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi0wMEQwRTMgICAgIChiYXNlIDE2KQkJRUxFLUNIRU0gRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi0JCQkJV0lORFNUT05FIE9GRklDRQotCQkJCTEtODAzLCAyNzUtMiBZQU5HSlVFLURPTkcsIFNFT0NITy1LVQotCQkJCVNFT1VMIDEzNy0xMzAgU0VPVUwgMTM3LTEzMCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC1FNCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEQwRTQgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1FNSAgIChoZXgpCQlTT0xJRFVNIFNZU1RFTVMgQ09SUC4KLTAwRDBFNSAgICAgKGJhc2UgMTYpCQlTT0xJRFVNIFNZU1RFTVMgQ09SUC4KLQkJCQk5NDAgQkVMRkFTVCBST0FEIDFTLjIxNwotCQkJCU9UVEFXQSwgT05UQVJJTyBLMUcgNEEyCi0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLUQwLUU2ICAgKGhleCkJCUlCT05EIElOQy4KLTAwRDBFNiAgICAgKGJhc2UgMTYpCQlJQk9ORCBJTkMuCi0JCQkJMzE2MCwgREUgTEEgQ1JVWiBCTFZELgotCQkJCVNVSVRFICMxMDEKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRTcgICAoaGV4KQkJVkNPTiBURUxFQ09NTVVOSUNBVElPTiBMVEQuCi0wMEQwRTcgICAgIChiYXNlIDE2KQkJVkNPTiBURUxFQ09NTVVOSUNBVElPTiBMVEQuCi0JCQkJMjIgTUFTS0lUIFNUUkVFVAotCQkJCUhFUlpMSVlBICA0NjczMwotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC1EMC1FOCAgIChoZXgpCQlNQUMgU1lTVEVNIENPLiwgTFRELgotMDBEMEU4ICAgICAoYmFzZSAxNikJCU1BQyBTWVNURU0gQ08uLCBMVEQuCi0JCQkJUiZEIElOU1RJVFVURQotCQkJCU1BQyBTWVNURU0gQ08uLCBMVEQuIDIxOS0yIEFOQU5HNy1ET05HLAotCQkJCUtZVU5HS0ktRE8gS09SRUEsIDQzMC0wMTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtRDAtRTkgICAoaGV4KQkJQWR2YW50YWdlIENlbnR1cnkgVGVsZWNvbW11bmljYXRpb24gQ29ycC4KLTAwRDBFOSAgICAgKGJhc2UgMTYpCQlBZHZhbnRhZ2UgQ2VudHVyeSBUZWxlY29tbXVuaWNhdGlvbiBDb3JwLgotCQkJCTRGLCA0MSwgVHVuZ2hzaW4gUmQuCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLUVBICAgKGhleCkJCU5FWFRPTkUgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRDBFQSAgICAgKGJhc2UgMTYpCQlORVhUT05FIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJOTcwMCBHUkVBVCBTRU5FQ0EgSEdIV1kKLQkJCQlST0NLVklMTEUgTUQgMjA4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUVCICAgKGhleCkJCUxJR0hURVJBIE5FVFdPUktTLCBJTkMuCi0wMEQwRUIgICAgIChiYXNlIDE2KQkJTElHSFRFUkEgTkVUV09SS1MsIElOQy4KLQkJCQkxMDIwMSBCVUJCIFJPQUQKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUVDICAgKGhleCkJCU5BS0FZTyBURUxFQ09NTVVOSUNBVElPTlMsIElOQwotMDBEMEVDICAgICAoYmFzZSAxNikJCU5BS0FZTyBURUxFQ09NTVVOSUNBVElPTlMsIElOQwotCQkJCTEtMy0yIFNPVUpZQS1NQUNISQotCQkJCU1BRUJBU0hJLVNISSBHVU5NQSwgMzcxLTA4NTMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUQwLUVEICAgKGhleCkJCVhJT1gKLTAwRDBFRCAgICAgKGJhc2UgMTYpCQlYSU9YCi0JCQkJMTUwIERPVyBTVFJFRVQKLQkJCQlNQU5DSEVTVEVSIE5IIDAzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1FRSAgIChoZXgpCQlESUNUQVBIT05FIENPUlBPUkFUSU9OCi0wMEQwRUUgICAgIChiYXNlIDE2KQkJRElDVEFQSE9ORSBDT1JQT1JBVElPTgotCQkJCTMxOTEgQlJPQURCUklER0UgQVZFLgotCQkJCVNUUkFURk9SRCBDVCAwNjYxNC0yNTU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1FRiAgIChoZXgpCQlJR1QKLTAwRDBFRiAgICAgKGJhc2UgMTYpCQlJR1QKLQkJCQk5Mjk1IFBST1RPVFlQRSBEUklWRQotCQkJCVJFTk8gTlYgODk1MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUYwICAgKGhleCkJCUNPTlZJU0lPTiBURUNITk9MT0dZIEdNQkgKLTAwRDBGMCAgICAgKGJhc2UgMTYpCQlDT05WSVNJT04gVEVDSE5PTE9HWSBHTUJICi0JCQkJUkVCRU5SSU5HIDMzCi0JCQkJRC0zODEwNiBCUkFVTlNDSFdFSUcKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC1GMSAgIChoZXgpCQlTRUdBIEVOVEVSUFJJU0VTLCBMVEQuCi0wMEQwRjEgICAgIChiYXNlIDE2KQkJU0VHQSBFTlRFUlBSSVNFUywgTFRELgotCQkJCTEyLTE0IEhJR0FTSElLT1VKSVlBIDItQ0hPTUUKLQkJCQlPSFRBLUtVIFRPS1lPIDE0NC04NTMyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC1GMiAgIChoZXgpCQlNT05URVJFWSBORVRXT1JLUwotMDBEMEYyICAgICAoYmFzZSAxNikJCU1PTlRFUkVZIE5FVFdPUktTCi0JCQkJMTkwOSBOLiBHTEVOVklMTEUgRFJJVkUKLQkJCQlSSUNIQVJEU09OIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1GMyAgIChoZXgpCQlTT0xBUkkgREkgVURJTkUgU1BBCi0wMEQwRjMgICAgIChiYXNlIDE2KQkJU09MQVJJIERJIFVESU5FIFNQQQotCQkJCVZJQSBHSU5PIFBJRVJJIDI5Ci0JCQkJMzMxMDAgVURJTkUKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLUQwLUY0ICAgKGhleCkJCUNBUklOVEhJQU4gVEVDSCBJTlNUSVRVVEUKLTAwRDBGNCAgICAgKGJhc2UgMTYpCQlDQVJJTlRISUFOIFRFQ0ggSU5TVElUVVRFCi0JCQkJUklDSEFSRC1XQUdORVIgU1RSLiAxOQotCQkJCTk1MDAgVklMTEFDSAotCQkJCUFVU1RSSUEKLQkJCQlBVVNUUklBCi0KLTAwLUQwLUY1ICAgKGhleCkJCU9SQU5HRSBNSUNSTywgSU5DLgotMDBEMEY1ICAgICAoYmFzZSAxNikJCU9SQU5HRSBNSUNSTywgSU5DLgotCQkJCTE0MDAgTi4gTEFLRVZJRVcgQVZFLgotCQkJCUFOQUhFSU0gQ0EgOTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUY2ICAgKGhleCkJCUFsY2F0ZWwgQ2FuYWRhCi0wMEQwRjYgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBDYW5hZGEKLQkJCQk2MDAgTWFyY2ggUm9hZAotCQkJCUthbmF0YSwgT250YXJpbwotCQkJCUsySyAyRTYKLQkJCQlDQU5BREEKLQotMDAtRDAtRjcgICAoaGV4KQkJTkVYVCBORVRTIENPUlBPUkFUSU9OCi0wMEQwRjcgICAgIChiYXNlIDE2KQkJTkVYVCBORVRTIENPUlBPUkFUSU9OCi0JCQkJTUlUQSBLT0tVU0FJIEJMREcuIDE3RgotCQkJCTEtNC0yOCBNSVRBIE1JTkFUTy1LVSBUT0tZTyAxMDgtMDA3MwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtRDAtRjggICAoaGV4KQkJRlVKSUFOIFNUQVIgVEVSTUlOQUwKLTAwRDBGOCAgICAgKGJhc2UgMTYpCQlGVUpJQU4gU1RBUiBURVJNSU5BTAotCQkJCURFVklDRSBDTy4sIExURC4KLQkJCQlGVUVSIElORFVTVFJJQUwgWk9ORSBTVEFSIFNDSUVOQ0UgJiBURUNICi0JCQkJRlVaSE9VIEZVSklBTiwgQ0hJTkEgMzUwMDAyCi0JCQkJQ0hJTkEKLQotMDAtRDAtRjkgICAoaGV4KQkJQUNVVEUgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwRDBGOSAgICAgKGJhc2UgMTYpCQlBQ1VURSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotCQkJCU5PLiAxLCBDUkVBVElPTiBST0FEIElJSQotCQkJCVNDSUVOQ0UgQkFTRUQgSU5EVVNUUklBTCBQQVJLIEhTSU5DSFUgMzAKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLUZBICAgKGhleCkJCVRoYWxlcyBlLVNlY3VyaXR5IEx0ZC4KLTAwRDBGQSAgICAgKGJhc2UgMTYpCQlUaGFsZXMgZS1TZWN1cml0eSBMdGQuCi0JCQkJTWVhZG93IFZpZXcgSG91c2UsIENyZW5kb24gSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlMb25nIENyZW5kb24KLQkJCQlBeWxlc2J1cnkgQnVja2luZ2hhbXNoaXJlIEhQMTggOUVRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRDAtRkIgICAoaGV4KQkJVEVLIE1JQ1JPU1lTVEVNUywgSU5DT1JQT1JBVEVECi0wMEQwRkIgICAgIChiYXNlIDE2KQkJVEVLIE1JQ1JPU1lTVEVNUywgSU5DT1JQT1JBVEVECi0JCQkJT05FIE5PUlRIIEFWRU5VRQotCQkJCUJVUkxJTkdUT04gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUZDICAgKGhleCkJCUdSQU5JVEUgTUlDUk9TWVNURU1TCi0wMEQwRkMgICAgIChiYXNlIDE2KQkJR1JBTklURSBNSUNST1NZU1RFTVMKLQkJCQkxMDIwMiBOLiBFTlRFUlBSSVNFIERSSVZFCi0JCQkJTUVRVU9OIFdJIDUzMDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1GRCAgIChoZXgpCQlPUFRJTUEgVEVMRS5DT00sIElOQy4KLTAwRDBGRCAgICAgKGJhc2UgMTYpCQlPUFRJTUEgVEVMRS5DT00sIElOQy4KLQkJCQkyMDAtOTAgQWxsc3RhdGUgUGFya3dheQotCQkJCU1hcmtoYW0gT04gTDNSIDZIMwotCQkJCUNBTkFEQQotCi0wMC1EMC1GRSAgIChoZXgpCQlBU1RSQUwgUE9JTlQKLTAwRDBGRSAgICAgKGJhc2UgMTYpCQlBU1RSQUwgUE9JTlQKLQkJCQlDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTI3IElORFVTVFJJQUwgQVZFLiwtU1RFLiAjMwotCQkJCUNIRUxNU0ZPUkQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUZGICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDBGRiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQxLTFDICAgKGhleCkJCUFDRVRFTAotMDBEMTFDICAgICAoYmFzZSAxNikJCUFDRVRFTAotCQkJCSMxMDA2LCBXb3JsZCBNZXJkaWFuIDItY2hhLCA0MjYtNSwKLQkJCQlHYXNhbi1kb25nLCBHZXVtY2hlb24tZ3UsCi0JCQkJU2VvdWwgIDE1My03NTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtRDMtOEQgICAoaGV4KQkJSG90ZWwgVGVjaG5vbG9neSBOZXh0IEdlbmVyYXRpb24KLTAwRDM4RCAgICAgKGJhc2UgMTYpCQlIb3RlbCBUZWNobm9sb2d5IE5leHQgR2VuZXJhdGlvbgotCQkJCTY1MCBFLiBBbGdvbnF1aW4gUm9hZAotCQkJCVN0ZSAyMDcKLQkJCQlTY2hhdW1idXJnIElMIDYwMTczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EQi00NSAgIChoZXgpCQlUSEFNV0FZIENPLixMVEQuCi0wMERCNDUgICAgIChiYXNlIDE2KQkJVEhBTVdBWSBDTy4sTFRELgotCQkJCTMtOS0yCi0JCQkJSW1haXp1bWkKLQkJCQlGdWppIFNoaXp1b2thIDQxNy0wMDAxCi0JCQkJSkFQQU4KLQotMDAtREQtMDAgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDAwICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTAxICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwMSAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wMiAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMDIgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMDMgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDAzICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTA0ICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwNCAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wNSAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMDUgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMDYgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDA2ICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTA3ICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwNyAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wOCAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMDggICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMDkgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDA5ICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTBBICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwQSAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wQiAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMEIgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMEMgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDBDICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTBEICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwRCAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wRSAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMEUgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMEYgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDBGICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTAwICAgKGhleCkJCUZ1aml0c3UgTGltaXRlZAotMDBFMDAwICAgICAoYmFzZSAxNikJCUZ1aml0c3UgTGltaXRlZAotCQkJCU11c2FzaGkta29zdWdpIFRvd2VyIFBsYWNlIEJsZGcuLAotCQkJCUtvc3VnaS1jaG8gMS1jaG9tZSxOYWthaGFyYS1rdQotCQkJCUtBV0FTQUtJIDIxMS04OCBLYW5hZ2F3YSAKLQkJCQlKQVBBTgotCi0wMC1FMC0wMSAgIChoZXgpCQlTVFJBTkQgTElHSFRJTkcgTElNSVRFRAotMDBFMDAxICAgICAoYmFzZSAxNikJCVNUUkFORCBMSUdIVElORyBMSU1JVEVECi0JCQkJR1JBTlQgV0FZCi0JCQkJSVNMRVdPUlRICi0JCQkJTUlERExFU0VYIEVuZ2xhbmQgVFc3IDVRRCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC0wMiAgIChoZXgpCQlDUk9TU1JPQURTIFNZU1RFTVMsIElOQy4KLTAwRTAwMiAgICAgKGJhc2UgMTYpCQlDUk9TU1JPQURTIFNZU1RFTVMsIElOQy4KLQkJCQk5MzkwIFJFU0VBUkNIIEJMVkQuCi0JCQkJU1VJVEUgMi0zMDAKLQkJCQlBVVNUSU4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTAzICAgKGhleCkJCU5PS0lBIFdJUkVMRVNTIEJVU0lORVNTIENPTU1VTgotMDBFMDAzICAgICAoYmFzZSAxNikJCU5PS0lBIFdJUkVMRVNTIEJVU0lORVNTIENPTU1VTgotCQkJCUFDQ0VTUyBQT0lOVCBQUk9EVUNUUyBHUk9VUAotCQkJCVVOSVQgNiwgQ0FNQlJJREdFIEJVUyBQQVJLIE1JTFRPTiBSRCwgQ0EKLQkJCQlDQjQgMFdTICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC0wNCAgIChoZXgpCQlQTUMtU0lFUlJBLCBJTkMuCi0wMEUwMDQgICAgIChiYXNlIDE2KQkJUE1DLVNJRVJSQSwgSU5DLgotCQkJCTEwNS04NTU1IEJBWFRFUiBQTEFDRQotCQkJCUJVUk5BQlksIEJDIFY1QSA0VjcgIAotCQkJCUNBTkFEQQotCi0wMC1FMC0wNSAgIChoZXgpCQlURUNITklDQUwgQ09SUC4KLTAwRTAwNSAgICAgKGJhc2UgMTYpCQlURUNITklDQUwgQ09SUC4KLQkJCQkyMi02IE1JTkFNSSBTRU5HRU5DSE8KLQkJCQlOSVNISUtVIFlPS09IQU1BIENJVFkKLQkJCQlLQU5BR0FXQSAgCi0JCQkJSkFQQU4KLQotMDAtRTAtMDYgICAoaGV4KQkJU0lMSUNPTiBJTlRFR1JBVEVEIFNZUy4gQ09SUC4KLTAwRTAwNiAgICAgKGJhc2UgMTYpCQlTSUxJQ09OIElOVEVHUkFURUQgU1lTLiBDT1JQLgotCQkJCTE2LCBDUkVBVElPTiBSRC4gSQotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTiBDSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtMDcgICAoaGV4KQkJQXZheWEgRUNTIEx0ZAotMDBFMDA3ICAgICAoYmFzZSAxNikJCUF2YXlhIEVDUyBMdGQKLQkJCQlVbml0IDEgU3RlcmxpbmcgQ291cnQsIE11bmRlbGxzCi0JCQkJV2Vsd3luIEdhcmRlbiBDaXR5IEhlcnQgQUw3IDFMWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUUwLTA4ICAgKGhleCkJCUFNQVpJTkcgQ09OVFJPTFMhIElOQy4KLTAwRTAwOCAgICAgKGJhc2UgMTYpCQlBTUFaSU5HIENPTlRST0xTISBJTkMuCi0JCQkJMTYxNSBXWUFUVCBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0wOSAgIChoZXgpCQlNQVJBVEhPTiBURUNITk9MT0dJRVMgQ09SUC4KLTAwRTAwOSAgICAgKGJhc2UgMTYpCQlNQVJBVEhPTiBURUNITk9MT0dJRVMgQ09SUC4KLQkJCQkxMzAwIE1BU1NBQ0hVU0VUVFMgQVZFTlVFCi0JCQkJQk9YQk9ST1VHSCBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMEEgICAoaGV4KQkJRElCQSwgSU5DLgotMDBFMDBBICAgICAoYmFzZSAxNikJCURJQkEsIElOQy4KLQkJCQkzMzU1IEVESVNPTiBXQVkKLQkJCQlNRU5MTyBQQVJLIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0wQiAgIChoZXgpCQlST09GVE9QIENPTU1VTklDQVRJT05TIENPUlAuCi0wMEUwMEIgICAgIChiYXNlIDE2KQkJUk9PRlRPUCBDT01NVU5JQ0FUSU9OUyBDT1JQLgotCQkJCTQ2OCBQQUNPIERSSVZFCi0JCQkJTE9TIEFMVE9TIENBIDk0MDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0wQyAgIChoZXgpCQlNT1RPUk9MQQotMDBFMDBDICAgICAoYmFzZSAxNikJCU1PVE9ST0xBCi0JCQkJNTQwMSBOLiBCRUFDSCBTVC4gIFMyNDMKLQkJCQlGVC4gV09SVEggVFggNzYxMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTBEICAgKGhleCkJCVJBRElBTlQgU1lTVEVNUwotMDBFMDBEICAgICAoYmFzZSAxNikJCVJBRElBTlQgU1lTVEVNUwotCQkJCTEwMDAgQUxERVJNQU4gRFIuCi0JCQkJQUxQSEFSRVRUQSBHQSAzMDIwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMEUgICAoaGV4KQkJQVZBTE9OIElNQUdJTkcgU1lTVEVNUywgSU5DLgotMDBFMDBFICAgICAoYmFzZSAxNikJCUFWQUxPTiBJTUFHSU5HIFNZU1RFTVMsIElOQy4KLQkJCQkzMTMzIElORElBTiBST0FECi0JCQkJQk9VTERFUiBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMEYgICAoaGV4KQkJU0hBTkdIQUkgQkFVRCBEQVRBCi0wMEUwMEYgICAgIChiYXNlIDE2KQkJU0hBTkdIQUkgQkFVRCBEQVRBCi0JCQkJQ09NTVVOSUNBVElPTiBERVZFTE9QTUVOVCBDT1JQCi0JCQkJM0YsIEdPTEQgTFVDSyBCVUlMRElORyAyNTA3IFBVRE9ORyBST0FECi0JCQkJU0hBTkdIQUkgIAotCQkJCUNISU5BCi0KLTAwLUUwLTEwICAgKGhleCkJCUhFU1MgU0ItQVVUT01BVEVOQkFVIEdtYkgKLTAwRTAxMCAgICAgKGJhc2UgMTYpCQlIRVNTIFNCLUFVVE9NQVRFTkJBVSBHbWJICi0JCQkJSElOREVOQlVSR1NUUkFTU0UgMjctMjkKLQkJCQlELTcxMTA2IE1BR1NUQURUICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLTExICAgKGhleCkJCVVuaWRlbiBDb3Jwb3JhdGlvbgotMDBFMDExICAgICAoYmFzZSAxNikJCVVuaWRlbiBDb3Jwb3JhdGlvbgotCQkJCTItMTItNyBIYXRjaG9ib3JpLAotCQkJCUNodW8ta3UgVG9reW8gMTA0LTg1MTIKLQkJCQlKQVBBTgotCi0wMC1FMC0xMiAgIChoZXgpCQlQTFVUTyBURUNITk9MT0dJRVMgSU5URVJOQVRJT05BTCBJTkMuCi0wMEUwMTIgICAgIChiYXNlIDE2KQkJUExVVE8gVEVDSE5PTE9HSUVTIElOVEVSTkFUSU9OQUwgSU5DLgotCQkJCTI1MTEgNTVUSCBTVFJFRVQKLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0xMyAgIChoZXgpCQlFQVNURVJOIEVMRUNUUk9OSUMgQ08uLCBMVEQuCi0wMEUwMTMgICAgIChiYXNlIDE2KQkJRUFTVEVSTiBFTEVDVFJPTklDIENPLiwgTFRELgotCQkJCU5PLiA0LCBTSElOLUxPTkcgUk9BRCwKLQkJCQlLV0VJLVNIQU4gSU5EVVNUUklBTCBBUkVBCi0JCQkJVEFPLVlVQU4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtMTQgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBFMDE0ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMTUgICAoaGV4KQkJSEVJV0EgQ09SUE9SQVRJT04KLTAwRTAxNSAgICAgKGJhc2UgMTYpCQlIRUlXQSBDT1JQT1JBVElPTgotCQkJCTItMzAxNC04LCBISVJPU0FXQS1DSE8KLQkJCQlLSVJZVS1TSEkKLQkJCQlHVU5NQSBQUkVGLiAzNzYgIAotCQkJCUpBUEFOCi0KLTAwLUUwLTE2ICAgKGhleCkJCVJBUElEIENJVFkgQ09NTVVOSUNBVElPTlMKLTAwRTAxNiAgICAgKGJhc2UgMTYpCQlSQVBJRCBDSVRZIENPTU1VTklDQVRJT05TCi0JCQkJNTU1IENMWURFIEFWRS4KLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0xNyAgIChoZXgpCQlFWFhBQ1QgR21iSAotMDBFMDE3ICAgICAoYmFzZSAxNikJCUVYWEFDVCBHbWJICi0JCQkJUkhFSU5TVFJBU0UgNwotCQkJCUQtNDE4MzYgSFVDS0VMSE9WRU4gIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtMTggICAoaGV4KQkJQVNVU1RFSyBDT01QVVRFUiBJTkMuCi0wMEUwMTggICAgIChiYXNlIDE2KQkJQVNVU1RFSyBDT01QVVRFUiBJTkMuCi0JCQkJMTUwIExJLVRFIFJELgotCQkJCVBFSVRPVSwgVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLTE5ICAgKGhleCkJCUlORy4gR0lPUkRBTk8gRUxFVFRST05JQ0EKLTAwRTAxOSAgICAgKGJhc2UgMTYpCQlJTkcuIEdJT1JEQU5PIEVMRVRUUk9OSUNBCi0JCQkJVklBIFBJRVRSTyBDT1NTQSAgMTE1LzEyCi0JCQkJMTAxNDYtVE9SSU5PICAKLQkJCQlJVEFMWQotCi0wMC1FMC0xQSAgIChoZXgpCQlDT01URUMgU1lTVEVNUy4gQ08uLCBMVEQuCi0wMEUwMUEgICAgIChiYXNlIDE2KQkJQ09NVEVDIFNZU1RFTVMuIENPLiwgTFRELgotCQkJCTQwNC05IENIT1VOR0NIRU4tRE9ORwotCQkJCUJVUFlPVU5HLUtVLCBJTkNIT04gIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1FMC0xQiAgIChoZXgpCQlTUEhFUkUgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRTAxQiAgICAgKGJhc2UgMTYpCQlTUEhFUkUgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkyIEVORVJHWSBEUklWRQotCQkJCUxBS0UgQkxVRkYgSUwgNjAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTFDICAgKGhleCkJCUNyYWRsZXBvaW50LCBJbmMKLTAwRTAxQyAgICAgKGJhc2UgMTYpCQlDcmFkbGVwb2ludCwgSW5jCi0JCQkJMTE5OSBTaG9yZWxpbmUgTGFuZQotCQkJCVN1aXRlIDMwMQotCQkJCUJvaXNlIElEIDgzNzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0xRCAgIChoZXgpCQlXZWJUViBORVRXT1JLUywgSU5DLgotMDBFMDFEICAgICAoYmFzZSAxNikJCVdlYlRWIE5FVFdPUktTLCBJTkMuCi0JCQkJMzA1IExZVFRPTiBBVkUuCi0JCQkJUEFMTyBBTFRPIENBIDk0MzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0xRSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwMUUgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0xRiAgIChoZXgpCQlBVklESUEgU3lzdGVtcywgSW5jLgotMDBFMDFGICAgICAoYmFzZSAxNikJCUFWSURJQSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTM1IE5PUlRIIFBMQUlOUyBJTkRVU1RSSUFMIFJECi0JCQkJV0FMTElOR0ZPUkQgQ1QgMDY0OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTIwICAgKGhleCkJCVRFQ05PTUVOIE9ZCi0wMEUwMjAgICAgIChiYXNlIDE2KQkJVEVDTk9NRU4gT1kKLQkJCQlQLk8uIEJPWCA5MwotCQkJCUZJTi0wMjI3MSBFU1BPTyAgCi0JCQkJRklOTEFORAotCi0wMC1FMC0yMSAgIChoZXgpCQlGUkVFR0FURSBDT1JQLgotMDBFMDIxICAgICAoYmFzZSAxNikJCUZSRUVHQVRFIENPUlAuCi0JCQkJNzEwIExBS0VXQVkgIFNURS4jMjMwCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0yMiAgIChoZXgpCQlBbmFsb2cgRGV2aWNlcyBJbmMuCi0wMEUwMjIgICAgIChiYXNlIDE2KQkJQW5hbG9nIERldmljZXMgSW5jLgotCQkJCTc3NyBCYXkgU3RyZWV0Ci0JCQkJU3VpdGUgMjMwMwotCQkJCVRvcm9udG8gT250YXJpbyBNNUcgMkM4Ci0JCQkJQ0FOQURBCi0KLTAwLUUwLTIzICAgKGhleCkJCVRFTFJBRAotMDBFMDIzICAgICAoYmFzZSAxNikJCVRFTFJBRAotCQkJCVAuTy4gQk9YIDUwCi0JCQkJTE9EIDcxMTAwICAKLQkJCQlJU1JBRUwKLQotMDAtRTAtMjQgICAoaGV4KQkJR0FEWk9PWCBORVRXT1JLUwotMDBFMDI0ICAgICAoYmFzZSAxNikJCUdBRFpPT1ggTkVUV09SS1MKLQkJCQk1ODUwIEhFTExZRVIgQVZFTlVFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTI1ICAgKGhleCkJCWRpdCBDby4sIEx0ZC4KLTAwRTAyNSAgICAgKGJhc2UgMTYpCQlkaXQgQ28uLCBMdGQuCi0JCQkJUHJlbWllciBUb3lvY2hvIEJ1aWxkaW5nCi0JCQkJMjMtMjEgVG95byAzLWNob21lLAotCQkJCUtvdG8ta3UgVG9reW8gMTM1LTAwNTYKLQkJCQlKQVBBTgotCi0wMC1FMC0yNiAgIChoZXgpCQlSZWRsYWtlIE1BU0QgTExDCi0wMEUwMjYgICAgIChiYXNlIDE2KQkJUmVkbGFrZSBNQVNEIExMQwotCQkJCTM0NDAgRS4gUHJpdGFubmlhIERyLgotCQkJCVN1aXRlIDEyNAotCQkJCVR1c2NvbiBBWiA4NTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMjcgICAoaGV4KQkJRFVYLCBJTkMuCi0wMEUwMjcgICAgIChiYXNlIDE2KQkJRFVYLCBJTkMuCi0JCQkJNS0xOC0xOSwgTklTSElLQU1BVEEsIE9UQS1LVQotCQkJCVRPS1lPLVRPLCAxNDQgIAotCQkJCUpBUEFOCi0KLTAwLUUwLTI4ICAgKGhleCkJCUFQVElYIENPUlBPUkFUSU9OCi0wMEUwMjggICAgIChiYXNlIDE2KQkJQVBUSVggQ09SUE9SQVRJT04KLQkJCQkyODgwIE4uIEZJUlNUIFNUUkVFVAotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0yOSAgIChoZXgpCQlTVEFOREFSRCBNSUNST1NZU1RFTVMgQ09SUC4KLTAwRTAyOSAgICAgKGJhc2UgMTYpCQlTVEFOREFSRCBNSUNST1NZU1RFTVMgQ09SUC4KLQkJCQk2IEhVR0hFUwotCQkJCUlSVklORSBDQSA5MjcxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMkEgICAoaGV4KQkJVEFOREJFUkcgVEVMRVZJU0lPTiBBUwotMDBFMDJBICAgICAoYmFzZSAxNikJCVRBTkRCRVJHIFRFTEVWSVNJT04gQVMKLQkJCQlQSElMSVAgUEVERVJTRU5TIFYgMjAKLQkJCQlOLTEzMjQgTFlTQUtFUiAgCi0JCQkJTk9SV0FZCi0KLTAwLUUwLTJCICAgKGhleCkJCUVYVFJFTUUgTkVUV09SS1MKLTAwRTAyQiAgICAgKGJhc2UgMTYpCQlFWFRSRU1FIE5FVFdPUktTCi0JCQkJMTA0NjAgQkFORExFWSBEUklWRQotCQkJCUNVUEVSSU5UMCBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMkMgICAoaGV4KQkJQVNUIENPTVBVVEVSCi0wMEUwMkMgICAgIChiYXNlIDE2KQkJQVNUIENPTVBVVEVSCi0JCQkJMTYyMTUgQUxUT04gUEFSS1dBWQotCQkJCUlSVklORSBDQSA5MjcxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMkQgICAoaGV4KQkJSW5ub01lZGlhTG9naWMsIEluYy4KLTAwRTAyRCAgICAgKGJhc2UgMTYpCQlJbm5vTWVkaWFMb2dpYywgSW5jLgotCQkJCTM2NTMgQ0hFTUlOIENIQU1CTFkKLQkJCQlMT05HVUVVSUwsIFFVRUJFQyBKNEwgSjRMICBJTjkKLQkJCQlDQU5BREEKLQotMDAtRTAtMkUgICAoaGV4KQkJU1BDIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OCi0wMEUwMkUgICAgIChiYXNlIDE2KQkJU1BDIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OCi0JCQkJMi0xLTMgU0hJQkFTQUtJLCBDSE9GVS1TSEkKLQkJCQlUT0tZTywgMTgyICAKLQkJCQlKQVBBTgotCi0wMC1FMC0yRiAgIChoZXgpCQlNQ05TIEhPTERJTkdTLCBMLlAuCi0wMEUwMkYgICAgIChiYXNlIDE2KQkJTUNOUyBIT0xESU5HUywgTC5QLgotCQkJCVRDSSwgSU5DLi1URUNITk9MT0dZIFZFTlRVUkVTCi0JCQkJUC5PLiBCT1ggNTYzMAotCQkJCURFTlZFUiBDTyA4MDIxNy01NjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0zMCAgIChoZXgpCQlNRUxJVEEgSU5URVJOQVRJT05BTCBDT1JQLgotMDBFMDMwICAgICAoYmFzZSAxNikJCU1FTElUQSBJTlRFUk5BVElPTkFMIENPUlAuCi0JCQkJNTA1MSBQRUFDSFRSRUUgQ09STkVSUyBDSVJDTEUKLQkJCQlOT1JDUk9TUyBHQSAzMDA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMzEgICAoaGV4KQkJSEFHSVdBUkEgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMEUwMzEgICAgIChiYXNlIDE2KQkJSEFHSVdBUkEgRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJNywgU0hJTU9LT0ZVS0FEQSwgQVNBREEtQ0hPCi0JCQkJTklTU0hJTi1TSEksIEFJQ0hJICA0NzAtMDEgIAotCQkJCUpBUEFOCi0KLTAwLUUwLTMyICAgKGhleCkJCU1JU1lTIEZJTkFOQ0lBTCBTWVNURU1TLCBMVEQuCi0wMEUwMzIgICAgIChiYXNlIDE2KQkJTUlTWVMgRklOQU5DSUFMIFNZU1RFTVMsIExURC4KLQkJCQlCVUNLSE9MVCBEUklWRSwKLQkJCQlXQVJORE9OLCBXT1JDRVNURVIgV1I0OVNSICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC0zMyAgIChoZXgpCQlFLkUuUC5ELiBHbWJICi0wMEUwMzMgICAgIChiYXNlIDE2KQkJRS5FLlAuRC4gR21iSAotCQkJCVJPRU1FUi1TVFJBU1NFIDQKLQkJCQk4NTIyOSBNQVJLVCBJTkRFUlNET1JGICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLTM0ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTAzNCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTM1ICAgKGhleCkJCUVtZXJzb24gTmV0d29yayBQb3dlcgotMDBFMDM1ICAgICAoYmFzZSAxNikJCUVtZXJzb24gTmV0d29yayBQb3dlcgotCQkJCTI5MDAgUy4gRGlhYmxvIFdheQotCQkJCVRlbXBlIEFaIDg1MjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0zNiAgIChoZXgpCQlQSU9ORUVSIENPUlBPUkFUSU9OCi0wMEUwMzYgICAgIChiYXNlIDE2KQkJUElPTkVFUiBDT1JQT1JBVElPTgotCQkJCTI2MTAgSGFuYXpvbm8gNC1DaG9tZQotCQkJCVRva29yb3phd2EtU2hpCi0JCQkJU2FpdGFtYSBQcmVmZWN0dXJlLCAzNTktOCAgCi0JCQkJSkFQQU4KLQotMDAtRTAtMzcgICAoaGV4KQkJQ0VOVFVSWSBDT1JQT1JBVElPTgotMDBFMDM3ICAgICAoYmFzZSAxNikJCUNFTlRVUlkgQ09SUE9SQVRJT04KLQkJCQkyLTI4LTUsIFRhaXRvCi0JCQkJVEFJVE8tS1UsIFRPS1lPIDEwMQotCQkJCUpBUEFOCi0KLTAwLUUwLTM4ICAgKGhleCkJCVBST1hJTUEgQ09SUE9SQVRJT04KLTAwRTAzOCAgICAgKGJhc2UgMTYpCQlQUk9YSU1BIENPUlBPUkFUSU9OCi0JCQkJOTQ0MCBDQVJST0xMIFBBUksgRFJJVkUKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEtMjI5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMzkgICAoaGV4KQkJUEFSQURZTkUgQ09SUC4KLTAwRTAzOSAgICAgKGJhc2UgMTYpCQlQQVJBRFlORSBDT1JQLgotCQkJCTg1NDUgMTI2VEggQVZFTlVFIE5PUlRICi0JCQkJTEFSR08gRkwgMzM3NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTNBICAgKGhleCkJCUNBQkxFVFJPTiBTWVNURU1TLCBJTkMuCi0wMEUwM0EgICAgIChiYXNlIDE2KQkJQ0FCTEVUUk9OIFNZU1RFTVMsIElOQy4KLQkJCQkzNSBJTkRVU1RSSUFMIFdBWSAtIEJMREcuICMzNgotCQkJCVJPQ0hFU1RFUiBOSCAwMzg2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtM0IgICAoaGV4KQkJUFJPTUlORVQgQ09SUE9SQVRJT04KLTAwRTAzQiAgICAgKGJhc2UgMTYpCQlQUk9NSU5FVCBDT1JQT1JBVElPTgotCQkJCTExMCBUVVJOUElLRSBSRC4gLSBTVEUuICMyMDgKLQkJCQlXRVNUQk9ST1VHSCBNQSAwMTU4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtM0MgICAoaGV4KQkJQWR2YW5TeXMKLTAwRTAzQyAgICAgKGJhc2UgMTYpCQlBZHZhblN5cwotCQkJCTExNTAgUklOR1dPT0QgQ09VUlQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtM0QgICAoaGV4KQkJRk9DT04gRUxFQ1RST05JQyBTWVNURU1TIEEvUwotMDBFMDNEICAgICAoYmFzZSAxNikJCUZPQ09OIEVMRUNUUk9OSUMgU1lTVEVNUyBBL1MKLQkJCQlEQU1WQU5HLCBQTyBCT1ggMjY5Ci0JCQkJREstNjQwMCBTT05ERVJCT1JHICAKLQkJCQlERU5NQVJLCi0KLTAwLUUwLTNFICAgKGhleCkJCUFMRkFURUNILCBJTkMuCi0wMEUwM0UgICAgIChiYXNlIDE2KQkJQUxGQVRFQ0gsIElOQy4KLQkJCQlTSElOLU9TQUtBIEVJVE8gQkxERy4KLQkJCQk0LTE1LTE4IE5JU0hJTkFLQUpJTUEsIFlPRE9HQVdBLUtVLAotCQkJCU9TQUtBICAKLQkJCQlKQVBBTgotCi0wMC1FMC0zRiAgIChoZXgpCQlKQVRPTiBDT1JQT1JBVElPTgotMDBFMDNGICAgICAoYmFzZSAxNikJCUpBVE9OIENPUlBPUkFUSU9OCi0JCQkJNTU2IFNPVVRIIE1JTFBJVEFTIEJMVkQuCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTQwICAgKGhleCkJCURlc2tTdGF0aW9uIFRlY2hub2xvZ3ksIEluYy4KLTAwRTA0MCAgICAgKGJhc2UgMTYpCQlEZXNrU3RhdGlvbiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTU3MjkgQ09MTEVHRSBCTFZELgotCQkJCUxFTkVYQSBLUyA2NjIxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNDEgICAoaGV4KQkJQ1NQSQotMDBFMDQxICAgICAoYmFzZSAxNikJCUNTUEkKLQkJCQk0MyBNYW5uaW5nIFJkLgotCQkJCUJpbGxlcmljYSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNDIgICAoaGV4KQkJUGFjb20gU3lzdGVtcyBMdGQuCi0wMEUwNDIgICAgIChiYXNlIDE2KQkJUGFjb20gU3lzdGVtcyBMdGQuCi0JCQkJVU5JVCAyMiAzOC80NiBTT1VUSCBTVC4KLQkJCQlSWURBTE1FUkUgMjExNiBOU1cgCi0JCQkJQVVTVFJBTElBCi0KLTAwLUUwLTQzICAgKGhleCkJCVZpdGFsQ29tCi0wMEUwNDMgICAgIChiYXNlIDE2KQkJVml0YWxDb20KLQkJCQkxNTIyMiBERUwgQU1PIEFWRS4KLQkJCQlUVVNUSU4gQ0EgOTI3ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTQ0ICAgKGhleCkJCUxTSUNTIENPUlBPUkFUSU9OCi0wMEUwNDQgICAgIChiYXNlIDE2KQkJTFNJQ1MgQ09SUE9SQVRJT04KLQkJCQkzLTgtMyBOSU5PTUlZQSwgVFNLVUtVQkEtU0hJCi0JCQkJSUJBUkFHSS1LRU4sIDMwNSAgCi0JCQkJSkFQQU4KLQotMDAtRTAtNDUgICAoaGV4KQkJVE9VQ0hXQVZFLCBJTkMuCi0wMEUwNDUgICAgIChiYXNlIDE2KQkJVE9VQ0hXQVZFLCBJTkMuCi0JCQkJOTk0IFNBTiBBTlRPTklPIFJELgotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNDYgICAoaGV4KQkJQkVOVExZIE5FVkFEQSBDT1JQLgotMDBFMDQ2ICAgICAoYmFzZSAxNikJCUJFTlRMWSBORVZBREEgQ09SUC4KLQkJCQlQTyBCT1ggMTU3Ci0JCQkJTUlOREVOIE5WIDg5NDIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC00NyAgIChoZXgpCQlJbkZvY3VzIENvcnBvcmF0aW9uCi0wMEUwNDcgICAgIChiYXNlIDE2KQkJSW5Gb2N1cyBDb3Jwb3JhdGlvbgotCQkJCTI3NTAwIFNXIFBhcmt3YXkgQXZlbnVlCi0JCQkJV2lsc29udmlsbGUgT1IgOTcwNzAtODIzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNDggICAoaGV4KQkJU0RMIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEUwNDggICAgIChiYXNlIDE2KQkJU0RMIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJUC5PLiBCT1ggMTMwMwotCQkJCUVBU1RPTiBNQSAwMjMzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNDkgICAoaGV4KQkJTUlDUk9XSSBFTEVDVFJPTklDIEdtYkgKLTAwRTA0OSAgICAgKGJhc2UgMTYpCQlNSUNST1dJIEVMRUNUUk9OSUMgR21iSAotCQkJCVpVU0FNU1RSQVNTRSA4Ci0JCQkJRCA4NjE2NSBBVUdTQlVSRyAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC00QSAgIChoZXgpCQlFTkhBTkNFRCBNRVNTQUdJTkcgU1lTVEVNUywgSU5DCi0wMEUwNEEgICAgIChiYXNlIDE2KQkJRU5IQU5DRUQgTUVTU0FHSU5HIFNZU1RFTVMsIElOQwotCQkJCTI1MCBXRVNUIFNPVVRITEFLRSBCTFZELgotCQkJCVNPVVRITEFLRSBUWCA3NjA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNEIgICAoaGV4KQkJSlVNUCBJTkRVU1RSSUVMTEUgQ09NUFVURVJURUNITklLIEdtYkgKLTAwRTA0QiAgICAgKGJhc2UgMTYpCQlKVU1QIElORFVTVFJJRUxMRSBDT01QVVRFUlRFQ0hOSUsgR21iSAotCQkJCQotCQkJCVZFSUxDSEVOR0FTU0UgNwotCQkJCUQ5NDQ2OSBERUdHRU5ET1JGICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLTRDICAgKGhleCkJCVJFQUxURUsgU0VNSUNPTkRVQ1RPUiBDT1JQLgotMDBFMDRDICAgICAoYmFzZSAxNikJCVJFQUxURUsgU0VNSUNPTkRVQ1RPUiBDT1JQLgotCQkJCTFGLCBOTy4gMTEsIElORFVTVFJZIEUuIFJELiBJWAotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTkNIVSAzMDAgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtNEQgICAoaGV4KQkJSU5URVJORVQgSU5JVElBVElWRSBKQVBBTiwgSU5DCi0wMEUwNEQgICAgIChiYXNlIDE2KQkJSU5URVJORVQgSU5JVElBVElWRSBKQVBBTiwgSU5DCi0JCQkJMS00LCBTQU5CQU4tQ0hPLCBDSElZT0RBLUtVCi0JCQkJVE9LWU8gMTAyIAotCQkJCUpBUEFOCi0KLTAwLUUwLTRFICAgKGhleCkJCVNBTllPIERFTktJIENPLiwgTFRELgotMDBFMDRFICAgICAoYmFzZSAxNikJCVNBTllPIERFTktJIENPLiwgTFRELgotCQkJCTgxMi0zLCBTaGltb25vZ291LCBVZWRhLVNoaQotCQkJCU5hZ2FubyAgMzg2LTEyMTEKLQkJCQlKQVBBTgotCi0wMC1FMC00RiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwNEYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC01MCAgIChoZXgpCQlFWEVDVVRPTkUgSU5GT1JNQVRJT04gU1lTVEVNUywgSU5DLgotMDBFMDUwICAgICAoYmFzZSAxNikJCUVYRUNVVE9ORSBJTkZPUk1BVElPTiBTWVNURU1TLCBJTkMuCi0JCQkJNDc4IFdIRUVMRVJTIEZBUk1TIFJPQUQKLQkJCQlNSUxGT1JEIENUIDA2NDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC01MSAgIChoZXgpCQlUQUxYIENPUlBPUkFUSU9OCi0wMEUwNTEgICAgIChiYXNlIDE2KQkJVEFMWCBDT1JQT1JBVElPTgotCQkJCTE4NTAgQk9STUFOIENPVVJUCi0JCQkJU1QuIExPVUlTIE1PIDYzMTQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC01MiAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotMDBFMDUyICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTUzICAgKGhleCkJCUNFTExQT1JUIExBQlMsIElOQy4KLTAwRTA1MyAgICAgKGJhc2UgMTYpCQlDRUxMUE9SVCBMQUJTLCBJTkMuCi0JCQkJODg1IEFSQVBBSE9FIEFWRS4sCi0JCQkJQk9VTERFUiBDTyA4MDMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNTQgICAoaGV4KQkJS09EQUkgSElURUMgQ08uLCBMVEQuCi0wMEUwNTQgICAgIChiYXNlIDE2KQkJS09EQUkgSElURUMgQ08uLCBMVEQuCi0JCQkJMi00NSBPTlVNQSBIQU5ZVSBDSVRZCi0JCQkJU0FJVEFNQS4zNDggIAotCQkJCUpBUEFOCi0KLTAwLUUwLTU1ICAgKGhleCkJCUlOR0VOSUVSSUEgRUxFQ1RST05JQ0EgQ09NRVJDSUFMIElORUxDT00gUy5BLgotMDBFMDU1ICAgICAoYmFzZSAxNikJCUlOR0VOSUVSSUEgRUxFQ1RST05JQ0EgQ09NRVJDSUFMIElORUxDT00gUy5BLgotCQkJCUNMLiBQSVFVRVIgTk8uMwotCQkJCTI4MDMzIE1BRFJJRCAgCi0JCQkJU1BBSU4KLQotMDAtRTAtNTYgICAoaGV4KQkJSE9MT05URUNIIENPUlBPUkFUSU9OCi0wMEUwNTYgICAgIChiYXNlIDE2KQkJSE9MT05URUNIIENPUlBPUkFUSU9OCi0JCQkJMjAzOSBTQU1BUklUQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNTcgICAoaGV4KQkJSEFOIE1JQ1JPVEVMRUNPTS4gQ08uLCBMVEQuCi0wMEUwNTcgICAgIChiYXNlIDE2KQkJSEFOIE1JQ1JPVEVMRUNPTS4gQ08uLCBMVEQuCi0JCQkJRkFTSElPTiBCRC4sIDNSRCBGUiwKLQkJCQkxMTk0LCBET09OU0FOIDIKLQkJCQlET05HIFNFTy1HVSwgVEFFSk9OIEtPUkVBIDMwMi0xNzMgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUUwLTU4ICAgKGhleCkJCVBIQVNFIE9ORSBERU5NQVJLIEEvUwotMDBFMDU4ICAgICAoYmFzZSAxNikJCVBIQVNFIE9ORSBERU5NQVJLIEEvUwotCQkJCVJPU0tJTERFVkVKIDM5Ci0JCQkJREstMjAwMCBGUkVERVJJS1NCRVJHICAKLQkJCQlERU5NQVJLCi0KLTAwLUUwLTU5ICAgKGhleCkJCUNPTlRST0xMRUQgRU5WSVJPTk1FTlRTLCBMVEQuCi0wMEUwNTkgICAgIChiYXNlIDE2KQkJQ09OVFJPTExFRCBFTlZJUk9OTUVOVFMsIExURC4KLQkJCQk1OTAgQkVSUlkgU1RSRUVUCi0JCQkJV0lOTkVQRUcgUjNIIE9SOSAgCi0JCQkJQ0FOQURBCi0KLTAwLUUwLTVBICAgKGhleCkJCUdBTEVBIE5FVFdPUksgU0VDVVJJVFkKLTAwRTA1QSAgICAgKGJhc2UgMTYpCQlHQUxFQSBORVRXT1JLIFNFQ1VSSVRZCi0JCQkJMiBQTEFDRSBkdSBDT01NRVJDRSAtIFNURSAjMzIwCi0JCQkJQlJPU1NBUkQsIFFVRUJFQyBKNFcgMlQ4ICAKLQkJCQlDQU5BREEKLQotMDAtRTAtNUIgICAoaGV4KQkJV0VTVCBFTkQgU1lTVEVNUyBDT1JQLgotMDBFMDVCICAgICAoYmFzZSAxNikJCVdFU1QgRU5EIFNZU1RFTVMgQ09SUC4KLQkJCQkzOSBXSU5ORVInUyBDSVJDTEUgRFIuLAotCQkJCUFSTlBSSU9SLCBPTlRBUklPICAgIEs3UyAzRzkgIAotCQkJCUNBTkFEQQotCi0wMC1FMC01QyAgIChoZXgpCQlNQVRTVVNISVRBIEtPVE9CVUtJIEVMRUNUUk9OSUNTIElORFVTVFJJRVMsIExURC4KLTAwRTA1QyAgICAgKGJhc2UgMTYpCQlNQVRTVVNISVRBIEtPVE9CVUtJIEVMRUNUUk9OSUNTIElORFVTVFJJRVMsIExURC4KLQkJCQkyNDcsIEZVS1VUQUtFIFNBSUpPCi0JCQkJRUhJTUUsIDc5MyAgCi0JCQkJSkFQQU4KLQotMDAtRTAtNUQgICAoaGV4KQkJVU5JVEVDIENPLiwgTFRELgotMDBFMDVEICAgICAoYmFzZSAxNikJCVVOSVRFQyBDTy4sIExURC4KLQkJCQlLSVNPR0FXQS1DSE8gIElDSElOT1RPUkkgMjQKLQkJCQlIQUdVUkktR1VOIEFJQ0hJIDQ5MyAgCi0JCQkJSkFQQU4KLQotMDAtRTAtNUUgICAoaGV4KQkJSkFQQU4gQVZJQVRJT04gRUxFQ1RST05JQ1MgSU5EVVNUUlksIExURC4KLTAwRTA1RSAgICAgKGJhc2UgMTYpCQlKQVBBTiBBVklBVElPTiBFTEVDVFJPTklDUyBJTkRVU1RSWSwgTFRELgotCQkJCQotCQkJCTMtMS0xIE1VU0FTSElOTyBBS0lTSElNQS1TSEkKLQkJCQlUT0tZTyAxOTYgSkFQQU4gCi0JCQkJSkFQQU4KLQotMDAtRTAtNUYgICAoaGV4KQkJZS1OZXQsIEluYy4KLTAwRTA1RiAgICAgKGJhc2UgMTYpCQllLU5ldCwgSW5jLgotCQkJCTEyMzI1IEhZTUVBRE9XIERSSVZFCi0JCQkJU1VJVEUgIzItMjAwCi0JCQkJQVVTVElOIFRYIDc4NzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02MCAgIChoZXgpCQlTSEVSV09PRAotMDBFMDYwICAgICAoYmFzZSAxNikJCVNIRVJXT09ECi0JCQkJMjEwNTYgRk9SQkVTIFNUUkVFVAotCQkJCUhBWVdBUkQgQ0EgOTQ1NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTYxICAgKGhleCkJCUVkZ2VQb2ludCBOZXR3b3JrcywgSW5jLgotMDBFMDYxICAgICAoYmFzZSAxNikJCUVkZ2VQb2ludCBOZXR3b3JrcywgSW5jLgotCQkJCTIyMzggTUFSVElOIEFWRU5VRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02MiAgIChoZXgpCQlIT1NUIEVOR0lORUVSSU5HCi0wMEUwNjIgICAgIChiYXNlIDE2KQkJSE9TVCBFTkdJTkVFUklORwotCQkJCTIwMCBFQVNUIE1BSU4gU1RSRUVUIC1TVEUuIzcwMAotCQkJCUpPSE5TT04gQ0lUWSBUTiAzNzYwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNjMgICAoaGV4KQkJQ0FCTEVUUk9OIC0gWUFHTyBTWVNURU1TLCBJTkMuCi0wMEUwNjMgICAgIChiYXNlIDE2KQkJQ0FCTEVUUk9OIC0gWUFHTyBTWVNURU1TLCBJTkMuCi0JCQkJMzUgSU5EVVNUUklBTCBXQVkKLQkJCQlQLk8uIEJPWCA1MDA1Ci0JCQkJUk9DSEVTVEVSIE5IIDAzODY2LTUwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTY0ICAgKGhleCkJCVNBTVNVTkcgRUxFQ1RST05JQ1MKLTAwRTA2NCAgICAgKGJhc2UgMTYpCQlTQU1TVU5HIEVMRUNUUk9OSUNTCi0JCQkJOTkgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTY1ICAgKGhleCkJCU9QVElDQUwgQUNDRVNTIElOVEVSTkFUSU9OQUwKLTAwRTA2NSAgICAgKGJhc2UgMTYpCQlPUFRJQ0FMIEFDQ0VTUyBJTlRFUk5BVElPTkFMCi0JCQkJNTAwIFdFU1QgQ1VNTUlOR1MgUEwuICMzNDAwCi0JCQkJV09CVVJOIE1BIDAxODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02NiAgIChoZXgpCQlQcm9NYXggU3lzdGVtcywgSW5jLgotMDBFMDY2ICAgICAoYmFzZSAxNikJCVByb01heCBTeXN0ZW1zLCBJbmMuCi0JCQkJMTYgVEVDSE5PTE9HWSBEUklWRS0tQkxERy4jMTA2Ci0JCQkJSVJWSU5FIENBIDkyNjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02NyAgIChoZXgpCQllYWMgQVVUT01BVElPTi1DT05TVUxUSU5HIEdtYkgKLTAwRTA2NyAgICAgKGJhc2UgMTYpCQllYWMgQVVUT01BVElPTi1DT05TVUxUSU5HIEdtYkgKLQkJCQlIRVJNU0RPUkZFUiBEQU1NIDIyMgotCQkJCTczNDY3IEJFUkxJTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC02OCAgIChoZXgpCQlNRVJSSU1BQyBTWVNURU1TIElOQy4KLTAwRTA2OCAgICAgKGJhc2UgMTYpCQlNRVJSSU1BQyBTWVNURU1TIElOQy4KLQkJCQkyMTQ0IE1DIENPWSBST0FECi0JCQkJQ0FSUk9MTFRPTiBUWCA3NTAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNjkgICAoaGV4KQkJSkFZQ09SCi0wMEUwNjkgICAgIChiYXNlIDE2KQkJSkFZQ09SCi0JCQkJOTc3NSBUT1dORSBDRU5UUkUgRFJJVkUKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTZBICAgKGhleCkJCUtBUFNDSCBBRwotMDBFMDZBICAgICAoYmFzZSAxNikJCUtBUFNDSCBBRwotCQkJCVdBR0VOU0VJTEdBU1NFIDEKLQkJCQkxMTIwLVZJRU5OQSAgCi0JCQkJQVVTVFJJQQotCi0wMC1FMC02QiAgIChoZXgpCQlXJkcgU1BFQ0lBTCBQUk9EVUNUUwotMDBFMDZCICAgICAoYmFzZSAxNikJCVcmRyBTUEVDSUFMIFBST0RVQ1RTCi0JCQkJU0NFSU5DRSBQQVJLIEVJTkRIT1ZJTiA1MDQ5Ci0JCQkJNTY5MiBFQiBTT04KLQkJCQlORVRIRVJMQU5EUwotCi0wMC1FMC02QyAgIChoZXgpCQlBRVAgU3lzdGVtcyBJbnRlcm5hdGlvbmFsIEx0ZAotMDBFMDZDICAgICAoYmFzZSAxNikJCUFFUCBTeXN0ZW1zIEludGVybmF0aW9uYWwgTHRkCi0JCQkJRm9jdXMgMzEsIFdlc3QgV2luZwotCQkJCUNsZXZlbGFuZCBSb2FkCi0JCQkJSGVtZWwgSGVtc3RlYWQgSGVydHMgRW5nbGFuZCBIUDIgN0JXCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtNkQgICAoaGV4KQkJQ09NUFVXQVJFIENPUlBPUkFUSU9OCi0wMEUwNkQgICAgIChiYXNlIDE2KQkJQ09NUFVXQVJFIENPUlBPUkFUSU9OCi0JCQkJT25lIENhbXB1cyBNYXJ0aXVzCi0JCQkJRGV0cm9pdCBNSSA0ODIyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNkUgICAoaGV4KQkJRkFSIFNZU1RFTVMgUy5wLkEuCi0wMEUwNkUgICAgIChiYXNlIDE2KQkJRkFSIFNZU1RFTVMgUy5wLkEuCi0JCQkJVklBIEYuIFpFTkkgOAotCQkJCTM4NjggUk9WRVJFVE8gKFROKSAgCi0JCQkJSVRBTFkKLQotMDAtRTAtNkYgICAoaGV4KQkJTW90b3JvbGEsIEluYy4KLTAwRTA2RiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSwgSW5jLgotCQkJCTI0NTAgV2Fsc2ggQXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTcwICAgKGhleCkJCURIIFRFQ0hOT0xPR1kKLTAwRTA3MCAgICAgKGJhc2UgMTYpCQlESCBURUNITk9MT0dZCi0JCQkJMzAwMyBST0xMSUUgR0FURVMgRFJJVkUKLQkJCQlQQVNPIFJPQkxFUyBDQSA5MzQ0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNzEgICAoaGV4KQkJRVBJUyBNSUNST0NPTVBVVEVSCi0wMEUwNzEgICAgIChiYXNlIDE2KQkJRVBJUyBNSUNST0NPTVBVVEVSCi0JCQkJNzI0NTggQUxCU1RBRFQKLQkJCQlMQVVUTElOR0VSIFNUUkFTU0UgMTQ3Ci0JCQkJNzI0NTggQUxCU1RBRFQgIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtNzIgICAoaGV4KQkJTFlOSwotMDBFMDcyICAgICAoYmFzZSAxNikJCUxZTksKLQkJCQlSQUJJTiBCVUlMRElORwotCQkJCVRFUkFESU9OIElORFVTVFJJQUwgUEFSSwotCQkJCUQuTi4gTUlTR0FWIDIwMSAgCi0JCQkJSVNSQUVMCi0KLTAwLUUwLTczICAgKGhleCkJCU5BVElPTkFMIEFNVVNFTUVOVCBORVRXT1JLLCBJTkMuCi0wMEUwNzMgICAgIChiYXNlIDE2KQkJTkFUSU9OQUwgQU1VU0VNRU5UIE5FVFdPUkssIElOQy4KLQkJCQk0MDEgTi4gTUlDSElHQU4gQVZFTlVFCi0JCQkJQ0hJQ0FHTyBJTCA2MDYxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNzQgICAoaGV4KQkJVElFUk5BTiBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBFMDc0ICAgICAoYmFzZSAxNikJCVRJRVJOQU4gQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMTAyNSBST1NFTExFIFNULgotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNzUgICAoaGV4KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLTAwRTA3NSAgICAgKGJhc2UgMTYpCQlWZXJpbGluayBDb3Jwb3JhdGlvbgotCQkJCTEyNyBKZXRwbGV4IENpcmNsZQotCQkJCU1hZGlzb24gQUwgMzU3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTc2ICAgKGhleCkJCURFVkVMT1BNRU5UIENPTkNFUFRTLCBJTkMuCi0wMEUwNzYgICAgIChiYXNlIDE2KQkJREVWRUxPUE1FTlQgQ09OQ0VQVFMsIElOQy4KLQkJCQkxMDAwIE4uIEJST0FEIFNUUkVFVAotCQkJCUxBTlNEQUxFIFBBIDE5NDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03NyAgIChoZXgpCQlXRUJHRUFSLCBJTkMuCi0wMEUwNzcgICAgIChiYXNlIDE2KQkJV0VCR0VBUiwgSU5DLgotCQkJCTEyNjMgT0FLTUVBRCBQS1dZCi0JCQkJU1VOTllWQUxFIENBIDk0MDgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03OCAgIChoZXgpCQlCRVJLRUxFWSBORVRXT1JLUwotMDBFMDc4ICAgICAoYmFzZSAxNikJCUJFUktFTEVZIE5FVFdPUktTCi0JCQkJNjgzIFJJVkVSIE9BS1MgUEFSS1dBWQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03OSAgIChoZXgpCQlBLlQuTi5SLgotMDBFMDc5ICAgICAoYmFzZSAxNikJCUEuVC5OLlIuCi0JCQkJQlAgOTY2Ci0JCQkJOTE5NzYgQ09VUlRBQk9FVUYgIAotCQkJCUZSQU5DRQotCi0wMC1FMC03QSAgIChoZXgpCQlNSUtST0RJREFLVCBBQgotMDBFMDdBICAgICAoYmFzZSAxNikJCU1JS1JPRElEQUtUIEFCCi0JCQkJU2tpZmZlcnbkZ2VuIDQ4Ci0JCQkJTFVORCAgU0UyMjQ3OAotCQkJCVNXRURFTgotCi0wMC1FMC03QiAgIChoZXgpCQlCQVkgTkVUV09SS1MKLTAwRTA3QiAgICAgKGJhc2UgMTYpCQlCQVkgTkVUV09SS1MKLQkJCQkxMjUgTkFHT0cgUEFSSwotCQkJCUFDVE9OIE1BIDAxNzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03QyAgIChoZXgpCQlNRVRUTEVSLVRPTEVETywgSU5DLgotMDBFMDdDICAgICAoYmFzZSAxNikJCU1FVFRMRVItVE9MRURPLCBJTkMuCi0JCQkJMTE1MCBERUFSQk9STiBEUklWRQotCQkJCVdPUlRISU5HVE9OIE9IIDQzMDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03RCAgIChoZXgpCQlORVRST05JWCwgSU5DLgotMDBFMDdEICAgICAoYmFzZSAxNikJCU5FVFJPTklYLCBJTkMuCi0JCQkJMzQwIFRIT1IgUExBQ0UKLQkJCQlCUkVBIENBIDkyODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03RSAgIChoZXgpCQlXQUxUIERJU05FWSBJTUFHSU5FRVJJTkcKLTAwRTA3RSAgICAgKGJhc2UgMTYpCQlXQUxUIERJU05FWSBJTUFHSU5FRVJJTkcKLQkJCQkxNDAxIEZMT1dFUiBTVC4KLQkJCQlHTEVOREFMRSBDQSA5MTIyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtN0YgICAoaGV4KQkJTE9HSVNUSVNURU0gcy5yLmwuCi0wMEUwN0YgICAgIChiYXNlIDE2KQkJTE9HSVNUSVNURU0gcy5yLmwuCi0JCQkJVklBIFBBTkNJQVRJQ0hJIDk0LzE4Ci0JCQkJNTAxMjcgRklSRU5aRSAgCi0JCQkJSVRBTFkKLQotMDAtRTAtODAgICAoaGV4KQkJQ09OVFJPTCBSRVNPVVJDRVMgQ09SUE9SQVRJT04KLTAwRTA4MCAgICAgKGJhc2UgMTYpCQlDT05UUk9MIFJFU09VUkNFUyBDT1JQT1JBVElPTgotCQkJCTE2LTAwIFBPTExJVFQgRFJJVkUKLQkJCQlGQUlSIExBV04gTkogMDc0MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTgxICAgKGhleCkJCVRZQU4gQ09NUFVURVIgQ09SUC4KLTAwRTA4MSAgICAgKGJhc2UgMTYpCQlUWUFOIENPTVBVVEVSIENPUlAuCi0JCQkJMzI4OCBMQVVSRVZJRVcgQ1QKLQkJCQlGUkVNT05UIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC04MiAgIChoZXgpCQlBTkVSTUEKLTAwRTA4MiAgICAgKGJhc2UgMTYpCQlBTkVSTUEKLQkJCQlTQ0hBQVBTRFJJRVMgMjUKLQkJCQkyMjYwIFdFU1RFUkxPICAKLQkJCQlCRUxHSVVNCi0KLTAwLUUwLTgzICAgKGhleCkJCUpBVE8gVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEUwODMgICAgIChiYXNlIDE2KQkJSkFUTyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk1MDUgRUFTVCBIVU5UTEFORCBEUi4gU1RFICM1NTAKLQkJCQlBVVNUSU4gVFggNzg3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTg0ICAgKGhleCkJCUNPTVBVTElURSBSJkQKLTAwRTA4NCAgICAgKGJhc2UgMTYpCQlDT01QVUxJVEUgUiZECi0JCQkJMyBIQVJPU0hFVCBTVFIuIE5FVyBJTkQuIFpPTkUKLQkJCQlSQU1BVC1IQVNIQVJPTiA0NzI3OSAgCi0JCQkJSVNSQUVMCi0KLTAwLUUwLTg1ICAgKGhleCkJCUdMT0JBTCBNQUlOVEVDSCwgSU5DLgotMDBFMDg1ICAgICAoYmFzZSAxNikJCUdMT0JBTCBNQUlOVEVDSCwgSU5DLgotCQkJCTY0NjggQ0lUWSBXRVNUIFBBUktXQVkKLQkJCQlFREVOIFBSQUlSSUUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTg2ICAgKGhleCkJCUNZQkVYIENPTVBVVEVSIFBST0RVQ1RTCi0wMEUwODYgICAgIChiYXNlIDE2KQkJQ1lCRVggQ09NUFVURVIgUFJPRFVDVFMKLQkJCQk0OTEyIFJFU0VBUkNIIERSSVZFCi0JCQkJSFVOVFNWSUxMRSBBTCAzNTgwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtODcgICAoaGV4KQkJTGVDcm95IC0gTmV0d29ya2luZyBQcm9kdWN0aW9ucyBEaXZpc2lvbgotMDBFMDg3ICAgICAoYmFzZSAxNikJCUxlQ3JveSAtIE5ldHdvcmtpbmcgUHJvZHVjdGlvbnMgRGl2aXNpb24KLQkJCQkyNSBCVVJMSU5HVE9OIE1BTEwgUk9BRAotCQkJCUJVUkxJTkdUT04gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTg4ICAgKGhleCkJCUxUWCBDT1JQT1JBVElPTgotMDBFMDg4ICAgICAoYmFzZSAxNikJCUxUWCBDT1JQT1JBVElPTgotCQkJCTE0NSBVTklWRVJTSVRZIEFWRU5VRQotCQkJCVdFU1RXT09EIE1BIDAyMDkwLTIzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTg5ICAgKGhleCkJCUlPTiBOZXR3b3JrcywgSW5jLgotMDBFMDg5ICAgICAoYmFzZSAxNikJCUlPTiBOZXR3b3JrcywgSW5jLgotCQkJCTE1NTEgU291dGggV2FzaGluZ3RvbiBBdmUuCi0JCQkJUGlzY2F0YXdheSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOEEgICAoaGV4KQkJR0VDIEFWRVJZLCBMVEQuCi0wMEUwOEEgICAgIChiYXNlIDE2KQkJR0VDIEFWRVJZLCBMVEQuCi0JCQkJRk9VTkRSWSBMQU5FCi0JCQkJU01FVEhXSUNLLCBXQVJMRVkKLQkJCQlXRVNUIE1JRExBTkRTLCBCNjYgMkxQIEVuZ2xhbmQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtOEIgICAoaGV4KQkJUUxvZ2ljIENvcnAuCi0wMEUwOEIgICAgIChiYXNlIDE2KQkJUUxvZ2ljIENvcnAuCi0JCQkJMjY2MDAgTGFndW5hIEhpbGxzIERyLgotCQkJCUFsaXNvIFZpZWpvIENBIDkyNjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC04QyAgIChoZXgpCQlORU9QQVJBRElHTSBMQUJTLCBJTkMuCi0wMEUwOEMgICAgIChiYXNlIDE2KQkJTkVPUEFSQURJR00gTEFCUywgSU5DLgotCQkJCTE3MzUgTi4gRklSU1QgU1QuLCAgU1RFICMxMDgKLQkJCQlTQU4gSk9TRSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOEQgICAoaGV4KQkJUFJFU1NVUkUgU1lTVEVNUywgSU5DLgotMDBFMDhEICAgICAoYmFzZSAxNikJCVBSRVNTVVJFIFNZU1RFTVMsIElOQy4KLQkJCQkzNCBSRVNFQVJDSCBEUklWRQotCQkJCUhBTVBUT04gVkEgMjM2NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLThFICAgKGhleCkJCVVUU1RBUkNPTQotMDBFMDhFICAgICAoYmFzZSAxNikJCVVUU1RBUkNPTQotCQkJCTMzIFdPT0QgQVZFLiBTT1VUSAotCQkJCUlTRUxJTiBOSiAwODgzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOEYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBFMDhGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOTAgICAoaGV4KQkJQkVDS01BTiBMQUIuIEFVVE9NQVRJT04gRElWLgotMDBFMDkwICAgICAoYmFzZSAxNikJCUJFQ0tNQU4gTEFCLiBBVVRPTUFUSU9OIERJVi4KLQkJCQk5MCBCT1JPTElORSBST0FECi0JCQkJQUxMRU5EQUxFIE5KIDA3NDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC05MSAgIChoZXgpCQlMRyBFTEVDVFJPTklDUywgSU5DLgotMDBFMDkxICAgICAoYmFzZSAxNikJCUxHIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJMTYsIFdPT01ZRU9OLURPTkcsCi0JCQkJU0VPQ0hPLUdVLCBTRU9VTCwgMTM3LTE0MCwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1FMC05MiAgIChoZXgpCQlBRE1URUsgSU5DT1JQT1JBVEVECi0wMEUwOTIgICAgIChiYXNlIDE2KQkJQURNVEVLIElOQ09SUE9SQVRFRAotCQkJCTE5NjIgWkFOS0VSIFJPQUQKLQkJCQlTQU4gSk9TRSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOTMgICAoaGV4KQkJQUNLRklOIE5FVFdPUktTCi0wMEUwOTMgICAgIChiYXNlIDE2KQkJQUNLRklOIE5FVFdPUktTCi0JCQkJNTc1IE4uIFBBU1RPUklBIEFWRS4KLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTk0ICAgKGhleCkJCU9TQUkgU1JMCi0wMEUwOTQgICAgIChiYXNlIDE2KQkJT1NBSSBTUkwKLQkJCQlWSUEgVE9SSU5PCi0JCQkJNjAzLUlWUkVBIChUTykgIAotCQkJCUlUQUxZCi0KLTAwLUUwLTk1ICAgKGhleCkJCUFEVkFOQ0VELVZJU0lPTiBURUNITk9MR0lFUyBDT1JQLgotMDBFMDk1ICAgICAoYmFzZSAxNikJCUFEVkFOQ0VELVZJU0lPTiBURUNITk9MR0lFUyBDT1JQLgotCQkJCThGLTEsIDg3IFNFQ1RJT04gMywgQ0hVTkcgWUFORyBSRCwKLQkJCQlUdSBDaGVuZyBUYWlwZWkgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1FMC05NiAgIChoZXgpCQlTSElNQURaVSBDT1JQT1JBVElPTgotMDBFMDk2ICAgICAoYmFzZSAxNikJCVNISU1BRFpVIENPUlBPUkFUSU9OCi0JCQkJMSwgTklTSElOT0tZTy1LVVdBQkFSQUNITwotCQkJCU5BS0FHWU8tS1UsIEtZT1RPIDYwNCAgCi0JCQkJSkFQQU4KLQotMDAtRTAtOTcgICAoaGV4KQkJQ0FSUklFUiBBQ0NFU1MgQ09SUE9SQVRJT04KLTAwRTA5NyAgICAgKGJhc2UgMTYpCQlDQVJSSUVSIEFDQ0VTUyBDT1JQT1JBVElPTgotCQkJCTUzOTUgUEVBUkwgUEFSS1dBWQotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTk4ICAgKGhleCkJCUFib0NvbSBTeXN0ZW1zLCBJbmMuCi0wMEUwOTggICAgIChiYXNlIDE2KQkJQWJvQ29tIFN5c3RlbXMsIEluYy4KLQkJCQkxMkYtMywgTk8uIDMzMywgU0VDLiAxCi0JCQkJR1VBTi1GVSBST0FECi0JCQkJSFNJTi1DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtOTkgICAoaGV4KQkJU0FNU09OIEFHCi0wMEUwOTkgICAgIChiYXNlIDE2KQkJU0FNU09OIEFHCi0JCQkJV0VJU01VTExFUlNUUi4gMwotCQkJCUQtNjAzMTQgRlJBTktGVVJUICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLTlBICAgKGhleCkJCVBvc2l0cm9uIEluYy4KLTAwRTA5QSAgICAgKGJhc2UgMTYpCQlQb3NpdHJvbiBJbmMuCi0JCQkJNTEwMSBCdWNoYW4gU3RyZWV0Ci0JCQkJU3VpdGUgMjIwCi0JCQkJTW9udHJlYWwsIFF1ZWJlYyBINFAgMlI5Ci0JCQkJQ0FOQURBCi0KLTAwLUUwLTlCICAgKGhleCkJCUVOR0FHRSBORVRXT1JLUywgSU5DLgotMDBFMDlCICAgICAoYmFzZSAxNikJCUVOR0FHRSBORVRXT1JLUywgSU5DLgotCQkJCTMxNiBOLiBNSUxXQVVLRUUgU1QuLCBTVEUuIzIxNAotCQkJCU1JTFdBVUtFRSBXSSA1MzIwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOUMgICAoaGV4KQkJTUlJCi0wMEUwOUMgICAgIChiYXNlIDE2KQkJTUlJCi0JCQkJTEUgcGFyYyBkdSBNT1VMSU4KLQkJCQkyLCBncmFuZGUgcnVlIFByb2xvbmdlZQotCQkJCUY5NTY1MCBQVUlTRVVYLVBPVE9JU0UgIAotCQkJCUZSQU5DRQotCi0wMC1FMC05RCAgIChoZXgpCQlTQVJOT0ZGIENPUlBPUkFUSU9OCi0wMEUwOUQgICAgIChiYXNlIDE2KQkJU0FSTk9GRiBDT1JQT1JBVElPTgotCQkJCUNOIDUzMDAKLQkJCQlQUklOQ0VUT04gTkogMDg1NDMtNTMwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOUUgICAoaGV4KQkJUVVBTlRVTSBDT1JQT1JBVElPTgotMDBFMDlFICAgICAoYmFzZSAxNikJCVFVQU5UVU0gQ09SUE9SQVRJT04KLQkJCQk1MDAgTWNDYXJ0aHkgQm91bGV2YXJkCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTlGICAgKGhleCkJCVBJWEVMIFZJU0lPTgotMDBFMDlGICAgICAoYmFzZSAxNikJCVBJWEVMIFZJU0lPTgotCQkJCTQzIE5BR09HIFBBUksKLQkJCQlBQ1RPTiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQTAgICAoaGV4KQkJV0lMVFJPTiBDTy4KLTAwRTBBMCAgICAgKGJhc2UgMTYpCQlXSUxUUk9OIENPLgotCQkJCTQ5MCBKQVJWSVMgRFJJVkUKLQkJCQlNT1JHQU4gSElMTCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQTEgICAoaGV4KQkJSElNQSBQQVVMIEhJTERFQlJBTkRUIEdtYkggQ28uIEtHCi0wMEUwQTEgICAgIChiYXNlIDE2KQkJSElNQSBQQVVMIEhJTERFQlJBTkRUIEdtYkggQ28uIEtHCi0JCQkJCi0JCQkJUE9TVEJPWCAxMjYxCi0JCQkJRC02ODc3NyBCUlVFSEwgTkVBUiBNQU5OSEVJTSAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLUEyICAgKGhleCkJCU1JQ1JPU0xBVEUgSU5DLgotMDBFMEEyICAgICAoYmFzZSAxNikJCU1JQ1JPU0xBVEUgSU5DLgotCQkJCTk2MjUgSUdOQUNFIC0gU1RFLiBECi0JCQkJQlJPU1NBUkQgIFFDIEo0WSAyUDMgIAotCQkJCUNBTkFEQQotCi0wMC1FMC1BMyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwQTMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1BNCAgIChoZXgpCQlFU0FPVEUgUy5wLkEuCi0wMEUwQTQgICAgIChiYXNlIDE2KQkJRVNBT1RFIFMucC5BLgotCQkJCXZpYSBkaSBDQUNJT0xMRSwgMTUKLQkJCQk1MDEyNyBGTE9SRU5DRSAgCi0JCQkJSVRBTFkKLQotMDAtRTAtQTUgICAoaGV4KQkJQ29tQ29yZSBTZW1pY29uZHVjdG9yLCBJbmMuCi0wMEUwQTUgICAgIChiYXNlIDE2KQkJQ29tQ29yZSBTZW1pY29uZHVjdG9yLCBJbmMuCi0JCQkJNDUwNSBMQVMgVklSR0VORVMsIFN1aXRlIDIwMgotCQkJCUNBTEFCQVNBUyBDQSA5MTMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQTYgICAoaGV4KQkJVEVMT0dZIE5FVFdPUktTLCBJTkMuCi0wMEUwQTYgICAgIChiYXNlIDE2KQkJVEVMT0dZIE5FVFdPUktTLCBJTkMuCi0JCQkJMjAyNTAgQ0VOVFVSWSBCTFZELgotCQkJCUdFUk1BTlRPV04gTUQgMjA4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUE3ICAgKGhleCkJCUlQQyBJTkZPUk1BVElPTiBTWVNURU1TLCBJTkMuCi0wMEUwQTcgICAgIChiYXNlIDE2KQkJSVBDIElORk9STUFUSU9OIFNZU1RFTVMsIElOQy4KLQkJCQlNRVRSTyBDRU5URVIKLQkJCQlPTkUgU1RBVElPTiBQTEFDRQotCQkJCVNUQU1GT1JEIENUIDA2OTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1BOCAgIChoZXgpCQlTQVQgR21iSCAmIENvLgotMDBFMEE4ICAgICAoYmFzZSAxNikJCVNBVCBHbWJIICYgQ28uCi0JCQkJUlVUSE5FUkdBU1NFIDEKLQkJCQlWSUVOTkEgQS0xMjEwICAKLQkJCQlBVVNUUklBCi0KLTAwLUUwLUE5ICAgKGhleCkJCUZVTkFJIEVMRUNUUklDIENPLiwgTFRELgotMDBFMEE5ICAgICAoYmFzZSAxNikJCUZVTkFJIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTctMSwgTkFLQUdBSVRPIDctQ0hPTUUsIERBSVRPCi0JCQkJT1NBS0EgIDU3NCAgCi0JCQkJSkFQQU4KLQotMDAtRTAtQUEgICAoaGV4KQkJRUxFQ1RST1NPTklDIExURC4KLTAwRTBBQSAgICAgKGJhc2UgMTYpCQlFTEVDVFJPU09OSUMgTFRELgotCQkJCUhBV0xFWSBNSUxMLCBIQVdMRVkgUkQuCi0JCQkJREFSVEZPUkQsIEtFTlQgREEyIDdTWSAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtQUIgICAoaGV4KQkJRElNQVQgUy5BLgotMDBFMEFCICAgICAoYmFzZSAxNikJCURJTUFUIFMuQS4KLQkJCQlDL0JJU0NBSUEgMzgzIDMKLQkJCQkwODAyMyAgQkFSQ0VMT05BICAKLQkJCQlTUEFJTgotCi0wMC1FMC1BQyAgIChoZXgpCQlNSURTQ08sIElOQy4KLTAwRTBBQyAgICAgKGJhc2UgMTYpCQlNSURTQ08sIElOQy4KLQkJCQk3MTAgUk9VVEUgNDYgRUFTVAotCQkJCUZBSVJGSUVMRCBOSiAwNzAwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQUQgICAoaGV4KQkJRUVTIFRFQ0hOT0xPR1ksIExURC4KLTAwRTBBRCAgICAgKGJhc2UgMTYpCQlFRVMgVEVDSE5PTE9HWSwgTFRELgotCQkJCTI1IEVBU1RXQVlTCi0JCQkJV0lUSEFNLCBFU1NFWCwgQ004IDNBTCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtQUUgICAoaGV4KQkJWEFRVEkgQ09SUE9SQVRJT04KLTAwRTBBRSAgICAgKGJhc2UgMTYpCQlYQVFUSSBDT1JQT1JBVElPTgotCQkJCSAxNjMwIE9BS0xBTkQgUkQuICNBLTIxNAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1BRiAgIChoZXgpCQlHRU5FUkFMIERZTkFNSUNTIElORk9STUFUSU9OIFNZU1RFTVMKLTAwRTBBRiAgICAgKGJhc2UgMTYpCQlHRU5FUkFMIERZTkFNSUNTIElORk9STUFUSU9OIFNZU1RFTVMKLQkJCQlDT01QVVRJTkcgREVWSUNFUywgTFRELgotCQkJCSAzMTkwIEZBSVJWSUVXIFBBCi0JCQkJRkFMTFMgQ0hVUkNIIFZBIDIyMDQyLTQ1MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUIwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTBCMCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUIxICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50LCBFbnRlcnByaXNlIEJ1c2luZXNzIEdyb3VwCi0wMEUwQjEgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQsIEVudGVycHJpc2UgQnVzaW5lc3MgR3JvdXAKLQkJCQkyNjgwMSBXZXN0IEFnb3VyYSBSb2FkCi0JCQkJQ2FsYWJhc2FzIENBIDkxMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CMiAgIChoZXgpCQlURUxNQVggQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwRTBCMiAgICAgKGJhc2UgMTYpCQlURUxNQVggQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQk0NjUxNSBMQU5ESU5HIFBBUktXQVkKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CMyAgIChoZXgpCQlFdGhlcldBTiBTeXN0ZW1zLCBJbmMuCi0wMEUwQjMgICAgIChiYXNlIDE2KQkJRXRoZXJXQU4gU3lzdGVtcywgSW5jLgotCQkJCTE0IEhVR0hFUywgIFNURS5CLTEwNQotCQkJCUlSVklORSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQjQgICAoaGV4KQkJVEVDSE5PIFNDT1BFIENPLiwgTFRELgotMDBFMEI0ICAgICAoYmFzZSAxNikJCVRFQ0hOTyBTQ09QRSBDTy4sIExURC4KLQkJCQkxMy02LTcgS0lTSElNQVRJIFVSQVdBU0kKLQkJCQlTQUlUQU1BIDMzNiAgCi0JCQkJSkFQQU4KLQotMDAtRTAtQjUgICAoaGV4KQkJQVJERU5UIENPTU1VTklDQVRJT05TIENPUlAuCi0wMEUwQjUgICAgIChiYXNlIDE2KQkJQVJERU5UIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJMzgwMSBaQU5LRVIgUk9BRCwgIFN1aXRlIEEKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQjYgICAoaGV4KQkJRW50cmFkYSBOZXR3b3JrcwotMDBFMEI2ICAgICAoYmFzZSAxNikJCUVudHJhZGEgTmV0d29ya3MKLQkJCQk5MDIwIEpVTkNUSU9OIERSSVZFCi0JCQkJQU5OQVBPTElTIEpVTkNUSU9OIE1EIDIwNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CNyAgIChoZXgpCQlQSSBHUk9VUCwgTFRELgotMDBFMEI3ICAgICAoYmFzZSAxNikJCVBJIEdST1VQLCBMVEQuCi0JCQkJTUlMVE9OIEhBTEwsIENIVVJDSCBMQU5FCi0JCQkJTUlMVE9OLCBDQU1CUklER0UgQ0JBIDZBQiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtQjggICAoaGV4KQkJR0FURVdBWSAyMDAwCi0wMEUwQjggICAgIChiYXNlIDE2KQkJR0FURVdBWSAyMDAwCi0JCQkJNjEwIEdBVEVXQVkgRFJJVkUKLQkJCQlOLiBTSU9VWCBDSVRZIFNEIDU3MDQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1COSAgIChoZXgpCQlCWUFTIFNZU1RFTVMKLTAwRTBCOSAgICAgKGJhc2UgMTYpCQlCWUFTIFNZU1RFTVMKLQkJCQkyMjUwIE1PTlJPRSBTVFJFRVQsICAjMzcxCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUJBICAgKGhleCkJCUJFUkdIT0YgQVVUT01BVElPTlNURUNITklLIEdtYkgKLTAwRTBCQSAgICAgKGJhc2UgMTYpCQlCRVJHSE9GIEFVVE9NQVRJT05TVEVDSE5JSyBHbWJICi0JCQkJSEFSUkVUIFNUUkFTU0UgMQotCQkJCUQgNzI4MDAgRU5JTkdFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC1CQiAgIChoZXgpCQlOQlggQ09SUE9SQVRJT04KLTAwRTBCQiAgICAgKGJhc2UgMTYpCQlOQlggQ09SUE9SQVRJT04KLQkJCQkxMDAgQlJJQ0tTVE9ORSBTUVVBUkUKLQkJCQlBTkRPVkVSIE1BIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CQyAgIChoZXgpCQlTWU1PTiBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBFMEJDICAgICAoYmFzZSAxNikJCVNZTU9OIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTA3MDEgQ09SUE9SQVRFIERSLi1TVEUuICMyOTAKLQkJCQlTVEFGRk9SRCBUWCA3NzQ3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQkQgICAoaGV4KQkJSU5URVJGQUNFIFNZU1RFTVMsIElOQy4KLTAwRTBCRCAgICAgKGJhc2UgMTYpCQlJTlRFUkZBQ0UgU1lTVEVNUywgSU5DLgotCQkJCTU4NTUgSU5URVJGQUNFIERSSVZFCi0JCQkJQU5OIEFSQk9SIE1JIDQ4MTAzLTk1MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUJFICAgKGhleCkJCUdFTlJPQ08gSU5URVJOQVRJT05BTCwgSU5DLgotMDBFMEJFICAgICAoYmFzZSAxNikJCUdFTlJPQ08gSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTI1NSBFTkRFUlMgQ09VUlQKLQkJCQlTTElOR0VSIFdJIDUzMDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CRiAgIChoZXgpCQlUT1JSRU5UIE5FVFdPUktJTkcgVEVDSE5PTE9HSUVTIENPUlAuCi0wMEUwQkYgICAgIChiYXNlIDE2KQkJVE9SUkVOVCBORVRXT1JLSU5HIFRFQ0hOT0xPR0lFUyBDT1JQLgotCQkJCTgxODEgUFJPRkVTU0lPTkFMIFBMQUNFCi0JCQkJU1VJVEUgIzE2MAotCQkJCUxBTkRPVkVSIE1EIDIwNzg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1DMCAgIChoZXgpCQlTRUlXQSBFTEVDVFJJQyBNRkcuIENPLiwgTFRELgotMDBFMEMwICAgICAoYmFzZSAxNikJCVNFSVdBIEVMRUNUUklDIE1GRy4gQ08uLCBMVEQuCi0JCQkJODYgVEFSQURBIFNISU4tSUtFLAotCQkJCUpPWU8sCi0JCQkJS1lPVE8gUFJFRkVDVFVSRSAgCi0JCQkJSkFQQU4KLQotMDAtRTAtQzEgICAoaGV4KQkJTUVNT1JFWCBURUxFWCBKQVBBTiwgTFRELgotMDBFMEMxICAgICAoYmFzZSAxNikJCU1FTU9SRVggVEVMRVggSkFQQU4sIExURC4KLQkJCQlZQUVTVUdVQ0hJIEtBSUtBTiwgMS03LTIwCi0JCQkJWUFFU1UsIENIVU8tS1UKLQkJCQlUT0tZTyAxMDMgIAotCQkJCUpBUEFOCi0KLTAwLUUwLUMyICAgKGhleCkJCU5FQ1NZIFMucC5BLgotMDBFMEMyICAgICAoYmFzZSAxNikJCU5FQ1NZIFMucC5BLgotCQkJCVZJQSBMSVNCT05BIDI4Ci0JCQkJMzUwMjAgUEFET1ZBICAKLQkJCQlJVEFMWQotCi0wMC1FMC1DMyAgIChoZXgpCQlTQUtBSSBTWVNURU0gREVWRUxPUE1FTlQgQ09SUC4KLTAwRTBDMyAgICAgKGJhc2UgMTYpCQlTQUtBSSBTWVNURU0gREVWRUxPUE1FTlQgQ09SUC4KLQkJCQlQT1JUVVMgQ0VOVEVSIEJMRC4sIDQtNDUtMQotCQkJCUVCSVNVSklNQS1DSE8sICBTQUtBSS1DSVRZCi0JCQkJT1NBS0EtRlUsIDU5MCAgCi0JCQkJSkFQQU4KLQotMDAtRTAtQzQgICAoaGV4KQkJSE9STkVSIEVMRUNUUklDLCBJTkMuCi0wMEUwQzQgICAgIChiYXNlIDE2KQkJSE9STkVSIEVMRUNUUklDLCBJTkMuCi0JCQkJMTUyMSBFLiBXQVNISU5HVE9OIFNULgotCQkJCUlORElBTkFQT0xJUyBJTiA0NjIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQzUgICAoaGV4KQkJQkNPTSBFTEVDVFJPTklDUyBJTkMuCi0wMEUwQzUgICAgIChiYXNlIDE2KQkJQkNPTSBFTEVDVFJPTklDUyBJTkMuCi0JCQkJOCBGTCwgTk8uIDY0LCBBTiBITyBST0FELCBTRUMuIDIKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtQzYgICAoaGV4KQkJTElOSzJJVCwgTC5MLkMuCi0wMEUwQzYgICAgIChiYXNlIDE2KQkJTElOSzJJVCwgTC5MLkMuCi0JCQkJNDI1NiBCRUNLIEFWRU5VRQotCQkJCVNUVURJTyBDSVRZIENBIDkxNjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1DNyAgIChoZXgpCQlFVVJPVEVDSCBTUkwKLTAwRTBDNyAgICAgKGJhc2UgMTYpCQlFVVJPVEVDSCBTUkwKLQkJCQlWSUEgSkFDT1BPIExJTlVTU0lPIDEKLQkJCQkzMzAzMCBBTUFST08gKFVEKSAgCi0JCQkJSVRBTFkKLQotMDAtRTAtQzggICAoaGV4KQkJVklSVFVBTCBBQ0NFU1MsIExURC4KLTAwRTBDOCAgICAgKGJhc2UgMTYpCQlWSVJUVUFMIEFDQ0VTUywgTFRELgotCQkJCVdPT0RTSURFIEhPVVNFLCBXSU5LRklFTEQsCi0JCQkJV0lORFNPUiwgQkVSS1NISVJFIFNMNCAyRFggRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC1DOSAgIChoZXgpCQlBdXRvbWF0ZWRMb2dpYyBDb3Jwb3JhdGlvbgotMDBFMEM5ICAgICAoYmFzZSAxNikJCUF1dG9tYXRlZExvZ2ljIENvcnBvcmF0aW9uCi0JCQkJMTE1MCBST0JFUlRTIEJPVUxFVkFSRAotCQkJCUtFTk5FU0FXIEdBIDMwMTQ0LTM2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUNBICAgKGhleCkJCUJFU1QgREFUQSBQUk9EVUNUUwotMDBFMENBICAgICAoYmFzZSAxNikJCUJFU1QgREFUQSBQUk9EVUNUUwotCQkJCTIxODAwIE5PUkRIT0ZGIFNUUkVFVAotCQkJCUNIQVRTV09SVEggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUNCICAgKGhleCkJCVJFU09OLCBJTkMuCi0wMEUwQ0IgICAgIChiYXNlIDE2KQkJUkVTT04sIElOQy4KLQkJCQkzMDAgTE9QRVogUk9BRAotCQkJCUdPTEVUQSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQ0MgICAoaGV4KQkJSEVSTyBTWVNURU1TLCBMVEQuCi0wMEUwQ0MgICAgIChiYXNlIDE2KQkJSEVSTyBTWVNURU1TLCBMVEQuCi0JCQkJVEhFIEJBUk5FUywgQ09PTUJFTEFORFMgTEFORSwKLQkJCQlBRERMRVNUT05FLCBXRVlCUklER0UKLQkJCQlTVVJSRVkgS1QxNSAxSFkgRW5nbGFuZCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC1DRCAgIChoZXgpCQlTRU5TSVMgQ09SUE9SQVRJT04KLTAwRTBDRCAgICAgKGJhc2UgMTYpCQlTRU5TSVMgQ09SUE9SQVRJT04KLQkJCQk1NzkzIFdJREVXQVRFUlMgUEFSS1dBWQotCQkJCURFV0lUVCBOWSAxMzIxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQ0UgICAoaGV4KQkJQVJOCi0wMEUwQ0UgICAgIChiYXNlIDE2KQkJQVJOCi0JCQkJNTEsIFJVRSBHQVNUT04gTEFVUklBVQotCQkJCUYtOTM1MTIgTU9OVFJFVUlMIENFREVYICAKLQkJCQlGUkFOQ0UKLQotMDAtRTAtQ0YgICAoaGV4KQkJSU5URUdSQVRFRCBERVZJQ0UgVEVDSE5PTE9HWSwgSU5DLgotMDBFMENGICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgREVWSUNFIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk2MDI0IFNpbHZlciBDcmVlayBWYWxsZXkgUm9hZAotCQkJCVNhbiBKb3NlIENBIDk1MTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1EMCAgIChoZXgpCQlORVRTUEVFRCwgSU5DLgotMDBFMEQwICAgICAoYmFzZSAxNikJCU5FVFNQRUVELCBJTkMuCi0JCQkJMTIzMDMgVEVDSE5PTE9HWSBCTFZELgotCQkJCUFVU1RJTiBUWCA3ODcyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRDEgICAoaGV4KQkJVEVMU0lTIExJTUlURUQKLTAwRTBEMSAgICAgKGJhc2UgMTYpCQlURUxTSVMgTElNSVRFRAotCQkJCTE2IEJBUk5FUyBXQUxMQUNFIFJPQUQKLQkJCQlGQVJFSEFNLCBIQU1QU0hJUkUgUE8xNSA1VFQgRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC1EMiAgIChoZXgpCQlWRVJTQU5FVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBFMEQyICAgICAoYmFzZSAxNikJCVZFUlNBTkVUIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNjI4IE4uIERJQU1PTkQgQkFSIEJMVkQuCi0JCQkJRElBTU9ORCBCQVIgQ0EgOTE3NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUQzICAgKGhleCkJCURBVEVOVEVDSE5JSyBHbWJICi0wMEUwRDMgICAgIChiYXNlIDE2KQkJREFURU5URUNITklLIEdtYkgKLQkJCQlUSEVSRVNJQU5VTUdBU1NFIDExCi0JCQkJQS0xMDQwIFdJRU4gIAotCQkJCUFVU1RSSUEKLQotMDAtRTAtRDQgICAoaGV4KQkJRVhDRUxMRU5UIENPTVBVVEVSCi0wMEUwRDQgICAgIChiYXNlIDE2KQkJRVhDRUxMRU5UIENPTVBVVEVSCi0JCQkJNTUxLCBNLksuTi4gUk9BRAotCQkJCUFMQU5EVVIsIENIRU5OQUkgNjAwMDE2ICAKLQkJCQlJTkRJQQotCi0wMC1FMC1ENSAgIChoZXgpCQlFbXVsZXggQ29ycG9yYXRpb24KLTAwRTBENSAgICAgKGJhc2UgMTYpCQlFbXVsZXggQ29ycG9yYXRpb24KLQkJCQkzMzMzIFN1c2FuIFN0cmVldAotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUQ2ICAgKGhleCkJCUNPTVBVVEVSICYgQ09NTVVOSUNBVElPTiBSRVNFQVJDSCBMQUIuCi0wMEUwRDYgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgJiBDT01NVU5JQ0FUSU9OIFJFU0VBUkNIIExBQi4KLQkJCQkKLQkJCQkxOTUgU0VDLjQsIENIVU5HIEhTSU5HIFJECi0JCQkJQ0hVVFVORywgSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1FMC1ENyAgIChoZXgpCQlTVU5TSElORSBFTEVDVFJPTklDUywgSU5DLgotMDBFMEQ3ICAgICAoYmFzZSAxNikJCVNVTlNISU5FIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJNDY1NjAgRlJFTU9OVCBCTFZELiAtU1RFLiAjMTEzCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRDggICAoaGV4KQkJTEFOQml0IENvbXB1dGVyLCBJbmMuCi0wMEUwRDggICAgIChiYXNlIDE2KQkJTEFOQml0IENvbXB1dGVyLCBJbmMuCi0JCQkJMTJGLCA1NTIgQ0hVTkcgSFNJQU8gRS4sIFJELgotCQkJCVNFQy4gNSwgVEFJUEVJIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtRDkgICAoaGV4KQkJVEFaTU8gQ08uLCBMVEQuCi0wMEUwRDkgICAgIChiYXNlIDE2KQkJVEFaTU8gQ08uLCBMVEQuCi0JCQkJNjE4NiBLSU5PS08sIElCQVJBLVNISQotCQkJCU9LQVlBTUEgNzE1ICAKLQkJCQlKQVBBTgotCi0wMC1FMC1EQSAgIChoZXgpCQlBbGNhdGVsIE5vcnRoIEFtZXJpY2EgRVNECi0wMEUwREEgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBOb3J0aCBBbWVyaWNhIEVTRAotCQkJCTI2ODAxIFdlc3QgQWdvdXJhIFJvYWQKLQkJCQlDYWxhYmFzYXMgQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLURCICAgKGhleCkJCVZpYVZpZGVvIENvbW11bmljYXRpb25zLCBJbmMuCi0wMEUwREIgICAgIChiYXNlIDE2KQkJVmlhVmlkZW8gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk4OTAwIFNIT0FMIENSRUVLIEJMVkQuCi0JCQkJQkxERy4gIzMwMAotCQkJCUFVU1RJTiBUWCA3ODc1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtREMgICAoaGV4KQkJTkVYV0FSRSBDT1JQLgotMDBFMERDICAgICAoYmFzZSAxNikJCU5FWFdBUkUgQ09SUC4KLQkJCQk4MjUgU1RFV0FSVCBEUi4sICBTVEUgIzQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUREICAgKGhleCkJCVpFTklUSCBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotMDBFMEREICAgICAoYmFzZSAxNikJCVpFTklUSCBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotCQkJCTEwMDAgTUlMV0FVS0VFIEFWRU5VRQotCQkJCUdMRU5WSUVXIElMIDYwMDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1ERSAgIChoZXgpCQlEQVRBWCBOVgotMDBFMERFICAgICAoYmFzZSAxNikJCURBVEFYIE5WCi0JCQkJUklOR0xBQU4gNTEKLQkJCQlCLTI2MDAgQkVSQ0hFTSAgCi0JCQkJQkVMR0lVTQotCi0wMC1FMC1ERiAgIChoZXgpCQlLRVlNSUxFIEdtYkgKLTAwRTBERiAgICAgKGJhc2UgMTYpCQlLRVlNSUxFIEdtYkgKLQkJCQlXb2hsZW5iZXJnc3RyLiAzCi0JCQkJMzAxNzkgSGFubm92ZXIgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC1FMCAgIChoZXgpCQlTSSBFTEVDVFJPTklDUywgTFRELgotMDBFMEUwICAgICAoYmFzZSAxNikJCVNJIEVMRUNUUk9OSUNTLCBMVEQuCi0JCQkJMjgtMTYsIFNISU1PTUFSVUtPIDItQ0hPTUUsCi0JCQkJVE9LWU8gMTQ2ICAKLQkJCQlKQVBBTgotCi0wMC1FMC1FMSAgIChoZXgpCQlHMiBORVRXT1JLUywgSU5DLgotMDBFMEUxICAgICAoYmFzZSAxNikJCUcyIE5FVFdPUktTLCBJTkMuCi0JCQkJMTQyIFNPLiBTQU5UQSBDUlVaIEFWRS4KLQkJCQlMT1MgR0FUT1MgQ0EgOTUwMzAtNjcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRTIgICAoaGV4KQkJSU5OT1ZBIENPUlAuCi0wMEUwRTIgICAgIChiYXNlIDE2KQkJSU5OT1ZBIENPUlAuCi0JCQkJMzMyNSBTT1VUSCAxMTZUSCBTVFJFRVQKLQkJCQlTRUFUVExFIFdBIDk4MTY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1FMyAgIChoZXgpCQlTSy1FTEVLVFJPTklLIEdtYkgKLTAwRTBFMyAgICAgKGJhc2UgMTYpCQlTSy1FTEVLVFJPTklLIEdtYkgKLQkJCQlIRU1NRUxSQVRIRVJXRUcgMjAxCi0JCQkJNTEzNzcgTEVWRVJLVVNFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC1FNCAgIChoZXgpCQlGQU5VQyBST0JPVElDUyBOT1JUSCBBTUVSSUNBLCBJbmMuCi0wMEUwRTQgICAgIChiYXNlIDE2KQkJRkFOVUMgUk9CT1RJQ1MgTk9SVEggQU1FUklDQSwgSW5jLgotCQkJCTM5MDAgVy4gSEFNTElOIFJELgotCQkJCVJPQ0hFU1RFUiBISUxMUyBNSSA0ODMwOS0zMjUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1FNSAgIChoZXgpCQlDSU5DTyBORVRXT1JLUywgSU5DLgotMDBFMEU1ICAgICAoYmFzZSAxNikJCUNJTkNPIE5FVFdPUktTLCBJTkMuCi0JCQkJNjYwMSBLT0xMIENFTlRFUiBQQVJLIFdBWQotCQkJCVNVSVRFICMxNDAKLQkJCQlQTEVBU0FOVE9OIENBIDk0NTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1FNiAgIChoZXgpCQlJTkNBQSBEQVRBQ09NIEIuVi4KLTAwRTBFNiAgICAgKGJhc2UgMTYpCQlJTkNBQSBEQVRBQ09NIEIuVi4KLQkJCQlQLk8uIEJPWCAyMTEKLQkJCQk3MzAwIEFFIEFQRUxET09STiAgCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtRTAtRTcgICAoaGV4KQkJUkFZVEhFT04gRS1TWVNURU1TLCBJTkMuCi0wMEUwRTcgICAgIChiYXNlIDE2KQkJUkFZVEhFT04gRS1TWVNURU1TLCBJTkMuCi0JCQkJMTMwMSBFLiBDT0xMSU5TCi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRTggICAoaGV4KQkJR1JFVEFDT0RFUiBEYXRhIFN5c3RlbXMgQUcKLTAwRTBFOCAgICAgKGJhc2UgMTYpCQlHUkVUQUNPREVSIERhdGEgU3lzdGVtcyBBRwotCQkJCUFMVEhBUkRTVFJBU1NFICAxNTAKLQkJCQlDSC04MTA1IFJFR0VOU0RPUkYgIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLUUwLUU5ICAgKGhleCkJCURBVEEgTEFCUywgSU5DLgotMDBFMEU5ICAgICAoYmFzZSAxNikJCURBVEEgTEFCUywgSU5DLgotCQkJCTQ0NCBOT1JUSCBGUkVERVJJQ0sgQVZFLgotCQkJCVNVSVRFICMyNDAKLQkJCQlHQUlUSEVSU0JVUkcgTUQgMjA4NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUVBICAgKGhleCkJCUlOTk9WQVQgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRTBFQSAgICAgKGJhc2UgMTYpCQlJTk5PVkFUIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTI1NyBOLiBQTEFOTyBST0FECi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRUIgICAoaGV4KQkJRElHSUNPTSBTWVNURU1TLCBJTkNPUlBPUkFURUQKLTAwRTBFQiAgICAgKGJhc2UgMTYpCQlESUdJQ09NIFNZU1RFTVMsIElOQ09SUE9SQVRFRAotCQkJCTE4OCBUT1BBWiBTVFJFRVQKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRUMgICAoaGV4KQkJQ0VMRVNUSUNBIElOQy4KLTAwRTBFQyAgICAgKGJhc2UgMTYpCQlDRUxFU1RJQ0EgSU5DLgotCQkJCTg0NCBET04gTUlMTFMgUk9BRAotCQkJCU5PUlRIIFlPUksgIE9OVEFSSU8gTTNDIDFWNyAgCi0JCQkJQ0FOQURBCi0KLTAwLUUwLUVEICAgKGhleCkJCVNJTElDT00sIExURC4KLTAwRTBFRCAgICAgKGJhc2UgMTYpCQlTSUxJQ09NLCBMVEQuCi0JCQkJOCBIQU5BR0VSIFNULgotCQkJCVAuTy4gQk9YIDIxNjQKLQkJCQlLRkFSLVNBVkEgNDQwMDAgIAotCQkJCUlTUkFFTAotCi0wMC1FMC1FRSAgIChoZXgpCQlNQVJFTCBIRgotMDBFMEVFICAgICAoYmFzZSAxNikJCU1BUkVMIEhGCi0JCQkJQXVzdHVyaHJhdW4gOQotCQkJCUdhcmRhYmFlciAgMjEwCi0JCQkJSUNFTEFORAotCi0wMC1FMC1FRiAgIChoZXgpCQlESU9ORVgKLTAwRTBFRiAgICAgKGJhc2UgMTYpCQlESU9ORVgKLQkJCQlQTyBCT1ggMzYwMwotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OC0zNjAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1GMCAgIChoZXgpCQlBQkxFUiBURUNITk9MT0dZLCBJTkMuCi0wMEUwRjAgICAgIChiYXNlIDE2KQkJQUJMRVIgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTRGLCBOTy4gNTQgIFNFQy4gNAotCQkJCU1JTi1TSEVORyBFLiBSRC4KLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtRjEgICAoaGV4KQkJVEhBVCBDT1JQT1JBVElPTgotMDBFMEYxICAgICAoYmFzZSAxNikJCVRIQVQgQ09SUE9SQVRJT04KLQkJCQk3MzQgRk9SRVNUIFNUUkVFVAotCQkJCU1BUkxCT1JPVUdIIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1GMiAgIChoZXgpCQlBUkxPVFRPIENPTU5FVCwgSU5DLgotMDBFMEYyICAgICAoYmFzZSAxNikJCUFSTE9UVE8gQ09NTkVULCBJTkMuCi0JCQkJN0YtNCw1NSxUVU5HLUtVQU5HIFJPQUQKLQkJCQlIU0lOLUNIVSwgMzAwICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLUYzICAgKGhleCkJCVdlYlNwcmludCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDBFMEYzICAgICAoYmFzZSAxNikJCVdlYlNwcmludCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTMwMjYgU0NPVFQgQkxWRC4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRjQgICAoaGV4KQkJSU5TSURFIFRlY2hub2xvZ3kgQS9TCi0wMEUwRjQgICAgIChiYXNlIDE2KQkJSU5TSURFIFRlY2hub2xvZ3kgQS9TCi0JCQkJVkVOTElHSEVEU1ZFSiA2Ci0JCQkJREstMjk3MCBIT0VSU0hPTE0gIAotCQkJCURFTk1BUksKLQotMDAtRTAtRjUgICAoaGV4KQkJVEVMRVMgQUcKLTAwRTBGNSAgICAgKGJhc2UgMTYpCQlURUxFUyBBRwotCQkJCURPVkVTVFIuIDItNAotCQkJCTEwNTg3IEJFUkxJTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC1GNiAgIChoZXgpCQlERUNJU0lPTiBFVVJPUEUKLTAwRTBGNiAgICAgKGJhc2UgMTYpCQlERUNJU0lPTiBFVVJPUEUKLQkJCQkzLCBydWUgZGUgTGF0dHJlIGRlIFRhc3NpZ255Ci0JCQkJODUxNzAgU0FJTlQgREVOSVMgTEEgQ0hFVkFTU0UgIAotCQkJCUZSQU5DRQotCi0wMC1FMC1GNyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwRjcgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1GOCAgIChoZXgpCQlESUNOQSBDT05UUk9MIEFCCi0wMEUwRjggICAgIChiYXNlIDE2KQkJRElDTkEgQ09OVFJPTCBBQgotCQkJCVNURU5ZWEVHQVRBTiAyMSBDCi0JCQkJMjEzIDc2IE1BTE1PRSAgCi0JCQkJU1dFREVOCi0KLTAwLUUwLUY5ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTBGOSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUZBICAgKGhleCkJCVRSTCBURUNITk9MT0dZLCBMVEQuCi0wMEUwRkEgICAgIChiYXNlIDE2KQkJVFJMIFRFQ0hOT0xPR1ksIExURC4KLQkJCQlTSEFOTk9OIFdBWSwgQVNIQ0hVUkNILAotCQkJCVRFV0tFU0JVUlksIEdMT1MuIEdMMjAgOE5EICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC1GQiAgIChoZXgpCQlMRUlHSFRST05JWCwgSU5DLgotMDBFMEZCICAgICAoYmFzZSAxNikJCUxFSUdIVFJPTklYLCBJTkMuCi0JCQkJMjMzMCBKQVJDTyBEUi4KLQkJCQlIT0xUIE1JIDQ4ODQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1GQyAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotMDBFMEZDICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJS0VGQSBST0FELCBTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCU5BTlNIQU4gRElTVFJJQ1QsCi0JCQkJU0hFTlpIRU4gNTE4MDU3ICAKLQkJCQlDSElOQQotCi0wMC1FMC1GRCAgIChoZXgpCQlBLVRSRU5EIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMEUwRkQgICAgIChiYXNlIDE2KQkJQS1UUkVORCBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTEwRiwgTk8uIDc1LCBIU0lOIFRBSSBXVSBSRC4sCi0JCQkJU0VDLiAxLCBIU0kgQ0hJSCwKLQkJCQlUQUlQRUkgSFNJRU4gMjIxICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLUZFICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTBGRSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUZGICAgKGhleCkJCVNFQ1VSSVRZIERZTkFNSUNTIFRFQ0hOT0xPR0lFUywgSW5jLgotMDBFMEZGICAgICAoYmFzZSAxNikJCVNFQ1VSSVRZIERZTkFNSUNTIFRFQ0hOT0xPR0lFUywgSW5jLgotCQkJCTIwIENST1NCWSBEUklWRQotCQkJCUJFREZPUkQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUU2LUQzICAgKGhleCkJCU5JWERPUkYgQ09NUFVURVIgQ09SUC4KLTAwRTZEMyAgICAgKGJhc2UgMTYpCQlOSVhET1JGIENPTVBVVEVSIENPUlAuCi0JCQkJMjUyMCBNSVNTSU9OIENPTExFR0UgUk9BRAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1GOC02MCAgIChoZXgpCQlQVC4gUGFuZ2d1bmcgRWxlY3RyaWMgQ2l0cmFidWFuYQotMDBGODYwICAgICAoYmFzZSAxNikJCVBULiBQYW5nZ3VuZyBFbGVjdHJpYyBDaXRyYWJ1YW5hCi0JCQkJSmwuIFJheWEgV2FydSBuby4gMQotCQkJCVNpZG9hcmpvIEphd2EgVGltdXIgNjEyNTYKLQkJCQlJTkRPTkVTSUEKLQotMDAtRkMtNzAgICAoaGV4KQkJSW50cmVwaWQgQ29udHJvbCBTeXN0ZW1zLCBJbmMuCi0wMEZDNzAgICAgIChiYXNlIDE2KQkJSW50cmVwaWQgQ29udHJvbCBTeXN0ZW1zLCBJbmMuCi0JCQkJNTcwMCAxOCBNaWxlIFJkLgotCQkJCVN0ZXJsaW5nIEhlaWdodHMgTUkgNDgzMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAyLTA3LTAxICAgKGhleCkJCVJBQ0FMLURBVEFDT00KLTAyMDcwMSAgICAgKGJhc2UgMTYpCQlSQUNBTC1EQVRBQ09NCi0JCQkJTEFOIElOVEVSTkVUV09SS0lORyBESVZJU0lPTgotCQkJCTE1NSBTV0FOU09OIFJPQUQKLQkJCQlCT1hCT1JPVUdIIE1BIDAxNzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi0xQy03QyAgIChoZXgpCQlQRVJRIFNZU1RFTVMgQ09SUE9SQVRJT04KLTAyMUM3QyAgICAgKGJhc2UgMTYpCQlQRVJRIFNZU1RFTVMgQ09SUE9SQVRJT04KLQkJCQkyNjAwIExJQkVSVFkgQVZFTlVFCi0JCQkJUC5PLiBCT1ggMjYwMAotCQkJCVBJVFRTQlVSR0ggUEEgMTUyMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAyLTYwLTg2ICAgKGhleCkJCUxPR0lDIFJFUExBQ0VNRU5UIFRFQ0guIExURC4KLTAyNjA4NiAgICAgKGJhc2UgMTYpCQlMT0dJQyBSRVBMQUNFTUVOVCBURUNILiBMVEQuCi0JCQkJMTQgQVJLV1JJR0hUIFJPQUQKLQkJCQlSRUFESU5HIEJFUktTIFJHMk9MUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDItNjAtOEMgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDI2MDhDICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQkyMDgxIE4uIFNIT1JMSU5FIEJMVkQuCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDItNzAtMDEgICAoaGV4KQkJUkFDQUwtREFUQUNPTQotMDI3MDAxICAgICAoYmFzZSAxNikJCVJBQ0FMLURBVEFDT00KLQkJCQlMQU4gSU5URVJORVRXT1JLSU5HIERJVklTSU9OCi0JCQkJMTU1IFNXQU5TT04gUk9BRAotCQkJCUJPWEJPUk9VR0ggTUEgMDE3MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAyLTcwLUIwICAgKGhleCkJCU0vQS1DT00gSU5DLiBDT01QQU5JRVMKLTAyNzBCMCAgICAgKGJhc2UgMTYpCQlNL0EtQ09NIElOQy4gQ09NUEFOSUVTCi0JCQkJMTE3MTcgRVhQTE9SQVRJT04gTEFORQotCQkJCUdFUk1BTlRPV04gTUQgMjA3NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAyLTcwLUIzICAgKGhleCkJCURBVEEgUkVDQUxMIExURAotMDI3MEIzICAgICAoYmFzZSAxNikJCURBVEEgUkVDQUxMIExURAotCQkJCVNPTkRFUyBQTEFDRQotCQkJCURPUktJTkcgU1VSUkVZIFJINCAzRUYKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAyLTlELThFICAgKGhleCkJCUNBUkRJQUMgUkVDT1JERVJTIElOQy4KLTAyOUQ4RSAgICAgKGJhc2UgMTYpCQlDQVJESUFDIFJFQ09SREVSUyBJTkMuCi0JCQkJMzQgU0NBUkJPUk8gUkQKLQkJCQlMT05ET04gTjQgNEwgVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDItQUEtM0MgICAoaGV4KQkJT0xJVkVUVEkgVEVMRUNPTU0gU1BBIChPTFRFQ08pCi0wMkFBM0MgICAgIChiYXNlIDE2KQkJT0xJVkVUVEkgVEVMRUNPTU0gU1BBIChPTFRFQ08pCi0JCQkJMjAzMDAgU1RFVkVOUyAgQ1JFRUsgQkxWRC4KLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAyLUJCLTAxICAgKGhleCkJCU9DVE9USE9SUEUgQ09SUC4KLTAyQkIwMSAgICAgKGJhc2UgMTYpCQlPQ1RPVEhPUlBFIENPUlAuCi0JCQkJMjg1IFdFU1QgR1JFRU4gU1RSRUVUCi0JCQkJUEFTQURFTkEgQ0EgOTExMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAyLUMwLThDICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAyQzA4QyAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCQVlGUk9OVCBQTEFaQQotCQkJCVAuTy4gQk9YIDU4MTQ1Ci0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAyLUNGLTFDICAgKGhleCkJCUNPTU1VTklDQVRJT04gTUFDSElORVJZIENPUlAuCi0wMkNGMUMgICAgIChiYXNlIDE2KQkJQ09NTVVOSUNBVElPTiBNQUNISU5FUlkgQ09SUC4KLQkJCQkxMjI2IEFOQUNBUEEKLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi1FNi1EMyAgIChoZXgpCQlOSVhET1JGIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMkU2RDMgICAgIChiYXNlIDE2KQkJTklYRE9SRiBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCU5JWERPUkYgVEVDSE5PTE9HWSBDRU5URVIKLQkJCQkyNTIwIE1JU1NJT04gQ09MTEVHRSBCTFZECi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LTBBLTgzICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50Ci0wNDBBODMgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQKLQkJCQlWaWEgVHJlbnRvLCAzMAotCQkJCVZpbWVucmNhdGUgTUIgMjA1OQotCQkJCUlUQUxZCi0KLTA0LTBBLUUwICAgKGhleCkJCVhNSVQgQUcgQ09NUFVURVIgTkVUV09SS1MKLTA0MEFFMCAgICAgKGJhc2UgMTYpCQlYTUlUIEFHIENPTVBVVEVSIE5FVFdPUktTCi0JCQkJMTEgQVZFTlVFIERFIEJBVU1FVFRFUwotCQkJCTEwMjAgUkVOQU5TCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wNC0wQy1DRSAgIChoZXgpCQlBcHBsZSwgSW5jLgotMDQwQ0NFICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBpbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC0wRS1DMiAgIChoZXgpCQlWaWV3U29uaWMgTW9iaWxlIENoaW5hIExpbWl0ZWQKLTA0MEVDMiAgICAgKGJhc2UgMTYpCQlWaWV3U29uaWMgTW9iaWxlIENoaW5hIExpbWl0ZWQKLQkJCQlSb29tIDYwMSwgVGhlIEdhdGUgVG93ZXIgQiwgTm8uMTksIFpob25nZ3VhbmN1biBTdHJlZXQsIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODAKLQkJCQlDSElOQQotCi0wNC0xOC0wRiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTA0MTgwRiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDQtMTgtQjYgICAoaGV4KQkJUFJJVkFURQotMDQxOEI2ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wNC0xRC0xMCAgIChoZXgpCQlEcmVhbSBXYXJlIEluYy4KLTA0MUQxMCAgICAgKGJhc2UgMTYpCQlEcmVhbSBXYXJlIEluYy4KLQkJCQk1LTIzLTcgTWFzdWdhdGEsIFRhbWEta3UsCi0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjE0LTAwMzIKLQkJCQlKQVBBTgotCi0wNC0xRS02NCAgIChoZXgpCQlBcHBsZSwgSW5jCi0wNDFFNjQgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtMjAtOUEgICAoaGV4KQkJUGFuYXNvbmljIEFWQyBOZXR3b3JrcyBDb21wYW55Ci0wNDIwOUEgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIEFWQyBOZXR3b3JrcyBDb21wYW55Ci0JCQkJMS0xNSBNYXRzdW8tY2hvCi0JCQkJS2Fkb21hIENpdHkgT3Nha2EgNTcxLTg1MDQKLQkJCQlKQVBBTgotCi0wNC0yMi0zNCAgIChoZXgpCQlXaXJlbGVzcyBTdGFuZGFyZCBFeHRlbnNpb25zCi0wNDIyMzQgICAgIChiYXNlIDE2KQkJV2lyZWxlc3MgU3RhbmRhcmQgRXh0ZW5zaW9ucwotCQkJCTEzMjIgQ3Jvc3NtYW4gYXZlbnVlCi0JCQkJU3Vubnl2YWxlIENhbGlmb3JuaWEgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LTI2LTA1ICAgKGhleCkJCUdGUiBHZXNlbGxzY2hhZnQgZu+/vXIgUmVnZWx1bmdzdGVjaG5payB1bmQgRW5lcmdpZWVpbnNwYXJ1bmcgbWJICi0wNDI2MDUgICAgIChiYXNlIDE2KQkJR0ZSIEdlc2VsbHNjaGFmdCBm77+9ciBSZWdlbHVuZ3N0ZWNobmlrIHVuZCBFbmVyZ2llZWluc3BhcnVuZyBtYkgKLQkJCQlLYXBlbGxlbndlZyA0MgotCQkJCVZlcmwgIDMzNDE1Ci0JCQkJR0VSTUFOWQotCi0wNC0yQi1CQiAgIChoZXgpCQlQaWNvQ0VMQSwgSW5jLgotMDQyQkJCICAgICAoYmFzZSAxNikJCVBpY29DRUxBLCBJbmMuCi0JCQkJMy04LTMzLCBNb21vY2hpaGFtYQotCQkJCVNhd2FyYS1rdQotCQkJCUZ1a3Vva2EtY2l0eSBGdWt1b2thIDgxNC0wMDAxCi0JCQkJSkFQQU4KLQotMDQtMkYtNTYgICAoaGV4KQkJQVRPQ1MgKFNoZW56aGVuKSBMVEQKLTA0MkY1NiAgICAgKGJhc2UgMTYpCQlBVE9DUyAoU2hlbnpoZW4pIExURAotCQkJCTQvRi4sIEJ1aWxkaW5nIDEwLCBUb25nZnV5dSBJbmR1c3RyeSBab25lLCAKLQkJCQlTaGVuemhlbiAgCi0JCQkJQ0hJTkEKLQotMDQtMzItRjQgICAoaGV4KQkJUGFydHJvbgotMDQzMkY0ICAgICAoYmFzZSAxNikJCVBhcnRyb24KLQkJCQkyMi02LCBTZW9rd29vLWRvbmcKLQkJCQlId2FzZW9uZy1zaSBHeWVvbmdnaS1kbyA0NDUtMTcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTA0LTM2LTA0ICAgKGhleCkJCUd5ZXlvdW5nIEkmVAotMDQzNjA0ICAgICAoYmFzZSAxNikJCUd5ZXlvdW5nIEkmVAotCQkJCTZGLCBXb29zdW5nIEJsZGcuIDEwMDAtMSwgRGFlY2hpLWRvbmcKLQkJCQlHYW5nbmFtLWd1LAotCQkJCVNlb3VsIDEzNS01MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDQtNDYtNjUgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0wNDQ2NjUgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0JCQkJMS0xMC0xLCBIaWdhc2hpa290YXJpCi0JCQkJTmFnYW9rYWt5by1zaGkgS3lvdG8gNjE3LTg1NTUKLQkJCQlKQVBBTgotCi0wNC00Ri1BQSAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLTA0NEZBQSAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC01NS1DQSAgIChoZXgpCQlCcmlWaWV3IChYaWFtZW4pIENvcnAuCi0wNDU1Q0EgICAgIChiYXNlIDE2KQkJQnJpVmlldyAoWGlhbWVuKSBDb3JwLgotCQkJCU5PLjE5OTggV2VzdCBvZiBGYW5nc2hhbiBSb2FkLFhpYW5nIEFuIEJyYW5jaCxUb3JjaCBIaS10ZWNoIGxuZHVzdHJpYWwgRGV2ZWxvcG1lbnQgWm9uZSwKLQkJCQlYaWFtZW4gY2l0eSBGdWppYW4gUHJvdmluY2UgMzYxMTAyCi0JCQkJQ0hJTkEKLQotMDQtNUQtNTYgICAoaGV4KQkJY2FtdHJvbiBpbmR1c3RyaWFsIGluYy4KLTA0NUQ1NiAgICAgKGJhc2UgMTYpCQljYW10cm9uIGluZHVzdHJpYWwgaW5jLgotCQkJCTVGLCBLdWVtLUFoIEIvRCwgMzEtMywgS2FyYWstZG9uZywgU29uZ3BhLWd1Ci0JCQkJU2VvdWwgIDEzOC04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDQtNzAtQkMgICAoaGV4KQkJR2xvYmFsc3RhciBJbmMuCi0wNDcwQkMgICAgIChiYXNlIDE2KQkJR2xvYmFsc3RhciBJbmMuCi0JCQkJNDYxIFMgTWlscGl0YXMgQmx2ZAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC03NC1BMSAgIChoZXgpCQlBbGlnZXJhIEVxdWlwYW1lbnRvcyBEaWdpdGFpcyBMdGRhCi0wNDc0QTEgICAgIChiYXNlIDE2KQkJQWxpZ2VyYSBFcXVpcGFtZW50b3MgRGlnaXRhaXMgTHRkYQotCQkJCUF2LiBQYXJhIDMzMCAvIDMwMgotCQkJCVBvcnRvIEFsZWdyZSBSUyA5MDI0MC01OTAKLQkJCQlCUkFaSUwKLQotMDQtNzUtRjUgICAoaGV4KQkJQ1NTVAotMDQ3NUY1ICAgICAoYmFzZSAxNikJCUNTU1QKLQkJCQlCdWlsZGluZyA2LCBDU1NUIGluZHVzdHJpYWwgcGFyaywgVG9uZyBmdXl1IEluZHVzdHJpYWwgem9uZQotCQkJCUd1YW5nbWluIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwNwotCQkJCUNISU5BCi0KLTA0LTc2LTZFICAgKGhleCkJCUFMUFMgQ28sLiBMdGQuCi0wNDc2NkUgICAgIChiYXNlIDE2KQkJQUxQUyBDbywuIEx0ZC4KLQkJCQk2LTMtMzYgRnVydWthd2FuYWthemF0bywKLQkJCQlPc2FraSBNaXlhZ2ktcHJlZiA5ODktNjE4MQotCQkJCUpBUEFOCi0KLTA0LThBLTE1ICAgKGhleCkJCUF2YXlhLCBJbmMKLTA0OEExNSAgICAgKGJhc2UgMTYpCQlBdmF5YSwgSW5jCi0JCQkJMjExIE1vdW50IEFpcnkgUm9hZCAKLQkJCQlCYXNraW5nIFJpZGdlIE5KIDA3OTIwLTIzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LTk0LUExICAgKGhleCkJCUNBVENIIFRIRSBXSU5EIElOQwotMDQ5NEExICAgICAoYmFzZSAxNikJCUNBVENIIFRIRSBXSU5EIElOQwotCQkJCTEwNzgxIEpBTUVTIFBBWU5FIENPVVJUCi0JCQkJTUFOQVNTQVMgVkEgMjAxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LTlGLTgxICAgKGhleCkJCVNpbWVuYSwgTExDCi0wNDlGODEgICAgIChiYXNlIDE2KQkJU2ltZW5hLCBMTEMKLQkJCQk0NjAzMCBNYW5la2luIFBsYXphCi0JCQkJc3VpdGUgMTUwCi0JCQkJU3RlcmxpbmcgVmlyZ2luaWEgMjAxNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LUEzLUYzICAgKGhleCkJCUVtaWNvbgotMDRBM0YzICAgICAoYmFzZSAxNikJCUVtaWNvbgotCQkJCXNoZWxrb3Zza29lIHNob3NzZSwgNzcKLQkJCQlNb3Njb3cgIDEwNzI0MQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wNC1CMy1CNiAgIChoZXgpCQlTZWFtYXAgKFVLKSBMdGQKLTA0QjNCNiAgICAgKGJhc2UgMTYpCQlTZWFtYXAgKFVLKSBMdGQKLQkJCQlVbml0IDM0LCBUaGUgTWFsdGluZ3MKLQkJCQlDaGFybHRvbiBFc3RhdGUKLQkJCQlTaGVwdG9uIE1hbGxldCBTb21lcnNldCBCQTQgNVFFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDQtQjQtNjYgICAoaGV4KQkJQlNQIENvLiwgTHRkLgotMDRCNDY2ICAgICAoYmFzZSAxNikJCUJTUCBDby4sIEx0ZC4KLQkJCQkxNjItMTAKLQkJCQlHb25nZGFuIERvbmcKLQkJCQlHdW1pIEd5ZXVuZ3NhbmdidWsgRG8gNzMwLTkwMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wNC1DMC01QiAgIChoZXgpCQlUaWdvIEVuZXJneQotMDRDMDVCICAgICAoYmFzZSAxNikJCVRpZ28gRW5lcmd5Ci0JCQkJMTcwIEtub3dsZXMgRHIKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LUMwLTZGICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTA0QzA2RiAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotMDQtQzUtQTQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDRDNUE0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtQzgtODAgICAoaGV4KQkJU2FtdGVjIEluYwotMDRDODgwICAgICAoYmFzZSAxNikJCVNhbXRlYyBJbmMKLQkJCQk1MjAgUGFyayBFYXN0IEJsdmQKLQkJCQlOZXcgQWxiYW55IElOIDQ3MTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC1ERC00QyAgIChoZXgpCQlJUEJsYXplCi0wNERENEMgICAgIChiYXNlIDE2KQkJSVBCbGF6ZQotCQkJCU9sZHZlamVuIDQKLQkJCQlGcmVkZW5zYm9yZyBESyAzNDgwCi0JCQkJREVOTUFSSwotCi0wNC1FMC1DNCAgIChoZXgpCQlUUklVTVBILUFETEVSIEFHCi0wNEUwQzQgICAgIChiYXNlIDE2KQkJVFJJVU1QSC1BRExFUiBBRwotCQkJCUhVTkRJTkdTVFJBQkUgMTFCCi0JCQkJODUwMCBOVVJOQlVSRyA4MAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTA0LUUxLUM4ICAgKGhleCkJCUlNUyBTb2x177+977+9ZXMgZW0gRW5lcmdpYSBMdGRhLgotMDRFMUM4ICAgICAoYmFzZSAxNikJCUlNUyBTb2x177+977+9ZXMgZW0gRW5lcmdpYSBMdGRhLgotCQkJCUF2LiBCZXJuYXJkaW5vIFNpbHZlaXJhIFBhc3Rvcml6YSwgNzIwCi0JCQkJUG9ydG8gQWxlZ3JlIFJTIDkxMTYwLTMxMAotCQkJCUJSQVpJTAotCi0wNC1FMi1GOCAgIChoZXgpCQlBRVAgc3JsCi0wNEUyRjggICAgIChiYXNlIDE2KQkJQUVQIHNybAotCQkJCVZpYSBkZWkgQ29sbGksIDI0MAotCQkJCVNpZ25hIEZpcmVuemUgNTAwNTgKLQkJCQlJVEFMWQotCi0wNC1FNS00OCAgIChoZXgpCQlDb2hkYSBXaXJlbGVzcyBQdHkgTHRkCi0wNEU1NDggICAgIChiYXNlIDE2KQkJQ29oZGEgV2lyZWxlc3MgUHR5IEx0ZAotCQkJCVN1aXRlIDUgLyA4MyBGdWxsYXJ0b24gUm9hZAotCQkJCUtlbnQgVG93biBTb3V0aCBBdXN0cmFsaWEgNTA2NwotCQkJCUFVU1RSQUxJQQotCi0wNC1FNi02MiAgIChoZXgpCQlBY3JvbmFtZSBJbmMuCi0wNEU2NjIgICAgIChiYXNlIDE2KQkJQWNyb25hbWUgSW5jLgotCQkJCTQ4MjIgU3RlcmxpbmcgRHJpdmUKLQkJCQlCb3VsZGVyIENPIDgwMzAxLTIzNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LUZFLTdGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTA0RkU3RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LUZGLTUxICAgKGhleCkJCU5PVkFNRURJQSBJTk5PVklTSU9OIFNQLiBaIE8uTy4KLTA0RkY1MSAgICAgKGJhc2UgMTYpCQlOT1ZBTUVESUEgSU5OT1ZJU0lPTiBTUC4gWiBPLk8uCi0JCQkJV09ETkEgNyAKLQkJCQlLQUxJU1ogV0lFTEtPUE9MU0tBIDYyLTgwMAotCQkJCVBPTEFORAotCi0wOC0wMC0wMSAgIChoZXgpCQlDT01QVVRFUlZJU0lPTiBDT1JQT1JBVElPTgotMDgwMDAxICAgICAoYmFzZSAxNikJCUNPTVBVVEVSVklTSU9OIENPUlBPUkFUSU9OCi0JCQkJMTQgQ1JPU0JZIERSSVZFIE1TIDUtMQotCQkJCUJFREZPUkQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTAyICAgKGhleCkJCUJSSURHRSBDT01NVU5JQ0FUSU9OUyBJTkMuCi0wODAwMDIgICAgIChiYXNlIDE2KQkJQlJJREdFIENPTU1VTklDQVRJT05TIElOQy4KLQkJCQkyMDgxIFNUSUVSTElORyBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMDMgICAoaGV4KQkJQURWQU5DRUQgQ09NUFVURVIgQ09NTS4KLTA4MDAwMyAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBDT01QVVRFUiBDT01NLgotCQkJCTcyMCBTQU5UQSBCQVJCQVJBIFNULgotCQkJCVNBTlRBIEJBUkJBUkEgQ0EgOTMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTA0ICAgKGhleCkJCUNST01FTUNPIElOQ09SUE9SQVRFRAotMDgwMDA0ICAgICAoYmFzZSAxNikJCUNST01FTUNPIElOQ09SUE9SQVRFRAotCQkJCTI4MCBCRVJOQVJETyBBVkVOVUUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wNSAgIChoZXgpCQlTWU1CT0xJQ1MgSU5DLgotMDgwMDA1ICAgICAoYmFzZSAxNikJCVNZTUJPTElDUyBJTkMuCi0JCQkJMjU3IFZBU1NBUiBTVFJFRVQKLQkJCQlDQU1CUklER0UgTUEgMDIxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTA2ICAgKGhleCkJCVNJRU1FTlMgQUcKLTA4MDAwNiAgICAgKGJhc2UgMTYpCQlTSUVNRU5TIEFHCi0JCQkJU2llbWVucyBJVCBTb2x1dGlvbnMgYW5kIFNlcnZpY2VzLCBTSVMgR08gUU0gTwotCQkJCVNpZW1lbnNzdHJhc3NlIDItNAotCQkJCVBPQiAyMzUzIEZ1ZXJ0aCA5MDcxMwotCQkJCUdFUk1BTlkKLQotMDgtMDAtMDcgICAoaGV4KQkJQVBQTEUgQ09NUFVURVIgSU5DLgotMDgwMDA3ICAgICAoYmFzZSAxNikJCUFQUExFIENPTVBVVEVSIElOQy4KLQkJCQkyMDY1MCBWQUxMRVkgR1JFRU4gRFJJVkUKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTA4ICAgKGhleCkJCUJPTFQgQkVSQU5FSyBBTkQgTkVXTUFOIElOQy4KLTA4MDAwOCAgICAgKGJhc2UgMTYpCQlCT0xUIEJFUkFORUsgQU5EIE5FV01BTiBJTkMuCi0JCQkJNzAgRkFXQ0VUVCBTVFJFRVQKLQkJCQlDQU1CUklER0UgTUEgMDIxMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTA5ICAgKGhleCkJCUhFV0xFVFQgUEFDS0FSRAotMDgwMDA5ICAgICAoYmFzZSAxNikJCUhFV0xFVFQgUEFDS0FSRAotCQkJCUVOVEVSUFJJU0UgU1lTVEVNUyBURUNILkNFTlRFUgotCQkJCTExMDAwIFdPTEZFIFJPQUQKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTBBICAgKGhleCkJCU5FU1RBUiBTWVNURU1TIElOQ09SUE9SQVRFRAotMDgwMDBBICAgICAoYmFzZSAxNikJCU5FU1RBUiBTWVNURU1TIElOQ09SUE9SQVRFRAotCQkJCTI1ODUgRUFTVCBCQVlTSE9SRSBST0FECi0JCQkJUEFMTyBBTFRPIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wQiAgIChoZXgpCQlVTklTWVMgQ09SUE9SQVRJT04KLTA4MDAwQiAgICAgKGJhc2UgMTYpCQlVTklTWVMgQ09SUE9SQVRJT04KLQkJCQlUT1dOU0hJUCBMSU5FIFJPQUQKLQkJCQlCTFVFIEJFTEwgUEEgMTk0MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTBDICAgKGhleCkJCU1JS0xZTiBERVZFTE9QTUVOVCBDTy4KLTA4MDAwQyAgICAgKGJhc2UgMTYpCQlNSUtMWU4gREVWRUxPUE1FTlQgQ08uCi0JCQkJMzYxMyBBTkRPVkVSIERJVkUKLQkJCQlCRURGT1JEIFRYIDc2MDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wRCAgIChoZXgpCQlJTlRFUk5BVElPTkFMIENPTVBVVEVSUyBMVEQuCi0wODAwMEQgICAgIChiYXNlIDE2KQkJSU5URVJOQVRJT05BTCBDT01QVVRFUlMgTFRELgotCQkJCVdFTkxPQ0sgV0FZCi0JCQkJV0VTVCBHT1JUT04gTUFOQ0hFU1RFUiwgIE0xMiAgNURSCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC0wRSAgIChoZXgpCQlOQ1IgQ09SUE9SQVRJT04KLTA4MDAwRSAgICAgKGJhc2UgMTYpCQlOQ1IgQ09SUE9SQVRJT04KLQkJCQlXT1JMRCBIRUFEUVVBUlRFUlMKLQkJCQlEQVlUT04gT0ggNDU0NzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTBGICAgKGhleCkJCU1JVEVMIENPUlBPUkFUSU9OCi0wODAwMEYgICAgIChiYXNlIDE2KQkJTUlURUwgQ09SUE9SQVRJT04KLQkJCQkzNTAgTEVHR0VUIERSSVZFCi0JCQkJUC5PLiBCT1ggMTMwODkgS0FOQVRBIE9OVEFSSU8KLQkJCQlDQU5BREEgSzJLIDFYMwotCQkJCUNBTkFEQQotCi0wOC0wMC0xMSAgIChoZXgpCQlURUtUUk9OSVggSU5DLgotMDgwMDExICAgICAoYmFzZSAxNikJCVRFS1RST05JWCBJTkMuCi0JCQkJVEVDSE5JQ0FMIFNUQU5EQVJEUwotCQkJCTEzOTc1IFNXIEtBUkwgQlJBVU4gRFJJVkUgUE8gQk9YIDUwMCwgIE0KLQkJCQlCRUFWRVJUT04gT1IgOTcwNzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTEyICAgKGhleCkJCUJFTEwgQVRMQU5USUMgSU5URUdSQVRFRCBTWVNULgotMDgwMDEyICAgICAoYmFzZSAxNikJCUJFTEwgQVRMQU5USUMgSU5URUdSQVRFRCBTWVNULgotCQkJCTQwIFRBTEwgUElORSBEUklWRQotCQkJCVNVREJVUlkgTUEgMDE3NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTEzICAgKGhleCkJCUVYWE9OCi0wODAwMTMgICAgIChiYXNlIDE2KQkJRVhYT04KLQkJCQkKLQotMDgtMDAtMTQgICAoaGV4KQkJRVhDRUxBTgotMDgwMDE0ICAgICAoYmFzZSAxNikJCUVYQ0VMQU4KLQkJCQkxNTk5IEZMSUNLSU5HRVIgQVZFTlVFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTE1ICAgKGhleCkJCVNUQyBCVVNJTkVTUyBTWVNURU1TCi0wODAwMTUgICAgIChiYXNlIDE2KQkJU1RDIEJVU0lORVNTIFNZU1RFTVMKLQkJCQlIT0xCUk9PSyBIT1VTRQotCQkJCUNPQ0tGT1NURVJTIFJPQUQgQ09DS0ZPU1RFUlMgSEVSVFMgRU40IE8KLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTA4LTAwLTE2ICAgKGhleCkJCUJBUlJJU1RFUiBJTkZPIFNZUyBDT1JQCi0wODAwMTYgICAgIChiYXNlIDE2KQkJQkFSUklTVEVSIElORk8gU1lTIENPUlAKLQkJCQlPTkUgVEVDSE5PTE9HWSBDRU5URVIKLQkJCQk0NSBPQUsgU1RSRUVUCi0JCQkJQlVGRkFMTyBOWSAxNDIwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMTcgICAoaGV4KQkJTkFUSU9OQUwgU0VNSUNPTkRVQ1RPUgotMDgwMDE3ICAgICAoYmFzZSAxNikJCU5BVElPTkFMIFNFTUlDT05EVUNUT1IKLQkJCQkyOTAwIFNFTUlDT05EVUNUT1IgRFJJVkUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMTggICAoaGV4KQkJUElSRUxMSSBGT0NPTSBORVRXT1JLUwotMDgwMDE4ICAgICAoYmFzZSAxNikJCVBJUkVMTEkgRk9DT00gTkVUV09SS1MKLQkJCQlERU5UT04gRFJJVkUKLQkJCQlOT1JUSFdJQ0ggQ0hFU0hJUkUgICAgICBDVzkgN0xVCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTA4LTAwLTE5ICAgKGhleCkJCUdFTkVSQUwgRUxFQ1RSSUMgQ09SUE9SQVRJT04KLTA4MDAxOSAgICAgKGJhc2UgMTYpCQlHRU5FUkFMIEVMRUNUUklDIENPUlBPUkFUSU9OCi0JCQkJMTI4NSBCT1NUT04gQVZFTlVFCi0JCQkJQlJJREdFUE9SVCBDVCAwNjYwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMUEgICAoaGV4KQkJVElBUkEvIDEwTkVUCi0wODAwMUEgICAgIChiYXNlIDE2KQkJVElBUkEvIDEwTkVUCi0JCQkJNzc3NyBXQVNISU5HVE9OIFZJTExBR0UgRFJJVkUKLQkJCQlTVUlURSAyMDAKLQkJCQlEQVlUT04gT0hJTyA0NTQ1OS0zOTU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0xQiAgIChoZXgpCQlFTUMgQ29ycG9yYXRpb24KLTA4MDAxQiAgICAgKGJhc2UgMTYpCQlFTUMgQ29ycG9yYXRpb24KLQkJCQkxNzYgU291dGggU3RyZWV0Ci0JCQkJSG9wa2ludG9uIE1BIDAxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0xQyAgIChoZXgpCQlLREQtS09LVVNBSSBERUJOU0lOIERFTldBIENPLgotMDgwMDFDICAgICAoYmFzZSAxNikJCUtERC1LT0tVU0FJIERFQk5TSU4gREVOV0EgQ08uCi0JCQkJRlVKSSBYRVJPWCBDTy4sIExURC4gVEVMRUdSQVBICi0JCQkJTk8uIDMtNSwgQUtBU0FLQSAzLUNIT01FIE1JTkFUTy1LVSwgVE9LWQotCQkJCTEwNyBKQVBBTgotCQkJCUpBUEFOCi0KLTA4LTAwLTFEICAgKGhleCkJCUFCTEUgQ09NTVVOSUNBVElPTlMgSU5DLgotMDgwMDFEICAgICAoYmFzZSAxNikJCUFCTEUgQ09NTVVOSUNBVElPTlMgSU5DLgotCQkJCTE3ODkxIENBUlRXUklHSFQgUk9BRAotCQkJCUlSVklORSBDQSA5MjcxNC02MjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0xRSAgIChoZXgpCQlBUE9MTE8gQ09NUFVURVIgSU5DLgotMDgwMDFFICAgICAoYmFzZSAxNikJCUFQT0xMTyBDT01QVVRFUiBJTkMuCi0JCQkJMTUgRUxJWkFCRVRIIERSSVZFCi0JCQkJQ0hFTE1TRk9SRCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMUYgICAoaGV4KQkJU0hBUlAgQ09SUE9SQVRJT04KLTA4MDAxRiAgICAgKGJhc2UgMTYpCQlTSEFSUCBDT1JQT1JBVElPTgotCQkJCUVOR0lORUVSSU5HIERFUEFSVE1FTlQgNgotCQkJCTQ5MiBNSU5PU0hPLUNITyBZQU1BVE9LT09SSVlNQS1TSEksCi0JCQkJTkFSQSA2MzktMTEgSkFQQU4KLQkJCQlKQVBBTgotCi0wOC0wMC0yMCAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTA4MDAyMCAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJTWVubG8gUGFyayBDQSA5NTAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMjEgICAoaGV4KQkJM00gQ09NUEFOWQotMDgwMDIxICAgICAoYmFzZSAxNikJCTNNIENPTVBBTlkKLQkJCQlUZWxlY29tIERpdmlzaW9uCi0JCQkJNjgwMSBSaXZlciBQbGFjZSBCb3VsZXZhcmQKLQkJCQlBdXN0aW4gVFggNzg3MjYtOTAwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMjIgICAoaGV4KQkJTkJJIElOQy4KLTA4MDAyMiAgICAgKGJhc2UgMTYpCQlOQkkgSU5DLgotCQkJCTM0NTAgTUlUQ0hFTEwgTEFORQotCQkJCVAuTy4gQk9YIDkwMDEKLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0yMyAgIChoZXgpCQlQYW5hc29uaWMgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wODAwMjMgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTQtMS02MiBNaW5vc2hpbWEgSGFrYXRhIEZ1a3Vva2EKLQkJCQk4MTItODUzMQotCQkJCUpBUEFOCi0KLTA4LTAwLTI0ICAgKGhleCkJCTEwTkVUIENPTU1VTklDQVRJT05TL0RDQQotMDgwMDI0ICAgICAoYmFzZSAxNikJCTEwTkVUIENPTU1VTklDQVRJT05TL0RDQQotCQkJCTc3NzcgV0FTSElOR1RPTiBWSUxMQUdFIERSLgotCQkJCVNVSVRFIDIwMAotCQkJCURBWVRPTiBPSCA0NTQ1OS0zOTU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0yNSAgIChoZXgpCQlDT05UUk9MIERBVEEKLTA4MDAyNSAgICAgKGJhc2UgMTYpCQlDT05UUk9MIERBVEEKLQkJCQk0MjAxIExFWElOR1RPTiBBVkUgTk9SVEgKLQkJCQlBUkRFTiBISUxMUyBNTiA1NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMjYgICAoaGV4KQkJTk9SU0sgREFUQSBBLlMuCi0wODAwMjYgICAgIChiYXNlIDE2KQkJTk9SU0sgREFUQSBBLlMuCi0JCQkJUC5PLiBCT1ggMjUgQk9HRVJVRAotCQkJCU9TTE8gNgotCQkJCU5PUldBWQotCQkJCU5PUldBWQotCi0wOC0wMC0yNyAgIChoZXgpCQlDQURNVVMgQ09NUFVURVIgU1lTVEVNUwotMDgwMDI3ICAgICAoYmFzZSAxNikJCUNBRE1VUyBDT01QVVRFUiBTWVNURU1TCi0JCQkJNjAwIFNVRkZPTEsgU1QKLQkJCQlMT1dFTEwgTUEgMDgxNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTI4ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wODAwMjggICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlNL1MgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMjkgICAoaGV4KQkJTUVHQVRFSyBDT1JQT1JBVElPTgotMDgwMDI5ICAgICAoYmFzZSAxNikJCU1FR0FURUsgQ09SUE9SQVRJT04KLQkJCQk5NjQ1IFNDUkFOVE9OIFJPQUQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTJBICAgKGhleCkJCU1PU0FJQyBURUNITk9MT0dJRVMgSU5DLgotMDgwMDJBICAgICAoYmFzZSAxNikJCU1PU0FJQyBURUNITk9MT0dJRVMgSU5DLgotCQkJCTQ3IE1BTk5JTkcgUk9BRAotCQkJCUJJTExFUklDQSBNQSAwMTgyMS0zOTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0yQiAgIChoZXgpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotMDgwMDJCICAgICAoYmFzZSAxNikJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0JCQkJTEtHIDEtMi9BMTkKLQkJCQk1NTAgS0lORyBTVFJFRVQKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAtMTI4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMkMgICAoaGV4KQkJQlJJVFRPTiBMRUUgSU5DLgotMDgwMDJDICAgICAoYmFzZSAxNikJCUJSSVRUT04gTEVFIElOQy4KLQkJCQkxNDYwMCBXSU5DSEVTVEVSIEJMVkQKLQkJCQlMT1MgR0FUT1MgQ0EgOTUwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTJEICAgKGhleCkJCUxBTi1URUMgSU5DLgotMDgwMDJEICAgICAoYmFzZSAxNikJCUxBTi1URUMgSU5DLgotCQkJCTIxMzEgVU5JVkVSU0lUWSBBVkVOVUUKLQkJCQlCRVJLRUxFWSBDQSA5NDcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMkUgICAoaGV4KQkJTUVUQVBIT1IgQ09NUFVURVIgU1lTVEVNUwotMDgwMDJFICAgICAoYmFzZSAxNikJCU1FVEFQSE9SIENPTVBVVEVSIFNZU1RFTVMKLQkJCQkyNTAwIEdBUkNJQSBBVkVOVUUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0yRiAgIChoZXgpCQlQUklNRSBDT01QVVRFUiBJTkMuCi0wODAwMkYgICAgIChiYXNlIDE2KQkJUFJJTUUgQ09NUFVURVIgSU5DLgotCQkJCTEwMCBDUk9TQlkgRFJJVkUKLQkJCQlCRURGT1JEIE1BIDAxNzMwLTE0MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTMwICAgKGhleCkJCU5FVFdPUksgUkVTRUFSQ0ggQ09SUE9SQVRJT04KLTA4MDAzMCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFJFU0VBUkNIIENPUlBPUkFUSU9OCi0JCQkJMjM4MCBOLiBST1NFIEFWRU5VRQotCQkJCU9YTkFSRCBDQSA5MzAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMzAgICAoaGV4KQkJQ0VSTgotMDgwMDMwICAgICAoYmFzZSAxNikJCUNFUk4KLQkJCQlDSC0xMjExIEdFTkVWRSAyMwotCQkJCVNVSVNTRS9TV0lUWgotCQkJCVNXSVRaRVJMQU5ECi0KLTA4LTAwLTMwICAgKGhleCkJCVJPWUFMIE1FTEJPVVJORSBJTlNUIE9GIFRFQ0gKLTA4MDAzMCAgICAgKGJhc2UgMTYpCQlST1lBTCBNRUxCT1VSTkUgSU5TVCBPRiBURUNICi0JCQkJR1BPIEJPWCAyNDc2VgotCQkJCU1FTEJPVVJORSBWSUMgMzAwMQotCQkJCUFVU1RSQUxJQQotCi0wOC0wMC0zMSAgIChoZXgpCQlMSVRUTEUgTUFDSElORVMgSU5DLgotMDgwMDMxICAgICAoYmFzZSAxNikJCUxJVFRMRSBNQUNISU5FUyBJTkMuCi0JCQkJNDE0MSBKVVRMQU5EIERSSVZFCi0JCQkJU0FOIERJRUdPIENBIDkyMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0zMiAgIChoZXgpCQlUSUdBTiBJTkNPUlBPUkFURUQKLTA4MDAzMiAgICAgKGJhc2UgMTYpCQlUSUdBTiBJTkNPUlBPUkFURUQKLQkJCQk0MDIwIEZBQklBTiBXQVkKLQkJCQlTVUlURSBECi0JCQkJUEFMTyBBTFRPIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0zMyAgIChoZXgpCQlCQVVTQ0ggJiBMT01CCi0wODAwMzMgICAgIChiYXNlIDE2KQkJQkFVU0NIICYgTE9NQgotCQkJCUlOVEVSQUNUSVZFIEdSQVBISUNTIERJVklTSU9OCi0JCQkJUC5PLiBCT1ggMTQ1NDcKLQkJCQlBVVNJVE4gVFggNzg2NzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTM0ICAgKGhleCkJCUZJTEVORVQgQ09SUE9SQVRJT04KLTA4MDAzNCAgICAgKGJhc2UgMTYpCQlGSUxFTkVUIENPUlBPUkFUSU9OCi0JCQkJMTU3NSBDT1JQT1JBVEUgRFJJVkUKLQkJCQlDT1NUQSBNRVNBIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0zNSAgIChoZXgpCQlNSUNST0ZJVkUgQ09SUE9SQVRJT04KLTA4MDAzNSAgICAgKGJhc2UgMTYpCQlNSUNST0ZJVkUgQ09SUE9SQVRJT04KLQkJCQkzNTYwIEhZTEFORCBBVkVOVUUKLQkJCQlQLk8uIEJPWCA1MDExCi0JCQkJQ09TVEEgTUVTQSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMzYgICAoaGV4KQkJSU5URVJHUkFQSCBDT1JQT1JBVElPTgotMDgwMDM2ICAgICAoYmFzZSAxNikJCUlOVEVSR1JBUEggQ09SUE9SQVRJT04KLQkJCQlPTkUgTUFESVNPTiBJTkRVU1RSSUFMIFBBUksKLQkJCQlIVU5UU1ZJTExFIEFMIDM1ODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0zNyAgIChoZXgpCQlGVUpJLVhFUk9YIENPLiBMVEQuCi0wODAwMzcgICAgIChiYXNlIDE2KQkJRlVKSS1YRVJPWCBDTy4gTFRELgotCQkJCUFEVkFOQ0VEIFRFQ0ggJiBFTkcnRyBDRU5URVIKLQkJCQk5LTUwIENIVU8gMi1DSE9NRSwgRUJJTkEtU0hJIEtBTkFHQVdBIDI0Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wOC0wMC0zOCAgIChoZXgpCQlCVUxMIFMuQS5TLgotMDgwMDM4ICAgICAoYmFzZSAxNikJCUJVTEwgUy5BLlMuCi0JCQkJcnVlIEplYW4gSmF1cmVzIEIuUC42OAotCQkJCUxlcyBDbGF5ZXMgc291cyBCb2lzICA3ODQzMAotCQkJCUZSQU5DRQotCi0wOC0wMC0zOSAgIChoZXgpCQlTUElERVIgU1lTVEVNUyBMSU1JVEVECi0wODAwMzkgICAgIChiYXNlIDE2KQkJU1BJREVSIFNZU1RFTVMgTElNSVRFRAotCQkJCVNQSURFUiBQQVJLCi0JCQkJU1RBTldFTEwgU1RSRUVUIEVESU5CVVJHSCBFSDYgNU5HCi0JCQkJU0NPVExBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC0zQSAgIChoZXgpCQlPUkNBVEVDSCBJTkMuCi0wODAwM0EgICAgIChiYXNlIDE2KQkJT1JDQVRFQ0ggSU5DLgotCQkJCTI2ODAgUVVFRU5TVklFVyBEUklWRQotCQkJCU9UVEFXQSBPTlRBUklPCi0JCQkJQ0FOQURBIEsyQiA4SDYKLQkJCQlDQU5BREEKLQotMDgtMDAtM0IgICAoaGV4KQkJVE9SVVMgU1lTVEVNUyBMSU1JVEVECi0wODAwM0IgICAgIChiYXNlIDE2KQkJVE9SVVMgU1lTVEVNUyBMSU1JVEVECi0JCQkJU0NJRU5DRSBQQVJLCi0JCQkJTUlMVE9OIFJPQUQgQ0FNQlJJREdFIENCNCA0QkgKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTA4LTAwLTNDICAgKGhleCkJCVNDSExVTUJFUkdFUiBXRUxMIFNFUlZJQ0VTCi0wODAwM0MgICAgIChiYXNlIDE2KQkJU0NITFVNQkVSR0VSIFdFTEwgU0VSVklDRVMKLQkJCQlBVVNUSU4gRU5HSU5FRVJJTkcgU0VSVklDRVMKLQkJCQlQLk8uIEJPWCAyMDAwMTUKLQkJCQlBVVNUSU4gVFggNzg3MjAtMDAxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtM0QgICAoaGV4KQkJQ0FETkVUSVggQ09SUE9SQVRJT05TCi0wODAwM0QgICAgIChiYXNlIDE2KQkJQ0FETkVUSVggQ09SUE9SQVRJT05TCi0JCQkJNTc5NyBDRU5UUkFMIEFWRU5VRQotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTNFICAgKGhleCkJCUNPREVYIENPUlBPUkFUSU9OCi0wODAwM0UgICAgIChiYXNlIDE2KQkJQ09ERVggQ09SUE9SQVRJT04KLQkJCQk1MCBFQVNUIENPTU1FUkNFIERSSVZFCi0JCQkJU1VJVEUgIE0xCi0JCQkJU0NIQVVNQlVSRyBJTCA2MDE3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtM0YgICAoaGV4KQkJRlJFRCBLT1NDSEFSQSBFTlRFUlBSSVNFUwotMDgwMDNGICAgICAoYmFzZSAxNikJCUZSRUQgS09TQ0hBUkEgRU5URVJQUklTRVMKLQkJCQkKLQotMDgtMDAtNDAgICAoaGV4KQkJRkVSUkFOVEkgQ09NUFVURVIgU1lTLiBMSU1JVEVECi0wODAwNDAgICAgIChiYXNlIDE2KQkJRkVSUkFOVEkgQ09NUFVURVIgU1lTLiBMSU1JVEVECi0JCQkJV1lUSEVOU0hBV0UgRElWSVNJT04KLQkJCQlXRVNURVJOIFJPQUQgQlJBQ0tORUxMIFJHMTIgMVJBCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC00MSAgIChoZXgpCQlSQUNBTC1NSUxHTyBJTkZPUk1BVElPTiBTWVMuLgotMDgwMDQxICAgICAoYmFzZSAxNikJCVJBQ0FMLU1JTEdPIElORk9STUFUSU9OIFNZUy4uCi0JCQkJNDAwIEVNQkFTU1kgUk9XCi0JCQkJU1VJVEUgMzAwCi0JCQkJQVRMQU5UQSBHQSAzMDMyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNDIgICAoaGV4KQkJSkFQQU4gTUFDTklDUyBDT1JQLgotMDgwMDQyICAgICAoYmFzZSAxNikJCUpBUEFOIE1BQ05JQ1MgQ09SUC4KLQkJCQkKLQkJCQlKQVBBTgotCi0wOC0wMC00MyAgIChoZXgpCQlQSVhFTCBDT01QVVRFUiBJTkMuCi0wODAwNDMgICAgIChiYXNlIDE2KQkJUElYRUwgQ09NUFVURVIgSU5DLgotCQkJCTI2MCBGT1JESEFNIFJPQUQKLQkJCQlXSUxNSU5HVE9OIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00NCAgIChoZXgpCQlEQVZJRCBTWVNURU1TIElOQy4KLTA4MDA0NCAgICAgKGJhc2UgMTYpCQlEQVZJRCBTWVNURU1TIElOQy4KLQkJCQk2MTUgVEFTTUFOIERSSVZFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00NSAgIChoZXgpCQlDT05DVVJSRU5UIENPTVBVVEVSIENPUlAuCi0wODAwNDUgICAgIChiYXNlIDE2KQkJQ09OQ1VSUkVOVCBDT01QVVRFUiBDT1JQLgotCQkJCTIgQ1JFU0NFTlQgUExBQ0UKLQkJCQlPQ0VBTlBPUlQgTkogMDc3NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTQ2ICAgKGhleCkJCVNvbnkgQ29ycG9yYXRpb24KLTA4MDA0NiAgICAgKGJhc2UgMTYpCQlTb255IENvcnBvcmF0aW9uCi0JCQkJR290ZW55YW1hIFRlYywgNS0xLTIgS2l0YXNoaW5hZ2F3YQotCQkJCVNoaW5hZ2F3YS1rdQotCQkJCVRva3lvICAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTA4LTAwLTQ3ICAgKGhleCkJCVNFUVVFTlQgQ09NUFVURVIgU1lTVEVNUyBJTkMuCi0wODAwNDcgICAgIChiYXNlIDE2KQkJU0VRVUVOVCBDT01QVVRFUiBTWVNURU1TIElOQy4KLQkJCQkxNTQ1MCBTLlcuIEtPTEwgUEFSS1dBWSAgIC4KLQkJCQlNQUlMU1RPUCBDT0wyLTgzMQotCQkJCUJFQVZFUlRPTiBPUiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNDggICAoaGV4KQkJRVVST1RIRVJNIEdBVUdJTkcgU1lTVEVNUwotMDgwMDQ4ICAgICAoYmFzZSAxNikJCUVVUk9USEVSTSBHQVVHSU5HIFNZU1RFTVMKLQkJCQk5MDAgTUlERExFU0VYIFRVUk5QSUtFLCBCREcuIDYKLQkJCQlCSUxMRVJJQ0EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTQ5ICAgKGhleCkJCVVOSVZBVElPTgotMDgwMDQ5ICAgICAoYmFzZSAxNikJCVVOSVZBVElPTgotCQkJCTEwMzcgTk9SVEggRkFJUiBPQUtTIEFWRS4KLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTRBICAgKGhleCkJCUJBTllBTiBTWVNURU1TIElOQy4KLTA4MDA0QSAgICAgKGJhc2UgMTYpCQlCQU5ZQU4gU1lTVEVNUyBJTkMuCi0JCQkJMTM1IEZMQU5ERVJTIFJPQUQKLQkJCQlXRVNUQk9STyBNQSAwMTU4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNEIgICAoaGV4KQkJUExBTk5JTkcgUkVTRUFSQ0ggQ09SUC4KLTA4MDA0QiAgICAgKGJhc2UgMTYpCQlQTEFOTklORyBSRVNFQVJDSCBDT1JQLgotCQkJCTFESFMgU1lTVEVNUwotCQkJCTE1MDggS0VOTkVEWSBEUklWRS1TVEUjMjE1Ci0JCQkJQkVMTEVWVUUgTkUgNjgtLTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTRDICAgKGhleCkJCUhZRFJBIENPTVBVVEVSIFNZU1RFTVMgSU5DLgotMDgwMDRDICAgICAoYmFzZSAxNikJCUhZRFJBIENPTVBVVEVSIFNZU1RFTVMgSU5DLgotCQkJCTEyIE1FUkNFUiBST0FECi0JCQkJTkFUSUNLIE1BIDAxNzYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00RCAgIChoZXgpCQlDT1JWVVMgU1lTVEVNUyBJTkMuCi0wODAwNEQgICAgIChiYXNlIDE2KQkJQ09SVlVTIFNZU1RFTVMgSU5DLgotCQkJCTIxMDAgQ09SVlVTIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTRFICAgKGhleCkJCTNDT00gRVVST1BFIExURC4KLTA4MDA0RSAgICAgKGJhc2UgMTYpCQkzQ09NIEVVUk9QRSBMVEQuCi0JCQkJM0NPTSBDRU5UUkUKLQkJCQlCT1VOREFSWSBXQVksIEhFTUVMIEhFTVBTVEVBRCBIRVJURk9SU0hJCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC00RiAgIChoZXgpCQlDWUdORVQgU1lTVEVNUwotMDgwMDRGICAgICAoYmFzZSAxNikJCUNZR05FVCBTWVNURU1TCi0JCQkJMjU2MCBKVU5DVElPTiBBVkVOVUUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNTAgICAoaGV4KQkJREFJU1kgU1lTVEVNUyBDT1JQLgotMDgwMDUwICAgICAoYmFzZSAxNikJCURBSVNZIFNZU1RFTVMgQ09SUC4KLQkJCQkxMzkgS0lGRVIgQ09VUlQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTUxICAgKGhleCkJCUVYUEVSREFUQQotMDgwMDUxICAgICAoYmFzZSAxNikJCUVYUEVSREFUQQotCQkJCTg4LCBSVUUgQlJJTExBVCBTQVZBUklOCi0JCQkJNzUwMTMgUEFSSVMKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDgtMDAtNTIgICAoaGV4KQkJSU5TWVNURUMKLTA4MDA1MiAgICAgKGJhc2UgMTYpCQlJTlNZU1RFQwotCQkJCTQ1MCBMQUtFTU9OVCBBVkVOVUUKLQkJCQlXSU5URVIgUEFSSyBGTCAzMjc5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNTMgICAoaGV4KQkJTUlERExFIEVBU1QgVEVDSC4gVU5JVkVSU0lUWQotMDgwMDUzICAgICAoYmFzZSAxNikJCU1JRERMRSBFQVNUIFRFQ0guIFVOSVZFUlNJVFkKLQkJCQlERVBBUlRNRU5UIE9GCi0JCQkJQ09NUFVURVIgRU5HSU5FRVJJTkcKLQkJCQlBTktBUkEgVFVSS0VZCi0JCQkJVFVSS0VZCi0KLTA4LTAwLTU1ICAgKGhleCkJCVNUQU5GT1JEIFRFTEVDT01NLiBJTkMuCi0wODAwNTUgICAgIChiYXNlIDE2KQkJU1RBTkZPUkQgVEVMRUNPTU0uIElOQy4KLQkJCQkxMjIxIENST1NTTUFOCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01NiAgIChoZXgpCQlTVEFORk9SRCBMSU5FQVIgQUNDRUwuIENFTlRFUgotMDgwMDU2ICAgICAoYmFzZSAxNikJCVNUQU5GT1JEIExJTkVBUiBBQ0NFTC4gQ0VOVEVSCi0JCQkJMjU3NSBTQU5ESElMTCBST0FECi0JCQkJTUVOTE8gUEFSSyBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNTcgICAoaGV4KQkJRVZBTlMgJiBTVVRIRVJMQU5ECi0wODAwNTcgICAgIChiYXNlIDE2KQkJRVZBTlMgJiBTVVRIRVJMQU5ECi0JCQkJUC5PLiBCT1ggODcwMAotCQkJCTU4MCBBUkFQRUVOIERSSVZFCi0JCQkJU0FMVCBMQUtFIENJVFkgVVQgODQxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTU4ICAgKGhleCkJCVNZU1RFTVMgQ09OQ0VQVFMKLTA4MDA1OCAgICAgKGJhc2UgMTYpCQlTWVNURU1TIENPTkNFUFRTCi0JCQkJNTIwIFRISVJEIFNUUkVFVAotCQkJCVNBTiBGUkFOQ0lTQ08gQ0EgOTQxMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTU5ICAgKGhleCkJCUEvUyBNWUNST04KLTA4MDA1OSAgICAgKGJhc2UgMTYpCQlBL1MgTVlDUk9OCi0JCQkJUE8gQk9YIDYxOTkKLQkJCQlOLTA2MDIgT1NMTyA2Ci0JCQkJTk9SV0FZCi0JCQkJTk9SV0FZCi0KLTA4LTAwLTVBICAgKGhleCkJCUlCTSBDb3JwCi0wODAwNUEgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTVCICAgKGhleCkJCVZUQSBURUNITk9MT0dJRVMgSU5DLgotMDgwMDVCICAgICAoYmFzZSAxNikJCVZUQSBURUNITk9MT0dJRVMgSU5DLgotCQkJCTIwNDAgU0hFUk1BTiBTVFJFRVQKLQkJCQlIT0xMWVdPT0QgRkwgMzMwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTVDICAgKGhleCkJCUZPVVIgUEhBU0UgU1lTVEVNUwotMDgwMDVDICAgICAoYmFzZSAxNikJCUZPVVIgUEhBU0UgU1lTVEVNUwotCQkJCTIwMDEgTE9HSUMgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEyNC0zNDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01RCAgIChoZXgpCQlHT1VMRCBJTkMuCi0wODAwNUQgICAgIChiYXNlIDE2KQkJR09VTEQgSU5DLgotCQkJCTY5MDEgV0VTVCBTVU5SSVNFIEJMVkQuCi0JCQkJUC5PLiBCT1ggOTE0OAotCQkJCUZULiBMQVVERVJEQUxFIEZMIDMzMzEwLTkxNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTVFICAgKGhleCkJCUNPVU5URVJQT0lOVCBDT01QVVRFUiBJTkMuCi0wODAwNUUgICAgIChiYXNlIDE2KQkJQ09VTlRFUlBPSU5UIENPTVBVVEVSIElOQy4KLQkJCQkyMTI3IFJJTkdXT09EIEFWRU5VRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01RiAgIChoZXgpCQlTQUJFUiBURUNITk9MT0dZIENPUlAuCi0wODAwNUYgICAgIChiYXNlIDE2KQkJU0FCRVIgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTIzODEgQkVSSU5HIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEtMTEyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNjAgICAoaGV4KQkJSU5EVVNUUklBTCBORVRXT1JLSU5HIElOQy4KLTA4MDA2MCAgICAgKGJhc2UgMTYpCQlJTkRVU1RSSUFMIE5FVFdPUktJTkcgSU5DLgotCQkJCTM5OTAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNjEgICAoaGV4KQkJSkFST0dBVEUgTFRELgotMDgwMDYxICAgICAoYmFzZSAxNikJCUpBUk9HQVRFIExURC4KLQkJCQkxOTctMjEzIExZSEFNIFJPQUQKLQkJCQlCUklTVE9OIExPTkRPTiBTVzIgNVBZCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC02MiAgIChoZXgpCQlHRU5FUkFMIERZTkFNSUNTCi0wODAwNjIgICAgIChiYXNlIDE2KQkJR0VORVJBTCBEWU5BTUlDUwotCQkJCUZPUlQgV09SVEggRElWSVNJT04KLQkJCQlQLk8uIEJPWCA3NDgKLQkJCQlGVC4gV09SVEggVFggNzYxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTYzICAgKGhleCkJCVBMRVNTRVkKLTA4MDA2MyAgICAgKGJhc2UgMTYpCQlQTEVTU0VZCi0JCQkJUExFU1NFWSAtIFVLIExJTUlURUQKLQkJCQkxNjctNTUgMTQ4VEggQVZFTlVFCi0JCQkJSkFNQUlDQSBOWSAxMTQzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNjQgICAoaGV4KQkJQVVUT1BIT04gQUcKLTA4MDA2NCAgICAgKGJhc2UgMTYpCQlBVVRPUEhPTiBBRwotCQkJCUFCVC4gVFpNIDMwNwotCQkJCVpJRUdFTE1BVFRTVFJBU1NFIDEtMTUgNDUwMyBTT0xPVEhVUk4KLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTA4LTAwLTY1ICAgKGhleCkJCUdFTlJBRCBJTkMuCi0wODAwNjUgICAgIChiYXNlIDE2KQkJR0VOUkFEIElOQy4KLQkJCQkzMDAgQkFLRVIgQVZFTlVFCi0JCQkJTUFJTCBTVE9QIDI2Ci0JCQkJQ09OQ09SRCBNQSAwMTc0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNjYgICAoaGV4KQkJQUdGQSBDT1JQT1JBVElPTgotMDgwMDY2ICAgICAoYmFzZSAxNikJCUFHRkEgQ09SUE9SQVRJT04KLQkJCQkyMDAgQkFMTEFSRFZBTEUgU1RSRUVUCi0JCQkJV0lMTUlOR1RPTiBNQSAwMTg4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNjcgICAoaGV4KQkJQ09NREVTSUdOCi0wODAwNjcgICAgIChiYXNlIDE2KQkJQ09NREVTSUdOCi0JCQkJNzUxIFNPVVRIIEtFTExPRyBBVkVOVUUKLQkJCQlHT0xFVEEgQ0EgOTMxMTctMzg4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNjggICAoaGV4KQkJUklER0UgQ09NUFVURVJTCi0wODAwNjggICAgIChiYXNlIDE2KQkJUklER0UgQ09NUFVURVJTCi0JCQkJMjQ1MSBNSVNTSU9OIENPTExFR0UgQkxWRC4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNjkgICAoaGV4KQkJU0lMSUNPTiBHUkFQSElDUyBJTkMuCi0wODAwNjkgICAgIChiYXNlIDE2KQkJU0lMSUNPTiBHUkFQSElDUyBJTkMuCi0JCQkJMjAxMSBOLiBTSE9SRUxJTkUgQkxWRC4KLQkJCQlQLk8uIEJPWCA3MzExIENBIDk0MDQzCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDAzOS03MzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC02QSAgIChoZXgpCQlBVFQgQkVMTCBMQUJPUkFUT1JJRVMKLTA4MDA2QSAgICAgKGJhc2UgMTYpCQlBVFQgQkVMTCBMQUJPUkFUT1JJRVMKLQkJCQkxMTAwIEVBU1QgV0FSUkVOVklMTEUgUk9BRAotCQkJCU5BUEVSVklMTEUgSUwgNjA1NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTZCICAgKGhleCkJCUFDQ0VMIFRFQ0hOT0xPR0lFUyBJTkMuCi0wODAwNkIgICAgIChiYXNlIDE2KQkJQUNDRUwgVEVDSE5PTE9HSUVTIElOQy4KLQkJCQk3MzU4IFRSQURFIFNUUkVFVAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNkMgICAoaGV4KQkJU1VOVEVLIFRFQ0hOT0xPR1kgSU5UJ0wKLTA4MDA2QyAgICAgKGJhc2UgMTYpCQlTVU5URUsgVEVDSE5PTE9HWSBJTlQnTAotCQkJCTU4NiBOTy4gRklSU1QgU1RSRUVUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTZEICAgKGhleCkJCVdISVRFQ0hBUEVMIENPTVBVVEVSIFdPUktTCi0wODAwNkQgICAgIChiYXNlIDE2KQkJV0hJVEVDSEFQRUwgQ09NUFVURVIgV09SS1MKLQkJCQk3NSBXSElURUNIQVBFTCBST0FECi0JCQkJTE9ORE9OIEUxIDFEVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTA4LTAwLTZFICAgKGhleCkJCU1BU1NDT01QCi0wODAwNkUgICAgIChiYXNlIDE2KQkJTUFTU0NPTVAKLQkJCQlPTkUgVEVDSE5PTE9HWSBQQVJLCi0JCQkJV0VTVEZPUkQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTZGICAgKGhleCkJCVBISUxJUFMgQVBFTERPT1JOIEIuVi4KLTA4MDA2RiAgICAgKGJhc2UgMTYpCQlQSElMSVBTIEFQRUxET09STiBCLlYuCi0JCQkJUC5PLiBCT1ggMTA1Ci0JCQkJNzMwMCBBQyBBUEVMRE9PUk4KLQkJCQlUSEUgTkVUSEVSTEFORFMKLQkJCQlORVRIRVJMQU5EUwotCi0wOC0wMC03MCAgIChoZXgpCQlNSVRTVUJJU0hJIEVMRUNUUklDIENPUlAuCi0wODAwNzAgICAgIChiYXNlIDE2KQkJTUlUU1VCSVNISSBFTEVDVFJJQyBDT1JQLgotCQkJCTMyNSBLQU1JTUFDSElZQQotCQkJCUtBTUFLVVJBIENJVFkgS0FOQUdXQSBQUkVGRUNUVVJFIDI0NwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDgtMDAtNzEgICAoaGV4KQkJTUFUUkEgKERTSUUpCi0wODAwNzEgICAgIChiYXNlIDE2KQkJTUFUUkEgKERTSUUpCi0JCQkJUEFSQyBEJ0FGRkFJUkVTIC0gQi5QLiAyNjIKLQkJCQkyNzEwMCBWQUwgREUgUkVVSUwKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDgtMDAtNzIgICAoaGV4KQkJWEVST1ggQ09SUCBVTklWIEdSQU5UIFBST0dSQU0KLTA4MDA3MiAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQIFVOSVYgR1JBTlQgUFJPR1JBTQotCQkJCVpFUk9YIFNZU1RFTVMgSU5TVElUVVRFCi0JCQkJTS9TIDEwNSA1MEMgODAwIFBISUxMSVBTIFJPQUQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC03MyAgIChoZXgpCQlURUNNQVIgSU5DLgotMDgwMDczICAgICAoYmFzZSAxNikJCVRFQ01BUiBJTkMuCi0JCQkJNjIyNSBDT0NIUkFOIFJPQUQKLQkJCQlTT0xPTiBPSCA0NDEzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNzQgICAoaGV4KQkJQ0FTSU8gQ09NUFVURVIgQ08uIExURC4KLTA4MDA3NCAgICAgKGJhc2UgMTYpCQlDQVNJTyBDT01QVVRFUiBDTy4gTFRELgotCQkJCTMtMi0xIFNBS0FFLUNITwotCQkJCUhBTVVSQU1BQ0hJLCBOSVNISVRNQUdVTiBUT0tZTwotCQkJCTE5MC0xMSBKQVBBTgotCQkJCUpBUEFOCi0KLTA4LTAwLTc1ICAgKGhleCkJCURBTlNLIERBVEEgRUxFQ1RST05JSwotMDgwMDc1ICAgICAoYmFzZSAxNikJCURBTlNLIERBVEEgRUxFQ1RST05JSwotCQkJCUhFUkxFViBIT1ZFREdBREUgMTk5Ci0JCQkJREsgMjczMCBIRVJMRVYKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wOC0wMC03NiAgIChoZXgpCQlQQyBMQU4gVEVDSE5PTE9HSUVTCi0wODAwNzYgICAgIChiYXNlIDE2KQkJUEMgTEFOIFRFQ0hOT0xPR0lFUwotCQkJCTU3ODAgTElOQ09MTiBEUklWRSBTVUlURSAxMDYKLQkJCQlNSU5ORUFQT0xJUyBNTiA1NTQzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNzcgICAoaGV4KQkJVFNMIENPTU1VTklDQVRJT05TIExURC4KLTA4MDA3NyAgICAgKGJhc2UgMTYpCQlUU0wgQ09NTVVOSUNBVElPTlMgTFRELgotCQkJCVRIRSBMQU5EU0JVUlkgRVNUQVRFCi0JCQkJTE9XRVIgR1VJTERGT1JEIFJPQUQgS05BUEhJTCBXT0tJTkcgU1VSUgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC03OCAgIChoZXgpCQlBQ0NFTEwgQ09SUE9SQVRJT04KLTA4MDA3OCAgICAgKGJhc2UgMTYpCQlBQ0NFTEwgQ09SUE9SQVRJT04KLQkJCQk1MCBTQUdJTkFXIERSSVZFCi0JCQkJUk9DSEVTVEVSIE5ZIDE0NjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC03OSAgIChoZXgpCQlUSEUgRFJPSUQgV09SS1MKLTA4MDA3OSAgICAgKGJhc2UgMTYpCQlUSEUgRFJPSUQgV09SS1MKLQkJCQlQLk8uIEJPWCBDUyA4MTgwCi0JCQkJU0FOIFJBRkFFTCBDQSA5NDkxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtN0EgICAoaGV4KQkJSU5EQVRBCi0wODAwN0EgICAgIChiYXNlIDE2KQkJSU5EQVRBCi0JCQkJR0pFUkRSVU1TIFZFSSAxMiBDCi0JCQkJTi0wNDg2IE9TTE8gNAotCQkJCU5PUldBWQotCQkJCU5PUldBWQotCi0wOC0wMC03QiAgIChoZXgpCQlTQU5ZTyBFTEVDVFJJQyBDTy4gTFRELgotMDgwMDdCICAgICAoYmFzZSAxNikJCVNBTllPIEVMRUNUUklDIENPLiBMVEQuCi0JCQkJMS0xOC0xMyBIQVNISVJJREFOSQotCQkJCUhJUkFLQVRBLVNISQotCQkJCU9TQUtBIDU3MyBKQVBBTgotCQkJCUpBUEFOCi0KLTA4LTAwLTdDICAgKGhleCkJCVZJVEFMSU5LIENPTU1VTklDQVRJT05TIENPUlAuCi0wODAwN0MgICAgIChiYXNlIDE2KQkJVklUQUxJTksgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQk0ODc2MSBLQVRPIFJPQUQKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC03RSAgIChoZXgpCQlBTUFMR0FNQVRFRCBXSVJFTEVTUyhBVVMpIExURAotMDgwMDdFICAgICAoYmFzZSAxNikJCUFNQUxHQU1BVEVEIFdJUkVMRVNTKEFVUykgTFRECi0JCQkJTk9SVEggUllERSBESVZJU0lPTgotCQkJCVAuTy4gQk9YIDk2IE5PUlRIIFJZREUgTlNXCi0JCQkJQVVTVFJBTElBIDIxMTMKLQkJCQlBVVNUUkFMSUEKLQotMDgtMDAtN0YgICAoaGV4KQkJQ0FSTkVHSUUtTUVMTE9OIFVOSVZFUlNJVFkKLTA4MDA3RiAgICAgKGJhc2UgMTYpCQlDQVJORUdJRS1NRUxMT04gVU5JVkVSU0lUWQotCQkJCUlORk9STUFUSU9OIFRFQ0hOT0xPR1kKLQkJCQlTQ0hFTkxFWSBQQVJLCi0JCQkJUElUVFNCVVJHRSBQQSAxNTIxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtODAgICAoaGV4KQkJQUVTIERBVEEgSU5DLgotMDgwMDgwICAgICAoYmFzZSAxNikJCUFFUyBEQVRBIElOQy4KLQkJCQkxOTAwIE1JTk5FU09UQSBDT1VSVAotCQkJCU1JU1NJU0FVR0EgT05UQVJJTwotCQkJCUNBTkFEQSBMNU4gTDVOIDNDOQotCQkJCUNBTkFEQQotCi0wOC0wMC04MSAgIChoZXgpCQksQVNURUNIIElOQy4KLTA4MDA4MSAgICAgKGJhc2UgMTYpCQksQVNURUNIIElOQy4KLQkJCQk2NzAgTk9SVEggQ09NTUVSQ0lBTCBTVFJFRVQKLQkJCQlNQU5DSEVTVEVSIE5IIDAzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04MiAgIChoZXgpCQlWRVJJVEFTIFNPRlRXQVJFCi0wODAwODIgICAgIChiYXNlIDE2KQkJVkVSSVRBUyBTT0ZUV0FSRQotCQkJCTQ4MDAgR1JFQVQgQU1FUklDQSBQQVJLV0FZCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTgzICAgKGhleCkJCVNlaWtvIEluc3RydW1lbnRzIEluYy4KLTA4MDA4MyAgICAgKGJhc2UgMTYpCQlTZWlrbyBJbnN0cnVtZW50cyBJbmMuCi0JCQkJOCwgTmFrYXNlIDEtY2hvbWUgTWloYW1hLWt1Ci0JCQkJQ2hpYmEtc2hpIENoaWJhIDI2MS04NTA3Ci0JCQkJSkFQQU4KLQotMDgtMDAtODQgICAoaGV4KQkJVE9NRU4gRUxFQ1RST05JQ1MgQ09SUC4KLTA4MDA4NCAgICAgKGJhc2UgMTYpCQlUT01FTiBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTEtMSBVQ0hJU0FJV0FJLUNITyAyQ0hPTUUKLQkJCQlDSElZT0RBLUtVIFRPS1lPIDEwMAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDgtMDAtODUgICAoaGV4KQkJRUxYU0kKLTA4MDA4NSAgICAgKGJhc2UgMTYpCQlFTFhTSQotCQkJCTIzMzQgTFVORFkgUExBQ0UKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtODYgICAoaGV4KQkJS09OSUNBIE1JTk9MVEEgSE9MRElOR1MsIElOQy4KLTA4MDA4NiAgICAgKGJhc2UgMTYpCQlLT05JQ0EgTUlOT0xUQSBIT0xESU5HUywgSU5DLgotCQkJCTEtNi0xLCBNYXJ1bm91Y2hpLAotCQkJCUNoaXlvZGEta3UKLQkJCQlUb2t5byAgMTAwLTAwMDUKLQkJCQlKQVBBTgotCi0wOC0wMC04NyAgIChoZXgpCQlYWVBMRVgKLTA4MDA4NyAgICAgKGJhc2UgMTYpCQlYWVBMRVgKLQkJCQkyOTUgRk9TVEVSIFNUUkVFVAotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtODggICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wODAwODggICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04OSAgIChoZXgpCQlLSU5FVElDUwotMDgwMDg5ICAgICAoYmFzZSAxNikJCUtJTkVUSUNTCi0JCQkJMzE4MiBPTEQgVFVOTkVMIFJPQUQKLQkJCQlTVUlURSBICi0JCQkJTEFGQVlFVFRFIENBIDk0NTQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04QSAgIChoZXgpCQlQRVJGT1JNQU5DRSBURUNITk9MT0dZCi0wODAwOEEgICAgIChiYXNlIDE2KQkJUEVSRk9STUFOQ0UgVEVDSE5PTE9HWQotCQkJCTgwMSBMSU5DT0xOIENFTlRFUgotCQkJCTc4MDAgMUgxMCBXRVNUCi0JCQkJU0FOIEFOVE9OSU8gVFggNzgyMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLThCICAgKGhleCkJCVBZUkFNSUQgVEVDSE5PTE9HWSBDT1JQLgotMDgwMDhCICAgICAoYmFzZSAxNikJCVBZUkFNSUQgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTEyOTUgQ0hBUkxFU1RPTiBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtOEMgICAoaGV4KQkJTkVUV09SSyBSRVNFQVJDSCBDT1JQT1JBVElPTgotMDgwMDhDICAgICAoYmFzZSAxNikJCU5FVFdPUksgUkVTRUFSQ0ggQ09SUE9SQVRJT04KLQkJCQkyMzgwIE4uIFJPU0UgQVZFTlVFCi0JCQkJT1hOQVJEIENBIDkzMDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04RCAgIChoZXgpCQlYWVZJU0lPTiBJTkMuCi0wODAwOEQgICAgIChiYXNlIDE2KQkJWFlWSVNJT04gSU5DLgotCQkJCTEwMSBFREdFV0FURVIgRFJJVkUKLQkJCQlXQUtFRklFTEQgTUEgMDE4ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLThFICAgKGhleCkJCVRBTkRFTSBDT01QVVRFUlMKLTA4MDA4RSAgICAgKGJhc2UgMTYpCQlUQU5ERU0gQ09NUFVURVJTCi0JCQkJMTQzMjEgVEFOREVNIEJMVkQuCi0JCQkJQVVTVElOIFRYIDc4NzI4LTY2MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLThGICAgKGhleCkJCUNISVBDT00gQ09SUE9SQVRJT04KLTA4MDA4RiAgICAgKGJhc2UgMTYpCQlDSElQQ09NIENPUlBPUkFUSU9OCi0JCQkJU09VVEhCT1JPVUdIIE9GRklDRQotCQkJCTExOCBUVVJOUElLRSBST0FECi0JCQkJU09VVEhCT1JPVUdIIE1BIDAxNzcyLTE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTkwICAgKGhleCkJCVNPTk9NQSBTWVNURU1TCi0wODAwOTAgICAgIChiYXNlIDE2KQkJU09OT01BIFNZU1RFTVMKLQkJCQk0NjQwIEFETUlSQUxUWSBXQVksICBTVEUuICM2MDAKLQkJCQlNQVJJTkEgREVMIFJFWSBDQSA5MDI5Mi02Njk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0xMS05NiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTA4MTE5NiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTA4LTE0LTQzICAgKGhleCkJCVVOSUJSQUlOIFMuQS4KLTA4MTQ0MyAgICAgKGJhc2UgMTYpCQlVTklCUkFJTiBTLkEuCi0JCQkJODQsIEVUSE5JS0lTIEFOVElTVEFTRU9TCi0JCQkJMTUyMzEgQVRIRU5TCi0JCQkJR1JFRUNFCi0JCQkJR1JFRUNFCi0KLTA4LTE2LTUxICAgKGhleCkJCVNoZW56aGVuIFNlYSBTdGFyIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDgxNjUxICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFNlYSBTdGFyIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCVNlYXN0YXIgaW5kdXN0cmlhbCBQYXJrLCBCYW9Mb25nICA2dGggQXZlCi0JCQkJQmFvTG9uZyBpbmR1c3RyaWFsIENpdHksIExvbmdHYW5nICBEaXN0cmljdCwgU2hlbnpoZW4gR3VhbmdEb25nIFAuUi5DCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODExNgotCQkJCUNISU5BCi0KLTA4LTE3LTM1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTA4MTczNSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTE3LUY0ICAgKGhleCkJCUlCTSBDb3JwCi0wODE3RjQgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkyMDUxIE1pc3Npb24gQ29sbGVnZSBCbHZkCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTE4LTFBICAgKGhleCkJCXp0ZSBjb3Jwb3JhdGlvbgotMDgxODFBICAgICAoYmFzZSAxNikJCXp0ZSBjb3Jwb3JhdGlvbgotCQkJCTEyL0YuLFpURSBSJkQgQnVpbGRpbmcsa2VqaSBuYW4gUm9hZCAKLQkJCQlTaGVuemhlbiBndWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDgtMTgtNEMgICAoaGV4KQkJQS4gUy4gVGhvbWFzLCBJbmMuCi0wODE4NEMgICAgIChiYXNlIDE2KQkJQS4gUy4gVGhvbWFzLCBJbmMuCi0JCQkJMzU1IFByb3ZpZGVuY2UgSHd5Ci0JCQkJV2VzdHdvb2QgTUEgMDIwOTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTE5LUE2ICAgKGhleCkJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotMDgxOUE2ICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCUIxLTcsSHVhd2VpIEluZHVzdHJpYWwgQmFzZSxCYW50aWFuLExvbmdnYW5nCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTA4LTFGLUYzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTA4MUZGMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTJBLUQwICAgKGhleCkJCVNSRCBJbm5vdmF0aW9ucyBJbmMuCi0wODJBRDAgICAgIChiYXNlIDE2KQkJU1JEIElubm92YXRpb25zIEluYy4KLQkJCQkxMTUyNSBWYWxsZXkgUmlkZ2UgRHIuIE5XCi0JCQkJQ2FsZ2FyeSBBQiBUM0IgNVQ0Ci0JCQkJQ0FOQURBCi0KLTA4LTM4LUE1ICAgKGhleCkJCUZ1bmt3ZXJrIHBsZXR0YWMgZWxlY3Ryb25pYyBHbWJICi0wODM4QTUgICAgIChiYXNlIDE2KQkJRnVua3dlcmsgcGxldHRhYyBlbGVjdHJvbmljIEdtYkgKLQkJCQlXdWVyemJ1cmdlciBTdHIuIDE1MAotCQkJCUZ1ZXJ0aCBCYXZhcmlhIDkwNzY2Ci0JCQkJR0VSTUFOWQotCi0wOC00RS0xQyAgIChoZXgpCQlIMkEgU3lzdGVtcywgTExDCi0wODRFMUMgICAgIChiYXNlIDE2KQkJSDJBIFN5c3RlbXMsIExMQwotCQkJCTc1NDUgSXJ2aW5lIENlbnRlciBEcml2ZQotCQkJCVN1aXRlIDIwMAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtNEUtQkYgICAoaGV4KQkJQnJvYWQgTmV0IE11eCBDb3Jwb3JhdGlvbgotMDg0RUJGICAgICAoYmFzZSAxNikJCUJyb2FkIE5ldCBNdXggQ29ycG9yYXRpb24KLQkJCQk0LTEtOCBLb3VuYW4gTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwOC0wMDc1Ci0JCQkJSkFQQU4KLQotMDgtNTEtMkUgICAoaGV4KQkJT3Jpb24gRGlhZ25vc3RpY2EgT3kKLTA4NTEyRSAgICAgKGJhc2UgMTYpCQlPcmlvbiBEaWFnbm9zdGljYSBPeQotCQkJCUtvaXZ1LU1hbmtrYWFuIHRpZSA2Ci0JCQkJRXNwb28gIDAyMTAwCi0JCQkJRklOTEFORAotCi0wOC03Ni0xOCAgIChoZXgpCQlWaUUgVGVjaG5vbG9naWVzIFNkbi4gQmhkLgotMDg3NjE4ICAgICAoYmFzZSAxNikJCVZpRSBUZWNobm9sb2dpZXMgU2RuLiBCaGQuCi0JCQkJbm8uIDg1LUEsIExpbnRhbmcgQmF5YW4gTGVwYXMgMTEsCi0JCQkJUGhhc2UgNAotCQkJCUJheWFuIExlcGFzIFBlbmFuZyAxMTkwMAotCQkJCU1BTEFZU0lBCi0KLTA4LTc2LTk1ICAgKGhleCkJCUF1dG8gSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTA4NzY5NSAgICAgKGJhc2UgMTYpCQlBdXRvIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTRGbG9vciwgIzIzNSBIYW5zaGluIElUIFRvd2VyLCAKLQkJCQlHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTc2OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wOC03Ni1GRiAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDg3NkZGICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NwotCQkJCUVkZWdlbSAgIDI2NTAKLQkJCQlCRUxHSVVNCi0KLTA4LTg2LTNCICAgKGhleCkJCUJlbGtpbiBJbnRlcm5hdGlvbmFsCi0wODg2M0IgICAgIChiYXNlIDE2KQkJQmVsa2luIEludGVybmF0aW9uYWwKLQkJCQkxMjA0NSBFYXN0IFdhdGVyZnJvbnQgRHJpdmUKLQkJCQlQbGF5YSBWaXN0YSBDQSA5MDA5NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtOEQtQzggICAoaGV4KQkJUnlvd2EgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDg4REM4ICAgICAoYmFzZSAxNikJCVJ5b3dhIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkxNDgzLTEgVGFrYWhhcmEtbWFjaGkKLQkJCQlZYW1hZ2F0YS1zaGkgWWFtYWdhdGEtcHJlZi4gOTkwMDAwMgotCQkJCUpBUEFOCi0KLTA4LTlGLTk3ICAgKGhleCkJCUxFUk9ZIEFVVE9NQVRJT04KLTA4OUY5NyAgICAgKGJhc2UgMTYpCQlMRVJPWSBBVVRPTUFUSU9OCi0JCQkJMzUsIEJvdWxldmFyZCBkdSBMaWJyZSBFY2hhbmdlCi0JCQkJU2FpbnQgT3JlbnMgZGUgR2FtZXZpbGxlICAzMTY1MAotCQkJCUZSQU5DRQotCi0wOC1BQy1BNSAgIChoZXgpCQlCZW51IFZpZGVvLCBJbmMuCi0wOEFDQTUgICAgIChiYXNlIDE2KQkJQmVudSBWaWRlbywgSW5jLgotCQkJCTMwMCBDb25jb3JkIFJkLiwgU3VpdGUgIzExMAotCQkJCUJpbGxlcmljYSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtQjctRUMgICAoaGV4KQkJV2lyZWxlc3MgU2Vpc21pYwotMDhCN0VDICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIFNlaXNtaWMKLQkJCQkxMzEwMCBTVyBGcmVld2F5Ci0JCQkJU3VpdGUgMTUwCi0JCQkJU3VnYXIgTGFuZCBUWCA3NzQ3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtQkItQ0MgICAoaGV4KQkJQUstTk9SRCBFRFYgVkVSVFJJRUJTR0VTLiBtYkgKLTA4QkJDQyAgICAgKGJhc2UgMTYpCQlBSy1OT1JEIEVEViBWRVJUUklFQlNHRVMuIG1iSAotCQkJCUZSSUVEUklDSFNUUkFTU0UgMTAKLQkJCQkyNTQzNiBUT1JORVNDSCAgCi0JCQkJR0VSTUFOWQotCi0wOC1EMi05QSAgIChoZXgpCQlQcm9mb3JtYXRpcXVlCi0wOEQyOUEgICAgIChiYXNlIDE2KQkJUHJvZm9ybWF0aXF1ZQotCQkJCTEwIGJpcyBydWUgTHVjaWVuIFZvaWxpbgotCQkJCVB1dGVhdXggIDkyODAwCi0JCQkJRlJBTkNFCi0KLTA4LUQ1LUMwICAgKGhleCkJCVNlZXJzIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTA4RDVDMCAgICAgKGJhc2UgMTYpCQlTZWVycyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJMTIxMCBUZWNoY2VudGVyLCBTS25UZWNobm9wYXJrLCAxOTAtMQotCQkJCVNhbmdkYWV3b25kLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjItNzIxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTA4LUU2LTcyICAgKGhleCkJCUpFQlNFRSBFTEVDVFJPTklDUyBDTy4sTFRELgotMDhFNjcyICAgICAoYmFzZSAxNikJCUpFQlNFRSBFTEVDVFJPTklDUyBDTy4sTFRELgotCQkJCTI0LTMsIFNJTiBMRSBST0FELCAKLQkJCQlUQUlOQU4gIDcwMjY4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wOC1GMi1GNCAgIChoZXgpCQlOZXQgT25lIFBhcnRuZXJzIENvLixMdGQuCi0wOEYyRjQgICAgIChiYXNlIDE2KQkJTmV0IE9uZSBQYXJ0bmVycyBDby4sTHRkLgotCQkJCTItOCBIaWdhc2hpIFNoaW5hZ2F3YSAyLWNob21lLAotCQkJCVNoaW5hZ2F3YS1rdSwKLQkJCQlUb2t5byAgMTQwMDAwMgotCQkJCUpBUEFOCi0KLTA4LUY2LUY4ICAgKGhleCkJCUdFVCBFbmdpbmVlcmluZwotMDhGNkY4ICAgICAoYmFzZSAxNikJCUdFVCBFbmdpbmVlcmluZwotCQkJCTkzNTAgQm9uZCBBdmUKLQkJCQlFbCBDYWpvbiBDQSA5MjAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtRkEtRTAgICAoaGV4KQkJRm9oaG4gQXVkaW8gQUcKLTA4RkFFMCAgICAgKGJhc2UgMTYpCQlGb2hobiBBdWRpbyBBRwotCQkJCUhvaGVzIEdlc3RhZGUgMy03Ci0JCQkJTnVlcnRpbmdlbiBCVyA3MjYyMgotCQkJCUdFUk1BTlkKLQotMEMtMTUtQzUgICAoaGV4KQkJU0RURUMgQ28uLCBMdGQuCi0wQzE1QzUgICAgIChiYXNlIDE2KQkJU0RURUMgQ28uLCBMdGQuCi0JCQkJMTY3LCBDaHVyeWUtMkRvbmcsIFNhc2FuZy1HdSwKLQkJCQlCdXNhbiAgIDYxNy03MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMEMtMTctRjEgICAoaGV4KQkJVEVMRUNTWVMKLTBDMTdGMSAgICAgKGJhc2UgMTYpCQlURUxFQ1NZUwotCQkJCTMxIGNoZW1pbiBkdSBmaWVmIGF1eCBwcmV0cmVzCi0JCQkJTCdPUkJSSUUgIDg1MjAwCi0JCQkJRlJBTkNFCi0KLTBDLTFELUMyICAgKGhleCkJCVNlQUggTmV0d29ya3MKLTBDMURDMiAgICAgKGJhc2UgMTYpCQlTZUFIIE5ldHdvcmtzCi0JCQkJOUYsIElUIFZlbnR1cmUgVG93ZXIgRWFzdCBXaW5nIDc4IEdhcmFrLURvbmcsCi0JCQkJU2VvdWwgU29uZ3BhLWd1IDEzOC05NTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMEMtMjctNTUgICAoaGV4KQkJVmFsdWFibGUgVGVjaG9sb2dpZXMgTGltaXRlZAotMEMyNzU1ICAgICAoYmFzZSAxNikJCVZhbHVhYmxlIFRlY2hvbG9naWVzIExpbWl0ZWQKLQkJCQk2MDIsIENlbnRyZSBQb2ludCwgSi5CLk5hZ2FyLAotCQkJCUFuZGhlcmktS3VybGEgUm9hZCwgQW5kaGVyaSAoRSkKLQkJCQlNdW1iYWkgTWFoYXJhc2h0cmEgNDAwMDU5Ci0JCQkJSU5ESUEKLQotMEMtMzctREMgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotMEMzN0RDICAgICAoYmFzZSAxNikJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTBDLTM5LTU2ICAgKGhleCkJCU9ic2VydmF0b3IgaW5zdHJ1bWVudHMKLTBDMzk1NiAgICAgKGJhc2UgMTYpCQlPYnNlcnZhdG9yIGluc3RydW1lbnRzCi0JCQkJUmlldGRla2tlcnN0cmFhdCA2Ci0JCQkJUmlkZGVya2VyayBadWlkIEhvbGxhbmQgMjk4NCBCTQotCQkJCU5FVEhFUkxBTkRTCi0KLTBDLTNDLTY1ICAgKGhleCkJCURvbWUgSW1hZ2luZyBJbmMKLTBDM0M2NSAgICAgKGJhc2UgMTYpCQlEb21lIEltYWdpbmcgSW5jCi0JCQkJNDAwIEZpZnRoIEF2IAotCQkJCVN1aXRlIDUwMAotCQkJCVdhbHRoYW0gTUEgMDI0NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTBDLTQ2LTlEICAgKGhleCkJCU1TIFNlZGNvCi0wQzQ2OUQgICAgIChiYXNlIDE2KQkJTVMgU2VkY28KLQkJCQk4NzAxIENhc3RsZSBQYXJrIERyaXZlCi0JCQkJSW5kaWFuYXBvbGlzICA0NjI1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMEMtNTEtRjcgICAoaGV4KQkJQ0hBVVZJTiBBUk5PVVgKLTBDNTFGNyAgICAgKGJhc2UgMTYpCQlDSEFVVklOIEFSTk9VWAotCQkJCUxBIFFVRVVFIERFVkVFCi0JCQkJUkVVWCAgMTQxMzAKLQkJCQlGUkFOQ0UKLQotMEMtNjAtNzYgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotMEM2MDc2ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLTBDLTZFLTRGICAgKGhleCkJCVByaW1lVk9MVCBDby4sIEx0ZC4KLTBDNkU0RiAgICAgKGJhc2UgMTYpCQlQcmltZVZPTFQgQ28uLCBMdGQuCi0JCQkJMkYtMywgTm8uIDksIExhbmUgMywgSmlodSBSZCwgTmVpaHUKLQkJCQlUYWlwZWkgIDExNDkyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wQy03NC1DMiAgIChoZXgpCQlBcHBsZSBJbmMKLTBDNzRDMiAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTBDLTdELTdDICAgKGhleCkJCUtleGlhbmcgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDbywgTHRkLgotMEM3RDdDICAgICAoYmFzZSAxNikJCUtleGlhbmcgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDbywgTHRkLgotCQkJCVJvb20gMTUwMiwgTG9uZ3hpIEhvdGVsIE5vLjM3ODggSmlhbmduYW4gQXZlbnVlLiAKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwNTMKLQkJCQlDSElOQQotCi0wQy04MS0xMiAgIChoZXgpCQlQUklWQVRFCi0wQzgxMTIgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTBDLTgyLTMwICAgKGhleCkJCVNIRU5aSEVOIE1BR05VUyBURUNITk9MT0dJRVMgQ08uLExURAotMEM4MjMwICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIE1BR05VUyBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCWMtNTA0LFNreXdvcnRoIEJ1aWxkaW5nLE5vLjggUm9hZCxIaWdoLXRlY2ggc291dGgsTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMEMtODItNkEgICAoaGV4KQkJV3VoYW4gSHVhZ29uZyBHZW51aW5lIE9wdGljcyBUZWNobm9sb2d5IENvLiwgTHRkCi0wQzgyNkEgICAgIChiYXNlIDE2KQkJV3VoYW4gSHVhZ29uZyBHZW51aW5lIE9wdGljcyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJU2NpZW5jZSAmIFRlY2hub2xvZ3kgUmVnaW9uIG9mIEhVU1QsIERvbmdodSBIaWdoLVRlY2ggWm9uZSAKLQkJCQlXdWhhbiBIdWJlaSA0MzAyMjMKLQkJCQlDSElOQQotCi0wQy04NC0xMSAgIChoZXgpCQlBLk8uIFNtaXRoIFdhdGVyIFByb2R1Y3RzCi0wQzg0MTEgICAgIChiYXNlIDE2KQkJQS5PLiBTbWl0aCBXYXRlciBQcm9kdWN0cwotCQkJCTI1NTg5IEh3eSAxCi0JCQkJTWNCZWUgU0MgMjkxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTBDLThELTk4ICAgKGhleCkJCVRPUCBFSUdIVCBJTkQgQ09SUAotMEM4RDk4ICAgICAoYmFzZSAxNikJCVRPUCBFSUdIVCBJTkQgQ09SUAotCQkJCThGLixObzc5LTEgWmhvdXppIFN0LiwgTmVpaHUgRGlzdHJpY3QsIFRhaXBlaSBDaXR5ICAoTmVpaHUgVGVjaG5vbG9neSBQYXJrKQotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTBDLTkyLTRFICAgKGhleCkJCVJpY2UgTGFrZSBXZWlnaGluZyBTeXN0ZW1zCi0wQzkyNEUgICAgIChiYXNlIDE2KQkJUmljZSBMYWtlIFdlaWdoaW5nIFN5c3RlbXMKLQkJCQkyMzAgV2VzdCBDb2xlbWFuIFN0Ci0JCQkJUmljZSBMYWtlIFdJIDU0ODY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy1BNC0wMiAgIChoZXgpCQlBbGNhdGVsIEx1Y2VudCBJUEQKLTBDQTQwMiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIEx1Y2VudCBJUEQKLQkJCQk2MDAgTWFyY2ggRHJpdmUKLQkJCQlLYW5hdGEgT250YXJpbyBrMmsyZTYKLQkJCQlDQU5BREEKLQotMEMtQTQtMkEgICAoaGV4KQkJT0IgVGVsZWNvbSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTBDQTQyQSAgICAgKGJhc2UgMTYpCQlPQiBUZWxlY29tIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTE3L0YsIEppYW5nb25nIEJ1aWxkaW5nCi0JCQkJTm8uMjAgV2Vuc2FuIFJvYWQKLQkJCQlIYW5nemhvdSBaaGVKaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi0wQy1DMy1BNyAgIChoZXgpCQlNZXJpdGVjCi0wQ0MzQTcgICAgIChiYXNlIDE2KQkJTWVyaXRlYwotCQkJCVAuTy4gQm94IDgwMDMKLQkJCQlQYWluZXN2aWxsZSBPaGlvIDQ0MDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy1DNi1BQyAgIChoZXgpCQlEQUdTCi0wQ0M2QUMgICAgIChiYXNlIDE2KQkJREFHUwotCQkJCUFjZSBIaWdoIGVuZCBUb3dlciA3dGggMTgwMgotCQkJCVNlb3VsIEdldW1jaGVvbi1ndSAxNTMtODAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTBDLUM5LUM2ICAgKGhleCkJCVNhbXdpbiBIb25nIEtvbmcgTGltaXRlZAotMENDOUM2ICAgICAoYmFzZSAxNikJCVNhbXdpbiBIb25nIEtvbmcgTGltaXRlZAotCQkJCVJtIDkwMS05MDIsIDkvRiwgRnV0dXJhIFBsYXphLAotCQkJCTExMS0xMTMgSG93IE1pbmcgU3RyZWV0LCBLd3VuIFRvbmcKLQkJCQlIb25nIEtvbmcgIAotCQkJCUNISU5BCi0KLTBDLUNELUQzICAgKGhleCkJCUVBU1RSSVZFUiBURUNITk9MT0dZIENPLiwgTFRELgotMENDREQzICAgICAoYmFzZSAxNikJCUVBU1RSSVZFUiBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTMwIEpJTk5JVSBYSU5DVU4KLQkJCQlHVUFOQ0hFTkcgRElTVFJJQ1QKLQkJCQlET05HR1VBTiBHVUFOR0RPTkcgNTIzMDEwCi0JCQkJQ0hJTkEKLQotMEMtRDItOTIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wQ0QyOTIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wQy1ENS0wMiAgIChoZXgpCQlXZXN0ZWxsCi0wQ0Q1MDIgICAgIChiYXNlIDE2KQkJV2VzdGVsbAotCQkJCTc1MCBOLiBDb21tb25zIGRyLgotCQkJCUF1cm9yYSBJTCA2MDUwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMEMtRDYtOTYgICAoaGV4KQkJQW1pbW9uIEx0ZAotMENENjk2ICAgICAoYmFzZSAxNikJCUFtaW1vbiBMdGQKLQkJCQkyIE1hc2tpdCBzdAotCQkJCVBPIEJveCAxMjYxOAotCQkJCUhlcnpsaWEgIDQ2NzMzCi0JCQkJSVNSQUVMCi0KLTBDLUQ3LUMyICAgKGhleCkJCUF4aXVtIFRlY2hub2xvZ2llcywgSW5jLgotMENEN0MyICAgICAoYmFzZSAxNikJCUF4aXVtIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTY2MjUgTi4gQ2FsbGUgRXZhIE1pcmFuZGEKLQkJCQlTdGUgQgotCQkJCUlyd2luZGFsZSBDQSA5MTcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMEMtREQtRUYgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTBDRERFRiAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU5MAotCQkJCUZJTkxBTkQKLQotMEMtRTctMDkgICAoaGV4KQkJRm94IENyeXB0byBCLlYuCi0wQ0U3MDkgICAgIChiYXNlIDE2KQkJRm94IENyeXB0byBCLlYuCi0JCQkJUC5PLiBib3ggNjM4Ci0JCQkJRGVsZnQgWkggMjYwMCBBUAotCQkJCU5FVEhFUkxBTkRTCi0KLTBDLUU4LTJGICAgKGhleCkJCUJvbmZpZ2xpb2xpIFZlY3Ryb24gR21iSAotMENFODJGICAgICAoYmFzZSAxNikJCUJvbmZpZ2xpb2xpIFZlY3Ryb24gR21iSAotCQkJCUV1cm9wYXJrIEZpY2h0ZW5oYWluIEI2Ci0JCQkJS3JlZmVsZCBOUlcgNDc4MDcKLQkJCQlHRVJNQU5ZCi0KLTBDLUU5LTM2ICAgKGhleCkJCUVMSU1PUyBzcmwKLTBDRTkzNiAgICAgKGJhc2UgMTYpCQlFTElNT1Mgc3JsCi0JCQkJdmlhIEdhbHZhbmkgNS9DCi0JCQkJVFJJRVNURSAgMzQxMzMKLQkJCQlJVEFMWQotCi0wQy1FRS1FNiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0wQ0VFRTYgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMEMtRUYtN0MgICAoaGV4KQkJQW5hQ29tIEluYwotMENFRjdDICAgICAoYmFzZSAxNikJCUFuYUNvbSBJbmMKLQkJCQkxOTk2IEx1bmR5IEF2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy1GMC1CNCAgIChoZXgpCQlHbG9iYWxzYXQgSW50ZXJuYXRpb25hbCBUZWNobm9sb2d5IEx0ZAotMENGMEI0ICAgICAoYmFzZSAxNikJCUdsb2JhbHNhdCBJbnRlcm5hdGlvbmFsIFRlY2hub2xvZ3kgTHRkCi0JCQkJMTd0aCBmbG9vcixDaGluYSBZb3VzZSBCdWlsZGluZyxOby42MDEzIFNoZW5uYW4gQXZlbnVlLEZ1dGlhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMEMtRjMtRUUgICAoaGV4KQkJRU0gTWljcm9lbGVjdHJvbmljCi0wQ0YzRUUgICAgIChiYXNlIDE2KQkJRU0gTWljcm9lbGVjdHJvbmljCi0JCQkJUnVlIGRlcyBTb3JzIDMKLQkJCQlNYXJpbi1FcGFnaW5lciBOZXVjaHRlbCAyMDc0Ci0JCQkJU1dJVFpFUkxBTkQKLQotMEMtRkMtODMgICAoaGV4KQkJQWlyb2hhIFRlY2hub2xvZ3kgQ29ycC4sCi0wQ0ZDODMgICAgIChiYXNlIDE2KQkJQWlyb2hhIFRlY2hub2xvZ3kgQ29ycC4sCi0JCQkJNUYsIE5vLjYtNSwgRHVzaGluZyBSb2FkICwgSHNpbmNodSBTY2llbmNlIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTEwLTAwLTAwICAgKGhleCkJCVBSSVZBVEUKLTEwMDAwMCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMTAtMDAtNUEgICAoaGV4KQkJSUJNIENvcnAKLTEwMDA1QSAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtMDAtRTggICAoaGV4KQkJTkFUSU9OQUwgU0VNSUNPTkRVQ1RPUgotMTAwMEU4ICAgICAoYmFzZSAxNikJCU5BVElPTkFMIFNFTUlDT05EVUNUT1IKLQkJCQkyOTAwIFNFTUlDT05EVUNUT1IgRFJJVkUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtMDktMEMgICAoaGV4KQkJSmFub21lIFNld2luZyBNYWNoaW5lIENvLiwgTHRkLgotMTAwOTBDICAgICAoYmFzZSAxNikJCUphbm9tZSBTZXdpbmcgTWFjaGluZSBDby4sIEx0ZC4KLQkJCQkxNDYzIEhhemFtYS1NYWNoaQotCQkJCUhhY2hpb2ppLVNoaSBUb2t5byAxOTMtMDk0MQotCQkJCUpBUEFOCi0KLTEwLTBCLUE5ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMTAwQkE5ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMTAtMEMtMjQgICAoaGV4KQkJcG9tZGV2aWNlcywgTExDCi0xMDBDMjQgICAgIChiYXNlIDE2KQkJcG9tZGV2aWNlcywgTExDCi0JCQkJMTc4IENvbHZhcmQgUGFyayBEcgotCQkJCUR1cmhhbSBOQyAyNzcxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtMEQtMzIgICAoaGV4KQkJRW1iZWRpYW4sIEluYy4KLTEwMEQzMiAgICAgKGJhc2UgMTYpCQlFbWJlZGlhbiwgSW5jLgotCQkJCTEwRi4sIDk1LCBOYW5qaW5nIEUuIFJkLiBTZWMuIDQsIAotCQkJCVRhaXBlaSAgMTA1ODAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTEwLTBFLTJCICAgKGhleCkJCU5FQyBDQVNJTyBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLTEwMEUyQiAgICAgKGJhc2UgMTYpCQlORUMgQ0FTSU8gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJMTc1MyxTaGltb251bWFiZQotCQkJCU5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2ktc2hpIEthbmFnYXdhIDIxMS04NjY2Ci0JCQkJSkFQQU4KLQotMTAtMTAtQjYgICAoaGV4KQkJTWNDYWluIEluYwotMTAxMEI2ICAgICAoYmFzZSAxNikJCU1jQ2FpbiBJbmMKLQkJCQkyMzY1IE9hayBSaWRnZSBXYXkKLQkJCQlWaXN0YSBDQSA5MjA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtMTItMTIgICAoaGV4KQkJVml2byBJbnRlcm5hdGlvbmFsIENvcnBvcmF0aW9uIFB0eSBMdGQKLTEwMTIxMiAgICAgKGJhc2UgMTYpCQlWaXZvIEludGVybmF0aW9uYWwgQ29ycG9yYXRpb24gUHR5IEx0ZAotCQkJCTktMTMgQmliYnkgU3RyZWV0LCAKLQkJCQlOU1cgQ2hpc3dpY2sgMjA0NgotCQkJCUFVU1RSQUxJQQotCi0xMC0xOC05RSAgIChoZXgpCQlFbG1vIE1vdGlvbiBDb250cm9sCi0xMDE4OUUgICAgIChiYXNlIDE2KQkJRWxtbyBNb3Rpb24gQ29udHJvbAotCQkJCTY0IEdpc2luIFN0LgotCQkJCVBldGFjaCBUaWt2YSAgNDkxMDMKLQkJCQlJU1JBRUwKLQotMTAtMUQtQzAgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0xMDFEQzAgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTEwLTFGLTc0ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMTAxRjc0ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMC0yRC05NiAgIChoZXgpCQlMb294Y2llIEluYy4KLTEwMkQ5NiAgICAgKGJhc2UgMTYpCQlMb294Y2llIEluYy4KLQkJCQkxMTk2IEJvcnJlZ2FzIEF2ZS4KLQkJCQlTdWl0ZSAyMDAKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTJFLUFGICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0xMDJFQUYgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtMzctMTEgICAoaGV4KQkJU2ltbGluayBBUwotMTAzNzExICAgICAoYmFzZSAxNikJCVNpbWxpbmsgQVMKLQkJCQlPdHRvIE5pZWxzZW5zIFZlZyAxMgotCQkJCVRyb25kaGVpbSAgTi03MDA0Ci0JCQkJTk9SV0FZCi0KLTEwLTQzLTY5ICAgKGhleCkJCVNvdW5kbWF4IEVsZWN0cm9uaWMgTGltaXRlZCAKLTEwNDM2OSAgICAgKGJhc2UgMTYpCQlTb3VuZG1heCBFbGVjdHJvbmljIExpbWl0ZWQgCi0JCQkJUm9vbSMxNTA1LCBPcmllbnRhbCBwbGF6YSwgIzEwNzIgSmlhblNoZSBSb2FkCi0JCQkJU0hFTlpIRU4gIEd1YW5nZG9uZyA1MTgwMDEKLQkJCQlDSElOQQotCi0xMC00NC01QSAgIChoZXgpCQlTaGFhbnhpIEhpdGVjaCBFbGVjdHJvbmljIENvLiwgTFRECi0xMDQ0NUEgICAgIChiYXNlIDE2KQkJU2hhYW54aSBIaXRlY2ggRWxlY3Ryb25pYyBDby4sIExURAotCQkJCTM1IFR1YW5qaWVuYW4gUm9kZSwKLQkJCQlYaWFuIFNoYWFueGkgNzEwMDc1Ci0JCQkJQ0hJTkEKLQotMTAtNDUtQkUgICAoaGV4KQkJTm9ycGhvbmljIEFTCi0xMDQ1QkUgICAgIChiYXNlIDE2KQkJTm9ycGhvbmljIEFTCi0JCQkJRmFicmlra2dhdGVuIDEwCi0JCQkJQmVyZ2VuICA1MDU5Ci0JCQkJTk9SV0FZCi0KLTEwLTQ1LUY4ICAgKGhleCkJCUxOVC1BdXRvbWF0aW9uIEdtYkgKLTEwNDVGOCAgICAgKGJhc2UgMTYpCQlMTlQtQXV0b21hdGlvbiBHbWJICi0JCQkJSGFucy1QYXVsLUtheXNzZXItU3RyYd9lIDEKLQkJCQlMZXV0ZW5iYWNoLU5lbGxtZXJzYmFjaCBCVyBELTcxMzk3Ci0JCQkJR0VSTUFOWQotCi0xMC01Ni1DQSAgIChoZXgpCQlQZXBsaW5rIEludGVybmF0aW9uYWwgTHRkLgotMTA1NkNBICAgICAoYmFzZSAxNikJCVBlcGxpbmsgSW50ZXJuYXRpb25hbCBMdGQuCi0JCQkJMTcvRiwgUGFyayBCdWlsZGluZywKLQkJCQk0NzYgQ2FzdGxlIFBlYWsgUm9hZCwKLQkJCQlDaGV1bmcgU2hhIFdhbiAgCi0JCQkJSE9ORyBLT05HCi0KLTEwLTYyLUM5ICAgKGhleCkJCUFkYXRpcyBHbWJIICYgQ28uIEtHCi0xMDYyQzkgICAgIChiYXNlIDE2KQkJQWRhdGlzIEdtYkggJiBDby4gS0cKLQkJCQlGb3JjaGhlaW1lciBTdHIuIDYKLQkJCQlO77+9cm5iZXJnIEJhdmFyaWEgOTA0MjUKLQkJCQlHRVJNQU5ZCi0KLTEwLTY0LUUyICAgKGhleCkJCUFERndlYi5jb20gcy5yLmwuCi0xMDY0RTIgICAgIChiYXNlIDE2KQkJQURGd2ViLmNvbSBzLnIubC4KLQkJCQlTdHJhZGEgTnVvdmEsIDE3Ci0JCQkJLgotCQkJCU1hcmVubyBkaSBQaWF2ZSBUcmV2aXNvIDMxMDEwCi0JCQkJSVRBTFkKLQotMTAtNjUtQTMgICAoaGV4KQkJUGFuYW1heCBJbmMuCi0xMDY1QTMgICAgIChiYXNlIDE2KQkJUGFuYW1heCBJbmMuCi0JCQkJMTY5MCBDb3Jwb3JhdGUgQ2lyY2xlCi0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTc2LThBICAgKGhleCkJCUVvQ2VsbAotMTA3NjhBICAgICAoYmFzZSAxNikJCUVvQ2VsbAotCQkJCTE0OSBGbG9vZGxpZ2h0c2ZpZWxkIFN0cmVldAotCQkJCVNpbHZlcndhdGVyIE5TVyAyMTI4Ci0JCQkJQVVTVFJBTElBCi0KLTEwLTc4LUQyICAgKGhleCkJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotMTA3OEQyICAgICAoYmFzZSAxNikJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotCQkJCU5PLiAyMzksIFNlYy4gMiwgVGkgRGluZyBCbHZkLgotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTEwLTgzLUQyICAgKGhleCkJCU1pY3Jvc2V2ZW4gU3lzdGVtcywgTExDCi0xMDgzRDIgICAgIChiYXNlIDE2KQkJTWljcm9zZXZlbiBTeXN0ZW1zLCBMTEMKLQkJCQk0MDQgU291dGggTGVtb24gQXZlLiwgIzkKLQkJCQlXYWxudXQgQ2FsaWZvcm5pYSA5MTc4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtODgtMEYgICAoaGV4KQkJREFSVU1BIFRFTEVDT01VTklDQcfVRVMgRSBJTkZPUk3BVElDQSBTL0EKLTEwODgwRiAgICAgKGJhc2UgMTYpCQlEQVJVTUEgVEVMRUNPTVVOSUNBx9VFUyBFIElORk9STcFUSUNBIFMvQQotCQkJCUFWRU5JREEgSU5ERVBFTkRFTkNJQSwgMzUwMCwgTE9URUFNRU5UTyBJTkRVU1RSSUFMCi0JCQkJVEFVQkFUySBTw08gUEFVTE8gMTIwMzItMDAwCi0JCQkJQlJBWklMCi0KLTEwLThDLUNGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTEwOENDRiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTkzLUU5ICAgKGhleCkJCUFwcGxlLCBJbmMuCi0xMDkzRTkgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTlBLUREICAgKGhleCkJCUFwcGxlIEluYwotMTA5QUREICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtQTEtM0IgICAoaGV4KQkJRlVKSUtVUkEgUlVCQkVSIExURC4KLTEwQTEzQiAgICAgKGJhc2UgMTYpCQlGVUpJS1VSQSBSVUJCRVIgTFRELgotCQkJCTEtODQwLE1paGFzaGksT21peWEKLQkJCQlTYWl0YW1hICAgMzMwLTA4NTYKLQkJCQlKQVBBTgotCi0xMC1CNy1GNiAgIChoZXgpCQlQbGFzdG9mb3JtIEluZHVzdHJpZXMgTHRkLgotMTBCN0Y2ICAgICAoYmFzZSAxNikJCVBsYXN0b2Zvcm0gSW5kdXN0cmllcyBMdGQuCi0JCQkJVW5pdHMgMTUwNkEgLSAxNTEyLCBNaXRhIENlbnRyZSwKLQkJCQk1NTItNTY2IENhc3RsZSBQZWFrIFJvYWQKLQkJCQlLd2FpIENodW5nICAKLQkJCQlIT05HIEtPTkcKLQotMTAtQkEtQTUgICAoaGV4KQkJR0FOQSBJJkMgQ08uLCBMVEQKLTEwQkFBNSAgICAgKGJhc2UgMTYpCQlHQU5BIEkmQyBDTy4sIExURAotCQkJCTE1NC0xNyBreW91bmdkb25nIEIvRCAzRiBrYXJhay1kb25nIHNvbmdwYS1ndQotCQkJCVNlb3VsIEtvcmVhIDEzOC0xNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTAtQzUtODYgICAoaGV4KQkJQklPIFNPVU5EIExBQiBDTy4sIExURC4KLTEwQzU4NiAgICAgKGJhc2UgMTYpCQlCSU8gU09VTkQgTEFCIENPLiwgTFRELgotCQkJCVN1aXRlIDMxMSwgMzEyIFNLbiBUZWNobm8gUGFyayAKLQkJCQlCaXogQ2VudGVyIDE5MC0xIFNhbmdkYWV3b24tZG9uZywgSnVuZ3dvbi1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvLCA0NjItNzIxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTEwLUM3LTNGICAgKGhleCkJCU1pZGFzIEtsYXJrIFRla25payBMdGQKLTEwQzczRiAgICAgKGJhc2UgMTYpCQlNaWRhcyBLbGFyayBUZWtuaWsgTHRkCi0JCQkJS2xhcmsgVGVrbmlrIEJ1aWxkaW5nCi0JCQkJV2FsdGVyIE5hc2ggUm9hZAotCQkJCUtpZGRlcm1pbnN0ZXIgV29yY2VzdGVyc2hpcmUgRFkxMSA3SEoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0xMC1DQS04MSAgIChoZXgpCQlQUkVDSUEKLTEwQ0E4MSAgICAgKGJhc2UgMTYpCQlQUkVDSUEKLQkJCQlMZSBydWlzc29sIFZFWVJBUwotCQkJCUJQIDEwNgotCQkJCVBSSVZBUyAgMDcwMDEKLQkJCQlGUkFOQ0UKLQotMTAtQ0MtREIgICAoaGV4KQkJQVhJTVVNIFBST0RVSVRTIEVMRUNUUk9OSVFVRVMKLTEwQ0NEQiAgICAgKGJhc2UgMTYpCQlBWElNVU0gUFJPRFVJVFMgRUxFQ1RST05JUVVFUwotCQkJCVpJIERFTFRBIElORFVTVFJJRQotCQkJCUJQIDcxIExBIFZBTEVOVElORQotCQkJCU1BUlNFSUxMRSBDRURFWCAxMSAgMTMzNjgKLQkJCQlGUkFOQ0UKLQotMTAtRTItRDUgICAoaGV4KQkJUWkgSGFyZHdhcmUgSW5jLgotMTBFMkQ1ICAgICAoYmFzZSAxNikJCVFpIEhhcmR3YXJlIEluYy4KLQkJCQk1NTUgNFRIIFNUUkVFVCAjNDAzCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtRTMtQzcgICAoaGV4KQkJU2VvaHdhIFRlbGVjb20KLTEwRTNDNyAgICAgKGJhc2UgMTYpCQlTZW9od2EgVGVsZWNvbQotCQkJCTY3OCBTZW9od2EgQmxkZwotCQkJCUdhc2FuLURvbmcsIEd1bWNoZW9uLUd1IFNlb3VsIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTAtRTYtQUUgICAoaGV4KQkJU291cmNlIFRlY2hub2xvZ2llcywgTExDCi0xMEU2QUUgICAgIChiYXNlIDE2KQkJU291cmNlIFRlY2hub2xvZ2llcywgTExDCi0JCQkJMjkxMCBXaGl0ZWhhbGwgUGFyayBEcml2ZQotCQkJCUNoYXJsb3R0ZSBOQyAyODI3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtRTgtRUUgICAoaGV4KQkJUGhhc2VTcGFjZQotMTBFOEVFICAgICAoYmFzZSAxNikJCVBoYXNlU3BhY2UKLQkJCQkxOTMzIERhdmlzIFN0IFN1aXRlIDMxMgotCQkJCVNhbiBMZWFuZHJvIENBIDk0NTc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMS0wMC1BQSAgIChoZXgpCQlQUklWQVRFCi0xMTAwQUEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTE0LTA3LTA4ICAgKGhleCkJCVBSSVZBVEUKLTE0MDcwOCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMTQtMDctRTAgICAoaGV4KQkJQWJyYW50aXggQUcKLTE0MDdFMCAgICAgKGJhc2UgMTYpCQlBYnJhbnRpeCBBRwotCQkJCUZvZXJybGlidWNrc3RyYXNzZSA2NgotCQkJCVp1ZXJpY2ggWkggODAwNQotCQkJCVNXSVRaRVJMQU5ECi0KLTE0LTE0LTRCICAgKGhleCkJCUZVSklBTiBTVEFSLU5FVCBDT01NVU5JQ0FUSU9OIENPLixMVEQKLTE0MTQ0QiAgICAgKGJhc2UgMTYpCQlGVUpJQU4gU1RBUi1ORVQgQ09NTVVOSUNBVElPTiBDTy4sTFRECi0JCQkJMTktMjIjIEJ1aWxkaW5nLFN0YXItbmV0IFNjaWVuY2UgUGxhemEsSnV5dWFuemhvdSwgCi0JCQkJNjE4IEppbnNoYW4gUm9hZAotCQkJCUZVWkhPVSBGVUpJQU4gMzUwMDAyCi0JCQkJQ0hJTkEKLQotMTQtMUItQkQgICAoaGV4KQkJVm9sZXggSW5jLgotMTQxQkJEICAgICAoYmFzZSAxNikJCVZvbGV4IEluYy4KLQkJCQk5MTUgVGF0ZSBCbHZkLiBTRQotCQkJCVN1aXRlIDEzMAotCQkJCUhpY2tvcnkgTkMgMjg2MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE0LTM1LUIzICAgKGhleCkJCUZ1dHVyZSBEZXNpZ25zLCBJbmMuCi0xNDM1QjMgICAgIChiYXNlIDE2KQkJRnV0dXJlIERlc2lnbnMsIEluYy4KLQkJCQkyNzAyIFRyaWFuYSBCbHZkCi0JCQkJSHVudHN2aWxsZSBBTCAzNTgwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTQtM0UtNjAgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTE0M0U2MCAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTYwMCBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDJFNgotCQkJCUNBTkFEQQotCi0xNC00Qy0xQSAgIChoZXgpCQlNYXggQ29tbXVuaWNhdGlvbiBHbWJICi0xNDRDMUEgICAgIChiYXNlIDE2KQkJTWF4IENvbW11bmljYXRpb24gR21iSAotCQkJCVNpZW1lbnNzdHJhc3NlIDQ3Ci0JCQkJUmVsbGluZ2VuICAyNTQ2MgotCQkJCUdFUk1BTlkKLQotMTQtNTQtMTIgICAoaGV4KQkJRW50aXMgQ28uLCBMdGQuCi0xNDU0MTIgICAgIChiYXNlIDE2KQkJRW50aXMgQ28uLCBMdGQuCi0JCQkJMi0yMC02LCBIYW5hb2thIEJsZGcsIDZGCi0JCQkJTmlob25iYXNoaSBIYW1hY2hvLCBDaHVvLWt1Ci0JCQkJVG9reW8gIDEwMzAwMDcKLQkJCQlKQVBBTgotCi0xNC01QS0wNSAgIChoZXgpCQlBcHBsZSwgSW5jLgotMTQ1QTA1ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xNC02RS0wQSAgIChoZXgpCQlQUklWQVRFCi0xNDZFMEEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTE0LTczLTczICAgKGhleCkJCVRVQklUQUsgVUVLQUUKLTE0NzM3MyAgICAgKGJhc2UgMTYpCQlUVUJJVEFLIFVFS0FFCi0JCQkJQU5JQkFMIFNULgotCQkJCUdFQlpFCi0JCQkJS09DQUVMSSAgNDE0NzAKLQkJCQlUVVJLRVkKLQotMTQtNzQtMTEgICAoaGV4KQkJUklNCi0xNDc0MTEgICAgIChiYXNlIDE2KQkJUklNCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgM1c4Ci0JCQkJQ0FOQURBCi0KLTE0LTdELUIzICAgKGhleCkJCUpPQSBURUxFQ09NLkNPLixMVEQKLTE0N0RCMyAgICAgKGJhc2UgMTYpCQlKT0EgVEVMRUNPTS5DTy4sTFRECi0JCQkJMTAwNyxTaWNveCB0b3dlciw1MTMtMTQsU2FuZ2RhZXdvbi1kb25nLEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjItODA2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTE0LUE2LTJDICAgKGhleCkJCVMuTS4gRGV6YWMgUy5BLgotMTRBNjJDICAgICAoYmFzZSAxNikJCVMuTS4gRGV6YWMgUy5BLgotCQkJCVZpYWwgU2FudCBqb3JkaSBTL04KLQkJCQlQb2wuIEluZC4gQ2FuIE1pdGphbnMKLQkJCQlWaWxhZGVjYXZhbGxzIEJhcmNlbG9uYSAwODIzMgotCQkJCVNQQUlOCi0KLTE0LUE4LTZCICAgKGhleCkJCVNoZW5aaGVuIFRlbGFjb20gU2NpZW5jZSZUZWNobm9sb2d5IENvLiwgTHRkCi0xNEE4NkIgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gVGVsYWNvbSBTY2llbmNlJlRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlCMTcwMS8xNzA1IFBhdmlsaW9uLCBIdWEgUWlhbmcgQmVpIFJENDAwMiwgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTE0LUE5LUUzICAgKGhleCkJCU1TVCBDT1JQT1JBVElPTgotMTRBOUUzICAgICAoYmFzZSAxNikJCU1TVCBDT1JQT1JBVElPTgotCQkJCTR0aCBGbG9vciBMYXdmb3JkIEhvdXNlCi0JCQkJQWxiZXJ0IFBsYWNlCi0JCQkJTG9uZG9uIEVuZ2xhbmQgTjMgMSBSTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTE0LUI3LTNEICAgKGhleCkJCUFSQ0hFQU4gVGVjaG5vbG9naWVzCi0xNEI3M0QgICAgIChiYXNlIDE2KQkJQVJDSEVBTiBUZWNobm9sb2dpZXMKLQkJCQkyMCBQbGFjZSBQcmF4IFBhcmlzCi0JCQkJTU9OVEFVQkFOICA4MjAwMAotCQkJCUZSQU5DRQotCi0xNC1DMi0xRCAgIChoZXgpCQlTYWJ0ZWNoIEluZHVzdHJpZXMKLTE0QzIxRCAgICAgKGJhc2UgMTYpCQlTYWJ0ZWNoIEluZHVzdHJpZXMKLQkJCQkyMzIzMSBMYSBQYWxtYSBBdmUKLQkJCQlZb3JiYSBMaW5kYSBDYSA5Mjg4Ny00Nzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xNC1ENi00RCAgIChoZXgpCQlELUxpbmsgSW50ZXJuYXRpb25hbAotMTRENjREICAgICAoYmFzZSAxNikJCUQtTGluayBJbnRlcm5hdGlvbmFsCi0JCQkJMSBJTlRFUk5BVElPTkFMIEJVU0lORVNTIFBBUksKLQkJCQkjMDMtMTIsIFRIRSBTWU5FUkdZIAotCQkJCTYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi0xNC1ENy02RSAgIChoZXgpCQlDT05DSCBFTEVDVFJPTklDIENvLixMdGQKLTE0RDc2RSAgICAgKGJhc2UgMTYpCQlDT05DSCBFTEVDVFJPTklDIENvLixMdGQKLQkJCQlOby4zIEtlamkgMXN0IExvYWQuCi0JCQkJVGFpbmFuICA3MDk1NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMTQtREEtRTkgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0xNERBRTkgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMTQtRUItMzMgICAoaGV4KQkJQlNNZWRpYXNvZnQgQ28uLCBMdGQuCi0xNEVCMzMgICAgIChiYXNlIDE2KQkJQlNNZWRpYXNvZnQgQ28uLCBMdGQuCi0JCQkJIzYwMywgR2FyZGVuIEJsZGcuLCAxNC0xMywgWW9pZG8tRG9uZywgWW91bmdkZXVuZ3BvLUd1Ci0JCQkJU2VvdWwgIDE1MC04NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTQtRUUtOUQgICAoaGV4KQkJQWlyTmF2IFN5c3RlbXMgTExDCi0xNEVFOUQgICAgIChiYXNlIDE2KQkJQWlyTmF2IFN5c3RlbXMgTExDCi0JCQkJNDY2MCBMYSBKb2xsYSBWaWxsYWdlIERyLiAtIFN1aXRlIDUwMAotCQkJCVNhbiBEaWVnbyBDYWxpZm9ybmlhIENBIDkyMTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xNC1GMC1DNSAgIChoZXgpCQlYdHJlbWlvIEx0ZC4KLTE0RjBDNSAgICAgKGJhc2UgMTYpCQlYdHJlbWlvIEx0ZC4KLQkJCQlQT0IgNTI0NgotCQkJCUhlcnplbHlpYSAgNDYxNTIKLQkJCQlJU1JBRUwKLQotMTQtRkUtQUYgICAoaGV4KQkJU0FHSVRUQVIgTElNSVRFRAotMTRGRUFGICAgICAoYmFzZSAxNikJCVNBR0lUVEFSIExJTUlURUQKLQkJCQkyLTEwMiwgQkxEMzQsIEJBSVdBTkdNT0xJWVVBTgotCQkJCVhJQkVJV0FORywgSEFJRElBTgotCQkJCUJFSUpJTkcgIDEwMDA5NAotCQkJCUNISU5BCi0KLTE0LUZFLUI1ICAgKGhleCkJCURlbGwgSW5jCi0xNEZFQjUgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TOlJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTAxLUUzICAgKGhleCkJCUVsZWt0cm9iaXQgV2lyZWxlc3MgQ29tbXVuaWNhdGlvbnMgTHRkCi0xODAxRTMgICAgIChiYXNlIDE2KQkJRWxla3Ryb2JpdCBXaXJlbGVzcyBDb21tdW5pY2F0aW9ucyBMdGQKLQkJCQlUdXRraWphbnRpZSA4Ci0JCQkJT3VsdSAgOTA1NzAKLQkJCQlGSU5MQU5ECi0KLTE4LTAzLTczICAgKGhleCkJCURlbGwgSW5jCi0xODAzNzMgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TOlJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTA2LTc1ICAgKGhleCkJCURJTEFYIEludGVsY29tIEdtYkgKLTE4MDY3NSAgICAgKGJhc2UgMTYpCQlESUxBWCBJbnRlbGNvbSBHbWJICi0JCQkJQWx0LU1vYWJpdCA5NmIKLQkJCQlCZXJsaW4gIDEwNTU5Ci0JCQkJR0VSTUFOWQotCi0xOC0wQi01MiAgIChoZXgpCQlOYW5vdHJvbiBUZWNobm9sb2dpZXMgR21iSAotMTgwQjUyICAgICAoYmFzZSAxNikJCU5hbm90cm9uIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJQWx0LU1vYWJpdCA2MAotCQkJCUJlcmxpbiAgMTA1NTUKLQkJCQlHRVJNQU5ZCi0KLTE4LTBDLTc3ICAgKGhleCkJCVdlc3Rpbmdob3VzZSBFbGVjdHJpYyBDb21wYW55LCBMTEMKLTE4MEM3NyAgICAgKGJhc2UgMTYpCQlXZXN0aW5naG91c2UgRWxlY3RyaWMgQ29tcGFueSwgTExDCi0JCQkJMTAwMCBXZXN0aW5naG91c2UgRHJpdmUKLQkJCQlTdWl0ZSAxNTIKLQkJCQlDcmFuYmVycnkgVG93bnNoaXAgUEEgMTYwNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTE0LTU2ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0xODE0NTYgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotMTgtMTctMTQgICAoaGV4KQkJREFFV09PSVMKLTE4MTcxNCAgICAgKGJhc2UgMTYpCQlEQUVXT09JUwotCQkJCTdGIE5hbWt3YW5nIENlbnRsZXggQmxkZy4gNDQwLTQgQ2hlb25nY2hlb24yLWRvbmcgCi0JCQkJSW5jaGVvbiBQdXB5ZW9uZy1ndSA4MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0xOC0yOC02MSAgIChoZXgpCQlBaXJUaWVzIFdpcmVsZXNzIE5ldHdvcmtzCi0xODI4NjEgICAgIChiYXNlIDE2KQkJQWlyVGllcyBXaXJlbGVzcyBOZXR3b3JrcwotCQkJCUfvv71sYmFoYXIgTWFoLiBBdm5pIERpbGxpZ2lsIFNvay4gQ2VsaWsgSXMgTWVya2V6aSBObzo1IE1lY2lkaXlla295Ci0JCQkJSVNUQU5CVUwgIDM0Mzk0Ci0JCQkJVFVSS0VZCi0KLTE4LTNCLUQyICAgKGhleCkJCUJZRCBQcmVjaXNpb24gTWFudWZhY3R1cmUgQ29tcGFueSBMdGQuCi0xODNCRDIgICAgIChiYXNlIDE2KQkJQllEIFByZWNpc2lvbiBNYW51ZmFjdHVyZSBDb21wYW55IEx0ZC4KLQkJCQlObzMwMDAgTG9uZ0RvbmcgQXZlbnVlLCBQdWRvbmcgRGlzdHJpY3QKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMTgtM0QtQTIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0xODNEQTIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0xOC00Mi0yRiAgIChoZXgpCQlBbGNhdGVsIEx1Y2VudAotMTg0MjJGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTHVjZW50Ci0JCQkJVmlhIFRyZW50bywgMzAKLQkJCQlWaW1lcmNhdGUgTUIgMjAwNTkKLQkJCQlJVEFMWQotCi0xOC00RS05NCAgIChoZXgpCQlNRVNTT0EgVEVDSE5PTE9HSUVTIElOQy4KLTE4NEU5NCAgICAgKGJhc2UgMTYpCQlNRVNTT0EgVEVDSE5PTE9HSUVTIElOQy4KLQkJCQkxMzYxMSAxMnRoIFN0LiwgVW5pdCBCCi0JCQkJQ2hpbm8gQ0EgOTE3MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTgwLUNFICAgKGhleCkJCUJhcmJlcnJ5IFNvbHV0aW9ucyBMdGQKLTE4ODBDRSAgICAgKGJhc2UgMTYpCQlCYXJiZXJyeSBTb2x1dGlvbnMgTHRkCi0JCQkJMi8xMyBOYXZpdGkgUGxhY2UKLQkJCQlCcm93bnMgQmF5Ci0JCQkJQXVja2xhbmQgIDA2MzAKLQkJCQlORVcgWkVBTEFORAotCi0xOC04MC1GNSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudCBTaGFuZ2hhaSBCZWxsIENvLiwgTHRkIAotMTg4MEY1ICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50IFNoYW5naGFpIEJlbGwgQ28uLCBMdGQgCi0JCQkJTm8uIDM4OSwgTmluZ3FpYW8gUm9hZCwgUHVkb25nIEppbnFpYW8sCi0JCQkJU2hhbmdoYWkgIDIwMTIwNgotCQkJCUNISU5BCi0KLTE4LTg2LUFDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0xODg2QUMgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTE4LThFLUQ1ICAgKGhleCkJCVBoaWxpcHMgSW5ub3ZhdGl2ZSBBcHBsaWNhdGlvbiBOViAKLTE4OEVENSAgICAgKGJhc2UgMTYpCQlQaGlsaXBzIElubm92YXRpdmUgQXBwbGljYXRpb24gTlYgCi0JCQkJUGF0aG9la2V3ZWcgMTEKLQkJCQlCcnVnZXMgV2VzdCBGbGFuZGVycyA4MDAwCi0JCQkJQkVMR0lVTQotCi0xOC05Mi0yQyAgIChoZXgpCQlWaXJ0dWFsIEluc3RydW1lbnRzCi0xODkyMkMgICAgIChiYXNlIDE2KQkJVmlydHVhbCBJbnN0cnVtZW50cwotCQkJCTEwMCBFbnRlcnByaXNlIFdheQotCQkJCVN1aXRlIEMtMwotCQkJCVNjb3R0cyBWYWxsZXkgQ0EgOTUwNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUE5LTA1ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMThBOTA1ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xOC1BQi1GNSAgIChoZXgpCQlVbHRyYSBFbGVjdHJvbmljcyAtIEVsZWN0cmljcwotMThBQkY1ICAgICAoYmFzZSAxNikJCVVsdHJhIEVsZWN0cm9uaWNzIC0gRWxlY3RyaWNzCi0JCQkJS2luZ3NkaXRjaCBMYW5lCi0JCQkJQ2hlbHRlbmhhbSBHbG91Y2VzdGVyc2hpcmUgR0w1MSA5UEcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0xOC1BRS1CQiAgIChoZXgpCQlTaWVtZW5zIFByb2dyYW1tLSB1bmQgU3lzdGVtZW50d2lja2x1bmcgR21iSCZDby5LRwotMThBRUJCICAgICAoYmFzZSAxNikJCVNpZW1lbnMgUHJvZ3JhbW0tIHVuZCBTeXN0ZW1lbnR3aWNrbHVuZyBHbWJIJkNvLktHCi0JCQkJQ29tbXVuaWNhdGlvbnMsIE1lZGlhIGFuZCBUZWNobm9sb2d5Ci0JCQkJSGFyYnVyZ2VyIFNjaGxvc3NzdHJhc3NlIDE4Ci0JCQkJSGFtYnVyZyAgRC0yMTA3OQotCQkJCUdFUk1BTlkKLQotMTgtQUYtOUYgICAoaGV4KQkJRElHSVRST05JQyBBdXRvbWF0aW9uc2FubGFnZW4gR21iSAotMThBRjlGICAgICAoYmFzZSAxNikJCURJR0lUUk9OSUMgQXV0b21hdGlvbnNhbmxhZ2VuIEdtYkgKLQkJCQlBdWYgZGVyIExhbmd3aWVzIDEKLQkJCQlXYWxsYmFjaCBIZXNzZW4gNjU1MTAKLQkJCQlHRVJNQU5ZCi0KLTE4LUIyLTA5ICAgKGhleCkJCVRvcnJleSBQaW5lcyBMb2dpYywgSW5jCi0xOEIyMDkgICAgIChiYXNlIDE2KQkJVG9ycmV5IFBpbmVzIExvZ2ljLCBJbmMKLQkJCQkxMjY1MSBIaWdoIEJsdWZmIERyaXZlLCAjMTAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xOC1CMy1CQSAgIChoZXgpCQlOZXRsb2dpYyBBQgotMThCM0JBICAgICAoYmFzZSAxNikJCU5ldGxvZ2ljIEFCCi0JCQkJRGF0YXbvv71nZW4gMTRBCi0JCQkJQVNLSU0gVu+/vXN0cmEgR++/vXRhbGFuZCA0MzYzMgotCQkJCVNXRURFTgotCi0xOC1CNC0zMCAgIChoZXgpCQlOZXN0IExhYnMgSW5jLgotMThCNDMwICAgICAoYmFzZSAxNikJCU5lc3QgTGFicyBJbmMuCi0JCQkJMjM1IEFsbWEgCi0JCQkJUGFsbyBBbHRvIENBIDk0MzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xOC1CNy05RSAgIChoZXgpCQlJbnZveGlhCi0xOEI3OUUgICAgIChiYXNlIDE2KQkJSW52b3hpYQotCQkJCTg3IHJ1ZSBkdSBHb3V2ZXJuZXVyIEfvv71uZXJhbCBFYm9177+9Ci0JCQkJSXNzeS1MZXMtTW91bGluZWF1eCAgOTIxMzAKLQkJCQlGUkFOQ0UKLQotMTgtQzAtODYgICAoaGV4KQkJQnJvYWRjb20gQ29ycG9yYXRpb24KLTE4QzA4NiAgICAgKGJhc2UgMTYpCQlCcm9hZGNvbSBDb3Jwb3JhdGlvbgotCQkJCTUzMDAgQ2FsaWZvcm5pYSBBdmVudWUKLQkJCQlJcnZpbmUgQ0EgOTI2MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUQwLTcxICAgKGhleCkJCURBU0FOIFNNQywgSW5jLgotMThEMDcxICAgICAoYmFzZSAxNikJCURBU0FOIFNNQywgSW5jLgotCQkJCTMwOSwgIEJ1bmRhbmcgVGVjaG5vIFBhcmssIDE1MSwgWWF0YXAtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTgtRTItODggICAoaGV4KQkJU1RUIENvbmRpZ2kKLTE4RTI4OCAgICAgKGJhc2UgMTYpCQlTVFQgQ29uZGlnaQotCQkJCUFnbmVzZnJpZHN2YWdlbiAxMTMgQQotCQkJCU1hbG1vIFNrYW5lIDIxMjM3Ci0JCQkJU1dFREVOCi0KLTE4LUU3LUY0ICAgKGhleCkJCUFwcGxlCi0xOEU3RjQgICAgIChiYXNlIDE2KQkJQXBwbGUKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUVGLTYzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTE4RUY2MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUY0LTZBICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTE4RjQ2QSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMTgtRjYtNTAgICAoaGV4KQkJTXVsdGltZWRpYSBQYWNpZmljIExpbWl0ZWQKLTE4RjY1MCAgICAgKGJhc2UgMTYpCQlNdWx0aW1lZGlhIFBhY2lmaWMgTGltaXRlZAotCQkJCTEgTWF0aGVzb24gU3RyZWV0LCBTaGVsbCBUb3dlciAyOUYvMTIKLQkJCQlUaW1lIFNxdWFyZSwgQ2F1c2V3YXkgQmF5Ci0JCQkJMDAwMDAwCi0JCQkJSE9ORyBLT05HCi0KLTE4LUZDLTlGICAgKGhleCkJCUNoYW5naGUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0xOEZDOUYgICAgIChiYXNlIDE2KQkJQ2hhbmdoZSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQk2dGggRmxvb3IsIEJ1aWxkaW5nIEIsIERhamlhaGFvIFNxdWFyZSwgWXXvv73vv71hbiAxc3QgUm9hZCwgQmFv77+977+9YW4sIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDEKLQkJCQlDSElOQQotCi0xQy0wNi01NiAgIChoZXgpCQlJRFkgQ29ycG9yYXRpb24KLTFDMDY1NiAgICAgKGJhc2UgMTYpCQlJRFkgQ29ycG9yYXRpb24KLQkJCQlJREVNSVRTVSBLb3Jha3VlbiBCbGQgOUYKLQkJCQkxLTItMSBLb2lzaGlrYXdhCi0JCQkJQnVua3lvLWt1IFRva3lvIDExMi0wMDAyCi0JCQkJSkFQQU4KLQotMUMtMEYtQ0YgICAoaGV4KQkJU3lwcm8gT3B0aWNzIEdtYkgKLTFDMEZDRiAgICAgKGJhc2UgMTYpCQlTeXBybyBPcHRpY3MgR21iSAotCQkJCUNhcmwtWmVpc3MtUHJvbWVuYWRlIDEwCi0JCQkJSmVuYSBUaHVyaW5naWEgMDc3NDUKLQkJCQlHRVJNQU5ZCi0KLTFDLTEyLTlEICAgKGhleCkJCUlFRUUgUEVTIFBTUkMvU1VCICAgICAKLTFDMTI5RCAgICAgKGJhc2UgMTYpCQlJRUVFIFBFUyBQU1JDL1NVQiAgICAgCi0JCQkJIFdvcmtpbmcgR3JvdXAgSDcvU3ViIEM3IChJRUVFIFBDMzcuMjM4KQotCQkJCTQ0NSBIb2VzIExhbmUKLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xQy0xNC00OCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMUMxNDQ4ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtMTctRDMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMUMxN0QzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtMTgtNEEgICAoaGV4KQkJU2hlblpoZW4gUmljaGVyTGluayBUZWNobm9sb2dpZXMgQ28uLExURAotMUMxODRBICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIFJpY2hlckxpbmsgVGVjaG5vbG9naWVzIENvLixMVEQKLQkJCQk3MDMsQnVpbGRpbmcgVzEtQSxIaWdoLVRlY2ggSW5kdXN0cmlhbCBQYXJrLEtlSmlOYW4gMXN0IFJvYWQsTmFuU2hhbiwKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMUMtMTktREUgICAoaGV4KQkJZXlldmlzIEdtYkgKLTFDMTlERSAgICAgKGJhc2UgMTYpCQlleWV2aXMgR21iSAotCQkJCUh1bmRzc2NobGVlc3RyYXNzZSAyMwotCQkJCVJldXRsaW5nZW4gQlcgNzI3NjYKLQkJCQlHRVJNQU5ZCi0KLTFDLTFELTY3ICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTFDMUQ2NyAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotMUMtMzMtNEQgICAoaGV4KQkJSVRTIFRlbGVjb20KLTFDMzM0RCAgICAgKGJhc2UgMTYpCQlJVFMgVGVsZWNvbQotCQkJCTI5IEhhbWV0enVkYSBzdC4gCi0JCQkJQXp1ciBJc3JhZWwgNTgwMDAxCi0JCQkJSVNSQUVMCi0KLTFDLTM1LUYxICAgKGhleCkJCU5FVyBMaWZ0IE5ldWUgRWxla3Ryb25pc2NoZSBXZWdlIFN0ZXVlcnVuZ3NiYXUgR21iSAotMUMzNUYxICAgICAoYmFzZSAxNikJCU5FVyBMaWZ0IE5ldWUgRWxla3Ryb25pc2NoZSBXZWdlIFN0ZXVlcnVuZ3NiYXUgR21iSAotCQkJCUxvY2hoYW1lciBTY2hsYWcgOAotCQkJCUdyYWVmZWxmaW5nIEJhdmFyaWEgODIxNjYKLQkJCQlHRVJNQU5ZCi0KLTFDLTNBLTRGICAgKGhleCkJCUFjY3VTcGVjIEVsZWN0cm9uaWNzLCBMTEMKLTFDM0E0RiAgICAgKGJhc2UgMTYpCQlBY2N1U3BlYyBFbGVjdHJvbmljcywgTExDCi0JCQkJODE0MCBIYXd0aG9ybmUgRHJpdmUKLQkJCQlFcmllIFBlbm5zeWx2YW5pYSAxNjUwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtM0QtRTcgICAoaGV4KQkJU2lnbWEgS29raSBDby4sTHRkLgotMUMzREU3ICAgICAoYmFzZSAxNikJCVNpZ21hIEtva2kgQ28uLEx0ZC4KLQkJCQkxLTE5LTkgTWlkb3JpCi0JCQkJU3VtaWRhLWt1IFRva3lvIDEzMC0wMDIxCi0JCQkJSkFQQU4KLQotMUMtNEItRDYgICAoaGV4KQkJQXp1cmVXYXZlCi0xQzRCRDYgICAgIChiYXNlIDE2KQkJQXp1cmVXYXZlCi0JCQkJOEYuLCBOby4gOTQsIEJhb3Nob25nIFJkLgotCQkJCVhpbmRpYW4gQ2l0eSwgVGFpcGVpIENvdW50eSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0xQy02NS05RCAgIChoZXgpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMUM2NTlEICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsOTAsQ2hpZW4gMSBSb2FkLENodW5nSG8sVGFpcGVpIEhzaWVuLAotCQkJCVRhaXBlaSAgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTFDLTZGLTY1ICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0xQzZGNjUgICAgIChiYXNlIDE2KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlQaW4tSmVuIENpdHksCi0JCQkJUGluLUplbiBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMUMtNzUtMDggICAoaGV4KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURC4gCi0xQzc1MDggICAgIChiYXNlIDE2KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURC4gCi0JCQkJTk8uIDI1LCBUSEUgM1JEIFN0cmVldCBLVU5TSEFOIEVYUE9SVCBQUk9DRVNTSU5HIFpPTkUgCi0JCQkJS1VOU0hBTiBTVVpIT1UgIDIxNTMwMCAKLQkJCQlDSElOQQotCi0xQy03Qy0xMSAgIChoZXgpCQlFSUQgCi0xQzdDMTEgICAgIChiYXNlIDE2KQkJRUlEIAotCQkJCVJ1YSBRdWludGEgZG9zIE1lZHJvbmhlaXJvcyAKLQkJCQlDaGFybmVjYSBkYSBDYXBhcmljYSAgIDI4MjAtNDg2Ci0JCQkJUE9SVFVHQUwKLQotMUMtN0UtRTUgICAoaGV4KQkJRC1MaW5rIEludGVybmF0aW9uYWwKLTFDN0VFNSAgICAgKGJhc2UgMTYpCQlELUxpbmsgSW50ZXJuYXRpb25hbAotCQkJCTEgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBQYXJrLCAjMDMtMTIsIFRoZSBTeW5lcmd5IAotCQkJCTYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi0xQy04My1CMCAgIChoZXgpCQlMaW5rZWQgSVAgR21iSAotMUM4M0IwICAgICAoYmFzZSAxNikJCUxpbmtlZCBJUCBHbWJICi0JCQkJS2lyY2hlbnN0cmFzc2UgOQotCQkJCUFuaWYgLyBOaWVkZXJhbG0gU0JHIDUwODEKLQkJCQlBVVNUUklBCi0KLTFDLThGLThBICAgKGhleCkJCVBoYXNlIE1vdGlvbiBDb250cm9sIFNwQQotMUM4RjhBICAgICAoYmFzZSAxNikJCVBoYXNlIE1vdGlvbiBDb250cm9sIFNwQQotCQkJCXZpYSBBZGFtb2xpLCA0NjEKLQkJCQlHZW5vdmEgIElUMTYxNDEKLQkJCQlJVEFMWQotCi0xQy05NS01RCAgIChoZXgpCQlJLUxBWCBFTEVDVFJPTklDUyBJTkMuCi0xQzk1NUQgICAgIChiYXNlIDE2KQkJSS1MQVggRUxFQ1RST05JQ1MgSU5DLgotCQkJCTIyODMgQVJHRU5USUEgUkQuLSBVTklUICMgMTAKLQkJCQlNSVNTSVNTQVVHQSBPTi4gTDVOIDVaMgotCQkJCUNBTkFEQQotCi0xQy1BQS0wNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0xQ0FBMDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xQy1BRi1GNyAgIChoZXgpCQlELUxJTksgSU5URVJOQVRJT05BTCBQVEUgTElNSVRFRAotMUNBRkY3ICAgICAoYmFzZSAxNikJCUQtTElOSyBJTlRFUk5BVElPTkFMIFBURSBMSU1JVEVECi0JCQkJMSBJTlRFUk5BVElPTkFMICBCVVNJTkVTUyAgUEFSSywKLQkJCQkgIzAzLTEyLCBUSEUgU1lORVJHWQotCQkJCTYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi0xQy1CRC0wRSAgIChoZXgpCQlBbXBsaWZpZWQgRW5naW5lZXJpbmcgUHR5IEx0ZAotMUNCRDBFICAgICAoYmFzZSAxNikJCUFtcGxpZmllZCBFbmdpbmVlcmluZyBQdHkgTHRkCi0JCQkJNSBUdXJuZXIgQXZlbnVlCi0JCQkJQmVudGxleSBXQSA2MTAyCi0JCQkJQVVTVFJBTElBCi0KLTFDLUJELUI5ICAgKGhleCkJCUQtTElOSyBJTlRFUk5BVElPTkFMIFBURSBMSU1JVEVECi0xQ0JEQjkgICAgIChiYXNlIDE2KQkJRC1MSU5LIElOVEVSTkFUSU9OQUwgUFRFIExJTUlURUQKLQkJCQkxIElOVEVSTkFUSU9OQUwgIEJVU0lORVNTICBQQVJLLCAjMDMtMTIKLQkJCQlUSEUgU1lORVJHWSwgIDYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi0xQy1DMS1ERSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTFDQzFERSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtREYtMEYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMUNERjBGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtRTItQ0MgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTFDRTJDQyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtRjAtNjEgICAoaGV4KQkJU0NBUFMgR21iSAotMUNGMDYxICAgICAoYmFzZSAxNikJCVNDQVBTIEdtYkgKLQkJCQlCYWhuaG9mc3RyLiAxNwotCQkJCURlaXNlbmhvZmVuIEJhdmFyaWEgODIwNDEKLQkJCQlHRVJNQU5ZCi0KLTFDLUY1LUU3ICAgKGhleCkJCVR1cnRsZSBJbmR1c3RyeSBDby4sIEx0ZC4KLTFDRjVFNyAgICAgKGJhc2UgMTYpCQlUdXJ0bGUgSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJMS0xMi00IE5pc2hpbmVtaW5hbWkKLQkJCQlUc3V0aXVyYSBJYmFyYWtpIDMwMC0wODQyCi0JCQkJSkFQQU4KLQotMUMtRkUtQTcgICAoaGV4KQkJSURlbnR5dGVjaCBTb2x1dGlucyBMdGQuCi0xQ0ZFQTcgICAgIChiYXNlIDE2KQkJSURlbnR5dGVjaCBTb2x1dGlucyBMdGQuCi0JCQkJMTQgSGFkYXlhIFN0cmVldCAKLQkJCQlSYW1hdC0gSGFzaGFyb24gIDQ3MjI2Ci0JCQkJSVNSQUVMCi0KLTIwLTA1LUU4ICAgKGhleCkJCU9PTyAiSW5Qcm9NZWRpYSIKLTIwMDVFOCAgICAgKGJhc2UgMTYpCQlPT08gIkluUHJvTWVkaWEiCi0JCQkJcHIuNDgwNiwgZC42Ci0JCQkJWmVsZW5vZ3JhZCBNb3Njb3cgMTI0NDY2Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTIwLTBBLTVFICAgKGhleCkJCVhpYW5nc2hhbiBHaWFudCBFYWdsZSBUZWNobm9sb2d5IERldmVsb3BpbmcgY28uLExURAotMjAwQTVFICAgICAoYmFzZSAxNikJCVhpYW5nc2hhbiBHaWFudCBFYWdsZSBUZWNobm9sb2d5IERldmVsb3BpbmcgY28uLExURAotCQkJCUp1ZXhpIFJvYWQgbm8uOSBKdWV4aSBzdHJlZXQgCi0JCQkJWGlhbmdzaGFuIENvdW50eSBaaGVqaWFuZyBQcm92aW5jZQotCQkJCU5pbmdibyBaaGVqaWFuZyAzMTU3MDgKLQkJCQlDSElOQQotCi0yMC0xMi01NyAgIChoZXgpCQlNb3N0IEx1Y2t5IFRyYWRpbmcgTHRkCi0yMDEyNTcgICAgIChiYXNlIDE2KQkJTW9zdCBMdWNreSBUcmFkaW5nIEx0ZAotCQkJCVJvb200MDMgTm8uNTA2IFpob25nc2hhbiBTb3V0aCAybmQgUm9hZCxYdWh1aSBEaXN0cmljdCAKLQkJCQlTaGFuZ2hhaSAgMjAwMDMyCi0JCQkJQ0hJTkEKLQotMjAtMTMtRTAgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0yMDEzRTAgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTIwLTIxLUE1ICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIEluYwotMjAyMUE1ICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIEluYwotCQkJCTYwLTM5LEdhc2FuLWRvbmcsR3VtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTAyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yMC0yQi1DMSAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0yMDJCQzEgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxMDEwOAotCQkJCUNISU5BCi0KLTIwLTJDLUI3ICAgKGhleCkJCUtvbmcgWXVlIEVsZWN0cm9uaWNzICYgSW5mb3JtYXRpb24gSW5kdXN0cnkgKFhpbmh1aSkgTHRkLgotMjAyQ0I3ICAgICAoYmFzZSAxNikJCUtvbmcgWXVlIEVsZWN0cm9uaWNzICYgSW5mb3JtYXRpb24gSW5kdXN0cnkgKFhpbmh1aSkgTHRkLgotCQkJCUtvbmcgWXVlIEluZHVzdHJpYWwgUGFyaywgMTggS29uZ3l1ZSBSb2FkLCBKaW5ndXpob3UKLQkJCQlYaW5odWkgRGlzdHJpY3QsIAotCQkJCUppYW5nbWVuIEd1YW5nZG9uZyA1MjkxNDEKLQkJCQlDSElOQQotCi0yMC0zNy0wNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0yMDM3MDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMjAtNDAtMDUgICAoaGV4KQkJZmVubyBHbWJICi0yMDQwMDUgICAgIChiYXNlIDE2KQkJZmVubyBHbWJICi0JCQkJS29scGluZ3JpbmcgMjIKLQkJCQlPYmVyaGFjaGluZyBCYXZhcmlhIDgyMDQxCi0JCQkJR0VSTUFOWQotCi0yMC00MS01QSAgIChoZXgpCQlTbWFydGVoIGQuby5vLgotMjA0MTVBICAgICAoYmFzZSAxNikJCVNtYXJ0ZWggZC5vLm8uCi0JCQkJVHJnIHRpZ3JvdmNldiAxCi0JCQkJVG9sbWluICA1MjIwCi0JCQkJU0xPVkVOSUEKLQotMjAtNDYtRjkgICAoaGV4KQkJQWR2YW5jZWQgTmV0d29yayBEZXZpY2VzIChkYmE6QU5EKQotMjA0NkY5ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIE5ldHdvcmsgRGV2aWNlcyAoZGJhOkFORCkKLQkJCQkzODIwIFZlbnR1cmEgRHJpdmUKLQkJCQlBcmxpbmd0b24gSGVpZ2h0cyBJTCA2MDAwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMjAtNEEtQUEgICAoaGV4KQkJSGFuc2NhbiBTcGFpbiBTLkEuCi0yMDRBQUEgICAgIChiYXNlIDE2KQkJSGFuc2NhbiBTcGFpbiBTLkEuCi0JCQkJQXZkYS4gZGUgbGEgVmVnYSwgMQotCQkJCUFsY29iZW5kYXMgTWFkcmlkIDI4MTA4Ci0JCQkJU1BBSU4KLQotMjAtNEUtNkIgICAoaGV4KQkJQXh4YW5hKGlzcmFlbCkgbHRkCi0yMDRFNkIgICAgIChiYXNlIDE2KQkJQXh4YW5hKGlzcmFlbCkgbHRkCi0JCQkJSGFiYXJ6ZWwgMzgKLQkJCQlUZWwgYXZpdiAgNjk3MTAKLQkJCQlJU1JBRUwKLQotMjAtNEUtN0YgICAoaGV4KQkJTkVUR0VBUgotMjA0RTdGICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBTElGT1JOSUEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLTU5LUEwICAgKGhleCkJCVBhcmFnb24gVGVjaG5vbG9naWVzIEluYy4KLTIwNTlBMCAgICAgKGJhc2UgMTYpCQlQYXJhZ29uIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNjggTm9ydGggNHRoIFJpbmcgUmQgV2VzdCwKLQkJCQlTdWl0ZSAxNUItSAotCQkJCUJlaWppbmcgIDEwMDA4MAotCQkJCUNISU5BCi0KLTIwLTVCLTJBICAgKGhleCkJCVBSSVZBVEUKLTIwNUIyQSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMjAtNkEtOEEgICAoaGV4KQkJV2lzdHJvbiBJbmZvQ29tbSBNYW51ZmFjdHVyaW5nKEt1bnNoYW4pQ28uLEx0ZC4KLTIwNkE4QSAgICAgKGJhc2UgMTYpCQlXaXN0cm9uIEluZm9Db21tIE1hbnVmYWN0dXJpbmcoS3Vuc2hhbilDby4sTHRkLgotCQkJCTE2OCMgRmlyc3QgQXZlbnVlLEt1bnNoYW4gRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCUt1bnNoYW4gSmlhbmdzdSAyMTUzMDAKLQkJCQlDSElOQQotCi0yMC02QS1GRiAgIChoZXgpCQlBdGxhcyBFbGVrdHJvbmlrIFVLIExpbWl0ZWQKLTIwNkFGRiAgICAgKGJhc2UgMTYpCQlBdGxhcyBFbGVrdHJvbmlrIFVLIExpbWl0ZWQKLQkJCQlBMjIgQnVsaWRpbmcsIERvcnNldCBHcmVlbiBUZWNoLiBQYXJrCi0JCQkJV2luZnJpdGggTmV3YnVyZ2gKLQkJCQlEb3JjaGVzdGVyIERvcnNldCBEVDIgOFpCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMjAtNkYtRUMgICAoaGV4KQkJQnJhZW1hYyBDQSBMTEMKLTIwNkZFQyAgICAgKGJhc2UgMTYpCQlCcmFlbWFjIENBIExMQwotCQkJCTQzMTM0IE9zZ29vZCBSb2FkCi0JCQkJRnJlbW9udCBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMjAtN0MtOEYgICAoaGV4KQkJUXVhbnRhIE1pY3Jvc3lzdGVtcyxJbmMuCi0yMDdDOEYgICAgIChiYXNlIDE2KQkJUXVhbnRhIE1pY3Jvc3lzdGVtcyxJbmMuCi0JCQkJTm8uNSBMYW5lIDkxLERvbmdtZWkgUmQuCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0yMC1BMi1FNyAgIChoZXgpCQlMZWUtRGlja2VucyBMdGQKLTIwQTJFNyAgICAgKGJhc2UgMTYpCQlMZWUtRGlja2VucyBMdGQKLQkJCQlSdXNodG9uIFJkCi0JCQkJRGVzYm9yb3VnaAotCQkJCUtldHRlcmluZyBOb3J0aGFtcHRvbnNoaXJlIE5OMTQgMlFXCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMjAtQUEtMjUgICAoaGV4KQkJSVAtTkVUIExMQwotMjBBQTI1ICAgICAoYmFzZSAxNikJCUlQLU5FVCBMTEMKLQkJCQkxMDI1NiBOLlcuIDQ3dGggU3QuCi0JCQkJU3VucmlzZSBGTCAzMzM1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMjAtQjAtRjcgICAoaGV4KQkJRW5jbHVzdHJhIEdtYkgKLTIwQjBGNyAgICAgKGJhc2UgMTYpCQlFbmNsdXN0cmEgR21iSAotCQkJCVRlY2hub3BhcmtzdHJhc3NlIDEKLQkJCQladXJpY2ggWkggQ0gtODAwNQotCQkJCVNXSVRaRVJMQU5ECi0KLTIwLUIzLTk5ICAgKGhleCkJCUVudGVyYXN5cwotMjBCMzk5ICAgICAoYmFzZSAxNikJCUVudGVyYXN5cwotCQkJCTUwIE1pbnV0ZW1hbiBSZAotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLUI3LUMwICAgKGhleCkJCU9taWNyb24gZWxlY3Ryb25pY3MgR21iSAotMjBCN0MwICAgICAoYmFzZSAxNikJCU9taWNyb24gZWxlY3Ryb25pY3MgR21iSAotCQkJCU9iZXJlcyBSaWVkIDEKLQkJCQlLbGF1cyAgNjgzMwotCQkJCUFVU1RSSUEKLQotMjAtQkYtREIgICAoaGV4KQkJRFZMCi0yMEJGREIgICAgIChiYXNlIDE2KQkJRFZMCi0JCQkJMjEgR3JhZGluaWxvciBTdHIKLQkJCQlDaGlzaW5hdSAgTUQyMDAxCi0JCQkJTU9MRE9WQSwgUkVQVUJMSUMgT0YKLQotMjAtQ0YtMzAgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0yMENGMzAgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwgCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTIwLUQ1LUFCICAgKGhleCkJCUtvcmVhIEluZm9jb20gQ28uLEx0ZC4KLTIwRDVBQiAgICAgKGJhc2UgMTYpCQlLb3JlYSBJbmZvY29tIENvLixMdGQuCi0JCQkJNUYgV2ludGVrIEIvRCA1MTEKLQkJCQlQb2lsLWRvbmcKLQkJCQlVaXdhbmcgS3l1bmdnaS1EbyA0MzctODMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTIwLUQ2LTA3ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0yMEQ2MDcgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotMjAtRDktMDYgICAoaGV4KQkJSW90YSwgSW5jLgotMjBEOTA2ICAgICAoYmFzZSAxNikJCUlvdGEsIEluYy4KLQkJCQkyMjEyIFF1ZWVuIEFubmUgQXZlLiBOLiwgIzM0OAotCQkJCVNlYXR0bGUgV0EgOTgxMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLUZELUYxICAgKGhleCkJCTNDT00gRVVST1BFIExURAotMjBGREYxICAgICAoYmFzZSAxNikJCTNDT00gRVVST1BFIExURAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydGZvcmRzaGlyZSBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMjAtRkUtQ0QgICAoaGV4KQkJU3lzdGVtIEluIEZyb250aWVyIEluYy4KLTIwRkVDRCAgICAgKGJhc2UgMTYpCQlTeXN0ZW0gSW4gRnJvbnRpZXIgSW5jLgotCQkJCTRGIFNoaW5zdXp1aGFydSBCbGRnLiAyLTgtMyBBa2Vib25vY3lvCi0JCQkJVGFjaGlrYXdhLXNoaSBUb2t5byAxOTAtMDAxMgotCQkJCUpBUEFOCi0KLTIwLUZFLURCICAgKGhleCkJCU0yTSBTb2x1dGlvbiBTLkEuUy4KLTIwRkVEQiAgICAgKGJhc2UgMTYpCQlNMk0gU29sdXRpb24gUy5BLlMuCi0JCQkJQ2VudHJlIGQnQWZmYWlyZXMgUmVndXMgQmF0LkQKLQkJCQk0NSBBbGxlZSBkZXMgT3JtZXMKLQkJCQlNb3VnaW5zICAgMDYyNTQgCi0JCQkJRlJBTkNFCi0KLTI0LTBCLTJBICAgKGhleCkJCVZpZXR0ZWwgR3JvdXAKLTI0MEIyQSAgICAgKGJhc2UgMTYpCQlWaWV0dGVsIEdyb3VwCi0JCQkJQ2VudGVyIGZvciBSZXNlYXJjaCBhbmQgRGV2ZWxvcG1lbnQKLQkJCQkwMSBHaWFuZyBWYW4gTWluaCwgQmEgRGluaAotCQkJCUhhbm9pICAxMTExCi0JCQkJVklFVE5BTQotCi0yNC0xQS04QyAgIChoZXgpCQlTcXVhcmVoZWFkIFRlY2hub2xvZ3kgQVMKLTI0MUE4QyAgICAgKGJhc2UgMTYpCQlTcXVhcmVoZWFkIFRlY2hub2xvZ3kgQVMKLQkJCQlQTyBCb3ggMTMgTnlkYWxlbgotCQkJCU9zbG8gIE5PLTA0MTAKLQkJCQlOT1JXQVkKLQotMjQtMUYtMkMgICAoaGV4KQkJQ2Fsc3lzLCBJbmMuCi0yNDFGMkMgICAgIChiYXNlIDE2KQkJQ2Fsc3lzLCBJbmMuCi0JCQkJMjcwMCBBdWd1c3RpbmUgZHJpdmUsIFN0ZTE0NQotCQkJCVNhbnRhIENsYXJhIENhbGlmb3JuaWEgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LTIxLUFCICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0yNDIxQUIgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCAgMjIxODgKLQkJCQlTV0VERU4KLQotMjQtM0MtMjAgICAoaGV4KQkJRHluYW1vZGUgR3JvdXAKLTI0M0MyMCAgICAgKGJhc2UgMTYpCQlEeW5hbW9kZSBHcm91cAotCQkJCUhlYWQgT2ZmaWNlLCAxMzJhIFN0IEFsYmFucyBSb2FkCi0JCQkJV2F0Zm9yZCBIZXJ0cyBXRDI0IDRBRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTI0LTQ1LTk3ICAgKGhleCkJCUdFTVVFIEdlYnIuIE11ZWxsZXIgQXBwYXJhdGViYXUKLTI0NDU5NyAgICAgKGJhc2UgMTYpCQlHRU1VRSBHZWJyLiBNdWVsbGVyIEFwcGFyYXRlYmF1Ci0JCQkJRnJpdHotTXVlbGxlci1TdHJhc3NlIDYtOAotCQkJCUluZ2VsZmluZ2VuIENyaWVzYmFjaCAgNzQ2NTMKLQkJCQlHRVJNQU5ZCi0KLTI0LTQ3LTBFICAgKGhleCkJCVBlbnRyb25pY0FCCi0yNDQ3MEUgICAgIChiYXNlIDE2KQkJUGVudHJvbmljQUIKLQkJCQlCZXJnc2xpZGVuIDEKLQkJCQlHVU5ORUJPICA1OTA5MwotCQkJCVNXRURFTgotCi0yNC00OS03QiAgIChoZXgpCQlJbm5vdmF0aXZlIENvbnZlcmdlZCBEZXZpY2VzIEluYwotMjQ0OTdCICAgICAoYmFzZSAxNikJCUlubm92YXRpdmUgQ29udmVyZ2VkIERldmljZXMgSW5jCi0JCQkJNDI0IDh0aCBBdmVudWUgTm9ydGgKLQkJCQlTZWF0dGxlIFdBIDk4MTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC03Ny0wMyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTI0NzcwMyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTI0LTgyLThBICAgKGhleCkJCVByb3dhdmUgVGVjaG5vbG9naWVzIEx0ZC4KLTI0ODI4QSAgICAgKGJhc2UgMTYpCQlQcm93YXZlIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJMkYsTm8uODc5LTE2LFpob25namlhbmcgUm9hZAotCQkJCVNoYW5naGFpICAyMDAzMzMKLQkJCQlDSElOQQotCi0yNC05NC00MiAgIChoZXgpCQlPUEVOIFJPQUQgU09MVVRJT05TICwgSU5DLgotMjQ5NDQyICAgICAoYmFzZSAxNikJCU9QRU4gUk9BRCBTT0xVVElPTlMgLCBJTkMuCi0JCQkJODgtMTMgU0hVSUxJICBST0FECi0JCQkJSFNJTkNIVSAgMzAwNTkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTI0LUE0LTJDICAgKGhleCkJCUtPVUtBQU0gYS5zLgotMjRBNDJDICAgICAoYmFzZSAxNikJCUtPVUtBQU0gYS5zLgotCQkJCVUgdmlubnljaCBza2xlcHUgNwotCQkJCVByYWd1ZSAgMTkwIDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMjQtQTktMzcgICAoaGV4KQkJUFVSRSBTdG9yYWdlCi0yNEE5MzcgICAgIChiYXNlIDE2KQkJUFVSRSBTdG9yYWdlCi0JCQkJNjUwIENhc3RybyBTdHJlZXQKLQkJCQkyMjAKLQkJCQlNdC4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMjQtQUItODEgICAoaGV4KQkJQXBwbGUsIEluYy4KLTI0QUI4MSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMjQtQUYtNEEgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQtSVBECi0yNEFGNEEgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQtSVBECi0JCQkJNzc3IE1pZGRsZWZpZWxkIFJkLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUFGLTU0ICAgKGhleCkJCU5FWEdFTiBNZWRpYXRlY2ggSW5jLgotMjRBRjU0ICAgICAoYmFzZSAxNikJCU5FWEdFTiBNZWRpYXRlY2ggSW5jLgotCQkJCThGIE5vLiAxNTAsIEppYW55aSBSZC4sIAotCQkJCUNodW5nIEhvIFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTI0LUI2LUI4ICAgKGhleCkJCUZSSUVNIFNQQQotMjRCNkI4ICAgICAoYmFzZSAxNikJCUZSSUVNIFNQQQotCQkJCVZpYSBFZGlzb24gMQotCQkJCVNlZ3JhdGUgTWlsYW5vIDIwMDkwCi0JCQkJSVRBTFkKLQotMjQtQjgtRDIgICAoaGV4KQkJT3B6b29uIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTI0QjhEMiAgICAgKGJhc2UgMTYpCQlPcHpvb24gVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTExdGggZmxvb3IsIFRvd2VyIELvv73vv71ZaW50YWkgQ2VudGVyIDIgSmlhbmd1b21lbndhaSBTdCwuCi0JCQkJQmVpamluZyBBc2lhIDEwMDAyMgotCQkJCUNISU5BCi0KLTI0LUJBLTMwICAgKGhleCkJCVRlY2huaWNhbCBDb25zdW1lciBQcm9kdWN0cywgSW5jLgotMjRCQTMwICAgICAoYmFzZSAxNikJCVRlY2huaWNhbCBDb25zdW1lciBQcm9kdWN0cywgSW5jLgotCQkJCTMyNSBDYW1wdXMgRHJpdmUKLQkJCQlBdXJvcmEgT0ggNDQyMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUJGLTc0ICAgKGhleCkJCVBSSVZBVEUKLTI0QkY3NCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMjQtQzgtNkUgICAoaGV4KQkJQ2hhbmV5IEluc3RydW1lbnQgQ28uCi0yNEM4NkUgICAgIChiYXNlIDE2KQkJQ2hhbmV5IEluc3RydW1lbnQgQ28uCi0JCQkJOTY1IFdlbGxzIFN0cmVldAotCQkJCUxha2UgR2VuZXZhIFdJIDUzMTQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC1DOS1ERSAgIChoZXgpCQlHZW5vcmF5Ci0yNEM5REUgICAgIChiYXNlIDE2KQkJR2Vub3JheQotCQkJCSM4MTIgQnl1Y2tzYW4gVGVjaG5vcGlhIDQzNC02IFNhbmdkYWV3b24gMS1Eb25nCi0JCQkJSnVuZ3dvbi1HdQotCQkJCVNlb25nbmFtLUNpdHkgR3llb25nZ2ktRG8gNDYyLTcxNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yNC1DQi1FNyAgIChoZXgpCQlNWUssIEluYy4KLTI0Q0JFNyAgICAgKGJhc2UgMTYpCQlNWUssIEluYy4KLQkJCQk0LTYwLTMwLTEwOCwgS2Ftb2ksIAotCQkJCU1pZG9yaS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyNi0wMDAzCi0JCQkJSkFQQU4KLQotMjQtQ0YtMjEgICAoaGV4KQkJU2hlbnpoZW4gU3RhdGUgTWljcm8gVGVjaG5vbG9neSBDby4sIEx0ZAotMjRDRjIxICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFN0YXRlIE1pY3JvIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlTU01FQyBCdWlsZGluZzIvRiwgR2FvIFhpbiBOYW4gRmlyc3QgQXZlbnVlLCBIaS1UZWNoIFBhcmsgU291dGgsIE5hbnNoYW4KLQkJCQlTaGVuemhlbiBDaXR5IEd1YW5nZG9uZyBQcm92aW5jZSA1MTgwNTcKLQkJCQlDSElOQQotCi0yNC1EMi1DQyAgIChoZXgpCQlTbWFydERyaXZlIFN5c3RlbXMgSW5jLgotMjREMkNDICAgICAoYmFzZSAxNikJCVNtYXJ0RHJpdmUgU3lzdGVtcyBJbmMuCi0JCQkJOTI3NiBTY3JhbnRvbiBSb2FkCi0JCQkJU3VpdGUgNTAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC1EQi1BQyAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0yNERCQUMgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxMDEwOAotCQkJCUNISU5BCi0KLTI0LURCLUFEICAgKGhleCkJCVNob3BwZXJUcmFrIFJDVCBDb3Jwb3JhdGlvbgotMjREQkFEICAgICAoYmFzZSAxNikJCVNob3BwZXJUcmFrIFJDVCBDb3Jwb3JhdGlvbgotCQkJCTIwMCBXLiBNb25yb2UgU3RyZWV0Ci0JCQkJU3VpdGUgMTEwMAotCQkJCUNoaWNhZ28gSUwgNjA2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUYwLUZGICAgKGhleCkJCUdIVCBDby4sIEx0ZC4KLTI0RjBGRiAgICAgKGJhc2UgMTYpCQlHSFQgQ28uLCBMdGQuCi0JCQkJIzE2IE5hbnl1bnlpIEx1LCBHdWFuZ3pob3UgU2NpZW5jZSBDaXR5Ci0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2NjMKLQkJCQlDSElOQQotCi0yOC0wNi0xRSAgIChoZXgpCQlOSU5HQk8gR0xPQkFMIFVTRUZVTCBFTEVDVFJJQyBDTy4sTFRECi0yODA2MUUgICAgIChiYXNlIDE2KQkJTklOR0JPIEdMT0JBTCBVU0VGVUwgRUxFQ1RSSUMgQ08uLExURAotCQkJCU5vLjg4LEtlY2h1YW5nIFNvdXRoIFJvYWQsCi0JCQkJV2FuZ2NodW4gSW5kdXN0cnkgWm9uZQotCQkJCU5pbmdibyBaaGVqaWFuZyAzMTUwMDAKLQkJCQlDSElOQQotCi0yOC0wNi04RCAgIChoZXgpCQlJVEwsIExMQwotMjgwNjhEICAgICAoYmFzZSAxNikJCUlUTCwgTExDCi0JCQkJUC5PLiBCb3ggNDE4NzUKLQkJCQlOYXNodmlsbGUgVE4gMzcyMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LTE0LTcxICAgKGhleCkJCUxhbnRpcyBjby4sIExURC4KLTI4MTQ3MSAgICAgKGJhc2UgMTYpCQlMYW50aXMgY28uLCBMVEQuCi0JCQkJYnVzYW4gaW5ub2JpeiBjZW50ZXIgNDAxCi0JCQkJYnVrLWt1LCBtYW5kZW9rIDMtZG9uZwotCQkJCWJ1c2FuICA2MTYtODI5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTI4LTE2LTJFICAgKGhleCkJCTJXaXJlCi0yODE2MkUgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC0yNi1BNiAgIChoZXgpCQlQQlIgZWxlY3Ryb25pY3MgR21iSAotMjgyNkE2ICAgICAoYmFzZSAxNikJCVBCUiBlbGVjdHJvbmljcyBHbWJICi0JCQkJQmVybGluZXIgU3RyYXNzZSA1Ci0JCQkJU2FuZGhhdXNlbiBCYWRlbiBXdWVydGVtbWJlcmcgNjkyMDcKLQkJCQlHRVJNQU5ZCi0KLTI4LTM0LTEwICAgKGhleCkJCUVuaWdtYSBEaWFnbm9zdGljcyBMaW1pdGVkCi0yODM0MTAgICAgIChiYXNlIDE2KQkJRW5pZ21hIERpYWdub3N0aWNzIExpbWl0ZWQKLQkJCQlNaWx0b24gUGFyayBJbm5vdmF0aW9uIENlbnRyZQotCQkJCTk5IE1pbHRvbiBQYXJrCi0JCQkJQWJpbmdkb24gIE9YMTQgNFJZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMjgtM0MtRTQgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotMjgzQ0U0ICAgICAoYmFzZSAxNikJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0IAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0yOC00MC0xQSAgIChoZXgpCQlDOCBNZWRpU2Vuc29ycywgSW5jLgotMjg0MDFBICAgICAoYmFzZSAxNikJCUM4IE1lZGlTZW5zb3JzLCBJbmMuCi0JCQkJNzI3IFVuaXZlcnNpdHkgQXZlCi0JCQkJTG9zIEdhdG9zIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC00OC00NiAgIChoZXgpCQlHcmlkQ2VudHJpYyBJbmMuCi0yODQ4NDYgICAgIChiYXNlIDE2KQkJR3JpZENlbnRyaWMgSW5jLgotCQkJCTM1MCBCbG9vciBTdC4gRQotCQkJCVRvcm9udG8gT250YXJpbyBNNFcgMEExCi0JCQkJQ0FOQURBCi0KLTI4LTRDLTUzICAgKGhleCkJCUludHVuZSBOZXR3b3JrcwotMjg0QzUzICAgICAoYmFzZSAxNikJCUludHVuZSBOZXR3b3JrcwotCQkJCTlCIEJlY2tldHQgV2F5Ci0JCQkJUGFya3dlc3QgQnVzaW5lc3MgUGFyawotCQkJCUR1YmxpbiAgIDEyCi0JCQkJSVJFTEFORAotCi0yOC01MS0zMiAgIChoZXgpCQlTaGVuemhlbiBQcmF5Zmx5IFRlY2hub2xvZ3kgQ28uLEx0ZAotMjg1MTMyICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFByYXlmbHkgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJMTZGIEIgSW50ZXJuYXRpb25hbCBDaGFtYmVyIG9mIENvbW1lcmNlIEJ1aWxkaW5nCi0JCQkJTk8uMTM4IEZ1aHVhIDFSRCBGdXRpYW4gQXJlYSAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgUHJvdmluY2UgIDUxODA0OAotCQkJCUNISU5BCi0KLTI4LTVGLURCICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTI4NUZEQiAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotMjgtNjAtNDYgICAoaGV4KQkJTGFudGVjaCBDb21tdW5pY2F0aW9ucyBHbG9iYWwsIEluYy4KLTI4NjA0NiAgICAgKGJhc2UgMTYpCQlMYW50ZWNoIENvbW11bmljYXRpb25zIEdsb2JhbCwgSW5jLgotCQkJCTdGLCBOby4gNDUsIExhbmUgMTg4LCBSdWlndWFuZyBSZC4sIE5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpIENpdHkgIDExNDkxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0yOC02RS1ENCAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLTI4NkVENCAgICAgKGJhc2UgMTYpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLQkJCQlCMS03LEh1YXdlaSBJbmR1c3RyaWFsIEJhc2UsQmFudGlhbixMb25nZ2FuZwotCQkJCVNoZW5aaGVuIGd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi0yOC03Mi1DNSAgIChoZXgpCQlTbWFydG1hdGljIENvcnAKLTI4NzJDNSAgICAgKGJhc2UgMTYpCQlTbWFydG1hdGljIENvcnAKLQkJCQkxMDAxIEJyb2tlbiBTb3VuZCBQa3d5IE5XIFN1aXRlIEQKLQkJCQlCb2NhIFJhdG9uIEZsb3JpZGEgMzM0ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LTcyLUYwICAgKGhleCkJCUFUSEVOQQotMjg3MkYwICAgICAoYmFzZSAxNikJCUFUSEVOQQotCQkJCTQyIFJVRSBNT05HRQotCQkJCVBBUklTICA3NTAwNQotCQkJCUZSQU5DRQotCi0yOC04NS0yRCAgIChoZXgpCQlUb3VjaCBOZXR3b3JrcwotMjg4NTJEICAgICAoYmFzZSAxNikJCVRvdWNoIE5ldHdvcmtzCi0JCQkJMjUxNSAxNTJuZCBBdmUgTkUKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LTg5LTE1ICAgKGhleCkJCUNhc2hHdWFyZCBTdmVyaWdlIEFCCi0yODg5MTUgICAgIChiYXNlIDE2KQkJQ2FzaEd1YXJkIFN2ZXJpZ2UgQUIKLQkJCQlGaW5sYW5kc2dhdGFuIDE2Ci0JCQkJS2lzdGEgIDE2NDc0Ci0JCQkJU1dFREVOCi0KLTI4LTkzLUZFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTI4OTNGRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LUE1LTc0ICAgKGhleCkJCU1pbGxlciBFbGVjdHJpYyBNZmcuIENvLgotMjhBNTc0ICAgICAoYmFzZSAxNikJCU1pbGxlciBFbGVjdHJpYyBNZmcuIENvLgotCQkJCTE2MzUgVy4gU3BlbmNlciBTdHJlZXQKLQkJCQlQLk8uIEJveCAxMDc5Ci0JCQkJQXBwbGV0b24gV0kgNTQ5MTItMTA3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMjgtQzAtREEgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMjhDMERBICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1DQy1GRiAgIChoZXgpCQlDb3Jwb3JhY2lvbiBFbXByZXNhcmlhbCBBbHRyYSBTTAotMjhDQ0ZGICAgICAoYmFzZSAxNikJCUNvcnBvcmFjaW9uIEVtcHJlc2FyaWFsIEFsdHJhIFNMCi0JCQkJTWFyaWUgQ3VyaWUgMjEKLQkJCQlNYWxhZ2EgIDI5NTkwCi0JCQkJU1BBSU4KLQotMjgtQ0QtNEMgICAoaGV4KQkJSW5kaXZpZHVhbCBDb21wdXRlcnMgR21iSAotMjhDRDRDICAgICAoYmFzZSAxNikJCUluZGl2aWR1YWwgQ29tcHV0ZXJzIEdtYkgKLQkJCQlJbSBaZW1tZXIgNgotCQkJCVdvZmZlbHNiYWNoIE5SVyA1MjE1MgotCQkJCUdFUk1BTlkKLQotMjgtQ0YtREEgICAoaGV4KQkJQXBwbGUgSW5jCi0yOENGREEgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBpbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1FMi05NyAgIChoZXgpCQlTaGFuZ2hhaSBJbmZvVE0gTWljcm9lbGVjdHJvbmljcyBDby4sTHRkLgotMjhFMjk3ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEluZm9UTSBNaWNyb2VsZWN0cm9uaWNzIENvLixMdGQuCi0JCQkJYnVpbGRpbmcgMTEsTk8uMTE1LGxhbmUgNTcyLEJpQm8gUm9hZCwKLQkJCQlQdURvbmcgTmV3IERpc3RyaWN0Ci0JCQkJU2hhbmdIYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLTI4LUU3LTk0ICAgKGhleCkJCU1pY3JvdGltZSBDb21wdXRlciBJbmMuCi0yOEU3OTQgICAgIChiYXNlIDE2KQkJTWljcm90aW1lIENvbXB1dGVyIEluYy4KLQkJCQk0RiwgTm8uIDIyMiwgU2VjLiA0LCBDaGVuZy1UZWggUmQuLCAKLQkJCQlUYWlwZWkgIDExMTY3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0yOC1FNy1DRiAgIChoZXgpCQlBcHBsZSwgSW5jLgotMjhFN0NGICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1FRC01OCAgIChoZXgpCQlKQUcgSmFrb2IgQUcKLTI4RUQ1OCAgICAgKGJhc2UgMTYpCQlKQUcgSmFrb2IgQUcKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDIwCi0JCQkJQlJVRUdHIEJFIDI1NTUKLQkJCQlTV0lUWkVSTEFORAotCi0yOC1FRS0yQyAgIChoZXgpCQlGcm9udGxpbmUgVGVzdCBFcXVpcG1lbnQKLTI4RUUyQyAgICAgKGJhc2UgMTYpCQlGcm9udGxpbmUgVGVzdCBFcXVpcG1lbnQKLQkJCQlQTyBCb3ggNzUwNwotCQkJCUNoYXJsb3R0ZXN2aWxsZSBWaXJnaW5pYSAyMjkwNi03NTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1FRi0wMSAgIChoZXgpCQlQUklWQVRFCi0yOEVGMDEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTI4LUYzLTU4ICAgKGhleCkJCTJDIC0gVHJpZm9ub3YgJiBDbwotMjhGMzU4ICAgICAoYmFzZSAxNikJCTJDIC0gVHJpZm9ub3YgJiBDbwotCQkJCTEzMywgVHNhcmlncmFkc2tvIFNob3NlIEJsdmQsIEJJWiBJWk9ULCAKLQkJCQlCdWlsZC4gMywgRmxvb3IgMwotCQkJCVNvZmlhICAxNzg0Ci0JCQkJQlVMR0FSSUEKLQotMjgtRkItRDMgICAoaGV4KQkJU2hhbmdoYWkgUmFnZW5UZWsgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLixMdGQuCi0yOEZCRDMgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgUmFnZW5UZWsgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJNHRoIEZsb29yLE5vLjExMSBFU2hhbiBSb2FkIFB1RG9uZyBEaXN0cmljdCAKLQkJCQlTaGFuZ2hhaSAgMjAwMTI3Ci0JCQkJQ0hJTkEKLQotMkMtMDAtMzMgICAoaGV4KQkJRUNvbnRyb2xzLCBMTEMKLTJDMDAzMyAgICAgKGJhc2UgMTYpCQlFQ29udHJvbHMsIExMQwotCQkJCTM1MjMgQ3Jvc3Nwb2ludAotCQkJCVNhbiBBbnRvbmlvIFRYIDc4MjE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy0wNi0yMyAgIChoZXgpCQlXaW4gTGVhZGVyIEluYy4KLTJDMDYyMyAgICAgKGJhc2UgMTYpCQlXaW4gTGVhZGVyIEluYy4KLQkJCQlMZXZlbCAzICxBbGV4YW5kZXIgSG91c2UsCi0JCQkJMzUgIEN5YmVyY2l0eQotCQkJCUViZW5lICAKLQkJCQlNQVVSSVRJVVMKLQotMkMtMTktODQgICAoaGV4KQkJSUROIFRlbGVjb20sIEluYy4KLTJDMTk4NCAgICAgKGJhc2UgMTYpCQlJRE4gVGVsZWNvbSwgSW5jLgotCQkJCTI2NjkgR3JlYXQgQXJib3IgV2F5Ci0JCQkJVW5pb24gQ2l0eSBDQSA5NDU4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtMUUtRUEgICAoaGV4KQkJQUVST0RFVgotMkMxRUVBICAgICAoYmFzZSAxNikJCUFFUk9ERVYKLQkJCQlOby41OSwxOTg1IExhbmUsQ2h1bnNoZW4gUm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAwMjM3Ci0JCQkJQ0hJTkEKLQotMkMtMjEtNzIgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMkMyMTcyICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtMjctRDcgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0yQzI3RDcgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy0zMC02OCAgIChoZXgpCQlQYW50ZWNoIENvLixMdGQKLTJDMzA2OCAgICAgKGJhc2UgMTYpCQlQYW50ZWNoIENvLixMdGQKLQkJCQkxMTAtMSBPbmdqZW9uZy1SaSwgVG9uZ2ppbi1FdXAKLQkJCQlHaW1wby1TaSBHeW91bmdnaS1EbyA0MTUtODY1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTJDLTM0LTI3ICAgKGhleCkJCUVSQ08gJmFtcDsgR0VORVIKLTJDMzQyNyAgICAgKGJhc2UgMTYpCQlFUkNPICZhbXA7IEdFTkVSCi0JCQkJWkkgZGUgU0FJTlQgTEFNQkVSVCBERVMgTEVWRUVTCi0JCQkJQlAgMzAxNjMKLQkJCQlTQVVNVVIgIDQ5NDEyCi0JCQkJRlJBTkNFCi0KLTJDLTNBLTI4ICAgKGhleCkJCUZhZ29yIEVsZWN0cu+/vW5pY2EKLTJDM0EyOCAgICAgKGJhc2UgMTYpCQlGYWdvciBFbGVjdHLvv71uaWNhCi0JCQkJQi4gU2FuIEFuZHJlcywgcy9uIAotCQkJCU1vbmRyYWfvv71uIEd1aXB1emNvYSAyMDUwMAotCQkJCVNQQUlOCi0KLTJDLTNGLTNFICAgKGhleCkJCUFsZ2UtVGltaW5nIEdtYkgKLTJDM0YzRSAgICAgKGJhc2UgMTYpCQlBbGdlLVRpbWluZyBHbWJICi0JCQkJUm90a3JldXpzdHJhc3NlIDM5Ci0JCQkJTHVzdGVuYXUgIDY4OTAKLQkJCQlBVVNUUklBCi0KLTJDLTQxLTM4ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMkM0MTM4ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlNYWlsY29kZSA2LjMuMDQ5Ci0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtNkItRjUgICAoaGV4KQkJSnVuaXBlciBuZXR3b3JrcwotMkM2QkY1ICAgICAoYmFzZSAxNikJCUp1bmlwZXIgbmV0d29ya3MKLQkJCQkxMTk0IE4uIE1hdGhpbGRhIGF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtN0EtRkUgICAoaGV4KQkJSUVFJkUgIkJsYWNrIiBvcHMKLTJDN0FGRSAgICAgKGJhc2UgMTYpCQlJRUUmRSAiQmxhY2siIG9wcwotCQkJCTEwMCBKZXJpYyBBdmVudWUKLQkJCQlDaGFybG90dGUgTkMgMjgyNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLTdFLUNGICAgKGhleCkJCU9uem8gTHRkCi0yQzdFQ0YgICAgIChiYXNlIDE2KQkJT256byBMdGQKLQkJCQk2IEdyZWF0IE5ld3BvcnQgU3RyZWV0Ci0JCQkJTG9uZG9uICBXQzJIIDdKQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTJDLTgwLTY1ICAgKGhleCkJCUhBUlRJTkcgSW5jLiBvZiBOb3J0aCBBbWVyaWNhCi0yQzgwNjUgICAgIChiYXNlIDE2KQkJSEFSVElORyBJbmMuIG9mIE5vcnRoIEFtZXJpY2EKLQkJCQkxMzcwIEJvd2VzIFJvYWQKLQkJCQlFbGdpbiBJbGxpbm9pcyA2MDEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtODEtNTggICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkCi0yQzgxNTggICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMkMtOEItRjIgICAoaGV4KQkJSGl0YWNoaSBNZXRhbHMgQW1lcmljYSBMdGQKLTJDOEJGMiAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIE1ldGFscyBBbWVyaWNhIEx0ZAotCQkJCTIxMDcgTiBGaXJzdCBTdAotCQkJCVN1aXRlIDUwMAotCQkJCVNhbiBKb3NlICBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtOTEtMjcgICAoaGV4KQkJRWludGVjaG5vIENvcnBvcmF0aW9uCi0yQzkxMjcgICAgIChiYXNlIDE2KQkJRWludGVjaG5vIENvcnBvcmF0aW9uCi0JCQkJMzM1OS0xLCBrYWtvLCBJbmFtaS1jaG8KLQkJCQlrYWtvLWd1biBoeW9nbyA2NzUtMTEwNQotCQkJCUpBUEFOCi0KLTJDLTlFLTVGICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0yQzlFNUYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy1BMS01NyAgIChoZXgpCQlBQ1JPTUFURSwgSU5DLgotMkNBMTU3ICAgICAoYmFzZSAxNikJCUFDUk9NQVRFLCBJTkMuCi0JCQkJIzkxMSwgRSZDICBWZW50dXJlIERyZWFtIFRvd2VyIElJCi0JCQkJMTk3LTEwLCBHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTcxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yQy1BNy04MCAgIChoZXgpCQlUcnVlIFRlY2hub2xvZ2llcyBJbmMuCi0yQ0E3ODAgICAgIChiYXNlIDE2KQkJVHJ1ZSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCVI0NzYsIEFuZ2VsQ2l0eSAxc3QsCi0JCQkJMTYxLCBHdWVtZ29rLCBCdW5kYW5nCi0JCQkJU2VvbmduYW0sIEt5dW5na2kgNDYzLTg2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yQy1BOC0zNSAgIChoZXgpCQlSSU0KLTJDQTgzNSAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMkMtQjAtREYgICAoaGV4KQkJU29saXRvbiBUZWNobm9sb2dpZXMgUHZ0IEx0ZAotMkNCMERGICAgICAoYmFzZSAxNikJCVNvbGl0b24gVGVjaG5vbG9naWVzIFB2dCBMdGQKLQkJCQkjIDY4MywgMTV0aCBDcm9zcyAKLQkJCQlKIFAgTmFnYXIgMm5kIFBoYXNlCi0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAgMDc4Ci0JCQkJSU5ESUEKLQotMkMtQjYtOUQgICAoaGV4KQkJUkVEIERpZ2l0YWwgQ2luZW1hCi0yQ0I2OUQgICAgIChiYXNlIDE2KQkJUkVEIERpZ2l0YWwgQ2luZW1hCi0JCQkJMjAyOTEgVmFsZW5jaWEgQ2lyY2xlCi0JCQkJTGFrZSBGb3Jlc3QgQ2FsaWZvcm5pYSA5MjYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtQ0QtMjcgICAoaGV4KQkJUHJlY29yIEluYwotMkNDRDI3ICAgICAoYmFzZSAxNikJCVByZWNvciBJbmMKLQkJCQkyMDAzMSAxNDJuZCBBdmVudWUgTkUKLQkJCQlXb29kaW52aWxsZSBXQSA5ODA3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtQ0QtNDMgICAoaGV4KQkJU3VtbWl0IFRlY2hub2xvZ3kgR3JvdXAKLTJDQ0Q0MyAgICAgKGJhc2UgMTYpCQlTdW1taXQgVGVjaG5vbG9neSBHcm91cAotCQkJCTE0NSBCZWxtb250IERyaXZlCi0JCQkJU29tZXJzZXQgTkogMDg4NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLUQxLURBICAgKGhleCkJCVNhbmpvbGUsIEluYy4KLTJDRDFEQSAgICAgKGJhc2UgMTYpCQlTYW5qb2xlLCBJbmMuCi0JCQkJMjgwMCBXb29kbGF3biBEcml2ZSwgIzI3MQotCQkJCUhvbm9sdWx1IEhhd2FpaSA5NjgyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtRDItRTcgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTJDRDJFNyAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1IE91IDkwNTkwCi0JCQkJRklOTEFORAotCi0yQy1ERC0wQyAgIChoZXgpCQlEaXNjb3Zlcmd5IEdtYkgKLTJDREQwQyAgICAgKGJhc2UgMTYpCQlEaXNjb3Zlcmd5IEdtYkgKLQkJCQlQYXNjYWxzdHIuIDE1Ci0JCQkJQWFjaGVuIE5SVyA1MjA3NgotCQkJCUdFUk1BTlkKLQotMzAtMEItOUMgICAoaGV4KQkJRGVsdGEgTW9iaWxlIFN5c3RlbXMsIEluYy4KLTMwMEI5QyAgICAgKGJhc2UgMTYpCQlEZWx0YSBNb2JpbGUgU3lzdGVtcywgSW5jLgotCQkJCTcwMCBSZW1pbmd0b24gUm9hZAotCQkJCTJuZCBGbG9vcgotCQkJCVNjaGF1bWJ1cmcgSWxsaW5vaXMgNjAxNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTMwLTE0LTJEICAgKGhleCkJCVBpY2lvcmdyb3MgR21iSAotMzAxNDJEICAgICAoYmFzZSAxNikJCVBpY2lvcmdyb3MgR21iSAotCQkJCUNsYXVkaWFzdHJhc3NlIDUKLQkJCQlDb2xvZ25lIE5SVyA1MTE0OQotCQkJCUdFUk1BTlkKLQotMzAtMTctQzggICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTMwMTdDOCAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OAotCQkJCVNXRURFTgotCi0zMC0xOC1DRiAgIChoZXgpCQlERU9TIGNvbnRyb2wgc3lzdGVtcyBHbWJICi0zMDE4Q0YgICAgIChiYXNlIDE2KQkJREVPUyBjb250cm9sIHN5c3RlbXMgR21iSAotCQkJCUJpcmtlbmFsbGVlIDExMwotCQkJCVJoZWluZSBOUlcgNDg0MzIKLQkJCQlHRVJNQU5ZCi0KLTMwLTFBLTI4ICAgKGhleCkJCU1ha28gTmV0d29ya3MgTHRkCi0zMDFBMjggICAgIChiYXNlIDE2KQkJTWFrbyBOZXR3b3JrcyBMdGQKLQkJCQkxLzYyIFBhdWwgTWF0dGhld3MgUmQKLQkJCQlBbGJhbnkKLQkJCQlBdWNrbGFuZCAgMDYzMgotCQkJCU5FVyBaRUFMQU5ECi0KLTMwLTFFLTgwICAgKGhleCkJCVBSSVZBVEUKLTMwMUU4MCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMzAtMzItRDQgICAoaGV4KQkJSGFuaWxzdG0gQ28uLCBMdGQuCi0zMDMyRDQgICAgIChiYXNlIDE2KQkJSGFuaWxzdG0gQ28uLCBMdGQuCi0JCQkJMTM4LTYsIFNhbmdkYWV3b24tZG9uZyBKdW5nd29uLWd1Ci0JCQkJNzA5LCBKb29uZ2FuZyBJbmR1c3BpYSA1dGgKLQkJCQlTZW9uZ25hbSBLeW9uZ2dpLWRvIDQ2Mi0xMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzAtMzctQTYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMzAzN0E2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMzAtMzgtNTUgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTMwMzg1NSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1IE91IDkwNTkwCi0JCQkJRklOTEFORAotCi0zMC0zOS01NSAgIChoZXgpCQlTaGVuemhlbiBKaW5oZW5namlhIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0zMDM5NTUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gSmluaGVuZ2ppYSBFbGVjdHJvbmljIENvLiwgTHRkLgotCQkJCTQtNiBGbG9vcnMsIEZhY3RvcnkgQnVpbGRpbmcsIEppamlhIEluZHVzdHJpYWwgUGFyaywKLQkJCQlYaWFsaWxhbmcgQXJlYSwgTmFud2FuIFN0cmVldCwgTG9uZ2dhbmcgQXJlYS4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTEyCi0JCQkJQ0hJTkEKLQotMzAtMzktRjIgICAoaGV4KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TIAotMzAzOUYyICAgICAoYmFzZSAxNikJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUyAKLQkJCQlWSUFMRSBTQVJDQSAyMjIgCi0JCQkJTUlMQU5PICAgMjAxMjYgCi0JCQkJSVRBTFkKLQotMzAtNDEtNzQgICAoaGV4KQkJQUxURUMgTEFOU0lORyBMTEMKLTMwNDE3NCAgICAgKGJhc2UgMTYpCQlBTFRFQyBMQU5TSU5HIExMQwotCQkJCTUzNSBST1VURVMgNiAmIDIwOQotCQkJCU1JTEZPUkQgUEEgMTgzMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTMwLTQ2LTlBICAgKGhleCkJCU5FVEdFQVIKLTMwNDY5QSAgICAgKGJhc2UgMTYpCQlORVRHRUFSCi0JCQkJMzUwIEVBU1QgUExVTUVSSUEgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQUxJRk9STklBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zMC00OS0zQiAgIChoZXgpCQlOYW5qaW5nIFotQ29tIFdpcmVsZXNzIENvLixMdGQKLTMwNDkzQiAgICAgKGJhc2UgMTYpCQlOYW5qaW5nIFotQ29tIFdpcmVsZXNzIENvLixMdGQKLQkJCQlaLUNvbSBCdWlsZGluZyxOTy4zMCBKaWFuZ3N1IFNvZnR3YXJlIFBhcmssTk8uNjk5LTIyIFh1YW53dSBBdmVudWUsCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMDA0MgotCQkJCUNISU5BCi0KLTMwLTRDLTdFICAgKGhleCkJCVBhbmFzb25pYyBFbGVjdHJpYyBXb3JrcyBBdXRvbWF0aW9uIENvbnRyb2xzIFRlY2hubyBDby4sTHRkLgotMzA0QzdFICAgICAoYmFzZSAxNikJCVBhbmFzb25pYyBFbGVjdHJpYyBXb3JrcyBBdXRvbWF0aW9uIENvbnRyb2xzIFRlY2hubyBDby4sTHRkLgotCQkJCTItOS0xOCBDaGlkb3JpCi0JCQkJT290YS1rdSBUb2t5byAxNDYtODU0MAotCQkJCUpBUEFOCi0KLTMwLTRFLUMzICAgKGhleCkJCVRpYW5qaW4gVGVjaHVhIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0zMDRFQzMgICAgIChiYXNlIDE2KQkJVGlhbmppbiBUZWNodWEgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxMi0xLTE0MDEgVGlhbmxpbnl1YW4gRnVsaWNoZW5nIEd1bG91eGkgUm9hZCxOYW5rYWkgRGlzdHJpY3QgCi0JCQkJVGlhbmppbiAgMzAwMTAxCi0JCQkJQ0hJTkEKLQotMzAtNTItNUEgICAoaGV4KQkJTlNUIENvLiwgTFRECi0zMDUyNUEgICAgIChiYXNlIDE2KQkJTlNUIENvLiwgTFRECi0JCQkJUk0zMDEsRGFlcnl1bmcgVGVjaG5vIFRvd24gMiwgNTY5LTIxCi0JCQkJR2FzYW4tZG9uZywgR2V1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My03NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzAtNjEtMTggICAoaGV4KQkJUGFyYWRvbSBJbmMuCi0zMDYxMTggICAgIChiYXNlIDE2KQkJUGFyYWRvbSBJbmMuCi0JCQkJOEYsIE4wLiAxNzgsIFNlYy0yLCBHb25nZGFvd3UgUmQuCi0JCQkJSHNpbmNodSBDaXR5ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTMwLTY5LTRCICAgKGhleCkJCVJJTQotMzA2OTRCICAgICAoYmFzZSAxNikJCVJJTQotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi0zMC03MS1CMiAgIChoZXgpCQlIYW5nemhvdSBQcmV2YWlsIE9wdG9lbGVjdHJvbmljIEVxdWlwbWVudCBDby4sTFRELgotMzA3MUIyICAgICAoYmFzZSAxNikJCUhhbmd6aG91IFByZXZhaWwgT3B0b2VsZWN0cm9uaWMgRXF1aXBtZW50IENvLixMVEQuCi0JCQkJSW5kdXN0cmlhbCBEZXZlbG9wbWVudCBBcmVhLCBHdWFsaSBUb3duLAotCQkJCSBYaWFvc2hhbiAKLQkJCQlIYW5nemhvdSBDaXR5IFpoZSBKaWFuZyAzMTEyNDEKLQkJCQlDSElOQQotCi0zMC03Qy0zMCAgIChoZXgpCQlSSU0KLTMwN0MzMCAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMzAtODctMzAgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotMzA4NzMwICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTAxMDgKLQkJCQlDSElOQQotCi0zMC04Qy1GQiAgIChoZXgpCQlEcm9wY2FtCi0zMDhDRkIgICAgIChiYXNlIDE2KQkJRHJvcGNhbQotCQkJCTYyNSBNYXJrZXQgU3RyZWV0Ci0JCQkJU3VpdGUgMTAxMAotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTMwLUU0LThFICAgKGhleCkJCVZvZGFmb25lIFVLCi0zMEU0OEUgICAgIChiYXNlIDE2KQkJVm9kYWZvbmUgVUsKLQkJCQlWb2RhZm9uZSBIb3VzZSAKLQkJCQlUaGUgQ29ubmVjdGlvbiAKLQkJCQlOZXdidXJ5ICBCZXJrc2hpcmUgIFJHMTQyRk4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0zMC1FQi0yNSAgIChoZXgpCQlJTlRFSyBESUdJVEFMCi0zMEVCMjUgICAgIChiYXNlIDE2KQkJSU5URUsgRElHSVRBTAotCQkJCTgwMSwgOHRoIEZsLiwgQW55YW5nIEstY2VudGVyIGJ1aWxkaW5nLCAxNTkxLTkKLQkJCQlHd2FueWFuZy1kb25nLCBEb25nYW4tZ3UKLQkJCQlBbnlhbmcgIDQzMS0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzAtRUYtRDEgICAoaGV4KQkJQWxzdG9tIFN0cm9uZ3dpc2ggKFNoZW56aGVuKSBDby4sIEx0ZC4KLTMwRUZEMSAgICAgKGJhc2UgMTYpCQlBbHN0b20gU3Ryb25nd2lzaCAoU2hlbnpoZW4pIENvLiwgTHRkLgotCQkJCTVGLEJ1aWxkaW5nIE5vLjYsIEtlamkgTWlkZGxlIDIgUm9hZCBIaWdoLVRlY2ggSW5kdXN0cmlhbCBQYXJrLCAKLQkJCQlTaGVuIFpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTM0LTA4LTA0ICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMzQwODA0ICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5vLjI4OSwgU2luaHUgM3JkIFJkLiwgTmVpaHUgRGlzdHJpY3QsIAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0zNC0xNS05RSAgIChoZXgpCQlBcHBsZSwgSW5jCi0zNDE1OUUgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMzQtMjEtMDkgICAoaGV4KQkJSmVuc2VuIFNjYW5kaW5hdmlhIEFTCi0zNDIxMDkgICAgIChiYXNlIDE2KQkJSmVuc2VuIFNjYW5kaW5hdmlhIEFTCi0JCQkJQmFsZGVyIEFsbO+/vSAzCi0JCQkJSmVzc2hlaW0gIDIwNTAKLQkJCQlOT1JXQVkKLQotMzQtMjktRUEgICAoaGV4KQkJTUNEIEVMRUNUUk9OSUNTIFNQLiBaIE8uTy4KLTM0MjlFQSAgICAgKGJhc2UgMTYpCQlNQ0QgRUxFQ1RST05JQ1MgU1AuIFogTy5PLgotCQkJCUxlbGV3ZWxhIDI2Ci0JCQkJWnl3aWVjIFNsYXNraWUgMzQtMzAwCi0JCQkJUE9MQU5ECi0KLTM0LTY4LTRBICAgKGhleCkJCVRlcmF3b3JrcyBDby4sIEx0ZC4KLTM0Njg0QSAgICAgKGJhc2UgMTYpCQlUZXJhd29ya3MgQ28uLCBMdGQuCi0JCQkJUm9vbSBOby4gMjAxICwgNTE1LTMwICwgTW9rLURvbmcKLQkJCQlZYW5nY2hlb24tR3UKLQkJCQlTZW91bCAgMTU4LTgwOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zNC02Ri05MiAgIChoZXgpCQlXaGl0ZSBSb2RnZXJzIERpdmlzaW9uCi0zNDZGOTIgICAgIChiYXNlIDE2KQkJV2hpdGUgUm9kZ2VycyBEaXZpc2lvbgotCQkJCTgxMDAgV2VzdCBGbG9yaXNzYW50Ci0JCQkJUC5PLiBCb3ggMzY5MjEKLQkJCQlTdC4gTG91aXMgTU8gNjMxMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM0LTc4LTc3ICAgKGhleCkJCU8tTkVUIENvbW11bmljYXRpb25zKFNoZW56aGVuKSBMaW1pdGVkCi0zNDc4NzcgICAgIChiYXNlIDE2KQkJTy1ORVQgQ29tbXVuaWNhdGlvbnMoU2hlbnpoZW4pIExpbWl0ZWQKLQkJCQkjMTAtMSBTb3V0aCxNYXF1ZWxpbmcgSW5kdXN0cmlhbCBQYXJrLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMzQtN0UtMzkgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTM0N0UzOSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMzQtODMtMDIgICAoaGV4KQkJaUZvcmNvbSBDby4sIEx0ZAotMzQ4MzAyICAgICAoYmFzZSAxNikJCWlGb3Jjb20gQ28uLCBMdGQKLQkJCQkxMzI2Ci0JCQkJVHN1a3VpY2hvLU5ha2FubwotCQkJCVNhZ2FtaWhhcmEgS2FuYWdhd2EgMjIwLTAyMDcKLQkJCQlKQVBBTgotCi0zNC04Ni0yQSAgIChoZXgpCQlIZWlueiBMYWNrbWFubiBHbWJIICYgQ28gS0cKLTM0ODYyQSAgICAgKGJhc2UgMTYpCQlIZWlueiBMYWNrbWFubiBHbWJIICYgQ28gS0cKLQkJCQlIYXJrb3J0c3RyYXNzZSAxNQotCQkJCU3vv71uc3RlciBOUlcgNDgxNjMKLQkJCQlHRVJNQU5ZCi0KLTM0LTlBLTBEICAgKGhleCkJCVpCRCBEaXNwbGF5cyBMdGQKLTM0OUEwRCAgICAgKGJhc2UgMTYpCQlaQkQgRGlzcGxheXMgTHRkCi0JCQkJT3JjaGFyZCBMZWEKLQkJCQlXaW5rZmllbGQgTGFuZQotCQkJCVdpbmRzb3IgQmVya3NoaXJlIFNMNCA0UlUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0zNC1BMS04MyAgIChoZXgpCQlBV2FyZSwgSW5jCi0zNEExODMgICAgIChiYXNlIDE2KQkJQVdhcmUsIEluYwotCQkJCTYxNCBNYXNzYWNodXNldHRzIEF2ZS4gCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zNC1BNS01RCAgIChoZXgpCQlURUNITk9TT0ZUIElOVEVSTkFUSU9OQUwgU1JMCi0zNEE1NUQgICAgIChiYXNlIDE2KQkJVEVDSE5PU09GVCBJTlRFUk5BVElPTkFMIFNSTAotCQkJCVJPNjY0MDkwNAotCQkJCVN0ci4gUGFkdXJldHUgNTAKLQkJCQlCdWN1cmVzdGkgLSBTZWN0b3IgNiAwNjE5OTIKLQkJCQlST01BTklBCi0KLTM0LUE3LTA5ICAgKGhleCkJCVRyZXZpbCBzcmwKLTM0QTcwOSAgICAgKGJhc2UgMTYpCQlUcmV2aWwgc3JsCi0JCQkJVmlhIENvcGVybmljbyAxCi0JCQkJUG96em8gZCYjMzk7QWRkYSBNSSAyMDA2MAotCQkJCUlUQUxZCi0KLTM0LUFBLUVFICAgKGhleCkJCU1pa3JvdmlzYXRvcyBTZXJ2aXNhcyBVQUIKLTM0QUFFRSAgICAgKGJhc2UgMTYpCQlNaWtyb3Zpc2F0b3MgU2VydmlzYXMgVUFCCi0JCQkJU2F2YW5vcml1IHByLiAxMjUKLQkJCQlLYXVuYXMgIExUNDQxNDYKLQkJCQlMSVRIVUFOSUEKLQotMzQtQjUtNzEgICAoaGV4KQkJUExEUwotMzRCNTcxICAgICAoYmFzZSAxNikJCVBMRFMKLQkJCQlTY2hhbnplbmZlbGRzdHJhc3NlIDIKLQkJCQlXZXR6bGFyIEhlc3NlbiAzNTU3OAotCQkJCUdFUk1BTlkKLQotMzQtQkEtNTEgICAoaGV4KQkJU2UtS3VyZSBDb250cm9scywgSW5jLgotMzRCQTUxICAgICAoYmFzZSAxNikJCVNlLUt1cmUgQ29udHJvbHMsIEluYy4KLQkJCQkzNzE0IFJ1bmdlIFN0cmVldAotCQkJCUZyYW5rbGluIFBhcmsgSUwgNjAxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM0LUJDLUE2ICAgKGhleCkJCUJlaWppbmcgRGluZyBRaW5nIFRlY2hub2xvZ3ksIEx0ZC4KLTM0QkNBNiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIERpbmcgUWluZyBUZWNobm9sb2d5LCBMdGQuCi0JCQkJMjE4IEhhbiBUYWkgSHVhIE9mZmljZSBCdWlsZGluZywgMTMgSHVhbiBZdWFuIEx1LAotCQkJCUhhaWRpYW4gRGlzdHJpY3QgQmVpamluZyAxMDAwODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM0LUJELUY5ICAgKGhleCkJCVNoYW5naGFpIFdESyBJbmR1c3RyaWFsIENvLixMdGQuCi0zNEJERjkgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgV0RLIEluZHVzdHJpYWwgQ28uLEx0ZC4KLQkJCQlOby4yMTAwLFNvbmd6aGVuIFJvYWQsU29uZ2ppYW5nIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMTYwNgotCQkJCUNISU5BCi0KLTM0LUMzLUFDICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTM0QzNBQyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzQtQzYtOUEgICAoaGV4KQkJRW5lY3N5cyBMdGQKLTM0QzY5QSAgICAgKGJhc2UgMTYpCQlFbmVjc3lzIEx0ZAotCQkJCUhhcnN0b24gTWlsbAotCQkJCVJveXN0b24gUm9hZAotCQkJCUNhbWJyaWRnZSBDYW1icmlkZ2VzaGlyZSBDQjIyIDdHRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTM0LUNFLTk0ICAgKGhleCkJCVBhcnNlYyAoUHR5KSBMdGQKLTM0Q0U5NCAgICAgKGJhc2UgMTYpCQlQYXJzZWMgKFB0eSkgTHRkCi0JCQkJQnVpbGRpbmcgOC0xMCBNYW5oYXR0YW4gT2ZmaWNlIFBhcmsKLQkJCQkxNiBQaWV0ZXIgU3RyZWV0LCBIaWdodmVsZCBUZWNobm9wYXJrCi0JCQkJQ2VudHVyaW9uIEdhdXRlbmcgMDE1NwotCQkJCVNPVVRIIEFGUklDQQotCi0zNC1EMi1DNCAgIChoZXgpCQlSRU5BIEdtYkggUHJpbnQgU3lzdGVtZQotMzREMkM0ICAgICAoYmFzZSAxNikJCVJFTkEgR21iSCBQcmludCBTeXN0ZW1lCi0JCQkJSGllbmxvaGVzdHJhc3NlIDI0Ci0JCQkJT3R0ZXJmaW5nIEJhdmFyaWEgODM2MjQKLQkJCQlHRVJNQU5ZCi0KLTM0LURGLTJBICAgKGhleCkJCUZ1amlrb24gSW5kdXN0cmlhbCBDby4sTGltaXRlZAotMzRERjJBICAgICAoYmFzZSAxNikJCUZ1amlrb24gSW5kdXN0cmlhbCBDby4sTGltaXRlZAotCQkJCTE2L0YuLCBUb3dlciAxLCBHcmFuZCBDZW50cmFsIFBsYXphLDEzOCBTaGF0aW4gUnVyYWwgCi0JCQkJQ29tbWl0dGVlIFJvYWQsU2hhdGluLCBOLlQuLCAKLQkJCQk1MjM5MzAKLQkJCQlIT05HIEtPTkcKLQotMzQtRTAtRDcgICAoaGV4KQkJRE9OR0dVQU4gUUlTSEVORyBFTEVDVFJPTklDUyBJTkRVU1RSSUFMIENPLiwgTFRECi0zNEUwRDcgICAgIChiYXNlIDE2KQkJRE9OR0dVQU4gUUlTSEVORyBFTEVDVFJPTklDUyBJTkRVU1RSSUFMIENPLiwgTFRECi0JCQkJWElOSkkgSU5EVVNUUklBTCBaT05FLCBNQUNIT05HIFRPV04KLQkJCQlET05HR1VBTiBHVUFOR0RPTkcgNTIzMTIzCi0JCQkJQ0hJTkEKLQotMzQtRUYtNDQgICAoaGV4KQkJMldpcmUKLTM0RUY0NCAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQa3d5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM0LUVGLThCICAgKGhleCkJCU5UVCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotMzRFRjhCICAgICAoYmFzZSAxNikJCU5UVCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotCQkJCU5UVCBIaWJpeWEgQmxkZy4gN0YKLQkJCQkxLTYsVWNoaXNhaXdhaS1jaG8gMS1jaG9tZQotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAwLTgwMTkKLQkJCQlKQVBBTgotCi0zNC1GMy05QiAgIChoZXgpCQlXaXpMQU4gTHRkLgotMzRGMzlCICAgICAoYmFzZSAxNikJCVdpekxBTiBMdGQuCi0JCQkJUC5PLkJveCA3OTQ4Ci0JCQkJSGFpZmEgIDMxMDc4Ci0JCQkJSVNSQUVMCi0KLTM0LUY5LTY4ICAgKGhleCkJCUFURUsgUHJvZHVjdHMsIExMQwotMzRGOTY4ICAgICAoYmFzZSAxNikJCUFURUsgUHJvZHVjdHMsIExMQwotCQkJCTIxMCBORSAxMHRoIEF2ZW51ZQotCQkJCUJyYWluZXJkIE1OIDU2NDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zOC0wMS05NyAgIChoZXgpCQlUb3NoaWJhIFNhbXN1bmcgU3RvcmFnZSBUZWNobm9sZ295IEtvcmVhIENvcnBvcmF0aW9uCi0zODAxOTcgICAgIChiYXNlIDE2KQkJVG9zaGliYSBTYW1zdW5nIFN0b3JhZ2UgVGVjaG5vbGdveSBLb3JlYSBDb3Jwb3JhdGlvbgotCQkJCTE0IEZsb29yLCBCbGRnLiBOby4gMTAyLCBEaWdpdGFsIEVtcGlyZTIsIDQ4NiwgU2luLWRvbmcsIFllb25ndG9uZy1ndSwgU3V3b24tc2ksIAotCQkJCVN1LXdvbiBHeWVvbmdnaSA0NDMtNzM0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTM4LTBBLTBBICAgKGhleCkJCVNreS1DaXR5IENvbW11bmljYXRpb24gYW5kIEVsZWN0cm9uaWNzIExpbWl0ZWQgQ29tcGFueQotMzgwQTBBICAgICAoYmFzZSAxNikJCVNreS1DaXR5IENvbW11bmljYXRpb24gYW5kIEVsZWN0cm9uaWNzIExpbWl0ZWQgQ29tcGFueQotCQkJCTExMDksIEJ1aWxkaW5nIEEsIEtlZmEgSW5kdXN0cmlhbCBwYXJrLCBIdWFuZ3VhbiBzb3V0aCByb2FkLCBHdWFubGFuLCAKLQkJCQlCYW9hbiwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODExMAotCQkJCUNISU5BCi0KLTM4LTBELUQ0ICAgKGhleCkJCVByaW1heCBFbGVjdHJvbmljcyBMVEQuCi0zODBERDQgICAgIChiYXNlIDE2KQkJUHJpbWF4IEVsZWN0cm9uaWNzIExURC4KLQkJCQk4RixOby4gNjY5LCBSdWV5IEt1YW5nIFJvYWQsIE5laWh1Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTM4LTE2LUQxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMzgxNkQxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zOC0yMi05RCAgIChoZXgpCQlQSVJFTExJIEJST0FEQkFORCBTT0xVVElPTlMgCi0zODIyOUQgICAgIChiYXNlIDE2KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TIAotCQkJCVZJQUxFIFNBUkNBIDIyMiAKLQkJCQkgIE1JTEFOTyAgSVRBTFkgMjAxMjYKLQkJCQlJVEFMWQotCi0zOC0yMi1ENiAgIChoZXgpCQlIM0MgVGVjaG5vbG9naWVzIENvLiwgTGltaXRlZAotMzgyMkQ2ICAgICAoYmFzZSAxNikJCUgzQyBUZWNobm9sb2dpZXMgQ28uLCBMaW1pdGVkCi0JCQkJMzEwIExpdWhlIFJvYWQsIFpoaWppYW5nIFNjaWVuY2UgUGFyawotCQkJCUhhbmd6aG91IFpoZWppYW5nLCAgMzEwMDUzCi0JCQkJQ0hJTkEKLQotMzgtMjYtQ0QgICAoaGV4KQkJQU5EVEVLICAKLTM4MjZDRCAgICAgKGJhc2UgMTYpCQlBTkRURUsgIAotCQkJCUFtIFNvZWxkbmVybW9vcyAxNwotCQkJCUhhbGxiZXJnbW9vcyBCYXZhcmlhIDUzOTkKLQkJCQlHRVJNQU5ZCi0KLTM4LTMxLUFDICAgKGhleCkJCVdFRwotMzgzMUFDICAgICAoYmFzZSAxNikJCVdFRwotCQkJCUF2LiBQcmVmLiBXYWxkZW1hciBHcnViYmEsIDMwMDAKLQkJCQlKYXJhZ3Xvv70gZG8gU3VsIFNhbnRhIENhdGFyaW5hIDg5MjU2LTkwMAotCQkJCUJSQVpJTAotCi0zOC01Mi0xQSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudCA3NzA1Ci0zODUyMUEgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQgNzcwNQotCQkJCTYwMCBNYXJjaCBSZC4KLQkJCQlPdHRhd2EgT25hdHJpbyBLMEEgMVQwCi0JCQkJQ0FOQURBCi0KLTM4LTU4LTBDICAgKGhleCkJCVBhbmFjY2VzcyBTeXN0ZW1zIEdtYkgKLTM4NTgwQyAgICAgKGJhc2UgMTYpCQlQYW5hY2Nlc3MgU3lzdGVtcyBHbWJICi0JCQkJR3V0ZW5iZXJnc3RyYe+/vWUgOAotCQkJCUlzbWFuaW5nIEJZIDg1NzM3Ci0JCQkJR0VSTUFOWQotCi0zOC01OS1GOSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0zODU5RjkgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLTM4LTVGLUMzICAgKGhleCkJCVl1IEplb25nIFN5c3RlbSwgQ28uTHRkCi0zODVGQzMgICAgIChiYXNlIDE2KQkJWXUgSmVvbmcgU3lzdGVtLCBDby5MdGQKLQkJCQkjNTAzLCBEb25nIGlsIEIvRCwgODI2LCBHdXJvLTNkb25nLCAKLQkJCQlHdXJvLUd1LCAKLQkJCQlTZW91bCAgMTUyLTg3OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zOC02My1GNiAgIChoZXgpCQkzTk9EIE1VTFRJTUVESUEoU0hFTlpIRU4pQ08uLExURAotMzg2M0Y2ICAgICAoYmFzZSAxNikJCTNOT0QgTVVMVElNRURJQShTSEVOWkhFTilDTy4sTFRECi0JCQkJRjYsQnVpbGRpbmcxMSxTaGVuemhlbiBTb2Z0d2FyZSBQYXJrCi0JCQkJTm8uMiBLZWppemhvbmcgUm9hZCxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTM4LTZFLTIxICAgKGhleCkJCVdhc2lvbiBHcm91cCBMdGQuCi0zODZFMjEgICAgIChiYXNlIDE2KQkJV2FzaW9uIEdyb3VwIEx0ZC4KLQkJCQlOby40NjggV2VzdCBUb25nemlwbyBSb2FkIEhpZ2gtVGVjaCBJbmR1c3RyaWFsIERldmVsb3BtZW50IFpvbmUKLQkJCQlDaGFuZ3NoYSBDaXR5IEh1bmFuIFByb3ZpbmNlLCA0MTAyMDUgCi0JCQkJQ0hJTkEKLQotMzgtNzItQzAgICAoaGV4KQkJQ09NVFJFTkQKLTM4NzJDMCAgICAgKGJhc2UgMTYpCQlDT01UUkVORAotCQkJCTNGLTEsMTAgTGFuZSA2MDksIENodW5nIEhzaW4gUm9hZCwgU2VjdGlvbiA1Ci0JCQkJU2FuIENodW5nIENpdHksIAotCQkJCVRhaXBlaSBIc2llbiAgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0zOC05MS1GQiAgIChoZXgpCQlYZW5veCBIb2xkaW5nIEJWCi0zODkxRkIgICAgIChiYXNlIDE2KQkJWGVub3ggSG9sZGluZyBCVgotCQkJCUxpbmdlZGlqayA4MAotCQkJCVRyaWNodCBHZWxkZXJsYW5kIDQxOTYgSEMKLQkJCQlORVRIRVJMQU5EUwotCi0zOC05NS05MiAgIChoZXgpCQlCZWlqaW5nIFRlbmR5cm9uIENvcnBvcmF0aW9uCi0zODk1OTIgICAgIChiYXNlIDE2KQkJQmVpamluZyBUZW5keXJvbiBDb3Jwb3JhdGlvbgotCQkJCTE4MTAsVG93ZXIgQixKaW4tbWEsQnVpbGRpbmcsMTcgRWFzdCBRaW5nIEh1YSBSb2FkIAotCQkJCUhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODMKLQkJCQlDSElOQQotCi0zOC05Ri04MyAgIChoZXgpCQlPVE4gU3lzdGVtcyBOLlYuCi0zODlGODMgICAgIChiYXNlIDE2KQkJT1ROIFN5c3RlbXMgTi5WLgotCQkJCUF0ZWFsYWFuIDM0Ci0JCQkJSGVyZW50YWxzICAyMjAwCi0JCQkJQkVMR0lVTQotCi0zOC1BOS01RiAgIChoZXgpCQlBY3RpZmlvIEluYwotMzhBOTVGICAgICAoYmFzZSAxNikJCUFjdGlmaW8gSW5jCi0JCQkJMjI1IFd5bWFuIFN0cmVldAotCQkJCVN1aXRlIDMwCi0JCQkJV2FsdGhhbSBNQSAwMjQ1MQotCQkJCUlORElBCi0KLTM4LUJCLTIzICAgKGhleCkJCU96VmlzaW9uIEFtZXJpY2EgTExDCi0zOEJCMjMgICAgIChiYXNlIDE2KQkJT3pWaXNpb24gQW1lcmljYSBMTEMKLQkJCQk0MDAgV2VzdCBDdW1taW5ncyBQYXJrCi0JCQkJV29idXJuIE1BIDAxODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zOC1DNy1CQSAgIChoZXgpCQlDUyBTZXJ2aWNlcyBDby4sTHRkLgotMzhDN0JBICAgICAoYmFzZSAxNikJCUNTIFNlcnZpY2VzIENvLixMdGQuCi0JCQkJSW1vbiBCTERHIDk1IEVkb21hY2hpCi0JCQkJQ2h1b2gta3UKLQkJCQlLb2JlIEh5b2dvIDY1MDAwMzMKLQkJCQlKQVBBTgotCi0zOC1DOC01QyAgIChoZXgpCQlDaXNjbyBTUFZURwotMzhDODVDICAgICAoYmFzZSAxNikJCUNpc2NvIFNQVlRHCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCU1TIDQuVC42MDcKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zOC1EMS0zNSAgIChoZXgpCQlFYXN5SU8gQ29ycG9yYXRpb24gU2RuLiBCaGQuCi0zOEQxMzUgICAgIChiYXNlIDE2KQkJRWFzeUlPIENvcnBvcmF0aW9uIFNkbi4gQmhkLgotCQkJCU5vLiAzMi0yICZhbXA7IDMyLTMsIEphbGFuIFB1dGVyaSAyLzQKLQkJCQlCYW5kYXIgUHV0ZXJpCi0JCQkJUHVjaG9uZyBTZWxhbmdvciA0NzEwMAotCQkJCU1BTEFZU0lBCi0KLTM4LUU3LUQ4ICAgKGhleCkJCUhUQyBDb3Jwb3JhdGlvbgotMzhFN0Q4ICAgICAoYmFzZSAxNikJCUhUQyBDb3Jwb3JhdGlvbgotCQkJCU5vLjIzIFhpbmdodWEgUm9hZAotCQkJCVRhb3l1YW4gQ2l0eQotCQkJCVRhb3l1YW4gQ291bnR5ICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTM4LUU4LURGICAgKGhleCkJCWIgZ21iaCBtZWRpZW4gKyBkYXRlbmJhbmtlbgotMzhFOERGICAgICAoYmFzZSAxNikJCWIgZ21iaCBtZWRpZW4gKyBkYXRlbmJhbmtlbgotCQkJCUt1cmZ1ZXJzdGVuc3RyYXNzZSAyMgotCQkJCUx1ZHdpZ3NidXJnIEJXIDcxNjM2Ci0JCQkJR0VSTUFOWQotCi0zOC1FOS04QyAgIChoZXgpCQlSZWNvIFMucC5BLgotMzhFOThDICAgICAoYmFzZSAxNikJCVJlY28gUy5wLkEuCi0JCQkJdmlhIGRlbGwmIzM5O0luZHVzdHJpYSwgOAotCQkJCU1vbnRhbm8gTHVjaW5vIENPIDIyMDcwCi0JCQkJSVRBTFkKLQotMzgtRkUtQzUgICAoaGV4KQkJRWxsaXBzIEIuVi4KLTM4RkVDNSAgICAgKGJhc2UgMTYpCQlFbGxpcHMgQi5WLgotCQkJCVVya2hvdmVuc2V3ZWcgMTEKLQkJCQlFaW5kaG92ZW4gTm9vcmQtQnJhYmFudCA1NjQxIEtBCi0JCQkJTkVUSEVSTEFORFMKLQotM0MtMDItQjEgICAoaGV4KQkJQ3JlYXRpb24gVGVjaG5vbG9naWVzIExQCi0zQzAyQjEgICAgIChiYXNlIDE2KQkJQ3JlYXRpb24gVGVjaG5vbG9naWVzIExQCi0JCQkJMzkzOSBOb3J0aCBGcmFzZXIgV2F5Ci0JCQkJQnVybmFieSBCQyBWNUogNUoyCi0JCQkJQ0FOQURBCi0KLTNDLTA0LUJGICAgKGhleCkJCVBSQVZJUyBTWVNURU1TIENvLkx0ZC4sIAotM0MwNEJGICAgICAoYmFzZSAxNikJCVBSQVZJUyBTWVNURU1TIENvLkx0ZC4sIAotCQkJCTRGLCA1RiBKYWV5b29uIEJsZCwgNzUtMyBZYW5namFlLURvbmcsIAotCQkJCVNlb3VsIFNlb2Noby1HdSAxMzctODg5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTNDLTA1LUFCICAgKGhleCkJCVByb2R1Y3QgQ3JlYXRpb24gU3R1ZGlvCi0zQzA1QUIgICAgIChiYXNlIDE2KQkJUHJvZHVjdCBDcmVhdGlvbiBTdHVkaW8KLQkJCQk0MjUgV2VzdGxha2UgQXZlIE4KLQkJCQlTZWF0dGxlIFdBIDk4MTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy0wNy01NCAgIChoZXgpCQlBcHBsZSBJbmMKLTNDMDc1NCAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTA5LTZEICAgKGhleCkJCVBvd2VyaG91c2UgRHluYW1pY3MKLTNDMDk2RCAgICAgKGJhc2UgMTYpCQlQb3dlcmhvdXNlIER5bmFtaWNzCi0JCQkJMSBCcmlkZ2UgU3RyZWV0Ci0JCQkJTmV3dG9uIE1BIDAyNDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy0wRi1DMSAgIChoZXgpCQlLQkMgTmV0d29ya3MKLTNDMEZDMSAgICAgKGJhc2UgMTYpCQlLQkMgTmV0d29ya3MKLQkJCQkyNTY5MSBBdGxhbnRpYyBPY2VhbiBEcgotCQkJCVN1aXRlIEIzCi0JCQkJTGFrZSBGb3Jlc3QgQ0EgOTI2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTEwLTZGICAgKGhleCkJCUFMQkFISVRIIFRFQ0hOT0xPR0lFUyAKLTNDMTA2RiAgICAgKGJhc2UgMTYpCQlBTEJBSElUSCBURUNITk9MT0dJRVMgCi0JCQkJMTY1LCBLaW5nIEFiZHVsbGFoIFNlY29uZCBTdHJlZXQKLQkJCQlBbW1hbiAgMTE5NTMKLQkJCQlKT1JEQU4KLQotM0MtMTktMTUgICAoaGV4KQkJR0ZJIENocm9ubyBUaW1lCi0zQzE5MTUgICAgIChiYXNlIDE2KQkJR0ZJIENocm9ubyBUaW1lCi0JCQkJMTIxIHJ1ZSBkZXMgR3VpbGxlZXMKLQkJCQlDSEFVUkFZICA3OTE4NQotCQkJCUZSQU5DRQotCi0zQy0xQS03OSAgIChoZXgpCQlIdWF5dWFuIFRlY2hub2xvZ3kgQ08uLExURAotM0MxQTc5ICAgICAoYmFzZSAxNikJCUh1YXl1YW4gVGVjaG5vbG9neSBDTy4sTFRECi0JCQkJUjMwOCBCbG9jayBKaW5nbWVuZyBIaWdoLVRlY2ggQnVpbGRpbmcsTk8uNS0xIFNoYW5nZGkgRWFzdCBSb2FkLAotCQkJCUhhaWRpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotM0MtMUMtQkUgICAoaGV4KQkJSkFEQUsgTExDCi0zQzFDQkUgICAgIChiYXNlIDE2KQkJSkFEQUsgTExDCi0JCQkJNzI3OSBXaWxsaWFtIEJhcnJ5IEJsdmQKLQkJCQlOb3J0aCBTeXJhY3VzZSBOWSAxMzIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtMjYtRDUgICAoaGV4KQkJU290ZXJhIFdpcmVsZXNzCi0zQzI2RDUgICAgIChiYXNlIDE2KQkJU290ZXJhIFdpcmVsZXNzCi0JCQkJOTQ0NCBXYXBsZXMgU3RyZWV0Ci0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy0yNy02MyAgIChoZXgpCQlTTEUgcXVhbGl0eSBlbmdpbmVlcmluZyBHbWJIICZhbXA7IENvLiBLRwotM0MyNzYzICAgICAoYmFzZSAxNikJCVNMRSBxdWFsaXR5IGVuZ2luZWVyaW5nIEdtYkggJmFtcDsgQ28uIEtHCi0JCQkJSm9zZWYtQnVjaGluZ2VyLVN0ci4gOQotCQkJCUdyYWZlbmF1IEJhdmFyaWEgOTQ0ODEKLQkJCQlHRVJNQU5ZCi0KLTNDLTJELUI3ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0zQzJEQjcgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TODcyMwotCQkJCURhbGxhcyBUZXhhcyA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtMkYtM0EgICAoaGV4KQkJU0ZPUlpBVE8gQ29ycC4KLTNDMkYzQSAgICAgKGJhc2UgMTYpCQlTRk9SWkFUTyBDb3JwLgotCQkJCTg2MwotCQkJCUFSQUkKLQkJCQlISU5PLVNISSBUT0tZTyAxOTEtMDAyMgotCQkJCUpBUEFOCi0KLTNDLTM5LUMzICAgKGhleCkJCUpXIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotM0MzOUMzICAgICAoYmFzZSAxNikJCUpXIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTNBMTcsIE5vLiA1IEhzaW4teWkgUmQuLCBTZWMuIDUKLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotM0MtNEEtOTIgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0zQzRBOTIgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTRDLTY5ICAgKGhleCkJCUluZmluaXR5IFN5c3RlbSBTLkwuCi0zQzRDNjkgICAgIChiYXNlIDE2KQkJSW5maW5pdHkgU3lzdGVtIFMuTC4KLQkJCQlDcnRyYS4gTi1JSSwgS20gNDgsNSBQb2wuIEluZC4gQ2FiYW5pbGxhcyBkZWwgQ2FtcG8sIFBhcmMuIDEyQgotCQkJCUd1YWRhbGFqYXJhICAxOTE3MQotCQkJCVNQQUlOCi0KLTNDLTVBLTM3ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTNDNUEzNyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTNDLTVGLTAxICAgKGhleCkJCVN5bmVyY2hpcCBDby4sIEx0ZC4KLTNDNUYwMSAgICAgKGJhc2UgMTYpCQlTeW5lcmNoaXAgQ28uLCBMdGQuCi0JCQkJYy9vIFN5bmVyY2hpcCBVU0EgQ29ycC4KLQkJCQk4ODAgRS4gQXJxdWVzIEF2ZS4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTYyLTAwICAgKGhleCkJCVNhbXN1bmcgZWxlY3Ryb25pY3MgQ08uLCBMVEQKLTNDNjIwMCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIGVsZWN0cm9uaWNzIENPLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIFllb25ndG9uZy1ndSwKLQkJCQlTdXdvbi1DaXR5IEd5ZW9uZ2dpLWRvIDQ0My03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotM0MtNjItNzggICAoaGV4KQkJU0hFTlpIRU4gSkVUTkVUIFRFQ0hOT0xPR1kgQ08uLExURC4KLTNDNjI3OCAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBKRVRORVQgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCVJvb20gNDAzLDR0aCBmbG9vcixRaW5naHVhIEluZm9ybWF0aW9uIEJ1aWxkaW5nLEtleXVhbiBSb2FkLE5vcnRoIERpc3RyaWN0IG9mIFRlY2gtUGFyayxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTNDLTY3LTJDICAgKGhleCkJCVNjaW92aWQgSW5jLgotM0M2NzJDICAgICAoYmFzZSAxNikJCVNjaW92aWQgSW5jLgotCQkJCTM4NyBTIFNpbHZlcmJyb29rIERyCi0JCQkJQW5haGVpbSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtNkYtNDUgICAoaGV4KQkJRmliZXJwcm8gSW5jLgotM0M2RjQ1ICAgICAoYmFzZSAxNikJCUZpYmVycHJvIEluYy4KLQkJCQk1OS00IEphbmctZG9uZywgWXVzb25nLWd1Ci0JCQkJRGVham9uIDMwNS0zNDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotM0MtNzQtMzcgICAoaGV4KQkJUklNCi0zQzc0MzcgICAgIChiYXNlIDE2KQkJUklNCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgM1c4Ci0JCQkJQ0FOQURBCi0KLTNDLTc1LTRBICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0zQzc1NEEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy04Qi1GRSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0zQzhCRkUgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zQy05MS01NyAgIChoZXgpCQlIYW5nemhvdSBZdWxvbmcgQ29ubXVuaWNhdGlvbiBDby4sTHRkCi0zQzkxNTcgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgWXVsb25nIENvbm11bmljYXRpb24gQ28uLEx0ZAotCQkJCTVGIEJ1aWxkaW5nIDIsTm8uNTYsTGl1aGUgUm9hZCxYaWh1IERpc3RyaWN0Ci0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDIzCi0JCQkJQ0hJTkEKLQotM0MtOTktRjcgICAoaGV4KQkJTGFuc2VudGVjaG5vbG9neSBBQgotM0M5OUY3ICAgICAoYmFzZSAxNikJCUxhbnNlbnRlY2hub2xvZ3kgQUIKLQkJCQlS77+9cmt1bGxzdu+/vWdlbiA0Ci0JCQkJSGFsbXN0YWQgIDMwMjQxCi0JCQkJU1dFREVOCi0KLTNDLUE3LTJCICAgKGhleCkJCU1SViBDb21tdW5pY2F0aW9ucyAoTmV0d29ya3MpIExURAotM0NBNzJCICAgICAoYmFzZSAxNikJCU1SViBDb21tdW5pY2F0aW9ucyAoTmV0d29ya3MpIExURAotCQkJCVAuTyBCb3ggNjE0Ci0JCQkJWW9rbmVhbSAgIDIwNjkyCi0JCQkJSVNSQUVMCi0KLTNDLUIxLTVCICAgKGhleCkJCUF2YXlhLCBJbmMKLTNDQjE1QiAgICAgKGJhc2UgMTYpCQlBdmF5YSwgSW5jCi0JCQkJMjExIE1vdW50IEFpcnkgUm9hZAotCQkJCUJhc2tpbmcgUmlkZ2UgTkogMDc5MjAtMjMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtQjEtN0YgICAoaGV4KQkJV2F0dHdhdGNoZXJzIFB0eSBMZAotM0NCMTdGICAgICAoYmFzZSAxNikJCVdhdHR3YXRjaGVycyBQdHkgTGQKLQkJCQkyMiBXb29kYnVyeSBSZCBTdC4gSXZlcwotCQkJCVN5ZG5leSBOU1cgMjA3NQotCQkJCUFVU1RSQUxJQQotCi0zQy1CRC1EOCAgIChoZXgpCQlMRyBFTEVDVFJPTklDUyBJTkMKLTNDQkREOCAgICAgKGJhc2UgMTYpCQlMRyBFTEVDVFJPTklDUyBJTkMKLQkJCQkxOS0xLCBDSEVPTkdITy1SSSwgSklOV0ktTVlFT04KLQkJCQlQWUVPTkdUQUVLIEdZRU9OR0dJLURPIDQ1MS03MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotM0MtQzAtQzYgICAoaGV4KQkJZCZhbXA7YiBhdWRpb3RlY2huaWsgR21iSAotM0NDMEM2ICAgICAoYmFzZSAxNikJCWQmYW1wO2IgYXVkaW90ZWNobmlrIEdtYkgKLQkJCQlFdWdlbiBBZG9sZmYgU3RyIDEzNAotCQkJCUJhY2tuYW5nIEJhZGVuIFd1ZXJ0dGVtYmVyZyA3MTUyMgotCQkJCUdFUk1BTlkKLQotM0MtRDEtNkUgICAoaGV4KQkJVGVsZXBvd2VyIENvbW11bmljYXRpb24gQ28uLCBMdGQKLTNDRDE2RSAgICAgKGJhc2UgMTYpCQlUZWxlcG93ZXIgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZAotCQkJCTUvRixab25naGUgQnVpbGRpbmcsIEhhbnRpYW4gVGVjaG5vbG9neSBUb3duLEd1aXBpbmcgUkQsTmFuaGFpIERpc3RyaWN0LEYKLQkJCQlGb3NoYW4gQ2l0eSBHdWFuZ2RvbmcgNTI4MjUxCi0JCQkJQ0hJTkEKLQotM0MtRDktMkIgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0zQ0Q5MkIgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy1ERi0xRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0zQ0RGMUUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy1FNS1BNiAgIChoZXgpCQlIYW5nemhvdSBIM0MgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotM0NFNUE2ICAgICAoYmFzZSAxNikJCUhhbmd6aG91IEgzQyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJT3JpZW50YWwgRWxlY3Ryb25pYyBCbGQuLCBOTy4yLENodWFuZ3llIFJvYWQKLQkJCQlTaGFuZyBEaSBJbmZvcm1hdGlvbiBJbmR1c3RyeSBCYXNlLCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotM0MtRUEtNEYgICAoaGV4KQkJMldpcmUKLTNDRUE0RiAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy1GNS0yQyAgIChoZXgpCQlEU1BFQ0lBTElTVFMgR21iSAotM0NGNTJDICAgICAoYmFzZSAxNikJCURTUEVDSUFMSVNUUyBHbWJICi0JCQkJS2Fpc2VyaW4tQXVndXN0YS1BbGxlZSAxMC0xMQotCQkJCUJlcmxpbiAgMTA1NTMKLQkJCQlHRVJNQU5ZCi0KLTNDLUY3LTJBICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0zQ0Y3MkEgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1NzAKLQkJCQlGSU5MQU5ECi0KLTQwLTAxLUM2ICAgKGhleCkJCTNDT00gRVVST1BFIExURAotNDAwMUM2ICAgICAoYmFzZSAxNikJCTNDT00gRVVST1BFIExURAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTQwLTA0LTBDICAgKGhleCkJCUEmVAotNDAwNDBDICAgICAoYmFzZSAxNikJCUEmVAotCQkJCSM0MTEsIFdpbGwgVG93biwgNDAyLTMKLQkJCQlTYW5nLURvbmcsIFdvbm1pLUd1LCAKLQkJCQlCdWNoZW9uLVNpIEd5ZW9uZ2dpLURvIDQyMC04MTQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDAtMTItRTQgICAoaGV4KQkJQ29tcGFzcy1FT1MKLTQwMTJFNCAgICAgKGJhc2UgMTYpCQlDb21wYXNzLUVPUwotCQkJCTcgR2lib3JlaSBJc3JhZWwKLQkJCQlOYXRhbnlhICA0MjUwNAotCQkJCUlTUkFFTAotCi00MC0xMy1EOSAgIChoZXgpCQlHbG9iYWwgRVMKLTQwMTNEOSAgICAgKGJhc2UgMTYpCQlHbG9iYWwgRVMKLQkJCQlTaW5pbe+/vWVudGllIDggYgotCQkJCUVzcG9vICAwMjYzMQotCQkJCUZJTkxBTkQKLQotNDAtMTUtOTcgICAoaGV4KQkJUHJvdGVjdCBBbWVyaWNhLCBJbmMuCi00MDE1OTcgICAgIChiYXNlIDE2KQkJUHJvdGVjdCBBbWVyaWNhLCBJbmMuCi0JCQkJNTEwMCBOIElILTM1Ci0JCQkJU3VpdGUgQgotCQkJCVJvdW5kIFJvY2sgVFggNzg2ODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLTE2LTlGICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotNDAxNjlGICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCTEtNkYsIEJ1aWxkaW5nIDIsIFBpbmdzaGFuZGF5dWFuIEluZHVzdHJpYWwsIFNvdXRoIFpvbmUsCi0JCQkJVGFveXVhbiBTdHJlZXQsIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi00MC0xOC1ENyAgIChoZXgpCQlXeWxlIFRlbGVtZXRyeSBhbmQgRGF0YSBTeXN0ZW1zCi00MDE4RDcgICAgIChiYXNlIDE2KQkJV3lsZSBUZWxlbWV0cnkgYW5kIERhdGEgU3lzdGVtcwotCQkJCTQ0NDE3IFBlY2FuIENUCi0JCQkJQ2FsaWZvcm5pYSBNRCAyMDYxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtMUQtNTkgICAoaGV4KQkJQmlvbWV0cmljIEFzc29jaWF0ZXMsIExQCi00MDFENTkgICAgIChiYXNlIDE2KQkJQmlvbWV0cmljIEFzc29jaWF0ZXMsIExQCi0JCQkJOTQ3NSBEZWVyZWNvIFJkLgotCQkJCVN1aXRlIDMwNAotCQkJCVRpbW9uaXVtIE1EIDIxMDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC0yMi1FRCAgIChoZXgpCQlEaWdpdGFsIFByb2plY3Rpb24gTHRkCi00MDIyRUQgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBQcm9qZWN0aW9uIEx0ZAotCQkJCUdyZWVuc2lkZSBXYXkKLQkJCQlNaWRkbGV0b24KLQkJCQlNYW5jaGVzdGVyIExhbmNzIE0yNCAxWFgKLQkJCQlVTklURUQgS0lOR0RPTQotCi00MC0yNS1DMiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTQwMjVDMiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTQwLTJCLUExICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi00MDJCQTEgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotNDAtMkMtRjQgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi00MDJDRjQgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMYW5lIDM1MSwgVGFpcGluZyBSZC4gU2VjLiAxLCBUc2FvIFR1ZW4sIAotCQkJCU5hbi1Ub3UgSHNpZW4sICA1NDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQwLTMwLTA0ICAgKGhleCkJCUFwcGxlLCBJbmMuCi00MDMwMDQgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLTM3LUFEICAgKGhleCkJCU1hY3JvIEltYWdlIFRlY2hub2xvZ3ksIEluYy4KLTQwMzdBRCAgICAgKGJhc2UgMTYpCQlNYWNybyBJbWFnZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJRWFzdCBCbGRnLiwgNnRoIEZsb29yLCBJVCBWZW50dXJlIFRvd2VyLAotCQkJCTc4IEdhcmFrYm9uLURvbmcsIFNvbmdwYS1HdSwKLQkJCQlTZW91bCAgMTM4LTk1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00MC0zQy1GQyAgIChoZXgpCQlBcHBsZSBJbmMKLTQwM0NGQyAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIGluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLTQwLTIyICAgKGhleCkJCVpJVgotNDA0MDIyICAgICAoYmFzZSAxNikJCVpJVgotCQkJCVBhcnF1ZSBUZWNub2zvv71naWNvLCAyMTAKLQkJCQlaQU1VRElPIFZJWkNBWUEgNDgxNzAKLQkJCQlTUEFJTgotCi00MC00MC02QiAgIChoZXgpCQlJY29tZXJhCi00MDQwNkIgICAgIChiYXNlIDE2KQkJSWNvbWVyYQotCQkJCVZpa2luZ3NnYXRhbiAzCi0JCQkJR++/vXRlYm9yZyAgNDExMDQKLQkJCQlTV0VERU4KLQotNDAtNEEtMDMgICAoaGV4KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTQwNEEwMyAgICAgKGJhc2UgMTYpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotCQkJCU5vLjYgSW5ub3ZhdGlvbiBSb2FkIElJCi0JCQkJU2NpZW5jZSBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDAtNEQtOEUgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotNDA0RDhFICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi00MC01Mi0wRCAgIChoZXgpCQlQaWNvIFRlY2hub2xvZ3kKLTQwNTIwRCAgICAgKGJhc2UgMTYpCQlQaWNvIFRlY2hub2xvZ3kKLQkJCQlKYW1lcyBIb3VzZSwgTWFybGJvcm91Z2ggUm9hZAotCQkJCUNvbG13b3J0aCBCdXNpbmVzcyBQYXJrCi0JCQkJU3QgTmVvdHMgQ2FtYnJpZGdlc2hpcmUgIFBFMTkgOFlQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDAtNTUtMzkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNDA1NTM5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtNUEtOUIgICAoaGV4KQkJQU5PVk8KLTQwNUE5QiAgICAgKGJhc2UgMTYpCQlBTk9WTwotCQkJCVpJIGRlIEJyYWNoZXV4IAotCQkJCTE2LCBSdWUgSm9zZXBoIEN1Z25vdAotCQkJCUJFQVVWQUlTICA2MDAwMAotCQkJCUZSQU5DRQotCi00MC01Ri1CRSAgIChoZXgpCQlSSU0KLTQwNUZCRSAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotNDAtNUYtQzIgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTQwNUZDMiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtNjEtODYgICAoaGV4KQkJTUlDUk8tU1RBUiBJTlQnTCBDTy4sTFRECi00MDYxODYgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlQnTCBDTy4sTFRECi0JCQkJTm8uNjksTGktRGUgU3QKLQkJCQlKdW5nLUhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDAtNjEtOEUgICAoaGV4KQkJSG9ydC1QbGFuCi00MDYxOEUgICAgIChiYXNlIDE2KQkJSG9ydC1QbGFuCi0JCQkJNjY2LTEgU2hpbW9oYXJhCi0JCQkJSGlyYWhhcmEKLQkJCQlLb21vcm8gTmFnYW5vIDM4NC0wMDkyCi0JCQkJSkFQQU4KLQotNDAtODMtREUgICAoaGV4KQkJTW90b3JvbGEKLTQwODNERSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYQotCQkJCU9uZSBNb3Rvcm9sYSBQbGF6YQotCQkJCUhvbHRzdmlsbGUgTlkgMTE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLTg0LTkzICAgKGhleCkJCUNsYXZpc3RlciBBQgotNDA4NDkzICAgICAoYmFzZSAxNikJCUNsYXZpc3RlciBBQgotCQkJCVNqb2dhdGFuIDZKCi0JCQkJT3Juc2tvbGRzdmlrICA4OTE2MAotCQkJCVNXRURFTgotCi00MC04QS05QSAgIChoZXgpCQlUSVRFTkcgQ08uLCBMdGQuCi00MDhBOUEgICAgIChiYXNlIDE2KQkJVElURU5HIENPLiwgTHRkLgotCQkJCTdGbC4gU2hpbmRvIEIvRCAxMCBHYXJhay1kb25nCi0JCQkJU29uZ3BhLWd1Ci0JCQkJU2VvdWwgIDEzOC0xNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDAtOEItRjYgICAoaGV4KQkJU2hlbnpoZW4gVENMIE5ldyBUZWNobm9sb2d5IENvOyBMdGQuCi00MDhCRjYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gVENMIE5ldyBUZWNobm9sb2d5IENvOyBMdGQuCi0JCQkJVENMIEJ1aWxkaW5nLCAjNSBDZW50cmFsIE5hbmhhaSBSb2FkLCBOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuLCBHdWFuZ2RvbmcsICA1MTgwNjcKLQkJCQlDSElOQQotCi00MC05NS01OCAgIChoZXgpCQlBaXNpbm8gQ29ycG9yYXRpb24KLTQwOTU1OCAgICAgKGJhc2UgMTYpCQlBaXNpbm8gQ29ycG9yYXRpb24KLQkJCQlOby4xOEEsIFhpbmdzaGlrb3UgUm9hZCwKLQkJCQlIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMTk1Ci0JCQkJQ0hJTkEKLQotNDAtOTctRDEgICAoaGV4KQkJQksgRWxlY3Ryb25pY3MgY2MKLTQwOTdEMSAgICAgKGJhc2UgMTYpCQlCSyBFbGVjdHJvbmljcyBjYwotCQkJCTE1MCBTd2FhcmRsZWxpZSBBdmUKLQkJCQlUaGUgV2lsbG93cwotCQkJCVByZXRvcmlhIEdhdXRlbmcgMDE4NAotCQkJCVNPVVRIIEFGUklDQQotCi00MC05OC00RSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotNDA5ODRFICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC05OC03QiAgIChoZXgpCQlBaXNpbm8gQ29ycG9yYXRpb24KLTQwOTg3QiAgICAgKGJhc2UgMTYpCQlBaXNpbm8gQ29ycG9yYXRpb24KLQkJCQlOby4xOCBBLFhpbmdzaGlrb3UgUm9hZCxIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDE5NQotCQkJCUNISU5BCi0KLTQwLUE2LUE0ICAgKGhleCkJCVBhc3NpdlN5c3RlbXMgTHRkCi00MEE2QTQgICAgIChiYXNlIDE2KQkJUGFzc2l2U3lzdGVtcyBMdGQKLQkJCQlNZWR3YXkgSG91c2UKLQkJCQlOZXdidXJ5IEJ1c2luZXNzIFBhcmsKLQkJCQlOZXdidXJ5IEJlcmtzIFJHMTQgMlBaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDAtQTYtRDkgICAoaGV4KQkJQXBwbGUKLTQwQTZEOSAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtQjItQzggICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi00MEIyQzggICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLTQwLUIzLUZDICAgKGhleCkJCUxvZ2l0YWwgQ28uIExpbWl0ZWQgCi00MEIzRkMgICAgIChiYXNlIDE2KQkJTG9naXRhbCBDby4gTGltaXRlZCAKLQkJCQlSbSA5MDEtOTAyLCA5L0YsIE5hdGhhbiBDZW50cmUsIAotCQkJCTU4MEctSyBOYXRoYW4gUm9hZCwgTW9uZ2tvaywgCi0JCQkJS293bG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTQwLUMyLTQ1ICAgKGhleCkJCVNoZW56aGVuIEhleGljb20gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTQwQzI0NSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBIZXhpY29tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTUxMCBXZXN0IEJ1aWxkaW5nLE5hbnNoYW4gU29mdHdhcmUgUGFyaywgTmFuc2hhbiBEaXN0LgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTMKLQkJCQlDSElOQQotCi00MC1DNy1DOSAgIChoZXgpCQlOYXZpaXQgSW5jLgotNDBDN0M5ICAgICAoYmFzZSAxNikJCU5hdmlpdCBJbmMuCi0JCQkJMzA1OEEgU2NvdHQgQmx2ZC4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtQ0QtM0EgICAoaGV4KQkJWjMgVGVjaG5vbG9neQotNDBDRDNBICAgICAoYmFzZSAxNikJCVozIFRlY2hub2xvZ3kKLQkJCQkyNzIwIEhhcnJpc29uIFN0Ci0JCQkJRXZhbnN0b24gSUwgNjAyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLUQzLTJEICAgKGhleCkJCUFwcGxlLCBJbmMKLTQwRDMyRCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC1ENC0wRSAgIChoZXgpCQlCaW9kYXRhIEx0ZAotNDBENDBFICAgICAoYmFzZSAxNikJCUJpb2RhdGEgTHRkCi0JCQkJMTAgU3RvY2tzIFN0cmVldAotCQkJCU1hbmNoZXN0ZXIgIE04IDhRRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTQwLUVDLUY4ICAgKGhleCkJCVNpZW1lbnMgQUcKLTQwRUNGOCAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHCi0JCQkJSSBJUyBNUyBFRE0KLQkJCQlNdW5pY2ggR2VybWFueSA4NTYzMAotCQkJCUdFUk1BTlkKLQotNDAtRUYtNEMgICAoaGV4KQkJRmlob25lc3QgY29tbXVuaWNhdGlvbiBjby4sTHRkCi00MEVGNEMgICAgIChiYXNlIDE2KQkJRmlob25lc3QgY29tbXVuaWNhdGlvbiBjby4sTHRkCi0JCQkJUm9vbTkwMixQYXJrIHJvYWQsWmhpeGluZyBidXNpbmVzcy1idWlsZGluZwotCQkJCUNoYW5ncGluZyB0b3duCi0JCQkJRG9uZ2d1YW4gR3Vhbmdkb25nIDUyMzU2MAotCQkJCUNISU5BCi0KLTQwLUYxLTRDICAgKGhleCkJCUlTRSBFdXJvcGUgU1BSTAotNDBGMTRDICAgICAoYmFzZSAxNikJCUlTRSBFdXJvcGUgU1BSTAotCQkJCTQyIGEgcnVlIEZhaWRlcgotCQkJCUJydXNzZWxzICAxMDUwCi0JCQkJQkVMR0lVTQotCi00MC1GNC1FQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi00MEY0RUMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC1GNS0yRSAgIChoZXgpCQlMZWljYSBNaWNyb3N5c3RlbXMgKFNjaHdlaXopIEFHCi00MEY1MkUgICAgIChiYXNlIDE2KQkJTGVpY2EgTWljcm9zeXN0ZW1zIChTY2h3ZWl6KSBBRwotCQkJCU1heCBTY2htaWRoZWlueS1TdHJhc3NlIDIwMQotCQkJCUhlZXJicnVnZyBTRyA5NDM1Ci0JCQkJU1dJVFpFUkxBTkQKLQotNDAtRkMtODkgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTQwRkM4OSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOb3J0aCBVUyBIaWdod2F5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC0yNS1CQiAgIChoZXgpCQlCYW1ib28gRW50ZXJ0YWlubWVudCBDb3Jwb3JhdGlvbgotNDQyNUJCICAgICAoYmFzZSAxNikJCUJhbWJvbyBFbnRlcnRhaW5tZW50IENvcnBvcmF0aW9uCi0JCQkJMTc5IFNvdXRoIFN0cmVldAotCQkJCTZ0aCBGbG9vcgotCQkJCUJvc3RvbiBNQSAwMjExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtMkEtNjAgICAoaGV4KQkJQXBwbGUsIEluYy4KLTQ0MkE2MCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtMzctMTkgICAoaGV4KQkJMiBTYXZlIEVuZXJneSBMdGQKLTQ0MzcxOSAgICAgKGJhc2UgMTYpCQkyIFNhdmUgRW5lcmd5IEx0ZAotCQkJCVRoZSBBbm5leGUsIEZpZWxkIEhvdXNlIEJhcm4KLQkJCQlDaGluZWhhbSBMYW5lCi0JCQkJU2hlcmJvcm5lIFN0IEpvaG4gSGFtcHNoaXJlIFJHMjQgOUxSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDQtMzctNkYgICAoaGV4KQkJWW91bmcgRWxlY3RyaWMgU2lnbiBDbwotNDQzNzZGICAgICAoYmFzZSAxNikJCVlvdW5nIEVsZWN0cmljIFNpZ24gQ28KLQkJCQkxNjUxIE4gMTAwMCBXCi0JCQkJTG9nYW4gVVQgODQzMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTM3LUU2ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby5MdGQKLTQ0MzdFNiAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uTHRkCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi00NC0zRC0yMSAgIChoZXgpCQlOdXZvbHQKLTQ0M0QyMSAgICAgKGJhc2UgMTYpCQlOdXZvbHQKLQkJCQk4MDg3IEJvdWwuIGRlIGxhIFJpdmUgU3VkCi0JCQkJTGV2aXMgUXVlYmVjIEc2ViA5RzkKLQkJCQlDQU5BREEKLQotNDQtNEUtMUEgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi00NDRFMUEgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LTRGLTVFICAgKGhleCkJCVBhbiBTdHVkaW9zIENvLixMdGQuCi00NDRGNUUgICAgIChiYXNlIDE2KQkJUGFuIFN0dWRpb3MgQ28uLEx0ZC4KLQkJCQkxRi4sIE5PLjQwMiwgU0VDLiAyLCBKSE9OR1lBTkcgTi4gUkQuLCBCRUlUT1UgRElTVFJJQ1QsCi0JCQkJVEFJUEVJIENJVFkgICAxMTI1OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDQtNTEtREIgICAoaGV4KQkJUmF5dGhlb24gQkJOIFRlY2hub2xvZ2llcwotNDQ1MURCICAgICAoYmFzZSAxNikJCVJheXRoZW9uIEJCTiBUZWNobm9sb2dpZXMKLQkJCQkxMCBNb3VsdG9uIFN0cmVldAotCQkJCUNhbWJyaWRnZSBNQSAwMjEzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtNTQtQzAgICAoaGV4KQkJVGhvbXBzb24gQWVyb3NwYWNlCi00NDU0QzAgICAgIChiYXNlIDE2KQkJVGhvbXBzb24gQWVyb3NwYWNlCi0JCQkJMTggVGVjaG5vbG9neQotCQkJCVN1aXRlIDEyMQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtNTYtOEQgICAoaGV4KQkJUE5DIFRlY2hub2xvZ2llcyAgQ28uLCBMdGQuCi00NDU2OEQgICAgIChiYXNlIDE2KQkJUE5DIFRlY2hub2xvZ2llcyAgQ28uLCBMdGQuCi0JCQkJIzQwMSBBbnlhbmcgTWVnYXZhbGx5LCA3OTkgS3dhbnlhbmctRG9uZwotCQkJCURvbmdhbi1ndQotCQkJCUFueWFuZyBHeWVvbmdnaS1EbyA0MzEtNzY3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LTU2LUI3ICAgKGhleCkJCVNwYXduIExhYnMsIEluYwotNDQ1NkI3ICAgICAoYmFzZSAxNikJCVNwYXduIExhYnMsIEluYwotCQkJCTIyMDkgR3JhbmdlciBMYW5lCi0JCQkJQXVzdGluIFRYIDc4NjEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC01OC0yOSAgIChoZXgpCQlDaXNjbyBTUFZURwotNDQ1ODI5ICAgICAoYmFzZSAxNikJCUNpc2NvIFNQVlRHCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCU1TIDQuVC40MjEKLQkJCQlMYXdyZW5jZXZpbGxlIEdlb3JnaWEgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTU5LTlGICAgKGhleCkJCUNyaXRpY2FyZSBTeXN0ZW1zLCBJbmMKLTQ0NTk5RiAgICAgKGJhc2UgMTYpCQlDcml0aWNhcmUgU3lzdGVtcywgSW5jCi0JCQkJMjA5MjUgQ3Jvc3Nyb2FkcyBDaXJjbGUKLQkJCQlXYXVrYXNoYSBXSSA1MzE4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtNUUtRjMgICAoaGV4KQkJVG9uYWxpdGUgSG9sZGluZyBCLlYuCi00NDVFRjMgICAgIChiYXNlIDE2KQkJVG9uYWxpdGUgSG9sZGluZyBCLlYuCi0JCQkJTmlldXcgQW1zdGVyZGFtc2VzdHJhYXQgNDAKLQkJCQlFbW1lbiBEcmVudGhlIDc4MTQgVkEKLQkJCQlORVRIRVJMQU5EUwotCi00NC02MS0zMiAgIChoZXgpCQllY29iZWUgaW5jCi00NDYxMzIgICAgIChiYXNlIDE2KQkJZWNvYmVlIGluYwotCQkJCTMzMyBBZGVsYWlkZSBTdCBXIDZ0aCBGbG9vcgotCQkJCVRvcm9udG8gT250YXJpbyBNNVYxUjUKLQkJCQlDQU5BREEKLQotNDQtNjgtQUIgICAoaGV4KQkJSlVJTiBDT01QQU5ZLCBMSU1JVEVECi00NDY4QUIgICAgIChiYXNlIDE2KQkJSlVJTiBDT01QQU5ZLCBMSU1JVEVECi0JCQkJMkZMLCAxMDc1LTEsIFdvbnB5ZW9uZy1Eb25nCi0JCQkJR3VtaSBDaXR5IEd5ZW9uZ3NhbmdidWstRG8gNzMwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00NC02Qy0yNCAgIChoZXgpCQlSZWFsbGluIEVsZWN0cm9uaWMgQ28uLEx0ZAotNDQ2QzI0ICAgICAoYmFzZSAxNikJCVJlYWxsaW4gRWxlY3Ryb25pYyBDby4sTHRkCi0JCQkJMi9GLCBCdWlsZGluZyAzLCBOby4yMDIgWmhlbmd6aG9uZyBSZCwgWGlIdSBpbmR1c3RyeSBQYXJrCi0JCQkJSGFuZyBaaG91IFpoZSBKaWFuZyAzMTAwMzAKLQkJCQlDSElOQQotCi00NC03Qy03RiAgIChoZXgpCQlJbm5vbGlnaHQgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotNDQ3QzdGICAgICAoYmFzZSAxNikJCUlubm9saWdodCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMyBSZXN1bHRzIFdheQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtN0QtQTUgICAoaGV4KQkJVlRJT04gSU5GT1JNQVRJT04gVEVDSE5PTE9HWSAoRlVKSUFOKSBDTy4sTFRECi00NDdEQTUgICAgIChiYXNlIDE2KQkJVlRJT04gSU5GT1JNQVRJT04gVEVDSE5PTE9HWSAoRlVKSUFOKSBDTy4sTFRECi0JCQkJUm9vbSA1MDIsIFdpbmcgQSwgV29ybGQgVHJhZGUgQ2VudGVyCi0JCQkJTm8uMzYgRWFzdCBOb3J0aCBUaGlyZCBSaW5nIFJvYWQsRG9uZ2NoZW5nIERpc3RyaWN0LAotCQkJCSBCZWlqaW5nLCAgIAotCQkJCUNISU5BCi0KLTQ0LTdFLTk1ICAgKGhleCkJCUFscGhhIGFuZCBPbWVnYSwgSW5jCi00NDdFOTUgICAgIChiYXNlIDE2KQkJQWxwaGEgYW5kIE9tZWdhLCBJbmMKLQkJCQk0NzM1IE1vbnR2aWV3IEJsdmQKLQkJCQlEZW52ZXIgQ08gODAyMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTgzLTEyICAgKGhleCkJCVN0YXItTmV0Ci00NDgzMTIgICAgIChiYXNlIDE2KQkJU3Rhci1OZXQKLQkJCQlFZ296IDY0IAotCQkJCUtpcnlhdCBCeWFsaWsgSXNyYWVsIDI3MDAwCi0JCQkJSVNSQUVMCi0KLTQ0LTg1LTAwICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi00NDg1MDAgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTQ0LTg3LUZDICAgKGhleCkJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotNDQ4N0ZDICAgICAoYmFzZSAxNikJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotCQkJCU5PLiAyMzksIFNlYy4gMiwgVGkgRGluZyBCbHZkLgotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ0LThDLTUyICAgKGhleCkJCUtUSVMgQ08uLCBMdGQKLTQ0OEM1MiAgICAgKGJhc2UgMTYpCQlLVElTIENPLiwgTHRkCi0JCQkJMTIwOGhvLTEwM2RvbmcKLQkJCQkzNi0xLCBCdWNoZW9uIFRlY2hub3BhcmszLiBTYW1qdW5nLURvbmcKLQkJCQlPanVuZy1HdSwgQnVjaGVvbi1zaSBHeWVvbmdnaS1kbyA0MjEtODA4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LThFLTgxICAgKGhleCkJCVZJRwotNDQ4RTgxICAgICAoYmFzZSAxNikJCVZJRwotCQkJCTcwNSBIYW5zaGluIElUIFRvd2VyLCA2MC0xOCwgS2FzYW4tZG9uZywgR2V1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIEtTWFgwMDIyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LTkxLURCICAgKGhleCkJCVNoYW5naGFpIEh1YXFpbiBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLEx0ZAotNDQ5MURCICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEh1YXFpbiBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLjEgQnVpbGRpbmcsMzk5IEtleXVhbiBSb2FkLCBaaGFuZ2ppYW4gSGktVGVjaCBQYXJrLCBQdWRvbmcgTmV3IEFyZWEsIAotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi00NC05Qy1CNSAgIChoZXgpCQlBbGNvbXAsIEluYwotNDQ5Q0I1ICAgICAoYmFzZSAxNikJCUFsY29tcCwgSW5jCi0JCQkJMTE1MzcgV2FsbnV0IExhbmUKLQkJCQlGb3J0IEF0a2luc29uIFdJIDUzNTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC1BNC0yRCAgIChoZXgpCQlUQ1QgTW9iaWxlIExpbWl0ZWQKLTQ0QTQyRCAgICAgKGJhc2UgMTYpCQlUQ1QgTW9iaWxlIExpbWl0ZWQKLQkJCQk0L0YsIFNvdXRoIEJ1aWxkaW5nLE5vLjI5NjYsIEppbmtlIFJvYWQsIFpoYW5namlhbmcgSGlnaC1UZWNoIFBhcmssIFB1ZG9uZwotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi00NC1BNi04OSAgIChoZXgpCQlQUk9NQVggRUxFQ1RST05JQ0EgU0EKLTQ0QTY4OSAgICAgKGJhc2UgMTYpCQlQUk9NQVggRUxFQ1RST05JQ0EgU0EKLQkJCQlGUkFOQ0VTQyBNT1JBR0FTIDcxLTc1Ci0JCQkJSE9TUElUQUxFVCBERSBMTE9CUkVHQVQgQkFSQ0VMT05BIDA4OTA3Ci0JCQkJU1BBSU4KLQotNDQtQTctQ0YgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi00NEE3Q0YgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0JCQkJMTAtMSwgSGlnYXNoaWtvdGFyaSAxCi0JCQkJTmFnYW9rYWt5by1zaGkgS3lvdG8gNjE3LTg1NTUKLQkJCQlKQVBBTgotCi00NC1BOC1DMiAgIChoZXgpCQlTRVdPTyBURUNIIENPLiwgTFRECi00NEE4QzIgICAgIChiYXNlIDE2KQkJU0VXT08gVEVDSCBDTy4sIExURAotCQkJCTY4OS0yMCBHRVVNSlVORy1ET05HIAotCQkJCUdVTlBPLVNJIEtZVU5HR0ktRE8gNDM1LTg2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00NC1BQS0yNyAgIChoZXgpCQl1ZHdvcmtzIENvLiwgTHRkLgotNDRBQTI3ICAgICAoYmFzZSAxNikJCXVkd29ya3MgQ28uLCBMdGQuCi0JCQkJIzgxMCwgQnl1a3NhbjNjaGEgRGlnaXRhbCBWYWxsZXksIDIxMi0xMywgR3Vyby1kb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi03NzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDQtQUEtRTggICAoaGV4KQkJTmFub3RlYyBFbGVjdHJvbmljIEdtYkggJiBDby4gS0cKLTQ0QUFFOCAgICAgKGJhc2UgMTYpCQlOYW5vdGVjIEVsZWN0cm9uaWMgR21iSCAmIENvLiBLRwotCQkJCUdld2VyYmVzdHJhc3NlIDExCi0JCQkJTGFuZHNoYW0gQmF2YXJpYSA4NTY1MgotCQkJCUdFUk1BTlkKLQotNDQtQzEtNUMgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTQ0QzE1QyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtQzItMzMgICAoaGV4KQkJR3Vhbmd6aG91IENvbWV0IFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uTHRkCi00NEMyMzMgICAgIChiYXNlIDE2KQkJR3Vhbmd6aG91IENvbWV0IFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uTHRkCi0JCQkJUm0gMzA0LEZMIDMsQmxvY2sgRyxTY2llbmNlIGFuZCAgVGVjaG5vbG9neSBJbm5vdmF0aW9uIEJhc2UsCi0JCQkJTm8uODAsTGFueXVlIFJvYWQsU2NpZW5jZSBQYXJrLAotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYzCi0JCQkJQ0hJTkEKLQotNDQtQzktQTIgICAoaGV4KQkJR3JlZW53YWxkIEluZHVzdHJpZXMKLTQ0QzlBMiAgICAgKGJhc2UgMTYpCQlHcmVlbndhbGQgSW5kdXN0cmllcwotCQkJCTIxMiBNaWRkbGVzZXggQXZlbnVlCi0JCQkJQ2hlc3RlciBDVCAwNjQxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtRDItQ0EgICAoaGV4KQkJQW52aWEgVFYgT3kKLTQ0RDJDQSAgICAgKGJhc2UgMTYpCQlBbnZpYSBUViBPeQotCQkJCVBPIEJveCAyOQotCQkJCVNFSU5BSk9LSSAgRklONjAxMDEKLQkJCQlGSU5MQU5ECi0KLTQ0LUQ2LTNEICAgKGhleCkJCVRhbGFyaSBOZXR3b3JrcwotNDRENjNEICAgICAoYmFzZSAxNikJCVRhbGFyaSBOZXR3b3JrcwotCQkJCTMyMDAgR2xlbiBSb3lhbCBSZC4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlSYWxlaWdoICBOQyAyNzYxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtRDgtMzIgICAoaGV4KQkJQXp1cmV3YXZlIFRlY2hub2xvZ2llcywgSW5jLgotNDREODMyICAgICAoYmFzZSAxNikJCUF6dXJld2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4Ri4sIEJhb3pob25nIFJkLgotCQkJCVhpbmRpYW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDQtREMtQ0IgICAoaGV4KQkJU0VNSU5ESUEgU1lTVEVNUyBQVlQgTFRECi00NERDQ0IgICAgIChiYXNlIDE2KQkJU0VNSU5ESUEgU1lTVEVNUyBQVlQgTFRECi0JCQkJMTAwNi8xMywgU3kgTm8uNDkvMSYzLCA3dGggTWlsZSwgQS5NIEluZGwgRXN0YXRlLAotCQkJCUdhcnZlYmhhdmlwYWx5YSxIb3N1ciBSb2FkLCAKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDA2OAotCQkJCUlORElBCi0KLTQ0LUU0LTlBICAgKGhleCkJCU9NTklUUk9OSUNTIFBUWSBMVEQKLTQ0RTQ5QSAgICAgKGJhc2UgMTYpCQlPTU5JVFJPTklDUyBQVFkgTFRECi0JCQkJMjcgU0FSSUNIIENSVAotCQkJCU9TQk9STkUgUEFSSyBXQSA2MDE3Ci0JCQkJQVVTVFJBTElBCi0KLTQ0LUU0LUQ5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTQ0RTREOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LUVELTU3ICAgKGhleCkJCUxvbmdpY29ybiwgaW5jLgotNDRFRDU3ICAgICAoYmFzZSAxNikJCUxvbmdpY29ybiwgaW5jLgotCQkJCVJtMTAwMS0yLCAxMEYsIEJ5dWtzYW4gRGlnaXRhbCBWYWxsZXkxCi0JCQkJMjEyLTE2LCBHdXJvLTNEb25nLCBHdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi03NzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDQtRjQtNTkgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotNDRGNDU5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDgtMTItNDkgICAoaGV4KQkJTHV4Y29tIFRlY2hub2xvZ2llcyBJbmMuCi00ODEyNDkgICAgIChiYXNlIDE2KQkJTHV4Y29tIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMTAyIFdhbGdyZWVuIFJvYWQKLQkJCQlPdHRhd2EgT250YXJpbyBLMEEgMUwwCi0JCQkJQ0FOQURBCi0KLTQ4LTE3LTRDICAgKGhleCkJCU1pY3JvUG93ZXIgdGVjaG5vbG9naWVzCi00ODE3NEMgICAgIChiYXNlIDE2KQkJTWljcm9Qb3dlciB0ZWNobm9sb2dpZXMKLQkJCQk0MjI1IEV4ZWN1dGl2ZSBTcS4KLQkJCQlTdWl0ZSA0MzAKLQkJCQlMYSBKb2xsYSBDYWxpZm9ybmlhIDkyMDM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00OC0xQi1EMiAgIChoZXgpCQlJbnRyb24gU2NpZW50aWZpYyBjby4sIGx0ZC4KLTQ4MUJEMiAgICAgKGJhc2UgMTYpCQlJbnRyb24gU2NpZW50aWZpYyBjby4sIGx0ZC4KLQkJCQk2Ri4sIE5PLiAxMzYsU2VjIDIsS2VlbHVuZyBSZC4sIERhLWFuIGRpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ4LTJDLUVBICAgKGhleCkJCU1vdG9yb2xhIEluYyBCdXNpbmVzcyBMaWdodCBSYWRpb3MKLTQ4MkNFQSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBJbmMgQnVzaW5lc3MgTGlnaHQgUmFkaW9zCi0JCQkJODAwMCBXIFN1bnJpc2UgQm91bGV2YXJkCi0JCQkJUGxhbnRhdGlvbiBGbG9yaWRhIDMzMzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00OC0zNC0zRCAgIChoZXgpCQlJRVAgR21iSAotNDgzNDNEICAgICAoYmFzZSAxNikJCUlFUCBHbWJICi0JCQkJQW0gUGZlcmRlbWFya3QgOWMKLQkJCQlMYW5nZW5oYWdlbiBOaWVkZXJzYWNoc2VuIDMwODUzCi0JCQkJR0VSTUFOWQotCi00OC00NC04NyAgIChoZXgpCQlDaXNjbyBTUFZURwotNDg0NDg3ICAgICAoYmFzZSAxNikJCUNpc2NvIFNQVlRHCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCU1TIDQuVC42MDcKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00OC01Qi0zOSAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTQ4NUIzOSAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91LCAKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDgtNUQtNjAgICAoaGV4KQkJQXp1cmV3YXZlIFRlY2hub2xvZ2llcywgSW5jLgotNDg1RDYwICAgICAoYmFzZSAxNikJCUF6dXJld2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4RiAuLCBOby45NCwgQmFvemhvbmcgUmQuIAotCQkJCVhpbmRpYW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ4LTYwLUJDICAgKGhleCkJCUFwcGxlIEluYwotNDg2MEJDICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgaW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDgtNkItOTEgICAoaGV4KQkJRmxlZXR3b29kIEdyb3VwIEluYy4KLTQ4NkI5MSAgICAgKGJhc2UgMTYpCQlGbGVldHdvb2QgR3JvdXAgSW5jLgotCQkJCTExODMyIEphbWVzIFN0Ci0JCQkJUE8gQm94IDEyNTkKLQkJCQlIb2xsYW5kIE1pY2hpZ2FuIDQ5NDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00OC02Ri1EMiAgIChoZXgpCQlTdG9yU2ltcGxlIEluYwotNDg2RkQyICAgICAoYmFzZSAxNikJCVN0b3JTaW1wbGUgSW5jCi0JCQkJMjM1MCBNaXNzaW9uIENvbGxlZ2UgQmx2ZAotCQkJCVN1aXRlICM0NzAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDgtNzEtMTkgICAoaGV4KQkJU0dCIEdST1VQIExURC4KLTQ4NzExOSAgICAgKGJhc2UgMTYpCQlTR0IgR1JPVVAgTFRELgotCQkJCTEzRixOby4xOTIsU2VjLjIsQ2h1bmcgSHNpbiBSZC4sSHNpbiBUaWVuIENpdHkKLQkJCQlUYWlwZWkgICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ4LThFLTQyICAgKGhleCkJCURJR0FMT0cgR21iSAotNDg4RTQyICAgICAoYmFzZSAxNikJCURJR0FMT0cgR21iSAotCQkJCVdhdHRzdHIuIDExLTEzCi0JCQkJQmVybGluICBELTEzMzU1Ci0JCQkJR0VSTUFOWQotCi00OC05MS1GNiAgIChoZXgpCQlTaGVuemhlbiBSZWFjaCBzb2Z0d2FyZSB0ZWNobm9sb2d5IENPLixMVEQKLTQ4OTFGNiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBSZWFjaCBzb2Z0d2FyZSB0ZWNobm9sb2d5IENPLixMVEQKLQkJCQk2L0YsQmxvY2sgQiwgS2luZ2RlZSBTb2Z0d2FyZSBwYXJrLCMyLEtlamkgMTJ0aCBTb3V0aCBSb2FkLEhpLXRlY2ggSW5kdXN0cmlhbCBQYXJrLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotNDgtQUEtNUQgICAoaGV4KQkJU3RvcmUgRWxlY3Ryb25pYyBTeXN0ZW1zCi00OEFBNUQgICAgIChiYXNlIDE2KQkJU3RvcmUgRWxlY3Ryb25pYyBTeXN0ZW1zCi0JCQkJMzkgcnVlIGRlIG1vbnRpZ255Ci0JCQkJQXJnZW50ZXVpbCAgOTUxMDAKLQkJCQlGUkFOQ0UKLQotNDgtQzgtNjIgICAoaGV4KQkJU2ltbyBXaXJlbGVzcyxJbmMuCi00OEM4NjIgICAgIChiYXNlIDE2KQkJU2ltbyBXaXJlbGVzcyxJbmMuCi0JCQkJMzI2IyxCdWlsZGluZyA0LFpob25neGluZyBJbmR1c3RyaWFsIFBhcmssQ2h1YW5neWUKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU0Ci0JCQkJQ0hJTkEKLQotNDgtQzgtQjYgICAoaGV4KQkJU3lzVGVjIEdtYkgKLTQ4QzhCNiAgICAgKGJhc2UgMTYpCQlTeXNUZWMgR21iSAotCQkJCUx1ZHdpZy1FcmhhcmQtU3RyYXNzZSA2Ci0JCQkJQmVyZ2hlaW0tR2xlc3NlbiBOUlcgNTAxMjkKLQkJCQlHRVJNQU5ZCi0KLTQ4LUNCLTZFICAgKGhleCkJCUNlbGxvIEVsZWN0cm9uaWNzIChVSykgTHRkCi00OENCNkUgICAgIChiYXNlIDE2KQkJQ2VsbG8gRWxlY3Ryb25pY3MgKFVLKSBMdGQKLQkJCQlDbGlmZiBMb2RnZQotCQkJCUhhcm1ieSBSb2FkCi0JCQkJTGV5YnVybiBOb3J0aCBZb3Jrc2hpcmUgREw4IDVOUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTQ4LUQ4LUZFICAgKGhleCkJCUNsYXJJRHkgU29sdXRpb25zLCBJbmMuCi00OEQ4RkUgICAgIChiYXNlIDE2KQkJQ2xhcklEeSBTb2x1dGlvbnMsIEluYy4KLQkJCQk3RiwgTm8uOSwgUGFya0F2ZW51ZSBJSSBSZC4sIEhzaW5jaHUgU2NpZW5jZSBQYXJrLCAKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ4LURDLUZCICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi00OERDRkIgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSAgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLTQ4LURGLTFDICAgKGhleCkJCVd1aGFuIE5FQyBGaWJyZSBPcHRpYyBDb21tdW5pY2F0aW9ucyBpbmR1c3RyeSBDby4gTHRkCi00OERGMUMgICAgIChiYXNlIDE2KQkJV3VoYW4gTkVDIEZpYnJlIE9wdGljIENvbW11bmljYXRpb25zIGluZHVzdHJ5IENvLiBMdGQKLQkJCQkzcmQgUm9hZCBHdWFuc2hhbiwKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi00OC1FQi0zMCAgIChoZXgpCQkgRVRFUk5BIFRFQ0hOT0xPR1ksIElOQy4KLTQ4RUIzMCAgICAgKGJhc2UgMTYpCQkgRVRFUk5BIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkzOTM5IHZlc2VsaWNoIGF2ZQotCQkJCTMxNwotCQkJCWxvcyBhbmdlbGVzIGNhbGlmb3JuaWEgOTAwMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ4LUY0LTdEICAgKGhleCkJCVRlY2hWaXNpb24gSG9sZGluZyAgSW50ZXJuYXRpb24gTGltaXRlZAotNDhGNDdEICAgICAoYmFzZSAxNikJCVRlY2hWaXNpb24gSG9sZGluZyAgSW50ZXJuYXRpb24gTGltaXRlZAotCQkJCU9mZnNob3JlIEluY29ycG9yYXRpb25zIENlbnRyZQotCQkJCVAuTy4gQm94IDk1NwotCQkJCVJvYWQgVG93biBUb3J0b2xhIFZHMTExMAotCQkJCVZJUkdJTiBJU0xBTkRTLCBCUklUSVNICi0KLTQ4LUY4LUUxICAgKGhleCkJCUFsY2F0ZWwgTHVjZW50IFdUCi00OEY4RTEgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQgV1QKLQkJCQk2MDAgTWFyY2ggRHJpdmUKLQkJCQlPdHRhd2EgT250YXJpbyBrMmsgMmU2Ci0JCQkJQ0FOQURBCi0KLTQ4LUZDLUI4ICAgKGhleCkJCVdvb2RzdHJlYW0gQ29ycG9yYXRpb24KLTQ4RkNCOCAgICAgKGJhc2UgMTYpCQlXb29kc3RyZWFtIENvcnBvcmF0aW9uCi0JCQkJNjkgTi4gTG9jdXN0IFN0cmVldAotCQkJCUxpdGl0eiBQQSAxNzU0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNEMtMDItMkUgICAoaGV4KQkJQ01SIEtPUkVBIENPLiwgTFRECi00QzAyMkUgICAgIChiYXNlIDE2KQkJQ01SIEtPUkVBIENPLiwgTFRECi0JCQkJNkYsIEotVG93ZXIsIDI0LTUgQmFuZ2ktZG9uZywgU29uZ3BhLUd1Ci0JCQkJU2VvdWwgIDEzOC0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNEMtMDctQzkgICAoaGV4KQkJQ09NUFVURVIgT0ZGSUNFIENvLixMdGQuCi00QzA3QzkgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgT0ZGSUNFIENvLixMdGQuCi0JCQkJMTM2OC0xMCBNdXJhbWF0c3UtY2hvCi0JCQkJSXNlLXNoaSBNaWUta2VuIDUxNS0wNTA3Ci0JCQkJSkFQQU4KLQotNEMtMEYtNkUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLTRDMEY2RSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotNEMtMTQtODAgICAoaGV4KQkJTk9SRUdPTiBTWVNURU1TLCBJTkMKLTRDMTQ4MCAgICAgKGJhc2UgMTYpCQlOT1JFR09OIFNZU1RFTVMsIElOQwotCQkJCTEwMCBOLiBNQUlOIFNULiAgU1VJVEUgMjIwMAotCQkJCVdJTlNUT04gLSBTQUxFTSBOQyAyNzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNEMtMUEtM0EgICAoaGV4KQkJUFJJTUEgUmVzZWFyY2ggQW5kIFByb2R1Y3Rpb24gRW50ZXJwcmlzZSBMdGQuCi00QzFBM0EgICAgIChiYXNlIDE2KQkJUFJJTUEgUmVzZWFyY2ggQW5kIFByb2R1Y3Rpb24gRW50ZXJwcmlzZSBMdGQuCi0JCQkJNjMsIFN2b2JvZHkgc3QuCi0JCQkJTml6aG55IE5vdmdvcm9kICA2MDMwMDMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotNEMtMUYtQ0MgICAoaGV4KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi00QzFGQ0MgICAgIChiYXNlIDE2KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0JCQkJQjEtNyxIdWF3ZWkgSW5kdXN0cmlhbCBCYXNlLEJhbnRpYW4sTG9uZ2dhbmcKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotNEMtMkMtODAgICAoaGV4KQkJQmVpamluZyBTa3l3YXkgVGVjaG5vbG9naWVzIENvLixMdGQgCi00QzJDODAgICAgIChiYXNlIDE2KQkJQmVpamluZyBTa3l3YXkgVGVjaG5vbG9naWVzIENvLixMdGQgCi0JCQkJTm8uNSBKaWFuZ3RhaSBSb2FkLCAKLQkJCQlDaGFveWFuZyBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDAxNQotCQkJCUNISU5BCi0KLTRDLTMwLTg5ICAgKGhleCkJCVRoYWxlcyBUcmFuc3BvcnRhdGlvbiBTeXN0ZW1zIEdtYkgKLTRDMzA4OSAgICAgKGJhc2UgMTYpCQlUaGFsZXMgVHJhbnNwb3J0YXRpb24gU3lzdGVtcyBHbWJICi0JCQkJQmllcndlZyAyCi0JCQkJQXJuc3RhZHQgVGh1cmluZ2lhIDk5MzEwCi0JCQkJR0VSTUFOWQotCi00Qy0zMi0yRCAgIChoZXgpCQlURUxFREFUQSBORVRXT1JLUwotNEMzMjJEICAgICAoYmFzZSAxNikJCVRFTEVEQVRBIE5FVFdPUktTCi0JCQkJMTAgSGFzYWRuYW90IFN0cmVldAotCQkJCUhFUlpMSVlBICA0NjEyMAotCQkJCUlTUkFFTAotCi00Qy0zQi03NCAgIChoZXgpCQlWT0dURUMoSC5LLikgQ28uLCBMdGQKLTRDM0I3NCAgICAgKGJhc2UgMTYpCQlWT0dURUMoSC5LLikgQ28uLCBMdGQKLQkJCQlVbml0IEQgMTEvRiBTZWFicmlnaHQgUGxhemEgOS0yMyBTaGVsbCBTVAotCQkJCU5vcnRoIFBvaW50IAotCQkJCUhvbmcgS29uZyAgOTk5MDc3Ci0JCQkJQ0hJTkEKLQotNEMtNEItNjggICAoaGV4KQkJTW9iaWxlIERldmljZSwgSW5jLiAKLTRDNEI2OCAgICAgKGJhc2UgMTYpCQlNb2JpbGUgRGV2aWNlLCBJbmMuIAotCQkJCSA4Ri0xLCBOby4gMTQ1LCBTaWFuamhlbmcgOXRoIFJkLiwgCi0JCQkJSmh1YmVpIENpdHksICBIc2luY2h1IENvdW50eSAgMzAyNTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTRDLTU0LTk5ICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTRDNTQ5OSAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTEwMTA4Ci0JCQkJQ0hJTkEKLQotNEMtNUQtQ0QgICAoaGV4KQkJT3kgRmlubmlzaCBFbGVjdHJpYyBWZWhpY2xlIFRlY2hub2xvZ2llcyBMdGQKLTRDNURDRCAgICAgKGJhc2UgMTYpCQlPeSBGaW5uaXNoIEVsZWN0cmljIFZlaGljbGUgVGVjaG5vbG9naWVzIEx0ZAotCQkJCU1hamF2YW50aWUgMTAKLQkJCQlUVVVTVUxBICBGSS0wNDMyMAotCQkJCUZJTkxBTkQKLQotNEMtNjAtRDUgICAoaGV4KQkJYWlyUG9pbnRlIG9mIE5ldyBIYW1wc2hpcmUKLTRDNjBENSAgICAgKGJhc2UgMTYpCQlhaXJQb2ludGUgb2YgTmV3IEhhbXBzaGlyZQotCQkJCTM1RSBJbmR1c3RyaWFsIFdheQotCQkJCVJvY2hlc3RlciBOSCAwMzg2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotNEMtNjMtRUIgICAoaGV4KQkJQXBwbGljYXRpb24gU29sdXRpb25zIChFbGVjdHJvbmljcyBhbmQgVmlzaW9uKSBMdGQKLTRDNjNFQiAgICAgKGJhc2UgMTYpCQlBcHBsaWNhdGlvbiBTb2x1dGlvbnMgKEVsZWN0cm9uaWNzIGFuZCBWaXNpb24pIEx0ZAotCQkJCVRoZSBSaXZlcnNpZGUgQ2VudHJlCi0JCQkJUmFpbHdheSBMYW5lCi0JCQkJTGV3ZXMgRWFzdCBTdXNzZXggQk43IDJBUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTRDLTczLTY3ICAgKGhleCkJCUdlbml1cyBCeXRlcyBTb2Z0d2FyZSBTb2x1dGlvbnMgR21iSAotNEM3MzY3ICAgICAoYmFzZSAxNikJCUdlbml1cyBCeXRlcyBTb2Z0d2FyZSBTb2x1dGlvbnMgR21iSAotCQkJCU1lcmlhbnN0ci4gMzAKLQkJCQlCb2NodW0gTlJXIDQ0ODAxCi0JCQkJR0VSTUFOWQotCi00Qy03My1BNSAgIChoZXgpCQlLT1ZFCi00QzczQTUgICAgIChiYXNlIDE2KQkJS09WRQotCQkJCTE0IE4uIFBlb3JpYSBTdHJlZXQKLQkJCQlTdWl0ZSAySAotCQkJCUNoaWNhZ28gSUwgNjA2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTRDLTc3LTRGICAgKGhleCkJCUVtYmVkZGVkIFdpcmVsZXNzIExhYnMgCi00Qzc3NEYgICAgIChiYXNlIDE2KQkJRW1iZWRkZWQgV2lyZWxlc3MgTGFicyAKLQkJCQk3MDIgTGV2ZWwgNyBVcHRvd24gMiBOby4yIAotCQkJCUphbGFuIFNTMjEvMzcgRGFtYW5zYXJhIFVwdG93bgotCQkJCVBldGFsaW5nIEpheWEgU2VsYW5nb3IgNDc0MDAKLQkJCQlNQUxBWVNJQQotCi00Qy04MC05MyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTRDODA5MyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTRDLThCLTU1ICAgKGhleCkJCUdydXBvIERpZ2ljb24KLTRDOEI1NSAgICAgKGJhc2UgMTYpCQlHcnVwbyBEaWdpY29uCi0JCQkJUnVhIE5pc3NpbiBDYXN0aWVsLCA2NDAKLQkJCQlHcmF2YXRh77+9IFJpbyBHcmFuZGUgZG8gU3VsIDk0MDQ1NDIwCi0JCQkJQlJBWklMCi0KLTRDLTk4LUVGICAgKGhleCkJCVplbwotNEM5OEVGICAgICAoYmFzZSAxNikJCVplbwotCQkJCTMyMCBOZXZhZGEgU3QKLQkJCQk0dGggRmxvb3IKLQkJCQlOZXd0b24gIE1BIDAyNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00Qy05RS1FNCAgIChoZXgpCQlIYW55YW5nIE5hdmljb20gQ28uLEx0ZC4KLTRDOUVFNCAgICAgKGJhc2UgMTYpCQlIYW55YW5nIE5hdmljb20gQ28uLEx0ZC4KLQkJCQk3MTMsIEd3YW5weWVvbmctZG9uZywgWXVzdW5nLWd1Ci0JCQkJRGFlamVvbiAgMzA1LTUwOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00Qy1CNC1FQSAgIChoZXgpCQlIUkQgKFMpIFBURS4sIExURC4KLTRDQjRFQSAgICAgKGJhc2UgMTYpCQlIUkQgKFMpIFBURS4sIExURC4KLQkJCQlMb3QgNywgQmxvY2sgOSwgUGhhc2UgMSwgQ2F2aXRlIEVjby1ab25lLAotCQkJCVJvc2FyaW8gQ2F2aXRlIDQxMDYKLQkJCQlQSElMSVBQSU5FUwotCi00Qy1COS1DOCAgIChoZXgpCQlDT05FVCBDTy4sIExURC4KLTRDQjlDOCAgICAgKGJhc2UgMTYpCQlDT05FVCBDTy4sIExURC4KLQkJCQkyLTgsSElHQVNISUpJTUEtQ0hPCi0JCQkJSUNISU5PTUlZQSBBSUNISSA0OTEtMDA3NAotCQkJCUpBUEFOCi0KLTRDLUJBLUEzICAgKGhleCkJCUJpc29uIEVsZWN0cm9uaWNzIEluYy4KLTRDQkFBMyAgICAgKGJhc2UgMTYpCQlCaXNvbiBFbGVjdHJvbmljcyBJbmMuCi0JCQkJM0YuLCBOby4yOCwgTGFuZSA1ODMsIFJ1ZWlndWFuZyBSZC4sIE5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpIENpdHkgIDExNDkyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi00Qy1DNC01MiAgIChoZXgpCQlTaGFuZyBIYWkgVHlkLiBFbGVjdG9uIFRlY2hub2xvZ3kgTHRkLgotNENDNDUyICAgICAoYmFzZSAxNikJCVNoYW5nIEhhaSBUeWQuIEVsZWN0b24gVGVjaG5vbG9neSBMdGQuCi0JCQkJUm9vbSBOby41LE4wLjM5NixHdWlMaW4gUm9hZCwgCi0JCQkJWHUgSHVpIERpc3RyaWN0Ci0JCQkJU2hhbmcgSGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi00Qy1DNi0wMiAgIChoZXgpCQlSYWRpb3MsIEluYy4KLTRDQzYwMiAgICAgKGJhc2UgMTYpCQlSYWRpb3MsIEluYy4KLQkJCQkxNDA4IENlbnRlciBBdmVudWUKLQkJCQlPb3N0YnVyZyBXaXNjb25zaW4gNTMwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTRDLUU2LTc2ICAgKGhleCkJCUJVRkZBTE8gSU5DLgotNENFNjc2ICAgICAoYmFzZSAxNikJCUJVRkZBTE8gSU5DLgotCQkJCTE1LCBTaGliYXRhIEhvbmRvcmkgNC1jaG9tZQotCQkJCU1pbmFtaS1rdSwgTmFnb3lhIEFpY2hpIDQ1Ny04NTIwCi0JCQkJSkFQQU4KLQotNEMtRUQtREUgICAoaGV4KQkJQXNrZXkgQ29tcHV0ZXIgQ29ycAotNENFRERFICAgICAoYmFzZSAxNikJCUFza2V5IENvbXB1dGVyIENvcnAKLQkJCQkxMGYsbm8uMTE5LGNoaWVua2FuZyByZCxjaHVuZy1obywKLQkJCQlUQUlQRUkgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTRDLUY3LTM3ICAgKGhleCkJCVNhbUppIEVsZWN0cm9uaWNzIENvLiwgTHRkCi00Q0Y3MzcgICAgIChiYXNlIDE2KQkJU2FtSmkgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLQkJCQk0NTktMjEsIEdhc2FuLWRvbmcsIEd1bWNodW4ta3UKLQkJCQlTZW91bCAgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi01MC0wRS02RCAgIChoZXgpCQlUcmFmZmljQ2FzdCBJbnRlcm5hdGlvbmFsCi01MDBFNkQgICAgIChiYXNlIDE2KQkJVHJhZmZpY0Nhc3QgSW50ZXJuYXRpb25hbAotCQkJCTI4MDEgQ29obyBTdHJlZXQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlNYWRpc29uIFdJIDUzNzEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC0yNS0yQiAgIChoZXgpCQlOZXRocmEgSW1hZ2luZyBJbmNvcnBvcmF0ZWQKLTUwMjUyQiAgICAgKGJhc2UgMTYpCQlOZXRocmEgSW1hZ2luZyBJbmNvcnBvcmF0ZWQKLQkJCQkyODU1IEJvd2VycyBBdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotNTAtMkEtN0UgICAoaGV4KQkJU21hcnQgZWxlY3Ryb25pYyBHbWJICi01MDJBN0UgICAgIChiYXNlIDE2KQkJU21hcnQgZWxlY3Ryb25pYyBHbWJICi0JCQkJSW5kdXN0cmllIFN0ci4gMjkKLQkJCQlTdC4gR2VvcmdlbiAgNzgxMTIKLQkJCQlHRVJNQU5ZCi0KLTUwLTJBLThCICAgKGhleCkJCVRlbGVrb20gUmVzZWFyY2ggYW5kIERldmVsb3BtZW50IFNkbiBCaGQKLTUwMkE4QiAgICAgKGJhc2UgMTYpCQlUZWxla29tIFJlc2VhcmNoIGFuZCBEZXZlbG9wbWVudCBTZG4gQmhkCi0JCQkJVE1STkQgSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQlMaW5na2FyYW4gVGVrbm9rcmF0IFRpbXVyCi0JCQkJQ3liZXJqYXlhIFNlbGFuZ29yIDYzMDAwCi0JCQkJTUFMQVlTSUEKLQotNTAtMkQtQTIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi01MDJEQTIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi01MC0yRC1GNCAgIChoZXgpCQlQaHl0ZWMgTWVzc3RlY2huaWsgR21iSAotNTAyREY0ICAgICAoYmFzZSAxNikJCVBoeXRlYyBNZXNzdGVjaG5payBHbWJICi0JCQkJUm9iZXJ0LUtvY2gtU3RyYd9lIDM5IAotCQkJCU1haW56IFJoZWlubGFuZC1QZmFseiA1NTEyOQotCQkJCUdFUk1BTlkKLQotNTAtM0QtRTUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNTAzREU1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTAtNjMtMTMgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLTUwNjMxMyAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMKLQkJCQlDSElOQQotCi01MC02Ny1GMCAgIChoZXgpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotNTA2N0YwICAgICAoYmFzZSAxNikJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJTm8uNiBJbm5vdmF0aW9uIFJvYWQgSUksCi0JCQkJU2NpZW5jZSBQYXJrLAotCQkJCUhzaW4tQ2h1LCAgIDIyMDk5NTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi01MC02Ri05QSAgIChoZXgpCQlXaS1GaSBBbGxpYW5jZQotNTA2RjlBICAgICAoYmFzZSAxNikJCVdpLUZpIEFsbGlhbmNlCi0JCQkJMzkyNSBXLiBCcmFrZXIgTGFuZQotCQkJCUF1c3RpbiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotNTAtNzAtRTUgICAoaGV4KQkJSGUgU2hhbiBXb3JsZCBGYWlyIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgTGltaXRlZAotNTA3MEU1ICAgICAoYmFzZSAxNikJCUhlIFNoYW4gV29ybGQgRmFpciBFbGVjdHJvbmljcyBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlOZXcgTWF0ZXJpYWwgQmFzZSwgR29uZ2hlIFRvd24KLQkJCQlIZXNoYW4gQ2l0eQotCQkJCUppYW5nbWVuIEd1YW5nZG9uZyA1Mjk3MjgKLQkJCQlDSElOQQotCi01MC03OS01QiAgIChoZXgpCQlJbnRlcmV4cG9ydCBUZWxlY29tdW5pY2FjaW9uZXMgUy5BLgotNTA3OTVCICAgICAoYmFzZSAxNikJCUludGVyZXhwb3J0IFRlbGVjb211bmljYWNpb25lcyBTLkEuCi0JCQkJQ2Vycm8gQ29sb3JhZG8gNTI0MCBwaXNvIDE0Ci0JCQkJU2FudGlhZ28gUmVnaW9uIE1ldHJvcG9saXRhbmEgODMyMDAwMAotCQkJCUNISUxFCi0KLTUwLTdELTAyICAgKGhleCkJCUJJT0RJVAotNTA3RDAyICAgICAoYmFzZSAxNikJCUJJT0RJVAotCQkJCUNhbGxlIEd1c3RhdmUgRWlmZmVsIDMKLQkJCQlQYXJxdWUgVGVjbm9sb2dpY28KLQkJCQlQYXRlcm5hIFZhbGVuY2lhIDQ2OTgwCi0JCQkJU1BBSU4KLQotNTAtODctQjggICAoaGV4KQkJTnV2eXlvIEluYwotNTA4N0I4ICAgICAoYmFzZSAxNikJCU51dnl5byBJbmMKLQkJCQkxIFNteXRoZSBSZAotCQkJCVN1aXRlIDEKLQkJCQlDYXJsZXRvbiBQbGFjZSBPbnRhcmlvIEs3QzRKNAotCQkJCUNBTkFEQQotCi01MC04QS1DQiAgIChoZXgpCQlTSEVOWkhFTiBNQVhNQURFIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi01MDhBQ0IgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gTUFYTUFERSBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCUJ1aWxkaW5nIDMsTm8uNSBGdXFpYW8gSW5kdXN0cmlhbCBFc3RhdGUsCi0JCQkJUWlhb3RvdSxGdXlvbmcsQmFvYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAzCi0JCQkJQ0hJTkEKLQotNTAtOTMtNEYgICAoaGV4KQkJR3JhZHVhbCBUZWNub2xvZ2lhIEx0ZGEuCi01MDkzNEYgICAgIChiYXNlIDE2KQkJR3JhZHVhbCBUZWNub2xvZ2lhIEx0ZGEuCi0JCQkJUm9kLiBBbGtpbmRhciBNLiBKdW5xdWVpcmEsIEttIDM0LDIKLQkJCQlDYWl4YSBQb3N0YWwgMTA4Ci0JCQkJQnJhZ2Fu77+9YSBQYXVsaXN0YSBT77+9byBQYXVsbyAxMjkxNC05NzAKLQkJCQlCUkFaSUwKLQotNTAtOTctNzIgICAoaGV4KQkJV2VzdGluZ2hvdXNlIERpZ2l0YWwKLTUwOTc3MiAgICAgKGJhc2UgMTYpCQlXZXN0aW5naG91c2UgRGlnaXRhbAotCQkJCTUwMCBOLiBTdGF0ZSBDb2xsZWdlIEJsdmQuCi0JCQkJU3VpdGUgMTMwMAotCQkJCU9yYW5nZSBDQSA5Mjg2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTAtQTYtRTMgICAoaGV4KQkJRGF2aWQgQ2xhcmsgQ29tcGFueQotNTBBNkUzICAgICAoYmFzZSAxNikJCURhdmlkIENsYXJrIENvbXBhbnkKLQkJCQkzNjAgRnJhbmtsaW4gU3QuCi0JCQkJV29yY2VzdGVyIE1BIDAxNjE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC1BRi03MyAgIChoZXgpCQlTaGVuemhlbiBCaXRsYW5kIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi01MEFGNzMgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQml0bGFuZCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTEtNEYsNDQgQnVpbGRpbmcsVGFuZ2xhbmcgSW5kdXN0cmlhbCBQYXJrIGFuZCAxLTZGLCM3IEJ1aWxkaW5nLFhpTGkgVG9uZ2Z1eXUgSW5kdXN0cmlhbCBUb3duLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU1Ci0JCQkJQ0hJTkEKLQotNTAtQzUtOEQgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotNTBDNThEICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTAtQzktNzEgICAoaGV4KQkJR04gTmV0Y29tIEEvUwotNTBDOTcxICAgICAoYmFzZSAxNikJCUdOIE5ldGNvbSBBL1MKLQkJCQlMYXV0cnVwYmplcmcgNwotCQkJCVAuTy4gQm94IDk5Ci0JCQkJQmFsbGVydXAgIERLLTI3NTAKLQkJCQlERU5NQVJLCi0KLTUwLUNFLTc1ICAgKGhleCkJCU1lYXN5IEVsZWN0cm9uaWNzIEx0ZAotNTBDRTc1ICAgICAoYmFzZSAxNikJCU1lYXN5IEVsZWN0cm9uaWNzIEx0ZAotCQkJCSMxNTA2LCBCbG9jayBCLCBIYWkgU29uZyBCbGRnLCBUYWlyYW4gOXRoIFJvYWQKLQkJCQlDaGUgR29uZyBNaWFvLCBGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZyBEb25nICA1MTgwNDAKLQkJCQlDSElOQQotCi01MC1ENi1ENyAgIChoZXgpCQlUYWthaGF0YSBQcmVjaXNpb24KLTUwRDZENyAgICAgKGJhc2UgMTYpCQlUYWthaGF0YSBQcmVjaXNpb24KLQkJCQk0LTE3LTEgU3VuaXlvc2hpCi0JCQkJS29mdSBTaGkgWWFtYW5hc2hpIDQwMC0wODUxCi0JCQkJSkFQQU4KLQotNTAtRTUtNDkgICAoaGV4KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLTUwRTU0OSAgICAgKGJhc2UgMTYpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCU5vLjIxNSxOYW4tUGluZyBSb2FkLAotCQkJCVBpbi1KZW4gQ2l0eSwgIFRhb3l1YW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi01MC1FQi0xQSAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotNTBFQjFBICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTUwLUYwLTAzICAgKGhleCkJCU9wZW4gU3RhY2ssIEluYy4KLTUwRjAwMyAgICAgKGJhc2UgMTYpCQlPcGVuIFN0YWNrLCBJbmMuCi0JCQkJQWR2YW5jZWQgUmVzZWFyY2ggQ2VudGVyICM0MTEKLQkJCQlZYS1UYXAgNjgKLQkJCQlCdW4tRGFuZywgU2VvbmctTmFtIEd5dW5nLUdpIDQ2My04MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNTAtRkEtQUIgICAoaGV4KQkJTC10ZWsgZC5vLm8uCi01MEZBQUIgICAgIChiYXNlIDE2KQkJTC10ZWsgZC5vLm8uCi0JCQkJT2JydG5hIGNlc3RhIDE4Ci0JCQkJU2VudGplcm5laiAgODMxMAotCQkJCVNMT1ZFTklBCi0KLTU0LTAzLUY1ICAgKGhleCkJCUVCTiBUZWNobm9sb2d5IENvcnAuCi01NDAzRjUgICAgIChiYXNlIDE2KQkJRUJOIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkxMEYsIE5vLjkwLCBTZWMuIDEsIFNpbnRhaSA1dGggUmQuCi0JCQkJU2lqaGloIENpdHkgVGFpcGVpIENvdW50eSAyMjEwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNTQtMDQtOTYgICAoaGV4KQkJR2lnYXdhdmUgTFRECi01NDA0OTYgICAgIChiYXNlIDE2KQkJR2lnYXdhdmUgTFRECi0JCQkJR0lHQVdBVkUgVEVDSE5JQ0FMIENFTlRSRQotCQkJCUVhcmxzIENvbG5lIEJ1c2luZXNzIFBhcmsKLQkJCQlDb2xjaGVzdGVyIEVTU0VYIENPNjJOUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTU0LTA1LTVGICAgKGhleCkJCUFsY2F0ZWwgTHVjZW50Ci01NDA1NUYgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQKLQkJCQlWaWEgVHJlbnRvLCAzMAotCQkJCVZpbWVyY2F0ZSBNQiAyMDA1OQotCQkJCUlUQUxZCi0KLTU0LTMxLTMxICAgKGhleCkJCVJhc3RlciBWaXNpb24gTHRkCi01NDMxMzEgICAgIChiYXNlIDE2KQkJUmFzdGVyIFZpc2lvbiBMdGQKLQkJCQlVbml0IDEsIENydW5kYWxscwotCQkJCUdlZGdlcyBIaWxsLCBNYXRmaWVsZAotCQkJCVRvbmJyaWRnZSAgS2VudCBUTjEyIDdFQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTU0LTM1LURGICAgKGhleCkJCVN5bWVvIEdtYkgKLTU0MzVERiAgICAgKGJhc2UgMTYpCQlTeW1lbyBHbWJICi0JCQkJUHJvZi4tTWVzc2Vyc2NobWl0dC1TdHIuIDMKLQkJCQlOZXViaWJlcmcgQmF2YXJpYSA4NTU3OQotCQkJCUdFUk1BTlkKLQotNTQtNDItNDkgICAoaGV4KQkJU29ueSBDb3Jwb3JhdGlvbgotNTQ0MjQ5ICAgICAoYmFzZSAxNikJCVNvbnkgQ29ycG9yYXRpb24KLQkJCQlHb3RlbnlhbWEgVGVjLgotCQkJCTUtMS0xMiBLaXRhc2hpbmFnYXdhIFNoaW5hZ2F3YS1rdQotCQkJCVRva3lvICAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTU0LTRBLTA1ICAgKGhleCkJCXdlbmdsb3Igc2Vuc29yaWMgZ21iaAotNTQ0QTA1ICAgICAoYmFzZSAxNikJCXdlbmdsb3Igc2Vuc29yaWMgZ21iaAotCQkJCXdlbmdsb3IgU3RyLiAzCi0JCQkJVGV0dG5hbmcgIDg4MDY5Ci0JCQkJR0VSTUFOWQotCi01NC01Ri1BOSAgIChoZXgpCQlUZXJhY29tIExpbWl0ZWQKLTU0NUZBOSAgICAgKGJhc2UgMTYpCQlUZXJhY29tIExpbWl0ZWQKLQkJCQlCLTg0LCBTZWN0b3IgLSA2MCwKLQkJCQlOb2lkYSBVdHRhciBQcmFkZXNoIDIwMSAzMDEKLQkJCQlJTkRJQQotCi01NC03NS1EMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi01NDc1RDAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01NC03Ri01NCAgIChoZXgpCQlJTkdFTklDTwotNTQ3RjU0ICAgICAoYmFzZSAxNikJCUlOR0VOSUNPCi0JCQkJMSBydWUgQ2xhdWRlIENoYXBwZSwgQlAgMzQ2Ci0JCQkJR3VpbGhlcmFuZC1HcmFuZ2VzIERST01FIDA3NTAzCi0JCQkJRlJBTkNFCi0KLTU0LTdGLUVFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTU0N0ZFRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU0LTg0LTdCICAgKGhleCkJCURpZ2l0YWwgRGV2aWNlcyBHbWJICi01NDg0N0IgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBEZXZpY2VzIEdtYkgKLQkJCQlNb2V3ZXN0ciA0NSBBCi0JCQkJTXVlbmNoZW4gIDgxODI3Ci0JCQkJR0VSTUFOWQotCi01NC04OS0yMiAgIChoZXgpCQlaZWxmeSBJbmMKLTU0ODkyMiAgICAgKGJhc2UgMTYpCQlaZWxmeSBJbmMKLQkJCQk0NjU1IE9sZCBJcm9uc2lkZXMgRHIsIFN1aXRlIzIwMAotCQkJCVNhbnRhIENsYXJhIENhIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01NC04OS05OCAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLTU0ODk5OCAgICAgKGJhc2UgMTYpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLQkJCQlCMS03LEh1YXdlaSBJbmR1c3RyaWFsIEJhc2UsQmFudGlhbixMb25nZ2FuZwotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi01NC05Mi1CRSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTU0OTJCRSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNTQtOUEtMTYgICAoaGV4KQkJVXp1c2hpbyBFbGVjdHJpYyBDby4sTHRkLgotNTQ5QTE2ICAgICAoYmFzZSAxNikJCVV6dXNoaW8gRWxlY3RyaWMgQ28uLEx0ZC4KLQkJCQkxNTIwIEt1bwotCQkJCU9uaXNoaS1jaG8KLQkJCQlJbWFiYXJpLWNpdHkgRWhpbWUgcHJlZi4gNzk5MjI5NAotCQkJCUpBUEFOCi0KLTU0LTlCLTEyICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTU0OUIxMiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTU0LUE1LTFCICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTU0QTUxQiAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotNTQtQjYtMjAgICAoaGV4KQkJU1VIRE9MIEUmQyBDby5MdGQuCi01NEI2MjAgICAgIChiYXNlIDE2KQkJU1VIRE9MIEUmQyBDby5MdGQuCi0JCQkJOTIwLCBJbHNhbiBUZWNobm9Ub3duIDExNDEtMSwgQmFla3Nlb2stZG9uZywgSWxzYW5kb25nLWd1Ci0JCQkJR295YW5nLXNpIEd5dW5nZ2ktZG8gNDEwLTcyMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi01NC1ENC02RiAgIChoZXgpCQlDaXNjbyBTUFZURwotNTRENDZGICAgICAoYmFzZSAxNikJCUNpc2NvIFNQVlRHCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU0LUU2LUZDICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotNTRFNkZDICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCTEtNkYsIEJ1aWxkaW5nIDIsIFBpbmdzaGFuZGF5dWFuIEluZHVzdHJpYWwsIFNvdXRoIFpvbmUsCi0JCQkJVGFveXVhbiBTdHJlZXQsIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi01NC1GNS1CNiAgIChoZXgpCQlPUklFTlRBTCBQQUNJRklDIElOVEVSTkFUSU9OQUwgTElNSVRFRAotNTRGNUI2ICAgICAoYmFzZSAxNikJCU9SSUVOVEFMIFBBQ0lGSUMgSU5URVJOQVRJT05BTCBMSU1JVEVECi0JCQkJNSBBUkdVUyBQTEFDRQotCQkJCUhJTExDUkVTVAotCQkJCU5PUlRIIFNIT1JFIENJVFkgQVVDS0xBTkQgMDYyNwotCQkJCU5FVyBaRUFMQU5ECi0KLTU0LUZELUJGICAgKGhleCkJCVNjaGVpZHQgJiBCYWNobWFubiBHbWJICi01NEZEQkYgICAgIChiYXNlIDE2KQkJU2NoZWlkdCAmIEJhY2htYW5uIEdtYkgKLQkJCQlCcmVpdGUgU3RyYXNzZSAxMzIKLQkJCQlNb2VuY2hlbmdsYWRiYWNoIE5SVyA0MTIzOAotCQkJCUdFUk1BTlkKLQotNTgtMDUtNTYgICAoaGV4KQkJRWxldHRyb25pY2EgR0YgUy5yLkwuCi01ODA1NTYgICAgIChiYXNlIDE2KQkJRWxldHRyb25pY2EgR0YgUy5yLkwuCi0JCQkJVmlhIFZpdHRvcmksIDYzCi0JCQkJRkFFTlpBIFJBIDQ4MDE4Ci0JCQkJSVRBTFkKLQotNTgtMTYtMjYgICAoaGV4KQkJQXZheWEsIEluYwotNTgxNjI2ICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMC0yMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC0xNy0wQyAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotNTgxNzBDICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTU4LTFGLUFBICAgKGhleCkJCUFwcGxlLCBJbmMuCi01ODFGQUEgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LTJGLTQyICAgKGhleCkJCVVuaXZlcnNhbCBFbGVjdHJpYyBDb3Jwb3JhdGlvbgotNTgyRjQyICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBFbGVjdHJpYyBDb3Jwb3JhdGlvbgotCQkJCTE2OCBHZW9yZ2V0b3duIFJvYWQKLQkJCQlDYW5vbnNidXJnIFBBIDE1MzE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC0zNS1EOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi01ODM1RDkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtM0MtQzYgICAoaGV4KQkJT21uZWFsaXR5IEx0ZC4KLTU4M0NDNiAgICAgKGJhc2UgMTYpCQlPbW5lYWxpdHkgTHRkLgotCQkJCTcgR3JvdmUgSG91c2UsIEZpcnNncm92ZSBDcmVzY2VudAotCQkJCVdhcmxleQotCQkJCUJyZW50d29vZCBFc3NleCBDTTE0IDVKUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTU4LTQyLUU0ICAgKGhleCkJCVNpZ21hIEludGVybmF0aW9uYWwgR2VuZXJhbCBNZWRpY2FsIEFwcGFyYXR1cywgTExDLgotNTg0MkU0ICAgICAoYmFzZSAxNikJCVNpZ21hIEludGVybmF0aW9uYWwgR2VuZXJhbCBNZWRpY2FsIEFwcGFyYXR1cywgTExDLgotCQkJCTcxMSBQYXJrIEF2ZW51ZQotCQkJCU1lZGluYSBOWSAxNDEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtNDktQkEgICAoaGV4KQkJQ2hpdGFpIEVsZWN0cm9uaWMgQ29ycC4KLTU4NDlCQSAgICAgKGJhc2UgMTYpCQlDaGl0YWkgRWxlY3Ryb25pYyBDb3JwLgotCQkJCTVGLiwgTm8uIDEgTGFuZSAxMjMsIFBhby1DaHVuZyBSZC4sIEhzaW4tVGllbiBDaXR5IAotCQkJCVRhaWVwaSAgMjMxNDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTU4LTRDLTE5ICAgKGhleCkJCUNob25ncWluZyBHdW9ob25nIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ29tcGFueSBMaW1pdGVkCi01ODRDMTkgICAgIChiYXNlIDE2KQkJQ2hvbmdxaW5nIEd1b2hvbmcgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDb21wYW55IExpbWl0ZWQKLQkJCQlSb25nemhpIEJ1aWxkaW5nLCBTY2llbmNlICYgVGVjaG5vbG9neSBWZW50dXJlIENlbnRlciwKLQkJCQlOby44IFl1bWEgUm9hZCwgTmFuJ2FuIERpc3RyaWN0LCAKLQkJCQlDaG9uZ3FpbmcgIDQwMTMzNgotCQkJCUNISU5BCi0KLTU4LTRDLUVFICAgKGhleCkJCURpZ2l0YWwgT25lIFRlY2hub2xvZ2llcywgTGltaXRlZAotNTg0Q0VFICAgICAoYmFzZSAxNikJCURpZ2l0YWwgT25lIFRlY2hub2xvZ2llcywgTGltaXRlZAotCQkJCU5vLjEgU2hhbmdkaSBYaW54aSBSb2FkCi0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTU4LTUwLTc2ICAgKGhleCkJCUxpbmVhciBFcXVpcGFtZW50b3MgRWxldHJvbmljb3MgU0EKLTU4NTA3NiAgICAgKGJhc2UgMTYpCQlMaW5lYXIgRXF1aXBhbWVudG9zIEVsZXRyb25pY29zIFNBCi0JCQkJUHJhY2EgTGluZWFyIDEwMAotCQkJCVNhbnRhIFJpdGEgZG8gU2FwdWNhaSBNRyAzNzU0MDAwMAotCQkJCUJSQVpJTAotCi01OC01MC1FNiAgIChoZXgpCQlCZXN0IEJ1eSBDb3Jwb3JhdGlvbgotNTg1MEU2ICAgICAoYmFzZSAxNikJCUJlc3QgQnV5IENvcnBvcmF0aW9uCi0JCQkJNzYwMSBQZW5uIEF2ZSBTb3V0aAotCQkJCUM3Ci0JCQkJUmljaGZpZWxkIE1OIDU1NDIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC01NS1DQSAgIChoZXgpCQlBcHBsZQotNTg1NUNBICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC01Ny0wRCAgIChoZXgpCQlEYW5mb3NzIFNvbGFyIEludmVydGVycwotNTg1NzBEICAgICAoYmFzZSAxNikJCURhbmZvc3MgU29sYXIgSW52ZXJ0ZXJzCi0JCQkJSnlsbGFuZHNnYWRlIDI4Ci0JCQkJU++/vW5kZXJib3JnICBESy02NDAwCi0JCQkJREVOTUFSSwotCi01OC02Ny0xQSAgIChoZXgpCQlCQVJORVMmTk9CTEUuQ09NCi01ODY3MUEgICAgIChiYXNlIDE2KQkJQkFSTkVTJk5PQkxFLkNPTQotCQkJCTQwMCBIQU1JTFRPTiBBVkVOVUUKLQkJCQlTVUlURSAxMzAKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LTZELThGICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotNTg2RDhGICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtNkUtRDYgICAoaGV4KQkJUFJJVkFURQotNTg2RUQ2ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi01OC03NS0yMSAgIChoZXgpCQlDSlNDIFJUU29mdAotNTg3NTIxICAgICAoYmFzZSAxNikJCUNKU0MgUlRTb2Z0Ci0JCQkJTmlraXRpbnNrYXlhIHN0ci4sIDMKLQkJCQlNb3Njb3cgIDEwNTAzNwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi01OC03Ni03NSAgIChoZXgpCQlCZWlqaW5nIEVDSE8gVGVjaG5vbG9naWVzIENvLixMdGQKLTU4NzY3NSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEVDSE8gVGVjaG5vbG9naWVzIENvLixMdGQKLQkJCQlOTzEgU3RyZWV0IDQgU2hhbmdkaSAgCi0JCQkJSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlKaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi01OC04RC0wOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi01ODhEMDkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC05NC02QiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTU4OTQ2QiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTU4LTk4LTM1ICAgKGhleCkJCVRlY2huaWNvbG9yCi01ODk4MzUgICAgIChiYXNlIDE2KQkJVGVjaG5pY29sb3IKLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3Ci0JCQkJRWRlZ2VtICAgQi0yNjUwCi0JCQkJQkVMR0lVTQotCi01OC1BNy02RiAgIChoZXgpCQlpRCBjb3Jwb3JhdGlvbgotNThBNzZGICAgICAoYmFzZSAxNikJCWlEIGNvcnBvcmF0aW9uCi0JCQkJZ29yeW9rYWt1IGJsZC4gMkYKLQkJCQk2LTEwIAotCQkJCWhha29kYXRlIGhva2thaWRvIDA0MC0wMDExCi0JCQkJSkFQQU4KLQotNTgtQjAtMzUgICAoaGV4KQkJQXBwbGUsIEluYwotNThCMDM1ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LUI5LUUxICAgKGhleCkJCUNyeXN0YWxmb250eiBBbWVyaWNhLCBJbmMuCi01OEI5RTEgICAgIChiYXNlIDE2KQkJQ3J5c3RhbGZvbnR6IEFtZXJpY2EsIEluYy4KLQkJCQkxMjQxMiBFLiBTYWx0ZXNlIEF2ZS4KLQkJCQlTcG9rYW5lIFZhbGxleSBXQSA5OTIxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtQkMtMjcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNThCQzI3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtRDAtOEYgICAoaGV4KQkJSUVFRSAxOTA0LjEgV29ya2luZyBHcm91cAotNThEMDhGICAgICAoYmFzZSAxNikJCUlFRUUgMTkwNC4xIFdvcmtpbmcgR3JvdXAKLQkJCQkxMzUxIFJlZHdvb2QgV2F5LCAKLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtREItOEQgICAoaGV4KQkJRmFzdCBDby4sIEx0ZC4KLTU4REI4RCAgICAgKGJhc2UgMTYpCQlGYXN0IENvLiwgTHRkLgotCQkJCTItMTEtMSBJd2Ftb3RvY2hvCi0JCQkJN3RoIEZsLiwgSGVyYiBLYW5kYSBCbGRnLiwKLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMS0wMDMyCi0JCQkJSkFQQU4KLQotNTgtRTQtNzYgICAoaGV4KQkJQ0VOVFJPTiBDT01NVU5JQ0FUSU9OUyBURUNITk9MT0dJRVMgRlVKSUFOIENPLixMVEQKLTU4RTQ3NiAgICAgKGJhc2UgMTYpCQlDRU5UUk9OIENPTU1VTklDQVRJT05TIFRFQ0hOT0xPR0lFUyBGVUpJQU4gQ08uLExURAotCQkJCTR0aCBGbG9vcixKaWFvZGFqaWVwdSBCdWlsZGluZyw3MiMgS2VqaWVybHUgUm9hZCwgCi0JCQkJWGknYW4gU2hhYW54aSBQcm92aW5jZSA3MTAxMDAKLQkJCQlDSElOQQotCi01OC1FNi0zNiAgIChoZXgpCQlFVlJzYWZlIFRlY2hub2xvZ2llcwotNThFNjM2ICAgICAoYmFzZSAxNikJCUVWUnNhZmUgVGVjaG5vbG9naWVzCi0JCQkJNTkgTm9ydGggVGVycmFjZSAKLQkJCQlIYWNrbmV5Ci0JCQkJQWRlbGFpZGUgU291dGggQXVzdHJhbGlhIDUwNjkKLQkJCQlBVVNUUkFMSUEKLQotNTgtRTctNDcgICAoaGV4KQkJRGVsdGFuZXQgQUcKLTU4RTc0NyAgICAgKGJhc2UgMTYpCQlEZWx0YW5ldCBBRwotCQkJCVJpZWRzdHJhc3NlIDgKLQkJCQlEaWV0aWtvbiBadXJpY2ggODk1MwotCQkJCVNXSVRaRVJMQU5ECi0KLTU4LUU4LTA4ICAgKGhleCkJCUFVVE9OSUNTIENPUlBPUkFUSU9OCi01OEU4MDggICAgIChiYXNlIDE2KQkJQVVUT05JQ1MgQ09SUE9SQVRJT04KLQkJCQk0MS01IFlPTkdEQU5HLURPTkcKLQkJCQlZQU5HU0FOLVNJIEtZRU9OR05BTSA2MjYtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTU4LUVFLUNFICAgKGhleCkJCUljb24gVGltZSBTeXN0ZW1zCi01OEVFQ0UgICAgIChiYXNlIDE2KQkJSWNvbiBUaW1lIFN5c3RlbXMKLQkJCQkxNTIwMSBOVyBHcmVlbmJyaWVyIFBhcmt3YXkKLQkJCQlTdWl0ZSBBMQotCQkJCUJlYXZlcnRvbiBPUiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtRjYtN0IgICAoaGV4KQkJWGlhIE1lbiBVbmlvbkNvcmUgVGVjaG5vbG9neSBMVEQuCi01OEY2N0IgICAgIChiYXNlIDE2KQkJWGlhIE1lbiBVbmlvbkNvcmUgVGVjaG5vbG9neSBMVEQuCi0JCQkJKDIyNCkyRiBDaHVhbmd5ZSBCdWlsZGluZyxYaWFtZW4gUGlvbmVlcmluZyBQYXJrIGZvciBPdmVyc2VhcyBDaGluZXNlIFNjaG9sYXJzCi0JCQkJWGlhIE1lbiBGdSBKaWFuIDM2MTAwOQotCQkJCUNISU5BCi0KLTU4LUY2LUJGICAgKGhleCkJCUt5b3RvIFVuaXZlcnNpdHkKLTU4RjZCRiAgICAgKGJhc2UgMTYpCQlLeW90byBVbml2ZXJzaXR5Ci0JCQkJWW9zaGlkYS1Ib21tYWNoaQotCQkJCVNha3lvLWt1Ci0JCQkJS3lvdG8gIDYwNjg1MDEKLQkJCQlKQVBBTgotCi01OC1GOS04RSAgIChoZXgpCQlTRUNVRE9TIEdtYkgKLTU4Rjk4RSAgICAgKGJhc2UgMTYpCQlTRUNVRE9TIEdtYkgKLQkJCQlSaGVudXMtUGxhdHogMgotCQkJCUhvbHp3aWNrZWRlIE5SVyA1OTQzOQotCQkJCUdFUk1BTlkKLQotNTgtRkQtMjAgICAoaGV4KQkJQnJhdmlkYSBTYWtlcmhldCBBQgotNThGRDIwICAgICAoYmFzZSAxNikJCUJyYXZpZGEgU2FrZXJoZXQgQUIKLQkJCQlNaWtyb2ZvbnZhZ2VuIDI4Ci0JCQkJU1RPQ0tIT0xNICAxMjYgODEKLQkJCQlTV0VERU4KLQotNUMtMDctNkYgICAoaGV4KQkJVGhvdWdodCBDcmVhdG9yCi01QzA3NkYgICAgIChiYXNlIDE2KQkJVGhvdWdodCBDcmVhdG9yCi0JCQkJTGFyZ28gZGEgUGly77+9bWlkZSwgTu+/vSAzLCBTYWxhIEQKLQkJCQlPZWlyYXMgTGlzYm9hIDI3OTUtMTU2IExpbmRhLWEtVmVsaGEKLQkJCQlQT1JUVUdBTAotCi01Qy0wQy1CQiAgIChoZXgpCQlDRUxJWklPTiBJbmMuCi01QzBDQkIgICAgIChiYXNlIDE2KQkJQ0VMSVpJT04gSW5jLgotCQkJCSMyMDYgTG9yZGxhbmQgRVogVG93ZXIsIEd1TWktRG9uZyAxNTMgQnVuRGFuZy1HdQotCQkJCVNlb25nTmFtLVNpICBHeWVvbmdHaS1EbyA0NjMtODcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTVDLTBFLThCICAgKGhleCkJCU1vdG9yb2xhCi01QzBFOEIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEKLQkJCQlPbmUgTW90b3JvbGEgUGxhemEKLQkJCQlIb2x0c3ZpbGxlIE5ZIDExNzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy0xNC0zNyAgIChoZXgpCQlUaHlzc2Vua3J1cHAgQXVmenVnc3dlcmtlIEdtYkgKLTVDMTQzNyAgICAgKGJhc2UgMTYpCQlUaHlzc2Vua3J1cHAgQXVmenVnc3dlcmtlIEdtYkgKLQkJCQlCZXJuaGFldXNlciBTdHIuNDUKLQkJCQlOZXVoYXVzZW4gYS5kLkYgIDczNzY1Ci0JCQkJR0VSTUFOWQotCi01Qy0xNi1DNyAgIChoZXgpCQlCaWcgU3dpdGNoIE5ldHdvcmtzCi01QzE2QzcgICAgIChiYXNlIDE2KQkJQmlnIFN3aXRjaCBOZXR3b3JrcwotCQkJCTg1NSBFTCBDQU1JTk8gUkVBTAotCQkJCVNURSAyNjAgQkxERyA0Ci0JCQkJUGFsbyBBbHRvIENBIDk0MzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy0xNy1EMyAgIChoZXgpCQlMR0UgCi01QzE3RDMgICAgIChiYXNlIDE2KQkJTEdFIAotCQkJCTYwLTM5ICwgS2FzYW4gLWRvbmcgLCBHdW1jaGVvbi1ndS4KLQkJCQlTZW91bCAgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNUMtMjYtMEEgICAoaGV4KQkJRGVsbCBJbmMuCi01QzI2MEEgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMuCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy0zMy04RSAgIChoZXgpCQlBbHBoYSBOZXR3b3JrYyBJbmMuCi01QzMzOEUgICAgIChiYXNlIDE2KQkJQWxwaGEgTmV0d29ya2MgSW5jLgotCQkJCU5vLjggTGktc2hpbmcgU2V2ZW50aCBSb2FkLFNjaWVuY2UtYmFzZWQKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTVDLTM1LTNCICAgKGhleCkJCUNvbXBhbCBCcm9hZGJhbmQgTmV0d29ya3MgSW5jLgotNUMzNTNCICAgICAoYmFzZSAxNikJCUNvbXBhbCBCcm9hZGJhbmQgTmV0d29ya3MgSW5jLgotCQkJCTJGLi0yLCBOby4zMiBUYWl5dWFuIFN0LgotCQkJCVpodWJlaSBDaXR5IEhzaW5jaHUgQ291bnR5IDMwMjY1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi01Qy0zNS1EQSAgIChoZXgpCQlUaGVyZSBDb3Jwb3JhdGlvbiBPeQotNUMzNURBICAgICAoYmFzZSAxNikJCVRoZXJlIENvcnBvcmF0aW9uIE95Ci0JCQkJRWxpbe+/vWVua2F0dSA1Ci0JCQkJSGVsc2lua2kgIDAwNTEwCi0JCQkJRklOTEFORAotCi01Qy00MC01OCAgIChoZXgpCQlKZWZmZXJzb24gQXVkaW8gVmlkZW8gU3lzdGVtcywgSW5jLgotNUM0MDU4ICAgICAoYmFzZSAxNikJCUplZmZlcnNvbiBBdWRpbyBWaWRlbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTMwMjAgTWlkZGxldG93biBJbmR1c3RyaWFsIEJsdmQuCi0JCQkJTG91aXN2aWxsZSBLZW50dWNreSA0MDIyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtNEMtQTkgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotNUM0Q0E5ICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTAxMDgKLQkJCQlDSElOQQotCi01Qy01Ni1FRCAgIChoZXgpCQkzcGxlcGxheSBFbGVjdHJvbmljcyBQcml2YXRlIExpbWl0ZWQKLTVDNTZFRCAgICAgKGJhc2UgMTYpCQkzcGxlcGxheSBFbGVjdHJvbmljcyBQcml2YXRlIExpbWl0ZWQKLQkJCQkxMTA2LCAxMXRoIEZsb29yCi0JCQkJQmFidSBLaGFuIEVzdGF0ZSwgQmFzaGVlcmJhZ2gKLQkJCQlIeWRlcmFiYWQgQW5kaHJhIFByYWRlc2ggNTAwMDAxCi0JCQkJSU5ESUEKLQotNUMtNTctQzggICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTVDNTdDOCAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU3MAotCQkJCUZJTkxBTkQKLQotNUMtNTktNDggICAoaGV4KQkJQXBwbGUKLTVDNTk0OCAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtNUUtQUIgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotNUM1RUFCICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtNjktODQgICAoaGV4KQkJTlVWSUNPCi01QzY5ODQgICAgIChiYXNlIDE2KQkJTlVWSUNPCi0JCQkJNzItMyBTaW5kYWUsIFNpbGNob24KLQkJCQlHd2FuanUgR3llb25nZ2kgNDY0LTg3MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi01Qy02QS03RCAgIChoZXgpCQlLRU5US0FSVCBFR0UgRUxFS1RST05JSyBTQU4uIFZFIFRJQy4gTFRELiBTVEkuIAotNUM2QTdEICAgICAoYmFzZSAxNikJCUtFTlRLQVJUIEVHRSBFTEVLVFJPTklLIFNBTi4gVkUgVElDLiBMVEQuIFNUSS4gCi0JCQkJMTM3MCBTSywgTk86NDIvMzA0LCAKLQkJCQlNT05UUk8gSVpNSVIgMzUyMzAKLQkJCQlUVVJLRVkKLQotNUMtNkQtMjAgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotNUM2RDIwICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQkgTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMyAKLQkJCQlDSElOQQotCi01Qy03Ny01NyAgIChoZXgpCQlIYWl2aXNpb24gTmV0d29yayBWaWRlbwotNUM3NzU3ICAgICAoYmFzZSAxNikJCUhhaXZpc2lvbiBOZXR3b3JrIFZpZGVvCi0JCQkJNDQ0NSBHYXJhbmQKLQkJCQlNb250cmVhbCBRQyBINFIgMkg5Ci0JCQkJQ0FOQURBCi0KLTVDLTg2LTRBICAgKGhleCkJCVNlY3JldCBMYWJzIExMQwotNUM4NjRBICAgICAoYmFzZSAxNikJCVNlY3JldCBMYWJzIExMQwotCQkJCTMxNSBCbGVlY2tlciBTdCAjMzA4Ci0JCQkJTmV3IFlvcmsgTlkgMTAwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTVDLTg3LTc4ICAgKGhleCkJCUN5YmVydGVsYnJpZGdlIGNvLixsdGQKLTVDODc3OCAgICAgKGJhc2UgMTYpCQlDeWJlcnRlbGJyaWRnZSBjby4sbHRkCi0JCQkJIzkwMSBBY2VoaWdoZW5kIHRvd2VyIDIKLQkJCQkyMjItMTQgR3Vyby1ndSBHdXJvLWRvbmcKLQkJCQlTZW91bCAgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi01Qy05QS1EOCAgIChoZXgpCQlGdWppdHN1IExpbWl0ZWQKLTVDOUFEOCAgICAgKGJhc2UgMTYpCQlGdWppdHN1IExpbWl0ZWQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiwKLQkJCQk0MDMsIEtvc3VnaS1jaG8gMS1jaG9tZSxOYWthaGFyYS1rdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMS0wMDYzCi0JCQkJSkFQQU4KLQotNUMtQUMtNEMgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotNUNBQzRDICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLTVDLUJELTlFICAgKGhleCkJCUhPTkdLT05HIE1JUkFDTEUgRUFHTEUgVEVDSE5PTE9HWShHUk9VUCkgTElNSVRFRAotNUNCRDlFICAgICAoYmFzZSAxNikJCUhPTkdLT05HIE1JUkFDTEUgRUFHTEUgVEVDSE5PTE9HWShHUk9VUCkgTElNSVRFRAotCQkJCUZMQVQgUk0gMjEwMywgIEVBU0VZIENPTU1FUkNJQUwgQkxERywyNTMtMjYxIEhFTk5FU1NZIFJELCAgCi0JCQkJV0FOQ0hBSSA5OTkwNzcKLQkJCQlIT05HIEtPTkcKLQotNUMtQ0EtMzIgICAoaGV4KQkJVGhlYmVuIEFHCi01Q0NBMzIgICAgIChiYXNlIDE2KQkJVGhlYmVuIEFHCi0JCQkJSG9oZW5iZXJnc3RyYe+/vWUgMzIKLQkJCQlIYWlnZXJsb2NoIEJhZGVuLVfvv71ydHRlbWJlcmcgNzI0MDEKLQkJCQlHRVJNQU5ZCi0KLTVDLUQxLTM1ICAgKGhleCkJCVh0cmVtZSBQb3dlciBTeXN0ZW1zCi01Q0QxMzUgICAgIChiYXNlIDE2KQkJWHRyZW1lIFBvd2VyIFN5c3RlbXMKLQkJCQkyNDQwIEtpb3dhIEJsdmQuIE4uICMxMDIKLQkJCQlMYWtlIEhhdmFzdSBDaXR5IEFaIDg2NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy1EOS05OCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTVDRDk5OCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFNpbmh1IDNyZCBSZC4sIE5laWh1IERpc3RyaWN0LCAKLQkJCQlUYWlwZWkgQ2l0eSAgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNUMtREEtRDQgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi01Q0RBRDQgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0JCQkJMTAtMSwgSGlnYXNoaWtvdGFyaSAxLWNob21lCi0JCQkJTmFnYW9rYWt5by1zaGkgS3lvdG8gNjE3LTg1NTUKLQkJCQlKQVBBTgotCi01Qy1FMi0yMyAgIChoZXgpCQlEZWxwaGluIFRlY2hub2xvZ3kgQUcKLTVDRTIyMyAgICAgKGJhc2UgMTYpCQlEZWxwaGluIFRlY2hub2xvZ3kgQUcKLQkJCQlMdXN0aGVpZGUgODEKLQkJCQlCZXJnaXNjaC1HbGFkYmFjaCAgNTE0MjcKLQkJCQlHRVJNQU5ZCi0KLTVDLUUyLTg2ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotNUNFMjg2ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCUNBUlJFVEVSQSBCQVNFIEFFUkVBICMgNTg1MAotCQkJCVphcG9wYW4gSmFsaXNjbyA0NDEzMAotCQkJCU1FWElDTwotCi01Qy1GMi0wNyAgIChoZXgpCQlTcGVjbyBUZWNobm9sb2dpZXMKLTVDRjIwNyAgICAgKGJhc2UgMTYpCQlTcGVjbyBUZWNobm9sb2dpZXMKLQkJCQkyMDAgTmV3IEhpZ2h3YXkKLQkJCQlBbWl0eXZpbGxlIE5ldyBZb3JrIDExNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy1GMy1GQyAgIChoZXgpCQlJQk0gQ29ycAotNUNGM0ZDICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUmQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtRkYtMzUgICAoaGV4KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotNUNGRjM1ICAgICAoYmFzZSAxNikJCVdpc3Ryb24gQ29ycG9yYXRpb24KLQkJCQkyMUYsIDg4LCBTZWMuMSwgSHNpbiBUYWkgV3UgUmQuLCBIc2ljaGloLAotCQkJCVRhaXBlaSBIc2llbiAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02MC0xMS05OSAgIChoZXgpCQlEYXRhLVRlc3RlciBJbmMuCi02MDExOTkgICAgIChiYXNlIDE2KQkJRGF0YS1UZXN0ZXIgSW5jLgotCQkJCTQ1MCBTdC1QaWVycmUsIHN1aXRlIDMwMAotCQkJCU1vbnRyZWFsIFF1ZWJlYyBIMlkgMk05Ci0JCQkJQ0FOQURBCi0KLTYwLTEyLTgzICAgKGhleCkJCVNvbHVjaW9uZXMgVGVjbm9sb2dpY2FzIHBhcmEgbGEgU2FsdWQgeSBlbCBCaWVuZXN0YXIgU0EKLTYwMTI4MyAgICAgKGJhc2UgMTYpCQlTb2x1Y2lvbmVzIFRlY25vbG9naWNhcyBwYXJhIGxhIFNhbHVkIHkgZWwgQmllbmVzdGFyIFNBCi0JCQkJUmQuIEF1Z3VzdGUgeSBMb3VpcyBMdW1pZXJlLCAyMyBuYXZlIDEzCi0JCQkJUGFycXVlIFRlY25vbG9naWNvIGRlIFZhbGVuY2lhCi0JCQkJUGF0ZXJuYSBWYWxlbmNpYS0gQ0lGIEVTIEEgOTgwMDU5NzggNDY5ODAKLQkJCQlTUEFJTgotCi02MC0xNS1DNyAgIChoZXgpCQlJZGFUZWNoCi02MDE1QzcgICAgIChiYXNlIDE2KQkJSWRhVGVjaAotCQkJCTYzMDY1IE5FIDE4dGggU3QuCi0JCQkJQmVuZCBPUiA5NzcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtMTktMEMgICAoaGV4KQkJUlJBTUFDCi02MDE5MEMgICAgIChiYXNlIDE2KQkJUlJBTUFDCi0JCQkJMTU0MDAgTWVkaW5hIFJkCi0JCQkJUGx5bW91dGggTU4gNTU0NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTFELTBGICAgKGhleCkJCU1pZG5pdGUgU29sYXIKLTYwMUQwRiAgICAgKGJhc2UgMTYpCQlNaWRuaXRlIFNvbGFyCi0JCQkJMTc3MjIgNjd0aCBBdmUgTkUgI0MKLQkJCQlBcmxpbmd0b24gV0EgOTgyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTJBLTU0ICAgKGhleCkJCUNhcmRpb1RlayBCLlYuCi02MDJBNTQgICAgIChiYXNlIDE2KQkJQ2FyZGlvVGVrIEIuVi4KLQkJCQlBbWVyaWthbGFhbiA3MAotCQkJCU1hYXN0cmljaHQgQWlycG9ydCBMaW1idXJnIDYxOTlBRQotCQkJCU5FVEhFUkxBTkRTCi0KLTYwLTJBLUQwICAgKGhleCkJCUNpc2NvIFNQVlRHCi02MDJBRDAgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDAxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtMzMtNEIgICAoaGV4KQkJQXBwbGUKLTYwMzM0QiAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtMzgtMEUgICAoaGV4KQkJQWxwcyBFbGVjdHJpYyBDby4sCi02MDM4MEUgICAgIChiYXNlIDE2KQkJQWxwcyBFbGVjdHJpYyBDby4sCi0JCQkJMS0yLTEsIE9raW5vdWNoaQotCQkJCVNvbWEtY2l0eSBGdWt1c2hpbWEgOTc2LTg1MDEKLQkJCQlKQVBBTgotCi02MC0zOS0xRiAgIChoZXgpCQlBQkIgTHRkCi02MDM5MUYgICAgIChiYXNlIDE2KQkJQUJCIEx0ZAotCQkJCURpc3RyaWJ1dGlvbiBBdXRvbWF0aW9uCi0JCQkJTWFuZWphCi0JCQkJVmFkb2RhcmEgR3VqYXJhdCAzOTAwMTMKLQkJCQlJTkRJQQotCi02MC01Mi1EMCAgIChoZXgpCQlGQUNUUyBFbmdpbmVlcmluZyAKLTYwNTJEMCAgICAgKGJhc2UgMTYpCQlGQUNUUyBFbmdpbmVlcmluZyAKLQkJCQk4MDQ5IFBob3RvbmljcyBEcml2ZQotCQkJCU5ldyBQb3J0IFJpY2hleSBGTCAzNDY1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtNTQtNjQgICAoaGV4KQkJRXllZHJvIEdyZWVuIFNvbHV0aW9ucyBJbmMuCi02MDU0NjQgICAgIChiYXNlIDE2KQkJRXllZHJvIEdyZWVuIFNvbHV0aW9ucyBJbmMuCi0JCQkJMSBZb25nZSBTdAotCQkJCVN1aXRlIDE4MDEKLQkJCQlUb3JvbnRvIE9udGFyaW8gTTVFIDFXNwotCQkJCUNBTkFEQQotCi02MC02My1GRCAgIChoZXgpCQlUcmFuc2NlbmQgQ29tbXVuaWNhdGlvbiBCZWlqaW5nIENvLixMdGQuCi02MDYzRkQgICAgIChiYXNlIDE2KQkJVHJhbnNjZW5kIENvbW11bmljYXRpb24gQmVpamluZyBDby4sTHRkLgotCQkJCUEtNixLZXNoaSBwbGF6YSwyOCMsSW5mb3JtYXRpb24gUm9hZAotCQkJCUhhaWRpYW4gRGlzdCwKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi02MC03Ni04OCAgIChoZXgpCQlWZWxvZHluZQotNjA3Njg4ICAgICAoYmFzZSAxNikJCVZlbG9keW5lCi0JCQkJMzQ1IERpZ2l0YWwgRHJpdmUKLQkJCQlNb3JnYW4gSGlsbCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtODMtQjIgICAoaGV4KQkJR2tXYXJlIGUuSy4KLTYwODNCMiAgICAgKGJhc2UgMTYpCQlHa1dhcmUgZS5LLgotCQkJCUh1bWJvbGR0c3RyYXNzZSAxNzcKLQkJCQlFc3NlbiBOUlcgNDUxNDkKLQkJCQlHRVJNQU5ZCi0KLTYwLTg5LTNDICAgKGhleCkJCVRoZXJtbyBGaXNoZXIgU2NpZW50aWZpYyBQLk8uQS4KLTYwODkzQyAgICAgKGJhc2UgMTYpCQlUaGVybW8gRmlzaGVyIFNjaWVudGlmaWMgUC5PLkEuCi0JCQkJNDYgSm9uc3BpbiBSZC4KLQkJCQlXaWxtaW5ndG9uIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC04OS1CNyAgIChoZXgpCQlLQUVMIE3vv71IRU5ESVNMSUsgRUxFS1RST05JSyBUSUNBUkVUIFNBTkFZSSBMaW1pdGVkIO+/vWlya2V0aQotNjA4OUI3ICAgICAoYmFzZSAxNikJCUtBRUwgTe+/vUhFTkRJU0xJSyBFTEVLVFJPTklLIFRJQ0FSRVQgU0FOQVlJIExpbWl0ZWQg77+9aXJrZXRpCi0JCQkJQXRhdO+/vXJrIE1haC4gNzggc29rYWsgLE5vOjEwLCBC77+9ee+/vWthbGFuIE1ldmtpaSwKLQkJCQlVbHVjYWsgLyBLZW1hbHBhc2EKLQkJCQlJem1pciBBZWdlYW4gMzUxNzUKLQkJCQlUVVJLRVkKLQotNjAtOEQtMTcgICAoaGV4KQkJU2VudHJ1cyBHb3Zlcm5tZW50IFN5c3RlbXMgRGl2aXNpb24sIEluYwotNjA4RDE3ICAgICAoYmFzZSAxNikJCVNlbnRydXMgR292ZXJubWVudCBTeXN0ZW1zIERpdmlzaW9uLCBJbmMKLQkJCQkxNDEgQ2hlc3RlcmZpZWxkIEluZHVzdHJpYWwgQmx2ZAotCQkJCUNoZXN0ZXJmaWVsZCBNTyA2MzAwNS0xMjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC05QS1BNCAgIChoZXgpCQlHVkkgU0VDVVJJVFkgSU5DLgotNjA5QUE0ICAgICAoYmFzZSAxNikJCUdWSSBTRUNVUklUWSBJTkMuCi0JCQkJMjgwMSBUUkFERSBDRU5URVIgRFIgU1RFLjEyMAotCQkJCUNBUlJPTExUT04gVFggNzUwMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTlFLTY0ICAgKGhleCkJCVZpdm9uaWMgR21iSAotNjA5RTY0ICAgICAoYmFzZSAxNikJCVZpdm9uaWMgR21iSAotCQkJCUt1cmZ1ZXJzdC1FcHBzdGVpbi1SaW5nIDQKLQkJCQlTYWlsYXVmIEJheWVybiA2Mzg3NwotCQkJCUdFUk1BTlkKLQotNjAtOUYtOUQgICAoaGV4KQkJQ2xvdWRTd2l0Y2gKLTYwOUY5RCAgICAgKGJhc2UgMTYpCQlDbG91ZFN3aXRjaAotCQkJCTIwMCBXaGVlbGVyIFJkCi0JCQkJQnVybGluZ3RvbiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtQTEtMEEgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi02MEExMEEgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTYwLUIzLUM0ICAgKGhleCkJCUVsYmVyIFNybAotNjBCM0M0ICAgICAoYmFzZSAxNikJCUVsYmVyIFNybAotCQkJCXZpYSBQb250ZXZlY2NoaW8gNDIgVwotCQkJCUNhcmFzY28gR2UgMTYwNDIKLQkJCQlJVEFMWQotCi02MC1DOS04MCAgIChoZXgpCQlUcnltdXMKLTYwQzk4MCAgICAgKGJhc2UgMTYpCQlUcnltdXMKLQkJCQlCdWNoZW9uIFRlY2hubyBQYXJrIDMwMy05MDIKLQkJCQlPamVvbmctZ3UgU2FtanVuZy1kb25nCi0JCQkJQnVjaGVvbi1zaSA0MjEtNzQxIEd5dW5nZ2ktZG8KLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjAtRDAtQTkgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi02MEQwQTkgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTYwLUQzLTBBICAgKGhleCkJCVF1YXRpdXMgTGltaXRlZAotNjBEMzBBICAgICAoYmFzZSAxNikJCVF1YXRpdXMgTGltaXRlZAotCQkJCVVuaXRzIDA1LTA3LCAxNi9GLCBHcmVlbmZpZWxkIFRvd2VyLCBDb25jb3JkaWEgUGxhemEsCi0JCQkJMSBTY2llbmNlIE11c2V1bSBSZC4sIFRTVCBFYXN0Ci0JCQkJS293bG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTYwLURBLTIzICAgKGhleCkJCUVzdGVjaCBDby4sTHRkCi02MERBMjMgICAgIChiYXNlIDE2KQkJRXN0ZWNoIENvLixMdGQKLQkJCQkjNzE3LDEzMy0xLFNhbmdkYWV3b24tRG9uZwotCQkJCUp1bmd3b24tR3UKLQkJCQlTZW9uZ25hbS1TaSBHeWVvbmdnaS1EbyA0NjItMTIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTYwLUVCLTY5ICAgKGhleCkJCVF1YW50YSBjb21wdXRlciBJbmMuCi02MEVCNjkgICAgIChiYXNlIDE2KQkJUXVhbnRhIGNvbXB1dGVyIEluYy4KLQkJCQkyMTEsIFdlbiBId2EgMm5kIFJkLixLdWVpIFNoYW4sIAotCQkJCVRhbyBZdWFuICAzMzM3NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjAtRjEtM0QgICAoaGV4KQkJSkFCTE9DT00gcy5yLm8uCi02MEYxM0QgICAgIChiYXNlIDE2KQkJSkFCTE9DT00gcy5yLm8uCi0JCQkJViBOaXZhY2ggMTIKLQkJCQlKYWJsb25lYyBuYWQgTmlzb3UgIDQ2NiAwMQotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTYwLUY1LTlDICAgKGhleCkJCUNSVS1EYXRhcG9ydAotNjBGNTlDICAgICAoYmFzZSAxNikJCUNSVS1EYXRhcG9ydAotCQkJCTEwMDAgU0UgVGVjaCBDZW50ZXIgRHJpdmUKLQkJCQlTdWl0ZSAxNjAKLQkJCQlWYW5jb3V2ZXIgV0EgOTg2ODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLUY2LTczICAgKGhleCkJCVRFUlVNTyBDT1JQT1JBVElPTgotNjBGNjczICAgICAoYmFzZSAxNikJCVRFUlVNTyBDT1JQT1JBVElPTgotCQkJCTE1MDAsSW5va3VjaGksTmFrYWktbWFjaGkKLQkJCQlBc2hpZ2FyYWthbWktZ3VuIEthbmFnYXdhIDI1OS0wMTUxCi0JCQkJSkFQQU4KLQotNjAtRkItNDIgICAoaGV4KQkJQXBwbGUsIEluYwotNjBGQjQyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTAwLUYxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTY0MDBGMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTA5LTRDICAgKGhleCkJCUJlaWppbmcgU3VwZXJiZWUgV2lyZWxlc3MgVGVjaG5vbG9neSBDby4sTHRkCi02NDA5NEMgICAgIChiYXNlIDE2KQkJQmVpamluZyBTdXBlcmJlZSBXaXJlbGVzcyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlCNyxTY2llbmNlLVRlY2ggRm9ydHVuZSBDZW50ZXIsCi0JCQkJTm8uOCxYdWVxaW5nUm9hZCxIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMTkyCi0JCQkJQ0hJTkEKLQotNjQtMEYtMjggICAoaGV4KQkJMndpcmUKLTY0MEYyOCAgICAgKGJhc2UgMTYpCQkyd2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC0xMC04NCAgIChoZXgpCQlIRVhJVU0gVGVjaG5pY2FsIERldmVsb3BtZW50IENvLiwgTHRkLgotNjQxMDg0ICAgICAoYmFzZSAxNikJCUhFWElVTSBUZWNobmljYWwgRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi0JCQkJVmFjaSB1dCA1MWIKLQkJCQlCVURBUEVTVCAgSC0xMTM0Ci0JCQkJSFVOR0FSWQotCi02NC0xNi04RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi02NDE2OEQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC0xNi1GMCAgIChoZXgpCQlTaGVoemhlbiBIdWF3ZWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi02NDE2RjAgICAgIChiYXNlIDE2KQkJU2hlaHpoZW4gSHVhd2VpIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCUJ1aWxkaW5nIDIsIFpvbmUgQixIdWF3ZWkgSW5kdXN0cmlhbCBQYXJrLEJhbnRpYW4sIExvbmdnYW5nIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTY0LTFBLTIyICAgKGhleCkJCUhlbGlvc3BlY3RyYS9Xb29kaGlsbCBJbnZlc3RtZW50cwotNjQxQTIyICAgICAoYmFzZSAxNikJCUhlbGlvc3BlY3RyYS9Xb29kaGlsbCBJbnZlc3RtZW50cwotCQkJCUFybWLvv71nYXbvv71nZW4gMwotCQkJCUJvcu+/vXMgTm9uZSA1MDYzMAotCQkJCVNXRURFTgotCi02NC0xRS04MSAgIChoZXgpCQlEb3dzbGFrZSBNaWNyb3N5c3RlbXMKLTY0MUU4MSAgICAgKGJhc2UgMTYpCQlEb3dzbGFrZSBNaWNyb3N5c3RlbXMKLQkJCQkyMSBIaWdoIFN0cmVldCwgU3VpdGUgMzA2Ci0JCQkJTm9ydGggQW5kb3ZlciBNQSAwMTg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtMzEtNTAgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi02NDMxNTAgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTMxLTdFICAgKGhleCkJCURleGluIENvcnBvcmF0aW9uCi02NDMxN0UgICAgIChiYXNlIDE2KQkJRGV4aW4gQ29ycG9yYXRpb24KLQkJCQkxNEYtOCwgTm8uIDI1OCwgTGlhbiBDaGVuZyBSZC4KLQkJCQlDaHVuZyBIbyBDaXR5LCBUYWlwZWkgSHNpZW4gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjQtMzQtMDkgICAoaGV4KQkJQklUd2F2ZSBQdGUgTHRkCi02NDM0MDkgICAgIChiYXNlIDE2KQkJQklUd2F2ZSBQdGUgTHRkCi0JCQkJMiBTZXJhbmdvb24gTm9ydGggQXZlIDUKLQkJCQkjMDMtMDEKLQkJCQk1NTQ5MTEKLQkJCQlTSU5HQVBPUkUKLQotNjQtNEItQzMgICAoaGV4KQkJU2hhbmdoYWkgV09BU2lTIFRlbGVjb21tdW5pY2F0aW9ucyBMdGQuLCBDby4KLTY0NEJDMyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBXT0FTaVMgVGVsZWNvbW11bmljYXRpb25zIEx0ZC4sIENvLgotCQkJCTE1RiwgU29mdHdhcmUgQnVpbGRpbmcsCi0JCQkJNDYxIEhvbmdjYW8gUm9hZCwgWHVodWkgRGlzdHJpY3QKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotNjQtNEYtNzQgICAoaGV4KQkJTEVOVVMgQ28uLCBMdGQuCi02NDRGNzQgICAgIChiYXNlIDE2KQkJTEVOVVMgQ28uLCBMdGQuCi0JCQkJMTgtNSBHd2FjaGVvbi1Eb25nCi0JCQkJR3dhY2hlb24gR3llb25nZ2ktRG8gNDI3LTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02NC02NS1DMCAgIChoZXgpCQlOdXZvbiwgSW5jCi02NDY1QzAgICAgIChiYXNlIDE2KQkJTnV2b24sIEluYwotCQkJCTMxMzAgQWxwaW5lIFJvYWQKLQkJCQlTdWl0ZSAyODgtNDY1Ci0JCQkJUG9ydG9sYSBWYWxsZXkgQ2FsaWZvcm5pYSA5NDAyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtNjctMDcgICAoaGV4KQkJQmVpamluZyBPbW5pZmljIFRlY2hub2xvZ3ksIEx0ZC4KLTY0NjcwNyAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIE9tbmlmaWMgVGVjaG5vbG9neSwgTHRkLgotCQkJCVJtLiA0MDIsIEJ1aWxkaW5nIDEsIFNodWkgTXUgUWluZyBIdWEgQ29tbXVuaXR5Ci0JCQkJWmhvbmcgR3VhbiBDdW4gQmVpIEVyIEppZSwgSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDE5MAotCQkJCUNISU5BCi0KLTY0LTY4LTBDICAgKGhleCkJCUNPTVRSRU5ECi02NDY4MEMgICAgIChiYXNlIDE2KQkJQ09NVFJFTkQKLQkJCQkzRi0xLDEwIExhbmUgNjA5LCBDaHVuZyBIc2luIFJvYWQsIFNlY3Rpb24gNQotCQkJCVNhbiBDaHVuZyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuICAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTY0LTY5LUJDICAgKGhleCkJCUh5dGVyYSBDb21tdW5pY2F0aW9ucyBDbyAuLGx0ZAotNjQ2OUJDICAgICAoYmFzZSAxNikJCUh5dGVyYSBDb21tdW5pY2F0aW9ucyBDbyAuLGx0ZAotCQkJCUhZVCBUb3dlciAsSGktVGVjaCBJbmR1c3RyaWFsIFBhcmsgTm9ydGgsTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotNjQtNkUtNkMgICAoaGV4KQkJUmFkaW8gRGF0YWNvbSBMTEMKLTY0NkU2QyAgICAgKGJhc2UgMTYpCQlSYWRpbyBEYXRhY29tIExMQwotCQkJCTk2MDEgTiAzNXRoIFN0Ci0JCQkJUGhvZW5peCBBWiA4NTAyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtNzMtRTIgICAoaGV4KQkJQXJiaXRlciBTeXN0ZW1zLCBJbmMuCi02NDczRTIgICAgIChiYXNlIDE2KQkJQXJiaXRlciBTeXN0ZW1zLCBJbmMuCi0JCQkJMTMyNCBWZW5kZWxzIENpcmNsZQotCQkJCVN1aXRlIDEyMQotCQkJCVBhc28gUm9ibGVzIENhbGlmb3JuaWEgOTM0NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTdCLUQ0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi02NDdCRDQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTdELTgxICAgKGhleCkJCVlPS09UQSBJTkRVU1RSSUFMIENPLC5MVEQKLTY0N0Q4MSAgICAgKGJhc2UgMTYpCQlZT0tPVEEgSU5EVVNUUklBTCBDTywuTFRECi0JCQkJNS01NSBOSVNISUlXQVRBCi0JCQkJMy1DSE9NRQotCQkJCUhJR0FTSEkgT1NBS0EtQ0lUWSBPU0FLQSA1NzgtMDk0NwotCQkJCUpBUEFOCi0KLTY0LTdGLURBICAgKGhleCkJCVRFS1RFTElDIENvbW11bmljYXRpb25zIEluYy4KLTY0N0ZEQSAgICAgKGJhc2UgMTYpCQlURUtURUxJQyBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJNzY1NyAxMHRoIFN0cmVldCBORQotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMkUgOFgyCi0JCQkJQ0FOQURBCi0KLTY0LTgwLTk5ICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi02NDgwOTkgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTY0LTgxLTI1ICAgKGhleCkJCUFscGhhdHJvbiBNYXJpbmUgQlYKLTY0ODEyNSAgICAgKGJhc2UgMTYpCQlBbHBoYXRyb24gTWFyaW5lIEJWCi0JCQkJU2NoYWFyZGlqayAyMwotCQkJCVJvdHRlcmRhbSBadWlkLUhvbGxhbmQgMzA2M05ICi0JCQkJTkVUSEVSTEFORFMKLQotNjQtODctRDcgICAoaGV4KQkJUElSRUxMSSBCUk9BREJBTkQgU09MVVRJT05TIAotNjQ4N0Q3ICAgICAoYmFzZSAxNikJCVBJUkVMTEkgQlJPQURCQU5EIFNPTFVUSU9OUyAKLQkJCQlWSUFMRSBTQVJDQSAyMjIKLQkJCQlNSUxBTk8gIDIwMTI2IAotCQkJCUlUQUxZCi0KLTY0LTk5LTVEICAgKGhleCkJCUxHRSAKLTY0OTk1RCAgICAgKGJhc2UgMTYpCQlMR0UgCi0JCQkJNjAtMzkgLCBLYXNhbiAtZG9uZyAsIEd1bWNoZW9uLWd1LgotCQkJCVNlb3VsICAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02NC05Qi0yNCAgIChoZXgpCQlWIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi02NDlCMjQgICAgIChiYXNlIDE2KQkJViBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVlCUCBFYXN0IFRvd2VyIDVGLAotCQkJCTEzNCBHb2RvLWNobywgSG9nb2dheWEta3UsCi0JCQkJWW9rb2hhbWEgY2l0eSBLYW5hZ2F3YSAyNDAtMDAwNQotCQkJCUpBUEFOCi0KLTY0LTlDLThFICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi02NDlDOEUgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LUEyLTMyICAgKGhleCkJCU9PTyBTYW1saWdodAotNjRBMjMyICAgICAoYmFzZSAxNikJCU9PTyBTYW1saWdodAotCQkJCTQ0QSwgRHVibmluc2theWEgc3RyLiwgCi0JCQkJTW9zY293ICAxMjc1OTEKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotNjQtQTctNjkgICAoaGV4KQkJSFRDIENvcnBvcmF0aW9uCi02NEE3NjkgICAgIChiYXNlIDE2KQkJSFRDIENvcnBvcmF0aW9uCi0JCQkJTm8uIDIzLCBYaW5naHVhIFJkLCAKLQkJCQlUYW95dWFuIENvdW50eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02NC1BOC0zNyAgIChoZXgpCQlKdW5pIEtvcmVhIENvLiwgTHRkCi02NEE4MzcgICAgIChiYXNlIDE2KQkJSnVuaSBLb3JlYSBDby4sIEx0ZAotCQkJCUU2MDMgQnVuZGFuZyBUZWNobm8tUGFyayAxNTEKLQkJCQlZYXRhcCwgQnVuZGFuZwotCQkJCVNlb25nbmFtIEd5ZW9uZ2dpIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjQtQjYtNEEgICAoaGV4KQkJVmlWT3RlY2gsIEluYy4KLTY0QjY0QSAgICAgKGJhc2UgMTYpCQlWaVZPdGVjaCwgSW5jLgotCQkJCTQ1MSBFbCBDYW1pbm8gUmVhbAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC1COS1FOCAgIChoZXgpCQlBcHBsZSwgSW5jCi02NEI5RTggICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtQkMtMTEgICAoaGV4KQkJQ29tYmlRIEFCCi02NEJDMTEgICAgIChiYXNlIDE2KQkJQ29tYmlRIEFCCi0JCQkJU2NpZW5jZSBQYXJrCi0JCQkJR2p1dGVyaWdhdGFuIDkKLQkJCQlKb25rb3BpbmcgIDU1MyAxOAotCQkJCVNXRURFTgotCi02NC1DNi1BRiAgIChoZXgpCQlBWEVSUkEgTmV0d29ya3MgTHRkCi02NEM2QUYgICAgIChiYXNlIDE2KQkJQVhFUlJBIE5ldHdvcmtzIEx0ZAotCQkJCTI0ICBSYW91bCBXYWxsZW5iZXJnIFN0LiAsIAotCQkJCVRlbC1Bdml2ICAgSVNSQUVMIDY5NzE5Ci0JCQkJSVNSQUVMCi0KLTY0LUQwLTJEICAgKGhleCkJCURSQVlURUsgRlJBTkNFCi02NEQwMkQgICAgIChiYXNlIDE2KQkJRFJBWVRFSyBGUkFOQ0UKLQkJCQkxMzcgUlVFIERFIFZFUlNBSUxMRVMKLQkJCQlMRSBDSEVTTkFZICA3ODE1MAotCQkJCUZSQU5DRQotCi02NC1EMS1BMyAgIChoZXgpCQlTaXRlY29tIEV1cm9wZSBCVgotNjREMUEzICAgICAoYmFzZSAxNikJCVNpdGVjb20gRXVyb3BlIEJWCi0JCQkJTGluYXRlYmFhbiAxMDEKLQkJCQlSb3R0ZXJkYW0gWnVpZC1Ib2xsYW5kIDMwNDUgQUgKLQkJCQlORVRIRVJMQU5EUwotCi02NC1EMi00MSAgIChoZXgpCQlLZWl0aCAmIEtvZXAgR21iSAotNjREMjQxICAgICAoYmFzZSAxNikJCUtlaXRoICYgS29lcCBHbWJICi0JCQkJVWVsbGVuZGFobGVyIFN0ci4gMTk5Ci0JCQkJV3VwcGVydGFsIE5SVyA0MjEwOQotCQkJCUdFUk1BTlkKLQotNjQtRDQtREEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi02NEQ0REEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi02NC1EOS0xMiAgIChoZXgpCQlTb2xpZGljYSwgSW5jLgotNjREOTEyICAgICAoYmFzZSAxNikJCVNvbGlkaWNhLCBJbmMuCi0JCQkJNTg0MCBJbnRlcmZhY2UgRHJpdmUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlBbm4gQXJib3IgTWljaGlnYW4gNDgxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LURCLTE4ICAgKGhleCkJCU9wZW5QYXR0ZXJuCi02NERCMTggICAgIChiYXNlIDE2KQkJT3BlblBhdHRlcm4KLQkJCQkxMDkvMTExIHJ1ZSBkZXMgQ++/vXRlcwotCQkJCU1haXNvbnMgTGFmZml0dGUgWXZlbGluZXMgNzg2MDAKLQkJCQlGUkFOQ0UKLQotNjQtREMtMDEgICAoaGV4KQkJU3RhdGljIFN5c3RlbXMgR3JvdXAgUExDCi02NERDMDEgICAgIChiYXNlIDE2KQkJU3RhdGljIFN5c3RlbXMgR3JvdXAgUExDCi0JCQkJSGVhdGhtaWxsIFJvYWQKLQkJCQlXb21ib3VybmUKLQkJCQlXb2x2ZXJoYW1wdG9uIFdlc3QgTWlkbGFuZHMgV1Y1IDhBTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTY0LURFLTFDICAgKGhleCkJCUtpbmduZXRpYyBQdGUgTHRkCi02NERFMUMgICAgIChiYXNlIDE2KQkJS2luZ25ldGljIFB0ZSBMdGQKLQkJCQk0NyBLYWtpIEJ1a2l0IFBsYWNlCi0JCQkJIzAyLTAwIEV1bm9zIFRlY2hwYXJrCi0JCQkJNDE2MjI1Ci0JCQkJU0lOR0FQT1JFCi0KLTY0LUU4LUU2ICAgKGhleCkJCWdsb2JhbCBtb2lzdHVyZSBtYW5hZ2VtZW50IHN5c3RlbQotNjRFOEU2ICAgICAoYmFzZSAxNikJCWdsb2JhbCBtb2lzdHVyZSBtYW5hZ2VtZW50IHN5c3RlbQotCQkJCTExMTMyIGJyb2FkIHJpdmVyIHJvYWQKLQkJCQlzdWl0ZSBhCi0JCQkJaXJtbyBzYyAyOTA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtRUQtNTcgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTY0RUQ1NyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtRjktNzAgICAoaGV4KQkJS2VuYWRlIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgQ28uLExURC4KLTY0Rjk3MCAgICAgKGJhc2UgMTYpCQlLZW5hZGUgRWxlY3Ryb25pY3MgVGVjaG5vbG9neSBDby4sTFRELgotCQkJCUYvRyByb29tLDExL0YsSGFuZ2R1IGJ1aWxkaW5nLEh1YWZ1IFJkLCBGdXRpYW4gZGlzdHJpY3QsCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTY0LUY5LTg3ICAgKGhleCkJCUF2dmFzaSBJbmMuCi02NEY5ODcgICAgIChiYXNlIDE2KQkJQXZ2YXNpIEluYy4KLQkJCQkxMDMgUmFuZGFsbCBEci4KLQkJCQlXYXRlcmxvbyBPTiBOMlYgMUM1Ci0JCQkJQ0FOQURBCi0KLTY0LUZDLThDICAgKGhleCkJCVpvbmFyIFN5c3RlbXMKLTY0RkM4QyAgICAgKGJhc2UgMTYpCQlab25hciBTeXN0ZW1zCi0JCQkJMTgyMDAgQ2FzY2FkZSBBdmUgU291dGgKLQkJCQlTZWF0dGxlIFdBIDk4MTE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC0wNS1DQSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotNjgwNUNBICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi02OC0xMi0yRCAgIChoZXgpCQlTcGVjaWFsIEluc3RydW1lbnQgRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi02ODEyMkQgICAgIChiYXNlIDE2KQkJU3BlY2lhbCBJbnN0cnVtZW50IERldmVsb3BtZW50IENvLiwgTHRkLgotCQkJCTZGLTEsIE5vLiAxMjMsIExhbmUgMjM1Ci0JCQkJQmFvIENoaWFvIFJvYWQKLQkJCQlIc2luIFRpZW4gVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjgtMUYtRDggICAoaGV4KQkJQWR2YW5jZWQgVGVsZW1ldHJ5Ci02ODFGRDggICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgVGVsZW1ldHJ5Ci0JCQkJMTA2NzAgVHJlZW5hIFN0cmVldAotCQkJCVN1aXRlIDEwNgotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtMjMtNEIgICAoaGV4KQkJTmlob24gRGVuZ3lvIEtvdXNha3UKLTY4MjM0QiAgICAgKGJhc2UgMTYpCQlOaWhvbiBEZW5neW8gS291c2FrdQotCQkJCXNoaW5tYWNoaSAyMS0xCi0JCQkJbWF0b2JhCi0JCQkJa2F3YWdvZS1zaGkgc2FpdGFtYSAzNTAtMTEwNwotCQkJCUpBUEFOCi0KLTY4LTQzLTUyICAgKGhleCkJCUJodXUgTGltaXRlZAotNjg0MzUyICAgICAoYmFzZSAxNikJCUJodXUgTGltaXRlZAotCQkJCU9mZmljZSAxLCA0NjUgTXQgRWRlbiBSb2FkCi0JCQkJTXQgRWRlbgotCQkJCUF1Y2tsYW5kICAxMDIzCi0JCQkJTkVXIFpFQUxBTkQKLQotNjgtNEItODggICAoaGV4KQkJR2FsdHJvbmljcyBUZWxlbWV0cnkgSW5jLgotNjg0Qjg4ICAgICAoYmFzZSAxNikJCUdhbHRyb25pY3MgVGVsZW1ldHJ5IEluYy4KLQkJCQkzMSBMdXBpIEN0Ci0JCQkJU3VpdGUgMTUwCi0JCQkJUGFsbSBDb2FzdCBGbG9yaWRhIDMyMTM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC01NC1GNSAgIChoZXgpCQllbkxpZ2h0ZWQgSW5jCi02ODU0RjUgICAgIChiYXNlIDE2KQkJZW5MaWdodGVkIEluYwotCQkJCTE0NTEgR3JhbnQgUmQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC01OS03RiAgIChoZXgpCQlBbGNhdGVsIEx1Y2VudAotNjg1OTdGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTHVjZW50Ci0JCQkJVmlhIFRyZW50bywgMzAKLQkJCQlWaW1lcmNhdGUgTUIgMjAwNTkKLQkJCQlJVEFMWQotCi02OC01Qi0zNiAgIChoZXgpCQlQT1dFUlRFQ0ggSU5EVVNUUklBTCBDTy4sIExURC4KLTY4NUIzNiAgICAgKGJhc2UgMTYpCQlQT1dFUlRFQ0ggSU5EVVNUUklBTCBDTy4sIExURC4KLQkJCQkxMEYsIE5vLiA0MDcsIENodW5nIFNoYW4gUmQuLCBTZWMgMiwKLQkJCQlDaHVuZyBIbyBUYWlwZWkgQ291bnR5IDIzNTU4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02OC01RC00MyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTY4NUQ0MyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTY4LTYzLTU5ICAgKGhleCkJCUFkdmFuY2VkIERpZ2l0YWwgQnJvYWRjYXN0IFNBCi02ODYzNTkgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgRGlnaXRhbCBCcm9hZGNhc3QgU0EKLQkJCQlBdmVudWUgZGUgVG91cm5heSA3Ci0JCQkJUHJlZ255LUNoYW1iZXN5ICAxMjkyCi0JCQkJU1dJVFpFUkxBTkQKLQotNjgtNzgtNEMgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi02ODc4NEMgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLTY4LTc5LTI0ICAgKGhleCkJCUVMUy1HbWJIICYgQ28uIEtHCi02ODc5MjQgICAgIChiYXNlIDE2KQkJRUxTLUdtYkggJiBDby4gS0cKLQkJCQlEYW1tc3RyYXNzZSAyMQotCQkJCVdlcnRoZXIgTlJXIDMzODI0Ci0JCQkJR0VSTUFOWQotCi02OC03OS1FRCAgIChoZXgpCQlTSEFSUCBDb3Jwb3JhdGlvbgotNjg3OUVEICAgICAoYmFzZSAxNikJCVNIQVJQIENvcnBvcmF0aW9uCi0JCQkJMjItMjIsTmFnYWlrZS1DaG8KLQkJCQlBYmVuby1LdQotCQkJCU9zYWthLUNpdHkgT3Nha2EtUHJlZmVjdHVyZSA1NDUtODUyMgotCQkJCUpBUEFOCi0KLTY4LTdGLTc0ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotNjg3Rjc0ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtODQtNzAgICAoaGV4KQkJZVNTeXMgQ28uLEx0ZAotNjg4NDcwICAgICAoYmFzZSAxNikJCWVTU3lzIENvLixMdGQKLQkJCQlEYWVydW5nIFBvc3QgVG93ZXIgNSAxNUYsIDYwLTMKLQkJCQlHYXNhbi1kb25nCi0JCQkJU2VvdWwgR2V1bWNoZW9uLWd1IDE1My03MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjgtODUtNDAgICAoaGV4KQkJSUdJIE1vYmlsZSwgSW5jLgotNjg4NTQwICAgICAoYmFzZSAxNikJCUlHSSBNb2JpbGUsIEluYy4KLQkJCQk0RiBLeW9uZ25hbSBCbGRnLiwKLQkJCQk4MzAtNDggWW9rc2FtLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02OC04Ny02QiAgIChoZXgpCQlJTlEgTW9iaWxlIExpbWl0ZWQKLTY4ODc2QiAgICAgKGJhc2UgMTYpCQlJTlEgTW9iaWxlIExpbWl0ZWQKLQkJCQk2IEhlc3RlciBSb2FkCi0JCQkJQmF0dGVyc2VhIExvbmRvbiBTVzExIDRBTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTY4LTkyLTM0ICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotNjg5MjM0ICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY4LUExLUI3ICAgKGhleCkJCUhvbmdoYW8gTWluZ2NodWFuIFRlY2hub2xvZ3kgKEJlaWppbmcpIENPLixMdGQuCi02OEExQjcgICAgIChiYXNlIDE2KQkJSG9uZ2hhbyBNaW5nY2h1YW4gVGVjaG5vbG9neSAoQmVpamluZykgQ08uLEx0ZC4KLQkJCQlGbG9vciA4LFRvd2VyIEEsIFdhbmxpdSBZaWNoZW5nIEJ1aWxkaW5nCi0JCQkJTm8uMTEsIENoYW5nY2h1biBRaWFvIFJvYWQsIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODkKLQkJCQlDSElOQQotCi02OC1BMy1DNCAgIChoZXgpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotNjhBM0M0ICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsOTAsQ2hpZW4gMSBSb2FkLENodW5nSG8sCi0JCQkJVGFpUGVpICAyMzU4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjgtQUEtRDIgICAoaGV4KQkJREFURUNTIExURC4sCi02OEFBRDIgICAgIChiYXNlIDE2KQkJREFURUNTIExURC4sCi0JCQkJQlVMLiBUU0FSSUdSQURTS08gU0hPU1NFIDExNUEKLQkJCQlTT0ZJQSAgMTc4NAotCQkJCUJVTEdBUklBCi0KLTY4LUI1LTk5ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotNjhCNTk5ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC1CRC1BQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi02OEJEQUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC1DQS0wMCAgIChoZXgpCQlPY3RvcHVzIFN5c3RlbXMgTGltaXRlZAotNjhDQTAwICAgICAoYmFzZSAxNikJCU9jdG9wdXMgU3lzdGVtcyBMaW1pdGVkCi0JCQkJMzYvRiwgMTQ4IEVsZWN0cmljIFJvYWQKLQkJCQlOb3J0aCBQb2ludAotCQkJCUhPTkcgS09ORwotCi02OC1DQy05QyAgIChoZXgpCQlNaW5lIFNpdGUgVGVjaG5vbG9naWVzCi02OENDOUMgICAgIChiYXNlIDE2KQkJTWluZSBTaXRlIFRlY2hub2xvZ2llcwotCQkJCTI1LTI3IFdoaXRpbmcgU3RyZWV0Ci0JCQkJQXJ0YXJtb24gTlNXIDIwNjQKLQkJCQlBVVNUUkFMSUEKLQotNjgtREItOTYgICAoaGV4KQkJT1BXSUxMIFRlY2hub2xvZ2llcyBDTyAuLExURAotNjhEQjk2ICAgICAoYmFzZSAxNikJCU9QV0lMTCBUZWNobm9sb2dpZXMgQ08gLixMVEQKLQkJCQlSb29tIDQxNSxEaWdpdGFsIE1lZGlhIEJ1aWxkaW5nLE5PLjcgU2hhbmdkaSBJbmZvcm1hdGlvbiBSb2FkLEhhaURpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotNjgtREMtRTggICAoaGV4KQkJUGFja2V0U3Rvcm0gQ29tbXVuaWNhdGlvbnMKLTY4RENFOCAgICAgKGJhc2UgMTYpCQlQYWNrZXRTdG9ybSBDb21tdW5pY2F0aW9ucwotCQkJCTIwIE1lcmlkaWFuIFJkCi0JCQkJRWF0b250b3duIE5KIDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC1FNC0xRiAgIChoZXgpCQlVbmdsYXViZSBJZGVudGVjaCBHbWJICi02OEU0MUYgICAgIChiYXNlIDE2KQkJVW5nbGF1YmUgSWRlbnRlY2ggR21iSAotCQkJCUFuIGRlciBNb29zYWNoIDNhCi0JCQkJTWFzc2VuaGF1c2VuIEJheWVybiA4NTM3NgotCQkJCUdFUk1BTlkKLQotNjgtRUItQUUgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi02OEVCQUUgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTY4LUVCLUM1ICAgKGhleCkJCUFuZ3N0cmVtIFRlbGVjb20KLTY4RUJDNSAgICAgKGJhc2UgMTYpCQlBbmdzdHJlbSBUZWxlY29tCi0JCQkJWXV6aG5heWEgcHJvbXpvbmEsIHBhc3NhZ2UgNDgwNiwgNCwgYnVpbGQgMyAKLQkJCQlaZWxlbm9ncmFkIE1vc2NvdyAxMjQ0NjAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotNjgtRUYtQkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNjhFRkJEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtRjgtOTUgICAoaGV4KQkJUmVkZmxvdyBMaW1pdGVkCi02OEY4OTUgICAgIChiYXNlIDE2KQkJUmVkZmxvdyBMaW1pdGVkCi0JCQkJMS8yNyBDb3VuaWhhbiBSZCAKLQkJCQlTZXZlbnRlZW4gTWlsZSBSb2NrcwotCQkJCUJyaXNiYW5lIFF1ZWVuc2xhbmQgNDA3MwotCQkJCUFVU1RSQUxJQQotCi02Qy0wNC02MCAgIChoZXgpCQlSQkggQWNjZXNzIFRlY2hub2xvZ2llcyBJbmMuCi02QzA0NjAgICAgIChiYXNlIDE2KQkJUkJIIEFjY2VzcyBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTIgQXV0b21hdGljIFJvYWQKLQkJCQlVbml0IDEwOAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZTIDZLOAotCQkJCUNBTkFEQQotCi02Qy0wRS0wRCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotNkMwRTBEICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTZDLTBGLTZBICAgKGhleCkJCUpEQyBUZWNoIENvLiwgTHRkLgotNkMwRjZBICAgICAoYmFzZSAxNikJCUpEQyBUZWNoIENvLiwgTHRkLgotCQkJCTM3MC0xMiBEYWVteXVuZy1yaSBEYWVnb3QtbXl1bgotCQkJCUtpbXBvLXNpIEt5dW5nZ2ktZG8gNDEwLTg1MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02Qy0xOC0xMSAgIChoZXgpCQlEZWNhdHVyIEVsZWN0cm9uaWNzCi02QzE4MTEgICAgIChiYXNlIDE2KQkJRGVjYXR1ciBFbGVjdHJvbmljcwotCQkJCTcxNSBCcmlnaHQgU3RyZWV0Ci0JCQkJRGVjYXR1ciBJTCA2MjUyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtMjItQUIgICAoaGV4KQkJQWluc3dvcnRoIEdhbWUgVGVjaG5vbG9neQotNkMyMkFCICAgICAoYmFzZSAxNikJCUFpbnN3b3J0aCBHYW1lIFRlY2hub2xvZ3kKLQkJCQkxMCBIb2xrZXIgU3RyZWV0IAotCQkJCU5ld2luZ3RvbiBOZXcgU291dGggV2FsZXMgMjEyNwotCQkJCUFVU1RSQUxJQQotCi02Qy0yMy1COSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotNkMyM0I5ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTZDLTJFLTMzICAgKGhleCkJCUFjY2VsaW5rIFRlY2hub2xvZ2llcyBDby4sTHRkLgotNkMyRTMzICAgICAoYmFzZSAxNikJCUFjY2VsaW5rIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCTg4IFlvdWtleXVhbiBSb2FkLAotCQkJCVd1aGFuIEh1YmVpIDQzMDA3NAotCQkJCUNISU5BCi0KLTZDLTJFLTg1ICAgKGhleCkJCVNBR0VNQ09NCi02QzJFODUgICAgIChiYXNlIDE2KQkJU0FHRU1DT00KLQkJCQkyNTAgcm91dGUgZGUgbCdFbXBlcmV1cgotCQkJCVJVRUlMIE1BTE1BSVNPTiAgOTI4NDgKLQkJCQlGUkFOQ0UKLQotNkMtMzItREUgICAoaGV4KQkJSW5kaWVvbiBUZWNobm9sb2dpZXMgUHZ0LiBMdGQuCi02QzMyREUgICAgIChiYXNlIDE2KQkJSW5kaWVvbiBUZWNobm9sb2dpZXMgUHZ0LiBMdGQuCi0JCQkJNjAxLCBBbHBoYSAyLCBHaWdhc3BhY2UgSVQgUGFyawotCQkJCVZpbWFuIE5hZ2FyCi0JCQkJUHVuZSAgTWFoYXJhc3RyYSA0MTEwMTQKLQkJCQlJTkRJQQotCi02Qy0zMy1BOSAgIChoZXgpCQlNYWdpY2phY2sgTFAKLTZDMzNBOSAgICAgKGJhc2UgMTYpCQlNYWdpY2phY2sgTFAKLQkJCQk1NzAwIEdlb3JnaWEgQXZlbnVlCi0JCQkJV2VzdCBQYWxtIEJlYWNoIEZMIDMzNDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02Qy0zOS0xRCAgIChoZXgpCQlCZWlqaW5nIFpob25nSHVhSHVuIE5ldHdvcmsgSW5mb3JtYXRpb24gY2VudGVyCi02QzM5MUQgICAgIChiYXNlIDE2KQkJQmVpamluZyBaaG9uZ0h1YUh1biBOZXR3b3JrIEluZm9ybWF0aW9uIGNlbnRlcgotCQkJCTZGIEJlaUFvIE1hbnNpb24sSHVpWGluIEVhc3QgU3RyZWV0IEEyLAotCQkJCUNoYW95YW5nIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDAyOQotCQkJCUNISU5BCi0KLTZDLTNFLTlDICAgKGhleCkJCUtFIEtuZXN0ZWwgRWxla3Ryb25payBHbWJICi02QzNFOUMgICAgIChiYXNlIDE2KQkJS0UgS25lc3RlbCBFbGVrdHJvbmlrIEdtYkgKLQkJCQlPc3RlcndhbGRlciBTdHIuIDEyCi0JCQkJSG9wZmVyYmFjaCBCYXZhcmlhIDg3NDk2Ci0JCQkJR0VSTUFOWQotCi02Qy01MC00RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi02QzUwNEQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02Qy01Qy1ERSAgIChoZXgpCQlTdW5SZXBvcnRzLCBJbmMuCi02QzVDREUgICAgIChiYXNlIDE2KQkJU3VuUmVwb3J0cywgSW5jLgotCQkJCTE0MDYgQ2VkYXJ3b29kIERyLgotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtNUQtNjMgICAoaGV4KQkJU2hlblpoZW4gUmFwb28gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTZDNUQ2MyAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBSYXBvbyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUJsb2NrIEExLEIxLEIyLDFzdCBzZWNvbmQgc3RhZ2UsIDFzdCBJbmR1c3RyaWFsIFBhcmssIDNyZCBJbmR1c3RyaWFsIFpvbmUgLEZlbmdodWFuZyBGdXlvbmcsIEJhb0FuIAotCQkJCVNoZW5aaGVuICA1MTgxMDMKLQkJCQlDSElOQQotCi02Qy01RS03QSAgIChoZXgpCQlVYmlxdWl0b3VzIEludGVybmV0IFRlbGVjb20gQ28uLCBMdGQKLTZDNUU3QSAgICAgKGJhc2UgMTYpCQlVYmlxdWl0b3VzIEludGVybmV0IFRlbGVjb20gQ28uLCBMdGQKLQkJCQkjNTEyLCA1dGggRmxvb3IsIEtvbG9uIERpZ2l0YWwgVmFsbGV5LEd1cm8gMyhzYW0pLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTc3NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02Qy02Mi02RCAgIChoZXgpCQlNaWNyby1TdGFyIElOVCdMIENPLiwgTFRECi02QzYyNkQgICAgIChiYXNlIDE2KQkJTWljcm8tU3RhciBJTlQnTCBDTy4sIExURAotCQkJCU5vLjY5LCBMaWRlIFN0LiwgSmhvbmdoZSBDaXR5Ci0JCQkJVGFpcGVpIENvbnV0eSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02Qy02Ri0xOCAgIChoZXgpCQlTdGVyZW90YXhpcywgSW5jLgotNkM2RjE4ICAgICAoYmFzZSAxNikJCVN0ZXJlb3RheGlzLCBJbmMuCi0JCQkJNDMyMCBGb3Jlc3QgUGFyayBBdmUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTdC4gTG91aXMgTU8gNjMxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTZDLTcwLTM5ICAgKGhleCkJCU5vdmFyIEdtYkggCi02QzcwMzkgICAgIChiYXNlIDE2KQkJTm92YXIgR21iSCAKLQkJCQlKb2hhbm5lcy1NYXV0aGUtU3RyLiAxNAotCQkJCUFsYnN0YWR0IEJhZGVuLVd1cnR0ZW1iZXJnICA3MjQ1OAotCQkJCUdFUk1BTlkKLQotNkMtODEtRkUgICAoaGV4KQkJTWl0c3ViYSBDb3Jwb3JhdGlvbgotNkM4MUZFICAgICAoYmFzZSAxNikJCU1pdHN1YmEgQ29ycG9yYXRpb24KLQkJCQkxLTI2ODEKLQkJCQlIaXJvc2F3YS1jaG8KLQkJCQlLaXJ5dSBHdW5tYSAzNzYtODU1NQotCQkJCUpBUEFOCi0KLTZDLThDLURCICAgKGhleCkJCU90dXMgVGVjaG5vbG9naWVzIEx0ZAotNkM4Q0RCICAgICAoYmFzZSAxNikJCU90dXMgVGVjaG5vbG9naWVzIEx0ZAotCQkJCTI2IEJyYWlkIFJvYWQKLQkJCQlFZGluYnVyZ2ggTW9ybmluZ3NpZGUgRUgxMCA2QUQKLQkJCQlVTklURUQgS0lOR0RPTQotCi02Qy04RC02NSAgIChoZXgpCQlXaXJlbGVzcyBHbHVlIE5ldHdvcmtzLCBJbmMuCi02QzhENjUgICAgIChiYXNlIDE2KQkJV2lyZWxlc3MgR2x1ZSBOZXR3b3JrcywgSW5jLgotCQkJCTE2MDEgTi4gTWFpbiBTdHJlZXQsIFN1aXRlIDIwMgotCQkJCVdhbG51dCBDcmVlayBDQSA5NDU5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtOTItQkYgICAoaGV4KQkJSW5zcHVyIEVsZWN0cm9uaWMgSW5mb3JtYXRpb24gSW5kdXN0cnkgQ28uLEx0ZC4KLTZDOTJCRiAgICAgKGJhc2UgMTYpCQlJbnNwdXIgRWxlY3Ryb25pYyBJbmZvcm1hdGlvbiBJbmR1c3RyeSBDby4sTHRkLgotCQkJCU5vIDIyNCBTaGFuZGEgUm9hZAotCQkJCUppbmFuIFNoYW5kb25nIDI1MDAxMwotCQkJCUNISU5BCi0KLTZDLTlCLTAyICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi02QzlCMDIgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotNkMtOUMtRTkgICAoaGV4KQkJTmltYmxlIFN0b3JhZ2UKLTZDOUNFOSAgICAgKGJhc2UgMTYpCQlOaW1ibGUgU3RvcmFnZQotCQkJCTI2NDUgWmFua2VyIFJvYWQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtQTktMDYgICAoaGV4KQkJVGVsZWZpZWxkIEx0ZAotNkNBOTA2ICAgICAoYmFzZSAxNikJCVRlbGVmaWVsZCBMdGQKLQkJCQlGbGF0IEQsMi9GLiwgVmFsaWFudCBJbmR1c3RyaWFsIENlbnRyZSwyLTEyIEF1IFB1aSBXYW4gU3RyZWV0LCAKLQkJCQlGbyBUYW4sIE4uVC4KLQkJCQlIb25na29uZyAgODUyCi0JCQkJQ0hJTkEKLQotNkMtQUItNEQgICAoaGV4KQkJRGlnaXRhbCBQYXltZW50IFRlY2hub2xvZ2llcwotNkNBQjREICAgICAoYmFzZSAxNikJCURpZ2l0YWwgUGF5bWVudCBUZWNobm9sb2dpZXMKLQkJCQk0MTA1IEdyYW5kdmlldyBId3kKLQkJCQlCdXJuYWJ5IEJDIFY1QyA2QjQKLQkJCQlDQU5BREEKLQotNkMtQUMtNjAgICAoaGV4KQkJVmVuZXRleCBDb3JwCi02Q0FDNjAgICAgIChiYXNlIDE2KQkJVmVuZXRleCBDb3JwCi0JCQkJOC0zLTksU2hpbi1tYWNoaQotCQkJCU9tZS1zaGksIFRva3lvIDE5OC0wMDI0Ci0JCQkJSkFQQU4KLQotNkMtQUQtM0YgICAoaGV4KQkJSHViYmVsbCBCdWlsZGluZyBBdXRvbWF0aW9uLCBJbmMuCi02Q0FEM0YgICAgIChiYXNlIDE2KQkJSHViYmVsbCBCdWlsZGluZyBBdXRvbWF0aW9uLCBJbmMuCi0JCQkJOTYwMSBEZXNzYXUgUmQKLQkJCQlCbGRnIDEgU3VpdGUgMTAwCi0JCQkJQXVzdGluIFRleGFzIDc4NzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02Qy1CRS1FOSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudC1JUEQKLTZDQkVFOSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudC1JUEQKLQkJCQk3NzcgTWlkZGxlZmllbGQgUmQuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtRDYtOEEgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MgSW5jCi02Q0Q2OEEgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MgSW5jCi0JCQkJNjAtMzksR2FzYW4tZG9uZyxHdW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTZDLURDLTZBICAgKGhleCkJCVByb21ldGhlYW4gTGltaXRlZAotNkNEQzZBICAgICAoYmFzZSAxNikJCVByb21ldGhlYW4gTGltaXRlZAotCQkJCUFjdGl2bGFiCi0JCQkJUGhpbGlwcyBSb2FkCi0JCQkJQmxhY2tidXJuIExhbmNhc2hpcmUgQkIxIDVTTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTZDLUUwLUIwICAgKGhleCkJCVNPVU5ENAotNkNFMEIwICAgICAoYmFzZSAxNikJCVNPVU5ENAotCQkJCTExIHF1YWkgSm9zZXBoIEdpbGxldAotCQkJCUxZT04gIDY5MDA0Ci0JCQkJRlJBTkNFCi0KLTZDLUYwLTQ5ICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi02Q0YwNDkgICAgIChiYXNlIDE2KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlOby4yMTUsTmFuLVBpbmcgUm9hZCwKLQkJCQlQaW4tSmVuIFRhb3l1YW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02Qy1GRC1COSAgIChoZXgpCQlQcm93YXJlIFRlY2hub2xvZ2llcyBDbyBMdGQuCi02Q0ZEQjkgICAgIChiYXNlIDE2KQkJUHJvd2FyZSBUZWNobm9sb2dpZXMgQ28gTHRkLgotCQkJCTJuZCBGMSBFYXN0IFdpbmcsU291dGggU2VjdGlvbixGYWN0b3J5IEJ1aWxkaW5nIDI0LFNjaWVuY2UmVGVjaG5vbG9neSBQYXJrCi0JCQkJU2hlbm5hbiBSZCxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTZDLUZGLUJFICAgKGhleCkJCU1QQiBDb21tdW5pY2F0aW9ucyBJbmMuCi02Q0ZGQkUgICAgIChiYXNlIDE2KQkJTVBCIENvbW11bmljYXRpb25zIEluYy4KLQkJCQkxNDcgSHltdXMgQmx2ZAotCQkJCVBvaW50ZS1DbGFpcmUgUXVlYmVjIEg5UiAxRTkKLQkJCQlDQU5BREEKLQotNzAtMDItNTggICAoaGV4KQkJMDFEQi1NRVRSQVZJQgotNzAwMjU4ICAgICAoYmFzZSAxNikJCTAxREItTUVUUkFWSUIKLQkJCQkyMDAgQ0hFTUlOIERFUyBPUk1FQVVYCi0JCQkJTElNT05FU1QgQ0VERVggUkhPTkUgNjk1NzgKLQkJCQlGUkFOQ0UKLQotNzAtMTQtMDQgICAoaGV4KQkJTGltaXRlZCBMaWFiaWxpdHkgQ29tcGFueSAiUmVzZWFyY2ggQ2VudGVyICJCcmVzbGVyIgotNzAxNDA0ICAgICAoYmFzZSAxNikJCUxpbWl0ZWQgTGlhYmlsaXR5IENvbXBhbnkgIlJlc2VhcmNoIENlbnRlciAiQnJlc2xlciIKLQkJCQlJLllha292bGV2YSBTdC4sIDEKLQkJCQlDaGVib2tzYXJ5IENodXZhc2ggUmVwdWJsaWMgIDQyODAwMwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi03MC0xQS0wNCAgIChoZXgpCQlMaXRlb24gVGVjaCBDb3JwLgotNzAxQTA0ICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNoIENvcnAuCi0JCQkJNEYgOTAgQ2hpZW4gMSBSZC5DaHVuZ0hvCi0JCQkJVGFpcGVpICAyMzU4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNzAtMUEtRUQgICAoaGV4KQkJQURWQVMgQ08uLCBMVEQuCi03MDFBRUQgICAgIChiYXNlIDE2KQkJQURWQVMgQ08uLCBMVEQuCi0JCQkJMy04LTggU2hpbi15b2tvaGFtYSwgS29ob2t1LWt1Ci0JCQkJTmlzc291IDE2QmxkZy4gNkYKLQkJCQlZb2tvaGFtYS1zaGkgS2FuYWdhd2Eta2VuIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotNzAtMkItMUQgICAoaGV4KQkJRS1Eb211cyBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTcwMkIxRCAgICAgKGJhc2UgMTYpCQlFLURvbXVzIEludGVybmF0aW9uYWwgTGltaXRlZAotCQkJCTFzdCBGbG9vcgotCQkJCTUgQm91cmxldCBDbG9zZQotCQkJCUxvbmRvbiAgVzFXIDdCTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTcwLTJGLTk3ICAgKGhleCkJCUFhdmEgTW9iaWxlIE95Ci03MDJGOTcgICAgIChiYXNlIDE2KQkJQWF2YSBNb2JpbGUgT3kKLQkJCQlOYWhrYXRlaHRhYW5rYXR1IDIKLQkJCQlPdWx1ICA5MDEwMAotCQkJCUZJTkxBTkQKLQotNzAtMzItRDUgICAoaGV4KQkJQXRoZW5hIFdpcmVsZXNzIENvbW11bmljYXRpb25zIEluYwotNzAzMkQ1ICAgICAoYmFzZSAxNikJCUF0aGVuYSBXaXJlbGVzcyBDb21tdW5pY2F0aW9ucyBJbmMKLQkJCQkxMjQyNSBXIEJlbGwgUmQKLQkJCQlTdWl0ZSAxMTAKLQkJCQlTdXJwcmlzZSBBWiA4NTM3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtM0EtRDggICAoaGV4KQkJU2hlbnpoZW4gQWZvdW5kcnkgRWxlY3Ryb25pYyBDby4sIEx0ZAotNzAzQUQ4ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEFmb3VuZHJ5IEVsZWN0cm9uaWMgQ28uLCBMdGQKLQkJCQkyMDEsIEEgQnVpbGRpbmcsIEJvbGUgSW5kdXN0cmlhbCBab25lLCBCYW50aWFuLCBMb25nZ2FuZyBEaXN0cmljdAotCQkJCU5vIyA5MDYsIDIgQnVpbGRpbmcsIFhpbmNoZW5nIFBsYXphLCBGdWh1YW4gUkQtMywgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gIEd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi03MC0zQy0zOSAgIChoZXgpCQlTRUFXSU5HIEtmdAotNzAzQzM5ICAgICAoYmFzZSAxNikJCVNFQVdJTkcgS2Z0Ci0JCQkJQnVkYWkg+nQgMTM5LgotCQkJCVN66Wtlc2ZlaOlyduFyIEZlaulyIDgwMDAKLQkJCQlIVU5HQVJZCi0KLTcwLTRBLUFFICAgKGhleCkJCVhzdHJlYW0gRmxvdyAoUHR5KSBMdGQKLTcwNEFBRSAgICAgKGJhc2UgMTYpCQlYc3RyZWFtIEZsb3cgKFB0eSkgTHRkCi0JCQkJUm9vbSAxMjMsIEJ1aWxkaW5nIDE2LCBDU0lSIGNhbXB1cwotCQkJCU1laXJpbmcgTmF1ZGUgcm9hZAotCQkJCVByZXRvcmlhIEdhdXRlbmcgMDE4NAotCQkJCVNPVVRIIEFGUklDQQotCi03MC01OC0xMiAgIChoZXgpCQlQYW5hc29uaWMgQVZDIE5ldHdvcmtzIENvbXBhbnkKLTcwNTgxMiAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgQVZDIE5ldHdvcmtzIENvbXBhbnkKLQkJCQkxLTE1IE1hdHN1by1jaG8KLQkJCQlLYWRvbWEgT3Nha2EgNTcxLTg1MDQKLQkJCQlKQVBBTgotCi03MC01QS1CNiAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELiAKLTcwNUFCNiAgICAgKGJhc2UgMTYpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELiAKLQkJCQlOTy4gMjUsIFRIRSAzUkQgU3RyZWV0IEtVTlNIQU4gRVhQT1JUIFBST0NFU1NJTkcgWk9ORSAKLQkJCQlLVU5TSEFOIFNVWkhPVSAyMTUzMDAgCi0JCQkJQ0hJTkEKLQotNzAtNUMtQUQgICAoaGV4KQkJS29uYW1pIEdhbWluZyBJbmMKLTcwNUNBRCAgICAgKGJhc2UgMTYpCQlLb25hbWkgR2FtaW5nIEluYwotCQkJCTU4NSBUcmFkZSBDZW50ZXIgRHJpdmUKLQkJCQlMYXMgVmVnYXMgTmV2YWRhIDg5MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC01RS1BQSAgIChoZXgpCQlBY3Rpb24gVGFyZ2V0LCBJbmMuCi03MDVFQUEgICAgIChiYXNlIDE2KQkJQWN0aW9uIFRhcmdldCwgSW5jLgotCQkJCVBPIEJveCA2MzYKLQkJCQlQcm92byBVVCA4NDYwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtNjQtMTcgICAoaGV4KQkJT1JCSVMgVEVDTk9MT0dJQSBFTEVDVFJJQ0EgUy5BLgotNzA2NDE3ICAgICAoYmFzZSAxNikJCU9SQklTIFRFQ05PTE9HSUEgRUxFQ1RSSUNBIFMuQS4KLQkJCQlMZXJpZGEsIDYxCi0JCQkJTWFkcmlkIE1hZHJpZCBFMjgwMjAKLQkJCQlTUEFJTgotCi03MC02NS04MiAgIChoZXgpCQlTdXpob3UgSGFubWluZyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi03MDY1ODIgICAgIChiYXNlIDE2KQkJU3V6aG91IEhhbm1pbmcgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCVN1aXRlIDQwNywgTm8uIDE2NiwgUmVuIEFpIFJvYWQKLQkJCQlTdXpob3UgSW5kdXN0cmlhbCBQYXJrCi0JCQkJU3V6aG91IEppYW5nc3UgMjE1MTIzCi0JCQkJQ0hJTkEKLQotNzAtNzEtQkMgICAoaGV4KQkJUEVHQVRST04gQ09SUE9SQVRJT04KLTcwNzFCQyAgICAgKGJhc2UgMTYpCQlQRUdBVFJPTiBDT1JQT1JBVElPTgotCQkJCU5vLiA3NiwgTGlnb25nIFN0LiwgQmVpdG91LCAKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNzAtNzItQ0YgICAoaGV4KQkJRWRnZUNvcmUgTmV0d29ya3MKLTcwNzJDRiAgICAgKGJhc2UgMTYpCQlFZGdlQ29yZSBOZXR3b3JrcwotCQkJCTIwIE1hc29uCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC03Ni1GMCAgIChoZXgpCQlMZXZlbE9uZSBDb21tdW5pY2F0aW9ucyAoSW5kaWEpIFByaXZhdGUgTGltaXRlZAotNzA3NkYwICAgICAoYmFzZSAxNikJCUxldmVsT25lIENvbW11bmljYXRpb25zIChJbmRpYSkgUHJpdmF0ZSBMaW1pdGVkCi0JCQkJMkYsIExhbmUgMSwgNDUgQmhhcmF0IE5hZ2FyCi0JCQkJTmV3IEZyaWVuZHMgQ29sb255Ci0JCQkJTmV3IERlbGhpIERFTEhJIDExMDAyNQotCQkJCUlORElBCi0KLTcwLTdFLTQzICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi03MDdFNDMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC03RS1ERSAgIChoZXgpCQlOQVNURUMgTFRELgotNzA3RURFICAgICAoYmFzZSAxNikJCU5BU1RFQyBMVEQuCi0JCQkJMTExLUQsIEtyYXNub3JlY2hlbnNrYXlhIHN0ci4KLQkJCQlLaGFiYXJvdnNrICA2ODAwMDYKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotNzAtODItOEUgICAoaGV4KQkJT2xldW1UZWNoIENvcnBvcmF0aW9uCi03MDgyOEUgICAgIChiYXNlIDE2KQkJT2xldW1UZWNoIENvcnBvcmF0aW9uCi0JCQkJMjMgSHViYmxlCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC04Qi03OCAgIChoZXgpCQljaXR5Z3JvdyB0ZWNobm9sb2d5IGNvLiwgbHRkCi03MDhCNzggICAgIChiYXNlIDE2KQkJY2l0eWdyb3cgdGVjaG5vbG9neSBjby4sIGx0ZAotCQkJCXJtMTQwNCwgYmxrIEEsICw1IC0gMjEgUGFrIFRpbiBQYXIgU3RyZWV0Ci0JCQkJSGktVGVjaCBJbmR1c3RyaWFsIENlbnRyZSwKLQkJCQlUc3VlbiBXYW4gIAotCQkJCUhPTkcgS09ORwotCi03MC1BMS05MSAgIChoZXgpCQlUcmVuZHNldHRlciBNZWRpY2FsLCBMTEMKLTcwQTE5MSAgICAgKGJhc2UgMTYpCQlUcmVuZHNldHRlciBNZWRpY2FsLCBMTEMKLQkJCQkyMDMwIEFyZG1vcmUgQkxWRAotCQkJCVNURSAzODAKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC1BNC0xQyAgIChoZXgpCQlBZHZhbmNlZCBXaXJlbGVzcyBEeW5hbWljcyBTLkwuCi03MEE0MUMgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgV2lyZWxlc3MgRHluYW1pY3MgUy5MLgotCQkJCUNlbnRybyBkZSBFbXByZXNhcyBVUE0gb2ZpY2luYSAzCi0JCQkJQ2FtcHVzIFVQTSBNb250ZWdhbmNlZG8KLQkJCQlQb3p1ZWxvIGRlIEFsYXJjb24gTWFkcmlkIDI4MjIzCi0JCQkJU1BBSU4KLQotNzAtQjAtMzUgICAoaGV4KQkJU2hlbnpoZW4gWm93ZWUgVGVjaG5vbG9neSBDby4sIEx0ZAotNzBCMDM1ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFpvd2VlIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlCbG9jayA1LCBTY2llbmNlIGFuZCBUZWNobm9sb2d5IEluZHVzdHJpYWwgCi0JCQkJUGFyayBvZiBQcml2YXRlbHkgT3duZWQgRW50ZXJwcmlzZXMsIFBpbmdzaGFuLCBYaWxpLCBOYW5zaGFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NQotCQkJCUNISU5BCi0KLTcwLUIwLThDICAgKGhleCkJCVNoZW5vdSBDb21tdW5pY2F0aW9uIEVxdWlwbWVudCBDby4sTHRkCi03MEIwOEMgICAgIChiYXNlIDE2KQkJU2hlbm91IENvbW11bmljYXRpb24gRXF1aXBtZW50IENvLixMdGQKLQkJCQlOby4xMTggTWlkZGxlIEp1Z3VhbmcgUm9hZCwgSGlnaCAmYW1wOyBOZXcgSW5kdXN0cmlhbCBab25lCi0JCQkJV2VuemhvdSBaaGVqaWFuZyAzMjUwMjkKLQkJCQlDSElOQQotCi03MC1CMi02NSAgIChoZXgpCQlIaWx0cm9uIHMuci5sLgotNzBCMjY1ICAgICAoYmFzZSAxNikJCUhpbHRyb24gcy5yLmwuCi0JCQkJU3RyYWRhIFByb3ZpbmNpYWxlIGRpIENhc2VydGEsIDIxOAotCQkJCU5hcGxlcyAgODAxNDQKLQkJCQlJVEFMWQotCi03MC1COS0yMSAgIChoZXgpCQlGaWJlckhvbWUgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENPLixMVEQKLTcwQjkyMSAgICAgKGJhc2UgMTYpCQlGaWJlckhvbWUgVGVsZWNvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENPLixMVEQKLQkJCQlOby41IERvbmd4aW4gUm9hZCxIb25nc2hhbiBEaXN0cmljdAotCQkJCVd1aGFuIEh1YmVpIDQzMDA3NAotCQkJCUNISU5BCi0KLTcwLUNELTYwICAgKGhleCkJCUFwcGxlIEluYwotNzBDRDYwICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLUQ0LUYyICAgKGhleCkJCVJJTQotNzBENEYyICAgICAoYmFzZSAxNikJCVJJTQotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi03MC1ENS03RSAgIChoZXgpCQlTY2FsYXIgQ29ycG9yYXRpb24KLTcwRDU3RSAgICAgKGJhc2UgMTYpCQlTY2FsYXIgQ29ycG9yYXRpb24KLQkJCQkxRiBTYW4tRWkgQmxkZwotCQkJCTEtMjItMgotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2MC0wMDIzCi0JCQkJSkFQQU4KLQotNzAtRDUtRTcgICAoaGV4KQkJV2VsbGNvcmUgQ29ycG9yYXRpb24KLTcwRDVFNyAgICAgKGJhc2UgMTYpCQlXZWxsY29yZSBDb3Jwb3JhdGlvbgotCQkJCTI4NzAgWmFua2VyIFJvYWQKLQkJCQlTdWl0ZSAxMzAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtRDgtODAgICAoaGV4KQkJVXBvcyBTeXN0ZW0gc3AuIHogby5vLgotNzBEODgwICAgICAoYmFzZSAxNikJCVVwb3MgU3lzdGVtIHNwLiB6IG8uby4KLQkJCQlTaWVua2lld2ljemEgMTMKLQkJCQlLbnVyb3cgU2xhc2tpZSA0NC0xOTAKLQkJCQlQT0xBTkQKLQotNzAtREQtQTEgICAoaGV4KQkJVGVsbGFicwotNzBEREExICAgICAoYmFzZSAxNikJCVRlbGxhYnMKLQkJCQlPbmUgVGVsbGFicyBDZW50ZXIKLQkJCQkxNDE1IFdlc3QgRGllaGwgUm9hZAotCQkJCU5hcGVydmlsbGUgSWxsaW5vaXMgNjA1NjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLUUxLTM5ICAgKGhleCkJCTN2aWV3IEx0ZAotNzBFMTM5ICAgICAoYmFzZSAxNikJCTN2aWV3IEx0ZAotCQkJCTE2OC0xNzIgT2xkIFN0cmVldAotCQkJCUxvbmRvbiAgRUMxViA5QlAKLQkJCQlVTklURUQgS0lOR0RPTQotCi03MC1FOC00MyAgIChoZXgpCQlCZWlqaW5nIEMmVyBPcHRpY2FsIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sTHRkLgotNzBFODQzICAgICAoYmFzZSAxNikJCUJlaWppbmcgQyZXIE9wdGljYWwgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJMi9GIFl1ZmEgUGxhemEsIE5vLjE5IFhpYW95aW5nIEJlaWx1LCBDaGFveWFuZyBEaXN0cmljdCwgCi0JCQkJQmVpamluZyAgMTAwMTAxCi0JCQkJQ0hJTkEKLQotNzAtRjEtQTEgICAoaGV4KQkJTGl0ZW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTcwRjFBMSAgICAgKGJhc2UgMTYpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLDkwLENoaWVuIDEgUm9hZCxDaHVuZ0hvLFRhaXBlaSBIc2llbgotCQkJCVRhaXBlaSAgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTcwLUYzLTk1ICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotNzBGMzk1ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTEFORSAzNTEsIFNFQy4xLFRBSVBJTkcgUkQuCi0JCQkJVFNBT1RVRU4KLQkJCQlOQU5UT1UgNTQyNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTc0LTBBLUJDICAgKGhleCkJCUpTSlMgRGVzaWducyAoRXVyb3BlKSBMaW1pdGVkCi03NDBBQkMgICAgIChiYXNlIDE2KQkJSlNKUyBEZXNpZ25zIChFdXJvcGUpIExpbWl0ZWQKLQkJCQlFemVraWVsIEhvdXNlCi0JCQkJRXpla2llbCBMYW5lCi0JCQkJV2lsbGVuaGFsbCBXZXN0IE1pZGxhbmRzIFdWMTIgNVFVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNzQtMTUtRTIgICAoaGV4KQkJVHJpLVNlbiBTeXN0ZW1zIENvcnBvcmF0aW9uCi03NDE1RTIgICAgIChiYXNlIDE2KQkJVHJpLVNlbiBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJMTc2MjUgRWwgQ2FtaW5vIFJlYWwgU3VpdGUgMjAwCi0JCQkJSG91c3RvbiBUWCA3NzA1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtMkYtNjggICAoaGV4KQkJQXp1cmV3YXZlIFRlY2hub2xvZ2llcywgSW5jLgotNzQyRjY4ICAgICAoYmFzZSAxNikJCUF6dXJld2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4Ri4sIEJhb3pob25nIFJkLgotCQkJCVhpbmRpYW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNzQtMzItNTYgICAoaGV4KQkJTlQtd2FyZSBTeXN0ZW1wcmcgR21iSAotNzQzMjU2ICAgICAoYmFzZSAxNikJCU5ULXdhcmUgU3lzdGVtcHJnIEdtYkgKLQkJCQlOaWVkZXJzYWNoc2Vuc3RyYXNzZSA2Ci0JCQkJQmFkIElidXJnIE5EUyA0OTE4NgotCQkJCUdFUk1BTlkKLQotNzQtMzgtODkgICAoaGV4KQkJQU5OQVggQW56ZWlnZXN5c3RlbWUgR21iSAotNzQzODg5ICAgICAoYmFzZSAxNikJCUFOTkFYIEFuemVpZ2VzeXN0ZW1lIEdtYkgKLQkJCQlXZXR0ZXJzdGVpbnN0cmFzc2UgMTgKLQkJCQlUYXVma2lyY2hlbiBCYXZhcmlhIDgyMDI0Ci0JCQkJR0VSTUFOWQotCi03NC01Ni0xMiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotNzQ1NjEyICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtNUUtMUMgICAoaGV4KQkJUElPTkVFUiBDT1JQT1JBVElPTgotNzQ1RTFDICAgICAoYmFzZSAxNikJCVBJT05FRVIgQ09SUE9SQVRJT04KLQkJCQkxLTEgU2hpbi1vZ3VyYQotCQkJCVNhaXdhaS1rdQotCQkJCUthd2FzYWtpLXNoaSBLYW5hZ2F3YSBQcmVmZWN0dXJlIDIxMjAwMzEKLQkJCQlKQVBBTgotCi03NC02NS1EMSAgIChoZXgpCQlBdGxpbmtzCi03NDY1RDEgICAgIChiYXNlIDE2KQkJQXRsaW5rcwotCQkJCTMwIEF2ZW51ZSBHZXJvZ2UgVgotCQkJCVBhcmlzICA3NTAwOAotCQkJCUZSQU5DRQotCi03NC02Qi04MiAgIChoZXgpCQlNT1ZFSyAKLTc0NkI4MiAgICAgKGJhc2UgMTYpCQlNT1ZFSyAKLQkJCQk2NTE3IE5hdmFobyBUcmFpbAotCQkJCUVkaW5hIE1pbm5lc290YSA1NTQzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtNzItRjIgICAoaGV4KQkJQ2hpcHNpcCBUZWNobm9sb2d5IENvLiwgTHRkLgotNzQ3MkYyICAgICAoYmFzZSAxNikJCUNoaXBzaXAgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk4Ri0xLCBOby4xODYsIEppYW4tWWkgUm9hZCwgQ2h1bmdIbyBDaXR5LAotCQkJCVRhaXBlaSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03NC03OC0xOCAgIChoZXgpCQlTZXJ2aWNlQXNzdXJlCi03NDc4MTggICAgIChiYXNlIDE2KQkJU2VydmljZUFzc3VyZQotCQkJCUdyb3VuZCBGbG9vciwgQmxvY2sgUCwgQ3J5c3RhbCBQYXJrIE9uZQotCQkJCTI0OSBCYXNkZW4gQXZlbnVlLCBMeXR0ZWx0b24KLQkJCQlDZW50dXJpb24gVHNod2FuZSAwMTU3Ci0JCQkJU09VVEggQUZSSUNBCi0KLTc0LTdELUI2ICAgKGhleCkJCUFsaXdlaSBDb21tdW5pY2F0aW9ucywgSW5jCi03NDdEQjYgICAgIChiYXNlIDE2KQkJQWxpd2VpIENvbW11bmljYXRpb25zLCBJbmMKLQkJCQlLZWppIDYgUm9hZCAsIEhpLXRlY2ggSW5kdXN0cmlhbCBQYXJrICAKLQkJCQlOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTc0LTdFLTFBICAgKGhleCkJCVJlZCBFbWJlZGRlZCBEZXNpZ24gTGltaXRlZAotNzQ3RTFBICAgICAoYmFzZSAxNikJCVJlZCBFbWJlZGRlZCBEZXNpZ24gTGltaXRlZAotCQkJCVZlbG9jaXR5Ci0JCQkJQW5nZWwgV2F5Ci0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQ3IDFCWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTc0LThFLUY4ICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotNzQ4RUY4ICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTE3NDUgVGVjaG5vbG9neSBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC05MC01MCAgIChoZXgpCQlSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCi03NDkwNTAgICAgIChiYXNlIDE2KQkJUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgotCQkJCTE3NTMsIFNoaW1vbnVtYWJlLCBOYWthaGFyYS1LdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMS04NjY4Ci0JCQkJSkFQQU4KLQotNzQtOTEtMUEgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi03NDkxMUEgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtQTQtQTcgICAoaGV4KQkJUVJTIE11c2ljIFRlY2hub2xvZ2llcywgSW5jLgotNzRBNEE3ICAgICAoYmFzZSAxNikJCVFSUyBNdXNpYyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyNjkgUXVha2VyIERyaXZlCi0JCQkJU2VuZWNhIFBBIDE2MzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC1BNy0yMiAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotNzRBNzIyICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAzLTM5ICwgS2FzYW4tZG9uZywgR3VtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03NC1CMC0wQyAgIChoZXgpCQlOZXR3b3JrIFZpZGVvIFRlY2hub2xvZ2llcywgSW5jCi03NEIwMEMgICAgIChiYXNlIDE2KQkJTmV0d29yayBWaWRlbyBUZWNobm9sb2dpZXMsIEluYwotCQkJCTQwMDUgQm9oYW5ub24gRHJpdmUKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC1COS1FQiAgIChoZXgpCQlGdWppYW4gR29sZGNhdCBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTc0QjlFQiAgICAgKGJhc2UgMTYpCQlGdWppYW4gR29sZGNhdCBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlSb29tIDUwNiBZb25nSGVuZyBCdWlsZGluZyBOTy41OCBKaWFuZ0JpbmcgUmFvZAotCQkJCUZ1WmhvdSBGdUppYW4gMzUwMDA1Ci0JCQkJQ0hJTkEKLQotNzQtQkUtMDggICAoaGV4KQkJUFJJVkFURQotNzRCRTA4ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi03NC1DRC0wQyAgIChoZXgpCQlTbWl0aCBNeWVycyBDb21tdW5pY2F0aW9ucyBMdGQuCi03NENEMEMgICAgIChiYXNlIDE2KQkJU21pdGggTXllcnMgQ29tbXVuaWNhdGlvbnMgTHRkLgotCQkJCVRoZSBPbWVnYSBDZW50cmUKLQkJCQlTdHJhdHRvbiBCdXNpbmVzcyBQYXJrCi0JCQkJQmlnZ2xlc3dhZGUgQkVEUyBTRzE4IDhRQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTc0LUNFLTU2ICAgKGhleCkJCVBhY2tldCBGb3JjZSBUZWNobm9sb2d5IExpbWl0ZWQgQ29tcGFueQotNzRDRTU2ICAgICAoYmFzZSAxNikJCVBhY2tldCBGb3JjZSBUZWNobm9sb2d5IExpbWl0ZWQgQ29tcGFueQotCQkJCSAyRi4sIE5vLjI1LCBTZWMuIDEsIFNodWFuZ3NoaSBSZC4sIENlbnRyYWwgRGlzdC4sIAotCQkJCVRhaWNodW5nICA0MDA0NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNzQtRDAtREMgICAoaGV4KQkJRVJJQ1NTT04gQUIKLTc0RDBEQyAgICAgKGJhc2UgMTYpCQlFUklDU1NPTiBBQgotCQkJCVRvcnNoYW1uc2dhdGFuIDM2Ci0JCQkJU1RPQ0tIT0xNICAxNjQgODMgCi0JCQkJU1dFREVOCi0KLTc0LUQ2LTc1ICAgKGhleCkJCVdZTUEgVGVjbm9sb2dpYQotNzRENjc1ICAgICAoYmFzZSAxNikJCVdZTUEgVGVjbm9sb2dpYQotCQkJCVJ1YSBDbO+/vW1hY28gQmFyYm9zYSwgMTcxLTE3OQotCQkJCUNhbWJ1Y2kKLQkJCQlT77+9byBQYXVsbyAgMDE1MjMtMDAwCi0JCQkJQlJBWklMCi0KLTc0LUQ4LTUwICAgKGhleCkJCUV2cmlza28gU3lzdGVtcwotNzREODUwICAgICAoYmFzZSAxNikJCUV2cmlza28gU3lzdGVtcwotCQkJCTIzMjIgQWxwaW5lIFJkLCBTdGUgMTAKLQkJCQlFYXUgQ2xhaXJlIFdJIDU0NzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC1FMC02RSAgIChoZXgpCQlFcmdvcGhvbmUgR21iSAotNzRFMDZFICAgICAoYmFzZSAxNikJCUVyZ29waG9uZSBHbWJICi0JCQkJVGVtbWxlcnN0cmFzc2UgNQotCQkJCU1hcmJ1cmcgSGVzc2VuIDM1MDM5Ci0JCQkJR0VSTUFOWQotCi03NC1FNS0wQiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTc0RTUwQiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTc0LUU1LTM3ICAgKGhleCkJCVJBRFNQSU4KLTc0RTUzNyAgICAgKGJhc2UgMTYpCQlSQURTUElOCi0JCQkJU29uZ3BhLWd1IEdhcmFrLWRvbmcgNzgKLQkJCQlJVCBWZW50dXJlIFRvd2VyIFdlc3QgV2luZyAxMnRoIEZsLgotCQkJCVNlb3VsICAxMzgtOTUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTc0LUU3LUM2ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi03NEU3QzYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC1FQS0zQSAgIChoZXgpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotNzRFQTNBICAgICAoYmFzZSAxNikJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJQnVpbGRpbmcgNywgU2Vjb25kIFBhcnQsIEhvbmdodWFsaW5nIEluZHVzdHJpYWwgWm9uZQotCQkJCVhpbGksTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi03NC1GMC02RCAgIChoZXgpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMuCi03NEYwNkQgICAgIChiYXNlIDE2KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCThGLiwgQmFvemhvbmcgUmQuLCAKLQkJCQlYaW5kaWFuIENpdHksIFRhaXBlaSBDb3VudHkuICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTc0LUYwLTdEICAgKGhleCkJCUJuQ09NIENvLixMdGQKLTc0RjA3RCAgICAgKGJhc2UgMTYpCQlCbkNPTSBDby4sTHRkCi0JCQkJUm9vbTEwMDcsIERhZWh5dW4gVGVjaG5vIFdvcmxkLCAxNzQKLQkJCQlPamVvbi1kb25nLCAKLQkJCQlVaXdhbmctc2kgR3llb25nZ2ktZG8gNDM3LTc1MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03NC1GNi0xMiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotNzRGNjEyICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtRjctMjYgICAoaGV4KQkJTmV1cm9uIFJvYm90aWNzCi03NEY3MjYgICAgIChiYXNlIDE2KQkJTmV1cm9uIFJvYm90aWNzCi0JCQkJOTEgUGVhcnNvbiBBdmUKLQkJCQlVbml0IDIKLQkJCQlTb21lcnZpbGxlIE1BIDAyMTQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC0wMi04RiAgIChoZXgpCQlBZGFwdGl2ZSBTcGVjdHJ1bSBhbmQgU2lnbmFsIEFsaWdubWVudCAoQVNTSUEpLCBJbmMuCi03ODAyOEYgICAgIChiYXNlIDE2KQkJQWRhcHRpdmUgU3BlY3RydW0gYW5kIFNpZ25hbCBBbGlnbm1lbnQgKEFTU0lBKSwgSW5jLgotCQkJCTMzMyBUd2luIERvbHBoaW4gRHJpdmUKLQkJCQlSZWR3b29kIENpdHkgQ0EgOTQwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LTExLTg1ICAgKGhleCkJCU5CUyBQYXltZW50IFNvbHV0aW9ucyBJbmMuCi03ODExODUgICAgIChiYXNlIDE2KQkJTkJTIFBheW1lbnQgU29sdXRpb25zIEluYy4KLQkJCQk3MDMgRXZhbnMgQXZlCi0JCQkJU3VpdGUgNDAwCi0JCQkJVG9yb250byBPbnRhcmlvIE05QyA1RTkKLQkJCQlDQU5BREEKLQotNzgtMTItQjggICAoaGV4KQkJT1JBTlRFSyBMSU1JVEVECi03ODEyQjggICAgIChiYXNlIDE2KQkJT1JBTlRFSyBMSU1JVEVECi0JCQkJNS9GLCBCdWlsZGluZyBFLCBEYWthbiBUZWNoIFBhcmssIERha2FuIHZpbGxhZ2UsIFhpbGkgVG93biwgTmFuc2hhbiBEaXN0cmljdCwgU2hlbnpoZW4sIENoaW5hCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTc4LTE5LTJFICAgKGhleCkJCU5BU0NFTlQgVGVjaG5vbG9neQotNzgxOTJFICAgICAoYmFzZSAxNikJCU5BU0NFTlQgVGVjaG5vbG9neQotCQkJCTI3NDQgWW9ya21vbnQgUkQKLQkJCQlDaGFybG90dGUgTkMgMjgyMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LTE5LUY3ICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLTc4MTlGNyAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OSAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LTFELUJBICAgKGhleCkJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotNzgxREJBICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCUhVQVdFSSBJbmR1c3RyaWFsIEJhc2UgQmFudGlhbixMb25nZ2FuZwotCQkJCVNoZW56aGVuIGd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi03OC0xRC1GRCAgIChoZXgpCQlKYWJpbCBJbmMKLTc4MURGRCAgICAgKGJhc2UgMTYpCQlKYWJpbCBJbmMKLQkJCQkxMDUwMCBEci4gTWFydGluIEx1dGhlciBLaW5nIEpyLiBTdC4gTi4KLQkJCQlEb2NrIEMKLQkJCQlTdC4gUGV0ZXJzYnVyZyBGbG9yaWRhIDMzNzE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC0yMi0zRCAgIChoZXgpCQlBZmZpcm1lZCBOZXR3b3JrcwotNzgyMjNEICAgICAoYmFzZSAxNikJCUFmZmlybWVkIE5ldHdvcmtzCi0JCQkJMzUgTmFnb2cgUGFyawotCQkJCUFjdG9uIE1BIDAxNzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC0yNS1BRCAgIChoZXgpCQlTQU1TVU5HIEVMRUNUUk9OSUNTIENPLiwgTFRELgotNzgyNUFEICAgICAoYmFzZSAxNikJCVNBTVNVTkcgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJNDE2LCBNQUVUQU4tM0RPTkcsIFBBTERBTC1HVQotCQkJCVNVV09OIENJVFkgS1lVTkdLSS1ETyA0NDItNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTc4LTJCLUNCICAgKGhleCkJCURlbGwgSW5jCi03ODJCQ0IgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TOlJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LTJFLUVGICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi03ODJFRUYgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSAgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLTc4LTMwLUUxICAgKGhleCkJCVVsdHJhQ2xlbnosIExMQwotNzgzMEUxICAgICAoYmFzZSAxNikJCVVsdHJhQ2xlbnosIExMQwotCQkJCTE0NDAgVyBJbmRpYW50b3duIFJvYWQKLQkJCQlTdWl0ZSAzNTAKLQkJCQlKdXBpdGVyIEZMIDMzNDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC0zRi0xNSAgIChoZXgpCQlFYXN5U1lOQyBMdGQuCi03ODNGMTUgICAgIChiYXNlIDE2KQkJRWFzeVNZTkMgTHRkLgotCQkJCVVuaXQgMSwgMiBTZWF3YXJkIFBsYWNlCi0JCQkJQ2VudHVyaW9uIEJ1c2luZXNzIFBhcmsKLQkJCQlHbGFzZ293IFNjb3RsYW5kIEc0MSAxSEgKLQkJCQlVTklURUQgS0lOR0RPTQotCi03OC00NC03NiAgIChoZXgpCQlaaW9uY29tIHRlY2hub2xvZ3kgY28uLGx0ZAotNzg0NDc2ICAgICAoYmFzZSAxNikJCVppb25jb20gdGVjaG5vbG9neSBjby4sbHRkCi0JCQkJQTEmQTIgYnVpbGRpbmcsbGFudGlhbiB0ZWNobm9sb2d5IHBhcmssIHhpbnl1IHJvYWQsIHhpbmdxaWFvIGhlbmdnYW5nIGJsb2NrLCBzaGFqaW5nIHN0cmVldCwgQmFvYW4gRGlzdHJpY3QKLQkJCQlzaGVuemhlbiBndWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotNzgtNDctMUQgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi03ODQ3MUQgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTc4LTUxLTBDICAgKGhleCkJCUxpdmVVIEx0ZC4KLTc4NTEwQyAgICAgKGJhc2UgMTYpCQlMaXZlVSBMdGQuCi0JCQkJNSBIYWdhdmlzaCBTdC4KLQkJCQlLZmFyLVNhYmEgIDQ0NjQxCi0JCQkJSVNSQUVMCi0KLTc4LTU3LTEyICAgKGhleCkJCU1vYmlsZSBJbnRlZ3JhdGlvbiBXb3JrZ3JvdXAKLTc4NTcxMiAgICAgKGJhc2UgMTYpCQlNb2JpbGUgSW50ZWdyYXRpb24gV29ya2dyb3VwCi0JCQkJNDU4MCBLbGFoYW5pZSBEUiBTRSBTVEUgMTA2Ci0JCQkJSXNzYXF1YWggV0EgOTgwMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LTU5LTNFICAgKGhleCkJCVJBRkkgR21iSCAmIENvLktHCi03ODU5M0UgICAgIChiYXNlIDE2KQkJUkFGSSBHbWJIICYgQ28uS0cKLQkJCQlSYXZlbnNidXJnZXIgU3RyLiAxMjgtMTM0Ci0JCQkJQmVyZyBCYWRlbiBXdXJ0dGVtYmVyZyA4ODI3NgotCQkJCUdFUk1BTlkKLQotNzgtNUMtNzIgICAoaGV4KQkJSGlvc28gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTc4NUM3MiAgICAgKGJhc2UgMTYpCQlIaW9zbyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTZ0aCBGbG9vciwgMTJ0aCBCdWlsZGluZywgV2FuZ3RhbmcgSW5kdXN0cmlhbCBab25lLAotCQkJCVhpbmdhbyBSb2FkLCBYaWxpLCBOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NQotCQkJCUNISU5BCi0KLTc4LTY2LUFFICAgKGhleCkJCVpURUMgSW5zdHJ1bWVudHMsIEluYy4KLTc4NjZBRSAgICAgKGJhc2UgMTYpCQlaVEVDIEluc3RydW1lbnRzLCBJbmMuCi0JCQkJNzcxNSBUaWJ1cm9uIFN0LiBORQotCQkJCUFsYnVxdWVycXVlIE5NIDg3MTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC03Ri02MiAgIChoZXgpCQlHaUsgbWJICi03ODdGNjIgICAgIChiYXNlIDE2KQkJR2lLIG1iSAotCQkJCUdvZXRoZXN0ci4gNQotCQkJCUFhY2hlbiAgNTIwNjQKLQkJCQlHRVJNQU5ZCi0KLTc4LTgxLThGICAgKGhleCkJCVNlcnZlciBSYWNrcyBBdXN0cmFsaWEgUHR5IEx0ZAotNzg4MThGICAgICAoYmFzZSAxNikJCVNlcnZlciBSYWNrcyBBdXN0cmFsaWEgUHR5IEx0ZAotCQkJCTQgLSA2IEVuZHVyYW5jZSBBdmUKLQkJCQlRdWVhbmJleWFuIE5TVyAyNjIwCi0JCQkJQVVTVFJBTElBCi0KLTc4LTg0LTNDICAgKGhleCkJCVNvbnkgQ29ycG9yYXRpb24KLTc4ODQzQyAgICAgKGJhc2UgMTYpCQlTb255IENvcnBvcmF0aW9uCi0JCQkJNS0xLTEyIEtpdGFzaGluYWdhd2EgU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gIDE0MS0wMDAxCi0JCQkJSkFQQU4KLQotNzgtODQtRUUgICAoaGV4KQkJSU5EUkEgRVNQQUNJTyBTLkEuCi03ODg0RUUgICAgIChiYXNlIDE2KQkJSU5EUkEgRVNQQUNJTyBTLkEuCi0JCQkJQy8gUk9DIEJPUk9OQVQsIDEzMwotCQkJCUJBUkNFTE9OQSAgMDgwMTgKLQkJCQlTUEFJTgotCi03OC04OS03MyAgIChoZXgpCQlDTUMKLTc4ODk3MyAgICAgKGJhc2UgMTYpCQlDTUMKLQkJCQlJbmR1c3RyaWVwYXJrIERlIEJydXdhYW4gMzdCCi0JCQkJT3VkZW5hYXJkZSBPb3N0LVZsYWFuZGVyZW4gOTcwMAotCQkJCUJFTEdJVU0KLQotNzgtOEMtNTQgICAoaGV4KQkJRW5rb20gVGVjaG5vbG9naWVzIEx0ZC4KLTc4OEM1NCAgICAgKGJhc2UgMTYpCQlFbmtvbSBUZWNobm9sb2dpZXMgTHRkLgotCQkJCUJhZGVuZXJzdHJhc3NlIDU1MQotCQkJCVrvv71yaWNoIFpIIDgwNDgKLQkJCQlTV0lUWkVSTEFORAotCi03OC05Mi05QyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTc4OTI5QyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTc4LTk5LThGICAgKGhleCkJCU1FRElMSU5FIElUQUxJQSBTUkwKLTc4OTk4RiAgICAgKGJhc2UgMTYpCQlNRURJTElORSBJVEFMSUEgU1JMCi0JCQkJVklBIDggTUFSWk8sIDQKLQkJCQlDT1JURSBURUdHRSBSRUdHSU8gTkVMTCdFTUlMSUEgNDIwMjUKLQkJCQlJVEFMWQotCi03OC1BMC01MSAgIChoZXgpCQlpaU5ldCBMYWJzIFB0eSBMdGQgCi03OEEwNTEgICAgIChiYXNlIDE2KQkJaWlOZXQgTGFicyBQdHkgTHRkIAotCQkJCUxldmVsIDEKLQkJCQk1MDIgSGF5IFN0cmVldAotCQkJCVN1YmlhY28gV0EgNjAwOAotCQkJCUFVU1RSQUxJQQotCi03OC1BMi1BMCAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTc4QTJBMCAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi03OC1BNi04MyAgIChoZXgpCQlQcmVjaWRhdGEKLTc4QTY4MyAgICAgKGJhc2UgMTYpCQlQcmVjaWRhdGEKLQkJCQlDUCA2NzIKLQkJCQlNYWxhZGllcmUgNzEKLQkJCQkyMDAyIE5FIDIwMDIKLQkJCQlTV0lUWkVSTEFORAotCi03OC1BNi1CRCAgIChoZXgpCQlEQUVZRU9OIENvbnRyb2wmSW5zdHJ1bWVudCBDbywuTHRkCi03OEE2QkQgICAgIChiYXNlIDE2KQkJREFFWUVPTiBDb250cm9sJkluc3RydW1lbnQgQ28sLkx0ZAotCQkJCUFDRVRFQ0hOT1RPV0VSIDItMTA4LCAxOTctNywgR3VybzMtRG9uZywgR3Vyby1HdSwgCi0JCQkJU2VvdWwgIDE1Mi03NjYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNzgtQTctMTQgICAoaGV4KQkJQW1waGVub2wKLTc4QTcxNCAgICAgKGJhc2UgMTYpCQlBbXBoZW5vbAotCQkJCTIwIFZhbGxleSBTdC4KLQkJCQlFbmRpY290dCBOZXcgWW9yayAxMzc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtQUMtQzAgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi03OEFDQzAgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1CNi1DMSAgIChoZXgpCQlBT0JPIFRlbGVjb20gQ28uLEx0ZAotNzhCNkMxICAgICAoYmFzZSAxNikJCUFPQk8gVGVsZWNvbSBDby4sTHRkCi0JCQkJUm9vbTE1MDgsSmlhbmdvbmcgQnVpbGRpbmcKLQkJCQlOby4yMCBXZW5zYW4gUm9hZAotCQkJCUhhbmd6aG91IFpoZUppYW5nICAzMTAwMTIKLQkJCQlDSElOQQotCi03OC1COC0xQSAgIChoZXgpCQlJTlRFUiBTQUxFUyBBL1MKLTc4QjgxQSAgICAgKGJhc2UgMTYpCQlJTlRFUiBTQUxFUyBBL1MKLQkJCQlTdGF2bmVhZ2VydmVqIDIyCi0JCQkJRWdhYSBKdXRsYW5kIDgyNTAKLQkJCQlERU5NQVJLCi0KLTc4LUJFLUI2ICAgKGhleCkJCUVuaGFuY2VkIFZpc2lvbgotNzhCRUI2ICAgICAoYmFzZSAxNikJCUVuaGFuY2VkIFZpc2lvbgotCQkJCTU4ODIgTUFDSElORSBEUi4KLQkJCQlIdW50aW5ndG9uIEJlYWNoIENhbGlmb3JuaWEgOTI2NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LUM0LTBFICAgKGhleCkJCUgmRCBXaXJlbGVzcyAKLTc4QzQwRSAgICAgKGJhc2UgMTYpCQlIJkQgV2lyZWxlc3MgCi0JCQkJU2r2duRnZW4gMTcKLQkJCQlTb2xuYSAgMTY5IDU1IAotCQkJCVNXRURFTgotCi03OC1DNi1CQiAgIChoZXgpCQlJbm5vdmFzaWMsIEluYy4KLTc4QzZCQiAgICAgKGJhc2UgMTYpCQlJbm5vdmFzaWMsIEluYy4KLQkJCQkzNzM3IFByaW5jZXRvbiBEci4gTkUsIFN1aXRlIDEzMAotCQkJCUFsYnVxdWVycXVlIE5NIDg0MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1DQS0wNCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotNzhDQTA0ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi03OC1DQS0zOSAgIChoZXgpCQlBcHBsZQotNzhDQTM5ICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1DRC04RSAgIChoZXgpCQlTTUMgTmV0d29ya3MgSW5jCi03OENEOEUgICAgIChiYXNlIDE2KQkJU01DIE5ldHdvcmtzIEluYwotCQkJCTIwIE1hc29uCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1EMC0wNCAgIChoZXgpCQlOZW91c3lzIFRlY2hub2xvZ3kgSW5jLgotNzhEMDA0ICAgICAoYmFzZSAxNikJCU5lb3VzeXMgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTNGLi0xLCBOTy4xLCBCQU9TSEVORyBSRC4sIAotCQkJCVlPTkdIRSBDSVRZIFRBSVBFSSBDT1VOVFkgIDIzNDQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03OC1ENi1GMCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm8gTWVjaGFuaWNzCi03OEQ2RjAgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvIE1lY2hhbmljcwotCQkJCU1ldGFuIERvbmcgMzE0LCBZb3VuZ3RvbmcgR3UKLQkJCQlTdXdvbiBLeXVuZy1naSBEby4gNDQzLTc0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03OC1ERC0wOCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotNzhERDA4ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotNzgtREUtRTQgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTc4REVFNCAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtRTMtQjUgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi03OEUzQjUgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1FNC0wMCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotNzhFNDAwICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLTc4LUU3LUQxICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotNzhFN0QxICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1FQy0yMiAgIChoZXgpCQlTaGFuZ2hhaSBRaWh1aSBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLCBMVEQKLTc4RUMyMiAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBRaWh1aSBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLCBMVEQKLQkJCQlSb29tIDUwMSwgTm8gMiBCb1l1biBSZCwgUHVEb25nIE5ldyBBcmVhLCAKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotNzgtRUYtNEMgICAoaGV4KQkJVW5ldGNvbnZlcmdlbmNlIENvLiwgTHRkLgotNzhFRjRDICAgICAoYmFzZSAxNikJCVVuZXRjb252ZXJnZW5jZSBDby4sIEx0ZC4KLQkJCQkxMDEtNTExLCBEaWdpdGFsIEVtcGlyZTIsIDQ4NiwgU2hpbi1kb25nLCBZb3VuZ3RvbmctZ3UKLQkJCQlTdXdvbiBLeW9uZ2dpLWRvIDQ0My0zOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotN0MtMDMtNEMgICAoaGV4KQkJU0FHRU1DT00KLTdDMDM0QyAgICAgKGJhc2UgMTYpCQlTQUdFTUNPTQotCQkJCTI1MCByb3V0ZSBkZSBsJ0VtcGVyZXVyCi0JCQkJUlVFSUwgTUFMTUFJU09OIElsZSBkZSBGcmFuY2UgOTI4NDgKLQkJCQlGUkFOQ0UKLQotN0MtMDUtMUUgICAoaGV4KQkJUkFGQUVMIExURC4KLTdDMDUxRSAgICAgKGJhc2UgMTYpCQlSQUZBRUwgTFRELgotCQkJCUdVU0ggU0VHRVYgUE9CIDIyNTAKLQkJCQlIQUlGQSAgMzEwMDgKLQkJCQlJU1JBRUwKLQotN0MtMDgtRDkgICAoaGV4KQkJU2hhbmdoYWkgRW5naW5lZXJpbmcgUmVzZWFyY2ggQ2VudGVyIGZvciBCcm9hZGJhbmQgVGVjaG5vbG9naWVzIGFuZCBBcHBsaWNhdGlvbnMKLTdDMDhEOSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBFbmdpbmVlcmluZyBSZXNlYXJjaCBDZW50ZXIgZm9yIEJyb2FkYmFuZCBUZWNobm9sb2dpZXMgYW5kIEFwcGxpY2F0aW9ucwotCQkJCTE1MCBIb25nZ3UgUm9hZAotCQkJCUNoYW5nbmluZyBEaXN0cmljdAotCQkJCVNoYW5naGFpICAyMDAzMzYKLQkJCQlDSElOQQotCi03Qy0xNC03NiAgIChoZXgpCQlEYW1hbGwgVGVjaG5vbG9naWVzIFMuQS5TLiBEaSBMdWRvdmljIEFuc2VsbWUgR2xhZ2xhbm9uICYgQy4KLTdDMTQ3NiAgICAgKGJhc2UgMTYpCQlEYW1hbGwgVGVjaG5vbG9naWVzIFMuQS5TLiBEaSBMdWRvdmljIEFuc2VsbWUgR2xhZ2xhbm9uICYgQy4KLQkJCQlDb3JzbyBkZWxsYSBSZXB1YmJsaWNhIDY1Ci0JCQkJRmFicmlhbm8gQW5jb25hIDYwMDQ0Ci0JCQkJSVRBTFkKLQotN0MtMUUtQjMgICAoaGV4KQkJMk4gVEVMRUtPTVVOSUtBQ0UgYS5zLgotN0MxRUIzICAgICAoYmFzZSAxNikJCTJOIFRFTEVLT01VTklLQUNFIGEucy4KLQkJCQlNb2RyYW5za2EgNjIxCi0JCQkJUHJhZ3VlIEN6ZWNoIFJlcHVibGljIDE0MzAxCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotN0MtMjAtNjQgICAoaGV4KQkJQWxjYXRlbCBMdWNlbnQgSVBECi03QzIwNjQgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQgSVBECi0JCQkJNjAwIE1hcmNoIERyaXZlCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLMkU2Ci0JCQkJQ0FOQURBCi0KLTdDLTJDLUYzICAgKGhleCkJCVNlY3VyZSBFbGVjdHJhbnMgTHRkCi03QzJDRjMgICAgIChiYXNlIDE2KQkJU2VjdXJlIEVsZWN0cmFucyBMdGQKLQkJCQlUaGUgRW5lcmd5IElubm92YXRpb24gQ2VudHJlCi0JCQkJQ2FwZW5odXJzdAotCQkJCUNoZXN0ZXIgIENIMSA2RVMKLQkJCQlVTklURUQgS0lOR0RPTQotCi03Qy0yRS0wRCAgIChoZXgpCQlCbGFja21hZ2ljIERlc2lnbgotN0MyRTBEICAgICAoYmFzZSAxNikJCUJsYWNrbWFnaWMgRGVzaWduCi0JCQkJMTEgR2F0ZXdheSBDb3VydAotCQkJCVBvcnQgTWVsYm91cm5lCi0JCQkJTWVsYm91cm5lIFZpY3RvcmlhIDMyMDcKLQkJCQlBVVNUUkFMSUEKLQotN0MtMkYtODAgICAoaGV4KQkJR2lnYXNldCBDb21tdW5pY2F0aW9ucyBHbWJICi03QzJGODAgICAgIChiYXNlIDE2KQkJR2lnYXNldCBDb21tdW5pY2F0aW9ucyBHbWJICi0JCQkJU0NNIFBFIDIKLQkJCQlGcmFua2Vuc3RyYXNzZSAyCi0JCQkJQm9jaG9sdCAgNDYzOTUKLQkJCQlHRVJNQU5ZCi0KLTdDLTM5LTIwICAgKGhleCkJCVNTT01BIFNFQ1VSSVRZCi03QzM5MjAgICAgIChiYXNlIDE2KQkJU1NPTUEgU0VDVVJJVFkKLQkJCQlVbml0IDcwMywgRGFlcnl1bmcgVGVjaG5vdG93biAxM3RoLCAKLQkJCQk2NjQsIEdhc2FuZG9uZywgCi0JCQkJR2V1bWNoZW9uZ3UgU2VvdWwgMTUzNzU0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTdDLTNCLUQ1ICAgKGhleCkJCUltYWdvIEdyb3VwCi03QzNCRDUgICAgIChiYXNlIDE2KQkJSW1hZ28gR3JvdXAKLQkJCQlSYW1vbiBNYXJ0aSBBbHNpbmEgMi00LTYKLQkJCQlCYWRhbG9uYSBCYXJjZWxvbmEgMDg5MTEKLQkJCQlTUEFJTgotCi03Qy0zRS05RCAgIChoZXgpCQlQQVRFQ0gKLTdDM0U5RCAgICAgKGJhc2UgMTYpCQlQQVRFQ0gKLQkJCQkjMjMtMTcuIFdvbmh5b1JvLTJHYQotCQkJCVlvbmdTYW4tR3UgU2VvdWwgMTQwMTEyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTdDLTRBLTgyICAgKGhleCkJCVBvcnRzbWl0aCBMTEMKLTdDNEE4MiAgICAgKGJhc2UgMTYpCQlQb3J0c21pdGggTExDCi0JCQkJODUwIEUuIEZyYW5rbGluIFJvYWQKLQkJCQlTdWl0ZSA0MDEKLQkJCQlNZXJpZGlhbiBJRCA4MzY0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtNEEtQTggICAoaGV4KQkJTWluZFRyZWUgV2lyZWxlc3MgUFZUIEx0ZAotN0M0QUE4ICAgICAoYmFzZSAxNikJCU1pbmRUcmVlIFdpcmVsZXNzIFBWVCBMdGQKLQkJCQlMR0YsIFBoYXNlIElJSSwgTWluZHRyZWUgV2VzdCBDYW1wdXMsIAotCQkJCUdsb2JhbCBWaWxsYWdlIENhbXB1cywgUlZDRSBQb3N0LCBNeWxhc2FuZHJhIFZpbGxhZ2UsIG9mZiBNeXNvcmUgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwIDA1OQotCQkJCUlORElBCi0KLTdDLTRGLUI1ICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTdDNEZCNSAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOTy45LCBQYXJrIEF2ZW51ZSBJSSwKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyaywKLQkJCQlIc2luY2h1ICwgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotN0MtNTUtRTcgICAoaGV4KQkJWVNJLCBJbmMuCi03QzU1RTcgICAgIChiYXNlIDE2KQkJWVNJLCBJbmMuCi0JCQkJMTcyNSBCcmFubnVtIExhbmUKLQkJCQlZZWxsb3cgU3ByaW5ncyBPaGlvIDQ1Mzg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy02MS05MyAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLTdDNjE5MyAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4gMjMsIFhpbmdodWEgUmQuLCAKLQkJCQlUYW95dWFuIENpdHkKLQkJCQlUYW95dWFuIENvdW50eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03Qy02QS1EQiAgIChoZXgpCQlTYWZlVG9uZSBUZWNobm9sb2d5IENvLixMdGQKLTdDNkFEQiAgICAgKGJhc2UgMTYpCQlTYWZlVG9uZSBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlSb29tIDMyMyxaaHVvdUppIFBsYXphLE5vLjE2IEFuRGUgUm9hZCxFYXN0IERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDAxMQotCQkJCUNISU5BCi0KLTdDLTZDLTM5ICAgKGhleCkJCVBJWFNZUyBTUkwKLTdDNkMzOSAgICAgKGJhc2UgMTYpCQlQSVhTWVMgU1JMCi0JCQkJVklBIERFTExBIENST0NFIFJPU1NBLCAgNDIKLQkJCQlQQURPVkEgUEQgMzUxMjkKLQkJCQlJVEFMWQotCi03Qy02Qy04RiAgIChoZXgpCQlBTVMgTkVWRSBMVEQKLTdDNkM4RiAgICAgKGJhc2UgMTYpCQlBTVMgTkVWRSBMVEQKLQkJCQlCSUxMSU5HVE9OIFJPQUQKLQkJCQlCVVJOTEVZIExBTkNBU0hJUkUgQkIxMSA1VUIKLQkJCQlVTklURUQgS0lOR0RPTQotCi03Qy02RC02MiAgIChoZXgpCQlBcHBsZSwgSW5jCi03QzZENjIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtNkYtMDYgICAoaGV4KQkJQ2F0ZXJwaWxsYXIgVHJpbWJsZSBDb250cm9sIFRlY2hub2xvZ2llcwotN0M2RjA2ICAgICAoYmFzZSAxNikJCUNhdGVycGlsbGFyIFRyaW1ibGUgQ29udHJvbCBUZWNobm9sb2dpZXMKLQkJCQk1NDc1IEtlbGxlbmJ1cmdlciBSZC4KLQkJCQlEYXl0b24gT0ggNDU0MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLTc2LTczICAgKGhleCkJCUVOTUFTIEdtYkgKLTdDNzY3MyAgICAgKGJhc2UgMTYpCQlFTk1BUyBHbWJICi0JCQkJSG9semtvcHBlbHdlZyAyMwotCQkJCUtpZWwgU2NobGVzd2lnLUhvbHN0ZWluIDI0MjUxCi0JCQkJR0VSTUFOWQotCi03Qy03Qi1FNCAgIChoZXgpCQlaJiMzOTtTRURBSSBLRU5LWVVTSE8gQ09SUE9SQVRJT04KLTdDN0JFNCAgICAgKGJhc2UgMTYpCQlaJiMzOTtTRURBSSBLRU5LWVVTSE8gQ09SUE9SQVRJT04KLQkJCQlNZWlrYWkgc2Fubm9taXlhIDJuZCBCbGRnLiAxMXRoL2ZsLgotCQkJCTc2LTIgS3lvbWFjaGkgQ2h1by1rdQotCQkJCUtvYmUgSHlvZ28gNjUwLTAwMzQKLQkJCQlKQVBBTgotCi03Qy03RC00MSAgIChoZXgpCQlKaW5tdXl1IEVsZWN0cm9uaWNzIENvLiwgTHRkLgotN0M3RDQxICAgICAoYmFzZSAxNikJCUppbm11eXUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJUm9vbSAxMzIsIEJ1aWxkaW5nIDE2LCBUaWFucWlhb3dhbgotCQkJCVhpbmh1YSBOb3J0aCBSb2FkLCBUb25nemhvdSBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMTEwMQotCQkJCUNISU5BCi0KLTdDLThFLUU0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi03QzhFRTQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLUEyLTlCICAgKGhleCkJCUQuU2lnblQgR21iSCAmYW1wOyBDby4gS0cKLTdDQTI5QiAgICAgKGJhc2UgMTYpCQlELlNpZ25UIEdtYkggJmFtcDsgQ28uIEtHCi0JCQkJTWFya3RzdHIuIDEwCi0JCQkJS2Vya2VuICA0NzY0NwotCQkJCUdFUk1BTlkKLQotN0MtQjUtNDIgICAoaGV4KQkJQUNFUyBUZWNobm9sb2d5Ci03Q0I1NDIgICAgIChiYXNlIDE2KQkJQUNFUyBUZWNobm9sb2d5Ci0JCQkJIzkyOCwgSHl1bmRhaSBWZW50dXJlIFZpbGxlCi0JCQkJNzEzIFN1c2VvLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTUzOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03Qy1CQi02RiAgIChoZXgpCQlDb3NjbyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTdDQkI2RiAgICAgKGJhc2UgMTYpCQlDb3NjbyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjMTEwMSwgRU5DIERyZWFtIHRvd2VyLCAzMjctMjcKLQkJCQlHYXNhbi1kb25nLCBHZXVtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTc5MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03Qy1DNS0zNyAgIChoZXgpCQlBcHBsZQotN0NDNTM3ICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy1DQi0wRCAgIChoZXgpCQlBYXhlb24gVGVjaG5vbG9naWVzIEluYy4KLTdDQ0IwRCAgICAgKGJhc2UgMTYpCQlBYXhlb24gVGVjaG5vbG9naWVzIEluYy4KLQkJCQk0NDUgQ2Fwcmljb3JuIFN0LgotCQkJCUJyZWEgQ2FsaWZvcm5pYSA5MjgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtQ0YtQ0YgICAoaGV4KQkJU2hhbmdoYWkgU0VBUkkgSW50ZWxsaWdlbnQgU3lzdGVtIENvLiwgTHRkCi03Q0NGQ0YgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgU0VBUkkgSW50ZWxsaWdlbnQgU3lzdGVtIENvLiwgTHRkCi0JCQkJTm8uNTA1IFd1bmluZyBSb2FkLCBQdXR1byBEaXN0cmljdAotCQkJCVNoYW5naGFpICAyMDAwNjMKLQkJCQlDSElOQQotCi03Qy1EQS04NCAgIChoZXgpCQlEb25nbmlhbiBOZXR3b3JrcyBJbmMuCi03Q0RBODQgICAgIChiYXNlIDE2KQkJRG9uZ25pYW4gTmV0d29ya3MgSW5jLgotCQkJCTkwIFdlbnNhbiBSb2FkLCBCdWlsZGluZyA4LUEzMDMKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi03Qy1ERC0yMCAgIChoZXgpCQlJT1hPUyBUZWNobm9sb2dpZXMgUy5BLgotN0NERDIwICAgICAoYmFzZSAxNikJCUlPWE9TIFRlY2hub2xvZ2llcyBTLkEuCi0JCQkJNCBDaGVtaW4gZGUgRm9udGVuYWlsbGVzCi0JCQkJR0xBTkQgVkFVRCBDSC0xMTk2Ci0JCQkJU1dJVFpFUkxBTkQKLQotN0MtREQtOTAgICAoaGV4KQkJU2hlbnpoZW4gT2dlbXJheSBUZWNobm9sb2d5IENvLiwgTHRkLgotN0NERDkwICAgICAoYmFzZSAxNikJCVNoZW56aGVuIE9nZW1yYXkgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzIEZsb29yLCA5IEJ1aWxkaW5nLCBNaW54aW5nIEluZHVzdHJpYWwgWm9uZSwKLQkJCQlNaW5rYW5nIFJvYWQsIE1pbnpoaSBTdHJlZXQsIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMzEKLQkJCQlDSElOQQotCi03Qy1FMC00NCAgIChoZXgpCQlORU9OIEluYwotN0NFMDQ0ICAgICAoYmFzZSAxNikJCU5FT04gSW5jCi0JCQkJNTM0MCBBaXJwb3J0IEJvdWxldmFyZAotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLUVELThEICAgKGhleCkJCU1JQ1JPU09GVAotN0NFRDhEICAgICAoYmFzZSAxNikJCU1JQ1JPU09GVAotCQkJCU9uZSBNaWNyb3NvZnQgV2F5Ci0JCQkJUmVkbW9uZCBXQSA5ODA1Mi02Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy1FRi0xOCAgIChoZXgpCQlDcmVhdGl2ZSBQcm9kdWN0IERlc2lnbiBQdHkuIEx0ZC4KLTdDRUYxOCAgICAgKGJhc2UgMTYpCQlDcmVhdGl2ZSBQcm9kdWN0IERlc2lnbiBQdHkuIEx0ZC4KLQkJCQk4MiBWaWN0b3JpYSBTdHJlZXQKLQkJCQlTYW5kcmluZ2hhbSBWaWN0b3JpYSAzMTkxCi0JCQkJQVVTVFJBTElBCi0KLTdDLUYwLTVGICAgKGhleCkJCUFwcGxlIEluYwotN0NGMDVGICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtRjAtOTggICAoaGV4KQkJQmVlIEJlYW5zIFRlY2hub2xvZ2llcywgSW5jLgotN0NGMDk4ICAgICAoYmFzZSAxNikJCUJlZSBCZWFucyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQlUQ0kgQjUKLQkJCQkyLTYtMSBTZW5nZW4KLQkJCQlUc3VrdWJhIENpdHkgSWJhcmFraSAzMDUtMDA0NwotCQkJCUpBUEFOCi0KLTdDLUYwLUJBICAgKGhleCkJCUxpbmt3ZWxsIFRlbGVzeXN0ZW1zIFB2dCBMdGQKLTdDRjBCQSAgICAgKGJhc2UgMTYpCQlMaW5rd2VsbCBUZWxlc3lzdGVtcyBQdnQgTHRkCi0JCQkJMS0xMS0yNTIvMS9BLCBHb3dyYSBLbGFzc2ljCi0JCQkJQmVndW1wZXQKLQkJCQlIeWRlcmFiYWQgQW5kaHJhIFByYWRlc2ggNTAwMDE2Ci0JCQkJSU5ESUEKLQotN0MtRjQtMjkgICAoaGV4KQkJTlVVTyBJbmMuIAotN0NGNDI5ICAgICAoYmFzZSAxNikJCU5VVU8gSW5jLiAKLQkJCQlDIGJsb2NrLCAxOCBTaWh5dWFuIFN0LiBKaG9uZ2poZW5nIERpc3RyaWN0LCAKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtMDAtMTAgICAoaGV4KQkJQVRUIEJFTEwgTEFCT1JBVE9SSUVTCi04MDAwMTAgICAgIChiYXNlIDE2KQkJQVRUIEJFTEwgTEFCT1JBVE9SSUVTCi0JCQkJMTEwMCBFQVNUIFdBUlJFTlZJTExFIFJPQUQKLQkJCQlOQVBFUlZJTExFIElMIDYwNTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC0xNC00MCAgIChoZXgpCQlTdW5saXQgU3lzdGVtIFRlY2hub2xvZ3kgQ29ycAotODAxNDQwICAgICAoYmFzZSAxNikJCVN1bmxpdCBTeXN0ZW0gVGVjaG5vbG9neSBDb3JwCi0JCQkJOEYsIE5vLjE5LExhbmUgMTIwLCBTZWMxLCBOZWlodSBSZC4KLQkJCQlUYXBpZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtMTctN0QgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi04MDE3N0QgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLTgwLTFGLTAyICAgKGhleCkJCUVkaW1heCBUZWNobm9sb2d5IENvLiBMdGQuCi04MDFGMDIgICAgIChiYXNlIDE2KQkJRWRpbWF4IFRlY2hub2xvZ3kgQ28uIEx0ZC4KLQkJCQlOby4gMywgV3UtQ2h1YW4gM3JkIFJvYWQsIFd1LUt1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlUYWlwZWkgSHNpZW4gIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtMjItNzUgICAoaGV4KQkJQmVpamluZyBCZW55IFdhdmUgVGVjaG5vbG9neSBDbyBMdGQKLTgwMjI3NSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEJlbnkgV2F2ZSBUZWNobm9sb2d5IENvIEx0ZAotCQkJCU5vLjU1LCBKaWFjaHVhbmcgUm9hZAotCQkJCVRhaWh1IFRvd24KLQkJCQlUb25nemhvdSBEaXN0cmljdCBCZWlqaW5nIDEwMTExMQotCQkJCUNISU5BCi0KLTgwLTJELUUxICAgKGhleCkJCVNvbGFyYnJpZGdlIFRlY2hub2xvZ2llcwotODAyREUxICAgICAoYmFzZSAxNikJCVNvbGFyYnJpZGdlIFRlY2hub2xvZ2llcwotCQkJCTkyMjkgV2F0ZXJmb3JkIENlbnRyZSBCbHZkCi0JCQkJQnVpbGRpbmcgQywgU3VpdGUgMTEwCi0JCQkJQXVzdGluIFRYIDc4NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC0yRS0xNCAgIChoZXgpCQlhemV0aSBOZXR3b3JrcyBBRwotODAyRTE0ICAgICAoYmFzZSAxNikJCWF6ZXRpIE5ldHdvcmtzIEFHCi0JCQkJQW0gQnJhbWJ1c2NoIDFhCi0JCQkJTHVlbmVuIE5SVyA0NDUzNgotCQkJCUdFUk1BTlkKLQotODAtMzQtNTcgICAoaGV4KQkJT1QgU3lzdGVtcyBMaW1pdGVkCi04MDM0NTcgICAgIChiYXNlIDE2KQkJT1QgU3lzdGVtcyBMaW1pdGVkCi0JCQkJVW5pdCAxMDIzLCAxMC9GLiwgTGFuZG1hcmsgTm9ydGgsCi0JCQkJU2hldW5nIFNodWksIE4uIFQuICAKLQkJCQlIT05HIEtPTkcKLQotODAtMzgtRkQgICAoaGV4KQkJTGVhcEZyb2cgRW50ZXJwcmlzZXMsIEluYy4KLTgwMzhGRCAgICAgKGJhc2UgMTYpCQlMZWFwRnJvZyBFbnRlcnByaXNlcywgSW5jLgotCQkJCTY0MDEgSG9saXMgU3RyZWV0Ci0JCQkJRW1lcnl2aWxsZSBDQSA5NDUzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtMzktRTUgICAoaGV4KQkJUEFUTElURSBDT1JQT1JBVElPTgotODAzOUU1ICAgICAoYmFzZSAxNikJCVBBVExJVEUgQ09SUE9SQVRJT04KLQkJCQkxOS0yCi0JCQkJVEVDSE5PUEFSSwotCQkJCVNBTkRBIEhZT1VHT0tFTiA2NjktMTMzOQotCQkJCUpBUEFOCi0KLTgwLTNCLTlBICAgKGhleCkJCWdoZS1jZXMgZWxlY3Ryb25pYyBhZwotODAzQjlBICAgICAoYmFzZSAxNikJCWdoZS1jZXMgZWxlY3Ryb25pYyBhZwotCQkJCUhvZW1lbHN0cmFzc2UgMTcKLQkJCQlXYWxkIFpIIDg2MzYKLQkJCQlTV0lUWkVSTEFORAotCi04MC00Ny0zMSAgIChoZXgpCQlQYWNrZXQgRGVzaWduLCBJbmMuCi04MDQ3MzEgICAgIChiYXNlIDE2KQkJUGFja2V0IERlc2lnbiwgSW5jLgotCQkJCTI0NTUgQXVndXN0aW5lIERyaXZlCi0JCQkJU3VpdGUgMTAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLTRGLTU4ICAgKGhleCkJCVRoaW5rRWNvLCBJbmMuCi04MDRGNTggICAgIChiYXNlIDE2KQkJVGhpbmtFY28sIEluYy4KLQkJCQkzMDMgRmlmdGggQXZlbnVlCi0JCQkJMTgwMQotCQkJCU5ldyBZb3JrIE5ZIDEwMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC01MC0xQiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotODA1MDFCICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi04MC01OC1DNSAgIChoZXgpCQlOb3ZhVGVjIEtvbW11bmlrYXRpb25zdGVjaG5payBHbWJICi04MDU4QzUgICAgIChiYXNlIDE2KQkJTm92YVRlYyBLb21tdW5pa2F0aW9uc3RlY2huaWsgR21iSAotCQkJCVRlY2hub2xvZ2llcGFyayA5Ci0JCQkJNHRoIEZsb29yCi0JCQkJUGFkZXJib3JuIE5SVyAzMzEwMAotCQkJCUdFUk1BTlkKLQotODAtNjQtNTkgICAoaGV4KQkJTmltYnVzIEluYy4KLTgwNjQ1OSAgICAgKGJhc2UgMTYpCQlOaW1idXMgSW5jLgotCQkJCTEzNTkgR3dhbnB5ZW9uZy1kb25nLCBZdXNlb25nLWd1Ci0JCQkJU3VpdGUgNjE5IEhhbnNoaW4gUyBtZWNhCi0JCQkJRGFlamVvbiAgMzA1LTUwOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi04MC02NS1FOSAgIChoZXgpCQlCZW5RIENvcnBvcmF0aW9uCi04MDY1RTkgICAgIChiYXNlIDE2KQkJQmVuUSBDb3Jwb3JhdGlvbgotCQkJCTE2IEppaHUgUm9hZCwgTmVpaHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtNjYtMjkgICAoaGV4KQkJUHJlc2NvcGUgVGVjaG5vbG9naWVzIENPLixMVEQuCi04MDY2MjkgICAgIChiYXNlIDE2KQkJUHJlc2NvcGUgVGVjaG5vbG9naWVzIENPLixMVEQuCi0JCQkJMTJGLTEsTm8uMTkyLFNlYyAyLENodW5nIEhzaW4gUm9hZAotCQkJCUhzaW4gVGllbiBDaXR5IFRhaXBlaSBDb3VudHkgMjMxNDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTgwLTZDLUJDICAgKGhleCkJCU5FVCBOZXcgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEdtYkgKLTgwNkNCQyAgICAgKGJhc2UgMTYpCQlORVQgTmV3IEVsZWN0cm9uaWMgVGVjaG5vbG9neSBHbWJICi0JCQkJTGVyY2hlbmJlcmcgNwotCQkJCUZpbm5pbmcgQmF2YXJpYW4gODY5MjMKLQkJCQlHRVJNQU5ZCi0KLTgwLTcxLTFGICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLTgwNzExRiAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZQotCQkJCVN1bm55dmFsZSAgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLTdELTFCICAgKGhleCkJCU5lb3N5c3RlbSBDby4gTHRkLgotODA3RDFCICAgICAoYmFzZSAxNikJCU5lb3N5c3RlbSBDby4gTHRkLgotCQkJCTQtMTktMTIgVGFrYW8KLQkJCQlEYXphaWZ1LXNoaSBGdWt1b2thIDgxOC0wMTIyCi0JCQkJSkFQQU4KLQotODAtODEtQTUgICAoaGV4KQkJVE9OR1FJTkcgQ09NTVVOSUNBVElPTiBFUVVJUE1FTlQgKFNIRU5aSEVOKSBDby4sTHRkCi04MDgxQTUgICAgIChiYXNlIDE2KQkJVE9OR1FJTkcgQ09NTVVOSUNBVElPTiBFUVVJUE1FTlQgKFNIRU5aSEVOKSBDby4sTHRkCi0JCQkJVG9uZ3FpbmcgSW5kdXN0cnkgUGFyayxqaXV3ZWkseGl4aWFuZyBUb3duLEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjYKLQkJCQlDSElOQQotCi04MC05MS0yQSAgIChoZXgpCQlMaWggUm9uZyBlbGVjdHJvbmljIEVudGVycHJpc2UgQ28uLCBMdGQuCi04MDkxMkEgICAgIChiYXNlIDE2KQkJTGloIFJvbmcgZWxlY3Ryb25pYyBFbnRlcnByaXNlIENvLiwgTHRkLgotCQkJCTJGLCBOby4gMiwgTGFuZSAzODcsIEhzaW4gU2h1IFJvYWQKLQkJCQlIc2luIENodWFuZyBUYWlwZWkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04MC05MS1DMCAgIChoZXgpCQlBZ2lsZU1lc2gsIEluYy4KLTgwOTFDMCAgICAgKGJhc2UgMTYpCQlBZ2lsZU1lc2gsIEluYy4KLQkJCQkxNjcxIEludGVybmF0aW9uYWwgUGt3eQotCQkJCVN1aXRlIDExMwotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLTlCLTIwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotODA5QjIwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotODAtQTEtRDcgICAoaGV4KQkJU2hhbmdoYWkgRGFyZUdsb2JhbCBUZWNobm9sb2dpZXMgQ28uLEx0ZCAKLTgwQTFENyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBEYXJlR2xvYmFsIFRlY2hub2xvZ2llcyBDby4sTHRkIAotCQkJCTIyRixJbmZvIFRlY2ggQnVpbGRpbmcsTm8uMTU1NSxLb25namlhbmcgUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDA5MgotCQkJCUNISU5BCi0KLTgwLUIyLTg5ICAgKGhleCkJCUZvcndvcmxkIEVsZWN0cm9uaWNzIEx0ZC4KLTgwQjI4OSAgICAgKGJhc2UgMTYpCQlGb3J3b3JsZCBFbGVjdHJvbmljcyBMdGQuCi0JCQkJTm8uMTYgS2V5dWFuIDJuZCBSZC4sIFNpdHVuIERpc3RyaWN0Ci0JCQkJVGFpY2h1bmcgQ2l0eSAgODg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04MC1CMy0yQSAgIChoZXgpCQlBbHN0b20gR3JpZAotODBCMzJBICAgICAoYmFzZSAxNikJCUFsc3RvbSBHcmlkCi0JCQkJU3QgTGVvbmFyZCdzIEF2ZQotCQkJCVN0YWZmb3JkICBTdGFmZm9yZHNoaXJlIFNUMTcgNExYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotODAtQkEtQUMgICAoaGV4KQkJVGVsZUFkYXB0IEx0ZAotODBCQUFDICAgICAoYmFzZSAxNikJCVRlbGVBZGFwdCBMdGQKLQkJCQlBeGlzIDUKLQkJCQlSaG9kZXMgV2F5Ci0JCQkJV2F0Zm9yZCBIZXJ0Zm9yZHNoaXJlIFdEMjQ0WVcKLQkJCQlVTklURUQgS0lOR0RPTQotCi04MC1DNi0zRiAgIChoZXgpCQlSZW1lYyBCcm9hZGJhbmQgV2lyZWxlc3MgLCBMTEMKLTgwQzYzRiAgICAgKGJhc2UgMTYpCQlSZW1lYyBCcm9hZGJhbmQgV2lyZWxlc3MgLCBMTEMKLQkJCQkxNzAzNCBDYW1pbm8gU2FuIEJlcm5hcmRvCi0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC1DNi1BQiAgIChoZXgpCQlUZWNobmljb2xvciBVU0EgSW5jLgotODBDNkFCICAgICAoYmFzZSAxNikJCVRlY2huaWNvbG9yIFVTQSBJbmMuCi0JCQkJMTAxIFdlc3QgMTAzcmQgU3RyZWV0Ci0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC1DNi1DQSAgIChoZXgpCQlFbmRpYW4gcy5yLmwuCi04MEM2Q0EgICAgIChiYXNlIDE2KQkJRW5kaWFuIHMuci5sLgotCQkJCVBpbGxob2YgNDcKLQkJCQlGcmFuZ2FydG8gQm9semFubyAzOTAxMAotCQkJCUlUQUxZCi0KLTgwLUM4LTYyICAgKGhleCkJCU9wZW5wZWFrLCBJbmMKLTgwQzg2MiAgICAgKGJhc2UgMTYpCQlPcGVucGVhaywgSW5jCi0JCQkJMTc1MCBDbGludCBNb29yZSBSZAotCQkJCUJvY2EgUmF0b24gRmxvcmlkYSAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtRDAtMTkgICAoaGV4KQkJRW1iZWQsIEluYwotODBEMDE5ICAgICAoYmFzZSAxNikJCUVtYmVkLCBJbmMKLQkJCQk0MTAgR3JlYXQgUm9hZAotCQkJCUxpdHRsZXRvbiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtRUUtNzMgICAoaGV4KQkJU2h1dHRsZSBJbmMuCi04MEVFNzMgICAgIChiYXNlIDE2KQkJU2h1dHRsZSBJbmMuCi0JCQkJTm8uIDMwIExhbmUgNzYsIFJlaSBLdWFuZyBSZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04MC1GNS05MyAgIChoZXgpCQlJUkNPIFNpc3RlbWFzIGRlIFRlbGVjb211bmljYWNp77+9biBTLkEuCi04MEY1OTMgICAgIChiYXNlIDE2KQkJSVJDTyBTaXN0ZW1hcyBkZSBUZWxlY29tdW5pY2Fjae+/vW4gUy5BLgotCQkJCVZpYSBTZXJnaWEgOTgKLQkJCQlNYXRhcu+/vSBCYXJjZWxvbmEgMDgzMDIKLQkJCQlTUEFJTgotCi04MC1GQi0wNiAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLTgwRkIwNiAgICAgKGJhc2UgMTYpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLQkJCQlCMS03LEh1YXdlaSBJbmR1c3RyaWFsIEJhc2UsQmFudGlhbixMb25nZ2FuZwotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi04NC0xOC04OCAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi04NDE4ODggICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkgCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04NC0yMS00MSAgIChoZXgpCQlTaGVuemhlbiBHaW53YXZlIFRlY2hub2xvZ2llcyBMdGQuCi04NDIxNDEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gR2lud2F2ZSBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTQvRixSMi1BLEhpZ2gtVGVjaCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotODQtMjctQ0UgICAoaGV4KQkJQ29ycG9yYXRpb24gb2YgdGhlIFByZXNpZGluZyBCaXNob3Agb2YgVGhlIENodXJjaCBvZiBKZXN1cyBDaHJpc3Qgb2YgTGF0dGVyLWRheSBTYWludHMKLTg0MjdDRSAgICAgKGJhc2UgMTYpCQlDb3Jwb3JhdGlvbiBvZiB0aGUgUHJlc2lkaW5nIEJpc2hvcCBvZiBUaGUgQ2h1cmNoIG9mIEplc3VzIENocmlzdCBvZiBMYXR0ZXItZGF5IFNhaW50cwotCQkJCUF1ZGlvdmlzdWFsIEVuZ2luZWVyaW5nIC0gMkxMCi0JCQkJNTAgRWFzdCBOb3J0aCBUZW1wbGUKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDE1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotODQtMjktMTQgICAoaGV4KQkJRU1QT1JJQSBURUxFQ09NIFByb2R1a3Rpb25zLSB1bmQgVmVydHJpZWJzZ2VzbWJIICYgQ28gS0cKLTg0MjkxNCAgICAgKGJhc2UgMTYpCQlFTVBPUklBIFRFTEVDT00gUHJvZHVrdGlvbnMtIHVuZCBWZXJ0cmllYnNnZXNtYkggJiBDbyBLRwotCQkJCUluZHVzdHJpZXplaWxlIDM2LCAKLQkJCQlMaW56ICA0MDIwCi0JCQkJQVVTVFJJQQotCi04NC0yQi0yQiAgIChoZXgpCQlEZWxsIEluYy4KLTg0MkIyQiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04NC00OC0yMyAgIChoZXgpCQlXT1hURVIgVEVDSE5PTE9HWSBDby4gTHRkCi04NDQ4MjMgICAgIChiYXNlIDE2KQkJV09YVEVSIFRFQ0hOT0xPR1kgQ28uIEx0ZAotCQkJCTIzRiBEb3VzaGl5YW5nZ3VhbmcsIENoZWdvbmdtaWFvCi0JCQkJRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gIDUxODA0MAotCQkJCUNISU5BCi0KLTg0LTVELUQ3ICAgKGhleCkJCVNoZW56aGVuIE5ldGNvbSBFbGVjdHJvbmljcyBDby4sTHRkCi04NDVERDcgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gTmV0Y29tIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQk4L0YsMSBCdWlsZGluZyxGaW5hbmNlIEJhc2UsTm8uOCxLZWZhIFJvYWQsSGlnaC1UZWNoIFBhcmsKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotODQtNkUtQjEgICAoaGV4KQkJUGFyayBBc3Npc3QgTExDCi04NDZFQjEgICAgIChiYXNlIDE2KQkJUGFyayBBc3Npc3QgTExDCi0JCQkJMTExIFcyOHRoIFN0cmVldAotCQkJCVN1aXRlIDJCCi0JCQkJTmV3IFlvcmsgTlkgMTAwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg0LTkwLTAwICAgKGhleCkJCUFybm9sZCAmYW1wOyBSaWNodGVyIENpbmUgVGVjaG5pawotODQ5MDAwICAgICAoYmFzZSAxNikJCUFybm9sZCAmYW1wOyBSaWNodGVyIENpbmUgVGVjaG5pawotCQkJCVR1ZXJrZW5zdHJhc3NlIDg5Ci0JCQkJTXVuaWNoIEJhdmFyaWEgODA3OTkKLQkJCQlHRVJNQU5ZCi0KLTg0LTk3LUI4ICAgKGhleCkJCU1lbWpldCBJbmMuCi04NDk3QjggICAgIChiYXNlIDE2KQkJTWVtamV0IEluYy4KLQkJCQkxNTkyMCBCZXJuYXJkbyBDZW50ZXIgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg0LUE4LUU0ICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTg0QThFNCAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotODQtQTktOTEgICAoaGV4KQkJQ3liZXIgVHJhbnMgSmFwYW4gQ28uLEx0ZC4KLTg0QTk5MSAgICAgKGJhc2UgMTYpCQlDeWJlciBUcmFucyBKYXBhbiBDby4sTHRkLgotCQkJCTZGIEJsdWViZWxsIEJsZGcKLQkJCQkyLTE1LTkgTmlzaGktR290YW5hZGEKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMzEKLQkJCQlKQVBBTgotCi04NC1DNy0yNyAgIChoZXgpCQlHbm9kYWwgTHRkCi04NEM3MjcgICAgIChiYXNlIDE2KQkJR25vZGFsIEx0ZAotCQkJCTE3OCAtIDE4MCBIb3R3ZWxsIFJvYWQKLQkJCQlCcmlzdG9sICBCUzggNFJQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotODQtQzctQTkgICAoaGV4KQkJQzNQTyBTLkEuCi04NEM3QTkgICAgIChiYXNlIDE2KQkJQzNQTyBTLkEuCi0JCQkJQWxlamFuZHJvIEdvaWNvZWNoZWEgNiBMb2NhbCA5Ci0JCQkJU2FudCBKdXN0IERlc3Zlcm4gQmFyY2Vsb25hIEVTMDg5NjAKLQkJCQlTUEFJTgotCi04NC1EOS1DOCAgIChoZXgpCQlVbmlwYXR0ZXJuIENvLiwKLTg0RDlDOCAgICAgKGJhc2UgMTYpCQlVbmlwYXR0ZXJuIENvLiwKLQkJCQkxNkYuLCBOby4zMC4sIEJlaXBpbmcgRS4gUmQuLCBaaG9uZ3poZW5nIERpc3QuLAotCQkJCVRhaXBlaSAgMTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04NC1EQi0yRiAgIChoZXgpCQlTaWVycmEgV2lyZWxlc3MgSW5jCi04NERCMkYgICAgIChiYXNlIDE2KQkJU2llcnJhIFdpcmVsZXNzIEluYwotCQkJCTEzODEgV2lyZWxlc3MgV2F5Ci0JCQkJUmljaG1vbmQgQkMgVjZWIDNBNAotCQkJCUNBTkFEQQotCi04NC1ERS0zRCAgIChoZXgpCQlDcnlzdGFsIFZpc2lvbiBMdGQKLTg0REUzRCAgICAgKGJhc2UgMTYpCQlDcnlzdGFsIFZpc2lvbiBMdGQKLQkJCQlMaW9uIFRlY2hub2xvZ3kgcGFyawotCQkJCVN0YXRpb24gUm9hZCBlYXN0Ci0JCQkJV2hpdHRsZXNmb3JkLyBDYW1icmlkZ2UgQ2FtYnMgQ0IyMiA0V0wKLQkJCQlVTklURUQgS0lOR0RPTQotCi04NC1FQS05OSAgIChoZXgpCQlWaWV3b3JrcwotODRFQTk5ICAgICAoYmFzZSAxNikJCVZpZXdvcmtzCi0JCQkJNkYgU3VudGVjaGNpdHkgMiwzMDctMiBTYW5nZGFld29uLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbSAgR3llb25nZ2kgNDYyLTgwNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi04NC1GNi00QyAgIChoZXgpCQlDcm9zcyBQb2ludCBCVgotODRGNjRDICAgICAoYmFzZSAxNikJCUNyb3NzIFBvaW50IEJWCi0JCQkJV2FhbmRlcndlZyAxMgotCQkJCUVtbWVuIERyZW50aGUgNzgxMiBIWgotCQkJCU5FVEhFUkxBTkRTCi0KLTg4LTE4LUFFICAgKGhleCkJCVRhbXJvbiBDby4sIEx0ZAotODgxOEFFICAgICAoYmFzZSAxNikJCVRhbXJvbiBDby4sIEx0ZAotCQkJCTEzODUsSGFzdW51bWEsIE1pbnVtYS1rdQotCQkJCVNhaXRhbWEtc2hpIFNhaXRhbWEgMzM3LTg1NTYKLQkJCQlKQVBBTgotCi04OC0yMS1FMyAgIChoZXgpCQlOZWJ1c2VucywgUy5MLgotODgyMUUzICAgICAoYmFzZSAxNikJCU5lYnVzZW5zLCBTLkwuCi0JCQkJQy8gQWRhamEgUy9OLCBFZGlmaWNpbyBNMgotCQkJCVBhcnF1ZSBjaWVudGlmaWNvIGRlIGxhIFVTQUwKLQkJCQlWaWxsYW1heW9yIGRlIGxhIEFybXXvv71hIFNhbGFtYW5jYSAzNzE4NQotCQkJCVNQQUlOCi0KLTg4LTI1LTJDICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTg4MjUyQyAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOTy45LCBQYXJrIEF2ZW51ZSBJSSAsCi0JCQkJSHNpbmNodSBTY2llbmNlIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTg4LTQxLUMxICAgKGhleCkJCU9SQklTQVQgREEgQU1BWk9OSUEgSU5EIEUgQUVST0wgU0EKLTg4NDFDMSAgICAgKGJhc2UgMTYpCQlPUkJJU0FUIERBIEFNQVpPTklBIElORCBFIEFFUk9MIFNBCi0JCQkJQVYgU0hJU0hJTUEgSElGVU1JLCAyOTExCi0JCQkJVVJCQU5PVkEKLQkJCQlTQU8gSk9TRSBET1MgQ0FNUE9TIFNBTyBQQVVMTyAxMjI0NC0wMDAKLQkJCQlCUkFaSUwKLQotODgtNDMtRTEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotODg0M0UxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotODgtNEItMzkgICAoaGV4KQkJU2llbWVucyBBRywgSGVhbHRoY2FyZSBTZWN0b3IKLTg4NEIzOSAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHLCBIZWFsdGhjYXJlIFNlY3RvcgotCQkJCUhlbmtlc3RyYXNzZSAxMjcKLQkJCQlFcmxhbmdlbiBCYXZhcmlhIDkxMDUyCi0JCQkJR0VSTUFOWQotCi04OC01My0yRSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTg4NTMyRSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTg4LTUzLUQ0ICAgKGhleCkJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLTg4NTNENCAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi04OC04Ni1BMCAgIChoZXgpCQlTaW10b24gVGVjaG5vbG9naWVzLCBMdGQuCi04ODg2QTAgICAgIChiYXNlIDE2KQkJU2ltdG9uIFRlY2hub2xvZ2llcywgTHRkLgotCQkJCTIgVGFpc2hhbiBSb2FkLCBCdWlsZGluZyBDLCAzcmQgRmxvb3IKLQkJCQlXdXhpLCAgUHJvdmluY2Ugb2YgSmlhbmdzdSwgIDIxNDAyOAotCQkJCUNISU5BCi0KLTg4LTg3LTE3ICAgKGhleCkJCUNBTk9OIElOQy4KLTg4ODcxNyAgICAgKGJhc2UgMTYpCQlDQU5PTiBJTkMuCi0JCQkJMy0zMC0yLFNoaW1vbWFydWtvIE9odGEtS3UKLQkJCQlUb2t5byAgMTQ2LTg1MDEKLQkJCQlKQVBBTgotCi04OC04Qi01RCAgIChoZXgpCQlTdG9yYWdlIEFwcGxpYW5jZSBDb3Jwb3JhdGlvbiAKLTg4OEI1RCAgICAgKGJhc2UgMTYpCQlTdG9yYWdlIEFwcGxpYW5jZSBDb3Jwb3JhdGlvbiAKLQkJCQkyOSBTdSBaaG91IEppZSwgSGFpZGlhbiBEaXN0LgotCQkJCVN1aXRlIDYwMS02MDMKLQkJCQlCZWlqaW5nICAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotODgtOEMtMTkgICAoaGV4KQkJQnJhZHkgQ29ycCBBc2lhIFBhY2lmaWMgTHRkCi04ODhDMTkgICAgIChiYXNlIDE2KQkJQnJhZHkgQ29ycCBBc2lhIFBhY2lmaWMgTHRkCi0JCQkJMSwgS2FraSBCdWtpdCBDcmVzY2VudAotCQkJCTQxNjIzNgotCQkJCVNJTkdBUE9SRQotCi04OC05MS1ERCAgIChoZXgpCQlSYWNrdGl2aXR5Ci04ODkxREQgICAgIChiYXNlIDE2KQkJUmFja3Rpdml0eQotCQkJCUhlcnRzdG9rd2VnIDUKLQkJCQlUZXJuYXQgRmxhbmRlcnMgMTc0MQotCQkJCUJFTEdJVU0KLQotODgtOTQtRjkgICAoaGV4KQkJR2VtaWNvbSBUZWNobm9sb2d5LCBJbmMuCi04ODk0RjkgICAgIChiYXNlIDE2KQkJR2VtaWNvbSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTZGLCBCdWlsZGluZyBCLCBOby4gOTgsIFNlYyAxLCBIc2luLVRhaS1XdSBSZC4KLQkJCQlIc2ktQ2hpaCBjaXR5IFRhaXBlaSAyMjEwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODgtOTUtQjkgICAoaGV4KQkJVW5pZmllZCBQYWNrZXQgU3lzdGVtcyBDcm9wCi04ODk1QjkgICAgIChiYXNlIDE2KQkJVW5pZmllZCBQYWNrZXQgU3lzdGVtcyBDcm9wCi0JCQkJMUYuLCBObzMyLExhbmUgMTUsU0VDIDYsIE1pblF1YW4gRSBSZC4sIAotCQkJCVRhaXBlaSBOZWlodSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTg4LTk3LURGICAgKGhleCkJCUVudHJ5cGFzcyBDb3Jwb3JhdGlvbiBTZG4uIEJoZC4KLTg4OTdERiAgICAgKGJhc2UgMTYpCQlFbnRyeXBhc3MgQ29ycG9yYXRpb24gU2RuLiBCaGQuCi0JCQkJTm8uNDAsIEphbGFuIFRQUCAxLzEwLAotCQkJCVRhbWFuIEluZHVzdHJpIFB1Y2hvbmcsIEJhdHUgMTIsIEphbGFuIAotCQkJCVB1Y2hvbmcgU2VsYW5nb3IgRGFydWwgRWhzYW4gNDcxMDAKLQkJCQlNQUxBWVNJQQotCi04OC05OC0yMSAgIChoZXgpCQlURVJBT04KLTg4OTgyMSAgICAgKGJhc2UgMTYpCQlURVJBT04KLQkJCQkyRiBTZW9oYW4gQmxkZy4sIDE1NTItMTAsIFNlb2Noby1Eb25nLCBTZW9jaG8tR3UsCi0JCQkJU2VvdWwgIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotODgtOUYtRkEgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotODg5RkZBICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQkgTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotODgtQTUtQkQgICAoaGV4KQkJUVBDT00gSU5DLgotODhBNUJEICAgICAoYmFzZSAxNikJCVFQQ09NIElOQy4KLQkJCQk2MDMwIE5XIDk5IEFWRQotCQkJCVNVSVRFIDQwNAotCQkJCURPUkFMIEZMT1JJREEgMzMxNzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg4LUFDLUMxICAgKGhleCkJCUdlbmVyaXRvbiBDby4sIEx0ZC4gCi04OEFDQzEgICAgIChiYXNlIDE2KQkJR2VuZXJpdG9uIENvLiwgTHRkLiAKLQkJCQk4Ri0xLCBOby4gODEsIFNodWlsaSBSZC4sIAotCQkJCUhzaW5jaHUgQ2l0eSwgICAzMDA1OSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTg4LUFFLTFEICAgKGhleCkJCUNPTVBBTCBJTkZPUk1BVElPTihLVU5TSEFOKUNPLixMVEQKLTg4QUUxRCAgICAgKGJhc2UgMTYpCQlDT01QQUwgSU5GT1JNQVRJT04oS1VOU0hBTilDTy4sTFRECi0JCQkJTk8uIDI1LCBUSEUgM1JEIFNUUkVFVCBLVU5TSEFOIEVYUE9SVCBQUk9DRVNTSU5HIFpPTkUKLQkJCQlLVU5TSEFOIFNVWkhPVSAyMTUzMDAKLQkJCQlDSElOQQotCi04OC1CMS02OCAgIChoZXgpCQlEZWx0YSBDb250cm9sIEdtYkgKLTg4QjE2OCAgICAgKGJhc2UgMTYpCQlEZWx0YSBDb250cm9sIEdtYkgKLQkJCQlSb25kb3JmZXIgSGF1cHRzdHIuIDMzCi0JCQkJQ29sb2duZSBOUlcgNTA5OTcgCi0JCQkJR0VSTUFOWQotCi04OC1CNi0yNyAgIChoZXgpCQlHZW1iaXJkIEV1cm9wZSBCVgotODhCNjI3ICAgICAoYmFzZSAxNikJCUdlbWJpcmQgRXVyb3BlIEJWCi0JCQkJV2l0dGV2cm91d2VuIDU2Ci0JCQkJQWxtZXJlIEZsZXZvbGFuZCAxMzU4Q0QKLQkJCQlORVRIRVJMQU5EUwotCi04OC1CQS03RiAgIChoZXgpCQlRZmllZG5ldCBDby4sIEx0ZC4KLTg4QkE3RiAgICAgKGJhc2UgMTYpCQlRZmllZG5ldCBDby4sIEx0ZC4KLQkJCQkjMjA0IEtKIEJsZGcuIERhZUNoaS1Eb25nCi0JCQkJR2FuZ05hbS1HdQotCQkJCVNlb3VsICAxMzUtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTg4LUJGLUQ1ICAgKGhleCkJCVNpbXBsZSBBdWRpbyBMdGQKLTg4QkZENSAgICAgKGJhc2UgMTYpCQlTaW1wbGUgQXVkaW8gTHRkCi0JCQkJQ2FydHNpZGUgSG91c2UKLQkJCQkxIENsYXJrc3RvbiBSb2FkCi0JCQkJR2xhc2dvdyAgRzQ0IDRFRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTg4LUM2LTYzICAgKGhleCkJCUFwcGxlIEluYwotODhDNjYzICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotODgtREQtNzkgICAoaGV4KQkJVm9sdGFpcmUKLTg4REQ3OSAgICAgKGJhc2UgMTYpCQlWb2x0YWlyZQotCQkJCTEzLCBaYXJjaGluIFN0Ci0JCQkJUmFhbmFuYSAgNDM2NjIKLQkJCQlJU1JBRUwKLQotODgtRTAtQTAgICAoaGV4KQkJU2hlbnpoZW4gVmlzaW9uU1RPUiBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLTg4RTBBMCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBWaXNpb25TVE9SIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCTEyL0YsIEVhc3QgVG93ZXIsTmFuc2hhbiBTb2Z0d2FyZSBQYXJrCi0JCQkJMTAxMjggU2hlbm5hbiBCbHZkCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTg4LUVELTFDICAgKGhleCkJCUN1ZG8gQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTg4RUQxQyAgICAgKGJhc2UgMTYpCQlDdWRvIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0JCQkJMTBGIEFyaXJhbmdUViAxNDY3LTgwLCBTZW9jaG8tM2RvbmcsIFNlb2Noby1ndQotCQkJCVNlb3VsICAxMzctODY4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTg4LUYwLTc3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTg4RjA3NyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04OC1GRC0xNSAgIChoZXgpCQlMSU5FRVlFIENPLiwgTFRECi04OEZEMTUgICAgIChiYXNlIDE2KQkJTElORUVZRSBDTy4sIExURAotCQkJCTVGIE1hcnVmdWt1IEJsZGcuIDM5LTEgS2FyYWhhc2hpCi0JCQkJTmlzaGloaXJhZ2FraS1jaG8sIE1pbmFtaS1rdQotCQkJCUt5b3RvICA2MDEtODQ2OAotCQkJCUpBUEFOCi0KLThDLTExLUNCICAgKGhleCkJCUFCVVMgU2VjdXJpdHktQ2VudGVyIEdtYkggJiBDby4gS0cKLThDMTFDQiAgICAgKGJhc2UgMTYpCQlBQlVTIFNlY3VyaXR5LUNlbnRlciBHbWJIICYgQ28uIEtHCi0JCQkJTGlua2VyIEtyZXV0aHdlZyA1Ci0JCQkJQWZmaW5nIC8gTXVlaGxoYXVzZW4gQmF2YXJpYSA4NjQ0NAotCQkJCUdFUk1BTlkKLQotOEMtMUYtOTQgICAoaGV4KQkJUkYgU3VyZ2ljYWwgU3lzdGVtIEluYy4gCi04QzFGOTQgICAgIChiYXNlIDE2KQkJUkYgU3VyZ2ljYWwgU3lzdGVtIEluYy4gCi0JCQkJOTc0MCBBcHBhbG9vc2EgUm9hZCAKLQkJCQlTdWl0ZSAxNTAgCi0JCQkJU2FuIERpZWdvICBDQSA5MjEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotOEMtMjctOEEgICAoaGV4KQkJVm9jb2xsZWN0IEluYwotOEMyNzhBICAgICAoYmFzZSAxNikJCVZvY29sbGVjdCBJbmMKLQkJCQk3MDMgUm9kaSBSb2FkCi0JCQkJUGl0dHNidXJnaCBQYSAxNTIzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotOEMtNDQtMzUgICAoaGV4KQkJU2hhbmdoYWkgQnJvYWRNb2JpIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLThDNDQzNSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBCcm9hZE1vYmkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVJtLiA5MDEsIEJsZC4gOSwgTm8uMTUxNSBHdW1laSBSZCwgWHVodWkgRGlzdHJpY3QKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotOEMtNEQtRUEgICAoaGV4KQkJQ2VyaW8gQ29ycG9yYXRpb24KLThDNERFQSAgICAgKGJhc2UgMTYpCQlDZXJpbyBDb3Jwb3JhdGlvbgotCQkJCTJGLiwgTm8uMTA1LCBNaW5jeXVhbiBSZC4sIFNpbmRpYW4gQ2l0eQotCQkJCVRhaXBlaSBDb3VudHkgIDIzMTQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04Qy01MS0wNSAgIChoZXgpCQlTaGVuemhlbiBpcmVhZHlnbyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENPLixMVEQuCi04QzUxMDUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gaXJlYWR5Z28gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDTy4sTFRELgotCQkJCVJvb20gMDIsMTFGLERFU0FZIEJ1aWxkaW5nLE5vLjEgSGktVGVjaCBTb3V0aCBSb2FkCi0JCQkJU2hlbnpoZW4gIDUxODA1NwotCQkJCUNISU5BCi0KLThDLTUzLUY3ICAgKGhleCkJCUEmRCBFTkdJTkVFUklORyBDTy4sIExURC4KLThDNTNGNyAgICAgKGJhc2UgMTYpCQlBJkQgRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi0JCQkJMzM2LTYgRGFuZ3NhbmRvbmcgNi1nYSwgWWVvbmdkZXVuZ3BvLWd1Ci0JCQkJU2VvdWwgIDE1MC04MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOEMtNTQtMUQgICAoaGV4KQkJTEdFIAotOEM1NDFEICAgICAoYmFzZSAxNikJCUxHRSAKLQkJCQk2MC0zOSAsIEthc2FuIC1kb25nICwgR3VtY2hlb24tZ3UuCi0JCQkJU2VvdWwgICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLThDLTU2LUM1ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotOEM1NkM1ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLThDLTU4LTc3ICAgKGhleCkJCUFwcGxlLCBJbmMuCi04QzU4NzcgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLThDLTU5LThCICAgKGhleCkJCUMgVGVjaG5vbG9naWVzIEFCCi04QzU5OEIgICAgIChiYXNlIDE2KQkJQyBUZWNobm9sb2dpZXMgQUIKLQkJCQlUcmFrdG9yduRnZW4gMTEKLQkJCQlMdW5kIFNr5W5lIDIyNiA2MAotCQkJCVNXRURFTgotCi04Qy01Qy1BMSAgIChoZXgpCQlkLWJyb2FkLElOQwotOEM1Q0ExICAgICAoYmFzZSAxNikJCWQtYnJvYWQsSU5DCi0JCQkJMi0xMi0zIFNoaW5Zb2tvaGFtYSBLb3Vob2t1LUt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTAwMzMKLQkJCQlKQVBBTgotCi04Qy01Ri1ERiAgIChoZXgpCQlCZWlqaW5nIFJhaWx3YXkgU2lnbmFsIEZhY3RvcnkKLThDNUZERiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFJhaWx3YXkgU2lnbmFsIEZhY3RvcnkKLQkJCQlOby4yIFNpY3VuIFhpbHUgTGFuZ2ZhLEh1YW5nY3VuLAotCQkJCURheGluZyBBcmVhLAotCQkJCUJlaWlqbmcgIDEwMjYxMwotCQkJCUNISU5BCi0KLThDLTY0LTBCICAgKGhleCkJCWh0dHA6Ly9zdGFuZGFyZHMuaWVlZS5vcmcvYWJvdXQvYm9nL3NwcG10L3RhcmdldD0lMjJfYmxhbmslMjIKLThDNjQwQiAgICAgKGJhc2UgMTYpCQlodHRwOi8vc3RhbmRhcmRzLmllZWUub3JnL2Fib3V0L2JvZy9zcHBtdC90YXJnZXQ9JTIyX2JsYW5rJTIyCi0JCQkJVHJ6YXNrYSBjZXN0YSA1MTUKLQkJCQlCcmV6b3ZpY2EgcHJpIExqdWJsamFuaSAgU0ktMTM1MQotCQkJCVNMT1ZFTklBCi0KLThDLTY0LTIyICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi04QzY0MjIgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotOEMtNzEtRjggICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi04QzcxRjggICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLThDLTczLTZFICAgKGhleCkJCUZ1aml0c3UgTGltaXRlZAotOEM3MzZFICAgICAoYmFzZSAxNikJCUZ1aml0c3UgTGltaXRlZAotCQkJCU11c2FzaGkta29zdWdpIFRvd2VyIFBsYWNlIEJsZGcuLAotCQkJCTQwMywgS29zdWdpLWNobyAxLWNob21lLE5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjExLTAwNjMKLQkJCQlKQVBBTgotCi04Qy03Qi05RCAgIChoZXgpCQlBcHBsZQotOEM3QjlEICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04Qy03Qy1CNSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi04QzdDQjUgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotOEMtN0MtRkYgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi04QzdDRkYgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTMwIEhvbGdlciBXYXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotOEMtN0UtQjMgICAoaGV4KQkJTHl0cm8sIEluYy4KLThDN0VCMyAgICAgKGJhc2UgMTYpCQlMeXRybywgSW5jLgotCQkJCTIwMCBXLiBFdmVseW4gQXZlLiwgU3VpdGUgMTIwCi0JCQkJTW91bnRhaW4gVmlldyBDYWxpZm9ybmlhIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04Qy04Mi1BOCAgIChoZXgpCQlJbnNpZ21hIFRlY2hub2xvZ3kgQ28uLEx0ZAotOEM4MkE4ICAgICAoYmFzZSAxNikJCUluc2lnbWEgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJTm8uMjI2IFRpYW5tdXNoYW4gUm9hZCwgCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDAwCi0JCQkJQ0hJTkEKLQotOEMtODQtMDEgICAoaGV4KQkJUFJJVkFURQotOEM4NDAxICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi04Qy04OS1BNSAgIChoZXgpCQlNaWNyby1TdGFyIElOVCdMIENPLiwgTFRECi04Qzg5QTUgICAgIChiYXNlIDE2KQkJTWljcm8tU3RhciBJTlQnTCBDTy4sIExURAotCQkJCU5vLjY5LCBMaWRlIHN0LgotCQkJCUpob25naGUgQ2l0eQotCQkJCVRhaXBlaSBDb3VudHkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOEMtOTAtRDMgICAoaGV4KQkJQWxjYXRlbCBMdWNlbnQKLThDOTBEMyAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIEx1Y2VudAotCQkJCTYwMCBNYXJjaCBEcml2ZQotCQkJCU90dGF3YSBPTiBLMksgMkU2Ci0JCQkJQ0FOQURBCi0KLThDLTkyLTM2ICAgKGhleCkJCUF1cy5MaW54IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi04QzkyMzYgICAgIChiYXNlIDE2KQkJQXVzLkxpbnggVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzRiwgTm8uIDcsIExhbmUgNDUsIFBhby1Ic2luIFJkLiwKLQkJCQlIc2luLVRlaW4gVGFpcGVpIGNvdW50cnksICAyMzE0NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOEMtQTAtNDggICAoaGV4KQkJQmVpamluZyBOZVRvcENoaXAgVGVjaG5vbG9neSBDby4sTFRECi04Q0EwNDggICAgIChiYXNlIDE2KQkJQmVpamluZyBOZVRvcENoaXAgVGVjaG5vbG9neSBDby4sTFRECi0JCQkJMzA5LEludGVyZ3JhdGlvbiBCdWlsZGluZyBPbHltcGljIENlbnRlciwgTm8uMSBBbiBEaW5nIFJvYWQsQ2hhbyBZYW5nIERpc3RyaWN0LCwgCi0JCQkJQmVpamluZyAgMTAwMDI5Ci0JCQkJQ0hJTkEKLQotOEMtQTktODIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi04Q0E5ODIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi04Qy1CNi00RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi04Q0I2NEYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04Qy1COC02NCAgIChoZXgpCQlBY1NpUCBUZWNobm9sb2d5IENvcnAuCi04Q0I4NjQgICAgIChiYXNlIDE2KQkJQWNTaVAgVGVjaG5vbG9neSBDb3JwLgotCQkJCTNGLiwgTm8uMjIsIERhbGluIFJkLiwgCi0JCQkJVGFveXVhbiBDaXR5ICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLThDLUQ2LTI4ICAgKGhleCkJCUlrb3IgTWV0ZXJpbmcKLThDRDYyOCAgICAgKGJhc2UgMTYpCQlJa29yIE1ldGVyaW5nCi0JCQkJRnJhbmNpc2NvIEdyYW5kbW9udGFnbmUgNAotCQkJCVNhbiBTZWJhc3RpYW4gR3VpcHV6Y29hIDIwMDA4Ci0JCQkJU1BBSU4KLQotOEMtREItMjUgICAoaGV4KQkJRVNHIFNvbHV0aW9ucwotOENEQjI1ICAgICAoYmFzZSAxNikJCUVTRyBTb2x1dGlvbnMKLQkJCQkyMCBIeXBlcmlvbiBDb3VydAotCQkJCUtpbmdzdG9uIE9udGFyaW8gSzdLIDdLMgotCQkJCUNBTkFEQQotCi04Qy1ERC04RCAgIChoZXgpCQlXaWZseS1DaXR5IFN5c3RlbSBJbmMuCi04Q0REOEQgICAgIChiYXNlIDE2KQkJV2lmbHktQ2l0eSBTeXN0ZW0gSW5jLgotCQkJCTRGLiwtMSxOTyAxMDYsUlVFSUdVQU5HIFJkLk5laWh1IERpc3RyaWN0LAotCQkJCVRhaXBlaSBDaXR5ICAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04Qy1FNy1CMyAgIChoZXgpCQlTb25hcmR5bmUgSW50ZXJuYXRpb25hbCBMdGQKLThDRTdCMyAgICAgKGJhc2UgMTYpCQlTb25hcmR5bmUgSW50ZXJuYXRpb25hbCBMdGQKLQkJCQlCbGFja2J1c2hlIEJ1c2luZXNzIFBhcmsKLQkJCQlZYXRlbGV5IEhhbXBzaGlyZSBHVTQ2IDZHRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLThDLUY5LUM5ICAgKGhleCkJCU1FU0FEQSBUZWNobm9sb2d5IENvLixMdGQuCi04Q0Y5QzkgICAgIChiYXNlIDE2KQkJTUVTQURBIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlUb25nRm5nIEluZm9ybWF0aW9uIEhhcmJvcixOby4xMSBMYW5nU2hhbiBSb2FkLEhJLXRlY2ggUGFyayxOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi05MC0wMC00RSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi05MDAwNEUgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCSBOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi05MC0wMS0zQiAgIChoZXgpCQlTQUdFTUNPTQotOTAwMTNCICAgICAoYmFzZSAxNikJCVNBR0VNQ09NCi0JCQkJMjUwIHJvdXRlIGRlIGwnRW1wZXJldXIKLQkJCQlSVUVJTCBNQUxNQUlTT04gIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLTkwLTA5LTE3ICAgKGhleCkJCUZhci1zaWdodGVkIG1vYmlsZQotOTAwOTE3ICAgICAoYmFzZSAxNikJCUZhci1zaWdodGVkIG1vYmlsZQotCQkJCVRlY2hub2xvZ3kgUGFyayBEZXNheSBCdWlsZGluZyA2dGgtRmxvb3IKLQkJCQlOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIFByb3ZpbmNlICA1MTgwMDAKLQkJCQlDSElOQQotCi05MC0wRC02NiAgIChoZXgpCQlEaWdpbW9yZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotOTAwRDY2ICAgICAoYmFzZSAxNikJCURpZ2ltb3JlIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJMTAgRkwuLCBOby4gNjEsIFlhbi1QaW5nIFNvdXRoIFJvYWQKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTAtMTgtQUUgICAoaGV4KQkJU2hhbmdoYWkgTWVyaWRpYW4gVGVjaG5vbG9naWVzLCBDby4gTHRkLgotOTAxOEFFICAgICAoYmFzZSAxNikJCVNoYW5naGFpIE1lcmlkaWFuIFRlY2hub2xvZ2llcywgQ28uIEx0ZC4KLQkJCQlTdWl0ZSA2QSBUb25nc2hlbmcgVG93ZXIKLQkJCQkjNDU4IEZ1c2hhbiBSb2FkCi0JCQkJUHVkb25nIHNoYW5naGFpIDIwMDEyMgotCQkJCUNISU5BCi0KLTkwLTE5LTAwICAgKGhleCkJCVNDUyBTQQotOTAxOTAwICAgICAoYmFzZSAxNikJCVNDUyBTQQotCQkJCVZpYSBQaW5pLCAzMgotCQkJCUJpYXNjYSAgNjcxMAotCQkJCVNXSVRaRVJMQU5ECi0KLTkwLTIxLTU1ICAgKGhleCkJCUhUQyBDb3Jwb3JhdGlvbgotOTAyMTU1ICAgICAoYmFzZSAxNikJCUhUQyBDb3Jwb3JhdGlvbgotCQkJCU5vLjIzIFhpbmdodWEgUm9hZAotCQkJCVRhb3l1YW4gQ2l0eQotCQkJCVRhb3l1YW4gQ291bnR5ICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTkwLTI3LUU0ICAgKGhleCkJCUFwcGxlCi05MDI3RTQgICAgIChiYXNlIDE2KQkJQXBwbGUKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ2FsaWZvcm5pYSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtMkUtODcgICAoaGV4KQkJTGFiSmFjawotOTAyRTg3ICAgICAoYmFzZSAxNikJCUxhYkphY2sKLQkJCQkzMjMyIFMgVmFuY2UgU3QgU1RFIDEwMAotCQkJCUxha2V3b29kIENPIDgwMjI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC0zNC0yQiAgIChoZXgpCQlHYXRla2VlcGVyIFN5c3RlbXMsIEluYy4KLTkwMzQyQiAgICAgKGJhc2UgMTYpCQlHYXRla2VlcGVyIFN5c3RlbXMsIEluYy4KLQkJCQk4IFN0dWRlYmFrZXIKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLTM0LUZDICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTkwMzRGQyAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMyAKLQkJCQlDSElOQQotCi05MC0zRC01QSAgIChoZXgpCQlTaGVuemhlbiBXaXNpb24gVGVjaG5vbG9neSBIb2xkaW5nIExpbWl0ZWQKLTkwM0Q1QSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBXaXNpb24gVGVjaG5vbG9neSBIb2xkaW5nIExpbWl0ZWQKLQkJCQlSb29tIDI2QSwgSmlucnVuIEJ1aWxkaW5nLCBOMC42MDE5LCBTaGVubmFuIFJkLiwgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTkwLTNELTZCICAgKGhleCkJCVppY29uIFRlY2hub2xvZ3kgQ29ycC4KLTkwM0Q2QiAgICAgKGJhc2UgMTYpCQlaaWNvbiBUZWNobm9sb2d5IENvcnAuCi0JCQkJMTVGLiwgTm8uNjg4LTIsIFpob25nemhlbmcgUmQuLCBaaG9uZ2hlIENpdHksIFRhaXBlaSBDb3VudHkgMjM1Ci0JCQkJVGFpcGVpICAyMzU4NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTAtNDctMTYgICAoaGV4KQkJUk9SWkUgQ09SUE9SQVRJT04KLTkwNDcxNiAgICAgKGJhc2UgMTYpCQlST1JaRSBDT1JQT1JBVElPTgotCQkJCTE1ODgtMiBNaWNoaW5vdWUsIEthbm5hYmUtY2hvCi0JCQkJRnVrdXlhbWEgSGlyb3NoaW1hIDcyMC0yMTA0Ci0JCQkJSkFQQU4KLQotOTAtNEMtRTUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotOTA0Q0U1ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotOTAtNTAtN0IgICAoaGV4KQkJQWR2YW5jZWQgUEFOTU9CSUwgU3lzdGVtcyBHbWJIICYgQ28uIEtHCi05MDUwN0IgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgUEFOTU9CSUwgU3lzdGVtcyBHbWJIICYgQ28uIEtHCi0JCQkJSGFuc2VzdHJh77+9ZSA5MQotCQkJCUNvbG9nbmUgTlJXIDUxMTQ5Ci0JCQkJR0VSTUFOWQotCi05MC01MS0zRiAgIChoZXgpCQlFbGV0dHJvbmljYSBTYW50ZXJubwotOTA1MTNGICAgICAoYmFzZSAxNikJCUVsZXR0cm9uaWNhIFNhbnRlcm5vCi0JCQkJUy5TLiBTZWxpY2UsIDQ3Ci0JCQkJSW1vbGEgQm9sb2duYSA0MDAyNgotCQkJCUlUQUxZCi0KLTkwLTU0LTQ2ICAgKGhleCkJCVRFUyBFTEVDVFJPTklDIFNPTFVUSU9OUwotOTA1NDQ2ICAgICAoYmFzZSAxNikJCVRFUyBFTEVDVFJPTklDIFNPTFVUSU9OUwotCQkJCUltbWV1YmxlIE9keXNzZWUKLQkJCQlaQUMgZGUgQmxvc3NhYwotCQkJCUJSVVogIDM1MTcwCi0JCQkJRlJBTkNFCi0KLTkwLTU1LUFFICAgKGhleCkJCUVyaWNzc29uLCBFQUIvUldJL0sKLTkwNTVBRSAgICAgKGJhc2UgMTYpCQlFcmljc3NvbiwgRUFCL1JXSS9LCi0JCQkJU2tvbGflbmdlbiAxNwotCQkJCUfkdmxlICBTRS04MDAgMDYKLQkJCQlTV0VERU4KLQotOTAtNUYtOEQgICAoaGV4KQkJbW9kYXMgR21iSAotOTA1RjhEICAgICAoYmFzZSAxNikJCW1vZGFzIEdtYkgKLQkJCQlCZWx6aWdlciBTdHIuIDY5LTcxCi0JCQkJQmVybGluICAxMDgyMwotCQkJCUdFUk1BTlkKLQotOTAtNjEtMEMgICAoaGV4KQkJRmlkYSBJbnRlcm5hdGlvbmFsIChTKSBQdGUgTHRkCi05MDYxMEMgICAgIChiYXNlIDE2KQkJRmlkYSBJbnRlcm5hdGlvbmFsIChTKSBQdGUgTHRkCi0JCQkJQmxrIDE2LCBLYWxsYW5nIFBsYWNlIAotCQkJCSMwNi0wMiwgCi0JCQkJMzM5MTU2Ci0JCQkJU0lOR0FQT1JFCi0KLTkwLTY3LUI1ICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50Ci05MDY3QjUgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQKLQkJCQk2MDAtNzAwIE1vdW50YWluIEF2ZS4KLQkJCQkzQS0yMzBDCi0JCQkJTXVycmF5IEhpaWxsIE5KIDA3OTc0LTA2MzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLTY3LUYzICAgKGhleCkJCUFsY2F0ZWwgTHVjZW50Ci05MDY3RjMgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQKLQkJCQlWaWEgdHJlbnRvLCAzMAotCQkJCVZpbWVyY2F0ZSBNQiAyMDA1OQotCQkJCUlUQUxZCi0KLTkwLTZELUM4ICAgKGhleCkJCURMRyBBdXRvbWHn428gSW5kdXN0cmlhbCBMdGRhCi05MDZEQzggICAgIChiYXNlIDE2KQkJRExHIEF1dG9tYefjbyBJbmR1c3RyaWFsIEx0ZGEKLQkJCQlSdWEgSm9z6SBCYXRpc3RhIFNvYXJlcywgNTMKLQkJCQlEaXN0cml0byBJbmR1c3RyaWFsCi0JCQkJU2VydONvemluaG8gU+NvIFBhdWxvIDE0MTc2LTExOQotCQkJCUJSQVpJTAotCi05MC02RS1CQiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi05MDZFQkIgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMKLQkJCQlDSElOQQotCi05MC03Ri02MSAgIChoZXgpCQlDaGljb255IEVsZWN0cm9uaWNzIENvLiwgTHRkLgotOTA3RjYxICAgICAoYmFzZSAxNikJCUNoaWNvbnkgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJTm8uMjUsIFd1LUdvbmcgNnRoIFJkLiwgV3UgS3UgSW5kdXN0cmlhbCBQYXJrLCAKLQkJCQlUYWlwZWkgSHNpZW4sICAgMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC04NC0wRCAgIChoZXgpCQlBcHBsZSwgSW5jCi05MDg0MEQgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtODgtQTIgICAoaGV4KQkJSU9OSUNTIFRFQ0hOT0xPR1kgTUUgTFREQQotOTA4OEEyICAgICAoYmFzZSAxNikJCUlPTklDUyBURUNITk9MT0dZIE1FIExUREEKLQkJCQlSVUEgREVQLiBBTlRPTklPIEVEVSBWSUVJUkEKLQkJCQlGTE9SSUFOIFBPTElTIFNBTlRBIENBVEFSSU5BIDg4MDQwMDAwCi0JCQkJQlJBWklMCi0KLTkwLThELTFEICAgKGhleCkJCUdIIFRlY2hub2xvZ2llcwotOTA4RDFEICAgICAoYmFzZSAxNikJCUdIIFRlY2hub2xvZ2llcwotCQkJCTUwMjIgQmluaGUgUm9hZCwgQmxvY2sgQiwgVW5pdGVkIFBsYXphCi0JCQkJU2hlbnpoZW4gIDUxODAyNgotCQkJCUNISU5BCi0KLTkwLTkwLTNDICAgKGhleCkJCVRSSVNPTiBURUNITk9MT0dZIENPUlBPUkFUSU9OCi05MDkwM0MgICAgIChiYXNlIDE2KQkJVFJJU09OIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQlOby4zLCBLdW5nLVllaCAxMnRoIFJkLiwgUGluZy1KZW4gSW5kdXN0cmlhbCBQYXJrLAotCQkJCVBpbmctSmVuIENpdHksICBUYW9ZdWFuIENvdW50eSAzMjQ1OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTAtOTAtNjAgICAoaGV4KQkJUlNJIFZJREVPIFRFQ0hOT0xPR0lFUwotOTA5MDYwICAgICAoYmFzZSAxNikJCVJTSSBWSURFTyBURUNITk9MT0dJRVMKLQkJCQk1NiwgUnVlIEplYW4tR2lyYXVkb3V4IC0gQkFUIDYwCi0JCQkJUGFyYyBkJiMzOTthY3Rpdml077+9IGRlcyBGb3JnZXMKLQkJCQlTVFJBU0JPVVJHIEJhcy1SaGluIDY3MjAwCi0JCQkJRlJBTkNFCi0KLTkwLUEyLURBICAgKGhleCkJCUdIRU8gU0EKLTkwQTJEQSAgICAgKGJhc2UgMTYpCQlHSEVPIFNBCi0JCQkJVmlhIFNvbGRpbmksIDIyCi0JCQkJQ2hpYXNzbyAgQ0gtNjgzMAotCQkJCVNXSVRaRVJMQU5ECi0KLTkwLUE0LURFICAgKGhleCkJCVdpc3Ryb24gTmV3ZWIgQ29ycC4KLTkwQTRERSAgICAgKGJhc2UgMTYpCQlXaXN0cm9uIE5ld2ViIENvcnAuCi0JCQkJMjAgUGFyayBBdmVudWUgSUksIEhzaW5jaHUgU2NpZW5jZSBQYXJrLCAKLQkJCQlIc2luY2h1ICAgMzA4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC1BNy1DMSAgIChoZXgpCQlQYWtlZGdlIERldmljZSBhbmQgU29mdHdhcmUgSW5jLgotOTBBN0MxICAgICAoYmFzZSAxNikJCVBha2VkZ2UgRGV2aWNlIGFuZCBTb2Z0d2FyZSBJbmMuCi0JCQkJMTAxMSBFZHdhcmRzIFJvYWQKLQkJCQlCdXJsaW5nYW1lIENBIDk0MDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC1COC1EMCAgIChoZXgpCQlKb3llbnQsIEluYy4KLTkwQjhEMCAgICAgKGJhc2UgMTYpCQlKb3llbnQsIEluYy4KLQkJCQkzNDUgQ2FsaWZvcm5pYSBTdHJlZXQsCi0JCQkJU3VpdGUgMjAwMAotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUI5LTdEICAgKGhleCkJCUpvaG5zb24gT3V0ZG9vcnMgTWFyaW5lIEVsZWN0cm9uaWNzIGQvYi9hIE1pbm5rb3RhCi05MEI5N0QgICAgIChiYXNlIDE2KQkJSm9obnNvbiBPdXRkb29ycyBNYXJpbmUgRWxlY3Ryb25pY3MgZC9iL2EgTWlubmtvdGEKLQkJCQkxNTMxIEUgTWFkaXNvbiBBdmUKLQkJCQlNYW5rYXRvIE1OIDU2MDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC1DRi0xNSAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotOTBDRjE1ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi05MC1EMS0xQiAgIChoZXgpCQlQYWxvbWFyIE1lZGljYWwgVGVjaG5vbG9naWVzCi05MEQxMUIgICAgIChiYXNlIDE2KQkJUGFsb21hciBNZWRpY2FsIFRlY2hub2xvZ2llcwotCQkJCTE1IE5ldHdvcmsgRHJpdmUKLQkJCQlCdXJsaW5ndG9uIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC1ENy1FQiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotOTBEN0VCICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtRDgtNTIgICAoaGV4KQkJQ29tdGVjIENvLiwgTHRkLgotOTBEODUyICAgICAoYmFzZSAxNikJCUNvbXRlYyBDby4sIEx0ZC4KLQkJCQkgM0YuLCBOby44MSwgSmlhbmthbmcgUmQuLAotCQkJCVpob25naGUgQ2l0eSBUYWlwZWkgQ291bnR5IDIzNTg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC1EOS0yQyAgIChoZXgpCQlIVUctV0lUU0NISSBBRwotOTBEOTJDICAgICAoYmFzZSAxNikJCUhVRy1XSVRTQ0hJIEFHCi0JCQkJQXVyaWVkc3RyYXNzZSAxMAotCQkJCUJvZXNpbmdlbiBGcmlib3VyZyAzMTc4Ci0JCQkJU1dJVFpFUkxBTkQKLQotOTAtRTAtRjAgICAoaGV4KQkJSUVFRSBQMTcyMiAKLTkwRTBGMCAgICAgKGJhc2UgMTYpCQlJRUVFIFAxNzIyIAotCQkJCTg3NjAgU2FuZHkgUGFya3dheQotCQkJCVNhbmR5IFV0YWggODQwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUUyLUJBICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi05MEUyQkEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTkwLUU2LUJBICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotOTBFNkJBICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsIAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC1FQS02MCAgIChoZXgpCQlTUEkgTGFzZXJzIEx0ZCAKLTkwRUE2MCAgICAgKGJhc2UgMTYpCQlTUEkgTGFzZXJzIEx0ZCAKLQkJCQk2IHdlbGxpbmd0b24gUGFyawotCQkJCUhlZGdlIEVuZAotCQkJCVNvdXRoYW1wdG9uIEhhbXBzaGlyZSBTMDMwMlFVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotOTAtRjItNzggICAoaGV4KQkJUmFkaXVzIEdhdGV3YXkKLTkwRjI3OCAgICAgKGJhc2UgMTYpCQlSYWRpdXMgR2F0ZXdheQotCQkJCTUyMCBFLiBNb250Zm9yZCBBdmUKLQkJCQlBZGEgT0ggNDU4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUZCLTVCICAgKGhleCkJCUF2YXlhLCBJbmMKLTkwRkI1QiAgICAgKGJhc2UgMTYpCQlBdmF5YSwgSW5jCi0JCQkJMjExIE1vdW50IEFpcnkgUm9hZCAKLQkJCQlCYXNraW5nIFJpZGdlIE5KIDA3OTIwLTIzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUZCLUE2ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby5MdGQKLTkwRkJBNiAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uTHRkCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05NC0wQy02RCAgIChoZXgpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotOTQwQzZEICAgICAoYmFzZSAxNikJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJQnVpbGRpbmcgNywgU2Vjb25kIFBhcnQsIEhvbmdodWFsaW5nIEluZHVzdHJpYWwgWm9uZQotCQkJCVhpbGkgdG93biwgTmFuc2hhbiwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotOTQtMTEtREEgICAoaGV4KQkJSVRGIEZyb3NjaGwgR21iSAotOTQxMURBICAgICAoYmFzZSAxNikJCUlURiBGcm9zY2hsIEdtYkgKLQkJCQlIYXVzZXJiYWNoc3RyLiA3IC0gMTAKLQkJCQkgV2FsZGVyYmFjaCBCYXZhcmlhIDkzMTk0Ci0JCQkJR0VSTUFOWQotCi05NC0xNi03MyAgIChoZXgpCQlQb2ludCBDb3JlIFNBUkwKLTk0MTY3MyAgICAgKGJhc2UgMTYpCQlQb2ludCBDb3JlIFNBUkwKLQkJCQkyOS8zMSBSdWUgZHUgQm9pcyBHYWxvbgotCQkJCUZPTlRFTkFZIFNPVVMgQk9JUyBJbGUgZGUgRnJhbmNlIDk0MTIwCi0JCQkJRlJBTkNFCi0KLTk0LTIwLTUzICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi05NDIwNTMgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLTk0LTIzLTZFICAgKGhleCkJCVNoZW56aGVuIEp1bmxhbiBFbGVjdHJvbmljIEx0ZAotOTQyMzZFICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEp1bmxhbiBFbGVjdHJvbmljIEx0ZAotCQkJCUJsb2NrIEMsTm8uMiBJbmR1c3RyaWFsIERpc3RyaWN0LCBGdXl1YW4sIFRhbmd3ZWksRnV5b25nLCBCYW8nYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAzCi0JCQkJQ0hJTkEKLQotOTQtMkUtNjMgICAoaGV4KQkJRmluc+ljdXIKLTk0MkU2MyAgICAgKGJhc2UgMTYpCQlGaW5z6WN1cgotCQkJCTUyIHJ1ZSBQYXVsIExlc2NvcAotCQkJCU5hbnRlcnJlICA5MjAwMAotCQkJCUZSQU5DRQotCi05NC0zMy1ERCAgIChoZXgpCQlUYWNvIEVsZWN0cm9uaWMgU29sdXRpb25zLCBJbmMuCi05NDMzREQgICAgIChiYXNlIDE2KQkJVGFjbyBFbGVjdHJvbmljIFNvbHV0aW9ucywgSW5jLgotCQkJCTExNjAgQ3JhbnN0b24gU3RyZWV0Ci0JCQkJQ3JhbnN0b24gUkkgMDI5MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LTM5LUU1ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi05NDM5RTUgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLTk0LTQ0LTUyICAgKGhleCkJCUJlbGtpbiBJbnRlcm5hdGlvbmFsLCBJbmMuCi05NDQ0NTIgICAgIChiYXNlIDE2KQkJQmVsa2luIEludGVybmF0aW9uYWwsIEluYy4KLQkJCQk1MDEgVy4gV2FsbnV0IFN0LgotCQkJCUNvbXB0b24gQ0EgOTAyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LTQ2LTk2ICAgKGhleCkJCUJhdWRUZWMgQ29ycG9yYXRpb24KLTk0NDY5NiAgICAgKGJhc2UgMTYpCQlCYXVkVGVjIENvcnBvcmF0aW9uCi0JCQkJMTJGLCBOby4xODEsIFNlYy4xLlRhdHVuZyBSZC4KLQkJCQlIc2ktY2hpaCBUYWlwZWkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05NC01OS0yRCAgIChoZXgpCQlFS0UgQnVpbGRpbmcgVGVjaG5vbG9neSBTeXN0ZW1zIEx0ZAotOTQ1OTJEICAgICAoYmFzZSAxNikJCUVLRSBCdWlsZGluZyBUZWNobm9sb2d5IFN5c3RlbXMgTHRkCi0JCQkJUGlpc3BhbnBvcnR0aSA3Ci0JCQkJRXNwb28gLSAwMjI0MAotCQkJCUZJTkxBTkQKLQotOTQtNUItN0UgICAoaGV4KQkJVFJJTE9CSVQgTFREQS4KLTk0NUI3RSAgICAgKGJhc2UgMTYpCQlUUklMT0JJVCBMVERBLgotCQkJCVIuIEFMVkFSRU5HQSAxMzc3Ci0JCQkJQlVUQU5UQQotCQkJCVNBTyBQQVVMTyAgMDU1MDkwMDIKLQkJCQlCUkFaSUwKLQotOTQtODEtQTQgICAoaGV4KQkJQXp1cmF5IFRlY2hub2xvZ2llcwotOTQ4MUE0ICAgICAoYmFzZSAxNikJCUF6dXJheSBUZWNobm9sb2dpZXMKLQkJCQk3NDcwIFNXIEJyaWRnZXBvcnQgUmQKLQkJCQlEdXJoYW0gT1IgOTcyMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LTg1LTdBICAgKGhleCkJCUV2YW50YWdlIEluZHVzdHJpZXMgQ29ycAotOTQ4NTdBICAgICAoYmFzZSAxNikJCUV2YW50YWdlIEluZHVzdHJpZXMgQ29ycAotCQkJCTgxNSBCcmlkZ2UgU3QuIFcuCi0JCQkJV2F0ZXJsb28gT250YXJpbyBOMlYgMk03Ci0JCQkJQ0FOQURBCi0KLTk0LTg4LTU0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi05NDg4NTQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LThCLTAzICAgKGhleCkJCUVBR0VUIElubm92YXRpb24gYW5kIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi05NDhCMDMgICAgIChiYXNlIDE2KQkJRUFHRVQgSW5ub3ZhdGlvbiBhbmQgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzL0YsIEJ1aWxkaW5nIDQsIExpYW5jaHVhbmcgVGVjaG5vbG9neSBQYXJrLEJ1amkgVG93biwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTEyCi0JCQkJQ0hJTkEKLQotOTQtOEQtNTAgICAoaGV4KQkJQmVhbWV4IE95IEFiCi05NDhENTAgICAgIChiYXNlIDE2KQkJQmVhbWV4IE95IEFiCi0JCQkJUmlzdGlzdW9ucmFpdHRpIDEwCi0JCQkJUGlldGFyc2FhcmkgIEZJLTY4NjAwCi0JCQkJRklOTEFORAotCi05NC04Ri1FRSAgIChoZXgpCQlIdWdoZXMgVGVsZW1hdGljcywgSW5jLgotOTQ4RkVFICAgICAoYmFzZSAxNikJCUh1Z2hlcyBUZWxlbWF0aWNzLCBJbmMuCi0JCQkJMjAwMiBTdW1taXQgQmx2ZAotCQkJCVN1aXRlIDE4MDAKLQkJCQlBdGxhbnRhIEdBIDMwMzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05NC05Qy01NSAgIChoZXgpCQlBbHRhIERhdGEgVGVjaG5vbG9naWVzCi05NDlDNTUgICAgIChiYXNlIDE2KQkJQWx0YSBEYXRhIFRlY2hub2xvZ2llcwotCQkJCTQ5MDEgUm9ja2F3YXkgQmx2ZCwgQnVpbGRpbmcgQQotCQkJCVJpbyBSYW5jaG8gTk0gODcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LUE3LUJDICAgKGhleCkJCUJvZHlNZWRpYSwgSW5jLgotOTRBN0JDICAgICAoYmFzZSAxNikJCUJvZHlNZWRpYSwgSW5jLgotCQkJCTQyMCBGb3J0IER1cXVlc25lIEJsdmQKLQkJCQlHYXRld2F5IDEsIFN1aXRlIDE5MDAKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05NC1BQS1COCAgIChoZXgpCQlKb3ZpZXcoQmVpamluZykgVGVjaG5vbG9neSBDby4gTHRkLgotOTRBQUI4ICAgICAoYmFzZSAxNikJCUpvdmlldyhCZWlqaW5nKSBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJUm9vbSAzMDIsIFNvdXRoIEJ1aWxkaW5nCi0JCQkJTm8uODAgWHVleXVhbm5hbmx1Ci0JCQkJQmVpamluZyAgMTAwMDgxCi0JCQkJQ0hJTkEKLQotOTQtQkEtMzEgICAoaGV4KQkJVmlzaW9udGVjIGRhIEFtYXr0bmlhIEx0ZGEuCi05NEJBMzEgICAgIChiYXNlIDE2KQkJVmlzaW9udGVjIGRhIEFtYXr0bmlhIEx0ZGEuCi0JCQkJUm9kLiBHZXJhbGRvIFNjYXZvbmUsIDIzMDAgLSBHYWxwYW8gMjcKLQkJCQlDYWxpZm9ybmlhIENlbnRlciAtIFBxLiBDYWxpZm9ybmlhCi0JCQkJSmFjYXJl7SBTUCAxMjMwNS00OTAKLQkJCQlCUkFaSUwKLQotOTQtQzQtRTkgICAoaGV4KQkJUG93ZXJMYXllciBNaWNyb3N5c3RlbXMgSG9uZ0tvbmcgTGltaXRlZAotOTRDNEU5ICAgICAoYmFzZSAxNikJCVBvd2VyTGF5ZXIgTWljcm9zeXN0ZW1zIEhvbmdLb25nIExpbWl0ZWQKLQkJCQkyMyBaaGljaHVuIFJkLExpYW5neml5aW56dW8gUm0xMDA5Ci0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4MwotCQkJCUNISU5BCi0KLTk0LUM3LUFGICAgKGhleCkJCVJheWxpb3MgVGVjaG5vbG9neQotOTRDN0FGICAgICAoYmFzZSAxNikJCVJheWxpb3MgVGVjaG5vbG9neQotCQkJCTEyRi4sIE5vLjE2LCBKaWFuIDh0aCBSZAotCQkJCVpob25naGUgQ2l0eSBUYWlwZWkgQ291bnR5ICAyMzUxMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTQtQ0QtQUMgICAoaGV4KQkJQ3Jlb3dhdmUgT3kKLTk0Q0RBQyAgICAgKGJhc2UgMTYpCQlDcmVvd2F2ZSBPeQotCQkJCUxlbnRva2F0dSAyCi0JCQkJT3VsdW5zYWxvICBGSU4tOTA0NjAKLQkJCQlGSU5MQU5ECi0KLTk0LUQwLTE5ICAgKGhleCkJCUN5ZGxlIENvcnAuCi05NEQwMTkgICAgIChiYXNlIDE2KQkJQ3lkbGUgQ29ycC4KLQkJCQkxMjAzLCBLb2ZvbW9Ub3dlciwgMTYtMyAsIFN1bmFlLURvbmcsIEJ1bmRhbmctR3UKLQkJCQlTZW9uZ25hbS1DaXR5IEd5ZW9uZ2dpLURvIDQ2MzgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05NC1EOS0zQyAgIChoZXgpCQlFTkVMUFMKLTk0RDkzQyAgICAgKGJhc2UgMTYpCQlFTkVMUFMKLQkJCQlCdWwgQXJzZW5pamEgQ2Fybm9qZXZpY2EgMTE3Ci0JCQkJQmVsZ3JhZGUgIDExMDcwCi0JCQkJU0VSQklBCi0KLTk0LURELTNGICAgKGhleCkJCUErViBMaW5rIFRlY2hub2xvZ2llcywgQ29ycC4KLTk0REQzRiAgICAgKGJhc2UgMTYpCQlBK1YgTGluayBUZWNobm9sb2dpZXMsIENvcnAuCi0JCQkJNUYuLCBOby41NTAsIFhpYW56aGVuZyAybmQgUmQuCi0JCQkJWmh1YmVpIENpdHkgSHNpbmNodSBDb3VudHJ5IDMwMjY4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05NC1FMi0yNiAgIChoZXgpCQlELiBPUnRpeiBDb25zdWx0aW5nLCBMTEMKLTk0RTIyNiAgICAgKGJhc2UgMTYpCQlELiBPUnRpeiBDb25zdWx0aW5nLCBMTEMKLQkJCQkyMjYwMSBOLiAxN3RoIEF2ZW51ZSBTdWl0ZSAyNzAKLQkJCQlQaG9lbml4IEFaIDg1MDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05NC1FNy0xMSAgIChoZXgpCQlYaXJrYSBEYW1hIFBlcnNhZGEgUFQKLTk0RTcxMSAgICAgKGJhc2UgMTYpCQlYaXJrYSBEYW1hIFBlcnNhZGEgUFQKLQkJCQlHZGcgQ00KLQkJCQlKbG4gTWF0cmFtYW4gSSBObyA5Ci0JCQkJSmFrYXJ0YSAgMTMxNTAKLQkJCQlJTkRPTkVTSUEKLQotOTQtRTgtNDggICAoaGV4KQkJRllMREUgTUlDUk8gTFRECi05NEU4NDggICAgIChiYXNlIDE2KQkJRllMREUgTUlDUk8gTFRECi0JCQkJOCBBVlJPRSBDUkVTQ0VOVAotCQkJCUJMQUNLUE9PTCBMQU5DQVNISVJFIEZZNCAyRFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi05NC1GNi05MiAgIChoZXgpCQlHZW1pbmljbyBjby4sTHRkLgotOTRGNjkyICAgICAoYmFzZSAxNikJCUdlbWluaWNvIGNvLixMdGQuCi0JCQkJIzEwMi0xMTEyLCBDaHVudWktVGVjaG5vcGFyaywgMjAwLTEsCi0JCQkJQ2h1bnVpLWRvbmcsIFdvbm1pLWd1Ci0JCQkJQnVjaGVvbi1jaXR5IEt5dW5nZ2ktZG8gNDIwLTg1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05NC1GNy0yMCAgIChoZXgpCQlUaWFuamluIERldmlzZXIgRWxlY3Ryb25pY3MgSW5zdHJ1bWVudCBDby4sIEx0ZAotOTRGNzIwICAgICAoYmFzZSAxNikJCVRpYW5qaW4gRGV2aXNlciBFbGVjdHJvbmljcyBJbnN0cnVtZW50IENvLiwgTHRkCi0JCQkJTm8uNDAgWWliaW4gUm9hZCxOYW5rYWkgZGlzdHJpY3QsCi0JCQkJVGlhbmppbiAgMzAwMTEzCi0JCQkJQ0hJTkEKLQotOTQtRkQtMUQgICAoaGV4KQkJV2hlcmVXaGVuIENvcnAKLTk0RkQxRCAgICAgKGJhc2UgMTYpCQlXaGVyZVdoZW4gQ29ycAotCQkJCTk2QSBGbHlubiBBdmVudWUKLQkJCQlNb3VudGFpbiBWaWV3IENhbGlmb3JuaWEgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LUZFLUY0ICAgKGhleCkJCVNBR0VNQ09NCi05NEZFRjQgICAgIChiYXNlIDE2KQkJU0FHRU1DT00KLQkJCQkyNTAgcm91dGUgZGUgbCdFbXBlcmV1cgotCQkJCVJVRUlMIE1BTE1BSVNPTiAgOTI4NDgKLQkJCQlGUkFOQ0UKLQotOTgtMDMtQTAgICAoaGV4KQkJQUJCIG4udi4gUG93ZXIgUXVhbGl0eSBQcm9kdWN0cwotOTgwM0EwICAgICAoYmFzZSAxNikJCUFCQiBuLnYuIFBvd2VyIFF1YWxpdHkgUHJvZHVjdHMKLQkJCQkxMCBhbGzvv71lIGNlbnRyYWxlCi0JCQkJSnVtZXQgIDYwNDAKLQkJCQlCRUxHSVVNCi0KLTk4LTAzLUQ4ICAgKGhleCkJCUFwcGxlLCBJbmMuCi05ODAzRDggICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk4LTBDLTgyICAgKGhleCkJCVNhbXN1bmcgRWxlY3RybyBNZWNoYW5pY3MKLTk4MEM4MiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm8gTWVjaGFuaWNzCi0JCQkJTWV0YW4gRG9uZyAzMTQsIFlvdW5ndG9uZyBHdQotCQkJCVN1d29uIEt5dW5nLWdpIERvLiA0NDMtNzQzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTk4LTBFLUU0ICAgKGhleCkJCVBSSVZBVEUKLTk4MEVFNCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotOTgtMjktM0YgICAoaGV4KQkJRnVqaWFuIFN0YXJ0IENvbXB1dGVyIEVxdWlwbWVudCBDby4sTHRkCi05ODI5M0YgICAgIChiYXNlIDE2KQkJRnVqaWFuIFN0YXJ0IENvbXB1dGVyIEVxdWlwbWVudCBDby4sTHRkCi0JCQkJTm8uNjggSG9uZ3NoYW5neXVhbiBSb2FkLCAgCi0JCQkJRnV6aG91IENpdHksICBGdWppYW4gUHJvdmluY2UsIDM1MDAwMgotCQkJCUNISU5BCi0KLTk4LTJDLUJFICAgKGhleCkJCTJXaXJlCi05ODJDQkUgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGt3eQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC0yRC01NiAgIChoZXgpCQlSZXNvbHV0aW9uIEF1ZGlvCi05ODJENTYgICAgIChiYXNlIDE2KQkJUmVzb2x1dGlvbiBBdWRpbwotCQkJCTg4IEhvZmYgU3RyZWV0ICMxMDYKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC0zMC0wMCAgIChoZXgpCQlCZWlqaW5nIEtFTUFDT00gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotOTgzMDAwICAgICAoYmFzZSAxNikJCUJlaWppbmcgS0VNQUNPTSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJUm9vbSAyMDgsIEJ1aWxkaW5nIDYsIE5vLjUwLCBYaSBTYW4gSHVhbiBCZWkgUm9hZCAKLQkJCQlIYWlkaWFuIERpc3RyaWN0LCAKLQkJCQlCZWlqaW5nICAxMDAwNDQKLQkJCQlDSElOQQotCi05OC0zNS1COCAgIChoZXgpCQlBc3NlbWJsZWQgUHJvZHVjdHMgQ29ycG9yYXRpb24KLTk4MzVCOCAgICAgKGJhc2UgMTYpCQlBc3NlbWJsZWQgUHJvZHVjdHMgQ29ycG9yYXRpb24KLQkJCQkxMTUgRS4gTGluZGVuCi0JCQkJUm9nZXJzIEFya2Fuc2FzIDcyNzU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC00Mi00NiAgIChoZXgpCQlTT0wgSU5EVVNUUlkgUFRFLiwgTFRECi05ODQyNDYgICAgIChiYXNlIDE2KQkJU09MIElORFVTVFJZIFBURS4sIExURAotCQkJCSAxIE5PUlRIIEJSSURHRSBSRC4sCi0JCQkJICMyNC0wNSwgSElHSCBTVFJFRVQgQ0VOVFJFLAotCQkJCTE3OTA5NAotCQkJCVNJTkdBUE9SRQotCi05OC00Qi00QSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCi05ODRCNEEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHkgSW5jLgotCQkJCTYwMCBOb3J0aCBVUyBIaWdod2F5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC00Qi1FMSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTk4NEJFMSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtNEUtOTcgICAoaGV4KQkJU3RhcmxpZ2h0IE1hcmtldGluZyAoSC4gSy4pIEx0ZC4KLTk4NEU5NyAgICAgKGJhc2UgMTYpCQlTdGFybGlnaHQgTWFya2V0aW5nIChILiBLLikgTHRkLgotCQkJCTUvRi4sIFNoaW5nIERhbyBJbmR1c3RyaWFsIEJ1aWxkaW5nLCAKLQkJCQkyMzIgQWJlcmRlZW4gTWFpbiBSb2FkCi0JCQkJSE9ORyBLT05HCi0KLTk4LTU5LTQ1ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi05ODU5NDUgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk4LTYwLTIyICAgKGhleCkJCUVNVyBDby4sIEx0ZC4KLTk4NjAyMiAgICAgKGJhc2UgMTYpCQlFTVcgQ28uLCBMdGQuCi0JCQkJODBCLTRMLCA2ODAtMyBHb2phbi1Eb25nCi0JCQkJTmFtZG9uZy1HdQotCQkJCUluY2hlb24gIDQwNS04MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOTgtNjYtRUEgICAoaGV4KQkJSW5kdXN0cmlhbCBDb250cm9sIENvbW11bmljYXRpb25zLCBJbmMuCi05ODY2RUEgICAgIChiYXNlIDE2KQkJSW5kdXN0cmlhbCBDb250cm9sIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTYwMCBBc3BlbiBDb21tb25zCi0JCQkJU3VpdGUgMjEwCi0JCQkJTWlkZGxldG9uIFdJIDUzNTYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC02RC1DOCAgIChoZXgpCQlUT1NISUJBIE1JVFNVQklTSEktRUxFQ1RSSUMgSU5EVVNUUklBTCBTWVNURU1TIENPUlBPUkFUSU9OCi05ODZEQzggICAgIChiYXNlIDE2KQkJVE9TSElCQSBNSVRTVUJJU0hJLUVMRUNUUklDIElORFVTVFJJQUwgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCU1JVEEgNDNNVCBCTERHLgotCQkJCTEzLTE2TUlUQSAzLUNIT01FLE1JTkFUTy1LVQotCQkJCVRPS1lPIEpBUEFOIDEwOC0wMDczCi0JCQkJSkFQQU4KLQotOTgtNzMtQzQgICAoaGV4KQkJU2FnZSBFbGVjdHJvbmljIEVuZ2luZWVyaW5nIExMQwotOTg3M0M0ICAgICAoYmFzZSAxNikJCVNhZ2UgRWxlY3Ryb25pYyBFbmdpbmVlcmluZyBMTEMKLQkJCQkyMDEgVGVycnkgU3QuCi0JCQkJU3VpdGUgMUEKLQkJCQlMb25nbW9udCBDTyA4MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtODktRUQgICAoaGV4KQkJQW5hZGVtIEluZm9ybWF0aW9uIEluYy4KLTk4ODlFRCAgICAgKGJhc2UgMTYpCQlBbmFkZW0gSW5mb3JtYXRpb24gSW5jLgotCQkJCTJuZCBGLCA3OSBaaG91emkgU3RyZWV0LCBOZWlodSBEaXN0cmljdCwgCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTk4LThCLTVEICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTk4OEI1RCAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMjUwIHJvdXRlIGRlIGwnRW1wZXJldXIKLQkJCQlSdWVpbCBNYWxtYWlzb24gIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLTk4LThFLTM0ICAgKGhleCkJCVpIRUpJQU5HIEJPWFNBTSBFTEVDVFJPTklDIENPLixMVEQKLTk4OEUzNCAgICAgKGJhc2UgMTYpCQlaSEVKSUFORyBCT1hTQU0gRUxFQ1RST05JQyBDTy4sTFRECi0JCQkJTm8uMjg4LExPTkdUQU4gUk9BRCwKLQkJCQlKSU5IVUEgQ0lUWSBaSEVKSUFORyBQUk9WSU5DRSwgMzIxMDE3Ci0JCQkJQ0hJTkEKLQotOTgtOEUtREQgICAoaGV4KQkJUmF5Y2hlbSBJbnRlcm5hdGlvbmFsCi05ODhFREQgICAgIChiYXNlIDE2KQkJUmF5Y2hlbSBJbnRlcm5hdGlvbmFsCi0JCQkJQmF5IDEwNSwgCi0JCQkJU2hhbm5vbiBJbmR1c3RyaWFsIEVzdGF0ZSwKLQkJCQlTaGFubm9uLCBDby4gQ2xhcmUgRWlyZQotCQkJCUlSRUxBTkQKLQotOTgtOTQtNDkgICAoaGV4KQkJU2t5d29ydGggV2lyZWxlc3MgVGVjaG5vbG9neSBMdGQuCi05ODk0NDkgICAgIChiYXNlIDE2KQkJU2t5d29ydGggV2lyZWxlc3MgVGVjaG5vbG9neSBMdGQuCi0JCQkJVW5pdCBBIFJtLjNBMDEsIFNreXdvcnRoIEJsZGcuLCBHYW94aW4gQXZlLiAxLlMuLAotCQkJCU5hbnNoYW4gRGlzdHJpY3QgU2hlbnpoZW4gNTE4MDU3Ci0JCQkJQ0hJTkEKLQotOTgtQkMtOTkgICAoaGV4KQkJRWRlbHRlY2ggQ28uLEx0ZC4KLTk4QkM5OSAgICAgKGJhc2UgMTYpCQlFZGVsdGVjaCBDby4sTHRkLgotCQkJCSMzMDIgSmFtYWUgQmxkZywgMTAxMC0yOCwgU2FkYW5nLWRvbmcsIERvbmdqYWs9Z3UKLQkJCQlTZW91bCAgMTU2LTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05OC1EOC04QyAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTk4RDg4QyAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlDQVJSRVRFUkEgQkFTRSBBRVJFQSAjIDU4NTAKLQkJCQlaYXBvcGFuIEphbGlzY28gNDQxMzAKLQkJCQlNRVhJQ08KLQotOTgtREMtRDkgICAoaGV4KQkJVU5JVEVDIENvLiwgTHRkLgotOThEQ0Q5ICAgICAoYmFzZSAxNikJCVVOSVRFQyBDby4sIEx0ZC4KLQkJCQkxLTItMS1TaGlueW9rb2hhbWEKLQkJCQlLb2hva3Uta3UKLQkJCQlZb2tvaGFtYS1zaGkgS2FuYWdhd2EgMjIyLTAwMzMKLQkJCQlKQVBBTgotCi05OC1FMS02NSAgIChoZXgpCQlBY2N1dG9tZQotOThFMTY1ICAgICAoYmFzZSAxNikJCUFjY3V0b21lCi0JCQkJMzIyMiBQaG9lbml4dmlsbGUgUGlrZQotCQkJCU1hbHZlcm4gUEEgMTkzNTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk4LUU3LTlBICAgKGhleCkJCUZveGNvbm4oTmFuSmluZykgQ29tbXVuaWNhdGlvbiBDby4sTHRkLgotOThFNzlBICAgICAoYmFzZSAxNikJCUZveGNvbm4oTmFuSmluZykgQ29tbXVuaWNhdGlvbiBDby4sTHRkLgotCQkJCUEtMkZNaW5mYW5nIEJ1aWxkaW5nIE5vLjE4OSBHdWFuZ3pob3UgUmQgCi0JCQkJTmFuamluZyBKaWFuZyBzdSAyMTAwMjkKLQkJCQlDSElOQQotCi05OC1FQy02NSAgIChoZXgpCQlDb3Nlc3kgQXBTCi05OEVDNjUgICAgIChiYXNlIDE2KQkJQ29zZXN5IEFwUwotCQkJCVR5dHRlYmFlcnZlaiAyCi0JCQkJQW5zIEp5bGxhbmQgREstODY0MwotCQkJCURFTk1BUksKLQotOTgtRjUtMzcgICAoaGV4KQkJenRlIGNvcnBvcmF0aW9uCi05OEY1MzcgICAgIChiYXNlIDE2KQkJenRlIGNvcnBvcmF0aW9uCi0JCQkJMTIvRi4senRlIFImRCBidWlsZGluZyxrZWppbmFuIFJvYWQsCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTk4LUY4LURCICAgKGhleCkJCU1hcmluaSBJbXBpYW50aSBJbmR1c3RyaWFsaSBzLnIubC4KLTk4RjhEQiAgICAgKGJhc2UgMTYpCQlNYXJpbmkgSW1waWFudGkgSW5kdXN0cmlhbGkgcy5yLmwuCi0JCQkJVmlhIGRlbGxlIFByb3ZpbmNlLCA2QQotCQkJCShab25hIEFydGlnaWFuYWxlKQotCQkJCUNpc3Rlcm5hIGRpIExhdGluYSAgMDQwMTIKLQkJCQlJVEFMWQotCi05OC1GQy0xMSAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTk4RkMxMSAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMzEgVGhlcm95IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLTE4LTc0ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi05QzE4NzQgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTlDLTIyLTBFICAgKGhleCkJCVRBU0NBTiBTZXJ2aWNlIEdtYkgKLTlDMjIwRSAgICAgKGJhc2UgMTYpCQlUQVNDQU4gU2VydmljZSBHbWJICi0JCQkJTWF4LVBsYW5jay1TdHIuIDM4Ci0JCQkJQ29sb2duZSBOUlcgNTA4NTgKLQkJCQlHRVJNQU5ZCi0KLTlDLTI4LUJGICAgKGhleCkJCUNvbnRpbmVudGFsIEF1dG9tb3RpdmUgQ3plY2ggUmVwdWJsaWMgcy5yLm8uCi05QzI4QkYgICAgIChiYXNlIDE2KQkJQ29udGluZW50YWwgQXV0b21vdGl2ZSBDemVjaCBSZXB1YmxpYyBzLnIuby4KLQkJCQlQcu+/vW15c2xvdu+/vSAxODUxCi0JCQkJQnJhbmTvv71zIG5hZCBMYWJlbSAgMjUwIDAxIAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTlDLTMxLUI2ICAgKGhleCkJCUt1bGl0ZSBTZW1pY29uZHVjdG9yIFByb2R1Y3RzIEluYwotOUMzMUI2ICAgICAoYmFzZSAxNikJCUt1bGl0ZSBTZW1pY29uZHVjdG9yIFByb2R1Y3RzIEluYwotCQkJCTEgV2lsbG93IFRyZWUgUmQKLQkJCQlMZW9uaWEgTkogMDc2MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLTQxLTdDICAgKGhleCkJCUhhbWUgIFRlY2hub2xvZ3kgQ28uLCAgTGltaXRlZCAKLTlDNDE3QyAgICAgKGJhc2UgMTYpCQlIYW1lICBUZWNobm9sb2d5IENvLiwgIExpbWl0ZWQgCi0JCQkJNUYsIE5vLiAxOCBIaWdoIFRlY2ggTWlkZGxlIEF2ZW51ZSBPbmUsIEhpZ2ggVGVjaCBJbmR1c3RyaWFsIFBhcmssIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi05Qy00NS02MyAgIChoZXgpCQlESU1FUCBTaXN0ZW1hcwotOUM0NTYzICAgICAoYmFzZSAxNikJCURJTUVQIFNpc3RlbWFzCi0JCQkJQXYuIE1PZmFycmVqLCA4NDAKLQkJCQlTYW8gUGF1bG8gU1AgMDUzMTEwMDAKLQkJCQlCUkFaSUwKLQotOUMtNEEtN0IgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTlDNEE3QiAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1IE91IDkwNTkwCi0JCQkJRklOTEFORAotCi05Qy00RS0yMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi05QzRFMjAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy00RS04RSAgIChoZXgpCQlBTFQgU3lzdGVtcyBMdGQKLTlDNEU4RSAgICAgKGJhc2UgMTYpCQlBTFQgU3lzdGVtcyBMdGQKLQkJCQlQb0JveCAxNwotCQkJCUhlbHNpbmtpICAwMDc2MQotCQkJCUZJTkxBTkQKLQotOUMtNTUtQjQgICAoaGV4KQkJSS5TLkUuIFMuci5sLgotOUM1NUI0ICAgICAoYmFzZSAxNikJCUkuUy5FLiBTLnIubC4KLQkJCQlWaWEgZGVsbGEgQ2FuYXBpZ2xpYSA1Ci0JCQkJTWlnbGlhcmlubyBQaXNhbm8gUElTQSA1NjAxMAotCQkJCUlUQUxZCi0KLTlDLTVCLTk2ICAgKGhleCkJCU5NUiBDb3Jwb3JhdGlvbgotOUM1Qjk2ICAgICAoYmFzZSAxNikJCU5NUiBDb3Jwb3JhdGlvbgotCQkJCTNGIEVzcHJpdCBCdWlsZC4sMS0zLTYgTmlzaGktTmlwcG9yaQotCQkJCUFyYWthd2EtS3UgVG9reW8gMTE2LTAwMTMKLQkJCQlKQVBBTgotCi05Qy01RC05NSAgIChoZXgpCQlWVEMgRWxlY3Ryb25pY3MgQ29ycC4KLTlDNUQ5NSAgICAgKGJhc2UgMTYpCQlWVEMgRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQk1RixOby4yMSxTZWMuNixaaG9uZ3hpYW8gRS5SZC4sTmFuZ2FuZyBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTE1NzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTlDLTVFLTczICAgKGhleCkJCUNhbGlicmUgVUsgTHRkCi05QzVFNzMgICAgIChiYXNlIDE2KQkJQ2FsaWJyZSBVSyBMdGQKLQkJCQlDb3Jud2FsbCBIb3VzZQotCQkJCUNvcm53YWxsIFRlcnJhY2UKLQkJCQlCcmFkZm9yZCBXZXN0IFlvcmtzaGlyZSBCRDggN0pTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotOUMtNjQtNUUgICAoaGV4KQkJSGFybWFuIENvbnN1bWVyIEdyb3VwCi05QzY0NUUgICAgIChiYXNlIDE2KQkJSGFybWFuIENvbnN1bWVyIEdyb3VwCi0JCQkJODUwMCBCYWxib2EgQmx2ZAotCQkJCU5vcnRocmlkZ2UgQ0EgOTEzMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLTZBLUJFICAgKGhleCkJCVFFRVMgQXBTLgotOUM2QUJFICAgICAoYmFzZSAxNikJCVFFRVMgQXBTLgotCQkJCU5hdmVybGFuZCAzMSwgMi50dgotCQkJCUdsb3N0cnVwIEhvdmVkc3RhZGVuIDI2MDAKLQkJCQlERU5NQVJLCi0KLTlDLTc1LTE0ICAgKGhleCkJCVdpbGRpeCBzcmwKLTlDNzUxNCAgICAgKGJhc2UgMTYpCQlXaWxkaXggc3JsCi0JCQkJbG9jLiBMZSBCYXNzZSwgMwotCQkJCVRyZW50byBUTiAzODEwMAotCQkJCUlUQUxZCi0KLTlDLTc3LUFBICAgKGhleCkJCU5BREFTTlYKLTlDNzdBQSAgICAgKGJhc2UgMTYpCQlOQURBU05WCi0JCQkJMjIwMywgVC1kb25nLCBQb29uZ2xpbSBJLXdvbiBQbHVzCi0JCQkJU2VvaHllb24tZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04NjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOUMtN0ItRDIgICAoaGV4KQkJTkVPTEFCIENvbnZlcmdlbmNlCi05QzdCRDIgICAgIChiYXNlIDE2KQkJTkVPTEFCIENvbnZlcmdlbmNlCi0JCQkJNEYgWXVqdW5nIGJsZGcuLAotCQkJCVNlb2Noby1kb25nLCBTZW9jaG8tZ3UKLQkJCQlTZW91bCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05Qy04MC03RCAgIChoZXgpCQlTWVNDQUJMRSBLb3JlYSBJbmMuCi05QzgwN0QgICAgIChiYXNlIDE2KQkJU1lTQ0FCTEUgS29yZWEgSW5jLgotCQkJCTJGIEtBTUEgQmxkZyAxNDYxLTE1IFNlY2hvLTNkb25nIFNlb2Noby1HdQotCQkJCVNlb3VsICAxMzctNzIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTlDLThFLTk5ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotOUM4RTk5ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy05My00RSAgIChoZXgpCQlYZXJveCBDb3Jwb3JhdGlvbgotOUM5MzRFICAgICAoYmFzZSAxNikJCVhlcm94IENvcnBvcmF0aW9uCi0JCQkJTWFpbCBTdG9wIDAyMTQgLSA3RQotCQkJCTgwMCBQaGlsbGlwcyBSb2FkCi0JCQkJV2Vic3RlciBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtOTUtRjggICAoaGV4KQkJU21hcnREb29yIFN5c3RlbXMsIExMQwotOUM5NUY4ICAgICAoYmFzZSAxNikJCVNtYXJ0RG9vciBTeXN0ZW1zLCBMTEMKLQkJCQk1NzExLUEgQ2VudGVyIExhbmUKLQkJCQlGYWxscyBDaHVyY2ggVmlyZ2luaWEgMjIwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLUFELUVGICAgKGhleCkJCU9iaWhhaSBUZWNobm9sb2d5LCBJbmMuCi05Q0FERUYgICAgIChiYXNlIDE2KQkJT2JpaGFpIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxOTYzOCBTdGV2ZW5zIENyZWVrIEJsdmQKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLUFGLUNBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTlDQUZDQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLUIyLTA2ICAgKGhleCkJCVBST0NFTlRFQwotOUNCMjA2ICAgICAoYmFzZSAxNikJCVBST0NFTlRFQwotCQkJCVR1cmZzY2hpcHBlciA0MQotCQkJCVdhdGVyaW5nZW4gWnVpZCBIb2xsYW5kIDIyOTJKQwotCQkJCU5FVEhFUkxBTkRTCi0KLTlDLUMwLTc3ICAgKGhleCkJCVByaW50Q291bnRzLCBMTEMKLTlDQzA3NyAgICAgKGJhc2UgMTYpCQlQcmludENvdW50cywgTExDCi0JCQkJNTEwOSBXIExlbW9uIFN0Ci0JCQkJVGFtcGEgRkwgMzM2MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLUMwLUQyICAgKGhleCkJCUNvbmR1Y3RpeC1XYW1wZmxlciBBRwotOUNDMEQyICAgICAoYmFzZSAxNikJCUNvbmR1Y3RpeC1XYW1wZmxlciBBRwotCQkJCVJoZWluc3RyYXNzZSAyNyszMwotCQkJCVdlaWwgYW0gUmhlaW4gQmFkZW4tV++/vXJ0dGVtYmVyZyBELTc5NTc2Ci0JCQkJR0VSTUFOWQotCi05Qy1DRC04MiAgIChoZXgpCQlDSEVORyBVRUkgUFJFQ0lTSU9OIElORFVTVFJZIENPLixMVEQKLTlDQ0Q4MiAgICAgKGJhc2UgMTYpCQlDSEVORyBVRUkgUFJFQ0lTSU9OIElORFVTVFJZIENPLixMVEQKLQkJCQlOby4xOCwgQ2h1bmcgU2hhbiBSZC4sIFR1LUNoZW5nIEluZHVzdHJ5IFBhcmsgCi0JCQkJVHUgQ2hlbmcgQ2l0eSBUYWlwZWkgSHNpZW4gMjM2ODAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTlDLUVCLUU4ICAgKGhleCkJCUJpekxpbmsgKEt1bnNoYW4pIENvLixMdGQKLTlDRUJFOCAgICAgKGJhc2UgMTYpCQlCaXpMaW5rIChLdW5zaGFuKSBDby4sTHRkCi0JCQkJTm8uMTY4LE5hbmhlIFJvYWQsRWNvbm9taWMgJmFtcDsgVGVjaG5vbG9naWNhbCBEZXZlbG9wbWVudCBab25lLAotCQkJCUt1bnNoYW4gQ2l0eSBKaWFuZ3N1IFByb3ZpbmNlIDIxNTMwMAotCQkJCUNISU5BCi0KLTlDLUY2LTFBICAgKGhleCkJCVVUQyBGaXJlIGFuZCBTZWN1cml0eQotOUNGNjFBICAgICAoYmFzZSAxNikJCVVUQyBGaXJlIGFuZCBTZWN1cml0eQotCQkJCTI5NTUgUmVkIEhpbGwgQXZlLgotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLUY5LTM4ICAgKGhleCkJCUFSRVZBIE5QIEdtYkgKLTlDRjkzOCAgICAgKGJhc2UgMTYpCQlBUkVWQSBOUCBHbWJICi0JCQkJU2VsaWdlbnN0YWVkdGVyIFN0ci4gMTAwCi0JCQkJRGVwdC4gUFRDRFYtRwotCQkJCUthcmxzdGVpbiBHZXJtYW55IDYzNzkxCi0JCQkJR0VSTUFOWQotCi05Qy1GRi1CRSAgIChoZXgpCQlPVFNMIEluYy4KLTlDRkZCRSAgICAgKGJhc2UgMTYpCQlPVFNMIEluYy4KLQkJCQlIQU5ST0tVIEJsZGcuIDJGLCAyLTEtMgotCQkJCUthYnVraS1DaG8KLQkJCQlTaGluanVrdS1rdSBUb2t5byAxNjAtMDAyMQotCQkJCUpBUEFOCi0KLUEwLTA3LTk4ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLUEwMDc5OCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC0wQi1CQSAgIChoZXgpCQlTQU1TVU5HIEVMRUNUUk8tTUVDSEFOSUNTCi1BMDBCQkEgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFTEVDVFJPLU1FQ0hBTklDUwotCQkJCVN1d29uLVNpLCBHeWVvbmdnaV9EbywgCi0JCQkJU3V3b24gIDQ0My03NDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTAtMTYtNUMgICAoaGV4KQkJVGFuZ29UZWMgTHRkLgotQTAxNjVDICAgICAoYmFzZSAxNikJCVRhbmdvVGVjIEx0ZC4KLQkJCQlNYWxoYSBUZWNobm9sb2d5IFBhcmsKLQkJCQlKZXJ1c2FsZW0gIDk2OTUxCi0JCQkJSVNSQUVMCi0KLUEwLTE4LTU5ICAgKGhleCkJCVNoZW56aGVuIFlpZGFzaGkgRWxlY3Ryb25pY3MgQ28gTHRkCi1BMDE4NTkgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gWWlkYXNoaSBFbGVjdHJvbmljcyBDbyBMdGQKLQkJCQlCdWlsZGluZyBBMTAsIEZ1a2FuZyBJbmR1c3RyaWFsIFpvbmUKLQkJCQlGdW1pbmcgVmlsbGFnZSxHdWFubGFuIFRvd24sIEJhbydBbgotCQkJCVNoZW56aGVuICBHdWFuZ2RvbmcgIDUxODExMAotCQkJCUNISU5BCi0KLUEwLTIxLUI3ICAgKGhleCkJCU5FVEdFQVIKLUEwMjFCNyAgICAgKGJhc2UgMTYpCQlORVRHRUFSCi0JCQkJMzUwIEVBU1QgUExVTUVSSUEgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTAtMjMtMUIgICAoaGV4KQkJVGVsZUNvbXAgUiZhbXA7RCBDb3JwLgotQTAyMzFCICAgICAoYmFzZSAxNikJCVRlbGVDb21wIFImYW1wO0QgQ29ycC4KLQkJCQkxMDIgU1cgT3JhbmdlIEJsb3Nzb20KLQkJCQlMYWtlIENpdHkgRmxvcmlkYSAzMjAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotQTAtMkUtRjMgICAoaGV4KQkJVW5pdGVkIEludGVncmF0ZWQgU2VydmljZXMgQ28uLCBMZWQuCi1BMDJFRjMgICAgIChiYXNlIDE2KQkJVW5pdGVkIEludGVncmF0ZWQgU2VydmljZXMgQ28uLCBMZWQuCi0JCQkJNUYgTm8gMyBMYW5lIDcgUGFja2FvIFJvYWQgSHNpbnRpZW4KLQkJCQlUYWlwZWkgSHNpZW4gIDIzMTQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BMC0zNi05RiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotQTAzNjlGICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi1BMC0zNi1GQSAgIChoZXgpCQlFdHR1cyBSZXNlYXJjaCBMTEMKLUEwMzZGQSAgICAgKGJhc2UgMTYpCQlFdHR1cyBSZXNlYXJjaCBMTEMKLQkJCQkxMDQzIE4gU2hvcmVsaW5lIEJsdmQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC0zQS03NSAgIChoZXgpCQlQU1MgQmVsZ2l1bSBOLlYuCi1BMDNBNzUgICAgIChiYXNlIDE2KQkJUFNTIEJlbGdpdW0gTi5WLgotCQkJCUhvb2d2ZWxkIDUwCi0JCQkJRGVuZGVybW9uZGUgIDkyMDAKLQkJCQlCRUxHSVVNCi0KLUEwLTQwLTI1ICAgKGhleCkJCUFjdGlvbmNhYmxlLCBJbmMuCi1BMDQwMjUgICAgIChiYXNlIDE2KQkJQWN0aW9uY2FibGUsIEluYy4KLQkJCQk5OTggV2VzdGx5bm4gV2F5Ci0JCQkJU3VpdGUgNAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTAtNDAtNDEgICAoaGV4KQkJU0FNV09ORkEgQ28uLEx0ZC4KLUEwNDA0MSAgICAgKGJhc2UgMTYpCQlTQU1XT05GQSBDby4sTHRkLgotCQkJCTQ3MC01LCBNb29uaHl1bjItRG9uZwotCQkJCU5hbS1HdSwgCi0JCQkJQnVzYW4gIDYwOC0wNDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTAtNEUtMDQgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUEwNEUwNCAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU5MAotCQkJCUZJTkxBTkQKLQotQTAtNTUtREUgICAoaGV4KQkJUGFjZSBwbGMKLUEwNTVERSAgICAgKGJhc2UgMTYpCQlQYWNlIHBsYwotCQkJCVNhbHRzIE1pbGwKLQkJCQlWaWN0b3JpYSBSb2FkCi0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQxOCAzTEYKLQkJCQlVTklURUQgS0lOR0RPTQotCi1BMC01OS0zQSAgIChoZXgpCQlWLkQuUy4gVmlkZW8gRGlzcGxheSBTeXN0ZW1zIHNybAotQTA1OTNBICAgICAoYmFzZSAxNikJCVYuRC5TLiBWaWRlbyBEaXNwbGF5IFN5c3RlbXMgc3JsCi0JCQkJVmlhIERlbCBQYW50YW5vIDcxCi0JCQkJU0NBTkRJQ0NJIEZJIDUwMDE4Ci0JCQkJSVRBTFkKLQotQTAtNUQtQzEgICAoaGV4KQkJVE1DVCBDby4sIExURC4KLUEwNURDMSAgICAgKGJhc2UgMTYpCQlUTUNUIENvLiwgTFRELgotCQkJCTVGLTU2MSwgIzE5LTExIFNhbkNob25nIFJkLgotCQkJCU5hbkdhbmcgRGlzdHJpY3QuCi0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUEwLTVELUU3ICAgKGhleCkJCURJUkVDVFYsIEluYy4KLUEwNURFNyAgICAgKGJhc2UgMTYpCQlESVJFQ1RWLCBJbmMuCi0JCQkJMjIzMCBFLiBJbXBlcmlhbCBId3kKLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC02OS04NiAgIChoZXgpCQlXZWxsYXYgVGVjaG5vbG9naWVzIEx0ZAotQTA2OTg2ICAgICAoYmFzZSAxNikJCVdlbGxhdiBUZWNobm9sb2dpZXMgTHRkCi0JCQkJMTVGIERlc2F5IEJ1aWxkaW5nCi0JCQkJTm8uMTIgWXVuc2hhbiBXZXN0IEF2ZS4KLQkJCQlIdWl6aG91IEd1YW5nZG9uZyA1MTYwMDMKLQkJCQlDSElOQQotCi1BMC02QS0wMCAgIChoZXgpCQlWZXJpbGluayBDb3Jwb3JhdGlvbgotQTA2QTAwICAgICAoYmFzZSAxNikJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi0JCQkJMTI3IEpldHBsZXggQ2lyY2xlCi0JCQkJTWFkaXNvbiBBTCAzNTc1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTAtNzEtQTkgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUEwNzFBOSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU5MAotCQkJCUZJTkxBTkQKLQotQTAtNzMtMzIgICAoaGV4KQkJQ2FzaG1hc3RlciBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLUEwNzMzMiAgICAgKGJhc2UgMTYpCQlDYXNobWFzdGVyIEludGVybmF0aW9uYWwgTGltaXRlZAotCQkJCUZhaXJ5a2lyayBSb2FkCi0JCQkJUm9zeXRoIEZpZmUgS1kxMSAyUVEKLQkJCQlVTklURUQgS0lOR0RPTQotCi1BMC03NS05MSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLUEwNzU5MSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTAtODItQzcgICAoaGV4KQkJUC5ULkkgQ28uLExURAotQTA4MkM3ICAgICAoYmFzZSAxNikJCVAuVC5JIENvLixMVEQKLQkJCQkxLTUtMSxUc3VydW1pZGFuCi0JCQkJS29yaXlhbWEtc2hpIEZ1a3VzaGltYSA5NjMtODg2MQotCQkJCUpBUEFOCi0KLUEwLTg4LUI0ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotQTA4OEI0ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotQTAtOEMtOUIgICAoaGV4KQkJWHRyZW1lIFRlY2hub2xvZ2llcyBDb3JwCi1BMDhDOUIgICAgIChiYXNlIDE2KQkJWHRyZW1lIFRlY2hub2xvZ2llcyBDb3JwCi0JCQkJMjAwIDQ2MTYgVmFsaWFudCBEciBOVwotCQkJCUNhbGdhcnkgQUIgVDNBMFg5Ci0JCQkJQ0FOQURBCi0KLUEwLTk4LTA1ICAgKGhleCkJCU9wZW5Wb3ggQ29tbXVuaWNhdGlvbiBDbyBMdGQKLUEwOTgwNSAgICAgKGJhc2UgMTYpCQlPcGVuVm94IENvbW11bmljYXRpb24gQ28gTHRkCi0JCQkJRjIsQnVpbGRpbmcgTm8uMTQsU2hhbmdzaGEgU2NpZW5jZSAmCi0JCQkJVGVjaG5vbG9neSBQYXJrLE5vLjkyODMsQmluaGUgUm9hZAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwMzEKLQkJCQlDSElOQQotCi1BMC05OC1FRCAgIChoZXgpCQlTaGFuZG9uZyBJbnRlbGxpZ2VudCBPcHRpY2FsIENvbW11bmljYXRpb24gRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi1BMDk4RUQgICAgIChiYXNlIDE2KQkJU2hhbmRvbmcgSW50ZWxsaWdlbnQgT3B0aWNhbCBDb21tdW5pY2F0aW9uIERldmVsb3BtZW50IENvLiwgTHRkLgotCQkJCU5vLjE0OSBZaW5nY3VpIFJvYWQsVG9yY2ggVG93bixBZHZhbmNlZCBUZWNobmlxdWUgRGV2ZWxvcG1lbnQgQXJlYQotCQkJCUppbmluZyBTaGFuZG9uZyAyNzIwMjMKLQkJCQlDSElOQQotCi1BMC05QS01QSAgIChoZXgpCQlUaW1lIERvbWFpbgotQTA5QTVBICAgICAoYmFzZSAxNikJCVRpbWUgRG9tYWluCi0JCQkJMzMwIFd5bm4gRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC1BNy02MyAgIChoZXgpCQlQb2x5dHJvbiBWZXJ0cmllYiBHbWJICi1BMEE3NjMgICAgIChiYXNlIDE2KQkJUG9seXRyb24gVmVydHJpZWIgR21iSAotCQkJCUxhbmd3aWVzZW53ZWcgNjQtNzEKLQkJCQlCYWQgV2lsZGJhZCBCYWRlbi1XdWVydHRlbWJlcmcgNzUzMjMKLQkJCQlHRVJNQU5ZCi0KLUEwLUFBLUZEICAgKGhleCkJCUVyYVRoaW5rIFRlY2hub2xvZ2llcyBDb3JwLgotQTBBQUZEICAgICAoYmFzZSAxNikJCUVyYVRoaW5rIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCTI4OSBCaXNoZW5nIFJvYWQgQnVpbGRpbmcgNCxGbG9vciA0IAotCQkJCVNoYW5naGFpICAyMDEyMDQKLQkJCQlDSElOQQotCi1BMC1CNS1EQSAgIChoZXgpCQlIb25nS29uZyBUSFRGIENvLiwgTHRkCi1BMEI1REEgICAgIChiYXNlIDE2KQkJSG9uZ0tvbmcgVEhURiBDby4sIEx0ZAotCQkJCTJGLFNlY3RvciBDIG9mIFRzaW5naHVhIFVuaXZlcnNpdHkgQWNhZGVteSwgCi0JCQkJSGktVGVjaCBQYXJrKFNvdXRoKSxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUEwLUI2LTYyICAgKGhleCkJCUFjdXR2aXN0YSBJbm5vdmF0aW9uIENvLiwgTHRkLgotQTBCNjYyICAgICAoYmFzZSAxNikJCUFjdXR2aXN0YSBJbm5vdmF0aW9uIENvLiwgTHRkLgotCQkJCTJGLTEsIE5vLiAyMCBBbGxleSAxLCBMYW5lIDc2OCwgU2VjLiA0Ci0JCQkJUGEtVGVoIFJkLiwgCi0JCQkJVGFpcGVpIENpdHkgIDExNTc3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BMC1COS1FRCAgIChoZXgpCQlTa3l0YXAKLUEwQjlFRCAgICAgKGJhc2UgMTYpCQlTa3l0YXAKLQkJCQk3MTAgMm5kIEF2ZSBTdWl0ZSAxMTMwCi0JCQkJU2VhdHRsZSBXQSA5ODEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTAtQkYtQTUgICAoaGV4KQkJQ09SRVNZUwotQTBCRkE1ICAgICAoYmFzZSAxNikJCUNPUkVTWVMKLQkJCQkyNjctMSBOb25oeXVuZG9uZyBHYW5nbmFtZ3UKLQkJCQlKSyBCbGQuLCAjMzAxCi0JCQkJU2VvdWwgIDEzNS04MzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTAtREQtRTUgICAoaGV4KQkJU0hBUlAgQ09SUE9SQVRJT04KLUEwRERFNSAgICAgKGJhc2UgMTYpCQlTSEFSUCBDT1JQT1JBVElPTgotCQkJCTIyLTIyLE5hZ2Fpa2UtY2hvLAotCQkJCUFiZW5vLUtVLAotCQkJCU9zYWthLCAgNTQ1LTg1MjIsCi0JCQkJSkFQQU4KLQotQTAtREUtMDUgICAoaGV4KQkJSlNDICJJcmJpcy1UIgotQTBERTA1ICAgICAoYmFzZSAxNikJCUpTQyAiSXJiaXMtVCIKLQkJCQk1LCBMaXRleW5heWEgc3RyZWV0Ci0JCQkJVHVsYSAgMzAwMDAyCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLUEwLUUyLTk1ICAgKGhleCkJCURBVCBTeXN0ZW0gQ28uLEx0ZAotQTBFMjk1ICAgICAoYmFzZSAxNikJCURBVCBTeXN0ZW0gQ28uLEx0ZAotCQkJCUd1biBTYW4gRnJlZSBUcmFkZSBBcmVhIDUxMS0xICwKLQkJCQlPc2lrIGRvIGRvbmcgR3Vuc2FuIHNpIEplb24gQnVrIAotCQkJCTU3My01NDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTAtRTktREIgICAoaGV4KQkJTmluZ2JvIEZyZWVXaW5ncyBUZWNobm9sb2dpZXMgQ28uLEx0ZAotQTBFOURCICAgICAoYmFzZSAxNikJCU5pbmdibyBGcmVlV2luZ3MgVGVjaG5vbG9naWVzIENvLixMdGQKLQkJCQlSb29tIDExMDctMTEwOCwgTm8gMjk4IFh1ZVNoaSBSb2FkIFlpbnpob3UgRGlzdHJpY3QgTmluZ2JvLCAKLQkJCQlOaW5nYm8gWmhlamlhbmcgMzE1MDAwCi0JCQkJQ0hJTkEKLQotQTAtRjItMTcgICAoaGV4KQkJR0UgTWVkaWNhbCBTeXN0ZW0oQ2hpbmEpIENvLiwgTHRkLiAKLUEwRjIxNyAgICAgKGJhc2UgMTYpCQlHRSBNZWRpY2FsIFN5c3RlbShDaGluYSkgQ28uLCBMdGQuIAotCQkJCU5vLjE5LCBDaGFuZ0ppYW5nIFJvYWQgCi0JCQkJV3V4aSBKaWFuZ3N1IDIxNDAyOCAKLQkJCQlDSElOQQotCi1BNC0wQy1DMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1BNDBDQzMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC0xMy00RSAgIChoZXgpCQlMdXh1bCBXaXJlbGVzcwotQTQxMzRFICAgICAoYmFzZSAxNikJCUx1eHVsIFdpcmVsZXNzCi0JCQkJMzU3IFMgNjcwIFcKLQkJCQlMaW5kb24gVVQgODQwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LTFCLUMwICAgKGhleCkJCUZhc3RlYyBJbWFnaW5nIENvcnBvcmF0aW9uCi1BNDFCQzAgICAgIChiYXNlIDE2KQkJRmFzdGVjIEltYWdpbmcgQ29ycG9yYXRpb24KLQkJCQkxNzE1MCBWaWEgRGVsIENhbXBvCi0JCQkJU3VpdGUgMzAxCi0JCQkJU2FuIERpZWdvIENhbGlmb3JuaWEgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LTIxLThBICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotQTQyMThBICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCUNBUlJFVEVSQSBCQVNFIEFFUkVBICMgNTg1MAotCQkJCVphcG9wYW4gSmFsaXNjbyA0NDEzMAotCQkJCU1FWElDTwotCi1BNC0yNC1CMyAgIChoZXgpCQlGbGF0RnJvZyBMYWJvcmF0b3JpZXMgQUIKLUE0MjRCMyAgICAgKGJhc2UgMTYpCQlGbGF0RnJvZyBMYWJvcmF0b3JpZXMgQUIKLQkJCQlNYWdpc3RyYXRzdu+/vWdlbiAxMAotCQkJCUx1bmQgU2thbmUgMjI2NDMKLQkJCQlTV0VERU4KLQotQTQtMzMtRDEgICAoaGV4KQkJRmlicmxpbmsgQ29tbXVuaWNhdGlvbnMgQ28uLEx0ZC4KLUE0MzNEMSAgICAgKGJhc2UgMTYpCQlGaWJybGluayBDb21tdW5pY2F0aW9ucyBDby4sTHRkLgotCQkJCTI4RiBBZ2VzIFdlYWx0aCBXb3JsZCwgTm8uMSBIYW5nZmVuZyBSb2FkCi0JCQkJRmVuZ3RhaSBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA3MAotCQkJCUNISU5BCi0KLUE0LTM4LUZDICAgKGhleCkJCVBsYXN0aWMgTG9naWMKLUE0MzhGQyAgICAgKGJhc2UgMTYpCQlQbGFzdGljIExvZ2ljCi0JCQkJNjUwIENhc3RybyBTdC4sIFN1aXRlIDUwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LTRCLTE1ICAgKGhleCkJCVN1biBDdXBpZCBUZWNobm9sb2d5IChISykgTFRECi1BNDRCMTUgICAgIChiYXNlIDE2KQkJU3VuIEN1cGlkIFRlY2hub2xvZ3kgKEhLKSBMVEQKLQkJCQlSb29tIDEyMDEtMywgMTIvRi4sIFRvd2VyIDYKLQkJCQlDaGluYSBIb25nIEtvbmcgQ2l0eQotCQkJCVRzaW0gU2hhIFRzdWkgIAotCQkJCUhPTkcgS09ORwotCi1BNC01MC01NSAgIChoZXgpCQlidXN3YXJlLmRlCi1BNDUwNTUgICAgIChiYXNlIDE2KQkJYnVzd2FyZS5kZQotCQkJCUxvZXNzbml0emdydW5kc3RyYXNzZSAxMTVhCi0JCQkJTW9yaXR6YnVyZyBTYXhvbnkgMDE0NjgKLQkJCQlHRVJNQU5ZCi0KLUE0LTU2LTFCICAgKGhleCkJCU1DT1QgQ29ycG9yYXRpb24KLUE0NTYxQiAgICAgKGJhc2UgMTYpCQlNQ09UIENvcnBvcmF0aW9uCi0JCQkJWW9nb2hpZ2FzaGkgMS01LTEyCi0JCQkJTWF0c3V5YW1hIGNpdHkgRWhpbWUgcHJlZmVjdHVyZSA3OTAtMDA0NAotCQkJCUpBUEFOCi0KLUE0LTVBLTFDICAgKGhleCkJCXNtYXJ0LWVsZWN0cm9uaWMgR21iSAotQTQ1QTFDICAgICAoYmFzZSAxNikJCXNtYXJ0LWVsZWN0cm9uaWMgR21iSAotCQkJCUluZHVzdHJpZXN0cmFzc2UgMjkKLQkJCQlTdC4gR2VvcmdlbiBCYWRlbi1XdWVydHRlbWJlcmcgNzgxMjIKLQkJCQlHRVJNQU5ZCi0KLUE0LTVDLTI3ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotQTQ1QzI3ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLUE0LTY3LTA2ICAgKGhleCkJCUFwcGxlIEluYwotQTQ2NzA2ICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtNzktRTQgICAoaGV4KQkJS0xJTkZPIENvcnAKLUE0NzlFNCAgICAgKGJhc2UgMTYpCQlLTElORk8gQ29ycAotCQkJCTMwMSA5MjMgd29scHl1bmctZG9uZwotCQkJCXNlbyBndQotCQkJCURhZWplb24gIDMwMi04NTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTQtN0EtQTQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLUE0N0FBNCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LTdDLTFGICAgKGhleCkJCUdsb2JhbCBNaWNyb3dhdmUgU3lzdGVtcyBJbmMuCi1BNDdDMUYgICAgIChiYXNlIDE2KQkJR2xvYmFsIE1pY3Jvd2F2ZSBTeXN0ZW1zIEluYy4KLQkJCQkxOTE2IFBhbG9tYXIgT2FrcyBXYXksIFN1aXRlIDEwMAotCQkJCUNhcmxzYmFkIENBIDkyMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC04NS02QiAgIChoZXgpCQlRIEVsZWN0cm9uaWNzIEx0ZAotQTQ4NTZCICAgICAoYmFzZSAxNikJCVEgRWxlY3Ryb25pY3MgTHRkCi0JCQkJQmVjayBIb3VzZSwgSGF3a3N3b3J0aCBSb2FkCi0JCQkJSG9yc2ZvcnRoCi0JCQkJTGVlZHMgV2VzdCBZb3Jrc2hpcmUgTFMxOCA0SlAKLQkJCQlVTklURUQgS0lOR0RPTQotCi1BNC05OS04MSAgIChoZXgpCQlGdUppYW4gRWxpdGUgUG93ZXIgVGVjaCBDTy4sTFRELgotQTQ5OTgxICAgICAoYmFzZSAxNikJCUZ1SmlhbiBFbGl0ZSBQb3dlciBUZWNoIENPLixMVEQuCi0JCQkJOHRoIEZsb29y77+977+9NTYgR3VhblJpIFJvYWQgCi0JCQkJU29mdHdhcmUgU3F1YXJlIChQaGFzZSBUd28pLCBTaW1pbmcgRGlzdHJpY3QgCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDkKLQkJCQlDSElOQQotCi1BNC05Qi0xMyAgIChoZXgpCQlCdXJyb3VnaHMgUGF5bWVudCBTeXN0ZW1zLCBJbmMuCi1BNDlCMTMgICAgIChiYXNlIDE2KQkJQnVycm91Z2hzIFBheW1lbnQgU3lzdGVtcywgSW5jLgotCQkJCTQxMTAwIFBseW1vdXRoIFJvYWQKLQkJCQlQbHltb3V0aCBNaWNoaWdhbiA0ODE3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtQTgtMEYgICAoaGV4KQkJU2hlbnpoZW4gQ29zaGlwIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotQTRBODBGICAgICAoYmFzZSAxNikJCVNoZW56aGVuIENvc2hpcCBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQlSYWluYm93IEJsZGcuLCBOb3J0aCwgSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1BNC1BRC0wMCAgIChoZXgpCQlSYWdzZGFsZSBUZWNobm9sb2d5Ci1BNEFEMDAgICAgIChiYXNlIDE2KQkJUmFnc2RhbGUgVGVjaG5vbG9neQotCQkJCTUwNSBFY2hvIExhbmUKLQkJCQlQTyBCb3ggMTIwNTA3Ci0JCQkJQmlnIEJlYXIgTGFrZSBDQSA5MjMxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtQUQtQjggICAoaGV4KQkJVml0ZWMgR3JvdXAsIENhbWVyYSBEeW5hbWljcyBMdGQKLUE0QURCOCAgICAgKGJhc2UgMTYpCQlWaXRlYyBHcm91cCwgQ2FtZXJhIER5bmFtaWNzIEx0ZAotCQkJCVdpbGxpYW0gVmludGVuIEJ1aWxkaW5nCi0JCQkJV2VzdGVybiBXYXkKLQkJCQlCdXJ5IFN0IEVkbXVuZHMgU3VmZm9sayBJUDMzIDNUQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUE0LUFFLTlBICAgKGhleCkJCU1hZXN0cm8gV2lyZWxlc3MgU29sdXRpb25zIGx0ZC4KLUE0QUU5QSAgICAgKGJhc2UgMTYpCQlNYWVzdHJvIFdpcmVsZXNzIFNvbHV0aW9ucyBsdGQuCi0JCQkJMzYvRgotCQkJCTExOCBDb25uYXVnaHQgUm9hZCBXZXN0Ci0JCQkJU2hldW5nIFdhbiAgCi0JCQkJSE9ORyBLT05HCi0KLUE0LUIxLTIxICAgKGhleCkJCUFyYW50aWEgMjAxMCBTLkwuCi1BNEIxMjEgICAgIChiYXNlIDE2KQkJQXJhbnRpYSAyMDEwIFMuTC4KLQkJCQlWb2x0YSBkbyBDYXN0cm8gcy9uCi0JCQkJU2FudGlhZ28gZGUgQ29tcG9zdGVsYSBBIENvcnXvv71hIDE1NzA2Ci0JCQkJU1BBSU4KLQotQTQtQjEtOTcgICAoaGV4KQkJQXBwbGUsIEluYy4KLUE0QjE5NyAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBjYSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtQjEtRUUgICAoaGV4KQkJSC4gWkFOREVSIEdtYkggJiBDby4gS0cKLUE0QjFFRSAgICAgKGJhc2UgMTYpCQlILiBaQU5ERVIgR21iSCAmIENvLiBLRwotCQkJCUFtIEd1dCBXb2xmIDE1Ci0JCQkJQWFjaGVuICA1MjA3MAotCQkJCUdFUk1BTlkKLQotQTQtQjItQTcgICAoaGV4KQkJQWRheHlzIFNvbHV0aW9ucyBBRwotQTRCMkE3ICAgICAoYmFzZSAxNikJCUFkYXh5cyBTb2x1dGlvbnMgQUcKLQkJCQlFaWNodGFsc3RyYXNzZSA1NQotCQkJCUhvbWJyZWNodGlrb24gQ0ggODYzNAotCQkJCVNXSVRaRVJMQU5ECi0KLUE0LUIzLTZBICAgKGhleCkJCUpTQyBTRE8gQ2hyb21hdGVjCi1BNEIzNkEgICAgIChiYXNlIDE2KQkJSlNDIFNETyBDaHJvbWF0ZWMKLQkJCQk5NCwgU3Ryb2l0ZWxleSBzdHJlZXQKLQkJCQlZb3Noa2FyLU9sYSBNYXJpIEVsIHJlcHVibGljIDQyNDAwMAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1BNC1CQS1EQiAgIChoZXgpCQlEZWxsIEluYy4KLUE0QkFEQiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC1CRS02MSAgIChoZXgpCQlFdXRyb1Zpc2lvbiBTeXN0ZW0sIEluYy4KLUE0QkU2MSAgICAgKGJhc2UgMTYpCQlFdXRyb1Zpc2lvbiBTeXN0ZW0sIEluYy4KLQkJCQlSbSA0MDMsQnVpbGRpbmczMyxOby42ODAgR3VpcGluZ1JkLFh1aHVpLAotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi1BNC1DMC1FMSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLUE0QzBFMSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi1BNC1DMi1BQiAgIChoZXgpCQlIYW5nemhvdSBMRUFELUlUIEluZm9ybWF0aW9uICYgVGVjaG5vbG9neSBDby4sTHRkCi1BNEMyQUIgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgTEVBRC1JVCBJbmZvcm1hdGlvbiAmIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCUYyIEJ1aWxkZXIgQixYaWRvbWVuIFJvYWQgTk8uMjIKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi1BNC1EMS1EMSAgIChoZXgpCQlFQ090YWxpdHkgTm9ydGggQW1lcmljYQotQTREMUQxICAgICAoYmFzZSAxNikJCUVDT3RhbGl0eSBOb3J0aCBBbWVyaWNhCi0JCQkJNDMwIFMgMm5kIEF2ZW51ZQotCQkJCVBob2VuaXggQVogODUwMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LUQxLUQyICAgKGhleCkJCUFwcGxlLCBJbmMuCi1BNEQxRDIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LURBLTNGICAgKGhleCkJCUJpb25pY3MgQ29ycC4KLUE0REEzRiAgICAgKGJhc2UgMTYpCQlCaW9uaWNzIENvcnAuCi0JCQkJMTQwNiBNYXN0ZXJzIFRvd2VyCi0JCQkJNTUzIERvd2hhLWRvbmcgTWFwby1ndQotCQkJCVNlb3VsICAxMjEtNzQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUE0LURCLTJFICAgKGhleCkJCUtpbmdzcGFuIEVudmlyb25tZW50YWwgTHRkCi1BNERCMkUgICAgIChiYXNlIDE2KQkJS2luZ3NwYW4gRW52aXJvbm1lbnRhbCBMdGQKLQkJCQkxODAgR2lsZm9yZCBSb2FkCi0JCQkJUG9ydGFkb3duIEFybWFnaCBCVDYzIDVMRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUE0LURFLTUwICAgKGhleCkJCVRvdGFsIFdhbHRoZXIgR21iSAotQTRERTUwICAgICAoYmFzZSAxNikJCVRvdGFsIFdhbHRoZXIgR21iSAotCQkJCUZyYW5rZnVydGVyIFJpbmcgMTcKLQkJCQlNdW5pY2ggIDgwODA3Ci0JCQkJR0VSTUFOWQotCi1BNC1FMy0yRSAgIChoZXgpCQlTaWxpY29uICZhbXA7IFNvZnR3YXJlIFN5c3RlbXMgTHRkLgotQTRFMzJFICAgICAoYmFzZSAxNikJCVNpbGljb24gJmFtcDsgU29mdHdhcmUgU3lzdGVtcyBMdGQuCi0JCQkJU291dGggQ291bnR5IEJ1c2luZXNzIFBhcmsKLQkJCQlMZW9wYXJkc3Rvd24gRHVibGluIDE4Ci0JCQkJSVJFTEFORAotCi1BNC1FNy1FNCAgIChoZXgpCQlDb25uZXggR21iSAotQTRFN0U0ICAgICAoYmFzZSAxNikJCUNvbm5leCBHbWJICi0JCQkJRWxiZXN0cmFzc2UgMTIKLQkJCQlPbGRlbmJ1cmcgIDI2MTM1Ci0JCQkJR0VSTUFOWQotCi1BNC1FRC00RSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLUE0RUQ0RSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gVVMgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LUVFLTU3ICAgKGhleCkJCVNFSUtPIEVQU09OIENPUlBPUkFUSU9OCi1BNEVFNTcgICAgIChiYXNlIDE2KQkJU0VJS08gRVBTT04gQ09SUE9SQVRJT04KLQkJCQkzLTMtNSBPV0EKLQkJCQlTVVdBLVNISSBOQUdBTk8tS0VOIDM5Mi04NTAyCi0JCQkJSkFQQU4KLQotQTgtMUItMTggICAoaGV4KQkJWFRTIENPUlAKLUE4MUIxOCAgICAgKGJhc2UgMTYpCQlYVFMgQ09SUAotCQkJCTEwMTI1IE5XIDExNlRIIFdBWSwgU1VJVEUgNQotCQkJCU1FRExFWSBGTE9SSURBIDMzMTc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC0zOS00NCAgIChoZXgpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYwotQTgzOTQ0ICAgICAoYmFzZSAxNikJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC01NS02QSAgIChoZXgpCQlQb2NrZXRuZXQgVGVjaG5vbG9neSBJbmMuCi1BODU1NkEgICAgIChiYXNlIDE2KQkJUG9ja2V0bmV0IFRlY2hub2xvZ3kgSW5jLgotCQkJCVN1aXRlIEIsIDdGLiwgTm8uIDU1MCwgUnVpZSBLd2FuZyBSZC4sIE5laWh1IERpc3RyaWN0LAotCQkJCVRhaXBlaSAgMTE0MjkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUE4LTVCLUIwICAgKGhleCkJCVNoZW56aGVuIERlaG9vIFRlY2hub2xvZ3kgQ28uLEx0ZAotQTg1QkIwICAgICAoYmFzZSAxNikJCVNoZW56aGVuIERlaG9vIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTVDLFRpYW56aGFuIEJ1aWxkaW5nIFRpYW5hbiBDeWJlcnBhcmssCi0JCQkJRnV0aWFuIGRpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmcgRG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi1BOC02Mi1BMiAgIChoZXgpCQlKSVdVTUVESUEgQ08uLCBMVEQuCi1BODYyQTIgICAgIChiYXNlIDE2KQkJSklXVU1FRElBIENPLiwgTFRELgotCQkJCSM5MDIsIERhZXJ1ZyBUZWNobm8gVG93biAxMyd0aCwgNjY0Ci0JCQkJR2FzYW4tZG9uZwotCQkJCUdldW1jaGVvbi1ndSBTZW91bCAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUE4LTYzLURGICAgKGhleCkJCURJU1BM77+9QUlSRSBDT1JQT1JBVElPTgotQTg2M0RGICAgICAoYmFzZSAxNikJCURJU1BM77+9QUlSRSBDT1JQT1JBVElPTgotCQkJCTEzMDAgVmFsbGV5IEhvdXNlIERyLCBTdGUgMTAwCi0JCQkJUm9obmVydCBQYXJrIENBIDk0OTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC02QS02RiAgIChoZXgpCQlSSU0KLUE4NkE2RiAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCA1UjkKLQkJCQlDQU5BREEKLQotQTgtNzAtQTUgICAoaGV4KQkJVW5pQ29tbSBJbmMuCi1BODcwQTUgICAgIChiYXNlIDE2KQkJVW5pQ29tbSBJbmMuCi0JCQkJN0YtNywgTm8uIDcxNiwgQ2h1bmctQ2hlbmcgUm9hZCwKLQkJCQlDaHVuZy1IbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQTgtN0ItMzkgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUE4N0IzOSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU3MAotCQkJCUZJTkxBTkQKLQotQTgtN0UtMzMgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLUE4N0UzMyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotQTgtODctOTIgICAoaGV4KQkJQnJvYWRiYW5kIEFudGVubmEgVHJhY2tpbmcgU3lzdGVtcwotQTg4NzkyICAgICAoYmFzZSAxNikJCUJyb2FkYmFuZCBBbnRlbm5hIFRyYWNraW5nIFN5c3RlbXMKLQkJCQk4OTAyIFZpbmNlbm5lcyBDaXJjbGUsIFN1aXRlIEQtMgotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTgtOEMtRUUgICAoaGV4KQkJTWljcm9NYWRlIEdhbGthIGkgRHJvemR6IHNwLmouCi1BODhDRUUgICAgIChiYXNlIDE2KQkJTWljcm9NYWRlIEdhbGthIGkgRHJvemR6IHNwLmouCi0JCQkJdWwuIFdpZW5pYXdza2llZ28gMTYKLQkJCQlQaWxhIFdpZWxrb3BvbHNraWUgNjQtOTIwCi0JCQkJUE9MQU5ECi0KLUE4LTkyLTJDICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzCi1BODkyMkMgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MKLQkJCQk2MC0zOSAsIEthc2FuLWRvbmcsIEd1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTgtOTMtRTYgICAoaGV4KQkJSklBTkdYSSBKSU5HR0FOR1NIQU4gQ0tJTkcgQ09NTVVOSUNBVElPTiBURUNITk9MT0dZIENPLixMVEQKLUE4OTNFNiAgICAgKGJhc2UgMTYpCQlKSUFOR1hJIEpJTkdHQU5HU0hBTiBDS0lORyBDT01NVU5JQ0FUSU9OIFRFQ0hOT0xPR1kgQ08uLExURAotCQkJCTVGLDMwMWJ1aWxkaW5nLFRhaXJhbiBIaWdoLXRlY2ggcGFyaywgQ2hlZ29uZ21pYW8sRnV0aWFuIHpvbmUsCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODAwMAotCQkJCUNISU5BCi0KLUE4LTk5LTVDICAgKGhleCkJCWFpem8gYWcKLUE4OTk1QyAgICAgKGJhc2UgMTYpCQlhaXpvIGFnCi0JCQkJQnJhbmRzdHJhc3NlIDMzCi0JCQkJU2NobGllcmVuICA4OTUyCi0JCQkJU1dJVFpFUkxBTkQKLQotQTgtOUItMTAgICAoaGV4KQkJaW5Nb3Rpb24gTHRkLgotQTg5QjEwICAgICAoYmFzZSAxNikJCWluTW90aW9uIEx0ZC4KLQkJCQlVbml0IDI3MDkgRXhjaGFuZ2UgVG93ZXIgCi0JCQkJMzMgV2FuZyBDaHVpIFJvYWQg77+9IEtvd2xvb24gQmF5IO+/vSBLTE4KLQkJCQlLTE4KLQkJCQlIT05HIEtPTkcKLQotQTgtQjAtQUUgICAoaGV4KQkJTEVPTkkgCi1BOEIwQUUgICAgIChiYXNlIDE2KQkJTEVPTkkgCi0JCQkJMzk0NSBGcmVlZG9tIENpcmNsZQotCQkJCVN1aXRlIDU1MAotCQkJCVNhbnRhIENsYXJhIENhbGlmb3JuaWEgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE4LUIxLUQ0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUE4QjFENCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE4LUMyLTIyICAgKGhleCkJCVRNLVJlc2VhcmNoIEluYy4KLUE4QzIyMiAgICAgKGJhc2UgMTYpCQlUTS1SZXNlYXJjaCBJbmMuCi0JCQkJSGl5b3NoaSBIb25jaG8gMS0xNS00Ci0JCQkJS29ob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIzLTAwNjIKLQkJCQlKQVBBTgotCi1BOC1DQi05NSAgIChoZXgpCQlFQVNUIEJFU1QgQ08uLCBMVEQuCi1BOENCOTUgICAgIChiYXNlIDE2KQkJRUFTVCBCRVNUIENPLiwgTFRELgotCQkJCTRGLE5PLjk4LFNISU5HIFRFSCBST0FECi0JCQkJU0FOIENIVU5HIENJVFkgIFRBSVBFSSAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUE4LUNFLTkwICAgKGhleCkJCUNWQwotQThDRTkwICAgICAoYmFzZSAxNikJCUNWQwotCQkJCU5vLjM2MSxSZW5odWEgUmQuLAotCQkJCURhbGkgQ2l0eSBUYWljaHVuZyA0MTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUE4LUQzLUM4ICAgKGhleCkJCVdhY2hlbmRvcmZmIEVsZWt0cm9uaWsgIEdtYkggJmFtcDsgQ28uIEtHCi1BOEQzQzggICAgIChiYXNlIDE2KQkJV2FjaGVuZG9yZmYgRWxla3Ryb25payAgR21iSCAmYW1wOyBDby4gS0cKLQkJCQlJbmR1c3RyaWVzdHIuIDcKLQkJCQlHZWlzZW5oZWltICA2NTM2NgotCQkJCUdFUk1BTlkKLQotQTgtRTAtMTggICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUE4RTAxOCAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1ICA5MDIzMAotCQkJCUZJTkxBTkQKLQotQTgtRTMtRUUgICAoaGV4KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4KLUE4RTNFRSAgICAgKGJhc2UgMTYpCQlTb255IENvbXB1dGVyIEVudGVydGFpbm1lbnQgSW5jLgotCQkJCTItNi0yMSBNaW5hbWktQW95YW1hCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNy0wMDYyCi0JCQkJSkFQQU4KLQotQTgtRjItNzQgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotQThGMjc0ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTgtRjQtNzAgICAoaGV4KQkJRnVqaWFuIE5ld2xhbmQgQ29tbXVuaWNhdGlvbiBTY2llbmNlIFRlY2hub2xvZ2llcyBDby4sTHRkLgotQThGNDcwICAgICAoYmFzZSAxNikJCUZ1amlhbiBOZXdsYW5kIENvbW11bmljYXRpb24gU2NpZW5jZSBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLQkJCQlOZXdsYW5kIFNjaWVuY2UgJiBUZWNobm9sb2d5IFBhcmsgTm8uMSBSdWppYW5nIFdlc3QgUmQuLCBNYXdlaSwgCi0JCQkJRnV6aG91IEZ1amlhbiAzNTAwMTUKLQkJCQlDSElOQQotCi1BOC1GOS00QiAgIChoZXgpCQlFbHRleCBFbnRlcnByaXNlIEx0ZC4KLUE4Rjk0QiAgICAgKGJhc2UgMTYpCQlFbHRleCBFbnRlcnByaXNlIEx0ZC4KLQkJCQlPYnllZGluZW5peWEgc3QuLCA5Ci0JCQkJTm92b3NpYmlyc2sgIDYzMDAyMAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1BOC1GQy1CNyAgIChoZXgpCQlDb25zb2xpZGF0ZWQgUmVzb3VyY2UgSW1hZ2luZwotQThGQ0I3ICAgICAoYmFzZSAxNikJCUNvbnNvbGlkYXRlZCBSZXNvdXJjZSBJbWFnaW5nCi0JCQkJMjk0MyBTIFdpbHNvbiBDVCBOVwotCQkJCUdyYW5kIFJhcGlkcyBNSSA0OTUzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQUEtMDAtMDAgICAoaGV4KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLUFBMDAwMCAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotCQkJCUxLRyAxLTIvQTE5Ci0JCQkJNTUwIEtJTkcgU1RSRUVUCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwLTEyODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFBLTAwLTAxICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi1BQTAwMDEgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQlMS0cgMS0yL0ExOQotCQkJCTU1MCBLSU5HIFNUUkVFVAotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MC0xMjg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQS0wMC0wMiAgIChoZXgpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotQUEwMDAyICAgICAoYmFzZSAxNikJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0JCQkJTEtHIDEtMi9BMTkKLQkJCQk1NTAgS0lORyBTVFJFRVQKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAtMTI4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUEtMDAtMDMgICAoaGV4KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLUFBMDAwMyAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotCQkJCUxLRyAxLTIvQTE5Ci0JCQkJNTUwIEtJTkcgU1RSRUVUCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwLTEyODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFBLTAwLTA0ICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi1BQTAwMDQgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQlMS0cgMS0yL0ExOQotCQkJCTU1MCBLSU5HIFNUUkVFVAotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MC0xMjg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy0wMi1DRiAgIChoZXgpCQlSVyBUZWNub2xvZ2lhIEluZHVzdHJpYSBlIENvbWVyY2lvIEx0ZGEKLUFDMDJDRiAgICAgKGJhc2UgMTYpCQlSVyBUZWNub2xvZ2lhIEluZHVzdHJpYSBlIENvbWVyY2lvIEx0ZGEKLQkJCQlDZW50cm8gRW1wcmVzYXJpYWwgUGF1bG8gRnJlZGVyaWNvIGRlIFRvbGVkbywgODAgQQotCQkJCUJhaXJybyBBcmNvIElyaXJzCi0JCQkJU2FudGEgUml0YSBkbyBTYXB1Y2FpIE1pbmFzIEdlcmFpcyAgMzc1NDAwMDAKLQkJCQlCUkFaSUwKLQotQUMtMDYtMTMgICAoaGV4KQkJU2Vuc2Vsb2dpeCBMdGQKLUFDMDYxMyAgICAgKGJhc2UgMTYpCQlTZW5zZWxvZ2l4IEx0ZAotCQkJCTU2IENhcmx0b24gQ291cnQsIEZvcmQgV2lsbGlhbSBNb3JnYW4KLQkJCQlTdC4gQXNhcGggQnVzaW5lc3MgUGFyawotCQkJCVN0LiBBc2FwaCBEZWJpZ2hzaGlyZSBMTDE3IDBKRwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUFDLTE5LTlGICAgKGhleCkJCVNVTkdST1cgUE9XRVIgU1VQUExZIENPLixMVEQuCi1BQzE5OUYgICAgIChiYXNlIDE2KQkJU1VOR1JPVyBQT1dFUiBTVVBQTFkgQ08uLExURC4KLQkJCQlOTy4yIFRpYW5odSBSb2FkLCBOZXcgYW5kIEhpZ2ggVGVjaG5vbG9neSBJbmR1c3RyaWFsIERldmVsb3BtZW50IFpvbmUKLQkJCQlIZWZlaSBBbmh1aSAyMzAwODgKLQkJCQlDSElOQQotCi1BQy0yMC1BQSAgIChoZXgpCQlETUFURUsgQ28uLCBMdGQuCi1BQzIwQUEgICAgIChiYXNlIDE2KQkJRE1BVEVLIENvLiwgTHRkLgotCQkJCTZGLiwgTm8uMTU1LTEsIFNlYy4gMywgV2VueGluIFJkLiwgWGl0dW4gRGlzdC4sCi0JCQkJVGFpY2h1bmcgIDQwNzUzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BQy0yRi1BOCAgIChoZXgpCQlIdW1hbm5peCBDby4sTHRkLgotQUMyRkE4ICAgICAoYmFzZSAxNikJCUh1bWFubml4IENvLixMdGQuCi0JCQkJIzQwMiwgOTgtNCwgU29uZ3BhLURvbmcsIFNvbmdwYS1HdQotCQkJCVNlb3VsICAxMzgtMTcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUFDLTM0LUNCICAgKGhleCkJCVNoYW5oYWkgR0JDT00gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiBMdGQKLUFDMzRDQiAgICAgKGJhc2UgMTYpCQlTaGFuaGFpIEdCQ09NIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4gTHRkCi0JCQkJUm9vbSA2MDIsIEJ1aWxkaW5nIDYsIE5vLjU1NSBEb25nY2h1YW4gUm9hZAotCQkJCVNoYW5naGFpICAgMjAwMjQxCi0JCQkJQ0hJTkEKLQotQUMtNDQtRjIgICAoaGV4KQkJUmV2b2xhYnMgSW5jCi1BQzQ0RjIgICAgIChiYXNlIDE2KQkJUmV2b2xhYnMgSW5jCi0JCQkJNjMgR3JlYXQgUmQKLQkJCQlNYXluYXJkIE1BIDAxNzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy00Ny0yMyAgIChoZXgpCQlHZW5lbGVjCi1BQzQ3MjMgICAgIChiYXNlIDE2KQkJR2VuZWxlYwotCQkJCU9sdml0aWUgNQotCQkJCUlpc2FsbWkgIDc0MTAwCi0JCQkJRklOTEFORAotCi1BQy00QS1GRSAgIChoZXgpCQlIaXNlbnNlIEJyb2FkYmFuZCBNdWx0aW1lZGlhIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLUFDNEFGRSAgICAgKGJhc2UgMTYpCQlIaXNlbnNlIEJyb2FkYmFuZCBNdWx0aW1lZGlhIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlOby4xMSBKaWFuZ3hpIFJvYWQsU2hpbmFuIERpc3RyaWN0Ci0JCQkJUWluZ2RhbyBDaXR5IFNoYW5kb25nIFByb3ZpbmNlIDI2NjA3MQotCQkJCUNISU5BCi0KLUFDLTRGLUZDICAgKGhleCkJCVNWUy1WSVNURUsgR21iSAotQUM0RkZDICAgICAoYmFzZSAxNikJCVNWUy1WSVNURUsgR21iSAotCQkJCU11ZWhsYmFjaHN0ci4gMjAKLQkJCQlTZWVmZWxkIEJZIDgyMjI5Ci0JCQkJR0VSTUFOWQotCi1BQy01MS0zNSAgIChoZXgpCQlNUEkgVEVDSAotQUM1MTM1ICAgICAoYmFzZSAxNikJCU1QSSBURUNICi0JCQkJVmFkc3RydXB2ZWogMzUKLQkJCQlCYWdzdu+/vXJkICBESy0yODgwCi0JCQkJREVOTUFSSwotCi1BQy01OC0zQiAgIChoZXgpCQlIdW1hbiBBc3NlbWJsZXIsIEluYy4KLUFDNTgzQiAgICAgKGJhc2UgMTYpCQlIdW1hbiBBc3NlbWJsZXIsIEluYy4KLQkJCQkyLTEtMTEtNkYKLQkJCQlTaGlidXlhCi0JCQkJU2hpYnV5YS1rdSBUb2t5byAxNTAtMDAwMgotCQkJCUpBUEFOCi0KLUFDLTVFLThDICAgKGhleCkJCVV0aWxsaW5rCi1BQzVFOEMgICAgIChiYXNlIDE2KQkJVXRpbGxpbmsKLQkJCQk4MTcgV29vbGltIExpb25zIFZhbGxleSAxLCAzMTEtMyBTYW5nZGFld29uLWRvbmcgSnVuZ3dvbi1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2MjE2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BQy02MS0yMyAgIChoZXgpCQlEcml2dmVuLCBJbmMuCi1BQzYxMjMgICAgIChiYXNlIDE2KQkJRHJpdnZlbiwgSW5jLgotCQkJCTEyMDAxIE5ldHdvcmsgQm91bGV2YXJkCi0JCQkJQnVpbGRpbmcgRSwgU3VpdGUgMTEwCi0JCQkJU2FuIEFudG9uaW8gVFggNzgyNDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFDLTY3LTA2ICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotQUM2NzA2ICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFDLTZGLTRGICAgKGhleCkJCUVuc3BlcnQgSW5jCi1BQzZGNEYgICAgIChiYXNlIDE2KQkJRW5zcGVydCBJbmMKLQkJCQkyRi4sIERhZWh3YSBCL0QsIAotCQkJCTE2OSBTYW1zdW5nLWRvbmcsIEdhbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1MDkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUFDLTcyLTg5ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotQUM3Mjg5ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotQUMtODAtRDYgICAoaGV4KQkJSGV4YXRyb25pYyBBQgotQUM4MEQ2ICAgICAoYmFzZSAxNikJCUhleGF0cm9uaWMgQUIKLQkJCQlFeHBvcnRnYXRhbiA0N0IKLQkJCQlHb3RoZW5idXJnICA0MjI0NiAKLQkJCQlTV0VERU4KLQotQUMtODEtMTIgICAoaGV4KQkJR2VtdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1BQzgxMTIgICAgIChiYXNlIDE2KQkJR2VtdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDEgSmVuIEFpIFJvYWQgSHNpbmNodSBJbmR1c3RyaWFsIFBhcmsgSHVrb3UsIAotCQkJCU5vLiAxNS0xIFpob25naHVhIFJvYWQsIAotCQkJCUhzaW5jaHUgIDMwMzUyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BQy04My0xNyAgIChoZXgpCQlTaGVuemhlbiBGdXJ0dW5ldGVsIENvbW11bmljYXRpb24gQ28uLCBMdGQKLUFDODMxNyAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBGdXJ0dW5ldGVsIENvbW11bmljYXRpb24gQ28uLCBMdGQKLQkJCQlGMTkgYnVpbGRpbmcgQSB6aG9uZ2tlIHBsYXphIE5hbiB5aSBzdHJlZXQgaGlnaC10ZWNoIHpvbmUsIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1BQy04My1GMCAgIChoZXgpCQlNYWdlbnRhIFZpZGVvIE5ldHdvcmtzCi1BQzgzRjAgICAgIChiYXNlIDE2KQkJTWFnZW50YSBWaWRlbyBOZXR3b3JrcwotCQkJCTIwMDUgRGUgTGEgQ3J1eiBCbHZkCi0JCQkJU3VpdGUgMTUwCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtODYtNzQgICAoaGV4KQkJT3BlbiBNZXNoLCBJbmMuCi1BQzg2NzQgICAgIChiYXNlIDE2KQkJT3BlbiBNZXNoLCBJbmMuCi0JCQkJNTgzNyBOVyBTa3lsaW5lIEJsdmQKLQkJCQlQb3J0bGFuZCBPUiA5NzIyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtODYtN0UgICAoaGV4KQkJQ3JlYXRlIE5ldyBUZWNobm9sb2d5IChISykgTGltaXRlZCBDb21wYW55Ci1BQzg2N0UgICAgIChiYXNlIDE2KQkJQ3JlYXRlIE5ldyBUZWNobm9sb2d5IChISykgTGltaXRlZCBDb21wYW55Ci0JCQkJUm0gQiAxMC9GIEppbkZlbmcgQnVpbGRpbmcsMTAwMSBTaGFuZ0J1IFNvdXRoIFJvYWQsRnVUaWFuIERpc3RyaWN0IAotCQkJCVNoZW4gWmhlbiBHdWFuZyBEb25nIDUxODAzMQotCQkJCUNISU5BCi0KLUFDLThBLUNEICAgKGhleCkJCVJPR0VSIEQuV2Vuc2tlciwgRy5XZW5za2VyIHNwLmouCi1BQzhBQ0QgICAgIChiYXNlIDE2KQkJUk9HRVIgRC5XZW5za2VyLCBHLldlbnNrZXIgc3Auai4KLQkJCQlHb3NjaXN6ZXdvIDU5Ci0JCQkJU3p0dW0gUG9tb3Jza2llIDgyLTQwMAotCQkJCVBPTEFORAotCi1BQy05My0yRiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotQUM5MzJGICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi1BQy05QS05NiAgIChoZXgpCQlMYW50aXEgRGV1dHNjaGxhbmQgR21iSAotQUM5QTk2ICAgICAoYmFzZSAxNikJCUxhbnRpcSBEZXV0c2NobGFuZCBHbWJICi0JCQkJQW0gQ2FtcGVvbiAzCi0JCQkJTmV1YmliZXJnIEJhdmFyaWEgODU1NzkKLQkJCQlHRVJNQU5ZCi0KLUFDLTlCLTg0ICAgKGhleCkJCVNtYWsgVGVjbm9sb2dpYSBlIEF1dG9tYWNhbwotQUM5Qjg0ICAgICAoYmFzZSAxNikJCVNtYWsgVGVjbm9sb2dpYSBlIEF1dG9tYWNhbwotCQkJCUF2LiBTdG8uIEFudG9uaW8sIDIwMSAtIEJlbGEgVmlzdGEKLQkJCQlPc2FzY28gU2FvIFBhdWxvIENFUCAwNjA4Ni0wNzUKLQkJCQlCUkFaSUwKLQotQUMtQTAtMTYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQUNBMDE2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtQUItOEQgICAoaGV4KQkJTHluZ3NvIE1hcmluZSBBL1MKLUFDQUI4RCAgICAgKGJhc2UgMTYpCQlMeW5nc28gTWFyaW5lIEEvUwotCQkJCUx5bmdzbyBBbGxlIDIKLQkJCQlIb3JzaG9sbSAgREstMjk3MAotCQkJCURFTk1BUksKLQotQUMtQkUtNzUgICAoaGV4KQkJVWZpbmUgVGVjaG5vbG9naWVzIENvLixMdGQuCi1BQ0JFNzUgICAgIChiYXNlIDE2KQkJVWZpbmUgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJNDYsIEdldW1nb2stZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nLW5hbS1zaSBHeWVvbmdnaS1kbyA0NjMtODA0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUFDLUJFLUI2ICAgKGhleCkJCVZpc3VhbGVkZ2UgVGVjaG5vbG9neSBDby4sIEx0ZC4KLUFDQkVCNiAgICAgKGJhc2UgMTYpCQlWaXN1YWxlZGdlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTNGTC4tMSBOby4gNzE2LCBaaG9uZ3poZW5nIFJvYWQsIFpob25naGUgQ2l0eSwKLQkJCQlUYWlwZWkgQ291bnR5LCAgIDIzNTExCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BQy1DOS0zNSAgIChoZXgpCQlOZXNzIENvcnBvcmF0aW9uCi1BQ0M5MzUgICAgIChiYXNlIDE2KQkJTmVzcyBDb3Jwb3JhdGlvbgotCQkJCTQvMTY3IFByb3NwZWN0IEhpZ2h3YXkKLQkJCQlTZXZlbiBIaWxscwotCQkJCVN5ZG5leSBOU1cgMjE0NwotCQkJCUFVU1RSQUxJQQotCi1BQy1DQS01NCAgIChoZXgpCQlUZWxsZHVzIFRlY2hub2xvZ2llcyBBQgotQUNDQTU0ICAgICAoYmFzZSAxNikJCVRlbGxkdXMgVGVjaG5vbG9naWVzIEFCCi0JCQkJU2tpZmZlcnbvv71nZW4gMTAyCi0JCQkJTHVuZCAgMjI0IDc4Ci0JCQkJU1dFREVOCi0KLUFDLUNBLUJBICAgKGhleCkJCU1pZG9rdXJhIENvLiwgTHRkLiAKLUFDQ0FCQSAgICAgKGJhc2UgMTYpCQlNaWRva3VyYSBDby4sIEx0ZC4gCi0JCQkJN3RoIEZsb29yIEF6YWJ1ZGFpIEhpbm9raSBidWlsZGluZwotCQkJCSAzLTEtNSBBemFidWRhaSBNaW5hdG8ta3UgCi0JCQkJVG9reW8gIDEwNi0wMDQxCi0JCQkJSkFQQU4KLQotQUMtQ0UtOEYgICAoaGV4KQkJSFdBIFlBTyBURUNITk9MT0dJRVMgQ08uLCBMVEQKLUFDQ0U4RiAgICAgKGJhc2UgMTYpCQlIV0EgWUFPIFRFQ0hOT0xPR0lFUyBDTy4sIExURAotCQkJCU5PLiA2LCBMTi4gNDgsICBOQU5TSU5HIFJELiwKLQkJCQlZT05HS0FORyBDSVRZLCBUQUlOQU4gQ09VTlRZICA3MTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUFDLUQxLTgwICAgKGhleCkJCUNyZXhlbmRvIEJ1c2luZXNzIFNvbHV0aW9ucywgSW5jLgotQUNEMTgwICAgICAoYmFzZSAxNikJCUNyZXhlbmRvIEJ1c2luZXNzIFNvbHV0aW9ucywgSW5jLgotCQkJCTEwMjAxIFMuIDVzdCAgU3QuCi0JCQkJU3VpdGUgQS0yNjUKLQkJCQlQaG9lbml4IEFaIDg1MDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy1ERS00OCAgIChoZXgpCQlQUklWQVRFCi1BQ0RFNDggICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLUFDLUUzLTQ4ICAgKGhleCkJCU1hZGdlVGVjaCwgSW5jCi1BQ0UzNDggICAgIChiYXNlIDE2KQkJTWFkZ2VUZWNoLCBJbmMKLQkJCQk4NzkgTWFwbGUgU3QKLQkJCQlDb250b29jb29rIE5IIDAzMjI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy1FOS1BQSAgIChoZXgpCQlIYXkgU3lzdGVtcyBMdGQKLUFDRTlBQSAgICAgKGJhc2UgMTYpCQlIYXkgU3lzdGVtcyBMdGQKLQkJCQlXYXRlcm1hcmsKLQkJCQlBbGJhIENhbXB1cwotCQkJCUxpdmluZ3N0b24gV2VzdCBMb3RoaWFuIEVINTQgN0VHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQUMtRUEtNkEgICAoaGV4KQkJR0VOSVggSU5GT0NPTU0gQ08uLCBMVEQuCi1BQ0VBNkEgICAgIChiYXNlIDE2KQkJR0VOSVggSU5GT0NPTU0gQ08uLCBMVEQuCi0JCQkJMkYsIERhZWJvIEJsZGcuICMxMDA5LTM0Ci0JCQkJRG9rc2FuLURvbmcsIEtldW1jaGVvbi1HdQotCQkJCVNlb3VsICAxNTMtODI5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUFDLUY5LTdFICAgKGhleCkJCUVMRVNZUyBJTkMuCi1BQ0Y5N0UgICAgIChiYXNlIDE2KQkJRUxFU1lTIElOQy4KLQkJCQlTdWl0IDYyMywgODEyLTEsIEh5b211bi1kb25nCi0JCQkJVWxzYW4gQnVrLWd1IDY4My0zNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQjAtMUItN0MgICAoaGV4KQkJT250cm9sIEEuUy4KLUIwMUI3QyAgICAgKGJhc2UgMTYpCQlPbnRyb2wgQS5TLgotCQkJCVR1cmNhbiBDYWQgTm86MTkgWS5EdWR1bGx1Ci0JCQkJVW1yYW5peWUgSXN0YW5idWwgMzQ3NzUKLQkJCQlUVVJLRVkKLQotQjAtMzgtMjkgICAoaGV4KQkJU2lsaWNvbndhcmUgUHJlY2lzaW9uIEluZHVzdHJpZXMgQ28uLCBMdGQuCi1CMDM4MjkgICAgIChiYXNlIDE2KQkJU2lsaWNvbndhcmUgUHJlY2lzaW9uIEluZHVzdHJpZXMgQ28uLCBMdGQuCi0JCQkJTm8uIDEyMywgU2VjLjMsIERhIEZvbmcgUmQsIFRhbnR6dSwgCi0JCQkJVGFpY2h1bmcgIDQyNwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQjAtNDgtN0EgICAoaGV4KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi1CMDQ4N0EgICAgIChiYXNlIDE2KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJMS02RiwgQnVpbGRpbmcgMiwgUGluZ3NoYW5kYXl1YW4gSW5kdXN0cmlhbCwgU291dGggWm9uZSwKLQkJCQlUYW95dWFuIFN0cmVldCwgTmFuc2hhbiBEaXN0cmljdCwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLUIwLTUxLThFICAgKGhleCkJCUhvbGwgdGVjaG5vbG9neSBDTy5MdGQuCi1CMDUxOEUgICAgIChiYXNlIDE2KQkJSG9sbCB0ZWNobm9sb2d5IENPLkx0ZC4KLQkJCQlGMixCbGQgMjcsQW5sZSBJbmR1c3RyaWFsIFBhcmssTmFudG91IEd1YW5rb3UgTm8uMiBSb2FkCi0JCQkJTmFuc2hhbiBEaXN0cmljdCwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1MgotCQkJCUNISU5BCi0KLUIwLTVCLTFGICAgKGhleCkJCVRIRVJNTyBGSVNIRVIgU0NJRU5USUZJQyBTLlAuQS4KLUIwNUIxRiAgICAgKGJhc2UgMTYpCQlUSEVSTU8gRklTSEVSIFNDSUVOVElGSUMgUy5QLkEuCi0JCQkJU1RSQURBIFJJVk9MVEFOQSBLTSA2LzcKLQkJCQlST0RBTk8gTUlMQU4gMjAwOTAKLQkJCQlJVEFMWQotCi1CMC02NS02MyAgIChoZXgpCQlTaGFuZ2hhaSBSYWlsd2F5IENvbW11bmljYXRpb24gRmFjdG9yeQotQjA2NTYzICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFJhaWx3YXkgQ29tbXVuaWNhdGlvbiBGYWN0b3J5Ci0JCQkJTm8uMTc5IFdlc3QgSmlhbmdjaGFuZyByb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDQzNgotCQkJCUNISU5BCi0KLUIwLTc1LUQ1ICAgKGhleCkJCVpURSBDb3Jwb3JhdGlvbgotQjA3NUQ1ICAgICAoYmFzZSAxNikJCVpURSBDb3Jwb3JhdGlvbgotCQkJCTEyL0YsWlRFIFImRCBCdWlsZGluZyxLZWppbmFuIFJvYWQsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUIwLTgxLUQ4ICAgKGhleCkJCUktc3lzIENvcnAKLUIwODFEOCAgICAgKGJhc2UgMTYpCQlJLXN5cyBDb3JwCi0JCQkJMjQ1NyBBdmlhdGlvbiBBdmUKLQkJCQlTdWl0ZSA5MDAKLQkJCQlOLiBDaGFybGVzdG9uICBTb3V0aCBDYXJvbGluYSAyOTQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtODktOTEgICAoaGV4KQkJTEdFIAotQjA4OTkxICAgICAoYmFzZSAxNikJCUxHRSAKLQkJCQk2MC0zOSAsIEthc2FuIC1kb25nICwgR3VtY2hlb24tZ3UuCi0JCQkJU2VvdWwgICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUIwLTkwLTc0ICAgKGhleCkJCUZ1bGFuIEVsZWN0cm9uaWNzIExpbWl0ZWQKLUIwOTA3NCAgICAgKGJhc2UgMTYpCQlGdWxhbiBFbGVjdHJvbmljcyBMaW1pdGVkCi0JCQkJRmxhdCBCJkMsMy9GLEExIEJsb2NrLCBHYW94aW4gQ3liZXItVGVjaCBab25lLE5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQjAtOTEtMzQgICAoaGV4KQkJVGFsZW8KLUIwOTEzNCAgICAgKGJhc2UgMTYpCQlUYWxlbwotCQkJCTQxNDAgRHVibGluIEJsdmQKLQkJCQlTdWl0ZSA0MDAKLQkJCQlEdWJsaW4gQ2FsaWZvcm5pYSA5NDU2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtOTctM0EgICAoaGV4KQkJRS1GdWVsIENvcnBvcmF0aW9uCi1CMDk3M0EgICAgIChiYXNlIDE2KQkJRS1GdWVsIENvcnBvcmF0aW9uCi0JCQkJMTU0NjYgTG9zIEdhdG9zIEJsdmQuICMzNwotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtOTktMjggICAoaGV4KQkJRnVqaXRzdSBMaW1pdGVkCi1CMDk5MjggICAgIChiYXNlIDE2KQkJRnVqaXRzdSBMaW1pdGVkCi0JCQkJTXVzYXNoaS1rb3N1Z2kgVG93ZXIgUGxhY2UgQmxkZy4sCi0JCQkJNDAzLCBLb3N1Z2ktY2hvIDEtY2hvbWUsIE5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjExLTAwNjMKLQkJCQlKQVBBTgotCi1CMC05QS1FMiAgIChoZXgpCQlTVEVNTUVSIElNQUdJTkcgR21iSAotQjA5QUUyICAgICAoYmFzZSAxNikJCVNURU1NRVIgSU1BR0lORyBHbWJICi0JCQkJR3V0ZW5iZXJnc3RyLiAxMQotCQkJCVB1Y2hoZWltIEJ5IDgyMTc4Ci0JCQkJR0VSTUFOWQotCi1CMC05Qi1ENCAgIChoZXgpCQlHTkggU29mdHdhcmUgSW5kaWEgUHJpdmF0ZSBMaW1pdGVkCi1CMDlCRDQgICAgIChiYXNlIDE2KQkJR05IIFNvZnR3YXJlIEluZGlhIFByaXZhdGUgTGltaXRlZAotCQkJCTkvMTQgU2VuZ2FuaSBBbW1hbiBLb2lsIFN0cmVldAotCQkJCU1hZHV2YW5rYXJhaSwgR3VpbmR5Ci0JCQkJQ2hlbm5haSBUYW1pbG5hZHUgNjAwMDMyCi0JCQkJSU5ESUEKLQotQjAtQTEtMEEgICAoaGV4KQkJUGl2b3RhbCBTeXN0ZW1zIENvcnBvcmF0aW9uCi1CMEExMEEgICAgIChiYXNlIDE2KQkJUGl2b3RhbCBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJNDY4MyAgQ2hhYm90IERyaXZlCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtQTctMkEgICAoaGV4KQkJRW5zZW1ibGUgRGVzaWducywgSW5jLgotQjBBNzJBICAgICAoYmFzZSAxNikJCUVuc2VtYmxlIERlc2lnbnMsIEluYy4KLQkJCQk4NzAgR29sZCBGbGF0IFJvYWQKLQkJCQlOZXZhZGEgQ2l0eSBDQSA5NTk1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtQUEtMzYgICAoaGV4KQkJR1VBTkdET05HIE9QUE8gTU9CSUxFIFRFTEVDT01NVU5JQ0FUSU9OUyBDT1JQLixMVEQuCi1CMEFBMzYgICAgIChiYXNlIDE2KQkJR1VBTkdET05HIE9QUE8gTU9CSUxFIFRFTEVDT01NVU5JQ0FUSU9OUyBDT1JQLixMVEQuCi0JCQkJTk8uMTggSEFJQklOIFJPQUQKLQkJCQlXVVNIQSxDSEFORydBTgotCQkJCURPTkdHVUFOIEdVQU5HRE9ORyA1MjM4NjAKLQkJCQlDSElOQQotCi1CMC1CMy0yQiAgIChoZXgpCQlTbGljYW4gU3AuIHogby5vLgotQjBCMzJCICAgICAoYmFzZSAxNikJCVNsaWNhbiBTcC4geiBvLm8uCi0JCQkJTS4gS29ub3BuaWNraWVqIDE4Ci0JCQkJQnlkZ29zemN6IEt1amF3c2tvLVBvbW9yc2tpZSA4NS0xMjQKLQkJCQlQT0xBTkQKLQotQjAtQjgtRDUgICAoaGV4KQkJTmFuamluZyBOZW5ncnVpIEF1dG8gRXF1aXBtZW50IENPLixMdGQKLUIwQjhENSAgICAgKGJhc2UgMTYpCQlOYW5qaW5nIE5lbmdydWkgQXV0byBFcXVpcG1lbnQgQ08uLEx0ZAotCQkJCU5vLjEwOCBHYW5qaWFiaWFuIEVhc3QgWWFvaHVhIFRvd24KLQkJCQlOYW5qaW5nIEppYW5nc3UgMjEwMDQ2Ci0JCQkJQ0hJTkEKLQotQjAtQkQtQTEgICAoaGV4KQkJWkFLTEFEIEVMRUtUUk9OSUNaTlkgU0lNUwotQjBCREExICAgICAoYmFzZSAxNikJCVpBS0xBRCBFTEVLVFJPTklDWk5ZIFNJTVMKLQkJCQlQT0QgU0tBUlBBIDUxQQotCQkJCUJZREdPU1pDWiBLVUpBV1NLTy1QT01PUlNLSUUgODUtNzk2Ci0JCQkJUE9MQU5ECi0KLUIwLUJGLTk5ICAgKGhleCkJCVdJWklURE9OR0RPCi1CMEJGOTkgICAgIChiYXNlIDE2KQkJV0laSVRET05HRE8KLQkJCQkyRiwgMjk5LTEsIDMtRE9ORywgU1VOR1NVIDItR0EKLQkJCQlTVU5HRE9ORy1LVQotCQkJCVNFT1VMICAxMzMtODMzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUIwLUM2LTlBICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLUIwQzY5QSAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OSAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUIwLUM4LUFEICAgKGhleCkJCVBlb3BsZSBQb3dlciBDb21wYW55Ci1CMEM4QUQgICAgIChiYXNlIDE2KQkJUGVvcGxlIFBvd2VyIENvbXBhbnkKLQkJCQk2MjAgTG93ZWxsIEF2ZQotCQkJCVBhbG8gQWx0byBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtRTMtOUQgICAoaGV4KQkJQ0FUIFNZU1RFTSBDTy4sTFRELgotQjBFMzlEICAgICAoYmFzZSAxNikJCUNBVCBTWVNURU0gQ08uLExURC4KLQkJCQkzLTE0Ny0yNyBIaWdhc2ktc2lubWFjaGkgSGlyb2hhdGEta3UKLQkJCQlIaW1lamkgSHlvZ28gNjcxLTExMjEKLQkJCQlKQVBBTgotCi1CMC1FNy01NCAgIChoZXgpCQkyV2lyZQotQjBFNzU0ICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CMC1FOS03RSAgIChoZXgpCQlBZHZhbmNlZCBNaWNybyBQZXJpcGhlcmFscwotQjBFOTdFICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIE1pY3JvIFBlcmlwaGVyYWxzCi0JCQkJVW5pdCAxIEhhcnJpZXIgSG91c2UKLQkJCQlTZWRnZXdheSBCdWlzbmVzcyBQYXJrCi0JCQkJV2l0Y2hmb3JkIENhbWJyaWRnZXNoaXJlIENCNiAySFkKLQkJCQlVTklURUQgS0lOR0RPTQotCi1CMC1GMS1CQyAgIChoZXgpCQlEaGVtYXggSW5nZW5pZXJvcyBMdGRhCi1CMEYxQkMgICAgIChiYXNlIDE2KQkJRGhlbWF4IEluZ2VuaWVyb3MgTHRkYQotCQkJCVNpZXRlIE9yaWVudGUgMTIzNAotCQkJCVZpbmEgZGVsIE1hciBSZWdpb24gZGUgVmFscGFyYWlzbyAyNTMwOTU0Ci0JCQkJQ0hJTEUKLQotQjQtMDEtNDIgICAoaGV4KQkJR0NJIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLixMVEQKLUI0MDE0MiAgICAgKGJhc2UgMTYpCQlHQ0kgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLExURAotCQkJCU5vLjM4MSx4aW5nYW5nemhvbmcgcm9hZCAsCi0JCQkJR3VhbmdaaG91IEd1YW5nRG9uZyA1MTAzMTAKLQkJCQlDSElOQQotCi1CNC0wNy1GOSAgIChoZXgpCQlTQU1TVU5HIEVMRUNUUk8tTUVDSEFOSUNTCi1CNDA3RjkgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFTEVDVFJPLU1FQ0hBTklDUwotCQkJCVN1d29uLVNpLCBHeWVvbmdnaV9EbywgS29yZWEKLQkJCQlTdXdvbiBHeWVvbmdnaV9EbyA0NDMtNzQzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI0LTA4LTMyICAgKGhleCkJCVRDIENvbW11bmljYXRpb25zCi1CNDA4MzIgICAgIChiYXNlIDE2KQkJVEMgQ29tbXVuaWNhdGlvbnMKLQkJCQkxNzg4MSBDYXJ0d3JpZ2h0IFJvYWQKLQkJCQlJcnZpbmUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LTBFLURDICAgKGhleCkJCUxHLUVyaWNzc29uIENvLixMdGQuCi1CNDBFREMgICAgIChiYXNlIDE2KQkJTEctRXJpY3Nzb24gQ28uLEx0ZC4KLQkJCQk1MzMsSG9neWUtMWRvbmcsRG9uZ2FuLWd1Ci0JCQkJTEcgUiZEIENvbXBsZXguTEctRXJpY3Nzb24sCi0JCQkJQW55YW5nLXNoaSBLeXVuZ2tpLWRvIDQzMS03NDkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQjQtMTQtODkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQjQxNDg5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtMjgtRjEgICAoaGV4KQkJRS1QcmltZSBDby4sIEx0ZC4KLUI0MjhGMSAgICAgKGJhc2UgMTYpCQlFLVByaW1lIENvLiwgTHRkLgotCQkJCVJtMTIwNywgS29sb24gU2NpZW5jZSBWYWxsZXksIDgxMSwKLQkJCQlLdXJvLURvbmcsIEt1cm8tS3UKLQkJCQlTZW91bCAgMTUyMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI0LTJBLTM5ICAgKGhleCkJCU9SQklUIE1FUlJFVCwgc3BvbC4gcyByLiBvLgotQjQyQTM5ICAgICAoYmFzZSAxNikJCU9SQklUIE1FUlJFVCwgc3BvbC4gcyByLiBvLgotCQkJCVZvZG5hbnNrYSA2NzUvMzAKLQkJCQlQcmFoYSAgMTk4IDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotQjQtMkMtQkUgICAoaGV4KQkJRGlyZWN0IFBheW1lbnQgU29sdXRpb25zIExpbWl0ZWQKLUI0MkNCRSAgICAgKGJhc2UgMTYpCQlEaXJlY3QgUGF5bWVudCBTb2x1dGlvbnMgTGltaXRlZAotCQkJCTk4IEFuemFjIEF2ZW51ZQotCQkJCUF1Y2tsYW5kICAxMDM1Ci0JCQkJTkVXIFpFQUxBTkQKLQotQjQtMzUtRjcgICAoaGV4KQkJWmhlamlhbmcgUGVhcm1haW4gRWxlY3Ryb25pY3MgQ28ubHRkLgotQjQzNUY3ICAgICAoYmFzZSAxNikJCVpoZWppYW5nIFBlYXJtYWluIEVsZWN0cm9uaWNzIENvLmx0ZC4KLQkJCQk0RiBZaXRhaSBNYW5zaW9uLCA3NiBHdWN1aSBSb2FkLAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMgotCQkJCUNISU5BCi0KLUI0LTM3LTQxICAgKGhleCkJCUNvbnNlcnQsIEluYy4KLUI0Mzc0MSAgICAgKGJhc2UgMTYpCQlDb25zZXJ0LCBJbmMuCi0JCQkJNDcwMCBGYWxscyBvZiBOZXVzZSBSZC4KLQkJCQlTdWl0ZSAzNDAKLQkJCQlSYWxlaWdoIE5DIDI3NjA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC0zOS1ENiAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi1CNDM5RDYgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMCBGb290aGlsbHMgQmx2ZC4KLQkJCQlSb3NldmlsbGUgQ2FsaWZvcm5pYSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtM0QtQjIgICAoaGV4KQkJRGVncmVhbmUgSG9yaXpvbgotQjQzREIyICAgICAoYmFzZSAxNikJCURlZ3JlYW5lIEhvcml6b24KLQkJCQk3MzAgUnVlIGRlIGwmIzM5O0luaXRpYXRpdmUKLQkJCQlDdWVycyBWYXIgODMzOTAKLQkJCQlGUkFOQ0UKLQotQjQtNDEtN0EgICAoaGV4KQkJU2hlblpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sTHRkCi1CNDQxN0EgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJNEYsQmFpeWluZyBCdWlsZGluZywgTm8uMTAxOSxOYW5oYWkgUkQsU2hla291Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA2NwotCQkJCUNISU5BCi0KLUI0LTRDLUMyICAgKGhleCkJCU5SIEVMRUNUUklDIENPLiwgTFRECi1CNDRDQzIgICAgIChiYXNlIDE2KQkJTlIgRUxFQ1RSSUMgQ08uLCBMVEQKLQkJCQk2OSxTdXl1YW4gQXZlbnVlCi0JCQkJSmlhbmduaW5nCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMTEwMgotCQkJCUNISU5BCi0KLUI0LTUyLTUzICAgKGhleCkJCVNlYWdhdGUgVGVjaG5vbG9neQotQjQ1MjUzICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neQotCQkJCTEyODAgRGlzYyBEcml2ZQotCQkJCVNoYWtvcGVlIE1OIDU1Mzc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC01OC02MSAgIChoZXgpCQlDUmVtb3RlLCBMTEMKLUI0NTg2MSAgICAgKGJhc2UgMTYpCQlDUmVtb3RlLCBMTEMKLQkJCQkxMTk1IE5vZWwgRHJpdmUKLQkJCQlNRU5MTyBQQVJLIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC01Qy1BNCAgIChoZXgpCQlUaGluZy10YWxrIFdpcmVsZXNzIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uIExpbWl0ZWQKLUI0NUNBNCAgICAgKGJhc2UgMTYpCQlUaGluZy10YWxrIFdpcmVsZXNzIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uIExpbWl0ZWQKLQkJCQk0OTggR3VvIFNob3UgSmluZyBSb2FkLCBTdWl0ZSAxMDQwMgotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi1CNC03NC05RiAgIChoZXgpCQlhc2tleSBjb21wdXRlciBjb3JwCi1CNDc0OUYgICAgIChiYXNlIDE2KQkJYXNrZXkgY29tcHV0ZXIgY29ycAotCQkJCTExMEYsTk8uMTE5LENISUVOS0FORyBSRCxDSFVORy1ITywKLQkJCQlUQUlQRUkgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUI0LTgyLUZFICAgKGhleCkJCUFza2V5IENvbXB1dGVyIENvcnAKLUI0ODJGRSAgICAgKGJhc2UgMTYpCQlBc2tleSBDb21wdXRlciBDb3JwCi0JCQkJMTBGLE5PLjExOSxDSElFTktBTkcgUkQsQ0hVTkctSE8sCi0JCQkJVEFJUEVJIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQjQtOTktQkEgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1CNDk5QkEgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1BNC1FMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1CNEE0RTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1BNS1BOSAgIChoZXgpCQlNT0RJIEdtYkgKLUI0QTVBOSAgICAgKGJhc2UgMTYpCQlNT0RJIEdtYkgKLQkJCQlLYXBlbGxlbndlZyAyMQotCQkJCVJFSUNIU0hPRi1TaW5zcGVydCAgNTE1ODAKLQkJCQlHRVJNQU5ZCi0KLUI0LUFBLTREICAgKGhleCkJCUVuc2VxdWVuY2UsIEluYy4KLUI0QUE0RCAgICAgKGJhc2UgMTYpCQlFbnNlcXVlbmNlLCBJbmMuCi0JCQkJMTExIFNXIDV0aCBBdmUgU3VpdGUgMTQwMAotCQkJCVBvcnRsYW5kIE9SIDk3MjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1CMC0xNyAgIChoZXgpCQlBdmF5YSwgSW5jCi1CNEIwMTcgICAgIChiYXNlIDE2KQkJQXZheWEsIEluYwotCQkJCTIxMSBNb3VudCBBaXJ5IFJvYWQgCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMC0yMzExIAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtQjUtQUYgICAoaGV4KQkJTWluc3VuZyBFbGVjdHJvbmljcwotQjRCNUFGICAgICAoYmFzZSAxNikJCU1pbnN1bmcgRWxlY3Ryb25pY3MKLQkJCQlNZWdhLXZhbGxleSAjNjIwCi0JCQkJRG9uZ2FuLWd1IEd3YW55YW5nLWRvbmcsIDc5OQotCQkJCUFueWFuZy1zaSBLeWVvbmdnaS1kbyA0MzEtNzY3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI0LUI4LThEICAgKGhleCkJCVRodWggQ29tcGFueQotQjRCODhEICAgICAoYmFzZSAxNikJCVRodWggQ29tcGFueQotCQkJCTYwNSAgVGVycml0b3JpYWwgRHIKLQkJCQlTdWl0ZSBDCi0JCQkJQm9saW5nYnJvb2sgSUwgNjA0NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUM0LTRFICAgKGhleCkJCVZYTCBlVGVjaCBQdnQgTHRkCi1CNEM0NEUgICAgIChiYXNlIDE2KQkJVlhMIGVUZWNoIFB2dCBMdGQKLQkJCQkjOTEsIDExdGggTWFpbiwgQmVndXIgTWFpbiBSb2FkCi0JCQkJSG9uZ2FzYW5kcmEKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDA2OAotCQkJCUlORElBCi0KLUI0LUM3LTk5ICAgKGhleCkJCU1vdG9yb2xhIFNvbHV0aW9ucyBJbmMuCi1CNEM3OTkgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgU29sdXRpb25zIEluYy4KLQkJCQkxIE1vdG9yb2xhIFBsYXphCi0JCQkJSG9sdHN2aWxsZSBOWSAxMTc0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtQzgtMTAgICAoaGV4KQkJVU1QSSBFbGV0dHJvbmljYQotQjRDODEwICAgICAoYmFzZSAxNikJCVVNUEkgRWxldHRyb25pY2EKLQkJCQlWaWEgUmVzcGlnaGksIDE1Ci0JCQkJQ2F0dG9saWNhICA0Nzg0MQotCQkJCUlUQUxZCi0KLUI0LUNGLURCICAgKGhleCkJCVNoZW56aGVuIEppdXpob3UgRWxlY3RyaWMgQ28uLExURAotQjRDRkRCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEppdXpob3UgRWxlY3RyaWMgQ28uLExURAotCQkJCTZGLEppdXpob3UgRWxlY3RyaWMgQnVpbGRpbmcsU291dGhlcm4gTm8uMTJSRC4sSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQjQtRTAtQ0QgICAoaGV4KQkJSU8gVHVyYmluZSwgSW5jLgotQjRFMENEICAgICAoYmFzZSAxNikJCUlPIFR1cmJpbmUsIEluYy4KLQkJCQkzMDMxIFRpc2NoIFdheSwgU3VpdGUgNDUwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUVELTE5ICAgKGhleCkJCVBpZSBEaWdpdGFsLCBJbmMuCi1CNEVEMTkgICAgIChiYXNlIDE2KQkJUGllIERpZ2l0YWwsIEluYy4KLQkJCQk1NzUgTWFya2V0IHN0LiwgOHRoIGZsb29yCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwNS0yODIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1FRC01NCAgIChoZXgpCQlXb2hsZXIgVGVjaG5vbG9naWVzCi1CNEVENTQgICAgIChiYXNlIDE2KQkJV29obGVyIFRlY2hub2xvZ2llcwotCQkJCTMxMDU1IEh1bnR3b29kIEF2ZW51ZQotCQkJCUhheXdhcmQgQ0EgOTQ1NDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUVFLUQ0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1CNEVFRDQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUYzLTIzICAgKGhleCkJCVBFVEFURUwgSU5DLgotQjRGMzIzICAgICAoYmFzZSAxNikJCVBFVEFURUwgSU5DLgotCQkJCSMzMjIgVEhFIE8gVklMTEUgNzIwLTI1LCBZRU9LU0FNLURPTkcKLQkJCQlHQU5HTkFNLUdVIFNFT1VMIDEzNTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CNC1GQy03NSAgIChoZXgpCQlTRU1BIEVsZWN0cm9uaWNzKEhLKSBDTy4sTFRECi1CNEZDNzUgICAgIChiYXNlIDE2KQkJU0VNQSBFbGVjdHJvbmljcyhISykgQ08uLExURAotCQkJCVhpYWxpbmdiZWkgSW5kdXN0cmlhbCBab25lICBMaWFvYnUsIAotCQkJCURvbmdndWFuIEd1YW5nZG9uZyA1MjM0MTEKLQkJCQlDSElOQQotCi1COC0wQi05RCAgIChoZXgpCQlST1BFWCBJbmR1c3RyaWUtRWxla3Ryb25payBHbWJICi1CODBCOUQgICAgIChiYXNlIDE2KQkJUk9QRVggSW5kdXN0cmllLUVsZWt0cm9uaWsgR21iSAotCQkJCUdhbnNhZWNrZXIgMjEKLQkJCQlCaWV0aWdoZWltLUJpc3NpbmdlbiBCYWRlbiBXdWVydHRlbWJlcmcgNzQzMjEKLQkJCQlHRVJNQU5ZCi0KLUI4LTI4LThCICAgKGhleCkJCVBhcmtlciBIYW5uaWZpbgotQjgyODhCICAgICAoYmFzZSAxNikJCVBhcmtlciBIYW5uaWZpbgotCQkJCUNvbmRpdGlvbiBNb25pdG9yaW5nIENlbnRyZQotCQkJCUJydW5lbCBXYXkKLQkJCQlUaGV0Zm9yZCBOb3Jmb2xrIElQMjQgMUhQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQjgtMkEtREMgICAoaGV4KQkJRUZSIEV1cm9w77+9aXNjaGUgRnVuay1SdW5kc3RldWVydW5nIEdtYkgKLUI4MkFEQyAgICAgKGJhc2UgMTYpCQlFRlIgRXVyb3Dvv71pc2NoZSBGdW5rLVJ1bmRzdGV1ZXJ1bmcgR21iSAotCQkJCU55bXBoZW5idXJnZXIgU3RyLiAyMGIKLQkJCQlNdW5pY2ggIDgwMzM1Ci0JCQkJR0VSTUFOWQotCi1COC0zQS03QiAgIChoZXgpCQlXb3JsZHBsYXkgKENhbmFkYSkgSW5jLgotQjgzQTdCICAgICAoYmFzZSAxNikJCVdvcmxkcGxheSAoQ2FuYWRhKSBJbmMuCi0JCQkJODAzLTI0dGggQXZlIFNFLCBVbml0IDIwMAotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMkcgMVA1Ci0JCQkJQ0FOQURBCi0KLUI4LTNELTRFICAgKGhleCkJCVNoZW56aGVuIEN1bHRyYXZpZXcgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQgU2hhbmdoYWkgQnJhbmNoCi1CODNENEUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQ3VsdHJhdmlldyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZCBTaGFuZ2hhaSBCcmFuY2gKLQkJCQkyL0YsQnVpbGRpbmcjNSwxNjkwQ2FpbHVuIFJvYWQsWmhhbmdqaWFuZyBIaS10ZWNoIFBhcmssCi0JCQkJU2hhbmdoYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLUI4LTQxLTVGICAgKGhleCkJCUFTUCBBRwotQjg0MTVGICAgICAoYmFzZSAxNikJCUFTUCBBRwotCQkJCU1heC0gUGxhbmNrLVN0ci4gMTUgYS1jCi0JCQkJRXJrcmF0aCBOUlcgNDA2OTkKLQkJCQlHRVJNQU5ZCi0KLUI4LTYxLTZGICAgKGhleCkJCUFjY3RvbiBXaXJlbGVzcyBCcm9hZGJhbmQoQVdCKSwgQ29ycC4KLUI4NjE2RiAgICAgKGJhc2UgMTYpCQlBY2N0b24gV2lyZWxlc3MgQnJvYWRiYW5kKEFXQiksIENvcnAuCi0JCQkJTm8uMSBDcmVhdGlvbiBSZCBJSUksIFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwNzcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUI4LTY0LTkxICAgKGhleCkJCUNLIFRlbGVjb20gTHRkCi1CODY0OTEgICAgIChiYXNlIDE2KQkJQ0sgVGVsZWNvbSBMdGQKLQkJCQlLZWppIEF2ZW51ZSxIZXl1YW4gSGktdGVjaCBEZXZlbG9wbWVudCBab25lCi0JCQkJSGV5dWFuICBHdWFuZ2RvbmcgUHJvdmluY2UgNTE3MDAwCi0JCQkJQ0hJTkEKLQotQjgtNjUtM0IgICAoaGV4KQkJQm9seW1pbiwgSW5jLgotQjg2NTNCICAgICAoYmFzZSAxNikJCUJvbHltaW4sIEluYy4KLQkJCQkxM0YtMSwgTm8uMjAsIFRhLUxvbmcgUmQuLCAKLQkJCQlUYWljaHVuZyAgNDAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUI4LTcwLUY0ICAgKGhleCkJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuIAotQjg3MEY0ICAgICAoYmFzZSAxNikJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuIAotCQkJCU5PLiAyNSwgVEhFIDNSRCBTdHJlZXQgS1VOU0hBTiBFWFBPUlQgUFJPQ0VTU0lORyBaT05FIAotCQkJCUtVTlNIQU4gU1VaSE9VIDIxNTMwMAotCQkJCUNISU5BCi0KLUI4LTc5LTdFICAgKGhleCkJCVNlY3VyZSBNZXRlcnMgKFVLKSBMaW1pdGVkCi1CODc5N0UgICAgIChiYXNlIDE2KQkJU2VjdXJlIE1ldGVycyAoVUspIExpbWl0ZWQKLQkJCQlTZWN1cmUgSG91c2UKLQkJCQlNb29yc2lkZSBSb2FkCi0JCQkJV2luY2hlc3RlciBIYW1wc2hpcmUgU08yMyA3UlgKLQkJCQlVTklURUQgS0lOR0RPTQotCi1COC04Ny0xRSAgIChoZXgpCQlHb29kIE1pbmQgSW5kdXN0cmllcyBDby4sIEx0ZC4KLUI4ODcxRSAgICAgKGJhc2UgMTYpCQlHb29kIE1pbmQgSW5kdXN0cmllcyBDby4sIEx0ZC4KLQkJCQkyMiwgVGEgWWVvdSAybmQgU3QsIAotCQkJCVRhIExpYW8gRGlzdC4gCi0JCQkJS2FvaHNpdW5nICA4MzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUI4LThFLTNBICAgKGhleCkJCUluZmluaXRlIFRlY2hub2xvZ2llcyBKTFQKLUI4OEUzQSAgICAgKGJhc2UgMTYpCQlJbmZpbml0ZSBUZWNobm9sb2dpZXMgSkxUCi0JCQkJT2ZmaWNlIDMyMDMsIExldmVsIDMyCi0JCQkJTGl3YSBIZWlnaHRzIFRvd2VyCi0JCQkJSnVtZWlyYWggTGFrZSBUb3dlcnMgRHViYWkgCi0JCQkJVU5JVEVEIEFSQUIgRU1JUkFURVMKLQotQjgtOTItMUQgICAoaGV4KQkJQkcgVCZhbXA7QQotQjg5MjFEICAgICAoYmFzZSAxNikJCUJHIFQmYW1wO0EKLQkJCQk0RiwgTCZhbXA7QyBUb3dlcgotCQkJCTEwMjYtNTIgU2FuYm9uLWRvbmcKLQkJCQlHdW5wby1zaSBHeWVvbmdnaS1kbyA0MzUtODQ1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI4LTk0LUQyICAgKGhleCkJCVJldGFpbCBJbm5vdmF0aW9uIEhUVCBBQgotQjg5NEQyICAgICAoYmFzZSAxNikJCVJldGFpbCBJbm5vdmF0aW9uIEhUVCBBQgotCQkJCVNq9uRuZ3N25GdlbiAyCi0JCQkJU29sbGVudHVuYSAgUy0xOTIgNzIKLQkJCQlTV0VERU4KLQotQjgtQTMtRTAgICAoaGV4KQkJQmVuUnVpIFRlY2hub2xvZ3kgQ28uLEx0ZAotQjhBM0UwICAgICAoYmFzZSAxNikJCUJlblJ1aSBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4zMDJyb29tIEJ1aWxkaW5nNTAzIFRhaVJhbiBUZWNobm9QYXJrLkZ1VGlhbiBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi1COC1BOC1BRiAgIChoZXgpCQlMb2dpYyBTLnAuQS4KLUI4QThBRiAgICAgKGJhc2UgMTYpCQlMb2dpYyBTLnAuQS4KLQkJCQlWaWEgR2FsaWxlaSA1Ci0JCQkJQ2Fzc2luYSBkZScgUGVjY2hpIE1JIDIwMDYwCi0JCQkJSVRBTFkKLQotQjgtQUMtNkYgICAoaGV4KQkJRGVsbCBJbmMKLUI4QUM2RiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUWCA3ODc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjgtQUYtNjcgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1COEFGNjcgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LUIxLUM3ICAgKGhleCkJCUJUJkNPTSBDTy4sTFRECi1COEIxQzcgICAgIChiYXNlIDE2KQkJQlQmQ09NIENPLixMVEQKLQkJCQkjMTEwMywgRSZDIFZlbnR1cmUgRHJlYW0gVG93ZXIgSUkKLQkJCQkxOTctMTAsIEd1cm8tM2RvbmcsIEd1cm8tR3UsCi0JCQkJU2VvdWwgIDE1Mi03MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQjgtQkEtNjggICAoaGV4KQkJWGknYW4gSml6aG9uZyBEaWdpdGFsIENvbW11bmljYXRpb24gQ28uLEx0ZAotQjhCQTY4ICAgICAoYmFzZSAxNikJCVhpJ2FuIEppemhvbmcgRGlnaXRhbCBDb21tdW5pY2F0aW9uIENvLixMdGQKLQkJCQkxMCBCbG9jayBOTy4xIEVudGVycHJpc2UgTmV3bHktdHlwZWQgSW5kdXN0cmlhbCBab25lIEhpZ2gtVGVjaCBab25lIFhp77+977+9YW4sQ2hpbmEKLQkJCQlYaSdhbiBTaGFhblhpIDcxMDExOQotCQkJCUNISU5BCi0KLUI4LUJBLTcyICAgKGhleCkJCUN5bm92ZQotQjhCQTcyICAgICAoYmFzZSAxNikJCUN5bm92ZQotCQkJCTEwIGNpdGUgcm91Z2Vtb250Ci0JCQkJUGFyaXMgIDc1MDA5Ci0JCQkJRlJBTkNFCi0KLUI4LUJFLUJGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUI4QkVCRiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LUM3LTE2ICAgKGhleCkJCUZpYmVyaG9tZSBUZWxlY29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ28uLExURAotQjhDNzE2ICAgICAoYmFzZSAxNikJCUZpYmVyaG9tZSBUZWxlY29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ28uLExURAotCQkJCU5vLjUgRG9uZ3hpbiBSb2FkCi0JCQkJSG9uZ3NoYW4gRGlzdHJpY3QKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi1COC1DNy01RCAgIChoZXgpCQlBcHBsZSBJbmMKLUI4Qzc1RCAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LUNELUE3ICAgKGhleCkJCU1heGVsZXIgVGVjaG5vbG9naWVzIEx0ZC4KLUI4Q0RBNyAgICAgKGJhc2UgMTYpCQlNYXhlbGVyIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJMSBEb3duIFBsYWNlCi0JCQkJTG9uZG9uIFVLIFc2IDlKSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUI4LUQwLTZGICAgKGhleCkJCUdVQU5HWkhPVSBIS1VTVCBGT0sgWUlORyBUVU5HIFJFU0VBUkNIIElOU1RJVFVURQotQjhEMDZGICAgICAoYmFzZSAxNikJCUdVQU5HWkhPVSBIS1VTVCBGT0sgWUlORyBUVU5HIFJFU0VBUkNIIElOU1RJVFVURQotCQkJCVJtIDQwMywgTm9ydGggb2YgU29mdHdhcmUgQnVpbGRpbmcsTmFuc2hhIElUIFBhcmssCi0JCQkJTmFuc2hhIERpc3RyaWN0Ci0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyBQcml2aW5jZSA1MTE0NTgKLQkJCQlDSElOQQotCi1COC1ENC05RCAgIChoZXgpCQlNIFNldmVuIFN5c3RlbSBMdGQuCi1COEQ0OUQgICAgIChiYXNlIDE2KQkJTSBTZXZlbiBTeXN0ZW0gTHRkLgotCQkJCTI0RiwgVHJ1c3QgVG93ZXIgQmxkZywgMjc1LTcsIFlhbmdqYWUyLURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAxMzctNzM5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI4LUU1LTg5ICAgKGhleCkJCVBheXRlciBCVgotQjhFNTg5ICAgICAoYmFzZSAxNikJCVBheXRlciBCVgotCQkJCUJldWtlbHNkaWprIDEwNwotCQkJCVJvdHRlcmRhbSBadWlkLUhvbGxhbmQgMzAyMSBBRQotCQkJCU5FVEhFUkxBTkRTCi0KLUI4LUU3LTc5ICAgKGhleCkJCVBSSVZBVEUKLUI4RTc3OSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotQjgtRUUtNzkgICAoaGV4KQkJWVdpcmUgVGVjaG5vbG9naWVzLCBJbmMuCi1COEVFNzkgICAgIChiYXNlIDE2KQkJWVdpcmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTM3MiBPdmVyZGFsZQotCQkJCU1vbnRyZWFsIFFDIEgzRyAxVjMKLQkJCQlDQU5BREEKLQotQjgtRjQtRDAgICAoaGV4KQkJSGVycm1hbm4gVWx0cmFzY2hhbGx0ZWNobmlrIEdtYkggJiBDby4gS2cKLUI4RjREMCAgICAgKGJhc2UgMTYpCQlIZXJybWFubiBVbHRyYXNjaGFsbHRlY2huaWsgR21iSCAmIENvLiBLZwotCQkJCURlc2Nvc3RyLiAzLTkKLQkJCQlLYXJsc2JhZCBCYWRlbi1XdWVydHRlbWJlcmcgNzYzMDcKLQkJCQlHRVJNQU5ZCi0KLUI4LUY3LTMyICAgKGhleCkJCUFyeWFrYSBOZXR3b3JrcyBJbmMKLUI4RjczMiAgICAgKGJhc2UgMTYpCQlBcnlha2EgTmV0d29ya3MgSW5jCi0JCQkJNjkxIFMuIE1pbHBpdGFzIEJsdmQuLCAKLQkJCQlTdWl0ZSAyMDYKLQkJCQlNaWxwaXRhcyAgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LUY5LTM0ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi1COEY5MzQgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotQjgtRkYtNjEgICAoaGV4KQkJQXBwbGUKLUI4RkY2MSAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjgtRkYtNkYgICAoaGV4KQkJU2hhbmdoYWkgVHlwcm90ZWNoIFRlY2hub2xvZ3kgQ28uTHRkCi1COEZGNkYgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgVHlwcm90ZWNoIFRlY2hub2xvZ3kgQ28uTHRkCi0JCQkJRGVzaWduIEJ1aWxkaW5nIDkwMywgTk8uNjMsIAotCQkJCUNoaUZlbmcgUm9hZCxZYW5nUHUgRGlzdHJpY3QsCi0JCQkJU2hhbmdoYWkgIDIwMDA5MgotCQkJCUNISU5BCi0KLUI4LUZGLUZFICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1COEZGRkUgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CQy0wNS00MyAgIChoZXgpCQlBVk0gR21iSAotQkMwNTQzICAgICAoYmFzZSAxNikJCUFWTSBHbWJICi0JCQkJQWx0LU1vYWJpdCA5NQotCQkJCUJlcmxpbiAgMTA1NTkKLQkJCQlHRVJNQU5ZCi0KLUJDLTBELUE1ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1CQzBEQTUgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUJDLTBGLTJCICAgKGhleCkJCUZPUlRVTkUgVEVDSEdST1VQIENPLixMVEQKLUJDMEYyQiAgICAgKGJhc2UgMTYpCQlGT1JUVU5FIFRFQ0hHUk9VUCBDTy4sTFRECi0JCQkJNy04RixOby4xMTk4IE5vcnRoIFFpbnpob3UgUm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotQkMtMTUtQTYgICAoaGV4KQkJVGFpd2FuIEphbnRlayBFbGVjdHJvbmljcyxMdGQuCi1CQzE1QTYgICAgIChiYXNlIDE2KQkJVGFpd2FuIEphbnRlayBFbGVjdHJvbmljcyxMdGQuCi0JCQkJNkYtMSxOby4xIFd1LUNodWFuIDFTdC4gUmQsV3UtS3UgSW5kdXN0cmlhbCBQYXJrLAotCQkJCVNpbmNod2FuZyBDaXR5IFRhaXBlaSBIc2llbiAyNDg5MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQkMtMjAtQkEgICAoaGV4KQkJSW5zcHVyIChTaGFuZG9uZykgRWxlY3Ryb25pYyBJbmZvcm1hdGlvbiBDby4sIEx0ZAotQkMyMEJBICAgICAoYmFzZSAxNikJCUluc3B1ciAoU2hhbmRvbmcpIEVsZWN0cm9uaWMgSW5mb3JtYXRpb24gQ28uLCBMdGQKLQkJCQlOby4xMDM2IFNodW55YSBSZC4KLQkJCQlKaW5hbiBTaGFuZG9uZyAyNTAxMDEKLQkJCQlDSElOQQotCi1CQy0yOC00NiAgIChoZXgpCQlOZXh0QklUIENvbXB1dGluZyBQdnQuIEx0ZC4KLUJDMjg0NiAgICAgKGJhc2UgMTYpCQlOZXh0QklUIENvbXB1dGluZyBQdnQuIEx0ZC4KLQkJCQkzMC8yLCAybmQgRmxvb3IsIFIuSy4gUGxhemEsCi0JCQkJQ01IIFJvYWQsIEluZGlyYW5hZ2FyCi0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAwMzgKLQkJCQlJTkRJQQotCi1CQy0zMC01QiAgIChoZXgpCQlEZWxsIEluYy4KLUJDMzA1QiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUJDLTM1LUU1ICAgKGhleCkJCUh5ZHJvIFN5c3RlbXMgQ29tcGFueQotQkMzNUU1ICAgICAoYmFzZSAxNikJCUh5ZHJvIFN5c3RlbXMgQ29tcGFueQotCQkJCTM3OTggUm91bmQgQm90dG9tIFJvYWQKLQkJCQlDaW5jaW5uYXRpIE9oaW8gNDUyNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUJDLTM4LUQyICAgKGhleCkJCVBhbmRhY2hpcCBMaW1pdGVkCi1CQzM4RDIgICAgIChiYXNlIDE2KQkJUGFuZGFjaGlwIExpbWl0ZWQKLQkJCQlVbml0IDIxMCwgMi9GIChMYWtlc2lkZSAxKSwgQnVpbGRpbmcgMTUsIE5vLiA4IFNjaWVuY2UgUGFyayBXZXN0IEF2ZW51ZQotCQkJCUhvbmcgS29uZyBTY2llbmNlIFBhcmsgUGhhc2UgSUksIAotCQkJCVNoYXRpbiwgTi5ULiAgCi0JCQkJSE9ORyBLT05HCi0KLUJDLTNFLTEzICAgKGhleCkJCUFjY29yZGFuY2UgU3lzdGVtcyBJbmMuCi1CQzNFMTMgICAgIChiYXNlIDE2KQkJQWNjb3JkYW5jZSBTeXN0ZW1zIEluYy4KLQkJCQkyRiwgTm8uIDMxLCBTZWMuIDYsIEhzaW4gWWkgUm9hZAotCQkJCVRhaXBlaSAgMTEwODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUJDLTQzLTc3ICAgKGhleCkJCUhhbmcgWmhvdSBIdWl0ZSBUZWNobm9sb2d5IENvLixsdGQuCi1CQzQzNzcgICAgIChiYXNlIDE2KQkJSGFuZyBaaG91IEh1aXRlIFRlY2hub2xvZ3kgQ28uLGx0ZC4KLQkJCQlSbTEzMzgsQmxvY2sgQe+/ve+/vUZ1TGkgVGVjaG5vbG9neSBCdWlsZGluZyAsTm8uMzI4LFdlbkVyIFJkCi0JCQkJSGFuZyBaaG91IFpoZSBKaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi1CQy00Ny02MCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLUJDNDc2MCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQkMtNEUtM0MgICAoaGV4KQkJQ09SRSBTVEFGRiBDTy4sIExURC4KLUJDNEUzQyAgICAgKGJhc2UgMTYpCQlDT1JFIFNUQUZGIENPLiwgTFRELgotCQkJCVNoaW4tb3Nha2EgT3JpZW50YWwgQmxkZy4gMTRGLCA3LTEtMjYgTmlzaGluYWthamltYQotCQkJCVlvZG9nYXdhLWt1IE9zYWthIDUzMi0wMDExCi0JCQkJSkFQQU4KLQotQkMtNUYtRjQgICAoaGV4KQkJQVNSb2NrIEluY29ycG9yYXRpb24KLUJDNUZGNCAgICAgKGJhc2UgMTYpCQlBU1JvY2sgSW5jb3Jwb3JhdGlvbgotCQkJCTJGLixOby4zNywgU2VjLjIsIEpob25neWFuZyBTLlJkLiwgQmVpdG91IERpc3RyaWMsIAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1CQy02Ny04NCAgIChoZXgpCQlFbnZpcm9uaWNzIE95Ci1CQzY3ODQgICAgIChiYXNlIDE2KQkJRW52aXJvbmljcyBPeQotCQkJCUdyYWFuaW50aWUgNQotCQkJCU1pa2tlbGkgIDUwMTkwCi0JCQkJRklOTEFORAotCi1CQy02QS0xNiAgIChoZXgpCQl0ZHZpbmUKLUJDNkExNiAgICAgKGJhc2UgMTYpCQl0ZHZpbmUKLQkJCQkzMDEgTWFpc29uIE1hcnUgQnVpbGRpbmcgCi0JCQkJODYtOSBOb25oZW9uLWRvbmcgR2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUJDLTZFLTc2ICAgKGhleCkJCUdyZWVuIEVuZXJneSBPcHRpb25zIEx0ZAotQkM2RTc2ICAgICAoYmFzZSAxNikJCUdyZWVuIEVuZXJneSBPcHRpb25zIEx0ZAotCQkJCTMgU3QuIE1hcnkmIzM5O3MgQ291cnQsIE1haW4gU3RyZWV0Ci0JCQkJSGFyZHdpY2sKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0IyMyA3UVMKLQkJCQlVTklURUQgS0lOR0RPTQotCi1CQy03MS1DMSAgIChoZXgpCQlYVHJpbGxpb24sIEluYy4KLUJDNzFDMSAgICAgKGJhc2UgMTYpCQlYVHJpbGxpb24sIEluYy4KLQkJCQkxLTEyLTMtNEYgCi0JCQkJS2FuZGEgU3VkYS1jaG8KLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMS0wMDQxCi0JCQkJSkFQQU4KLQotQkMtNzYtNzAgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotQkM3NjcwICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTAxMDgKLQkJCQlDSElOQQotCi1CQy03Ny0zNyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLUJDNzczNyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLUJDLTdELUQxICAgKGhleCkJCVJhZGlvIERhdGEgQ29tbXMKLUJDN0REMSAgICAgKGJhc2UgMTYpCQlSYWRpbyBEYXRhIENvbW1zCi0JCQkJNS8yMC0zMCBTdHViYnMgU3RyZWV0Ci0JCQkJU2lsdmVyd2F0ZXIgIE5ldyBTb3V0aCBXYWxlcyAoTlNXKSAyMTI4Ci0JCQkJQVVTVFJBTElBCi0KLUJDLTgxLTk5ICAgKGhleCkJCUJBU0lDIENvLixMdGQuCi1CQzgxOTkgICAgIChiYXNlIDE2KQkJQkFTSUMgQ28uLEx0ZC4KLQkJCQlLZWllZnUtQnVpbGRpbmcgOUYKLQkJCQk0LTEzLTggU2hpYmEKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA4LTAwMTQKLQkJCQlKQVBBTgotCi1CQy04My1BNyAgIChoZXgpCQlTSEVOWkhFTiBDSFVBTkdXRUktUkdCIEVMRUNUUk9OSUNTIENPLixMVAotQkM4M0E3ICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIENIVUFOR1dFSS1SR0IgRUxFQ1RST05JQ1MgQ08uLExUCi0JCQkJVW5pdCBBIDEzLTE2L0YsU2t5d29ydGggQmxkZy4sIEdhb3hpbiBBdmUuMS5TLixOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3VhbmdEb25nICA1MTgwNTcKLQkJCQlDSElOQQotCi1CQy05OS1CQyAgIChoZXgpCQlGb25TZWUgVGVjaG5vbG9neSBJbmMuCi1CQzk5QkMgICAgIChiYXNlIDE2KQkJRm9uU2VlIFRlY2hub2xvZ3kgSW5jLgotCQkJCTE0Ri0yLCBOby4zMiwgR2FvdGllIDJuZCBSZC4sCi0JCQkJWmh1YmVpIENpdHkgSHNpbmNodSBDb3VudHkgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1CQy05RC1BNSAgIChoZXgpCQlEQVNDT00gRXVyb3BlIEdtYkgKLUJDOURBNSAgICAgKGJhc2UgMTYpCQlEQVNDT00gRXVyb3BlIEdtYkgKLQkJCQlIZXV3ZWcgMwotCQkJCVVsbSBCYWRlbi1XdWVydHRlbWJlcmcgODkwNzkKLQkJCQlHRVJNQU5ZCi0KLUJDLUE5LUQ2ICAgKGhleCkJCUN5YmVyLVJhaW4sIEluYy4KLUJDQTlENiAgICAgKGJhc2UgMTYpCQlDeWJlci1SYWluLCBJbmMuCi0JCQkJNTI3MiBFdmFud29vZCBBdmVudWUKLQkJCQlPYWsgUGFyayBDYWxpZm9ybmlhIDkxMzc3LTQ4MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUJDLUFFLUM1ICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotQkNBRUM1ICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUJDLUIxLTgxICAgKGhleCkJCVNIQVJQIENPUlBPUkFUSU9OCi1CQ0IxODEgICAgIChiYXNlIDE2KQkJU0hBUlAgQ09SUE9SQVRJT04KLQkJCQkyMi0yMixOYWdhaWtlLWNobywKLQkJCQlBYmVuby1LVSwKLQkJCQlPc2FrYSwgIDU0NS04NTIyCi0JCQkJSkFQQU4KLQotQkMtQkItQzkgICAoaGV4KQkJS2VsbGVuZG9uayBFbGVrdHJvbmlrIEdtYkgKLUJDQkJDOSAgICAgKGJhc2UgMTYpCQlLZWxsZW5kb25rIEVsZWt0cm9uaWsgR21iSAotCQkJCVZvbi1IdWVuZWZlbGQtU3RyYXNzZSAzCi0JCQkJQ29sb2duZSBOUlcgNTA4MjkKLQkJCQlHRVJNQU5ZCi0KLUJDLUM2LTFBICAgKGhleCkJCVNQRUNUUkEgRU1CRURERUQgU1lTVEVNUwotQkNDNjFBICAgICAoYmFzZSAxNikJCVNQRUNUUkEgRU1CRURERUQgU1lTVEVNUwotCQkJCUtoYXNyYSBOby4gMjQsIFZpbGxhZ2UgR2h1bW1hbiwxc3QgRmxvb3IsIENoYXdsYSBNYW5zaW9uLAotCQkJCUIvaC4gU2FudCBWaWhhciwgVW5jaGEgUGFyd2Fub28sU2VjdG9yLTEKLQkJCQlQQVJXQU5PTyBISU1BQ0hBTCBQUkFERVNIIDE3MzIyMAotCQkJCUlORElBCi0KLUJDLUNELTQ1ICAgKGhleCkJCVZPSVNNQVJUCi1CQ0NENDUgICAgIChiYXNlIDE2KQkJVk9JU01BUlQKLQkJCQlWSUEgQkVOSUdOTyBDUkVTUEkgMTIKLQkJCQlNSUxBTk8gIDIwMTU5Ci0JCQkJSVRBTFkKLQotQkMtRDUtQjYgICAoaGV4KQkJZDJkIHRlY2hub2xvZ2llcwotQkNENUI2ICAgICAoYmFzZSAxNikJCWQyZCB0ZWNobm9sb2dpZXMKLQkJCQkxMDYxMSByb3VuZHdvb2QgZ2xlbiBjdAotCQkJCUphY2tzb252aWxsZSBGbCAzMjI1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotQkMtRTAtOUQgICAoaGV4KQkJRW9zbGluawotQkNFMDlEICAgICAoYmFzZSAxNikJCUVvc2xpbmsKLQkJCQkjNjAyLCA5MDAtMQotCQkJCUd3YW55YW5nLURvbmcsIERvbmdhbi1HdQotCQkJCUFueWFuZy1DaXR5IEt5b25nZ2ktRG8gNDMxLTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CQy1GMi1BRiAgIChoZXgpCQlkZXZvbG8gQUcKLUJDRjJBRiAgICAgKGJhc2UgMTYpCQlkZXZvbG8gQUcKLQkJCQlDaGFybG90dGVuYnVyZ2VyIEFsbGVlIDYwCi0JCQkJQWFjaGVuICA1MjA2OAotCQkJCUdFUk1BTlkKLQotQkMtRkYtQUMgICAoaGV4KQkJVE9QQ09OIENPUlBPUkFUSU9OCi1CQ0ZGQUMgICAgIChiYXNlIDE2KQkJVE9QQ09OIENPUlBPUkFUSU9OCi0JCQkJNzUtMSwgSGFzdW51bWEtY2hvCi0JCQkJSXRhYmFzaGkta3UgVE9LWU8gMTc0LTg1ODAKLQkJCQlKQVBBTgotCi1DMC0wRC03RSAgIChoZXgpCQlBZGRpdGVjaCwgSW5jLgotQzAwRDdFICAgICAoYmFzZSAxNikJCUFkZGl0ZWNoLCBJbmMuCi0JCQkJMTA5MjUgS2luZ2h1cnN0Ci0JCQkJU3VpdGUgNTAwCi0JCQkJSG91c3RvbiBUWCA3NzA5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtMTItNDIgICAoaGV4KQkJQWxwaGEgU2VjdXJpdHkgUHJvZHVjdHMKLUMwMTI0MiAgICAgKGJhc2UgMTYpCQlBbHBoYSBTZWN1cml0eSBQcm9kdWN0cwotCQkJCTEwNzE1IFNpa2VzIFBsYWNlLCBTdGUuIDIwMAotCQkJCUNoYXJsb3R0ZSBOQyAyODI3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtMUUtOUIgICAoaGV4KQkJUGl4YXZpIEFTCi1DMDFFOUIgICAgIChiYXNlIDE2KQkJUGl4YXZpIEFTCi0JCQkJRHVzYXZpa3ZlaWVuIDM5Ci0JCQkJU3RhdmFuZ2VyICA0MDAzCi0JCQkJTk9SV0FZCi0KLUMwLTIyLTUwICAgKGhleCkJCVBSSVZBVEUKLUMwMjI1MCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotQzAtMjUtMDYgICAoaGV4KQkJQVZNIEdtYkgKLUMwMjUwNiAgICAgKGJhc2UgMTYpCQlBVk0gR21iSAotCQkJCUFsdC1Nb2FiaXQgOTUKLQkJCQlCZXJsaW4gIDEwNTU5Ci0JCQkJR0VSTUFOWQotCi1DMC0yNy1COSAgIChoZXgpCQlCZWlqaW5nIE5hdGlvbmFsIFJhaWx3YXkgUmVzZWFyY2ggJiBEZXNpZ24gSW5zdGl0dXRlICBvZiBTaWduYWwgJiBDb21tdW5pY2F0aW9uCi1DMDI3QjkgICAgIChiYXNlIDE2KQkJQmVpamluZyBOYXRpb25hbCBSYWlsd2F5IFJlc2VhcmNoICYgRGVzaWduIEluc3RpdHV0ZSAgb2YgU2lnbmFsICYgQ29tbXVuaWNhdGlvbgotCQkJCU5vLjE4IEJ1aWxkaW5nLCBIdWF5dWFuIFlpTGksRmVuZ3RhaSBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwNzMKLQkJCQlDSElOQQotCi1DMC0yQi1GQyAgIChoZXgpCQlpTkVTLiBhcHBsaWVkIGluZm9ybWF0aWNzIEdtYkgKLUMwMkJGQyAgICAgKGJhc2UgMTYpCQlpTkVTLiBhcHBsaWVkIGluZm9ybWF0aWNzIEdtYkgKLQkJCQlPaG1zdHJhc3NlIDkKLQkJCQlMdWR3aWdzYnVyZyAgNzE2NDIKLQkJCQlHRVJNQU5ZCi0KLUMwLTM4LUY5ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi1DMDM4RjkgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLUMwLTNCLThGICAgKGhleCkJCU1pbmljb20gRGlnaXRhbCBTaWduYWdlCi1DMDNCOEYgICAgIChiYXNlIDE2KQkJTWluaWNvbSBEaWdpdGFsIFNpZ25hZ2UKLQkJCQkyNCBIZWJyb24gUm9hZAotCQkJCUplcnVzYWxlbSAgOTM1NDIKLQkJCQlJU1JBRUwKLQotQzAtM0YtMEUgICAoaGV4KQkJTkVUR0VBUgotQzAzRjBFICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBTElGT1JOSUEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLTYyLTZCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUMwNjI2QiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLTZDLTBGICAgKGhleCkJCURvYmJzIFN0YW5mb3JkCi1DMDZDMEYgICAgIChiYXNlIDE2KQkJRG9iYnMgU3RhbmZvcmQKLQkJCQkyNzE1IEVsZWN0cm9uaWMgTGFuZQotCQkJCURhbGxhcyBUZXhhcyA3NTIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtN0UtNDAgICAoaGV4KQkJU0hFTlpIRU4gWERLIENPTU1VTklDQVRJT04gRVFVSVBNRU5UIENPLixMVEQKLUMwN0U0MCAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBYREsgQ09NTVVOSUNBVElPTiBFUVVJUE1FTlQgQ08uLExURAotCQkJCVhESyBCVUlMRElORyxOTy4xIElORFVTVFJJQUwgQVJFQSxCQU5USUFOLExPTkdHQU5HIERJU1RSSUNUCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODEyOQotCQkJCUNISU5BCi0KLUMwLTgzLTBBICAgKGhleCkJCTJXaXJlCi1DMDgzMEEgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGt3eQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC04Qi02RiAgIChoZXgpCQlTIEkgU2lzdGVtYXMgSW50ZWxpZ2VudGVzIEVsZXRyb25pY29zIEx0ZGEKLUMwOEI2RiAgICAgKGJhc2UgMTYpCQlTIEkgU2lzdGVtYXMgSW50ZWxpZ2VudGVzIEVsZXRyb25pY29zIEx0ZGEKLQkJCQlSdWEgQW1hZGV1IFBpb3R0byAxNjEKLQkJCQlDdXJpdGliYSBQYXJhbu+/vSA4MTI4MDAyMAotCQkJCUJSQVpJTAotCi1DMC05MS0zNCAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi1DMDkxMzQgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQuCi0JCQkJUm9zZXZpbGxlIENhbGlmb3JuaWEgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLTlDLTkyICAgKGhleCkJCUNPQlkKLUMwOUM5MiAgICAgKGJhc2UgMTYpCQlDT0JZCi0JCQkJQ09CWSBFbGVjdHJvbmljcyBTaGVuWmhlbiBSJkQgQ2VudGVyIAotCQkJCUJsb2NrIDMsVGFvWGlhIDJuZCBJbmR1c3RyaWFsIFpvbmUsTG9uZ0h1YSBUb3duLEJhb0FuIERpc3RyaWN0LAotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgxMDkKLQkJCQlDSElOQQotCi1DMC1BMi02RCAgIChoZXgpCQlBYmJvdHQgUG9pbnQgb2YgQ2FyZQotQzBBMjZEICAgICAoYmFzZSAxNikJCUFiYm90dCBQb2ludCBvZiBDYXJlCi0JCQkJNDAwIENvbGxlZ2UgUm9hZCBFYXN0Ci0JCQkJUHJpbmNldG9uIE5KIDA4NTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC1CQS1FNiAgIChoZXgpCQlBcHBsaWNhdGlvbiBTb2x1dGlvbnMgKFNhZmV0eSBhbmQgU2VjdXJpdHkpIEx0ZAotQzBCQUU2ICAgICAoYmFzZSAxNikJCUFwcGxpY2F0aW9uIFNvbHV0aW9ucyAoU2FmZXR5IGFuZCBTZWN1cml0eSkgTHRkCi0JCQkJVW5pdCAxNwotCQkJCUNsaWZmZSBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUxld2VzIEVhc3QgU3Vzc2V4IEJOOCA2SkwKLQkJCQlVTklURUQgS0lOR0RPTQotCi1DMC1DMS1DMCAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLUMwQzFDMCAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLUM1LTIwICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotQzBDNTIwICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLUNCLTM4ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi1DMENCMzggICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLUMwLUNGLUEzICAgKGhleCkJCUNyZWF0aXZlIEVsZWN0cm9uaWNzICZhbXA7IFNvZnR3YXJlLCBJbmMuCi1DMENGQTMgICAgIChiYXNlIDE2KQkJQ3JlYXRpdmUgRWxlY3Ryb25pY3MgJmFtcDsgU29mdHdhcmUsIEluYy4KLQkJCQk2NTAgU3VuZG93biBSb2FkCi0JCQkJU291dGggRWxnaW4gSUwgNjAxNzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLUQwLTQ0ICAgKGhleCkJCVNBR0VNQ09NCi1DMEQwNDQgICAgIChiYXNlIDE2KQkJU0FHRU1DT00KLQkJCQkyNTAsIFJvdXRlIGRlIGwnRW1wZXJldXIKLQkJCQlSVUVJTC1NQUxNQUlTT04gIDkyNTAwCi0JCQkJRlJBTkNFCi0KLUMwLUU0LTIyICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1DMEU0MjIgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtRUEtRTQgICAoaGV4KQkJU29uaWN3YWxsCi1DMEVBRTQgICAgIChiYXNlIDE2KQkJU29uaWN3YWxsCi0JCQkJMjAwMSBMb2dpYyBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTI0LTM0NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLUY4LURBICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLUMwRjhEQSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotQzQtMEYtMDkgICAoaGV4KQkJSGVybWVzIGVsZWN0cm9uaWMgR21iSAotQzQwRjA5ICAgICAoYmFzZSAxNikJCUhlcm1lcyBlbGVjdHJvbmljIEdtYkgKLQkJCQlBbSBIYW5kd2Vya2VycGFyayAxCi0JCQkJRXNzZW4gTlJXIDQ1MzA5Ci0JCQkJR0VSTUFOWQotCi1DNC0xMC04QSAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLUM0MTA4QSAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUKLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTE2LUZBICAgKGhleCkJCVByeXNtIEluYwotQzQxNkZBICAgICAoYmFzZSAxNikJCVByeXNtIEluYwotCQkJCTE4MCBCYXl0ZWNoIERyaXZlCi0JCQkJU3VpdGUgMTEwCi0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtMTctRkUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotQzQxN0ZFICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLUM0LTE5LThCICAgKGhleCkJCURvbWluaW9uIFZvdGluZyBTeXN0ZW1zIENvcnBvcmF0aW9uCi1DNDE5OEIgICAgIChiYXNlIDE2KQkJRG9taW5pb24gVm90aW5nIFN5c3RlbXMgQ29ycG9yYXRpb24KLQkJCQkyMTUgU3BhZGluYSBBdmVudWUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlUb3JvbnRvIE9udGFyaW8gTTVUIDJDNwotCQkJCUNBTkFEQQotCi1DNC0xRS1DRSAgIChoZXgpCQlITUkgU291cmNlcyBMdGQuCi1DNDFFQ0UgICAgIChiYXNlIDE2KQkJSE1JIFNvdXJjZXMgTHRkLgotCQkJCTUgRmxvb3IsIFN1aXRlIDIsIDIzMyBIc2luIFlpIFJvYWQsIFNlY3Rpb24gNAotCQkJCVRhaXBlaSAgMTA2ODEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM0LTI0LTJFICAgKGhleCkJCUdhbHZhbmljIEFwcGxpZWQgU2NpZW5jZXMgSW5jCi1DNDI0MkUgICAgIChiYXNlIDE2KQkJR2FsdmFuaWMgQXBwbGllZCBTY2llbmNlcyBJbmMKLQkJCQk3MDAwIEZpc2hlciBSb2FkIFNFCi0JCQkJQ2FsZ2FyeSBBbGJlcnRhIFQySCAwVzMKLQkJCQlDQU5BREEKLQotQzQtMkMtMDMgICAoaGV4KQkJQXBwbGUKLUM0MkMwMyAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDYWxpZm9ybmlhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC0zNi1EQSAgIChoZXgpCQlSdXN0ZWxldGVjaCBMdGQuCi1DNDM2REEgICAgIChiYXNlIDE2KQkJUnVzdGVsZXRlY2ggTHRkLgotCQkJCU9yZHpob25pa2lkemUgU3RyLiAxMSwgQmxkZy4gNDAsIE9mZi4gMTUgCi0JCQkJTW9zY293ICAxMTU0MTkKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotQzQtM0QtQzcgICAoaGV4KQkJTkVUR0VBUgotQzQzREM3ICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBTElGT1JOSUEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTQ2LTE5ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi1DNDQ2MTkgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLUM0LTRBLUQwICAgKGhleCkJCUZJUkVGTElFUyBSVExTCi1DNDRBRDAgICAgIChiYXNlIDE2KQkJRklSRUZMSUVTIFJUTFMKLQkJCQkzMSBSVUUgR1VTVEFWRSBFSUZGRUwKLQkJCQljL28gUEVUQUxFCi0JCQkJR1JFTk9CTEUgIDM4MDAwCi0JCQkJRlJBTkNFCi0KLUM0LTRCLTQ0ICAgKGhleCkJCU9tbmlwcmludCBJbmMuCi1DNDRCNDQgICAgIChiYXNlIDE2KQkJT21uaXByaW50IEluYy4KLQkJCQkxOTIzIEVhc3QgRGVlcmUgQXZlLgotCQkJCVNhbnRhIEFuYSBDQSA5MjcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtNTUtQTYgICAoaGV4KQkJQ2FkYWMgSG9sZGluZ3MgTHRkCi1DNDU1QTYgICAgIChiYXNlIDE2KQkJQ2FkYWMgSG9sZGluZ3MgTHRkCi0JCQkJMSBOZXcgU3RyZWV0Ci0JCQkJTHV0b24gQmVkZm9yZHNoaXJlIExVMSA1RFgKLQkJCQlVTklURUQgS0lOR0RPTQotCi1DNC01Ni0wMCAgIChoZXgpCQlHYWxsZW9uIEVtYmVkZGVkIENvbXB1dGluZwotQzQ1NjAwICAgICAoYmFzZSAxNikJCUdhbGxlb24gRW1iZWRkZWQgQ29tcHV0aW5nCi0JCQkJT3N0ZW5zam9ldmVpZW4gNDQKLQkJCQlPc2xvICBOLTA2NjcKLQkJCQlOT1JXQVkKLQotQzQtNTktNzYgICAoaGV4KQkJRnVnb28KLUM0NTk3NiAgICAgKGJhc2UgMTYpCQlGdWdvbwotCQkJCTEwMjQgMTR0aCBBdmUgU0UKLQkJCQlMZSBNYXJzIElBIDUxMDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC02My01NCAgIChoZXgpCQlVLVJha3UsIEluYy4KLUM0NjM1NCAgICAgKGJhc2UgMTYpCQlVLVJha3UsIEluYy4KLQkJCQk0MDEtMSBEZWJhCi0JCQkJUml0dG8tc2hpIFNoaWdhIDUyMC0zMDQxCi0JCQkJSkFQQU4KLQotQzQtNzEtRkUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQzQ3MUZFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtN0ItMkYgICAoaGV4KQkJQmVpamluZyBKb2luSG9wZSBJbWFnZSBUZWNobm9sb2d5IEx0ZC4KLUM0N0IyRiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEpvaW5Ib3BlIEltYWdlIFRlY2hub2xvZ3kgTHRkLgotCQkJCTYyNCBSb29tIC5BdXRvbWF0aW9uIEJ1aWxkaW5nLjk1IyBaaG9uZyBHdWFuY3VuIEVhc3QgUm9hZC5IYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMTkwCi0JCQkJQ0hJTkEKLQotQzQtN0QtNEYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQzQ3RDRGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtODItM0YgICAoaGV4KQkJRnVqaWFuIE5ld2xhbmQgQXV0by1JRCBUZWNoLiBDbywuTHRkLgotQzQ4MjNGICAgICAoYmFzZSAxNikJCUZ1amlhbiBOZXdsYW5kIEF1dG8tSUQgVGVjaC4gQ28sLkx0ZC4KLQkJCQlOZXdsYW5kIFNjaWVuY2UgJiBUZWNobm9sb2d5IFBhcmssIE5vLjEgUnVqaWFuZyBXZXN0IFJkLiwgTWF3ZWkKLQkJCQlGdXpob3UgRnVqaWFuIDM1MDAxNQotCQkJCUNISU5BCi0KLUM0LTg1LTA4ICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi1DNDg1MDggICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMCAKLQkJCQlNQUxBWVNJQQotCi1DNC05My0xMyAgIChoZXgpCQkxMDBmaW8gbmV0d29ya3MgdGVjaG5vbG9neSBsbGMKLUM0OTMxMyAgICAgKGJhc2UgMTYpCQkxMDBmaW8gbmV0d29ya3MgdGVjaG5vbG9neSBsbGMKLQkJCQkyNTM0IGNyZXNjZW50IHN0LiBhcHQgM0YKLQkJCQlBc3RvcmlhIE5ldyB5b3JrIDExMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC1BQS1BMSAgIChoZXgpCQlTVU1NSVQgREVWRUxPUE1FTlQsIHNwb2wucyByLm8uCi1DNEFBQTEgICAgIChiYXNlIDE2KQkJU1VNTUlUIERFVkVMT1BNRU5ULCBzcG9sLnMgci5vLgotCQkJCUsgVm9kb3RlY2kgMTk3Ci0JCQkJT3JlY2ggUHJhaGEtemFwYWQgMjUyIDI1Ci0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotQzQtQjUtMTIgICAoaGV4KQkJR2VuZXJhbCBFbGVjdHJpYyBEaWdpdGFsIEVuZXJneQotQzRCNTEyICAgICAoYmFzZSAxNikJCUdlbmVyYWwgRWxlY3RyaWMgRGlnaXRhbCBFbmVyZ3kKLQkJCQk0MjAwIFdpbGR3b29kIFBrd3kKLQkJCQlBdGxhbnRhIEdBIDMwMzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC1DRC00NSAgIChoZXgpCQlCZWlqaW5nIEJvb21zZW5zZSBUZWNobm9sb2d5IENPLixMVEQuCi1DNENENDUgICAgIChiYXNlIDE2KQkJQmVpamluZyBCb29tc2Vuc2UgVGVjaG5vbG9neSBDTy4sTFRELgotCQkJCTgwMyBCdWlsZGluZyA0IElOVEVSV0VTVCBCdXNpbmVzcyBDZW50ZXIsTm8uOSBTb3V0aCBTaG91dGkgUm9hZCAsSGFpZGlhbkRpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDA0OAotCQkJCUNISU5BCi0KLUM0LUQ0LTg5ICAgKGhleCkJCUppYW5nU3UgSm95cXVlIEluZm9ybWF0aW9uIEluZHVzdHJ5IENvLixMdGQKLUM0RDQ4OSAgICAgKGJhc2UgMTYpCQlKaWFuZ1N1IEpveXF1ZSBJbmZvcm1hdGlvbiBJbmR1c3RyeSBDby4sTHRkCi0JCQkJMTAgIEZsb29yIFlhSHVhIEJ1aWxkaW5nLCBYaSdhbkJlaSBSb2FkLCAKLQkJCQlYdXpob3UgSmlhbmdTdSAyMjEwMDYKLQkJCQlDSElOQQotCi1DNC1FMS03QyAgIChoZXgpCQlVMlMgY28uCi1DNEUxN0MgICAgIChiYXNlIDE2KQkJVTJTIGNvLgotCQkJCTEwNC03MDYsIFNLIFZlbnRpdW0gQnVpbGRpbmcsIDUyMiwgRGFuZ2plb25nLURvbmcKLQkJCQlHdW5wby1zaSBHZW9uZ2dpLWRvIDQzNS03NzYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQzQtRUUtRjUgICAoaGV4KQkJT2NsYXJvLCBJbmMuCi1DNEVFRjUgICAgIChiYXNlIDE2KQkJT2NsYXJvLCBJbmMuCi0JCQkJMzQzIERhbmllbCBaZW5rZXIgRHIuLCBTdWl0ZSAxMDIKLQkJCQlIb3JzZWhlYWRzIE5ZIDE0ODQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC1GNC02NCAgIChoZXgpCQlTcGljYSBpbnRlcm5hdGlvbmFsCi1DNEY0NjQgICAgIChiYXNlIDE2KQkJU3BpY2EgaW50ZXJuYXRpb25hbAotCQkJCVBvdCBrIHNlam1pc2N1IDMzCi0JCQkJTGp1YmxqYW5hICAxMDAwCi0JCQkJU0xPVkVOSUEKLQotQzQtRkMtRTQgICAoaGV4KQkJRGlzaFRWIE5aIEx0ZAotQzRGQ0U0ICAgICAoYmFzZSAxNikJCURpc2hUViBOWiBMdGQKLQkJCQkxMCBQZW5uZXkgQXZlCi0JCQkJTXQgUm9za2lsbAotCQkJCUF1Y2tsYW5kICAxMDQxCi0JCQkJTkVXIFpFQUxBTkQKLQotQzgtMDItQTYgICAoaGV4KQkJQmVpamluZyBOZXdtaW5lIFRlY2hub2xvZ3kKLUM4MDJBNiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIE5ld21pbmUgVGVjaG5vbG9neQotCQkJCTEwIGZsb29yLEtlc2hpIFBsYXphCi0JCQkJSGFpRGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLUM4LTBBLUE5ICAgKGhleCkJCVF1YW50YSBDb21wdXRlciBJbmMuCi1DODBBQTkgICAgIChiYXNlIDE2KQkJUXVhbnRhIENvbXB1dGVyIEluYy4KLQkJCQkyMTEsIFdlbiBId2EgMm5kIFJkLiwKLQkJCQlUYW8gWXVhbiBLdWVpIFNoYW4gMzMzNzcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM4LTFFLThFICAgKGhleCkJCUFEViBTZWN1cml0eSAoUykgUHRlIEx0ZAotQzgxRThFICAgICAoYmFzZSAxNikJCUFEViBTZWN1cml0eSAoUykgUHRlIEx0ZAotCQkJCTU2IER1bmxvcCBTdHJlZXQKLQkJCQkyMDkzODYKLQkJCQlTSU5HQVBPUkUKLQotQzgtMjAtOEUgICAoaGV4KQkJU3RvcmFnZWRhdGEKLUM4MjA4RSAgICAgKGJhc2UgMTYpCQlTdG9yYWdlZGF0YQotCQkJCVJhbmRzdGFkIDIyMTE3Ci0JCQkJQWxtZXJlIEZsZXZvbGFuZCAxMzE2QlcKLQkJCQlORVRIRVJMQU5EUwotCi1DOC0yQS0xNCAgIChoZXgpCQlBcHBsZSBJbmMKLUM4MkExNCAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM4LTJFLTk0ICAgKGhleCkJCUhhbGZhIEVudGVycHJpc2UgQ28uLCBMdGQuCi1DODJFOTQgICAgIChiYXNlIDE2KQkJSGFsZmEgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQk1RiwgTm8uMTAyLCBNaW5nIENodWFuIFJvYWQKLQkJCQlIc2luIFRpZW4gVGFpcGVpIENvdW50eSAyMzE0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQzgtMzUtQjggICAoaGV4KQkJRXJpY3Nzb24sIEVBQi9SV0kvSwotQzgzNUI4ICAgICAoYmFzZSAxNikJCUVyaWNzc29uLCBFQUIvUldJL0sKLQkJCQlTa29sZ++/vW5nZW4gMTcKLQkJCQlH77+9dmxlCi0JCQkJU0UtODAwIDA2Ci0JCQkJU1dFREVOCi0KLUM4LTNBLTM1ICAgKGhleCkJCVRlbmRhIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1DODNBMzUgICAgIChiYXNlIDE2KQkJVGVuZGEgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tIDYwMS02MDIsUi9EIEJ1aWxkaW5nIENvbXBsZXgsVHNpbmdodWEgSGlnaC1UZWNoIFBhcmssbmFuc2hhbiBkaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5kb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUM4LTNFLTk5ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1DODNFOTkgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM4LTNFLUE3ICAgKGhleCkJCUtVTkJVUyBHbWJICi1DODNFQTcgICAgIChiYXNlIDE2KQkJS1VOQlVTIEdtYkgKLQkJCQlIZWVyd2VnIDE1QQotCQkJCURlbmtlbmRvcmYgQlcgRC03Mzc3MAotCQkJCUdFUk1BTlkKLQotQzgtNDUtMjkgICAoaGV4KQkJSU1LIE5ldHdvcmtzIENvLixMdGQKLUM4NDUyOSAgICAgKGJhc2UgMTYpCQlJTUsgTmV0d29ya3MgQ28uLEx0ZAotCQkJCTIwMS1IbyBqdW5ncmlianVuamEsIDE2LTNidW5qaSwgCi0JCQkJR3V1aS1kb25nLCBHd2FuZ2ppbi1ndQotCQkJCVNlb3VsICAxNDMtODE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUM4LTQ4LUY1ICAgKGhleCkJCU1FRElTT04gWHJheSBDby4sIEx0ZAotQzg0OEY1ICAgICAoYmFzZSAxNikJCU1FRElTT04gWHJheSBDby4sIEx0ZAotCQkJCTNGIEJ1cmltIEIvRCA5OTkgRGFlY2hpLWRvbmcgCi0JCQkJR2FuZ25hbS1ndSAKLQkJCQlTZW91bCAgMTM1LTI4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DOC00Qy03NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1DODRDNzUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC02NC1DNyAgIChoZXgpCQl6dGUgY29ycG9yYXRpb24KLUM4NjRDNyAgICAgKGJhc2UgMTYpCQl6dGUgY29ycG9yYXRpb24KLQkJCQkxMi9GLix6dGUgUiZEIGJ1aWxkaW5nLGtlamluYW4gUm9hZCwKLQkJCQlzaGVuemhlbiBndWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQzgtNkMtMUUgICAoaGV4KQkJRGlzcGxheSBTeXN0ZW1zIEx0ZAotQzg2QzFFICAgICAoYmFzZSAxNikJCURpc3BsYXkgU3lzdGVtcyBMdGQKLQkJCQkxNi1QYXJrb3ZhamEgU3RyZWV0IDI2Ci0JCQkJTW9zY293ICAxMDU0ODQKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotQzgtNkMtODcgICAoaGV4KQkJTWl0cmFzdGFyIFRlY2hub2xvZ3kKLUM4NkM4NyAgICAgKGJhc2UgMTYpCQlNaXRyYXN0YXIgVGVjaG5vbG9neQotCQkJCU5vLjYgSW5ub3ZhdGlvbiBSb2FkIElJCi0JCQkJU2NpZW5jZSBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQzgtNkMtQjYgICAoaGV4KQkJT3B0Y29tIENvLiwgTHRkLgotQzg2Q0I2ICAgICAoYmFzZSAxNikJCU9wdGNvbSBDby4sIEx0ZC4KLQkJCQk3OTItMyBUb21pZ2Fva2EKLQkJCQlJd2F0YSBTaGl6dW9rYSA0MzgtMDgwMwotCQkJCUpBUEFOCi0KLUM4LTcyLTQ4ICAgKGhleCkJCUFwbGljb20gT3kKLUM4NzI0OCAgICAgKGJhc2UgMTYpCQlBcGxpY29tIE95Ci0JCQkJUmF1dGF0aWVua2F0dSA1NgotCQkJCcTkbmVrb3NraSBM5G5zaS1TdW9taSA0NDEwMQotCQkJCUZJTkxBTkQKLQotQzgtN0UtNzUgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi1DODdFNzUgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUM4LTg0LTM5ICAgKGhleCkJCVN1bnJpc2UgVGVjaG5vbG9naWVzCi1DODg0MzkgICAgIChiYXNlIDE2KQkJU3VucmlzZSBUZWNobm9sb2dpZXMKLQkJCQk1NCBDb21tZXJjaWFsIFN0cmVldAotCQkJCVJheW5oYW0gTUEgMDI3NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM4LTg0LTQ3ICAgKGhleCkJCUJlYXV0aWZ1bCBFbnRlcnByaXNlIENvLiwgTHRkCi1DODg0NDcgICAgIChiYXNlIDE2KQkJQmVhdXRpZnVsIEVudGVycHJpc2UgQ28uLCBMdGQKLQkJCQkyNnRoIEZsb29yLCBCZWF1dGlmdWwgR3JvdXAgVG93ZXIsIDc3IENvbm5hdWdodCBSb2FkIENlbnRyYWwKLQkJCQlIT05HIEtPTkcKLQotQzgtODctM0IgICAoaGV4KQkJTmV0IE9wdGljcwotQzg4NzNCICAgICAoYmFzZSAxNikJCU5ldCBPcHRpY3MKLQkJCQk1MzAzIEJldHN5IFJvc3MgRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzgtOEItNDcgICAoaGV4KQkJT3B0aWNvcyBzLnIubC4KLUM4OEI0NyAgICAgKGJhc2UgMTYpCQlPcHRpY29zIHMuci5sLgotCQkJCXZpYSBUZXJ6aSBkaSBTLkFnYXRhIDIKLQkJCQlCcmVtYmF0ZSBkaSBTb3ByYSBCZXJnYW1vIDI0MDMwCi0JCQkJSVRBTFkKLQotQzgtOTMtODMgICAoaGV4KQkJRW1iZWRkZWQgQXV0b21hdGlvbiwgSW5jLgotQzg5MzgzICAgICAoYmFzZSAxNikJCUVtYmVkZGVkIEF1dG9tYXRpb24sIEluYy4KLQkJCQkxNzM0NSBBYmJleSBEcml2ZQotCQkJCVN1cnJleSBCQyBWNE4gNE0zCi0JCQkJQ0FOQURBCi0KLUM4LTk3LTlGICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1DODk3OUYgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1NzAKLQkJCQlGSU5MQU5ECi0KLUM4LTlDLTFEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUM4OUMxRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM4LTlDLURDICAgKGhleCkJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotQzg5Q0RDICAgICAoYmFzZSAxNikJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotCQkJCU5PLiAyMzksIFNlYy4gMiwgVGkgRGluZyBCbHZkLgotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM4LUExLUI2ICAgKGhleCkJCVNoZW56aGVuIExvbmd3YXkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi1DOEExQjYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gTG9uZ3dheSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlTdWl0ZSA3MDcsSW5jdWJhdGlvbiBCdWlsZGluZywgQ2hpbmEgQWNhZGVteSBvZiBTY2llbmNlJlRlY2ggRGV2ZWxvcG1lbnQsIFNvdXRoIGFyZWEgCi0JCQkJSGktVGVjaCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQzgtQTctMEEgICAoaGV4KQkJVmVyaXpvbiBCdXNpbmVzcwotQzhBNzBBICAgICAoYmFzZSAxNikJCVZlcml6b24gQnVzaW5lc3MKLQkJCQlPbmUgRGlnZXggUGxhemEKLQkJCQlCZWx0c3ZpbGxlIE1EIDIwNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC1BNy0yOSAgIChoZXgpCQlTWVN0cm9uaWNzIENvLiwgTHRkLgotQzhBNzI5ICAgICAoYmFzZSAxNikJCVNZU3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzMwMS0xNDA0LCBCdWNodW4gVGVjaG5vLVBhcmsgSUkKLQkJCQkzNjUsIFNhbWplb25nLWRvbmcsIE9qZW9uZy1ndQotCQkJCUJ1Y2h1biBDaXR5IEt5dW5nIGdpLWRvIDQyMS03NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQzgtQUEtQ0MgICAoaGV4KQkJUFJJVkFURQotQzhBQUNDICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi1DOC1CQy1DOCAgIChoZXgpCQlBcHBsZQotQzhCQ0M4ICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC1DMS0yNiAgIChoZXgpCQlaUE0gSW5kdXN0cmlhIGUgQ29tZXJjaW8gTHRkYQotQzhDMTI2ICAgICAoYmFzZSAxNikJCVpQTSBJbmR1c3RyaWEgZSBDb21lcmNpbyBMdGRhCi0JCQkJUnVhIEFyYWd1YWlhLCAxNzUKLQkJCQlDYW5vYXMgUlMgOTI0MTAtMDAwCi0JCQkJQlJBWklMCi0KLUM4LUMxLTNDICAgKGhleCkJCVJ1Z2dlZFRlayBIYW5nemhvdSBDby4sIEx0ZAotQzhDMTNDICAgICAoYmFzZSAxNikJCVJ1Z2dlZFRlayBIYW5nemhvdSBDby4sIEx0ZAotCQkJCVpoZWppYW5nIFVuaXZlcnNpdHkgTmF0aW9uYWwgU2NpZW5jZSBQYXJrCi0JCQkJNTI1IFhpeGkgUm9hcmQsIEJ1aWxkaW5nIEMgUm9vbSA0MDEKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTMKLQkJCQlDSElOQQotCi1DOC1DRC03MiAgIChoZXgpCQlTQUdFTUNPTQotQzhDRDcyICAgICAoYmFzZSAxNikJCVNBR0VNQ09NCi0JCQkJMjUwIHJvdXRlIGRlIGwnRW1wZXJldXIKLQkJCQlSVUVJTCBNQUxNQUlTT04gIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLUM4LUQxLUQxICAgKGhleCkJCUFHQWlUIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLUM4RDFEMSAgICAgKGJhc2UgMTYpCQlBR0FpVCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNUYsTm8uMjctOCwgU2VjLiAyLCBaaG9uZ3poZW5nIEUuIFJkLiwgRGFuc2h1aSBUb3duc2hpcCAKLQkJCQlUYWlwZWkgQ291bnR5ICAgMjUxNzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM4LUQyLUMxICAgKGhleCkJCUpldGx1biAoU2hlbnpoZW4pIENvcnBvcmF0aW9uCi1DOEQyQzEgICAgIChiYXNlIDE2KQkJSmV0bHVuIChTaGVuemhlbikgQ29ycG9yYXRpb24KLQkJCQkxMDA4QSBTa3l3b3J0aCBCdWlsZGluZywgR2FvLXhpbiBSZCBTb3V0aAotCQkJCUhpZ2gtVGVjaCBQYXJrLCBOYW5TaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gIDUxODA1NwotCQkJCUNISU5BCi0KLUM4LUQ1LUZFICAgKGhleCkJCVNoZW56aGVuIFpvd2VlIFRlY2hub2xvZ3kgQ28uLCBMdGQKLUM4RDVGRSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBab3dlZSBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJQmxvY2sgNSwgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBJbmR1c3RyaWFsIFBhcmsgb2YKLQkJCQlQcml2YXRlbHkgT3duZWQgRW50ZXJwcmlzZXMsIFBpbmdzaGFuLCBYaWxpLCBOYW5zaGFuIERpc3RyaWN0ICwKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDU1Ci0JCQkJQ0hJTkEKLQotQzgtREYtN0MgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUM4REY3QyAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU5MAotCQkJCUZJTkxBTkQKLQotQzgtRUUtMDggICAoaGV4KQkJVEFOR1RPUCBURUNITk9MT0dZIENPLixMVEQKLUM4RUUwOCAgICAgKGJhc2UgMTYpCQlUQU5HVE9QIFRFQ0hOT0xPR1kgQ08uLExURAotCQkJCTFGLE5PLjE1MyxMaWdvbiBTdC4sQmVpdG91IERpc3RyaWN0Ci0JCQkJVGFpcGVpIENpdHkgICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM4LUVGLTJFICAgKGhleCkJCUJlaWppbmcgR2VmZWkgVGVjaC4gQ28uLCBMdGQgCi1DOEVGMkUgICAgIChiYXNlIDE2KQkJQmVpamluZyBHZWZlaSBUZWNoLiBDby4sIEx0ZCAKLQkJCQlBLTYwMyBQb3dlciBDcmVhdGl2ZSBQbGF6YSwgTk8uMSBTaGFuZ2RpIEUuIFJkLixIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLUM4LUZFLTMwICAgKGhleCkJCUJlamluZyBEQVlPIE1vYmlsZSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgTHRkLgotQzhGRTMwICAgICAoYmFzZSAxNikJCUJlamluZyBEQVlPIE1vYmlsZSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgTHRkLgotCQkJCVJvb20gNzEyLCBVTE8gUGFyayBCdWlsZGluZyBOby4gNjAxRQotCQkJCUJsb2NrIEItMTEtMSBXYW5nSmluZyBBcmVhLCAgQ2hhb1lhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAxMDIKLQkJCQlDSElOQQotCi1DQy0wMC04MCAgIChoZXgpCQlUUlVTVCBTWVNURU0gQ28uLAotQ0MwMDgwICAgICAoYmFzZSAxNikJCVRSVVNUIFNZU1RFTSBDby4sCi0JCQkJMy0xNS0xLTEwMDEgc2hpbnNha3UKLQkJCQl0YWthdHN1LWt1Ci0JCQkJS2F3YXNha2ktc2hpIEthbmFnYXdhIDIxMy0wMDE0Ci0JCQkJSkFQQU4KLQotQ0MtMDUtMUIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi1DQzA1MUIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUNDLTA4LUUwICAgKGhleCkJCUFwcGxlCi1DQzA4RTAgICAgIChiYXNlIDE2KQkJQXBwbGUKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLTA5LUM4ICAgKGhleCkJCUlNQVFMSVEgTFRECi1DQzA5QzggICAgIChiYXNlIDE2KQkJSU1BUUxJUSBMVEQKLQkJCQlPYnZvZG55IENhbmFsIDkzQQotCQkJCVN0LlBldGVyc2J1cmcgIDE5MTExOQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1DQy0wQy1EQSAgIChoZXgpCQlNaWxqb3Zha3QgQVMKLUNDMENEQSAgICAgKGJhc2UgMTYpCQlNaWxqb3Zha3QgQVMKLQkJCQlHYW5uZXN0YWR2ZWllbiAyCi0JCQkJQm9ycmUgVmVzdGZvbGQgMzE4NAotCQkJCU5PUldBWQotCi1DQy0xRS1GRiAgIChoZXgpCQlNZXRyb2xvZ2ljYWwgR3JvdXAgQlYKLUNDMUVGRiAgICAgKGJhc2UgMTYpCQlNZXRyb2xvZ2ljYWwgR3JvdXAgQlYKLQkJCQlNYXJpbmllcnN3ZWcgMTUxCi0JCQkJUm90dGVyZGFtIFp1aWQtSG9sbGFuZCAzMDExTksKLQkJCQlORVRIRVJMQU5EUwotCi1DQy0yMi0xOCAgIChoZXgpCQlJbm5vRGlnaXRhbCBDby4sIEx0ZC4KLUNDMjIxOCAgICAgKGJhc2UgMTYpCQlJbm5vRGlnaXRhbCBDby4sIEx0ZC4KLQkJCQlOby4zMTAgM0YgS29mb21vIFRvd2VyCi0JCQkJMTYtMyBTdW5lLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTdW5nbmFtLWNpdHkgS3l1bmdnaS1kbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUNDLTM0LUQ3ICAgKGhleCkJCUdFV0lTUyBTLlAuQS4KLUNDMzRENyAgICAgKGJhc2UgMTYpCQlHRVdJU1MgUy5QLkEuCi0JCQkJVklBIEFMRVNTQU5EUk8gVk9MVEEgMQotCQkJCUNFTkFURSBTT1RUTyAgMjQwNjkKLQkJCQlJVEFMWQotCi1DQy00My1FMyAgIChoZXgpCQlUcnVtcCBzLmEuCi1DQzQzRTMgICAgIChiYXNlIDE2KQkJVHJ1bXAgcy5hLgotCQkJCXJ1ZSBkZSBsYSBNYWl0cmlzZSA5Ci0JCQkJTml2ZWxsZXMgIDE0MDAKLQkJCQlCRUxHSVVNCi0KLUNDLTUwLTc2ICAgKGhleCkJCU9jb20gQ29tbXVuaWNhdGlvbnMsIEluYy4KLUNDNTA3NiAgICAgKGJhc2UgMTYpCQlPY29tIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTNGLTYsIE5vLiAxLCBCYW8gU2hlbmcgUmQuLCAKLQkJCQlZb25nIEhvIENpdHkgIDIzNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQ0MtNTItQUYgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi1DQzUyQUYgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSwgVEFJUElORyBSRC4KLQkJCQlTRUMuMSwgVFNBTyBUVUVOCi0JCQkJTkFOLVRPVSA1NDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUNDLTU0LTU5ICAgKGhleCkJCU9uVGltZSBOZXR3b3JrcyBBUwotQ0M1NDU5ICAgICAoYmFzZSAxNikJCU9uVGltZSBOZXR3b3JrcyBBUwotCQkJCUdsYWRzdmVpIDIwCi0JCQkJT3NsbyAgMDQ4OQotCQkJCU5PUldBWQotCi1DQy01NS1BRCAgIChoZXgpCQlSSU0KLUNDNTVBRCAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzkKLQkJCQlDQU5BREEKLQotQ0MtNUMtNzUgICAoaGV4KQkJV2VpZ2h0ZWNoIENvbS4gSW1wLiBFeHAuIEVxdWlwLiBQZXNhZ2VtIEx0ZGEKLUNDNUM3NSAgICAgKGJhc2UgMTYpCQlXZWlnaHRlY2ggQ29tLiBJbXAuIEV4cC4gRXF1aXAuIFBlc2FnZW0gTHRkYQotCQkJCVJvZG92aWEgVmlyZ++/vWxpbyBW77+9cnplYSwgMzExMCAtIFNhbGEgMDEKLQkJCQlDb3N0YSBOb3J0ZSBDZW50ZXIgLSBCYWlycm8gU2FjbyBHcmFuZGUKLQkJCQlGbG9yaWFu77+9cG9saXMgU0MgODgwMzItMDAxCi0JCQkJQlJBWklMCi0KLUNDLTVELTRFICAgKGhleCkJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi1DQzVENEUgICAgIChiYXNlIDE2KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQlOby42IElubm92YXRpb24gUm9hZCBJSSwgU2NpZW5jZSBQYXJrLCAKLQkJCQlIc2luIENodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DQy02MC1CQiAgIChoZXgpCQlFbXBvd2VyIFJGIFN5c3RlbXMKLUNDNjBCQiAgICAgKGJhc2UgMTYpCQlFbXBvd2VyIFJGIFN5c3RlbXMKLQkJCQkzMTYgVy4gRmxvcmVuY2UgQXZlCi0JCQkJSW5nbGV3b29kIENBIDkwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy02OS1CMCAgIChoZXgpCQlHbG9iYWwgVHJhZmZpYyBUZWNobm9sb2dpZXMsIExMQwotQ0M2OUIwICAgICAoYmFzZSAxNikJCUdsb2JhbCBUcmFmZmljIFRlY2hub2xvZ2llcywgTExDCi0JCQkJNzgwMCBUaGlyZCBTdHJlZXQgTm9ydGgKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTdC4gUGF1bCBNaW5uZXNvdGEgNTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLTZCLTk4ICAgKGhleCkJCU1pbmV0ZWMgV2lyZWxlc3MgVGVjaG5vbG9naWVzCi1DQzZCOTggICAgIChiYXNlIDE2KQkJTWluZXRlYyBXaXJlbGVzcyBUZWNobm9sb2dpZXMKLQkJCQkxMCBLZW1ibGEgV2F5Ci0JCQkJV2lsbGV0dG9uIFdBIDYxNTUKLQkJCQlBVVNUUkFMSUEKLQotQ0MtNzYtNjkgICAoaGV4KQkJU0VFVEVDSAotQ0M3NjY5ICAgICAoYmFzZSAxNikJCVNFRVRFQ0gKLQkJCQkxOS0xNSwgU2Vva3UtZG9uZwotCQkJCUh3YXN1bmctc2kgR3llb25nZ2ktZG8gNDQ1LTE3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DQy03QS0zMCAgIChoZXgpCQlDTUFYIFdpcmVsZXNzIENvLiwgTHRkLgotQ0M3QTMwICAgICAoYmFzZSAxNikJCUNNQVggV2lyZWxlc3MgQ28uLCBMdGQuCi0JCQkJS1QgQm9uZ2R1ayBCL0QgOUYsIDYyNy0xNSwgQm9uZ2R1ay1kb25nCi0JCQkJTmFtZ3UgRGFlZ3UgNzA1NzEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUNDLTdELTM3ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi1DQzdEMzcgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy03RS1FNyAgIChoZXgpCQlQYW5hc29uaWMgQVZDIE5ldHdvcmtzIENvbXBhbnkKLUNDN0VFNyAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgQVZDIE5ldHdvcmtzIENvbXBhbnkKLQkJCQkxLTE1IE1hdHN1by1jaG8KLQkJCQlLYWRvbWEgQ2l0eSBPc2FrYSA1NzEtODUwNAotCQkJCUpBUEFOCi0KLUNDLThDLUUzICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1DQzhDRTMgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLTk2LUEwICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLUNDOTZBMCAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotQ0MtOUUtMDAgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi1DQzlFMDAgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotQ0MtQUYtNzggICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotQ0NBRjc4ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi1DQy1CNS01QSAgIChoZXgpCQlGcmF1bmhvZmVyIElUV00KLUNDQjU1QSAgICAgKGJhc2UgMTYpCQlGcmF1bmhvZmVyIElUV00KLQkJCQlGcmF1bmhvZmVycGxhdHogMQotCQkJCUthaXNlcnNsYXV0ZXJuIFJoaW5lbGFuZC1QYWxhdGluYWUgNjc2NjMKLQkJCQlHRVJNQU5ZCi0KLUNDLUI4LTg4ICAgKGhleCkJCUFuQiBTZWN1cml0ZSBzLmEuCi1DQ0I4ODggICAgIChiYXNlIDE2KQkJQW5CIFNlY3VyaXRlIHMuYS4KLQkJCQlSdWUgZGUgSm9pZSwzOC00MAotCQkJCUxpZWdlICA0MDAwCi0JCQkJQkVMR0lVTQotCi1DQy1CRS03MSAgIChoZXgpCQlPcHRpTG9naXggQlYKLUNDQkU3MSAgICAgKGJhc2UgMTYpCQlPcHRpTG9naXggQlYKLQkJCQlKb29wIEdlZXNpbmt3ZWcgOTk5Ci0JCQkJQW1zdGVyZGFtIE5IIDEwOTZBWgotCQkJCU5FVEhFUkxBTkRTCi0KLUNDLUM2LTJCICAgKGhleCkJCVRyaS1TeXN0ZW1zIENvcnBvcmF0aW9uCi1DQ0M2MkIgICAgIChiYXNlIDE2KQkJVHJpLVN5c3RlbXMgQ29ycG9yYXRpb24KLQkJCQkzLTI3LTggVFJTIEJ1aWxkaW5nIDNGCi0JCQkJS295YXN1bWFjaGkKLQkJCQlIYWNoaW9qaSBUb2t5byAxOTItMDkwNAotCQkJCUpBUEFOCi0KLUNDLUNDLTRFICAgKGhleCkJCVN1biBGb3VudGFpbmhlYWQgVVNBLiBDb3JwIAotQ0NDQzRFICAgICAoYmFzZSAxNikJCVN1biBGb3VudGFpbmhlYWQgVVNBLiBDb3JwIAotCQkJCTgwMSBTLiBHYXJmaWxlZCBBVkUgIyAyMzYgCi0JCQkJTG9zIEFuZ2VsZXMgIENhbGlmb3JuaWEgIDkxODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy1DRC02NCAgIChoZXgpCQlTTS1FbGVjdHJvbmljIEdtYkgKLUNDQ0Q2NCAgICAgKGJhc2UgMTYpCQlTTS1FbGVjdHJvbmljIEdtYkgKLQkJCQlXYWxkd2VnIDIKLQkJCQlTdGFwZWxmZWxkIC8gQnJhYWsgIDIyMTQ1Ci0JCQkJR0VSTUFOWQotCi1DQy1DRS00MCAgIChoZXgpCQlKYW50ZXEgQ29ycAotQ0NDRTQwICAgICAoYmFzZSAxNikJCUphbnRlcSBDb3JwCi0JCQkJOTI3MiBKZXJvbmltbyBSb2FkCi0JCQkJU3VpdGUgMTI0Ci0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy1EOC0xMSAgIChoZXgpCQlBaWNvbm4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotQ0NEODExICAgICAoYmFzZSAxNikJCUFpY29ubiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNUYsIE5PLiA5LCBBbGxleSAyLCBMYW5lIDM1LCBKaS1IdSBSZC4sIE5laS1IdSwgCi0JCQkJVGFpcGVpIENpdHkgIDExNDk0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DQy1EOS1FOSAgIChoZXgpCQlTQ1IgRW5naW5lZXJzIEx0ZC4KLUNDRDlFOSAgICAgKGJhc2UgMTYpCQlTQ1IgRW5naW5lZXJzIEx0ZC4KLQkJCQk2IEhhb21hbnV0IFN0LgotCQkJCU5ldGFueWEgIDQyNTA0Ci0JCQkJSVNSQUVMCi0KLUNDLUVBLTFDICAgKGhleCkJCURDT05XT1JLUyAgQ28uLCBMdGQKLUNDRUExQyAgICAgKGJhc2UgMTYpCQlEQ09OV09SS1MgIENvLiwgTHRkCi0JCQkJMTgyLTEzIERhZXJ1bmcgUG9zdCBUb3dlciAybmQgNUYKLQkJCQlHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTg0NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DQy1GMy1BNSAgIChoZXgpCQlDaGkgTWVpIENvbW11bmljYXRpb24gU3lzdGVtcywgSW5jCi1DQ0YzQTUgICAgIChiYXNlIDE2KQkJQ2hpIE1laSBDb21tdW5pY2F0aW9uIFN5c3RlbXMsIEluYwotCQkJCU5vLjQKLQkJCQlNaW5nc2hlbmcgU3RyZWV0Ci0JCQkJVHVjaGVuZyBDaXR5IFRhaXBlaSBDb3VudHkgIDIzNjc4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DQy1GNi03QSAgIChoZXgpCQlBeWVja2EgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIExURAotQ0NGNjdBICAgICAoYmFzZSAxNikJCUF5ZWNrYSBDb21tdW5pY2F0aW9uIFN5c3RlbXMgTFRECi0JCQkJUE9CIDMwNTkKLQkJCQlIb2QgSGFzaGFyb24gIDQ1MTMwCi0JCQkJSVNSQUVMCi0KLUNDLUY4LTQxICAgKGhleCkJCUx1bWV3YXZlCi1DQ0Y4NDEgICAgIChiYXNlIDE2KQkJTHVtZXdhdmUKLQkJCQk0ODAzIEIgU3RyZWV0Ci0JCQkJU2FjcmFtZW50byBDQSA5NTgxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotQ0MtRjktNTQgICAoaGV4KQkJQXZheWEsIEluYwotQ0NGOTU0ICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkIAotCQkJCUJhc2tpbmcgUmlkZ2UgTkogMDc5MjAtMjMxMSAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLUZDLTZEICAgKGhleCkJCVJJWiBUUkFOU01JVFRFUlMKLUNDRkM2RCAgICAgKGJhc2UgMTYpCQlSSVogVFJBTlNNSVRURVJTCi0JCQkJQk9aSURBUkVWSUNFVkEgMTMKLQkJCQlQLk8uQk9YIDY1NAotCQkJCVpBR1JFQiAgMTAwMDAKLQkJCQlDUk9BVElBCi0KLUNDLUZDLUIxICAgKGhleCkJCVdpcmVsZXNzIFRlY2hub2xvZ3ksIEluYy4KLUNDRkNCMSAgICAgKGJhc2UgMTYpCQlXaXJlbGVzcyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjA2NCBFYXN0bWFuIEF2ZS4gIzExMwotCQkJCVZlbnR1cmEgQ0EgOTMwMDMtNzc4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtMTMtMUUgICAoaGV4KQkJU3VucmV4IFRlY2hub2xvZ3kgQ29ycAotRDAxMzFFICAgICAoYmFzZSAxNikJCVN1bnJleCBUZWNobm9sb2d5IENvcnAKLQkJCQlOby4gMTg4LTEsQ2h1bmcgQ2hlbmcgUm9hZC4sVGEgWWEgU2hpYW5nCi0JCQkJVGFpY2h1bmcgIDQyOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDAtMTUtNEEgICAoaGV4KQkJenRlIGNvcnBvcmF0aW9uCi1EMDE1NEEgICAgIChiYXNlIDE2KQkJenRlIGNvcnBvcmF0aW9uCi0JCQkJMTIvRi4senRlIFImRCBidWlsZGluZyxrZWppbmFuIFJvYWQsCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUQwLTE3LTZBICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZCAgCi1EMDE3NkEgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkICAKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDAtMUMtQkIgICAoaGV4KQkJQmVpamluZyBDdGltZXMgRGlnaXRhbCBUZWNobm9sb2d5IENvLiwgTHRkLgotRDAxQ0JCICAgICAoYmFzZSAxNikJCUJlaWppbmcgQ3RpbWVzIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk3dGggRmxvb3IsIEppbnpob3UgQnVpbGRpbmcsIFN1emhvdSBTdHJlZXQsIE5vLjc5LCBIYWlkaWFuIERpc3RyaWN0LCAKLQkJCQlCZWlqaW5nICAxMDAwODkKLQkJCQlDSElOQQotCi1EMC0yNy04OCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uTHRkCi1EMDI3ODggICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLkx0ZAotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDAtMzctNjEgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLUQwMzc2MSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtNTctNEMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRDA1NzRDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtNTgtNzUgICAoaGV4KQkJQWN0aXZlIENvbnRyb2wgVGVjaG5vbG9neSBJbmMuCi1EMDU4NzUgICAgIChiYXNlIDE2KQkJQWN0aXZlIENvbnRyb2wgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTgwMCBBcHBsZWJ5IExpbmUKLQkJCQlVbml0IDQKLQkJCQlCdXJsaW5ndG9uIE9udGFyaW8gTDdMIDZBMQotCQkJCUNBTkFEQQotCi1EMC01Ri1DRSAgIChoZXgpCQlIaXRhY2hpIERhdGEgU3lzdGVtcwotRDA1RkNFICAgICAoYmFzZSAxNikJCUhpdGFjaGkgRGF0YSBTeXN0ZW1zCi0JCQkJNzUwIENlbnRyYWwgRXhwcmVzc3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EMC02Ni03QiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi1EMDY2N0IgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIExURAotCQkJCTQxNiwgTWFldGFuLTNkb25nLCBZZW9uZ3RvbmctZ3UKLQkJCQlTdXdvbi1zaSBHeWVvbmdnaS1kbyA0NDM3NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDAtNjctRTUgICAoaGV4KQkJRGVsbCBJbmMKLUQwNjdFNSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVM6UlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtNzUtQkUgICAoaGV4KQkJUmVubyBBJmFtcDtFCi1EMDc1QkUgICAgIChiYXNlIDE2KQkJUmVubyBBJmFtcDtFCi0JCQkJNDY1NSBBaXJjZW50ZXIgQ2lyY2xlCi0JCQkJUmVubyBOZXZhZGEgODk1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTdELUU1ICAgKGhleCkJCUZvcndhcmQgUGF5IFN5c3RlbXMsIEluYy4KLUQwN0RFNSAgICAgKGJhc2UgMTYpCQlGb3J3YXJkIFBheSBTeXN0ZW1zLCBJbmMuCi0JCQkJOTUzMSBXZXN0IDc4dGggU3QuLCAjMjQ1Ci0JCQkJRWRlbiBQcmFpcmllIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EMC04OS05OSAgIChoZXgpCQlBUENPTiwgSW5jLgotRDA4OTk5ICAgICAoYmFzZSAxNikJCUFQQ09OLCBJbmMuCi0JCQkJOTI1NSBTVyBQaW9uZWVyIENvdXJ0Ci0JCQkJV2lsc29udmlsbGUgT1IgOTcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTkzLUY4ICAgKGhleCkJCVN0b25lc3RyZWV0IE9uZSBMTEMKLUQwOTNGOCAgICAgKGJhc2UgMTYpCQlTdG9uZXN0cmVldCBPbmUgTExDCi0JCQkJOTk2MCBDb3Jwb3JhdGUgQ2FtcHVzIERyaXZlCi0JCQkJU3VpdGUgMzMwMAotCQkJCUxvdWlzdmlsbGUgS1kgNDAyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTlCLTA1ICAgKGhleCkJCUVtdHJvbml4Ci1EMDlCMDUgICAgIChiYXNlIDE2KQkJRW10cm9uaXgKLQkJCQk1IyBHYW9wZW5nIERhZGFvCi0JCQkJUm9vbSA0MDQjLCBCdWlsZGluZyBCCi0JCQkJQ2hlbmdkdSAgNjEwMDQxCi0JCQkJQ0hJTkEKLQotRDAtQTMtMTEgICAoaGV4KQkJTmV1YmVyZ2VyIEdlYu+/vXVkZWF1dG9tYXRpb24gR21iSAotRDBBMzExICAgICAoYmFzZSAxNikJCU5ldWJlcmdlciBHZWLvv711ZGVhdXRvbWF0aW9uIEdtYkgKLQkJCQlPYmVyZXIgS2Fpc2Vyd2VnIDYKLQkJCQlSb3RoZW5idXJnIG8uZC5ULiBCYXllcm4gOTE1NDEKLQkJCQlHRVJNQU5ZCi0KLUQwLUFGLUI2ICAgKGhleCkJCUxpbmt0b3AgVGVjaG5vbG9neSBDby4sIExURAotRDBBRkI2ICAgICAoYmFzZSAxNikJCUxpbmt0b3AgVGVjaG5vbG9neSBDby4sIExURAotCQkJCTJGIEd1YW5neWUgQnVsaWRpbmcsIFRvcmNoIEhpLVRlY2gsIAotCQkJCVhpYW1lbiBGdWppYW4gMzYxMDA2Ci0JCQkJQ0hJTkEKLQotRDAtQjMtM0YgICAoaGV4KQkJU0hFTlpIRU4gVElOTk8gTU9CSUxFIFRFQ0hOT0xPR1kgQ08uLExURC4KLUQwQjMzRiAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBUSU5OTyBNT0JJTEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCTQvRi4sSC0zIEJ1aWxkaW5nLE9DVCBFYXN0ZXJuIGxuZHVzdHJpYWwgUGFyay4gTk8uMSBYaWFuZ1NoYW4gRWFzdCBSb2FkLiwKLQkJCQlOYW4gU2hhbiBEaXN0cmljdCwKLQkJCQlHVUFOR0RPTkcgU0hFTlpIRU4gNTE4MDUzCi0JCQkJQ0hJTkEKLQotRDAtQjUtM0QgICAoaGV4KQkJU0VQUk8gUk9CT1RJUVVFCi1EMEI1M0QgICAgIChiYXNlIDE2KQkJU0VQUk8gUk9CT1RJUVVFCi0JCQkJWkkgQWN0aS1Fc3QgTGVzIEFqb25jcwotCQkJCUJQODQKLQkJCQlMQSBST0NIRSBTVVIgWU9OICBGODUwMDAKLQkJCQlGUkFOQ0UKLQotRDAtQkItODAgICAoaGV4KQkJU0hMIFRlbGVtZWRpY2luZSBJbnRlcm5hdGlvbmFsIEx0ZC4KLUQwQkI4MCAgICAgKGJhc2UgMTYpCQlTSEwgVGVsZW1lZGljaW5lIEludGVybmF0aW9uYWwgTHRkLgotCQkJCTkwIFlpZ2FsIEFsb24KLQkJCQlUZWwgQXZpdiAgNjc4OTEKLQkJCQlJU1JBRUwKLQotRDAtQzItODIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRDBDMjgyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLUQwLUZEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUQwRDBGRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLUQyLTg2ICAgKGhleCkJCUJlY2ttYW4gQ291bHRlciBCaW9tZWRpY2FsIEsuSy4KLUQwRDI4NiAgICAgKGJhc2UgMTYpCQlCZWNrbWFuIENvdWx0ZXIgQmlvbWVkaWNhbCBLLksuCi0JCQkJNDU0LTMyIEhpZ2FzaGlubywKLQkJCQlOYWdhaXp1bWktY2hvLCBTdW50by1ndW4sIFNoaXp1b2thLWtlbiA0MTEtMDk0MwotCQkJCUpBUEFOCi0KLUQwLUQzLUZDICAgKGhleCkJCU1pb3MsIEx0ZC4KLUQwRDNGQyAgICAgKGJhc2UgMTYpCQlNaW9zLCBMdGQuCi0JCQkJMTMwMSBCYW5rIG9mIEFtZXJpY2EgVG93ZXIKLQkJCQkxMiBIYXJjb3V0IFJvYWQKLQkJCQlDZW50cmFsICAuCi0JCQkJSE9ORyBLT05HCi0KLUQwLURGLTlBICAgKGhleCkJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi1EMERGOUEgICAgIChiYXNlIDE2KQkJTGl0ZW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk0Riw5MCxDaGllbiAxIFJvYWQsIENodW5nSG8uIAotCQkJCVRhaXBlaSAgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUQwLUUzLTQ3ICAgKGhleCkJCVlvZ2EKLUQwRTM0NyAgICAgKGJhc2UgMTYpCQlZb2dhCi0JCQkJVGFtbXNhYXJlIHRlZSA0NwotCQkJCVRhbGxpbm4gSGFyanVtYWEgMTEzMTYKLQkJCQlFU1RPTklBCi0KLUQwLUU0LTBCICAgKGhleCkJCVdlYXJhYmxlIEluYy4KLUQwRTQwQiAgICAgKGJhc2UgMTYpCQlXZWFyYWJsZSBJbmMuCi0JCQkJMzgyNSBDaGFybGVzIERyLgotCQkJCU5vcnRoYnJvb2sgSUwgNjAwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLUU1LTREICAgKGhleCkJCVBhY2UgcGxjCi1EMEU1NEQgICAgIChiYXNlIDE2KQkJUGFjZSBwbGMKLQkJCQlTYWx0cyBNaWxsCi0JCQkJVmljdG9yaWEgUm9hZAotCQkJCUJyYWRmb3JkIFdlc3QgWW9ya3NoaXJlIEJEMTggM0xGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotRDAtRUItOUUgICAoaGV4KQkJU2Vvd29vIEluYy4KLUQwRUI5RSAgICAgKGJhc2UgMTYpCQlTZW93b28gSW5jLgotCQkJCUppblN1bmcgQi9EIDEtMiBHdW5qYS1kb25nLCBHd2FuZ2ppbi1ndSwgCi0JCQkJU2VvdWwgIDE0My04MzcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDAtRjAtREIgICAoaGV4KQkJRXJpY3Nzb24KLUQwRjBEQiAgICAgKGJhc2UgMTYpCQlFcmljc3NvbgotCQkJCTEwMCBIZWFkcXVhcnRlcnMgRHIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtMDAtMEQgICAoaGV4KQkJUGhvZW5peCBCcm9hZGJhbmQgVGVjaG5vbG9naWVzLCBMTEMuCi1ENDAwMEQgICAgIChiYXNlIDE2KQkJUGhvZW5peCBCcm9hZGJhbmQgVGVjaG5vbG9naWVzLCBMTEMuCi0JCQkJNTg5IEJldGhsZWhlbSBQaWtlCi0JCQkJU3VpdGUgMTAwMAotCQkJCU1vbnRnb21lcnl2aWxsZSBQQSAxODkzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtMTEtRDYgICAoaGV4KQkJU2hvdFNwb3R0ZXIsIEluYy4KLUQ0MTFENiAgICAgKGJhc2UgMTYpCQlTaG90U3BvdHRlciwgSW5jLgotCQkJCTEwNjAgVGVycmEgQmVsbGEgQXZlLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LTEyLTk2ICAgKGhleCkJCUFub2JpdCBUZWNobm9sb2dpZXMgTHRkLgotRDQxMjk2ICAgICAoYmFzZSAxNikJCUFub2JpdCBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTggSGFzYWRuYW90IFN0LgotCQkJCVBPQiAxMjE0NwotCQkJCUhlcnplbGl5YSBQaXR1YWNoICAgNDY3MjgKLQkJCQlJU1JBRUwKLQotRDQtMUYtMEMgICAoaGV4KQkJVFZJIFZpc2lvbiBPeQotRDQxRjBDICAgICAoYmFzZSAxNikJCVRWSSBWaXNpb24gT3kKLQkJCQlBc2VudGFqYW5rYXR1IDMKLQkJCQlIZWxzaW5raSAgMDA4ODAKLQkJCQlGSU5MQU5ECi0KLUQ0LTI4LUIyICAgKGhleCkJCWlvQnJpZGdlLCBJbmMuCi1ENDI4QjIgICAgIChiYXNlIDE2KQkJaW9CcmlkZ2UsIEluYy4KLQkJCQkyMjUgQ2VkYXIgSGlsbCBTdHJlZXQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlNYXJsYm9yb3VnaCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtMkMtM0QgICAoaGV4KQkJU2t5IExpZ2h0IERpZ2l0YWwgTGltaXRlZAotRDQyQzNEICAgICAoYmFzZSAxNikJCVNreSBMaWdodCBEaWdpdGFsIExpbWl0ZWQKLQkJCQlSbS4gMTAwOSBLd29uZyBTYW5nIEhvbmcgQ2VudHJlLCAxNTEtMTUzIEhvaSBCdW4gUm9hZCwgS3d1biBUb25nLCBLb3dsb29uLCAKLQkJCQlIb25nIEtvbmcgIDk5OTA3NwotCQkJCUNISU5BCi0KLUQ0LTNBLUU5ICAgKGhleCkJCURPTkdHVUFOIGlwdCBJTkRVU1RSSUFMIENPLiwgTFRECi1ENDNBRTkgICAgIChiYXNlIDE2KQkJRE9OR0dVQU4gaXB0IElORFVTVFJJQUwgQ08uLCBMVEQKLQkJCQlOby42Ni0xLklzdCBOZXcgQXJlYSwgTmFuc2hlIERpc3QuLCBDaGlnYW5nLEh1bWVuLAotCQkJCURvbmdndWFuIEd1YW5nZG9uZyA1MjM5MAotCQkJCUNISU5BCi0KLUQ0LTNELTY3ICAgKGhleCkJCUNhcm1hIEluZHVzdHJpZXMgSW5jLgotRDQzRDY3ICAgICAoYmFzZSAxNikJCUNhcm1hIEluZHVzdHJpZXMgSW5jLgotCQkJCTEzMiBXYWxzaCBSb2FkCi0JCQkJTGluZHNheSBPbnRhcmlvIEs5ViA0UjMKLQkJCQlDQU5BREEKLQotRDQtNEMtMjQgICAoaGV4KQkJVnVwcGFsYW1yaXRoYSBNYWduZXRpYyBDb21wb25lbnRzIExURAotRDQ0QzI0ICAgICAoYmFzZSAxNikJCVZ1cHBhbGFtcml0aGEgTWFnbmV0aWMgQ29tcG9uZW50cyBMVEQKLQkJCQkzcmQgRmxvb3IsIDMwNyAsTXkgSG9tZSBBc2hva2EgQ2hhbWJlcnMsUy5QIFJvYWQsIAotCQkJCVNlY3VuZGVyYWJhZCBBbmRocmFQcmFkZXNoIDUwMDAwMwotCQkJCUlORElBCi0KLUQ0LTRDLUE3ICAgKGhleCkJCUluZm9ybXRla2huaWthICYgQ29tbXVuaWNhdGlvbiwgTExDCi1ENDRDQTcgICAgIChiYXNlIDE2KQkJSW5mb3JtdGVraG5pa2EgJiBDb21tdW5pY2F0aW9uLCBMTEMKLQkJCQkxLCBidWlsZC4gMi8xLCBWZXJobmF5YQotCQkJCUtyYXNub3NlbHNrYXlhIFN0LgotCQkJCU1vc2NvdyAgMTA3MTQwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLUQ0LTRGLTgwICAgKGhleCkJCUtlbXBlciBEaWdpdGFsIEdtYkgKLUQ0NEY4MCAgICAgKGJhc2UgMTYpCQlLZW1wZXIgRGlnaXRhbCBHbWJICi0JCQkJS29lbmlnc3dhbGwgMTYtMTgKLQkJCQlSZWNrbGluZ2hhdXNlbiBOb3J0aC1SaGluZS1XZXN0cGhhbGlhIDQ1NjU3Ci0JCQkJR0VSTUFOWQotCi1ENC01Mi01MSAgIChoZXgpCQlJQlQgSW5nZW5pZXVyYnVyZWF1IEJyb2VubmltYW5uIFRodW4KLUQ0NTI1MSAgICAgKGJhc2UgMTYpCQlJQlQgSW5nZW5pZXVyYnVyZWF1IEJyb2VubmltYW5uIFRodW4KLQkJCQlLYXNlcm5lbnN0cmFzc2UgNQotCQkJCVRodW4gQmVybiAzNjAwCi0JCQkJU1dJVFpFUkxBTkQKLQotRDQtNTItOTcgICAoaGV4KQkJblNUUkVBTVMgVGVjaG5vbG9naWVzLCBJbmMuCi1ENDUyOTcgICAgIChiYXNlIDE2KQkJblNUUkVBTVMgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTBGLTIsIE5vLiAzMDIsIFJ1aWd1YW5nIFJkLiwgTmVpaHUgRGlzdHJpY3QsCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDQtNUQtNDIgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUQ0NUQ0MiAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1ICA5MDIzMAotCQkJCUZJTkxBTkQKLQotRDQtNjYtQTggICAoaGV4KQkJUmllZG8gTmV0d29ya3MgR21iSAotRDQ2NkE4ICAgICAoYmFzZSAxNikJCVJpZWRvIE5ldHdvcmtzIEdtYkgKLQkJCQlXYXJwZWxzdHJhc3NlIDEwCi0JCQkJRHVlZGluZ2VuIEZSIDMxODYKLQkJCQlTV0lUWkVSTEFORAotCi1ENC02Qy1CRiAgIChoZXgpCQlHb29kcmljaCBJU1IKLUQ0NkNCRiAgICAgKGJhc2UgMTYpCQlHb29kcmljaCBJU1IKLQkJCQk2NjAwIEd1bHRvbiBDcnQKLQkJCQlBbGJ1cXVlcnF1ZSBOTSA4NzEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtNkMtREEgICAoaGV4KQkJQ1NNIEdtYkgKLUQ0NkNEQSAgICAgKGJhc2UgMTYpCQlDU00gR21iSAotCQkJCVJhaWZmZWlzZW5zdHIuIDM0Ci0JCQkJRmlsZGVyc3RhZHQgQmFkZW4tV++/vXJ0dGVtYmVyZyA3MDc5NAotCQkJCUdFUk1BTlkKLQotRDQtNkYtNDIgICAoaGV4KQkJV0FYRVNTIFVTQSBJbmMKLUQ0NkY0MiAgICAgKGJhc2UgMTYpCQlXQVhFU1MgVVNBIEluYwotCQkJCTE0MDEgRG92ZSBTdHJlZXQKLQkJCQlTdWl0ZSAyMjAKLQkJCQlOZXdwb3J0IEJlYWNoIENBIDkyNjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC03OS1DMyAgIChoZXgpCQlDYW1lcm9uZXQgR21iSCAmYW1wOyBDby4gS0cKLUQ0NzlDMyAgICAgKGJhc2UgMTYpCQlDYW1lcm9uZXQgR21iSCAmYW1wOyBDby4gS0cKLQkJCQlFbGJlcmZlbGRlciBTdHJhc3NlIDk2Ci0JCQkJUmVtc2NoZWlkIE5SVyA0Mjg1MwotCQkJCUdFUk1BTlkKLQotRDQtN0ItNzUgICAoaGV4KQkJSEFSVElORyBFbGVjdHJvbmljcyBHbWJIICYgQ28uIEtHCi1ENDdCNzUgICAgIChiYXNlIDE2KQkJSEFSVElORyBFbGVjdHJvbmljcyBHbWJIICYgQ28uIEtHCi0JCQkJTWFyaWVud2VyZGVyc3RyLiAzCi0JCQkJRXNwZWxrYW1wIE5vcnRoIFJoaW5lIFdlc3RwaGFsaWEgMzIzMzkKLQkJCQlHRVJNQU5ZCi0KLUQ0LTgyLTNFICAgKGhleCkJCUFyZ29zeSBUZWNobm9sb2dpZXMsIEx0ZC4KLUQ0ODIzRSAgICAgKGJhc2UgMTYpCQlBcmdvc3kgVGVjaG5vbG9naWVzLCBMdGQuCi0JCQkJNzMtMjIxIEhheXN0YWNrIFJvYWQKLQkJCQlQYWxtIERlc2VydCBDQSA5MjI2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtODUtNjQgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1ENDg1NjQgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC04OC05MCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLUQ0ODg5MCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDQtOEYtQUEgICAoaGV4KQkJU29nZWNhbSBJbmR1c3RyaWFsLCBTLkEuCi1ENDhGQUEgICAgIChiYXNlIDE2KQkJU29nZWNhbSBJbmR1c3RyaWFsLCBTLkEuCi0JCQkJUm9zYWxpbmQgRnJhbmtsaW4sIDIyLTI0Ci0JCQkJUFRBIENhbXBhbmlsbGFzCi0JCQkJTWFsYWdhICAyOTU5MAotCQkJCVNQQUlOCi0KLUQ0LTkxLUFGICAgKGhleCkJCUVsZWN0cm9hY3VzdGljYSBHZW5lcmFsIEliZXJpY2EsIFMuQS4KLUQ0OTFBRiAgICAgKGJhc2UgMTYpCQlFbGVjdHJvYWN1c3RpY2EgR2VuZXJhbCBJYmVyaWNhLCBTLkEuCi0JCQkJQXZkYSBBbG1vemFyYSwgNzkKLQkJCQlaYXJhZ296YSAgNTAwMDMKLQkJCQlTUEFJTgotCi1ENC05NC01QSAgIChoZXgpCQlDT1NNTyBDTy4sIExURAotRDQ5NDVBICAgICAoYmFzZSAxNikJCUNPU01PIENPLiwgTFRECi0JCQkJMS0xMiwgSGlnYXNoaS1Hb3RhbmRhIDItY2hvbWUKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMjIKLQkJCQlKQVBBTgotCi1ENC05Ni1ERiAgIChoZXgpCQlTVU5HSklOIEMmVCBDTy4sTFRECi1ENDk2REYgICAgIChiYXNlIDE2KQkJU1VOR0pJTiBDJlQgQ08uLExURAotCQkJCURhZXlhCi0JCQkJMzYyLTUKLQkJCQlTaGV1bmcgR3llb25nZ2kgNDI5LTgwOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1ENC05QS0yMCAgIChoZXgpCQlBcHBsZSwgSW5jCi1ENDlBMjAgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtOUMtMjggICAoaGV4KQkJSmF5QmlyZCBHZWFyIExMQwotRDQ5QzI4ICAgICAoYmFzZSAxNikJCUpheUJpcmQgR2VhciBMTEMKLQkJCQkyODI1IEVhc3QgQ290dG9ud29vZCBQYXJrd2F5ICM1MDAKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtOUMtOEUgICAoaGV4KQkJVW5pdmVyc2l0eSBvZiBGVUtVSQotRDQ5QzhFICAgICAoYmFzZSAxNikJCVVuaXZlcnNpdHkgb2YgRlVLVUkKLQkJCQkzLTktMSBCdW5reW8KLQkJCQlGdWt1aSBDaXR5ICA5MTAtODUwNwotCQkJCUpBUEFOCi0KLUQ0LTlFLTZEICAgKGhleCkJCVd1aGFuIFpob25neXVhbiBIdWFkaWFuIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLiwKLUQ0OUU2RCAgICAgKGJhc2UgMTYpCQlXdWhhbiBaaG9uZ3l1YW4gSHVhZGlhbiBTY2llbmNlICYgVGVjaG5vbG9neSBDby4sCi0JCQkJTk8uNiwgNiBSb2FkLCBTY2kuICYgVGVjaC4gcmVnaW9uIG9mIEhVU1QsIEVhc3QgTGFrZSBEZXZlbG9wbWVudCBab25lLAotCQkJCVd1aGFuICBIdWJlaSA0MzAyMjMKLQkJCQlDSElOQQotCi1ENC1BNC0yNSAgIChoZXgpCQlTTUFYIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1ENEE0MjUgICAgIChiYXNlIDE2KQkJU01BWCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTJGLiwgTm8uIDMsIFd1cXVhbiAzcmQsIFd1Z3UgRGlzdC4KLQkJCQlOZXcgVGFpcGVpIENpdHkgIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDQtQTktMjggICAoaGV4KQkJR3JlZW5XYXZlIFJlYWxpdHkgSW5jCi1ENEE5MjggICAgIChiYXNlIDE2KQkJR3JlZW5XYXZlIFJlYWxpdHkgSW5jCi0JCQkJMzkgUGFya2VyCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LUFBLUZGICAgKGhleCkJCU1JQ1JPIFdPUkxEIAotRDRBQUZGICAgICAoYmFzZSAxNikJCU1JQ1JPIFdPUkxEIAotCQkJCTE5MzcwIFZBTiBORVNTIEFWRSAKLQkJCQlUT1JSQU5DRSAgQ0EgOTA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LUMxLUZDICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1ENEMxRkMgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSAgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLUQ0LUM3LTY2ICAgKGhleCkJCUFjZW50aWMgR21iSAotRDRDNzY2ICAgICAoYmFzZSAxNikJCUFjZW50aWMgR21iSAotCQkJCVZlbmxvZXIgU3RyYXNzZSAxNTEtMTUzCi0JCQkJQ29sb2duZSAgNTA2NzIKLQkJCQlHRVJNQU5ZCi0KLUQ0LUNCLUFGICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1ENENCQUYgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLUQ0LUQxLTg0ICAgKGhleCkJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi1ENEQxODQgICAgIChiYXNlIDE2KQkJQURCIEJyb2FkYmFuZCBJdGFsaWEKLQkJCQl2aWEgU2FyY2EgMzM2Ci0JCQkJTWlsYW5vICAyMDEyNgotCQkJCUlUQUxZCi0KLUQ0LUQ4LTk4ICAgKGhleCkJCUtvcmVhIENOTyBUZWNoIENvLiwgTHRkCi1ENEQ4OTggICAgIChiYXNlIDE2KQkJS29yZWEgQ05PIFRlY2ggQ28uLCBMdGQKLQkJCQkjMjQwLTEsVWlnb2stUmkKLQkJCQlZZW9uZ3N1bi1NeWVvbgotCQkJCU11bmd5ZW9uZy1TaSBHeWVvbmdzYW5nYnVrLWRvIDc0NS04NTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDQtRTMtMkMgICAoaGV4KQkJUy4gU2llZGxlICYgU29obmUKLUQ0RTMyQyAgICAgKGJhc2UgMTYpCQlTLiBTaWVkbGUgJiBTb2huZQotCQkJCUJyZWdzdHJhc3NlIDEKLQkJCQlGdXJ0d2FuZ2VuICBELTc4MTIwCi0JCQkJR0VSTUFOWQotCi1ENC1FOC1CMiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi1ENEU4QjIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1ENC1GMC0yNyAgIChoZXgpCQlOYXZldGFzIEVuZXJneSBNYW5hZ2VtZW50Ci1ENEYwMjcgICAgIChiYXNlIDE2KQkJTmF2ZXRhcyBFbmVyZ3kgTWFuYWdlbWVudAotCQkJCTE3QSBEZWJlbiBNaWxsIEJ1c2luZXNzIENlbnRyZQotCQkJCU9sZCBNYWx0aW5ncyBBcHByb2FjaAotCQkJCVdvb2RicmlkZ2UgU3VmZm9sayBJUDEyIDFCTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUQ0LUYwLUI0ICAgKGhleCkJCU5hcGNvIFNlY3VyaXR5IFRlY2hub2xvZ2llcwotRDRGMEI0ICAgICAoYmFzZSAxNikJCU5hcGNvIFNlY3VyaXR5IFRlY2hub2xvZ2llcwotCQkJCTMzMyBCYXl2aWV3IEF2ZQotCQkJCUFtaXR5dmlsbGUgTlkgMTE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LUYxLTQzICAgKGhleCkJCUlQUk9BRC4sSW5jCi1ENEYxNDMgICAgIChiYXNlIDE2KQkJSVBST0FELixJbmMKLQkJCQkjNTA1IEJ5dWtzYW4gZGlnaXRhbCB2YWxsZXkgNywgMTcwLTEzLAotCQkJCUd1cm8tMy1Eb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi04NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDgtMUItRkUgICAoaGV4KQkJVFdJTkxJTlggQ09SUE9SQVRJT04KLUQ4MUJGRSAgICAgKGJhc2UgMTYpCQlUV0lOTElOWCBDT1JQT1JBVElPTgotCQkJCUVTUEFDRSBERVNDQVJURVMgQkFUIEIKLQkJCQk0MjUgUlVFIFJFTkUgREVTQ0FSVEVTCi0JCQkJQUlYIEVOIFBST1ZFTkNFIFBST1ZFTkNFIDEzODU3Ci0JCQkJRlJBTkNFCi0KLUQ4LTFDLTE0ICAgKGhleCkJCUNvbXBhY3RhIEludGVybmF0aW9uYWwsIEx0ZC4KLUQ4MUMxNCAgICAgKGJhc2UgMTYpCQlDb21wYWN0YSBJbnRlcm5hdGlvbmFsLCBMdGQuCi0JCQkJMzEzNDIgVmlhIExhcyBQYWxtYXMKLQkJCQlTYW4gSnVhbiBDYXBpc3RyYW5vIENBIDkyNjc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC0yOC1DOSAgIChoZXgpCQlHZW5lcmFsIEVsZWN0cmljIENvbnN1bWVyIGFuZCBJbmR1c3RyaWFsCi1EODI4QzkgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBFbGVjdHJpYyBDb25zdW1lciBhbmQgSW5kdXN0cmlhbAotCQkJCUFQMzUtMTQwNQotCQkJCUFwcGxpYW5jZSBQYXJrCi0JCQkJTG91aXN2aWxsZSBLWSA0MDIyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtMjktODYgICAoaGV4KQkJQmVzdCBXaXNoIFRlY2hub2xvZ3kgTFRECi1EODI5ODYgICAgIChiYXNlIDE2KQkJQmVzdCBXaXNoIFRlY2hub2xvZ3kgTFRECi0JCQkJN0UsSGFpIFlpIEJ1c2luZXNzIEJ1aWxkaW5nLE5vLjMxMCxUaWFuc2hhbiBSRC4sCi0JCQkJU2hhbmdoYWkgIDIwMDMzNgotCQkJCUNISU5BCi0KLUQ4LTJBLTdFICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1EODJBN0UgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLUQ4LTMwLTYyICAgKGhleCkJCUFwcGxlLCBJbmMKLUQ4MzA2MiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC00Mi1BQyAgIChoZXgpCQlGcmVlQ29tbSBEYXRhIENvbW11bmljYXRpb24gQ28uLEx0ZC4KLUQ4NDJBQyAgICAgKGJhc2UgMTYpCQlGcmVlQ29tbSBEYXRhIENvbW11bmljYXRpb24gQ28uLEx0ZC4KLQkJCQlCdWlsZGluZyA5MCwgTm8uIDQ4NTUsIEd1YW5nZnVsaW4gUm9hZCwgU29uZ2ppYW5nIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMTYxNgotCQkJCUNISU5BCi0KLUQ4LTQ2LTA2ICAgKGhleCkJCVNpbGljb24gVmFsbGV5IEdsb2JhbCBNYXJrZXRpbmcKLUQ4NDYwNiAgICAgKGJhc2UgMTYpCQlTaWxpY29uIFZhbGxleSBHbG9iYWwgTWFya2V0aW5nCi0JCQkJODMwIFN0ZXdhcnQgRHIuICMyMDEKLQkJCQlTdW5ueXZhbGUgQ2EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ4LTRCLTJBICAgKGhleCkJCUNvZ25pdGFzIFRlY2hub2xvZ2llcywgSW5jLgotRDg0QjJBICAgICAoYmFzZSAxNikJCUNvZ25pdGFzIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTY0MDYgTGF1cmVsIEJ1c2ggTG4uCi0JCQkJU3VnYXIgTGFuZCBUZXhhcyA3NzQ3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtNTQtM0EgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLUQ4NTQzQSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtNUQtNEMgICAoaGV4KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLUQ4NUQ0QyAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCUJ1aWxkaW5nIDcsIFNlY29uZCBQYXJ0LCBIb25naHVhbGluZyBJbmR1c3RyaWFsIFpvbmUKLQkJCQlYaWxpIHRvd24sIE5hbnNoYW4sIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi1EOC01RC04NCAgIChoZXgpCQlDQXggc29mdCBHbWJICi1EODVEODQgICAgIChiYXNlIDE2KQkJQ0F4IHNvZnQgR21iSAotCQkJCU5vZXR0aW5nZXIgU3RyYXNzZSAzCi0JCQkJS2FybHNiYWQgQlcgNzYzMDcKLQkJCQlHRVJNQU5ZCi0KLUQ4LTZCLUY3ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotRDg2QkY3ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLUQ4LTcxLTU3ICAgKGhleCkJCUxlbm92byBNb2JpbGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLUQ4NzE1NyAgICAgKGJhc2UgMTYpCQlMZW5vdm8gTW9iaWxlIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBMdGQuCi0JCQkJTm8uOTk5LFFpc2hhbiBOb3J0aCAybmQgUm9hZCxJbmZvcm1hdGlvbiZPcHRvZWxlY3Ryb25pY3MgUGFyayxUb3JjaCBIaS10ZWNoIEluZHVzdHJ5IERldmVsb3BtZW50IFpvbmUsCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi1EOC03NS0zMyAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRDg3NTMzICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi1EOC03Ni0wQSAgIChoZXgpCQlFc2NvcnQsIEluYy4KLUQ4NzYwQSAgICAgKGJhc2UgMTYpCQlFc2NvcnQsIEluYy4KLQkJCQk1NDQwIFdlc3QgQ2hlc3RlciBSZC4KLQkJCQlXZXN0IENoZXN0ZXIgT2hpbyA0NTA2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtNzktODggICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLUQ4Nzk4OCAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCU5PLjE2OCBGT1hDT05OIFJPQUQKLQkJCQlIVUFJQU4gRUNPTk9NSUMgREVWRUxPUE1FTlQgWk9ORQotCQkJCUhVQUlBTiBKSUFOR1NVIDIyMzAwNQotCQkJCUNISU5BCi0KLUQ4LTk1LTJGICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1EODk1MkYgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlNUyA4NzIzCi0JCQkJRGFsbGFzIFRleGFzIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC05Ny0zQiAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgRW1iZWRkZWQgUG93ZXIKLUQ4OTczQiAgICAgKGJhc2UgMTYpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgRW1iZWRkZWQgUG93ZXIKLQkJCQkxNi9GIEx1IFBsYXphIEJ1aWxkaW5nCi0JCQkJMiBXaW5nIFlpcCBTdHJlZXQKLQkJCQlLd3VuIFRvbmcgS293bG9vbiAwMDAwMAotCQkJCUhPTkcgS09ORwotCi1EOC05RC1COSAgIChoZXgpCQllTWVnYXRlY2ggSW50ZXJuYXRpb25hbCBDb3JwLgotRDg5REI5ICAgICAoYmFzZSAxNikJCWVNZWdhdGVjaCBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJUm9vbSA0MDMsIE5vLjI0IFd1Y3l1YW4gMm5kIFJkLiwKLQkJCQlTaW5qaHVhbmcgQ2l0eSwgVGFpcGVpIENvdW50eSwgIDIzOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDgtOUUtM0YgICAoaGV4KQkJQXBwbGUsIEluYy4KLUQ4OUUzRiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQTItNUUgICAoaGV4KQkJQXBwbGUKLUQ4QTI1RSAgICAgKGJhc2UgMTYpCQlBcHBsZQotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDYWxpZm9ybmlhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC1BRS05MCAgIChoZXgpCQlJdGliaWEgVGVjaG5vbG9naWVzCi1EOEFFOTAgICAgIChiYXNlIDE2KQkJSXRpYmlhIFRlY2hub2xvZ2llcwotCQkJCTUgQ2xhdXNlbiBDdAotCQkJCVdlc3QgV2luZHNvciBOSiAwODU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQjEtMkEgICAoaGV4KQkJUGFuYXNvbmljIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLUQ4QjEyQSAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgTW9iaWxlIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTYwMCBTYWVkby1jaG8gVHN1enVraS1rdQotCQkJCVlva29oYW1hIENpdHkgS2FuYWdhd2EgMjI0LTg1MzkKLQkJCQlKQVBBTgotCi1EOC1CMy03NyAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLUQ4QjM3NyAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4gMjMsIFhpbmdodWEgUmQuLCAKLQkJCQlUYW95dWFuIENpdHkgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDgtQjYtQzEgICAoaGV4KQkJTmV0d29ya0FjY291bnRhbnQsIEluYy4KLUQ4QjZDMSAgICAgKGJhc2UgMTYpCQlOZXR3b3JrQWNjb3VudGFudCwgSW5jLgotCQkJCTEyMTAxIFR1a3dpbGEgSW50ZXJuYXRpb25hbCBCbHZkLgotCQkJCVNlYXR0bGUgV2FzaGluZ3RvbiA5ODE2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQzAtNjggICAoaGV4KQkJTmV0Z2VuZXRlY2guY28uLGx0ZC4KLUQ4QzA2OCAgICAgKGJhc2UgMTYpCQlOZXRnZW5ldGVjaC5jby4sbHRkLgotCQkJCTcwNCwgSGFubGltIFZlbnR1cmUgVG93bi4sICM2ODktNiwgCi0JCQkJR2V1bWplb25nLSBkb25nLAotCQkJCUd1bnBvLXNpICA0MzUtODYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUQ4LUMzLUZCICAgKGhleCkJCURFVFJBQ09NCi1EOEMzRkIgICAgIChiYXNlIDE2KQkJREVUUkFDT00KLQkJCQk0MSBBVkVOVUUgREUgTCdFVVJPUEUKLQkJCQlaT05FIEVVUk9DRU5UUkUgT1VFU1QgCi0JCQkJQ0FTVEVMTkFVIEQnRVNUUkVURUZPTkRTICAzMTYyMAotCQkJCUZSQU5DRQotCi1EOC1DNy1DOCAgIChoZXgpCQlBcnViYSBOZXR3b3JrcwotRDhDN0M4ICAgICAoYmFzZSAxNikJCUFydWJhIE5ldHdvcmtzCi0JCQkJMTM0NCBDcm9zc21hbiBBdmUuCi0JCQkJU3Vubnl2YWxlICBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQzktOUQgICAoaGV4KQkJRUEgRElTUExBWSBMSU1JVEVECi1EOEM5OUQgICAgIChiYXNlIDE2KQkJRUEgRElTUExBWSBMSU1JVEVECi0JCQkJMjIvRiBERUxUQSBIT1VTRSAzIE9OIFlJVSBTVAotCQkJCVNIQVRJTiBOVCAgCi0JCQkJSE9ORyBLT05HCi0KLUQ4LUQzLTg1ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotRDhEMzg1ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC1ENi03RSAgIChoZXgpCQlHU0sgQ05DIEVRVUlQTUVOVCBDTy4sTFRECi1EOEQ2N0UgICAgIChiYXNlIDE2KQkJR1NLIENOQyBFUVVJUE1FTlQgQ08uLExURAotCQkJCU5PLjcsMXN0IFN0cmVldCxMdW9jaG9uZyBOb3J0aCBSb2FkLEx1b2Nob25nd2VpCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyAgNTEwMTY1Ci0JCQkJQ0hJTkEKLQotRDgtREYtMEQgICAoaGV4KQkJYmVyb05ldCBHbWJICi1EOERGMEQgICAgIChiYXNlIDE2KQkJYmVyb05ldCBHbWJICi0JCQkJRnJpZWRyaWNoc3RyLiAyMzEKLQkJCQlCZXJsaW4gIDEwOTY5Ci0JCQkJR0VSTUFOWQotCi1EOC1FMy1BRSAgIChoZXgpCQlDSVJURUMgTUVESUNBTCBTWVNURU1TCi1EOEUzQUUgICAgIChiYXNlIDE2KQkJQ0lSVEVDIE1FRElDQUwgU1lTVEVNUwotCQkJCTEwMUIgQ29vcGVyIENvdXJ0Ci0JCQkJTG9zIEdhdG9zIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC1FNy0yQiAgIChoZXgpCQlPblBBVEggVGVjaG5vbG9naWVzCi1EOEU3MkIgICAgIChiYXNlIDE2KQkJT25QQVRIIFRlY2hub2xvZ2llcwotCQkJCTIwMDAgTGluY29sbiBEcml2ZSBFYXN0Ci0JCQkJTWFybHRvbiBOZXcgSmVyc2V5IDA4MDUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC1GRS04RiAgIChoZXgpCQlJREZvbmUgQ28uLCBMdGQuCi1EOEZFOEYgICAgIChiYXNlIDE2KQkJSURGb25lIENvLiwgTHRkLgotCQkJCTdGIEFjZSB0ZWNobm8gdG93ZXIgNXRoIEIvRCwgMTk3LTIyCi0JCQkJR3Vyby1kb25nLCBHdXJvLWd1IFNlb3VsIDE1Mi03NjYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotREMtMDItNjUgICAoaGV4KQkJTWVkaXRlY2ggS2Z0Ci1EQzAyNjUgICAgIChiYXNlIDE2KQkJTWVkaXRlY2ggS2Z0Ci0JCQkJ3Gxs9Wkg+nQgMjAwLgotCQkJCUJ1ZGFwZXN0ICAxMTkxCi0JCQkJSFVOR0FSWQotCi1EQy0wNS1FRCAgIChoZXgpCQlOYWJ0ZXNjbyAgQ29ycG9yYXRpb24KLURDMDVFRCAgICAgKGJhc2UgMTYpCQlOYWJ0ZXNjbyAgQ29ycG9yYXRpb24KLQkJCQk5LTE4LCBLYWlnYW4gMS1jaG9tZQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDUtMDAyMgotCQkJCUpBUEFOCi0KLURDLTA3LUMxICAgKGhleCkJCUhhbmdaaG91IFFpWWFuZyBUZWNobm9sb2d5IENvLixMdGQuCi1EQzA3QzEgICAgIChiYXNlIDE2KQkJSGFuZ1pob3UgUWlZYW5nIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlGbG9vciA1LCBCdWlsZGluZyAyLCBSb2FkIFhpWXVhbllpLCBXZXN0TGFrZSBUZWNobm9sb2d5IFBhcmssCi0JCQkJU2FuRHVuLCBYaUh1IERpc3RyaWJ1dGUKLQkJCQlIYW5nWmhvdSBaaGVKaWFuZyAzMTAwMjgKLQkJCQlDSElOQQotCi1EQy0xNi1BMiAgIChoZXgpCQlNZWR0cm9uaWMgRGlhYmV0ZXMKLURDMTZBMiAgICAgKGJhc2UgMTYpCQlNZWR0cm9uaWMgRGlhYmV0ZXMKLQkJCQkxODAwMCBEZXZvbnNoaXJlIFN0Ci0JCQkJTm9ydGhyaWRnZSBDQSA5MTMyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotREMtMUQtOUYgICAoaGV4KQkJVSAmIEIgdGVjaAotREMxRDlGICAgICAoYmFzZSAxNikJCVUgJiBCIHRlY2gKLQkJCQkyRiwgRGFleW91bmcgYnVsaWRpbmcsIDE0MjMtNiwgS3dhbnlhbmctMURvbmcsCi0JCQkJRG9uZ0FuLUd1LAotCQkJCUFueWFuZy1TaSBHeWVvbmdnaS1EbyA0MzEtMDYxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLURDLTIwLTA4ICAgKGhleCkJCUFTRCBFbGVjdHJvbmljcyBMdGQgCi1EQzIwMDggICAgIChiYXNlIDE2KQkJQVNEIEVsZWN0cm9uaWNzIEx0ZCAKLQkJCQlERURFIElORFVTVFJJQUwgUEFSSyxKSUFOJ0FOIFJPQUQsSElHSC1URUNICi0JCQkJSU5EVVNUUklBTCBQQVJLLEZVWU9ORyBUT1dOLEJBTydBTiBESVNUUklDVCwKLQkJCQlTaGVuemhlbiAgR3VhbmcgRG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi1EQy0yQi02MSAgIChoZXgpCQlBcHBsZQotREMyQjYxICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EQy0yQi02NiAgIChoZXgpCQlJbmZvYmxvY2sKLURDMkI2NiAgICAgKGJhc2UgMTYpCQlJbmZvYmxvY2sKLQkJCQlIZWdlbCAyMjkgLSAxMAotCQkJCUNoYXB1bHRlcGVjIE1vcmFsZXMKLQkJCQlNZXhpY28gQ2l0eSBEaXN0cml0byBGZWRlcmFsIDExNTcwCi0JCQkJTUVYSUNPCi0KLURDLTJDLTI2ICAgKGhleCkJCUl0b24gVGVjaG5vbG9neSBMaW1pdGVkCi1EQzJDMjYgICAgIChiYXNlIDE2KQkJSXRvbiBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlSb29tIDEwRSwgSmluZ0ZlbmcgQnVpbGRpbmcsIAotCQkJCUJpbmhlIFJvYWQsIEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwMzQKLQkJCQlDSElOQQotCi1EQy0zMy01MCAgIChoZXgpCQlUZWNoU0FUIEdtYkgKLURDMzM1MCAgICAgKGJhc2UgMTYpCQlUZWNoU0FUIEdtYkgKLQkJCQlHcnViZXIgU3RyLiA0NmMKLQkJCQlQb2luZyBCWSA4NTU4NgotCQkJCUdFUk1BTlkKLQotREMtM0MtODQgICAoaGV4KQkJVGljb20gR2VvbWF0aWNzLCBJbmMuCi1EQzNDODQgICAgIChiYXNlIDE2KQkJVGljb20gR2VvbWF0aWNzLCBJbmMuCi0JCQkJOTEzMCBKb2xseXZpbGxlIFJkLiBTdGUuIDMwMAotCQkJCUF1c3RpbiBUZXhhcyA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotREMtNDktQzkgICAoaGV4KQkJQ0FTQ08gU0lHTkFMIExURAotREM0OUM5ICAgICAoYmFzZSAxNikJCUNBU0NPIFNJR05BTCBMVEQKLQkJCQlOby40ODkgWGl6YW5nIEJlaSBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDA3MQotCQkJCUNISU5BCi0KLURDLTRFLURFICAgKGhleCkJCVNISU5ZRUkgVEVDSE5PTE9HWSBDTy4sIExURC4KLURDNEVERSAgICAgKGJhc2UgMTYpCQlTSElOWUVJIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJNi01LTIsIE1JTkFUT0pJTUEtTUlOQU1JTUFDSEksIENIVU8tS1UKLQkJCQlLT0JFIEhZT0dPIDY1MC0wMDQ3Ci0JCQkJSkFQQU4KLQotREMtN0ItOTQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotREM3Qjk0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotREMtOUItMUUgICAoaGV4KQkJSW50ZXJjb20sIEluYy4KLURDOUIxRSAgICAgKGJhc2UgMTYpCQlJbnRlcmNvbSwgSW5jLgotCQkJCVNvcmltYWNoaSBCbGRnLiwgMy01LCBUYWl0byAxLWNob21lLCAKLQkJCQlUYWl0by1rdSBUb2t5byAxMTAtODY1NAotCQkJCUpBUEFOCi0KLURDLTlDLTUyICAgKGhleCkJCVNhcHBoaXJlIFRlY2hub2xvZ3kgTGltaXRlZC4KLURDOUM1MiAgICAgKGJhc2UgMTYpCQlTYXBwaGlyZSBUZWNobm9sb2d5IExpbWl0ZWQuCi0JCQkJVW5pdCAxOTA5LTE5MTksIDE5L0YuLCBUb3dlciAyLCBHcmFuZCBDZW50cmFsIFBsYXphLAotCQkJCTEzOCBTaGF0aW4gUnVyYWwgQ29tbWl0dGVlIFJvYWQsIFNoYXRpbiwgTi5ULiwKLQkJCQlIT05HIEtPTkcKLQotREMtQTYtQkQgICAoaGV4KQkJQmVpamluZyBMYW5ibyBUZWNobm9sb2d5IENvLiwgTHRkLgotRENBNkJEICAgICAoYmFzZSAxNikJCUJlaWppbmcgTGFuYm8gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tLjMwMS5CaWRnLjROTy44IFNoYW5nZGkgV2VzdCBSb2FkLCBIYWlkaWFuICBEaXN0cmljdCwKLQkJCQlCZWlqaW5nIENpdHkgIDEwMDA4NQotCQkJCUNISU5BCi0KLURDLUE3LUQ5ICAgKGhleCkJCUNvbXByZXNzb3IgQ29udHJvbHMgQ29ycAotRENBN0Q5ICAgICAoYmFzZSAxNikJCUNvbXByZXNzb3IgQ29udHJvbHMgQ29ycAotCQkJCTQ3MjUgMTIxc3QgU3RyZWV0Ci0JCQkJRGVzIE1vaW5lcyBJb3dhIDUwMzIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EQy1BOS03MSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLURDQTk3MSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLURDLUNCLUE4ICAgKGhleCkJCUV4cGxvcmEgVGVjaG5vbG9naWVzIEluYwotRENDQkE4ICAgICAoYmFzZSAxNikJCUV4cGxvcmEgVGVjaG5vbG9naWVzIEluYwotCQkJCTM2MCwgRnJhbnF1ZXQgU3RyZWV0Ci0JCQkJU3VpdGUgMjAKLQkJCQlRdWViZWMgIEcxUCA0TjMKLQkJCQlDQU5BREEKLQotREMtQ0UtNDEgICAoaGV4KQkJRkUgR0xPQkFMIEhPTkcgS09ORyBMSU1JVEVECi1EQ0NFNDEgICAgIChiYXNlIDE2KQkJRkUgR0xPQkFMIEhPTkcgS09ORyBMSU1JVEVECi0JCQkJRkxBVCAyMDQtMjA1IDIvRiBMQUZPUkQgQ0VOVFJFODM4IExBSSBDSEkgS09LIFJEIENIRVVORyBTSEEgV0FOIEtMCi0JCQkJU0hFTlpIRU4gIDUxODA1NwotCQkJCUNISU5BCi0KLURDLUNGLTk0ICAgKGhleCkJCUJlaWppbmcgUm9uZ2NoZW5nIEh1dG9uZyBUZWNobm9sb2d5IENvLiwgTHRkLgotRENDRjk0ICAgICAoYmFzZSAxNikJCUJlaWppbmcgUm9uZ2NoZW5nIEh1dG9uZyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVJvb20gNDAxQSxCdWlsZGluZyBOby40LFlhcmQgTm8uNSwKLQkJCQlZb25nZmVuZyBSb2FkLCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDI0Ci0JCQkJQ0hJTkEKLQotREMtRDAtRjcgICAoaGV4KQkJQmVudGVrIFN5c3RlbXMgTHRkLgotRENEMEY3ICAgICAoYmFzZSAxNikJCUJlbnRlayBTeXN0ZW1zIEx0ZC4KLQkJCQkzMTUgLSAzNzUwIDQ2dGggQXZlLiBTRQotCQkJCUNhbGdhcnkgQUIgVDJCIDBMMQotCQkJCUNBTkFEQQotCi1EQy1EMy0yMSAgIChoZXgpCQlIVU1BWCBjby4sdGxkCi1EQ0QzMjEgICAgIChiYXNlIDE2KQkJSFVNQVggY28uLHRsZAotCQkJCUhVTUFYIFZpbGxhZ2UsIDExLTQsIFN1bmFlLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLURDLUQ4LTdGICAgKGhleCkJCVNoZW56aGVuIEpvaW5DeWJlciBUZWxlY29tIEVxdWlwbWVudCBMdGQKLURDRDg3RiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBKb2luQ3liZXIgVGVsZWNvbSBFcXVpcG1lbnQgTHRkCi0JCQkJMTlDREUsIEJsb2NrIEEsSmluRmVuZ0J1aWxkaW5nLHNoYW5nYnUgU291dGggUm9hZCxGdXRpYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzMQotCQkJCUNISU5BCi0KLURDLURFLUNBICAgKGhleCkJCUFreWxsb3IKLURDREVDQSAgICAgKGJhc2UgMTYpCQlBa3lsbG9yCi0JCQkJQnJpdGFubmlhIEhvdXNlLCAyMiwgMkYsIENhdG9yIFJvYWQKLQkJCQlCYW5kYXIgU2VyaSBCZWdhd2FuIEJTICA4ODExCi0JCQkJQlJVTkVJIERBUlVTU0FMQU0KLQotREMtRTItQUMgICAoaGV4KQkJTHVtZW5zIERpZ2l0YWwgT3B0aWNzIEluYy4KLURDRTJBQyAgICAgKGJhc2UgMTYpCQlMdW1lbnMgRGlnaXRhbCBPcHRpY3MgSW5jLgotCQkJCTVGLCBOby4zNSwgU2ludGFpIFJkLiwgSmh1YmVpIENpdHkKLQkJCQlKaHViZWkgIEhzaW5DaHUgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1EQy1FNy0xQyAgIChoZXgpCQlBVUcgRWxla3Ryb25payBHbWJICi1EQ0U3MUMgICAgIChiYXNlIDE2KQkJQVVHIEVsZWt0cm9uaWsgR21iSAotCQkJCUtsZWlud29lbGxtaXNzIDUzCi0JCQkJU3QuIE1hcnRpbiBhLiBXLiBTdHlyaWEgQS04NTgwCi0JCQkJQVVTVFJJQQotCi1EQy1GQS1ENSAgIChoZXgpCQlTVFJPTkcgR2VzLm0uYi5ILgotRENGQUQ1ICAgICAoYmFzZSAxNikJCVNUUk9ORyBHZXMubS5iLkguCi0JCQkJRnJhbnotSm9zZWZzLUthaSAxCi0JCQkJVmllbm5hICAxMDEwCi0JCQkJQVVTVFJJQQotCi1FMC0wNS1DNSAgIChoZXgpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotRTAwNUM1ICAgICAoYmFzZSAxNikJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJQnVpbGRpbmcgNywgU2Vjb25kIFBhcnQsIEhvbmdodWFsaW5nIEluZHVzdHJpYWwgWm9uZQotCQkJCVhpbGkgdG93biwgTmFuc2hhbiwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLUUwLTBDLTdGICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotRTAwQzdGICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLUUwLTE0LTNFICAgKGhleCkJCU1vZG9vc2lzIEluYy4KLUUwMTQzRSAgICAgKGJhc2UgMTYpCQlNb2Rvb3NpcyBJbmMuCi0JCQkJIzMwMiwgU2FtaWwgQmxkZy4sIDY1Ni0yODIKLQkJCQlTZW9uZ3Nvby1kb25nIDEgZ2EsIFNlb25nZG9uZy1ndQotCQkJCVNlb3VsICAxMzMtMTEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUUwLTFDLUVFICAgKGhleCkJCUJyYXZvIFRlY2gsIEluYy4KLUUwMUNFRSAgICAgKGJhc2UgMTYpCQlCcmF2byBUZWNoLCBJbmMuCi0JCQkJNjE4NSBQaHlsbGlzIERyLiBVbml0IEQuCi0JCQkJQ3lwcmVzcyBDQSA5MDYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtMUYtMEEgICAoaGV4KQkJWHNsZW50IEVuZXJneSBUZWNobm9sb2dpZXMuIExMQwotRTAxRjBBICAgICAoYmFzZSAxNikJCVhzbGVudCBFbmVyZ3kgVGVjaG5vbG9naWVzLiBMTEMKLQkJCQk3NDI4IFJlZHdvb2QgQmx2ZAotCQkJCVN1aXRlIDEwMgotCQkJCU5vdmF0byBDQSA5NDk0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtMjUtMzggICAoaGV4KQkJVGl0YW4gUGV0IFByb2R1Y3RzCi1FMDI1MzggICAgIChiYXNlIDE2KQkJVGl0YW4gUGV0IFByb2R1Y3RzCi0JCQkJNjUyMSBDcmVlZG1vb3IgUmQuIFN1aXRlIDEwMQotCQkJCVJhbGVpZ2ggTkMgMjc2MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLTI2LTMwICAgKGhleCkJCUludHJpZ3VlIFRlY2hub2xvZ2llcywgSW5jLgotRTAyNjMwICAgICAoYmFzZSAxNikJCUludHJpZ3VlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTgwMCBPbGQgUG9uZCBSb2FkCi0JCQkJIzcwNQotCQkJCUJyaWRnZXZpbGxlIFBBIDE1MDE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC0yNi0zNiAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLUUwMjYzNiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlDQVJSRVRFUkEgQkFTRSBBRVJFQSAjIDU4NTAKLQkJCQlaYXBvcGFuIEphbGlzY28gNDQxMzAKLQkJCQlNRVhJQ08KLQotRTAtMjctMUEgICAoaGV4KQkJVFRDIE5leHQtZ2VuZXJhdGlvbiBIb21lIE5ldHdvcmsgU3lzdGVtIFdHCi1FMDI3MUEgICAgIChiYXNlIDE2KQkJVFRDIE5leHQtZ2VuZXJhdGlvbiBIb21lIE5ldHdvcmsgU3lzdGVtIFdHCi0JCQkJMS0xLTEyIFNoaWJhIEtvdWVuCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNS0wMDExCi0JCQkJSkFQQU4KLQotRTAtMkEtODIgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi1FMDJBODIgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSwgU0VDLjEsIFRBSVBJTkcgUkQuCi0JCQkJVFNBT1RVRU4KLQkJCQlOQU5UT1UgNTQyNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLTNFLTdEICAgKGhleCkJCWRhdGEtY29tcGxleCBHbWJICi1FMDNFN0QgICAgIChiYXNlIDE2KQkJZGF0YS1jb21wbGV4IEdtYkgKLQkJCQlE77+9c3Rlcm5ncmFiZW4gNwotCQkJCUhhbGJlcnN0YWR0IFNhY2hzZW4tQW5oYWx0IDM4ODIwCi0JCQkJR0VSTUFOWQotCi1FMC00Ni05QSAgIChoZXgpCQlORVRHRUFSCi1FMDQ2OUEgICAgIChiYXNlIDE2KQkJTkVUR0VBUgotCQkJCTM1MCBFQVNUIFBMVU1FUklBIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0FMSUZPUk5JQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtNTgtOUUgICAoaGV4KQkJTGFlcmRhbCBNZWRpY2FsCi1FMDU4OUUgICAgIChiYXNlIDE2KQkJTGFlcmRhbCBNZWRpY2FsCi0JCQkJVGFua2UgU3ZpbGFuZHNnYXRlIDMwCi0JCQkJU3RhdmFuZ2VyICA0MDAyCi0JCQkJTk9SV0FZCi0KLUUwLTVCLTcwICAgKGhleCkJCUlubm92aWQsIENvLiwgTHRkLgotRTA1QjcwICAgICAoYmFzZSAxNikJCUlubm92aWQsIENvLiwgTHRkLgotCQkJCTV0aCBGbG9vciwgQm9nYSBCdWlsZGluZywgODIxLTMsIEJhbmdiYWVkb25nLCBTZW9jaG9ndQotCQkJCVNlb3VsICAxMzctMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUUwLTVGLUI5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUUwNUZCOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLTYxLUIyICAgKGhleCkJCUhBTkdaSE9VIFpFTk9JTlRFTCBURUNITk9MT0dZIENPLiwgTFRECi1FMDYxQjIgICAgIChiYXNlIDE2KQkJSEFOR1pIT1UgWkVOT0lOVEVMIFRFQ0hOT0xPR1kgQ08uLCBMVEQKLQkJCQlSb29tIDgwNiwgRiMsIENhbWJyaWRnZSBDb21icmlkZ2UsIFNoZW5odWEgUm9hZCxEaXN0cmljdCBYaWh1LCAKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMzAKLQkJCQlDSElOQQotCi1FMC02Mi05MCAgIChoZXgpCQlKaW5hbiBKb3Zpc2lvbiBTY2llbmNlICYgVGVjaG5vbG9neSBDby4sIEx0ZC4KLUUwNjI5MCAgICAgKGJhc2UgMTYpCQlKaW5hbiBKb3Zpc2lvbiBTY2llbmNlICYgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tIDQwNywgVG93ZXIgQywgQ3liZXIgUG9ydCBCdWlsZGluZywKLQkJCQk0NyBTaGFuZGEgUmQKLQkJCQlKaW5hbiBTaGFuZG9uZyAyNTAwMTMKLQkJCQlDSElOQQotCi1FMC02NC1CQiAgIChoZXgpCQlEaWdpVmlldyBTLnIubC4KLUUwNjRCQiAgICAgKGJhc2UgMTYpCQlEaWdpVmlldyBTLnIubC4KLQkJCQlWaWEgU2VuaWdhbGxpYSAxOC8yCi0JCQkJTWlsYW5vICAyMDE2MQotCQkJCUlUQUxZCi0KLUUwLTY5LTk1ICAgKGhleCkJCVBFR0FUUk9OIENPUlBPUkFUSU9OCi1FMDY5OTUgICAgIChiYXNlIDE2KQkJUEVHQVRST04gQ09SUE9SQVRJT04KLQkJCQlOby4gNzYsIExpZ29uZyBTdC4sIEJlaXRvdSwgCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLTg3LUIxICAgKGhleCkJCU5hdGEtSW5mbyBMdGQuCi1FMDg3QjEgICAgIChiYXNlIDE2KQkJTmF0YS1JbmZvIEx0ZC4KLQkJCQkyOCwgUHJva2hvcm92YSBzdHIuCi0JCQkJWW9zaGthci1PbGEgUmVwdWJsaWMgTWFyaS1FbCA0MjQwMDcKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotRTAtOEEtN0UgICAoaGV4KQkJRXhwb25lbnQKLUUwOEE3RSAgICAgKGJhc2UgMTYpCQlFeHBvbmVudAotCQkJCTE0OSBDb21tb253ZWFsdGggRHJpdmUKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC04Ri1FQyAgIChoZXgpCQlSRVBPVEVDIENPLiwgTFRELgotRTA4RkVDICAgICAoYmFzZSAxNikJCVJFUE9URUMgQ08uLCBMVEQuCi0JCQkJM0YsIDI1OC4gCi0JCQkJTElBTiBDSEVOIFJELiAKLQkJCQlDSFVORyBITyBDSVRZLCBUQUlQRUkgQ09VTlRZICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLTkxLTUzICAgKGhleCkJCVhBVmkgVGVjaG5vbG9naWVzIENvcnAuCi1FMDkxNTMgICAgIChiYXNlIDE2KQkJWEFWaSBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQk5RiwgTm8uIDEyOSwgSHNpbmcgVGUgUmQsIFNhbmNodW5nIENpdHkKLQkJCQlUYWlwZWkgIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTAtOTEtRjUgICAoaGV4KQkJTkVUR0VBUgotRTA5MUY1ICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBTElGT1JOSUEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLUExLUQ3ICAgKGhleCkJCVNGUgotRTBBMUQ3ICAgICAoYmFzZSAxNikJCVNGUgotCQkJCTQwLzQyIFF1YWkgZHUgcG9pbnQgZHUgam91cgotCQkJCUJvdWxvZ25lIEJpbGxhbmNvdXJ0IEhhdXRzIGRlIFNlaW5lIDkyNjU5Ci0JCQkJRlJBTkNFCi0KLUUwLUE2LTcwICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1FMEE2NzAgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLUUwLUFCLUZFICAgKGhleCkJCU9yYiBOZXR3b3JrcywgSW5jLgotRTBBQkZFICAgICAoYmFzZSAxNikJCU9yYiBOZXR3b3JrcywgSW5jLgotCQkJCTQyOCAxM3RoIFN0cmVldAotCQkJCTNyZCBGbG9vcgotCQkJCU9ha2xhbmQgQ0EgOTQ2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLUI5LUE1ICAgKGhleCkJCUF6dXJld2F2ZQotRTBCOUE1ICAgICAoYmFzZSAxNikJCUF6dXJld2F2ZQotCQkJCThGLiwgQmFvemhvbmcgUmQuCi0JCQkJWGluZGlhbiBDaXR5IFRhaXBlaSBDb3VudHkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FMC1CQy00MyAgIChoZXgpCQlDMiBNaWNyb3N5c3RlbXMsIEluYy4KLUUwQkM0MyAgICAgKGJhc2UgMTYpCQlDMiBNaWNyb3N5c3RlbXMsIEluYy4KLQkJCQkyODMzIEp1bmN0aW9uIEF2ZW51ZQotCQkJCVN1aXRlIDEwMQotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLUMyLTg2ICAgKGhleCkJCUFpc2FpIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLUUwQzI4NiAgICAgKGJhc2UgMTYpCQlBaXNhaSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJUm9vbSAyNjEwIEFzaWEgVHJhZGUgQ2VudHJlLAotCQkJCTc5IExpIE11ayBSb2FkLAotCQkJCUt3YWkgQ2h1bmcgTi5ULiA4NTIKLQkJCQlIT05HIEtPTkcKLQotRTAtQzktMjIgICAoaGV4KQkJSmlyZWggRW5lcmd5IFRlY2guLCBMdGQuCi1FMEM5MjIgICAgIChiYXNlIDE2KQkJSmlyZWggRW5lcmd5IFRlY2guLCBMdGQuCi0JCQkJIzYwNiBTZW91bCBGb3Jlc3QgSGFsbGFzaWdtYXZhbGxleSwgMzI1LTIKLQkJCQlTZW9uZ3N1LWRvbmcgMihpKS1nYSwgCi0JCQkJU2VvdWwgU2Vvbmdkb25nLUd1IDEzMy0xMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTAtQ0EtNEQgICAoaGV4KQkJU2hlbnpoZW4gVW5pc3RhciBDb21tdW5pY2F0aW9uIENvLixMVEQKLUUwQ0E0RCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBVbmlzdGFyIENvbW11bmljYXRpb24gQ28uLExURAotCQkJCTkvRixRaW5naGFpIEJ1aWxkaW5nLDcwNDMsIEJlcmh1YW4gUm9hZCwgRnV0aWFuIERpc3RyaWN0LCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDM0Ci0JCQkJQ0hJTkEKLQotRTAtQ0EtOTQgICAoaGV4KQkJQXNrZXkgQ29tcHV0ZXIKLUUwQ0E5NCAgICAgKGJhc2UgMTYpCQlBc2tleSBDb21wdXRlcgotCQkJCTEwRixOTy4xMTksQ0hJRU5LQU5HIFJELENIVU5HLUhPIENJVFksIAotCQkJCVRBSVBFSSBDT1VOVFkgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLUNCLTRFICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotRTBDQjRFICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsIAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FMC1DRi0yRCAgIChoZXgpCQlHZW1pbnRlayBDb3Jwb3JhdGlvbgotRTBDRjJEICAgICAoYmFzZSAxNikJCUdlbWludGVrIENvcnBvcmF0aW9uCi0JCQkJNUYtMSwgTm8uOCwgQWxsZXkgMzAsIExhbmUgMzU4LCBSdWVpZ3VhbmcgUmQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLUQxLTBBICAgKGhleCkJCUthdG91ZGVua2lrb3VneW91c3lvIGNvIGx0ZAotRTBEMTBBICAgICAoYmFzZSAxNikJCUthdG91ZGVua2lrb3VneW91c3lvIGNvIGx0ZAotCQkJCW91amlob250eW91MS00LTEzCi0JCQkJa2l0YS1rdSB0b2t5by10byAxMTQtMDAyMgotCQkJCUpBUEFOCi0KLUUwLUQ3LUJBICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1FMEQ3QkEgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlNUyA4NzIzCi0JCQkJRGFsbGFzIFRleGFzIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC1FNy01MSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLUUwRTc1MSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi1FMC1FOC1FOCAgIChoZXgpCQlPbGl2ZSBUZWxlY29tbXVuaWNhdGlvbiBQdnQuIEx0ZAotRTBFOEU4ICAgICAoYmFzZSAxNikJCU9saXZlIFRlbGVjb21tdW5pY2F0aW9uIFB2dC4gTHRkCi0JCQkJODYyLCBVZHlvZyBWaWhhcgotCQkJCVBoYXNlIC0gVgotCQkJCUd1cmdhb24gSGFyeWFuYSAxMjIwMTYKLQkJCQlJTkRJQQotCi1FMC1FRS0xQiAgIChoZXgpCQlQYW5hc29uaWMgQXV0b21vdGl2ZSBTeXN0ZW1zIENvbXBhbnkgb2YgQW1lcmljYQotRTBFRTFCICAgICAoYmFzZSAxNikJCVBhbmFzb25pYyBBdXRvbW90aXZlIFN5c3RlbXMgQ29tcGFueSBvZiBBbWVyaWNhCi0JCQkJNzc2IEhpZ2h3YXkgNzQgU291dGgKLQkJCQlQZWFjaHRyZWUgQ2l0eSBHZW9yZ2lhIDMwMjY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC1GMi0xMSAgIChoZXgpCQlEaWdpdGFsd2F0dAotRTBGMjExICAgICAoYmFzZSAxNikJCURpZ2l0YWx3YXR0Ci0JCQkJVmlhIERhbnRlLCAxOAotCQkJCVJlbmF0ZSBCcmlhbnphIE1CIDIwMDU1Ci0JCQkJSVRBTFkKLQotRTAtRjMtNzkgICAoaGV4KQkJVmFkZGlvCi1FMEYzNzkgICAgIChiYXNlIDE2KQkJVmFkZGlvCi0JCQkJOTQzMyBTY2llbmNlIENlbnRlciBEcml2ZQotCQkJCU5ldyBIb3BlIE1OIDU1NDI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC1GOC00NyAgIChoZXgpCQlBcHBsZSBJbmMKLUUwRjg0NyAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LTEyLTg5ICAgKGhleCkJCXRvcHN5c3RlbSBTeXN0ZW1oYXVzIEdtYkgKLUU0MTI4OSAgICAgKGJhc2UgMTYpCQl0b3BzeXN0ZW0gU3lzdGVtaGF1cyBHbWJICi0JCQkJTW9ubmV0c3RyYe+/vWUgMjQKLQkJCQlX77+9cnNlbGVuIE5SVyA1MjE0NgotCQkJCUdFUk1BTlkKLQotRTQtMUMtNEIgICAoaGV4KQkJVjIgVEVDSE5PTE9HWSwgSU5DLgotRTQxQzRCICAgICAoYmFzZSAxNikJCVYyIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk0NDUwIEVudGVycHJpc2UgU3RyZWV0Ci0JCQkJU3VpdGUgMTAxCi0JCQkJRnJlbW9udCBDYWxpZm9ybmlhIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC0xRi0xMyAgIChoZXgpCQlJQk0gQ29ycAotRTQxRjEzICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUmQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTQtMjctNzEgICAoaGV4KQkJU21hcnRsYWJzCi1FNDI3NzEgICAgIChiYXNlIDE2KQkJU21hcnRsYWJzCi0JCQkJNzIsIE9rdHlhYnJza2F5YSBTdHJlZXQKLQkJCQlNb3Njb3cgIDEyNzUyMQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1FNC0yQS1EMyAgIChoZXgpCQlNYWduZXRpIE1hcmVsbGkgUy5wLkEuIFBvd2VydHJhaW4KLUU0MkFEMyAgICAgKGJhc2UgMTYpCQlNYWduZXRpIE1hcmVsbGkgUy5wLkEuIFBvd2VydHJhaW4KLQkJCQlWaWEgZGVsIFRpbWF2byAzMwotCQkJCUJvbG9nbmEgIDQwMTI4Ci0JCQkJSVRBTFkKLQotRTQtMkYtRjYgICAoaGV4KQkJVW5pY29yZSBjb21tdW5pY2F0aW9uIEluYy4KLUU0MkZGNiAgICAgKGJhc2UgMTYpCQlVbmljb3JlIGNvbW11bmljYXRpb24gSW5jLgotCQkJCVJtLjMxMiBCdWlsZGluZyAyIElSSUNPLCBOby4xMVN0LjQsU2hhbmdkaSwgSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi1FNC0zNS05MyAgIChoZXgpCQlIYW5nemhvdSBHb1RvIHRlY2hub2xvZ3kgQ28uTHRkCi1FNDM1OTMgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgR29UbyB0ZWNobm9sb2d5IENvLkx0ZAotCQkJCVJvb20xMzAzLEJvZWUgYnVpbGRpbmcsMzc2MCBOYW5odWFuIFJvYWQsIEJpbmppYW5nLCAKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwNTMKLQkJCQlDSElOQQotCi1FNC0zNy1ENyAgIChoZXgpCQlIRU5SSSBERVBBRVBFIFMuQS5TLgotRTQzN0Q3ICAgICAoYmFzZSAxNikJCUhFTlJJIERFUEFFUEUgUy5BLlMuCi0JCQkJNzUvNzcgUlVFIERVIFBSRSBCUk9DSEVUCi0JCQkJU0FOTk9JUyAgOTUxMTIKLQkJCQlGUkFOQ0UKLQotRTQtNDEtRTYgICAoaGV4KQkJT3R0ZWMgVGVjaG5vbG9neSBHbWJICi1FNDQxRTYgICAgIChiYXNlIDE2KQkJT3R0ZWMgVGVjaG5vbG9neSBHbWJICi0JCQkJUGxhbmV0ZW5yaW5nIDEyCi0JCQkJUm9ubmVuYmVyZyBMb3dlciBTYXhvbnkgMzA5NTIKLQkJCQlHRVJNQU5ZCi0KLUU0LTQ2LUJEICAgKGhleCkJCUMmQyBURUNITklDIFRBSVdBTiBDTy4sIExURC4KLUU0NDZCRCAgICAgKGJhc2UgMTYpCQlDJkMgVEVDSE5JQyBUQUlXQU4gQ08uLCBMVEQuCi0JCQkJUk9PTTYgMTNGLCBOTy4yLEppYW4gOHRoIFJPQUQKLQkJCQlUYWlwZWkgQ2h1bmdobyBDaXR5LCAgMjM1MTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUU0LTQ4LUM3ICAgKGhleCkJCUNpc2NvIFNQVlRHCi1FNDQ4QzcgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHZW9yZ2lhIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC00Ri0yOSAgIChoZXgpCQlNQSBMaWdodGluZyBUZWNobm9sb2d5IEdtYkgKLUU0NEYyOSAgICAgKGJhc2UgMTYpCQlNQSBMaWdodGluZyBUZWNobm9sb2d5IEdtYkgKLQkJCQlEYWNoZGVja2Vyc3RyLjE2Ci0JCQkJV2FsZGLvv710dGVsYnJ1bm4gQmF2YXJpYSA5NzI5NwotCQkJCUdFUk1BTlkKLQotRTQtNjQtNDkgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLUU0NjQ0OSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LTZDLTIxICAgKGhleCkJCW1lc3NNYSBHbWJICi1FNDZDMjEgICAgIChiYXNlIDE2KQkJbWVzc01hIEdtYkgKLQkJCQlBbSBTdGFkdGZlbGQgOAotCQkJCUl4bGViZW4gU2FjaHNlbi1BbmhhbHQgMzkxNjcKLQkJCQlHRVJNQU5ZCi0KLUU0LTc1LTFFICAgKGhleCkJCUdldGluZ2UgU3RlcmlsaXphdGlvbiBBQgotRTQ3NTFFICAgICAoYmFzZSAxNikJCUdldGluZ2UgU3RlcmlsaXphdGlvbiBBQgotCQkJCUJveCA2OQotCQkJCUdldGluZ2UgIDMxMDQ0Ci0JCQkJU1dFREVOCi0KLUU0LTdDLUY5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLUU0N0NGOSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIFllb25ndG9uZy1ndQotCQkJCVN1d29uLUNpdHksIAotCQkJCVN1d29uIEd5ZW9uZ2dpLWRvIDQ0Mzc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FNC04My05OSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotRTQ4Mzk5ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTQtOEEtRDUgICAoaGV4KQkJUkYgV0lORE9XIENPLiwgTFRELgotRTQ4QUQ1ICAgICAoYmFzZSAxNikJCVJGIFdJTkRPVyBDTy4sIExURC4KLQkJCQkxNEYsIERhZXJ1bmcgUG9zdHRvd2VyMwotCQkJCTE4Mi00LCBHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTc0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FNC05Ny1GMCAgIChoZXgpCQlTaGFuZ2hhaSBWTEMgVGVjaG5vbG9naWVzIEx0ZC4gQ28uCi1FNDk3RjAgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgVkxDIFRlY2hub2xvZ2llcyBMdGQuIENvLgotCQkJCVJvb20gOTAxLCBCLVpvbmUsIEVhc3QgQmVpamluZyBSb2FkCi0JCQkJSHVhbmdwdSBEaXN0LgotCQkJCVNoYW5naGFpICAyMDAwMDEKLQkJCQlDSElOQQotCi1FNC1BNS1FRiAgIChoZXgpCQlUUk9OIExJTksgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi1FNEE1RUYgICAgIChiYXNlIDE2KQkJVFJPTiBMSU5LIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCUZMQVQgQSwgMjAvRi4sIEJMT0NLIDQsT04gTklORyBHQVJERU4sCi0JCQkJMTAgU0hFVU5HIE5JTkcgUk9BRCxUU0VVTkcgS1dBTiBPLAotCQkJCUtPV0xPT04gIDk5OTA3NwotCQkJCUhPTkcgS09ORwotCi1FNC1BQi00NiAgIChoZXgpCQlVQUIgU2VsdGVrYQotRTRBQjQ2ICAgICAoYmFzZSAxNikJCVVBQiBTZWx0ZWthCi0JCQkJRHJhdWd5c3Tvv71zIGcuIDE5Ci0JCQkJS2F1bmFzICBMVC01MTIzMCAKLQkJCQlMSVRIVUFOSUEKLQotRTQtQUQtN0QgICAoaGV4KQkJU0NMIEVsZW1lbnRzCi1FNEFEN0QgICAgIChiYXNlIDE2KQkJU0NMIEVsZW1lbnRzCi0JCQkJNTgwMCBTdC1EZW5pcywgIzIyMgotCQkJCU1vbnRyZWFsIFF1ZWJlYyBIMlMzbDUKLQkJCQlDQU5BREEKLQotRTQtQ0UtOEYgICAoaGV4KQkJQXBwbGUgSW5jIAotRTRDRThGICAgICAoYmFzZSAxNikJCUFwcGxlIEluYyAKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC1ENy0xRCAgIChoZXgpCQlPcmF5YSBUaGVyYXBldXRpY3MKLUU0RDcxRCAgICAgKGJhc2UgMTYpCQlPcmF5YSBUaGVyYXBldXRpY3MKLQkJCQk4MDAwIEphcnZpcyBBdmVudWUgIFN0ZS4gMjAwCi0JCQkJTmV3YXJrIENBIDk0NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC1ERC03OSAgIChoZXgpCQlFbi1WaXNpb24gQW1lcmljYSwgSW5jLgotRTRERDc5ICAgICAoYmFzZSAxNikJCUVuLVZpc2lvbiBBbWVyaWNhLCBJbmMuCi0JCQkJMTg0NSBIb3ZleSBBdmUKLQkJCQlOb3JtYWwgSUwgNjE3NjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LUUwLUM1ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLUU0RTBDNSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIFllb25ndG9uZy1ndQotCQkJCVN1d29uIEd5ZW9uZ2dpLWRvIDQ0Mzc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FNC1FQy0xMCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRTRFQzEwICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgT3UgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLUU0LUZGLUREICAgKGhleCkJCUVMRUNUUk9OIElORElBCi1FNEZGREQgICAgIChiYXNlIDE2KQkJRUxFQ1RST04gSU5ESUEKLQkJCQlUWVBFIElJLCBOTy45LCBEUi4gVi5TLkkuIEVTVEFURQotCQkJCVRISVJVVkFOTUlZVVIKLQkJCQlDSEVOTkFJIFRBTUlMIE5BRFUgNjAwIDA0MQotCQkJCUlORElBCi0KLUU4LTA0LTBCICAgKGhleCkJCUFwcGxlIEluYwotRTgwNDBCICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtMDQtNjIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRTgwNDYyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtMDUtNkQgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi1FODA1NkQgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLUU4LTA2LTg4ICAgKGhleCkJCUFwcGxlIEluYy4gCi1FODA2ODggICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jLiAKLQkJCQlPbmUgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtMEItMTMgICAoaGV4KQkJQWtpYiBTeXN0ZW1zIFRhaXdhbiwgSU5DCi1FODBCMTMgICAgIChiYXNlIDE2KQkJQWtpYiBTeXN0ZW1zIFRhaXdhbiwgSU5DCi0JCQkJTm8uNTgyLTEsIFJ1aUd1YW5nIFJkCi0JCQkJTmVpSHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTgtMEMtMzggICAoaGV4KQkJREFFWU9VTkcgSU5GT1JNQVRJT04gU1lTVEVNIENPLiwgTFRECi1FODBDMzggICAgIChiYXNlIDE2KQkJREFFWU9VTkcgSU5GT1JNQVRJT04gU1lTVEVNIENPLiwgTFRECi0JCQkJIzgyNiBUQU1OSVAtRE9ORywgWVVTRU9ORy1HTywgCi0JCQkJREFFSk9OICAzMDUtNTEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUU4LTExLTMyICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLExURAotRTgxMTMyICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLExURAotCQkJCTQxNiwgTWFldGFuZy0zRG9uZywgWWVvbmdvbi1HdQotCQkJCVN1d29uIEd5ZW9uZ2dpLURvIDQ0My03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTgtMjgtNzcgICAoaGV4KQkJVE1ZIENvLiwgTHRkLgotRTgyODc3ICAgICAoYmFzZSAxNikJCVRNWSBDby4sIEx0ZC4KLQkJCQlBdHRpYyBCbGRnLiAzRiwgMS0yLTEwIElzZS1jaG8sCi0JCQkJQXNoaWthZ2Etc2hpIFRvY2hpZ2kgMzI2LTAwNTMKLQkJCQlKQVBBTgotCi1FOC0yOC1ENSAgIChoZXgpCQlDb3RzIFRlY2hub2xvZ3kKLUU4MjhENSAgICAgKGJhc2UgMTYpCQlDb3RzIFRlY2hub2xvZ3kKLQkJCQlDLTcwMiwgQnVuZGFuZyBUZWNobm8gUGFyaywgMTQ1LAotCQkJCVlhdGFvcC1kb25nLCBCdW5kYW5nLWd1LAotCQkJCVN1bmduYW0tQ2l0eSBLeW91bmdnaS1kbyA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUU4LTM5LURGICAgKGhleCkJCUFza2V5IENvbXB1dGVyCi1FODM5REYgICAgIChiYXNlIDE2KQkJQXNrZXkgQ29tcHV0ZXIKLQkJCQkxMEYsTk8uMTE5LENISUVOS0FORyBSRCxDSFVORy1ITywKLQkJCQlUQUlQRUkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FOC0zQS05NyAgIChoZXgpCQlPQ1ogVGVjaG5vbG9neSBHcm91cAotRTgzQTk3ICAgICAoYmFzZSAxNikJCU9DWiBUZWNobm9sb2d5IEdyb3VwCi0JCQkJNjM3MyBTYW4gSWduYWNpbyBBdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtM0UtQjYgICAoaGV4KQkJUklNCi1FODNFQjYgICAgIChiYXNlIDE2KQkJUklNCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgM1c4Ci0JCQkJQ0FOQURBCi0KLUU4LTQwLTQwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUU4NDA0MCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU4LTRFLTA2ICAgKGhleCkJCVBSSVZBVEUKLUU4NEUwNiAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotRTgtNEUtQ0UgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi1FODRFQ0UgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotRTgtNUItNUIgICAoaGV4KQkJTEcgRUxFQ1RST05JQ1MgSU5DCi1FODVCNUIgICAgIChiYXNlIDE2KQkJTEcgRUxFQ1RST05JQ1MgSU5DCi0JCQkJMTktMSwgQ0hFT05HSE8tUkksIEpJTldJLU1ZRU9OCi0JCQkJUFlFT05HVEFFSyBHWUVPTkdHSS1ETyA0NTEtNzEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUU4LTVFLTUzICAgKGhleCkJCUluZnJhdGVjIERhdGVudGVjaG5payBHbWJICi1FODVFNTMgICAgIChiYXNlIDE2KQkJSW5mcmF0ZWMgRGF0ZW50ZWNobmlrIEdtYkgKLQkJCQlHZXZlbmVyIFdlZyAzOAotCQkJCU5ldWVucmFkZSBOUlcgNTg1NzkKLQkJCQlHRVJNQU5ZCi0KLUU4LTZDLURBICAgKGhleCkJCVN1cGVyY29tcHV0ZXJzIGFuZCBOZXVyb2NvbXB1dGVycyBSZXNlYXJjaCBDZW50ZXIKLUU4NkNEQSAgICAgKGJhc2UgMTYpCQlTdXBlcmNvbXB1dGVycyBhbmQgTmV1cm9jb21wdXRlcnMgUmVzZWFyY2ggQ2VudGVyCi0JCQkJMiwgQ2hla2hvdiBzdAotCQkJCVRhZ2Fucm9nICBSb3N0b3Ytb24tRG9uIHJlZ2lvbiAgMzQ3OTIyIAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1FOC03NS03RiAgIChoZXgpCQlGSVJTIFRlY2hub2xvZ2llcyhTaGVuemhlbikgQ28uLCBMdGQKLUU4NzU3RiAgICAgKGJhc2UgMTYpCQlGSVJTIFRlY2hub2xvZ2llcyhTaGVuemhlbikgQ28uLCBMdGQKLQkJCQlSbSAxMkEsIEFyZWEgQSwgSG9uZ3NvbmcgQnVzaW5lc3MgQnVpbGRpbmcsIFRhaXJhbiA5dGggUmQsIENoZWdvbmdtaWFvLCAKLQkJCQlGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotRTgtN0EtRjMgICAoaGV4KQkJUzUgVGVjaCBTLnIubC4KLUU4N0FGMyAgICAgKGJhc2UgMTYpCQlTNSBUZWNoIFMuci5sLgotCQkJCVZpYSBUb3J0b25hIDcyCi0JCQkJTWlsYW5vICAyMDE0NAotCQkJCUlUQUxZCi0KLUU4LTk0LTRDICAgKGhleCkJCUNvZ2VudCBIZWFsdGhjYXJlIFN5c3RlbXMgTHRkCi1FODk0NEMgICAgIChiYXNlIDE2KQkJQ29nZW50IEhlYWx0aGNhcmUgU3lzdGVtcyBMdGQKLQkJCQkxNDNlIEFydGh1ciBSb2FkCi0JCQkJV2luZHNvcgotCQkJCUJlcmtzaGlyZSAgU0w0IDFTRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUU4LTk5LTVBICAgKGhleCkJCVBpaUdBQiwgUHJvY2Vzc2luZm9ybWF0aW9uIGkgR290ZWJvcmcgQUIKLUU4OTk1QSAgICAgKGJhc2UgMTYpCQlQaWlHQUIsIFByb2Nlc3NpbmZvcm1hdGlvbiBpIEdvdGVib3JnIEFCCi0JCQkJQW5kZXJzIENhcmxzc29ucyBnYXRhIDEKLQkJCQlHb3RoZW5idXJnICA0MTcgNTUKLQkJCQlTV0VERU4KLQotRTgtOUEtOEYgICAoaGV4KQkJUXVhbnRhIENvbXB1dGVyIEluYy4KLUU4OUE4RiAgICAgKGJhc2UgMTYpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotCQkJCTIxMSwgV2VuIEh3YSAybmQgUmQuLEt1ZWkgU2hhbiwgVGFvIFl1YW4gCi0JCQkJVEFJUEVJICAzMzM3NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTgtOUQtODcgICAoaGV4KQkJVG9zaGliYQotRTg5RDg3ICAgICAoYmFzZSAxNikJCVRvc2hpYmEKLQkJCQkyLTksU3VlaGlyby1DaG8KLQkJCQlPbWUgVG9reW8gMTk4ODcxMAotCQkJCUpBUEFOCi0KLUU4LUE0LUMxICAgKGhleCkJCURlZXAgU2VhIEVsZWN0cm9uaWNzIFBMQwotRThBNEMxICAgICAoYmFzZSAxNikJCURlZXAgU2VhIEVsZWN0cm9uaWNzIFBMQwotCQkJCUhpZ2hmaWVsZCBIb3VzZQotCQkJCUh1bm1hbmJ5IEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJSHVubWFuYnkgTm9ydGggWW9ya3NoaXJlIFlPMTQgMFBICi0JCQkJVU5JVEVEIEtJTkdET00KLQotRTgtQjQtQUUgICAoaGV4KQkJU2hlbnpoZW4gQyZEIEVsZWN0cm9uaWNzIENvLixMdGQKLUU4QjRBRSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBDJkQgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCUJ1aWxkaW5nIDIsIFhpYSBZb3UgU29uZyBNb3VudGFpbiBUb3AgSW5kdXN0cmlhbCBEaXN0cmljdCwgWW91IFNvbmcgVmlsbGFnZQotCQkJCUxvbmdodWEsIEJhbyBBbgotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotRTgtQjctNDggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRThCNzQ4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtQkEtNzAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRThCQTcwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU4LUJFLTgxICAgKGhleCkJCVNBR0VNQ09NCi1FOEJFODEgICAgIChiYXNlIDE2KQkJU0FHRU1DT00KLQkJCQkyNTAgcm91dGUgZGUgbCdFbXBlcmV1cgotCQkJCVJVRUlMIE1BTE1BSVNPTiBJbGUgZGUgRnJhbmNlIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLUU4LUMyLTI5ICAgKGhleCkJCUgtRGlzcGxheXMgKE1TQykgQmhkCi1FOEMyMjkgICAgIChiYXNlIDE2KQkJSC1EaXNwbGF5cyAoTVNDKSBCaGQKLQkJCQlOby4gMzEgJiAzMiwgSmFsYW4gR2FuZ3NhIER1YQotCQkJCVBhc2lyIEd1ZGFuZwotCQkJCUpvaG9yIEJhaHJ1ICA4MTcwMAotCQkJCU1BTEFZU0lBCi0KLUU4LUMzLTIwICAgKGhleCkJCUF1c3RjbyBDb21tdW5pY2F0aW9uIFN5c3RlbXMgUHR5IEx0ZAotRThDMzIwICAgICAoYmFzZSAxNikJCUF1c3RjbyBDb21tdW5pY2F0aW9uIFN5c3RlbXMgUHR5IEx0ZAotCQkJCTQwIE8nTWFsbGV5IFN0cmVldAotCQkJCU9zYm9ybmUgUGFyayBXZXN0ZXJuIEF1c3RyYWxpYSA2MDE3Ci0JCQkJQVVTVFJBTElBCi0KLUU4LUNDLTMyICAgKGhleCkJCU1pY3JvbmV0ICBMVEQKLUU4Q0MzMiAgICAgKGJhc2UgMTYpCQlNaWNyb25ldCAgTFRECi0JCQkJSGFtZXR6dWRhIDI3Ci0JCQkJQXpvciAgNTgwMDEKLQkJCQlJU1JBRUwKLQotRTgtREEtQUEgICAoaGV4KQkJVmlkZW9Ib21lIFRlY2hub2xvZ3kgQ29ycC4KLUU4REFBQSAgICAgKGJhc2UgMTYpCQlWaWRlb0hvbWUgVGVjaG5vbG9neSBDb3JwLgotCQkJCTRGLTEsIE5vLiAxOTIsIERhIFR1bmcgUmQuLCBTZWMuIDMsIEhzaWNoaWgsCi0JCQkJVGFpcGVpIEhzaWVuICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUU4LURGLUYyICAgKGhleCkJCVBSRiBDby4sIEx0ZC4KLUU4REZGMiAgICAgKGJhc2UgMTYpCQlQUkYgQ28uLCBMdGQuCi0JCQkJIzUxMCwgTGVhZGVycyBCL0QsIFlhdG9wLWRvbmcKLQkJCQlCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0tY2l0eSBHeWVvbmdnaS1kbyA0NjMtODI4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUU4LUUwLThGICAgKGhleCkJCUdSQVZPVEVDSCBNQVJLSU5HIFNBUwotRThFMDhGICAgICAoYmFzZSAxNikJCUdSQVZPVEVDSCBNQVJLSU5HIFNBUwotCQkJCTU2IEFWRU5VRSBKRUFOIEpBVVJFUwotCQkJCUxBIENIQVBFTExFIFNBSU5UIExVQyBBVUJFIDEwNjAwCi0JCQkJRlJBTkNFCi0KLUU4LUUwLUI3ICAgKGhleCkJCVRvc2hpYmEKLUU4RTBCNyAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LFN1ZWhpcm8tQ2hvCi0JCQkJT21lIFRva3lvIDE5ODg3MTAKLQkJCQlKQVBBTgotCi1FOC1FMS1FMiAgIChoZXgpCQlFbmVyZ290ZXN0Ci1FOEUxRTIgICAgIChiYXNlIDE2KQkJRW5lcmdvdGVzdAotCQkJCUNob3J6b3dza2EgNDRCCi0JCQkJR2xpd2ljZSBTbGFzayA0NC0xMDAKLQkJCQlQT0xBTkQKLQotRTgtRTUtRDYgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkIAotRThFNUQ2ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZCAKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTgtRTctMzIgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLUU4RTczMiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTI2ODAxIFdlc3QgQWdvdXJhIFJvYWQKLQkJCQlDYWxhYmFzYXMgQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU4LUU3LTc2ICAgKGhleCkJCVNoZW56aGVuIEtvb3Rpb24gVGVjaG5vbG9neSBDby4sIEx0ZAotRThFNzc2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEtvb3Rpb24gVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTMvRiwgQnVpbGRpbmcgIzQsIFhpbkppYW5YaW5nIEluZHVzdHJpYWwgUGFyawotCQkJCVNvbmdiYWkgUm9hZCwgTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgUHJvdmluY2UgNTE4MTA4Ci0JCQkJQ0hJTkEKLQotRTgtRjktMjggICAoaGV4KQkJUkZURUNIIFNSTAotRThGOTI4ICAgICAoYmFzZSAxNikJCVJGVEVDSCBTUkwKLQkJCQlWSUEgVkVORVRPLCAyMgotCQkJCVNDSElPIFZJQ0VOWkEgMzYwMTUKLQkJCQlJVEFMWQotCi1FQy0xNC1GNiAgIChoZXgpCQlCaW9Db250cm9sIEFTCi1FQzE0RjYgICAgIChiYXNlIDE2KQkJQmlvQ29udHJvbCBBUwotCQkJCUdyaW1zdGFkIEdhcmQgCi0JCQkJUmFra2VzdGFkICAgTi0xODkwCi0JCQkJTk9SV0FZCi0KLUVDLTIzLTY4ICAgKGhleCkJCUludGVsbGlWb2ljZSBDby4sTHRkLgotRUMyMzY4ICAgICAoYmFzZSAxNikJCUludGVsbGlWb2ljZSBDby4sTHRkLgotCQkJCTMtNiBLaW9pY2hvCi0JCQkJS2lvaWNobyBQYXJrIEJsZC4gMUYKLQkJCQlDaGl5b2RhIFRva3lvIDEwMi0wMDk0Ci0JCQkJSkFQQU4KLQotRUMtMzAtOTEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRUMzMDkxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLTNCLUYwICAgKGhleCkJCU5vdmVsU2F0Ci1FQzNCRjAgICAgIChiYXNlIDE2KQkJTm92ZWxTYXQKLQkJCQlIYXRhYXNpYSAyMQotCQkJCVJhYW5hbmEgIDIzOTYKLQkJCQlJU1JBRUwKLQotRUMtNDMtRTYgICAoaGV4KQkJQVdDRVIgTHRkLgotRUM0M0U2ICAgICAoYmFzZSAxNikJCUFXQ0VSIEx0ZC4KLQkJCQkxMDAtNDEzIEJ1Y2hlb24gVGVjaG5vcGFyawotCQkJCTM2NCBTYW5KZW9uZy1kb25nLCBPamVvbmctZ3UKLQkJCQlCdWNoZW9uLWNpdHkgR3llb25nZ2ktZG8gNDIxLTc0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FQy00NC03NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1FQzQ0NzYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FQy00Ni00NCAgIChoZXgpCQlUVEsgU0FTCi1FQzQ2NDQgICAgIChiYXNlIDE2KQkJVFRLIFNBUwotCQkJCTQsIFJ1ZSBkdSBDaGVtaW4gVmVydAotCQkJCUNsaWNoeSAgOTIxMTAKLQkJCQlGUkFOQ0UKLQotRUMtNTQtMkUgICAoaGV4KQkJU2hhbmdoYWkgWGlNZWkgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLiBMdGQKLUVDNTQyRSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBYaU1laSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uIEx0ZAotCQkJCVJvb20gNTAzLCBOby4yNjIzLCBHb25nSGVYaW4gUm9hZAotCQkJCVNoYW5naGFpICAyMDAwNzIKLQkJCQlDSElOQQotCi1FQy01NS1GOSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi1FQzU1RjkgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotRUMtNUMtNjkgICAoaGV4KQkJTUlUU1VCSVNISSBIRUFWWSBJTkRVU1RSSUVTIE1FQ0hBVFJPTklDUyBTWVNURU1TLExURC4KLUVDNUM2OSAgICAgKGJhc2UgMTYpCQlNSVRTVUJJU0hJIEhFQVZZIElORFVTVFJJRVMgTUVDSEFUUk9OSUNTIFNZU1RFTVMsTFRELgotCQkJCTEtMTYsNS1DSE9NRSxLT01BVFNVLURPUkksCi0JCQkJS09CRSBIWU9HTyA2NTItMDg2NQotCQkJCUpBUEFOCi0KLUVDLTY2LUQxICAgKGhleCkJCUImYW1wO1cgR3JvdXAgTFRECi1FQzY2RDEgICAgIChiYXNlIDE2KQkJQiZhbXA7VyBHcm91cCBMVEQKLQkJCQlEYWxlIFJvYWQKLQkJCQlXb3J0aGluZyBTdXNzZXggQk4xMSAyQkgKLQkJCQlVTklURUQgS0lOR0RPTQotCi1FQy02Qy05RiAgIChoZXgpCQlDaGVuZ2R1IFZvbGFucyBUZWNobm9sb2d5IENPLixMVEQKLUVDNkM5RiAgICAgKGJhc2UgMTYpCQlDaGVuZ2R1IFZvbGFucyBUZWNobm9sb2d5IENPLixMVEQKLQkJCQkybmQgRmxvb3IgQnVpbGRpbmcgNEIgSGktVGVjaCBJbmN1YmF0aW9uIFBhcmssTmFueWFuIFhpYW4sVGlhbmZ1IEF2ZQotCQkJCUNoZW5nZHUgU2ljaHVhbiA2MTAwNDEKLQkJCQlDSElOQQotCi1FQy03Qy03NCAgIChoZXgpCQlKdXN0b25lIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLUVDN0M3NCAgICAgKGJhc2UgMTYpCQlKdXN0b25lIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlUb25nZ3VhbmcgQnVpbGRpbmcgRjE5LCAxMiMgU291dGggQWdyaWN1bHR1cmUgRXhoaWJpdGlvbiBDZW50ZXIgUm9hZCwgCi0JCQkJQ2hhb3lhbmcgRGlzdHJpY3QgCi0JCQkJQmVpamluZyAgMTAwMTI1Ci0JCQkJQ0hJTkEKLQotRUMtN0QtOUQgICAoaGV4KQkJTUVJCi1FQzdEOUQgICAgIChiYXNlIDE2KQkJTUVJCi0JCQkJMTMwMSBXaWxzb24gRHJpdmUKLQkJCQlXZXN0IENoZXN0ZXIgUEEgMTkzODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLTgzLTZDICAgKGhleCkJCVJNIFRlY2ggQ28uLCBMdGQuCi1FQzgzNkMgICAgIChiYXNlIDE2KQkJUk0gVGVjaCBDby4sIEx0ZC4KLQkJCQlDLTgwMSwgQnVweWVvbmcgV29vbGltIExpb25zIFZhbGxleQotCQkJCUNoZW9uZ2NoZW9uIDItZG9uZywgQnVweWVvbmctZ3UKLQkJCQlJbmNoZW9uIENpdHkgIDQwMy05MTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRUMtOEUtQUQgICAoaGV4KQkJRExYCi1FQzhFQUQgICAgIChiYXNlIDE2KQkJRExYCi0JCQkJIzQwMSwgU2VvaWwgQi9ELDEzNTktNDUgU2VvY2hvMi1kb25nCi0JCQkJU2VvY2hvLWt1LCAKLQkJCQlTZW91bCAgMTM3LTg2MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FQy05Mi0zMyAgIChoZXgpCQlFZGR5ZmkgTkRUIEluYwotRUM5MjMzICAgICAoYmFzZSAxNikJCUVkZHlmaSBORFQgSW5jCi0JCQkJMzYwLCBGcmFucXVldCBzdHJlZXQKLQkJCQlTdWl0ZSA0MAotCQkJCVF1ZWJlYyAgRzFQIDROMwotCQkJCUNBTkFEQQotCi1FQy05Ni04MSAgIChoZXgpCQkyMjc2NDI3IE9udGFyaW8gSW5jCi1FQzk2ODEgICAgIChiYXNlIDE2KQkJMjI3NjQyNyBPbnRhcmlvIEluYwotCQkJCTMxLTEyNzUgTW9ybmluZ3NpZGUgQXZlCi0JCQkJVG9yb250byBPTiBNMUIzVzEKLQkJCQlDQU5BREEKLQotRUMtOTgtNkMgICAoaGV4KQkJTHVmZnQgTWVzcy0gdW5kIFJlZ2VsdGVjaG5payBHbWJICi1FQzk4NkMgICAgIChiYXNlIDE2KQkJTHVmZnQgTWVzcy0gdW5kIFJlZ2VsdGVjaG5payBHbWJICi0JCQkJR3V0ZW5iZXJnc3RyLiAyMAotCQkJCUZlbGxiYWNoIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3MDczNgotCQkJCUdFUk1BTlkKLQotRUMtOTgtQzEgICAoaGV4KQkJQmVpamluZyBSaXNibyBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLEx0ZAotRUM5OEMxICAgICAoYmFzZSAxNikJCUJlaWppbmcgUmlzYm8gTmV0d29yayBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkxL0YgWWlueWFuIEJ1aWxkaW5nIDJBLE5vLjIzIEFubmluZ3podWFuZ2RvbmdsdSBIYWlkaWFuIERpc3RyaWN0IAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLUVDLTlCLTVCICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1FQzlCNUIgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJS2VtcGVsZSAgOTA1NzAKLQkJCQlGSU5MQU5ECi0KLUVDLTlFLUNEICAgKGhleCkJCUVtZXJzb24gTmV0d29yayBQb3dlciBhbmQgRW1iZWRkZWQgQ29tcHV0aW5nCi1FQzlFQ0QgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyIGFuZCBFbWJlZGRlZCBDb21wdXRpbmcKLQkJCQkyOTAwIFMsIERpYWJsbyBXYXkgU3VpdGUgMTkwCi0JCQkJVGVtcGUgQXJpem9uYSA4NTI4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtQjEtMDYgICAoaGV4KQkJQWN1cm8gTmV0d29ya3MsIEluYwotRUNCMTA2ICAgICAoYmFzZSAxNikJCUFjdXJvIE5ldHdvcmtzLCBJbmMKLQkJCQk0MjgwOCBDaHJpc3R5IFN0LiwgU3VpdGUgMTAwCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtQkItQUUgICAoaGV4KQkJRGlnaXZvaWNlIFRlY25vbG9naWEgZW0gRWxldHJvbmljYSBMdGRhCi1FQ0JCQUUgICAgIChiYXNlIDE2KQkJRGlnaXZvaWNlIFRlY25vbG9naWEgZW0gRWxldHJvbmljYSBMdGRhCi0JCQkJQWxhbWVkYSBKdXJ1LCAxNTkgLSBUb3JyZW8KLQkJCQlCYXJ1ZXJpIFNhbyBQYXVsbyAwNjQ1NS0wMTAKLQkJCQlCUkFaSUwKLQotRUMtQkQtMDkgICAoaGV4KQkJRlVTSU9OIEVsZWN0cm9uaWNzIEx0ZAotRUNCRDA5ICAgICAoYmFzZSAxNikJCUZVU0lPTiBFbGVjdHJvbmljcyBMdGQKLQkJCQlQTyBCb3ggMTM3IC0gMTQyCi0JCQkJUGFybmVsbAotCQkJCUF1Y2tsYW5kICAxMTUxCi0JCQkJTkVXIFpFQUxBTkQKLQotRUMtQzMtOEEgICAoaGV4KQkJQWNjdWVuZXJneSAoQ0FOQURBKSBJbmMKLUVDQzM4QSAgICAgKGJhc2UgMTYpCQlBY2N1ZW5lcmd5IChDQU5BREEpIEluYwotCQkJCTIgTGFuc2luZyBTcXVhcmUsIFN1aXRlIDUwMwotCQkJCVRvcm9udG8gT250YXJpbyBNMkogNFA4Ci0JCQkJQ0FOQURBCi0KLUVDLUM4LTgyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUVDQzg4MiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLUNELTZEICAgKGhleCkJCUFsbGllZCBUZWxlc2lzLCBJbmMuCi1FQ0NENkQgICAgIChiYXNlIDE2KQkJQWxsaWVkIFRlbGVzaXMsIEluYy4KLQkJCQkzMjAwIE5vcnRoIEZpcnN0IFN0cmVldAotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLUQwLTBFICAgKGhleCkJCU1pcmFlUmVjb2duaXRpb24gQ28uLCBMdGQuCi1FQ0QwMEUgICAgIChiYXNlIDE2KQkJTWlyYWVSZWNvZ25pdGlvbiBDby4sIEx0ZC4KLQkJCQlQcmltZUJhbmsgQmxkZy4gQW5uZXgtM0YsICMyNzgtMwotCQkJCU5vbmh5dW4tZG9uZywgR2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtODMzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUVDLURFLTNEICAgKGhleCkJCUxhbXByZXkgTmV0d29ya3MsIEluYy4KLUVDREUzRCAgICAgKGJhc2UgMTYpCQlMYW1wcmV5IE5ldHdvcmtzLCBJbmMuCi0JCQkJNTggRG92ZXIgUm9hZAotCQkJCUR1cmhhbSBOSCAwMzgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtRTAtOUIgICAoaGV4KQkJU2Ftc3VuZyBlbGVjdHJvbmljcyBDTy4sIExURAotRUNFMDlCICAgICAoYmFzZSAxNikJCVNhbXN1bmcgZWxlY3Ryb25pY3MgQ08uLCBMVEQKLQkJCQk0MTYsIE1hZXRhbi0zZG9uZywgWWVvbmd0b25nLWd1LAotCQkJCVN1d29uLUNpdHkgR3llb25nZ2ktZG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FQy1FNS01NSAgIChoZXgpCQlIaXJzY2htYW5uIEF1dG9tYXRpb24KLUVDRTU1NSAgICAgKGJhc2UgMTYpCQlIaXJzY2htYW5uIEF1dG9tYXRpb24KLQkJCQlTdHV0dGdhcnRlciBTdHJhc3NlIDQ1LTUxCi0JCQkJTmVja2FydGVuemxpbmdlbiBCYWRlbi1X77+9cnR0ZW1iZXJnIDcyNjU0Ci0JCQkJR0VSTUFOWQotCi1FQy1FOS0wQiAgIChoZXgpCQlTSVNURU1BIFNPTFVDT0VTIEVMRVRST05JQ0FTIExUREEgLSBFQVNZVEVDSAotRUNFOTBCICAgICAoYmFzZSAxNikJCVNJU1RFTUEgU09MVUNPRVMgRUxFVFJPTklDQVMgTFREQSAtIEVBU1lURUNICi0JCQkJUlVBIEdVRVJSQSBERSBBR1VJQVIsIDIyMAotCQkJCVNBTyBQQVVMTyBTUCAwODI3NS0yNjAKLQkJCQlCUkFaSUwKLQotRUMtRTktRjggICAoaGV4KQkJR3VhbmcgWmhvdSBUUkktU1VOIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgIENvLiwgTHRkCi1FQ0U5RjggICAgIChiYXNlIDE2KQkJR3VhbmcgWmhvdSBUUkktU1VOIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgIENvLiwgTHRkCi0JCQkJOXRoIGZsb29yIEd1YW5nemhvdSBpbmZvIHBvcnQgYnVpbGRpbmcgQiwgS2V5dW4gUm9hZCwgVGlhbmhlIERpc3RyaWN0LCBHdWFuZ3pob3UgLFBSQwotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjY1Ci0JCQkJQ0hJTkEKLQotRUMtRjItMzYgICAoaGV4KQkJTkVPTU9OVEFOQSBFTEVDVFJPTklDUwotRUNGMjM2ICAgICAoYmFzZSAxNikJCU5FT01PTlRBTkEgRUxFQ1RST05JQ1MKLQkJCQlNbGFkb3N0LTQsIGJsLiA0ODMsIG1hZy4gMTMKLQkJCQlTb2ZpYSAgMTcxNQotCQkJCUJVTEdBUklBCi0KLUVDLUZBLUFBICAgKGhleCkJCVRoZSBJTVMgQ29tcGFueQotRUNGQUFBICAgICAoYmFzZSAxNikJCVRoZSBJTVMgQ29tcGFueQotCQkJCTI5MjkgRS4gSW1wZXJpYWwgSGlnaHdheQotCQkJCVN1aXRlIDE3MAotCQkJCUJyZWEgQ0EgOTI4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLUZFLTdFICAgKGhleCkJCUJsdWVSYWRpb3MsIEluYy4KLUVDRkU3RSAgICAgKGJhc2UgMTYpCQlCbHVlUmFkaW9zLCBJbmMuCi0JCQkJNzE3MyBTLiBIYXZhbmEgU3RyZWV0LCBTdWl0ZSA2MDAKLQkJCQlFbmdsZXdvb2QgQ29sb3JhZG8gODAxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUYwLTAyLTQ4ICAgKGhleCkJCVNtYXJ0ZUJ1aWxkaW5nCi1GMDAyNDggICAgIChiYXNlIDE2KQkJU21hcnRlQnVpbGRpbmcKLQkJCQkzMjY3IEJlZSBDYXZlIFJvYWQKLQkJCQkxMDctMTczCi0JCQkJQXVzdGluIFRYIDc4NzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC0yNC0wOCAgIChoZXgpCQlUYWxhcmlzIChTd2VkZW4pIEFCCi1GMDI0MDggICAgIChiYXNlIDE2KQkJVGFsYXJpcyAoU3dlZGVuKSBBQgotCQkJCVRhbGpzIFNvZHJhIEluZHVzdHJpb21yYWRlCi0JCQkJRmxlbiAgNjQyODQKLQkJCQlTV0VERU4KLQotRjAtMjUtNzIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRjAyNTcyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtMjYtNEMgICAoaGV4KQkJRHIuIFNpZ3Jpc3QgQUcKLUYwMjY0QyAgICAgKGJhc2UgMTYpCQlEci4gU2lncmlzdCBBRwotCQkJCUhvZnVybGlzdHJhc3NlIDEKLQkJCQlFbm5ldGLvv71yZ2VuICA2MzczCi0JCQkJU1dJVFpFUkxBTkQKLQotRjAtMkEtNjEgICAoaGV4KQkJV2FsZG8gTmV0d29ya3MsIEluYy4KLUYwMkE2MSAgICAgKGJhc2UgMTYpCQlXYWxkbyBOZXR3b3JrcywgSW5jLgotCQkJCTQ1MDUgU3BpY2V3b29kIFNwcmluZ3MgUmQKLQkJCQlTdWl0ZSAzMzMKLQkJCQlBdXN0aW4gVGV4YXMgNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUYwLTJGLUQ4ICAgKGhleCkJCUJpMi1WaXNpb24KLUYwMkZEOCAgICAgKGJhc2UgMTYpCQlCaTItVmlzaW9uCi0JCQkJMTYtNTA0LCAyMS1iYW4sIFNoaW1vbWFydWtvIDQtY2hvbWUsIE9vdGEta3UKLQkJCQlUb2t5byAgMTQ2LTAwOTIKLQkJCQlKQVBBTgotCi1GMC00My0zNSAgIChoZXgpCQlEVk4oU2hhbmdoYWkpTHRkLgotRjA0MzM1ICAgICAoYmFzZSAxNikJCURWTihTaGFuZ2hhaSlMdGQuCi0JCQkJMTFGLEhlY2h1YW4gQnVpbGRpbmcsMjAxNiBZaXNoYW4gUmQsCi0JCQkJU2hhbmdoYWkgIDIwMTEwMwotCQkJCUNISU5BCi0KLUYwLTRCLUYyICAgKGhleCkJCUpURUNIIENvbW11bmljYXRpb25zLCBJbmMuCi1GMDRCRjIgICAgIChiYXNlIDE2KQkJSlRFQ0ggQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk2NDEzIENvbmdyZXNzIEF2ZS4KLQkJCQlCb2NhIFJhdG9uIEZMIDMzNDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC00RC1BMiAgIChoZXgpCQlEZWxsIEluYy4KLUYwNERBMiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCB3YXksIE1TIFJSNS00NQotCQkJCVJvdW5kIHJvY2sgIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC01OC00OSAgIChoZXgpCQlDYXJlVmlldyBDb21tdW5pY2F0aW9ucwotRjA1ODQ5ICAgICAoYmFzZSAxNikJCUNhcmVWaWV3IENvbW11bmljYXRpb25zCi0JCQkJNDA1IFN0YXRlIEhXWSAxMjEgQllQCi0JCQkJU3VpdGUgQjI0MAotCQkJCUxld2lzdmlsbGUgIFRleGFzIDc1MDY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC01RC04OSAgIChoZXgpCQlQUklWQVRFCi1GMDVEODkgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLUYwLTYyLTgxICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLUYwNjI4MSAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZC4KLQkJCQlSb3NldmlsbGUgQ2FsaWZvcm5pYSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtNjUtREQgICAoaGV4KQkJUHJpbWF4IEVsZWN0cm9uaWNzIEx0ZC4KLUYwNjVERCAgICAgKGJhc2UgMTYpCQlQcmltYXggRWxlY3Ryb25pY3MgTHRkLgotCQkJCTY2OSwgUnVleSBLdWFuZyBSb2FkLCBOZWlodQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1GMC02OC01MyAgIChoZXgpCQlJbnRlZ3JhdGVkIENvcnBvcmF0aW9uCi1GMDY4NTMgICAgIChiYXNlIDE2KQkJSW50ZWdyYXRlZCBDb3Jwb3JhdGlvbgotCQkJCTMvRiwgU2h1biBPbiBDb21tZXJjaWFsIEJsZGcuLCAKLQkJCQkxMTItMTE0IERlcyBWb2V1eCBSb2FkLCBDLiwKLQkJCQlDZXRucmFsLCAgCi0JCQkJSE9ORyBLT05HCi0KLUYwLTc3LUQwICAgKGhleCkJCVhjZWxsZW4KLUYwNzdEMCAgICAgKGJhc2UgMTYpCQlYY2VsbGVuCi0JCQkJMTVGIEtJTlMgVG93ZXIgMjUtMSxKZW9uZ2phLWRvbmcsQnVuZ2RhbmctZ3UsCi0JCQkJU2VvbmduYW0gR3llb25nZ2kgNDYzODExCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUYwLTdCLUNCICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi1GMDdCQ0IgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgIDIwMTYxMyAKLQkJCQlDSElOQQotCi1GMC03RC02OCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLUYwN0Q2OCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFNpbmh1IDNyZCBSZC4sIE5laWh1IERpc3RyaWN0LCAKLQkJCQlUYWlwZWkgQ2l0eSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1GMC04MS1BRiAgIChoZXgpCQlJUlogQVVUT01BVElPTiBURUNITk9MT0dJRVMgTFRECi1GMDgxQUYgICAgIChiYXNlIDE2KQkJSVJaIEFVVE9NQVRJT04gVEVDSE5PTE9HSUVTIExURAotCQkJCVVuaXQgOS0xMCAyNy9GIFNlYXBvd2VyIFRvd2VyCi0JCQkJQ29uY29yZGlhIFBsYXphIDEgU2NpZW5jZSBNdXNldW0gUmQsVHNpbVNoYVRzdWkKLQkJCQlLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi1GMC04Qi1GRSAgIChoZXgpCQlDT1NURUwuLENPLkxURAotRjA4QkZFICAgICAoYmFzZSAxNikJCUNPU1RFTC4sQ08uTFRECi0JCQkJMjIzLTM5LCBTYW5nZGFld29uLURvbmcsIEp1bmd3b24tR3UKLQkJCQlTZW9uZ25hbS1zaSBLeXVuZ2dpLURvIDQ2Mi04MDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjAtOTMtM0EgICAoaGV4KQkJTnh0Q29uZWN0Ci1GMDkzM0EgICAgIChiYXNlIDE2KQkJTnh0Q29uZWN0Ci0JCQkJU2NoaWxsZXJzdHJhc3NlIDQKLQkJCQlCYWQgS2lzc2luZ2VuICA5NzY4OAotCQkJCUdFUk1BTlkKLQotRjAtOUMtQkIgICAoaGV4KQkJUmFvblRoaW5rIEluYy4KLUYwOUNCQiAgICAgKGJhc2UgMTYpCQlSYW9uVGhpbmsgSW5jLgotCQkJCTkxNiwgQnl1Y2tzYW4gRGlnaXRhbCBWYWxsZXkgMi1DaGEsIDQ4MS0xMCwgS2FzYW4tRG9uZywgS3VtY2hlb24tR3UsIAotCQkJCVNlb3VsICAxNTMtNzgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUYwLUE3LTY0ICAgKGhleCkJCUdTVCBDby4sIEx0ZC4KLUYwQTc2NCAgICAgKGJhc2UgMTYpCQlHU1QgQ28uLCBMdGQuCi0JCQkJIzkxOSwgR29zYWVrLWRvbmcsIEd3b25zZW9uLWd1LAotCQkJCVN1d29uLXNpIEd5ZW9uZ2dpLWRvIDQ0MS04MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjAtQUQtNEUgICAoaGV4KQkJR2xvYmFsc2NhbGUgVGVjaG5vbG9naWVzLCBJbmMuCi1GMEFENEUgICAgIChiYXNlIDE2KQkJR2xvYmFsc2NhbGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNUYsIE5vLiAyIEJ1aWxkaW5nLCBNaW54aW5nIEluZHVzdHJpYWwgUGFyawotCQkJCU1pbmthbmcgUmQuLCBNaW56aGkgU3QuLCBCYW9hbiBEaXN0LgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDkKLQkJCQlDSElOQQotCi1GMC1BRS01MSAgIChoZXgpCQlYaTMgQ29ycAotRjBBRTUxICAgICAoYmFzZSAxNikJCVhpMyBDb3JwCi0JCQkJMjk5IFMuIE1haW4gU3QuCi0JCQkJU3VpdGUgMTMwMAotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC1CNC03OSAgIChoZXgpCQlBcHBsZQotRjBCNDc5ICAgICAoYmFzZSAxNikJCUFwcGxlCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC1CNi1FQiAgIChoZXgpCQlQb3NsYWIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLUYwQjZFQiAgICAgKGJhc2UgMTYpCQlQb3NsYWIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk1Ri0xLCBOby40OTAgQmFubmFuIFJkLgotCQkJCVRhaXBlaSBDb3VudHkKLQkJCQlKaG9uZ2hlIENpdHkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRjAtQkMtQzggICAoaGV4KQkJTWF4SUQgKFB0eSkgTHRkCi1GMEJDQzggICAgIChiYXNlIDE2KQkJTWF4SUQgKFB0eSkgTHRkCi0JCQkJNDMgSG9tZXN0ZWFkIFJvYWQKLQkJCQlSaXZvbmlhCi0JCQkJSm9oYW5uZXNidXJnIEdhdXRlbmcgMjEyOAotCQkJCVNPVVRIIEFGUklDQQotCi1GMC1CRC1GMSAgIChoZXgpCQlTaXBvZCBJbmMuCi1GMEJERjEgICAgIChiYXNlIDE2KQkJU2lwb2QgSW5jLgotCQkJCTQ2MzMgT2xkIElyb25zaWRlcyBEcml2ZSwgIzQwMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC1CRi05NyAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi1GMEJGOTcgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMuCi0JCQkJNS0xLTEyIEtpdGFzaGluYWdhd2EgU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gIDE0MS0wMDAxCi0JCQkJSkFQQU4KLQotRjAtQzItNEMgICAoaGV4KQkJWmhlamlhbmcgRmVpWXVlIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sIEx0ZAotRjBDMjRDICAgICAoYmFzZSAxNikJCVpoZWppYW5nIEZlaVl1ZSBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlCYW90aW5nIEluZHVzdHJpYWwgUGFyaywgNTMxIEppYW9nb25nIFJvYWQKLQkJCQkgSGFuZ3pob3UgQ2l0eSBaaGVqaWFuZyBQcm92aW5jZSAzMTAwMTIKLQkJCQlDSElOQQotCi1GMC1DMi03QyAgIChoZXgpCQlNaWFueWFuZyBOZXRvcCBUZWxlY29tIEVxdWlwbWVudCBDby4sTHRkLgotRjBDMjdDICAgICAoYmFzZSAxNikJCU1pYW55YW5nIE5ldG9wIFRlbGVjb20gRXF1aXBtZW50IENvLixMdGQuCi0JCQkJTm8uMTExLEVhc3Qgc2VjdGlvbiBvZiBQdW1pbmcgU291dGggUm9hZCwKLQkJCQlIaS10ZWNoIHpvbmUsCi0JCQkJTWlhbnlhbmcgQ2l0eSBTaWNodWFuIFByb3ZpbmNlLCAgNjIxMDAwCi0JCQkJQ0hJTkEKLQotRjAtQzgtOEMgICAoaGV4KQkJTGVkZGFyVGVjaCBJbmMuCi1GMEM4OEMgICAgIChiYXNlIDE2KQkJTGVkZGFyVGVjaCBJbmMuCi0JCQkJMjc0MCBFaW5zdGVpbiBTdHJlZXQKLQkJCQlRdWViZWMgQ2l0eSAgRzFQIDRTNAotCQkJCUNBTkFEQQotCi1GMC1ENy02NyAgIChoZXgpCQlBeGVtYSBQYXNzYWdla29udHJvbGwgQUIKLUYwRDc2NyAgICAgKGJhc2UgMTYpCQlBeGVtYSBQYXNzYWdla29udHJvbGwgQUIKLQkJCQlCb3ggOTAgMjE1Ci0JCQkJU3RvY2tob2xtICAxMjAgMjMgCi0JCQkJU1dFREVOCi0KLUYwLURCLTMwICAgKGhleCkJCVlvdHRhYnl0ZQotRjBEQjMwICAgICAoYmFzZSAxNikJCVlvdHRhYnl0ZQotCQkJCTE3NTAgUy4gVGVsZWdyYXBoIFJvYWQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlCbG9vbWZpZWxkIFR3cC4gTUkgNDgzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUYwLURFLTcxICAgKGhleCkJCVNoYW5naGFpIEVETyBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLUYwREU3MSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBFRE8gVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJVW5pdCAxMjMwMiwgQnVpbGRpbmcgMTIsNDk4IEd1b3Nob3VqaW5nIFJvYWQsIFB1ZG9uZyBOZXcgQXJlYQotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi1GMC1ERS1GMSAgIChoZXgpCQlXaXN0cm9uIEluZm9Db21tIChLdW5zaGFuKUNvCi1GMERFRjEgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBJbmZvQ29tbSAoS3Vuc2hhbilDbwotCQkJCTE2OEt1blNoYW4sIAotCQkJCUppYW5nU3UgIDIxNTMwMAotCQkJCUNISU5BCi0KLUYwLUU1LUMzICAgKGhleCkJCURyYWVnZXJ3ZXJrIEFHICZhbXA7YW1wOyBDby4gS0cgYUEKLUYwRTVDMyAgICAgKGJhc2UgMTYpCQlEcmFlZ2Vyd2VyayBBRyAmYW1wO2FtcDsgQ28uIEtHIGFBCi0JCQkJTW9pc2xpbmdlciBBbGxlZSA1My01NQotCQkJCUx1ZWJlY2sgR2VybWFueSAyMzQ1MgotCQkJCUdFUk1BTlkKLQotRjAtRUMtMzkgICAoaGV4KQkJRXNzZWMKLUYwRUMzOSAgICAgKGJhc2UgMTYpCQlFc3NlYwotCQkJCVNjaG9lYnJvZWtzdHJhYXQgNDgKLQkJCQlQYWFsIExpbWJ1cmcgMzU4MwotCQkJCUJFTEdJVU0KLQotRjAtRUQtMUUgICAoaGV4KQkJQmlsa29uIEJpbGdpc2F5YXIgS29udHJvbGx1IENpaC4gSW0uTHRkLgotRjBFRDFFICAgICAoYmFzZSAxNikJCUJpbGtvbiBCaWxnaXNheWFyIEtvbnRyb2xsdSBDaWguIEltLkx0ZC4KLQkJCQlHZXJzYW4gU2FuYXlpIFNpdGVzaSA2NTguU29rYWsgTm86MTYKLQkJCQlZRU5JTUFIQUxMRS0gQkFUSUtFTlQKLQkJCQlBTktBUkEgIDA2MzcwCi0JCQkJVFVSS0VZCi0KLUYwLUYwLTAyICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi1GMEYwMDIgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLQkJCQkgTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMwotCQkJCUNISU5BCi0KLUYwLUY3LUIzICAgKGhleCkJCVBob3JtCi1GMEY3QjMgICAgIChiYXNlIDE2KQkJUGhvcm0KLQkJCQkyMjIgUmVnZW50IFN0cmVldAotCQkJCUxvbmRvbiAgVzFCIDVUUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUYwLUY4LTQyICAgKGhleCkJCUtFRUJPWCwgSW5jLgotRjBGODQyICAgICAoYmFzZSAxNikJCUtFRUJPWCwgSW5jLgotCQkJCTEwIFBvcHB5IFRyYWlsCi0JCQkJUm9sbGluZyBIaWxscyBDYWxpZm9ybmlhIDkwMjc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC1GOS1GNyAgIChoZXgpCQlJRVMgR21iSCAmYW1wOyBDby4gS0cKLUYwRjlGNyAgICAgKGJhc2UgMTYpCQlJRVMgR21iSCAmYW1wOyBDby4gS0cKLQkJCQlEYXJtY2hlciBHcnVuZCAyMgotCQkJCU1laW5lcnpoYWdlbiAgNTg1NDAKLQkJCQlHRVJNQU5ZCi0KLUY0LTAzLTIxICAgKGhleCkJCUJlTmVYdCBCLlYuCi1GNDAzMjEgICAgIChiYXNlIDE2KQkJQmVOZVh0IEIuVi4KLQkJCQlUZXIgR291d3N0cmFhdCAzCi0JCQkJQW1zdGVyZGFtIE5IIDEwOTNKWAotCQkJCU5FVEhFUkxBTkRTCi0KLUY0LTBCLTkzICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbgotRjQwQjkzICAgICAoYmFzZSAxNikJCVJlc2VhcmNoIEluIE1vdGlvbgotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDVSOQotCQkJCUNBTkFEQQotCi1GNC0xRi0wQiAgIChoZXgpCQlZQU1BQklTSEkgQ29ycG9yYXRpb24KLUY0MUYwQiAgICAgKGJhc2UgMTYpCQlZQU1BQklTSEkgQ29ycG9yYXRpb24KLQkJCQkzLTE0LTEyIEthbWlnb3UKLQkJCQlFYmluYS1jaXR5IEtBTkFHQVdBIDI0My0wNDM0Ci0JCQkJSkFQQU4KLQotRjQtMzgtMTQgICAoaGV4KQkJU2hhbmdoYWkgSG93ZWxsIEVsZWN0cm9uaWMgQ28uLEx0ZAotRjQzODE0ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEhvd2VsbCBFbGVjdHJvbmljIENvLixMdGQKLQkJCQk1LTUvRiwgQmxkZy4xLCBOby43ODggRmVuZ3poZW4gUmQuLCAKLQkJCQlTaGFuZ2hhaSAgIDIwMDQzNAotCQkJCUNISU5BCi0KLUY0LTNELTgwICAgKGhleCkJCUZBRyBJbmR1c3RyaWFsIFNlcnZpY2VzIEdtYkgKLUY0M0Q4MCAgICAgKGJhc2UgMTYpCQlGQUcgSW5kdXN0cmlhbCBTZXJ2aWNlcyBHbWJICi0JCQkJS2Fpc2Vyc3RyYXNzZSAxMDAKLQkJCQlIZXJ6b2dlbnJhdGggTlJXIDUyMTM0Ci0JCQkJR0VSTUFOWQotCi1GNC0zRS02MSAgIChoZXgpCQlTaGVuemhlbiBHb25namluIEVsZWN0cm9uaWNzIENvLiwgTHRkCi1GNDNFNjEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCTJGIEJhaXlpbmcgQnVpbGRpbmcKLQkJCQkxMDE5IyBOYWloYWkgUkQsIE5hbnNoYW4gU2VjdGlvbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNjcKLQkJCQlDSElOQQotCi1GNC0zRS05RCAgIChoZXgpCQlCZW51IE5ldHdvcmtzLCBJbmMuCi1GNDNFOUQgICAgIChiYXNlIDE2KQkJQmVudSBOZXR3b3JrcywgSW5jLgotCQkJCTMwMCBDb25jb3JkIFJkLiwgU3VpdGUgIzExMAotCQkJCUJpbGxlcmljYSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtNDItMjcgICAoaGV4KQkJUyAmIFMgUmVzZWFyY2ggSW5jLgotRjQ0MjI3ICAgICAoYmFzZSAxNikJCVMgJiBTIFJlc2VhcmNoIEluYy4KLQkJCQk4OSBBY2Nlc3MgUmQgIzEwCi0JCQkJTm9yd29vZCBNQSAwMjA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtNDUtRUQgICAoaGV4KQkJUG9ydGFibGUgSW5ub3ZhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLUY0NDVFRCAgICAgKGJhc2UgMTYpCQlQb3J0YWJsZSBJbm5vdmF0aW9uIFRlY2hub2xvZ3kgTHRkLgotCQkJCTYwMS02MDIsIDYvRiBQYXJrIEJ1aWxkaW5nLAotCQkJCTQ3NiBDYXN0bGUgUGVhayBSb2FkLAotCQkJCUtvd2xvb24gIAotCQkJCUhPTkcgS09ORwotCi1GNC00RS1GRCAgIChoZXgpCQlBY3Rpb25zIFNlbWljb25kdWN0b3IgQ28uLEx0ZC4oQ2F5bWFuIElzbGFuZHMpCi1GNDRFRkQgICAgIChiYXNlIDE2KQkJQWN0aW9ucyBTZW1pY29uZHVjdG9yIENvLixMdGQuKENheW1hbiBJc2xhbmRzKQotCQkJCVBvIEJveCAzMDlHVCxVZ2xhbmQgSG91c2UsU291dGggQ2h1cmNoIFN0cmVldCwKLQkJCQlHZW9yZ2UgVG93biBHcmFuZCBDYXltYW4gCi0JCQkJQ0FZTUFOIElTTEFORFMKLQotRjQtNTAtRUIgICAoaGV4KQkJVGVsZWNoaXBzIEluYwotRjQ1MEVCICAgICAoYmFzZSAxNikJCVRlbGVjaGlwcyBJbmMKLQkJCQlLT1JBRCBCbGRnLDEwMDAtMTIsIERhZWNoaS1Eb25nLCBHYW5nbmFtLUd1LAotCQkJCVNlb3VsICAxMzUtMjgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUY0LTU1LTk1ICAgKGhleCkJCUhFTkdCQU8gQ29ycG9yYXRpb24gTFRELgotRjQ1NTk1ICAgICAoYmFzZSAxNikJCUhFTkdCQU8gQ29ycG9yYXRpb24gTFRELgotCQkJCTh0aCBGbG9vcixUb3dlciBCLFhpbnNoZW5nIE1hbnNpb24gTm8uNSBGaW5hbmNpYWwgU3RyZWV0LAotCQkJCVhpY2hlbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAxNDAKLQkJCQlDSElOQQotCi1GNC01NS1FMCAgIChoZXgpCQlOaWNld2F5IENOQyBUZWNobm9sb2d5IENvLixMdGQuSHVuYW4gUHJvdmluY2UKLUY0NTVFMCAgICAgKGJhc2UgMTYpCQlOaWNld2F5IENOQyBUZWNobm9sb2d5IENvLixMdGQuSHVuYW4gUHJvdmluY2UKLQkJCQk1L0YsSW5ub3ZhdGlvbi1VbmRlcnRha2luZyBDZW50ZXIsSHVhbkJhbyBJbmR1c3RyaWFsIFBhcmssMTk5IyxaaGVuSHVhIFJvYWQsCi0JCQkJQ2hhbmdzaGEgSHVuYW4gNDEwMTE2Ci0JCQkJQ0hJTkEKLQotRjQtNUYtRDQgICAoaGV4KQkJQ2lzY28gU1BWVEcKLUY0NUZENCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC01Ri1GNyAgIChoZXgpCQlEUSBUZWNobm9sb2d5IEluYy4KLUY0NUZGNyAgICAgKGJhc2UgMTYpCQlEUSBUZWNobm9sb2d5IEluYy4KLQkJCQk1MTExIEpvaG5zb24gRHJpdmUKLQkJCQlQbGVhc2FudG9uIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC02My00OSAgIChoZXgpCQlEaWZmb24gQ29ycG9yYXRpb24KLUY0NjM0OSAgICAgKGJhc2UgMTYpCQlEaWZmb24gQ29ycG9yYXRpb24KLQkJCQlEaWdpdGFsIFRvd2VyIEFzdG9uIDE1MDUKLQkJCQk1MDUtMTUgR2FzYW4sIEd1ZW1jaGVvbgotCQkJCVNlb3VsICAxNTM4MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjQtNkQtMDQgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi1GNDZEMDQgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRjQtNzYtMjYgICAoaGV4KQkJVmlsdGVjaG1lZGEgVUFCIAotRjQ3NjI2ICAgICAoYmFzZSAxNikJCVZpbHRlY2htZWRhIFVBQiAKLQkJCQlLYWx2YXJpanUgMTI1Ci0JCQkJVmlsbml1cyAgTFQtMDgyMjEKLQkJCQlMSVRIVUFOSUEKLQotRjQtOTQtNjEgICAoaGV4KQkJTmV4R2VuIFN0b3JhZ2UKLUY0OTQ2MSAgICAgKGJhc2UgMTYpCQlOZXhHZW4gU3RvcmFnZQotCQkJCTQwMCBDZW50ZW5uaWFsIEJsdmQuCi0JCQkJTG91aXN2aWxsZSBDTyA4MDAyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtOUYtNTQgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotRjQ5RjU0ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjQtQTUtMkEgICAoaGV4KQkJSGF3YSBUZWNobm9sb2dpZXMgSW5jCi1GNEE1MkEgICAgIChiYXNlIDE2KQkJSGF3YSBUZWNobm9sb2dpZXMgSW5jCi0JCQkJMzM2IEhheWVzIFN0Ci0JCQkJU2FuIEZyYW5jaXNjbyBDYWxpZm9ybmlhIDk0MTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC1BQy1DMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1GNEFDQzEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtQjEtNjQgICAoaGV4KQkJTGlnaHRuaW5nIFRlbGVjb21tdW5pY2F0aW9ucyBUZWNobm9sb2d5IENvLiBMdGQKLUY0QjE2NCAgICAgKGJhc2UgMTYpCQlMaWdodG5pbmcgVGVsZWNvbW11bmljYXRpb25zIFRlY2hub2xvZ3kgQ28uIEx0ZAotCQkJCVJvb20gMTMwMiwgVGlhbu+/ve+/vWFuIEhpLVRlY2ggUGxhemEgVG93ZXIgQSwgRnV0aWFuIERpc3RyaWN0LCAKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotRjQtQjUtNDkgICAoaGV4KQkJWWVhc3RhciBUZWNobm9sb2d5IENvLiwgTHRkLgotRjRCNTQ5ICAgICAoYmFzZSAxNikJCVllYXN0YXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tMjAyLCBOby4yMyBXYW5naGFpIFJvYWQsIDJuZCBTb2Z0d2FyZSBQYXJrLCAKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLUY0LUM3LTE0ICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLUY0QzcxNCAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTEwMTA4Ci0JCQkJQ0hJTkEKLQotRjQtQzctOTUgICAoaGV4KQkJV0VZIEVsZWt0cm9uaWsgQUcKLUY0Qzc5NSAgICAgKGJhc2UgMTYpCQlXRVkgRWxla3Ryb25payBBRwotCQkJCURvcmZzdHJhc3NlIDU3Ci0JCQkJVW50ZXJlbmdzdHJpbmdlbiBadXJpY2ggODEwMwotCQkJCVNXSVRaRVJMQU5ECi0KLUY0LUNBLUU1ICAgKGhleCkJCUZSRUVCT1ggU0EKLUY0Q0FFNSAgICAgKGJhc2UgMTYpCQlGUkVFQk9YIFNBCi0JCQkJOCBydWUgZGUgbGEgVmlsbGUgbCdFdmVxdWUKLQkJCQlQQVJJUyBJZEYgNzUwMDgKLQkJCQlGUkFOQ0UKLQotRjQtQ0UtNDYgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1GNENFNDYgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC1EOS1GQiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENPLiwgTFRECi1GNEQ5RkIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDTy4sIExURAotCQkJCTQxNiwgTWFldGFuLTNkb25nLCBZZW9uZ3RvbmctZ3UsCi0JCQkJU3V3b24tQ2l0eSBHeWVvbmdnaS1kbyA0NDMtNzQyCi0JCQkJU3V3b24gR3llb25nZ2ktZG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GNC1EQy00RCAgIChoZXgpCQlCZWlqaW5nIENDRCBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLCBMdGQKLUY0REM0RCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIENDRCBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQkxMDcgRG9uZ3NpIE5vcnRoIFN0cmVldCwgRG9uZ2NoZW5nIERpc3RyaWN0LCAKLQkJCQlCZWlqaW5nIFRpYW4gSGFpIENvbW1lcmNpYWwgQnVpbGRpbmcsIFJvb20gODAyLCBCbG9jayBBCi0JCQkJQmVpamluZyAgMTAwMDA3Ci0JCQkJQ0hJTkEKLQotRjQtREMtREEgICAoaGV4KQkJWmh1aGFpIEppYWhlIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sIGxpbWl0ZWQKLUY0RENEQSAgICAgKGJhc2UgMTYpCQlaaHVoYWkgSmlhaGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiwgbGltaXRlZAotCQkJCTQvRixFYXN0IE9mIEI1LFNvdXJ0aCBTb2Z0d2FyZSBQYXJrLFRhbmdqaWEsCi0JCQkJWmh1aGFpIEd1YW5nZG9uZyA1MTkwODUKLQkJCQlDSElOQQotCi1GNC1FMS00MiAgIChoZXgpCQlEZWx0YSBFbGVrdHJvbmlrYSBCVgotRjRFMTQyICAgICAoYmFzZSAxNikJCURlbHRhIEVsZWt0cm9uaWthIEJWCi0JCQkJVmlzc2Vyc2RpamsgNAotCQkJCVppZXJpa3plZSAgNDMwMSBORAotCQkJCU5FVEhFUkxBTkRTCi0KLUY0LUVDLTM4ICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotRjRFQzM4ICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCTEtNkYsIEJ1aWxkaW5nIDIsIFBpbmdzaGFuZGF5dWFuIEluZHVzdHJpYWwsIFNvdXRoIFpvbmUsCi0JCQkJVGFveXVhbiBTdHJlZXQsIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi1GNC1GQy0zMiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotRjRGQzMyICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC0wMy0zMiAgIChoZXgpCQlLaG9tcAotRjgwMzMyICAgICAoYmFzZSAxNikJCUtob21wCi0JCQkJUnVhIEpvZSBDb2xsYe+/vW8sIDE2MwotCQkJCVN0YSBNb25pY2EKLQkJCQlGbG9yaWFu77+9cG9saXMgU2FudGEgQ2F0YXJpbmEgODgwMzctMDEwCi0JCQkJQlJBWklMCi0KLUY4LTBGLTQxICAgKGhleCkJCVdpc3Ryb24gSW5mb0NvbW0oWmhvbmdTaGFuKSBDb3Jwb3JhdGlvbgotRjgwRjQxICAgICAoYmFzZSAxNikJCVdpc3Ryb24gSW5mb0NvbW0oWmhvbmdTaGFuKSBDb3Jwb3JhdGlvbgotCQkJCVRvcmNoIEhpZ2gtdGVjaCBJbmR1c3RyaWFsIERldmVsb3BtZW50IFpvbmUsIAotCQkJCVpob25nU2hhbiBHdWFuZ2RvbmcgNTI4NDM3Ci0JCQkJQ0hJTkEKLQotRjgtMEYtODQgICAoaGV4KQkJTmF0dXJhbCBTZWN1cml0eSBTQVMKLUY4MEY4NCAgICAgKGJhc2UgMTYpCQlOYXR1cmFsIFNlY3VyaXR5IFNBUwotCQkJCTE2NSBBdmVudWUgZGUgQnJldGFnbmUKLQkJCQlMaWxsZSAgNTkwMDAKLQkJCQlGUkFOQ0UKLQotRjgtMTAtMzcgICAoaGV4KQkJQXRvcGlhIFN5c3RlbXMsIExQCi1GODEwMzcgICAgIChiYXNlIDE2KQkJQXRvcGlhIFN5c3RlbXMsIExQCi0JCQkJNjgxIE4uIFBsYW5vIFJvYWQKLQkJCQlTdWl0ZSAxMTkKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC0xRC05MyAgIChoZXgpCQlMb25nZGh1YShCZWlqaW5nKSBDb250cm9scyBUZWNobm9sb2d5IENvLixMdGQKLUY4MUQ5MyAgICAgKGJhc2UgMTYpCQlMb25nZGh1YShCZWlqaW5nKSBDb250cm9scyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlSb29tIDEyMDMsTGl4aWFuZyBCdWlsZGluZywgTm8uMTExIFpoaWNodW4gUm9hZCxIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDg2Ci0JCQkJQ0hJTkEKLQotRjgtMUUtREYgICAoaGV4KQkJQXBwbGUsIEluYwotRjgxRURGICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LTNELUZGICAgKGhleCkJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLUY4M0RGRiAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1GOC00Ny0yRCAgIChoZXgpCQlYMmdlbiBEaWdpdGFsIENvcnAuIEx0ZAotRjg0NzJEICAgICAoYmFzZSAxNikJCVgyZ2VuIERpZ2l0YWwgQ29ycC4gTHRkCi0JCQkJIyA4OSwgU2luZ2xvbmcgUmQgCi0JCQkJVGFveXVhbiBIc2llbgotCQkJCVBpbi1KaGVuIENpdHksICAgMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1GOC01Mi1ERiAgIChoZXgpCQlWTkwgRXVyb3BlIEFCCi1GODUyREYgICAgIChiYXNlIDE2KQkJVk5MIEV1cm9wZSBBQgotCQkJCUZpbmxhbmRzZ2F0YW4gMTAKLQkJCQlTRSAKLQkJCQlLaXN0YSAgMTY0IDc0Ci0JCQkJU1dFREVOCi0KLUY4LTY2LUYyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUY4NjZGMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LTY5LTcxICAgKGhleCkJCVNlaWJ1IEVsZWN0cmljIENvLiwKLUY4Njk3MSAgICAgKGJhc2UgMTYpCQlTZWlidSBFbGVjdHJpYyBDby4sCi0JCQkJMTQ1OC03Ci0JCQkJSGF6YW1hCi0JCQkJSGFjaGlvamkgVG9reW8gMTkzLTA5NDEKLQkJCQlKQVBBTgotCi1GOC02RS1DRiAgIChoZXgpCQlBcmN4IEluYwotRjg2RUNGICAgICAoYmFzZSAxNikJCUFyY3ggSW5jCi0JCQkJMTUxIEFtYmVyIFN0LCBVbml0IDEKLQkJCQlNYXJraGFtIE9OIEwzUiAzQjMKLQkJCQlDQU5BREEKLQotRjgtNzEtRkUgICAoaGV4KQkJVGhlIEdvbGRtYW4gU2FjaHMgR3JvdXAsIEluYy4KLUY4NzFGRSAgICAgKGJhc2UgMTYpCQlUaGUgR29sZG1hbiBTYWNocyBHcm91cCwgSW5jLgotCQkJCTg1IEJyb2FkIFN0cmVldAotCQkJCU5ldyBZb3JrIE5ldyBZb3JrIDEwMDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC03Ni05QiAgIChoZXgpCQlOZW9waXMgQ28uLCBMdGQuCi1GODc2OUIgICAgIChiYXNlIDE2KQkJTmVvcGlzIENvLiwgTHRkLgotCQkJCSM0MDEgTmVvIGJkLiwgMTk2LTQ0IEFueWFuZzctRG9uZwotCQkJCU1hbmFuLUd1Ci0JCQkJQW55YW5nIEt5b25nZ2ktRG8gNDMwLTg1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GOC03Qi03QSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotRjg3QjdBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIFVTIEhXWSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtN0ItOEMgICAoaGV4KQkJQW1wZWQgV2lyZWxlc3MKLUY4N0I4QyAgICAgKGJhc2UgMTYpCQlBbXBlZCBXaXJlbGVzcwotCQkJCTEzMDg5IFBleXRvbiBEci4gI0MzMDcKLQkJCQlDaGlubyBIaWxscyBDQSA5MTcwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtODEtMUEgICAoaGV4KQkJT1ZFUktJWgotRjg4MTFBICAgICAoYmFzZSAxNikJCU9WRVJLSVoKLQkJCQlIRVJBIDIKLQkJCQlTaXRlIGQnQXJjaGFtcHMKLQkJCQlBcmNoYW1wcyAgNzQxNjAKLQkJCQlGUkFOQ0UKLQotRjgtOEQtRUYgICAoaGV4KQkJVGVuZWJyYWV4Ci1GODhERUYgICAgIChiYXNlIDE2KQkJVGVuZWJyYWV4Ci0JCQkJMjcgRHJ5ZG9jayBBdmVudWUKLQkJCQlCb3N0b24gTUEgMDIyMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LTkxLTJBICAgKGhleCkJCUdMUCBHZXJtYW4gTGlnaHQgUHJvZHVjdHMgR21iSAotRjg5MTJBICAgICAoYmFzZSAxNikJCUdMUCBHZXJtYW4gTGlnaHQgUHJvZHVjdHMgR21iSAotCQkJCUltIFN077+9Y2tt77+9ZGxlIDEzCi0JCQkJS2FybHNiYWQgQlcgNzYzMDcKLQkJCQlHRVJNQU5ZCi0KLUY4LTkzLUYzICAgKGhleCkJCVZPTEFOUwotRjg5M0YzICAgICAoYmFzZSAxNikJCVZPTEFOUwotCQkJCTNGIElKVSBCRCA3NzAtMTMgWUVPS1NBTS1ET05HCi0JCQkJR0FOR05BTS1HVQotCQkJCVNFT1VMICAxMzUtOTI4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUY4LTlELTBEICAgKGhleCkJCUNvbnRyb2wgVGVjaG5vbG9neSBJbmMuCi1GODlEMEQgICAgIChiYXNlIDE2KQkJQ29udHJvbCBUZWNobm9sb2d5IEluYy4KLQkJCQk3NjA4IE5vcnRoIEh1ZHNvbiBBdmUKLQkJCQlPa2xhaG9tYSBDaXR5IE9LIDczMTE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC1BOS1ERSAgIChoZXgpCQlQVUlTU0FOQ0UgUExVUwotRjhBOURFICAgICAoYmFzZSAxNikJCVBVSVNTQU5DRSBQTFVTCi0JCQkJMjIyIEltcGFzc2UgTG91aXMgTO+/vXBpbmUKLQkJCQlaLkkuIEFsYmFzdWQgLSBTZWN0ZXVyIDMKLQkJCQlNb250YXViYW4gIDgyMDAwCi0JCQkJRlJBTkNFCi0KLUY4LUFDLTZEICAgKGhleCkJCURlbHRlbm5hIEx0ZAotRjhBQzZEICAgICAoYmFzZSAxNikJCURlbHRlbm5hIEx0ZAotCQkJCUZpcnN0IEZsb29yIFVuaXQgMgotCQkJCUJlbGxpbmdlciBDbG9zZQotCQkJCUNoaXBwZW5oYW0gV2lsdHNoaXJlIFNOMTUgMUJOCi0JCQkJVU5JVEVEIEtJTkdET00KLQotRjgtQjUtOTkgICAoaGV4KQkJR3Vhbmd6aG91IENITkFWUyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZAotRjhCNTk5ICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBDSE5BVlMgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlCdWxpZGluZyBDLCBpbmR1c3R5IGJhc2Ugb2YgZGlnaXRhbCBob21lIGFwcGxpY2F0aW9uIGFuZCBkZW1vbnN0cmF0aW9uICx6aG9uZ3lpIHJvYWQgR3Vhbmd6aG91IGhpZ2hlciBlZHVjYXRpb24gbWVnYSBjZW50ZXIKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDAwNgotCQkJCUNISU5BCi0KLUY4LUMwLTkxICAgKGhleCkJCUhpZ2hnYXRlcyBUZWNobm9sb2d5Ci1GOEMwOTEgICAgIChiYXNlIDE2KQkJSGlnaGdhdGVzIFRlY2hub2xvZ3kKLQkJCQkxNDE1IEhpZ2hnYXRlIEF2ZQotCQkJCUxvcyBBbmdlbGVzIENBIDkwMDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC1DNi03OCAgIChoZXgpCQlDYXJlZnVzaW9uCi1GOEM2NzggICAgIChiYXNlIDE2KQkJQ2FyZWZ1c2lvbgotCQkJCTEwMDIwIFBhY2lmaWMgTWVzYSBCbHZkCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC1ENy01NiAgIChoZXgpCQlTaW1tIFRyb25pYyBMaW1pdGVkIAotRjhENzU2ICAgICAoYmFzZSAxNikJCVNpbW0gVHJvbmljIExpbWl0ZWQgCi0JCQkJVW5pdCAzLCBXYXRlcnNpZGUKLQkJCQlDaGFybHRvbiBNZWFkIExhbmUKLQkJCQlIb2RkZXNkb24gSGVydGZvcmRzaGlyZSBFTjExIDBRUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUY4LURBLUUyICAgKGhleCkJCUJldGEgTGFzZXJNaWtlCi1GOERBRTIgICAgIChiYXNlIDE2KQkJQmV0YSBMYXNlck1pa2UKLQkJCQk4MDAxIFRlY2hub2xvZ3kgQmx2ZAotCQkJCURheXRvbiBPSCA0NTQyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtREEtRjQgICAoaGV4KQkJVGFpc2hhbiBPbmxpbmUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLUY4REFGNCAgICAgKGJhc2UgMTYpCQlUYWlzaGFuIE9ubGluZSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTQvRiBGYW5nZGEgQnVpbGRpbmcsIFNvdXRoIEFyZWEsIEhpLXRlY2ggSW5kdXN0aWFsIFBhcmssIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1GOC1EQi03RiAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLUY4REI3RiAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4yMyBYaW5naHVhIFJvYWQKLQkJCQlUYW95dWFuIENpdHkKLQkJCQlUYW95dWFuIENvdW50eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1GOC1EQy03QSAgIChoZXgpCQlWYXJpc2NpdGUgTFRECi1GOERDN0EgICAgIChiYXNlIDE2KQkJVmFyaXNjaXRlIExURAotCQkJCTYwIE1lZGluYXQgSGF5ZWh1ZGltIHN0LgotCQkJCUhlcnR6ZWxpYSAgNDY3MjIKLQkJCQlJU1JBRUwKLQotRjgtRTktNjggICAoaGV4KQkJRWdrZXIgS2Z0LgotRjhFOTY4ICAgICAoYmFzZSAxNikJCUVna2VyIEtmdC4KLQkJCQlTenVnbG8gdS4gNDkuCi0JCQkJQnVkYXBlc3QgIDExNDUKLQkJCQlIVU5HQVJZCi0KLUY4LUVBLTBBICAgKGhleCkJCURpcGwuLU1hdGguIE1pY2hhZWwgUmF1Y2gKLUY4RUEwQSAgICAgKGJhc2UgMTYpCQlEaXBsLi1NYXRoLiBNaWNoYWVsIFJhdWNoCi0JCQkJS2FwZWxsZW5zdHIuIDMxCi0JCQkJQnJldHRlbiBCYVfvv70gNzUwMTUKLQkJCQlHRVJNQU5ZCi0KLUY4LUYwLTE0ICAgKGhleCkJCVJhY2tXYXJlIEluYy4KLUY4RjAxNCAgICAgKGJhc2UgMTYpCQlSYWNrV2FyZSBJbmMuCi0JCQkJNDQwNTMgRnJlbW9udCBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LUZCLTJGICAgKGhleCkJCVNhbnR1ciBDb3Jwb3JhdGlvbgotRjhGQjJGICAgICAoYmFzZSAxNikJCVNhbnR1ciBDb3Jwb3JhdGlvbgotCQkJCTQwOTMxIEVuY3ljbG9wZWRpYSBDaXJjbGUKLQkJCQlGcmVtb250IENhbGlmb3JuaWEgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLTA4LTc3ICAgKGhleCkJCVByZW50a2UgUm9taWNoIENvbXBhbnkKLUZDMDg3NyAgICAgKGJhc2UgMTYpCQlQcmVudGtlIFJvbWljaCBDb21wYW55Ci0JCQkJMTAyMiBIZXlsIFJkCi0JCQkJV29vc3RlciBPSCA0NDY5MQotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtMEYtRTYgICAoaGV4KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4gCi1GQzBGRTYgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4gCi0JCQkJMS03LTEgS29uYW4KLQkJCQlNaW5hdG8ta3UgIFRva3lvIDEwOC0wMDc1IAotCQkJCUpBUEFOCi0KLUZDLTEwLUJEICAgKGhleCkJCUNvbnRyb2wgU2lzdGVtYXRpemFkbyBTLkEuCi1GQzEwQkQgICAgIChiYXNlIDE2KQkJQ29udHJvbCBTaXN0ZW1hdGl6YWRvIFMuQS4KLQkJCQlDcmEgNDMgTiAzMSA1MgotCQkJCU1lZGVsbGluIEFudGlvcXVpYSAxMDEwMQotCQkJCUNPTE9NQklBCi0KLUZDLTFGLUMwICAgKGhleCkJCUVVUkVDQU0KLUZDMUZDMCAgICAgKGJhc2UgMTYpCQlFVVJFQ0FNCi0JCQkJQkFUIDkgLSBNaW5pcGFyYwotCQkJCTYgQXZlbnVlIGRlcyBBbmRlcwotCQkJCUxFUyBVTElTICA5MTk0MAotCQkJCUZSQU5DRQotCi1GQy0yRS0yRCAgIChoZXgpCQlMb3JvbSBJbmR1c3RyaWFsIENvLkxURC4KLUZDMkUyRCAgICAgKGJhc2UgMTYpCQlMb3JvbSBJbmR1c3RyaWFsIENvLkxURC4KLQkJCQlGMS4xMyxSbS4yLE5vLjc4LFNlYy4yLEFuLUhvUmQuCi0JCQkJVGFpcGVpICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUZDLTJGLTQwICAgKGhleCkJCUNhbHhlZGEsIEluYy4KLUZDMkY0MCAgICAgKGJhc2UgMTYpCQlDYWx4ZWRhLCBJbmMuCi0JCQkJNzAwMCBOb3J0aCBNb3BhYyBFeHByZXNzd2F5Ci0JCQkJU3VpdGUgMjUwCi0JCQkJQXVzdGluIFRYIDc4NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GQy0zNS05OCAgIChoZXgpCQlGYXZpdGUgSW5jLgotRkMzNTk4ICAgICAoYmFzZSAxNikJCUZhdml0ZSBJbmMuCi0JCQkJTm8uMTksIExhbmUgNzgsIFlhbmhlIFN0LiwKLQkJCQlKaHViZWkgQ2l0eSBIc2luY2h1IENvdW50eSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUZDLTQ0LTYzICAgKGhleCkJCVVuaXZlcnNhbCBBdWRpbwotRkM0NDYzICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBBdWRpbwotCQkJCTE3MDAgR3JlZW4gSGlsbHMgUm9hZAotCQkJCVNjb3R0cyBWYWxsZXkgQ0EgOTUwNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLTVCLTI0ICAgKGhleCkJCVdlaWJlbCBTY2llbnRpZmljIEEvUwotRkM1QjI0ICAgICAoYmFzZSAxNikJCVdlaWJlbCBTY2llbnRpZmljIEEvUwotCQkJCVNvbHZhbmcgMzAKLQkJCQlBbGxlcm9lZCAgMzQ1MAotCQkJCURFTk1BUksKLQotRkMtNjEtOTggICAoaGV4KQkJTkVDIFBlcnNvbmFsIFByb2R1Y3RzLCBMdGQKLUZDNjE5OCAgICAgKGJhc2UgMTYpCQlORUMgUGVyc29uYWwgUHJvZHVjdHMsIEx0ZAotCQkJCTYtODAsIFNoaW1vaGFuYXphd2EgMi1jaG9tZSwKLQkJCQlZb25lemF3YS1zaGkgWWFtYWdhdGEgOTkyLTg1MjAKLQkJCQlKQVBBTgotCi1GQy02OC0zRSAgIChoZXgpCQlEaXJlY3RlZCBQZXJjZXB0aW9uLCBJbmMKLUZDNjgzRSAgICAgKGJhc2UgMTYpCQlEaXJlY3RlZCBQZXJjZXB0aW9uLCBJbmMKLQkJCQk4OTBDIENvd2FuIFJvYWQKLQkJCQlCdXJsaW5nYW1lIENhbGlmb3JuaWEgOTQwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLTZDLTMxICAgKGhleCkJCUxYaW5zdHJ1bWVudHMgR21iSAotRkM2QzMxICAgICAoYmFzZSAxNikJCUxYaW5zdHJ1bWVudHMgR21iSAotCQkJCUhlcnJlbmJlcmdlciBTdHIuIDEzMAotCQkJCUJvZWJsaW5nZW4gIDcxMDM0Ci0JCQkJR0VSTUFOWQotCi1GQy03NS1FNiAgIChoZXgpCQlIYW5kcmVhbW5ldAotRkM3NUU2ICAgICAoYmFzZSAxNikJCUhhbmRyZWFtbmV0Ci0JCQkJIzEyMDkgTWFyaW9Ub3dlciwgMjIyLTEyLCBHdXJvLURvbmcsIEd1cm8tR3UKLQkJCQlTZW91bCBHdXJvLUd1IDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRkMtN0MtRTcgICAoaGV4KQkJRkNJIFVTQSBMTEMKLUZDN0NFNyAgICAgKGJhc2UgMTYpCQlGQ0kgVVNBIExMQwotCQkJCTgyNSBPbGQgVHJhaWwgUm9hZAotCQkJCUV0dGVycyBQQSAxNzMxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtODMtMjkgICAoaGV4KQkJVHJlaSB0ZWNobmljcwotRkM4MzI5ICAgICAoYmFzZSAxNikJCVRyZWkgdGVjaG5pY3MKLQkJCQk4MDEgTm9ydGhwb2ludCBQa3d5Ci0JCQkJU3RlIDU0Ci0JCQkJV2VzdCBQYWxtIEJlYWNoIEZsb3JpZGEgMzM0MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLThFLTdFICAgKGhleCkJCVBhY2UgRnJhbmNlCi1GQzhFN0UgICAgIChiYXNlIDE2KQkJUGFjZSBGcmFuY2UKLQkJCQkzMywgcnVlIGRlIFZlcmR1bgotCQkJCUJQNDQKLQkJCQlTdXJlc25lcyAgOTIxNTIKLQkJCQlGUkFOQ0UKLQotRkMtQTEtM0UgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotRkNBMTNFICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRkMtQTgtNDEgICAoaGV4KQkJQXZheWEsIEluYwotRkNBODQxICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtQUYtNkEgICAoaGV4KQkJQ29uZW10ZWNoIEFCCi1GQ0FGNkEgICAgIChiYXNlIDE2KQkJQ29uZW10ZWNoIEFCCi0JCQkJVG9yc2hhbW5zZ2F0YW4gMzUKLQkJCQlLaXN0YSAgU0UtMTY0NDAKLQkJCQlTV0VERU4KLQotRkMtQ0MtRTQgICAoaGV4KQkJQXNjb24gTHRkLgotRkNDQ0U0ICAgICAoYmFzZSAxNikJCUFzY29uIEx0ZC4KLQkJCQkxLTE1LTI3IE1pbmF0by1tYWNoaSAKLQkJCQlGdWt1eWFtYSDvv71zaGkgSGlyb3NoaW1hLWtlbiA3MjEtMDk2NAotCQkJCUpBUEFOCi0KLUZDLUNGLTYyICAgKGhleCkJCUlCTSBDb3JwCi1GQ0NGNjIgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkyMDUxIE1pc3Npb24gQ29sbGVnZSBCbHZkIAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GQy1ENC1GMiAgIChoZXgpCQlUaGUgQ29jYSBDb2xhIENvbXBhbnkKLUZDRDRGMiAgICAgKGJhc2UgMTYpCQlUaGUgQ29jYSBDb2xhIENvbXBhbnkKLQkJCQlPbmUgQ29jYSBDb2xhIFBsYXphCi0JCQkJQXRsYW50YSBHQSAzMDMxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtRDQtRjYgICAoaGV4KQkJTWVzc2FuYSBBaXIuUmF5IENvbmRpdGlvbmluZyBzLnIubC4KLUZDRDRGNiAgICAgKGJhc2UgMTYpCQlNZXNzYW5hIEFpci5SYXkgQ29uZGl0aW9uaW5nIHMuci5sLgotCQkJCVZpYSBWZW5lemlhIDE4Ci0JCQkJT2RlcnpvIFRWIDMxMDQ2Ci0JCQkJSVRBTFkKLQotRkMtRTEtOTIgICAoaGV4KQkJU2ljaHVhbiBKaW53YW5ndG9uZyBFbGVjdHJvbmljIFNjaWVuY2UmVGVjaG5vbG9neSBDbywuTHRkCi1GQ0UxOTIgICAgIChiYXNlIDE2KQkJU2ljaHVhbiBKaW53YW5ndG9uZyBFbGVjdHJvbmljIFNjaWVuY2UmVGVjaG5vbG9neSBDbywuTHRkCi0JCQkJTm8uMjgsWGluY2h1YW5nIFJkLixXZXN0IEdhb3hpbiBEaXN0cmljdAotCQkJCUNoZW5nZHUgU2ljaHVhbiA2MTE3MzEKLQkJCQlDSElOQQotCi1GQy1FMi0zRiAgIChoZXgpCQlDTEFZIFBBS1kgU1BBCi1GQ0UyM0YgICAgIChiYXNlIDE2KQkJQ0xBWSBQQUtZIFNQQQotCQkJCVZpYSBQYXN0cmVuZ28gMy9iCi0JCQkJU2VyaWF0ZSBCZXJnYW1vIDI0MDY4Ci0JCQkJSVRBTFkKLQotRkMtRTUtNTcgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUZDRTU1NyAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1IE91IDkwNTkwCi0JCQkJRklOTEFORAotCi1GQy1FRC1COSAgIChoZXgpCQlBcnJheWVudAotRkNFREI5ICAgICAoYmFzZSAxNikJCUFycmF5ZW50Ci0JCQkJNTcwIEVsIENhbWlubyBSZWFsICMxNTAtNDE5Ci0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GQy1GMS1DRCAgIChoZXgpCQlPUFRFWC1GQSBDTy4sTFRELgotRkNGMUNEICAgICAoYmFzZSAxNikJCU9QVEVYLUZBIENPLixMVEQuCi0JCQkJOTEgQXdhdGEtY2hvCi0JCQkJQ2h1ZG9qaSBTaGltb2d5by1rdQotCQkJCUt5b3RvICA2MDAtODgxNQotCQkJCUpBUEFOCi0KLUZDLUZBLUY3ICAgKGhleCkJCVNoYW5naGFpIEJhdWQgRGF0YSBDb21tdW5pY2F0aW9uIENvLixMdGQuCi1GQ0ZBRjcgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgQmF1ZCBEYXRhIENvbW11bmljYXRpb24gQ28uLEx0ZC4KLQkJCQlOTy4xMjMgSlVMSSBSRAotCQkJCVBVRE9ORyBaSEFOR0pJQU5HIEhJR0gtVEVDSCBQQVJLCi0JCQkJU0hBTkdIQUkgIDIwMTIwMwotCQkJCUNISU5BCi0KLUZDLUZCLUZCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUZDRkJGQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGF0YS9vdWkudHh0IGIvY2xpL2NsaS9kYXRhL291aS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDc5ZDQwMDcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kYXRhL291aS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMDM4NzcgKzAsMCBAQAotCi1PVUkJCQkJT3JnYW5pemF0aW9uCi1jb21wYW55X2lkCQkJT3JnYW5pemF0aW9uCi0JCQkJQWRkcmVzcwotCi0KLTAwLTAwLTAwICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDAgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQlNL1MgMTA1LTUwQwotCQkJCTgwMCBQSElMTElQUyBST0FECi0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMDEgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDAwMSAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCVpFUk9YIFNZU1RFTVMgSU5TVElUVVRFCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wMiAgIChoZXgpCQlYRVJPWCBDT1JQT1JBVElPTgotMDAwMDAyICAgICAoYmFzZSAxNikJCVhFUk9YIENPUlBPUkFUSU9OCi0JCQkJWEVST1ggU1lTVEVNUyBJTlNUSVRVVEUKLQkJCQlNL1MgMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRAotCQkJCVdFQlNURVIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTAzICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDMgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQlaRVJPWCBTWVNURU1TIElOU1RJVFVURQotCQkJCU0vUyAxMDUtNTBDRVcgQVZFTlVFIDgwMCBQSElMTElQUyBST0FECi0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMDQgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDAwNCAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCU9GRklDRSBTWVNURU1TIERJVklTSU9OCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQ0Ci0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMDUgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDAwNSAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCU9GRklDRSBTWVNURU1TIERJVklTSU9OCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wNiAgIChoZXgpCQlYRVJPWCBDT1JQT1JBVElPTgotMDAwMDA2ICAgICAoYmFzZSAxNikJCVhFUk9YIENPUlBPUkFUSU9OCi0JCQkJT0ZGSUNFIFNZU1RFTVMgRElWSVNJT04KLQkJCQlNL1MgMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRDQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wNyAgIChoZXgpCQlYRVJPWCBDT1JQT1JBVElPTgotMDAwMDA3ICAgICAoYmFzZSAxNikJCVhFUk9YIENPUlBPUkFUSU9OCi0JCQkJT0ZGSUNFIFNZU1RFTVMgRElWSVNJT04KLQkJCQlNL1MgMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRAotCQkJCVdFQlNURVIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTA4ICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDggICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQlPRkZJQ0UgU1lTVEVNUyBESVZJU0lPTgotCQkJCU0vUy8gMTA1LTUwQyA4MDAgUEhJTExJUFMgUk9BRAotCQkJCVdFQlNURVIgTlkgMTQ1ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTA5ICAgKGhleCkJCVhFUk9YIENPUlBPUkFUSU9OCi0wMDAwMDkgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUE9SQVRJT04KLQkJCQkxMzUwIEpFRkZFUlNPTiBST0FECi0JCQkJUk9DSEVTVEVSIE5ZIDE0NjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wQSAgIChoZXgpCQlPTVJPTiBUQVRFSVNJIEVMRUNUUk9OSUNTIENPLgotMDAwMDBBICAgICAoYmFzZSAxNikJCU9NUk9OIFRBVEVJU0kgRUxFQ1RST05JQ1MgQ08uCi0JCQkJU0VDVElPTiBORkYsIFNZU1RFTSBSJkQgTEFCUy4KLQkJCQlSRVNFQVJDSCAmIFRFQ0guIEFTU0VTU01OVCBESVYgU0hJTU9LQUlJCi0JCQkJS1lPVE8gNjE3IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDAtMEIgICAoaGV4KQkJTUFUUklYIENPUlBPUkFUSU9OCi0wMDAwMEIgICAgIChiYXNlIDE2KQkJTUFUUklYIENPUlBPUkFUSU9OCi0JCQkJMTIwMyBORVcgSE9QRSBST0FECi0JCQkJUkFMRUlHSCBOT1JUSCBDQVJPTElOQSAgMjc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0wQyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDAwMEMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTBEICAgKGhleCkJCUZJQlJPTklDUyBMVEQuCi0wMDAwMEQgICAgIChiYXNlIDE2KQkJRklCUk9OSUNTIExURC4KLQkJCQlNQVRBTSBURUNITk9MT0dZIENFTlRFUgotCQkJCUhBSUZBIDMxOTA1Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAwLTBFICAgKGhleCkJCUZVSklUU1UgTElNSVRFRAotMDAwMDBFICAgICAoYmFzZSAxNikJCUZVSklUU1UgTElNSVRFRAotCQkJCU11c2FzaGkta29zdWdpIFRvd2VyIFBsYWNlIEJsZGcuLAotCQkJCUtvc3VnaS1jaG8gMS1jaG9tZSxOYWthaGFyYS1rdQotCQkJCUtBV0FTQUtJIDIxMSBLYW5hZ2F3YSAKLQkJCQlKQVBBTgotCi0wMC0wMC0wRiAgIChoZXgpCQlORVhULCBJTkMuCi0wMDAwMEYgICAgIChiYXNlIDE2KQkJTkVYVCwgSU5DLgotCQkJCTM0NzUgREVFUiBDUkVFSyBST0FECi0JCQkJUEFMTyBBTFRPIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xMCAgIChoZXgpCQlTWVRFSyBJTkMuCi0wMDAwMTAgICAgIChiYXNlIDE2KQkJU1lURUsgSU5DLgotCQkJCTEyMjUgQ0hBUkxFU1RPTiBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMTEgICAoaGV4KQkJTk9STUVSRUwgU1lTVEVNRVMKLTAwMDAxMSAgICAgKGJhc2UgMTYpCQlOT1JNRVJFTCBTWVNURU1FUwotCQkJCTU4IFJVRSBQT1RUSUVSCi0JCQkJNzgxNTAgTEUgQ0hFU05BWQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMC0xMiAgIChoZXgpCQlJTkZPUk1BVElPTiBURUNITk9MT0dZIExJTUlURUQKLTAwMDAxMiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBURUNITk9MT0dZIExJTUlURUQKLQkJCQlNQVlMQU5EUyBBVkUuIEhFTUVMIEhFTVBTVEVBRAotCQkJCUhFUlRTIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0xMyAgIChoZXgpCQlDQU1FWAotMDAwMDEzICAgICAoYmFzZSAxNikJCUNBTUVYCi0JCQkJNzUgS05FRUxBTkQgU1RSRUVUCi0JCQkJQk9TVE9OIE1BIDAyMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xNCAgIChoZXgpCQlORVRST05JWAotMDAwMDE0ICAgICAoYmFzZSAxNikJCU5FVFJPTklYCi0JCQkJMTM3MiBNQ0RPV0VMTCBCTFZELgotCQkJCVBFVFVMQU1BIENBIDk0OTUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xNSAgIChoZXgpCQlEQVRBUE9JTlQgQ09SUE9SQVRJT04KLTAwMDAxNSAgICAgKGJhc2UgMTYpCQlEQVRBUE9JTlQgQ09SUE9SQVRJT04KLQkJCQk5NzI1IERBVEFQT0lOVCBEUklWRQotCQkJCU1TIFMtMzcKLQkJCQlTQU4gQU5UT05JTyBUWCA3ODI4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMTYgICAoaGV4KQkJRFUgUE9OVCBQSVhFTCBTWVNURU1TICAgICAuCi0wMDAwMTYgICAgIChiYXNlIDE2KQkJRFUgUE9OVCBQSVhFTCBTWVNURU1TICAgICAuCi0JCQkJTUVBRExBS0UgUExBQ0UKLQkJCQlUSE9SUEUgTEVBIFJPQUQgRUdIQU0sIFNVUlJFWSBUVzIwIDhIRQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0xNyAgIChoZXgpCQlURUtFTEVDCi0wMDAwMTcgICAgIChiYXNlIDE2KQkJVEVLRUxFQwotCQkJCTI2NTQwIEFHT1VSQSBST0FECi0JCQkJQ0FMQUJBU0FTIENBIDkxMzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xOCAgIChoZXgpCQlXRUJTVEVSIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMDAwMTggICAgIChiYXNlIDE2KQkJV0VCU1RFUiBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTE2MDQwIFJFRFdPT0QgTE9ER0UgUk9BRAotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMy05MjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xOSAgIChoZXgpCQlBUFBMSUVEIERZTkFNSUNTIElOVEVSTkFUSU9OQUwKLTAwMDAxOSAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIERZTkFNSUNTIElOVEVSTkFUSU9OQUwKLQkJCQkzODAwIFNUT05FIFNDSE9PTCBST0FECi0JCQkJQU5OIEFSQk9SIE1JIDQ4MTA0LTI0OTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTFBICAgKGhleCkJCUFEVkFOQ0VEIE1JQ1JPIERFVklDRVMKLTAwMDAxQSAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBNSUNSTyBERVZJQ0VTCi0JCQkJUC5PLiBCT1ggMzQ1MwotCQkJCU0vUyAyNgotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMUIgICAoaGV4KQkJTk9WRUxMIElOQy4KLTAwMDAxQiAgICAgKGJhc2UgMTYpCQlOT1ZFTEwgSU5DLgotCQkJCTEyMiBFQVNUIDE3MDAgU09VVEgKLQkJCQlNL1M6IEUtMTItMQotCQkJCVBST1ZPIFVUIDg0NjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xQyAgIChoZXgpCQlCRUxMIFRFQ0hOT0xPR0lFUwotMDAwMDFDICAgICAoYmFzZSAxNikJCUJFTEwgVEVDSE5PTE9HSUVTCi0JCQkJMzMwIFdBUlJFTiBBVkVOVUUKLQkJCQlGUkVNT05UIENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xRCAgIChoZXgpCQlDQUJMRVRST04gU1lTVEVNUywgSU5DLgotMDAwMDFEICAgICAoYmFzZSAxNikJCUNBQkxFVFJPTiBTWVNURU1TLCBJTkMuCi0JCQkJMzUgSU5EVVNUUklBTCBXQVkKLQkJCQlQLk8uIEJPWCA1MDA1Ci0JCQkJUk9DSEVTVEVSIE5IIDAzODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0xRSAgIChoZXgpCQlURUxTSVNUIElORFVTVFJJQSBFTEVDVFJPTklDQQotMDAwMDFFICAgICAoYmFzZSAxNikJCVRFTFNJU1QgSU5EVVNUUklBIEVMRUNUUk9OSUNBCi0JCQkJUlVBIFZJTEhFTkEgREUgTU9SQUVTLCAzODAKLQkJCQlCQVJSQSBEQSBUSUpVQ0EgUklPIERFIEpBTkVJUk8sIFJKIENFUCAyCi0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLTAwLTFGICAgKGhleCkJCVRlbGNvIFN5c3RlbXMsIEluYy4KLTAwMDAxRiAgICAgKGJhc2UgMTYpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTUgQmVya3NoaXJlIFJvYWQKLQkJCQlNYW5zZmllbGQgTUEgMDIwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTIwICAgKGhleCkJCURBVEFJTkRVU1RSSUVSIERJQUIgQUIKLTAwMDAyMCAgICAgKGJhc2UgMTYpCQlEQVRBSU5EVVNUUklFUiBESUFCIEFCCi0JCQkJQk9YIDIwMjkKLQkJCQlTLTE4MyAwMiBUQUJZCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAwLTIxICAgKGhleCkJCVNVUkVNQU4gQ09NUC4gJiBDT01NVU4uIENPUlAuCi0wMDAwMjEgICAgIChiYXNlIDE2KQkJU1VSRU1BTiBDT01QLiAmIENPTU1VTi4gQ09SUC4KLQkJCQkxMEYtNSBOTy4gNywgIFNFQy4gMwotCQkJCUhTSU4gU0hFTkcgTi4gUkQuLAotCQkJCVRBSVBFSSBUQUlXQU4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDAtMjIgICAoaGV4KQkJVklTVUFMIFRFQ0hOT0xPR1kgSU5DLgotMDAwMDIyICAgICAoYmFzZSAxNikJCVZJU1VBTCBURUNITk9MT0dZIElOQy4KLQkJCQkxNzAzIE1JRERMRVNFWCBTVFJFRVQKLQkJCQlMT1dFTEwgTUEgMDE4NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTIzICAgKGhleCkJCUFCQiBJTkRVU1RSSUFMIFNZU1RFTVMgQUIKLTAwMDAyMyAgICAgKGJhc2UgMTYpCQlBQkIgSU5EVVNUUklBTCBTWVNURU1TIEFCCi0JCQkJREVQVC4gU0VJU1kvTEtTQgotCQkJCVMtNzIxIDY3IFZBU1RFUkFTCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAwLTI0ICAgKGhleCkJCUNPTk5FQ1QgQVMKLTAwMDAyNCAgICAgKGJhc2UgMTYpCQlDT05ORUNUIEFTCi0JCQkJSE9FUktBRVIgNy05Ci0JCQkJREsgMjczMCBIRVJMRVYKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC0wMC0yNSAgIChoZXgpCQlSQU1URUsgQ09SUC4KLTAwMDAyNSAgICAgKGJhc2UgMTYpCQlSQU1URUsgQ09SUC4KLQkJCQk4MTAgVy4gTUFVREUgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0yNiAgIChoZXgpCQlTSEEtS0VOIENPLiwgTFRELgotMDAwMDI2ICAgICAoYmFzZSAxNikJCVNIQS1LRU4gQ08uLCBMVEQuCi0JCQkJTUlOQU1JLU9UU1VLQQotCQkJCTItMjYtMTMsIFRPU0hJTUEtS1UKLQkJCQlUT0tZTyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTI3ICAgKGhleCkJCUpBUEFOIFJBRElPIENPTVBBTlkKLTAwMDAyNyAgICAgKGJhc2UgMTYpCQlKQVBBTiBSQURJTyBDT01QQU5ZCi0JCQkJTEFCT1JBVE9SWQotCQkJCTUtMS0xIFNISU1PUkVOSkFLVSBNSVRBS0EtU0hJLCBUT0tZTwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDAtMjggICAoaGV4KQkJUFJPRElHWSBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDAwMjggICAgIChiYXNlIDE2KQkJUFJPRElHWSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMjYwMSBDQVNFWSBEUklWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTI5ICAgKGhleCkJCUlNQyBORVRXT1JLUyBDT1JQLgotMDAwMDI5ICAgICAoYmFzZSAxNikJCUlNQyBORVRXT1JLUyBDT1JQLgotCQkJCTE2OTMxIE1JTExJS0VOIEFWRS4KLQkJCQlJUlZJTkUgQ0EgOTI3MTQtNTAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMkEgICAoaGV4KQkJVFJXIC0gU0VERC9JTlAKLTAwMDAyQSAgICAgKGJhc2UgMTYpCQlUUlcgLSBTRUREL0lOUAotCQkJCTE4MDAgR0xFTk4gQ1VSVElTUyBTVFJFRVQKLQkJCQlNL1MgREg2LzI4MjYKLQkJCQlDQVJTT04gQ0EgOTA3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTJCICAgKGhleCkJCUNSSVNQIEFVVE9NQVRJT04sIElOQwotMDAwMDJCICAgICAoYmFzZSAxNikJCUNSSVNQIEFVVE9NQVRJT04sIElOQwotCQkJCTUxNjAgQkxBWkVSIFBBUktXQVkKLQkJCQlEVUJMSU4gT0ggNDMwMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTJDICAgKGhleCkJCUFVVE9UT1RFIExJTUlURUQKLTAwMDAyQyAgICAgKGJhc2UgMTYpCQlBVVRPVE9URSBMSU1JVEVECi0JCQkJMTAwIEJFTExFVlVFIFJPQUQKLQkJCQlORVdBUksgREVMQVdBUkUgMTk3MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTJEICAgKGhleCkJCUNIUk9NQVRJQ1MgSU5DCi0wMDAwMkQgICAgIChiYXNlIDE2KQkJQ0hST01BVElDUyBJTkMKLQkJCQkyNTU4IE1PVU5UQUlOIElORFVTVFJJQUwgQkxWRAotCQkJCVRVQ0tFUiBHQSAzMDA4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMkUgICAoaGV4KQkJU09DSUVURSBFVklSQQotMDAwMDJFICAgICAoYmFzZSAxNikJCVNPQ0lFVEUgRVZJUkEKLQkJCQlaT05FIFBPUlRVQUlSRSBERSBCUkVHQUlMTE9OCi0JCQkJODM1MDAgTEEgU0VZTkUgU1VSIE1FUgotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMC0yRiAgIChoZXgpCQlUSU1FUExFWCBJTkMuCi0wMDAwMkYgICAgIChiYXNlIDE2KQkJVElNRVBMRVggSU5DLgotCQkJCTUzMCBDSEVTVE5VVCBSSURHRSBST0FECi0JCQkJV09PRENMSUZGIExBS0UgTkogMDc2NzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTMwICAgKGhleCkJCVZHIExBQk9SQVRPUlkgU1lTVEVNUyBMVEQKLTAwMDAzMCAgICAgKGJhc2UgMTYpCQlWRyBMQUJPUkFUT1JZIFNZU1RFTVMgTFRECi0JCQkJVFJJQlVORSBBVkVOVUUKLQkJCQlBTFRSSU5DSEFNLCBNQU5DSEVTVEVSLCBXQTE0IDVUUAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0zMSAgIChoZXgpCQlRUFNYIENPTU1VTklDQVRJT05TIFBUWSBMVEQKLTAwMDAzMSAgICAgKGJhc2UgMTYpCQlRUFNYIENPTU1VTklDQVRJT05TIFBUWSBMVEQKLQkJCQkzMyBSSUNIQVJEU09OIFNUUkVFVAotCQkJCVdFU1QgUEVSVEggNjAwNQotCQkJCVdFU1RFUk4gQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLTAwLTMyICAgKGhleCkJCU1hcmNvbmkgcGxjCi0wMDAwMzIgICAgIChiYXNlIDE2KQkJTWFyY29uaSBwbGMKLQkJCQkyOCBFTFNUUkVFIFdBWSwgQk9SRUhBTVdPT0QKLQkJCQlIRVJURk9SRFNISVJFIFdENiAxUlgKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLTMzICAgKGhleCkJCUVHQU4gTUFDSElORVJZIENPTVBBTlkKLTAwMDAzMyAgICAgKGJhc2UgMTYpCQlFR0FOIE1BQ0hJTkVSWSBDT01QQU5ZCi0JCQkJU09VVEggQURBTVNWSUxMRSBST0FECi0JCQkJU09NTUVSVklMTEUgTkogMDg4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTM0ICAgKGhleCkJCU5FVFdPUksgUkVTT1VSQ0VTIENPUlBPUkFUSU9OCi0wMDAwMzQgICAgIChiYXNlIDE2KQkJTkVUV09SSyBSRVNPVVJDRVMgQ09SUE9SQVRJT04KLQkJCQk2MSBFQVNUIERBR0dFVFQgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMzUgICAoaGV4KQkJU1BFQ1RSQUdSQVBISUNTIENPUlBPUkFUSU9OCi0wMDAwMzUgICAgIChiYXNlIDE2KQkJU1BFQ1RSQUdSQVBISUNTIENPUlBPUkFUSU9OCi0JCQkJICAgIE9SCi0JCQkJTEFOIE1BTlVGQUNUVVJJTkcgRU5HSU5FRVIgOTcwNyBXQVBMRVMgUwotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtMzYgICAoaGV4KQkJQVRBUkkgQ09SUE9SQVRJT04KLTAwMDAzNiAgICAgKGJhc2UgMTYpCQlBVEFSSSBDT1JQT1JBVElPTgotCQkJCTExOTYgQk9SUkVHQVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0zNyAgIChoZXgpCQlPWEZPUkQgTUVUUklDUyBMSU1JVEVECi0wMDAwMzcgICAgIChiYXNlIDE2KQkJT1hGT1JEIE1FVFJJQ1MgTElNSVRFRAotCQkJCVVOSVQgOCwgNyBXRVNUIFdBWSwKLQkJCQlCT1RMRVksT1hGT1JELCBPWDIgT0pCCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC0zOCAgIChoZXgpCQlDU1MgTEFCUwotMDAwMDM4ICAgICAoYmFzZSAxNikJCUNTUyBMQUJTCi0JCQkJMjEzNCBTT1VUSCBSSVBDSEVZCi0JCQkJU0FOVEEgQU5BIENBIDkyNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0zOSAgIChoZXgpCQlUT1NISUJBIENPUlBPUkFUSU9OCi0wMDAwMzkgICAgIChiYXNlIDE2KQkJVE9TSElCQSBDT1JQT1JBVElPTgotCQkJCUNPTVBVVEVSIERJVklTSU9OCi0JCQkJMS0xLTEgU0hJQkFVUkEsIE1JTkFUTy1LVQotCQkJCVRPS1lPIDEwNSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTNBICAgKGhleCkJCUNIWVJPTiBDT1JQT1JBVElPTgotMDAwMDNBICAgICAoYmFzZSAxNikJCUNIWVJPTiBDT1JQT1JBVElPTgotCQkJCTI2NSBTUEFHTk9MSSBST0FECi0JCQkJTUVMVklMTEUgTlkgMTE3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTNCICAgKGhleCkJCWkgQ29udHJvbHMsIEluYy4KLTAwMDAzQiAgICAgKGJhc2UgMTYpCQlpIENvbnRyb2xzLCBJbmMuCi0JCQkJMTJGIERvb25zYW4gYnVpbGRpbmcsIDEwNS03Ci0JCQkJTm9uaHl1bi1kb25nLCBHYW5nbmFtLWd1IFNlb3VsCi0JCQkJS09SRUEgMTM1LTcxNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMC0zQyAgIChoZXgpCQlBVVNQRVggU1lTVEVNUyBJTkMuCi0wMDAwM0MgICAgIChiYXNlIDE2KQkJQVVTUEVYIFNZU1RFTVMgSU5DLgotCQkJCTUyMDAgR1JFQVQgQU1FUklDQSBQS1dZCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTNEICAgKGhleCkJCVVOSVNZUwotMDAwMDNEICAgICAoYmFzZSAxNikJCVVOSVNZUwotCQkJCU1TOC0wMTAKLQkJCQlQLk8uIEJPWCA2Njg1Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxNTAtNjY4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtM0UgICAoaGV4KQkJU0lNUEFDVAotMDAwMDNFICAgICAoYmFzZSAxNikJCVNJTVBBQ1QKLQkJCQk5MjEwIFNLWSBQQVJLIENPVVJUCi0JCQkJU0FOIERJRUdPIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC0zRiAgIChoZXgpCQlTWU5UUkVYLCBJTkMuCi0wMDAwM0YgICAgIChiYXNlIDE2KQkJU1lOVFJFWCwgSU5DLgotCQkJCTI0NiBJTkRVU1RSSUFMIFdBWSBXRVNUCi0JCQkJRUFUT05UT1dOIE5KIDA3NzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00MCAgIChoZXgpCQlBUFBMSUNPTiwgSU5DLgotMDAwMDQwICAgICAoYmFzZSAxNikJCUFQUExJQ09OLCBJTkMuCi0JCQkJNDI1MSBQTFlNT1VUSCBSRCA0ODAxNQotCQkJCVBPIEJPWCA5ODYKLQkJCQlBTk4gQVJCT1IgTUkgNDgxMDYtMDk4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNDEgICAoaGV4KQkJSUNFIENPUlBPUkFUSU9OCi0wMDAwNDEgICAgIChiYXNlIDE2KQkJSUNFIENPUlBPUkFUSU9OCi0JCQkJMTc5NDUgU0tZUEFSSyBDSVJDTEUKLQkJCQlTVUlURSBFCi0JCQkJSVJWSU5FIENBIDkyNzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00MiAgIChoZXgpCQlNRVRJRVIgTUFOQUdFTUVOVCBTWVNURU1TIExURC4KLTAwMDA0MiAgICAgKGJhc2UgMTYpCQlNRVRJRVIgTUFOQUdFTUVOVCBTWVNURU1TIExURC4KLQkJCQkzIEZPVU5EQVRJT04gU1RSRUVUCi0JCQkJSVBTV0lDSCAgU1VGRk9MSyAgSVA0IDFCRwotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC00MyAgIChoZXgpCQlNSUNSTyBURUNITk9MT0dZCi0wMDAwNDMgICAgIChiYXNlIDE2KQkJTUlDUk8gVEVDSE5PTE9HWQotCQkJCTQ5MDUgRUFTVCBMQVBBTE1BCi0JCQkJQU5BSEVJTSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNDQgICAoaGV4KQkJQ0FTVEVMTEUgQ09SUE9SQVRJT04KLTAwMDA0NCAgICAgKGJhc2UgMTYpCQlDQVNURUxMRSBDT1JQT1JBVElPTgotCQkJCTMyNTUtMyBTQ09UVCBCT1VMRVZBUkQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNDUgICAoaGV4KQkJRk9SRCBBRVJPU1BBQ0UgJiBDT01NLiBDT1JQLgotMDAwMDQ1ICAgICAoYmFzZSAxNikJCUZPUkQgQUVST1NQQUNFICYgQ09NTS4gQ09SUC4KLQkJCQlDT0xPUkFETyBTUFJJTkdTIE9QRVJBVElPTgotCQkJCTEwNDQwIFNUQVRFIEhJR0hXQVkgODMKLQkJCQlDT0xPUkFETyBTUFJJTkdTIENPIDgwOTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00NiAgIChoZXgpCQlPTElWRVRUSSBOT1JUSCBBTUVSSUNBCi0wMDAwNDYgICAgIChiYXNlIDE2KQkJT0xJVkVUVEkgTk9SVEggQU1FUklDQQotCQkJCUUgMjI0MjUgQVBQTEVXQVkKLQkJCQlMSUJFUlRZIExBS0UgV0EgOTkwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTQ3ICAgKGhleCkJCU5JQ09MRVQgSU5TVFJVTUVOVFMgQ09SUC4KLTAwMDA0NyAgICAgKGJhc2UgMTYpCQlOSUNPTEVUIElOU1RSVU1FTlRTIENPUlAuCi0JCQkJNTIyNSBWRVJPTkEgUk9BRAotCQkJCU1BRElTT04gV0kgNTM3MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTQ4ICAgKGhleCkJCVNFSUtPIEVQU09OIENPUlBPUkFUSU9OCi0wMDAwNDggICAgIChiYXNlIDE2KQkJU0VJS08gRVBTT04gQ09SUE9SQVRJT04KLQkJCQk4MCBISVJPT0tBIFNISU9KSVJJLUNJVFkKLQkJCQlOQUdBTk8tS0VOCi0JCQkJSkFQQU4gMzk5LTA3Ci0JCQkJSkFQQU4KLQotMDAtMDAtNDkgICAoaGV4KQkJQVBSSUNPVCBDT01QVVRFUlMsIExURAotMDAwMDQ5ICAgICAoYmFzZSAxNikJCUFQUklDT1QgQ09NUFVURVJTLCBMVEQKLQkJCQk5MCBWSU5DRU5UIERSSVZFCi0JCQkJRURHQkFTVE9OLCBCSVJNSU5HSEFNIEIxNTJTUAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC00QSAgIChoZXgpCQlBREMgQ09ERU5PTEwgVEVDSE5PTE9HWSBDT1JQLgotMDAwMDRBICAgICAoYmFzZSAxNikJCUFEQyBDT0RFTk9MTCBURUNITk9MT0dZIENPUlAuCi0JCQkJMjAwIENPUlBPUkFURSBCTFZELiBTTy4KLQkJCQlZT05LRVJTIE5ZIDEwNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00QiAgIChoZXgpCQlJQ0wgREFUQSBPWQotMDAwMDRCICAgICAoYmFzZSAxNikJCUlDTCBEQVRBIE9ZCi0JCQkJS1VUT01PVElFIDE2LTE4Ci0JCQkJMDAzODAgSEVMU0lOS0kgIFAuTy4gQk9YIDQ1OCBTRi0wMDEwMSBIRQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTAwLTRDICAgKGhleCkJCU5FQyBDT1JQT1JBVElPTgotMDAwMDRDICAgICAoYmFzZSAxNikJCU5FQyBDT1JQT1JBVElPTgotCQkJCTctMSBTSElCQSAgNS1DSE9NRQotCQkJCU1JTkFUTy1LVQotCQkJCVRPS1lPIDEwOC0wMSAgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC00RCAgIChoZXgpCQlEQ0kgQ09SUE9SQVRJT04KLTAwMDA0RCAgICAgKGJhc2UgMTYpCQlEQ0kgQ09SUE9SQVRJT04KLQkJCQk2NEogUFJJTkNFVE9OLUhJR0hUU1RPV04gUkQKLQkJCQkjMTIxCi0JCQkJUFJJTkNFVE9OIEpVTkNUSU9OIE5KIDA4NTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC00RSAgIChoZXgpCQlBTVBFWCBDT1JQT1JBVElPTgotMDAwMDRFICAgICAoYmFzZSAxNikJCUFNUEVYIENPUlBPUkFUSU9OCi0JCQkJNTgxIENPTkZFUkVOQ0UgUExBQ0UKLQkJCQlHT0xERU4gQ08gODA0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTRGICAgKGhleCkJCUxPR0lDUkFGVCwgSU5DLgotMDAwMDRGICAgICAoYmFzZSAxNikJCUxPR0lDUkFGVCwgSU5DLgotCQkJCTIyIENPVFRPTiBST0FECi0JCQkJTkFTSFVBIE5IIDAzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC01MCAgIChoZXgpCQlSQURJU1lTIENPUlBPUkFUSU9OCi0wMDAwNTAgICAgIChiYXNlIDE2KQkJUkFESVNZUyBDT1JQT1JBVElPTgotCQkJCTE1MDI1IFMuVy4gS09MTCBQQVJLV0FZCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDA2LTYwNTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTUxICAgKGhleCkJCUhPQiBFTEVDVFJPTklDIEdNQkggJiBDTy4gS0cKLTAwMDA1MSAgICAgKGJhc2UgMTYpCQlIT0IgRUxFQ1RST05JQyBHTUJIICYgQ08uIEtHCi0JCQkJQlJBTkRTU1RBVFRFUi1TVFIuMi0xMAotCQkJCUQtODUwMiBaSVJORE9SRgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLTUyICAgKGhleCkJCUludHJ1c2lvbi5jb20sIEluYy4KLTAwMDA1MiAgICAgKGJhc2UgMTYpCQlJbnRydXNpb24uY29tLCBJbmMuCi0JCQkJMTEwMSBFLiBBUkFQQUhPIFJPQUQKLQkJCQlSSUNIQVJEU09OIFRYIDc1MDgxCi0KLTAwLTAwLTUzICAgKGhleCkJCUNPTVBVQ09SUAotMDAwMDUzICAgICAoYmFzZSAxNikJCUNPTVBVQ09SUAotCQkJCTIyMTEgTUlDSElHQU4gQVZFTlVFCi0JCQkJU0FOVEEgTU9OSUNBIENBIDkwNDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC01NCAgIChoZXgpCQlNT0RJQ09OLCBJTkMuCi0wMDAwNTQgICAgIChiYXNlIDE2KQkJTU9ESUNPTiwgSU5DLgotCQkJCU9ORSBISUdIIFNUUkVFVAotCQkJCU5PUlRIIEFORE9WRVIgTUEgMDE4NDUtMjY5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNTUgICAoaGV4KQkJQ09NTUlTU0FSSUFUIEEgTGBFTkVSR0lFIEFUT00uCi0wMDAwNTUgICAgIChiYXNlIDE2KQkJQ09NTUlTU0FSSUFUIEEgTGBFTkVSR0lFIEFUT00uCi0JCQkJMzEsIFJVRSBERSBMQSBGRURFUkFUSU9OCi0JCQkJUEFSSVMgNzUwMTUKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtNTYgICAoaGV4KQkJRFIuIEIuIFNUUlVDSwotMDAwMDU2ICAgICAoYmFzZSAxNikJCURSLiBCLiBTVFJVQ0sKLQkJCQlQT0IgMTE0NyBCQUVDS0VSQkFSRyA2Ci0JCQkJRC0yMDAwIFRBTkdTVEVEVC9IQU1CVVJHCi0JCQkJVy1HRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMC01NyAgIChoZXgpCQlTQ0lURVggQ09SUE9SQVRJT04gTFRELgotMDAwMDU3ICAgICAoYmFzZSAxNikJCVNDSVRFWCBDT1JQT1JBVElPTiBMVEQuCi0JCQkJUC5PLiBCT1ggMzMwCi0JCQkJNDYxMDMgSEVSWkxJQSBCCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAwLTU4ICAgKGhleCkJCVJBQ09SRSBDT01QVVRFUiBQUk9EVUNUUyBJTkMuCi0wMDAwNTggICAgIChiYXNlIDE2KQkJUkFDT1JFIENPTVBVVEVSIFBST0RVQ1RTIElOQy4KLQkJCQkyMzU1IFNPVVRIIDEwNzAgV0VTVAotCQkJCVNBTFQgTEFLRSBDSVRZIFVUIDg0MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC01OSAgIChoZXgpCQlIRUxMSUdFIEdNQkgKLTAwMDA1OSAgICAgKGJhc2UgMTYpCQlIRUxMSUdFIEdNQkgKLQkJCQlFLVNXCi0JCQkJSEVJTlJJQ0gtVk9OLVNURUZBTi1TVFIuNCBELTc4MDAgRlJFSUJVUgotCQkJCVdFU1QgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDAtNUEgICAoaGV4KQkJU3lzS29ubmVjdCBHbWJICi0wMDAwNUEgICAgIChiYXNlIDE2KQkJU3lzS29ubmVjdCBHbWJICi0JCQkJU0lFTUVOU1NUUkFTU0UgMjMKLQkJCQk3NjI3NSBFVFRMSU5HRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMC01QiAgIChoZXgpCQlFTFRFQyBFTEVLVFJPTklLIEFHCi0wMDAwNUIgICAgIChiYXNlIDE2KQkJRUxURUMgRUxFS1RST05JSyBBRwotCQkJCUdhbGlsZW8tR2FsaWxlaS1TdHJhc3NlIDExCi0JCQkJUE9CIDQyIDEzIDYzIEQtNTUwNzEgTUFJTloKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMC01QyAgIChoZXgpCQlURUxFTUFUSUNTIElOVEVSTkFUSU9OQUwgSU5DLgotMDAwMDVDICAgICAoYmFzZSAxNikJCVRFTEVNQVRJQ1MgSU5URVJOQVRJT05BTCBJTkMuCi0JCQkJMTIwMSBDWVBSRVNTIENSRUVLIFJECi0JCQkJRlQuIExBVURFUkRBTEUgRkwgMzMzMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTVEICAgKGhleCkJCUNTIFRFTEVDT00KLTAwMDA1RCAgICAgKGJhc2UgMTYpCQlDUyBURUxFQ09NCi0JCQkJNC0xNiBBVkVOVUUgRFUgR0VORVJBTCBMRUNMRVJDCi0JCQkJQlAgNzQgLSA5MjI2MyBGT05URU5BWSBBVVggUk9TRVMKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtNUUgICAoaGV4KQkJVVNDIElORk9STUFUSU9OIFNDSUVOQ0VTIElOU1QKLTAwMDA1RSAgICAgKGJhc2UgMTYpCQlVU0MgSU5GT1JNQVRJT04gU0NJRU5DRVMgSU5TVAotCQkJCUlOVEVSTkVUIEFTUydORUQgTk9TLkFVVEhPUklUWQotCQkJCTQ2NzYgQURNSVJBTFRZIFdBWQotCQkJCU1BUklOQSBERUwgUkVZIENBIDkwMjkyLTY2OTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTVGICAgKGhleCkJCVNVTUlUT01PIEVMRUNUUklDIElORC4sIExURC4KLTAwMDA1RiAgICAgKGJhc2UgMTYpCQlTVU1JVE9NTyBFTEVDVFJJQyBJTkQuLCBMVEQuCi0JCQkJMS0xLTMsIFNISU1BWUEKLQkJCQlLT05PSEFOQS1LVSBPU0FLQQotCQkJCTU1NCBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTYwICAgKGhleCkJCUtPTlRST04gRUxFS1RST05JSyBHTUJICi0wMDAwNjAgICAgIChiYXNlIDE2KQkJS09OVFJPTiBFTEVLVFJPTklLIEdNQkgKLQkJCQlPU0tBUi1WT04tTUlMTEVSLVNUUi4gMQotCQkJCUQtODUzODUgRUNISU5HCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDAtNjEgICAoaGV4KQkJR0FURVdBWSBDT01NVU5JQ0FUSU9OUwotMDAwMDYxICAgICAoYmFzZSAxNikJCUdBVEVXQVkgQ09NTVVOSUNBVElPTlMKLQkJCQkyOTQxIEFMVE9OIEFWRU5VRQotCQkJCUlSVklORSBDQSA5MjcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNjIgICAoaGV4KQkJQlVMTCBITiBJTkZPUk1BVElPTiBTWVNURU1TCi0wMDAwNjIgICAgIChiYXNlIDE2KQkJQlVMTCBITiBJTkZPUk1BVElPTiBTWVNURU1TCi0JCQkJMzAwIENPTkNPUkQgUk9BRCBNL1MgODY0QQotCQkJCUJJTExFUklDQSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNjMgICAoaGV4KQkJQkFSQ08gQ09OVFJPTCBST09NUyBHTUJICi0wMDAwNjMgICAgIChiYXNlIDE2KQkJQkFSQ08gQ09OVFJPTCBST09NUyBHTUJICi0JCQkJQW4gZGVyIFJvc3N3ZWlkIDUKLQkJCQlLYXJsc3J1aGUgIEQtNzYyMjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLTY0ICAgKGhleCkJCVlPS09HQVdBIERJR0lUQUwgQ09NUFVURVIgQ09SUAotMDAwMDY0ICAgICAoYmFzZSAxNikJCVlPS09HQVdBIERJR0lUQUwgQ09NUFVURVIgQ09SUAotCQkJCVNJIEhFQURRVUFSVEVSUyBESVZJU0lPTgotCQkJCU5PLiAyNSBLT1dBIEJMREcgOC03IFNBTkJBTkNITyBDSElZT0RBLUsKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTY1ICAgKGhleCkJCU5ldHdvcmsgR2VuZXJhbCBDb3Jwb3JhdGlvbgotMDAwMDY1ICAgICAoYmFzZSAxNikJCU5ldHdvcmsgR2VuZXJhbCBDb3Jwb3JhdGlvbgotCQkJCTE3OCBFIFRzYW1hbiBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC02NiAgIChoZXgpCQlUQUxBUklTIFNZU1RFTVMsIElOQy4KLTAwMDA2NiAgICAgKGJhc2UgMTYpCQlUQUxBUklTIFNZU1RFTVMsIElOQy4KLQkJCQkxMTMzOSBTT1JSRU5UTyBWQUxMRVkgUk9BRAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNjcgICAoaGV4KQkJU09GVCAqIFJJVEUsIElOQy4KLTAwMDA2NyAgICAgKGJhc2UgMTYpCQlTT0ZUICogUklURSwgSU5DLgotCQkJCTE1MzkyIEFTU0VNQkxZIExBTkUsIFVOSVQgQQotCQkJCUhVTlRJTkdUT04gQkVBQ0ggQ0EgOTI2NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTY4ICAgKGhleCkJCVJPU0VNT1VOVCBDT05UUk9MUwotMDAwMDY4ICAgICAoYmFzZSAxNikJCVJPU0VNT1VOVCBDT05UUk9MUwotCQkJCTEzMDAgRS4gTEFNQkVSVCBST0FECi0JCQkJTEEgSEFCUkEgQ0EgOTA2MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTY5ICAgKGhleCkJCUNPTkNPUkQgQ09NTVVOSUNBVElPTlMgSU5DCi0wMDAwNjkgICAgIChiYXNlIDE2KQkJQ09OQ09SRCBDT01NVU5JQ0FUSU9OUyBJTkMKLQkJCQk3NTMgRk9SRVNUIFNUUkVFVAotCQkJCU1BUkxCT1JPVUdIIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC02QSAgIChoZXgpCQlDT01QVVRFUiBDT05TT0xFUyBJTkMuCi0wMDAwNkEgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgQ09OU09MRVMgSU5DLgotCQkJCUNPTVBVVEVSIFBST0RVQ1RTIERJVklTSU9OCi0JCQkJOTgwMSBNVUlSTEFORFMgQkxWRC4KLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTZCICAgKGhleCkJCVNJTElDT04gR1JBUEhJQ1MgSU5DLi9NSVBTCi0wMDAwNkIgICAgIChiYXNlIDE2KQkJU0lMSUNPTiBHUkFQSElDUyBJTkMuL01JUFMKLQkJCQkyMDExIE5PUlRIIFNIT1JFTElORSBCTFZELgotCQkJCVAuTy4gQk9YIDczMTEgLSAgQkxERy4gIzEwCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDAzOS03MzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC02QyAgIChoZXgpCQlQUklWQVRFCi0wMDAwNkMgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTAwLTZEICAgKGhleCkJCUNSQVkgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwMDA2RCAgICAgKGJhc2UgMTYpCQlDUkFZIENPTU1VTklDQVRJT05TLCBMVEQuCi0JCQkJUC5PLiBCT1ggMjU0LCBDQVhUT04gV0FZCi0JCQkJV0FURk9SRCBCVVNJTkVTUyBQQVJLIFdBVEZPUkQgSEVSVFMgIFdEMQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtNkUgICAoaGV4KQkJQVJUSVNPRlQsIElOQy4KLTAwMDA2RSAgICAgKGJhc2UgMTYpCQlBUlRJU09GVCwgSU5DLgotCQkJCTY5MSBFQVNUIFJJVkVSIFJPQUQKLQkJCQlUVUNTT04gQVogODU3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTZGICAgKGhleCkJCU1hZGdlIEx0ZC4KLTAwMDA2RiAgICAgKGJhc2UgMTYpCQlNYWRnZSBMdGQuCi0JCQkJTWFkZ2UgSG91c2UKLQkJCQlQcmlvcnMgV2F5Ci0JCQkJTWFpbmRlbmhlYWQgQmVya3NoaXJlIFNMNiAySFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC03MCAgIChoZXgpCQlIQ0wgTElNSVRFRAotMDAwMDcwICAgICAoYmFzZSAxNikJCUhDTCBMSU1JVEVECi0JCQkJUkVTRUFSQ0ggJiBERVZFTE9QTUVOVCBVTklUCi0JCQkJNzIsIExVWiBDSFVSQ0ggUk9BRCBNQURSU0EtNjAwIDAwNAotCQkJCUlORElBCi0JCQkJSU5ESUEKLQotMDAtMDAtNzEgICAoaGV4KQkJQURSQSBTWVNURU1TIElOQy4KLTAwMDA3MSAgICAgKGJhc2UgMTYpCQlBRFJBIFNZU1RFTVMgSU5DLgotCQkJCTU5IFRFQ0hOT0xPR1kgRFJJVkUKLQkJCQlMT1dFTEwgTUEgMDE4NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTcyICAgKGhleCkJCU1JTklXQVJFIFRFQ0hOT0xPR1kKLTAwMDA3MiAgICAgKGJhc2UgMTYpCQlNSU5JV0FSRSBURUNITk9MT0dZCi0JCQkJQkVFTURFTlNUUkFBVCAzOAotCQkJCTUwMDQgQ1QgV0VFUlQgKEwpCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDAtNzMgICAoaGV4KQkJU0lFQ09SIENPUlBPUkFUSU9OCi0wMDAwNzMgICAgIChiYXNlIDE2KQkJU0lFQ09SIENPUlBPUkFUSU9OCi0JCQkJUC5PLiBCT1ggMTM2MjUKLQkJCQlSRVNFQVJDSCBUUklBTkdMRSBQSyBOQyAyNzcwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtNzQgICAoaGV4KQkJUklDT0ggQ09NUEFOWSBMVEQuCi0wMDAwNzQgICAgIChiYXNlIDE2KQkJUklDT0ggQ09NUEFOWSBMVEQuCi0JCQkJMjQ0NiBUT0RBLCBBVFNVR0kgQ0lUWQotCQkJCUtBTkFHQVdBIFBSRUYuLAotCQkJCTI0MyBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTc1ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwMDc1ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCUdsb2JhbCBPcGVyYXRpb25zIEVuZ2luZWVyaW5nCi0JCQkJRGVwIDY4MDAgUHJvZ3JhbSBNYW5hZ2VyIDgyMDAgRGl4aWUgUm9hZAotCQkJCUJyYW1wdG9uIE9OIGw2VCA1UDYgQ2FuYQotCQkJCUNBTkFEQQotCi0wMC0wMC03NiAgIChoZXgpCQlBQkVLQVMgVklERU8gU1lTVEVNCi0wMDAwNzYgICAgIChiYXNlIDE2KQkJQUJFS0FTIFZJREVPIFNZU1RFTQotCQkJCTEwMSBHQUxWRVNUT04gRFJJVkUKLQkJCQlSRURXT09EIENJVFkgQ0EgOTQwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTc3ICAgKGhleCkJCUlOVEVSUEhBU0UgQ09SUE9SQVRJT04KLTAwMDA3NyAgICAgKGJhc2UgMTYpCQlJTlRFUlBIQVNFIENPUlBPUkFUSU9OCi0JCQkJMTM4MDAgU0VOTEFDCi0JCQkJREFMTEFTIFRYIDc1MjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC03OCAgIChoZXgpCQlMQUJUQU0gTElNSVRFRAotMDAwMDc4ICAgICAoYmFzZSAxNikJCUxBQlRBTSBMSU1JVEVECi0JCQkJNDMgTUFMQ09MTSBST0FEICAgUC5PLiBCT1gyOTcKLQkJCQlCUkFFU0lERSwgVklDVE9SSUEgMzE5NQotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC0wMC03OSAgIChoZXgpCQlORVRXT1JUSCBJTkNPUlBPUkFURUQKLTAwMDA3OSAgICAgKGJhc2UgMTYpCQlORVRXT1JUSCBJTkNPUlBPUkFURUQKLQkJCQk4NDA0IEVTVEVSUyBCT1VMRVZBUkQKLQkJCQlJUlZJTkcgVFggNzUwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTdBICAgKGhleCkJCURBTkEgQ09NUFVURVIgSU5DLgotMDAwMDdBICAgICAoYmFzZSAxNikJCURBTkEgQ09NUFVURVIgSU5DLgotCQkJCTU1MCBERUwgUkVZIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtN0IgICAoaGV4KQkJUkVTRUFSQ0ggTUFDSElORVMKLTAwMDA3QiAgICAgKGJhc2UgMTYpCQlSRVNFQVJDSCBNQUNISU5FUwotCQkJCVAuTy4gQk9YIDc1Ci0JCQkJTUlMTCBTVFJFRVQgT1hGT1JEICBPWDIgMEJXCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLTdDICAgKGhleCkJCUFNUEVSRSBJTkNPUlBPUkFURUQKLTAwMDA3QyAgICAgKGJhc2UgMTYpCQlBTVBFUkUgSU5DT1JQT1JBVEVECi0JCQkJU0hJTkpVS1UgQVNBSEkgQkxERy4KLQkJCQk1LTIwICA3LUNIT01FIE5JU0hJLVNISU5KVUtVICBTSElOSlVLVS1LCi0JCQkJVE9LWU8gSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC03RCAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMDA3RCAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTdFICAgKGhleCkJCUNMVVNUUklYIENPUlBPUkFUSU9OCi0wMDAwN0UgICAgIChiYXNlIDE2KQkJQ0xVU1RSSVggQ09SUE9SQVRJT04KLQkJCQk5NjAgSEFNTElOIENPVVJUCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC03RiAgIChoZXgpCQlMSU5PVFlQRS1IRUxMIEFHCi0wMDAwN0YgICAgIChiYXNlIDE2KQkJTElOT1RZUEUtSEVMTCBBRwotCQkJCVBPU1RGQUNIIDU2IDYwCi0JCQkJTUVSR0VOVEhBTEVSIEFMTEVFIDU1LTc1IDYyMzYgRVNDSEJPUk4gQgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLTgwICAgKGhleCkJCUNSQVkgQ09NTVVOSUNBVElPTlMgQS9TCi0wMDAwODAgICAgIChiYXNlIDE2KQkJQ1JBWSBDT01NVU5JQ0FUSU9OUyBBL1MKLQkJCQlTTUVERUhPTE0gMTItMTQKLQkJCQkyNzMwIEhFUkxFVgotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLTAwLTgxICAgKGhleCkJCUJBWSBORVRXT1JLUwotMDAwMDgxICAgICAoYmFzZSAxNikJCUJBWSBORVRXT1JLUwotCQkJCTQ0MDEgR1JFQVQgQU1FUklDQU4gUEFSS1dBWQotCQkJCVBPIEJPWCA1ODE4NSBNL1MgU0MwMS0wNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyLTgxODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTgyICAgKGhleCkJCUxFQ1RSQSBTWVNURU1FUyBTQQotMDAwMDgyICAgICAoYmFzZSAxNikJCUxFQ1RSQSBTWVNURU1FUyBTQQotCQkJCUNIRU1JTiBERSBNQVJUSUNPVAotCQkJCVJFU0VBUkNIIERFUEFSVE1FTlQgMzM2MTAgQ0VTVEFTCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTAwLTgzICAgKGhleCkJCVRBRFBPTEUgVEVDSE5PTE9HWSBQTEMKLTAwMDA4MyAgICAgKGJhc2UgMTYpCQlUQURQT0xFIFRFQ0hOT0xPR1kgUExDCi0JCQkJMTM3IERJVFRPTiBXQUxLCi0JCQkJQ0FNQlJJREdFIENCNSA4Rk4KLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtODQgICAoaGV4KQkJU1VQRVJORVQKLTAwMDA4NCAgICAgKGJhc2UgMTYpCQlTVVBFUk5FVAotCQkJCTg0NiBERUwgUkVZIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtODUgICAoaGV4KQkJQ0FOT04gSU5DLgotMDAwMDg1ICAgICAoYmFzZSAxNikJCUNBTk9OIElOQy4KLQkJCQlEVlRFQ0guIERFVi4gQ0VOVEVSIERFUFQuMTIKLQkJCQkzLTMwLTIsIFNISU1PTUFSVUtPLCBPSFRBLUtVIFRPS1lPIDE0NgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDAtODYgICAoaGV4KQkJTUVHQUhFUlRaIENPUlBPUkFUSU9OCi0wMDAwODYgICAgIChiYXNlIDE2KQkJTUVHQUhFUlRaIENPUlBPUkFUSU9OCi0JCQkJNjA1IE5PUlRILS01NjAwIFdFU1QKLQkJCQlTQUxUIExBS0UgQ0lUWSBVVCA4NDExNi0zNzM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC04NyAgIChoZXgpCQlISVRBQ0hJLCBMVEQuCi0wMDAwODcgICAgIChiYXNlIDE2KQkJSElUQUNISSwgTFRELgotCQkJCU5FVFdPUksgRU5HSU5FRVJJTkcgRElWLgotCQkJCUhJVEFDSEkgT01PUkkgMk5EIEJMREcuLCAyNy0xOCBNSU5BTUkgT0kKLQkJCQlUT0tZTyAxNDAgCi0JCQkJSkFQQU4KLQotMDAtMDAtODggICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDAwODggICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC04OSAgIChoZXgpCQlDQVlNQU4gU1lTVEVNUyBJTkMuCi0wMDAwODkgICAgIChiYXNlIDE2KQkJQ0FZTUFOIFNZU1RFTVMgSU5DLgotCQkJCTI2IExBTlNET1dORSBTVFJFRVQKLQkJCQlDQU1CUklER0UgTUEgMDIxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLThBICAgKGhleCkJCURBVEFIT1VTRSBJTkZPUk1BVElPTiBTWVNURU1TCi0wMDAwOEEgICAgIChiYXNlIDE2KQkJREFUQUhPVVNFIElORk9STUFUSU9OIFNZU1RFTVMKLQkJCQlESVJFQ1RPUiBPRiBPUEVSQVRJT05TCi0JCQkJTUVPTiBIT1VTRSwgRUFTVCBUSVNURUQgTlIuIEFMVE9OLCBIQU1QUwotCQkJCUdVMzQgM1FXIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC04QiAgIChoZXgpCQlJTkZPVFJPTgotMDAwMDhCICAgICAoYmFzZSAxNikJCUlORk9UUk9OCi0JCQkJOSBOT1JUSCBPTE5FWQotCQkJCUNIRVJSWSBISUxMIE5KIDA4MDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC04QyAgIChoZXgpCQlBbGxveSBDb21wdXRlciBQcm9kdWN0cyAoQXVzdHJhbGlhKSBQdHkgTHRkCi0wMDAwOEMgICAgIChiYXNlIDE2KQkJQWxsb3kgQ29tcHV0ZXIgUHJvZHVjdHMgKEF1c3RyYWxpYSkgUHR5IEx0ZAotCQkJCVVuaXQgNC81ODUgQmxhY2tidXJuIFJvYWQKLQkJCQlOb3R0aW5nIEhpbGwgVmljdG9yaWEgMzE2OAotCQkJCUFVU1RSQUxJQQotCi0wMC0wMC04RCAgIChoZXgpCQlDcnlwdGVrIEluYy4KLTAwMDA4RCAgICAgKGJhc2UgMTYpCQlDcnlwdGVrIEluYy4KLQkJCQkxNTAxIE1vcmFuIFJvYWQKLQkJCQlTdGVybGluZyBWQSAyMDE2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOEUgICAoaGV4KQkJU09MQk9VUk5FIENPTVBVVEVSLCBJTkMuCi0wMDAwOEUgICAgIChiYXNlIDE2KQkJU09MQk9VUk5FIENPTVBVVEVSLCBJTkMuCi0JCQkJMTkwMCBQSUtFIFJPQUQKLQkJCQlMT05HTU9OVCBDT0xPUkFETyA4MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOEYgICAoaGV4KQkJUmF5dGhlb24KLTAwMDA4RiAgICAgKGJhc2UgMTYpCQlSYXl0aGVvbgotCQkJCU0vUyAxLTEtMTExOQotCQkJCTEwMDEgQm9zdG9uIFBvc3QgUmQKLQkJCQlNYXJsYm9ybyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTAgICAoaGV4KQkJTUlDUk9DT00KLTAwMDA5MCAgICAgKGJhc2UgMTYpCQlNSUNST0NPTQotCQkJCTUwMCBSSVZFUiBSSURHRSBEUklWRQotCQkJCU5PUldPT0QgTUEgMDIwNjItNTAyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTEgICAoaGV4KQkJQU5SSVRTVSBDT1JQT1JBVElPTgotMDAwMDkxICAgICAoYmFzZSAxNikJCUFOUklUU1UgQ09SUE9SQVRJT04KLQkJCQkxODAwLCBPTk5BCi0JCQkJQVRVR0ktU0hJIEtBTkFHQVdBLUtFTiAyNDMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTkyICAgKGhleCkJCUNPR0VOVCBEQVRBIFRFQ0hOT0xPR0lFUwotMDAwMDkyICAgICAoYmFzZSAxNikJCUNPR0VOVCBEQVRBIFRFQ0hOT0xPR0lFUwotCQkJCTY0MCBNVUxMSVMgU1RSRUVUCi0JCQkJRlJJREFZIEhBUkJPUiBXQSA5ODI1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTMgICAoaGV4KQkJUFJPVEVPTiBJTkMuCi0wMDAwOTMgICAgIChiYXNlIDE2KQkJUFJPVEVPTiBJTkMuCi0JCQkJNCBURUNIIENJUkNMRQotCQkJCU5BVElDSyBNQSAwMTc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTQgICAoaGV4KQkJQVNBTlRFIFRFQ0hOT0xPR0lFUwotMDAwMDk0ICAgICAoYmFzZSAxNikJCUFTQU5URSBURUNITk9MT0dJRVMKLQkJCQk4MjEgRk9YIExBTkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOTUgICAoaGV4KQkJU09OWSBURUtUUk9OSVggQ09SUC4KLTAwMDA5NSAgICAgKGJhc2UgMTYpCQlTT05ZIFRFS1RST05JWCBDT1JQLgotCQkJCVAuTy4gQk9YIDUyMDkgVE9LWU8gSU5UJ0wKLQkJCQlUT0tZTyAxMDAtMzEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAwLTk2ICAgKGhleCkJCU1BUkNPTkkgRUxFQ1RST05JQ1MgTFRELgotMDAwMDk2ICAgICAoYmFzZSAxNikJCU1BUkNPTkkgRUxFQ1RST05JQ1MgTFRELgotCQkJCUJST1dOUyBMQU5FLCBUSEUgQUlSUE9SVAotCQkJCVBPUlRTTU9VVEggLS0gSEFNUFNISVJFIFAwMyA1UEgKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLTk3ICAgKGhleCkJCUVNQyBDb3Jwb3JhdGlvbgotMDAwMDk3ICAgICAoYmFzZSAxNikJCUVNQyBDb3Jwb3JhdGlvbgotCQkJCTE3NiBTb3V0aCBTdHJlZXQKLQkJCQlIb3BraW50b24gTUEgMDE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTk4ICAgKGhleCkJCUNST1NTQ09NTSBDT1JQT1JBVElPTgotMDAwMDk4ICAgICAoYmFzZSAxNikJCUNST1NTQ09NTSBDT1JQT1JBVElPTgotCQkJCTQ1MCBET05BTEQgTFlOQ0ggQk9VTEVWQVJECi0JCQkJTUFSTEJPUk9VR0ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLTk5ICAgKGhleCkJCU1UWCwgSU5DLgotMDAwMDk5ICAgICAoYmFzZSAxNikJCU1UWCwgSU5DLgotCQkJCTMzMDEgVEVSTUlOQUwgRFJJVkUKLQkJCQlSQUxFSUdIIE5DIDI3NjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC05QSAgIChoZXgpCQlSQyBDT01QVVRFUiBBL1MKLTAwMDA5QSAgICAgKGJhc2UgMTYpCQlSQyBDT01QVVRFUiBBL1MKLQkJCQlMQVVUUlVQQkpFUkcgMQotCQkJCURLLTI3NTAgQkFMTEVSVVAKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC0wMC05QiAgIChoZXgpCQlJTkZPUk1BVElPTiBJTlRFUk5BVElPTkFMLCBJTkMKLTAwMDA5QiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBJTlRFUk5BVElPTkFMLCBJTkMKLQkJCQk1Ri4sIFRIRSA3VEggSU5EVVNUUlkgQkxERy4KLQkJCQkxLTIwLTE0IEpJTk5BTiBTSElCVVlBLUtVIFRPS1lPCi0JCQkJSkFQQU4gMTUwCi0JCQkJSkFQQU4KLQotMDAtMDAtOUMgICAoaGV4KQkJUk9MTSBNSUwtU1BFQyBDT01QVVRFUlMKLTAwMDA5QyAgICAgKGJhc2UgMTYpCQlST0xNIE1JTC1TUEVDIENPTVBVVEVSUwotCQkJCTMxNTEgWkFOS0VSIFJPQUQKLQkJCQlTQU4gSk9TRSBDQSA5NTE0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtOUQgICAoaGV4KQkJTE9DVVMgQ09NUFVUSU5HIENPUlBPUkFUSU9OCi0wMDAwOUQgICAgIChiYXNlIDE2KQkJTE9DVVMgQ09NUFVUSU5HIENPUlBPUkFUSU9OCi0JCQkJOTgwMCBMQSBDSUVORUdBCi0JCQkJSU5HTEVXT09EIENBIDkwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC05RSAgIChoZXgpCQlNQVJMSSBTLkEuCi0wMDAwOUUgICAgIChiYXNlIDE2KQkJTUFSTEkgUy5BLgotCQkJCUNIRU1JTiBUQVZFUk5FWSAzCi0JCQkJMTIxOCBHRU5FVkEKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAwLTlGICAgKGhleCkJCUFNRVJJU1RBUiBURUNITk9MT0dJRVMgSU5DLgotMDAwMDlGICAgICAoYmFzZSAxNikJCUFNRVJJU1RBUiBURUNITk9MT0dJRVMgSU5DLgotCQkJCTQ3IFdISVRUSUVSIEFWRS4KLQkJCQlNRURGT1JEIE5ZIDExNzYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1BMCAgIChoZXgpCQlTQU5ZTyBFbGVjdHJpYyBDby4sIEx0ZC4KLTAwMDBBMCAgICAgKGJhc2UgMTYpCQlTQU5ZTyBFbGVjdHJpYyBDby4sIEx0ZC4KLQkJCQk1LTUsIEtlaWhhbi1ob25kb3JpIDItY2hvbWUsCi0JCQkJTW9yaWd1Y2hpIENpdHkgT3Nha2EgNTcwLTg2NzcKLQkJCQlKQVBBTgotCi0wMC0wMC1BMSAgIChoZXgpCQlNQVJRVUVUVEUgRUxFQ1RSSUMgQ08uCi0wMDAwQTEgICAgIChiYXNlIDE2KQkJTUFSUVVFVFRFIEVMRUNUUklDIENPLgotCQkJCTgyMDAgV0VTVCBUT1dFUiBBVkVOVUUKLQkJCQlNSUxXQVVLRUUgV0kgNTMyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUEyICAgKGhleCkJCUJBWSBORVRXT1JLUwotMDAwMEEyICAgICAoYmFzZSAxNikJCUJBWSBORVRXT1JLUwotCQkJCTQ0MDEgR1JFQVQgQU1FUklDQU4gUEtXWQotCQkJCU0vUzpTQzAxLTA1Ci0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTItODE4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTMgICAoaGV4KQkJTkVUV09SSyBBUFBMSUNBVElPTiBURUNITk9MT0dZCi0wMDAwQTMgICAgIChiYXNlIDE2KQkJTkVUV09SSyBBUFBMSUNBVElPTiBURUNITk9MT0dZCi0JCQkJMTY4NiBERUxMIEFWRU5VRQotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1BNCAgIChoZXgpCQlBQ09STiBDT01QVVRFUlMgTElNSVRFRAotMDAwMEE0ICAgICAoYmFzZSAxNikJCUFDT1JOIENPTVBVVEVSUyBMSU1JVEVECi0JCQkJRlVMQk9VUk4gUk9BRCwgQ0hFUlJZIEhJTlRPTgotCQkJCUNBTUJSSURHRSBDQjEgNEpOLAotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1BNSAgIChoZXgpCQlUYXR0aWxlIFNSTCAKLTAwMDBBNSAgICAgKGJhc2UgMTYpCQlUYXR0aWxlIFNSTCAKLQkJCQlQLk8uIEJPWCAxNzIyMAotCQkJCUJPVUxERVIgQ08gODAzMDgtNzIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTYgICAoaGV4KQkJTkVUV09SSyBHRU5FUkFMIENPUlBPUkFUSU9OCi0wMDAwQTYgICAgIChiYXNlIDE2KQkJTkVUV09SSyBHRU5FUkFMIENPUlBPUkFUSU9OCi0JCQkJMTI5NiBCIExBV1JFTkNFIFNUQVRJT04gUk9BRAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTcgICAoaGV4KQkJTkVUV09SSyBDT01QVVRJTkcgREVWSUNFUyBJTkMuCi0wMDAwQTcgICAgIChiYXNlIDE2KQkJTkVUV09SSyBDT01QVVRJTkcgREVWSUNFUyBJTkMuCi0JCQkJMzUwIE5PUlRIIEJFUk5BUkRPCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQTggICAoaGV4KQkJU1RSQVRVUyBDT01QVVRFUiBJTkMuCi0wMDAwQTggICAgIChiYXNlIDE2KQkJU1RSQVRVUyBDT01QVVRFUiBJTkMuCi0JCQkJMTExIFBvd2Rlcm1pbGwgUm9hZAotCQkJCU1heW5hcmQgTUEgMDE3NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUE5ICAgKGhleCkJCU5FVFdPUksgU1lTVEVNUyBDT1JQLgotMDAwMEE5ICAgICAoYmFzZSAxNikJCU5FVFdPUksgU1lTVEVNUyBDT1JQLgotCQkJCTc2MDAgQk9PTkUgQVZFTlVFIE5PUlRICi0JCQkJTUlOTkVBUE9MSVMgTU4gNTU0MjgtMTA5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQUEgICAoaGV4KQkJWEVST1ggQ09SUE9SQVRJT04KLTAwMDBBQSAgICAgKGJhc2UgMTYpCQlYRVJPWCBDT1JQT1JBVElPTgotCQkJCU9GRklDRSBTWVNURU1TIERJVklTSU9OCi0JCQkJTS9TIDEwNS01MEMgODAwIFBISUxMSVBTIFJPQUQKLQkJCQlXRUJTVEVSIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1BQiAgIChoZXgpCQlMT0dJQyBNT0RFTElORyBDT1JQT1JBVElPTgotMDAwMEFCICAgICAoYmFzZSAxNikJCUxPR0lDIE1PREVMSU5HIENPUlBPUkFUSU9OCi0JCQkJMTUyMCBNQ0NBTkRMRVNTIERSSVZFCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUFDICAgKGhleCkJCUNPTldBUkUgQ09NUFVURVIgQ09OU1VMVElORwotMDAwMEFDICAgICAoYmFzZSAxNikJCUNPTldBUkUgQ09NUFVURVIgQ09OU1VMVElORwotCQkJCUtJTExJU0ZFTERTVFJBU1NFIDY0Ci0JCQkJNzYyMjcgS0FSTFNSVUhFCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDAtQUQgICAoaGV4KQkJQlJVS0VSIElOU1RSVU1FTlRTIElOQy4KLTAwMDBBRCAgICAgKGJhc2UgMTYpCQlCUlVLRVIgSU5TVFJVTUVOVFMgSU5DLgotCQkJCU1BTk5JTkcgUEFSSwotCQkJCUJJTExFUklDQSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQUUgICAoaGV4KQkJREFTU0FVTFQgRUxFQ1RST05JUVVFCi0wMDAwQUUgICAgIChiYXNlIDE2KQkJREFTU0FVTFQgRUxFQ1RST05JUVVFCi0JCQkJNTUsIFFVQUkgTUFSQ0VMIERBU1NBVUxUCi0JCQkJOTIyMTQgU1QgQ0xPVUQKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtQUYgICAoaGV4KQkJTlVDTEVBUiBEQVRBIElOU1RSVU1FTlRBVElPTgotMDAwMEFGICAgICAoYmFzZSAxNikJCU5VQ0xFQVIgREFUQSBJTlNUUlVNRU5UQVRJT04KLQkJCQlHT0xGICYgTUVBQ0hBTSBST0FEUwotCQkJCVNDSEFVTUJFUkcgSUwgNjAxOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUIwICAgKGhleCkJCVJORC1SQUQgTkVUV09SSyBERVZJQ0VTCi0wMDAwQjAgICAgIChiYXNlIDE2KQkJUk5ELVJBRCBORVRXT1JLIERFVklDRVMKLQkJCQlBVElESU0gVEVDSE5PTCdDTCBCTERHLiAxCi0JCQkJVEVMIEFWSVYgIDYxMTMxCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAwLUIxICAgKGhleCkJCUFMUEhBIE1JQ1JPU1lTVEVNUyBJTkMuCi0wMDAwQjEgICAgIChiYXNlIDE2KQkJQUxQSEEgTUlDUk9TWVNURU1TIElOQy4KLQkJCQkzNTAxIFNVTkZMT1dFUgotCQkJCVNBTlRBIEFOQSBDQSA5MjcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjIgICAoaGV4KQkJVEVMRVZJREVPIFNZU1RFTVMsIElOQy4KLTAwMDBCMiAgICAgKGJhc2UgMTYpCQlURUxFVklERU8gU1lTVEVNUywgSU5DLgotCQkJCTU1MCBFLiBCUk9LQVcgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTYxLTkwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUIzICAgKGhleCkJCUNJTUxJTkMgSU5DT1JQT1JBVEVECi0wMDAwQjMgICAgIChiYXNlIDE2KQkJQ0lNTElOQyBJTkNPUlBPUkFURUQKLQkJCQkxOTU3IENST09LUyBST0FECi0JCQkJVFJPWSBNSSA0ODA4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjQgICAoaGV4KQkJRURJTUFYIENPTVBVVEVSIENPTVBBTlkKLTAwMDBCNCAgICAgKGJhc2UgMTYpCQlFRElNQVggQ09NUFVURVIgQ09NUEFOWQotCQkJCU5vLiAzLCBXdS1DaHVhbiAzcmQgUm9hZCwKLQkJCQlXdS1LdSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlUYWlwZWkgSHNpZW4gIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDAtQjUgICAoaGV4KQkJREFUQUJJTElUWSBTT0ZUV0FSRSBTWVMuIElOQy4KLTAwMDBCNSAgICAgKGJhc2UgMTYpCQlEQVRBQklMSVRZIFNPRlRXQVJFIFNZUy4gSU5DLgotCQkJCU9ORSBQQUxNRVIgVEVSUkFDRQotCQkJCUNBUkxTVEFEVCBOSiAwNzA3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjYgICAoaGV4KQkJTUlDUk8tTUFUSUMgUkVTRUFSQ0gKLTAwMDBCNiAgICAgKGJhc2UgMTYpCQlNSUNSTy1NQVRJQyBSRVNFQVJDSAotCQkJCUFNQkFDSFRFTkxBQU4gIDIxIEI1Ci0JCQkJQiAtIDMwMzAgIEhFVkVSTEVFCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtMDAtQjcgICAoaGV4KQkJRE9WRSBDT01QVVRFUiBDT1JQT1JBVElPTgotMDAwMEI3ICAgICAoYmFzZSAxNikJCURPVkUgQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQkxMjAwIE5PUlRIIDIzUkQgU1RSRUVUCi0JCQkJV0lMTUlOR1RPTiBOQyAyODQwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQjggICAoaGV4KQkJU0VJS09TSEEgQ08uLCBMVEQuCi0wMDAwQjggICAgIChiYXNlIDE2KQkJU0VJS09TSEEgQ08uLCBMVEQuCi0JCQkJU1lTVEVNIEVRVUlQTUVOVCBESVZJU0lPTgotCQkJCTQtMS0xIFRBSUhFSSBTVU1JREEtS1UgVE9LWU8gMTMwCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1COSAgIChoZXgpCQlNQ0RPTk5FTEwgRE9VR0xBUyBDT01QVVRFUiBTWVMKLTAwMDBCOSAgICAgKGJhc2UgMTYpCQlNQ0RPTk5FTEwgRE9VR0xBUyBDT01QVVRFUiBTWVMKLQkJCQlESVYgTUNET05ORUxMIERPVUdMQVMgSU5GIFNZUwotCQkJCUJPVU5EQVJZIFdBWSBIRU1FTCBIRU1QU1RFQUQgSEVSVFMKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtQkEgICAoaGV4KQkJU0lJRywgSU5DLgotMDAwMEJBICAgICAoYmFzZSAxNikJCVNJSUcsIElOQy4KLQkJCQk2MDc4IFNURVdBUlQgQVZFTlVFCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQkIgICAoaGV4KQkJVFJJLURBVEEKLTAwMDBCQiAgICAgKGJhc2UgMTYpCQlUUkktREFUQQotCQkJCTUwNSBFQVNUIE1JRERMRUZJRUxEIFJPQUQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzLTQwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUJDICAgKGhleCkJCVJvY2t3ZWxsIEF1dG9tYXRpb24KLTAwMDBCQyAgICAgKGJhc2UgMTYpCQlSb2Nrd2VsbCBBdXRvbWF0aW9uCi0JCQkJMSBBbGxlbi1CcmFkbGV5IERyLgotCQkJCU1heWZpZWxkIEhlaWdodHMgT0ggNDQxMjQtNjExOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQkQgICAoaGV4KQkJTUlUU1VCSVNISSBDQUJMRSBDT01QQU5ZCi0wMDAwQkQgICAgIChiYXNlIDE2KQkJTUlUU1VCSVNISSBDQUJMRSBDT01QQU5ZCi0JCQkJNTIwIE1BRElTT04gQVZFTlVFCi0JCQkJTkVXIFlPUksgTlkgMTAwMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUJFICAgKGhleCkJCVRIRSBOVEkgR1JPVVAKLTAwMDBCRSAgICAgKGJhc2UgMTYpCQlUSEUgTlRJIEdST1VQCi0JCQkJNDcwMSBQQVRSSUNLIEhFTlJZIERSSVZFCi0JCQkJU1VJVEUgMjQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQkYgICAoaGV4KQkJU1lNTUVUUklDIENPTVBVVEVSIFNZU1RFTVMKLTAwMDBCRiAgICAgKGJhc2UgMTYpCQlTWU1NRVRSSUMgQ09NUFVURVIgU1lTVEVNUwotCQkJCTE2MjAgT0FLTEFORCBST0FEICBTVUlURSBELTIwMAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DMCAgIChoZXgpCQlXRVNURVJOIERJR0lUQUwgQ09SUE9SQVRJT04KLTAwMDBDMCAgICAgKGJhc2UgMTYpCQlXRVNURVJOIERJR0lUQUwgQ09SUE9SQVRJT04KLQkJCQk4MTA1IElSVklORSBDRU5URVIgRFJJVkUKLQkJCQlJUlZJTkUgQ0EgOTI3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUMxICAgKGhleCkJCU1hZGdlIEx0ZC4KLTAwMDBDMSAgICAgKGJhc2UgMTYpCQlNYWRnZSBMdGQuCi0JCQkJTWFkZ2UgSG91c2UKLQkJCQlQcmlvcnMgV2F5Ci0JCQkJTWFpbmRlbmhlYWQgQmVya3NoaXJlIFNMNiAySFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1DMiAgIChoZXgpCQlJTkZPUk1BVElPTiBQUkVTRU5UQVRJT04gVEVDSC4KLTAwMDBDMiAgICAgKGJhc2UgMTYpCQlJTkZPUk1BVElPTiBQUkVTRU5UQVRJT04gVEVDSC4KLQkJCQkyMzgwMSBDQUxBQkFTQVMgUk9BRAotCQkJCVNVSVRFIDIwMTEKLQkJCQlDQUxBQkFTQVMgQ0EgOTEzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUMzICAgKGhleCkJCUhBUlJJUyBDT1JQIENPTVBVVEVSIFNZUyBESVYKLTAwMDBDMyAgICAgKGJhc2UgMTYpCQlIQVJSSVMgQ09SUCBDT01QVVRFUiBTWVMgRElWCi0JCQkJTS9TIDc1Ci0JCQkJMTAyNSBXLiBOQVNBIEJMVkQuTCAzMzMwOQotCQkJCU1FTEJPVVJORSBGTCAzMjkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQzQgICAoaGV4KQkJV0FURVJTIERJVi4gT0YgTUlMTElQT1JFCi0wMDAwQzQgICAgIChiYXNlIDE2KQkJV0FURVJTIERJVi4gT0YgTUlMTElQT1JFCi0JCQkJMzQgTUFQTEUgU1RSRUVUCi0JCQkJTUlMRk9SRCBNQSAwMTc1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQzUgICAoaGV4KQkJRkFSQUxMT04gQ09NUFVUSU5HL05FVE9QSUEKLTAwMDBDNSAgICAgKGJhc2UgMTYpCQlGQVJBTExPTiBDT01QVVRJTkcvTkVUT1BJQQotCQkJCTI0NzAgTUFSSU5FUiBTUVVBUkUgTE9PUAotCQkJCUFMQU1FREEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUM2ICAgKGhleCkJCUVPTiBTWVNURU1TCi0wMDAwQzYgICAgIChiYXNlIDE2KQkJRU9OIFNZU1RFTVMKLQkJCQkxMDYwMSBTT1VUSCBERUFOWkEgQkxWRC4KLQkJCQlTVUlURSAzMDMKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUM3ICAgKGhleCkJCUFSSVggQ09SUE9SQVRJT04KLTAwMDBDNyAgICAgKGJhc2UgMTYpCQlBUklYIENPUlBPUkFUSU9OCi0JCQkJRU5HSU5FRVJJTkcgTUFJTCBTVE9QCi0JCQkJMTE1MiBNT1JTRSBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUM4ICAgKGhleCkJCUFMVE9TIENPTVBVVEVSIFNZU1RFTVMKLTAwMDBDOCAgICAgKGJhc2UgMTYpCQlBTFRPUyBDT01QVVRFUiBTWVNURU1TCi0JCQkJMjY0MSBPUkNIQVJEIFBBUktXQVkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtQzkgICAoaGV4KQkJRW11bGV4IENvcnBvcmF0aW9uCi0wMDAwQzkgICAgIChiYXNlIDE2KQkJRW11bGV4IENvcnBvcmF0aW9uCi0JCQkJMzMzMyBTdXNhbiBTdHJlZXQKLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DQSAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDAwQ0EgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlLCBTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DQiAgIChoZXgpCQlDT01QVS1TSEFDSyBFTEVDVFJPTklDIEdNQkgKLTAwMDBDQiAgICAgKGJhc2UgMTYpCQlDT01QVS1TSEFDSyBFTEVDVFJPTklDIEdNQkgKLQkJCQlSSU5HU1RSLiA1NiAtIDU4LCA1NDUwIE5FVVdJRUQKLQkJCQlXRVNUIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLUNDICAgKGhleCkJCURFTlNBTiBDTy4sIExURC4KLTAwMDBDQyAgICAgKGJhc2UgMTYpCQlERU5TQU4gQ08uLCBMVEQuCi0JCQkJMS0yMy0xMSwgS0FNSVRBS0FJRE8KLQkJCQlTVUdJTkFNSS1LVSwgVE9LWU8gMTY4Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1DRCAgIChoZXgpCQlBbGxpZWQgVGVsZXNpcyBMYWJzIEx0ZAotMDAwMENEICAgICAoYmFzZSAxNikJCUFsbGllZCBUZWxlc2lzIExhYnMgTHRkCi0JCQkJMjcgTmF6YXJldGggQXZlbnVlCi0JCQkJTWlkZGxldG9uIENocmlzdGNodXJjaCA4MDI0Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMDAtQ0UgICAoaGV4KQkJTUVHQURBVEEgQ09SUC4KLTAwMDBDRSAgICAgKGJhc2UgMTYpCQlNRUdBREFUQSBDT1JQLgotCQkJCTM1IE9SVklMTEUgRFJJVkUKLQkJCQlCT0hFTUlBIE5ZIDExNzE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1DRiAgIChoZXgpCQlIQVlFUyBNSUNST0NPTVBVVEVSIFBST0RVQ1RTCi0wMDAwQ0YgICAgIChiYXNlIDE2KQkJSEFZRVMgTUlDUk9DT01QVVRFUiBQUk9EVUNUUwotCQkJCShDQU5BREEpIExURC4KLQkJCQkyOTUgUEhJTExJUCBTVFJFRVQgV0FURVJMT08sIE9OVEFSSU8gTjJMCi0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAwLUQwICAgKGhleCkJCURFVkVMQ09OIEVMRUNUUk9OSUNTIExURC4KLTAwMDBEMCAgICAgKGJhc2UgMTYpCQlERVZFTENPTiBFTEVDVFJPTklDUyBMVEQuCi0JCQkJODU2LTUxU1QgU1RSRUVUIEVBU1QKLQkJCQlTQVNLQVRPT04gU0FTS0FUQ0hFV0FOIFM3SyA1QzcKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDAtRDEgICAoaGV4KQkJQURBUFRFQyBJTkNPUlBPUkFURUQKLTAwMDBEMSAgICAgKGJhc2UgMTYpCQlBREFQVEVDIElOQ09SUE9SQVRFRAotCQkJCU0vUyAxODAKLQkJCQk2OTEgU09VVEggTUlMUElUQVMgQkxWRC4KLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRDIgICAoaGV4KQkJU0JFLCBJTkMuCi0wMDAwRDIgICAgIChiYXNlIDE2KQkJU0JFLCBJTkMuCi0JCQkJNDU1MCBOT1JUSCBDQU5ZT04gUk9BRAotCQkJCVNBTiBSQU1PTiBDQSA5NDU4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRDMgICAoaGV4KQkJV0FORyBMQUJPUkFUT1JJRVMgSU5DLgotMDAwMEQzICAgICAoYmFzZSAxNikJCVdBTkcgTEFCT1JBVE9SSUVTIElOQy4KLQkJCQkKLQotMDAtMDAtRDQgICAoaGV4KQkJUFVSRSBEQVRBIExURC4KLTAwMDBENCAgICAgKGJhc2UgMTYpCQlQVVJFIERBVEEgTFRELgotCQkJCTIwMCBXRVNUIEJFQVZFUiBDUkVFSyBST0FECi0JCQkJUklDSE1PTkQgSElMTCAgT05UQVJJTwotCQkJCUw0QiAxQjQgQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAwLUQ1ICAgKGhleCkJCU1JQ1JPR05PU0lTIElOVEVSTkFUSU9OQUwKLTAwMDBENSAgICAgKGJhc2UgMTYpCQlNSUNST0dOT1NJUyBJTlRFUk5BVElPTkFMCi0JCQkJNjMgUVVFRU4gVklDVE9SSUEgU1RSRUVUCi0JCQkJTE9ORE9OIEVDNE4gNFVECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1ENiAgIChoZXgpCQlQVU5DSCBMSU5FIEhPTERJTkcKLTAwMDBENiAgICAgKGJhc2UgMTYpCQlQVU5DSCBMSU5FIEhPTERJTkcKLQkJCQlQLk8uIEJPWCAzOTE3MDgKLQkJCQlCUkFNTEVZIDIwMTgKLQkJCQlTT1VUSCBBRlJJQ0EKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMDAtRDcgICAoaGV4KQkJREFSVE1PVVRIIENPTExFR0UKLTAwMDBENyAgICAgKGJhc2UgMTYpCQlEQVJUTU9VVEggQ09MTEVHRQotCQkJCUtJRVdJVCBDT01QVVRFUiBDRU5URVIKLQkJCQlIQU5PVkVSIE5IIDAzNzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1EOCAgIChoZXgpCQlOT1ZFTEwsIElOQy4KLTAwMDBEOCAgICAgKGJhc2UgMTYpCQlOT1ZFTEwsIElOQy4KLQkJCQkxMjIgRUFTVCAxNzAwIFNPVVRIIE0vUzpFLTEyLTEKLQkJCQlQLk8uIEJPWCA1OTAwCi0JCQkJUFJPVk8gVVQgODQ2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUQ5ICAgKGhleCkJCU5JUFBPTiBURUxFR1JBUEggJiBURUxFUEhPTkUKLTAwMDBEOSAgICAgKGJhc2UgMTYpCQlOSVBQT04gVEVMRUdSQVBIICYgVEVMRVBIT05FCi0JCQkJQ09SUE9SQVRJT04gKE5UVCkKLQkJCQlURUlTSElOIEJMREcuIDMtMSBPT1RFTUFDSEkgMiBDSE9NRSwgQ0hJCi0JCQkJVE9LWU8gMTAwLTgxMTYgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1EQSAgIChoZXgpCQlBVEVYCi0wMDAwREEgICAgIChiYXNlIDE2KQkJQVRFWAotCQkJCTE1IENST1NCWSBEUklWRQotCQkJCUJFREZPUkQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLURCICAgKGhleCkJCUJyaXRpc2ggVGVsZWNvbW11bmljYXRpb25zIHBsYwotMDAwMERCICAgICAoYmFzZSAxNikJCUJyaXRpc2ggVGVsZWNvbW11bmljYXRpb25zIHBsYwotCQkJCTgxIE5ldyBHYXRlIFN0Ci0JCQkJTG9uZG9uLCBFQzFBIDdBSgotCQkJCUVuZ2xhbmQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1EQyAgIChoZXgpCQlIQVlFUyBNSUNST0NPTVBVVEVSIFBST0RVQ1RTCi0wMDAwREMgICAgIChiYXNlIDE2KQkJSEFZRVMgTUlDUk9DT01QVVRFUiBQUk9EVUNUUwotCQkJCVAuTy4gQk9YIDEwNTIwMwotCQkJCUFUTEFOVEEgR0EgMzAzNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUREICAgKGhleCkJCVRDTCBJTkNPUlBPUkFURUQKLTAwMDBERCAgICAgKGJhc2UgMTYpCQlUQ0wgSU5DT1JQT1JBVEVECi0JCQkJNDE4MjkgQUxCUkFFIFNUUkVFVAotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLURFICAgKGhleCkJCUNFVElBCi0wMDAwREUgICAgIChiYXNlIDE2KQkJQ0VUSUEKLQkJCQkxNTAgUlVFIEJFUlRIRUxPVAotCQkJCVpJIFRPVUxPTiBFU1QgODMwODggVE9VTE9OIENFREVYCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTAwLURGICAgKGhleCkJCUJFTEwgJiBIT1dFTEwgUFVCIFNZUyBESVYKLTAwMDBERiAgICAgKGJhc2UgMTYpCQlCRUxMICYgSE9XRUxMIFBVQiBTWVMgRElWCi0JCQkJT0xEIE1BTlNGSUVMRCBST0FECi0JCQkJV09PU1RFUiBPSCA0NDY5MS05MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMCAgIChoZXgpCQlRVUFEUkFNIENPUlAuCi0wMDAwRTAgICAgIChiYXNlIDE2KQkJUVVBRFJBTSBDT1JQLgotCQkJCU9ORSBRVUFEIFdBWQotCQkJCU5PUkNST1NTIEdBIDMwMDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMSAgIChoZXgpCQlHUklEIFNZU1RFTVMKLTAwMDBFMSAgICAgKGJhc2UgMTYpCQlHUklEIFNZU1RFTVMKLQkJCQk0NzIxMSBMQUtFVklFVyBCT1VMRVZBUkQKLQkJCQlQLk8uIEJPWCA1MDAzCi0JCQkJRlJFTU9OVCBDQSA5NDUzNy01MDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMiAgIChoZXgpCQlBQ0VSIFRFQ0hOT0xPR0lFUyBDT1JQLgotMDAwMEUyICAgICAoYmFzZSAxNikJCUFDRVIgVEVDSE5PTE9HSUVTIENPUlAuCi0JCQkJNDAxIENIQVJDT1QgQVZFLgotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FMyAgIChoZXgpCQlJTlRFR1JBVEVEIE1JQ1JPIFBST0RVQ1RTIExURAotMDAwMEUzICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgTUlDUk8gUFJPRFVDVFMgTFRECi0JCQkJSU1QLCBOTy4gMSBJTkRVU1RSSUFMIEVTVEFURQotCQkJCUNPTlNFVFQsIENPIERVS0hBTQotCQkJCUVOR0xBTkQgRU5HTEFORCBESDg2VEoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1FNCAgIChoZXgpCQlJTjIgR1JPVVBFIElOVEVSVEVDSE5JUVVFCi0wMDAwRTQgICAgIChiYXNlIDE2KQkJSU4yIEdST1VQRSBJTlRFUlRFQ0hOSVFVRQotCQkJCUlOMiAtIEIuUC42MwotCQkJCTc4MzczIFBMQUlTSVIgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtRTUgICAoaGV4KQkJU0lHTUVYIExURC4KLTAwMDBFNSAgICAgKGJhc2UgMTYpCQlTSUdNRVggTFRELgotCQkJCVNJR01BIEhPVVNFCi0JCQkJTk9SVEggSEVBVEggTEFORSBIT1JTSEFNLCBXRVNUIFNVU1NFWAotCQkJCVJIMTIgNFVaIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1FNiAgIChoZXgpCQlBUFRPUiBQUk9EVUlUUyBERSBDT01NIElORFVTVAotMDAwMEU2ICAgICAoYmFzZSAxNikJCUFQVE9SIFBST0RVSVRTIERFIENPTU0gSU5EVVNUCi0JCQkJNjEsIENIRU1JTiBEVSBWSUVVWC1DSEVORQotCQkJCVpJUlNULUJQIDE3NyAzODI0NCBNRVlMQU4gQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtRTcgICAoaGV4KQkJU1RBUiBHQVRFIFRFQ0hOT0xPR0lFUwotMDAwMEU3ICAgICAoYmFzZSAxNikJCVNUQVIgR0FURSBURUNITk9MT0dJRVMKLQkJCQkyOTMwMCBBVVJPUkEgUk9BRAotCQkJCVNPTE9OIE9IIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1FOCAgIChoZXgpCQlBQ0NUT04gVEVDSE5PTE9HWSBDT1JQLgotMDAwMEU4ICAgICAoYmFzZSAxNikJCUFDQ1RPTiBURUNITk9MT0dZIENPUlAuCi0JCQkJNDY3NTAgRlJFTU9OVCBCTFZELiAjMTA0Ci0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRTkgICAoaGV4KQkJSVNJQ0FELCBJTkMuCi0wMDAwRTkgICAgIChiYXNlIDE2KQkJSVNJQ0FELCBJTkMuCi0JCQkJMTkyMCBXRVNUIENPUlBPUkFURSBXQVkKLQkJCQlBTkFIRUlNIENBIDkyODAzLTYxMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUVBICAgKGhleCkJCVVQTk9EIEFCCi0wMDAwRUEgICAgIChiYXNlIDE2KQkJVVBOT0QgQUIKLQkJCQlCT1ggMjMwNTEKLQkJCQlTLTc1MCAyMyBVUFBTQUxBCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAwLUVCICAgKGhleCkJCU1BVFNVU0hJVEEgQ09NTS4gSU5ELiBDTy4gTFRELgotMDAwMEVCICAgICAoYmFzZSAxNikJCU1BVFNVU0hJVEEgQ09NTS4gSU5ELiBDTy4gTFRELgotCQkJCTMtMSAgNC1DSE9NRQotCQkJCVRTVU5BU0hJTUEtSElHQVNISSBLT0hPS1UtS1UgIFlPS09IQU1BCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMC1FQyAgIChoZXgpCQlNSUNST1BST0NFU1MKLTAwMDBFQyAgICAgKGJhc2UgMTYpCQlNSUNST1BST0NFU1MKLQkJCQk5NyBCSVMsIFJVRSBERSBDT0xPTUJFUwotCQkJCUIuUC4gODcgOTI0MDAgQ09VUkJFVk9JRQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMC1FRCAgIChoZXgpCQlBUFJJTAotMDAwMEVEICAgICAoYmFzZSAxNikJCUFQUklMCi0JCQkJNjAsIFJVRSBERSBDQVJUQUxFCi0JCQkJQlAgMzggMzgxNzAgU0VZU1NJTkVULVBBUklTRVQKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDAtRUUgICAoaGV4KQkJTkVUV09SSyBERVNJR05FUlMsIExURC4KLTAwMDBFRSAgICAgKGJhc2UgMTYpCQlORVRXT1JLIERFU0lHTkVSUywgTFRELgotCQkJCVVOSVQgMUEsIEhPUk5CRUFNIFBBUksKLQkJCQlIT09LU1RPTkUgUk9BRCBIQVJST0dBVEUsIE5PUlRIIFlPUktTSElSCi0JCQkJVU5JVEVEIEtJTkdET00gSEcyIDhRVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLUVGICAgKGhleCkJCUtUSQotMDAwMEVGICAgICAoYmFzZSAxNikJCUtUSQotCQkJCTIxNTcgTydUT09MRSBBVkVOVUUKLQkJCQlTVUlURSBICi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUYwICAgKGhleCkJCVNBTVNVTkcgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDAwRjAgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQk0MTYsIE1BRVRBTi0zRE9ORywgUEFMREFMLUdVCi0JCQkJU1VXT04gQ0lUWSwgS1lVTkdLSS1ETwotCQkJCTQ0Mi03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDAtRjEgICAoaGV4KQkJTUFHTkEgQ09NUFVURVIgQ09SUE9SQVRJT04KLTAwMDBGMSAgICAgKGJhc2UgMTYpCQlNQUdOQSBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTIyIEtFRVdBWURJTiBEUklWRQotCQkJCVNBTEVNIE5IIDAzMDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1GMiAgIChoZXgpCQlTUElERVIgQ09NTVVOSUNBVElPTlMKLTAwMDBGMiAgICAgKGJhc2UgMTYpCQlTUElERVIgQ09NTVVOSUNBVElPTlMKLQkJCQk3NDkxIEJSSUFSIFJPQUQKLQkJCQlNT05UUkVBTCwgIFFVRUJFQyBINFcgMUs0Ci0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTAwLUYzICAgKGhleCkJCUdBTkRBTEYgREFUQSBMSU1JVEVECi0wMDAwRjMgICAgIChiYXNlIDE2KQkJR0FOREFMRiBEQVRBIExJTUlURUQKLQkJCQkxMzAgQ09MT05OQURFIFJPQUQgU09VVEgKLQkJCQlORVBFQU4gIE9OVEFSSU8gIEsyRSA3TTQKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDAtRjQgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMKLTAwMDBGNCAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcwotCQkJCUNPUlBPUkFUSU9OCi0JCQkJOTUwIEtJRkVSIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUY1ICAgKGhleCkJCURJQU1PTkQgU0FMRVMgTElNSVRFRAotMDAwMEY1ICAgICAoYmFzZSAxNikJCURJQU1PTkQgU0FMRVMgTElNSVRFRAotCQkJCTE3LCBDSEFSVEVSSE9VU0UgU1RSRUVUCi0JCQkJTE9ORE9OLCBFQ0lOIDZSQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDAtRjYgICAoaGV4KQkJQVBQTElFRCBNSUNST1NZU1RFTVMgQ09SUC4KLTAwMDBGNiAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIE1JQ1JPU1lTVEVNUyBDT1JQLgotCQkJCTUwMjAgMTQ4IEFWRU5VRSwgTi5FLgotCQkJCVAuTy4gQk9YIDk3MDAyCi0JCQkJUkVETU9ORCBXQSA5ODA3My05NzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1GNyAgIChoZXgpCQlZT1VUSCBLRUVQIEVOVEVSUFJJU0UgQ08gTFRECi0wMDAwRjcgICAgIChiYXNlIDE2KQkJWU9VVEggS0VFUCBFTlRFUlBSSVNFIENPIExURAotCQkJCTMvRiBOTy4gNzEyIE1JTlRTVSBFLiBST0FECi0JCQkJVEFJUEVJLCBUQUlXQU4KLQkJCQlST0MKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAwLUY4ICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0wMDAwRjggICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQlMS0cgMS0yL0ExOQotCQkJCTU1MCBLSU5HIFNUUkVFVCBMSVRUTEVUT04gIE1BICAwMTQ2MC0xMjgKLQkJCQkwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRjkgICAoaGV4KQkJUVVPVFJPTiBTWVNURU1TIElOQy4KLTAwMDBGOSAgICAgKGJhc2UgMTYpCQlRVU9UUk9OIFNZU1RFTVMgSU5DLgotCQkJCTU0NTQgQkVFVEhPVkVOIFNULgotCQkJCUxPUyBBTkdFTEVTIENBIDkwMDY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMC1GQSAgIChoZXgpCQlNSUNST1NBR0UgQ09NUFVURVIgU1lTVEVNUyBJTkMKLTAwMDBGQSAgICAgKGJhc2UgMTYpCQlNSUNST1NBR0UgQ09NUFVURVIgU1lTVEVNUyBJTkMKLQkJCQk2ODAgU09VVEggUk9DSyBCTFZECi0JCQkJUkVOTyBORSA4OTUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDAtRkIgICAoaGV4KQkJUkVDSE5FUiBaVVIgS09NTVVOSUtBVElPTgotMDAwMEZCICAgICAoYmFzZSAxNikJCVJFQ0hORVIgWlVSIEtPTU1VTklLQVRJT04KLQkJCQlCSVRaRU5TVFIuIDExCi0JCQkJRi01NDY0IEFTQkFDSAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAwLUZDICAgKGhleCkJCU1FSUtPCi0wMDAwRkMgICAgIChiYXNlIDE2KQkJTUVJS08KLQkJCQk2NTAgQVpURUMgV0VTVAotCQkJCUJSSVNUT0wgQlMxMiA0U0QKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAwLUZEICAgKGhleCkJCUhJR0ggTEVWRUwgSEFSRFdBUkUKLTAwMDBGRCAgICAgKGJhc2UgMTYpCQlISUdIIExFVkVMIEhBUkRXQVJFCi0JCQkJUE8gQk9YIDE3MCBXSU5ETUlMTCBST0FECi0JCQkJSEVBRElOR1RPTiBPWEZPUkQgT1gzIDdCTgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMC1GRSAgIChoZXgpCQlBTk5BUE9MSVMgTUlDUk8gU1lTVEVNUwotMDAwMEZFICAgICAoYmFzZSAxNikJCUFOTkFQT0xJUyBNSUNSTyBTWVNURU1TCi0JCQkJMTkwIEFETUlSQUwgQ09DSFJBTkUgRFJJVkUKLQkJCQlTVUlURSAxMzAKLQkJCQlBTk5BUE9MSVMgTUQgMjE0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAwLUZGICAgKGhleCkJCUNBTVRFQyBFTEVDVFJPTklDUyBMVEQuCi0wMDAwRkYgICAgIChiYXNlIDE2KQkJQ0FNVEVDIEVMRUNUUk9OSUNTIExURC4KLQkJCQkxMDEgVkFVR0hBTiBXQVkKLQkJCQlMRUlDRVNURVIgTEUxIDRTQQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS0wMCAgIChoZXgpCQlFUVVJUCdUUkFOUwotMDAwMTAwICAgICAoYmFzZSAxNikJCUVRVUlQJ1RSQU5TCi0JCQkJMzEgcnVlIFBhdWwgQ2V6YW5uZQotCQkJCUxBIFJPQ0hFVFRFICA3NzAwMAotCQkJCUZSQU5DRQotCi0wMC0wMS0wMSAgIChoZXgpCQlQUklWQVRFCi0wMDAxMDEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTAxLTAyICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwMDEwMiAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCYXlmcm9udCBQbGF6YSAgLSBNUzogNDIyMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0wMyAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMDAxMDMgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQmF5ZnJvbnQgUGxhemEgLSBNUzogNDIyMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0wNCAgIChoZXgpCQlEVklDTyBDby4sIEx0ZC4KLTAwMDEwNCAgICAgKGJhc2UgMTYpCQlEVklDTyBDby4sIEx0ZC4KLQkJCQlLb29rbWluIENhcmQgQi9EIDZGIDI2Ny0yCi0JCQkJU2VvaHl1bi1Eb25nIEJvb25kYW5nLUd1Ci0JCQkJU3VuZ25hbS1zaSBLeXVuZ2tpLWRvIDQ2My0wNTAgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS0wNSAgIChoZXgpCQlCZWNraG9mZiBBdXRvbWF0aW9uIEdtYkgKLTAwMDEwNSAgICAgKGJhc2UgMTYpCQlCZWNraG9mZiBBdXRvbWF0aW9uIEdtYkgKLQkJCQlFaXNlcnN0ci4gNQotCQkJCTMzNDE1IFZlcmwgCi0JCQkJR0VSTUFOWQotCi0wMC0wMS0wNiAgIChoZXgpCQlUZXdzIERhdGVudGVjaG5payBHbWJICi0wMDAxMDYgICAgIChiYXNlIDE2KQkJVGV3cyBEYXRlbnRlY2huaWsgR21iSAotCQkJCUFtIEJhaG5ob2YgNwotCQkJCTI1NDY5IEhhbHN0ZW5iZWsgIAotCQkJCUdFUk1BTlkKLQotMDAtMDEtMDcgICAoaGV4KQkJTGVpc2VyIEdtYkgKLTAwMDEwNyAgICAgKGJhc2UgMTYpCQlMZWlzZXIgR21iSAotCQkJCUlsbXN0ci4gNwotCQkJCTg1NTc5IE5ldWJpYmVyZyAgCi0JCQkJR0VSTUFOWQotCi0wMC0wMS0wOCAgIChoZXgpCQlBVkxBQiBUZWNobm9sb2d5LCBJbmMuCi0wMDAxMDggICAgIChiYXNlIDE2KQkJQVZMQUIgVGVjaG5vbG9neSwgSW5jLgotCQkJCTNGLTEsIE5vLiAxMzQsIFNlYy4gMwotCQkJCUNodW5nIFNoaW4gUm9hZAotCQkJCUhzaW4gVGllbiwgVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLTA5ICAgKGhleCkJCU5hZ2FubyBKYXBhbiBSYWRpbyBDby4sIEx0ZC4KLTAwMDEwOSAgICAgKGJhc2UgMTYpCQlOYWdhbm8gSmFwYW4gUmFkaW8gQ28uLCBMdGQuCi0JCQkJU2hpbW9oaWdhbm8gMTE2MywgSW5hc2F0by1tYWNoaQotCQkJCU5hZ2FubyAzODEtMjI4OCAgCi0JCQkJSkFQQU4KLQotMDAtMDEtMEEgICAoaGV4KQkJQ0lTIFRFQ0hOT0xPR1kgSU5DLgotMDAwMTBBICAgICAoYmFzZSAxNikJCUNJUyBURUNITk9MT0dZIElOQy4KLQkJCQkxNkYsIE5vLiA3NSBIc2luIFRhaSBXdSBSb2FkCi0JCQkJU2VjLiAxLCBIc2kgQ2hpaAotCQkJCVRhaXBlaSBIc2llbiAyMjEgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtMEIgICAoaGV4KQkJU3BhY2UgQ3liZXJMaW5rLCBJbmMuCi0wMDAxMEIgICAgIChiYXNlIDE2KQkJU3BhY2UgQ3liZXJMaW5rLCBJbmMuCi0JCQkJNXRoIEZsLiBHdXBweXVuZyBUb3duIEIKLQkJCQkyMDMgTm9uaG55dW4tRG9uZywgS2FuZ2hhbS1HdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtMEMgICAoaGV4KQkJU3lzdGVtIFRhbGtzIEluYy4KLTAwMDEwQyAgICAgKGJhc2UgMTYpCQlTeXN0ZW0gVGFsa3MgSW5jLgotCQkJCTRGLCBQcmltZU5paG9uYmFzaGkgQmxkLgotCQkJCTMtMzUtNiwgTmlob25iYXNoaSBIYW1hLWNobwotCQkJCUNodW8ta3UgVG9reW8gIAotCQkJCUpBUEFOCi0KLTAwLTAxLTBEICAgKGhleCkJCUNPUkVDTywgSU5DLgotMDAwMTBEICAgICAoYmFzZSAxNikJCUNPUkVDTywgSU5DLgotCQkJCTY5NjkgUm91dGUgVHJhbnNjYW5hZGlhbm5lCi0JCQkJVmlsbGUgU3QuIExhdXJlbnQgSDRUIDFWOCBRdWViZWMgCi0JCQkJQ0FOQURBCi0KLTAwLTAxLTBFICAgKGhleCkJCUJyaS1MaW5rIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotMDAwMTBFICAgICAoYmFzZSAxNikJCUJyaS1MaW5rIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCTJGLCBOby4gNjMsIENob3ctVHplIFN0cmVldAotCQkJCVRhaXBlaSAxMTQgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtMEYgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDAxMEYgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0xMCAgIChoZXgpCQlHb3RoYW0gTmV0d29ya3MKLTAwMDExMCAgICAgKGJhc2UgMTYpCQlHb3RoYW0gTmV0d29ya3MKLQkJCQkxNSBEaXNjb3ZlcnkgV2F5Ci0JCQkJQWN0b24gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTExICAgKGhleCkJCWlEaWdtIEluYy4KLTAwMDExMSAgICAgKGJhc2UgMTYpCQlpRGlnbSBJbmMuCi0JCQkJN0ZMIFNpbmRvIEIvRCAxNjA0LTIyIFNlb2Noby1Eb25nCi0JCQkJU2VvY2hvLUd1Ci0JCQkJU2VvdWwgMTM3LTA3MCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTEyICAgKGhleCkJCVNoYXJrIE11bHRpbWVkaWEgSW5jLgotMDAwMTEyICAgICAoYmFzZSAxNikJCVNoYXJrIE11bHRpbWVkaWEgSW5jLgotCQkJCTQ4ODkwIE1pbG1vbnQgRHJpdmUgICMxMDEtRAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTEzICAgKGhleCkJCU9MWU1QVVMgQ09SUE9SQVRJT04KLTAwMDExMyAgICAgKGJhc2UgMTYpCQlPTFlNUFVTIENPUlBPUkFUSU9OCi0JCQkJMi0zIEt1Ym95YW1hLWNobywgSGFjaGlvamktc2hpCi0JCQkJVG9reW8gMTkyLTg1MTIgIAotCQkJCUpBUEFOCi0KLTAwLTAxLTE0ICAgKGhleCkJCUtBTkRBIFRTVVNISU4gS09HWU8gQ08uLCBMVEQuCi0wMDAxMTQgICAgIChiYXNlIDE2KQkJS0FOREEgVFNVU0hJTiBLT0dZTyBDTy4sIExURC4KLQkJCQkyMy0yLCBOaXNoaS1Hb3RhbmRhIDItY2hvbWUsCi0JCQkJU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gMTQxLTg1MzMgIAotCQkJCUpBUEFOCi0KLTAwLTAxLTE1ICAgKGhleCkJCUVYVFJBVEVDSCBDT1JQT1JBVElPTgotMDAwMTE1ICAgICAoYmFzZSAxNikJCUVYVFJBVEVDSCBDT1JQT1JBVElPTgotCQkJCTc2MCBUaG9ybnRvbiBTdC4sIFVuaXQgMgotCQkJCVBvc3QgRmFsbHMgSUQgODM4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTE2ICAgKGhleCkJCU5ldHNwZWN0IFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTE2ICAgICAoYmFzZSAxNikJCU5ldHNwZWN0IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTM5NDUgRnJlZWRvbSBDaXJjbGUgLSBTdGUuICMzNjAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtMTcgICAoaGV4KQkJQ0FOQUwgKwotMDAwMTE3ICAgICAoYmFzZSAxNikJCUNBTkFMICsKLQkJCQkyMyBSdWUgTGVCbGFuYwotCQkJCUxlIFBvbmFudCBDCi0JCQkJNzU5MDYgUGFyaXMgQ2VkZXggMTUgIAotCQkJCUZSQU5DRQotCi0wMC0wMS0xOCAgIChoZXgpCQlFWiBEaWdpdGFsIENvLiwgTHRkLgotMDAwMTE4ICAgICAoYmFzZSAxNikJCUVaIERpZ2l0YWwgQ28uLCBMdGQuCi0JCQkJQml0dmlsbGUgQmxkZy4gUm9vbSA3MDMKLQkJCQkjMTMyNyBTZW9jaG8tRG9uZyBTZW9jaG8tR3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTE5ICAgKGhleCkJCVJUVW5ldCAoQXVzdHJhbGlhKQotMDAwMTE5ICAgICAoYmFzZSAxNikJCVJUVW5ldCAoQXVzdHJhbGlhKQotCQkJCTgvMy01IEdpbGRhIENvdXJ0Ci0JCQkJTXVsZ3JhdmUgVmljIDMxNzAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDEtMUEgICAoaGV4KQkJRUVIIERhdGFMaW5rIEdtYkgKLTAwMDExQSAgICAgKGJhc2UgMTYpCQlFRUggRGF0YUxpbmsgR21iSAotCQkJCU5pZWRlcmJlcmdlciBTdHIuIDc1Ci0JCQkJRC01MzkwOSBadWVscGljaCAgCi0JCQkJR0VSTUFOWQotCi0wMC0wMS0xQiAgIChoZXgpCQlVbml6b25lIFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTFCICAgICAoYmFzZSAxNikJCVVuaXpvbmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNUZsb29yIEhhZVN1bmcgQmxkZy4KLQkJCQk2Ny0yLVlhbmdKYWUtRG9uZwotCQkJCVNlb0Noby1LdSBTZW91bCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtMUMgICAoaGV4KQkJVW5pdmVyc2FsIFRhbGt3YXJlIENvcnBvcmF0aW9uCi0wMDAxMUMgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIFRhbGt3YXJlIENvcnBvcmF0aW9uCi0JCQkJMTAgU2Vjb25kIFN0LiBORQotCQkJCVN1aXRlICM0MDAKLQkJCQlNaW5uZWFwb2xpcyBNTiA1NTQxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtMUQgICAoaGV4KQkJQ2VudGlsbGl1bSBDb21tdW5pY2F0aW9ucwotMDAwMTFEICAgICAoYmFzZSAxNikJCUNlbnRpbGxpdW0gQ29tbXVuaWNhdGlvbnMKLQkJCQk0NzIxMSBMYWtldmlldyBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTFFICAgKGhleCkJCVByZWNpZGlhIFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTFFICAgICAoYmFzZSAxNikJCVByZWNpZGlhIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwQSBIZWFyc3QgV2F5Ci0JCQkJS2FuYXRhIE9udGFyaW8gSzJNLTJDNCAKLQkJCQlDQU5BREEKLQotMDAtMDEtMUYgICAoaGV4KQkJUkMgTmV0d29ya3MsIEluYy4KLTAwMDExRiAgICAgKGJhc2UgMTYpCQlSQyBOZXR3b3JrcywgSW5jLgotCQkJCTY3MjcgRmxhbmRlcnMgRHJpdmUgLSBTdGUuICMyMTIKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTIwICAgKGhleCkJCU9TQ0lMTE9RVUFSVFogUy5BLgotMDAwMTIwICAgICAoYmFzZSAxNikJCU9TQ0lMTE9RVUFSVFogUy5BLgotCQkJCVJ1ZSBEZXMgQnJldmFyZHMgMTYKLQkJCQkyMDAyIE5ldWNoYXRlbCAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDEtMjEgICAoaGV4KQkJV2F0Y2hndWFyZCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDEyMSAgICAgKGJhc2UgMTYpCQlXYXRjaGd1YXJkIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTYwNSBGaWZ0aCBBdmUuIFMKLQkJCQlTdWl0ZSA1MDAKLQkJCQlTZWF0dGxlIFdBIDk4MTA0LTM4OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTIyICAgKGhleCkJCVRyZW5kIENvbW11bmljYXRpb25zLCBMdGQuCi0wMDAxMjIgICAgIChiYXNlIDE2KQkJVHJlbmQgQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLQkJCQlLbmF2ZXMgQmVlY2ggRXN0YXRlCi0JCQkJTG91ZHdhdGVyLCBIaWdoIFd5Y29tYmUKLQkJCQlCdWNrcywgSFAxMCA5UVogRW5nbGFuZCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS0yMyAgIChoZXgpCQlESUdJVEFMIEVMRUNUUk9OSUNTIENPUlAuCi0wMDAxMjMgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTgtMi01MiBOYW5rbyBIaWdhc2hpLCBTdW1pbm9lLWt1Ci0JCQkJT3Nha2EsIDU1OS0wMDMxICAKLQkJCQlKQVBBTgotCi0wMC0wMS0yNCAgIChoZXgpCQlBY2VyIEluY29ycG9yYXRlZAotMDAwMTI0ICAgICAoYmFzZSAxNikJCUFjZXIgSW5jb3Jwb3JhdGVkCi0JCQkJMjFGLCA4OCwgU2VjLjEKLQkJCQlIc2luIFRhaSBXdSBSb2FkLCBIc2ljaGloCi0JCQkJVGFpcGVpIEhzaWVuIDIyMSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0yNSAgIChoZXgpCQlZQUVTVSBNVVNFTiBDTy4sIExURC4KLTAwMDEyNSAgICAgKGJhc2UgMTYpCQlZQUVTVSBNVVNFTiBDTy4sIExURC4KLQkJCQk0LTgtOCwgTmFrYW1lZ3VybwotCQkJCU1lZ3Vyby1rdSwKLQkJCQlUb2t5bywgMTUzLTg2NDQgIAotCQkJCUpBUEFOCi0KLTAwLTAxLTI2ICAgKGhleCkJCVBBQyBMYWJzCi0wMDAxMjYgICAgIChiYXNlIDE2KQkJUEFDIExhYnMKLQkJCQkzMDc5IEtpbGdvcmUgUm9hZAotCQkJCVJhbmNobyBDb3Jkb3ZhIENBIDk1NjcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0yNyAgIChoZXgpCQlPUEVOIE5ldHdvcmtzIFB0eSBMdGQKLTAwMDEyNyAgICAgKGJhc2UgMTYpCQlPUEVOIE5ldHdvcmtzIFB0eSBMdGQKLQkJCQlMZXZlbCA1LCAzNDIgRmxpbmRlcnMgU3RyZWV0Ci0JCQkJTWVsYm91cm5lICBWSUMgMzAwMAotCQkJCUFVU1RSQUxJQQotCi0wMC0wMS0yOCAgIChoZXgpCQlFbmpveVdlYiwgSW5jLgotMDAwMTI4ICAgICAoYmFzZSAxNikJCUVuam95V2ViLCBJbmMuCi0JCQkJMzAwMCBTY290dCBCbHZkLiAjMTA3Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTI5ICAgKGhleCkJCURGSSBJbmMuCi0wMDAxMjkgICAgIChiYXNlIDE2KQkJREZJIEluYy4KLQkJCQkxMDAsIEh1YW4tSG8gU3RyZWV0Ci0JCQkJSHNpLUNoaWggQ2l0eSBUYWlwZWkgSHNpZW4gCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0yQSAgIChoZXgpCQlUZWxlbWF0aWNhIFNpc3RlbXMgSW50ZWxpZ2VudGUKLTAwMDEyQSAgICAgKGJhc2UgMTYpCQlUZWxlbWF0aWNhIFNpc3RlbXMgSW50ZWxpZ2VudGUKLQkJCQlSdWEgTWlndWVsIENhc2FncmFuZGUsIDIwMAotCQkJCVNhbyBQYXVsbyAgCi0JCQkJQlJBWklMCi0KLTAwLTAxLTJCICAgKGhleCkJCVRFTEVORVQgQ28uLCBMdGQuCi0wMDAxMkIgICAgIChiYXNlIDE2KQkJVEVMRU5FVCBDby4sIEx0ZC4KLQkJCQkKLQotMDAtMDEtMkMgICAoaGV4KQkJQXJhdm94IFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTJDICAgICAoYmFzZSAxNikJCUFyYXZveCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNjcyNSA0MHRoIFBsYWNlIE5vcnRoCi0JCQkJUGx5bW91dGggTU4gNTU0NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTJEICAgKGhleCkJCUtvbW9kbyBUZWNobm9sb2d5Ci0wMDAxMkQgICAgIChiYXNlIDE2KQkJS29tb2RvIFRlY2hub2xvZ3kKLQkJCQkxNzAgS25vd2xlcyBEcml2ZQotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtMkUgICAoaGV4KQkJUEMgUGFydG5lciBMdGQuCi0wMDAxMkUgICAgIChiYXNlIDE2KQkJUEMgUGFydG5lciBMdGQuCi0JCQkJUm0gMTkwMS0xOTA4LCAxOS9GLCBTaGF0aW4gR2FsbGVyaWEKLQkJCQkxOC0yNCBTaGFuICBNZWkgU3RyZWV0LCBGbyBUYW4gU2hhdGluLCBICi0JCQkJQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0wMS0yRiAgIChoZXgpCQlUd2luaGVhZCBJbnRlcm5hdGlvbmFsIENvcnAKLTAwMDEyRiAgICAgKGJhc2UgMTYpCQlUd2luaGVhZCBJbnRlcm5hdGlvbmFsIENvcnAKLQkJCQkyRkwsIDIsIExhbmUgMjM1LCBCYW8tQ2hpYW8gUm9hZAotCQkJCUhzaW4tVGllbgotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0zMCAgIChoZXgpCQlFeHRyZW1lIE5ldHdvcmtzCi0wMDAxMzAgICAgIChiYXNlIDE2KQkJRXh0cmVtZSBOZXR3b3JrcwotCQkJCTM1ODUgTW9ucm9lIFN0cmVldAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS0zMSAgIChoZXgpCQlCb3NjaCBTZWN1cml0eSBTeXN0ZW1zLCBJbmMuCi0wMDAxMzEgICAgIChiYXNlIDE2KQkJQm9zY2ggU2VjdXJpdHkgU3lzdGVtcywgSW5jLgotCQkJCTEzMCBQZXJpbnRvbiBQYXJrd2F5Ci0JCQkJRmFpcnBvcnQgTlkgMTQ0NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTMyICAgKGhleCkJCURyYW5ldHogLSBCTUkKLTAwMDEzMiAgICAgKGJhc2UgMTYpCQlEcmFuZXR6IC0gQk1JCi0JCQkJMTAwMCBOZXcgRHVyaGFtIFJvYWQKLQkJCQlFZGlzb24gTkogMDg4MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTMzICAgKGhleCkJCUtZT1dBIEVsZWN0cm9uaWMgSW5zdHJ1bWVudHMgQwotMDAwMTMzICAgICAoYmFzZSAxNikJCUtZT1dBIEVsZWN0cm9uaWMgSW5zdHJ1bWVudHMgQwotCQkJCTMtNS0xLCBDeW9mdWdhb2thCi0JCQkJQ3lvZnUgVG9reW8gCi0JCQkJSkFQQU4KLQotMDAtMDEtMzQgICAoaGV4KQkJU2VsZWN0cm9uIFN5c3RlbXMgQUcKLTAwMDEzNCAgICAgKGJhc2UgMTYpCQlTZWxlY3Ryb24gU3lzdGVtcyBBRwotCQkJCUJlcm5zdHJlYXNzZSA3MAotCQkJCUNILTMyNTAgTHlzcwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAxLTM1ICAgKGhleCkJCUtEQyBDb3JwLgotMDAwMTM1ICAgICAoYmFzZSAxNikJCUtEQyBDb3JwLgotCQkJCTIwMC0xMSBBbllhbmcgNyBkb25nCi0JCQkJTWFuQW4tR3UgQW5ZYW5lLVNpIEt5dW5nZ2ktZG8KLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS0zNiAgIChoZXgpCQlDeWJlclRBTiBUZWNobm9sb2d5LCBJbmMuCi0wMDAxMzYgICAgIChiYXNlIDE2KQkJQ3liZXJUQU4gVGVjaG5vbG9neSwgSW5jLgotCQkJCTYyNiwgQmxkZy41MywgMTk1LTU2IFNlYy40Ci0JCQkJQ2h1bmcgSHNpbmcgUmQgQ2h1dHVuZywgSHNpbmNodQotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLTM3ICAgKGhleCkJCUlUIEZhcm0gQ29ycG9yYXRpb24KLTAwMDEzNyAgICAgKGJhc2UgMTYpCQlJVCBGYXJtIENvcnBvcmF0aW9uCi0JCQkJQXNhc2hpc2VpbWVpIEZ1Y2h1IEJsZGcuIDExRgotCQkJCTEtMTQtMSBGdWNodS1jaG8sIEZ1Y2h1LXNoaSBUb2t5bwotCQkJCTE4My0wMDU1IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtMzggICAoaGV4KQkJWEFWaSBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMDEzOCAgICAgKGJhc2UgMTYpCQlYQVZpIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCTlGLCBOby4gMTI5LCBIc2luZyBUZSBSZCwKLQkJCQlTYW5jaHVuZyBDaXR5ICBUYWlwZWkgSHNpZW4KLQkJCQkyNDEgVEFJV0FOIDI0MSBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS0zOSAgIChoZXgpCQlQb2ludCBNdWx0aW1lZGlhIFN5c3RlbXMKLTAwMDEzOSAgICAgKGJhc2UgMTYpCQlQb2ludCBNdWx0aW1lZGlhIFN5c3RlbXMKLQkJCQk0UmEgNTA3LCBTaGlod2EgSW5kdXN0cmlhbCBDb21wbGV4Ci0JCQkJNjY5LTggU3VuZ2tvZy1Eb25nLCBBbnNhbi1DaXR5LCBLeXVuZ2dpLQotCQkJCUtvcmVhIDQyNS0xMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtM0EgICAoaGV4KQkJU0hFTENBRCBDT01NVU5JQ0FUSU9OUywgTFRELgotMDAwMTNBICAgICAoYmFzZSAxNikJCVNIRUxDQUQgQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQlQLk8uIEJveCA4NTEzCi0JCQkJTmV3IEluZHVzdHJpYWwgWm9uZSBOZXRhbnlhIDQyNTA0Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAxLTNCICAgKGhleCkJCUJOQSBTWVNURU1TCi0wMDAxM0IgICAgIChiYXNlIDE2KQkJQk5BIFNZU1RFTVMKLQkJCQkxNjM3IFMuIE1haW4gU3RyZWV0Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTNDICAgKGhleCkJCVRJVyBTWVNURU1TCi0wMDAxM0MgICAgIChiYXNlIDE2KQkJVElXIFNZU1RFTVMKLQkJCQkyMjExIExhd3NvbiBMYW5lCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTNEICAgKGhleCkJCVJpc2NTdGF0aW9uIEx0ZC4KLTAwMDEzRCAgICAgKGJhc2UgMTYpCQlSaXNjU3RhdGlvbiBMdGQuCi0JCQkJMTY4IEVsbGlvdHQgU3RyZWV0Ci0JCQkJVHlsZGVzbGV5IE0yOSA4MDUKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAxLTNFICAgKGhleCkJCUFzY29tIFRhdGVjbyBBQgotMDAwMTNFICAgICAoYmFzZSAxNikJCUFzY29tIFRhdGVjbyBBQgotCQkJCUJveCA4NzgzCi0JCQkJNDAyNzYgR290ZWJvcmcKLQkJCQlTV0VERU4KLQotMDAtMDEtM0YgICAoaGV4KQkJTmVpZ2hib3IgV29ybGQgQ28uLCBMdGQuCi0wMDAxM0YgICAgIChiYXNlIDE2KQkJTmVpZ2hib3IgV29ybGQgQ28uLCBMdGQuCi0JCQkJMTE0QSBZRVJDLCAxMzQsIFNoaW5jaG9uX2RvbmcKLQkJCQlTZW9kYWVtdW5fa3UgU2VvdWwKLQkJCQkxMjAtNzQ5IDEyMC03NDkgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNDAgICAoaGV4KQkJU2VuZHRlayBDb3Jwb3JhdGlvbgotMDAwMTQwICAgICAoYmFzZSAxNikJCVNlbmR0ZWsgQ29ycG9yYXRpb24KLQkJCQkxMkYtMywgMzMzLCBTZWMuMQotCQkJCUt1YW5nLUZ1IFJvYWQgSHNpbmNodQotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtNDEgICAoaGV4KQkJQ0FCTEUgUFJJTlQKLTAwMDE0MSAgICAgKGJhc2UgMTYpCQlDQUJMRSBQUklOVAotCQkJCUpvemVmIENhcmR5bnN0cmFhdCAxNgotCQkJCUIgIC0gOTQyMCBFcnBlLU1lcmUKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC0wMS00MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxNDIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTQzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDE0MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDQgICAoaGV4KQkJRU1DIENvcnBvcmF0aW9uCi0wMDAxNDQgICAgIChiYXNlIDE2KQkJRU1DIENvcnBvcmF0aW9uCi0JCQkJMjI4IFNvdXRoIFN0LgotCQkJCUhvcGtpbnRvbiBNQSAwMTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDUgICAoaGV4KQkJV0lOU1lTVEVNUywgSU5DLgotMDAwMTQ1ICAgICAoYmFzZSAxNikJCVdJTlNZU1RFTVMsIElOQy4KLQkJCQk3MTUgU3RhZGl1bSBEcml2ZQotCQkJCUFybGluZ3RvbiBUWCA3NjAxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDYgICAoaGV4KQkJVGVzY28gQ29udHJvbHMsIEluYy4KLTAwMDE0NiAgICAgKGJhc2UgMTYpCQlUZXNjbyBDb250cm9scywgSW5jLgotCQkJCVAuTy4gQm94IDIzOTAxMgotCQkJCVNhY3JhbWVudG8gQ0EgOTU4MjMtOTAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDcgICAoaGV4KQkJWmhvbmUgVGVjaG5vbG9naWVzCi0wMDAxNDcgICAgIChiYXNlIDE2KQkJWmhvbmUgVGVjaG5vbG9naWVzCi0JCQkJNzAwMSBPYWtwb3J0IFN0cmVldAotCQkJCU9ha2xhbmQgQ0EgOTQ2MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTQ4ICAgKGhleCkJCVgtdHJhV2ViIEluYy4KLTAwMDE0OCAgICAgKGJhc2UgMTYpCQlYLXRyYVdlYiBJbmMuCi0JCQkJNjc1MCBXZXN0IDkzcmQgU3RyZWV0IC0gU3RlLiAjMjEwCi0JCQkJT3ZlcmxhbmQgUGFyayBLUyA2NjIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNDkgICAoaGV4KQkJVC5ELlQuIFRyYW5zZmVyIERhdGEgVGVzdCBHbWJICi0wMDAxNDkgICAgIChiYXNlIDE2KQkJVC5ELlQuIFRyYW5zZmVyIERhdGEgVGVzdCBHbWJICi0JCQkJU2llbWVuc3N0cmFzc2UgMTgKLQkJCQk4NDA1MSBFc3NlbmJhY2gKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS00QSAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0wMDAxNEEgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMgNS0xLTIKLQkJCQlLaXRhc2hpbmFnYXdhLAotCQkJCVRva3lvIFNoaW5hZ2F3YS1rdSAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTAwLTAxLTRCICAgKGhleCkJCUVubm92YXRlIE5ldHdvcmtzLCBJbmMuCi0wMDAxNEIgICAgIChiYXNlIDE2KQkJRW5ub3ZhdGUgTmV0d29ya3MsIEluYy4KLQkJCQk2MCBDb2RtYW4gSGlsbCBSb2FkCi0JCQkJQm94Ym9yb3VnaCBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNEMgICAoaGV4KQkJQmVya2VsZXkgUHJvY2VzcyBDb250cm9sCi0wMDAxNEMgICAgIChiYXNlIDE2KQkJQmVya2VsZXkgUHJvY2VzcyBDb250cm9sCi0JCQkJNDEyNCBMYWtlc2lkZSBEcgotCQkJCVJpY2htb25kIENBIDk0ODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS00RCAgIChoZXgpCQlTaGluIEtpbiBFbnRlcnByaXNlcyBDby4sIEx0ZAotMDAwMTREICAgICAoYmFzZSAxNikJCVNoaW4gS2luIEVudGVycHJpc2VzIENvLiwgTHRkCi0JCQkJNywgRlUgSHNpbmcgU3QuIFR1ZSBDaGVuZyBJbmQuCi0JCQkJRGlzdC4gVGFpcGVpCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLTRFICAgKGhleCkJCVdJTiBFbnRlcnByaXNlcywgSW5jLgotMDAwMTRFICAgICAoYmFzZSAxNikJCVdJTiBFbnRlcnByaXNlcywgSW5jLgotCQkJCTMwMCBXaWxsb3cgU3RyZWV0IFNvdXRoCi0JCQkJTm9ydGggQW5kb3ZlciBNQSAwMTg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNEYgICAoaGV4KQkJQURUUkFOIElOQwotMDAwMTRGICAgICAoYmFzZSAxNikJCUFEVFJBTiBJTkMKLQkJCQk5MDEgRXhwbG9yZXIgQmx2ZC4KLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODA2LTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTUwICAgKGhleCkJCUdJTEFUIENPTU1VTklDQVRJT05TLCBMVEQuCi0wMDAxNTAgICAgIChiYXNlIDE2KQkJR0lMQVQgQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQkyMS9EIFllZ2lhIEthcGF5aW0gU3RyZWV0Ci0JCQkJUGV0YWNoLVRpa3ZhIDQ5MTMwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAxLTUxICAgKGhleCkJCUVuc2VtYmxlIENvbW11bmljYXRpb25zCi0wMDAxNTEgICAgIChiYXNlIDE2KQkJRW5zZW1ibGUgQ29tbXVuaWNhdGlvbnMKLQkJCQk2MjU2IEdyZWVubWFuIERyaXZlIC0gU3RlLiAjNDAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS01MiAgIChoZXgpCQlDSFJPTUFURUsgSU5DLgotMDAwMTUyICAgICAoYmFzZSAxNikJCUNIUk9NQVRFSyBJTkMuCi0JCQkJNi0xMCwgTWl5YXpha2kgMi1DaG9tZQotCQkJCU1peWFtYWUtS3UsIEthd2FzYWtpLXNoaSBLYW5hZ2F3YSwgMjE2LTAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLTUzICAgKGhleCkJCUFSQ0hURUsgVEVMRUNPTSBDT1JQT1JBVElPTgotMDAwMTUzICAgICAoYmFzZSAxNikJCUFSQ0hURUsgVEVMRUNPTSBDT1JQT1JBVElPTgotCQkJCTRGLCBOby45IExhbmUgMTMwLCBNaW4tQ2h5dWFuIFJkLgotCQkJCUhzaW4tVGllbiBUYWlwZWkKLQkJCQkyMzEgVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS01NCAgIChoZXgpCQlHM00gQ29ycG9yYXRpb24KLTAwMDE1NCAgICAgKGJhc2UgMTYpCQlHM00gQ29ycG9yYXRpb24KLQkJCQk0MzIwIFN0ZXZlbnMgQ3JlZWsgQmx2ZC4gLSBTdGUuICMyNzUKLQkJCQlTYW4gSm9zZSBDQSA5NTEyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNTUgICAoaGV4KQkJUHJvbWlzZSBUZWNobm9sb2d5LCBJbmMuCi0wMDAxNTUgICAgIChiYXNlIDE2KQkJUHJvbWlzZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNEYsIDEsIFByb3NwZXJpdHkgMXN0IFJvYWQKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyayBIc2luLUNodQotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtNTYgICAoaGV4KQkJRklSRVdJUkVESVJFQ1QuQ09NLCBJTkMuCi0wMDAxNTYgICAgIChiYXNlIDE2KQkJRklSRVdJUkVESVJFQ1QuQ09NLCBJTkMuCi0JCQkJNDEzMiBTcGljZXdvb2QgU3ByaW5ncyBSZCAtICNJLTQKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTU3ICAgKGhleCkJCVNZU1dBVkUgQ08uLCBMVEQKLTAwMDE1NyAgICAgKGJhc2UgMTYpCQlTWVNXQVZFIENPLiwgTFRECi0JCQkJRG9uZ2hvIEIvRCA1RiwgMjIxLTIKLQkJCQlOb25oeXVuLURvbmcsIEthbmduYW0tR3UgU2VvdWwKLQkJCQlLT1JFQSAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTU4ICAgKGhleCkJCUVsZWN0cm8gSW5kdXN0cmllcy9HYXVnZSBUZWNoCi0wMDAxNTggICAgIChiYXNlIDE2KQkJRWxlY3RybyBJbmR1c3RyaWVzL0dhdWdlIFRlY2gKLQkJCQkxODAwIFNoYW1lcyBEcml2ZQotCQkJCVdlc3RidXJ5IE5ZIDExNTkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS01OSAgIChoZXgpCQlTMSBDb3Jwb3JhdGlvbgotMDAwMTU5ICAgICAoYmFzZSAxNikJCVMxIENvcnBvcmF0aW9uCi0JCQkJUiZEIENlbnRlciwgUzEgQmxkZy4KLQkJCQk1OS04LCBOb25oeXVuLURvbmcgS2FuZ25hbS1LdSBTZW91bAotCQkJCUtPUkVBIDEzNS0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNUEgICAoaGV4KQkJRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcKLTAwMDE1QSAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZwotCQkJCURWQiwgJSBFdXJvcGVhbiBCcm9hZGNhc3RpbmcgVW5pb24KLQkJCQkxN0EgQW5jaWVubmUgUm91dGUgQ0gtMTIxOCBHcmFuZCBTYWNvbm5lCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wMS01QiAgIChoZXgpCQlJVEFMVEVMIFMucC5BL1JGLVVQLUkKLTAwMDE1QiAgICAgKGJhc2UgMTYpCQlJVEFMVEVMIFMucC5BL1JGLVVQLUkKLQkJCQkyMDAxOSBDYXN0LlNldHRpbW8gTS5zZSAoTUkpCi0JCQkJSVRBTFkKLQkJCQlJVEFMWQotCi0wMC0wMS01QyAgIChoZXgpCQlDQURBTlQgSU5DLgotMDAwMTVDICAgICAoYmFzZSAxNikJCUNBREFOVCBJTkMuCi0JCQkJNDM0MyBDb21tZXJjZSBDb3VydCAtIFN0ZS4gIzIwNwotCQkJCUxpc2xlIElMIDYwNTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS01RCAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMDE1RCAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJTWVubG8gUGFyayBDQSA5NTAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNUUgICAoaGV4KQkJQkVTVCBURUNITk9MT0dZIENPLiwgTFRELgotMDAwMTVFICAgICAoYmFzZSAxNikJCUJFU1QgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQk3RiwgSGFlc3VuZyBCL0QKLQkJCQkxMTUtMTIgTm9uaHl1bi1kb25nIEthbmduYW0tS3UgU2VvdWwsIDEzCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNUYgICAoaGV4KQkJRElHSVRBTCBERVNJR04gR21iSAotMDAwMTVGICAgICAoYmFzZSAxNikJCURJR0lUQUwgREVTSUdOIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk2YQotCQkJCUJlcmxpbiBELTEwNTU5Ci0JCQkJR0VSTUFOWQotCi0wMC0wMS02MCAgIChoZXgpCQlFTE1FWCBDby4sIExURC4KLTAwMDE2MCAgICAgKGJhc2UgMTYpCQlFTE1FWCBDby4sIExURC4KLQkJCQkxNi0zMCBLaW1hY2hpCi0JCQkJQW9iYWt1IFNlbmRhaS1TaGkgTWl5YWdpLUtlbgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtNjEgICAoaGV4KQkJTWV0YSBNYWNoaW5lIFRlY2hub2xvZ3kKLTAwMDE2MSAgICAgKGJhc2UgMTYpCQlNZXRhIE1hY2hpbmUgVGVjaG5vbG9neQotCQkJCTQwMCBTaWx2ZXIgQ2VkYXIgQ291cnQgLSBzdGUuICMyMjAKLQkJCQlDaGFwZWwgSGlsbCBOQyAyNzUxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNjIgICAoaGV4KQkJQ3lnbmV0IFRlY2hub2xvZ2llcywgSW5jLgotMDAwMTYyICAgICAoYmFzZSAxNikJCUN5Z25ldCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNDExIExlTWF5IERyaXZlICMzMDEKLQkJCQlDYXJyb2xsdG9uIFRYIDc1MDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS02MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAxNjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTY0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDE2NCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNjUgICAoaGV4KQkJQWlyU3dpdGNoIENvcnBvcmF0aW9uCi0wMDAxNjUgICAgIChiYXNlIDE2KQkJQWlyU3dpdGNoIENvcnBvcmF0aW9uCi0JCQkJMzdFYXN0IDIwMFNvdXRoCi0JCQkJU3ByaW5ndmlsbGUgVVQgODQ2NjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTY2ICAgKGhleCkJCVRDIEdST1VQIEEvUwotMDAwMTY2ICAgICAoYmFzZSAxNikJCVRDIEdST1VQIEEvUwotCQkJCVNpbmRhbHN2ZWogMzQKLQkJCQlSaXNza292ICBESy04MjQwCi0JCQkJREVOTUFSSwotCi0wMC0wMS02NyAgIChoZXgpCQlISU9LSSBFLkUuIENPUlBPUkFUSU9OCi0wMDAxNjcgICAgIChiYXNlIDE2KQkJSElPS0kgRS5FLiBDT1JQT1JBVElPTgotCQkJCTgxIEtvaXp1bWksIFVlZGEsIE5hZ2FubwotCQkJCTM4Ni0xMTkyIDM4Ni0xMTkyIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtNjggICAoaGV4KQkJVklUQU5BIENPUlBPUkFUSU9OCi0wMDAxNjggICAgIChiYXNlIDE2KQkJVklUQU5BIENPUlBPUkFUSU9OCi0JCQkJMjUwMCBEb24gUmVpZCBEcml2ZQotCQkJCU90dGF3YSwgT250YXJpbwotCQkJCUsxSCAxRTEgSzFIIDFFMSBDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDEtNjkgICAoaGV4KQkJQ2VsZXN0aXggTmV0d29ya3MgUHRlIEx0ZC4KLTAwMDE2OSAgICAgKGJhc2UgMTYpCQlDZWxlc3RpeCBOZXR3b3JrcyBQdGUgTHRkLgotCQkJCTE4IFRhbm5lcnkgTGFuZSAjMDUtMDMKLQkJCQlMaWFuIFRvbmcgQnVpbGRpbmcKLQkJCQlTSU5HQVBPUkUgMzQ3NzgwCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTAxLTZBICAgKGhleCkJCUFMSVRFQwotMDAwMTZBICAgICAoYmFzZSAxNikJCUFMSVRFQwotCQkJCUxhdmFsIFRlY2hub3BvbGUgQi5QLiAxMDIKLQkJCQk1MzAwMSBMQVZBTCBDZWRleAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMS02QiAgIChoZXgpCQlMaWdodENoaXAsIEluYy4KLTAwMDE2QiAgICAgKGJhc2UgMTYpCQlMaWdodENoaXAsIEluYy4KLQkJCQk1IEluZHVzdHJpYWwgV2F5Ci0JCQkJU2FsZW0gTkggMDMwNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTZDICAgKGhleCkJCUZPWENPTk4KLTAwMDE2QyAgICAgKGJhc2UgMTYpCQlGT1hDT05OCi0JCQkJNjEyNSBQaHlsbGlzIERyaXZlCi0JCQkJQ3lwcmVzcyBDQSA5MDYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNkQgICAoaGV4KQkJQ2FycmllckNvbW0gSW5jLgotMDAwMTZEICAgICAoYmFzZSAxNikJCUNhcnJpZXJDb21tIEluYy4KLQkJCQk1MzkgRW5jaW50YXMgQmx2ZC4KLQkJCQlFbmNpbnRhcyBDQSA5MjAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtNkUgICAoaGV4KQkJQ29ua2xpbiBDb3Jwb3JhdGlvbgotMDAwMTZFICAgICAoYmFzZSAxNikJCUNvbmtsaW4gQ29ycG9yYXRpb24KLQkJCQk2MTQxIENyb29rZWQgQ3JlZWsgUm9hZAotCQkJCU5vcmNyb3NzIEdBIDMwMDkyLTMxOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTZGICAgKGhleCkJCUlua2VsIENvcnAuCi0wMDAxNkYgICAgIChiYXNlIDE2KQkJSW5rZWwgQ29ycC4KLQkJCQlDaGVvbmdDaGVvbi1Eb25nLCBCdVB5ZW9uZy1HdSwKLQkJCQlJbmNoZW9uLVNpICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtNzAgICAoaGV4KQkJRVNFIEVtYmVkZGVkIFN5c3RlbSBFbmdpbmVlcidnCi0wMDAxNzAgICAgIChiYXNlIDE2KQkJRVNFIEVtYmVkZGVkIFN5c3RlbSBFbmdpbmVlcidnCi0JCQkJTXVlaGxiYWNoc3RyLiAyMAotCQkJCTc4MzUxIEJvZG1hbi1MdWR3aWdzaGFmZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS03MSAgIChoZXgpCQlBbGxpZWQgRGF0YSBUZWNobm9sb2dpZXMKLTAwMDE3MSAgICAgKGJhc2UgMTYpCQlBbGxpZWQgRGF0YSBUZWNobm9sb2dpZXMKLQkJCQlQYXNjYWx3ZWcgMSwKLQkJCQkzMjA4IEtMIFNwaWprZW5pc3NlCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDEtNzIgICAoaGV4KQkJVGVjaG5vTGFuZCBDby4sIExURC4KLTAwMDE3MiAgICAgKGJhc2UgMTYpCQlUZWNobm9MYW5kIENvLiwgTFRELgotCQkJCTMtMTctMTEgQWtlYm9uby1jaG8KLQkJCQlGdWt1eWFtYS1jaXR5IEhpcm9zaGltYSA3MjEtMDkyNQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtNzMgICAoaGV4KQkJQU1DQwotMDAwMTczICAgICAoYmFzZSAxNikJCUFNQ0MKLQkJCQk2MjkwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03NCAgIChoZXgpCQlDeWJlck9wdGljcyBDb3Jwb3JhdGlvbgotMDAwMTc0ICAgICAoYmFzZSAxNikJCUN5YmVyT3B0aWNzIENvcnBvcmF0aW9uCi0JCQkJNTkwMCBHb2xkZW4gSGlsbHMgRHJpdmUKLQkJCQlHb2xkZW4gVmFsbGV5IE1OIDU1NDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03NSAgIChoZXgpCQlSYWRpYW50IENvbW11bmljYXRpb25zIENvcnAuCi0wMDAxNzUgICAgIChiYXNlIDE2KQkJUmFkaWFudCBDb21tdW5pY2F0aW9ucyBDb3JwLgotCQkJCTUwMDEgSGFkbGV5IFJvYWQKLQkJCQlTb3V0aCBQbGFpbmZpZWxkIE5KIDA3MDgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03NiAgIChoZXgpCQlPcmllbnQgU2lsdmVyIEVudGVycHJpc2VzCi0wMDAxNzYgICAgIChiYXNlIDE2KQkJT3JpZW50IFNpbHZlciBFbnRlcnByaXNlcwotCQkJCTg3NDAgV2hpdGUgT2FrIEF2ZW51ZQotCQkJCVJhbmNobyBDdWNhbW9uZ2EgQ0EgOTE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTc3ICAgKGhleCkJCUVEU0wKLTAwMDE3NyAgICAgKGJhc2UgMTYpCQlFRFNMCi0JCQkJSGFiYXJ6ZWwgMSBzdAotCQkJCVJhbWF0IEFoYXlhbCBUZWwtQXZpdgotCQkJCUlTUkFFTCA2OTcxMAotCQkJCUlTUkFFTAotCi0wMC0wMS03OCAgIChoZXgpCQlNQVJHSSBTeXN0ZW1zLCBJbmMuCi0wMDAxNzggICAgIChiYXNlIDE2KQkJTUFSR0kgU3lzdGVtcywgSW5jLgotCQkJCTMxNTUgS2Vhcm5leSBTdHJlZXQuIC0gU3RlLiMyMDAKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS03OSAgIChoZXgpCQlXSVJFTEVTUyBURUNITk9MT0dZLCBJTkMuCi0wMDAxNzkgICAgIChiYXNlIDE2KQkJV0lSRUxFU1MgVEVDSE5PTE9HWSwgSU5DLgotCQkJCUFuYW0gQmxkZy4gMkZsLCAxNTQtMTcKLQkJCQlTYW1zdW5nLURvbmcsIEthbmduYW0tS3UgU2VvdWwsIDEzNS0wOTAKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS03QSAgIChoZXgpCQlDaGVuZ2R1IE1haXB1IEVsZWN0cmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDAxN0EgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSBNYWlwdSBFbGVjdHJpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCU5BTllJIEJVSUxESU5HLCBDT05TVUxBVEUgUkQuLAotCQkJCUNIRU5HRFUKLQkJCQlQLlIuIENISU5BCi0JCQkJQ0hJTkEKLQotMDAtMDEtN0IgICAoaGV4KQkJSGVpZGVsYmVyZ2VyIERydWNrbWFzY2hpbmVuIEFHCi0wMDAxN0IgICAgIChiYXNlIDE2KQkJSGVpZGVsYmVyZ2VyIERydWNrbWFzY2hpbmVuIEFHCi0JCQkJS3VyZnVlcnN0ZW5hbmxhZ2UgNTItNjAKLQkJCQk2OTExNSBIZWlkZWxiZXJnCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDEtN0MgICAoaGV4KQkJQUctRSBHbWJICi0wMDAxN0MgICAgIChiYXNlIDE2KQkJQUctRSBHbWJICi0JCQkJRGVubmV3YXJ0c3RyLiAyNwotCQkJCTUyMDY4IEFhY2hlbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLTdEICAgKGhleCkJCVRoZXJtb1F1ZXN0Ci0wMDAxN0QgICAgIChiYXNlIDE2KQkJVGhlcm1vUXVlc3QKLQkJCQkzNTUgUml2ZXIgT2FrcyBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTdFICAgKGhleCkJCUFEVEVLIFN5c3RlbSBTY2llbmNlIENvLiwgTHRkLgotMDAwMTdFICAgICAoYmFzZSAxNikJCUFEVEVLIFN5c3RlbSBTY2llbmNlIENvLiwgTHRkLgotCQkJCVlCUCBXZXN0IFRvd2VyCi0JCQkJMTM0IEdvaGRvLWNobywKLQkJCQlIb2RvZ2F5YSBZb2tvaGFtYSAKLQkJCQlKQVBBTgotCi0wMC0wMS03RiAgIChoZXgpCQlFeHBlcmllbmNlIE11c2ljIFByb2plY3QKLTAwMDE3RiAgICAgKGJhc2UgMTYpCQlFeHBlcmllbmNlIE11c2ljIFByb2plY3QKLQkJCQkxMTAgLTExMHRoIEF2ZW51ZSBORSAtIFN0ZS4gIzQwMAotCQkJCUJlbGxldnVlIFdBIDk4MDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS04MCAgIChoZXgpCQlBT3BlbiwgSW5jLgotMDAwMTgwICAgICAoYmFzZSAxNikJCUFPcGVuLCBJbmMuCi0JCQkJNkYsIDg4LCBTZWMuMSwgSHNpbiBUYWkKLQkJCQlXdSBSb2FkLCBIc2ljaGloIFRhaXBlaSBIc2llbiAyMjEKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtODEgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDAxODEgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJMTEwMCBUZWNobm9sb2d5IFBhcmsgRHJpdmUKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTgyICAgKGhleCkJCURJQ0EgVEVDSE5PTE9HSUVTIEFHCi0wMDAxODIgICAgIChiYXNlIDE2KQkJRElDQSBURUNITk9MT0dJRVMgQUcKLQkJCQlSb3RoZXJzdHIsIDE5Ci0JCQkJRC0xMDI0NSBCZXJsaW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS04MyAgIChoZXgpCQlBTklURSBURUxFQ09NUwotMDAwMTgzICAgICAoYmFzZSAxNikJCUFOSVRFIFRFTEVDT01TCi0JCQkJMTI3IEZsZWV0IFJvYWQsIEZsZWV0Ci0JCQkJSGFtcHNoaXJlLCBHVUIgOFBECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS04NCAgIChoZXgpCQlTSUVCICYgTUVZRVIgQUcKLTAwMDE4NCAgICAgKGJhc2UgMTYpCQlTSUVCICYgTUVZRVIgQUcKLQkJCQlBdWYgZGVtIFNjaG1hYXJrYW1wIDIxCi0JCQkJRC0yMTMzOSBMdW5lYnVyZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLTg1ICAgKGhleCkJCUhpdGFjaGkgQWxva2EgTWVkaWNhbCwgTHRkLgotMDAwMTg1ICAgICAoYmFzZSAxNikJCUhpdGFjaGkgQWxva2EgTWVkaWNhbCwgTHRkLgotCQkJCTMtNy0xOSwgSW1haSBPbWUtY2l0eQotCQkJCVRva3lvCi0JCQkJMTk4LTg1NzcgCi0JCQkJSkFQQU4KLQotMDAtMDEtODYgICAoaGV4KQkJVXdlIERpc2NoCi0wMDAxODYgICAgIChiYXNlIDE2KQkJVXdlIERpc2NoCi0JCQkJRWljaGVuaGFpbnN0cmFzc2UgMTQKLQkJCQk5MTIwNyBMYXVmIGEuZC4gUGVnbml0egotCQkJCUdFUk1BTlkKLQotMDAtMDEtODcgICAoaGV4KQkJaTJTRSBHbWJICi0wMDAxODcgICAgIChiYXNlIDE2KQkJaTJTRSBHbWJICi0JCQkJUm9iZXJ0LVNjaHVtYW5uLVN0ci4gOAotCQkJCUxlaXB6aWcgIDA0MTA3Ci0JCQkJR0VSTUFOWQotCi0wMC0wMS04OCAgIChoZXgpCQlMWENPIFRlY2hub2xvZ2llcyBhZwotMDAwMTg4ICAgICAoYmFzZSAxNikJCUxYQ08gVGVjaG5vbG9naWVzIGFnCi0JCQkJR2ltbWVyc3RyLiA2OQotCQkJCUQtMTAxMTcgQmVybGluCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDEtODkgICAoaGV4KQkJUmVmcmFjdGlvbiBUZWNobm9sb2d5LCBJbmMuCi0wMDAxODkgICAgIChiYXNlIDE2KQkJUmVmcmFjdGlvbiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjYyNiBMb21iYXJkeSBMYW5lIC0gU3RlLiAjMTA1Ci0JCQkJRGFsbGFzIFRYIDc1MjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS04QSAgIChoZXgpCQlST0kgQ09NUFVURVIgQUcKLTAwMDE4QSAgICAgKGJhc2UgMTYpCQlST0kgQ09NUFVURVIgQUcKLQkJCQlXZXJuZXItdm9uLVNpZW1lbnMtU3RyLiAxCi0JCQkJOTM0MjYgUm9kaW5nCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDEtOEIgICAoaGV4KQkJTmV0TGlua3MgQ28uLCBMdGQuCi0wMDAxOEIgICAgIChiYXNlIDE2KQkJTmV0TGlua3MgQ28uLCBMdGQuCi0JCQkJM0YgRHNjb20gQmxkZy4sIDIzOC0zCi0JCQkJUG9pLWRvbmcsIEthbmduYW0tS3UgU2VvdWwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS04QyAgIChoZXgpCQlNZWdhIFZpc2lvbgotMDAwMThDICAgICAoYmFzZSAxNikJCU1lZ2EgVmlzaW9uCi0JCQkJNTc2NSBUaG9ybndvb2QgRHJpdmUKLQkJCQlHb2xldGEgQ0EgOTMxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLThEICAgKGhleCkJCUF1ZGVTaSBUZWNobm9sb2dpZXMKLTAwMDE4RCAgICAgKGJhc2UgMTYpCQlBdWRlU2kgVGVjaG5vbG9naWVzCi0JCQkJU3VpdGUgMTgwLCA2ODE1Ci0JCQkJOHRoIFN0cmVldCBOLkUuIENhbGdhcnkKLQkJCQlBQiBDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDEtOEUgICAoaGV4KQkJTG9naXRlYyBDb3Jwb3JhdGlvbgotMDAwMThFICAgICAoYmFzZSAxNikJCUxvZ2l0ZWMgQ29ycG9yYXRpb24KLQkJCQk4MjY4IFJva3Vkb3VoYXJhLCBNaXN1enUKLQkJCQlJbmEsIE5hZ2FubwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtOEYgICAoaGV4KQkJS2VuZXRlYywgSW5jLgotMDAwMThGICAgICAoYmFzZSAxNikJCUtlbmV0ZWMsIEluYy4KLQkJCQkxMTUgSHVybGV5IFJvYWQKLQkJCQlPeGZvcmQgQ1QgMDY3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTkwICAgKGhleCkJCVNNSy1NCi0wMDAxOTAgICAgIChiYXNlIDE2KQkJU01LLU0KLQkJCQkxMDU1IFRpZXJyYSBEZWwgUmV5Ci0JCQkJQ2h1bGEgVmlzdGEgQ0EgOTE5MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTkxICAgKGhleCkJCVNZUkVEIERhdGEgU3lzdGVtcwotMDAwMTkxICAgICAoYmFzZSAxNikJCVNZUkVEIERhdGEgU3lzdGVtcwotCQkJCTI3MiBMYW5lcyBNaWxsIFJvYWQKLQkJCQlIb3dlbGwgTkogMDc3MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTkyICAgKGhleCkJCVRleGFzIERpZ2l0YWwgU3lzdGVtcwotMDAwMTkyICAgICAoYmFzZSAxNikJCVRleGFzIERpZ2l0YWwgU3lzdGVtcwotCQkJCTQwMCBUZWNobm9sb2d5IFBhcmt3YXkKLQkJCQlDb2xsZWdlIFN0YXRpb24gVFggNzc4NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTkzICAgKGhleCkJCUhhbmJ5dWwgVGVsZWNvbSBDby4sIEx0ZC4KLTAwMDE5MyAgICAgKGJhc2UgMTYpCQlIYW5ieXVsIFRlbGVjb20gQ28uLCBMdGQuCi0JCQkJNXRoIEZsLiBPa3NhbiBCbGRnLgotCQkJCTE1Ny0zMyBTYW1zdW5nLURvbmcgS2FuZ25hbS1rdSBTZW91bAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTk0ICAgKGhleCkJCUNhcGl0YWwgRXF1aXBtZW50IENvcnBvcmF0aW9uCi0wMDAxOTQgICAgIChiYXNlIDE2KQkJQ2FwaXRhbCBFcXVpcG1lbnQgQ29ycG9yYXRpb24KLQkJCQk5MDAgTWlkZGxlc2V4IFR1cm5waWtlIC0gQmxkZy4gMgotCQkJCUJpbGxlcmljYSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtOTUgICAoaGV4KQkJU2VuYSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDE5NSAgICAgKGJhc2UgMTYpCQlTZW5hIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTExNi0yMyBTaGlubGltLWRvbmcKLQkJCQlPbnN1bmcgQmxkZy4gOHRoIEZsb29yIEt3YW5hay1rdSBTZW91bAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLTk2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDE5NiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtOTcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMTk3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUgLSBTSkEtMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS05OCAgIChoZXgpCQlEYXJpbSBWaXNpb24KLTAwMDE5OCAgICAgKGJhc2UgMTYpCQlEYXJpbSBWaXNpb24KLQkJCQlUYWVqb24gRXhwbyBWZW50dXJlIFRvd24KLQkJCQkzLTEgRG9yeW9uZy1kb25nLCBZdXN1bmctZ3UgVGFlam9uCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtOTkgICAoaGV4KQkJSGVpU2VpIEVsZWN0cm9uaWNzCi0wMDAxOTkgICAgIChiYXNlIDE2KQkJSGVpU2VpIEVsZWN0cm9uaWNzCi0JCQkJNS83IEFsbGV5IDgsIExhbmUgNDUKLQkJCQlQb2FsdHNpbiBSb2FkIEhzaW50aWVuIENpdHkKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLTlBICAgKGhleCkJCUxFVU5JRyBHbWJICi0wMDAxOUEgICAgIChiYXNlIDE2KQkJTEVVTklHIEdtYkgKLQkJCQlXaWxoZWxtLU9zdHdhbGQtU3RyLiAxNwotCQkJCTUzNzIxIFNpZWdidXJnCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDEtOUIgICAoaGV4KQkJS3lvdG8gTWljcm9jb21wdXRlciBDby4sIEx0ZC4KLTAwMDE5QiAgICAgKGJhc2UgMTYpCQlLeW90byBNaWNyb2NvbXB1dGVyIENvLiwgTHRkLgotCQkJCTItMjcgSGFjaGlqb2dhb2thCi0JCQkJTmFnYW9rYWt5by1jaXR5IEt5b3RvCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMS05QyAgIChoZXgpCQlKRFMgVW5pcGhhc2UgSW5jLgotMDAwMTlDICAgICAoYmFzZSAxNikJCUpEUyBVbmlwaGFzZSBJbmMuCi0JCQkJNTcwIFdlc3QgSHVudCBDbHViIFJvYWQKLQkJCQlOYXBlb24sIE9OIEsxUiA3VDcKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDEtOUQgICAoaGV4KQkJRS1Db250cm9sIFN5c3RlbXMsIEluYy4KLTAwMDE5RCAgICAgKGJhc2UgMTYpCQlFLUNvbnRyb2wgU3lzdGVtcywgSW5jLgotCQkJCTk0MjAgTHVybGluZSBBdmUuLCBVbml0ZQotCQkJCUNoYXRzd29ydGggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLTlFICAgKGhleCkJCUVTUyBUZWNobm9sb2d5LCBJbmMuCi0wMDAxOUUgICAgIChiYXNlIDE2KQkJRVNTIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk0ODQwMSBGcmVtb250IEJsdmQuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtOUYgICAoaGV4KQkJUmVhZHlOZXQKLTAwMDE5RiAgICAgKGJhc2UgMTYpCQlSZWFkeU5ldAotCQkJCTY5NTIgSGlnaCBUZWNoIERyaXZlCi0JCQkJU3VpdGUgQgotCQkJCU1pZHZhbGUgVVQgODQwNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUEwICAgKGhleCkJCUluZmluaWxpbmsgQ29ycG9yYXRpb24KLTAwMDFBMCAgICAgKGJhc2UgMTYpCQlJbmZpbmlsaW5rIENvcnBvcmF0aW9uCi0JCQkJMTc0MCBFLiBHYXJyeSBBdmUuIC0gU3RlLiAjMjA2Ci0JCQkJU2FudGEgQW5hIENBIDkyNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1BMSAgIChoZXgpCQlNYWctVGVrLCBJbmMuCi0wMDAxQTEgICAgIChiYXNlIDE2KQkJTWFnLVRlaywgSW5jLgotCQkJCTIwNzI1IFNvdXRoIEFubmFsZWUgQXZlLgotCQkJCUNhcnNvbiBDQSA5MDc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQTIgICAoaGV4KQkJTG9naWNhbCBDby4sIEx0ZC4KLTAwMDFBMiAgICAgKGJhc2UgMTYpCQlMb2dpY2FsIENvLiwgTHRkLgotCQkJCTQ1OTggTXVyYWt1c2hpLWNobwotCQkJCUhhbWFtYXRzdS1zaGksIFNoaXp1b2thLWtlbgotCQkJCTQzMS0xMjA3IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtQTMgICAoaGV4KQkJR0VORVNZUyBMT0dJQywgSU5DLgotMDAwMUEzICAgICAoYmFzZSAxNikJCUdFTkVTWVMgTE9HSUMsIElOQy4KLQkJCQkxMEYsIE5vLiAxMSwgTG4uMy4sCi0JCQkJVHNhbyBUaSBXZWksIFNoZW5rZW5nIFRhaXBlaQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtQTQgICAoaGV4KQkJTWljcm9saW5rIENvcnBvcmF0aW9uCi0wMDAxQTQgICAgIChiYXNlIDE2KQkJTWljcm9saW5rIENvcnBvcmF0aW9uCi0JCQkJMTExMTAgT2hpbyBBdmUuLCAtIFN0ZS4gIzEwOAotCQkJCUxvcyBBbmdlbGVzIENBIDkwMDM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1BNSAgIChoZXgpCQlOZXh0Y29tbSwgSW5jLgotMDAwMUE1ICAgICAoYmFzZSAxNikJCU5leHRjb21tLCBJbmMuCi0JCQkJMTI0MTMgV2lsbG93cyBSb2FkIE5FIC0gU3RlLiAjMjEwCi0JCQkJS2lya2xhbmQgV0EgOTgwMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUE2ICAgKGhleCkJCVNjaWVudGlmaWMtQXRsYW50YSBBcmNvZGFuIEEvUwotMDAwMUE2ICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMtQXRsYW50YSBBcmNvZGFuIEEvUwotCQkJCUF2Z3VzdGVuYm9yZyBMYW5kZXZlaiA3Ci0JCQkJREstNjQwMCBTb25kZXJib3JnCi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtMDEtQTcgICAoaGV4KQkJVU5FWCBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0wMDAxQTcgICAgIChiYXNlIDE2KQkJVU5FWCBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJOEYtNSwgTk8uIDEzMCBTWkUgV0VJIFJPQUQKLQkJCQlIU0lOQ0hVCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUE4ICAgKGhleCkJCVdlbGx0ZWNoIENvbXB1dGVyIENvLiwgTHRkLgotMDAwMUE4ICAgICAoYmFzZSAxNikJCVdlbGx0ZWNoIENvbXB1dGVyIENvLiwgTHRkLgotCQkJCTEzRi00LCBuby4gMTUwLCBKaWFuIFlpIFJvYWQKLQkJCQlDaHVuZy1IbyAyMzUsICBUYWlwZWkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtQTkgICAoaGV4KQkJQk1XIEFHCi0wMDAxQTkgICAgIChiYXNlIDE2KQkJQk1XIEFHCi0JCQkJQk1XIEFHIERlcHQuIEZaLTMyMAotCQkJCUtub3Jyc3RyLjExOQotCQkJCTgwNzg4IE11bmljaCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLUFBICAgKGhleCkJCUFpcnNwYW4gQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLTAwMDFBQSAgICAgKGJhc2UgMTYpCQlBaXJzcGFuIENvbW11bmljYXRpb25zLCBMdGQuCi0JCQkJQ2FtYnJpZGdlIEhvdXNlLCBPeGZvcmQgUmQuLAotCQkJCVV4YnJpZGdlLCBNaWRkbGVzZXggVUIxVU4sCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS1BQiAgIChoZXgpCQlNYWluIFN0cmVldCBOZXR3b3JrcwotMDAwMUFCICAgICAoYmFzZSAxNikJCU1haW4gU3RyZWV0IE5ldHdvcmtzCi0JCQkJNDAzMCBNb29ycGFyayBBdmUuCi0JCQkJU3VpdGUgMjAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTctMTg0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQUMgICAoaGV4KQkJU2l0YXJhIE5ldHdvcmtzLCBJbmMuCi0wMDAxQUMgICAgIChiYXNlIDE2KQkJU2l0YXJhIE5ldHdvcmtzLCBJbmMuCi0JCQkJNjAgSGlja29yeSBEcml2ZQotCQkJCVdhbHRoYW0gTUEgMDI0NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUFEICAgKGhleCkJCUNvYWNoIE1hc3RlciBJbnRlcm5hdGlvbmFsICBkLmIuYS4gQ01JIFdvcmxkd2lkZSwgSW5jLgotMDAwMUFEICAgICAoYmFzZSAxNikJCUNvYWNoIE1hc3RlciBJbnRlcm5hdGlvbmFsICBkLmIuYS4gQ01JIFdvcmxkd2lkZSwgSW5jLgotCQkJCTYwMCBTdGV3YXJ0IFN0cmVldAotCQkJCVN1aXRlIDcwMAotCQkJCVNlYXR0bGUgV0EgOTgxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUFFICAgKGhleCkJCVRyZXggRW50ZXJwcmlzZXMKLTAwMDFBRSAgICAgKGJhc2UgMTYpCQlUcmV4IEVudGVycHJpc2VzCi0JCQkJNTkwIExpcG9hIFBhcmt3YXkKLQkJCQlTdWl0ZSAyMjIKLQkJCQlLaWhlaSBISSA5Njc1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQUYgICAoaGV4KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0wMDAxQUYgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0JCQkJMjkwMCBTLiBEaWFibG8gV2F5Ci0JCQkJU3VpdGUgMTkwCi0JCQkJVGVtcGUgQXJpem9uYSA4NTI4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQjAgICAoaGV4KQkJRnVsbHRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwMUIwICAgICAoYmFzZSAxNikJCUZ1bGx0ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzRiBOby4gOCwgTGFuZSAxMzAsIE1pbiBDaHVhbiBSZC4sIEhzaW50Ci0JCQkJQ2l0eSwgVGFpcGVpIEhzZWluIDIzMSwKLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS1CMSAgIChoZXgpCQlHZW5lcmFsIEJhbmR3aWR0aAotMDAwMUIxICAgICAoYmFzZSAxNikJCUdlbmVyYWwgQmFuZHdpZHRoCi0JCQkJMTIzMDMtQiBUZWNobm9sb2d5IEJsdmQuCi0JCQkJQXVzdGluIFRYIDc4NzI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1CMiAgIChoZXgpCQlEaWdpdGFsIFByb2Nlc3NpbmcgU3lzdGVtcywgSW5jLgotMDAwMUIyICAgICAoYmFzZSAxNikJCURpZ2l0YWwgUHJvY2Vzc2luZyBTeXN0ZW1zLCBJbmMuCi0JCQkJNzAgVmFsbGV5d29vZCBEcml2ZQotCQkJCU1hcmtoYW0sIE9udGFyaW8gQ0FOQURBCi0JCQkJTDNSIDRUNQotCQkJCUNBTkFEQQotCi0wMC0wMS1CMyAgIChoZXgpCQlQcmVjaXNpb24gRWxlY3Ryb25pYyBNYW51ZmFjdHVyaW5nCi0wMDAxQjMgICAgIChiYXNlIDE2KQkJUHJlY2lzaW9uIEVsZWN0cm9uaWMgTWFudWZhY3R1cmluZwotCQkJCVAwMTg3LCBQLk8uIDUyNzk0OAotCQkJCU1pYW1pIEZMIDMzMTUyLTc5NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUI0ICAgKGhleCkJCVdheXBvcnQsIEluYy4KLTAwMDFCNCAgICAgKGJhc2UgMTYpCQlXYXlwb3J0LCBJbmMuCi0JCQkJMTYwOSBTaG9hbCBDcmVlayBCbHZkLgotCQkJCVN1aXRlIDMwMQotCQkJCUF1c3RpbiBUWCA3ODcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQjUgICAoaGV4KQkJVHVyaW4gTmV0d29ya3MsIEluYy4KLTAwMDFCNSAgICAgKGJhc2UgMTYpCQlUdXJpbiBOZXR3b3JrcywgSW5jLgotCQkJCTE0MTUgTm9ydGggTWNEb3dlbGwgQmx2ZC4KLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQjYgICAoaGV4KQkJU0FFSklOIFQmTSBDby4sIEx0ZC4KLTAwMDFCNiAgICAgKGJhc2UgMTYpCQlTQUVKSU4gVCZNIENvLiwgTHRkLgotCQkJCTJuZCBGbC4sIFNhZWppbiBCbGRnLiwgNjg5Ci0JCQkJSWx3b24tRG9uZywgS2FuZ25hbS1HdS4gU2VvdWwsIDEzNS0yMzAKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS1CNyAgIChoZXgpCQlDZW50b3MsIEluYy4KLTAwMDFCNyAgICAgKGJhc2UgMTYpCQlDZW50b3MsIEluYy4KLQkJCQk2Ri0xLCBOTy4gMTUsIExBTkUgMzYwCi0JCQkJTkVJLUhVIFJELiwgU0VDVC4gMSwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAxLUI4ICAgKGhleCkJCU5ldHNlbnNpdHksIEluYy4KLTAwMDFCOCAgICAgKGJhc2UgMTYpCQlOZXRzZW5zaXR5LCBJbmMuCi0JCQkJUE8gQm94IDEwNjAKLQkJCQlMYWtlIEZvcmVzdCBDQSA5MjYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQjkgICAoaGV4KQkJU0tGIENvbmRpdGlvbiBNb25pdG9yaW5nCi0wMDAxQjkgICAgIChiYXNlIDE2KQkJU0tGIENvbmRpdGlvbiBNb25pdG9yaW5nCi0JCQkJNDE0MSBSdWZmaW4gUm9hZAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQkEgICAoaGV4KQkJSUMtTmV0LCBJbmMuCi0wMDAxQkEgICAgIChiYXNlIDE2KQkJSUMtTmV0LCBJbmMuCi0JCQkJNSBGbC4gU2Vhc3VuZyBCbGRnLiwgMzExLTI3IE5vcnlhbmdqaW4tRAotCQkJCURvbmdqYWstR3UgU2VvdWwsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtQkIgICAoaGV4KQkJRnJlcXVlbnRpcwotMDAwMUJCICAgICAoYmFzZSAxNikJCUZyZXF1ZW50aXMKLQkJCQlTUElUVEVMQlJFSVRFTkdBU1NFIDM0Ci0JCQkJQS0xMTIwIFZJRU5OQQotCQkJCUFVU1RSSUEKLQkJCQlBVVNUUklBCi0KLTAwLTAxLUJDICAgKGhleCkJCUJyYWlucyBDb3Jwb3JhdGlvbgotMDAwMUJDICAgICAoYmFzZSAxNikJCUJyYWlucyBDb3Jwb3JhdGlvbgotCQkJCTItMjctOC00RmwgVEFNQUdBV0EKLQkJCQlTRVRBR0FZQS1LVSwgVE9LWU8gMTU4LTAwOTQKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLUJEICAgKGhleCkJCVBldGVyc29uIEVsZWN0cm8tTXVzaWNhbCBQcm9kdWN0cywgSW5jLgotMDAwMUJEICAgICAoYmFzZSAxNikJCVBldGVyc29uIEVsZWN0cm8tTXVzaWNhbCBQcm9kdWN0cywgSW5jLgotCQkJCTExNjAxIFMuIE1heWZpZWxkIEF2ZW51ZQotCQkJCUFsc2lwIElMIDYwODAzLTI0NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUJFICAgKGhleCkJCUdpZ2FsaW5rIENvLiwgTHRkLgotMDAwMUJFICAgICAoYmFzZSAxNikJCUdpZ2FsaW5rIENvLiwgTHRkLgotCQkJCTZ0aCBGL0wgRGlwbG9tYXRpYyBDZW50ZXIgMTM3Ni0xCi0JCQkJU2VvY2hvLWRvbmcgU2VvY2hvLWt1IFNlb3VsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtQkYgICAoaGV4KQkJVGVsZWZvcmNlIENvLiwgTHRkLgotMDAwMUJGICAgICAoYmFzZSAxNikJCVRlbGVmb3JjZSBDby4sIEx0ZC4KLQkJCQk3MjEgeW9zaGlva2EtY2hvIGthbm9uamktY2l0eQotCQkJCUthZ2F3YS1wcmYuIDc2OC0wMDIxCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMS1DMCAgIChoZXgpCQlDb21wdUxhYiwgTHRkLgotMDAwMUMwICAgICAoYmFzZSAxNikJCUNvbXB1TGFiLCBMdGQuCi0JCQkJUC5PLiBCb3ggNjYKLQkJCQlOZXNoZXIgMzY3NzAKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDEtQzEgICAoaGV4KQkJVml0ZXNzZSBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uCi0wMDAxQzEgICAgIChiYXNlIDE2KQkJVml0ZXNzZSBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uCi0JCQkJSG9lcmthZXIgMTgKLQkJCQlESy0yNzMwIEhlcmxldgotCQkJCURFTk1BUksKLQotMDAtMDEtQzIgICAoaGV4KQkJQVJLIFJlc2VhcmNoIENvcnAuCi0wMDAxQzIgICAgIChiYXNlIDE2KQkJQVJLIFJlc2VhcmNoIENvcnAuCi0JCQkJMTE5OCBTYXJhdG9nYSBBdmUuICMxMUQKLQkJCQlTYW4gSm9zZSBDQSA5NTEyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQzMgICAoaGV4KQkJQWNyb21hZywgSW5jLgotMDAwMUMzICAgICAoYmFzZSAxNikJCUFjcm9tYWcsIEluYy4KLQkJCQkzMDc2NSBTLiBXaXhvbSBSb2FkCi0JCQkJV2l4b20gTUkgNDgzOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUM0ICAgKGhleCkJCU5lb1dhdmUsIEluYy4KLTAwMDFDNCAgICAgKGJhc2UgMTYpCQlOZW9XYXZlLCBJbmMuCi0JCQkJMTB0aCBLUklIUyBCbGRnLiAxNTkxLTYKLQkJCQlLd2FuIFlhbmctRG9uZywgRG9uZyBBbi1HdSwgQW55b25nLVNpLCBLCi0JCQkJU09VVEggS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtQzUgICAoaGV4KQkJU2ltcGxlciBOZXR3b3JrcwotMDAwMUM1ICAgICAoYmFzZSAxNikJCVNpbXBsZXIgTmV0d29ya3MKLQkJCQk1NTUgRHIgRnJlZGVyaWNrIFBoaWxpcHMKLQkJCQlTdWl0ZSAyMTAgU3QuIExhdXJlbnQsIFFVRUJFQyBDQU5BREEKLQkJCQlINE0gMlg0Ci0JCQkJQ0FOQURBCi0KLTAwLTAxLUM2ICAgKGhleCkJCVF1YXJyeSBUZWNobm9sb2dpZXMKLTAwMDFDNiAgICAgKGJhc2UgMTYpCQlRdWFycnkgVGVjaG5vbG9naWVzCi0JCQkJOCBOZXcgRW5nbGFuZCBFeGVjdXRpdmUgUGFyawotCQkJCUJ1cmxpbmd0b24gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUM3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDFDNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1DOCAgIChoZXgpCQlUSE9NQVMgQ09OUkFEIENPUlAuCi0wMDAxQzggICAgIChiYXNlIDE2KQkJVEhPTUFTIENPTlJBRCBDT1JQLgotCQkJCTE5MDgtUiBLUkFNRVIgTEFORQotCQkJCUFVU1RJTiBUWCA3ODc1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQzggICAoaGV4KQkJQ09OUkFEIENPUlAuCi0wMDAxQzggICAgIChiYXNlIDE2KQkJQ09OUkFEIENPUlAuCi0JCQkJCi0KLTAwLTAxLUM5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDFDOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUNBICAgKGhleCkJCUdlb2Nhc3QgTmV0d29yayBTeXN0ZW1zLCBJbmMuCi0wMDAxQ0EgICAgIChiYXNlIDE2KQkJR2VvY2FzdCBOZXR3b3JrIFN5c3RlbXMsIEluYy4KLQkJCQkxOTAgSW5kZXBlbmRlbmNlIERyaXZlCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtQ0IgICAoaGV4KQkJRVZSCi0wMDAxQ0IgICAgIChiYXNlIDE2KQkJRVZSCi0JCQkJMTIgUmF1bCBXYWxsZW5iZXJnIFN0LgotCQkJCVRlbCBBdml2ICA2OTcxOQotCQkJCUlTUkFFTAotCi0wMC0wMS1DQyAgIChoZXgpCQlKYXBhbiBUb3RhbCBEZXNpZ24gQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMDFDQyAgICAgKGJhc2UgMTYpCQlKYXBhbiBUb3RhbCBEZXNpZ24gQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQlFbmVzdGEgU3VnaW5hbWloaWdhc2hpIEJ1aWxkLiwgM0YsCi0JCQkJMy03LTEsIEFzYWdheWFtaW5hbWkgU3VnaW5hbWkta3UsIFRva3lvCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMS1DRCAgIChoZXgpCQlBUnRlbQotMDAwMUNEICAgICAoYmFzZSAxNikJCUFSdGVtCi0JCQkJT2xnYXN0cmFzc2UgMTUyCi0JCQkJRC04OTA3MyBVTE0KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMS1DRSAgIChoZXgpCQlDdXN0b20gTWljcm8gUHJvZHVjdHMsIEx0ZC4KLTAwMDFDRSAgICAgKGJhc2UgMTYpCQlDdXN0b20gTWljcm8gUHJvZHVjdHMsIEx0ZC4KLQkJCQk0NTAgQmxhbmRmb3JkIFJvYWQKLQkJCQlIYW13b3J0aHkgUG9vbGUgRG9yc2V0IEJISUwgNUJOCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS1DRiAgIChoZXgpCQlBbHBoYSBEYXRhIFBhcmFsbGVsIFN5c3RlbXMsIEx0ZC4KLTAwMDFDRiAgICAgKGJhc2UgMTYpCQlBbHBoYSBEYXRhIFBhcmFsbGVsIFN5c3RlbXMsIEx0ZC4KLQkJCQk1OCBUaW1iZXIgQnVzaAotCQkJCUVkaW5idXJnaCBFSDYgNlFIIFNjb3RsYW5kCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS1EMCAgIChoZXgpCQlWaXRhbFBvaW50LCBJbmMuCi0wMDAxRDAgICAgIChiYXNlIDE2KQkJVml0YWxQb2ludCwgSW5jLgotCQkJCTE1NzcwIEhvcHBlciBSb2FkCi0JCQkJUGV5dG9uIENPIDgwODMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1EMSAgIChoZXgpCQlDb05ldCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMUQxICAgICAoYmFzZSAxNikJCUNvTmV0IENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjUgTWF1Y2hseSwgIzMyMAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRDIgICAoaGV4KQkJaW5YdHJvbiwgSW5jLiAKLTAwMDFEMiAgICAgKGJhc2UgMTYpCQlpblh0cm9uLCBJbmMuIAotCQkJCThGLCBOby41MiwgTWluUXVhbiBSb2FkLCBYaW5kaWFuIERpc3QuCi0JCQkJTmV3IFRhaXBlaSBDaXR5ICAyMzE0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtRDMgICAoaGV4KQkJUEFYQ09NTSwgSW5jLgotMDAwMUQzICAgICAoYmFzZSAxNikJCVBBWENPTU0sIEluYy4KLQkJCQk3dGggRiBUaGUgQ29ycC4gQ2VudGVyCi0JCQkJQ2h1bmduYW0gTmF0aW9uYWwgVW5pdmVyc2l0eSAyMjAgS3VuZy1EbwotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLUQ0ICAgKGhleCkJCUxlaXN1cmUgVGltZSwgSW5jLgotMDAwMUQ0ICAgICAoYmFzZSAxNikJCUxlaXN1cmUgVGltZSwgSW5jLgotCQkJCTQyNTggQ29tbXVuaWNhdGlvbnMgRHJpdmUKLQkJCQlOb3Jjcm9zcyBHQSAzMDA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRDUgICAoaGV4KQkJSEFFRE9ORyBJTkZPICYgQ09NTSBDTy4sIExURAotMDAwMUQ1ICAgICAoYmFzZSAxNikJCUhBRURPTkcgSU5GTyAmIENPTU0gQ08uLCBMVEQKLQkJCQkjODAxIFRoZSBDb3Jwb3JhdGlvbiBDZW50ZXIgZm9yIFVuaXZlcnNpCi0JCQkJMjIwIEt1bmctRG9uZywgWXVzZW9uZy1HdSwKLQkJCQlUYWVqZW9uIFJlcHVibGljIG9mIEtvcmVhIDMwNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMS1ENiAgIChoZXgpCQltYW5yb2xhbmQgQUcKLTAwMDFENiAgICAgKGJhc2UgMTYpCQltYW5yb2xhbmQgQUcKLQkJCQlTdGFkdGJhY2hzdHJhc3NlIDEKLQkJCQk4NjIxOSBBdWdzYnVyZwotCQkJCUdFUk1BTlkKLQotMDAtMDEtRDcgICAoaGV4KQkJRjUgTmV0d29ya3MsIEluYy4KLTAwMDFENyAgICAgKGJhc2UgMTYpCQlGNSBOZXR3b3JrcywgSW5jLgotCQkJCTEzMjIgTi4gV2hpdG1hbiBMYW5lCi0JCQkJTGliZXJ0eSBMYWtlIFdBIDk5MDE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1EOCAgIChoZXgpCQlUZWx0cm9uaWNzLCBJbmMuCi0wMDAxRDggICAgIChiYXNlIDE2KQkJVGVsdHJvbmljcywgSW5jLgotCQkJCTQxMjUgS2VsbGVyIFNwcmluZ3MgUm9hZAotCQkJCVN1aXRlIDE2NgotCQkJCUFkZGlzb24gVFggMjUwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUQ5ICAgKGhleCkJCVNpZ21hLCBJbmMuCi0wMDAxRDkgICAgIChiYXNlIDE2KQkJU2lnbWEsIEluYy4KLQkJCQkzMi0zIFNlaWp5byA5IENob21lCi0JCQkJU2V0YWdheWEta3UgVG9reW8gMTU3LTAwNjYKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAxLURBICAgKGhleCkJCVdJTkNPTU0gQ29ycG9yYXRpb24KLTAwMDFEQSAgICAgKGJhc2UgMTYpCQlXSU5DT01NIENvcnBvcmF0aW9uCi0JCQkJMkYsIE5vLiAzLCBQcm9zcGVyaXR5IFJvYWQgMSwKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywgSHNpbmNodSwKLQkJCQlIc2luY2h1IFRhaXdhbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtREIgICAoaGV4KQkJRnJlZWNvbSBUZWNobm9sb2dpZXMgR21iSAotMDAwMURCICAgICAoYmFzZSAxNikJCUZyZWVjb20gVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlPYmVudHJhdXRzdHIuIDcyCi0JCQkJRC0xMDk2MywgQmVybGluLAotCQkJCUdFUk1BTlkKLQotMDAtMDEtREMgICAoaGV4KQkJQWN0aXZldGVsY28KLTAwMDFEQyAgICAgKGJhc2UgMTYpCQlBY3RpdmV0ZWxjbwotCQkJCTQzMjIyIENocmlzdHkgU3RyZWV0Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtREQgICAoaGV4KQkJQXZhaWwgTmV0d29ya3MKLTAwMDFERCAgICAgKGJhc2UgMTYpCQlBdmFpbCBOZXR3b3JrcwotCQkJCTMwNSBFLiBFaXNlbmhvd2VyIFBhcmt3YXkKLQkJCQlBbm4gQXJib3IgTUkgNDgxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLURFICAgKGhleCkJCVRyYW5nbyBTeXN0ZW1zLCBJbmMuCi0wMDAxREUgICAgIChiYXNlIDE2KQkJVHJhbmdvIFN5c3RlbXMsIEluYy4KLQkJCQk5OTM5IFYvQSBQYXNhcgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtREYgICAoaGV4KQkJSVNETiBDb21tdW5pY2F0aW9ucywgTHRkLgotMDAwMURGICAgICAoYmFzZSAxNikJCUlTRE4gQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLQkJCQlUaGUgU3RhYmxlIEJsb2NrLCBSb25hbnMKLQkJCQlDaGF2ZXkgRG93biBSb2FkLCBXaW5rZmllbGQgUm93IEJlcmtzaGlyCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAxLUUwICAgKGhleCkJCUZhc3QgU3lzdGVtcywgSW5jLgotMDAwMUUwICAgICAoYmFzZSAxNikJCUZhc3QgU3lzdGVtcywgSW5jLgotCQkJCTg3LTkgWWFuZy1KYWUsIFNlby1DaG8sCi0JCQkJU2VvdWwsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDEtRTEgICAoaGV4KQkJS2lucG8gRWxlY3Ryb25pY3MsIEluYy4KLTAwMDFFMSAgICAgKGJhc2UgMTYpCQlLaW5wbyBFbGVjdHJvbmljcywgSW5jLgotCQkJCVRTQUMgVEkgV0VJLCBXQU4gU0hVTiBUU1VOLAotCQkJCVNIRU4gS0VORyBIU0lBTkcsIFRBSVBFSSBIU0lFTiBUQUlXQU4gKDIKLQkJCQlDSElOQQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtRTIgICAoaGV4KQkJQW5kbyBFbGVjdHJpYyBDb3Jwb3JhdGlvbgotMDAwMUUyICAgICAoYmFzZSAxNikJCUFuZG8gRWxlY3RyaWMgQ29ycG9yYXRpb24KLQkJCQkxOS03LCBLYW1hdGEgNC1DaHJvbWUsIE90YS1rdQotCQkJCVRva3lvLCAxNDQtMDA1MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtRTMgICAoaGV4KQkJU2llbWVucyBBRwotMDAwMUUzICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQUcKLQkJCQlTY2hsYXZlbmhvcnN0IDg4Ci0JCQkJNDYzOTUgQm9jaG9sdAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAxLUU0ICAgKGhleCkJCVNpdGVyYSwgSW5jLgotMDAwMUU0ICAgICAoYmFzZSAxNikJCVNpdGVyYSwgSW5jLgotCQkJCTE4MjAgTGVmdGhhbmQgQ2lyY2xlCi0JCQkJTG9uZ21vbnQgQ08gODA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUU1ICAgKGhleCkJCVN1cGVybmV0LCBJbmMuCi0wMDAxRTUgICAgIChiYXNlIDE2KQkJU3VwZXJuZXQsIEluYy4KLQkJCQkxMzUtMDgwIERhZW1lb25nIEJsZGcuCi0JCQkJMm5kIEZsb29yLCA2NTAtMiwgWWVva3NhbS1kb25nIEthbmduYW0tawotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAxLUU2ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDAxRTYgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTAwMCBXb2xmZSBSb2FkLCBNYWlsc3RvcCA0MkxFCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1FNyAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwMUU3ICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTEwMDAgV29sZmUgUm9hZCwgTWFpbHN0b3AgNDJMRQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRTggICAoaGV4KQkJRm9yY2UxMCBOZXR3b3JrcywgSW5jLgotMDAwMUU4ICAgICAoYmFzZSAxNikJCUZvcmNlMTAgTmV0d29ya3MsIEluYy4KLQkJCQkxNDQwIE1jQ2FydGh5IEJsdmQuCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUU5ICAgKGhleCkJCUxpdHRvbiBNYXJpbmUgU3lzdGVtcyBCLlYuCi0wMDAxRTkgICAgIChiYXNlIDE2KQkJTGl0dG9uIE1hcmluZSBTeXN0ZW1zIEIuVi4KLQkJCQkxMTggQnVybGluZ3RvbiBSb2FkCi0JCQkJTmV3IE1hbGRlbiwgU3VycmV5Ci0JCQkJRU5HTEFORCBLVDMgNE5SCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDEtRUEgICAoaGV4KQkJQ2lyaWxpdW0gQ29ycC4KLTAwMDFFQSAgICAgKGJhc2UgMTYpCQlDaXJpbGl1bSBDb3JwLgotCQkJCTE2MTUgUy4gNTJuZCBTdHJlZXQKLQkJCQlUZW1wZSBBWiA4NTI4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRUIgICAoaGV4KQkJQy1DT00gQ29ycG9yYXRpb24KLTAwMDFFQiAgICAgKGJhc2UgMTYpCQlDLUNPTSBDb3Jwb3JhdGlvbgotCQkJCTNGLCBOby4gNDgsIFBhcmsgQXZlLiBJSSBTQklQCi0JCQkJSHNpbmNodSBUYWl3YW4gSHNpbmNodSBUYWl3YW4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMS1FQyAgIChoZXgpCQlFcmljc3NvbiBHcm91cAotMDAwMUVDICAgICAoYmFzZSAxNikJCUVyaWNzc29uIEdyb3VwCi0JCQkJVGVsZWZvbmFrdGllYm9sYWdldAotCQkJCUxNIEVyaWNzc29uIENvcnAuIDEyNiAyNSBTVE9DS0hPTE0KLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtMDEtRUQgICAoaGV4KQkJU0VUQSBDb3JwLgotMDAwMUVEICAgICAoYmFzZSAxNikJCVNFVEEgQ29ycC4KLQkJCQlBcmlha2UgRnJvbnRpZXIgQmxkZy4gQgotCQkJCUFyaWFrZSwgS291dG91IEt1IFRva3lvLAotCQkJCUpBUEFOIDEzNS0wMDYzCi0JCQkJSkFQQU4KLQotMDAtMDEtRUUgICAoaGV4KQkJQ29tdHJvbCBFdXJvcGUsIEx0ZC4KLTAwMDFFRSAgICAgKGJhc2UgMTYpCQlDb210cm9sIEV1cm9wZSwgTHRkLgotCQkJCVRoZSBDb3VydHlhcmQgU3R1ZGlvCi0JCQkJR3JhbmdlIEZhcm0sIFN0YXRpb24gUm9hZCBMYXVudG9uIE94b24gTwotCQkJCVUuSy4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMS1FRiAgIChoZXgpCQlDYW10ZWwgVGVjaG5vbG9neSBDb3JwLgotMDAwMUVGICAgICAoYmFzZSAxNikJCUNhbXRlbCBUZWNobm9sb2d5IENvcnAuCi0JCQkJTm8uIDIsIFd1LUt1bmcgNSBSZC4sIFd1LUt1Ci0JCQkJSW5kLiBQYXJrLCBIc2luY2h1YW5nLCBUYWlwZWkgU2hpZW4KLQkJCQlUYWl3YW4gVGFpd2FuIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtRjAgICAoaGV4KQkJVHJpZGl1bSwgSW5jLgotMDAwMUYwICAgICAoYmFzZSAxNikJCVRyaWRpdW0sIEluYy4KLQkJCQkzOTUxIFdlc3RlcnJlIFBhcmt3YXkKLQkJCQlTdWl0ZSAzNTAKLQkJCQlSaWNobW9uZCBWQSAyMzIzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRjEgICAoaGV4KQkJSW5ub3ZhdGl2ZSBDb25jZXB0cywgSW5jLgotMDAwMUYxICAgICAoYmFzZSAxNikJCUlubm92YXRpdmUgQ29uY2VwdHMsIEluYy4KLQkJCQk4MjAwIEdyZWVuc2Jvcm8gRHJpdmUKLQkJCQlTdWl0ZSA4MDEKLQkJCQlNY0xlYW4gVkEgMjIxMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUYyICAgKGhleCkJCU1hcmsgb2YgdGhlIFVuaWNvcm4sIEluYy4KLTAwMDFGMiAgICAgKGJhc2UgMTYpCQlNYXJrIG9mIHRoZSBVbmljb3JuLCBJbmMuCi0JCQkJMTI4MCBNYXNzYWNodXNldHRzIEF2ZS4KLQkJCQlDYW1icmlkZ2UgTUEgMDIxMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUYzICAgKGhleCkJCVFQUywgSW5jLgotMDAwMUYzICAgICAoYmFzZSAxNikJCVFQUywgSW5jLgotCQkJCTgwMTUgRS4gQ3J5c3RhbCBEcml2ZQotCQkJCUFuYWhlaW0gQ0EgOTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUY0ICAgKGhleCkJCUVudGVyYXN5cyBOZXR3b3JrcwotMDAwMUY0ICAgICAoYmFzZSAxNikJCUVudGVyYXN5cyBOZXR3b3JrcwotCQkJCTM1IEluZHVzdHJpYWwgV2F5Ci0JCQkJUm9jaGVzdGVyIE5IIDAzODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMS1GNSAgIChoZXgpCQlFUklNIFMuQS4KLTAwMDFGNSAgICAgKGJhc2UgMTYpCQlFUklNIFMuQS4KLQkJCQkxMSBBdiBSZXB1YmxpcXVlCi0JCQkJNjk2OTIgVmVuaXNzaWV1eCBDZWRleAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMS1GNiAgIChoZXgpCQlBc3NvY2lhdGlvbiBvZiBNdXNpY2FsIEVsZWN0cm9uaWNzIEluZHVzdHJ5Ci0wMDAxRjYgICAgIChiYXNlIDE2KQkJQXNzb2NpYXRpb24gb2YgTXVzaWNhbCBFbGVjdHJvbmljcyBJbmR1c3RyeQotCQkJCUl0byBCbGRnLiA0dGggRmxvb3IgMi0xNi05IE1pc2FraS1jaG8sCi0JCQkJQ2hpeW9kYS1rdSwgVG9reW8sIDEwMS0wMDYxCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMS1GNyAgIChoZXgpCQlJbWFnZSBEaXNwbGF5IFN5c3RlbXMsIEluYy4KLTAwMDFGNyAgICAgKGJhc2UgMTYpCQlJbWFnZSBEaXNwbGF5IFN5c3RlbXMsIEluYy4KLQkJCQk0NjU2MCBGcmVtb250IEJsdmQuCi0JCQkJU3VpdGUgIzQwNgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUY4ICAgKGhleCkJCUFkaGVyZW50IFN5c3RlbXMsIEx0ZC4KLTAwMDFGOCAgICAgKGJhc2UgMTYpCQlBZGhlcmVudCBTeXN0ZW1zLCBMdGQuCi0JCQkJRW5kZWF2b3VyIEhvdXNlLCBWaXNpb24gUGFyawotCQkJCUhpc3RvbiBDYW1icmlkZ2UgQ0I0IDRaUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDEtRjkgICAoaGV4KQkJVGVyYUdsb2JhbCBDb21tdW5pY2F0aW9ucyBDb3JwLgotMDAwMUY5ICAgICAoYmFzZSAxNikJCVRlcmFHbG9iYWwgQ29tbXVuaWNhdGlvbnMgQ29ycC4KLQkJCQk5MTcxIFRvd25lIENlbnRyZSBEcml2ZQotCQkJCVN1aXRlICM2MDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUZBICAgKGhleCkJCUhPUk9TQ0FTCi0wMDAxRkEgICAgIChiYXNlIDE2KQkJSE9ST1NDQVMKLQkJCQkyNiwgTE9VSVMgQkxBTkMKLQkJCQk2OTAwNiBMWU9OCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTAxLUZCICAgKGhleCkJCURvVG9wIFRlY2hub2xvZ3ksIEluYy4KLTAwMDFGQiAgICAgKGJhc2UgMTYpCQlEb1RvcCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTBGLCBOby4gMTAwLCBNaW4tQ2h5dWFuIFJvYWQKLQkJCQlIc2luLVRpZW4sIFRhaXBlaQotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDEtRkMgICAoaGV4KQkJS2V5ZW5jZSBDb3Jwb3JhdGlvbgotMDAwMUZDICAgICAoYmFzZSAxNikJCUtleWVuY2UgQ29ycG9yYXRpb24KLQkJCQkxLTMtMTQsIEhpZ2FzaGktTmFrYWppbWEsCi0JCQkJSGlnYXNoaS1Zb2RvZ2F3YS1rdSBPc2FrYSA1MzMtODU1NQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDEtRkQgICAoaGV4KQkJRGlnaXRhbCBWb2ljZSBTeXN0ZW1zLCBJbmMuCi0wMDAxRkQgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBWb2ljZSBTeXN0ZW1zLCBJbmMuCi0JCQkJMjM0IExpdHRsZXRvbiBSb2FkCi0JCQkJV2VzdGZvcmQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAxLUZFICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0wMDAxRkUgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQlNL1MgQ1gwMS0yL04yNgotCQkJCTMwMSBST0NLUklNTU9OIEJMVkQuLCBTCi0JCQkJQ09MT1JBRE8gU1BSSU5HUyBDTyA4MDkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDEtRkYgICAoaGV4KQkJRGF0YSBEaXJlY3QgTmV0d29ya3MsIEluYy4KLTAwMDFGRiAgICAgKGJhc2UgMTYpCQlEYXRhIERpcmVjdCBOZXR3b3JrcywgSW5jLgotCQkJCTkzMjAgTHVybGluZSBBdmVudWUKLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0wMCAgIChoZXgpCQlOZXQgJiBTeXMgQ28uLCBMdGQuCi0wMDAyMDAgICAgIChiYXNlIDE2KQkJTmV0ICYgU3lzIENvLiwgTHRkLgotCQkJCUt1cm8gSGl0ZWNoIEluZHVzdHJpYWwgQ29tcGxleCAzMDQsCi0JCQkJNDAyLTMsIFNoaW5kb3JpbS1kb25nLCBLdXJvLWd1IFNlb3VsLAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTAxICAgKGhleCkJCUlGTSBFbGVjdHJvbmljIGdtYmgKLTAwMDIwMSAgICAgKGJhc2UgMTYpCQlJRk0gRWxlY3Ryb25pYyBnbWJoCi0JCQkJQmVjaGxpbmdlbiAzNAotCQkJCUQtODgwNjkgVGV0dG5hbmcKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMi0wMiAgIChoZXgpCQlBbWlubyBDb21tdW5pY2F0aW9ucywgTHRkLgotMDAwMjAyICAgICAoYmFzZSAxNikJCUFtaW5vIENvbW11bmljYXRpb25zLCBMdGQuCi0JCQkJVGltZXMgSG91c2UKLQkJCQlGZW4gRW5kIFdpbGxpbmdoYW0sIENhbWJyaWRnZQotCQkJCVVLIENCNCA1TEgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi0wMyAgIChoZXgpCQlXb29uc2FuZyBUZWxlY29tLCBJbmMuCi0wMDAyMDMgICAgIChiYXNlIDE2KQkJV29vbnNhbmcgVGVsZWNvbSwgSW5jLgotCQkJCTEwNC05LCBNdW5qaS1Eb25nLCBZdXNvbmctR3UKLQkJCQlUYWVqb24sIDMwNS0zODAsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItMDQgICAoaGV4KQkJQm9kbWFubiBJbmR1c3RyaWVzIEVsZWt0cm9uaWsgR21iSAotMDAwMjA0ICAgICAoYmFzZSAxNikJCUJvZG1hbm4gSW5kdXN0cmllcyBFbGVrdHJvbmlrIEdtYkgKLQkJCQlNZXNzZXJzY2htaXR0cmluZyAzMwotCQkJCUQtODYzNDMgS29uaWdzYnJ1bm4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMi0wNSAgIChoZXgpCQlIaXRhY2hpIERlbnNoaSwgTHRkLgotMDAwMjA1ICAgICAoYmFzZSAxNikJCUhpdGFjaGkgRGVuc2hpLCBMdGQuCi0JCQkJMzIgTWl5YWtpLWNobyBLb2RhaXJhLXNoaQotCQkJCVRveWtvLAotCQkJCUpBUEFOIDE4Ny04NTExCi0JCQkJSkFQQU4KLQotMDAtMDItMDYgICAoaGV4KQkJVGVsaXRhbCBSJkQgRGVubWFyayBBL1MKLTAwMDIwNiAgICAgKGJhc2UgMTYpCQlUZWxpdGFsIFImRCBEZW5tYXJrIEEvUwotCQkJCTk1MzAgU3RvdXJpbmcKLQkJCQlEZW5tYXJrCi0JCQkJREVOTUFSSwotCi0wMC0wMi0wNyAgIChoZXgpCQlWaXNpb25HbG9iYWwgTmV0d29yayBDb3JwLgotMDAwMjA3ICAgICAoYmFzZSAxNikJCVZpc2lvbkdsb2JhbCBOZXR3b3JrIENvcnAuCi0JCQkJODI2IEUuIFN0YWxlIFJvYWQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlBbWVyaWNhbiBGb3JrIFVUIDg0MDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0wOCAgIChoZXgpCQlVbmlmeSBOZXR3b3JrcywgSW5jLgotMDAwMjA4ICAgICAoYmFzZSAxNikJCVVuaWZ5IE5ldHdvcmtzLCBJbmMuCi0JCQkJMzE2MCBEZSBMYSBDcnV6IEJsdmQuCi0JCQkJIzIwMQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0wOSAgIChoZXgpCQlTaGVuemhlbiBTRUQgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDIwOSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBTRUQgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk0L0YuLCBXZXN0IEJsb2NrLCBCbG9jayA0MTQsIFpoZW5odWEgUmQuCi0JCQkJRnV0aWFuIFNoZW56aGVuLCA1MTgwMzEgUC5SLgotCQkJCUNISU5BCi0JCQkJQ0hJTkEKLQotMDAtMDItMEEgICAoaGV4KQkJR2VmcmFuIFNwYQotMDAwMjBBICAgICAoYmFzZSAxNikJCUdlZnJhbiBTcGEKLQkJCQlWaWEgU2ViaW5hLCA3NAotCQkJCVByb3ZhZ2xpbyBEJ0lzZW8gMjUwNTAgQnJlc2NpYQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtMDItMEIgICAoaGV4KQkJTmF0aXZlIE5ldHdvcmtzLCBJbmMuCi0wMDAyMEIgICAgIChiYXNlIDE2KQkJTmF0aXZlIE5ldHdvcmtzLCBJbmMuCi0JCQkJUC5PLiBCb3ggNzE2NQotCQkJCVBldGFoIFRpa3ZhIDQ5MTcwCi0JCQkJSXNyYWVsCi0JCQkJSVNSQUVMCi0KLTAwLTAyLTBDICAgKGhleCkJCU1ldHJvLU9wdGl4Ci0wMDAyMEMgICAgIChiYXNlIDE2KQkJTWV0cm8tT3B0aXgKLQkJCQkyMjAxIEF2ZW51ZSBLCi0JCQkJUGxhbm8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTBEICAgKGhleCkJCU1pY3JvbnBjLmNvbQotMDAwMjBEICAgICAoYmFzZSAxNikJCU1pY3JvbnBjLmNvbQotCQkJCTkwMCBFLiBLYXJjaGVyIFJkLgotCQkJCU5hbXBhIElBIDgzNjg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0wRSAgIChoZXgpCQlFQ0kgVGVsZWNvbSwgTHRkLiwgTlNELVVTCi0wMDAyMEUgICAgIChiYXNlIDE2KQkJRUNJIFRlbGVjb20sIEx0ZC4sIE5TRC1VUwotCQkJCTEzMDAgT21lZ2EgRHIuCi0JCQkJUGl0dHNidXJnaCBQQSAxNTIwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMEYgICAoaGV4KQkJQUFUUgotMDAwMjBGICAgICAoYmFzZSAxNikJCUFBVFIKLQkJCQkzMDYgQ2hlbWluIGRlcyBNaXJvaXJzCi0JCQkJMTMzMzAgUGVsaXNzYW5uZQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMi0xMCAgIChoZXgpCQlGZW5lY29tCi0wMDAyMTAgICAgIChiYXNlIDE2KQkJRmVuZWNvbQotCQkJCTcvRiBLb24ta3VrIFVuaXZlcnNpdHkgQWx1bW5pCi0JCQkJQXNzb2NpYXRpb24gQnVpbGRpbmcgTk86ICAyMjctMzM2IEpheWFuZwotCQkJCVNlb3VsIFNlb3VsIEtvcmVhCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTExICAgKGhleCkJCU5hdHVyZSBXb3JsZHdpZGUgVGVjaG5vbG9neSBDb3JwLgotMDAwMjExICAgICAoYmFzZSAxNikJCU5hdHVyZSBXb3JsZHdpZGUgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLiAxLCBNaW4tQ2h1YW4gU3RyZWV0Ci0JCQkJVHUtQ2hlbmcgSW5kdXN0cmlhbCBQYXJrIFRhaXBlaSBIc2llbiwKLQkJCQlUYWl3YW4gVGFpd2FuIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItMTIgICAoaGV4KQkJU2llcnJhQ29tCi0wMDAyMTIgICAgIChiYXNlIDE2KQkJU2llcnJhQ29tCi0JCQkJOTkgU291dGggU3RyZWV0Ci0JCQkJSG9wa2ludG9uIE1hIDAxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0xMyAgIChoZXgpCQlTLkQuRS5MLgotMDAwMjEzICAgICAoYmFzZSAxNikJCVMuRC5FLkwuCi0JCQkJQWVyb3BvbGUgRDJBCi0JCQkJUnVlIE51bmdlcnJlciBldCBDb2xpIDQ0ODYwIFN0IEFpZ25hbiBkZQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMi0xNCAgIChoZXgpCQlEVFZSTwotMDAwMjE0ICAgICAoYmFzZSAxNikJCURUVlJPCi0JCQkJODEzIERhZWdvbmcgQmxkZy4sCi0JCQkJODIzLTIxIFllb2tzYW0tRG9uZywgS2FuZ25hbS1HdSwgU2VvdWwsCi0JCQkJS09SRUEgS09SRUEgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi0xNSAgIChoZXgpCQlDb3RhcyBDb21wdXRlciBUZWNobm9sb2d5IEEvQgotMDAwMjE1ICAgICAoYmFzZSAxNikJCUNvdGFzIENvbXB1dGVyIFRlY2hub2xvZ3kgQS9CCi0JCQkJUGFsdWRhbi1NdWxsZXJzIFZlaiA4MgotCQkJCURLLTgyMDAgQWFyaHVzIE4KLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC0wMi0xNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyMTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0xNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyMTcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0xOCAgIChoZXgpCQlBZHZhbmNlZCBTY2llbnRpZmljIENvcnAKLTAwMDIxOCAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBTY2llbnRpZmljIENvcnAKLQkJCQkxIEZsLiwgTm8uIDI2LCBJbmR1c3RyeSBFYXN0IDl0aCBSb2FkCi0JCQkJU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsgSHNpbi1DaHUKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTE5ICAgKGhleCkJCVBhcmFsb24gVGVjaG5vbG9naWVzCi0wMDAyMTkgICAgIChiYXNlIDE2KQkJUGFyYWxvbiBUZWNobm9sb2dpZXMKLQkJCQk3MDAgRmlmdGggQXZlLCBTdWl0ZSA2MTAxCi0JCQkJU2VhdHRsZSBXQSA5ODEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMUEgICAoaGV4KQkJWnVtYSBOZXR3b3JrcwotMDAwMjFBICAgICAoYmFzZSAxNikJCVp1bWEgTmV0d29ya3MKLQkJCQk4NDAzIEZhbGxicm9vayBBdmUuCi0JCQkJV2VzdCBIaWxscyBDQSA5MTMwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMUIgICAoaGV4KQkJS29sbG1vcmdlbi1TZXJ2b3Ryb25peAotMDAwMjFCICAgICAoYmFzZSAxNikJCUtvbGxtb3JnZW4tU2Vydm90cm9uaXgKLQkJCQlQT0IgMzkxOSwgUGV0YWNoIFRpa3lhCi0JCQkJNDkxMzAgSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAyLTFDICAgKGhleCkJCU5ldHdvcmsgRWxlbWVudHMsIEluYy4KLTAwMDIxQyAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIEVsZW1lbnRzLCBJbmMuCi0JCQkJOTc4MiBTVyBOaW1idXMgQXZlbnVlCi0JCQkJQmVhdmVydG9uIE9SIDk3MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0xRCAgIChoZXgpCQlEYXRhIEdlbmVyYWwgQ29tbXVuaWNhdGlvbiBMdGQuCi0wMDAyMUQgICAgIChiYXNlIDE2KQkJRGF0YSBHZW5lcmFsIENvbW11bmljYXRpb24gTHRkLgotCQkJCVJtLiAxOEMsIEJsZGcuIEMsIENFSUVDIFRvd2VyCi0JCQkJTm8uIDIwNzAsIFJkLiBTaGVuTmFuWmhvbmcgU2hlblpoZW4gQ2l0eQotCQkJCUNISU5BCi0JCQkJQ0hJTkEKLQotMDAtMDItMUUgICAoaGV4KQkJU0lNVEVMIFMuUi5MLgotMDAwMjFFICAgICAoYmFzZSAxNikJCVNJTVRFTCBTLlIuTC4KLQkJCQlWaWEgQm9uaWZhY2lvIEx1cGksIDI1Ci0JCQkJNTAxMjkgRmlyZW56ZQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtMDItMUYgICAoaGV4KQkJQWN1bGFiIFBMQwotMDAwMjFGICAgICAoYmFzZSAxNikJCUFjdWxhYiBQTEMKLQkJCQlMYWtlc2lkZSwgQnJhbWxleSBSb2FkCi0JCQkJTW91bnQgRmFybSBNaWx0b24gS2V5bmVzIEJ1bGtzIE1LMSAxUFQKLQkJCQlVSwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLTIwICAgKGhleCkJCUNBTk9OIEZJTkVURUNIIElOQy4KLTAwMDIyMCAgICAgKGJhc2UgMTYpCQlDQU5PTiBGSU5FVEVDSCBJTkMuCi0JCQkJNzE3LCBZYWd1Y2hpLCBNaXNhdG8tc2hpLAotCQkJCVNhaXRhbWEgIDM0MS04NTI3Ci0JCQkJSkFQQU4KLQotMDAtMDItMjEgICAoaGV4KQkJRFNQIEFwcGxpY2F0aW9uLCBMdGQuCi0wMDAyMjEgICAgIChiYXNlIDE2KQkJRFNQIEFwcGxpY2F0aW9uLCBMdGQuCi0JCQkJMTJGLTEyLCBOby4gNzksIFNlYy4gMSBIc2luIFRhaSBXdSBSZC4KLQkJCQlIU0lDSEksIFRhaXBlaSBDb3VudHkKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTIyICAgKGhleCkJCUNocm9taXN5cywgSW5jLgotMDAwMjIyICAgICAoYmFzZSAxNikJCUNocm9taXN5cywgSW5jLgotCQkJCTEwMTIgU3Rld2FydCBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMjMgICAoaGV4KQkJQ2xpY2tUVgotMDAwMjIzICAgICAoYmFzZSAxNikJCUNsaWNrVFYKLQkJCQlLZW1vbmcgQmxkZy4sIDR0aCBGbC4sCi0JCQkJNzcyIFlva3NhbS1Eb25nIEthbmduYW0tS3UKLQkJCQlTZW91bCBLb3JlYSAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTI0ICAgKGhleCkJCUMtQ09SCi0wMDAyMjQgICAgIChiYXNlIDE2KQkJQy1DT1IKLQkJCQkxNSBTdGVybGluZyBEcml2ZQotCQkJCVdhbGxpbmdmb3JkIENUIDA2NDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0yNSAgIChoZXgpCQlPbmUgU3RvcCBTeXN0ZW1zCi0wMDAyMjUgICAgIChiYXNlIDE2KQkJT25lIFN0b3AgU3lzdGVtcwotCQkJCTIyMzUgRW50ZXJwcmlzZSBTdHJlZXQKLQkJCQlTdWl0ZSAxMTAKLQkJCQlFc2NvbmRpZG8gQ0EgOTIwMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTI2ICAgKGhleCkJCVhFU3lzdGVtcywgSW5jLgotMDAwMjI2ICAgICAoYmFzZSAxNikJCVhFU3lzdGVtcywgSW5jLgotCQkJCTMxNyBNYWluIFN0cmVldAotCQkJCUVhc3QgUm9jaGVzdGVyIE5ZIDE0NDQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0yNyAgIChoZXgpCQlFU0QgRWxlY3Ryb25pYyBTeXN0ZW0gRGVzaWduIEdtYkgKLTAwMDIyNyAgICAgKGJhc2UgMTYpCQlFU0QgRWxlY3Ryb25pYyBTeXN0ZW0gRGVzaWduIEdtYkgKLQkJCQlWYWhyZW53YWxkZXIgU3RyLiAyMDcKLQkJCQkzMCAxNjUgSGFubm92ZXIgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDItMjggICAoaGV4KQkJTmVjc29tLCBMdGQuCi0wMDAyMjggICAgIChiYXNlIDE2KQkJTmVjc29tLCBMdGQuCi0JCQkJTmVjc29tIEx0ZC4gYy9vIEtvaXJzdG8KLQkJCQlTYXVuYW1hZW50aWUgNCBBIDEgRklOLTAyNzcwIEVTUDAwCi0JCQkJRklOTEFORAotCQkJCUZJTkxBTkQKLQotMDAtMDItMjkgICAoaGV4KQkJQWR0ZWMgQ29ycG9yYXRpb24KLTAwMDIyOSAgICAgKGJhc2UgMTYpCQlBZHRlYyBDb3Jwb3JhdGlvbgotCQkJCTNGIE1lZ3Vyb2hpZ2FzaGl5YW1hIEJsZwotCQkJCTEgNCA0IEhpZ2FzaGl5YW1hLCBNZWd1cm8gS3UgVG9reW8gMTUzIDAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAyLTJBICAgKGhleCkJCUFzb3VuZCBFbGVjdHJvbmljCi0wMDAyMkEgICAgIChiYXNlIDE2KQkJQXNvdW5kIEVsZWN0cm9uaWMKLQkJCQlYaWFueGkgSW5kdXN0cmllcyBab25lIENoYW5nYW4gVG93bgotCQkJCURvbmcgR3VvbiBDaXR5LCBHdW9uZyBEb25nIFByb3ZpZGVuY2UKLQkJCQlDSElOQQotCQkJCUNISU5BCi0KLTAwLTAyLTJCICAgKGhleCkJCVNBWEEsIEluYy4KLTAwMDIyQiAgICAgKGJhc2UgMTYpCQlTQVhBLCBJbmMuCi0JCQkJTkJGIFBsYXRpbnVtIFRvd2VyIDEtMTctMyBTaGlyb2thbmUKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA4LTgwNTAKLQkJCQlKQVBBTgotCi0wMC0wMi0yQyAgIChoZXgpCQlBQkIgQm9tZW0sIEluYy4KLTAwMDIyQyAgICAgKGJhc2UgMTYpCQlBQkIgQm9tZW0sIEluYy4KLQkJCQk1ODUsIGJvdWwuIENoYXJlc3QgRXN0Ci0JCQkJU3VpdGUgMzAwIFF1ZWJlYyBDaXR5LCBQUQotCQkJCUNhbmFkYSBHMUsgOUg0Ci0JCQkJQ0FOQURBCi0KLTAwLTAyLTJEICAgKGhleCkJCUFnZXJlIFN5c3RlbXMKLTAwMDIyRCAgICAgKGJhc2UgMTYpCQlBZ2VyZSBTeXN0ZW1zCi0JCQkJUC5PLiBCb3ggNzU1Ci0JCQkJMzQzMCBBdCBOaWV1d2VnZWluCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDItMkUgICAoaGV4KQkJVEVBQyBDb3JwLiBSJiBECi0wMDAyMkUgICAgIChiYXNlIDE2KQkJVEVBQyBDb3JwLiBSJiBECi0JCQkJODU3IEtveWF0YSwgSXJ1bWEKLQkJCQlTYWl0YW1hCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMi0yRiAgIChoZXgpCQlQLUN1YmUsIEx0ZC4KLTAwMDIyRiAgICAgKGJhc2UgMTYpCQlQLUN1YmUsIEx0ZC4KLQkJCQlQLk8uIEJveCAxMjMzMQotCQkJCUhlcnpsaWEgNDY3NjYKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDItMzAgICAoaGV4KQkJSW50ZXJzb2Z0IEVsZWN0cm9uaWNzCi0wMDAyMzAgICAgIChiYXNlIDE2KQkJSW50ZXJzb2Z0IEVsZWN0cm9uaWNzCi0JCQkJTGFtbWVyZHJpZXMgMjcKLQkJCQlCMjI1MCBPbGVuCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtMDItMzEgICAoaGV4KQkJSW5nZXJzb2xsLVJhbmQKLTAwMDIzMSAgICAgKGJhc2UgMTYpCQlJbmdlcnNvbGwtUmFuZAotCQkJCTE0NjcgUm91dGUgMzEgU291dGgKLQkJCQlQLk8uIEJveCA5NzAKLQkJCQlBbm5hbmRhbGUgTkogMDg4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTMyICAgKGhleCkJCUF2aXNpb24sIEluYy4KLTAwMDIzMiAgICAgKGJhc2UgMTYpCQlBdmlzaW9uLCBJbmMuCi0JCQkJTm8uIDIwLCBDcmVhdGlvbiBSZC4gMSwKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1IFRhaXdhbiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi0zMyAgIChoZXgpCQlNYW50cmEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDIzMyAgICAgKGJhc2UgMTYpCQlNYW50cmEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkxMjg1MCBNaWRkbGVicm9vayBSb2FkCi0JCQkJU3VpdGUgMQotCQkJCUdlcm1hbnRvd24gTUQgMjA4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTM0ICAgKGhleCkJCUltcGVyaWFsIFRlY2hub2xvZ3ksIEluYy4KLTAwMDIzNCAgICAgKGJhc2UgMTYpCQlJbXBlcmlhbCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjMwNSBVdGFoIEF2ZW51ZQotCQkJCUVsIFNlZ3VuZG8gQ0EgOTAyNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTM1ICAgKGhleCkJCVBhcmFnb24gTmV0d29ya3MgSW50ZXJuYXRpb25hbAotMDAwMjM1ICAgICAoYmFzZSAxNikJCVBhcmFnb24gTmV0d29ya3MgSW50ZXJuYXRpb25hbAotCQkJCTYxIENvbW1lcmNlIERyaXZlCi0JCQkJQnJvb2tmaWVsZCBDVCAwNjgwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItMzYgICAoaGV4KQkJSU5JVCBHbWJICi0wMDAyMzYgICAgIChiYXNlIDE2KQkJSU5JVCBHbWJICi0JCQkJS2FlcHBlbGVzdHIuIDYKLQkJCQlELTc2MTMxIEthcmxzcnVoZQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAyLTM3ICAgKGhleCkJCUNvc21vIFJlc2VhcmNoIENvcnAuCi0wMDAyMzcgICAgIChiYXNlIDE2KQkJQ29zbW8gUmVzZWFyY2ggQ29ycC4KLQkJCQlDb3NtbyBCbGRnLCAzLTE0OC01Ci0JCQkJTWl5YWhhcmFjaG8sIE9taXlhIFNhaXRhbWEgMzMwLTAwMzgKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAyLTM4ICAgKGhleCkJCVNlcm9tZSBUZWNobm9sb2d5LCBJbmMuCi0wMDAyMzggICAgIChiYXNlIDE2KQkJU2Vyb21lIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk1NTUtMTQsIEJhZWthbmcgQi9EIDdGCi0JCQkJU2hpbnNhLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCBLb3JlYSAxMzUtMTIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTM5ICAgKGhleCkJCVZpc2ljb20KLTAwMDIzOSAgICAgKGJhc2UgMTYpCQlWaXNpY29tCi0JCQkJMTAwNTIgTWVzYSBSaWRnZSBDdC4KLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTNBICAgKGhleCkJCVpTSyBTdGlja21hc2NoaW5lbiBHbWJICi0wMDAyM0EgICAgIChiYXNlIDE2KQkJWlNLIFN0aWNrbWFzY2hpbmVuIEdtYkgKLQkJCQlNYWdkZWJ1cmdlciBTdHJhc3NlIDM4LTQwCi0JCQkJNDc4MDAgS3JlZmVsZAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAyLTNCICAgKGhleCkJCUVyaWNzc29uCi0wMDAyM0IgICAgIChiYXNlIDE2KQkJRXJpY3Nzb24KLQkJCQkxMDAgSGVhZHF1YXJ0ZXJzIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTNDICAgKGhleCkJCUNyZWF0aXZlIFRlY2hub2xvZ3ksIEx0ZC4KLTAwMDIzQyAgICAgKGJhc2UgMTYpCQlDcmVhdGl2ZSBUZWNobm9sb2d5LCBMdGQuCi0JCQkJMzEgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBQYXJrCi0JCQkJU2luZ2Fwb3JlIDYwOTkyMQotCQkJCVJlcHVibGljIG9mIFNpbmdhcG9yZQotCQkJCVNJTkdBUE9SRQotCi0wMC0wMi0zRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyM0QgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi0zRSAgIChoZXgpCQlTZWx0YSBUZWxlbWF0aWNhIFMucC5hCi0wMDAyM0UgICAgIChiYXNlIDE2KQkJU2VsdGEgVGVsZW1hdGljYSBTLnAuYQotCQkJCVZpYSBOYXppb25hbGUga20gNDA0LjUKLQkJCQk2NDAxOSBUb3J0b3JldG8gTGlkbyBURQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtMDItM0YgICAoaGV4KQkJQ29tcGFsIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDAyM0YgICAgIChiYXNlIDE2KQkJQ29tcGFsIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJNTgxLCBKdWlrdWFuZyBSZC4sCi0JCQkJTmVpaHUsIFRhaXBlaSwgKDExNCkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItNDAgICAoaGV4KQkJU2VlZGVrIENvLiwgTHRkLgotMDAwMjQwICAgICAoYmFzZSAxNikJCVNlZWRlayBDby4sIEx0ZC4KLQkJCQkjNzA5LCAxNjM4LTMyLCBTYW1tbwotCQkJCVNoaW5yaW1ib24tRG9uZywgS3dhbmFrLUd1LCBTZW91bAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTQxICAgKGhleCkJCUFtZXIuY29tCi0wMDAyNDEgICAgIChiYXNlIDE2KQkJQW1lci5jb20KLQkJCQk3MjU5IEJyeWFuIERhaXJ5IFJvYWQKLQkJCQlMYXJnbyBGTCAzMzc3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNDIgICAoaGV4KQkJVmlkZW9mcmFtZSBTeXN0ZW1zCi0wMDAyNDIgICAgIChiYXNlIDE2KQkJVmlkZW9mcmFtZSBTeXN0ZW1zCi0JCQkJMTAxIFByb3ZpZGVuY2UgTWluZSBSb2FkCi0JCQkJU3VpdGUgMTAzCi0JCQkJTmV2YWRhIENpdHkgQ0EgOTU5NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTQzICAgKGhleCkJCVJheXNpcyBDby4sIEx0ZC4KLTAwMDI0MyAgICAgKGJhc2UgMTYpCQlSYXlzaXMgQ28uLCBMdGQuCi0JCQkJOTk3LTEwLCBEYWVjaGktRG9uZywgS2FuZ25hbS1LdSwKLQkJCQlTZW91bCAxMzUtMjgwLCBTb3V0aCBLb3JlYQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi00NCAgIChoZXgpCQlTVVJFQ09NIFRlY2hub2xvZ3kgQ28uCi0wMDAyNDQgICAgIChiYXNlIDE2KQkJU1VSRUNPTSBUZWNobm9sb2d5IENvLgotCQkJCTZGLCBOby4gMTI1LCBTZWMuIDIsIERhdHVuZyBSZC4KLQkJCQlTaGlqciwgVGFpcGVpIENvdW50eSwgMjIxCi0JCQkJVGFpd2FuIFRhaXdhbiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTQ1ICAgKGhleCkJCUxhbXB1cyBDbywgTHRkLgotMDAwMjQ1ICAgICAoYmFzZSAxNikJCUxhbXB1cyBDbywgTHRkLgotCQkJCTZ0aCBCbGRnLiwgU2FtZ29uZywKLQkJCQk1OC03IFJhbnBvIDRkb25nIFNjb2NoLWdvLCBTZW91bCwKLQkJCQlLb3JlYSBLb3JlYSAxMzctMDQ0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTQ2ICAgKGhleCkJCUFsbC1XaW4gVGVjaCBDby4sIEx0ZC4KLTAwMDI0NiAgICAgKGJhc2UgMTYpCQlBbGwtV2luIFRlY2ggQ28uLCBMdGQuCi0JCQkJMTFGLCBOby4gMTExLTcsIEhzaW5nIERlIFJkLiwKLQkJCQlTYW4gQ2h1bmcgQ2l0eSwKLQkJCQlUYWlwZWkgSHNpZW4gVGFpd2FuLCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTQ3ICAgKGhleCkJCUdyZWF0IERyYWdvbiBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IChHcm91cCkgQ28uLCBMdGQuCi0wMDAyNDcgICAgIChiYXNlIDE2KQkJR3JlYXQgRHJhZ29uIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgKEdyb3VwKSBDby4sIEx0ZC4KLQkJCQkxNjkgQmVpeXVhbiBSZC4sCi0JCQkJQ2hhb3lhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nIDEwMDEwMSwgQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0wMi00OCAgIChoZXgpCQlQaWx6IEdtYkggJiBDby4KLTAwMDI0OCAgICAgKGJhc2UgMTYpCQlQaWx6IEdtYkggJiBDby4KLQkJCQlGZWxpeC1XYW5rZWwtU3RyYXNzZSAyCi0JCQkJRC03Mzc2MCBPc3RmaWxkZXJuCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDItNDkgICAoaGV4KQkJQXZpdiBJbmZvY29tIENvLCBMdGQuCi0wMDAyNDkgICAgIChiYXNlIDE2KQkJQXZpdiBJbmZvY29tIENvLCBMdGQuCi0JCQkJOTYyLTUsIEt3YW55YW5nLURvbmcsIERvbmdhbi1HdSwKLQkJCQlBbnlhbmctQ2l0eSwgS3l1bmdraS1EbywgNDMxLTA2MAotCQkJCUtvcmVhIChST0spCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTRBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDI0QSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi00QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyNEIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNEMgICAoaGV4KQkJU2lCeXRlLCBJbmMuCi0wMDAyNEMgICAgIChiYXNlIDE2KQkJU2lCeXRlLCBJbmMuCi0JCQkJMjgwNSBCb3dlcnMgQXZlbnVlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEtMDkxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNEQgICAoaGV4KQkJTWFubmVzbWFuIERlbWF0aWMgQ29sYnkgUHR5LiBMdGQuCi0wMDAyNEQgICAgIChiYXNlIDE2KQkJTWFubmVzbWFuIERlbWF0aWMgQ29sYnkgUHR5LiBMdGQuCi0JCQkJMjQgTmFyYWJhbmcgV2F5Ci0JCQkJQmVscm9zZSwgTlNXIDIwODUKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDItNEUgICAoaGV4KQkJRGF0YWNhcmQgR3JvdXAKLTAwMDI0RSAgICAgKGJhc2UgMTYpCQlEYXRhY2FyZCBHcm91cAotCQkJCTExMTExIEJyZW4gUm9hZCBXZXN0Ci0JCQkJTVMgMjEwCi0JCQkJTWlubmV0b25rYSBNTiA1NTM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNEYgICAoaGV4KQkJSVBNIERhdGFjb20gUy5SLkwuCi0wMDAyNEYgICAgIChiYXNlIDE2KQkJSVBNIERhdGFjb20gUy5SLkwuCi0JCQkJVmlhIFJvbWEsIDIzMQotCQkJCTgwMDI3IEZyYXR0YW1hZ2dpb3JlCi0JCQkJTmFwbGVzIElUQUxZCi0JCQkJSVRBTFkKLQotMDAtMDItNTAgICAoaGV4KQkJR2V5c2VyIE5ldHdvcmtzLCBJbmMuCi0wMDAyNTAgICAgIChiYXNlIDE2KQkJR2V5c2VyIE5ldHdvcmtzLCBJbmMuCi0JCQkJNTM1IERlbCBSZXkgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01MSAgIChoZXgpCQlTb21hIE5ldHdvcmtzLCBJbmMuCi0wMDAyNTEgICAgIChiYXNlIDE2KQkJU29tYSBOZXR3b3JrcywgSW5jLgotCQkJCTY1MCBUb3duc2VuZCBTdC4KLQkJCQlTdWl0ZSAzMDUKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01MiAgIChoZXgpCQlDYXJyaWVyIENvcnBvcmF0aW9uCi0wMDAyNTIgICAgIChiYXNlIDE2KQkJQ2FycmllciBDb3Jwb3JhdGlvbgotCQkJCU9uZSBDYXJyaWVyIFBsYWNlCi0JCQkJRmFybWluZ3RvbiBDVCAwNjAzNC00MDE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01MyAgIChoZXgpCQlUZWxldmlkZW8sIEluYy4KLTAwMDI1MyAgICAgKGJhc2UgMTYpCQlUZWxldmlkZW8sIEluYy4KLQkJCQkyMzQ1IEhhcnJpcyBXYXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNTQgICAoaGV4KQkJV29ybGRHYXRlCi0wMDAyNTQgICAgIChiYXNlIDE2KQkJV29ybGRHYXRlCi0JCQkJMzE5MCBUcmVtb250IEF2ZW51ZQotCQkJCVRyZXZvc2UgUEEgMTkwNTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTU1ICAgKGhleCkJCUlCTSBDb3JwCi0wMDAyNTUgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUC5PLiBCb3ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTU2ICAgKGhleCkJCUFscGhhIFByb2Nlc3NvciwgSW5jLgotMDAwMjU2ICAgICAoYmFzZSAxNikJCUFscGhhIFByb2Nlc3NvciwgSW5jLgotCQkJCTEzMCBDIEJha2VyIEF2ZS4gRXh0LgotCQkJCUNvbmNvcmQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTU3ICAgKGhleCkJCU1pY3JvY29tIENvcnAuCi0wMDAyNTcgICAgIChiYXNlIDE2KQkJTWljcm9jb20gQ29ycC4KLQkJCQk4MzMzQSBHcmVlbiBNZWFkb3dzIERyLiBOLgotCQkJCVdlc3RlcnZpbGxlIE9IIDQzMDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01OCAgIChoZXgpCQlGbHlpbmcgUGFja2V0cyBDb21tdW5pY2F0aW9ucwotMDAwMjU4ICAgICAoYmFzZSAxNikJCUZseWluZyBQYWNrZXRzIENvbW11bmljYXRpb25zCi0JCQkJMzg4IE1hcmtldCBTdHJlZXQKLQkJCQlTdWl0ZSAzODAKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi01OSAgIChoZXgpCQlUc2FubiBLdWVuIENoaW5hIChTaGFuZ2hhaSlFbnRlcnByaXNlIENvLiwgTHRkLiBJVCBHcm91cAotMDAwMjU5ICAgICAoYmFzZSAxNikJCVRzYW5uIEt1ZW4gQ2hpbmEgKFNoYW5naGFpKUVudGVycHJpc2UgQ28uLCBMdGQuIElUIEdyb3VwCi0JCQkJOEYsICM5OSwgSHVhaWhhaSBSZCwgRWFzdCwKLQkJCQlTaGFuZ2hhaSwKLQkJCQlDSElOQSAyMDAwMjEKLQkJCQlDSElOQQotCi0wMC0wMi01QSAgIChoZXgpCQlDYXRlbmEgTmV0d29ya3MKLTAwMDI1QSAgICAgKGJhc2UgMTYpCQlDYXRlbmEgTmV0d29ya3MKLQkJCQkzMDcgTGVnZ2V0IERyaXZlCi0JCQkJS2FuYXRhIE9udGFyaW8KLQkJCQlDYW5hZGEgSzJLIDNDOAotCQkJCUNBTkFEQQotCi0wMC0wMi01QiAgIChoZXgpCQlDYW1icmlkZ2UgU2lsaWNvbiBSYWRpbwotMDAwMjVCICAgICAoYmFzZSAxNikJCUNhbWJyaWRnZSBTaWxpY29uIFJhZGlvCi0JCQkJVW5pdCA0MDAsIFNjaWVuY2UgUGFyaywKLQkJCQlNaWx0b24gUm9hZCwgQ2FtYnJpZGdlLENCNCBPWEwKLQkJCQlVbml0ZWQgS2luZ2RvbQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLTVDICAgKGhleCkJCVNDSSBTeXN0ZW1zIChLdW5zaGFuKSBDby4sIEx0ZC4KLTAwMDI1QyAgICAgKGJhc2UgMTYpCQlTQ0kgU3lzdGVtcyAoS3Vuc2hhbikgQ28uLCBMdGQuCi0JCQkJMzEyIFFJTkcgWUFORyBST0FECi0JCQkJS1VOU0hBTiwgSklBTkdTVSBQUk9WSUNDCi0JCQkJQ0hJTkEgQ0hJTkEgMjE1MzAwCi0JCQkJQ0hJTkEKLQotMDAtMDItNUQgICAoaGV4KQkJQ2FsaXggTmV0d29ya3MKLTAwMDI1RCAgICAgKGJhc2UgMTYpCQlDYWxpeCBOZXR3b3JrcwotCQkJCTEwMzUgTm9ydGggTWNEb3dlbGwgQmx2ZC4KLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNUUgICAoaGV4KQkJSGlnaCBUZWNobm9sb2d5IEx0ZAotMDAwMjVFICAgICAoYmFzZSAxNikJCUhpZ2ggVGVjaG5vbG9neSBMdGQKLQkJCQlDaG9uZ3FpbmcgSmluZ2hvbmcKLQkJCQlBMi0xMC0zIENhbGlmb3JuaWEgR2FyZGVuIFl1YmVpIERpc3RyaWN0Ci0JCQkJUGVvcGxlJ3MgUmVwdWJsaWMgb2YgQ2hpbmEKLQkJCQlDSElOQQotCi0wMC0wMi01RiAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMDI1RiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQk5MzAwIHRyYW5zLUNBTkFEQSBIaWdod2F5Ci0JCQkJU3QuIExhdXJlbmV0LCBRdWViZWMKLQkJCQlINFMgMUtTIENBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wMi02MCAgIChoZXgpCQlBY2NvcmRpb24gTmV0d29ya3MsIEluYy4KLTAwMDI2MCAgICAgKGJhc2UgMTYpCQlBY2NvcmRpb24gTmV0d29ya3MsIEluYy4KLQkJCQkzOTg5OSBCYWxlbnRpbmUgRHJpdmUsICMzMzUKLQkJCQlOZXdhcmsgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTYxICAgKGhleCkJCVRpbGdpbiBBQgotMDAwMjYxICAgICAoYmFzZSAxNikJCVRpbGdpbiBBQgotCQkJCUZpbmxhbmRzZ2F0YW4gNDAKLQkJCQlTRS0xNjQgNzQgS2lzdGEKLQkJCQlTV0VERU4KLQotMDAtMDItNjIgICAoaGV4KQkJU295byBHcm91cCBTb3lvIENvbSBUZWNoIENvLiwgTHRkCi0wMDAyNjIgICAgIChiYXNlIDE2KQkJU295byBHcm91cCBTb3lvIENvbSBUZWNoIENvLiwgTHRkCi0JCQkJNUguIE5vLiAyMSBXdS1nb25nIDUgUmQsCi0JCQkJSHNpbmcgQ2h1YW5nLAotCQkJCVRhaXBlaSBIc2llbiBUYWl3YW4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi02MyAgIChoZXgpCQlVUFMgTWFudWZhY3R1cmluZyBTUkwKLTAwMDI2MyAgICAgKGJhc2UgMTYpCQlVUFMgTWFudWZhY3R1cmluZyBTUkwKLQkJCQlWaWEgR2lvcmRhbm8sIDU0Ci0JCQkJMzcwNTAgVmFsbGVzZSBEaSBPcHBlYW5vCi0JCQkJVmVyb25hIEl0YWx5Ci0JCQkJSVRBTFkKLQotMDAtMDItNjQgICAoaGV4KQkJQXVkaW9SYW1wLmNvbQotMDAwMjY0ICAgICAoYmFzZSAxNikJCUF1ZGlvUmFtcC5jb20KLQkJCQkxNTk0MSBSZWQgSGlsbCBTdWl0ZSAyMDUKLQkJCQlUdXN0aW4gQ0EgOTI3ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTY1ICAgKGhleCkJCVZpcmRpdGVjaCBDby4gTHRkLgotMDAwMjY1ICAgICAoYmFzZSAxNikJCVZpcmRpdGVjaCBDby4gTHRkLgotCQkJCUh5dW5kYWkgVG9waWNzIEJsZ2QuLCAxMXRoIEZsCi0JCQkJNDQtMyBQYW5naS1kb25nLCBTb25ncGEtR3UKLQkJCQlTZW91bCBTZW91bCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi02NiAgIChoZXgpCQlUaGVybWFsb2dpYyBDb3Jwb3JhdGlvbgotMDAwMjY2ICAgICAoYmFzZSAxNikJCVRoZXJtYWxvZ2ljIENvcnBvcmF0aW9uCi0JCQkJMjIgS2FuZSBJbmR1c3RyaWFsIERyaXZlCi0JCQkJSHVkc29uIE1BIDAxNzQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi02NyAgIChoZXgpCQlOT0RFIFJVTk5FUiwgSU5DLgotMDAwMjY3ICAgICAoYmFzZSAxNikJCU5PREUgUlVOTkVSLCBJTkMuCi0JCQkJMjIwMiBOLiBGT1JCRVMgQkxWRC4KLQkJCQlUVUNTT04gQVogODU3NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTY4ICAgKGhleCkJCUhhcnJpcyBHb3Zlcm5tZW50IENvbW11bmljYXRpb25zCi0wMDAyNjggICAgIChiYXNlIDE2KQkJSGFycmlzIEdvdmVybm1lbnQgQ29tbXVuaWNhdGlvbnMKLQkJCQlTeXN0ZW1zIERpdmlzaW9uCi0JCQkJUC5PLiBCb3ggMzcgTVM6IDEtNTg1NgotCQkJCU1lbGJvdXJuZSBGTCAzMjkwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNjkgICAoaGV4KQkJTmFkYXRlbCBDby4sIEx0ZAotMDAwMjY5ICAgICAoYmFzZSAxNikJCU5hZGF0ZWwgQ28uLCBMdGQKLQkJCQk5RiBDb1dlbGwgQmxkZywgNjYtMSBCYW5wby1Eb25nCi0JCQkJU2VvY2hvLUd1LCBTZW91bCwKLQkJCQlLT1JFQSAxMzctMDQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTZBICAgKGhleCkJCUNvY2VzcyBUZWxlY29tIENvLiwgTHRkLgotMDAwMjZBICAgICAoYmFzZSAxNikJCUNvY2VzcyBUZWxlY29tIENvLiwgTHRkLgotCQkJCVJlc2VhcmNoICYgRGV2ZWxvcG1lbnQgRGVwdC4KLQkJCQk0MywgWW9pZG8tRG9uZywgWW91bmdkZXVuZ3BvLUt1Ci0JCQkJU2VvdWwgU2VvdWwgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItNkIgICAoaGV4KQkJQkNNIENvbXB1dGVycyBDby4sIEx0ZC4KLTAwMDI2QiAgICAgKGJhc2UgMTYpCQlCQ00gQ29tcHV0ZXJzIENvLiwgTHRkLgotCQkJCTRGLTEsIE5vLiA2NiwgU2VjIDIsCi0JCQkJTmFuIEthbiBSZC4sIEx1LUNodSBIc2luZywgVGFvIFl1YW4KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItNkMgICAoaGV4KQkJUGhpbGlwcyBDRlQKLTAwMDI2QyAgICAgKGJhc2UgMTYpCQlQaGlsaXBzIENGVAotCQkJCUJ1aWxkaW5nIFNBTiA2Ci0JCQkJUC5PLiBCb3ggMjE4IDU2MDAgTUQgRWluZGhvdmVuCi0JCQkJVGhlIE5ldGhlcmxhbmRzCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDItNkQgICAoaGV4KQkJQWRlcHQgVGVsZWNvbQotMDAwMjZEICAgICAoYmFzZSAxNikJCUFkZXB0IFRlbGVjb20KLQkJCQlBdmVudWUgZGUgbCdFdXJvcGUKLQkJCQlCUCAxNjEgRi03MTIwNCBMZSBDcmV1c290IENlZGV4Ci0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTAyLTZFICAgKGhleCkJCU5lR2VOIEFjY2VzcywgSW5jLgotMDAwMjZFICAgICAoYmFzZSAxNikJCU5lR2VOIEFjY2VzcywgSW5jLgotCQkJCTMzIEJvc3RvbiBQb3N0IFJkLiBXZXN0Ci0JCQkJU3VpdGUgMzYwCi0JCQkJTWFybGJvcm91Z2ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTZGICAgKGhleCkJCVNlbmFvIEludGVybmF0aW9uYWwgQ28uLCBMdGQuCi0wMDAyNkYgICAgIChiYXNlIDE2KQkJU2VuYW8gSW50ZXJuYXRpb25hbCBDby4sIEx0ZC4KLQkJCQkyRiwgTm8uIDUzMSwgQ2h1bmctQ2hlbmcgUmQuLAotCQkJCUhzaW4tVGllbiBDaXR5LCBUYWlwZWkgQ291bnR5LAotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItNzAgICAoaGV4KQkJQ3Jld2F2ZSBDby4sIEx0ZC4KLTAwMDI3MCAgICAgKGJhc2UgMTYpCQlDcmV3YXZlIENvLiwgTHRkLgotCQkJCUY3LCBQdXJldW4gQmxkZy4sIDI4LTEKLQkJCQlKYW13b24tZG9uZywgU2VvY2hvLWd1Ci0JCQkJU2VvdWwgS09SRUEgMTM3LTAzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi03MSAgIChoZXgpCQlaaG9uZSBUZWNobm9sb2dpZXMKLTAwMDI3MSAgICAgKGJhc2UgMTYpCQlaaG9uZSBUZWNobm9sb2dpZXMKLQkJCQk3MDAxIE9ha3BvcnQgU3RyZWV0Ci0JCQkJT2FrbGFuZCBDQSA5NDYyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNzIgICAoaGV4KQkJQ0MmQyBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDI3MiAgICAgKGJhc2UgMTYpCQlDQyZDIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCThGLCAxNTAsIENoaWVuIEkgUmQuLCBDaHVuZyBIbyBDaXR5LAotCQkJCVRhaXBlaSBDb3VudHkgMjM1IFRhaXdhbiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTczICAgKGhleCkJCUNvcmlvbGlzIE5ldHdvcmtzCi0wMDAyNzMgICAgIChiYXNlIDE2KQkJQ29yaW9saXMgTmV0d29ya3MKLQkJCQkzMzAgQ29kbWFuaGlsbCBSb2FkCi0JCQkJQm94Ym9yb3VnaCBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItNzQgICAoaGV4KQkJVG9tbXkgVGVjaG5vbG9naWVzIENvcnAuCi0wMDAyNzQgICAgIChiYXNlIDE2KQkJVG9tbXkgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJIzQwNyBIZWVob29uIEJsZAotCQkJCTExMC0xIEt1cm8tZG9uZywgS3Vyby1rdQotCQkJCVNlb3VsIFNlb3VsIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTc1ICAgKGhleCkJCVNNQVJUIFRlY2hub2xvZ2llcywgSW5jLgotMDAwMjc1ICAgICAoYmFzZSAxNikJCVNNQVJUIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTM2MzYgUmVzZWFyY2ggIFJvYWQgTlcKLQkJCQlDYWxnYXJ5LCBBbGJlcnRhICBUMkwxWTEKLQkJCQlDQU5BREEKLQotMDAtMDItNzYgICAoaGV4KQkJUHJpbWF4IEVsZWN0cm9uaWNzIEx0ZC4KLTAwMDI3NiAgICAgKGJhc2UgMTYpCQlQcmltYXggRWxlY3Ryb25pY3MgTHRkLgotCQkJCU5vLiA2NjksIFJ1ZXkgS3VhbmcgUm9hZCwgTmVpaHUKLQkJCQlUYWlwZWkgVGFpd2FuLCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLTc3ICAgKGhleCkJCUNhc2ggU3lzdGVtZXMgSW5kdXN0cmllCi0wMDAyNzcgICAgIChiYXNlIDE2KQkJQ2FzaCBTeXN0ZW1lcyBJbmR1c3RyaWUKLQkJCQlUZWNobm9wYXJjIEVwc2lsb24KLQkJCQlSZCAxMDAgODM3MDAgU3QgUmFwaGFlbAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wMi03OCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm8tTWVjaGFuaWNzIENvLiwgTHRkLgotMDAwMjc4ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryby1NZWNoYW5pY3MgQ28uLCBMdGQuCi0JCQkJMzE0LCBNYWUtdGFuLWRvbmcsCi0JCQkJUGFpLWRhbC1ndSwgS3lvdW5nLWdpLWRvLAotCQkJCVN1d29uIFN1d29uIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLTc5ICAgKGhleCkJCUNvbnRyb2wgQXBwbGljYXRpb25zLCBMdGQuCi0wMDAyNzkgICAgIChiYXNlIDE2KQkJQ29udHJvbCBBcHBsaWNhdGlvbnMsIEx0ZC4KLQkJCQkzIFRldnVvdCBIYWFyZXRzIFN0LgotCQkJCVRlbC1Bdml2IDY5NTQ2Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAyLTdBICAgKGhleCkJCUlPSSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDAyN0EgICAgIChiYXNlIDE2KQkJSU9JIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk0Ri0zIE5vLiAxMjUgTGFuZSAyMzUsCi0JCQkJUGFvIENoaWFvIFJvYWQgSHNpbiBUaWVuIENpdHksCi0JCQkJVGFpcGVpIFRBSVdBTiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi03QiAgIChoZXgpCQlBbXBsaWZ5IE5ldCwgSW5jLgotMDAwMjdCICAgICAoYmFzZSAxNikJCUFtcGxpZnkgTmV0LCBJbmMuCi0JCQkJNDczODEgQmF5c2lkZSBQYXJrd2F5Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItN0MgICAoaGV4KQkJVHJpbGl0aGljLCBJbmMuCi0wMDAyN0MgICAgIChiYXNlIDE2KQkJVHJpbGl0aGljLCBJbmMuCi0JCQkJOTIwMiBFLiAzM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjIzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItN0QgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMjdEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTdFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDI3RSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi03RiAgIChoZXgpCQlhc2stdGVjaG5vbG9naWVzLmNvbQotMDAwMjdGICAgICAoYmFzZSAxNikJCWFzay10ZWNobm9sb2dpZXMuY29tCi0JCQkJMzYgV2VsbGluZ3RvbiBCdXNpbmVzcyBQYXJrCi0JCQkJRHVrZXMgUmlkZSwgQ3Jvd3Rob3JuZSBCZXJrc2hpcmUgUkc0NSA2TAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLTgwICAgKGhleCkJCU11IE5ldCwgSW5jLgotMDAwMjgwICAgICAoYmFzZSAxNikJCU11IE5ldCwgSW5jLgotCQkJCTQ0MiBNYXJyZXR0IFJvYWQKLQkJCQlTdWl0ZSA5Ci0JCQkJTGV4aW5ndG9uIE1BIDAyNDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi04MSAgIChoZXgpCQlNYWRnZSBMdGQuCi0wMDAyODEgICAgIChiYXNlIDE2KQkJTWFkZ2UgTHRkLgotCQkJCU1hZGdlIEhvdXNlCi0JCQkJUHJpb3JzIFdheQotCQkJCU1haW5kZW5oZWFkIEJlcmtzaGlyZSBTTDYgMkhQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItODIgICAoaGV4KQkJVmlhQ2xpeCwgSW5jLgotMDAwMjgyICAgICAoYmFzZSAxNikJCVZpYUNsaXgsIEluYy4KLQkJCQkxNDAwIERlbGwgQXZlLiwgU3VpdGUgQgotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi04MyAgIChoZXgpCQlTcGVjdHJ1bSBDb250cm9scywgSW5jLgotMDAwMjgzICAgICAoYmFzZSAxNikJCVNwZWN0cnVtIENvbnRyb2xzLCBJbmMuCi0JCQkJUE8gQm94IDU1MzMKLQkJCQlCZWxsZXZ1ZSBXQSA5ODAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItODQgICAoaGV4KQkJQVJFVkEgVCZECi0wMDAyODQgICAgIChiYXNlIDE2KQkJQVJFVkEgVCZECi0JCQkJQXZlbnVlIGRlIEZpZ3VpZXJlcyBCUCA3NQotCQkJCTM0OTc1IExBVFRFUyBDZWRleAotCQkJCUZSQU5DRQotCi0wMC0wMi04NSAgIChoZXgpCQlSaXZlcnN0b25lIE5ldHdvcmtzCi0wMDAyODUgICAgIChiYXNlIDE2KQkJUml2ZXJzdG9uZSBOZXR3b3JrcwotCQkJCTUyMDAgR3JlYXQgQW1lcmljYSBQYXJrd2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTg2ICAgKGhleCkJCU9jY2FtIE5ldHdvcmtzCi0wMDAyODYgICAgIChiYXNlIDE2KQkJT2NjYW0gTmV0d29ya3MKLQkJCQk0MTgzIFN0YXRlIFN0cmVldAotCQkJCVNhbnRhIEJhcmJhcmEgQ0EgOTMxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTg3ICAgKGhleCkJCUFkYXBjb20KLTAwMDI4NyAgICAgKGJhc2UgMTYpCQlBZGFwY29tCi0JCQkJMTcyLUEgQ29tcG9uZW50IERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTg4ICAgKGhleCkJCUdMT0JBTCBWSUxMQUdFIENPTU1VTklDQVRJT04KLTAwMDI4OCAgICAgKGJhc2UgMTYpCQlHTE9CQUwgVklMTEFHRSBDT01NVU5JQ0FUSU9OCi0JCQkJMTE0NCBFQVNUIEFSUVVFUyBBVkUuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi04OSAgIChoZXgpCQlETkUgVGVjaG5vbG9naWVzCi0wMDAyODkgICAgIChiYXNlIDE2KQkJRE5FIFRlY2hub2xvZ2llcwotCQkJCTUwIEJhcm5lcyBQYXJrIE4KLQkJCQlXYWxsaW5nZm9yZCBDVCAwNjQ5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItOEEgICAoaGV4KQkJQW1iaXQgTWljcm9zeXN0ZW1zIENvcnBvcmF0aW9uCi0wMDAyOEEgICAgIChiYXNlIDE2KQkJQW1iaXQgTWljcm9zeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJNUYtMSwgNSBIc2luLUFuIFJvYWQgSHNpbmNodSwKLQkJCQlTY2llbmNlIEJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLThCICAgKGhleCkJCVZEU0wgU3lzdGVtcyBPWQotMDAwMjhCICAgICAoYmFzZSAxNikJCVZEU0wgU3lzdGVtcyBPWQotCQkJCVRla25paWthbnRpZSAxMgotCQkJCTAyIDE1MCBFc3BvbwotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTAyLThDICAgKGhleCkJCU1pY3JlbC1TeW5lcmd5IFNlbWljb25kdWN0b3IKLTAwMDI4QyAgICAgKGJhc2UgMTYpCQlNaWNyZWwtU3luZXJneSBTZW1pY29uZHVjdG9yCi0JCQkJMzI1MCBTY290dCBCb3VsZXZhcmQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItOEQgICAoaGV4KQkJTW92aXRhIFRlY2hub2xvZ2llcywgSW5jLgotMDAwMjhEICAgICAoYmFzZSAxNikJCU1vdml0YSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQlOby4gMjYgV3UtQ2h1YW4gN3RoIFJvYWQsCi0JCQkJV3UtS3UgSW5kdXN0cmlhbCBQYXJrCi0JCQkJVGFpcGVpIFRhaXdhbiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi04RSAgIChoZXgpCQlSYXBpZCA1IE5ldHdvcmtzLCBJbmMuCi0wMDAyOEUgICAgIChiYXNlIDE2KQkJUmFwaWQgNSBOZXR3b3JrcywgSW5jLgotCQkJCTE4MCBCYXl0ZWNoIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQtMjMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItOEYgICAoaGV4KQkJR2xvYmV0ZWssIEluYy4KLTAwMDI4RiAgICAgKGJhc2UgMTYpCQlHbG9iZXRlaywgSW5jLgotCQkJCTE2MDcgQWtyb24gUGVuaW5zdWxhIFJkLgotCQkJCVN1aXRlIDEwMwotCQkJCUFrcm9uIE9IIDQ0MzEzLTUxOTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTkwICAgKGhleCkJCVdvb3JpZ2lzb29sLCBJbmMuCi0wMDAyOTAgICAgIChiYXNlIDE2KQkJV29vcmlnaXNvb2wsIEluYy4KLQkJCQlZb29wb29uZyBCbGRnLgotCQkJCTE1OTUtMSwgQm9uZ2NodW0tN2RvbmcsCi0JCQkJU2VvdWwgU2VvdWwgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItOTEgICAoaGV4KQkJT3BlbiBOZXR3b3JrIENvLiwgTHRkLgotMDAwMjkxICAgICAoYmFzZSAxNikJCU9wZW4gTmV0d29yayBDby4sIEx0ZC4KLQkJCQlTZWlzaGluIEJsZGcuLCAyLTUtMTAgU2hpbmp1a3UKLQkJCQlTaGluanVrdS1rdSwgVG9reW8KLQkJCQlKQVBBTiAxNjAtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTAyLTkyICAgKGhleCkJCUxvZ2ljIElubm92YXRpb25zLCBJbmMuCi0wMDAyOTIgICAgIChiYXNlIDE2KQkJTG9naWMgSW5ub3ZhdGlvbnMsIEluYy4KLQkJCQk2MjA1IEx1c2sgQmx2ZC4KLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEtMjczMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItOTMgICAoaGV4KQkJU29saWQgRGF0YSBTeXN0ZW1zCi0wMDAyOTMgICAgIChiYXNlIDE2KQkJU29saWQgRGF0YSBTeXN0ZW1zCi0JCQkJMjk0NSBPYWttZWFkIFZpbGxhZ2UgQ291cnQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItOTQgICAoaGV4KQkJVG9reW8gU29rdXNoaW4gQ28uLCBMdGQuCi0wMDAyOTQgICAgIChiYXNlIDE2KQkJVG9reW8gU29rdXNoaW4gQ28uLCBMdGQuCi0JCQkJNS0xNi0xMiBOaXNoaS1OaXBwb3JpCi0JCQkJQXJha2F3YS1rdSwgVG9reW8gMTE2LTAwMTMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAyLTk1ICAgKGhleCkJCUlQLkFjY2VzcyBMaW1pdGVkCi0wMDAyOTUgICAgIChiYXNlIDE2KQkJSVAuQWNjZXNzIExpbWl0ZWQKLQkJCQlNZWxib3VybiBTY2llbmNlIFBhcmsKLQkJCQlDYW1icmlkZ2UgUm9hZCwgTWVsYm91cm4gUm95c3RvbiwgSGFydGZvCi0JCQkJU0c4IDZFRSBTRzggNkVFIFUuSy4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi05NiAgIChoZXgpCQlMZWN0cm9uIENvLC4gTHRkLgotMDAwMjk2ICAgICAoYmFzZSAxNikJCUxlY3Ryb24gQ28sLiBMdGQuCi0JCQkJOUYsIE5vLjE3MSwgU2VjLiAyLCBUYXR1bmcgUmQuLAotCQkJCUhzaWNoaWggQ2l0eSwgVGFpcGVpIEhzaWVuIDIyMSwKLQkJCQlUYWl3YW4gVGFpd2FuIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItOTcgICAoaGV4KQkJQy1DT1IubmV0Ci0wMDAyOTcgICAgIChiYXNlIDE2KQkJQy1DT1IubmV0Ci0JCQkJNjAgRGVjaWJlbCBSb2FkCi0JCQkJQk1TIEVuZ2luZWVyaW5nCi0JCQkJU3RhdGUgQ29sbGVnZSBQQSAxNjgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItOTggICAoaGV4KQkJQnJvYWRmcmFtZSBDb3Jwb3JhdGlvbgotMDAwMjk4ICAgICAoYmFzZSAxNikJCUJyb2FkZnJhbWUgQ29ycG9yYXRpb24KLQkJCQk1ODI4IE1vb25zdG9uZSBBdmUuCi0JCQkJU3VpdGUgMjIwCi0JCQkJQWx0YSBMb21hIENBIDkxNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi05OSAgIChoZXgpCQlBcGV4LCBJbmMuCi0wMDAyOTkgICAgIChiYXNlIDE2KQkJQXBleCwgSW5jLgotCQkJCTk5MTEgV2lsbG93cyBSZC4gTi5FLgotCQkJCVJlZG1vbmQgV0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTlBICAgKGhleCkJCVN0b3JhZ2UgQXBwcwotMDAwMjlBICAgICAoYmFzZSAxNikJCVN0b3JhZ2UgQXBwcwotCQkJCTMgUHJpbmNlc3MgUm9hZAotCQkJCUxhd3JlbmNldmlsbGUgTkogMDg2NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTlCICAgKGhleCkJCUtyZWF0ZWwgQ29tbXVuaWNhdGlvbnMgQUIKLTAwMDI5QiAgICAgKGJhc2UgMTYpCQlLcmVhdGVsIENvbW11bmljYXRpb25zIEFCCi0JCQkJVGVrbmlrcmluZ2VuIDRDCi0JCQkJU0UtNTgzMzAgTGlua29waW5nCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTAyLTlDICAgKGhleCkJCTNDT00KLTAwMDI5QyAgICAgKGJhc2UgMTYpCQkzQ09NCi0JCQkJNDA1IFNQUklORyBISUxMIFJPQUQKLQkJCQlTSEFST04gTkggMDM0NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLTlEICAgKGhleCkJCU1lcml4IENvcnAuCi0wMDAyOUQgICAgIChiYXNlIDE2KQkJTWVyaXggQ29ycC4KLQkJCQlKaW4tU3UgQnVpbGRpbmcsIDQ5LTE2Ci0JCQkJTWFjaHVtLURvbmcsIFNvbmctUGEta3UKLQkJCQlTZW91bCBTZW91bCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi05RSAgIChoZXgpCQlJbmZvcm1hdGlvbiBFcXVpcG1lbnQgQ28uLCBMdGQuCi0wMDAyOUUgICAgIChiYXNlIDE2KQkJSW5mb3JtYXRpb24gRXF1aXBtZW50IENvLiwgTHRkLgotCQkJCTc0MC0xIEVhaG8gQmxkZy4sIFllb2sgU2FtLURvbmcKLQkJCQlLYW5nbmFtLWt1Ci0JCQkJU2VvdWwgS29yZWEgIzEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItOUYgICAoaGV4KQkJTC0zIENvbW11bmljYXRpb24gQXZpYXRpb24gUmVjb3JkZXJzCi0wMDAyOUYgICAgIChiYXNlIDE2KQkJTC0zIENvbW11bmljYXRpb24gQXZpYXRpb24gUmVjb3JkZXJzCi0JCQkJUC5PLiBCb3ggMzA0MQotCQkJCVNhcmFzb3RhIEZMIDM0MjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1BMCAgIChoZXgpCQlGbGF0c3RhY2sgTHRkLgotMDAwMkEwICAgICAoYmFzZSAxNikJCUZsYXRzdGFjayBMdGQuCi0JCQkJMTExMiBCdWRhcGVzdAotCQkJCVBldGVyaGVneWkgVVQgOTgKLQkJCQlIVU5HQVJZCi0JCQkJSFVOR0FSWQotCi0wMC0wMi1BMSAgIChoZXgpCQlXb3JsZCBXaWRlIFBhY2tldHMKLTAwMDJBMSAgICAgKGJhc2UgMTYpCQlXb3JsZCBXaWRlIFBhY2tldHMKLQkJCQlQTyBCb3ggMTQ2NDUKLQkJCQlTcG9rYW5lIFdBIDk5MjE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1BMiAgIChoZXgpCQlIaWxzY2hlciBHbWJICi0wMDAyQTIgICAgIChiYXNlIDE2KQkJSGlsc2NoZXIgR21iSAotCQkJCVJoZWluc3RyYcODxbhlIDE1Ci0JCQkJNjU3OTUgSGF0dGVyc2hlaW0KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMi1BMyAgIChoZXgpCQlBQkIgU3dpdHplcmxhbmQgTHRkLCBQb3dlciBTeXN0ZW1zCi0wMDAyQTMgICAgIChiYXNlIDE2KQkJQUJCIFN3aXR6ZXJsYW5kIEx0ZCwgUG93ZXIgU3lzdGVtcwotCQkJCUJydWdnZXJzdHJhc3NlIDcyCi0JCQkJQ0gtNTQwMAotCQkJCUJhZGVuICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wMi1BNCAgIChoZXgpCQlBZGRQYWMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDJBNCAgICAgKGJhc2UgMTYpCQlBZGRQYWMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzRiBKZW91bmcgQW0gQmxkZy4sIDc2OS0xMgotCQkJCVllb2tzYW0tZG9uZywgS2FuZ25hbS1ndSwKLQkJCQlTZW91bCBTZW91bCBLb3JlYQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1BNSAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwMkE1ICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUE2ICAgKGhleCkJCUVmZmluZXQgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDJBNiAgICAgKGJhc2UgMTYpCQlFZmZpbmV0IFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJWXVnb25nIEJsZGcuIDUwMgotCQkJCTExNDQtMSwgU2FuYm9uLURvbmcgS3VucG8tc2hpLCBLeW9uZ2dpLUQKLQkJCQlLb3JlYQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1BNyAgIChoZXgpCQlWaXZhY2UgTmV0d29ya3MKLTAwMDJBNyAgICAgKGJhc2UgMTYpCQlWaXZhY2UgTmV0d29ya3MKLQkJCQkyNzMwIE9yY2hhcmQgUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1BOCAgIChoZXgpCQlBaXIgTGluayBUZWNobm9sb2d5Ci0wMDAyQTggICAgIChiYXNlIDE2KQkJQWlyIExpbmsgVGVjaG5vbG9neQotCQkJCUJldGhlbCBCbGRnLiAzMDMKLQkJCQkzMjQtMSBZYW5namVlLURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsIEtPUkVBIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItQTkgICAoaGV4KQkJUkFDT00sIHMuci5vLgotMDAwMkE5ICAgICAoYmFzZSAxNikJCVJBQ09NLCBzLnIuby4KLQkJCQlNaXJvdmEgMTI4MywgTm92ZSBNZXN0byBuYSBNb3JhdmUKLQkJCQk1OTIgMzEgQ3plY2ggcmVwdWJsaWMKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0wMi1BQSAgIChoZXgpCQlQTGNvbSBDby4sIEx0ZC4KLTAwMDJBQSAgICAgKGJhc2UgMTYpCQlQTGNvbSBDby4sIEx0ZC4KLQkJCQlIb3N1bmcgQi9ELCAjMTA4My0xLCBIb2d5ZS1Eb25nCi0JCQkJRG9uZ2FuLUt1LCBBbnlhbmctQ2l0eQotCQkJCVNvdXRoIEtvcmVhCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUFCICAgKGhleCkJCUNUQyBVbmlvbiBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDAyQUIgICAgIChiYXNlIDE2KQkJQ1RDIFVuaW9uIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQk4RiBOby4gNjAgWmhvdXppIFN0LgotCQkJCU5laWh1IFRhaXBlaSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLUFDICAgKGhleCkJCTNQQVIgZGF0YQotMDAwMkFDICAgICAoYmFzZSAxNikJCTNQQVIgZGF0YQotCQkJCTQyMDkgVGVjaG5vbG9neSBEcml2ZQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUFEICAgKGhleCkJCUhPWUEgQ29ycG9yYXRpb24KLTAwMDJBRCAgICAgKGJhc2UgMTYpCQlIT1lBIENvcnBvcmF0aW9uCi0JCQkJMi03LTUgTmFrYS1PY2hpYWksIFNoaW5qdWt1LWt1LAotCQkJCVRva3lvIDE2MS04NTI1Ci0JCQkJSkFQQU4KLQotMDAtMDItQUUgICAoaGV4KQkJU2Nhbm5leCBFbGVjdHJvbmljcyBMdGQuCi0wMDAyQUUgICAgIChiYXNlIDE2KQkJU2Nhbm5leCBFbGVjdHJvbmljcyBMdGQuCi0JCQkJVW5pdCA4IEVuZ2xpc2ggQnVzaW5lc3MgUGFyawotCQkJCUVuZ2xpc2ggQ2xvc2UKLQkJCQlIb3ZlICBCTjMgN0VUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItQUYgICAoaGV4KQkJVGVsZUNydXogVGVjaG5vbG9neSwgSW5jLgotMDAwMkFGICAgICAoYmFzZSAxNikJCVRlbGVDcnV6IFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyMzkxIFF1bWUgRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUIwICAgKGhleCkJCUhva3VidSBDb21tdW5pY2F0aW9uICYgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMDJCMCAgICAgKGJhc2UgMTYpCQlIb2t1YnUgQ29tbXVuaWNhdGlvbiAmIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJRnVzaGlvZ2FtaS1hemEtb2tpIDI3LTEKLQkJCQlGdWt1c2hpbWEgIDk2MC04NTE0Ci0JCQkJSkFQQU4KLQotMDAtMDItQjEgICAoaGV4KQkJQW5yaXRzdSwgTHRkLgotMDAwMkIxICAgICAoYmFzZSAxNikJCUFucml0c3UsIEx0ZC4KLQkJCQlSdXRoZXJmb3JkIENsb3NlCi0JCQkJU3RldmVuYWdlLCBIZXJ0cyBFbmdsYW5kLCBTRzEyRUYKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLUIyICAgKGhleCkJCUNhYmxldmlzaW9uCi0wMDAyQjIgICAgIChiYXNlIDE2KQkJQ2FibGV2aXNpb24KLQkJCQk0MjAgQ3Jvc3N3YXlzIFBhcmsgRHJpdmUgV2VzdAotCQkJCVdvb2RidXJ5IE5ZIDExNzg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1CMyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAwMkIzICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTS9TOiAgSkYzLTQyMAotCQkJCTIxMTEgTi5FLiAyNXRoIEF2ZS4KLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUI0ICAgKGhleCkJCURBUEhORQotMDAwMkI0ICAgICAoYmFzZSAxNikJCURBUEhORQotCQkJCTEwMSBDaGF1c3NlZSBEZSBCaW5jaGUKLQkJCQk3MDAwIEhvbnMKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC0wMi1CNSAgIChoZXgpCQlBdm5ldCwgSW5jLgotMDAwMkI1ICAgICAoYmFzZSAxNikJCUF2bmV0LCBJbmMuCi0JCQkJMjIxMSBTLiA0N3RoIFN0cmVldAotCQkJCVBob2VuaXggQVogODUwMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUI2ICAgKGhleCkJCUFjcm9zc2VyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDAyQjYgICAgIChiYXNlIDE2KQkJQWNyb3NzZXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMTE2LTIgR3VhbmctRnUgUmQuCi0JCQkJU2VhIDEsIFNhbiBDaHVuZywKLQkJCQlUYWlwZWkgVGFpcGVpIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItQjcgICAoaGV4KQkJV2F0YW5hYmUgRWxlY3RyaWMgSW5kdXN0cnkgQ28uLCBMdGQuCi0wMDAyQjcgICAgIChiYXNlIDE2KQkJV2F0YW5hYmUgRWxlY3RyaWMgSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJNi0xNi0xOSwgSmluZ3VtYWUsIFNoaWJ1eWEta3UKLQkJCQlUb2t5byAxNTAtMDAwMSwKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAyLUI4ICAgKGhleCkJCVdISSBLT05TVUxUIEFCCi0wMDAyQjggICAgIChiYXNlIDE2KQkJV0hJIEtPTlNVTFQgQUIKLQkJCQlTY2hlZWxlZ2F0YW4gMTEKLQkJCQkxMjA0MCBBcnN0YQotCQkJCVN0b2NraG9sbSBTRS0xMTIgMjgKLQkJCQlTV0VERU4KLQotMDAtMDItQjkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMkI5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUJBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDJCQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1CQiAgIChoZXgpCQlDb250aW51b3VzIENvbXB1dGluZyBDb3JwCi0wMDAyQkIgICAgIChiYXNlIDE2KQkJQ29udGludW91cyBDb21wdXRpbmcgQ29ycAotCQkJCTkzODAgQ2Fycm9sbCBQYXJrIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1CQyAgIChoZXgpCQlMVkwgNyBTeXN0ZW1zLCBJbmMuCi0wMDAyQkMgICAgIChiYXNlIDE2KQkJTFZMIDcgU3lzdGVtcywgSW5jLgotCQkJCTEzMDAwIFdlc3RvbiBQa3d5Ci0JCQkJU3VpdGUgMTA1Ci0JCQkJQ2FyeSBOQyAyNzUxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQkQgICAoaGV4KQkJQmlvbmV0IENvLiwgTHRkLgotMDAwMkJEICAgICAoYmFzZSAxNikJCUJpb25ldCBDby4sIEx0ZC4KLQkJCQkzRiwgTWVkaXNvbiBWZW50dXJlIFRvd2VyLAotCQkJCTk5Ny00LCBEYWVjaGktZG9uZywgS2FuZ25hbS1ndSwgU2VvdWwsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItQkUgICAoaGV4KQkJVG90c3UgRW5naW5lZXJpbmcsIEluYy4KLTAwMDJCRSAgICAgKGJhc2UgMTYpCQlUb3RzdSBFbmdpbmVlcmluZywgSW5jLgotCQkJCSA1LTE2LTIwIFJvcHBvbmdpIE1pbmF0by1rdQotCQkJCVppcDogIDEwNi0wMDMyCi0JCQkJVG9reW8gIDEwNi04NTUxCi0JCQkJSkFQQU4KLQotMDAtMDItQkYgICAoaGV4KQkJZG90Um9ja2V0LCBJbmMuCi0wMDAyQkYgICAgIChiYXNlIDE2KQkJZG90Um9ja2V0LCBJbmMuCi0JCQkJMTkwMSBTLiBCYXNjb20sIFN1aXRlIDMwMAotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1DMCAgIChoZXgpCQlCZW5jZW50IFR6ZW5nIEluZHVzdHJ5IENvLiwgTHRkLgotMDAwMkMwICAgICAoYmFzZSAxNikJCUJlbmNlbnQgVHplbmcgSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJM3JkIGZsLiwgTm8uIDMgUnVleSBLdWFuZyBSZC4sCi0JCQkJTmVpIEh1IERpc3QuLCBUYWlwZWkgMTE0Ci0JCQkJVGFpd2FuIFRhaXdhbiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLUMxICAgKGhleCkJCUlubm92YXRpdmUgRWxlY3Ryb25pYyBEZXNpZ25zLCBJbmMuCi0wMDAyQzEgICAgIChiYXNlIDE2KQkJSW5ub3ZhdGl2ZSBFbGVjdHJvbmljIERlc2lnbnMsIEluYy4KLQkJCQk5NzAxIFRheWxvcnN2aWxsZSBSZC4KLQkJCQlMb3Vpc3ZpbGxlIEtZIDQwMjk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1DMiAgIChoZXgpCQlOZXQgVmlzaW9uIFRlbGVjb20KLTAwMDJDMiAgICAgKGJhc2UgMTYpCQlOZXQgVmlzaW9uIFRlbGVjb20KLQkJCQkjMjA2IFNvZnR3YXJlIFN1cHBvcnQgQ2VudGVyCi0JCQkJNDggSmFuZy1Eb25nIFl1c29uZy1HdSwgVGFlam9uCi0JCQkJMzA1LTM0MyBSZXAuIG9mIEtvcmVhCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUMzICAgKGhleCkJCUFyZWxuZXQgTHRkLgotMDAwMkMzICAgICAoYmFzZSAxNikJCUFyZWxuZXQgTHRkLgotCQkJCTMgSGF5YXJkZW4gU3QuCi0JCQkJWWF2bmUgNzA2MDAKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDItQzQgICAoaGV4KQkJVmVjdG9yIEludGVybmF0aW9uYWwgQlZCQQotMDAwMkM0ICAgICAoYmFzZSAxNikJCVZlY3RvciBJbnRlcm5hdGlvbmFsIEJWQkEKLQkJCQlUZWNobm9sb2dpZWxhYW4gNAotCQkJCTMwMDEgTGV1dmVuIAotCQkJCUJFTEdJVU0KLQotMDAtMDItQzUgICAoaGV4KQkJRXZlcnR6IE1pY3Jvc3lzdGVtcyBMdGQuCi0wMDAyQzUgICAgIChiYXNlIDE2KQkJRXZlcnR6IE1pY3Jvc3lzdGVtcyBMdGQuCi0JCQkJNTI4OCBKb2huIEx1Y2FzIERyaXZlCi0JCQkJQnVybGluZ3RvbgotCQkJCU9udGFyaW8gTDdMIDVaOQotCQkJCUNBTkFEQQotCi0wMC0wMi1DNiAgIChoZXgpCQlEYXRhIFRyYWNrIFRlY2hub2xvZ3kgUExDCi0wMDAyQzYgICAgIChiYXNlIDE2KQkJRGF0YSBUcmFjayBUZWNobm9sb2d5IFBMQwotCQkJCTE1MyBTb21lcmZvcmQgUm9hZAotCQkJCUNocmlzdGNodXJjaCwgRG9yc2V0IEJIMjMgM1RZLAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDItQzcgICAoaGV4KQkJQUxQUyBFTEVDVFJJQyBDby4sIEx0ZC4KLTAwMDJDNyAgICAgKGJhc2UgMTYpCQlBTFBTIEVMRUNUUklDIENvLiwgTHRkLgotCQkJCTEtMi0xLCBPa2lub3VjaGksIFNhbWEtQ2l0eSwKLQkJCQlGdWt1c2hpbWEtcHJlZiwgOTc2LTg1MDEsCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMi1DOCAgIChoZXgpCQlUZWNobm9jb20gQ29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSAocHRlKSBMdGQKLTAwMDJDOCAgICAgKGJhc2UgMTYpCQlUZWNobm9jb20gQ29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSAocHRlKSBMdGQKLQkJCQkxODkgS2FraSBCdWNraXQgQXZlbnVlIDEKLQkJCQkjMDMtMDMgU2h1biBMaSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlTaW5nYXBvcmUgNDE2MDI5Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTAyLUM5ICAgKGhleCkJCU1lbGxhbm94IFRlY2hub2xvZ2llcwotMDAwMkM5ICAgICAoYmFzZSAxNikJCU1lbGxhbm94IFRlY2hub2xvZ2llcwotCQkJCTM1MCBPYWttZWFkIFBhcmt3YXkKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUNBICAgKGhleCkJCUVuZFBvaW50cywgSW5jLgotMDAwMkNBICAgICAoYmFzZSAxNikJCUVuZFBvaW50cywgSW5jLgotCQkJCTQgUHJlc3RvbiBDb3VydAotCQkJCUJlZGZvcmQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUNCICAgKGhleCkJCVRyaVN0YXRlIEx0ZC4KLTAwMDJDQiAgICAgKGJhc2UgMTYpCQlUcmlTdGF0ZSBMdGQuCi0JCQkJU2hpbm9uYWdhIEJsZy4gNC0xMS0xOSBIb2trby1jaG8KLQkJCQlUb21ha29tYWktc2hpLCBIb2trYWlkbwotCQkJCTA1My0wODUyIDA1My0wODUyIEphcGFuCi0JCQkJSkFQQU4KLQotMDAtMDItQ0MgICAoaGV4KQkJTS5DLkMuSQotMDAwMkNDICAgICAoYmFzZSAxNikJCU0uQy5DLkkKLQkJCQkzNTIwIEtydW1zIENvcm5lcnMgUmQuCi0JCQkJSXRoYWNhIE5ZIDE0ODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1DRCAgIChoZXgpCQlUZWxlRHJlYW0sIEluYy4KLTAwMDJDRCAgICAgKGJhc2UgMTYpCQlUZWxlRHJlYW0sIEluYy4KLQkJCQlTaGluaHdhIEJsZGcuLCA5NDAtMTAgRGFlY2hpLURvbmcKLQkJCQlLYW5nbmFtLWt1LCBTZW91bCAxMzUtMjgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUNFICAgKGhleCkJCUZveEpldCwgSW5jLgotMDAwMkNFICAgICAoYmFzZSAxNikJCUZveEpldCwgSW5jLgotCQkJCTIwMTYgRS4gUmFuZGFsIE1pbGwgUmQuICM0MDkKLQkJCQlBcmxpbmd0b24gVFggNzYwMTEtODIyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItQ0YgICAoaGV4KQkJWnlHYXRlIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAyQ0YgICAgIChiYXNlIDE2KQkJWnlHYXRlIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMkYsIE5vLjQ4LCBMdW5nLUNoaW4gUm9hZAotCQkJCUx1bmctVGFuLCBUYW55dWFuLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItRDAgICAoaGV4KQkJQ29tZGlhbCBDb3Jwb3JhdGlvbgotMDAwMkQwICAgICAoYmFzZSAxNikJCUNvbWRpYWwgQ29ycG9yYXRpb24KLQkJCQkxMTgwIFNlbWlub2xlIFRyYWlsCi0JCQkJQ2hhcmxvdHRlc3ZpbGxlIFZBIDIyOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1EMSAgIChoZXgpCQlWaXZvdGVrLCBJbmMuCi0wMDAyRDEgICAgIChiYXNlIDE2KQkJVml2b3RlaywgSW5jLgotCQkJCTVGLTEsIDE2OC0xLCBMaWVuLUNoZW4gUmQsCi0JCQkJQ2h1bmctSG8sIFRhaXBlaSBDb3VudHksCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMi1EMiAgIChoZXgpCQlXb3Jrc3RhdGlvbiBBRwotMDAwMkQyICAgICAoYmFzZSAxNikJCVdvcmtzdGF0aW9uIEFHCi0JCQkJU2NoYWZmaGF1c2Vyc3RyLiA1NQotCQkJCUNILTgxNTIgR2xhdHRicnVnZwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAyLUQzICAgKGhleCkJCU5ldEJvdHosIEluYy4KLTAwMDJEMyAgICAgKGJhc2UgMTYpCQlOZXRCb3R6LCBJbmMuCi0JCQkJMTEwMDQ0IFJlc2VhcmNoIEJsdmQuCi0JCQkJU3VpdGUgQy0xMDAKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUQ0ICAgKGhleCkJCVBEQSBQZXJpcGhlcmFscywgSW5jLgotMDAwMkQ0ICAgICAoYmFzZSAxNikJCVBEQSBQZXJpcGhlcmFscywgSW5jLgotCQkJCTIwNSBPcmFuZ2UgU3QuCi0JCQkJVGhpcmQgRmxvb3IKLQkJCQlOZXcgSGF2ZW4gQ1QgMDY1MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUQ1ICAgKGhleCkJCUFDUgotMDAwMkQ1ICAgICAoYmFzZSAxNikJCUFDUgotCQkJCUNhcmRvdWxpbmVzIEIyCi0JCQkJMTM2MCBydGUgRG9saW5pcyAwNjU2MCBWYWxib25uZQotCQkJCUZSQU5DRQotCi0wMC0wMi1ENiAgIChoZXgpCQlOSUNFIFN5c3RlbXMKLTAwMDJENiAgICAgKGJhc2UgMTYpCQlOSUNFIFN5c3RlbXMKLQkJCQk4IEhhcG5pbmEgU3QuLCBQT0IgNjkwCi0JCQkJUmEnQW5hbmEgNDMxMDcKLQkJCQlJU1JBRUwKLQotMDAtMDItRDcgICAoaGV4KQkJRU1QRUcgTHRkCi0wMDAyRDcgICAgIChiYXNlIDE2KQkJRU1QRUcgTHRkCi0JCQkJMSBTaWduZXQgQ291cnQKLQkJCQlTd2FubidzIFJvYWQgQ2FtYnJpZGdlLCBVSwotCQkJCUNCNSA4TEEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi1EOCAgIChoZXgpCQlCUkVDSVMgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMDJEOCAgICAgKGJhc2UgMTYpCQlCUkVDSVMgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQkyMDI1IEdhdGV3YXkgUGxhY2UsIFN1aXRlIDEzMgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1EOSAgIChoZXgpCQlSZWxpYWJsZSBDb250cm9scwotMDAwMkQ5ICAgICAoYmFzZSAxNikJCVJlbGlhYmxlIENvbnRyb2xzCi0JCQkJMTIwIEhhbGxvd2VsbCBSb2FkCi0JCQkJVmljdG9yaWEsICBCLkMuIFY5QSA3SzIKLQkJCQlDQU5BREEKLQotMDAtMDItREEgICAoaGV4KQkJRXhpTyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMkRBICAgICAoYmFzZSAxNikJCUV4aU8gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyMzYyIFF1bWUgRHJpdmUKLQkJCQlTdWl0ZSBDCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLURCICAgKGhleCkJCU5FVFNFQwotMDAwMkRCICAgICAoYmFzZSAxNikJCU5FVFNFQwotCQkJCTEzNTA1IER1bGxlcyBUZWNobm9sb2d5IERyaXZlCi0JCQkJU3VpdGUgMQotCQkJCUhlcm5hbmRvbiBWQSAyMDE3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItREMgICAoaGV4KQkJRnVqaXRzdSBHZW5lcmFsIExpbWl0ZWQKLTAwMDJEQyAgICAgKGJhc2UgMTYpCQlGdWppdHN1IEdlbmVyYWwgTGltaXRlZAotCQkJCTExMTYsIFN1ZW5hZ2EsIFRha2F0c3UtS3UsCi0JCQkJS2F3YXNha2ktQ2l0eSwgS2FuYWdhd2EtUHJlZi4sCi0JCQkJMjEzLTg1MDIgCi0JCQkJSkFQQU4KLQotMDAtMDItREQgICAoaGV4KQkJQnJvbWF4IENvbW11bmljYXRpb25zLCBMdGQuCi0wMDAyREQgICAgIChiYXNlIDE2KQkJQnJvbWF4IENvbW11bmljYXRpb25zLCBMdGQuCi0JCQkJTm8uIDIwIEt1YW5nIEZ1IFJvYWQsCi0JCQkJSHNpbiBDaHUgSW5kdXN0cmlhbCBQYXJrLCBIdSBLb3UsCi0JCQkJSHNpbiBDaHUgMzAzICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAyLURFICAgKGhleCkJCUFzdHJvZGVzaWduLCBJbmMuCi0wMDAyREUgICAgIChiYXNlIDE2KQkJQXN0cm9kZXNpZ24sIEluYy4KLQkJCQkyLTIyLTEyIEthbWlrb2RhbmEgS2EKLQkJCQlOYWthaGFyYWt1LCBLYXdhc2FpLUNpdHkKLQkJCQlLYW5hZ2F3YSAgCi0JCQkJSkFQQU4KLQotMDAtMDItREYgICAoaGV4KQkJTmV0IENvbSBTeXN0ZW1zLCBJbmMuCi0wMDAyREYgICAgIChiYXNlIDE2KQkJTmV0IENvbSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTUtMywgWW9pZG8tRG9uZywKLQkJCQlZZW91bmdkb25ncG8ta3UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1FMCAgIChoZXgpCQlFVEFTIEdtYkgKLTAwMDJFMCAgICAgKGJhc2UgMTYpCQlFVEFTIEdtYkgKLQkJCQlCb3JzaWdzdHJhc3NlIDEwCi0JCQkJRDcwNDY5IFN0dXR0Z2FydAotCQkJCUdFUk1BTlkKLQotMDAtMDItRTEgICAoaGV4KQkJSW50ZWdyYXRlZCBOZXR3b3JrIENvcnBvcmF0aW9uCi0wMDAyRTEgICAgIChiYXNlIDE2KQkJSW50ZWdyYXRlZCBOZXR3b3JrIENvcnBvcmF0aW9uCi0JCQkJNzU3IFJvdXRlIDIwMi8yMDYKLQkJCQlCcmlkZ2V3YXRlciBOSiAwODgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRTIgICAoaGV4KQkJTkRDIEluZmFyZWQgRW5naW5lZXJpbmcKLTAwMDJFMiAgICAgKGJhc2UgMTYpCQlOREMgSW5mYXJlZCBFbmdpbmVlcmluZwotCQkJCTUzMTQgTi4gSXJ3aW5kYWxlIEF2ZS4KLQkJCQlJcndpbmRhbGUgQ0EgOTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUUzICAgKGhleCkJCUxJVEUtT04gQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDJFMyAgICAgKGJhc2UgMTYpCQlMSVRFLU9OIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNzM2IFMuIEhpbGx2aWV3IERyaXZlCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUU0ICAgKGhleCkJCUpDIEhZVU4gU3lzdGVtcywgSW5jLgotMDAwMkU0ICAgICAoYmFzZSAxNikJCUpDIEhZVU4gU3lzdGVtcywgSW5jLgotCQkJCVNoaW5ib25nIEJsZGcsIDczNi02LAotCQkJCVlva3NhbS1Eb25nLCBLYW5nbmFtLUt1LAotCQkJCVNlb3VsICAoMTM1LTA4MCkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDItRTUgICAoaGV4KQkJVGltZXdhcmUgTHRkLgotMDAwMkU1ICAgICAoYmFzZSAxNikJCVRpbWV3YXJlIEx0ZC4KLQkJCQlCcm9va2ZpZWxkIEdyYW5nZQotCQkJCTc5IEZhbGluZ2UgUmQsIFJvY2tkYWxlCi0JCQkJTGFuY3MgIDA0MiBHTEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi1FNiAgIChoZXgpCQlHb3VsZCBJbnN0cnVtZW50IFN5c3RlbXMsIEluYy4KLTAwMDJFNiAgICAgKGJhc2UgMTYpCQlHb3VsZCBJbnN0cnVtZW50IFN5c3RlbXMsIEluYy4KLQkJCQk4MzMzIFJvY2tzaWRlIFJvYWQKLQkJCQlWYWxsZXkgVmlldyBPSCA0NDEyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRTcgICAoaGV4KQkJQ0FCIEdtYkggJiBDbyBLRwotMDAwMkU3ICAgICAoYmFzZSAxNikJCUNBQiBHbWJIICYgQ28gS0cKLQkJCQlXaWxoZWxtLVNjaGlja2FyZC1TdHIgMTQKLQkJCQk3NjEzMSBLYXJsc3J1aGUKLQkJCQlHRVJNQU5ZCi0KLTAwLTAyLUU4ICAgKGhleCkJCUUuRC4mQS4KLTAwMDJFOCAgICAgKGJhc2UgMTYpCQlFLkQuJkEuCi0JCQkJRW5lcmdpZWxhYW4gMTYKLQkJCQlJWiBCb3NkdWluIDI5NTAgS2FwZWxsZW4KLQkJCQlCRUxHSVVNCi0KLTAwLTAyLUU5ICAgKGhleCkJCUNTIFN5c3RlbWVzIERlIFNlY3VyaXRlIC0gQzNTCi0wMDAyRTkgICAgIChiYXNlIDE2KQkJQ1MgU3lzdGVtZXMgRGUgU2VjdXJpdGUgLSBDM1MKLQkJCQkyMywgcnVlIGRlIFNjaHdvYnNoZWltCi0JCQkJNjc2MDAgQmFsZGVuaGVpbQotCQkJCUZSQU5DRQotCi0wMC0wMi1FQSAgIChoZXgpCQlGb2N1cyBFbmhhbmNlbWVudHMKLTAwMDJFQSAgICAgKGJhc2UgMTYpCQlGb2N1cyBFbmhhbmNlbWVudHMKLQkJCQkxMzcwIERlbGwgQXZlLgotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1FQiAgIChoZXgpCQlQaWNvIENvbW11bmljYXRpb25zCi0wMDAyRUIgICAgIChiYXNlIDE2KQkJUGljbyBDb21tdW5pY2F0aW9ucwotCQkJCTIwMDg1IFN0ZXZlbnMgQ3JlZWsgQmx2ZC4KLQkJCQlTdWl0ZSAjMTAwCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1FQyAgIChoZXgpCQlNYXNjaG9mZiBEZXNpZ24gRW5naW5lZXJpbmcKLTAwMDJFQyAgICAgKGJhc2UgMTYpCQlNYXNjaG9mZiBEZXNpZ24gRW5naW5lZXJpbmcKLQkJCQk0NDU0IENlZGFyIExha2UgUmQuICM4Ci0JCQkJU3QuIExvdWlzIFBhcmsgTU4gNTU0MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUVEICAgKGhleCkJCURYTyBUZWxlY29tIENvLiwgTHRkLgotMDAwMkVEICAgICAoYmFzZSAxNikJCURYTyBUZWxlY29tIENvLiwgTHRkLgotCQkJCThGLCAzMDAtMTEsIFl1bWdvay1Eb25nLAotCQkJCVNlb2Noby1LdSwgU2VvdWwgMTM3LTc4OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1FRSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAwMkVFICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqLCBDb3BlbmhhZ2VuIFYKLQkJCQlESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0wMi1FRiAgIChoZXgpCQlDQ0MgTmV0d29yayBTeXN0ZW1zIEdyb3VwIEx0ZC4KLTAwMDJFRiAgICAgKGJhc2UgMTYpCQlDQ0MgTmV0d29yayBTeXN0ZW1zIEdyb3VwIEx0ZC4KLQkJCQkxMyBGYXJuYm9yb3VnaCBCdXNpbmVzcyBDZW50cmUKLQkJCQlFZWxtb29yIFJvYWQsIEZhcm5ib3JvdWdoLCBIYW50cywgR1UxNCA3Ci0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMi1GMCAgIChoZXgpCQlBTUUgT3B0aW1lZGlhIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDAyRjAgICAgIChiYXNlIDE2KQkJQU1FIE9wdGltZWRpYSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTE3Ri0yLCA3OSBIc2luIFRhaSBXdSBSb2FkLCBTZWMuIDEsCi0JCQkJSHNpLUNoaWgsIFRhaXBlaSBIc2llbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDItRjEgICAoaGV4KQkJUGluZXRyb24gQ28uLCBMdGQuCi0wMDAyRjEgICAgIChiYXNlIDE2KQkJUGluZXRyb24gQ28uLCBMdGQuCi0JCQkJQmxkZy4gIzE1OTktMTEsCi0JCQkJU2VvY2hvLURvbmcsIFNlb2Noby1LdSwKLQkJCQlTZW91bCAgMTM3LTA3MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMi1GMiAgIChoZXgpCQllRGV2aWNlLCBJbmMuCi0wMDAyRjIgICAgIChiYXNlIDE2KQkJZURldmljZSwgSW5jLgotCQkJCTQyMCBMZXhpbmd0b24gQXZlbnVlCi0JCQkJU3VpdGUgMjMwMAotCQkJCU5ldyBZb3JrIE5ZIDEwMTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1GMyAgIChoZXgpCQlNZWRpYSBTZXJ2ZSBDby4sIEx0ZC4KLTAwMDJGMyAgICAgKGJhc2UgMTYpCQlNZWRpYSBTZXJ2ZSBDby4sIEx0ZC4KLQkJCQlEb25nc3VuZyBCbGRnLiAjMTctOCwgWW91aWRvLWRvbmcsCi0JCQkJWW91bmdkZW91bmdwby1rdSwKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAyLUY0ICAgKGhleCkJCVBDVEVMLCBJbmMuCi0wMDAyRjQgICAgIChiYXNlIDE2KQkJUENURUwsIEluYy4KLQkJCQkxMzMxIENhbGlmb3JuaWEgQ2lyY2xlCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUY1ICAgKGhleCkJCVZJVkUgU3luZXJnaWVzLCBJbmMuCi0wMDAyRjUgICAgIChiYXNlIDE2KQkJVklWRSBTeW5lcmdpZXMsIEluYy4KLQkJCQkzMCBXZXN0IEJlYXZlciBDcmVlayBSb2FkLCBVbml0IDEwMQotCQkJCVJpY2htb25kIEhpbGwsIE9udGFyaW8KLQkJCQlMNEIgM0sxCi0JCQkJQ0FOQURBCi0KLTAwLTAyLUY2ICAgKGhleCkJCUVxdWlwZSBDb21tdW5pY2F0aW9ucwotMDAwMkY2ICAgICAoYmFzZSAxNikJCUVxdWlwZSBDb21tdW5pY2F0aW9ucwotCQkJCTEwMCBOYWdvZyBQYXJrCi0JCQkJQWN0b24gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUY3ICAgKGhleCkJCUFSTQotMDAwMkY3ICAgICAoYmFzZSAxNikJCUFSTQotCQkJCTExMCwgRnVsYm91cm4gUm9hZAotCQkJCUNoZXJyeSBIaW50b24gQ2FtYnJpZGdlCi0JCQkJQ0IxIDlOSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAyLUY4ICAgKGhleCkJCVNFQUtSIEVuZ2luZWVyaW5nLCBJbmMuCi0wMDAyRjggICAgIChiYXNlIDE2KQkJU0VBS1IgRW5naW5lZXJpbmcsIEluYy4KLQkJCQkxMjg0NyBFLiBQZWFrdmlldyBBdmUuCi0JCQkJRW5nbGV3b29kIENPIDgwMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1GOSAgIChoZXgpCQlNaW1vcyBTZW1pY29uZHVjdG9yIFNETiBCSEQKLTAwMDJGOSAgICAgKGJhc2UgMTYpCQlNaW1vcyBTZW1pY29uZHVjdG9yIFNETiBCSEQKLQkJCQlUYW1hbiBUZWtub2xvZ2kgTWFsYXlzaWEKLQkJCQlCdWtpdCBKYWxpbCA1NzAwMCBLdWFsYSBMdW1wdXIsCi0JCQkJTUFMQVlTSUEKLQotMDAtMDItRkEgICAoaGV4KQkJRFggQW50ZW5uYSBDby4sIEx0ZC4KLTAwMDJGQSAgICAgKGJhc2UgMTYpCQlEWCBBbnRlbm5hIENvLiwgTHRkLgotCQkJCTItMTUgSGFtYXpha2ktRG9yaSwKLQkJCQlIeW9nby1rdSwgS29iZQotCQkJCUpBUEFOCi0KLTAwLTAyLUZCICAgKGhleCkJCUJhdW11bGxlciBBdWx1Z2VuLVN5c3RlbXRlY2huaWsgR21iSAotMDAwMkZCICAgICAoYmFzZSAxNikJCUJhdW11bGxlciBBdWx1Z2VuLVN5c3RlbXRlY2huaWsgR21iSAotCQkJCU9zdGVuZHN0cy4gODQKLQkJCQlELTkwNDgyIE51cnViZXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wMi1GQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAyRkMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDItRkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMkZEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAyLUZFICAgKGhleCkJCVZpZGl0ZWMsIEluYy4KLTAwMDJGRSAgICAgKGJhc2UgMTYpCQlWaWRpdGVjLCBJbmMuCi0JCQkJNTIwIENlbnRyYWwgUGFya3dheSBFLgotCQkJCVN1aXRlIDExNQotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMi1GRiAgIChoZXgpCQlIYW5kYW4gQnJvYWRJbmZvQ29tCi0wMDAyRkYgICAgIChiYXNlIDE2KQkJSGFuZGFuIEJyb2FkSW5mb0NvbQotCQkJCTV0aCBGbC4gU2hpbnN1bmcgUGxhemEgIzY5Ny0xMQotCQkJCVllb2dzYW0tZG9uZywgS2FuZ25hbS1ndQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMDAgICAoaGV4KQkJQmFycmFjdWRhIE5ldHdvcmtzLCBJbmMuCi0wMDAzMDAgICAgIChiYXNlIDE2KQkJQmFycmFjdWRhIE5ldHdvcmtzLCBJbmMuCi0JCQkJMzE3NSBTLiBXaW5jaGVzdGVyIEJsdmQKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMDEgICAoaGV4KQkJQXZhbnRhcyBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAwMzAxICAgICAoYmFzZSAxNikJCUF2YW50YXMgTmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQk5OTAwIENhdmVuZGlzaCBCbHZkLiwgU3VpdGUgIzMxMAotCQkJCVN0LUxhdXJlbnQsIFF1ZWJlYwotCQkJCUg0TSAyVjIKLQkJCQlDQU5BREEKLQotMDAtMDMtMDIgICAoaGV4KQkJQ2hhcmxlcyBJbmR1c3RyaWVzLCBMdGQuCi0wMDAzMDIgICAgIChiYXNlIDE2KQkJQ2hhcmxlcyBJbmR1c3RyaWVzLCBMdGQuCi0JCQkJNTYwMCBBcG9sbG8gRHJpdmUKLQkJCQlSb2xsaW5nIE1lYWRvd3MgSUwgNjAwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTAzICAgKGhleCkJCUpBTUEgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDAzMDMgICAgIChiYXNlIDE2KQkJSkFNQSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkxMEYsIE5vLiAyMjItMSwgU2VjLiAzCi0JCQkJVGEtVHVuZyBSZC4sIEhzaS1DaGloCi0JCQkJVGFpcGVpIEhzaWVuICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTA0ICAgKGhleCkJCVBhY2lmaWMgQnJvYWRiYW5kIENvbW11bmljYXRpb25zCi0wMDAzMDQgICAgIChiYXNlIDE2KQkJUGFjaWZpYyBCcm9hZGJhbmQgQ29tbXVuaWNhdGlvbnMKLQkJCQkzMTAzIE5vcnRoIEZpcnN0IFN0LgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0wNSAgIChoZXgpCQlNU0MgVmVydHJpZWJzIEdtYkgKLTAwMDMwNSAgICAgKGJhc2UgMTYpCQlNU0MgVmVydHJpZWJzIEdtYkgKLQkJCQlEZXNpZ24gQ2VudGVyIEFhY2hlbgotCQkJCVBhc2NhbHN0cmFzc2UgMjEKLQkJCQlBQUNIRU4gICAgRC01MjA3NgotCQkJCUdFUk1BTlkKLQotMDAtMDMtMDYgICAoaGV4KQkJRnVzaW9uIEluIFRlY2ggQ28uLCBMdGQuCi0wMDAzMDYgICAgIChiYXNlIDE2KQkJRnVzaW9uIEluIFRlY2ggQ28uLCBMdGQuCi0JCQkJNkZsLCBEYWV5b29uIEJsZGcuIDE2ODgtNSwgU2VvY2hvLWRvbmcKLQkJCQlTZW9jaG8ta3UsCi0JCQkJU2VvdWwsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMDcgICAoaGV4KQkJU2VjdXJlIFdvcmtzLCBJbmMuCi0wMDAzMDcgICAgIChiYXNlIDE2KQkJU2VjdXJlIFdvcmtzLCBJbmMuCi0JCQkJMTEgRXhlY3V0aXZlIERyaXZlCi0JCQkJU3VpdGUgMjAwCi0JCQkJQXRsYW50YSBHQSAzMDMyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMDggICAoaGV4KQkJQU0gQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDMwOCAgICAgKGJhc2UgMTYpCQlBTSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTEwMCBDb21tZXJjZSBCbHZkLgotCQkJCVF1YWtlcnRvd24gUEEgMTg5NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTA5ICAgKGhleCkJCVRleGNlbCBUZWNobm9sb2d5IFBMQwotMDAwMzA5ICAgICAoYmFzZSAxNikJCVRleGNlbCBUZWNobm9sb2d5IFBMQwotCQkJCVRoYW1lcyBSb2FkCi0JCQkJQ3JheWZvcmQgS2VudCBEQTEgNFNCCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMy0wQSAgIChoZXgpCQlBcmd1cyBUZWNobm9sb2dpZXMKLTAwMDMwQSAgICAgKGJhc2UgMTYpCQlBcmd1cyBUZWNobm9sb2dpZXMKLQkJCQk4RiwgTm8uIDE4MywgS2FuZyBDaGllbiBSZC4KLQkJCQkxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTBCICAgKGhleCkJCUh1bnRlciBUZWNobm9sb2d5LCBJbmMuCi0wMDAzMEIgICAgIChiYXNlIDE2KQkJSHVudGVyIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxNDA4LCBXb29saW0gZS1iaXogQ2VudGVyLAotCQkJCTE3MC01LCBHdXJvLTNkb25nLCBHdXJvLWd1LAotCQkJCVNlb3VsICAxMzUtMjcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTBDICAgKGhleCkJCVRlbGVzb2Z0IFRlY2hub2xvZ2llcyBMdGQuCi0wMDAzMEMgICAgIChiYXNlIDE2KQkJVGVsZXNvZnQgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQlPYnNlcnZhdG9yeSBIb3VzZSwgU3RvdXIgUGFyaywKLQkJCQlCbGFuZGZvcnVtLCBEb3JzZXQsIERUMTEgOUxRLAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTAzLTBEICAgKGhleCkJCVVuaXdpbGwgQ29tcHV0ZXIgQ29ycC4KLTAwMDMwRCAgICAgKGJhc2UgMTYpCQlVbml3aWxsIENvbXB1dGVyIENvcnAuCi0JCQkJTm8uIDI0LCBQZWkgWXVhbiBSZC4sIENodW5nCi0JCQkJTGkgSW5kdXN0cmlhbCBQYXJrLCBDaHVuZwotCQkJCUxpIENpdHkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtMEUgICAoaGV4KQkJQ29yZSBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMDMwRSAgICAgKGJhc2UgMTYpCQlDb3JlIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTNGIFNob3BwaW5nIENlbnRlciBCZC4gb2YKLQkJCQlTU2FuZyBZb3VuZyBId2FuZy1nZXVtIEFQVCwgIzI1MyBNYXBvLURvCi0JCQkJU2VvdWwgKDEyMS0wNTApICAoMTIxLTA1MCkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMEYgICAoaGV4KQkJRGlnaXRhbCBDaGluYSAoU2hhbmdoYWkpIE5ldHdvcmtzIEx0ZC4KLTAwMDMwRiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIENoaW5hIChTaGFuZ2hhaSkgTmV0d29ya3MgTHRkLgotCQkJCTYwMi0yMywgSGFpdGFpIEJ1aWxkaW5nLCAzNTEgR3VvIFNob3VqaW4KLQkJCQlQdWRvbmcgTmV3IERpc3RyaWN0LAotCQkJCVNoYW5naGFpICAKLQkJCQlDSElOQQotCi0wMC0wMy0xMCAgIChoZXgpCQlJVFggRS1HbG9iYWxlZGdlIENvcnBvcmF0aW9uCi0wMDAzMTAgICAgIChiYXNlIDE2KQkJSVRYIEUtR2xvYmFsZWRnZSBDb3Jwb3JhdGlvbgotCQkJCU5ha2FtZWd1cm8gR1QgdG93ZXIgN0YgMi0xLTEga2FtaW1lZ3VybwotCQkJCU1lZ3Vyby1rdQotCQkJCVRva3lvICAxNTMtMDA1MQotCQkJCUpBUEFOCi0KLTAwLTAzLTExICAgKGhleCkJCU1pY3JvIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDAzMTEgICAgIChiYXNlIDE2KQkJTWljcm8gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlTdWVoaXJvIEJsZGcuCi0JCQkJMS0yLCBTb3RvIEthbmRhIDUgQ2hvbWUgQ2hpeW9kYS1rdSwgVG9reQotCQkJCTEwMS0wMDIxIAotCQkJCUpBUEFOCi0KLTAwLTAzLTEyICAgKGhleCkJCVRSLVN5c3RlbXRlY2huaWsgR21iSAotMDAwMzEyICAgICAoYmFzZSAxNikJCVRSLVN5c3RlbXRlY2huaWsgR21iSAotCQkJCUVnbGlzaGFsZGUgNgotCQkJCUQtNzg2NDcgVHJvc3NpbmdlbgotCQkJCUdFUk1BTlkKLQotMDAtMDMtMTMgICAoaGV4KQkJQWNjZXNzIE1lZGlhIFNQQQotMDAwMzEzICAgICAoYmFzZSAxNikJCUFjY2VzcyBNZWRpYSBTUEEKLQkJCQlWaWEgZGVsbGUgSW5kdXN0cmllLCA0L2cKLQkJCQkyNDAzNSBMQUxMSU8gKEJHKSAgCi0JCQkJSVRBTFkKLQotMDAtMDMtMTQgICAoaGV4KQkJVGVsZXdhcmUgTmV0d29yayBTeXN0ZW1zCi0wMDAzMTQgICAgIChiYXNlIDE2KQkJVGVsZXdhcmUgTmV0d29yayBTeXN0ZW1zCi0JCQkJIzc4MDYgN3RoIERvbmdpbCBUZWNobm90b3duLAotCQkJCUtpbmFueWFuZyBEb25nIDgyMywgRG9uZ2FobiBHdSwgQW55YW5nIEMKLQkJCQk0MzEtMDYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTE1ICAgKGhleCkJCUNpZGNvIEluY29ycG9yYXRlZAotMDAwMzE1ICAgICAoYmFzZSAxNikJCUNpZGNvIEluY29ycG9yYXRlZAotCQkJCTIyMCBDb2NocmFuZSBDaXJjbGUKLQkJCQlNb3JnYW4gSGlsbCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMTYgICAoaGV4KQkJTm9iZWxsIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAzMTYgICAgIChiYXNlIDE2KQkJTm9iZWxsIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMzQxMCBGYXIgV2VzdCBCbHZkLiwgU3VpdGUgMjQwCi0JCQkJQXVzdGluIFRYIDc4NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0xNyAgIChoZXgpCQlNZXJsaW4gU3lzdGVtcywgSW5jLgotMDAwMzE3ICAgICAoYmFzZSAxNikJCU1lcmxpbiBTeXN0ZW1zLCBJbmMuCi0JCQkJMzkwMCBOZXcgUGFyayBNYWxsIFJkLgotCQkJCTNyZCBGbG9vcgotCQkJCU5ld2FyayBDQSA5NDU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMTggICAoaGV4KQkJQ3lyYXMgU3lzdGVtcywgSW5jLgotMDAwMzE4ICAgICAoYmFzZSAxNikJCUN5cmFzIFN5c3RlbXMsIEluYy4KLQkJCQk0NzEwMCBCYXlzaWRlIFBhcmt3YXkKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0xOSAgIChoZXgpCQlJbmZpbmVvbiBBRwotMDAwMzE5ICAgICAoYmFzZSAxNikJCUluZmluZW9uIEFHCi0JCQkJUC5PLiBCb3ggODAwOTQ5Ci0JCQkJRC04MTYwOSBNdW5pY2gKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLTFBICAgKGhleCkJCUJlaWppbmcgQnJvYWQgVGVsZWNvbSBMdGQuLCBDaGluYQotMDAwMzFBICAgICAoYmFzZSAxNikJCUJlaWppbmcgQnJvYWQgVGVsZWNvbSBMdGQuLCBDaGluYQotCQkJCVAuTy4gQm94ICMxNDcKLQkJCQlCZWlqaW5nIFVuaXZlcnNpdHkgb2YgUG9zdHMgIGFuZCBUZWxlY29tCi0JCQkJQmVpamluZyAgMTAwODc2Ci0JCQkJQ0hJTkEKLQotMDAtMDMtMUIgICAoaGV4KQkJQ2VsbHZpc2lvbiBTeXN0ZW1zLCBJbmMuCi0wMDAzMUIgICAgIChiYXNlIDE2KQkJQ2VsbHZpc2lvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJM0YtMSwgNzUsIEhzaW4gVGFpd3UgUm9hZCwgU2VjLiAxCi0JCQkJSHNpY2hpaCwgVGFpcGVpLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtMUMgICAoaGV4KQkJU3ZlbnNrYSBIYXJkdmFydWZhYnJpa2VuIEFCCi0wMDAzMUMgICAgIChiYXNlIDE2KQkJU3ZlbnNrYSBIYXJkdmFydWZhYnJpa2VuIEFCCi0JCQkJT2xlIFJvbWVyc3ZhZyAxNiwgSWRlb24KLQkJCQlTRS0yMjMgNzAgTHVuZAotCQkJCVNXRURFTgotCi0wMC0wMy0xRCAgIChoZXgpCQlUYWl3YW4gQ29tbWF0ZSBDb21wdXRlciwgSW5jLgotMDAwMzFEICAgICAoYmFzZSAxNikJCVRhaXdhbiBDb21tYXRlIENvbXB1dGVyLCBJbmMuCi0JCQkJOEYsIE5vLiA5NCwgU2VjIDEsCi0JCQkJU2hpbiBUYWkgV3UgUmQuIEhzaSBDaGloLCBUYWlwZWkgSHNpZW4sCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy0xRSAgIChoZXgpCQlPcHRyYW5ldCwgSW5jLgotMDAwMzFFICAgICAoYmFzZSAxNikJCU9wdHJhbmV0LCBJbmMuCi0JCQkJNzA0MSBLb2xsIENlbnRlciBQa3d5Ci0JCQkJU3VpdGUgMTM1Ci0JCQkJUGxlYXNhbnRvbiBDQSA5NDU2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMUYgICAoaGV4KQkJQ29uZGV2IEx0ZC4KLTAwMDMxRiAgICAgKGJhc2UgMTYpCQlDb25kZXYgTHRkLgotCQkJCTIwMC0xNjI2IFdlc3QgMm5kIEF2ZS4KLQkJCQlWYW5jb3V2ZXIsIEIuQy4gVjZKIDFINAotCQkJCUNBTkFEQQotCi0wMC0wMy0yMCAgIChoZXgpCQlYcGVlZCwgSW5jLgotMDAwMzIwICAgICAoYmFzZSAxNikJCVhwZWVkLCBJbmMuCi0JCQkJOTkgVy4gVGFzbWFuIERyaXZlCi0JCQkJU3VpdGUgMTEwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTIxICAgKGhleCkJCVJlY28gUmVzZWFyY2ggQ28uLCBMdGQuCi0wMDAzMjEgICAgIChiYXNlIDE2KQkJUmVjbyBSZXNlYXJjaCBDby4sIEx0ZC4KLQkJCQlOby4gNDctMSwgU2VjLiAyLAotCQkJCUt1YW5nIEZ1IFJkLixTYW4gQ2h1bmcgQ2l0eSwgVGFpcGVpLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtMjIgICAoaGV4KQkJSURJUyBDby4sIEx0ZC4KLTAwMDMyMiAgICAgKGJhc2UgMTYpCQlJRElTIENvLiwgTHRkLgotCQkJCTd0aCBGbG9vciwgNjQ2LTcgWXVrc2FtLURvbmcsCi0JCQkJS2FuZ25hbS1HdSwgU2VvdWwgMTM1LTI4MCwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMjMgICAoaGV4KQkJQ29ybmV0IFRlY2hub2xvZ3ksIEluYy4KLTAwMDMyMyAgICAgKGJhc2UgMTYpCQlDb3JuZXQgVGVjaG5vbG9neSwgSW5jLgotCQkJCTY4MDAgVmVyc2FyIENlbnRlciwgU3VpdGUgMjE2Ci0JCQkJU3ByaW5nZmllbGQgVkEgMjIxNTEtNDE0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMjQgICAoaGV4KQkJU0FOWU8gQ29uc3VtZXIgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDAzMjQgICAgIChiYXNlIDE2KQkJU0FOWU8gQ29uc3VtZXIgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJNy0xMDEgVGFjaGlrYXdhLWNobwotCQkJCVRvdHRvcmkgQ2l0eSAgNjgwLTg2MzQKLQkJCQlKQVBBTgotCi0wMC0wMy0yNSAgIChoZXgpCQlBcmltYSBDb21wdXRlciBDb3JwLgotMDAwMzI1ICAgICAoYmFzZSAxNikJCUFyaW1hIENvbXB1dGVyIENvcnAuCi0JCQkJNnRoIEZsLiwgTm8uIDMyNywKLQkJCQlTdW5nLWx1bmcgUmQuLCBUYWlwZWkgQ2l0eSwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTI2ICAgKGhleCkJCUl3YXNha2kgSW5mb3JtYXRpb24gU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDMyNiAgICAgKGJhc2UgMTYpCQlJd2FzYWtpIEluZm9ybWF0aW9uIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJMzM2MSBPc2hpCi0JCQkJRnVraWFnZS1tYWNoaSwgU2FpdGFtYSAzNjktMDExMwotCQkJCUpBUEFOCi0KLTAwLTAzLTI3ICAgKGhleCkJCUFDVCdMCi0wMDAzMjcgICAgIChiYXNlIDE2KQkJQUNUJ0wKLQkJCQlBdmVudWUgZGUgQXJ0aXNhbmF0IDEwQQotCQkJCTE5MjQgQnJhaW5lIGwnQWxsYXJkCi0JCQkJQkVMR0lVTQotCi0wMC0wMy0yOCAgIChoZXgpCQlNYWNlIEdyb3VwLCBJbmMuCi0wMDAzMjggICAgIChiYXNlIDE2KQkJTWFjZSBHcm91cCwgSW5jLgotCQkJCTUxMDEgQ29tbWVyY2UgRHIuCi0JCQkJQmFsZHdpbiBQYXJrIENBIDkxNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0yOSAgIChoZXgpCQlGMywgSW5jLgotMDAwMzI5ICAgICAoYmFzZSAxNikJCUYzLCBJbmMuCi0JCQkJMkYsIE5vLiA3LCBJbmR1c3RyeSBFLiBSZC4gOSwKLQkJCQlTY2llbmNlIEJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTJBICAgKGhleCkJCVVuaURhdGEgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zLCBJbmMuCi0wMDAzMkEgICAgIChiYXNlIDE2KQkJVW5pRGF0YSBDb21tdW5pY2F0aW9uIFN5c3RlbXMsIEluYy4KLQkJCQkyRiwgT2hTdW5nLUJsZGcsIDgyLTE1LAotCQkJCU5vbkh5dW4tRG9uZywgR2FuZ05hbS1HdSwgIFNlb3VsLDEzNS0xMDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMkIgICAoaGV4KQkJR0FJIERhdGVuZnVua3N5c3RlbWUgR21iSAotMDAwMzJCICAgICAoYmFzZSAxNikJCUdBSSBEYXRlbmZ1bmtzeXN0ZW1lIEdtYkgKLQkJCQlSaWVkbGVwYXJrc3RyYXNzZSAyOAotCQkJCUQtODgwNDUgRnJpZWRyaWNoc2hhZmVuCi0JCQkJR0VSTUFOWQotCi0wMC0wMy0yQyAgIChoZXgpCQlBQkIgU3dpdHplcmxhbmQgTHRkCi0wMDAzMkMgICAgIChiYXNlIDE2KQkJQUJCIFN3aXR6ZXJsYW5kIEx0ZAotCQkJCURlcHQuIEFUUFQKLQkJCQlDSC01MzAwIFR1cmdpCi0JCQkJQXVzdHJhc3NlICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wMy0yRCAgIChoZXgpCQlJQkFTRSBUZWNobm9sb2d5LCBJbmMuCi0wMDAzMkQgICAgIChiYXNlIDE2KQkJSUJBU0UgVGVjaG5vbG9neSwgSW5jLgotCQkJCTVGLCBOby4gMjIxLAotCQkJCUNodW5nIFlhbmcgUmQuCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTJFICAgKGhleCkJCVNjb3BlIEluZm9ybWF0aW9uIE1hbmFnZW1lbnQsIEx0ZC4KLTAwMDMyRSAgICAgKGJhc2UgMTYpCQlTY29wZSBJbmZvcm1hdGlvbiBNYW5hZ2VtZW50LCBMdGQuCi0JCQkJMkYgQ2hhbndvbyBiL28gNzM2IFlvdWtzYW5nLWRvbmcsCi0JCQkJS2FuZ25hbS1ndSwKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy0yRiAgIChoZXgpCQlHbG9iYWwgU3VuIFRlY2hub2xvZ3ksIEluYy4KLTAwMDMyRiAgICAgKGJhc2UgMTYpCQlHbG9iYWwgU3VuIFRlY2hub2xvZ3ksIEluYy4KLQkJCQlOby4gMTMsIFR1bmcgWXVhbiBSZC4sCi0JCQkJSnVuZyBMaSBJbmR1c3RyaWFsIFBhcmsgSnVuZyBMaSBDaXR5Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy0zMCAgIChoZXgpCQlJbWFnZW5pY3MsIENvLiwgTHRkLgotMDAwMzMwICAgICAoYmFzZSAxNikJCUltYWdlbmljcywgQ28uLCBMdGQuCi0JCQkJMS0zMS01IEtva3VyeW8tQ2hvCi0JCQkJQ2hvZnUtQ2l0eSBUb2t5bwotCQkJCTE4Mi0wMDIyIAotCQkJCUpBUEFOCi0KLTAwLTAzLTMxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDMzMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0zMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzMzIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtMzMgICAoaGV4KQkJRGlnaXRlbCBDby4sIEx0ZC4KLTAwMDMzMyAgICAgKGJhc2UgMTYpCQlEaWdpdGVsIENvLiwgTHRkLgotCQkJCTgzNS02LCBZb2tzYW0tZG9uZwotCQkJCUthbmduYW0tZ3UsIDEzNS0wODAsIFNlb3VsLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy0zNCAgIChoZXgpCQlOZXdwb3J0IEVsZWN0cm9uaWNzCi0wMDAzMzQgICAgIChiYXNlIDE2KQkJTmV3cG9ydCBFbGVjdHJvbmljcwotCQkJCTIyMjkgU28uIFlhbGUgU3QuCi0JCQkJU2FudGEgQW5hIENBIDkyNzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0zNSAgIChoZXgpCQlNaXJhZSBUZWNobm9sb2d5Ci0wMDAzMzUgICAgIChiYXNlIDE2KQkJTWlyYWUgVGVjaG5vbG9neQotCQkJCTIxMS0xNSwgSG9uIEh5dW4tZG9uZywKLQkJCQlLYW5nbmFtLWt1IDEzNS0wMTAKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTM2ICAgKGhleCkJCVpldGVzIFRlY2hub2xvZ2llcwotMDAwMzM2ICAgICAoYmFzZSAxNikJCVpldGVzIFRlY2hub2xvZ2llcwotCQkJCTMgUnVlIERlIFN0cmFzIEJvdXJnCi0JCQkJMTEzMCBCcnVzc2VscwotCQkJCUJFTEdJVU0KLQotMDAtMDMtMzcgICAoaGV4KQkJVmFvbmUsIEluYy4KLTAwMDMzNyAgICAgKGJhc2UgMTYpCQlWYW9uZSwgSW5jLgotCQkJCTZGIEt5ZW1vbmcgQXJ0IENlbnRlciwKLQkJCQk3NzIgWXVrc2FuMi1Eb25nIEthbmcgSGFtR3UsIFNlb3VsLAotCQkJCTEzNS0wODIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtMzggICAoaGV4KQkJT2FrIFRlY2hub2xvZ3kKLTAwMDMzOCAgICAgKGJhc2UgMTYpCQlPYWsgVGVjaG5vbG9neQotCQkJCTEzOSBLaWZlciBDb3VydAotCQkJCVN1bm55dmFsZSBDQSA5NDA4Ni01MTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy0zOSAgIChoZXgpCQlFdXJvbG9naWMgU3lzdGVtcywgTHRkLgotMDAwMzM5ICAgICAoYmFzZSAxNikJCUV1cm9sb2dpYyBTeXN0ZW1zLCBMdGQuCi0JCQkJQ2xvbnNoYXVnaCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUNsb25zaGF1Z2ggRHVibGluIDE3IAotCQkJCUlSRUxBTkQKLQotMDAtMDMtM0EgICAoaGV4KQkJU2lsaWNvbiBXYXZlLCBJbmMuCi0wMDAzM0EgICAgIChiYXNlIDE2KQkJU2lsaWNvbiBXYXZlLCBJbmMuCi0JCQkJNjI1NiBHcmVlbndpY2ggRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTNCICAgKGhleCkJCVRBTUkgVGVjaCBDby4sIEx0ZC4KLTAwMDMzQiAgICAgKGJhc2UgMTYpCQlUQU1JIFRlY2ggQ28uLCBMdGQuCi0JCQkJNEYsIENodW5nZG8gQmVuY2hlciBUb3duCi0JCQkJNjA2IFRhbmJhbmctRG9uZywgU2VvLUd1Ci0JCQkJVGFlam9uICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtM0MgICAoaGV4KQkJRGFpZGVuIENvLiwgTHRkLgotMDAwMzNDICAgICAoYmFzZSAxNikJCURhaWRlbiBDby4sIEx0ZC4KLQkJCQkyMTAwLTE5IFR1dHVtaSwgS2FtaW1pbmUtbWFjaGkKLQkJCQlNaXlha2ktZ3VuLCBTYWdhLWtlbgotCQkJCUpBUEFOCi0KLTAwLTAzLTNEICAgKGhleCkJCUlMU0hpbiBMYWIKLTAwMDMzRCAgICAgKGJhc2UgMTYpCQlJTFNIaW4gTGFiCi0JCQkJS0NTIEIvRCAyMjgtMTMgWW91bmcgRGFwLURvbmcKLQkJCQlTVU5HIERPTkctR1UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy0zRSAgIChoZXgpCQlUYXRleWFtYSBTeXN0ZW0gTGFib3JhdG9yeSBDby4sIEx0ZC4KLTAwMDMzRSAgICAgKGJhc2UgMTYpCQlUYXRleWFtYSBTeXN0ZW0gTGFib3JhdG9yeSBDby4sIEx0ZC4KLQkJCQkzMCBTaGltb25vYmFuIE95YW1hLWNobwotCQkJCUthbWluaWthd2EtZ3VuIFRveWFtYSBQcm9mLgotCQkJCTkzMC0xMzA1Ci0JCQkJSkFQQU4KLQotMDAtMDMtM0YgICAoaGV4KQkJQmlnQmFuZCBOZXR3b3JrcywgTHRkLgotMDAwMzNGICAgICAoYmFzZSAxNikJCUJpZ0JhbmQgTmV0d29ya3MsIEx0ZC4KLQkJCQkzIEF6cmllbGkgVG93ZXJzCi0JCQkJVGVsLUF2aXYgNjcwMjMKLQkJCQlJU1JBRUwKLQotMDAtMDMtNDAgICAoaGV4KQkJRmxvd2FyZSBXaXJlbGVzcyBTeXN0ZW1zLCBMdGQuCi0wMDAzNDAgICAgIChiYXNlIDE2KQkJRmxvd2FyZSBXaXJlbGVzcyBTeXN0ZW1zLCBMdGQuCi0JCQkJMjggSGFjaGFyb3NoZXQgU3RlZXQKLQkJCQlQLk8uQi4gODEyIE9yLVllaHVkYQotCQkJCTYwMjUwCi0JCQkJSVNSQUVMCi0KLTAwLTAzLTQxICAgKGhleCkJCUF4b24gRGlnaXRhbCBEZXNpZ24KLTAwMDM0MSAgICAgKGJhc2UgMTYpCQlBeG9uIERpZ2l0YWwgRGVzaWduCi0JCQkJTGFuZ2UgV2FnZW5zdHJhYXQgNTUKLQkJCQlOTC01MTI2IEJCIEdJTFpFCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDMtNDIgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDAzNDIgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkIC0gU3RlICMxMDAKLQkJCQlEZXB0LiA2ODAwIEJyYW1wdG9uICBPTiAgTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wMy00MyAgIChoZXgpCQlNYXJ0aW4gUHJvZmVzc2lvbmFsIEEvUwotMDAwMzQzICAgICAoYmFzZSAxNikJCU1hcnRpbiBQcm9mZXNzaW9uYWwgQS9TCi0JCQkJT2xvZiBQYWxtZXMgQWxsZSAxOAotCQkJCURLLTgyMDAgQWFyaHVzbgotCQkJCURFTk1BUksKLQotMDAtMDMtNDQgICAoaGV4KQkJVGlldGVjaC5Dby4sIEx0ZC4KLTAwMDM0NCAgICAgKGJhc2UgMTYpCQlUaWV0ZWNoLkNvLiwgTHRkLgotCQkJCTItMTMtMSBDaGlrYW1hdG9vcmkgTWluYW1pa3UKLQkJCQlOYWdveWEsCi0JCQkJSkFQQU4KLQotMDAtMDMtNDUgICAoaGV4KQkJUm91dHJlayBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAwMzQ1ICAgICAoYmFzZSAxNikJCVJvdXRyZWsgTmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQlOaWxzc2VpIFNoaW4gTWl6b25va3VjaGkgQmxkZy4gMUYKLQkJCQkzLTUtNyBIaXNhbW90bywgVGFrYXRzdS1LdSBLYXdhc2FraS1zaGksCi0JCQkJMjMtMDAxMSAKLQkJCQlKQVBBTgotCi0wMC0wMy00NiAgIChoZXgpCQlIaXRhY2hpIEtva3VzYWkgRWxlY3RyaWMsIEluYy4KLTAwMDM0NiAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIEtva3VzYWkgRWxlY3RyaWMsIEluYy4KLQkJCQkxLTYtMTAgVWNoaWthbmRhCi0JCQkJQ2hpeW9kYS1LdSBUb2t5byBsMTAxCi0JCQkJSkFQQU4KLQotMDAtMDMtNDcgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMDM0NyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCU1TOiAgTEYzLTQyMAotCQkJCTIxMTEgTi5FLiAyNXRoIEF2ZW51ZQotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNDggICAoaGV4KQkJTm9yc2NhbiBJbnN0cnVtZW50cywgTHRkLgotMDAwMzQ4ICAgICAoYmFzZSAxNikJCU5vcnNjYW4gSW5zdHJ1bWVudHMsIEx0ZC4KLQkJCQk3IFRlcnJhY29uIFBsYWNlCi0JCQkJV2lubmlwZWcsIE1hbml0b2JhLAotCQkJCVIySiA0QjMKLQkJCQlDQU5BREEKLQotMDAtMDMtNDkgICAoaGV4KQkJVmlkaWNvZGUgRGF0YWNvbW11bmljYXRpZSBCLlYuCi0wMDAzNDkgICAgIChiYXNlIDE2KQkJVmlkaWNvZGUgRGF0YWNvbW11bmljYXRpZSBCLlYuCi0JCQkJUG9zdGJ1cyA3MTY0Ci0JCQkJMjcwMSBBRCBab2V0ZXJtZWVyCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDMtNEEgICAoaGV4KQkJUklBUyBDb3Jwb3JhdGlvbgotMDAwMzRBICAgICAoYmFzZSAxNikJCVJJQVMgQ29ycG9yYXRpb24KLQkJCQk0NjYwMCBGcmVtb250IEJsdmQuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNEIgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDAzNEIgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkIFN1aXRlIDEwMAotCQkJCURlcHQuIDY4MDAgQnJhbXB0b24gT04gTDZUIDUgUDYKLQkJCQlDQU5BREEKLQotMDAtMDMtNEMgICAoaGV4KQkJU2hhbmdoYWkgRGlnaVZpc2lvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwMzRDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERpZ2lWaXNpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxMUYsIEhlbmcgVG9uZwotCQkJCUludGVybmF0aW9uYWwgQnVpbGRpbmcsIDg2NSBDaGFuZyBOaW5nIFIKLQkJCQlTaGFuZ2hhaSAyMDAwNTAKLQkJCQlDSElOQQotCi0wMC0wMy00RCAgIChoZXgpCQlDaGlhcm8gTmV0d29ya3MsIEx0ZC4KLTAwMDM0RCAgICAgKGJhc2UgMTYpCQlDaGlhcm8gTmV0d29ya3MsIEx0ZC4KLQkJCQlQLk8uIEJveCA4MzI0MjcKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgzLTI0MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTRFICAgKGhleCkJCVBvcyBEYXRhIENvbXBhbnksIEx0ZC4KLTAwMDM0RSAgICAgKGJhc2UgMTYpCQlQb3MgRGF0YSBDb21wYW55LCBMdGQuCi0JCQkJMjc2LTIsIFNlby1IeXVuIERvbmcsCi0JCQkJQnVuLURhbmcgR3UsIFN1bmctbmFtIENpdHksIEt5b3VuZy1HaSBQcgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy00RiAgIChoZXgpCQlTdXItR2FyZCBTZWN1cml0eQotMDAwMzRGICAgICAoYmFzZSAxNikJCVN1ci1HYXJkIFNlY3VyaXR5Ci0JCQkJNDAxIE1hZ25ldGljIERyaXZlCi0JCQkJVW5pdHMgMjQtMjgsIERvd25zdmlldwotCQkJCU9udGFyaW8gIE0zSiAzSDkKLQkJCQlDQU5BREEKLQotMDAtMDMtNTAgICAoaGV4KQkJQlRJQ0lOTyBTUEEKLTAwMDM1MCAgICAgKGJhc2UgMTYpCQlCVElDSU5PIFNQQQotCQkJCVZpYSBMLiBNYW5hcmEsIDQKLQkJCQkyMjAzNiBFcmJhIChDTykKLQkJCQlJVEFMWQotCi0wMC0wMy01MSAgIChoZXgpCQlEaWVib2xkLCBJbmMuCi0wMDAzNTEgICAgIChiYXNlIDE2KQkJRGllYm9sZCwgSW5jLgotCQkJCTU5OTUgTWF5ZmFpciBSb2FkCi0JCQkJTm9ydGggQ2FudG9uIE9IIDQ0NzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy01MiAgIChoZXgpCQlDb2x1YnJpcyBOZXR3b3JrcwotMDAwMzUyICAgICAoYmFzZSAxNikJCUNvbHVicmlzIE5ldHdvcmtzCi0JCQkJNDQwIEFybWFuZC1GcmFwcGllcgotCQkJCUxhdmFsIChRdWViZWMpCi0JCQkJSDdWIDRCNAotCQkJCUNBTkFEQQotCi0wMC0wMy01MyAgIChoZXgpCQlNaXRhYywgSW5jLgotMDAwMzUzICAgICAoYmFzZSAxNikJCU1pdGFjLCBJbmMuCi0JCQkJTm8uIDIsIENodW5nLUhzaWFvIFN0cmVldAotCQkJCUNoaXR1IEtlZWx1bmcsIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtNTQgICAoaGV4KQkJRmliZXIgTG9naWMgQ29tbXVuaWNhdGlvbnMKLTAwMDM1NCAgICAgKGJhc2UgMTYpCQlGaWJlciBMb2dpYyBDb21tdW5pY2F0aW9ucwotCQkJCTVGLTMsIE5vLiA5LCBQcm9zcGVyaXR5IFJvYWQgT25lLAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtNTUgICAoaGV4KQkJVGVyYUJlYW0gSW50ZXJuZXQgU3lzdGVtcwotMDAwMzU1ICAgICAoYmFzZSAxNikJCVRlcmFCZWFtIEludGVybmV0IFN5c3RlbXMKLQkJCQkxNDgzMyBORSA4N3RoIFN0LiwgQmxkZy4gQwotCQkJCVJlZG1vbmQgV0EgOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTU2ICAgKGhleCkJCVdpbmNvciBOaXhkb3JmIEludGVybmF0aW9uYWwgR21iSAotMDAwMzU2ICAgICAoYmFzZSAxNikJCVdpbmNvciBOaXhkb3JmIEludGVybmF0aW9uYWwgR21iSAotCQkJCUhlaW56LU5peGRvcmYgUmluZyAxCi0JCQkJRC0zMzEwNiBQYWRlcmJvcm4gCi0JCQkJR0VSTUFOWQotCi0wMC0wMy01NyAgIChoZXgpCQlJbnRlcnZvaWNlLUJyaXRlLCBJbmMuCi0wMDAzNTcgICAgIChiYXNlIDE2KQkJSW50ZXJ2b2ljZS1Ccml0ZSwgSW5jLgotCQkJCTE3ODExIFdhdGVydmlldyBQa3d5LgotCQkJCURhbGxhcyBUWCA3NTI1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNTggICAoaGV4KQkJSGFueWFuZyBEaWdpdGVjaCBDby4sIEx0ZC4KLTAwMDM1OCAgICAgKGJhc2UgMTYpCQlIYW55YW5nIERpZ2l0ZWNoIENvLiwgTHRkLgotCQkJCTEzRiwgQWNldHdpbnRvd2VyMiwgMjEyLTMwLCBHdXJvLURvbmcKLQkJCQlHdXJvLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy01OSAgIChoZXgpCQlEaWdpdGFsU2lzCi0wMDAzNTkgICAgIChiYXNlIDE2KQkJRGlnaXRhbFNpcwotCQkJCUItMTQwNSBTYW1obyBCbGRnLgotCQkJCTI3NS02IFlhbmdqYWUKLQkJCQlTZW9jaG8gU2VvdWwsIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy01QSAgIChoZXgpCQlQaG90cm9uIExpbWl0ZWQKLTAwMDM1QSAgICAgKGJhc2UgMTYpCQlQaG90cm9uIExpbWl0ZWQKLQkJCQkxLTEtOCwgRnVqaW1pLAotCQkJCUNoaXlvZGEta3UgIDEwMi0wMDcxCi0JCQkJSkFQQU4KLQotMDAtMDMtNUIgICAoaGV4KQkJQnJpZGdlV2F2ZSBDb21tdW5pY2F0aW9ucwotMDAwMzVCICAgICAoYmFzZSAxNikJCUJyaWRnZVdhdmUgQ29tbXVuaWNhdGlvbnMKLQkJCQkzMzUwIFRob21hZCBSb2FkCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTVDICAgKGhleCkJCVNhaW50IFNvbmcgQ29ycC4KLTAwMDM1QyAgICAgKGJhc2UgMTYpCQlTYWludCBTb25nIENvcnAuCi0JCQkJNEYsIE5vLiAxMiwgTGFuZSA5NCwgVHNhbyBUaSBXemkKLQkJCQlTaGVuIEtlbmcgSHNpYW5nLCBUYWlwZWkgSHNpZW4KLQkJCQkyMjIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTVEICAgKGhleCkJCUJvc3VuZyBIaS1OZXQgQ28uLCBMdGQuCi0wMDAzNUQgICAgIChiYXNlIDE2KQkJQm9zdW5nIEhpLU5ldCBDby4sIEx0ZC4KLQkJCQlZb3VuZ2lsIEIvTyAyRiwKLQkJCQlZYW5nSmFlLWRvbmcgMTItNywgU2VvY2hvLWd1LCBTZW91bAotCQkJCTEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtNUUgICAoaGV4KQkJTWV0cm9wb2xpdGFuIEFyZWEgTmV0d29ya3MsIEluYy4KLTAwMDM1RSAgICAgKGJhc2UgMTYpCQlNZXRyb3BvbGl0YW4gQXJlYSBOZXR3b3JrcywgSW5jLgotCQkJCTEyOTkgUGVubnN5bHZhbmlhIEF2ZW51ZSwgTlcKLQkJCQlOaW50aCBGbG9vcgotCQkJCVdhc2hpbmd0b24gREMgMjAwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTVGICAgKGhleCkJCVBydWVmdGVjaG5payBDb25kaXRpb24gTW9uaXRvcmluZyBHbWJIICYgQ28uIEtHCi0wMDAzNUYgICAgIChiYXNlIDE2KQkJUHJ1ZWZ0ZWNobmlrIENvbmRpdGlvbiBNb25pdG9yaW5nIEdtYkggJiBDby4gS0cKLQkJCQlGcmFuei1CYXllci1TdHIuIDE0Ci0JCQkJRC04ODIxMyBSYXZlbnNidXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wMy02MCAgIChoZXgpCQlQQUMgSW50ZXJhY3RpdmUgVGVjaG5vbG9neSwgSW5jLgotMDAwMzYwICAgICAoYmFzZSAxNikJCVBBQyBJbnRlcmFjdGl2ZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNkYsIE5vLiAzMCwgQWxsZXkgMTgsIExhbmUgNDc4Ci0JCQkJSmFpIEd1YW5nIFJvYWQsIE5laS1IdQotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy02MSAgIChoZXgpCQlXaWRjb21tLCBJbmMuCi0wMDAzNjEgICAgIChiYXNlIDE2KQkJV2lkY29tbSwgSW5jLgotCQkJCTk2NDUgU2NyYW50b24gUm9hZAotCQkJCVN1aXRlIDIwNQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNjIgICAoaGV4KQkJVm9kdGVsIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAzNjIgICAgIChiYXNlIDE2KQkJVm9kdGVsIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTJGLCBObyAxNjYgQ2hpZW4tWWkgUm9hZAotCQkJCUNodW5nLUhvIENpdHksIFRhaXBlaSBDb3VudHkKLQkJCQkyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLTYzICAgKGhleCkJCU1pcmFlc3lzIENvLiwgTHRkLgotMDAwMzYzICAgICAoYmFzZSAxNikJCU1pcmFlc3lzIENvLiwgTHRkLgotCQkJCTY1MC0yIDQgRmwuIERhZW15dW5nIEJsZGcuCi0JCQkJWXVrc2FtLCBLYW5nbmFtLCBTZW91bCwKLQkJCQkxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTY0ICAgKGhleCkJCVNjZW5peCBTZW1pY29uZHVjdG9yLCBJbmMuCi0wMDAzNjQgICAgIChiYXNlIDE2KQkJU2Nlbml4IFNlbWljb25kdWN0b3IsIEluYy4KLQkJCQkxMzMwIENoYXJsZXN0b24gUmQuCi0JCQkJTW91bnRhaW52aWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy02NSAgIChoZXgpCQlLaXJhIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLTAwMDM2NSAgICAgKGJhc2UgMTYpCQlLaXJhIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbnMsIEx0ZC4KLQkJCQk2dGggRmwuIEFuYW0gVG93ZXIsCi0JCQkJNzAyLTEwIFllb2tzYW0tZG9uZywgS2FuZ25hbS1rdSwgU2VvdWwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtNjYgICAoaGV4KQkJQVNNIFBhY2lmaWMgVGVjaG5vbG9neQotMDAwMzY2ICAgICAoYmFzZSAxNikJCUFTTSBQYWNpZmljIFRlY2hub2xvZ3kKLQkJCQkxMi9GIFdhdHNvbiBDZW50cmUKLQkJCQkxNiBLdW5nIFlpcCBTdC4KLQkJCQlLd2FpIENodW5nICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDMtNjcgICAoaGV4KQkJSmFzbWluZSBOZXR3b3JrcywgSW5jLgotMDAwMzY3ICAgICAoYmFzZSAxNikJCUphc21pbmUgTmV0d29ya3MsIEluYy4KLQkJCQkxOTQwIFphbmtlciBSb2FkCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTY4ICAgKGhleCkJCUVtYmVkb25lIENvLiwgTHRkLgotMDAwMzY4ICAgICAoYmFzZSAxNikJCUVtYmVkb25lIENvLiwgTHRkLgotCQkJCUZsLiA5IEFubmV4IFNhbWh3YW4gQi9ELiAxNy0yNgotCQkJCVllb2lkby1Eb25nLCBZb3VuZ2RldW5ncG8ta3UsCi0JCQkJU2VvdWwgIDE1MC0wMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy02OSAgIChoZXgpCQlOaXBwb24gQW50ZW5uYSBDby4sIEx0ZC4KLTAwMDM2OSAgICAgKGJhc2UgMTYpCQlOaXBwb24gQW50ZW5uYSBDby4sIEx0ZC4KLQkJCQlOby4gNDktOCwgTmlzaGlvZ3UsCi0JCQkJNy1DaG9tZSBBcmFrYXdhLWt1LAotCQkJCVRva3lvICAxMTYtODU2MQotCQkJCUpBUEFOCi0KLTAwLTAzLTZBICAgKGhleCkJCU1haW5uZXQsIEx0ZC4KLTAwMDM2QSAgICAgKGJhc2UgMTYpCQlNYWlubmV0LCBMdGQuCi0JCQkJUC5PLiBCb3ggMjMyNAotCQkJCUtmYXIgU2FiYSA0NDY0MQotCQkJCUlTUkFFTAotCi0wMC0wMy02QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzNkIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNkMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwMzZDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTZEICAgKGhleCkJCVJ1bnRvcCwgSW5jLgotMDAwMzZEICAgICAoYmFzZSAxNikJCVJ1bnRvcCwgSW5jLgotCQkJCTEsIExhbmUgMjEsIEhzaW4gSHVhIFJvYWQsIEt1ZWlzaGFuCi0JCQkJSW5kdXN0cmlhbCBQYXJrLCBUYW95dWFuIENpdHksCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy02RSAgIChoZXgpCQlOaWNvbiBTeXN0ZW1zIChQdHkpIExpbWl0ZWQKLTAwMDM2RSAgICAgKGJhc2UgMTYpCQlOaWNvbiBTeXN0ZW1zIChQdHkpIExpbWl0ZWQKLQkJCQkxMSBUZXJtbyBTdHJlZXQKLQkJCQlUZWNobm9wYXJrIFN0ZWxsZW5ib3NjaCwgNzYwMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0wMy02RiAgIChoZXgpCQlUZWxzZXkgU1BBCi0wMDAzNkYgICAgIChiYXNlIDE2KQkJVGVsc2V5IFNQQQotCQkJCVZpYWxlIERlbGwgSW5kdXN0cmlhLCAxCi0JCQkJMzEgMDU1IFF1aW50bwotCQkJCURpVHJldmlzby0gIAotCQkJCUlUQUxZCi0KLTAwLTAzLTcwICAgKGhleCkJCU5YVFYsIEluYy4KLTAwMDM3MCAgICAgKGJhc2UgMTYpCQlOWFRWLCBJbmMuCi0JCQkJNTk1NSBEZSBTb3RvIEF2ZSwgIzE2MAotCQkJCVdvb2RsYW5kIEhpbGxzIENBIDkxMzY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy03MSAgIChoZXgpCQlBY29teiBOZXR3b3JrcyBDb3JwLgotMDAwMzcxICAgICAoYmFzZSAxNikJCUFjb216IE5ldHdvcmtzIENvcnAuCi0JCQkJN3RoIEZsLiwgV29vc2VvayBCbGRnLiwgMTAwNy0zNwotCQkJCVNhZGFuZzEtZG9uZywgRG9uZ2phay1ndSwKLQkJCQlTZW91bCAgMTU2LTA5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTcyICAgKGhleCkJCVVMQU4KLTAwMDM3MiAgICAgKGJhc2UgMTYpCQlVTEFOCi0JCQkJNUYtMywgTm8uIDMxLTEsIExhbmUgMTY5LAotCQkJCUthbmcgTmluZyBTdC4sIEhzaS1DaGluIENpdHksIFRhaXBlaSBIc2kKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtNzMgICAoaGV4KQkJQXNlbHNhbiBBLlMKLTAwMDM3MyAgICAgKGJhc2UgMTYpCQlBc2Vsc2FuIEEuUwotCQkJCU1laG1ldCBBa2lmIEVyc295IE1haC4KLQkJCQkxNiBDYWQuIE5vLiAxNiBNYWN1bmtveS9BbmthcmEKLQkJCQlUVVJLRVkKLQkJCQlUVVJLRVkKLQotMDAtMDMtNzQgICAoaGV4KQkJQ29udHJvbCBNaWNyb3N5c3RlbXMKLTAwMDM3NCAgICAgKGJhc2UgMTYpCQlDb250cm9sIE1pY3Jvc3lzdGVtcwotCQkJCTQ4IFN0ZWFjaWUgRHJpdmUKLQkJCQlPdHRhd2EgT250YXJpbyBLMksgMkE5Ci0JCQkJQ0FOQURBCi0KLTAwLTAzLTc1ICAgKGhleCkJCU5ldE1lZGlhLCBJbmMuCi0wMDAzNzUgICAgIChiYXNlIDE2KQkJTmV0TWVkaWEsIEluYy4KLQkJCQkxMDk0MCBOLiBTdGFsbGFyZCBQbGFjZQotCQkJCVR1c2NvbiBBWiA4NTczNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNzYgICAoaGV4KQkJR3JhcGh0ZWMgVGVjaG5vbG9neSwgSW5jLgotMDAwMzc2ICAgICAoYmFzZSAxNikJCUdyYXBodGVjIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk0NSBQYXJrZXIsIFN1aXRlIEEKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTc3ICAgKGhleCkJCUdpZ2FiaXQgV2lyZWxlc3MKLTAwMDM3NyAgICAgKGJhc2UgMTYpCQlHaWdhYml0IFdpcmVsZXNzCi0JCQkJMzA5OSBOLiBGaXJzdCBTdHJlZXQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtNzggICAoaGV4KQkJSFVNQVggQ28uLCBMdGQuCi0wMDAzNzggICAgIChiYXNlIDE2KQkJSFVNQVggQ28uLCBMdGQuCi0JCQkJMjcxLTIsIFN1aC1oeXVuLURvbmcsCi0JCQkJQnVuZGFuZy1HdSwgU3VuZ25hbS1DaXR5LCBLeW9uZ2dpLURvLCA0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy03OSAgIChoZXgpCQlQcm9zY2VuZCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMzc5ICAgICAoYmFzZSAxNikJCVByb3NjZW5kIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMkYsIE5vLjM2LCBJbmR1c3RyeSBFLiBSZC4gSVYsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy03QSAgIChoZXgpCQlUYWl5byBZdWRlbiBDby4sIEx0ZC4KLTAwMDM3QSAgICAgKGJhc2UgMTYpCQlUYWl5byBZdWRlbiBDby4sIEx0ZC4KLQkJCQk4LTEgU2FrYWUtQ2hvCi0JCQkJVGFrYXNha2ktU2hpIEd1bm1hIDM3MC04NTIyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMy03QiAgIChoZXgpCQlJREVDIElaVU1JIENvcnBvcmF0aW9uCi0wMDAzN0IgICAgIChiYXNlIDE2KQkJSURFQyBJWlVNSSBDb3Jwb3JhdGlvbgotCQkJCTctMzEsIE5pc2hpbWl5YWhhcmEKLQkJCQkxLUNob21lIFlvZG9nYXdhLWt1LiBPc2FrYSA1MzItODU1MAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtN0MgICAoaGV4KQkJQ29heCBNZWRpYQotMDAwMzdDICAgICAoYmFzZSAxNikJCUNvYXggTWVkaWEKLQkJCQkxMjIwIE9hayBJbmR1c3RyaWFsIExhbmUKLQkJCQlTdWl0ZSBCCi0JCQkJQ3VtbWluZyBHQSAzMDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtN0QgICAoaGV4KQkJU3RlbGxjb20KLTAwMDM3RCAgICAgKGJhc2UgMTYpCQlTdGVsbGNvbQotCQkJCTEwNTI1IFZpc3RhIFNvcnJlbnRvIFBhcmt3YXkKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTdFICAgKGhleCkJCVBPUlRlY2ggQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDM3RSAgICAgKGJhc2UgMTYpCQlQT1JUZWNoIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTUwLCBTaGlhbmctU2h1bmcgTi4gUmQuLAotCQkJCVRhaWNodW5nIFRhaXdhbiA0MDMsIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtN0YgICAoaGV4KQkJQXRoZXJvcyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMzdGICAgICAoYmFzZSAxNikJCUF0aGVyb3MgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk1NDgwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy04MCAgIChoZXgpCQlTU0ggQ29tbXVuaWNhdGlvbnMgU2VjdXJpdHkgQ29ycC4KLTAwMDM4MCAgICAgKGJhc2UgMTYpCQlTU0ggQ29tbXVuaWNhdGlvbnMgU2VjdXJpdHkgQ29ycC4KLQkJCQlGcmVkcmlraW5rYXR1IDQyCi0JCQkJRmluIDAxMDAgSGVsc2lua2kKLQkJCQlGSU5MQU5ECi0JCQkJRklOTEFORAotCi0wMC0wMy04MSAgIChoZXgpCQlJbmdlbmljbyBJbnRlcm5hdGlvbmFsCi0wMDAzODEgICAgIChiYXNlIDE2KQkJSW5nZW5pY28gSW50ZXJuYXRpb25hbAotCQkJCTEvOSBBcG9sbG8gU3RyZWV0Ci0JCQkJV2Fycmlld29vZCBOU1cgMjEwMgotCQkJCUFVU1RSQUxJQQotCi0wMC0wMy04MiAgIChoZXgpCQlBLU9uZSBDby4sIEx0ZC4KLTAwMDM4MiAgICAgKGJhc2UgMTYpCQlBLU9uZSBDby4sIEx0ZC4KLQkJCQk2LTktMjAsIFNoaW1vaWNoaWJhLWNobywKLQkJCQlLYXN1Z2FpLXNoaSwgQWljaGkta2VuLCA0ODYtMDg1MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtODMgICAoaGV4KQkJTWV0ZXJhIE5ldHdvcmtzLCBJbmMuCi0wMDAzODMgICAgIChiYXNlIDE2KQkJTWV0ZXJhIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTIwMiBSaWNoYXJkc29uIERyLgotCQkJCVN1aXRlIDEwMAotCQkJCVJpY2hhcmRzb24gVFggNzUwODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTg0ICAgKGhleCkJCUFFVEEKLTAwMDM4NCAgICAgKGJhc2UgMTYpCQlBRVRBCi0JCQkJS2VwbGVyIDYKLQkJCQkxOC0yMiBhdmVudWUgRWRvdWFyZCBIZXJyaW90Ci0JCQkJTGUgUGxlc3NpcyBSb2JpbnNvbiAgOTIzNTAKLQkJCQlGUkFOQ0UKLQotMDAtMDMtODUgICAoaGV4KQkJQWN0ZWxpcyBOZXR3b3JrcywgSW5jLgotMDAwMzg1ICAgICAoYmFzZSAxNikJCUFjdGVsaXMgTmV0d29ya3MsIEluYy4KLQkJCQkxIEJhemVsIFN0LiwgUC5PLkIuIDEwMTczCi0JCQkJUGV0YWggLSBUaWt2YSA0OTEwMwotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wMy04NiAgIChoZXgpCQlIbyBOZXQsIEluYy4KLTAwMDM4NiAgICAgKGJhc2UgMTYpCQlIbyBOZXQsIEluYy4KLQkJCQlWZW50dXJlIENvbXBhbnkgQ2VudGVyCi0JCQkJU2FuIDk0LTYgWWl1aS1Eb25nLCBQYWxkYWwtR3UsIFN1d29uLXNpLAotCQkJCUtPUkVBIDQ0Mi03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtODcgICAoaGV4KQkJQmxhemUgTmV0d29yayBQcm9kdWN0cwotMDAwMzg3ICAgICAoYmFzZSAxNikJCUJsYXplIE5ldHdvcmsgUHJvZHVjdHMKLQkJCQk1MTgwIEhhY2llbmRhIERyaXZlCi0JCQkJRHVibGluIENBIDk0NTY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy04OCAgIChoZXgpCQlGYXN0ZmFtZSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwMzg4ICAgICAoYmFzZSAxNikJCUZhc3RmYW1lIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJN0YsIE5vLiAxMTEsIEhzaW5nIERlIFJkLiwKLQkJCQlTYW5jaHVuZywgVGFpcGVpLAotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy04OSAgIChoZXgpCQlQbGFudHJvbmljcwotMDAwMzg5ICAgICAoYmFzZSAxNikJCVBsYW50cm9uaWNzCi0JCQkJMzQ1IEVuY2luYWwgU3QuCi0JCQkJU2FudGEgQ3J1eiBDQSA5NTA2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOEEgICAoaGV4KQkJQW1lcmljYSBPbmxpbmUsIEluYy4KLTAwMDM4QSAgICAgKGJhc2UgMTYpCQlBbWVyaWNhIE9ubGluZSwgSW5jLgotCQkJCTQ0OTAwIFByZW50aWNlIERyaXZlCi0JCQkJRHVsbGVzIFZBIDIwMTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy04QiAgIChoZXgpCQlQTFVTLU9ORSBJJlQsIEluYy4KLTAwMDM4QiAgICAgKGJhc2UgMTYpCQlQTFVTLU9ORSBJJlQsIEluYy4KLQkJCQk3RiwgQS1TYW4gVmVudHVyZSBUb3dlciwKLQkJCQlZYW5nSmFlLWRvbmcsIFNlb2Noby1rdSwgU2VvdWwsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtOEMgICAoaGV4KQkJVG90YWwgSW1wYWN0Ci0wMDAzOEMgICAgIChiYXNlIDE2KQkJVG90YWwgSW1wYWN0Ci0JCQkJMjk1IFdpbGxpcyBBdmUuCi0JCQkJU3VpdGUgRQotCQkJCUNhbWFyaWxsbyBDQSA5MzAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOEQgICAoaGV4KQkJUENTIFJldmVudWUgQ29udHJvbCBTeXN0ZW1zLCBJbmMuCi0wMDAzOEQgICAgIChiYXNlIDE2KQkJUENTIFJldmVudWUgQ29udHJvbCBTeXN0ZW1zLCBJbmMuCi0JCQkJNTYwIFN5bHZhbiBBdmUuCi0JCQkJRW5nbGV3b29kIENsaWZmcyBOSiAwNzYzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOEUgICAoaGV4KQkJQXRvZ2EgU3lzdGVtcywgSW5jLgotMDAwMzhFICAgICAoYmFzZSAxNikJCUF0b2dhIFN5c3RlbXMsIEluYy4KLQkJCQk0OTAyNiBNaWxtb250IERyaXZlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOEYgICAoaGV4KQkJV2VpbnNjaGVsIENvcnBvcmF0aW9uCi0wMDAzOEYgICAgIChiYXNlIDE2KQkJV2VpbnNjaGVsIENvcnBvcmF0aW9uCi0JCQkJNTMwNSBTcGVjdHJ1bSBEcml2ZQotCQkJCUZyZWRlcmljayBNRCAyMTcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOTAgICAoaGV4KQkJRGlnaXRhbCBWaWRlbyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwMzkwICAgICAoYmFzZSAxNikJCURpZ2l0YWwgVmlkZW8gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk1MDAgVy4gQ3VtbWluZ3MgUGFyawotCQkJCVN1aXRlIDIwMDAKLQkJCQlXb2J1cm4gTUEgMDc4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTkxICAgKGhleCkJCUFkdmFuY2VkIERpZ2l0YWwgQnJvYWRjYXN0LCBMdGQuCi0wMDAzOTEgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgRGlnaXRhbCBCcm9hZGNhc3QsIEx0ZC4KLQkJCQk4RiwgMTQ1IENodW5nIFNoYW4gTi4gUmQuIFNlYy4gMiwKLQkJCQlUYWlwZWksIDEwNCwKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtOTIgICAoaGV4KQkJSHl1bmRhaSBUZWxldGVrIENvLiwgTHRkLgotMDAwMzkyICAgICAoYmFzZSAxNikJCUh5dW5kYWkgVGVsZXRlayBDby4sIEx0ZC4KLQkJCQlCLTUwMSwgVGVjaG5vIFBhcmssIDE0OCBZYXRhcC1kb25nLAotCQkJCUJvb25kYW5nLWd1LCBTdW5nbmFtLXNpLCBLeXVuZ2dpLWRvLCA0NjMKLQkJCQlLT1JFQSBSZXB1YmxpYwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy05MyAgIChoZXgpCQlBcHBsZSBDb21wdXRlciwgSW5jLgotMDAwMzkzICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyLCBJbmMuCi0JCQkJMjA2NTAgVmFsbGV5IEdyZWVuIERyLgotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOTQgICAoaGV4KQkJQ29ubmVjdCBPbmUKLTAwMDM5NCAgICAgKGJhc2UgMTYpCQlDb25uZWN0IE9uZQotCQkJCTIgSGFuYWdhciBTdHJlZXQKLQkJCQlLZmFyIFNhYmEgNDQ0MjUKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDMtOTUgICAoaGV4KQkJQ2FsaWZvcm5pYSBBbXBsaWZpZXIKLTAwMDM5NSAgICAgKGJhc2UgMTYpCQlDYWxpZm9ybmlhIEFtcGxpZmllcgotCQkJCTQ2MCBDYWxsZSBTYW4gUGFibG8KLQkJCQlDYW1hcmlsbG8gQ0EgOTMwMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTk2ICAgKGhleCkJCUVaIENhc3QgQ28uLCBMdGQuCi0wMDAzOTYgICAgIChiYXNlIDE2KQkJRVogQ2FzdCBDby4sIEx0ZC4KLQkJCQk2dGggRmxvb3IsIEp1bmdBbmcgQnVpbGRpbmcsCi0JCQkJOTktMSwgTm9uaHl1bi1Eb25nICgxMzUtMDEwKSBLYW5nbmFtLWt1LAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTk3ICAgKGhleCkJCVdhdGNoZnJvbnQgTGltaXRlZAotMDAwMzk3ICAgICAoYmFzZSAxNikJCVdhdGNoZnJvbnQgTGltaXRlZAotCQkJCTMgVmljdG9yaWEgV2FsawotCQkJCVdva2luZ2hhbSAgUkc0MCA1WUwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMy05OCAgIChoZXgpCQlXSVNJCi0wMDAzOTggICAgIChiYXNlIDE2KQkJV0lTSQotCQkJCVdpbGhlbG0tU2lobi1TdHIuIDUtNwotCQkJCUQtNzUyMjMgTmllZmVybi1PZXNjaGVsYnJvbm4gCi0JCQkJR0VSTUFOWQotCi0wMC0wMy05OSAgIChoZXgpCQlEb25nanUgSW5mb3JtYXRpb25zICYgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDAzOTkgICAgIChiYXNlIDE2KQkJRG9uZ2p1IEluZm9ybWF0aW9ucyAmIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCSMzMDUsIEV1bnN1ayBCbGRnLiBTYW1zdW5nLWRvbmcKLQkJCQlLYW5nbmFtLWd1IFNlb3VsCi0JCQkJUmVwdWJsaWMgb2YgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtOUEgICAoaGV4KQkJU2lDb25uZWN0Ci0wMDAzOUEgICAgIChiYXNlIDE2KQkJU2lDb25uZWN0Ci0JCQkJRGVsdGEgMTAwCi0JCQkJV2VsdG9uIFJvYWQKLQkJCQlTd2luZG9uICBTTjUgN1hQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDMtOUIgICAoaGV4KQkJTmV0Q2hpcCBUZWNobm9sb2d5LCBJbmMuCi0wMDAzOUIgICAgIChiYXNlIDE2KQkJTmV0Q2hpcCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMzM1IFBpb25lZXIgV2F5Ci0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtOUMgICAoaGV4KQkJT3B0aU1pZ2h0IENvbW11bmljYXRpb25zLCBJbmMuCi0wMDAzOUMgICAgIChiYXNlIDE2KQkJT3B0aU1pZ2h0IENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJOTgwIExpbmRhIFZpc3RhIEF2ZW51ZQotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLTlEICAgKGhleCkJCVFpc2RhIENvcnBvcmF0aW9uCi0wMDAzOUQgICAgIChiYXNlIDE2KQkJUWlzZGEgQ29ycG9yYXRpb24KLQkJCQkxNTcgU2hhbiBZaW5nIFJvYWQKLQkJCQlHdWVpU2hhbiBUYW95dWFuIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtOUUgICAoaGV4KQkJVGVyYSBTeXN0ZW0gQ28uLCBMdGQuCi0wMDAzOUUgICAgIChiYXNlIDE2KQkJVGVyYSBTeXN0ZW0gQ28uLCBMdGQuCi0JCQkJRG9vc3VuZyBCL0YgUm0gMzAyCi0JCQkJNzY2LTEgU2hpbmNodW5nZG9uZyBTaGlodW5nIENpdHkgS3l1bmdraQotCQkJCVJlcHVibGljIG9mIEtvcmVhCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLTlGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDM5RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzQTAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQTEgICAoaGV4KQkJSElQRVIgSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uLCBJbmMuCi0wMDAzQTEgICAgIChiYXNlIDE2KQkJSElQRVIgSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uLCBJbmMuCi0JCQkJMTY3NS03LCBTaW5pbC1kb25nLAotCQkJCVRhZWR1ay1ndSwgVGFlam9uLAotCQkJCTMwNi0yMzAgU291dGggS29yZWEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtQTIgICAoaGV4KQkJQ2F0YXB1bHQgQ29tbXVuaWNhdGlvbnMKLTAwMDNBMiAgICAgKGJhc2UgMTYpCQlDYXRhcHVsdCBDb21tdW5pY2F0aW9ucwotCQkJCTE2MCBTLiBXaGlzbWFuIFJkLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUEzICAgKGhleCkJCU1BVklYLCBMdGQuCi0wMDAzQTMgICAgIChiYXNlIDE2KQkJTUFWSVgsIEx0ZC4KLQkJCQlQT0IgMjE3LCBZb2tuZWFtIElsbGl0LAotCQkJCTIwNjkyCi0JCQkJSVNSQUVMCi0KLTAwLTAzLUE0ICAgKGhleCkJCUltYXRpb24gQ29ycC4KLTAwMDNBNCAgICAgKGJhc2UgMTYpCQlJbWF0aW9uIENvcnAuCi0JCQkJMSBJbWF0aW9uIFBsYWNlCi0JCQkJRGlzY292ZXJ5IDJCLTUwCi0JCQkJT2FrZGFsZSBNTiA1NTEyOC0zNDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BNSAgIChoZXgpCQlNZWRlYSBDb3Jwb3JhdGlvbgotMDAwM0E1ICAgICAoYmFzZSAxNikJCU1lZGVhIENvcnBvcmF0aW9uCi0JCQkJNTcwMSBMaW5kZXJvIENhbnlvbiBSZC4KLQkJCQlCbGRnLiAzLTEwMAotCQkJCVdldGxha2UgVmlsbGFnZSBDQSA5MTM2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQTYgICAoaGV4KQkJVHJheGl0IFRlY2hub2xvZ3ksIEluYy4KLTAwMDNBNiAgICAgKGJhc2UgMTYpCQlUcmF4aXQgVGVjaG5vbG9neSwgSW5jLgotCQkJCTI1NiBHcmVhdCBSb2FkLAotCQkJCVN1aXRlIDE2Ci0JCQkJTGl0dGxldG9uIE1BIDAxNDYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BNyAgIChoZXgpCQlVbml4dGFyIFRlY2hub2xvZ3ksIEluYy4KLTAwMDNBNyAgICAgKGJhc2UgMTYpCQlVbml4dGFyIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxM0YgTm8uIDEwMCBNaW5nIENodWFuIFJvYWQKLQkJCQlIc2luIFRpZW4sIFRhaXBlaSwKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUE4ICAgKGhleCkJCUlET1QgQ29tcHV0ZXJzLCBJbmMuCi0wMDAzQTggICAgIChiYXNlIDE2KQkJSURPVCBDb21wdXRlcnMsIEluYy4KLQkJCQkzRi4sIE5vLiAxMzcsIExhbmUgMjM1Ci0JCQkJUGFvLUNoaWFvIFJvYWQsIEhzaW4tVGllbiBUYWlwZWkgQ291bnRyeQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy1BOSAgIChoZXgpCQlBWENFTlQgTWVkaWEgQUcKLTAwMDNBOSAgICAgKGJhc2UgMTYpCQlBWENFTlQgTWVkaWEgQUcKLQkJCQlUZWNobm9sb2dpZXBhcmsgMTMKLQkJCQkzMzEwMCBQYWRlcmJvcm4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMy1BQSAgIChoZXgpCQlXYXRsb3cKLTAwMDNBQSAgICAgKGJhc2UgMTYpCQlXYXRsb3cKLQkJCQkxMjQxIEJ1bmR5IEJsdmQuCi0JCQkJV2lub25hIE1OIDU1OTg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BQiAgIChoZXgpCQlCcmlkZ2UgSW5mb3JtYXRpb24gU3lzdGVtcwotMDAwM0FCICAgICAoYmFzZSAxNikJCUJyaWRnZSBJbmZvcm1hdGlvbiBTeXN0ZW1zCi0JCQkJNzE3IE9mZmljZSBQYXJrd2F5Ci0JCQkJU3QuIExvdWlzIE1PIDYzMTQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1BQyAgIChoZXgpCQlGcm9uaXVzIFNjaHdlaXNzbWFzY2hpbmVuCi0wMDAzQUMgICAgIChiYXNlIDE2KQkJRnJvbml1cyBTY2h3ZWlzc21hc2NoaW5lbgotCQkJCUd1ZW50ZXIgRnJvbml1cyBTdHIuIDEKLQkJCQlBLTQ2MDAgV2Vpcy1UaGFsaGVpbQotCQkJCUFVU1RSSUEKLQkJCQlBVVNUUklBCi0KLTAwLTAzLUFEICAgKGhleCkJCUVtZXJzb24gRW5lcmd5IFN5c3RlbXMgQUIKLTAwMDNBRCAgICAgKGJhc2UgMTYpCQlFbWVyc29uIEVuZXJneSBTeXN0ZW1zIEFCCi0JCQkJU0UtMTQxIDgyIFN0b2NraG9sbQotCQkJCVNXRURFTgotCi0wMC0wMy1BRSAgIChoZXgpCQlBbGxpZWQgQWR2YW5jZWQgTWFudWZhY3R1cmluZyBQdGUsIEx0ZC4KLTAwMDNBRSAgICAgKGJhc2UgMTYpCQlBbGxpZWQgQWR2YW5jZWQgTWFudWZhY3R1cmluZyBQdGUsIEx0ZC4KLQkJCQk3IEludGVybmF0aW9uYWwgQnVzaW5lc3MgUGFyawotCQkJCSMwMi0wMAotCQkJCVNpbmdhcG9yZSA2MDk5MTkKLQkJCQlTSU5HQVBPUkUKLQotMDAtMDMtQUYgICAoaGV4KQkJUGFyYWdlYSBDb21tdW5pY2F0aW9ucwotMDAwM0FGICAgICAoYmFzZSAxNikJCVBhcmFnZWEgQ29tbXVuaWNhdGlvbnMKLQkJCQkyMDcgUGVycnkgUGFya3dheQotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQjAgICAoaGV4KQkJWHNlbnNlIFRlY2hub2xvZ3kgQ29ycC4KLTAwMDNCMCAgICAgKGJhc2UgMTYpCQlYc2Vuc2UgVGVjaG5vbG9neSBDb3JwLgotCQkJCTExIEYsIDIzMiwgU2VjLiAzLCBDaGVuZ1RlaCBSZC4KLQkJCQlUYWlwZWkgVEFJV0FOLCAxMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUIxICAgKGhleCkJCUhvc3BpcmEgSW5jLgotMDAwM0IxICAgICAoYmFzZSAxNikJCUhvc3BpcmEgSW5jLgotCQkJCTc1NSBKYXJ2aXMgRHJpdmUKLQkJCQlNb3JnYW4gSGlsbCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQjIgICAoaGV4KQkJUmFkd2FyZQotMDAwM0IyICAgICAoYmFzZSAxNikJCVJhZHdhcmUKLQkJCQk4IEhhbXJwZSBIb2NodmltCi0JCQkJSmVydXNhbGVtCi0JCQkJSVNSQUVMCi0KLTAwLTAzLUIzICAgKGhleCkJCUlBIExpbmsgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDNCMyAgICAgKGJhc2UgMTYpCQlJQSBMaW5rIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJNkYtNCwgTm8uIDgxIEhzaW4gVGFpCi0JCQkJV3UgUmQuLCBTZWMuIDEgSHNpaC1DaGloLCBUYWlwZWkgSHNpZW4sCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUI0ICAgKGhleCkJCU1hY3JvdGVrIEludGVybmF0aW9uYWwgQ29ycC4KLTAwMDNCNCAgICAgKGJhc2UgMTYpCQlNYWNyb3RlayBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJMkYsIE5vLiAyOCwgTGFuZSA0NgotCQkJCUt3YW5nIEZ1IDYgUm9hZCwKLQkJCQlUYWlwZWkgVGFpcGVpIFRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtQjUgICAoaGV4KQkJRW50cmEgVGVjaG5vbG9neSBDby4KLTAwMDNCNSAgICAgKGJhc2UgMTYpCQlFbnRyYSBUZWNobm9sb2d5IENvLgotCQkJCUZsLiAzLCBOby4gNSwgQWxsZXkgMiwKLQkJCQlTdS1XZWkgTGFuZSwgQ2h1bmctQ2hlbmcgUmQuLCBIc2luLURpZW4sCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUI2ICAgKGhleCkJCVFTSSBDb3Jwb3JhdGlvbgotMDAwM0I2ICAgICAoYmFzZSAxNikJCVFTSSBDb3Jwb3JhdGlvbgotCQkJCTIyMTIgU291dGggV2VzdCBUZW1wbGUgIzUwCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUI3ICAgKGhleCkJCVpBQ0NFU1MgU3lzdGVtcwotMDAwM0I3ICAgICAoYmFzZSAxNikJCVpBQ0NFU1MgU3lzdGVtcwotCQkJCTI3NSBTaG9yZWxpbmUgRHJpdmUsICMxMTAKLQkJCQlSZWR3b29kIENpdHkgQ0EgOTQwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUI4ICAgKGhleCkJCU5ldEtpdCBTb2x1dGlvbnMsIExMQwotMDAwM0I4ICAgICAoYmFzZSAxNikJCU5ldEtpdCBTb2x1dGlvbnMsIExMQwotCQkJCTExMjUtQSBCdXNpbmVzcyBDZW50ZXIgQ2lyY2xlCi0JCQkJVGhvdXNhbmQgT2FrcyBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQjkgICAoaGV4KQkJSHVhbG9uZyBUZWxlY29tIENvLiwgTHRkLgotMDAwM0I5ICAgICAoYmFzZSAxNikJCUh1YWxvbmcgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQk5IEd1YW5naHVhIFN0LgotCQkJCUNoYW5nemhvdSwgSmlhbmdzdSwgMjEzMDAzCi0JCQkJUC5SLiBDSElOQQotCQkJCUNISU5BCi0KLTAwLTAzLUJBICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbgotMDAwM0JBICAgICAoYmFzZSAxNikJCU9yYWNsZSBDb3Jwb3JhdGlvbgotCQkJCTE3IE5ldHdvcmsgQ2lyY2xlCi0JCQkJQnVpbGRpbmcgMTcsIFVNUEsxNy0xMzEKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1CQiAgIChoZXgpCQlTaWduYWwgQ29tbXVuaWNhdGlvbnMgTGltaXRlZAotMDAwM0JCICAgICAoYmFzZSAxNikJCVNpZ25hbCBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0JCQkJVW5pdCAyMTcsIDIvRiwgSEtJVEMsCi0JCQkJNzIgVGF0IENoZWUgQXZlbnVlLCBLTE4uLAotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC0wMy1CQyAgIChoZXgpCQlDT1QgR21iSAotMDAwM0JDICAgICAoYmFzZSAxNikJCUNPVCBHbWJICi0JCQkJR3VldGVyc3RyYXNzZSA1Ci0JCQkJNjQ4MDcgRGllYnVyZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLUJEICAgKGhleCkJCU9tbmlDbHVzdGVyIFRlY2hub2xvZ2llcywgSW5jLgotMDAwM0JEICAgICAoYmFzZSAxNikJCU9tbmlDbHVzdGVyIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTQ5NTAgQmx1ZSBMYWtlIERyaXZlCi0JCQkJU3VpdGUgOTAwCi0JCQkJQm9jYSBSYXRvbiBGTCAzMzQzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtQkUgICAoaGV4KQkJTmV0aWxpdHkKLTAwMDNCRSAgICAgKGJhc2UgMTYpCQlOZXRpbGl0eQotCQkJCTI5OCBTb3V0aCBTdW5ueXZhbGUgQXZlLgotCQkJCVN1aWUgMTAyCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1CRiAgIChoZXgpCQlDZW50ZXJwb2ludCBCcm9hZGJhbmQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDAzQkYgICAgIChiYXNlIDE2KQkJQ2VudGVycG9pbnQgQnJvYWRiYW5kIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE3NDEgVGVjaG5vbG9neSBEcml2ZSwKLQkJCQlTdWl0ZSA0MDAKLQkJCQlTYW4gSm9zZSBDQSA5NTExMC0xMzEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1DMCAgIChoZXgpCQlSRlROQyBDby4sIEx0ZC4KLTAwMDNDMCAgICAgKGJhc2UgMTYpCQlSRlROQyBDby4sIEx0ZC4KLQkJCQkzRiwgMTYyNC0yNCwgQm9uZ2NoZW4tZG9uZwotCQkJCUtpb25hay1ndSwgU2VvdWwKLQkJCQlTT1VUSCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wMy1DMSAgIChoZXgpCQlQYWNrZXQgRHluYW1pY3MgTHRkCi0wMDAzQzEgICAgIChiYXNlIDE2KQkJUGFja2V0IER5bmFtaWNzIEx0ZAotCQkJCTIgQnVja3N0YW5lIFBhcmsKLQkJCQlFZGluYnVyZ2gsIFNjb3RsYW5kCi0JCQkJVUsgRUgxMCBHUEEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wMy1DMiAgIChoZXgpCQlTb2xwaG9uZSBLLksuCi0wMDAzQzIgICAgIChiYXNlIDE2KQkJU29scGhvbmUgSy5LLgotCQkJCTItMTEtMSBLYW5kYXRzdWthc2EtY2hvCi0JCQkJQ2hpeWFkYSwgVG9reW8KLQkJCQkxMDEtMDA0OCBKYXBhbgotCQkJCUpBUEFOCi0KLTAwLTAzLUMzICAgKGhleCkJCU1pY3JvbmlrIE11bHRpbWVkaWEKLTAwMDNDMyAgICAgKGJhc2UgMTYpCQlNaWNyb25payBNdWx0aW1lZGlhCi0JCQkJQnJ1ZWNrZW5zdHIuIDIKLQkJCQlELTUxMzc5IExldmVya3VzZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMy1DNCAgIChoZXgpCQlUb21yYSBTeXN0ZW1zIEFTQQotMDAwM0M0ICAgICAoYmFzZSAxNikJCVRvbXJhIFN5c3RlbXMgQVNBCi0JCQkJRHJlbmdzcnVkaGFnZW4gMgotCQkJCUJveCAyNzggTi0xMzcxIEFza2VyCi0JCQkJTk9SV0FZCi0JCQkJTk9SV0FZCi0KLTAwLTAzLUM1ICAgKGhleCkJCU1vYm90aXggQUcKLTAwMDNDNSAgICAgKGJhc2UgMTYpCQlNb2JvdGl4IEFHCi0JCQkJV2luZ2VydHN3ZWlsZXJob2YgNgotCQkJCUQtNjc3MjQgSG9yaW5nZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wMy1DNiAgIChoZXgpCQlJQ1VFIFN5c3RlbXMsIEluYy4KLTAwMDNDNiAgICAgKGJhc2UgMTYpCQlJQ1VFIFN5c3RlbXMsIEluYy4KLQkJCQkxNzQ4OSBHYWxlIEF2ZW51ZQotCQkJCUNpdHkgb2YgSW5kdXN0cnkgQ0EgOTE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUM3ICAgKGhleCkJCWhvcGYgRWxla3Ryb25payBHbWJICi0wMDAzQzcgICAgIChiYXNlIDE2KQkJaG9wZiBFbGVrdHJvbmlrIEdtYkgKLQkJCQlOb3R0ZWJvaG1zdHJhc3NlIDQxCi0JCQkJNTg1MTEgTHVlZGVuc2NoZWlkIAotCQkJCUdFUk1BTlkKLQotMDAtMDMtQzggICAoaGV4KQkJQ01MIEVtZXJnZW5jeSBTZXJ2aWNlcwotMDAwM0M4ICAgICAoYmFzZSAxNikJCUNNTCBFbWVyZ2VuY3kgU2VydmljZXMKLQkJCQk3NSBCb3VsZXZhcmQgbGEgVGVjaG5vbG9naWVzCi0JCQkJSHVsbCwgUXVlYmVjIEpFMjNHNAotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wMy1DOSAgIChoZXgpCQlURUNPTSBDby4sIEx0ZC4KLTAwMDNDOSAgICAgKGJhc2UgMTYpCQlURUNPTSBDby4sIEx0ZC4KLQkJCQkyMywgUiZEIFJvYWQgMgotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtQ0EgICAoaGV4KQkJTVRTIFN5c3RlbXMgQ29ycC4KLTAwMDNDQSAgICAgKGJhc2UgMTYpCQlNVFMgU3lzdGVtcyBDb3JwLgotCQkJCTMwMDEgU2hlbGRvbiBEcml2ZQotCQkJCUNhcnksIE5DIDI3NTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1DQiAgIChoZXgpCQlOaXBwb24gU3lzdGVtcyBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLTAwMDNDQiAgICAgKGJhc2UgMTYpCQlOaXBwb24gU3lzdGVtcyBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLQkJCQkzMC0xMiwgS29teW8tY2hvLAotCQkJCVRha2FyYWJ1a2EtY2l0eSwgSHlvZ28sCi0JCQkJNjY1LTAwNDUgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMy1DQyAgIChoZXgpCQlNb21lbnR1bSBDb21wdXRlciwgSW5jLgotMDAwM0NDICAgICAoYmFzZSAxNikJCU1vbWVudHVtIENvbXB1dGVyLCBJbmMuCi0JCQkJMTgxNSBBc3RvbiBBdmVudWUKLQkJCQlTdWl0ZSAxMDcKLQkJCQlDYXJsc2JhZCBDQSA5MjAwOC03MzEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1DRCAgIChoZXgpCQlDbG92ZXJ0ZWNoLCBJbmMuCi0wMDAzQ0QgICAgIChiYXNlIDE2KQkJQ2xvdmVydGVjaCwgSW5jLgotCQkJCTMtMS01IE5ha2EtY2hvIE11c2FzaGluby1zaGkKLQkJCQlUb2t5byAxODAtMDAwNiBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAzLUNFICAgKGhleCkJCUVURU4gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDAzQ0UgICAgIChiYXNlIDE2KQkJRVRFTiBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyRiwgTm8uIDksIExhbmUgMjM1LCBQYW8tQ2hpYW8gUmQuLAotCQkJCUhzaWVuIFRpZW4gQ2l0eSwgVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wMy1DRiAgIChoZXgpCQlNdXhjb20sIEluYy4KLTAwMDNDRiAgICAgKGJhc2UgMTYpCQlNdXhjb20sIEluYy4KLQkJCQlEIDYwMiwgQnVuZGFuZyBUZWNobm9wYXJrICMxNTEKLQkJCQlZYXRhcCBEb25nLCBCdW5kYWcgR3UsIFN1bmduYW0gU2ksCi0JCQkJS3l1bmdraSBEbyBLT1JFQSA0NjMtMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTAzLUQwICAgKGhleCkJCUtPQU5LRUlTTyBDby4sIEx0ZC4KLTAwMDNEMCAgICAgKGJhc2UgMTYpCQlLT0FOS0VJU08gQ28uLCBMdGQuCi0JCQkJWmlwIENvZGUgNzkxLTgwNDIKLQkJCQkyNzk4IDM2bWluYW1peW9zaGlkYS1NYXRpIE1hdHV5YW1hLUNpdHkKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTAzLUQxICAgKGhleCkJCVRha2F5YSBDb3Jwb3JhdGlvbgotMDAwM0QxICAgICAoYmFzZSAxNikJCVRha2F5YSBDb3Jwb3JhdGlvbgotCQkJCURldmVsb3BtZW50IERpdmlzaW9uCi0JCQkJNjYxLTEsIEliYXJhLWNobyBJYmFyYS1DaXR5IE9rYXlhbWEsIDcxNQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtRDIgICAoaGV4KQkJQ3Jvc3NiZWFtIFN5c3RlbXMsIEluYy4KLTAwMDNEMiAgICAgKGJhc2UgMTYpCQlDcm9zc2JlYW0gU3lzdGVtcywgSW5jLgotCQkJCTgwIENlbnRyYWwgU3RyZWV0Ci0JCQkJQm94Ym9yb3VnaCBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRDMgICAoaGV4KQkJSW50ZXJuZXQgRW5lcmd5IFN5c3RlbXMsIEluYy4KLTAwMDNEMyAgICAgKGJhc2UgMTYpCQlJbnRlcm5ldCBFbmVyZ3kgU3lzdGVtcywgSW5jLgotCQkJCTQyMTggVHJ1bWJvIEN0LgotCQkJCUZhaXJmYXggVkEgMjIwMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUQ0ICAgKGhleCkJCUFsbG9wdGljLCBJbmMuCi0wMDAzRDQgICAgIChiYXNlIDE2KQkJQWxsb3B0aWMsIEluYy4KLQkJCQk2OTYwIEtvbGwgQ2VudGVyIFBhcmt3YXkKLQkJCQlTdWl0ZSAzMDAKLQkJCQlQbGVhc2FudG9uIENBIDk0NTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1ENSAgIChoZXgpCQlBZHZhbmNlZCBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMDNENSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQkxNi0xNiBUYWthc2hpbWEtaG9uY2hvLAotCQkJCU51bWF6dSBTaGl6dW9rYSwKLQkJCQk0MTAwMDU1IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtRDYgICAoaGV4KQkJUkFEVmlzaW9uLCBMdGQuCi0wMDAzRDYgICAgIChiYXNlIDE2KQkJUkFEVmlzaW9uLCBMdGQuCi0JCQkJMjQgUmF1bCBXYWxsZW5iZXJnIFN0LgotCQkJCVRlbC1Bdml2IDY5NzE5Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTAzLUQ3ICAgKGhleCkJCU5leHROZXQgV2lyZWxlc3MsIEluYy4KLTAwMDNENyAgICAgKGJhc2UgMTYpCQlOZXh0TmV0IFdpcmVsZXNzLCBJbmMuCi0JCQkJOTU1NSBKYW1lcyBBdmUuIFNvLgotCQkJCVN1aXRlIDI3MAotCQkJCUJsb29taW5ndG9uIE1OIDU1NDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1EOCAgIChoZXgpCQlpTVBhdGggTmV0d29ya3MsIEluYy4KLTAwMDNEOCAgICAgKGJhc2UgMTYpCQlpTVBhdGggTmV0d29ya3MsIEluYy4KLQkJCQkxNDMxIE1lcml2YWxlIFJkLgotCQkJCU5lcGVhbiwgT250YXJpbywKLQkJCQlDQU5BREEgSzJFIDFCOQotCQkJCUNBTkFEQQotCi0wMC0wMy1EOSAgIChoZXgpCQlTZWNoZXJvbiBTQQotMDAwM0Q5ICAgICAoYmFzZSAxNikJCVNlY2hlcm9uIFNBCi0JCQkJVW50ZXJtYXR0d2VnIDgKLQkJCQlDaC0zMDI3IEJlcm4KLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTAzLURBICAgKGhleCkJCVRha2FtaXNhd2EgQ3liZXJuZXRpY3MgQ28uLCBMdGQuCi0wMDAzREEgICAgIChiYXNlIDE2KQkJVGFrYW1pc2F3YSBDeWJlcm5ldGljcyBDby4sIEx0ZC4KLQkJCQlOYWthbm8gSGVpd2EgQmxkZy4KLQkJCQk0OCA1LTItQ2hvbWUgQ2h1bywgTmFrYW5vLWt1IFRva3lvIDE2NC0wCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wMy1EQiAgIChoZXgpCQlBcG9nZWUgRWxlY3Ryb25pY3MgQ29ycC4KLTAwMDNEQiAgICAgKGJhc2UgMTYpCQlBcG9nZWUgRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQkxNzE1IEJlcmtlbGV5IFN0LiAKLQkJCQlTYW50YSBNb25pY2EgQ0EgOTA0MDUtMzIxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtREMgICAoaGV4KQkJTGV4YXIgTWVkaWEsIEluYy4KLTAwMDNEQyAgICAgKGJhc2UgMTYpCQlMZXhhciBNZWRpYSwgSW5jLgotCQkJCTQ3NDIxIEJheXNpZGUgUGFya3dheQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUREICAgKGhleCkJCUNvbWFyayBDb3JwLgotMDAwM0REICAgICAoYmFzZSAxNikJCUNvbWFyayBDb3JwLgotCQkJCTkzIFdlc3QgU3QuCi0JCQkJTWVkZmllbGQgTUEgMDIwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLURFICAgKGhleCkJCU9UQyBXaXJlbGVzcwotMDAwM0RFICAgICAoYmFzZSAxNikJCU9UQyBXaXJlbGVzcwotCQkJCTYwMiBDaGFybG90IEF2ZS4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtREYgICAoaGV4KQkJRGVzYW5hIFN5c3RlbXMKLTAwMDNERiAgICAgKGJhc2UgMTYpCQlEZXNhbmEgU3lzdGVtcwotCQkJCTE4MDUgTWNDYW5kbGVzcyBBdmUuCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUUwICAgKGhleCkJCU1vdG9yb2xhLCBJbmMuCi0wMDAzRTAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYy4KLQkJCQkxMzAxIEUuIEFsZ29ucXVpbiBSZC4KLQkJCQlTY2hhdW1idXJnIElMIDYwMTk2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1FMSAgIChoZXgpCQlXaW5tYXRlIENvbW11bmljYXRpb24sIEluYy4KLTAwMDNFMSAgICAgKGJhc2UgMTYpCQlXaW5tYXRlIENvbW11bmljYXRpb24sIEluYy4KLQkJCQk5RixOby4xMTEtNixTaGluZy1EZSBSZAotCQkJCVNhbi1DaHVuZywKLQkJCQlUYWlwZWkgICAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTAzLUUyICAgKGhleCkJCUNvbXNwYWNlIENvcnBvcmF0aW9uCi0wMDAzRTIgICAgIChiYXNlIDE2KQkJQ29tc3BhY2UgQ29ycG9yYXRpb24KLQkJCQk5NTUgRnJlZXBvcnQgUGt3eQotCQkJCVN1aXRlIDEwMAotCQkJCUNvcHBlbGwgVFggNzUwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUUzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDNFMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1FNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzRTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRTUgICAoaGV4KQkJSGVybXN0ZWR0IFNHCi0wMDAzRTUgICAgIChiYXNlIDE2KQkJSGVybXN0ZWR0IFNHCi0JCQkJQ2FybC1SZXV0aGVyIC0gU3RyLiAzCi0JCQkJRC02ODMwNSBNYW5uaGVpbQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLUU2ICAgKGhleCkJCUVudG9uZSwgSW5jLgotMDAwM0U2ICAgICAoYmFzZSAxNikJCUVudG9uZSwgSW5jLgotCQkJCTI3NTUgQ2FtcHVzIERyIFN0ZSAyMzUKLQkJCQlTYW4gTWF0ZW8gQ0EgIDk0NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1FNyAgIChoZXgpCQlMb2dvc3RlayBDby4gTHRkLgotMDAwM0U3ICAgICAoYmFzZSAxNikJCUxvZ29zdGVrIENvLiBMdGQuCi0JCQkJMTl0aCAxNSBTdW51c3UtQWNhZGVteSBUb3dlcgotCQkJCTI3Ny0xNyBTdW5nc3UtMmdhLCBTdW5nZG9uZy1ndQotCQkJCVNlb3VsIEtPUkVBIDEzMy0xMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDMtRTggICAoaGV4KQkJV2F2ZWxlbmd0aCBEaWdpdGFsIExpbWl0ZWQKLTAwMDNFOCAgICAgKGJhc2UgMTYpCQlXYXZlbGVuZ3RoIERpZ2l0YWwgTGltaXRlZAotCQkJCTEyIFZpbmNlbnQgQXZlbnVlCi0JCQkJQ3Jvd25oaWxsIEJ1c2luZXNzIFBhcmsgTWlsdG9uIEtleW5lcywgQgotCQkJCU1LOCAwQUIgTUs4IDBBQiBFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDMtRTkgICAoaGV4KQkJQWthcmEgQ2FuYWRhLCBJbmMuCi0wMDAzRTkgICAgIChiYXNlIDE2KQkJQWthcmEgQ2FuYWRhLCBJbmMuCi0JCQkJMTUwIEthdGltYXZpayBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8KLQkJCQlDQU5BREEgSzJMIDJOMgotCQkJCUNBTkFEQQotCi0wMC0wMy1FQSAgIChoZXgpCQlNZWdhIFN5c3RlbSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDNFQSAgICAgKGJhc2UgMTYpCQlNZWdhIFN5c3RlbSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyRiwgTm8uIDQxLCBMYW5lIDc2LAotCQkJCVJ1aSBLdWFuZyBSZC4sIE5laSBIdSAxMTQKLQkJCQlUYWlwZWkgVGFpcGVpIFRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDMtRUIgICAoaGV4KQkJQXRyaWNhCi0wMDAzRUIgICAgIChiYXNlIDE2KQkJQXRyaWNhCi0JCQkJNSBTaGVua2FyIFN0LiBQLk8uQi4gMTIyMzEKLQkJCQlIZXplbGlhIEluZHVzdHJpYWwgQXJlYQotCQkJCTQ2NzMzIDQ2NzMzIElTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wMy1FQyAgIChoZXgpCQlJQ0cgUmVzZWFyY2gsIEluYy4KLTAwMDNFQyAgICAgKGJhc2UgMTYpCQlJQ0cgUmVzZWFyY2gsIEluYy4KLQkJCQk3NzUgQiBUaGUgUXVlZW5zIFdheQotCQkJCVRvcm9udG8sIE9udGFyaW8KLQkJCQlNOFogMU4xIENBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wMy1FRCAgIChoZXgpCQlTaGlua2F3YSBFbGVjdHJpYyBDby4sIEx0ZC4KLTAwMDNFRCAgICAgKGJhc2UgMTYpCQlTaGlua2F3YSBFbGVjdHJpYyBDby4sIEx0ZC4KLQkJCQkzLTItMjQgMyBjaG9tZQotCQkJCUtvbmFuIE5ha2FrdSBIaXJvc2hpbWEsIDczMC0wODI1LAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDMtRUUgICAoaGV4KQkJTUtOZXQgQ29ycG9yYXRpb24KLTAwMDNFRSAgICAgKGJhc2UgMTYpCQlNS05ldCBDb3Jwb3JhdGlvbgotCQkJCTcxMS1CIENoYXJjb3QgQXZlLgotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1FRiAgIChoZXgpCQlPbmVsaW5lIEFHCi0wMDAzRUYgICAgIChiYXNlIDE2KQkJT25lbGluZSBBRwotCQkJCVN0ZWluZmVsZHN0ci4gMwotCQkJCTM5MTc5IEJhcmxlYmVuCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDMtRjAgICAoaGV4KQkJUmVkZmVybiBCcm9hZGJhbmQgTmV0d29ya3MKLTAwMDNGMCAgICAgKGJhc2UgMTYpCQlSZWRmZXJuIEJyb2FkYmFuZCBOZXR3b3JrcwotCQkJCUxldmVsIDEsIDEgQ2VudHJhbCBBdmUuLAotCQkJCUF1c3RyYWxpYW4gVGVjaG5vbG9neSBQYXJrIEV2ZWxlaWdoLCBOU1cKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDMtRjEgICAoaGV4KQkJQ2ljYWRhIFNlbWljb25kdWN0b3IsIEluYy4KLTAwMDNGMSAgICAgKGJhc2UgMTYpCQlDaWNhZGEgU2VtaWNvbmR1Y3RvciwgSW5jLgotCQkJCTgxMSBCYXJ0b24gU3ByaW5ncyBSZC4KLQkJCQlTdWl0ZSA1NTAKLQkJCQlBdXN0aW4gVFggNzg3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUYyICAgKGhleCkJCVNlbmVjYSBOZXR3b3JrcwotMDAwM0YyICAgICAoYmFzZSAxNikJCVNlbmVjYSBOZXR3b3JrcwotCQkJCTMwIFdlc3QgR3VkZSBEci4KLQkJCQlTdWl0ZSAyMDAKLQkJCQlSb2NrdmlsbGUgTUQgMjA4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUYzICAgKGhleCkJCURhenpsZSBNdWx0aW1lZGlhLCBJbmMuCi0wMDAzRjMgICAgIChiYXNlIDE2KQkJRGF6emxlIE11bHRpbWVkaWEsIEluYy4KLQkJCQk0NzIxMSBCYXlzaWRlIFBhcmt3YXkKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wMy1GNCAgIChoZXgpCQlOZXRCdXJuZXIKLTAwMDNGNCAgICAgKGJhc2UgMTYpCQlOZXRCdXJuZXIKLQkJCQkxMTMyNCBMZWdhY3kgQ2FueW9uIFBsLgotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRjUgICAoaGV4KQkJQ2hpcDJDaGlwCi0wMDAzRjUgICAgIChiYXNlIDE2KQkJQ2hpcDJDaGlwCi0JCQkJMjI0OSBaYW5rZXIgUmQuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUY2ICAgKGhleCkJCUFsbGVncm8gTmV0d29ya3MsIEluYy4KLTAwMDNGNiAgICAgKGJhc2UgMTYpCQlBbGxlZ3JvIE5ldHdvcmtzLCBJbmMuCi0JCQkJNjM5OSBTYW4gSWduYWNpbyBBdmVudWUKLQkJCQlTYW4gSm9zZSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRjcgICAoaGV4KQkJUGxhc3QtQ29udHJvbCBHbWJICi0wMDAzRjcgICAgIChiYXNlIDE2KQkJUGxhc3QtQ29udHJvbCBHbWJICi0JCQkJV2FsdGVyLUZyZWl0YWctU3RyLiAxNQotCQkJCTQyODk5IFJlbXNjaGVpZAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTAzLUY4ICAgKGhleCkJCVNhbkNhc3RsZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDNGOCAgICAgKGJhc2UgMTYpCQlTYW5DYXN0bGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjEwNyBOb3J0aCBGaXJzdCBTdHJlZXQKLQkJCQlTdWl0ZSA1MDAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRjkgICAoaGV4KQkJUGxlaWFkZXMgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDNGOSAgICAgKGJhc2UgMTYpCQlQbGVpYWRlcyBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTI4MzAgTWFya2V0IExvb3AgIzEwNAotCQkJCVNvdXRoIExha2UgVFggNzYwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUZBICAgKGhleCkJCVRpTWV0cmEgTmV0d29ya3MKLTAwMDNGQSAgICAgKGJhc2UgMTYpCQlUaU1ldHJhIE5ldHdvcmtzCi0JCQkJNTAwIEVsbGlzIFN0LgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUZCICAgKGhleCkJCUVORUdBVEUgQ28uLEx0ZC4KLTAwMDNGQiAgICAgKGJhc2UgMTYpCQlFTkVHQVRFIENvLixMdGQuCi0JCQkJMy0xNC00MCBTZW5yaW9rYSwKLQkJCQlTZXR0c3UtY2l0eSBPc2FrYSA1NjYtODY4NgotCQkJCUpBUEFOCi0KLTAwLTAzLUZDICAgKGhleCkJCUludGVydGV4IERhdGEgQUIKLTAwMDNGQyAgICAgKGJhc2UgMTYpCQlJbnRlcnRleCBEYXRhIEFCCi0JCQkJUmlzc25lbGVkZW4gNDUKLQkJCQkxNzQgNDQgU3VuZGJ5YmVyZwotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC0wMy1GRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDAzRkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDMtRkUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwM0ZFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTAzLUZGICAgKGhleCkJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotMDAwM0ZGICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotCQkJCTEgTWljcm9zb2Z0IFdheQotCQkJCVJlZG1vbmQgV0EgOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTAwICAgKGhleCkJCUxFWE1BUksgSU5URVJOQVRJT05BTCwgSU5DLgotMDAwNDAwICAgICAoYmFzZSAxNikJCUxFWE1BUksgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTc0MCBORVcgQ0lSQ0xFIFJEIC0gQkxERy4gIzAzNQotCQkJCUxFWElOR1RPTiBLWSA0MDU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMDEgICAoaGV4KQkJT3Nha2kgRWxlY3RyaWMgQ28uLCBMdGQuCi0wMDA0MDEgICAgIChiYXNlIDE2KQkJT3Nha2kgRWxlY3RyaWMgQ28uLCBMdGQuCi0JCQkJMTEzMSwgRnVqaWt1Ym8sIE1peW9zaGltYWNoaSwKLQkJCQlJcnVtYS1ndW4sIFNhaXRhbWEgMzU0LTg1MDEsCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC0wMiAgIChoZXgpCQlOZXhzYW4gVGVjaG5vbG9naWVzLCBMdGQuCi0wMDA0MDIgICAgIChiYXNlIDE2KQkJTmV4c2FuIFRlY2hub2xvZ2llcywgTHRkLgotCQkJCVBhcmtlciBDZW50cmUKLQkJCQlNYW5zZmllbGQgUmQKLQkJCQlEZXJieSAgREUyMSA0U1oKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC0wMyAgIChoZXgpCQlOZXhzaSBDb3Jwb3JhdGlvbgotMDAwNDAzICAgICAoYmFzZSAxNikJCU5leHNpIENvcnBvcmF0aW9uCi0JCQkJMTk1OSBDb25jb3Vyc2UgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMDQgICAoaGV4KQkJTWFraW5vIE1pbGxpbmcgTWFjaGluZSBDby4sIEx0ZC4KLTAwMDQwNCAgICAgKGJhc2UgMTYpCQlNYWtpbm8gTWlsbGluZyBNYWNoaW5lIENvLiwgTHRkLgotCQkJCTQwMjMgTmFrYXRzdSwgQWlrYXdhLW1hY2hpLAotCQkJCUFpa28tZ3VuIEthbmFnYXdhIDI0My0wMzAzCi0JCQkJSkFQQU4KLQotMDAtMDQtMDUgICAoaGV4KQkJQUNOIFRlY2hub2xvZ2llcwotMDAwNDA1ICAgICAoYmFzZSAxNikJCUFDTiBUZWNobm9sb2dpZXMKLQkJCQk5RiwgSGV5S2FuZyBCL0QsIDE1Ny0zNgotCQkJCVNhbnN1bmctZG9uZywgS2FuZ25hbWd1LAotCQkJCVNlb3VsIEtPUkVBICMxMzUtMDkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTA2ICAgKGhleCkJCUZhLiBNZXRhYm94IEFHCi0wMDA0MDYgICAgIChiYXNlIDE2KQkJRmEuIE1ldGFib3ggQUcKLQkJCQlEYWltbGVycmluZyAzNywKLQkJCQlELTMxMTM1IEhpbGRzaGVpbSwKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC0wNyAgIChoZXgpCQlUb3Bjb24gUG9zaXRpb25pbmcgU3lzdGVtcywgSW5jLgotMDAwNDA3ICAgICAoYmFzZSAxNikJCVRvcGNvbiBQb3NpdGlvbmluZyBTeXN0ZW1zLCBJbmMuCi0JCQkJNTc1OCBXLiBMYXMgUG9zaXRhcyBCbHZkLgotCQkJCVBsZWFzYW50b24gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTA4ICAgKGhleCkJCVNhbmtvIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwNDA4ICAgICAoYmFzZSAxNikJCVNhbmtvIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTMtODAyIHVlZGEgdGVucGFrdS1rdQotCQkJCW5hZ295YSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LTA5ICAgKGhleCkJCUNyYXRvcyBOZXR3b3JrcwotMDAwNDA5ICAgICAoYmFzZSAxNikJCUNyYXRvcyBOZXR3b3JrcwotCQkJCTMxMyBMaXR0bGV0b24gUm9hZAotCQkJCVN1aXRlIDIwCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMEEgICAoaGV4KQkJU2FnZSBTeXN0ZW1zCi0wMDA0MEEgICAgIChiYXNlIDE2KQkJU2FnZSBTeXN0ZW1zCi0JCQkJMTQyMCBIYXJib3IgQmF5IFBhcmt3YXkKLQkJCQlTdWl0ZSAxNjAKLQkJCQlBbGFtZWRhIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0wQiAgIChoZXgpCQkzY29tIEV1cm9wZSBMdGQuCi0wMDA0MEIgICAgIChiYXNlIDE2KQkJM2NvbSBFdXJvcGUgTHRkLgotCQkJCTNjb20gQ2VudHJlCi0JCQkJQm91bmRhcnkgV2F5LCBIZW1lbCBIZW1wc3RlYWQgSGVydGZvcmRzaAotCQkJCUhQMiA3WVUgVUsKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC0wQyAgIChoZXgpCQlLQU5OTyBXb3JrJ3MgTHRkLgotMDAwNDBDICAgICAoYmFzZSAxNikJCUtBTk5PIFdvcmsncyBMdGQuCi0JCQkJMS01LTI1IEthbWl0b21pbm8sCi0JCQkJS29rdXJha2l0YS1rdSwgS2l0YWt5dXN5dS1jaXR5LCBGdWt1b2thLQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtMEQgICAoaGV4KQkJQXZheWEsIEluYy4KLTAwMDQwRCAgICAgKGJhc2UgMTYpCQlBdmF5YSwgSW5jLgotCQkJCU9mZmljZSAxQTMyNQotCQkJCTMwNyBNaWRkbGV0b3duIExpbmNyb2Z0IFJvYWQKLQkJCQlMaW5jcm9mdCBOSiAwNzczOC0xNTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0wRSAgIChoZXgpCQlBVk0gR21iSAotMDAwNDBFICAgICAoYmFzZSAxNikJCUFWTSBHbWJICi0JCQkJQWx0LU1vYWJpdCA5NQotCQkJCTEwNTU5IEJlcmxpbgotCQkJCUdFUk1BTlkKLQotMDAtMDQtMEYgICAoaGV4KQkJQXN1cyBOZXR3b3JrIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNDBGICAgICAoYmFzZSAxNikJCUFzdXMgTmV0d29yayBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMS0xLCBOby4gNjc1LCBTZWMuIDEsIEtpbmcta3VvIFJkLiwKLQkJCQlIc2luY2h1LAotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC0xMCAgIChoZXgpCQlTcGlubmFrZXIgTmV0d29ya3MsIEluYy4KLTAwMDQxMCAgICAgKGJhc2UgMTYpCQlTcGlubmFrZXIgTmV0d29ya3MsIEluYy4KLQkJCQkxMDcgR2FtbWEgRHJpdmUKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0xMSAgIChoZXgpCQlJbmtyYSBOZXR3b3JrcywgSW5jLgotMDAwNDExICAgICAoYmFzZSAxNikJCUlua3JhIE5ldHdvcmtzLCBJbmMuCi0JCQkJNDA5NzEgRW5jeWNsb3BlZGlhIENpcmNsZQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTEyICAgKGhleCkJCVdhdmVTbWl0aCBOZXR3b3JrcywgSW5jLgotMDAwNDEyICAgICAoYmFzZSAxNikJCVdhdmVTbWl0aCBOZXR3b3JrcywgSW5jLgotCQkJCTQwIE5hZ29nIFBhcmsKLQkJCQlBY3RvbiBNQSAwMTcyMC0zNDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0xMyAgIChoZXgpCQlTTk9NIFRlY2hub2xvZ3kgQUcKLTAwMDQxMyAgICAgKGJhc2UgMTYpCQlTTk9NIFRlY2hub2xvZ3kgQUcKLQkJCQlIZWxtaG9sdHpzdHJhc3NlIDItOQotCQkJCUQtMTA1ODcgQmVybGluCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDQtMTQgICAoaGV4KQkJVW1lemF3YSBNdXNlbiBEZW5raSBDby4sIEx0ZC4KLTAwMDQxNCAgICAgKGJhc2UgMTYpCQlVbWV6YXdhIE11c2VuIERlbmtpIENvLiwgTHRkLgotCQkJCTE0LTMsIE1pbmFtaSAxLCBOaXNoaSA4LAotCQkJCUNodW8ta3UsIFNhcHBvcm8sCi0JCQkJSG9ra2FpZG8gSkFQQU4gMDYwLTAwNjEKLQkJCQlKQVBBTgotCi0wMC0wNC0xNSAgIChoZXgpCQlSYXN0ZW1lIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDA0MTUgICAgIChiYXNlIDE2KQkJUmFzdGVtZSBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTg4Ni0yIE5paG9uZ2kgTmFrYWdvdS1tdXJhCi0JCQkJTmFrYWt1YmlraS1ndW4gTmlpZ2F0YQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtMTYgICAoaGV4KQkJUGFya3MgUy9BIENvbXVuaWNhY29lcyBEaWdpdGFpcwotMDAwNDE2ICAgICAoYmFzZSAxNikJCVBhcmtzIFMvQSBDb211bmljYWNvZXMgRGlnaXRhaXMKLQkJCQlBdi4gUGVybmFtYnVjbywgMTAwMQotCQkJCVBvcnRvLUFsZWdyZS1SUyBDRVAgOTAyNDAtMDA0Ci0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLTA0LTE3ICAgKGhleCkJCUVMQVUgQUcKLTAwMDQxNyAgICAgKGJhc2UgMTYpCQlFTEFVIEFHCi0JCQkJRGlsbGJlcmcgMTIKLQkJCQk5NzgyOCBNYXJrdGhlaWRlbmZlbGQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC0xOCAgIChoZXgpCQlUZWx0cm9uaWMgUy5BLlUuCi0wMDA0MTggICAgIChiYXNlIDE2KQkJVGVsdHJvbmljIFMuQS5VLgotCQkJCVBvbGlnb25vIGRlIE1hbHBpY2EKLQkJCQlDYWxsZSBGIE9lc3RlIDUwMDU3IFphcmFnb3phCi0JCQkJU1BBSU4KLQkJCQlTUEFJTgotCi0wMC0wNC0xOSAgIChoZXgpCQlGaWJlcmN5Y2xlIE5ldHdvcmtzLCBJbmMuCi0wMDA0MTkgICAgIChiYXNlIDE2KQkJRmliZXJjeWNsZSBOZXR3b3JrcywgSW5jLgotCQkJCTIwIFNvdXRoIFNhbnRhIENydXogQXZlLgotCQkJCVN1aXRlIDExMgotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMUEgICAoaGV4KQkJSW5lcyBUZXN0IGFuZCBNZWFzdXJlbWVudCBHbWJIICYgQ29LRwotMDAwNDFBICAgICAoYmFzZSAxNikJCUluZXMgVGVzdCBhbmQgTWVhc3VyZW1lbnQgR21iSCAmIENvS0cKLQkJCQlBbiBkZXIgTXVlaGxlbmF1ZSA1Ci0JCQkJQmFkIE5lbm5kb3JmIDMxNTQyCi0JCQkJR0VSTUFOWQotCi0wMC0wNC0xQiAgIChoZXgpCQlCcmlkZ2V3b3JrcyBMdGQuCi0wMDA0MUIgICAgIChiYXNlIDE2KQkJQnJpZGdld29ya3MgTHRkLgotCQkJCTEzNSBTb21lcmZvcmQgUm9hZAotCQkJCUNocmlzdGNodXJjaCBET1JTRVQgQkgyMyAzUFkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC0xQyAgIChoZXgpCQlpcERpYWxvZywgSW5jLgotMDAwNDFDICAgICAoYmFzZSAxNikJCWlwRGlhbG9nLCBJbmMuCi0JCQkJMTc2MiBUZWNobm9sb2d5IERyaXZlCi0JCQkJU3VpdGUgMTI0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTFEICAgKGhleCkJCUNvcmVnYSBvZiBBbWVyaWNhCi0wMDA0MUQgICAgIChiYXNlIDE2KQkJQ29yZWdhIG9mIEFtZXJpY2EKLQkJCQlQLk8uIEJveCAxNTkKLQkJCQlCb3RoZWxsIFdBIDk4MDQxLTAxNTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTFFICAgKGhleCkJCVNoaWtva3UgSW5zdHJ1bWVudGF0aW9uIENvLiwgTHRkLgotMDAwNDFFICAgICAoYmFzZSAxNikJCVNoaWtva3UgSW5zdHJ1bWVudGF0aW9uIENvLiwgTHRkLgotCQkJCTc3NywgT29zYWNob3UsIFplbnRzdXVqaXNoaSwKLQkJCQlLYWdhd2EsIDc2NS0wMDUyLAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtMUYgICAoaGV4KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50LCBJbmMuCi0wMDA0MUYgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50LCBJbmMuCi0JCQkJMi02LTIxIE1pbmFtaS1Bb3lhbWEKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA3LTAwNjIKLQkJCQlKQVBBTgotCi0wMC0wNC0yMCAgIChoZXgpCQlTbGltIERldmljZXMsIEluYy4KLTAwMDQyMCAgICAgKGJhc2UgMTYpCQlTbGltIERldmljZXMsIEluYy4KLQkJCQkxMiBTb3V0aCBGaXJzdCBTdC4KLQkJCQlTdWl0ZSAxMDMKLQkJCQlTYW4gSm9zZSBDQSA5NTExMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMjEgICAoaGV4KQkJT2N1bGFyIE5ldHdvcmtzCi0wMDA0MjEgICAgIChiYXNlIDE2KQkJT2N1bGFyIE5ldHdvcmtzCi0JCQkJMTI3MDAsIEZhaXIgTGFrZXMgQ2lyY2xlCi0JCQkJU3VpdGUgMTAwCi0JCQkJRmFpcmZheCBWQSAyMjAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMjIgICAoaGV4KQkJR29yZG9uIEthcGVzLCBJbmMuCi0wMDA0MjIgICAgIChiYXNlIDE2KQkJR29yZG9uIEthcGVzLCBJbmMuCi0JCQkJNTUyMCBXLiBUb3VoeSBBdmUuCi0JCQkJU2tva2llIElMIDYwMDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0yMyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAwNDIzICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTVM6ICBKRjMtNDIwCi0JCQkJMjExMSBORSAyNXRoIEF2ZW51ZQotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMjQgICAoaGV4KQkJVE1DIHMuci5sLgotMDAwNDI0ICAgICAoYmFzZSAxNikJCVRNQyBzLnIubC4KLQkJCQkyMDIgVmlhIEEuIENvc3RhCi0JCQkJNDAxMzQgLSBCb2xvZ25hCi0JCQkJSVRBTFkKLQkJCQlJVEFMWQotCi0wMC0wNC0yNSAgIChoZXgpCQlBdG1lbCBDb3Jwb3JhdGlvbgotMDAwNDI1ICAgICAoYmFzZSAxNikJCUF0bWVsIENvcnBvcmF0aW9uCi0JCQkJTXVsdGltZWRpYSAmIENvbW11bmljYXRpb25zIEdyb3VwCi0JCQkJMjIwMCBHYXRld2F5IENlbnRyZSwgU3VpdGUgMjAxCi0JCQkJTW9ycmlzdmlsbGUgTkMgMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTI2ICAgKGhleCkJCUF1dG9zeXMKLTAwMDQyNiAgICAgKGJhc2UgMTYpCQlBdXRvc3lzCi0JCQkJMjAyIElsc2lucGFzdGVsLAotCQkJCTcyMS0yIE1PSzMtRG9uZyBZYW5nIENoZW9uLWt1LAotCQkJCVNlb3VsIFNlb3VsIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTI3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDQyNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0yOCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0MjggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMjkgICAoaGV4KQkJUGl4b3JkIENvcnBvcmF0aW9uCi0wMDA0MjkgICAgIChiYXNlIDE2KQkJUGl4b3JkIENvcnBvcmF0aW9uCi0JCQkJUm9vbSAzLCAxRiwgTm8uIDEzOTYsCi0JCQkJQ2h1bmcgQ2hlbmcgUmQuIFRhb3l1YW4gQ2l0eSwgVGFveXVhbiBIcwotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC0yQSAgIChoZXgpCQlXaXJlbGVzcyBOZXR3b3JrcywgSW5jLgotMDAwNDJBICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjMyMiBFbCBDYW1pbm8gUmVhbAotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMkIgICAoaGV4KQkJSVQgQWNjZXNzIENvLiwgTHRkLgotMDAwNDJCICAgICAoYmFzZSAxNikJCUlUIEFjY2VzcyBDby4sIEx0ZC4KLQkJCQkzLTE3LTYsIFNoaW55b2tvaGFtYSwgS291aG9rdS1rdQotCQkJCVlva29oYW1hLXNoaSwgS2FuYWdhd2EgMjIyLTg1NDUKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LTJDICAgKGhleCkJCU1pbmV0LCBJbmMuCi0wMDA0MkMgICAgIChiYXNlIDE2KQkJTWluZXQsIEluYy4KLQkJCQkzRiBTZS1BIFZlbnR1cmUgVG93ZXIKLQkJCQk5NDYtMTIgRGFlY2hpLWRvbmcsIEdhbmduYW0tZ3UsIFNlb3VsCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtMkQgICAoaGV4KQkJU2FyaWFuIFN5c3RlbXMsIEx0ZC4KLTAwMDQyRCAgICAgKGJhc2UgMTYpCQlTYXJpYW4gU3lzdGVtcywgTHRkLgotCQkJCUJlYWNvbiBIb3VzZQotCQkJCVJpdmVyc2lkZSBCdXNpbmVzcyBQYXJrICBMZWVkcyBSb2FkLCBJbGsKLQkJCQlXZXN0IFlvcmtzaGlyZSBFTkdMQU5EIExTMjkgOEpaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtMkUgICAoaGV4KQkJTmV0b3VzIFRlY2hub2xvZ2llcywgTHRkLgotMDAwNDJFICAgICAoYmFzZSAxNikJCU5ldG91cyBUZWNobm9sb2dpZXMsIEx0ZC4KLQkJCQkxMDA2LCBCbG9jayBBLAotCQkJCUdvb2RWaWV3IEluZHVzdHJpYWwgQnVpbGRpbmcsIEtpbiBGYXQgU3QKLQkJCQlIT05HIEtPTkcKLQkJCQlIT05HIEtPTkcKLQotMDAtMDQtMkYgICAoaGV4KQkJSW50ZXJuYXRpb25hbCBDb21tdW5pY2F0aW9ucyBQcm9kdWN0cywgSW5jLgotMDAwNDJGICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgQ29tbXVuaWNhdGlvbnMgUHJvZHVjdHMsIEluYy4KLQkJCQk0MzI1IFdvb2RsYW5kIFBhcmsgRHJpdmUKLQkJCQlTdWl0ZSAxMDEKLQkJCQlXZXN0IE1lbGJvdXJuZSBGTCAzMjkwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMzAgICAoaGV4KQkJTmV0Z2VtCi0wMDA0MzAgICAgIChiYXNlIDE2KQkJTmV0Z2VtCi0JCQkJMjcgcnVlIGQnT3JsZWFucwotCQkJCTkyIDIwMCBOZXVpbGx0IHMvU2VpbmUKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDQtMzEgICAoaGV4KQkJR2xvYmFsU3RyZWFtcywgSW5jLgotMDAwNDMxICAgICAoYmFzZSAxNikJCUdsb2JhbFN0cmVhbXMsIEluYy4KLQkJCQkyODgyIFByb3NwZWN0IFBhcmsgRHJpdmUKLQkJCQlTdWl0ZSAzNTAKLQkJCQlSYW5jaG8gQ29yZG92YSBDQSA5NTY3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMzIgICAoaGV4KQkJVm95ZXRyYSBUdXJ0bGUgQmVhY2gsIEluYy4KLTAwMDQzMiAgICAgKGJhc2UgMTYpCQlWb3lldHJhIFR1cnRsZSBCZWFjaCwgSW5jLgotCQkJCTE1MCBDbGVhcmJyb29rIFJvYWQsIFN1aXRlIDE2MgotCQkJCUVsbXNmb3JkIE5ZIDEwNTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0zMyAgIChoZXgpCQlDeWJlcmJvYXJkIEEvUwotMDAwNDMzICAgICAoYmFzZSAxNikJCUN5YmVyYm9hcmQgQS9TCi0JCQkJS2xvZXZlcm1hcmtlbiAxMjAKLQkJCQlESy03MTkwIEJpbGx1bmQKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC0wNC0zNCAgIChoZXgpCQlBY2NlbGVudCBTeXN0ZW1zLCBJbmMuCi0wMDA0MzQgICAgIChiYXNlIDE2KQkJQWNjZWxlbnQgU3lzdGVtcywgSW5jLgotCQkJCTI2MjAgUmlkZ2V3b29kIFJkLiwKLQkJCQlTdWl0ZSAzMDAKLQkJCQlBa3JvbiBPSCA0NDMxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMzUgICAoaGV4KQkJQ29tcHRlayBJbnRlcm5hdGlvbmFsLCBJbmMuCi0wMDA0MzUgICAgIChiYXNlIDE2KQkJQ29tcHRlayBJbnRlcm5hdGlvbmFsLCBJbmMuCi0JCQkJMTEgQmVhY29uIFN0LgotCQkJCUJvc3RvbiBNQSAwMjEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtMzYgICAoaGV4KQkJRUxBTnNhdCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDQzNiAgICAgKGJhc2UgMTYpCQlFTEFOc2F0IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCU5vLiAxMSwgTGFuZSAxOSwgUGF0ZWggUm9hZCwKLQkJCQlIc2luY2h1IFRBSVdBTiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC0zNyAgIChoZXgpCQlQb3dpbiBJbmZvcm1hdGlvbiBUZWNobm9sb2d5LCBJbmMuCi0wMDA0MzcgICAgIChiYXNlIDE2KQkJUG93aW4gSW5mb3JtYXRpb24gVGVjaG5vbG9neSwgSW5jLgotCQkJCThGLCBOby4gNzAsIFpob3UtWiBTdC4KLQkJCQkxMTQgTmVpLUh1IFRhaXBlaQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC0zOCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMDQzOCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlEZXBhcnRtZW50IDY4MDAKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMCBCcmFtcHRvbiwgT04KLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMDQtMzkgICAoaGV4KQkJUm9zY28gRW50ZXJ0YWlubWVudCBUZWNobm9sb2d5LCBJbmMuCi0wMDA0MzkgICAgIChiYXNlIDE2KQkJUm9zY28gRW50ZXJ0YWlubWVudCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjE4MSBOVyBGcm9udCBBdmUuCi0JCQkJUG9ydGxhbmQgT1IgOTcyMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTNBICAgKGhleCkJCUludGVsbGlnZW50IFRlbGVjb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNDNBICAgICAoYmFzZSAxNikJCUludGVsbGlnZW50IFRlbGVjb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTE2ODctMiwgU2luaWwtZG9uZwotCQkJCURhZWRvay1ndSwgVGFlam9uCi0JCQkJU09VVEggS09SRUEgMzA2LTIzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC0zQiAgIChoZXgpCQlMYXZhIENvbXB1dGVyIE1mZy4sIEluYy4KLTAwMDQzQiAgICAgKGJhc2UgMTYpCQlMYXZhIENvbXB1dGVyIE1mZy4sIEluYy4KLQkJCQkyIFZ1bGNhbiBTdC4KLQkJCQlFdG9iaWNva2UsIE9udGFyaW8KLQkJCQlDQU5BREEgTTlXLTFMMgotCQkJCUNBTkFEQQotCi0wMC0wNC0zQyAgIChoZXgpCQlTT05PUyBDby4sIEx0ZC4KLTAwMDQzQyAgICAgKGJhc2UgMTYpCQlTT05PUyBDby4sIEx0ZC4KLQkJCQkjNzI1IFB1bmdzYW4gQXB0LiBGYWN0b3J5Ci0JCQkJMTE0MS0yIEJhaWtzZW9rLCBpbHNhbiwgR295YW5nLCBHeWVvbmdnaQotCQkJCVJlcC4gb2YgS09SRUEgWmlwIENvZGU6IDQxMS04MTUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtM0QgICAoaGV4KQkJSU5ERUwgQUcKLTAwMDQzRCAgICAgKGJhc2UgMTYpCQlJTkRFTCBBRwotCQkJCVR1Zml3aXMgMjYKLQkJCQlDSC04MzMyIFJ1c3Npa29uCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wNC0zRSAgIChoZXgpCQlUZWxlbmNvbW0KLTAwMDQzRSAgICAgKGJhc2UgMTYpCQlUZWxlbmNvbW0KLQkJCQkyNTUxIFdhbHNoIEF2ZW51ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC0zRiAgIChoZXgpCQlFU1RlZW0gV2lyZWxlc3MgTW9kZW1zLCBJbmMKLTAwMDQzRiAgICAgKGJhc2UgMTYpCQlFU1RlZW0gV2lyZWxlc3MgTW9kZW1zLCBJbmMKLQkJCQk0MTUgTi4gUXVheSBTdC4sIFN1aXRlIDQKLQkJCQlLZW5uZXdpY2sgV0EgOTkzMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTQwICAgKGhleCkJCWN5YmVyUElYSUUsIEluYy4KLTAwMDQ0MCAgICAgKGJhc2UgMTYpCQljeWJlclBJWElFLCBJbmMuCi0JCQkJNjggRS4gV2Fja2VyIFBsYWNlLAotCQkJCVN1aXRlIDYwMAotCQkJCUNoaWNhZ28gSUwgNjA2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTQxICAgKGhleCkJCUhhbGYgRG9tZSBTeXN0ZW1zLCBJbmMuCi0wMDA0NDEgICAgIChiYXNlIDE2KQkJSGFsZiBEb21lIFN5c3RlbXMsIEluYy4KLQkJCQkxNTUgQi0xIE1vZmZldCBQYXJrIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC00MiAgIChoZXgpCQlOQUNUCi0wMDA0NDIgICAgIChiYXNlIDE2KQkJTkFDVAotCQkJCTE5MSBXLiA1MjAwIE4uCi0JCQkJUHJvdm8gVVQgODQ2MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTQzICAgKGhleCkJCUFnaWxlbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA0NDMgICAgIChiYXNlIDE2KQkJQWdpbGVudCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk1MzAxIFN0ZXZlbnMgQ3JlZWsgQm91bGV2YXJkCi0JCQkJTWFpbHN0b3AgNTRMLVNRCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTQ0ICAgKGhleCkJCVdlc3Rlcm4gTXVsdGlwbGV4IENvcnBvcmF0aW9uCi0wMDA0NDQgICAgIChiYXNlIDE2KQkJV2VzdGVybiBNdWx0aXBsZXggQ29ycG9yYXRpb24KLQkJCQkxMTk2IEJvcnJlZ2FzIEF2ZW51ZQotCQkJCVN1aXRlIDUwMAotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNDUgICAoaGV4KQkJTE1TIFNrYWxhciBJbnN0cnVtZW50cyBHbWJICi0wMDA0NDUgICAgIChiYXNlIDE2KQkJTE1TIFNrYWxhciBJbnN0cnVtZW50cyBHbWJICi0JCQkJV2lsbGktRWljaGxlci1TdHIgMTEKLQkJCQlELTM3MDc5IEdvZXR0aW5nZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC00NiAgIChoZXgpCQlDWVpFTlRFQ0ggQ28uLCBMdGQuCi0wMDA0NDYgICAgIChiYXNlIDE2KQkJQ1laRU5URUNIIENvLiwgTHRkLgotCQkJCTYwMSBFdW5reWVvbmcgQi9EIDE0MS0zMSwKLQkJCQlTYW1zdW5nLWRvbmcsIEdhbmduYW0tZ3UsIFNlb3VsLAotCQkJCTEzNS04NzYgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtNDcgICAoaGV4KQkJQWNyb3dhdmUgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDQ0NyAgICAgKGJhc2UgMTYpCQlBY3Jvd2F2ZSBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCU1hcnUgQi9EIDg2LTYsIE5vbmh5dW4tRG9uZwotCQkJCUdhbmduYW0tZ3UsIFNlb3VsCi0JCQkJS09SRUEgemlwOiAxMzUtODE4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTQ4ICAgKGhleCkJCVBvbGFyb2lkIENvcnBvcmF0aW9uCi0wMDA0NDggICAgIChiYXNlIDE2KQkJUG9sYXJvaWQgQ29ycG9yYXRpb24KLQkJCQkzMDAgQmFrZXIgQXZlbnVlCi0JCQkJQ29uY29yZCBNQSAwMTc0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNDkgICAoaGV4KQkJTWFwbGV0cmVlIE5ldHdvcmtzCi0wMDA0NDkgICAgIChiYXNlIDE2KQkJTWFwbGV0cmVlIE5ldHdvcmtzCi0JCQkJMzE1IE5vcndvb2QgUGFyayBTb3V0aAotCQkJCU5vcndvb2QgTUEgMDIwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTRBICAgKGhleCkJCWlQb2xpY3kgTmV0d29ya3MsIEluYy4KLTAwMDQ0QSAgICAgKGJhc2UgMTYpCQlpUG9saWN5IE5ldHdvcmtzLCBJbmMuCi0JCQkJNDc0NjcgRnJlbW9udCBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTRCICAgKGhleCkJCU5WSURJQQotMDAwNDRCICAgICAoYmFzZSAxNikJCU5WSURJQQotCQkJCTM1MzUgTW9ucm9lIFN0LgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC00QyAgIChoZXgpCQlKRU5PUFRJSwotMDAwNDRDICAgICAoYmFzZSAxNikJCUpFTk9QVElLCi0JCQkJTGFzZXIsIE9wdGlrLCBTeXN0ZW1lIEdtYkgKLQkJCQlFaW5rYXVmLCBQcnVzc2luZ3N0ci4gNDEgRC0wNzc0NSBKZW5hCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDQtNEQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNDREICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTRFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDQ0RSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC00RiAgIChoZXgpCQlMZXVraGFyZHQgU3lzdGVtZWxla3Ryb25payBHbWJICi0wMDA0NEYgICAgIChiYXNlIDE2KQkJTGV1a2hhcmR0IFN5c3RlbWVsZWt0cm9uaWsgR21iSAotCQkJCVJ1ZG9sZi1EaWVzZWwtU3RyLiAxNwotCQkJCTc4NTMyIFR1dHRsaW5nZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC01MCAgIChoZXgpCQlETUQgQ29tcHV0ZXJzIFNSTAotMDAwNDUwICAgICAoYmFzZSAxNikJCURNRCBDb21wdXRlcnMgU1JMCi0JCQkJVmlhIE1vbnZpc28sIDE0Ci0JCQkJMTAwOTAgVmlsbGFyYmFzc2UgKFRvKQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtMDQtNTEgICAoaGV4KQkJTWVkcmFkLCBJbmMuCi0wMDA0NTEgICAgIChiYXNlIDE2KQkJTWVkcmFkLCBJbmMuCi0JCQkJT25lIE1lZHJhZCBEcml2ZQotCQkJCUluZGlhbm9sYSBQQSAxNTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNTIgICAoaGV4KQkJUm9ja2V0TG9naXgsIEluYy4KLTAwMDQ1MiAgICAgKGJhc2UgMTYpCQlSb2NrZXRMb2dpeCwgSW5jLgotCQkJCTY1MDQgSW50ZXJuYXRpb25hbCBQYXJrd2F5Ci0JCQkJU3VpdGUgMTIwMAotCQkJCVBsYW5vIFRYIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC01MyAgIChoZXgpCQlZb3R0YVlvdHRhLCBJbmMuCi0wMDA0NTMgICAgIChiYXNlIDE2KQkJWW90dGFZb3R0YSwgSW5jLgotCQkJCTYwMjAtIDEwNCBTdHJlZXQKLQkJCQlFZG1vbnRvbiwgQUIgIFQ2SCA1UzQKLQkJCQlDQU5BREEKLQotMDAtMDQtNTQgICAoaGV4KQkJUXVhZHJpZ2EgVUsKLTAwMDQ1NCAgICAgKGJhc2UgMTYpCQlRdWFkcmlnYSBVSwotCQkJCUJhaXJkIEhvdXNlCi0JCQkJQXJsaW5ndG9uIEJ1c2luZXNzIFBhcmsgVGhlYWxlIFJlYWRpbmcgUgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC01NSAgIChoZXgpCQlBTlRBUkEubmV0Ci0wMDA0NTUgICAgIChiYXNlIDE2KQkJQU5UQVJBLm5ldAotCQkJCTc0NyBDYW1kZW4gQXZlLgotCQkJCVN1aXRlIEEKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNTYgICAoaGV4KQkJQ2FtYml1bSBOZXR3b3JrcyBMaW1pdGVkCi0wMDA0NTYgICAgIChiYXNlIDE2KQkJQ2FtYml1bSBOZXR3b3JrcyBMaW1pdGVkCi0JCQkJVW5pdCBCMiwgTGluaGF5IEJ1c2luZXNzIFBhcmssCi0JCQkJRWFzdGVybiBSb2FkLAotCQkJCUFzaGJ1cnRvbiBEZXZvbiBUUTEzIDdVUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA0LTU3ICAgKGhleCkJCVVuaXZlcnNhbCBBY2Nlc3MgVGVjaG5vbG9neSwgSW5jLgotMDAwNDU3ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBBY2Nlc3MgVGVjaG5vbG9neSwgSW5jLgotCQkJCTIgRmwuLCBOby4gNSwgQWxsZXkgMjIsCi0JCQkJTGFuZSA1MTMsIEp1aSBLdWFuZyBSb2FkLAotCQkJCU5laSBIdSBUYWlwZWksIFRBSVdBTiAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTU4ICAgKGhleCkJCUZ1c2lvbiBYIENvLiwgTHRkLgotMDAwNDU4ICAgICAoYmFzZSAxNikJCUZ1c2lvbiBYIENvLiwgTHRkLgotCQkJCSM5MDUgSGFuc29sIFRlY2hubyBUb3duCi0JCQkJMTYtMSBEYW5nLUp1bmcgRG9uZyBLdW4tUG8gS3l1bmctS2kgZG8gSwotCQkJCVppcCA0MzUtMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LTU5ICAgKGhleCkJCVZlcmlzdGFyIENvcnBvcmF0aW9uCi0wMDA0NTkgICAgIChiYXNlIDE2KQkJVmVyaXN0YXIgQ29ycG9yYXRpb24KLQkJCQk3MjcgQWxsc3RvbiBXYXkKLQkJCQlCZXJrZWxleSBDQSA5NDcxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNUEgICAoaGV4KQkJVGhlIExpbmtzeXMgR3JvdXAsIEluYy4KLTAwMDQ1QSAgICAgKGJhc2UgMTYpCQlUaGUgTGlua3N5cyBHcm91cCwgSW5jLgotCQkJCTE3NDAxIEFybXN0cm9uZyBBdmUuCi0JCQkJSXJ2aW5lIENBIDkyNjE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC01QiAgIChoZXgpCQlUZWNoc2FuIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwNDVCICAgICAoYmFzZSAxNikJCVRlY2hzYW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJTm9ydGggV2luZwotCQkJCTQzIEhpZ2ggU3RyZWV0IEZhcmVoYW0sIEhhbnRzIFAwMTYgN0JRCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC01QyAgIChoZXgpCQlNb2Jpd2F2ZSBQdGUgTHRkCi0wMDA0NUMgICAgIChiYXNlIDE2KQkJTW9iaXdhdmUgUHRlIEx0ZAotCQkJCUJsayAxNiwgS2FsbGFuZyBQbGFjZQotCQkJCSMwNy0wMS8wNAotCQkJCTMzOTE1NgotCQkJCVNJTkdBUE9SRQotCi0wMC0wNC01RCAgIChoZXgpCQlCRUtBIEVsZWt0cm9uaWsKLTAwMDQ1RCAgICAgKGJhc2UgMTYpCQlCRUtBIEVsZWt0cm9uaWsKLQkJCQlTaWVtZW5zdHJhc3NlIDI5Ci0JCQkJRXJmdHN0YWR0IDUwMzc0Ci0JCQkJR0VSTUFOWQotCi0wMC0wNC01RSAgIChoZXgpCQlQb2x5VHJheCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IEFHCi0wMDA0NUUgICAgIChiYXNlIDE2KQkJUG9seVRyYXggSW5mb3JtYXRpb24gVGVjaG5vbG9neSBBRwotCQkJCU1hcnRpbi1Lb2xsYXIgLSBTdHIuIDUKLQkJCQlELTgxODI5IE11bmNoZW4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC01RiAgIChoZXgpCQlFdmFsdWUgVGVjaG5vbG9neSwgSW5jLgotMDAwNDVGICAgICAoYmFzZSAxNikJCUV2YWx1ZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNUYtNywgTm8uIDEzMCwgQ2hpZW4gS2FuZyBSb2FkLAotCQkJCUNodW5nIEhvIENpdHksIFRhaXBlaQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC02MCAgIChoZXgpCQlLbmlsaW5rIFRlY2hub2xvZ3ksIEluYy4KLTAwMDQ2MCAgICAgKGJhc2UgMTYpCQlLbmlsaW5rIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxMEYsICM5NiwgSHNpbiBUYWkgV3UgUmQuLAotCQkJCVNlYy4gMSwgSHNpIENoaWgsIFRhaXBlaSBIc2llbiwKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTYxICAgKGhleCkJCUVQT1ggQ29tcHV0ZXIgQ28uLCBMdGQuCi0wMDA0NjEgICAgIChiYXNlIDE2KQkJRVBPWCBDb21wdXRlciBDby4sIEx0ZC4KLQkJCQkxMUYsICMzNDYsIENodW5nIFNhbiBSZC4KLQkJCQlTZWMuIDIsIENodW5nIEhvIENpdHksIFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtNjIgICAoaGV4KQkJREFLT1MgRGF0YSAmIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0wMDA0NjIgICAgIChiYXNlIDE2KQkJREFLT1MgRGF0YSAmIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0JCQkJMm5kIEZsb29yIEJldGhlbCBCdWlsZGluZyAzMjQtMQotCQkJCVlhbmdqYWUtZG9uZyBTZW9jaG8tZ3UgU2VvdWwgUi5PLksuCi0JCQkJWmlwIGNvZGU6IDEzNy0xMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTYzICAgKGhleCkJCUJvc2NoIFNlY3VyaXR5IFN5c3RlbXMKLTAwMDQ2MyAgICAgKGJhc2UgMTYpCQlCb3NjaCBTZWN1cml0eSBTeXN0ZW1zCi0JCQkJODUwIEdyZWVuZmllbGQgUm9hZAotCQkJCUxhbmNhc3RlciBQQSAxNzYwMS01ODc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC02NCAgIChoZXgpCQlGYW50YXNtYSBOZXR3b3JrcywgSW5jLgotMDAwNDY0ICAgICAoYmFzZSAxNikJCUZhbnRhc21hIE5ldHdvcmtzLCBJbmMuCi0JCQkJMzI1MCBBc2ggU3RyZWV0Ci0JCQkJUGFsbyBBbHRvIENBIDk0MzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC02NSAgIChoZXgpCQlpLnMudCBpc2RuLXN1cHBvcnQgdGVjaG5payBHbWJICi0wMDA0NjUgICAgIChiYXNlIDE2KQkJaS5zLnQgaXNkbi1zdXBwb3J0IHRlY2huaWsgR21iSAotCQkJCVJoZWluIFN0cmFzc2UgN0UKLQkJCQkxNDUxMyBUZWx0b3cKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0wNC02NiAgIChoZXgpCQlBUk1JVEVMIENvLgotMDAwNDY2ICAgICAoYmFzZSAxNikJCUFSTUlURUwgQ28uCi0JCQkJRjUsIERvbWFuIFBsYXphIDM1My00LAotCQkJCVlhdGFwLURvbmcsIFB1ZGFuZy1rdSwgU2VvbmctTmFtZSBTaSwgS3kKLQkJCQlSZXB1YmxpYyBvZiBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC02NyAgIChoZXgpCQlXdWhhbiBSZXNlYXJjaCBJbnN0aXR1dGUgb2YgTUlJCi0wMDA0NjcgICAgIChiYXNlIDE2KQkJV3VoYW4gUmVzZWFyY2ggSW5zdGl0dXRlIG9mIE1JSQotCQkJCTg4IFlvdWtleXVhbiBSb2FkLAotCQkJCUhhbmdzaGFuIERpc3RyaWN0LFd1aGFuLCBIdWJlaSBQcm92aW5jZSwKLQkJCQk0MzAwNzQgNDMwMDc0IFAuUi5DSElOQQotCQkJCUNISU5BCi0KLTAwLTA0LTY4ICAgKGhleCkJCVZpdml0eSwgSW5jLgotMDAwNDY4ICAgICAoYmFzZSAxNikJCVZpdml0eSwgSW5jLgotCQkJCTMzNjAgTWl0Y2hlbGwgTGFuZQotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTY5ICAgKGhleCkJCUlubm9jb20sIEluYy4KLTAwMDQ2OSAgICAgKGJhc2UgMTYpCQlJbm5vY29tLCBJbmMuCi0JCQkJNjU1LTIgTmFlYmFsc2FuLURvbmcKLQkJCQlLYW5nc2VvLUd1LCBTZW91bAotCQkJCTE1Ny0yODAgMTU3LTI4MCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC02QSAgIChoZXgpCQlOYXZpbmkgTmV0d29ya3MKLTAwMDQ2QSAgICAgKGJhc2UgMTYpCQlOYXZpbmkgTmV0d29ya3MKLQkJCQkzNjA1IEUuIFBsYW5vIFBrd3ksCi0JCQkJU3VpdGUgNDAwLAotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC02QiAgIChoZXgpCQlQYWxtIFdpcmVsZXNzLCBJbmMuCi0wMDA0NkIgICAgIChiYXNlIDE2KQkJUGFsbSBXaXJlbGVzcywgSW5jLgotCQkJCTQ4OTMzIFdhcm0gU3ByaW5ncyBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTZDICAgKGhleCkJCUN5YmVyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA0NkMgICAgIChiYXNlIDE2KQkJQ3liZXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxLTQ1IFllbyBXb2wtRG9uZwotCQkJCU9oIEp1bmctRW0sIEJ1IENoZW9uIENpdHksCi0JCQkJS3llb25nIEdpLURvIEt5ZW9uZyBHaS1EbyBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC02RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0NkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNkUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNDZFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTZGICAgKGhleCkJCURpZ2l0ZWwgUy9BIEluZHVzdHJpYSBFbGV0cm9uaWNhCi0wMDA0NkYgICAgIChiYXNlIDE2KQkJRGlnaXRlbCBTL0EgSW5kdXN0cmlhIEVsZXRyb25pY2EKLQkJCQlSLiBEb3V0b3IgSm9hbyBJZ25hY2lvLCAxMTY1Ci0JCQkJUG9ydG8gQWxlZ3JlLCBSUy4gQnJhemlsCi0JCQkJWmlwOiA5MDIzMC4xODEKLQkJCQlCUkFaSUwKLQotMDAtMDQtNzAgICAoaGV4KQkJaXBVbnBsdWdnZWQgQUIKLTAwMDQ3MCAgICAgKGJhc2UgMTYpCQlpcFVucGx1Z2dlZCBBQgotCQkJCUJveCAxMDE2MAotCQkJCVNFIDEyMSAyOCBTdG9ja2hvbG0tR2xvYnNlbgotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC0wNC03MSAgIChoZXgpCQlJUHJhZAotMDAwNDcxICAgICAoYmFzZSAxNikJCUlQcmFkCi0JCQkJMjQgUmFvdWwgV2FsbGVuYmVyZyBTdC4KLQkJCQlUZWwtQXZpdiA2OTcxOQotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wNC03MiAgIChoZXgpCQlUZWxlbHlueCwgSW5jLgotMDAwNDcyICAgICAoYmFzZSAxNikJCVRlbGVseW54LCBJbmMuCi0JCQkJM0YtMSwgNjYgTmFua2FuIFJkLiwKLQkJCQlTZWMuIDIgTHUgQ2h1LCBUYW8tWXVhbgotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtNzMgICAoaGV4KQkJUGhvdG9uZXggQ29ycG9yYXRpb24KLTAwMDQ3MyAgICAgKGJhc2UgMTYpCQlQaG90b25leCBDb3Jwb3JhdGlvbgotCQkJCThDIFByZXN0b24gQ291cnQKLQkJCQlCZWRmb3JkIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC03NCAgIChoZXgpCQlMRUdSQU5ECi0wMDA0NzQgICAgIChiYXNlIDE2KQkJTEVHUkFORAotCQkJCTE0NSBBdmVudWUgRGUgTGF0dHJlCi0JCQkJNTcwNDUgTGltb2dlcwotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC0wNC03NSAgIChoZXgpCQkzIENvbSBDb3Jwb3JhdGlvbgotMDAwNDc1ICAgICAoYmFzZSAxNikJCTMgQ29tIENvcnBvcmF0aW9uCi0JCQkJNTQwMCBCYXlmcm9udCBQbGF6YQotCQkJCU1TOiAgNDIyMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC03NiAgIChoZXgpCQkzIENvbSBDb3Jwb3JhdGlvbgotMDAwNDc2ICAgICAoYmFzZSAxNikJCTMgQ29tIENvcnBvcmF0aW9uCi0JCQkJNTQwMCBCYXlmcm9udCBQbGF6YQotCQkJCU1TOiAgNDIyMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC03NyAgIChoZXgpCQlTY2FsYW50IFN5c3RlbXMsIEluYy4KLTAwMDQ3NyAgICAgKGJhc2UgMTYpCQlTY2FsYW50IFN5c3RlbXMsIEluYy4KLQkJCQkyMDQwIE1hcnRpbiBBdmVudWUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtNzggICAoaGV4KQkJRy4gU3RhciBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDA0NzggICAgIChiYXNlIDE2KQkJRy4gU3RhciBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNHRoIEZsb29yLCBOby4gMTE4LCBTZWN0b3IgMgotCQkJCUNodW5nIEhzaWFvIEVhc3QgUm9hZAotCQkJCVRhaXBlaSBDaXR5IFRhaXBlaSBDaXR5IFRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtNzkgICAoaGV4KQkJUmFkaXVzIENvLiwgTHRkLgotMDAwNDc5ICAgICAoYmFzZSAxNikJCVJhZGl1cyBDby4sIEx0ZC4KLQkJCQkxLTQ4LTExLCBJdGFiYXNoaQotCQkJCVJvamUgQmxkZy4sIE5vLiAzLCA2RiBJdGFiYXNoaS1rdSwgVG9reW8KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LTdBICAgKGhleCkJCUFYWEVTU0lUIEFTQQotMDAwNDdBICAgICAoYmFzZSAxNikJCUFYWEVTU0lUIEFTQQotCQkJCUFYWEVTU0lUIEFTQSBIQUxERU4KLQkJCQlCb3ggMTA1MyAxNzg3IEJlcmcgaSBPc3Rmb2xkCi0JCQkJTk9SV0FZCi0JCQkJTk9SV0FZCi0KLTAwLTA0LTdCICAgKGhleCkJCVNjaGx1bWJlcmdlcgotMDAwNDdCICAgICAoYmFzZSAxNikJCVNjaGx1bWJlcmdlcgotCQkJCVN1Z2FyIExhbmQgUHJvZHVjdCBDZW50ZXIKLQkJCQkxMTAgU2NobHVtYmVyZ2VyIERyaXZlCi0JCQkJU3VnYXIgTGFuZCBUWCA3NzQ3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtN0MgICAoaGV4KQkJU2tpZGF0YSBBRwotMDAwNDdDICAgICAoYmFzZSAxNikJCVNraWRhdGEgQUcKLQkJCQlULTY5NzU1MyBVbnRlcnNiZXJnc3RyLiA0MAotCQkJCUEtNTA4MyBHYXJ0ZW5hdQotCQkJCUFVU1RSSUEKLQkJCQlBVVNUUklBCi0KLTAwLTA0LTdEICAgKGhleCkJCVBlbGNvCi0wMDA0N0QgICAgIChiYXNlIDE2KQkJUGVsY28KLQkJCQkzNTAwIFBlbGNvIFdheQotCQkJCUNsb3ZpcyBDQSA5MzYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtN0UgICAoaGV4KQkJU2lxdXJhIEIuVi4KLTAwMDQ3RSAgICAgKGJhc2UgMTYpCQlTaXF1cmEgQi5WLgotCQkJCVp1aWRlbGlqayBIYWxmcm9uZCA0Ci0JCQkJMjgwMSBERCBHb3VkYQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTA0LTdGICAgKGhleCkJCUNoci4gTWF5ciBHbWJIICYgQ28uIEtHCi0wMDA0N0YgICAgIChiYXNlIDE2KQkJQ2hyLiBNYXlyIEdtYkggJiBDby4gS0cKLQkJCQlFaWNoZW5zdHJhc3NlIDEKLQkJCQlELTg3NjY1IE1hdWVyc3RldHRlbgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTgwICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0wMDA0ODAgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLQkJCQkxNzQ1IFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTE2NC05MTAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04MSAgIChoZXgpCQlFY29ub2xpdGUgQ29udHJvbCBQcm9kdWN0cywgSW5jLgotMDAwNDgxICAgICAoYmFzZSAxNikJCUVjb25vbGl0ZSBDb250cm9sIFByb2R1Y3RzLCBJbmMuCi0JCQkJMzM2MCBFLiBMYSBQYWxtYSBBdmUuCi0JCQkJQW5haGVpbSBDQSA5MjgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtODIgICAoaGV4KQkJTWVkaWFsb2dpYyBDb3JwLgotMDAwNDgyICAgICAoYmFzZSAxNikJCU1lZGlhbG9naWMgQ29ycC4KLQkJCQkwLTMsIFRveWFtYWtlbi1TYW5neW91Ci0JCQkJS291ZG9rYS1DZW50ZXIsIDUsIE9mZmljZSBQYXJrLCBUYWthb2thLQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMDQtODMgICAoaGV4KQkJRGVsdHJvbiBUZWNobm9sb2d5LCBJbmMuCi0wMDA0ODMgICAgIChiYXNlIDE2KQkJRGVsdHJvbiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJOEYtMywgTm8uIDEyNSwgTGFuZSAyMzUKLQkJCQlQYW8tQ2hpYW8gUmQuLCBIc2ludGllbiwKLQkJCQlUYWlwZWkgVEFJV0FOLCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LTg0ICAgKGhleCkJCUFtYW5uIEdtYkgKLTAwMDQ4NCAgICAgKGJhc2UgMTYpCQlBbWFubiBHbWJICi0JCQkJVW50ZXJhbmdlciA2Ci0JCQkJRC04MjA0MSBPYmVyaGFjaGluZwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTg1ICAgKGhleCkJCVBpY29MaWdodAotMDAwNDg1ICAgICAoYmFzZSAxNikJCVBpY29MaWdodAotCQkJCTQ2NjUgTmF1dGlsdXMgQ291cnQgU291dGgKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04NiAgIChoZXgpCQlJVFRDLCBVbml2ZXJzaXR5IG9mIEthbnNhcwotMDAwNDg2ICAgICAoYmFzZSAxNikJCUlUVEMsIFVuaXZlcnNpdHkgb2YgS2Fuc2FzCi0JCQkJMjMzNSBJcnZpbmcgSGlsbCBSZC4KLQkJCQlMYXdyZW5jZSBLUyA2NjA0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtODcgICAoaGV4KQkJQ29nZW5jeSBTZW1pY29uZHVjdG9yLCBJbmMuCi0wMDA0ODcgICAgIChiYXNlIDE2KQkJQ29nZW5jeSBTZW1pY29uZHVjdG9yLCBJbmMuCi0JCQkJMzYyIFRlcnJ5IEZveCBEcml2ZSwgU3VpdGUgMjEwCi0JCQkJS2FuYXRhLCBPTiwgSzJLIDJQNQotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wNC04OCAgIChoZXgpCQlFdXJvdGhlcm0gQ29udHJvbHMKLTAwMDQ4OCAgICAgKGJhc2UgMTYpCQlFdXJvdGhlcm0gQ29udHJvbHMKLQkJCQk3NDFGIE1pbGxlciBEcml2ZQotCQkJCUxlc3NidXJnIFZBIDIwMTc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04OSAgIChoZXgpCQlZQUZPIE5ldHdvcmtzLCBJbmMuCi0wMDA0ODkgICAgIChiYXNlIDE2KQkJWUFGTyBOZXR3b3JrcywgSW5jLgotCQkJCTEzNDBGIENoYXJ3b29kIFJkLgotCQkJCUhhbm92ZXIgTUQgMjEwNzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LThBICAgKGhleCkJCVRlbWlhIFZlcnRyaWVicyBHbWJICi0wMDA0OEEgICAgIChiYXNlIDE2KQkJVGVtaWEgVmVydHJpZWJzIEdtYkgKLQkJCQlMYW5kc2JlcmdlcnN0ci4gMzIwCi0JCQkJRC04MDY4NyBNdW5pY2gKLQkJCQlHRVJNQU5ZCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04QiAgIChoZXgpCQlQb3Njb24gQ29ycG9yYXRpb24KLTAwMDQ4QiAgICAgKGJhc2UgMTYpCQlQb3Njb24gQ29ycG9yYXRpb24KLQkJCQkjNjA2IEhvLURvbmcsIE5hbSBHdSwKLQkJCQlQb2hhbmcgQ2l0eSwgS3l1bmdidWssCi0JCQkJU09VVEggS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtOEMgICAoaGV4KQkJTmF5bmEgTmV0d29ya3MsIEluYy4KLTAwMDQ4QyAgICAgKGJhc2UgMTYpCQlOYXluYSBOZXR3b3JrcywgSW5jLgotCQkJCTE1NyBUb3BheiBTdC4KLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOEQgICAoaGV4KQkJVG9uZSBDb21tYW5kZXIgU3lzdGVtcywgSW5jLgotMDAwNDhEICAgICAoYmFzZSAxNikJCVRvbmUgQ29tbWFuZGVyIFN5c3RlbXMsIEluYy4KLQkJCQkxMTYwOSA0OXRoIFBsYWNlIFdlc3QKLQkJCQlNdWtpbHRlbyBXQSA5ODI3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOEUgICAoaGV4KQkJT2htIFRlY2ggTGFicywgSW5jLgotMDAwNDhFICAgICAoYmFzZSAxNikJCU9obSBUZWNoIExhYnMsIEluYy4KLQkJCQkxNDEgTGFuemEgQXZlLiwgQi0xMgotCQkJCUdhcmZpZWxkIE5KIDA3MDI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC04RiAgIChoZXgpCQlURCBTeXN0ZW1zIENvcnBvcmF0aW9uCi0wMDA0OEYgICAgIChiYXNlIDE2KQkJVEQgU3lzdGVtcyBDb3Jwb3JhdGlvbgotCQkJCTEwMCBCZWFyZm9vdCBSZC4KLQkJCQk2NCBPbnRhcmlvIERyaXZlCi0JCQkJSHVkc29uIE1BIDAxNzQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC05MCAgIChoZXgpCQlPcHRpY2FsIEFjY2VzcwotMDAwNDkwICAgICAoYmFzZSAxNikJCU9wdGljYWwgQWNjZXNzCi0JCQkJUC5PLiBCb3ggMTE0Ci0JCQkJWW9rbmVhbSwgMjA2OTIKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDQtOTEgICAoaGV4KQkJVGVjaG5vdmlzaW9uLCBJbmMuCi0wMDA0OTEgICAgIChiYXNlIDE2KQkJVGVjaG5vdmlzaW9uLCBJbmMuCi0JCQkJNTE1NSBTcGVjdHJ1bSBXYXksIFVuaXQgIzMxCi0JCQkJTWlzc2lzc2F1Z2EsIE9udGFyaW8KLQkJCQlMNFcgNUExIENBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wNC05MiAgIChoZXgpCQlIaXZlIEludGVybmV0LCBMdGQuCi0wMDA0OTIgICAgIChiYXNlIDE2KQkJSGl2ZSBJbnRlcm5ldCwgTHRkLgotCQkJCVVuaXQgMiwgQ2h1cmNoIFZpZXcgQnVzaW5lc3MgQ2VudHJlCi0JCQkJTG91dGggUm9hZAotCQkJCUJpbmJyb29rIE1hcmtldCBSYXNlbiwgTGluY29sbnNoaXJlIExOOCA2QlkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNC05MyAgIChoZXgpCQlUc2luZ2h1YSBVbmlzcGxlbmRvdXIgQ28uLCBMdGQuCi0wMDA0OTMgICAgIChiYXNlIDE2KQkJVHNpbmdodWEgVW5pc3BsZW5kb3VyIENvLiwgTHRkLgotCQkJCVRoLVVuaXMgQnVpbGRpbmcgVHNpbmdodWEKLQkJCQlVbml2ZXJzaXR5LCBCZWppbmcgMTAwMDg0Ci0JCQkJUC5SLiBDSElOQQotCQkJCUNISU5BCi0KLTAwLTA0LTk0ICAgKGhleCkJCUJyZWV6ZWNvbSwgTHRkLgotMDAwNDk0ICAgICAoYmFzZSAxNikJCUJyZWV6ZWNvbSwgTHRkLgotCQkJCUF0aWRpbSBUZWNobm9sb2d5IFBhcmsKLQkJCQlCbGRnLiAxLCBQLk8uQi4gMTMxMzkgVGVsLUF2aXYgNjExMzEKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDQtOTUgICAoaGV4KQkJVGVqYXMgTmV0d29ya3MgSW5kaWEgTGltaXRlZAotMDAwNDk1ICAgICAoYmFzZSAxNikJCVRlamFzIE5ldHdvcmtzIEluZGlhIExpbWl0ZWQKLQkJCQkjNTgsIDFzdCBNYWluIFJvYWQsIEouUC4gTmFnYXIsIAotCQkJCTNyZCBQaGFzZSwgS2FybmF0YWthCi0JCQkJQmFuZ2Fsb3JlICA1NjAwNzggCi0JCQkJSU5ESUEKLQotMDAtMDQtOTYgICAoaGV4KQkJRXh0cmVtZSBOZXR3b3JrcwotMDAwNDk2ICAgICAoYmFzZSAxNikJCUV4dHJlbWUgTmV0d29ya3MKLQkJCQkzNTg1IE1vbnJvZSBTdC4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtOTcgICAoaGV4KQkJTWFjcm9TeXN0ZW0gRGlnaXRhbCBWaWRlbyBBRwotMDAwNDk3ICAgICAoYmFzZSAxNikJCU1hY3JvU3lzdGVtIERpZ2l0YWwgVmlkZW8gQUcKLQkJCQlTY2hvZWxsaW5nZXIgRmVsZCAyOAotCQkJCTU4MzAwIFdldHRlciwgRi5SLgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA0LTk4ICAgKGhleCkJCU1haGkgTmV0d29ya3MKLTAwMDQ5OCAgICAgKGJhc2UgMTYpCQlNYWhpIE5ldHdvcmtzCi0JCQkJMTAzOSBOLiBNY0Rvd2VsbCBCbHZkLgotCQkJCVBldGFsdW1hIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC05OSAgIChoZXgpCQlDaGlubyBDb3Jwb3JhdGlvbgotMDAwNDk5ICAgICAoYmFzZSAxNikJCUNoaW5vIENvcnBvcmF0aW9uCi0JCQkJMSBNb3JpLCBGdWppb2thIENpdHksCi0JCQkJR3VubWEgUHJlZi4gSkFQQU4KLQkJCQlaaXA6IDM3NS04NTA1Ci0JCQkJSkFQQU4KLQotMDAtMDQtOUEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNDlBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LTlCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDQ5QiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC05QyAgIChoZXgpCQlTdXJnaWVudCBOZXR3b3JrcywgSW5jLgotMDAwNDlDICAgICAoYmFzZSAxNikJCVN1cmdpZW50IE5ldHdvcmtzLCBJbmMuCi0JCQkJMzUyMCBFeGVjdXRpdmUgQ2VudGVyIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJQXVzdGluIFRYIDc4NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC05RCAgIChoZXgpCQlJcGFuZW1hIFRlY2hub2xvZ2llcwotMDAwNDlEICAgICAoYmFzZSAxNikJCUlwYW5lbWEgVGVjaG5vbG9naWVzCi0JCQkJMjgsIFJ1ZSBEZSBMYSBSZWRvdXRlCi0JCQkJOTIyNjAgRm9udGVuYXkgQXV4IFJvc2VzCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTA0LTlFICAgKGhleCkJCVdpcmVsaW5rIENvLiwgTHRkLgotMDAwNDlFICAgICAoYmFzZSAxNikJCVdpcmVsaW5rIENvLiwgTHRkLgotCQkJCTExRiwgR2Vvc2VvbmcgQi9EIDU0MSwgRG93aGEtRG9uZywKLQkJCQlNYXBvLUd1LCBTZW91bCwgMTIxLTcwMSwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC05RiAgIChoZXgpCQlGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvcgotMDAwNDlGICAgICAoYmFzZSAxNikJCUZyZWVzY2FsZSBTZW1pY29uZHVjdG9yCi0JCQkJNzcwMCBXZXN0IFBhcm1lciBMYW5lCi0JCQkJTUQgUEw1OQotCQkJCUF1c3RpbiBUWCA3ODcyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQTAgICAoaGV4KQkJVmVyaXR5IEluc3RydW1lbnRzLCBJbmMuCi0wMDA0QTAgICAgIChiYXNlIDE2KQkJVmVyaXR5IEluc3RydW1lbnRzLCBJbmMuCi0JCQkJMjkwMSBFaXNlbmhvd2VyIFN0LgotCQkJCUNhcnJvbGx0b24gVFggNzUwMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUExICAgKGhleCkJCVBhdGh3YXkgQ29ubmVjdGl2aXR5Ci0wMDA0QTEgICAgIChiYXNlIDE2KQkJUGF0aHdheSBDb25uZWN0aXZpdHkKLQkJCQkxNDM5LTE3IEF2ZW51ZSBTRQotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMkcgMUo5Ci0JCQkJQ0FOQURBCi0KLTAwLTA0LUEyICAgKGhleCkJCUwuUy5JLiBKYXBhbiBDby4sIEx0ZC4KLTAwMDRBMiAgICAgKGJhc2UgMTYpCQlMLlMuSS4gSmFwYW4gQ28uLCBMdGQuCi0JCQkJMS04LTE0IFNlbmRhZ2F5YSBTaGlidXlhLUt1Ci0JCQkJVG9reW8gMTUxLTAwNTEgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC1BMyAgIChoZXgpCQlNaWNyb2NoaXAgVGVjaG5vbG9neSwgSW5jLgotMDAwNEEzICAgICAoYmFzZSAxNikJCU1pY3JvY2hpcCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjM1NSBXLiBDaGFuZGxlciBCbHZkLgotCQkJCUNoYW5kbGVyIEFaIDg1MjI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1BNCAgIChoZXgpCQlOZXRFbmFibGVkLCBJbmMuCi0wMDA0QTQgICAgIChiYXNlIDE2KQkJTmV0RW5hYmxlZCwgSW5jLgotCQkJCTEyNzUgS2lubmVhciBSZC4KLQkJCQlDb2x1bWJ1cyBPSCA0MzIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQTUgICAoaGV4KQkJQmFyY28gUHJvamVjdGlvbiBTeXN0ZW1zIE5WCi0wMDA0QTUgICAgIChiYXNlIDE2KQkJQmFyY28gUHJvamVjdGlvbiBTeXN0ZW1zIE5WCi0JCQkJTm9vcmRsYWFuIDUKLQkJCQlCODUyMCBLdXVybmUKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC0wNC1BNiAgIChoZXgpCQlTQUYgVGVobmlrYSBMdGQuCi0wMDA0QTYgICAgIChiYXNlIDE2KQkJU0FGIFRlaG5pa2EgTHRkLgotCQkJCTkxIER6aXJuYXZ1IFN0ci4sCi0JCQkJUmlnYSwgTFYtMTAxMSwKLQkJCQlMQVRWSUEKLQkJCQlMQVRWSUEKLQotMDAtMDQtQTcgICAoaGV4KQkJRmFiaWFUZWNoIENvcnBvcmF0aW9uCi0wMDA0QTcgICAgIChiYXNlIDE2KQkJRmFiaWFUZWNoIENvcnBvcmF0aW9uCi0JCQkJNEYtMywgTm8uIDE4LCBMYW5lIDYwOQotCQkJCUNodW5nLUhzaW4gUmQuLCBTZWMuIDUgU2FuIENodW5nIENpdHksCi0JCQkJVGFpcGVpIEhzaWVuLCBUQUlXQU4gUi5PLkMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LUE4ICAgKGhleCkJCUJyb2FkbWF4IFRlY2hub2xvZ2llcywgSW5jLgotMDAwNEE4ICAgICAoYmFzZSAxNikJCUJyb2FkbWF4IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE4MCwgV2FpIFlpcCBTdHJlZXQsCi0JCQkJSHd1biBUb25nLAotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC0wNC1BOSAgIChoZXgpCQlTYW5kU3RyZWFtIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNEE5ICAgICAoYmFzZSAxNikJCVNhbmRTdHJlYW0gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTk1NSBMYWtld2F5IERyLgotCQkJCUxld2lzdmlsbGUgVFggNzUwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUFBICAgKGhleCkJCUpldHN0cmVhbSBDb21tdW5pY2F0aW9ucwotMDAwNEFBICAgICAoYmFzZSAxNikJCUpldHN0cmVhbSBDb21tdW5pY2F0aW9ucwotCQkJCTU0MDAgSGVsbHllciBBdmVudWUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzOC0xMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1BQiAgIChoZXgpCQlDb212ZXJzZSBOZXR3b3JrIFN5c3RlbXMsIEluYy4KLTAwMDRBQiAgICAgKGJhc2UgMTYpCQlDb212ZXJzZSBOZXR3b3JrIFN5c3RlbXMsIEluYy4KLQkJCQkyOSBIYWJhcnplbCBTdHJlZXQuCi0JCQkJVGVsLUF2aXYgNjk3MTAKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtMDQtQUMgICAoaGV4KQkJSUJNIENvcnAKLTAwMDRBQyAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQUQgICAoaGV4KQkJTWFsaWJ1IE5ldHdvcmtzCi0wMDA0QUQgICAgIChiYXNlIDE2KQkJTWFsaWJ1IE5ldHdvcmtzCi0JCQkJMjY2MzcgQWdvdXJhIFJkLgotCQkJCUNhbGFiYXNhcyBDQSA5MTMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQUUgICAoaGV4KQkJU3VsbGFpciBDb3Jwb3JhdGlvbgotMDAwNEFFICAgICAoYmFzZSAxNikJCVN1bGxhaXIgQ29ycG9yYXRpb24KLQkJCQkzNzAwIEVhc3QgTWljaGlnYW4gQmx2ZAotCQkJCU1pY2hpZ2FuIENpdHkgSU4gNDYzNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUFGICAgKGhleCkJCURpZ2l0YWwgRm91bnRhaW4sIEluYy4KLTAwMDRBRiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIEZvdW50YWluLCBJbmMuCi0JCQkJNjAwIEFsYWJhbWEgU3QuCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQjAgICAoaGV4KQkJRUxFU0lHTiBDby4sIEx0ZC4KLTAwMDRCMCAgICAgKGJhc2UgMTYpCQlFTEVTSUdOIENvLiwgTHRkLgotCQkJCTlGbC4gVGFlS3lvdW5nIEJsZGcuLAotCQkJCTQyLTQyIEJvbmdDaHVuLWRvbmcgS3dhbkFrLWd1LCBTZW91bCwKLQkJCQlSLk8uIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LUIxICAgKGhleCkJCVNpZ25hbCBUZWNobm9sb2d5LCBJbmMuCi0wMDA0QjEgICAgIChiYXNlIDE2KQkJU2lnbmFsIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkzcmQuIEZsLiBEYWJvIEJsZGcuCi0JCQkJMzctMiBrb3lvIHNvbmdwYQotCQkJCVNlb3VsIEtPUkVBIDEzOC0xMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtQjIgICAoaGV4KQkJRVNTRUdJIFNSTAotMDAwNEIyICAgICAoYmFzZSAxNikJCUVTU0VHSSBTUkwKLQkJCQlWaWEgRGVsIENhdmFyYXRvcmksIDE3Ci0JCQkJMjAwOTIgQ2luaXNlbGxvIEIuIChNMSkKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLTA0LUIzICAgKGhleCkJCVZpZGVvdGVrLCBJbmMuCi0wMDA0QjMgICAgIChiYXNlIDE2KQkJVmlkZW90ZWssIEluYy4KLQkJCQkyNDMgU2hvZW1ha2VyIFJkLgotCQkJCVBvdHRzdG93biBQQSAxOTQ2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQjQgICAoaGV4KQkJQ0lBQwotMDAwNEI0ICAgICAoYmFzZSAxNikJCUNJQUMKLQkJCQkxOCBydWUgSm9zZXBoIEJBUkEKLQkJCQk5MjEzMCBJc3N5LWxlcy1Nb2xpbmVhdXgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMDQtQjUgICAoaGV4KQkJRXF1aXRyYWMgQ29ycG9yYXRpb24KLTAwMDRCNSAgICAgKGJhc2UgMTYpCQlFcXVpdHJhYyBDb3Jwb3JhdGlvbgotCQkJCTE5MDUgTi5XLiA4Mm5kIEF2ZW51ZQotCQkJCU1pYW1pIEZMIDMzMTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1CNiAgIChoZXgpCQlTdHJhdGV4IE5ldHdvcmtzLCBJbmMuCi0wMDA0QjYgICAgIChiYXNlIDE2KQkJU3RyYXRleCBOZXR3b3JrcywgSW5jLgotCQkJCTY0IFdoaXRlIFJvYWQKLQkJCQlSZXRyZWF0LAotCQkJCUNhcGUgVG93biAgNzk0NQotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0wNC1CNyAgIChoZXgpCQlBTUIgaS50LiBIb2xkaW5nCi0wMDA0QjcgICAgIChiYXNlIDE2KQkJQU1CIGkudC4gSG9sZGluZwotCQkJCVp1aWRlcmhvdXRsYWFuIDQKLQkJCQlQSiBIYWFybGVtIDIwMTIKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wNC1COCAgIChoZXgpCQlLdW1haGlyYSBDby4sIEx0ZC4KLTAwMDRCOCAgICAgKGJhc2UgMTYpCQlLdW1haGlyYSBDby4sIEx0ZC4KLQkJCQk0LTM0IFVqaW5haGlnYXNoaSAyLUNob21lCi0JCQkJTWluYW1pa3UgSGlyb3NoaW1hCi0JCQkJSkFQQU4gNzM0LTg1NjcKLQkJCQlKQVBBTgotCi0wMC0wNC1COSAgIChoZXgpCQlTLkkuIFNvdWJvdSwgSW5jLgotMDAwNEI5ICAgICAoYmFzZSAxNikJCVMuSS4gU291Ym91LCBJbmMuCi0JCQkJS3VibyBCbGRnLiwgNzAzLCAyLTEyLAotCQkJCU5hbnBlaWRhaS1jaG8sIFNoaWJ1eWEta3UsCi0JCQkJVG9reW8gVG9reW8gSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC1CQSAgIChoZXgpCQlLREQgTWVkaWEgV2lsbCBDb3Jwb3JhdGlvbgotMDAwNEJBICAgICAoYmFzZSAxNikJCUtERCBNZWRpYSBXaWxsIENvcnBvcmF0aW9uCi0JCQkJMi0xLTIzIE5ha2FtZWd1cm8KLQkJCQlNZWd1cm8tS3UgVG9reW8KLQkJCQkxNTMtMDA2MSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LUJCICAgKGhleCkJCUJhcmRhYyBDb3Jwb3JhdGlvbgotMDAwNEJCICAgICAoYmFzZSAxNikJCUJhcmRhYyBDb3Jwb3JhdGlvbgotCQkJCTQwIExvZyBDYW5vZSBDaXJjbGUKLQkJCQlTdGV2ZW5zdmlsbGUgTUQgMjE2NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUJDICAgKGhleCkJCUdpYW50ZWMsIEluYy4KLTAwMDRCQyAgICAgKGJhc2UgMTYpCQlHaWFudGVjLCBJbmMuCi0JCQkJNEYsIE5vLiAzLCBMYW5lIDEyMywKLQkJCQlQYW8gQ2h1bmcgUmQuLCBIc2llbiBUaWVuIENpdHksIFRhaXBlaQotCQkJCVRBSVdBTiAyMzEgVEFJV0FOIDIzMSBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA0LUJEICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAwNEJEICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUJFICAgKGhleCkJCU9wdFhDb24sIEluYy4KLTAwMDRCRSAgICAgKGJhc2UgMTYpCQlPcHRYQ29uLCBJbmMuCi0JCQkJUC5PLiBCb3ggMTM0NDkKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTM0NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUJGICAgKGhleCkJCVZlcnNhTG9naWMgQ29ycC4KLTAwMDRCRiAgICAgKGJhc2UgMTYpCQlWZXJzYUxvZ2ljIENvcnAuCi0JCQkJMzg4OCBTdGV3YXJ0IFJkLgotCQkJCUV1Z2VuZSBPUiA5NzQwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQzAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNEMwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUMxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDRDMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1DMiAgIChoZXgpCQlNYWduaXBpeCwgSW5jLgotMDAwNEMyICAgICAoYmFzZSAxNikJCU1hZ25pcGl4LCBJbmMuCi0JCQkJMzUzOSBTdC1DaGFybGVzIEJsdmQuLCBTdWl0ZSAyMTIKLQkJCQlLaXJrbGFuZCAoUXVlYmVjKQotCQkJCUNBTkFEQSBIOUgzQzQKLQkJCQlDQU5BREEKLQotMDAtMDQtQzMgICAoaGV4KQkJQ0FTVE9SIEluZm9ybWF0aXF1ZQotMDAwNEMzICAgICAoYmFzZSAxNikJCUNBU1RPUiBJbmZvcm1hdGlxdWUKLQkJCQkyLCBSdWUgRHUgS2VmaXIKLQkJCQlTZW5pYSAzNDMKLQkJCQk5NDUzNyBPcmx5IENlZGV4IEZyYW5jZQotCQkJCUZSQU5DRQotCi0wMC0wNC1DNCAgIChoZXgpCQlBbGxlbiAmIEhlYXRoIExpbWl0ZWQKLTAwMDRDNCAgICAgKGJhc2UgMTYpCQlBbGxlbiAmIEhlYXRoIExpbWl0ZWQKLQkJCQlLZXJuaWNrIEluZHVzdHJpYWwgRXN0YXRlLCBQZW5yeW4KLQkJCQlDb3Jud2FsbCBFbmdsYW5kIFRSMTAgOUxVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtQzUgICAoaGV4KQkJQVNFIFRlY2hub2xvZ2llcywgVVNBCi0wMDA0QzUgICAgIChiYXNlIDE2KQkJQVNFIFRlY2hub2xvZ2llcywgVVNBCi0JCQkJNjcyMSBCYXVtIERyLgotCQkJCUtub3h2aWxsZSBUTiAzNzkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtQzYgICAoaGV4KQkJWWFtYWhhIE1vdG9yIENvLiwgTHRkLgotMDAwNEM2ICAgICAoYmFzZSAxNikJCVlhbWFoYSBNb3RvciBDby4sIEx0ZC4KLQkJCQlJbmZvcm1hdGlvbiBTeXN0ZW0gRGl2aXNpb24KLQkJCQkyNTAwIFNoaW5nYWkgSXdhdGEsIFNoaXp1b2thCi0JCQkJSmFwYW4gWmlwOiA0MzgtODUwMQotCQkJCUpBUEFOCi0KLTAwLTA0LUM3ICAgKGhleCkJCU5ldE1vdW50Ci0wMDA0QzcgICAgIChiYXNlIDE2KQkJTmV0TW91bnQKLQkJCQlQLk8uQi4gMjMyNQotCQkJCUthZGltYSA2MDkyMAotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0wNC1DOCAgIChoZXgpCQlMSUJBIE1hc2NoaW5lbmZhYnJpayBHbWJICi0wMDA0QzggICAgIChiYXNlIDE2KQkJTElCQSBNYXNjaGluZW5mYWJyaWsgR21iSAotCQkJCVBPIEJveCAxMTIwCi0JCQkJRDk1MTEyIE5haWxhCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMDQtQzkgICAoaGV4KQkJTWljcm8gRWxlY3Ryb24gQ28uLCBMdGQuCi0wMDA0QzkgICAgIChiYXNlIDE2KQkJTWljcm8gRWxlY3Ryb24gQ28uLCBMdGQuCi0JCQkJMkYgSWJhbmFraS1UYW5ha2EgQmxkZy4KLQkJCQkxLTEtNTkgTmFrYWhvZHVtaSBJYmFyYWtpLXNoaSwgT3Nha2EgNTY3Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC1DQSAgIChoZXgpCQlGcmVlTXMgQ29ycC4KLTAwMDRDQSAgICAgKGJhc2UgMTYpCQlGcmVlTXMgQ29ycC4KLQkJCQlTaGluaGFuIEJsZGcuIDZGLAotCQkJCTQ1LTExIFlvaWRvLURvbmcsIFlvdW5nZGV1bmdwby1rdSwKLQkJCQlTZW91bCAxNTAtNzM2IEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LUNCICAgKGhleCkJCVRkc29mdCBDb21tdW5pY2F0aW9uLCBMdGQuCi0wMDA0Q0IgICAgIChiYXNlIDE2KQkJVGRzb2Z0IENvbW11bmljYXRpb24sIEx0ZC4KLQkJCQk2MCBNZWRpbmF0IEhheWVodWRpbSBTdC4KLQkJCQlIZXJ6bGlhIDQ2NzY2Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTA0LUNDICAgKGhleCkJCVBlZWsgVHJhZmZpYyBCLlYuCi0wMDA0Q0MgICAgIChiYXNlIDE2KQkJUGVlayBUcmFmZmljIEIuVi4KLQkJCQlQb3N0YnVzIDI1NDIKLQkJCQkzODAwIEdCIEFtZXJzZm9vdAotCQkJCVRoZSBOZXRoZXJsYW5kcwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTA0LUNEICAgKGhleCkJCUluZm9ybWVkaWEgUmVzZWFyY2ggR3JvdXAKLTAwMDRDRCAgICAgKGJhc2UgMTYpCQlJbmZvcm1lZGlhIFJlc2VhcmNoIEdyb3VwCi0JCQkJMzkwIFN0LVZhbGxpZXIgRWFzdAotCQkJCVN1aXRlIDIwMwotCQkJCVF1ZWJlYyBQUSBHMUsgM1A2IENBTkFEQQotCQkJCUNBTkFEQQotCi0wMC0wNC1DRSAgIChoZXgpCQlQYXRyaWEgQWlsb24KLTAwMDRDRSAgICAgKGJhc2UgMTYpCQlQYXRyaWEgQWlsb24KLQkJCQlOYXVsYWthdHUgMwotCQkJCUZJTi0zMzEwMCBUYW1wZXJlCi0JCQkJRklOTEFORAotCQkJCUZJTkxBTkQKLQotMDAtMDQtQ0YgICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0wMDA0Q0YgICAgIChiYXNlIDE2KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0JCQkJMTI4MCBEaXNjIERyaXZlCi0JCQkJU2hha29wZWUgTU4gNTUzNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUQwICAgKGhleCkJCVNvZnRsaW5rIHMuci5vLgotMDAwNEQwICAgICAoYmFzZSAxNikJCVNvZnRsaW5rIHMuci5vLgotCQkJCVRvbWtvdmEgNDA5Ci0JCQkJS3JhbHVweSBuLiBWbHRhdm91Ci0JCQkJQ3plY2ggUmVwdWJsaWMKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0wNC1EMSAgIChoZXgpCQlEcmV3IFRlY2hub2xvZ2llcywgSW5jLgotMDAwNEQxICAgICAoYmFzZSAxNikJCURyZXcgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMzkxNSBSZXNlYXJjaCBQYXJrIERyCi0JCQkJU3VpdGUgQTEwCi0JCQkJQW5uIEFyYm9yIE1JIDQ4MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1EMiAgIChoZXgpCQlBZGNvbiBUZWxlbWV0cnkgR21iSAotMDAwNEQyICAgICAoYmFzZSAxNikJCUFkY29uIFRlbGVtZXRyeSBHbWJICi0JCQkJSW5rdXN0ci4gMjQKLQkJCQlBLTM0MDAgS2xvc3Rlcm5ldWJ1cmcKLQkJCQlBVVNUUklBCi0KLTAwLTA0LUQzICAgKGhleCkJCVRveW9rZWlraSBDby4sIEx0ZC4KLTAwMDREMyAgICAgKGJhc2UgMTYpCQlUb3lva2Vpa2kgQ28uLCBMdGQuCi0JCQkJV2FkYSAzOTY3LTEwLCBNYXRzdW1vdG8tQ2l0eQotCQkJCU5hZ2FubyAzOTAtMTI5OCwKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTA0LUQ0ICAgKGhleCkJCVByb3ZpZXcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA0RDQgICAgIChiYXNlIDE2KQkJUHJvdmlldyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQk2RiwgTm8uIDEsIFBhdS1TaGVuZyBSb2FkCi0JCQkJWXVuZyBIbyBDaXR5LCBUYWlwZWksCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC1ENSAgIChoZXgpCQlIaXRhY2hpIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbiBFbmdpbmVlcmluZywgTHRkLgotMDAwNEQ1ICAgICAoYmFzZSAxNikJCUhpdGFjaGkgSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uIEVuZ2luZWVyaW5nLCBMdGQuCi0JCQkJUXVlZW4ncyBUb3dlciBCMjFGLCAyLTMtMywgTWluYXRvbWlyYWksCi0JCQkJTmlzaGkta3UsIFlva29oYW1hLCAyMjAtNjEyMQotCQkJCUpBUEFOCi0KLTAwLTA0LUQ2ICAgKGhleCkJCVRha2FnaSBJbmR1c3RyaWFsIENvLiwgTHRkLgotMDAwNEQ2ICAgICAoYmFzZSAxNikJCVRha2FnaSBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCUVsZWN0cm9uaWMgSW5zdHJ1bWVudCBEaXYuCi0JCQkJMzUwOCwgS2FtaWlkZS1NaWthZXNoaSwgRXVqaW5vbWl5YS1zaGksCi0JCQkJNDE4LTAxMDMgNDE4LTAxMDMgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0wNC1ENyAgIChoZXgpCQlPbWl0ZWMgSW5zdHJ1bWVudGF0aW9uIEx0ZC4KLTAwMDRENyAgICAgKGJhc2UgMTYpCQlPbWl0ZWMgSW5zdHJ1bWVudGF0aW9uIEx0ZC4KLQkJCQlIb3B0b24gSW5kdXN0cmlhbCBFc3QuCi0JCQkJTG9uZG9uIFJkLiwgRGV2aXplcyBXaWx0c2hpcmUgU04xMCAyRVUKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtRDggICAoaGV4KQkJSVBXaXJlbGVzcywgSW5jLgotMDAwNEQ4ICAgICAoYmFzZSAxNikJCUlQV2lyZWxlc3MsIEluYy4KLQkJCQk0IExhbmRzb3duZSBDb3VydAotCQkJCUJ1bXBlcnMgV2F5IENoaXBwZW5oYW0sIFdpbHRzaGlyZSwKLQkJCQlTTjE0IEdSWiBVSwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA0LUQ5ICAgKGhleCkJCVRpdGFuIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDA0RDkgICAgIChiYXNlIDE2KQkJVGl0YW4gRWxlY3Ryb25pY3MsIEluYy4KLQkJCQlSbSA3LCAxMSBGbC4sIE5vLiAzOTgsCi0JCQkJSHVhbi1QZWkgUm9hZCwgQ2h1bmctTGksCi0JCQkJVGFveXVhbiBUYW95dWFuIFRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtREEgICAoaGV4KQkJUmVsYXggVGVjaG5vbG9neSwgSW5jLgotMDAwNERBICAgICAoYmFzZSAxNikJCVJlbGF4IFRlY2hub2xvZ3ksIEluYy4KLQkJCQlEQkEvIEdyYW5pdGUgRGlnaXRhbAotCQkJCTMxMDEgV2hpcHBsZSBSb2FkCi0JCQkJVW5pb24gQ2l0eSBDQSA5NDU4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtREIgICAoaGV4KQkJVGVsbHVzIEdyb3VwIENvcnAuCi0wMDA0REIgICAgIChiYXNlIDE2KQkJVGVsbHVzIEdyb3VwIENvcnAuCi0JCQkJNEYsIE5vLiAxNSBJbmR1c3RyeSBFLiBSZC4sIElYCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1IEhzaW5jaHUgVGFpd2FuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC1EQyAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMDREQyAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlEZXBhcnRtZW50IDY4MDAKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMCBCcmFwdG9uIE9OIEw2Ci0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTA0LUREICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDRERCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1ERSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA0REUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtREYgICAoaGV4KQkJVGVyYWNvbSBUZWxlbWF0aWNhIEx0ZGEuCi0wMDA0REYgICAgIChiYXNlIDE2KQkJVGVyYWNvbSBUZWxlbWF0aWNhIEx0ZGEuCi0JCQkJUi4gRmVsaXBlIE5lcmksIDI0NiBDSi4gMzAxCi0JCQkJOTA0NDAtMTUwIFBvcnRvIEFsbGVncmUgUlMKLQkJCQlCYXppbAotCQkJCUJSQVpJTAotCi0wMC0wNC1FMCAgIChoZXgpCQlQcm9ja2V0IE5ldHdvcmtzCi0wMDA0RTAgICAgIChiYXNlIDE2KQkJUHJvY2tldCBOZXR3b3JrcwotCQkJCTExMDAgQ2FkaWxsYWMgQ291cnQKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRTEgICAoaGV4KQkJSW5maW5pb3IgTWljcm9zeXN0ZW1zCi0wMDA0RTEgICAgIChiYXNlIDE2KQkJSW5maW5pb3IgTWljcm9zeXN0ZW1zCi0JCQkJMkYsIEFjY3VmYXIgQmxkZywgMjM0LTEwLAotCQkJCUphbXNpbC1Eb25nLCBTb25ncGEtR3UKLQkJCQlTZW91bCBLT1JFQSAxMzgtMjIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA0LUUyICAgKGhleCkJCVNNQyBOZXR3b3JrcywgSW5jLgotMDAwNEUyICAgICAoYmFzZSAxNikJCVNNQyBOZXR3b3JrcywgSW5jLgotCQkJCTYgSHVnaGVzCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1FMyAgIChoZXgpCQlBY2N0b24gVGVjaG5vbG9neSBDb3JwLgotMDAwNEUzICAgICAoYmFzZSAxNikJCUFjY3RvbiBUZWNobm9sb2d5IENvcnAuCi0JCQkJTm8uIDEgQ3JlYXRpb24gUmQuIElJSSwKLQkJCQlTQklQCi0JCQkJSHNpbmNodSBIc2luY2h1IFRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtRTQgICAoaGV4KQkJRGFlcnl1bmcgSW5kLiwgSW5jLgotMDAwNEU0ICAgICAoYmFzZSAxNikJCURhZXJ5dW5nIEluZC4sIEluYy4KLQkJCQkjMjE5LTYsIEthc2FuIERvbmcsCi0JCQkJS3VtY2h1biBrdSwKLQkJCQlTZW91bCBTZW91bCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNC1FNSAgIChoZXgpCQlHbG9uZXQgU3lzdGVtcywgSW5jLgotMDAwNEU1ICAgICAoYmFzZSAxNikJCUdsb25ldCBTeXN0ZW1zLCBJbmMuCi0JCQkJMTFGbC4sIEplaWwgQmxkZy4sIDk0LTQ2LCA3S2EKLQkJCQlZb3VuZ2R1bmdwby1kb25nIFlvbmdkdW5ncG8tS3UgU2VvdWwsIDE1Ci0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtRTYgICAoaGV4KQkJQmFueWFuIE5ldHdvcmsgUHJpdmF0ZSBMaW1pdGVkCi0wMDA0RTYgICAgIChiYXNlIDE2KQkJQmFueWFuIE5ldHdvcmsgUHJpdmF0ZSBMaW1pdGVkCi0JCQkJNDQzLCA4dGggRmxvb3IsIEd1bmEgQ29tcGxleAotCQkJCUFubmFzYWxhaSwgQ2hlbm5haS02MDAgMDE4Ci0JCQkJSU5ESUEKLQkJCQlJTkRJQQotCi0wMC0wNC1FNyAgIChoZXgpCQlMaWdodHBvaW50ZSBDb21tdW5pY2F0aW9ucywgSW5jCi0wMDA0RTcgICAgIChiYXNlIDE2KQkJTGlnaHRwb2ludGUgQ29tbXVuaWNhdGlvbnMsIEluYwotCQkJCTEwMTQwIEJhcm5lcyBDYW55b24gUm9hZAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRTggICAoaGV4KQkJSUVSLCBJbmMuCi0wMDA0RTggICAgIChiYXNlIDE2KQkJSUVSLCBJbmMuCi0JCQkJNDUwMSBTby4gR2VuZXJhbCBCcnVjZSBEcgotCQkJCVN1aXRlIDUwCi0JCQkJVGVtcGxlIFRYIDc2NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1FOSAgIChoZXgpCQlJbmZpbmlzd2l0Y2ggQ29ycG9yYXRpb24KLTAwMDRFOSAgICAgKGJhc2UgMTYpCQlJbmZpbmlzd2l0Y2ggQ29ycG9yYXRpb24KLQkJCQkxMzQgRmxhbmRlcnMgUm9hZAotCQkJCVdlc3Rib3JvdWdoIE1BIDAxNTgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1FQSAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwNEVBICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTEwMDAgV29sZmUgUm9hZCwgTWFpbHN0b3AgNDJMRQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRUIgICAoaGV4KQkJUGF4b25ldCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNEVCICAgICAoYmFzZSAxNikJCVBheG9uZXQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk0MDQ2IENsaXBwZXIgQ291cnQKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1FQyAgIChoZXgpCQlNZW1vYm94IFNBCi0wMDA0RUMgICAgIChiYXNlIDE2KQkJTWVtb2JveCBTQQotCQkJCTEsIFBsYWNlIERhbWUgU3V6YW5uZQotCQkJCTkxMTkwIFNhaW50IEF1YmluCi0JCQkJRnJhbmNlCi0JCQkJRlJBTkNFCi0KLTAwLTA0LUVEICAgKGhleCkJCUJpbGxpb24gRWxlY3RyaWMgQ28uLCBMdGQuCi0wMDA0RUQgICAgIChiYXNlIDE2KQkJQmlsbGlvbiBFbGVjdHJpYyBDby4sIEx0ZC4KLQkJCQk4RiwgTm8uMTkyLCBTZWMuMiwgQ2h1bmcgSHNpbmcgUmQuLAotCQkJCUhzaW4gVGllbiBDaXR5LCBUYWlwZWkgSHNpZW4KLQkJCQlUYWl3YW4gVGFpd2FuIFJPQwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDQtRUUgICAoaGV4KQkJTGluY29sbiBFbGVjdHJpYyBDb21wYW55Ci0wMDA0RUUgICAgIChiYXNlIDE2KQkJTGluY29sbiBFbGVjdHJpYyBDb21wYW55Ci0JCQkJMjI4MDEgU3QuIENsYWlyIEF2ZW51ZQotCQkJCUNsZXZlbGFuZCBPSCA0NDExNy0xMTk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1FRiAgIChoZXgpCQlQb2xlc3RhciBDb3JwLgotMDAwNEVGICAgICAoYmFzZSAxNikJCVBvbGVzdGFyIENvcnAuCi0JCQkJUk0gIzgwMiBTZW9HZW9uIEIvRCwgMTQ4MCwKLQkJCQlHd2FuWWFuZy1Eb25nLCBEb25nQW4tR3UsIEFuWWFuZyBDaXR5LCA0Ci0JCQkJS29yZWEgKFJPSykKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDQtRjAgICAoaGV4KQkJSW50ZXJuYXRpb25hbCBDb21wdXRlcnMsIEx0ZAotMDAwNEYwICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgQ29tcHV0ZXJzLCBMdGQKLQkJCQkxIFdlbmxvY2sgV2F5Ci0JCQkJV2VzdCBHb3J0b24gTWFuY2hlc3RlciwgTTEyIDVEUgotCQkJCVVLCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDQtRjEgICAoaGV4KQkJV2hlcmVOZXQKLTAwMDRGMSAgICAgKGJhc2UgMTYpCQlXaGVyZU5ldAotCQkJCTEwNyBXLiBNY0tpbm5leSBBdmVudWUKLQkJCQlSb2dlcnN2aWxsZSBUTiAzNzg1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRjIgICAoaGV4KQkJUG9seWNvbQotMDAwNEYyICAgICAoYmFzZSAxNikJCVBvbHljb20KLQkJCQkxMDAwIFdlc3QgMTR0aCBTdHJlZXQKLQkJCQlOb3J0aCBWYW5jb3V2ZXIsIEIuQy4KLQkJCQlDYW5hZGEgVjdQM1AzCi0JCQkJQ0FOQURBCi0KLTAwLTA0LUYzICAgKGhleCkJCUZTIEZPUlRILVNZU1RFTUUgR21iSAotMDAwNEYzICAgICAoYmFzZSAxNikJCUZTIEZPUlRILVNZU1RFTUUgR21iSAotCQkJCUt1ZWZlcnN0ci4gOAotCQkJCUQtNzkyMDYgQnJlaXNhY2gKLQkJCQlHZXJtYW55Ci0JCQkJR0VSTUFOWQotCi0wMC0wNC1GNCAgIChoZXgpCQlJbmZpbml0ZSBFbGVjdHJvbmljcyBJbmMuCi0wMDA0RjQgICAgIChiYXNlIDE2KQkJSW5maW5pdGUgRWxlY3Ryb25pY3MgSW5jLgotCQkJCU5vLjQ3OC0xLCBTZWMgMgotCQkJCUNoaW5nIEhhaSBSb2FkIDQwNywgVGFpIENodW5nCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNC1GNSAgIChoZXgpCQlTbm93U2hvcmUgTmV0d29ya3MsIEluYy4KLTAwMDRGNSAgICAgKGJhc2UgMTYpCQlTbm93U2hvcmUgTmV0d29ya3MsIEluYy4KLQkJCQkyODUgQmlsbGVyaWNhIFJvYWQKLQkJCQlDaGVsbXNmb3JkIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1GNiAgIChoZXgpCQlBbXBodXMKLTAwMDRGNiAgICAgKGJhc2UgMTYpCQlBbXBodXMKLQkJCQkyMzcyIFF1bWUgRHJpdmUsICNGCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUY3ICAgKGhleCkJCU9tZWdhIEJhbmQsIEluYy4KLTAwMDRGNyAgICAgKGJhc2UgMTYpCQlPbWVnYSBCYW5kLCBJbmMuCi0JCQkJOTAyMC1JIENhcGl0YWwgb2YgVGV4YXMgSGdod3kgTgotCQkJCVN1aXRlICMyNzAKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUY4ICAgKGhleCkJCVFVQUxJQ0FCTEUgVFYgSW5kdXN0cmlhIEUgQ29tLiwgTHRkYQotMDAwNEY4ICAgICAoYmFzZSAxNikJCVFVQUxJQ0FCTEUgVFYgSW5kdXN0cmlhIEUgQ29tLiwgTHRkYQotCQkJCUF2LiBKb2FvIFBhdWxvIEFibGFzLCAzMDgKLQkJCQlKYXJkaW0gRGEgR2xvcmlhIC0gQ290aWEgLVNQIENFUCAwNjcxMS0yCi0JCQkJQlJBWklMCi0KLTAwLTA0LUY5ICAgKGhleCkJCVh0ZXJhIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA0RjkgICAgIChiYXNlIDE2KQkJWHRlcmEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk1MDAgVyBCZXRoYW55IERyaXZlCi0JCQkJQWxsZW4gVFggNzUwMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA0LUZBICAgKGhleCkJCU5CUyBUZWNobm9sb2dpZXMgSW5jLgotMDAwNEZBICAgICAoYmFzZSAxNikJCU5CUyBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTcwMyBFdmFucyBBdmVudWUsIFN1aXRlIDQwMAotCQkJCVRvcm9udG8KLQkJCQlPbnRhcmlvICBNOUMgNUU5Ci0JCQkJQ0FOQURBCi0KLTAwLTA0LUZCICAgKGhleCkJCUNvbW10ZWNoLCBJbmMuCi0wMDA0RkIgICAgIChiYXNlIDE2KQkJQ29tbXRlY2gsIEluYy4KLQkJCQk5MDExIEUuIDM3dGggU3RyZWV0Ci0JCQkJV2ljaGl0YSBLUyA2NzIyNi0yMDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNC1GQyAgIChoZXgpCQlTdHJhdHVzIENvbXB1dGVyIChERSksIEluYy4KLTAwMDRGQyAgICAgKGJhc2UgMTYpCQlTdHJhdHVzIENvbXB1dGVyIChERSksIEluYy4KLQkJCQkxMTEgUG93ZGVybWlsbCBSb2FkCi0JCQkJTWF5bmFyZCBNQSAwMTc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRkQgICAoaGV4KQkJSmFwYW4gQ29udHJvbCBFbmdpbmVlcmluZyBDby4sIEx0ZC4KLTAwMDRGRCAgICAgKGJhc2UgMTYpCQlKYXBhbiBDb250cm9sIEVuZ2luZWVyaW5nIENvLiwgTHRkLgotCQkJCTEtNS0xLCBIaWdhc2hpYW1hZ2F3YSwgVGFrYXRzdWtpLXNoaQotCQkJCU9zYWthIDU2OS0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMDQtRkUgICAoaGV4KQkJUGVsYWdvIE5ldHdvcmtzCi0wMDA0RkUgICAgIChiYXNlIDE2KQkJUGVsYWdvIE5ldHdvcmtzCi0JCQkJNzAxIEUuIFBsYW5vIFBhcmt3YXkgLSBTdGUuICMyMDUKLQkJCQlQbGFubyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDQtRkYgICAoaGV4KQkJQWNyb25ldCBDby4sIEx0ZC4KLTAwMDRGRiAgICAgKGJhc2UgMTYpCQlBY3JvbmV0IENvLiwgTHRkLgotCQkJCVNhbWFuIEIvRCAyRmwKLQkJCQk4MTEtMTUgQmFuZ2JhZS1Eb25nIFNlb2Noby1rdSwgU2VvdWwKLQkJCQkxMzctMDY0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTAwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDUwMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0wMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1MDEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMDIgICAoaGV4KQkJQVBQTEUgQ09NUFVURVIKLTAwMDUwMiAgICAgKGJhc2UgMTYpCQlBUFBMRSBDT01QVVRFUgotCQkJCTIwNjUwIFZBTExFWSBHUkVFTiBEUklWRQotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMDMgICAoaGV4KQkJSUNPTkFHCi0wMDA1MDMgICAgIChiYXNlIDE2KQkJSUNPTkFHCi0JCQkJQU0gQmFobmhvZiAyCi0JCQkJNTU3NjUgQmlya2VuZmVsZAotCQkJCUdFUk1BTlkKLQotMDAtMDUtMDQgICAoaGV4KQkJTmFyYXkgSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uIEVudGVycHJpc2UKLTAwMDUwNCAgICAgKGJhc2UgMTYpCQlOYXJheSBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb24gRW50ZXJwcmlzZQotCQkJCTNGIFNhbiBXb28gQmxkZy4sIDE1NDMtMTEKLQkJCQlTZW9jaG8tRG9uZywgU2VvY2hvLUt1LAotCQkJCVNlb3VsIDEzNy0wNzAgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS0wNSAgIChoZXgpCQlTeXN0ZW1zIEludGVncmF0aW9uIFNvbHV0aW9ucywgSW5jLgotMDAwNTA1ICAgICAoYmFzZSAxNikJCVN5c3RlbXMgSW50ZWdyYXRpb24gU29sdXRpb25zLCBJbmMuCi0JCQkJMzkyMiBDb2NvbnV0IFBhbG0gRHJpdmUsCi0JCQkJU3VpdGUgMTA2Ci0JCQkJVGFtcGEgRkwgMzM2MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTA2ICAgKGhleCkJCVJlZGRvIE5ldHdvcmtzIEFCCi0wMDA1MDYgICAgIChiYXNlIDE2KQkJUmVkZG8gTmV0d29ya3MgQUIKLQkJCQlMaXZkanVyc2dhdGFuIDQKLQkJCQlTRSAxMjEgNjIgSm9oYW5uZXNob3YKLQkJCQlTV0VERU4KLQotMDAtMDUtMDcgICAoaGV4KQkJRmluZSBBcHBsaWFuY2UgQ29ycC4KLTAwMDUwNyAgICAgKGJhc2UgMTYpCQlGaW5lIEFwcGxpYW5jZSBDb3JwLgotCQkJCTdGbC4sIE5vLiA0OTksCi0JCQkJQ2h1bmctQ2hlbmcgUmQuLCBIc2ludGllbiwgVGFpcGVpCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS0wOCAgIChoZXgpCQlJbmV0Y2FtLCBJbmMuCi0wMDA1MDggICAgIChiYXNlIDE2KQkJSW5ldGNhbSwgSW5jLgotCQkJCTEwMTcxIFBhY2lmaWMgTWVzYSBCbHZkLgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMDkgICAoaGV4KQkJQVZPQyBOaXNoaW11cmEgTHRkLgotMDAwNTA5ICAgICAoYmFzZSAxNikJCUFWT0MgTmlzaGltdXJhIEx0ZC4KLQkJCQlKb2dhc2FraSA0LTE2LTE0Ci0JCQkJTWl5YXpha2ktY2l0eSwgTWl5YXpha2kgODgwLTA5MTcsCi0JCQkJSkFQQU4KLQotMDAtMDUtMEEgICAoaGV4KQkJSUNTIFNwYQotMDAwNTBBICAgICAoYmFzZSAxNikJCUlDUyBTcGEKLQkJCQlWaWEgUm9tYW5vIEFMCi0JCQkJMTAwMTAgU2Nhcm1hZ25vIChUTykKLQkJCQlJVEFMWQotCi0wMC0wNS0wQiAgIChoZXgpCQlTSUNPTSBTeXN0ZW1zLCBJbmMuCi0wMDA1MEIgICAgIChiYXNlIDE2KQkJU0lDT00gU3lzdGVtcywgSW5jLgotCQkJCTQxNDAgU2t5cm9uIERyaXZlCi0JCQkJRG95bGVzdG93biBQQSAxODkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMEMgICAoaGV4KQkJTmV0d29yayBQaG90b25pY3MsIEluYy4KLTAwMDUwQyAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIFBob3RvbmljcywgSW5jLgotCQkJCTQ1MSBBdmlhdGlvbiBCb3VsZXZhcmQKLQkJCQlTYW50YSBSb3NhIENBIDk1NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0wRCAgIChoZXgpCQlNaWRzdHJlYW0gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA1MEQgICAgIChiYXNlIDE2KQkJTWlkc3RyZWFtIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTc3NyAxMDh0aCBBdmUuIE5FCi0JCQkJU3VpdGUgMTcwMAotCQkJCUJlbGxldnVlIFdBIDk4MDA0LTUxNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTBFICAgKGhleCkJCTN3YXJlLCBJbmMuCi0wMDA1MEUgICAgIChiYXNlIDE2KQkJM3dhcmUsIEluYy4KLQkJCQk3MDEgRS4gTWlkZGxlZmllbGQgUmQuCi0JCQkJU3VpdGUgMzAwCi0JCQkJTXQuIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTBGICAgKGhleCkJCVRhbmFrYSBTL1MgTHRkLgotMDAwNTBGICAgICAoYmFzZSAxNikJCVRhbmFrYSBTL1MgTHRkLgotCQkJCTE5NDIgTm9tdXJhIEhpcm9va2EKLQkJCQlTaGlvamlyaS1DaXR5Ci0JCQkJTmFnYW5vIDM5OS0wNzAyIAotCQkJCUpBUEFOCi0KLTAwLTA1LTEwICAgKGhleCkJCUluZmluaXRlIFNoYW5naGFpIENvbW11bmljYXRpb24gVGVybWluYWxzIEx0ZC4KLTAwMDUxMCAgICAgKGJhc2UgMTYpCQlJbmZpbml0ZSBTaGFuZ2hhaSBDb21tdW5pY2F0aW9uIFRlcm1pbmFscyBMdGQuCi0JCQkJNzc3IENodW5naWFvIFJvYWQsIFB1ZG9uZwotCQkJCVNoYW5naGFpIDIwMTIwNiwKLQkJCQlDSElOQQotCi0wMC0wNS0xMSAgIChoZXgpCQlDb21wbGVtZW50YXJ5IFRlY2hub2xvZ2llcyBMdGQKLTAwMDUxMSAgICAgKGJhc2UgMTYpCQlDb21wbGVtZW50YXJ5IFRlY2hub2xvZ2llcyBMdGQKLQkJCQlDb210ZWNoIEhvdXNlLCAyOCBNYW5jaGVzdGVyIFJvYWQKLQkJCQlXZXN0aG91Z2h0b24gQk9MVE9OCi0JCQkJQkw1IDNRSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LTEyICAgKGhleCkJCU1lc2hOZXR3b3JrcywgSW5jLgotMDAwNTEyICAgICAoYmFzZSAxNikJCU1lc2hOZXR3b3JrcywgSW5jLgotCQkJCTQ4NSBLZWxsZXIgUmQuLCBTdWl0ZSAyNTAKLQkJCQlNYWl0bGFuZCBGTCAzMjc1MS03NTM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0xMyAgIChoZXgpCQlWVExpbnggTXVsdGltZWRpYSBTeXN0ZW1zLCBJbmMuCi0wMDA1MTMgICAgIChiYXNlIDE2KQkJVlRMaW54IE11bHRpbWVkaWEgU3lzdGVtcywgSW5jLgotCQkJCTg0MDEgQ29sZXN2aWxsZSBSb2FkLAotCQkJCVN1aXRlIDc1MAotCQkJCVNpbHZlciBTcHJpbmcgTUQgMjA5MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTE0ICAgKGhleCkJCUtEVCBTeXN0ZW1zIENvLiwgTHRkLgotMDAwNTE0ICAgICAoYmFzZSAxNikJCUtEVCBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTEwMi02LCBDaG9idS1MaSwgTW9oeXVuLU15dW4sCi0JCQkJWW9uZ2luLUNpdHksIEt5dW5na2ktRG8sCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTE1ICAgKGhleCkJCU51YXJrIENvLiwgTHRkLgotMDAwNTE1ICAgICAoYmFzZSAxNikJCU51YXJrIENvLiwgTHRkLgotCQkJCTEyRiwgQW55YW5nIEsgY2VudGVyLCAxNTkxLTksIEJ1cmltLWRvbmcKLQkJCQlEb25nYW4tZ3UsIEFueWFuZy1zaSwKLQkJCQlHdW5nZ2ktZG8gNDMxLTA2NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS0xNiAgIChoZXgpCQlTTUFSVCBNb2R1bGFyIFRlY2hub2xvZ2llcwotMDAwNTE2ICAgICAoYmFzZSAxNikJCVNNQVJUIE1vZHVsYXIgVGVjaG5vbG9naWVzCi0JCQkJNDMwNSBDdXNoaW5nIFBrd3kKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0xNyAgIChoZXgpCQlTaGVsbGNvbW0sIEluYy4KLTAwMDUxNyAgICAgKGJhc2UgMTYpCQlTaGVsbGNvbW0sIEluYy4KLQkJCQlSbSAjNjEyMiBFVFJJIFRCSSBDZW50ZXIsIDEsCi0JCQkJRW9ldW4tRG9uZywgWXVzb25nLUd1LCBUYWVqb24sIDMwNS0zMzMsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTE4ICAgKGhleCkJCUp1cGl0ZXJzIFRlY2hub2xvZ3kKLTAwMDUxOCAgICAgKGJhc2UgMTYpCQlKdXBpdGVycyBUZWNobm9sb2d5Ci0JCQkJUE8gQm94IDEyNjkzCi0JCQkJRWxpemFiZXRoIFN0cmVldCBCcmlzYmFuZSBRTEQgNDAwMgotCQkJCUFVU1RSQUxJQQotCi0wMC0wNS0xOSAgIChoZXgpCQlTaWVtZW5zIEJ1aWxkaW5nIFRlY2hub2xvZ2llcyBBRywKLTAwMDUxOSAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEJ1aWxkaW5nIFRlY2hub2xvZ2llcyBBRywKLQkJCQlDZXJiZXJ1cyBEaXZpc2lvbgotCQkJCWFsdGUgTGFuZHN0cmFzc2UgNDExIENILTg3MDggTWFlbm5lZG9yZgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA1LTFBICAgKGhleCkJCTNDb20gRXVyb3BlIEx0ZC4KLTAwMDUxQSAgICAgKGJhc2UgMTYpCQkzQ29tIEV1cm9wZSBMdGQuCi0JCQkJM0NvbSBDZW50cmUsIEJvdW5kYXJ5IFdheSwKLQkJCQlIZW1wc3RlYWQsIEhlcnRzLCBIUDIgN1lVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDUtMUIgICAoaGV4KQkJTWFnaWMgQ29udHJvbCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDA1MUIgICAgIChiYXNlIDE2KQkJTWFnaWMgQ29udHJvbCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNkYsIE5vLiAxMjAtMTEgQ2h1bmcgU2hhbiBSZC4KLQkJCQlTZWMgMywgQ2h1bmcgSG8gVGFpcGVpCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS0xQyAgIChoZXgpCQlYbmV0IFRlY2hub2xvZ3kgQ29ycC4KLTAwMDUxQyAgICAgKGJhc2UgMTYpCQlYbmV0IFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk5Ri0xNiwgTm8uIDEyLCBMYW5lIDYwOSwKLQkJCQlTZWMuIDUsIENodW5nIEhzaW4gUm9hZCwgU2FuIENodW5nIENpdHksCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS0xRCAgIChoZXgpCQlBaXJvY29uLCBJbmMuCi0wMDA1MUQgICAgIChiYXNlIDE2KQkJQWlyb2NvbiwgSW5jLgotCQkJCTExNiBIb3VnaHRvbiBMYW5lCi0JCQkJQm94Ym9ybyBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMUUgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDA1MUUgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTFGICAgKGhleCkJCVRhaWppbiBNZWRpYSBDby4sIEx0ZC4KLTAwMDUxRiAgICAgKGJhc2UgMTYpCQlUYWlqaW4gTWVkaWEgQ28uLCBMdGQuCi0JCQkJNjQwLTggVHVuZ2Nob24tRG9uZwotCQkJCUthbmdzZW8tR3UsCi0JCQkJU2VvdWwgIDE1Ny0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtMjAgICAoaGV4KQkJU21hcnRyb25peCwgSW5jLgotMDAwNTIwICAgICAoYmFzZSAxNikJCVNtYXJ0cm9uaXgsIEluYy4KLQkJCQkyMjY4NSBUaHJlZSBOb3RjaCBSZC4KLQkJCQlDYWxpZm9ybmlhIE1EIDIwNjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0yMSAgIChoZXgpCQlDb250cm9sIE1pY3Jvc3lzdGVtcwotMDAwNTIxICAgICAoYmFzZSAxNikJCUNvbnRyb2wgTWljcm9zeXN0ZW1zCi0JCQkJNDggU3RlYWNpZSBEcml2ZQotCQkJCU9udGFyaW8gIEsySyAyQTkKLQkJCQlDQU5BREEKLQotMDAtMDUtMjIgICAoaGV4KQkJTEVBKkQgQ29ycG9yYXRpb24sIEluYy4KLTAwMDUyMiAgICAgKGJhc2UgMTYpCQlMRUEqRCBDb3Jwb3JhdGlvbiwgSW5jLgotCQkJCUFkdmF0ZWNoIEJsZGcuCi0JCQkJVGVyYWRpb24gSW5kLiBQYXJrIEQuTi4gTWlzZ2F2LCAyMDE3OQotCQkJCUlTUkFFTAotCi0wMC0wNS0yMyAgIChoZXgpCQlBVkwgTGlzdCBHbWJICi0wMDA1MjMgICAgIChiYXNlIDE2KQkJQVZMIExpc3QgR21iSAotCQkJCUhhbnMgTGlzdCBQbGF0eiAxCi0JCQkJQS04MDIwIEdyYXoKLQkJCQlBVVNUUklBCi0KLTAwLTA1LTI0ICAgKGhleCkJCUJUTCBTeXN0ZW0gKEhLKSBMaW1pdGVkCi0wMDA1MjQgICAgIChiYXNlIDE2KQkJQlRMIFN5c3RlbSAoSEspIExpbWl0ZWQKLQkJCQkxNC9GLiwgQmxrLiBCLCBWaXRhIFRvd2VyLAotCQkJCTI5IFdvbmcgQ2h1ayBIYW5nIFJkLiwKLQkJCQlBYmVyZGVlbiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA1LTI1ICAgKGhleCkJCVB1cmV0ZWsgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMDUyNSAgICAgKGJhc2UgMTYpCQlQdXJldGVrIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJTm8uIDE0LCA0IEZsci4gTGFuZSAyMzUKLQkJCQlQYW8gQ2hpYW8gUm9hZCBIc2luIFRpZW4sIFRhaXBlaSBIc2llbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtMjYgICAoaGV4KQkJSVBBUyBHbWJICi0wMDA1MjYgICAgIChiYXNlIDE2KQkJSVBBUyBHbWJICi0JCQkJR3JhYmVuc3RyLiAxNDlhCi0JCQkJNDcwNTcgRHVpc2J1cmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTI3ICAgKGhleCkJCVNKIFRlayBDby4gTHRkCi0wMDA1MjcgICAgIChiYXNlIDE2KQkJU0ogVGVrIENvLiBMdGQKLQkJCQlIbyBnYWUgRG9uZyA5NzYtNSwgRG9uZyBBbiBLdSwKLQkJCQlBbiB5YW5nIENpdHksIEt5dW5nIEtlZSBEbywKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtMjggICAoaGV4KQkJTmV3IEZvY3VzLCBJbmMuCi0wMDA1MjggICAgIChiYXNlIDE2KQkJTmV3IEZvY3VzLCBJbmMuCi0JCQkJMjYzMCBXYWxzaCBBdmUuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTI5ICAgKGhleCkJCVNoYW5naGFpIEJyb2FkYW4gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDA1MjkgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgQnJvYWRhbiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQkxNUYsIFN1bnRpbWUgSW50ZXJuYXRpb25hbCBNYW5zaW9uCi0JCQkJTm8uIDQ1MCBGdXNoYW4gUm9hZCwgUHVkb25nIERpc3RyaWN0LCBTaAotCQkJCTIwMDEyMgotCQkJCUNISU5BCi0KLTAwLTA1LTJBICAgKGhleCkJCUlrZWdhbWkgVHN1c2hpbmtpIENvLiwgTHRkLgotMDAwNTJBICAgICAoYmFzZSAxNikJCUlrZWdhbWkgVHN1c2hpbmtpIENvLiwgTHRkLgotCQkJCTUtNi0xNiBJa2VnYW1pIE9odGEta3UsCi0JCQkJVG9reW8KLQkJCQkxNDYtODU2NwotCQkJCUpBUEFOCi0KLTAwLTA1LTJCICAgKGhleCkJCUhPUklCQSwgTHRkLgotMDAwNTJCICAgICAoYmFzZSAxNikJCUhPUklCQSwgTHRkLgotCQkJCTIgTWl5YW5vaGlnYXNoaSwgS2lzc2hvaW4sCi0JCQkJTWluYW1pLWt1LCBLeW90bwotCQkJCTYwMS04NTEwCi0JCQkJSkFQQU4KLQotMDAtMDUtMkMgICAoaGV4KQkJU3VwcmVtZSBNYWdpYyBDb3Jwb3JhdGlvbgotMDAwNTJDICAgICAoYmFzZSAxNikJCVN1cHJlbWUgTWFnaWMgQ29ycG9yYXRpb24KLQkJCQlTdW4gVG93ZXJzIENlbnRlciBCbGRnLiwgMTNGCi0JCQkJMi0xMS0yMiwgU2FuZ2VuLWpheWEsIFNldGFnYXlhLWt1LCBUb2t5bwotCQkJCTE1NC0wMDI0Ci0JCQkJSkFQQU4KLQotMDAtMDUtMkQgICAoaGV4KQkJWm9sdHJpeCBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTAwMDUyRCAgICAgKGJhc2UgMTYpCQlab2x0cml4IEludGVybmF0aW9uYWwgTGltaXRlZAotCQkJCVJvb20gNzAxIFBvIEhpbmcgQ2VudHJlLAotCQkJCTE4IFdhbiBDaGl1IFJvYWQsIEtvd2xvb24sCi0JCQkJSE9ORyBLT05HCi0KLTAwLTA1LTJFICAgKGhleCkJCUNpbnRhIE5ldHdvcmtzCi0wMDA1MkUgICAgIChiYXNlIDE2KQkJQ2ludGEgTmV0d29ya3MKLQkJCQkzMDEwIE5vcnRoIEZpcnN0IFN0cmVldAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0yRiAgIChoZXgpCQlMZXZpdG9uIE5ldHdvcmsgU29sdXRpb25zCi0wMDA1MkYgICAgIChiYXNlIDE2KQkJTGV2aXRvbiBOZXR3b3JrIFNvbHV0aW9ucwotCQkJCTIyMjIgMjIybmQgU3RyZWV0IFMuRS4KLQkJCQlCb3RoZWxsIFdBIDk4MDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0zMCAgIChoZXgpCQlBbmRpYW1vIFN5c3RlbXMsIEluYy4KLTAwMDUzMCAgICAgKGJhc2UgMTYpCQlBbmRpYW1vIFN5c3RlbXMsIEluYy4KLQkJCQkxNDE3MSBUZWVybGluayBXYXkKLQkJCQlTYXJhdG9nYSBDQSA5NTA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtMzEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNTMxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTMyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDUzMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS0zMyAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLTAwMDUzMyAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLQkJCQkxNzQ1IFRlY2hub2xvZ3kgRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTM0ICAgKGhleCkJCU5vcnRoc3RhciBFbmdpbmVlcmluZyBMdGQuCi0wMDA1MzQgICAgIChiYXNlIDE2KQkJTm9ydGhzdGFyIEVuZ2luZWVyaW5nIEx0ZC4KLQkJCQlQLk8uIEJveCA0MAotCQkJCUhlbmxleS1vbi1UaGFtZXMgT3hvbiBSRzkgNkFFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDUtMzUgICAoaGV4KQkJQ2hpcCBQQyBMdGQuCi0wMDA1MzUgICAgIChiYXNlIDE2KQkJQ2hpcCBQQyBMdGQuCi0JCQkJMjAgQS5MLiBNb3R6a2luIFN0LgotCQkJCVRvcGF6IEhvdXNlLCBOYWh1bSBIYXQgNSAsIFAuTy4gQm94IDQKLQkJCQlUaXJhdCBDYXJtZWwgIDM5MTAwCi0JCQkJSVNSQUVMCi0KLTAwLTA1LTM2ICAgKGhleCkJCURhbmFtIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA1MzYgICAgIChiYXNlIDE2KQkJRGFuYW0gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk5MDAtMywgSG9reWUtZG9uZywgRG9uZ2FuLWd1LAotCQkJCUFueWFuZywgS3l1bmdraS1kbywgNDMxLTA4MiwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtMzcgICAoaGV4KQkJTmV0cyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNTM3ICAgICAoYmFzZSAxNikJCU5ldHMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkjQjEgWXVuZ0p1biBCbGRnLgotCQkJCTE1NC0xMCBTYW5zdW5nLURvbmcgS2FuZ25hbS1HdQotCQkJCVNlb3VsIDEzNS0wOTAgIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtMzggICAoaGV4KQkJTWVyaWx1cywgSW5jLgotMDAwNTM4ICAgICAoYmFzZSAxNikJCU1lcmlsdXMsIEluYy4KLQkJCQkjMzA3LTQ2MTY1IFlhbGUgUm9hZAotCQkJCUNoaWxpd2FjaywgQkMKLQkJCQlWMlAgMlAyCi0JCQkJQ0FOQURBCi0KLTAwLTA1LTM5ICAgKGhleCkJCUEgQnJhbmQgTmV3IFdvcmxkIGluIFN3ZWRlbiBBQgotMDAwNTM5ICAgICAoYmFzZSAxNikJCUEgQnJhbmQgTmV3IFdvcmxkIGluIFN3ZWRlbiBBQgotCQkJCUJveCAxMjIzCi0JCQkJU0UtMTY0IDI4IEtJU1RBCi0JCQkJU1dFREVOCi0KLTAwLTA1LTNBICAgKGhleCkJCVdpbGxvd2dsZW4gU2VydmljZXMgUHRlIEx0ZAotMDAwNTNBICAgICAoYmFzZSAxNikJCVdpbGxvd2dsZW4gU2VydmljZXMgUHRlIEx0ZAotCQkJCTE1MSBMb3JvbmcgQ2h1YW4sCi0JCQkJTmV3IFRlY2ggUGFyayAjMDUtMDcsCi0JCQkJNTU2NzQxCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTA1LTNCICAgKGhleCkJCUhhcmJvdXIgTmV0d29ya3MgTHRkLiwgQ28uIEJlaWppbmcKLTAwMDUzQiAgICAgKGJhc2UgMTYpCQlIYXJib3VyIE5ldHdvcmtzIEx0ZC4sIENvLiBCZWlqaW5nCi0JCQkJMTMvRiwgSml1TGluZyBCdWlsZGluZywgTm8uIDIxLAotCQkJCVhpU2FuSHVhbiBOb3J0aCBSZC4sIEJlaWppbmcKLQkJCQkxMDAwODkKLQkJCQlDSElOQQotCi0wMC0wNS0zQyAgIChoZXgpCQlYaXJjb20KLTAwMDUzQyAgICAgKGJhc2UgMTYpCQlYaXJjb20KLQkJCQkyMzAwIENvcnBvcmF0ZSBDZW50ZXIgRHIuCi0JCQkJVGhvdXNhbmQgT2FrcyBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtM0QgICAoaGV4KQkJQWdlcmUgU3lzdGVtcwotMDAwNTNEICAgICAoYmFzZSAxNikJCUFnZXJlIFN5c3RlbXMKLQkJCQkxMzcxIE1jQ2FydGh5IEJsdmQuCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTNFICAgKGhleCkJCUtJRCBTeXN0ZW1lIEdtYkgKLTAwMDUzRSAgICAgKGJhc2UgMTYpCQlLSUQgU3lzdGVtZSBHbWJICi0JCQkJTHVuZWJ1cmdlciBTY2hhbnplIDMwCi0JCQkJMjE2MTQgQnV4dGVodWRlCi0JCQkJR0VSTUFOWQotCi0wMC0wNS0zRiAgIChoZXgpCQlWaXNpb25UZWssIEluYy4KLTAwMDUzRiAgICAgKGJhc2UgMTYpCQlWaXNpb25UZWssIEluYy4KLQkJCQkxMTc1IExha2VzaWRlIERyLgotCQkJCUd1cm5lZSBJTCA2MDAzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNDAgICAoaGV4KQkJRkFTVCBDb3Jwb3JhdGlvbgotMDAwNTQwICAgICAoYmFzZSAxNikJCUZBU1QgQ29ycG9yYXRpb24KLQkJCQkyNzkxLTUgU2hpbW8tVHN1cnVtYQotCQkJCVlhbWF0byBLYW5hZ2F3YQotCQkJCTI0Mi0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMDUtNDEgICAoaGV4KQkJQWR2YW5jZWQgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDU0MSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTItOS03IE5pc2hpa2ljaG8sCi0JCQkJVGFjaGlrYXdhLXNoaSwgVG9reW8KLQkJCQkxOTAtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTA1LTQyICAgKGhleCkJCU90YXJpLCBJbmMuCi0wMDA1NDIgICAgIChiYXNlIDE2KQkJT3RhcmksIEluYy4KLQkJCQk0LTMzLTMgS29rdXJ5by1jaG8sCi0JCQkJQ2hvZnUtc2hpLCBUb2t5byAxODItMDAyMiwKLQkJCQlKQVBBTgotCi0wMC0wNS00MyAgIChoZXgpCQlJUSBXaXJlbGVzcyBHbWJICi0wMDA1NDMgICAgIChiYXNlIDE2KQkJSVEgV2lyZWxlc3MgR21iSAotCQkJCUNhcmwtU2NoZWVsZS1TdHIuIDE0Ci0JCQkJRC0xMjQ4OSBCZXJsaW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTQ0ICAgKGhleCkJCVZhbGxleSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDU0NCAgICAgKGJhc2UgMTYpCQlWYWxsZXkgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTAwNiBXZXN0IENvbGxlZ2UgQXZlLgotCQkJCVN1aXRlIDIwMAotCQkJCVN0YXRlIENvbGxlZ2UgUEEgMTY4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTQ1ICAgKGhleCkJCUludGVybmV0IFBob3RvbmljcwotMDAwNTQ1ICAgICAoYmFzZSAxNikJCUludGVybmV0IFBob3RvbmljcwotCQkJCTEwMzAgQnJvYWQgU3QuLCAybmQgRmxvb3IKLQkJCQlTaHJld3NidXJ5IE5KIDA3NzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS00NiAgIChoZXgpCQlLRERJIE5ldHdvcmsgJiBTb2x1bHRpb25zIEluYy4KLTAwMDU0NiAgICAgKGJhc2UgMTYpCQlLRERJIE5ldHdvcmsgJiBTb2x1bHRpb25zIEluYy4KLQkJCQkyLTMtMSwgTmlzaGlzaGluanVua3Uta3UsCi0JCQkJVG9reW8gMTYzLTA5MDcKLQkJCQlKQVBBTgotCi0wMC0wNS00NyAgIChoZXgpCQlTdGFyZW50IE5ldHdvcmtzCi0wMDA1NDcgICAgIChiYXNlIDE2KQkJU3RhcmVudCBOZXR3b3JrcwotCQkJCTMwIEludGVybmF0aW9uYWwgUGxhY2UKLQkJCQlUZXdrc2J1cnkgTUEgMDE4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTQ4ICAgKGhleCkJCURpc2NvIENvcnBvcmF0aW9uCi0wMDA1NDggICAgIChiYXNlIDE2KQkJRGlzY28gQ29ycG9yYXRpb24KLQkJCQkxMy0xMSBPbW9yaS1LaXRhIDItY2hvbWUKLQkJCQlPdGEta3UgVG9reW8gMTQzLTg1ODAKLQkJCQlKQVBBTgotCi0wMC0wNS00OSAgIChoZXgpCQlTYWxpcmEgT3B0aWNhbCBOZXR3b3JrIFN5c3RlbXMKLTAwMDU0OSAgICAgKGJhc2UgMTYpCQlTYWxpcmEgT3B0aWNhbCBOZXR3b3JrIFN5c3RlbXMKLQkJCQkyNjk0IE9yY2hhcmQgUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS00QSAgIChoZXgpCQlBcmlvIERhdGEgTmV0d29ya3MsIEluYy4KLTAwMDU0QSAgICAgKGJhc2UgMTYpCQlBcmlvIERhdGEgTmV0d29ya3MsIEluYy4KLQkJCQkyODkwIFphbmtlciBSb2FkLCBTdWl0ZSAyMDMKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNEIgICAoaGV4KQkJRWF0b24gQXV0b21hdGlvbiBBRwotMDAwNTRCICAgICAoYmFzZSAxNikJCUVhdG9uIEF1dG9tYXRpb24gQUcKLQkJCQlTcGlubmVyZWlzdHJhc3NlIDgKLQkJCQlTdC5HYWxsZW4gIDkwMDggCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMDUtNEMgICAoaGV4KQkJUkYgSW5ub3ZhdGlvbnMgUHR5IEx0ZAotMDAwNTRDICAgICAoYmFzZSAxNikJCVJGIElubm92YXRpb25zIFB0eSBMdGQKLQkJCQkyMiBCb3VsZGVyIFJvYWQKLQkJCQlNYWxhZ2EgV0EgIDYwOTAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMDUtNEQgICAoaGV4KQkJQnJhbnMgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA1NEQgICAgIChiYXNlIDE2KQkJQnJhbnMgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNTAxIEJvcmFtYWUgQWNhZGVteSBUb3dlcgotCQkJCTM5NS02OSBTaGluYWViYW5nLURvbmcgVG9uZ2phay1HdSBTZW91bAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS00RSAgIChoZXgpCQlQaGlsaXBzCi0wMDA1NEUgICAgIChiYXNlIDE2KQkJUGhpbGlwcwotCQkJCTEwMDAgV2VzdCBNYXVkZSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUtMjgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNEYgICAoaGV4KQkJUFJJVkFURQotMDAwNTRGICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wNS01MCAgIChoZXgpCQlWY29tbXMgQ29ubmVjdCBMaW1pdGVkCi0wMDA1NTAgICAgIChiYXNlIDE2KQkJVmNvbW1zIENvbm5lY3QgTGltaXRlZAotCQkJCTc1IFRoZSBFc3BsYW5hZGUsIExldmVsIDMKLQkJCQlQTyBCb3ggMzgtOTIwCi0JCQkJV2VsbGluZ3RvbiBNYWlsIENlbnRyZSA1MDQ1IFdlbGxpbmd0b24gCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMDUtNTEgICAoaGV4KQkJRiAmIFMgRWxla3Ryb25payBTeXN0ZW1lIEdtYkgKLTAwMDU1MSAgICAgKGJhc2UgMTYpCQlGICYgUyBFbGVrdHJvbmlrIFN5c3RlbWUgR21iSAotCQkJCVVudGVyZSBXYWxkcGxhZXR6ZSAyMwotCQkJCUQtNzA1NjkgU3R1dHRnYXJ0Ci0JCQkJR0VSTUFOWQotCi0wMC0wNS01MiAgIChoZXgpCQlYeWNvdGVjIENvbXB1dGVyIEdtYkgKLTAwMDU1MiAgICAgKGJhc2UgMTYpCQlYeWNvdGVjIENvbXB1dGVyIEdtYkgKLQkJCQlLYXJsLUhlaW56LUJlY2t1cnRzLVN0ci4gNAotCQkJCUQtNTI0MjggSnVsaWNoCi0JCQkJR0VSTUFOWQotCi0wMC0wNS01MyAgIChoZXgpCQlEVkMgQ29tcGFueSwgSW5jLgotMDAwNTUzICAgICAoYmFzZSAxNikJCURWQyBDb21wYW55LCBJbmMuCi0JCQkJMTAyMDAgSHd5IDI5MCBXLgotCQkJCUF1c3RpbiBUWCA3ODIzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNTQgICAoaGV4KQkJUmFuZ2VzdGFyIFdpcmVsZXNzCi0wMDA1NTQgICAgIChiYXNlIDE2KQkJUmFuZ2VzdGFyIFdpcmVsZXNzCi0JCQkJOTU2NSBTb3F1ZWwgRHJpdmUsIFN1aXRlIDEwMAotCQkJCUFwdG9zIENBIDk1MDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS01NSAgIChoZXgpCQlKYXBhbiBDYXNoIE1hY2hpbmUgQ28uLCBMdGQuCi0wMDA1NTUgICAgIChiYXNlIDE2KQkJSmFwYW4gQ2FzaCBNYWNoaW5lIENvLiwgTHRkLgotCQkJCU5vLiAzLTE1LCAyLWNob21lLCBOaXNoaXdha2ksCi0JCQkJSGlyYW5vLWt1LCBPc2FrYQotCQkJCTU0Ny0wMDM1Ci0JCQkJSkFQQU4KLQotMDAtMDUtNTYgICAoaGV4KQkJMzYwIFN5c3RlbXMKLTAwMDU1NiAgICAgKGJhc2UgMTYpCQkzNjAgU3lzdGVtcwotCQkJCTMxMzU1IEFnb3VyYSBSb2FkCi0JCQkJV2VzdGxha2UgVmlsbGFnZSBDQSA5MTM2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNTcgICAoaGV4KQkJQWdpbGUgVFYgQ29ycG9yYXRpb24KLTAwMDU1NyAgICAgKGJhc2UgMTYpCQlBZ2lsZSBUViBDb3Jwb3JhdGlvbgotCQkJCTMzMyBSYXZlbnN3b29kIEF2ZS4sCi0JCQkJQnVpbGRpbmcgMjAyCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNTggICAoaGV4KQkJU3luY2hyb25vdXMsIEluYy4KLTAwMDU1OCAgICAgKGJhc2UgMTYpCQlTeW5jaHJvbm91cywgSW5jLgotCQkJCTc3IExhcyBDb2xpbmFzIExhbmUKLQkJCQlTYW4gSm9zZSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNTkgICAoaGV4KQkJSW50cmFjb20gUy5BLgotMDAwNTU5ICAgICAoYmFzZSAxNikJCUludHJhY29tIFMuQS4KLQkJCQkxOSA1IEtNIE1hcmtvcG91bG91IEF2ZS4KLQkJCQkxOTAwMiBQZWFuaWEKLQkJCQlBdHRpa2EgIAotCQkJCUdSRUVDRQotCi0wMC0wNS01QSAgIChoZXgpCQlQb3dlciBEc2luZSBMdGQuCi0wMDA1NUEgICAgIChiYXNlIDE2KQkJUG93ZXIgRHNpbmUgTHRkLgotCQkJCTEgSGFuYWdhciBTdC4sIFAuTy4gQm94IDcyMjAKLQkJCQlOZXZlIE5lJ2VtYW4gSW5kdXN0cmlhbCBab25lIEhvZCBIYXNoYXJvCi0JCQkJSVNSQUVMCi0KLTAwLTA1LTVCICAgKGhleCkJCUNoYXJsZXMgSW5kdXN0cmllcywgTHRkLgotMDAwNTVCICAgICAoYmFzZSAxNikJCUNoYXJsZXMgSW5kdXN0cmllcywgTHRkLgotCQkJCTU2MDAgQXBvbGxvIERyLgotCQkJCVJvbGxpbmcgTWVhZG93cyBJTCA2MDAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNUMgICAoaGV4KQkJS293YSBDb21wYW55LCBMdGQuCi0wMDA1NUMgICAgIChiYXNlIDE2KQkJS293YSBDb21wYW55LCBMdGQuCi0JCQkJQ2hvZnVnYW9rYSAzLTMtMSwKLQkJCQlDaG9mdS1zaSwgVG9reW8sCi0JCQkJMTgyLTAwMjEKLQkJCQlKQVBBTgotCi0wMC0wNS01RCAgIChoZXgpCQlELUxpbmsgU3lzdGVtcywgSW5jLgotMDAwNTVEICAgICAoYmFzZSAxNikJCUQtTGluayBTeXN0ZW1zLCBJbmMuCi0JCQkJNTMgRGlzY292ZXJ5IERyLgotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNUUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNTVFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTVGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDU1RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS02MCAgIChoZXgpCQlMRUFERVIgQ09NTS5DTy4sIExURAotMDAwNTYwICAgICAoYmFzZSAxNikJCUxFQURFUiBDT01NLkNPLiwgTFRECi0JCQkJMjM0LCBLb21hZS1yaSwgS2loZXVuZy1ldXAsCi0JCQkJWW91bmdzaW4tc2ksIEt5dW5na2ktZG8sCi0JCQkJNDQ5LTkwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS02MSAgIChoZXgpCQluYWMgSW1hZ2UgVGVjaG5vbG9neSwgSW5jLgotMDAwNTYxICAgICAoYmFzZSAxNikJCW5hYyBJbWFnZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJOC03IFNhbmJhbi1jaG8sIENoaXlvZGEta3UsCi0JCQkJVG9reW8sIDEwMi0wMDc1Ci0JCQkJSkFQQU4KLQotMDAtMDUtNjIgICAoaGV4KQkJRGlnaXRhbCBWaWV3IExpbWl0ZWQKLTAwMDU2MiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFZpZXcgTGltaXRlZAotCQkJCTIyMDEgTmFuIFlhbmcgUGxhemEsCi0JCQkJNTcgSHVuZ3RvIFJvYWQsIEt3dW4gVG9uZywKLQkJCQlLb3dsb29uICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDUtNjMgICAoaGV4KQkJSi1Xb3JrcywgSW5jLgotMDAwNTYzICAgICAoYmFzZSAxNikJCUotV29ya3MsIEluYy4KLQkJCQkxMjMyOCBHbGFkc3RvbmUgU3QuICMxCi0JCQkJU3lsbW9yIENBIDkxMzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS02NCAgIChoZXgpCQlUc2luZ2h1YSBCaXR3YXkgQ28uLCBMdGQuCi0wMDA1NjQgICAgIChiYXNlIDE2KQkJVHNpbmdodWEgQml0d2F5IENvLiwgTHRkLgotCQkJCTEyIEZsb29yLCBUb3dlciBDLCBDb3Jwb3JhdGUKLQkJCQlTcXVhcmUsIE5vLiAzNSwgRmluYW5jaWFsIFN0cmVldCwgWGljaGVuCi0JCQkJQ0hJTkEKLQotMDAtMDUtNjUgICAoaGV4KQkJVGFpbHluIENvbW11bmljYXRpb24gQ29tcGFueSBMdGQuCi0wMDA1NjUgICAgIChiYXNlIDE2KQkJVGFpbHluIENvbW11bmljYXRpb24gQ29tcGFueSBMdGQuCi0JCQkJTm8uIDYyLCBMYW5lIDIwNSwgTmFuLVNhbiBSb2FkLAotCQkJCVNlYy4gMiwgTHUtQ2h1IEhzaWFuZywKLQkJCQlUYW95dWFuIEhzaWVuICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LTY2ICAgKGhleCkJCVNlY3VpLmNvbSBDb3Jwb3JhdGlvbgotMDAwNTY2ICAgICAoYmFzZSAxNikJCVNlY3VpLmNvbSBDb3Jwb3JhdGlvbgotCQkJCTE3dGggRmwuIFNhbXN1bmcgWWVva3NhbSBCbGRnLgotCQkJCTY0Ny05LCBZZW9rc2FtLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS02NyAgIChoZXgpCQlFdHltb25pYyBEZXNpZ24sIEluYy4KLTAwMDU2NyAgICAgKGJhc2UgMTYpCQlFdHltb25pYyBEZXNpZ24sIEluYy4KLQkJCQk0MSBCeXJvbiBBdmVudWUKLQkJCQlEb3JjaGVzdGVyLCBPbnRhcmlvLAotCQkJCU5PTCAxR08KLQkJCQlDQU5BREEKLQotMDAtMDUtNjggICAoaGV4KQkJUGlsdG9maXNoIE5ldHdvcmtzIEFCCi0wMDA1NjggICAgIChiYXNlIDE2KQkJUGlsdG9maXNoIE5ldHdvcmtzIEFCCi0JCQkJU3RvcmEgQmFkaHVzZ2F0YW4gMTgtMjAKLQkJCQlTLTQxMTIxIEdvdGVib3JnCi0JCQkJU1dFREVOCi0KLTAwLTA1LTY5ICAgKGhleCkJCVZNd2FyZSwgSW5jLgotMDAwNTY5ICAgICAoYmFzZSAxNikJCVZNd2FyZSwgSW5jLgotCQkJCTM0MDEgSGlsbHZpZXcgQXZlbnVlCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS02QSAgIChoZXgpCQlIZXVmdCBTeXN0ZW10ZWNobmlrIEdtYkgKLTAwMDU2QSAgICAgKGJhc2UgMTYpCQlIZXVmdCBTeXN0ZW10ZWNobmlrIEdtYkgKLQkJCQlCcm9obHRhbHN0ciAzMS0zMwotCQkJCTU2NjU5IEJ1cmdicm9obAotCQkJCURldXRzY2hsYW5kICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTZCICAgKGhleCkJCUMuUC4gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDU2QiAgICAgKGJhc2UgMTYpCQlDLlAuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTJGLCBOby4gODYsIEhzaW4gVGFpIFd1IFJkLiwKLQkJCQlTZWMuIDEsIEhzaS1DaGloLCBUYWlwZWkgSHNpZW4sCi0JCQkJMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS02QyAgIChoZXgpCQlIdW5nIENoYW5nIENvLiwgTHRkLgotMDAwNTZDICAgICAoYmFzZSAxNikJCUh1bmcgQ2hhbmcgQ28uLCBMdGQuCi0JCQkJMTM4NS0xNCwgSnVhbi1Eb25nLAotCQkJCU5hbS1rdSwgSW5jaG9tLCA0MDItMjAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTZEICAgKGhleCkJCVBhY2lmaWMgQ29ycG9yYXRpb24KLTAwMDU2RCAgICAgKGJhc2UgMTYpCQlQYWNpZmljIENvcnBvcmF0aW9uCi0JCQkJMi0yMy0zIEViaXN1LU1pbmFtaSBTaGlidXlhCi0JCQkJVG9reW8gMTUwLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0wNS02RSAgIChoZXgpCQlOYXRpb25hbCBFbmhhbmNlIFRlY2hub2xvZ3ksIEluYy4KLTAwMDU2RSAgICAgKGJhc2UgMTYpCQlOYXRpb25hbCBFbmhhbmNlIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyRiwgTm8uIDE5Ni0zLCBUYXR1bmcgUmQuLCBTZWMuIDMsCi0JCQkJSHNpIENoaWgsIFRhaXBlaSBIc2llbiwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LTZGICAgKGhleCkJCUlubm9tZWRpYSBUZWNobm9sb2dpZXMgUHZ0LiBMdGQuCi0wMDA1NkYgICAgIChiYXNlIDE2KQkJSW5ub21lZGlhIFRlY2hub2xvZ2llcyBQdnQuIEx0ZC4KLQkJCQkjMzI3OCwgMTJ0aCBNYWluIFJvYWQKLQkJCQlIQUwgMm5kIFN0YWdlIEJhbmdhbG9yZSAtIDU2MCAwMDgKLQkJCQlJTkRJQQotCi0wMC0wNS03MCAgIChoZXgpCQlCYXlkZWwgTHRkLgotMDAwNTcwICAgICAoYmFzZSAxNikJCUJheWRlbCBMdGQuCi0JCQkJQmF5ZGVsIEhvdXNlCi0JCQkJQnJvb2sgV2F5IExlYXRoZXJoZWFkLCBTdXJyZXkgS1QyMiA3TkEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNS03MSAgIChoZXgpCQlTZWl3YSBFbGVjdHJvbmljcyBDby4KLTAwMDU3MSAgICAgKGJhc2UgMTYpCQlTZWl3YSBFbGVjdHJvbmljcyBDby4KLQkJCQk3NTcgQW1hYm91a2ksIEt1a2l6YWtpLU1hY2hpCi0JCQkJSW5hc2hpa2ktR3VuLCBJYmFyYWtpLUtlbgotCQkJCTMwMC0xMjUzCi0JCQkJSkFQQU4KLQotMDAtMDUtNzIgICAoaGV4KQkJRGVvbmV0IENvLiwgTHRkLgotMDAwNTcyICAgICAoYmFzZSAxNikJCURlb25ldCBDby4sIEx0ZC4KLQkJCQkjMTI3LTUgSmlueW91bmcgQi9EIDN0aCBGLAotCQkJCU5vbkl5dW4tRG9uZywgS2FuZ05hbS1HdSwKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTczICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDU3MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS03NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1NzQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtNzUgICAoaGV4KQkJQ0RTLUVsZWN0cm9uaWNzIEJWCi0wMDA1NzUgICAgIChiYXNlIDE2KQkJQ0RTLUVsZWN0cm9uaWNzIEJWCi0JCQkJTW96YXJ0IGxhYW4gMzMwCi0JCQkJMzE0NCBOSCBNYWFzc2x1aXMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wNS03NiAgIChoZXgpCQlOU00gVGVjaG5vbG9neSBMdGQuCi0wMDA1NzYgICAgIChiYXNlIDE2KQkJTlNNIFRlY2hub2xvZ3kgTHRkLgotCQkJCTIyIEZsb29yLCBUaW1lcyBUb3dlcgotCQkJCTkyOCBDaGV1bmcgU2hhIFdhbiBSb2FkCi0JCQkJS29sb29uICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDUtNzcgICAoaGV4KQkJU00gSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uCi0wMDA1NzcgICAgIChiYXNlIDE2KQkJU00gSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9uCi0JCQkJMzMwLTEgWWFuZ2phZWRvbmcKLQkJCQlTZW91Y2hvLUd1LCBTZW91bAotCQkJCTEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtNzggICAoaGV4KQkJUFJJVkFURQotMDAwNTc4ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wNS03OSAgIChoZXgpCQlVbml2ZXJzYWwgQ29udHJvbCBTb2x1dGlvbiBDb3JwLgotMDAwNTc5ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBDb250cm9sIFNvbHV0aW9uIENvcnAuCi0JCQkJMTI4NDMgRm9vdGhpbGwgQmx2ZC4KLQkJCQlVbml0ICNkCi0JCQkJU3lsbWFyIENBIDkxMzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS03QSAgIChoZXgpCQlPdmVydHVyZSBOZXR3b3JrcwotMDAwNTdBICAgICAoYmFzZSAxNikJCU92ZXJ0dXJlIE5ldHdvcmtzCi0JCQkJNjM3IERhdmlzIERyaXZlCi0JCQkJTW9ycmlzdmlsbGUgTkMgMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTdCICAgKGhleCkJCUNodW5nIE5hbSBFbGVjdHJvbmljIENvLiwgTHRkLgotMDAwNTdCICAgICAoYmFzZSAxNikJCUNodW5nIE5hbSBFbGVjdHJvbmljIENvLiwgTHRkLgotCQkJCVVuaXQgMywgMS9GLCBGZXN0aWdvb2QgQ2VudHJlCi0JCQkJTm8uIDggTG9rIFlpcCBSb2FkLCBPbiBMb2sKLQkJCQlUc3VlbiBGYW5saW5nLCAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDUtN0MgICAoaGV4KQkJUkNPIFNlY3VyaXR5IEFCCi0wMDA1N0MgICAgIChiYXNlIDE2KQkJUkNPIFNlY3VyaXR5IEFCCi0JCQkJQm94IDcwNQotCQkJCVNFIDE3NiAyNyBKYXJmYWxsYQotCQkJCVNXRURFTgotCi0wMC0wNS03RCAgIChoZXgpCQlTdW4gQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDU3RCAgICAgKGJhc2UgMTYpCQlTdW4gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQlHbG9yaWEgQmxkZyA2dGgKLQkJCQkxLTMgQWdlYmEtQ2hvIFNoaW5qdWt1LWt1Ci0JCQkJVG9reW8gIDE2Mi0wODIKLQkJCQlKQVBBTgotCi0wMC0wNS03RSAgIChoZXgpCQlFY2tlbG1hbm4gU3RldWVydW5nc3RlY2huaWsgR21iSAotMDAwNTdFICAgICAoYmFzZSAxNikJCUVja2VsbWFubiBTdGV1ZXJ1bmdzdGVjaG5payBHbWJICi0JCQkJQmVybGluZXIgU3RyYXNzZSAxNjEKLQkJCQk2NTIwNSBXaWVzYmFkZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTdGICAgKGhleCkJCUFjcWlzIFRlY2hub2xvZ3kKLTAwMDU3RiAgICAgKGJhc2UgMTYpCQlBY3FpcyBUZWNobm9sb2d5Ci0JCQkJMTYyMSBXZXN0IEVsIENhbWlubyBSZWFsCi0JCQkJTXQuIFZpZXcgQ0EgOTQwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTgwICAgKGhleCkJCUZpYnJvbGFuIEx0ZC4KLTAwMDU4MCAgICAgKGJhc2UgMTYpCQlGaWJyb2xhbiBMdGQuCi0JCQkJNiBIYXlldHppcmEgU3RyZWV0Ci0JCQkJWW9rbmVhbSBJbGxpdCAyMDY5MgotCQkJCUlTUkFFTAotCi0wMC0wNS04MSAgIChoZXgpCQlTbmVsbAotMDAwNTgxICAgICAoYmFzZSAxNikJCVNuZWxsCi0JCQkJU291dGhsZWlnaCBQYXJrIEhvdXNlCi0JCQkJRWFzdGxlaWdoIFJvYWQsIEhhdmFudAotCQkJCUhhbXBzaGlyZSAgUDA5IDJQRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LTgyICAgKGhleCkJCUNsZWFyQ3ViZSBUZWNobm9sb2d5Ci0wMDA1ODIgICAgIChiYXNlIDE2KQkJQ2xlYXJDdWJlIFRlY2hub2xvZ3kKLQkJCQk4ODM0IENhcGl0YWwgb2YgVGV4YXMgSHd5LAotCQkJCVN1aXRlIDE0MAotCQkJCUF1c3RpbiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtODMgICAoaGV4KQkJSW1hZ2VDb20gTGltaXRlZAotMDAwNTgzICAgICAoYmFzZSAxNikJCUltYWdlQ29tIExpbWl0ZWQKLQkJCQlDZWRhcnMgUGFyaywgQ2VkYXJzIFJvYWQsCi0JCQkJTWFpZGVuaGVhZCwgQmVya3NoaXJlLAotCQkJCVNMNiAxUloKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNS04NCAgIChoZXgpCQlBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4KLTAwMDU4NCAgICAgKGJhc2UgMTYpCQlBYnNvbHV0ZVZhbHVlIFN5c3RlbXMsIEluYy4KLQkJCQk3MTUtRCBOb3J0aCBEci4KLQkJCQlNZWxib3VybmUgRkwgMzI5MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTg1ICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MsIEluYy4KLTAwMDU4NSAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTE5NCBOLiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTg2ICAgKGhleCkJCUx1Y2VudCBUZWNobm9sb2dpZXMKLTAwMDU4NiAgICAgKGJhc2UgMTYpCQlMdWNlbnQgVGVjaG5vbG9naWVzCi0JCQkJMTcwMSBIYXJib3IgQmF5IFBhcmt3YXkKLQkJCQlBbGFtZWRhIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS04NyAgIChoZXgpCQlMb2N1cywgSW5jb3Jwb3JhdGVkCi0wMDA1ODcgICAgIChiYXNlIDE2KQkJTG9jdXMsIEluY29ycG9yYXRlZAotCQkJCTU1NDAgUmVzZWFyY2ggUGFyayBEcml2ZQotCQkJCUZpdGNoYnVyZyBDZW50ZXIKLQkJCQlNYWRpc29uIFdJIDUzNzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS04OCAgIChoZXgpCQlTZW5zb3JpYSBDb3JwLgotMDAwNTg4ICAgICAoYmFzZSAxNikJCVNlbnNvcmlhIENvcnAuCi0JCQkJMTU5NTAgQmVybmFyZG8gQ3RyLiBEci4KLQkJCQlTdWl0ZSBKCi0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS04OSAgIChoZXgpCQlOYXRpb25hbCBEYXRhY29tcHV0ZXIKLTAwMDU4OSAgICAgKGJhc2UgMTYpCQlOYXRpb25hbCBEYXRhY29tcHV0ZXIKLQkJCQk5MDAgTWlkZGxlc2V4IFRway4KLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LThBICAgKGhleCkJCU5ldGNvbSBDby4sIEx0ZC4KLTAwMDU4QSAgICAgKGJhc2UgMTYpCQlOZXRjb20gQ28uLCBMdGQuCi0JCQkJMUYsIE5vLiA3LCBMYW5lIDI0MiwKLQkJCQlIdSBMaWluIFN0cmVldAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS04QiAgIChoZXgpCQlJUG1lbnRhbCwgSW5jLgotMDAwNThCICAgICAoYmFzZSAxNikJCUlQbWVudGFsLCBJbmMuCi0JCQkJOEYtOSwgTm8uIDM1LCBIc2luIFRhaSBSZC4KLQkJCQlKdWliZWksIEhzaW5jaHUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LThDICAgKGhleCkJCU9wZW50ZWNoIEluYy4KLTAwMDU4QyAgICAgKGJhc2UgMTYpCQlPcGVudGVjaCBJbmMuCi0JCQkJNkYsIERvbmdXb24gQmxkZy4sIDI3NQotCQkJCVlvdW5namFlLURvbmcsIFNlb2Noby1HdSwKLQkJCQlTZW91bCAgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS04RCAgIChoZXgpCQlMeW54IFBob3RvbmljIE5ldHdvcmtzLCBJbmMuCi0wMDA1OEQgICAgIChiYXNlIDE2KQkJTHlueCBQaG90b25pYyBOZXR3b3JrcywgSW5jLgotCQkJCTEzIEhhbWVsYWhhIFN0LgotCQkJCVJvc2gtSGVheW4KLQkJCQlJU1JBRUwKLQotMDAtMDUtOEUgICAoaGV4KQkJRmxleHRyb25pY3MgSW50ZXJuYXRpb25hbCBHbWJIICYgQ28uIE5mZy4gS0cKLTAwMDU4RSAgICAgKGJhc2UgMTYpCQlGbGV4dHJvbmljcyBJbnRlcm5hdGlvbmFsIEdtYkggJiBDby4gTmZnLiBLRwotCQkJCVNjaHJhY2tnYXNzZSA5LTE1Ci0JCQkJS2luZGJlcmcgIDg2NTAKLQkJCQlBVVNUUklBCi0KLTAwLTA1LThGICAgKGhleCkJCUNMQ3NvZnQgY28uCi0wMDA1OEYgICAgIChiYXNlIDE2KQkJQ0xDc29mdCBjby4KLQkJCQlEZXB0LiBvZiBFbGVjdHJpY2FsIEVuZ2luZWVyaW5nCi0JCQkJS0FJU1QsIDM3My0xIEt1c2VvbmctZG9uZywgWXVzZW9uZy1ndSwgRAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS05MCAgIChoZXgpCQlTd2lzc3ZvaWNlIEx0ZC4KLTAwMDU5MCAgICAgKGJhc2UgMTYpCQlTd2lzc3ZvaWNlIEx0ZC4KLQkJCQlaaWVnZWxtYXR0c3RyYXNzZSAxCi0JCQkJNDUwMyBTb2xvdGh1cm4KLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wNS05MSAgIChoZXgpCQlBY3RpdmUgU2lsaWNvbiBMdGQuCi0wMDA1OTEgICAgIChiYXNlIDE2KQkJQWN0aXZlIFNpbGljb24gTHRkLgotCQkJCUJydW5uZWwgU2NpZW5jZSBQYXJrCi0JCQkJS2luZ3N0b24gTGFuZSwgVXhicmlkZ2UsCi0JCQkJTWlkZHggIFVCOCAzUFEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNS05MiAgIChoZXgpCQlQdWx0ZWsgQ29ycC4KLTAwMDU5MiAgICAgKGJhc2UgMTYpCQlQdWx0ZWsgQ29ycC4KLQkJCQk3NC0xLCBZYW1hc2hpdGEtY2hvLAotCQkJCU5ha2Eta3UsIFRva29oYW1hLWNpdHksCi0JCQkJMjMxLTAwMjMKLQkJCQlKQVBBTgotCi0wMC0wNS05MyAgIChoZXgpCQlHcmFtbWFyIEVuZ2luZSBJbmMuCi0wMDA1OTMgICAgIChiYXNlIDE2KQkJR3JhbW1hciBFbmdpbmUgSW5jLgotCQkJCTkyMSBFYXN0d2luZCBEcml2ZQotCQkJCVN1aXRlIDEyMgotCQkJCVdlc3RlcnZpbGxlIE9IIDQzMDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS05NCAgIChoZXgpCQlJWFhBVCBBdXRvbWF0aW9uIEdtYkgKLTAwMDU5NCAgICAgKGJhc2UgMTYpCQlJWFhBVCBBdXRvbWF0aW9uIEdtYkgKLQkJCQlMZWlibml6c3RyYXNzZSAxNQotCQkJCTg4MjUwIFdlaW5nYXJ0ZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTk1ICAgKGhleCkJCUFsZXNpcyBDb3Jwb3JhdGlvbgotMDAwNTk1ICAgICAoYmFzZSAxNikJCUFsZXNpcyBDb3Jwb3JhdGlvbgotCQkJCTE2MzMgMjZ0aCBTdHJlZXQKLQkJCQlTYW50YSBNb25pY2EgQ0EgOTA0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LTk2ICAgKGhleCkJCUdlbm90ZWNoIENvLiwgTHRkLgotMDAwNTk2ICAgICAoYmFzZSAxNikJCUdlbm90ZWNoIENvLiwgTHRkLgotCQkJCSMzMDggR3Vua29vayBCbGRnLiwKLQkJCQkyODgtMSBEb2tzYW4tRG9uZwotCQkJCUd1bWNob24tR3UgU2VvdWwgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LTk3ICAgKGhleCkJCUVhZ2xlIFRyYWZmaWMgQ29udHJvbCBTeXN0ZW1zCi0wMDA1OTcgICAgIChiYXNlIDE2KQkJRWFnbGUgVHJhZmZpYyBDb250cm9sIFN5c3RlbXMKLQkJCQk4MDA0IENhbWVyb24gUm9hZAotCQkJCUF1c3RpbiBUWCA3ODc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtOTggICAoaGV4KQkJQ1JPTk9TIFMuci5sLgotMDAwNTk4ICAgICAoYmFzZSAxNikJCUNST05PUyBTLnIubC4KLQkJCQlWaWEgY2F2b3VyIDU4L0EKLQkJCQkyMzkwMCBMRUNDTyAoTEMpCi0JCQkJSVRBTFkKLQotMDAtMDUtOTkgICAoaGV4KQkJRFJTIFRlc3QgYW5kIEVuZXJneSBNYW5hZ2VtZW50IG9yIERSUy1URU0KLTAwMDU5OSAgICAgKGJhc2UgMTYpCQlEUlMgVGVzdCBhbmQgRW5lcmd5IE1hbmFnZW1lbnQgb3IgRFJTLVRFTQotCQkJCTExMCBXeW5uIERyaXZlCi0JCQkJSHVudHN2aWxsZSBBTCAzNTgwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtOUEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNTlBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtOUIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNTlCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtOUMgICAoaGV4KQkJS2xlaW5rbmVjaHQgR21iSCwgSW5nLiBCdWVybwotMDAwNTlDICAgICAoYmFzZSAxNikJCUtsZWlua25lY2h0IEdtYkgsIEluZy4gQnVlcm8KLQkJCQlCYWNoc3RyYXNzZSAzMAotCQkJCUQtODI1NDEgTXVlbnNpbmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LTlEICAgKGhleCkJCURhbmllbCBDb21wdXRpbmcgU3lzdGVtcywgSW5jLgotMDAwNTlEICAgICAoYmFzZSAxNikJCURhbmllbCBDb21wdXRpbmcgU3lzdGVtcywgSW5jLgotCQkJCTMyMDggOHRoIEF2ZW51ZSBORSAjMTE4Ci0JCQkJQ2FsZ2FyeSBBbGJlcnRhCi0JCQkJVDJBIDdWOAotCQkJCUNBTkFEQQotCi0wMC0wNS05RSAgIChoZXgpCQlaaW53ZWxsIENvcnBvcmF0aW9uCi0wMDA1OUUgICAgIChiYXNlIDE2KQkJWmlud2VsbCBDb3Jwb3JhdGlvbgotCQkJCTdGLCBOby41MTIsIFl1YW4tU2hhbiBSb2FkCi0JCQkJQ2hhbmctaG8gY2l0eSBUYWlwZWkgSHNpZW4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LTlGICAgKGhleCkJCVlvdHRhIE5ldHdvcmtzLCBJbmMuCi0wMDA1OUYgICAgIChiYXNlIDE2KQkJWW90dGEgTmV0d29ya3MsIEluYy4KLQkJCQkyMjAxIEF2ZW51ZSBLCi0JCQkJUGxhbm8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUEwICAgKGhleCkJCU1PQklMSU5FIEtmdC4KLTAwMDVBMCAgICAgKGJhc2UgMTYpCQlNT0JJTElORSBLZnQuCi0JCQkJTGVoZWwgVXRjYSAxNAotCQkJCUJVREFQRVNUCi0JCQkJSC0xMTM0Ci0JCQkJSFVOR0FSWQotCi0wMC0wNS1BMSAgIChoZXgpCQlaZW5vY29tCi0wMDA1QTEgICAgIChiYXNlIDE2KQkJWmVub2NvbQotCQkJCU5vLjQwMiwgNHRoIGZsb29yLCBXb25nb2sgQmxkZy4KLQkJCQk4MzAtMzgsIFlva3NhbS1Eb25nLCBHYW5nbmFtLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1BMiAgIChoZXgpCQlDRUxPWCBOZXR3b3JrcwotMDAwNUEyICAgICAoYmFzZSAxNikJCUNFTE9YIE5ldHdvcmtzCi0JCQkJOTQwIFdlc3QgUG9ydCBQbGF6YSAtIFN0ZS4gIzMwMAotCQkJCVN0LiBMb3VpcyBNTyA2MzE0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQTMgICAoaGV4KQkJUUVJLCBJbmMuCi0wMDA1QTMgICAgIChiYXNlIDE2KQkJUUVJLCBJbmMuCi0JCQkJNjAgRmFkZW0gUm9hZAotCQkJCVNwcmluZ2ZpZWxkIE5KIDA3MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1BNCAgIChoZXgpCQlMdWNpZCBWb2ljZSBMdGQuCi0wMDA1QTQgICAgIChiYXNlIDE2KQkJTHVjaWQgVm9pY2UgTHRkLgotCQkJCTUgSmFib3RpbnNraSBTdHJlZXQKLQkJCQlSYW1hdC1HYW4sIDUyNTIwCi0JCQkJSVNSQUVMCi0KLTAwLTA1LUE1ICAgKGhleCkJCUtPVFQKLTAwMDVBNSAgICAgKGJhc2UgMTYpCQlLT1RUCi0JCQkJU3VpdGUgMzA1IERhZWhhIEIvRAotCQkJCTY4MCBZZW9rc2FtLURvbmcsIEthbmdOYW0tR3UgU2VvdWwKLQkJCQkxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUE2ICAgKGhleCkJCUV4dHJvbiBFbGVjdHJvbmljcwotMDAwNUE2ICAgICAoYmFzZSAxNikJCUV4dHJvbiBFbGVjdHJvbmljcwotCQkJCTEyMzAgUy4gTGV3aXMKLQkJCQlBbmFoaWVtIENBIDkyODA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1BNyAgIChoZXgpCQlIeXBlcmNoaXAsIEluYy4KLTAwMDVBNyAgICAgKGJhc2UgMTYpCQlIeXBlcmNoaXAsIEluYy4KLQkJCQkxODAgUGVlbCBTdHJlZXQgLSBTdGUuICMzMzMKLQkJCQlNb250cmVhbCwgUXVlYmVjCi0JCQkJSDNDIDJHNwotCQkJCUNBTkFEQQotCi0wMC0wNS1BOCAgIChoZXgpCQlXWUxFIEVMRUNUUk9OSUNTCi0wMDA1QTggICAgIChiYXNlIDE2KQkJV1lMRSBFTEVDVFJPTklDUwotCQkJCTMwMDAgQk9XRVJTIEFWRU5VRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUxLTA5MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUE5ICAgKGhleCkJCVByaW5jZXRvbiBOZXR3b3JrcywgSW5jLgotMDAwNUE5ICAgICAoYmFzZSAxNikJCVByaW5jZXRvbiBOZXR3b3JrcywgSW5jLgotCQkJCTEwMCBDZW50dXJ5IENlbnRlciBDdC4gIzEwMAotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1BQSAgIChoZXgpCQlNb29yZSBJbmR1c3RyaWVzIEludGVybmF0aW9uYWwgSW5jLgotMDAwNUFBICAgICAoYmFzZSAxNikJCU1vb3JlIEluZHVzdHJpZXMgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJMTY2NTAgU2Nob2VuYm9ybiBTdC4KLQkJCQlOb3J0aCBIaWxscyBDQSA5MTM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQUIgICAoaGV4KQkJQ3liZXIgRm9uZSwgSW5jLgotMDAwNUFCICAgICAoYmFzZSAxNikJCUN5YmVyIEZvbmUsIEluYy4KLQkJCQk5ODkgT2xkIEVhZ2xlIFNjaG9vbCBSb2FkCi0JCQkJU3VpdGUgODAwCi0JCQkJV2F5bmUgUEEgMTkwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUFDICAgKGhleCkJCU5vcnRoZXJuIERpZ2l0YWwsIEluYy4KLTAwMDVBQyAgICAgKGJhc2UgMTYpCQlOb3J0aGVybiBEaWdpdGFsLCBJbmMuCi0JCQkJMTAzIFJhbmRhbGwgRHJpdmUKLQkJCQlXYXRlcmxvbyAgT250YXJpbyBOMlYgMUM1Ci0JCQkJQ0FOQURBCi0KLTAwLTA1LUFEICAgKGhleCkJCVRvcHNwaW4gQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDVBRCAgICAgKGJhc2UgMTYpCQlUb3BzcGluIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNTE1IEVsbGlzIFN0cmVldAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUFFICAgKGhleCkJCU1lZGlhcG9ydCBVU0EKLTAwMDVBRSAgICAgKGJhc2UgMTYpCQlNZWRpYXBvcnQgVVNBCi0JCQkJMTcxNTEgTmV3aG9wZSBBdmUuICMyMDIKLQkJCQlGb3VudGFpbiBWYWxsZXkgQ0EgOTI3MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUFGICAgKGhleCkJCUlubm9TY2FuIENvbXB1dGluZyBBL1MKLTAwMDVBRiAgICAgKGJhc2UgMTYpCQlJbm5vU2NhbiBDb21wdXRpbmcgQS9TCi0JCQkJU29yZW4gRnJpY2hzdmVqIDQyUgotCQkJCURLLTgyMzAgQWFieWhvagotCQkJCURFTk1BUksKLQotMDAtMDUtQjAgICAoaGV4KQkJS29yZWEgQ29tcHV0ZXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDVCMCAgICAgKGJhc2UgMTYpCQlLb3JlYSBDb21wdXRlciBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUtDVCBCbGRnLCAxMTEtMyBZYW5namFlLURvbmcsCi0JCQkJU2VvY2hvLUd1LCBTZW91bAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1CMSAgIChoZXgpCQlBU0IgVGVjaG5vbG9neSBCVgotMDAwNUIxICAgICAoYmFzZSAxNikJCUFTQiBUZWNobm9sb2d5IEJWCi0JCQkJRGUgUm9uZGUgMTVBCi0JCQkJNTY4MyBDWiBCZXN0Ci0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDUtQjIgICAoaGV4KQkJTWVkaXNvbiBDby4sIEx0ZC4KLTAwMDVCMiAgICAgKGJhc2UgMTYpCQlNZWRpc29uIENvLiwgTHRkLgotCQkJCTk5Ny00LCBTYWVjaGktRG9uZywKLQkJCQlLYW5nbmFtLWt1LCBTb3VlbCwKLQkJCQkxMzUtMjgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUIzICAgKGhleCkJCUFzYWhpLUVuZ2luZWVyaW5nIENvLiwgTHRkLgotMDAwNUIzICAgICAoYmFzZSAxNikJCUFzYWhpLUVuZ2luZWVyaW5nIENvLiwgTHRkLgotCQkJCTMtNi0xMi0yIEdha3VlbmhpZ2FzaGktY2hvCi0JCQkJS29kYWlyYS1zaGkKLQkJCQlUb2t5byAgMTg3LTAwNDMKLQkJCQlKQVBBTgotCi0wMC0wNS1CNCAgIChoZXgpCQlBY2VleCBDb3Jwb3JhdGlvbgotMDAwNUI0ICAgICAoYmFzZSAxNikJCUFjZWV4IENvcnBvcmF0aW9uCi0JCQkJMkYsIE5vLiAyLCBBbGxleSAxLCBTemUtV2VpIExhbmUKLQkJCQlDaHVuZy1DaGVuZyBSZC4sIEhzaW50aWVuLCBUYWlwZWkKLQkJCQkyMzEzOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDUtQjUgICAoaGV4KQkJQnJvYWRjb20gVGVjaG5vbG9naWVzCi0wMDA1QjUgICAgIChiYXNlIDE2KQkJQnJvYWRjb20gVGVjaG5vbG9naWVzCi0JCQkJMTM3LTA2MAotCQkJCTg1OC0zMSBZdWplb25nIEJMRCwgQmFuZ2JhZS1Eb25nCi0JCQkJU2VjaG8tR3UgU2VvdWwsIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1CNiAgIChoZXgpCQlJTlNZUyBNaWNyb2VsZWN0cm9uaWNzIEdtYkgKLTAwMDVCNiAgICAgKGJhc2UgMTYpCQlJTlNZUyBNaWNyb2VsZWN0cm9uaWNzIEdtYkgKLQkJCQlXYWZmbmVyZ2Fzc2UgOAotCQkJCTkzMDQ3IFJlZ2Vuc2J1cmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LUI3ICAgKGhleCkJCUFyYm9yIFRlY2hub2xvZ3kgQ29ycC4KLTAwMDVCNyAgICAgKGJhc2UgMTYpCQlBcmJvciBUZWNobm9sb2d5IENvcnAuCi0JCQkJNUYsIE5vLiA3MzgsIFpob25nIFpoZW5nIFJkLiwKLQkJCQlaaG9uZyBIbyAyMzUsIFRhaXBlaSwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LUI4ICAgKGhleCkJCUVsZWN0cm9uaWMgRGVzaWduIEFzc29jaWF0ZXMsIEluYy4KLTAwMDVCOCAgICAgKGJhc2UgMTYpCQlFbGVjdHJvbmljIERlc2lnbiBBc3NvY2lhdGVzLCBJbmMuCi0JCQkJMzMxIEFyY2FkbyBSZC4gTlcKLQkJCQlTdWl0ZSBDLTEKLQkJCQlMaWxidXJuIEdBIDMwMDQ3LTI4NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUI5ICAgKGhleCkJCUFpcnZhbmEsIEluYy4KLTAwMDVCOSAgICAgKGJhc2UgMTYpCQlBaXJ2YW5hLCBJbmMuCi0JCQkJMjUgSW5kdXN0cmlhbCBBdmUuCi0JCQkJQ2hsZW1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQkEgICAoaGV4KQkJQXJlYSBOZXR3b2VrcywgSW5jLgotMDAwNUJBICAgICAoYmFzZSAxNikJCUFyZWEgTmV0d29la3MsIEluYy4KLQkJCQkxMTQ4IEV1Y2xpZCBBdmUuLCBTdWl0ZSA0MDAKLQkJCQlDbGV2ZWxhbmQgT0ggNDQxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtQkIgICAoaGV4KQkJTXlzcGFjZSBBQgotMDAwNUJCICAgICAoYmFzZSAxNikJCU15c3BhY2UgQUIKLQkJCQlTdmVhdmFnZW4gMzMKLQkJCQlTRS0xMTEzNCBTdG9ja2hvbG0KLQkJCQlTV0VERU4KLQotMDAtMDUtQkMgICAoaGV4KQkJUmVzb3JzeXMgTHRkLgotMDAwNUJDICAgICAoYmFzZSAxNikJCVJlc29yc3lzIEx0ZC4KLQkJCQk4MCBKb2huc2RvbmUgQXZlbnVlLAotCQkJCUhpbGluZ3RvbiwgR2xhc2dvdywKLQkJCQlTY290bGFuZCAgRzUyIDRMVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA1LUJEICAgKGhleCkJCVJPQVggQlYKLTAwMDVCRCAgICAgKGJhc2UgMTYpCQlST0FYIEJWCi0JCQkJU3RlcnJlbmJlcmd3ZWcgMjkKLQkJCQlOTC0zNzY5IEJTICBTT0VTVEVSQkVSRwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTA1LUJFICAgKGhleCkJCUtvbmdzYmVyZyBTZWF0ZXggQVMKLTAwMDVCRSAgICAgKGJhc2UgMTYpCQlLb25nc2JlcmcgU2VhdGV4IEFTCi0JCQkJUGlyc2VudGVyZXQKLQkJCQlOLTc1NjIgVHJvbmRoZWltCi0JCQkJTk9SV0FZCi0KLTAwLTA1LUJGICAgKGhleCkJCUp1c3RFenkgVGVjaG5vbG9neSwgSW5jLgotMDAwNUJGICAgICAoYmFzZSAxNikJCUp1c3RFenkgVGVjaG5vbG9neSwgSW5jLgotCQkJCTVGLCBOby4gMzI0LCBTZWMuIDEsIEp1bmdodWEgUmQuCi0JCQkJSHNpbmNodSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS1DMCAgIChoZXgpCQlEaWdpdGFsIE5ldHdvcmsgQWxhY2FydGUgQ28uLCBMdGQuCi0wMDA1QzAgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBOZXR3b3JrIEFsYWNhcnRlIENvLiwgTHRkLgotCQkJCUExMDQsIFNlb3VsIEJ1c2luZXNzIEluY3ViYXRvcgotCQkJCTY0Ny0yNiwgRGV1bmdDaHVuLURvbmcsIEthbmdzZW8tR3UKLQkJCQlTZW91bCAgMTU3LTAzMCwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtQzEgICAoaGV4KQkJQS1LeXVuZyBNb3Rpb24sIEluYy4KLTAwMDVDMSAgICAgKGJhc2UgMTYpCQlBLUt5dW5nIE1vdGlvbiwgSW5jLgotCQkJCTU0LTEwLCBNdW5qdW5nLURvbmcKLQkJCQlTb25ncGEtS3UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1DMiAgIChoZXgpCQlTb3JvbnRpLCBJbmMuCi0wMDA1QzIgICAgIChiYXNlIDE2KQkJU29yb250aSwgSW5jLgotCQkJCTEyMjU3IFNvdXRoIEJ1c2luZXNzIFBhcmsgRHJpdmUKLQkJCQkjMTYwCi0JCQkJRHJhcGVyIFV0YWggODQwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUMzICAgKGhleCkJCVBhY2lmaWMgSW5zdHJ1bWVudHMsIEluYy4KLTAwMDVDMyAgICAgKGJhc2UgMTYpCQlQYWNpZmljIEluc3RydW1lbnRzLCBJbmMuCi0JCQkJNDA4MCBQaWtlIExhbmUKLQkJCQlDb25jb3JkIENBIDk0NTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1DNCAgIChoZXgpCQlUZWxlY3QsIEluYy4KLTAwMDVDNCAgICAgKGJhc2UgMTYpCQlUZWxlY3QsIEluYy4KLQkJCQkyMTExIE4uIE1vbHRlciBSb2FkCi0JCQkJTGliZXJ0eSBMYWtlIFdBIDk5MDE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1DNSAgIChoZXgpCQlGbGFnYSBIRgotMDAwNUM1ICAgICAoYmFzZSAxNikJCUZsYWdhIEhGCi0JCQkJVmVzdHVyaGxpZCA3Ci0JCQkJSVMtMTA1IFJleWtqYXZpawotCQkJCUlDRUxBTkQKLQotMDAtMDUtQzYgICAoaGV4KQkJVHJpeiBDb21tdW5pY2F0aW9ucwotMDAwNUM2ICAgICAoYmFzZSAxNikJCVRyaXogQ29tbXVuaWNhdGlvbnMKLQkJCQlBbndvbiBCbGRnLiA3dGggRmwuCi0JCQkJMTQtMTUgWW9pZG8tRG9uZyBZb3VuZ2RldW5ncG8tR3UKLQkJCQlTZW91bCAgMTUwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1DNyAgIChoZXgpCQlJL0YtQ09NIEEvUwotMDAwNUM3ICAgICAoYmFzZSAxNikJCUkvRi1DT00gQS9TCi0JCQkJRWxsZWdhYXJkdmVqIDM2Ci0JCQkJNjQwMCBTb2VuZGVyYm9yZwotCQkJCURFTk1BUksKLQotMDAtMDUtQzggICAoaGV4KQkJVkVSWVRFQ0gKLTAwMDVDOCAgICAgKGJhc2UgMTYpCQlWRVJZVEVDSAotCQkJCSM0MDIsIEphbmcgWW91bmcgU2hpbCBLd2FuLAotCQkJCVZlbnR1cmUgVG93biwgMTY4OC01IFNoaW5pbC1Eb25nLCBEYWVkZW8KLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtQzkgICAoaGV4KQkJTEcgSW5ub3RlayBDby4sIEx0ZC4KLTAwMDVDOSAgICAgKGJhc2UgMTYpCQlMRyBJbm5vdGVrIENvLiwgTHRkLgotCQkJCUxHIENvbXBvbmVudCBSJkQgQ2VudGVyCi0JCQkJMTI3MSwgU2EtRG9uZywgU2FuZ3Jvay1ndQotCQkJCUFuc2FuLXNpIEd5ZW9uZ2dpLWRvIDQyNi03OTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtQ0EgICAoaGV4KQkJSGl0cm9uIFRlY2hub2xvZ3ksIEluYy4KLTAwMDVDQSAgICAgKGJhc2UgMTYpCQlIaXRyb24gVGVjaG5vbG9neSwgSW5jLgotCQkJCUhTSU5DSFUgU0JJUCBTVUJTSURJQVJZCi0JCQkJTm8uIDI1IFImRCAxc3QgUmQuIFNjaWVuY2UtQmFzZWQgSW5kdXN0cgotCQkJCUhzaW4tY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA1LUNCICAgKGhleCkJCVJPSVMgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA1Q0IgICAgIChiYXNlIDE2KQkJUk9JUyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk2dGggRiBDaGFuZ2h5dW4gQi9ELCA5NjAtMQotCQkJCUhvZ3llLURvbmcgRG9uZ2FuLUt1IEFueWFuZywKLQkJCQk0MzEtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUNDICAgKGhleCkJCVN1bXRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNUNDICAgICAoYmFzZSAxNikJCVN1bXRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTFGLCBOby4gMTczLCBHdW5nIFl1YW4gUm9hZCwKLQkJCQlIc2luY2h1IENpdHkgIDMwMDU0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS1DRCAgIChoZXgpCQlEZW5vbiwgTHRkLgotMDAwNUNEICAgICAoYmFzZSAxNikJCURlbm9uLCBMdGQuCi0JCQkJMzUtMSwgU2FnYW1pb25vIDctY2hvbWUsCi0JCQkJU2FnYW1paGFyYS1zaGkKLQkJCQlLYW5hZ2F3YSAgMjI4LTg1MDUKLQkJCQlKQVBBTgotCi0wMC0wNS1DRSAgIChoZXgpCQlQcm9saW5rIE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbgotMDAwNUNFICAgICAoYmFzZSAxNikJCVByb2xpbmsgTWljcm9zeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJNkYsIE5vLiAzNDksIFlhbmctS3VhbmcgU3QuCi0JCQkJTmVpLUh1IFRhaXBlaSwgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNS1DRiAgIChoZXgpCQlUaHVuZGVyIFJpdmVyIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNUNGICAgICAoYmFzZSAxNikJCVRodW5kZXIgUml2ZXIgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjMgQ29ycG9yYXRlIFBsYXphLCBTdWl0ZSAyNTAKLQkJCQlOZXdwb3J0IEJlYWNoIENBIDkyNjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1EMCAgIChoZXgpCQlTb2xpbmV0IFN5c3RlbXMKLTAwMDVEMCAgICAgKGJhc2UgMTYpCQlTb2xpbmV0IFN5c3RlbXMKLQkJCQkxMjAwLTE4MCBFbGdpbiBTdC4KLQkJCQlPdHRhd2EgT250YXJpbwotCQkJCUsyUCAySzMKLQkJCQlDQU5BREEKLQotMDAtMDUtRDEgICAoaGV4KQkJTWV0YXZlY3RvciBUZWNobm9sb2dpZXMKLTAwMDVEMSAgICAgKGJhc2UgMTYpCQlNZXRhdmVjdG9yIFRlY2hub2xvZ2llcwotCQkJCVN0ZWVud2VnIE9wIEdpZXJsZSwgMTAwCi0JCQkJQi0yMzAwIFR1cm5ob3V0LAotCQkJCUJFTEdJVU0KLQotMDAtMDUtRDIgICAoaGV4KQkJREFQIFRlY2hub2xvZ2llcwotMDAwNUQyICAgICAoYmFzZSAxNikJCURBUCBUZWNobm9sb2dpZXMKLQkJCQk5NTUgRmVybmFuZCBEdWZvdXIsCi0JCQkJVmlsbGUgRGUgVmFuaWVyLCBRdWViZWMsCi0JCQkJRzFNIDNCMgotCQkJCUNBTkFEQQotCi0wMC0wNS1EMyAgIChoZXgpCQllUHJvZHVjdGlvbiBTb2x1dGlvbnMsIEluYy4KLTAwMDVEMyAgICAgKGJhc2UgMTYpCQllUHJvZHVjdGlvbiBTb2x1dGlvbnMsIEluYy4KLQkJCQkyMjAwMSBOb3J0aCBQYXJrIERyaXZlCi0JCQkJS2luZ3dvb2QgVFggNzczMzktMzgwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRDQgICAoaGV4KQkJRnV0dXJlU21hcnQgTmV0d29ya3MsIEluYy4KLTAwMDVENCAgICAgKGJhc2UgMTYpCQlGdXR1cmVTbWFydCBOZXR3b3JrcywgSW5jLgotCQkJCTYxNTUgQWxtYWRlbiBFeHByZXNzd2F5Ci0JCQkJU3VpdGUgMTAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUQ1ICAgKGhleCkJCVNwZWVkY29tIFdpcmVsZXNzCi0wMDA1RDUgICAgIChiYXNlIDE2KQkJU3BlZWRjb20gV2lyZWxlc3MKLQkJCQk3MDIwIFByb2Zlc3Npb25hbCBQa3d5IEVhc3QKLQkJCQlTYXJhc290YSBGTCAzNDI0MC04NTE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1ENiAgIChoZXgpCQlUaXRhbiBXaXJlbGVzcwotMDAwNUQ2ICAgICAoYmFzZSAxNikJCVRpdGFuIFdpcmVsZXNzCi0JCQkJMzAzMyBTY2llbmNlIFBhcmsgUm9hZAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRDcgICAoaGV4KQkJVmlzdGEgSW1hZ2luZywgSW5jLgotMDAwNUQ3ICAgICAoYmFzZSAxNikJCVZpc3RhIEltYWdpbmcsIEluYy4KLQkJCQk1MjEgVGF5bG9yIFdheQotCQkJCVNhbiBDYXJsb3MgQ0EgOTQwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUQ4ICAgKGhleCkJCUFyZXNjb20sIEluYy4KLTAwMDVEOCAgICAgKGJhc2UgMTYpCQlBcmVzY29tLCBJbmMuCi0JCQkJMzU0MSBHYXRld2F5IEJsdmQuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRDkgICAoaGV4KQkJVGVjaG5vIFZhbGxleSwgSW5jLgotMDAwNUQ5ICAgICAoYmFzZSAxNikJCVRlY2hubyBWYWxsZXksIEluYy4KLQkJCQlBU0lDIFZlbnR1cmUgVG93biA1RiwKLQkJCQkxMzMwLTMgU2VvY2hvMi1Eb25nLCBTZW9jaG8tS3UsCi0JCQkJU2VvdWwgIDEzNS0wNzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtREEgICAoaGV4KQkJQXBleCBBdXRvbWF0aW9uc3RlY2huaWsKLTAwMDVEQSAgICAgKGJhc2UgMTYpCQlBcGV4IEF1dG9tYXRpb25zdGVjaG5pawotCQkJCVZvc3NlbmthbXAgNAotCQkJCUQtMzgxMDQgQnJhdW5zY2h3ZWlnCi0JCQkJR0VSTUFOWQotCi0wMC0wNS1EQiAgIChoZXgpCQlQU0kgTmVudGVjIEdtYkgKLTAwMDVEQiAgICAgKGJhc2UgMTYpCQlQU0kgTmVudGVjIEdtYkgKLQkJCQlHcmVzY2hiYWNoc3RyYXNzZSAxMgotCQkJCUthcmxzcnVoZSAgNzYyMjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTA1LURDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDVEQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1ERCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA1REQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtREUgICAoaGV4KQkJR2kgRm9uZSBLb3JlYSwgSW5jLgotMDAwNURFICAgICAoYmFzZSAxNikJCUdpIEZvbmUgS29yZWEsIEluYy4KLQkJCQlUd2luIEJsZGcuIDR0aCBGbCwKLQkJCQk5MDItMTI0IFRvZ29rLWRvbmcsIEthbmduYW0tZ3UsCi0JCQkJU2VvdWwsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDUtREYgICAoaGV4KQkJRWxlY3Ryb25pYyBJbm5vdmF0aW9uLCBJbmMuCi0wMDA1REYgICAgIChiYXNlIDE2KQkJRWxlY3Ryb25pYyBJbm5vdmF0aW9uLCBJbmMuCi0JCQkJMTI3MzEgQ2FubmluZ3RvbiBXYXkgU1cKLQkJCQlDYWxnYXJ5LCBBQiBUMlcgMVo3Ci0JCQkJQ0FOQURBCi0KLTAwLTA1LUUwICAgKGhleCkJCUVtcGlyaXggQ29ycC4KLTAwMDVFMCAgICAgKGJhc2UgMTYpCQlFbXBpcml4IENvcnAuCi0JCQkJMjA1IExvd2VsbCBTdC4KLQkJCQlXaWxtaW5ndG9uIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1FMSAgIChoZXgpCQlUcmVsbGlzIFBob3RvbmljcywgTHRkLgotMDAwNUUxICAgICAoYmFzZSAxNikJCVRyZWxsaXMgUGhvdG9uaWNzLCBMdGQuCi0JCQkJUC5PLkIuIDM2Ci0JCQkJWW9nbmVhbSBFbGl0ZSwgMjA2OTIKLQkJCQlJU1JBRUwKLQotMDAtMDUtRTIgICAoaGV4KQkJQ3JlYXRpdiBOZXR3b3JrIFRlY2hub2xvZ2llcwotMDAwNUUyICAgICAoYmFzZSAxNikJCUNyZWF0aXYgTmV0d29yayBUZWNobm9sb2dpZXMKLQkJCQkxNzU1IFN0LiBSZWdpcyBTdWl0ZSAyNDAKLQkJCQlEb2xsYXJkLWRlcy1Pcm1lYXV4Ci0JCQkJUXVlYmVjIEg5Qi0yTTkKLQkJCQlDQU5BREEKLQotMDAtMDUtRTMgICAoaGV4KQkJTGlnaHRTYW5kIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA1RTMgICAgIChiYXNlIDE2KQkJTGlnaHRTYW5kIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMzc1IExvcyBDb2NoZXMgU3QuCi0JCQkJTWlscGl0YXMgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUU0ICAgKGhleCkJCVJlZCBMaW9uIENvbnRyb2xzIEluYy4KLTAwMDVFNCAgICAgKGJhc2UgMTYpCQlSZWQgTGlvbiBDb250cm9scyBJbmMuCi0JCQkJMjAgV2lsbG93IFNwcmluZ3MgQ2lyY2xlCi0JCQkJWW9yayBQQSAxNzQwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRTUgICAoaGV4KQkJUmVuaXNoYXcgUExDCi0wMDA1RTUgICAgIChiYXNlIDE2KQkJUmVuaXNoYXcgUExDCi0JCQkJTmV3IE1pbGxzLCBXb3R0b24tdW5kZXItRWRnZQotCQkJCUdsb3VjZXN0ZXJzaHVyZSwgR0wxMiA4SlIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNS1FNiAgIChoZXgpCQlFZ2VuZXJhLCBJbmMuCi0wMDA1RTYgICAgIChiYXNlIDE2KQkJRWdlbmVyYSwgSW5jLgotCQkJCTE2NSBGb3Jlc3QgU3QuCi0JCQkJTWFybGJvcm8gTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUU3ICAgKGhleCkJCU5ldHJha2UgYW4gQXVkaW9Db2RlcyBDb21wYW55Ci0wMDA1RTcgICAgIChiYXNlIDE2KQkJTmV0cmFrZSBhbiBBdWRpb0NvZGVzIENvbXBhbnkKLQkJCQkzMDAwIFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlQbGFubyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRTggICAoaGV4KQkJVHVyYm9XYXZlLCBJbmMuCi0wMDA1RTggICAgIChiYXNlIDE2KQkJVHVyYm9XYXZlLCBJbmMuCi0JCQkJNTU1IFNvdXRoIFN0YXRlCi0JCQkJU3VpdGUgMzAyCi0JCQkJT3JlbSBVVCA4NDA1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRTkgICAoaGV4KQkJVW5pY2VzcyBOZXR3b3JrLCBJbmMuCi0wMDA1RTkgICAgIChiYXNlIDE2KQkJVW5pY2VzcyBOZXR3b3JrLCBJbmMuCi0JCQkJODcwIERvcm90aHkgRHIuICM3MDgKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1FQSAgIChoZXgpCQlSZWRuaXgKLTAwMDVFQSAgICAgKGJhc2UgMTYpCQlSZWRuaXgKLQkJCQk1MDIsIERvbmctQSBSZXNvcnQgT2ZmaWNldGVsCi0JCQkJNTM4LTggQm9uZ215dW5nLURvbmcgWXVzdW5nLAotCQkJCVRhZWpvbiAgMzA1LTcwOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1FQiAgIChoZXgpCQlCbHVlIFJpZGdlIE5ldHdvcmtzLCBJbmMuCi0wMDA1RUIgICAgIChiYXNlIDE2KQkJQmx1ZSBSaWRnZSBOZXR3b3JrcywgSW5jLgotCQkJCTE0MTIwIFBhcmtlIExvbmcgQ291cnQKLQkJCQlTdWl0ZSAyMDEKLQkJCQlDaGFudGlsbHkgVkEgMjAxNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUVDICAgKGhleCkJCU1vc2FpYyBTeXN0ZW1zIEluYy4KLTAwMDVFQyAgICAgKGJhc2UgMTYpCQlNb3NhaWMgU3lzdGVtcyBJbmMuCi0JCQkJNyBDYW1wYmVsbCBQYXJrCi0JCQkJU29tZXJ2aWxsZSBNQSAwMjE0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRUQgICAoaGV4KQkJVGVjaG5pa3VtIEpvYW5uZXVtIEdtYkgKLTAwMDVFRCAgICAgKGJhc2UgMTYpCQlUZWNobmlrdW0gSm9hbm5ldW0gR21iSAotCQkJCUFsdGUgUG9zdHN0cmHDg8W4ZSAxNDkKLQkJCQk4MDIwIEdyYXoKLQkJCQlBVVNUUklBCi0KLTAwLTA1LUVFICAgKGhleCkJCUJFV0FUT1IgR3JvdXAKLTAwMDVFRSAgICAgKGJhc2UgMTYpCQlCRVdBVE9SIEdyb3VwCi0JCQkJQmV3YXRvciBBQiwgQm94IDEyNzUKLQkJCQlTRS0xNzEyNCBTb2xuYW4KLQkJCQlTV0VERU4KLQotMDAtMDUtRUYgICAoaGV4KQkJQURPSVIgRGlnaXRhbCBUZWNobm9sb2d5Ci0wMDA1RUYgICAgIChiYXNlIDE2KQkJQURPSVIgRGlnaXRhbCBUZWNobm9sb2d5Ci0JCQkJMjggRmwsIFpoYW9GZW5nIFdvcmxkIFRyYWRlIEJsZGcuCi0JCQkJMzY5IEppYW5nU3UgUmQuCi0JCQkJU2hhbmdoYWkgMjAwMDUwLCAKLQkJCQlDSElOQQotCi0wMC0wNS1GMCAgIChoZXgpCQlTQVRFQwotMDAwNUYwICAgICAoYmFzZSAxNikJCVNBVEVDCi0JCQkJUC5PLiBCb3ggNDUwMjIKLQkJCQlKZXJ1c2FsZW0KLQkJCQk5MTQ1MCAKLQkJCQlJU1JBRUwKLQotMDAtMDUtRjEgICAoaGV4KQkJVnJjb20sIEluYy4KLTAwMDVGMSAgICAgKGJhc2UgMTYpCQlWcmNvbSwgSW5jLgotCQkJCTQwMSwgU29uZ2FtIEJsZGcsIDQ3OS0xLAotCQkJCUJhbmdiYWUgMy1kb25nLCBTZW9jaG8ta3UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNS1GMiAgIChoZXgpCQlQb3dlciBSLCBJbmMuCi0wMDA1RjIgICAgIChiYXNlIDE2KQkJUG93ZXIgUiwgSW5jLgotCQkJCTc1NiBBbG9oYSBTdC4KLQkJCQlTZWF0dGxlIFdBIDk4MTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1GMyAgIChoZXgpCQlXZWJveW4KLTAwMDVGMyAgICAgKGJhc2UgMTYpCQlXZWJveW4KLQkJCQkyNiBSdWUgT2VzIEdhdWRpbmVzCi0JCQkJNzgxMDAgU2FpbnQtR2VybWFpbgotCQkJCUZSQU5DRQotCi0wMC0wNS1GNCAgIChoZXgpCQlTeXN0ZW0gQmFzZSBDby4sIEx0ZC4KLTAwMDVGNCAgICAgKGJhc2UgMTYpCQlTeXN0ZW0gQmFzZSBDby4sIEx0ZC4KLQkJCQk0NzUtMjIsIEJhbmdCYWUgMiBkb25nLAotCQkJCVNlb2NobyBndSwgU2VvdWwsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA1LUY1ICAgKGhleCkJCU9ZTyBHZW9zcGFjZQotMDAwNUY1ICAgICAoYmFzZSAxNikJCU9ZTyBHZW9zcGFjZQotCQkJCTcwMDcgUGluZW1vbnQKLQkJCQlIb3VzdG9uIFRYIDc3MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1GNiAgIChoZXgpCQlZb3VuZyBDaGFuZyBDby4gTHRkLgotMDAwNUY2ICAgICAoYmFzZSAxNikJCVlvdW5nIENoYW5nIENvLiBMdGQuCi0JCQkJMTQzMiBNYWluIFN0cmVldAotCQkJCVdhbHRoYW0gTUEgMDI0NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUY3ICAgKGhleCkJCUFuYWxvZyBEZXZpY2VzLCBJbmMuCi0wMDA1RjcgICAgIChiYXNlIDE2KQkJQW5hbG9nIERldmljZXMsIEluYy4KLQkJCQk4MDQgV29idXJuIFN0LiwgTVMgMTExCi0JCQkJV2lsbWluZ3RvbiBNQSAwMTg4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRjggICAoaGV4KQkJUmVhbCBUaW1lIEFjY2VzcywgSW5jLgotMDAwNUY4ICAgICAoYmFzZSAxNikJCVJlYWwgVGltZSBBY2Nlc3MsIEluYy4KLQkJCQk0NTUgTi4gQ2FueW9ucyBQa3d5LgotCQkJCVN1aXRlIEIKLQkJCQlMaXZlcm1vcmUgQ0EgOTQ1NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA1LUY5ICAgKGhleCkJCVRPQSBDb3Jwb3JhdGlvbgotMDAwNUY5ICAgICAoYmFzZSAxNikJCVRPQSBDb3Jwb3JhdGlvbgotCQkJCTItMSBUYWthbWF0c3UtY2hvLAotCQkJCVRha2FyYXp1a2EtY2l0eQotCQkJCUh5b2dvICA2NjUtMDA0MwotCQkJCUpBUEFOCi0KLTAwLTA1LUZBICAgKGhleCkJCUlQT3B0aWNhbCwgSW5jLgotMDAwNUZBICAgICAoYmFzZSAxNikJCUlQT3B0aWNhbCwgSW5jLgotCQkJCTQ1OTQwIEhvcnNlc2hvZSBEcml2ZQotCQkJCVN1aXRlIDE1MAotCQkJCUR1bGxlcyBWQSAyMDE2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRkIgICAoaGV4KQkJU2hhcmVHYXRlLCBJbmMuCi0wMDA1RkIgICAgIChiYXNlIDE2KQkJU2hhcmVHYXRlLCBJbmMuCi0JCQkJOTgwNSBEb3VibGUgUiBCbHZkLgotCQkJCVRoaXJkIEZsb29yCi0JCQkJUmVubyBOViA4OTUxMS01OTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNS1GQyAgIChoZXgpCQlTY2hlbmNrIFBlZ2FzdXMgQ29ycC4KLTAwMDVGQyAgICAgKGJhc2UgMTYpCQlTY2hlbmNrIFBlZ2FzdXMgQ29ycC4KLQkJCQkyODkwIEpvaG4gUiBSb2FkCi0JCQkJVHJveSBNSSA0ODA4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDUtRkQgICAoaGV4KQkJUGFja2V0TGlnaHQgTmV0d29ya3MgTHRkLgotMDAwNUZEICAgICAoYmFzZSAxNikJCVBhY2tldExpZ2h0IE5ldHdvcmtzIEx0ZC4KLQkJCQkyNyBIYWJhcnplbCBTdC4KLQkJCQlSYW1hdCBIYWhheWFsCi0JCQkJVGVsLUF2aXYgIDY5NzEwCi0JCQkJSVNSQUVMCi0KLTAwLTA1LUZFICAgKGhleCkJCVRyYWZpY29uIE4uVi4KLTAwMDVGRSAgICAgKGJhc2UgMTYpCQlUcmFmaWNvbiBOLlYuCi0JCQkJQmlzc2VnZW1zZXN0cmFhdCA0NQotCQkJCUItODUwMSBIZXVsZQotCQkJCUJFTEdJVU0KLQotMDAtMDUtRkYgICAoaGV4KQkJU05TIFNvbHV0aW9ucywgSW5jLgotMDAwNUZGICAgICAoYmFzZSAxNikJCVNOUyBTb2x1dGlvbnMsIEluYy4KLQkJCQkybmQgRmwuIEhpbGwgSG91c2UsCi0JCQkJOTktMiBTb2h5dW4sIEJ1bmRhbmcsIFN1bmduYW0sIEt5dW5nZ2ksCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTAwICAgKGhleCkJCVRvc2hpYmEgVGVsaSBDb3Jwb3JhdGlvbgotMDAwNjAwICAgICAoYmFzZSAxNikJCVRvc2hpYmEgVGVsaSBDb3Jwb3JhdGlvbgotCQkJCSA0LTctMSBBc2FoaWdhb2thLCBIaW5vLVNoaSwKLQkJCQlUb2t5byAxOTEtMDA2NQotCQkJCUpBUEFOCi0KLTAwLTA2LTAxICAgKGhleCkJCU90YW5pa2Vpa2kgQ28uLCBMdGQuCi0wMDA2MDEgICAgIChiYXNlIDE2KQkJT3RhbmlrZWlraSBDby4sIEx0ZC4KLQkJCQkyLTEwLTIzIEhpa2FyaS1NYWNoaQotCQkJCUhpZ2FzaGktS3UgSGlyb3NoaW1hCi0JCQkJNzMyLTAwNTIKLQkJCQlKQVBBTgotCi0wMC0wNi0wMiAgIChoZXgpCQlDaXJraXRlY2ggRWxlY3Ryb25pY3MgQ28uCi0wMDA2MDIgICAgIChiYXNlIDE2KQkJQ2lya2l0ZWNoIEVsZWN0cm9uaWNzIENvLgotCQkJCUIxLTIsIE5vLiAzNjEsIEZ1LVhpbmcgRmlyc3QgUm9hZAotCQkJCUd1ZWktU2hhbiBIc2lhbmcsCi0JCQkJVGFvLVl1YW4gCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi0wMyAgIChoZXgpCQlCYWtlciBIdWdoZXMgSW5jLgotMDAwNjAzICAgICAoYmFzZSAxNikJCUJha2VyIEh1Z2hlcyBJbmMuCi0JCQkJMjAwMSBSYW5raW4gUmQuCi0JCQkJSG91c3RvbiBUWCA3NzA3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMDQgICAoaGV4KQkJQFRyYWNrIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDA2MDQgICAgIChiYXNlIDE2KQkJQFRyYWNrIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTE1NSBLYXMgRHIuCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMDUgICAoaGV4KQkJSW5uY29tIEludGVybmF0aW9uYWwsIEluYy4KLTAwMDYwNSAgICAgKGJhc2UgMTYpCQlJbm5jb20gSW50ZXJuYXRpb25hbCwgSW5jLgotCQkJCVAuTy4gQm94IDEwNjAKLQkJCQk4MyBIYWxscyBSb2FkCi0JCQkJT2xkIEx5bWUgQ1QgMDYzNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTA2ICAgKGhleCkJCVJhcGlkV0FOLCBJbmMuCi0wMDA2MDYgICAgIChiYXNlIDE2KQkJUmFwaWRXQU4sIEluYy4KLQkJCQkyMDg1IEhhbWlsdG9uIEF2ZS4KLQkJCQlTdWl0ZSAjMjIwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTA3ICAgKGhleCkJCU9tbmkgRGlyZWN0aW9uYWwgQ29udHJvbCBUZWNobm9sb2d5IEluYy4KLTAwMDYwNyAgICAgKGJhc2UgMTYpCQlPbW5pIERpcmVjdGlvbmFsIENvbnRyb2wgVGVjaG5vbG9neSBJbmMuCi0JCQkJOEYtMiwgTm8uIDk0LCBQYW8tQ2h1bmcgUmQuCi0JCQkJSHNpbi1UaWVuIENpdHksCi0JCQkJVGFpcGVpIEhzaWVuLCAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTA4ICAgKGhleCkJCUF0LVNreSBTQVMKLTAwMDYwOCAgICAgKGJhc2UgMTYpCQlBdC1Ta3kgU0FTCi0JCQkJWkkgQXRoZWxpYSAzLCBWb2kgQXRsYXMKLQkJCQkxMzYwMC0gTGEgQ2lvdGF0Ci0JCQkJRlJBTkNFCi0KLTAwLTA2LTA5ICAgKGhleCkJCUNyb3NzcG9ydCBTeXN0ZW1zCi0wMDA2MDkgICAgIChiYXNlIDE2KQkJQ3Jvc3Nwb3J0IFN5c3RlbXMKLQkJCQkxMDk0MCBORSAzM3JkIFBsLgotCQkJCVN1aXRlIDEwMQotCQkJCUJlbGxldnVlIFdBIDk4MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0wQSAgIChoZXgpCQlCbHVlMnNwYWNlCi0wMDA2MEEgICAgIChiYXNlIDE2KQkJQmx1ZTJzcGFjZQotCQkJCUFyc3RhYW5nc3YuIDkKLQkJCQlTRS0xMTc0OCBTdG9ja2hvbG0KLQkJCQlTV0VERU4KLQotMDAtMDYtMEIgICAoaGV4KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0wMDA2MEIgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0JCQkJMjkwMCBTLiBEaWFibG8gV2F5IFN1aXRlIDE5MAotCQkJCVRlbXBlIEFaIDg1MjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0wQyAgIChoZXgpCQlNZWxjbyBJbmR1c3RyaWVzLCBJbmMuCi0wMDA2MEMgICAgIChiYXNlIDE2KQkJTWVsY28gSW5kdXN0cmllcywgSW5jLgotCQkJCTE1NzUgVy4gMTI0dGggQXZlLgotCQkJCURlbnZlciBDTyA4MDIzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMEQgICAoaGV4KQkJV2F2ZTcgT3B0aWNzCi0wMDA2MEQgICAgIChiYXNlIDE2KQkJV2F2ZTcgT3B0aWNzCi0JCQkJMTA3NSBXaW5kd2FyZCBSaWRnZSBQa3d5LgotCQkJCVN1aXRlIDE3MAotCQkJCUFscGhhcmV0dGEgR0EgMzAwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTBFICAgKGhleCkJCUlHWVMgU3lzdGVtcywgSW5jLgotMDAwNjBFICAgICAoYmFzZSAxNikJCUlHWVMgU3lzdGVtcywgSW5jLgotCQkJCTczNzMgTGluY29sbiBXYXkKLQkJCQlHYXJkZW4gR3JvdmUgQ0EgOTI4NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTBGICAgKGhleCkJCU5hcmFkIE5ldHdvcmtzIEluYwotMDAwNjBGICAgICAoYmFzZSAxNikJCU5hcmFkIE5ldHdvcmtzIEluYwotCQkJCTUxNSBHcm90b24gUm9hZAotCQkJCVdlc3Rmb3JkIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0xMCAgIChoZXgpCQlBYmVvbmEgTmV0d29ya3MgSW5jCi0wMDA2MTAgICAgIChiYXNlIDE2KQkJQWJlb25hIE5ldHdvcmtzIEluYwotCQkJCTQ2MTE3IExhbmRpbmcgUGFya3dheQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTExICAgKGhleCkJCVpldXMgV2lyZWxlc3MsIEluYy4KLTAwMDYxMSAgICAgKGJhc2UgMTYpCQlaZXVzIFdpcmVsZXNzLCBJbmMuCi0JCQkJODMyNSBHdWlsZm9yZCBSb2FkCi0JCQkJQ29sdW1iaWEgTUQgMjEwNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTEyICAgKGhleCkJCUFjY3VzeXMsIEluYy4KLTAwMDYxMiAgICAgKGJhc2UgMTYpCQlBY2N1c3lzLCBJbmMuCi0JCQkJNUYsIE5vLiAzOCwgVGFpeXVhbiBTdAotCQkJCUpodWJlaSBDaXR5Ci0JCQkJSHNpbmNodSBDb3VudHkgIDMwMjY1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi0xMyAgIChoZXgpCQlLYXdhc2FraSBNaWNyb2VsZWN0cm9uaWNzIEluY29ycG9yYXRlZAotMDAwNjEzICAgICAoYmFzZSAxNikJCUthd2FzYWtpIE1pY3JvZWxlY3Ryb25pY3MgSW5jb3Jwb3JhdGVkCi0JCQkJTVRHIEItNSwgMS0zLCBOYWthc2UsCi0JCQkJTWloYW1hLWt1IENoaWJhIDI2MS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMDYtMTQgICAoaGV4KQkJUHJpc20gSG9sZGluZ3MKLTAwMDYxNCAgICAgKGJhc2UgMTYpCQlQcmlzbSBIb2xkaW5ncwotCQkJCVAuTy4gQm94IDkwMSwKLQkJCQlXaXRrb3BwZW4sIDIwNjgsCi0JCQkJR2F1dGVuZyAgCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTA2LTE1ICAgKGhleCkJCUtpbW90byBFbGVjdHJpYyBDby4sIEx0ZC4KLTAwMDYxNSAgICAgKGJhc2UgMTYpCQlLaW1vdG8gRWxlY3RyaWMgQ28uLCBMdGQuCi0JCQkJMy0xIEZ1bmFoYXNoaS1DaG8sCi0JCQkJVGVubm9qaS1LdSwgT3Nha2EKLQkJCQk1NDMtMDAyNAotCQkJCUpBUEFOCi0KLTAwLTA2LTE2ICAgKGhleCkJCVRlbCBOZXQgQ28uLCBMdGQuCi0wMDA2MTYgICAgIChiYXNlIDE2KQkJVGVsIE5ldCBDby4sIEx0ZC4KLQkJCQkzRiBCT0YgQmxkZyA3MzAtMTUgR29qZSBTb25nCi0JCQkJWWVvbmplIEd1IFB1c2FtIDYxMS0wNzMsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTE3ICAgKGhleCkJCVJlZHN3aXRjaCBJbmMuCi0wMDA2MTcgICAgIChiYXNlIDE2KQkJUmVkc3dpdGNoIEluYy4KLQkJCQkxODE1IE1jQ2FuZGxlc3MgRHJpdmUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNS04MDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0xOCAgIChoZXgpCQlEaWdpUG93ZXIgTWFudWZhY3R1cmluZyBJbmMuCi0wMDA2MTggICAgIChiYXNlIDE2KQkJRGlnaVBvd2VyIE1hbnVmYWN0dXJpbmcgSW5jLgotCQkJCU5vLiAxMTQsIEZsb29yIDEzLCBTZWMuIDEsCi0JCQkJSHNpbiBUYWkgV3UgUm9hZCwgU2hpanIgQ2l0eSwKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtMTkgICAoaGV4KQkJQ29ubmVjdGlvbiBUZWNobm9sb2d5IFN5c3RlbXMKLTAwMDYxOSAgICAgKGJhc2UgMTYpCQlDb25uZWN0aW9uIFRlY2hub2xvZ3kgU3lzdGVtcwotCQkJCTE4Ri02LCBOby4gNzksIFNlYy4gMSwKLQkJCQlIc2luIFRhaSBXdSBSZC4KLQkJCQlIc2luY2hpaCBUYWlwZWksIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtMUEgICAoaGV4KQkJWmV0YXJpIEluYy4KLTAwMDYxQSAgICAgKGJhc2UgMTYpCQlaZXRhcmkgSW5jLgotCQkJCTQxMSBXYXZlcmx5IE9ha3MgUmQuCi0JCQkJU3VpdGUgMzIzCi0JCQkJV2FsdGhhbSBNQSAwMjQ1Mi04NDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0xQiAgIChoZXgpCQlOb3RlYm9vayBEZXZlbG9wbWVudCBMYWIuICBMZW5vdm8gSmFwYW4gTHRkLgotMDAwNjFCICAgICAoYmFzZSAxNikJCU5vdGVib29rIERldmVsb3BtZW50IExhYi4gIExlbm92byBKYXBhbiBMdGQuCi0JCQkJMTYyMy0xNCBTaGltb3RzdXJ1bWEKLQkJCQlZYW1hdG8tc2hpIEthbmFnYXdhLWtlbgotCQkJCTI0Mi04NTAyCi0JCQkJSkFQQU4KLQotMDAtMDYtMUMgICAoaGV4KQkJSG9zaGlubyBNZXRhbCBJbmR1c3RyaWVzLCBMdGQuCi0wMDA2MUMgICAgIChiYXNlIDE2KQkJSG9zaGlubyBNZXRhbCBJbmR1c3RyaWVzLCBMdGQuCi0JCQkJNjQ1IFlhbWFub2thbWksIFlhYnV0c3VrYSwKLQkJCQlOaXR0YS1ndW4sIEd1bm1hCi0JCQkJMzc5LTIzMDIKLQkJCQlKQVBBTgotCi0wMC0wNi0xRCAgIChoZXgpCQlNSVAgVGVsZWNvbSwgSW5jLgotMDAwNjFEICAgICAoYmFzZSAxNikJCU1JUCBUZWxlY29tLCBJbmMuCi0JCQkJM3JkIEZsb29yLCBTYW5naWwgQkxERywKLQkJCQk5NDgtMTYsIEJvbmdjaGVvbmRvbmcsIEd3YW5ha2t1LAotCQkJCVNlb3VsICAxNTEtMDY5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTFFICAgKGhleCkJCU1heGFuIFN5c3RlbXMKLTAwMDYxRSAgICAgKGJhc2UgMTYpCQlNYXhhbiBTeXN0ZW1zCi0JCQkJMS04NCwgV291bGFtLWRvbmcKLQkJCQlTYWxzZW8tZ3UsIERBRUdVLAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi0xRiAgIChoZXgpCQlWaXNpb24gQ29tcG9uZW50cyBHbWJICi0wMDA2MUYgICAgIChiYXNlIDE2KQkJVmlzaW9uIENvbXBvbmVudHMgR21iSAotCQkJCU90dG9zdHIuIDIKLQkJCQlFdHRsaW5nZW4sIDc2Mjc1Ci0JCQkJR0VSTUFOWQotCi0wMC0wNi0yMCAgIChoZXgpCQlTZXJpYWwgU3lzdGVtIEx0ZC4KLTAwMDYyMCAgICAgKGJhc2UgMTYpCQlTZXJpYWwgU3lzdGVtIEx0ZC4KLQkJCQk3NiBQbGF5ZmFpciBSb2FkCi0JCQkJIzA0LTAzIExISzIgQnVpbGRpbmcKLQkJCQkzNjc5OTYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMDYtMjEgICAoaGV4KQkJSGlub3gsIENvLiwgTHRkLgotMDAwNjIxICAgICAoYmFzZSAxNikJCUhpbm94LCBDby4sIEx0ZC4KLQkJCQkxNS03IDMtY2hvbWUsIFNlbm5pbi1jaG8sCi0JCQkJSGFjaGlvamktQ2l0eSwgVG9reW8sCi0JCQkJMTkzLTA4MzUKLQkJCQlKQVBBTgotCi0wMC0wNi0yMiAgIChoZXgpCQlDaHVuZyBGdSBDaGVuIFllaCBFbnRlcnByaXNlIENvcnAuCi0wMDA2MjIgICAgIChiYXNlIDE2KQkJQ2h1bmcgRnUgQ2hlbiBZZWggRW50ZXJwcmlzZSBDb3JwLgotCQkJCTJGIE5vLiA2NjYgSmluZyBQaW5nIFJvYWQsCi0JCQkJQ2h1bmcgSG8gQ2l0eSwKLQkJCQlUYWlwZWkgSHNpZW4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtMjMgICAoaGV4KQkJTUdFIFVQUyBTeXN0ZW1zIEZyYW5jZQotMDAwNjIzICAgICAoYmFzZSAxNikJCU1HRSBVUFMgU3lzdGVtcyBGcmFuY2UKLQkJCQkxNDAgQXZlbnVlIEplYW4gS3VudHptYW5uCi0JCQkJWmlyc3QgTW9udGJvbm5vdCBTdCBNYXJ0aW4gMzgzMzQgU3QgSXNtaQotCQkJCUZSQU5DRQotCi0wMC0wNi0yNCAgIChoZXgpCQlHZW50bmVyIENvbW11bmljYXRpb25zIENvcnAuCi0wMDA2MjQgICAgIChiYXNlIDE2KQkJR2VudG5lciBDb21tdW5pY2F0aW9ucyBDb3JwLgotCQkJCTE4MjUgUmVzZWFyY2ggV2F5Ci0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTI1ICAgKGhleCkJCVRoZSBMaW5rc3lzIEdyb3VwLCBJbmMuCi0wMDA2MjUgICAgIChiYXNlIDE2KQkJVGhlIExpbmtzeXMgR3JvdXAsIEluYy4KLQkJCQkxNzQwMSBBcm1zdHJvbmcgQXZlLgotCQkJCUlydmluZSBDQSA5MjYxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMjYgICAoaGV4KQkJTVdFIEdtYkgKLTAwMDYyNiAgICAgKGJhc2UgMTYpCQlNV0UgR21iSAotCQkJCU9sYnJpY2h0c3RyLiAyMQotCQkJCUQtNjk0NjkgV2VpbmhlaW0KLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTI3ICAgKGhleCkJCVVuaXdpZGUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA2MjcgICAgIChiYXNlIDE2KQkJVW5pd2lkZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQlLb3JlYSBEZXZlbG9wbWVudCBCYW5rIEIvRCA1dGggRmxyCi0JCQkJRHVuc2FuZG9uZywgU2VvZ3UsCi0JCQkJVGFlam9uIDMwMi0xMjIsIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi0yOCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA2MjggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMjkgICAoaGV4KQkJSUJNIENvcnAKLTAwMDYyOSAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMkEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNjJBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTJCICAgKGhleCkJCUlOVFJBU0VSVkVSIFRFQ0hOT0xPR1kKLTAwMDYyQiAgICAgKGJhc2UgMTYpCQlJTlRSQVNFUlZFUiBURUNITk9MT0dZCi0JCQkJU0VWRU4gT0NUT0JFUiBISUxMIFJELgotCQkJCUhPTExJU1RPTiBNQSAwMTc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMkMgICAoaGV4KQkJQml2aW8gTmV0d29ya3MKLTAwMDYyQyAgICAgKGJhc2UgMTYpCQlCaXZpbyBOZXR3b3JrcwotCQkJCTQ0NTcgV2lsbG93IFJvYWQsCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMkQgICAoaGV4KQkJVG91Y2hTdGFyIFRlY2hub2xvZ2llcywgTC5MLkMuCi0wMDA2MkQgICAgIChiYXNlIDE2KQkJVG91Y2hTdGFyIFRlY2hub2xvZ2llcywgTC5MLkMuCi0JCQkJNTE0NyBTb3V0aCBHYXJuZXR0IFJvYWQKLQkJCQlTdWl0ZSBBCi0JCQkJVHVsc2EgT0sgNzQxNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTJFICAgKGhleCkJCUFyaXN0b3MgTG9naWMgQ29ycC4KLTAwMDYyRSAgICAgKGJhc2UgMTYpCQlBcmlzdG9zIExvZ2ljIENvcnAuCi0JCQkJMjcwNTEgVG93bmUgQ2VudHJlIERyLgotCQkJCVN1aXRlIDI5MAotCQkJCUZvb3RoaWxsIFJhbmNoIENBIDkyNjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0yRiAgIChoZXgpCQlQaXZvdGVjaCBTeXN0ZW1zIEluYy4KLTAwMDYyRiAgICAgKGJhc2UgMTYpCQlQaXZvdGVjaCBTeXN0ZW1zIEluYy4KLQkJCQkyMDAgQ2VudGVubmlhbCBBdmUuLAotCQkJCVN1aXRlIDIyMgotCQkJCVBpc2NhdGF3YXkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTMwICAgKGhleCkJCUFkdHJhbnogU3dlZGVuCi0wMDA2MzAgICAgIChiYXNlIDE2KQkJQWR0cmFueiBTd2VkZW4KLQkJCQlEZXB0LiBUQ0MvVEgKLQkJCQlPc3RyYXJpbmd2YWdlbiAyIDcyMTczIFZhc3RlcmFzCi0JCQkJU1dFREVOCi0KLTAwLTA2LTMxICAgKGhleCkJCU9wdGljYWwgU29sdXRpb25zLCBJbmMuCi0wMDA2MzEgICAgIChiYXNlIDE2KQkJT3B0aWNhbCBTb2x1dGlvbnMsIEluYy4KLQkJCQkxNjMwNSAzNnRoIEF2ZS4gTi4KLQkJCQlTdWl0ZSAzMDAKLQkJCQlQbHltb3V0aCBNTiA1NTQ0Ni0yNjk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0zMiAgIChoZXgpCQlNZXNjbyBFbmdpbmVlcmluZyBHbWJICi0wMDA2MzIgICAgIChiYXNlIDE2KQkJTWVzY28gRW5naW5lZXJpbmcgR21iSAotCQkJCVdpZXNlbnRhbHN0cmFzc2UgNzQKLQkJCQk3OTUzOSBMb3JyYWNoCi0JCQkJR0VSTUFOWQotCi0wMC0wNi0zMyAgIChoZXgpCQlDcm9zcyBNYXRjaCBUZWNobm9sb2dpZXMgR21iSAotMDAwNjMzICAgICAoYmFzZSAxNikJCUNyb3NzIE1hdGNoIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJVW5zdHJ1dHdlZyA0Ci0JCQkJSmVuYSAwNzc0MwotCQkJCUdFUk1BTlkKLQotMDAtMDYtMzQgICAoaGV4KQkJR1RFIEFpcmZvbmUgSW5jLgotMDAwNjM0ICAgICAoYmFzZSAxNikJCUdURSBBaXJmb25lIEluYy4KLQkJCQkyODA5IEJ1dHRlcmZpZWxkCi0JCQkJT2FrYnJvb2sgSUwgNjA1MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTM1ICAgKGhleCkJCVBhY2tldEFpciBOZXR3b3JrcywgSW5jLgotMDAwNjM1ICAgICAoYmFzZSAxNikJCVBhY2tldEFpciBOZXR3b3JrcywgSW5jLgotCQkJCTExNTQ1IFcuIEJlcm5hcmRvIEN0LgotCQkJCVN1aXRlIDEwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtMzYgICAoaGV4KQkJSmVkYWkgQnJvYWRiYW5kIE5ldHdvcmtzCi0wMDA2MzYgICAgIChiYXNlIDE2KQkJSmVkYWkgQnJvYWRiYW5kIE5ldHdvcmtzCi0JCQkJMzMxIE5ld21hbiBTcHJpbmdzIFJkLgotCQkJCUJ1aWxkaW5nIDEsIDJuZCBGbG9vcgotCQkJCVJlZCBCYW5rIE5KIDA3NzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0zNyAgIChoZXgpCQlUb3B0cmVuZC1NZXRhIEluZm9ybWF0aW9uIChTaGVuWmhlbikgSW5jLgotMDAwNjM3ICAgICAoYmFzZSAxNikJCVRvcHRyZW5kLU1ldGEgSW5mb3JtYXRpb24gKFNoZW5aaGVuKSBJbmMuCi0JCQkJMi9GLCBCbGRnLiAzLCBTZWN0aW9uIEEsIE5vci1FYXN0IFpvbmUKLQkJCQlFYXN0ZXJuIEluZHVzdHJpYWwgQXJlYSwgT3ZlcnNlYXMgQ2l0eSwKLQkJCQlDSElOQQotCi0wMC0wNi0zOCAgIChoZXgpCQlTdW5namluIEMmQyBDby4sIEx0ZC4KLTAwMDYzOCAgICAgKGJhc2UgMTYpCQlTdW5namluIEMmQyBDby4sIEx0ZC4KLQkJCQkxNTQzLTYsIFNlb2Noby1kb25nLCBTZW9jaG8tZ3UsCi0JCQkJU2VvdWwgIDEzNy0wNzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtMzkgICAoaGV4KQkJTmV3dGVjCi0wMDA2MzkgICAgIChiYXNlIDE2KQkJTmV3dGVjCi0JCQkJTGFhcnN0cmFhdCA1Ci0JCQkJQi05MTAwIFNpbnQtTmlrbGFhcwotCQkJCUJFTEdJVU0KLQotMDAtMDYtM0EgICAoaGV4KQkJRHVyYSBNaWNybywgSW5jLgotMDAwNjNBICAgICAoYmFzZSAxNikJCUR1cmEgTWljcm8sIEluYy4KLQkJCQkxMzU4MCBGaWZ0aCBTdHJlZXQKLQkJCQlDaGlubyBDQSA5MTcxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtM0IgICAoaGV4KQkJQXJjdHVydXMgTmV0d29ya3MsIEluYy4KLTAwMDYzQiAgICAgKGJhc2UgMTYpCQlBcmN0dXJ1cyBOZXR3b3JrcywgSW5jLgotCQkJCTcwMSBFdmFucyBBdmUuIC0gU3VpdGUgMzAwCi0JCQkJVG9yb250byBPbnRhcmlvIE05QyAxQTMKLQkJCQlDQU5BREEKLQotMDAtMDYtM0MgICAoaGV4KQkJSW50cmluc3ljIEV1cm9wZSBMdGQKLTAwMDYzQyAgICAgKGJhc2UgMTYpCQlJbnRyaW5zeWMgRXVyb3BlIEx0ZAotCQkJCTcwMCBXZXN0IFBlbmRlciBTdHJlZXQsIDEwdGggRmxvb3IsCi0JCQkJVmFuY291dmVyLCBCQywgVjZDIDFHOAotCQkJCUNBTkFEQQotCi0wMC0wNi0zRCAgIChoZXgpCQlNaWNyb3dhdmUgRGF0YSBTeXN0ZW1zIEluYy4KLTAwMDYzRCAgICAgKGJhc2UgMTYpCQlNaWNyb3dhdmUgRGF0YSBTeXN0ZW1zIEluYy4KLQkJCQkxNzUgU2NpZW5jZSBQYXJrd2F5Ci0JCQkJUm9jaGVzdGVyIE5ZIDE0NjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0zRSAgIChoZXgpCQlPcHRob3MgSW5jLgotMDAwNjNFICAgICAoYmFzZSAxNikJCU9wdGhvcyBJbmMuCi0JCQkJNTkwIFRheWxvciBXYXkKLQkJCQlTYW4gQ2FybG9zIENBIDk0MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi0zRiAgIChoZXgpCQlFdmVyZXggQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwNjNGICAgICAoYmFzZSAxNikJCUV2ZXJleCBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJNTAyMEEgQnJhbmRpbiBDdC4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi00MCAgIChoZXgpCQlXaGl0ZSBSb2NrIE5ldHdvcmtzCi0wMDA2NDAgICAgIChiYXNlIDE2KQkJV2hpdGUgUm9jayBOZXR3b3JrcwotCQkJCVN1aXRlICM5MDAKLQkJCQkxODExMSBQcmVzdG9uIFJvYWQKLQkJCQlEYWxsYXMgVFggNzUyNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTQxICAgKGhleCkJCUlUQ04KLTAwMDY0MSAgICAgKGJhc2UgMTYpCQlJVENOCi0JCQkJODU3MSBHYW5kZXIgQ3JlZWsgRHJpdmUKLQkJCQlNaWFtaXNidXJnIE9IIDQ1MzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi00MiAgIChoZXgpCQlHZW5ldGVsIFN5c3RlbXMgSW5jLgotMDAwNjQyICAgICAoYmFzZSAxNikJCUdlbmV0ZWwgU3lzdGVtcyBJbmMuCi0JCQkJTW9ja3dvbyBCL0QsIDkxMiBXYWxweW91bmctRG9uZwotCQkJCVNlby1HdSBUYWVqb24sCi0JCQkJMzAyLTg1MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi00MyAgIChoZXgpCQlTT05PIENvbXB1dGVyIENvLiwgTHRkLgotMDAwNjQzICAgICAoYmFzZSAxNikJCVNPTk8gQ29tcHV0ZXIgQ28uLCBMdGQuCi0JCQkJMUYuLCBOby4gOCwgQWxsZXkgMzUsIExhbmUgOTEsCi0JCQkJU2VjLiAxLCBOZWktSHUgUm9hZCwKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtNDQgICAoaGV4KQkJTmVpeCxJbmMKLTAwMDY0NCAgICAgKGJhc2UgMTYpCQlOZWl4LEluYwotCQkJCTMtNS0zLTI0LCBIaWdhc2hpc2FwcG9ybwotCQkJCVNoaXJvaXNoaS1rdQotCQkJCVNhcHBvcm8gSG9ra2FpZG8gMDAzLTAwMDMKLQkJCQlKQVBBTgotCi0wMC0wNi00NSAgIChoZXgpCQlNZWlzZWkgRWxlY3RyaWMgQ28uIEx0ZC4KLTAwMDY0NSAgICAgKGJhc2UgMTYpCQlNZWlzZWkgRWxlY3RyaWMgQ28uIEx0ZC4KLQkJCQkyNDktMSwgTW9yaXlhLWtvdSwgTW9yaXlhCi0JCQkJS2l0YXNvdW1hLUd1biwgSWJhcmFraQotCQkJCTMwMi0wMTkyCi0JCQkJSkFQQU4KLQotMDAtMDYtNDYgICAoaGV4KQkJU2hlblpoZW4gWHVuQmFvIE5ldHdvcmsgVGVjaG5vbG9neSBDbyBMdGQKLTAwMDY0NiAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBYdW5CYW8gTmV0d29yayBUZWNobm9sb2d5IENvIEx0ZAotCQkJCUYzLCBSMi1BIEJ1aWxkaW5nLCBTb3V0aCBEaXN0cmljdAotCQkJCW9mIEhpZ2gtVGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2hlbiBaaGVuICAKLQkJCQlDSElOQQotCi0wMC0wNi00NyAgIChoZXgpCQlFdHJhbGkgUy5BLgotMDAwNjQ3ICAgICAoYmFzZSAxNikJCUV0cmFsaSBTLkEuCi0JCQkJMjIxLCBSdWUgTGEgRm9udGFpbmUKLQkJCQk5NDEzMiBGb250ZW5heSBTb3VzIEJvaXMgQ2VkZXgKLQkJCQlGUkFOQ0UKLQotMDAtMDYtNDggICAoaGV4KQkJU2VlZHN3YXJlLCBJbmMuCi0wMDA2NDggICAgIChiYXNlIDE2KQkJU2VlZHN3YXJlLCBJbmMuCi0JCQkJIDMtNy0xNiBUZWNobm9zdGFnZSwKLQkJCQlJenVtaSwgT3Nha2EgNTk0LTExNDQKLQkJCQlKQVBBTgotCi0wMC0wNi00OSAgIChoZXgpCQkzTSBEZXV0c2NobGFuZCBHbWJICi0wMDA2NDkgICAgIChiYXNlIDE2KQkJM00gRGV1dHNjaGxhbmQgR21iSAotCQkJCUNhcmwtU2NodXJ6LVN0ci4gMQotCQkJCU5ldXNzICBELTQxNDUzCi0JCQkJR0VSTUFOWQotCi0wMC0wNi00QSAgIChoZXgpCQlIb25leXdlbGwgQ28uLCBMdGQuIChLT1JFQSkKLTAwMDY0QSAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgQ28uLCBMdGQuIChLT1JFQSkKLQkJCQk1NiwgQ2hhYW0tZG9uZywgQ2hvbmFuLWNpdHkKLQkJCQlDaG9vbmdjaGVvbmduYW0tZG8sIDMzMC0yMDAsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTRCICAgKGhleCkJCUFsZXhvbiBDby4sIEx0ZC4KLTAwMDY0QiAgICAgKGJhc2UgMTYpCQlBbGV4b24gQ28uLCBMdGQuCi0JCQkJMy0yMDctMSBUZXJhbW90bywKLQkJCQlJdGFtaSwgSHlvZ28gNjY0LTAwMjYKLQkJCQlKQVBBTgotCi0wMC0wNi00QyAgIChoZXgpCQlJbnZpY3RhIE5ldHdvcmtzLCBJbmMuCi0wMDA2NEMgICAgIChiYXNlIDE2KQkJSW52aWN0YSBOZXR3b3JrcywgSW5jLgotCQkJCTEzODczIFBhcmsgQ2VudGVyIFJvYWQKLQkJCQlTdWl0ZSA0MDAKLQkJCQlIZXJuZG9uIFZBIDIwMTcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi00RCAgIChoZXgpCQlTZW5jb3JlCi0wMDA2NEQgICAgIChiYXNlIDE2KQkJU2VuY29yZQotCQkJCTMyMDAgU2VuY29yZSBEci4KLQkJCQlTaW91eCBGYWxscyBTRCA1NzEwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNEUgICAoaGV4KQkJQnJvYWQgTmV0IFRlY2hub2xvZ3kgSW5jLgotMDAwNjRFICAgICAoYmFzZSAxNikJCUJyb2FkIE5ldCBUZWNobm9sb2d5IEluYy4KLQkJCQk1RiwgTm8uNTgsIExhbmUgMTg4LCBSdWkgS3VhbmcgUm9hZAotCQkJCU5laWh1IERpc3RyaWN0LCBUYWlwZWkgMTE0LAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtNEYgICAoaGV4KQkJUFJPLU5FVFMgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwNjRGICAgICAoYmFzZSAxNikJCVBSTy1ORVRTIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQlQYW8tQ2h1bmcgUm9hZCwKLQkJCQlOby4gOTIsIDEwRi0xCi0JCQkJSHNpbiBUaWVuIFRhaXBlaSwgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi01MCAgIChoZXgpCQlUaWJ1cm9uIE5ldHdvcmtzLCBJbmMuCi0wMDA2NTAgICAgIChiYXNlIDE2KQkJVGlidXJvbiBOZXR3b3JrcywgSW5jLgotCQkJCTIwMCBNaW51dGVtYW4gUmQuCi0JCQkJU3VpdGUgMkIKLQkJCQlBbmRvdmVyIE1BIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01MSAgIChoZXgpCQlBc3BlbiBOZXR3b3JrcyBJbmMuCi0wMDA2NTEgICAgIChiYXNlIDE2KQkJQXNwZW4gTmV0d29ya3MgSW5jLgotCQkJCTM3NzcgU3RldmVucyBDcmVlayBCbHZkCi0JCQkJU3VpdGUgMzMwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTUyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDY1MiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA2NTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNTQgICAoaGV4KQkJV2lucHJlc2EgQnVpbGRpbmcgQXV0b21hdGlvbiBUZWNobm9sb2dpZXMgR21iSAotMDAwNjU0ICAgICAoYmFzZSAxNikJCVdpbnByZXNhIEJ1aWxkaW5nIEF1dG9tYXRpb24gVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlWaXZlbm90Z2Fzc2UgNTMvMgotCQkJCUEtMTEyMCBWaWVubmEKLQkJCQlBVVNUUklBCi0KLTAwLTA2LTU1ICAgKGhleCkJCVlpcGVlLCBJbmMuCi0wMDA2NTUgICAgIChiYXNlIDE2KQkJWWlwZWUsIEluYy4KLQkJCQk1NTUgSW50ZXJuYXRpb25hbCBEcml2ZQotCQkJCVN1aXRlIDgwMAotCQkJCVdpbGxpYW1zdmlsbGUgTlkgMTQyMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTU2ICAgKGhleCkJCVRhY3RlbCBBQgotMDAwNjU2ICAgICAoYmFzZSAxNikJCVRhY3RlbCBBQgotCQkJCU5vcnJhIFZhbGxnYXRhbiA2NAotCQkJCVNFLTIxMSAyMiBNYWxtbwotCQkJCVNXRURFTgotCi0wMC0wNi01NyAgIChoZXgpCQlNYXJrZXQgQ2VudHJhbCwgSW5jLgotMDAwNjU3ICAgICAoYmFzZSAxNikJCU1hcmtldCBDZW50cmFsLCBJbmMuCi0JCQkJNTAwIEJ1c2luZXNzIENlbnRlciBEcml2ZQotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMDUtMTMzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNTggICAoaGV4KQkJSGVsbXV0IEZpc2NoZXIgR21iSCBJbnN0aXR1dCBmw7xyIEVsZWt0cm9uaWsgdW5kIE1lc3N0ZWNobmlrCi0wMDA2NTggICAgIChiYXNlIDE2KQkJSGVsbXV0IEZpc2NoZXIgR21iSCBJbnN0aXR1dCBmw7xyIEVsZWt0cm9uaWsgdW5kIE1lc3N0ZWNobmlrCi0JCQkJSW5kdXN0cmlhQmUyMQotCQkJCTcxMDY5IFNpbmRlZmluZ2VuCi0JCQkJR0VSTUFOWQotCi0wMC0wNi01OSAgIChoZXgpCQlFQUwgKEFwZWxkb29ybikgQi5WLgotMDAwNjU5ICAgICAoYmFzZSAxNikJCUVBTCAoQXBlbGRvb3JuKSBCLlYuCi0JCQkJTW9sZW5tYWtlcnNob2VrIDE0Ci0JCQkJSksgQXBlbGRvb3JuICA3MzI4Ci0JCQkJTkVUSEVSTEFORFMKLQotMDAtMDYtNUEgICAoaGV4KQkJU3RyaXggU3lzdGVtcwotMDAwNjVBICAgICAoYmFzZSAxNikJCVN0cml4IFN5c3RlbXMKLQkJCQkzMTAgTi4gV2VzdGxha2UgQmx2ZC4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlXZXN0bGFrZSBWaWxsYWdlIENBIDkxMzYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01QiAgIChoZXgpCQlEZWxsIENvbXB1dGVyIENvcnAuCi0wMDA2NUIgICAgIChiYXNlIDE2KQkJRGVsbCBDb21wdXRlciBDb3JwLgotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVFggNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTVDICAgKGhleCkJCU1hbGFjaGl0ZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDY1QyAgICAgKGJhc2UgMTYpCQlNYWxhY2hpdGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTk1IE5ldyBIYW1wc2hpcmUgQXZlbnVlCi0JCQkJU3VpdGUgMTUwCi0JCQkJUG9ydHNtb3V0aCBOSCAwMzgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNUQgICAoaGV4KQkJSGVpZGVsYmVyZyBXZWIgU3lzdGVtcwotMDAwNjVEICAgICAoYmFzZSAxNikJCUhlaWRlbGJlcmcgV2ViIFN5c3RlbXMKLQkJCQkxMjEgVGVjaG5vbG9neSBEci4KLQkJCQlEdXJoYW0gTkggMDM4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTVFICAgKGhleCkJCVBob3R1cmlzLCBJbmMuCi0wMDA2NUUgICAgIChiYXNlIDE2KQkJUGhvdHVyaXMsIEluYy4KLQkJCQkyMCBDb3Jwb3JhdGUgUGxhY2UgU291dGgKLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi01RiAgIChoZXgpCQlFQ0kgVGVsZWNvbSAtIE5HVFMgTHRkLgotMDAwNjVGICAgICAoYmFzZSAxNikJCUVDSSBUZWxlY29tIC0gTkdUUyBMdGQuCi0JCQkJMzAgSGFzaXZpbSBTdC4KLQkJCQlQZXRhaC1UaWt2YSA0OTEzMAotCQkJCUlTUkFFTAotCi0wMC0wNi02MCAgIChoZXgpCQlOQURFWCBDby4sIEx0ZC4KLTAwMDY2MCAgICAgKGJhc2UgMTYpCQlOQURFWCBDby4sIEx0ZC4KLQkJCQkxIE9taXlhbWFlLCBUb2t1c2hpZ2UsCi0JCQkJTmlzaGloYXJ1LWN5bywgTmlzaGlrYXN1Z2FpLWd1biwKLQkJCQlBaWNoaSAgNDgxLTAwMzgKLQkJCQlKQVBBTgotCi0wMC0wNi02MSAgIChoZXgpCQlOSUEgSG9tZSBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMDY2MSAgICAgKGJhc2UgMTYpCQlOSUEgSG9tZSBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQlJbm5vdmF0aW9uIEluY3ViYXRvciwgTlRIVSwKLQkJCQkxMDEsIFNlYy4gMiwgS3VhbmcgRnUgUm9hZCwKLQkJCQlIc2luY2h1IDMwMDEzLCAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTYyICAgKGhleCkJCU1CTSBUZWNobm9sb2d5IEx0ZC4KLTAwMDY2MiAgICAgKGJhc2UgMTYpCQlNQk0gVGVjaG5vbG9neSBMdGQuCi0JCQkJVmljdG9yaWEgUmQuCi0JCQkJUG9ydHNsYWRlLCBCcmlnaHRvbiBTdXNzZXggQk40bCAxWUgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNi02MyAgIChoZXgpCQlIdW1hbiBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNjYzICAgICAoYmFzZSAxNikJCUh1bWFuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJM3JkIEZsLCBIeXVuZ29rIEJsZGcuLAotCQkJCTgzNi0yNSwgWXVrc2FtLURvbmcsCi0JCQkJS2FuZ25hbS1rdSBTZW91bCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtNjQgICAoaGV4KQkJRm9zdGV4IENvcnBvcmF0aW9uCi0wMDA2NjQgICAgIChiYXNlIDE2KQkJRm9zdGV4IENvcnBvcmF0aW9uCi0JCQkJMy0yLTM1LCBNdXNhc2hpbm8sIEFraXNoaW1hLAotCQkJCVRva3lvICAxOTYtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTA2LTY1ICAgKGhleCkJCVN1bm55IEdpa2VuLCBJbmMuCi0wMDA2NjUgICAgIChiYXNlIDE2KQkJU3VubnkgR2lrZW4sIEluYy4KLQkJCQkzLTEtOSBOaXNoaWRhaSBJdGFtaS1zaGkKLQkJCQlIeW9nby1wcmVmLiAgNjY0LTA4NTgKLQkJCQlKQVBBTgotCi0wMC0wNi02NiAgIChoZXgpCQlSb3ZpbmcgTmV0d29ya3MKLTAwMDY2NiAgICAgKGJhc2UgMTYpCQlSb3ZpbmcgTmV0d29ya3MKLQkJCQk4MDkgVW5pdmVyc2l0eSBBdmVudWUKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTY3ICAgKGhleCkJCVRyaXBwIExpdGUKLTAwMDY2NyAgICAgKGJhc2UgMTYpCQlUcmlwcCBMaXRlCi0JCQkJMTExMSBXLiAzNXRoIFN0cmVldAotCQkJCUNoaWNhZ28gSUwgNjA2MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTY4ICAgKGhleCkJCVZpY29uIEluZHVzdHJpZXMgSW5jLgotMDAwNjY4ICAgICAoYmFzZSAxNikJCVZpY29uIEluZHVzdHJpZXMgSW5jLgotCQkJCTg5IEFya2F5IERyaXZlCi0JCQkJSGF1cHBhdWdlIE5ZIDExNzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi02OSAgIChoZXgpCQlEYXRhc291bmQgTGFib3JhdG9yaWVzIEx0ZAotMDAwNjY5ICAgICAoYmFzZSAxNikJCURhdGFzb3VuZCBMYWJvcmF0b3JpZXMgTHRkCi0JCQkJNSBCdXNpbmVzcyBQYXJrIFdlc3QsIEF2ZW51ZSBPbmUKLQkJCQlMZXRjaHdvcnRoLCBIZXJ0cyBTRzYgMjRCCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNi02QSAgIChoZXgpCQlJbmZpbmlDb24gU3lzdGVtcywgSW5jLgotMDAwNjZBICAgICAoYmFzZSAxNikJCUluZmluaUNvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJNzAwIEFtZXJpY2FuIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlLaW5nIG9mIFBydXNzaWEgUEEgMTk0MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTZCICAgKGhleCkJCVN5c21leCBDb3Jwb3JhdGlvbgotMDAwNjZCICAgICAoYmFzZSAxNikJCVN5c21leCBDb3Jwb3JhdGlvbgotCQkJCTQtNC00IFRha2F0c3VrYWRhaSwKLQkJCQlOaXNoaS1rdSwgS29iZS1DaXR5Ci0JCQkJNjUxLTIyNzEKLQkJCQlKQVBBTgotCi0wMC0wNi02QyAgIChoZXgpCQlSb2JpbnNvbiBDb3Jwb3JhdGlvbgotMDAwNjZDICAgICAoYmFzZSAxNikJCVJvYmluc29uIENvcnBvcmF0aW9uCi0JCQkJMTJGLCBOby4gMjc4IEhvIFBpbmcgRS4gUmQuLAotCQkJCVNlYy4gMwotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi02RCAgIChoZXgpCQlDb21wdXByaW50IFMuUC5BLgotMDAwNjZEICAgICAoYmFzZSAxNikJCUNvbXB1cHJpbnQgUy5QLkEuCi0JCQkJVmlhIE1hcnRpcmkgRCdJdGFsaWEgMjYKLQkJCQkxMDAxNCBDYWx1c28gKFR1cmluKQotCQkJCUlUQUxZCi0KLTAwLTA2LTZFICAgKGhleCkJCURlbHRhIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDA2NkUgICAgIChiYXNlIDE2KQkJRGVsdGEgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkxMUYsIDI2NiBXZW4tSHdhIDJuZCBSb2FkLAotCQkJCVNlYy4gMSwgTGlua291LCBUYWlwZWkgSHNpZW4gMjQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi02RiAgIChoZXgpCQlLb3JlYSBEYXRhIFN5c3RlbXMKLTAwMDY2RiAgICAgKGJhc2UgMTYpCQlLb3JlYSBEYXRhIFN5c3RlbXMKLQkJCQkxNzAsIEdvbmdkYW4tRG9uZywgR3VtaS1TaQotCQkJCUt5dW5nYnVrICA3MzAtMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LTcwICAgKGhleCkJCVVwcG9uZXR0aSBPeQotMDAwNjcwICAgICAoYmFzZSAxNikJCVVwcG9uZXR0aSBPeQotCQkJCVR5a2lzdG9rYXR1IDRECi0JCQkJRklOLTIwNTIwIFR1cmt1Ci0JCQkJRklOTEFORAotCi0wMC0wNi03MSAgIChoZXgpCQlTb2Z0aW5nIEFHCi0wMDA2NzEgICAgIChiYXNlIDE2KQkJU29mdGluZyBBRwotCQkJCVJpY2hhcmQtUmVpdHpuZXItQWxsZWUgNgotCQkJCTg1NTQwIEhhYXIKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTcyICAgKGhleCkJCU5ldGV6emEKLTAwMDY3MiAgICAgKGJhc2UgMTYpCQlOZXRlenphCi0JCQkJMTY3MSBXb3JjZXN0ZXIgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUZyYW1pbmdoYW0gTUEgMDE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTczICAgKGhleCkJCVRLSCBTZWN1cml0eSBTb2x1dGlvbnMgVVNBCi0wMDA2NzMgICAgIChiYXNlIDE2KQkJVEtIIFNlY3VyaXR5IFNvbHV0aW9ucyBVU0EKLQkJCQkxMjkyMCBDbG92ZXJsZWFmIENlbnRlciBEcml2ZQotCQkJCUdlcm1hbnRvd24gTUQgMjA4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTc0ICAgKGhleCkJCVNwZWN0cnVtIENvbnRyb2wsIEluYy4KLTAwMDY3NCAgICAgKGJhc2UgMTYpCQlTcGVjdHJ1bSBDb250cm9sLCBJbmMuCi0JCQkJODA2MSBBdm9uaWEgUm9hZAotCQkJCUZhaXJ2aWV3IFBBIDE2NDE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi03NSAgIChoZXgpCQlCYW5kZXJhY29tLCBJbmMuCi0wMDA2NzUgICAgIChiYXNlIDE2KQkJQmFuZGVyYWNvbSwgSW5jLgotCQkJCTkyMTEgV2F0ZXJmb3JkIENlbnRyZSBCbHZkLgotCQkJCVN1aXRlIDEwMAotCQkJCUF1c3RpbiBUWCA3ODc1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtNzYgICAoaGV4KQkJTm92cmEgVGVjaG5vbG9naWVzIEluYy4KLTAwMDY3NiAgICAgKGJhc2UgMTYpCQlOb3ZyYSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTkwMC0zMzAgU3QuIE1hcnkgQXZlbnVlCi0JCQkJV2lubmlwZWcgTWFuaXRvYmEgUjNDIDNaNQotCQkJCUNBTkFEQQotCi0wMC0wNi03NyAgIChoZXgpCQlTSUNLIEFHCi0wMDA2NzcgICAgIChiYXNlIDE2KQkJU0lDSyBBRwotCQkJCUVyd2luLVNpY2sgU3RyLjEKLQkJCQlELTc5MTgzIFdhbGRraXJjaCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTc4ICAgKGhleCkJCU1hcmFudHogQnJhbmQgQ29tcGFueQotMDAwNjc4ICAgICAoYmFzZSAxNikJCU1hcmFudHogQnJhbmQgQ29tcGFueQotCQkJCUQmTSBCdWlsZGluZywgMi0xIE5pc3NoaW4tY2hvCi0JCQkJS2F3YXNha2kta3UKLQkJCQlLYXdhc2FraS1zaGkgS2F3YWdhd2EgMjEwLTg1NjkKLQkJCQlKQVBBTgotCi0wMC0wNi03OSAgIChoZXgpCQlLb25hbWkgQ29ycG9yYXRpb24KLTAwMDY3OSAgICAgKGJhc2UgMTYpCQlLb25hbWkgQ29ycG9yYXRpb24KLQkJCQkxMS0xNC01IEFrYXNha2EsIE1pbmF0by1rdSwKLQkJCQlUb2t5byAxMDctMDA1MgotCQkJCUpBUEFOCi0KLTAwLTA2LTdBICAgKGhleCkJCUpNUCBTeXN0ZW1zCi0wMDA2N0EgICAgIChiYXNlIDE2KQkJSk1QIFN5c3RlbXMKLQkJCQkzcmQgRmwuIFNoaW53aGEgQmxkZy4sCi0JCQkJMTQ1MS0xOSwgU2VvY2hvLWRvbmcsCi0JCQkJU2VvY2hvLWt1IFNlb3VsLCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtN0IgICAoaGV4KQkJVG9wbGluayBDJkMgQ29ycG9yYXRpb24KLTAwMDY3QiAgICAgKGJhc2UgMTYpCQlUb3BsaW5rIEMmQyBDb3Jwb3JhdGlvbgotCQkJCTZGLTE1LCBOby4gMTIsIExhbmUgNjA5LCBTZWMuIDUKLQkJCQlDaHVuZyBIc2luIFJkLiwgU2FuIENodW5nIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gMjQxICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LTdDICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMDY3QyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTdEICAgKGhleCkJCVRha2FzYWdvIEx0ZC4KLTAwMDY3RCAgICAgKGJhc2UgMTYpCQlUYWthc2FnbyBMdGQuCi0JCQkJMS0yNC0xNiBNaXpvbm9rdWNoaSBUYWthdHN1LWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EKLQkJCQlKQVBBTgotCi0wMC0wNi03RSAgIChoZXgpCQlXaW5Db20gU3lzdGVtcywgSW5jLgotMDAwNjdFICAgICAoYmFzZSAxNikJCVdpbkNvbSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTA5MDAgV29ybGQgVHJhZGUgQmx2ZC4KLQkJCQlTdWl0ZSAyNTAKLQkJCQlNb3JyaXN2aWxsZSBOQyAyNzU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtN0YgICAoaGV4KQkJRGlnZW8sIEluYy4KLTAwMDY3RiAgICAgKGJhc2UgMTYpCQlEaWdlbywgSW5jLgotCQkJCTg4MTUgMTIybmQgQXZlbnVlIE5FCi0JCQkJS2lya2xhbmQgV0EgOTgwMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTgwICAgKGhleCkJCUNhcmQgQWNjZXNzLCBJbmMuCi0wMDA2ODAgICAgIChiYXNlIDE2KQkJQ2FyZCBBY2Nlc3MsIEluYy4KLQkJCQkxMTc3OCBTLiBFbGVjdGlvbiBSZAotCQkJCVN1aXRlIDI2MAotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDgwNDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi04MSAgIChoZXgpCQlHb2VwZWwgRWxlY3Ryb25pYyBHbWJICi0wMDA2ODEgICAgIChiYXNlIDE2KQkJR29lcGVsIEVsZWN0cm9uaWMgR21iSAotCQkJCUdvZXNjaHdpdHplciBTdHIuIDU4LTYwCi0JCQkJMDc3NDUgSmVuYQotCQkJCUdFUk1BTlkKLQotMDAtMDYtODIgICAoaGV4KQkJQ29udmVkaWEKLTAwMDY4MiAgICAgKGJhc2UgMTYpCQlDb252ZWRpYQotCQkJCTQxOTAgU3RpbGwgQ3JlZWsgRHIuCi0JCQkJVmFuY291dmVyIEIuQy4KLQkJCQlWNUMgNkM2Ci0JCQkJQ0FOQURBCi0KLTAwLTA2LTgzICAgKGhleCkJCUJyYXZhcmEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDY4MyAgICAgKGJhc2UgMTYpCQlCcmF2YXJhIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjY1MCBFYXN0IEJheXNob3JlIFJvYWQKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTg0ICAgKGhleCkJCUJpYWNvcmUgQUIKLTAwMDY4NCAgICAgKGJhc2UgMTYpCQlCaWFjb3JlIEFCCi0JCQkJU29mdHdhcmUsIEVsZWN0cm9uaWNzIGFuZCBPcHRpY3MKLQkJCQlSYXBzZ2F0YW4gNywgNzU0IDUwIFVwcHNhbGEKLQkJCQlTV0VERU4KLQotMDAtMDYtODUgICAoaGV4KQkJTmV0TmVhclUgQ29ycG9yYXRpb24KLTAwMDY4NSAgICAgKGJhc2UgMTYpCQlOZXROZWFyVSBDb3Jwb3JhdGlvbgotCQkJCTI5MDggRmluZmVhdGhlciBSb2FkCi0JCQkJQnJ5YW4gVFggNzc4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTg2ICAgKGhleCkJCVpBUkRDT00gQ28uLCBMdGQuCi0wMDA2ODYgICAgIChiYXNlIDE2KQkJWkFSRENPTSBDby4sIEx0ZC4KLQkJCQk0RiwgMTU0OC0xLCBTZW9jaG8gRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi04NyAgIChoZXgpCQlPbW5pdHJvbiBTeXN0ZW1zIFRlY2hub2xvZ3ksIEluYy4KLTAwMDY4NyAgICAgKGJhc2UgMTYpCQlPbW5pdHJvbiBTeXN0ZW1zIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxNDAgVGVjaG5vbG9neQotCQkJCVN1aXRlIDUwMAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtODggICAoaGV4KQkJVGVsd2F5cyBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotMDAwNjg4ICAgICAoYmFzZSAxNikJCVRlbHdheXMgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQkzRiwgTm8uIDUzLCBMYW5lIDI1OAotCQkJCVp1aS1LdWFuZyBSZC4sIE5laS1IdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi04OSAgIChoZXgpCQl5TGV6IFRlY2hub2xvZ2llcyBQdGUgTHRkCi0wMDA2ODkgICAgIChiYXNlIDE2KQkJeUxleiBUZWNobm9sb2dpZXMgUHRlIEx0ZAotCQkJCU5vLiAxLCBUYW5uZXJ5IFJvYWQsIENlbmNvbiAxLAotCQkJCSMwOS0wMywgMzQ3NzE5Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTA2LThBICAgKGhleCkJCU5ldXJvbk5ldCBDby4gTHRkLiBSJkQgQ2VudGVyCi0wMDA2OEEgICAgIChiYXNlIDE2KQkJTmV1cm9uTmV0IENvLiBMdGQuIFImRCBDZW50ZXIKLQkJCQk3MzUtMzQgRGFzdW5nIEJsZGcuLCBZdWtzYW0tZG9uZywKLQkJCQlLYW5nbmFtLWd1LCBTZW91bAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi04QiAgIChoZXgpCQlBaXJSdW5uZXIgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA2OEIgICAgIChiYXNlIDE2KQkJQWlyUnVubmVyIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTI0MDEgTHVwaW5lIFRyYWlsCi0JCQkJU291dGggTGFrZSBUYWhvZSBDQSA5NjE1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtOEMgICAoaGV4KQkJM0NvbSBDb3Jwb3JhdGlvbgotMDAwNjhDICAgICAoYmFzZSAxNikJCTNDb20gQ29ycG9yYXRpb24KLQkJCQk1NDAwIEJheWZyb250IFBsYXphCi0JCQkJTVM6ICA1MTE2Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LThEICAgKGhleCkJCVNFUEFUT04sIEluYy4KLTAwMDY4RCAgICAgKGJhc2UgMTYpCQlTRVBBVE9OLCBJbmMuCi0JCQkJNDAwIE5pY2tlcnNvbiBSZC4KLQkJCQlNYXJsYm9yb3VnaCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtOEUgICAoaGV4KQkJSElEIENvcnBvcmF0aW9uCi0wMDA2OEUgICAgIChiYXNlIDE2KQkJSElEIENvcnBvcmF0aW9uCi0JCQkJOTI5MiBKZXJvbmltbyBSb2FkCi0JCQkJSXJ2aW5lIENBIDkyNjE4LTE5MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LThGICAgKGhleCkJCVRlbGVtb25pdG9yLCBJbmMuCi0wMDA2OEYgICAgIChiYXNlIDE2KQkJVGVsZW1vbml0b3IsIEluYy4KLQkJCQk5MDU1RiBHdWlsZm9yZCBSb2FkCi0JCQkJQ29sdW1iaWEgTUQgMjEwNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTkwICAgKGhleCkJCUV1cmFjb20gQ29tbXVuaWNhdGlvbiBHbWJICi0wMDA2OTAgICAgIChiYXNlIDE2KQkJRXVyYWNvbSBDb21tdW5pY2F0aW9uIEdtYkgKLQkJCQlGcmFua2xpbnN0ci4gMTQKLQkJCQlELTEwNTg3IEJlcmxpbgotCQkJCUdFUk1BTlkKLQotMDAtMDYtOTEgICAoaGV4KQkJUFQgSW5vdmFjYW8KLTAwMDY5MSAgICAgKGJhc2UgMTYpCQlQVCBJbm92YWNhbwotCQkJCVJ1YSBFbmcuIEpvc2UgRi4gUGludG8gQmFzdG8KLQkJCQkzODEwIEF2ZWlybwotCQkJCVBPUlRVR0FMCi0KLTAwLTA2LTkyICAgKGhleCkJCUludHJ1dmVydCBOZXR3b3JrcywgSW5jLgotMDAwNjkyICAgICAoYmFzZSAxNikJCUludHJ1dmVydCBOZXR3b3JrcywgSW5jLgotCQkJCVN1aXRlIDEwMgotCQkJCTIyOTAgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTkzICAgKGhleCkJCUZsZXh1cyBDb21wdXRlciBUZWNobm9sb2d5LCBJbmMuCi0wMDA2OTMgICAgIChiYXNlIDE2KQkJRmxleHVzIENvbXB1dGVyIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk4Ri0yLCBOby41LCBBbGxleTIyLCBMYW5lIDUxMywKLQkJCQlSdWVpLUd1YW5nIFJkLiwgTmVpLUh1IERpc3QuLAotCQkJCVRhaXBlaSAxMTQgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtOTQgICAoaGV4KQkJTW9iaWxsaWFuIENvcnBvcmF0aW9uCi0wMDA2OTQgICAgIChiYXNlIDE2KQkJTW9iaWxsaWFuIENvcnBvcmF0aW9uCi0JCQkJMTEwMzEgVmlhIEZyb250ZXJhCi0JCQkJU3VpdGUgQwotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtOTUgICAoaGV4KQkJRW5zdXJlIFRlY2hub2xvZ2llcywgSW5jLgotMDAwNjk1ICAgICAoYmFzZSAxNikJCUVuc3VyZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkzNTI2IFdlc3QgTGliZXJ0eQotCQkJCVN1aXRlIDEwMAotCQkJCUFubiBBcmJvciBNSSA0ODEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtOTYgICAoaGV4KQkJQWR2ZW50IE5ldHdvcmtzCi0wMDA2OTYgICAgIChiYXNlIDE2KQkJQWR2ZW50IE5ldHdvcmtzCi0JCQkJOTYwMCBHcmVhdCBIaWxscyBUci4KLQkJCQlTdWl0ZSAzMDBFCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi05NyAgIChoZXgpCQlSICYgRCBDZW50ZXIKLTAwMDY5NyAgICAgKGJhc2UgMTYpCQlSICYgRCBDZW50ZXIKLQkJCQk1RiwgU2V1bmd3b24gQi9ELCA4MTAtOQotCQkJCUJhbmdiYWUtRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi05OCAgIChoZXgpCQllZ25pdGUgU29mdHdhcmUgR21iSAotMDAwNjk4ICAgICAoYmFzZSAxNikJCWVnbml0ZSBTb2Z0d2FyZSBHbWJICi0JCQkJRXJpbnN0ci4gOQotCQkJCUNhc3Ryb3AtUmF1eGVsIEQtNDQ1NzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LTk5ICAgKGhleCkJCVZpZGEgRGVzaWduIENvLgotMDAwNjk5ICAgICAoYmFzZSAxNikJCVZpZGEgRGVzaWduIENvLgotCQkJCTEwRiwgTm8uIDI3OCBIbyBQaW5nIEUuIFJkLiwKLQkJCQlTZWMuIDMsIFRhaXBlaQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtOUEgICAoaGV4KQkJZSAmIFRlbAotMDAwNjlBICAgICAoYmFzZSAxNikJCWUgJiBUZWwKLQkJCQkxMDAgU2Vqb25nLW5vIENob25nbm8tZ3UsCi0JCQkJU2VvdWwgMTEwLTc3NywKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtOUIgICAoaGV4KQkJQVZUIEF1ZGlvIFZpZGVvIFRlY2hub2xvZ2llcyBHbWJICi0wMDA2OUIgICAgIChiYXNlIDE2KQkJQVZUIEF1ZGlvIFZpZGVvIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJUmF0aHNiZXJnc3RyYXNzZSAxNwotCQkJCUQtOTA0MTEgTnVlcm5iZXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wNi05QyAgIChoZXgpCQlUcmFuc21vZGUgU3lzdGVtcyBBQgotMDAwNjlDICAgICAoYmFzZSAxNikJCVRyYW5zbW9kZSBTeXN0ZW1zIEFCCi0JCQkJSmFrb2JzZGFsc3bDg8KkZ2VuIDE3Ci0JCQkJSMOD4oCeR0VSU1RFTiBTRS0xMjYgNTMKLQkJCQlTV0VERU4KLQotMDAtMDYtOUQgICAoaGV4KQkJUGV0YXJkcyBMdGQKLTAwMDY5RCAgICAgKGJhc2UgMTYpCQlQZXRhcmRzIEx0ZAotCQkJCTM5MCBQcmluY2Vzd2F5LCBUZWFtIFZhbGxleQotCQkJCUdhdGVzaGVhZCBUeW5lIGFuZCBXZWFyIE5FMTEgT1RVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDYtOUUgICAoaGV4KQkJVU5JUUEsIEluYy4KLTAwMDY5RSAgICAgKGJhc2UgMTYpCQlVTklRQSwgSW5jLgotCQkJCTQ3NyBWYWxsZXkgV2F5Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LTlGICAgKGhleCkJCUt1b2tvYSBOZXR3b3JrcwotMDAwNjlGICAgICAoYmFzZSAxNikJCUt1b2tvYSBOZXR3b3JrcwotCQkJCTI5MDEgVGFzbWFuIERyLgotCQkJCVN1aXRlIDIwMgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1BMCAgIChoZXgpCQlNeCBJbWFnaW5nCi0wMDA2QTAgICAgIChiYXNlIDE2KQkJTXggSW1hZ2luZwotCQkJCTIzNDEgVy4gMjA1dGggU3RyZWV0Ci0JCQkJU3VpdGUgMTEwCi0JCQkJVG9ycmFuY2UgQ0EgOTA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUExICAgKGhleCkJCUNlbHNpYW4gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA2QTEgICAgIChiYXNlIDE2KQkJQ2Vsc2lhbiBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkzMDAyIERvdyBBdmUuLCBVbml0IDEzOAotCQkJCVR1c3RpbiBDQSA5Mjc4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQTIgICAoaGV4KQkJTWljcm90dW5lLCBJbmMuCi0wMDA2QTIgICAgIChiYXNlIDE2KQkJTWljcm90dW5lLCBJbmMuCi0JCQkJNjQ0MCBMdXNrIEJsdmQuLCBTdWl0ZSBEMjA1Ci0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1BMyAgIChoZXgpCQlCaXRyYW4gQ29ycG9yYXRpb24KLTAwMDZBMyAgICAgKGJhc2UgMTYpCQlCaXRyYW4gQ29ycG9yYXRpb24KLQkJCQkyMjEzIE1vY2hpZGEKLQkJCQlHeW91ZGEgU2FpdGFtYQotCQkJCUpBUEFOCi0KLTAwLTA2LUE0ICAgKGhleCkJCUlOTk9XRUxMIENvcnAuCi0wMDA2QTQgICAgIChiYXNlIDE2KQkJSU5OT1dFTEwgQ29ycC4KLQkJCQkjNzE3IENob25nR3UgQmx1ZXZpbGwKLQkJCQkxMS0xLCBTdW5hZS0xIERvbmcsIEJ1bmRhbmctR3UsIFN1bmduYW0tCi0JCQkJNDYzLTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1BNSAgIChoZXgpCQlQSU5PTiBDb3JwLgotMDAwNkE1ICAgICAoYmFzZSAxNikJCVBJTk9OIENvcnAuCi0JCQkJREsgR290YW5kYSBCbGRnLjdGCi0JCQkJNy0xMy01IE5pc2hpZ290YW5kYSBTaGluYWdhd2Eta3UKLQkJCQlUb2t5byAgMTQxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0wNi1BNiAgIChoZXgpCQlBcnRpc3RpYyBMaWNlbmNlIChVSykgTHRkCi0wMDA2QTYgICAgIChiYXNlIDE2KQkJQXJ0aXN0aWMgTGljZW5jZSAoVUspIEx0ZAotCQkJCTI0IEZvcndhcmQgRHJpdmUKLQkJCQlDaHJpc3RjaHVyY2ggQXZlbnVlCi0JCQkJSGFycm93IE1pZGRsZXNleCBIQTMgOE5UCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDYtQTcgICAoaGV4KQkJUHJpbWFyaW9uCi0wMDA2QTcgICAgIChiYXNlIDE2KQkJUHJpbWFyaW9uCi0JCQkJMzQ1MCBUb3JyYW5jZSBCbHZkLgotCQkJCVRvcnJhbmNlIENBIDkwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1BOCAgIChoZXgpCQlLQyBUZWNobm9sb2d5LCBJbmMuCi0wMDA2QTggICAgIChiYXNlIDE2KQkJS0MgVGVjaG5vbG9neSwgSW5jLgotCQkJCTE5MDAgTWNDYXJ0aHkgQmx2ZC4KLQkJCQlTdWl0ZSAzMDAKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQTkgICAoaGV4KQkJVW5pdmVyc2FsIEluc3RydW1lbnRzIENvcnAuCi0wMDA2QTkgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEluc3RydW1lbnRzIENvcnAuCi0JCQkJUE8gQm94IDgyNQotCQkJCUJpbmdoYW10b24gTlkgMTM5MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUFBICAgKGhleCkJCVZUIE1pbHRvcGUKLTAwMDZBQSAgICAgKGJhc2UgMTYpCQlWVCBNaWx0b3BlCi0JCQkJNDkwMCBQZWFybCBFYXN0IENpcmNsZQotCQkJCVN1aXRlIDEwNgotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUFCICAgKGhleCkJCVctTGluayBTeXN0ZW1zLCBJbmMuCi0wMDA2QUIgICAgIChiYXNlIDE2KQkJVy1MaW5rIFN5c3RlbXMsIEluYy4KLQkJCQlOby4gMjAsIFBhcmsgQXZlLiBJSSwKLQkJCQlTY2llbmNlIEJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LUFDICAgKGhleCkJCUludGVyc29mdCBDby4KLTAwMDZBQyAgICAgKGJhc2UgMTYpCQlJbnRlcnNvZnQgQ28uCi0JCQkJIzE4MDMgc3VuLWt5b3VuZyBPZmZpY2V0ZWwKLQkJCQkxMDYtNCBCdW56aSwgR3VybzVEb25nLCBHdXJvIEd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1BRCAgIChoZXgpCQlLQiBFbGVjdHJvbmljcyBMdGQuCi0wMDA2QUQgICAgIChiYXNlIDE2KQkJS0IgRWxlY3Ryb25pY3MgTHRkLgotCQkJCTE1MCBCbHVld2F0ZXIgUmQuCi0JCQkJQmVkZm9yZCwgTm92YSBTY290aWEKLQkJCQlCNEIgMUc5Ci0JCQkJQ0FOQURBCi0KLTAwLTA2LUFFICAgKGhleCkJCUhpbWFjaGFsIEZ1dHVyaXN0aWMgQ29tbXVuaWNhdGlvbnMgTHRkCi0wMDA2QUUgICAgIChiYXNlIDE2KQkJSGltYWNoYWwgRnV0dXJpc3RpYyBDb21tdW5pY2F0aW9ucyBMdGQKLQkJCQk4LCBDb21tZXJjaWFsIENvbXBsZXgKLQkJCQlNYXNqaWQgTW90aCwgR3JlYXRlciBLYWlsYXNoIElJCi0JCQkJTmV3IERlaGxpICAxMTAwNDgKLQkJCQlJTkRJQQotCi0wMC0wNi1BRiAgIChoZXgpCQlYYWx0ZWQgTmV0d29ya3MKLTAwMDZBRiAgICAgKGJhc2UgMTYpCQlYYWx0ZWQgTmV0d29ya3MKLQkJCQkyOTAxIERhbGxhcyBQYXJrd2F5Ci0JCQkJU3VpdGUgMjAwCi0JCQkJUGxhbm8gVFggNzUwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUIwICAgKGhleCkJCUNvbXRlY2ggRUYgRGF0YSBDb3JwLgotMDAwNkIwICAgICAoYmFzZSAxNikJCUNvbXRlY2ggRUYgRGF0YSBDb3JwLgotCQkJCTIxMTQgVy4gN3RoIFN0LgotCQkJCVRlbXBlIEFaIDg1MjgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1CMSAgIChoZXgpCQlTb25pY3dhbGwKLTAwMDZCMSAgICAgKGJhc2UgMTYpCQlTb25pY3dhbGwKLQkJCQkxMTYwIEJvcmRlYXV4IERyLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQjIgICAoaGV4KQkJTGlueHRlayBDby4KLTAwMDZCMiAgICAgKGJhc2UgMTYpCQlMaW54dGVrIENvLgotCQkJCTJGIEt1bS1hIEIvRCAzMS0zIEthcmFrLWRvbmcsCi0JCQkJU29uZ3BhLWt1LCBTZW91bCwKLQkJCQkxMzgtMTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUIzICAgKGhleCkJCURpYWdyYXBoIENvcnBvcmF0aW9uCi0wMDA2QjMgICAgIChiYXNlIDE2KQkJRGlhZ3JhcGggQ29ycG9yYXRpb24KLQkJCQkzNDAxIFJpZGVyIFRyYWlsIFNvdXRoCi0JCQkJRWFydGggQ2l0eSBNTyA2MzA0NS0xMTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1CNCAgIChoZXgpCQlWb3JuZSBJbmR1c3RyaWVzLCBJbmMuCi0wMDA2QjQgICAgIChiYXNlIDE2KQkJVm9ybmUgSW5kdXN0cmllcywgSW5jLgotCQkJCTE0NDUgSW5kdXN0cmlhbCBEci4KLQkJCQlJdGFzY2EgSUwgNjAxNDMtMTg0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQjUgICAoaGV4KQkJU291cmNlIFBob3RvbmljcywgSW5jLgotMDAwNkI1ICAgICAoYmFzZSAxNikJCVNvdXJjZSBQaG90b25pY3MsIEluYy4KLQkJCQkyMDU1MCBOb3JkaG9mZiBTdC4KLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1CNiAgIChoZXgpCQlOaXItT3IgSXNyYWVsIEx0ZC4KLTAwMDZCNiAgICAgKGJhc2UgMTYpCQlOaXItT3IgSXNyYWVsIEx0ZC4KLQkJCQkxMSBBbWFsIFN0LgotCQkJCVJvc2ggSGEnYXlpbiA0ODA5MgotCQkJCUlTUkFFTAotCi0wMC0wNi1CNyAgIChoZXgpCQlURUxFTSBHbWJICi0wMDA2QjcgICAgIChiYXNlIDE2KQkJVEVMRU0gR21iSAotCQkJCUxpc2UtTWVpdG5lci1BbGxlZSAzMQotCQkJCUQgNDQ4MDEKLQkJCQlHRVJNQU5ZCi0KLTAwLTA2LUI4ICAgKGhleCkJCUJhbmRzcGVlZCBQdHkgTHRkCi0wMDA2QjggICAgIChiYXNlIDE2KQkJQmFuZHNwZWVkIFB0eSBMdGQKLQkJCQlMZXZlbCA5LCA1MDAwIENvbGxpbnMgU3RyZWV0Ci0JCQkJTWVsYm91cm5lIFZpYyAzMDAwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTA2LUI5ICAgKGhleCkJCUE1VEVLIENvcnAuCi0wMDA2QjkgICAgIChiYXNlIDE2KQkJQTVURUsgQ29ycC4KLQkJCQkxMjMzIEFsZGVyd29vZCBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1CQSAgIChoZXgpCQlXZXN0d2F2ZSBDb21tdW5pY2F0aW9ucwotMDAwNkJBICAgICAoYmFzZSAxNikJCVdlc3R3YXZlIENvbW11bmljYXRpb25zCi0JCQkJNDYzIEF2aWF0aW9uIEJsdmQuCi0JCQkJU2FudGEgUm9zYSBDQSA5NTQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtQkIgICAoaGV4KQkJQVRJIFRlY2hub2xvZ2llcyBJbmMuCi0wMDA2QkIgICAgIChiYXNlIDE2KQkJQVRJIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNzUgVGl2ZXJ0b24gQ291cnQKLQkJCQlVbmlvbnZpbGxlLCBPTiBMM1IgOTUzCi0JCQkJQ0FOQURBCi0KLTAwLTA2LUJDICAgKGhleCkJCU1hY3JvbGluaywgSW5jLgotMDAwNkJDICAgICAoYmFzZSAxNikJCU1hY3JvbGluaywgSW5jLgotCQkJCTE1MDAgTiBLZWxsb2dnIERyLgotCQkJCUFuYWhlaW0gQ0EgOTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUJEICAgKGhleCkJCUJOVEVDSE5PTE9HWSBDby4sIEx0ZC4KLTAwMDZCRCAgICAgKGJhc2UgMTYpCQlCTlRFQ0hOT0xPR1kgQ28uLCBMdGQuCi0JCQkJNjAyIFlvdW5nc2hpbiBCbGRnLiAyMzgtOAotCQkJCVBvaS1Eb25nIEthbmduYW0tR3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUJFICAgKGhleCkJCUJhdW1lciBPcHRyb25pYyBHbWJICi0wMDA2QkUgICAgIChiYXNlIDE2KQkJQmF1bWVyIE9wdHJvbmljIEdtYkgKLQkJCQlCYWRzdHJhc3NlIDMwCi0JCQkJRC0wMTQ1NCBSYWRlYmVyZwotCQkJCUdFUk1BTlkKLQotMDAtMDYtQkYgICAoaGV4KQkJQWNjZWxsYSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDA2QkYgICAgIChiYXNlIDE2KQkJQWNjZWxsYSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJUm0gNTEyIE5vLiA2ODAgR3VpIFBpbmcgUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTAwLTA2LUMwICAgKGhleCkJCVVuaXRlZCBJbnRlcm5ldHdvcmtzLCBJbmMuCi0wMDA2QzAgICAgIChiYXNlIDE2KQkJVW5pdGVkIEludGVybmV0d29ya3MsIEluYy4KLQkJCQk1MDcyIE5vcnRoIDMwMCBXZXN0LCBTdWl0ZSAyTgotCQkJCVByb3ZvIFVUIDg0NjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1DMSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDA2QzEgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1DMiAgIChoZXgpCQlTbWFydG1hdGljIENvcnBvcmF0aW9uCi0wMDA2QzIgICAgIChiYXNlIDE2KQkJU21hcnRtYXRpYyBDb3Jwb3JhdGlvbgotCQkJCTY0MDAgQ29uZ3Jlc3MgQXZlLiwgU3VpdGUgMTMwMAotCQkJCUJvY2EgUmF0b24gRkwgMzM0ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUMzICAgKGhleCkJCVNjaGluZGxlciBFbGV2YXRvciBMdGQuCi0wMDA2QzMgICAgIChiYXNlIDE2KQkJU2NoaW5kbGVyIEVsZXZhdG9yIEx0ZC4KLQkJCQlEZXB0LiBSJkQtQ08KLQkJCQlWaWEgZGVsbGEgUGFjZSAyMgotCQkJCUxvY2Fybm8gQ0gtNjYwMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA2LUM0ICAgKGhleCkJCVBpb2xpbmsgSW5jLgotMDAwNkM0ICAgICAoYmFzZSAxNikJCVBpb2xpbmsgSW5jLgotCQkJCUlUIENhc3RsZSAxLTQwMSwgNTUwLTEgR2FzYW4tZG9uZywKLQkJCQkxNjU2LTIgU2VvY2hvLUd1LCBTZW91bAotCQkJCVNlb3VsIEdldW1jaG9uLUd1IDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtQzUgICAoaGV4KQkJSU5OT1ZJIFRlY2hub2xvZ2llcyBMaW1pdGVkCi0wMDA2QzUgICAgIChiYXNlIDE2KQkJSU5OT1ZJIFRlY2hub2xvZ2llcyBMaW1pdGVkCi0JCQkJMzFzdCBGbG9vciwgQ2hpbmEgT25saW5lIENlbnRyZQotCQkJCTMzMyBMb2NraGFydCBSb2FkCi0JCQkJV2FuY2hhaSAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDYtQzYgICAoaGV4KQkJbGVzc3dpcmUgQUcKLTAwMDZDNiAgICAgKGJhc2UgMTYpCQlsZXNzd2lyZSBBRwotCQkJCUltIFRlY2hub2xvZ2llcGFyayAyNQotCQkJCUdFUk1BTlkKLQotMDAtMDYtQzcgICAoaGV4KQkJUkZORVQgVGVjaG5vbG9naWVzIFB0ZSBMdGQgKFMpCi0wMDA2QzcgICAgIChiYXNlIDE2KQkJUkZORVQgVGVjaG5vbG9naWVzIFB0ZSBMdGQgKFMpCi0JCQkJVW5pdCAyMzMgSW5ub3ZhdGlvbiBDZW50cmUgQmxrIDIKLQkJCQkxOCBOYW55YW5nIERyaXZlCi0JCQkJNjM3NzIyCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTA2LUM4ICAgKGhleCkJCVN1bWl0b21vIE1ldGFsIE1pY3JvIERldmljZXMsIEluYy4KLTAwMDZDOCAgICAgKGJhc2UgMTYpCQlTdW1pdG9tbyBNZXRhbCBNaWNybyBEZXZpY2VzLCBJbmMuCi0JCQkJMSwgSGlnYXNoaW11a29qaW1hIEhpZ2FzaGluby1jaG8KLQkJCQlBbWFnYXNha2ksIEh5b2dvLCA2NjAtODY2MAotCQkJCUpBUEFOCi0KLTAwLTA2LUM5ICAgKGhleCkJCVRlY2huaWNhbCBNYXJrZXRpbmcgUmVzZWFyY2gsIEluYy4KLTAwMDZDOSAgICAgKGJhc2UgMTYpCQlUZWNobmljYWwgTWFya2V0aW5nIFJlc2VhcmNoLCBJbmMuCi0JCQkJU2hpbiBOaWhvbiBHaWp1dHN1IEJsZGcuCi0JCQkJMS0xLTMyLCBTaGliYWRhaW1vbiwgTWluYXRvLWt1Ci0JCQkJVG9reW8gMTA1LTAwMTIgIDEwNS0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMDYtQ0EgICAoaGV4KQkJQW1lcmljYW4gQ29tcHV0ZXIgJiBEaWdpdGFsIENvbXBvbmVudHMsIEluYy4gKEFDREMpCi0wMDA2Q0EgICAgIChiYXNlIDE2KQkJQW1lcmljYW4gQ29tcHV0ZXIgJiBEaWdpdGFsIENvbXBvbmVudHMsIEluYy4gKEFDREMpCi0JCQkJNDQwIENsb3ZlcmxlYWYgRHJpdmUKLQkJCQlCYWxkd2luIFBhcmsgQ0EgOTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUNCICAgKGhleCkJCUpvdHJvbiBFbGVjdHJvbmljcyBBL1MKLTAwMDZDQiAgICAgKGJhc2UgMTYpCQlKb3Ryb24gRWxlY3Ryb25pY3MgQS9TCi0JCQkJUG9iIDU0Ci0JCQkJTjMyODAgVGpvZGFseW5nCi0JCQkJTk9SV0FZCi0KLTAwLTA2LUNDICAgKGhleCkJCUpNSSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMDZDQyAgICAgKGJhc2UgMTYpCQlKTUkgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJTmFueWFuZyBCL0QgM0YsIDI1LTQKLQkJCQlZb25tdW4tZG9uZywgWW9uZ3Nhbi1ndQotCQkJCVNlb3VsICAxNDAtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUNEICAgKGhleCkJCUxlYWYgSW1hZ2luZyBMdGQuCi0wMDA2Q0QgICAgIChiYXNlIDE2KQkJTGVhZiBJbWFnaW5nIEx0ZC4KLQkJCQk3dGggSGF0bnVmYSBzdAotCQkJCVBldGFjaC1UaWt2YSAgNDkwMDIKLQkJCQlJU1JBRUwKLQotMDAtMDYtQ0UgICAoaGV4KQkJREFURU5PCi0wMDA2Q0UgICAgIChiYXNlIDE2KQkJREFURU5PCi0JCQkJUnVlIEFtaXJhbCBCZXJlbmdlcgotCQkJCVphYyBFcyBQYXNzYW50cyBJSSBCUCA5MDE0NSwgMzU4MDEgRGluYXIKLQkJCQlGUkFOQ0UKLQotMDAtMDYtQ0YgICAoaGV4KQkJVGhhbGVzIEF2aW9uaWNzIEluLUZsaWdodCBTeXN0ZW1zLCBMTEMKLTAwMDZDRiAgICAgKGJhc2UgMTYpCQlUaGFsZXMgQXZpb25pY3MgSW4tRmxpZ2h0IFN5c3RlbXMsIExMQwotCQkJCTE3NDgxIFJlZCBIaWxsIEF2ZW51ZQotCQkJCUlydmluZSBDQSA5MjYxNC01NjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1EMCAgIChoZXgpCQlFbGdhciBFbGVjdHJvbmljcyBDb3JwLgotMDAwNkQwICAgICAoYmFzZSAxNikJCUVsZ2FyIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJOTI1MCBCcm93biBEZWVyIFJkLgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRDEgICAoaGV4KQkJVGFob2UgTmV0d29ya3MsIEluYy4KLTAwMDZEMSAgICAgKGJhc2UgMTYpCQlUYWhvZSBOZXR3b3JrcywgSW5jLgotCQkJCTMwNTIgT3JjaGFyZCBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1EMiAgIChoZXgpCQlUdW5kcmEgU2VtaWNvbmR1Y3RvciBDb3JwLgotMDAwNkQyICAgICAoYmFzZSAxNikJCVR1bmRyYSBTZW1pY29uZHVjdG9yIENvcnAuCi0JCQkJNjAzIE1hcmNoIFJvYWQKLQkJCQlLYW5hdGEsIE9udC4KLQkJCQlLMkstMk01Ci0JCQkJQ0FOQURBCi0KLTAwLTA2LUQzICAgKGhleCkJCUFscGhhIFRlbGVjb20sIEluYy4gVS5TLkEuCi0wMDA2RDMgICAgIChiYXNlIDE2KQkJQWxwaGEgVGVsZWNvbSwgSW5jLiBVLlMuQS4KLQkJCQkxMzk0IEJvcnJlZ29yIEF2ZS4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUQ0ICAgKGhleCkJCUludGVyYWN0aXZlIE9iamVjdHMsIEluYy4KLTAwMDZENCAgICAgKGJhc2UgMTYpCQlJbnRlcmFjdGl2ZSBPYmplY3RzLCBJbmMuCi0JCQkJMTI2MDAgU0UgMzh0aCBTdC4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlCZWxsZXZ1ZSBXQSA5ODAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRDUgICAoaGV4KQkJRGlhbW9uZCBTeXN0ZW1zIENvcnAuCi0wMDA2RDUgICAgIChiYXNlIDE2KQkJRGlhbW9uZCBTeXN0ZW1zIENvcnAuCi0JCQkJODQzMC1EIENlbnRyYWwgQXZlLgotCQkJCU5ld2FyayBDQSA5NDU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRDYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNkQ2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUQ3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMDZENyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1EOCAgIChoZXgpCQlNYXBsZSBPcHRpY2FsIFN5c3RlbXMKLTAwMDZEOCAgICAgKGJhc2UgMTYpCQlNYXBsZSBPcHRpY2FsIFN5c3RlbXMKLQkJCQkzMjAwIE5vcnRoIEZpcnN0IFN0LgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1EOSAgIChoZXgpCQlJUE0tTmV0IFMucC5BLgotMDAwNkQ5ICAgICAoYmFzZSAxNikJCUlQTS1OZXQgUy5wLkEuCi0JCQkJVmlhIFJlbW8gRGUgRmVvCi0JCQkJODAwMjIgQXJ6YW5vIChOYXBsZXMpCi0JCQkJSVRBTFkKLQotMDAtMDYtREEgICAoaGV4KQkJSVRSQU4gQ29tbXVuaWNhdGlvbnMgTHRkLgotMDAwNkRBICAgICAoYmFzZSAxNikJCUlUUkFOIENvbW11bmljYXRpb25zIEx0ZC4KLQkJCQkxIEF6cmllbGkgQ2VudGVyLAotCQkJCVRoZSByb3VuZCBidWlsZGluZwotCQkJCVRlbCBBdml2IDY3MDIxICAgNjcwMjEKLQkJCQlJU1JBRUwKLQotMDAtMDYtREIgICAoaGV4KQkJSUNISVBTIENvLiwgTHRkLgotMDAwNkRCICAgICAoYmFzZSAxNikJCUlDSElQUyBDby4sIEx0ZC4KLQkJCQkzRiwgU2FtamVvbiBCbGRnLiwgMjM2LTMKLQkJCQlOb25oeXVuLURvbmcsIEthbmduYW0ta3UKLQkJCQlTZW91bC1DaXR5ICAxMzUtMDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtREMgICAoaGV4KQkJU3lhYmFzIFRlY2hub2xvZ3kgKEFtcXVlc3QpCi0wMDA2REMgICAgIChiYXNlIDE2KQkJU3lhYmFzIFRlY2hub2xvZ3kgKEFtcXVlc3QpCi0JCQkJNDcyNyBQYXNlbyBQYWRyZSBQYXJrd2F5Ci0JCQkJRnJlbW9udCBDQSA5NDU1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtREQgICAoaGV4KQkJQVQgJiBUIExhYm9yYXRvcmllcyAtIENhbWJyaWRnZSBMdGQKLTAwMDZERCAgICAgKGJhc2UgMTYpCQlBVCAmIFQgTGFib3JhdG9yaWVzIC0gQ2FtYnJpZGdlIEx0ZAotCQkJCTI0YSBUcnVtcGluZ3RvbiBTdHJlZXQKLQkJCQlDYW1icmlkZ2UsIENCMiAxUUEKLQkJCQlFTkdMQU5EIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA2LURFICAgKGhleCkJCUZsYXNoIFRlY2hub2xvZ3kKLTAwMDZERSAgICAgKGJhc2UgMTYpCQlGbGFzaCBUZWNobm9sb2d5Ci0JCQkJUC5PLiBCb3ggNjgxNTA5Ci0JCQkJRnJhbmtsaW4gVE4gMzcwNjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LURGICAgKGhleCkJCUFJRE9OSUMgQ29ycG9yYXRpb24KLTAwMDZERiAgICAgKGJhc2UgMTYpCQlBSURPTklDIENvcnBvcmF0aW9uCi0JCQkJMi03LTEwIE90c3VrYSwgQnVua3lvLWt1LAotCQkJCVRva3lvLCAxMTItMDAxMgotCQkJCUpBUEFOCi0KLTAwLTA2LUUwICAgKGhleCkJCU1BVCBDby4sIEx0ZC4KLTAwMDZFMCAgICAgKGJhc2UgMTYpCQlNQVQgQ28uLCBMdGQuCi0JCQkJODY0LTMgS3dhbnlhbmctZG9uZwotCQkJCURvbmdhbi1ndSwgQW55YW5nLXNpCi0JCQkJS3l1bmdnaS1kbyAgNDMxLTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1FMSAgIChoZXgpCQlUZWNobm8gVHJhZGUgcy5hCi0wMDA2RTEgICAgIChiYXNlIDE2KQkJVGVjaG5vIFRyYWRlIHMuYQotCQkJCTczMmEgQ2hhdXNzZWUgZGUgQnJ1eGVsbGVzCi0JCQkJQi0xNDEwIFdhdGVybG9vCi0JCQkJQkVMR0lVTQotCi0wMC0wNi1FMiAgIChoZXgpCQlDZWVtYXggVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDZFMiAgICAgKGJhc2UgMTYpCQlDZWVtYXggVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk1Zi03LCA3MzYsIENodW5nIENoZW5nIFJkLiwKLQkJCQlDaHVuZyBIbyBUYWlwZWkgSHNpZW4sCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNi1FMyAgIChoZXgpCQlRdWFudGl0YXRpdmUgSW1hZ2luZyBDb3Jwb3JhdGlvbgotMDAwNkUzICAgICAoYmFzZSAxNikJCVF1YW50aXRhdGl2ZSBJbWFnaW5nIENvcnBvcmF0aW9uCi0JCQkJODA4MSBMb3VnaGVlZCBIaWdod2F5Ci0JCQkJQnVybmFieSwgQkMKLQkJCQlDQU5BREEKLQotMDAtMDYtRTQgICAoaGV4KQkJQ2l0ZWwgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMDZFNCAgICAgKGJhc2UgMTYpCQlDaXRlbCBUZWNobm9sb2dpZXMgTHRkLgotCQkJCVdoZWF0Y3JvZnQgQnVzaW5lc3MgUGFyawotCQkJCUxhbmRtZXJlIExhbmUsIEVkd2FsdG9uCi0JCQkJTm90dGlnaGFtICBORzEyIDRERwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA2LUU1ICAgKGhleCkJCUZ1amlhbiBOZXdsYW5kIENvbXB1dGVyIEx0ZC4gQ28uCi0wMDA2RTUgICAgIChiYXNlIDE2KQkJRnVqaWFuIE5ld2xhbmQgQ29tcHV0ZXIgTHRkLiBDby4KLQkJCQkxNDFGIFN1bnNoaW5lIEhvbGlkYXkgSG90ZWwKLQkJCQlOby4gMjYgR2FvIFFpYW8gUmQuLCBXdVlpIFNxdWFyZQotCQkJCUZ1emhvdSBGdWppYW4gIDM1MDAwNQotCQkJCUNISU5BCi0KLTAwLTA2LUU2ICAgKGhleCkJCURvbmdZYW5nIFRlbGVjb20gQ28uLCBMdGQuCi0wMDA2RTYgICAgIChiYXNlIDE2KQkJRG9uZ1lhbmcgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQk2NDItNyBEZXVuZyBDaG9uLURvbmcsIEthbmdTZW8tR3UKLQkJCQlTZW91bCAxNTctODQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA2LUU3ICAgKGhleCkJCUJpdCBCbGl0eiBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDA2RTcgICAgIChiYXNlIDE2KQkJQml0IEJsaXR6IENvbW11bmljYXRpb25zIEluYy4KLQkJCQk4MzAgSGlsbHZpZXcgQ3QuLCAjMjkwCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUU4ICAgKGhleCkJCU9wdGljYWwgTmV0d29yayBUZXN0aW5nLCBJbmMuCi0wMDA2RTggICAgIChiYXNlIDE2KQkJT3B0aWNhbCBOZXR3b3JrIFRlc3RpbmcsIEluYy4KLQkJCQk1NSBNZXJjaGFudCBTdC4KLQkJCQkyOHRoIEZsb29yCi0JCQkJSG9ub2x1bHUgSEkgOTY4MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUU5ICAgKGhleCkJCUludGltZSBDb3JwLgotMDAwNkU5ICAgICAoYmFzZSAxNikJCUludGltZSBDb3JwLgotCQkJCTMyNC00LCBZYW5namFlLWRvbmcsIDJGCi0JCQkJU2VvY2hvLWt1LCBTZW91bCwgMTM3LTEzMCwKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDYtRUEgICAoaGV4KQkJRUxaRVQ4MCBNaWtyb2NvbXB1dGVyIEdtYkgmQ28uIEtHCi0wMDA2RUEgICAgIChiYXNlIDE2KQkJRUxaRVQ4MCBNaWtyb2NvbXB1dGVyIEdtYkgmQ28uIEtHCi0JCQkJVGhlYXRlcnBsYXR6IDkKLQkJCQlELTUyMDYyIEFhY2hlbgotCQkJCUdFUk1BTlkKLQotMDAtMDYtRUIgICAoaGV4KQkJR2xvYmFsIERhdGEKLTAwMDZFQiAgICAgKGJhc2UgMTYpCQlHbG9iYWwgRGF0YQotCQkJCTIyNTAgT2Jpc3BvIEF2ZSAjMTA1Ci0JCQkJU2lnbmFsIEhpbGwgQ0EgOTA4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA2LUVDICAgKGhleCkJCUhhcnJpcyBDb3Jwb3JhdGlvbgotMDAwNkVDICAgICAoYmFzZSAxNikJCUhhcnJpcyBDb3Jwb3JhdGlvbgotCQkJCTEwMjUgV2VzdCBOQVNBIEJsdmQKLQkJCQlNUyBELTIxQgotCQkJCU1lbGJvdXJuZSBGTCAzMjkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRUQgICAoaGV4KQkJSW5hcmEgTmV0d29ya3MKLTAwMDZFRCAgICAgKGJhc2UgMTYpCQlJbmFyYSBOZXR3b3JrcwotCQkJCTMwMzEgVGlzY2ggV2F5LAotCQkJCVN1aXRlIDEwMAotCQkJCVNhbiBKb3NlIENBIDk1MTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1FRSAgIChoZXgpCQlTaGVueWFuZyBOZXUtZXJhIEluZm9ybWF0aW9uICYgVGVjaG5vbG9neSBTdG9jayBDby4sIEx0ZAotMDAwNkVFICAgICAoYmFzZSAxNikJCVNoZW55YW5nIE5ldS1lcmEgSW5mb3JtYXRpb24gJiBUZWNobm9sb2d5IFN0b2NrIENvLiwgTHRkCi0JCQkJOC9GLCB0aGUgMjFzdCBDZW50dXJ5IEJ1aWxkaW5nLAotCQkJCU5vLiAxIFNoaWppIFJvYWQsIEh1bm5hbiBJbmR1c3RyaWFsIERpc3QKLQkJCQlEdmxwbW50IFpvbmUgU2hlbnlhbmcsIAotCQkJCUNISU5BCi0KLTAwLTA2LUVGICAgKGhleCkJCU1heHhhbiBTeXN0ZW1zLCBJbmMuCi0wMDA2RUYgICAgIChiYXNlIDE2KQkJTWF4eGFuIFN5c3RlbXMsIEluYy4KLQkJCQkxMDcgQm9uYXZlbnR1cmEgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRjAgICAoaGV4KQkJRGlnZW8sIEluYy4KLTAwMDZGMCAgICAgKGJhc2UgMTYpCQlEaWdlbywgSW5jLgotCQkJCTg4MTUgMTIybmQgQXZlLiwgTkUKLQkJCQlLaXJrbGFuZCBXQSA5ODAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRjEgICAoaGV4KQkJT3B0aWxsaW9uCi0wMDA2RjEgICAgIChiYXNlIDE2KQkJT3B0aWxsaW9uCi0JCQkJS3JvbmJvcmdzZ3IuOQotCQkJCVNFLTE2NDg3IEtpc3RhCi0JCQkJU1dFREVOCi0KLTAwLTA2LUYyICAgKGhleCkJCVBsYXR5cyBDb21tdW5pY2F0aW9ucwotMDAwNkYyICAgICAoYmFzZSAxNikJCVBsYXR5cyBDb21tdW5pY2F0aW9ucwotCQkJCTMxNTBBIENvcm9uYWRvIERyLgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1GMyAgIChoZXgpCQlBY2NlTGlnaHQgTmV0d29ya3MKLTAwMDZGMyAgICAgKGJhc2UgMTYpCQlBY2NlTGlnaHQgTmV0d29ya3MKLQkJCQk3MCBBYmVsZSBSb2FkLCBCdWlsZGluZyAxMjAwCi0JCQkJUGl0dHNidXJnaCBQQSAxNTAxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRjQgICAoaGV4KQkJUHJpbWUgRWxlY3Ryb25pY3MgJiBTYXRlbGxpdGljcyBJbmMuCi0wMDA2RjQgICAgIChiYXNlIDE2KQkJUHJpbWUgRWxlY3Ryb25pY3MgJiBTYXRlbGxpdGljcyBJbmMuCi0JCQkJNjksIFR1bmctWXVhbiBSZC4sCi0JCQkJQ2h1bmctTGkgQ2l0eSwgVGFveXVhbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDYtRjUgICAoaGV4KQkJQUxQUyBDbywuIEx0ZC4KLTAwMDZGNSAgICAgKGJhc2UgMTYpCQlBTFBTIENvLC4gTHRkLgotCQkJCTYtMy0zNiBGdXJ1a2F3YW5ha2F6YXRvLAotCQkJCU9zYWtpIE1peWFnaS1wcmVmIDk4OS02MTgxCi0JCQkJSkFQQU4KLQotMDAtMDYtRjYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwNkY2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDYtRjcgICAoaGV4KQkJQUxQUyBFbGVjdHJpYyBDbywuIEx0ZC4KLTAwMDZGNyAgICAgKGJhc2UgMTYpCQlBTFBTIEVsZWN0cmljIENvLC4gTHRkLgotCQkJCTYtMy0zNiBGdXJ1a2F3YW5ha2F6YXRvLAotCQkJCU9zYWtpIE1peWFnaS1wcmVmIDk4OS02MTgxCi0JCQkJSkFQQU4KLQotMDAtMDYtRjggICAoaGV4KQkJQ1BVIFRlY2hub2xvZ3ksIEluYy4KLTAwMDZGOCAgICAgKGJhc2UgMTYpCQlDUFUgVGVjaG5vbG9neSwgSW5jLgotCQkJCTU3MzEgVy4gTGFzIFBvc2l0YXMgQmx2ZC4KLQkJCQlQbGVhc2FudG9uIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1GOSAgIChoZXgpCQlNaXRzdWkgWm9zZW4gU3lzdGVtcyBSZXNlYXJjaCBJbmMuCi0wMDA2RjkgICAgIChiYXNlIDE2KQkJTWl0c3VpIFpvc2VuIFN5c3RlbXMgUmVzZWFyY2ggSW5jLgotCQkJCTExLTEsIFVubyAxLWNob21lCi0JCQkJVGFtYW5vLXNoaSwgT2theWFtYQotCQkJCTcwNi0wMDExCi0JCQkJSkFQQU4KLQotMDAtMDYtRkEgICAoaGV4KQkJSVAgU1FVQVJFIENvLCBMdGQuCi0wMDA2RkEgICAgIChiYXNlIDE2KQkJSVAgU1FVQVJFIENvLCBMdGQuCi0JCQkJMS05LTExLCBIYWthdGFla2loaWdhc2hpLAotCQkJCUhha2F0YS1rdSwgRnVrdW9rYS1zaGksCi0JCQkJRnVrdW9rYSAgODEyLTAwMTMKLQkJCQlKQVBBTgotCi0wMC0wNi1GQiAgIChoZXgpCQlIaXRhY2hpIFByaW50aW5nIFNvbHV0aW9ucywgTHRkLgotMDAwNkZCICAgICAoYmFzZSAxNikJCUhpdGFjaGkgUHJpbnRpbmcgU29sdXRpb25zLCBMdGQuCi0JCQkJMTA2MCwgVGFrZWRhIEhpdGFjaGluYWthLUNpdHkKLQkJCQlJYmFyYWtpLVByZWYuCi0JCQkJMzEyLTg1MDIKLQkJCQlKQVBBTgotCi0wMC0wNi1GQyAgIChoZXgpCQlGbmV0IENvLiwgTHRkLgotMDAwNkZDICAgICAoYmFzZSAxNikJCUZuZXQgQ28uLCBMdGQuCi0JCQkJS0ZTQiBCbGRnLiAxMHRoIEYuIDE2LTIKLQkJCQlZb2lkby1Eb25nLCBZb3VuZ2RldW5ncG8ta3UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNi1GRCAgIChoZXgpCQlDb21qZXQgSW5mb3JtYXRpb24gU3lzdGVtcyBDb3JwLgotMDAwNkZEICAgICAoYmFzZSAxNikJCUNvbWpldCBJbmZvcm1hdGlvbiBTeXN0ZW1zIENvcnAuCi0JCQkJN0ZsLiwgTm8uIDEwMywgRmVuIExpYW8gU3RyZWV0Ci0JCQkJTmVpLUh1LCBUYWlwZWkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA2LUZFICAgKGhleCkJCUFtYnJhZG8sIEluYwotMDAwNkZFICAgICAoYmFzZSAxNikJCUFtYnJhZG8sIEluYwotCQkJCTExMzAxIFcuIFByZXNpZGVudCBHZW9yZ2UgQnVzaCBGd3kuCi0JCQkJU3VpdGUxNTAKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNi1GRiAgIChoZXgpCQlTaGViYSBTeXN0ZW1zIENvLiwgTHRkLgotMDAwNkZGICAgICAoYmFzZSAxNikJCVNoZWJhIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJNXRoIEZsLiBIeXVuZGFpIEphZCBCL0QKLQkJCQk0NjAtMSBTZW9uZ25hZS1Eb25nLCBLYW5nZG9uZy1LdSwKLQkJCQlTZW91bCAgMTM0LTAzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0wMCAgIChoZXgpCQlaZXR0YW1lZGlhIEtvcmVhCi0wMDA3MDAgICAgIChiYXNlIDE2KQkJWmV0dGFtZWRpYSBLb3JlYQotCQkJCVN1aXRlIDEwMDgsIEt1bWthbmcgVmVudHVyZXRlbCwgMTEwOAotCQkJCUJpc2FuZG9uZywgRG9uZ2FuZ3UsIEFueWFuZ3NpCi0JCQkJS3lvdW5nZ2lkbywgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0wMSAgIChoZXgpCQlSQUNBTC1EQVRBQ09NCi0wMDA3MDEgICAgIChiYXNlIDE2KQkJUkFDQUwtREFUQUNPTQotCQkJCUxBTiBJTlRFUk5FVFdPUktJTkcgRElWSVNJT04KLQkJCQkxNTUgU1dBTlNPTiBST0FECi0JCQkJQk9YQk9ST1VHSCBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMDIgICAoaGV4KQkJVmFyaWFuIE1lZGljYWwgU3lzdGVtcwotMDAwNzAyICAgICAoYmFzZSAxNikJCVZhcmlhbiBNZWRpY2FsIFN5c3RlbXMKLQkJCQkyNTk5IEdhcmNpYSBBdmVudWUKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0wMyAgIChoZXgpCQlDU0VFIFRyYW5zcG9ydAotMDAwNzAzICAgICAoYmFzZSAxNikJCUNTRUUgVHJhbnNwb3J0Ci0JCQkJNCwgYXZlbnVlIGR1IENBTkFEQQotCQkJCUIuUC4gMjQzLTkxOTQ0IExlcyBVbGlzCi0JCQkJRlJBTkNFCi0KLTAwLTA3LTA0ICAgKGhleCkJCUFMUFMgRWxlY3RyaWMgQ28sLiBMdGQuCi0wMDA3MDQgICAgIChiYXNlIDE2KQkJQUxQUyBFbGVjdHJpYyBDbywuIEx0ZC4KLQkJCQk2LTMtMzYgRnVydWthd2FuYWthemF0bywKLQkJCQlPc2FraSBNaXlhZ2ktcHJlZiA5ODktNjE4MQotCQkJCUpBUEFOCi0KLTAwLTA3LTA1ICAgKGhleCkJCUVuZHJlc3MgJiBIYXVzZXIgR21iSCAmIENvCi0wMDA3MDUgICAgIChiYXNlIDE2KQkJRW5kcmVzcyAmIEhhdXNlciBHbWJIICYgQ28KLQkJCQlIYXVwdHN0cmFiZSAxIC0gUG9zdGZhY2ggMTI2MQotCQkJCUQtNzk2ODkgTWF1bGJlcmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTA2ICAgKGhleCkJCVNhbnJpdHogQ29ycG9yYXRpb24KLTAwMDcwNiAgICAgKGJhc2UgMTYpCQlTYW5yaXR6IENvcnBvcmF0aW9uCi0JCQkJMTk5LTEsIFNoaW1vb2lidWt1cm8sCi0JCQkJS2F3YWdvZS1jaXR5LCBTYWl0YW1hCi0JCQkJMzUwLTA4NDgKLQkJCQlKQVBBTgotCi0wMC0wNy0wNyAgIChoZXgpCQlJbnRlcmFsaWEgSW5jLgotMDAwNzA3ICAgICAoYmFzZSAxNikJCUludGVyYWxpYSBJbmMuCi0JCQkJNDExMC03OXRoIFN0cmVldCBOLlcuCi0JCQkJQ2FsZ2FyeSwgQWxiZXJ0YQotCQkJCVQzQiA1QzIKLQkJCQlDQU5BREEKLQotMDAtMDctMDggICAoaGV4KQkJQml0cmFnZSBJbmMuCi0wMDA3MDggICAgIChiYXNlIDE2KQkJQml0cmFnZSBJbmMuCi0JCQkJMTAwIFNvdXRocGFyayBCbHZkLgotCQkJCVN1aXRlIDQwMAotCQkJCVNhaW50IEF1Z3VzdGluZSBGTCAzMjA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMDkgICAoaGV4KQkJV2VzdGVyc3RyYW5kIFVyZmFicmlrIEFCCi0wMDA3MDkgICAgIChiYXNlIDE2KQkJV2VzdGVyc3RyYW5kIFVyZmFicmlrIEFCCi0JCQkJQm94IDEzMwotCQkJCVNFLTU0NSAyMyBUb3JlYm9kYQotCQkJCVNXRURFTgotCi0wMC0wNy0wQSAgIChoZXgpCQlVbmljb20gQXV0b21hdGlvbiBDby4sIEx0ZC4KLTAwMDcwQSAgICAgKGJhc2UgMTYpCQlVbmljb20gQXV0b21hdGlvbiBDby4sIEx0ZC4KLQkJCQlTaWxrIEJsZGcgMy0zMS0xMQotCQkJCUhvbmNobywgTmFrYW5vLWt1LAotCQkJCVRva3lvICAxNjQtMDAxMgotCQkJCUpBUEFOCi0KLTAwLTA3LTBCICAgKGhleCkJCU5vdmFiYXNlIFNHUFMsIFNBCi0wMDA3MEIgICAgIChiYXNlIDE2KQkJTm92YWJhc2UgU0dQUywgU0EKLQkJCQlBdi4gRCBKb2FvIElJLCBMb3RlIDEuMDMuMi4zCi0JCQkJUGFycXVlIGRhcyBOYWNvZXMKLQkJCQlMaXNib2EgIDE5OTgtMDMxCi0JCQkJUE9SVFVHQUwKLQotMDAtMDctMEMgICAoaGV4KQkJU1ZBLUludHJ1c2lvbi5jb20gQ28uIEx0ZC4KLTAwMDcwQyAgICAgKGJhc2UgMTYpCQlTVkEtSW50cnVzaW9uLmNvbSBDby4gTHRkLgotCQkJCVRoZSA0dGggRmxvb3IsIE5vLiAyOCBCdWlsZGluZwotCQkJCTE0MCBUaWFuIExpbiBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMDctMEQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA3MEQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJU0otTS8xCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0wRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDcwRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQlTSi1NLzEKLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTBGICAgKGhleCkJCUZ1amFudCwgSW5jLgotMDAwNzBGICAgICAoYmFzZSAxNikJCUZ1amFudCwgSW5jLgotCQkJCTYzMDUgQ2FycGludGVyaWEgQXZlbnVlCi0JCQkJU3VpdGUgMzAwCi0JCQkJQ2FycGludGVyaWEgQ0EgOTMwMTMtMjkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMTAgICAoaGV4KQkJQWRheCwgSW5jLgotMDAwNzEwICAgICAoYmFzZSAxNikJCUFkYXgsIEluYy4KLQkJCQk2MTQgQmFuY3JvZnQgV2F5Ci0JCQkJQmVya2VsZXkgQ0EgOTQ1NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTExICAgKGhleCkJCUFjdGVybmEKLTAwMDcxMSAgICAgKGJhc2UgMTYpCQlBY3Rlcm5hCi0JCQkJNjYyMCBOZXR3b3JrIFdheQotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMTIgICAoaGV4KQkJSkFMIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kKLTAwMDcxMiAgICAgKGJhc2UgMTYpCQlKQUwgSW5mb3JtYXRpb24gVGVjaG5vbG9neQotCQkJCU5ldHdvcmsgU29sdXRpb24gRGVwLiBKQUwtVGFtYWNoaSBCbGRnLgotCQkJCTE1LTEsIFNoaWJ1cmEsIDQtY2hvbWUsIE1pbmF0by1rdSwKLQkJCQlUb2t5byAgCi0JCQkJSkFQQU4KLQotMDAtMDctMTMgICAoaGV4KQkJSVAgT25lLCBJbmMuCi0wMDA3MTMgICAgIChiYXNlIDE2KQkJSVAgT25lLCBJbmMuCi0JCQkJU2FtbWkgQmxkZy4sIDEwMDQKLQkJCQlEYWVjaGktZG9uZyBHYW5nbmFtLWd1LAotCQkJCVNlb3VsLCAgMTM1LTA4MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0xNCAgIChoZXgpCQlCcmlnaHRjb20KLTAwMDcxNCAgICAgKGJhc2UgMTYpCQlCcmlnaHRjb20KLQkJCQk2IEhhbmVjaG9zaGV0IFN0LiwKLQkJCQlUZWwgQXZpdiA2OTcxMAotCQkJCUlTUkFFTAotCi0wMC0wNy0xNSAgIChoZXgpCQlHZW5lcmFsIFJlc2VhcmNoIG9mIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDA3MTUgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBSZXNlYXJjaCBvZiBFbGVjdHJvbmljcywgSW5jLgotCQkJCTMtMTItMTcsIE1pdGEsIE1pbmF0by1rdQotCQkJCVRva3lvICAxMDgtMDA3MwotCQkJCUpBUEFOCi0KLTAwLTA3LTE2ICAgKGhleCkJCUogJiBTIE1hcmluZSBMdGQuCi0wMDA3MTYgICAgIChiYXNlIDE2KQkJSiAmIFMgTWFyaW5lIEx0ZC4KLQkJCQlQb3R0aW5ndG9uIEJ1c2luZXNzIFBhcmsKLQkJCQlCYXJuc3RhcGxlCi0JCQkJRGV2b24gIEVYMzEgMUxZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctMTcgICAoaGV4KQkJV2llbGFuZCBFbGVjdHJpYyBHbWJICi0wMDA3MTcgICAgIChiYXNlIDE2KQkJV2llbGFuZCBFbGVjdHJpYyBHbWJICi0JCQkJQnJlbm5lcnN0ci4gMTAtMTQKLQkJCQlELTk2MDUyIEJhbWJlcmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTE4ICAgKGhleCkJCWlDYW5UZWsgQ28uLCBMdGQuCi0wMDA3MTggICAgIChiYXNlIDE2KQkJaUNhblRlayBDby4sIEx0ZC4KLQkJCQkybmQgRmwuIERLIFBsYXphIElJLCAzNzYtNSwKLQkJCQlLZXVtZ29rLWRvbmcsIEJ1bWRhZy1rdSwKLQkJCQlTdW5nbWFuLXNpLCBLeW9uZ2dpLWRvICA0NjMtODA1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTE5ICAgKGhleCkJCU1vYmlpcyBDby4sIEx0ZC4KLTAwMDcxOSAgICAgKGJhc2UgMTYpCQlNb2JpaXMgQ28uLCBMdGQuCi0JCQkJMjc3LTEsIFNoaW5od2EgQmxkZy4gNEYKLQkJCQlZYW5namFlLWRvbmcsIFNlb2Noby1ndSwKLQkJCQlTZW91bCwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0xQSAgIChoZXgpCQlGaW5lZGlnaXRhbCBJbmMuCi0wMDA3MUEgICAgIChiYXNlIDE2KQkJRmluZWRpZ2l0YWwgSW5jLgotCQkJCTR0aCBGbC4gQm9taSBCbGRnLiwgNjYxIERldW5nY2hvbiAzIERvbmcKLQkJCQlLYW5nc2VvIGt1LAotCQkJCVNlb3VsICAxNTctMDMzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTFCICAgKGhleCkJCUNEViBBbWVyaWNhcyBMdGQKLTAwMDcxQiAgICAgKGJhc2UgMTYpCQlDRFYgQW1lcmljYXMgTHRkCi0JCQkJMTY0NS1BIEF1dG9yb3V0ZSBMYXZhbCBXZXN0Ci0JCQkJTGF2YWwgUXVlYmVjIEg3TCAzVzMKLQkJCQlDQU5BREEKLQotMDAtMDctMUMgICAoaGV4KQkJQVQmVCBGaXhlZCBXaXJlbGVzcyBTZXJ2aWNlcwotMDAwNzFDICAgICAoYmFzZSAxNikJCUFUJlQgRml4ZWQgV2lyZWxlc3MgU2VydmljZXMKLQkJCQlQLk8uIEJveCA5MDc1OQotCQkJCVJlZG1vbmQgV0EgOTgwNzMtOTc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMUQgICAoaGV4KQkJU2F0ZWxzYSBTaXN0ZW1hcyBZIEFwbGljYWNpb25lcyBEZSBUZWxlY29tdW5pY2FjaW9uZXMsIFMuQS4KLTAwMDcxRCAgICAgKGJhc2UgMTYpCQlTYXRlbHNhIFNpc3RlbWFzIFkgQXBsaWNhY2lvbmVzIERlIFRlbGVjb211bmljYWNpb25lcywgUy5BLgotCQkJCWMvLCBBbGVqYW5kcm8gTW9yYW4sIDU2Ci0JCQkJMjgwMjUtTWFkcmlkCi0JCQkJU1BBSU4KLQotMDAtMDctMUUgICAoaGV4KQkJVHJpLU0gRW5naW5lZXJpbmcgLyBOdXBhayBEZXYuIENvcnAuCi0wMDA3MUUgICAgIChiYXNlIDE2KQkJVHJpLU0gRW5naW5lZXJpbmcgLyBOdXBhayBEZXYuIENvcnAuCi0JCQkJNi0xMzAxIEtldGNoIENvdXJ0Ci0JCQkJQ29xdWl0Y2F1dCBCQwotCQkJCVYzSyA2WDcKLQkJCQlDQU5BREEKLQotMDAtMDctMUYgICAoaGV4KQkJRXVyb3BlYW4gU3lzdGVtcyBJbnRlZ3JhdGlvbgotMDAwNzFGICAgICAoYmFzZSAxNikJCUV1cm9wZWFuIFN5c3RlbXMgSW50ZWdyYXRpb24KLQkJCQk0NTUgUHJvbWVuYWRlIERlcyBBbmdsYXMKLQkJCQlGLTA2MjAwIE5pY2UKLQkJCQlGUkFOQ0UKLQotMDAtMDctMjAgICAoaGV4KQkJVHJ1dHpzY2hsZXIgR21iSCAmIENvLiBLRwotMDAwNzIwICAgICAoYmFzZSAxNikJCVRydXR6c2NobGVyIEdtYkggJiBDby4gS0cKLQkJCQlEdXZlbnN0ci4gODItOTIKLQkJCQk0MTE5OSBNb25jaGVuZ2xhZGJhY2gKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTIxICAgKGhleCkJCUZvcm1hYyBFbGVrdHJvbmlrIEdtYkgKLTAwMDcyMSAgICAgKGJhc2UgMTYpCQlGb3JtYWMgRWxla3Ryb25payBHbWJICi0JCQkJRG9mc3RyLiAzMwotCQkJCTE1ODI3IEJsYW5rZW50ZWxkZQotCQkJCUdFUk1BTlkKLQotMDAtMDctMjIgICAoaGV4KQkJVGhlIE5pZWxzZW4gQ29tcGFueQotMDAwNzIyICAgICAoYmFzZSAxNikJCVRoZSBOaWVsc2VuIENvbXBhbnkKLQkJCQk1MDEgQnJvb2tlciBDcmVlayBCbHZkLgotCQkJCU9sZHNtYXIgRkwgMzQ2NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTIzICAgKGhleCkJCUVMQ09OIFN5c3RlbXRlY2huaWsgR21iSAotMDAwNzIzICAgICAoYmFzZSAxNikJCUVMQ09OIFN5c3RlbXRlY2huaWsgR21iSAotCQkJCU9iZXJlIEhhdXB0c3RyYXNzZSAxMAotCQkJCUQtMDkyMzIgSGFydG1hbm5zZG9yZgotCQkJCUdFUk1BTlkKLQotMDAtMDctMjQgICAoaGV4KQkJVGVsZW1heCBDby4sIEx0ZC4KLTAwMDcyNCAgICAgKGJhc2UgMTYpCQlUZWxlbWF4IENvLiwgTHRkLgotCQkJCTZ0aCBGbC4gU3VuZ3dvbyBCL0QsIDEwOTktMQotCQkJCVNhbmJvbi1Eb25nLCBLdW5wby1zaGkKLQkJCQlLeXVuZ2tpLURvLCAgNDM1LTA0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0yNSAgIChoZXgpCQlCZW1hdGVjaCBJbnRlcm5hdGlvbmFsIENvcnAuCi0wMDA3MjUgICAgIChiYXNlIDE2KQkJQmVtYXRlY2ggSW50ZXJuYXRpb25hbCBDb3JwLgotCQkJCTU4OTUgU2hpbG9oIFJvYWQKLQkJCQlTdWl0ZSAxMTEKLQkJCQlBbHBoYXJldHRhIEdBIDMwMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy0yNiAgIChoZXgpCQlTaGVuemhlbiBHb25namluIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwNzI2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEdvbmdqaW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJQTIxMS1BMjEzICYgQjIwMS1CMjEwLCAyRiwgQmFpeWluZyBCdWlsZGluZywgMTAxOSMsIE5hbmhhaSBSRCwgU2hla291IFBhcnR5LCBOYW5zaGFuIERpc3RyaWN0LCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDY3Ci0JCQkJQ0hJTkEKLQotMDAtMDctMjcgICAoaGV4KQkJWmkgQ29ycG9yYXRpb24gKEhLKSBMdGQuCi0wMDA3MjcgICAgIChiYXNlIDE2KQkJWmkgQ29ycG9yYXRpb24gKEhLKSBMdGQuCi0JCQkJMzAvRiwgQ2hpbmEgUmVzb3VyY2VzIEJ1aWxkaW5nCi0JCQkJMjYgSGFyYm91ciBSb2FkLCBXYWljaGFpLAotCQkJCUhPTkcgS09ORwotCi0wMC0wNy0yOCAgIChoZXgpCQlOZW8gVGVsZWNvbQotMDAwNzI4ICAgICAoYmFzZSAxNikJCU5lbyBUZWxlY29tCi0JCQkJRWFzdCBCdWlsZGluZyA5RiwgMVQKLQkJCQlWZW50dXJlIFRvd2VyLCA3OCBHYXJhZy1kb25nCi0JCQkJU29uZ3BhLWd1LCBTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTI5ICAgKGhleCkJCUtpc3RsZXIgSW5zdHJ1bWVudGUgQUcKLTAwMDcyOSAgICAgKGJhc2UgMTYpCQlLaXN0bGVyIEluc3RydW1lbnRlIEFHCi0JCQkJRXVsYWNoc3RyYXNzZSAyMgotCQkJCUNILTg0MDggV2ludGVydGh1cgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA3LTJBICAgKGhleCkJCUlubm92YW5jZSBOZXR3b3JrcwotMDAwNzJBICAgICAoYmFzZSAxNikJCUlubm92YW5jZSBOZXR3b3JrcwotCQkJCTE5IEZhaXJtb250IEF2ZW51ZQotCQkJCU90dGF3YSwgT250YXJpbyBLMVkgMVg0Ci0JCQkJQ0FOQURBCi0KLTAwLTA3LTJCICAgKGhleCkJCUp1bmcgTXl1bmcgVGVsZWNvbSBDby4sIEx0ZC4KLTAwMDcyQiAgICAgKGJhc2UgMTYpCQlKdW5nIE15dW5nIFRlbGVjb20gQ28uLCBMdGQuCi0JCQkJNUZsIFNpbGxhIFRlY2hub3ZpbC4sIDM5LTMgRGFuZy1Eb25nCi0JCQkJS29vbnBvLXNoaSwgS3l1bmcgS2ktRG8KLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctMkMgICAoaGV4KQkJRmFicmljb20KLTAwMDcyQyAgICAgKGJhc2UgMTYpCQlGYWJyaWNvbQotCQkJCVJ1ZSBHYXR0aSBEZSBHYW1vbmQgMjU0Ci0JCQkJMTE5MCBCcnV4ZWxsZXMKLQkJCQlCRUxHSVVNCi0KLTAwLTA3LTJEICAgKGhleCkJCUNOU3lzdGVtcwotMDAwNzJEICAgICAoYmFzZSAxNikJCUNOU3lzdGVtcwotCQkJCUJhdW1raXJjaGVyc3RyYXNzZSAxCi0JCQkJQS04MDIwIEdyYXoKLQkJCQlBVVNUUklBCi0KLTAwLTA3LTJFICAgKGhleCkJCU5vcnRoIE5vZGUgQUIKLTAwMDcyRSAgICAgKGJhc2UgMTYpCQlOb3J0aCBOb2RlIEFCCi0JCQkJU2tlcHBzbG9yb24gNDIKLQkJCQkxMTMwIFN0b2NraG9sbQotCQkJCVNXRURFTgotCi0wMC0wNy0yRiAgIChoZXgpCQlJbnRyYW5zYSwgSW5jLgotMDAwNzJGICAgICAoYmFzZSAxNikJCUludHJhbnNhLCBJbmMuCi0JCQkJMjY3MCBaYW5rZXIKLQkJCQlTdWl0ZSAyMDAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMzAgICAoaGV4KQkJSHV0Y2hpc29uIE9QVEVMIFRlbGVjb20gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDczMCAgICAgKGJhc2UgMTYpCQlIdXRjaGlzb24gT1BURUwgVGVsZWNvbSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiAyOCBYaW53YWkgU3RyZWV0Ci0JCQkJQmVpamluZyAgCi0JCQkJQ0hJTkEKLQotMDAtMDctMzEgICAoaGV4KQkJT3BoaXItU3Bpcmljb24gSW5jCi0wMDA3MzEgICAgIChiYXNlIDE2KQkJT3BoaXItU3Bpcmljb24gSW5jCi0JCQkJNjAgVyAxMDAwIE4KLQkJCQlMb2dhbiBVVCA4NDMyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctMzIgICAoaGV4KQkJQUFFT04gVGVjaG5vbG9neSBJbmMuCi0wMDA3MzIgICAgIChiYXNlIDE2KQkJQUFFT04gVGVjaG5vbG9neSBJbmMuCi0JCQkJNUYsICMxMzUsIExhbmUgMjM1LCBQYW8gQ2hpYW8gUm9hZAotCQkJCUhzaW4tVGllbiBDaXR5Ci0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTMzICAgKGhleCkJCURBTkNPTlRST0wgRW5naW5lZXJpbmcKLTAwMDczMyAgICAgKGJhc2UgMTYpCQlEQU5DT05UUk9MIEVuZ2luZWVyaW5nCi0JCQkJSXRhbGllbnN2ZWogMS01Ci0JCQkJREstODQ1MCBIYW1tZWwKLQkJCQlERU5NQVJLCi0KLTAwLTA3LTM0ICAgKGhleCkJCU9OU3RvciwgSW5jLgotMDAwNzM0ICAgICAoYmFzZSAxNikJCU9OU3RvciwgSW5jLgotCQkJCTEzMC1CIEtub3dsZXMgRHJpdmUKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTM1ICAgKGhleCkJCUZsYXJpb24gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA3MzUgICAgIChiYXNlIDE2KQkJRmxhcmlvbiBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMzUgUm91dGUgMjAyLzIwNiBTb3V0aAotCQkJCUJlZG1pbnN0ZXIgTkogMDc5MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTM2ICAgKGhleCkJCURhdGEgVmlkZW8gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAwNzM2ICAgICAoYmFzZSAxNikJCURhdGEgVmlkZW8gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCTdGLCBOby4gMzUyLCBTZWMuIDIKLQkJCQlDaHVuZy1TaGFuIFJkLiwgQ2h1bmctSG8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNy0zNyAgIChoZXgpCQlTb3JpeWEgQ28uIEx0ZC4KLTAwMDczNyAgICAgKGJhc2UgMTYpCQlTb3JpeWEgQ28uIEx0ZC4KLQkJCQkyLCA4dGggRmxvb3IgSGFuc2hpbiBCL08sIDEzNi0xLAotCQkJCUhhcG8tZG9uZywgTWFwby1ndSwKLQkJCQlTZW91bCwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0zOCAgIChoZXgpCQlZb3VuZyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNzM4ICAgICAoYmFzZSAxNikJCVlvdW5nIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJRC02MDQsIFNpZ21hLUlJIE9mZmljZXRlbCwKLQkJCQkjMTgsIEd1bWktZG9uZywgQnVuZGdhbmctZ3UsCi0JCQkJU3VuZ25hbS1zaSwgS3llb25nZ2ktZG8gNzYzLTc0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy0zOSAgIChoZXgpCQlTY290dHkgR3JvdXAgQXVzdHJpYSBHbWJoCi0wMDA3MzkgICAgIChiYXNlIDE2KQkJU2NvdHR5IEdyb3VwIEF1c3RyaWEgR21iaAotCQkJCVRlc2xhc3RyYXNzZSA0Ci0JCQkJODA3NCBHcmFtYmFjaCAgODA3NAotCQkJCUFVU1RSSUEKLQotMDAtMDctM0EgICAoaGV4KQkJSW52ZW50ZWwgU3lzdGVtZXMKLTAwMDczQSAgICAgKGJhc2UgMTYpCQlJbnZlbnRlbCBTeXN0ZW1lcwotCQkJCTM1LCBydWUgVG91bWVmb3J0Ci0JCQkJNzUwMDUgUGFyaXMKLQkJCQlGUkFOQ0UKLQotMDAtMDctM0IgICAoaGV4KQkJVGVub3ZpcyBHbWJIICYgQ28gS0cKLTAwMDczQiAgICAgKGJhc2UgMTYpCQlUZW5vdmlzIEdtYkggJiBDbyBLRwotCQkJCUtsZXllcnN0cmFzc2UgOTQKLQkJCQk2MDMyNiBGcmFua2Z1cnQKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTNDICAgKGhleCkJCVRlbGVjb20gRGVzaWduCi0wMDA3M0MgICAgIChiYXNlIDE2KQkJVGVsZWNvbSBEZXNpZ24KLQkJCQlWb2llIFJvbWFpbmUsIFpvbmUgZGUgUmVtb3JhCi0JCQkJMzMxNzAgR3JhZGlnbmFuCi0JCQkJRlJBTkNFCi0KLTAwLTA3LTNEICAgKGhleCkJCU5hbmppbmcgUG9zdGVsIFRlbGVjb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMDczRCAgICAgKGJhc2UgMTYpCQlOYW5qaW5nIFBvc3RlbCBUZWxlY29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJTm8uIDE4NywgU2hlbmdaaG91IFJvYWQsCi0JCQkJTmFuamluZyBDaXR5LCBKaWFuZ3N1Ci0JCQkJMjEwMDA0Ci0JCQkJQ0hJTkEKLQotMDAtMDctM0UgICAoaGV4KQkJQ2hpbmEgR3JlYXQtV2FsbCBDb21wdXRlciBTaGVuemhlbiBDby4sIEx0ZC4KLTAwMDczRSAgICAgKGJhc2UgMTYpCQlDaGluYSBHcmVhdC1XYWxsIENvbXB1dGVyIFNoZW56aGVuIENvLiwgTHRkLgotCQkJCVJlc2VhcmNoICYgRGV2ZWxvcG1lbnQgQ2VudGVyLCBLZWZhIFJvYWQKLQkJCQlTY2llbmNlIEluZHVzdHJ5IFBhcmssIE5hbnNoYW4gRGlzY3RyaWN0Ci0JCQkJU2hlbnpoZW4gIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTA3LTNGICAgKGhleCkJCVdvb2p5dW4gU3lzdGVjIENvLiwgTHRkLgotMDAwNzNGICAgICAoYmFzZSAxNikJCVdvb2p5dW4gU3lzdGVjIENvLiwgTHRkLgotCQkJCTRGIEhhbiBZYW5nIEIvRCwgWW9pZG8tZG9uZwotCQkJCVlvdW5nIERlb25nIFBvLWt1Ci0JCQkJU2VvdWwgIDE1MC0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctNDAgICAoaGV4KQkJQnVmZmFsbywgSW5jCi0wMDA3NDAgICAgIChiYXNlIDE2KQkJQnVmZmFsbywgSW5jCi0JCQkJTUVMQ08gSEktVEVDSCBDRU5URVIsCi0JCQkJNC0xNSAgU2hpYmF0YSwgSG9uZG9yaSwgCi0JCQkJTUlOQU1JLUtVLCBOQUdPWUEgQWljaGkgCi0JCQkJSkFQQU4KLQotMDAtMDctNDEgICAoaGV4KQkJU2llcnJhIEF1dG9tYXRlZCBTeXN0ZW1zCi0wMDA3NDEgICAgIChiYXNlIDE2KQkJU2llcnJhIEF1dG9tYXRlZCBTeXN0ZW1zCi0JCQkJMjYyNSBOb3J0aCBTYW4gRmVybmFuZG8gQmx2ZC4KLQkJCQlCdXJiYW5rIENBIDkxNTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy00MiAgIChoZXgpCQlDdXJyZW50IFRlY2hub2xvZ2llcywgTExDCi0wMDA3NDIgICAgIChiYXNlIDE2KQkJQ3VycmVudCBUZWNobm9sb2dpZXMsIExMQwotCQkJCTIwNDIwIENlbnR1cnkgQmx2ZAotCQkJCUdlcm1hbnRvd24gTUQgMjA4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTQzICAgKGhleCkJCUNoZWxzaW8gQ29tbXVuaWNhdGlvbnMKLTAwMDc0MyAgICAgKGJhc2UgMTYpCQlDaGVsc2lvIENvbW11bmljYXRpb25zCi0JCQkJMTcwIFMuIFdoaXNtb24gUmQuCi0JCQkJQmxkZy4gRCwgU3RlIEEKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQxLTE1MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTQ0ICAgKGhleCkJCVVuaWNvLCBJbmMuCi0wMDA3NDQgICAgIChiYXNlIDE2KQkJVW5pY28sIEluYy4KLQkJCQkzNzI1IE5pY2hvbHNvbiBSZC4KLQkJCQlGcmFua3N2aWxsZSBXSSA1MzEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNDUgICAoaGV4KQkJUmFkbGFuIENvbXB1dGVyIENvbW11bmljYXRpb25zIEx0ZC4KLTAwMDc0NSAgICAgKGJhc2UgMTYpCQlSYWRsYW4gQ29tcHV0ZXIgQ29tbXVuaWNhdGlvbnMgTHRkLgotCQkJCUF0aWRpbSBUZWNobm9sb2d5IFBhcmsKLQkJCQlCbGRnLiA0Ci0JCQkJVGVsIEF2aXYgIDYxMTMxCi0JCQkJSVNSQUVMCi0KLTAwLTA3LTQ2ICAgKGhleCkJCVRVUkNLLCBJbmMuCi0wMDA3NDYgICAgIChiYXNlIDE2KQkJVFVSQ0ssIEluYy4KLQkJCQkzMDAwIENhbXB1cyBEcml2ZQotCQkJCVBseW1vdXRoIE1OIDU1NDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy00NyAgIChoZXgpCQlNZWNhbGMKLTAwMDc0NyAgICAgKGJhc2UgMTYpCQlNZWNhbGMKLQkJCQlQTyBCb3ggNzk1OAotCQkJCUNlbnR1cmlvbiAwMDQ2Ci0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTA3LTQ4ICAgKGhleCkJCVRoZSBJbWFnaW5nIFNvdXJjZSBFdXJvcGUKLTAwMDc0OCAgICAgKGJhc2UgMTYpCQlUaGUgSW1hZ2luZyBTb3VyY2UgRXVyb3BlCi0JCQkJU29tbWVyc3RyYXNzZSAzNC0zNgotCQkJCTI4MjE1IEJyZW1hbgotCQkJCUdFUk1BTlkKLQotMDAtMDctNDkgICAoaGV4KQkJQ0VOaVggSW5jLgotMDAwNzQ5ICAgICAoYmFzZSAxNikJCUNFTmlYIEluYy4KLQkJCQk1MTQxIENhbGlmb3JuaWEgQXZlbnVlCi0JCQkJSXJ2aW5lIENBIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy00QSAgIChoZXgpCQlDYXJsIFZhbGVudGluIEdtYkgKLTAwMDc0QSAgICAgKGJhc2UgMTYpCQlDYXJsIFZhbGVudGluIEdtYkgKLQkJCQlOZWNrYXJzdHJhYmUgNzgtODAKLQkJCQlELTc4MDU2IFZTLVNjaHdlbm5pbmdlbgotCQkJCUdFUk1BTlkKLQotMDAtMDctNEIgICAoaGV4KQkJRGFpaGVuIENvcnBvcmF0aW9uCi0wMDA3NEIgICAgIChiYXNlIDE2KQkJRGFpaGVuIENvcnBvcmF0aW9uCi0JCQkJMi0xLTExIFRhZ2F3YSBZb2RvZ2F3YS1rdQotCQkJCU9zYWthIDUzMi04NTEyCi0JCQkJSkFQQU4KLQotMDAtMDctNEMgICAoaGV4KQkJQmVpY29tIEluYy4KLTAwMDc0QyAgICAgKGJhc2UgMTYpCQlCZWljb20gSW5jLgotCQkJCTExNCBLaW5nIFN0cmVldAotCQkJCUFsZXhhbmRyaWEgVkEgMjIzMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTREICAgKGhleCkJCVplYnJhIFRlY2hub2xvZ2llcyBDb3JwLgotMDAwNzREICAgICAoYmFzZSAxNikJCVplYnJhIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCTMzMyBDb3Jwb3JhdGUgV29vZHMgUGFya3dheQotCQkJCVZlcm5vbiBIaWxscyBJTCA2MDA2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNEUgICAoaGV4KQkJSVBGUk9OVCBJbmMKLTAwMDc0RSAgICAgKGJhc2UgMTYpCQlJUEZST05UIEluYwotCQkJCTJGIERhaWRvaCBMaW1pdGVkIEJsZGcKLQkJCQktMS0xNiBTb3Rva2FuZGEsIENoaXlvZGEta3UsCi0JCQkJVG9reW8gMTAxLTAwMjEKLQkJCQlKQVBBTgotCi0wMC0wNy00RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDA3NEYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNTAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwNzUwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTUxICAgKGhleCkJCW0tdS10IEFHCi0wMDA3NTEgICAgIChiYXNlIDE2KQkJbS11LXQgQUcKLQkJCQlNZXNzZ2Vy5HRlIGb8ciBNZWRpemluLSB1bmQgVW13ZWx0dGVjaG5pawotCQkJCUFtIE1hcmllbmhvZiAyCi0JCQkJV2VkZWwgIDIyODgwCi0JCQkJR0VSTUFOWQotCi0wMC0wNy01MiAgIChoZXgpCQlSaHl0aG0gV2F0Y2ggQ28uLCBMdGQuCi0wMDA3NTIgICAgIChiYXNlIDE2KQkJUmh5dGhtIFdhdGNoIENvLiwgTHRkLgotCQkJCTMyMSBTaGluc2h1a3VzaGluZGVuLCBTaG93YS1NYWNoaSwKLQkJCQlLaXRha2F0c2hpa2EtR3VuLCBTYWl0YW1hCi0JCQkJMzQ0LTAxOTYKLQkJCQlKQVBBTgotCi0wMC0wNy01MyAgIChoZXgpCQlCZWlqaW5nIFF4Y29tbSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwNzUzICAgICAoYmFzZSAxNikJCUJlaWppbmcgUXhjb21tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNEYgVG93ZXIgQiwgVG9uZ1RhaSBCdWlsZGluZyBOby4gMzMsCi0JCQkJRmluYW5jaWFsIFN0cmVldCwgWGljaGVuZyBEaXN0cmljdCwKLQkJCQlCZWlqaW5nIDEwMDAzMiAgCi0JCQkJQ0hJTkEKLQotMDAtMDctNTQgICAoaGV4KQkJWHl0ZXJyYSBDb21wdXRpbmcsIEluYy4KLTAwMDc1NCAgICAgKGJhc2UgMTYpCQlYeXRlcnJhIENvbXB1dGluZywgSW5jLgotCQkJCTE0NTA1IEhheWRlbiBSZC4sCi0JCQkJU3VpdGUgQjM0MAotCQkJCVNjb3R0c2RhbGUgQVogODUyNjAtNjk1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNTUgICAoaGV4KQkJTGFmb24gU0EKLTAwMDc1NSAgICAgKGJhc2UgMTYpCQlMYWZvbiBTQQotCQkJCTQ0IEF2ZW51ZSBWaWN0b3IgTWV1bmllcgotCQkJCSBCYXNzZW5zICAzMzUzMAotCQkJCUZSQU5DRQotCi0wMC0wNy01NiAgIChoZXgpCQlKdXlvdW5nIFRlbGVjb20KLTAwMDc1NiAgICAgKGJhc2UgMTYpCQlKdXlvdW5nIFRlbGVjb20KLQkJCQkjMjAxLCBEdW5zYW4gQnVpbGRpbmcKLQkJCQkyMTgtMSBXYWxweWVuZy1Eb25nLCBTZW9ndSwKLQkJCQlUYWVqb24gIDMwMi04NDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctNTcgICAoaGV4KQkJVG9wY2FsbCBJbnRlcm5hdGlvbmFsIEFHCi0wMDA3NTcgICAgIChiYXNlIDE2KQkJVG9wY2FsbCBJbnRlcm5hdGlvbmFsIEFHCi0JCQkJVGFscGFnYXNzZSAxCi0JCQkJMTIzMCBWaWVubmEKLQkJCQlBVVNUUklBCi0KLTAwLTA3LTU4ICAgKGhleCkJCURyYWdvbndhdmUKLTAwMDc1OCAgICAgKGJhc2UgMTYpCQlEcmFnb253YXZlCi0JCQkJNjAwLTQxMSBMZWdnZXR0IERyaXZlLAotCQkJCVN1aXRlIDYwMAotCQkJCUthbmF0YSwgT250YXJpbyBLMksgM0M5Ci0JCQkJQ0FOQURBCi0KLTAwLTA3LTU5ICAgKGhleCkJCUJvcmlzIE1hbnVmYWN0dXJpbmcgQ29ycC4KLTAwMDc1OSAgICAgKGJhc2UgMTYpCQlCb3JpcyBNYW51ZmFjdHVyaW5nIENvcnAuCi0JCQkJUE8gQm94IDYwMQotCQkJCUNhc3RsZSBQb2ludCBOWSAxMjUxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNUEgICAoaGV4KQkJQWlyIFByb2R1Y3RzIGFuZCBDaGVtaWNhbHMsIEluYy4KLTAwMDc1QSAgICAgKGJhc2UgMTYpCQlBaXIgUHJvZHVjdHMgYW5kIENoZW1pY2FscywgSW5jLgotCQkJCTcyMDEgSGFtaWx0b24gQmx2ZC4KLQkJCQlNYWlsIFN0b3AgQzEzMDcKLQkJCQlBbGxlbnRvd24gUEEgMTgxOTUtMTUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNUIgICAoaGV4KQkJR2lic29uIEd1aXRhcnMKLTAwMDc1QiAgICAgKGJhc2UgMTYpCQlHaWJzb24gR3VpdGFycwotCQkJCTMwOSBQYXJrIFBsdXMgQmx2ZC4KLQkJCQlOYXNodmlsbGUgVE4gMzcyMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTVDICAgKGhleCkJCUVhc3RtYW4gS29kYWsgQ29tcGFueQotMDAwNzVDICAgICAoYmFzZSAxNikJCUVhc3RtYW4gS29kYWsgQ29tcGFueQotCQkJCTM0MyBTdGF0ZSBTdHJlZXQKLQkJCQlSb2NoZXN0ZXIgTlkgMTQ2NTAtMDEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNUQgICAoaGV4KQkJQ2VsbGVyaXRhcyBJbmMuCi0wMDA3NUQgICAgIChiYXNlIDE2KQkJQ2VsbGVyaXRhcyBJbmMuCi0JCQkJYy9vIENlbGVyaXRhcyBMdGQuCi0JCQkJQmV6YWxlbCAyOSwgUmFtYXQtR2FuCi0JCQkJSVNSQUVMCi0KLTAwLTA3LTVFICAgKGhleCkJCUFtZXRlayBQb3dlciBJbnN0cnVtZW50cwotMDAwNzVFICAgICAoYmFzZSAxNikJCUFtZXRlayBQb3dlciBJbnN0cnVtZW50cwotCQkJCTQwNTAgTlcgMTIxIEF2ZW51ZQotCQkJCUNvcmFsIFNwcmluZ3MgRkwgMzMwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTVGICAgKGhleCkJCVZDUyBWaWRlbyBDb21tdW5pY2F0aW9uIFN5c3RlbXMgQUcKLTAwMDc1RiAgICAgKGJhc2UgMTYpCQlWQ1MgVmlkZW8gQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEFHCi0JCQkJRm9yY2hoZWltZXIgU3RyLiA0Ci0JCQkJOTA0MjUgTnVlcm5iZXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wNy02MCAgIChoZXgpCQlUT01JUyBJbmZvcm1hdGlvbiAmIFRlbGVjb20gQ29ycC4KLTAwMDc2MCAgICAgKGJhc2UgMTYpCQlUT01JUyBJbmZvcm1hdGlvbiAmIFRlbGVjb20gQ29ycC4KLQkJCQlZb3VuZ2RldW5ncG8gdGVsZXBob25lIG9mZmljZSAtIGV4dGVuc2lvCi0JCQkJWW91bmdkZXVuZ3BvZG9uZyAzNS0xLCBZb3VuZ2RldW5ncG8tZ3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTYxICAgKGhleCkJCUxvZ2l0ZWNoIFNBCi0wMDA3NjEgICAgIChiYXNlIDE2KQkJTG9naXRlY2ggU0EKLQkJCQlaLkkuIE1vdWxpbiBkdSBDaG9jIEQKLQkJCQlDSC0xMTIyIFJvbWFuZWwtc3VyLU1vcmdlcwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA3LTYyICAgKGhleCkJCUdyb3VwIFNlbnNlIExpbWl0ZWQKLTAwMDc2MiAgICAgKGJhc2UgMTYpCQlHcm91cCBTZW5zZSBMaW1pdGVkCi0JCQkJMjcvRiwgV3UgQ2h1bmcgSG91c2UsCi0JCQkJMjEzIFF1ZWVuJ3MgUm9hZCBFYXN0LAotCQkJCVdhbmNoYWkgIAotCQkJCUhPTkcgS09ORwotCi0wMC0wNy02MyAgIChoZXgpCQlTdW5uaXdlbGwgQ3liZXIgVGVjaC4gQ28uLCBMdGQuCi0wMDA3NjMgICAgIChiYXNlIDE2KQkJU3Vubml3ZWxsIEN5YmVyIFRlY2guIENvLiwgTHRkLgotCQkJCTE3dGggRmxvb3IgSGFpdGFpIEJ1aWxkaW5nICMyMjkKLQkJCQlCZWlzaWh1YW4gSG9uZyBSb2FkLAotCQkJCUJlaWppbmcgIDEwMDA4MwotCQkJCUNISU5BCi0KLTAwLTA3LTY0ICAgKGhleCkJCVlvdW5nV29vIFRlbGVjb20gQ28uIEx0ZC4KLTAwMDc2NCAgICAgKGJhc2UgMTYpCQlZb3VuZ1dvbyBUZWxlY29tIENvLiBMdGQuCi0JCQkJM0YsIFNlaHdhIEIvRCwgMzU1LTEKLQkJCQlZYXRhcC1Eb25nLCBCdW5kYWcta3UKLQkJCQlTdW5nbmFtLVNpIEt5dW5na2ktRG8gCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LTY1ICAgKGhleCkJCUphZGUgUXVhbnR1bSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDc2NSAgICAgKGJhc2UgMTYpCQlKYWRlIFF1YW50dW0gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNUYsIE5vLiAxMTYsIEhzaWVuIEZ1IFJkLiwKLQkJCQlUYW95dWFuLAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDctNjYgICAoaGV4KQkJQ2hvdSBDaGluIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDA3NjYgICAgIChiYXNlIDE2KQkJQ2hvdSBDaGluIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJOUYsICMzNSwgQ2hpYXUgQW4gU3QuIENodW5nIEhvIENpdHksCi0JCQkJVGFpcGVpIEhzaWVuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wNy02NyAgIChoZXgpCQlZdXhpbmcgRWxlY3Ryb25pY3MgQ29tcGFueSBMaW1pdGVkCi0wMDA3NjcgICAgIChiYXNlIDE2KQkJWXV4aW5nIEVsZWN0cm9uaWNzIENvbXBhbnkgTGltaXRlZAotCQkJCVVuaXQgMTgwOCwgMTgvRiBUb3dlciAzLAotCQkJCUVudGVycHJpc2UgU3F1YXJlLCA5IFNoZXVuZyBZdWV0IFJvYWQKLQkJCQlLb3dsb29uIEJheSwgS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDctNjggICAoaGV4KQkJRGFuZm9zcyBBL1MKLTAwMDc2OCAgICAgKGJhc2UgMTYpCQlEYW5mb3NzIEEvUwotCQkJCUUxNi1OMTIsIERLLTY0MzAgTm9yZGJvcmcKLQkJCQlERU5NQVJLCi0KLTAwLTA3LTY5ICAgKGhleCkJCUl0YWxpYW5hIE1hY2NoaSBTcEEKLTAwMDc2OSAgICAgKGJhc2UgMTYpCQlJdGFsaWFuYSBNYWNjaGkgU3BBCi0JCQkJVmlhIE1hdHRlb3R0aSAxCi0JCQkJMjEwNDAgT2dnaW9uYSBTLiBTdGVmYW5vIChWQSkKLQkJCQlJVEFMWQotCi0wMC0wNy02QSAgIChoZXgpCQlORVhURVlFIENvLiwgTHRkLgotMDAwNzZBICAgICAoYmFzZSAxNikJCU5FWFRFWUUgQ28uLCBMdGQuCi0JCQkJU2hpbnNlZ2kgUGxhemEgNEYsIDkwMC05LAotCQkJCVB5dW5nY2hvbiwgRG9uZ2FuLCBBbnlhbmcsCi0JCQkJS3l1bmdnaSAgNDMxLTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy02QiAgIChoZXgpCQlTdHJhbGZvcnMgQUIKLTAwMDc2QiAgICAgKGJhc2UgMTYpCQlTdHJhbGZvcnMgQUIKLQkJCQlMYW5nZ2F0YW4gMjEKLQkJCQlTLTM0MSA4NCBManVuZ2J5Ci0JCQkJU1dFREVOCi0KLTAwLTA3LTZDICAgKGhleCkJCURhZWhhbmV0LCBJbmMuCi0wMDA3NkMgICAgIChiYXNlIDE2KQkJRGFlaGFuZXQsIEluYy4KLQkJCQkjOC0yIENodW5nIEp1bmcgUmQgMi0gR2EKLQkJCQlTdXIgRGFlIE1vb24sCi0JCQkJU2VvdWwgIDEyMC0wMTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctNkQgICAoaGV4KQkJRmxleGxpZ2h0IE5ldHdvcmtzCi0wMDA3NkQgICAgIChiYXNlIDE2KQkJRmxleGxpZ2h0IE5ldHdvcmtzCi0JCQkJMTUgQXRpciBZZWRhIFN0LgotCQkJCUtmYXIgU2FiYSA0NDY0MwotCQkJCUlTUkFFTAotCi0wMC0wNy02RSAgIChoZXgpCQlTaW5ldGljYSBDb3Jwb3JhdGlvbiBMaW1pdGVkCi0wMDA3NkUgICAgIChiYXNlIDE2KQkJU2luZXRpY2EgQ29ycG9yYXRpb24gTGltaXRlZAotCQkJCVdpbGxvdyBIb3VzZQotCQkJCUxsYW5jYXlvIENvdXJ0Ci0JCQkJTW9ubW91dGhzaGlyZSBVc2sgTlAxNSAxSFkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNy02RiAgIChoZXgpCQlTeW5vcHRpY3MgTGltaXRlZAotMDAwNzZGICAgICAoYmFzZSAxNikJCVN5bm9wdGljcyBMaW1pdGVkCi0JCQkJQmVhY29uIEhvdXNlLCBOdWZmaWVsZCBSb2FkLAotCQkJCUNhbWJyaWRnZSBDQjQgMVRGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDctNzAgICAoaGV4KQkJTG9jdXNuZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAwNzcwICAgICAoYmFzZSAxNikJCUxvY3VzbmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQk5dGggRmwuIENodW5namxuCi0JCQkJNTMtNSBXb25oeW8tUm8gM0dhCi0JCQkJU2VvdWwgIDE0MC03MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctNzEgICAoaGV4KQkJRW1iZWRkZWQgU3lzdGVtIENvcnBvcmF0aW9uCi0wMDA3NzEgICAgIChiYXNlIDE2KQkJRW1iZWRkZWQgU3lzdGVtIENvcnBvcmF0aW9uCi0JCQkJMTMtNSwgVGFrYWRhbm9iYWJhIDMtY2hvbWUsCi0JCQkJU2hpbmp1a3Uta3UsIFRva3lvIDE2OS0wMDc1Ci0JCQkJSkFQQU4KLQotMDAtMDctNzIgICAoaGV4KQkJQWxjYXRlbCBTaGFuZ2hhaSBCZWxsIENvLiwgTHRkLgotMDAwNzcyICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgU2hhbmdoYWkgQmVsbCBDby4sIEx0ZC4KLQkJCQlOby4gMzg4LCBOaW5ncWlhbyBSb2FkLAotCQkJCVB1ZG9uZyBKaW5xaWFvLCBTaGFuZ2hhaQotCQkJCTIwMTIwNgotCQkJCUNISU5BCi0KLTAwLTA3LTczICAgKGhleCkJCUFzY29tIFBvd2VybGluZSBDb21tdW5pY2F0aW9ucyBMdGQuCi0wMDA3NzMgICAgIChiYXNlIDE2KQkJQXNjb20gUG93ZXJsaW5lIENvbW11bmljYXRpb25zIEx0ZC4KLQkJCQlCZWxwc3RyLiAzNwotCQkJCTMwMDAgQmVybiAxNAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA3LTc0ICAgKGhleCkJCUd1YW5nWmhvdSBUaGlua2VyIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTAwMDc3NCAgICAgKGJhc2UgMTYpCQlHdWFuZ1pob3UgVGhpbmtlciBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJMTA5IFpob25nc2hhbiBBdmUuLCBUaWFuaGUgRGlzdHJpY3QKLQkJCQlHdWFuZ3pob3UKLQkJCQk1MTA2MzAKLQkJCQlDSElOQQotCi0wMC0wNy03NSAgIChoZXgpCQlWYWxlbmNlIFNlbWljb25kdWN0b3IsIEluYy4KLTAwMDc3NSAgICAgKGJhc2UgMTYpCQlWYWxlbmNlIFNlbWljb25kdWN0b3IsIEluYy4KLQkJCQk0MSBEaXNjb3ZlcnkKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LTc2ICAgKGhleCkJCUZlZGVyYWwgQVBECi0wMDA3NzYgICAgIChiYXNlIDE2KQkJRmVkZXJhbCBBUEQKLQkJCQk0Mjc3NSBOaW5lIE1pbGUgUmQuCi0JCQkJTm92aSBNSSA0ODM3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctNzcgICAoaGV4KQkJTW90YWggTHRkLgotMDAwNzc3ICAgICAoYmFzZSAxNikJCU1vdGFoIEx0ZC4KLQkJCQk0LTQtNSBLb2lzaGlrYXdhCi0JCQkJQnVua3lvLCBUb2t5bwotCQkJCTExMi0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMDctNzggICAoaGV4KQkJR0VSU1RFTCBHbWJIICYgQ28uIEtHCi0wMDA3NzggICAgIChiYXNlIDE2KQkJR0VSU1RFTCBHbWJIICYgQ28uIEtHCi0JCQkJRWJlcmhhcmQtR2Vyc3RlbC1QbGF0eiAxCi0JCQkJRDQ1NDczCi0JCQkJTcO8bGhlaW0gYW4gZGVyIFJ1aHIgIAotCQkJCUdFUk1BTlkKLQotMDAtMDctNzkgICAoaGV4KQkJU3VuZ2lsIFRlbGVjb20gQ28uLCBMdGQuCi0wMDA3NzkgICAgIChiYXNlIDE2KQkJU3VuZ2lsIFRlbGVjb20gQ28uLCBMdGQuCi0JCQkJIzMyMSwgR29uZ2Rhbi1Eb25nLAotCQkJCUd1bWktQ2l0eSwgS3lvdW5nLUJ1awotCQkJCTczMC0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctN0EgICAoaGV4KQkJSW5mb3dhcmUgU3lzdGVtIENvLiwgTHRkLgotMDAwNzdBICAgICAoYmFzZSAxNikJCUluZm93YXJlIFN5c3RlbSBDby4sIEx0ZC4KLQkJCQlNaXpvcm9naSBEYWlpY2hpIEJsZGcgNCBGCi0JCQkJMS01LTEzIFNoaW5qdWt1LCBTaGluanVrdS1rdQotCQkJCVRva3lvICAKLQkJCQlKQVBBTgotCi0wMC0wNy03QiAgIChoZXgpCQlNaWxsaW1ldHJpeCBCcm9hZGJhbmQgTmV0d29ya3MKLTAwMDc3QiAgICAgKGJhc2UgMTYpCQlNaWxsaW1ldHJpeCBCcm9hZGJhbmQgTmV0d29ya3MKLQkJCQlLaWJ1dHogR2l2YXQgSGFzaGVsb3NoYSA0ODgwMAotCQkJCUlTUkFFTAotCi0wMC0wNy03QyAgIChoZXgpCQlXZXN0ZXJtbyBUZWxlaW5kdXN0cmkgQUIKLTAwMDc3QyAgICAgKGJhc2UgMTYpCQlXZXN0ZXJtbyBUZWxlaW5kdXN0cmkgQUIKLQkJCQlTRS02NDAgNDAKLQkJCQlTdG9yYSBTdW5kYnkgIAotCQkJCVNXRURFTgotCi0wMC0wNy03RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA3N0QgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctN0UgICAoaGV4KQkJRWxyZXN0IEdtYkgKLTAwMDc3RSAgICAgKGJhc2UgMTYpCQlFbHJlc3QgR21iSAotCQkJCUxlaWJuaXpzdHIuIDEwCi0JCQkJRC03MzIzMCBLaXJjaGhlaW0KLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LTdGICAgKGhleCkJCUogQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDA3N0YgICAgIChiYXNlIDE2KQkJSiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQkxMjQtNCBPamVvbi1Eb25nLCBVbHdhbmctQ2l0eQotCQkJCUt5dW5na2ktRG8KLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctODAgICAoaGV4KQkJQmx1ZWdpZ2EgVGVjaG5vbG9naWVzIE9ZCi0wMDA3ODAgICAgIChiYXNlIDE2KQkJQmx1ZWdpZ2EgVGVjaG5vbG9naWVzIE9ZCi0JCQkJUC5PLiBCT1ggMTIwCi0JCQkJRklOLTAyNjMxIEVzcG9vIAotCQkJCUZJTkxBTkQKLQotMDAtMDctODEgICAoaGV4KQkJSXRyb24gSW5jLgotMDAwNzgxICAgICAoYmFzZSAxNikJCUl0cm9uIEluYy4KLQkJCQkyODE4IE4uIFN1bGxpdmFuIFJvYWQKLQkJCQlTcG9rYW5lIFdBIDk5MjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy04MiAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMDc4MiAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJTWVubG8gUGFyayBDQSA5NTAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctODMgICAoaGV4KQkJU3luQ29tIE5ldHdvcmssIEluYy4KLTAwMDc4MyAgICAgKGJhc2UgMTYpCQlTeW5Db20gTmV0d29yaywgSW5jLgotCQkJCTRGLCBOby4gMzEsIEhzaW50YWkgUm9hZCwgQ2h1cGVpIENpdHksCi0JCQkJSHNpbmNodSBIc2llbiwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA3LTg0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMgSW5jLgotMDAwNzg0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctODUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA3ODUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy04NiAgIChoZXgpCQlXaXJlbGVzcyBOZXR3b3JrcyBJbmMuCi0wMDA3ODYgICAgIChiYXNlIDE2KQkJV2lyZWxlc3MgTmV0d29ya3MgSW5jLgotCQkJCSMzMDAsIDMwMTYgRmlmdGggQXZlLiBORQotCQkJCUNhbGdhcnksIEFsYmVydGEKLQkJCQlUMkEgNks0Ci0JCQkJQ0FOQURBCi0KLTAwLTA3LTg3ICAgKGhleCkJCUlkZWEgU3lzdGVtIENvLiwgTHRkLgotMDAwNzg3ICAgICAoYmFzZSAxNikJCUlkZWEgU3lzdGVtIENvLiwgTHRkLgotCQkJCTQtMS0yMSBTaGlubWVpLWNobyBPa2F5YS1zaGkKLQkJCQlOYWdhbm8ta2VuIDM5NC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMDctODggICAoaGV4KQkJQ2xpcGNvbW0sIEluYy4KLTAwMDc4OCAgICAgKGJhc2UgMTYpCQlDbGlwY29tbSwgSW5jLgotCQkJCTV0aCBGbCwgU3Nhbmd5YW5nIEJsZGcuCi0JCQkJOTM1LTEgQm9uZ2NoZW9uLWRvbmcsIEt3YW1hay1ndSwKLQkJCQlTZW91bCAgMTUxLTgyNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy04OSAgIChoZXgpCQlET05HV09OIFNZU1RFTVMKLTAwMDc4OSAgICAgKGJhc2UgMTYpCQlET05HV09OIFNZU1RFTVMKLQkJCQk4NjEtNSwgR3dhbnlhbmctRG9uZywgRG9uZ2FuLUd1LAotCQkJCUFueWFuZy1zaSwgR3llb25nZ2ktZG8sICA0MzAtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LThBICAgKGhleCkJCU1lbnRvciBEYXRhIFN5c3RlbSBJbmMuCi0wMDA3OEEgICAgIChiYXNlIDE2KQkJTWVudG9yIERhdGEgU3lzdGVtIEluYy4KLQkJCQlOby4gMjQtMSwgSW5kdXN0cnkgRWFzdCA0IFJkLiwKLQkJCQlTY2llbmNlIEJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luLUNodSwgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDctOEIgICAoaGV4KQkJV2VnZW5lciBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNzhCICAgICAoYmFzZSAxNikJCVdlZ2VuZXIgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkxMTM1MCBUZWNobm9sb2d5IENpcmNsZQotCQkJCUR1bHV0aCBHQSAzMDA5NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctOEMgICAoaGV4KQkJRWxla3Ryb25pa3NwZWNpYWxpc3RlbiBpIEJvcmxhbmdlIEFCCi0wMDA3OEMgICAgIChiYXNlIDE2KQkJRWxla3Ryb25pa3NwZWNpYWxpc3RlbiBpIEJvcmxhbmdlIEFCCi0JCQkJQm94IDUwCi0JCQkJNDAgTU9DS0ZKw4PigJ5SRAotCQkJCVNFIDc4MAotCQkJCVNXRURFTgotCi0wMC0wNy04RCAgIChoZXgpCQlOZXRFbmdpbmVzIEx0ZC4KLTAwMDc4RCAgICAgKGJhc2UgMTYpCQlOZXRFbmdpbmVzIEx0ZC4KLQkJCQkxNDYgV2FsbnV0IFRyZWUgQ2xvc2UKLQkJCQlHdWlsZGZvcmQsIFN1cnJleQotCQkJCUdVSSA0VUIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNy04RSAgIChoZXgpCQlHYXJ6ICYgRnJpY2hlIEdtYkgKLTAwMDc4RSAgICAgKGJhc2UgMTYpCQlHYXJ6ICYgRnJpY2hlIEdtYkgKLQkJCQlUZW1wb3dlcmh2aW5nIDQKLQkJCQlELTIxMDc5IEhhbWJ1cmcKLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LThGICAgKGhleCkJCUVta2F5IElubm92YXRpdmUgUHJvZHVjdHMKLTAwMDc4RiAgICAgKGJhc2UgMTYpCQlFbWtheSBJbm5vdmF0aXZlIFByb2R1Y3RzCi0JCQkJNTMsIFBhbyBIc2luZyBSZC4sIEhzaW50aWVuIENpdHkKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDctOTAgICAoaGV4KQkJVHJpLU0gVGVjaG5vbG9naWVzIChzKSBMaW1pdGVkCi0wMDA3OTAgICAgIChiYXNlIDE2KQkJVHJpLU0gVGVjaG5vbG9naWVzIChzKSBMaW1pdGVkCi0JCQkJQmxrIDI1LCBLYWxsYW5nIEF2ZW51ZSAjMDctMDEvMDQKLQkJCQlLYWxsYW5nIEJhc2luIEluZC4gRXN0Ci0JCQkJMzM5NDE2Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTA3LTkxICAgKGhleCkJCUludGVybmF0aW9uYWwgRGF0YSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwNzkxICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgRGF0YSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTQ3ODczIEZyZW1vbnQgQmx2ZC4KLQkJCQlGcmVtb250IENBIDA0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy05MiAgIChoZXgpCQlTdWV0cm9uIEVsZWN0cm9uaWMgR21iSAotMDAwNzkyICAgICAoYmFzZSAxNikJCVN1ZXRyb24gRWxlY3Ryb25pYyBHbWJICi0JCQkJS3VyemUgU3RyYXNzZSAyOQotCQkJCTcwNzk0IEZpbGRlcnN0YWR0Ci0JCQkJR0VSTUFOWQotCi0wMC0wNy05MyAgIChoZXgpCQlTaGluIFNhdGVsbGl0ZSBQdWJsaWMgQ29tcGFueSBMaW1pdGVkCi0wMDA3OTMgICAgIChiYXNlIDE2KQkJU2hpbiBTYXRlbGxpdGUgUHVibGljIENvbXBhbnkgTGltaXRlZAotCQkJCTQxLzEwMyAgUmF0dGFuYXRoaWJldCBSb2FkLAotCQkJCU5vbnRoYWJ1cmkgMTEwMDAsCi0JCQkJVEhBSUxBTkQKLQotMDAtMDctOTQgICAoaGV4KQkJU2ltcGxlIERldmljZXMsIEluYy4KLTAwMDc5NCAgICAgKGJhc2UgMTYpCQlTaW1wbGUgRGV2aWNlcywgSW5jLgotCQkJCTExMSBBbnphIEJsdmQuLCBTdWl0ZSAxMjAKLQkJCQlCdXJsaW5nYW1lIENBIDk0MDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy05NSAgIChoZXgpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4gKEVDUykKLTAwMDc5NSAgICAgKGJhc2UgMTYpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4gKEVDUykKLQkJCQlOby4gMjIsIEFsbGV5IDM4LCBMYW5lIDkxLAotCQkJCVNlYy4gMSwgTmVpIEh1IFJvYWQKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDctOTYgICAoaGV4KQkJTFNJIFN5c3RlbXMsIEluYy4KLTAwMDc5NiAgICAgKGJhc2UgMTYpCQlMU0kgU3lzdGVtcywgSW5jLgotCQkJCTEwLTEgTWluYW1pLWt1cm9rYXdhLAotCQkJCUFzYW8ta3UsIGthd2FzYWtpLAotCQkJCUthbmFnYXdhICAyMTUtMDAzNAotCQkJCUpBUEFOCi0KLTAwLTA3LTk3ICAgKGhleCkJCU5ldHBvd2VyIENvLiwgTHRkLgotMDAwNzk3ICAgICAoYmFzZSAxNikJCU5ldHBvd2VyIENvLiwgTHRkLgotCQkJCUJhZWthbSBCbGRnLiwgNkYKLQkJCQkxMjMsIEthcmFrLURvbmcsIFNvbmctcGEgR3UKLQkJCQlTZW91bCAgMTM4LTE2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy05OCAgIChoZXgpCQlTZWxlYSBTUkwKLTAwMDc5OCAgICAgKGJhc2UgMTYpCQlTZWxlYSBTUkwKLQkJCQlWaWEgQS4gTW9ybyBOby4gNjkKLQkJCQk0NjAxNSAtIENpY29nbmFyYQotCQkJCUlUQUxZCi0KLTAwLTA3LTk5ICAgKGhleCkJCVRpcHBpbmcgUG9pbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA3OTkgICAgIChiYXNlIDE2KQkJVGlwcGluZyBQb2ludCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk3NTAxIEIgTi4gQ2FwaXRhbCBvZiBUWCBId3kuCi0JCQkJQXVzdGluIFRYIDc4NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy05QSAgIChoZXgpCQlWZXJpbnQgU3lzdGVtcyBJbmMKLTAwMDc5QSAgICAgKGJhc2UgMTYpCQlWZXJpbnQgU3lzdGVtcyBJbmMKLQkJCQkxODAwIEJlcmxpZXIsIFN1aXRlIDQ0MAotCQkJCUxhdmFsLCAgUXVlYmVjIEg3TCA0UzQKLQkJCQlDQU5BREEKLQotMDAtMDctOUIgICAoaGV4KQkJQXVyb3JhIE5ldHdvcmtzCi0wMDA3OUIgICAgIChiYXNlIDE2KQkJQXVyb3JhIE5ldHdvcmtzCi0JCQkJMjgwMyBNaXNzaW9uIENvbGxlZ2UgQmx2ZC4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctOUMgICAoaGV4KQkJR29sZGVuIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA3OUMgICAgIChiYXNlIDE2KQkJR29sZGVuIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDI5LCAyMXN0IFJvYWQsCi0JCQkJVGFpY2h1bmcgSW5kdXN0cmlhbCBQYXJrLCBUYWljaHVuZwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDctOUQgICAoaGV4KQkJTXVzYXNoaSBDby4sIEx0ZC4KLTAwMDc5RCAgICAgKGJhc2UgMTYpCQlNdXNhc2hpIENvLiwgTHRkLgotCQkJCTMtMjEtMSwgU2hpbW8tb2NoaWFpLAotCQkJCVNoaW5qdWt1LWt1LAotCQkJCVRva3lvICAxNjEtMDAzMwotCQkJCUpBUEFOCi0KLTAwLTA3LTlFICAgKGhleCkJCUlsaW54IENvLiwgTHRkLgotMDAwNzlFICAgICAoYmFzZSAxNikJCUlsaW54IENvLiwgTHRkLgotCQkJCTR0aCBGbG9vciBLb3JlYSBUZWxlY29tLCBZYW5namFlIEJyYW5jaAotCQkJCURvZ29rLURvbmcsIEthbmduYW0ta3UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy05RiAgIChoZXgpCQlBY3Rpb24gRGlnaXRhbCBJbmMuCi0wMDA3OUYgICAgIChiYXNlIDE2KQkJQWN0aW9uIERpZ2l0YWwgSW5jLgotCQkJCTEwNjUwIE1haW4gU3QuCi0JCQkJU3VpdGUgMTAyCi0JCQkJRmFpcmZheCBWQSAyMjAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQTAgICAoaGV4KQkJZS1XYXRjaCBJbmMuCi0wMDA3QTAgICAgIChiYXNlIDE2KQkJZS1XYXRjaCBJbmMuCi0JCQkJNzgwMCBJSCAxMCBXZXN0Ci0JCQkJU3VpdGUgNzAwCi0JCQkJU2FuIEFudG9uaW8gVFggNzgyMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUExICAgKGhleCkJCVZJQVNZUyBIZWFsdGhjYXJlIEdtYkgKLTAwMDdBMSAgICAgKGJhc2UgMTYpCQlWSUFTWVMgSGVhbHRoY2FyZSBHbWJICi0JCQkJTGVpYm5penN0cmFzc2UgNwotCQkJCUhvZWNoYmVyZyBCYXZhcmlhIDk3MjA0Ci0JCQkJR0VSTUFOWQotCi0wMC0wNy1BMiAgIChoZXgpCQlPcHRlb24gQ29ycG9yYXRpb24KLTAwMDdBMiAgICAgKGJhc2UgMTYpCQlPcHRlb24gQ29ycG9yYXRpb24KLQkJCQk3MCBIYXN0aW5ncyBTdHJlZXQKLQkJCQlXZWxsZXNsZXkgTUEgMDI0ODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUEzICAgKGhleCkJCU9zaXRpcyBTb2Z0d2FyZSwgSW5jLgotMDAwN0EzICAgICAoYmFzZSAxNikJCU9zaXRpcyBTb2Z0d2FyZSwgSW5jLgotCQkJCTYxMjAgU3RvbmVyaWRnZSBNYWxsIFJvYWQKLQkJCQlTdWl0ZSAyMTAKLQkJCQlQbGVhc2FudG9uIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1BNCAgIChoZXgpCQlHTiBOZXRjb20gTHRkLgotMDAwN0E0ICAgICAoYmFzZSAxNikJCUdOIE5ldGNvbSBMdGQuCi0JCQkJMTItMTMgU2VkbGluZyBSb2FkLCBXZWFyIEVzdC4sIERpc3RyaWN0Ci0JCQkJV2FzaGluZ3RvbiwgVHluZSBhbmQgV2VhcgotCQkJCUVuZ2xhbmQgTkUzOCA5QloKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNy1BNSAgIChoZXgpCQlZLkQuSyBDby4gTHRkLgotMDAwN0E1ICAgICAoYmFzZSAxNikJCVkuRC5LIENvLiBMdGQuCi0JCQkJMTcwNSwgT3NoaXRhdGUsIEluYWdpLUNpdHksCi0JCQkJVG9reW8sCi0JCQkJSkFQQU4KLQotMDAtMDctQTYgICAoaGV4KQkJSG9tZSBBdXRvbWF0aW9uLCBJbmMuCi0wMDA3QTYgICAgIChiYXNlIDE2KQkJSG9tZSBBdXRvbWF0aW9uLCBJbmMuCi0JCQkJNDMzMCBNaWNob3VkIEJsdmQuCi0JCQkJTmV3IE9ybGVhbnMgTEEgNzAxMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUE3ICAgKGhleCkJCUEtWiBJbmMuCi0wMDA3QTcgICAgIChiYXNlIDE2KQkJQS1aIEluYy4KLQkJCQk1LTUtMTcgS2FtaWtvdXNoaWVuCi0JCQkJTmlzaGlub21peWEgQ2l0eSwgSHlvZ28KLQkJCQlKQVBBTgotCi0wMC0wNy1BOCAgIChoZXgpCQlIYWllciBHcm91cCBUZWNobm9sb2dpZXMgTHRkLgotMDAwN0E4ICAgICAoYmFzZSAxNikJCUhhaWVyIEdyb3VwIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJTm8uIDEgSGFpZXIgUm9hZCwgSGktdGVjaCBab25lCi0JCQkJUWluZ2RhbywKLQkJCQlDSElOQQotCi0wMC0wNy1BOSAgIChoZXgpCQlOb3Zhc29uaWNzCi0wMDA3QTkgICAgIChiYXNlIDE2KQkJTm92YXNvbmljcwotCQkJCTEzOTAgV2lsbG93IFJvYWQKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1BQSAgIChoZXgpCQlRdWFudHVtIERhdGEgSW5jLgotMDAwN0FBICAgICAoYmFzZSAxNikJCVF1YW50dW0gRGF0YSBJbmMuCi0JCQkJMjExMSBCaWcgVGltYmVyIFJkLgotCQkJCUVsZ2luIElMIDYwMTIzLTExMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUFCICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAwN0FCICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy1BQyAgIChoZXgpCQlFb2xyaW5nCi0wMDA3QUMgICAgIChiYXNlIDE2KQkJRW9scmluZwotCQkJCTEwIFJ1ZSBBbGZyZWQgS2FzdGxlcgotCQkJCTE0MDAwIENhZW4KLQkJCQlGUkFOQ0UKLQotMDAtMDctQUQgICAoaGV4KQkJUGVudGFjb24gR21iSCBGb3RvLXVuZCBGZWlud2Vya3RlY2huaWsKLTAwMDdBRCAgICAgKGJhc2UgMTYpCQlQZW50YWNvbiBHbWJIIEZvdG8tdW5kIEZlaW53ZXJrdGVjaG5pawotCQkJCUVuZGVyc3RyYWJlIDk0Ci0JCQkJMDEyNzcgRHJlc2RlbgotCQkJCUdFUk1BTlkKLQotMDAtMDctQUUgICAoaGV4KQkJQnJpdGVzdHJlYW0gTmV0d29ya3MsIEluYy4KLTAwMDdBRSAgICAgKGJhc2UgMTYpCQlCcml0ZXN0cmVhbSBOZXR3b3JrcywgSW5jLgotCQkJCTEyNDAxIFJlc2VhcmNoIEJsdmQuCi0JCQkJQnVpbGRpbmcgVHdvLCBTdWl0ZSAyNzUKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUFGICAgKGhleCkJCU4tVFJPTiBDb3Jwb3JhdGlvbgotMDAwN0FGICAgICAoYmFzZSAxNikJCU4tVFJPTiBDb3Jwb3JhdGlvbgotCQkJCTMxMDEgSW50ZXJuYXRpb25hbCBEcml2ZQotCQkJCU1vYmlsZSBBTCAzNjYwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQjAgICAoaGV4KQkJT2ZmaWNlIERldGFpbHMsIEluYy4KLTAwMDdCMCAgICAgKGJhc2UgMTYpCQlPZmZpY2UgRGV0YWlscywgSW5jLgotCQkJCTI1IE90dGF3YQotCQkJCTR0aCBGbG9vcgotCQkJCUdyYW5kIFJhcGlkcyBNSSA0OTUwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQjEgICAoaGV4KQkJRXF1YXRvciBUZWNobm9sb2dpZXMKLTAwMDdCMSAgICAgKGJhc2UgMTYpCQlFcXVhdG9yIFRlY2hub2xvZ2llcwotCQkJCTEzMDAgV2hpdGUgT2FrcyBSZC4KLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQjIgICAoaGV4KQkJVHJhbnNhY2Nlc3MgUy5BLgotMDAwN0IyICAgICAoYmFzZSAxNikJCVRyYW5zYWNjZXNzIFMuQS4KLQkJCQlSLiBHYWxlbm8gRGUgQ2FzdHJvLCAxNDQ1Ci0JCQkJVHVydWJhdHViYSAwNDY5Ni0wNDAKLQkJCQlTYW8gUGF1bG8gU1AgIAotCQkJCUJSQVpJTAotCi0wMC0wNy1CMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDdCMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUI0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMgSW5jLgotMDAwN0I0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQjUgICAoaGV4KQkJQW55IE9uZSBXaXJlbGVzcyBMdGQuCi0wMDA3QjUgICAgIChiYXNlIDE2KQkJQW55IE9uZSBXaXJlbGVzcyBMdGQuCi0JCQkJTmFtc2VvdWwgQmQuLCA4RiwgMTMwNC0zCi0JCQkJU2VvY2hvIDQtRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy1CNiAgIChoZXgpCQlUZWxlY29tIFRlY2hub2xvZ3kgTHRkLgotMDAwN0I2ICAgICAoYmFzZSAxNikJCVRlbGVjb20gVGVjaG5vbG9neSBMdGQuCi0JCQkJRG9ja2xhbmRzIElubm92YXRpb24gUGFyawotCQkJCTEyOC0xMzAgRWFzdCBXYWxsIFJvYWQKLQkJCQlEdWJsaW4gMyAgCi0JCQkJSVJFTEFORAotCi0wMC0wNy1CNyAgIChoZXgpCQlTYW11cmFpIEluZC4gUHJvZHMgRWxldHJvbmljb3MgTHRkYQotMDAwN0I3ICAgICAoYmFzZSAxNikJCVNhbXVyYWkgSW5kLiBQcm9kcyBFbGV0cm9uaWNvcyBMdGRhCi0JCQkJUi1OZWJyYXNrYSwgNDQzIFMvMiAybyBBbmRhcgotCQkJCUJyb29rbGluIE5vdm8gLSBTYW8gUGF1bG8KLQkJCQkwNDU2MC0wMTEKLQkJCQlCUkFaSUwKLQotMDAtMDctQjggICAoaGV4KQkJQ29ydmFsZW50IENvcnBvcmF0aW9uCi0wMDA3QjggICAgIChiYXNlIDE2KQkJQ29ydmFsZW50IENvcnBvcmF0aW9uCi0JCQkJMTEwMSBBcnJvdyBQb2ludCBEciAjNTAxCi0JCQkJQ2VkYXIgUGFyayBUWCA3ODYxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQjkgICAoaGV4KQkJR2luZ2FuZXQgQ29ycG9yYXRpb24KLTAwMDdCOSAgICAgKGJhc2UgMTYpCQlHaW5nYW5ldCBDb3Jwb3JhdGlvbgotCQkJCUtpbnRldHN1IFNoaW4gTmFtYmEgQnVpbGRpbmcKLQkJCQlNaW5hdG8gTWFjaGkgMS00LTM4IE5hbml3YWt1Ci0JCQkJT3Nha2EgU2hpICAxNTU2LTAwMTcKLQkJCQlKQVBBTgotCi0wMC0wNy1CQSAgIChoZXgpCQlVVFN0YXJjb20sIEluYy4KLTAwMDdCQSAgICAgKGJhc2UgMTYpCQlVVFN0YXJjb20sIEluYy4KLQkJCQkxMjc1IEJhcmJvciBCYXkgUEtXWQotCQkJCUFsYW1lZGEgQ0EgOTQ1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUJCICAgKGhleCkJCUNhbmRlcmEgSW5jLgotMDAwN0JCICAgICAoYmFzZSAxNikJCUNhbmRlcmEgSW5jLgotCQkJCTY3MyBTb3V0aCBNaWxwaXRhcyBCbHZkLgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1CQyAgIChoZXgpCQlJZGVudGl4IEluYy4KLTAwMDdCQyAgICAgKGJhc2UgMTYpCQlJZGVudGl4IEluYy4KLQkJCQk2NTkxIFNpZXJyYSBMYW5lCi0JCQkJRHVibGluIENBIDk0NTY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1CRCAgIChoZXgpCQlSYWRpb25ldCBMdGQuCi0wMDA3QkQgICAgIChiYXNlIDE2KQkJUmFkaW9uZXQgTHRkLgotCQkJCUtlaWxhcmFudGEgNgotCQkJCTAyMTUwIEVTUDAwCi0JCQkJRklOTEFORAotCi0wMC0wNy1CRSAgIChoZXgpCQlEYXRhTG9naWMgU3BBCi0wMDA3QkUgICAgIChiYXNlIDE2KQkJRGF0YUxvZ2ljIFNwQQotCQkJCVZpYSBDYW5kaW5pLCAyCi0JCQkJNDAwMTIgTGlwcG8gZGkgQ2FsZGVyYXJhIGRpIFJlbm8KLQkJCQlCb2xvZ25hICAKLQkJCQlJVEFMWQotCi0wMC0wNy1CRiAgIChoZXgpCQlBcm1pbGxhaXJlIFRlY2hub2xvZ2llcywgSW5jLgotMDAwN0JGICAgICAoYmFzZSAxNikJCUFybWlsbGFpcmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTA0MTEgTW90b3IgQ2l0eSBEcml2ZQotCQkJCUJldGhlc2RhIE1EIDIwODE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1DMCAgIChoZXgpCQlOZXRaZXJ2ZXIgSW5jLgotMDAwN0MwICAgICAoYmFzZSAxNikJCU5ldFplcnZlciBJbmMuCi0JCQkJMjYgV2VzdCBMb25lIENhY3R1cyBEcml2ZQotCQkJCVBob2VuaXggQVogODUwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUMxICAgKGhleCkJCU92ZXJ0dXJlIE5ldHdvcmtzLCBJbmMuCi0wMDA3QzEgICAgIChiYXNlIDE2KQkJT3ZlcnR1cmUgTmV0d29ya3MsIEluYy4KLQkJCQk2MzcgRGF2aXMgRHJpdmUKLQkJCQlNb3JyaXN2aWxsZSBOQyAyMjc1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUMyICAgKGhleCkJCU5ldHN5cyBUZWxlY29tCi0wMDA3QzIgICAgIChiYXNlIDE2KQkJTmV0c3lzIFRlbGVjb20KLQkJCQk0RiwgS3l1bmdOYW0gQi9ELCA4MzAtNDgsIFllb2tTYW0tRG9uZwotCQkJCUthbmduYW0tR3UsCi0JCQkJU2VvdWwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctQzMgICAoaGV4KQkJVGhvbXNvbgotMDAwN0MzICAgICAoYmFzZSAxNikJCVRob21zb24KLQkJCQk1LTcsIHJ1ZSBTYWxvbW9uIGRlIFJvdGhzY2hpbGQKLQkJCQlTdXJlc25lcwotCQkJCTkyMTUwCi0JCQkJRlJBTkNFCi0KLTAwLTA3LUM0ICAgKGhleCkJCUpFQU4gQ28uIEx0ZC4KLTAwMDdDNCAgICAgKGJhc2UgMTYpCQlKRUFOIENvLiBMdGQuCi0JCQkJN0YsIDIsIFJlaSBLdWFuZyBSb2FkLAotCQkJCU5laSBIdSwKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDctQzUgICAoaGV4KQkJR2NvbSwgSW5jLgotMDAwN0M1ICAgICAoYmFzZSAxNikJCUdjb20sIEluYy4KLQkJCQkxODAwIFdvb2RmaWVsZCBEci4KLQkJCQlTYXZveSBJTCA2MTg3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctQzYgICAoaGV4KQkJVkRTIFZvc3NrdWhsZXIgR21iSAotMDAwN0M2ICAgICAoYmFzZSAxNikJCVZEUyBWb3Nza3VobGVyIEdtYkgKLQkJCQlXZWliZSBCcmVpdGUgNwotCQkJCUQtNDkwODQgT3NuYWJydWNrCi0JCQkJR0VSTUFOWQotCi0wMC0wNy1DNyAgIChoZXgpCQlTeW5lY3RpY3MgU3lzdGVtcyBMaW1pdGVkCi0wMDA3QzcgICAgIChiYXNlIDE2KQkJU3luZWN0aWNzIFN5c3RlbXMgTGltaXRlZAotCQkJCTMgQWNvcm4gQnVzaW5lc3MgUGFyawotCQkJCVdvb3NlYXRzIENsb3NlLCBTaGVmZmllbGQKLQkJCQlTOCBPVEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNy1DOCAgIChoZXgpCQlCcmFpbjIxLCBJbmMuCi0wMDA3QzggICAgIChiYXNlIDE2KQkJQnJhaW4yMSwgSW5jLgotCQkJCTE5RiBNZXNhIEIvRCwgMjA0IEhvaWh5dW4tRG9uZwotCQkJCUpvb25nLUd1Ci0JCQkJU2VvdWwgIDEwMC0wNTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctQzkgICAoaGV4KQkJVGVjaG5vbCBTZXZlbiBDby4sIEx0ZC4KLTAwMDdDOSAgICAgKGJhc2UgMTYpCQlUZWNobm9sIFNldmVuIENvLiwgTHRkLgotCQkJCTI1LTE2IFRvYmVob24tY2hvLCBOaXNpLWt1LAotCQkJCVlva29oYW1hLCAyMjAtMDA0MQotCQkJCUpBUEFOCi0KLTAwLTA3LUNBICAgKGhleCkJCUNyZWF0aXggUG9seW1lZGlhIEdlcyBGdXIgS29tbXVuaWthaXRvbnNzeXN0ZW1lCi0wMDA3Q0EgICAgIChiYXNlIDE2KQkJQ3JlYXRpeCBQb2x5bWVkaWEgR2VzIEZ1ciBLb21tdW5pa2FpdG9uc3N5c3RlbWUKLQkJCQlIZWlucmljaC1CYXJ0aC1TdHIuIDMKLQkJCQk2NjExNSBTYWFyYnJ1ZWNrZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA3LUNCICAgKGhleCkJCUZyZWVib3ggU0EKLTAwMDdDQiAgICAgKGJhc2UgMTYpCQlGcmVlYm94IFNBCi0JCQkJOCBydWUgZGUgbGEgVmlsbGUgbCdFdmVxdWUKLQkJCQlQYXJpcyAgNzUwMDgKLQkJCQlGUkFOQ0UKLQotMDAtMDctQ0MgICAoaGV4KQkJS2FiYSBCZW56aW5nIEdtYkgKLTAwMDdDQyAgICAgKGJhc2UgMTYpCQlLYWJhIEJlbnppbmcgR21iSAotCQkJCUFsYmVydGlzdHJhYmUgMwotCQkJCTc4MDU2IFZpbGxpZ2VuLVNjaHdlbm5pbmdlbgotCQkJCUdFUk1BTlkKLQotMDAtMDctQ0QgICAoaGV4KQkJTk1URUwgQ28uLCBMdGQuCi0wMDA3Q0QgICAgIChiYXNlIDE2KQkJTk1URUwgQ28uLCBMdGQuCi0JCQkJU3VpdGUgMTMwMyAxLkIuQy4gOTE3LTYKLQkJCQlNb2stMSBkb25nIFRhbmdjaGVvbi1rdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctQ0UgICAoaGV4KQkJQ2FibGV0aW1lIExpbWl0ZWQKLTAwMDdDRSAgICAgKGJhc2UgMTYpCQlDYWJsZXRpbWUgTGltaXRlZAotCQkJCTY0IEdyZWVuaGFtIFJvYWQKLQkJCQlOZXdidXJ5LCBCZXJrc2hpcmUsCi0JCQkJUkcxNCA3SFgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNy1DRiAgIChoZXgpCQlBbm90byBBQgotMDAwN0NGICAgICAoYmFzZSAxNikJCUFub3RvIEFCCi0JCQkJU29sdmVnYXRhbiA0MQotCQkJCVNFLTIyMyA3MCBMdW5kCi0JCQkJU1dFREVOCi0KLTAwLTA3LUQwICAgKGhleCkJCUF1dG9tYXQgRW5nZW5oYXJpYSBkZSBBdXRvbWFvYSBMdGRhLgotMDAwN0QwICAgICAoYmFzZSAxNikJCUF1dG9tYXQgRW5nZW5oYXJpYSBkZSBBdXRvbWFvYSBMdGRhLgotCQkJCVJ1YSBTYW50byBBbnRvbmlvLCA5MTcgLSBSZWJvdWNhcwotCQkJCUN1cml0aWJhIC0gUFIKLQkJCQk4MDIzMC0xMjAKLQkJCQlCUkFaSUwKLQotMDAtMDctRDEgICAoaGV4KQkJU3BlY3RydW0gU2lnbmFsIFByb2Nlc3NpbmcgSW5jLgotMDAwN0QxICAgICAoYmFzZSAxNikJCVNwZWN0cnVtIFNpZ25hbCBQcm9jZXNzaW5nIEluYy4KLQkJCQkjMjAwLTI3MDAgUHJvZHVjdGlvbiBXYXkKLQkJCQlCdXJuYWJ5LCBCQyBWNUEgNFgxCi0JCQkJQ0FOQURBCi0KLTAwLTA3LUQyICAgKGhleCkJCUxvZ29wYWsgU3lzdGVtZQotMDAwN0QyICAgICAoYmFzZSAxNikJCUxvZ29wYWsgU3lzdGVtZQotCQkJCURvcmZzdHJhc3NlIDQwCi0JCQkJRC0yNDYyOCBIYXJ0ZW5ob2xtCi0JCQkJR0VSTUFOWQotCi0wMC0wNy1EMyAgIChoZXgpCQlTdG9yayBQcmludHMgQi5WLiAKLTAwMDdEMyAgICAgKGJhc2UgMTYpCQlTdG9yayBQcmludHMgQi5WLiAKLQkJCQlSYWFtc3RyYWF0IDEtMywgNTgzMSBBVCBCb3htZWVyIAotCQkJCVAuIE8uIEJveCA2NywgNTgzMCBBQiAKLQkJCQlCb3htZWVyICAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wNy1ENCAgIChoZXgpCQlaaGVqaWFuZyBZdXRvbmcgTmV0d29yayBDb21tdW5pY2F0aW9uIENvIEx0ZC4KLTAwMDdENCAgICAgKGJhc2UgMTYpCQlaaGVqaWFuZyBZdXRvbmcgTmV0d29yayBDb21tdW5pY2F0aW9uIENvIEx0ZC4KLQkJCQk4MDUgSHVhWGluZyBUZWNobmljYWwgQnVpbGRpbmcKLQkJCQk0NzcjIFdlblNhbiBSb2FkLCBIYW5nWmhvdQotCQkJCVpoZWppYW5nICAKLQkJCQlDSElOQQotCi0wMC0wNy1ENSAgIChoZXgpCQkzZSBUZWNobm9sb2dpZXMgSW50Oy4sIEluYy4KLTAwMDdENSAgICAgKGJhc2UgMTYpCQkzZSBUZWNobm9sb2dpZXMgSW50Oy4sIEluYy4KLQkJCQkxNTgwMCBDcmFiYnMgQnJhbmNoIFdheQotCQkJCVN1aXRlIDI5MAotCQkJCVJvY2t2aWxsZSBNRCAyMDg1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRDYgICAoaGV4KQkJQ29tbWlsIEx0ZC4KLTAwMDdENiAgICAgKGJhc2UgMTYpCQlDb21taWwgTHRkLgotCQkJCVAuTy4gQm94IDEwMDUwCi0JCQkJUGV0YWggVGlrdmEgNDkwMDEKLQkJCQlJU1JBRUwKLQotMDAtMDctRDcgICAoaGV4KQkJQ2Fwb3JpcyBOZXR3b3JrcyBBRwotMDAwN0Q3ICAgICAoYmFzZSAxNikJCUNhcG9yaXMgTmV0d29ya3MgQUcKLQkJCQlTdWVnZ2Vsc3RyLiAzMQotCQkJCUQtNDQ1MzIgTHVlbmVuCi0JCQkJR0VSTUFOWQotCi0wMC0wNy1EOCAgIChoZXgpCQlIaXRyb24gU3lzdGVtcyBJbmMuCi0wMDA3RDggICAgIChiYXNlIDE2KQkJSGl0cm9uIFN5c3RlbXMgSW5jLgotCQkJCTEzNS0yMjAgSGl0cm9uIEIvRCA3MjYtNQotCQkJCVN1c28tRG9uZywgS2FuZ25hbSBHdQotCQkJCVNlb3VsICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDctRDkgICAoaGV4KQkJU3BsaWNlY29tCi0wMDA3RDkgICAgIChiYXNlIDE2KQkJU3BsaWNlY29tCi0JCQkJTGl0dGxlIEdpbGxpb25zLCBUaGUgR3JlZW4KLQkJCQlDcm94bGV5IEdyZWVuLCBSaWNrbWFuc3dvcnRoCi0JCQkJSGVydHMgIFdEMyAzSFkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wNy1EQSAgIChoZXgpCQlOZXVybyBUZWxlY29tIENvLiwgTHRkLgotMDAwN0RBICAgICAoYmFzZSAxNikJCU5ldXJvIFRlbGVjb20gQ28uLCBMdGQuCi0JCQkJMkYgTWlzdW5nIEIvRCwgOTM4LTcKLQkJCQlIb2dlLWRvbmcsIERvbmdhbi1ndQotCQkJCUt5dW5nZ2ktZG8gIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy1EQiAgIChoZXgpCQlLaXJhbmEgTmV0d29ya3MsIEluYy4KLTAwMDdEQiAgICAgKGJhc2UgMTYpCQlLaXJhbmEgTmV0d29ya3MsIEluYy4KLQkJCQkzMzEgTmV3bWFuIFNwcmluZ3MgUm9hZAotCQkJCUJsZGcuIDEgNHRoIEZsb29yCi0JCQkJUmVkIEJhbmsgTkogMDc3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LURDICAgKGhleCkJCUF0ZWsgQ28sIEx0ZC4KLTAwMDdEQyAgICAgKGJhc2UgMTYpCQlBdGVrIENvLCBMdGQuCi0JCQkJQiBkb25nICMyMDUgaGFueWFuZyB2ZW50dXJlIHBhcmsKLQkJCQk2ODUtMjAgc29uZ3N1MWdhZG9uZyBzb25nIGRvbmdndSwKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA3LUREICAgKGhleCkJCUNyYWRsZSBUZWNobm9sb2dpZXMKLTAwMDdERCAgICAgKGJhc2UgMTYpCQlDcmFkbGUgVGVjaG5vbG9naWVzCi0JCQkJMzEzMCBXZXN0IFdhcnJlbiBBdmUuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctREUgICAoaGV4KQkJZUNvcGlsdCBBQgotMDAwN0RFICAgICAoYmFzZSAxNikJCWVDb3BpbHQgQUIKLQkJCQlWZWRkZXN0YXZhZ2VuIDI0Ci0JCQkJU0UtMTc1IDYyIEphcmZhbGxhCi0JCQkJU1dFREVOCi0KLTAwLTA3LURGICAgKGhleCkJCVZicmljayBTeXN0ZW1zIEluYy4KLTAwMDdERiAgICAgKGJhc2UgMTYpCQlWYnJpY2sgU3lzdGVtcyBJbmMuCi0JCQkJMTIgQmVhdW1vbnQgUm9hZAotCQkJCVdhbGxpbmdmb3JkIENUIDA2NDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FMCAgIChoZXgpCQlQYWxtIEluYy4KLTAwMDdFMCAgICAgKGJhc2UgMTYpCQlQYWxtIEluYy4KLQkJCQk5NTAgV2VzdCBNYXVkZSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUtMjgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRTEgICAoaGV4KQkJV0lTIENvbW11bmljYXRpb25zIENvLiBMdGQuCi0wMDA3RTEgICAgIChiYXNlIDE2KQkJV0lTIENvbW11bmljYXRpb25zIENvLiBMdGQuCi0JCQkJNC9GIEJ1aWxkaW5nIDUzMwotCQkJCUJ1Z3VhIFNpeHRoIFJvYWQKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgUHJvdmlkZW5jZSAgCi0JCQkJQ0hJTkEKLQotMDAtMDctRTIgICAoaGV4KQkJQml0d29ya3MsIEluYy4KLTAwMDdFMiAgICAgKGJhc2UgMTYpCQlCaXR3b3JrcywgSW5jLgotCQkJCSMxIEJpdHdvcmtzIFdheQotCQkJCVByYWlyaWUgR3JvdmUgQVIgNzI3NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUUzICAgKGhleCkJCU5hdmNvbSBUZWNobm9sb2d5LCBJbmMuCi0wMDA3RTMgICAgIChiYXNlIDE2KQkJTmF2Y29tIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxMjMgV2VzdCBUb3JyYW5jZSBCbHZkLiwKLQkJCQlTdWl0ZSAxMDEKLQkJCQlSZWRvbmRvIEJlYWNoIENBIDkwMjc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FNCAgIChoZXgpCQlTb2Z0UmFkaW8gQ28uLCBMdGQuCi0wMDA3RTQgICAgIChiYXNlIDE2KQkJU29mdFJhZGlvIENvLiwgTHRkLgotCQkJCTJGLCBEb25nLUJvayBCL0QgNjQ1LTE4Ci0JCQkJWWVva3NhbS1Eb25nLCBLYW5nbmFtLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wNy1FNSAgIChoZXgpCQlDb3VwIENvcnBvcmF0aW9uCi0wMDA3RTUgICAgIChiYXNlIDE2KQkJQ291cCBDb3Jwb3JhdGlvbgotCQkJCTEtMjQtNCBNYXJ1c2VuIDJuZCBCbGQuIDRGLAotCQkJCUhpZ2FzaGktVWVubywgVGFpdG8ta3UKLQkJCQlUb2t5byAgCi0JCQkJSkFQQU4KLQotMDAtMDctRTYgICAoaGV4KQkJZWRnZWZsb3cgQ2FuYWRhIEluYy4KLTAwMDdFNiAgICAgKGJhc2UgMTYpCQllZGdlZmxvdyBDYW5hZGEgSW5jLgotCQkJCTMyOSBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhLCBPbnRhcmlvCi0JCQkJSzJLIDJFMQotCQkJCUNBTkFEQQotCi0wMC0wNy1FNyAgIChoZXgpCQlGcmVlV2F2ZSBUZWNobm9sb2dpZXMKLTAwMDdFNyAgICAgKGJhc2UgMTYpCQlGcmVlV2F2ZSBUZWNobm9sb2dpZXMKLQkJCQkxODgwIFMuIEZsYWl0cm9uIEN0LgotCQkJCVN0ZS4gRgotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUU4ICAgKGhleCkJCUVkZ2VXYXZlCi0wMDA3RTggICAgIChiYXNlIDE2KQkJRWRnZVdhdmUKLQkJCQkxNTMzMyBBdmVudWUgb2YgU2NpZW5jZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRTkgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMDdFOSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCU1TOiAgSkYzLTQyMAotCQkJCTIxMTEgTkUgMjV0aCBBdmUuCi0JCQkJSGlsbHNib3JvIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FQSAgIChoZXgpCQlNYXNzYW5hLCBJbmMuCi0wMDA3RUEgICAgIChiYXNlIDE2KQkJTWFzc2FuYSwgSW5jLgotCQkJCTI5MDEgVGFzbWFuIERyaXZlCi0JCQkJU3VpdGUgMTA2Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUVCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMgSW5jLgotMDAwN0VCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRUMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA3RUMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1FRCAgIChoZXgpCQlBbHRlcmEgQ29ycG9yYXRpb24KLTAwMDdFRCAgICAgKGJhc2UgMTYpCQlBbHRlcmEgQ29ycG9yYXRpb24KLQkJCQkxMDEgSW5ub3ZhdGlvbiBEcml2ZQotCQkJCU1TIDIzMDUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRUUgICAoaGV4KQkJdGVsY28gSW5mb3JtYXRpb25zc3lzdGVtZSBHbWJICi0wMDA3RUUgICAgIChiYXNlIDE2KQkJdGVsY28gSW5mb3JtYXRpb25zc3lzdGVtZSBHbWJICi0JCQkJU2NodWxzdHJhc3NlIDM4Ci0JCQkJRCAwOTEyIENoZW1uaXR6Ci0JCQkJR0VSTUFOWQotCi0wMC0wNy1FRiAgIChoZXgpCQlMb2NraGVlZCBNYXJ0aW4gVGFjdGljYWwgU3lzdGVtcwotMDAwN0VGICAgICAoYmFzZSAxNikJCUxvY2toZWVkIE1hcnRpbiBUYWN0aWNhbCBTeXN0ZW1zCi0JCQkJMzMzMyBQaWxvdCBLbm9iIFJvYWQKLQkJCQlFYWdhbiBNTiA1NTEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRjAgICAoaGV4KQkJTG9naVN5bmMgTExDCi0wMDA3RjAgICAgIChiYXNlIDE2KQkJTG9naVN5bmMgTExDCi0JCQkJMTMxMyBMZWFyIEluZHVzdHJpYWwgUGFya3dheQotCQkJCUF2b24gT0ggNDQwMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUYxICAgKGhleCkJCVRlcmFCdXJzdCBOZXR3b3JrcyBJbmMuCi0wMDA3RjEgICAgIChiYXNlIDE2KQkJVGVyYUJ1cnN0IE5ldHdvcmtzIEluYy4KLQkJCQk5ODUgU3Rld2FydCBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRjIgICAoaGV4KQkJSU9BIENvcnBvcmF0aW9uCi0wMDA3RjIgICAgIChiYXNlIDE2KQkJSU9BIENvcnBvcmF0aW9uCi0JCQkJMzUwIFBvdHJlcm8gQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRjMgICAoaGV4KQkJVGhpbmtlbmdpbmUgTmV0d29ya3MKLTAwMDdGMyAgICAgKGJhc2UgMTYpCQlUaGlua2VuZ2luZSBOZXR3b3JrcwotCQkJCTEwMCBOaWNrZXJzb24gUm9hZAotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1GNCAgIChoZXgpCQlFbGV0ZXggQ28uLCBMdGQuCi0wMDA3RjQgICAgIChiYXNlIDE2KQkJRWxldGV4IENvLiwgTHRkLgotCQkJCTgtMi01NiBOYW5rb3UtSGlnYXNoaSBTdW1pbm9lLWt1Ci0JCQkJT3Nha2EgNTU5LTAwMzEKLQkJCQlKQVBBTgotCi0wMC0wNy1GNSAgIChoZXgpCQlCcmlkZ2VjbyBDbyBBRwotMDAwN0Y1ICAgICAoYmFzZSAxNikJCUJyaWRnZWNvIENvIEFHCi0JCQkJUmluZ3N0ci4gMTQKLQkJCQlDSCA4NjAwIER1ZWJlbmRvcmYKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wNy1GNiAgIChoZXgpCQlRcWVzdCBTb2Z0d2FyZSBTeXN0ZW1zCi0wMDA3RjYgICAgIChiYXNlIDE2KQkJUXFlc3QgU29mdHdhcmUgU3lzdGVtcwotCQkJCTg2MCBFYXN0IDQ1MDAgU291dGggIzIwMAotCQkJCU11cnJheSBVVCA4NDEwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDctRjcgICAoaGV4KQkJR2FsdHJvbmljcwotMDAwN0Y3ICAgICAoYmFzZSAxNikJCUdhbHRyb25pY3MKLQkJCQk0NjQ1IEVhc3QgQ290dG9uIENlbnRlciBCbHZkLgotCQkJCUJsZGcuIFR3bwotCQkJCVBob2VuaXggQVogODUwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUY4ICAgKGhleCkJCUlURGV2aWNlcywgSW5jLgotMDAwN0Y4ICAgICAoYmFzZSAxNikJCUlURGV2aWNlcywgSW5jLgotCQkJCTYwNiAxMTB0aCBBdmUuIE5FCi0JCQkJQmVsbGV2dWUgV0EgOTgwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUY5ICAgKGhleCkJCVBob25ldGljcywgSW5jLgotMDAwN0Y5ICAgICAoYmFzZSAxNikJCVBob25ldGljcywgSW5jLgotCQkJCTkwMSBUcnllbnMgUm9hZAotCQkJCUFzdG9uIFBBIDE5MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wNy1GQSAgIChoZXgpCQlJVFQgQ28uLCBMdGQuCi0wMDA3RkEgICAgIChiYXNlIDE2KQkJSVRUIENvLiwgTHRkLgotCQkJCTEtMTQtNywgTXVrb2hqeXVrdSwKLQkJCQlIYW1hbWF0c3UsIFNoaXp1b2thIDQzMAotCQkJCUpBUEFOCi0KLTAwLTA3LUZCICAgKGhleCkJCUdpZ2EgU3RyZWFtIFVNVFMgVGVjaG5vbG9naWVzIEdtYkgKLTAwMDdGQiAgICAgKGJhc2UgMTYpCQlHaWdhIFN0cmVhbSBVTVRTIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJS29ucmFkLVp1c2UtU3RyYWJlIDcKLQkJCQlELTY2MTE1IFNhYXJicnVja2VuCi0JCQkJR0VSTUFOWQotCi0wMC0wNy1GQyAgIChoZXgpCQlBZGVwdCBTeXN0ZW1zIEluYy4KLTAwMDdGQyAgICAgKGJhc2UgMTYpCQlBZGVwdCBTeXN0ZW1zIEluYy4KLQkJCQkyNDIgRWFzdCA2MDAgTm9ydGgKLQkJCQlMaW5kb24gVVQgODQwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA3LUZEICAgKGhleCkJCUxBTmVyZ3kgTHRkLgotMDAwN0ZEICAgICAoYmFzZSAxNikJCUxBTmVyZ3kgTHRkLgotCQkJCUltcGVyaWFsIEhvdXNlLCBJbXBlcmlhbCBXYXkKLQkJCQlOZXdwb3J0LCBHd2VudCBOUDEwIDhVSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA3LUZFICAgKGhleCkJCVJpZ2FrdSBDb3Jwb3JhdGlvbgotMDAwN0ZFICAgICAoYmFzZSAxNikJCVJpZ2FrdSBDb3Jwb3JhdGlvbgotCQkJCTMtOS0xMiwgTWF0c3ViYXJhLWNobwotCQkJCUFraXNoaW1hLXNoaQotCQkJCVRva3lvICAxOTYtODY2NgotCQkJCUpBUEFOCi0KLTAwLTA3LUZGICAgKGhleCkJCUdsdW9uIE5ldHdvcmtzCi0wMDA3RkYgICAgIChiYXNlIDE2KQkJR2x1b24gTmV0d29ya3MKLQkJCQk1NDAxIE9sZCBSZWR3b29kIEh3eS4KLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMDAgICAoaGV4KQkJTVVMVElURUNIIFNZU1RFTVMsIElOQy4KLTAwMDgwMCAgICAgKGJhc2UgMTYpCQlNVUxUSVRFQ0ggU1lTVEVNUywgSU5DLgotCQkJCTIyMDUgV09PREFMRSBEUklWRQotCQkJCU1PVU5EUyBWSUVXIE1OIDU1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0wMSAgIChoZXgpCQlIaWdoU3BlZWQgU3VyZmluZyBJbmMuCi0wMDA4MDEgICAgIChiYXNlIDE2KQkJSGlnaFNwZWVkIFN1cmZpbmcgSW5jLgotCQkJCTQ0NzkwIFMuIEdyaW1tZXIgQmx2ZC4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0wMiAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwODAyICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTAzICAgKGhleCkJCUNvcyBUcm9uCi0wMDA4MDMgICAgIChiYXNlIDE2KQkJQ29zIFRyb24KLQkJCQkzRiBCb29saW0gQi9ELCAxNDMxLTIyLAotCQkJCUt3YW55YW5nLURvbmcsIERvbmdvbi1HdSwKLQkJCQlBbnlhbmcgIDQzMS0wNjEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtMDQgICAoaGV4KQkJSUNBIEluYy4KLTAwMDgwNCAgICAgKGJhc2UgMTYpCQlJQ0EgSW5jLgotCQkJCTU0Mi0xIE5vZ3VraQotCQkJCUt1a2ktc2hpLCBTYWl0YW1uCi0JCQkJSkFQQU4KLQotMDAtMDgtMDUgICAoaGV4KQkJVGVjaG5vLUhvbG9uIENvcnBvcmF0aW9uCi0wMDA4MDUgICAgIChiYXNlIDE2KQkJVGVjaG5vLUhvbG9uIENvcnBvcmF0aW9uCi0JCQkJMy0xOS0yLCBUYWthbWF0c3UtY2hvCi0JCQkJVGFjaGlrYXdhLXNoaQotCQkJCVRva3lvICAxOTAtMDAxMQotCQkJCUpBUEFOCi0KLTAwLTA4LTA2ICAgKGhleCkJCVJhb25ldCBTeXN0ZW1zLCBJbmMuCi0wMDA4MDYgICAgIChiYXNlIDE2KQkJUmFvbmV0IFN5c3RlbXMsIEluYy4KLQkJCQlXZXN0IFdpbmcgMTRGLCBJVCBWZW50dXJlIFRvd2VyIDc4Ci0JCQkJR2FyYWtib24tZG9uZywgU29uZ3BhLAotCQkJCVNlb3VsICAxMzgtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTA3ICAgKGhleCkJCUFjY2VzcyBEZXZpY2VzIExpbWl0ZWQKLTAwMDgwNyAgICAgKGJhc2UgMTYpCQlBY2Nlc3MgRGV2aWNlcyBMaW1pdGVkCi0JCQkJU2l4dGggRmxvb3IsIDU4IE94YnJpZGdlIFJvYWQKLQkJCQlFYWxpbmcsIExvbmRvbiBXNSAyU1QKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wOC0wOCAgIChoZXgpCQlQUFQgVmlzaW9uLCBJbmMuCi0wMDA4MDggICAgIChiYXNlIDE2KQkJUFBUIFZpc2lvbiwgSW5jLgotCQkJCTEyOTg4IFZhbGxleSBWaWV3IFJkLgotCQkJCUVkZW4gUHJhaXJpZSBNTiA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMDkgICAoaGV4KQkJU3lzdGVtb25pYyBBRwotMDAwODA5ICAgICAoYmFzZSAxNikJCVN5c3RlbW9uaWMgQUcKLQkJCQlBbSBXYWxkc2NobG9lc3NjaGVuIDEKLQkJCQlELTAxMDk5IERyZXNkZW4KLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTBBICAgKGhleCkJCUVzcGVyYS1XZXJrZSBHbWJICi0wMDA4MEEgICAgIChiYXNlIDE2KQkJRXNwZXJhLVdlcmtlIEdtYkgKLQkJCQlNb2x0a2VzdHJhc3NlIDE3LSAzMwotCQkJCTQ3MDU4IER1aXNidXJnCi0JCQkJR0VSTUFOWQotCi0wMC0wOC0wQiAgIChoZXgpCQlCaXJrYSBCUEEgSW5mb3JtYXRpb25zc3lzdGVtIEFCCi0wMDA4MEIgICAgIChiYXNlIDE2KQkJQmlya2EgQlBBIEluZm9ybWF0aW9uc3N5c3RlbSBBQgotCQkJCUJveCAyMDEwMAotCQkJCTE2MSAwMiBCcm9tbWEKLQkJCQlTV0VERU4KLQotMDAtMDgtMEMgICAoaGV4KQkJVkRBIEVsZXR0cm9uaWNhIHNwYQotMDAwODBDICAgICAoYmFzZSAxNikJCVZEQSBFbGV0dHJvbmljYSBzcGEKLQkJCQlWaWFsZSBMaW5vIFphbnVzc2ksIDMKLQkJCQkzMzE3MCBQb3JkZW5vbmUgCi0JCQkJSVRBTFkKLQotMDAtMDgtMEQgICAoaGV4KQkJVG9zaGliYQotMDAwODBEICAgICAoYmFzZSAxNikJCVRvc2hpYmEKLQkJCQkyLTksIFN1ZWhpcm8tY2hvLAotCQkJCU9tZS1jaXR5LAotCQkJCVRva3lvICAxOTgtODcxMAotCQkJCUpBUEFOCi0KLTAwLTA4LTBFICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAwODBFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NTAgU2VxdWVuY2UgRHIuCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0wRiAgIChoZXgpCQlQcm94aW1pb24gRmliZXIgT3B0aWNzIEFCCi0wMDA4MEYgICAgIChiYXNlIDE2KQkJUHJveGltaW9uIEZpYmVyIE9wdGljcyBBQgotCQkJCUlzYWZqb3Jkc2dhdGFuIDkKLQkJCQlTRS0xNjQ0MCBLaXN0YQotCQkJCVNXRURFTgotCi0wMC0wOC0xMCAgIChoZXgpCQlLZXkgVGVjaG5vbG9neSwgSW5jLgotMDAwODEwICAgICAoYmFzZSAxNikJCUtleSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTUwIEF2ZXJ5IFN0LgotCQkJCVdhbGxhIFdhbGxhIFdBIDk5MzYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0xMSAgIChoZXgpCQlWT0lYIENvcnBvcmF0aW9uCi0wMDA4MTEgICAgIChiYXNlIDE2KQkJVk9JWCBDb3Jwb3JhdGlvbgotCQkJCTE5OTEtMyA0dGggRmxvb3IgVG9wJ3MgVmVudHVyZSBUb3dlcgotCQkJCVNlbyBDaG8tRG9uZywgU2VvIGNoby1ndQotCQkJCVNlb3VsICAxMzgtMDkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTEyICAgKGhleCkJCUdNLTIgQ29ycG9yYXRpb24KLTAwMDgxMiAgICAgKGJhc2UgMTYpCQlHTS0yIENvcnBvcmF0aW9uCi0JCQkJU2hpYmEtTWF0dXNoaXJhLUJsZGcuCi0JCQkJNkYgMy0zLTEyLFNoaWJhCi0JCQkJVG9reW8gTWluYXRvLWt1IDEwNS0wMDE0Ci0JCQkJSkFQQU4KLQotMDAtMDgtMTMgICAoaGV4KQkJRGlza2JhbmssIEluYy4KLTAwMDgxMyAgICAgKGJhc2UgMTYpCQlEaXNrYmFuaywgSW5jLgotCQkJCTNGIEZvY3VzIEJ1aWxkaW5nLCA3MjUtMjUKLQkJCQlZZW9rc2FtLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC0xNCAgIChoZXgpCQlUSUwgVGVjaG5vbG9naWVzCi0wMDA4MTQgICAgIChiYXNlIDE2KQkJVElMIFRlY2hub2xvZ2llcwotCQkJCUV1cm9wYXJrIERlUGljaGF1cnksIEJBVCA5Ci0JCQkJMTM4NTYgQUlYIGVuIFByb3ZpZGVuY2UKLQkJCQlGUkFOQ0UKLQotMDAtMDgtMTUgICAoaGV4KQkJQ0FUUyBDby4sIEx0ZC4KLTAwMDgxNSAgICAgKGJhc2UgMTYpCQlDQVRTIENvLiwgTHRkLgotCQkJCTc1MS0yIEthY2hpZGEtY2hvLAotCQkJCVRzdXp1a2kta3UsIFlva29oYW1hCi0JCQkJMjI0LTAwMzQKLQkJCQlKQVBBTgotCi0wMC0wOC0xNiAgIChoZXgpCQlCbHVldGFncyBBL1MKLTAwMDgxNiAgICAgKGJhc2UgMTYpCQlCbHVldGFncyBBL1MKLQkJCQlOeXRvcnYgMTEsIDQgRmxvb3IKLQkJCQk5MDAwIEFhbGJvcmcKLQkJCQlERU5NQVJLCi0KLTAwLTA4LTE3ICAgKGhleCkJCUVtZXJnZUNvcmUgTmV0d29ya3MgTExDCi0wMDA4MTcgICAgIChiYXNlIDE2KQkJRW1lcmdlQ29yZSBOZXR3b3JrcyBMTEMKLQkJCQkxMDU0MiBTLiBKb3JkYW4gR2F0ZXdheQotCQkJCVN1aXRlIDE1MAotCQkJCVNvdXRoIEpvcmRhbiBVVCA4NDA5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMTggICAoaGV4KQkJUGl4ZWx3b3JrcywgSW5jLgotMDAwODE4ICAgICAoYmFzZSAxNikJCVBpeGVsd29ya3MsIEluYy4KLQkJCQk3NzAwIFNXIE1vaGF3ayBTdHJlZXQKLQkJCQlUdWFsYXRpbiBPUiA5NzA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMTkgICAoaGV4KQkJQmFua3N5cwotMDAwODE5ICAgICAoYmFzZSAxNikJCUJhbmtzeXMKLQkJCQlIYWFjaHRzZXN0ZWVud2VnIDE0NDIKLQkJCQkxMTMwIEJydXNzZWwKLQkJCQlCRUxHSVVNCi0KLTAwLTA4LTFBICAgKGhleCkJCVNhbnJhZCBJbnRlbGxpZ2VuY2UgU3RvcmFnZSBDb21tdW5pY2F0aW9ucyAoMjAwMCkgTHRkLgotMDAwODFBICAgICAoYmFzZSAxNikJCVNhbnJhZCBJbnRlbGxpZ2VuY2UgU3RvcmFnZSBDb21tdW5pY2F0aW9ucyAoMjAwMCkgTHRkLgotCQkJCTMyIEhhYmFyemVsIFN0LiwgRW50cmFjZSBCCi0JCQkJVGVsLUF2aXYgNjk3MTAKLQkJCQlJU1JBRUwKLQotMDAtMDgtMUIgICAoaGV4KQkJV2luZGlnbyBTeXN0ZW1zCi0wMDA4MUIgICAgIChiYXNlIDE2KQkJV2luZGlnbyBTeXN0ZW1zCi0JCQkJMjIxMCBPJ1Rvb2xlIEF2ZS4gIzIwMAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0xQyAgIChoZXgpCQlAcG9zLmNvbQotMDAwODFDICAgICAoYmFzZSAxNikJCUBwb3MuY29tCi0JCQkJMzA1MSBOb3J0aCBGaXJzdCBTdHJlZXQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMUQgICAoaGV4KQkJSXBzaWwsIEluY29ycG9yYXRlZAotMDAwODFEICAgICAoYmFzZSAxNikJCUlwc2lsLCBJbmNvcnBvcmF0ZWQKLQkJCQk3OTQ1IE1hY0FydGh1ciBCbHZkLgotCQkJCVN1aXRlIDIxMgotCQkJCUNhYmluIEpvaG4gTUQgMjA4MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTFFICAgKGhleCkJCVJlcGVhdGl0IEFCCi0wMDA4MUUgICAgIChiYXNlIDE2KQkJUmVwZWF0aXQgQUIKLQkJCQlGYXJvZ2F0YW4gNwotCQkJCVNFMTY0NDAgS2lzdGEKLQkJCQlTV0VERU4KLQotMDAtMDgtMUYgICAoaGV4KQkJUG91IFl1ZW4gVGVjaCBDb3JwLiBMdGQuCi0wMDA4MUYgICAgIChiYXNlIDE2KQkJUG91IFl1ZW4gVGVjaCBDb3JwLiBMdGQuCi0JCQkJMTZGLCBOby4gMTA3LCBTZWN0LiAzLCBUYWljaHVuZyBLZW5nIFJkLgotCQkJCVRhaWNodW5nIENpdHkgNDA3LAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtMjAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0wMDA4MjAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcyBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0yMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLTAwMDgyMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTIyICAgKGhleCkJCUluUHJvIENvbW0KLTAwMDgyMiAgICAgKGJhc2UgMTYpCQlJblBybyBDb21tCi0JCQkJMTFGLCBOby4gOTMgU2h1ZWktWXVhbiBTdHJlZXQKLQkJCQlIc2luY2h1LCAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LTIzICAgKGhleCkJCVRleGEgQ29ycC4KLTAwMDgyMyAgICAgKGJhc2UgMTYpCQlUZXhhIENvcnAuCi0JCQkJTmFyYSBCbGRnLiAzRiwgMi0yLTggU2hpbi1Zb2tvaGFtYSwKLQkJCQlLb2hva3Uta3UsIFlva29oYW1hCi0JCQkJMjIyLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0wOC0yNCAgIChoZXgpCQlDb3BpdHJhayBJbmMKLTAwMDgyNCAgICAgKGJhc2UgMTYpCQlDb3BpdHJhayBJbmMKLQkJCQk4MzkwIE1heXJhbmQgU3RyZWV0Ci0JCQkJTW9udHJlYWwgIFF1ZWJlYyBINFAgMkM5Ci0JCQkJQ0FOQURBCi0KLTAwLTA4LTI1ICAgKGhleCkJCUFjbWUgUGFja2V0Ci0wMDA4MjUgICAgIChiYXNlIDE2KQkJQWNtZSBQYWNrZXQKLQkJCQk3MSBUaGlyZCBBdmVudWUKLQkJCQlCdXJsbGluZ3RvbgotCQkJCVdvYnVybiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtMjYgICAoaGV4KQkJQ29sb3JhZG8gTWVkIFRlY2gKLTAwMDgyNiAgICAgKGJhc2UgMTYpCQlDb2xvcmFkbyBNZWQgVGVjaAotCQkJCTYxNzUgTG9uZ2JvdyBEci4KLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0yNyAgIChoZXgpCQlBREIgQnJvYWRiYW5kIEl0YWxpYQotMDAwODI3ICAgICAoYmFzZSAxNikJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi0JCQkJVmlhbGUgU2FyY2EgMjIyCi0JCQkJTWlsYW5vIDIwMTI2Ci0JCQkJSVRBTFkKLQotMDAtMDgtMjggICAoaGV4KQkJS29laSBFbmdpbmVlcmluZyBMdGQuCi0wMDA4MjggICAgIChiYXNlIDE2KQkJS29laSBFbmdpbmVlcmluZyBMdGQuCi0JCQkJMy00MCwgNS1DaG9tZQotCQkJCUtpcmUtbmlzaGkgSGlyYW5vLWt1Ci0JCQkJT3Nha3UgIDU0Ny0wMDI2Ci0JCQkJSkFQQU4KLQotMDAtMDgtMjkgICAoaGV4KQkJQXZhbCBOYWdhc2FraSBDb3Jwb3JhdGlvbgotMDAwODI5ICAgICAoYmFzZSAxNikJCUF2YWwgTmFnYXNha2kgQ29ycG9yYXRpb24KLQkJCQk2LTQyIFR1a3ViYSBJc2FoYXlhCi0JCQkJTmFnYXNha2kKLQkJCQk4NTQtMDA2NQotCQkJCUpBUEFOCi0KLTAwLTA4LTJBICAgKGhleCkJCVBvd2Vyd2FsbHogTmV0d29yayBTZWN1cml0eQotMDAwODJBICAgICAoYmFzZSAxNikJCVBvd2Vyd2FsbHogTmV0d29yayBTZWN1cml0eQotCQkJCTEyMC0xMzE2MCBWYW5pZXIgUGxhY2UsCi0JCQkJUmljaG1vbmQsIEJDLAotCQkJCVY2ViAySjIKLQkJCQlDQU5BREEKLQotMDAtMDgtMkIgICAoaGV4KQkJV29va3N1bmcgRWxlY3Ryb25pY3MsIEluYy4KLTAwMDgyQiAgICAgKGJhc2UgMTYpCQlXb29rc3VuZyBFbGVjdHJvbmljcywgSW5jLgotCQkJCUphaG8tQmxkZy4gNkYsIFRhbmJhbmctRG9uZywKLQkJCQlTZW8tR3UsIFRhZWpvbiwgMzAyLTIyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC0yQyAgIChoZXgpCQlIb21hZyBBRwotMDAwODJDICAgICAoYmFzZSAxNikJCUhvbWFnIEFHCi0JCQkJQWJ0LiBFc3QuLCBIb21hZyBTdHIuIDMtNQotCQkJCUQtNzIyOTYgU2Nob3BmbG9jaAotCQkJCUdFUk1BTlkKLQotMDAtMDgtMkQgICAoaGV4KQkJSW5kdXMgVGVxc2l0ZSBQcml2YXRlIExpbWl0ZWQKLTAwMDgyRCAgICAgKGJhc2UgMTYpCQlJbmR1cyBUZXFzaXRlIFByaXZhdGUgTGltaXRlZAotCQkJCSM3LCBBcnlhIEdvd2RlciBSb2FkLAotCQkJCVdlc3QgTWFtYmFsYW0sIENoZW5uYWksCi0JCQkJVGFtaWwgTmFkdSAgNjAwMDMzCi0JCQkJSU5ESUEKLQotMDAtMDgtMkUgICAoaGV4KQkJTXVsdGl0b25lIEVsZWN0cm9uaWNzIFBMQwotMDAwODJFICAgICAoYmFzZSAxNikJCU11bHRpdG9uZSBFbGVjdHJvbmljcyBQTEMKLQkJCQlNdWx0aXRvbmUgSG91c2UsIEJlZ2dhcndvb2QgTGFuZQotCQkJCUJhc2luZ3N0b2tlIFJHMjMgN0xMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtMkYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwODJGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTMwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDgzMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC0zMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA4MzEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNEUgICAoaGV4KQkJRGl2ZXJnZU5ldCwgSW5jLgotMDAwODRFICAgICAoYmFzZSAxNikJCURpdmVyZ2VOZXQsIEluYy4KLQkJCQkyMTQyIEJlcmluZyBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNEYgICAoaGV4KQkJUXVhbHN0YXIgQ29ycG9yYXRpb24KLTAwMDg0RiAgICAgKGJhc2UgMTYpCQlRdWFsc3RhciBDb3Jwb3JhdGlvbgotCQkJCTM5OTBCIEhlcml0YWdlIE9hayBDb3VydAotCQkJCVNpbWkgVmFsbGV5IENBIDkzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC01MCAgIChoZXgpCQlBcml6b25hIEluc3RydW1lbnQgQ29ycC4KLTAwMDg1MCAgICAgKGJhc2UgMTYpCQlBcml6b25hIEluc3RydW1lbnQgQ29ycC4KLQkJCQkxOTEyIFcuIDR0aCBTdHJlZXQKLQkJCQlUZW1wZSBBWiA4NTI4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNTEgICAoaGV4KQkJQ2FuYWRpYW4gQmFuayBOb3RlIENvbXBhbnksIEx0ZC4KLTAwMDg1MSAgICAgKGJhc2UgMTYpCQlDYW5hZGlhbiBCYW5rIE5vdGUgQ29tcGFueSwgTHRkLgotCQkJCTE4IEF1cmlnYSBEci4KLQkJCQlOZXBlYW4sIE9udC4KLQkJCQlLMkUgN1Q5Ci0JCQkJQ0FOQURBCi0KLTAwLTA4LTUyICAgKGhleCkJCURhdm9saW5rIENvLiBJbmMuCi0wMDA4NTIgICAgIChiYXNlIDE2KQkJRGF2b2xpbmsgQ28uIEluYy4KLQkJCQlSb29tLTYwNCwgS3VtaHdhIFBsYXphLAotCQkJCTExNDItNSwgU2FuYm9uLURvbmcsIEt1bnBvLVNpCi0JCQkJS3l1bmdnaS1EbyAgNDM1LTA0MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC01MyAgIChoZXgpCQlTY2hsZWljaGVyIEdtYkggJiBDby4gUmVsYWlzd2Vya2UgS0cKLTAwMDg1MyAgICAgKGJhc2UgMTYpCQlTY2hsZWljaGVyIEdtYkggJiBDby4gUmVsYWlzd2Vya2UgS0cKLQkJCQlQaWNoZWxzd2VyZGVyc3RyYXNzZSAzLTUKLQkJCQlELTEzNTk3IEJlcmxpbgotCQkJCUdFUk1BTlkKLQotMDAtMDgtNTQgICAoaGV4KQkJTmV0cm9uaXgsIEluYy4KLTAwMDg1NCAgICAgKGJhc2UgMTYpCQlOZXRyb25peCwgSW5jLgotCQkJCTNGLTEsIE5vLiAzMSwgSHNpbi1UYWkgUm9hZCwKLQkJCQlDaHVwZWkgQ2l0eSwgSHNpbmNodSBIc2llbgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtNTUgICAoaGV4KQkJTkFTQS1Hb2RkYXJkIFNwYWNlIEZsaWdodCBDZW50ZXIKLTAwMDg1NSAgICAgKGJhc2UgMTYpCQlOQVNBLUdvZGRhcmQgU3BhY2UgRmxpZ2h0IENlbnRlcgotCQkJCUNvZGUgNTYxCi0JCQkJR3JlZW5iZWx0IE1EIDIwNzcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC01NiAgIChoZXgpCQlHYW1hdHJvbmljIEVsZWN0cm9uaWMgSW5kdXN0cmllcyBMdGQuCi0wMDA4NTYgICAgIChiYXNlIDE2KQkJR2FtYXRyb25pYyBFbGVjdHJvbmljIEluZHVzdHJpZXMgTHRkLgotCQkJCUhhcnR1bSBTdHJlZXQgMTQKLQkJCQlKZXJ1c2FsZW0gOTc3NzQKLQkJCQlJU1JBRUwKLQotMDAtMDgtNTcgICAoaGV4KQkJUG9sYXJpcyBOZXR3b3JrcywgSW5jLgotMDAwODU3ICAgICAoYmFzZSAxNikJCVBvbGFyaXMgTmV0d29ya3MsIEluYy4KLQkJCQk2ODEwIFNhbnRhIFRlcmVzYSBCbHZkLgotCQkJCVNhbiBKb3NlIENBIDk1MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC01OCAgIChoZXgpCQlOb3ZhdGVjaG5vbG9neSBJbmMuCi0wMDA4NTggICAgIChiYXNlIDE2KQkJTm92YXRlY2hub2xvZ3kgSW5jLgotCQkJCU5vdmEgQmxkZy4gNEYgNjQxIDAzCi0JCQkJWXVrc2FtLURvbmcgS2FuZ25hbS1rdQotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTU5ICAgKGhleCkJCVNoZW5aaGVuIFVuaXRvbmUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA4NTkgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gVW5pdG9uZSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkyIFNvdXRoZXJuIEZsb29yIDcwMiBCdWlsZGluZwotCQkJCUJhR3VhTGluZyBJbmR1c3RyaWFsIFpvbmUgU2hlbnpoZW4KLQkJCQlDSElOQQotCi0wMC0wOC01QSAgIChoZXgpCQlJbnRpR2F0ZSBJbmMuCi0wMDA4NUEgICAgIChiYXNlIDE2KQkJSW50aUdhdGUgSW5jLgotCQkJCTMwOUUgSVQgVmVudHVyZSBUb3dlcgotCQkJCTc4LCBHYXJha2Jvbi1Eb25nLCBTb25ncGEtR3UKLQkJCQlTZW91bCAgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC01QiAgIChoZXgpCQlIYW5iaXQgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDA4NUIgICAgIChiYXNlIDE2KQkJSGFuYml0IEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTQxNC01LCBXb25jaGVvbi1Eb25nLCBQYWxkYWwtR3UKLQkJCQlTdXdvbi1DaXR5LCBLeW91bmdraS1EbywgNDQyLTgyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC01QyAgIChoZXgpCQlTaGFuZ2hhaSBEYXJlIFRlY2hub2xvZ2llcyBDby4gTHRkLgotMDAwODVDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERhcmUgVGVjaG5vbG9naWVzIENvLiBMdGQuCi0JCQkJMjNGLCBDaGluYSBNZXJjaGFudHMgVG93ZXIsCi0JCQkJTm8uIDE2MSwgRWFzdCBMdWppYVp1aSBSb2FkCi0JCQkJUHVkb25nIE5ldyBBcmVhLCBTaGFuZ2hhaSAKLQkJCQlDSElOQQotCi0wMC0wOC01RCAgIChoZXgpCQlBYXN0cmEKLTAwMDg1RCAgICAgKGJhc2UgMTYpCQlBYXN0cmEKLQkJCQkxMTYwIFJvdXRlIDIyIEVhc3QKLQkJCQlCcmlkZ2V3YXRlciBOSiAwODgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNUUgICAoaGV4KQkJUENPIEFHCi0wMDA4NUUgICAgIChiYXNlIDE2KQkJUENPIEFHCi0JCQkJRG9uYXVwYXJrIDExCi0JCQkJOTMzMDkgS2VsaGVpbQotCQkJCUdFUk1BTlkKLQotMDAtMDgtNUYgICAoaGV4KQkJUGljYW5vbCBOLlYuCi0wMDA4NUYgICAgIChiYXNlIDE2KQkJUGljYW5vbCBOLlYuCi0JCQkJUG9sZW5sYWFuIDMtNwotCQkJCTg5MDAgSWVwZXIKLQkJCQlCRUxHSVVNCi0KLTAwLTA4LTYwICAgKGhleCkJCUxvZGdlTmV0IEVudGVydGFpbm1lbnQgQ29ycC4KLTAwMDg2MCAgICAgKGJhc2UgMTYpCQlMb2RnZU5ldCBFbnRlcnRhaW5tZW50IENvcnAuCi0JCQkJMzkwMCBXLiBJbm5vdmF0aW9uIFN0cmVldAotCQkJCVNpb3V4IEZhbGxzIFNEIDU3MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC02MSAgIChoZXgpCQlTb2Z0RW5lcmd5IENvLiwgTHRkLgotMDAwODYxICAgICAoYmFzZSAxNikJCVNvZnRFbmVyZ3kgQ28uLCBMdGQuCi0JCQkJMzQ2IFNhbmd3YW5nc2lwbGktRG9uZywKLQkJCQlTdW5nIERvbmctR3UsIFNlb3VsCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTYyICAgKGhleCkJCU5FQyBFbHVtaW5hbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDA4NjIgICAgIChiYXNlIDE2KQkJTkVDIEVsdW1pbmFudCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNDcwMCBBdmlvbiBQYXJrd2F5Ci0JCQkJQ2hhbnRpbGx5IFZBIDIwMTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC02MyAgIChoZXgpCQlFbnRyaXNwaGVyZSBJbmMuCi0wMDA4NjMgICAgIChiYXNlIDE2KQkJRW50cmlzcGhlcmUgSW5jLgotCQkJCTE2MDEgUy4gRGUgQW56YSBCbHZkLgotCQkJCVN1aXRlIDI1MAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNjQgICAoaGV4KQkJRmFzeSBTLnAuQS4KLTAwMDg2NCAgICAgKGJhc2UgMTYpCQlGYXN5IFMucC5BLgotCQkJCVZpYSBUb2duYXNjYSA3Ci0JCQkJR2FsbGFyYXRlIFZhcmVzZSAyMTAxMwotCQkJCUlUQUxZCi0KLTAwLTA4LTY1ICAgKGhleCkJCUpBU0NPTSBDTy4sIExURAotMDAwODY1ICAgICAoYmFzZSAxNikJCUpBU0NPTSBDTy4sIExURAotCQkJCUpVQU4gSU5EVVNUUklBTCBDT01QTEVYIDMzMCwgMTctMSwKLQkJCQlKVUFOLURPTkcgTkFNLUdVIElOQ0hFT04gNDAyLTIwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC02NiAgIChoZXgpCQlEU1ggQWNjZXNzIFN5c3RlbXMsIEluYy4KLTAwMDg2NiAgICAgKGJhc2UgMTYpCQlEU1ggQWNjZXNzIFN5c3RlbXMsIEluYy4KLQkJCQkxMDczMSBSb2Nrd2FsbCBSZC4KLQkJCQlEYWxsYXMgVFggNzUyMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTY3ICAgKGhleCkJCVVwdGltZSBEZXZpY2VzCi0wMDA4NjcgICAgIChiYXNlIDE2KQkJVXB0aW1lIERldmljZXMKLQkJCQkxMTcyNCBEdW5mcmllcyBMYW5lCi0JCQkJQXVzdGluIFRleGFzIDc4NzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC02OCAgIChoZXgpCQlQdXJPcHRpeAotMDAwODY4ICAgICAoYmFzZSAxNikJCVB1ck9wdGl4Ci0JCQkJMTk0NSBDYW1pbm8gVmlkYSBSb2JsZQotCQkJCVN1aXRlIEMKLQkJCQlDYXJsc2JhZCBDQSA5MjAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNjkgICAoaGV4KQkJQ29tbWFuZC1lIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMDg2OSAgICAgKGJhc2UgMTYpCQlDb21tYW5kLWUgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCVN1aXRlIDcwOSwgWmhvbmdzaGVuZyBNYW5zaW9uLAotCQkJCU5vLjIgQmVpIEZlbmdXbyBSZC4KLQkJCQlCZWlqaW5nICAxMDAwMzgKLQkJCQlDSElOQQotCi0wMC0wOC02QSAgIChoZXgpCQlTZWN1cml0b24gR21iaAotMDAwODZBICAgICAoYmFzZSAxNikJCVNlY3VyaXRvbiBHbWJoCi0JCQkJVm9uLURyYWlzLVN0cmFzc2UgMzMKLQkJCQlBY2hlcm4gIEQtNzc4NTUKLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTZCICAgKGhleCkJCU1JUFNZUwotMDAwODZCICAgICAoYmFzZSAxNikJCU1JUFNZUwotCQkJCTE5QywgQXZlbnVlIGRlcyBJbmRlcwotCQkJCUxFUyBVTElTIENlZGV4ICBGUi05MTk2OQotCQkJCUZSQU5DRQotCi0wMC0wOC02QyAgIChoZXgpCQlQbGFzbW9uIExNUwotMDAwODZDICAgICAoYmFzZSAxNikJCVBsYXNtb24gTE1TCi0JCQkJNDQyNSBBcnJvd3NXZXN0IERyaXZlCi0JCQkJQ29sb3JhZG8gU3ByaW5ncyBDTyA4MDkwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNkQgICAoaGV4KQkJTWlzc291cmkgRnJlZU5ldAotMDAwODZEICAgICAoYmFzZSAxNikJCU1pc3NvdXJpIEZyZWVOZXQKLQkJCQlQTyBCb3ggNzcxMDI2Ci0JCQkJU3QuIExvdWlzIE1pc3NvdXJpIDYzMTc3LTEwMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTZFICAgKGhleCkJCUh5Z2xvIEFCCi0wMDA4NkUgICAgIChiYXNlIDE2KQkJSHlnbG8gQUIKLQkJCQlWYXN0YmVyZ2EgYWxsZSA2MAotCQkJCVNFLTEyNiA3NSBTdG9ja2hvbG0KLQkJCQlTV0VERU4KLQotMDAtMDgtNkYgICAoaGV4KQkJUmVzb3VyY2VzIENvbXB1dGVyIE5ldHdvcmsgTHRkLgotMDAwODZGICAgICAoYmFzZSAxNikJCVJlc291cmNlcyBDb21wdXRlciBOZXR3b3JrIEx0ZC4KLQkJCQlSbSAzMjQsIFRlY2ggQ2VudHJlLCA3MiBUYXQgQ2hlZSBBdmUuLAotCQkJCUtvd2xvb24gVG9uZywgS293bG9vbgotCQkJCUhPTkcgS09ORwotCi0wMC0wOC03MCAgIChoZXgpCQlSYXN2aWEgU3lzdGVtcywgSW5jLgotMDAwODcwICAgICAoYmFzZSAxNikJCVJhc3ZpYSBTeXN0ZW1zLCBJbmMuCi0JCQkJMzI1NS0zIFNjb3R0IEJsdmQuCi0JCQkJU3VpdGUgMTAyCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTcxICAgKGhleCkJCU5PUlRIREFUQSBDby4sIEx0ZC4KLTAwMDg3MSAgICAgKGJhc2UgMTYpCQlOT1JUSERBVEEgQ28uLCBMdGQuCi0JCQkJIzMwMiBLYXlhbmdUZWNobm8tVG93biAxNDg3Ci0JCQkJS2F5YW5nMy1Eb25nCi0JCQkJS2FuZ3Nlby1HdSBTZW91bCAxNTctODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTcyICAgKGhleCkJCVNvcmVuc29uIENvbW11bmljYXRpb25zCi0wMDA4NzIgICAgIChiYXNlIDE2KQkJU29yZW5zb24gQ29tbXVuaWNhdGlvbnMKLQkJCQk0MTkyIFNvdXRoIFJpdmVyYm9hdCBSb2FkCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTczICAgKGhleCkJCURhcFRlY2hub2xvZ3kgQi5WLgotMDAwODczICAgICAoYmFzZSAxNikJCURhcFRlY2hub2xvZ3kgQi5WLgotCQkJCVp1dHBoZW5zdHJhYXQgNjcKLQkJCQlFSiBPbGRlbnphYWwgIDc1NzUKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wOC03NCAgIChoZXgpCQlEZWxsIENvbXB1dGVyIENvcnAuCi0wMDA4NzQgICAgIChiYXNlIDE2KQkJRGVsbCBDb21wdXRlciBDb3JwLgotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVFggNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTc1ICAgKGhleCkJCUFjb3JwIEVsZWN0cm9uaWNzIENvcnAuCi0wMDA4NzUgICAgIChiYXNlIDE2KQkJQWNvcnAgRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQk4RiwgTm8uMTExLTYsU2hpbmcgVGVoIFJkLAotCQkJCVNhbiBDaHVuZyBUYWlwZWkgSHNpZW4gMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOC03NiAgIChoZXgpCQlTRFN5c3RlbQotMDAwODc2ICAgICAoYmFzZSAxNikJCVNEU3lzdGVtCi0JCQkJNjEzLEh5dW5kYWkgSSBWYWxsZXksMjIzLTEyLAotCQkJCVNhbmdkYWl3b24gMS1Eb25nLEp1bmd3b24tR3UKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaS1EbyA0NjItODA3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LTc3ICAgKGhleCkJCUxpZWJlcnQtSGlyb3NzIFNwYQotMDAwODc3ICAgICAoYmFzZSAxNikJCUxpZWJlcnQtSGlyb3NzIFNwYQotCQkJCVZpYSBMZW9uYXJkbyBkYSBWaW5jaSA4Ci0JCQkJUGlvdmUgZGkgU2FjY28gWi5JLiBUb2duYW5hIDM1MDIwCi0JCQkJSVRBTFkKLQotMDAtMDgtNzggICAoaGV4KQkJQmVuY2htYXJrIFN0b3JhZ2UgSW5ub3ZhdGlvbnMKLTAwMDg3OCAgICAgKGJhc2UgMTYpCQlCZW5jaG1hcmsgU3RvcmFnZSBJbm5vdmF0aW9ucwotCQkJCTMxMjIgU3RlcmxpbmcgQ2lyY2xlCi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtNzkgICAoaGV4KQkJQ0VNIENvcnBvcmF0aW9uCi0wMDA4NzkgICAgIChiYXNlIDE2KQkJQ0VNIENvcnBvcmF0aW9uCi0JCQkJUC5PLiBCb3ggMjAwCi0JCQkJTWF0dGhld3MgTkMgMjgxMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTdBICAgKGhleCkJCVdpcG90ZWMgR21iSAotMDAwODdBICAgICAoYmFzZSAxNikJCVdpcG90ZWMgR21iSAotCQkJCUFkYW0tSG9mZm1hbiBTdHIuIDI2Ci0JCQkJRC02NzY1NyBLYWlzZXJzbGF1dGVybQotCQkJCUdFUk1BTlkKLQotMDAtMDgtN0IgICAoaGV4KQkJUlRYIFRlbGVjb20gQS9TCi0wMDA4N0IgICAgIChiYXNlIDE2KQkJUlRYIFRlbGVjb20gQS9TCi0JCQkJU3Ryb2VtbWVuIDYKLQkJCQlESyA5NDAwIE5vZXJyZXN1bmRieQotCQkJCURFTk1BUksKLQotMDAtMDgtN0MgICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAwODdDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTdEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMgSW5jLgotMDAwODdEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtN0UgICAoaGV4KQkJQm9uIEVsZWN0cm8tVGVsZWNvbSBJbmMuCi0wMDA4N0UgICAgIChiYXNlIDE2KQkJQm9uIEVsZWN0cm8tVGVsZWNvbSBJbmMuCi0JCQkJR2F5YW5nIDFzdCBGYWN0b3J5IDcwMSwgMTQtODEKLQkJCQlHYXlhbmctRG9uZyBHYW5nc28tR3UKLQkJCQlTZW91bCAgMTU3LTgwOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC03RiAgIChoZXgpCQlTUEFVTiBlbGVjdHJvbmljIEdtYkggJiBDby4gS0cKLTAwMDg3RiAgICAgKGJhc2UgMTYpCQlTUEFVTiBlbGVjdHJvbmljIEdtYkggJiBDby4gS0cKLQkJCQlCeWstR3VsZGVuIC0gU3RyLiAyMgotCQkJCTc4MjI0IFNpbmdlbgotCQkJCUdFUk1BTlkKLQotMDAtMDgtODAgICAoaGV4KQkJQnJvYWRUZWwgQ2FuYWRhIENvbW11bmljYXRpb25zIGluYy4KLTAwMDg4MCAgICAgKGJhc2UgMTYpCQlCcm9hZFRlbCBDYW5hZGEgQ29tbXVuaWNhdGlvbnMgaW5jLgotCQkJCTM3MDAgR3JpZmZpdGgsIFN1aXRlIDM4OQotCQkJCVNhaW50LUxhdXJlbnQgUXVlYmVjIEg0VCAyQjMKLQkJCQlDQU5BREEKLQotMDAtMDgtODEgICAoaGV4KQkJRElHSVRBTCBIQU5EUyBDTy4sTFRELgotMDAwODgxICAgICAoYmFzZSAxNikJCURJR0lUQUwgSEFORFMgQ08uLExURC4KLQkJCQlUT1dOJ1MgU1FVQVJFIDUwMywgS0FLaVlBIEJ1aWxkaW5nIDJGCi0JCQkJMi03LTE3IFNoaW55b2tvaGFtYSBLb3Vob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0wOC04MiAgIChoZXgpCQlTSUdNQSBDT1JQT1JBVElPTgotMDAwODgyICAgICAoYmFzZSAxNikJCVNJR01BIENPUlBPUkFUSU9OCi0JCQkJMi0zLTE1IEl3YXRvLW1pbmFtaQotCQkJCUtvbWFlLXNoaSBUb2t5byAyMDEtODYzMAotCQkJCUpBUEFOCi0KLTAwLTA4LTgzICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDA4ODMgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMDk1NSBUYW50YXUgQXZlbnVlLCBNYWlsc3RvcCA0NVNMLUcKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTg0ICAgKGhleCkJCUluZGV4IEJyYWlsbGUgQUIKLTAwMDg4NCAgICAgKGJhc2UgMTYpCQlJbmRleCBCcmFpbGxlIEFCCi0JCQkJQm94IDE1NQotCQkJCVMtOTU0MjMgR2FtbWVsc3RhZAotCQkJCVNXRURFTgotCi0wMC0wOC04NSAgIChoZXgpCQlFTVMgRHIuIFRob21hcyBXdWVuc2NoZQotMDAwODg1ICAgICAoYmFzZSAxNikJCUVNUyBEci4gVGhvbWFzIFd1ZW5zY2hlCi0JCQkJU29ubmVuaGFuZyAzCi0JCQkJRC04NTMwNCBJbG1tdWVuc3RlcgotCQkJCUdFUk1BTlkKLQotMDAtMDgtODYgICAoaGV4KQkJSGFuc3VuZyBUZWxpYW5uLCBJbmMuCi0wMDA4ODYgICAgIChiYXNlIDE2KQkJSGFuc3VuZyBUZWxpYW5uLCBJbmMuCi0JCQkJMTk1LTEsIE5ldW5ncHl1bmctcmksIE9wby1ldWIKLQkJCQlLd2FuZ2p1LXNpLCBLeW9nZ2ktZG8sIDQ2NC04OTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtODcgICAoaGV4KQkJTWFzY2hpbmVuZmFicmlrIFJlaW5oYXVzZW4gR21iSAotMDAwODg3ICAgICAoYmFzZSAxNikJCU1hc2NoaW5lbmZhYnJpayBSZWluaGF1c2VuIEdtYkgKLQkJCQlGYWxrZW5zdGVpbnN0ci4gOAotCQkJCVJlZ2Vuc2J1cmcgQmF2YXJpYSA5MzA1OQotCQkJCUdFUk1BTlkKLQotMDAtMDgtODggICAoaGV4KQkJT1VMTElNIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgSW5jLC4KLTAwMDg4OCAgICAgKGJhc2UgMTYpCQlPVUxMSU0gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBJbmMsLgotCQkJCWEtMTB0aCBGTCwuIElUIFZlbnR1cmUgVG93ZXIsCi0JCQkJNzggR2FyYWstRG9uZywgU29uZ3BhLUt1Ci0JCQkJU2VvdWwgIDEzOC04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtODkgICAoaGV4KQkJRWNob3N0YXIgVGVjaG5vbG9naWVzIENvcnAKLTAwMDg4OSAgICAgKGJhc2UgMTYpCQlFY2hvc3RhciBUZWNobm9sb2dpZXMgQ29ycAotCQkJCTk0IEludmVybmVzcyBDaXJjbGUKLQkJCQlFbmdsZXdvb2QgQ08gODAxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LThBICAgKGhleCkJCU1pbmRzQFdvcmsKLTAwMDg4QSAgICAgKGJhc2UgMTYpCQlNaW5kc0BXb3JrCi0JCQkJMTU1NTAgUm9ja2ZpZWxkIEJsdmQuIFN1aXRlIEMKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LThCICAgKGhleCkJCVRyb3BpYyBOZXR3b3JrcyBJbmMuCi0wMDA4OEIgICAgIChiYXNlIDE2KQkJVHJvcGljIE5ldHdvcmtzIEluYy4KLQkJCQkxMzUgTWljaGVhbCBDb3dwbGFuZCBEcml2ZQotCQkJCU90dGF3YSBPbnRhcmlvIEsyTTJFOQotCQkJCUNBTkFEQQotCi0wMC0wOC04QyAgIChoZXgpCQlRdWFudGEgTmV0d29yayBTeXN0ZW1zIEluYy4KLTAwMDg4QyAgICAgKGJhc2UgMTYpCQlRdWFudGEgTmV0d29yayBTeXN0ZW1zIEluYy4KLQkJCQkxMywgMTNGLCBTZWMuIDIsIFBlaS1Ub3UgUmQKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtOEQgICAoaGV4KQkJU2lnbWEtTGlua3MgSW5jLgotMDAwODhEICAgICAoYmFzZSAxNikJCVNpZ21hLUxpbmtzIEluYy4KLQkJCQk1NTAtMSBIaWdhc2hpYXNha2F3YS1jaG8sCi0JCQkJSGFjaGlvamktc2hpLAotCQkJCVRva3lvICAxOTMtODU1MAotCQkJCUpBUEFOCi0KLTAwLTA4LThFICAgKGhleCkJCU5paG9uIENvbXB1dGVyIENvLiwgTHRkLgotMDAwODhFICAgICAoYmFzZSAxNikJCU5paG9uIENvbXB1dGVyIENvLiwgTHRkLgotCQkJCTM2LTggSGlnYXNoaXRhbWFjaGkKLQkJCQlIYW1hbWF0c3UgU2hpenVva2EgNDMwLTA5MTUKLQkJCQlKQVBBTgotCi0wMC0wOC04RiAgIChoZXgpCQlBRFZBTkNFRCBESUdJVEFMIFRFQ0hOT0xPR1kKLTAwMDg4RiAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBESUdJVEFMIFRFQ0hOT0xPR1kKLQkJCQlBRFQgQkxERy4sMy0zLCBZQU5HSkFFLURPTkcsCi0JCQkJU0VPQ0hPLUdVLAotCQkJCVNFT1VMICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtOTAgICAoaGV4KQkJQVZJTElOS1MgU0EKLTAwMDg5MCAgICAgKGJhc2UgMTYpCQlBVklMSU5LUyBTQQotCQkJCUV0aWMgQ2VudGVyIC0gQ1MgNzcgNzI5Ci0JCQkJOSBydWUgZGVzIENoYXJtaWxsZXMKLQkJCQlDZXNzb24gU2V2aWduZSBDZWRleCBGUkFOQ0UgMzU1NzcKLQkJCQlGUkFOQ0UKLQotMDAtMDgtOTEgICAoaGV4KQkJTHlhbiBJbmMuCi0wMDA4OTEgICAgIChiYXNlIDE2KQkJTHlhbiBJbmMuCi0JCQkJNUYtMSwgTk8uNTEsIFNFQy4yLCBLRUVMVU5HIFJELgotCQkJCVRBSVBFSSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOC05MiAgIChoZXgpCQlFTSBTb2x1dGlvbnMKLTAwMDg5MiAgICAgKGJhc2UgMTYpCQlFTSBTb2x1dGlvbnMKLQkJCQkxMDEgSHlkZSBSZAotCQkJCVllcm9uZ2EgQnJpc2JhbmUsIFFMRCA0MTA0Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTA4LTkzICAgKGhleCkJCUxFIElORk9STUFUSU9OIENPTU1VTklDQVRJT04gSU5DLgotMDAwODkzICAgICAoYmFzZSAxNikJCUxFIElORk9STUFUSU9OIENPTU1VTklDQVRJT04gSU5DLgotCQkJCVJtLCA0NTAxLCBEQS1Eb25nIENodW5nYW5nIENpcmN1bGF0aW9uIEMKLQkJCQkxMjU4IEt1cm8gQm9uLURvbmcsIEt1cm8tS3UsCi0JCQkJU2VvdWwgIDE1Mi03MjEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtOTQgICAoaGV4KQkJSW5ub1ZJU0lPTiBNdWx0aW1lZGlhIEx0ZC4KLTAwMDg5NCAgICAgKGJhc2UgMTYpCQlJbm5vVklTSU9OIE11bHRpbWVkaWEgTHRkLgotCQkJCVJtIDYwOCwgNi9GIFRpbnMgRW50ZXJwcmlzZXMgQ2VudHJlLAotCQkJCTc3NyBMYWkgQ2hpIEtvayBSb2FkLAotCQkJCUtvd2xvb24sICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDgtOTUgICAoaGV4KQkJRElSQyBUZWNobm9sb2dpZSBHbWJIICYgQ28uS0cKLTAwMDg5NSAgICAgKGJhc2UgMTYpCQlESVJDIFRlY2hub2xvZ2llIEdtYkggJiBDby5LRwotCQkJCUJvcnNpZ3N0ci4gMTMKLQkJCQlSYXRpbmdlbiBOUlcgNDA4ODAKLQkJCQlHRVJNQU5ZCi0KLTAwLTA4LTk2ICAgKGhleCkJCVByaW50cm9uaXgsIEluYy4KLTAwMDg5NiAgICAgKGJhc2UgMTYpCQlQcmludHJvbml4LCBJbmMuCi0JCQkJMTQ2MDAgTXlmb3JkIFJkLgotCQkJCVAuTy4gQm94IDE5NTU5Ci0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MjMtOTU1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtOTcgICAoaGV4KQkJUXVha2UgVGVjaG5vbG9naWVzCi0wMDA4OTcgICAgIChiYXNlIDE2KQkJUXVha2UgVGVjaG5vbG9naWVzCi0JCQkJMjg4MCBaYW5rZXIgUm9hZAotCQkJCVN1aXRlIDEwNAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC05OCAgIChoZXgpCQlHaWdhYml0IE9wdGljcyBDb3Jwb3JhdGlvbgotMDAwODk4ICAgICAoYmFzZSAxNikJCUdpZ2FiaXQgT3B0aWNzIENvcnBvcmF0aW9uCi0JCQkJMTE1NiBBc3RlciBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2LTY4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTk5ICAgKGhleCkJCU5ldGJpbmQsIEluYy4KLTAwMDg5OSAgICAgKGJhc2UgMTYpCQlOZXRiaW5kLCBJbmMuCi0JCQkJNSBNYXJpbmUgVmlldyBQbGF6YQotCQkJCUhvYm9rZW4gTkogMDcwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LTlBICAgKGhleCkJCUFsY2F0ZWwgTWljcm9lbGVjdHJvbmljcwotMDAwODlBICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTWljcm9lbGVjdHJvbmljcwotCQkJCUV4Y2Vsc2lvcmxhYW4gNDQtNDYKLQkJCQlCLTE5MzAgWmF2YW50ZW0gIAotCQkJCUJFTEdJVU0KLQotMDAtMDgtOUIgICAoaGV4KQkJSUNQIEVsZWN0cm9uaWNzIEluYy4KLTAwMDg5QiAgICAgKGJhc2UgMTYpCQlJQ1AgRWxlY3Ryb25pY3MgSW5jLgotCQkJCTRGLCBOby4gMjIsIENodW5nLUhzaW5nIFJkLiBTaGktQ2hpIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4sIDIyMSwKLQkJCQlUYWlwZWkgIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtOUMgICAoaGV4KQkJRWxlY3MgSW5kdXN0cnkgQ28uLCBMdGQuCi0wMDA4OUMgICAgIChiYXNlIDE2KQkJRWxlY3MgSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJMS0yMi0yMyxTaGluc2FrdSxUYWthdHN1LUt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjEzLTAwMTQKLQkJCQlKQVBBTgotCi0wMC0wOC05RCAgIChoZXgpCQlVSEQtRWxla3Ryb25pawotMDAwODlEICAgICAoYmFzZSAxNikJCVVIRC1FbGVrdHJvbmlrCi0JCQkJWnVlcmNoZXJzdHJhc3NlIDEyCi0JCQkJQmFkZW4gQUcgNTQwMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA4LTlFICAgKGhleCkJCUJlaWppbmcgRW50ZXItTmV0IGNvLkxURAotMDAwODlFICAgICAoYmFzZSAxNikJCUJlaWppbmcgRW50ZXItTmV0IGNvLkxURAotCQkJCU5PIDEgY291cnR5YXJkLAotCQkJCXNodWFuZ3F1YW5wdSBqaWEgMSxjaGFveWEKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0wOC05RiAgIChoZXgpCQlFRk0gTmV0d29ya3MKLTAwMDg5RiAgICAgKGJhc2UgMTYpCQlFRk0gTmV0d29ya3MKLQkJCQk0MDMsIDR0aCBmbG9vciBFbGVnYW5jZSAxIEJsZGcuCi0JCQkJMjUtMiBHdW1pLWRvbmcgUHVuZGFuZy1ndQotCQkJCVN1bmduYW0tc2kgS3l1bmdnaS1kbyA0NjMtODA4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUEwICAgKGhleCkJCVN0b3R6IEZlaW5tZXNzdGVjaG5payBHbWJICi0wMDA4QTAgICAgIChiYXNlIDE2KQkJU3RvdHogRmVpbm1lc3N0ZWNobmlrIEdtYkgKLQkJCQlIZXJtYW5uLURyZWhlciBTdHIuIDYKLQkJCQlHZXJsaW5nZW4gIDcwODM5Ci0JCQkJR0VSTUFOWQotCi0wMC0wOC1BMSAgIChoZXgpCQlDTmV0IFRlY2hub2xvZ3kgSW5jLgotMDAwOEExICAgICAoYmFzZSAxNikJCUNOZXQgVGVjaG5vbG9neSBJbmMuCi0JCQkJTm8uMTUsIFBhcmsgQXZlbnVlIElJLCBTY2llbmNlLUJhc2VkIEluZAotCQkJCUhzaW4tQ2h1IENpdHksCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtQTIgICAoaGV4KQkJQURJIEVuZ2luZWVyaW5nLCBJbmMuCi0wMDA4QTIgICAgIChiYXNlIDE2KQkJQURJIEVuZ2luZWVyaW5nLCBJbmMuCi0JCQkJMTc2OUEgV29ydGggUGFyawotCQkJCUNoYXJsb3R0ZXN2aWxsZSBWQSAyMjkxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQTMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwOEEzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUE0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDhBNCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1BNSAgIChoZXgpCQlQZW5pbnN1bGEgU3lzdGVtcyBJbmMuCi0wMDA4QTUgICAgIChiYXNlIDE2KQkJUGVuaW5zdWxhIFN5c3RlbXMgSW5jLgotCQkJCTY5MDIgVmVyZGUgUmlkZ2UgUmQuCi0JCQkJUmFuY2hvIFBhbG9zIFZlcmRlcyBDQSA5MDI3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQTYgICAoaGV4KQkJTXVsdGl3YXJlICYgSW1hZ2UgQ28uLCBMdGQuCi0wMDA4QTYgICAgIChiYXNlIDE2KQkJTXVsdGl3YXJlICYgSW1hZ2UgQ28uLCBMdGQuCi0JCQkJU2FlZG9uZyBCbGRnLiA2NS0yNSwKLQkJCQkya2EsIE5hbWhhbmcsIFlvdW5nZG8KLQkJCQlQdXNhbiAgNjA2LTAzMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1BNyAgIChoZXgpCQlpTG9naWMgSW5jLgotMDAwOEE3ICAgICAoYmFzZSAxNikJCWlMb2dpYyBJbmMuCi0JCQkJUm0jMzE4LCBUZWNobm9Db21wbGV4IEJsZGcuLCAxMjYtMTYsIDUtZwotCQkJCVNlb3VsICAxMzYtNzAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUE4ICAgKGhleCkJCVN5c3RlYyBDby4sIEx0ZC4KLTAwMDhBOCAgICAgKGJhc2UgMTYpCQlTeXN0ZWMgQ28uLCBMdGQuCi0JCQkJMTkgTm9jaGlkb3JpLCBOYXdhCi0JCQkJVG9rYWkgQWljaGkgNDc2LTAwMDIKLQkJCQlKQVBBTgotCi0wMC0wOC1BOSAgIChoZXgpCQlTYW5nU2FuZyBUZWNobm9sb2d5LCBJbmMuCi0wMDA4QTkgICAgIChiYXNlIDE2KQkJU2FuZ1NhbmcgVGVjaG5vbG9neSwgSW5jLgotCQkJCTY0LTgsIE5vZ29rLXJpLCBEb2NoZW9rLW15dW4sCi0JCQkJR3dhbmdqdSBLeW9uZ2dpLWRvIDQ2NC04ODIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtQUEgICAoaGV4KQkJS0FSQU0KLTAwMDhBQSAgICAgKGJhc2UgMTYpCQlLQVJBTQotCQkJCTk4LTMsICBIYW5rYW5ncm8gMi1LQSwgWW9uZ3NhbgotCQkJCVNlb3VsICAxNDAtMDEyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUFCICAgKGhleCkJCUVuZXJMaW54LmNvbSwgSW5jLgotMDAwOEFCICAgICAoYmFzZSAxNikJCUVuZXJMaW54LmNvbSwgSW5jLgotCQkJCTM5NjUgU291dGggV29vZGhpbGwgTGFuZQotCQkJCU5ldyBCZXJsaW4gV0kgNTMxNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUFDICAgKGhleCkJCUVsdHJvbWF0IEdtYkgKLTAwMDhBQyAgICAgKGJhc2UgMTYpCQlFbHRyb21hdCBHbWJICi0JCQkJSGVyZm9yZGVyIFN0ci4gMjQ5LTI1MQotCQkJCUxlb3BvbGRzaMO2aGUgTm9yZHJoZWluLVdlc3RmYWxlbiAzMzgxOAotCQkJCUdFUk1BTlkKLQotMDAtMDgtQUQgICAoaGV4KQkJVG95by1MaW54IENvLiwgTHRkLgotMDAwOEFEICAgICAoYmFzZSAxNikJCVRveW8tTGlueCBDby4sIEx0ZC4KLQkJCQlIaXJha2F3YS1DaG8sIENoaXlhZGEta3UsCi0JCQkJVG9reW8gIDEwMi0wMDkzCi0JCQkJSkFQQU4KLQotMDAtMDgtQUUgICAoaGV4KQkJUGFja2V0RnJvbnQgSW50ZXJuYXRpb25hbCBBQgotMDAwOEFFICAgICAoYmFzZSAxNikJCVBhY2tldEZyb250IEludGVybmF0aW9uYWwgQUIKLQkJCQlCb3ggMTIxNwotCQkJCUtpc3RhICAxNjQyOAotCQkJCVNXRURFTgotCi0wMC0wOC1BRiAgIChoZXgpCQlOb3ZhdGVjIENvcnBvcmF0aW9uCi0wMDA4QUYgICAgIChiYXNlIDE2KQkJTm92YXRlYyBDb3Jwb3JhdGlvbgotCQkJCTItMTktMiBOaXNoaS1Hb3RhbmRhCi0JCQkJU2hpbmFnYXdhLWt1IFRva3lvIDE0MS0wMDMxCi0JCQkJSkFQQU4KLQotMDAtMDgtQjAgICAoaGV4KQkJQkt0ZWwgY29tbXVuaWNhdGlvbnMgR21iSAotMDAwOEIwICAgICAoYmFzZSAxNikJCUJLdGVsIGNvbW11bmljYXRpb25zIEdtYkgKLQkJCQlCZW56c3RyYXNzZSA0Ci0JCQkJNDE4MzYgSHVlY2tlbGhvdmVuLUJhYWwgTlJXIDQxODM2Ci0JCQkJR0VSTUFOWQotCi0wMC0wOC1CMSAgIChoZXgpCQlQcm9RdWVudCBTeXN0ZW1zCi0wMDA4QjEgICAgIChiYXNlIDE2KQkJUHJvUXVlbnQgU3lzdGVtcwotCQkJCTY3IEZvcmVzdCBTdHJlZXQKLQkJCQlNYXJsYm9ybyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQjIgICAoaGV4KQkJU0hFTlpIRU4gQ09NUEFTUyBURUNITk9MT0dZIERFVkVMT1BNRU5UIENPLixMVEQKLTAwMDhCMiAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBDT01QQVNTIFRFQ0hOT0xPR1kgREVWRUxPUE1FTlQgQ08uLExURAotCQkJCTR0aCBGbG9vcixCdWlsZGluZyAyMDUsVGFpUmFuIEluZHVzdHJ5Ci0JCQkJJlRyYWRlIFBhcmssRnV0aWFuIERpc3RyaWN0LFNoZW56aGVuCi0JCQkJU2hlbnpoZW4gR1VBTkdET05HIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTA4LUIzICAgKGhleCkJCUZhc3R3ZWwKLTAwMDhCMyAgICAgKGJhc2UgMTYpCQlGYXN0d2VsCi0JCQkJUHJvZnNveXV6bmF5YSAxMDgsCi0JCQkJTW9zY293ICAxMTczMTMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMDgtQjQgICAoaGV4KQkJU1lTUE9MCi0wMDA4QjQgICAgIChiYXNlIDE2KQkJU1lTUE9MCi0JCQkJNHRoIEZsLFNZU1BPTCBCL0QsIEJhbmdiYWUgNCBEb25nLCBTZW9jaAotCQkJCVNlb3VsICAxMzctMDY0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUI1ICAgKGhleCkJCVRBSSBHVUVOIEVOVEVSUFJJU0UgQ08uLCBMVEQKLTAwMDhCNSAgICAgKGJhc2UgMTYpCQlUQUkgR1VFTiBFTlRFUlBSSVNFIENPLiwgTFRECi0JCQkJTjAuNDAwLCAxMEYtNyBIVUFOUEVJIFJELiwKLQkJCQlDSFVORyBMSSBDSVRZIFRXLCBST0MuCi0JCQkJQ0hVTkcgTEkgIDMyMC02MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtQjYgICAoaGV4KQkJUm91dGVGcmVlLCBJbmMuCi0wMDA4QjYgICAgIChiYXNlIDE2KQkJUm91dGVGcmVlLCBJbmMuCi0JCQkJMzQwMCBIaWxsdmlldyBBdmUuIEJsZGcuIDUKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUI3ICAgKGhleCkJCUhJVCBJbmNvcnBvcmF0ZWQKLTAwMDhCNyAgICAgKGJhc2UgMTYpCQlISVQgSW5jb3Jwb3JhdGVkCi0JCQkJNEYsIDgsIExhbmUgMjM1LCBQYW8tQ2hpYW8gUm9hZCwKLQkJCQlTaGluIFRpZW4gVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDgtQjggICAoaGV4KQkJRS5GLiBKb2huc29uCi0wMDA4QjggICAgIChiYXNlIDE2KQkJRS5GLiBKb2huc29uCi0JCQkJMjk5IEpvaG5zb24gQXZlLgotCQkJCVAuTy4gQm94IDEyNDkKLQkJCQlXYXNlY2EgTU4gNTYwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUI5ICAgKGhleCkJCUtBT04gTUVESUEgQ28uLCBMdGQuCi0wMDA4QjkgICAgIChiYXNlIDE2KQkJS0FPTiBNRURJQSBDby4sIEx0ZC4KLQkJCQkjMTEzIEltYWUgMS1Eb25nLCBCdW5kYW5nLUd1Ci0JCQkJU3VuZ25hbS1DaXR5IEt5dW5na2ktRG8gNDYzLTgyOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1CQSAgIChoZXgpCQlFcnNraW5lIFN5c3RlbXMgTHRkCi0wMDA4QkEgICAgIChiYXNlIDE2KQkJRXJza2luZSBTeXN0ZW1zIEx0ZAotCQkJCVNhbHRlciBSb2FkCi0JCQkJRWFzdGZpZWxkIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJU2NhcmJvcm91Z2ggTm9ydGggWW9ya3NoaXJlIFlPMTEgM0RVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtQkIgICAoaGV4KQkJTmV0RXhjZWxsCi0wMDA4QkIgICAgIChiYXNlIDE2KQkJTmV0RXhjZWxsCi0JCQkJMTUzNzUgQmFycmFuY2EgUGt3eSwgI0UtMTA2Ci0JCQkJSXJ2aW5lIENBIDkyNjc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1CQyAgIChoZXgpCQlJbGV2byBBQgotMDAwOEJDICAgICAoYmFzZSAxNikJCUlsZXZvIEFCCi0JCQkJQm94IDE1NjEKLQkJCQlLYXJsc3RhZCBWw6RybWxhbmQgUy02NTEgMjEKLQkJCQlTV0VERU4KLQotMDAtMDgtQkQgICAoaGV4KQkJVEVQRy1VUwotMDAwOEJEICAgICAoYmFzZSAxNikJCVRFUEctVVMKLQkJCQkxMDAgU2ltcGxleCBEcml2ZQotCQkJCVdlc3RtaW5zdGVyIE1BIDAxNDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1CRSAgIChoZXgpCQlYRU5QQUsgTVNBIEdyb3VwCi0wMDA4QkUgICAgIChiYXNlIDE2KQkJWEVOUEFLIE1TQSBHcm91cAotCQkJCUNhcmUgb2Y6IEFnaWxlbnQgVGVjaG5vbG9naWVzCi0JCQkJV2hpdGUgSG91c2UgUm9hZAotCQkJCUlwc3dpY2ggU3VmZm9sayBJcDEgNVBCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDgtQkYgICAoaGV4KQkJQXB0dXMgRWxla3Ryb25payBBQgotMDAwOEJGICAgICAoYmFzZSAxNikJCUFwdHVzIEVsZWt0cm9uaWsgQUIKLQkJCQlGTyBQZXRlcnNvbnMgRyA2Ci0JCQkJNDIxIDMxIFYuIEZyb2x1bmRhCi0JCQkJU1dFREVOCi0KLTAwLTA4LUMwICAgKGhleCkJCUFTQSBTWVNURU1TCi0wMDA4QzAgICAgIChiYXNlIDE2KQkJQVNBIFNZU1RFTVMKLQkJCQlTMjQ1IEtvcmVhIE1hcml0aW1lIFVuaXZlcnNpdHksIDEgRG9uZ3NhCi0JCQkJQnVzYW4gQnVzYW4gTWV0cm9wb2xpdGFuIENpdHkgNjA2LTc5MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1DMSAgIChoZXgpCQlBdmlzdGFyIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0wMDA4QzEgICAgIChiYXNlIDE2KQkJQXZpc3RhciBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotCQkJCTE1ODUxIERhbGxhcyBQa3d5LgotCQkJCVN1aXRlIDYwMAotCQkJCUFkZGlzb24gVFggNzUwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUMyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDhDMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQzMgICAoaGV4KQkJQ29udGV4IEEvUwotMDAwOEMzICAgICAoYmFzZSAxNikJCUNvbnRleCBBL1MKLQkJCQlTdmFuZXZhbmcgMgotCQkJCUFsbGVyb2QgREsgMzQ1MAotCQkJCURFTk1BUksKLQotMDAtMDgtQzQgICAoaGV4KQkJSGlrYXJpIENvLixMdGQuCi0wMDA4QzQgICAgIChiYXNlIDE2KQkJSGlrYXJpIENvLixMdGQuCi0JCQkJNDE4LTQgTWluYW1pbm9kYSBDaGlnZW5vYnUtY2hvCi0JCQkJT25zZW4tZ3VuIEVoaW1lIDc5MS0wMjk3Ci0JCQkJSkFQQU4KLQotMDAtMDgtQzUgICAoaGV4KQkJTGlvbnRlY2ggQ28uLCBMdGQuCi0wMDA4QzUgICAgIChiYXNlIDE2KQkJTGlvbnRlY2ggQ28uLCBMdGQuCi0JCQkJMzA2LCBXb295b3VuZyBUZWNobm8gQ2VudGVyLCAyNzMtMTUsCi0JCQkJU3VuZ3N1MmdhLTNkb25nLCBTdW5nZG9uZy1rdSwKLQkJCQlTZW91bCAgMTMzLTgzMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1DNiAgIChoZXgpCQlQaGlsaXBzIENvbnN1bWVyIENvbW11bmljYXRpb25zCi0wMDA4QzYgICAgIChiYXNlIDE2KQkJUGhpbGlwcyBDb25zdW1lciBDb21tdW5pY2F0aW9ucwotCQkJCVJvdXRlIGQnQW5nZXJzCi0JCQkJNzIwODEgTGUgTWFucwotCQkJCUNlZGV4IDkgIAotCQkJCUZSQU5DRQotCi0wMC0wOC1DNyAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwOEM3ICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1DOCAgIChoZXgpCQlTb25ldGljb20sIEluYy4KLTAwMDhDOCAgICAgKGJhc2UgMTYpCQlTb25ldGljb20sIEluYy4KLQkJCQk0MzI1IFdvb2RsYW5kIFBhcmsgRHJpdmUsIFN1aXRlIDEwMgotCQkJCVdlc3QgTWVsYm91cm5lIEZsb3JpZGEgMzI5MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUM5ICAgKGhleCkJCVRlY2huaVNhdCBEaWdpdGFsIEdtYkgKLTAwMDhDOSAgICAgKGJhc2UgMTYpCQlUZWNobmlTYXQgRGlnaXRhbCBHbWJICi0JCQkJR2V3ZXJiZXBhcmsgTWVyYml0eiBOci4gNQotCQkJCURyZXNkZW4gU2F4b255IDAxMTU2Ci0JCQkJR0VSTUFOWQotCi0wMC0wOC1DQSAgIChoZXgpCQlUd2luSGFuIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwOENBICAgICAoYmFzZSAxNikJCVR3aW5IYW4gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJMTNGLTYsTm8gNzksU2VjIDEsSHNpbiBUYWkgV3UgUkQuLEhzaS1DaAotCQkJCVRhaXBlaSBIc2llbiAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOC1DQiAgIChoZXgpCQlaZXRhIEJyb2FkYmFuZCBJbmMuCi0wMDA4Q0IgICAgIChiYXNlIDE2KQkJWmV0YSBCcm9hZGJhbmQgSW5jLgotCQkJCTY2MCBWaXN0YSBXYXksIFN1aXRlIEIKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQ0MgICAoaGV4KQkJUmVtb3RlYywgSW5jLgotMDAwOENDICAgICAoYmFzZSAxNikJCVJlbW90ZWMsIEluYy4KLQkJCQkxMTQgVW5pb24gVmFsbGV5IFJvYWQKLQkJCQlPYWsgUmlkZ2UgVE4gMzc4MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUNEICAgKGhleCkJCVdpdGgtTmV0IEluYwotMDAwOENEICAgICAoYmFzZSAxNikJCVdpdGgtTmV0IEluYwotCQkJCTRGTCBCJkIgQi9EIDE0MDMtNAotCQkJCUt3YW5neWFuZzEtZG9uZyBEb25nYW4ta3UKLQkJCQlBbnlhbmcgS3lvbmdnaSA0MzEtMDYxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUNFICAgKGhleCkJCUlQTW9iaWxlTmV0IEluYy4KLTAwMDhDRSAgICAgKGJhc2UgMTYpCQlJUE1vYmlsZU5ldCBJbmMuCi0JCQkJMTE5MDkgRSBUZWxlZ3JhcGggUmQuCi0JCQkJU2FudGEgRmUgU3ByaW5ncyBDQSA5MDY3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtQ0YgICAoaGV4KQkJTmlwcG9uIEtvZWkgUG93ZXIgU3lzdGVtcyBDby4sIEx0ZC4KLTAwMDhDRiAgICAgKGJhc2UgMTYpCQlOaXBwb24gS29laSBQb3dlciBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTI5NDAgU2hpbnlvc2hpZGEtY2hvCi0JCQkJS29ob2t1LWt1IFlva29oYW1hIDIyMy04NTA2Ci0JCQkJSkFQQU4KLQotMDAtMDgtRDAgICAoaGV4KQkJTXVzYXNoaSBFbmdpbmVlcmluZyBDby4sIExURC4KLTAwMDhEMCAgICAgKGJhc2UgMTYpCQlNdXNhc2hpIEVuZ2luZWVyaW5nIENvLiwgTFRELgotCQkJCTMtMTEtNywgTmlzaGktc2hpbWJhc2hpCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNS0wMDAzCi0JCQkJSkFQQU4KLQotMDAtMDgtRDEgICAoaGV4KQkJS0FSRUwgSU5DLgotMDAwOEQxICAgICAoYmFzZSAxNikJCUtBUkVMIElOQy4KLQkJCQlPUkdBTklaRSBTQU5BWUkgQk9MR0VTSQotCQkJCUdBWk5FTElMRVIgQ0FEIE5POjEwICBTSU5DQU4KLQkJCQlBTktBUkEgIDA2OTM1Ci0JCQkJVFVSS0VZCi0KLTAwLTA4LUQyICAgKGhleCkJCVpPT00gTmV0d29ya3MgSW5jLgotMDAwOEQyICAgICAoYmFzZSAxNikJCVpPT00gTmV0d29ya3MgSW5jLgotCQkJCTEzRixYaW5MdURhbyBCdWlsZGluZyxOby4xMTc1LE5hbnNoYW4gUm8KLQkJCQlTaGVuIFpoZW4gR3VhbmdEb25nIFByb3ZpbmNlIDUxODA1MgotCQkJCUNISU5BCi0KLTAwLTA4LUQzICAgKGhleCkJCUhlcmN1bGVzIFRlY2hub2xvZ2llcyBTLkEuCi0wMDA4RDMgICAgIChiYXNlIDE2KQkJSGVyY3VsZXMgVGVjaG5vbG9naWVzIFMuQS4KLQkJCQlQbGFjZSBkZSBsJ8OpdG9pbGUKLQkJCQlDYXJlbnRvaXIgQnJldGFnbmUgNTY5MTAKLQkJCQlGUkFOQ0UKLQotMDAtMDgtRDQgICAoaGV4KQkJSW5lb1F1ZXN0IFRlY2hub2xvZ2llcywgSW5jCi0wMDA4RDQgICAgIChiYXNlIDE2KQkJSW5lb1F1ZXN0IFRlY2hub2xvZ2llcywgSW5jCi0JCQkJMTkzMSBXYXNoaW5ndG9uIFN0Ci0JCQkJQ2FudG9uIE1hc3NhY2h1c2V0dHMgMDIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUQ1ICAgKGhleCkJCVZhbmd1YXJkIE5ldHdvcmtzIFNvbHV0aW9ucywgTExDCi0wMDA4RDUgICAgIChiYXNlIDE2KQkJVmFuZ3VhcmQgTmV0d29ya3MgU29sdXRpb25zLCBMTEMKLQkJCQkyNSBGb3JiZXMgQm91bGV2YXJkCi0JCQkJRm94Ym9ybyBNQSAwMjAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRDYgICAoaGV4KQkJSEFTU05FVCBJbmMuCi0wMDA4RDYgICAgIChiYXNlIDE2KQkJSEFTU05FVCBJbmMuCi0JCQkJMkYgTWlzc3kyMDAwIEIvRCA3MjUsIFNvb1Nlby1Eb25nLAotCQkJCUthbmduYW0tS3UKLQkJCQlTZW91bCAgMTM1LTc1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1ENyAgIChoZXgpCQlIT1cgQ09SUE9SQVRJT04KLTAwMDhENyAgICAgKGJhc2UgMTYpCQlIT1cgQ09SUE9SQVRJT04KLQkJCQkxLTExLTE3IENoaXlvZGEKLQkJCQlTYWdhbWloYXJhIEthbmFnYXdhIDIyOS0wMDM3Ci0JCQkJSkFQQU4KLQotMDAtMDgtRDggICAoaGV4KQkJRG93a2V5IE1pY3Jvd2F2ZQotMDAwOEQ4ICAgICAoYmFzZSAxNikJCURvd2tleSBNaWNyb3dhdmUKLQkJCQk0ODIyIE1jR3JhdGggU3RyZWV0Ci0JCQkJVmVudHVyYSBDYSA5MzAwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRDkgICAoaGV4KQkJTWl0YWRlbnNoaSBDby4sTFRECi0wMDA4RDkgICAgIChiYXNlIDE2KQkJTWl0YWRlbnNoaSBDby4sTFRECi0JCQkJMS04LTYgRnVydWljaGkgQXNhbWluYW1pa3UKLQkJCQlIaXJvc2hpbWEgIDczMS0wMTIzCi0JCQkJSkFQQU4KLQotMDAtMDgtREEgICAoaGV4KQkJU29mYVdhcmUgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMDhEQSAgICAgKGJhc2UgMTYpCQlTb2ZhV2FyZSBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTMgSGlsYXpvbiBTdC4KLQkJCQlSYW1hdC1HYW4gIDUyNTIyCi0JCQkJSVNSQUVMCi0KLTAwLTA4LURCICAgKGhleCkJCUNvcnJpZ2VudCBTeXN0ZW1zCi0wMDA4REIgICAgIChiYXNlIDE2KQkJQ29ycmlnZW50IFN5c3RlbXMKLQkJCQkxMjYgWWlnYWwgQWxvbgotCQkJCVRlbCBBdml2ICA2NzQ0MwotCQkJCUlTUkFFTAotCi0wMC0wOC1EQyAgIChoZXgpCQlXaXpuZXQKLTAwMDhEQyAgICAgKGJhc2UgMTYpCQlXaXpuZXQKLQkJCQk1RiBTaW1tdGVjaCBibGRnLiwgMjI4LTMsCi0JCQkJTm9ueWh1biwgS2FuZ25hbQotCQkJCVNlb3VsICAxMzUtODMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUREICAgKGhleCkJCVRlbGVuYSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwOEREICAgICAoYmFzZSAxNikJCVRlbGVuYSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTY3MjUgTWVzYSBSaWRnZSBSb2FkCi0JCQkJU3VpdGUgMjI2Ci0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1ERSAgIChoZXgpCQkzVVAgU3lzdGVtcwotMDAwOERFICAgICAoYmFzZSAxNikJCTNVUCBTeXN0ZW1zCi0JCQkJNiBSZXN1bHRzIFdheQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtREYgICAoaGV4KQkJQWxpc3RlbCBJbmMuCi0wMDA4REYgICAgIChiYXNlIDE2KQkJQWxpc3RlbCBJbmMuCi0JCQkJTWlkb3JpIEJsZGcuIDJGCi0JCQkJMS01LTIwIE5ha2FnYXdhLCBUc3V6dWtpLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTAwMDEKLQkJCQlKQVBBTgotCi0wMC0wOC1FMCAgIChoZXgpCQlBVE8gVGVjaG5vbG9neSBMdGQuCi0wMDA4RTAgICAgIChiYXNlIDE2KQkJQVRPIFRlY2hub2xvZ3kgTHRkLgotCQkJCVJtLiAxMzE0LTEzNDYsIEJsb2NrIEIxLCBZYXUgVG9uZyBJbmQuIEMKLQkJCQlZYXUgVG9uZywgS293bG9vbiwKLQkJCQlIb25nIEtvbmcgIAotCQkJCUhPTkcgS09ORwotCi0wMC0wOC1FMSAgIChoZXgpCQlCYXJpeCBBRwotMDAwOEUxICAgICAoYmFzZSAxNikJCUJhcml4IEFHCi0JCQkJV2llc2Vuc3RyLiAxNwotCQkJCVp1ZXJpY2ggWkggODAwOAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA4LUUyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDhFMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otQmxkIE0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1FMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA4RTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLUJsZCBNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRTQgICAoaGV4KQkJRW52ZW5lcmd5IEluYwotMDAwOEU0ICAgICAoYmFzZSAxNikJCUVudmVuZXJneSBJbmMKLQkJCQk2MzA3IENhcnBpbnRlcmlhIEF2ZQotCQkJCUNhcnBpbnRlcmlhIENBIDkzMDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1FNSAgIChoZXgpCQlJREsgQ29ycG9yYXRpb24KLTAwMDhFNSAgICAgKGJhc2UgMTYpCQlJREsgQ29ycG9yYXRpb24KLQkJCQk2LTctMTAKLQkJCQlDaHVvLVJpbmthbgotCQkJCVlhbWF0byBLYW5hZ2F3YSAyNDItMDAwNwotCQkJCUpBUEFOCi0KLTAwLTA4LUU2ICAgKGhleCkJCUxpdHRsZWZlZXQKLTAwMDhFNiAgICAgKGJhc2UgMTYpCQlMaXR0bGVmZWV0Ci0JCQkJMTMwMDAgR3JlZ2cgU3RyZWV0Ci0JCQkJUG93YXkgQ2FsaWZvcm5pYSA5MjA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRTcgICAoaGV4KQkJU0hJIENvbnRyb2xTeXN0ZW1zLEx0ZC4KLTAwMDhFNyAgICAgKGJhc2UgMTYpCQlTSEkgQ29udHJvbFN5c3RlbXMsTHRkLgotCQkJCTE5LE5hdHVzaW1hCi0JCQkJWW9rb3N1a2EgS2FuYWdhd2EgMjM3LTg1NTUKLQkJCQlKQVBBTgotCi0wMC0wOC1FOCAgIChoZXgpCQlFeGNlbCBNYXN0ZXIgTHRkLgotMDAwOEU4ICAgICAoYmFzZSAxNikJCUV4Y2VsIE1hc3RlciBMdGQuCi0JCQkJUm9vbSBELCAzL0YuLCBZZXVuZyBZaXUgQ2h1bmcgKE5vLiA4KSBJbmQuIEJsZGcuCi0JCQkJMjAgV2FuZyBIb2kgUm9hZAotCQkJCUtvd2xvb24gQmF5IAotCQkJCUhPTkcgS09ORwotCi0wMC0wOC1FOSAgIChoZXgpCQlOZXh0R2lnCi0wMDA4RTkgICAgIChiYXNlIDE2KQkJTmV4dEdpZwotCQkJCTk4MjAtQiBUb3duZSBDZW50cmUgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUVBICAgKGhleCkJCU1vdGlvbiBDb250cm9sIEVuZ2luZWVyaW5nLCBJbmMKLTAwMDhFQSAgICAgKGJhc2UgMTYpCQlNb3Rpb24gQ29udHJvbCBFbmdpbmVlcmluZywgSW5jCi0JCQkJMTEzODAgV2hpdGUgUm9jayBSb2FkCi0JCQkJUmFuY2hvIENvcmRvdmEgQ0EgOTU3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUVCICAgKGhleCkJCVJPTVdpbiBDby4sTHRkLgotMDAwOEVCICAgICAoYmFzZSAxNikJCVJPTVdpbiBDby4sTHRkLgotCQkJCTQwNiBPbWl5YU9odGFrYSBCbGRnLiAxLTEwMwotCQkJCUtpc2hpa2ktY2hvCi0JCQkJU2FpdGFtYSAgMzMwLTA4NDMKLQkJCQlKQVBBTgotCi0wMC0wOC1FQyAgIChoZXgpCQlPcHRpY2FsIFpvbnUgQ29ycG9yYXRpb24KLTAwMDhFQyAgICAgKGJhc2UgMTYpCQlPcHRpY2FsIFpvbnUgQ29ycG9yYXRpb24KLQkJCQkxNTAyOCBEZWxhbm8gU3RyZWV0Ci0JCQkJVmFuIE51eXMgQ0EgOTE0MTEtMjAxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRUQgICAoaGV4KQkJU1QmVCBJbnN0cnVtZW50IENvcnAuCi0wMDA4RUQgICAgIChiYXNlIDE2KQkJU1QmVCBJbnN0cnVtZW50IENvcnAuCi0JCQkJMTYgU2hpbmctR29uZyBSb2FkLCBZdW5nLUt1bmcgSW5kdXN0cmlhbAotCQkJCVl1bmctS3VuZyBUYWluYW4gNzEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOC1FRSAgIChoZXgpCQlMb2dpYyBQcm9kdWN0IERldmVsb3BtZW50Ci0wMDA4RUUgICAgIChiYXNlIDE2KQkJTG9naWMgUHJvZHVjdCBEZXZlbG9wbWVudAotCQkJCTQxMSBXYXNoaW5ndG9uIEF2ZSBOLiBTdWl0ZSAxMDEKLQkJCQlNaW5uZWFwb2xpcyBNaW5uZXNvdGEgNTU0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUVGICAgKGhleCkJCURJQkFMLFMuQS4KLTAwMDhFRiAgICAgKGJhc2UgMTYpCQlESUJBTCxTLkEuCi0JCQkJQXN0aW50emUgS2FsZWEgMjQKLQkJCQlEZXJpbyBWaXpjYXlhIDQ4MTYwCi0JCQkJU1BBSU4KLQotMDAtMDgtRjAgICAoaGV4KQkJTmV4dCBHZW5lcmF0aW9uIFN5c3RlbXMsIEluYy4KLTAwMDhGMCAgICAgKGJhc2UgMTYpCQlOZXh0IEdlbmVyYXRpb24gU3lzdGVtcywgSW5jLgotCQkJCVBPIEJPWCAzMTIwNQotCQkJCURheXRvbiBPSCA0NTQzNy0wMjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1GMSAgIChoZXgpCQlWb2x0YWlyZQotMDAwOEYxICAgICAoYmFzZSAxNikJCVZvbHRhaXJlCi0JCQkJOSBIYW1lbm9maW0gc3QuCi0JCQkJSGVyemVsaWEgIDQ2NzI1Ci0JCQkJSVNSQUVMCi0KLTAwLTA4LUYyICAgKGhleCkJCUMmUyBUZWNobm9sb2d5Ci0wMDA4RjIgICAgIChiYXNlIDE2KQkJQyZTIFRlY2hub2xvZ3kKLQkJCQlDJlMgVmVudHVyZSBCbGRnLiwgTm9uSHl1bi1Eb25nLAotCQkJCTIyMS0xLCBHYW5nTmFtLUd1Ci0JCQkJU0VPVUwgIDEzNS04MjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtRjMgICAoaGV4KQkJV0FOWQotMDAwOEYzICAgICAoYmFzZSAxNikJCVdBTlkKLQkJCQlDRUVJIENhcCBBbHBoYQotCQkJCUF2ZW51ZSBkZSBsJ0V1cm9wZSwgQ2xhcGllcnMKLQkJCQlNb250cGVsbGllciBIZXJhdWx0IDM0OTQwCi0JCQkJRlJBTkNFCi0KLTAwLTA4LUY0ICAgKGhleCkJCUJsdWV0YWtlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDA4RjQgICAgIChiYXNlIDE2KQkJQmx1ZXRha2UgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk2RiwgTm8uIDMzLCBMYW5lIDE1NSwgU2VjLiAzLCBQZWkgU2hlbiBSCi0JCQkJU2FlbiBLZW5nIFNoaWFuZywgVGFpcGVpCi0JCQkJVGFpcGVpIFRhaXdhbiAyMjIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA4LUY1ICAgKGhleCkJCVlFU1RFQ0hOT0xPR1kgQ28uLEx0ZC4KLTAwMDhGNSAgICAgKGJhc2UgMTYpCQlZRVNURUNITk9MT0dZIENvLixMdGQuCi0JCQkJNHRoIEZMIEt5dW5nLUFtIEIvRCAxNTctMjcgU2Ftc3VuZy1Eb25nLAotCQkJCVNlb3VsIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDgtRjYgICAoaGV4KQkJU3VtaXRvbW8gRWxlY3RyaWMgU3lzdGVtIFNvbHV0aW9ucyBDby4sTHRkLgotMDAwOEY2ICAgICAoYmFzZSAxNikJCVN1bWl0b21vIEVsZWN0cmljIFN5c3RlbSBTb2x1dGlvbnMgQ28uLEx0ZC4KLQkJCQlzaGltYXlhIDEtMS0zLCBrb25vaGFuYS1rdQotCQkJCU9zYWthIGNpdHkgT1NBS0EgMTEyLTAwMTQKLQkJCQlKQVBBTgotCi0wMC0wOC1GNyAgIChoZXgpCQlIaXRhY2hpIEx0ZCwgU2VtaWNvbmR1Y3RvciAmYW1wOyBJbnRlZ3JhdGVkIENpcmN1aXRzIEdyCi0wMDA4RjcgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBMdGQsIFNlbWljb25kdWN0b3IgJmFtcDsgSW50ZWdyYXRlZCBDaXJjdWl0cyBHcgotCQkJCTIwLTEgSm9zdWlob24tY2hvdSA1Y2hvbWUKLQkJCQlLb2RhaXJhLXNoaSBUb2t5byAxODctODU4OAotCQkJCUpBUEFOCi0KLTAwLTA4LUY4ICAgKGhleCkJCVVUQyBDQ1MKLTAwMDhGOCAgICAgKGJhc2UgMTYpCQlVVEMgQ0NTCi0JCQkJNzkxIENvbW1lcmNlIEJsdmQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCb2NhIFJhdG9uIEZsb3JpZGEgMzM0ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA4LUY5ICAgKGhleCkJCUVtZXJzb24gTmV0d29yayBQb3dlcgotMDAwOEY5ICAgICAoYmFzZSAxNikJCUVtZXJzb24gTmV0d29yayBQb3dlcgotCQkJCTI5MDAgUy4gRGlhYmxvIFdheSBTdWl0ZSAxOTAKLQkJCQlUZW1wZSBBWiA4NTI4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDgtRkEgICAoaGV4KQkJS2FybCBFLkJyaW5rbWFubiBHbWJICi0wMDA4RkEgICAgIChiYXNlIDE2KQkJS2FybCBFLkJyaW5rbWFubiBHbWJICi0JCQkJRm9lcnN0ZXJ3ZWcgMzYtMzgKLQkJCQlCYXJudHJ1cCBOUlcgRC0zMjY4MwotCQkJCUdFUk1BTlkKLQotMDAtMDgtRkIgICAoaGV4KQkJU29ub1NpdGUsIEluYy4KLTAwMDhGQiAgICAgKGJhc2UgMTYpCQlTb25vU2l0ZSwgSW5jLgotCQkJCTIxOTE5IDMwdGggRHJpdmUgU0UKLQkJCQlCb3RoZWxsIFdBIDk4MDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOC1GQyAgIChoZXgpCQlHaWdhcGhvdG9uIEluYy4KLTAwMDhGQyAgICAgKGJhc2UgMTYpCQlHaWdhcGhvdG9uIEluYy4KLQkJCQlZT0tPS1VSQSBTSElOREVONDAwCi0JCQkJT1lBTUEgVE9USUdJIDMyMy04NTU4Ci0JCQkJSkFQQU4KLQotMDAtMDgtRkQgICAoaGV4KQkJQmx1ZUtvcmVhIENvLiwgTHRkLgotMDAwOEZEICAgICAoYmFzZSAxNikJCUJsdWVLb3JlYSBDby4sIEx0ZC4KLQkJCQkzRiwgc2Vqb25nIEJ1aWxkaW5nLCAzNzktMTUsIFNlb2t5by1Eb25nCi0JCQkJTWFwby1LdSwKLQkJCQlTZW91bCAgMTIxLTgzOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOC1GRSAgIChoZXgpCQlVTklLIEMmQyBDby4sTHRkLgotMDAwOEZFICAgICAoYmFzZSAxNikJCVVOSUsgQyZDIENvLixMdGQuCi0JCQkJNzA2LTEzIFVOSUsgQkxERyAxN0YKLQkJCQlZRU9LLVNBTSBLQU5HLU5BTSBHVQotCQkJCVNFT1VMICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA4LUZGICAgKGhleCkJCVRyaWxvZ3kgQ29tbXVuaWNhdGlvbnMgTHRkCi0wMDA4RkYgICAgIChiYXNlIDE2KQkJVHJpbG9neSBDb21tdW5pY2F0aW9ucyBMdGQKLQkJCQkyNiBGb2N1cyBXYXkKLQkJCQlXYWx3b3J0aCBFc3RhdGUKLQkJCQlBbmRvdmVyIEhhbXBzaGlyZSBTUDEwIDVOWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LTAwICAgKGhleCkJCVRNVAotMDAwOTAwICAgICAoYmFzZSAxNikJCVRNVAotCQkJCTExIEtpcnlhdCBNYWRhLCBQT0IgNDUxOTkKLQkJCQlKZXJ1c2FsZW0gIDkxNDUwCi0JCQkJSVNSQUVMCi0KLTAwLTA5LTAxICAgKGhleCkJCVNoZW56aGVuIFNoaXh1bnRvbmcgSW5mb3JtYXRpb24gJiBUZWNobm9saWd5IENvCi0wMDA5MDEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU2hpeHVudG9uZyBJbmZvcm1hdGlvbiAmIFRlY2hub2xpZ3kgQ28KLQkJCQlSb29tIDQwMyw2MTcgQmxkZztCYWd1YSAxIFJvYWQgLFNoZW56aGVuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAyOQotCQkJCUNISU5BCi0KLTAwLTA5LTAyICAgKGhleCkJCVJlZGxpbmUgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwOTAyICAgICAoYmFzZSAxNikJCVJlZGxpbmUgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTMwMiBUb3duIENlbnRyZSBCbHZkCi0JCQkJU3VpdGUgMTAwCi0JCQkJTWFya2hhbSBPTiBMM1IgMEU4Ci0JCQkJQ0FOQURBCi0KLTAwLTA5LTAzICAgKGhleCkJCVBhbmFzYXMsIEluYwotMDAwOTAzICAgICAoYmFzZSAxNikJCVBhbmFzYXMsIEluYwotCQkJCTE1MzMzIEpvaG4gRiBLZW5uZWR5IEJsdmQsIFN1aXRlIDQwMAotCQkJCUhvdXN0b24gVFggNzcwMzItMjM1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktMDQgICAoaGV4KQkJTU9ORElBTCBlbGVjdHJvbmljCi0wMDA5MDQgICAgIChiYXNlIDE2KQkJTU9ORElBTCBlbGVjdHJvbmljCi0JCQkJRWdnZWxzYmVyZyA3MwotCQkJCUVnZ2Vsc2JlcmcgT2Jlcm9lc3RlcnJlaWNoIDUxNDIKLQkJCQlBVVNUUklBCi0KLTAwLTA5LTA1ICAgKGhleCkJCWlURUMgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMDkwNSAgICAgKGJhc2UgMTYpCQlpVEVDIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJMTYwLTEsIEthcmFrLURvbmcsIFNvbmdwYS1HdQotCQkJCVNlb3VsICAxMzgtODA5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LTA2ICAgKGhleCkJCUVzdGVlbSBOZXR3b3JrcwotMDAwOTA2ICAgICAoYmFzZSAxNikJCUVzdGVlbSBOZXR3b3JrcwotCQkJCTRGLCBOby45MDAsIFlpc2hhbiBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTAwLTA5LTA3ICAgKGhleCkJCUNocnlzYWxpcyBEZXZlbG9wbWVudAotMDAwOTA3ICAgICAoYmFzZSAxNikJCUNocnlzYWxpcyBEZXZlbG9wbWVudAotCQkJCTgxMjUgUml2ZXIgRHIuIFN1aXRlIDEwMAotCQkJCU1vcnRvbiBHcm92ZSBJTCA2MDA1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktMDggICAoaGV4KQkJVlRlY2ggVGVjaG5vbG9neSBDb3JwLgotMDAwOTA4ICAgICAoYmFzZSAxNikJCVZUZWNoIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkyRi0yLCBOby4gMTI0LCBDaHVuZyBDaGVuZyBSZC4sIFNoaWhsaW4KLQkJCQlUYWlwZWkgIDExMTQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS0wOSAgIChoZXgpCQlUZWxlbm9yIENvbm5lY3QgQS9TCi0wMDA5MDkgICAgIChiYXNlIDE2KQkJVGVsZW5vciBDb25uZWN0IEEvUwotCQkJCUVsbGVnYWFyZHZlaiAyNUwKLQkJCQlTw7huZGVyYm9yZyBBbHMgNjQwMAotCQkJCURFTk1BUksKLQotMDAtMDktMEEgICAoaGV4KQkJU25lZEZhciBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwOTBBICAgICAoYmFzZSAxNikJCVNuZWRGYXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxNUZMLiwgTm8uODY2LTIsIEp1bmcgSmVuZyBSZC4sCi0JCQkJSnVuZ2hlIFRhaXBlaSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTBCICAgKGhleCkJCU1UTCAgSW5zdHJ1bWVudHMgUExDCi0wMDA5MEIgICAgIChiYXNlIDE2KQkJTVRMICBJbnN0cnVtZW50cyBQTEMKLQkJCQlQb3dlciBDb3VydAotCQkJCUx1dG9uIEJlZGZvcmRzaGlyZSBMVTEgM0pKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDktMEMgICAoaGV4KQkJTWF5ZWthd2EgTWZnLiBDby4gTHRkLgotMDAwOTBDICAgICAoYmFzZSAxNikJCU1heWVrYXdhIE1mZy4gQ28uIEx0ZC4KLQkJCQkxNjgyNSBJSCAzNSBOb3J0aAotCQkJCVNlbG1hIFRleGFzIDc4MTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0wRCAgIChoZXgpCQlMRUFERVIgRUxFQ1RST05JQ1MgQ09SUC4KLTAwMDkwRCAgICAgKGJhc2UgMTYpCQlMRUFERVIgRUxFQ1RST05JQ1MgQ09SUC4KLQkJCQkyLTYtMzMsIFRTVU5BU0hJTUEtSElHQVNISQotCQkJCUtPSE9LVS1LVSBZT0tPSEFNQSAyMjMtODUwNQotCQkJCUpBUEFOCi0KLTAwLTA5LTBFICAgKGhleCkJCUhlbGl4IFRlY2hub2xvZ3kgSW5jLgotMDAwOTBFICAgICAoYmFzZSAxNikJCUhlbGl4IFRlY2hub2xvZ3kgSW5jLgotCQkJCTVGLCBOby4gNiwgU2VjIDEsIEp1bmctU2hpbmcgUmQuLCBXdWd1LVMKLQkJCQlUYWlwZWkgIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMEYgICAoaGV4KQkJRm9ydGluZXQgSW5jLgotMDAwOTBGICAgICAoYmFzZSAxNikJCUZvcnRpbmV0IEluYy4KLQkJCQkxMDkwIEtpZmVyIFJvYWQKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTEwICAgKGhleCkJCVNpbXBsZSBBY2Nlc3MgSW5jLgotMDAwOTEwICAgICAoYmFzZSAxNikJCVNpbXBsZSBBY2Nlc3MgSW5jLgotCQkJCTYwMCBNY0NhZmZyZXkgU3RyZWV0Ci0JCQkJU3QtTGF1cmVudCBRdWViZWMgSDRUMU4xCi0JCQkJQ0FOQURBCi0KLTAwLTA5LTExICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDkxMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTEyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDkxMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTEzICAgKGhleCkJCVN5c3RlbUsgQ29ycG9yYXRpb24KLTAwMDkxMyAgICAgKGJhc2UgMTYpCQlTeXN0ZW1LIENvcnBvcmF0aW9uCi0JCQkJMjM4LTkgSGlnYXNoaSAxLCBLaXRhIDE1LCBIaWdhc2hpLWt1Ci0JCQkJU2FwcG9ybyBIb2trYWlkbyAwNjUtMDAxNQotCQkJCUpBUEFOCi0KLTAwLTA5LTE0ICAgKGhleCkJCUNPTVBVVFJPTFMgSU5DLgotMDAwOTE0ICAgICAoYmFzZSAxNikJCUNPTVBVVFJPTFMgSU5DLgotCQkJCTIyMSBCYXJrIERyaXZlCi0JCQkJSGFydmV5IExBIDcwMDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0xNSAgIChoZXgpCQlDQVMgQ29ycC4KLTAwMDkxNSAgICAgKGJhc2UgMTYpCQlDQVMgQ29ycC4KLQkJCQkjMTksIEdhbmFwLVJpCi0JCQkJS3dhbmdndWstTXl1bgotCQkJCVlhbmdqdS1HdW4gS3l1bmdnaS1EbyA0ODItODQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LTE2ICAgKGhleCkJCUxpc3RtYW4gSG9tZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMDkxNiAgICAgKGJhc2UgMTYpCQlMaXN0bWFuIEhvbWUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTEwMCBOb3J0aG1lYWRvdyBQYXJrd2F5Ci0JCQkJU3VpdGUgMTA4Ci0JCQkJUm9zd2VsbCBHZW9yZ2lhIDMwMDc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0xNyAgIChoZXgpCQlXRU0gVGVjaG5vbG9neSBJbmMKLTAwMDkxNyAgICAgKGJhc2UgMTYpCQlXRU0gVGVjaG5vbG9neSBJbmMKLQkJCQk4Ri0yLCBObyAzODYsIFNlYyA1IE5hbmppbmcgRWFzdCBSb2FkLgotCQkJCVRhaXBlaSAgMTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS0xOCAgIChoZXgpCQlTQU1TVU5HIFRFQ0hXSU4gQ08uLExURAotMDAwOTE4ICAgICAoYmFzZSAxNikJCVNBTVNVTkcgVEVDSFdJTiBDTy4sTFRECi0JCQkJNDIKLQkJCQlTVU5HSlVET05HCi0JCQkJQ0hBTkdXT04gS1lPTkdOQU0gNjQxLTcxNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0xOSAgIChoZXgpCQlNRFMgR2F0ZXdheXMKLTAwMDkxOSAgICAgKGJhc2UgMTYpCQlNRFMgR2F0ZXdheXMKLQkJCQlDbG9uc2hhdWdoIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJQ2xvbnNoYXVnaAotCQkJCUR1YmxpbiAxNyAgCi0JCQkJSVJFTEFORAotCi0wMC0wOS0xQSAgIChoZXgpCQlNYWNhdCBPcHRpY3MgJiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMDkxQSAgICAgKGJhc2UgMTYpCQlNYWNhdCBPcHRpY3MgJiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkxNS9GLiwgTWFjYXQgQ2VudGVyLCBOby4gNjMgTWFjYXQgUm9hZAotCQkJCUh1aXpob3UgR3Vhbmdkb25nIDUxNjAwMQotCQkJCUNISU5BCi0KLTAwLTA5LTFCICAgKGhleCkJCURpZ2l0YWwgR2VuZXJhdGlvbiBJbmMuCi0wMDA5MUIgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBHZW5lcmF0aW9uIEluYy4KLQkJCQk1RiwgSG8tU2FtIEIvRCwgIzMwLTMsIEJvbmdjaHVuNi1Eb25nCi0JCQkJS3dhbmFrLUt1LCBTZW91bCAxNTEtMDg5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LTFDICAgKGhleCkJCUNhY2hlVmlzaW9uLCBJbmMKLTAwMDkxQyAgICAgKGJhc2UgMTYpCQlDYWNoZVZpc2lvbiwgSW5jCi0JCQkJMTk5MCBDb25jb3Vyc2UgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktMUQgICAoaGV4KQkJUHJvdGVhbSBDb21wdXRlciBDb3Jwb3JhdGlvbgotMDAwOTFEICAgICAoYmFzZSAxNikJCVByb3RlYW0gQ29tcHV0ZXIgQ29ycG9yYXRpb24KLQkJCQk3RiwgTm8uIDE1Ny4gU2VjdGlvbiAyIFRhLVR1bmcgUmQKLQkJCQlIc2ktQ2hpaCBUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS0xRSAgIChoZXgpCQlGaXJzdGVjaCBUZWNobm9sb2d5IENvcnAuCi0wMDA5MUUgICAgIChiYXNlIDE2KQkJRmlyc3RlY2ggVGVjaG5vbG9neSBDb3JwLgotCQkJCThmbC4sTm8uMjY3LHNlY3Rpb24gNCxIc2luLVlpIFJkLiAsRGEtQW4KLQkJCQlUYWlwZWkgIDEwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMUYgICAoaGV4KQkJQSZhbXA7RCBDby4sIEx0ZC4KLTAwMDkxRiAgICAgKGJhc2UgMTYpCQlBJmFtcDtEIENvLiwgTHRkLgotCQkJCTEtMjQzIEFzYWhpCi0JCQkJS2l0YW1vdG8tc2hpIFNhaXRhbWEgMzY0LTg1ODUKLQkJCQlKQVBBTgotCi0wMC0wOS0yMCAgIChoZXgpCQlFcG9YIENPTVBVVEVSIENPLixMVEQuCi0wMDA5MjAgICAgIChiYXNlIDE2KQkJRXBvWCBDT01QVVRFUiBDTy4sTFRELgotCQkJCTEwdGggRmxvb3IsIE5vLjM0NixDaHVuZyBTYW4gUmQuLFNlYy4yLAotCQkJCUNodW5nIEhvIENpdHksVGFpcGVpIEhzaWVuICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTIxICAgKGhleCkJCVBsYW5tZWNhIE95Ci0wMDA5MjEgICAgIChiYXNlIDE2KQkJUGxhbm1lY2EgT3kKLQkJCQlBc2VudGFqYW5rYXR1IDYKLQkJCQlIRUxTSU5LSSAgMDA4MTAgSEVMU0lOCi0JCQkJRklOTEFORAotCi0wMC0wOS0yMiAgIChoZXgpCQlUU1QgQmlvbWV0cmljcyBHbWJICi0wMDA5MjIgICAgIChiYXNlIDE2KQkJVFNUIEJpb21ldHJpY3MgR21iSAotCQkJCU1vZWhsc3RyLiAzOQotCQkJCTgxNjc1IE11bmljaCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTA5LTIzICAgKGhleCkJCUhlYW1hbiBTeXN0ZW0gQ28uLCBMdGQKLTAwMDkyMyAgICAgKGJhc2UgMTYpCQlIZWFtYW4gU3lzdGVtIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgTTYsTmF0aW9uYWwgSGktdGVjaCAmIEluZHVzCi0JCQkJQ2hhbmdzaGEgSHVuYW4gUHJvdmluY2UgNDEwMDEzCi0JCQkJQ0hJTkEKLQotMDAtMDktMjQgICAoaGV4KQkJVGVsZWJhdSBHbWJICi0wMDA5MjQgICAgIChiYXNlIDE2KQkJVGVsZWJhdSBHbWJICi0JCQkJQW0gS3JhZWhlbmJlcmcgMQotCQkJCVdhbGRlY2stU2FjaHNlbmhhdXNlbiBHZXJtYW55IDM0NTEzCi0JCQkJR0VSTUFOWQotCi0wMC0wOS0yNSAgIChoZXgpCQlWU04gU3lzdGVtZW4gQlYKLTAwMDkyNSAgICAgKGJhc2UgMTYpCQlWU04gU3lzdGVtZW4gQlYKLQkJCQlLZWl6ZXJzdmVsZCA4MwotCQkJCVZlbnJheSBMaW1idXJnIDU4MDMgQVAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wOS0yNiAgIChoZXgpCQlZT0RBIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDA5MjYgICAgIChiYXNlIDE2KQkJWU9EQSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTJGLCBOby4zLTEsIEluZHVzdHJ5IEVhc3QgUm9hZCBJWCwKLQkJCQlIc2luY2h1IFNjaWVuY2UgQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMjcgICAoaGV4KQkJVE9ZT0tFSUtJIENPLixMVEQuCi0wMDA5MjcgICAgIChiYXNlIDE2KQkJVE9ZT0tFSUtJIENPLixMVEQuCi0JCQkJMTctMTAtMyxTaGltb3Npbmp5bwotCQkJCUhpZ2FzaGl5b2RvZ2F3YS1LdQotCQkJCU9zYWthICA1MzMtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTA5LTI4ICAgKGhleCkJCVRlbGVjb3JlCi0wMDA5MjggICAgIChiYXNlIDE2KQkJVGVsZWNvcmUKLQkJCQkxODAwIE5vcnRoIEdsZW52aWxsZQotCQkJCVN1aXRlIDExNgotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTI5ICAgKGhleCkJCVNhbnlvIEluZHVzdHJpZXMgKFVLKSBMaW1pdGVkCi0wMDA5MjkgICAgIChiYXNlIDE2KQkJU2FueW8gSW5kdXN0cmllcyAoVUspIExpbWl0ZWQKLQkJCQlTY2hvb2wgUm9hZAotCQkJCUxvd2VzdG9mdCBTdWZmb2xrIE5SMzMgOU5BCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDktMkEgICAoaGV4KQkJTVlURUNTIENvLixMdGQuCi0wMDA5MkEgICAgIChiYXNlIDE2KQkJTVlURUNTIENvLixMdGQuCi0JCQkJMS0xMi0zOSwgVGFpc2hpZG91Ci0JCQkJU2V0YWdheWEta3UgVG9reW8gMTU0LTAwMDQKLQkJCQlKQVBBTgotCi0wMC0wOS0yQiAgIChoZXgpCQlpUXN0b3IgTmV0d29ya3MsIEluYy4KLTAwMDkyQiAgICAgKGJhc2UgMTYpCQlpUXN0b3IgTmV0d29ya3MsIEluYy4KLQkJCQkyMDAxIENvcnBvcmF0ZSBDZW50ZXIgRHJpdmUKLQkJCQlOZXdidXJ5IFBhcmsgQ0EgOTEzMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTJDICAgKGhleCkJCUhpdHBvaW50IEluYy4KLTAwMDkyQyAgICAgKGJhc2UgMTYpCQlIaXRwb2ludCBJbmMuCi0JCQkJTm8uNywgRmVubGlhbywgMm5kIEluZHVzdHJpYWwgUGFyaywgTGluawotCQkJCVRhaXBlaSAgMjQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS0yRCAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLTAwMDkyRCAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4yMyBYaW5naHVhIFJvYWQsCi0JCQkJVGFveXVhbiBDaXR5LAotCQkJCVRhb3l1YW4gQ291bnR5ICAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS0yRSAgIChoZXgpCQlCJlRlY2ggU3lzdGVtIEluYy4KLTAwMDkyRSAgICAgKGJhc2UgMTYpCQlCJlRlY2ggU3lzdGVtIEluYy4KLQkJCQkjNjAxLCBTZW8tSnVuZyBCL0QsIDgzMC0yNCwgWW91a3NhbS1Eb25nCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0yRiAgIChoZXgpCQlBa29tIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMDkyRiAgICAgKGJhc2UgMTYpCQlBa29tIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk1RiwgTm8uIDMyMywgWWFuZy1HdWFuZyBTdC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktMzAgICAoaGV4KQkJQWVyb0NvbmNpZXJnZSBJbmMuCi0wMDA5MzAgICAgIChiYXNlIDE2KQkJQWVyb0NvbmNpZXJnZSBJbmMuCi0JCQkJMTAyNTYgWW9uZ2UgU3QuCi0JCQkJUmljaG1vbmQgSGlsbCBPbnQuIEw0QyAzQjcKLQkJCQlDQU5BREEKLQotMDAtMDktMzEgICAoaGV4KQkJRnV0dXJlIEludGVybmV0LCBJbmMuCi0wMDA5MzEgICAgIChiYXNlIDE2KQkJRnV0dXJlIEludGVybmV0LCBJbmMuCi0JCQkJMTEndGggRmxvb3IgU2FtaG9tb29sc2FuIEJsZGcsIEIvQmxkZywgMgotCQkJCVlhbmdqZWEgRG9uZywgU2VvY2hvIEt1Ci0JCQkJU2VvdWwgS3l1bmctS2kgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0zMiAgIChoZXgpCQlPbW5pbHV4Ci0wMDA5MzIgICAgIChiYXNlIDE2KQkJT21uaWx1eAotCQkJCTEzMCBXLiBVbmlvbiBTdC4KLQkJCQlQYXNhZGVuYSBDQSA5MTEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktMzMgICAoaGV4KQkJT3BoaXQgQ28uTHRkLgotMDAwOTMzICAgICAoYmFzZSAxNikJCU9waGl0IENvLkx0ZC4KLQkJCQkzRi4gU3VudGVjaG5vdmlsLCA1LTI3ICBNYW5ncG8tRG9uZyAsCi0JCQkJWWVvbmd0b25nLUd1LCBTdXdvbi1DaXR5LCAKLQkJCQlLeXVuZ2tpLURvICAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LTM0ICAgKGhleCkJCURyZWFtLU11bHRpbWVkaWEtVHYgR21iSAotMDAwOTM0ICAgICAoYmFzZSAxNikJCURyZWFtLU11bHRpbWVkaWEtVHYgR21iSAotCQkJCUJydWVja3N0ci4gMjkKLQkJCQlNZW5kZW4gU2F1ZXJsYW5kIDU4NzA2Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS0zNSAgIChoZXgpCQlTYW5kdmluZSBJbmNvcnBvcmF0ZWQKLTAwMDkzNSAgICAgKGJhc2UgMTYpCQlTYW5kdmluZSBJbmNvcnBvcmF0ZWQKLQkJCQkxNzAgQ29sdW1iaWEgU3QuIFcuCi0JCQkJV2F0ZXJsb28gT04gTjJMIDNMMwotCQkJCUNBTkFEQQotCi0wMC0wOS0zNiAgIChoZXgpCQlJcGV0cm9uaWsgR21iSCAmIENvLktHCi0wMDA5MzYgICAgIChiYXNlIDE2KQkJSXBldHJvbmlrIEdtYkggJiBDby5LRwotCQkJCUphZWdlcndlZyAxCi0JCQkJQmFkZW4tQmFkZW4gQmFkZW4tV3VlcnR0ZW1iZXJnIDc2NTMyCi0JCQkJR0VSTUFOWQotCi0wMC0wOS0zNyAgIChoZXgpCQlJbnZlbnRlYyBBcHBsaWFuY2UgQ29ycAotMDAwOTM3ICAgICAoYmFzZSAxNikJCUludmVudGVjIEFwcGxpYW5jZSBDb3JwCi0JCQkJMTEzLCBXdWd1bmcgMSBSRC4sIFd1S3UgSW5kdXN0cmlhbCBuUGFyawotCQkJCVd1S3UgU2hpYW5nLCBUYWlwZWkgSHNpZW4gMjQ4LCBUYWl3YW4gLAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS0zOCAgIChoZXgpCQlBbGxvdCBDb21tdW5pY2F0aW9ucwotMDAwOTM4ICAgICAoYmFzZSAxNikJCUFsbG90IENvbW11bmljYXRpb25zCi0JCQkJSGFuYWdhciAyMiBzdCcKLQkJCQlIb2QtSGFzaGFyb24gIDQ1ODAwCi0JCQkJSVNSQUVMCi0KLTAwLTA5LTM5ICAgKGhleCkJCVNoaWJhU29rdSBDby4sTHRkLgotMDAwOTM5ICAgICAoYmFzZSAxNikJCVNoaWJhU29rdSBDby4sTHRkLgotCQkJCTYtOCBTaGluYmFzaGkgNC1jaG9tZQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDUtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTA5LTNBICAgKGhleCkJCU1vbGV4IEZpYmVyIE9wdGljcwotMDAwOTNBICAgICAoYmFzZSAxNikJCU1vbGV4IEZpYmVyIE9wdGljcwotCQkJCTUyMjQgS2F0cmluZSBBdmVudWUKLQkJCQlEb3duZXJzIEdyb3ZlIElMIDYwNTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS0zQiAgIChoZXgpCQlIWVVOREFJIE5FVFdPUktTIElOQy4KLTAwMDkzQiAgICAgKGJhc2UgMTYpCQlIWVVOREFJIE5FVFdPUktTIElOQy4KLQkJCQlTQU4gMTM2LTEgIEFNSS1SSSAgQlVCQUxfRVVQCi0JCQkJSUNIT04gS1lVTkdLSS1ETyA0NjctNzAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LTNDICAgKGhleCkJCUphY3F1ZXMgVGVjaG5vbG9naWVzIFAvTAotMDAwOTNDICAgICAoYmFzZSAxNikJCUphY3F1ZXMgVGVjaG5vbG9naWVzIFAvTAotCQkJCTI2OCBNb250YWd1ZSBSZAotCQkJCVdlc3QgRW5kIFF1ZWVuc2xhbmQgNDEwMQotCQkJCUFVU1RSQUxJQQotCi0wMC0wOS0zRCAgIChoZXgpCQlOZXdpc3lzLEluYy4KLTAwMDkzRCAgICAgKGJhc2UgMTYpCQlOZXdpc3lzLEluYy4KLQkJCQk2MjAwIEJyaWRnZXBvaW50IFBhcmt3YXkKLQkJCQlCdWlkaW5nIElWLCBTdWl0ZSAxMDAKLQkJCQlBdXN0aW4gVFggNzg3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTNFICAgKGhleCkJCUMmSSBUZWNobm9sb2dpZXMKLTAwMDkzRSAgICAgKGJhc2UgMTYpCQlDJkkgVGVjaG5vbG9naWVzCi0JCQkJIzMwMyBLd2FuYm8gUGxhemEgQi9ELCAxNDY3LTIKLQkJCQlLd2FueWFuZy1Eb25nLCBEb25nYW4tS3UKLQkJCQlBbnlhbmctU2hpIEt5dW5nZ2ktRG8gNDMxLTgwOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS0zRiAgIChoZXgpCQlEb3VibGUtV2luIEVudGVycGlyc2UgQ08uLCBMVEQKLTAwMDkzRiAgICAgKGJhc2UgMTYpCQlEb3VibGUtV2luIEVudGVycGlyc2UgQ08uLCBMVEQKLQkJCQlOTy4zMDAsIFNlYyAxLCBDaHVuZyBGZW5nIFJkLgotCQkJCVBpbmcgQ2hlbiBDaXR5IFRhb3l1YW4gSHNpZW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS00MCAgIChoZXgpCQlBR0ZFTyBHbWJIICYgQ28uIEtHCi0wMDA5NDAgICAgIChiYXNlIDE2KQkJQUdGRU8gR21iSCAmIENvLiBLRwotCQkJCVBvc3RmYWNoIDE0MDEwNwotCQkJCUJpZWxlZmVsZCBSaGluZSBXZXN0ZmFsaWEgMzM2MjEKLQkJCQlHRVJNQU5ZCi0KLTAwLTA5LTQxICAgKGhleCkJCUFsbGllZCBUZWxlc2lzIEsuSy4KLTAwMDk0MSAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcyBLLksuCi0JCQkJVGVjaG5pY2FsIENlbnRlci9Oby4yIFRPQyBCbGRnLgotCQkJCTctMjEtMTEgTmlzaGktR290YW5kYQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAzMQotCQkJCUpBUEFOCi0KLTAwLTA5LTQyICAgKGhleCkJCVdpcmVsZXNzIFRlY2hub2xvZ2llcywgSW5jCi0wMDA5NDIgICAgIChiYXNlIDE2KQkJV2lyZWxlc3MgVGVjaG5vbG9naWVzLCBJbmMKLQkJCQlPaG1vcmkgTWl0c3ViaXNoaSBCbGRnLiwgN0YsIFNhbm5vaCAyLWNob21lCi0JCQkJT2h0YS1rdQotCQkJCVRva3lvICAxNDMtMDAyMwotCQkJCUpBUEFOCi0KLTAwLTA5LTQzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDk0MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTQ0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDk0NCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTQ1ICAgKGhleCkJCVBhbG1taWNybyBDb21tdW5pY2F0aW9ucyBJbmMKLTAwMDk0NSAgICAgKGJhc2UgMTYpCQlQYWxtbWljcm8gQ29tbXVuaWNhdGlvbnMgSW5jCi0JCQkJNjMwIEFsZGVyIERyCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTQ2ICAgKGhleCkJCUNsdXN0ZXIgTGFicyBHbWJICi0wMDA5NDYgICAgIChiYXNlIDE2KQkJQ2x1c3RlciBMYWJzIEdtYkgKLQkJCQlEYXVlcndhbGR3ZWcgMQotCQkJCTE0MDU1IEJlcmxpbgotCQkJCUJlcmxpbiBCZXJsaW4gMTQwNTUKLQkJCQlHRVJNQU5ZCi0KLTAwLTA5LTQ3ICAgKGhleCkJCUF6dGVrLCBJbmMuCi0wMDA5NDcgICAgIChiYXNlIDE2KQkJQXp0ZWssIEluYy4KLQkJCQkyMyBTcGVjdHJ1bSBQb2ludGUgIzIwOQotCQkJCUxha2UgRm9yZXN0IENhbGlmb3JuaWEgOTI2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTQ4ICAgKGhleCkJCVZpc3RhIENvbnRyb2wgU3lzdGVtcywgQ29ycC4KLTAwMDk0OCAgICAgKGJhc2UgMTYpCQlWaXN0YSBDb250cm9sIFN5c3RlbXMsIENvcnAuCi0JCQkJMjAwMSBXZXN0IE1lbGluZGEgTGFuZQotCQkJCVBob2VuaXggQVogODUwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTQ5ICAgKGhleCkJCUdseXBoIFRlY2hub2xvZ2llcyBJbmMuCi0wMDA5NDkgICAgIChiYXNlIDE2KQkJR2x5cGggVGVjaG5vbG9naWVzIEluYy4KLQkJCQk3MzUgVy4gQ2xpbnRvbiBTdHJlZXQKLQkJCQlJdGhhY2EgTlkgMTQ4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTRBICAgKGhleCkJCUhvbWVuZXQgQ29tbXVuaWNhdGlvbnMKLTAwMDk0QSAgICAgKGJhc2UgMTYpCQlIb21lbmV0IENvbW11bmljYXRpb25zCi0JCQkJSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQlOYXRpb25hbCBUZWNobm9sb2dpY2FsIFBhcmsKLQkJCQlMaW1lcmljayAgCi0JCQkJSVJFTEFORAotCi0wMC0wOS00QiAgIChoZXgpCQlGaWxsRmFjdG9yeSBOVgotMDAwOTRCICAgICAoYmFzZSAxNikJCUZpbGxGYWN0b3J5IE5WCi0JCQkJU2NoYWxpZW5ob2V2ZWRyZWVmIDIwQgotCQkJCUItMjgwMCBNZWNoZWxlbiAgCi0JCQkJQkVMR0lVTQotCi0wMC0wOS00QyAgIChoZXgpCQlDb21tdW5pY2F0aW9uIFdlYXZlciBDby4sTHRkLgotMDAwOTRDICAgICAoYmFzZSAxNikJCUNvbW11bmljYXRpb24gV2VhdmVyIENvLixMdGQuCi0JCQkJMX4zIENPV0VBVkVSIEIvRCA0NDYtMTksCi0JCQkJU0VPR1lPLURPTkcsIE1BUE8tR1UKLQkJCQlTRU9VTCAgMTIxLTg0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS00RCAgIChoZXgpCQlCcmFpbnRyZWUgQ29tbXVuaWNhdGlvbnMgUHR5IEx0ZAotMDAwOTREICAgICAoYmFzZSAxNikJCUJyYWludHJlZSBDb21tdW5pY2F0aW9ucyBQdHkgTHRkCi0JCQkJTGV2ZWwgMSwgNiBDb3JkZWxpYSBTdAotCQkJCVNvdXRoIEJyaXNiYW5lIFFMRCA0MTAxCi0JCQkJQVVTVFJBTElBCi0KLTAwLTA5LTRFICAgKGhleCkJCUJBUlRFQ0ggU1lTVEVNUyBJTlRFUk5BVElPTkFMLCBJTkMKLTAwMDk0RSAgICAgKGJhc2UgMTYpCQlCQVJURUNIIFNZU1RFTVMgSU5URVJOQVRJT05BTCwgSU5DCi0JCQkJMjUxIE5ham9sZXMgUmQgU3VpdGUgQQotCQkJCU1pbGxlcnN2aWxsZSBNYXJ5bGFuZCAyMTEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNEYgICAoaGV4KQkJZWxtZWd0IEdtYkggJiBDby4gS0cKLTAwMDk0RiAgICAgKGJhc2UgMTYpCQllbG1lZ3QgR21iSCAmIENvLiBLRwotCQkJCUtvbW11bmlrYXRpb25zdGVjaG5pawotCQkJCVZvZWhydW1lciBTdHIuIDMwCi0JCQkJUGVpbmUgTmllZGVyc2FjaHNlbiBELTMxMjI4Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS01MCAgIChoZXgpCQlJbmRlcGVuZGVudCBTdG9yYWdlIENvcnBvcmF0aW9uCi0wMDA5NTAgICAgIChiYXNlIDE2KQkJSW5kZXBlbmRlbnQgU3RvcmFnZSBDb3Jwb3JhdGlvbgotCQkJCTYyNzMgTW9uYXJjaCBQYXJrIFBsYWNlCi0JCQkJTml3b3QgQ29sb3JhZG8gODA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTUxICAgKGhleCkJCUFwb2dlZSBJbWFnaW5nIFN5c3RlbXMKLTAwMDk1MSAgICAgKGJhc2UgMTYpCQlBcG9nZWUgSW1hZ2luZyBTeXN0ZW1zCi0JCQkJMTUxIFN1bnJpc2UgQXZlbnVlCi0JCQkJU3VpdGUgOTAyCi0JCQkJUm9zZXZpbGxlIENBIDk1NjYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS01MiAgIChoZXgpCQlBdWVyc3dhbGQgR21iSCAmIENvLiBLRwotMDAwOTUyICAgICAoYmFzZSAxNikJCUF1ZXJzd2FsZCBHbWJIICYgQ28uIEtHCi0JCQkJVm9yIGRlbiBHcmFzaG9lZmVuIDIyCi0JCQkJQ3JlbWxpbmdlbiBOaWVkZXJzYWNoc2VuIDM4MTYyCi0JCQkJR0VSTUFOWQotCi0wMC0wOS01MyAgIChoZXgpCQlMaW5rYWdlIFN5c3RlbSBJbnRlZ3JhdGlvbiBDby5MdGQuCi0wMDA5NTMgICAgIChiYXNlIDE2KQkJTGlua2FnZSBTeXN0ZW0gSW50ZWdyYXRpb24gQ28uTHRkLgotCQkJCTQwIEdvbmdqaWFuZmFuZwotCQkJCVNvdXRoIFpob25nc2hhbiBSb2FkCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMDAwNgotCQkJCUNISU5BCi0KLTAwLTA5LTU0ICAgKGhleCkJCUFNaVQgc3BvbC4gcy4gci4gby4KLTAwMDk1NCAgICAgKGJhc2UgMTYpCQlBTWlUIHNwb2wuIHMuIHIuIG8uCi0JCQkJTmFza292ZSAzCi0JCQkJMTUwIDAwIFByYWhhIDUgCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMDktNTUgICAoaGV4KQkJWW91bmcgR2VuZXJhdGlvbiBJbnRlcm5hdGlvbmFsIENvcnAuCi0wMDA5NTUgICAgIChiYXNlIDE2KQkJWW91bmcgR2VuZXJhdGlvbiBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJNEYuLE5vLiAxODgsIE1pbmNodWFuIFJkLiwgU2hpbmRpYW4gQ2l0eQotCQkJCVNoaW5kaWFuICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTU2ICAgKGhleCkJCU5ldHdvcmsgU3lzdGVtcyBHcm91cCwgTHRkLiAoTlNHKQotMDAwOTU2ICAgICAoYmFzZSAxNikJCU5ldHdvcmsgU3lzdGVtcyBHcm91cCwgTHRkLiAoTlNHKQotCQkJCTM5IEtpcnBpY2huYXlhIFN0LiwgU3VpdGUgMTMwMgotCQkJCU1vc2NvdyAgMTA1MTg3Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTA5LTU3ICAgKGhleCkJCVN1cGVyY2FsbGVyLCBJbmMuCi0wMDA5NTcgICAgIChiYXNlIDE2KQkJU3VwZXJjYWxsZXIsIEluYy4KLQkJCQkxMDEgU2FnaW5hdyBEcml2ZQotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNTggICAoaGV4KQkJSU5URUxORVQgUy5BLgotMDAwOTU4ICAgICAoYmFzZSAxNikJCUlOVEVMTkVUIFMuQS4KLQkJCQlGUkFOQ0lTQ08gT0xJVkFOIEJBWUxFLCA0Ci0JCQkJWkFSQUdPWkEgIDUwMDE1Ci0JCQkJU1BBSU4KLQotMDAtMDktNTkgICAoaGV4KQkJU2l0ZWNzb2Z0Ci0wMDA5NTkgICAgIChiYXNlIDE2KQkJU2l0ZWNzb2Z0Ci0JCQkJN3RoIEd1Z3UgQkQuIDE0NS0xOCBTYW1zdW5nLURvbmcKLQkJCQlLYW5nTmFtLUd1IFNlb3VsIEtvcmVhCi0JCQkJU2VvdWwgU2VvdWwgMTM1LTA5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS01QSAgIChoZXgpCQlSQUNFV09PRCBURUNITk9MT0dZCi0wMDA5NUEgICAgIChiYXNlIDE2KQkJUkFDRVdPT0QgVEVDSE5PTE9HWQotCQkJCTVGLTIsTk8uNixDSFVORy1IU0lORyBSRC4sU0VDLjEsV1UtR1UKLQkJCQlUQUlQRUkgIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktNUIgICAoaGV4KQkJTmV0Z2VhciwgSW5jLgotMDAwOTVCICAgICAoYmFzZSAxNikJCU5ldGdlYXIsIEluYy4KLQkJCQk0NTAwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS01QyAgIChoZXgpCQlQaGlsaXBzIE1lZGljYWwgU3lzdGVtcyAtIENhcmRpYWMgYW5kIE1vbml0b3JpbmcgU3lzdGVtcyAoQ00KLTAwMDk1QyAgICAgKGJhc2UgMTYpCQlQaGlsaXBzIE1lZGljYWwgU3lzdGVtcyAtIENhcmRpYWMgYW5kIE1vbml0b3JpbmcgU3lzdGVtcyAoQ00KLQkJCQkzMDAwIE1pbnV0ZW1hbiBSb2FkCi0JCQkJQW5kb3ZlciBNYXNzYWNodXNldHRzIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS01RCAgIChoZXgpCQlEaWFsb2d1ZSBUZWNobm9sb2d5IENvcnAuCi0wMDA5NUQgICAgIChiYXNlIDE2KQkJRGlhbG9ndWUgVGVjaG5vbG9neSBDb3JwLgotCQkJCTEwRiwgTm8uIDE5NiwgU2VjLiAyLCBKdW5nc2hpbmcgUmQuCi0JCQkJU2hpbmRpYW4gQ2l0eSBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS01RSAgIChoZXgpCQlNYXNzdGVjaCBHcm91cCBJbmMuCi0wMDA5NUUgICAgIChiYXNlIDE2KQkJTWFzc3RlY2ggR3JvdXAgSW5jLgotCQkJCTIgRWFzdCBCZWF2ZXIgQ3JlZWsgUmQuCi0JCQkJQnVpbGRpbmcgMwotCQkJCVJpY2htb25kIEhpbGwgT250YXJpbyBMNEIgMk4zCi0JCQkJQ0FOQURBCi0KLTAwLTA5LTVGICAgKGhleCkJCVRlbGVieXRlLCBJbmMuCi0wMDA5NUYgICAgIChiYXNlIDE2KQkJVGVsZWJ5dGUsIEluYy4KLQkJCQkyNzAgUHVsYXNraSBSb2FkCi0JCQkJR3JlZW5sYXduIE5ZIDExNzQwLTE2MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTYwICAgKGhleCkJCVlPWkFOIEluYy4KLTAwMDk2MCAgICAgKGJhc2UgMTYpCQlZT1pBTiBJbmMuCi0JCQkJWU9aQU4gQmxkLiwzLTUtMTgsIEtpdGF6YXdhCi0JCQkJU2V0YWdheWEta3UgVG9reW8gMTU1LTAwMzEKLQkJCQlKQVBBTgotCi0wMC0wOS02MSAgIChoZXgpCQlTd2l0Y2hnZWFyIGFuZCBJbnN0cnVtZW50YXRpb24gTHRkCi0wMDA5NjEgICAgIChiYXNlIDE2KQkJU3dpdGNoZ2VhciBhbmQgSW5zdHJ1bWVudGF0aW9uIEx0ZAotCQkJCVJpcGxleSBSb2FkCi0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQ0IDdFSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LTYyICAgKGhleCkJCVNvbml0b3IgVGVjaG5vbG9naWVzIEFTCi0wMDA5NjIgICAgIChiYXNlIDE2KQkJU29uaXRvciBUZWNobm9sb2dpZXMgQVMKLQkJCQlGb3Jza25pbmdzdmVpZW4gMUIKLQkJCQlQLk8uIEJveCAxMjQKLQkJCQlPc2xvIEJsaW5kZXJuIE4tMDEzNAotCQkJCU5PUldBWQotCi0wMC0wOS02MyAgIChoZXgpCQlEb21pbmlvbiBMYXNlcmNvbSBJbmMuCi0wMDA5NjMgICAgIChiYXNlIDE2KQkJRG9taW5pb24gTGFzZXJjb20gSW5jLgotCQkJCTE3MTYgQnJpYXJjcmVzdCBEci4gU3RlLiAyMTAKLQkJCQlCcnlhbiBUWCA3NzgwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNjQgICAoaGV4KQkJSGktVGVjaG5pcXVlcywgSW5jLgotMDAwOTY0ICAgICAoYmFzZSAxNikJCUhpLVRlY2huaXF1ZXMsIEluYy4KLQkJCQkyNTE1IEZyYXppZXIgQXZlLgotCQkJCU1hZGlzb24gV0kgNTM3MTMtMTUwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNjUgICAoaGV4KQkJSHl1bkp1IENvbXB1dGVyIENvLiwgTHRkLgotMDAwOTY1ICAgICAoYmFzZSAxNikJCUh5dW5KdSBDb21wdXRlciBDby4sIEx0ZC4KLQkJCQkyMjItMjIsIEh5dW5qdSBCL0QsIEd1cm8gMyBEb25nLCBHdXJvZ3UKLQkJCQlTZW91bCAgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS02NiAgIChoZXgpCQlUaGFsZXMgTmF2aWdhdGlvbgotMDAwOTY2ICAgICAoYmFzZSAxNikJCVRoYWxlcyBOYXZpZ2F0aW9uCi0JCQkJNDcxIEVsIENhbWlubyBSZWFsCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTY3ICAgKGhleCkJCVRhY2h5b24sIEluYwotMDAwOTY3ICAgICAoYmFzZSAxNikJCVRhY2h5b24sIEluYwotCQkJCTkzMzkgQ2Fycm9sbCBQYXJrIERyaXZlCi0JCQkJU3VpdGUgMTUwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02OCAgIChoZXgpCQlURUNITk9WRU5UVVJFLCBJTkMuCi0wMDA5NjggICAgIChiYXNlIDE2KQkJVEVDSE5PVkVOVFVSRSwgSU5DLgotCQkJCVAuIE8uIEJveCA1NjQxCi0JCQkJUGFzYWRlbmEgVGV4YXMgNzc1MDgtNTY0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNjkgICAoaGV4KQkJTWVyZXQgT3B0aWNhbCBDb21tdW5pY2F0aW9ucwotMDAwOTY5ICAgICAoYmFzZSAxNikJCU1lcmV0IE9wdGljYWwgQ29tbXVuaWNhdGlvbnMKLQkJCQkxMDA3MCBNZXNhIFJpbSBSb2FkCi0JCQkJU2FuIERpZWdvIENhbGlmb3JuaWEgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTZBICAgKGhleCkJCUNsb3ZlcmxlYWYgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwOTZBICAgICAoYmFzZSAxNikJCUNsb3ZlcmxlYWYgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTIgV2lsbG93IFN0LgotCQkJCVNvdXRoYm9yb3VnaCBNQSAwMTc0NS0xMDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02QiAgIChoZXgpCQlJQk0gQ29ycAotMDAwOTZCICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAuTy4gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS02QyAgIChoZXgpCQlJbWVkaWEgU2VtaWNvbmR1Y3RvciBDb3JwLgotMDAwOTZDICAgICAoYmFzZSAxNikJCUltZWRpYSBTZW1pY29uZHVjdG9yIENvcnAuCi0JCQkJNDk4OCBHcmVhdCBBbWVyaWNhIFBrd3kuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTZEICAgKGhleCkJCVBvd2VybmV0IFRlY2hub2xvZ2llcyBDb3JwLgotMDAwOTZEICAgICAoYmFzZSAxNikJCVBvd2VybmV0IFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCTM3MS01MSwgR2FzYW4tRG9uZyBLdW1jaG9uLUd1LAotCQkJCVNlb3VsICAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LTZFICAgKGhleCkJCUdJQU5UIEVMRUNUUk9OSUNTIExURC4KLTAwMDk2RSAgICAgKGJhc2UgMTYpCQlHSUFOVCBFTEVDVFJPTklDUyBMVEQuCi0JCQkJNy9GLiwgRUxJVEUgSU5EVVNUUklBTCBCVUlMRElORywKLQkJCQkxMzUtMTM3IEhPSSBCVU4gUk9BRCwKLQkJCQlLV1VOIFRPTkcgS09XTE9PTiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMDktNkYgICAoaGV4KQkJQmVpamluZyBaaG9uZ3FpbmcgRWxlZ2FudCBUZWNoLiBDb3JwLixMaW1pdGVkCi0wMDA5NkYgICAgIChiYXNlIDE2KQkJQmVpamluZyBaaG9uZ3FpbmcgRWxlZ2FudCBUZWNoLiBDb3JwLixMaW1pdGVkCi0JCQkJUm0uNTA4LCBBLUJ1aWxkaW5nLCBTaGFuZ2RpIERpZ2l0YWwgU2NpZQotCQkJCUJlaWppbmcgIDEwMDA4NAotCQkJCUNISU5BCi0KLTAwLTA5LTcwICAgKGhleCkJCVZpYnJhdGlvbiBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotMDAwOTcwICAgICAoYmFzZSAxNikJCVZpYnJhdGlvbiBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotCQkJCTIzODUgV2lsc2hlcmUgRHJpdmUKLQkJCQlTdWl0ZSBBCi0JCQkJSmVuaXNvbiBNSSA0OTQyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNzEgICAoaGV4KQkJVGltZSBNYW5hZ2VtZW50LCBJbmMuCi0wMDA5NzEgICAgIChiYXNlIDE2KQkJVGltZSBNYW5hZ2VtZW50LCBJbmMuCi0JCQkJMTEgTGFrZSBHYXRsaW4gUm9hZAotCQkJCU9ybGFuZG8gRmxvcmlkYSAzMjgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktNzIgICAoaGV4KQkJU2VjdXJlYmFzZSxJbmMKLTAwMDk3MiAgICAgKGJhc2UgMTYpCQlTZWN1cmViYXNlLEluYwotCQkJCTJuZCBGbCxTZXVuZ3NldW5nLUJsZGcsRG9rb2sgMi1Eb25nLEthbmcKLQkJCQlTZW91bCAgMTM1LTg1NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS03MyAgIChoZXgpCQlMZW50ZW4gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDk3MyAgICAgKGJhc2UgMTYpCQlMZW50ZW4gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxNkYsIE5vLjUxLCBTZWMuMiwgR3VuZ3lpIFJvYWQsCi0JCQkJVGFpY2h1bmcgQ2l0eSAgNDA4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS03NCAgIChoZXgpCQlJbm5vcGlhIFRlY2hub2xvZ2llcywgSW5jLgotMDAwOTc0ICAgICAoYmFzZSAxNikJCUlubm9waWEgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNUYuLCBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neQotCQkJCUhhbnlhbmcgVW5pdmVyc2l0eSwgMTcgSGFlbmdkYW5nLURvbmcKLQkJCQlTZW91bCAgMTMzLTc5MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS03NSAgIChoZXgpCQlmU09OQSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotMDAwOTc1ICAgICAoYmFzZSAxNikJCWZTT05BIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJIzE0MC0xMTEyMCBIb3JzZXNob2UgV2F5Ci0JCQkJUmljaG1vbmQgQkMgVjdBIDVINwotCQkJCUNBTkFEQQotCi0wMC0wOS03NiAgIChoZXgpCQlEYXRhc29mdCBJU0ROIFN5c3RlbXMgR21iSAotMDAwOTc2ICAgICAoYmFzZSAxNikJCURhdGFzb2Z0IElTRE4gU3lzdGVtcyBHbWJICi0JCQkJU2NoaWxsZXJwbGF0eiAzCi0JCQkJU3QuIFBvZWx0ZW4gTG93ZXIgQXVzdHJpYSAzMTAwCi0JCQkJQVVTVFJJQQotCi0wMC0wOS03NyAgIChoZXgpCQlCcnVubmVyIEVsZWt0cm9uaWsgQUcKLTAwMDk3NyAgICAgKGJhc2UgMTYpCQlCcnVubmVyIEVsZWt0cm9uaWsgQUcKLQkJCQlNw7xsbGVyd2lzIDEKLQkJCQlIaXR0bmF1IFrDvHJpY2ggODMzNQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTA5LTc4ICAgKGhleCkJCUFJSkkgU3lzdGVtIENvLiwgTHRkLgotMDAwOTc4ICAgICAoYmFzZSAxNikJCUFJSkkgU3lzdGVtIENvLiwgTHRkLgotCQkJCSMyMDggU2FtaG8tUGFyay1Ub3dlciBCbGRnLiAxMTIyLTEwLCBJbmcKLQkJCQlTdXdvbiBHeWVvbmdnaS1kbyA0NDItODM1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LTc5ICAgKGhleCkJCUFkdmFuY2VkIFRlbGV2aXNpb24gU3lzdGVtcyBDb21taXR0ZWUsIEluYy4KLTAwMDk3OSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBUZWxldmlzaW9uIFN5c3RlbXMgQ29tbWl0dGVlLCBJbmMuCi0JCQkJMTc1MCBLIFN0cmVldCBOVwotCQkJCVN1aXRlIDEyMDAKLQkJCQlXYXNoaW5ndG9uIERDIDIwMDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS03QSAgIChoZXgpCQlMb3VpcyBEZXNpZ24gTGFicy4KLTAwMDk3QSAgICAgKGJhc2UgMTYpCQlMb3VpcyBEZXNpZ24gTGFicy4KLQkJCQkyRixOTyA0LCBMYW5lIDQ5NywgQ2h1bmctQ2hlbmcgUmQuLEhzaW4tCi0JCQkJSHNpbi1UaWVuIFRhaXBlaSBIc2llbiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LTdCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDk3QiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTdDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDk3QyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIKLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktN0QgICAoaGV4KQkJU2VjV2VsbCBOZXR3b3JrcyBPeQotMDAwOTdEICAgICAoYmFzZSAxNikJCVNlY1dlbGwgTmV0d29ya3MgT3kKLQkJCQlQLk8uQk9YIDE3NAotCQkJCUjDpG1lZW5wdWlzdG8gMjEKLQkJCQlUYW1wZXJlICAzMzEwMQotCQkJCUZJTkxBTkQKLQotMDAtMDktN0UgICAoaGV4KQkJSU1JIFRFQ0hOT0xPR1kgQ08uLCBMVEQKLTAwMDk3RSAgICAgKGJhc2UgMTYpCQlJTUkgVEVDSE5PTE9HWSBDTy4sIExURAotCQkJCTJuZCBmbG9vciwgRXVuIFNlb2sgQnVpbGRpbmcsIDcyOS0xCi0JCQkJWWVva3NhbS1kb25nLAotCQkJCUdhbmduYW0tZ3UgU2VvdWwgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS03RiAgIChoZXgpCQlWc2VjdXJlIDIwMDAgTFRELgotMDAwOTdGICAgICAoYmFzZSAxNikJCVZzZWN1cmUgMjAwMCBMVEQuCi0JCQkJMTEgTW9zaGUgTGV2aSBTdC4KLQkJCQlSaXNob24gTGVaaW9uICA3NTY1OAotCQkJCUlTUkFFTAotCi0wMC0wOS04MCAgIChoZXgpCQlQb3dlciBaZW5pdGggSW5jLgotMDAwOTgwICAgICAoYmFzZSAxNikJCVBvd2VyIFplbml0aCBJbmMuCi0JCQkJVHN1amlkbyBOaXNoaWthaWdhbiAxLTEwLTcKLQkJCQlGdWppc2F3YSBLYW5hZ2F3YSAyNTEtMDA0NgotCQkJCUpBUEFOCi0KLTAwLTA5LTgxICAgKGhleCkJCU5ld3BvcnQgTmV0d29ya3MKLTAwMDk4MSAgICAgKGJhc2UgMTYpCQlOZXdwb3J0IE5ldHdvcmtzCi0JCQkJRW50ZXJwcmlzZSBIb3VzZQotCQkJCVN0YXRpb24gUm9hZAotCQkJCUNoZXBzdG93IE1vbm1vdXRoc2hpcmUgTlAxNiA1UEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wOS04MiAgIChoZXgpCQlMb2V3ZSBPcHRhIEdtYkgKLTAwMDk4MiAgICAgKGJhc2UgMTYpCQlMb2V3ZSBPcHRhIEdtYkgKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDExCi0JCQkJS3JvbmFjaCBCYXZhcmlhIDk2MzE3Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS04MyAgIChoZXgpCQlHbG9iYWxUb3AgVGVjaG5vbG9neSwgSW5jLgotMDAwOTgzICAgICAoYmFzZSAxNikJCUdsb2JhbFRvcCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJICMxNiBOYW4tS2UgOXRoIFJvYWQKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCVRhaW5hbiAgNzQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS04NCAgIChoZXgpCQlNeUNhc2EgTmV0d29yayBJbmMuCi0wMDA5ODQgICAgIChiYXNlIDE2KQkJTXlDYXNhIE5ldHdvcmsgSW5jLgotCQkJCTIwMCBTaGVyaWRhbiBBdmUgIzEwMwotCQkJCVBhbG8gQWx0byBDQSA5NDMwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktODUgICAoaGV4KQkJQXV0byBUZWxlY29tIENvbXBhbnkKLTAwMDk4NSAgICAgKGJhc2UgMTYpCQlBdXRvIFRlbGVjb20gQ29tcGFueQotCQkJCTEwRiwgTm8uMyxMYW5lIDE2LCBTZWMuMiwgU2ljaHVhbiBSZC4KLQkJCQlCYW5xaWFvIENpdHkgVGFpcGVpIENvdW50eSAyMjA2MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktODYgICAoaGV4KQkJTWV0YWxpbmsgTFRELgotMDAwOTg2ICAgICAoYmFzZSAxNikJCU1ldGFsaW5rIExURC4KLQkJCQlZYWt1bSBCdXNpbmVzcyBQYXJrCi0JCQkJWWFrdW0gSE9GIEhBU0hBUk9OIDYwOTcyCi0JCQkJSVNSQUVMCi0KLTAwLTA5LTg3ICAgKGhleCkJCU5JU0hJIE5JUFBPTiBFTEVDVFJJQyBXSVJFICYgQ0FCTEUgQ08uLExURC4KLTAwMDk4NyAgICAgKGJhc2UgMTYpCQlOSVNISSBOSVBQT04gRUxFQ1RSSUMgV0lSRSAmIENBQkxFIENPLixMVEQuCi0JCQkJS2FzdWdhdXJhCi0JCQkJT2l0YS1DaXR5IE9JVEEgODcwLTg2MzIKLQkJCQlKQVBBTgotCi0wMC0wOS04OCAgIChoZXgpCQlOdWRpYW4gRWxlY3Ryb24gQ28uLCBMdGQuCi0wMDA5ODggICAgIChiYXNlIDE2KQkJTnVkaWFuIEVsZWN0cm9uIENvLiwgTHRkLgotCQkJCTc5Ny0yOCBCYW5nYmFlLURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAxMzctMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LTg5ICAgKGhleCkJCVZpdmlkTG9naWMgSW5jLgotMDAwOTg5ICAgICAoYmFzZSAxNikJCVZpdmlkTG9naWMgSW5jLgotCQkJCTQwOTk0IEVuY3ljbG9wZWRpYSBDaXJjbGUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS04QSAgIChoZXgpCQlFcXVhbExvZ2ljIEluYwotMDAwOThBICAgICAoYmFzZSAxNikJCUVxdWFsTG9naWMgSW5jCi0JCQkJOSBUb3duc2VuZCBXZXN0Ci0JCQkJTmFzaHVhIE5IIDAzMDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS04QiAgIChoZXgpCQlFbnRyb3BpYyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwOThCICAgICAoYmFzZSAxNikJCUVudHJvcGljIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJOTI3NiBTY3JhbnRvbiBSZCAjMjAwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS04QyAgIChoZXgpCQlPcHRpb24gV2lyZWxlc3MgU3dlZGVuCi0wMDA5OEMgICAgIChiYXNlIDE2KQkJT3B0aW9uIFdpcmVsZXNzIFN3ZWRlbgotCQkJCVN0dXJlZ2F0YW4gMgotCQkJCTExdGggZmwuCi0JCQkJU3VuZGJ5YmVyZyBTRS0xNzIgMjQKLQkJCQlTV0VERU4KLQotMDAtMDktOEQgICAoaGV4KQkJVmVsb2NpdHkgU2VtaWNvbmR1Y3RvcgotMDAwOThEICAgICAoYmFzZSAxNikJCVZlbG9jaXR5IFNlbWljb25kdWN0b3IKLQkJCQlTdWl0ZSAzMiBXZXkgSG91c2UKLQkJCQkxNSBDaHVyY2ggU3RyZWV0Ci0JCQkJV2V5YnJpZGdlIFN1cnJleSBLVDEzIDhOQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LThFICAgKGhleCkJCWlwY2FzIEdtYkgKLTAwMDk4RSAgICAgKGJhc2UgMTYpCQlpcGNhcyBHbWJICi0JCQkJV2V0dGVya3JldXogMTcKLQkJCQlFcmxhbmdlbiBCYXZhcmlhIDkxMDU4Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS04RiAgIChoZXgpCQlDZXRhY2VhbiBOZXR3b3JrcwotMDAwOThGICAgICAoYmFzZSAxNikJCUNldGFjZWFuIE5ldHdvcmtzCi0JCQkJMTEwIENvcnBvcmF0ZSBEcml2ZQotCQkJCUJ1aWxkaW5nIDIKLQkJCQlQb3J0c21vdXRoIE5IIDAzODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS05MCAgIChoZXgpCQlBQ0tTWVMgQ29tbXVuaWNhdGlvbnMgJiBzeXN0ZW1zCi0wMDA5OTAgICAgIChiYXNlIDE2KQkJQUNLU1lTIENvbW11bmljYXRpb25zICYgc3lzdGVtcwotCQkJCVpBIGR1IFZhbCBKb3lldXgKLQkJCQkxMCBydWUgZGVzIEVudHJlcHJlbmV1cnMKLQkJCQlWSUxMRVBSRVVYICBGLTc4NDUwCi0JCQkJRlJBTkNFCi0KLTAwLTA5LTkxICAgKGhleCkJCUdFIEZhbnVjIEF1dG9tYXRpb24gTWFudWZhY3R1cmluZywgSW5jLgotMDAwOTkxICAgICAoYmFzZSAxNikJCUdFIEZhbnVjIEF1dG9tYXRpb24gTWFudWZhY3R1cmluZywgSW5jLgotCQkJCVJvdXRlIDYwNiAmIFJvdXRlIDI5TgotCQkJCVBPIEJveCA4MTA2Ci0JCQkJQ2hhcmxvdHRlc3ZpbGxlIFZpcmdpbmlhIDIyOTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS05MiAgIChoZXgpCQlJbnRlckVwb2NoIFRlY2hub2xvZ3ksSU5DLgotMDAwOTkyICAgICAoYmFzZSAxNikJCUludGVyRXBvY2ggVGVjaG5vbG9neSxJTkMuCi0JCQkJN0YsTm8uMyxBbGxleSA2LExhbmUgMjM1LFBhby1DaGlhbyBSZAotCQkJCUhzaW4tVGllbiBUYWlwZWkgSHNpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS05MyAgIChoZXgpCQlWaXN0ZW9uIENvcnBvcmF0aW9uCi0wMDA5OTMgICAgIChiYXNlIDE2KQkJVmlzdGVvbiBDb3Jwb3JhdGlvbgotCQkJCTE2NjMwIFNvdXRoZmllbGQgUm9hZAotCQkJCVN0LiA0MUUxMAotCQkJCUFsbGVuIFBhcmsgTWljaGlnYW4gNDgxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LTk0ICAgKGhleCkJCUNyb255eCBFbmdpbmVlcmluZwotMDAwOTk0ICAgICAoYmFzZSAxNikJCUNyb255eCBFbmdpbmVlcmluZwotCQkJCU1hcnNoYWxhIFNva29sb3Zza29nbyBzdHIuIDQKLQkJCQlNb3Njb3cgIDEyMzA2MwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0wOS05NSAgIChoZXgpCQlDYXN0bGUgVGVjaG5vbG9neSBMdGQKLTAwMDk5NSAgICAgKGJhc2UgMTYpCQlDYXN0bGUgVGVjaG5vbG9neSBMdGQKLQkJCQlPcmUgVHJhZGluZyBFc3RhdGUKLQkJCQlXb29kYnJpZGdlIFJvYWQKLQkJCQlGcmFtbGluZ2hhbSBTdWZmb2xrIElQMTMgOUxMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDktOTYgICAoaGV4KQkJUkRJCi0wMDA5OTYgICAgIChiYXNlIDE2KQkJUkRJCi0JCQkJMjA0MDYgRWFybCBTdC4KLQkJCQlUb3JyYW5jZSBDQSA5MDUwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOTcgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDA5OTcgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTA5LTk4ICAgKGhleCkJCUNhcGluZm8gQ29tcGFueSBMaW1pdGVkCi0wMDA5OTggICAgIChiYXNlIDE2KQkJQ2FwaW5mbyBDb21wYW55IExpbWl0ZWQKLQkJCQk3dGggRmxvb3IgQSBDb3Jwb3JhdGUgU3F1YXJlLCBOTy4gMzUgRmluCi0JCQkJQmVpamluZyAgMTAwMDMyCi0JCQkJQ0hJTkEKLQotMDAtMDktOTkgICAoaGV4KQkJQ1AgR0VPUkdFUyBSRU5BVUxUCi0wMDA5OTkgICAgIChiYXNlIDE2KQkJQ1AgR0VPUkdFUyBSRU5BVUxUCi0JCQkJMzggUnVlIEJvYmJ5IFNhbmRzCi0JCQkJNDQ4MDAgU2FpbnQgSGVyYmxhaW4gCi0JCQkJRlJBTkNFCi0KLTAwLTA5LTlBICAgKGhleCkJCUVMTU8gQ09NUEFOWSwgTElNSVRFRAotMDAwOTlBICAgICAoYmFzZSAxNikJCUVMTU8gQ09NUEFOWSwgTElNSVRFRAotCQkJCTYtMTQsIE1FSVpFTi1DSE8sIE1JWlVITy1LVQotCQkJCU5BR09ZQSBBSUNISS1QcmVmLiA0NjctODU2NwotCQkJCUpBUEFOCi0KLTAwLTA5LTlCICAgKGhleCkJCVdlc3Rlcm4gVGVsZW1hdGljIEluYy4KLTAwMDk5QiAgICAgKGJhc2UgMTYpCQlXZXN0ZXJuIFRlbGVtYXRpYyBJbmMuCi0JCQkJNSBTdGVybGluZwotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOUMgICAoaGV4KQkJTmF2YWwgUmVzZWFyY2ggTGFib3JhdG9yeQotMDAwOTlDICAgICAoYmFzZSAxNikJCU5hdmFsIFJlc2VhcmNoIExhYm9yYXRvcnkKLQkJCQlDb2RlIDU1OTIKLQkJCQk0NTU1IE92ZXJsb29rIEF2ZW51ZQotCQkJCVdhc2hpbmd0b24gREMgMjAzNzUtNTAwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktOUQgICAoaGV4KQkJSGFsaXBsZXggQ29tbXVuaWNhdGlvbnMKLTAwMDk5RCAgICAgKGJhc2UgMTYpCQlIYWxpcGxleCBDb21tdW5pY2F0aW9ucwotCQkJCVBPIEJveCAxNDcKLQkJCQlNb29yb29sYmFyayBWaWMgMzEzOAotCQkJCUFVU1RSQUxJQQotCi0wMC0wOS05RSAgIChoZXgpCQlUZXN0ZWNoLCBJbmMuCi0wMDA5OUUgICAgIChiYXNlIDE2KQkJVGVzdGVjaCwgSW5jLgotCQkJCUJ1bmRhbmctVGVjaG5vcGFyaywgQy1Eb25nLCA3MDItSG8sICMxNDUKLQkJCQlZYXRhcC1Eb25nLCBCdW5kYW5nLUd1LAotCQkJCVN1bmduYW0tQ2l0eSBLeXVuZ2tpLURvIDQ2My0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktOUYgICAoaGV4KQkJVklERVggSU5DLgotMDAwOTlGICAgICAoYmFzZSAxNikJCVZJREVYIElOQy4KLQkJCQkxMTA1IE5FIENpcmNsZSBCbHZkCi0JCQkJQ29ydmFsbGlzIE9SIDk3MzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1BMCAgIChoZXgpCQlNaWNyb3RlY2hubyBDb3Jwb3JhdGlvbgotMDAwOUEwICAgICAoYmFzZSAxNikJCU1pY3JvdGVjaG5vIENvcnBvcmF0aW9uCi0JCQkJMi0zMy0zNiBTaGltb29kYW5ha2EKLQkJCQlOYWthaGFyYS1rdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMS0wMDQxCi0JCQkJSkFQQU4KLQotMDAtMDktQTEgICAoaGV4KQkJVGVsZXdpc2UgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMDlBMSAgICAgKGJhc2UgMTYpCQlUZWxld2lzZSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTIwNTAgUmluZ3dvb2QgQXZlbnVlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUEyICAgKGhleCkJCUludGVyZmFjZSBDby4sIEx0ZC4KLTAwMDlBMiAgICAgKGJhc2UgMTYpCQlJbnRlcmZhY2UgQ28uLCBMdGQuCi0JCQkJMi01LTEyLTIwMSBLeW9uYW5jaG8KLQkJCQlNdXNhc2hpbm8tY2l0eSBUb2t5byAxODAtMDAyMwotCQkJCUpBUEFOCi0KLTAwLTA5LUEzICAgKGhleCkJCUxlYWRmbHkgVGVjaG9sb2dpZXMgQ29ycC4gTHRkLgotMDAwOUEzICAgICAoYmFzZSAxNikJCUxlYWRmbHkgVGVjaG9sb2dpZXMgQ29ycC4gTHRkLgotCQkJCTlGbCwgTm8uMjYwLCBCYWRlIFJkLiwKLQkJCQkxMDQsIFIuTy5DLgotCQkJCVRhaXBlaSAgMTA0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS1BNCAgIChoZXgpCQlIQVJURUMgQ29ycG9yYXRpb24KLTAwMDlBNCAgICAgKGJhc2UgMTYpCQlIQVJURUMgQ29ycG9yYXRpb24KLQkJCQlLT1VIT0tVS1UgU0hJTi1ZT0tPSEFNQQotCQkJCTMtMTktNQotCQkJCVlPS09IQU1BLVNISSBLQU5BR0FXQS1LRU4gMjIyLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0wOS1BNSAgIChoZXgpCQlIQU5TVU5HIEVMRVRST05JQyBJTkRVU1RSSUVTIERFVkVMT1BNRU5UIENPLiwgTFRECi0wMDA5QTUgICAgIChiYXNlIDE2KQkJSEFOU1VORyBFTEVUUk9OSUMgSU5EVVNUUklFUyBERVZFTE9QTUVOVCBDTy4sIExURAotCQkJCUhFVU5HSklOIEJMREcgM0YsICMyMTctMyBQT0ktRE9ORywgS0FOR04KLQkJCQlTRU9VTCAgMTM1LTk2MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1BNiAgIChoZXgpCQlJZ25pcyBPcHRpY3MsIEluYy4KLTAwMDlBNiAgICAgKGJhc2UgMTYpCQlJZ25pcyBPcHRpY3MsIEluYy4KLQkJCQk0ODIgVy4gU2FuIENhcmxvcwotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUE3ICAgKGhleCkJCUJhbmcgJiBPbHVmc2VuIEEvUwotMDAwOUE3ICAgICAoYmFzZSAxNikJCUJhbmcgJiBPbHVmc2VuIEEvUwotCQkJCVBldGVyIEJhbmdzIFZlaiAxNQotCQkJCVN0cnVlciAgNzYwMAotCQkJCURFTk1BUksKLQotMDAtMDktQTggICAoaGV4KQkJRWFzdG1vZGUgUHRlIEx0ZAotMDAwOUE4ICAgICAoYmFzZSAxNikJCUVhc3Rtb2RlIFB0ZSBMdGQKLQkJCQkzMCBMb3lhbmcgV2F5ICMwNy0wNgotCQkJCUxveWFuZyBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCTUwODc2OQotCQkJCVNJTkdBUE9SRQotCi0wMC0wOS1BOSAgIChoZXgpCQlJa2Fub3MgQ29tbXVuaWNhdGlvbnMKLTAwMDlBOSAgICAgKGJhc2UgMTYpCQlJa2Fub3MgQ29tbXVuaWNhdGlvbnMKLQkJCQk0NzcwOSBGcmVtb250IEJsdmQKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1BQSAgIChoZXgpCQlEYXRhIENvbW0gZm9yIEJ1c2luZXNzLCBJbmMuCi0wMDA5QUEgICAgIChiYXNlIDE2KQkJRGF0YSBDb21tIGZvciBCdXNpbmVzcywgSW5jLgotCQkJCTI5NDkgQ291bnR5IFJvYWQgMTAwMCBFYXN0Ci0JCQkJRGV3ZXkgSUwgNjE4NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUFCICAgKGhleCkJCU5ldGNvbnRyb2wgT3kKLTAwMDlBQiAgICAgKGJhc2UgMTYpCQlOZXRjb250cm9sIE95Ci0JCQkJS2FydmFhbW9rdWphIDMKLQkJCQlIZWxzaW5raSAgRklOIDAwMzgwCi0JCQkJRklOTEFORAotCi0wMC0wOS1BQyAgIChoZXgpCQlMQU5WT0lDRQotMDAwOUFDICAgICAoYmFzZSAxNikJCUxBTlZPSUNFCi0JCQkJMTM2NC0zOSBTZW9jaG9Eb25nLCAjMjAxIEppaHVuIEJsZGcKLQkJCQlTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTA3MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1BRCAgIChoZXgpCQlIWVVOREFJIFNZU0NPTU0sIElOQy4KLTAwMDlBRCAgICAgKGJhc2UgMTYpCQlIWVVOREFJIFNZU0NPTU0sIElOQy4KLQkJCQlTQU4gMTM2LTEsIEFNSS1SSSwgQlVCQUwtRVVCCi0JCQkJSUNIT04gS1lPVU5HS0ktRE8gNDY3LTcwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1BRSAgIChoZXgpCQlPS0FOTyBFTEVDVFJJQyBDTy4sTFRECi0wMDA5QUUgICAgIChiYXNlIDE2KQkJT0tBTk8gRUxFQ1RSSUMgQ08uLExURAotCQkJCTItOC0xOCBLQU5BWUFNQS1DSE8KLQkJCQlISUdBU0hJS1VSVU1FIFRPS1lPIDIwMy0wMDAzCi0JCQkJSkFQQU4KLQotMDAtMDktQUYgICAoaGV4KQkJZS1nZW5lcmlzCi0wMDA5QUYgICAgIChiYXNlIDE2KQkJZS1nZW5lcmlzCi0JCQkJMTMgcnVlIGR1IGNoZW5lIGdlcm1haW4KLQkJCQljZXNzb24gc2V2aWduZSAgMzU1MTAKLQkJCQlGUkFOQ0UKLQotMDAtMDktQjAgICAoaGV4KQkJT25reW8gQ29ycG9yYXRpb24KLTAwMDlCMCAgICAgKGJhc2UgMTYpCQlPbmt5byBDb3Jwb3JhdGlvbgotCQkJCTItMSBOaXNzaGluLWNobwotCQkJCU5leWFnYXdhIE9zYWthIDU3Mjg1NDAKLQkJCQlKQVBBTgotCi0wMC0wOS1CMSAgIChoZXgpCQlLYW5lbWF0c3UgRWxlY3Ryb25pY3MsIEx0ZC4KLTAwMDlCMSAgICAgKGJhc2UgMTYpCQlLYW5lbWF0c3UgRWxlY3Ryb25pY3MsIEx0ZC4KLQkJCQkxNy01LCBLeW9iYXNoaSAyLWNob21lCi0JCQkJQ2h1by1rdSBUb2t5byAxMDQtODMzOAotCQkJCUpBUEFOCi0KLTAwLTA5LUIyICAgKGhleCkJCUwmRiBJbmMuCi0wMDA5QjIgICAgIChiYXNlIDE2KQkJTCZGIEluYy4KLQkJCQk0LTItOQotCQkJCVRPS1VNQVJVCi0JCQkJSVRBQkFTSEktS1UgVG9reW8gMTc1LTAwODMKLQkJCQlKQVBBTgotCi0wMC0wOS1CMyAgIChoZXgpCQlNQ00gU3lzdGVtcyBMdGQKLTAwMDlCMyAgICAgKGJhc2UgMTYpCQlNQ00gU3lzdGVtcyBMdGQKLQkJCQlLb2xvbWJhbiA5RgotCQkJCUFua2FyYW4gU2xvdmVuaWphIDYyODAKLQkJCQlTTE9WRU5JQQotCi0wMC0wOS1CNCAgIChoZXgpCQlLSVNBTiBURUxFQ09NIENPLiwgTFRELgotMDAwOUI0ICAgICAoYmFzZSAxNikJCUtJU0FOIFRFTEVDT00gQ08uLCBMVEQuCi0JCQkJOUYsIFRlYXdvbiBCbGRnLiwgNjUgQmFuZ3lpLURvbmcKLQkJCQlTb25ncGEtR3UgU2VvdWwgMTM4LTgyOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1CNSAgIChoZXgpCQkzSiBUZWNoLiBDby4sIEx0ZC4KLTAwMDlCNSAgICAgKGJhc2UgMTYpCQkzSiBUZWNoLiBDby4sIEx0ZC4KLQkJCQkzNDIgRnVzaGluZyBOLiBSZC4sIDJGLCBUYWlwZWksIFRhaXdhbgotCQkJCVRhaXBlaSAgMTA0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS1CNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA5QjYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENhIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1CNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDA5QjcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk0MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1COCAgIChoZXgpCQlFbnRpc2UgU3lzdGVtcwotMDAwOUI4ICAgICAoYmFzZSAxNikJCUVudGlzZSBTeXN0ZW1zCi0JCQkJMTAwOTUgSnVkeSBBdmVudWUKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUI5ICAgKGhleCkJCUFjdGlvbiBJbWFnaW5nIFNvbHV0aW9ucwotMDAwOUI5ICAgICAoYmFzZSAxNikJCUFjdGlvbiBJbWFnaW5nIFNvbHV0aW9ucwotCQkJCUtpbmdzIEhhbGwsIFN0IEl2ZXMgQnVzaW5lc3MgUGFyawotCQkJCVN0IEl2ZXMKLQkJCQlIdW50aW5nZG9uIENhbWJyaWRnZXNoaXJlIFBFMjcgNFdZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMDktQkEgICAoaGV4KQkJTUFLVSBJbmZvcm1hdGlvbnN0ZWNoaWsgR21iSAotMDAwOUJBICAgICAoYmFzZSAxNikJCU1BS1UgSW5mb3JtYXRpb25zdGVjaGlrIEdtYkgKLQkJCQlHZXdlcmJlaG9mc3RyLiA3Ci0JCQkJRXNzZW4gTlJXIDQ1MTQ1Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS1CQiAgIChoZXgpCQlNYXRoU3RhciwgSW5jLgotMDAwOUJCICAgICAoYmFzZSAxNikJCU1hdGhTdGFyLCBJbmMuCi0JCQkJNTkwMCBHcmVlbiBPYWsgRHJpdmUKLQkJCQlNaW5uZWFwb2xpcyBNTiA1NTM0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQkMgICAoaGV4KQkJRGlnaXRhbCBTYWZldHkgVGVjaG5vbG9naWVzLCBJbmMKLTAwMDlCQyAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFNhZmV0eSBUZWNobm9sb2dpZXMsIEluYwotCQkJCTUxMSBEYXZpcyBEci4KLQkJCQlTdWl0ZSAzMDAKLQkJCQlNb3JyaXN2aWxsZSBOQyAyNzU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQkQgICAoaGV4KQkJRXB5Z2kgVGVjaG5vbG9naWVzLCBMdGQuCi0wMDA5QkQgICAgIChiYXNlIDE2KQkJRXB5Z2kgVGVjaG5vbG9naWVzLCBMdGQuCi0JCQkJNTA0MCBBZGRpc29uIENpcmNsZQotCQkJCVN1aXRlIDIyNQotCQkJCUFkZGlzb24gVGV4YXMgNzUwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUJFICAgKGhleCkJCU1hbWl5YS1PUCBDby4sTHRkLgotMDAwOUJFICAgICAoYmFzZSAxNikJCU1hbWl5YS1PUCBDby4sTHRkLgotCQkJCTMtMjMtMTAsIE5lZ2lzaGkgTWluYW1pLWt1Ci0JCQkJU2FpdGFtYS1zaGkgU2FpdGFtYSAzMzYtODU4MQotCQkJCUpBUEFOCi0KLTAwLTA5LUJGICAgKGhleCkJCU5pbnRlbmRvIENvLixMdGQuCi0wMDA5QkYgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0wOS1DMCAgIChoZXgpCQk2V0lORAotMDAwOUMwICAgICAoYmFzZSAxNikJCTZXSU5ECi0JCQkJMSwgcGxhY2UgQ2hhcmxlcyBkZSBHYXVsbGUKLQkJCQlNb250aWdueS1sZS1CcmV0b25uZXV4ICA3ODE4MAotCQkJCUZSQU5DRQotCi0wMC0wOS1DMSAgIChoZXgpCQlQUk9DRVMtREFUQSBBL1MKLTAwMDlDMSAgICAgKGJhc2UgMTYpCQlQUk9DRVMtREFUQSBBL1MKLQkJCQlOYXZlcnZlaiA4Ci0JCQkJU2lsa2Vib3JnICBESy04NjAwCi0JCQkJREVOTUFSSwotCi0wMC0wOS1DMiAgIChoZXgpCQlPbml0eSwgSW5jLgotMDAwOUMyICAgICAoYmFzZSAxNikJCU9uaXR5LCBJbmMuCi0JCQkJMjIzMiBOb3J0aG1vbnQgUGFya3dheQotCQkJCUR1bHV0aCBHQSAzMDA5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktQzMgICAoaGV4KQkJTkVUQVMKLTAwMDlDMyAgICAgKGJhc2UgMTYpCQlORVRBUwotCQkJCUFsZW1kYWcgQ2FkLiBObyAxNzEKLQkJCQlVTVJBTklZRQotCQkJCUlTVEFOQlVMICA4MTI0NAotCQkJCVRVUktFWQotCi0wMC0wOS1DNCAgIChoZXgpCQlNZWRpY29yZSBDby4sIEx0ZAotMDAwOUM0ICAgICAoYmFzZSAxNikJCU1lZGljb3JlIENvLiwgTHRkCi0JCQkJNzItMyA1dGggRmwuLCBMdW5hIEJsZGcsIENodW5nZGFtLWRvbmcKLQkJCQlLYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktQzUgICAoaGV4KQkJS0lOR0VORSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDA5QzUgICAgIChiYXNlIDE2KQkJS0lOR0VORSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJN0YsIE5vLiAxNDQsIE1pbmNodWFuIEUuIFJkLiBTZWMuIDMKLQkJCQlUYWlwZWkgIDEwNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktQzYgICAoaGV4KQkJVmlzaW9uaWNzIENvcnBvcmF0aW9uCi0wMDA5QzYgICAgIChiYXNlIDE2KQkJVmlzaW9uaWNzIENvcnBvcmF0aW9uCi0JCQkJNTYwMCBSb3dsYW5kIFJvYWQKLQkJCQlTdWl0ZSAyMDUKLQkJCQlNaW5uZXRvbmthIE1OIDU1MzQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1DNyAgIChoZXgpCQlNb3Zpc3RlYwotMDAwOUM3ICAgICAoYmFzZSAxNikJCU1vdmlzdGVjCi0JCQkJMTEwLTUgTWFyeW91bmcgLXJpIFNlb3N1LW15dW4KLQkJCQlLdW5zYW4gQ2hvbmJ1ayA1NzMtOTQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LUM4ICAgKGhleCkJCVNJTkFHQVdBIFRTVVNISU4gS0VJU09VIFNFUlZJQ0UKLTAwMDlDOCAgICAgKGJhc2UgMTYpCQlTSU5BR0FXQSBUU1VTSElOIEtFSVNPVSBTRVJWSUNFCi0JCQkJMTMtNSBGdWtlICwgU3VtaXlvc2hpICwgT25haGFtYQotCQkJCUl3YWtpIENpdHkgRnVrdXNoaW1hIFByZWZlY3R1cmUgOTcxLTgxMjQKLQkJCQlKQVBBTgotCi0wMC0wOS1DOSAgIChoZXgpCQlCbHVlV0lOQyBDby4sIEx0ZC4KLTAwMDlDOSAgICAgKGJhc2UgMTYpCQlCbHVlV0lOQyBDby4sIEx0ZC4KLQkJCQk0MDEgS29yZWEgRGVzaWduIENlbnRlcgotCQkJCTM0NC0xIFlhdGFwMS1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0gQ2l0eSBLeW9uZ2dpw6LigqzigJxkbyA0NjMtODI4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LUNBICAgKGhleCkJCWlNYXhOZXR3b3JrcyhTaGVuemhlbilMaW1pdGVkLgotMDAwOUNBICAgICAoYmFzZSAxNikJCWlNYXhOZXR3b3JrcyhTaGVuemhlbilMaW1pdGVkLgotCQkJCTQvQixTb3V0aCBCbGRnIG9mIDI5dGgsU291dGggRGlzdHJpY3Qgb2YKLQkJCQlTaGVuemhlbiBIaS1UZWNoIEluZHVzdHJpYWwgUGFyaywgU2hlbm5hCi0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTA5LUNCICAgKGhleCkJCUhCcmFpbgotMDAwOUNCICAgICAoYmFzZSAxNikJCUhCcmFpbgotCQkJCSM3MDUgS3dhbmdsaW0gQmxkZyAxNzkgS3VtaURvbmcKLQkJCQlCdW5kYW5nIEd1Ci0JCQkJU2VvbmduYW0gR3llb25nZ2lEbyA0NjMtODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTA5LUNDICAgKGhleCkJCU1vb2cgR21iSAotMDAwOUNDICAgICAoYmFzZSAxNikJCU1vb2cgR21iSAotCQkJCUhhbm5zLUtsZW1tLVN0ci4gMjgKLQkJCQlCb2VibGluZ2VuICBELTcxMDM0Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS1DRCAgIChoZXgpCQlIVURTT04gU09GVCBDTy4sTFRELgotMDAwOUNEICAgICAoYmFzZSAxNikJCUhVRFNPTiBTT0ZUIENPLixMVEQuCi0JCQkJQzYyLEdlaWp1dHN1LW5vLW1vcmkKLQkJCQkzLWNob21lLE1pbmFtaS1rdQotCQkJCVNhcHBvcm8gSG9ra2FpZG8gMDA1LTA4NjQKLQkJCQlKQVBBTgotCi0wMC0wOS1DRSAgIChoZXgpCQlTcGFjZUJyaWRnZSBTZW1pY29uZHVjdG9yIENvcnAuCi0wMDA5Q0UgICAgIChiYXNlIDE2KQkJU3BhY2VCcmlkZ2UgU2VtaWNvbmR1Y3RvciBDb3JwLgotCQkJCTExNSBydWUgQ2hhbXBsYWluCi0JCQkJSHVsbCBRdWViZWMgSjhYM1IxCi0JCQkJQ0FOQURBCi0KLTAwLTA5LUNGICAgKGhleCkJCWlBZCBHbWJICi0wMDA5Q0YgICAgIChiYXNlIDE2KQkJaUFkIEdtYkgKLQkJCQlVbnRlcnNjaGxhdWVyc2JhY2hlciBIYXVwdHN0cmFzc2UgMTAKLQkJCQlHcm9zc2hhYmVyc2RvcmYgQmF2YXJpYSA5MDYxMwotCQkJCUdFUk1BTlkKLQotMDAtMDktRDAgICAoaGV4KQkJU29sYWNvbSBUZWNobm9sb2dpZXMgSW5jLgotMDAwOUQwICAgICAoYmFzZSAxNikJCVNvbGFjb20gVGVjaG5vbG9naWVzIEluYy4KLQkJCQk4MCBKZWFuLVByb3VseAotCQkJCUdhdGluZWF1IFF1ZWJlYyBKOFogMVcxCi0JCQkJQ0FOQURBCi0KLTAwLTA5LUQxICAgKGhleCkJCVNFUkFOT0EgTkVUV09SS1MgSU5DCi0wMDA5RDEgICAgIChiYXNlIDE2KQkJU0VSQU5PQSBORVRXT1JLUyBJTkMKLQkJCQlDT05DT1JEIE9GRklDRSBDRU5URVIKLQkJCQkyMzUyIE1BSU4gU1QKLQkJCQlDT05DT1JEIE1BIDAxNzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1EMiAgIChoZXgpCQlNYWkgTG9naWMgSW5jLgotMDAwOUQyICAgICAoYmFzZSAxNikJCU1haSBMb2dpYyBJbmMuCi0JCQkJNDc2OTcgV2VzdGluZ2hvdXNlIERyLiwgU3VpdGUgMjAwCi0JCQkJRnJlbW9udCBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktRDMgICAoaGV4KQkJV2VzdGVybiBEYXRhQ29tIENvLiwgSW5jLgotMDAwOUQzICAgICAoYmFzZSAxNikJCVdlc3Rlcm4gRGF0YUNvbSBDby4sIEluYy4KLQkJCQk5MjUtRCBCYXNzZXR0IFJkLgotCQkJCVdlc3RsYWtlIE9IIDQ0MTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1ENCAgIChoZXgpCQlUcmFuc3RlY2ggTmV0d29ya3MKLTAwMDlENCAgICAgKGJhc2UgMTYpCQlUcmFuc3RlY2ggTmV0d29ya3MKLQkJCQkxMDAgV29vZCBBdmVudWUKLQkJCQlTdWl0ZSAyMDQKLQkJCQlJc2VsaW4gTkogMDg4MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUQ1ICAgKGhleCkJCVNpZ25hbCBDb21tdW5pY2F0aW9uLCBJbmMuCi0wMDA5RDUgICAgIChiYXNlIDE2KQkJU2lnbmFsIENvbW11bmljYXRpb24sIEluYy4KLQkJCQkxMDAgV29vZCBBdmUgU291dGgKLQkJCQlTdWl0ZSAxMDMKLQkJCQlJc2VsaW4gTkogMDg4MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUQ2ICAgKGhleCkJCUtOQyBPbmUgR21iSAotMDAwOUQ2ICAgICAoYmFzZSAxNikJCUtOQyBPbmUgR21iSAotCQkJCUhvaGUgV2VsbGUgMTAgQgotCQkJCUV2ZXNzZW4gTmllZGVyc2FjaHNlbiAzODE3MwotCQkJCUdFUk1BTlkKLQotMDAtMDktRDcgICAoaGV4KQkJREMgU2VjdXJpdHkgUHJvZHVjdHMKLTAwMDlENyAgICAgKGJhc2UgMTYpCQlEQyBTZWN1cml0eSBQcm9kdWN0cwotCQkJCU9uZSBMaW5kc2F5IENpcmNsZQotCQkJCVNhbiBGcmFuY2lzY28gQ2FsaWZvcm5pYSA5NDEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktRDggICAoaGV4KQkJRsOkbHQgQ29tbXVuaWNhdGlvbnMgQUIKLTAwMDlEOCAgICAgKGJhc2UgMTYpCQlGw6RsdCBDb21tdW5pY2F0aW9ucyBBQgotCQkJCUt5bGdyw6RuZCA2QQotCQkJCVNFIDkwNiAyMCBVbWXDpSAKLQkJCQlTV0VERU4KLQotMDAtMDktRDkgICAoaGV4KQkJTmVvc2NhbGUgU3lzdGVtcywgSW5jCi0wMDA5RDkgICAgIChiYXNlIDE2KQkJTmVvc2NhbGUgU3lzdGVtcywgSW5jCi0JCQkJMTUwMCBNYyBDYW5kbGVzcyBEcml2ZQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1EQSAgIChoZXgpCQlDb250cm9sIE1vZHVsZSBJbmMuCi0wMDA5REEgICAgIChiYXNlIDE2KQkJQ29udHJvbCBNb2R1bGUgSW5jLgotCQkJCTIyNyBCcmFpbmFyZCBSb2FkCi0JCQkJRW5maWVsZCBDVCAwNjA4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktREIgICAoaGV4KQkJZVNwYWNlCi0wMDA5REIgICAgIChiYXNlIDE2KQkJZVNwYWNlCi0JCQkJOTYyMyBTaW1zYnVyeSBDdC4KLQkJCQlUd2luc2J1cmcgT0ggNDQwODctMzIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMDktREMgICAoaGV4KQkJR2FsYXhpcyBUZWNobm9sb2d5IEFHCi0wMDA5REMgICAgIChiYXNlIDE2KQkJR2FsYXhpcyBUZWNobm9sb2d5IEFHCi0JCQkJU3RlaW5tZXR6c3RyYXNzZSA3Ci0JCQkJUC5PLiBCb3ggMzM2NAotCQkJCUzDvGJlY2sgU2NobGVzd2lnLUhvbHN0ZWluIDIzNTU2Ci0JCQkJR0VSTUFOWQotCi0wMC0wOS1ERCAgIChoZXgpCQlNYXZpbiBUZWNobm9sb2d5IEluYy4KLTAwMDlERCAgICAgKGJhc2UgMTYpCQlNYXZpbiBUZWNobm9sb2d5IEluYy4KLQkJCQlSb29tIDMwNSwgQmxkZy4gNTIgTm8uIDE5NS0yOAotCQkJCVNlYy4gNCBDaHVuZy1Ic2luZyBSZC4KLQkJCQlDaHV0dW5nLCBIc2luY2h1ICAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LURFICAgKGhleCkJCVNhbWppbiBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDAwOURFICAgICAoYmFzZSAxNikJCVNhbWppbiBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCU1hamFuZ015dW4gRHVrUHl1bmdSaSAyMzUtMgotCQkJCUljaG9uIEt5b25nR2kgNDY3LTgxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1ERiAgIChoZXgpCQlWZXN0ZWwgS29tdW5pa2FzeW9uIFNhbmF5aSB2ZSBUaWNhcmV0IEEuUy4KLTAwMDlERiAgICAgKGJhc2UgMTYpCQlWZXN0ZWwgS29tdW5pa2FzeW9uIFNhbmF5aSB2ZSBUaWNhcmV0IEEuUy4KLQkJCQlFZ2UgU2VyYmVzdCBCb2xnZXNpIE5vOjE0NC8xCi0JCQkJR2F6aWVtaXIKLQkJCQlJem1pciAtIDM1NDEwCi0JCQkJVFVSS0VZCi0KLTAwLTA5LUUwICAgKGhleCkJCVhFTUlDUyBTLkEuCi0wMDA5RTAgICAgIChiYXNlIDE2KQkJWEVNSUNTIFMuQS4KLQkJCQlSdWUgZGUgbGEgTWFsYWRpZXJlIDcxCi0JCQkJQ0gtMjAwNyBOZXVjaGF0ZWwgTmV1Y2hhdGVsIDIwMDcKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wOS1FMSAgIChoZXgpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMDlFMSAgICAgKGJhc2UgMTYpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4xIEplbiBBaSBSb2FkCi0JCQkJSHVrb3UgSHNpbmNodSAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTA5LUUyICAgKGhleCkJCVNpbmJvbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMDlFMiAgICAgKGJhc2UgMTYpCQlTaW5ib24gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJNEYtMTMsIE5vLiA3OSwgU2VjIDEsIEhzaW4gVGFpIFd1IFJkLgotCQkJCUhzaS1DaGloLCBUYWlwZWkgIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMDktRTMgICAoaGV4KQkJQW5nZWwgSWdsZXNpYXMgUy5BLgotMDAwOUUzICAgICAoYmFzZSAxNikJCUFuZ2VsIElnbGVzaWFzIFMuQS4KLQkJCQlQb2zDrWdvbm8gMjcgTWFydHV0ZW5lCi0JCQkJU2FuIFNlYmFzdGnDoW4gR3VpcMO6emNvYSAyMDAxNAotCQkJCVNQQUlOCi0KLTAwLTA5LUU0ICAgKGhleCkJCUsgVGVjaCBJbmZvc3lzdGVtIEluYy4KLTAwMDlFNCAgICAgKGJhc2UgMTYpCQlLIFRlY2ggSW5mb3N5c3RlbSBJbmMuCi0JCQkJQi00MDUsIEJ1bmRhbmcgVGVjaG5vLVBhcmsgMTQ4LCBZYXRhcC1kbwotCQkJCVNlb25nbmFtIEt5b25nZ2ktRG8gNDY0LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wOS1FNSAgIChoZXgpCQlIb3R0aW5nZXIgQmFsZHdpbiBNZXNzdGVjaG5payBHbWJICi0wMDA5RTUgICAgIChiYXNlIDE2KQkJSG90dGluZ2VyIEJhbGR3aW4gTWVzc3RlY2huaWsgR21iSAotCQkJCUltIFRpZWZlbiBTZWUgNDUKLQkJCQlEYXJtc3RhZHQgSGVzc2VuIDY0MjkzCi0JCQkJR0VSTUFOWQotCi0wMC0wOS1FNiAgIChoZXgpCQlDeWJlciBTd2l0Y2hpbmcgSW5jLgotMDAwOUU2ICAgICAoYmFzZSAxNikJCUN5YmVyIFN3aXRjaGluZyBJbmMuCi0JCQkJMTgwMCBEZSBMYSBDcnV6IEJsdmQuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUU3ICAgKGhleCkJCUFEQyBUZWNob25vbG9neQotMDAwOUU3ICAgICAoYmFzZSAxNikJCUFEQyBUZWNob25vbG9neQotCQkJCVNha2FlIE1lbWJlcnMgT2ZmaWNlIEJsZC4gNC0xNi04LCBTYWthZSwKLQkJCQlOYWdveWEgQWljaGkgNDYwMDAwOAotCQkJCUpBUEFOCi0KLTAwLTA5LUU4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDlFOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUU5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMDlFOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUVBICAgKGhleCkJCVlFTSBJbmMuCi0wMDA5RUEgICAgIChiYXNlIDE2KQkJWUVNIEluYy4KLQkJCQkxLTMtMzMKLQkJCQlPa2F0YQotCQkJCUF0c3VnaS1zaGkgS2FuYWdhd2EgMjQzLTAwMjEKLQkJCQlKQVBBTgotCi0wMC0wOS1FQiAgIChoZXgpCQlIdU1BTkRBVEEgTFRELgotMDAwOUVCICAgICAoYmFzZSAxNikJCUh1TUFOREFUQSBMVEQuCi0JCQkJMS0yLTEwCi0JCQkJTmFrYWhvenVtaQotCQkJCUliYXJha2kgT3Nha2EgNTY3LTAwMzQKLQkJCQlKQVBBTgotCi0wMC0wOS1FQyAgIChoZXgpCQlEYWt0cm9uaWNzLCBJbmMuCi0wMDA5RUMgICAgIChiYXNlIDE2KQkJRGFrdHJvbmljcywgSW5jLgotCQkJCTMxNSAzMm5kIEF2ZQotCQkJCUJ1aWxkaW5nICMyCi0JCQkJQnJvb2tpbmdzIFNEIDU3MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1FRCAgIChoZXgpCQlDaXBoZXJPcHRpY3MKLTAwMDlFRCAgICAgKGJhc2UgMTYpCQlDaXBoZXJPcHRpY3MKLQkJCQk3MDEgQ29ycG9yYXRlIENlbnRlciBEcml2ZQotCQkJCVN1aXRlIDE1MAotCQkJCVJhbGVpZ2ggTm9ydGggQ2Fyb2xpbmEgMjc2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUVFICAgKGhleCkJCU1FSUtZTyBFTEVDVFJJQyBDTy4sTFRECi0wMDA5RUUgICAgIChiYXNlIDE2KQkJTUVJS1lPIEVMRUNUUklDIENPLixMVEQKLQkJCQk0LTI3LTIgSGlnYXNoaW9ndQotCQkJCUFyYWthd2Eta3UgVG9reW8gMTE2LTAwMTIKLQkJCQlKQVBBTgotCi0wMC0wOS1FRiAgIChoZXgpCQlWb2NlcmEgQ29tbXVuaWNhdGlvbnMKLTAwMDlFRiAgICAgKGJhc2UgMTYpCQlWb2NlcmEgQ29tbXVuaWNhdGlvbnMKLQkJCQk1MjUgUmFjZSBTdC4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1GMCAgIChoZXgpCQlTaGltaXp1IFRlY2hub2xvZ3kgSW5jLgotMDAwOUYwICAgICAoYmFzZSAxNikJCVNoaW1penUgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTUtNiwgTm8uMTA3LCBDaHVuZyBTaGFuIFJkLiwgU2VjLjEKLQkJCQlIc2luIENodWFuLCBUYWlwZWkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS1GMSAgIChoZXgpCQlZYW1ha2kgRWxlY3RyaWMgQ29ycG9yYXRpb24KLTAwMDlGMSAgICAgKGJhc2UgMTYpCQlZYW1ha2kgRWxlY3RyaWMgQ29ycG9yYXRpb24KLQkJCQkzLTctMjIgU2hpbW9tZWd1cm8KLQkJCQlNZWd1cm8ta3UgVG9reW8gMTUzLTAwNjQKLQkJCQlKQVBBTgotCi0wMC0wOS1GMiAgIChoZXgpCQlDb2h1LCBJbmMuLCBFbGVjdHJvbmljcyBEaXZpc2lvbgotMDAwOUYyICAgICAoYmFzZSAxNikJCUNvaHUsIEluYy4sIEVsZWN0cm9uaWNzIERpdmlzaW9uCi0JCQkJMzkxMiBDYWxsZSBGb3J0dW5hZGEKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTA5LUYzICAgKGhleCkJCVdFTEwgQ29tbXVuaWNhdGlvbiBDb3JwLgotMDAwOUYzICAgICAoYmFzZSAxNikJCVdFTEwgQ29tbXVuaWNhdGlvbiBDb3JwLgotCQkJCTExRiwgTm8uNzc4LCBDaHVuZyBDaGVuZyBSZC4sIENodW5nIEhvIEMKLQkJCQlDaHVuZyBIbyAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wOS1GNCAgIChoZXgpCQlBbGNvbiBMYWJvcmF0b3JpZXMsIEluYy4KLTAwMDlGNCAgICAgKGJhc2UgMTYpCQlBbGNvbiBMYWJvcmF0b3JpZXMsIEluYy4KLQkJCQk2MjAxIFNvdXRoIEZyZWV3YXkKLQkJCQlGb3J0IFdvcnRoIFR4IDc2MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1GNSAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgQ28uLEx0ZAotMDAwOUY1ICAgICAoYmFzZSAxNikJCUVtZXJzb24gTmV0d29yayBQb3dlciBDby4sTHRkCi0JCQkJMS9GLDMvRiBFbGVjdHJpYyBCdWlsZGluZyBIdWF3ZWkgQmFzZSxCYQotCQkJCUxvbmdnYW5nLFNoZW56aGVuIE11bmljaXBhbGl0eSxQZW9wbGXCocKvcwotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwMjkKLQkJCQlDSElOQQotCi0wMC0wOS1GNiAgIChoZXgpCQlTaGVuemhlbiBFYXN0ZXJuIERpZ2l0YWwgVGVjaCBMdGQuCi0wMDA5RjYgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gRWFzdGVybiBEaWdpdGFsIFRlY2ggTHRkLgotCQkJCVNoZW56aGVuIEZ1dGlhbiBDaGVnb25nbWlhbyBUYWlyYW4KLQkJCQlUZWNobm9sb2d5IFBhcmsgMjEwIC0gM0MKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQ4Ci0JCQkJQ0hJTkEKLQotMDAtMDktRjcgICAoaGV4KQkJU0VELCBhIGRpdmlzaW9uIG9mIENhbGlhbgotMDAwOUY3ICAgICAoYmFzZSAxNikJCVNFRCwgYSBkaXZpc2lvbiBvZiBDYWxpYW4KLQkJCQkxOCBJbm5ub3ZhdGlvbiBCb3VsZXZhcmQKLQkJCQlQLk8uIEJveCAxNDY0Ci0JCQkJU2Fza2F0b29uIFNhc2thdGNoZXdhbiAoU0spIFM3SyAzUDcKLQkJCQlDQU5BREEKLQotMDAtMDktRjggICAoaGV4KQkJVU5JTU8gVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwMDlGOCAgICAgKGJhc2UgMTYpCQlVTklNTyBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCUJBTkdCQUUgRE9ORyA0NzktMTIKLQkJCQlTRU9DSE8tR1UsCi0JCQkJU0VPVUwgIDEzNy04MjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMDktRjkgICAoaGV4KQkJQVJUIEpBUEFOIENPLiwgTFRELgotMDAwOUY5ICAgICAoYmFzZSAxNikJCUFSVCBKQVBBTiBDTy4sIExURC4KLQkJCQkzMjItNywgSWNoaW5vdHN1Ym8sCi0JCQkJTmFrYWhhcmEta3UKLQkJCQlLYXdhc2FraSBLYW5hZ2F3YSAyMTEtMDAxNgotCQkJCUpBUEFOCi0KLTAwLTA5LUZCICAgKGhleCkJCVBoaWxpcHMgUGF0aWVudCBNb25pdG9yaW5nCi0wMDA5RkIgICAgIChiYXNlIDE2KQkJUGhpbGlwcyBQYXRpZW50IE1vbml0b3JpbmcKLQkJCQlIZXdsZXR0LVBhY2thcmQtU3RyLjIKLQkJCQlCb2VibGluZ2VuICA3MTAzNAotCQkJCUdFUk1BTlkKLQotMDAtMDktRkMgICAoaGV4KQkJSVBGTEVYIEluYy4KLTAwMDlGQyAgICAgKGJhc2UgMTYpCQlJUEZMRVggSW5jLgotCQkJCU1vd2EtQmxkZyAzRiwgMS0xNi02Ci0JCQkJRWJpc3UtbmlzaGkKLQkJCQlTaGlidXlhLWt1IFRva3lvIDE1MC0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMDktRkQgICAoaGV4KQkJVWJpbmV0aWNzIExpbWl0ZWQKLTAwMDlGRCAgICAgKGJhc2UgMTYpCQlVYmluZXRpY3MgTGltaXRlZAotCQkJCUNhbWJyaWRnZSBUZWNobm9sb2d5IENlbnRyZQotCQkJCU1lbGJvdXJuIEhlcnRmb3Jkc2hpcmUgU0c4IDZEUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTA5LUZFICAgKGhleCkJCURhaXN5IFRlY2hub2xvZ2llcywgSW5jLgotMDAwOUZFICAgICAoYmFzZSAxNikJCURhaXN5IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEyMDkgT3JhbmdlIFN0cmVldAotCQkJCUNvdW50eSBvZiBOZXcgQ2FzdGxlCi0JCQkJQ2l0eSBvZiBXaWxtaW5ndG9uIERFIDE5ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wOS1GRiAgIChoZXgpCQlYLm5ldCAyMDAwIEdtYkgKLTAwMDlGRiAgICAgKGJhc2UgMTYpCQlYLm5ldCAyMDAwIEdtYkgKLQkJCQlLb2VuaWdzYmVyZ2VyIFN0ci4gMmMKLQkJCQlSZWluaGVpbSAgNjQzNTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLTAwICAgKGhleCkJCU1lZGlhdGVrIENvcnAuCi0wMDBBMDAgICAgIChiYXNlIDE2KQkJTWVkaWF0ZWsgQ29ycC4KLQkJCQk4RiwgTm8gNjktNSwgU2VjLjIsIENodW5nIENoZW5nIEVhc3QgUmQuCi0JCQkJVGFpcGVpICAyNTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTAxICAgKGhleCkJCVNPSE93YXJlLCBJbmMuCi0wMDBBMDEgICAgIChiYXNlIDE2KQkJU09IT3dhcmUsIEluYy4KLQkJCQkzMDUwIENvcm9uYWRvIERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTAyICAgKGhleCkJCUFOTlNPIENPLiwgTFRELgotMDAwQTAyICAgICAoYmFzZSAxNikJCUFOTlNPIENPLiwgTFRELgotCQkJCTVGLCBOby4gMTAwLCBNaW4tQ2h1YW4gUm9hZCwgU2hpbmctVGllbgotCQkJCVNoaW5nLVRpZW4gQ2l0eSBUYWlwZWkgSHNpZW4gVGFpd2FuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtMDMgICAoaGV4KQkJRU5ERVNBIFNFUlZJQ0lPUywgUy5MLgotMDAwQTAzICAgICAoYmFzZSAxNikJCUVOREVTQSBTRVJWSUNJT1MsIFMuTC4KLQkJCQlBVkdEQSBQQVJBTC5MRUwsIDUxCi0JCQkJQkFSQ0VMT05BICAwODAwNAotCQkJCVNQQUlOCi0KLTAwLTBBLTA0ICAgKGhleCkJCTNDb20gTHRkCi0wMDBBMDQgICAgIChiYXNlIDE2KQkJM0NvbSBMdGQKLQkJCQlQZW9wbGVidWlsZGluZyAyCi0JCQkJUGVvcGxlYnVpbGRpbmcgRXN0YXRlLCBNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBBLTA1ICAgKGhleCkJCVdpZGF4IENvcnAuCi0wMDBBMDUgICAgIChiYXNlIDE2KQkJV2lkYXggQ29ycC4KLQkJCQkyNjkgU3RldmVucyBTdHJlZXQKLQkJCQlIeWFubmlzIE1BIDAyNjY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0wNiAgIChoZXgpCQlUZWxlZGV4IExMQwotMDAwQTA2ICAgICAoYmFzZSAxNikJCVRlbGVkZXggTExDCi0JCQkJNjMxMSBTYW4gSWduYWNpbyBBdmVudWUKLQkJCQlTYW4gSm9zZSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMDcgICAoaGV4KQkJV2ViV2F5T25lIEx0ZAotMDAwQTA3ICAgICAoYmFzZSAxNikJCVdlYldheU9uZSBMdGQKLQkJCQkxMSBLaW5nZmlzaGVyIENvdXJ0LAotCQkJCUhhbWJyaWRnZSBSb2FkCi0JCQkJTmV3YnVyeSBCZXJrc2hpcmUgUkcxNCA1U0oKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS0wOCAgIChoZXgpCQlBTFBJTkUgRUxFQ1RST05JQ1MsIElOQy4KLTAwMEEwOCAgICAgKGJhc2UgMTYpCQlBTFBJTkUgRUxFQ1RST05JQ1MsIElOQy4KLQkJCQkyMC0xIFlvc2hpbWEtS29neW9kYW5jaGkKLQkJCQlpd2FraS1jaXR5IEZ1a3VzaGltYSA5NzAtMTE5MgotCQkJCUpBUEFOCi0KLTAwLTBBLTA5ICAgKGhleCkJCVRhcmFDb20gSW50ZWdyYXRlZCBQcm9kdWN0cywgSW5jLgotMDAwQTA5ICAgICAoYmFzZSAxNikJCVRhcmFDb20gSW50ZWdyYXRlZCBQcm9kdWN0cywgSW5jLgotCQkJCTgzMCBTdGV3YXJ0IERyLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMEEgICAoaGV4KQkJU1VOSVggQ28uLCBMdGQuCi0wMDBBMEEgICAgIChiYXNlIDE2KQkJU1VOSVggQ28uLCBMdGQuCi0JCQkJM0ZsLiwgTm8uIDc2LCBCYXVnYXUgUmQuLAotCQkJCVNoaW5kaWFuIFRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTBCICAgKGhleCkJCVNlYWxldmVsIFN5c3RlbXMsIEluYy4KLTAwMEEwQiAgICAgKGJhc2UgMTYpCQlTZWFsZXZlbCBTeXN0ZW1zLCBJbmMuCi0JCQkJMTU1IFRlY2hub2xvZ3kgUGxhY2UKLQkJCQlMaWJlcnR5IFNDIDI5NjU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0wQyAgIChoZXgpCQlTY2llbnRpZmljIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0wMDBBMEMgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotCQkJCTIzMDAgV2luZHkgUmlkZ2UgUGFya3dheQotCQkJCVN1aXRlIDQwMCBTb3V0aAotCQkJCUF0bGFudGEgR0EgMzAzMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTBEICAgKGhleCkJCUZDSSBEZXV0c2NobGFuZCBHbWJICi0wMDBBMEQgICAgIChiYXNlIDE2KQkJRkNJIERldXRzY2hsYW5kIEdtYkgKLQkJCQlXZXJuZXJ3ZXJrZGFtbSAxNiwKLQkJCQlCZXJsaW4gIDEzNjI5IAotCQkJCUdFUk1BTlkKLQotMDAtMEEtMEUgICAoaGV4KQkJSW52aXZvIFJlc2VhcmNoIEluYy4KLTAwMEEwRSAgICAgKGJhc2UgMTYpCQlJbnZpdm8gUmVzZWFyY2ggSW5jLgotCQkJCTEyNjAxIFJlc2VhcmNoIFBhcmt3YXkKLQkJCQlPcmxhbmRvIEZsb3JpZGEgMzI4MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTBGICAgKGhleCkJCUlscnl1bmcgVGVsZXN5cywgSW5jCi0wMDBBMEYgICAgIChiYXNlIDE2KQkJSWxyeXVuZyBUZWxlc3lzLCBJbmMKLQkJCQlJbHJ5dW5nIGJsZGcsIDM0LTIsIENoZW9uaG8tZG9uZwotCQkJCUdhbmdkb25nLWd1Ci0JCQkJU0VPVUwgIDEzNC04NjEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtMTAgICAoaGV4KQkJRkFTVCBtZWRpYSBpbnRlZ3JhdGlvbnMgQUcKLTAwMEExMCAgICAgKGJhc2UgMTYpCQlGQVNUIG1lZGlhIGludGVncmF0aW9ucyBBRwotCQkJCVNjaMO2bmdydW5kIDI2Ci0JCQkJUm90a3JldXogQ2FudG9uIG9mIFp1ZyA2MzQzCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEEtMTEgICAoaGV4KQkJRXhQZXQgVGVjaG5vbG9naWVzLCBJbmMKLTAwMEExMSAgICAgKGJhc2UgMTYpCQlFeFBldCBUZWNobm9sb2dpZXMsIEluYwotCQkJCTZGLCBLeW9uZ2dpIFNtYWxsIEJ1c2luZXNzIENlbnRlcgotCQkJCSMxMTEtOCwgSXVpLWRvbmcsIFBhbGRhbC1ndSwKLQkJCQlTdXdvbiwgS3lvbmdnaS1kbywgNDQyLTI3MCAgNDQyLTc3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS0xMiAgIChoZXgpCQlBenlsZXggVGVjaG5vbG9neSwgSW5jCi0wMDBBMTIgICAgIChiYXNlIDE2KQkJQXp5bGV4IFRlY2hub2xvZ3ksIEluYwotCQkJCTctMkZsLiwgTm8uIDczOCBDaHVuZyBDaGVuZyBSb2FkLAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtMTMgICAoaGV4KQkJSG9uZXl3ZWxsIFZpZGVvIFN5c3RlbXMKLTAwMEExMyAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgVmlkZW8gU3lzdGVtcwotCQkJCTY1NTQgMTc2IFN0cmVldAotCQkJCVN1cnJleSBCQyBWM1MgNEc1Ci0JCQkJQ0FOQURBCi0KLTAwLTBBLTE0ICAgKGhleCkJCVRFQ08gYS5zLgotMDAwQTE0ICAgICAoYmFzZSAxNikJCVRFQ08gYS5zLgotCQkJCUhhdmxpY2tvdmEgMjYwCi0JCQkJS09MSU4gQ1ogMjgwIDU4Ci0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMEEtMTUgICAoaGV4KQkJU2lsaWNvbiBEYXRhLCBJbmMKLTAwMEExNSAgICAgKGJhc2UgMTYpCQlTaWxpY29uIERhdGEsIEluYwotCQkJCTQ2OTkgT2xkIElyb25zaWRlcyBEci4sICMxNTAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMTYgICAoaGV4KQkJTGFzc2VuIFJlc2VhcmNoCi0wMDBBMTYgICAgIChiYXNlIDE2KQkJTGFzc2VuIFJlc2VhcmNoCi0JCQkJMzE2OTUgRm9yd2FyZCBSb2FkCi0JCQkJTWFudG9uIENBIDk2MDU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0xNyAgIChoZXgpCQlORVNUQVIgQ09NTVVOSUNBVElPTlMsIElOQwotMDAwQTE3ICAgICAoYmFzZSAxNikJCU5FU1RBUiBDT01NVU5JQ0FUSU9OUywgSU5DCi0JCQkJTm8uNiwxOSBMYW5lIEJhZGUgUm9hZAotCQkJCUhTSU5DSFUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtMTggICAoaGV4KQkJVmljaGVsIEluYy4KLTAwMEExOCAgICAgKGJhc2UgMTYpCQlWaWNoZWwgSW5jLgotCQkJCTNGIEphbmcgQmxkZy4gOTItNiBZYW5namFlLWRvbmcsIFNlY2hvLWcKLQkJCQlTZW91bCAgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS0xOSAgIChoZXgpCQlWYWxlcmUgUG93ZXIsIEluYy4KLTAwMEExOSAgICAgKGJhc2UgMTYpCQlWYWxlcmUgUG93ZXIsIEluYy4KLQkJCQk2NjEgTi4gUGxhbm8gUmQuCi0JCQkJUmljaGFyZHNvbiBUZXhhcyA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMUEgICAoaGV4KQkJSW1lcmdlIEx0ZAotMDAwQTFBICAgICAoYmFzZSAxNikJCUltZXJnZSBMdGQKLQkJCQlVbml0IDYsIEJhciBIaWxsIEJ1c2luZXNzIFBhcmsKLQkJCQlTYXhvbiBXYXkKLQkJCQlCYXIgSGlsbCBDYW1icmlkZ2UgQ0IzIDhTTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBBLTFCICAgKGhleCkJCVN0cmVhbSBMYWJzCi0wMDBBMUIgICAgIChiYXNlIDE2KQkJU3RyZWFtIExhYnMKLQkJCQlMZW5pbnNraWUgZ29yaSAxLCBiaWxkIDc3Ci0JCQkJTW9za293ICAxMTk5OTIKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMEEtMUMgICAoaGV4KQkJQnJpZGdlIEluZm9ybWF0aW9uIENvLiwgTHRkLgotMDAwQTFDICAgICAoYmFzZSAxNikJCUJyaWRnZSBJbmZvcm1hdGlvbiBDby4sIEx0ZC4KLQkJCQlOby4zLCBMYW5lIDEwNiwgV3UtS3VuZyAyIFJkLiwKLQkJCQlXdS1LdSBJbmQuIFBhcmssCi0JCQkJVGFpcGVpICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTFEICAgKGhleCkJCU9wdGljYWwgQ29tbXVuaWNhdGlvbnMgUHJvZHVjdHMgSW5jLgotMDAwQTFEICAgICAoYmFzZSAxNikJCU9wdGljYWwgQ29tbXVuaWNhdGlvbnMgUHJvZHVjdHMgSW5jLgotCQkJCTIwOTYxIEtuYXBwIFN0LgotCQkJCUNoYXRzd29ydGggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTFFICAgKGhleCkJCVJlZC1NIFByb2R1Y3RzIExpbWl0ZWQKLTAwMEExRSAgICAgKGJhc2UgMTYpCQlSZWQtTSBQcm9kdWN0cyBMaW1pdGVkCi0JCQkJTmVwdHVuZSBIb3VzZQotCQkJCU1lcmN1cnkgUGFyaywgV3ljb21iZSBMYW5lCi0JCQkJV29vYnVybiBHcmVlbiBCdWNraW5naGFtc2hpcmUgSFAxMCAwSEgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS0xRiAgIChoZXgpCQlBUlQgV0FSRSBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMEExRiAgICAgKGJhc2UgMTYpCQlBUlQgV0FSRSBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQk4MDYgQWNlIFRlY2hubyBUb3dlciAjMSwgMTk3LTE3Ci0JCQkJR3Vyby1kb25nLCBHdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtMjAgICAoaGV4KQkJU1ZBIE5ldHdvcmtzLCBJbmMuCi0wMDBBMjAgICAgIChiYXNlIDE2KQkJU1ZBIE5ldHdvcmtzLCBJbmMuCi0JCQkJODQwIEYgQXZlLiwgU3VpdGUgMTA0Ci0JCQkJUGxhbm8gVFggNzUwNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTIxICAgKGhleCkJCUludGVncmEgVGVsZWNvbSBDby4gTHRkCi0wMDBBMjEgICAgIChiYXNlIDE2KQkJSW50ZWdyYSBUZWxlY29tIENvLiBMdGQKLQkJCQk3dGggZmxvb3IgSHdheW91bmcgQmxkLiAxMTItMgotCQkJCUthcmFrLWRvbmcgU29ucGEtZ3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTIyICAgKGhleCkJCUFtcGVyaW9uIEluYwotMDAwQTIyICAgICAoYmFzZSAxNikJCUFtcGVyaW9uIEluYwotCQkJCTI1MCBBcG9sbG8gRHJpdmUKLQkJCQlDaGVsbXNmb3JkIE1BIDAxODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0yMyAgIChoZXgpCQlQYXJhbWEgTmV0d29ya3MgSW5jCi0wMDBBMjMgICAgIChiYXNlIDE2KQkJUGFyYW1hIE5ldHdvcmtzIEluYwotCQkJCTE5NTUgVGhlIEFsYW1lZGEKLQkJCQlTYW4gSm9zZSBDQSA5NTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMjQgICAoaGV4KQkJT2N0YXZlIENvbW11bmljYXRpb25zCi0wMDBBMjQgICAgIChiYXNlIDE2KQkJT2N0YXZlIENvbW11bmljYXRpb25zCi0JCQkJODUgTm9ydGh3ZXN0IEJvdWxldmFyZAotCQkJCU5hc2h1YSBOSCAwMzA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMjUgICAoaGV4KQkJQ0VSQUdPTiBORVRXT1JLUwotMDAwQTI1ICAgICAoYmFzZSAxNikJCUNFUkFHT04gTkVUV09SS1MKLQkJCQkyNCBSQVVFTCBXQUxMRU5CRVJHIFNUUkVFVAotCQkJCVRFTC1BVklWICA5NjcxOQotCQkJCUlTUkFFTAotCi0wMC0wQS0yNiAgIChoZXgpCQlDRUlBIFMucC5BLgotMDAwQTI2ICAgICAoYmFzZSAxNikJCUNFSUEgUy5wLkEuCi0JCQkJWm9uYSBJbmR1c3RyaWFsZSBkaSBWaWNpb21hZ2dpbyA1NAotCQkJCUFyZXp6byBBUiA1MjA0MAotCQkJCUlUQUxZCi0KLTAwLTBBLTI3ICAgKGhleCkJCUFwcGxlIENvbXB1dGVyLCBJbmMuCi0wMDBBMjcgICAgIChiYXNlIDE2KQkJQXBwbGUgQ29tcHV0ZXIsIEluYy4KLQkJCQkyMDY1MCBWYWxsZXkgR3JlZW4gRHJpdmUKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTI4ICAgKGhleCkJCU1vdG9yb2xhCi0wMDBBMjggICAgIChiYXNlIDE2KQkJTW90b3JvbGEKLQkJCQk2MDAgTi4gVVMgSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0yOSAgIChoZXgpCQlQYW4gRGFjb20gTmV0d29ya2luZyBBRwotMDAwQTI5ICAgICAoYmFzZSAxNikJCVBhbiBEYWNvbSBOZXR3b3JraW5nIEFHCi0JCQkJRHJlaWVpY2ggUGxhemEgMUIKLQkJCQlEcmVpZWljaCBIZXNzZW4gRC02MzMwMwotCQkJCUdFUk1BTlkKLQotMDAtMEEtMkEgICAoaGV4KQkJUVNJIFN5c3RlbXMgSW5jLgotMDAwQTJBICAgICAoYmFzZSAxNikJCVFTSSBTeXN0ZW1zIEluYy4KLQkJCQk3IFJheW1vbmQgQXZlbnVlCi0JCQkJQnVpbGRpbmcgQiwgVW5pdCAxMQotCQkJCVNhbGVtIE5IIDAzMDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0yQiAgIChoZXgpCQlFdGhlcnN0dWZmCi0wMDBBMkIgICAgIChiYXNlIDE2KQkJRXRoZXJzdHVmZgotCQkJCTIwOCBXLiBNaW1vc2EgQ2lyY2xlCi0JCQkJU2FuIE1hcmNvcyBUWCA3ODY2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMkMgICAoaGV4KQkJQWN0aXZlIFRjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAwQTJDICAgICAoYmFzZSAxNikJCUFjdGl2ZSBUY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkxNi0yMywgU2hpYmF1cmEgMi1DaG9tZSwKLQkJCQlNaW5hdG8ta3UsCi0JCQkJVG9reW8gVG9reW8gMTA4LTAwMjMKLQkJCQlKQVBBTgotCi0wMC0wQS0yRCAgIChoZXgpCQlDYWJvdCBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0wMDBBMkQgICAgIChiYXNlIDE2KQkJQ2Fib3QgQ29tbXVuaWNhdGlvbnMgTGltaXRlZAotCQkJCVZlcm9uYSBIb3VzZQotCQkJCUZpbHdvb2QgUm9hZAotCQkJCUJyaXN0b2wgR2xvdWNlc3RlcnNoaXJlIEJTMTYgM1JZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtMkUgICAoaGV4KQkJTUFQTEUgTkVUV09SS1MgQ08uLCBMVEQKLTAwMEEyRSAgICAgKGJhc2UgMTYpCQlNQVBMRSBORVRXT1JLUyBDTy4sIExURAotCQkJCTYwMiwgRG9uZ3doYQotCQkJCTM0OS0yNCwgU2hpbmRhZWJhbmctRG9uZywgRG9uZ2phay1HdQotCQkJCVNFT1VMICAxNTYtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTJGICAgKGhleCkJCUFydG5peCBJbmMuCi0wMDBBMkYgICAgIChiYXNlIDE2KQkJQXJ0bml4IEluYy4KLQkJCQlDaHVuZ2ppbiBCL0QsIDQ3NS0yMiBCYW5nYmFlLCBTZW9jaG8KLQkJCQlTZW91bCAgMTM3LTgxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS0zMCAgIChoZXgpCQlKb2huc29uIENvbnRyb2xzLUFTRwotMDAwQTMwICAgICAoYmFzZSAxNikJCUpvaG5zb24gQ29udHJvbHMtQVNHCi0JCQkJOTE1IEVhc3QgMzJuZCBTdHJlZXQKLQkJCQlIb2xsYW5kIE1JIDQ5NDIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0zMSAgIChoZXgpCQlIQ1YgQ29uc3VsdGluZwotMDAwQTMxICAgICAoYmFzZSAxNikJCUhDViBDb25zdWx0aW5nCi0JCQkJUCBPIEJveCAzNjkyCi0JCQkJSGVsZW5zdmFsZSBUb3duIENlbnRyZSA0MjEyCi0JCQkJUXVlZW5zbGFuZCAgIDQyMTIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtMzIgICAoaGV4KQkJWHNpZG8gQ29ycG9yYXRpb24KLTAwMEEzMiAgICAgKGJhc2UgMTYpCQlYc2lkbyBDb3Jwb3JhdGlvbgotCQkJCTNGLDItOC0xMyxTaGliYS1EYWltb24sCi0JCQkJTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwNS0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMEEtMzMgICAoaGV4KQkJRW11bGV4IENvcnBvcmF0aW9uCi0wMDBBMzMgICAgIChiYXNlIDE2KQkJRW11bGV4IENvcnBvcmF0aW9uCi0JCQkJMjAyMSBPcHBvcnR1bml0eSBEcml2ZQotCQkJCVN1aXRlIDEKLQkJCQlSb3NldmlsbGUgQ0EgOTU2NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM0ICAgKGhleCkJCUlkZW50aWNhcmQgU3lzdGVtcyBJbmNvcnBvcmF0ZWQKLTAwMEEzNCAgICAgKGJhc2UgMTYpCQlJZGVudGljYXJkIFN5c3RlbXMgSW5jb3Jwb3JhdGVkCi0JCQkJNDAgQ2l0YXRpb24gTGFuZQotCQkJCUxhbmNhc3RlciBQZW5uc3lsdmFuaWEgMTc2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM1ICAgKGhleCkJCVhpbGlueAotMDAwQTM1ICAgICAoYmFzZSAxNikJCVhpbGlueAotCQkJCTIxMDAgTG9naWMgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NDExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtMzYgICAoaGV4KQkJU3luZWxlYyBUZWxlY29tIE11bHRpbWVkaWEKLTAwMEEzNiAgICAgKGJhc2UgMTYpCQlTeW5lbGVjIFRlbGVjb20gTXVsdGltZWRpYQotCQkJCVpvbmUgSW5kdXN0cmllbGxlCi0JCQkJU2FpbnQgU2VybmluIHN1ciBSYW5jZSBBdmV5cm9uIEYtMTIzODAKLQkJCQlGUkFOQ0UKLQotMDAtMEEtMzcgICAoaGV4KQkJUHJvY2VyYSBOZXR3b3JrcywgSW5jLgotMDAwQTM3ICAgICAoYmFzZSAxNikJCVByb2NlcmEgTmV0d29ya3MsIEluYy4KLQkJCQkxMjk5IE9ybGVhbnMgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM4ICAgKGhleCkJCUFwYW5pIE5ldHdvcmtzCi0wMDBBMzggICAgIChiYXNlIDE2KQkJQXBhbmkgTmV0d29ya3MKLQkJCQkxODAwIEUuIEltcGVyaWFsIEh3eQotCQkJCVN1aXRlIDIxMAotCQkJCUJyZWEgQ0EgOTI4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTM5ICAgKGhleCkJCUxvUEEgSW5mb3JtYXRpb24gVGVjaG5vbG9neQotMDAwQTM5ICAgICAoYmFzZSAxNikJCUxvUEEgSW5mb3JtYXRpb24gVGVjaG5vbG9neQotCQkJCTcxMC05LCBEYWUgTGltIDMtRG9uZwotCQkJCVlvdW5nIERldW5nIHBvLWd1IFNlb3VsLCBLb3JlYSAxNTAtODE0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTNBICAgKGhleCkJCUotVEhSRUUgSU5URVJOQVRJT05BTCBIb2xkaW5nIENvLiwgTHRkLgotMDAwQTNBICAgICAoYmFzZSAxNikJCUotVEhSRUUgSU5URVJOQVRJT05BTCBIb2xkaW5nIENvLiwgTHRkLgotCQkJCU5vLiAxLCBZdS0zIFJkLiwgWW91dGggSW5kdXN0cmlhbCBQYXJrCi0JCQkJWWFuZy1tZWksIFRhb3l1YW4gSHNpZW4gIDMyNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtM0IgICAoaGV4KQkJR0NUIFNlbWljb25kdWN0b3IsIEluYwotMDAwQTNCICAgICAoYmFzZSAxNikJCUdDVCBTZW1pY29uZHVjdG9yLCBJbmMKLQkJCQkyMTIxIFJpbmd3b29kIEF2ZW51ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS0zQyAgIChoZXgpCQlFbmVycG9pbnQgTHRkLgotMDAwQTNDICAgICAoYmFzZSAxNikJCUVuZXJwb2ludCBMdGQuCi0JCQkJS2Fpdm9wdWlzdG9udGllIDMzCi0JCQkJUmF1bWEgIDI2MTAwCi0JCQkJRklOTEFORAotCi0wMC0wQS0zRCAgIChoZXgpCQlFbG8gU2lzdGVtYXMgRWxldHJvbmljb3MgUy5BLgotMDAwQTNEICAgICAoYmFzZSAxNikJCUVsbyBTaXN0ZW1hcyBFbGV0cm9uaWNvcyBTLkEuCi0JCQkJUnVhIEVkdSBDaGF2ZXMsIDU0NwotCQkJCVBvcnRvIEFsZWdyZSBSUyA5MC4yNDAtNjIwCi0JCQkJQlJBWklMCi0KLTAwLTBBLTNFICAgKGhleCkJCUVBRFMgVGVsZWNvbQotMDAwQTNFICAgICAoYmFzZSAxNikJCUVBRFMgVGVsZWNvbQotCQkJCUxhbmRzaHV0ZXIgU3RyYXNzZSAyNgotCQkJCU11bmljaCBCYXZhcmlhIDg1NzE2Ci0JCQkJR0VSTUFOWQotCi0wMC0wQS0zRiAgIChoZXgpCQlEYXRhIEVhc3QgQ29ycG9yYXRpb24KLTAwMEEzRiAgICAgKGJhc2UgMTYpCQlEYXRhIEVhc3QgQ29ycG9yYXRpb24KLQkJCQk0LTQxLTEwIE1pbmFtaS1PZ2lrdWJvCi0JCQkJU3VnaW5hbWkta3UgVE9LWU8gMTY3LTAwNTIKLQkJCQlKQVBBTgotCi0wMC0wQS00MCAgIChoZXgpCQlDcm93biBBdWRpbyAtLSBIYXJtYW5tIEludGVybmF0aW9uYWwKLTAwMEE0MCAgICAgKGJhc2UgMTYpCQlDcm93biBBdWRpbyAtLSBIYXJtYW5tIEludGVybmF0aW9uYWwKLQkJCQkxNzE4IFcuIE1pc2hhd2FrYSBSZAotCQkJCUVsa2hhcnQgSU4gNDY1MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTQxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEE0MSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTQyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEE0MiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTQzICAgKGhleCkJCUNodW5naHdhIFRlbGVjb20gQ28uLCBMdGQuCi0wMDBBNDMgICAgIChiYXNlIDE2KQkJQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQkxMiwgTGFuZSA1NTEsIE1pbi1Uc3UgUm9hZAotCQkJCVNlYy4gNSBZYW5nLU1laSwKLQkJCQlUYW95dWFuICAzMjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTQ0ICAgKGhleCkJCUF2ZXJ5IERlbm5pc29uIERldXRzY2hsYW5kIEdtYkgKLTAwMEE0NCAgICAgKGJhc2UgMTYpCQlBdmVyeSBEZW5uaXNvbiBEZXV0c2NobGFuZCBHbWJICi0JCQkJT2htc3RyLiAzCi0JCQkJRWNoaW5nICA4NTM4NgotCQkJCUdFUk1BTlkKLQotMDAtMEEtNDUgICAoaGV4KQkJQXVkaW8tVGVjaG5pY2EgQ29ycC4KLTAwMEE0NSAgICAgKGJhc2UgMTYpCQlBdWRpby1UZWNobmljYSBDb3JwLgotCQkJCU5hcnVzZSAxLDM0OAotCQkJCU1hY2hpZGEgVG9reW8gMTk0LTg1NjYKLQkJCQlKQVBBTgotCi0wMC0wQS00NiAgIChoZXgpCQlBUk8gV0VMRElORyBURUNITk9MT0dJRVMgU0FTCi0wMDBBNDYgICAgIChiYXNlIDE2KQkJQVJPIFdFTERJTkcgVEVDSE5PTE9HSUVTIFNBUwotCQkJCVpJIGRlIE1vbnQgc3VyIExvaXIKLQkJCQlDaGF0ZWF1IGR1IExvaXIgc2FydGhlIDcyNTAwCi0JCQkJRlJBTkNFCi0KLTAwLTBBLTQ3ICAgKGhleCkJCUFsbGllZCBWaXNpb24gVGVjaG5vbG9naWVzCi0wMDBBNDcgICAgIChiYXNlIDE2KQkJQWxsaWVkIFZpc2lvbiBUZWNobm9sb2dpZXMKLQkJCQlUYXNjaGVud2VnIDJhCi0JCQkJU3RhZHRyb2RhIFRow7xyaW5nZW4gMDc2NDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLTQ4ICAgKGhleCkJCUFsYmF0cm9uIFRlY2hub2xvZ3kKLTAwMEE0OCAgICAgKGJhc2UgMTYpCQlBbGJhdHJvbiBUZWNobm9sb2d5Ci0JCQkJNkYsIE5vIDcxNiwgQ2h1bmcgQ2hlbmcsCi0JCQkJQ2h1bmctSG8gQ2l0eSBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS00OSAgIChoZXgpCQlGNSBOZXR3b3JrcywgSW5jLgotMDAwQTQ5ICAgICAoYmFzZSAxNikJCUY1IE5ldHdvcmtzLCBJbmMuCi0JCQkJNDAxIEVsbGlvdHQgQXZlLiBXLgotCQkJCVNlYXR0bGUgV0EgOTgxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTRBICAgKGhleCkJCVRhcmdhIFN5c3RlbXMgTHRkLgotMDAwQTRBICAgICAoYmFzZSAxNikJCVRhcmdhIFN5c3RlbXMgTHRkLgotCQkJCTE5MDUgR3JhbmR0ZWNoIENlbnRyZSwKLQkJCQk4IE9uIFBpbmcgU3QuICBTaXUgTGVrIFl1ZW4KLQkJCQlTaGF0aW4gTi5ULiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMEEtNEIgICAoaGV4KQkJRGF0YVBvd2VyIFRlY2hub2xvZ3ksIEluYy4KLTAwMEE0QiAgICAgKGJhc2UgMTYpCQlEYXRhUG93ZXIgVGVjaG5vbG9neSwgSW5jLgotCQkJCU9uZSBBbGV3aWZlIENlbnRlcgotCQkJCUNhbWJyaWRnZSBNQSAwMjE0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNEMgICAoaGV4KQkJTW9sZWN1bGFyIERldmljZXMgQ29ycG9yYXRpb24KLTAwMEE0QyAgICAgKGJhc2UgMTYpCQlNb2xlY3VsYXIgRGV2aWNlcyBDb3Jwb3JhdGlvbgotCQkJCTEzMTEgT3JsZWFucyBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNEQgICAoaGV4KQkJTm9yaXR6IENvcnBvcmF0aW9uCi0wMDBBNEQgICAgIChiYXNlIDE2KQkJTm9yaXR6IENvcnBvcmF0aW9uCi0JCQkJNSBNaW5hbWktRnV0YW1pLAotCQkJCUZ1dGFtaS1jaG8sCi0JCQkJQWthc2hpLXNoaSBIeW9nbyA2NzQtMDA5MwotCQkJCUpBUEFOCi0KLTAwLTBBLTRFICAgKGhleCkJCVVOSVRFSyBFbGVjdHJvbmljcyBJTkMuCi0wMDBBNEUgICAgIChiYXNlIDE2KQkJVU5JVEVLIEVsZWN0cm9uaWNzIElOQy4KLQkJCQkxLTE4LTQKLQkJCQlPaG1vcmkta2l0YQotCQkJCU9odGEta3UgVG9reW8gMTQzLTAwMTYKLQkJCQlKQVBBTgotCi0wMC0wQS00RiAgIChoZXgpCQlCcmFpbiBCb3hlcyBMaW1pdGVkCi0wMDBBNEYgICAgIChiYXNlIDE2KQkJQnJhaW4gQm94ZXMgTGltaXRlZAotCQkJCVVuaXQgM2MsIFdhdmVydHJlZSBCb3VsZXZhcmQgU291dGgKLQkJCQlXYXZlcnRyZWUgVGVjaG5vbG9neSBQYXJrCi0JCQkJTGl2ZXJwb29sIE1lcnNleXNpZGUgTDcgOVBGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtNTAgICAoaGV4KQkJUkVNT1RFSyBDT1JQT1JBVElPTgotMDAwQTUwICAgICAoYmFzZSAxNikJCVJFTU9URUsgQ09SUE9SQVRJT04KLQkJCQk2Ri02LCBObyA3NywgU2VjIDEsIEhTSU4gVEFJIFdVIFJPQUQsCi0JCQkJSFNJLUNISUggVEFJUEVJIEhTSUVOIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtNTEgICAoaGV4KQkJR3lyb1NpZ25hbCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwQTUxICAgICAoYmFzZSAxNikJCUd5cm9TaWduYWwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk1RixOby4gNzcsTGlkZSBTdC4KLQkJCQlaaG9uZ2hlIENpdHkgVGFpcGVpIENvdW50eSAyMzU1NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtNTIgICAoaGV4KQkJQXNpYVJGIEx0ZC4KLTAwMEE1MiAgICAgKGJhc2UgMTYpCQlBc2lhUkYgTHRkLgotCQkJCTRGLiwgTm8uMiwgTGFuZSA1NjAKLQkJCQlaaG9uZ3poZW5nIFJkLgotCQkJCVhpbmRpYW4gQ2l0eSBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS01MyAgIChoZXgpCQlJbnRyb25pY3MsIEluY29ycG9yYXRlZAotMDAwQTUzICAgICAoYmFzZSAxNikJCUludHJvbmljcywgSW5jb3Jwb3JhdGVkCi0JCQkJMjAyMCBMYWZheWV0dGUgQmx2ZC4KLQkJCQlGcmVkZXJpY2tzYnVyZyBWaXJnaW5pYSAyMjQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNTQgICAoaGV4KQkJTGFndW5hIEhpbGxzLCBJbmMuCi0wMDBBNTQgICAgIChiYXNlIDE2KQkJTGFndW5hIEhpbGxzLCBJbmMuCi0JCQkJMS0yNS0xIDM1RiBGbC4sIE5pc2hpc2hpbmp1a3UKLQkJCQlTaGluanVrdS1rdSBUb2t5byAxNjMwNjM1Ci0JCQkJSkFQQU4KLQotMDAtMEEtNTUgICAoaGV4KQkJTUFSS0VNIENvcnBvcmF0aW9uCi0wMDBBNTUgICAgIChiYXNlIDE2KQkJTUFSS0VNIENvcnBvcmF0aW9uCi0JCQkJMTUwIENvbmdyZXNzIFN0cmVldAotCQkJCUtlZW5lIE5IIDAzNDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS01NiAgIChoZXgpCQlISVRBQ0hJIE1heGVsbCBMdGQuCi0wMDBBNTYgICAgIChiYXNlIDE2KQkJSElUQUNISSBNYXhlbGwgTHRkLgotCQkJCTYtMjAtMSBLaW51bm9kYWkKLQkJCQlZYXdhcmEtbXVyYSwgVHN1a3ViYS1ndW4gSUJBUkFLSSAzMDAtMjQ5NgotCQkJCUpBUEFOCi0KLTAwLTBBLTU3ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55IC0gU3RhbmRhcmRzCi0wMDBBNTcgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkgLSBTdGFuZGFyZHMKLQkJCQkxMDk1NSBUYW50YXUgQXZlbnVlCi0JCQkJTWFpbHN0b3AgNDEzOAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNTggICAoaGV4KQkJSW5nZW5pZXVyLUJ1ZXJvIEZyZXllciAmIFNpZWdlbAotMDAwQTU4ICAgICAoYmFzZSAxNikJCUluZ2VuaWV1ci1CdWVybyBGcmV5ZXIgJiBTaWVnZWwKLQkJCQlOZXVlbmRvcmZzdHIuIDE4IGIKLQkJCQlIZW5uaWdzZG9yZiBCcmFuZGVuYnVyZyAxNjc2MQotCQkJCUdFUk1BTlkKLQotMDAtMEEtNTkgICAoaGV4KQkJSFcgc2VydmVyCi0wMDBBNTkgICAgIChiYXNlIDE2KQkJSFcgc2VydmVyCi0JCQkJSXRhbHNrYSAxNQotCQkJCVByYWd1ZSAyIEN6ZWNoIFJlcHVibGljIDEyMCAwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTBBLTVBICAgKGhleCkJCUdyZWVuTkVUIFRlY2hub2xvZ2llcyBDby4sTHRkLgotMDAwQTVBICAgICAoYmFzZSAxNikJCUdyZWVuTkVUIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCU5vLjEwLCBRaW9uZ3l1IFJvYWQsU2NpZW5jZXMtYmFzZWQgSW5kdXMKLQkJCQlOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTBBLTVCICAgKGhleCkJCVBvd2VyLU9uZSBhcwotMDAwQTVCICAgICAoYmFzZSAxNikJCVBvd2VyLU9uZSBhcwotCQkJCVAuTy4gQm94IDE1NDMKLQkJCQlEcmFtbWVuICAzMDA3Ci0JCQkJTk9SV0FZCi0KLTAwLTBBLTVDICAgKGhleCkJCUNhcmVsIHMucC5hLgotMDAwQTVDICAgICAoYmFzZSAxNikJCUNhcmVsIHMucC5hLgotCQkJCVZpYSBkZWxsJyBJbmR1c3RyaWEsIDExCi0JCQkJQnJ1Z2luZSBQYWRvdmEgMzUwMjAKLQkJCQlJVEFMWQotCi0wMC0wQS01RCAgIChoZXgpCQlQVUMgRm91bmRlciAoTVNDKSBCZXJoYWQKLTAwMEE1RCAgICAgKGJhc2UgMTYpCQlQVUMgRm91bmRlciAoTVNDKSBCZXJoYWQKLQkJCQlMb3QgRy0xICYgRy0yLCBJbmN1YmF0b3IgMQotCQkJCVRlY2hub2xvZ3kgUGFyayBNYWxheXNpYQotCQkJCUt1YWxhIEx1bXB1ciBXUCA1NzAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTBBLTVFICAgKGhleCkJCTNDT00gQ29ycG9yYXRpb24KLTAwMEE1RSAgICAgKGJhc2UgMTYpCQkzQ09NIENvcnBvcmF0aW9uCi0JCQkJNTQwMCBCYXlmcm9udCBQbGF6YQotCQkJCU0vUyA1MTE5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTItODE0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNUYgICAoaGV4KQkJYWxtZWRpbyBpbmMuCi0wMDBBNUYgICAgIChiYXNlIDE2KQkJYWxtZWRpbyBpbmMuCi0JCQkJMzItMTMsIHNha2FlLWNobyAyIGNob21lCi0JCQkJaGlnYXNoaW11cmF5YW1hLXNoaSB0b2t5byAxODktMDAxMwotCQkJCUpBUEFOCi0KLTAwLTBBLTYwICAgKGhleCkJCUF1dG9zdGFyIFRlY2hub2xvZ3kgUHRlIEx0ZAotMDAwQTYwICAgICAoYmFzZSAxNikJCUF1dG9zdGFyIFRlY2hub2xvZ3kgUHRlIEx0ZAotCQkJCVVuaXQgMDQtMTAgVEVDSHBsYWNlIElJCi0JCQkJU2luZ2Fwb3JlIFNpbmdhcG9yZSA1Njk4NzYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMEEtNjEgICAoaGV4KQkJQ2VsbGlueCBTeXN0ZW1zIEluYy4KLTAwMEE2MSAgICAgKGJhc2UgMTYpCQlDZWxsaW54IFN5c3RlbXMgSW5jLgotCQkJCTQwOCBXb29zdW5nIENoYXJhY3RlcjE5OSBvZmZpY2V0ZWwKLQkJCQk0NjctMjQgZG9nb2stZG9uZyBrYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS04NTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtNjIgICAoaGV4KQkJQ3JpbmlzIE5ldHdvcmtzLCBJbmMuCi0wMDBBNjIgICAgIChiYXNlIDE2KQkJQ3JpbmlzIE5ldHdvcmtzLCBJbmMuCi0JCQkJMjA5OSBOLiBDb2xsaW5zIEJsdmQsIFN1aXRlIDIwMAotCQkJCVJpY2hhcmRzb24gVFggNzUwODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTYzICAgKGhleCkJCURIRCBHbWJICi0wMDBBNjMgICAgIChiYXNlIDE2KQkJREhEIEdtYkgKLQkJCQlIYWZlcmtvcm5zdHJhc3NlIDUKLQkJCQlMZWlwemlnIFNhY2hzZW4gMDQxMjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLTY0ICAgKGhleCkJCUVyYWNvbSBUZWNobm9sb2dpZXMKLTAwMEE2NCAgICAgKGJhc2UgMTYpCQlFcmFjb20gVGVjaG5vbG9naWVzCi0JCQkJMjggR3JlZyBDaGFwcGVsbCBEcml2ZQotCQkJCUJ1cmxlaWdoIEhlYWRzIFFsZCA0MjIwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTBBLTY1ICAgKGhleCkJCUdlbnRlY2hNZWRpYS5jby4sbHRkLgotMDAwQTY1ICAgICAoYmFzZSAxNikJCUdlbnRlY2hNZWRpYS5jby4sbHRkLgotCQkJCXNvbHZpdCBibGRnIDJmLCA0MDItOCwgeWFuZ2phZS1kb24sCi0JCQkJc2VvY2hvLWd1LCBzZW91bCAxMzctODk5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLTY2ICAgKGhleCkJCU1JVFNVQklTSEkgRUxFQ1RSSUMgU1lTVEVNICYgU0VSVklDRSBDTy4sTFRELgotMDAwQTY2ICAgICAoYmFzZSAxNikJCU1JVFNVQklTSEkgRUxFQ1RSSUMgU1lTVEVNICYgU0VSVklDRSBDTy4sTFRELgotCQkJCTEtNC0xMyBPT1lPRE9OQUtBLEtJVEEtS1UKLQkJCQlPU0FLQSAgNTMxLTAwNzYKLQkJCQlKQVBBTgotCi0wMC0wQS02NyAgIChoZXgpCQlPbmdDb3JwCi0wMDBBNjcgICAgIChiYXNlIDE2KQkJT25nQ29ycAotCQkJCTQ4MSBIYWNrZW5zYWNrIEF2ZS4KLQkJCQlIYWNrZW5zYWNrIE5KIDA3NjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS02OCAgIChoZXgpCQlTb2xhckZsYXJlIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDBBNjggICAgIChiYXNlIDE2KQkJU29sYXJGbGFyZSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTk1MDEgSmVyb25pbW8KLQkJCQlTdWl0ZSAxMDAKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTY5ICAgKGhleCkJCVNVTk5ZIGJlbGwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMEE2OSAgICAgKGJhc2UgMTYpCQlTVU5OWSBiZWxsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJIzUwMiBCVVdPTiBCL0QgMTA3LTQ1IEJBTlBPLURPTkcKLQkJCQlTRU9DSE8tS1UKLQkJCQlTRU9VTCAgMTM3LTgwNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS02QSAgIChoZXgpCQlTVk0gTWljcm93YXZlcyBzLnIuby4KLTAwMEE2QSAgICAgKGJhc2UgMTYpCQlTVk0gTWljcm93YXZlcyBzLnIuby4KLQkJCQlVIE1yYXpvdmt5IDUKLQkJCQlQcmFoYSA1ICAxNTAwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTBBLTZCICAgKGhleCkJCVRhZGlyYW4gVGVsZWNvbSBCdXNpbmVzcyBTeXN0ZW1zIExURAotMDAwQTZCICAgICAoYmFzZSAxNikJCVRhZGlyYW4gVGVsZWNvbSBCdXNpbmVzcyBTeXN0ZW1zIExURAotCQkJCTE4IEhhc2l2aW0gU3QuCi0JCQkJUC5PLkJveCA0NTAKLQkJCQlQZXRhY2ggVGlrdmEgIDQ5MTA1Ci0JCQkJSVNSQUVMCi0KLTAwLTBBLTZDICAgKGhleCkJCVdhbGNoZW0gQ29ycG9yYXRpb24KLTAwMEE2QyAgICAgKGJhc2UgMTYpCQlXYWxjaGVtIENvcnBvcmF0aW9uCi0JCQkJNSBCb3ludG9uIFJvYWQKLQkJCQlIb2xsaXN0b24gTUEgMDE3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTZEICAgKGhleCkJCUVLUyBFbGVrdHJvbmlrc2VydmljZSBHbWJICi0wMDBBNkQgICAgIChiYXNlIDE2KQkJRUtTIEVsZWt0cm9uaWtzZXJ2aWNlIEdtYkgKLQkJCQlFbnpzdHIuIDkKLQkJCQlLb3Jud2VzdGhlaW0gQmFkZW4gV8O8cnRlbWJlcmcgNzA4MDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLTZFICAgKGhleCkJCUJyb2FkY2FzdCBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMEE2RSAgICAgKGJhc2UgMTYpCQlCcm9hZGNhc3QgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJNiBTb3B3aXRoIFBhcmssIFJveWNlIENsb3NlCi0JCQkJV2VzdCBQb3J0d2F5IEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJQW5kb3ZlciBIYW1wc2hpcmUgU1AxMCAzVEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS02RiAgIChoZXgpCQlaeUZMRVggVGVjaG5vbG9naWVzIEluYwotMDAwQTZGICAgICAoYmFzZSAxNikJCVp5RkxFWCBUZWNobm9sb2dpZXMgSW5jCi0JCQkJMkZsLiBOby4gNTggUGFyayBBdmUuIElJCi0JCQkJUy5CLkkuUC4sIEhzaW5jaHUgIDMwMDc3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS03MCAgIChoZXgpCQlNUExTIEZvcnVtCi0wMDBBNzAgICAgIChiYXNlIDE2KQkJTVBMUyBGb3J1bQotCQkJCTM5MzU1IENhbGlmb3JuaWEgU3RyZWV0Ci0JCQkJU3VpdGUgMzA3Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNzEgICAoaGV4KQkJQXZyaW8gVGVjaG5vbG9naWVzLCBJbmMKLTAwMEE3MSAgICAgKGJhc2UgMTYpCQlBdnJpbyBUZWNobm9sb2dpZXMsIEluYwotCQkJCTI2NTUgQSBQYXJrIENlbnRlciBEcml2ZQotCQkJCVNpbWkgVmFsbGV5IENBIDkxMzU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS03MiAgIChoZXgpCQlTVEVDLCBJTkMuCi0wMDBBNzIgICAgIChiYXNlIDE2KQkJU1RFQywgSU5DLgotCQkJCTMwMDEgRGFpbWxlciBTdHJlZXQKLQkJCQlTYW50YSBBbmEgQ0EgOTI3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTczICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YQotMDAwQTczICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgQXRsYW50YQotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlNUyA1LjI0MjUKLQkJCQlMYXdyZW5jZXZpbGxlIEdhIDMwMDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS03NCAgIChoZXgpCQlNYW50aWNvbSBOZXR3b3JrcyBJbmMuCi0wMDBBNzQgICAgIChiYXNlIDE2KQkJTWFudGljb20gTmV0d29ya3MgSW5jLgotCQkJCTE0MDE2LUMgU3VsbHlmaWVsZCBDaXJjbGUKLQkJCQlDaGFudGlsbHkgVkEgMjAxNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTc1ICAgKGhleCkJCUNhdGVycGlsbGFyLCBJbmMKLTAwMEE3NSAgICAgKGJhc2UgMTYpCQlDYXRlcnBpbGxhciwgSW5jCi0JCQkJTWFpbHN0b3AgTG9jYXRpb24gQUM2MTMwCi0JCQkJUE8gQm94IDYxMAotCQkJCU1vc3N2aWxsZSBJTCA2MTU1Mi0wNjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS03NiAgIChoZXgpCQlCZWlkYSBKYWRlIEJpcmQgSHVhZ3VhbmcgVGVjaG5vbG9neSBDby4sTHRkCi0wMDBBNzYgICAgIChiYXNlIDE2KQkJQmVpZGEgSmFkZSBCaXJkIEh1YWd1YW5nIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLjIwNyBDaGVuZ2Z1IFJvYWQsIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDA4NzEKLQkJCQlDSElOQQotCi0wMC0wQS03NyAgIChoZXgpCQlCbHVld2lyZSBUZWNobm9sb2dpZXMgTExDCi0wMDBBNzcgICAgIChiYXNlIDE2KQkJQmx1ZXdpcmUgVGVjaG5vbG9naWVzIExMQwotCQkJCTQyMCBOLiBPIFN0LgotCQkJCVR1bGFyZSBDYSA5MzI3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtNzggICAoaGV4KQkJT0xJVEVDCi0wMDBBNzggICAgIChiYXNlIDE2KQkJT0xJVEVDCi0JCQkJQi5QLiA1OTIKLQkJCQk4NywgcnVlIE1hYyBNYWhvbgotCQkJCU5BTkNZIGNlZGV4ICA1NDAwOQotCQkJCUZSQU5DRQotCi0wMC0wQS03OSAgIChoZXgpCQlBbGxpZWQgVGVsZXNpcyBLLksuIGNvcmVnYSBkaXZpc2lvbgotMDAwQTc5ICAgICAoYmFzZSAxNikJCUFsbGllZCBUZWxlc2lzIEsuSy4gY29yZWdhIGRpdmlzaW9uCi0JCQkJMS0xOS0yMCwgU2hpbnlva29oYW1hCi0JCQkJS291aG9rdS1rdQotCQkJCVlva29oYW1hLWNpdHkgS2FuYWdhd2Eta2VuIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMEEtN0EgICAoaGV4KQkJS3lvcml0c3UgRWxlY3RyaWMgQ28uLCBMdGQuCi0wMDBBN0EgICAgIChiYXNlIDE2KQkJS3lvcml0c3UgRWxlY3RyaWMgQ28uLCBMdGQuCi0JCQkJMi0zLTE3Ci0JCQkJSXdhdG8tbWluYW1pCi0JCQkJS29tYWUtc2hpIFRva3lvIDIwMS0wMDA1Ci0JCQkJSkFQQU4KLQotMDAtMEEtN0IgICAoaGV4KQkJQ29ybmVsaXVzIENvbnN1bHQKLTAwMEE3QiAgICAgKGJhc2UgMTYpCQlDb3JuZWxpdXMgQ29uc3VsdAotCQkJCUFtIFNpZXBlbiAxNwotCQkJCUJvY2h1bSBOUlcgNDQ4MDMKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLTdDICAgKGhleCkJCVRlY3RvbiBMdGQKLTAwMEE3QyAgICAgKGJhc2UgMTYpCQlUZWN0b24gTHRkCi0JCQkJRmlzaGVycyBDb3VydAotCQkJCUZpc2hlcnMgUG9uZAotCQkJCUVhc3RsZWlnaCBIYW1wc2hpcmUgU081MCA3SEcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS03RCAgIChoZXgpCQlWYWxvLCBJbmMuCi0wMDBBN0QgICAgIChiYXNlIDE2KQkJVmFsbywgSW5jLgotCQkJCTEzNTEgUmVkd29vZCBXYXkKLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtN0UgICAoaGV4KQkJVGhlIEFkdmFudGFnZSBHcm91cAotMDAwQTdFICAgICAoYmFzZSAxNikJCVRoZSBBZHZhbnRhZ2UgR3JvdXAKLQkJCQkxNjEwIERlcyBQZXJlcyBSb2FkCi0JCQkJU3VpdGUgMzcwCi0JCQkJU3QuIExvdWlzIE1PIDYzMTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS03RiAgIChoZXgpCQlUZXJhZG9uIEluZHVzdHJpZXMsIEluYwotMDAwQTdGICAgICAoYmFzZSAxNikJCVRlcmFkb24gSW5kdXN0cmllcywgSW5jCi0JCQkJNzUwMCAybmQgU1QgTlcKLQkJCQlBbGJ1cXVlcnF1ZSBOTSA4NzEyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtODAgICAoaGV4KQkJVGVsa29uZXQgSW5jLgotMDAwQTgwICAgICAoYmFzZSAxNikJCVRlbGtvbmV0IEluYy4KLQkJCQkyMDM3NCBTZW5lY2EgTWVhZG93cyBQa3d5Ci0JCQkJR2VybWFudG93biBNRCAyMDc4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtODEgICAoaGV4KQkJVEVJTUEgQXVkaW90ZXggUy5MLgotMDAwQTgxICAgICAoYmFzZSAxNikJCVRFSU1BIEF1ZGlvdGV4IFMuTC4KLQkJCQlDLyBUaXJ2aWEsIDYsIGxvY2FsIEIKLQkJCQlNYWRyaWQgIDI4MDQwCi0JCQkJU1BBSU4KLQotMDAtMEEtODIgICAoaGV4KQkJVEFUU1VUQSBTWVNURU0gRUxFQ1RST05JQ1MgQ08uLExURC4KLTAwMEE4MiAgICAgKGJhc2UgMTYpCQlUQVRTVVRBIFNZU1RFTSBFTEVDVFJPTklDUyBDTy4sTFRELgotCQkJCUlXQVRBVFlPVTItMy0xCi0JCQkJSElHQVNISU9PU0FLQS1TSEkgT09TQUtBLUZVIDU3OC04NTg1Ci0JCQkJSkFQQU4KLQotMDAtMEEtODMgICAoaGV4KQkJU0FMVE8gU1lTVEVNUyBTLkwuCi0wMDBBODMgICAgIChiYXNlIDE2KQkJU0FMVE8gU1lTVEVNUyBTLkwuCi0JCQkJQXJrb3R6LCA5Ci0JCQkJUG9sw61nb25vIExhbmJhcnJlbiBPaWFydHp1biAyMDE4MAotCQkJCVNQQUlOCi0KLTAwLTBBLTg0ICAgKGhleCkJCVJhaW5zdW4gRW50ZXJwcmlzZSBDby4sIEx0ZC4KLTAwMEE4NCAgICAgKGJhc2UgMTYpCQlSYWluc3VuIEVudGVycHJpc2UgQ28uLCBMdGQuCi0JCQkJTm8uMTQtMyAsIExhbmUgMjM1LCBIby1DaGVuIFJvYWQKLQkJCQlCYW9DaWFvIFJvYWQKLQkJCQlTaGluRGlhbiBDaXR5IFRBSVBFSSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTg1ICAgKGhleCkJCVBMQVQnQzIsSW5jCi0wMDBBODUgICAgIChiYXNlIDE2KQkJUExBVCdDMixJbmMKLQkJCQkyLTMtNiBTT1RPS0FOREEKLQkJCQlDSElZT0RBLUtVIFRPS1lPIDEwMS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMEEtODYgICAoaGV4KQkJTGVuemUKLTAwMEE4NiAgICAgKGJhc2UgMTYpCQlMZW56ZQotCQkJCVBPIGJveCAxMDEzNTIKLQkJCQlIYW1lbG4gTG93ZXIgU2F4b255IDMxNzYzCi0JCQkJR0VSTUFOWQotCi0wMC0wQS04NyAgIChoZXgpCQlJbnRlZ3JhdGVkIE1pY3JvbWFjaGluZXMgSW5jLgotMDAwQTg3ICAgICAoYmFzZSAxNikJCUludGVncmF0ZWQgTWljcm9tYWNoaW5lcyBJbmMuCi0JCQkJMTQwMCBTLiBTaGFtcm9jayBBdmUuCi0JCQkJTW9ucm92aWEgQ0EgOTEwMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTg4ICAgKGhleCkJCUluQ3lwaGVyIFMuQS4KLTAwMEE4OCAgICAgKGJhc2UgMTYpCQlJbkN5cGhlciBTLkEuCi0JCQkJMTggcnVlIGRlIGwnRWF1Ci0JCQkJTHV4ZW1ib3VyZyAgMTQ0OQotCQkJCUxVWEVNQk9VUkcKLQotMDAtMEEtODkgICAoaGV4KQkJQ3JldmFsIFN5c3RlbXMsIEluYy4KLTAwMEE4OSAgICAgKGJhc2UgMTYpCQlDcmV2YWwgU3lzdGVtcywgSW5jLgotCQkJCTJGLDI0LTQsU2Fud29sZ29rLURvbmcsU3VuZ2J1ay1LdSxTZW91bCwKLQkJCQlTZW91bCAgMTM2LTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS04QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBOEEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS04QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBOEIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERSLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS04QyAgIChoZXgpCQlHdWFyZHdhcmUgU3lzdGVtcyBMdGQuCi0wMDBBOEMgICAgIChiYXNlIDE2KQkJR3VhcmR3YXJlIFN5c3RlbXMgTHRkLgotCQkJCVVsbG9pIHV0IDEwMi4KLQkJCQlCdWRhcGVzdCAgSC0xMDg5Ci0JCQkJSFVOR0FSWQotCi0wMC0wQS04RCAgIChoZXgpCQlFVVJPVEhFUk0gTElNSVRFRAotMDAwQThEICAgICAoYmFzZSAxNikJCUVVUk9USEVSTSBMSU1JVEVECi0JCQkJRkFSQURBWSBDTE9TRQotCQkJCURVUlJJTkdUT04KLQkJCQlXT1JUSElORyBXRVNUIFNVU1NFWCBCTjEzIDNQTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBBLThFICAgKGhleCkJCUludmFjb20gTHRkCi0wMDBBOEUgICAgIChiYXNlIDE2KQkJSW52YWNvbSBMdGQKLQkJCQlCdXNpbmVzcyBhbmQgVGVjaG5vbG9neSBDZW50cmUKLQkJCQlCZXNzZW1lciBEcml2ZQotCQkJCVN0ZXZlbmFnZSBIZXJ0Zm9yZHNoaXJlIFNHMSAyRFgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS04RiAgIChoZXgpCQlBc2thIEludGVybmF0aW9uYWwgSW5jLgotMDAwQThGICAgICAoYmFzZSAxNikJCUFza2EgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJMzA2IFJpdmVyc2V2ZW4KLQkJCQk0LTE4IEhhcmVnaS1Ib25tYWNoaQotCQkJCUtvY2hpICA3ODAtODA4OAotCQkJCUpBUEFOCi0KLTAwLTBBLTkwICAgKGhleCkJCUJheXNpZGUgSW50ZXJhY3RpdmUsIEluYy4KLTAwMEE5MCAgICAgKGJhc2UgMTYpCQlCYXlzaWRlIEludGVyYWN0aXZlLCBJbmMuCi0JCQkJMzMwIEJpc2NheW5lIEJsdmQuCi0JCQkJU3VpdGUgODAxCi0JCQkJTWlhbWkgRkwgMzMxMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTkxICAgKGhleCkJCUhlbW9DdWUgQUIKLTAwMEE5MSAgICAgKGJhc2UgMTYpCQlIZW1vQ3VlIEFCCi0JCQkJQm94IDEyMDQKLQkJCQnDg+KAnm5nZWxob2xtIFNrw4PCpW5lIDI2MjIzCi0JCQkJU1dFREVOCi0KLTAwLTBBLTkyICAgKGhleCkJCVByZXNvbnVzIENvcnBvcmF0aW9uCi0wMDBBOTIgICAgIChiYXNlIDE2KQkJUHJlc29udXMgQ29ycG9yYXRpb24KLQkJCQk3MjU3IEZsb3JpZGEgQmx2ZC4KLQkJCQlCYXRvbiBSb3VnZSBMb3Vpc2lhbmEgNzA4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTkzICAgKGhleCkJCVcyIE5ldHdvcmtzLCBJbmMuCi0wMDBBOTMgICAgIChiYXNlIDE2KQkJVzIgTmV0d29ya3MsIEluYy4KLQkJCQk1ODA4IE5XIExhYyBMZW1hbiBEcml2ZQotCQkJCUlzc2FxdWFoIFdhc2hpbmd0b24gOTgwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTk0ICAgKGhleCkJCVNoYW5nSGFpIGNlbGxpbmsgQ08uLCBMVEQKLTAwMEE5NCAgICAgKGJhc2UgMTYpCQlTaGFuZ0hhaSBjZWxsaW5rIENPLiwgTFRECi0JCQkJQzMgTWVpTG9uZyBaaG9uZ1hpbiBJbmR1c3RyaWFsIFBhcmssTm8uMQotCQkJCVNoYW5nSGFpICAyMDAyMzcKLQkJCQlDSElOQQotCi0wMC0wQS05NSAgIChoZXgpCQlBcHBsZSBDb21wdXRlciwgSW5jLgotMDAwQTk1ICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJTS9TIDI2LUMKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLTk2ICAgKGhleCkJCU1FV1RFTCBURUNITk9MT0dZIElOQy4KLTAwMEE5NiAgICAgKGJhc2UgMTYpCQlNRVdURUwgVEVDSE5PTE9HWSBJTkMuCi0JCQkJRTE1RkwuIElUIFZFTlRVUkUgVE9XRVIKLQkJCQk3OCBLQVJBSy1ET05HLCBTT05HUEEtR1UKLQkJCQlTRU9VTCAgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS05NyAgIChoZXgpCQlTT05JQ2JsdWUsIEluYy4KLTAwMEE5NyAgICAgKGJhc2UgMTYpCQlTT05JQ2JsdWUsIEluYy4KLQkJCQkyODQxIE1pc3Npb24gQ29sbGVnZSBCbHZkLgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS05OCAgIChoZXgpCQlNK0YgR3dpbm5lciBHbWJIICYgQ28KLTAwMEE5OCAgICAgKGJhc2UgMTYpCQlNK0YgR3dpbm5lciBHbWJIICYgQ28KLQkJCQlXZWlkZW5iYXVtc3dlZyA5MSBhCi0JCQkJSGFtYnVyZyAgMjEwMjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLTk5ICAgKGhleCkJCUNhbGFtcCBXaXJlbGVzcyBOZXR3b3JrcyBJbmMKLTAwMEE5OSAgICAgKGJhc2UgMTYpCQlDYWxhbXAgV2lyZWxlc3MgTmV0d29ya3MgSW5jCi0JCQkJMTAxLTU1NDAgRmVycmllciBTdHJlZXQKLQkJCQlUb3duIG9mIE1vdW50LVJveWFsIFF1ZWJlYyBINFAgMU0yCi0JCQkJQ0FOQURBCi0KLTAwLTBBLTlBICAgKGhleCkJCUFpcHRlayBJbnRlcm5hdGlvbmFsIEluYwotMDAwQTlBICAgICAoYmFzZSAxNikJCUFpcHRlayBJbnRlcm5hdGlvbmFsIEluYwotCQkJCU5vIDUtMSBJbm5vdmF0aW9uIFJkIDEKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW4tQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTlCICAgKGhleCkJCVRCIEdyb3VwIEluYwotMDAwQTlCICAgICAoYmFzZSAxNikJCVRCIEdyb3VwIEluYwotCQkJCSA0RiBOUkVHIEhvbmdvIDMtY2hvbWUgQmxkZy4sIDMtMjYtNiwgSG5nbywgQnVua3lvLWt1LCAKLQkJCQlUb2t5byAgMTEzLTAwMwotCQkJCUpBUEFOCi0KLTAwLTBBLTlDICAgKGhleCkJCVNlcnZlciBUZWNobm9sb2d5LCBJbmMuCi0wMDBBOUMgICAgIChiYXNlIDE2KQkJU2VydmVyIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxMDQwIFNhbmRoaWxsIERyLgotCQkJCVJlbm8gTmV2YWRhIDg5NTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS05RCAgIChoZXgpCQlLaW5nIFlvdW5nIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTAwMEE5RCAgICAgKGJhc2UgMTYpCQlLaW5nIFlvdW5nIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLQkJCQkxRmwuLCBOby4gOSwgTGFuZSAyNiwgR2FuZ2NoaSBSZC4sIE5laWh1Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLTlFICAgKGhleCkJCUJyb2FkV2ViIENvcnBvcnRhdGlvbgotMDAwQTlFICAgICAoYmFzZSAxNikJCUJyb2FkV2ViIENvcnBvcnRhdGlvbgotCQkJCTNGLCAyNC0xLCBJbmR1c3RyeSBFYXN0IFJkLiwgSVYsCi0JCQkJU2NpZW5jZSBCYXNlZCwgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS05RiAgIChoZXgpCQlQYW5uYXdheSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEE5RiAgICAgKGJhc2UgMTYpCQlQYW5uYXdheSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyMTUgQ29tbWVyY2UgV2F5Ci0JCQkJUG9ydHNtb3V0aCBOSCAwMzgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQTAgICAoaGV4KQkJQ2VkYXIgUG9pbnQgQ29tbXVuaWNhdGlvbnMKLTAwMEFBMCAgICAgKGJhc2UgMTYpCQlDZWRhciBQb2ludCBDb21tdW5pY2F0aW9ucwotCQkJCTE2IFJvdXRlIDExMSwgQmxkZyAzCi0JCQkJRGVycnkgTkggMDMwMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUExICAgKGhleCkJCVYgViBTIExpbWl0ZWQKLTAwMEFBMSAgICAgKGJhc2UgMTYpCQlWIFYgUyBMaW1pdGVkCi0JCQkJSFBJQywgMS4gQWluc2xpZSBSb2FkICwKLQkJCQlIaWxsaW5ndG9uCi0JCQkJR2xhc2dvdyBTY290bGFuZCBHNTIgNFJVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEEtQTIgICAoaGV4KQkJU1lTVEVLIElOQy4KLTAwMEFBMiAgICAgKGJhc2UgMTYpCQlTWVNURUsgSU5DLgotCQkJCUpDT00gQlVJTERJTkcgNDAyLCBPSkVPTi1ET05HIDEyNC00LAotCQkJCVVJV0FORy1TSSBHWVVOR0dJLURPIDQzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtQTMgICAoaGV4KQkJU0hJTUFGVUpJIEVMRUNUUklDIENPLixMVEQuCi0wMDBBQTMgICAgIChiYXNlIDE2KQkJU0hJTUFGVUpJIEVMRUNUUklDIENPLixMVEQuCi0JCQkJRGFpaHlha3Utc2VpbWVpIEthbWF0YSBCbGRnLjNGCi0JCQkJOC0xMS0xMSBOaXNoaWthbWF0YSxPdGEta3UKLQkJCQlUb2t5byAxNDQtMDA1MQotCQkJCUpBUEFOCi0KLTAwLTBBLUE0ICAgKGhleCkJCVNIQU5HSEFJIFNVUlZFSUxMQU5DRSBURUNITk9MT0dZIENPLExURAotMDAwQUE0ICAgICAoYmFzZSAxNikJCVNIQU5HSEFJIFNVUlZFSUxMQU5DRSBURUNITk9MT0dZIENPLExURAotCQkJCUZMLjI1QSxOTy44IENIQU5HWUFORyBST0FECi0JCQkJU0hBTkdIQUkgIDIwMDA4MgotCQkJCUNISU5BCi0KLTAwLTBBLUE1ICAgKGhleCkJCU1BWExJTksgSU5EVVNUUklFUyBMSU1JVEVECi0wMDBBQTUgICAgIChiYXNlIDE2KQkJTUFYTElOSyBJTkRVU1RSSUVTIExJTUlURUQKLQkJCQkyOUEgU0hFTlpIRU4gU1BFQ0lBTCBaT05FCi0JCQkJUFJFU1MgVE9XRVIKLQkJCQlTSEVOWkhFTiBHVUFOR0RPTkcgNTE4MDA5Ci0JCQkJQ0hJTkEKLQotMDAtMEEtQTYgICAoaGV4KQkJSG9jaGlraSBDb3Jwb3JhdGlvbgotMDAwQUE2ICAgICAoYmFzZSAxNikJCUhvY2hpa2kgQ29ycG9yYXRpb24KLQkJCQkyNDYsIFRTVVJVTUEKLQkJCQlNQUNISURBIFRPS1lPIDE5NC04NTc3Ci0JCQkJSkFQQU4KLQotMDAtMEEtQTcgICAoaGV4KQkJRkVJIEVsZWN0cm9uIE9wdGljcwotMDAwQUE3ICAgICAoYmFzZSAxNikJCUZFSSBFbGVjdHJvbiBPcHRpY3MKLQkJCQlBY2h0c2V3ZWcgTm9vcmQgNQotCQkJCUFBRSAzNAotCQkJCUVpbmRob3ZlbiAgNTY1MUdHCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEEtQTggICAoaGV4KQkJZVBpcGUgUHR5LiBMdGQuCi0wMDBBQTggICAgIChiYXNlIDE2KQkJZVBpcGUgUHR5LiBMdGQuCi0JCQkJUC5PLiBCb3ggMTQyOAotCQkJCVRvb3dvbmcKLQkJCQlCcmlzYmFuZSBRdWVlbnNsYW5kIDQwNjYKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtQTkgICAoaGV4KQkJQnJvb2tzIEF1dG9tYXRpb24gR21iSAotMDAwQUE5ICAgICAoYmFzZSAxNikJCUJyb29rcyBBdXRvbWF0aW9uIEdtYkgKLQkJCQlHb2VzY2h3aXR6ZXIgU3RyYXNzZSAyNQotCQkJCUplbmEgVGh1cmluZ2lhIDA3NzQ1Ci0JCQkJR0VSTUFOWQotCi0wMC0wQS1BQSAgIChoZXgpCQlBbHRpR2VuIENvbW11bmljYXRpb25zIEluYy4KLTAwMEFBQSAgICAgKGJhc2UgMTYpCQlBbHRpR2VuIENvbW11bmljYXRpb25zIEluYy4KLQkJCQk0NzQyNyBGcmVtb250IEJsdmQuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQUIgICAoaGV4KQkJVG95b3RhIFRlY2huaWNhbCBEZXZlbG9wbWVudCBDb3Jwb3JhdGlvbgotMDAwQUFCICAgICAoYmFzZSAxNikJCVRveW90YSBUZWNobmljYWwgRGV2ZWxvcG1lbnQgQ29ycG9yYXRpb24KLQkJCQkxLTIxLCBJbWFlLCBIYW5hbW90by1jaG8KLQkJCQlUb3lvdGEgQWljaGkgNDcwLTAzMzQKLQkJCQlKQVBBTgotCi0wMC0wQS1BQyAgIChoZXgpCQlUZXJyYVRlYyBFbGVjdHJvbmljIEdtYkgKLTAwMEFBQyAgICAgKGJhc2UgMTYpCQlUZXJyYVRlYyBFbGVjdHJvbmljIEdtYkgKLQkJCQlIZXJyZW5wZmFkIDM4Ci0JCQkJTmV0dGV0YWwgTlJXIDQxMzM0Ci0JCQkJR0VSTUFOWQotCi0wMC0wQS1BRCAgIChoZXgpCQlTdGFyZ2FtZXMgQ29ycG9yYXRpb24KLTAwMEFBRCAgICAgKGJhc2UgMTYpCQlTdGFyZ2FtZXMgQ29ycG9yYXRpb24KLQkJCQkxMyBTaGVyaWRhbiBDbG9zZQotCQkJCU1pbHBlcnJhIE5TVyAyMDMxCi0JCQkJQVVTVFJBTElBCi0KLTAwLTBBLUFFICAgKGhleCkJCVJvc2Vtb3VudCBQcm9jZXNzIEFuYWx5dGljYWwKLTAwMEFBRSAgICAgKGJhc2UgMTYpCQlSb3NlbW91bnQgUHJvY2VzcyBBbmFseXRpY2FsCi0JCQkJNjU3M0EgQ29jaHJhbiBSZC4KLQkJCQlTb2xvbiBPaGlvIDQ0MTM5LTM5MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUFGICAgKGhleCkJCVBpcGFsIFN5c3RlbXMKLTAwMEFBRiAgICAgKGJhc2UgMTYpCQlQaXBhbCBTeXN0ZW1zCi0JCQkJMjkwMyBCdW5rZXIgSGlsbCBMYW5lCi0JCQkJU3VpdGUgMjEwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUIwICAgKGhleCkJCUxPWVRFQyBlbGVjdHJvbmljcyBHbWJICi0wMDBBQjAgICAgIChiYXNlIDE2KQkJTE9ZVEVDIGVsZWN0cm9uaWNzIEdtYkgKLQkJCQlTdG9semVudGhhbGVyZ2Fzc2UgMjQvMwotCQkJCVZpZW5uYSBXaWVuIDEwODAKLQkJCQlBVVNUUklBCi0KLTAwLTBBLUIxICAgKGhleCkJCUdFTkVURUMgQ29ycG9yYXRpb24KLTAwMEFCMSAgICAgKGJhc2UgMTYpCQlHRU5FVEVDIENvcnBvcmF0aW9uCi0JCQkJTmlzaGlrdXJhLUxLIEJsZC4KLQkJCQlUb21paGlzYS1jaG91IDE2LTYKLQkJCQlTaGluanVrdS1rdSBUb2t5byAxNjItMDA2NwotCQkJCUpBUEFOCi0KLTAwLTBBLUIyICAgKGhleCkJCUZyZXNuZWwgV2lyZWxlc3MgU3lzdGVtcwotMDAwQUIyICAgICAoYmFzZSAxNikJCUZyZXNuZWwgV2lyZWxlc3MgU3lzdGVtcwotCQkJCTEzMzMgR2F0ZXdheSBEcml2ZQotCQkJCVN1aXRlIDEwMDcKLQkJCQlNZWxib3VybmUgRkwgMzI5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUIzICAgKGhleCkJCUZhLiBHSVJBCi0wMDBBQjMgICAgIChiYXNlIDE2KQkJRmEuIEdJUkEKLQkJCQlEYWhsaWVuc3RyYcODxbhlCi0JCQkJUmFkZXZvcm13YWxkIE5vcmRyaGVpbi1XZXN0ZmFsZW4gNDI0NzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLUI0ICAgKGhleCkJCUVUSUMgVGVsZWNvbW11bmljYXRpb25zCi0wMDBBQjQgICAgIChiYXNlIDE2KQkJRVRJQyBUZWxlY29tbXVuaWNhdGlvbnMKLQkJCQkxMywgY2hlbWluIGR1IHZpZXV4LWNoZW5lIFpJUlNUCi0JCQkJTUVZTEFOIElzZXJlIDM4MjQwCi0JCQkJRlJBTkNFCi0KLTAwLTBBLUI1ICAgKGhleCkJCURpZ2l0YWwgRWxlY3Ryb25pYyBOZXR3b3JrCi0wMDBBQjUgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBFbGVjdHJvbmljIE5ldHdvcmsKLQkJCQk4IHJ1ZSBkdSBzYWNyw6kgY29ldXIKLQkJCQlTYWludCBMYXVyZW50IHN1ciBTZXZyZSBWZW5kZWUgODUyOTAKLQkJCQlGUkFOQ0UKLQotMDAtMEEtQjYgICAoaGV4KQkJQ09NUFVORVRJWCwgSU5DCi0wMDBBQjYgICAgIChiYXNlIDE2KQkJQ09NUFVORVRJWCwgSU5DCi0JCQkJMjQyMCBNT1NTSURFIEJMVkQuCi0JCQkJTU9OUk9FVklMTEUgUEEgMTUxNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUI3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEFCNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUI4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEFCOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ2EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUI5ICAgKGhleCkJCUFzdGVyYSBUZWNobm9sb2dpZXMgQ29ycC4KLTAwMEFCOSAgICAgKGJhc2UgMTYpCQlBc3RlcmEgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJIDIzODAgV2F2ZXJsZXkgU3RyZWV0Ci0JCQkJUGFsbyBBbHRvIENBIDk0MzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1CQSAgIChoZXgpCQlBcmNvbiBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMEFCQSAgICAgKGJhc2UgMTYpCQlBcmNvbiBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlSbS4gMzcxMS0xMiwgMzcvRi4sIENhYmxlIFRWIFRvd2VyICwKLQkJCQkgOSBIb2kgU2hpbmcgUmQuLCBUc3VlbiBXYW4gLCBOLlQKLQkJCQlIb25nIEtvbmcgIAotCQkJCUNISU5BCi0KLTAwLTBBLUJCICAgKGhleCkJCVRhaXdhbiBTZWNvbSBDbywuIEx0ZAotMDAwQUJCICAgICAoYmFzZSAxNikJCVRhaXdhbiBTZWNvbSBDbywuIEx0ZAotCQkJCTEzRiwgMTA4LCBTZWMxLCBTaGluLVRhaSA1dGggUm9hZAotCQkJCUhzaS1DaGloIFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS1CQyAgIChoZXgpCQlTZWFicmlkZ2UgTHRkLgotMDAwQUJDICAgICAoYmFzZSAxNikJCVNlYWJyaWRnZSBMdGQuCi0JCQkJMyBIYW5hZ2FyIFN0LgotCQkJCU5ldmUtTmVlbWFuIEInCi0JCQkJSG9kLUhhc2hhcm9uIElzcmFlbCA0NTI0MQotCQkJCUlTUkFFTAotCi0wMC0wQS1CRCAgIChoZXgpCQlSdXBwcmVjaHQgJiBQYXRhc2huaWNrIENvLgotMDAwQUJEICAgICAoYmFzZSAxNikJCVJ1cHByZWNodCAmIFBhdGFzaG5pY2sgQ28uCi0JCQkJMjUgQ29ycG9yYXRlIENpcmNsZQotCQkJCUFsYmFueSBOWSAxMjIwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQkUgICAoaGV4KQkJT1BORVQgVGVjaG5vbG9naWVzIENPLiwgTFRELgotMDAwQUJFICAgICAoYmFzZSAxNikJCU9QTkVUIFRlY2hub2xvZ2llcyBDTy4sIExURC4KLQkJCQkzRiwgTk8uNSwgSW5kdXN0cnkgRS4gUmQuIElYLCBTY2llbmNlLUJhCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS1CRiAgIChoZXgpCQlISVJPVEEgU1MKLTAwMEFCRiAgICAgKGJhc2UgMTYpCQlISVJPVEEgU1MKLQkJCQlNYXR1a2F3YS1Lb3VneW91ZGFuY2hpCi0JCQkJU3V6YWthLXNoaSBOYWdhbm8gMzgyLTAwMDUKLQkJCQlKQVBBTgotCi0wMC0wQS1DMCAgIChoZXgpCQlGdXlvaCBWaWRlbyBJbmR1c3RyeSBDTy4sIExURC4KLTAwMEFDMCAgICAgKGJhc2UgMTYpCQlGdXlvaCBWaWRlbyBJbmR1c3RyeSBDTy4sIExURC4KLQkJCQk3LTI1IEhpZ2FzaGkgS2lib2dhb2thCi0JCQkJQXNhaGkta3UKLQkJCQlZb2tvaGFtYS1zaGkgS2FuYWdhd2Eta2VuIDI0Ni0wMDA4Ci0JCQkJSkFQQU4KLQotMDAtMEEtQzEgICAoaGV4KQkJRnV0dXJldGVsCi0wMDBBQzEgICAgIChiYXNlIDE2KQkJRnV0dXJldGVsCi0JCQkJMjE1ODAgU3RldmVucyBDcmVlayBCbHZkLCBTdWl0ZSAyMDgKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUMyICAgKGhleCkJCUZpYmVySG9tZSBUZWxlY29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ08uLExURAotMDAwQUMyICAgICAoYmFzZSAxNikJCUZpYmVySG9tZSBUZWxlY29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ08uLExURAotCQkJCU5vLjg4IFlvdUtleXVhbiBSb2FkLEhvbmdzaGFuIERpc3RyaWN0LFcKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi0wMC0wQS1DMyAgIChoZXgpCQllTSBUZWNobmljcyBDby4sIEx0ZC4KLTAwMEFDMyAgICAgKGJhc2UgMTYpCQllTSBUZWNobmljcyBDby4sIEx0ZC4KLQkJCQk3Ri4sIElUIFZlbnR1cmUgVG93ZXIuLCA3OCwKLQkJCQlHYXJha2Jvbi1Eb25nLCBTb25ncGEtR3UKLQkJCQlTZW91bCAgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQS1DNCAgIChoZXgpCQlEYWV3b28gVGVsZXRlY2ggQ28uLCBMdGQKLTAwMEFDNCAgICAgKGJhc2UgMTYpCQlEYWV3b28gVGVsZXRlY2ggQ28uLCBMdGQKLQkJCQkyNjUtMywgU2VvaHllb24sIEJ1bmRhbmcKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaSA0NjMtNzY5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLUM1ICAgKGhleCkJCUNvbG9yIEtpbmV0aWNzCi0wMDBBQzUgICAgIChiYXNlIDE2KQkJQ29sb3IgS2luZXRpY3MKLQkJCQkxMCBNaWxrIFN0cmVldAotCQkJCVN1aXRlIDExMDAKLQkJCQlCb3N0b24gTWFzYWNodXNldHRzIDAyMTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1DNiAgIChoZXgpCQlPdmVydHVyZSBOZXR3b3Jrcy4KLTAwMEFDNiAgICAgKGJhc2UgMTYpCQlPdmVydHVyZSBOZXR3b3Jrcy4KLQkJCQk2MzcgRGF2aXMgRHJpdmUKLQkJCQlNb3JyaXN2aWxsZSBOQyAyNzU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtQzcgICAoaGV4KQkJVW5pY2F0aW9uIEdyb3VwCi0wMDBBQzcgICAgIChiYXNlIDE2KQkJVW5pY2F0aW9uIEdyb3VwCi0JCQkJM0YuLCBOby4gNiwgV3UtS3VuZyA1UmQuLCBIc2luY2h1YW5nIENpdAotCQkJCVRhaXBlaSAgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS1DOCAgIChoZXgpCQlaUFNZUyBDTy4sTFRELiAoUGxhbm5pbmcmTWFuYWdlbWVudCkKLTAwMEFDOCAgICAgKGJhc2UgMTYpCQlaUFNZUyBDTy4sTFRELiAoUGxhbm5pbmcmTWFuYWdlbWVudCkKLQkJCQkxMDYgQWNlIFRlY2hubyBUb3dlcjEKLQkJCQkxOTctMTcgS3Vyby1Eb25nCi0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtQzkgICAoaGV4KQkJWmFtYmVlbCBJbmMKLTAwMEFDOSAgICAgKGJhc2UgMTYpCQlaYW1iZWVsIEluYwotCQkJCTQ1NzAwIE5vcnRocG9ydCBMb29wIEVhc3QKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1DQSAgIChoZXgpCQlZT0tPWUFNQSBTSE9LQUkgQ08uLEx0ZC4KLTAwMEFDQSAgICAgKGJhc2UgMTYpCQlZT0tPWUFNQSBTSE9LQUkgQ08uLEx0ZC4KLQkJCQk2LTk2IE1hdHN1bXVyYQotCQkJCUthbmF6YXdhIElzaGlrYXdhIDkyMC0wMzQ4Ci0JCQkJSkFQQU4KLQotMDAtMEEtQ0IgICAoaGV4KQkJWFBBSyBNU0EgR3JvdXAKLTAwMEFDQiAgICAgKGJhc2UgMTYpCQlYUEFLIE1TQSBHcm91cAotCQkJCUNhcmUgb2Y6IE1vbGV4IEZpYmVyIE9wdGljcwotCQkJCTUyMjQgS2F0cmluZSBBdmVudWUKLQkJCQlEb3duZXJzIEdyb3ZlIElMIDYwNTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1DQyAgIChoZXgpCQlXaW5ub3cgTmV0d29ya3MsIEluYy4KLTAwMEFDQyAgICAgKGJhc2UgMTYpCQlXaW5ub3cgTmV0d29ya3MsIEluYy4KLQkJCQk3MDEgRW1lcnNvbiBSb2FkCi0JCQkJU3VpdGUgMjQ0Ci0JCQkJU3QuIExvdWlzIE1PIDYzMTQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1DRCAgIChoZXgpCQlTdW5yaWNoIFRlY2hub2xvZ3kgTGltaXRlZAotMDAwQUNEICAgICAoYmFzZSAxNikJCVN1bnJpY2ggVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJVW5pdCAxMzAxLCBFYXN0ZXJuIENlbnRyZSwgMTA2NSBLaW5nJ3MgUgotCQkJCVF1YXJyeSBCYXkgIAotCQkJCUhPTkcgS09ORwotCi0wMC0wQS1DRSAgIChoZXgpCQlSQURJQU5URUNILCBJTkMuCi0wMDBBQ0UgICAgIChiYXNlIDE2KQkJUkFESUFOVEVDSCwgSU5DLgotCQkJCTItMSwgSU5EVVNUUlkgRUFTVCBSRC4gMSwgU0NJRU5DRS1CQVNFRAotCQkJCUlORFVTVFJJQUwgUEFSSwotCQkJCUhTSU4gQ0hVICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUNGICAgKGhleCkJCVBST1ZJREVPIE11bHRpbWVkaWEgQ28uIEx0ZC4KLTAwMEFDRiAgICAgKGJhc2UgMTYpCQlQUk9WSURFTyBNdWx0aW1lZGlhIENvLiBMdGQuCi0JCQkJNUYsIE5PLjgsIEFMTEVZIDIsIFRaVS1XRUkgTEFORSwKLQkJCQlDSFVORyBDSEVORyBSRC4sCi0JCQkJSFNJTiBUSUVOIENJVFkgVEFJUEVJIEhTSUVOLCAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUQwICAgKGhleCkJCU5paWdhdGEgRGV2ZWxvbWVudCBDZW50ZXIsICBGLkkuVC4gQ28uLCBMdGQuCi0wMDBBRDAgICAgIChiYXNlIDE2KQkJTmlpZ2F0YSBEZXZlbG9tZW50IENlbnRlciwgIEYuSS5ULiBDby4sIEx0ZC4KLQkJCQlBa2FuZS1OaWlnYXRhIEJ1aWxkaW5nIDJGCi0JCQkJMS02LTcgQXRhZ28KLQkJCQlOaWlnYXRhIE5paWdhdGEgUHJlZmVjdHVyZSA5NTAtMDk0NAotCQkJCUpBUEFOCi0KLTAwLTBBLUQxICAgKGhleCkJCU1XUwotMDAwQUQxICAgICAoYmFzZSAxNikJCU1XUwotCQkJCTEyLCBxdWFpIFBhcGFjaW5vCi0JCQkJTklDRSAgMDYzMDAKLQkJCQlGUkFOQ0UKLQotMDAtMEEtRDIgICAoaGV4KQkJSkVQSUNPIENvcnBvcmF0aW9uCi0wMDBBRDIgICAgIChiYXNlIDE2KQkJSkVQSUNPIENvcnBvcmF0aW9uCi0JCQkJTmlzaGktc2hpbmp5dWt1Mi03LTEKLQkJCQlEYWktaWNoaSBTZWltZWkgQkxERy4KLQkJCQlTaGluanl1a3Uta3UgVG9reW8gMTYzLTA3MjkKLQkJCQlKQVBBTgotCi0wMC0wQS1EMyAgIChoZXgpCQlJTklURUNIIENvLiwgTHRkCi0wMDBBRDMgICAgIChiYXNlIDE2KQkJSU5JVEVDSCBDby4sIEx0ZAotCQkJCTNGLCBJTklURUNIIEJsZGcsIDU1OS01LAotCQkJCUdlb3lvLURvbmcsIFNvbmdwYS1HdQotCQkJCVNlb3VsIFNvbmdwYSAxMzgtODE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLUQ0ICAgKGhleCkJCUNvcmVCZWxsIFN5c3RlbXMgSW5jLgotMDAwQUQ0ICAgICAoYmFzZSAxNikJCUNvcmVCZWxsIFN5c3RlbXMgSW5jLgotCQkJCUhUVkMgMjMxNyBLQUlTVAotCQkJCTM3My0xIEd1c2VvbmctZG9uZwotCQkJCVl1c2VvbmctR3UgRGFlamVvbiAzMDUtNzAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLUQ1ICAgKGhleCkJCUJyYWluY2hpbGQgRWxlY3Ryb25pYyBDby4sIEx0ZC4KLTAwMEFENSAgICAgKGJhc2UgMTYpCQlCcmFpbmNoaWxkIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0JCQkJTm8uMjA5LCBDaHVuZyBZYW5nIFJkLiwKLQkJCQlOYW4gS2FuZyBEaXN0cmljdCwKLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtRDYgICAoaGV4KQkJQmVhbVJlYWNoIE5ldHdvcmtzCi0wMDBBRDYgICAgIChiYXNlIDE2KQkJQmVhbVJlYWNoIE5ldHdvcmtzCi0JCQkJNzU1IE5vcnRoIE1hdGhpbGRhIEF2ZQotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1ENyAgIChoZXgpCQlPcmlnaW4gRUxFQ1RSSUMgQ08uLExURC4KLTAwMEFENyAgICAgKGJhc2UgMTYpCQlPcmlnaW4gRUxFQ1RSSUMgQ08uLExURC4KLQkJCQkxLTE4LTEKLQkJCQlUQUtBREEKLQkJCQlUT1NISU1BIFdBUkQgVE9LWU8gTUVULiAxNzEtODU1NQotCQkJCUpBUEFOCi0KLTAwLTBBLUQ4ICAgKGhleCkJCUlQQ3NlcnYgVGVjaG5vbG9neSBDb3JwLgotMDAwQUQ4ICAgICAoYmFzZSAxNikJCUlQQ3NlcnYgVGVjaG5vbG9neSBDb3JwLgotCQkJCTZmLE5vLjEwNyxQYW4tSHNpbiBSZAotCQkJCVBhbi1DaGlhbyBUYWlwZWkgMjIwNDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUQ5ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDBBRDkgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMEEtREEgICAoaGV4KQkJVmluZGljYXRvciBUZWNobm9sb2dpZXMKLTAwMEFEQSAgICAgKGJhc2UgMTYpCQlWaW5kaWNhdG9yIFRlY2hub2xvZ2llcwotCQkJCTUzMDcgSW5kdXN0cmlhbCBPYWtzIEJsdmQuCi0JCQkJU3VpdGUgMTMwCi0JCQkJQXVzdGluIFRleGFzIDc4NzM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1EQiAgIChoZXgpCQlTa3lQaWxvdCBOZXR3b3JrLCBJbmMKLTAwMEFEQiAgICAgKGJhc2UgMTYpCQlTa3lQaWxvdCBOZXR3b3JrLCBJbmMKLQkJCQkxMzAxIFNob3Jld2F5IFJvYWQKLQkJCQlCZWxtb250IENBIDk0MDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1EQyAgIChoZXgpCQlSdWdnZWRDb20gSW5jLgotMDAwQURDICAgICAoYmFzZSAxNikJCVJ1Z2dlZENvbSBJbmMuCi0JCQkJMzAgV2hpdG1vcmUgUm9hZAotCQkJCVdvb2RicmlkZ2UgT250YXJpbyBMNEwgN1o0Ci0JCQkJQ0FOQURBCi0KLTAwLTBBLUREICAgKGhleCkJCUFsbHdvcnggQ29ycC4KLTAwMEFERCAgICAgKGJhc2UgMTYpCQlBbGx3b3J4IENvcnAuCi0JCQkJMzAwIE1haW4gU3RyZWV0Ci0JCQkJU3VpdGUgMTEKLQkJCQlFYXN0IFJvY2hlc3RlciBOWSAxNDQ0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtREUgICAoaGV4KQkJSGFwcHkgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMEFERSAgICAgKGJhc2UgMTYpCQlIYXBweSBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotCQkJCTQyLTExIFdvbk1pLURvbmcKLQkJCQlXb25NaS1HdQotCQkJCUJ1Y2hlb24tQ2l0eSBLeXVuZ0dpLURvIDQyMC0xMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtREYgICAoaGV4KQkJR2VubnVtIENvcnBvcmF0aW9uCi0wMDBBREYgICAgIChiYXNlIDE2KQkJR2VubnVtIENvcnBvcmF0aW9uCi0JCQkJUC5PIEJveCA0ODkKLQkJCQlTdGF0aW9uIEEKLQkJCQlCdXJsaW5ndG9uIE9udGFyaW8gTDdSIDNZMwotCQkJCUNBTkFEQQotCi0wMC0wQS1FMCAgIChoZXgpCQlGdWppdHN1IFNvZnRlawotMDAwQUUwICAgICAoYmFzZSAxNikJCUZ1aml0c3UgU29mdGVrCi0JCQkJMTI1MCBFYXN0IEFycXVlcyBBdmUKLQkJCQlNUyA3MjkKLQkJCQlTdW5ueXZhbGUgQ2EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUUxICAgKGhleCkJCUVHIFRlY2hub2xvZ3kKLTAwMEFFMSAgICAgKGJhc2UgMTYpCQlFRyBUZWNobm9sb2d5Ci0JCQkJMjUwIDE1dGggU3RyZWV0Ci0JCQkJU3VpdGUgNDAwNwotCQkJCUF0bGFudGEgR0EgMzAzMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUUyICAgKGhleCkJCUJpbmF0b25lIEVsZWN0cm9uaWNzIEludGVybmF0aW9uYWwsIEx0ZAotMDAwQUUyICAgICAoYmFzZSAxNikJCUJpbmF0b25lIEVsZWN0cm9uaWNzIEludGVybmF0aW9uYWwsIEx0ZAotCQkJCUZsb29yIDIzQSwgOSBEZXMgVm9ldXggUm9hZCBXZXN0Ci0JCQkJSG9uZyBLb25nIENoaW5hIAotCQkJCUhPTkcgS09ORwotCi0wMC0wQS1FMyAgIChoZXgpCQlZQU5HIE1FSSBURUNITk9MT0dZIENPLiwgTFRECi0wMDBBRTMgICAgIChiYXNlIDE2KQkJWUFORyBNRUkgVEVDSE5PTE9HWSBDTy4sIExURAotCQkJCTIxLCBBbGxleSAxLCBMYW5lIDM0MgotCQkJCUZ1ZGUgMXN0IFJvYWQsIFNoaWpyIENpdHkKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtRTQgICAoaGV4KQkJV2lzdHJvbiBDb3JwLgotMDAwQUU0ICAgICAoYmFzZSAxNikJCVdpc3Ryb24gQ29ycC4KLQkJCQkyMUYsIE5vLiA4OCwgU2VjdGlvbiAxLCBIc2luIFRhaSAgV3UgUmQuCi0JCQkJSHNpY2hpaAotCQkJCVRhaXBlaSAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQS1FNSAgIChoZXgpCQlTY290dENhcmUgQ29ycG9yYXRpb24KLTAwMEFFNSAgICAgKGJhc2UgMTYpCQlTY290dENhcmUgQ29ycG9yYXRpb24KLQkJCQk0NzkxIFdlc3QgMTUwdGggU3RyZWV0Ci0JCQkJQ2xldmVsYW5kIE9oaW8gNDQxMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBBLUU2ICAgKGhleCkJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtIENvLiAoRUNTKQotMDAwQUU2ICAgICAoYmFzZSAxNikJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtIENvLiAoRUNTKQotCQkJCU5vLjIyLCBBbGxleSAzOCwgTGFuZSA5MSwgU2VjLiAxLCBOZWkgSHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEEtRTcgICAoaGV4KQkJRUxJT1AgUy5BLgotMDAwQUU3ICAgICAoYmFzZSAxNikJCUVMSU9QIFMuQS4KLQkJCQlBdmVuaWRhIGRlIE1hbm90ZXJhcywgMzAKLQkJCQlNYWRyaWQgIEUtMjgwNTAKLQkJCQlTUEFJTgotCi0wMC0wQS1FOCAgIChoZXgpCQlDYXRoYXkgUm94dXMgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4gTFRECi0wMDBBRTggICAgIChiYXNlIDE2KQkJQ2F0aGF5IFJveHVzIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uIExURAotCQkJCUZ1aHVhIG1hbnNpb24gYnVpbGRpbmcgQS9CIDRGCi0JCQkJZG9uZ2NoZW5nIGRpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDI3Ci0JCQkJQ0hJTkEKLQotMDAtMEEtRTkgICAoaGV4KQkJQWlyVmFzdCBUZWNobm9sb2d5IEluYy4KLTAwMEFFOSAgICAgKGJhc2UgMTYpCQlBaXJWYXN0IFRlY2hub2xvZ3kgSW5jLgotCQkJCTNGLi01LCBOby42LCBMYW5lIDYwOSwgU2VjLiA1LCBDaG9uZ3NpbiBSZC4KLQkJCQlTYW5jaG9uZyBDaXR5IFRhaXBlaSAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBBLUVBICAgKGhleCkJCUFEQU0gRUxFS1RST05JSyBMVEQuU1RJLgotMDAwQUVBICAgICAoYmFzZSAxNikJCUFEQU0gRUxFS1RST05JSyBMVEQuU1RJLgotCQkJCVVaVU5BWU5BIENBRC4gQ0VMRU5LIFNPSy4gTk86MSDDg+KAoUFLTUFLIC8KLQkJCQlJU1RBTkJVTCAgODEyNjAKLQkJCQlUVVJLRVkKLQotMDAtMEEtRUIgICAoaGV4KQkJU2hlbnpoZW4gVHAtTGluayBUZWNobm9sb2d5IENvOyBMdGQuCi0wMDBBRUIgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gVHAtTGluayBUZWNobm9sb2d5IENvOyBMdGQuCi0JCQkJSGktVGVjaCBQYXJrIFIxLUIzCi0JCQkJMy9GLCBCbGRnLCAgU2hlbm5hbiBSb2FkCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTBBLUVDICAgKGhleCkJCUtvYXRzdSBHYXMgS29neW8gQ28uLCBMdGQuCi0wMDBBRUMgICAgIChiYXNlIDE2KQkJS29hdHN1IEdhcyBLb2d5byBDby4sIEx0ZC4KLQkJCQkxLTUsIERveWFtYS1jaG8sIEtpdGEta3UsIE9zYWthCi0JCQkJT3Nha2EgIDUzMC04NDExCi0JCQkJSkFQQU4KLQotMDAtMEEtRUQgICAoaGV4KQkJSEFSVElORyBTeXN0ZW1zIEdtYkggJiBDbyBLRwotMDAwQUVEICAgICAoYmFzZSAxNikJCUhBUlRJTkcgU3lzdGVtcyBHbWJIICYgQ28gS0cKLQkJCQlXaWxoZWxtIEhhcnRpbmcgU3RyLjEKLQkJCQlFc3BlbGthbXAgTlJXL09XTCAzMjMzOQotCQkJCUdFUk1BTlkKLQotMDAtMEEtRUUgICAoaGV4KQkJR0NEIEhhcmQtICYgU29mdHdhcmUgR21iSAotMDAwQUVFICAgICAoYmFzZSAxNikJCUdDRCBIYXJkLSAmIFNvZnR3YXJlIEdtYkgKLQkJCQlIZW5rZXN0ci4gNzkKLQkJCQlFcmxhbmdlbiBCYXllcm4gOTEwNTIKLQkJCQlHRVJNQU5ZCi0KLTAwLTBBLUVGICAgKGhleCkJCU9UUlVNIEFTQQotMDAwQUVGICAgICAoYmFzZSAxNikJCU9UUlVNIEFTQQotCQkJCUJyYXR0ZWtsZWl2Ci0JCQkJRsOmcnZpayAgTi00ODE4Ci0JCQkJTk9SV0FZCi0KLTAwLTBBLUYwICAgKGhleCkJCVNISU4tT0ggRUxFQ1RST05JQ1MgQ08uLCBMVEQuIFImRAotMDAwQUYwICAgICAoYmFzZSAxNikJCVNISU4tT0ggRUxFQ1RST05JQ1MgQ08uLCBMVEQuIFImRAotCQkJCSM3MjktNSwgQm9ub2gtRG9uZywgQW5zYW4tQ2l0eSwgS3l1bmdnaS0KLQkJCQlTSElOLU9IIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCUFuc2FuLUNpdHkgS3l1bmdnaS1EbyA0MjUtMTgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBBLUYxICAgKGhleCkJCUNsYXJpdHkgRGVzaWduLCBJbmMuCi0wMDBBRjEgICAgIChiYXNlIDE2KQkJQ2xhcml0eSBEZXNpZ24sIEluYy4KLQkJCQkxMzAyOSBEYW5pZWxzb24gU3RyZWV0Ci0JCQkJU3VpdGUgMTAwCi0JCQkJUG93YXkgQ0EgOTIwNjQtODgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRjIgICAoaGV4KQkJTmVvQXhpb20gQ29ycC4KLTAwMEFGMiAgICAgKGJhc2UgMTYpCQlOZW9BeGlvbSBDb3JwLgotCQkJCTE1MjAgTW9udGFndWUgRXhwcmVzc3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBRjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBBRjQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GNSAgIChoZXgpCQlBaXJnbyBOZXR3b3JrcywgSW5jLgotMDAwQUY1ICAgICAoYmFzZSAxNikJCUFpcmdvIE5ldHdvcmtzLCBJbmMuCi0JCQkJOTAwIEFyYXN0cmFkZXJvIFJkCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GNiAgIChoZXgpCQlFbWVyc29uIENsaW1hdGUgVGVjaG5vbG9naWVzIFJldGFpbCBTb2x1dGlvbnMsIEluYy4KLTAwMEFGNiAgICAgKGJhc2UgMTYpCQlFbWVyc29uIENsaW1hdGUgVGVjaG5vbG9naWVzIFJldGFpbCBTb2x1dGlvbnMsIEluYy4KLQkJCQkxNjQwIEFpcnBvcnQgUmQKLQkJCQlTdWl0ZSAxMDQKLQkJCQlLZW5uZXNhdyBHQSAzMDE0NC03MDM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GNyAgIChoZXgpCQlCcm9hZGNvbSBDb3JwLgotMDAwQUY3ICAgICAoYmFzZSAxNikJCUJyb2FkY29tIENvcnAuCi0JCQkJMTYyMTUgQWx0b24gUGFya3dheQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRjggICAoaGV4KQkJQW1lcmljYW4gVGVsZWNhcmUgSW5jLgotMDAwQUY4ICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIFRlbGVjYXJlIEluYy4KLQkJCQk3NjQwIEdvbGRlbiBUcmlhbmdsZSBEcml2ZQotCQkJCUVkZW4gUHJhaXJpZSBNTiA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRjkgICAoaGV4KQkJSGlDb25uZWN0LCBJbmMuCi0wMDBBRjkgICAgIChiYXNlIDE2KQkJSGlDb25uZWN0LCBJbmMuCi0JCQkJUm0gIzkwNiwgSGFrc2FuIENvc21vc3RlbCwgMTEwCi0JCQkJS3dhbmdqYW5nLURvbmcsIEt3YW5namluLUd1LCBTZW91bCwgS29yZQotCQkJCUt3YW5namluLUd1IFNlb3VsIDE0My04MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEEtRkEgICAoaGV4KQkJVHJhdmVyc2UgVGVjaG5vbG9naWVzIEF1c3RyYWxpYQotMDAwQUZBICAgICAoYmFzZSAxNikJCVRyYXZlcnNlIFRlY2hub2xvZ2llcyBBdXN0cmFsaWEKLQkJCQlVbml0IDEzLCAyNDAgU3lkbmV5IFJkCi0JCQkJQ29idXJnIFZpY3RvcmlhIDMwNTgKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEEtRkIgICAoaGV4KQkJQW1icmkgTGltaXRlZAotMDAwQUZCICAgICAoYmFzZSAxNikJCUFtYnJpIExpbWl0ZWQKLQkJCQkxMjYgR3JldmlsbGUgU3RyZWV0Ci0JCQkJQ2hhdHN3b29kIE5TVyAyMDY3Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTBBLUZDICAgKGhleCkJCUNvcmUgVGVjIENvbW11bmljYXRpb25zLCBMTEMKLTAwMEFGQyAgICAgKGJhc2UgMTYpCQlDb3JlIFRlYyBDb21tdW5pY2F0aW9ucywgTExDCi0JCQkJNDkgTGVhdmVud29ydGggU3RyZWV0Ci0JCQkJU3VpdGUgMjAwCi0JCQkJV2F0ZXJidXJ5IENUIDA2NzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQS1GRCAgIChoZXgpCQlWaWtpbmcgRWxlY3Ryb25pYyBTZXJ2aWNlcwotMDAwQUZEICAgICAoYmFzZSAxNikJCVZpa2luZyBFbGVjdHJvbmljIFNlcnZpY2VzCi0JCQkJNjIwIEFsbGVuZGFsZSBSZAotCQkJCVN1aXRlIDE3NQotCQkJCUtpbmcgb2YgUHJ1c3NpYSBQQSAxOTQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEEtRkUgICAoaGV4KQkJTm92YVBhbCBMdGQKLTAwMEFGRSAgICAgKGJhc2UgMTYpCQlOb3ZhUGFsIEx0ZAotCQkJCUZsb29yIDYKLQkJCQk1OCBVeGJyaWRnZSBSb2FkCi0JCQkJRWFsaW5nIExvbmRvbiBXNSAyU1QKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQS1GRiAgIChoZXgpCQlLaWxjaGhlcnIgRWxla3Ryb25payBBRwotMDAwQUZGICAgICAoYmFzZSAxNikJCUtpbGNoaGVyciBFbGVrdHJvbmlrIEFHCi0JCQkJQWVzY2hpc3RyYXNzZSAyNQotCQkJCU11ZW5zaW5nZW4gQkUgMzExMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBCLTAwICAgKGhleCkJCUZVSklBTiBTVEFSVCBDT01QVVRFUiBFUVVJUE1FTlQgQ08uLExURAotMDAwQjAwICAgICAoYmFzZSAxNikJCUZVSklBTiBTVEFSVCBDT01QVVRFUiBFUVVJUE1FTlQgQ08uLExURAotCQkJCUhPTkcgU0hBTiBZVUFOIFJPQUQgTk8uNjggSE9OR1NIQU4sR1VMT1UKLQkJCQlGVVpIT1UgRlVKSUFOIDM1MDAwMgotCQkJCUNISU5BCi0KLTAwLTBCLTAxICAgKGhleCkJCURBSUlDSEkgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDBCMDEgICAgIChiYXNlIDE2KQkJREFJSUNISSBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQkxLTExLTEzCi0JCQkJSGl0b3RzdXlhIEFkYWNoaS1rdSBUb2t5byAxMjEtODYzOQotCQkJCUpBUEFOCi0KLTAwLTBCLTAyICAgKGhleCkJCURhbGxtZWllciBlbGVjdHJvbmljCi0wMDBCMDIgICAgIChiYXNlIDE2KQkJRGFsbG1laWVyIGVsZWN0cm9uaWMKLQkJCQlXdWVyemJ1cmdlcnN0ci41Ci0JCQkJUmVnZW5zYnVyZyBCYXZhcmlhIDkzMDU5Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi0wMyAgIChoZXgpCQlUYWVrd2FuZyBJbmR1c3RyaWFsIENvLiwgTHRkCi0wMDBCMDMgICAgIChiYXNlIDE2KQkJVGFla3dhbmcgSW5kdXN0cmlhbCBDby4sIEx0ZAotCQkJCSMxOTEtMSwgQW55YW5nLTdEb25nLCBNYW5hbi1HdQotCQkJCUFueWFuZy1TaSBTb3V0aCBLb3JlYSA0MzAtMDE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTA0ICAgKGhleCkJCVZvbGt0ZWsgQ29ycG9yYXRpb24KLTAwMEIwNCAgICAgKGJhc2UgMTYpCQlWb2xrdGVrIENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOby4xOTIsIExpYW4tQ2hhbmcgUm9hZCwgQ2hhbmctSG8KLQkJCQlUYWlwZWkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItMDUgICAoaGV4KQkJUGFjaWZpYyBCcm9hZGJhbmQgTmV0d29ya3MKLTAwMEIwNSAgICAgKGJhc2UgMTYpCQlQYWNpZmljIEJyb2FkYmFuZCBOZXR3b3JrcwotCQkJCTgtMTAgS2VpdGggQ2FtcGJlbGwgQ291cnQKLQkJCQlTQ09SRVNCWSBWSUMgMzE3OQotCQkJCUFVU1RSQUxJQQotCi0wMC0wQi0wNiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAwQjA2ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMDcgICAoaGV4KQkJVm94cGF0aCBOZXR3b3JrcwotMDAwQjA3ICAgICAoYmFzZSAxNikJCVZveHBhdGggTmV0d29ya3MKLQkJCQk3NjAwQiBDYXBpdGFsIG9mIFRleGFzIEhpZ2h3YXkgIC0gTm9ydGgKLQkJCQlTdWl0ZSAyMjAKLQkJCQlBdXN0aW4gVGV4YXMgNzg3MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTA4ICAgKGhleCkJCVBpbGxhciBEYXRhIFN5c3RlbXMKLTAwMEIwOCAgICAgKGJhc2UgMTYpCQlQaWxsYXIgRGF0YSBTeXN0ZW1zCi0JCQkJMTM3MSBNY0NhcnRoeSBCbHZkLgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0wOSAgIChoZXgpCQlJZm91bmRyeSBTeXN0ZW1zIFNpbmdhcG9yZQotMDAwQjA5ICAgICAoYmFzZSAxNikJCUlmb3VuZHJ5IFN5c3RlbXMgU2luZ2Fwb3JlCi0JCQkJQmxvY2sgMSwgVW5pdCAxMDFCLCBJbm5vdmF0aW9uIENlbnRyZSwgMQotCQkJCTYzNzcyMgotCQkJCVNJTkdBUE9SRQotCi0wMC0wQi0wQSAgIChoZXgpCQlkQm0gT3B0aWNzCi0wMDBCMEEgICAgIChiYXNlIDE2KQkJZEJtIE9wdGljcwotCQkJCTMwMCBTLiBQdWJsaWMgUm9hZAotCQkJCUxhZmF5ZXR0ZSBDb2xvcmFkbyA4MDAyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMEIgICAoaGV4KQkJQ29ycmVudCBDb3Jwb3JhdGlvbgotMDAwQjBCICAgICAoYmFzZSAxNikJCUNvcnJlbnQgQ29ycG9yYXRpb24KLQkJCQkxNzExIFcuIEdyZWVudHJlZSBEci4KLQkJCQlTdWl0ZSAyMDEKLQkJCQlUZW1wZSBBWiA4NTI4NC0yNzE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0wQyAgIChoZXgpCQlBZ2lsZSBTeXN0ZW1zIEluYy4KLTAwMEIwQyAgICAgKGJhc2UgMTYpCQlBZ2lsZSBTeXN0ZW1zIEluYy4KLQkJCQk1NzUgS3VtcGYgRHJpdmUKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yViAxSzMKLQkJCQlDQU5BREEKLQotMDAtMEItMEQgICAoaGV4KQkJQWlyMlUsIEluYy4KLTAwMEIwRCAgICAgKGJhc2UgMTYpCQlBaXIyVSwgSW5jLgotCQkJCU5vLiA1LTEgSW5ub3ZhdGlvbiBSZCAxLCBTY2llbmNlLWJhc2VkIFAKLQkJCQlIc2luLUNodSBUYWl3YW4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0wRSAgIChoZXgpCQlUcmFwZXplIE5ldHdvcmtzCi0wMDBCMEUgICAgIChiYXNlIDE2KQkJVHJhcGV6ZSBOZXR3b3JrcwotCQkJCTU3NTMgVy4gTGFzIFBvc2l0YXMgQmx2ZAotCQkJCVBsZWFzYW50b24gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTBGICAgKGhleCkJCU55cXVpc3QgSW5kdXN0cmlhbCBDb250cm9sIEJWCi0wMDBCMEYgICAgIChiYXNlIDE2KQkJTnlxdWlzdCBJbmR1c3RyaWFsIENvbnRyb2wgQlYKLQkJCQlMdWNodGhhdmVud2VnIDIwCi0JCQkJRWluZGhvdmVuIE5vb3JkIEJyYWJhbnQgTkw1NjU3IEVCCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEItMTAgICAoaGV4KQkJMTF3YXZlIFRlY2hub25sb2d5IENvLixMdGQKLTAwMEIxMCAgICAgKGJhc2UgMTYpCQkxMXdhdmUgVGVjaG5vbmxvZ3kgQ28uLEx0ZAotCQkJCTEwRixuby4yODUgc2VjLjIgLFRpLURpbmcgQXZlLE5haUh1LlRhaXAKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItMTEgICAoaGV4KQkJSElNRUpJIEFCQyBUUkFESU5HIENPLixMVEQuCi0wMDBCMTEgICAgIChiYXNlIDE2KQkJSElNRUpJIEFCQyBUUkFESU5HIENPLixMVEQuCi0JCQkJMS04LTIyCi0JCQkJSllPVUhPS1VTSElOTUFDSEkKLQkJCQlISk1FSkkgSFlPR08gNjcwLTA4ODMKLQkJCQlKQVBBTgotCi0wMC0wQi0xMiAgIChoZXgpCQlOVVJJIFRlbGVjb20gQ28uLCBMdGQuCi0wMDBCMTIgICAgIChiYXNlIDE2KQkJTlVSSSBUZWxlY29tIENvLiwgTHRkLgotCQkJCVdvb2xpbSBMaW9uJ3MgVmFsbGV5IEJsZGctQiAxMHRoIEYKLQkJCQkjMzcxLTI4IEthc2FuLWRvbmcKLQkJCQlLZXVtLWNoZXVuLWd1IFNlb3VsIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItMTMgICAoaGV4KQkJWkVUUk9OIElOQwotMDAwQjEzICAgICAoYmFzZSAxNikJCVpFVFJPTiBJTkMKLQkJCQlQTyBCb3ggOTcwMDQKLQkJCQlSRURNT05EIFdBIDk4MDczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0xNCAgIChoZXgpCQlWaWV3U29uaWMgQ29ycG9yYXRpb24KLTAwMEIxNCAgICAgKGJhc2UgMTYpCQlWaWV3U29uaWMgQ29ycG9yYXRpb24KLQkJCQkzODEgQnJlYSBDYW55b24gUm9hZAotCQkJCVdhbG51dCBDYWxpZm9ybmlhIDkxNzg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0xNSAgIChoZXgpCQlQbGF0eXB1cyBUZWNobm9sb2d5Ci0wMDBCMTUgICAgIChiYXNlIDE2KQkJUGxhdHlwdXMgVGVjaG5vbG9neQotCQkJCTQvMSBBdGNoaXNvbiBTdAotCQkJCVN0IExlb25hcmRzIE5TVyAyMDY1Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTBCLTE2ICAgKGhleCkJCUNvbW11bmljYXRpb24gTWFjaGluZXJ5IENvcnBvcmF0aW9uCi0wMDBCMTYgICAgIChiYXNlIDE2KQkJQ29tbXVuaWNhdGlvbiBNYWNoaW5lcnkgQ29ycG9yYXRpb24KLQkJCQk0MDIgRS4gR3V0aWVycmV6IFN0LgotCQkJCVNhbnRhIEJhcmJhcmEgQ0EgOTMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTE3ICAgKGhleCkJCU1LUyBJbnN0cnVtZW50cwotMDAwQjE3ICAgICAoYmFzZSAxNikJCU1LUyBJbnN0cnVtZW50cwotCQkJCTY1MSBMb3dlbGwgU3RyZWV0Ci0JCQkJTWV0aHVlbiBNQSAwMTg0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMTggICAoaGV4KQkJUFJJVkFURQotMDAwQjE4ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wQi0xOSAgIChoZXgpCQlWZXJuaWVyIE5ldHdvcmtzLCBJbmMuCi0wMDBCMTkgICAgIChiYXNlIDE2KQkJVmVybmllciBOZXR3b3JrcywgSW5jLgotCQkJCTQ5MCBFLiBNaWRkbGVmaWVsZCBSb2FkCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMUEgICAoaGV4KQkJSW5kdXN0cmlhbCBEZWZlbmRlciwgSW5jLgotMDAwQjFBICAgICAoYmFzZSAxNikJCUluZHVzdHJpYWwgRGVmZW5kZXIsIEluYy4KLQkJCQkxNiBDaGVzdG51dCBTdHJlZXQKLQkJCQlTdWl0ZSAzMDAKLQkJCQlGb3hib3JvdWdoIE1BIDAyMDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0xQiAgIChoZXgpCQlTeXN0cm9uaXgsIEluYy4KLTAwMEIxQiAgICAgKGJhc2UgMTYpCQlTeXN0cm9uaXgsIEluYy4KLQkJCQk5MzkgRWRpc29uIFN0LgotCQkJCVNhbHQgTGFrZSBDaXR5IFV0YWggODQxMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTFDICAgKGhleCkJCVNJQkNPIGJ2Ci0wMDBCMUMgICAgIChiYXNlIDE2KQkJU0lCQ08gYnYKLQkJCQlTY2hvb25ob3V0IDQ2Ci0JCQkJRXR0ZW4tTGV1ciBOQiA0ODcyIE1FCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEItMUQgICAoaGV4KQkJTGF5ZXJaZXJvIFBvd2VyIFN5c3RlbXMsIEluYy4KLTAwMEIxRCAgICAgKGJhc2UgMTYpCQlMYXllclplcm8gUG93ZXIgU3lzdGVtcywgSW5jLgotCQkJCTM1NTkgVG93bmxleSBSb2FkCi0JCQkJU2hha2VyIEhlaWdodHMgT0ggNDQxMjItNTE1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMUUgICAoaGV4KQkJS0FQUEEgb3B0by1lbGVjdHJvbmljcyBHbWJICi0wMDBCMUUgICAgIChiYXNlIDE2KQkJS0FQUEEgb3B0by1lbGVjdHJvbmljcyBHbWJICi0JCQkJS2xlaW5lcyBGZWxkIDYKLQkJCQkzNzEzMAotCQkJCUdsZWljaGVuIE5pZWRlcnNhY2hzZW4gCi0JCQkJR0VSTUFOWQotCi0wMC0wQi0xRiAgIChoZXgpCQlJIENPTiBDb21wdXRlciBDby4KLTAwMEIxRiAgICAgKGJhc2UgMTYpCQlJIENPTiBDb21wdXRlciBDby4KLQkJCQkzRiwgTm8uIDE0MiAsIEhzaW4gTWluZyBSb2FkCi0JCQkJTmVpaHUgVGFpcGVpIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItMjAgICAoaGV4KQkJSGlyYXRhIGNvcnBvcmF0aW9uCi0wMDBCMjAgICAgIChiYXNlIDE2KQkJSGlyYXRhIGNvcnBvcmF0aW9uCi0JCQkJMTExIEhpdG90c3VnaSwgVWVraSwKLQkJCQlLYW1vdG8gS3VtYW1vdG8gODYxLTAxOTgKLQkJCQlKQVBBTgotCi0wMC0wQi0yMSAgIChoZXgpCQlHLVN0YXIgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwQjIxICAgICAoYmFzZSAxNikJCUctU3RhciBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJNUYsIDY5LTEwLCBTZWMuIDIsIENodW5nIENoZW5nIEVhc3QgUm9hZAotCQkJCVRhaXBlaSBIc2llbiAgMjUxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0yMiAgIChoZXgpCQlFbnZpcm9ubWVudGFsIFN5c3RlbXMgYW5kIFNlcnZpY2VzCi0wMDBCMjIgICAgIChiYXNlIDE2KQkJRW52aXJvbm1lbnRhbCBTeXN0ZW1zIGFuZCBTZXJ2aWNlcwotCQkJCTIwIENvdW5jaWwgU3RyZWV0Ci0JCQkJSGF3dGhvcm4gRWFzdCBWaWN0b3JpYSAzMTIzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTBCLTIzICAgKGhleCkJCVNpZW1lbnMgU3Vic2NyaWJlciBOZXR3b3JrcwotMDAwQjIzICAgICAoYmFzZSAxNikJCVNpZW1lbnMgU3Vic2NyaWJlciBOZXR3b3JrcwotCQkJCTQ4NDkgQWxwaGEgUm9hZAotCQkJCURhbGxhcyBUZXhhcyA3NDI0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMjQgICAoaGV4KQkJQWlyTG9naWMKLTAwMEIyNCAgICAgKGJhc2UgMTYpCQlBaXJMb2dpYwotCQkJCTgwNy0xLCBCdW5kYW5ndGVjaG5vcGFyayBELCAxNTEsCi0JCQkJWWF0YXAtRG9uZywgQnVuZGFuZy1LdQotCQkJCVN1bmduYW0tU2kgS3l1bmdraS1EbyA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTI1ICAgKGhleCkJCUFlbHVyb3MKLTAwMEIyNSAgICAgKGJhc2UgMTYpCQlBZWx1cm9zCi0JCQkJMjAxIFNhbiBBbnRvbmlvIENpcmNsZSAjMTcyCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMjYgICAoaGV4KQkJV2V0ZWsgQ29ycG9yYXRpb24KLTAwMEIyNiAgICAgKGJhc2UgMTYpCQlXZXRlayBDb3Jwb3JhdGlvbgotCQkJCTRGLCBOTy4xNywgS3VhbmZ1IE4uIFJvYWQKLQkJCQlIc2luIENodSBJbmR1c3RyaWFsIFBhcmsgSHNpbiBDaHUgMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0yNyAgIChoZXgpCQlTY2lvbiBDb3Jwb3JhdGlvbgotMDAwQjI3ICAgICAoYmFzZSAxNikJCVNjaW9uIENvcnBvcmF0aW9uCi0JCQkJODIgV29ybWFuJ3MgTWlsbCBDb3VydAotCQkJCVN1aXRlIEgKLQkJCQlGcmVkZXJpY2sgTUQgMjE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTI4ICAgKGhleCkJCVF1YXRlY2ggSW5jLgotMDAwQjI4ICAgICAoYmFzZSAxNikJCVF1YXRlY2ggSW5jLgotCQkJCTY2MiBXb2xmIExlZGdlcyBQa3d5LgotCQkJCUFrcm9uIE9IIDQ0MzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0yOSAgIChoZXgpCQlMUyhMRykgSW5kdXN0cmlhbCBTeXN0ZW1zIGNvLixMdGQKLTAwMEIyOSAgICAgKGJhc2UgMTYpCQlMUyhMRykgSW5kdXN0cmlhbCBTeXN0ZW1zIGNvLixMdGQKLQkJCQk1MzMgSG9neWUtZG9uZywgRG9uZ2FuLWd1Ci0JCQkJQW55YW5nLXNpIEd5ZW9uZ2dpLWRvIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi0yQSAgIChoZXgpCQlIT1dURUwgQ28uLCBMdGQuCi0wMDBCMkEgICAgIChiYXNlIDE2KQkJSE9XVEVMIENvLiwgTHRkLgotCQkJCUotQ09NIEJkLiA0RiwgMTI0LTQgT0pFT04tRE9ORwotCQkJCVVJV0FORy1TSEkgS1lPVU5HR0ktRE8gNDM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi0yQiAgIChoZXgpCQlIT1NUTkVUIENPUlBPUkFUSU9OCi0wMDBCMkIgICAgIChiYXNlIDE2KQkJSE9TVE5FVCBDT1JQT1JBVElPTgotCQkJCTEwRi0xMixOby4gMTIgTGFuZSA2MDksIFNlYy41LENodW5naHNpbgotCQkJCVNhbmNodW5nIFRhaXBlaSBIc2llbiAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTJDICAgKGhleCkJCUVpa2kgSW5kdXN0cmlhbCBDby4gTHRkLgotMDAwQjJDICAgICAoYmFzZSAxNikJCUVpa2kgSW5kdXN0cmlhbCBDby4gTHRkLgotCQkJCTQtMTIgTWFuemFpLWNobywgS2l0YS1rdQotCQkJCU9zYWthICA1MzAKLQkJCQlKQVBBTgotCi0wMC0wQi0yRCAgIChoZXgpCQlEYW5mb3NzIEluYy4KLTAwMEIyRCAgICAgKGJhc2UgMTYpCQlEYW5mb3NzIEluYy4KLQkJCQk3OTQxIENvcnBvcmF0ZSBEcgotCQkJCUJhbHRpbW9yZSBNRCAyMTIzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMkUgICAoaGV4KQkJQ2FsLUNvbXAgRWxlY3Ryb25pY3MgKFRoYWlsYW5kKSBQdWJsaWMgQ29tcGFueSBMaW1pdGVkIFRhaXBlCi0wMDBCMkUgICAgIChiYXNlIDE2KQkJQ2FsLUNvbXAgRWxlY3Ryb25pY3MgKFRoYWlsYW5kKSBQdWJsaWMgQ29tcGFueSBMaW1pdGVkIFRhaXBlCi0JCQkJOUYsIDk5LCBOYW4tS2luZyBFIFJkLiwgU2VjLiA1LgotCQkJCVRhaXBlaSAgMTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0yRiAgIChoZXgpCQlicGxhbiBHbWJICi0wMDBCMkYgICAgIChiYXNlIDE2KQkJYnBsYW4gR21iSAotCQkJCUluZHVzdHJpZXN0cmHDg8W4ZSAyMwotCQkJCVN0ZWluYmFjaCA2MTQ0OQotCQkJCUdFUk1BTlkKLQotMDAtMEItMzAgICAoaGV4KQkJQmVpamluZyBHb25neWUgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwQjMwICAgICAoYmFzZSAxNikJCUJlaWppbmcgR29uZ3llIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlVbml0IEQuMTcvRSxTaGVubGFuaHVhdGluZyBtaWQgUm9hZCBOby42Ci0JCQkJQmVpamluZyAgMTAwMDI5Ci0JCQkJQ0hJTkEKLQotMDAtMEItMzEgICAoaGV4KQkJWWFudGFpIFpoaVlhbmcgU2NpZW50aWZpYyBhbmQgdGVjaG5vbG9neSBpbmR1c3RyeSBDTy4sIExURAotMDAwQjMxICAgICAoYmFzZSAxNikJCVlhbnRhaSBaaGlZYW5nIFNjaWVudGlmaWMgYW5kIHRlY2hub2xvZ3kgaW5kdXN0cnkgQ08uLCBMVEQKLQkJCQk1Ri00LCBOTy4gNjQsIEdvbmctSmlhbiBSZC4KLQkJCQlIc2ktQ2hpaCBDaXR5IFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi0zMiAgIChoZXgpCQlWT1JNRVRSSUMsIElOQy4KLTAwMEIzMiAgICAgKGJhc2UgMTYpCQlWT1JNRVRSSUMsIElOQy4KLQkJCQkyMDYwIENPUlBPUkFURSBDVAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0zMyAgIChoZXgpCQlWaXZhdG8gVGVjaG5vbG9naWVzCi0wMDBCMzMgICAgIChiYXNlIDE2KQkJVml2YXRvIFRlY2hub2xvZ2llcwotCQkJCTQ0NCBDZWRyb3MgQXZlCi0JCQkJU3VpdGUgMTc1Ci0JCQkJU29sYW5hIEJlYWNoIENBIDkyMDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi0zNCAgIChoZXgpCQlTaGFuZ0hhaSBCcm9hZGJhbmQgVGVjaG5vbG9naWVzIENPLkxURAotMDAwQjM0ICAgICAoYmFzZSAxNikJCVNoYW5nSGFpIEJyb2FkYmFuZCBUZWNobm9sb2dpZXMgQ08uTFRECi0JCQkJMTdGLE5vLjEyMixIdWFuZ1hpbmcgUm9hZAotCQkJCVNoYW5nSGFpICAyMDAwOTAKLQkJCQlDSElOQQotCi0wMC0wQi0zNSAgIChoZXgpCQlRdWFkIEJpdCBTeXN0ZW0gY28uLCBMdGQuCi0wMDBCMzUgICAgIChiYXNlIDE2KQkJUXVhZCBCaXQgU3lzdGVtIGNvLiwgTHRkLgotCQkJCTQwMiBHYXlhbmcgVGVjaG5vdG93bgotCQkJCTE0ODcgR2F5YW5nIDMgZG9uZwotCQkJCVNlb3VsIEthbmdzZW9ndSAxNTctODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTM2ICAgKGhleCkJCVByb2R1Y3Rpdml0eSBTeXN0ZW1zLCBJbmMuCi0wMDBCMzYgICAgIChiYXNlIDE2KQkJUHJvZHVjdGl2aXR5IFN5c3RlbXMsIEluYy4KLQkJCQkxNzExIEFuYWxvZyBEcml2ZQotCQkJCVJpY2hhcmRzb24gVFggNzUwODEtMTk0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItMzcgICAoaGV4KQkJTUFOVUZBQ1RVUkUgREVTIE1PTlRSRVMgUk9MRVggU0EKLTAwMEIzNyAgICAgKGJhc2UgMTYpCQlNQU5VRkFDVFVSRSBERVMgTU9OVFJFUyBST0xFWCBTQQotCQkJCUxBIEhBVVRFLVJPVVRFIDgyCi0JCQkJQklFTC1CSUVOTkUgQkUgMjUwMgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBCLTM4ICAgKGhleCkJCUtudWVyciBHbWJICi0wMDBCMzggICAgIChiYXNlIDE2KQkJS251ZXJyIEdtYkgKLQkJCQlNYXJpYWtpcmNoZW5lciBTdHJhc3NlIDM4Ci0JCQkJQXJuc3RvcmYgQmF2YXJpYSA5NDQyNAotCQkJCUdFUk1BTlkKLQotMDAtMEItMzkgICAoaGV4KQkJS2Vpc29rdSBHaWtlbiBDby4sTHRkLgotMDAwQjM5ICAgICAoYmFzZSAxNikJCUtlaXNva3UgR2lrZW4gQ28uLEx0ZC4KLQkJCQkyLTEyLTIgLCBDaGlnYXNha2ktbWluYW1pCi0JCQkJVHN1enVraS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyNC0wMDM3Ci0JCQkJSkFQQU4KLQotMDAtMEItM0EgICAoaGV4KQkJUXVTdHJlYW0gQ29ycG9yYXRpb24KLTAwMEIzQSAgICAgKGJhc2UgMTYpCQlRdVN0cmVhbSBDb3Jwb3JhdGlvbgotCQkJCTMzMDUgQnJlY2tpbnJpZGdlIEJsdmQuCi0JCQkJU3VpdGUgMTE4Ci0JCQkJRHVsdXRoIEdlb3JnaWEgMzAwOTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTNCICAgKGhleCkJCWRldm9sbyBBRwotMDAwQjNCICAgICAoYmFzZSAxNikJCWRldm9sbyBBRwotCQkJCVNvbm5lbndlZyAxMQotCQkJCUFhY2hlbiBOUlcgNTIwNzAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLTNDICAgKGhleCkJCUN5Z25hbCBJbnRlZ3JhdGVkIFByb2R1Y3RzLCBJbmMuCi0wMDBCM0MgICAgIChiYXNlIDE2KQkJQ3lnbmFsIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4KLQkJCQk0MzAxIFdlc3RiYW5rIERyaXZlCi0JCQkJU3VpdGUgQi0xMDAKLQkJCQlBdXN0aW4gVFggNzg3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTNEICAgKGhleCkJCUNPTlRBTCBPSyBMdGQuCi0wMDBCM0QgICAgIChiYXNlIDE2KQkJQ09OVEFMIE9LIEx0ZC4KLQkJCQlGcmFuYSBNcmF6YSAyLzI4OQotCQkJCVAuTy5Cb3ggQi0zNAotCQkJCVppbGluYSAgMDExMjQKLQkJCQlTTE9WQUtJQQotCi0wMC0wQi0zRSAgIChoZXgpCQlCaXR0V2FyZSwgSW5jCi0wMDBCM0UgICAgIChiYXNlIDE2KQkJQml0dFdhcmUsIEluYwotCQkJCTMxIEIgU291dGggTWFpbiBTdAotCQkJCUNvbmNvcmQgTkggMDMzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTNGICAgKGhleCkJCUFudGhvbG9neSBTb2x1dGlvbnMgSW5jLgotMDAwQjNGICAgICAoYmFzZSAxNikJCUFudGhvbG9neSBTb2x1dGlvbnMgSW5jLgotCQkJCTE3MjIgUmluZ3dvb2QgQXZlLgotCQkJCVN1aXRlIDI1MAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi00MCAgIChoZXgpCQlPcE5leHQgSW5jLgotMDAwQjQwICAgICAoYmFzZSAxNikJCU9wTmV4dCBJbmMuCi0JCQkJMSBDaHJpc3RvcGhlciBXYXkKLQkJCQlFYXRvbnRvd24gTmV3IEplcnNleSAwNzcyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNDEgICAoaGV4KQkJSW5nLiBCdWVybyBEci4gQmV1dGxoYXVzZXIKLTAwMEI0MSAgICAgKGJhc2UgMTYpCQlJbmcuIEJ1ZXJvIERyLiBCZXV0bGhhdXNlcgotCQkJCVJvZW1lcndlZyA0Ci0JCQkJR3Jhc3NhdSBELTgzMjI0Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi00MiAgIChoZXgpCQljb21tYXggQ28uLCBMdGQuCi0wMDBCNDIgICAgIChiYXNlIDE2KQkJY29tbWF4IENvLiwgTHRkLgotCQkJCTUxMy0xMSwgU2FuZ2RhZXdvbi1Eb25nLCBKdW5nd29uLUt1Ci0JCQkJU3VuZ25hbS1DaXR5IEt5dW5nZ2ktRG8gNDYyLTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi00MyAgIChoZXgpCQlNaWNyb3NjYW4gU3lzdGVtcywgSW5jLgotMDAwQjQzICAgICAoYmFzZSAxNikJCU1pY3Jvc2NhbiBTeXN0ZW1zLCBJbmMuCi0JCQkJMTIwMSBTVyA3dGggU3RyZWV0Ci0JCQkJUmVudG9uIFdBIDk4MDU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi00NCAgIChoZXgpCQlDb25jb3JkIElEZWEgQ29ycC4KLTAwMEI0NCAgICAgKGJhc2UgMTYpCQlDb25jb3JkIElEZWEgQ29ycC4KLQkJCQk0MTE4IDE0dGggQXZlLiwgVW5pdCA0Ci0JCQkJTWFya2hhbSBPbnRhcmlvIEwzUiAwSjMKLQkJCQlDQU5BREEKLQotMDAtMEItNDUgICAoaGV4KQkJQ2lzY28KLTAwMEI0NSAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi00NiAgIChoZXgpCQlDaXNjbwotMDAwQjQ2ICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTQ3ICAgKGhleCkJCUFkdmFuY2VkIEVuZXJneQotMDAwQjQ3ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIEVuZXJneQotCQkJCTE2MjUgU2hhcnAgUG9pbnQgRHJpdmUKLQkJCQlGb3J0IENvbGxpbnMgQ29sb3JhZG8gODA1MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTQ4ICAgKGhleCkJCXNvZnJlbAotMDAwQjQ4ICAgICAoYmFzZSAxNikJCXNvZnJlbAotCQkJCTIgcnVlIGR1IHBsZXNzaXMKLQkJCQl2ZXJuIHN1ciBzZWljaGUgaWxsZSBldCB2aWxhaW5lIDM1NzcwCi0JCQkJRlJBTkNFCi0KLTAwLTBCLTQ5ICAgKGhleCkJCVJGLUxpbmsgU3lzdGVtIEluYy4KLTAwMEI0OSAgICAgKGJhc2UgMTYpCQlSRi1MaW5rIFN5c3RlbSBJbmMuCi0JCQkJTm8uNiwgTmFuLUtlIDV0aCBSZC4sIEhzaW4tU2hpLAotCQkJCVRhaW5hbiBDb3VudHkgIDc0NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItNEEgICAoaGV4KQkJVmlzaW1ldHJpY3MgKFVLKSBMdGQKLTAwMEI0QSAgICAgKGJhc2UgMTYpCQlWaXNpbWV0cmljcyAoVUspIEx0ZAotCQkJCVNreWUgSG91c2UKLQkJCQlTa3llIFJvYWQKLQkJCQlQcmVzdHdpY2sgQXlyc2hpcmUgS0E5IDJUQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBCLTRCICAgKGhleCkJCVZJU0lPV0FWRSBTQQotMDAwQjRCICAgICAoYmFzZSAxNikJCVZJU0lPV0FWRSBTQQotCQkJCVJvdXRlIGRlIGxhIFBpZXJyZSAyMgotCQkJCVZJQ1RPUklBIEhPVVNFCi0JCQkJRUNVQkxFTlMgVkFVRCBDSC0xMDI0Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEItNEMgICAoaGV4KQkJQ2xhcmlvbiAoTSkgU2RuIEJoZAotMDAwQjRDICAgICAoYmFzZSAxNikJCUNsYXJpb24gKE0pIFNkbiBCaGQKLQkJCQlQaGFzZSAzCi0JCQkJRklaCi0JCQkJQmF5YW4gTGVwYXMgUGVuYW5nIDExOTAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMEItNEQgICAoaGV4KQkJRW11emVkCi0wMDBCNEQgICAgIChiYXNlIDE2KQkJRW11emVkCi0JCQkJNDY3NTAgTGFrZXZpZXcgQm91bGV2YXJkCi0JCQkJRnJlbW9udCBDYWxpZm9ybmlhIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi00RSAgIChoZXgpCQlWZXJ0ZXhSU0ksIEdlbmVyYWwgRHluYW1pY3MgU2F0Q09NIFRlY2hub2xvZ2llcywgSW5jLgotMDAwQjRFICAgICAoYmFzZSAxNikJCVZlcnRleFJTSSwgR2VuZXJhbCBEeW5hbWljcyBTYXRDT00gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTkxNSBFLiBIYXJyaXNvbiBSb2FkCi0JCQkJTG9uZ3ZpZXcgVFggNzU2MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTRGICAgKGhleCkJCVZlcmlmb25lLCBJTkMuCi0wMDBCNEYgICAgIChiYXNlIDE2KQkJVmVyaWZvbmUsIElOQy4KLQkJCQkyNDU1IEF1Z3VzdGluZSBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENhbGlmb3JuaWEgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTUwICAgKGhleCkJCU94eWduZXQKLTAwMEI1MCAgICAgKGJhc2UgMTYpCQlPeHlnbmV0Ci0JCQkJNDAyIEUuIENhcnJpbGxvIFN0LgotCQkJCVN1aXRlIEMKLQkJCQlTYW50YSBCYXJiYXJhIENBIDkzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi01MSAgIChoZXgpCQlNaWNldGVrIEludGVybmF0aW9uYWwgSW5jLgotMDAwQjUxICAgICAoYmFzZSAxNikJCU1pY2V0ZWsgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJN0YtMSwgIzIzNywgU2VjLiAxLCB3dSBDaHVhbiBXLiBSZC4KLQkJCQlUYWljaHVuZyAgNDAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi01MiAgIChoZXgpCQlKT1lNQVggRUxFQ1RST05JQ1MgQ08uIExURC4KLTAwMEI1MiAgICAgKGJhc2UgMTYpCQlKT1lNQVggRUxFQ1RST05JQ1MgQ08uIExURC4KLQkJCQlOby41IERvbmctWXVhbiBSb2FkIDIsIEpob25nLUxpIEluZHVzdHJpYWwgUGFyaywKLQkJCQlKaG9uZy1MaSBDaXR5LCAKLQkJCQlUYW8tWXVhbiAgMzIwNjMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTUzICAgKGhleCkJCUlOSVRJVU0gQ28uLCBMdGQuCi0wMDBCNTMgICAgIChiYXNlIDE2KQkJSU5JVElVTSBDby4sIEx0ZC4KLQkJCQk4Ri4gR29uZ2R1Y2sgQmxkZy4gMjcyLTYgU2VvaHl1biBCdW5kYW5nCi0JCQkJU3VuZ25hbSBLeXVuZ2dpIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItNTQgICAoaGV4KQkJQmlUTUlDUk8gTmV0d29ya3MsIEluYy4KLTAwMEI1NCAgICAgKGJhc2UgMTYpCQlCaVRNSUNSTyBOZXR3b3JrcywgSW5jLgotCQkJCTQ1NTUwIE5vcnRocG9ydCBMb29wIEVhc3QKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi01NSAgIChoZXgpCQlBREluc3RydW1lbnRzCi0wMDBCNTUgICAgIChiYXNlIDE2KQkJQURJbnN0cnVtZW50cwotCQkJCVAuIE8uIEJveCA1ODcKLQkJCQlEdW5lZGluIE90YWdvIDkwMDEKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wQi01NiAgIChoZXgpCQlDeWJlcm5ldGljcwotMDAwQjU2ICAgICAoYmFzZSAxNikJCUN5YmVybmV0aWNzCi0JCQkJMTExIEN5YmVybmV0aWNzIFdheQotCQkJCVlvcmt0b3duIFZBIDIzNjkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi01NyAgIChoZXgpCQlTaWxpY29uIExhYm9yYXRvcmllcwotMDAwQjU3ICAgICAoYmFzZSAxNikJCVNpbGljb24gTGFib3JhdG9yaWVzCi0JCQkJNzAwMCBXLiBXaWxsaWFtIENhbm5vbiBEci4KLQkJCQlCbGRnLjEsIFN1aXRlIDIwMAotCQkJCUF1c3RpbiBUWCA3ODczNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNTggICAoaGV4KQkJQXN0cm9uYXV0aWNzIEMuQSAgTFRECi0wMDBCNTggICAgIChiYXNlIDE2KQkJQXN0cm9uYXV0aWNzIEMuQSAgTFRECi0JCQkJMjMgaGF5YXJrb24gc3RyZWV0Ci0JCQkJQm5laSBCcmFrICA1MTI2MQotCQkJCUlTUkFFTAotCi0wMC0wQi01OSAgIChoZXgpCQlTY3JpcHRQcm8sIExMQwotMDAwQjU5ICAgICAoYmFzZSAxNikJCVNjcmlwdFBybywgTExDCi0JCQkJNTgyOCBSZWVkcyBSZC4KLQkJCQlNaXNzaW9uIEthbnNhcyA2NjIwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNUEgICAoaGV4KQkJSHlwZXJFZGdlCi0wMDBCNUEgICAgIChiYXNlIDE2KQkJSHlwZXJFZGdlCi0JCQkJMzMzIFBpZXJjZSBSb2FkIFN1aXRlICMyMDAKLQkJCQlJdGFzY2EgSUwgNjAxNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTVCICAgKGhleCkJCVJpbmNvbiBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotMDAwQjVCICAgICAoYmFzZSAxNikJCVJpbmNvbiBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotCQkJCTEwMSBOLiBXaWxtb3QgUmQuCi0JCQkJU3VpdGUgMTAxCi0JCQkJVHVjc29uIEFaIDg1NzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi01QyAgIChoZXgpCQlOZXd0ZWNoIENvLixMdGQKLTAwMEI1QyAgICAgKGJhc2UgMTYpCQlOZXd0ZWNoIENvLixMdGQKLQkJCQlLLUJsZGcgMS03LTcgU2hpYmFkYWltb24gTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwNS0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMEItNUQgICAoaGV4KQkJRlVKSVRTVSBMSU1JVEVECi0wMDBCNUQgICAgIChiYXNlIDE2KQkJRlVKSVRTVSBMSU1JVEVECi0JCQkJTXVzYXNoaS1rb3N1Z2kgVG93ZXIgUGxhY2UgQmxkZy4sIDQwMwotCQkJCUtvc3VnaS1jaG8gMS1jaG9tZSxOYWthaGFyYS1rdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIAotCQkJCUpBUEFOCi0KLTAwLTBCLTVFICAgKGhleCkJCUF1ZGlvIEVuZ2luZWVyaW5nIFNvY2lldHkgSW5jLgotMDAwQjVFICAgICAoYmFzZSAxNikJCUF1ZGlvIEVuZ2luZWVyaW5nIFNvY2lldHkgSW5jLgotCQkJCTYwIEVhc3QgNDJuZCBTdHJlZXQsIFN1aXRlICMyNTIwCi0JCQkJTmV3IFlvcmsgTlkgMTAxNjUtMjUyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNUYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQjVGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNjAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQjYwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNjEgICAoaGV4KQkJRnJpZWRyaWNoIEzDg8K8dHplIEdtYkggJkNvLgotMDAwQjYxICAgICAoYmFzZSAxNikJCUZyaWVkcmljaCBMw4PCvHR6ZSBHbWJIICZDby4KLQkJCQlCcnVja3dpZXNlbnN0cmHDg8W4ZSAxNy0xOQotCQkJCVdlaW5zdGFkdC1Hcm/Dg8W4aGVwcGFjaCBCVyA3MTM4NAotCQkJCUdFUk1BTlkKLQotMDAtMEItNjIgICAoaGV4KQkJSW5nZW5pZXVyYnVlcm8gZnVlciBFbGVrdHJvbmlrZGVzaWduIEluZ28gTW9obmVuCi0wMDBCNjIgICAgIChiYXNlIDE2KQkJSW5nZW5pZXVyYnVlcm8gZnVlciBFbGVrdHJvbmlrZGVzaWduIEluZ28gTW9obmVuCi0JCQkJU3RpY2ggMzAgZAotCQkJCTUyMjQ5IEVzY2h3ZWlsZXIgCi0JCQkJR0VSTUFOWQotCi0wMC0wQi02MyAgIChoZXgpCQlLYWxlaWRlc2NhcGUKLTAwMEI2MyAgICAgKGJhc2UgMTYpCQlLYWxlaWRlc2NhcGUKLQkJCQlPbmUgRmlyc3QgU3RyZWV0LCBTdWl0ZSBTaXh0ZWVuCi0JCQkJTG9zIEFsdG9zIENBIDk0MDIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi02NCAgIChoZXgpCQlLaWViYWNrICYgUGV0ZXIgR21iSCAmIENvIEtHCi0wMDBCNjQgICAgIChiYXNlIDE2KQkJS2llYmFjayAmIFBldGVyIEdtYkggJiBDbyBLRwotCQkJCVRlbXBlbGhvZmVyIFdlZyA1MAotCQkJCUJlcmxpbiAgMTIzNDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLTY1ICAgKGhleCkJCVN5LkEuQy4gc3JsCi0wMDBCNjUgICAgIChiYXNlIDE2KQkJU3kuQS5DLiBzcmwKLQkJCQl2aWEgQ2Fib3RvIDE5LzEKLQkJCQlUcmllc3RlICAzNDE0NwotCQkJCUlUQUxZCi0KLTAwLTBCLTY2ICAgKGhleCkJCVRlcmFsaW5rIENvbW11bmljYXRpb25zCi0wMDBCNjYgICAgIChiYXNlIDE2KQkJVGVyYWxpbmsgQ29tbXVuaWNhdGlvbnMKLQkJCQlDYXBpdGFsIFRvd2VyIDE1RiwKLQkJCQk5MzEgRG9vbnNhbi1kb25nLCBTZW8tZ3UKLQkJCQlEYWVqZW9uICAzMDIxMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItNjcgICAoaGV4KQkJVG9wdmlldyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDBCNjcgICAgIChiYXNlIDE2KQkJVG9wdmlldyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJTm8uIDgsV3UtQ2h1YW4gUm9hZCxXdSBLdSBJbmR1c3RyaWFsIFBhcgotCQkJCVd1IEt1IEhzaWFuZyxUYWlwZWkgSHNpZW4sICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTY4ICAgKGhleCkJCUFkZHZhbHVlIENvbW11bmljYXRpb25zIFB0ZSBMdGQKLTAwMEI2OCAgICAgKGJhc2UgMTYpCQlBZGR2YWx1ZSBDb21tdW5pY2F0aW9ucyBQdGUgTHRkCi0JCQkJMjgsVEFJIFNFTkcgU1RSRUVUICMwNi0wMgotCQkJCVNpbmdhcG9yZSAgNTM0MTA2Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTBCLTY5ICAgKGhleCkJCUZyYW5rZSBGaW5sYW5kIE95Ci0wMDBCNjkgICAgIChiYXNlIDE2KQkJRnJhbmtlIEZpbmxhbmQgT3kKLQkJCQlWYXJ0aW9rdWphIDEKLQkJCQlOQUFSQUpBUlZJIE5BQVJBSkFSVkkgRklOLTc2ODUwCi0JCQkJRklOTEFORAotCi0wMC0wQi02QSAgIChoZXgpCQlBc2lhcm9jayBJbmNvcnBvcmF0aW9uCi0wMDBCNkEgICAgIChiYXNlIDE2KQkJQXNpYXJvY2sgSW5jb3Jwb3JhdGlvbgotCQkJCVAuTy4gQm94OTU3LCBPZmZzaG9yZSBJbmNvcnBvcmF0aW9ucyBDZW4KLQkJCQlSb2FkIFRvd24gVG9ydG9sYSAKLQkJCQlWSVJHSU4gSVNMQU5EUywgQlJJVElTSAotCi0wMC0wQi02QiAgIChoZXgpCQlXaXN0cm9uIE5ld2ViIENvcnAuCi0wMDBCNkIgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBOZXdlYiBDb3JwLgotCQkJCU5vLiAxMC0xLCBMaS1Ic2luIFJvYWQgSSwgU2NpZW5jZS1iYXNlZAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItNkMgICAoaGV4KQkJU3ljaGlwIEluYy4KLTAwMEI2QyAgICAgKGJhc2UgMTYpCQlTeWNoaXAgSW5jLgotCQkJCTI4MDUgTi4gRGFsbGFzIFBhcmt3YXkgU3VpdGUgNDAwCi0JCQkJUGxhbm8gVGV4YXMgNzUwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTZEICAgKGhleCkJCVNPTEVDVFJPTiBKQVBBTiBOQUtBTklJREEKLTAwMEI2RCAgICAgKGJhc2UgMTYpCQlTT0xFQ1RST04gSkFQQU4gTkFLQU5JSURBCi0JCQkJMzI1IEdBTkJBUkEKLQkJCQlOQUtBTklJREFNQUNISQotCQkJCUtBTUlHVU4gTUlZQUdJS0VOIDk4MS00MjYzCi0JCQkJSkFQQU4KLQotMDAtMEItNkUgICAoaGV4KQkJTmVmZiBJbnN0cnVtZW50IENvcnAuCi0wMDBCNkUgICAgIChiYXNlIDE2KQkJTmVmZiBJbnN0cnVtZW50IENvcnAuCi0JCQkJNzAwIFNvdXRoIE15cnRsZSBBdmUuCi0JCQkJTW9ucm92aWEgQ0EgOTEwMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTZGICAgKGhleCkJCU1lZGlhIFN0cmVhbWluZyBOZXR3b3JrcyBJbmMKLTAwMEI2RiAgICAgKGJhc2UgMTYpCQlNZWRpYSBTdHJlYW1pbmcgTmV0d29ya3MgSW5jCi0JCQkJMTkwNSBBbmFtIFRvd2VyLCA3MDItMTAsIFllb2tzYW0gZG9uZywgSwotCQkJCVNlb3VsICAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLTcwICAgKGhleCkJCUxvYWQgVGVjaG5vbG9neSwgSW5jLgotMDAwQjcwICAgICAoYmFzZSAxNikJCUxvYWQgVGVjaG5vbG9neSwgSW5jLgotCQkJCTQyMjUgUHJvZHVjdGlvbiBDb3VydAotCQkJCUxhcyBWZWdhcyBOViA4OTExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNzEgICAoaGV4KQkJTGl0Y2hmaWVsZCBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDBCNzEgICAgIChiYXNlIDE2KQkJTGl0Y2hmaWVsZCBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJMjcgUHJpbmNldG9uIFJvYWQKLQkJCQlXYXRlcnRvd24gQ1QgMDY3OTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTcyICAgKGhleCkJCUxhd28gQUcKLTAwMEI3MiAgICAgKGJhc2UgMTYpCQlMYXdvIEFHCi0JCQkJQW0gT2JlcndhbGQgOAotCQkJCVJhc3RhdHQgQmFkZW4tV8O8cnR0ZW1iZXJnIDc2NDM3Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi03MyAgIChoZXgpCQlLb2Rlb3MgQ29tbXVuaWNhdGlvbnMKLTAwMEI3MyAgICAgKGJhc2UgMTYpCQlLb2Rlb3MgQ29tbXVuaWNhdGlvbnMKLQkJCQkxMTEgQ29ycG9yYXRlIEJsdmQKLQkJCQlTdWl0ZSBBCi0JCQkJU291dGggUGxhaW5maWVsZCBOSiAwNzA4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItNzQgICAoaGV4KQkJS2luZ3dhdmUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMEI3NCAgICAgKGJhc2UgMTYpCQlLaW5nd2F2ZSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTE4Ri0zLCBOby4gMTg2LCBKaWFuLVlpIFJkLgotCQkJCUNodW5nLUhvIFRhaXBlaSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLTc1ICAgKGhleCkJCUlvc29mdCBMdGQuCi0wMDBCNzUgICAgIChiYXNlIDE2KQkJSW9zb2Z0IEx0ZC4KLQkJCQk1IFdvb2RsYXJrIFJvYWQKLQkJCQlDYW1icmlkZ2UgQ2FtYnMuIENCMyAwSFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQi03NiAgIChoZXgpCQlFVCZUIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTAwMEI3NiAgICAgKGJhc2UgMTYpCQlFVCZUIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLQkJCQk2RiBOby4xMDEsIFNvbmdKaWFuZyBSZC4KLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItNzcgICAoaGV4KQkJQ29nZW50IFN5c3RlbXMsIEluYy4KLTAwMEI3NyAgICAgKGJhc2UgMTYpCQlDb2dlbnQgU3lzdGVtcywgSW5jLgotCQkJCTIwOSBGYWlyIE9ha3MgQXZlLgotCQkJCVNvdXRoIFBhc2FkZW5hIENBIDkxMDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi03OCAgIChoZXgpCQlUQUlGQVRFQ0ggSU5DLgotMDAwQjc4ICAgICAoYmFzZSAxNikJCVRBSUZBVEVDSCBJTkMuCi0JCQkJOEYtMSBOby4yODksIFNlYy4yICBHdWFuZ2Z1IFJkLgotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItNzkgICAoaGV4KQkJWC1DT00sIEluYy4KLTAwMEI3OSAgICAgKGJhc2UgMTYpCQlYLUNPTSwgSW5jLgotCQkJCTg4MDkgU3VkbGV5IFJvYWQKLQkJCQlTdWl0ZSAyMDIKLQkJCQlNYW5hc3NhcyBWQSAyMDExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItN0EgICAoaGV4KQkJV2F2ZSBTY2llbmNlIEluYy4KLTAwMEI3QSAgICAgKGJhc2UgMTYpCQlXYXZlIFNjaWVuY2UgSW5jLgotCQkJCTc2MjAgT21uaXRlY2ggUGxhY2UKLQkJCQlWaWN0b3IgTmV3IFlvcmsgMTQ1NjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTdCICAgKGhleCkJCVRlc3QtVW0gSW5jLgotMDAwQjdCICAgICAoYmFzZSAxNikJCVRlc3QtVW0gSW5jLgotCQkJCTgwOCBDYWxsZSBQbGFubwotCQkJCUNhbWFyaWxsbyBDQSA5MzAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItN0MgICAoaGV4KQkJVGVsZXggQ29tbXVuaWNhdGlvbnMKLTAwMEI3QyAgICAgKGJhc2UgMTYpCQlUZWxleCBDb21tdW5pY2F0aW9ucwotCQkJCTg2MDEgRS4gQ29ybmh1c2tlciBId3kKLQkJCQlMaW5jb2xuIE5FIDY4NTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi03RCAgIChoZXgpCQlTT0xPTU9OIEVYVFJFTUUgSU5URVJOQVRJT05BTCBMVEQuCi0wMDBCN0QgICAgIChiYXNlIDE2KQkJU09MT01PTiBFWFRSRU1FIElOVEVSTkFUSU9OQUwgTFRELgotCQkJCTNGLCBOby4yMCwgTGFuZSAxNjUsIER1ZW5odWEgTi4gUmQuLCBTdW4KLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItN0UgICAoaGV4KQkJU0FHSU5PTUlZQSBTZWlzYWt1c2hvIEluYy4KLTAwMEI3RSAgICAgKGJhc2UgMTYpCQlTQUdJTk9NSVlBIFNlaXNha3VzaG8gSW5jLgotCQkJCTUzNSBTYXNhaQotCQkJCVNheWFtYXNoaSBTYWl0YW1ha2VuIDM1MC0xMzk1Ci0JCQkJSkFQQU4KLQotMDAtMEItN0YgICAoaGV4KQkJQWxpZ24gRW5naW5lZXJpbmcgTExDCi0wMDBCN0YgICAgIChiYXNlIDE2KQkJQWxpZ24gRW5naW5lZXJpbmcgTExDCi0JCQkJMjQ1IEhpZ2hsYW5kcyBEcml2ZQotCQkJCUZyaWRheSBIYXJib3IgIFdBIDk4MjUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi04MCAgIChoZXgpCQlMeWNpdW0gTmV0d29ya3MKLTAwMEI4MCAgICAgKGJhc2UgMTYpCQlMeWNpdW0gTmV0d29ya3MKLQkJCQk5IEhhbWVub2ZpbSBTdC4KLQkJCQlQLk8uQm94IDEyMjU2Ci0JCQkJSGVyemxpeWEgSXNyYWVsIDQ2NzMzCi0JCQkJSVNSQUVMCi0KLTAwLTBCLTgxICAgKGhleCkJCUthcGFyZWwgQ29ycG9yYXRpb24KLTAwMEI4MSAgICAgKGJhc2UgMTYpCQlLYXBhcmVsIENvcnBvcmF0aW9uCi0JCQkJOTcgUmFuZGFsbCBEcml2ZQotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJWLTFDNQotCQkJCUNBTkFEQQotCi0wMC0wQi04MiAgIChoZXgpCQlHcmFuZHN0cmVhbSBOZXR3b3JrcywgSW5jLgotMDAwQjgyICAgICAoYmFzZSAxNikJCUdyYW5kc3RyZWFtIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTI5NyBCZWFjb24gU3RyZWV0Ci0JCQkJMm5kIEZsb29yCi0JCQkJQnJvb2tsaW5lIE1BIDAyNDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi04MyAgIChoZXgpCQlEQVRBV0FUVCBCLlYuCi0wMDBCODMgICAgIChiYXNlIDE2KQkJREFUQVdBVFQgQi5WLgotCQkJCUhPVVRTVFJBQVQgNQotCQkJCVAuTy4gQk9YIDEwOAotCQkJCVdPTFZFR0EgRlJJRVNMQU5EIE5MLTg0NzEtWlgKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wQi04NCAgIChoZXgpCQlCT0RFVAotMDAwQjg0ICAgICAoYmFzZSAxNikJCUJPREVUCi0JCQkJUm91dGUgZGUgbGEgVG91cmxhbmRyeQotCQkJCVRSRU1FTlRJTkVTIEZSQU5DRSA0OTM0MAotCQkJCUZSQU5DRQotCi0wMC0wQi04NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCODUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFcuIFRhc21hbiBEcml2ZQotCQkJCU1TIFNKQ00vMS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTg2ICAgKGhleCkJCUFydWJhIE5ldHdvcmtzCi0wMDBCODYgICAgIChiYXNlIDE2KQkJQXJ1YmEgTmV0d29ya3MKLQkJCQkxMzIyIENyb3NzbWFuIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItODcgICAoaGV4KQkJQW1lcmljYW4gUmVsaWFuY2UgSW5jLgotMDAwQjg3ICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIFJlbGlhbmNlIEluYy4KLQkJCQkxMTgwMSBHb2xkcmluZyBSZAotCQkJCUFyY2FkaWEgQ0EgOTEwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTg4ICAgKGhleCkJCVZpZGlzY28gbHRkLgotMDAwQjg4ICAgICAoYmFzZSAxNikJCVZpZGlzY28gbHRkLgotCQkJCTE3IFllY2hpZWwgRHJlc25lcgotCQkJCVBldGFjaC1UaWt2YSAgNDkyNzcKLQkJCQlJU1JBRUwKLQotMDAtMEItODkgICAoaGV4KQkJVG9wIEdsb2JhbCBUZWNobm9sb2d5LCBMdGQuCi0wMDBCODkgICAgIChiYXNlIDE2KQkJVG9wIEdsb2JhbCBUZWNobm9sb2d5LCBMdGQuCi0JCQkJUm9vbSAzMzEwLCBDaGluYSBXb3JsZCBUb3dlciBOby4gMQotCQkJCUppYW4gR3VvIE1lbiBXYWkgQXZlbnVlCi0JCQkJQmVpamluZyBCZWlqaW5nIDEwMDAwNAotCQkJCUNISU5BCi0KLTAwLTBCLThBICAgKGhleCkJCU1JVEVRIEluYy4KLTAwMEI4QSAgICAgKGJhc2UgMTYpCQlNSVRFUSBJbmMuCi0JCQkJMTAwIERhdmlkcyBEcml2ZQotCQkJCUhhdXBwYXVnZSBOWSAxMTc4OC0yMDM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi04QiAgIChoZXgpCQlLRVJBSkVULCBTLkEuCi0wMDBCOEIgICAgIChiYXNlIDE2KQkJS0VSQUpFVCwgUy5BLgotCQkJCUN0cmEuIFZpbGxhcnJlYWwtT25kYSwgS20gMi41Ci0JCQkJVmlsbGFycmVhbCBDYXN0ZWxsb24gRS0xMjU0MAotCQkJCVNQQUlOCi0KLTAwLTBCLThDICAgKGhleCkJCUZsZXh0cm9uaWNzCi0wMDBCOEMgICAgIChiYXNlIDE2KQkJRmxleHRyb25pY3MKLQkJCQlNaWdkYWwgSGFFbWVrCi0JCQkJUmFtYXQgR2F2cmllbAotCQkJCTIzMTA4IEhhdGFhc2lhIDEgCi0JCQkJSVNSQUVMCi0KLTAwLTBCLThEICAgKGhleCkJCUF2dmlvIE5ldHdvcmtzCi0wMDBCOEQgICAgIChiYXNlIDE2KQkJQXZ2aW8gTmV0d29ya3MKLQkJCQkxMSBEb25vdmFuIERyCi0JCQkJQmVkZm9yZCBNQSAwMTczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItOEUgICAoaGV4KQkJQXNjZW50IENvcnBvcmF0aW9uCi0wMDBCOEUgICAgIChiYXNlIDE2KQkJQXNjZW50IENvcnBvcmF0aW9uCi0JCQkJMi0xNi0xOSwgS2F3YXJheWEtbWFjaGksIENodW8tS3UsCi0JCQkJT3Nha2EtQ2l0eSBPc2FrYS1QcmVmIDU0Mi0wMDY2Ci0JCQkJSkFQQU4KLQotMDAtMEItOEYgICAoaGV4KQkJQUtJVEEgRUxFQ1RST05JQ1MgU1lTVEVNUyBDTy4sTFRELgotMDAwQjhGICAgICAoYmFzZSAxNikJCUFLSVRBIEVMRUNUUk9OSUNTIFNZU1RFTVMgQ08uLExURC4KLQkJCQk4NSxBWkEgVVNISVJPTk8sQUlLQVdBLFlVV0EtTUFDSEkKLQkJCQlLQVdBQkUtR1VOIEFLSVRBLUtFTiAwMTAtMTIzMQotCQkJCUpBUEFOCi0KLTAwLTBCLTkwICAgKGhleCkJCUFkdmEgT3B0aWNhbCBOZXR3b3JraW5nIEluYy4KLTAwMEI5MCAgICAgKGJhc2UgMTYpCQlBZHZhIE9wdGljYWwgTmV0d29ya2luZyBJbmMuCi0JCQkJQ2xpZnRvbiBUZWNobm9sb2d5IENlbnRyZQotCQkJCUNsaWZ0b24gTW9vcgotCQkJCVlvcmsgWU8zMCA0R1UKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQi05MSAgIChoZXgpCQlBZ2xhaWEgR2VzZWxsc2NoYWZ0IGbDvHIgQmlsZHZlcmFyYmVpdHVuZyB1bmQgS29tbXVuaWthdGlvbiBtCi0wMDBCOTEgICAgIChiYXNlIDE2KQkJQWdsYWlhIEdlc2VsbHNjaGFmdCBmw7xyIEJpbGR2ZXJhcmJlaXR1bmcgdW5kIEtvbW11bmlrYXRpb24gbQotCQkJCVRpbml1c3N0ci4gMTItMTUKLQkJCQlCZXJsaW4gIEQtMTMwODkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLTkyICAgKGhleCkJCUFzY29tIERhbm1hcmsgQS9TCi0wMDBCOTIgICAgIChiYXNlIDE2KQkJQXNjb20gRGFubWFyayBBL1MKLQkJCQlGYWJyaWtzcGFya2VuIDQyCi0JCQkJR2xvc3RydXAgRGVubWFyayAyNjAwCi0JCQkJREVOTUFSSwotCi0wMC0wQi05MyAgIChoZXgpCQlSaXR0ZXIgRWxla3Ryb25pawotMDAwQjkzICAgICAoYmFzZSAxNikJCVJpdHRlciBFbGVrdHJvbmlrCi0JCQkJTGV2ZXJrdXNlciBTdHIgNjUKLQkJCQlQLk8uIEJveCAxMTAyNDAKLQkJCQlSZW1zY2hlaWQgTlJXIDQyODk3Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi05NCAgIChoZXgpCQlEaWdpdGFsIE1vbml0b3JpbmcgUHJvZHVjdHMsIEluYy4KLTAwMEI5NCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIE1vbml0b3JpbmcgUHJvZHVjdHMsIEluYy4KLQkJCQkyNTAwIE4uIFBhcnRuZXJzaGlwIEJvdWxldmFyZAotCQkJCVNwcmluZ2ZpZWxkIE1pc3NvdXJpIDY1ODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi05NSAgIChoZXgpCQllQmV0IEdhbWluZyBTeXN0ZW1zIFB0eSBMdGQKLTAwMEI5NSAgICAgKGJhc2UgMTYpCQllQmV0IEdhbWluZyBTeXN0ZW1zIFB0eSBMdGQKLQkJCQlTdWl0ZSBELCAyNTUgUmF3c29uIFN0cmVldAotCQkJCUF1YnVybiBOU1cgMjE0NAotCQkJCUFVU1RSQUxJQQotCi0wMC0wQi05NiAgIChoZXgpCQlJbm5vdHJhYyBEaWFnbm9zdGljcyBPeQotMDAwQjk2ICAgICAoYmFzZSAxNikJCUlubm90cmFjIERpYWdub3N0aWNzIE95Ci0JCQkJS2FsZXZhbnRpZSAyNQotCQkJCVR1cmt1IMOD4oCmYm8gMjA1MjAKLQkJCQlGSU5MQU5ECi0KLTAwLTBCLTk3ICAgKGhleCkJCU1hdHN1c2hpdGEgRWxlY3RyaWMgSW5kdXN0cmlhbCBDby4sTHRkLgotMDAwQjk3ICAgICAoYmFzZSAxNikJCU1hdHN1c2hpdGEgRWxlY3RyaWMgSW5kdXN0cmlhbCBDby4sTHRkLgotCQkJCTMtMS0xIFlhZ3Vtby1OYWthLU1hY2hpCi0JCQkJTW9yaWd1Y2hpIENpdHkgT3Nha2EgNTcwLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0wQi05OCAgIChoZXgpCQlOaWNlVGVjaFZpc2lvbgotMDAwQjk4ICAgICAoYmFzZSAxNikJCU5pY2VUZWNoVmlzaW9uCi0JCQkJSW50ZWxab25lIDcwMwotCQkJCVlvbmdJbiAgR3VnYWwtcmkgIEtpIEhldW5nIEt5b3VuZ0tpRG8gMzU0LTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItOTkgICAoaGV4KQkJU2Vuc0FibGUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBCOTkgICAgIChiYXNlIDE2KQkJU2Vuc0FibGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTUgQ29uc3RpdHV0aW9uIFdheQotCQkJCVdvYnVybiBNQSAwMTgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItOUEgICAoaGV4KQkJU2hhbmdoYWkgVWxpbmsgVGVsZWNvbSBFcXVpcG1lbnQgQ28uIEx0ZC4KLTAwMEI5QSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBVbGluayBUZWxlY29tIEVxdWlwbWVudCBDby4gTHRkLgotCQkJCTYgRmxvb3IsIEJ1aWxkaW5nIDMKLQkJCQkyMzAgV2VzdCBKaWFuZ3dhbiBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDA4MwotCQkJCUNISU5BCi0KLTAwLTBCLTlCICAgKGhleCkJCVNpcml1cyBTeXN0ZW0gQ28sIEx0ZC4KLTAwMEI5QiAgICAgKGJhc2UgMTYpCQlTaXJpdXMgU3lzdGVtIENvLCBMdGQuCi0JCQkJMy0yNyBGdW5hZG8tY2hvCi0JCQkJQXNoaXlhIEh5b2dvIDY1OS0wMDkzCi0JCQkJSkFQQU4KLQotMDAtMEItOUMgICAoaGV4KQkJVHJpQmVhbSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEI5QyAgICAgKGJhc2UgMTYpCQlUcmlCZWFtIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTExNiBXLiBFYXN0bWFuIFN0Liwgc3VpdGUgMjA4Ci0JCQkJQXJsaW5ndG9uIEhlaWdodHMgSUwgNjAwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLTlEICAgKGhleCkJCVR3aW5NT1MgVGVjaG5vbG9naWVzIEluYy4KLTAwMEI5RCAgICAgKGJhc2UgMTYpCQlUd2luTU9TIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMzAzIE5vLjMsIFR6dSBDaGlhbmcgUmQuLCBIdSBLb3UgWGlhbmcsCi0JCQkJSHNpbiBDaHUgIDMwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItOUUgICAoaGV4KQkJWWFzaW5nIFRlY2hub2xvZ3kgQ29ycC4KLTAwMEI5RSAgICAgKGJhc2UgMTYpCQlZYXNpbmcgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLiA1MCwgVGEgSHN1ZWggUm9hZCwgSHNpbkNodSwgVGFpd2FuCi0JCQkJSHNpbkNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi05RiAgIChoZXgpCQlOZXVlIEVMU0EgR21iSAotMDAwQjlGICAgICAoYmFzZSAxNikJCU5ldWUgRUxTQSBHbWJICi0JCQkJU29ubmVud2VnIDExCi0JCQkJQWFjaGVuICA1MjA3MAotCQkJCUdFUk1BTlkKLQotMDAtMEItQTAgICAoaGV4KQkJVCZMIEluZm9ybWF0aW9uIEluYy4KLTAwMEJBMCAgICAgKGJhc2UgMTYpCQlUJkwgSW5mb3JtYXRpb24gSW5jLgotCQkJCTg5OC00NCBIb2t5ZS1Eb25nLCBEb25nYW4tR3UKLQkJCQlBbnlhbmcgS3l1bmdraS1EbyA0MzEtODM2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLUExICAgKGhleCkJCVNZU0NPTSBMdGQuCi0wMDBCQTEgICAgIChiYXNlIDE2KQkJU1lTQ09NIEx0ZC4KLQkJCQk0LTEwIEhBS09EQSwgS1VNQUdBWUEtU0hJCi0JCQkJU0FJVEFNQS1LRU4gMzYwLTg1MTUKLQkJCQlKQVBBTgotCi0wMC0wQi1BMiAgIChoZXgpCQlTdW1pdG9tbyBFbGVjdHJpYyBOZXR3b3JrcywgSW5jCi0wMDBCQTIgICAgIChiYXNlIDE2KQkJU3VtaXRvbW8gRWxlY3RyaWMgTmV0d29ya3MsIEluYwotCQkJCTEtMS0zLCBTaGltYXlhLCBLb25vaGFuYS1rdQotCQkJCU9zYWthICA1NTQtMDAyNAotCQkJCUpBUEFOCi0KLTAwLTBCLUEzICAgKGhleCkJCVNpZW1lbnMgQUcsIEkmUwotMDAwQkEzICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQUcsIEkmUwotCQkJCVdlcm5lci12b24tU2llbWVucy1TdHJhw4PFuGUgNjUKLQkJCQlFcmxhbmdlbiBCYXZhcmlhIDkxMDUyCi0JCQkJR0VSTUFOWQotCi0wMC0wQi1BNCAgIChoZXgpCQlTaGlyb24gU2F0ZWxsaXRlIENvbW11bmljYXRpb25zIEx0ZC4gKDE5OTYpCi0wMDBCQTQgICAgIChiYXNlIDE2KQkJU2hpcm9uIFNhdGVsbGl0ZSBDb21tdW5pY2F0aW9ucyBMdGQuICgxOTk2KQotCQkJCTIzIEhhc2l2aW0gU3QuCi0JCQkJUGV0YWNoIFRpa3ZhICA0OTE3MAotCQkJCUlTUkFFTAotCi0wMC0wQi1BNSAgIChoZXgpCQlRdWFzYXIgQ2lwdGEgTWFuZGlyaSwgUFQKLTAwMEJBNSAgICAgKGJhc2UgMTYpCQlRdWFzYXIgQ2lwdGEgTWFuZGlyaSwgUFQKLQkJCQlKbC4gUGFsYXNhcmkgOUEKLQkJCQlCYW5kdW5nIFdlc3QgSmF2YSA0MDI2MgotCQkJCUlORE9ORVNJQQotCi0wMC0wQi1BNiAgIChoZXgpCQlNaXlha2F3YSBFbGVjdHJpYyBXb3JrcyBMdGQuCi0wMDBCQTYgICAgIChiYXNlIDE2KQkJTWl5YWthd2EgRWxlY3RyaWMgV29ya3MgTHRkLgotCQkJCTItMS02LAotCQkJCUtvaGhva3Uta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjItMDAwMQotCQkJCUpBUEFOCi0KLTAwLTBCLUE3ICAgKGhleCkJCU1hcmFudGkgTmV0d29ya3MKLTAwMEJBNyAgICAgKGJhc2UgMTYpCQlNYXJhbnRpIE5ldHdvcmtzCi0JCQkJMzA2MS1CIFphbmtlciBSb2FkCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUE4ICAgKGhleCkJCUhBTkJBQ0sgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDBCQTggICAgIChiYXNlIDE2KQkJSEFOQkFDSyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQkzMDYtNywgR2FsbWEtZG9uZywgU2VvLWd1Ci0JCQkJRGFlamVvbiAgMzAyLTE3MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1BOSAgIChoZXgpCQlDbG91ZFNoaWVsZCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEJBOSAgICAgKGJhc2UgMTYpCQlDbG91ZFNoaWVsZCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyMTIgR2lsYnJhbHRhciBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItQUEgICAoaGV4KQkJQWlwaG9uZSBjby4sTHRkCi0wMDBCQUEgICAgIChiYXNlIDE2KQkJQWlwaG9uZSBjby4sTHRkCi0JCQkJMi0xOCBKaW5uby1DaG8KLQkJCQlBdHN1dGEta3UKLQkJCQlOYWdveWEgQWljaGkta2VuIDQ1Ni04NjY2Ci0JCQkJSkFQQU4KLQotMDAtMEItQUIgICAoaGV4KQkJQWR2YW50ZWNoIFRlY2hub2xvZ3kgKENISU5BKSBDby4sIEx0ZC4KLTAwMEJBQiAgICAgKGJhc2UgMTYpCQlBZHZhbnRlY2ggVGVjaG5vbG9neSAoQ0hJTkEpIENvLiwgTHRkLgotCQkJCU5vLjY2NiwgSGFuLVB1IFJkLiBZdS1TaGFuCi0JCQkJS3VuLVNoYW4gSmlhbmcgU3UgMjE1MzE2Ci0JCQkJQ0hJTkEKLQotMDAtMEItQUMgICAoaGV4KQkJM0NvbSBMdGQKLTAwMEJBQyAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIsIFBlb3BsZWJ1aWxkaW5nIEVzdGF0ZQotCQkJCU1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cy4gSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBCLUFEICAgKGhleCkJCVBDLVBvUyBJbmMuCi0wMDBCQUQgICAgIChiYXNlIDE2KQkJUEMtUG9TIEluYy4KLQkJCQkzMDkgQ29tbWlzc2lvbmVycyBSb2FkIFdlc3QKLQkJCQlMb25kb24gT250YXJpbyBONkogMVk0Ci0JCQkJQ0FOQURBCi0KLTAwLTBCLUFFICAgKGhleCkJCVZpdGFscyBTeXN0ZW0gSW5jLgotMDAwQkFFICAgICAoYmFzZSAxNikJCVZpdGFscyBTeXN0ZW0gSW5jLgotCQkJCUpvb2hldW5nIEIvRCA0RkwuIDEwMDUtMSwgWW91bmd0b25nLURvbmcKLQkJCQlTdXdvbiBDaXR5IEt5b25nZ2ktRG8gNDQyLTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1BRiAgIChoZXgpCQlXT09KVSBDT01NVU5JQ0FUSU9OUyBDbywuTHRkCi0wMDBCQUYgICAgIChiYXNlIDE2KQkJV09PSlUgQ09NTVVOSUNBVElPTlMgQ28sLkx0ZAotCQkJCUItNzEzLCBTSyBUd2luIFRlY2ggVG93ZXIsIDM0NS05LCBHYS1TYW4KLQkJCQlTZW91bCAgMTUzLTgwMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1CMCAgIChoZXgpCQlTeXNuZXQgVGVsZW1hdGljYSBzcmwKLTAwMEJCMCAgICAgKGJhc2UgMTYpCQlTeXNuZXQgVGVsZW1hdGljYSBzcmwKLQkJCQlWaWFsZSBCZXJiZXJhLCA0OQotCQkJCU1pbGFuICAyMDE2MgotCQkJCUlUQUxZCi0KLTAwLTBCLUIxICAgKGhleCkJCVN1cGVyIFN0YXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMEJCMSAgICAgKGJhc2UgMTYpCQlTdXBlciBTdGFyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDcgTGFuZSAzMDYsU2VjLiAyLFRhaS1MaW4gUmQuCi0JCQkJVGFpLVNoYW4gU2hpYW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyNDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLUIyICAgKGhleCkJCVNNQUxMQklHIFRFQ0hOT0xPR1kKLTAwMEJCMiAgICAgKGJhc2UgMTYpCQlTTUFMTEJJRyBURUNITk9MT0dZCi0JCQkJM0YgRG9uZ3N1bmcgQmxkZy4gNzIwLTkgWW9rc2FtZG9uZwotCQkJCUdhbmduYW1ndSBTZW91bCAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLUIzICAgKGhleCkJCVJpVCB0ZWNobm9sb2dpZXMgTHRkLgotMDAwQkIzICAgICAoYmFzZSAxNikJCVJpVCB0ZWNobm9sb2dpZXMgTHRkLgotCQkJCTI0IFJhb3VsIFdhbGVuYmVyZyAgU3QuCi0JCQkJVGVsIEF2aXYgIDY5NzE5Ci0JCQkJSVNSQUVMCi0KLTAwLTBCLUI0ICAgKGhleCkJCVJEQyBTZW1pY29uZHVjdG9yIEluYy4sCi0wMDBCQjQgICAgIChiYXNlIDE2KQkJUkRDIFNlbWljb25kdWN0b3IgSW5jLiwKLQkJCQk2Ri0xICwgTm8uMi0xLCBMaWhzaW4gUmQsIFNjaWVuY2UtQmFzZWQKLQkJCQlIc2luIENodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1CNSAgIChoZXgpCQluU3RvciBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEJCNSAgICAgKGJhc2UgMTYpCQluU3RvciBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMDAgVGVjaG5vbG9neSBQYXJrCi0JCQkJU3VpdGUgMTc1Ci0JCQkJTGFrZSBNYXJ5IEZMIDMyNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1CNiAgIChoZXgpCQlNZXRhbGxpZ2VuY2UgVGVjaG5vbG9neSBDb3JwLgotMDAwQkI2ICAgICAoYmFzZSAxNikJCU1ldGFsbGlnZW5jZSBUZWNobm9sb2d5IENvcnAuCi0JCQkJOSwgUGFyayBBdmVudWUgSUksIFNjaWVuY2UtQmFzZWQgSW5kdXN0cgotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItQjcgICAoaGV4KQkJTWljcm8gU3lzdGVtcyBDby4sTHRkLgotMDAwQkI3ICAgICAoYmFzZSAxNikJCU1pY3JvIFN5c3RlbXMgQ28uLEx0ZC4KLQkJCQkyLTE1LTM0IE5pc2hpa3VibwotCQkJCU11c2FzaGluby1DaXR5IFRva3lvIDE4MC0wMDEzCi0JCQkJSkFQQU4KLQotMDAtMEItQjggICAoaGV4KQkJS2lob2t1IEVsZWN0cm9uaWMgQ28uCi0wMDBCQjggICAgIChiYXNlIDE2KQkJS2lob2t1IEVsZWN0cm9uaWMgQ28uCi0JCQkJTWFydWthdHViaXJ1IDNGIDQtOS02Ci0JCQkJTmlob25iYXNoaSBOYW5pd2Eta3UKLQkJCQlPc2FrYXNoaSBPc2FrYS1odSA1NTYtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTBCLUI5ICAgKGhleCkJCUltc3lzIEFCCi0wMDBCQjkgICAgIChiYXNlIDE2KQkJSW1zeXMgQUIKLQkJCQlKb2hhbm5lc2x1bmRzdmFnZW4gMwotCQkJCVVwcGxhbmRzIFZhc2J5ICBTRS0xOTQ2MQotCQkJCVNXRURFTgotCi0wMC0wQi1CQSAgIChoZXgpCQlIYXJtb25pYyBCcm9hZGJhbmQgQWNjZXNzIE5ldHdvcmtzCi0wMDBCQkEgICAgIChiYXNlIDE2KQkJSGFybW9uaWMgQnJvYWRiYW5kIEFjY2VzcyBOZXR3b3JrcwotCQkJCTU0OSBCYWx0aWMgV2F5Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1CQiAgIChoZXgpCQlFdGluIFN5c3RlbXMgQ28uLCBMdGQKLTAwMEJCQiAgICAgKGJhc2UgMTYpCQlFdGluIFN5c3RlbXMgQ28uLCBMdGQKLQkJCQkxMkYsIElUIFZlbnR1cmUgVG93ZXIsCi0JCQkJNzggR2FyYWtCb24tRG9uZywgU29uZ3BhLUt1Ci0JCQkJU2VvdWwgIDEzOC04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEItQkMgICAoaGV4KQkJRW4gR2FyZGUgU3lzdGVtcywgSW5jLgotMDAwQkJDICAgICAoYmFzZSAxNikJCUVuIEdhcmRlIFN5c3RlbXMsIEluYy4KLQkJCQkyMTAxIFdoaXRlIENsb3VkIFN0LiBORQotCQkJCUFsYnVxdWVycXVlIE5NIDg3MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1CRCAgIChoZXgpCQlDb25uZXhpb256IExpbWl0ZWQKLTAwMEJCRCAgICAgKGJhc2UgMTYpCQlDb25uZXhpb256IExpbWl0ZWQKLQkJCQkxIFNob3cgUGxhY2UKLQkJCQlDaHJpc3RjaHVyY2ggQ2FudGVyYnVyeSA4MDA0Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMEItQkUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQkJFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItQkYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwQkJGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItQzAgICAoaGV4KQkJQ2hpbmEgSVdOQ29tbSBDby4sIEx0ZC4KLTAwMEJDMCAgICAgKGJhc2UgMTYpCQlDaGluYSBJV05Db21tIENvLiwgTHRkLgotCQkJCTRGLkMgWGlldG9uZyBCdWlsZGluZyxOby4xMiBHYW94aW4gMm5kIHIKLQkJCQlIaS10ZWNoIGluZHVzdHJpZXMgZGV2ZWxvcG1lbnQgem9uZQotCQkJCVhpJ2FuIHNoYWFueGkgNzEwMDc1Ci0JCQkJQ0hJTkEKLQotMDAtMEItQzEgICAoaGV4KQkJQmF5IE1pY3Jvc3lzdGVtcywgSW5jLgotMDAwQkMxICAgICAoYmFzZSAxNikJCUJheSBNaWNyb3N5c3RlbXMsIEluYy4KLQkJCQkyNzAwIEF1Z3VzdGluZSBEcml2ZQotCQkJCVN1aXRlIDI5OAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1DMiAgIChoZXgpCQlDb3JpbmV4IENvbW11bmljYXRpb24gQ29ycC4KLTAwMEJDMiAgICAgKGJhc2UgMTYpCQlDb3JpbmV4IENvbW11bmljYXRpb24gQ29ycC4KLQkJCQkjMzA4IDExNjggSGFtaWx0b24gU3RyZWV0Ci0JCQkJVmFuY291dmVyIEIuQy4gVjZCIDJTMgotCQkJCUNBTkFEQQotCi0wMC0wQi1DMyAgIChoZXgpCQlNdWx0aXBsZXgsIEluYy4KLTAwMEJDMyAgICAgKGJhc2UgMTYpCQlNdWx0aXBsZXgsIEluYy4KLQkJCQk1MDAwIEhhZGxleSBSZC4KLQkJCQlTLiBQbGFpbmZpZWxkIE5KIDA3MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1DNCAgIChoZXgpCQlCSU9UUk9OSUsgR21iSCAmIENvCi0wMDBCQzQgICAgIChiYXNlIDE2KQkJQklPVFJPTklLIEdtYkggJiBDbwotCQkJCVdvZXJtYW5ua2VocmUgMQotCQkJCUJlcmxpbiAgMTIzNTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBCLUM1ICAgKGhleCkJCVNNQyBOZXR3b3JrcywgSW5jLgotMDAwQkM1ICAgICAoYmFzZSAxNikJCVNNQyBOZXR3b3JrcywgSW5jLgotCQkJCTM4IFRlc2xhCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1DNiAgIChoZXgpCQlJU0FDLCBJbmMuCi0wMDBCQzYgICAgIChiYXNlIDE2KQkJSVNBQywgSW5jLgotCQkJCVBPIEJveCA3NjgyCi0JCQkJQXVidXJuIENBIDk1NjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1DNyAgIChoZXgpCQlJQ0VUIFMucC5BLgotMDAwQkM3ICAgICAoYmFzZSAxNikJCUlDRVQgUy5wLkEuCi0JCQkJVmlhIFF1YXJ0byBOZWdyb25pLCA2MwotCQkJCUNlY2NoaW5hIGRpIEFyaWNjaWEgUm9tYSAwMDA0MAotCQkJCUlUQUxZCi0KLTAwLTBCLUM4ICAgKGhleCkJCUFpckZsb3cgTmV0d29ya3MKLTAwMEJDOCAgICAgKGJhc2UgMTYpCQlBaXJGbG93IE5ldHdvcmtzCi0JCQkJNDQ0IENhc3RybyBTdAotCQkJCVN1aXRlIDMyMAotCQkJCU1vdW50YWluIFZpZXcgQ2EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUM5ICAgKGhleCkJCUVsZWN0cm9saW5lIEVxdWlwbWVudAotMDAwQkM5ICAgICAoYmFzZSAxNikJCUVsZWN0cm9saW5lIEVxdWlwbWVudAotCQkJCTgyNjUgYm91bC4gU3QtTWljaGVsCi0JCQkJTW9udHJlYWwgUXVlYmVjIEgxWiAzRTQKLQkJCQlDQU5BREEKLQotMDAtMEItQ0EgICAoaGV4KQkJREFUQVZBTiBJbnRlcm5hdGlvbmFsIENvcnBvcmF0aW9uCi0wMDBCQ0EgICAgIChiYXNlIDE2KQkJREFUQVZBTiBJbnRlcm5hdGlvbmFsIENvcnBvcmF0aW9uCi0JCQkJNEZMLCMxMjAtMTIsQ2h1bmcgU2hhbiBSZCwgU2VjLjMKLQkJCQlDaHVuZyBIbyBDaXR5LCBUYWlwZWkgSHNpZW4gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItQ0IgICAoaGV4KQkJRmFnb3IgQXV0b21hdGlvbiAsIFMuIENvb3AKLTAwMEJDQiAgICAgKGJhc2UgMTYpCQlGYWdvciBBdXRvbWF0aW9uICwgUy4gQ29vcAotCQkJCVNhbiBBbmRyZXMgcy9uCi0JCQkJMjA1MDAgTW9uZHJhZ29uCi0JCQkJR3VpcHV6Y29hIDIwNTAwCi0JCQkJU1BBSU4KLQotMDAtMEItQ0MgICAoaGV4KQkJSlVTQU4sIFMuQS4KLTAwMEJDQyAgICAgKGJhc2UgMTYpCQlKVVNBTiwgUy5BLgotCQkJCVZpdmVybywgNQotCQkJCU1BRFJJRCAgMjgwNDAKLQkJCQlTUEFJTgotCi0wMC0wQi1DRCAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwQkNEICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkgU291dGgKLQkJCQlNUzA0MDgwMQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUNFICAgKGhleCkJCUZyZWUybW92ZSBBQgotMDAwQkNFICAgICAoYmFzZSAxNikJCUZyZWUybW92ZSBBQgotCQkJCVNwZXJsaW5nc2dhdGFuIDcKLQkJCQlIYWxtc3RhZCBIYWxsYW5kIDMwMjQ4Ci0JCQkJU1dFREVOCi0KLTAwLTBCLUNGICAgKGhleCkJCUFHRkEgTkRUIElOQy4KLTAwMEJDRiAgICAgKGJhc2UgMTYpCQlBR0ZBIE5EVCBJTkMuCi0JCQkJNTAgSW5kdXN0cmlhbCBQYXJrIFJvYWQKLQkJCQlMZXdpc3Rvd24gUEEgMTcwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUQwICAgKGhleCkJCVhpTWV0YSBUZWNobm9sb2d5IEFtZXJpY2FzIEluYy4KLTAwMEJEMCAgICAgKGJhc2UgMTYpCQlYaU1ldGEgVGVjaG5vbG9neSBBbWVyaWNhcyBJbmMuCi0JCQkJNTQgUmF5IFN0cmVldAotCQkJCU5ldyBCcnVuc3dpY2sgTkogMDg5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUQxICAgKGhleCkJCUFlcm9uaXgsIEluYy4KLTAwMEJEMSAgICAgKGJhc2UgMTYpCQlBZXJvbml4LCBJbmMuCi0JCQkJMTc3NSBXLiBIaWJpc2N1cyBCbHZkLAotCQkJCVN1aXRlICMzMDQKLQkJCQlNZWxib3VybmUgRkwgMzI5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUQyICAgKGhleCkJCVJlbW9wcm8gVGVjaG5vbG9neSBJbmMuCi0wMDBCRDIgICAgIChiYXNlIDE2KQkJUmVtb3BybyBUZWNobm9sb2d5IEluYy4KLQkJCQlOby4gNDQzLCBIdWFubmFuIFJELiwKLQkJCQlQaW5namVuIENpdHkgVGFveXVhbiAzMjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLUQzICAgKGhleCkJCWNkM28KLTAwMEJEMyAgICAgKGJhc2UgMTYpCQljZDNvCi0JCQkJNDAyIFcgQnJvYWR3YXkKLQkJCQlTYW4gRGVpZ28gQ0EgOTIxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUQ0ICAgKGhleCkJCUJlaWppbmcgV2lzZSBUZWNobm9sb2d5ICYgU2NpZW5jZSBEZXZlbG9wbWVudCBDby5MdGQKLTAwMEJENCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFdpc2UgVGVjaG5vbG9neSAmIFNjaWVuY2UgRGV2ZWxvcG1lbnQgQ28uTHRkCi0JCQkJM3JkIEZsb29yIENhaWhvbmcgQnVpbGRpbmcsIE5vLjIsMXN0IFdlcwotCQkJCU1hZGlhbiwgSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4OAotCQkJCUNISU5BCi0KLTAwLTBCLUQ1ICAgKGhleCkJCU52ZXJnZW5jZSwgSW5jLgotMDAwQkQ1ICAgICAoYmFzZSAxNikJCU52ZXJnZW5jZSwgSW5jLgotCQkJCUplaWwgQmxkZy4gNHRoLCBTYW1zdW5nLWRvbmcgMTY4LTI2LCBLYW4KLQkJCQlTZW91bCAgMTM1LTA5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1ENiAgIChoZXgpCQlQYXh0b24gQWNjZXNzIEx0ZAotMDAwQkQ2ICAgICAoYmFzZSAxNikJCVBheHRvbiBBY2Nlc3MgTHRkCi0JCQkJUGF4dG9uIEhvdXNlCi0JCQkJSG9tZSBGYXJtIFJvYWQKLQkJCQlCcmlnaHRvbiBFYXN0IFN1c3NleCBCTjEgOUhVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEItRDcgICAoaGV4KQkJRE9STUEgVGltZSArIEFjY2VzcyBHbWJICi0wMDBCRDcgICAgIChiYXNlIDE2KQkJRE9STUEgVGltZSArIEFjY2VzcyBHbWJICi0JCQkJTWFpbnplciBTdHJhw4PFuGUgMzYtNTIKLQkJCQlCb25uIE5vcmRyaGVpbndlc3RmYWxlbiA1MzE3OQotCQkJCUdFUk1BTlkKLQotMDAtMEItRDggICAoaGV4KQkJSW5kdXN0cmlhbCBTY2llbnRpZmljIENvcnAuCi0wMDBCRDggICAgIChiYXNlIDE2KQkJSW5kdXN0cmlhbCBTY2llbnRpZmljIENvcnAuCi0JCQkJMTAwMSBPYWtkYWxlIFJvYWQKLQkJCQlPYWtkYWxlIFBBIDE1MDcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1EOSAgIChoZXgpCQlHZW5lcmFsIEh5ZHJvZ2VuCi0wMDBCRDkgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBIeWRyb2dlbgotCQkJCTEzMTIwIFZhbmllciBQbGFjZQotCQkJCVJpY2htb25kIEJyaXRpc2ggQ29sdW1iaWEgVjZWIDJKMgotCQkJCUNBTkFEQQotCi0wMC0wQi1EQSAgIChoZXgpCQlFeWVDcm9zcyBDby4sSW5jLgotMDAwQkRBICAgICAoYmFzZSAxNikJCUV5ZUNyb3NzIENvLixJbmMuCi0JCQkJM0YgIElpb2thLUJ1aWxkaW5nCi0JCQkJVG9reW8gVWVubyBUYWl0b2gta3UgMy00LTEgMTEwLTAwMDUKLQkJCQlKQVBBTgotCi0wMC0wQi1EQiAgIChoZXgpCQlEZWxsIEVTRyBQQ0JBIFRlc3QKLTAwMEJEQiAgICAgKGJhc2UgMTYpCQlEZWxsIEVTRyBQQ0JBIFRlc3QKLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1EQyAgIChoZXgpCQlBS0NQCi0wMDBCREMgICAgIChiYXNlIDE2KQkJQUtDUAotCQkJCTY3LzI4NSAgTXVhbmdha2UgVmlsbGFnZSAjOAotCQkJCU1vbyAzIFZpcGF3YWRlZSBSb2FkLCBUYW1ib2wgTHVnaG9vawotCQkJCUFtcGh1ciBNdWFuZyBQYXRvbXRoYW5lZSAxMjAwMAotCQkJCVRIQUlMQU5ECi0KLTAwLTBCLUREICAgKGhleCkJCVRPSE9LVSBSSUNPSCBDby4sIExURC4KLTAwMEJERCAgICAgKGJhc2UgMTYpCQlUT0hPS1UgUklDT0ggQ28uLCBMVEQuCi0JCQkJMy0xIFNoaW5tZWlkbwotCQkJCVNoaWJhdGEgTWl5YWdpIHByZWYuIDk4OS0xNjk1Ci0JCQkJSkFQQU4KLQotMDAtMEItREUgICAoaGV4KQkJVEVMRElYIEdtYkgKLTAwMEJERSAgICAgKGJhc2UgMTYpCQlURUxESVggR21iSAotCQkJCUdyZW56aG9lZmVyIFdlZyAzNgotCQkJCUhlaWRlbGJlcmcgIDY5MTIzCi0JCQkJR0VSTUFOWQotCi0wMC0wQi1ERiAgIChoZXgpCQlTaGVuemhlbiBSb3V0ZXJEIE5ldHdvcmtzIExpbWl0ZWQKLTAwMEJERiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBSb3V0ZXJEIE5ldHdvcmtzIExpbWl0ZWQKLQkJCQk4L0YsIEJ1aWxkaW5nIEEsIFRzaW5naHVhIEhpLVRlY2ggUGFyawotCQkJCU5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiAgCi0JCQkJQ0hJTkEKLQotMDAtMEItRTAgICAoaGV4KQkJU2VyY29OZXQgTHRkLgotMDAwQkUwICAgICAoYmFzZSAxNikJCVNlcmNvTmV0IEx0ZC4KLQkJCQkxNiBIYSdoYXJvc2hldCBzdC4KLQkJCQlQLk8uQi4gMjAwOQotCQkJCVJhJ2FuYW5hICA0MzY1NwotCQkJCUlTUkFFTAotCi0wMC0wQi1FMSAgIChoZXgpCQlOb2tpYSBORVQgUHJvZHVjdCBPcGVyYXRpb25zCi0wMDBCRTEgICAgIChiYXNlIDE2KQkJTm9raWEgTkVUIFByb2R1Y3QgT3BlcmF0aW9ucwotCQkJCTMxMyBGYWlyY2hpbGQgRHJpdmUKLQkJCQlNb3VudGFpbiBWaWV3IENhbGlmb3JuaWEgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUUyICAgKGhleCkJCUx1bWVuZXJhIENvcnBvcmF0aW9uCi0wMDBCRTIgICAgIChiYXNlIDE2KQkJTHVtZW5lcmEgQ29ycG9yYXRpb24KLQkJCQkyNTIwQiBTdC4gTGF1cmVudCBCbHZkLgotCQkJCU90dGF3YSBPbnRhcmlvIEsxQiA0UjgKLQkJCQlDQU5BREEKLQotMDAtMEItRTMgICAoaGV4KQkJS2V5IFN0cmVhbSBDby4sIEx0ZC4KLTAwMEJFMyAgICAgKGJhc2UgMTYpCQlLZXkgU3RyZWFtIENvLiwgTHRkLgotCQkJCU5vLiAyIE5hZ2Fva2EgQmxkZy4gNEYsICAyLTgtNSBIYXRjaG9ib3IKLQkJCQlDaHVvLWt1IFRva3lvIDEwNC0wMDMyCi0JCQkJSkFQQU4KLQotMDAtMEItRTQgICAoaGV4KQkJSG9zaWRlbiBDb3Jwb3JhdGlvbgotMDAwQkU0ICAgICAoYmFzZSAxNikJCUhvc2lkZW4gQ29ycG9yYXRpb24KLQkJCQk0LTMzCi0JCQkJS2l0YWt5dWhvamkgMS1jaG9tZQotCQkJCVlhby1jaXR5IE9zYWthIDU4MS0wMDcxCi0JCQkJSkFQQU4KLQotMDAtMEItRTUgICAoaGV4KQkJSElNUyBLb3JlYSBDby4sIEx0ZC4KLTAwMEJFNSAgICAgKGJhc2UgMTYpCQlISU1TIEtvcmVhIENvLiwgTHRkLgotCQkJCTUxMDUsIEhpZ2ggVGVjaCBWZW50dXJlIEhhbGwsCi0JCQkJNTMtMywgRW9ldW4tZG9uZywgWXVzZW9uZy1rdSwKLQkJCQlEYWVqZW9uIERhZWplb24gMzA1LTgwNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1FNiAgIChoZXgpCQlEYXRlbCBFbGVjdHJvbmljcwotMDAwQkU2ICAgICAoYmFzZSAxNikJCURhdGVsIEVsZWN0cm9uaWNzCi0JCQkJU3RhZmZvcmQgUm9hZAotCQkJCVN0b25lIFN0YWZmb3Jkc2hpcmUgU1QxNSAwREcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQi1FNyAgIChoZXgpCQlDT01GTFVYIFRFQ0hOT0xPR1kgSU5DLgotMDAwQkU3ICAgICAoYmFzZSAxNikJCUNPTUZMVVggVEVDSE5PTE9HWSBJTkMuCi0JCQkJIFJvb20gMTMxLEJsZGcuIDUzLDE5NS01OCxTZWMuNCwKLQkJCQlDaHVuZyBIc2luZyBSZC4sQ2h1dHVuZywKLQkJCQlIc2luY2h1ICAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBCLUU4ICAgKGhleCkJCUFPSVAKLTAwMEJFOCAgICAgKGJhc2UgMTYpCQlBT0lQCi0JCQkJNiBydWUgTWFyeXNlIEJBU1RJRQotCQkJCVpJIGRlIFN0IEd1ZW5hdWx0Ci0JCQkJQ09VUkNPVVJPTk5FUyBJZGYgOTEwODAKLQkJCQlGUkFOQ0UKLQotMDAtMEItRTkgICAoaGV4KQkJQWN0ZWwgQ29ycG9yYXRpb24KLTAwMEJFOSAgICAgKGJhc2UgMTYpCQlBY3RlbCBDb3Jwb3JhdGlvbgotCQkJCTIwMCBWYWxsZXkgUm9hZAotCQkJCVN1aXRlIDMwMAotCQkJCU10LiBBcmxpbmd0b24gTkogMDc4NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUVBICAgKGhleCkJCVp1bHR5cyBUZWNobm9sb2dpZXMKLTAwMEJFQSAgICAgKGJhc2UgMTYpCQladWx0eXMgVGVjaG5vbG9naWVzCi0JCQkJNzcxIFZhcXVlcm9zIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItRUIgICAoaGV4KQkJU3lzdGVncmEgQUcKLTAwMEJFQiAgICAgKGJhc2UgMTYpCQlTeXN0ZWdyYSBBRwotCQkJCUJ1cmd1bmRlcnN0cmFzc2UgMTUKLQkJCQlCZWxsYWNoIFNPIDQ1MTIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQi1FQyAgIChoZXgpCQlOSVBQT04gRUxFQ1RSSUMgSU5TVFJVTUVOVCwgSU5DLgotMDAwQkVDICAgICAoYmFzZSAxNikJCU5JUFBPTiBFTEVDVFJJQyBJTlNUUlVNRU5ULCBJTkMuCi0JCQkJMy01Ni0yMSBIaXJhZG8KLQkJCQlUb3RzdWthLWt1IFlva29oYW1hLXNoaSAyNDQtMDgwMgotCQkJCUpBUEFOCi0KLTAwLTBCLUVEICAgKGhleCkJCUVMTSBJbmMuCi0wMDBCRUQgICAgIChiYXNlIDE2KQkJRUxNIEluYy4KLQkJCQkxNTI0OCBLYXNlZGF0YWtlZGEKLQkJCQlNaW5hbWlzYXRzdW1hIEthZ29zaGltYSA4OTctMDAwMgotCQkJCUpBUEFOCi0KLTAwLTBCLUVFICAgKGhleCkJCWluYy5qZXQsIEluY29ycG9yYXRlZAotMDAwQkVFICAgICAoYmFzZSAxNikJCWluYy5qZXQsIEluY29ycG9yYXRlZAotCQkJCU9uZSBXaW5uZW5kZW4gUm9hZAotCQkJCU5vcndpY2ggQ1QgMDYzNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUVGICAgKGhleCkJCUNvZGUgQ29ycG9yYXRpb24KLTAwMEJFRiAgICAgKGJhc2UgMTYpCQlDb2RlIENvcnBvcmF0aW9uCi0JCQkJMTE4MTQgUy4gRWxlY3Rpb24gUmQuLCBTdGUgMjAwCi0JCQkJRHJhcGVyIFV0YWggODQwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUYwICAgKGhleCkJCU1vVEVYIFByb2R1Y3RzIENvLiwgTHRkLgotMDAwQkYwICAgICAoYmFzZSAxNikJCU1vVEVYIFByb2R1Y3RzIENvLiwgTHRkLgotCQkJCUMuUC5PLkJveCA2OTEyCi0JCQkJWWUgS3dhbi1kb25nIDE5LTEKLQkJCQlDaG9uZy1ndSBTZW91bCA4MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQi1GMSAgIChoZXgpCQlMQVAgTGFzZXIgQXBwbGlrYXRpb25zCi0wMDBCRjEgICAgIChiYXNlIDE2KQkJTEFQIExhc2VyIEFwcGxpa2F0aW9ucwotCQkJCVplcHBlbGluc3RyYXNzZSAyMwotCQkJCUx1ZW5lYnVyZyBOaWVkZXJzYWNoc2VuIDIxMzM3Ci0JCQkJR0VSTUFOWQotCi0wMC0wQi1GMiAgIChoZXgpCQlDaGloLUthbiBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwQkYyICAgICAoYmFzZSAxNikJCUNoaWgtS2FuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDI0LTEsIFBlaSBTaGloIENob3UsIE1pbmcgSG8gVmlsbC4KLQkJCQlTaGFuIFN1biBIc2lhbmcgVGFpbmFuIEhzaWVuIDE4MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItRjMgICAoaGV4KQkJQkFFIFNZU1RFTVMKLTAwMEJGMyAgICAgKGJhc2UgMTYpCQlCQUUgU1lTVEVNUwotCQkJCTY1MDAgVHJhY29yIExhbmUKLQkJCQlBdXN0aW4gVGV4YXMgNzg3MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBCLUY0ICAgKGhleCkJCVBSSVZBVEUKLTAwMEJGNCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEItRjUgICAoaGV4KQkJU2hhbmdoYWkgU2libyBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwQkY1ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFNpYm8gVGVsZWNvbSBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlGbG9vciA2IEJ1aWxkaW5nIDE4LDMwMCBUaWFubGluIFJkLgotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi0wMC0wQi1GNiAgIChoZXgpCQlOaXRnZW4gQ28uLCBMdGQKLTAwMEJGNiAgICAgKGJhc2UgMTYpCQlOaXRnZW4gQ28uLCBMdGQKLQkJCQk0dGggRkwuIDEzMzctMzEgU2VvY2hvLWRvbmcsIFNlb2Noby1rdQotCQkJCVNlb3VsICAxMzctODYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBCLUY3ICAgKGhleCkJCU5JREVLIENPLixMVEQKLTAwMEJGNyAgICAgKGJhc2UgMTYpCQlOSURFSyBDTy4sTFRECi0JCQkJMzQtMTQgTWFlaGFtYQotCQkJCUhpcm9pc2hpLWNobwotCQkJCUdhbWFnb3JpIEFpY2ggNDQzLTAwMzgKLQkJCQlKQVBBTgotCi0wMC0wQi1GOCAgIChoZXgpCQlJbmZpbmVyYQotMDAwQkY4ICAgICAoYmFzZSAxNikJCUluZmluZXJhCi0JCQkJMTMyMiBCb3JkZWF1eCBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEItRjkgICAoaGV4KQkJR2Vtc3RvbmUgY29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMEJGOSAgICAgKGJhc2UgMTYpCQlHZW1zdG9uZSBjb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTZGbC4sIE5vLiAxMDIsICBIZW5neWFuZyBSZC4KLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEItRkEgICAoaGV4KQkJRVhFTVlTIFNSTAotMDAwQkZBICAgICAoYmFzZSAxNikJCUVYRU1ZUyBTUkwKLQkJCQlMT1lPTEEgNjgwCi0JCQkJQ0FQSVRBTCBGRURFUkFMIEJTIEFTIEMxNDE0Ci0JCQkJQVJHRU5USU5BCi0KLTAwLTBCLUZCICAgKGhleCkJCUQtTkVUIEludGVybmF0aW9uYWwgQ29ycG9yYXRpb24KLTAwMEJGQiAgICAgKGJhc2UgMTYpCQlELU5FVCBJbnRlcm5hdGlvbmFsIENvcnBvcmF0aW9uCi0JCQkJMTUsIFd1LUNodWFuIDV0aCBSb2FkLCBXdS1LdSBJbmR1c3RyaWFsCi0JCQkJVGFpcGVpICBIc2llaCAgMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQi1GQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCRkMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1GRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBCRkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQi1GRSAgIChoZXgpCQlDQVNURUwgQnJvYWRiYW5kIExpbWl0ZWQKLTAwMEJGRSAgICAgKGJhc2UgMTYpCQlDQVNURUwgQnJvYWRiYW5kIExpbWl0ZWQKLQkJCQk5L0YuLCBTdWkgWWluZyBJbmR1c3RyaWFsIEJ1aWxkaW5nLiwKLQkJCQlUb2t3YXdhbiBLb3dsb29uIDE1MAotCQkJCUhPTkcgS09ORwotCi0wMC0wQi1GRiAgIChoZXgpCQlCZXJrZWxleSBDYW1lcmEgRW5naW5lZXJpbmcKLTAwMEJGRiAgICAgKGJhc2UgMTYpCQlCZXJrZWxleSBDYW1lcmEgRW5naW5lZXJpbmcKLQkJCQkxMjcgTmF0aW9uYWwgU3RyZWV0Ci0JCQkJU2FudGEgQ3J1eiBDQSA5NTA2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMDAgICAoaGV4KQkJQkVCIEluZHVzdHJpZS1FbGVrdHJvbmlrIEFHCi0wMDBDMDAgICAgIChiYXNlIDE2KQkJQkVCIEluZHVzdHJpZS1FbGVrdHJvbmlrIEFHCi0JCQkJUHJvZ3Jlc3Nhc3RyYXNzZSAzMQotCQkJCU9iZXJidXJnIEJFIDM0MTQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQy0wMSAgIChoZXgpCQlBYmF0cm9uIEFHCi0wMDBDMDEgICAgIChiYXNlIDE2KQkJQWJhdHJvbiBBRwotCQkJCUxldHRlbnN0cmFzc2UgOQotCQkJCVJvdGtyZXV6ICBDSC02MzQzCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEMtMDIgICAoaGV4KQkJQUJCIE95Ci0wMDBDMDIgICAgIChiYXNlIDE2KQkJQUJCIE95Ci0JCQkJUC5PLkJveCA4OQotCQkJCVR1cmt1ICBGSU4tMjA1MjEKLQkJCQlGSU5MQU5ECi0KLTAwLTBDLTAzICAgKGhleCkJCUhETUkgTGljZW5zaW5nLCBMTEMKLTAwMEMwMyAgICAgKGJhc2UgMTYpCQlIRE1JIExpY2Vuc2luZywgTExDCi0JCQkJMTA2MCBFYXN0IEFycXVlcyBBdmUuCi0JCQkJU3VpdGUgMTAwCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0wNCAgIChoZXgpCQlUZWNub3ZhCi0wMDBDMDQgICAgIChiYXNlIDE2KQkJVGVjbm92YQotCQkJCTE0ODYgU3QuIFBhdWwgQXZlLgotCQkJCUd1cm5lZSBJbGxpbm9pcyA2MDAzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMDUgICAoaGV4KQkJUlBBIFJlc2VyY2ggQ28uLCBMdGQuCi0wMDBDMDUgICAgIChiYXNlIDE2KQkJUlBBIFJlc2VyY2ggQ28uLCBMdGQuCi0JCQkJNEYsIDkwLTcsIFlhbmdqYWUtRG9uZywgU2VvY2hvLUt1Ci0JCQkJU2VvdWwsIEtvcmVhCi0JCQkJU2VvdWwgIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtMDYgICAoaGV4KQkJTml4dnVlIFN5c3RlbXMgIFB0ZSBMdGQKLTAwMEMwNiAgICAgKGJhc2UgMTYpCQlOaXh2dWUgU3lzdGVtcyAgUHRlIEx0ZAotCQkJCTMwIExveWFuZyBXYXksICMwNy0wMgotCQkJCVNpbmdhcG9yZSBTaW5nYXBvcmUgUzUwODc2OQotCQkJCVNJTkdBUE9SRQotCi0wMC0wQy0wNyAgIChoZXgpCQlJZnRlc3QgQUcKLTAwMEMwNyAgICAgKGJhc2UgMTYpCQlJZnRlc3QgQUcKLQkJCQlTY2h3aW1tYmFkc3RyYXNzZSA0MwotCQkJCVdldHRpbmdlbiBBRyA1NDMwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEMtMDggICAoaGV4KQkJSFVNRVggVGVjaG5vbG9naWVzIENvcnAuCi0wMDBDMDggICAgIChiYXNlIDE2KQkJSFVNRVggVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJNUYsIE5vLjUsIExhbmUgNDQsIFN6dSBXZWkgUmQuIFRhYW4gVGFpcAotCQkJCVRhaXBlaSAgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy0wOSAgIChoZXgpCQlIaXRhY2hpIElFIFN5c3RlbXMgQ28uLCBMdGQKLTAwMEMwOSAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIElFIFN5c3RlbXMgQ28uLCBMdGQKLQkJCQlTYWl3YWktY2hvIDEyMC0xLEluYXphd2Etc2hpCi0JCQkJQWljaGkgNDkyLTg2MjIsSmFwYW4KLQkJCQlJbmF6YXdhLXNoaSBBaWNoaSA0OTItODYyMgotCQkJCUpBUEFOCi0KLTAwLTBDLTBBICAgKGhleCkJCUd1YW5nZG9uZyBQcm92aW5jZSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgUmVzZWFyY2ggSW5zdGl0dXRlCi0wMDBDMEEgICAgIChiYXNlIDE2KQkJR3Vhbmdkb25nIFByb3ZpbmNlIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBSZXNlYXJjaCBJbnN0aXR1dGUKLQkJCQlFbGVjdHJvbmljIFRlY2hub2xvZ3kgQnVpbGRpbmcsTk8uNjEtNjUsCi0JCQkJV2VzdCBaaG9uZ3NoYW4gQXZlbnVlLFRpYW5oZSBEaXN0cmljdAotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjMwCi0JCQkJQ0hJTkEKLQotMDAtMEMtMEIgICAoaGV4KQkJQnJvYWRidXMgVGVjaG5vbG9naWVzCi0wMDBDMEIgICAgIChiYXNlIDE2KQkJQnJvYWRidXMgVGVjaG5vbG9naWVzCi0JCQkJODAgQ2VudHJhbCBTdHJlZXQKLQkJCQlCb3hib3JvdWdoIE1hc3NhY2h1c2V0dHMgMDE3MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTBDICAgKGhleCkJCUFQUFJPIFRFQ0hOT0xPR1kgSU5DLgotMDAwQzBDICAgICAoYmFzZSAxNikJCUFQUFJPIFRFQ0hOT0xPR1kgSU5DLgotCQkJCTEzRiwgTm8uIDY2IENodW5nLUNoZW5nIFJkLAotCQkJCUhzaW4tQ2h1YW5nIFRhaXBlaSAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTBEICAgKGhleCkJCUNvbW11bmljYXRpb25zICYgUG93ZXIgSW5kdXN0cmllcyAvIFNhdGNvbSBEaXZpc2lvbgotMDAwQzBEICAgICAoYmFzZSAxNikJCUNvbW11bmljYXRpb25zICYgUG93ZXIgSW5kdXN0cmllcyAvIFNhdGNvbSBEaXZpc2lvbgotCQkJCTgxMSBIYW5zZW4gV2F5IE1TIFMtNjAwCi0JCQkJUGFsbyBBbHRvIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0wRSAgIChoZXgpCQlYdHJlbWVTcGVjdHJ1bSwgSW5jLgotMDAwQzBFICAgICAoYmFzZSAxNikJCVh0cmVtZVNwZWN0cnVtLCBJbmMuCi0JCQkJODEzMyBMZWVzYnVyZyBQaWtlCi0JCQkJVmllbm5hIFZBIDIyMTgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0wRiAgIChoZXgpCQlUZWNobm8tT25lIENvLiwgTHRkCi0wMDBDMEYgICAgIChiYXNlIDE2KQkJVGVjaG5vLU9uZSBDby4sIEx0ZAotCQkJCTktMTctMSBIaWdhc2hpIFNvbm9kYQotCQkJCUFtYWdhc2FraSBIeW9nbyA2NjEtMDk1MwotCQkJCUpBUEFOCi0KLTAwLTBDLTEwICAgKGhleCkJCVBOSSBDb3Jwb3JhdGlvbgotMDAwQzEwICAgICAoYmFzZSAxNikJCVBOSSBDb3Jwb3JhdGlvbgotCQkJCTU0NjQgU2t5bGFuZSBCbHZkICNBCi0JCQkJU2FudGEgUm9zYSBDQSA5NTQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMTEgICAoaGV4KQkJTklQUE9OIERFTVBBIENPLixMVEQuCi0wMDBDMTEgICAgIChiYXNlIDE2KQkJTklQUE9OIERFTVBBIENPLixMVEQuCi0JCQkJMS00LTgKLQkJCQlrYW1lbm9rb3UKLQkJCQlrYWtlZ2F3YSBjaXR5IHNoaXp1b2thIHByZWYuIDQzNi0wMDI4Ci0JCQkJSkFQQU4KLQotMDAtMEMtMTIgICAoaGV4KQkJTWljcm8tT3B0cm9uaWMtTWVzc3RlY2huaWsgR21iSAotMDAwQzEyICAgICAoYmFzZSAxNikJCU1pY3JvLU9wdHJvbmljLU1lc3N0ZWNobmlrIEdtYkgKLQkJCQlMZXNzaW5nc3RyYXNzZSAxNAotCQkJCUxhbmdlYnJ1ZWNrIFNheG9ueSBELTAxNDY1Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy0xMyAgIChoZXgpCQlNZWRpYVEKLTAwMEMxMyAgICAgKGJhc2UgMTYpCQlNZWRpYVEKLQkJCQkyOTc1IFNhbiBZc2lkcm8gV2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTE0ICAgKGhleCkJCURpYWdub3N0aWMgSW5zdHJ1bWVudHMsIEluYy4KLTAwMEMxNCAgICAgKGJhc2UgMTYpCQlEaWFnbm9zdGljIEluc3RydW1lbnRzLCBJbmMuCi0JCQkJNjU0MCBCdXJyb3VnaHMKLQkJCQlTdGVybGluZyBIZWlnaHRzIE1JIDQ4MzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0xNSAgIChoZXgpCQlDeWJlclBvd2VyIFN5c3RlbXMsIEluYy4KLTAwMEMxNSAgICAgKGJhc2UgMTYpCQlDeWJlclBvd2VyIFN5c3RlbXMsIEluYy4KLQkJCQk2RiwgTm8uIDMyLCBTZWMuIDEsIENoZW5nZ29uZyBSZC4KLQkJCQlOYW5oYW5nIERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTE2ICAgKGhleCkJCUNvbmNvcmRlIE1pY3Jvc3lzdGVtcyBJbmMuCi0wMDBDMTYgICAgIChiYXNlIDE2KQkJQ29uY29yZGUgTWljcm9zeXN0ZW1zIEluYy4KLQkJCQkxMDQyNyBDb2dkaWxsIFJvYWQsIFN1aXRlIDUwMAotCQkJCUtub3h2aWxsZSBUTiAzNzkzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMTcgICAoaGV4KQkJQUpBIFZpZGVvIFN5c3RlbXMgSW5jCi0wMDBDMTcgICAgIChiYXNlIDE2KQkJQUpBIFZpZGVvIFN5c3RlbXMgSW5jCi0JCQkJNDQzIENyb3duIFBvaW50IENpcmNsZQotCQkJCUdyYXNzIFZhbGxleSBDYWxpZm9ybmlhIDk1OTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0xOCAgIChoZXgpCQlaZW5pc3UgS2Vpc29rdSBJbmMuCi0wMDBDMTggICAgIChiYXNlIDE2KQkJWmVuaXN1IEtlaXNva3UgSW5jLgotCQkJCTItMTMtMzcKLQkJCQlIb25tYWNoaQotCQkJCUZ1Y2h1LXNoaSBUb2t5byAxODMtMDAyNwotCQkJCUpBUEFOCi0KLTAwLTBDLTE5ICAgKGhleCkJCVRlbGlvIENvbW11bmljYXRpb25zIEdtYkgKLTAwMEMxOSAgICAgKGJhc2UgMTYpCQlUZWxpbyBDb21tdW5pY2F0aW9ucyBHbWJICi0JCQkJRWxiY2hhdXNzZWUgMQotCQkJCUhhbWJ1cmcgIDIyNzY1Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy0xQSAgIChoZXgpCQlRdWVzdCBUZWNobmljYWwgU29sdXRpb25zIEluYy4KLTAwMEMxQSAgICAgKGJhc2UgMTYpCQlRdWVzdCBUZWNobmljYWwgU29sdXRpb25zIEluYy4KLQkJCQk0MTEwIE1vdXJuaW5nIERvdmUgQ3J0LgotCQkJCU1lbGJvdXJuZSBGTCAzMjkzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMUIgICAoaGV4KQkJT1JBQ09NIENvLCBMdGQuCi0wMDBDMUIgICAgIChiYXNlIDE2KQkJT1JBQ09NIENvLCBMdGQuCi0JCQkJM3JkIEZsLCBBLVN1bmcgQmxkZywgOTk5LTMKLQkJCQlEZWFjaGktRG9uZywgS2FuZ25hbS1HdQotCQkJCVNlb3VsICAxMzUtMjgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTFDICAgKGhleCkJCU1pY3JvV2ViIENvLiwgTHRkLgotMDAwQzFDICAgICAoYmFzZSAxNikJCU1pY3JvV2ViIENvLiwgTHRkLgotCQkJCTQwMyBUL1MvUy9DLCAyMy0xNCBKYW5nLWRvbmcsIFl1c29uZy1ndSwKLQkJCQlEYWVqZW9uIENob29uZ0NodW5nRG8gMzA1LTM0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0xRCAgIChoZXgpCQlNZXR0bGVyICYgRnVjaHMgQUcKLTAwMEMxRCAgICAgKGJhc2UgMTYpCQlNZXR0bGVyICYgRnVjaHMgQUcKLQkJCQlRdWVyc3RyYXNzZSAxNwotCQkJCUNILTg5NTEgRmFocndlaWQgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEMtMUUgICAoaGV4KQkJR2xvYmFsIENhY2hlCi0wMDBDMUUgICAgIChiYXNlIDE2KQkJR2xvYmFsIENhY2hlCi0JCQkJMTYwIEVhc3QgQ2FsaWZvcm5pYSBTdHJlZXQKLQkJCQlQT0IgMTY1OQotCQkJCUphY2tzb252aWxsZSBPUiA5NzUzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMUYgICAoaGV4KQkJR2xpbW1lcmdsYXNzIE5ldHdvcmtzCi0wMDBDMUYgICAgIChiYXNlIDE2KQkJR2xpbW1lcmdsYXNzIE5ldHdvcmtzCi0JCQkJMjYxNDIgRWRlbiBMYW5kaW5nIFJvYWQKLQkJCQlIYXl3YXJkIENhbGlmb3JuaWEgOTQ1NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTIwICAgKGhleCkJCUZpIFdJbiwgSW5jLgotMDAwQzIwICAgICAoYmFzZSAxNikJCUZpIFdJbiwgSW5jLgotCQkJCThGLCBOby4gMTAsIFByb3NwZXJpdHkgUmQuIDEsCi0JCQkJU2NpZW5jZSBCYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luIENodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy0yMSAgIChoZXgpCQlGYWN1bHR5IG9mIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3ksIEtlaW8gVW5pdmVyc2l0eQotMDAwQzIxICAgICAoYmFzZSAxNikJCUZhY3VsdHkgb2YgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSwgS2VpbyBVbml2ZXJzaXR5Ci0JCQkJMy0xNC0xIEhpeW9zaGksIEtvaG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMy04NTIyCi0JCQkJSkFQQU4KLQotMDAtMEMtMjIgICAoaGV4KQkJRG91YmxlIEQgRWxlY3Ryb25pY3MgTHRkCi0wMDBDMjIgICAgIChiYXNlIDE2KQkJRG91YmxlIEQgRWxlY3Ryb25pY3MgTHRkCi0JCQkJVW5pdCA2LCBSb2JpbnMgV2hhcmYKLQkJCQlHcm92ZSBSb2FkCi0JCQkJTm9ydGhmbGVldCBLZW50IERBMTEgOUFYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEMtMjMgICAoaGV4KQkJQmVpamluZyBMYW5jaHVhbiBUZWNoLiBDby4sIEx0ZC4KLTAwMEMyMyAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIExhbmNodWFuIFRlY2guIENvLiwgTHRkLgotCQkJCVJtMjIwLE5vLjMwIFNoYW5neXVhbmN1biwKLQkJCQlHYW9saWFuZ3FpYW9sdSxIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDQ0Ci0JCQkJQ0hJTkEKLQotMDAtMEMtMjQgICAoaGV4KQkJQU5BVE9SCi0wMDBDMjQgICAgIChiYXNlIDE2KQkJQU5BVE9SCi0JCQkJNDQsIHJ1ZSBkJ0VzdGllbm5lIGQnT3J2ZXMKLQkJCQlzYXJ0cm91dmlsbGUgeXZlbGluZXMgNzg1MDAKLQkJCQlGUkFOQ0UKLQotMDAtMEMtMjUgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMgTGFicywgSW5jLiAKLTAwMEMyNSAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcyBMYWJzLCBJbmMuIAotCQkJCVN1aXRlIDQ1MAotCQkJCTkwMCBNYWluIENhbXB1cyBEcml2ZSwgU3VpdGUgMzAxCi0JCQkJUmFsZWlnaCBOQyAyNzYwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMjYgICAoaGV4KQkJV2VpbnRlayBMYWJzLiBJbmMuCi0wMDBDMjYgICAgIChiYXNlIDE2KQkJV2VpbnRlayBMYWJzLiBJbmMuCi0JCQkJM0YsIE5vLjkxMCwgQ2h1bmcgQ2hlbmcgUmQuCi0JCQkJQ2h1bmcgSG8gY2l0eSBUYWlwZWkgSHNpZW4gMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy0yNyAgIChoZXgpCQlTYW1teSBDb3Jwb3JhdGlvbgotMDAwQzI3ICAgICAoYmFzZSAxNikJCVNhbW15IENvcnBvcmF0aW9uCi0JCQkJU1VOIFNISU5FNjAgNDVGLDMtMS0xLEhJR0FTSEktSUtFQlVLVVJPCi0JCQkJVE9TSElNQS1LVSBUT0tZTyAxNzAtNjA0NQotCQkJCUpBUEFOCi0KLTAwLTBDLTI4ICAgKGhleCkJCVJJRkFUUk9OCi0wMDBDMjggICAgIChiYXNlIDE2KQkJUklGQVRST04KLQkJCQk5dGggRkwsIFNISU5UQUVZQU5HIEJMREcKLQkJCQk3MzYtOCwgQkFOUE8tRE9ORwotCQkJCVNFT1VMIFNFT0NITy1HVSAxMzctMDQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTI5ICAgKGhleCkJCVZNd2FyZSwgSW5jLgotMDAwQzI5ICAgICAoYmFzZSAxNikJCVZNd2FyZSwgSW5jLgotCQkJCTM0MDEgSGlsbHZpZXcgQXZlbnVlCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0yQSAgIChoZXgpCQlPQ1RURUwgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMEMyQSAgICAgKGJhc2UgMTYpCQlPQ1RURUwgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQk3Ri0xLCBOby4zMDAsIERhZHVlbiAxMHRoIFN0LgotCQkJCVRhaWNodW5nIENpdHkgIDQwOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMkIgICAoaGV4KQkJRUxJQVMgVGVjaG5vbG9neSwgSW5jLgotMDAwQzJCICAgICAoYmFzZSAxNikJCUVMSUFTIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkzRiwgMTAxNSwgWXVuZy1BbiBSb2FkLAotCQkJCVRhb3l1YW4gQ2l0eSBUYW95dWFuIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMkMgICAoaGV4KQkJRW53aXNlciBJbmMuCi0wMDBDMkMgICAgIChiYXNlIDE2KQkJRW53aXNlciBJbmMuCi0JCQkJNEYsIENoZW9uZ3Nlb2sgQi9ECi0JCQkJMTM1LTExLCBOb25oeWVvbi1kb25nLCBLYW5nbmFtLWt1Ci0JCQkJU2VvdWwgU2VvdWwgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0yRCAgIChoZXgpCQlGdWxsV2F2ZSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwQzJEICAgICAoYmFzZSAxNikJCUZ1bGxXYXZlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJN0YtNiwgTm8uMjYsIFRhaVl1YW4gU3QuLAotCQkJCUp1QmVpIEhzaW4gQ2h1IDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtMkUgICAoaGV4KQkJT3BlbmV0IGluZm9ybWF0aW9uIHRlY2hub2xvZ3koc2hlbnpoZW4pIENvLiwgTHRkLgotMDAwQzJFICAgICAoYmFzZSAxNikJCU9wZW5ldCBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5KHNoZW56aGVuKSBDby4sIEx0ZC4KLQkJCQkyL0YsQSB0b3dlcixpbnRlcm5hdGlvbmFsIHRlY2gtaW5ub3ZhdGlvCi0JCQkJaGlnaC10ZWNoIGluZHVzdHJpYWwgcGFyayAsc2hlbnpoZW4sIFAuUgotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0wQy0yRiAgIChoZXgpCQlTZW9yaW1UZWNobm9sb2d5IENvLixMdGQuCi0wMDBDMkYgICAgIChiYXNlIDE2KQkJU2VvcmltVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTJGIERJUExPTUFUSUMgQ0VOVEVSIEIvRCAxMzc2LTEgU0VPQ0hPMi0KLQkJCQlTRU9VTCAgMTM3LTA3MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0zMCAgIChoZXgpCQlDaXNjbwotMDAwQzMwICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTMxICAgKGhleCkJCUNpc2NvCi0wMDBDMzEgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtMzIgICAoaGV4KQkJQXZpb25pYyBEZXNpZ24gRGV2ZWxvcG1lbnQgR21iSAotMDAwQzMyICAgICAoYmFzZSAxNikJCUF2aW9uaWMgRGVzaWduIERldmVsb3BtZW50IEdtYkgKLQkJCQlTdGhhbWVyc3RyYXNzZSAyNGEKLQkJCQlIYW1idXJnICAyMjM5NwotCQkJCUdFUk1BTlkKLQotMDAtMEMtMzMgICAoaGV4KQkJQ29tcHVjYXNlIEVudGVycHJpc2UgQ28uIEx0ZC4KLTAwMEMzMyAgICAgKGJhc2UgMTYpCQlDb21wdWNhc2UgRW50ZXJwcmlzZSBDby4gTHRkLgotCQkJCTIyNSBMYW5lIDU0LCBBbiBIbyBSb2FkLCBTZWN0aW9uIDJuZC4KLQkJCQlUYWluYW4gQ2l0eSAgNzA5NDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTM0ICAgKGhleCkJCVZpeGVuIENvLiwgTHRkLgotMDAwQzM0ICAgICAoYmFzZSAxNikJCVZpeGVuIENvLiwgTHRkLgotCQkJCTUtMTctMyBIaWdhc2hpdG9rb3JvemF3YQotCQkJCVRva29yb3phd2EgU2FpdGFtYSAzNTktMDAyMQotCQkJCUpBUEFOCi0KLTAwLTBDLTM1ICAgKGhleCkJCUthVm8gRGVudGFsIEdtYkggJiBDby4gS0cKLTAwMEMzNSAgICAgKGJhc2UgMTYpCQlLYVZvIERlbnRhbCBHbWJIICYgQ28uIEtHCi0JCQkJQmlzbWFya3JpbmcgMzkKLQkJCQlCaWJlcmFjaC9SaXNzIEJhZGVuLVd1ZXJ0dGVtYmVyZyA4ODQwMAotCQkJCUdFUk1BTlkKLQotMDAtMEMtMzYgICAoaGV4KQkJU0hBUlAgVEFLQVlBIEVMRUNUUk9OSUNTIElORFVTVFJZIENPLixMVEQuCi0wMDBDMzYgICAgIChiYXNlIDE2KQkJU0hBUlAgVEFLQVlBIEVMRUNUUk9OSUNTIElORFVTVFJZIENPLixMVEQuCi0JCQkJMzEyMS0xIFNhdG9taSBTYXRvc2hvLWNobwotCQkJCUFzYWt1Y2hpLWd1biBPa2F5YW1hIDcxOS0wMzAxCi0JCQkJSkFQQU4KLQotMDAtMEMtMzcgICAoaGV4KQkJR2VvbWF0aW9uLCBJbmMuCi0wMDBDMzcgICAgIChiYXNlIDE2KQkJR2VvbWF0aW9uLCBJbmMuCi0JCQkJMjUxODggR2VuZXNlZSBUcmFpbCBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJR29sZGVuIENPIDgwNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy0zOCAgIChoZXgpCQlUZWxjb0JyaWRnZXMgSW5jLgotMDAwQzM4ICAgICAoYmFzZSAxNikJCVRlbGNvQnJpZGdlcyBJbmMuCi0JCQkJNTg2IER1IENoZW5hbAotCQkJCVJlcGVudGlnbnkgUXVlYmVjIEo2QSA3QzUKLQkJCQlDQU5BREEKLQotMDAtMEMtMzkgICAoaGV4KQkJU2VudGluZWwgV2lyZWxlc3MgSW5jLgotMDAwQzM5ICAgICAoYmFzZSAxNikJCVNlbnRpbmVsIFdpcmVsZXNzIEluYy4KLQkJCQk0MzkgUy4gVW5pb24gU3QuCi0JCQkJU291dGggTGF3cmVuY2UgTUEgMDE4NDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTNBICAgKGhleCkJCU94YW5jZQotMDAwQzNBICAgICAoYmFzZSAxNikJCU94YW5jZQotCQkJCTc1LTg1IHJ1ZSBSaWNoZWxpZXUKLQkJCQlsZXMgTHVjcyBzdXIgQm91bG9nbmUgIDg1MTcwCi0JCQkJRlJBTkNFCi0KLTAwLTBDLTNCICAgKGhleCkJCU9yaW9uIEVsZWN0cmljIENvLiwgTHRkLgotMDAwQzNCICAgICAoYmFzZSAxNikJCU9yaW9uIEVsZWN0cmljIENvLiwgTHRkLgotCQkJCTQxLTEsIEllaGlzYS1jaG8KLQkJCQlUYWtlZnUtc2hpIEZ1a3VpIDkxNS04NTU1Ci0JCQkJSkFQQU4KLQotMDAtMEMtM0MgICAoaGV4KQkJTWVkaWFDaG9ydXMsIEluYy4KLTAwMEMzQyAgICAgKGJhc2UgMTYpCQlNZWRpYUNob3J1cywgSW5jLgotCQkJCSMyMDUsIEVUUkkgVEJJIDIgQ2VudGVyCi0JCQkJVWV1bi1Eb25nLCBZdXNvbmctR3UKLQkJCQlEYWVqb24gREogMzA1LTMzMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0zRCAgIChoZXgpCQlHbHN5c3RlY2ggQ28uLCBMdGQuCi0wMDBDM0QgICAgIChiYXNlIDE2KQkJR2xzeXN0ZWNoIENvLiwgTHRkLgotCQkJCVNvbmcgQm8gQi9EIDNGCi0JCQkJMjEyLTEwLCBLdW5nLURvbmcsIEt1cm8gR3UKLQkJCQlTZW91bCAgMTUyLTg4MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy0zRSAgIChoZXgpCQlDcmVzdCBBdWRpbwotMDAwQzNFICAgICAoYmFzZSAxNikJCUNyZXN0IEF1ZGlvCi0JCQkJMTYtMDAgUG9sbGl0dCBEcml2ZQotCQkJCUZhaXIgTGF3biBOSiAwNzQxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtM0YgICAoaGV4KQkJQ29nZW50IERlZmVuY2UgJiBTZWN1cml0eSBOZXR3b3JrcywKLTAwMEMzRiAgICAgKGJhc2UgMTYpCQlDb2dlbnQgRGVmZW5jZSAmIFNlY3VyaXR5IE5ldHdvcmtzLAotCQkJCU1lYWRvd3MgUm9hZCwKLQkJCQlRdWVlbnN3YXkgTWVhZG93cyBJbmQgRXN0YXRlLAotCQkJCU5ld3BvcnQsIFNvdXRoIFdhbGVzLCBOUDE5IDRTUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBDLTQwICAgKGhleCkJCUFsdGVjaCBDb250cm9scwotMDAwQzQwICAgICAoYmFzZSAxNikJCUFsdGVjaCBDb250cm9scwotCQkJCTE1NDUgSW5kdXN0aWFsIERyaXZlCi0JCQkJTWlzc291cmkgQ2l0eSBUZXhhcyA3NzQ4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNDEgICAoaGV4KQkJQ2lzY28tTGlua3N5cwotMDAwQzQxICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMKLQkJCQkxMjEgVGhlb3J5IERyLgotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNDIgICAoaGV4KQkJUm91dGVyYm9hcmQuY29tCi0wMDBDNDIgICAgIChiYXNlIDE2KQkJUm91dGVyYm9hcmQuY29tCi0JCQkJUGVybmF2YXMgNDYKLQkJCQlSaWdhICBMVi0xMDA5Ci0JCQkJTEFUVklBCi0KLTAwLTBDLTQzICAgKGhleCkJCVJhbGluayBUZWNobm9sb2d5LCBDb3JwLgotMDAwQzQzICAgICAoYmFzZSAxNikJCVJhbGluayBUZWNobm9sb2d5LCBDb3JwLgotCQkJCTRGLCBOby4yLCBUZWNobm9sb2d5IDV0aCBSb2FkLAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW4tQ2h1ICAyMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTQ0ICAgKGhleCkJCUF1dG9tYXRlZCBJbnRlcmZhY2VzLCBJbmMuCi0wMDBDNDQgICAgIChiYXNlIDE2KQkJQXV0b21hdGVkIEludGVyZmFjZXMsIEluYy4KLQkJCQkxMjAgQ29uZmVkZXJhdGUgTGFuZQotCQkJCUdyZWVyIFNvdXRoIENhcm9saW5hIDI5NjUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy00NSAgIChoZXgpCQlBbmltYXRpb24gVGVjaG5vbG9naWVzIEluYy4KLTAwMEM0NSAgICAgKGJhc2UgMTYpCQlBbmltYXRpb24gVGVjaG5vbG9naWVzIEluYy4KLQkJCQk4RixOby4xMzgsTGFuZSAyMzUsUGFvY2hpYW8gUm9hZCwKLQkJCQlIc2luIFRpZW4KLQkJCQlUYWlwZWkgSHNpZW4gIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtNDYgICAoaGV4KQkJQWxsaWVkIFRlbGVzeW4gSW5jLgotMDAwQzQ2ICAgICAoYmFzZSAxNikJCUFsbGllZCBUZWxlc3luIEluYy4KLQkJCQk5NjAgU3Rld2FydCBEcml2ZSwgU3VpdGUgQgotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy00NyAgIChoZXgpCQlTSyBUZWxldGVjaChSJkQgUGxhbm5pbmcgVGVhbSkKLTAwMEM0NyAgICAgKGJhc2UgMTYpCQlTSyBUZWxldGVjaChSJkQgUGxhbm5pbmcgVGVhbSkKLQkJCQkyMXRoIEZMIFN0YXJ0b3dlciA3MzcsIFllb2tzYW0tZG9uZwotCQkJCUthbmduYW0tS3UKLQkJCQlTZW91bCAgMTM1LTk4NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy00OCAgIChoZXgpCQlRb1N0ZWsgQ29ycG9yYXRpb24KLTAwMEM0OCAgICAgKGJhc2UgMTYpCQlRb1N0ZWsgQ29ycG9yYXRpb24KLQkJCQk3RiwgMjIsIFRhaXl1ZW4gU3RyZWV0Ci0JCQkJQ2h1cGVpIEhzaW5jaHUgSHNpZW4gMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy00OSAgIChoZXgpCQlEYW5nYWFyZCBUZWxlY29tIFJUQyBEaXZpc2lvbiBBL1MKLTAwMEM0OSAgICAgKGJhc2UgMTYpCQlEYW5nYWFyZCBUZWxlY29tIFJUQyBEaXZpc2lvbiBBL1MKLQkJCQlJbmR1c3RyaXZlaiAxCi0JCQkJREsgMjYxNTQ1NTMKLQkJCQlQYWRib3JnICBESy02MzMwCi0JCQkJREVOTUFSSwotCi0wMC0wQy00QSAgIChoZXgpCQlDeWdudXMgTWljcm9zeXN0ZW1zIChQKSBMaW1pdGVkCi0wMDBDNEEgICAgIChiYXNlIDE2KQkJQ3lnbnVzIE1pY3Jvc3lzdGVtcyAoUCkgTGltaXRlZAotCQkJCTkzLCBQaGFzZSBJSSwKLQkJCQlJREEsIENoZXJsYXBhbGx5Ci0JCQkJSHlkZXJhYmFkIEFuZGhyYSBQcmFkZXNoIDUwMDA1MQotCQkJCUlORElBCi0KLTAwLTBDLTRCICAgKGhleCkJCUNoZW9wcyBFbGVrdHJvbmlrCi0wMDBDNEIgICAgIChiYXNlIDE2KQkJQ2hlb3BzIEVsZWt0cm9uaWsKLQkJCQlKZXNjaGtlbnN0cmFzc2UgMzIKLQkJCQlHZXJldHNyaWVkIEJheWVybiA4MjUzOAotCQkJCUdFUk1BTlkKLQotMDAtMEMtNEMgICAoaGV4KQkJQXJjb3IgQUcmQ28uCi0wMDBDNEMgICAgIChiYXNlIDE2KQkJQXJjb3IgQUcmQ28uCi0JCQkJQWxmcmVkLUhlcnJoYXVzZW4tQWxsZWUgMQotCQkJCUVzY2hib3JuIEhlc3NlbiA2NTc2MAotCQkJCUdFUk1BTlkKLQotMDAtMEMtNEQgICAoaGV4KQkJQUNSQSBDT05UUk9MCi0wMDBDNEQgICAgIChiYXNlIDE2KQkJQUNSQSBDT05UUk9MCi0JCQkJTGFuZHNjYXBlIEhvdXNlLAotCQkJCUxhbmRzY2FwZSBSb2FkLAotCQkJCUNodXJjaHRvd24sIER1YmxpbiAxNAotCQkJCUlSRUxBTkQKLQotMDAtMEMtNEUgICAoaGV4KQkJV2luYmVzdCBUZWNobm9sb2d5IENPLExUCi0wMDBDNEUgICAgIChiYXNlIDE2KQkJV2luYmVzdCBUZWNobm9sb2d5IENPLExUCi0JCQkJN0YtNU5vLjczNiBDaHVuZyBDaGVuZ1JkLixDaHVuZ0hvCi0JCQkJVGFpcGVpICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTRGICAgKGhleCkJCVVEVGVjaCBKYXBhbiBDb3Jwb3JhdGlvbgotMDAwQzRGICAgICAoYmFzZSAxNikJCVVEVGVjaCBKYXBhbiBDb3Jwb3JhdGlvbgotCQkJCUhhbWFjaG8gSGFuYWNobyBCbGRnLCAyRgotCQkJCTItMTctOCBOaWhvbmJhc2hpLUhhbWFjaG8KLQkJCQlDaHVvLWt1IFRva3lvIDEwMy0wMDA3Ci0JCQkJSkFQQU4KLQotMDAtMEMtNTAgICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0wMDBDNTAgICAgIChiYXNlIDE2KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0JCQkJMTI4MCBEaXNjIERyaXZlCi0JCQkJU2hha29wZWUgTU4gNTUzNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTUxICAgKGhleCkJCVNjaWVudGlmaWMgVGVjaG5vbG9naWVzIEluYy4KLTAwMEM1MSAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNjU1MCBEdW1iYXJ0b24gQ2lyY2xlCi0JCQkJRnJlbW9udCBDQSA5NDU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNTIgICAoaGV4KQkJUm9sbCBTeXN0ZW1zIEluYy4KLTAwMEM1MiAgICAgKGJhc2UgMTYpCQlSb2xsIFN5c3RlbXMgSW5jLgotCQkJCTUzIFRoaXJkIEF2ZW51ZQotCQkJCUJ1cmxpbmd0b24gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTUzICAgKGhleCkJCVBSSVZBVEUKLTAwMEM1MyAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEMtNTQgICAoaGV4KQkJUGVkZXN0YWwgTmV0d29ya3MsIEluYwotMDAwQzU0ICAgICAoYmFzZSAxNikJCVBlZGVzdGFsIE5ldHdvcmtzLCBJbmMKLQkJCQk2NTAzIER1bWJhcnRvbiBDaXJjbGUKLQkJCQlGcmVtb250IENBIDk0NTU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy01NSAgIChoZXgpCQlNaWNyb2xpbmsgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDAwQzU1ICAgICAoYmFzZSAxNikJCU1pY3JvbGluayBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJOEYsIDMxLCBIc2ludGFpIFJvYWQKLQkJCQlDaHVwZWkgQ2l0eQotCQkJCUhzaW5jaHUgIDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtNTYgICAoaGV4KQkJTWVnYXRlbCBDb21wdXRlciAoMTk4NikgQ29ycC4KLTAwMEM1NiAgICAgKGJhc2UgMTYpCQlNZWdhdGVsIENvbXB1dGVyICgxOTg2KSBDb3JwLgotCQkJCTU4NiBNYWluIFN0cmVldAotCQkJCUdsZW4gV2lsbGlhbXMgT250YXJpbyBMN0cgM1Q2Ci0JCQkJQ0FOQURBCi0KLTAwLTBDLTU3ICAgKGhleCkJCU1BQ0tJRSBFbmdpbmVlcmluZyBTZXJ2aWNlcyBCZWxnaXVtIEJWQkEKLTAwMEM1NyAgICAgKGJhc2UgMTYpCQlNQUNLSUUgRW5naW5lZXJpbmcgU2VydmljZXMgQmVsZ2l1bSBCVkJBCi0JCQkJSW5kdXN0cmllcGFyayBOb29yZCAxMAotCQkJCVNpbnQgTmlrbGFhcyAgQi05MTAwCi0JCQkJQkVMR0lVTQotCi0wMC0wQy01OCAgIChoZXgpCQlNJlMgU3lzdGVtcwotMDAwQzU4ICAgICAoYmFzZSAxNikJCU0mUyBTeXN0ZW1zCi0JCQkJMjg2MSBDb25ncmVzc21hbiBMYW5lCi0JCQkJRGFsbGFzIFRYIDc1MjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy01OSAgIChoZXgpCQlJbmR5bWUgRWxlY3Ryb25pY3MsIEluYy4KLTAwMEM1OSAgICAgKGJhc2UgMTYpCQlJbmR5bWUgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQk5MDg1IEFlcm8gRHIuCi0JCQkJU2FuIERpZWdvIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy01QSAgIChoZXgpCQlJQlNtbSBJbmR1c3RyaWVlbGVrdHJvbmlrIE11bHRpbWVkaWEKLTAwMEM1QSAgICAgKGJhc2UgMTYpCQlJQlNtbSBJbmR1c3RyaWVlbGVrdHJvbmlrIE11bHRpbWVkaWEKLQkJCQlBeWluZ2VyIFN0ci4gMQotCQkJCUZhaXN0ZW5oYWFyCi0JCQkJQnJ1bm50aGFsIEJhdmFyaWEgRC04NTY0OQotCQkJCUdFUk1BTlkKLQotMDAtMEMtNUIgICAoaGV4KQkJSEFOV0FORyBURUNITk9MT0dZIENPLixMVEQKLTAwMEM1QiAgICAgKGJhc2UgMTYpCQlIQU5XQU5HIFRFQ0hOT0xPR1kgQ08uLExURAotCQkJCThGLEF1dG9tYXRpb24gQnVpbGRpbmcsOTUgWmhvbmdndWFuY3VuLAotCQkJCUhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODAKLQkJCQlDSElOQQotCi0wMC0wQy01QyAgIChoZXgpCQlHVE4gU3lzdGVtcyBCLlYuCi0wMDBDNUMgICAgIChiYXNlIDE2KQkJR1ROIFN5c3RlbXMgQi5WLgotCQkJCVBvc3RidXMgMTIyMzYKLQkJCQkxMTAwIEFFCi0JCQkJQW1zdGVyZGFtICAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wQy01RCAgIChoZXgpCQlDSElDIFRFQ0hOT0xPR1kgKENISU5BKSBDT1JQLgotMDAwQzVEICAgICAoYmFzZSAxNikJCUNISUMgVEVDSE5PTE9HWSAoQ0hJTkEpIENPUlAuCi0JCQkJN3RoIEJ1aWxkaW5nLFNoaSdhbyBJbmQuWm9uZSxMb25naHVhIFRvdwotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDkKLQkJCQlDSElOQQotCi0wMC0wQy01RSAgIChoZXgpCQlDYWx5cHNvIE1lZGljYWwKLTAwMEM1RSAgICAgKGJhc2UgMTYpCQlDYWx5cHNvIE1lZGljYWwKLQkJCQkyMTAxIEZvdXJ0aCBBdmVudWUsIFN1aXRlIDE1NTAKLQkJCQlTZWF0dGxlIFdBIDk4MTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy01RiAgIChoZXgpCQlBdnRlYywgSW5jLgotMDAwQzVGICAgICAoYmFzZSAxNikJCUF2dGVjLCBJbmMuCi0JCQkJNDMzNSBBdWd1c3RhIEh3eQotCQkJCUdpbGJlcnQgU0MgMjkwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTYwICAgKGhleCkJCUFDTSBTeXN0ZW1zCi0wMDBDNjAgICAgIChiYXNlIDE2KQkJQUNNIFN5c3RlbXMKLQkJCQkzMDM0IEdvbGQgQ2FuYWwgRHJpdmUKLQkJCQlSYW5jaG8gQ29yZG92YSBDQSA5NTY3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNjEgICAoaGV4KQkJQUMgVGVjaCBjb3Jwb3JhdGlvbiBEQkEgQWR2YW5jZWQgRGlnaXRhbAotMDAwQzYxICAgICAoYmFzZSAxNikJCUFDIFRlY2ggY29ycG9yYXRpb24gREJBIEFkdmFuY2VkIERpZ2l0YWwKLQkJCQkxMjUwLUcgQXZlbmlkYSBBY2FzbwotCQkJCUNhbWFyaWxsbyBDQSA5MzAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNjIgICAoaGV4KQkJQUJCIEFCLCBDZXdlLUNvbnRyb2wgCi0wMDBDNjIgICAgIChiYXNlIDE2KQkJQUJCIEFCLCBDZXdlLUNvbnRyb2wgCi0JCQkJRGVwdC4gTFBDQy9SRSAKLQkJCQlNb3RvcmdyYW5kIDIwCi0JCQkJVmFzdGVyYXMgIDcyMSA2MQotCQkJCVNXRURFTgotCi0wMC0wQy02MyAgIChoZXgpCQlaZW5pdGggRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLTAwMEM2MyAgICAgKGJhc2UgMTYpCQlaZW5pdGggRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLQkJCQkyMDAwIE1pbGxicm9vayBEcml2ZQotCQkJCUxpbmNvbG5zaGlyZSBJbGxpbm9pcyA2MDA2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNjQgICAoaGV4KQkJWDIgTVNBIEdyb3VwCi0wMDBDNjQgICAgIChiYXNlIDE2KQkJWDIgTVNBIEdyb3VwCi0JCQkJQ2FyZSBvZjogQWdpbGVudCBUZWNobm9sb2dpZXMKLQkJCQlXaGl0ZSBIb3VzZSBSb2FkCi0JCQkJSXBzd2ljaCwgU3VmZm9sayBJUDEgNVBCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEMtNjUgICAoaGV4KQkJU3VuaW4gVGVsZWNvbQotMDAwQzY1ICAgICAoYmFzZSAxNikJCVN1bmluIFRlbGVjb20KLQkJCQkxMDI1LTUgRG9rb2stUmksIFdhYnUtRXViCi0JCQkJTmFteWFuZ2p1LUNpdHkgS3l1bmdnaS1EbyA0NzItOTAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTY2ICAgKGhleCkJCVByb250byBOZXR3b3JrcyBJbmMKLTAwMEM2NiAgICAgKGJhc2UgMTYpCQlQcm9udG8gTmV0d29ya3MgSW5jCi0JCQkJNDYzNyBDaGFib3QgRHIKLQkJCQlTdWl0ZSAzMDAKLQkJCQlQbGVhc2FudG9uIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy02NyAgIChoZXgpCQlPWU8gRUxFQ1RSSUMgQ08uLExURAotMDAwQzY3ICAgICAoYmFzZSAxNikJCU9ZTyBFTEVDVFJJQyBDTy4sTFRECi0JCQkJNjMtMSBOYWthbWljaGkgT21vdGUKLQkJCQlIaXJha2F3YQotCQkJCUpveW8gS3lvdG8gNjEwLTAxMDEKLQkJCQlKQVBBTgotCi0wMC0wQy02OCAgIChoZXgpCQlTaWdtYVRlbCwgSW5jLgotMDAwQzY4ICAgICAoYmFzZSAxNikJCVNpZ21hVGVsLCBJbmMuCi0JCQkJMjAxIEpvbmVzIFJvYWQKLQkJCQlXYWx0aGFtIE1BIDAyNDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy02OSAgIChoZXgpCQlOYXRpb25hbCBSYWRpbyBBc3Ryb25vbXkgT2JzZXJ2YXRvcnkKLTAwMEM2OSAgICAgKGJhc2UgMTYpCQlOYXRpb25hbCBSYWRpbyBBc3Ryb25vbXkgT2JzZXJ2YXRvcnkKLQkJCQlQLk8uIEJveCBPCi0JCQkJU29jb3JybyBOTSA4NzgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtNkEgICAoaGV4KQkJTUJBUkkKLTAwMEM2QSAgICAgKGJhc2UgMTYpCQlNQkFSSQotCQkJCTc3MDAgU2FuZGhvbGR0IFJvYWQKLQkJCQlNb3NzIExhbmRpbmcgQ0EgOTUwMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTZCICAgKGhleCkJCUt1cnogSW5kdXN0cmllLUVsZWt0cm9uaWsgR21iSAotMDAwQzZCICAgICAoYmFzZSAxNikJCUt1cnogSW5kdXN0cmllLUVsZWt0cm9uaWsgR21iSAotCQkJCUZvZWhyZW5iYWNoc3RyYXNzZSAzCi0JCQkJUmVtc2hhbGRlbiBCYWRlbi1Xw7xydHRlbWJlcmcgNzM2MzAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLTZDICAgKGhleCkJCUVsZ2F0byBTeXN0ZW1zIExMQwotMDAwQzZDICAgICAoYmFzZSAxNikJCUVsZ2F0byBTeXN0ZW1zIExMQwotCQkJCTkwMCBLZWFybnkgU3QgIzc1MAotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTZEICAgKGhleCkJCUVkd2FyZHMgTHRkLgotMDAwQzZEICAgICAoYmFzZSAxNikJCUVkd2FyZHMgTHRkLgotCQkJCU1hcnNoYWxsIFJvYWQKLQkJCQlFYXN0Ym91cm5lIEVhc3QgU3Vzc2V4IEJOMjIgOUJBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEMtNkUgICAoaGV4KQkJQVNVU1RFSyBDT01QVVRFUiBJTkMuCi0wMDBDNkUgICAgIChiYXNlIDE2KQkJQVNVU1RFSyBDT01QVVRFUiBJTkMuCi0JCQkJMTUwLCBMaS1UZSBSZC4sIFBlaVRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy02RiAgIChoZXgpCQlBbXRlayBzeXN0ZW0gY28uLExURC4KLTAwMEM2RiAgICAgKGJhc2UgMTYpCQlBbXRlayBzeXN0ZW0gY28uLExURC4KLQkJCQkxNEYtMTEsTm8uNzksU2VjLiAxICxIc2luIFRhaSBXdSBSZC4sCi0JCQkJSHNpIENoaWggQ2l0eQotCQkJCVRhaXBlaSAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy03MCAgIChoZXgpCQlBQ0MgR21iSAotMDAwQzcwICAgICAoYmFzZSAxNikJCUFDQyBHbWJICi0JCQkJQW0gU2FuZGZlbGQgMTUKLQkJCQlLYXJsc3J1aGUgQmFkZW4gNzYxNDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLTcxICAgKGhleCkJCVd5YnJvbiwgSW5jCi0wMDBDNzEgICAgIChiYXNlIDE2KQkJV3licm9uLCBJbmMKLQkJCQk0ODMwIExJc3QgRHIKLQkJCQlDb2xvcmFkbyBTcHJpbmdzIENvbG9yYWRvIDgwOTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy03MiAgIChoZXgpCQlUZW1wZWFybCBJbmR1c3RyaWFsIENvLiwgTHRkLgotMDAwQzcyICAgICAoYmFzZSAxNikJCVRlbXBlYXJsIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMy0xLTQyIE9oenUKLQkJCQlNaW5hbWkta3UKLQkJCQlIaXJvc2hpbWEtc2hpIEhpcm9zaGltYSA3MzItMDgwMgotCQkJCUpBUEFOCi0KLTAwLTBDLTczICAgKGhleCkJCVRFTFNPTiBFTEVDVFJPTklDUyBDTy4sIExURAotMDAwQzczICAgICAoYmFzZSAxNikJCVRFTFNPTiBFTEVDVFJPTklDUyBDTy4sIExURAotCQkJCVRlbHNvbiBWZW50dXJlIFRvd2VyLiwgOTQ5LTMgRG9nb2stRG9uZwotCQkJCVNlb3VsIEthbmduYW0tS3UgMTM1LTczOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy03NCAgIChoZXgpCQlSSVZFUlRFQyBDT1JQT1JBVElPTgotMDAwQzc0ICAgICAoYmFzZSAxNikJCVJJVkVSVEVDIENPUlBPUkFUSU9OCi0JCQkJODgyLTUgTUlZQUdBU0FLSQotCQkJCUlNQUJBUkkgRUhJTUUgNzk5LTE1MzcKLQkJCQlKQVBBTgotCi0wMC0wQy03NSAgIChoZXgpCQlPcmllbnRhbCBpbnRlZ3JhdGVkIGVsZWN0cm9uaWNzLiBMVEQKLTAwMEM3NSAgICAgKGJhc2UgMTYpCQlPcmllbnRhbCBpbnRlZ3JhdGVkIGVsZWN0cm9uaWNzLiBMVEQKLQkJCQkyODEtMzQgRG9uZGFuZy1kb25nIFdvbm1pLUd1Ci0JCQkJQnVjaGVvbiBLeW91bmdraWRvIDQyMC04MDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtNzYgICAoaGV4KQkJTUlDUk8tU1RBUiBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotMDAwQzc2ICAgICAoYmFzZSAxNikJCU1JQ1JPLVNUQVIgSU5URVJOQVRJT05BTCBDTy4sIExURC4KLQkJCQlObyA2OSwgTGktRGUgU3RyZWV0LCBKdW5nLUhlIENpdHksIFRhaXBlCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTc3ICAgKGhleCkJCUxpZmUgUmFjaW5nIEx0ZAotMDAwQzc3ICAgICAoYmFzZSAxNikJCUxpZmUgUmFjaW5nIEx0ZAotCQkJCVVuaXQgNiBSZXB0b24gQ2xvc2UKLQkJCQlCdXJudCBNaWxscyBJbmQgRXN0Ci0JCQkJQmFzaWxkb24gRXNzZXggU1MxMyAxTEUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQy03OCAgIChoZXgpCQlJbi1UZWNoIEVsZWN0cm9uaWNzIExpbWl0ZWQKLTAwMEM3OCAgICAgKGJhc2UgMTYpCQlJbi1UZWNoIEVsZWN0cm9uaWNzIExpbWl0ZWQKLQkJCQlVbml0IEEsIDEzdGggRmxvb3IuLCBXaW5nIFRhaSBDZW50cmUKLQkJCQkxMiBIaW5nIFlpcCBTdHJlZXQKLQkJCQlLd3VuIFRvbmcgS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMEMtNzkgICAoaGV4KQkJRXh0ZWwgQ29tbXVuaWNhdGlvbnMgUC9MCi0wMDBDNzkgICAgIChiYXNlIDE2KQkJRXh0ZWwgQ29tbXVuaWNhdGlvbnMgUC9MCi0JCQkJMzk5IEZlcm50cmVlIEd1bGx5IFJvYWQKLQkJCQlNdCBXYXZlcmxleSBWaWN0b3JpYSAzMTQ5Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTBDLTdBICAgKGhleCkJCURhVEFSSVVTIFRlY2hub2xvZ2llcyBHbWJICi0wMDBDN0EgICAgIChiYXNlIDE2KQkJRGFUQVJJVVMgVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlBbnRvbiBNYXJpYSBTY2h5cmxlIFN0ci4gNwotCQkJCVJldXR0ZSBUaXJvbCA2NjAwCi0JCQkJQVVTVFJJQQotCi0wMC0wQy03QiAgIChoZXgpCQlBTFBIQSBQUk9KRUNUIENvLixMdGQuCi0wMDBDN0IgICAgIChiYXNlIDE2KQkJQUxQSEEgUFJPSkVDVCBDby4sTHRkLgotCQkJCTgzNCBTZWtpc2hpLEhpZ2FzaGkta3UsSGFtYW1hdHN1LWNpdHkKLQkJCQlTaGl6dW9rYSAgNDMxLTMxMTQKLQkJCQlKQVBBTgotCi0wMC0wQy03QyAgIChoZXgpCQlJbnRlcm5ldCBJbmZvcm1hdGlvbiBJbWFnZSBJbmMuCi0wMDBDN0MgICAgIChiYXNlIDE2KQkJSW50ZXJuZXQgSW5mb3JtYXRpb24gSW1hZ2UgSW5jLgotCQkJCUZsLiA2LCBOby4gMSwgQWxsZXkgMjAsIExhbmUgMjYsIFJ1ZWlndWEKLQkJCQlOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy03RCAgIChoZXgpCQlURUlLT0tVIEVMRUNUUklDIE1GRy4gQ08uLCBMVEQKLTAwMEM3RCAgICAgKGJhc2UgMTYpCQlURUlLT0tVIEVMRUNUUklDIE1GRy4gQ08uLCBMVEQKLQkJCQk2MCwgSElSQU5PCi0JCQkJU0hJTkdVLUNITwotCQkJCUlCTy1HVU4gSFlPR08gNjc5LTQzOTUKLQkJCQlKQVBBTgotCi0wMC0wQy03RSAgIChoZXgpCQlUZWxsaXVtIEluY29ycG9yYXRlZAotMDAwQzdFICAgICAoYmFzZSAxNikJCVRlbGxpdW0gSW5jb3Jwb3JhdGVkCi0JCQkJMiBDcmVzY2VudCBQbGFjZQotCQkJCU9jZWFucG9ydCBOZXcgSmVyc2V5IDA3NzU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy03RiAgIChoZXgpCQlzeW5lcnRyb25peHggR21iSAotMDAwQzdGICAgICAoYmFzZSAxNikJCXN5bmVydHJvbml4eCBHbWJICi0JCQkJTGFuZ2UgTGF1YmUgMjIKLQkJCQlIYW5ub3ZlciBOaWVkZXJzYWNoc2VuIDMwMTU5Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy04MCAgIChoZXgpCQlPcGVsY29tbSBJbmMuCi0wMDBDODAgICAgIChiYXNlIDE2KQkJT3BlbGNvbW0gSW5jLgotCQkJCTQ2NzUwIEZyZW1vbnQgQmx2ZC4gU3RlIDIxMAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTgxICAgKGhleCkJCVNjaG5laWRlciBFbGVjdHJpYyAoQXVzdHJhbGlhKSAKLTAwMEM4MSAgICAgKGJhc2UgMTYpCQlTY2huZWlkZXIgRWxlY3RyaWMgKEF1c3RyYWxpYSkgCi0JCQkJODAgU2NobmVpZGVyIFJvYWQKLQkJCQlFYWdsZSBGYXJtICBRbGQgNDAwOQotCQkJCUFVU1RSQUxJQQotCi0wMC0wQy04MiAgIChoZXgpCQlORVRXT1JLIFRFQ0hOT0xPR0lFUyBJTkMKLTAwMEM4MiAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFRFQ0hOT0xPR0lFUyBJTkMKLQkJCQkxMjc1IERBTk5FUiBEUklWRQotCQkJCUFVUk9SQSBPSCA0NDIwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtODMgICAoaGV4KQkJTG9naWNhbCBTb2x1dGlvbnMKLTAwMEM4MyAgICAgKGJhc2UgMTYpCQlMb2dpY2FsIFNvbHV0aW9ucwotCQkJCTEwMFQgV2FzaGluZ3RvbiBTdHJlZXQKLQkJCQlNaWxmb3JkIENUIDA2NDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy04NCAgIChoZXgpCQlFYXppeCwgSW5jLgotMDAwQzg0ICAgICAoYmFzZSAxNikJCUVheml4LCBJbmMuCi0JCQkJVW5pdCAzMDEgUGxhemEgQnVpbGRpbmcgQgotCQkJCTY1MzAgTm9ydGhnYXRlIEF2ZW51ZSwgRmlsaW52ZXN0Ci0JCQkJTXVudGlubHVwYSBDaXR5IFJpemFsIDE3NzAKLQkJCQlQSElMSVBQSU5FUwotCi0wMC0wQy04NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBDODUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy04NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBDODYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLW0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy04NyAgIChoZXgpCQlBTUQKLTAwMEM4NyAgICAgKGJhc2UgMTYpCQlBTUQKLQkJCQk0NTU1IEdyZWF0IEFtZXJpY2EgUGt3eQotCQkJCVN0ZSA1MDEKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtODggICAoaGV4KQkJQXBhY2hlIE1pY3JvIFBlcmlwaGVyYWxzLCBJbmMuCi0wMDBDODggICAgIChiYXNlIDE2KQkJQXBhY2hlIE1pY3JvIFBlcmlwaGVyYWxzLCBJbmMuCi0JCQkJMTc1MjYgVm9uIEthcm1hbiBBdmUKLQkJCQlJcnZpbmUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTg5ICAgKGhleCkJCUFDIEVsZWN0cmljIFZlaGljbGVzLCBMdGQuCi0wMDBDODkgICAgIChiYXNlIDE2KQkJQUMgRWxlY3RyaWMgVmVoaWNsZXMsIEx0ZC4KLQkJCQlNYXJra2luYWt1amEgMwotCQkJCUpva2VsYSAgMDU0MDAKLQkJCQlGSU5MQU5ECi0KLTAwLTBDLThBICAgKGhleCkJCUJvc2UgQ29ycG9yYXRpb24KLTAwMEM4QSAgICAgKGJhc2UgMTYpCQlCb3NlIENvcnBvcmF0aW9uCi0JCQkJQXV0b21vdGl2ZSBTeXN0ZW1zIERpdmlzaW9uIChBU0QpCi0JCQkJNjg4IEdyZWF0IFJvYWQgKE1haWxzdG9wOiAxVzIpCi0JCQkJU3RvdyBNQSAwMTc3NS05MTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy04QiAgIChoZXgpCQlDb25uZWN0IFRlY2ggSW5jCi0wMDBDOEIgICAgIChiYXNlIDE2KQkJQ29ubmVjdCBUZWNoIEluYwotCQkJCTQyIEFycm93IFJvYWQKLQkJCQlHdWVscGggT250YXJpbyBOMUsgMVM2Ci0JCQkJQ0FOQURBCi0KLTAwLTBDLThDICAgKGhleCkJCUtPRElDT00gQ08uLExURC4KLTAwMEM4QyAgICAgKGJhc2UgMTYpCQlLT0RJQ09NIENPLixMVEQuCi0JCQkJQS1Eb25nIDVGSS4sU0sgVHdpbiBUb3dlciAzNDUtOSwKLQkJCQlHYXNhbi1Eb25nLCBHdWVtY2h1bi1HdQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLThEICAgKGhleCkJCU1BVFJJWCBWSVNJT04gR21iSAotMDAwQzhEICAgICAoYmFzZSAxNikJCU1BVFJJWCBWSVNJT04gR21iSAotCQkJCVRhbHN0cmFzc2UgMTYKLQkJCQlPcHBlbndlaWxlciBCYWRlbi1XdWVydHRlbWJlcmcgRC03MTU3MAotCQkJCUdFUk1BTlkKLQotMDAtMEMtOEUgICAoaGV4KQkJTWVudG9yIEVuZ2luZWVyaW5nIEluYwotMDAwQzhFICAgICAoYmFzZSAxNikJCU1lbnRvciBFbmdpbmVlcmluZyBJbmMKLQkJCQkyODkxIFN1bnJpZGdlIFdheSBORQotCQkJCVN1aXRlIDIzMAotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMVk3SzcKLQkJCQlDQU5BREEKLQotMDAtMEMtOEYgICAoaGV4KQkJTmVyZ2FsIHMuci5sLgotMDAwQzhGICAgICAoYmFzZSAxNikJCU5lcmdhbCBzLnIubC4KLQkJCQlWaWFsZSBCYXJkYW56ZWxsdSw4Ci0JCQkJUm9tYSAgMDAxNTUKLQkJCQlJVEFMWQotCi0wMC0wQy05MCAgIChoZXgpCQlPY3Rhc2ljIEluYy4KLTAwMEM5MCAgICAgKGJhc2UgMTYpCQlPY3Rhc2ljIEluYy4KLQkJCQk0MTAxIE1vbHNvbiBTdC4KLQkJCQlTdWl0ZSAzMDAKLQkJCQlNb250cmVhbCBRdWViZWMgSDFZIDNMMQotCQkJCUNBTkFEQQotCi0wMC0wQy05MSAgIChoZXgpCQlSaXZlcmhlYWQgTmV0d29ya3MgSW5jLgotMDAwQzkxICAgICAoYmFzZSAxNikJCVJpdmVyaGVhZCBOZXR3b3JrcyBJbmMuCi0JCQkJMjAxOTUgU3RldmVucyBDcmVlayBCbHZkLiAjIDExMAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtOTIgICAoaGV4KQkJV29sZlZpc2lvbiBHbWJoCi0wMDBDOTIgICAgIChiYXNlIDE2KQkJV29sZlZpc2lvbiBHbWJoCi0JCQkJT2JlcmVzIFJpZWQgMTQKLQkJCQk2ODMzIEtsYXVzIAotCQkJCUFVU1RSSUEKLQotMDAtMEMtOTMgICAoaGV4KQkJWGVsaW5lIENvLiwgTHRkLgotMDAwQzkzICAgICAoYmFzZSAxNikJCVhlbGluZSBDby4sIEx0ZC4KLQkJCQk3Ri4gQ2h1bmdqaW4gQmxkZy4sIDQ3NS0yMgotCQkJCUJhbmdiYWUgMiBkb25nLCBTZW9jaG8tZ3UKLQkJCQlTZW91bCAgMTM3LTgxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy05NCAgIChoZXgpCQlVbml0ZWQgRWxlY3Ryb25pYyBJbmR1c3RyaWVzLCBJbmMuIChFVUkpCi0wMDBDOTQgICAgIChiYXNlIDE2KQkJVW5pdGVkIEVsZWN0cm9uaWMgSW5kdXN0cmllcywgSW5jLiAoRVVJKQotCQkJCTI3IFJlbm1hciBBdmUKLQkJCQlXYWxwb2xlIE1BIDAyMDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy05NSAgIChoZXgpCQlQcmltZU5ldAotMDAwQzk1ICAgICAoYmFzZSAxNikJCVByaW1lTmV0Ci0JCQkJSG9uZ2lrIFVuaXZlcnNpdHksIDcyLTEsIFNhbmdzdS1Eb25nLCBNYQotCQkJCVNlb3VsICAxMjEtNzkxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTk2ICAgKGhleCkJCU9RTywgSW5jLgotMDAwQzk2ICAgICAoYmFzZSAxNikJCU9RTywgSW5jLgotCQkJCTE4MDAgSWxsaW5vaXMgU3RyZWV0Ci0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtOTcgICAoaGV4KQkJTlYgQURCIFRUViBUZWNobm9sb2dpZXMgU0EKLTAwMEM5NyAgICAgKGJhc2UgMTYpCQlOViBBREIgVFRWIFRlY2hub2xvZ2llcyBTQQotCQkJCUxFVVZFTlNFU1RFRU5XRUcsNTg1Ci0JCQkJWkFWRU5URU0gVmxhYW1zZSBicmFiYW50IDE5MzAKLQkJCQlCRUxHSVVNCi0KLTAwLTBDLTk4ICAgKGhleCkJCUxFVEVLIENvbW11bmljYXRpb25zIEluYy4KLTAwMEM5OCAgICAgKGJhc2UgMTYpCQlMRVRFSyBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJVGFleWFuZyBCZC4gMm5kIEZsb29yLCAyNDg2Ci0JCQkJU29uZ05hbS1Eb25nLCBKdW5nd29uLUt1Ci0JCQkJU29uZ05hbSBLeXVuZ2dpLWRvIDQ2Mi04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtOTkgICAoaGV4KQkJSElURUwgTElOSyBDby4sTHRkCi0wMDBDOTkgICAgIChiYXNlIDE2KQkJSElURUwgTElOSyBDby4sTHRkCi0JCQkJU2Ftc3VuZyBPbW5pIFRvd2VyIDR0aCBGbC4sIDM5NS02MgotCQkJCVNoaW5kYWViYW5nLWRvbmcsIERvbmdqYWMta3UsCi0JCQkJU2VvdWwgIDE1Ni0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtOUEgICAoaGV4KQkJSGl0ZWNoIEVsZWN0cm9uaWNzIENvcnAuCi0wMDBDOUEgICAgIChiYXNlIDE2KQkJSGl0ZWNoIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJNGYsIE5vLiA1MDEtMTUgQ2h1bmctQ2hlbmcgUmQuCi0JCQkJU2hpbi10aWVuIFRhaXBlaSBTaGllbiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLTlCICAgKGhleCkJCUVFIFNvbHV0aW9ucywgSW5jCi0wMDBDOUIgICAgIChiYXNlIDE2KQkJRUUgU29sdXRpb25zLCBJbmMKLQkJCQk4RiwgTm8uIDksIFBhcmsgSUkgQXZlLiwgU2NpZW5jZS1CYXNlZCBJCi0JCQkJSHNpbiBDaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtOUMgICAoaGV4KQkJQ2hvbmdobyBpbmZvcm1hdGlvbiAmIGNvbW11bmljYXRpb25zCi0wMDBDOUMgICAgIChiYXNlIDE2KQkJQ2hvbmdobyBpbmZvcm1hdGlvbiAmIGNvbW11bmljYXRpb25zCi0JCQkJQ2hvbmdobyBCbGRnLCAjNy02MSBZYW5namFlLWRvbmcsIFNlb2NobwotCQkJCVNlb3VsICAxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLTlEICAgKGhleCkJCUFpcldhbGsgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMEM5RCAgICAgKGJhc2UgMTYpCQlBaXJXYWxrIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTg1MCBOLiBHcmVlblZpbGxlIEF2ZS4sIFN1aXRlIDE2NAotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTlFICAgKGhleCkJCU1lbW9yeUxpbmsgQ29ycC4KLTAwMEM5RSAgICAgKGJhc2UgMTYpCQlNZW1vcnlMaW5rIENvcnAuCi0JCQkJMzYgSmV3ZWxlcnMgUGFyayBEcml2ZQotCQkJCVN1aXRlIDIwMAotCQkJCU5lZW5haCBXaXNjb25zaW4gNTQ5NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLTlGICAgKGhleCkJCU5LRSBDb3Jwb3JhdGlvbgotMDAwQzlGICAgICAoYmFzZSAxNikJCU5LRSBDb3Jwb3JhdGlvbgotCQkJCTI3IFp1c2hvIEJhYmEKLQkJCQlOYWdhb2tha3lvLXNoaSBLeW90byA2MTctMDgyOAotCQkJCUpBUEFOCi0KLTAwLTBDLUEwICAgKGhleCkJCVN0b3JDYXNlIFRlY2hub2xvZ3ksIEluYy4KLTAwMENBMCAgICAgKGJhc2UgMTYpCQlTdG9yQ2FzZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTc2MDAgTmV3aG9wZSBTdC4KLQkJCQlGb3VudGFpbiBWYWxsZXkgQ0EgOTI3MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUExICAgKGhleCkJCVNJR01BQ09NIENvLiwgTFRELgotMDAwQ0ExICAgICAoYmFzZSAxNikJCVNJR01BQ09NIENvLiwgTFRELgotCQkJCURhY29tQmxkZyA3RiAyMDAtMTIgQW55YW5nLWRvbmcKLQkJCQlNYW5hbi1LdSwgQW55YW5nLWNpdHksIEt5dW5nS2ktRG8sIEtvcmVhCi0JCQkJNDMwLTgxNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy1BMiAgIChoZXgpCQlTY29wdXMgTmV0d29yayBUZWNobm9sb2dpZXMgTHRkCi0wMDBDQTIgICAgIChiYXNlIDE2KQkJU2NvcHVzIE5ldHdvcmsgVGVjaG5vbG9naWVzIEx0ZAotCQkJCTEwIEhhJ2FtYWwgc3QuIFBhcmsgQWZlawotCQkJCVJvc2ggSGEnYXlpbiAgNDgwOTIKLQkJCQlJU1JBRUwKLQotMDAtMEMtQTMgICAoaGV4KQkJUmFuY2hvIFRlY2hub2xvZ3ksIEluYy4KLTAwMENBMyAgICAgKGJhc2UgMTYpCQlSYW5jaG8gVGVjaG5vbG9neSwgSW5jLgotCQkJCTEwNzgzIEJlbGwgQ291cnQKLQkJCQlSYW5jaG8gQ3VjYW1vbmdhIENBIDE5NzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BNCAgIChoZXgpCQlQcm9tcHR0ZWMgUHJvZHVjdCBNYW5hZ2VtZW50IEdtYkgKLTAwMENBNCAgICAgKGJhc2UgMTYpCQlQcm9tcHR0ZWMgUHJvZHVjdCBNYW5hZ2VtZW50IEdtYkgKLQkJCQlNYXJpYXRyb3N0ZXJzdHIuIDQxCi0JCQkJR3JheiBBVVNUUklBIEEtODA0MwotCQkJCUFVU1RSSUEKLQotMDAtMEMtQTUgICAoaGV4KQkJTmFtYW4gTlogTFRkCi0wMDBDQTUgICAgIChiYXNlIDE2KQkJTmFtYW4gTlogTFRkCi0JCQkJMTMvMTcgS2F3YW5hIFN0Ci0JCQkJTm9ydGhjb3RlCi0JCQkJQXVja2xhbmQgIAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTBDLUE2ICAgKGhleCkJCU1pbnRlcmEgQ29ycG9yYXRpb24KLTAwMENBNiAgICAgKGJhc2UgMTYpCQlNaW50ZXJhIENvcnBvcmF0aW9uCi0JCQkJODQ3IFJvZ2VycyBTdHJlZXQKLQkJCQlMb3dlbGwgTUEgMDE4NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUE3ICAgKGhleCkJCU1ldHJvIChTdXpob3UpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMENBNyAgICAgKGJhc2UgMTYpCQlNZXRybyAoU3V6aG91KSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJTm8uMjIxIFhpbmdoYWkgU3RyZWV0LCBTdXpob3UgSW5kdXN0cmlhbCBQYXJrCi0JCQkJU3V6aG91IEppYW5nIFN1IFByb3ZpbmNlIDIxNTAyMQotCQkJCUNISU5BCi0KLTAwLTBDLUE4ICAgKGhleCkJCUdhcnVkYSBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAwQ0E4ICAgICAoYmFzZSAxNikJCUdhcnVkYSBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotCQkJCTQ4NDk5IE1pbG1vbnQgRHJpdmUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BOSAgIChoZXgpCQlFYnRyb24gSW5jLgotMDAwQ0E5ICAgICAoYmFzZSAxNikJCUVidHJvbiBJbmMuCi0JCQkJMTY2MyBId3kgNzAxIFNvdXRoCi0JCQkJTG9yaXMgU0MgMjk1NjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUFBICAgKGhleCkJCUN1YmljIFRyYW5zcG9ydGF0aW9uIFN5c3RlbXMgSW5jCi0wMDBDQUEgICAgIChiYXNlIDE2KQkJQ3ViaWMgVHJhbnNwb3J0YXRpb24gU3lzdGVtcyBJbmMKLQkJCQkxMzA4IFMuIFdhc2hpbmd0b24gU3RyZWV0Ci0JCQkJVHVsbGFob21hIFROIDM3Mzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BQiAgIChoZXgpCQlDT01NRU5EIEludGVybmF0aW9uYWwKLTAwMENBQiAgICAgKGJhc2UgMTYpCQlDT01NRU5EIEludGVybmF0aW9uYWwKLQkJCQlIb2VsemxzdHJhc3NlIDU2MQotCQkJCVdhbHMgU2FsemJ1cmcgQS01MDcxCi0JCQkJQVVTVFJJQQotCi0wMC0wQy1BQyAgIChoZXgpCQlDaXRpemVuIFdhdGNoIENvLiwgTHRkLgotMDAwQ0FDICAgICAoYmFzZSAxNikJCUNpdGl6ZW4gV2F0Y2ggQ28uLCBMdGQuCi0JCQkJNi0xLTEyLCBUYW5hc2hpLWNobwotCQkJCU5pc2hpLVRva3lvLXNoaSBUb2t5byAxODgtODUxMQotCQkJCUpBUEFOCi0KLTAwLTBDLUFEICAgKGhleCkJCUJUVSBJbnRlcm5hdGlvbmFsCi0wMDBDQUQgICAgIChiYXNlIDE2KQkJQlRVIEludGVybmF0aW9uYWwKLQkJCQkyMyBFc3F1aXJlIFJkCi0JCQkJTm9ydGggQmlsbGVyaWNhIE1BIDAxODYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1BRSAgIChoZXgpCQlBaWxvY29tIE95Ci0wMDBDQUUgICAgIChiYXNlIDE2KQkJQWlsb2NvbSBPeQotCQkJCUhhdGFucGFhbiB2YWx0YXRpZSAyNAotCQkJCUR5bmFtbyBCdXNpbmVzcyBQYXJrCi0JCQkJVEFNUEVSRSBGSU4gMzM5NTAKLQkJCQlGSU5MQU5ECi0KLTAwLTBDLUFGICAgKGhleCkJCVRSSSBURVJNIENPLixMVEQuCi0wMDBDQUYgICAgIChiYXNlIDE2KQkJVFJJIFRFUk0gQ08uLExURC4KLQkJCQkyMS01IEhJUkFJREUgS09VR0lZTyBEQU5DSEkKLQkJCQlVVFNVTk9NSVlBLVNISQotCQkJCVRPQ0hJR0kgIDMyMS0wOTA1Ci0JCQkJSkFQQU4KLQotMDAtMEMtQjAgICAoaGV4KQkJU3RhciBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uCi0wMDBDQjAgICAgIChiYXNlIDE2KQkJU3RhciBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uCi0JCQkJNkYsIE5vLjE3LCBMaS1Ic2luIFJkCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1IENpdHkgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEMtQjEgICAoaGV4KQkJU2FsbGFuZCBFbmdpbmVlcmluZyAoRXVyb3BlKSBCVgotMDAwQ0IxICAgICAoYmFzZSAxNikJCVNhbGxhbmQgRW5naW5lZXJpbmcgKEV1cm9wZSkgQlYKLQkJCQlCZWRyaWp2ZW5wYXJrIEJlcmt1bQotCQkJCVNjaHJldmVud2VnIDEyCi0JCQkJWndvbGxlIE9WIDgwMjQgSEEKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wQy1CMiAgIChoZXgpCQlDb21zdGFyIENvLiwgTHRkLgotMDAwQ0IyICAgICAoYmFzZSAxNikJCUNvbXN0YXIgQ28uLCBMdGQuCi0JCQkJNzAxIE1hc2FuIFZhbGxleSAjMTEyMS05Ci0JCQkJQ2h1bmctcmksIE5hZXNlby1ldXAKLQkJCQlNYXNhbiBHeWVvbmduYW0gNjMwLTcyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy1CMyAgIChoZXgpCQlST1VORCBDby4sTHRkLgotMDAwQ0IzICAgICAoYmFzZSAxNikJCVJPVU5EIENvLixMdGQuCi0JCQkJMy05IEdva2FzaG91LVNoaWJhaGlnYXNoaQotCQkJCVVqaSBLeW90byA2MTEtMDAxMQotCQkJCUpBUEFOCi0KLTAwLTBDLUI0ICAgKGhleCkJCUF1dG9DZWxsIExhYm9yYXRvcmllcywgSW5jLgotMDAwQ0I0ICAgICAoYmFzZSAxNikJCUF1dG9DZWxsIExhYm9yYXRvcmllcywgSW5jLgotCQkJCTE3NCBDb25jb3JkIFN0cmVldAotCQkJCVN1aXRlIDMxMAotCQkJCVBldGVyYm9yb3VnaCwgTmV3IEhhbXBzaGlyZSAwMzQ1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQjUgICAoaGV4KQkJUHJlbWllciBUZWNobm9sZ2llcywgSW5jCi0wMDBDQjUgICAgIChiYXNlIDE2KQkJUHJlbWllciBUZWNobm9sZ2llcywgSW5jCi0JCQkJUE8gQm94IDE1OQotCQkJCU9uZSBQcmVtaWVyIERyCi0JCQkJTG9uZyBMYWtlIE1OIDU1MzU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1CNiAgIChoZXgpCQlOQU5KSU5HIFNFVSBNT0JJTEUgJiBJTlRFUk5FVCBURUNITk9MT0dZIENPLixMVEQKLTAwMENCNiAgICAgKGJhc2UgMTYpCQlOQU5KSU5HIFNFVSBNT0JJTEUgJiBJTlRFUk5FVCBURUNITk9MT0dZIENPLixMVEQKLQkJCQk1dGggZmxvb3IsQnVpbGRpbmcgNSxDaGFuZ0ppYW5nSG91IFN0cmVldCBOby42Ci0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMDAxOAotCQkJCUNISU5BCi0KLTAwLTBDLUI3ICAgKGhleCkJCU5hbmppbmcgSHVhemh1byBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMENCNyAgICAgKGJhc2UgMTYpCQlOYW5qaW5nIEh1YXpodW8gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJTm8uNzcgR2FvaHUgUm9hZAotCQkJCUppYW5nbmluZyBFY29ub21pYyAmIFRlY2hub2xvZ3kgRGV2ZWxvcG0KLQkJCQlOYW5qaW5nIEppYW5nc3UgMjExMTAwCi0JCQkJQ0hJTkEKLQotMDAtMEMtQjggICAoaGV4KQkJTUVESU9OIEFHCi0wMDBDQjggICAgIChiYXNlIDE2KQkJTUVESU9OIEFHCi0JCQkJQW0gWmVobnRob2YgNzcKLQkJCQlFc3NlbiBOUlcgNDUzMDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLUI5ICAgKGhleCkJCUxFQQotMDAwQ0I5ICAgICAoYmFzZSAxNikJCUxFQQotCQkJCUJhdCBMQSBGQVlFVFRFCi0JCQkJMiBwbGFjZSBkZXMgVm9zZ2VzCi0JCQkJUGFyaXMgUlAgOTI0MDUxCi0JCQkJRlJBTkNFCi0KLTAwLTBDLUJBICAgKGhleCkJCUphbWV4LCBJbmMuCi0wMDBDQkEgICAgIChiYXNlIDE2KQkJSmFtZXgsIEluYy4KLQkJCQkyNDE1IE4gVHJpcGhhbW1lciBSZAotCQkJCUl0aGFjYSBOWSAxNDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtQkIgICAoaGV4KQkJSVNLUkFFTUVDTwotMDAwQ0JCICAgICAoYmFzZSAxNikJCUlTS1JBRU1FQ08KLQkJCQlTYXZza2EgbG9rYSA0Ci0JCQkJS3JhbmogR29yZW5qc2thIDQwMDAKLQkJCQlTTE9WRU5JQQotCi0wMC0wQy1CQyAgIChoZXgpCQlJc2N1dHVtCi0wMDBDQkMgICAgIChiYXNlIDE2KQkJSXNjdXR1bQotCQkJCSM4OTktNiBIby1HeWUgRG9uZywgRG9uZy1BbiBHdQotCQkJCUFuLVlhbmcgQ2l0eSBLeW9uZy1HaSBEbyA0MzEtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLUJEICAgKGhleCkJCUludGVyZmFjZSBNYXN0ZXJzLCBJbmMKLTAwMENCRCAgICAgKGJhc2UgMTYpCQlJbnRlcmZhY2UgTWFzdGVycywgSW5jCi0JCQkJMjM4MSBaYW5rZXIgUmQuLCBTdWl0ZSAxMzAKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1CRSAgIChoZXgpCQlJbm5vbWluYXRlIFNlY3VyaXR5IFRlY2hub2xvZ2llcyBBRwotMDAwQ0JFICAgICAoYmFzZSAxNikJCUlubm9taW5hdGUgU2VjdXJpdHkgVGVjaG5vbG9naWVzIEFHCi0JCQkJUnVkb3dlciBDaGF1c3NlZSAxMwotCQkJCTEyNDg5IEJlcmxpbiAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLUJGICAgKGhleCkJCUhvbHkgU3RvbmUgRW50LiBDby4sIEx0ZC4KLTAwMENCRiAgICAgKGJhc2UgMTYpCQlIb2x5IFN0b25lIEVudC4gQ28uLCBMdGQuCi0JCQkJMUYsIE5vLjYyLCBTZWMuMiwgSHVhbmcgU2hhbiBSZC4sCi0JCQkJTmVpIEh1IERpc3QuLCBUYWlwZWksIFRhaXdhbiwgUi5PLkMuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLUMwICAgKGhleCkJCUdlbmVyYSBPeQotMDAwQ0MwICAgICAoYmFzZSAxNikJCUdlbmVyYSBPeQotCQkJCU5paXR0eWxhbnBvbGt1IDE2Ci0JCQkJQm94IDE2Ci0JCQkJSGVsc2lua2kgIDAwNjIxCi0JCQkJRklOTEFORAotCi0wMC0wQy1DMSAgIChoZXgpCQlDb29wZXIgSW5kdXN0cmllcyBJbmMuCi0wMDBDQzEgICAgIChiYXNlIDE2KQkJQ29vcGVyIEluZHVzdHJpZXMgSW5jLgotCQkJCTYwMCBUcmF2aXMsIFN1aXRlIDU4MDAKLQkJCQlIb3VzdG9uIFRYIDc3MDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1DMiAgIChoZXgpCQlDb250cm9sTmV0IChJbmRpYSkgUHJpdmF0ZSBMaW1pdGVkCi0wMDBDQzIgICAgIChiYXNlIDE2KQkJQ29udHJvbE5ldCAoSW5kaWEpIFByaXZhdGUgTGltaXRlZAotCQkJCUwtNDQsIFVuaXQgLSBJCi0JCQkJVmVybmEgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlWZXJuYSwgU2FsY2V0ZSBHb2EgNDAzIDcyMgotCQkJCUlORElBCi0KLTAwLTBDLUMzICAgKGhleCkJCUJlV0FOIHN5c3RlbXMKLTAwMENDMyAgICAgKGJhc2UgMTYpCQlCZVdBTiBzeXN0ZW1zCi0JCQkJMTYgcnVlIGR1IE1vdWxpbiBkZXMgQnJ1ecOocmVzCi0JCQkJQ291cmJldm9pZSBIYXV0cyBkZSBTZWluZSA5MjQwMAotCQkJCUZSQU5DRQotCi0wMC0wQy1DNCAgIChoZXgpCQlUaXB0ZWwgQUcKLTAwMENDNCAgICAgKGJhc2UgMTYpCQlUaXB0ZWwgQUcKLQkJCQlIYWxza2VzdHJhc3NlIDEKLQkJCQlSYXRpbmdlbiBOUlcgNDA4ODAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLUM1ICAgKGhleCkJCU5leHRsaW5rIENvLiwgTHRkLgotMDAwQ0M1ICAgICAoYmFzZSAxNikJCU5leHRsaW5rIENvLiwgTHRkLgotCQkJCUMgNjA1LCBUZWNobm9wYXJrICMxNDUgWWF0b3AtZG9uZywKLQkJCQlTZW9uZ25hbS1zaSBCdW5kYW5nLWd1LCBHeWVvbmdnaSA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLUM2ICAgKGhleCkJCUthLVJvIGVsZWN0cm9uaWNzIEdtYkgKLTAwMENDNiAgICAgKGJhc2UgMTYpCQlLYS1SbyBlbGVjdHJvbmljcyBHbWJICi0JCQkJUGFzY2Fsc3RyYcODxbhlIDIyCi0JCQkJQWFjaGVuIE5XIDUyMDc2Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy1DNyAgIChoZXgpCQlJbnRlbGxpZ2VudCBDb21wdXRlciBTb2x1dGlvbnMgSW5jLgotMDAwQ0M3ICAgICAoYmFzZSAxNikJCUludGVsbGlnZW50IENvbXB1dGVyIFNvbHV0aW9ucyBJbmMuCi0JCQkJOTM1MCBFdG9uIFN0LgotCQkJCUNoYXRzd29ydGggQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUM4ICAgKGhleCkJCVh5dHJvbml4IFJlc2VhcmNoICYgRGVzaWduLCBJbmMuCi0wMDBDQzggICAgIChiYXNlIDE2KQkJWHl0cm9uaXggUmVzZWFyY2ggJiBEZXNpZ24sIEluYy4KLQkJCQkxNDg4IEVhc3QgMjMwMCBOb3J0aAotCQkJCU5vcnRoIExvZ2FuIFVUIDg0MzQxLTE2MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUM5ICAgKGhleCkJCUlMV09PIERBVEEgJiBURUNITk9MT0dZIENPLixMVEQKLTAwMENDOSAgICAgKGJhc2UgMTYpCQlJTFdPTyBEQVRBICYgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJMTQ3NS0xMCxIV0EgSFlVTiBCTEQuIDJuZCBGbG9vciwKLQkJCQlTRU9DSE8tRE9ORyxTRU9DSE8tR1UsCi0JCQkJU0VPVUwgIDEzNy0wNzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEMtQ0EgICAoaGV4KQkJSGl0YWNoaSBHbG9iYWwgU3RvcmFnZSBUZWNobm9sb2dpZXMKLTAwMENDQSAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIEdsb2JhbCBTdG9yYWdlIFRlY2hub2xvZ2llcwotCQkJCTU2MDAgQ290dGxlIFJkLgotCQkJCVNhbiBKb3NlIENBIDk1MTkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1DQiAgIChoZXgpCQlEZXNpZ24gQ29tYnVzIEx0ZAotMDAwQ0NCICAgICAoYmFzZSAxNikJCURlc2lnbiBDb21idXMgTHRkCi0JCQkJSGF0YW5hcGFhbiB2YWx0YXRpZSAzNEEKLQkJCQlUYW1wZXJlICBGSU4tMzMxMDAKLQkJCQlGSU5MQU5ECi0KLTAwLTBDLUNDICAgKGhleCkJCUFlcm9zY291dCBMdGQuCi0wMDBDQ0MgICAgIChiYXNlIDE2KQkJQWVyb3Njb3V0IEx0ZC4KLQkJCQkzIFBla2VyaXMgU3QuCi0JCQkJUGFyayBUYW1hcgotCQkJCVJlaG92b3QgIDc2NzAxCi0JCQkJSVNSQUVMCi0KLTAwLTBDLUNEICAgKGhleCkJCUlFQyAtIFRDNTcKLTAwMENDRCAgICAgKGJhc2UgMTYpCQlJRUMgLSBUQzU3Ci0JCQkJMywgcnVlIGRlIFZhcmVtYsOpCi0JCQkJUC5PLiBCb3ggMTMxCi0JCQkJR2VuZXZhIEdFIDEyMTEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQy1DRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBDQ0UgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1DRiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBDQ0YgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1EMCAgIChoZXgpCQlTeW1ldHJpeAotMDAwQ0QwICAgICAoYmFzZSAxNikJCVN5bWV0cml4Ci0JCQkJNjQwOCAyMTZ0aCBTdCBTVwotCQkJCU1vdW50bGFrZSBUZXJyYWNlIFdBIDk4MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1EMSAgIChoZXgpCQlTRk9NIFRlY2hub2xvZ3kgQ29ycC4KLTAwMENEMSAgICAgKGJhc2UgMTYpCQlTRk9NIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQlOby4xOCwgTGFuZSAzMiwgV3VmdSAxc3QgUmQuLCBMdWp1IHNoaWFuCi0JCQkJTHVqdSBTaGlhbmcgVGF1eXVhbiBDb3VudHkgMzM4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wQy1EMiAgIChoZXgpCQlTY2hhZmZuZXIgRU1WIEFHCi0wMDBDRDIgICAgIChiYXNlIDE2KQkJU2NoYWZmbmVyIEVNViBBRwotCQkJCU5vcmRzdHJhc3NlIDEKLQkJCQlMdXRlcmJhY2ggIENILTQ1NDIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wQy1EMyAgIChoZXgpCQlQcmV0dGwgRWxla3Ryb25payBSYWRlYmVyZyBHbWJICi0wMDBDRDMgICAgIChiYXNlIDE2KQkJUHJldHRsIEVsZWt0cm9uaWsgUmFkZWJlcmcgR21iSAotCQkJCVJvYmVydC1Cb3NjaC1TdHIuIDEwCi0JCQkJUmFkZWJlcmcgU2F4b255IEQtMDE0NTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLUQ0ICAgKGhleCkJCVBvc2l0cm9uIFB1YmxpYyBTYWZldHkgU3lzdGVtcyBpbmMuCi0wMDBDRDQgICAgIChiYXNlIDE2KQkJUG9zaXRyb24gUHVibGljIFNhZmV0eSBTeXN0ZW1zIGluYy4KLQkJCQk1MTAxIEJ1Y2hhbgotCQkJCU1vbnRyZWFsIFF1ZWJlYyBINFAgMlI5Ci0JCQkJQ0FOQURBCi0KLTAwLTBDLUQ1ICAgKGhleCkJCVBhc3NhdmUgSW5jLgotMDAwQ0Q1ICAgICAoYmFzZSAxNikJCVBhc3NhdmUgSW5jLgotCQkJCTE1NTcgSmFzcGVyIERyLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRDYgICAoaGV4KQkJUEFSVE5FUiBURUNICi0wMDBDRDYgICAgIChiYXNlIDE2KQkJUEFSVE5FUiBURUNICi0JCQkJMTBGLCBOTy4yMzMtMixQQU8gQ0hJQU8gUk9BRCwgU0hJTiBUSUVOCi0JCQkJVEFJUEVJICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLUQ3ICAgKGhleCkJCU5hbGxhdGVjaCBMdGQKLTAwMENENyAgICAgKGJhc2UgMTYpCQlOYWxsYXRlY2ggTHRkCi0JCQkJQm9vbGVhbiBIb3VzZQotCQkJCTEgTmFwaWVyIFBhcmssIEN1bWJlcm5hdWxkCi0JCQkJR2xhc2dvdyBTY290bGFuZCBHNjggMEJICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEMtRDggICAoaGV4KQkJTS4gSy4gSnVjaGhlaW0gR21iSCAmIENvCi0wMDBDRDggICAgIChiYXNlIDE2KQkJTS4gSy4gSnVjaGhlaW0gR21iSCAmIENvCi0JCQkJTW9sdGtlc3RyLiAxMyAtIDMxCi0JCQkJRnVsZGEgSGVzc2VuIDM2MDM5Ci0JCQkJR0VSTUFOWQotCi0wMC0wQy1EOSAgIChoZXgpCQlJdGNhcmUgQ28uLCBMdGQKLTAwMENEOSAgICAgKGJhc2UgMTYpCQlJdGNhcmUgQ28uLCBMdGQKLQkJCQk0MDggS1QgU2VvY2hvLCAxMDAxLTEgQmFuZ2JhZS1kb25nLAotCQkJCVNlb2Noby1rdQotCQkJCVNlb3VsICAxMzctODUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLURBICAgKGhleCkJCUZyZWVIYW5kIFN5c3RlbXMsIEluYy4KLTAwMENEQSAgICAgKGJhc2UgMTYpCQlGcmVlSGFuZCBTeXN0ZW1zLCBJbmMuCi0JCQkJOTUgRmlyc3QgU3QuCi0JCQkJU3VpdGUgMjAwCi0JCQkJTG9zIEFsdG9zIENBIDk0MDIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1EQiAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotMDAwQ0RCICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLURDICAgKGhleCkJCUJFQ1MgVGVjaG5vbG9neSwgSW5jCi0wMDBDREMgICAgIChiYXNlIDE2KQkJQkVDUyBUZWNobm9sb2d5LCBJbmMKLQkJCQk5NDg3IERpZWxtYW4gUm9jayBJc2xhbmQgSW5kdXN0cmlhbCBEcml2Ci0JCQkJU3QuIExvdWlzIE1PIDYzMTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1ERCAgIChoZXgpCQlBT1MgVGVjaG5vbG9naWVzIEFHCi0wMDBDREQgICAgIChiYXNlIDE2KQkJQU9TIFRlY2hub2xvZ2llcyBBRwotCQkJCVRhZWZlcm5zdHJhc3NlIDIwCi0JCQkJQmFkZW4gLSBEYWV0dHdpbCBBRyBDSC01NDA1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEMtREUgICAoaGV4KQkJQUJCIFNUT1RaLUtPTlRBS1QgR21iSAotMDAwQ0RFICAgICAoYmFzZSAxNikJCUFCQiBTVE9UWi1LT05UQUtUIEdtYkgKLQkJCQlFcHBlbGhlaW1lciBTdHIuIDgyCi0JCQkJSGVpZGVsYmVyZyBCYWRlbi1Xw7xydHRlbWJlcmcgNjkxMjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTBDLURGICAgKGhleCkJCVBVTE5pWCBBbWVyaWNhLCBJbmMKLTAwMENERiAgICAgKGJhc2UgMTYpCQlQVUxOaVggQW1lcmljYSwgSW5jCi0JCQkJMTMzMCBPcmxlYW5zIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1FMCAgIChoZXgpCQlUcmVrIERpYWdub3N0aWNzIEluYy4KLTAwMENFMCAgICAgKGJhc2UgMTYpCQlUcmVrIERpYWdub3N0aWNzIEluYy4KLQkJCQk5ODIgS2V5bm90ZSBDaXJjbGUKLQkJCQlTdWl0ZSA2Ci0JCQkJQ2xldmVsYW5kIE9oaW8gNDQxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUUxICAgKGhleCkJCVRoZSBPcGVuIEdyb3VwCi0wMDBDRTEgICAgIChiYXNlIDE2KQkJVGhlIE9wZW4gR3JvdXAKLQkJCQlBcGV4IFBsYXphCi0JCQkJRm9yYnVyeSBSb2FkCi0JCQkJUmVhZGluZyBCZXJrcyBSRzEgMUFYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEMtRTIgICAoaGV4KQkJUm9sbHMtUm95Y2UKLTAwMENFMiAgICAgKGJhc2UgMTYpCQlSb2xscy1Sb3ljZQotCQkJCTEwNSBOLiBTYW5kdXNreSBTdC4KLQkJCQlNdC4gVmVybm9uIE9oaW8gNDMwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUUzICAgKGhleCkJCU9wdGlvbiBJbnRlcm5hdGlvbmFsIE4uVi4KLTAwMENFMyAgICAgKGJhc2UgMTYpCQlPcHRpb24gSW50ZXJuYXRpb25hbCBOLlYuCi0JCQkJS29sb25lbCBCZWdhdWx0bGFhbiA0NQotCQkJCUxldXZlbiBCcmFiYW50IDMwMTIKLQkJCQlCRUxHSVVNCi0KLTAwLTBDLUU0ICAgKGhleCkJCU5ldXJvQ29tIEludGVybmF0aW9uYWwsIEluYy4KLTAwMENFNCAgICAgKGJhc2UgMTYpCQlOZXVyb0NvbSBJbnRlcm5hdGlvbmFsLCBJbmMuCi0JCQkJOTU3MCBTRSBMYXduZmllbGQgUmQKLQkJCQlDbGFja2FtYXMgT1IgOTcwMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUU1ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDBDRTUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1FNiAgIChoZXgpCQlNZXJ1IE5ldHdvcmtzIEluYwotMDAwQ0U2ICAgICAoYmFzZSAxNikJCU1lcnUgTmV0d29ya3MgSW5jCi0JCQkJMTMwOSBTb3V0aCBNYXJ5IEF2ZW51ZSwKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUU3ICAgKGhleCkJCU1lZGlhVGVrIEluYy4KLTAwMENFNyAgICAgKGJhc2UgMTYpCQlNZWRpYVRlayBJbmMuCi0JCQkJMUYsIE5vLiAxMywgSW5ub3ZhdGlvbiBSb2FkIDEsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBDLUU4ICAgKGhleCkJCUd1YW5nWmhvdSBBbkp1QmFvIENvLiwgTHRkCi0wMDBDRTggICAgIChiYXNlIDE2KQkJR3VhbmdaaG91IEFuSnVCYW8gQ28uLCBMdGQKLQkJCQlIZWlRaWFvVGFuZyBUYW5nWGlhIFRpYW5IZQotCQkJCUd1YW5nWmhvdSBHdWFuZ0RvbmcgNTEwNjY1Ci0JCQkJQ0hJTkEKLQotMDAtMEMtRTkgICAoaGV4KQkJQkxPT01CRVJHIEwuUC4KLTAwMENFOSAgICAgKGJhc2UgMTYpCQlCTE9PTUJFUkcgTC5QLgotCQkJCTczMSBMZXhpbmd0b24gQXZlCi0JCQkJTkVXIFlPUksgTkVXIFlPUksgMTAwMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUVBICAgKGhleCkJCWFwaG9uYSBLb21tdW5pa2F0aW9uc3N5c3RlbWUKLTAwMENFQSAgICAgKGJhc2UgMTYpCQlhcGhvbmEgS29tbXVuaWthdGlvbnNzeXN0ZW1lCi0JCQkJRW50d2lja2x1bmdzLSB1bmQgVmVydHJpZWJzZ21iSAotCQkJCURldXRzY2hzdHJhw4PFuGUgNAotCQkJCVdpZW4gIDEyMzAKLQkJCQlBVVNUUklBCi0KLTAwLTBDLUVCICAgKGhleCkJCUNOTVAgTmV0d29ya3MsIEluYy4KLTAwMENFQiAgICAgKGJhc2UgMTYpCQlDTk1QIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTI0NSBTLiBXaW5jaGVzdGVyIEJsdmQuCi0JCQkJU3VpdGUgMjA4Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUVDICAgKGhleCkJCVNwZWN0cmFjb20gQ29ycC4KLTAwMENFQyAgICAgKGJhc2UgMTYpCQlTcGVjdHJhY29tIENvcnAuCi0JCQkJOTUgTWV0aG9kaXN0IEhpbGwgRHJpdmUKLQkJCQlTdWl0ZSA1MDAKLQkJCQlSb2NoZXN0ZXIgTlkgMTQ2MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUVEICAgKGhleCkJCVJlYWwgRGlnaXRhbCBNZWRpYQotMDAwQ0VEICAgICAoYmFzZSAxNikJCVJlYWwgRGlnaXRhbCBNZWRpYQotCQkJCTQ4NSBOb3J0aCBLZWxsZXIgUm9hZAotCQkJCVN1aXRlIDE0MAotCQkJCU1haXRsYW5kIEZMIDMyNzUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1FRSAgIChoZXgpCQlqcC1lbWJlZGRlZAotMDAwQ0VFICAgICAoYmFzZSAxNikJCWpwLWVtYmVkZGVkCi0JCQkJQnVlbiAyMSwgTnIuIERhbGJ5Ci0JCQkJQm9ydXAgIDQxNDAKLQkJCQlERU5NQVJLCi0KLTAwLTBDLUVGICAgKGhleCkJCU9wZW4gTmV0d29ya3MgRW5naW5lZXJpbmcgTHRkCi0wMDBDRUYgICAgIChiYXNlIDE2KQkJT3BlbiBOZXR3b3JrcyBFbmdpbmVlcmluZyBMdGQKLQkJCQlDbGFzc2ljIEhvdXNlCi0JCQkJUmF5bmhhbSBSb2FkCi0JCQkJQmlzaG9wJ3MgU3RvcnRmb3JkIEhlcnRmb3Jkc2hpcmUgQ00yMyA1UEQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wQy1GMCAgIChoZXgpCQlNICYgTiBHbWJICi0wMDBDRjAgICAgIChiYXNlIDE2KQkJTSAmIE4gR21iSAotCQkJCURpZXNlbHN0ciAxOAotCQkJCVJvc2JhY2ggdi5kLkguIEhlc3NlbiA2MTE5MQotCQkJCUdFUk1BTlkKLQotMDAtMEMtRjEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMENGMSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCU1TOiBKRjMtNDIwCi0JCQkJMjExMSBORSAyNXRoIEF2ZW51ZQotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEMtRjIgICAoaGV4KQkJR0FNRVNBIEXDg+KAnExJQ0EKLTAwMENGMiAgICAgKGJhc2UgMTYpCQlHQU1FU0EgRcOD4oCcTElDQQotCQkJCVBvbMODwq1nb25vIEFndXN0aW5vcyBzL24KLQkJCQlQYW1wbG9uYSBOQVZBUlJBIDMxMDEzCi0JCQkJU1BBSU4KLQotMDAtMEMtRjMgICAoaGV4KQkJQ0FMTCBJTUFHRSBTQQotMDAwQ0YzICAgICAoYmFzZSAxNikJCUNBTEwgSU1BR0UgU0EKLQkJCQk4NjcgUm91dGUgSW1wZXJpYWxlCi0JCQkJQkFJTExBUkdVRVMgIDM0NjcwCi0JCQkJRlJBTkNFCi0KLTAwLTBDLUY0ICAgKGhleCkJCUFLQVRTVUtJIEVMRUNUUklDIE1GRy5DTy4sTFRELgotMDAwQ0Y0ICAgICAoYmFzZSAxNikJCUFLQVRTVUtJIEVMRUNUUklDIE1GRy5DTy4sTFRELgotCQkJCTU5My0xLGFvamnCrSBjaG8KLQkJCQlrdXNhdHN1wq0gc2hpIHNoaWdhIDUyNS0wMDQxCi0JCQkJSkFQQU4KLQotMDAtMEMtRjUgICAoaGV4KQkJSW5mb0V4cHJlc3MKLTAwMENGNSAgICAgKGJhc2UgMTYpCQlJbmZvRXhwcmVzcwotCQkJCTE3MCBTLiBXaGlzbWFuIFJvYWQsIFN1aXRlIEIKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wQy1GNiAgIChoZXgpCQlTaXRlY29tIEV1cm9wZSBCVgotMDAwQ0Y2ICAgICAoYmFzZSAxNikJCVNpdGVjb20gRXVyb3BlIEJWCi0JCQkJU2V2aWxsYXdlZyAxMjIKLQkJCQlSb3R0ZXJkYW0gWkggMzA0NyBBTAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBDLUY3ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwQ0Y3ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUmQuCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTBDLUY4ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwQ0Y4ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJMDM2IENDIDEwMQotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wQy1GOSAgIChoZXgpCQlJVFQgRmx5Z3QgQUIKLTAwMENGOSAgICAgKGJhc2UgMTYpCQlJVFQgRmx5Z3QgQUIKLQkJCQlQTyBCb3ggMjA1OAotCQkJCUluZHVzdHJpZ2F0YW4gNTAKLQkJCQlLcmlzdGlhbnN0YWQgIDI5MSAwMgotCQkJCVNXRURFTgotCi0wMC0wQy1GQSAgIChoZXgpCQlEaWdpdGFsIFN5c3RlbXMgQ29ycAotMDAwQ0ZBICAgICAoYmFzZSAxNikJCURpZ2l0YWwgU3lzdGVtcyBDb3JwCi0JCQkJMyBOb3J0aCBNYWluIFN0cmVldAotCQkJCVBPIEJveCAxNTgKLQkJCQlXYWxrZXJzdmlsbGUgTWFyeWxhbmQgMjE3OTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBDLUZCICAgKGhleCkJCUtvcmVhIE5ldHdvcmsgU3lzdGVtcwotMDAwQ0ZCICAgICAoYmFzZSAxNikJCUtvcmVhIE5ldHdvcmsgU3lzdGVtcwotCQkJCTIwNiAgSmFuZ1lvdW5nU2lsIEJsZGcsIDE2ODgtNQotCQkJCVNoaW5pbC1Eb25nLCBUYWVkZW9rLUd1Ci0JCQkJVGFlamVvbiAgMzA2LTIzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wQy1GQyAgIChoZXgpCQlTMmlvIFRlY2hub2xvZ2llcyBDb3JwCi0wMDBDRkMgICAgIChiYXNlIDE2KQkJUzJpbyBUZWNobm9sb2dpZXMgQ29ycAotCQkJCTUwNSBNYXJjaCBSZAotCQkJCVN1aXRlIDEyMAotCQkJCU90dGF3YSBPbnRhcmlvIEsySyAyTTUKLQkJCQlDQU5BREEKLQotMDAtMEMtRkQgICAoaGV4KQkJSHl1bmRhaSBJbWFnZVF1ZXN0IENvLixMdGQuCi0wMDBDRkQgICAgIChiYXNlIDE2KQkJSHl1bmRhaSBJbWFnZVF1ZXN0IENvLixMdGQuCi0JCQkJU2FuIDEzNi0xLCBBbWktcmksIEJ1YmFsLWV1YgotCQkJCUljaG9uLXNpIEt5b3VuZyBraS1kbyA0NjctNzAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBDLUZFICAgKGhleCkJCUdyYW5kIEVsZWN0cm9uaWMgQ28uLCBMdGQKLTAwMENGRSAgICAgKGJhc2UgMTYpCQlHcmFuZCBFbGVjdHJvbmljIENvLiwgTHRkCi0JCQkJUm9vbSAxNzEwLCBCbG9jayBCIEx1Y2t5IHRvd2VyLCBOby4zIERvbgotCQkJCUJlaWppbmcgIDEwMDAyNwotCQkJCUNISU5BCi0KLTAwLTBDLUZGICAgKGhleCkJCU1STy1URUsgTElNSVRFRAotMDAwQ0ZGICAgICAoYmFzZSAxNikJCU1STy1URUsgTElNSVRFRAotCQkJCTE0LCAxU1QgRCBNQUlOIFJPQUQsCi0JCQkJR0FOR0EgTkFHQVIKLQkJCQlCQU5HQUxPUkUgS0FSTkFUQUtBIDU2MDAzMgotCQkJCUlORElBCi0KLTAwLTBELTAwICAgKGhleCkJCVNlYXdheSBOZXR3b3JrcyBJbmMuCi0wMDBEMDAgICAgIChiYXNlIDE2KQkJU2Vhd2F5IE5ldHdvcmtzIEluYy4KLQkJCQkxIENocnlzYWxpcyBXYXkKLQkJCQlPdHRhd2EgT250YXJpbyBLMkcgNlA5Ci0JCQkJQ0FOQURBCi0KLTAwLTBELTAxICAgKGhleCkJCVAmRSBNaWNyb2NvbXB1dGVyIFN5c3RlbXMsIEluYy4KLTAwMEQwMSAgICAgKGJhc2UgMTYpCQlQJkUgTWljcm9jb21wdXRlciBTeXN0ZW1zLCBJbmMuCi0JCQkJNzEwIENvbW1vbndlYWx0aCBBdmUKLQkJCQlCb3N0b24gTWEgMDIyMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTAyICAgKGhleCkJCU5FQyBBY2Nlc3NUZWNobmljYSwgTHRkLgotMDAwRDAyICAgICAoYmFzZSAxNikJCU5FQyBBY2Nlc3NUZWNobmljYSwgTHRkLgotCQkJCTgwMCBTaGltb21hdGEKLQkJCQlLYWtlZ2F3YSBTaGl6dW9rYSA0MzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTBELTAzICAgKGhleCkJCU1hdHJpY3MsIEluYy4KLTAwMEQwMyAgICAgKGJhc2UgMTYpCQlNYXRyaWNzLCBJbmMuCi0JCQkJODg1MCBTdGFuZm9yZCBCbHZkCi0JCQkJU3VpdGUgMzAwMAotCQkJCUNvbHVtYmlhIE1EIDIxMDQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0wNCAgIChoZXgpCQlGb3hib3JvIEVja2FyZHQgRGV2ZWxvcG1lbnQgR21iSAotMDAwRDA0ICAgICAoYmFzZSAxNikJCUZveGJvcm8gRWNrYXJkdCBEZXZlbG9wbWVudCBHbWJICi0JCQkJR2xvY2tlbnN0cmFzc2UgNTIKLQkJCQlTdHV0dGdhcnQgQmFkZW4tV8O8cnR0ZW1iZXJnIDcwMzc2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC0wNSAgIChoZXgpCQljeWJlcm5ldCBtYW51ZmFjdHVyaW5nIGluYy4KLTAwMEQwNSAgICAgKGJhc2UgMTYpCQljeWJlcm5ldCBtYW51ZmFjdHVyaW5nIGluYy4KLQkJCQk1MDAxIEJpcmNoIFN0cmVldAotCQkJCU5ld3BvcnQgQmVhY2ggY2EgOTI2NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTA2ICAgKGhleCkJCUNvbXB1bG9naWMgTGltaXRlZAotMDAwRDA2ICAgICAoYmFzZSAxNikJCUNvbXB1bG9naWMgTGltaXRlZAotCQkJCVVuaXQgVzMsIE1LIFRXTyBCdXNpbmVzcyBDZW50cmUKLQkJCQlCYXJ0b24gUm9hZAotCQkJCVdhdGVyIEVhdG9uIE1pbHRvbiBLZXluZXMgTUsyIDNIVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTA3ICAgKGhleCkJCUNhbHJlYyBBdWRpbyBMdGQKLTAwMEQwNyAgICAgKGJhc2UgMTYpCQlDYWxyZWMgQXVkaW8gTHRkCi0JCQkJTnV0Y2xvdWdoIE1pbGwKLQkJCQlIZWJkZW4gQnJpZGdlIFdlc3QgWW9ya3NoaXJlIEhYNyA4RVoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC0wOCAgIChoZXgpCQlBYm92ZUNhYmxlLCBJbmMuCi0wMDBEMDggICAgIChiYXNlIDE2KQkJQWJvdmVDYWJsZSwgSW5jLgotCQkJCTg0MDMgQ29sZXN2aWxsZSBSb2FkLCAjODI1Ci0JCQkJU2lsdmVyIFNwcmluZyBNRCAyMDkxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMDkgICAoaGV4KQkJWXVlaHVhKFpodWhhaSkgRWxlY3Ryb25pYyBDTy4gTFRECi0wMDBEMDkgICAgIChiYXNlIDE2KQkJWXVlaHVhKFpodWhhaSkgRWxlY3Ryb25pYyBDTy4gTFRECi0JCQkJNFJkIFBpbmdkb25nLE5hbnBpbmcgU2NpZW5jZSAmIFRlY2hub2xvZwotCQkJCVpodWhhaSBHdWFuZ2RvbmcgNTE5MDcwCi0JCQkJQ0hJTkEKLQotMDAtMEQtMEEgICAoaGV4KQkJUHJvamVjdGlvbmRlc2lnbiBhcwotMDAwRDBBICAgICAoYmFzZSAxNikJCVByb2plY3Rpb25kZXNpZ24gYXMKLQkJCQlIYWJvcm52ZWllbiA1MwotCQkJCUdhbWxlIEZyZWRyaWtzdGFkIE4tMTYzMAotCQkJCU5PUldBWQotCi0wMC0wRC0wQiAgIChoZXgpCQlCdWZmYWxvIEluYy4KLTAwMEQwQiAgICAgKGJhc2UgMTYpCQlCdWZmYWxvIEluYy4KLQkJCQlNRUxDTyBISS1URUNIIENFTlRFUiwKLQkJCQlTSElCQVRBIEhPTkRPUkkgNC0xNSBNSU5BTUktS1UsCi0JCQkJTkFHT1lBICA0NTctODUyMAotCQkJCUpBUEFOCi0KLTAwLTBELTBDICAgKGhleCkJCU1ESSBTZWN1cml0eSBTeXN0ZW1zCi0wMDBEMEMgICAgIChiYXNlIDE2KQkJTURJIFNlY3VyaXR5IFN5c3RlbXMKLQkJCQk5NTE4IE5pbnRoIFN0cmVldAotCQkJCVJhbmNobyBDdWNhbW9uZ2EgQ0EgOTE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTBEICAgKGhleCkJCUlUU3VwcG9ydGVkLCBMTEMKLTAwMEQwRCAgICAgKGJhc2UgMTYpCQlJVFN1cHBvcnRlZCwgTExDCi0JCQkJNDk4OSBQZWFjaHRyZWUgUGFya3dheQotCQkJCVNURSAyMDAKLQkJCQlOb3Jjcm9zcyBHQSAzMDA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMEUgICAoaGV4KQkJSW5xbmV0IFN5c3RlbXMsIEluYy4KLTAwMEQwRSAgICAgKGJhc2UgMTYpCQlJbnFuZXQgU3lzdGVtcywgSW5jLgotCQkJCTMyMSBOS0lDIENlbnRlcgotCQkJCTQ4LTg0IEhvbmdldW4tZG9uZywgU2VvZGFlbXVuLWt1Ci0JCQkJU2VvdWwgIDEyMC0xMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtMEYgICAoaGV4KQkJRmlubHV4IEx0ZAotMDAwRDBGICAgICAoYmFzZSAxNikJCUZpbmx1eCBMdGQKLQkJCQlSYWRpb21pZWhlbmthdHUgMwotCQkJCVR1cmt1ICBGSU4tMjAzMjEKLQkJCQlGSU5MQU5ECi0KLTAwLTBELTEwICAgKGhleCkJCUVtYmVkdHJvbmljcyBPeQotMDAwRDEwICAgICAoYmFzZSAxNikJCUVtYmVkdHJvbmljcyBPeQotCQkJCVVua2FyaW5wb2xrdSAyMAotCQkJCUt1b3BpbyAgNzA4MjAKLQkJCQlGSU5MQU5ECi0KLTAwLTBELTExICAgKGhleCkJCURFTlRTUExZIC0gR2VuZGV4Ci0wMDBEMTEgICAgIChiYXNlIDE2KQkJREVOVFNQTFkgLSBHZW5kZXgKLQkJCQk5MDEgV2VzdCBPYWt0b24gU3RyZWV0Ci0JCQkJRGVzIFBsYWluZXMgSUwgNjAwMTgtMTg4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMTIgICAoaGV4KQkJQVhFTEwgQ29ycG9yYXRpb24KLTAwMEQxMiAgICAgKGJhc2UgMTYpCQlBWEVMTCBDb3Jwb3JhdGlvbgotCQkJCUFraWhhYmFyYSBVRFggU291dGggV2luZyAxMEYKLQkJCQk0LTE0LTEgU290b2thbmRhCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDEtODk3MwotCQkJCUpBUEFOCi0KLTAwLTBELTEzICAgKGhleCkJCVdpbGhlbG0gUnV0ZW5iZWNrIEdtYkgmQ28uCi0wMDBEMTMgICAgIChiYXNlIDE2KQkJV2lsaGVsbSBSdXRlbmJlY2sgR21iSCZDby4KLQkJCQlOaWVkZXJ3b3J0aCAxLTEwCi0JCQkJU2NoYWxrc23DvGhsZSBOUlcgNTg1NzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTE0ICAgKGhleCkJCVZ0ZWNoIElubm92YXRpb24gTFAgZGJhIEFkdmFuY2VkIEFtZXJpY2FuIFRlbGVwaG9uZXMKLTAwMEQxNCAgICAgKGJhc2UgMTYpCQlWdGVjaCBJbm5vdmF0aW9uIExQIGRiYSBBZHZhbmNlZCBBbWVyaWNhbiBUZWxlcGhvbmVzCi0JCQkJMjAzLTYwMCBQYXJzaXBwYW55IFJkCi0JCQkJUGFyc2lwcGFueSBOSiAwNzA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMTUgICAoaGV4KQkJVm9pcGFjIHMuci5vLgotMDAwRDE1ICAgICAoYmFzZSAxNikJCVZvaXBhYyBzLnIuby4KLQkJCQlVbC4gSmFua2EgS3JhbGEgMwotCQkJCVRyZW5jaW4gIDkxMSAwMQotCQkJCVNMT1ZBS0lBCi0KLTAwLTBELTE2ICAgKGhleCkJCVVIUyBTeXN0ZW1zIFB0eSBMdGQKLTAwMEQxNiAgICAgKGJhc2UgMTYpCQlVSFMgU3lzdGVtcyBQdHkgTHRkCi0JCQkJUE8gQm94IDYyNjQKLQkJCQlTb3V0aCBTeWRuZXkgQnVzaW5lc3MgSHViCi0JCQkJQWxleGFuZHJpYSBOU1cgMjAxNQotCQkJCUFVU1RSQUxJQQotCi0wMC0wRC0xNyAgIChoZXgpCQlUdXJibyBOZXR3b3JrcyBDby5MdGQKLTAwMEQxNyAgICAgKGJhc2UgMTYpCQlUdXJibyBOZXR3b3JrcyBDby5MdGQKLQkJCQkyRixObyAxMjIzLCBDaHVuZyBDaGVuZyBSZC4KLQkJCQlUYW8gWXVhbiAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0xOCAgIChoZXgpCQlNZWdhLVRyZW5kIEVsZWN0cm9uaWNzIENPLiwgTFRELgotMDAwRDE4ICAgICAoYmFzZSAxNikJCU1lZ2EtVHJlbmQgRWxlY3Ryb25pY3MgQ08uLCBMVEQuCi0JCQkJVG9uZyBGdSBZdSBJbmQuLCBLdSBLZW5nIFZpbGxhZ2UsIEd1YW4gTGFuCi0JCQkJU2hlbmd6aGVuIEd1YW5nIERvbmcgNTE4MTEwCi0JCQkJQ0hJTkEKLQotMDAtMEQtMTkgICAoaGV4KQkJUk9CRSBTaG93IGxpZ2h0aW5nCi0wMDBEMTkgICAgIChiYXNlIDE2KQkJUk9CRSBTaG93IGxpZ2h0aW5nCi0JCQkJSGF6b3ZpY2UgMjA5MAotCQkJCVJvem5vdiBwb2QgUmFkaG9zdGVtICA3NTYgNjEKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0wRC0xQSAgIChoZXgpCQlNdXN0ZWsgU3lzdGVtIEluYy4KLTAwMEQxQSAgICAgKGJhc2UgMTYpCQlNdXN0ZWsgU3lzdGVtIEluYy4KLQkJCQlOby4gMjUsIFImRCBSb2FkLCBTY2llbmNlLUJhc2VkIEluZHVzdHJpCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtMUIgICAoaGV4KQkJS3lvdG8gRWxlY3Ryb25pY3MgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLTAwMEQxQiAgICAgKGJhc2UgMTYpCQlLeW90byBFbGVjdHJvbmljcyBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTU2LTIsIE5pbm9kYW4tY2hvLCBTaGluZGVuLAotCQkJCUtpc3Nob2luLCBNaW5hbWkta3UsCi0JCQkJS3lvdG8tQ2l0eSBLeW90byBQcmVmZWN0dXJlIDYwMS04MzE3Ci0JCQkJSkFQQU4KLQotMDAtMEQtMUMgICAoaGV4KQkJQW1lc3lzIERlZmVuc2UKLTAwMEQxQyAgICAgKGJhc2UgMTYpCQlBbWVzeXMgRGVmZW5zZQotCQkJCTEwMzAgQXYgZGUgbGEgTEFVWklFUkUKLQkJCQlaQUMgZGUgUGljaGF1cnkgSUkgTGVzIE1pbGxlcyBCUCAyMCAxNDAKLQkJCQlBSVggZW4gUFJPVkVOQ0UgQ2VkZXggMDMgMTM3OTQKLQkJCQlGUkFOQ0UKLQotMDAtMEQtMUQgICAoaGV4KQkJSElHSC1URUsgSEFSTkVTUyBFTlQuIENPLiwgTFRELgotMDAwRDFEICAgICAoYmFzZSAxNikJCUhJR0gtVEVLIEhBUk5FU1MgRU5ULiBDTy4sIExURC4KLQkJCQk0Ri02LCBObzE4LCBQdS1UaW5nIFJkLiBIc2luY2h1LCBUYWl3YW4KLQkJCQk0RiwgTm8xNiwgTGFuZTUwLCBTZWMzLCBOYW4tS2FuZyBSZCwgTmFuCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0xRSAgIChoZXgpCQlDb250cm9sIFRlY2huaXF1ZXMKLTAwMEQxRSAgICAgKGJhc2UgMTYpCQlDb250cm9sIFRlY2huaXF1ZXMKLQkJCQlUaGUgR3JvCi0JCQkJUG9vbCBSb2FkCi0JCQkJTmV3dG93biBQb3d5cyBTWTE2IDNCRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTFGICAgKGhleCkJCUFWIERpZ2l0YWwKLTAwMEQxRiAgICAgKGJhc2UgMTYpCQlBViBEaWdpdGFsCi0JCQkJUG90dGVuZG9yZmVyIFN0cmFzc2UgMjUtMjcvNC8xLzEKLQkJCQlXaWVuICAxMTIwCi0JCQkJQVVTVFJJQQotCi0wMC0wRC0yMCAgIChoZXgpCQlBU0FISUtBU0VJIFRFQ0hOT1NZU1RFTSBDTy4sTFRELgotMDAwRDIwICAgICAoYmFzZSAxNikJCUFTQUhJS0FTRUkgVEVDSE5PU1lTVEVNIENPLixMVEQuCi0JCQkJS2FuZGEgSmluYm9jaG8gMS0xMDUKLQkJCQkyMy03LE5pc2hpc2hpbmp1a3UgMS1jaG9tZQotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTgxMDEKLQkJCQlKQVBBTgotCi0wMC0wRC0yMSAgIChoZXgpCQlXSVNDT1JFIEluYy4KLTAwMEQyMSAgICAgKGJhc2UgMTYpCQlXSVNDT1JFIEluYy4KLQkJCQk2RiwgTm8uIDE4MCwgU2VjLiAyLCBEdWVuaHVhIFMuIFJkLAotCQkJCVRhaXBlaSAgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0yMiAgIChoZXgpCQlVbml0cm9uaWNzIExURAotMDAwRDIyICAgICAoYmFzZSAxNikJCVVuaXRyb25pY3MgTFRECi0JCQkJVW5pdHJvbmljcyBCdWlsZGluZwotCQkJCUFpcnBvcnQgQ2l0eSwgUC5PLkIgMzAwCi0JCQkJQmVuIEd1cmlvbiBBaXJwb3J0ICA3MDEwMAotCQkJCUlTUkFFTAotCi0wMC0wRC0yMyAgIChoZXgpCQlTbWFydCBTb2x1dGlvbiwgSW5jCi0wMDBEMjMgICAgIChiYXNlIDE2KQkJU21hcnQgU29sdXRpb24sIEluYwotCQkJCTQ2NSBXZXN0IExhd25kYWxlICNCCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTI0ICAgKGhleCkJCVNFTlRFQyBFJkUgQ08uLCBMVEQuCi0wMDBEMjQgICAgIChiYXNlIDE2KQkJU0VOVEVDIEUmRSBDTy4sIExURC4KLQkJCQlOby4gMzIuIEdvbmc1IFJkLgotCQkJCUx1bmd0YW4gVGFveXVhbiAzMjUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTI1ICAgKGhleCkJCVNBTkRFTiBDT1JQT1JBVElPTgotMDAwRDI1ICAgICAoYmFzZSAxNikJCVNBTkRFTiBDT1JQT1JBVElPTgotCQkJCTIwIEtvdG9idWtpLWNobwotCQkJCUlzZXNha2ktc2hpIEd1bm1hIDM3Mi04NTAyCi0JCQkJSkFQQU4KLQotMDAtMEQtMjYgICAoaGV4KQkJUHJpbWFncmFwaGljcyBMaW1pdGVkCi0wMDBEMjYgICAgIChiYXNlIDE2KQkJUHJpbWFncmFwaGljcyBMaW1pdGVkCi0JCQkJQ2FtYnJpZGdlIEhvdXNlLCBOby4yIEZvY3VzIEZvdXIKLQkJCQlGb3VydGggQXZlbnVlCi0JCQkJTGV0Y2h3b3J0aCBHYXJkZW4gQ2l0eSBIZXJ0Zm9yZHNoaXJlIFNHNiAyVFUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC0yNyAgIChoZXgpCQlNSUNST1BMRVggUHJpbnR3YXJlIEFHCi0wMDBEMjcgICAgIChiYXNlIDE2KQkJTUlDUk9QTEVYIFByaW50d2FyZSBBRwotCQkJCVBhbnplcnN0cmHDg8W4ZSA1Ci0JCQkJVmFyZWwgTmllZGVyc2FjaHNlbiAyNjMxNgotCQkJCUdFUk1BTlkKLQotMDAtMEQtMjggICAoaGV4KQkJQ2lzY28KLTAwMEQyOCAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0yOSAgIChoZXgpCQlDaXNjbwotMDAwRDI5ICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTJBICAgKGhleCkJCVNjYW5tYXRpYyBBUwotMDAwRDJBICAgICAoYmFzZSAxNikJCVNjYW5tYXRpYyBBUwotCQkJCUtpbHN1bmQKLQkJCQlTdGF1YsO4ICA0OTIwCi0JCQkJTk9SV0FZCi0KLTAwLTBELTJCICAgKGhleCkJCVJhY2FsIEluc3RydW1lbnRzCi0wMDBEMkIgICAgIChiYXNlIDE2KQkJUmFjYWwgSW5zdHJ1bWVudHMKLQkJCQk0IEdvb2R5ZWFyIFN0cmVldAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMkMgICAoaGV4KQkJUGF0YXBzY28gRGVzaWducyBMdGQKLTAwMEQyQyAgICAgKGJhc2UgMTYpCQlQYXRhcHNjbyBEZXNpZ25zIEx0ZAotCQkJCVRoZSBQYXNzZmllbGQgT2FrCi0JCQkJUGFzc2ZpZWxkCi0JCQkJTnIgTGlwaG9vayBIYW1wc2hpcmUgR1UzMCA3UkwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC0yRCAgIChoZXgpCQlOQ1QgRGV1dHNjaGxhbmQgR21iSAotMDAwRDJEICAgICAoYmFzZSAxNikJCU5DVCBEZXV0c2NobGFuZCBHbWJICi0JCQkJV2lsZGVuYnJ1Y2hzdHIuIDE1Ci0JCQkJSmVuYSBUaMO8cmluZ2VuIDA3NzQ1Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC0yRSAgIChoZXgpCQlNYXRzdXNoaXRhIEF2aW9uaWNzIFN5c3RlbXMgQ29ycG9yYXRpb24KLTAwMEQyRSAgICAgKGJhc2UgMTYpCQlNYXRzdXNoaXRhIEF2aW9uaWNzIFN5c3RlbXMgQ29ycG9yYXRpb24KLQkJCQkyNjIwMCBFbnRlcnByaXNlIFdheQotCQkJCUxha2UgRm9yZXN0IENBIDkyNjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0yRiAgIChoZXgpCQlBSU4gQ29tbS5UZWNoLkNvLiwgTFRECi0wMDBEMkYgICAgIChiYXNlIDE2KQkJQUlOIENvbW0uVGVjaC5Dby4sIExURAotCQkJCTRGLCBOby43NiwgU2VjMiBNaW50enUgUmQKLQkJCQlKdW5nLUxpIENpdHkgIDMyMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtMzAgICAoaGV4KQkJSWNlRnlyZSBTZW1pY29uZHVjdG9yCi0wMDBEMzAgICAgIChiYXNlIDE2KQkJSWNlRnlyZSBTZW1pY29uZHVjdG9yCi0JCQkJU3VpdGUgMzAwCi0JCQkJNDExIExlZ2dldHQgRHJpdmUKLQkJCQlLYW5hdGEgT250YXJpbyBLMksgM0M5Ci0JCQkJQ0FOQURBCi0KLTAwLTBELTMxICAgKGhleCkJCUNvbXBlbGxlbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBEMzEgICAgIChiYXNlIDE2KQkJQ29tcGVsbGVudCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk3NjI1IFNtZXRhbmEgTGFuZQotCQkJCUVkZW4gUHJhaXJpZSBNaW5uZXNvdGEgNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTMyICAgKGhleCkJCURpc3BlbnNlU291cmNlLCBJbmMuCi0wMDBEMzIgICAgIChiYXNlIDE2KQkJRGlzcGVuc2VTb3VyY2UsIEluYy4KLQkJCQkyOTgwMSBTYW50YSBNYXJnYXJpdGEgUGFya3dheQotCQkJCVJhbmNobyBTYW50YSBNYXJnYXJpdGEgQ0EgOTI2ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTMzICAgKGhleCkJCVByZWRpd2F2ZSBDb3JwLgotMDAwRDMzICAgICAoYmFzZSAxNikJCVByZWRpd2F2ZSBDb3JwLgotCQkJCTQ4NDMxIE1pbG1vbnQgRHJpdmUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0zNCAgIChoZXgpCQlTaGVsbCBJbnRlcm5hdGlvbmFsIEV4cGxvcmF0aW9uIGFuZCBQcm9kdWN0aW9uLCBJbmMuCi0wMDBEMzQgICAgIChiYXNlIDE2KQkJU2hlbGwgSW50ZXJuYXRpb25hbCBFeHBsb3JhdGlvbiBhbmQgUHJvZHVjdGlvbiwgSW5jLgotCQkJCUJUQy1HYXNtZXIKLQkJCQlQTyBCb3ggNDgxCi0JCQkJSG91c3RvbiBUWCA3NzAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtMzUgICAoaGV4KQkJUEFDIEludGVybmF0aW9uYWwgTHRkCi0wMDBEMzUgICAgIChiYXNlIDE2KQkJUEFDIEludGVybmF0aW9uYWwgTHRkCi0JCQkJMSBQYXJrIEdhdGUgQ2xvc2UKLQkJCQlCcmVkYnVyeQotCQkJCVN0b2NrcG9ydCBDaGVzaGlyZSBTSzYgMlNaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtMzYgICAoaGV4KQkJV3UgSGFuIFJvdXRvbiBFbGVjdHJvbmljIENvLiwgTHRkCi0wMDBEMzYgICAgIChiYXNlIDE2KQkJV3UgSGFuIFJvdXRvbiBFbGVjdHJvbmljIENvLiwgTHRkCi0JCQkJTWlhbyBTaGFuIERpc3RyaWN0LCBFYXN0IExha2UgSGktVGVjaAotCQkJCURldmVsb3BtZW50IFBhcmsKLQkJCQlXdWhhbiBIdWJlaSA0MzAyMjMKLQkJCQlDSElOQQotCi0wMC0wRC0zNyAgIChoZXgpCQlXSVBMVUcKLTAwMEQzNyAgICAgKGJhc2UgMTYpCQlXSVBMVUcKLQkJCQlSVUEgIERSLiBBR09TVElOSE8gR09VTEFPCi0JCQkJQkFJUlJPOiBDT1JSRUFTCi0JCQkJUEVUUk9QT0xJUyBSSU8gSkFORUlSTyAyNTczMDA1MAotCQkJCUJSQVpJTAotCi0wMC0wRC0zOCAgIChoZXgpCQlOSVNTSU4gSU5DLgotMDAwRDM4ICAgICAoYmFzZSAxNikJCU5JU1NJTiBJTkMuCi0JCQkJMTAtNyBLQU1FSS1DSE8KLQkJCQlUQUtBUkFaVUtBIEhZT0dPIDY2NS0wMDQ3Ci0JCQkJSkFQQU4KLQotMDAtMEQtMzkgICAoaGV4KQkJTmV0d29yayBFbGVjdHJvbmljcwotMDAwRDM5ICAgICAoYmFzZSAxNikJCU5ldHdvcmsgRWxlY3Ryb25pY3MKLQkJCQlCb3ggMTAyMAotCQkJCVNhbmRlZmpvcmQgU2FuZGVmam9yZCBOMzIwNAotCQkJCU5PUldBWQotCi0wMC0wRC0zQSAgIChoZXgpCQlNaWNyb3NvZnQgQ29ycC4KLTAwMEQzQSAgICAgKGJhc2UgMTYpCQlNaWNyb3NvZnQgQ29ycC4KLQkJCQlPbmUgTWljcm9zb2Z0IFdheQotCQkJCVJlZG1vbmQgV2EuIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0zQiAgIChoZXgpCQlNaWNyb2VsZWN0cm9uaWNzIFRlY2hub2xvZ3kgSW5jLgotMDAwRDNCICAgICAoYmFzZSAxNikJCU1pY3JvZWxlY3Ryb25pY3MgVGVjaG5vbG9neSBJbmMuCi0JCQkJTm8xLCBJbm5vdmF0aW9uIFJvYWQgSUkKLQkJCQlIc2luY2h1IFNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0zQyAgIChoZXgpCQlpLlRlY2ggRHluYW1pYyBMdGQKLTAwMEQzQyAgICAgKGJhc2UgMTYpCQlpLlRlY2ggRHluYW1pYyBMdGQKLQkJCQlSb29tIDExMTIsIE1ldHJvcGxhemEgVG93ZXIgMiwgMjIzIEhpbmcKLQkJCQk4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMEQtM0QgICAoaGV4KQkJSGFtbWVyaGVhZCBTeXN0ZW1zLCBJbmMuCi0wMDBEM0QgICAgIChiYXNlIDE2KQkJSGFtbWVyaGVhZCBTeXN0ZW1zLCBJbmMuCi0JCQkJNjQwIENseWRlIENvdXJ0Ci0JCQkJTW91bnRhaW4gVmlldyBDYWxpZm9ybmlhIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC0zRSAgIChoZXgpCQlBUExVWCBDb21tdW5pY2F0aW9ucyBMdGQuCi0wMDBEM0UgICAgIChiYXNlIDE2KQkJQVBMVVggQ29tbXVuaWNhdGlvbnMgTHRkLgotCQkJCTEwRiwgTm8uIDE2NiwgRGFoLVllaCBSZC4sIFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC0zRiAgIChoZXgpCQlWVEkgSW5zdHJ1bWVudHMgQ29ycG9yYXRpb24KLTAwMEQzRiAgICAgKGJhc2UgMTYpCQlWVEkgSW5zdHJ1bWVudHMgQ29ycG9yYXRpb24KLQkJCQk1NDI1IFdhcm5lciBSb2FkLCBTdWl0ZSAxMwotCQkJCVZhbGxleSBWaWV3IE9IIDQ0MTI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC00MCAgIChoZXgpCQlWZXJpbnQgTG9yb25peCBWaWRlbyBTb2x1dGlvbnMKLTAwMEQ0MCAgICAgKGJhc2UgMTYpCQlWZXJpbnQgTG9yb25peCBWaWRlbyBTb2x1dGlvbnMKLQkJCQkxMjUyNiBIaWdoIEJsdWZmIERyLiAjMTcwCi0JCQkJU2FuIERJZWdvIENBIDkyMTMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC00MSAgIChoZXgpCQlTaWVtZW5zIEFHIElDTSBNUCBVQyBSRCBJVCBLTEYxCi0wMDBENDEgICAgIChiYXNlIDE2KQkJU2llbWVucyBBRyBJQ00gTVAgVUMgUkQgSVQgS0xGMQotCQkJCVN1ZWRzdHJhc3NlIDkKLQkJCQlLYW1wLUxpbnRmb3J0IE5SVyA0NzQ3NQotCQkJCUdFUk1BTlkKLQotMDAtMEQtNDIgICAoaGV4KQkJTmV3YmVzdCBEZXZlbG9wbWVudCBMaW1pdGVkCi0wMDBENDIgICAgIChiYXNlIDE2KQkJTmV3YmVzdCBEZXZlbG9wbWVudCBMaW1pdGVkCi0JCQkJMy9GICBVbml0IDMxMS0zMTIKLQkJCQlOby4xIFNjaWVuY2UgUGFyayBFYXN0IEF2ZW51ZQotCQkJCVNoYXRpbiAgTlQgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBELTQzICAgKGhleCkJCURSUyBUYWN0aWNhbCBTeXN0ZW1zIEluYy4KLTAwMEQ0MyAgICAgKGJhc2UgMTYpCQlEUlMgVGFjdGljYWwgU3lzdGVtcyBJbmMuCi0JCQkJMzUyMCBVLlMuIEhpZ2h3YXkgMQotCQkJCVBhbG0gQmF5IEZMIDMyOTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC00NCAgIChoZXgpCQlBdWRpbyBCVSAtIExvZ2l0ZWNoCi0wMDBENDQgICAgIChiYXNlIDE2KQkJQXVkaW8gQlUgLSBMb2dpdGVjaAotCQkJCTE0OTkgU0UgVGVjaCBDZW50ZXIgUGxhY2UKLQkJCQlTdWl0ZSAzNTAKLQkJCQlWYW5jb3V2ZXIgV0EgOTg2ODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTQ1ICAgKGhleCkJCVRvdHRvcmkgU0FOWU8gRWxlY3RyaWMgQ28uLCBMdGQuCi0wMDBENDUgICAgIChiYXNlIDE2KQkJVG90dG9yaSBTQU5ZTyBFbGVjdHJpYyBDby4sIEx0ZC4KLQkJCQkzLTIwMSwgTWluYW1pIFlvc2hpa2F0YQotCQkJCVRvdHRvcmkgQ2l0eSBUb3R0b3JpIDY4MC04NjM0Ci0JCQkJSkFQQU4KLQotMDAtMEQtNDYgICAoaGV4KQkJUGFya2VyIFNTRCBEcml2ZXMKLTAwMEQ0NiAgICAgKGJhc2UgMTYpCQlQYXJrZXIgU1NEIERyaXZlcwotCQkJCTkyMjUgRm9yc3l0aCBQYXJrIERyaXZlCi0JCQkJQ2hhcmxvdHRlIE5DIDI4MjczLTM4ODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTQ3ICAgKGhleCkJCUNvbGxleAotMDAwRDQ3ICAgICAoYmFzZSAxNikJCUNvbGxleAotCQkJCTEzRi0zLE5vLjE0MixTZWMuMSxIdWFtZWkgVyxTdC4sU2hpIENoaXUKLQkJCQlUYWljaHVuZyAgNDAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC00OCAgIChoZXgpCQlBRVdJTiBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDBENDggICAgIChiYXNlIDE2KQkJQUVXSU4gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCTdGLCBOby4gMiwgTGFuZSA0NywgU2VjLiAzLCBOYW4tR2FuZyBSZC4KLQkJCQlUQUlQRUkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtNDkgICAoaGV4KQkJVHJpdG9uIFN5c3RlbXMgb2YgRGVsYXdhcmUsIEluYy4KLTAwMEQ0OSAgICAgKGJhc2UgMTYpCQlUcml0b24gU3lzdGVtcyBvZiBEZWxhd2FyZSwgSW5jLgotCQkJCTUyMiBFLiBSYWlscm9hZCBTdC4KLQkJCQlMb25nIEJlYWNoIE1TIDM5NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC00QSAgIChoZXgpCQlTdGVhZyBFVEEtT3B0aWsKLTAwMEQ0QSAgICAgKGJhc2UgMTYpCQlTdGVhZyBFVEEtT3B0aWsKLQkJCQlCb3JzaWdzdHJhc3NlIDc4Li04MAotCQkJCUhlaW5zYmVyZyAgNTI1MjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTRCICAgKGhleCkJCVJva3UsIExMQwotMDAwRDRCICAgICAoYmFzZSAxNikJCVJva3UsIExMQwotCQkJCTM5OSBTaGVybWFuIEF2ZS4gIzEyCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC00QyAgIChoZXgpCQlPdXRsaW5lIEVsZWN0cm9uaWNzIEx0ZC4KLTAwMEQ0QyAgICAgKGJhc2UgMTYpCQlPdXRsaW5lIEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQk3L0YgQmVuc29uIFRvd2VyCi0JCQkJNzQgSHVuZyBUbyBSb2FkCi0JCQkJS3d1biBUb25nIEtvd2xvb24gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBELTREICAgKGhleCkJCU5pbmVsYW5lcwotMDAwRDREICAgICAoYmFzZSAxNikJCU5pbmVsYW5lcwotCQkJCSM0MDUgNEYgRGlwbG9tYXRpYyBDZW50ZXIKLQkJCQlTZW9jaG8tZ3UsIFNlb2Noby1kb25nCi0JCQkJU2VvdWwgIDEzNzYtMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC00RSAgIChoZXgpCQlORFIgQ28uLExURC4KLTAwMEQ0RSAgICAgKGJhc2UgMTYpCQlORFIgQ28uLExURC4KLQkJCQlTdW1pdG9tbyBzZWltZWkgbWluYXRvbWFjaGkgTVQgQkxERwotCQkJCTEtMTgtMiBNaW5hbWlob3JpZSBOaXNoaS1rdQotCQkJCU9zYWsgS2lua2kgNTUwLTAwMTUKLQkJCQlKQVBBTgotCi0wMC0wRC00RiAgIChoZXgpCQlLZW53b29kIENvcnBvcmF0aW9uCi0wMDBENEYgICAgIChiYXNlIDE2KQkJS2Vud29vZCBDb3Jwb3JhdGlvbgotCQkJCTI5NjctMywgSXNoaWthd2EtbWFjaGkKLQkJCQlIYWNoaW9qaS1zaGkgVG9reW8gMTkyLTg1MjUKLQkJCQlKQVBBTgotCi0wMC0wRC01MCAgIChoZXgpCQlHYWxhemFyIE5ldHdvcmtzCi0wMDBENTAgICAgIChiYXNlIDE2KQkJR2FsYXphciBOZXR3b3JrcwotCQkJCTM1IEZpdHpnZXJhbGQgQXZlCi0JCQkJT3R0YXdhIE9OIEsySCAxRTYKLQkJCQlDQU5BREEKLQotMDAtMEQtNTEgICAoaGV4KQkJRElWUiBTeXN0ZW1zLCBJbmMuCi0wMDBENTEgICAgIChiYXNlIDE2KQkJRElWUiBTeXN0ZW1zLCBJbmMuCi0JCQkJMjE2MSBTYXR1cm4gQ3QuCi0JCQkJQmFrZXJzZmllbGQgQ0EgOTMzMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTUyICAgKGhleCkJCUNvbWFydCBzeXN0ZW0KLTAwMEQ1MiAgICAgKGJhc2UgMTYpCQlDb21hcnQgc3lzdGVtCi0JCQkJTm8uIDIxMSwgQWNlIFRlY2hubyBUb3dlciBJSUksIDE5Ny00OAotCQkJCUd1LXJvIERvbmcsIEd1LXJvIEd1LCBTZW91bCwgS29yZWEKLQkJCQlTZW91bCAgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC01MyAgIChoZXgpCQlCZWlqaW5nIDV3IENvbW11bmljYXRpb24gQ29ycC4KLTAwMEQ1MyAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIDV3IENvbW11bmljYXRpb24gQ29ycC4KLQkJCQlOTy40LFpob25nLUd1YW4tQ3VuIFNvdXRoIDQgc3RyZWV0LAotCQkJCUJlaWppbmcgIDEwMDA4MAotCQkJCUNISU5BCi0KLTAwLTBELTU0ICAgKGhleCkJCTNDb20gTHRkCi0wMDBENTQgICAgIChiYXNlIDE2KQkJM0NvbSBMdGQKLQkJCQlQZW9wbGVidWlsZGluZyAyCi0JCQkJUGVvcGxlYnVpbGRpbmcgRXN0YXRlLCBNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMgSFAyIDROVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTU1ICAgKGhleCkJCVNBTllDT00gVGVjaG5vbG9neSBDby4sTHRkCi0wMDBENTUgICAgIChiYXNlIDE2KQkJU0FOWUNPTSBUZWNobm9sb2d5IENvLixMdGQKLQkJCQk2RixCZWlqaW5nIENhcGl0YWwgVGltZXMgU3F1YXJlLDg4IyBYaWNoCi0JCQkJQmVpamluZyAgMTAwMDMxCi0JCQkJQ0hJTkEKLQotMDAtMEQtNTYgICAoaGV4KQkJRGVsbCBQQ0JBIFRlc3QKLTAwMEQ1NiAgICAgKGJhc2UgMTYpCQlEZWxsIFBDQkEgVGVzdAotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJSNSBNUy04NTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNTcgICAoaGV4KQkJRnVqaXRzdSBJLU5ldHdvcmsgU3lzdGVtcyBMaW1pdGVkLgotMDAwRDU3ICAgICAoYmFzZSAxNikJCUZ1aml0c3UgSS1OZXR3b3JrIFN5c3RlbXMgTGltaXRlZC4KLQkJCQkxLTQwMyBrb3N1Z2ktY2hvIG5ha2FoYXJhLWt1Ci0JCQkJa2F3YXNha2kga2FuYWdhd2EgMjExLTAwNjMKLQkJCQlKQVBBTgotCi0wMC0wRC01OCAgIChoZXgpCQlQUklWQVRFCi0wMDBENTggICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBELTU5ICAgKGhleCkJCUFtaXR5IFN5c3RlbXMsIEluYy4KLTAwMEQ1OSAgICAgKGJhc2UgMTYpCQlBbWl0eSBTeXN0ZW1zLCBJbmMuCi0JCQkJODg4IFRhc21hbiBEcml2ZQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC01QSAgIChoZXgpCQlUaWVzc2UgU3BBCi0wMDBENUEgICAgIChiYXNlIDE2KQkJVGllc3NlIFNwQQotCQkJCVZpYSBBc3RpCi0JCQkJWm9uYSBJbmR1c3RyaWFsIFNhbiBCZXJuYXJkbwotCQkJCUl2cmVhIFRPIDEwMDE1Ci0JCQkJSVRBTFkKLQotMDAtMEQtNUIgICAoaGV4KQkJU21hcnQgRW1waXJlIEludmVzdG1lbnRzIExpbWl0ZWQKLTAwMEQ1QiAgICAgKGJhc2UgMTYpCQlTbWFydCBFbXBpcmUgSW52ZXN0bWVudHMgTGltaXRlZAotCQkJCVN1aXRlIDIwMDEtMjAwNixMZXZlbCAyMCBMYW5kbWFyayBOb3J0aAotCQkJCVhpbiBKaWUgSG9uZyBLb25nIDAwODUyCi0JCQkJQ0hJTkEKLQotMDAtMEQtNUMgICAoaGV4KQkJUm9iZXJ0IEJvc2NoIEdtYkgsIFZULUFUTU8KLTAwMEQ1QyAgICAgKGJhc2UgMTYpCQlSb2JlcnQgQm9zY2ggR21iSCwgVlQtQVRNTwotCQkJCVdlcm5lcnN0cmFzc2UgNTEKLQkJCQlTdHV0dGdhcnQgQlcgNzA0NjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTVEICAgKGhleCkJCVJhcml0YW4gQ29tcHV0ZXIsIEluYwotMDAwRDVEICAgICAoYmFzZSAxNikJCVJhcml0YW4gQ29tcHV0ZXIsIEluYwotCQkJCTQwMCBDb3R0b250YWlsIExhbmUKLQkJCQlTb21lcnNldCBOSiAwODg3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNUUgICAoaGV4KQkJTkVDIFBlcnNvbmFsIFByb2R1Y3RzCi0wMDBENUUgICAgIChiYXNlIDE2KQkJTkVDIFBlcnNvbmFsIFByb2R1Y3RzCi0JCQkJNi04MCwgU2hpbW9oYW5hemF3YSAyLUNob21lCi0JCQkJWW9uZXphd2Etc2hpIFlhbWFnYXRhIDk5Mi04NTIwCi0JCQkJSkFQQU4KLQotMDAtMEQtNUYgICAoaGV4KQkJTWluZHMgSW5jCi0wMDBENUYgICAgIChiYXNlIDE2KQkJTWluZHMgSW5jCi0JCQkJMTkxOSBib3VsIGxpb25lbCBiZXJ0cmFuZAotCQkJCSMyMDIKLQkJCQlCb2lzYnJpYW5kIFF1ZWJlYyBKN0ggMU44Ci0JCQkJQ0FOQURBCi0KLTAwLTBELTYwICAgKGhleCkJCUlCTSBDb3JwCi0wMDBENjAgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTYxICAgKGhleCkJCUdpZ2EtQnl0ZSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwRDYxICAgICAoYmFzZSAxNikJCUdpZ2EtQnl0ZSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vIDYsIEJhdSBDaGlhbmcgUm9hZCwgSHNpbi1UaWVuCi0JCQkJVGFpcGVpIEhzaWVuICA5OTk5Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC02MiAgIChoZXgpCQlGdW5rd2VyayBEYWJlbmRvcmYgR21iSAotMDAwRDYyICAgICAoYmFzZSAxNikJCUZ1bmt3ZXJrIERhYmVuZG9yZiBHbWJICi0JCQkJTWFlcmtpc2NoZSBTdHJhc3NlCi0JCQkJRGFiZW5kb3JmIEJyYW5kZW5idXJnIDE1ODA2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC02MyAgIChoZXgpCQlERU5UIEluc3RydW1lbnRzLCBJbmMuCi0wMDBENjMgICAgIChiYXNlIDE2KQkJREVOVCBJbnN0cnVtZW50cywgSW5jLgotCQkJCTY0IE5XIEZyYW5rbGluIEF2ZQotCQkJCUJlbmQgT1IgOTc3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTY0ICAgKGhleCkJCUNPTUFHIEhhbmRlbHMgQUcKLTAwMEQ2NCAgICAgKGJhc2UgMTYpCQlDT01BRyBIYW5kZWxzIEFHCi0JCQkJWmlsbGVuaGFyZHRzdHIuNDEKLQkJCQlHb2VwcGluZ2VuIEJhZGVuLVfDvHJ0dGVtYmVyZyA3MzAzNwotCQkJCUdFUk1BTlkKLQotMDAtMEQtNjUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRDY1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNjYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRDY2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNjcgICAoaGV4KQkJQmVsQWlyIE5ldHdvcmtzIEluYy4KLTAwMEQ2NyAgICAgKGJhc2UgMTYpCQlCZWxBaXIgTmV0d29ya3MgSW5jLgotCQkJCTYwMyBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDJNNQotCQkJCUNBTkFEQQotCi0wMC0wRC02OCAgIChoZXgpCQlWaW5jaSBTeXN0ZW1zLCBJbmMuCi0wMDBENjggICAgIChiYXNlIDE2KQkJVmluY2kgU3lzdGVtcywgSW5jLgotCQkJCTgzMzAgQm9vbmUgQm91bGV2YXJkCi0JCQkJU3VpdGUgNTAwCi0JCQkJVmllbm5hIFZBIDIyMTgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC02OSAgIChoZXgpCQlUTVQmRCBDb3Jwb3JhdGlvbgotMDAwRDY5ICAgICAoYmFzZSAxNikJCVRNVCZEIENvcnBvcmF0aW9uCi0JCQkJMi0yNC0xCi0JCQkJSGFydW1pLWNobwotCQkJCUZ1Y2h1LXNpIFRva3lvIDE4My0wMDU3Ci0JCQkJSkFQQU4KLQotMDAtMEQtNkEgICAoaGV4KQkJUmVkd29vZCBUZWNobm9sb2dpZXMgTFRECi0wMDBENkEgICAgIChiYXNlIDE2KQkJUmVkd29vZCBUZWNobm9sb2dpZXMgTFRECi0JCQkJQW1iZXIgSG91c2UKLQkJCQlNYXJrZXQgU3RyZWV0Ci0JCQkJQnJhY2tuZWxsIEJlcmtzaGlyZSBSRzEyIDFKQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTZCICAgKGhleCkJCU1pdGEtVGVrbmlrIEEvUwotMDAwRDZCICAgICAoYmFzZSAxNikJCU1pdGEtVGVrbmlrIEEvUwotCQkJCUhhYW5kdmFlcmtlcnZlaiAxCi0JCQkJUm9lZGthZXJzYnJvIERLIERLLTg4NDAKLQkJCQlERU5NQVJLCi0KLTAwLTBELTZDICAgKGhleCkJCU0tQXVkaW8KLTAwMEQ2QyAgICAgKGJhc2UgMTYpCQlNLUF1ZGlvCi0JCQkJNDUgRSBTVCBKb3NlcGggU3QuCi0JCQkJQXJjYWRpYSBDQSA5MTAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNkQgICAoaGV4KQkJSy1UZWNoIERldmljZXMgQ29ycC4KLTAwMEQ2RCAgICAgKGJhc2UgMTYpCQlLLVRlY2ggRGV2aWNlcyBDb3JwLgotCQkJCTE0MDE2LTMwCi0JCQkJbmFrYW1pbm93YSBtaW5vd2FtYWNoaSBrYW1paW5hIG5hZ2FubyAzOTktNDYwMQotCQkJCUpBUEFOCi0KLTAwLTBELTZFICAgKGhleCkJCUstUGF0ZW50cyBPeQotMDAwRDZFICAgICAoYmFzZSAxNikJCUstUGF0ZW50cyBPeQotCQkJCVAuTy4gQm94IDc3Ci0JCQkJRWxhbm5vbnRpZSA1Ci0JCQkJVkFOVEFBIEZJIDAxNTExCi0JCQkJRklOTEFORAotCi0wMC0wRC02RiAgIChoZXgpCQlFbWJlciBDb3Jwb3JhdGlvbgotMDAwRDZGICAgICAoYmFzZSAxNikJCUVtYmVyIENvcnBvcmF0aW9uCi0JCQkJMzQzIENvbmdyZXNzIFN0Ci0JCQkJNXRoIEZsb29yCi0JCQkJQm9zdG9uIE1hIDAyMjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC03MCAgIChoZXgpCQlEYXRhbWF4IENvcnBvcmF0aW9uCi0wMDBENzAgICAgIChiYXNlIDE2KQkJRGF0YW1heCBDb3Jwb3JhdGlvbgotCQkJCTQ1MDEgUGFya3dheSBDb21tZXJjZSBCbHZkCi0JCQkJT3JsYW5kbyBGTCAzMjgwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNzEgICAoaGV4KQkJYm9jYSBzeXN0ZW1zCi0wMDBENzEgICAgIChiYXNlIDE2KQkJYm9jYSBzeXN0ZW1zCi0JCQkJMTA2NSBzLiByb2dlcnMgY2lyY2xlCi0JCQkJYm9jYSByYXRvbiBmbCAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNzIgICAoaGV4KQkJMldpcmUsIEluYwotMDAwRDcyICAgICAoYmFzZSAxNikJCTJXaXJlLCBJbmMKLQkJCQkxNzA0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC03MyAgIChoZXgpCQlUZWNobmljYWwgU3VwcG9ydCwgSW5jLgotMDAwRDczICAgICAoYmFzZSAxNikJCVRlY2huaWNhbCBTdXBwb3J0LCBJbmMuCi0JCQkJMTEyNTMgSm9obiBHYWx0IEJsdmQKLQkJCQlPbWFoYSBOZWJyYXNrYSA2ODEzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtNzQgICAoaGV4KQkJU2FuZCBOZXR3b3JrIFN5c3RlbXMsIEluYy4KLTAwMEQ3NCAgICAgKGJhc2UgMTYpCQlTYW5kIE5ldHdvcmsgU3lzdGVtcywgSW5jLgotCQkJCTQzNCBQYXlyYW4gU3RyZWV0Ci0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTc1ICAgKGhleCkJCUtvYmlhbiBQdGUgTHRkIC0gVGFpd2FuIEJyYW5jaAotMDAwRDc1ICAgICAoYmFzZSAxNikJCUtvYmlhbiBQdGUgTHRkIC0gVGFpd2FuIEJyYW5jaAotCQkJCTJGLCBOby41ODAsIFJ1ZWlrdWFuZyBSZC4sTmVpIEh1LFRhaXBlaSwKLQkJCQlUYWlwZWkgTmVpIEh1IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtNzYgICAoaGV4KQkJSG9rdXRvIERlbnNoaSBDbywuIEx0ZC4KLTAwMEQ3NiAgICAgKGJhc2UgMTYpCQlIb2t1dG8gRGVuc2hpIENvLC4gTHRkLgotCQkJCTMtNyBPZG9yaSBOaXNoaSAxNi1DaG9tZSBDaHVva3UKLQkJCQlTYXBwb3JvIEhva2thaWRvIDA2MC0wMDQyCi0JCQkJSkFQQU4KLQotMDAtMEQtNzcgICAoaGV4KQkJRmFsY29uU3RvciBTb2Z0d2FyZQotMDAwRDc3ICAgICAoYmFzZSAxNikJCUZhbGNvblN0b3IgU29mdHdhcmUKLQkJCQkxMjUgQmF5bGlzIFJkCi0JCQkJTWVsdmlsbGUgTlkgMTE3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTc4ICAgKGhleCkJCUVuZ2luZWVyaW5nICYgU2VjdXJpdHkKLTAwMEQ3OCAgICAgKGJhc2UgMTYpCQlFbmdpbmVlcmluZyAmIFNlY3VyaXR5Ci0JCQkJTWFydGlyaSBkZWxsYSBMaWJlcnTDoCAzMi80Ci0JCQkJR2Vub3ZhICAxNjE1NQotCQkJCUlUQUxZCi0KLTAwLTBELTc5ICAgKGhleCkJCUR5bmFtaWMgU29sdXRpb25zIENvLC5MdGQuCi0wMDBENzkgICAgIChiYXNlIDE2KQkJRHluYW1pYyBTb2x1dGlvbnMgQ28sLkx0ZC4KLQkJCQkxNy04IE5paG9uYmFzaGkgSGFrb3pha2ktY2hvCi0JCQkJQ2h1by1rdSBUb2t5byAxMDMtMDAxNQotCQkJCUpBUEFOCi0KLTAwLTBELTdBICAgKGhleCkJCURpR0FUVE8gQXNpYSBQYWNpZmljIFB0ZSBMdGQKLTAwMEQ3QSAgICAgKGJhc2UgMTYpCQlEaUdBVFRPIEFzaWEgUGFjaWZpYyBQdGUgTHRkCi0JCQkJMTkwIE1kZGxlIFJvYWQsICMxOS0wNSBGb3J0dW5lIENlbnRlcgotCQkJCTE4ODk3OQotCQkJCVNJTkdBUE9SRQotCi0wMC0wRC03QiAgIChoZXgpCQlDb25zZW5zeXMgQ29tcHV0ZXJzIEluYy4KLTAwMEQ3QiAgICAgKGJhc2UgMTYpCQlDb25zZW5zeXMgQ29tcHV0ZXJzIEluYy4KLQkJCQkyMTUgU2hpZWxkcyBDdC4KLQkJCQlNYXJraGFtIE9OIEwzUiA4VjIKLQkJCQlDQU5BREEKLQotMDAtMEQtN0MgICAoaGV4KQkJQ29kaWFuIEx0ZAotMDAwRDdDICAgICAoYmFzZSAxNikJCUNvZGlhbiBMdGQKLQkJCQkxNCBXYXRlcnNpZGUgRHJpdmUKLQkJCQlMYW5nbGV5IFNsb3VnaCBTTDMgNkVaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtN0QgICAoaGV4KQkJQWZjbyBTeXN0ZW1zCi0wMDBEN0QgICAgIChiYXNlIDE2KQkJQWZjbyBTeXN0ZW1zCi0JCQkJMjAwIEZpbm4gQ291cnQKLQkJCQlGYXJtaW5nZGFsZSBOWSAxMTczNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtN0UgICAoaGV4KQkJQXhpb3dhdmUgTmV0d29ya3MsIEluYy4KLTAwMEQ3RSAgICAgKGJhc2UgMTYpCQlBeGlvd2F2ZSBOZXR3b3JrcywgSW5jLgotCQkJCTIwMCBOaWNrZXJzb24gUm9hZAotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC03RiAgIChoZXgpCQlNSURBUyAgQ09NTVVOSUNBVElPTiBURUNITk9MT0dJRVMgUFRFIExURCAoIEZvcmVpZ24gQnJhbmNoKQotMDAwRDdGICAgICAoYmFzZSAxNikJCU1JREFTICBDT01NVU5JQ0FUSU9OIFRFQ0hOT0xPR0lFUyBQVEUgTFREICggRm9yZWlnbiBCcmFuY2gpCi0JCQkJMDQtMTIsIFBoYXNlIFouUm8gVGVjaG5vcHJlbnVlciBQYXJrCi0JCQkJIzE1MSwgTm9ydGggQnVvbmEgVmlzdGEgUm9hZAotCQkJCVNpbmdhcG9yZSAgMTM5IDM0NwotCQkJCVNJTkdBUE9SRQotCi0wMC0wRC04MCAgIChoZXgpCQlPbmxpbmUgRGV2ZWxvcG1lbnQgSW5jCi0wMDBEODAgICAgIChiYXNlIDE2KQkJT25saW5lIERldmVsb3BtZW50IEluYwotCQkJCTcyMDkgQ2hhcG1hbiBId3kKLQkJCQlLbm94dmlsbGUgVG4gMzc5MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTgxICAgKGhleCkJCVBlcHBlcmwrRnVjaHMgR21iSAotMDAwRDgxICAgICAoYmFzZSAxNikJCVBlcHBlcmwrRnVjaHMgR21iSAotCQkJCUxpbGllbnRoYWxzdHJhw4PFuGUgMjAwCi0JCQkJTWFubmhlaW0gIDY4MzA3Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC04MiAgIChoZXgpCQlQSFMgc3JsCi0wMDBEODIgICAgIChiYXNlIDE2KQkJUEhTIHNybAotCQkJCVZpYSBQYWzDuSwgMTcKLQkJCQlBcmN1Z25hbm8gVmljZW56YSAzNjA1NwotCQkJCUlUQUxZCi0KLTAwLTBELTgzICAgKGhleCkJCVNhbm1pbmEtU0NJIEh1bmdhcnkgIEx0ZC4KLTAwMEQ4MyAgICAgKGJhc2UgMTYpCQlTYW5taW5hLVNDSSBIdW5nYXJ5ICBMdGQuCi0JCQkJS290YSBKb3pzZWYgdS4gMi4KLQkJCQlUYXRhYmFueWEgS29tYXJvbS1Fc3p0ZXJnb20gMjgwMAotCQkJCUhVTkdBUlkKLQotMDAtMEQtODQgICAoaGV4KQkJTWFrdXMgSW5jLgotMDAwRDg0ICAgICAoYmFzZSAxNikJCU1ha3VzIEluYy4KLQkJCQk0RiBEYWVkbyBCbGRnLiwgNzQ4LTE0IFllb2tzYW0tZG9uZwotCQkJCUthbmduYW0tZ3UgU2VvdWwgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC04NSAgIChoZXgpCQlUYXB3YXZlLCBJbmMuCi0wMDBEODUgICAgIChiYXNlIDE2KQkJVGFwd2F2ZSwgSW5jLgotCQkJCTE5MDEgTGFuZGluZ3MgRHJpdmUKLQkJCQlCdWlsZGluZyBHCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtODYgICAoaGV4KQkJSHViZXIgKyBTdWhuZXIgQUcKLTAwMEQ4NiAgICAgKGJhc2UgMTYpCQlIdWJlciArIFN1aG5lciBBRwotCQkJCURlZ2Vyc2hlaW1lcnN0cmFzc2UgMTQKLQkJCQk5MTAwIEhlcmlzYXUgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEQtODcgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0wMDBEODcgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0JCQkJTm8uMjIsIEFsbGV5IDM4LCBMYW5lIDkxLCBTZWMuIDEsIE5laSBIdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC04OCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMEQ4OCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby44LCBMaS1Ic2luZyA3IFJvYWQsIFNjaWVuY2UtQmFzZWQgSW5kCi0JCQkJSHNpbmNodSAgMzAwNzcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELTg5ICAgKGhleCkJCUJpbHMgVGVjaG5vbG9neSBJbmMKLTAwMEQ4OSAgICAgKGJhc2UgMTYpCQlCaWxzIFRlY2hub2xvZ3kgSW5jCi0JCQkJNTA4IFMgUml2ZXIgT2FrcyBEcml2ZQotCQkJCUluZGlhbGFudGljIEZMIDMyOTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC04QSAgIChoZXgpCQlXaW5uZXJzIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwRDhBICAgICAoYmFzZSAxNikJCVdpbm5lcnMgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzM0MC01LFdvbmNodW4tRG9uZyxQYWxkYWwtR3UKLQkJCQlTdXdvbi1DaXR5IEt5dW5na2ktRG8gNDQyLTgyMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC04QiAgIChoZXgpCQlUJkQgQ29ycG9yYXRpb24KLTAwMEQ4QiAgICAgKGJhc2UgMTYpCQlUJkQgQ29ycG9yYXRpb24KLQkJCQk1NjUyLTE2OSBTYXNhZ2EKLQkJCQlNYXRzdW1vdG8gTmFnYW5vIDM5OS0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMEQtOEMgICAoaGV4KQkJU2hhbmdoYWkgV2Vkb25lIERpZ2l0YWwgTHRkLiBDTy4KLTAwMEQ4QyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBXZWRvbmUgRGlnaXRhbCBMdGQuIENPLgotCQkJCTg5My04OTkgSHVhc2hhbiBSb2FkLAotCQkJCVNoYW5naGFpICAyMDAwMzEKLQkJCQlDSElOQQotCi0wMC0wRC04RCAgIChoZXgpCQlQcm9MaW54IENvbW11bmljYXRpb24gR2F0ZXdheXMsIEluYy4KLTAwMEQ4RCAgICAgKGJhc2UgMTYpCQlQcm9MaW54IENvbW11bmljYXRpb24gR2F0ZXdheXMsIEluYy4KLQkJCQkxNjc1IENoZXN0ZXIgQXZlLgotCQkJCUZvdXJ0aCBGbG9vcgotCQkJCUJha2Vyc2ZpZWxkIENBIDkzMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC04RSAgIChoZXgpCQlLb2RlbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMEQ4RSAgICAgKGJhc2UgMTYpCQlLb2RlbiBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQk1Mjc4IFVlbm9oYXJhCi0JCQkJVWVub2hhcmEtU2hpCi0JCQkJWWFtYW5hc2hpLUtlbiA0MDktMDExMgotCQkJCUpBUEFOCi0KLTAwLTBELThGICAgKGhleCkJCUtpbmcgVHN1c2hpbiBLb2d5byBDby4sIExURC4KLTAwMEQ4RiAgICAgKGJhc2UgMTYpCQlLaW5nIFRzdXNoaW4gS29neW8gQ28uLCBMVEQuCi0JCQkJMi02LTYgTm9nZQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1OC0wMDkyCi0JCQkJSkFQQU4KLQotMDAtMEQtOTAgICAoaGV4KQkJRmFjdHVtIEVsZWN0cm9uaWNzIEFCCi0wMDBEOTAgICAgIChiYXNlIDE2KQkJRmFjdHVtIEVsZWN0cm9uaWNzIEFCCi0JCQkJVGVrbmlrcmluZ2VuIDFICi0JCQkJTGlua8ODwrZwaW5nIMOD4oCTc3RlcmfDg8K2dGxhbmQgNTgzIDMwCi0JCQkJU1dFREVOCi0KLTAwLTBELTkxICAgKGhleCkJCUVjbGlwc2UgKEhRIEVzcGFuYSkgUy5MLgotMDAwRDkxICAgICAoYmFzZSAxNikJCUVjbGlwc2UgKEhRIEVzcGFuYSkgUy5MLgotCQkJCUNDIGRlIE5lZ29jaW9zCi0JCQkJT2ZmaWNpbmEgTm8uIDQ2LiBDLk4uIDM0MCwgS20gMTc1Ci0JCQkJUHVlcnRvIGRlIEJhbnVzIE1hcmJlbGxhIDI5NjYwCi0JCQkJU1BBSU4KLQotMDAtMEQtOTIgICAoaGV4KQkJQXJpbWEgQ29tbXVuaWNhdGlvbiBDb3Jwb3JhdGlvbgotMDAwRDkyICAgICAoYmFzZSAxNikJCUFyaW1hIENvbW11bmljYXRpb24gQ29ycG9yYXRpb24KLQkJCQkxNiwgbGFuZSA2NTgsIFlpbmctVGFvIFJvYWQKLQkJCQlZaW5na28gVGFpcGVpIENvdW50eSAyMzk0MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtOTMgICAoaGV4KQkJQXBwbGUgQ29tcHV0ZXIKLTAwMEQ5MyAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlcgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtOTQgICAoaGV4KQkJQUZBUiBDb21tdW5pY2F0aW9ucyxJbmMKLTAwMEQ5NCAgICAgKGJhc2UgMTYpCQlBRkFSIENvbW11bmljYXRpb25zLEluYwotCQkJCTgxIERhdmlkIExvdmUgUGxhY2UKLQkJCQlTdWl0ZSBBCi0JCQkJU2FudGEgQmFyYmFyYSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtOTUgICAoaGV4KQkJT3B0aS1jZWxsLCBJbmMuCi0wMDBEOTUgICAgIChiYXNlIDE2KQkJT3B0aS1jZWxsLCBJbmMuCi0JCQkJMTAwIEhpZ2ggVG93ZXIgQmx2ZC4sICBTdWl0ZSAzMDEKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC05NiAgIChoZXgpCQlWdGVyYSBUZWNobm9sb2d5IEluYy4KLTAwMEQ5NiAgICAgKGJhc2UgMTYpCQlWdGVyYSBUZWNobm9sb2d5IEluYy4KLQkJCQlObyAzNCwgSW5kdXN0cmlhbCBFYXN0LiA0dGggUmQuCi0JCQkJSHNpbkNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC05NyAgIChoZXgpCQlUcm9wb3MgTmV0d29ya3MsIEluYy4KLTAwMEQ5NyAgICAgKGJhc2UgMTYpCQlUcm9wb3MgTmV0d29ya3MsIEluYy4KLQkJCQkxNzEwIFMuIEFtcGhsZXR0IEJsdmQsICBTdWl0ZSAzMDQKLQkJCQlTYW4gTWF0ZW8gQ0EgOTQ0MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELTk4ICAgKGhleCkJCVMuVy5BLkMuIFNjaG1pdHQtV2FsdGVyIEF1dG9tYXRpb24gQ29uc3VsdCBHbWJICi0wMDBEOTggICAgIChiYXNlIDE2KQkJUy5XLkEuQy4gU2NobWl0dC1XYWx0ZXIgQXV0b21hdGlvbiBDb25zdWx0IEdtYkgKLQkJCQlPZWRlbnB1bGxhY2ggMQotCQkJCU9iZXJoYWNoaW5nIEJhdmFyaWEgODIwNDEKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTk5ICAgKGhleCkJCU9yYml0YWwgU2NpZW5jZXMgQ29ycC47IExhdW5jaCBTeXN0ZW1zIEdyb3VwCi0wMDBEOTkgICAgIChiYXNlIDE2KQkJT3JiaXRhbCBTY2llbmNlcyBDb3JwLjsgTGF1bmNoIFN5c3RlbXMgR3JvdXAKLQkJCQkzMzgwIFMuIFByaWNlIFJkLgotCQkJCUNoYW5kbGVyLCBBWiA4NTI0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtOUEgICAoaGV4KQkJSU5GT1RFQyBMVEQKLTAwMEQ5QSAgICAgKGJhc2UgMTYpCQlJTkZPVEVDIExURAotCQkJCVRoZSBNYWx0aW5ncwotCQkJCVRhbXdvcnRoIFJvYWQKLQkJCQlBc2hieS1kZS1sYS1ab3VjaCBMZWljZXN0ZXJzaGlyZSBMRTY1IDJQUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELTlCICAgKGhleCkJCUhlcmFldXMgRWxlY3Ryby1OaXRlIEludGVybmF0aW9uYWwgTi5WLgotMDAwRDlCICAgICAoYmFzZSAxNikJCUhlcmFldXMgRWxlY3Ryby1OaXRlIEludGVybmF0aW9uYWwgTi5WLgotCQkJCUNlbnRydW0gWnVpZCAxMTA1Ci0JCQkJSG91dGhhbGVuICAzNTMwCi0JCQkJQkVMR0lVTQotCi0wMC0wRC05QyAgIChoZXgpCQlFbGFuIEdtYkggJiBDbyBLRwotMDAwRDlDICAgICAoYmFzZSAxNikJCUVsYW4gR21iSCAmIENvIEtHCi0JCQkJSW0gT3N0cGFyayAyCi0JCQkJV2V0dGVuYmVyZyBIZXNzZW4gMzU0MzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELTlEICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDBEOUQgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OSBTb3V0aAotCQkJCW14MDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtOUUgICAoaGV4KQkJVE9LVURFTiBPSElaVU1JIFNFSVNBS1VTWU8gQ28uLEx0ZC4KLTAwMEQ5RSAgICAgKGJhc2UgMTYpCQlUT0tVREVOIE9ISVpVTUkgU0VJU0FLVVNZTyBDby4sTHRkLgotCQkJCVlvc2hpZGEgMTIyMQotCQkJCU91cmFndW4gT2hpenVtaSBHdW5tYSAzNzAtMDUyMwotCQkJCUpBUEFOCi0KLTAwLTBELTlGICAgKGhleCkJCVJGIE1pY3JvIERldmljZXMKLTAwMEQ5RiAgICAgKGJhc2UgMTYpCQlSRiBNaWNybyBEZXZpY2VzCi0JCQkJMjE5MSBaYW5rZXIgUm9hZAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1BMCAgIChoZXgpCQlORURBUCBOLlYuCi0wMDBEQTAgICAgIChiYXNlIDE2KQkJTkVEQVAgTi5WLgotCQkJCVAuTy5Cb3ggMTAzCi0JCQkJUC5PLkJveCA2Ci0JCQkJR1JPRU5MTyBHTEQgNzE0MSBBQwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBELUExICAgKGhleCkJCU1JUkFFIElUUyBDby4sTFRELgotMDAwREExICAgICAoYmFzZSAxNikJCU1JUkFFIElUUyBDby4sTFRELgotCQkJCTdGLCBDaGFuZ0h5dW4gQi9ELDk2MC0xLEhvR3llMURvbmcKLQkJCQlBbllhbmcgS3lvbmdpR2lEbyA0MzEtODQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUEyICAgKGhleCkJCUluZnJhbnQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBEQTIgICAgIChiYXNlIDE2KQkJSW5mcmFudCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk0ODgyMCBLYXRvIFJvYWQKLQkJCQlTdGUgMTEwQgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUEzICAgKGhleCkJCUVtZXJnaW5nIFRlY2hub2xvZ2llcyBMaW1pdGVkCi0wMDBEQTMgICAgIChiYXNlIDE2KQkJRW1lcmdpbmcgVGVjaG5vbG9naWVzIExpbWl0ZWQKLQkJCQlXb25nJ3MgSW5kdXN0cmlhbCBDZW50cmUsIDE4MCBXYWkgWWlwIFN0Ci0JCQkJS3d1biBUb25nLCBLb3dsb29uCi0JCQkJTmlsIAotCQkJCUhPTkcgS09ORwotCi0wMC0wRC1BNCAgIChoZXgpCQlET1NDSCAmIEFNQU5EIFNZU1RFTVMgQUcKLTAwMERBNCAgICAgKGJhc2UgMTYpCQlET1NDSCAmIEFNQU5EIFNZU1RFTVMgQUcKLQkJCQlTY2hlaW5lcnN0cmFzc2UgOQotCQkJCU11bmljaCBCYXZhcmlhIDgxNjc5Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC1BNSAgIChoZXgpCQlGYWJyaWM3IFN5c3RlbXMsIEluYwotMDAwREE1ICAgICAoYmFzZSAxNikJCUZhYnJpYzcgU3lzdGVtcywgSW5jCi0JCQkJMTMwMCBDcml0dGVuZGVuIExhbmUKLQkJCQlTdWl0ZSAzMDIKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1BNiAgIChoZXgpCQlVbml2ZXJzYWwgU3dpdGNoaW5nIENvcnBvcmF0aW9uCi0wMDBEQTYgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIFN3aXRjaGluZyBDb3Jwb3JhdGlvbgotCQkJCTc2NzEgU2FuIEZlcm5hbmRvIFJkCi0JCQkJQnVyYmFuayBDQSA5MTUwNS0xMDczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1BNyAgIChoZXgpCQlQUklWQVRFCi0wMDBEQTcgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBELUE4ICAgKGhleCkJCVRlbGV0cm9uaWNzIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMERBOCAgICAgKGJhc2UgMTYpCQlUZWxldHJvbmljcyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMjUyNSBQZWFybCBCdWNrIFJvYWQKLQkJCQlCcmlzdG9sIFBlbm5zeWx2YW5pYSAxOTAwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQTkgICAoaGV4KQkJVC5FLkEuTS4gUy5MLgotMDAwREE5ICAgICAoYmFzZSAxNikJCVQuRS5BLk0uIFMuTC4KLQkJCQlQYXJxdWUgVGVjbm9sb2dpY28gRWRpZmljaW8gMTA4Ci0JCQkJWkFNVURJTyBCaXprYWlhIDQ4MTcwCi0JCQkJU1BBSU4KLQotMDAtMEQtQUEgICAoaGV4KQkJUy5BLlRlaG5vbG9neSBjby4sTHRkLgotMDAwREFBICAgICAoYmFzZSAxNikJCVMuQS5UZWhub2xvZ3kgY28uLEx0ZC4KLQkJCQk4MC0xMiBZYW5namFlIDEgRG9uZwotCQkJCVNlb2NobyBHdQotCQkJCVNlb3VsIFNvdXRoIEtvcmVhIDEzNy04OTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtQUIgICAoaGV4KQkJUGFya2VyIEhhbm5pZmluIEdtYkggRWxlY3Ryb21lY2hhbmljYWwgRGl2aXNpb24gRXVyb3BlCi0wMDBEQUIgICAgIChiYXNlIDE2KQkJUGFya2VyIEhhbm5pZmluIEdtYkggRWxlY3Ryb21lY2hhbmljYWwgRGl2aXNpb24gRXVyb3BlCi0JCQkJUm9iZXJ0LUJvc2NoLVN0cmFzc2UgMjIKLQkJCQlPZmZlbmJ1cmcgQmFkZW4gV8O8cnR0ZW1iZXJnIDc3NjU2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC1BQyAgIChoZXgpCQlKYXBhbiBDQk0gQ29ycG9yYXRpb24KLTAwMERBQyAgICAgKGJhc2UgMTYpCQlKYXBhbiBDQk0gQ29ycG9yYXRpb24KLQkJCQk1LTY4LTEwIE5ha2FubywKLQkJCQlOYWthbm8tS3UgVG9reW8gMTY0LTAwMDEKLQkJCQlKQVBBTgotCi0wMC0wRC1BRCAgIChoZXgpCQlEYXRhcHJvYmUgSW5jCi0wMDBEQUQgICAgIChiYXNlIDE2KQkJRGF0YXByb2JlIEluYwotCQkJCTEgUGVhcmwgQ3QgVW5pdCBCCi0JCQkJQWxsZW5kYWxlIE5KIDA3NDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1BRSAgIChoZXgpCQlTQU1TVU5HIEhFQVZZIElORFVTVFJJRVMgQ08uLCBMVEQuCi0wMDBEQUUgICAgIChiYXNlIDE2KQkJU0FNU1VORyBIRUFWWSBJTkRVU1RSSUVTIENPLiwgTFRELgotCQkJCTQ5MywgQmFud2VvbC1SaSwgVGFlYW4tRXVwCi0JCQkJSHdhc2VvbmctQ2l0eSBLeWVvbmdnaS1EbyA0NDUtOTczCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUFGICAgKGhleCkJCVBsZXh1cyBDb3JwIChVSykgTHRkCi0wMDBEQUYgICAgIChiYXNlIDE2KQkJUGxleHVzIENvcnAgKFVLKSBMdGQKLQkJCQlQaW5uYWNsZSBIaWxsCi0JCQkJS2Vsc28gUm94YnVyZ2hzaGlyZSBURDUgOFhYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEQtQjAgICAoaGV4KQkJT2x5bS10ZWNoIENvLixMdGQuCi0wMDBEQjAgICAgIChiYXNlIDE2KQkJT2x5bS10ZWNoIENvLixMdGQuCi0JCQkJUm9vbSA0MDEvNDAyLE5vLjEsU29uZ2xpbmcgUm9hZCxIaS10ZWNoCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzMQotCQkJCUNISU5BCi0KLTAwLTBELUIxICAgKGhleCkJCUphcGFuIE5ldHdvcmsgU2VydmljZSBDby4sIEx0ZC4KLTAwMERCMSAgICAgKGJhc2UgMTYpCQlKYXBhbiBOZXR3b3JrIFNlcnZpY2UgQ28uLCBMdGQuCi0JCQkJTWF0b2JhIEJsZGcuIDZGLAotCQkJCTMtNy03IElyaWZ1bmUKLQkJCQkgQ2h1by1rdSBUb2t5byAxMDQtMDA0MgotCQkJCUpBUEFOCi0KLTAwLTBELUIyICAgKGhleCkJCUFtbWFzc28sIEluYy4KLTAwMERCMiAgICAgKGJhc2UgMTYpCQlBbW1hc3NvLCBJbmMuCi0JCQkJMzQ1IFN1bW1lciBTdHJlZXQKLQkJCQlCb3N0b24gTUEgMDIyMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUIzICAgKGhleCkJCVNETyBDb21tdW5pY2F0aW9uIENvcnBlcmF0aW9uCi0wMDBEQjMgICAgIChiYXNlIDE2KQkJU0RPIENvbW11bmljYXRpb24gQ29ycGVyYXRpb24KLQkJCQk2RiwgTm8uMTEyLCBTaGluIE1pbiBTdHJlZXQKLQkJCQlDaHVuZyBIbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUI0ICAgKGhleCkJCU5FVEFTUQotMDAwREI0ICAgICAoYmFzZSAxNikJCU5FVEFTUQotCQkJCTMgcnVlIEFyY2hpbWVkZQotCQkJCVZpbGxlbmV1dmUgZCdBc2NxIG5vcmQgNTk2NTAKLQkJCQlGUkFOQ0UKLQotMDAtMEQtQjUgICAoaGV4KQkJR0xPQkFMU0FUIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwMERCNSAgICAgKGJhc2UgMTYpCQlHTE9CQUxTQVQgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCUZhciBFYXN0IENlbnR1cnkgUGFyawotCQkJCUNodW5nIEhvIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtQjYgICAoaGV4KQkJQnJvYWRjb20gQ29ycG9yYXRpb24KLTAwMERCNiAgICAgKGJhc2UgMTYpCQlCcm9hZGNvbSBDb3Jwb3JhdGlvbgotCQkJCTEzNjMgUmVkd29vZCBXYXkKLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQjcgICAoaGV4KQkJU0FOS08gRUxFQ1RSSUMgQ08sLkxURAotMDAwREI3ICAgICAoYmFzZSAxNikJCVNBTktPIEVMRUNUUklDIENPLC5MVEQKLQkJCQk3LTIzIFRhbWFub2ktY2hvIEF0c3V0YS1rdQotCQkJCU5hZ295YS1zaGkgQWljaGkgNDU2LTAwMjUKLQkJCQlKQVBBTgotCi0wMC0wRC1COCAgIChoZXgpCQlTQ0hJTExFUiBBRwotMDAwREI4ICAgICAoYmFzZSAxNikJCVNDSElMTEVSIEFHCi0JCQkJQWx0Z2Fzc2UgNjgKLQkJCQlCYWFyIFp1ZyA2MzAwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEQtQjkgICAoaGV4KQkJUEMgRW5naW5lcyBHbWJICi0wMDBEQjkgICAgIChiYXNlIDE2KQkJUEMgRW5naW5lcyBHbWJICi0JCQkJR2VybWFuaWFzdHJhc3NlIDY4Ci0JCQkJODAwNiBadXJpY2ggCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEQtQkEgICAoaGV4KQkJT2PDqSBEb2N1bWVudCBUZWNobm9sb2dpZXMgR21iSAotMDAwREJBICAgICAoYmFzZSAxNikJCU9jw6kgRG9jdW1lbnQgVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlNYXgtU3Ryb21leWVyLVN0ci4gMTE2Ci0JCQkJS29uc3RhbnogIDc4NDY3Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC1CQiAgIChoZXgpCQlOaXBwb24gRGVudHN1IENvLixMdGQuCi0wMDBEQkIgICAgIChiYXNlIDE2KQkJTmlwcG9uIERlbnRzdSBDby4sTHRkLgotCQkJCTItMjEtMSxJc29qaQotCQkJCU1pbmF0by1LdQotCQkJCU9zYWthICA1NTItMDAwMwotCQkJCUpBUEFOCi0KLTAwLTBELUJDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMERCQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUJEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMERCRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUJFICAgKGhleCkJCUJlbCBGdXNlIEV1cm9wZSBMdGQuLFVLCi0wMDBEQkUgICAgIChiYXNlIDE2KQkJQmVsIEZ1c2UgRXVyb3BlIEx0ZC4sVUsKLQkJCQk0NS80NiBSaXZlcnNpZGUgMgotCQkJCU1lZHdheSBDaXR5IEVzdGF0ZQotCQkJCVJvY2hlc3RlciBLZW50IE1FMiA0RFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC1CRiAgIChoZXgpCQlUZWtUb25lIFNvdW5kICYgU2lnbmFsIE1mZy4sIEluYy4KLTAwMERCRiAgICAgKGJhc2UgMTYpCQlUZWtUb25lIFNvdW5kICYgU2lnbmFsIE1mZy4sIEluYy4KLQkJCQkyNzcgSW5kdXN0cmlhbCBQYXJrIFJkLgotCQkJCUZyYW5rbGluIE5DIDI4NzM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1DMCAgIChoZXgpCQlTcGFnYXQgQVMKLTAwMERDMCAgICAgKGJhc2UgMTYpCQlTcGFnYXQgQVMKLQkJCQlUb25uZSBIdXRpZmVsZHRwbC4gMgotCQkJCUhhbGRlbiBPc3Rmb2xkIDE3NjcKLQkJCQlOT1JXQVkKLQotMDAtMEQtQzEgICAoaGV4KQkJU2FmZVdlYiBJbmMKLTAwMERDMSAgICAgKGJhc2UgMTYpCQlTYWZlV2ViIEluYwotCQkJCTIyMDAgUG93ZWxsIFN0LiBTdGUgNTkwCi0JCQkJRW1lcnl2aWxsZSBDQSA5NDYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQzIgICAoaGV4KQkJUFJJVkFURQotMDAwREMyICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wRC1DMyAgIChoZXgpCQlGaXJzdCBDb21tdW5pY2F0aW9uLCBJbmMuCi0wMDBEQzMgICAgIChiYXNlIDE2KQkJRmlyc3QgQ29tbXVuaWNhdGlvbiwgSW5jLgotCQkJCTFGLCBOby4zNiwgSW5kdXN0cnkgRS4gUmQuIElWLiwKLQkJCQkgU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUM0ICAgKGhleCkJCUVtY29yZSBDb3Jwb3JhdGlvbgotMDAwREM0ICAgICAoYmFzZSAxNikJCUVtY29yZSBDb3Jwb3JhdGlvbgotCQkJCTE2MDAgRXViYW5rIEJsdmQsIFNFCi0JCQkJQWxidXF1ZXJxdWUgTmV3IE1leGljbyA4NzEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtQzUgICAoaGV4KQkJRWNob1N0YXIgR2xvYmFsIEIuVi4gCi0wMDBEQzUgICAgIChiYXNlIDE2KQkJRWNob1N0YXIgR2xvYmFsIEIuVi4gCi0JCQkJU2NodWlsZW5idXJnbGFhbiA1YQotCQkJCUFsbWVsbyBPdmVyaWpzc2VsIDc2MDRCSgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBELUM2ICAgKGhleCkJCURpZ2lSb3NlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBEQzYgICAgIChiYXNlIDE2KQkJRGlnaVJvc2UgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMSwgQWxsZXkgMjAsIExhbmUgMjYgUnVlaWd1YW5nIFJvYWQsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUM3ICAgKGhleCkJCUNPU01JQyBFTkdJTkVFUklORyBJTkMuCi0wMDBEQzcgICAgIChiYXNlIDE2KQkJQ09TTUlDIEVOR0lORUVSSU5HIElOQy4KLQkJCQkxLTMtNSwgTmlzaGloaXJheWFtYQotCQkJCUhpbm8tc2hpIFRPS1lPIDE5MS0wMDU1Ci0JCQkJSkFQQU4KLQotMDAtMEQtQzggICAoaGV4KQkJQWlyTWFnbmV0LCBJbmMKLTAwMERDOCAgICAgKGJhc2UgMTYpCQlBaXJNYWduZXQsIEluYwotCQkJCTgzMCBFLiBBcnF1ZXMgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1DOSAgIChoZXgpCQlUSEFMRVMgRWxla3Ryb25payBTeXN0ZW1lIEdtYkgKLTAwMERDOSAgICAgKGJhc2UgMTYpCQlUSEFMRVMgRWxla3Ryb25payBTeXN0ZW1lIEdtYkgKLQkJCQlGcml0ei1MdWR3aWctU3RyLiAxCi0JCQkJS29ibGVueiAgNTYwNzAKLQkJCQlHRVJNQU5ZCi0KLTAwLTBELUNBICAgKGhleCkJCVRhaXQgRWxlY3Ryb25pY3MKLTAwMERDQSAgICAgKGJhc2UgMTYpCQlUYWl0IEVsZWN0cm9uaWNzCi0JCQkJNTM1IFdhaXJha2VpIFJkCi0JCQkJUE8gQm94IDE2NDUKLQkJCQlDaHJpc3RjaHVyY2ggQ2FudGVyYnVyeSA4MDA1Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMEQtQ0IgICAoaGV4KQkJUGV0Y29ta29yZWEgQ28uLCBMdGQuCi0wMDBEQ0IgICAgIChiYXNlIDE2KQkJUGV0Y29ta29yZWEgQ28uLCBMdGQuCi0JCQkJNUYsNjg5LTQ3LEdldW1qZW9uZy1kb25nLEd1bnBvLXNpLEt5dW5nZwotCQkJCUt5dW5nZ2ktZG8gZ3VucG8tc2kgNDM1LTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC1DQyAgIChoZXgpCQlORU9TTUFSVCBDb3JwLgotMDAwRENDICAgICAoYmFzZSAxNikJCU5FT1NNQVJUIENvcnAuCi0JCQkJWW9vbi1CL0QgNEYsIDQ3NS0zMSwgQmFuZ2JhZSAyLWRvbmcKLQkJCQlTZW91bCBTZW9jaG8tZ3UgMTQ3LTgxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRC1DRCAgIChoZXgpCQlHUk9VUEUgVFhDT00KLTAwMERDRCAgICAgKGJhc2UgMTYpCQlHUk9VUEUgVFhDT00KLQkJCQlaSSBEVSBQRVRJVCBDTEFNQVJUCi0JCQkJMTAgQVZFTlVFIERFU0NBUlRFUwotCQkJCUxFIFBMRVNTSVMgUk9CSU5TT04gSEFVVFMtREUtU0VJTkUgOTIzNTAKLQkJCQlGUkFOQ0UKLQotMDAtMEQtQ0UgICAoaGV4KQkJRHluYXZhYyBUZWNobm9sb2d5IFB0ZSBMdGQKLTAwMERDRSAgICAgKGJhc2UgMTYpCQlEeW5hdmFjIFRlY2hub2xvZ3kgUHRlIEx0ZAotCQkJCTMwIFR1YXMgQXZlbnVlIDkKLQkJCQk2MzkxODMKLQkJCQlTSU5HQVBPUkUKLQotMDAtMEQtQ0YgICAoaGV4KQkJQ2lkcmEgQ29ycC4KLTAwMERDRiAgICAgKGJhc2UgMTYpCQlDaWRyYSBDb3JwLgotCQkJCTUwIEJhcm5zIFBhcmsgTm9ydGgKLQkJCQlXYWxsaW5nZm9yZCBDVCAwNjQ5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRDAgICAoaGV4KQkJVGV0cmFUZWMgSW5zdHJ1bWVudHMgR21iSAotMDAwREQwICAgICAoYmFzZSAxNikJCVRldHJhVGVjIEluc3RydW1lbnRzIEdtYkgKLQkJCQlHZXdlcmJlc3RyYXNzZSA4Ci0JCQkJU3RlaW5lbmJyb25uIEJXIDcxMTQ0Ci0JCQkJR0VSTUFOWQotCi0wMC0wRC1EMSAgIChoZXgpCQlTdHJ5a2VyIENvcnBvcmF0aW9uCi0wMDBERDEgICAgIChiYXNlIDE2KQkJU3RyeWtlciBDb3Jwb3JhdGlvbgotCQkJCTQxMDAgRSBNaWxoYW0KLQkJCQlLYWxhbWF6b28gTUkgNDkwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUQyICAgKGhleCkJCVNpbXJhZCBPcHRyb25pY3MgQVNBCi0wMDBERDIgICAgIChiYXNlIDE2KQkJU2ltcmFkIE9wdHJvbmljcyBBU0EKLQkJCQlFbnNqw7h2ZWllbiAyM0IKLQkJCQlQTyBCb3ggNjExNCBFdHRlcnN0YWQgTk8tMDYwMiBPc2xvIAotCQkJCU5PUldBWQotCi0wMC0wRC1EMyAgIChoZXgpCQlTQU1XT08gVGVsZWNvbW11bmljYXRpb24gQ28uLEx0ZC4KLTAwMEREMyAgICAgKGJhc2UgMTYpCQlTQU1XT08gVGVsZWNvbW11bmljYXRpb24gQ28uLEx0ZC4KLQkJCQkKLQkJCQkxNzEsIERhbmdqdW5nLURvbmcsCi0JCQkJR3VucG8gS3lvdW5nLUdpIDQzNS04MzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtRDQgICAoaGV4KQkJU3ltYW50ZWMgQ29ycG9yYXRpb24KLTAwMERENCAgICAgKGJhc2UgMTYpCQlTeW1hbnRlYyBDb3Jwb3JhdGlvbgotCQkJCTI3NSAybmQgQXZlCi0JCQkJV2FsdGhhbSBNQSAwMjU0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRDUgICAoaGV4KQkJTydSSVRFIFRFQ0hOT0xPR1kgQ08uLExURAotMDAwREQ1ICAgICAoYmFzZSAxNikJCU8nUklURSBURUNITk9MT0dZIENPLixMVEQKLQkJCQk0Zi04LE5PIDgwLEdVQU5HRlUgUkQuU0VDIDIsU0FOQ0hVTkcKLQkJCQlUQUlQRUkgQ09VTlRZICAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUQ2ICAgKGhleCkJCUlUSSAgICBMVEQKLTAwMERENiAgICAgKGJhc2UgMTYpCQlJVEkgICAgTFRECi0JCQkJUiZELElUSSBCYW5nYWxvcmUgQ29tcGxleAotCQkJCUYtODYgQmxkZy4KLQkJCQlEb29yYXZhbmkgTmFnYXIsIEJhbmdhbG9yZSBLYXJuYXRha2EgU3RhdGUgNTYwMDE2Ci0JCQkJSU5ESUEKLQotMDAtMEQtRDcgICAoaGV4KQkJQnJpZ2h0Ci0wMDBERDcgICAgIChiYXNlIDE2KQkJQnJpZ2h0Ci0JCQkJMS0xMi00NCBBb2JhZGFpCi0JCQkJS2FzaGl3YS1zaGkgQ2hpYmEta2VuIDI3Ny0wMDU1Ci0JCQkJSkFQQU4KLQotMDAtMEQtRDggICAoaGV4KQkJQkJOCi0wMDBERDggICAgIChiYXNlIDE2KQkJQkJOCi0JCQkJN0YtMyxOTy4xODYsIEppYW4gWWkgUmQgLiwgQ2h1bmcgSG8gQ2l0eQotCQkJCVRhaXBlaSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1EOSAgIChoZXgpCQlBbnRvbiBQYWFyIEdtYkgKLTAwMEREOSAgICAgKGJhc2UgMTYpCQlBbnRvbiBQYWFyIEdtYkgKLQkJCQlBbnRvbi1QYWFyLVN0cmFzc2UgMjAKLQkJCQlHcmF6ICA4MDU0Ci0JCQkJQVVTVFJJQQotCi0wMC0wRC1EQSAgIChoZXgpCQlBTExJRUQgVEVMRVNJUyBLLksuCi0wMDBEREEgICAgIChiYXNlIDE2KQkJQUxMSUVEIFRFTEVTSVMgSy5LLgotCQkJCVBJQVpaQSBUSVJBTkEgTi4gMjQvNCBCCi0JCQkJTUlMQU5PICAyMDE0NwotCQkJCUlUQUxZCi0KLTAwLTBELURCICAgKGhleCkJCUFJUldBVkUgVEVDSE5PTE9HSUVTIElOQy4KLTAwMEREQiAgICAgKGJhc2UgMTYpCQlBSVJXQVZFIFRFQ0hOT0xPR0lFUyBJTkMuCi0JCQkJM0YsTm8uOSxJbmR1c3RyeSBFLiA5dGggUm9hZAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1EQyAgIChoZXgpCQlWQUMKLTAwMEREQyAgICAgKGJhc2UgMTYpCQlWQUMKLQkJCQkyMEYsIE4wLiA0NTYsIFNlYy4gNCwgSHNpbiBZaSBSZC4sCi0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUREICAgKGhleCkJCVBST0bDg8KdTE8gVEVMUkEgRUxFS1RST07Dg8KdSyBTQU5BWcODwp0gVkUgVMODwp1DQVJFVCBBLsODxb4uCi0wMDBEREQgICAgIChiYXNlIDE2KQkJUFJPRsODwp1MTyBURUxSQSBFTEVLVFJPTsODwp1LIFNBTkFZw4PCnSBWRSBUw4PCnUNBUkVUIEEuw4PFvi4KLQkJCQlDRU1BTCBTQUjDg8KdUiBTT0tBSyBOTzoyNi0yOAotCQkJCU1FQ8ODwp1Ew4PCnVlFS8OD4oCTWQotCQkJCcODwp1TVEFOQlVMIFRVUktFWSAzNDI1NQotCQkJCVRVUktFWQotCi0wMC0wRC1ERSAgIChoZXgpCQlKb3l0ZWNrIENvLiwgTHRkLgotMDAwRERFICAgICAoYmFzZSAxNikJCUpveXRlY2sgQ28uLCBMdGQuCi0JCQkJMTlGLCBOby40LCBTZWMuIDMsIE1pbiBDaHVhbiBFYXN0IFJkLgotCQkJCVRhaXBlaSAgMTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1ERiAgIChoZXgpCQlKYXBhbiBJbWFnZSAmIE5ldHdvcmsgSW5jLgotMDAwRERGICAgICAoYmFzZSAxNikJCUphcGFuIEltYWdlICYgTmV0d29yayBJbmMuCi0JCQkJNS0yOS0xMiBTaGliYQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDgtMDAxNAotCQkJCUpBUEFOCi0KLTAwLTBELUUwICAgKGhleCkJCUlDUERBUyBDby4sTFRECi0wMDBERTAgICAgIChiYXNlIDE2KQkJSUNQREFTIENvLixMVEQKLQkJCQkgTm8uIDExMSwgS3VhbmctRnUgTi4gUmQuLCBIc2luLUNodSBJbmR1Ci0JCQkJSFNJTkNIVSAgMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1FMSAgIChoZXgpCQlDb250cm9sIFByb2R1Y3RzLCBJbmMuCi0wMDBERTEgICAgIChiYXNlIDE2KQkJQ29udHJvbCBQcm9kdWN0cywgSW5jLgotCQkJCTE3MjQgTGFrZSBEcml2ZSBXZXN0Ci0JCQkJQ2hhbmhhc3NlbiBNTiA1NTMxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRTIgICAoaGV4KQkJQ01aIFNpc3RlbWkgRWxldHRyb25pY2kKLTAwMERFMiAgICAgKGJhc2UgMTYpCQlDTVogU2lzdGVtaSBFbGV0dHJvbmljaQotCQkJCVZpYSBkZWxsJ0FydGlnaW5hdG8sIDIxCi0JCQkJVmFzY29uIGRpIENhcmJvbmVyYSBUcmV2aXNvIDMxMDUwCi0JCQkJSVRBTFkKLQotMDAtMEQtRTMgICAoaGV4KQkJQVQgU3dlZGVuIEFCCi0wMDBERTMgICAgIChiYXNlIDE2KQkJQVQgU3dlZGVuIEFCCi0JCQkJUC5PLiBCb3ggMTE2NgotCQkJCUlzYWZqb3Jkc2dhdGFuIDMwQgotCQkJCUtpc3RhIFN0b2NraG9sbSBTRS0xNjQgMjYKLQkJCQlTV0VERU4KLQotMDAtMEQtRTQgICAoaGV4KQkJRElHSU5JQ1MsIEluYy4KLTAwMERFNCAgICAgKGJhc2UgMTYpCQlESUdJTklDUywgSW5jLgotCQkJCTE3OC03Ci0JCQkJUG9pLWRvbmcKLQkJCQlLYW5nbmFtLWd1IFNlb3VsIDEzNS05NjEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtRTUgICAoaGV4KQkJU2Ftc3VuZyBUaGFsZXMKLTAwMERFNSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIFRoYWxlcwotCQkJCTI1OSBHb25nZGFuLURvbmcKLQkJCQlHdW1pLUNpdHkgR3llb25nc2FuZ2J1ay1kbyA3MzAtOTA0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUU2ICAgKGhleCkJCVlPVU5HQk8gRU5HSU5FRVJJTkcgQ08uLExURAotMDAwREU2ICAgICAoYmFzZSAxNikJCVlPVU5HQk8gRU5HSU5FRVJJTkcgQ08uLExURAotCQkJCU10LjIyLCBKYWV1bmdhLXJpLCBKaWdzYW4tRXVwLAotCQkJCUNoZW9uYW4tc2hpIENodW5nY2hlb25nbmFtLWRvICMzMzAtODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBELUU3ICAgKGhleCkJCVNuYXAtb24gT0VNIEdyb3VwCi0wMDBERTcgICAgIChiYXNlIDE2KQkJU25hcC1vbiBPRU0gR3JvdXAKLQkJCQkyMzMzIEVhc3QgV2FsdG9uIEJsdmQuCi0JCQkJQXVidXJuIEhpbGxzIE1JIDQ4MzI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1FOCAgIChoZXgpCQlOYXNhY28gRWxlY3Ryb25pY3MgUHRlLiBMdGQKLTAwMERFOCAgICAgKGJhc2UgMTYpCQlOYXNhY28gRWxlY3Ryb25pY3MgUHRlLiBMdGQKLQkJCQlMZXZlbCA0LCBOYXNhY28gVGVjaCBDZW50cmUKLQkJCQk0OSwgQ2hhbmdpIFNvdXRoIEF2ZW51ZSAyCi0JCQkJNDg2MDU2Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTBELUU5ICAgKGhleCkJCU5hcGF0ZWNoIEFwcwotMDAwREU5ICAgICAoYmFzZSAxNikJCU5hcGF0ZWNoIEFwcwotCQkJCVJ1bmRvZnJiaXZlaiAyNzEsIDEKLQkJCQlOYWVydW0gIDI4NTAKLQkJCQlERU5NQVJLCi0KLTAwLTBELUVBICAgKGhleCkJCUtpbmd0ZWwgVGVsZWNvbW11bmljYXRpb24gQ29ycC4KLTAwMERFQSAgICAgKGJhc2UgMTYpCQlLaW5ndGVsIFRlbGVjb21tdW5pY2F0aW9uIENvcnAuCi0JCQkJMTQ3IEthbmcgTmluZyBTdC4KLQkJCQlIc2kgQ2hpaCBDaXR5IFRhaXBlaSBIc2llbiAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBELUVCICAgKGhleCkJCUNvbXBYcyBMaW1pdGVkCi0wMDBERUIgICAgIChiYXNlIDE2KQkJQ29tcFhzIExpbWl0ZWQKLQkJCQlSb2JlcnQgRGVuaG9sbSBIb3VzZQotCQkJCU51dGZpZWxkCi0JCQkJUmVkaGlsbCBTdXJyZXkgUkgxIDRIVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBELUVDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMERFQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUVEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMERFRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUVFICAgKGhleCkJCUFuZHJldyBSRiBQb3dlciBBbXBsaWZpZXIgR3JvdXAKLTAwMERFRSAgICAgKGJhc2UgMTYpCQlBbmRyZXcgUkYgUG93ZXIgQW1wbGlmaWVyIEdyb3VwCi0JCQkJNDAgVGVjaG5vbG9neSBEcml2ZQotCQkJCVdhcnJlbiBOSiAwNzA1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRUYgICAoaGV4KQkJU29jLiBDb29wLiBCaWxhbmNpYWkKLTAwMERFRiAgICAgKGJhc2UgMTYpCQlTb2MuIENvb3AuIEJpbGFuY2lhaQotCQkJCXZpYSBTLkZlcnJhcmkgMTYKLQkJCQlDYW1wb2dhbGxpYW5vIE1vZGVuYSA0MTAxMQotCQkJCUlUQUxZCi0KLTAwLTBELUYwICAgKGhleCkJCVFDT00gVEVDSE5PTE9HWSBJTkMuCi0wMDBERjAgICAgIChiYXNlIDE2KQkJUUNPTSBURUNITk9MT0dZIElOQy4KLQkJCQk3Ri4sIE5PIDE3OCwgTUlORyBDSFVBTiBFLiBSRC4sIFNFQy4gMywKLQkJCQlUQUlQRUkgIDEwNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtRjEgICAoaGV4KQkJSU9OSVggSU5DLgotMDAwREYxICAgICAoYmFzZSAxNikJCUlPTklYIElOQy4KLQkJCQlTc2FuZ3lvbmcgSVQgVHdpbiBUb3dlciA2MDQsIDQ0Mi0xNywgU2FuZ2RhZXdvbi1kb25nLCBKdW5nd29uLWd1LAotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2Mi0xMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEQtRjIgICAoaGV4KQkJUFJJVkFURQotMDAwREYyICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wRC1GMyAgIChoZXgpCQlBc21heCBTb2x1dGlvbnMKLTAwMERGMyAgICAgKGJhc2UgMTYpCQlBc21heCBTb2x1dGlvbnMKLQkJCQlUYXRhcnNrYSA1Ci0JCQkJQ3JhY293ICAzMC0xMDMKLQkJCQlQT0xBTkQKLQotMDAtMEQtRjQgICAoaGV4KQkJV2F0ZXJ0ZWsgQ28uCi0wMDBERjQgICAgIChiYXNlIDE2KQkJV2F0ZXJ0ZWsgQ28uCi0JCQkJUm9vbSAxMDA2LEhhaXRhaSBidWlsZGluZyxub3J0aCBzaSBIdWFuCi0JCQkJWmhvbmcgUm9hZCxIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgzCi0JCQkJQ0hJTkEKLQotMDAtMEQtRjUgICAoaGV4KQkJVGVsZXRyb25pY3MgSW50ZXJuYXRpb25hbCBJbmMuCi0wMDBERjUgICAgIChiYXNlIDE2KQkJVGVsZXRyb25pY3MgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJMiBDaG9rZSBDaGVycnkgUm9hZAotCQkJCVN1aXRlICMxMDEKLQkJCQlSb2NrdmlsbGUgTUQgMjA4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBELUY2ICAgKGhleCkJCVRlY2hub2xvZ3kgVGhlc2F1cnVzIENvcnAuCi0wMDBERjYgICAgIChiYXNlIDE2KQkJVGVjaG5vbG9neSBUaGVzYXVydXMgQ29ycC4KLQkJCQlOTy4gNiwgRWFzdCA0dGggU3QuIEtFUFoKLQkJCQlLQU9IU0lVTkcgIDgwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEQtRjcgICAoaGV4KQkJU3BhY2UgRHluYW1pY3MgTGFiCi0wMDBERjcgICAgIChiYXNlIDE2KQkJU3BhY2UgRHluYW1pY3MgTGFiCi0JCQkJMTY5NSBOLiBSZXNlYXJjaCBQYXJrIFdheQotCQkJCU5vcnRoIExvZ2FuIFVUIDg0MzQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRC1GOCAgIChoZXgpCQlPUkdBIEthcnRlbnN5c3RlbWUgR21iSAotMDAwREY4ICAgICAoYmFzZSAxNikJCU9SR0EgS2FydGVuc3lzdGVtZSBHbWJICi0JCQkJS29ucmFkLVp1c2UtUmluZyAxCi0JCQkJRmxpbnRiZWsgU2NobGVzd2lnLUhvbHN0ZWluIDI0MjIwCi0JCQkJR0VSTUFOWQotCi0wMC0wRC1GOSAgIChoZXgpCQlORFMgTGltaXRlZAotMDAwREY5ICAgICAoYmFzZSAxNikJCU5EUyBMaW1pdGVkCi0JCQkJT25lIEhlYXRocm93IEJvdWxldmFyZAotCQkJCTI4NiBCYXRoIFJvYWQKLQkJCQlXZXN0IERyYXl0b24gTWlkZGxlc2V4IFVCNyAwRFEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRC1GQSAgIChoZXgpCQlNaWNybyBDb250cm9sIFN5c3RlbXMgTHRkLgotMDAwREZBICAgICAoYmFzZSAxNikJCU1pY3JvIENvbnRyb2wgU3lzdGVtcyBMdGQuCi0JCQkJOC03IFNha3VyYWkKLQkJCQlTYWt1LXNoaSBOYWdhbm8gMzg1LTAwNTYKLQkJCQlKQVBBTgotCi0wMC0wRC1GQiAgIChoZXgpCQlLb21heCBBRwotMDAwREZCICAgICAoYmFzZSAxNikJCUtvbWF4IEFHCi0JCQkJSW5kdXN0cmllc3RyYXNzZSA2Ci0JCQkJRGllcmlrb24gTFUgNjAzNgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBELUZDICAgKGhleCkJCUlURk9SIEluYy4KLTAwMERGQyAgICAgKGJhc2UgMTYpCQlJVEZPUiBJbmMuCi0JCQkJSWNoaWJhbmNobyBUb2t5dSBCaWRnLiwKLQkJCQkyMSBJY2hpYmFubmN5byxDaGl5b2RhLWt1Ci0JCQkJVG9reW8gMTAyLTAwODIKLQkJCQlKQVBBTgotCi0wMC0wRC1GRCAgIChoZXgpCQlIdWdlcyBIaS1UZWNoIEluYy4sCi0wMDBERkQgICAgIChiYXNlIDE2KQkJSHVnZXMgSGktVGVjaCBJbmMuLAotCQkJCTdGLCAxODgsIFNlYy4yLCBDaHVuZyBIc2luZyBSb2FkLgotCQkJCUhzaW4gVGllbiBUYWlwZWkgSHNpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRC1GRSAgIChoZXgpCQlIYXVwcGF1Z2UgQ29tcHV0ZXIgV29ya3MsIEluYy4KLTAwMERGRSAgICAgKGJhc2UgMTYpCQlIYXVwcGF1Z2UgQ29tcHV0ZXIgV29ya3MsIEluYy4KLQkJCQk5MSBDYWJvdCBDb3VydAotCQkJCUhhdXBwYXVnZSBOZXcgWW9yayAxMTc4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEQtRkYgICAoaGV4KQkJQ0hFTk1JTkcgTU9MRCBJTkRVU1RSWSBDT1JQLgotMDAwREZGICAgICAoYmFzZSAxNikJCUNIRU5NSU5HIE1PTEQgSU5EVVNUUlkgQ09SUC4KLQkJCQkyRiBOby4gMjYsIExhbmUgNTEzLCBSZWkgS3VhbmcgUmQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTAwICAgKGhleCkJCUF0cmllCi0wMDBFMDAgICAgIChiYXNlIDE2KQkJQXRyaWUKLQkJCQkxMHRoIEZsb29yLCAxNCwgTGFuZSA2MDksIFNlYy4gNSwgQ2h1bmcgSHNpbiBSZC4sIFNhbiBDaHVuZyBDaXR5LAotCQkJCVRhaXBlaSBIc2llbiBTYW4gQ2h1bmcgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS0wMSAgIChoZXgpCQlBU0lQIFRlY2hub2xvZ2llcyBJbmMuCi0wMDBFMDEgICAgIChiYXNlIDE2KQkJQVNJUCBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTEwRi0yLCBOTy4zMjIsIFNlYy4xLCBHdWFuZ2Z1IFJkLiwKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTAyICAgKGhleCkJCUFkdmFudGVjaCBBTVQgSW5jLgotMDAwRTAyICAgICAoYmFzZSAxNikJCUFkdmFudGVjaCBBTVQgSW5jLgotCQkJCTY1NyBPcmx5IEF2ZS4KLQkJCQlEb3J2YWwgUXVlYmVjIEg5UCAxRzEKLQkJCQlDQU5BREEKLQotMDAtMEUtMDMgICAoaGV4KQkJRW11bGV4Ci0wMDBFMDMgICAgIChiYXNlIDE2KQkJRW11bGV4Ci0JCQkJMzMzMyBTdXNhbiBTdHJlZXQKLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0wNCAgIChoZXgpCQlDTUEvTWljcm9kaWFseXNpcyBBQgotMDAwRTA0ICAgICAoYmFzZSAxNikJCUNNQS9NaWNyb2RpYWx5c2lzIEFCCi0JCQkJRGFsdsOkZ2VuIDEwIC8gQm94IDIKLQkJCQlTb2xuYSAgMTcxIDE4Ci0JCQkJU1dFREVOCi0KLTAwLTBFLTA1ICAgKGhleCkJCVdJUkVMRVNTIE1BVFJJWCBDT1JQLgotMDAwRTA1ICAgICAoYmFzZSAxNikJCVdJUkVMRVNTIE1BVFJJWCBDT1JQLgotCQkJCVVOSVQgMUEtMzc1MSBOT1JUSCBGUkFTRVIgV0FZCi0JCQkJQlVSTkFCWSBCQyBWNUogNUc0Ci0JCQkJQ0FOQURBCi0KLTAwLTBFLTA2ICAgKGhleCkJCVRlYW0gU2ltb2NvIEx0ZAotMDAwRTA2ICAgICAoYmFzZSAxNikJCVRlYW0gU2ltb2NvIEx0ZAotCQkJCUZpZWxkIEhvdXNlCi0JCQkJVXR0b3hldGVyIE9sZCBSb2FkCi0JCQkJRGVyYnkgRGVyYnlzaGlyZSBERTEgMU5ICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtMDcgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTAwMEUwNyAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OCBMdW5kCi0JCQkJU1dFREVOCi0KLTAwLTBFLTA4ICAgKGhleCkJCUNpc2NvIExpbmtzeXMgTExDCi0wMDBFMDggICAgIChiYXNlIDE2KQkJQ2lzY28gTGlua3N5cyBMTEMKLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTA5ICAgKGhleCkJCVNoZW56aGVuIENvc2hpcCBTb2Z0d2FyZSBDby4sTFRELgotMDAwRTA5ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIENvc2hpcCBTb2Z0d2FyZSBDby4sTFRELgotCQkJCTcvRixCbG9jayBBLFcyIEJsZGcsSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssU2hlbnpoZW4sQ2hpbmEKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMEUtMEEgICAoaGV4KQkJU0FLVU1BIERFU0lHTiBPRkZJQ0UKLTAwMEUwQSAgICAgKGJhc2UgMTYpCQlTQUtVTUEgREVTSUdOIE9GRklDRQotCQkJCTY3NC0xMQotCQkJCUtVS0ktU0hJIFNBSVRBTUEgMzQ2LTAwMjkKLQkJCQlKQVBBTgotCi0wMC0wRS0wQiAgIChoZXgpCQlOZXRhYyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwRTBCICAgICAoYmFzZSAxNikJCU5ldGFjIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNkYsIEluY3ViYXRvciBCdWlsZGluZywgQ2hpbmEgQWNhZGVteSBvZiBTY2llbmNlICZUZWNoIERldmVsb3BtZW50LAotCQkJCU5vLjEgSGlnaC10ZWNoIFNvdXRoIFN0cmVldAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0wRS0wQyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAwRTBDICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJMjExMSBORSAgMjV0aCBBdmVudWUKLQkJCQlNUzogIEpGMy00MjAKLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTBEICAgKGhleCkJCUhFU0NIIFNjaHLDtmRlciBHbWJICi0wMDBFMEQgICAgIChiYXNlIDE2KQkJSEVTQ0ggU2NocsO2ZGVyIEdtYkgKLQkJCQlCb3NjaHN0cmFzc2UgOAotCQkJCU5ldXN0YWR0IE5pZWRlcnNhY2hzZW4gMzE1MzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLTBFICAgKGhleCkJCUVTQSBlbGV0dHJvbmljYSBTLlAuQS4KLTAwMEUwRSAgICAgKGJhc2UgMTYpCQlFU0EgZWxldHRyb25pY2EgUy5QLkEuCi0JCQkJVmlhIFAuIE1hc2NpYWRyaSA0L0EKLQkJCQlNYXJpYW5vIENvbWVuc2UgQ08gMjIwNjYKLQkJCQlJVEFMWQotCi0wMC0wRS0wRiAgIChoZXgpCQlFUk1NRQotMDAwRTBGICAgICAoYmFzZSAxNikJCUVSTU1FCi0JCQkJOSBydWUgTGF2b2lzaWVyCi0JCQkJVmVydC1MZS1QZXRpdCAgOTE3MTAKLQkJCQlGUkFOQ0UKLQotMDAtMEUtMTAgICAoaGV4KQkJQy1ndXlzLCBJbmMuCi0wMDBFMTAgICAgIChiYXNlIDE2KQkJQy1ndXlzLCBJbmMuCi0JCQkJSXp1bWkgR2FyZGVuIFdpbmcgMUYsIDEtNi0zCi0JCQkJUm9wcG9uZ2ksIE1pbmF0by1rdQotCQkJCVRva3lvICAxMDYtMDAzMgotCQkJCUpBUEFOCi0KLTAwLTBFLTExICAgKGhleCkJCUJEVCBCw7xyby0gdW5kIERhdGVudGVjaG5payBHbWJIICYgQ28uIEtHCi0wMDBFMTEgICAgIChiYXNlIDE2KQkJQkRUIELDvHJvLSB1bmQgRGF0ZW50ZWNobmlrIEdtYkggJiBDby4gS0cKLQkJCQlTYWxpbmUgMjkKLQkJCQlSb3R0d2VpbCBCYWRlbi1Xw7xydHRlbWJlcmcgRC03ODYyOAotCQkJCUdFUk1BTlkKLQotMDAtMEUtMTIgICAoaGV4KQkJQWRhcHRpdmUgTWljcm8gU3lzdGVtcyBJbmMuCi0wMDBFMTIgICAgIChiYXNlIDE2KQkJQWRhcHRpdmUgTWljcm8gU3lzdGVtcyBJbmMuCi0JCQkJNzg0MCBOb3J0aCA4NnRoIFN0LgotCQkJCU1pbHdhdWtlZSBXSSA1MzIyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMTMgICAoaGV4KQkJQWNjdS1Tb3J0IFN5c3RlbXMgaW5jLgotMDAwRTEzICAgICAoYmFzZSAxNikJCUFjY3UtU29ydCBTeXN0ZW1zIGluYy4KLQkJCQk1MTEgU2Nob29sIEhvdXNlIFJvYWQKLQkJCQlUZWxmb3JkIFBBIDE4OTY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0xNCAgIChoZXgpCQlWaXNpb25hcnkgU29sdXRpb25zLCBJbmMuCi0wMDBFMTQgICAgIChiYXNlIDE2KQkJVmlzaW9uYXJ5IFNvbHV0aW9ucywgSW5jLgotCQkJCTQxOTMgQ2FycGludGVyaWEgQXZlCi0JCQkJU3VpdGUgMTEKLQkJCQlDYXJwaW50ZXJpYSBDQSA5MzAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMTUgICAoaGV4KQkJVGFkbHlzIExURAotMDAwRTE1ICAgICAoYmFzZSAxNikJCVRhZGx5cyBMVEQKLQkJCQlJU1JBRUxJIFNISU1PTiAzCi0JCQkJUklTSE9OIGxFWllZT04gSVNSQUVMIDc1NjU0Ci0JCQkJSVNSQUVMCi0KLTAwLTBFLTE2ICAgKGhleCkJCVNvdXRoV2luZyBTLkwuCi0wMDBFMTYgICAgIChiYXNlIDE2KQkJU291dGhXaW5nIFMuTC4KLQkJCQlDL0F2aWxhLCA0OC01MAotCQkJCTNyZCBmbG9vcgotCQkJCUJhcmNlbG9uYSAgMDgwMDUKLQkJCQlTUEFJTgotCi0wMC0wRS0xNyAgIChoZXgpCQlQUklWQVRFCi0wMDBFMTcgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBFLTE4ICAgKGhleCkJCU15QSBUZWNobm9sb2d5Ci0wMDBFMTggICAgIChiYXNlIDE2KQkJTXlBIFRlY2hub2xvZ3kKLQkJCQkyMTAwIE11aXJ3b29kIFdheQotCQkJCVNhbiBKb3NlIENBIDk1MTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0xOSAgIChoZXgpCQlMb2dpY2FDTUcgUHR5IEx0ZAotMDAwRTE5ICAgICAoYmFzZSAxNikJCUxvZ2ljYUNNRyBQdHkgTHRkCi0JCQkJMTctMTkgT3Jpb24gUm9hZAotCQkJCUxhbmUgQ292ZSBOU1cgMjA2NgotCQkJCUFVU1RSQUxJQQotCi0wMC0wRS0xQSAgIChoZXgpCQlKUFMgQ29tbXVuaWNhdGlvbnMKLTAwMEUxQSAgICAgKGJhc2UgMTYpCQlKUFMgQ29tbXVuaWNhdGlvbnMKLQkJCQk1ODAwIERlcGFydHVyZSBEcml2ZQotCQkJCVJhbGVpZ2ggTkMgMjc2MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTFCICAgKGhleCkJCUlBViBHbWJICi0wMDBFMUIgICAgIChiYXNlIDE2KQkJSUFWIEdtYkgKLQkJCQlDYXJub3RzdHIuIDEKLQkJCQlCZXJsaW4gIDEwNTg3Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS0xQyAgIChoZXgpCQlIYWNoIENvbXBhbnkKLTAwMEUxQyAgICAgKGJhc2UgMTYpCQlIYWNoIENvbXBhbnkKLQkJCQk1NjAwIExpbmRiZXJnaCBEcml2ZQotCQkJCUxvdmVsYW5kIENPIDgwNTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0xRCAgIChoZXgpCQlBUklPTiBUZWNobm9sb2d5IEluYy4KLTAwMEUxRCAgICAgKGJhc2UgMTYpCQlBUklPTiBUZWNobm9sb2d5IEluYy4KLQkJCQkzRiwgUGljYSBCbGRnLCA4OTQtMiwgSG9neWUgMiBEb25nCi0JCQkJRG9uZ2FuLUd1Ci0JCQkJQW4tWWFuZyBDaXR5IEd5ZW9uZ2dpLURvIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS0xRSAgIChoZXgpCQlRTG9naWMgQ29ycG9yYXRpb24KLTAwMEUxRSAgICAgKGJhc2UgMTYpCQlRTG9naWMgQ29ycG9yYXRpb24KLQkJCQkyNjY1MCBBbGlzbyBWaWVqbyBQYXJrd2F5Ci0JCQkJQWxpc28gVmllam8gQ0EgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTFGICAgKGhleCkJCVRDTCBOZXR3b3JrcyBFcXVpcG1lbnQgQ28uLCBMdGQuCi0wMDBFMUYgICAgIChiYXNlIDE2KQkJVENMIE5ldHdvcmtzIEVxdWlwbWVudCBDby4sIEx0ZC4KLQkJCQlOby41IEluZHVzdHJpYWwgUm9hZCxTaGVrb3UKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDY3Ci0JCQkJQ0hJTkEKLQotMDAtMEUtMjAgICAoaGV4KQkJQUNDRVNTIFN5c3RlbXMgQW1lcmljYXMsIEluYy4KLTAwMEUyMCAgICAgKGJhc2UgMTYpCQlBQ0NFU1MgU3lzdGVtcyBBbWVyaWNhcywgSW5jLgotCQkJCTExODggRWFzdCBBcnF1ZXMgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0yMSAgIChoZXgpCQlNVFUgRnJpZWRyaWNoc2hhZmVuIEdtYkgKLTAwMEUyMSAgICAgKGJhc2UgMTYpCQlNVFUgRnJpZWRyaWNoc2hhZmVuIEdtYkgKLQkJCQlNYXliYWNocGxhdHogMQotCQkJCUZyaWVkcmljaHNoYWZlbiBCYWRlbiBXdWVydGVtYmVyZyA4ODA0MAotCQkJCUdFUk1BTlkKLQotMDAtMEUtMjIgICAoaGV4KQkJUFJJVkFURQotMDAwRTIyICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wRS0yMyAgIChoZXgpCQlJbmNpcGllbnQsIEluYy4KLTAwMEUyMyAgICAgKGJhc2UgMTYpCQlJbmNpcGllbnQsIEluYy4KLQkJCQkyMzAgVGhpcmQgQXZlLgotCQkJCTR0aCBGbG9vcgotCQkJCVdhbHRoYW0gTUEgMDI0NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTI0ICAgKGhleCkJCUh1d2VsbCBUZWNobm9sb2d5IEluYy4KLTAwMEUyNCAgICAgKGJhc2UgMTYpCQlIdXdlbGwgVGVjaG5vbG9neSBJbmMuCi0JCQkJMUYgODItMjEsIE1hamluIEJ1aWxkaW5nCi0JCQkJTm9uaHl1bi1kb25nLCBHYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtMjUgICAoaGV4KQkJSGFubmFlIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMEUyNSAgICAgKGJhc2UgMTYpCQlIYW5uYWUgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTRGLCBIeXVuamluIEJsZGcuLCAjNzk4LTMwLCBZZW9rc2FtLURvbmcKLQkJCQlLYW5nbmFtLUt1Ci0JCQkJU0VPVUwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtMjYgICAoaGV4KQkJR2luY29tIFRlY2hub2xvZ3kgQ29ycC4KLTAwMEUyNiAgICAgKGJhc2UgMTYpCQlHaW5jb20gVGVjaG5vbG9neSBDb3JwLgotCQkJCTE1Ri4sIE5vLiAyODQsIFNlYy4zLCBTYW5taW4gUmQuLCBUYW95dWFuIENpdHksCi0JCQkJVGFveXVhbiwgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtMjcgICAoaGV4KQkJQ3JlcmUgTmV0d29ya3MsIEluYy4KLTAwMEUyNyAgICAgKGJhc2UgMTYpCQlDcmVyZSBOZXR3b3JrcywgSW5jLgotCQkJCVJvb20gMTEwIEVUUkkgVEJJLCA1MiBFb2V1bi1kb25nCi0JCQkJWXVzZW9uZy1ndQotCQkJCURhZWplb24gIDMwNS0zMzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtMjggICAoaGV4KQkJRHluYW1pYyBSYXRpbmdzIFAvTAotMDAwRTI4ICAgICAoYmFzZSAxNikJCUR5bmFtaWMgUmF0aW5ncyBQL0wKLQkJCQlDL08gV2lsc29uIFRyYW5zZm9ybWVyIENvLgotCQkJCVdpbHNvbiBSZC4gKFBPIEJveCA1KQotCQkJCUdsZW4gV2F2ZXJsZXkgVmljdG9yaWEgMzE1MAotCQkJCUFVU1RSQUxJQQotCi0wMC0wRS0yOSAgIChoZXgpCQlTaGVzdGVyIENvbW11bmljYXRpb25zIEluYwotMDAwRTI5ICAgICAoYmFzZSAxNikJCVNoZXN0ZXIgQ29tbXVuaWNhdGlvbnMgSW5jCi0JCQkJMTU5IFMuIExpbmNvbG4KLQkJCQlTdWl0ZSAyMjEKLQkJCQlTcG9rYW5lIFdBIDk5MjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0yQSAgIChoZXgpCQlQUklWQVRFCi0wMDBFMkEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTBFLTJCICAgKGhleCkJCVNhZmFyaSBUZWNobm9sb2dpZXMKLTAwMEUyQiAgICAgKGJhc2UgMTYpCQlTYWZhcmkgVGVjaG5vbG9naWVzCi0JCQkJNjM4NTUgTTQwIEh3eQotCQkJCUxhd3RvbiBNSSA0OTA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtMkMgICAoaGV4KQkJTmV0Y29kZWMgY28uCi0wMDBFMkMgICAgIChiYXNlIDE2KQkJTmV0Y29kZWMgY28uCi0JCQkJNDAxIERhZWlvbiBTL1cgQ2VudGVyLCA0OCBKYW5nZG9uZwotCQkJCVl1c29uZ2d1Ci0JCQkJRGFlam9uICAzMDUtNzE1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLTJEICAgKGhleCkJCUh5dW5kYWkgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQuCi0wMDBFMkQgICAgIChiYXNlIDE2KQkJSHl1bmRhaSBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQkyMjMtMjIsIFNhbmdkYWV3b24tMWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBLeW91bmdraS1kbyA0NjItODA3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLTJFICAgKGhleCkJCUVkaW1heCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAwRTJFICAgICAoYmFzZSAxNikJCUVkaW1heCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTMsIFd1LUNodWFuIDNyZCBSb2FkLAotCQkJCVd1LUt1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlUYWlwZWkgSHNpZW4sICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTJGICAgKGhleCkJCURpc2V0cm9uaWMgTWVkaWNhbCBTeXN0ZW1zIEFHCi0wMDBFMkYgICAgIChiYXNlIDE2KQkJRGlzZXRyb25pYyBNZWRpY2FsIFN5c3RlbXMgQUcKLQkJCQlLaXJjaGJlcmdzdHJhc3NlIDE5MAotCQkJCUJ1cmdkb3JmIEJlcm4gMzQwMQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBFLTMwICAgKGhleCkJCUFFUkFTIE5ldHdvcmtzLCBJbmMuCi0wMDBFMzAgICAgIChiYXNlIDE2KQkJQUVSQVMgTmV0d29ya3MsIEluYy4KLQkJCQlQLk8uIEJveCA3MzMwCi0JCQkJTGFndW5hIE5pZ3VlbCBDQSA5MjYwNy03MzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0zMSAgIChoZXgpCQlPbHltcHVzIFNvZnQgSW1hZ2luZyBTb2x1dGlvbnMgR21iSAotMDAwRTMxICAgICAoYmFzZSAxNikJCU9seW1wdXMgU29mdCBJbWFnaW5nIFNvbHV0aW9ucyBHbWJICi0JCQkJSm9oYW5uLUtyYW5lLVdlZyAzOQotCQkJCU3DvG5zdGVyIDQ4MTQ5Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS0zMiAgIChoZXgpCQlLb250cm9uIE1lZGljYWwKLTAwMEUzMiAgICAgKGJhc2UgMTYpCQlLb250cm9uIE1lZGljYWwKLQkJCQlSZWluYWNoZXJzdHJhc3NlIDEzMQotCQkJCUJhc2VsICA0MDAyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEUtMzMgICAoaGV4KQkJU2h1a28gRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAwRTMzICAgICAoYmFzZSAxNikJCVNodWtvIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQlUT0hTSElOIEhJR0FTSEktSUtFQlVLVVJPIEJ1aWxkaW5nIDNGCi0JCQkJNS00NC0xNSxISUdBU0hJLUlLRUJVS1VSTyxUT1NISU1BLUtVCi0JCQkJVE9LWU8gS0FOVE9IIDE3MC0wMDYzCi0JCQkJSkFQQU4KLQotMDAtMEUtMzQgICAoaGV4KQkJTmV4R2VuIENpdHksIExQCi0wMDBFMzQgICAgIChiYXNlIDE2KQkJTmV4R2VuIENpdHksIExQCi0JCQkJMTY4MCBHbGVudmlsbGUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlSaWNoYXJkc29uIFRleGFzIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0zNSAgIChoZXgpCQlJbnRlbCBDb3JwCi0wMDBFMzUgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycAotCQkJCTIxMTEgTkUgMjV0aCBBdmUKLQkJCQlKRjMtNDIwCi0JCQkJSGlsbHNib3JvIE9SIDk3MTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0zNiAgIChoZXgpCQlIRUlORVNZUywgSW5jLgotMDAwRTM2ICAgICAoYmFzZSAxNikJCUhFSU5FU1lTLCBJbmMuCi0JCQkJM0YsIFN1bmdrd2FuZyBCbGRnLiA0NTYtMTMsIFN1bmduYWUtZG9uZwotCQkJCUthbmdkb25nLWd1Ci0JCQkJU2VvdWwgIDEzNC04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtMzcgICAoaGV4KQkJSGFybXMgJiBXZW5kZSBHbWJIICYgQ28uS0cKLTAwMEUzNyAgICAgKGJhc2UgMTYpCQlIYXJtcyAmIFdlbmRlIEdtYkggJiBDby5LRwotCQkJCUdyb3NzbW9vcmtlaHJlIDkKLQkJCQlIYW1idXJnICBELTIxMDc5Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS0zOCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBFMzggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0zOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBFMzkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0zQSAgIChoZXgpCQlDaXJydXMgTG9naWMKLTAwMEUzQSAgICAgKGJhc2UgMTYpCQlDaXJydXMgTG9naWMKLQkJCQkyOTAxIFZpYSBGb3J0dW5hCi0JCQkJQXVzdGluIFRYIDc4NzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS0zQiAgIChoZXgpCQlIYXdraW5nIFRlY2hub2xvZ2llcywgSW5jLgotMDAwRTNCICAgICAoYmFzZSAxNikJCUhhd2tpbmcgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTUyODFBIEJhcnJhbmNhIFBhcmt3YXkKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTNDICAgKGhleCkJCVRyYW5zYWN0IFRlY2hub2xvZ2llcyBJbmMKLTAwMEUzQyAgICAgKGJhc2UgMTYpCQlUcmFuc2FjdCBUZWNobm9sb2dpZXMgSW5jCi0JCQkJMjAgQm9tYXggRHJpdmUKLQkJCQlJdGhhY2EgTmV3IFlvcmsgMTQ4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTNEICAgKGhleCkJCVRlbGV2aWMgTi5WLgotMDAwRTNEICAgICAoYmFzZSAxNikJCVRlbGV2aWMgTi5WLgotCQkJCUxlbyBCZWthZXJ0bGFhbiAxCi0JCQkJSXplZ2VtICA4ODcwCi0JCQkJQkVMR0lVTQotCi0wMC0wRS0zRSAgIChoZXgpCQlTdW4gT3B0cm9uaWNzIEluYwotMDAwRTNFICAgICAoYmFzZSAxNikJCVN1biBPcHRyb25pY3MgSW5jCi0JCQkJNC0zOC00IEZ1Y2hpbm9iZS1ob25jaG91Ci0JCQkJU2FnYW1paGFyYSBLYW5hZ2F3YSAyMjktMDAwMgotCQkJCUpBUEFOCi0KLTAwLTBFLTNGICAgKGhleCkJCVNvcm9udGksIEluYy4KLTAwMEUzRiAgICAgKGJhc2UgMTYpCQlTb3JvbnRpLCBJbmMuCi0JCQkJMTIxNTkgQnVzaW5lc3MgUGFyayBEciwgU3VpdGUgMTQwCi0JCQkJRHJhcGVyIFV0YWggODQwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTQwICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAwRTQwICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wRS00MSAgIChoZXgpCQlOSUhPTiBNRUNIQVRST05JQ1MgQ08uLExURC4KLTAwMEU0MSAgICAgKGJhc2UgMTYpCQlOSUhPTiBNRUNIQVRST05JQ1MgQ08uLExURC4KLQkJCQk5LTYgU0hJT01JREFJLCBNSVlBTUFFLUtVCi0JCQkJS0FXQVNBS0ktU0hJIEtBTkFHQVdBLUtFTiAyMTYtMDAxMwotCQkJCUpBUEFOCi0KLTAwLTBFLTQyICAgKGhleCkJCU1vdGljIEluY29wb3JhdGlvbiBMdGQuCi0wMDBFNDIgICAgIChiYXNlIDE2KQkJTW90aWMgSW5jb3BvcmF0aW9uIEx0ZC4KLQkJCQlSb29tIDI5MDctOCwgV2luZHNvciAgSG91c2UKLQkJCQkzMTEgR2xvdWNlc3RlciBSb2FkLCBDYXVzZXdheSBCYXkKLQkJCQlIb25nIEtvbmcgIAotCQkJCUNISU5BCi0KLTAwLTBFLTQzICAgKGhleCkJCUctVGVrIEVsZWN0cm9uaWNzIFNkbi4gQmhkLgotMDAwRTQzICAgICAoYmFzZSAxNikJCUctVGVrIEVsZWN0cm9uaWNzIFNkbi4gQmhkLgotCQkJCTI0OTMgTXVraW0gMSwgTG9yb25nIFBlcnVzYWhhYW4gTGFwYW4KLQkJCQlLYXdhc2FuIFBlcmluZHVzdHJpYW4gUGVyYWkKLQkJCQlQZXJhaSBQZW5hbmcgMTM2MDAKLQkJCQlNQUxBWVNJQQotCi0wMC0wRS00NCAgIChoZXgpCQlEaWdpdGFsIDUsIEluYy4KLTAwMEU0NCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIDUsIEluYy4KLQkJCQkxMDEgR3JvdmVycyBNaWxsIFJkLgotCQkJCVN1aXRlIDIwMAotCQkJCUxhd3JlbmNldmlsbGUgTkogMDg2NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTQ1ICAgKGhleCkJCUJlaWppbmcgTmV3dHJ5IEVsZWN0cm9uaWMgVGVjaG5vbG9neSBMdGQKLTAwMEU0NSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIE5ld3RyeSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgTHRkCi0JCQkJUE8gQm94IDk1LCBOby4gMSBCZWkgU2hhIFRhbiwKLQkJCQlDaGFvIFlhbmcgUXUKLQkJCQlCZWlqaW5nICAxMDA4MwotCQkJCUNISU5BCi0KLTAwLTBFLTQ2ICAgKGhleCkJCU5paWdhdGEgU2VpbWl0c3UgQ28uLEx0ZC4KLTAwMEU0NiAgICAgKGJhc2UgMTYpCQlOaWlnYXRhIFNlaW1pdHN1IENvLixMdGQuCi0JCQkJMzMzNS0yLCBTaGltb25ha2EsIFNhbndhLW11cmEKLQkJCQlOYWtha3ViaWtpLWd1biBOaWlnYXRhIDk0My0wMjIyCi0JCQkJSkFQQU4KLQotMDAtMEUtNDcgICAoaGV4KQkJTkNJIFN5c3RlbSBDby4sTHRkLgotMDAwRTQ3ICAgICAoYmFzZSAxNikJCU5DSSBTeXN0ZW0gQ28uLEx0ZC4KLQkJCQkjMjA2LCBLYXlhbmcgVGVjaG5vLVRvd24sIDE0ODcsIEtheWFuZyAzIGRvbmcsIEthbmdzZW8tS3UsIFNlb3VsLCBLb3JlYQotCQkJCVNlb3VsICAxNTctODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLTQ4ICAgKGhleCkJCUxpcG1hbiBUcmFuc0FjdGlvbiBTb2x1dGlvbnMKLTAwMEU0OCAgICAgKGJhc2UgMTYpCQlMaXBtYW4gVHJhbnNBY3Rpb24gU29sdXRpb25zCi0JCQkJMTEgSGFhbWFsIFN0LgotCQkJCSBSb3NoLUhhYXlpbiAgNDgwOTIKLQkJCQlJU1JBRUwKLQotMDAtMEUtNDkgICAoaGV4KQkJRm9yc3dheSBTY2FuZGluYXZpYSBBQgotMDAwRTQ5ICAgICAoYmFzZSAxNikJCUZvcnN3YXkgU2NhbmRpbmF2aWEgQUIKLQkJCQlLYXBsYW5zZ2F0YW4gMTYgQgotCQkJCTU0MSAzNCBTa8O2dmRlIAotCQkJCVNXRURFTgotCi0wMC0wRS00QSAgIChoZXgpCQlDaGFuZ2NodW4gSHVheXUgV0VCUEFEIENvLixMVEQKLTAwMEU0QSAgICAgKGJhc2UgMTYpCQlDaGFuZ2NodW4gSHVheXUgV0VCUEFEIENvLixMVEQKLQkJCQk0MzcwIEdhb3hpbiBSb2FkLCBIaWdoLVRlY2gKLQkJCQlEZXZlbG9wbWVudCBBcmVhCi0JCQkJQ2hhbmdjaHVuIEppbGluIDEzMDAxMgotCQkJCUNISU5BCi0KLTAwLTBFLTRCICAgKGhleCkJCWF0cml1bSBjIGFuZCBpCi0wMDBFNEIgICAgIChiYXNlIDE2KQkJYXRyaXVtIGMgYW5kIGkKLQkJCQkxMjQtNCwgT2plb24tZG9uZywKLQkJCQlVaXdhbmctY2l0eSBLeXVuZ2dpLURvIDQzNy04MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtNEMgICAoaGV4KQkJQmVybWFpIEluYy4KLTAwMEU0QyAgICAgKGJhc2UgMTYpCQlCZXJtYWkgSW5jLgotCQkJCTQxMCBDYW1icmlkZ2UgQXZlCi0JCQkJMm5kIEZsb29yCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS00RCAgIChoZXgpCQlOdW1lc2EgSW5jLgotMDAwRTREICAgICAoYmFzZSAxNikJCU51bWVzYSBJbmMuCi0JCQkJNDQ0NCBXZXN0Z3JvdmUgU3VpdGUgMzAwCi0JCQkJQWRkaXNvbiBUWCA3NTAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNEUgICAoaGV4KQkJV2F2ZXBsdXMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMEU0RSAgICAgKGJhc2UgMTYpCQlXYXZlcGx1cyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTM0NyBIc2luSHUgMm5kIFJkLiwgTmVpSHUKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtNEYgICAoaGV4KQkJVHJhamV0IEdtYkgKLTAwMEU0RiAgICAgKGJhc2UgMTYpCQlUcmFqZXQgR21iSAotCQkJCVJlYmVucmluZyAzMwotCQkJCUJyYXVuc2Nod2VpZyBOZHMuIDM4MTA2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS01MCAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDAwRTUwICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NwotCQkJCUVkZWdlbSBBbnR3ZXJwIEItMjY1MAotCQkJCUJFTEdJVU0KLQotMDAtMEUtNTEgICAoaGV4KQkJdGVjbmEgZWxldHRyb25pY2Egc3JsCi0wMDBFNTEgICAgIChiYXNlIDE2KQkJdGVjbmEgZWxldHRyb25pY2Egc3JsCi0JCQkJdmlhIG1pZ2xpb2xpIDMwCi0JCQkJY2FzdGVsIHNhbiBwaWV0cm8gdGVybWUgYm9sb2duYSA0MDAyNAotCQkJCUlUQUxZCi0KLTAwLTBFLTUyICAgKGhleCkJCU9wdGl1bSBDb3Jwb3JhdGlvbgotMDAwRTUyICAgICAoYmFzZSAxNikJCU9wdGl1bSBDb3Jwb3JhdGlvbgotCQkJCTUwMCBIb3Jpem9uIERyCi0JCQkJU3VpdGUgNTA1Ci0JCQkJQ2hhbGZvbnQgUEEgMTg5MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTUzICAgKGhleCkJCUFWIFRFQ0ggQ09SUE9SQVRJT04KLTAwMEU1MyAgICAgKGJhc2UgMTYpCQlBViBURUNIIENPUlBPUkFUSU9OCi0JCQkJMTBGLEUgQnVpbGRpbmcsTm8uMTktMTEgU2FuIENodW5nIFJkLixOYW5LYW5nCi0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTU0ICAgKGhleCkJCUFscGhhQ2VsbCBXaXJlbGVzcyBMdGQuCi0wMDBFNTQgICAgIChiYXNlIDE2KQkJQWxwaGFDZWxsIFdpcmVsZXNzIEx0ZC4KLQkJCQkyMiBaYXJoaW4gc3RyZWV0Ci0JCQkJUmFhbmFuYSAgNDM2NjIKLQkJCQlJU1JBRUwKLQotMDAtMEUtNTUgICAoaGV4KQkJQVVWSVRSQU4KLTAwMEU1NSAgICAgKGJhc2UgMTYpCQlBVVZJVFJBTgotCQkJCTdjIGNoZW1pbiBkZXMgcHLDqHMKLQkJCQlNRVlMQU4gIDM4NDEwCi0JCQkJRlJBTkNFCi0KLTAwLTBFLTU2ICAgKGhleCkJCTRHIFN5c3RlbXMgR21iSCAmIENvLiBLRwotMDAwRTU2ICAgICAoYmFzZSAxNikJCTRHIFN5c3RlbXMgR21iSCAmIENvLiBLRwotCQkJCUphcnJlc3RyYXNzZSAyLTYKLQkJCQkyMjMwMyBIYW1idXJnIAotCQkJCUdFUk1BTlkKLQotMDAtMEUtNTcgICAoaGV4KQkJSXdvcmxkIE5ldHdvcmtpbmcsIEluYy4KLTAwMEU1NyAgICAgKGJhc2UgMTYpCQlJd29ybGQgTmV0d29ya2luZywgSW5jLgotCQkJCTEyNSBIYW5qdSBCbGRnLCBOb25oeXVuLURvbmcKLQkJCQlLYW5nLU5hbSBHdQotCQkJCVNlb3VsICAxMzUwMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtNTggICAoaGV4KQkJU29ub3MsIEluYy4KLTAwMEU1OCAgICAgKGJhc2UgMTYpCQlTb25vcywgSW5jLgotCQkJCTIyMyBFLiBEZSBMYSBHdWVycmEgU3QuCi0JCQkJU2FudGEgQmFyYmFyYSBDQSA5MzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNTkgICAoaGV4KQkJU0FHRU0gU0EKLTAwMEU1OSAgICAgKGJhc2UgMTYpCQlTQUdFTSBTQQotCQkJCTIsIHJ1ZSBkdSBwZXRpdCBBbGJpCi0JCQkJQ0VSR1kgU0FJTlQgQ0hSSVNUT1BIRSB2YWwgZCdPaXNlIDk1ODAwCi0JCQkJRlJBTkNFCi0KLTAwLTBFLTVBICAgKGhleCkJCVRFTEVGSUVMRCBpbmMuCi0wMDBFNUEgICAgIChiYXNlIDE2KQkJVEVMRUZJRUxEIGluYy4KLQkJCQkzRiwgS3VtYm8gQmxkZywgMi05LCBTZW9rY2hvbi1Eb25nCi0JCQkJU29uZ3BhLUd1Ci0JCQkJU2VvdWwgIDEzOC0xOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtNUIgICAoaGV4KQkJUGFya2VyVmlzaW9uIC0gRGlyZWN0MkRhdGEKLTAwMEU1QiAgICAgKGJhc2UgMTYpCQlQYXJrZXJWaXNpb24gLSBEaXJlY3QyRGF0YQotCQkJCTk0MzIgQmF5bWVhZG93cyBXYXkKLQkJCQlTdWl0ZSAxNTAKLQkJCQlKYWNrc29udmlsbGUgRkwgMzIyNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTVDICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDBFNUMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS01RCAgIChoZXgpCQlUcmlwbGUgUGxheSBUZWNobm9sb2dpZXMgQS9TCi0wMDBFNUQgICAgIChiYXNlIDE2KQkJVHJpcGxlIFBsYXkgVGVjaG5vbG9naWVzIEEvUwotCQkJCUhlcnN0ZWR2YW5nIDgKLQkJCQlBbGJlcnRzbHVuZCAgREstMjYyMAotCQkJCURFTk1BUksKLQotMDAtMEUtNUUgICAoaGV4KQkJUmFpc2Vjb20gVGVjaG5vbG9neQotMDAwRTVFICAgICAoYmFzZSAxNikJCVJhaXNlY29tIFRlY2hub2xvZ3kKLQkJCQkyIEZsb29yLCBTb3V0aCBCdWlsZGluZyBvZiBSYWluYm93IFBsYXphCi0JCQkJTm8uIDExIFNoYW5nZGkgSW5mb3JtYXRpb24gUm9hZAotCQkJCUhhaWRpYW4gRGlzdHJpY3QgQmVpamluZyAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0wRS01RiAgIChoZXgpCQlhY3Rpdi1uZXQgR21iSCAmIENvLiBLRwotMDAwRTVGICAgICAoYmFzZSAxNikJCWFjdGl2LW5ldCBHbWJIICYgQ28uIEtHCi0JCQkJS29ucmFkLVp1c2UtU3RyLiA0Ci0JCQkJQm9jaHVtICA0NDgwMQotCQkJCUdFUk1BTlkKLQotMDAtMEUtNjAgICAoaGV4KQkJMzYwU1VOIERpZ2l0YWwgQnJvYWRiYW5kIENvcnBvcmF0aW9uCi0wMDBFNjAgICAgIChiYXNlIDE2KQkJMzYwU1VOIERpZ2l0YWwgQnJvYWRiYW5kIENvcnBvcmF0aW9uCi0JCQkJMkYtMiwgTm8uMiwgSmlhbmJhIFJkLiwKLQkJCQlDaHVuZyBIbyBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS02MSAgIChoZXgpCQlNSUNST1RST0wgTElNSVRFRAotMDAwRTYxICAgICAoYmFzZSAxNikJCU1JQ1JPVFJPTCBMSU1JVEVECi0JCQkJMTYgRUxHQVIgQlVTSU5FU1MgQ0VOVFJFCi0JCQkJTU9TRUxFWSBST0FECi0JCQkJSEFMTE9XIFdPUkNFU1RFUiBXUjIgNk5KCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtNjIgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBFNjIgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMEUtNjMgICAoaGV4KQkJTGVta2UgRGlhZ25vc3RpY3MgR21iSAotMDAwRTYzICAgICAoYmFzZSAxNikJCUxlbWtlIERpYWdub3N0aWNzIEdtYkgKLQkJCQlSYWRlYnVyZ2VyIFN0ci4gNDcKLQkJCQlWb2xrZXJzZG9yZiBTYXhvbnkgMDE0NjgKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLTY0ICAgKGhleCkJCUVscGhlbCwgSW5jCi0wMDBFNjQgICAgIChiYXNlIDE2KQkJRWxwaGVsLCBJbmMKLQkJCQkzMjAwIFMuIEVscG1lciBTdC4KLQkJCQlNYWduYSBVVCA4NDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNjUgICAoaGV4KQkJVHJhbnNDb3JlCi0wMDBFNjUgICAgIChiYXNlIDE2KQkJVHJhbnNDb3JlCi0JCQkJODYwMCBKZWZmZXJzb24gU3QgTkUKLQkJCQlBbGJ1cXVlcnF1ZSBOTSA4NzExMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNjYgICAoaGV4KQkJSGl0YWNoaSBBZHZhbmNlZCBEaWdpdGFsLCBJbmMuCi0wMDBFNjYgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBBZHZhbmNlZCBEaWdpdGFsLCBJbmMuCi0JCQkJMjkyLCBZb3NoaWRhLWNobywgVG90c3VrYS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDI0NC0wODE3Ci0JCQkJSkFQQU4KLQotMDAtMEUtNjcgICAoaGV4KQkJRWx0aXMgTWljcm9lbGVjdHJvbmljcyBMdGQuCi0wMDBFNjcgICAgIChiYXNlIDE2KQkJRWx0aXMgTWljcm9lbGVjdHJvbmljcyBMdGQuCi0JCQkJVW5pdCA5MDJCLCA5L0YuLCBTdW5iZWFtIENlbnRyZQotCQkJCTI3LCBTaGluZyBZaXAgU3RyZWV0Ci0JCQkJS3d1biBUb25nIEtvd2xvb24gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBFLTY4ICAgKGhleCkJCUUtVE9QIE5ldHdvcmsgVGVjaG5vbG9neSBJbmMuCi0wMDBFNjggICAgIChiYXNlIDE2KQkJRS1UT1AgTmV0d29yayBUZWNobm9sb2d5IEluYy4KLQkJCQlOby4gNywgU2hpbiBTaGluIFJkLiwKLQkJCQlUYWluYW4gIDcwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtNjkgICAoaGV4KQkJQ2hpbmEgRWxlY3RyaWMgUG93ZXIgUmVzZWFyY2ggSW5zdGl0dXRlCi0wMDBFNjkgICAgIChiYXNlIDE2KQkJQ2hpbmEgRWxlY3RyaWMgUG93ZXIgUmVzZWFyY2ggSW5zdGl0dXRlCi0JCQkJTm8uMTUgWGlhb3lpbmcgRWFzdCBSb2FkLFFpbmdoZSxCZWlqaW5nLENoaW5hCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMEUtNkEgICAoaGV4KQkJM0NvbSBMdGQKLTAwMEU2QSAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cyBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEUtNkIgICAoaGV4KQkJSmFuaXR6YSBlbGVjdHJvbmljcyBHbWJICi0wMDBFNkIgICAgIChiYXNlIDE2KQkJSmFuaXR6YSBlbGVjdHJvbmljcyBHbWJICi0JCQkJVm9yIGRlbSBQb2xzdMO8Y2sgMQotCQkJCUxhaG5hdSBIZXNzZW4gMzU2MzMKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLTZDICAgKGhleCkJCURldmljZSBEcml2ZXJzIExpbWl0ZWQKLTAwMEU2QyAgICAgKGJhc2UgMTYpCQlEZXZpY2UgRHJpdmVycyBMaW1pdGVkCi0JCQkJMS01LTEtMTAzCi0JCQkJV2FrYW1hdHN1LWNobwotCQkJCUZ1Y2h1LXNoaSBUb2t5byAxODMwMDA1Ci0JCQkJSkFQQU4KLQotMDAtMEUtNkQgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0wMDBFNkQgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0JCQkJMjI4OCwgT2F6YS1PaHNoaW5vaGFyYSwgWWFzdS1jaG8sCi0JCQkJWWFzdS1ndW4gU2hpZ2EgNTIwLTIzOTMKLQkJCQlKQVBBTgotCi0wMC0wRS02RSAgIChoZXgpCQlNSUNSRUxFQyAgRUxFQ1RST05JQ1MgUy5BCi0wMDBFNkUgICAgIChiYXNlIDE2KQkJTUlDUkVMRUMgIEVMRUNUUk9OSUNTIFMuQQotCQkJCTE2IElTTUlOSVMgU1RSLgotCQkJCUFUSEVOUyBBRUdBTEVPIDEyMjQxCi0JCQkJR1JFRUNFCi0KLTAwLTBFLTZGICAgKGhleCkJCUlSSVMgQ29ycG9yYXRpb24gQmVyaGFkCi0wMDBFNkYgICAgIChiYXNlIDE2KQkJSVJJUyBDb3Jwb3JhdGlvbiBCZXJoYWQKLQkJCQlJUklTIFNtYXJ0IFRlY2hub2xvZ3kgQ29tcGxleAotCQkJCVRlY2hub2xvZ3kgUGFyayBNYWxheXNpYSwgQnVraXQgSmFsaWwKLQkJCQlLdWFsYSBMdW1wdXIgV1AgNTcwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0wRS03MCAgIChoZXgpCQlpbjIgTmV0d29ya3MKLTAwMEU3MCAgICAgKGJhc2UgMTYpCQlpbjIgTmV0d29ya3MKLQkJCQkzMjAgVyAgMjAwIFMKLQkJCQlTdWl0ZSAjMzgwCi0JCQkJU0xDIFVUIDg0MTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS03MSAgIChoZXgpCQlHZW1zdGFyIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgTHRkLgotMDAwRTcxICAgICAoYmFzZSAxNikJCUdlbXN0YXIgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBMdGQuCi0JCQkJVW5pdCAyMDEsIFN0dWxleCBob3VzZSwgNjk4IHByaW5jZSBlZHdhcmQgcm9hZCBlYXN0LCBzYW4gcG8ga29uZywgS29sd29vbgotCQkJCUhvbmcgS29uZyAgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBFLTcyICAgKGhleCkJCUNUUyBlbGVjdHJvbmljcwotMDAwRTcyICAgICAoYmFzZSAxNikJCUNUUyBlbGVjdHJvbmljcwotCQkJCUNvcnNvIFZlcmNlbGxpIDMzMgotCQkJCUl2cmVhIFRvcmlubyAxMDAxNQotCQkJCUlUQUxZCi0KLTAwLTBFLTczICAgKGhleCkJCVRwYWNrIEEvUwotMDAwRTczICAgICAoYmFzZSAxNikJCVRwYWNrIEEvUwotCQkJCUxhdXRydXBiamVyZyA3IC0gMTEKLQkJCQlESyAyNzUwICBCYWxsZXJ1cCAgREsgMjc1MAotCQkJCURFTk1BUksKLQotMDAtMEUtNzQgICAoaGV4KQkJU29sYXIgVGVsZWNvbS4gVGVjaAotMDAwRTc0ICAgICAoYmFzZSAxNikJCVNvbGFyIFRlbGVjb20uIFRlY2gKLQkJCQlCIEIvRCwgNEYsIFNhbWhvIFZlbnR1cmUgVG93ZXIKLQkJCQkjMjc1LTYsIFlhbmdqYWUtRG9uZywgU2VjaG8tR3UKLQkJCQlTZW91bCAgMTM3LTk0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS03NSAgIChoZXgpCQlOZXcgWW9yayBBaXIgQnJha2UgQ29ycC4KLTAwMEU3NSAgICAgKGJhc2UgMTYpCQlOZXcgWW9yayBBaXIgQnJha2UgQ29ycC4KLQkJCQk3NDggU3RhcmJ1Y2sgQXZlLgotCQkJCVdhdGVydG93biBOWSAxMzYwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtNzYgICAoaGV4KQkJR0VNU09DIElOTk9WSVNJT04gSU5DLgotMDAwRTc2ICAgICAoYmFzZSAxNikJCUdFTVNPQyBJTk5PVklTSU9OIElOQy4KLQkJCQk5RixOby41MTYsU2VjLDFOZWlodSBSZC4sCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTc3ICAgKGhleCkJCURlY3J1LCBJbmMuCi0wMDBFNzcgICAgIChiYXNlIDE2KQkJRGVjcnUsIEluYy4KLQkJCQkyNzUgU2hvcmVsaW5lIERyCi0JCQkJU3VpdGUgNDUwCi0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS03OCAgIChoZXgpCQlBbXRlbGNvCi0wMDBFNzggICAgIChiYXNlIDE2KQkJQW10ZWxjbwotCQkJCTQ4MDAgQ3VydGluIERyaXZlCi0JCQkJTWNGYXJsYW5kIFdJIDUzNTU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS03OSAgIChoZXgpCQlBbXBsZSBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDBFNzkgICAgIChiYXNlIDE2KQkJQW1wbGUgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTQwMzQgQ2xpcHBlciBDdC4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS03QSAgIChoZXgpCQlHZW1Xb24gQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDBFN0EgICAgIChiYXNlIDE2KQkJR2VtV29uIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTNGTC4sTk8uMzIsTGFuZSAxMzUsU2hpYW5qZW5nIDl0aCBSZC4sSnViZWkgQ2l0eQotCQkJCUhzaW5jaHUgIDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtN0IgICAoaGV4KQkJVG9zaGliYQotMDAwRTdCICAgICAoYmFzZSAxNikJCVRvc2hpYmEKLQkJCQkyLTksIFN1ZWhpcm8tQ2hvCi0JCQkJT21lIFRva3lvIDE5ODg3MTAKLQkJCQlKQVBBTgotCi0wMC0wRS03QyAgIChoZXgpCQlUZWxldmVzIFMuQS4KLTAwMEU3QyAgICAgKGJhc2UgMTYpCQlUZWxldmVzIFMuQS4KLQkJCQlSdWEgQmVuZWZpY2EgQ29ueG8gMTcKLQkJCQlTYW50aWFnbyBkZSBDb21wb3N0ZWxhIENvcnXDsWEgMTU3MDYKLQkJCQlTUEFJTgotCi0wMC0wRS03RCAgIChoZXgpCQlFbGVjdHJvbmljcyBMaW5lIDMwMDAgTHRkLgotMDAwRTdEICAgICAoYmFzZSAxNikJCUVsZWN0cm9uaWNzIExpbmUgMzAwMCBMdGQuCi0JCQkJMiBHcmFuaXQgU3QuCi0JCQkJUGV0YWggVGlrdmEgS2lyeWFyIEFyaWUgNDQ5MTMwCi0JCQkJSVNSQUVMCi0KLTAwLTBFLTdFICAgKGhleCkJCWlvblNpZ24gT3kKLTAwMEU3RSAgICAgKGJhc2UgMTYpCQlpb25TaWduIE95Ci0JCQkJUC5PLkJPWCAgMjQ2Ci0JCQkJRkktMjYxMDEKLQkJCQlSYXVtYSAgCi0JCQkJRklOTEFORAotCi0wMC0wRS03RiAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAwRTdGICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkgU291dGgKLQkJCQlNUzA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTgwICAgKGhleCkJCVRob21zb24gVGVjaG5vbG9neSBJbmMKLTAwMEU4MCAgICAgKGJhc2UgMTYpCQlUaG9tc29uIFRlY2hub2xvZ3kgSW5jCi0JCQkJOTA4N0EgMTk4dGggU1QKLQkJCQlTdXJyZXkgQkMgVjFNLTNCMQotCQkJCUNBTkFEQQotCi0wMC0wRS04MSAgIChoZXgpCQlEZXZpY2VzY2FwZSBTb2Z0d2FyZSwgSW5jLgotMDAwRTgxICAgICAoYmFzZSAxNikJCURldmljZXNjYXBlIFNvZnR3YXJlLCBJbmMuCi0JCQkJMTAwMCBNYXJpbmEgQmx2ZAotCQkJCVN1aXRlIDQwMAotCQkJCUJyaXNiYW5lIENBIDk0MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS04MiAgIChoZXgpCQlDb21tdGVjaCBXaXJlbGVzcwotMDAwRTgyICAgICAoYmFzZSAxNikJCUNvbW10ZWNoIFdpcmVsZXNzCi0JCQkJMTE1LzM5NiBTY2FyYm9yb3VnaCBCZWFjaCBSZAotCQkJCU9zYm9ybmUgUGFyawotCQkJCVBlcnRoIFdBIDYwMTcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMEUtODMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRTgzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtODQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRTg0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtODUgICAoaGV4KQkJQ2F0YWx5c3QgRW50ZXJwcmlzZXMsIEluYy4KLTAwMEU4NSAgICAgKGJhc2UgMTYpCQlDYXRhbHlzdCBFbnRlcnByaXNlcywgSW5jLgotCQkJCTMzODUgU2NvdHQgQmx2ZAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS04NiAgIChoZXgpCQlBbGNhdGVsIE5vcnRoIEFtZXJpY2EKLTAwMEU4NiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIE5vcnRoIEFtZXJpY2EKLQkJCQkyMzAxIFN1Z2FyIEJ1c2ggUm9hZAotCQkJCVJhbGVpZ2ggTkMgMjc2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTg3ICAgKGhleCkJCWFkcCBHYXVzZWxtYW5uIEdtYkgKLTAwMEU4NyAgICAgKGJhc2UgMTYpCQlhZHAgR2F1c2VsbWFubiBHbWJICi0JCQkJQm9zY2hzdHIuIDgKLQkJCQlMdWViYmVja2UgTlJXIDMyMzEyCi0JCQkJR0VSTUFOWQotCi0wMC0wRS04OCAgIChoZXgpCQlWSURFT1RST04gQ09SUC4KLTAwMEU4OCAgICAgKGJhc2UgMTYpCQlWSURFT1RST04gQ09SUC4KLQkJCQkxNy0xNiwyLUNIT01FCi0JCQkJSEFDSElPSkkgVE9LWU8gMTkzLTA4MzUKLQkJCQlKQVBBTgotCi0wMC0wRS04OSAgIChoZXgpCQlDTEVNQVRJQwotMDAwRTg5ICAgICAoYmFzZSAxNikJCUNMRU1BVElDCi0JCQkJMTAxIHJ1ZSBQaWVycmUgU0VNQVJECi0JCQkJQ0hBVElMTE9OIFIuUC4gOTIzMjAKLQkJCQlGUkFOQ0UKLQotMDAtMEUtOEEgICAoaGV4KQkJQXZhcmEgVGVjaG5vbG9naWVzIFB0eS4gTHRkLgotMDAwRThBICAgICAoYmFzZSAxNikJCUF2YXJhIFRlY2hub2xvZ2llcyBQdHkuIEx0ZC4KLQkJCQk5IEJ1c2luZXNzIFBhcmsgRHJpdmUKLQkJCQlOb3R0aW5nIEhpbGwgVmljdG9yaWEgMzE2OAotCQkJCUFVU1RSQUxJQQotCi0wMC0wRS04QiAgIChoZXgpCQlBc3RhcnRlIFRlY2hub2xvZ3kgQ28sIEx0ZC4KLTAwMEU4QiAgICAgKGJhc2UgMTYpCQlBc3RhcnRlIFRlY2hub2xvZ3kgQ28sIEx0ZC4KLQkJCQkxMUYsIE5vLiAxNjYgRGFoLVllaCBSZC4KLQkJCQlQZWl0b3UsIFRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS04QyAgIChoZXgpCQlTaWVtZW5zIEFHIEEmRCBFVAotMDAwRThDICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQUcgQSZEIEVUCi0JCQkJU2llbWVuc3N0cmHDg8W4ZSAxMAotCQkJCVJlZ2Vuc2J1cmcgIDkzMDU1Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS04RCAgIChoZXgpCQlTeXN0ZW1zIGluIFByb2dyZXNzIEhvbGRpbmcgR21iSAotMDAwRThEICAgICAoYmFzZSAxNikJCVN5c3RlbXMgaW4gUHJvZ3Jlc3MgSG9sZGluZyBHbWJICi0JCQkJRXhlcnppZXJwbGF0enN0cmFzc2UgODUKLQkJCQlHcmF6IFN0eXJpYSA4MDUxCi0JCQkJQVVTVFJJQQotCi0wMC0wRS04RSAgIChoZXgpCQlTcGFya0xBTiBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAwRThFICAgICAoYmFzZSAxNikJCVNwYXJrTEFOIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJM0ZsIC4gLCBOby4gMjQ2LCBTZWMuIDEsIE5laWh1IFJvYWQuLCBOZWlodSBDaGl1LAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS04RiAgIChoZXgpCQlTZXJjb21tIENvcnAuCi0wMDBFOEYgICAgIChiYXNlIDE2KQkJU2VyY29tbSBDb3JwLgotCQkJCTNGLE5vLjgxLFl1LVlpaCBSZC4sQ2h1LU5hbiBDaGVuCi0JCQkJTWlhby1MaWggSHN1YW4gIDM1MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtOTAgICAoaGV4KQkJUE9OSUNPIENPUlAuCi0wMDBFOTAgICAgIChiYXNlIDE2KQkJUE9OSUNPIENPUlAuCi0JCQkJNjAyLCBBY2UgVHdpbiBUb3dlciAxLCAyMTItMSBHdXJvLWRvbmcKLQkJCQlHdXJvZ3UgU2VvdWwgMTUyLTc2NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS05MSAgIChoZXgpCQlOYXZpY28gQXVja2xhbmQgTHRkCi0wMDBFOTEgICAgIChiYXNlIDE2KQkJTmF2aWNvIEF1Y2tsYW5kIEx0ZAotCQkJCTE3LTIxIEthd2FuYSBTdAotCQkJCU5vcnRoY290ZSBBdWNrbGFuZCAKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wRS05MiAgIChoZXgpCQlNaWxsaW5ldCBDby4sIEx0ZC4KLTAwMEU5MiAgICAgKGJhc2UgMTYpCQlNaWxsaW5ldCBDby4sIEx0ZC4KLQkJCQkyRiwgV2VzdCBCdWlsZGluZywgSVQgVmVudHVyZSBUb3dlciwgNzgsIEdhcmFrYm9uLWRvbmcKLQkJCQlTb25ncGEtZ3UgU2VvdWwgMTM4LTE2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS05MyAgIChoZXgpCQlNaWzDqW5pbyAzIFNpc3RlbWFzIEVsZWN0csOzbmljb3MsIExkYS4KLTAwMEU5MyAgICAgKGJhc2UgMTYpCQlNaWzDqW5pbyAzIFNpc3RlbWFzIEVsZWN0csOzbmljb3MsIExkYS4KLQkJCQlFZGlmw61jaW8gVmlhIE5vcnRlLCBSLiBFc3BpZG8gMTY0QyBTNDAzCi0JCQkJTWFpYSBNaW5obyA0NDcwLTE3NwotCQkJCVBPUlRVR0FMCi0KLTAwLTBFLTk0ICAgKGhleCkJCU1hYXMgSW50ZXJuYXRpb25hbCBCVgotMDAwRTk0ICAgICAoYmFzZSAxNikJCU1hYXMgSW50ZXJuYXRpb25hbCBCVgotCQkJCVNjaWVuY2UgUGFyayBFaW5kaG92ZW4gNTA1MQotCQkJCVNvbiBOb29yZCBCcmFiYW50IE5MLTU2OTIgRUIKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRS05NSAgIChoZXgpCQlGdWppeWEgRGVua2kgU2Vpc2FrdXNobyBDby4sTHRkLgotMDAwRTk1ICAgICAoYmFzZSAxNikJCUZ1aml5YSBEZW5raSBTZWlzYWt1c2hvIENvLixMdGQuCi0JCQkJOEYgRnVrdXNoaW1hIEJMREcuIDYtMjUtMTEsTmlzaGktR290YW5kYQotCQkJCVNoaW5hZ2F3YS1LdSBUb2t5byAxNDEtMDAzMQotCQkJCUpBUEFOCi0KLTAwLTBFLTk2ICAgKGhleCkJCUN1YmljIERlZmVuc2UgQXBwbGljYXRpb25zLCBJbmMuCi0wMDBFOTYgICAgIChiYXNlIDE2KQkJQ3ViaWMgRGVmZW5zZSBBcHBsaWNhdGlvbnMsIEluYy4KLQkJCQlQLk8uIEJveCA4NTU4NwotCQkJCTkzMzMgQmFsYm9hIEF2ZW51ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjE4Ni01NTg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS05NyAgIChoZXgpCQlVbHRyYWNrZXIgVGVjaG5vbG9neSBDTy4sIEluYwotMDAwRTk3ICAgICAoYmFzZSAxNikJCVVsdHJhY2tlciBUZWNobm9sb2d5IENPLiwgSW5jCi0JCQkJMTRGLTEsIE5vLiA4ODgsIEppbmdndW8gUm9hZCwgVGFveXVhbiBDaXR5LAotCQkJCVRhb3l1YW4gIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtOTggICAoaGV4KQkJSE1FIENsZWFyLUNvbSBMVEQuCi0wMDBFOTggICAgIChiYXNlIDE2KQkJSE1FIENsZWFyLUNvbSBMVEQuCi0JCQkJNzQwMCBCZWFjaCBEcml2ZQotCQkJCVdhdGVyYmVhY2gKLQkJCQlDYW1icmlkZ2VzaGlyZSAgQ0IyNSA5VFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS05OSAgIChoZXgpCQlTcGVjdHJ1bSBEaWdpdGFsLCBJbmMKLTAwMEU5OSAgICAgKGJhc2UgMTYpCQlTcGVjdHJ1bSBEaWdpdGFsLCBJbmMKLQkJCQkxMjUwMiBFeGNoYW5nZSBEcml2ZSwgU3VpdGUgNDQwCi0JCQkJU3RhZmZvcmQgVFggNzc0NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLTlBICAgKGhleCkJCUJPRSBURUNITk9MT0dZIEdST1VQIENPLixMVEQKLTAwMEU5QSAgICAgKGJhc2UgMTYpCQlCT0UgVEVDSE5PTE9HWSBHUk9VUCBDTy4sTFRECi0JCQkJTm8uMTAgSml1eGlhbnFpYW8gUm9hZCxDaGFveWFuZyBEaXN0cmljdCxCZWlqaW5nLFBSQwotCQkJCUJlaWppbmcgIDEwMDAxNgotCQkJCUNISU5BCi0KLTAwLTBFLTlCICAgKGhleCkJCUFtYml0IE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbgotMDAwRTlCICAgICAoYmFzZSAxNikJCUFtYml0IE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbgotCQkJCTVGLTEsIDUgSHNpbi1BbiBSZC4gU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLTlDICAgKGhleCkJCVBlbXN0YXIKLTAwMEU5QyAgICAgKGJhc2UgMTYpCQlQZW1zdGFyCi0JCQkJMzUzNSBUZWNobm9sb2d5IERyaXZlCi0JCQkJUm9jaGVzdGVyIE1OIDU1OTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS05RCAgIChoZXgpCQlUaXNjYWxpIFVLIEx0ZAotMDAwRTlEICAgICAoYmFzZSAxNikJCVRpc2NhbGkgVUsgTHRkCi0JCQkJMjAgQnJvYWR3aWNrIFN0cmVldAotCQkJCUxvbmRvbiAgVzFGIDhIVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBFLTlFICAgKGhleCkJCVRvcGZpZWxkIENvLiwgTHRkCi0wMDBFOUUgICAgIChiYXNlIDE2KQkJVG9wZmllbGQgQ28uLCBMdGQKLQkJCQk0dGggZmxvb3IsIERlb2tzYW4gQmxkZyAyNjAtNCwgU2VvaHl1bi1kb25nCi0JCQkJU2VvbmduYW0gQnVuZGFuZy1LdSA0NjMtODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLTlGICAgKGhleCkJCVRFTUlDIFNEUyBHbWJICi0wMDBFOUYgICAgIChiYXNlIDE2KQkJVEVNSUMgU0RTIEdtYkgKLQkJCQlTb2VmbGluZ2VyIFN0cmFzc2UgMTAwCi0JCQkJVWxtICA4OTA3NwotCQkJCUdFUk1BTlkKLQotMDAtMEUtQTAgICAoaGV4KQkJTmV0S2xhc3MgVGVjaG5vbG9neSBJbmMuCi0wMDBFQTAgICAgIChiYXNlIDE2KQkJTmV0S2xhc3MgVGVjaG5vbG9neSBJbmMuCi0JCQkJMkYtMSwgTm8uMzAsVGFpIFl1ZW4gU3RyZWV0LAotCQkJCUNodXBlaSBDaXR5LCBIc2luY2h1LCAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLUExICAgKGhleCkJCUZvcm1vc2EgVGVsZXRlayBDb3Jwb3JhdGlvbgotMDAwRUExICAgICAoYmFzZSAxNikJCUZvcm1vc2EgVGVsZXRlayBDb3Jwb3JhdGlvbgotCQkJCTM1OCxIdWF5YSAybmQgUmQuCi0JCQkJR3VlaXNoYW4gU2hpYW5nCi0JCQkJVGFveXVhbiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1BMiAgIChoZXgpCQlNY0FmZWUsIEluYwotMDAwRUEyICAgICAoYmFzZSAxNikJCU1jQWZlZSwgSW5jCi0JCQkJMzUwIFNXIDEydGggQXZlbnVlCi0JCQkJRGVlcmZpZWxkIEJlYWNoIEZMIDMzNDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1BMyAgIChoZXgpCQlDTkNSLUlUIENPLixMVEQsSGFuZ1pob3UgUC5SLkNISU5BCi0wMDBFQTMgICAgIChiYXNlIDE2KQkJQ05DUi1JVCBDTy4sTFRELEhhbmdaaG91IFAuUi5DSElOQQotCQkJCVh1YW5UYW4gcm9hZCBOTzEuZGVwYXJ0bWVudCByb29tNTA0LAotCQkJCUhhbmdaaG91IFpoZUppYW5nIDMxMDAwMwotCQkJCUNISU5BCi0KLTAwLTBFLUE0ICAgKGhleCkJCUNlcnRhbmNlIEluYy4KLTAwMEVBNCAgICAgKGJhc2UgMTYpCQlDZXJ0YW5jZSBJbmMuCi0JCQkJMTY1MCBTdW5mbG93ZXIgQXZlLgotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjYtMTUxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQTUgICAoaGV4KQkJQkxJUCBTeXN0ZW1zCi0wMDBFQTUgICAgIChiYXNlIDE2KQkJQkxJUCBTeXN0ZW1zCi0JCQkJSGFla2tlbiAyCi0JCQkJVm9kc2tvdiBWZXN0ZXIgSGFzc2luZyA5MzEwCi0JCQkJREVOTUFSSwotCi0wMC0wRS1BNiAgIChoZXgpCQlBU1VTVEVLIENPTVBVVEVSIElOQy4KLTAwMEVBNiAgICAgKGJhc2UgMTYpCQlBU1VTVEVLIENPTVBVVEVSIElOQy4KLQkJCQlOby4gMTUwLCBMaS1UZSBSZC4sUGVpdG91Ci0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLUE3ICAgKGhleCkJCUVuZGFjZSBUZWNobm9sb2d5Ci0wMDBFQTcgICAgIChiYXNlIDE2KQkJRW5kYWNlIFRlY2hub2xvZ3kKLQkJCQk4NSBBbGV4YW5kcmEgU3RyZWV0Ci0JCQkJSGFtaWx0b24gIDMyMDQKLQkJCQlORVcgWkVBTEFORAotCi0wMC0wRS1BOCAgIChoZXgpCQlVbml0ZWQgVGVjaG5vbG9naXN0cyBFdXJvcGUgTGltaXRlZAotMDAwRUE4ICAgICAoYmFzZSAxNikJCVVuaXRlZCBUZWNobm9sb2dpc3RzIEV1cm9wZSBMaW1pdGVkCi0JCQkJVVRFTCBMYWJvcmF0b3JpZXMsIFdvbHZlcyBGYXJtIExhbmUKLQkJCQlJcHN3aWNoIFJvYWQKLQkJCQlIYWRsZWlnaCBTdWZmb2xrIElQNyA2QkgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS1BOSAgIChoZXgpCQlTaGFuZ2hhaSBYdW4gU2hpIENvbW11bmljYXRpb25zIEVxdWlwbWVudCBMdGQuIENvLgotMDAwRUE5ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFh1biBTaGkgQ29tbXVuaWNhdGlvbnMgRXF1aXBtZW50IEx0ZC4gQ28uCi0JCQkJSGktVGVjaCBLaW5nIFdvcmxkLCBVbml0IEM2MDMKLQkJCQkjNjY2IEJlaWppbmcgUm9hZCAoRSkKLQkJCQlTaGFuZ2hhaSAgMjAwMDAxCi0JCQkJQ0hJTkEKLQotMDAtMEUtQUEgICAoaGV4KQkJU2NhbGVudCBTeXN0ZW1zLCBJbmMuCi0wMDBFQUEgICAgIChiYXNlIDE2KQkJU2NhbGVudCBTeXN0ZW1zLCBJbmMuCi0JCQkJNDkwIFMuIENhbGlmb3JuaWEgQXZlCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1BQiAgIChoZXgpCQlDcmF5IEluYwotMDAwRUFCICAgICAoYmFzZSAxNikJCUNyYXkgSW5jCi0JCQkJNDExIEZpcnN0IEF2ZSBTIFN1aXRlIDYwMAotCQkJCVNlYXR0bGUgV0EgOTgxMDQKLQkJCQlDQU5BREEKLQotMDAtMEUtQUMgICAoaGV4KQkJTUlOVFJPTiBFTlRFUlBSSVNFIENPLiwgTFRELgotMDAwRUFDICAgICAoYmFzZSAxNikJCU1JTlRST04gRU5URVJQUklTRSBDTy4sIExURC4KLQkJCQlOTy4zLFd1LUt1bmcgNVJkLiwgV3UtS3UgSW5kIFBhcmsKLQkJCQlUYWlwZWkgQ291bnR5ICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLUFEICAgKGhleCkJCU1ldGFub2lhIFRlY2hub2xvZ2llcywgSW5jLgotMDAwRUFEICAgICAoYmFzZSAxNikJCU1ldGFub2lhIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTU5MTggVy4gY291cnR5YXJkIERyLgotCQkJCVN1aXRlIDMzMAotCQkJCUF1c3RpbiBUWCA3ODczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQUUgICAoaGV4KQkJR0FXRUxMIFRFQ0hOT0xPR0lFUyBDT1JQLgotMDAwRUFFICAgICAoYmFzZSAxNikJCUdBV0VMTCBURUNITk9MT0dJRVMgQ09SUC4KLQkJCQkyRixOTy4xMDIsU0VDLjMsSlVORyBTSEFOIFJELAotCQkJCUpVTkcgSE8gQ0lUWSwgVEFJUEVJIEhTSUVOIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtQUYgICAoaGV4KQkJQ0FTVEVMCi0wMDBFQUYgICAgIChiYXNlIDE2KQkJQ0FTVEVMCi0JCQkJWkkgU2FpbnQgTGFtYmVydCBkZXMgTGV2w6llcwotCQkJCVNBVU1VUiBNYWluZSBldCBMb2lyZSA0OTQxMgotCQkJCUZSQU5DRQotCi0wMC0wRS1CMCAgIChoZXgpCQlTb2x1dGlvbnMgUmFkaW8gQlYKLTAwMEVCMCAgICAgKGJhc2UgMTYpCQlTb2x1dGlvbnMgUmFkaW8gQlYKLQkJCQlQcmluc2VncmFjaHQgODIKLQkJCQlUaGUgSGFndWUgWkggMjUxMiBHQwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBFLUIxICAgKGhleCkJCU5ld2NvdGVjaCxMdGQKLTAwMEVCMSAgICAgKGJhc2UgMTYpCQlOZXdjb3RlY2gsTHRkCi0JCQkJQW55YW5nIE1lZ2F2YWxseSA3MTUtMwotCQkJCUt3YW55YW5nLURvbmcsIERvbmdhbi1HdSwKLQkJCQlBbnlhbmcgQ2l0eSBHdWVvbmdnaS1EbyA0MzEtMTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBFLUIyICAgKGhleCkJCU1pY3JvLVJlc2VhcmNoIEZpbmxhbmQgT3kKLTAwMEVCMiAgICAgKGJhc2UgMTYpCQlNaWNyby1SZXNlYXJjaCBGaW5sYW5kIE95Ci0JCQkJVsOkbGl0YWxvbnRpZSA4MyBDCi0JCQkJSGVsc2lua2kgIEZJTi0wMDY2MAotCQkJCUZJTkxBTkQKLQotMDAtMEUtQjMgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkCi0wMDBFQjMgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkCi0JCQkJMjU4MCA1NXRoIFN0cmVldAotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUI0ICAgKGhleCkJCUdVQU5HWkhPVSBHQU9LRSBDT01NVU5JQ0FUSU9OUyBURUNITk9MT0dZIENPLkxURC4KLTAwMEVCNCAgICAgKGJhc2UgMTYpCQlHVUFOR1pIT1UgR0FPS0UgQ09NTVVOSUNBVElPTlMgVEVDSE5PTE9HWSBDTy5MVEQuCi0JCQkJQVZFLiAzOTggWkhPTkdTSEFOCi0JCQkJR1VBTkdaSE9VIEdVQU5HRE9ORyA1MTA2NjAKLQkJCQlDSElOQQotCi0wMC0wRS1CNSAgIChoZXgpCQlFY2FzdGxlIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAwRUI1ICAgICAoYmFzZSAxNikJCUVjYXN0bGUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzUwMiwgTmFtamFuZyBCL0QsIEJhbmdiYWUtZG9uZywKLQkJCQlTZW9jaG8ta3UsCi0JCQkJU2VvdWwgIDEzNy04MTgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtQjYgICAoaGV4KQkJUml2ZXJiZWQgVGVjaG5vbG9neSwgSW5jLgotMDAwRUI2ICAgICAoYmFzZSAxNikJCVJpdmVyYmVkIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk1MDEgU2Vjb25kIFN0cmVldAotCQkJCVN1aXRlIDQxMAotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUI3ICAgKGhleCkJCUtub3ZhdGl2ZSwgSW5jLgotMDAwRUI3ICAgICAoYmFzZSAxNikJCUtub3ZhdGl2ZSwgSW5jLgotCQkJCTExMjQ1IFdlc3QgQmVybmFyZG8gQ291cnQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUI4ICAgKGhleCkJCUlpZ2EgY28uLEx0ZAotMDAwRUI4ICAgICAoYmFzZSAxNikJCUlpZ2EgY28uLEx0ZAotCQkJCTNGIFRLQmxkZy4gMy01LTIgU290b2thbmRhCi0JCQkJQ2hpeW9kYS1LdSBUb2t5byAxMDEtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTBFLUI5ICAgKGhleCkJCUhBU0hJTU9UTyBFbGVjdHJvbmljcyBJbmR1c3RyeSBDby4sTHRkLgotMDAwRUI5ICAgICAoYmFzZSAxNikJCUhBU0hJTU9UTyBFbGVjdHJvbmljcyBJbmR1c3RyeSBDby4sTHRkLgotCQkJCTM4NjYtMTIgVGFrYXN1LWNobwotCQkJCU1hdHN1c2FrYSBNaWUgNTE1LTAxMDQKLQkJCQlKQVBBTgotCi0wMC0wRS1CQSAgIChoZXgpCQlIQU5NSSBTRU1JQ09ORFVDVE9SIENPLiwgTFRELgotMDAwRUJBICAgICAoYmFzZSAxNikJCUhBTk1JIFNFTUlDT05EVUNUT1IgQ08uLCBMVEQuCi0JCQkJIzUzMi0yLCBHYWp3YS1Eb25nLCBTZW8tS3UsCi0JCQkJSW5jaGVvbiAgNDA0IDI1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS1CQiAgIChoZXgpCQlFdmVyYmVlIE5ldHdvcmtzCi0wMDBFQkIgICAgIChiYXNlIDE2KQkJRXZlcmJlZSBOZXR3b3JrcwotCQkJCTQxLCBCb3VsZXZhcmQgZGVzIENhcHVjaW5lcwotCQkJCVBhcmlzICA3NTAwMgotCQkJCUZSQU5DRQotCi0wMC0wRS1CQyAgIChoZXgpCQlQYXJhZ29uIEZpZGVsaXR5IEdtYkgKLTAwMEVCQyAgICAgKGJhc2UgMTYpCQlQYXJhZ29uIEZpZGVsaXR5IEdtYkgKLQkJCQlTY2h3YWRlcm3DvGhsc3RyYXNzZSA0YQotCQkJCUNhZG9semJ1cmcgIDkwNTU2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRS1CRCAgIChoZXgpCQlCdXJkaWNrLCBhIFF1aW50b24gQ29tcG55Ci0wMDBFQkQgICAgIChiYXNlIDE2KQkJQnVyZGljaywgYSBRdWludG9uIENvbXBueQotCQkJCTUwMCBCdXJkaWNrIFBhcmt3YXkKLQkJCQlEZWVyZmllbGQgV0kgNTM1MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUJFICAgKGhleCkJCUImQiBFbGVjdHJvbmljcyBNYW51ZmFjdHVyaW5nIENvLgotMDAwRUJFICAgICAoYmFzZSAxNikJCUImQiBFbGVjdHJvbmljcyBNYW51ZmFjdHVyaW5nIENvLgotCQkJCTcwNyBEYXl0b24gUm9hZAotCQkJCVAuTy4gQm94IDEwNDAKLQkJCQlPdHRhd2EgSWxpbm9pcyA2MTM1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQkYgICAoaGV4KQkJUmVtc2RhcSBMaW1pdGVkCi0wMDBFQkYgICAgIChiYXNlIDE2KQkJUmVtc2RhcSBMaW1pdGVkCi0JCQkJUGFya3dheQotCQkJCURlZXNpZGUgSW5kdXN0cmlhbCBQYXJrCi0JCQkJRGVlc2lkZSBGbGludHNoaXJlIENINSAyTkwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS1DMCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMEVDMCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wRS1DMSAgIChoZXgpCQlNWU5BSCBUZWNobm9sb2dpZXMKLTAwMEVDMSAgICAgKGJhc2UgMTYpCQlNWU5BSCBUZWNobm9sb2dpZXMKLQkJCQk1MDQgVHJhZGUgQ2VudGVyIEJsdmQKLQkJCQlDaGVzdGVyZmllbGQgTU8gNjMwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUMyICAgKGhleCkJCUxvd3JhbmNlIEVsZWN0cm9uaWNzLCBJbmMuCi0wMDBFQzIgICAgIChiYXNlIDE2KQkJTG93cmFuY2UgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkxMjAwMCBFLiBTa2VsbHkgRHJpdmUKLQkJCQlUdWxzYSBPSyA3NDEyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQzMgICAoaGV4KQkJTG9naWMgQ29udHJvbHMsIEluYy4KLTAwMEVDMyAgICAgKGJhc2UgMTYpCQlMb2dpYyBDb250cm9scywgSW5jLgotCQkJCTM1NSBEZW50b24gQXZlbnVlCi0JCQkJTmV3IEh5ZGUgUGFyayBOWSAxMTA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQzQgICAoaGV4KQkJSXNrcmEgVHJhbnNtaXNzaW9uIGQuZC4KLTAwMEVDNCAgICAgKGJhc2UgMTYpCQlJc2tyYSBUcmFuc21pc3Npb24gZC5kLgotCQkJCVN0ZWduZSAxMQotCQkJCUxqdWJsamFuYSAgMTAwMAotCQkJCVNMT1ZFTklBCi0KLTAwLTBFLUM1ICAgKGhleCkJCURpZ2l0YWwgTXVsdGl0b29scyBJbmMKLTAwMEVDNSAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIE11bHRpdG9vbHMgSW5jCi0JCQkJOTAwNSBMZXNsaWUgU3RyZWV0ICBVbml0IDIwNQotCQkJCVJpY2htb25kIEhpbGwgT250YXJpbyBMNEIgMUc3Ci0JCQkJQ0FOQURBCi0KLTAwLTBFLUM2ICAgKGhleCkJCUFTSVggRUxFQ1RST05JQ1MgQ09SUC4KLTAwMEVDNiAgICAgKGJhc2UgMTYpCQlBU0lYIEVMRUNUUk9OSUNTIENPUlAuCi0JCQkJNEYsIE5PLjgsIEhTSU4gQU5OIFJELiwKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSywKLQkJCQlIU0lOQ0hVICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLUM3ICAgKGhleCkJCU1vdG9yb2xhIEtvcmVhCi0wMDBFQzcgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgS29yZWEKLQkJCQlIaWJyYW5kIEIvRCAxN0YgU1cgVGVhbSBNb3Rvcm9sYSBLb3JlYQotCQkJCVlhbmdqYWVkb25nIFNlb2NobyAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEUtQzggICAoaGV4KQkJWm9yYW4gQ29ycG9yYXRpb24KLTAwMEVDOCAgICAgKGJhc2UgMTYpCQlab3JhbiBDb3Jwb3JhdGlvbgotCQkJCTEzOTAgS2lmZXIgUmQuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1DOSAgIChoZXgpCQlZT0tPIFRlY2hub2xvZ3kgQ29ycC4KLTAwMEVDOSAgICAgKGJhc2UgMTYpCQlZT0tPIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk2RiwgTm8uMTAsIExhbmUxNiwgU2VjMiwgU3plLUNodWFuIFJkLiwgUGFuLQotCQkJCUNoaWFvIENpdHksCi0JCQkJVGFpcGVpICA4ODYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLUNBICAgKGhleCkJCVdUU1MgSW5jCi0wMDBFQ0EgICAgIChiYXNlIDE2KQkJV1RTUyBJbmMKLQkJCQk1OTk5IEF2ZW5pZGEgRW5jaW5hcwotCQkJCVN1aXRlIDE1MAotCQkJCUNhcmxzYmFkIENBIDkyMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1DQiAgIChoZXgpCQlWaW5lU3lzIFRlY2hub2xvZ3kKLTAwMEVDQiAgICAgKGJhc2UgMTYpCQlWaW5lU3lzIFRlY2hub2xvZ3kKLQkJCQkzMzUwIFNjb3R0IEJsdmQuIGJ1aWxkaW5nIDE1LTAzCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUNDICAgKGhleCkJCVRhYmxlYXUsIExMQwotMDAwRUNDICAgICAoYmFzZSAxNikJCVRhYmxlYXUsIExMQwotCQkJCU44IFcyMjE5NSBKb2huc29uIERyaXZlLCBTdWl0ZSAxMDAKLQkJCQlXYXVrZXNoYSBXSSA1MzE4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtQ0QgICAoaGV4KQkJU0tPViBBL1MKLTAwMEVDRCAgICAgKGJhc2UgMTYpCQlTS09WIEEvUwotCQkJCUhlZGVsdW5kIDQKLQkJCQlHbHluZ29lcmUKLQkJCQlSb3NsZXYgIERLLTc4NzAKLQkJCQlERU5NQVJLCi0KLTAwLTBFLUNFICAgKGhleCkJCVMuSS5ULlQuSS4gUy5wLkEuCi0wMDBFQ0UgICAgIChiYXNlIDE2KQkJUy5JLlQuVC5JLiBTLnAuQS4KLQkJCQlWaWEgQ2Fkb3JuYSA2OQotCQkJCVZpbW9kcm9uZSBNaWxhbiBJLTIwMDkwCi0JCQkJSVRBTFkKLQotMDAtMEUtQ0YgICAoaGV4KQkJUFJPRklCVVMgTnV0emVyb3JnYW5pc2F0aW9uIGUuVi4KLTAwMEVDRiAgICAgKGJhc2UgMTYpCQlQUk9GSUJVUyBOdXR6ZXJvcmdhbmlzYXRpb24gZS5WLgotCQkJCUhhaWQtdW5kLU5ldS1TdHJhc3NlIDcKLQkJCQlLYXJsc3J1aGUgQmFkZW4tV8O8cnR0ZW1iZXJnIDc2MTMxCi0JCQkJR0VSTUFOWQotCi0wMC0wRS1EMCAgIChoZXgpCQlQcml2YXJpcywgSW5jLgotMDAwRUQwICAgICAoYmFzZSAxNikJCVByaXZhcmlzLCBJbmMuCi0JCQkJNjUwIFBldGVyIEplZmZlcnNvbiBQa3d5LCBTdGUgMzMwCi0JCQkJQ2hhcmxvdHRlc3ZpbGxlIFZpcmdpbmlhIDIyOTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1EMSAgIChoZXgpCQlPc2FrYSBNaWNybyBDb21wdXRlci4KLTAwMEVEMSAgICAgKGJhc2UgMTYpCQlPc2FrYSBNaWNybyBDb21wdXRlci4KLQkJCQlJc29ub2thbWljeW8gMy0xMS03Ci0JCQkJS2lzaGl3YWRhIE9zYWthIDU5NjAwMDEKLQkJCQlKQVBBTgotCi0wMC0wRS1EMiAgIChoZXgpCQlGaWx0cm9uaWMgcGxjCi0wMDBFRDIgICAgIChiYXNlIDE2KQkJRmlsdHJvbmljIHBsYwotCQkJCVRoZSBXYXRlcmZyb250Ci0JCQkJU2FsdHMgTWlsbCBSZAotCQkJCVNhbHRhaXJlIFcgWW9ya3MgQkQxOCAzVFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRS1EMyAgIChoZXgpCQlFcGljZW50ZXIsIEluYy4KLTAwMEVEMyAgICAgKGJhc2UgMTYpCQlFcGljZW50ZXIsIEluYy4KLQkJCQkyMTEgQiBDYWxsZSBQaW50b3Jlc2NvCi0JCQkJU2FuIENsZW1lbnRlIENBIDkyNjcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1ENCAgIChoZXgpCQlDUkVTSVRUIElORFVTVFJJRQotMDAwRUQ0ICAgICAoYmFzZSAxNikJCUNSRVNJVFQgSU5EVVNUUklFCi0JCQkJMTIgcnVlIGRlIEJsb2lzCi0JCQkJT3JsZWFucyBCUCA2NzQ0IDQ1MDY3ICBjZWRleAotCQkJCUZSQU5DRQotCi0wMC0wRS1ENSAgIChoZXgpCQlDT1BBTiBTeXN0ZW1zIEluYy4KLTAwMEVENSAgICAgKGJhc2UgMTYpCQlDT1BBTiBTeXN0ZW1zIEluYy4KLQkJCQkyNjA1IFRyYWRlIENlbnRyZSBBdmUuCi0JCQkJU3VpdGUgRAotCQkJCUxvbmdtb250IENPIDgwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1ENiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBFRDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1ENyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBFRDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1EOCAgIChoZXgpCQlBa3Rpbm8sIEluYy4KLTAwMEVEOCAgICAgKGJhc2UgMTYpCQlBa3Rpbm8sIEluYy4KLQkJCQkxODU1MSBWb24gS2FybWFuIEF2ZW51ZQotCQkJCVN1aXRlIDIwMQotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtRDkgICAoaGV4KQkJQWtzeXMsIEx0ZC4KLTAwMEVEOSAgICAgKGJhc2UgMTYpCQlBa3N5cywgTHRkLgotCQkJCTIgTWFycmlvdHQgRHJpdmUKLQkJCQlMaW5jb2xuc2hpcmUgSUwgNjAwNjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLURBICAgKGhleCkJCUMtVEVDSCBVTklURUQgQ09SUC4KLTAwMEVEQSAgICAgKGJhc2UgMTYpCQlDLVRFQ0ggVU5JVEVEIENPUlAuCi0JCQkJNUYsIE5vIDY2NSwgQ0hVTkcgQ0hFTiBSRC4KLQkJCQlIU0lOIENIVUFORyBDSVRUICBvZiBUQUlQRUkgSFNJRU4gIDI0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtREIgICAoaGV4KQkJWGlOQ09NIENvcnAuCi0wMDBFREIgICAgIChiYXNlIDE2KQkJWGlOQ09NIENvcnAuCi0JCQkJMjg0MCBJbmR1c3RyaWFsIEF2ZS4KLQkJCQlIdWJiYXJkIE9SIDk3MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1EQyAgIChoZXgpCQlUZWxsaW9uIElOQy4KLTAwMEVEQyAgICAgKGJhc2UgMTYpCQlUZWxsaW9uIElOQy4KLQkJCQk1dGggRmwuIEJPTkEgVmVudHVyZSBUb3duCi0JCQkJMTU4Ni0xIFNlb2NobyAzLWRvbmcsIFNlb2Noby1ndQotCQkJCVNlb3VsIFNlb2Noby1ndS4gMTM3LTcxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS1ERCAgIChoZXgpCQlTSFVSRSBJTkNPUlBPUkFURUQKLTAwMEVERCAgICAgKGJhc2UgMTYpCQlTSFVSRSBJTkNPUlBPUkFURUQKLQkJCQk1ODAwIFcuIFRPVUhZIEFWRS4KLQkJCQlOSUxFUyBJTCA2MDcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtREUgICAoaGV4KQkJUkVNRUMsIEluYy4KLTAwMEVERSAgICAgKGJhc2UgMTYpCQlSRU1FQywgSW5jLgotCQkJCTIxNDQgRnJhbmtsaW4gRHJpdmUgTkUKLQkJCQlQYWxtIEJheSBGbG9yaWRhIDMyOTA1LTQwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLURGICAgKGhleCkJCVBMWCBUZWNobm9sb2d5Ci0wMDBFREYgICAgIChiYXNlIDE2KQkJUExYIFRlY2hub2xvZ3kKLQkJCQk4NzAgTWF1ZGUgQXZlLiwKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUUwICAgKGhleCkJCU1jaGFyZ2UKLTAwMEVFMCAgICAgKGJhc2UgMTYpCQlNY2hhcmdlCi0JCQkJRmlyc3RlYyBCbGRnLC4gMTUtNCBZb3VpZG8tRG9uZwotCQkJCVlvdW5nZGV1bmdwby1HdSwKLQkJCQlzZW91bCBZb3VpZG8gMTUwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRS1FMSAgIChoZXgpCQlFeHRyZW1lU3BlZWQgSW5jLgotMDAwRUUxICAgICAoYmFzZSAxNikJCUV4dHJlbWVTcGVlZCBJbmMuCi0JCQkJUE8gQm94IDYwMAotCQkJCTQ2MzQtNDZ0aCBTdHJlZXQgU3VpdGUgMjAxCi0JCQkJTWFubnZpbGxlIEFsYmVydGEgVDBCIDJXMAotCQkJCUNBTkFEQQotCi0wMC0wRS1FMiAgIChoZXgpCQlDdXN0b20gRW5naW5lZXJpbmcgUy5wLkEuCi0wMDBFRTIgICAgIChiYXNlIDE2KQkJQ3VzdG9tIEVuZ2luZWVyaW5nIFMucC5BLgotCQkJCVZpYSBCZXJldHR0aW5lIDIvYgotCQkJCUZvbnRldml2byBQYXJtYSA0MzAxMAotCQkJCUlUQUxZCi0KLTAwLTBFLUUzICAgKGhleCkJCUNoaXl1IFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAwRUUzICAgICAoYmFzZSAxNikJCUNoaXl1IFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLiAyOCwgUmVuYWkgUm9hZCwgQ2hpYXlpLCA2MDAKLQkJCQlDaGlheWkgIDYwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEUtRTQgICAoaGV4KQkJQk9FIFRFQ0hOT0xPR1kgR1JPVVAgQ08uLExURAotMDAwRUU0ICAgICAoYmFzZSAxNikJCUJPRSBURUNITk9MT0dZIEdST1VQIENPLixMVEQKLQkJCQlOby4xMCBKaXV4aWFucWlhbyBSb2FkLENoYW95YW5nIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDAxNgotCQkJCUNISU5BCi0KLTAwLTBFLUU1ICAgKGhleCkJCWJpdFdhbGxldCwgSW5jLgotMDAwRUU1ICAgICAoYmFzZSAxNikJCWJpdFdhbGxldCwgSW5jLgotCQkJCUdhdGUgQ2l0eSBPaHNha2kgV2VzdCBUb3dlciAxOEYsIDEtMTEtMSBPc2FraSwgU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gIDE0MTAwMzIKLQkJCQlKQVBBTgotCi0wMC0wRS1FNiAgIChoZXgpCQlBZGltb3MgU3lzdGVtcyBMVEQKLTAwMEVFNiAgICAgKGJhc2UgMTYpCQlBZGltb3MgU3lzdGVtcyBMVEQKLQkJCQkxNyBBdGlyZXktWWVkYSBTdHJlZXQKLQkJCQlLZmFyLVNhYmEgIDQ0NjQzCi0JCQkJSVNSQUVMCi0KLTAwLTBFLUU3ICAgKGhleCkJCUFBQyBFTEVDVFJPTklDUyBDT1JQLgotMDAwRUU3ICAgICAoYmFzZSAxNikJCUFBQyBFTEVDVFJPTklDUyBDT1JQLgotCQkJCUZMT09SIDcsU0lYVEggQlVJTERJTkcgT0YgTkFJQU5ZT1UgVE5BTiBJTkRVU1RSSUFMIEFSRUEsTkFOU0hBTiBESVNUUklDVAotCQkJCVNIRU5aSEVOIFBST1ZJTkNFIEdVQU5HRE9ORyA1MTgwNTQKLQkJCQlDSElOQQotCi0wMC0wRS1FOCAgIChoZXgpCQl6aW9uY29tCi0wMDBFRTggICAgIChiYXNlIDE2KQkJemlvbmNvbQotCQkJCVdlc3Qgd2luZyA1L0YgLiwgQmxvY2sgMSwgR2FvWGluIFNvdXRoIFJpbmcgUmQvS2VqaSBTb3V0aCBSZCwKLQkJCQlWaXNpb24oU2hlblpoZW4pQnVzaW5lc3MgUGFyaywgU2hlbnpoZW4gSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTBFLUU5ICAgKGhleCkJCVdheVRlY2ggRGV2ZWxvcG1lbnQsIEluYy4KLTAwMEVFOSAgICAgKGJhc2UgMTYpCQlXYXlUZWNoIERldmVsb3BtZW50LCBJbmMuCi0JCQkJMTFGbG9vciwgMjUzIE1pbi1TaGVuZyBSb2FkCi0JCQkJSHNpbkNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1FQSAgIChoZXgpCQlTaGFkb25nIEx1bmVuZyBKaWNoZW5nIEVsZWN0cm9uaWNzLENvLixMdGQKLTAwMEVFQSAgICAgKGJhc2UgMTYpCQlTaGFkb25nIEx1bmVuZyBKaWNoZW5nIEVsZWN0cm9uaWNzLENvLixMdGQKLQkJCQlOby4xODgsZWFzdCxIdWF5dWFuIFJvYWQKLQkJCQlKaW5hbiBTaGFuZG9uZyAyNTAxMDAKLQkJCQlDSElOQQotCi0wMC0wRS1FQiAgIChoZXgpCQlTYW5kbWFydGluKHpob25nIHNoYW4pRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAwRUVCICAgICAoYmFzZSAxNikJCVNhbmRtYXJ0aW4oemhvbmcgc2hhbilFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJM3N0IEluZHVzdHJpYWwgQXJlYSxUYW4gWmhvdSwKLQkJCQlaaG9uZ3NoYW4gR3Vhbmdkb25nIDUyODQ2NwotCQkJCUNISU5BCi0KLTAwLTBFLUVDICAgKGhleCkJCU9yYmFuCi0wMDBFRUMgICAgIChiYXNlIDE2KQkJT3JiYW4KLQkJCQkxNTI1IEFsdmFyYWRvIFN0LgotCQkJCVNhbiBMZWFuZHJvIENBIDk0NTc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRS1FRCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAwRUVEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0wRS1FRSAgIChoZXgpCQlNdWNvIEluZHVzdHJpZSBCVgotMDAwRUVFICAgICAoYmFzZSAxNikJCU11Y28gSW5kdXN0cmllIEJWCi0JCQkJUGxlaW11aWRlbiAxMmUKLQkJCQlBbXN0ZXJkYW0gTkggMTA0NiBBRwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTBFLUVGICAgKGhleCkJCVBSSVZBVEUKLTAwMEVFRiAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMEUtRjAgICAoaGV4KQkJRmVzdG8gQUcgJiBDby4gS0cKLTAwMEVGMCAgICAgKGJhc2UgMTYpCQlGZXN0byBBRyAmIENvLiBLRwotCQkJCVJ1aXRlcnN0cmHDg8W4ZSA4MgotCQkJCUVzc2xpbmdlbiAgNzM3MzQKLQkJCQlHRVJNQU5ZCi0KLTAwLTBFLUYxICAgKGhleCkJCUVaUVVFU1QgSU5DLgotMDAwRUYxICAgICAoYmFzZSAxNikJCUVaUVVFU1QgSU5DLgotCQkJCTIxMTMzIEUuIExBIFBBTE1BIEFWRS4KLQkJCQlZT1JCQSBMSU5EQSBDQSA5Mjg4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtRjIgICAoaGV4KQkJSW5maW5pY28gQ29ycG9yYXRpb24KLTAwMEVGMiAgICAgKGJhc2UgMTYpCQlJbmZpbmljbyBDb3Jwb3JhdGlvbgotCQkJCTRGLCBGLTEgQmxkZy4sIDEtMi0xMiwKLQkJCQlIYW1hbWF0c3VjaG8sIE1pdGFuby1rdQotCQkJCVRva3lvICAxMDUtMDAxMwotCQkJCUpBUEFOCi0KLTAwLTBFLUYzICAgKGhleCkJCVNtYXJ0aG9tZQotMDAwRUYzICAgICAoYmFzZSAxNikJCVNtYXJ0aG9tZQotCQkJCTE2NTQyIE1pbGxpa2FuIEF2ZS4KLQkJCQlJcnZpbmUgQ0EgOTI2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUY0ICAgKGhleCkJCUthc2RhIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkCi0wMDBFRjQgICAgIChiYXNlIDE2KQkJS2FzZGEgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkyL0YsQnVpbGRpbmcgMixCYWd1YSAyIHJvYWQsRnV0aWFuLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyBQcm92aW5jZSA1MTgwMjkKLQkJCQlDSElOQQotCi0wMC0wRS1GNSAgIChoZXgpCQlpUEFDIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBFRjUgICAgIChiYXNlIDE2KQkJaVBBQyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTZGLCBOby4gMzAsIFNoaW5nanVuZyBSb2FkLCBOZWlodQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1GNiAgIChoZXgpCQlFLVRFTiBJbmZvcm1hdGlvbiBTeXN0ZW1zIENvLiwgTHRkLgotMDAwRUY2ICAgICAoYmFzZSAxNikJCUUtVEVOIEluZm9ybWF0aW9uIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJTm8uIDI1NiwgWWFuZ2d1YW5nIFN0cmVldCwgTmVpaHUgQ2hpdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRS1GNyAgIChoZXgpCQlWdWxjYW4gUG9ydGFscyBJbmMKLTAwMEVGNyAgICAgKGJhc2UgMTYpCQlWdWxjYW4gUG9ydGFscyBJbmMKLQkJCQk1MDUgNXRoIEF2ZSBTb3V0aCwgU3VpdGUgOTAwCi0JCQkJU2VhdHRsZSBXQSA5ODEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtRjggICAoaGV4KQkJU0JDIEFTSQotMDAwRUY4ICAgICAoYmFzZSAxNikJCVNCQyBBU0kKLQkJCQlOZXR3b3JrICYgSW5mcmFzdHJ1Y3R1cmUgVGVjaG5pY2FsIFN1cHBvcnQKLQkJCQkxMDEwIE4gU2FpbnQgTWFyeXMKLQkJCQlTYW4gQW50b25pbyBUZXhhcyA3ODIxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEUtRjkgICAoaGV4KQkJUkVBIEVsZWt0cm9uaWsgR21iSAotMDAwRUY5ICAgICAoYmFzZSAxNikJCVJFQSBFbGVrdHJvbmlrIEdtYkgKLQkJCQlUZWljaHdpZXNlbnN0ci4gMQotCQkJCU11ZWhsdGFsIEhlc3NlbiA2NDM2NwotCQkJCUdFUk1BTlkKLQotMDAtMEUtRkEgICAoaGV4KQkJT3B0b3dheSBUZWNobm9sb2d5IEluY29ycG9yYXRpb24KLTAwMEVGQSAgICAgKGJhc2UgMTYpCQlPcHRvd2F5IFRlY2hub2xvZ3kgSW5jb3Jwb3JhdGlvbgotCQkJCU5vLiAzOCwgS3VhbmcgRnUgU291dGggUm9hZAotCQkJCUhzaW4gQ2h1IEluZHVzdHJpYWwgUGFyawotCQkJCUh1IEtvdSBIc2luIENodSAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBFLUZCICAgKGhleCkJCU1hY2V5IEVudGVycHJpc2VzCi0wMDBFRkIgICAgIChiYXNlIDE2KQkJTWFjZXkgRW50ZXJwcmlzZXMKLQkJCQlQLk8uIEJveCA3MjY3Ci0JCQkJVGVtcGUgQVogODUyODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUZDICAgKGhleCkJCUpUQUcgVGVjaG5vbG9naWVzIEIuVi4KLTAwMEVGQyAgICAgKGJhc2UgMTYpCQlKVEFHIFRlY2hub2xvZ2llcyBCLlYuCi0JCQkJQm9zY2hkaWprIDUwCi0JCQkJRWluZGhvdmVuIE5CIDU2MTIgQU4KLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRS1GRCAgIChoZXgpCQlGVUpJTk9OIENPUlBPUkFUSU9OCi0wMDBFRkQgICAgIChiYXNlIDE2KQkJRlVKSU5PTiBDT1JQT1JBVElPTgotCQkJCTEtMzI0IFVFVEFLRSwgS0lUQS1LVSwKLQkJCQlTQUlUQU1BIENJVFkgU0FJVEFNQSAzMzEtOTYyNAotCQkJCUpBUEFOCi0KLTAwLTBFLUZFICAgKGhleCkJCUVuZFJ1biBUZWNobm9sb2dpZXMgTExDCi0wMDBFRkUgICAgIChiYXNlIDE2KQkJRW5kUnVuIFRlY2hub2xvZ2llcyBMTEMKLQkJCQkyMjcwIE5vcnRocG9pbnQgUGFya3dheQotCQkJCVNhbnRhIFJvc2EgQ0EgOTU0MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBFLUZGICAgKGhleCkJCU1lZ2Fzb2x1dGlvbixJbmMuCi0wMDBFRkYgICAgIChiYXNlIDE2KQkJTWVnYXNvbHV0aW9uLEluYy4KLQkJCQkyLTctMTAgU2hpdGF5YQotCQkJCVRhaXRvIFRPS1lPIDExMC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMEYtMDAgICAoaGV4KQkJTGVncmEgU3lzdGVtcywgSW5jLgotMDAwRjAwICAgICAoYmFzZSAxNikJCUxlZ3JhIFN5c3RlbXMsIEluYy4KLQkJCQkzIEJ1cmxpbmd0b24gV29vZHMgRHJpdmUKLQkJCQlCdXJsaW5ndG9uIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0wMSAgIChoZXgpCQlESUdJVEFMS1MgSU5DCi0wMDBGMDEgICAgIChiYXNlIDE2KQkJRElHSVRBTEtTIElOQwotCQkJCTE0IE1BUlNIQUxMIExBTkUKLQkJCQlXRVNUT04gQ1QgMDY4ODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTAyICAgKGhleCkJCURpZ2ljdWJlIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMEYwMiAgICAgKGJhc2UgMTYpCQlEaWdpY3ViZSBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJOEYsTm8uIDUxLCBMYW5lICAzNSwgSmlodSBSZC4sCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTAzICAgKGhleCkJCUNPTSZDIENPLiwgTFRECi0wMDBGMDMgICAgIChiYXNlIDE2KQkJQ09NJkMgQ08uLCBMVEQKLQkJCQkyRiBXb29qaW4gQkxEIDE0NDUtMiBTZWNoby1Eb25nCi0JCQkJU2VjaG8tR3UKLQkJCQlTRU9VTCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi0wNCAgIChoZXgpCQljaW0tdXNhIGluYwotMDAwRjA0ICAgICAoYmFzZSAxNikJCWNpbS11c2EgaW5jCi0JCQkJMTA4MTMgbncgMzB0aCBzdHJlZXQKLQkJCQltaWFtaSBmbG9yaWRhIDMzMTcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0wNSAgIChoZXgpCQkzQiBTWVNURU0gSU5DLgotMDAwRjA1ICAgICAoYmFzZSAxNikJCTNCIFNZU1RFTSBJTkMuCi0JCQkJMTcyNywgU0FOS1lVSzItRE9ORywgQlVLLUdVCi0JCQkJREFFR1UgIDcwMi04NDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtMDYgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBGMDYgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMEYtMDcgICAoaGV4KQkJTWFuZ3JvdmUgU3lzdGVtcywgSW5jLgotMDAwRjA3ICAgICAoYmFzZSAxNikJCU1hbmdyb3ZlIFN5c3RlbXMsIEluYy4KLQkJCQkxMCBGYWlyZmllbGQgQmx2ZC4KLQkJCQlXYWxsaW5nZm9yZCBDVCAwNjQ5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMDggICAoaGV4KQkJSW5kYWdvbiBPeQotMDAwRjA4ICAgICAoYmFzZSAxNikJCUluZGFnb24gT3kKLQkJCQlOdWlqYW1pZXN0ZW50aWUgNSBBCi0JCQkJSGVsc2lua2kgLSAwMDQwMAotCQkJCUZJTkxBTkQKLQotMDAtMEYtMDkgICAoaGV4KQkJUFJJVkFURQotMDAwRjA5ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0wRi0wQSAgIChoZXgpCQlDbGVhciBFZGdlIE5ldHdvcmtzCi0wMDBGMEEgICAgIChiYXNlIDE2KQkJQ2xlYXIgRWRnZSBOZXR3b3JrcwotCQkJCTExMjUwIEVsIENhbWlubyBSZWFsCi0JCQkJU2FuIERpZWdvIENBIDkyMTMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0wQiAgIChoZXgpCQlLZW50aW1hIFRlY2hub2xvZ2llcyBBQgotMDAwRjBCICAgICAoYmFzZSAxNikJCUtlbnRpbWEgVGVjaG5vbG9naWVzIEFCCi0JCQkJQm94IDE3NAotCQkJCUthc3RhbmpldsOkZ2VuIDIKLQkJCQlTdGFmZmFuc3RvcnAgU2vDpW5lIDI0NSA0NAotCQkJCVNXRURFTgotCi0wMC0wRi0wQyAgIChoZXgpCQlTWU5DSFJPTklDIEVOR0lORUVSSU5HCi0wMDBGMEMgICAgIChiYXNlIDE2KQkJU1lOQ0hST05JQyBFTkdJTkVFUklORwotCQkJCTI1IENBUCBEQVJORVRBTAotCQkJCURBUk5FVEFMIEZSQU5DRSA3NjE2MAotCQkJCUZSQU5DRQotCi0wMC0wRi0wRCAgIChoZXgpCQlIdW50IEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0wMDBGMEQgICAgIChiYXNlIDE2KQkJSHVudCBFbGVjdHJvbmljIENvLiwgTHRkLgotCQkJCTZGSSwgTk8uIDU3LTU5LCBKaXVuIEggU2llbiBSZC4sIENoaSBUdSBEaXN0cmljdAotCQkJCUtlZWx1bmcgVGFpd2FuIDIwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtMEUgICAoaGV4KQkJV2F2ZVNwbGl0dGVyIFRlY2hub2xvZ2llcywgSW5jLgotMDAwRjBFICAgICAoYmFzZSAxNikJCVdhdmVTcGxpdHRlciBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyMjQ4IE5vcnRoIEZpcnN0IFN0cmVldAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0wRiAgIChoZXgpCQlSZWFsIElEIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDBGMEYgICAgIChiYXNlIDE2KQkJUmVhbCBJRCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTlGIEhhbm1pIEIvRCAxOTItMTkKLQkJCQlOb25oeWVvbi1Eb25nCi0JCQkJR2FuZ25hbS1HdSBTZW91bCAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTEwICAgKGhleCkJCVJETSBDb3Jwb3JhdGlvbgotMDAwRjEwICAgICAoYmFzZSAxNikJCVJETSBDb3Jwb3JhdGlvbgotCQkJCTYwOCBXZWJlciBTdC4gTgotCQkJCVdhdGVybG9vIE9OIE4yViAxSzQKLQkJCQlDQU5BREEKLQotMDAtMEYtMTEgICAoaGV4KQkJUHJvZHJpdmUgQi5WLgotMDAwRjExICAgICAoYmFzZSAxNikJCVByb2RyaXZlIEIuVi4KLQkJCQlQLk8uIDI4MDMwCi0JCQkJRWluZGhvdmVuICA1NjAyIEpBCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEYtMTIgICAoaGV4KQkJUGFuYXNvbmljIEV1cm9wZSBMdGQuCi0wMDBGMTIgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIEV1cm9wZSBMdGQuCi0JCQkJSGVzZWJlcmd3ZWcgNDktNTEKLQkJCQlQZWluZSAgRC0zMTIyOAotCQkJCUdFUk1BTlkKLQotMDAtMEYtMTMgICAoaGV4KQkJTmlzY2EgY29ycG9yYXRpb24KLTAwMEYxMyAgICAgKGJhc2UgMTYpCQlOaXNjYSBjb3Jwb3JhdGlvbgotCQkJCTQzMC0xCi0JCQkJS29iYXlhc2hpCi0JCQkJTWFzdWhvLUNobyBZYW1hbmFzaGktS2VuIDQwMC0wNTkzCi0JCQkJSkFQQU4KLQotMDAtMEYtMTQgICAoaGV4KQkJTWluZHJheSBDby4sIEx0ZC4KLTAwMEYxNCAgICAgKGJhc2UgMTYpCQlNaW5kcmF5IENvLiwgTHRkLgotCQkJCU1pbmRyYXkgQnVpbGRpbmcsIEtlamkgMTJ0aCBSb2FkIFNvdXRoCi0JCQkJSGlnaC10ZWNoIEluZHVzdHJpYWwgUGFyaywgTmFuc2hhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0wRi0xNSAgIChoZXgpCQlLamFlcnVsZmYxIEEvUwotMDAwRjE1ICAgICAoYmFzZSAxNikJCUtqYWVydWxmZjEgQS9TCi0JCQkJQy5GLiBUaWV0Z2VucyBCb3VsZXZhcmQgMTkKLQkJCQlPZGVuc2UgU8ODy5wgRnluIDUyMjAKLQkJCQlERU5NQVJLCi0KLTAwLTBGLTE2ICAgKGhleCkJCUpBWSBIT1cgVEVDSE5PTE9HWSBDTy4sCi0wMDBGMTYgICAgIChiYXNlIDE2KQkJSkFZIEhPVyBURUNITk9MT0dZIENPLiwKLQkJCQlOTy40ODYsU0VDLiAxLCBXQU4gU0hPVSBSRC4sIEtVRUkKLQkJCQlTSEFOIEhTSUFORywgVEFPWVVBTiBIU0lFTgotCQkJCVRBT1lVQU4gSFNJRU4gIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtMTcgICAoaGV4KQkJSW5zdGEgRWxla3RybyBHbWJICi0wMDBGMTcgICAgIChiYXNlIDE2KQkJSW5zdGEgRWxla3RybyBHbWJICi0JCQkJSG9oZSBTdGVpbmVydCAxMAotCQkJCUx1ZWRlbnNjaGVpZCBOUlcgRC01ODgwOQotCQkJCUdFUk1BTlkKLQotMDAtMEYtMTggICAoaGV4KQkJSW5kdXN0cmlhbCBDb250cm9sIFN5c3RlbXMKLTAwMEYxOCAgICAgKGJhc2UgMTYpCQlJbmR1c3RyaWFsIENvbnRyb2wgU3lzdGVtcwotCQkJCUhvdXRzY2hlbGYgMQotCQkJCUhhcmRpbnh2ZWxkIFp1aWQtSG9sbGFuZCBOTC0zMzcxIEtCCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEYtMTkgICAoaGV4KQkJQm9zdG9uIFNjaWVudGlmaWMKLTAwMEYxOSAgICAgKGJhc2UgMTYpCQlCb3N0b24gU2NpZW50aWZpYwotCQkJCTQxMDAgSGFtbGluZSBBdmUgTi4KLQkJCQlTdC4gUGF1bCBNTiA1NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMUEgICAoaGV4KQkJR2FtaW5nIFN1cHBvcnQgQi5WLgotMDAwRjFBICAgICAoYmFzZSAxNikJCUdhbWluZyBTdXBwb3J0IEIuVi4KLQkJCQlJbmR1c3RyaWUgd2VnIDI5Ci0JCQkJUm90dGVyZGFtIDMwNDQgQVMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0wRi0xQiAgIChoZXgpCQlFZ28gU3lzdGVtcyBJbmMuCi0wMDBGMUIgICAgIChiYXNlIDE2KQkJRWdvIFN5c3RlbXMgSW5jLgotCQkJCTEyMDYgV29vbGltIGUtQml6IENlbnRlciBJSQotCQkJCTE2IFlhbmdweW9uZ2RvbmczZ2EsIFlvdW5nZHVuZ3BvLWd1Ci0JCQkJU2VvdWwgIDE1MC04MzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtMUMgICAoaGV4KQkJRGlnaXRBbGwgV29ybGQgQ28uLCBMdGQKLTAwMEYxQyAgICAgKGJhc2UgMTYpCQlEaWdpdEFsbCBXb3JsZCBDby4sIEx0ZAotCQkJCVNlamluIEJsZCAyRiwgNjg5IGlsd29uMi1kb25nLAotCQkJCWdhbmduYW0tZ3UgU2VvdWwgMTM1LTk0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi0xRCAgIChoZXgpCQlDb3NtbyBUZWNocyBDby4sIEx0ZC4KLTAwMEYxRCAgICAgKGJhc2UgMTYpCQlDb3NtbyBUZWNocyBDby4sIEx0ZC4KLQkJCQkyLTYtMSwgTWF0c3VlCi0JCQkJQXRzdWdpLXNoaSBLYW5hZ2F3YS1rZW4gMjQzLTAwMDUKLQkJCQlKQVBBTgotCi0wMC0wRi0xRSAgIChoZXgpCQlDaGVuZ2R1IEtUIEVsZWN0cmljIENvLm9mIEhpZ2ggJiBOZXcgVGVjaG5vbG9neQotMDAwRjFFICAgICAoYmFzZSAxNikJCUNoZW5nZHUgS1QgRWxlY3RyaWMgQ28ub2YgSGlnaCAmIE5ldyBUZWNobm9sb2d5Ci0JCQkJTm8uMiBHYW9wZW5nIERvbmcgUm9hZCxIaWdoICYgTmV3IERldmVsb3BtZW50IFpvbmUsCi0JCQkJTm8uOSBXdWtlIEVhc3QgTm8uMyBSb2FkLFd1aG91IFpvbmUsCi0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLTAwLTBGLTFGICAgKGhleCkJCVdXIFBDQkEgVGVzdAotMDAwRjFGICAgICAoYmFzZSAxNikJCVdXIFBDQkEgVGVzdAotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTIwICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDBGMjAgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OSBTb3V0aAotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMjEgICAoaGV4KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBJbmMKLTAwMEYyMSAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljIEF0bGFudGEsIEluYwotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlQTyBCb3ggNDY1NDQ3Ci0JCQkJTGF3cmVuY2V2aWxsZSBHYSAzMDA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMjIgICAoaGV4KQkJSGVsaXVzLCBJbmMuCi0wMDBGMjIgICAgIChiYXNlIDE2KQkJSGVsaXVzLCBJbmMuCi0JCQkJMzMzIFNvdXRoIDUyMCBXZXN0Ci0JCQkJU3VpdGUgMzMwCi0JCQkJTGluZG9uIFVUIDg0MDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBGMjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDBGMjQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yNSAgIChoZXgpCQlBaW1WYWxsZXkgQi5WLgotMDAwRjI1ICAgICAoYmFzZSAxNikJCUFpbVZhbGxleSBCLlYuCi0JCQkJVXRyZWNodHNld2VnIDM4LAotCQkJCUhpbHZlcnN1bSBOSCAxMjIzIFRWCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEYtMjYgICAoaGV4KQkJV29ybGRBY2N4eCAgTExDCi0wMDBGMjYgICAgIChiYXNlIDE2KQkJV29ybGRBY2N4eCAgTExDCi0JCQkJNDAzNSBUYW1wYSBSZC4KLQkJCQlTdWl0ZSA2MDAwCi0JCQkJT2xkc21hciBGTCAzNDY2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMjcgICAoaGV4KQkJVEVBTCBFbGVjdHJvbmljcywgSW5jLgotMDAwRjI3ICAgICAoYmFzZSAxNikJCVRFQUwgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkxMDM1MCBTb3JyZW50byBWYWxsZXkgUm9hZAotCQkJCVNhbiBEaWVnbyBDYWxpZm9ybmlhIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0yOCAgIChoZXgpCQlJdHJvbml4IENvcnBvcmF0aW9uCi0wMDBGMjggICAgIChiYXNlIDE2KQkJSXRyb25peCBDb3Jwb3JhdGlvbgotCQkJCVNvdXRoIDgwMSBTdGV2ZW5zIFN0cmVldAotCQkJCVNwb2thbmUgV0EgOTkyMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTI5ICAgKGhleCkJCUF1Z21lbnRpeCBDb3Jwb3JhdGlvbgotMDAwRjI5ICAgICAoYmFzZSAxNikJCUF1Z21lbnRpeCBDb3Jwb3JhdGlvbgotCQkJCTQwMzAgVyBCcmFrZXIgTG4KLQkJCQlCdWlsZGluZyAyLCBTdWl0ZSAxMDAKLQkJCQlBdXN0aW4gVGV4YXMgNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTJBICAgKGhleCkJCUNhYmxld2FyZSBFbGVjdHJvbmljcwotMDAwRjJBICAgICAoYmFzZSAxNikJCUNhYmxld2FyZSBFbGVjdHJvbmljcwotCQkJCTE3MDIgV2VzdGVybiBBdmUuCi0JCQkJU3VpdGUgRwotCQkJCUxhcyBWZWdhcyBOZXZhZGEgODkxMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTJCICAgKGhleCkJCUdSRUVOQkVMTCBTWVNURU1TCi0wMDBGMkIgICAgIChiYXNlIDE2KQkJR1JFRU5CRUxMIFNZU1RFTVMKLQkJCQkyVEggRmxvb3IsIERvb25hbSBCbGRnLCAyMzYtMTEgTm9uaHl1bi1Eb25nLCBLYW5nbmFtLUt1Ci0JCQkJU2VvdWwgIDEzNS0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtMkMgICAoaGV4KQkJVXBsb2dpeCwgSW5jLgotMDAwRjJDICAgICAoYmFzZSAxNikJCVVwbG9naXgsIEluYy4KLQkJCQlCbGRnIDEsIFN1aXRlIDIzNQotCQkJCTg2MDEgUlIgMjIyMgotCQkJCUF1c3RpbiBUWCA3ODczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMkQgICAoaGV4KQkJQ0hVTkctSFNJTiBFTEVDVFJJQyAmIE1BQ0hJTkVSWSBNRkcuQ09SUC4KLTAwMEYyRCAgICAgKGJhc2UgMTYpCQlDSFVORy1IU0lOIEVMRUNUUklDICYgTUFDSElORVJZIE1GRy5DT1JQLgotCQkJCU5PLiAyNSwgV2VuLVRlIFJkLiwgTG8tU2hhbiBWaWxsYWdlCi0JCQkJS3dlaSBTaGFuIEhzaWFuZyBUYW95dWFuIEhzaWVuIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtMkUgICAoaGV4KQkJTWVnYXBvd2VyIEludGVybmF0aW9uYWwgQ29ycC4KLTAwMEYyRSAgICAgKGJhc2UgMTYpCQlNZWdhcG93ZXIgSW50ZXJuYXRpb25hbCBDb3JwLgotCQkJCVJtLiA0MDMsIE5vIDI0ICwgV3UtQ2h1YW4gMm5kIFJkLiwKLQkJCQlIc2luLUNodWFuZwotCQkJCVRhaXBlaSBIc2llbiAgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi0yRiAgIChoZXgpCQlXLUxJTlggVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwMEYyRiAgICAgKGJhc2UgMTYpCQlXLUxJTlggVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQkgMkYsRUxMRU4gTC4gU0tFTFRPTiBCVUlMRElORyxGSVNIRVIgTEFORSBST0FECi0JCQkJVE9SVE9MQSAgCi0JCQkJVklSR0lOIElTTEFORFMsIEJSSVRJU0gKLQotMDAtMEYtMzAgICAoaGV4KQkJUmF6YSBNaWNyb2VsZWN0cm9uaWNzIEluYwotMDAwRjMwICAgICAoYmFzZSAxNikJCVJhemEgTWljcm9lbGVjdHJvbmljcyBJbmMKLQkJCQkzMDgwIE5vcnRoIEZpcnN0IFN0cmVldAotCQkJCTV0aCBGbG9vcgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0zMSAgIChoZXgpCQlBbGxpZWQgVmlzaW9uIFRlY2hub2xvZ2llcyBDYW5hZGEgSW5jCi0wMDBGMzEgICAgIChiYXNlIDE2KQkJQWxsaWVkIFZpc2lvbiBUZWNobm9sb2dpZXMgQ2FuYWRhIEluYwotCQkJCTEwMS0zNzUwIE5vcnRoIEZyYXNlciBXYXkKLQkJCQlCdXJuYWJ5IEJDIFY1SiA1RTkKLQkJCQlDQU5BREEKLQotMDAtMEYtMzIgICAoaGV4KQkJTHVUb25nIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBDby4sTHRkCi0wMDBGMzIgICAgIChiYXNlIDE2KQkJTHVUb25nIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJMTA2LCBMaWFuZ1hpIFJvYWQKLQkJCQlXdVhpIEppYW5nU3UgMjE0MDYzCi0JCQkJQ0hJTkEKLQotMDAtMEYtMzMgICAoaGV4KQkJRFVBTGkgSW5jLgotMDAwRjMzICAgICAoYmFzZSAxNikJCURVQUxpIEluYy4KLQkJCQkjNTA1IFNhbXN1bmcgVGVjaG5vIFBhcmsgQmxkZyA0NzEKLQkJCQlXb25jaGVvbi1kb25nLCBZb3VuZ3RvbmctZ3UKLQkJCQlTdXdvbiBHeWVvbmdnaS1kbyA0NDItODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTM0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEYzNCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTM1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEYzNSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTM2ICAgKGhleCkJCUFjY3VyYXRlIFRlY2hobm9sb2dpZXMsIEluYy4KLTAwMEYzNiAgICAgKGJhc2UgMTYpCQlBY2N1cmF0ZSBUZWNoaG5vbG9naWVzLCBJbmMuCi0JCQkJNDcxOTkgQ2FydGllciBEci4KLQkJCQlXaXhvbSBNaWNoaWdhbiA0ODM5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtMzcgICAoaGV4KQkJWGFtYmFsYSBJbmNvcnBvcmF0ZWQKLTAwMEYzNyAgICAgKGJhc2UgMTYpCQlYYW1iYWxhIEluY29ycG9yYXRlZAotCQkJCTI2NzQgTi4gMXN0IFN0cmVldAotCQkJCVN1aXRlIDIxNQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi0zOCAgIChoZXgpCQlOZXRzdGFyCi0wMDBGMzggICAgIChiYXNlIDE2KQkJTmV0c3RhcgotCQkJCTNGLE5vLjM0NywgWWFuZy1rdWFuZyBTdC4sTmVpLUh1IERpcy4sCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLTM5ICAgKGhleCkJCUlSSVMgU0VOU09SUwotMDAwRjM5ICAgICAoYmFzZSAxNikJCUlSSVMgU0VOU09SUwotCQkJCVpBIGxlcyBVZmVybmV0cwotCQkJCVRPVUxBVUQgQXJkZWNoZSBGMDcxMzAKLQkJCQlGUkFOQ0UKLQotMDAtMEYtM0EgICAoaGV4KQkJSElTSEFSUAotMDAwRjNBICAgICAoYmFzZSAxNikJCUhJU0hBUlAKLQkJCQlOTy42NzMsQ0hBTkcgSFNJTkcgUk9BRCBQQVRFIENJVFksVEFPWVVBTiwKLQkJCQlUQUlQRUkgIDMzNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtM0IgICAoaGV4KQkJRnVqaSBTeXN0ZW0gTWFjaGluZXMgQ28uLCBMdGQuCi0wMDBGM0IgICAgIChiYXNlIDE2KQkJRnVqaSBTeXN0ZW0gTWFjaGluZXMgQ28uLCBMdGQuCi0JCQkJNS04LTEwCi0JCQkJSGliYXJpZ2Fva2EKLQkJCQlaYW1hLVNoaSBLYW5hZ2F3YS1LZW4gMjI4LTAwMDMKLQkJCQlKQVBBTgotCi0wMC0wRi0zQyAgIChoZXgpCQlFbmRlbGVvIExpbWl0ZWQKLTAwMEYzQyAgICAgKGJhc2UgMTYpCQlFbmRlbGVvIExpbWl0ZWQKLQkJCQk3OCBDYW5ub24gU3RyZWV0Ci0JCQkJTG9uZG9uIEVuZ2xhbmQgRUM0TiA2TlEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRi0zRCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMEYzRCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby44LExpLXNoaW5nIFNldmVudGggUm9hZCxTY2llbmNlLWJhc2VkIEluZHVzdHJpYWwgUGFyayxIc2ltY2h1LAotCQkJCUhzaW1jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtM0UgICAoaGV4KQkJQ2FyZGlvTmV0LCBJbmMKLTAwMEYzRSAgICAgKGJhc2UgMTYpCQlDYXJkaW9OZXQsIEluYwotCQkJCTEwMTAgU2Vjb25kIEF2ZW51ZQotCQkJCVN1aXRlIDcwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtM0YgICAoaGV4KQkJQmlnIEJlYXIgTmV0d29ya3MKLTAwMEYzRiAgICAgKGJhc2UgMTYpCQlCaWcgQmVhciBOZXR3b3JrcwotCQkJCTM0NSBQb3RyZXJvIEF2ZQotCQkJCVN1bm55IFZhbGUgQ2FsaWZvcm5pYSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNDAgICAoaGV4KQkJT3B0aWNhbCBJbnRlcm5ldHdvcmtpbmcgRm9ydW0KLTAwMEY0MCAgICAgKGJhc2UgMTYpCQlPcHRpY2FsIEludGVybmV0d29ya2luZyBGb3J1bQotCQkJCTQ4Mzc3IEZyZW1vbnQgQmx2ZAotCQkJCVN0ZSAxMTcKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi00MSAgIChoZXgpCQlaaXBoZXIgTHRkCi0wMDBGNDEgICAgIChiYXNlIDE2KQkJWmlwaGVyIEx0ZAotCQkJCTcgRmFyYWRheSBCdWlsZGluZwotCQkJCU5vdHRpbmdoYW0gU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBQYXJrCi0JCQkJTm90dGluZ2hhbSBOb3R0aW5naGFtc2hpcmUgTkc3IDJRUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLTQyICAgKGhleCkJCVhhbHlvIFN5c3RlbXMKLTAwMEY0MiAgICAgKGJhc2UgMTYpCQlYYWx5byBTeXN0ZW1zCi0JCQkJR3JlbmllciA5Ci0JCQkJQ29tbXVnbnkgVkQgMTI5MQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTBGLTQzICAgKGhleCkJCVdhc2FiaSBTeXN0ZW1zIEluYy4KLTAwMEY0MyAgICAgKGJhc2UgMTYpCQlXYXNhYmkgU3lzdGVtcyBJbmMuCi0JCQkJNTAwIEUuIE1haW4gU3RyZWV0Ci0JCQkJU3VpdGUgMTUyMAotCQkJCU5vcmZvbGsgVkEgMjM1MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTQ0ICAgKGhleCkJCVRpdmVsbGEgSW5jLgotMDAwRjQ0ICAgICAoYmFzZSAxNikJCVRpdmVsbGEgSW5jLgotCQkJCTc5NSBNYWluIFN0cmVldAotCQkJCUhhbGYgTW9vbiBCYXkgQ0EgOTQwMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTQ1ICAgKGhleCkJCVN0cmV0Y2gsIEluYy4KLTAwMEY0NSAgICAgKGJhc2UgMTYpCQlTdHJldGNoLCBJbmMuCi0JCQkJMTMyMiBPcmxlYW5zIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi00NiAgIChoZXgpCQlTSU5BUiBBRwotMDAwRjQ2ICAgICAoYmFzZSAxNikJCVNJTkFSIEFHCi0JCQkJU3RhZHR3ZWcgMjQKLQkJCQlGZXVlcnRoYWxlbiBaSCBDSC04MjQ1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEYtNDcgICAoaGV4KQkJUk9CT1ggU1BBCi0wMDBGNDcgICAgIChiYXNlIDE2KQkJUk9CT1ggU1BBCi0JCQkJdmlhIFNlbXBpb25lIDgyCi0JCQkJQ2FzdGVsbGV0dG8gUy5UaWNpbm8gTk8gMjgwNTMKLQkJCQlJVEFMWQotCi0wMC0wRi00OCAgIChoZXgpCQlQb2x5cGl4IEluYy4KLTAwMEY0OCAgICAgKGJhc2UgMTYpCQlQb2x5cGl4IEluYy4KLQkJCQkxRmwsIFN1bmdkbyBWZW50dXJlIFRvd2VyLCAxNjUtMiBTYW1zdW5nLURvbmcsIEthbmduYW0tS3UKLQkJCQlTZW91bCAgMTM1LTg4MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi00OSAgIChoZXgpCQlOb3J0aG92ZXIgU29sdXRpb25zIExpbWl0ZWQKLTAwMEY0OSAgICAgKGJhc2UgMTYpCQlOb3J0aG92ZXIgU29sdXRpb25zIExpbWl0ZWQKLQkJCQlIZWF0aCBDb3R0YWdlCi0JCQkJSWxsaW5ndG9uIFJvYWQKLQkJCQlMYXJsaW5nIE5vcmZvbGsgTlIxNiAyUkIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRi00QSAgIChoZXgpCQlLeXVzaHUta3lvaGFuIGNvLixsdGQKLTAwMEY0QSAgICAgKGJhc2UgMTYpCQlLeXVzaHUta3lvaGFuIGNvLixsdGQKLQkJCQkyLTYtMyxLb2dhbmVtYWNoaQotCQkJCUtva3VyYWtpdGEta3UKLQkJCQlLaXRha3l1c2h1LWNpdHkgRnVrdW9rYSA4MDItMDA3MQotCQkJCUpBUEFOCi0KLTAwLTBGLTRCICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbgotMDAwRjRCICAgICAoYmFzZSAxNikJCU9yYWNsZSBDb3Jwb3JhdGlvbgotCQkJCTkwMCBDaGVsbXNmb3JkIFN0cmVldAotCQkJCVRvd2VyIDEgRmxvb3IgMgotCQkJCUxvd2VsbCBNQSAwMTg1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNEMgICAoaGV4KQkJRWxleHRlY2ggSU5DCi0wMDBGNEMgICAgIChiYXNlIDE2KQkJRWxleHRlY2ggSU5DCi0JCQkJNTU0LTIsIEdhc2FuLURvbmcsIEd1bWNoZW9uLUd1Ci0JCQkJU2VvdWwgIDE1My0wMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtNEQgICAoaGV4KQkJVGFsa1N3aXRjaAotMDAwRjREICAgICAoYmFzZSAxNikJCVRhbGtTd2l0Y2gKLQkJCQkxNTQ1IENhcmxpbmcgQXZlCi0JCQkJU3VpdGUgNTEwCi0JCQkJT3R0YXdhIE9udGFyaW8gSzFaIDhQOQotCQkJCUNBTkFEQQotCi0wMC0wRi00RSAgIChoZXgpCQlDZWxsaW5rCi0wMDBGNEUgICAgIChiYXNlIDE2KQkJQ2VsbGluawotCQkJCUNhdGhlcmluYWxhYW4gMzcKLQkJCQlSb3RzZWxhYXIgVmxhYW1zIEJyYWJhbnQgQi0zMTEwCi0JCQkJQkVMR0lVTQotCi0wMC0wRi00RiAgIChoZXgpCQlDYWRtdXMgVGVjaG5vbG9neSBMdGQKLTAwMEY0RiAgICAgKGJhc2UgMTYpCQlDYWRtdXMgVGVjaG5vbG9neSBMdGQKLQkJCQk2NiBIaWxsc2lkZSBSZAotCQkJCUdsZW5maWVsZAotCQkJCUF1Y2tsYW5kICAxMzEwCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMEYtNTAgICAoaGV4KQkJU3RyZWFtU2NhbGUgTGltaXRlZAotMDAwRjUwICAgICAoYmFzZSAxNikJCVN0cmVhbVNjYWxlIExpbWl0ZWQKLQkJCQlUaGUgQ291cnQsIEFsZXhhbmRyYSBQYXJrCi0JCQkJUHJlc2NvdCBSb2FkCi0JCQkJU3QgSGVsZW5zICBXQTEwIDNUUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLTUxICAgKGhleCkJCUF6dWwgU3lzdGVtcywgSW5jLgotMDAwRjUxICAgICAoYmFzZSAxNikJCUF6dWwgU3lzdGVtcywgSW5jLgotCQkJCTE2MDAgUGx5bW91dGggU3RyZWV0Ci0JCQkJTW91bnRhaW4gVmlldyBDYWxpZm9ybmlhIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi01MiAgIChoZXgpCQlZT1JLIFJlZnJpZ2VyYXRpb24sIE1hcmluZSAmIENvbnRyb2xzCi0wMDBGNTIgICAgIChiYXNlIDE2KQkJWU9SSyBSZWZyaWdlcmF0aW9uLCBNYXJpbmUgJiBDb250cm9scwotCQkJCUplbnMgSnV1bHN2ZWogMjgKLQkJCQlWaWJ5IEogREsgODM2MgotCQkJCURFTk1BUksKLQotMDAtMEYtNTMgICAoaGV4KQkJU29sYXJmbGFyZSBDb21tdW5pY2F0aW9ucyBJbmMKLTAwMEY1MyAgICAgKGJhc2UgMTYpCQlTb2xhcmZsYXJlIENvbW11bmljYXRpb25zIEluYwotCQkJCTk1MDEgSmVyb25pbW8gUm9hZAotCQkJCVN1aXRlIDI1MAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNTQgICAoaGV4KQkJRW50cmVsb2dpYyBDb3Jwb3JhdGlvbgotMDAwRjU0ICAgICAoYmFzZSAxNikJCUVudHJlbG9naWMgQ29ycG9yYXRpb24KLQkJCQkzMyBCb3N0b24gUG9zdCBSZC4gV2VzdC4KLQkJCQlTdWl0ZSAxNjAKLQkJCQlNYXJsYm9yb3VnaCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNTUgICAoaGV4KQkJRGF0YXdpcmUgQ29tbXVuaWNhdGlvbiBOZXR3b3JrcyBJbmMuCi0wMDBGNTUgICAgIChiYXNlIDE2KQkJRGF0YXdpcmUgQ29tbXVuaWNhdGlvbiBOZXR3b3JrcyBJbmMuCi0JCQkJMTAgQ2FybHNvbiBDb3VydCwgU3VpdGUgMzAwCi0JCQkJVG9yb250byBPbnRhcmlvIE05VyA2TDIKLQkJCQlDQU5BREEKLQotMDAtMEYtNTYgICAoaGV4KQkJQ29udGludXVtIFBob3RvbmljcyBJbmMKLTAwMEY1NiAgICAgKGJhc2UgMTYpCQlDb250aW51dW0gUGhvdG9uaWNzIEluYwotCQkJCTUgRm9ydHVuZSBEcml2ZQotCQkJCUJpbGxlcmljYSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNTcgICAoaGV4KQkJQ0FCTEVMT0dJQyBDby4sIEx0ZC4KLTAwMEY1NyAgICAgKGJhc2UgMTYpCQlDQUJMRUxPR0lDIENvLiwgTHRkLgotCQkJCTNGLiwgSHdhaW4gQmxkZy4sIDE1NTktMTIgU2VvY2hvIDMtZG9uZywKLQkJCQlTZWNoby1ndSwKLQkJCQlTZW91bCAgMTM3LTg3MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi01OCAgIChoZXgpCQlBZGRlciBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMEY1OCAgICAgKGJhc2UgMTYpCQlBZGRlciBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlUZWNobm9sb2d5IEhvdXNlCi0JCQkJVHJhZmFsZ2FyIFdheQotCQkJCUJhciBIaWxsIENhbWJyaWRnZXNoaXJlIENCMyA4U1EKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRi01OSAgIChoZXgpCQlQaG9uYWsgQ29tbXVuaWNhdGlvbnMgQUcKLTAwMEY1OSAgICAgKGJhc2UgMTYpCQlQaG9uYWsgQ29tbXVuaWNhdGlvbnMgQUcKLQkJCQlMw6RuZ2dhc3NlIDE3Ci0JCQkJTXVydGVuIEZSIDMyODAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wRi01QSAgIChoZXgpCQlQZXJpYml0IE5ldHdvcmtzCi0wMDBGNUEgICAgIChiYXNlIDE2KQkJUGVyaWJpdCBOZXR3b3JrcwotCQkJCTI4NTUgQm93ZXJzIEF2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi01QiAgIChoZXgpCQlEZWx0YSBJbmZvcm1hdGlvbiBTeXN0ZW1zLCBJbmMuCi0wMDBGNUIgICAgIChiYXNlIDE2KQkJRGVsdGEgSW5mb3JtYXRpb24gU3lzdGVtcywgSW5jLgotCQkJCTMwMCBXZWxzaCBSb2FkLCBCbGRnLiAzCi0JCQkJSG9yc2hhbSBQQSAxOTA0NC0yMjczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi01QyAgIChoZXgpCQlEYXkgT25lIERpZ2l0YWwgTWVkaWEgTGltaXRlZAotMDAwRjVDICAgICAoYmFzZSAxNikJCURheSBPbmUgRGlnaXRhbCBNZWRpYSBMaW1pdGVkCi0JCQkJMTk3IEFyY2hlcnMgUmQKLQkJCQlHbGVuZmllbGQKLQkJCQlBdWNrbGFuZCBOb3J0aCBJc2xhbmQgMTMxMAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTBGLTVEICAgKGhleCkJCVBhY2tldEZyb250IEludGVybmF0aW9uYWwgQUIKLTAwMEY1RCAgICAgKGJhc2UgMTYpCQlQYWNrZXRGcm9udCBJbnRlcm5hdGlvbmFsIEFCCi0JCQkJUE8tMTIxNwotCQkJCUtpc3RhZ2FuZ2VuIDIsIElWCi0JCQkJS2lzdGEgU3RvY2tob2xtIFNFLTE2NDI4Ci0JCQkJU1dFREVOCi0KLTAwLTBGLTVFICAgKGhleCkJCVZlbwotMDAwRjVFICAgICAoYmFzZSAxNikJCVZlbwotCQkJCTkxMCBSaW5jb24gQ2lyY2xlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTVGICAgKGhleCkJCU5pY2V0eSBUZWNobm9sb2dpZXMgSW5jLiAoTlRTKQotMDAwRjVGICAgICAoYmFzZSAxNikJCU5pY2V0eSBUZWNobm9sb2dpZXMgSW5jLiAoTlRTKQotCQkJCTc5Mi0zIFRvbWlva2EgVG95b2RhLWNobwotCQkJCUl3YXRhLWd1biBTaGl6dW9rYSA0MzgtMDgwMwotCQkJCUpBUEFOCi0KLTAwLTBGLTYwICAgKGhleCkJCUxpZmV0cm9uIENvLixMdGQKLTAwMEY2MCAgICAgKGJhc2UgMTYpCQlMaWZldHJvbiBDby4sTHRkCi0JCQkJNi03LFRlbmppbm5pc2hpbWFjaGkKLQkJCQlLaXRhLUt1Ci0JCQkJT3Nha2EgT3Nha2EgUHJlZmVjdHVyZSA1MzAtMDA0NQotCQkJCUpBUEFOCi0KLTAwLTBGLTYxICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDBGNjEgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTYyICAgKGhleCkJCUFsY2F0ZWwgQmVsbCBTcGFjZSBOLlYuCi0wMDBGNjIgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBCZWxsIFNwYWNlIE4uVi4KLQkJCQlCZXJrZW5yb2RlbGVpIDMzCi0JCQkJSG9ib2tlbiBBbnR3ZXJwZW4gQi0yNjYwCi0JCQkJQkVMR0lVTQotCi0wMC0wRi02MyAgIChoZXgpCQlPYnplcnYgVGVjaG5vbG9naWVzCi0wMDBGNjMgICAgIChiYXNlIDE2KQkJT2J6ZXJ2IFRlY2hub2xvZ2llcwotCQkJCTQwMCBKZWFuIExlc2FnZQotCQkJCXN1aXRlIDIwMQotCQkJCVF1ZWJlYyBRQyBHMUs4VzEKLQkJCQlDQU5BREEKLQotMDAtMEYtNjQgICAoaGV4KQkJRCZSIEVsZWN0cm9uaWNhIFdlZXNwIEJWCi0wMDBGNjQgICAgIChiYXNlIDE2KQkJRCZSIEVsZWN0cm9uaWNhIFdlZXNwIEJWCi0JCQkJUmlqbmthZGUgMTVCCi0JCQkJV0VFU1AgTkggMTM4MkdTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEYtNjUgICAoaGV4KQkJaWN1YmUgQ29ycC4KLTAwMEY2NSAgICAgKGJhc2UgMTYpCQlpY3ViZSBDb3JwLgotCQkJCU9seW1waWEgQ2VudGVyIDJGLDgyOC0xMCxZZW9rc2FtLWRvbmcsS2FuZ25hbS1rdQotCQkJCVNlb3VsIFNvdXRoIDEzNS05MzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtNjYgICAoaGV4KQkJQ2lzY28tTGlua3N5cwotMDAwRjY2ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMKLQkJCQkxMjEgVGhlb3J5IERyLgotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNjcgICAoaGV4KQkJV2VzdCBJbnN0cnVtZW50cwotMDAwRjY3ICAgICAoYmFzZSAxNikJCVdlc3QgSW5zdHJ1bWVudHMKLQkJCQlVbml0IDUsIFRoZSBIeWRlLCBMb3dlciBCZXZlbmRlYW4KLQkJCQlCcmlnaHRvbiBFYXN0IFN1c3NleCBCTjIgNEpVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtNjggICAoaGV4KQkJVmF2aWMgTmV0d29yayBUZWNobm9sb2d5LCBJbmMuCi0wMDBGNjggICAgIChiYXNlIDE2KQkJVmF2aWMgTmV0d29yayBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMXN0IEZsb29yLCAxNSBKaWFuZ29uZyBSb2FkCi0JCQkJVGlhbmhlICBTJlQgWm9uZQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjY1Ci0JCQkJQ0hJTkEKLQotMDAtMEYtNjkgICAoaGV4KQkJU0VXIEV1cm9kcml2ZSBHbWJIICYgQ28uIEtHCi0wMDBGNjkgICAgIChiYXNlIDE2KQkJU0VXIEV1cm9kcml2ZSBHbWJIICYgQ28uIEtHCi0JCQkJRXJuc3QgQmxpY2tsZSBTdHIuIDQyCi0JCQkJQnJ1Y2hzYWwgIDc2NjQ2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRi02QSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMEY2QSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0wRi02QiAgIChoZXgpCQlHYXRlV2FyZSBDb21tdW5pY2F0aW9ucyBHbWJICi0wMDBGNkIgICAgIChiYXNlIDE2KQkJR2F0ZVdhcmUgQ29tbXVuaWNhdGlvbnMgR21iSAotCQkJCUFsbGVyc2JlcmdlciBTdHJhc3NlIDE4NSBGCi0JCQkJTnVlcm5iZXJnIEJhdmFyaWEgRC05MDQ2MQotCQkJCUdFUk1BTlkKLQotMDAtMEYtNkMgICAoaGV4KQkJQURESS1EQVRBIEdtYkgKLTAwMEY2QyAgICAgKGJhc2UgMTYpCQlBRERJLURBVEEgR21iSAotCQkJCURpZXNlbHN0cmFzc2UgMwotCQkJCU9UVEVSU1dFSUVSIEJXIDc3ODMzCi0JCQkJR0VSTUFOWQotCi0wMC0wRi02RCAgIChoZXgpCQlNaWRhcyBFbmdpbmVlcmluZwotMDAwRjZEICAgICAoYmFzZSAxNikJCU1pZGFzIEVuZ2luZWVyaW5nCi0JCQkJQWNlIFRlY2huby1Ub3dlciBWICM5MDYgMTk3LTIyCi0JCQkJS3Vyby1Eb25nLCBLdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtNkUgICAoaGV4KQkJQkJveAotMDAwRjZFICAgICAoYmFzZSAxNikJCUJCb3gKLQkJCQlFcGl0b2sgdS4gMi00Ci0JCQkJQnVkYW9ycyAgSC0yMDQwCi0JCQkJSFVOR0FSWQotCi0wMC0wRi02RiAgIChoZXgpCQlGVEEgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMKLTAwMEY2RiAgICAgKGJhc2UgMTYpCQlGVEEgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMKLQkJCQkxMSwgcnVlIFBpZXJyZSBXZXJuZXIKLQkJCQlCZXR6ZG9yZiAgTC02ODMyCi0JCQkJTFVYRU1CT1VSRwotCi0wMC0wRi03MCAgIChoZXgpCQlXaW50ZWMgSW5kdXN0cmllcywgaW5jLgotMDAwRjcwICAgICAoYmFzZSAxNikJCVdpbnRlYyBJbmR1c3RyaWVzLCBpbmMuCi0JCQkJNjc1IFN5Y2Ftb3JlIERyaXZlCi0JCQkJTWlscGl0YXMsIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi03MSAgIChoZXgpCQlTYW5tZWkgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAwRjcxICAgICAoYmFzZSAxNikJCVNhbm1laSBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJMi0yLTEsU2Vpa2FpLFNoaW1penUKLQkJCQlTaGl6dW9rYSAgNDI0LTA5MjQKLQkJCQlKQVBBTgotCi0wMC0wRi03MiAgIChoZXgpCQlTYW5kYnVyc3QKLTAwMEY3MiAgICAgKGJhc2UgMTYpCQlTYW5kYnVyc3QKLQkJCQk2MDAgRmVkZXJhbCBTdAotCQkJCTJuZCBGbG9vcgotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTczICAgKGhleCkJCVJTIEF1dG9tYXRpb24gQ28uLCBMdGQKLTAwMEY3MyAgICAgKGJhc2UgMTYpCQlSUyBBdXRvbWF0aW9uIENvLiwgTHRkCi0JCQkJNDQ3LTYsIEdvbmdzZS1Eb25nICwgR2loZXVuZy1HdQotCQkJCVlvdW5naW4tQ2l0eSBHeWVvbmdnaS1EbyA0NDktOTAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTc0ICAgKGhleCkJCVFhbWNvbSBUZWNobm9sb2d5IEFCCi0wMDBGNzQgICAgIChiYXNlIDE2KQkJUWFtY29tIFRlY2hub2xvZ3kgQUIKLQkJCQlHcnV2Z2F0YW4gOAotCQkJCVNFLTQyMSAzMAotCQkJCVZhc3RyYSBGcm9sdW5kYSAKLQkJCQlTV0VERU4KLQotMDAtMEYtNzUgICAoaGV4KQkJRmlyc3QgU2lsaWNvbiBTb2x1dGlvbnMKLTAwMEY3NSAgICAgKGJhc2UgMTYpCQlGaXJzdCBTaWxpY29uIFNvbHV0aW9ucwotCQkJCTEzOTM5IEZvcmVzdCBMYW5lCi0JCQkJTGFya3NwdXIgQ08gODAxMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTc2ICAgKGhleCkJCURpZ2l0YWwgS2V5c3RvbmUsIEluYy4KLTAwMEY3NiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIEtleXN0b25lLCBJbmMuCi0JCQkJMTk3NSBFbCBDYW1pbm8gUmVhbAotCQkJCSMzMDYKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi03NyAgIChoZXgpCQlERU5UVU0gQ08uLExURAotMDAwRjc3ICAgICAoYmFzZSAxNikJCURFTlRVTSBDTy4sTFRECi0JCQkJV29va3l1bmcgQi9EIDYwMiAjNjc4LTYKLQkJCQlEZXVuZ2Nob24tRG9uZyAsS2FuZ3Nlby1HdQotCQkJCVNlb3VsICAxNTctMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTc4ICAgKGhleCkJCURhdGFjYXAgU3lzdGVtcyBJbmMKLTAwMEY3OCAgICAgKGJhc2UgMTYpCQlEYXRhY2FwIFN5c3RlbXMgSW5jCi0JCQkJMTAwIE5ldyBCcml0YWluIEJsdmQKLQkJCQlDaGFsZm9udCBQQSAxODkxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtNzkgICAoaGV4KQkJQmx1ZXRvb3RoIEludGVyZXN0IEdyb3VwIEluYy4KLTAwMEY3OSAgICAgKGJhc2UgMTYpCQlCbHVldG9vdGggSW50ZXJlc3QgR3JvdXAgSW5jLgotCQkJCTRGLCBOby4gOSwgQWxsZXkgMiwgTGFuZSAzNSwgSmktSHUgUmQuCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtN0EgICAoaGV4KQkJQmVpSmluZyBOdVFYIFRlY2hub2xvZ3kgQ08uLExURAotMDAwRjdBICAgICAoYmFzZSAxNikJCUJlaUppbmcgTnVRWCBUZWNobm9sb2d5IENPLixMVEQKLQkJCQlSb29tIDgxMiw4RiBUb3dlciBCLFlpbldhbmcgQ2VudGVyLCBOby4xMTMsWmhpIENodW4gUm9hZCwKLQkJCQlIYWlEaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg2Ci0JCQkJQ0hJTkEKLQotMDAtMEYtN0IgICAoaGV4KQkJQXJjZSBTaXN0ZW1hcywgUy5BLgotMDAwRjdCICAgICAoYmFzZSAxNikJCUFyY2UgU2lzdGVtYXMsIFMuQS4KLQkJCQlDL1BhZHJlIExhcnJhbWVuZGksIDMgLSAywroKLQkJCQlCaWxiYW8gVml6Y2F5YSA0ODAxMgotCQkJCVNQQUlOCi0KLTAwLTBGLTdDICAgKGhleCkJCUFDVGkgQ29ycG9yYXRpb24KLTAwMEY3QyAgICAgKGJhc2UgMTYpCQlBQ1RpIENvcnBvcmF0aW9uCi0JCQkJN0YuLCBOby4gMSwgQWxsZXkgMjAsIExhbmUgNDA3LCBTZWMuIDIsIFRpZGluZyBCbHZkLiwKLQkJCQlOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi03RCAgIChoZXgpCQlYaXJydXMKLTAwMEY3RCAgICAgKGJhc2UgMTYpCQlYaXJydXMKLQkJCQkzMTAgTm9ydGggV2VzdGxha2UgQmx2ZC4KLQkJCQlXZXN0bGFrZSBWaWxsYWdlIENBIDkxMzYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi03RSAgIChoZXgpCQlBYmxlcmV4IEVsZWN0cm9uaWNzIENvLiwgTFRECi0wMDBGN0UgICAgIChiYXNlIDE2KQkJQWJsZXJleCBFbGVjdHJvbmljcyBDby4sIExURAotCQkJCTFGLCBOby4zIExhbmUgNywgUGFva2FvIFJkLgotCQkJCUhzaW50aWVuIFRhaXBlaSBIc2llbiAyMzExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtN0YgICAoaGV4KQkJVUJTVE9SQUdFIENvLixMdGQuCi0wMDBGN0YgICAgIChiYXNlIDE2KQkJVUJTVE9SQUdFIENvLixMdGQuCi0JCQkJI0EtMTA4LCBTZW91bF9TYW51cF9KaXdvbl9DZW50ZXIKLQkJCQk2NDctMjYsIERldW5nY2hvbmctZG9uZwotCQkJCUdhbnNlby1ndSBTZW91bCAxNTctODQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLTgwICAgKGhleCkJCVRyaW5pdHkgU2VjdXJpdHkgU3lzdGVtcyxJbmMuCi0wMDBGODAgICAgIChiYXNlIDE2KQkJVHJpbml0eSBTZWN1cml0eSBTeXN0ZW1zLEluYy4KLQkJCQlBbHRlIEJ1aWxkaW5nIEhpZ2FzaGkgS2FuZGEgOEYKLQkJCQkxLTctOCBIaWdhc2hpa2FuZGEKLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMS0wMDMxCi0JCQkJSkFQQU4KLQotMDAtMEYtODEgICAoaGV4KQkJU2VjdXJlIEluZm8gSW1hZ2luZwotMDAwRjgxICAgICAoYmFzZSAxNikJCVNlY3VyZSBJbmZvIEltYWdpbmcKLQkJCQlQTyBCb3ggMjE4NwotCQkJCVBhbG0gU3ByaW5ncyBDQSA5MjI2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtODIgICAoaGV4KQkJTW9ydGFyYSBJbnN0cnVtZW50LCBJbmMuCi0wMDBGODIgICAgIChiYXNlIDE2KQkJTW9ydGFyYSBJbnN0cnVtZW50LCBJbmMuCi0JCQkJNzg2NSBOLiA4NnRoIFN0LgotCQkJCU1pbHdhdWtlZSBXSSA1MzIyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtODMgICAoaGV4KQkJQnJhaW5pdW0gVGVjaG5vbG9naWVzIEluYy4KLTAwMEY4MyAgICAgKGJhc2UgMTYpCQlCcmFpbml1bSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCSMyMDEgLSAxMTQ5MSBLaW5nc3RvbiBTdHJlZXQKLQkJCQlNYXBsZSBSaWRnZSBCQyBWMlggMFk2Ci0JCQkJQ0FOQURBCi0KLTAwLTBGLTg0ICAgKGhleCkJCUFzdHV0ZSBOZXR3b3JrcywgSW5jLgotMDAwRjg0ICAgICAoYmFzZSAxNikJCUFzdHV0ZSBOZXR3b3JrcywgSW5jLgotCQkJCTE2NTE2IFZpYSBFc3ByaWxsbwotCQkJCSMyMDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTg1ICAgKGhleCkJCUFERE8tSmFwYW4gQ29ycG9yYXRpb24KLTAwMEY4NSAgICAgKGJhc2UgMTYpCQlBRERPLUphcGFuIENvcnBvcmF0aW9uCi0JCQkJU2hpbiBFZG9iYXNoaSBCbGRnLiA0RiwgOC02IE5paG9tYmFzaGkgS29idW5hLWNobwotCQkJCUNodW8ta3UgVG9reW8gMTAzLTAwMjQKLQkJCQlKQVBBTgotCi0wMC0wRi04NiAgIChoZXgpCQlSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZAotMDAwRjg2ICAgICAoYmFzZSAxNikJCVJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgM1c4Ci0JCQkJQ0FOQURBCi0KLTAwLTBGLTg3ICAgKGhleCkJCU1heGNlc3MgSW50ZXJuYXRpb25hbAotMDAwRjg3ICAgICAoYmFzZSAxNikJCU1heGNlc3MgSW50ZXJuYXRpb25hbAotCQkJCTIyMiBXLiBNZW1vcmlhbCBSb2FkCi0JCQkJT2tsYWhvbWEgQ2l0eSBPSyA3MzExNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtODggICAoaGV4KQkJQU1FVEVLLCBJbmMuCi0wMDBGODggICAgIChiYXNlIDE2KQkJQU1FVEVLLCBJbmMuCi0JCQkJMTUwIEZyZWVwb3J0IFJvYWQKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi04OSAgIChoZXgpCQlXaW5uZXJ0ZWMgU3lzdGVtIENvLiwgTHRkLgotMDAwRjg5ICAgICAoYmFzZSAxNikJCVdpbm5lcnRlYyBTeXN0ZW0gQ28uLCBMdGQuCi0JCQkJIzQwNSwgNHRoIEZsb29yLiBBY2UtVGVjaG5vIFRvd2VyIElJSSwgMTk3LTQ4LAotCQkJCUt1cm8gMy1Eb25nLCBLdXJvLUt1LgotCQkJCVNlb3VsICAxNTItNzY2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLThBICAgKGhleCkJCVdpZGVWaWV3Ci0wMDBGOEEgICAgIChiYXNlIDE2KQkJV2lkZVZpZXcKLQkJCQlGLiA2LCBOby4gOCwgV3UtY2h1YW4gMiBSZCwgSHNpbi1DaHVhbmcgQ2l0eQotCQkJCVRhaXBlaSBDb3VudHJ5ICAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLThCICAgKGhleCkJCU9yaW9uIE11bHRpU3lzdGVtcyBJbmMKLTAwMEY4QiAgICAgKGJhc2UgMTYpCQlPcmlvbiBNdWx0aVN5c3RlbXMgSW5jCi0JCQkJMzM3NSBTY290dCBCbHZkIFN1aXRlIDMzOAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi04QyAgIChoZXgpCQlHaWdhd2F2ZXRlY2ggUHRlIEx0ZAotMDAwRjhDICAgICAoYmFzZSAxNikJCUdpZ2F3YXZldGVjaCBQdGUgTHRkCi0JCQkJMSBKYWxhbiBLaWxhbmcgVGltb3IKLQkJCQkjMDctMDIgUGFjaWZpYyBUZWNoIENlbnRyZQotCQkJCTE1OTMwMwotCQkJCVNJTkdBUE9SRQotCi0wMC0wRi04RCAgIChoZXgpCQlGQVNUIFRWLVNlcnZlciBBRwotMDAwRjhEICAgICAoYmFzZSAxNikJCUZBU1QgVFYtU2VydmVyIEFHCi0JCQkJUnVlZGVzaGVpbWVyc3RyLiAxMS0xMwotCQkJCU11bmljaCBHZXJtYW55IDgwNjg2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRi04RSAgIChoZXgpCQlET05HWUFORyBURUxFQ09NIENPLixMVEQuCi0wMDBGOEUgICAgIChiYXNlIDE2KQkJRE9OR1lBTkcgVEVMRUNPTSBDTy4sTFRELgotCQkJCTY0Mi03LCBERVVOR0NIT04tRE9ORywgS0FOR1NFTy1HVQotCQkJCVNFT1VMIEtBTkdTRS1HVSAxNTctODQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLThGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEY4RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTkwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMEY5MCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTkxICAgKGhleCkJCUFlcm90ZWxlY29tIENvLixMdGQuCi0wMDBGOTEgICAgIChiYXNlIDE2KQkJQWVyb3RlbGVjb20gQ28uLEx0ZC4KLQkJCQkxOTUtNTggQW55YW5nIDcgRG9uZwotCQkJCUFueWFuZyBLeXVuZ2dpIDQzMC04MTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtOTIgICAoaGV4KQkJTWljcm9oYXJkIFN5c3RlbXMgSW5jLgotMDAwRjkyICAgICAoYmFzZSAxNikJCU1pY3JvaGFyZCBTeXN0ZW1zIEluYy4KLQkJCQkjMTcsIDIxMzUtMzJBdmUgTkUKLQkJCQlDYWxnYXJ5IEFCIFQyRTZaMwotCQkJCUNBTkFEQQotCi0wMC0wRi05MyAgIChoZXgpCQlMYW5kaXMrR3lyIEx0ZC4KLTAwMEY5MyAgICAgKGJhc2UgMTYpCQlMYW5kaXMrR3lyIEx0ZC4KLQkJCQlGZWxkc3RyYXNzZSAxCi0JCQkJWnVnICBDSC02MzAxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMEYtOTQgICAoaGV4KQkJR2VuZXhpcwotMDAwRjk0ICAgICAoYmFzZSAxNikJCUdlbmV4aXMKLQkJCQlMb2Rld2lqa3N0cmFhdCAxQQotCQkJCUVpbmRob3ZlbiAgNTY0NkhQCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMEYtOTUgICAoaGV4KQkJRUxFQ09NIENvLixMVEQgTGFuZWVkIERpdmlzaW9uCi0wMDBGOTUgICAgIChiYXNlIDE2KQkJRUxFQ09NIENvLixMVEQgTGFuZWVkIERpdmlzaW9uCi0JCQkJOEYgS2FuZGEtTXVyb21hY2hpIEJsZGcuCi0JCQkJMSBLYW5kYS1PZ2F3YW1hY2hpIDEgQ2hvbWUsCi0JCQkJQ2hpeW9kYS1LdSwgVG9reW8uICAxMDEtMDA1MgotCQkJCUpBUEFOCi0KLTAwLTBGLTk2ICAgKGhleCkJCVRlbGNvIFN5c3RlbXMsIEluYy4gCi0wMDBGOTYgICAgIChiYXNlIDE2KQkJVGVsY28gU3lzdGVtcywgSW5jLiAKLQkJCQkxNSBCZXJrc2hpcmUgUm9hZAotCQkJCU1hbnNmaWVsZCBNQSAwMjA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtOTcgICAoaGV4KQkJQXZhbmV4IENvcnBvcmF0aW9uCi0wMDBGOTcgICAgIChiYXNlIDE2KQkJQXZhbmV4IENvcnBvcmF0aW9uCi0JCQkJNDA5MTkgRW5jeWNsb3BlZGlhIENpcmNsZQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTk4ICAgKGhleCkJCUF2YW1heCBDby4gTHRkLgotMDAwRjk4ICAgICAoYmFzZSAxNikJCUF2YW1heCBDby4gTHRkLgotCQkJCUIxLCBOby4gNTEsIFNlY3Rpb24gMiwgQ2hvbmdRaW5nIFMuIFJkLgotCQkJCVRhaXBlaSAgMTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi05OSAgIChoZXgpCQlBUEFDIG9wdG8gRWxlY3Ryb25pY3MgSW5jLgotMDAwRjk5ICAgICAoYmFzZSAxNikJCUFQQUMgb3B0byBFbGVjdHJvbmljcyBJbmMuCi0JCQkJMyBUenUgQ2hpYW5nIFJvYWQsIEhzaW5jaHUgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHVrb3csIEhzaW5jaHUgSHNpZW4gIDMwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtOUEgICAoaGV4KQkJU3luY2hyb255LCBJbmMuCi0wMDBGOUEgICAgIChiYXNlIDE2KQkJU3luY2hyb255LCBJbmMuCi0JCQkJNjQxMCBDb21tb253ZWFsdGggRHJpdmUKLQkJCQlSb2Fub2tlIFZBIDI0MDE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi05QiAgIChoZXgpCQlSb3NzIFZpZGVvIExpbWl0ZWQKLTAwMEY5QiAgICAgKGJhc2UgMTYpCQlSb3NzIFZpZGVvIExpbWl0ZWQKLQkJCQk4IEpvaG4gU3RyZWV0Ci0JCQkJUE8gQm94IDIyMAotCQkJCUlyb3F1b2lzIE9udGFyaW8gSzBFIDFLMAotCQkJCUNBTkFEQQotCi0wMC0wRi05QyAgIChoZXgpCQlQYW5kdWl0IENvcnAKLTAwMEY5QyAgICAgKGJhc2UgMTYpCQlQYW5kdWl0IENvcnAKLQkJCQkxNzMwMSBSaWRnZWxhbmQgQXZlCi0JCQkJVGlubGV5IFBhcmsgSWxsaW5vaXMgNjA0NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLTlEICAgKGhleCkJCURpc3BsYXlMaW5rIChVSykgTHRkCi0wMDBGOUQgICAgIChiYXNlIDE2KQkJRGlzcGxheUxpbmsgKFVLKSBMdGQKLQkJCQlNb3VudCBQbGVhc2FudCBIb3VzZQotCQkJCU1vdW50IFBsZWFzYW50Ci0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCMyAwUk4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRi05RSAgIChoZXgpCQlNdXJyZWxla3Ryb25payBHbWJICi0wMDBGOUUgICAgIChiYXNlIDE2KQkJTXVycmVsZWt0cm9uaWsgR21iSAotCQkJCUZhbGtlbnN0cmFzc2UgMwotCQkJCU9wcGVud2VpbGVyIEJhZGVuIFfDvHJ0dGVtYmVyZyA3MTU3MAotCQkJCUdFUk1BTlkKLQotMDAtMEYtOUYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMEY5RiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUEwICAgKGhleCkJCUNBTk9OIEtPUkVBIEJVU0lORVNTIFNPTFVUSU9OUyBJTkMuCi0wMDBGQTAgICAgIChiYXNlIDE2KQkJQ0FOT04gS09SRUEgQlVTSU5FU1MgU09MVVRJT05TIElOQy4KLQkJCQk3MzYgV29uc2ktRG9uZwotCQkJCUFuc2FuLXNpIEt5dW5nZ2ktZG8gNDI1LTA5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1BMSAgIChoZXgpCQlHaWdhYml0IFN5c3RlbXMgSW5jLgotMDAwRkExICAgICAoYmFzZSAxNikJCUdpZ2FiaXQgU3lzdGVtcyBJbmMuCi0JCQkJRnV5b2ggVmlkZW8gQnVpbGRpbmcgM0YKLQkJCQk3LTI1IEhpZ2FzaGktS2lib3VnYW9rYSwgQXNhaGktS3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyNDEtMDgyNgotCQkJCUpBUEFOCi0KLTAwLTBGLUEyICAgKGhleCkJCURpZ2l0YWwgUGF0aCBOZXR3b3JrcwotMDAwRkEyICAgICAoYmFzZSAxNikJCURpZ2l0YWwgUGF0aCBOZXR3b3JrcwotCQkJCTI3NSBBaXJwYXJrIEJsdmQKLQkJCQlTdWl0ZSA1MDAKLQkJCQlDaGljbyBDQSA5NTk3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQTMgICAoaGV4KQkJQWxwaGEgTmV0d29ya3MgSW5jLgotMDAwRkEzICAgICAoYmFzZSAxNikJCUFscGhhIE5ldHdvcmtzIEluYy4KLQkJCQlOby44IExpLXNoaW5nIDd0aCBSZC4sU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTBGLUE0ICAgKGhleCkJCVNwcmVjaGVyIEF1dG9tYXRpb24gR21iSAotMDAwRkE0ICAgICAoYmFzZSAxNikJCVNwcmVjaGVyIEF1dG9tYXRpb24gR21iSAotCQkJCUZyYW5ja3N0cmFzc2UgNTEKLQkJCQlMaW56IE9iZXLDtnN0ZXJyZWljaCA0MDE4Ci0JCQkJQVVTVFJJQQotCi0wMC0wRi1BNSAgIChoZXgpCQlCV0EgVGVjaG5vbG9neSBHbWJICi0wMDBGQTUgICAgIChiYXNlIDE2KQkJQldBIFRlY2hub2xvZ3kgR21iSAotCQkJCUpvaGFubi1LcmFuZS1XZWcgMjEKLQkJCQlNdWVuc3RlciAgNDgxNDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLUE2ICAgKGhleCkJCVMyIFNlY3VyaXR5IENvcnBvcmF0aW9uCi0wMDBGQTYgICAgIChiYXNlIDE2KQkJUzIgU2VjdXJpdHkgQ29ycG9yYXRpb24KLQkJCQk2IEFiYm90dCBSb2FkCi0JCQkJV2VsbGVzbGV5IE1BIDAyNDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1BNyAgIChoZXgpCQlSYXB0b3IgTmV0d29ya3MgVGVjaG5vbG9neQotMDAwRkE3ICAgICAoYmFzZSAxNikJCVJhcHRvciBOZXR3b3JrcyBUZWNobm9sb2d5Ci0JCQkJNjUgRW50ZXJwcmlzZSBSb2FkCi0JCQkJQWxpc28gVmllam8gQ0EgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUE4ICAgKGhleCkJCVBob3RvbWV0cmljcywgSW5jLgotMDAwRkE4ICAgICAoYmFzZSAxNikJCVBob3RvbWV0cmljcywgSW5jLgotCQkJCTM0NDAgRSBCcml0YW5uaWEgRHJpdmUKLQkJCQlUdWNzb24gQVogODU3MDYtNTAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQTkgICAoaGV4KQkJUEMgRmFicmlrCi0wMDBGQTkgICAgIChiYXNlIDE2KQkJUEMgRmFicmlrCi0JCQkJQnVjaGVuc3RyYXNzZSAxMy0xNQotCQkJCURyZXNkZW4gU2FjaHNlbiAwMTA5NwotCQkJCUdFUk1BTlkKLQotMDAtMEYtQUEgICAoaGV4KQkJTmV4dXMgVGVjaG5vbG9naWVzCi0wMDBGQUEgICAgIChiYXNlIDE2KQkJTmV4dXMgVGVjaG5vbG9naWVzCi0JCQkJMTAgTmF0aW9uYWwgQXZlLgotCQkJCUZsZXRjaGVyIE5DIDI4NzMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1BQiAgIChoZXgpCQlLeXVzaHUgRWxlY3Ryb25pY3MgU3lzdGVtcyBJbmMuCi0wMDBGQUIgICAgIChiYXNlIDE2KQkJS3l1c2h1IEVsZWN0cm9uaWNzIFN5c3RlbXMgSW5jLgotCQkJCTMtMywgS29uZ28gMi1DaG9tZSwgWWFoYXRhbmlzaGkgV2FyZAotCQkJCUtpdGFreXVzaHUgQ2l0eSBGdWt1b2thIFByZWYuIDgwNy0xMjYzCi0JCQkJSkFQQU4KLQotMDAtMEYtQUMgICAoaGV4KQkJSUVFRSA4MDIuMTEKLTAwMEZBQyAgICAgKGJhc2UgMTYpCQlJRUVFIDgwMi4xMQotCQkJCTQxMjUgSGlnaGxhbmRlciBQYXJrd2F5Ci0JCQkJUmljaGZpZWxkIE9oaW8gNDQyODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUFEICAgKGhleCkJCUZNTiBjb21tdW5pY2F0aW9ucyBHbWJICi0wMDBGQUQgICAgIChiYXNlIDE2KQkJRk1OIGNvbW11bmljYXRpb25zIEdtYkgKLQkJCQlHcmltbWVsYWxsZWUgNAotCQkJCU5vcmRoYXVzZW4gVGjDvHJpbmdlbiA5OTczNAotCQkJCUdFUk1BTlkKLQotMDAtMEYtQUUgICAoaGV4KQkJRTJPIENvbW11bmljYXRpb25zCi0wMDBGQUUgICAgIChiYXNlIDE2KQkJRTJPIENvbW11bmljYXRpb25zCi0JCQkJNTIgU2VyYW5nb29uIE5vcnRoIEF2ZSA0Ci0JCQkJIzA2LTAyIEV2ZXIgVGVjaCBCdWlsZGluZwotCQkJCTU1NTg1MwotCQkJCVNJTkdBUE9SRQotCi0wMC0wRi1BRiAgIChoZXgpCQlEaWFsb2cgSW5jLgotMDAwRkFGICAgICAoYmFzZSAxNikJCURpYWxvZyBJbmMuCi0JCQkJMS00Ny05Ci0JCQkJSGlnYXNoaWlrZWJ1a3VybwotCQkJCVRvc2hpbWEta3UgVG9reW8gMTcwMDAxMwotCQkJCUpBUEFOCi0KLTAwLTBGLUIwICAgKGhleCkJCUNvbXBhbCBFbGVjdHJvbmljcyxJTkMuCi0wMDBGQjAgICAgIChiYXNlIDE2KQkJQ29tcGFsIEVsZWN0cm9uaWNzLElOQy4KLQkJCQk1ODEgSnVpa3VhbmcgUm9hZCxOZWlodSwKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtQjEgICAoaGV4KQkJQ29nbmlvIEluYy4KLTAwMEZCMSAgICAgKGJhc2UgMTYpCQlDb2duaW8gSW5jLgotCQkJCTEwMSBPcmNoYXJkIFJpZGdlIERyaXZlCi0JCQkJU3VpdGUgMzUwCi0JCQkJR2FpdGhlcnNidXJnIE1EIDIwODc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1CMiAgIChoZXgpCQlCcm9hZGJhbmQgUGFjZW5ldCAoSW5kaWEpIFB2dC4gTHRkLgotMDAwRkIyICAgICAoYmFzZSAxNikJCUJyb2FkYmFuZCBQYWNlbmV0IChJbmRpYSkgUHZ0LiBMdGQuCi0JCQkJNy1CLCBTaGFoIEluZHVzdHJpYWwgRXN0YXRlLCBPZmYgVmVlcmEgRGVzYWkgUm9hZAotCQkJCUFuZGhlcmkgV2VzdAotCQkJCU11bWJhaSBNYWhhcmFzaHRyYSA0MDAgMDUzCi0JCQkJSU5ESUEKLQotMDAtMEYtQjMgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0wMDBGQjMgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1CNCAgIChoZXgpCQlUaW1lc3BhY2UgVGVjaG5vbG9neQotMDAwRkI0ICAgICAoYmFzZSAxNikJCVRpbWVzcGFjZSBUZWNobm9sb2d5Ci0JCQkJQmxhY2tzdG9uZSBSb2FkCi0JCQkJSHVudGluZ2RvbiBDYW1icmlkZ2VzaGlyZSBQRTI5IDZUVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLUI1ICAgKGhleCkJCU5FVEdFQVIgSW5jCi0wMDBGQjUgICAgIChiYXNlIDE2KQkJTkVUR0VBUiBJbmMKLQkJCQk0NTAwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1CNiAgIChoZXgpCQlFdXJvcGxleCBUZWNobm9sb2dpZXMKLTAwMEZCNiAgICAgKGJhc2UgMTYpCQlFdXJvcGxleCBUZWNobm9sb2dpZXMKLQkJCQlDbG9uc2hhdWdoIEJ1c2luZXNzICYgVGVjaC4gUGFyawotCQkJCUNsb25zaGF1Z2ggIER1YmxpbiAxNwotCQkJCUlSRUxBTkQKLQotMDAtMEYtQjcgICAoaGV4KQkJQ2F2aXVtIE5ldHdvcmtzCi0wMDBGQjcgICAgIChiYXNlIDE2KQkJQ2F2aXVtIE5ldHdvcmtzCi0JCQkJMjYxMCBBdWd1c3RpbmUgRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDYWxpZm9ybmlhIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1COCAgIChoZXgpCQlDYWxsVVJMIEluYy4KLTAwMEZCOCAgICAgKGJhc2UgMTYpCQlDYWxsVVJMIEluYy4KLQkJCQkzRi0xMSwgTm8uIDUwOCBTZWMuICA1LCBDaHVuZy1Ic2lhbyBFLiBSZC4KLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtQjkgICAoaGV4KQkJQWRhcHRpdmUgSW5zdHJ1bWVudHMKLTAwMEZCOSAgICAgKGJhc2UgMTYpCQlBZGFwdGl2ZSBJbnN0cnVtZW50cwotCQkJCTU3NyBNYWluIFN0cmVldAotCQkJCUh1ZHNvbiBNQSAwMTc0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQkEgICAoaGV4KQkJVGV2ZWJveCBBQgotMDAwRkJBICAgICAoYmFzZSAxNikJCVRldmVib3ggQUIKLQkJCQlCZXJnbGluZHMgdmFnIDEzCi0JCQkJd2FybWRvICBTLTEzOTAwCi0JCQkJU1dFREVOCi0KLTAwLTBGLUJCICAgKGhleCkJCU5va2lhIFNpZW1lbnMgTmV0d29ya3MgR21iSCAmIENvLiBLRwotMDAwRkJCICAgICAoYmFzZSAxNikJCU5va2lhIFNpZW1lbnMgTmV0d29ya3MgR21iSCAmIENvLiBLRwotCQkJCVdlcm5lci12b24tU2llbWVucyBTdHIuIDItNgotCQkJCUJydWNoc2FsIEJhZGVuLVfDvHJ0ZW1iZXJnIDc2NjQ2Ci0JCQkJR0VSTUFOWQotCi0wMC0wRi1CQyAgIChoZXgpCQlPbmtleSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMEZCQyAgICAgKGJhc2UgMTYpCQlPbmtleSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk3ODAgTW9udGFndWUgRXhwcmVzc3dheSwgSW5jLgotCQkJCVN1aXRlICMzMDYKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQkQgICAoaGV4KQkJTVJWIENvbW11bmljYXRpb25zIChOZXR3b3JrcykgTFRECi0wMDBGQkQgICAgIChiYXNlIDE2KQkJTVJWIENvbW11bmljYXRpb25zIChOZXR3b3JrcykgTFRECi0JCQkJUC5PIEJveCA2MTQKLQkJCQlZb2tuZWFtICAyMDY5MgotCQkJCUlTUkFFTAotCi0wMC0wRi1CRSAgIChoZXgpCQllLXcveW91IEluYy4KLTAwMEZCRSAgICAgKGJhc2UgMTYpCQllLXcveW91IEluYy4KLQkJCQkzRiBGSU5FIEJsZGcuIDYtMTctMTcKLQkJCQlNaW5hbWlvb2ksCi0JCQkJU2hpbmFnYXdhLWt1LCBUb2t5byAxNDAtMDAxMwotCQkJCUpBUEFOCi0KLTAwLTBGLUJGICAgKGhleCkJCURHVCBTcC4geiBvLm8uCi0wMDBGQkYgICAgIChiYXNlIDE2KQkJREdUIFNwLiB6IG8uby4KLQkJCQl1bC4gSmFza293YSBEb2xpbmEgMTUKLQkJCQlHZGFuc2sgIDgwLTI1MgotCQkJCVBPTEFORAotCi0wMC0wRi1DMCAgIChoZXgpCQlERUxDT01wCi0wMDBGQzAgICAgIChiYXNlIDE2KQkJREVMQ09NcAotCQkJCVRlY2hub2xvZ2llbGFhbiAzCi0JCQkJTGV1dmVuICBCLTMwMDAKLQkJCQlCRUxHSVVNCi0KLTAwLTBGLUMxICAgKGhleCkJCVdBVkUgQ29ycG9yYXRpb24KLTAwMEZDMSAgICAgKGJhc2UgMTYpCQlXQVZFIENvcnBvcmF0aW9uCi0JCQkJMy0yNS01IENoaWRvcmkKLQkJCQlPaHRhLWt1IFRva3lvIDE0Ni0wMDgzCi0JCQkJSkFQQU4KLQotMDAtMEYtQzIgICAoaGV4KQkJVW5pd2VsbCBDb3Jwb3JhdGlvbgotMDAwRkMyICAgICAoYmFzZSAxNikJCVVuaXdlbGwgQ29ycG9yYXRpb24KLQkJCQk1LTI1LCAzLWNob21lLCBUZW5tYSwgS2l0YS1rdQotCQkJCU9zYWthICA1MzAtMDA0MwotCQkJCUpBUEFOCi0KLTAwLTBGLUMzICAgKGhleCkJCVBhbG1QYWxtIFRlY2hub2xvZ3ksIEluYy4KLTAwMEZDMyAgICAgKGJhc2UgMTYpCQlQYWxtUGFsbSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJU2Ftc3VuZy1kb25nIDE1Ni0zLCBHYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS0wOTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtQzQgICAoaGV4KQkJTlNUIGNvLixMVEQuCi0wMDBGQzQgICAgIChiYXNlIDE2KQkJTlNUIGNvLixMVEQuCi0JCQkJNC0zLTEgU0hJTk1JWUFLT0RBCi0JCQkJSEFNQU1BVFNVIFNISVpVT0tBIDQzMS0yMTAzCi0JCQkJSkFQQU4KLQotMDAtMEYtQzUgICAoaGV4KQkJS2V5TWVkIEx0ZAotMDAwRkM1ICAgICAoYmFzZSAxNikJCUtleU1lZCBMdGQKLQkJCQlLZXlNZWQgSG91c2UKLQkJCQlTdG9jayBSb2FkCi0JCQkJU291dGhlbmQgb24gU2VhIEVzc2V4IFNTMiA1UUgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0wRi1DNiAgIChoZXgpCQlFdXJvY29tIEluZHVzdHJpZXMgQS9TCi0wMDBGQzYgICAgIChiYXNlIDE2KQkJRXVyb2NvbSBJbmR1c3RyaWVzIEEvUwotCQkJCXBvcnN2ZWogMgotCQkJCUFhbGJvcmcgTlYgREstOTIwMAotCQkJCURFTk1BUksKLQotMDAtMEYtQzcgICAoaGV4KQkJRGlvbmljYSBSJkQgTHRkLgotMDAwRkM3ICAgICAoYmFzZSAxNikJCURpb25pY2EgUiZEIEx0ZC4KLQkJCQlCb2xvZ25hIENlbnRyZSwgRjExCi0JCQkJTW9zdGEgVGVjaG5vcGFyawotCQkJCU1vc3RhICBNU1QxMwotCQkJCU1BTFRBCi0KLTAwLTBGLUM4ICAgKGhleCkJCUNoYW50cnkgTmV0d29ya3MKLTAwMEZDOCAgICAgKGJhc2UgMTYpCQlDaGFudHJ5IE5ldHdvcmtzCi0JCQkJMTkwMCBNaW5uZXNvdGEgQ291cnQKLQkJCQlTdWl0ZSAxMjUKLQkJCQlNaXNzaXNzYXVnYSBPbnRhcmlvIEw1TiAzQzkKLQkJCQlDQU5BREEKLQotMDAtMEYtQzkgICAoaGV4KQkJQWxsbmV0IEdtYkgKLTAwMEZDOSAgICAgKGJhc2UgMTYpCQlBbGxuZXQgR21iSAotCQkJCU1haXN0ci4gMgotCQkJCUdlcm1lcmluZyBCYXZhcmlhIDgyMTEwCi0JCQkJR0VSTUFOWQotCi0wMC0wRi1DQSAgIChoZXgpCQlBLUpJTiBURUNITElORSBDTywgTFRECi0wMDBGQ0EgICAgIChiYXNlIDE2KQkJQS1KSU4gVEVDSExJTkUgQ08sIExURAotCQkJCTMyNy0zNQotCQkJCUthc2FuLURvbmcKLQkJCQlLdW1jaHVuLUt1IFNlb3VsIDE1My04MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtQ0IgICAoaGV4KQkJM0NvbSBMdGQKLTAwMEZDQiAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cyBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMEYtQ0MgICAoaGV4KQkJTmV0b3BpYSwgSW5jLgotMDAwRkNDICAgICAoYmFzZSAxNikJCU5ldG9waWEsIEluYy4KLQkJCQk2MDAxIFNoZWxsbW91bmQgU3RyZWV0Ci0JCQkJNHRoIEZsb29yCi0JCQkJRW1lcnl2aWxsZSBDQSA5NDYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtQ0QgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDBGQ0QgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMEYtQ0UgICAoaGV4KQkJS2lrdXN1aSBFbGVjdHJvbmljcyBDb3JwLgotMDAwRkNFICAgICAoYmFzZSAxNikJCUtpa3VzdWkgRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQkxLTEtMyxIaWdhc2hpIHlhbWF0YQotCQkJCVRzdXp1a2kta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjQtMDAyMwotCQkJCUpBUEFOCi0KLTAwLTBGLUNGICAgKGhleCkJCURhdGF3aW5kIFJlc2VhcmNoCi0wMDBGQ0YgICAgIChiYXNlIDE2KQkJRGF0YXdpbmQgUmVzZWFyY2gKLQkJCQk1NTUgUmVuZS1MZXZlc3F1ZSBXZXN0Ci0JCQkJU3VpdGUgMTEzMAotCQkJCU1vbnRyZWFsIFF1ZWJlYyBIMlogMUIxCi0JCQkJQ0FOQURBCi0KLTAwLTBGLUQwICAgKGhleCkJCUFTVFJJCi0wMDBGRDAgICAgIChiYXNlIDE2KQkJQVNUUkkKLQkJCQkxOC9GIFRvd2VyIDYsIEdhdGV3YXksIDkgQ2FudG9uIFJkCi0JCQkJVFNULCBLb3dsb29uCi0JCQkJSE9ORyBLT05HCi0KLTAwLTBGLUQxICAgKGhleCkJCUFwcGxpZWQgV2lyZWxlc3MgSWRlbnRpZmljYXRpb25zIEdyb3VwLCBJbmMuCi0wMDBGRDEgICAgIChiYXNlIDE2KQkJQXBwbGllZCBXaXJlbGVzcyBJZGVudGlmaWNhdGlvbnMgR3JvdXAsIEluYy4KLQkJCQkzODIgUm91dGUgNTksIFNlY3Rpb24gMjkyCi0JCQkJTW9uc2V5IE5ldyBZb3JrIDEwOTUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1EMiAgIChoZXgpCQlFV0EgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDBGRDIgICAgIChiYXNlIDE2KQkJRVdBIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEzODczIFBhcmsgQ2VudGVyIFJvYWQKLQkJCQlIZXJuZG9uIFZBIDIwMTcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1EMyAgIChoZXgpCQlEaWdpdW0KLTAwMEZEMyAgICAgKGJhc2UgMTYpCQlEaWdpdW0KLQkJCQk0NDUgSmFuIERhdmlzIERyaXZlIE5XCi0JCQkJU3VpdGUgMTAwCi0JCQkJSHVudHN2aWxsZSBBTCAzNTgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRDQgICAoaGV4KQkJU291bmRjcmFmdAotMDAwRkQ0ICAgICAoYmFzZSAxNikJCVNvdW5kY3JhZnQKLQkJCQlDcmFuYm9ybmUgSG91c2UKLQkJCQlDcmFuYm9ybmUgUm9hZAotCQkJCVBvdHRlcnMgQmFyIEhlcnRmb3Jkc2hpcmUgRU42IDNKTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTBGLUQ1ICAgKGhleCkJCVNjaHdlY2hhdCAtIFJJU0UKLTAwMEZENSAgICAgKGJhc2UgMTYpCQlTY2h3ZWNoYXQgLSBSSVNFCi0JCQkJQW0gQ29uY29yZGUgUGFyayAyQQotCQkJCVNjaHdlY2hhdCAgMjMyMAotCQkJCUFVU1RSSUEKLQotMDAtMEYtRDYgICAoaGV4KQkJU2Fyb3RlY2ggQ28uLCBMdGQKLTAwMEZENiAgICAgKGJhc2UgMTYpCQlTYXJvdGVjaCBDby4sIEx0ZAotCQkJCUhhbkdhbmcgQmxkZywgMTU0OS03LCBTZW9jaG8tRG9uZywKLQkJCQlTZW9jaG8ta3UsCi0JCQkJU2VvdWwgIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtRDcgICAoaGV4KQkJSGFybWFuIE11c2ljIEdyb3VwCi0wMDBGRDcgICAgIChiYXNlIDE2KQkJSGFybWFuIE11c2ljIEdyb3VwCi0JCQkJODc2MCBTYW5keSBQYXJrd2F5Ci0JCQkJU2FuZHkgVXRhaCA4NDA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRDggICAoaGV4KQkJRm9yY2UsIEluYy4KLTAwMEZEOCAgICAgKGJhc2UgMTYpCQlGb3JjZSwgSW5jLgotCQkJCTgyNSBQYXJrIFN0cmVldAotCQkJCUNocmlzdGlhbnNidXJnIFZhIDI0MDczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1EOSAgIChoZXgpCQlGbGV4RFNMIFRlbGVjb21tdW5pY2F0aW9ucyBBRwotMDAwRkQ5ICAgICAoYmFzZSAxNikJCUZsZXhEU0wgVGVsZWNvbW11bmljYXRpb25zIEFHCi0JCQkJSGF1cyB6dW0gRW5nZWwKLQkJCQlBbHRlbmRvcmYgU2Nod3l6IDg4NTIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0wRi1EQSAgIChoZXgpCQlZQVpBS0kgQ09SUE9SQVRJT04KLTAwMEZEQSAgICAgKGJhc2UgMTYpCQlZQVpBS0kgQ09SUE9SQVRJT04KLQkJCQkxNTAwIE1JU0hVS1UKLQkJCQlTVVNPTk8tQ0lUWSBTSElaVU9LQS1QUkVGIDQxMC0xMTk0Ci0JCQkJSkFQQU4KLQotMDAtMEYtREIgICAoaGV4KQkJV2VzdGVsbCBUZWNobm9sb2dpZXMKLTAwMEZEQiAgICAgKGJhc2UgMTYpCQlXZXN0ZWxsIFRlY2hub2xvZ2llcwotCQkJCTc1MCBOLiBDb21tb25zIERyLgotCQkJCUF1cm9yYSBJTCA2MDUwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtREMgICAoaGV4KQkJVWVkYSBKYXBhbiAgUmFkaW8gQ28uLCBMdGQuCi0wMDBGREMgICAgIChiYXNlIDE2KQkJVWVkYSBKYXBhbiAgUmFkaW8gQ28uLCBMdGQuCi0JCQkJRnVtaWlyaSAyLTEwLTE5Ci0JCQkJVWVkYSBjaXR5IE5hZ2FubyBwcmVmZWN0dXJlIDM4Ni04NjA4Ci0JCQkJSkFQQU4KLQotMDAtMEYtREQgICAoaGV4KQkJU09SRElOIEFCCi0wMDBGREQgICAgIChiYXNlIDE2KQkJU09SRElOIEFCCi0JCQkJUm9ybGFnZ2FydmFnZW4gOAotCQkJCVZhcm5hbW8gU21hbGFuZCBTLTMzMSAzNAotCQkJCVNXRURFTgotCi0wMC0wRi1ERSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotMDAwRkRFICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTAwLTBGLURGICAgKGhleCkJCVNPTE9NT04gVGVjaG5vbG9neSBDb3JwLgotMDAwRkRGICAgICAoYmFzZSAxNikJCVNPTE9NT04gVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLjQyLFNpbmcgWmhvbmcgUmQuLE5laSBIdSBEaXN0LiwKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtRTAgICAoaGV4KQkJTkNvbXB1dGluZyBDby4sTHRkLgotMDAwRkUwICAgICAoYmFzZSAxNikJCU5Db21wdXRpbmcgQ28uLEx0ZC4KLQkJCQk2dGggRmwsIEpFSS1QbGF0eiBCL0QKLQkJCQkxNDIzLTYsIEd3YW55YW5nMS1Eb25nLCBEb25nYW4tR3UKLQkJCQlTZW91bCBHYXNhbi1kb25nIEdldW1jaGVvbi1HdSA0NTktMTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtRTEgICAoaGV4KQkJSUQgRElHSVRBTCBDT1JQT1JBVElPTgotMDAwRkUxICAgICAoYmFzZSAxNikJCUlEIERJR0lUQUwgQ09SUE9SQVRJT04KLQkJCQk2dGggRmwuLCBNaXJhZSBCbGRnLiwgMjcxLTEsIFNlb2h5dW4tZG9uZywgQnVuZGFuZy1rdSwgU3VuZ25hbS1zaSwgS2VvbmdraS1kbywgU291dGggS29yZWEKLQkJCQlTdW5nbmFtLVNpIEtlb25na2ktZG8gNDYzLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1FMiAgIChoZXgpCQlIYW5nemhvdSBIM0MgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAwRkUyICAgICAoYmFzZSAxNikJCUhhbmd6aG91IEgzQyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJT3JpZW50YWwgRWxlY3Ryb25pYyBCbGQuLCBOTy4yLENodWFuZ3llIFJvYWQKLQkJCQlTaGFuZy1EaSBJbmZvcm1haXRvbiBJbmR1c3RyeSBCYXNlLAotCQkJCUhhaS1EaWFuIERpc3RyaWN0IEJlaWppbmcgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMEYtRTMgICAoaGV4KQkJRGFtbSBDZWxsdWxhciBTeXN0ZW1zIEEvUwotMDAwRkUzICAgICAoYmFzZSAxNikJCURhbW0gQ2VsbHVsYXIgU3lzdGVtcyBBL1MKLQkJCQlNb2VsbGVnYWRlIDY4Ci0JCQkJU29lbmRlcmJvcmcgIERrLTY0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTBGLUU0ICAgKGhleCkJCVBhbnRlY2ggQ28uLEx0ZAotMDAwRkU0ICAgICAoYmFzZSAxNikJCVBhbnRlY2ggQ28uLEx0ZAotCQkJCVNoaW5zb25nIEIvRCAzRiwgMjUtMTIsCi0JCQkJWWVvdWlkby1Eb25nLAotCQkJCVlvdW5nZGV1bmdwby1HVSBTZW91bCAxNTAtNzExCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUU1ICAgKGhleCkJCU1FUkNVUlkgU0VDVVJJVFkgQ09SUE9SQVRJT04KLTAwMEZFNSAgICAgKGJhc2UgMTYpCQlNRVJDVVJZIFNFQ1VSSVRZIENPUlBPUkFUSU9OCi0JCQkJMjM1NSBNSVJBIE1BUiBBVkUuCi0JCQkJTE9ORyBCRUFDSCBDQSA5MDgxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRTYgICAoaGV4KQkJTUJUZWNoIFN5c3RlbXMsIEluYy4KLTAwMEZFNiAgICAgKGJhc2UgMTYpCQlNQlRlY2ggU3lzdGVtcywgSW5jLgotCQkJCTQxMiAxc3QgQXZlIFNFCi0JCQkJU3VpdGUgMTAwCi0JCQkJQ3VsbG1hbiBBbGFiYW1hIDM1MDU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1FNyAgIChoZXgpCQlMdXRyb24gRWxlY3Ryb25pY3MgQ28uLCBJbmMuCi0wMDBGRTcgICAgIChiYXNlIDE2KQkJTHV0cm9uIEVsZWN0cm9uaWNzIENvLiwgSW5jLgotCQkJCTcyMDAgU3V0ZXIgUmQuCi0JCQkJQ29vcGVyc2J1cmcgUEEgMTgwMzYtMTI5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRTggICAoaGV4KQkJTG9ib3MsIEluYy4KLTAwMEZFOCAgICAgKGJhc2UgMTYpCQlMb2JvcywgSW5jLgotCQkJCVUmVCBCbGRnIDNGLCAxLTItMyBTYXJ1Z2FrdS1jaG8sIENoaXlvZGEta3UsCi0JCQkJVG9reW8gIDEwMS0wMDY0Ci0JCQkJSkFQQU4KLQotMDAtMEYtRTkgICAoaGV4KQkJR1cgVEVDSE5PTE9HSUVTIENPLixMVEQuCi0wMDBGRTkgICAgIChiYXNlIDE2KQkJR1cgVEVDSE5PTE9HSUVTIENPLixMVEQuCi0JCQkJTm8uMzggU2hhbmdkaSBYaWx1LEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0wRi1FQSAgIChoZXgpCQlHaWdhLUJ5dGUgVGVjaG5vbG9neSBDby4sTFRELgotMDAwRkVBICAgICAoYmFzZSAxNikJCUdpZ2EtQnl0ZSBUZWNobm9sb2d5IENvLixMVEQuCi0JCQkJTm8uMjE1LE5hbi1QaW5nIFJvYWQsUGluZy1KZW4gQ2l0eSwKLQkJCQlQaW5nLUplbiBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtRUIgICAoaGV4KQkJQ3lsb24gQ29udHJvbHMKLTAwMEZFQiAgICAgKGJhc2UgMTYpCQlDeWxvbiBDb250cm9scwotCQkJCUNsb25zaGF1Z2ggSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlDbG9uc2hhdWdoCi0JCQkJRHVibGluIDE3ICAKLQkJCQlJUkVMQU5ECi0KLTAwLTBGLUVDICAgKGhleCkJCUFya3VzIEluYy4KLTAwMEZFQyAgICAgKGJhc2UgMTYpCQlBcmt1cyBJbmMuCi0JCQkJMy04IENodW8tY2hvCi0JCQkJT2theWFtYSAgNzAwLTA4MzYKLQkJCQlKQVBBTgotCi0wMC0wRi1FRCAgIChoZXgpCQlBbmFtIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0wMDBGRUQgICAgIChiYXNlIDE2KQkJQW5hbSBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCTY0NSBTdW5na29rLWRvbmcKLQkJCQlEYW53b24tZ3UKLQkJCQlBbnNhbi1jaXR5IEt5dW5na2ktZG8gNDI1LTgzNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0wRi1FRSAgIChoZXgpCQlYVGVjLCBJbmNvcnBvcmF0ZWQKLTAwMEZFRSAgICAgKGJhc2UgMTYpCQlYVGVjLCBJbmNvcnBvcmF0ZWQKLQkJCQk1Nzc1IEJsdWUgTGFnb29uIERyaXZlCi0JCQkJU3VpdGUgMjgwCi0JCQkJTWlhbWkgRmxvcmlkYSAzMzEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRUYgICAoaGV4KQkJVGhhbGVzIGUtVHJhbnNhY3Rpb25zIEdtYkgKLTAwMEZFRiAgICAgKGJhc2UgMTYpCQlUaGFsZXMgZS1UcmFuc2FjdGlvbnMgR21iSAotCQkJCUtvbnJhZC1adXNlLVN0cmHDg8W4ZSAxOS0yMQotCQkJCUJhZCBIZXJzZmVsZCBIZXNzZW4gMzYyNTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTBGLUYwICAgKGhleCkJCVN1bnJheSBDby4gTHRkLgotMDAwRkYwICAgICAoYmFzZSAxNikJCVN1bnJheSBDby4gTHRkLgotCQkJCU9zYXdhMi01LTUgTWl0YWthCi0JCQkJVG9reW8gMTgxLTAwMTUKLQkJCQlKQVBBTgotCi0wMC0wRi1GMSAgIChoZXgpCQluZXgtRyBTeXN0ZW1zIFB0ZS5MdGQKLTAwMEZGMSAgICAgKGJhc2UgMTYpCQluZXgtRyBTeXN0ZW1zIFB0ZS5MdGQKLQkJCQkyNSBLYWxsYW5nIEF2ZQotCQkJCSMwNy0wNQotCQkJCTMzOTQxNgotCQkJCVNJTkdBUE9SRQotCi0wMC0wRi1GMiAgIChoZXgpCQlMb3VkIFRlY2hub2xvZ2llcyBJbmMuCi0wMDBGRjIgICAgIChiYXNlIDE2KQkJTG91ZCBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTE2MjIwIFdvb2QtUmVkIFJkLiBORQotCQkJCVdvb2RpbnZpbGxlIFdBIDk4MDcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1GMyAgIChoZXgpCQlKdW5nIE15b3VuZyBDb21tdW5pY2F0aW9ucyZUZWNobm9sb2d5Ci0wMDBGRjMgICAgIChiYXNlIDE2KQkJSnVuZyBNeW91bmcgQ29tbXVuaWNhdGlvbnMmVGVjaG5vbG9neQotCQkJCTF0aCBGTC4sIERvbmcgSUwgQmxkZy4xMDcgWWFuZ2phZS1Eb25nCi0JCQkJU2VvY2hvLUt1IFNlb3VsIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMEYtRjQgICAoaGV4KQkJR3VudGVybWFubiAmIERydW5jayBHbWJICi0wMDBGRjQgICAgIChiYXNlIDE2KQkJR3VudGVybWFubiAmIERydW5jayBHbWJICi0JCQkJRG9ydG11bmRlciBTdHIuIDRhCi0JCQkJV2lsbnNkb3JmIE5SVyA1NzIzNAotCQkJCUdFUk1BTlkKLQotMDAtMEYtRjUgICAoaGV4KQkJR04mUyBjb21wYW55Ci0wMDBGRjUgICAgIChiYXNlIDE2KQkJR04mUyBjb21wYW55Ci0JCQkJMzAxIEFuc2FuIFMvVyBjZW50ZXIsIDY0My03IHdvbmdvay1kb25nCi0JCQkJQW5zYW4gY2l0eSBHeWVvbmdnaS1kbyA0MjUtMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUY2ICAgKGhleCkJCURhcmZvbiBFbGVjdHJvbmljcyBDb3JwLgotMDAwRkY2ICAgICAoYmFzZSAxNikJCURhcmZvbiBFbGVjdHJvbmljcyBDb3JwLgotCQkJCTMxLCBMYW5lMTcsIFppaGNpYW5nIE4uIFJvYWQKLQkJCQlHdWVpc2hhbgotCQkJCVRhb3l1YW4gIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtRjcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAwRkY3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEUi4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMEYtRjggICAoaGV4KQkJQ2lzY28gIFN5c3RlbXMKLTAwMEZGOCAgICAgKGJhc2UgMTYpCQlDaXNjbyAgU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0wRi1GOSAgIChoZXgpCQlWYWxjcmV0ZWMsIEluYy4KLTAwMEZGOSAgICAgKGJhc2UgMTYpCQlWYWxjcmV0ZWMsIEluYy4KLQkJCQlCeXVja3NhbiBEaWdpdGFsIFZhbGxleSBJSSAxNUYKLQkJCQk0ODEtMTAsIEdhc2FuLURvbmcsIEdldW1jaGVvbi1HdQotCQkJCVNlb3VsICAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTBGLUZBICAgKGhleCkJCU9wdGluZWwgU3lzdGVtcywgSW5jLgotMDAwRkZBICAgICAoYmFzZSAxNikJCU9wdGluZWwgU3lzdGVtcywgSW5jLgotCQkJCTY4MzUgRGVlcnBhdGggUmQuCi0JCQkJRWxrcmlkZ2UgTUQgMjEwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTBGLUZCICAgKGhleCkJCU5pcHBvbiBEZW5zbyBJbmR1c3RyeSBDby4sIEx0ZC4KLTAwMEZGQiAgICAgKGJhc2UgMTYpCQlOaXBwb24gRGVuc28gSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJMy0xNC0xOQotCQkJCVNoaWJhdXJhLCBNaW5hdG8ta3UgVG9reW8sIDEwOC04NTYwCi0JCQkJSkFQQU4KLQotMDAtMEYtRkMgICAoaGV4KQkJTWVyaXQgTGktTGluIEVudC4KLTAwMEZGQyAgICAgKGJhc2UgMTYpCQlNZXJpdCBMaS1MaW4gRW50LgotCQkJCU5vLiAyMCBXdS1Mb25nIDYgUmQuCi0JCQkJV3UtS3UgVGFpcGVpIDI0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMEYtRkQgICAoaGV4KQkJR2xvcnl0ZWsgTmV0d29yayBJbmMuCi0wMDBGRkQgICAgIChiYXNlIDE2KQkJR2xvcnl0ZWsgTmV0d29yayBJbmMuCi0JCQkJNUYuLTMsIE5vLjE2LCBTZWMuIDEsIERvbmdkYSBSZC4sCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0wRi1GRSAgIChoZXgpCQlHLVBSTyBDT01QVVRFUgotMDAwRkZFICAgICAoYmFzZSAxNikJCUctUFJPIENPTVBVVEVSCi0JCQkJZmlyc3QgYXJyYW5nZSBDIFlpbmdIdSBpbmR1c3RyaWFsIGVzdGF0ZSBRaW5nWGkgY291bnRyeSBEb25nR3VhbiBjaXR5Ci0JCQkJRG9uZ0d1YW4gR3VhbmdEb25nIDUyMzY0OAotCQkJCUNISU5BCi0KLTAwLTBGLUZGICAgKGhleCkJCUNvbnRyb2w0Ci0wMDBGRkYgICAgIChiYXNlIDE2KQkJQ29udHJvbDQKLQkJCQkxMTczNCBTLiBFbGVjdGlvbiBEcml2ZQotCQkJCURyYXBlciBVVCA4NDAyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMDAgICAoaGV4KQkJQ0FCTEUgVEVMRVZJU0lPTiBMQUJPUkFUT1JJRVMsIElOQy4KLTAwMTAwMCAgICAgKGJhc2UgMTYpCQlDQUJMRSBURUxFVklTSU9OIExBQk9SQVRPUklFUywgSU5DLgotCQkJCTg1OCBDb2FsIENyZWVrIENpcmNsZQotCQkJCUxvdWlzdmlsbGUgQ08gODAwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTAxICAgKGhleCkJCUNpdGVsCi0wMDEwMDEgICAgIChiYXNlIDE2KQkJQ2l0ZWwKLQkJCQlMb3VnaGJvcm91Z2ggSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQlFcGluYWwgV2F5Ci0JCQkJTG91Z2hib3JvdWdoICBMRTExIDNFSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEwLTAyICAgKGhleCkJCUFDVElBCi0wMDEwMDIgICAgIChiYXNlIDE2KQkJQUNUSUEKLQkJCQkyNSBDSEVNSU4gREUgUE9VVk9VUlZJTExFCi0JCQkJMzE0MzIgVE9VTE9VU0UsICBDRURFWCAwNCAgCi0JCQkJRlJBTkNFCi0KLTAwLTEwLTAzICAgKGhleCkJCUlNQVRST04sIElOQy4KLTAwMTAwMyAgICAgKGJhc2UgMTYpCQlJTUFUUk9OLCBJTkMuCi0JCQkJMzg5IE9ZU1RFUiBQT0lOVCBCTFZELgotCQkJCVNPLiBTQU4gRlJBTkNJU0NPIENBIDk0MDgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wNCAgIChoZXgpCQlUSEUgQlJBTlRMRVkgQ09JTEUgQ09NUEFOWSxJTkMKLTAwMTAwNCAgICAgKGJhc2UgMTYpCQlUSEUgQlJBTlRMRVkgQ09JTEUgQ09NUEFOWSxJTkMKLQkJCQk1NDUgUkVTRUFSQ0ggRFJJVkUKLQkJCQlBVEhFTlMgR0EgMzA2MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTA1ICAgKGhleCkJCVVFQyBDT01NRVJDSUFMCi0wMDEwMDUgICAgIChiYXNlIDE2KQkJVUVDIENPTU1FUkNJQUwKLQkJCQlQLk8uIEJPWCA1NCwKLQkJCQlNVC4gRURHRUNPTUJFCi0JCQkJNDMwMCBEVVJCQU4gIAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xMC0wNiAgIChoZXgpCQlUaGFsZXMgQ29udGFjdCBTb2x1dGlvbnMgTHRkLgotMDAxMDA2ICAgICAoYmFzZSAxNikJCVRoYWxlcyBDb250YWN0IFNvbHV0aW9ucyBMdGQuCi0JCQkJVG9sYmFyIFdheQotCQkJCVNvdXRoYW1wdG9uLCBTTzMwIDJaUCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTAtMDcgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDA3ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFICAgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wOCAgIChoZXgpCQlWSUVOTkEgU1lTVEVNUyBDT1JQT1JBVElPTgotMDAxMDA4ICAgICAoYmFzZSAxNikJCVZJRU5OQSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJNjY1MSBGUkFTRVJXT09EIFBMQUNFCi0JCQkJU1VJVEUgIzI1MAotCQkJCVJJQ0hNT05ELCBCLkMuIFY2VyAxSjMgIAotCQkJCUNBTkFEQQotCi0wMC0xMC0wOSAgIChoZXgpCQlIT1JPIFFVQVJUWgotMDAxMDA5ICAgICAoYmFzZSAxNikJCUhPUk8gUVVBUlRaCi0JCQkJWi5JLiBST1VURSBERSBOSU9SVAotCQkJCTg1MjAwIC0gRk9OVEVOQVkgTEUgQ09NVEUgIAotCQkJCUZSRU5DSCBHVUlBTkEKLQotMDAtMTAtMEEgICAoaGV4KQkJV0lMTElBTVMgQ09NTVVOSUNBVElPTlMgR1JPVVAKLTAwMTAwQSAgICAgKGJhc2UgMTYpCQlXSUxMSUFNUyBDT01NVU5JQ0FUSU9OUyBHUk9VUAotCQkJCUFEVkFOQ0VEIFRFQ0hOT0xPR0lFUwotCQkJCTExMSBFQVNUIEZJUlNUCi0JCQkJVFVMU0EgT0sgNzQxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTBCICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTAwQiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRSAgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wQyAgIChoZXgpCQlJVE8gQ08uLCBMVEQuCi0wMDEwMEMgICAgIChiYXNlIDE2KQkJSVRPIENPLiwgTFRELgotCQkJCTgtMiBNSVlBTk9TSElUQS1DSE8KLQkJCQlISVJBS0FUQS1DSVRZLCBPU0FLQSAgCi0JCQkJSkFQQU4KLQotMDAtMTAtMEQgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDBEICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLi1TSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTBFICAgKGhleCkJCU1JQ1JPIExJTkVBUiBDT1BPUkFUSU9OCi0wMDEwMEUgICAgIChiYXNlIDE2KQkJTUlDUk8gTElORUFSIENPUE9SQVRJT04KLQkJCQkyMDkyIENPTkNPVVJTRSBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0wRiAgIChoZXgpCQlJTkRVU1RSSUFMIENQVSBTWVNURU1TCi0wMDEwMEYgICAgIChiYXNlIDE2KQkJSU5EVVNUUklBTCBDUFUgU1lTVEVNUwotCQkJCTExMS1EIFcuIERZRVIgUk9BRAotCQkJCVNBTlRBIEFOQSBDQSA5MjcwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMTAgICAoaGV4KQkJSU5JVElPIENPUlBPUkFUSU9OCi0wMDEwMTAgICAgIChiYXNlIDE2KQkJSU5JVElPIENPUlBPUkFUSU9OCi0JCQkJMjE4OCBCIERFTCBGUkFOQ08gU1RSRUVUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTExICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTAxMSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTEyICAgKGhleCkJCVBST0NFU1NPUiBTWVNURU1TIChJKSBQVlQgTFRECi0wMDEwMTIgICAgIChiYXNlIDE2KQkJUFJPQ0VTU09SIFNZU1RFTVMgKEkpIFBWVCBMVEQKLQkJCQkyNCBSSUNITU9ORCBST0FECi0JCQkJQkFOR0FMT1JFIDU2MCAwMjUgIAotCQkJCUlORElBCi0KLTAwLTEwLTEzICAgKGhleCkJCUtvbnRyb24gQW1lcmljYSwgSW5jLgotMDAxMDEzICAgICAoYmFzZSAxNikJCUtvbnRyb24gQW1lcmljYSwgSW5jLgotCQkJCTE0MTE4IFN0b3dlIERyaXZlCi0JCQkJUG93YXksIENBIDkyMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTE0ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTAxNCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTE1ICAgKGhleCkJCU9PbW9uIEluYy4KLTAwMTAxNSAgICAgKGJhc2UgMTYpCQlPT21vbiBJbmMuCi0JCQkJUE8gQk9YIDgyNDEKLQkJCQlDT0JVUkcgT1IgOTc0MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTE2ICAgKGhleCkJCVQuU1FXQVJFCi0wMDEwMTYgICAgIChiYXNlIDE2KQkJVC5TUVdBUkUKLQkJCQk2LCBQQVJDIEFSSUFORQotCQkJCUlNTUVVQkxFIE1FUkNVUkUKLQkJCQk3ODI4NCBHVVlBTkNPVVJUIENFREVYICAKLQkJCQlGUkFOQ0UKLQotMDAtMTAtMTcgICAoaGV4KQkJQm9zY2ggQWNjZXNzIFN5c3RlbXMgR21iSAotMDAxMDE3ICAgICAoYmFzZSAxNikJCUJvc2NoIEFjY2VzcyBTeXN0ZW1zIEdtYkgKLQkJCQlDaGFybG90dGVuYnVyZ2VyIEFsbGVlIDUwICAgICAgICAgICAgCi0JCQkJQUFDSEVOICAgIEQtNTIwNjggCi0JCQkJR0VSTUFOWQotCi0wMC0xMC0xOCAgIChoZXgpCQlCUk9BRENPTSBDT1JQT1JBVElPTgotMDAxMDE4ICAgICAoYmFzZSAxNikJCUJST0FEQ09NIENPUlBPUkFUSU9OCi0JCQkJMTYyMTUgQUxUT04gUEFSS1dBWQotCQkJCVAuTy4gQk9YIDU3MDEzCi0JCQkJSVJWSU5FIENBIDkyNjE5LTcwMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTE5ICAgKGhleCkJCVNJUk9OQSBERU5UQUwgU1lTVEVNUyBHbWJIICYgQ28uIEtHCi0wMDEwMTkgICAgIChiYXNlIDE2KQkJU0lST05BIERFTlRBTCBTWVNURU1TIEdtYkggJiBDby4gS0cKLQkJCQlGQUJSSUtTVFJBU1NFIDMxCi0JCQkJNjQ2MjUgQkVOU0hFSU0gIAotCQkJCUdFUk1BTlkKLQotMDAtMTAtMUEgICAoaGV4KQkJUGljdHVyZVRlbCBDb3JwLgotMDAxMDFBICAgICAoYmFzZSAxNikJCVBpY3R1cmVUZWwgQ29ycC4KLQkJCQkxMDAgTUlOVVRFTUFOIFJPQUQsIE1TNjQxCi0JCQkJQU5ET1ZFUiBNQSAwMTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMUIgICAoaGV4KQkJQ09STkVUIFRFQ0hOT0xPR1ksIElOQy4KLTAwMTAxQiAgICAgKGJhc2UgMTYpCQlDT1JORVQgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTdGLTQsIE5PLiA0NiBDSFVORyBTSEFOIE4uUk9BRAotCQkJCVNFQy4gMiwgVEFJUEVJICAKLQkJCQlUQUpJS0lTVEFOCi0KLTAwLTEwLTFDICAgKGhleCkJCU9ITSBURUNITk9MT0dJRVMgSU5UTCwgTExDCi0wMDEwMUMgICAgIChiYXNlIDE2KQkJT0hNIFRFQ0hOT0xPR0lFUyBJTlRMLCBMTEMKLQkJCQk0IEVYRUNVVElWRSBDSVJDTEUsIFN1aXRlIDE4NQotCQkJCUlSVklORSBDQSA5MjYxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMUQgICAoaGV4KQkJV0lOQk9ORCBFTEVDVFJPTklDUyBDT1JQLgotMDAxMDFEICAgICAoYmFzZSAxNikJCVdJTkJPTkQgRUxFQ1RST05JQ1MgQ09SUC4KLQkJCQlOTy4gNCwgQ1JFQVRJT04gUkQuIElJSQotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTiBDSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtMUUgICAoaGV4KQkJTUFUU1VTSElUQSBFTEVDVFJPTklDIElOU1RSVU1FTlRTIENPUlAuCi0wMDEwMUUgICAgIChiYXNlIDE2KQkJTUFUU1VTSElUQSBFTEVDVFJPTklDIElOU1RSVU1FTlRTIENPUlAuCi0JCQkJMjMtOSBLSVlPSEFSQSBJTkRVU1RSSUFMIFBBUksKLQkJCQlVVFNVTk9NSVlBIFRvY2hpZ2kgMzIxLTMyICAKLQkJCQlKQVBBTgotCi0wMC0xMC0xRiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwMUYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFIuCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjAgICAoaGV4KQkJSGFuZCBIZWxkIFByb2R1Y3RzIEluYwotMDAxMDIwICAgICAoYmFzZSAxNikJCUhhbmQgSGVsZCBQcm9kdWN0cyBJbmMKLQkJCQk3MDAgVmlzaW9ucyBEcml2ZQotCQkJCVNrYW5lYXRlbGVzIEZhbGxzIE5ZIDEzMTUzLTAyMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTIxICAgKGhleCkJCUVOQ0FOVE8gTkVUV09SS1MsIElOQy4KLTAwMTAyMSAgICAgKGJhc2UgMTYpCQlFTkNBTlRPIE5FVFdPUktTLCBJTkMuCi0JCQkJMjk1MyBCVU5LRVIgSElMTCBMQU5FCi0JCQkJU1VJVEUgIzQwMAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yMiAgIChoZXgpCQlTYXRDb20gTWVkaWEgQ29ycG9yYXRpb24KLTAwMTAyMiAgICAgKGJhc2UgMTYpCQlTYXRDb20gTWVkaWEgQ29ycG9yYXRpb24KLQkJCQkzMjU1LTcgU0NPVFQgQkxWRC4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjMgICAoaGV4KQkJTmV0d29yayBFcXVpcG1lbnQgVGVjaG5vbG9naWVzCi0wMDEwMjMgICAgIChiYXNlIDE2KQkJTmV0d29yayBFcXVpcG1lbnQgVGVjaG5vbG9naWVzCi0JCQkJNjkwMCBQYXNlbyBQYWRyZSBQYXJrd2F5Ci0JCQkJRnJlZW1vbnQgQ0EgOTQ1NTUtMzY2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjQgICAoaGV4KQkJTkFHT1lBIEVMRUNUUklDIFdPUktTIENPLiwgTFRECi0wMDEwMjQgICAgIChiYXNlIDE2KQkJTkFHT1lBIEVMRUNUUklDIFdPUktTIENPLiwgTFRECi0JCQkJMjktMSBTSElOT0RBLCBNSVdBLUNITwotCQkJCUFNQS1HVU4sIEFJQ0hJIDQ5MC0xMiAgCi0JCQkJSkFQQU4KLQotMDAtMTAtMjUgICAoaGV4KQkJR3JheWhpbGwsIEluYwotMDAxMDI1ICAgICAoYmFzZSAxNikJCUdyYXloaWxsLCBJbmMKLQkJCQk1NjEgSGlsbGdyb3ZlIEF2ZQotCQkJCUxhR3JhbmdlIElMIDYwNTI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yNiAgIChoZXgpCQlBQ0NFTEVSQVRFRCBORVRXT1JLUywgSU5DLgotMDAxMDI2ICAgICAoYmFzZSAxNikJCUFDQ0VMRVJBVEVEIE5FVFdPUktTLCBJTkMuCi0JCQkJMzEyMzggVklBIENPTElOQVMsIFVOSVQKLQkJCQlXRVNUTEFLRSBWSUxMQUdFIENBIDkxMzYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yNyAgIChoZXgpCQlMLTMgQ09NTVVOSUNBVElPTlMgRUFTVAotMDAxMDI3ICAgICAoYmFzZSAxNikJCUwtMyBDT01NVU5JQ0FUSU9OUyBFQVNUCi0JCQkJT05FIEZFREVSQUwgU1RSRUVUIC0gQSZFLTNFUwotCQkJCUNBTURFTiBOSiAwODEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMjggICAoaGV4KQkJQ09NUFVURVIgVEVDSE5JQ0EsIElOQy4KLTAwMTAyOCAgICAgKGJhc2UgMTYpCQlDT01QVVRFUiBURUNITklDQSwgSU5DLgotCQkJCTMtNS0xOSBISUdBU0hJTkFLQSBIQUtBVEEtS1UKLQkJCQlGVUtVT0tBLVNJCi0JCQkJRlVLVU9LQSAgODE2ICAKLQkJCQlKQVBBTgotCi0wMC0xMC0yOSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwMjkgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yQSAgIChoZXgpCQlaRiBNSUNST1NZU1RFTVMsIElOQy4KLTAwMTAyQSAgICAgKGJhc2UgMTYpCQlaRiBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQkxMDUyIEVMV0VMTCBDT1VSVAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMy00MzA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0yQiAgIChoZXgpCQlVTUFYIERBVEEgU1lTVEVNUywgSU5DLgotMDAxMDJCICAgICAoYmFzZSAxNikJCVVNQVggREFUQSBTWVNURU1TLCBJTkMuCi0JCQkJTk8uIDEtMSwgUiZEIFJPQUQgMgotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC0yQyAgIChoZXgpCQlMYXNhdCBOZXR3b3JrcyBBL1MKLTAwMTAyQyAgICAgKGJhc2UgMTYpCQlMYXNhdCBOZXR3b3JrcyBBL1MKLQkJCQlTa2FsaHVzZSAxMwotCQkJCVNLLTkyNDAgTmliZSAgCi0JCQkJREVOTUFSSwotCi0wMC0xMC0yRCAgIChoZXgpCQlISVRBQ0hJIFNPRlRXQVJFIEVOR0lORUVSSU5HCi0wMDEwMkQgICAgIChiYXNlIDE2KQkJSElUQUNISSBTT0ZUV0FSRSBFTkdJTkVFUklORwotCQkJCTUtNzksIE9OT0VDSE8sIE5BS0EtS1UKLQkJCQlZT0tPSEFNQSAyMzEgIAotCQkJCUpBUEFOCi0KLTAwLTEwLTJFICAgKGhleCkJCU5FVFdPUksgU1lTVEVNUyAmIFRFQ0hOT0xPR0lFUyBQVlQuIExURC4KLTAwMTAyRSAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFNZU1RFTVMgJiBURUNITk9MT0dJRVMgUFZULiBMVEQuCi0JCQkJUExPVCBOTy4gMiwgQ09DSElOIEVYUE9SVCBQUk9DRVNTSU5HICBaTwotCQkJCUtBS0tBTkFELCBDT0NISU4gNjgyIDAzMCAgCi0JCQkJSU5ESUEKLQotMDAtMTAtMkYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDJGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTMwICAgKGhleCkJCUVJT04gSW5jLgotMDAxMDMwICAgICAoYmFzZSAxNikJCUVJT04gSW5jLgotCQkJCTMyMCBNYXJjaCBSb2FkCi0JCQkJU3VpdGUgNTAwCi0JCQkJT3R0YXdhIE9OIEsySyAyRTMKLQkJCQlDQU5BREEKLQotMDAtMTAtMzEgICAoaGV4KQkJT0JKRUNUSVZFIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDEwMzEgICAgIChiYXNlIDE2KQkJT0JKRUNUSVZFIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNzUgUk9DSEVTVEVSIEFWRS4KLQkJCQlVTklUIDEKLQkJCQlQT1JUU01PVVRIIE5IIDAzODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zMiAgIChoZXgpCQlBTFRBIFRFQ0hOT0xPR1kKLTAwMTAzMiAgICAgKGJhc2UgMTYpCQlBTFRBIFRFQ0hOT0xPR1kKLQkJCQk5NTAwIFNPVVRIIDUwMCBXRVNUIC0gU1RFICMyMTIKLQkJCQlTQU5EWSBVVCA4NDA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtMzMgICAoaGV4KQkJQUNDRVNTTEFOIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDEwMzMgICAgIChiYXNlIDE2KQkJQUNDRVNTTEFOIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNDQgQUlSUE9SVCBQQVJLV0FZCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTM0ICAgKGhleCkJCUdOUCBDb21wdXRlcnMKLTAwMTAzNCAgICAgKGJhc2UgMTYpCQlHTlAgQ29tcHV0ZXJzCi0JCQkJNTU1IEUuSHVudGluZ3RvbiBEcml2ZQotCQkJCU1vbnJvdmlhIENBIDkxMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zNSAgIChoZXgpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTVMgQ08uLCBMVEQKLTAwMTAzNSAgICAgKGJhc2UgMTYpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTVMgQ08uLCBMVEQKLQkJCQk2RiwgTk8uIDg4LCBTRUMuIDYKLQkJCQlDSFVORyBTSEFOIE4uIFJELgotCQkJCVNoaWggTGluIFRBSVBFSSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLTM2ICAgKGhleCkJCUlOVEVSLVRFTCBJTlRFR1JBVEVEIFNZU1RFTVMKLTAwMTAzNiAgICAgKGJhc2UgMTYpCQlJTlRFUi1URUwgSU5URUdSQVRFRCBTWVNURU1TCi0JCQkJNzMwMCBXLiBCT1NUT04gU1RSRUVUCi0JCQkJQ0hBTkRMRVIgQVogODUyMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTM3ICAgKGhleCkJCUNZUSd2ZSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMDM3ICAgICAoYmFzZSAxNikJCUNZUSd2ZSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUNPU01PIEJMREcuIDEwRiwgTk8uMS03Ci0JCQkJU0hJTkpVS1UgMS1DSE9NRQotCQkJCVNISU5KVUtVLUtVLCAgVE9LWU8gMTYwICAKLQkJCQlKQVBBTgotCi0wMC0xMC0zOCAgIChoZXgpCQlNSUNSTyBSRVNFQVJDSCBJTlNUSVRVVEUsIElOQy4KLTAwMTAzOCAgICAgKGJhc2UgMTYpCQlNSUNSTyBSRVNFQVJDSCBJTlNUSVRVVEUsIElOQy4KLQkJCQkyRiwgMkwtMi01IE1JTkFNSSBTSElOQUdBV0EKLQkJCQlTSElOQUdBV0EtS1UKLQkJCQlUT0tZTyAgCi0JCQkJSkFQQU4KLQotMDAtMTAtMzkgICAoaGV4KQkJVmVjdHJvbiBTeXN0ZW1zIEFHCi0wMDEwMzkgICAgIChiYXNlIDE2KQkJVmVjdHJvbiBTeXN0ZW1zIEFHCi0JCQkJV2lsbHktQnJhbmR0LVdlZyA0MQotCQkJCTQ4MTU1IE11ZW5zdGVyICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTEwLTNBICAgKGhleCkJCURJQU1PTkQgTkVUV09SSyBURUNICi0wMDEwM0EgICAgIChiYXNlIDE2KQkJRElBTU9ORCBORVRXT1JLIFRFQ0gKLQkJCQlQLk8uIEJPWCA4NDUyNQotCQkJCUdSRUVOU0lERSAyMDM0ICAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMTAtM0IgICAoaGV4KQkJSElQUEkgTkVUV09SS0lORyBGT1JVTQotMDAxMDNCICAgICAoYmFzZSAxNikJCUhJUFBJIE5FVFdPUktJTkcgRk9SVU0KLQkJCQlQTyBCT1ggMTAxNzMKLQkJCQlBTEJVUVVFUlFVRSBOTSA4NzE4NC0wMTczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zQyAgIChoZXgpCQlJQyBFTlNFTUJMRSwgSU5DLgotMDAxMDNDICAgICAoYmFzZSAxNikJCUlDIEVOU0VNQkxFLCBJTkMuCi0JCQkJMzI1NS0yIFNDT1RUIEJMVkQuLS1TVEUuIzEwNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zRCAgIChoZXgpCQlQSEFTRUNPTSwgTFRELgotMDAxMDNEICAgICAoYmFzZSAxNikJCVBIQVNFQ09NLCBMVEQuCi0JCQkJUC5PLiBCT1ggNDUwMTcKLQkJCQlKRVJVU0FMRU0gOTE0NTAgIAotCQkJCUlTUkFFTAotCi0wMC0xMC0zRSAgIChoZXgpCQlORVRTQ0hPT0xTIENPUlBPUkFUSU9OCi0wMDEwM0UgICAgIChiYXNlIDE2KQkJTkVUU0NIT09MUyBDT1JQT1JBVElPTgotCQkJCTIwMDMgTEFORElOR1MgRFJJVkUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC0zRiAgIChoZXgpCQlUT0xMR1JBREUgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMTAzRiAgICAgKGJhc2UgMTYpCQlUT0xMR1JBREUgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk0OTMgTklYT04gUk9BRAotCQkJCUNIRVNXSUNLIFBBIDE1MDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC00MCAgIChoZXgpCQlJTlRFUk1FQyBDT1JQT1JBVElPTgotMDAxMDQwICAgICAoYmFzZSAxNikJCUlOVEVSTUVDIENPUlBPUkFUSU9OCi0JCQkJNjAwMSAzNlRIIEFWRSBXRVNUCi0JCQkJUC5PLiBCT1ggNDI4MAotCQkJCUVWRVJFVFQgV0EgOTgyMDMtOTI4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNDEgICAoaGV4KQkJQlJJU1RPTCBCQUJDT0NLLCBJTkMuCi0wMDEwNDEgICAgIChiYXNlIDE2KQkJQlJJU1RPTCBCQUJDT0NLLCBJTkMuCi0JCQkJMTEwMCBCVUNLSU5HSEFNIFNUUkVFVAotCQkJCVdBVEVSVE9XTiBDVCAwNjc5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNDIgICAoaGV4KQkJQWxhY3JpdGVjaCwgSW5jLgotMDAxMDQyICAgICAoYmFzZSAxNikJCUFsYWNyaXRlY2gsIEluYy4KLQkJCQkxOTk1IE4uIEZpcnN0IFN0cmVldAotCQkJCVN1aXRlIDIwMAotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC00MyAgIChoZXgpCQlBMiBDT1JQT1JBVElPTgotMDAxMDQzICAgICAoYmFzZSAxNikJCUEyIENPUlBPUkFUSU9OCi0JCQkJNi0xNC0xMSBZVVRBS0EtQ0hPCi0JCQkJU0hJTkFHQVdBLUtVCi0JCQkJVE9LWU8gIAotCQkJCUpBUEFOCi0KLTAwLTEwLTQ0ICAgKGhleCkJCUlubm9MYWJzIENvcnBvcmF0aW9uCi0wMDEwNDQgICAgIChiYXNlIDE2KQkJSW5ub0xhYnMgQ29ycG9yYXRpb24KLQkJCQkyRi00LCBOTy4gMTYsIExBTkUgNjA5LCBDSFVORy1IU0lOIFJELgotCQkJCVNFQy4gNSBTQU4tQ0hVTkcgQ0lUWQotCQkJCVRhaXBlaSBIc2llbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC00NSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMTA0NSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlPUFRlcmEgU29sdXRpb25zIERpdmlzaW9uCi0JCQkJMzQwIFRlcnJ5IEZveCBEcml2ZQotCQkJCUthbmF0YSBPbnRhcmlvIEsySy0yWDMgCi0JCQkJQ0FOQURBCi0KLTAwLTEwLTQ2ICAgKGhleCkJCUFMQ09STiBNQ0JSSURFIElOQy4KLTAwMTA0NiAgICAgKGJhc2UgMTYpCQlBTENPUk4gTUNCUklERSBJTkMuCi0JCQkJMzMwMCBTLiBISUFXQVNTRUUgICMxMDUKLQkJCQlPUkxBTkRPIEZMIDMyODM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC00NyAgIChoZXgpCQlFQ0hPIEVMRVRSSUMgQ08uIExURC4KLTAwMTA0NyAgICAgKGJhc2UgMTYpCQlFQ0hPIEVMRVRSSUMgQ08uIExURC4KLQkJCQlOTy4xODAwIElDSElHQU8gQ0hPCi0JCQkJTUlET1JJIFdBUkQKLQkJCQlZT0tPSEFNQSBDSVRZICAyMjUKLQkJCQlKQVBBTgotCi0wMC0xMC00OCAgIChoZXgpCQlIVFJDIEFVVE9NQVRJT04sIElOQy4KLTAwMTA0OCAgICAgKGJhc2UgMTYpCQlIVFJDIEFVVE9NQVRJT04sIElOQy4KLQkJCQkyODUgTEFWQUwgU1RSRUVUCi0JCQkJQlJPTVBUT05WSUxMRQotCQkJCVFVRUJFQyBKMEIgMUgwICAKLQkJCQlDQU5BREEKLQotMDAtMTAtNDkgICAoaGV4KQkJU2hvcmVUZWwsIEluYwotMDAxMDQ5ICAgICAoYmFzZSAxNikJCVNob3JlVGVsLCBJbmMKLQkJCQk5NjAgU3Rld2FydCBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNEEgICAoaGV4KQkJVGhlIFBhcnZ1cyBDb3Jwb3JhdGlvbgotMDAxMDRBICAgICAoYmFzZSAxNikJCVRoZSBQYXJ2dXMgQ29ycG9yYXRpb24KLQkJCQkzMjIyIFMgV2FzaGluZ3RvbiBTdC4KLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNEIgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDAxMDRCICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJTUFJTFNUT1A6IDQyMjAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNEMgICAoaGV4KQkJTGVDcm95IENvcnBvcmF0aW9uCi0wMDEwNEMgICAgIChiYXNlIDE2KQkJTGVDcm95IENvcnBvcmF0aW9uCi0JCQkJMzM4NSBTY290dCBCbHZkLgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC00RCAgIChoZXgpCQlTVVJURUMgSU5EVVNUUklFUywgSU5DLgotMDAxMDREICAgICAoYmFzZSAxNikJCVNVUlRFQyBJTkRVU1RSSUVTLCBJTkMuCi0JCQkJTk8uMTEsIEFMTEVZIDE2LCBMQU5FIDMzNwotCQkJCVRBLVRVTkcgUk9BRCBTRUMuMSwgU0hJLUNISUgKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtNEUgICAoaGV4KQkJQ0VPTE9HSUMKLTAwMTA0RSAgICAgKGJhc2UgMTYpCQlDRU9MT0dJQwotCQkJCVpBIERFIFBJU1NBTE9PUAotCQkJCVJVRSBFRE9VQVJEIEJSQU5MWQotCQkJCTc4MTkyIFRSQVBQRVMgIAotCQkJCUZSQU5DRQotCi0wMC0xMC00RiAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMTA0RiAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQkxNyBOZXR3b3JrIENpcmNsZQotCQkJCUJ1aWxkaW5nIDE3LCBVTVBLMTctMTMxCi0JCQkJTWVubG8gUGFyayBDQSA5NTAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNTAgICAoaGV4KQkJUklPTiBDTy4sIExURC4KLTAwMTA1MCAgICAgKGJhc2UgMTYpCQlSSU9OIENPLiwgTFRELgotCQkJCTMtMjAtNDEgSElHQVNISU1PVE9NQUNISQotCQkJCUtPS1VCVU5KSSwgVE9LWU8gMTg1ICAKLQkJCQlKQVBBTgotCi0wMC0xMC01MSAgIChoZXgpCQlDTUlDUk8gQ09SUE9SQVRJT04KLTAwMTA1MSAgICAgKGJhc2UgMTYpCQlDTUlDUk8gQ09SUE9SQVRJT04KLQkJCQkxNy0yMC0yIEtBTUlOTy1DSE8KLQkJCQlUQUtBTUFUU1UtU0hJLCBLQUdBV0EgNzYxICAKLQkJCQlKQVBBTgotCi0wMC0xMC01MiAgIChoZXgpCQlNRVRUTEVSLVRPTEVETyAoQUxCU1RBRFQpIEdNQkgKLTAwMTA1MiAgICAgKGJhc2UgMTYpCQlNRVRUTEVSLVRPTEVETyAoQUxCU1RBRFQpIEdNQkgKLQkJCQlQLk8uIEJPWCAyIDUwCi0JCQkJRC03MjQyMyBBTEJTVEFEVCAgCi0JCQkJR0VSTUFOWQotCi0wMC0xMC01MyAgIChoZXgpCQlDT01QVVRFUiBURUNITk9MT0dZIENPUlAuCi0wMDEwNTMgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTUwIFcuIFRFQ0hORUNFTlRFUiBEUklWRQotCQkJCU1JTEZPUkQgT0ggNDUxNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTU0ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTA1NCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTU1ICAgKGhleCkJCUZVSklUU1UgTUlDUk9FTEVDVFJPTklDUywgSU5DLgotMDAxMDU1ICAgICAoYmFzZSAxNikJCUZVSklUU1UgTUlDUk9FTEVDVFJPTklDUywgSU5DLgotCQkJCTM1NDUgTk9SVEggRklSU1QgU1RSRUVUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNTYgICAoaGV4KQkJU09ESUNLIENPLiwgTFRELgotMDAxMDU2ICAgICAoYmFzZSAxNikJCVNPRElDSyBDTy4sIExURC4KLQkJCQkzLTEyLTEgTkFLQU1BQ0hJREFJCi0JCQkJVFNVWlVLSS1LVSwgWU9LT0hBTUEgS0FOQUdBV0EgMjI0IAotCQkJCUpBUEFOCi0KLTAwLTEwLTU3ICAgKGhleCkJCVJlYmVsLmNvbSwgSW5jLgotMDAxMDU3ICAgICAoYmFzZSAxNikJCVJlYmVsLmNvbSwgSW5jLgotCQkJCTE1MCBJU0FCRUxMQSBTVFJFRVQtLVNURS4gMTAwMAotCQkJCU9UVEFXQSwgT05UQVJJTyBLMVMgMVY3ICAKLQkJCQlDQU5BREEKLQotMDAtMTAtNTggICAoaGV4KQkJQXJyb3dQb2ludCBDb21tdW5pY2F0aW9ucwotMDAxMDU4ICAgICAoYmFzZSAxNikJCUFycm93UG9pbnQgQ29tbXVuaWNhdGlvbnMKLQkJCQkyMzUgTElUVExFVE9OIFJPQUQKLQkJCQlXRVNURk9SRCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNTkgICAoaGV4KQkJRElBQkxPIFJFU0VBUkNIIENPLiBMTEMKLTAwMTA1OSAgICAgKGJhc2UgMTYpCQlESUFCTE8gUkVTRUFSQ0ggQ08uIExMQwotCQkJCTgyNSBTVEVXQVJUIERSSVZFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC01QSAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMDEwNUEgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQkFZRlJPTlQgUExBWkEKLQkJCQlNQUlMU1RPUDogIDQyMjAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNUIgICAoaGV4KQkJTkVUIElOU0lHSFQgQUIKLTAwMTA1QiAgICAgKGJhc2UgMTYpCQlORVQgSU5TSUdIVCBBQgotCQkJCVbDpHN0YmVyZ2EgQWxsw6kgOQotCQkJCVNFLTEyNjAgMzAgSMOkZ2Vyc3RlbiAKLQkJCQlTV0VERU4KLQotMDAtMTAtNUMgICAoaGV4KQkJUVVBTlRVTSBERVNJR05TIChILksuKSBMVEQuCi0wMDEwNUMgICAgIChiYXNlIDE2KQkJUVVBTlRVTSBERVNJR05TIChILksuKSBMVEQuCi0JCQkJNS9GLiwgU09NRVJTRVQgSE9VU0UsIFRBSUtPTyBQTEFDRQotCQkJCTk3OSBLSU5HJ1MgUk9BRCwKLQkJCQlRVUFSUlkgQkFZICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTAtNUQgICAoaGV4KQkJRHJhZWdlciBNZWRpY2FsCi0wMDEwNUQgICAgIChiYXNlIDE2KQkJRHJhZWdlciBNZWRpY2FsCi0JCQkJTW9pc2xpbmdlciBBbGxlZSA1My01NQotCQkJCUx1ZWJlY2sgIEQtMjM1NDIKLQkJCQlHRVJNQU5ZCi0KLTAwLTEwLTVFICAgKGhleCkJCUhFS0lNSUFOIExBQk9SQVRPUklFUywgSU5DLgotMDAxMDVFICAgICAoYmFzZSAxNikJCUhFS0lNSUFOIExBQk9SQVRPUklFUywgSU5DLgotCQkJCTE1MjAwIE9NRUdBIERSSVZFCi0JCQkJUk9DS1ZJTExFIE1EIDIwODUwLTMyNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTVGICAgKGhleCkJCVpPRElBQyBEQVRBIFNZU1RFTVMKLTAwMTA1RiAgICAgKGJhc2UgMTYpCQlaT0RJQUMgREFUQSBTWVNURU1TCi0JCQkJNSBBdiBEZXMgQW5kZXMKLQkJCQlMZXMgVWxpcyAgOTE5NDAKLQkJCQlGUkFOQ0UKLQotMDAtMTAtNjAgICAoaGV4KQkJQklMTElPTlRPTiBTWVNURU1TLCBJTkMuCi0wMDEwNjAgICAgIChiYXNlIDE2KQkJQklMTElPTlRPTiBTWVNURU1TLCBJTkMuCi0JCQkJM0YtMSwgTk8uIDgsIExBTkUgOTkKLQkJCQlQVS1ESU5HIFJELgotCQkJCUhTSU4tQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLTYxICAgKGhleCkJCUhPU1RMSU5LIENPUlAuCi0wMDEwNjEgICAgIChiYXNlIDE2KQkJSE9TVExJTksgQ09SUC4KLQkJCQkxMEYtMSwgTk8uIDE4MQotCQkJCVNFQy4xLCBUQS1UVU5HIFJELgotCQkJCUhTSS1DSElILCBUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtNjIgICAoaGV4KQkJTlggU0VSVkVSLCBJTE5DLgotMDAxMDYyICAgICAoYmFzZSAxNikJCU5YIFNFUlZFUiwgSUxOQy4KLQkJCQk1NDAxIEUuIExBIFBBTE1BIEFWRS4KLQkJCQlBTkFIRUlNIENBIDkyODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC02MyAgIChoZXgpCQlTVEFSR1VJREUgRElHSVRBTCBORVRXT1JLUwotMDAxMDYzICAgICAoYmFzZSAxNikJCVNUQVJHVUlERSBESUdJVEFMIE5FVFdPUktTCi0JCQkJNTc1NCBQQUNJRklDIENFTlRFUiBCTFZELgotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNjQgICAoaGV4KQkJRE5QRywgTExDCi0wMDEwNjQgICAgIChiYXNlIDE2KQkJRE5QRywgTExDCi0JCQkJMjAgTm9ydGggV2VudHdvcnRoIEF2ZW51ZQotCQkJCUxvbmRvbmRlcnJ5IE5IIDAzMDUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC02NSAgIChoZXgpCQlSQURZTkUgQ09SUE9SQVRJT04KLTAwMTA2NSAgICAgKGJhc2UgMTYpCQlSQURZTkUgQ09SUE9SQVRJT04KLQkJCQk1MjI1IFMuIDM3VEggU1RSRUVUCi0JCQkJUEhPRU5JWCBBWiA4NTA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNjYgICAoaGV4KQkJQURWQU5DRUQgQ09OVFJPTCBTWVNURU1TLCBJTkMuCi0wMDEwNjYgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgQ09OVFJPTCBTWVNURU1TLCBJTkMuCi0JCQkJMjc1NSBOT1JUSFdPT0RTIFBBUktXQVkKLQkJCQlOT1JDUk9TUyBHQSAzMDA3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNjcgICAoaGV4KQkJRXJpY3Nzb24KLTAwMTA2NyAgICAgKGJhc2UgMTYpCQlFcmljc3NvbgotCQkJCTEwMCBIZWFkcXVhcnRlcnMgRHJpdmUKLQkJCQlTVUlURSAjNDEwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTY4ICAgKGhleCkJCUNPTU9TIFRFTEVDT00KLTAwMTA2OCAgICAgKGJhc2UgMTYpCQlDT01PUyBURUxFQ09NCi0JCQkJU0FFSEFOIEIvRC8sIDI3LTEgU1VQWU8tRE9ORwotCQkJCUNIVU5HLUdVLCBTRU9VTCAxMDAtMjMwICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTAtNjkgICAoaGV4KQkJSEVMSU9TUyBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDAxMDY5ICAgICAoYmFzZSAxNikJCUhFTElPU1MgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkzOTEgVE9UVEVNIFBPTkQgUkQuLSBTVEUjMzAzCi0JCQkJV0FMVEhBTSBNQSAwMjE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNkEgICAoaGV4KQkJRElHSVRBTCBNSUNST1dBVkUgQ09SUE9SQVRJT04KLTAwMTA2QSAgICAgKGJhc2UgMTYpCQlESUdJVEFMIE1JQ1JPV0FWRSBDT1JQT1JBVElPTgotCQkJCTE3MCBST1NFIE9SQ0hBUkQgV0FZCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTZCICAgKGhleCkJCVNPTlVTIE5FVFdPUktTLCBJTkMuCi0wMDEwNkIgICAgIChiYXNlIDE2KQkJU09OVVMgTkVUV09SS1MsIElOQy4KLQkJCQk1IENBUkxJU0xFIFJPQUQKLQkJCQlXRVNURk9SRCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNkMgICAoaGV4KQkJSW5mcmF0ZWMgQUcKLTAwMTA2QyAgICAgKGJhc2UgMTYpCQlJbmZyYXRlYyBBRwotCQkJCVdlcm5lci12b24tU2llbWVucy1TdHIuIDcKLQkJCQk2NDYyNSBCZW5zaGVpbSAKLQkJCQlHRVJNQU5ZCi0KLTAwLTEwLTZEICAgKGhleCkJCUF4eGNlbGVyYSBCcm9hZGJhbmQgV2lyZWxlc3MKLTAwMTA2RCAgICAgKGJhc2UgMTYpCQlBeHhjZWxlcmEgQnJvYWRiYW5kIFdpcmVsZXNzCi0JCQkJMTYwMCBFYXN0IFBhcmhhbSBSb2FkCi0JCQkJUmljaG1vbmQgVkEgMjMyMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTZFICAgKGhleCkJCVRBRElSQU4gQ09NLiBMVEQuCi0wMDEwNkUgICAgIChiYXNlIDE2KQkJVEFESVJBTiBDT00uIExURC4KLQkJCQkyNiBIQVNIT0ZUSU0gU1QuCi0JCQkJSE9MT04gIDU4MTAyICAKLQkJCQlJU1JBRUwKLQotMDAtMTAtNkYgICAoaGV4KQkJVFJFTlRPTiBURUNITk9MT0dZIElOQy4KLTAwMTA2RiAgICAgKGJhc2UgMTYpCQlUUkVOVE9OIFRFQ0hOT0xPR1kgSU5DLgotCQkJCTIzNTAgQ0VOVEVOTklBTCBEUklWRQotCQkJCUdBSU5FU1ZJTExFIEdBIDMwNTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC03MCAgIChoZXgpCQlDQVJBRE9OIFRSRU5EIExURC4KLTAwMTA3MCAgICAgKGJhc2UgMTYpCQlDQVJBRE9OIFRSRU5EIExURC4KLQkJCQlQLk8uIEJPWCAzNCwgSE9SU0hBTQotCQkJCVdFU1QgU1VTU0VYLCBSSDEyIDJZRiBFTkdMQU5EIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEwLTcxICAgKGhleCkJCUFEVkFORVQgSU5DLgotMDAxMDcxICAgICAoYmFzZSAxNikJCUFEVkFORVQgSU5DLgotCQkJCTMtMjAtOCBOT0RBCi0JCQkJT0tBWUFNSSA3MDAgCi0JCQkJSkFQQU4KLQotMDAtMTAtNzIgICAoaGV4KQkJR1ZOIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAxMDcyICAgICAoYmFzZSAxNikJCUdWTiBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk4MjAwIEJSWUFOIERBSVJZIFJPQUQKLQkJCQlTVUlURSAjMTAwCi0JCQkJTEFSR08gRkwgMzM3NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTczICAgKGhleCkJCVRlY2hub2JveCwgSW5jLgotMDAxMDczICAgICAoYmFzZSAxNikJCVRlY2hub2JveCwgSW5jLgotCQkJCTE0MCBNb3VudCBIb2xseSBCeXBhc3MKLQkJCQlVbml0IDEKLQkJCQlMdW1iZXJ0b24gTkogMDgwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTc0ICAgKGhleCkJCUFURU4gSU5URVJOQVRJT05BTCBDTy4sIExURC4KLTAwMTA3NCAgICAgKGJhc2UgMTYpCQlBVEVOIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0JCQkJMTJGLCBOTy4xMDEsIFNVTkcgQ0hJQU5HIFJELgotCQkJCVRBSVBFSSwgMTA0MjggIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtNzUgICAoaGV4KQkJTWF4dG9yIENvcnBvcmF0aW9uCi0wMDEwNzUgICAgIChiYXNlIDE2KQkJTWF4dG9yIENvcnBvcmF0aW9uCi0JCQkJMjQ1MiBDbG92ZXIgQmFzaW4gRHIuCi0JCQkJTG9nbW9udCBDTyA4MDUwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNzYgICAoaGV4KQkJRVVSRU0gR21iSAotMDAxMDc2ICAgICAoYmFzZSAxNikJCUVVUkVNIEdtYkgKLQkJCQlKVUxJQ0hFUiBTVFIuIDMzOEIKLQkJCQlELTUyMDcwIEFBQ0hFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC0xMC03NyAgIChoZXgpCQlTQUYgRFJJVkUgU1lTVEVNUywgTFRELgotMDAxMDc3ICAgICAoYmFzZSAxNikJCVNBRiBEUklWRSBTWVNURU1TLCBMVEQuCi0JCQkJODggQVJERUxUIEFWRS4KLQkJCQlLSVRDSEVORVIsIE9OVEFSSU8gTjJDIDJDOSAgCi0JCQkJQ0FOQURBCi0KLTAwLTEwLTc4ICAgKGhleCkJCU5VRVJBIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDEwNzggICAgIChiYXNlIDE2KQkJTlVFUkEgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMDQ0NSBQQUNJRklDIENFTlRFUiBDT1VSVAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtNzkgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMDc5ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTdBICAgKGhleCkJCUFtYmlDb20sIEluYy4KLTAwMTA3QSAgICAgKGJhc2UgMTYpCQlBbWJpQ29tLCBJbmMuCi0JCQkJMjQ1MCBTQ09UVCBCTFZELiwgIzMwNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC03QiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwN0IgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLlRBU01BTiBEUi4tU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC03QyAgIChoZXgpCQlQLUNPTSwgSU5DLgotMDAxMDdDICAgICAoYmFzZSAxNikJCVAtQ09NLCBJTkMuCi0JCQkJMzE3NSBTLiBXSU5DSEVTVEVSIEJMVkQuCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTdEICAgKGhleCkJCUFVUk9SQSBDT01NVU5JQ0FUSU9OUywgTFRELgotMDAxMDdEICAgICAoYmFzZSAxNikJCUFVUk9SQSBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCVAuTy4gQk9YIDE5NDIKLQkJCQlNQUNRVUFSSUUgQ0VOVFJFLCBOT1JUSCBSWURFCi0JCQkJTlNXIDIxMTMgIAotCQkJCUFVU1RSQUxJQQotCi0wMC0xMC03RSAgIChoZXgpCQlCQUNITUFOTiBFTEVDVFJPTklDIEdtYkgKLTAwMTA3RSAgICAgKGJhc2UgMTYpCQlCQUNITUFOTiBFTEVDVFJPTklDIEdtYkgKLQkJCQlLUkVVWkFFQ0tFUldFRyAzMwotCQkJCUEgNjgwNiBGRUxES0lSQ0ggIAotCQkJCUFVU1RSSUEKLQotMDAtMTAtN0YgICAoaGV4KQkJQ1JFU1RST04gRUxFQ1RST05JQ1MsIElOQy4KLTAwMTA3RiAgICAgKGJhc2UgMTYpCQlDUkVTVFJPTiBFTEVDVFJPTklDUywgSU5DLgotCQkJCTEwMSBCUk9BRFdBWQotCQkJCUNSRVNTS0lMTCBOSiAwNzYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtODAgICAoaGV4KQkJTUVUQVdBVkUgQ09NTVVOSUNBVElPTlMKLTAwMTA4MCAgICAgKGJhc2UgMTYpCQlNRVRBV0FWRSBDT01NVU5JQ0FUSU9OUwotCQkJCTg3MDAgMTQ4VEggQVZFTlVFIE4uRS4KLQkJCQlSRURNT05EIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC04MSAgIChoZXgpCQlEUFMsIElOQy4KLTAwMTA4MSAgICAgKGJhc2UgMTYpCQlEUFMsIElOQy4KLQkJCQk0OTIyIEVBU1QgWUFMRSBBVkVOVUUKLQkJCQlGUkVTTk8gQ0EgOTM3MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTgyICAgKGhleCkJCUpOQSBURUxFQ09NTVVOSUNBVElPTlMgTElNSVRFRAotMDAxMDgyICAgICAoYmFzZSAxNikJCUpOQSBURUxFQ09NTVVOSUNBVElPTlMgTElNSVRFRAotCQkJCTE2IFNNSVRIIFNULCBDSEFUU1dPT0QKLQkJCQlOU1cgMjA2NyAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTAtODMgICAoaGV4KQkJSEVXTEVUVC1QQUNLQVJEIENPTVBBTlkKLTAwMTA4MyAgICAgKGJhc2UgMTYpCQlIRVdMRVRULVBBQ0tBUkQgQ09NUEFOWQotCQkJCU1BSUwgU1RPUCA0MkxFCi0JCQkJMTEwMDAwIFdPTEZFIFJPQUQKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg0ICAgKGhleCkJCUstQk9UIENPTU1VTklDQVRJT05TCi0wMDEwODQgICAgIChiYXNlIDE2KQkJSy1CT1QgQ09NTVVOSUNBVElPTlMKLQkJCQlQLk8uIEJPWCA0MTAKLQkJCQlOT1JUT04gTUEgMDI3NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg1ICAgKGhleCkJCVBPTEFSSVMgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMTA4NSAgICAgKGJhc2UgMTYpCQlQT0xBUklTIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTAyMDAgU1cgQUxMRU4gQkxWRC4KLQkJCQlCRUFWRVJUT04gT1IgOTcwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg2ICAgKGhleCkJCUFUVE8gVGVjaG5vbG9neSwgSW5jLgotMDAxMDg2ICAgICAoYmFzZSAxNikJCUFUVE8gVGVjaG5vbG9neSwgSW5jLgotCQkJCTE1NSBDcm9zc3BvaW50IFBrd3kuCi0JCQkJQW1oZXJzdCBOWSAxNDA2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtODcgICAoaGV4KQkJWHN0cmVhbWlzIFBMQwotMDAxMDg3ICAgICAoYmFzZSAxNikJCVhzdHJlYW1pcyBQTEMKLQkJCQlPWEZPUkQgU0NJRU5DRSBQQVJLCi0JCQkJRzEwLiAgMiBNQUdEQUxFTiBDRU5UUkUgUk9CRVJUIFJPQklOU09OCi0JCQkJT1hGT1JEIDBYNCA0R0EgRW5nbGFuZCAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg4ICAgKGhleCkJCUFNRVJJQ0FOIE5FVFdPUktTIElOQy4KLTAwMTA4OCAgICAgKGJhc2UgMTYpCQlBTUVSSUNBTiBORVRXT1JLUyBJTkMuCi0JCQkJNjgwMCBPUkFOR0VUSE9SUEUgQVZFLiAjQQotCQkJCUJVRU5BIFBBUksgQ0EgOTA2MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTg5ICAgKGhleCkJCVdlYlNvbmljCi0wMDEwODkgICAgIChiYXNlIDE2KQkJV2ViU29uaWMKLQkJCQkzNDY2IEVEV0FSRCBBVkUuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLThBICAgKGhleCkJCVRlcmFMb2dpYywgSW5jLgotMDAxMDhBICAgICAoYmFzZSAxNikJCVRlcmFMb2dpYywgSW5jLgotCQkJCTcwNyBDQUxJRk9STklBIFNUUkVFVAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLThCICAgKGhleCkJCUxBU0VSQU5JTUFUSU9OIFNPTExJTkdFUiBHbWJICi0wMDEwOEIgICAgIChiYXNlIDE2KQkJTEFTRVJBTklNQVRJT04gU09MTElOR0VSIEdtYkgKLQkJCQlDUkVMTEVTVFIuIDE5LzIwCi0JCQkJRCAxMDgyNyBCRVJMSU4gIAotCQkJCUdFUk1BTlkKLQotMDAtMTAtOEMgICAoaGV4KQkJRlVKSVRTVSBURUxFQ09NTVVOSUNBVElPTlMgRVVST1BFLCBMVEQuCi0wMDEwOEMgICAgIChiYXNlIDE2KQkJRlVKSVRTVSBURUxFQ09NTVVOSUNBVElPTlMgRVVST1BFLCBMVEQuCi0JCQkJU09MSUhVTEwgUEFSS1dBWQotCQkJCUJJUk1JTkdIQU0gQlVTSU5FU1MgUEFSSwotCQkJCUJJUk1JTkdIQU0gQjM3IDdZVSBFbmdsYW5kIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEwLThEICAgKGhleCkJCUpvaG5zb24gQ29udHJvbHMsIEluYy4KLTAwMTA4RCAgICAgKGJhc2UgMTYpCQlKb2huc29uIENvbnRyb2xzLCBJbmMuCi0JCQkJNTA3IEUuIE1pY2hpZ2FuIFN0LgotCQkJCVAuTy4gQm94IDQyMyAvIE03MwotCQkJCU1pbHdhdWtlZSBXSSA1MzIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOEUgICAoaGV4KQkJSFVHSCBTWU1PTlMgQ09OQ0VQVCBUZWNobm9sb2dpZXMgTHRkLgotMDAxMDhFICAgICAoYmFzZSAxNikJCUhVR0ggU1lNT05TIENPTkNFUFQgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQlBbGRlciBIaWxscyBQYXJrCi0JCQkJMTYgQWxkZXIgSGlsbHMKLQkJCQlQb29sZSwgRG9yc2V0IEJNMTIgNEFSICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC04RiAgIChoZXgpCQlSQVBUT1IgU1lTVEVNUwotMDAxMDhGICAgICAoYmFzZSAxNikJCVJBUFRPUiBTWVNURU1TCi0JCQkJNjkgSElDS09SWSBBVkUuCi0JCQkJV0FMVEhBTSBNQSAwMjE1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOTAgICAoaGV4KQkJQ0lNRVRSSUNTLCBJTkMuCi0wMDEwOTAgICAgIChiYXNlIDE2KQkJQ0lNRVRSSUNTLCBJTkMuCi0JCQkJNTUgVEVNUExFIFBMQUNFCi0JCQkJQk9TVE9OIE1BIDAyMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05MSAgIChoZXgpCQlOTyBXSVJFUyBORUVERUQgQlYKLTAwMTA5MSAgICAgKGJhc2UgMTYpCQlOTyBXSVJFUyBORUVERUQgQlYKLQkJCQlQLk8uIEJPWCAzNDMKLQkJCQkzNzIwIEFIIEJJTFRIT1ZFTiAgCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTAtOTIgICAoaGV4KQkJTkVUQ09SRSBJTkMuCi0wMDEwOTIgICAgIChiYXNlIDE2KQkJTkVUQ09SRSBJTkMuCi0JCQkJMTJGLTIsIDUzNywgU0VDLjIKLQkJCQlLVUFORy1GVSBST0FELAotCQkJCUhTSU5DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtOTMgICAoaGV4KQkJQ01TIENPTVBVVEVSUywgTFRELgotMDAxMDkzICAgICAoYmFzZSAxNikJCUNNUyBDT01QVVRFUlMsIExURC4KLQkJCQkyMDEgQVJDQURJQQotCQkJCU5BUklNQU4gUE9JTlQKLQkJCQlNVU1CQUkgNDAwIDAwMjEgIAotCQkJCUlORElBCi0KLTAwLTEwLTk0ICAgKGhleCkJCVBlcmZvcm1hbmNlIEFuYWx5c2lzIEJyb2FkYmFuZCwgU3BpcmVudCBwbGMKLTAwMTA5NCAgICAgKGJhc2UgMTYpCQlQZXJmb3JtYW5jZSBBbmFseXNpcyBCcm9hZGJhbmQsIFNwaXJlbnQgcGxjCi0JCQkJMjczNDkgQWdvdXJhIFJvYWQKLQkJCQlDYWxhYmFzYXMgSGlsbHMgQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTk1ICAgKGhleCkJCVRob21zb24gSW5jLgotMDAxMDk1ICAgICAoYmFzZSAxNikJCVRob21zb24gSW5jLgotCQkJCTEwMSBXZXN0IDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MC0xMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05NiAgIChoZXgpCQlUUkFDRVdFTEwgU1lTVEVNUywgSU5DLgotMDAxMDk2ICAgICAoYmFzZSAxNikJCVRSQUNFV0VMTCBTWVNURU1TLCBJTkMuCi0JCQkJNTY3IEVOVEVSUFJJU0UgRFJJVkUKLQkJCQlXRVNURVJWSUxMRSBPSCA0MzA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOTcgICAoaGV4KQkJV2luTmV0IE1ldHJvcG9saXRhbiBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDEwOTcgICAgIChiYXNlIDE2KQkJV2luTmV0IE1ldHJvcG9saXRhbiBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJNjYxIEVBU1QgQVJRVUVTIEFWRS4KLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTk4ICAgKGhleCkJCVNUQVJORVQgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDEwOTggICAgIChiYXNlIDE2KQkJU1RBUk5FVCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkyMjEwIE8nVE9PTEUgQVZFLgotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05OSAgIChoZXgpCQlJbm5vTWVkaWEsIEluYy4KLTAwMTA5OSAgICAgKGJhc2UgMTYpCQlJbm5vTWVkaWEsIEluYy4KLQkJCQk0ODAwIEdSRUFUIEFNRVJJQ0EgUEFSS1dBWQotCQkJCVNVSVRFICM0MDAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtOUEgICAoaGV4KQkJTkVUTElORQotMDAxMDlBICAgICAoYmFzZSAxNikJCU5FVExJTkUKLQkJCQk3LCBSdWUgZGUgQmlldnJlcwotCQkJCTkyMTQwIENMQU1BUlQgIAotCQkJCUZSQU5DRQotCi0wMC0xMC05QiAgIChoZXgpCQlFbXVsZXggQ29ycG9yYXRpb24KLTAwMTA5QiAgICAgKGJhc2UgMTYpCQlFbXVsZXggQ29ycG9yYXRpb24KLQkJCQkzMzMzIFN1c2FuIFN0cmVldAotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTlDICAgKGhleCkJCU0tU1lTVEVNIENPLiwgTFRELgotMDAxMDlDICAgICAoYmFzZSAxNikJCU0tU1lTVEVNIENPLiwgTFRELgotCQkJCTEtMS0yNSBTSElOIFVSQVNISU1BIENIT1UKLQkJCQlLQU5BR0FXQS1LVQotCQkJCSBZT0tPSEFNQSAyMjEgIAotCQkJCUpBUEFOCi0KLTAwLTEwLTlEICAgKGhleCkJCUNMQVJJTkVUIFNZU1RFTVMsIElOQy4KLTAwMTA5RCAgICAgKGJhc2UgMTYpCQlDTEFSSU5FVCBTWVNURU1TLCBJTkMuCi0JCQkJMTQxNSBLT0xMIENJUkNMRSAjMTAxCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLTlFICAgKGhleCkJCUFXQVJFLCBJTkMuCi0wMDEwOUUgICAgIChiYXNlIDE2KQkJQVdBUkUsIElOQy4KLQkJCQlPTkUgT0FLIFBBUksKLQkJCQlCRURGT1JEIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC05RiAgIChoZXgpCQlQQVZPLCBJTkMuCi0wMDEwOUYgICAgIChiYXNlIDE2KQkJUEFWTywgSU5DLgotCQkJCTk1IFlFU0xFUiBXQVkKLQkJCQlTRUFUVExFIFdBIDk4MTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BMCAgIChoZXgpCQlJTk5PVkVYIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAxMEEwICAgICAoYmFzZSAxNikJCUlOTk9WRVggVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJS0VZU1RPTkUgQ09NTU9OUwotCQkJCTUyNiBCUkFERE9DSyBBVkUuCi0JCQkJVFVSVExFIENSRUVLIFBBIDE1MTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BMSAgIChoZXgpCQlLRU5ESU4gU0VNSUNPTkRVQ1RPUiwgSU5DLgotMDAxMEExICAgICAoYmFzZSAxNikJCUtFTkRJTiBTRU1JQ09ORFVDVE9SLCBJTkMuCi0JCQkJMTU1MCBTLiBCQVNDT00gQVZFLiwgU1RFLiAjMjUwCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUEyICAgKGhleCkJCVROUwotMDAxMEEyICAgICAoYmFzZSAxNikJCVROUwotCQkJCTgwMCBUaGlyZCBTdHJlZXQsIFN1aXRlIEIxMDAKLQkJCQlIRVJORE9OIFZBIDIwMTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BMyAgIChoZXgpCQlPTU5JVFJPTklYLCBJTkMuCi0wMDEwQTMgICAgIChiYXNlIDE2KQkJT01OSVRST05JWCwgSU5DLgotCQkJCTc2MCBIQVJSSVNPTiBTVFJFRVQKLQkJCQlTRUFUVExFIFdBIDk4MTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BNCAgIChoZXgpCQlYSVJDT00KLTAwMTBBNCAgICAgKGJhc2UgMTYpCQlYSVJDT00KLQkJCQkyMzAwIENPUlBPUkFURSBDRU5URVIgRFIuCi0JCQkJVEhPVVNBTkQgT0FLUyBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQTUgICAoaGV4KQkJT1hGT1JEIElOU1RSVU1FTlRTCi0wMDEwQTUgICAgIChiYXNlIDE2KQkJT1hGT1JEIElOU1RSVU1FTlRTCi0JCQkJSU5EVVNUUklBTCBBTkFMWVNJUyBHUk9VUAotCQkJCTE5LzIwIE5VRkZJRUxEIFdBWQotCQkJCUFiaW5nZG9uLCBPeG9uIE9YMTQgMVRYICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC1BNiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDEwQTYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BNyAgIChoZXgpCQlVTkVYIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwMTBBNyAgICAgKGJhc2UgMTYpCQlVTkVYIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQk4Ri01LCAjMTMwLCBTWkUgV0VJIFJELiwKLQkJCQlIU0lOQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLUE4ICAgKGhleCkJCVJFTElBTkNFIENPTVBVVEVSIENPUlAuCi0wMDEwQTggICAgIChiYXNlIDE2KQkJUkVMSUFOQ0UgQ09NUFVURVIgQ09SUC4KLQkJCQkzMDMyIEJVTktFUiBISUxMIExBTkUKLQkJCQlTVUlURSAyMDEKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQTkgICAoaGV4KQkJQURIT0MgVEVDSE5PTE9HSUVTCi0wMDEwQTkgICAgIChiYXNlIDE2KQkJQURIT0MgVEVDSE5PTE9HSUVTCi0JCQkJMTE1MCBGSVJTVCBTVFJFRVQKLQkJCQlTQU4gSk9TRSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQUEgICAoaGV4KQkJTUVESUE0LCBJTkMuCi0wMDEwQUEgICAgIChiYXNlIDE2KQkJTUVESUE0LCBJTkMuCi0JCQkJMjUwIDE0VEggU1QuIE5XIC0gU1RFICM0MDAyCi0JCQkJQVRMQU5UQSBHQSAzMDMxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQUIgICAoaGV4KQkJS09JVE8gRUxFQ1RSSUMgSU5EVVNUUklFUywgTFRELgotMDAxMEFCICAgICAoYmFzZSAxNikJCUtPSVRPIEVMRUNUUklDIElORFVTVFJJRVMsIExURC4KLQkJCQkxMDAgTUFFREEtQ0hPLCBUT1RTVUtBLUtVCi0JCQkJWU9LT0hBTUEgMjQ0IEtBTkFHQVdBIDI0NC04NTY5Ci0JCQkJSkFQQU4KLQotMDAtMTAtQUMgICAoaGV4KQkJSU1DSSBURUNITk9MT0dJRVMKLTAwMTBBQyAgICAgKGJhc2UgMTYpCQlJTUNJIFRFQ0hOT0xPR0lFUwotCQkJCTg0MDEgT0xEIENPVVJUIEhLT1VTRSBSRAotCQkJCVNVSVRFICMyMDAKLQkJCQlWSUVOTkEgVkEgMjIxODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUFEICAgKGhleCkJCVNPRlRST05JQ1MgVVNCLCBJTkMuCi0wMDEwQUQgICAgIChiYXNlIDE2KQkJU09GVFJPTklDUyBVU0IsIElOQy4KLQkJCQk1MDg1IExJU1QgRFJJVkUKLQkJCQlDT0xPUkFETyBTUFJJTkdTIENPIDgwOTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1BRSAgIChoZXgpCQlTSElOS08gRUxFQ1RSSUMgSU5EVVNUUklFUyBDTy4KLTAwMTBBRSAgICAgKGJhc2UgMTYpCQlTSElOS08gRUxFQ1RSSUMgSU5EVVNUUklFUyBDTy4KLQkJCQk4MCBPU0hJTUFEQS1NQUNISQotCQkJCU5BR0FOTy1TSEkgMzgxLTIyICAKLQkJCQlKQVBBTgotCi0wMC0xMC1BRiAgIChoZXgpCQlUQUMgU1lTVEVNUywgSU5DLgotMDAxMEFGICAgICAoYmFzZSAxNikJCVRBQyBTWVNURU1TLCBJTkMuCi0JCQkJMTAzNSBQVVRNQU4gRFJJVkUtLVNURS4KLQkJCQlIVU5UU1ZJTExFIEFMIDM1ODE2LTIyNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUIwICAgKGhleCkJCU1FUklESUFOIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMTBCMCAgICAgKGJhc2UgMTYpCQlNRVJJRElBTiBURUNITk9MT0dZIENPUlAuCi0JCQkJMTEgTUNCUklERSBDT1JQLiBDRU5URVIgRFIuCi0JCQkJQ0hFU1RFUkZJRUxEIE1EIDYzMDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1CMSAgIChoZXgpCQlGT1ItQSBDTy4sIExURC4KLTAwMTBCMSAgICAgKGJhc2UgMTYpCQlGT1ItQSBDTy4sIExURC4KLQkJCQkyLTMtMyBPT1NBS1UKLQkJCQlTQUtVUkEgQ0lUWSwKLQkJCQlDSElCQSBQUkVGLiAyODUgIAotCQkJCUpBUEFOCi0KLTAwLTEwLUIyICAgKGhleCkJCUNPQUNUSVZFIEFFU1RIRVRJQ1MKLTAwMTBCMiAgICAgKGJhc2UgMTYpCQlDT0FDVElWRSBBRVNUSEVUSUNTCi0JCQkJNDAwMCBCUklER0VXQVkgLSBTVEUuICMzMDMKLQkJCQlTQVVTQUxJVEEgQ0EgOTQ5NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUIzICAgKGhleCkJCU5PS0lBIE1VTFRJTUVESUEgVEVSTUlOQUxTCi0wMDEwQjMgICAgIChiYXNlIDE2KQkJTk9LSUEgTVVMVElNRURJQSBURVJNSU5BTFMKLQkJCQlOT0tJQSBIT01FIENPTU1VTklDQVRJT05TCi0JCQkJRElTS0VUVEdBVEFOIDExCi0JCQkJU0UtNTgzIDM1IExJTktPUElORyAgCi0JCQkJU1dFREVOCi0KLTAwLTEwLUI0ICAgKGhleCkJCUFUTU9TUEhFUkUgTkVUV09SS1MKLTAwMTBCNCAgICAgKGJhc2UgMTYpCQlBVE1PU1BIRVJFIE5FVFdPUktTCi0JCQkJMTA0NjAgQkFORExFWSBEUklWRQotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQjUgICAoaGV4KQkJQUNDVE9OIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwMTBCNSAgICAgKGJhc2UgMTYpCQlBQ0NUT04gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCU5PLjEsIENSRUFUSU9OIFJELiBJSUkKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgMzAwICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLUI2ICAgKGhleCkJCUVOVFJBVEEgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwMTBCNiAgICAgKGJhc2UgMTYpCQlFTlRSQVRBIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJNTc0IEhFUklUQUdFIFJELgotCQkJCVNPVVRIQlVSWSBDVCAwNjQ4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQjcgICAoaGV4KQkJQ09ZT1RFIFRFQ0hOT0xPR0lFUywgTExDCi0wMDEwQjcgICAgIChiYXNlIDE2KQkJQ09ZT1RFIFRFQ0hOT0xPR0lFUywgTExDCi0JCQkJNDM2MCBQQVJLIFRFUlJBQ0UgRFJJVkUKLQkJCQlXRVNUTEFLRSBWSUxMQUdFIENBIDkxMzYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1COCAgIChoZXgpCQlJU0hJR0FLSSBDT01QVVRFUiBTWVNURU0gQ08uCi0wMDEwQjggICAgIChiYXNlIDE2KQkJSVNISUdBS0kgQ09NUFVURVIgU1lTVEVNIENPLgotCQkJCTEtMS0xLCBLWU9CQVNISSwKLQkJCQlDSFVPLUtVCi0JCQkJVG9reW8gIAotCQkJCUpBUEFOCi0KLTAwLTEwLUI5ICAgKGhleCkJCU1BWFRPUiBDT1JQLgotMDAxMEI5ICAgICAoYmFzZSAxNikJCU1BWFRPUiBDT1JQLgotCQkJCTIxOTAgTUlMTEVSIERSSVZFCi0JCQkJTE9OR01PTlQgQ08gODA1MDEtNjc0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQkEgICAoaGV4KQkJTUFSVElOSE8tREFWSVMgU1lTVEVNUywgSU5DLgotMDAxMEJBICAgICAoYmFzZSAxNikJCU1BUlRJTkhPLURBVklTIFNZU1RFTVMsIElOQy4KLQkJCQkxMjYwIE9MRCBJTk5FUyBST0FECi0JCQkJT1RUQVdBLCBPTlRBUklPIEsxQiAzVjMgIAotCQkJCUNBTkFEQQotCi0wMC0xMC1CQiAgIChoZXgpCQlEQVRBICYgSU5GT1JNQVRJT04gVEVDSE5PTE9HWQotMDAxMEJCICAgICAoYmFzZSAxNikJCURBVEEgJiBJTkZPUk1BVElPTiBURUNITk9MT0dZCi0JCQkJVEVDSE5PTE9HWSBIT1VTRQotCQkJCTEgTk9STUFOVE9OIExBTkUKLQkJCQlCT1RURVNGT1JELCBOT1RUSU5HSEFNIE5HMTMgT0VMICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC1CQyAgIChoZXgpCQlBYXN0cmEgVGVsZWNvbQotMDAxMEJDICAgICAoYmFzZSAxNikJCUFhc3RyYSBUZWxlY29tCi0JCQkJOCBGZWRlcmFsIFN0cmVldAotCQkJCUJpbGxlcmljYSBNQSAwMTgyMS0zNTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1CRCAgIChoZXgpCQlUSEUgVEVMRUNPTU1VTklDQVRJT04gVEVDSE5PTE9HWSBDT01NSVRURUUgKFRUQykKLTAwMTBCRCAgICAgKGJhc2UgMTYpCQlUSEUgVEVMRUNPTU1VTklDQVRJT04gVEVDSE5PTE9HWSBDT01NSVRURUUgKFRUQykKLQkJCQkxLTEtMTIgU2hpYmEgS291ZW4sIE1pbmF0by1rdQotCQkJCU1JTkFUTy1LVSwgICBUT0tZTyAxMDUtMDAxMQotCQkJCUpBUEFOCi0KLTAwLTEwLUJFICAgKGhleCkJCU1BUkNIIE5FVFdPUktTIENPUlBPUkFUSU9OCi0wMDEwQkUgICAgIChiYXNlIDE2KQkJTUFSQ0ggTkVUV09SS1MgQ09SUE9SQVRJT04KLQkJCQkzMDMgVGVycnkgRm94IERyaXZlCi0JCQkJT1RUQVdBLCBPTlRBUklPICAgSzJLIDNKMQotCQkJCUNBTkFEQQotCi0wMC0xMC1CRiAgIChoZXgpCQlJbnRlckFpciBXaXJlbGVzcwotMDAxMEJGICAgICAoYmFzZSAxNikJCUludGVyQWlyIFdpcmVsZXNzCi0JCQkJNDg1IENBWVVHQSBST0FECi0JCQkJQlVGRkFMTyBOWSAxNDIyNS0wMjIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1DMCAgIChoZXgpCQlBUk1BLCBJbmMuCi0wMDEwQzAgICAgIChiYXNlIDE2KQkJQVJNQSwgSW5jLgotCQkJCTQ4NTEgTm9ydGhzaG9yZSBMYW5lCi0JCQkJTm9ydGggTGl0dGxlIFJvY2sgQVIgNzIxMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUMxICAgKGhleCkJCU9JIEVMRUNUUklDIENPLiwgTFRELgotMDAxMEMxICAgICAoYmFzZSAxNikJCU9JIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTctMy0xNiBLSUtVTkEKLQkJCQlLT0hPS1UtS1UKLQkJCQlZT0tPSEFNQSAgMjIyICAKLQkJCQlKQVBBTgotCi0wMC0xMC1DMiAgIChoZXgpCQlXSUxMTkVULCBJTkMuCi0wMDEwQzIgICAgIChiYXNlIDE2KQkJV0lMTE5FVCwgSU5DLgotCQkJCUpPV0EtVEFLQU5BV0EgIEJMREcuIDhGCi0JCQkJVEFLQU5BV0EgMS01LTQsIE1JTkFUTy1LVSwKLQkJCQlUT0tZTyAgCi0JCQkJSkFQQU4KLQotMDAtMTAtQzMgICAoaGV4KQkJQ1NJLUNPTlRST0wgU1lTVEVNUwotMDAxMEMzICAgICAoYmFzZSAxNikJCUNTSS1DT05UUk9MIFNZU1RFTVMKLQkJCQlJTlRFUk5BVElPTkFMCi0JCQkJUE9CIDU5NDY5Ci0JCQkJREFMTEFTIFRYIDc1MjI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1DNCAgIChoZXgpCQlNRURJQSBMSU5LUyBDTy4sIExURC4KLTAwMTBDNCAgICAgKGJhc2UgMTYpCQlNRURJQSBMSU5LUyBDTy4sIExURC4KLQkJCQlLU1AgRUFTVCBCTERHLiA2MDQsIFNBS0FETyAzLTItMSwKLQkJCQkgVEFLQVRTVS1LVSBLQVdBU0FLSS1TSEksCi0JCQkJS2FuYWdhd2Eta2VuIDIxNCAgCi0JCQkJSkFQQU4KLQotMDAtMTAtQzUgICAoaGV4KQkJUFJPVE9DT0wgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDEwQzUgICAgIChiYXNlIDE2KQkJUFJPVE9DT0wgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNCBGSVJTVCBTVFJFRVQKLQkJCQlCUklER0VXQVRFUiBNQSAwMjMyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQzYgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDEwQzYgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSxTRUMuMSwgVEFJUElORyBSRC4KLQkJCQlUU0FPVFVFTiwgTkFOVE9VIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC1DNyAgIChoZXgpCQlEQVRBIFRSQU5TTUlTU0lPTiBORVRXT1JLCi0wMDEwQzcgICAgIChiYXNlIDE2KQkJREFUQSBUUkFOU01JU1NJT04gTkVUV09SSwotCQkJCTkxMTAgVy4gRE9ER0UgUkQuIC0gU1RFLiMyMDAKLQkJCQlPTUFIQSBORSA2ODExNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtQzggICAoaGV4KQkJQ09NTVVOSUNBVElPTlMgRUxFQ1RST05JQ1MgU0VDVVJJVFkgR1JPVVAKLTAwMTBDOCAgICAgKGJhc2UgMTYpCQlDT01NVU5JQ0FUSU9OUyBFTEVDVFJPTklDUyBTRUNVUklUWSBHUk9VUAotCQkJCTEwLzRXMjIgRklERExFUlMgR1JFRU4gTEFORQotCQkJCUJlbmhhbGwsIENoZWx0ZW5oYW0gR2xvdXN0ZXIgR0w1MiA1QUogCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTAtQzkgICAoaGV4KQkJTUlUU1VCSVNISSBFTEVDVFJPTklDUyBMT0dJU1RJQyBTVVBQT1JUIENPLgotMDAxMEM5ICAgICAoYmFzZSAxNikJCU1JVFNVQklTSEkgRUxFQ1RST05JQ1MgTE9HSVNUSUMgU1VQUE9SVCBDTy4KLQkJCQkKLQkJCQlTSE9OQU4gV29ya3MsIDczMC0xMSwgS0FNSU1BQ0hJWUEKLQkJCQlLYW1ha3VyYS1jaXR5LCBLYW5hZ2F3YSAyNDcgIAotCQkJCUpBUEFOCi0KLTAwLTEwLUNBICAgKGhleCkJCVRlbGNvIFN5c3RlbXMsIEluYy4gCi0wMDEwQ0EgICAgIChiYXNlIDE2KQkJVGVsY28gU3lzdGVtcywgSW5jLiAKLQkJCQkxNSBCZXJrc2hpcmUgUm9hZAotCQkJCU1hbnNmaWVsZCwgTUEgMDIwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUNCICAgKGhleCkJCUZBQ0lUIEsuSy4KLTAwMTBDQiAgICAgKGJhc2UgMTYpCQlGQUNJVCBLLksuCi0JCQkJSElNRUkgTklIT01CQVNISSBCTERHLiAzRgotCQkJCTEyLTMtTklIT01CQVNISS1LT0JVTkFDSE8KLQkJCQlDSFVPLUtVLCBUT0tZTyAxMDMgIAotCQkJCUpBUEFOCi0KLTAwLTEwLUNDICAgKGhleCkJCUNMUCBDT01QVVRFUiBMT0dJU1RJSyBQTEFOVU5HIEdtYkgKLTAwMTBDQyAgICAgKGJhc2UgMTYpCQlDTFAgQ09NUFVURVIgTE9HSVNUSUsgUExBTlVORyBHbWJICi0JCQkJQkFTU0VSTUFOTlNUUi4gMjEKLQkJCQkgRC04MTI0NSBNVUVOQ0hFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC0xMC1DRCAgIChoZXgpCQlJTlRFUkZBQ0UgQ09OQ0VQVAotMDAxMENEICAgICAoYmFzZSAxNikJCUlOVEVSRkFDRSBDT05DRVBUCi0JCQkJMyBWRU5FTExFIGRlIEtFUkdPUwotCQkJCTI5MDAwIFFVSU1QRVIgIAotCQkJCUZSQU5DRQotCi0wMC0xMC1DRSAgIChoZXgpCQlWT0xBTVAsIExURC4KLTAwMTBDRSAgICAgKGJhc2UgMTYpCQlWT0xBTVAsIExURC4KLQkJCQlVTklUIDMgUklWRVJTSURFIEJVU0lORVNTIFBBUksKLQkJCQlET0dGTFVEIFdBWSwKLQkJCQlGQVJOSEFNLCBTVVJSRVkgRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMC1DRiAgIChoZXgpCQlGSUJFUkxBTkUgQ09NTVVOSUNBVElPTlMKLTAwMTBDRiAgICAgKGJhc2UgMTYpCQlGSUJFUkxBTkUgQ09NTVVOSUNBVElPTlMKLQkJCQkxMzE4IFJFRFdPT0QgV0FZLCAjMjAwCi0JCQkJUEVUQUxVTUEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUQwICAgKGhleCkJCVdJVENPTSwgTFRELgotMDAxMEQwICAgICAoYmFzZSAxNikJCVdJVENPTSwgTFRELgotCQkJCVAuTy5CLiAyMjUwCi0JCQkJSEFJRkEgIDMxMDIxICAKLQkJCQlJU1JBRUwKLQotMDAtMTAtRDEgICAoaGV4KQkJVG9wIExheWVyIE5ldHdvcmtzLCBJbmMuCi0wMDEwRDEgICAgIChiYXNlIDE2KQkJVG9wIExheWVyIE5ldHdvcmtzLCBJbmMuCi0JCQkJNCBNRUNIQU5JQyBTVC4tIFNURSMyMTIKLQkJCQlOQVRJQ0sgTUEgMDE3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUQyICAgKGhleCkJCU5JVFRPIFRTVVNISU5LSSBDTy4sIExURAotMDAxMEQyICAgICAoYmFzZSAxNikJCU5JVFRPIFRTVVNISU5LSSBDTy4sIExURAotCQkJCTctMjctMTEsIFRPRE9ST0tJLCBTRVRBR0FZQS1LVQotCQkJCVRPS1lPIDE1MSAgCi0JCQkJSkFQQU4KLQotMDAtMTAtRDMgICAoaGV4KQkJR1JJUFMgRUxFQ1RST05JQyBHTUJICi0wMDEwRDMgICAgIChiYXNlIDE2KQkJR1JJUFMgRUxFQ1RST05JQyBHTUJICi0JCQkJTklFU0VOQkVSR0VSR0FTU0UgMzcKLQkJCQlBLTgwMjAgR1JBWiAgCi0JCQkJQVVTVFJJQQotCi0wMC0xMC1ENCAgIChoZXgpCQlTVE9SQUdFIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMDEwRDQgICAgIChiYXNlIDE2KQkJU1RPUkFHRSBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTExIFJJVkVSU0lERSBTVFJFRVQKLQkJCQlOQVNIVUEgTkggMDMwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUQ1ICAgKGhleCkJCUlNQVNERSBDQU5BUklBUywgUy5BLgotMDAxMEQ1ICAgICAoYmFzZSAxNikJCUlNQVNERSBDQU5BUklBUywgUy5BLgotCQkJCVVSQi4gRUwgQ0VCQURBTAotCQkJCUMvRFIuIEpVQU4gREdVRVouUEVSRVosIDM5LTIKLQkJCQkzNTAwOCBMQVMgUEFMTUFTIEcuQy4gIAotCQkJCVNQQUlOCi0KLTAwLTEwLUQ2ICAgKGhleCkJCUlUVCAtIEEvQ0QKLTAwMTBENiAgICAgKGJhc2UgMTYpCQlJVFQgLSBBL0NECi0JCQkJREVQVC4gODUyMQotCQkJCTEwMCBLSU5HU0xBTkQgUk9BRAotCQkJCUNMSUZUT04gTkogMDcwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUQ3ICAgKGhleCkJCUFSR09TWSBSRVNFQVJDSCBJTkMuCi0wMDEwRDcgICAgIChiYXNlIDE2KQkJQVJHT1NZIFJFU0VBUkNIIElOQy4KLQkJCQlOTy4gNDQsIExBTkUgNDExLCBDSFVORyBIVUEgUkQKLQkJCQlTRUMuNCwgSFNJTkNIVQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTAtRDggICAoaGV4KQkJQ0FMSVNUQQotMDAxMEQ4ICAgICAoYmFzZSAxNikJCUNBTElTVEEKLQkJCQk5OCBISUdIIFNUUkVFVCwgVEhBTUUKLQkJCQlPWEZPUkRTSElSRSBPWDkgM0VIIEVOR0xBTkQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTAtRDkgICAoaGV4KQkJSUJNIEpBUEFOLCBGVUpJU0FXQSBNVCtECi0wMDEwRDkgICAgIChiYXNlIDE2KQkJSUJNIEpBUEFOLCBGVUpJU0FXQSBNVCtECi0JCQkJS0lSSUhBUkEtQ0hPIDEsIEZVSklTQVdBIENJVFkKLQkJCQlLQU5BR0FXQSAyNTIgIAotCQkJCUpBUEFOCi0KLTAwLTEwLURBICAgKGhleCkJCU1PVElPTiBFTkdJTkVFUklORywgSU5DLgotMDAxMERBICAgICAoYmFzZSAxNikJCU1PVElPTiBFTkdJTkVFUklORywgSU5DLgotCQkJCTMzIFMuTEEgUEFURVJBIExOCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtREIgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcywgSW5jLgotMDAxMERCICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MsIEluYy4KLQkJCQkxMTk0IE4uIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtREMgICAoaGV4KQkJTUlDUk8tU1RBUiBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotMDAxMERDICAgICAoYmFzZSAxNikJCU1JQ1JPLVNUQVIgSU5URVJOQVRJT05BTCBDTy4sIExURC4KLQkJCQlOTy4gNjksIExJLURFIFNULiwgSlVORy1IRSBDSVRZCi0JCQkJIFRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC1ERCAgIChoZXgpCQlFTkFCTEUgU0VNSUNPTkRVQ1RPUiwgSU5DLgotMDAxMEREICAgICAoYmFzZSAxNikJCUVOQUJMRSBTRU1JQ09ORFVDVE9SLCBJTkMuCi0JCQkJMTc0MCBURUNITk9MT0dZIERSSVZFCi0JCQkJU1VJVEUgIzExMAotCQkJCVNBTiBKT1NFIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1ERSAgIChoZXgpCQlJTlRFUk5BVElPTkFMIERBVEFDQVNUSU5HIENPUlBPUkFUSU9OCi0wMDEwREUgICAgIChiYXNlIDE2KQkJSU5URVJOQVRJT05BTCBEQVRBQ0FTVElORyBDT1JQT1JBVElPTgotCQkJCTI2ODAgUVVFRU5TVklFVyBEUklWRQotCQkJCU9UVEFXQSwgT05UQVJJTyBLMkIgOEg2Ci0JCQkJQ0FOQURBCi0KLTAwLTEwLURGICAgKGhleCkJCVJJU0UgQ09NUFVURVIgSU5DLgotMDAxMERGICAgICAoYmFzZSAxNikJCVJJU0UgQ09NUFVURVIgSU5DLgotCQkJCTlGLCBOTy4gMzA2LTMsIFRBVFVORyBSRC4KLQkJCQlTRUMuIDEsIEhTSSBDSElILAotCQkJCVRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC1FMCAgIChoZXgpCQlPcmFjbGUgQ29ycG9yYXRpb24KLTAwMTBFMCAgICAgKGJhc2UgMTYpCQlPcmFjbGUgQ29ycG9yYXRpb24KLQkJCQk1MDAgT3JhY2xlIFBhcmt3YXkKLQkJCQlSZWR3b29kIFNob3JlcyBDQSA5NDA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRTEgICAoaGV4KQkJUy5JLiBURUNILCBJTkMuCi0wMDEwRTEgICAgIChiYXNlIDE2KQkJUy5JLiBURUNILCBJTkMuCi0JCQkJUC5PLiBCT1ggNjA5Ci0JCQkJR0VORVZBIElMIDYwMTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FMiAgIChoZXgpCQlBcnJheUNvbW0sIEluYy4KLTAwMTBFMiAgICAgKGJhc2UgMTYpCQlBcnJheUNvbW0sIEluYy4KLQkJCQkzMTQxIFpBTktFUiBST0FECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUUzICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDEwRTMgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRTQgICAoaGV4KQkJTlNJIENPUlBPUkFUSU9OCi0wMDEwRTQgICAgIChiYXNlIDE2KQkJTlNJIENPUlBPUkFUSU9OCi0JCQkJUC5PLiBCT1ggNjM1Ci0JCQkJV0lMU09OVklMTEUgT1IgOTcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUU1ICAgKGhleCkJCVNPTEVDVFJPTiBURVhBUwotMDAxMEU1ICAgICAoYmFzZSAxNikJCVNPTEVDVFJPTiBURVhBUwotCQkJCTEyNDU1IFJFU0VBUkNIIEJMVkQuIE0vUyAyMjA1Ci0JCQkJQVVTVElOIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FNiAgIChoZXgpCQlBUFBMSUVEIElOVEVMTElHRU5UIFNZU1RFTVMsIElOQy4KLTAwMTBFNiAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIElOVEVMTElHRU5UIFNZU1RFTVMsIElOQy4KLQkJCQkzOTIzIFJBTkNIRVJPIERSSVZFCi0JCQkJQU5OIEFSQk9SIE1JIDQ4MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1FNyAgIChoZXgpCQlCcmVlemVDb20KLTAwMTBFNyAgICAgKGJhc2UgMTYpCQlCcmVlemVDb20KLQkJCQlQTyBCb3ggMTMxMzkKLQkJCQlBdGlkaW0gVGVjaG5vbG9naWNhbCBQYXJrLCBCbGRnLiAxCi0JCQkJVGVsLUF2aXYgIAotCQkJCUlTUkFFTAotCi0wMC0xMC1FOCAgIChoZXgpCQlURUxPQ0lUWSwgSU5DT1JQT1JBVEVECi0wMDEwRTggICAgIChiYXNlIDE2KQkJVEVMT0NJVFksIElOQ09SUE9SQVRFRAotCQkJCTk5MiBTT1VUSCBERSBBTlpBIEJMVkQKLQkJCQlTQU4gSk9TRSBDQSA5NTEyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRTkgICAoaGV4KQkJUkFJRFRFQyBMVEQuCi0wMDEwRTkgICAgIChiYXNlIDE2KQkJUkFJRFRFQyBMVEQuCi0JCQkJQ0FTVExFIFJPQUQKLQkJCQlMSVRUTEUgSVNMQU5EIElORFVTVFJJQUwgRVNUQVRFCi0JCQkJTGl0dGxlIElzbGFuZCBDb3VudHkgQ29yayAKLQkJCQlJUkVMQU5ECi0KLTAwLTEwLUVBICAgKGhleCkJCUFERVBUIFRFQ0hOT0xPR1kKLTAwMTBFQSAgICAgKGJhc2UgMTYpCQlBREVQVCBURUNITk9MT0dZCi0JCQkJMTUwIFJPU0UgT1JDSEFSRCBXQVkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRUIgICAoaGV4KQkJU0VMU0lVUyBTWVNURU1TLCBJTkMuCi0wMDEwRUIgICAgIChiYXNlIDE2KQkJU0VMU0lVUyBTWVNURU1TLCBJTkMuCi0JCQkJNTA1NyBLRUxMRVIgU1BSSU5HUyBSRC4KLQkJCQlEQUxMQVMgVFggNzUyNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUVDICAgKGhleCkJCVJQQ0csIExMQwotMDAxMEVDICAgICAoYmFzZSAxNikJCVJQQ0csIExMQwotCQkJCTc0OSBNSU5FUiBST0FECi0JCQkJSElHSExBTkQgSFRTIE9IIDQ0MTQzLTIxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUVEICAgKGhleCkJCVNVTkRBTkNFIFRFQ0hOT0xPR1ksIElOQy4KLTAwMTBFRCAgICAgKGJhc2UgMTYpCQlTVU5EQU5DRSBURUNITk9MT0dZLCBJTkMuCi0JCQkJMjAxMTEgU1RFVkVOUyBDUkVFSyBCTFZELgotCQkJCVNVSVRFICMxMzgKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUVFICAgKGhleCkJCUNUSSBQUk9EVUNUUywgSU5DLgotMDAxMEVFICAgICAoYmFzZSAxNikJCUNUSSBQUk9EVUNUUywgSU5DLgotCQkJCTEyMTEgVy4gU0hBUk9OIFJELgotCQkJCUNJTkNJTk5BVEkgT0ggNDUyNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUVGICAgKGhleCkJCURCVEVMIElOQ09SUE9SQVRFRAotMDAxMEVGICAgICAoYmFzZSAxNikJCURCVEVMIElOQ09SUE9SQVRFRAotCQkJCU5PLjI5IFRaVS1DSElBTkcgU1QuLAotCQkJCVRVLUNIRU5HIFRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMC1GMSAgIChoZXgpCQlJLU8gQ09SUE9SQVRJT04KLTAwMTBGMSAgICAgKGJhc2UgMTYpCQlJLU8gQ09SUE9SQVRJT04KLQkJCQkyMjU2IFNPVVRIIDM2MDAgV0VTVAotCQkJCVNBTFQgTEFLRSBDSVRZIFVUIDg0MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1GMiAgIChoZXgpCQlBTlRFQwotMDAxMEYyICAgICAoYmFzZSAxNikJCUFOVEVDCi0JCQkJNDkyMCBBVkFMT04gUklER0UgUEtXWQotCQkJCVNVSVRFICM2MDAKLQkJCQlOT1JDUk9TUyBHQSAzMDA3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRjMgICAoaGV4KQkJTmV4Y29tIEludGVybmF0aW9uYWwgQ28uLCBMdGQuCi0wMDEwRjMgICAgIChiYXNlIDE2KQkJTmV4Y29tIEludGVybmF0aW9uYWwgQ28uLCBMdGQuCi0JCQkJMThGLCBOby4gNzE2LCBDaHVuZy1DaGVuZyBSb2FkLAotCQkJCUNodW5nIEhvLAotCQkJCVRhaXBlaSBIc2llbiAyMzUsICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEwLUY0ICAgKGhleCkJCVZlcnRpY2FsIENvbW11bmljYXRpb25zCi0wMDEwRjQgICAgIChiYXNlIDE2KQkJVmVydGljYWwgQ29tbXVuaWNhdGlvbnMKLQkJCQkzOTc5IEZyZWVkb20gQ2lyY2xlICM0MDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NC0xMjQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1GNSAgIChoZXgpCQlBTUhFUlNUIFNZU1RFTVMsIElOQy4KLTAwMTBGNSAgICAgKGJhc2UgMTYpCQlBTUhFUlNUIFNZU1RFTVMsIElOQy4KLQkJCQkzMCBXSUxTT04gUk9BRAotCQkJCUJVRkZBTE8gTlkgMTQyMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUY2ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMTBGNiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEwLUY3ICAgKGhleCkJCUlSSUlDSEkgVEVDSE5PTE9HSUVTIEluYy4KLTAwMTBGNyAgICAgKGJhc2UgMTYpCQlJUklJQ0hJIFRFQ0hOT0xPR0lFUyBJbmMuCi0JCQkJMS0yNi03IENIVU8sIE5BS0FOQS1LVQotCQkJCSBUT0tZTyAxNjQgIAotCQkJCUpBUEFOCi0KLTAwLTEwLUY4ICAgKGhleCkJCU5paWtrZSBUZWNobm8gU3lzdGVtIENvLiBMdGQKLTAwMTBGOCAgICAgKGJhc2UgMTYpCQlOaWlra2UgVGVjaG5vIFN5c3RlbSBDby4gTHRkCi0JCQkJMTg1MC0xIFRzdXJ1bWEsIE1hY2hpZGEtc2hpCi0JCQkJVG9reW8gIDE5NC0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMTAtRjkgICAoaGV4KQkJVU5JUVVFIFNZU1RFTVMsIElOQy4KLTAwMTBGOSAgICAgKGJhc2UgMTYpCQlVTklRVUUgU1lTVEVNUywgSU5DLgotCQkJCTE4MSBET04gUEFSSyBSRAotCQkJCU1BUktIQU0sIE9OVEFSSU8gTDNSIDFDMiAgCi0JCQkJQ0FOQURBCi0KLTAwLTEwLUZBICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMTBGQSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJTVMgMzUtR1BPCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMC1GQiAgIChoZXgpCQlaSURBIFRFQ0hOT0xPR0lFUyBMSU1JVEVECi0wMDEwRkIgICAgIChiYXNlIDE2KQkJWklEQSBURUNITk9MT0dJRVMgTElNSVRFRAotCQkJCTgvRiBCTE9DSyBBICBHT09EVklFVyBJTkRVU1RSSUFMIEJVSUxESU4KLQkJCQlLSU4gRkFUIFNUUiBUTVRMIDIxMwotCQkJCVRVRU4gTVVOIE5UICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTAtRkMgICAoaGV4KQkJQlJPQURCQU5EIE5FVFdPUktTLCBJTkMuCi0wMDEwRkMgICAgIChiYXNlIDE2KQkJQlJPQURCQU5EIE5FVFdPUktTLCBJTkMuCi0JCQkJMzcgU1RFVkVOU09OIFJPQUQKLQkJCQlXSU5OSVBFRywgTUFOSVRPQkEgUjNIIDBIOSAgCi0JCQkJQ0FOQURBCi0KLTAwLTEwLUZEICAgKGhleCkJCUNPQ09NIEEvUwotMDAxMEZEICAgICAoYmFzZSAxNikJCUNPQ09NIEEvUwotCQkJCVRFTEVUT05WRUogOAotCQkJCURLIDI4NjAgU09CT1JHICAKLQkJCQlERU5NQVJLCi0KLTAwLTEwLUZFICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0wMDEwRkUgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQkzMDEgUk9DS1JJTU1PTiBCTFZELCBTT1VUSAotCQkJCU0vUyBDWE8xLTIvTjI2Ci0JCQkJQ09MT1JBRE8gU1BSSU5HUyBDTyA4MDkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTAtRkYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAxMEZGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMDAgICAoaGV4KQkJU2NobmVpZGVyIEVsZWN0cmljCi0wMDExMDAgICAgIChiYXNlIDE2KQkJU2NobmVpZGVyIEVsZWN0cmljCi0JCQkJNTQ2MCBQb3R0c3ZpbGxlIFBpa2UKLQkJCQlMZWVzcG9ydCBQQSAxOTUzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMDEgICAoaGV4KQkJQ0VUIFRlY2hub2xvZ2llcyBQdGUgTHRkCi0wMDExMDEgICAgIChiYXNlIDE2KQkJQ0VUIFRlY2hub2xvZ2llcyBQdGUgTHRkCi0JCQkJMTAwIEp1cm9uZyBFYXN0IFN0cmVldCAyMQotCQkJCVNpbmdhcG9yZSBUZWNobm9sb2dpZXMgQnVpbGRpbmcKLQkJCQk2MDk2MDIKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTEtMDIgICAoaGV4KQkJQXVyb3JhIE11bHRpbWVkaWEgQ29ycC4KLTAwMTEwMiAgICAgKGJhc2UgMTYpCQlBdXJvcmEgTXVsdGltZWRpYSBDb3JwLgotCQkJCTIwNSBDb21tZXJjaWFsIENvdXJ0Ci0JCQkJTW9yZ2FudmlsbGUgTmV3IEplcnNleSAwNzc1MS0xMDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0wMyAgIChoZXgpCQlrYXdhbXVyYSBlbGVjdHJpYyBpbmMuCi0wMDExMDMgICAgIChiYXNlIDE2KQkJa2F3YW11cmEgZWxlY3RyaWMgaW5jLgotCQkJCTMtODYgYWthdHN1a2ktY2hvCi0JCQkJc2V0byBhaWNoaSA0ODktMDA3MQotCQkJCUpBUEFOCi0KLTAwLTExLTA0ICAgKGhleCkJCVRFTEVYWQotMDAxMTA0ICAgICAoYmFzZSAxNikJCVRFTEVYWQotCQkJCTExMTYsIEhZVU5EQUkgNDEgVE9XRVIsIDkxNy05Ci0JCQkJTU9LLURPTkcsIFlBTkdDSFVOLUtVLAotCQkJCVNFT1VMICAxNTgtNzIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTA1ICAgKGhleCkJCVN1bnBsdXMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTEwNSAgICAgKGJhc2UgMTYpCQlTdW5wbHVzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTksIElubm92YXRpb24gRmlyc3QgUm9hZCwgSHNpbmNodSBTY2llbmNlIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTA2ICAgKGhleCkJCVNpZW1lbnMgTlYgKEJlbGdpdW0pCi0wMDExMDYgICAgIChiYXNlIDE2KQkJU2llbWVucyBOViAoQmVsZ2l1bSkKLQkJCQlBdGVhbGFhbiAzNAotCQkJCUhlcmVudGFscyBBbnR3ZXJwIDIyMDAKLQkJCQlCRUxHSVVNCi0KLTAwLTExLTA3ICAgKGhleCkJCVJHQiBOZXR3b3JrcyBJbmMuCi0wMDExMDcgICAgIChiYXNlIDE2KQkJUkdCIE5ldHdvcmtzIEluYy4KLQkJCQkyOTI5IENhbXB1cyBEcml2ZQotCQkJCVN1aXRlIDE2NQotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMDggICAoaGV4KQkJT3JiaXRhbCBEYXRhIENvcnBvcmF0aW9uCi0wMDExMDggICAgIChiYXNlIDE2KQkJT3JiaXRhbCBEYXRhIENvcnBvcmF0aW9uCi0JCQkJMTkwMCBTLiBOb3Jmb2xrIFN0LiBTdGUgMzIwCi0JCQkJU2FuIE1hdGVvIENBIDk0NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0wOSAgIChoZXgpCQlNaWNyby1TdGFyIEludGVybmF0aW9uYWwKLTAwMTEwOSAgICAgKGJhc2UgMTYpCQlNaWNyby1TdGFyIEludGVybmF0aW9uYWwKLQkJCQlObyA2OSwgTGktRGUgU3RyZWV0LCBKdW5nLUhlIENpdHksCi0JCQkJVGFpcGVpICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTBBICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDExMEEgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMEIgICAoaGV4KQkJRnJhbmtsaW4gVGVjaG5vbG9neSBTeXN0ZW1zCi0wMDExMEIgICAgIChiYXNlIDE2KQkJRnJhbmtsaW4gVGVjaG5vbG9neSBTeXN0ZW1zCi0JCQkJMjA0MDYgRWFybCBTdAotCQkJCVRvcnJhbmNlIENBIDkwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0wQyAgIChoZXgpCQlBdG1hcmsgVGVjaG5vLCBJbmMuCi0wMDExMEMgICAgIChiYXNlIDE2KQkJQXRtYXJrIFRlY2hubywgSW5jLgotCQkJCTJGIFNEIEJMREcsIDItMi0zLTE0IEF0c3ViZXRzdS1uaXNoaSwgQXRzdWJldHN1LWt1Ci0JCQkJU2FwcG9ybyBIb2trYWlkbyAwMDQtMDA2MgotCQkJCUpBUEFOCi0KLTAwLTExLTBEICAgKGhleCkJCVNBTkJsYXplIFRlY2hub2xvZ3ksIEluYy4KLTAwMTEwRCAgICAgKGJhc2UgMTYpCQlTQU5CbGF6ZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMiBDbG9jayBUb3dlciBQbGFjZQotCQkJCU1heW5hcmQgTUEgMDE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTBFICAgKGhleCkJCVRzdXJ1c2FraSBTZWFsYW5kIFRyYW5zcG9ydGF0aW9uIENvLiBMdGQuCi0wMDExMEUgICAgIChiYXNlIDE2KQkJVHN1cnVzYWtpIFNlYWxhbmQgVHJhbnNwb3J0YXRpb24gQ28uIEx0ZC4KLQkJCQkxMDAwIE1pc2EKLQkJCQlPaXRhICA4NzAwMTk2Ci0JCQkJSkFQQU4KLQotMDAtMTEtMEYgICAoaGV4KQkJbmV0cGxhdCxJbmMuCi0wMDExMEYgICAgIChiYXNlIDE2KQkJbmV0cGxhdCxJbmMuCi0JCQkJMkYgT2x5bXBpYSBDZW50ZXIsIDgyOC0xMCwgWWVva3NhbS1kb25nLCBHYW5nbmFtLWd1Ci0JCQkJU0VPVUwgIDEzNS05MzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtMTAgICAoaGV4KQkJTWF4YW5uYSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMTEwICAgICAoYmFzZSAxNikJCU1heGFubmEgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tMjAxLCBOby40Mi0zLCBMdXl1YW4gUm9hZAotCQkJCUd1YW5nemhvdSAgNTEwMDk1Ci0JCQkJQ0hJTkEKLQotMDAtMTEtMTEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTAwMTExMSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCTIxMTEgTkUgMjV0aCBBdmVudWUKLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTEyICAgKGhleCkJCUhvbmV5d2VsbCBDTVNTCi0wMDExMTIgICAgIChiYXNlIDE2KQkJSG9uZXl3ZWxsIENNU1MKLQkJCQk4MzIzIExpbmRiZXJnaCBDdAotCQkJCVNhcmFzb3RhIEZMIDM0MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0xMyAgIChoZXgpCQlGcmF1bmhvZmVyIEZPS1VTCi0wMDExMTMgICAgIChiYXNlIDE2KQkJRnJhdW5ob2ZlciBGT0tVUwotCQkJCUthaXNlcmluLUF1Z3VzdGEtQWxsZWUgMzEKLQkJCQlCZXJsaW4gIDEwNTg5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS0xNCAgIChoZXgpCQlFdmVyRm9jdXMgRWxlY3Ryb25pY3MgQ29ycC4KLTAwMTExNCAgICAgKGJhc2UgMTYpCQlFdmVyRm9jdXMgRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQkxMkYsIE5vLiA3OSwgU2VjLiAxLCBTaGluLVRhaSBXdSBSZC4KLQkJCQlIc2ktQ2hpIFRhaXBlaSBIc2llbiAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTE1ICAgKGhleCkJCUVQSU4gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDExMTUgICAgIChiYXNlIDE2KQkJRVBJTiBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQlBY29ybiBDYW1wdXMKLQkJCQk2dGggUmVzdWx0IFdheSwgU3VpdGUgMjQ4Ci0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0xNiAgIChoZXgpCQlDT1RFQVUgVkVSVCBDTy4sIExURC4KLTAwMTExNiAgICAgKGJhc2UgMTYpCQlDT1RFQVUgVkVSVCBDTy4sIExURC4KLQkJCQkzLTMtMTkgS0FDSElET0tJCi0JCQkJQ0hVTy1LVSBUT0tZTyAxMDQtMDA1NAotCQkJCUpBUEFOCi0KLTAwLTExLTE3ICAgKGhleCkJCUNFU05FVAotMDAxMTE3ICAgICAoYmFzZSAxNikJCUNFU05FVAotCQkJCVppa292YSA0Ci0JCQkJUHJhaGEgNiAgMTYwIDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMTEtMTggICAoaGV4KQkJQkxYIElDIERlc2lnbiBDb3JwLiwgTHRkLgotMDAxMTE4ICAgICAoYmFzZSAxNikJCUJMWCBJQyBEZXNpZ24gQ29ycC4sIEx0ZC4KLQkJCQlSbSAxMDA2LCBRdWFudHVtIFBsYXphCi0JCQkJTm8uMjcsIFpoaWNodW4gUmQsIEhhaWRhbgotCQkJCUJlaWppbmcgIDEwMDA4MwotCQkJCUNISU5BCi0KLTAwLTExLTE5ICAgKGhleCkJCVNvbHRlcmFzLCBJbmMuCi0wMDExMTkgICAgIChiYXNlIDE2KQkJU29sdGVyYXMsIEluYy4KLQkJCQk5MDAgVy4gU2FudGEgQW5pdGEgU3RyZWV0Ci0JCQkJU2FuIEdhYnJpZWwgQ0EgOTE3NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTFBICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDExMUEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0xQiAgIChoZXgpCQlUYXJnYSBTeXN0ZW1zIERpdiBMLTMgQ29tbXVuaWNhdGlvbnMgQ2FuYWRhCi0wMDExMUIgICAgIChiYXNlIDE2KQkJVGFyZ2EgU3lzdGVtcyBEaXYgTC0zIENvbW11bmljYXRpb25zIENhbmFkYQotCQkJCTIwODEgTWVyaXZhbGUgUmQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlPdHRhd2EgT250IEsyRyAxRzkKLQkJCQlDQU5BREEKLQotMDAtMTEtMUMgICAoaGV4KQkJUGxlb3JhIFRlY2hub2xvZ2llcyBJbmMuCi0wMDExMUMgICAgIChiYXNlIDE2KQkJUGxlb3JhIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMzU5IFRlcnJ5IEZveCBEcml2ZSwgU3VpdGUgMjMwCi0JCQkJS2FuYXRhIE9OIEsySyAyRTcKLQkJCQlDQU5BREEKLQotMDAtMTEtMUQgICAoaGV4KQkJSGVjdHJpeCBMaW1pdGVkCi0wMDExMUQgICAgIChiYXNlIDE2KQkJSGVjdHJpeCBMaW1pdGVkCi0JCQkJVW5pdCA5MDYtOTExLCA5L0YsIFN0YW5ob3BlIEhvc3VlLAotCQkJCTczNC03MzggS2luZydzIFJvYWQsCi0JCQkJTm9ydGggUG9pbnQgSG9uZyBLb25nIAotCQkJCUNISU5BCi0KLTAwLTExLTFFICAgKGhleCkJCUVQU0cgKEV0aGVybmV0IFBvd2VybGluayBTdGFuZGFyZGl6YXRpb24gR3JvdXApCi0wMDExMUUgICAgIChiYXNlIDE2KQkJRVBTRyAoRXRoZXJuZXQgUG93ZXJsaW5rIFN0YW5kYXJkaXphdGlvbiBHcm91cCkKLQkJCQljL28gVW5pdmVyc2l0eSBvZiBBcHBsaWVkIFNjaWVuY2VzCi0JCQkJUE8gQm94IDgwNQotCQkJCVdpbnRlcnRodXIgWkggQ0gtODQwMQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTExLTFGICAgKGhleCkJCURvcmVtaSBMYWJzLCBJbmMuCi0wMDExMUYgICAgIChiYXNlIDE2KQkJRG9yZW1pIExhYnMsIEluYy4KLQkJCQkzMDYgRS4gQWxhbWVkYSBBdmUuCi0JCQkJQnVyYmFuayBDQSA5MTUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMjAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMTIwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMjEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMTIxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMjIgICAoaGV4KQkJQ0lNU1lTIEluYwotMDAxMTIyICAgICAoYmFzZSAxNikJCUNJTVNZUyBJbmMKLQkJCQkjMzAxLFNpbnN1bmctY2xlYW4gQkxERywxNDAsIE5vbmdzZW8tUmksS2loZXVuZy1FdXAKLQkJCQlZb25naW4tQ2l0eSBLeXVuZ2dpLURvIDQ0OS03MTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtMjMgICAoaGV4KQkJQXBwb2ludGVjaCwgSW5jLgotMDAxMTIzICAgICAoYmFzZSAxNikJCUFwcG9pbnRlY2gsIEluYy4KLQkJCQk2Ri0yIE5vLjE5MiBUdW5nLUt1YW4gUmQuCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS0yNCAgIChoZXgpCQlBcHBsZSBDb21wdXRlcgotMDAxMTI0ICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyCi0JCQkJMSBJbmlmaW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMjUgICAoaGV4KQkJSUJNIENvcnAKLTAwMTEyNSAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTI2ICAgKGhleCkJCVZlbnN0YXIgSW5jLgotMDAxMTI2ICAgICAoYmFzZSAxNikJCVZlbnN0YXIgSW5jLgotCQkJCTkyNTAgT3dlbnNtb3V0aCBBdmUuCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtMjcgICAoaGV4KQkJVEFTSSwgSW5jCi0wMDExMjcgICAgIChiYXNlIDE2KQkJVEFTSSwgSW5jCi0JCQkJNTU1MSBEcnkgRm9yayBSb2FkCi0JCQkJQ2xldmVzIE9IIDQ1MDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0yOCAgIChoZXgpCQlTdHJlYW1pdAotMDAxMTI4ICAgICAoYmFzZSAxNikJCVN0cmVhbWl0Ci0JCQkJRmxpZ2h0IEZvcnVtIDM1NDMKLQkJCQlFaW5kaG92ZW4gNTY1NyBEVwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTExLTI5ICAgKGhleCkJCVBhcmFkaXNlIERhdGFjb20gTHRkLgotMDAxMTI5ICAgICAoYmFzZSAxNikJCVBhcmFkaXNlIERhdGFjb20gTHRkLgotCQkJCTEgV2hlYXRvbiBSb2FkCi0JCQkJV2l0aGFtIEVzc2V4IFVLIENNOCAxVUoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS0yQSAgIChoZXgpCQlOaWtvIE5WCi0wMDExMkEgICAgIChiYXNlIDE2KQkJTmlrbyBOVgotCQkJCUluZHVzdHJpZXBhcmsgV2VzdCA0MAotCQkJCVNpbnQtTmlrbGFhcyBPL1YgOTEwMAotCQkJCUJFTEdJVU0KLQotMDAtMTEtMkIgICAoaGV4KQkJTmV0TW9kdWxlIEFHCi0wMDExMkIgICAgIChiYXNlIDE2KQkJTmV0TW9kdWxlIEFHCi0JCQkJTWVyaWVkd2VnIDExCi0JCQkJTmllZGVyd2FuZ2VuIENIIDMxNzIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xMS0yQyAgIChoZXgpCQlJWlQgR21iSAotMDAxMTJDICAgICAoYmFzZSAxNikJCUlaVCBHbWJICi0JCQkJQW0gV2VpY2hzZWxnYXJ0ZW4gNQotCQkJCUVybGFuZ2VuIEJhdmFyaWEgOTEwNTgKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLTJEICAgKGhleCkJCWlQdWxzZSBTeXN0ZW1zCi0wMDExMkQgICAgIChiYXNlIDE2KQkJaVB1bHNlIFN5c3RlbXMKLQkJCQkxc3QgRmxvb3IgTm92ZWxsIEhvdXNlLCBNb3JuaW5nc2lkZSBXZWRnZSBPZmZpY2UgUGFyawotCQkJCTI1NSBSaXZvbmlhIFJvYWQKLQkJCQlNb3JuaW5nc2lkZSBKb2hhbm5lc2J1cmcgMjEyOAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xMS0yRSAgIChoZXgpCQlDRUlDT00KLTAwMTEyRSAgICAgKGJhc2UgMTYpCQlDRUlDT00KLQkJCQkxNyBydWUgR2FzdG9uIEV2cmFyZAotCQkJCVRvdWxvdXNlIENlZGV4IDEgSGF1dGUtR2Fyb25uZSAzMTA5NAotCQkJCUZSQU5DRQotCi0wMC0xMS0yRiAgIChoZXgpCQlBU1VTVGVrIENvbXB1dGVyIEluYy4KLTAwMTEyRiAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENvbXB1dGVyIEluYy4KLQkJCQlOby4xNTAsIExpLVRlIFJkLiwgUGVpdG91Ci0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTMwICAgKGhleCkJCUFsbGllZCBUZWxlc2lzIChIb25nIEtvbmcpIEx0ZC4KLTAwMTEzMCAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcyAoSG9uZyBLb25nKSBMdGQuCi0JCQkJUm9vbSBGLCAzL0YsIFlldW5nIFlpdSBDaG9uZyAobm8uIDgpIEluZHVzdHJpYWwgYnVpbGRpbmcsCi0JCQkJMjAgV2FuZyBIb2kgUm9hZCwgS293bG9vbiBCYXksCi0JCQkJSE9ORyBLT05HCi0KLTAwLTExLTMxICAgKGhleCkJCVVOQVRFQ0guIENPLixMVEQKLTAwMTEzMSAgICAgKGJhc2UgMTYpCQlVTkFURUNILiBDTy4sTFRECi0JCQkJQS03MjcgLEdFT1BZVU5HIFRPV04sMjAzLTEKLQkJCQlOT05IWVVORy1ET05HCi0JCQkJS0FOR05BTS1HVSBTRU9VTCAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTMyICAgKGhleCkJCVN5bm9sb2d5IEluY29ycG9yYXRlZAotMDAxMTMyICAgICAoYmFzZSAxNikJCVN5bm9sb2d5IEluY29ycG9yYXRlZAotCQkJCTZGLTIsIE5vLjEwNiwgQ2hhbmcgQW4gVy4gUmQuLAotCQkJCVRhaXBlaSAgMTAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS0zMyAgIChoZXgpCQlTaWVtZW5zIEF1c3RyaWEgU0lNRUEKLTAwMTEzMyAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEF1c3RyaWEgU0lNRUEKLQkJCQlTaWVtZW5zc3RyYXNzZSA5MC05MgotCQkJCVZpZW5uYSAgMTIxMAotCQkJCUFVU1RSSUEKLQotMDAtMTEtMzQgICAoaGV4KQkJTWVkaWFDZWxsLCBJbmMuCi0wMDExMzQgICAgIChiYXNlIDE2KQkJTWVkaWFDZWxsLCBJbmMuCi0JCQkJNjAwIDE3dGggU3QKLQkJCQlTdWl0ZSAyODAwIFNvdXRoCi0JCQkJRGVudmVyIENPIDgwMjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS0zNSAgIChoZXgpCQlHcmFuZGV5ZSBMdGQKLTAwMTEzNSAgICAgKGJhc2UgMTYpCQlHcmFuZGV5ZSBMdGQKLQkJCQk2IEh1eGxleSBSb2FkCi0JCQkJU3VycmV5IFJlc2VhcmNoIFBhcmsKLQkJCQlHdWlsZGZvcmQgU3VycmV5IEdVMiA3UkUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS0zNiAgIChoZXgpCQlHb29kcmljaCBTZW5zb3IgU3lzdGVtcwotMDAxMTM2ICAgICAoYmFzZSAxNikJCUdvb2RyaWNoIFNlbnNvciBTeXN0ZW1zCi0JCQkJMTQzMDAgSnVkaWNpYWwgUm9hZAotCQkJCUJ1cm5zdmlsbGUgTWlubmVzb3RhIDU1MzA2LTQ4OTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTM3ICAgKGhleCkJCUFJQ0hJIEVMRUNUUklDIENPLiwgTFRELgotMDAxMTM3ICAgICAoYmFzZSAxNikJCUFJQ0hJIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTEKLQkJCQlhaWNoaS1jaG8KLQkJCQlrYXN1Z2FpIGNpdHkgYWljaGkgcHJlZi4gNDg2LTg2NjYKLQkJCQlKQVBBTgotCi0wMC0xMS0zOCAgIChoZXgpCQlUQUlTSElOIENPLiwgTFRELgotMDAxMTM4ICAgICAoYmFzZSAxNikJCVRBSVNISU4gQ08uLCBMVEQuCi0JCQkJMjAwLTcgTmFrYW5vCi0JCQkJTmFrYW5vIE5hZ2FubyAzODMtMDAxMwotCQkJCUpBUEFOCi0KLTAwLTExLTM5ICAgKGhleCkJCVNUT0VCRVIgQU5UUklFQlNURUNITklLIEdtYkggKyBDby4gS0cuCi0wMDExMzkgICAgIChiYXNlIDE2KQkJU1RPRUJFUiBBTlRSSUVCU1RFQ0hOSUsgR21iSCArIENvLiBLRy4KLQkJCQlLaWVzZWxicm9ubmVyIFN0ci4gMTIKLQkJCQlQZm9yemhlaW0gIDc1MTc3Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS0zQSAgIChoZXgpCQlTSElOQk9SQU0KLTAwMTEzQSAgICAgKGJhc2UgMTYpCQlTSElOQk9SQU0KLQkJCQk0RiBEQUhOV09STEQgQlVJTERJTkcsIDE1NC0xMSBTQU1TVU5HLURPTkcKLQkJCQlLQU5HTkFNLUdVLAotCQkJCVNFT1VMICAxMzUtODc5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLTNCICAgKGhleCkJCU1pY3JvbmV0IENvbW11bmljYXRpb25zIEluYy4KLTAwMTEzQiAgICAgKGJhc2UgMTYpCQlNaWNyb25ldCBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJMTJGLTEsIE5vLiAxMDAsIE1pbi1DaHVhbiBSb2FkCi0JCQkJSHNpbi1UaWVuIFRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTNDICAgKGhleCkJCU1pY3JvbmFzIEdtYkgKLTAwMTEzQyAgICAgKGJhc2UgMTYpCQlNaWNyb25hcyBHbWJICi0JCQkJSGFucy1CdW50ZS1TdHJhc3NlIDE5Ci0JCQkJRnJlaWJ1cmcgQlcgRC03OTEwOAotCQkJCUdFUk1BTlkKLQotMDAtMTEtM0QgICAoaGV4KQkJS04gU09MVEVDIENPLixMVEQuCi0wMDExM0QgICAgIChiYXNlIDE2KQkJS04gU09MVEVDIENPLixMVEQuCi0JCQkJOThCLTVMIE5BTURPTkcgSU5EVVNUUklBTCBDT01QTEVYICM2NjItNCBHT0pBTi1ET05HCi0JCQkJTkFNRE9ORy1HVSBJTkNIRU9OIDQwNS04MTgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtM0UgICAoaGV4KQkJSkwgQ29ycG9yYXRpb24KLTAwMTEzRSAgICAgKGJhc2UgMTYpCQlKTCBDb3Jwb3JhdGlvbgotCQkJCTQtNC0xNyBTVUdFCi0JCQkJVEFNQS1LVQotCQkJCUtBV0FTQUtJLUNJVFkgS0FOQUdBV0EtS0VOIDIxNC0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMTEtM0YgICAoaGV4KQkJQWxjYXRlbCBESQotMDAxMTNGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgREkKLQkJCQlaSSBsYXZvaXNpZXIKLQkJCQlFVSBOb3JtYW5kaWUgNzYyNjAKLQkJCQlGUkFOQ0UKLQotMDAtMTEtNDAgICAoaGV4KQkJTmFub21ldHJpY3MgSW5jLgotMDAxMTQwICAgICAoYmFzZSAxNikJCU5hbm9tZXRyaWNzIEluYy4KLQkJCQkyNTAgSGVyemJlcmcgUmQuCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDJBMQotCQkJCUNBTkFEQQotCi0wMC0xMS00MSAgIChoZXgpCQlHb29kTWFuIENvcnBvcmF0aW9uCi0wMDExNDEgICAgIChiYXNlIDE2KQkJR29vZE1hbiBDb3Jwb3JhdGlvbgotCQkJCTJGLCBOby41NzIsIFNlYy4xLCBNaW5nLVNoZW5nIE4gUm9hZCwgS3dlaS1TaGFuIEhzaWFuZwotCQkJCVRhb3l1YW4gSHNpZW4gIDMzMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS00MiAgIChoZXgpCQllLVNNQVJUQ09NICBJTkMuCi0wMDExNDIgICAgIChiYXNlIDE2KQkJZS1TTUFSVENPTSAgSU5DLgotCQkJCTNGLCAyMTYsIEltb2stRG9uZwotCQkJCUphbmdBbi1LdQotCQkJCVN1d29uIEt5b3VuZ2tpLURvIDQ0MC0zMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtNDMgICAoaGV4KQkJREVMTCBJTkMuCi0wMDExNDMgICAgIChiYXNlIDE2KQkJREVMTCBJTkMuCi0JCQkJT25lIERlbGwgV2F5Ci0JCQkJUlI1IE1TLTg1NDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS00NCAgIChoZXgpCQlBc3N1cmFuY2UgVGVjaG5vbG9neSBDb3JwCi0wMDExNDQgICAgIChiYXNlIDE2KQkJQXNzdXJhbmNlIFRlY2hub2xvZ3kgQ29ycAotCQkJCTYzMDQgUG90b21hYyBBdmVudWUKLQkJCQlBbGV4YW5kcmlhIFZpcmdpbmlhIDIyMzA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS00NSAgIChoZXgpCQlWYWx1ZVBvaW50IE5ldHdvcmtzCi0wMDExNDUgICAgIChiYXNlIDE2KQkJVmFsdWVQb2ludCBOZXR3b3JrcwotCQkJCTM1MCBUb3duc2VuZCBTdCBTdGUgMzIwCi0JCQkJU2FuIEZyYW5jaXNjbywgQ0EgOTQxMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTQ2ICAgKGhleCkJCVRlbGVjYXJkLVByaWJvciBMdGQKLTAwMTE0NiAgICAgKGJhc2UgMTYpCQlUZWxlY2FyZC1Qcmlib3IgTHRkCi0JCQkJTHVzdGRvcmZza2F5YSBkb3JvZ2EsIDE2MgotCQkJCU9kZXNzYSAgNjUxMTUKLQkJCQlVS1JBSU5FCi0KLTAwLTExLTQ3ICAgKGhleCkJCVNlY29tLUluZHVzdHJ5IGNvLkxURC4KLTAwMTE0NyAgICAgKGJhc2UgMTYpCQlTZWNvbS1JbmR1c3RyeSBjby5MVEQuCi0JCQkJRnVrdW8ga2FLdXJhbW90byBJY2hpaG9ua2kgMy0zCi0JCQkJU2hpcm9pc2hpIE1peWFnaSA5ODktMDI5NQotCQkJCUpBUEFOCi0KLTAwLTExLTQ4ICAgKGhleCkJCVByb2xvbiBDb250cm9sIFN5c3RlbXMKLTAwMTE0OCAgICAgKGJhc2UgMTYpCQlQcm9sb24gQ29udHJvbCBTeXN0ZW1zCi0JCQkJSGVyc3RlZHZlc3RlcnN0cmFlZGUgNTYKLQkJCQlBbGJlcnRzbHVuZCAgREstMjYyMAotCQkJCURFTk1BUksKLQotMDAtMTEtNDkgICAoaGV4KQkJUHJvbGlwaGl4IEluYy4KLTAwMTE0OSAgICAgKGJhc2UgMTYpCQlQcm9saXBoaXggSW5jLgotCQkJCTY2IFRhZG11Y2sgUmQuCi0JCQkJV2VzdGZvcmQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTRBICAgKGhleCkJCUtBWUFCQSBJTkRVU1RSWSBDbywuTHRkLgotMDAxMTRBICAgICAoYmFzZSAxNikJCUtBWUFCQSBJTkRVU1RSWSBDbywuTHRkLgotCQkJCVdvcmxkIFRyYWRlIENlbnRlciBCbGRnLiwgNC0xCi0JCQkJSGFtYW1hdHN1LWNobyAyLWNob21lLAotCQkJCU1pbmF0by1rdSwgVG9reW8gTWV0by4gMTA1LTYxMTEKLQkJCQlKQVBBTgotCi0wMC0xMS00QiAgIChoZXgpCQlGcmFuY290eXAtUG9zdGFsaWEgR21iSAotMDAxMTRCICAgICAoYmFzZSAxNikJCUZyYW5jb3R5cC1Qb3N0YWxpYSBHbWJICi0JCQkJVHJpZnR3ZWcgMjEtMjYKLQkJCQlCaXJrZW53ZXJkZXIgQnJhbmRlbmJ1cmcgMTY1NDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLTRDICAgKGhleCkJCWNhZmZlaW5hIGFwcGxpZWQgcmVzZWFyY2ggbHRkLgotMDAxMTRDICAgICAoYmFzZSAxNikJCWNhZmZlaW5hIGFwcGxpZWQgcmVzZWFyY2ggbHRkLgotCQkJCTEyNSBiYWlyZCBhdmUKLQkJCQljb2NocmFuZSBhbGJlcnRhIHQ0YyAxYzcKLQkJCQlDQU5BREEKLQotMDAtMTEtNEQgICAoaGV4KQkJQXRzdW1pIEVsZWN0cmljIENvLixMVEQuCi0wMDExNEQgICAgIChiYXNlIDE2KQkJQXRzdW1pIEVsZWN0cmljIENvLixMVEQuCi0JCQkJNC0yLTIgU2hpbi1NaXlha29kYSwgS2l0YS1rdQotCQkJCUhhbWFtYXRzdSBTaGl6dW9rYSA0MzEtMjEwMwotCQkJCUpBUEFOCi0KLTAwLTExLTRFICAgKGhleCkJCTY5MDg4NSBPbnRhcmlvIEluYy4KLTAwMTE0RSAgICAgKGJhc2UgMTYpCQk2OTA4ODUgT250YXJpbyBJbmMuCi0JCQkJMjA1IEFubmFnZW0gQmx2ZC4KLQkJCQlNaXNzaXNzYXVnYSBPbnRhcmlvIEw1VCAyVjEKLQkJCQlDQU5BREEKLQotMDAtMTEtNEYgICAoaGV4KQkJVVMgRGlnaXRhbCBUZWxldmlzaW9uLCBJbmMKLTAwMTE0RiAgICAgKGJhc2UgMTYpCQlVUyBEaWdpdGFsIFRlbGV2aXNpb24sIEluYwotCQkJCTU4MDcgTi4gQW5kcmV3cyBXYXkKLQkJCQlGb3J0IExhdWRlcmRhbGUgRkwgMzMzMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTUwICAgKGhleCkJCUJlbGtpbiBDb3Jwb3JhdGlvbgotMDAxMTUwICAgICAoYmFzZSAxNikJCUJlbGtpbiBDb3Jwb3JhdGlvbgotCQkJCTUwMSBXZXN0IFdhbG51dCBTdHJlZXQKLQkJCQlDb21wdG9uIENBIDkwMjIwLTUyMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTUxICAgKGhleCkJCU15a290cm9ueAotMDAxMTUxICAgICAoYmFzZSAxNikJCU15a290cm9ueAotCQkJCTM1OSBWYW4gTmVzcyBXYXkKLQkJCQlUb3JyYW5jZSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNTIgICAoaGV4KQkJRWlkc3ZvbGwgRWxlY3Ryb25pY3MgQVMKLTAwMTE1MiAgICAgKGJhc2UgMTYpCQlFaWRzdm9sbCBFbGVjdHJvbmljcyBBUwotCQkJCU5lZHJlIFZpbGJlcmcgdmVpIDgKLQkJCQlFaWRzdm9sbCAgTi0yMDgwCi0JCQkJTk9SV0FZCi0KLTAwLTExLTUzICAgKGhleCkJCVRyaWRlbnQgVGVrLCBJbmMuCi0wMDExNTMgICAgIChiYXNlIDE2KQkJVHJpZGVudCBUZWssIEluYy4KLQkJCQk4MDQxIENlc3NuYSBBdmUgIzIwMAotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNTQgICAoaGV4KQkJV2VicHJvIFRlY2hub2xvZ2llcyBJbmMuCi0wMDExNTQgICAgIChiYXNlIDE2KQkJV2VicHJvIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMkYtMSwgTm8uODEsIFNlYy4gNCwgQ2h1bmdjaGluZyBOLiBSZC4sCi0JCQkJU2hybGluIENoaXUKLQkJCQlUYWlwZWkgIDExMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtNTUgICAoaGV4KQkJU2V2aXMgU3lzdGVtcwotMDAxMTU1ICAgICAoYmFzZSAxNikJCVNldmlzIFN5c3RlbXMKLQkJCQkyODA1IE4gRGFsbGFzIFBhcmt3YXksIFNURSA1MzAKLQkJCQlQbGFubyBUZXhhcyA3NTA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNTYgICAoaGV4KQkJUGhhcm9zIFN5c3RlbXMgTloKLTAwMTE1NiAgICAgKGJhc2UgMTYpCQlQaGFyb3MgU3lzdGVtcyBOWgotCQkJCUxldmVsIDMsIDEyMyBDYXJsdG9uIEdvcmUgUm9hZAotCQkJCUdyYWZ0b24KLQkJCQlBdWNrbGFuZCBOWiAxMDAxCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMTEtNTcgICAoaGV4KQkJT0YgTmV0d29ya3MgQ28uLCBMdGQuCi0wMDExNTcgICAgIChiYXNlIDE2KQkJT0YgTmV0d29ya3MgQ28uLCBMdGQuCi0JCQkJMS0zLUNiNCBOYWthc2UsIE1paGFtYS1rdQotCQkJCUNoaWJhIENpdHkgQ2hpYmEgMjYxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xMS01OCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMTE1OCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xMS01OSAgIChoZXgpCQlNQVRJU1NFIE5FVFdPUktTIElOQwotMDAxMTU5ICAgICAoYmFzZSAxNikJCU1BVElTU0UgTkVUV09SS1MgSU5DCi0JCQkJMzM5IE4gQkVSTkFSRE8gQVZFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNUEgICAoaGV4KQkJSXZvY2xhciBWaXZhZGVudCBBRwotMDAxMTVBICAgICAoYmFzZSAxNikJCUl2b2NsYXIgVml2YWRlbnQgQUcKLQkJCQlCZW5kZXJlcnN0cmFzc2UgMgotCQkJCVNjaGFhbiAgOTQ5NAotCQkJCUxJRUNIVEVOU1RFSU4KLQotMDAtMTEtNUIgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0wMDExNUIgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uIChFQ1MpCi0JCQkJTm8uMjIsIEFsbGV5IDM4LCBMYW5lIDkxLCBTZWMuIDEsIE5laSBIdSBSb2FkLAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS01QyAgIChoZXgpCQlDaXNjbwotMDAxMTVDICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTVEICAgKGhleCkJCUNpc2NvCi0wMDExNUQgICAgIChiYXNlIDE2KQkJQ2lzY28KLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNUUgICAoaGV4KQkJUHJvTWluZW50IERvc2llcnRlY2huaWsgR21iSAotMDAxMTVFICAgICAoYmFzZSAxNikJCVByb01pbmVudCBEb3NpZXJ0ZWNobmlrIEdtYkgKLQkJCQlJbSBTY2h1bWFjaGVyZ2V3YW5uIDUtMTEKLQkJCQlIZWlkZWxiZXJnIEJXIDY5MTIzCi0JCQkJR0VSTUFOWQotCi0wMC0xMS01RiAgIChoZXgpCQlJVFggU2VjdXJpdHkgQ28uLCBMdGQuCi0wMDExNUYgICAgIChiYXNlIDE2KQkJSVRYIFNlY3VyaXR5IENvLiwgTHRkLgotCQkJCTlGIEtvbG9uIERpZ2l0YWwgVG93ZXIgQXN0b24gQmxkZy4gNTA1LTE0Ci0JCQkJR2FzYW4tZG9uZyBHZXVtY2hlb24tZ3UgU0VPVUwgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS02MCAgIChoZXgpCQlBUlRESU8gQ29tcGFueSBDby4sIExURAotMDAxMTYwICAgICAoYmFzZSAxNikJCUFSVERJTyBDb21wYW55IENvLiwgTFRECi0JCQkJN3RoIEZMLi4sIE5vLjQ3NiwgTWluLUh1IFJELiwgSHNpbi1DaHUsCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS02MSAgIChoZXgpCQlOZXRTdHJlYW1zLCBMTEMKLTAwMTE2MSAgICAgKGJhc2UgMTYpCQlOZXRTdHJlYW1zLCBMTEMKLQkJCQkzNjAwIFcuIFBhcm1lciBMYW5lCi0JCQkJU3VpdGUgMTAwCi0JCQkJQXVzdGluIFRYIDc4NzI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS02MiAgIChoZXgpCQlTVEFSIE1JQ1JPTklDUyBDTy4sTFRELgotMDAxMTYyICAgICAoYmFzZSAxNikJCVNUQVIgTUlDUk9OSUNTIENPLixMVEQuCi0JCQkJNTM2IFNoaW1penVuYW5hdHN1c2hpbnlhCi0JCQkJU2hpenVva2EgIDQyNC0wMDY2Ci0JCQkJSkFQQU4KLQotMDAtMTEtNjMgICAoaGV4KQkJU1lTVEVNIFNQQSBERVBULiBFTEVDVFJPTklDUwotMDAxMTYzICAgICAoYmFzZSAxNikJCVNZU1RFTSBTUEEgREVQVC4gRUxFQ1RST05JQ1MKLQkJCQlWSUEgR0hJQVJPTEEgVkVDQ0hJQSA3MwotCQkJCUZJT1JBTk8gTU9ERU5FU0UgTU9ERU5BIEktNDEwNDIKLQkJCQlJVEFMWQotCi0wMC0xMS02NCAgIChoZXgpCQlBQ0FSRCBUZWNobm9sb2d5IENvcnAuCi0wMDExNjQgICAgIChiYXNlIDE2KQkJQUNBUkQgVGVjaG5vbG9neSBDb3JwLgotCQkJCTZGIE5vLjc4IFNlYzEgS3dhbmcgRnUgUm9hZCwgU2FuY2h1bmcsCi0JCQkJVGFpcGVpIEhzaWVuICAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTY1ICAgKGhleCkJCVpueXggTmV0d29ya3MKLTAwMTE2NSAgICAgKGJhc2UgMTYpCQlabnl4IE5ldHdvcmtzCi0JCQkJNDg0MjEgTWlsbW9udCBEcml2ZQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTY2ICAgKGhleCkJCVRhZWxpbSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMTE2NiAgICAgKGJhc2UgMTYpCQlUYWVsaW0gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJMTk2LTUsIEFOWUFORzctRE9ORyBNQU5BTi1HVQotCQkJCUFOWUFORy1TSSBLWVVHR0ktRE8gNDMwLTgxNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS02NyAgIChoZXgpCQlJbnRlZ3JhdGVkIFN5c3RlbSBTb2x1dGlvbiBDb3JwLgotMDAxMTY3ICAgICAoYmFzZSAxNikJCUludGVncmF0ZWQgU3lzdGVtIFNvbHV0aW9uIENvcnAuCi0JCQkJM0YsIE5vLiAyLTEsIGluZHVzdHJ5IEVhc3QgUmQuLCBJCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTY4ICAgKGhleCkJCUhvbWVMb2dpYyBMTEMKLTAwMTE2OCAgICAgKGJhc2UgMTYpCQlIb21lTG9naWMgTExDCi0JCQkJMTAwIEhvb2RzIExhbmUKLQkJCQlNYXJibGVoZWFkIE1BIDAxOTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS02OSAgIChoZXgpCQlFTVMgU2F0Y29tCi0wMDExNjkgICAgIChiYXNlIDE2KQkJRU1TIFNhdGNvbQotCQkJCUdyZWVuIExhbmUKLQkJCQlBc2hjaHVyY2gKLQkJCQlUZXdrZXNidXJ5IEdsb3VjZXN0ZXJzaGlyZSBHTDIwIDhIRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLTZBICAgKGhleCkJCURvbW8gTHRkCi0wMDExNkEgICAgIChiYXNlIDE2KQkJRG9tbyBMdGQKLQkJCQlXZXNzZXggSG91c2UKLQkJCQlVcHBlciBNYXJrZXQgU3RyZWV0Ci0JCQkJRWFzdGxlaWdoIEhhbXBzaGlyZSBTTzUwIDlGRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLTZCICAgKGhleCkJCURpZ2l0YWwgRGF0YSBDb21tdW5pY2F0aW9ucyBBc2lhIENvLixMdGQKLTAwMTE2QiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIERhdGEgQ29tbXVuaWNhdGlvbnMgQXNpYSBDby4sTHRkCi0JCQkJOEYsTm8uNDEsTGFuZSAyMjEsS2FuZy1DaGllbiBSRC4sTmVpLUh1IERpcy4sCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtNkMgICAoaGV4KQkJTmFud2FuZyBNdWx0aW1lZGlhIEluYy4sTHRkCi0wMDExNkMgICAgIChiYXNlIDE2KQkJTmFud2FuZyBNdWx0aW1lZGlhIEluYy4sTHRkCi0JCQkJRmxvb3IgMTIsVGlhbnl1YW4gQmxkZyxXZW5zYW4gUmQjNTA4Ci0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDEzCi0JCQkJQ0hJTkEKLQotMDAtMTEtNkQgICAoaGV4KQkJQW1lcmljYW4gVGltZSBhbmQgU2lnbmFsCi0wMDExNkQgICAgIChiYXNlIDE2KQkJQW1lcmljYW4gVGltZSBhbmQgU2lnbmFsCi0JCQkJMTQwIFRoaXJkIFN0LiBTb3V0aAotCQkJCURhc3NlbCBNTiA1NTMyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNkUgICAoaGV4KQkJUGVQTGluayBMdGQuCi0wMDExNkUgICAgIChiYXNlIDE2KQkJUGVQTGluayBMdGQuCi0JCQkJMTcvRi4sIFBhcmsgQnVpbGRpbmcKLQkJCQk0NzYgQ2FzdGxlIFBlYWsgUm9hZAotCQkJCUNoZXVuZyBTaGEgV2FuIEtvd2xvb24gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTExLTZGICAgKGhleCkJCU5ldGZvcnlvdSBDby4sIExURC4KLTAwMTE2RiAgICAgKGJhc2UgMTYpCQlOZXRmb3J5b3UgQ28uLCBMVEQuCi0JCQkJMTEyMS00IDNGLCAgS3dhbnlhbmctZG9uZywgRG9uZ2FuLWd1Ci0JCQkJQW55YW5nLXNpIEt5dW5nZ2ktZG8gNDMxLTgwNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS03MCAgIChoZXgpCQlHU0MgU1JMCi0wMDExNzAgICAgIChiYXNlIDE2KQkJR1NDIFNSTAotCQkJCVZJQSBQRVIgVklNRVJDQVRFCi0JCQkJVVNNQVRFIFZFTEFURSBNSUxBTk8gMjAwNDAKLQkJCQlJVEFMWQotCi0wMC0xMS03MSAgIChoZXgpCQlERVhURVIgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMTE3MSAgICAgKGJhc2UgMTYpCQlERVhURVIgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyRiBTaGluc3VuZyBCL0QgNDA0LTEKLQkJCQlCYWNraHl1bi1Eb25nLCBCdW5kYW5nLUd1Ci0JCQkJU3VuZ25hbSBHeXVuZ2dpIDQ2My00MjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtNzIgICAoaGV4KQkJQ09UUk9OIENPUlBPUkFUSU9OCi0wMDExNzIgICAgIChiYXNlIDE2KQkJQ09UUk9OIENPUlBPUkFUSU9OCi0JCQkJMTJGTCxOby4xNTAsU2VjLjQsQ2hlbmctRGUgUmQKLQkJCQlTaGlobGluIERpc3RyaWN0Ci0JCQkJVGFpcGVpIENpdHkgIDExMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtNzMgICAoaGV4KQkJU01BUlQgU3RvcmFnZSBTeXN0ZW1zCi0wMDExNzMgICAgIChiYXNlIDE2KQkJU01BUlQgU3RvcmFnZSBTeXN0ZW1zCi0JCQkJMzk4NzAgRXVyZWthIERyaXZlCi0JCQkJTmV3YXJrIENBIDk0NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS03NCAgIChoZXgpCQlXaWJodSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTE3NCAgICAgKGJhc2UgMTYpCQlXaWJodSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxNTYxIEJsYWNraGF3ayBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtNzUgICAoaGV4KQkJUGF0aFNjYWxlLCBJbmMuCi0wMDExNzUgICAgIChiYXNlIDE2KQkJUGF0aFNjYWxlLCBJbmMuCi0JCQkJNDc3IE4uIE1hdGhpbGRhIEF2ZS4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTc2ICAgKGhleCkJCUludGVsbGFtYmRhIFN5c3RlbXMsIEluYy4KLTAwMTE3NiAgICAgKGJhc2UgMTYpCQlJbnRlbGxhbWJkYSBTeXN0ZW1zLCBJbmMuCi0JCQkJNDg1MDEgV2FybSBTcHJpbmdzIEJsdmQsICMxMDcKLQkJCQlGcmVtb250IENhbGlmb3JuaWEgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTc3ICAgKGhleCkJCUNvYXhpYWwgTmV0d29ya3MsIEluYy4KLTAwMTE3NyAgICAgKGJhc2UgMTYpCQlDb2F4aWFsIE5ldHdvcmtzLCBJbmMuCi0JCQkJNDYzMyBPbGQgSXJvbnNpZGVzIERyCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTc4ICAgKGhleCkJCUNoaXJvbiBUZWNobm9sb2d5IEx0ZAotMDAxMTc4ICAgICAoYmFzZSAxNikJCUNoaXJvbiBUZWNobm9sb2d5IEx0ZAotCQkJCVd5dm9scyBDb3VydAotCQkJCVN3YWxsb3dmaWVsZAotCQkJCVJlYWRpbmcgQmVya3NoaXJlIFJHNyAxV1kKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS03OSAgIChoZXgpCQlTaW5ndWxhciBUZWNobm9sb2d5IENvLiBMdGQuCi0wMDExNzkgICAgIChiYXNlIDE2KQkJU2luZ3VsYXIgVGVjaG5vbG9neSBDby4gTHRkLgotCQkJCTIxRiwgTm8uMzcsIFNlYy4yLCBTYW4gTWluIFJkLiwKLQkJCQlQYW4gQ2hpYW8gQ2l0eSwgVGFpcGVpIENvdW50eQotCQkJCVRhaXBlaSAgMjIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS03QSAgIChoZXgpCQlTaW5naW0gSW50ZXJuYXRpb25hbCBDb3JwLgotMDAxMTdBICAgICAoYmFzZSAxNikJCVNpbmdpbSBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJNkYtMiwgTm8uIDE5MCwgU2VjLiAyIENodW5nIEhzaW4gUm9hZCwKLQkJCQlIc2luIFRpZW4gQ2l0eSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS03QiAgIChoZXgpCQlCw7xjaGkgTGFib3J0ZWNobmlrIEFHCi0wMDExN0IgICAgIChiYXNlIDE2KQkJQsO8Y2hpIExhYm9ydGVjaG5payBBRwotCQkJCU1laWVyc2VnZ3N0cmFzc2UgNDAKLQkJCQlGbGF3aWwgOTIzMCBTRwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTExLTdDICAgKGhleCkJCWUtenkubmV0Ci0wMDExN0MgICAgIChiYXNlIDE2KQkJZS16eS5uZXQKLQkJCQlTbWlybmlzIDE0Ci0JCQkJVmVyaWEgSW1hdGhpYSA1OTEwMAotCQkJCUdSRUVDRQotCi0wMC0xMS03RCAgIChoZXgpCQlaTUQgQW1lcmljYSwgSW5jLgotMDAxMTdEICAgICAoYmFzZSAxNikJCVpNRCBBbWVyaWNhLCBJbmMuCi0JCQkJMTUzNzMgSW5ub3ZhdGlvbiBEcml2ZQotCQkJCVN1aXRlIDExNQotCQkJCVNhbiBEaWVvIENBIDkyMTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS03RSAgIChoZXgpCQlQcm9nZW55IEluYy4KLTAwMTE3RSAgICAgKGJhc2UgMTYpCQlQcm9nZW55IEluYy4KLQkJCQkxNDA3IEJhcmNsYXkgQm91bGV2YXJkCi0JCQkJQnVmZmFsbyBHcm92ZSBJTCA2MDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtN0YgICAoaGV4KQkJTmVvdHVuZSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uLC5MVEQKLTAwMTE3RiAgICAgKGJhc2UgMTYpCQlOZW90dW5lIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24sLkxURAotCQkJCTE3MDMjICBOby43MzcgIE5vcnRoIG9mIENhb3hpIFJkLgotCQkJCVNoYW5naGFpICAyMDAwMzAKLQkJCQlDSElOQQotCi0wMC0xMS04MCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxMTgwICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtODEgICAoaGV4KQkJSW50ZXJFbmVyZ3kgQ28uTHRkLAotMDAxMTgxICAgICAoYmFzZSAxNikJCUludGVyRW5lcmd5IENvLkx0ZCwKLQkJCQk0RiBTaGlueW9rb2hhbWEgQm9zZWkgQmxkZy4KLQkJCQkzLTIwLTEzIFNoaW55b2tvaGFtYSBLb2hob2t1LWt1Ci0JCQkJWW9rb2hhbWEgY2l0eSBLYW5hZ2F3YSAyMjItMDAzMwotCQkJCUpBUEFOCi0KLTAwLTExLTgyICAgKGhleCkJCUlNSSBOb3JncmVuIEx0ZAotMDAxMTgyICAgICAoYmFzZSAxNikJCUlNSSBOb3JncmVuIEx0ZAotCQkJCVBPIEJveCAyMgotCQkJCUVhc3Rlcm4gQXZlbnVlCi0JCQkJTGljaGZpZWxkIFN0YWZmb3Jkc2hpcmUgV1MxMyA2U0IKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS04MyAgIChoZXgpCQlEYXRhbG9naWMgTW9iaWxlLCBJbmMuCi0wMDExODMgICAgIChiYXNlIDE2KQkJRGF0YWxvZ2ljIE1vYmlsZSwgSW5jLgotCQkJCTE1MDUgV2VzdGVjIERyaXZlCi0JCQkJRXVnZW5lIE9SIDk3NDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS04NCAgIChoZXgpCQlIdW1vIExhYm9yYXRvcnksTHRkLgotMDAxMTg0ICAgICAoYmFzZSAxNikJCUh1bW8gTGFib3JhdG9yeSxMdGQuCi0JCQkJTmlzaGlvZ2ktS2l0YSA1LTE5LTExCi0JCQkJU3VnaW5hbWkta3UgVG9reW8gMTY3LTAwNDIKLQkJCQlKQVBBTgotCi0wMC0xMS04NSAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAxMTg1ICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkgU291dGgKLQkJCQlNUzA3MDQwNQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTg2ICAgKGhleCkJCVByaW1lIFN5c3RlbXMsIEluYy4KLTAwMTE4NiAgICAgKGJhc2UgMTYpCQlQcmltZSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTYyNjctMzMzCi0JCQkJU3V3YS1ndW4gSGFyYS1tdXJhIE5hZ2FubyAzOTEtMDEwMAotCQkJCUpBUEFOCi0KLTAwLTExLTg3ICAgKGhleCkJCUNhdGVnb3J5IFNvbHV0aW9ucywgSW5jCi0wMDExODcgICAgIChiYXNlIDE2KQkJQ2F0ZWdvcnkgU29sdXRpb25zLCBJbmMKLQkJCQkxMDIxIFcuIEFkYW1zIFN0Ci0JCQkJQ2hpY2FnbyBJTCA2MDYwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtODggICAoaGV4KQkJRW50ZXJhc3lzCi0wMDExODggICAgIChiYXNlIDE2KQkJRW50ZXJhc3lzCi0JCQkJMzUgSW5kdXN0cmlhbCBXYXkKLQkJCQlSb2NoZXN0ZXIgTkggMDM4NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTg5ICAgKGhleCkJCUFlcm90ZWNoIEluYwotMDAxMTg5ICAgICAoYmFzZSAxNikJCUFlcm90ZWNoIEluYwotCQkJCTEwMSBaZXRhIERyaXZlCi0JCQkJUGl0dHNidXJnaCBQQSAxNTIzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtOEEgICAoaGV4KQkJVmlld3RyYW4gVGVjaG5vbG9neSBMaW1pdGVkCi0wMDExOEEgICAgIChiYXNlIDE2KQkJVmlld3RyYW4gVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJMy9GLCBSMi1BIGJ1aWxpZGluZywgSGlnaCBUZWNoIEluZHVzdHJpYWwgUGFyaywKLQkJCQlOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xMS04QiAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudCwgRW50ZXJwcmlzZSBCdXNpbmVzcyBHcm91cAotMDAxMThCICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50LCBFbnRlcnByaXNlIEJ1c2luZXNzIEdyb3VwCi0JCQkJMjY4MDEgV2VzdCBBZ291cmEgUm9hZAotCQkJCUNhbGFiYXNhcyBDQSA5MTMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtOEMgICAoaGV4KQkJTWlzc291cmkgRGVwYXJ0bWVudCBvZiBUcmFuc3BvcnRhdGlvbgotMDAxMThDICAgICAoYmFzZSAxNikJCU1pc3NvdXJpIERlcGFydG1lbnQgb2YgVHJhbnNwb3J0YXRpb24KLQkJCQlQLk8uIEJveCAyNzAKLQkJCQlKZWZmZXJzb24gQ2l0eSBNaXNzb3VyaSA2NTEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtOEQgICAoaGV4KQkJSGFuY2hhbmcgU3lzdGVtIENvcnAuCi0wMDExOEQgICAgIChiYXNlIDE2KQkJSGFuY2hhbmcgU3lzdGVtIENvcnAuCi0JCQkJNzE1LTExIEJvZXVuLVRvd24sIEUtZG9uZywgU2FuZ3Jvay1ndSwKLQkJCQlBbnNhbi1zaGkgS3l1bmdraS1EbyA0MjUtODU3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLThFICAgKGhleCkJCUhhbHl0ZWNoIE1hY2UKLTAwMTE4RSAgICAgKGJhc2UgMTYpCQlIYWx5dGVjaCBNYWNlCi0JCQkJVW5pdCAxMSwgMjIgTGV4aW5ndG9uIERyaXZlCi0JCQkJTm9yd2VzdCBCdXNpbmVzcyBQYXJrCi0JCQkJQmF1bGtoYW0gSGlsbHMgTlNXIDIxNTMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTEtOEYgICAoaGV4KQkJRVVURUNIIElOU1RSVU1FTlRTIFBURS4gTFRELgotMDAxMThGICAgICAoYmFzZSAxNikJCUVVVEVDSCBJTlNUUlVNRU5UUyBQVEUuIExURC4KLQkJCQlCbGsgNTUsQXllciBSYWphaCBDcmVzY2VudCwgIzA0LTE2LzI0LgotCQkJCTEzOTk0OQotCQkJCVNJTkdBUE9SRQotCi0wMC0xMS05MCAgIChoZXgpCQlEaWdpdGFsIERlc2lnbiBDb3Jwb3JhdGlvbgotMDAxMTkwICAgICAoYmFzZSAxNikJCURpZ2l0YWwgRGVzaWduIENvcnBvcmF0aW9uCi0JCQkJMzgyMCBWZW50dXJhIERyaXZlCi0JCQkJQXJsaW5ndG9uIEhlaWdodHMgSUwgNjAwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLTkxICAgKGhleCkJCUNUUy1DbGltYSBUZW1wZXJhdHVyIFN5c3RlbWUgR21iSAotMDAxMTkxICAgICAoYmFzZSAxNikJCUNUUy1DbGltYSBUZW1wZXJhdHVyIFN5c3RlbWUgR21iSAotCQkJCUxvdHplbsOkY2tlciAyMQotCQkJCUhlY2hpbmdlbiBCYWRlbnfDvHJ0dGVtYmVyZyA3MjM3OQotCQkJCUdFUk1BTlkKLQotMDAtMTEtOTIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMTkyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtOTMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMTkzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1tLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtOTQgICAoaGV4KQkJQ2hpIE1laSBDb21tdW5pY2F0aW9uIFN5c3RlbXMsIEluYy4KLTAwMTE5NCAgICAgKGJhc2UgMTYpCQlDaGkgTWVpIENvbW11bmljYXRpb24gU3lzdGVtcywgSW5jLgotCQkJCTExRiwgTm8uMzksIENodW5nIEh1YSBSRC4gU2VjIDEKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtOTUgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDExOTUgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJMkYgTm8uIDIzMy0yLCBQYW8tQ2hpYW8gUm9hZAotCQkJCUhzaW4tVGllbgotCQkJCVRhaXBlaSBUYWl3YW4gCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS05NiAgIChoZXgpCQlBY3R1YWxpdHkgU3lzdGVtcywgSW5jLgotMDAxMTk2ICAgICAoYmFzZSAxNikJCUFjdHVhbGl0eSBTeXN0ZW1zLCBJbmMuCi0JCQkJMjUgQ29ycG9yYXRlIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJQnVybGluZ3RvbiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtOTcgICAoaGV4KQkJTW9uaXRvcmluZyBUZWNobm9sb2dpZXMgTGltaXRlZAotMDAxMTk3ICAgICAoYmFzZSAxNikJCU1vbml0b3JpbmcgVGVjaG5vbG9naWVzIExpbWl0ZWQKLQkJCQkxNCBBdHRlbmJ1cnlzIFBhcmsgRXN0YXRlCi0JCQkJQXR0ZW5idXJ5cyBMYW5lCi0JCQkJVGltcGVybGV5IENoZXNoaXJlIFdBMTQgNVFFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtOTggICAoaGV4KQkJUHJpc20gTWVkaWEgUHJvZHVjdHMgTGltaXRlZAotMDAxMTk4ICAgICAoYmFzZSAxNikJCVByaXNtIE1lZGlhIFByb2R1Y3RzIExpbWl0ZWQKLQkJCQlXaWxsaWFtIEphbWVzIEhvdXNlCi0JCQkJQ293bGV5IFJvYWQKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0I0IDBXWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLTk5ICAgKGhleCkJCTJ3Y29tIEdtYkgKLTAwMTE5OSAgICAgKGJhc2UgMTYpCQkyd2NvbSBHbWJICi0JCQkJU2NobGVzd2lnZXIgU3RyYXNzZSA4NQotCQkJCUZsZW5zYnVyZyAgMjQ5NDEKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLTlBICAgKGhleCkJCUFsa2VyaWEgc3JsCi0wMDExOUEgICAgIChiYXNlIDE2KQkJQWxrZXJpYSBzcmwKLQkJCQkyNSBWaWEgR2l1bnRpbmkKLQkJCQlOYXZhY2NoaW8gKFBJKSAgSS01NjAyMwotCQkJCUlUQUxZCi0KLTAwLTExLTlCICAgKGhleCkJCVRlbGVzeW5lcmd5IFJlc2VhcmNoIEluYy4KLTAwMTE5QiAgICAgKGJhc2UgMTYpCQlUZWxlc3luZXJneSBSZXNlYXJjaCBJbmMuCi0JCQkJNEYsIE5vLiA0OSwgVHVuZyBIc2luIFJkLiwKLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtOUMgICAoaGV4KQkJRVAmVCBFbmVyZ3kKLTAwMTE5QyAgICAgKGJhc2UgMTYpCQlFUCZUIEVuZXJneQotCQkJCTM1OCBFYXN0ZXJuIFZhbGxleSBXYXkKLQkJCQlDaGF0c3dvb2QKLQkJCQlTeWRuZXkgTlNXIDIwNjcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTEtOUQgICAoaGV4KQkJRGlnaW5mbyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDExOUQgICAgIChiYXNlIDE2KQkJRGlnaW5mbyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMTBGbC4sIE5vLjgyLCBGdSBIc2luZyBOb3J0aCBSb2FkCi0JCQkJVGFpcGVpICAxMDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLTlFICAgKGhleCkJCVNvbGVjdHJvbiBCcmF6aWwKLTAwMTE5RSAgICAgKGJhc2UgMTYpCQlTb2xlY3Ryb24gQnJhemlsCi0JCQkJUm9kLiBDYW1waW5hcyBNb2dpIE1pcmltCi0JCQkJQmFpcnJvIFJvc2VpcmEKLQkJCQlKYWd1YXJpdW5hIFNQIDEzODIwLTAwMAotCQkJCUJSQVpJTAotCi0wMC0xMS05RiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxMTlGICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xMS1BMCAgIChoZXgpCQlWdGVjaCBFbmdpbmVlcmluZyBDYW5hZGEgTHRkCi0wMDExQTAgICAgIChiYXNlIDE2KQkJVnRlY2ggRW5naW5lZXJpbmcgQ2FuYWRhIEx0ZAotCQkJCTIwMC03NjcxIEFsZGVyYnJpZGdlIFdheQotCQkJCVJpY2htb25kIEJDIFY2WCAxWjkKLQkJCQlDQU5BREEKLQotMDAtMTEtQTEgICAoaGV4KQkJVklTSU9OIE5FVFdBUkUgQ08uLExURAotMDAxMUExICAgICAoYmFzZSAxNikJCVZJU0lPTiBORVRXQVJFIENPLixMVEQKLQkJCQlBY2UgVHdpbiBUb3dlciAoMiksICM3MDkKLQkJCQkyMTItMzAsIEd1cm8tRG9uZwotCQkJCVNlb3VsIEd1cm8tR3UgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMS1BMiAgIChoZXgpCQlNYW51ZmFjdHVyaW5nIFRlY2hub2xvZ3kgSW5jCi0wMDExQTIgICAgIChiYXNlIDE2KQkJTWFudWZhY3R1cmluZyBUZWNobm9sb2d5IEluYwotCQkJCTcwIFJlYWR5IEF2ZSBOVwotCQkJCUZvcnQgV2FsdG9uIEJlYWNoIEZMIDMyNTQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1BMyAgIChoZXgpCQlMYW5SZWFkeSBUZWNobm9sb2dpZXMgSW5jLgotMDAxMUEzICAgICAoYmFzZSAxNikJCUxhblJlYWR5IFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNEYsIE5vLiAzMzcsIFNpbkh1IDJuZCBSb2FkLiwgTmVpSHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1BNCAgIChoZXgpCQlKU3RyZWFtIFRlY2hub2xvZ2llcyBJbmMuCi0wMDExQTQgICAgIChiYXNlIDE2KQkJSlN0cmVhbSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCUJsZGcuNTMsIFI0MDUsIDE5NSBTZWMuNCwgQ2h1bmcgSHNpbmcgUmQuCi0JCQkJQ2h1dHVuZywgIEhzaW5jaHUgMzEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1BNSAgIChoZXgpCQlGb3J0dW5hIEVsZWN0cm9uaWMgQ29ycC4KLTAwMTFBNSAgICAgKGJhc2UgMTYpCQlGb3J0dW5hIEVsZWN0cm9uaWMgQ29ycC4KLQkJCQkzRiwgTm8uOSwgU2VjLjEsIENoYW5nQW4gRWFzdCBSZC4sCi0JCQkJVGFpcGVpICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUE2ICAgKGhleCkJCVN5cGl4eCBOZXR3b3JrcwotMDAxMUE2ICAgICAoYmFzZSAxNikJCVN5cGl4eCBOZXR3b3JrcwotCQkJCTEwOCBCYW5rIFN0cmVldAotCQkJCVdhdGVyYnVyeSBDVCAwNjcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQTcgICAoaGV4KQkJSW5maWxjbyBEZWdyZW1vbnQgSW5jLgotMDAxMUE3ICAgICAoYmFzZSAxNikJCUluZmlsY28gRGVncmVtb250IEluYy4KLQkJCQk4MDA3IERpc2NvdmVyeSBEci4KLQkJCQlQTyBCb3ggNzEzOTAKLQkJCQlSaWNobW9uZCBWaXJnaW5pYSAyMzI1NS0xMzkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1BOCAgIChoZXgpCQlRdWVzdCBUZWNobm9sb2dpZXMKLTAwMTFBOCAgICAgKGJhc2UgMTYpCQlRdWVzdCBUZWNobm9sb2dpZXMKLQkJCQkxMDYwIENvcnBvcmF0ZSBDZW50ZXIgRHJpdmUKLQkJCQlPY29ub21vd29jIFdpc2NvbnNpbiA1MzA2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQTkgICAoaGV4KQkJTU9JTVNUT05FIENvLiwgTFRECi0wMDExQTkgICAgIChiYXNlIDE2KQkJTU9JTVNUT05FIENvLiwgTFRECi0JCQkJN3RoIEZsb29yIEpvb25nUHl1bmcgQnVpbGRpbmcgNjQtMQotCQkJCVdvb215dW4tRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy05MDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtQUEgICAoaGV4KQkJVW5pY2xhc3MgVGVjaG5vbG9neSwgQ28uLCBMVEQKLTAwMTFBQSAgICAgKGJhc2UgMTYpCQlVbmljbGFzcyBUZWNobm9sb2d5LCBDby4sIExURAotCQkJCTRGLCBOby4gOTgsIE1pbmcgY2h1YW4gUmQKLQkJCQlIc2ludGllbiBDaXR5IFRhaXBlaSBIc2llbiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUFCICAgKGhleCkJCVRSVVNUQUJMRSBURUNITk9MT0dZIENPLixMVEQuCi0wMDExQUIgICAgIChiYXNlIDE2KQkJVFJVU1RBQkxFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQkxMkZMLi0xLE5PLjE2NyxGdS1TaGluZyBOLlJkLixTdW5nLVNoYW4gYXJlYQotCQkJCVRhaXBlaSAgMTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1BQyAgIChoZXgpCQlTaW10ZWMgRWxlY3Ryb25pY3MKLTAwMTFBQyAgICAgKGJhc2UgMTYpCQlTaW10ZWMgRWxlY3Ryb25pY3MKLQkJCQlBdm9uZGFsZSBEcml2ZQotCQkJCVRhcmxldG9uIExhbmNhc2hpcmUgUFI0IDZBWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLUFEICAgKGhleCkJCVNoYW5naGFpIFJ1aWppZSBUZWNobm9sb2d5Ci0wMDExQUQgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgUnVpamllIFRlY2hub2xvZ3kKLQkJCQkyN0YsIDQyMCBKaWFuZ25pbmcgUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDA0MQotCQkJCUNISU5BCi0KLTAwLTExLUFFICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDExQUUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1BRiAgIChoZXgpCQlNZWRpYWxpbmstaSxJbmMKLTAwMTFBRiAgICAgKGJhc2UgMTYpCQlNZWRpYWxpbmstaSxJbmMKLQkJCQkxLTktMTAgSGFtYW1hdHN1LUNobwotCQkJCUJFTElFVkUgQSBIQU1BTUFUU1VDSE8KLQkJCQlNaW5hdG8tS3UgVG9reW8gMTA1LTAwMTMKLQkJCQlKQVBBTgotCi0wMC0xMS1CMCAgIChoZXgpCQlGb3J0ZWxpbmsgSW5jLgotMDAxMUIwICAgICAoYmFzZSAxNikJCUZvcnRlbGluayBJbmMuCi0JCQkJNDI1MDEgQWxicmFlIHN0cmVldCBzdWl0ZSAyMDIKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1CMSAgIChoZXgpCQlCbHVlRXhwZXJ0IFRlY2hub2xvZ3kgQ29ycC4KLTAwMTFCMSAgICAgKGJhc2UgMTYpCQlCbHVlRXhwZXJ0IFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk4RixOby4xNixMYW5lIDc3LFhpbmctQWkgUmQsTmVpLUh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQ5NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtQjIgICAoaGV4KQkJMjAwMSBUZWNobm9sb2d5IEluYy4KLTAwMTFCMiAgICAgKGJhc2UgMTYpCQkyMDAxIFRlY2hub2xvZ3kgSW5jLgotCQkJCTdGLTEwLCA3OSBIc2luIFRhaSA1dGguIFJkLiBTZWMuMQotCQkJCUhzaSBDaGloIFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1CMyAgIChoZXgpCQlZT1NISU1JWUEgQ08uLExURC4KLTAwMTFCMyAgICAgKGJhc2UgMTYpCQlZT1NISU1JWUEgQ08uLExURC4KLQkJCQkyLTMtMjQgQmFpbmFuCi0JCQkJTmlzaGluYXJpLWt1Ci0JCQkJT1NBS0EgT1NBS0EtUHJlZiA1NTctMDAzMwotCQkJCUpBUEFOCi0KLTAwLTExLUI0ICAgKGhleCkJCVdlc3Rlcm1vIFRlbGVpbmR1c3RyaSBBQgotMDAxMUI0ICAgICAoYmFzZSAxNikJCVdlc3Rlcm1vIFRlbGVpbmR1c3RyaSBBQgotCQkJCVN0b3JhIFN1bmRieQotCQkJCVNFLTY0MCA0MAotCQkJCVNXRURFTgotCi0wMC0xMS1CNSAgIChoZXgpCQlTaGVuemhlbiBQb3dlcmNvbSBDby4sTHRkCi0wMDExQjUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gUG93ZXJjb20gQ28uLEx0ZAotCQkJCUZsb29yIDE2LFRvd2VyIEIsWmhvbmd5aW4gQnVpbGRpbmcsTm9ydGggQ2FpdGlhbiBSb2FkLEZ1dGlhbiBEaXN0cmljdCxTaGVuemhlbixQLlIuQ2hpbmEKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgcHJvdmluY2UgNTE4MDI4Ci0JCQkJQ0hJTkEKLQotMDAtMTEtQjYgICAoaGV4KQkJT3BlbiBTeXN0ZW1zIEludGVybmF0aW9uYWwKLTAwMTFCNiAgICAgKGJhc2UgMTYpCQlPcGVuIFN5c3RlbXMgSW50ZXJuYXRpb25hbAotCQkJCTM2MDAgSG9sbHkgTGFuZSBOb3J0aAotCQkJCVN1aXRlIDQwCi0JCQkJTWlubmVhcG9saXMgTU4gNTU0NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUI3ICAgKGhleCkJCU9jdGFsaXggQi5WLgotMDAxMUI3ICAgICAoYmFzZSAxNikJCU9jdGFsaXggQi5WLgotCQkJCU1vbGVuc3RlaWpuIDYwCi0JCQkJRGUgTWVlcm4gIE5MLTM0NTQgUFQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMS1COCAgIChoZXgpCQlMaWViaGVyciAtIEVsZWt0cm9uaWsgR21iSAotMDAxMUI4ICAgICAoYmFzZSAxNikJCUxpZWJoZXJyIC0gRWxla3Ryb25payBHbWJICi0JCQkJUGV0ZXIgLSBEb3JuaWVyIC0gU3RyYXNzZSAxMQotCQkJCUxpbmRhdSAoQm9kZW5zZWUpIEJhdmFyaWEgODgxMzEKLQkJCQlHRVJNQU5ZCi0KLTAwLTExLUI5ICAgKGhleCkJCUlubmVyIFJhbmdlIFB0eS4gTHRkLgotMDAxMUI5ICAgICAoYmFzZSAxNikJCUlubmVyIFJhbmdlIFB0eS4gTHRkLgotCQkJCTEgTWlsbGVuaXVtIENvdXJ0Ci0JCQkJS25veGZpZWxkIFZpY3RvcmlhIDMxODAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTEtQkEgICAoaGV4KQkJRWxleG9sIFB0eSBMdGQKLTAwMTFCQSAgICAgKGJhc2UgMTYpCQlFbGV4b2wgUHR5IEx0ZAotCQkJCUxldmVsIDIgLyAxNDYgQnVuZGFsbCBSb2FkCi0JCQkJQnVuZGFsbCBRdWVlbnNsYW5kIDQyMTcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTEtQkIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMUJCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQkMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMUJDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQkQgICAoaGV4KQkJQm9tYmFyZGllciBUcmFuc3BvcnRhdGlvbgotMDAxMUJEICAgICAoYmFzZSAxNikJCUJvbWJhcmRpZXIgVHJhbnNwb3J0YXRpb24KLQkJCQkxNTAxIExlYmFub24gQ2h1cmNoIFJvYWQKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1CRSAgIChoZXgpCQlBR1AgVGVsZWNvbSBDby4gTHRkCi0wMDExQkUgICAgIChiYXNlIDE2KQkJQUdQIFRlbGVjb20gQ28uIEx0ZAotCQkJCTlGLCAxMzQgQ2h1bmctSHNpYW8gRS4gUkQKLQkJCQlTZWMuIDQKLQkJCQlUYWlwZWkgIDEwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtQkYgICAoaGV4KQkJQUVTWVMgUy5wLkEuCi0wMDExQkYgICAgIChiYXNlIDE2KQkJQUVTWVMgUy5wLkEuCi0JCQkJVmlhIEFydGlnaWFuaSwgNDEKLQkJCQlCcnVzYXBvcnRvIEJlcmdhbW8gMjQwNjAKLQkJCQlJVEFMWQotCi0wMC0xMS1DMCAgIChoZXgpCQlBZGF5IFRlY2hub2xvZ3kgSW5jCi0wMDExQzAgICAgIChiYXNlIDE2KQkJQWRheSBUZWNobm9sb2d5IEluYwotCQkJCTlGLi0zLCBOby4gMjQ3LCBTZWMuIDEsIFRhaWNodW5nIFBvcnQgUmQuLAotCQkJCVRhaWNodW5nIENpdHkgVGFpdyA0MDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUMxICAgKGhleCkJCTRQIE1PQklMRSBEQVRBIFBST0NFU1NJTkcKLTAwMTFDMSAgICAgKGJhc2UgMTYpCQk0UCBNT0JJTEUgREFUQSBQUk9DRVNTSU5HCi0JCQkJVklBTEUgUkVHSU9ORSBWRU5FVE8gMjYKLQkJCQlQQURPVkEgUEQgMzUxMjcKLQkJCQlJVEFMWQotCi0wMC0xMS1DMiAgIChoZXgpCQlVbml0ZWQgRmliZXIgT3B0aWMgQ29tbXVuaWNhdGlvbgotMDAxMUMyICAgICAoYmFzZSAxNikJCVVuaXRlZCBGaWJlciBPcHRpYyBDb21tdW5pY2F0aW9uCi0JCQkJMTMtMSxOTy43MDAsSnVuZ2plbmcgUkQsSnVuZ2hlIENpdHkKLQkJCQlKdW5naGUgQ2l0eSBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1DMyAgIChoZXgpCQlUcmFuc2NlaXZpbmcgU3lzdGVtIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMTFDMyAgICAgKGJhc2UgMTYpCQlUcmFuc2NlaXZpbmcgU3lzdGVtIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQlOTy44NSxTZWMuMixHb25nZGFvd3UgUmQuLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtQzQgICAoaGV4KQkJVGVybWluYWxlcyBkZSBUZWxlY29tdW5pY2FjaW9uIFRlcnJlc3RyZSwgUy5MLgotMDAxMUM0ICAgICAoYmFzZSAxNikJCVRlcm1pbmFsZXMgZGUgVGVsZWNvbXVuaWNhY2lvbiBUZXJyZXN0cmUsIFMuTC4KLQkJCQlQb2xpZ29ubyBFdXJvcG9saXMsIENhbGxlIEMgMjYKLQkJCQlMYXMgUm96YXMgTWFkcmlkIDI4MjMwCi0JCQkJU1BBSU4KLQotMDAtMTEtQzUgICAoaGV4KQkJVEVOIFRlY2hub2xvZ3kKLTAwMTFDNSAgICAgKGJhc2UgMTYpCQlURU4gVGVjaG5vbG9neQotCQkJCTU1NSBFYXN0IE9jZWFuIEJsdmQuCi0JCQkJOXRoIEZsb29yCi0JCQkJTG9uZyBCZWFjaCBDQSA5MDgwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQzYgICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5IExMQwotMDAxMUM2ICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neSBMTEMKLQkJCQkxMjgwIERpc2MgRHJpdmUKLQkJCQlTaGFrb3BlZSBNTiA1NTM3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQzcgICAoaGV4KQkJUmF5bWFyaW5lIFVLIEx0ZAotMDAxMUM3ICAgICAoYmFzZSAxNikJCVJheW1hcmluZSBVSyBMdGQKLQkJCQlRdWF5IFBvaW50Ci0JCQkJTm9ydGhhcmJvdXIgUm9hZAotCQkJCVBvcnRzbW91dGggSGFtcHNoaXJlIFBPNiAzVEQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMS1DOCAgIChoZXgpCQlQb3dlcmNvbSBDby4sIEx0ZC4KLTAwMTFDOCAgICAgKGJhc2UgMTYpCQlQb3dlcmNvbSBDby4sIEx0ZC4KLQkJCQk4RiwgTm8uIDI0NiwgTGllbiBDaGVuIFJkLgotCQkJCUNodW5nIEhvIFRhaXBlaSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUM5ICAgKGhleCkJCU1UVCBDb3Jwb3JhdGlvbgotMDAxMUM5ICAgICAoYmFzZSAxNikJCU1UVCBDb3Jwb3JhdGlvbgotCQkJCTItNy0xMgotCQkJCU11cm90YW5pCi0JCQkJTmlzaGkta3UgS29iZSA2NTEtMjI0MQotCQkJCUpBUEFOCi0KLTAwLTExLUNBICAgKGhleCkJCUxvbmcgUmFuZ2UgU3lzdGVtcywgSW5jLgotMDAxMUNBICAgICAoYmFzZSAxNikJCUxvbmcgUmFuZ2UgU3lzdGVtcywgSW5jLgotCQkJCTQ1NTAgRXhjZWwgUGFya3dheQotCQkJCVN1aXRlIDIwMAotCQkJCUFkZGlzb24gVGV4YXMgNzUwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUNCICAgKGhleCkJCUphY29ic29ucyBBQgotMDAxMUNCICAgICAoYmFzZSAxNikJCUphY29ic29ucyBBQgotCQkJCU5lZHJhbGlkIHMgMzIKLQkJCQlNb3RhbGEgIDU5MSA5NwotCQkJCVNXRURFTgotCi0wMC0xMS1DQyAgIChoZXgpCQlHdWFuZ3pob3UgSmlucGVuZyBHcm91cCBDby4sTHRkLgotMDAxMUNDICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBKaW5wZW5nIEdyb3VwIENvLixMdGQuCi0JCQkJTm8uOSBTaGVuemhvdSBSb2FkLEd1YW5nemhvdSBTY2llbmNlIENpdHkKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTAwLTExLUNEICAgKGhleCkJCUF4c3VuIFRlY2hub2xvZ2llcwotMDAxMUNEICAgICAoYmFzZSAxNikJCUF4c3VuIFRlY2hub2xvZ2llcwotCQkJCTEgRm9ydHVuZSBEcml2ZQotCQkJCUJpbGxlcmljYSBNQSAwMjQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtQ0UgICAoaGV4KQkJVWJpc2Vuc2UgTGltaXRlZAotMDAxMUNFICAgICAoYmFzZSAxNikJCVViaXNlbnNlIExpbWl0ZWQKLQkJCQlTdC4gQW5kcmV3cyBIb3VzZQotCQkJCVN0LiBBbmRyZXdzIFJvYWQKLQkJCQlDaGVzdGVydG9uIENhbWJyaWRnZSBDQjQgMURMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTEtQ0YgICAoaGV4KQkJVGhyYW5lICYgVGhyYW5lIEEvUwotMDAxMUNGICAgICAoYmFzZSAxNikJCVRocmFuZSAmIFRocmFuZSBBL1MKLQkJCQlMdW5kdG9mdGVnYWFyZHN2ZWogOTNECi0JCQkJTHluZ2J5IEvDuGJlbmhhdm4gMjgwMAotCQkJCURFTk1BUksKLQotMDAtMTEtRDAgICAoaGV4KQkJVGFuZGJlcmcgRGF0YSBBU0EKLTAwMTFEMCAgICAgKGJhc2UgMTYpCQlUYW5kYmVyZyBEYXRhIEFTQQotCQkJCUtqZWxzw6VzdmVpZW4gMTYxCi0JCQkJT3NsbyAgMDQxMQotCQkJCU5PUldBWQotCi0wMC0xMS1EMSAgIChoZXgpCQlTb2Z0IEltYWdpbmcgU3lzdGVtIEdtYkgKLTAwMTFEMSAgICAgKGJhc2UgMTYpCQlTb2Z0IEltYWdpbmcgU3lzdGVtIEdtYkgKLQkJCQlKb2hhbm4tS3JhbmUtV2VnIDM5Ci0JCQkJTXVlbnN0ZXIgIDQ4MTQ5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS1EMiAgIChoZXgpCQlQZXJjZXB0aW9uIERpZ2l0YWwgTHRkCi0wMDExRDIgICAgIChiYXNlIDE2KQkJUGVyY2VwdGlvbiBEaWdpdGFsIEx0ZAotCQkJCUZsYXQgQSwgOC9GLCBTaGF3IEhvdXNlCi0JCQkJUk0gQQotCQkJCUNsZWFyIFdhdGVyIEJheSBOVCAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTEtRDMgICAoaGV4KQkJTmV4dEdlblRlbCBIb2xkaW5nIEFTQQotMDAxMUQzICAgICAoYmFzZSAxNikJCU5leHRHZW5UZWwgSG9sZGluZyBBU0EKLQkJCQlTYW5kc2xpbWFya2EgMzEKLQkJCQlTYW5kc2xpCi0JCQkJQmVyZ2VuIEhvcmRhbGFuZCA1ODYxCi0JCQkJTk9SV0FZCi0KLTAwLTExLUQ0ICAgKGhleCkJCU5ldEVucmljaCwgSW5jCi0wMDExRDQgICAgIChiYXNlIDE2KQkJTmV0RW5yaWNoLCBJbmMKLQkJCQk4OTAgSGlsbHZpZXcgQ3QuCi0JCQkJU3VpdGUgMTUwCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUQ1ICAgKGhleCkJCUhhbmd6aG91IFN1bnlhcmQgU3lzdGVtIEVuZ2luZWVyaW5nIENvLixMdGQuCi0wMDExRDUgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgU3VueWFyZCBTeXN0ZW0gRW5naW5lZXJpbmcgQ28uLEx0ZC4KLQkJCQlTdW55YXJkIFNjaWVuY2UgJiBUZWNobm9sb2d5IEJ1aWxkaW5nIEhpLVRlY2ggU29mdHdhcmUgUGFyayhTZWNvbmQgTGFuZCBDb25zb2xpZGF0aW9uKQotCQkJCUhhbmd6aG91IEhpLVRlY2ggSW5kdXN0cmlhbCBEZXZlbG9wbWVudCBab25lKEJpbmppYW5nIERpc3RyaWN0KQotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDA1MwotCQkJCUNISU5BCi0KLTAwLTExLUQ2ICAgKGhleCkJCUhhbmRFcmEsIEluYy4KLTAwMTFENiAgICAgKGJhc2UgMTYpCQlIYW5kRXJhLCBJbmMuCi0JCQkJMjg1OSAxMDR0aCBTdC4KLQkJCQlEZXMgTW9pbmVzIElBIDUwMzIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1ENyAgIChoZXgpCQllV2Vya3MgSW5jCi0wMDExRDcgICAgIChiYXNlIDE2KQkJZVdlcmtzIEluYwotCQkJCTQyMC0yMTY2IE1vdW50YWluIEdyb3ZlIEF2ZQotCQkJCUJ1cmxpbmd0b24gT250YXJpbyBMN1A0WDQKLQkJCQlDQU5BREEKLQotMDAtMTEtRDggICAoaGV4KQkJQVNVU1RlayBDb21wdXRlciBJbmMuCi0wMDExRDggICAgIChiYXNlIDE2KQkJQVNVU1RlayBDb21wdXRlciBJbmMuCi0JCQkJTm8uIDE1LCBMaS1UZSBSZC4sIFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMS1EOSAgIChoZXgpCQlUaVZvCi0wMDExRDkgICAgIChiYXNlIDE2KQkJVGlWbwotCQkJCTIxNjAgR29sZCBBdmUKLQkJCQlBbHZpc28gQ0EgOTUwMDItMjE2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtREEgICAoaGV4KQkJVml2YWFzIFRlY2hub2xvZ3kgSW5jLgotMDAxMURBICAgICAoYmFzZSAxNikJCVZpdmFhcyBUZWNobm9sb2d5IEluYy4KLQkJCQkxNUYsIE5vLiAxMCwgU2VjIDEsIFBlaS1Ic2luIFJkLiwKLQkJCQlIc2luLVRpZW4gY2l0eSBUYWlwZWkgSHNpZW4sIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtREIgICAoaGV4KQkJTGFuZC1DZWxsdWxhciBDb3Jwb3JhdGlvbgotMDAxMURCICAgICAoYmFzZSAxNikJCUxhbmQtQ2VsbHVsYXIgQ29ycG9yYXRpb24KLQkJCQkxMjA1NCBNaXJhbWFyIFBhcmt3YXkKLQkJCQlNaXJhbWFyIEZMIDMzMDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1EQyAgIChoZXgpCQlHbHVueiAmIEplbnNlbgotMDAxMURDICAgICAoYmFzZSAxNikJCUdsdW56ICYgSmVuc2VuCi0JCQkJSGFzbGV2dmVqIDEzCi0JCQkJUmluZ3N0ZWQgIDQxMDAKLQkJCQlERU5NQVJLCi0KLTAwLTExLUREICAgKGhleCkJCUZST01VUyBURUMuIENvLiwgTHRkLgotMDAxMUREICAgICAoYmFzZSAxNikJCUZST01VUyBURUMuIENvLiwgTHRkLgotCQkJCTJGIDg5Ni04IEhvZ3llMi1kb25nIERvbmdhbi1HdQotCQkJCUFueWFuZy1DaXR5LCBHeWVvbmdnaS1kbywKLQkJCQk0MzEtODM2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLURFICAgKGhleCkJCUVVUklMT0dJQwotMDAxMURFICAgICAoYmFzZSAxNikJCUVVUklMT0dJQwotCQkJCUNlbnRyYWxlIFBhcmMgQsOidCA3Ci0JCQkJQXZlbnVlIHN1bGx5IHBydWQnaG9tbWUKLQkJCQlDaGF0ZW5heSBNYWxhYnJ5ICA5MjI5OAotCQkJCUZSQU5DRQotCi0wMC0xMS1ERiAgIChoZXgpCQlDdXJyZW50IEVuZXJneQotMDAxMURGICAgICAoYmFzZSAxNikJCUN1cnJlbnQgRW5lcmd5Ci0JCQkJNTQ0MCBIYXJ2ZXN0IEhpbGwsIFN0ZSAxMDAKLQkJCQlEYWxsYXMgVFggNzUyMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUUwICAgKGhleCkJCVUtTUVESUEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMTFFMCAgICAgKGJhc2UgMTYpCQlVLU1FRElBIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJIDlGLCBOby4xIEppbi1TaGFuIFN0LgotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtRTEgICAoaGV4KQkJQXJjZWxpayBBLlMKLTAwMTFFMSAgICAgKGJhc2UgMTYpCQlBcmNlbGlrIEEuUwotCQkJCUN1bWh1cml5ZXQgTWFoLiwgRTUgWWFuIFlvbCwgTm86MSwKLQkJCQlCZXlsaWtkdXp1Ci0JCQkJSXN0YW5idWwgIDM0NTIwIAotCQkJCVRVUktFWQotCi0wMC0xMS1FMiAgIChoZXgpCQlIdWEgSnVuZyBDb21wb25lbnRzIENvLiwgTHRkLgotMDAxMUUyICAgICAoYmFzZSAxNikJCUh1YSBKdW5nIENvbXBvbmVudHMgQ28uLCBMdGQuCi0JCQkJNUYsIE5vLjEzLCBMYW5lIDEyMCwgU2VjLjEsIE5laSBIdSBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUUzICAgKGhleCkJCVRob21zb24sIEluYy4KLTAwMTFFMyAgICAgKGJhc2UgMTYpCQlUaG9tc29uLCBJbmMuCi0JCQkJMTAxIFdlc3QgMTAzcmQgU3RyZWV0Ci0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMS1FNCAgIChoZXgpCQlEYW5lbGVjIEVsZWN0cm9uaWNzIEEvUwotMDAxMUU0ICAgICAoYmFzZSAxNikJCURhbmVsZWMgRWxlY3Ryb25pY3MgQS9TCi0JCQkJQmxva2tlbiA0NAotCQkJCUJpcmtlcm9lZCBDb3BlbmhhZ2VuIDM0NjAKLQkJCQlERU5NQVJLCi0KLTAwLTExLUU1ICAgKGhleCkJCUtDb2RlcyBDb3Jwb3JhdGlvbgotMDAxMUU1ICAgICAoYmFzZSAxNikJCUtDb2RlcyBDb3Jwb3JhdGlvbgotCQkJCUZsb29yIDIsIE51bWJlciA1MDEsIFNlY3Rpb24gMgotCQkJCVRpZGluZyBCb3VsZXZhcmQKLQkJCQlOZWlodSBEaXN0cmljdCBUYWlwZWkgQ2l0eSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUU2ICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YQotMDAxMUU2ICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgQXRsYW50YQotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlNYWlsIFN0b3AgNS4yLjQyOAotCQkJCUxhd3JlbmNldmlsbGUgR2EgMzAwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUU3ICAgKGhleCkJCVdPUkxEU0FUIC0gVGV4YXMgZGUgRnJhbmNlCi0wMDExRTcgICAgIChiYXNlIDE2KQkJV09STERTQVQgLSBUZXhhcyBkZSBGcmFuY2UKLQkJCQkyMjAsIHJ1ZSBHdXN0YXZlIEVpZmZlbAotCQkJCWNlZGV4IDMKLQkJCQlBaXggZW4gUHJvdmVuY2UgQm91Y2hlcyBkdSBSaG9uZSAxMzg1NAotCQkJCUZSQU5DRQotCi0wMC0xMS1FOCAgIChoZXgpCQlUaXhpLkNvbQotMDAxMUU4ICAgICAoYmFzZSAxNikJCVRpeGkuQ29tCi0JCQkJS2FybWVsaXRlcndlZyAxMTQKLQkJCQlCZXJsaW4gIDEzNDY1Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS1FOSAgIChoZXgpCQlTVEFSTkVYIENPLiwgTFRELgotMDAxMUU5ICAgICAoYmFzZSAxNikJCVNUQVJORVggQ08uLCBMVEQuCi0JCQkJNHRoIEZsb29yLCBDJkMgQmxkZywgMjI4LTIKLQkJCQlHdXVpLWRvbmcKLQkJCQlLd2FuZ2ppbi1ndSBTZW91bCAxNDMtMjAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTExLUVBICAgKGhleCkJCUlXSUNTIEluYy4KLTAwMTFFQSAgICAgKGJhc2UgMTYpCQlJV0lDUyBJbmMuCi0JCQkJMTkxMjUgTm9ydGggQ3JlZWsgUGFya3dheQotCQkJCVN1aXRlIDEyMAotCQkJCUJvdGhlbGwgV0EgOTgwMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTExLUVCICAgKGhleCkJCUlubm92YXRpdmUgSW50ZWdyYXRpb24KLTAwMTFFQiAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aXZlIEludGVncmF0aW9uCi0JCQkJMjM5MEEgV2FyZCBBdmVudWUKLQkJCQlTaW1pIFZhbGxleSBDQSA5MzA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRUMgICAoaGV4KQkJQVZJWCBJTkMuCi0wMDExRUMgICAgIChiYXNlIDE2KQkJQVZJWCBJTkMuCi0JCQkJMS0xLCBGdWt1dXJhLCBLYW5hemF3YS1rdQotCQkJCVlva29oYW1hLXNoaSBLYW5hZ2F3YSAyMzYtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTExLUVEICAgKGhleCkJCTgwMiBHbG9iYWwKLTAwMTFFRCAgICAgKGJhc2UgMTYpCQk4MDIgR2xvYmFsCi0JCQkJU3R1ZGlvIDExLEludGVjIDIsV2FkZSBSb2FkCi0JCQkJQmFzaW5nc3Rva2UsCi0JCQkJSGFtcHNoaXJlICBSRzI0IEJORQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLUVFICAgKGhleCkJCUVzdGFyaSwgSW5jLgotMDAxMUVFICAgICAoYmFzZSAxNikJCUVzdGFyaSwgSW5jLgotCQkJCTE4MDAgUGF4dG9uIFN0Ci0JCQkJSGFycmlzYnVyZyBQQSAxNzEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRUYgICAoaGV4KQkJQ29uaXRlYyBEYXRlbnN5c3RlbWUgR21iSAotMDAxMUVGICAgICAoYmFzZSAxNikJCUNvbml0ZWMgRGF0ZW5zeXN0ZW1lIEdtYkgKLQkJCQlEaWVzZWxzdHIuIDExYwotCQkJCURpZWJ1cmcgSGVzc2VuIDY0ODA3Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS1GMCAgIChoZXgpCQlXaWRlZnVsIExpbWl0ZWQKLTAwMTFGMCAgICAgKGJhc2UgMTYpCQlXaWRlZnVsIExpbWl0ZWQKLQkJCQlGNSwgMy9GLiwgUGhhc2UgSUksIFN1cGVybHVjayBJbmR1c3RyaWFsIENlbnRyZSwgCi0JCQkJNTcgU2hhIFRzdWkgUm9hZCwgVHN1ZW4gV2FuLCAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTEtRjEgICAoaGV4KQkJUWluZXRpUSBMdGQKLTAwMTFGMSAgICAgKGJhc2UgMTYpCQlRaW5ldGlRIEx0ZAotCQkJCVJvb20gRTYwMQotCQkJCVN0LiBBbmRyZXcncyBSb2FkCi0JCQkJTWFsdmVybiBXb3JjZXN0ZXJzaGlyZSBXUjE0IDNQUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTExLUYyICAgKGhleCkJCUluc3RpdHV0ZSBvZiBOZXR3b3JrIFRlY2hub2xvZ2llcwotMDAxMUYyICAgICAoYmFzZSAxNikJCUluc3RpdHV0ZSBvZiBOZXR3b3JrIFRlY2hub2xvZ2llcwotCQkJCTE3LXRoIExpbmUgVmFzaWxldnNreSBPc3Ryb3YsIDU0LTEKLQkJCQlTdC5QZXRlcnNidXJnICAxOTkxNzgKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTEtRjMgICAoaGV4KQkJTmVvTWVkaWEgRXVyb3BlIEFHCi0wMDExRjMgICAgIChiYXNlIDE2KQkJTmVvTWVkaWEgRXVyb3BlIEFHCi0JCQkJSmVucy1PdHRvLUtyYWctU3RyLiAxMQotCQkJCVfDvHJzZWxlbiBOb3JkcmhlaW4tV2VzdGZhbGVuIDUyMTQ2Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS1GNCAgIChoZXgpCQl3b29yaS1uZXQKLTAwMTFGNCAgICAgKGJhc2UgMTYpCQl3b29yaS1uZXQKLQkJCQkjNTA4LCBIYW5rb29rIE1vb2x5dSwgODUzLTEgRG9uZ2NodW4tRG9uZwotCQkJCVlvbmdpbi1TaSBLeXVuZ2tpLURvIDQ0OS04NDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTEtRjUgICAoaGV4KQkJQVNLRVkgQ09NUFVURVIgQ09SUC4KLTAwMTFGNSAgICAgKGJhc2UgMTYpCQlBU0tFWSBDT01QVVRFUiBDT1JQLgotCQkJCTEwRiwgTk8uMTE5LCBDSElFTktBTkcgIFJELiwKLQkJCQlDSFVORy1ITywgVEFJUEVJICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTExLUY2ICAgKGhleCkJCUFzaWEgUGFjaWZpYyBNaWNyb3N5c3RlbXMgLCBJbmMuCi0wMDExRjYgICAgIChiYXNlIDE2KQkJQXNpYSBQYWNpZmljIE1pY3Jvc3lzdGVtcyAsIEluYy4KLQkJCQlOby4yLFImRCBSb2FkIDYgLFNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTEtRjcgICAoaGV4KQkJU2hlbnpoZW4gRm9yd2FyZCBJbmR1c3RyeSBDby4sIEx0ZAotMDAxMUY3ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEZvcndhcmQgSW5kdXN0cnkgQ28uLCBMdGQKLQkJCQk0YjEgRjUuOCwgVGlhbiBBbiBDeWJlciBQYXJrLCBDaGVuZ29uZ21pYW8sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTExLUY4ICAgKGhleCkJCUFJUkFZQSBDb3JwCi0wMDExRjggICAgIChiYXNlIDE2KQkJQUlSQVlBIENvcnAKLQkJCQk2MzcgQWRhaXIgQ291cnQKLQkJCQlNb3JnYW4gSGlsbCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRjkgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDExRjkgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTEtRkEgICAoaGV4KQkJUmFuZSBDb3Jwb3JhdGlvbgotMDAxMUZBICAgICAoYmFzZSAxNikJCVJhbmUgQ29ycG9yYXRpb24KLQkJCQkxMDgwMiA0N3RoIEF2ZW51ZSBXZXN0Ci0JCQkJTXVraWx0ZW8gV0EgOTgyNzUtNTA5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTEtRkIgICAoaGV4KQkJSGVpZGVsYmVyZyBFbmdpbmVlcmluZyBHbWJICi0wMDExRkIgICAgIChiYXNlIDE2KQkJSGVpZGVsYmVyZyBFbmdpbmVlcmluZyBHbWJICi0JCQkJVGllcmdhcnRlbnN0ci4gMTUKLQkJCQlIZWlkZWxiZXJnIEJhZGVuLVd1ZXJ0dGVtYmVyZyA2OTEyMQotCQkJCUdFUk1BTlkKLQotMDAtMTEtRkMgICAoaGV4KQkJSEFSVElORyBFbGVjdHJpYyBHbWJoICYgQ28uS0cKLTAwMTFGQyAgICAgKGJhc2UgMTYpCQlIQVJUSU5HIEVsZWN0cmljIEdtYmggJiBDby5LRwotCQkJCVdpbGhlbG0gSGFydGluZyBTdHIuIDEKLQkJCQlFc3BlbGthbXAgTm9yZHJoZWluIFdlc3RmYWxlbiBELTMyMzM5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMS1GRCAgIChoZXgpCQlLT1JHIElOQy4KLTAwMTFGRCAgICAgKGJhc2UgMTYpCQlLT1JHIElOQy4KLQkJCQk0MDE1LTIsIFlhbm9rdWNoaQotCQkJCUluYWdpLUNpdHkgVE9LWU8gMjA2LTA4MTIKLQkJCQlKQVBBTgotCi0wMC0xMS1GRSAgIChoZXgpCQlLZWl5byBTeXN0ZW0gUmVzZWFyY2gsIEluYy4KLTAwMTFGRSAgICAgKGJhc2UgMTYpCQlLZWl5byBTeXN0ZW0gUmVzZWFyY2gsIEluYy4KLQkJCQlIYW1hZGEgcGFyayBCbGRnLiA2RgotCQkJCTE3LTMgU2hpbm1hY2hpIENodW91LWt1Ci0JCQkJQ2hpYmEtY2l0eSBDaGliYS1wcmVmIDI2MC0wMDI4Ci0JCQkJSkFQQU4KLQotMDAtMTEtRkYgICAoaGV4KQkJRGlnaXRybyBUZWNub2xvZ2lhIEx0ZGEKLTAwMTFGRiAgICAgKGJhc2UgMTYpCQlEaWdpdHJvIFRlY25vbG9naWEgTHRkYQotCQkJCVJ1YTogUHJvZmVzc29yYSBTb2ZpYSBRdWludCBkZSBTb3V6YSwgMTY3Ci0JCQkJQmFpcnJvOiBDYXBvZWlyYXMKLQkJCQlGbG9yaWFuw7Nwb2xpcyBTYW50YSBDYXRhcmluYSA4ODA4NS0wNDAKLQkJCQlCUkFaSUwKLQotMDAtMTItMDAgICAoaGV4KQkJQ2lzY28KLTAwMTIwMCAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0wMSAgIChoZXgpCQlDaXNjbwotMDAxMjAxICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTAyICAgKGhleCkJCURlY3JhbmUgQWVyb3NwYWNlIC0gQXVkaW8gSW50ZXJuYXRpb25hbCBJbmMuCi0wMDEyMDIgICAgIChiYXNlIDE2KQkJRGVjcmFuZSBBZXJvc3BhY2UgLSBBdWRpbyBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQk3MzAwIEluZHVzdHJ5IERyaXZlCi0JCQkJTm9ydGggTGl0dGxlIFJvY2sgQVIgNzIxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTAzICAgKGhleCkJCUFjdGl2IE5ldHdvcmtzCi0wMDEyMDMgICAgIChiYXNlIDE2KQkJQWN0aXYgTmV0d29ya3MKLQkJCQlCQVQgTCAtIDEgcnVlIGRlIFRlcnJlIE5ldXZlCi0JCQkJQlAxMjcKLQkJCQlDT1VSVEFCT0VVRiBOL0EgOTE5NDQKLQkJCQlGUkFOQ0UKLQotMDAtMTItMDQgICAoaGV4KQkJdTEwIE5ldHdvcmtzLCBJbmMuCi0wMDEyMDQgICAgIChiYXNlIDE2KQkJdTEwIE5ldHdvcmtzLCBJbmMuCi0JCQkJMi0yLTE0IEtha2lub2tpemFrYQotCQkJCU1lZ3VybyBUb2t5byAxNTItMDAyMgotCQkJCUpBUEFOCi0KLTAwLTEyLTA1ICAgKGhleCkJCVRlcnJhc2F0IENvbW11bmljYXRpb25zLCBJbmMuCi0wMDEyMDUgICAgIChiYXNlIDE2KQkJVGVycmFzYXQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyMzUgVmluZXlhcmQgQ291cnQsIHN1aXRlIDEwMAotCQkJCU1vcmdhbiBIaWxsIENhbGlmb3JuaWEgOTUwMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTA2ICAgKGhleCkJCWlRdWVzdCAoTlopIEx0ZAotMDAxMjA2ICAgICAoYmFzZSAxNikJCWlRdWVzdCAoTlopIEx0ZAotCQkJCVAuTy5Cb3ggMTUxNjkKLQkJCQlEaW5zZGFsZQotCQkJCUhhbWlsdG9uIFdhaWthdG8gMjAzMQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTEyLTA3ICAgKGhleCkJCUhlYWQgU3Ryb25nIEludGVybmF0aW9uYWwgTGltaXRlZAotMDAxMjA3ICAgICAoYmFzZSAxNikJCUhlYWQgU3Ryb25nIEludGVybmF0aW9uYWwgTGltaXRlZAotCQkJCVVuaXQgOSwgMjAvRiwgTWV0cm9wb2xlIFNxdWFyZSwKLQkJCQkyIE9uIFlpdSBTdHJlZXQsIFNoYXRpbgotCQkJCUd1YW5nZG9uZyAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTItMDggICAoaGV4KQkJR2FudG5lciBJbnN0cnVtZW50cyBHbWJICi0wMDEyMDggICAgIChiYXNlIDE2KQkJR2FudG5lciBJbnN0cnVtZW50cyBHbWJICi0JCQkJTW9udGFmb25lcnN0cmFzc2UgOAotCQkJCVNjaHJ1bnMgVm9yYXJsYmVyZyA2NzgwCi0JCQkJQVVTVFJJQQotCi0wMC0xMi0wOSAgIChoZXgpCQlGYXN0cmF4IEx0ZAotMDAxMjA5ICAgICAoYmFzZSAxNikJCUZhc3RyYXggTHRkCi0JCQkJVmFsaW1vdGllIDcKLQkJCQlWYW50YWEgRkkgMDE1MTAKLQkJCQlGSU5MQU5ECi0KLTAwLTEyLTBBICAgKGhleCkJCUVtZXJzb24gRWxlY3RyaWMgR21iSCAmIENvLiBPSEcKLTAwMTIwQSAgICAgKGJhc2UgMTYpCQlFbWVyc29uIEVsZWN0cmljIEdtYkggJiBDby4gT0hHCi0JCQkJSGVlcnN0cmFzc2UgMTExCi0JCQkJV2FpYmxpbmdlbiBCVyA3MTMzMgotCQkJCUdFUk1BTlkKLQotMDAtMTItMEIgICAoaGV4KQkJQ2hpbmFzeXMgVGVjaG5vbG9naWVzIExpbWl0ZWQKLTAwMTIwQiAgICAgKGJhc2UgMTYpCQlDaGluYXN5cyBUZWNobm9sb2dpZXMgTGltaXRlZAotCQkJCTEwL0YsQ0FHVyBCdWlsZGluZyxOby4zMCBIYWlkaWFuIFNvdXRoIFJvYWQKLQkJCQlCZWlqaW5nICAxMDAwODAKLQkJCQlDSElOQQotCi0wMC0xMi0wQyAgIChoZXgpCQlDRS1JbmZvc3lzIFB0ZSBMdGQKLTAwMTIwQyAgICAgKGJhc2UgMTYpCQlDRS1JbmZvc3lzIFB0ZSBMdGQKLQkJCQkzOTAgSGF2ZWxvY2sgUm9hZAotCQkJCSMwOC0wMiBLaW5nJ3MgQ2VudHJlCi0JCQkJMTY5NjYyCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTEyLTBEICAgKGhleCkJCUFkdmFuY2VkIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcywgSW5jLgotMDAxMjBEICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwMzkwIFdpbHNoaXJlIEJvdWxldmFyZAotCQkJCVN1aXRlIDE4MDMKLQkJCQlMb3MgQW5nZWxlcyBDYWxpZm9ybmlhIDkwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0wRSAgIChoZXgpCQlBYm9Db20KLTAwMTIwRSAgICAgKGJhc2UgMTYpCQlBYm9Db20KLQkJCQkxRiAsIE5vLiAyMSwgWWFuZmEgMm5kIFJkLiwgU0JJUAotCQkJCUhzaW5jaHUgQ2l0eSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi0wRiAgIChoZXgpCQlJRUVFIDgwMi4zCi0wMDEyMEYgICAgIChiYXNlIDE2KQkJSUVFRSA4MDIuMwotCQkJCQotCQkJCTE1NTk5IEhhcnJvdyBMYW5lCi0JCQkJUG93YXkgQ0EgOTIwNjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTEwICAgKGhleCkJCVdpZGVSYXkgQ29ycAotMDAxMjEwICAgICAoYmFzZSAxNikJCVdpZGVSYXkgQ29ycAotCQkJCTI1IEtlYXJueSBTdHJlZXQKLQkJCQk2dGggRmxvb3IKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0xMSAgIChoZXgpCQlQcm90ZWNobmEgSGVyYnN0IEdtYkggJiBDby4gS0cKLTAwMTIxMSAgICAgKGJhc2UgMTYpCQlQcm90ZWNobmEgSGVyYnN0IEdtYkggJiBDby4gS0cKLQkJCQlPdHRvIEhhaG4gU3RyLiAyNgotCQkJCU90dG9icnVubiBHZXJtYW55L0JhdmFyaWEgODU1MjEKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTEyICAgKGhleCkJCVBMVVMgIENvcnBvcmF0aW9uCi0wMDEyMTIgICAgIChiYXNlIDE2KQkJUExVUyAgQ29ycG9yYXRpb24KLQkJCQkxMDMzLTEsIE9zaGl0YXRlLCBJbmFnaS1zaGksCi0JCQkJVG9reW8gU2FpdGFtYSAyMDYtMDgxMQotCQkJCUpBUEFOCi0KLTAwLTEyLTEzICAgKGhleCkJCU1ldHJvaG0gQUcKLTAwMTIxMyAgICAgKGJhc2UgMTYpCQlNZXRyb2htIEFHCi0JCQkJT2JlcmRvcmZzdHJhc3NlIDY4Ci0JCQkJSGVyaXNhdSBBUiA5MTAxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTItMTQgICAoaGV4KQkJS29lbmlnICYgQmF1ZXIgQUcKLTAwMTIxNCAgICAgKGJhc2UgMTYpCQlLb2VuaWcgJiBCYXVlciBBRwotCQkJCUZyaWVkcmljaC1Lb2VuaWctU3RyLiA0Ci0JCQkJV3VlcnpidXJnIEJhdmFyaWEgOTcwODAKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTE1ICAgKGhleCkJCWlTdG9yIE5ldHdvcmtzLCBJbmMuCi0wMDEyMTUgICAgIChiYXNlIDE2KQkJaVN0b3IgTmV0d29ya3MsIEluYy4KLQkJCQk3NTg1IElydmluZSBDZW50ZXIgRHJpdmUKLQkJCQlTdWl0ZSAyNTAKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTE2ICAgKGhleCkJCUlDUCBJbnRlcm5ldCBDb21tdW5pY2F0aW9uIFBheW1lbnQgQUcKLTAwMTIxNiAgICAgKGJhc2UgMTYpCQlJQ1AgSW50ZXJuZXQgQ29tbXVuaWNhdGlvbiBQYXltZW50IEFHCi0JCQkJV2lsaGVsbS1TdGVpbi1XZWcgMjQKLQkJCQlIYW1idXJnICBELTIyMzM5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMi0xNyAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTAwMTIxNyAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5IERyLgotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMTggICAoaGV4KQkJQVJVWkUgQ29ycG9yYXRpb24KLTAwMTIxOCAgICAgKGJhc2UgMTYpCQlBUlVaRSBDb3Jwb3JhdGlvbgotCQkJCUFyaWFrZSBGcm9udGllciBCdWlsZGluZyBBCi0JCQkJMy0xLTI1IEFyaWFrZQotCQkJCUtvaHRvaC1rdSBUb2t5byAxMzUtMDA2MwotCQkJCUpBUEFOCi0KLTAwLTEyLTE5ICAgKGhleCkJCUFoZWFkIENvbW11bmljYXRpb24gU3lzdGVtcyBJbmMKLTAwMTIxOSAgICAgKGJhc2UgMTYpCQlBaGVhZCBDb21tdW5pY2F0aW9uIFN5c3RlbXMgSW5jCi0JCQkJMTk5IFBhcmsgUm9hZCBFeHQKLQkJCQlQTyBCb3ggOTI5Ci0JCQkJTWlkZGxlYnVyeSBDVCAwNjc2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMUEgICAoaGV4KQkJVGVjaG5vIFNvZnQgU3lzdGVtbmljcyBJbmMuCi0wMDEyMUEgICAgIChiYXNlIDE2KQkJVGVjaG5vIFNvZnQgU3lzdGVtbmljcyBJbmMuCi0JCQkJMi01LTE3LCBFYmlzdS1uaXNoaSwgTmFuaXdhLWt1LAotCQkJCU9zYWthICA1NTYtMDAwMwotCQkJCUpBUEFOCi0KLTAwLTEyLTFCICAgKGhleCkJCVNvdW5kIERldmljZXMsIExMQwotMDAxMjFCICAgICAoYmFzZSAxNikJCVNvdW5kIERldmljZXMsIExMQwotCQkJCTMwMCBXZW5nZWwgRHJpdmUKLQkJCQlSZWVkc2J1cmcgV0kgNTM5NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTFDICAgKGhleCkJCVBBUlJPVCBTLkEuCi0wMDEyMUMgICAgIChiYXNlIDE2KQkJUEFSUk9UIFMuQS4KLQkJCQkxNzQsIHF1YWkgZGUgSmVtbWFwZXMKLQkJCQlQQVJJUyAgNzUwMTAKLQkJCQlGUkFOQ0UKLQotMDAtMTItMUQgICAoaGV4KQkJTmV0ZmFicmljIENvcnBvcmF0aW9uCi0wMDEyMUQgICAgIChiYXNlIDE2KQkJTmV0ZmFicmljIENvcnBvcmF0aW9uCi0JCQkJNjcgRmVkZXJhbCBSb2FkCi0JCQkJU3VpdGUgMzAwCi0JCQkJQnJvb2tmaWVsZCBDVCAwNjgwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMUUgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcywgSW5jLgotMDAxMjFFICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MsIEluYy4KLQkJCQkxMTk0IE4uIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMUYgICAoaGV4KQkJSGFyZGluZyBJbnRydW1lbnRzCi0wMDEyMUYgICAgIChiYXNlIDE2KQkJSGFyZGluZyBJbnRydW1lbnRzCi0JCQkJOTQzMS00MUF2ZQotCQkJCUVkbW9udG9uIEFCIFQ2RSA1WDcKLQkJCQlDQU5BREEKLQotMDAtMTItMjAgICAoaGV4KQkJQ2FkY28gU3lzdGVtcwotMDAxMjIwICAgICAoYmFzZSAxNikJCUNhZGNvIFN5c3RlbXMKLQkJCQkyMzYzIE1lcnJpdHQgRHIKLQkJCQlHYXJsYW5kIFRleGFzIDc1MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0yMSAgIChoZXgpCQlCLkJyYXVuIE1lbHN1bmdlbiBBRwotMDAxMjIxICAgICAoYmFzZSAxNikJCUIuQnJhdW4gTWVsc3VuZ2VuIEFHCi0JCQkJU2Nod2FyemVuYmVyZ2VyIFdlZyA3My03OQotCQkJCU1lbHN1bmdlbiBIZXNzZW4gMzQyMTIKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTIyICAgKGhleCkJCVNrYXJkaW4gKFVLKSBMdGQKLTAwMTIyMiAgICAgKGJhc2UgMTYpCQlTa2FyZGluIChVSykgTHRkCi0JCQkJTm8uIDUgR3JlZW53YXkgKFJPMjQpCi0JCQkJSGFybG93IEJ1c2luZXNzIFBhcmsKLQkJCQlIYXJsb3cgRXNzZXggQ00xOSA1UUIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMi0yMyAgIChoZXgpCQlQaXhpbQotMDAxMjIzICAgICAoYmFzZSAxNikJCVBpeGltCi0JCQkJOTE1IExpbmRhIFZpc3RhIEF2ZS4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0yNCAgIChoZXgpCQlOZXhRTCBDb3Jwb3JhdGlvbgotMDAxMjI0ICAgICAoYmFzZSAxNikJCU5leFFMIENvcnBvcmF0aW9uCi0JCQkJMTIyNTAgSW53b29kIFJvYWQgIzYKLQkJCQlEYWxsYXMgVFggNzUyNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTI1ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxMjI1ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTI2ICAgKGhleCkJCUphcGFuIERpcmV4IENvcnBvcmF0aW9uCi0wMDEyMjYgICAgIChiYXNlIDE2KQkJSmFwYW4gRGlyZXggQ29ycG9yYXRpb24KLQkJCQlLeW9jZXJhIEhhcmFqdWt1IEJsZGcuCi0JCQkJNi0yNy04LCBKaW5ndW1hZQotCQkJCVNoaWJ1eWEta3UgVG9reW8gMTUwLTAwMDEKLQkJCQlKQVBBTgotCi0wMC0xMi0yNyAgIChoZXgpCQlGcmFua2xpbiBFbGVjdHJpYyBDby4sIEluYy4KLTAwMTIyNyAgICAgKGJhc2UgMTYpCQlGcmFua2xpbiBFbGVjdHJpYyBDby4sIEluYy4KLQkJCQk0MDAgRS4gU3ByaW5nIFN0cmVldAotCQkJCUJsdWZmdG9uIEluZGlhbmEgNDY3MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTI4ICAgKGhleCkJCURhdGEgTHRkLgotMDAxMjI4ICAgICAoYmFzZSAxNikJCURhdGEgTHRkLgotCQkJCUouIEhhZ2FydSA5Ci0JCQkJUC5PLiBCb3ggNwotCQkJCUJyYXRpc2xhdmEgIDgzMCAwNQotCQkJCVNMT1ZBS0lBCi0KLTAwLTEyLTI5ICAgKGhleCkJCUJyb2FkRWFzeSBUZWNobm9sb2dpZXMgQ28uLEx0ZAotMDAxMjI5ICAgICAoYmFzZSAxNikJCUJyb2FkRWFzeSBUZWNobm9sb2dpZXMgQ28uLEx0ZAotCQkJCTI0dGggRmxvb3IsVG93ZXIgQSxKaW5TaGFuIE1hbnNpb24sCi0JCQkJTk8uOCBTaGFuWGkgUm9hZCxOYW5qaW5nLFAuUi5DLgotCQkJCU5hbmppbmcgSmlhbmdzdSAyMTAwMDkKLQkJCQlDSElOQQotCi0wMC0xMi0yQSAgIChoZXgpCQlWVGVjaCBUZWxlY29tbXVuaWNhdGlvbnMgTHRkLgotMDAxMjJBICAgICAoYmFzZSAxNikJCVZUZWNoIFRlbGVjb21tdW5pY2F0aW9ucyBMdGQuCi0JCQkJMjMvRiwgVGFpIFBpbmcgSW5kdXN0cmlhbCBDZW50cmUsIEJsb2NrIDEKLQkJCQk1NyBUaW5nIEtvayBSb2FkLCBUYWkgUG8KLQkJCQlIT05HIEtPTkcKLQotMDAtMTItMkIgICAoaGV4KQkJVmlyYmlhZ2UgUHR5IEx0ZAotMDAxMjJCICAgICAoYmFzZSAxNikJCVZpcmJpYWdlIFB0eSBMdGQKLQkJCQlMZXZlbCA0Ci0JCQkJOCBNYXJrZXQgU3RyZWV0Ci0JCQkJTWVsYm91cm5lIFZpY3RvcmlhIDMwMDAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTItMkMgICAoaGV4KQkJU29lbmVuIENvbnRyb2xzIE4uVi4KLTAwMTIyQyAgICAgKGJhc2UgMTYpCQlTb2VuZW4gQ29udHJvbHMgTi5WLgotCQkJCVdpam5lZGFsZXN0cmFhdCAxOTAKLQkJCQlSb2VzZWxhcmUgVy1WTCA4ODAwCi0JCQkJQkVMR0lVTQotCi0wMC0xMi0yRCAgIChoZXgpCQlTaU5ldHQgQ29ycG9yYXRpb24KLTAwMTIyRCAgICAgKGJhc2UgMTYpCQlTaU5ldHQgQ29ycG9yYXRpb24KLQkJCQk2NDAgVy4gQ2FsaWZvcm5pYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTJFICAgKGhleCkJCVNpZ25hbCBUZWNobm9sb2d5IC0gQUlTRAotMDAxMjJFICAgICAoYmFzZSAxNikJCVNpZ25hbCBUZWNobm9sb2d5IC0gQUlTRAotCQkJCTE4MjAgUHJlc3RvbiBQYXJrIEJsdmQuCi0JCQkJU3VpdGUgMjgwMAotCQkJCVBsYW5vIFRYIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0yRiAgIChoZXgpCQlTYW5laSBFbGVjdHJpYyBJbmMuCi0wMDEyMkYgICAgIChiYXNlIDE2KQkJU2FuZWkgRWxlY3RyaWMgSW5jLgotCQkJCTVGIFRhaXNvdS1Ja2VidWt1cm8gQmxkZy4KLQkJCQkyLTYxLTEgSWtlYnVrdXJvCi0JCQkJVG9zaGltYS1rdSBUb2t5byAxNzEtMDAxNAotCQkJCUpBUEFOCi0KLTAwLTEyLTMwICAgKGhleCkJCVBpY2FzbyBJbmZvY29tbXVuaWNhdGlvbiBDTy4sIExURC4KLTAwMTIzMCAgICAgKGJhc2UgMTYpCQlQaWNhc28gSW5mb2NvbW11bmljYXRpb24gQ08uLCBMVEQuCi0JCQkJM0YsIFN1bnRlY2hjaXR5LCBTYW5nZGFld29uIDEtZG9uZywKLQkJCQk1MTMtMTUsIEp1bmd3b24tZ3UKLQkJCQlTdW5nbmFtLWNpdHkgS3l1bmdnaS1kbyA0NjItNzI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTMxICAgKGhleCkJCU1vdGlvbiBDb250cm9sIFN5c3RlbXMsIEluYy4KLTAwMTIzMSAgICAgKGJhc2UgMTYpCQlNb3Rpb24gQ29udHJvbCBTeXN0ZW1zLCBJbmMuCi0JCQkJUE8gQm94IDExNQotCQkJCTY3MDEgVmlzY29lIFJvYWQKLQkJCQlOZXcgUml2ZXIgVkEgMjQxMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTMyICAgKGhleCkJCUxlV2l6IENvbW11bmljYXRpb25zIEluYy4KLTAwMTIzMiAgICAgKGJhc2UgMTYpCQlMZVdpeiBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJMTM3NiBOLiA0dGggU3QuICMzMDAKLQkJCQlTYW4gSm9zZSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMzMgICAoaGV4KQkJSlJDIFRPS0tJIENvLixMdGQuCi0wMDEyMzMgICAgIChiYXNlIDE2KQkJSlJDIFRPS0tJIENvLixMdGQuCi0JCQkJMy0yLTEgU2hpbnlvc2hpZGFoaWdhc2hpIEtvaG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMy04NTcyCi0JCQkJSkFQQU4KLQotMDAtMTItMzQgICAoaGV4KQkJQ2FtaWxsZSBCYXVlcgotMDAxMjM0ICAgICAoYmFzZSAxNikJCUNhbWlsbGUgQmF1ZXIKLQkJCQlBYXJnYXVlcnN0ci4gNwotCQkJCVdvaGxlbiBBRyA1NjEwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTItMzUgICAoaGV4KQkJQW5kcmV3IENvcnBvcmF0aW9uCi0wMDEyMzUgICAgIChiYXNlIDE2KQkJQW5kcmV3IENvcnBvcmF0aW9uCi0JCQkJMjYwMSBUZWxlY29tIFBrd3kKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi0zNiAgIChoZXgpCQlDb25TZW50cnkgTmV0d29ya3MKLTAwMTIzNiAgICAgKGJhc2UgMTYpCQlDb25TZW50cnkgTmV0d29ya3MKLQkJCQkxNjkwIE1jQ2FuZGxlc3MgRHIKLQkJCQlNaWxpcGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTM3ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDEyMzcgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsCi0JCQkJTVMgODcyMwotCQkJCURhbGxhcyBUZXhhcyA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItMzggICAoaGV4KQkJU2V0YUJveCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMjM4ICAgICAoYmFzZSAxNikJCVNldGFCb3ggVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk5Ri0xLCBOby4gMjkzLTMsIFNlYzIsIEZ1LUhzaW5nIFMuIFJkLgotCQkJCVRhaXBlaSAgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi0zOSAgIChoZXgpCQlTIE5ldCBTeXN0ZW1zIEluYy4KLTAwMTIzOSAgICAgKGJhc2UgMTYpCQlTIE5ldCBTeXN0ZW1zIEluYy4KLQkJCQkxMEYgU3VuZ3dvbiBCbGRnLiBTYW1zdW5nLWRvbmcKLQkJCQlHYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItM0EgICAoaGV4KQkJUG9zeXN0ZWNoIEluYy4sIENvLgotMDAxMjNBICAgICAoYmFzZSAxNikJCVBvc3lzdGVjaCBJbmMuLCBDby4KLQkJCQlSb29tIDQwNywgRGFlcnl1bmcgVGVjaG5vIFRvd24gNiwKLQkJCQk0OTMtNiwgR2FzYW4tRG9uZywgR2V1bWNoZW9uLUd1LAotCQkJCVNlb3VsICAxNTMtNzcxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTNCICAgKGhleCkJCUtlUm8gU3lzdGVtcyBBcFMKLTAwMTIzQiAgICAgKGJhc2UgMTYpCQlLZVJvIFN5c3RlbXMgQXBTCi0JCQkJQWxsaWtldmVqIDMKLQkJCQlIw7hyc2hvbG0gIDI5NzAKLQkJCQlERU5NQVJLCi0KLTAwLTEyLTNDICAgKGhleCkJCVNlY29uZCBSdWxlIExMQwotMDAxMjNDICAgICAoYmFzZSAxNikJCVNlY29uZCBSdWxlIExMQwotCQkJCTQxMTkgV2FsbnV0IFN0cmVldAotCQkJCVN1aXRlIDIwMAotCQkJCVBoaWxhZGVscGhpYSBQQSAxOTEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItM0QgICAoaGV4KQkJR0VTCi0wMDEyM0QgICAgIChiYXNlIDE2KQkJR0VTCi0JCQkJUm9vbSA1NDAzLCBEb25nU2VvdWwgQ29sbGVnZSwgNDIzLCBCb2tqZW9uZy1Eb25nLCBTdWplb25nLUd1LCBTZW9uZ25hbS1TaSwgR3llb25nZ2ktRG8sCi0JCQkJR3llb25nZ2ktRG8gU2VvbmduYW0tU2kgNDYxLTcxNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi0zRSAgIChoZXgpCQlFUlVORSB0ZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMjNFICAgICAoYmFzZSAxNikJCUVSVU5FIHRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDQyOSwgQ2hpbi1TYW4gMm5kIHN0cmVldCwKLQkJCQlZYW5nLU1laQotCQkJCVRhbyBZdWFuICAzMjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLTNGICAgKGhleCkJCURlbGwgSW5jCi0wMDEyM0YgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrICBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNDAgICAoaGV4KQkJQU1PSSBFTEVDVFJPTklDUyBDTy4sTFRECi0wMDEyNDAgICAgIChiYXNlIDE2KQkJQU1PSSBFTEVDVFJPTklDUyBDTy4sTFRECi0JCQkJMjk1IExhbmUsWnVjaG9uZ3poaSBSb2FkLFpoYW5nIGppYW5nLAotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi0wMC0xMi00MSAgIChoZXgpCQlhMmkgbWFya2V0aW5nIGNlbnRlcgotMDAxMjQxICAgICAoYmFzZSAxNikJCWEyaSBtYXJrZXRpbmcgY2VudGVyCi0JCQkJMTAyNC00ICBEdWtzYW4gQmxkZyBCYW5nYmFlZG9uZyBTZW9jaG9ndSBTZW91bCBLb3JlYQotCQkJCVNFT1VMICAxMzctMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTQyICAgKGhleCkJCU1pbGxlbm5pYWwgTmV0Ci0wMDEyNDIgICAgIChiYXNlIDE2KQkJTWlsbGVubmlhbCBOZXQKLQkJCQkgMjg1IEJpbGxlcmljYSBSb2FkCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNDMgICAoaGV4KQkJQ2lzY28KLTAwMTI0MyAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi00NCAgIChoZXgpCQlDaXNjbwotMDAxMjQ0ICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTQ1ICAgKGhleCkJCVplbGx3ZWdlciBBbmFseXRpY3MsIEluYy4KLTAwMTI0NSAgICAgKGJhc2UgMTYpCQlaZWxsd2VnZXIgQW5hbHl0aWNzLCBJbmMuCi0JCQkJNDA1IEJhcmNsYXkgQmx2ZC4KLQkJCQlMaW5jb2xuc2hpcmUgSWxsaW5vaXMgNjAwNjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTQ2ICAgKGhleCkJCVQuTy5NIFRFQ0hOT0xPR1kgSU5DLi4KLTAwMTI0NiAgICAgKGJhc2UgMTYpCQlULk8uTSBURUNITk9MT0dZIElOQy4uCi0JCQkJOTA2IFdvb2xpbSBFLWJpeiBDZW50ZXIgMiwKLQkJCQlHdXJvLTNEb25nCi0JCQkJU2VvdWwgR3Vyby1HdSAxODQtMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi00NyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxMjQ3ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pLUNpdHkgR3llb25nLUJ1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTQ4ICAgKGhleCkJCUVNQyBDb3Jwb3JhdGlvbiAoS2FzaHlhKQotMDAxMjQ4ICAgICAoYmFzZSAxNikJCUVNQyBDb3Jwb3JhdGlvbiAoS2FzaHlhKQotCQkJCTE3NiBTb3V0aCBTdHJlZXQKLQkJCQlIb3BraW50b24gTUEgMDE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTQ5ICAgKGhleCkJCURlbHRhIEVsZXR0cm9uaWNhIFMucC5BLgotMDAxMjQ5ICAgICAoYmFzZSAxNikJCURlbHRhIEVsZXR0cm9uaWNhIFMucC5BLgotCQkJCVZpYSBBc3RpY28gNDEKLQkJCQlWYXJlc2UgIDIxMTAwCi0JCQkJSVRBTFkKLQotMDAtMTItNEEgICAoaGV4KQkJRGVkaWNhdGVkIERldmljZXMsIEluYy4KLTAwMTI0QSAgICAgKGJhc2UgMTYpCQlEZWRpY2F0ZWQgRGV2aWNlcywgSW5jLgotCQkJCTU2ODAgRS4gRnJhbmtsaW4KLQkJCQlTdWl0ZSAyNTAKLQkJCQlOYW1wYSBJZGFobyA4MzY4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNEIgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTI0QiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCUdhdXN0YWRhbGxlZW4gMjEKLQkJCQlUZXhhcyBJbnN0cnVtZW50cyBOb3J3YXkgQVMKLQkJCQlPc2xvICBOLTAzNDkKLQkJCQlOT1JXQVkKLQotMDAtMTItNEMgICAoaGV4KQkJQkJXTSBDb3Jwb3JhdGlvbgotMDAxMjRDICAgICAoYmFzZSAxNikJCUJCV00gQ29ycG9yYXRpb24KLQkJCQk2RiwgTm8uIDU3OCwgUnVpIEd1YW5nIFJvYWQsIE5laSBIdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi00RCAgIChoZXgpCQlJbmR1Y29uIEJWCi0wMDEyNEQgICAgIChiYXNlIDE2KQkJSW5kdWNvbiBCVgotCQkJCUtlcmtsYWFuIDI2Ci0JCQkJTGVpbXVpZGVuIFpIIDI1NDEgQ0cKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMi00RSAgIChoZXgpCQlYQUMgQVVUT01BVElPTiBDT1JQLgotMDAxMjRFICAgICAoYmFzZSAxNikJCVhBQyBBVVRPTUFUSU9OIENPUlAuCi0JCQkJNEYsIDMwIEluZHVzdHJ5IEUuIFJvYWQgSVgKLQkJCQlTY2llbmNlIFBhcmsKLQkJCQlIc2luLUNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi00RiAgIChoZXgpCQlUeWNvIFRoZXJtYWwgQ29udHJvbHMgTExDLgotMDAxMjRGICAgICAoYmFzZSAxNikJCVR5Y28gVGhlcm1hbCBDb250cm9scyBMTEMuCi0JCQkJMTEwMDQgLSAxNzQgU3QuCi0JCQkJRWRtb250b24gQWxiZXJ0YSBUNVMgMlAzCi0JCQkJQ0FOQURBCi0KLTAwLTEyLTUwICAgKGhleCkJCVRva3lvIEFpcmNhZnQgSW5zdHJ1bWVudCBDby4sIEx0ZC4KLTAwMTI1MCAgICAgKGJhc2UgMTYpCQlUb2t5byBBaXJjYWZ0IEluc3RydW1lbnQgQ28uLCBMdGQuCi0JCQkJMS0zNS0xLCBJenVtaS1Ib25jaG8KLQkJCQlLb21hZS1TaGkgVG9reW8gMjAxLTg1NTUKLQkJCQlKQVBBTgotCi0wMC0xMi01MSAgIChoZXgpCQlTSUxJTksKLTAwMTI1MSAgICAgKGJhc2UgMTYpCQlTSUxJTksKLQkJCQkxMyBSVUUgUE9NRVlTCi0JCQkJTEUgVEFJTExBTiAgMzMzMjAKLQkJCQlGUkFOQ0UKLQotMDAtMTItNTIgICAoaGV4KQkJQ2l0cm9uaXgsIExMQwotMDAxMjUyICAgICAoYmFzZSAxNikJCUNpdHJvbml4LCBMTEMKLQkJCQkzMDMwIFNFIExvb3AgODIwCi0JCQkJRm9ydCBXb3J0aCBUZXhhcyA3NjE0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNTMgICAoaGV4KQkJQXVkaW9EZXYgQUIKLTAwMTI1MyAgICAgKGJhc2UgMTYpCQlBdWRpb0RldiBBQgotCQkJCUthYmluZ2F0YW4gOQotCQkJCU1hbG3DtiAgU0UtMjEyIDM5Ci0JCQkJU1dFREVOCi0KLTAwLTEyLTU0ICAgKGhleCkJCVNwZWN0cmEgVGVjaG5vbG9naWVzIEhvbGRpbmdzIENvbXBhbnkgTHRkCi0wMDEyNTQgICAgIChiYXNlIDE2KQkJU3BlY3RyYSBUZWNobm9sb2dpZXMgSG9sZGluZ3MgQ29tcGFueSBMdGQKLQkJCQlVbml0IDEzMDEtMDksIFRvd2VyIElJCi0JCQkJUGFjaWZpYyBDZW50dXJ5IFBsYWNlLCBNb25na29rCi0JCQkJODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTEyLTU1ICAgKGhleCkJCU5ldEVmZmVjdCBJbmNvcnBvcmF0ZWQKLTAwMTI1NSAgICAgKGJhc2UgMTYpCQlOZXRFZmZlY3QgSW5jb3Jwb3JhdGVkCi0JCQkJOTIxMSBXYXRlcmZvcmQgQ2VudHJlIEJsdmQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlBdXN0aW4gVGV4YXMgNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTU2ICAgKGhleCkJCUxHIElORk9STUFUSU9OICYgQ09NTS4KLTAwMTI1NiAgICAgKGJhc2UgMTYpCQlMRyBJTkZPUk1BVElPTiAmIENPTU0uCi0JCQkJNDU5LTksS0FTQU4tRE9ORyxLVU1DSE9OLUdVLAotCQkJCVNFT1VMICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTU3ICAgKGhleCkJCUxlYXBDb21tIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIEluYy4KLTAwMTI1NyAgICAgKGJhc2UgMTYpCQlMZWFwQ29tbSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJUk0xODA0LTA1IFNvdXRoIFRvd2VyIEhvbmcgS29uZyBQbGF6YSwgTm8uMjgzIEh1YWloYWkgWmhvbmcgUm9hZAotCQkJCVNoYW5naGFpICAyMDAwMjEKLQkJCQlDSElOQQotCi0wMC0xMi01OCAgIChoZXgpCQlBY3RpdmlzIFBvbHNrYQotMDAxMjU4ICAgICAoYmFzZSAxNikJCUFjdGl2aXMgUG9sc2thCi0JCQkJU3dpZXJ6YXdza2EgNQotCQkJCVBvem5hbiBXaWVsa29wb2xza2EgNjAtMzIxCi0JCQkJUE9MQU5ECi0KLTAwLTEyLTU5ICAgKGhleCkJCVRIRVJNTyBFTEVDVFJPTiBLQVJMU1JVSEUKLTAwMTI1OSAgICAgKGJhc2UgMTYpCQlUSEVSTU8gRUxFQ1RST04gS0FSTFNSVUhFCi0JCQkJRElFU0VMU1RSQVNTRSA0Ci0JCQkJS0FSTFNSVUhFIEJBREVOIFfDg8WTUlRFTUJFUkcgNzYyMjcKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTVBICAgKGhleCkJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotMDAxMjVBICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotCQkJCU9uZSBNaWNyb3NvZnQgV2F5Ci0JCQkJUmVkbW9uZCBXYXNoaW5ndG9uIDk4MDUyLTYzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTVCICAgKGhleCkJCUtBSU1FSSBFTEVDVFJPTkkKLTAwMTI1QiAgICAgKGJhc2UgMTYpCQlLQUlNRUkgRUxFQ1RST05JCi0JCQkJMTQtM0YsIE5PLjgxLFNFQy4gMSxIU0lOLVRBSS1XVSBST0FELEhTSUNISUgsCi0JCQkJVEFJUEVJIEhTSUVOIEhTSUNISUggMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi01QyAgIChoZXgpCQlHcmVlbiBIaWxscyBTb2Z0d2FyZSwgSW5jLgotMDAxMjVDICAgICAoYmFzZSAxNikJCUdyZWVuIEhpbGxzIFNvZnR3YXJlLCBJbmMuCi0JCQkJMzAgV2VzdCBTb2xhIFN0cmVldAotCQkJCVNhbnRhIEJhcmJhcmEgQ0EgOTMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTVEICAgKGhleCkJCUN5YmVyTmV0IEluYy4KLTAwMTI1RCAgICAgKGJhc2UgMTYpCQlDeWJlck5ldCBJbmMuCi0JCQkJIzIwNSwgTG90dGUgU3VudGVjaCBDaXR5LCA1MTMtMTUKLQkJCQlTYW5nZGFld29uLWRvbmcsIENodW5nd29uLWd1Ci0JCQkJU3VuZ25hbSBLeXVuZ2dpIDQ2Mi04MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItNUUgICAoaGV4KQkJQ0FFTgotMDAxMjVFICAgICAoYmFzZSAxNikJCUNBRU4KLQkJCQl2aWEgVmV0cmFpYSwgMTEKLQkJCQlWaWFyZWdnaW8gTFVDQ0EgNTUwNDkKLQkJCQlJVEFMWQotCi0wMC0xMi01RiAgIChoZXgpCQlBV0lORCBJbmMuCi0wMDEyNUYgICAgIChiYXNlIDE2KQkJQVdJTkQgSW5jLgotCQkJCTE3Ri4sIE5vLiA4ODYtNSwgSnVuZ2plbmcgUmQKLQkJCQlKdW5naGUgQ2l0eQotCQkJCVRhaXBlaSBDb3VudHkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItNjAgICAoaGV4KQkJU3RhbnRvbiBNYWduZXRpY3MsaW5jLgotMDAxMjYwICAgICAoYmFzZSAxNikJCVN0YW50b24gTWFnbmV0aWNzLGluYy4KLQkJCQkzMDAwIFNXIDQybmQgU3RyZWV0Ci0JCQkJSG9sbHl3b29kIEZMIDMzMzEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi02MSAgIChoZXgpCQlBZGFwdGl4LCBJbmMKLTAwMTI2MSAgICAgKGJhc2UgMTYpCQlBZGFwdGl4LCBJbmMKLQkJCQkxNDA3IDExNnRoIEF2ZS4gTkUKLQkJCQlTdWl0ZSBFMjEwCi0JCQkJQmVsbGV2dWUgV0EgOTgwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTYyICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDEyNjIgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTEyLTYzICAgKGhleCkJCURhdGEgVm9pY2UgVGVjaG5vbG9naWVzIEdtYkgKLTAwMTI2MyAgICAgKGJhc2UgMTYpCQlEYXRhIFZvaWNlIFRlY2hub2xvZ2llcyBHbWJICi0JCQkJU3RvY2tob2xtZXIgQWxsZWUgMzJiCi0JCQkJRG9ydG11bmQgTlJXIEQtNDQyNjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLTY0ICAgKGhleCkJCWRhdW0gZWxlY3Ryb25pYyBnbWJoCi0wMDEyNjQgICAgIChiYXNlIDE2KQkJZGF1bSBlbGVjdHJvbmljIGdtYmgKLQkJCQlmbHVncGxhdHpzdHIuIDEwMAotCQkJCUZ1ZXJ0aCBCYXZhcmlhIDkwNzY4Ci0JCQkJR0VSTUFOWQotCi0wMC0xMi02NSAgIChoZXgpCQlFbmVyZHluZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTI2NSAgICAgKGJhc2UgMTYpCQlFbmVyZHluZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxOTM1IENvcmRlbGwgQ291cnQKLQkJCQlFbCBDYWpvbiBDQSA5MjAyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNjYgICAoaGV4KQkJU3dpc3Njb20gSG9zcGl0YWxpdHkgU2VydmljZXMgU0EKLTAwMTI2NiAgICAgKGJhc2UgMTYpCQlTd2lzc2NvbSBIb3NwaXRhbGl0eSBTZXJ2aWNlcyBTQQotCQkJCUNoZW1pbiBkZSBsJ0V0YW5nIDY1Ci0JCQkJMTIxMSBHZW5ldmEgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTItNjcgICAoaGV4KQkJTWF0c3VzaGl0YSBFbGVjdHJvbmljIENvbXBvbmVudHMgQ28uLCBMdGQuCi0wMDEyNjcgICAgIChiYXNlIDE2KQkJTWF0c3VzaGl0YSBFbGVjdHJvbmljIENvbXBvbmVudHMgQ28uLCBMdGQuCi0JCQkJMTAwNiBLYWRvbWEKLQkJCQlLYWRvbWEtQ2l0eSBPc2FrYSA1NzEtODUwNgotCQkJCUpBUEFOCi0KLTAwLTEyLTY4ICAgKGhleCkJCUlQUyBkLm8uby4KLTAwMTI2OCAgICAgKGJhc2UgMTYpCQlJUFMgZC5vLm8uCi0JCQkJQy4gTGp1YmxqYW5za2UgYnJpZ2FkZSAxNwotCQkJCUxqdWJsamFuYSAgU0ktMTAwMAotCQkJCVNMT1ZFTklBCi0KLTAwLTEyLTY5ICAgKGhleCkJCVZhbHVlIEVsZWN0cm9uaWNzCi0wMDEyNjkgICAgIChiYXNlIDE2KQkJVmFsdWUgRWxlY3Ryb25pY3MKLQkJCQlEb25nLWt3YW4gQi9ELCA1RiwgMTU2Ni0yCi0JCQkJU2VvY2hvLWRvbmcsIFNlb2Noby1ndQotCQkJCXNlb3VsICAxMzctODc0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEyLTZBICAgKGhleCkJCU9QVE9FTEVDVFJPTklDUyBDby4sIEx0ZC4KLTAwMTI2QSAgICAgKGJhc2UgMTYpCQlPUFRPRUxFQ1RST05JQ1MgQ28uLCBMdGQuCi0JCQkJMy0xS2FtaWFva2luaXNoaSAxLWNob21lCi0JCQkJS2F3YWd1Y2hpIFNhaXRhbWEgUHJlZi4gMzMzLTA4NDUKLQkJCQlKQVBBTgotCi0wMC0xMi02QiAgIChoZXgpCQlBc2NhbGFkZSBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0wMDEyNkIgICAgIChiYXNlIDE2KQkJQXNjYWxhZGUgQ29tbXVuaWNhdGlvbnMgTGltaXRlZAotCQkJCVVuaXQgMTAtMTEsIDM1L0YsIENhYmxlIFRWIFRvd2VyLAotCQkJCU5vLjkgSG9pIFNoaW5nIFJvYWQsIFRzdWVuIFdhbgotCQkJCUhPTkcgS09ORwotCi0wMC0xMi02QyAgIChoZXgpCQlWaXNvbmljIEx0ZC4KLTAwMTI2QyAgICAgKGJhc2UgMTYpCQlWaXNvbmljIEx0ZC4KLQkJCQkyNCBIYWJhcnplbCBTdC4KLQkJCQlUZWwgQXZpdiAgNjk3MTAKLQkJCQlJU1JBRUwKLQotMDAtMTItNkQgICAoaGV4KQkJVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLCBCZXJrZWxleQotMDAxMjZEICAgICAoYmFzZSAxNikJCVVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSwgQmVya2VsZXkKLQkJCQlFRUNTIERlcGFydG1lbnQKLQkJCQlCZXJrZWxleSBDQSA5NDcyMC0xNzc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi02RSAgIChoZXgpCQlTZWlkZWwgRWxla3Ryb25payBHbWJIIE5mZy5LRwotMDAxMjZFICAgICAoYmFzZSAxNikJCVNlaWRlbCBFbGVrdHJvbmlrIEdtYkggTmZnLktHCi0JCQkJRnJhdWVudGFsZXJzdHJhc3NlIDEwMAotCQkJCURldXRzY2hsYW5kc2JlcmcgU3RlaWVybWFyayA4NTMwCi0JCQkJQVVTVFJJQQotCi0wMC0xMi02RiAgIChoZXgpCQlSYXlzb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTI2RiAgICAgKGJhc2UgMTYpCQlSYXlzb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxRiBOby45IFImRCBSZC5JSSwgU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luLUNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi03MCAgIChoZXgpCQlOR0VTIERlbnJvIFN5c3RlbXMKLTAwMTI3MCAgICAgKGJhc2UgMTYpCQlOR0VTIERlbnJvIFN5c3RlbXMKLQkJCQk5MzE4IEdhaXRoZXIgUm9hZAotCQkJCUdhaXRoZXJzYnVyZyBNRCAyMDg3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNzEgICAoaGV4KQkJTWVhc3VyZW1lbnQgQ29tcHV0aW5nIENvcnAKLTAwMTI3MSAgICAgKGJhc2UgMTYpCQlNZWFzdXJlbWVudCBDb21wdXRpbmcgQ29ycAotCQkJCTE2IENvbW1lcmNlIEJsdmQKLQkJCQlNaWRkbGVib3JvIE1BIDAyMzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi03MiAgIChoZXgpCQlSZWR1eCBDb21tdW5pY2F0aW9ucyBMdGQuCi0wMDEyNzIgICAgIChiYXNlIDE2KQkJUmVkdXggQ29tbXVuaWNhdGlvbnMgTHRkLgotCQkJCVBPQiAxMDEKLQkJCQlNb2RpaW4gIDcxNzAwCi0JCQkJSVNSQUVMCi0KLTAwLTEyLTczICAgKGhleCkJCVN0b2tlIEluYwotMDAxMjczICAgICAoYmFzZSAxNikJCVN0b2tlIEluYwotCQkJCTIxODkgTGVnaG9ybiBTdHJlZXQKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi03NCAgIChoZXgpCQlOSVQgbGFiCi0wMDEyNzQgICAgIChiYXNlIDE2KQkJTklUIGxhYgotCQkJCVNrb3Jpbnkgc3RyLiwgNjUtMwotCQkJCU1pbnNrIE1pbnNrYXlhIG9ibC4gMjIwMDEzCi0JCQkJQkVMQVJVUwotCi0wMC0xMi03NSAgIChoZXgpCQlTZW50aWxsYSBDb3Jwb3JhdGlvbgotMDAxMjc1ICAgICAoYmFzZSAxNikJCVNlbnRpbGxhIENvcnBvcmF0aW9uCi0JCQkJMjAxIE1hcnNoYWxsIFN0cmVldAotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNzYgICAoaGV4KQkJQ0cgUG93ZXIgU3lzdGVtcyBJcmVsYW5kIExpbWl0ZWQKLTAwMTI3NiAgICAgKGJhc2UgMTYpCQlDRyBQb3dlciBTeXN0ZW1zIElyZWxhbmQgTGltaXRlZAotCQkJCUhlcmJlcnQgSG91c2UuLCBIYXJtb255IFJvdywgCi0JCQkJRHVibGluICBEMgotCQkJCUlSRUxBTkQKLQotMDAtMTItNzcgICAoaGV4KQkJS29yZW5peCBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDEyNzcgICAgIChiYXNlIDE2KQkJS29yZW5peCBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJMTFGLTEsIE5vLiAxMDgsIE1pblF1YW4gUmQuCi0JCQkJWGluZGlhbiBDaXR5IFRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLTc4ICAgKGhleCkJCUludGVybmF0aW9uYWwgQmFyIENvZGUKLTAwMTI3OCAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIEJhciBDb2RlCi0JCQkJMTYwIE9hayBTdHJlZXQKLQkJCQlHbGFzdG9uYnVyeSBDVCAwNjAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItNzkgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMTI3OSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5IFNvdXRoCi0JCQkJTVMwNzA0MDUKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi03QSAgIChoZXgpCQlTYW55dSBJbmR1c3RyeSBDby4sTHRkLgotMDAxMjdBICAgICAoYmFzZSAxNikJCVNhbnl1IEluZHVzdHJ5IENvLixMdGQuCi0JCQkJTWlkb3JpLWt1IEhha3VzYW4xLTExLTExCi0JCQkJWW9rb2hhbWEtc2hpIEthbmFnYXdhLWtlbiAyMjYtMDAwNgotCQkJCUpBUEFOCi0KLTAwLTEyLTdCICAgKGhleCkJCVZJQSBOZXR3b3JraW5nIFRlY2hub2xvZ2llcywgSW5jLgotMDAxMjdCICAgICAoYmFzZSAxNikJCVZJQSBOZXR3b3JraW5nIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCThGLDUzMywgQ2h1bmctQ2hlbmcgUm9hZCwgSHNpbi1UaWVuCi0JCQkJVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLTdDICAgKGhleCkJCVNXRUdPTiBBQgotMDAxMjdDICAgICAoYmFzZSAxNikJCVNXRUdPTiBBQgotCQkJCUJveCAzMDAKLQkJCQlLVsOD4oCeTlVNIFbDg+KAnlNUUkEgR8OD4oCTVEFMQU5EIFNFIDUzNSAyMwotCQkJCVNXRURFTgotCi0wMC0xMi03RCAgIChoZXgpCQlNb2JpbGVBcmlhCi0wMDEyN0QgICAgIChiYXNlIDE2KQkJTW9iaWxlQXJpYQotCQkJCTgwMCBXIEVsIENhbWlubyBSZWFsICMyNDAKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi03RSAgIChoZXgpCQlEaWdpdGFsIExpZmVzdHlsZXMgR3JvdXAsIEluYy4KLTAwMTI3RSAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIExpZmVzdHlsZXMgR3JvdXAsIEluYy4KLQkJCQk4MDEgU291dGggU2VudG91cyBBdmUuCi0JCQkJQ2l0eSBvZiBJbmR1c3RyeSBDQSA5MTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItN0YgICAoaGV4KQkJQ2lzY28KLTAwMTI3RiAgICAgKGJhc2UgMTYpCQlDaXNjbwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi04MCAgIChoZXgpCQlDaXNjbwotMDAxMjgwICAgICAoYmFzZSAxNikJCUNpc2NvCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTgxICAgKGhleCkJCU1hcmNoIE5ldHdvcmtzIFMucC5BLgotMDAxMjgxICAgICAoYmFzZSAxNikJCU1hcmNoIE5ldHdvcmtzIFMucC5BLgotCQkJCVZpYSBEZWkgTGF2b3JhdG9yaSBBdXRvYmlhbmNoaSBuLiAxLAotCQkJCURlc2lvIE1pbGFubyAyMDAzMwotCQkJCUlUQUxZCi0KLTAwLTEyLTgyICAgKGhleCkJCVFvdmlhCi0wMDEyODIgICAgIChiYXNlIDE2KQkJUW92aWEKLQkJCQk3NDcwIE5ldyBUZWNobm9sb2d5IFdheQotCQkJCVN1aXRlIEUKLQkJCQlGcmVkZXJpY2sgTUQgMjE3MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTgzICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAxMjgzICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTEyLTg0ICAgKGhleCkJCUxhYjMzIFNybAotMDAxMjg0ICAgICAoYmFzZSAxNikJCUxhYjMzIFNybAotCQkJCUMuc28gRi4gUGVycm9uZSAyNAotCQkJCUdlbm9hIEdFIDE2MTUyCi0JCQkJSVRBTFkKLQotMDAtMTItODUgICAoaGV4KQkJR2l6bW9uZG8gRXVyb3BlIEx0ZAotMDAxMjg1ICAgICAoYmFzZSAxNikJCUdpem1vbmRvIEV1cm9wZSBMdGQKLQkJCQkxIE1lYWRvdyBHYXRlIEF2ZW51ZQotCQkJCUZhcm5ib3JvdWdoIEJ1c2luZXNzIFBhcmsKLQkJCQlGYXJuYm9yb3VnaCBIYW1wc2hpcmUgR1UxNCA2RkcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMi04NiAgIChoZXgpCQlFTkRFVkNPIENPUlAKLTAwMTI4NiAgICAgKGJhc2UgMTYpCQlFTkRFVkNPIENPUlAKLQkJCQkzMDcwMCBSQU5DSE8gVklFSk8gUk9BRAotCQkJCVNBTiBKVUFOIENBUElTVFJBTk8gQ0EgOTI2NzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLTg3ICAgKGhleCkJCURpZ2l0YWwgRXZlcnl3aGVyZSBVbnRlcmhhbHR1bmdzZWxla3Ryb25payBHbWJICi0wMDEyODcgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBFdmVyeXdoZXJlIFVudGVyaGFsdHVuZ3NlbGVrdHJvbmlrIEdtYkgKLQkJCQlNYXJpYSBHYWlsZXIgU3RyYXNzZSAxNgotCQkJCVZpbGxhY2ggS8Okcm50ZW4gOTUwMAotCQkJCUFVU1RSSUEKLQotMDAtMTItODggICAoaGV4KQkJMldpcmUsIEluYwotMDAxMjg4ICAgICAoYmFzZSAxNikJCTJXaXJlLCBJbmMKLQkJCQkxNzA0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi04OSAgIChoZXgpCQlBZHZhbmNlIFN0ZXJpbGl6YXRpb24gUHJvZHVjdHMKLTAwMTI4OSAgICAgKGJhc2UgMTYpCQlBZHZhbmNlIFN0ZXJpbGl6YXRpb24gUHJvZHVjdHMKLQkJCQkzMyBUZWNobm9sb2d5IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLThBICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxMjhBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NSBOLiBVUyBId3kgNDUKLQkJCQlSb29tIG5vLiBNVy0xMTMKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLThCICAgKGhleCkJCVNlbnNvcnkgTmV0d29ya3MgSW5jCi0wMDEyOEIgICAgIChiYXNlIDE2KQkJU2Vuc29yeSBOZXR3b3JrcyBJbmMKLQkJCQlMZXZlbCA2LCAxNDAgV2lsbGlhbSBTdAotCQkJCUVhc3QgU3lkbmV5IE5TVyAyMDExCi0JCQkJQVVTVFJBTElBCi0KLTAwLTEyLThDICAgKGhleCkJCVdvb2R3YXJkIEdvdmVybm9yCi0wMDEyOEMgICAgIChiYXNlIDE2KQkJV29vZHdhcmQgR292ZXJub3IKLQkJCQkxMDAwIEUuIERyYWtlIFJvYWQKLQkJCQlGdC4gQ29sbGlucyBDTyA4MDUyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItOEQgICAoaGV4KQkJU1RCIERhdGVuc2VydmljZSBHbWJICi0wMDEyOEQgICAgIChiYXNlIDE2KQkJU1RCIERhdGVuc2VydmljZSBHbWJICi0JCQkJV2VpbnNiZXJnc3RyYXNzZSAxOTAKLQkJCQlLw7ZsbiBOUlcgNTA4MjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLThFICAgKGhleCkJCVEtRnJlZSBBU0EKLTAwMTI4RSAgICAgKGJhc2UgMTYpCQlRLUZyZWUgQVNBCi0JCQkJVGguIE93ZXNlbnNndC4gMzVjCi0JCQkJVHJvbmRoZWltIFNUIDc0NDMKLQkJCQlOT1JXQVkKLQotMDAtMTItOEYgICAoaGV4KQkJTW9udGlsaW8KLTAwMTI4RiAgICAgKGJhc2UgMTYpCQlNb250aWxpbwotCQkJCTEgbWFza2l0IHN0LgotCQkJCUhlcnR6ZWxpYSAgNDY3NjMKLQkJCQlJU1JBRUwKLQotMDAtMTItOTAgICAoaGV4KQkJS1lPV0EgRWxlY3RyaWMgJiBNYWNoaW5lcnkgQ29ycC4KLTAwMTI5MCAgICAgKGJhc2UgMTYpCQlLWU9XQSBFbGVjdHJpYyAmIE1hY2hpbmVyeSBDb3JwLgotCQkJCTQtOC0xNixNYXN1aXp1bWkKLQkJCQlLYW5hemF3YSBJc2hpa2F3YSA5MjEtODAyNQotCQkJCUpBUEFOCi0KLTAwLTEyLTkxICAgKGhleCkJCUtXUyBDb21wdXRlcnN5c3RlbWUgR21iSAotMDAxMjkxICAgICAoYmFzZSAxNikJCUtXUyBDb21wdXRlcnN5c3RlbWUgR21iSAotCQkJCUNhcmwgWmVpc3MgU3RyLiAxCi0JCQkJRXR0bGluZ2VuIEJXIDc2Mjc1Ci0JCQkJR0VSTUFOWQotCi0wMC0xMi05MiAgIChoZXgpCQlHcmlmZmluIFRlY2hub2xvZ3kKLTAwMTI5MiAgICAgKGJhc2UgMTYpCQlHcmlmZmluIFRlY2hub2xvZ3kKLQkJCQkxOTMwIEFpciBMYW5lIERyaXZlCi0JCQkJTmFzaHZpbGxlIFROIDM3MjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi05MyAgIChoZXgpCQlHRSBFbmVyZ3kKLTAwMTI5MyAgICAgKGJhc2UgMTYpCQlHRSBFbmVyZ3kKLQkJCQkxNTAxIFJvYW5va2UgQmx2ZC4KLQkJCQlSb29tIDI4MwotCQkJCVNhbGVtIFZBIDI0MTUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi05NCAgIChoZXgpCQlTVU1JVE9NTyBFTEVDVFJJQyBERVZJQ0UgSU5OT1ZBVElPTlMsIElOQwotMDAxMjk0ICAgICAoYmFzZSAxNikJCVNVTUlUT01PIEVMRUNUUklDIERFVklDRSBJTk5PVkFUSU9OUywgSU5DCi0JCQkJMTAwMCBLYW1pc3VraWF3YXJhLFNob3dhLWNobwotCQkJCU5ha2Frb21hLWd1biBZYW1hbmFzaGkgNDA5LTM4ODMKLQkJCQlKQVBBTgotCi0wMC0xMi05NSAgIChoZXgpCQlBaXdhcmUgSW5jLgotMDAxMjk1ICAgICAoYmFzZSAxNikJCUFpd2FyZSBJbmMuCi0JCQkJSi1Ub3dlciAyRgotCQkJCTEtMSBOaWtrb2NobwotCQkJCUZ1Y2h1LXNoaSBUb2t5byAxODMtMDA0NAotCQkJCUpBUEFOCi0KLTAwLTEyLTk2ICAgKGhleCkJCUFkZGxvZ2l4Ci0wMDEyOTYgICAgIChiYXNlIDE2KQkJQWRkbG9naXgKLQkJCQk0NTkgV2FsZAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItOTcgICAoaGV4KQkJTzJNaWNybywgSW5jLgotMDAxMjk3ICAgICAoYmFzZSAxNikJCU8yTWljcm8sIEluYy4KLQkJCQkzMTE4IFBhdHJpY2sgSGVucnkgRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItOTggICAoaGV4KQkJTUlDTyBFTEVDVFJJQyhTSEVOWkhFTikgTElNSVRFRAotMDAxMjk4ICAgICAoYmFzZSAxNikJCU1JQ08gRUxFQ1RSSUMoU0hFTlpIRU4pIExJTUlURUQKLQkJCQkyMS9GIEJsb2NrIEEsIEhhaWxydW4gQ29tcGxleCwgNjAyMSBTaGVuTmFuIEJsdmQuLCBTaGVuWmhlbiwgUFIgQ2hpbmEuCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTEyLTk5ICAgKGhleCkJCUt0ZWNoIFRlbGVjb21tdW5pY2F0aW9ucyBJbmMKLTAwMTI5OSAgICAgKGJhc2UgMTYpCQlLdGVjaCBUZWxlY29tbXVuaWNhdGlvbnMgSW5jCi0JCQkJMjE1NDAgUHJhaXJpZSBTdHJlZXQgVW5pdCBCCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItOUEgICAoaGV4KQkJSVJUIEVsZWN0cm9uaWNzIFB0eSBMdGQKLTAwMTI5QSAgICAgKGJhc2UgMTYpCQlJUlQgRWxlY3Ryb25pY3MgUHR5IEx0ZAotCQkJCTI2IEhvdGhhbSBQYXJhZGUKLQkJCQlBcnRhcm1vbiBOU1cgMjA2NAotCQkJCUFVU1RSQUxJQQotCi0wMC0xMi05QiAgIChoZXgpCQlFMlMgRWxlY3Ryb25pYyBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIFMuTC4KLTAwMTI5QiAgICAgKGJhc2UgMTYpCQlFMlMgRWxlY3Ryb25pYyBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIFMuTC4KLQkJCQlTYW50IEZlcnJhbiAxMAotCQkJCUJhcmNlbG9uYSAgMDgwMzEKLQkJCQlTUEFJTgotCi0wMC0xMi05QyAgIChoZXgpCQlZdWxpbmV0Ci0wMDEyOUMgICAgIChiYXNlIDE2KQkJWXVsaW5ldAotCQkJCTExRiwgU2FtaG9tb29sc2FuIEIvRCAyNzUtNiwgWWFuZ2phZS1kb25nCi0JCQkJU2VvY2hvIFNlb3VsIDEzNy05NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItOUQgICAoaGV4KQkJRmlyc3QgSW50ZXJuYXRpb25hbCBDb21wdXRlciBkbyBCcmFzaWwKLTAwMTI5RCAgICAgKGJhc2UgMTYpCQlGaXJzdCBJbnRlcm5hdGlvbmFsIENvbXB1dGVyIGRvIEJyYXNpbAotCQkJCVJvZG92aWEgQlIgNDU5Ci0JCQkJa20gMTIxIC0gRGlzdHJpdG8gSW5kdXN0cmlhbAotCQkJCVNhbnRhIFJpdGEgZG8gU2FwdWNhw60gTWluYXMgR2VyYWlzIAotCQkJCUJSQVpJTAotCi0wMC0xMi05RSAgIChoZXgpCQlTdXJmIENvbW11bmljYXRpb25zIEluYy4KLTAwMTI5RSAgICAgKGJhc2UgMTYpCQlTdXJmIENvbW11bmljYXRpb25zIEluYy4KLQkJCQlSb29tIDMxMywgM0YsIEJsZGcuNTIsIE5vLiAxOTUsIENodW5nIEhzaW5nIFJkLiwgU2VjIDQsIENodXR1bmcsIEhzaW5DaHUsIFRhaXdhbgotCQkJCUhzaW5DaHUgIDMxMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItOUYgICAoaGV4KQkJUkFFIFN5c3RlbXMKLTAwMTI5RiAgICAgKGJhc2UgMTYpCQlSQUUgU3lzdGVtcwotCQkJCTM3NzUgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUEwICAgKGhleCkJCU5lb01lcmlkaWFuIFNkbiBCaGQKLTAwMTJBMCAgICAgKGJhc2UgMTYpCQlOZW9NZXJpZGlhbiBTZG4gQmhkCi0JCQkJM0EtMSwgUGVyZGFuYSBUaGUgUGxhY2UKLQkJCQlKYWxhbiBQSlUgOC81RwotCQkJCUJhbmRhciBEYW1hbnNhcmEgUGVyZGFuYSBTZWxhbmdvciA0NzgyMAotCQkJCU1BTEFZU0lBCi0KLTAwLTEyLUExICAgKGhleCkJCUJsdWVQYWNrZXQgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDEyQTEgICAgIChiYXNlIDE2KQkJQmx1ZVBhY2tldCBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQkxMEYtMSwgTm8uIDQyMCwgU2VjLiAxLCBLZWVsdW5nIFJkLiwgMTEwLAotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi1BMiAgIChoZXgpCQlWSVRBCi0wMDEyQTIgICAgIChiYXNlIDE2KQkJVklUQQotCQkJCVBPIEJveCAxOTY1OAotCQkJCUZvdW50YWluIEhpbGxzIEFaIDg1MjY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1BMyAgIChoZXgpCQlUcnVzdCBJbnRlcm5hdGlvbmFsIEIuVi4KLTAwMTJBMyAgICAgKGJhc2UgMTYpCQlUcnVzdCBJbnRlcm5hdGlvbmFsIEIuVi4KLQkJCQlMYWFuIHZhbiBCYXJjZWxvbmEgNjAwCi0JCQkJRG9yZHJlY2h0IFp1aWQgaG9sbGFuZCAzMzE3IERECi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTItQTQgICAoaGV4KQkJVGhpbmdNYWdpYywgTExDCi0wMDEyQTQgICAgIChiYXNlIDE2KQkJVGhpbmdNYWdpYywgTExDCi0JCQkJT25lIEJyb2Fkd2F5Ci0JCQkJMTR0aCBGbG9vcgotCQkJCUNhbWJyaWRnZSBNQSAwMjE0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQTUgICAoaGV4KQkJU3RhcmdlbiwgSW5jLgotMDAxMkE1ICAgICAoYmFzZSAxNikJCVN0YXJnZW4sIEluYy4KLQkJCQkyMjUgQ2VkYXIgSGlsbCBTdHJlZXQKLQkJCQlNYXJsYm9yb3VnaCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQTYgICAoaGV4KQkJRG9sYnkgQXVzdHJhbGlhCi0wMDEyQTYgICAgIChiYXNlIDE2KQkJRG9sYnkgQXVzdHJhbGlhCi0JCQkJTGV2ZWwgNgotCQkJCTEzNiBDaGFsbWVycyBTdHJlZXQKLQkJCQlTdXJyeSBIaWxscyBOU1cgMjAxMAotCQkJCUFVU1RSQUxJQQotCi0wMC0xMi1BNyAgIChoZXgpCQlJU1IgVEVDSE5PTE9HSUVTIEluYwotMDAxMkE3ICAgICAoYmFzZSAxNikJCUlTUiBURUNITk9MT0dJRVMgSW5jCi0JCQkJMTEwMCwgcnVlIE5vdHJlLURhbWUgT3Vlc3QKLQkJCQlNb250cmVhbCBRdWViZWMgSDNDIDFLMwotCQkJCUNBTkFEQQotCi0wMC0xMi1BOCAgIChoZXgpCQlpbnRlYyBHbWJICi0wMDEyQTggICAgIChiYXNlIDE2KQkJaW50ZWMgR21iSAotCQkJCVJhaG1lZGVzdHIuIDkwCi0JCQkJTHVlZGVuc2NoZWlkIE5SVyA1ODUwNwotCQkJCUdFUk1BTlkKLQotMDAtMTItQTkgICAoaGV4KQkJM0NvbSBMdGQKLTAwMTJBOSAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cyBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTItQUEgICAoaGV4KQkJSUVFLCBJbmMuCi0wMDEyQUEgICAgIChiYXNlIDE2KQkJSUVFLCBJbmMuCi0JCQkJNzc0MCBMZW1vbmEgQXZlbnVlCi0JCQkJVmFuIE51eXMsIENBIDkxNDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1BQiAgIChoZXgpCQlXaUxpZmUsIEluYy4KLTAwMTJBQiAgICAgKGJhc2UgMTYpCQlXaUxpZmUsIEluYy4KLQkJCQkxMzIgRS4gMTMwNjUgUy4sIFN1aXRlIDE1MAotCQkJCURyYXBlciBVVCA4NDAyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQUMgICAoaGV4KQkJT05USU1FVEVLIElOQy4KLTAwMTJBQyAgICAgKGJhc2UgMTYpCQlPTlRJTUVURUsgSU5DLgotCQkJCTlGbC4sT3duZXIncyBUb3dlcgotCQkJCTE2LTUsIFN1bmFlLURvbmcsIEJ1bmRhbmctR3UKLQkJCQlTdW5nbmFtLVNpIEt5dW5nZ2ktRG8gNDYzLTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi1BRCAgIChoZXgpCQlJRFMgR21iSAotMDAxMkFEICAgICAoYmFzZSAxNikJCUlEUyBHbWJICi0JCQkJTm9iZWxzdHIsIDE4Ci0JCQkJRXR0bGluZ2VuIEJhZGVuLVfDvHJ0dGVtYmVyZyA3NjI3NQotCQkJCUdFUk1BTlkKLQotMDAtMTItQUUgICAoaGV4KQkJSExTIEhBUkQtTElORSBTb2x1dGlvbnMgSW5jLgotMDAxMkFFICAgICAoYmFzZSAxNikJCUhMUyBIQVJELUxJTkUgU29sdXRpb25zIEluYy4KLQkJCQk1MyBNYWluIFN0cmVldAotCQkJCURvd2xpbmcgT250YXJpbyBQME0gMVIwCi0JCQkJQ0FOQURBCi0KLTAwLTEyLUFGICAgKGhleCkJCUVMUFJPIFRlY2hub2xvZ2llcwotMDAxMkFGICAgICAoYmFzZSAxNikJCUVMUFJPIFRlY2hub2xvZ2llcwotCQkJCTkgLyAxMiBCaWxsYWJvbmcgU3QuCi0JCQkJU3RhZmZvcmQgUXVlZW5zbGFuZCA0MDUzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTEyLUIwICAgKGhleCkJCUVmb3JlIE95aiAgIChQbGMpCi0wMDEyQjAgICAgIChiYXNlIDE2KQkJRWZvcmUgT3lqICAgKFBsYykKLQkJCQlRdWFydGV0dG8gQnVzaW5lc3MgUGFyawotCQkJCUxpbm5vaXR1c3RpZSA0IEIKLQkJCQlFc3BvbyAgRkkgLSAwMjYwMAotCQkJCUZJTkxBTkQKLQotMDAtMTItQjEgICAoaGV4KQkJRGFpIE5pcHBvbiBQcmludGluZyBDby4sIEx0ZAotMDAxMkIxICAgICAoYmFzZSAxNikJCURhaSBOaXBwb24gUHJpbnRpbmcgQ28uLCBMdGQKLQkJCQkyLTgtMjEsQWthYmFuZS1taW5hbWkKLQkJCQlLaXRhLWt1IFRva3lvIDExNS0wMDQ0Ci0JCQkJSkFQQU4KLQotMDAtMTItQjIgICAoaGV4KQkJQVZPTElURVMgTFRELgotMDAxMkIyICAgICAoYmFzZSAxNikJCUFWT0xJVEVTIExURC4KLQkJCQkxODQgUEFSSyBBVkVOVUUKLQkJCQlMT05ET04gIE5XMTAgN1hMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTItQjMgICAoaGV4KQkJQWR2YW5jZSBXaXJlbGVzcyBUZWNobm9sb2d5IENvcnAuCi0wMDEyQjMgICAgIChiYXNlIDE2KQkJQWR2YW5jZSBXaXJlbGVzcyBUZWNobm9sb2d5IENvcnAuCi0JCQkJMTJGIE5vLiAyNy02LCBTZWMuIDIsIENodW5nIENoZW5nIEVhc3QgUm9hZAotCQkJCVRhbXNodWkgIDI1MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItQjQgICAoaGV4KQkJV29yayBNaWNyb3dhdmUgR21iSAotMDAxMkI0ICAgICAoYmFzZSAxNikJCVdvcmsgTWljcm93YXZlIEdtYkgKLQkJCQlSYWlmZmVpc2Vuc3RyYXNzZSAxMgotCQkJCUhvbHpraXJjaGVuICA4MzYwNwotCQkJCUdFUk1BTlkKLQotMDAtMTItQjUgICAoaGV4KQkJVmlhbHRhLCBJbmMuCi0wMDEyQjUgICAgIChiYXNlIDE2KQkJVmlhbHRhLCBJbmMuCi0JCQkJNDg0NjEgRnJlbW9udCBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUI2ICAgKGhleCkJCVNhbnRhIEJhcmJhcmEgSW5mcmFyZWQsIEluYy4KLTAwMTJCNiAgICAgKGJhc2UgMTYpCQlTYW50YSBCYXJiYXJhIEluZnJhcmVkLCBJbmMuCi0JCQkJMzAgUy4gQ2FsbGUgQ2VzYXIgQ2hhdmV6Ci0JCQkJU3VpdGUgRAotCQkJCVNhbnRhIEJhcmJhcmEgQ0EgOTMxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUI3ICAgKGhleCkJCVBUVyBGcmVpYnVyZwotMDAxMkI3ICAgICAoYmFzZSAxNikJCVBUVyBGcmVpYnVyZwotCQkJCUxvZXJyYWNoZXIgU3RyYXNzZSA3Ci0JCQkJRnJlaWJ1cmcgIDc5MTE1Ci0JCQkJR0VSTUFOWQotCi0wMC0xMi1COCAgIChoZXgpCQlHMiBNaWNyb3N5c3RlbXMKLTAwMTJCOCAgICAgKGJhc2UgMTYpCQlHMiBNaWNyb3N5c3RlbXMKLQkJCQk0MDggRXVjbGlkIEF2ZQotCQkJCU9ha2xhbmQgQ0EgOTQ2MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUI5ICAgKGhleCkJCUZ1c2lvbiBEaWdpdGFsIFRlY2hub2xvZ3kKLTAwMTJCOSAgICAgKGJhc2UgMTYpCQlGdXNpb24gRGlnaXRhbCBUZWNobm9sb2d5Ci0JCQkJVmljdG9yaWEgTWV3cywgMjMgTWlsbGZpZWxkIFJvYWQKLQkJCQlDb3R0aW5nbGV5IEJ1c2luZXNzIFBhcmsKLQkJCQlCaW5nbGV5IFdlc3QgWW9ya3NoaXJlIEJEMTYgMVBZCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTItQkEgICAoaGV4KQkJRlNJIFN5c3RlbXMsIEluYy4KLTAwMTJCQSAgICAgKGJhc2UgMTYpCQlGU0kgU3lzdGVtcywgSW5jLgotCQkJCTU4NDcgQ291bnR5IFJvYWQgNDEKLQkJCQlGYXJtaW5ndG9uIE5ZIDE0NDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1CQiAgIChoZXgpCQlUZWxlY29tbXVuaWNhdGlvbnMgSW5kdXN0cnkgQXNzb2NpYXRpb24gVFItNDEgQ29tbWl0dGVlCi0wMDEyQkIgICAgIChiYXNlIDE2KQkJVGVsZWNvbW11bmljYXRpb25zIEluZHVzdHJ5IEFzc29jaWF0aW9uIFRSLTQxIENvbW1pdHRlZQotCQkJCTI1MDAgV2lsc29uIEJsdmQuLCBTdWl0ZSAzMDAKLQkJCQlBcmxpbmd0b24gVkEgMjIyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUJDICAgKGhleCkJCUVjaG9sYWIgTExDCi0wMDEyQkMgICAgIChiYXNlIDE2KQkJRWNob2xhYiBMTEMKLQkJCQkyNjcgQm9zdG9uIFJvYWQKLQkJCQlTdWl0ZSAxMQotCQkJCUJpbGxlcmljYSBNQSAwMTg2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQkQgICAoaGV4KQkJQXZhbnRlYyBNYW51ZmFjdHVyaW5nIExpbWl0ZWQKLTAwMTJCRCAgICAgKGJhc2UgMTYpCQlBdmFudGVjIE1hbnVmYWN0dXJpbmcgTGltaXRlZAotCQkJCVVuaXQgTCwgNy9GLCBDYW1lbHBhaW50IEJsZGcsIEJsb2NrIDMKLQkJCQk2MCBIb2kgWXVlbiBSb2FkLCBLd3VuIFRvbmcsIEtvd2xvb24KLQkJCQk4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMTItQkUgICAoaGV4KQkJQXN0ZWsgQ29ycG9yYXRpb24KLTAwMTJCRSAgICAgKGJhc2UgMTYpCQlBc3RlayBDb3Jwb3JhdGlvbgotCQkJCTUwNTUgQ29ycG9yYXRlIFBsYXphIERyaXZlCi0JCQkJQ29sb3JhZG8gU3ByaW5ncyBDb2xvcmFkbyA4MDkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQkYgICAoaGV4KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxMkJGICAgICAoYmFzZSAxNikJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk0RiwgTm8uIDksIFBhcmsgQXZlbnVlIElJCi0JCQkJU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLUMwICAgKGhleCkJCUhvdExhdmEgU3lzdGVtcywgSW5jLgotMDAxMkMwICAgICAoYmFzZSAxNikJCUhvdExhdmEgU3lzdGVtcywgSW5jLgotCQkJCTYzMjkgQ2hlbHRvbiBEcml2ZQotCQkJCU9ha2xhbmQgQ0EgOTQ2MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUMxICAgKGhleCkJCUNoZWNrIFBvaW50IFNvZnR3YXJlIFRlY2hub2xvZ2llcwotMDAxMkMxICAgICAoYmFzZSAxNikJCUNoZWNrIFBvaW50IFNvZnR3YXJlIFRlY2hub2xvZ2llcwotCQkJCTUgSGEnc29sZWxpbSBTdC4KLQkJCQlUZWwgQXZpdiAgNjc4OTcKLQkJCQlJU1JBRUwKLQotMDAtMTItQzIgICAoaGV4KQkJQXBleCBFbGVjdHJvbmljcyBGYWN0b3J5Ci0wMDEyQzIgICAgIChiYXNlIDE2KQkJQXBleCBFbGVjdHJvbmljcyBGYWN0b3J5Ci0JCQkJTm8uMyBJbmR1c3RyaWFsIFpvbmUsIE5vLjQgQmxvY2ssCi0JCQkJRnUneW9uZyBUb3duLCBCYW8nYW4gRGlzdHJpY3QKLQkJCQlTaGVuIFpoZW4gR3VhbmcgRG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi0wMC0xMi1DMyAgIChoZXgpCQlXSVQgUy5BLgotMDAxMkMzICAgICAoYmFzZSAxNikJCVdJVCBTLkEuCi0JCQkJMTM4IGF2ZW51ZSBMw6lvbiBCw6lyZW5nZXIKLQkJCQlTYWludCBMYXVyZW50IGR1IFZhciBQQUNBIDA2NzAwCi0JCQkJRlJBTkNFCi0KLTAwLTEyLUM0ICAgKGhleCkJCVZpc2VvbiwgSW5jLgotMDAxMkM0ICAgICAoYmFzZSAxNikJCVZpc2VvbiwgSW5jLgotCQkJCTg0NDUgRnJlZXBvcnQgUGFya3dheQotCQkJCVN1aXRlIDI0NQotCQkJCUlydmluZyBUZXhhcyA3NTA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItQzUgICAoaGV4KQkJVi1TaG93ICBUZWNobm9sb2d5IChDaGluYSkgQ28uLEx0ZAotMDAxMkM1ICAgICAoYmFzZSAxNikJCVYtU2hvdyAgVGVjaG5vbG9neSAoQ2hpbmEpIENvLixMdGQKLQkJCQk3RiwgVGVuZ2RhIFBsYXphLCBOby4xNjgKLQkJCQlYaXpoaW1lbiBXYWkgU3RyZWV0LAotCQkJCUhhaURpYW4gRGlzdHJpY3QsIEJlaWppbmcgMTAwMDg5Ci0JCQkJQ0hJTkEKLQotMDAtMTItQzYgICAoaGV4KQkJVEdDIEFtZXJpY2EsIEluYwotMDAxMkM2ICAgICAoYmFzZSAxNikJCVRHQyBBbWVyaWNhLCBJbmMKLQkJCQkyOTAxIFRhc21hbiBEcml2ZSwgU3VpdGUgMTExCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUM3ICAgKGhleCkJCVNFQ1VSQVkgVGVjaG5vbG9naWVzIEx0ZC5Dby4KLTAwMTJDNyAgICAgKGJhc2UgMTYpCQlTRUNVUkFZIFRlY2hub2xvZ2llcyBMdGQuQ28uCi0JCQkJVGlhbmppbiBIYWl0YWkgSW5kdXN0cmlhbCBCYXNlIEVyV2VpIFJvYWQKLQkJCQlOby4gNiBCbG9jayBGIDgtNDAxCi0JCQkJVGlhbmppbiAgMzAwMzg0Ci0JCQkJQ0hJTkEKLQotMDAtMTItQzggICAoaGV4KQkJUGVyZmVjdCB0ZWNoCi0wMDEyQzggICAgIChiYXNlIDE2KQkJUGVyZmVjdCB0ZWNoCi0JCQkJM0YsTm8uOSxMQU5FMTc1LE5BTktBTiBSRC4sCi0JCQkJTFVKSFUgVEFPWVVBTiAzMzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLUM5ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxMkM5ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUNBICAgKGhleCkJCU1lY2hhdHJvbmljIEJyaWNrIEFwcwotMDAxMkNBICAgICAoYmFzZSAxNikJCU1lY2hhdHJvbmljIEJyaWNrIEFwcwotCQkJCUFsc2lvbiAyCi0JCQkJNjQwMCBTb25kZXJib3JnIAotCQkJCURFTk1BUksKLQotMDAtMTItQ0IgICAoaGV4KQkJQ1NTIEluYy4KLTAwMTJDQiAgICAgKGJhc2UgMTYpCQlDU1MgSW5jLgotCQkJCTE1MSBTdXBlcmlvciBCbHZkLgotCQkJCVVuaXQgMTMgJiAxNAotCQkJCU1pc3Npc3NhdWdhIE9udGFyaW8gTDVUMkwxCi0JCQkJQ0FOQURBCi0KLTAwLTEyLUNDICAgKGhleCkJCUJpdGF0ZWsgQ08uLCBMVEQKLTAwMTJDQyAgICAgKGJhc2UgMTYpCQlCaXRhdGVrIENPLiwgTFRECi0JCQkJNkYtMSwxOTAsVGEtVHVuZyBSb2FkLFNFQy4gMywKLQkJCQlIc2ljaGloIFRhaXBlaSBjb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi1DRCAgIChoZXgpCQlBU0VNIFNwQQotMDAxMkNEICAgICAoYmFzZSAxNikJCUFTRU0gU3BBCi0JCQkJVmlhIEJ1aWEsIDQKLQkJCQlBUlRFR05BIFVkaW5lIEktMzMwMTEKLQkJCQlJVEFMWQotCi0wMC0xMi1DRSAgIChoZXgpCQlBZHZhbmNlZCBDeWJlcm5ldGljcyBHcm91cAotMDAxMkNFICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIEN5YmVybmV0aWNzIEdyb3VwCi0JCQkJMjk1MyBCdW5rZXIgSGlsbCBMYW5lCi0JCQkJU3VpdGUgNDAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUNGICAgKGhleCkJCUFjY3RvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDEyQ0YgICAgIChiYXNlIDE2KQkJQWNjdG9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQlOby4gMSBDcmVhdGlvbiBSZC4gSUlJLCBTY2llbmNlLWJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItRDAgICAoaGV4KQkJR29zc2VuLU1ldHJhd2F0dC1HbWJICi0wMDEyRDAgICAgIChiYXNlIDE2KQkJR29zc2VuLU1ldHJhd2F0dC1HbWJICi0JCQkJVGhvbWFzLU1hbm4tU3RyLiAxNi0yMAotCQkJCU7DvHJuYmVyZyBCYXZhcmlhIDkwNDcxCi0JCQkJR0VSTUFOWQotCi0wMC0xMi1EMSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cyBJbmMKLTAwMTJEMSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cyBJbmMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsCi0JCQkJTVMgODcyMwotCQkJCURhbGxhcyBUZXhhcyA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRDIgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTJEMiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCU1TIDg3MjMKLQkJCQlEYWxsYXMgVGV4YXMgNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUQzICAgKGhleCkJCVpldHRhIFN5c3RlbXMsIEluYy4KLTAwMTJEMyAgICAgKGJhc2UgMTYpCQlaZXR0YSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTczMTEgMTM1dGggQVZFIE5FCi0JCQkJU3VpdGUgQjkwMAotCQkJCVdvb2RpbnZpbGxlIFdBIDk4MDcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1ENCAgIChoZXgpCQlQcmluY2V0b24gVGVjaG5vbG9neSwgTHRkCi0wMDEyRDQgICAgIChiYXNlIDE2KQkJUHJpbmNldG9uIFRlY2hub2xvZ3ksIEx0ZAotCQkJCUsuQS5JLiBCbGRnLiAzRgotCQkJCTMtOS01IEl3YW1vdG8tY2hvCi0JCQkJQ2hpeW9kYWt1IFRva3lvIDEwMS0wMDMyCi0JCQkJSkFQQU4KLQotMDAtMTItRDUgICAoaGV4KQkJTW90aW9uIFJlYWxpdHkgSW5jLgotMDAxMkQ1ICAgICAoYmFzZSAxNikJCU1vdGlvbiBSZWFsaXR5IEluYy4KLQkJCQkyMDAgTm9ydGggQ29iYiBQYXJrd2F5Ci0JCQkJU3VpdGUgMTQwCi0JCQkJTWFyaWV0dGEgR0EgMzAwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUQ2ICAgKGhleCkJCUppYW5nc3UgWWl0b25nIEhpZ2gtVGVjaCBDby4sTHRkCi0wMDEyRDYgICAgIChiYXNlIDE2KQkJSmlhbmdzdSBZaXRvbmcgSGlnaC1UZWNoIENvLixMdGQKLQkJCQlObyAyMTYgSHVhbmdoZSBSb2FkCi0JCQkJQ2hhbmdzaHUgSmlhbmdzdSAyMTU1MDAKLQkJCQlDSElOQQotCi0wMC0xMi1ENyAgIChoZXgpCQlJbnZlbnRvIE5ldHdvcmtzLCBJbmMuCi0wMDEyRDcgICAgIChiYXNlIDE2KQkJSW52ZW50byBOZXR3b3JrcywgSW5jLgotCQkJCTM3NyBTaW1hcmFubyBEcml2ZQotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1EOCAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIEdhbWVzIFN5c3RlbSBDby4sIEx0ZC4KLTAwMTJEOCAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIEdhbWVzIFN5c3RlbSBDby4sIEx0ZC4KLQkJCQlOby4xMzAsIFd1LUd1bmcgUmQuLCBXdS1HdSBJbmR1c3RyaWFsIFBhcmssCi0JCQkJVGFpcGVpICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEyLUQ5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTJEOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLURBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTJEQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLURCICAgKGhleCkJCVpJRUhMIGluZHVzdHJpZS1lbGVrdHJvbmlrIEdtYkggKyBDbyBLRwotMDAxMkRCICAgICAoYmFzZSAxNikJCVpJRUhMIGluZHVzdHJpZS1lbGVrdHJvbmlrIEdtYkggKyBDbyBLRwotCQkJCURhaW1sZXJzdHIuIDEzCi0JCQkJU2Nod2FlYmlzY2ggSGFsbCAgNzQ1MjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLURDICAgKGhleCkJCVN1bkNvcnAgSW5kdXN0cmlhbCBMaW1pdGVkCi0wMDEyREMgICAgIChiYXNlIDE2KQkJU3VuQ29ycCBJbmR1c3RyaWFsIExpbWl0ZWQKLQkJCQlOby42OCBHdW93ZWkgUm9hZCwKLQkJCQlMaWFudGFuZyBJbmR1c3RyaWFsIERpc3RyaWN0LCBTaGVuemhlbiwgCi0JCQkJQ0hJTkEKLQotMDAtMTItREQgICAoaGV4KQkJU2hlbmdxdSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0wMDEyREQgICAgIChiYXNlIDE2KQkJU2hlbmdxdSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0JCQkJTm8uMSBCdWlsZGluZyxOby4gNjkwIEJpYm8gUm9hZCxQdWRvbmcgTmV3IEFyZWEKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMDAtMTItREUgICAoaGV4KQkJUmFkaW8gQ29tcG9uZW50cyBTd2VkZW4gQUIKLTAwMTJERSAgICAgKGJhc2UgMTYpCQlSYWRpbyBDb21wb25lbnRzIFN3ZWRlbiBBQgotCQkJCVZpZGVyb2dhdGFuIDNCCi0JCQkJS2lzdGEgU3RvY2tob2xtIDE2NDIyCi0JCQkJU1dFREVOCi0KLTAwLTEyLURGICAgKGhleCkJCU5vdm9tYXRpYyBBRwotMDAxMkRGICAgICAoYmFzZSAxNikJCU5vdm9tYXRpYyBBRwotCQkJCVdpZW5lciBTdHJhc3NlIDE1OAotCQkJCUd1bXBvbGRza2lyY2hlbiBOaWVkZXLDtnN0ZXJyZWljaCBBLTIzNTIKLQkJCQlBVVNUUklBCi0KLTAwLTEyLUUwICAgKGhleCkJCUNvZGFuIExpbWl0ZWQKLTAwMTJFMCAgICAgKGJhc2UgMTYpCQlDb2RhbiBMaW1pdGVkCi0JCQkJODEgR3JhdmVzIFN0cmVldAotCQkJCU5ld3RvbiBTb3V0aCA1MDc0Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTEyLUUxICAgKGhleCkJCUFsbGlhbnQgTmV0d29ya3MsIEluYwotMDAxMkUxICAgICAoYmFzZSAxNikJCUFsbGlhbnQgTmV0d29ya3MsIEluYwotCQkJCTEyNTkgQmlyY2h3b29kIERyLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRTIgICAoaGV4KQkJQUxBWEFMQSBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAxMkUyICAgICAoYmFzZSAxNikJCUFMQVhBTEEgTmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQk4OTAgS2FzaGltYWRhLCBTYWl3YWkta3UKLQkJCQlLYXdhc2FraS1zaGkgS2FuYWdhd2Eta2VuIDIxMi0wMDU4Ci0JCQkJSkFQQU4KLQotMDAtMTItRTMgICAoaGV4KQkJQWdhdC1SVCwgTHRkLgotMDAxMkUzICAgICAoYmFzZSAxNikJCUFnYXQtUlQsIEx0ZC4KLQkJCQkxMDEgcHIuIE1pcmEgIzEyMjAsCi0JCQkJTW9zY293ICAxMjkwODUKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTItRTQgICAoaGV4KQkJWklFSEwgaW5kdXN0cmllLWVsZWN0cm9uaWsgR21iSCArIENvIEtHCi0wMDEyRTQgICAgIChiYXNlIDE2KQkJWklFSEwgaW5kdXN0cmllLWVsZWN0cm9uaWsgR21iSCArIENvIEtHCi0JCQkJRGFpbWxlcnN0ci4gMTMKLQkJCQlTY2h3YWViaXNjaCBIYWxsICA3NDUyMwotCQkJCUdFUk1BTlkKLQotMDAtMTItRTUgICAoaGV4KQkJVGltZSBBbWVyaWNhLCBJbmMuCi0wMDEyRTUgICAgIChiYXNlIDE2KQkJVGltZSBBbWVyaWNhLCBJbmMuCi0JCQkJNTEgVy4gM3JkIFN0cmVldCAjMzEwCi0JCQkJVGVtcGUgQVogODUyODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUU2ICAgKGhleCkJCVNQRUNURUMgQ09NUFVURVIgQ08uLCBMVEQuCi0wMDEyRTYgICAgIChiYXNlIDE2KQkJU1BFQ1RFQyBDT01QVVRFUiBDTy4sIExURC4KLQkJCQk2Ri4sIE5vLiA5MiwgTmFua2luZyBFLiBSZC4gU2VjLiA1LAotCQkJCVRhaXBlaSAgMTA1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMi1FNyAgIChoZXgpCQlQcm9qZWN0ZWsgTmV0d29ya2luZyBFbGVjdHJvbmljcyBDb3JwLgotMDAxMkU3ICAgICAoYmFzZSAxNikJCVByb2plY3RlayBOZXR3b3JraW5nIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJNUYtOSwgTm8uIDE2LCBMYW5lIDYwOSwgU2VjLiA1LCBDaHVuZ3NoaW4gUmQuLAotCQkJCVNhbmNodW5nLCBUYWlwZWkgIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTItRTggICAoaGV4KQkJRnJhdW5ob2ZlciBJTVMKLTAwMTJFOCAgICAgKGJhc2UgMTYpCQlGcmF1bmhvZmVyIElNUwotCQkJCUZpbmtlbnN0cmFzc2UgNjEKLQkJCQlEdWlzYnVyZyBOUlcgNDcwNTcKLQkJCQlHRVJNQU5ZCi0KLTAwLTEyLUU5ICAgKGhleCkJCUFiYmV5IFN5c3RlbXMgTHRkCi0wMDEyRTkgICAgIChiYXNlIDE2KQkJQWJiZXkgU3lzdGVtcyBMdGQKLQkJCQlMZXZlbCA0LCAyMjAgV2lsbGlzIFN0Ci0JCQkJUE8gQm94IDI3LTQ5NwotCQkJCVdlbGxpbmd0b24gIDYwMzAKLQkJCQlORVcgWkVBTEFORAotCi0wMC0xMi1FQSAgIChoZXgpCQlUcmFuZQotMDAxMkVBICAgICAoYmFzZSAxNikJCVRyYW5lCi0JCQkJNDgzMyBXaGl0ZSBCZWFyIFBhcmt3YXkKLQkJCQlTdC4gUGF1bCBNTiA1NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRUIgICAoaGV4KQkJUjJESSwgTExDCi0wMDEyRUIgICAgIChiYXNlIDE2KQkJUjJESSwgTExDCi0JCQkJMjU3NSBORSBLYXRocnluIFN0LgotCQkJCVN1aXRlIDE0Ci0JCQkJSGlsbHNib3JvIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1FQyAgIChoZXgpCQlNb3ZhY29sb3IgYi52LgotMDAxMkVDICAgICAoYmFzZSAxNikJCU1vdmFjb2xvciBiLnYuCi0JCQkJS29wZXJzbGFnZXJzc3RyYWF0IDMxCi0JCQkJU25lZWsgRnJpZXNsYW5kIDg2MDEgV0wKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMi1FRCAgIChoZXgpCQlBVkcgQWR2YW5jZWQgVGVjaG5vbG9naWVzCi0wMDEyRUQgICAgIChiYXNlIDE2KQkJQVZHIEFkdmFuY2VkIFRlY2hub2xvZ2llcwotCQkJCTQxNDAgVXRpY2EgUmlkZ2UgUm9hZAotCQkJCUJldHRlbmRvcmYgSUEgNTI3MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUVFICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDEyRUUgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMTItRUYgICAoaGV4KQkJT25lQWNjZXNzIFNBCi0wMDEyRUYgICAgIChiYXNlIDE2KQkJT25lQWNjZXNzIFNBCi0JCQkJMjggcnVlIGRlIGxhIFJlZG91dGUKLQkJCQlGb250ZW5heSBhdXggUm9zZXMgIDkyMjYwCi0JCQkJRlJBTkNFCi0KLTAwLTEyLUYwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxMkYwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS10ZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTItRjEgICAoaGV4KQkJSUZPVEVDCi0wMDEyRjEgICAgIChiYXNlIDE2KQkJSUZPVEVDCi0JCQkJWkFDIENoYW1wZmV1aWxsZXQKLQkJCQlCUDI0NwotCQkJCVZPSVJPTiAgMzg1MDcKLQkJCQlGUkFOQ0UKLQotMDAtMTItRjIgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLTAwMTJGMiAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotCQkJCTE3NDUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMi1GMyAgIChoZXgpCQljb25uZWN0Qmx1ZSBBQgotMDAxMkYzICAgICAoYmFzZSAxNikJCWNvbm5lY3RCbHVlIEFCCi0JCQkJTm9ycmEgVmFsbGdhdGFuIDY0Ci0JCQkJTWFsbW9lICBTRS0yMTEgMjIKLQkJCQlTV0VERU4KLQotMDAtMTItRjQgICAoaGV4KQkJQmVsY28gSW50ZXJuYXRpb25hbCBDby4sTHRkLgotMDAxMkY0ICAgICAoYmFzZSAxNikJCUJlbGNvIEludGVybmF0aW9uYWwgQ28uLEx0ZC4KLQkJCQkyMTIsIFllb2tvay1Eb25nLCBXb25taS1ndQotCQkJCVB1Y2h1bi1TaSBLeW9uZ2tpLURvIDQyMC0xMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItRjUgICAoaGV4KQkJSW1hcmRhIE5ldyBaZWFsYW5kIExpbWl0ZWQKLTAwMTJGNSAgICAgKGJhc2UgMTYpCQlJbWFyZGEgTmV3IFplYWxhbmQgTGltaXRlZAotCQkJCVN1aXRlIEcxNiwgTmF0aW9uYWwgSW5ub3ZhdGlvbiBDZW50cmUsCi0JCQkJQXVzdHJhbGlhbiBUZWNobm9sb2d5IFBhcmssCi0JCQkJRXZlbGVpZ2ggTlNXICAgMjAxNQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTEyLUY2ICAgKGhleCkJCU1ESyBDTy4sTFRELgotMDAxMkY2ICAgICAoYmFzZSAxNikJCU1ESyBDTy4sTFRELgotCQkJCTItNi0yNyBJYmFyYW1lCi0JCQkJS2FzaGl3YXpha2kgQ2l0eSBOaWlnYXRhIDk0NTEzNDEKLQkJCQlKQVBBTgotCi0wMC0xMi1GNyAgIChoZXgpCQlYaWFtZW4gWGluZ2xpYW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDEyRjcgICAgIChiYXNlIDE2KQkJWGlhbWVuIFhpbmdsaWFuIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCVhpbmdsaWFuIEVsZWN0cm9uaWNzIChYaW5ndGVsKSBCdWlsZGluZyxDaHVhbmd4aW4gUm9hZCwKLQkJCQlUb3JjaCBIaS1UZWNoIEluZHVzdHJpYWwgRGlzdHJpY3QsCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi0wMC0xMi1GOCAgIChoZXgpCQlXTkkgUmVzb3VyY2VzLCBMTEMKLTAwMTJGOCAgICAgKGJhc2UgMTYpCQlXTkkgUmVzb3VyY2VzLCBMTEMKLQkJCQkyMTQ2IEJlcmluZyBEcml2ZQotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzEtMjAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTItRjkgICAoaGV4KQkJVVJZVSBTRUlTQUtVLCBMVEQuCi0wMDEyRjkgICAgIChiYXNlIDE2KQkJVVJZVSBTRUlTQUtVLCBMVEQuCi0JCQkJMS0yLTExCi0JCQkJRlVLQUUtTUlOQU1JCi0JCQkJSElHQVNISU5BUkktS1UgT1NBS0EgNTM3LTAwMDIKLQkJCQlKQVBBTgotCi0wMC0xMi1GQSAgIChoZXgpCQlUSFggTFRECi0wMDEyRkEgICAgIChiYXNlIDE2KQkJVEhYIExURAotCQkJCTUyMDEgR3JlYXQgQW1lcmljYSBQYXJrd2F5Ci0JCQkJU3VpdGUgMzIwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEyLUZCICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTAwMTJGQiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJNDE2LCBNYWV0YW4tM0RvbmcsIFllb25ndG9uZy1HdQotCQkJCVN1d29uLUNpdHkgR3llb25nZ2ktRG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMi1GQyAgIChoZXgpCQlQTEFORVQgU3lzdGVtIENvLixMVEQKLTAwMTJGQyAgICAgKGJhc2UgMTYpCQlQTEFORVQgU3lzdGVtIENvLixMVEQKLQkJCQk0dGggRmxvb3IsIERhZWhhbiBCL0QsIDg3My0yOSwKLQkJCQlCYW5nYmFlNC1Eb25nLCBTZW9jaG8tS3UsCi0JCQkJU2VvdWwgIDEzNy0wNjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTItRkQgICAoaGV4KQkJT1BUSU1VUyBJQyBTLkEuCi0wMDEyRkQgICAgIChiYXNlIDE2KQkJT1BUSU1VUyBJQyBTLkEuCi0JCQkJTkFXT0pPV1NLQSAxMTgKLQkJCQlOT1dZIFNBQ1ogTUFMT1BPTFNLQSAzMy0zMDAKLQkJCQlQT0xBTkQKLQotMDAtMTItRkUgICAoaGV4KQkJTGVub3ZvIE1vYmlsZSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgTHRkLgotMDAxMkZFICAgICAoYmFzZSAxNikJCUxlbm92byBNb2JpbGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLQkJCQlYaWFtZW4gT3ZlcnNlYXMgQ2hpbmVzZSBFbGVjdHJvbmljIFNjaWVuY2UgUGFyayxIdW9qdSBIaWdoIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgWm9uZQotCQkJCVhJQSBNRU4gRlUgSklBTiAzNjEwMDkKLQkJCQlDSElOQQotCi0wMC0xMi1GRiAgIChoZXgpCQlMZWx5IEluZHVzdHJpZXMgTi5WLgotMDAxMkZGICAgICAoYmFzZSAxNikJCUxlbHkgSW5kdXN0cmllcyBOLlYuCi0JCQkJV2V2ZXJza2FkZSAxMTAKLQkJCQlNYWFzc2x1aXMgWnVpZC1Ib2xsYW5kIDMxNDdQQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTEzLTAwICAgKGhleCkJCUlULUZBQ1RPUlksIElOQy4KLTAwMTMwMCAgICAgKGJhc2UgMTYpCQlJVC1GQUNUT1JZLCBJTkMuCi0JCQkJMS0xNi0yNiBUQUtBR0kgTUlOQU1JLUtVCi0JCQkJRlVLVU9LQS1TSEkgRlVLVU9LQS1LRU4gODE1LTAwMDQKLQkJCQlKQVBBTgotCi0wMC0xMy0wMSAgIChoZXgpCQlJcm9uR2F0ZSBTLkwuCi0wMDEzMDEgICAgIChiYXNlIDE2KQkJSXJvbkdhdGUgUy5MLgotCQkJCUNcQWxjYWxhIDI2OCwgcHJpbWVyYSBwbGFudGEKLQkJCQlNYWRyaWQgIDI4MDI3Ci0JCQkJU1BBSU4KLQotMDAtMTMtMDIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDEzMDIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLXRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xMy0wMyAgIChoZXgpCQlHYXRlQ29ubmVjdCBUZWNobm9sb2dpZXMgR21iSAotMDAxMzAzICAgICAoYmFzZSAxNikJCUdhdGVDb25uZWN0IFRlY2hub2xvZ2llcyBHbWJICi0JCQkJQWdhc3RyYXNzZSAyNCBSMgotCQkJCTEyNDg5IEJlcmxpbiAgMTI0ODkKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTA0ICAgKGhleCkJCUZsYWlyY29tbSBUZWNobm9sb2dpZXMgQ28uIExURAotMDAxMzA0ICAgICAoYmFzZSAxNikJCUZsYWlyY29tbSBUZWNobm9sb2dpZXMgQ28uIExURAotCQkJCTIwODggSHVhc2hhbiBSb2FkCi0JCQkJU291dGggSHVpeWluIEJsZGcuICMyMzA2Ci0JCQkJU2hhbmdoYWkgIDIwMDAzMAotCQkJCUNISU5BCi0KLTAwLTEzLTA1ICAgKGhleCkJCUVwaWNvbSwgSW5jLgotMDAxMzA1ICAgICAoYmFzZSAxNikJCUVwaWNvbSwgSW5jLgotCQkJCVBPIEJveCAxNjEzMAotCQkJCU9ha2xhbmQgQ0EgOTQ2MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTA2ICAgKGhleCkJCUFsd2F5cyBPbiBXaXJlbGVzcwotMDAxMzA2ICAgICAoYmFzZSAxNikJCUFsd2F5cyBPbiBXaXJlbGVzcwotCQkJCTM3MDEgS2lyYnkgRHIKLQkJCQlTdWl0ZSAxMDkwCi0JCQkJSG91c3RvbiBUWCA3NzA5OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMDcgICAoaGV4KQkJUGFyYXZpcnR1YWwgQ29ycG9yYXRpb24KLTAwMTMwNyAgICAgKGJhc2UgMTYpCQlQYXJhdmlydHVhbCBDb3Jwb3JhdGlvbgotCQkJCTI5NTMgQnVua2VyIEhpbGwgTGFuZQotCQkJCVN1aXRlIDQwNgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0wOCAgIChoZXgpCQlOdXZlcmEgRnVlbCBDZWxscwotMDAxMzA4ICAgICAoYmFzZSAxNikJCU51dmVyYSBGdWVsIENlbGxzCi0JCQkJMTI5IENvbmNvcmQgUm9hZCwgIzEKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTA5ICAgKGhleCkJCU9jZWFuIEJyb2FkYmFuZCBOZXR3b3JrcwotMDAxMzA5ICAgICAoYmFzZSAxNikJCU9jZWFuIEJyb2FkYmFuZCBOZXR3b3JrcwotCQkJCTIwNzggV2Fsc2ggQXZlLCBTdWl0ZSBCCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMEEgICAoaGV4KQkJTm9ydGVsCi0wMDEzMEEgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTMtMEIgICAoaGV4KQkJTWV4dGFsIEIuVi4KLTAwMTMwQiAgICAgKGJhc2UgMTYpCQlNZXh0YWwgQi5WLgotCQkJCURlIFRpZW5kZW4gNDgKLQkJCQlOdWVuZW4gTm9vcmQgQnJhYmFudCA1Njc0VEIKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMy0wQyAgIChoZXgpCQlIRiBTeXN0ZW0gQ29ycG9yYXRpb24KLTAwMTMwQyAgICAgKGJhc2UgMTYpCQlIRiBTeXN0ZW0gQ29ycG9yYXRpb24KLQkJCQkxNTIwLTEgQXl1a2FpCi0JCQkJU2hpcmF0YWthLU1hY2hpCi0JCQkJTmlzaGlva2l0YW1hLUd1biBZYW1hZ2F0YS1LZW4gOTkyLTA3NzEKLQkJCQlKQVBBTgotCi0wMC0xMy0wRCAgIChoZXgpCQlHQUxJTEVPIEFWSU9OSUNBCi0wMDEzMEQgICAgIChiYXNlIDE2KQkJR0FMSUxFTyBBVklPTklDQQotCQkJCVZJQUxFIEVVUk9QQQotCQkJCSBORVJWSUFOTyBNSUxBTk8gMjAwMTQKLQkJCQlJVEFMWQotCi0wMC0xMy0wRSAgIChoZXgpCQlGb2N1c3JpdGUgQXVkaW8gRW5naW5lZXJpbmcgTGltaXRlZAotMDAxMzBFICAgICAoYmFzZSAxNikJCUZvY3Vzcml0ZSBBdWRpbyBFbmdpbmVlcmluZyBMaW1pdGVkCi0JCQkJMTkgTGluY29sbiBSb2FkCi0JCQkJQ3Jlc3NleCBCdXNpbmVzcyBQYXJrCi0JCQkJSGlnaCBXeWNvbWJlIEJ1Y2tzIEhQMTIgM0ZYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTMtMEYgICAoaGV4KQkJRUdFTUVOIEJpbGdpc2F5YXIgTXVoIFNhbiB2ZSBUaWMgTFREIFNUSQotMDAxMzBGICAgICAoYmFzZSAxNikJCUVHRU1FTiBCaWxnaXNheWFyIE11aCBTYW4gdmUgVGljIExURCBTVEkKLQkJCQlGZXZ6aSBDYWttYWsgMiBTb2sgMzEvQQotCQkJCUtJWklMQVkKLQkJCQlBTktBUkEgQ0FOS0FZQSAwNjQ0MAotCQkJCVRVUktFWQotCi0wMC0xMy0xMCAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTAwMTMxMCAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5Ci0JCQkJSXJ2aW5lIENBIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0xMSAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDEzMTEgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJU3V3YW5lZSBHQSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMTIgICAoaGV4KQkJQW1lZGlhIE5ldHdvcmtzIEluYy4KLTAwMTMxMiAgICAgKGJhc2UgMTYpCQlBbWVkaWEgTmV0d29ya3MgSW5jLgotCQkJCTEwMSBDcmF3Zm9yZHMgQ29ybmVyIFJkCi0JCQkJSG9sbWRlbCBOSiAwNzczMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMTMgICAoaGV4KQkJR3VhbmdaaG91IFBvc3QgJiBUZWxlY29tIEVxdWlwbWVudCBsdGQKLTAwMTMxMyAgICAgKGJhc2UgMTYpCQlHdWFuZ1pob3UgUG9zdCAmIFRlbGVjb20gRXF1aXBtZW50IGx0ZAotCQkJCTEzOSMgWmhvbmdzaGFuIEF2ZQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjMwCi0JCQkJQ0hJTkEKLQotMDAtMTMtMTQgICAoaGV4KQkJQXNpYW1ham9yIEluYy4KLTAwMTMxNCAgICAgKGJhc2UgMTYpCQlBc2lhbWFqb3IgSW5jLgotCQkJCTZGLTksIE5vLiAyNjgsIExpYW4tQ2hlbmcgUmQuLCBKdW5naGUgQ2l0eSwKLQkJCQlUYWlwZWkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtMTUgICAoaGV4KQkJU09OWSBDb21wdXRlciBFbnRlcnRhaW5tZW50IGluYywKLTAwMTMxNSAgICAgKGJhc2UgMTYpCQlTT05ZIENvbXB1dGVyIEVudGVydGFpbm1lbnQgaW5jLAotCQkJCTItNi0yMSBNaW5hbWktQW95YW1hLAotCQkJCU1pbmF0by1LdSBUb2t5byAxMDctMDA2MgotCQkJCUpBUEFOCi0KLTAwLTEzLTE2ICAgKGhleCkJCUwtUy1CIEJyb2FkY2FzdCBUZWNobm9sb2dpZXMgR21iSAotMDAxMzE2ICAgICAoYmFzZSAxNikJCUwtUy1CIEJyb2FkY2FzdCBUZWNobm9sb2dpZXMgR21iSAotCQkJCUd1c3Rhdi1TdHJlc2VtYW5uLVN0ci4gOAotCQkJCUJpbmdlbiBSaGVpbmxhbmQtUGZhbHogNTU0MTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTE3ICAgKGhleCkJCUdOIE5ldGNvbSBhcwotMDAxMzE3ICAgICAoYmFzZSAxNikJCUdOIE5ldGNvbSBhcwotCQkJCU1ldGFsYnVlbiA2NgotCQkJCVAuTy5Cb3ggMjAxCi0JCQkJQmFsbGVydXAgU2tvdmx1bmRlIERLLTI3NTAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLTE4ICAgKGhleCkJCURHU1RBVElPTiBDby4sIEx0ZC4KLTAwMTMxOCAgICAgKGJhc2UgMTYpCQlER1NUQVRJT04gQ28uLCBMdGQuCi0JCQkJUm0uNDAxLCBCbGRnLkEsIEJ1bmRhbmcgVGVjaG5vIFBhcmsgMTUwLCBZYXRhcC1Eb25nLCBCdW5kYW5nLUd1LCBTdW5nbmFtLVNpLCBHeXVuZ2dpLURvLCA0NjMtNzYwLCBLb3JlYQotCQkJCVN1bmduYW0gR3l1bmdnaSA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTE5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTMxOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTFBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTMxQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTFCICAgKGhleCkJCUJlQ2VsbCBJbm5vdmF0aW9ucyBDb3JwLgotMDAxMzFCICAgICAoYmFzZSAxNikJCUJlQ2VsbCBJbm5vdmF0aW9ucyBDb3JwLgotCQkJCTEyRi05LCBOby4gNzksIFNoaW4tVGFpIDV0aCBSZCBTZWMgMSwKLQkJCQlTaGloLWNoaWgsIFRhaXBlaSAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTFDICAgKGhleCkJCUxpdGVUb3VjaCwgSW5jLgotMDAxMzFDICAgICAoYmFzZSAxNikJCUxpdGVUb3VjaCwgSW5jLgotCQkJCTM0MDAgU291dGggV2VzdCBUZW1wbGUKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMUQgICAoaGV4KQkJU2NhbnZhZWd0IEludGVybmF0aW9uYWwgQS9TCi0wMDEzMUQgICAgIChiYXNlIDE2KQkJU2NhbnZhZWd0IEludGVybmF0aW9uYWwgQS9TCi0JCQkJUC5PLlBlZGVyc2VucyB2ZWogMTgKLQkJCQlBYXJodXMgSnlsbGFuZCA4MjAwIE4KLQkJCQlERU5NQVJLCi0KLTAwLTEzLTFFICAgKGhleCkJCVBlaWtlciBhY3VzdGljIEdtYkggJiBDby4gS0cKLTAwMTMxRSAgICAgKGJhc2UgMTYpCQlQZWlrZXIgYWN1c3RpYyBHbWJIICYgQ28uIEtHCi0JCQkJTWF4LVBsYW5jay1TdHJhw4PFuGUgMzIKLQkJCQlGcmllZHJpY2hzZG9yZiBIZXNzZW4gNjEzODEKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTFGICAgKGhleCkJCU54dFBoYXNlIFQmRCwgQ29ycC4KLTAwMTMxRiAgICAgKGJhc2UgMTYpCQlOeHRQaGFzZSBUJkQsIENvcnAuCi0JCQkJMzA0MCBFLiBCcm9hZHdheQotCQkJCVZhbmNvdXZlciBCQyBWNU0gMVo0Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLTIwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxMzIwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS10ZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTMtMjEgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMTMyMSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNzA0MDUKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0yMiAgIChoZXgpCQlEQVEgRWxlY3Ryb25pY3MsIEluYy4KLTAwMTMyMiAgICAgKGJhc2UgMTYpCQlEQVEgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkyNjJCIE9sZCBOZXcgQnJ1bnN3aWNrIFJvYWQKLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0yMyAgIChoZXgpCQlDYXAgQ28uLCBMdGQuCi0wMDEzMjMgICAgIChiYXNlIDE2KQkJQ2FwIENvLiwgTHRkLgotCQkJCTExRiw2ODQtMixkZXVuZ2Nob24gMy1kb25nLGdhbmdzZW8tZ3UKLQkJCQlTZW91bCAgMTU3LTc1NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy0yNCAgIChoZXgpCQlTY2huZWlkZXIgRWxlY3RyaWMgVWx0cmEgVGVybWluYWwKLTAwMTMyNCAgICAgKGJhc2UgMTYpCQlTY2huZWlkZXIgRWxlY3RyaWMgVWx0cmEgVGVybWluYWwKLQkJCQlJbmR1c3RyaXBhcmtlbiAzMgotCQkJCUNvcGVuaGFnZW4gIDI3NTAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLTI1ICAgKGhleCkJCUNvcnRpbmEgU3lzdGVtcyBJbmMKLTAwMTMyNSAgICAgKGJhc2UgMTYpCQlDb3J0aW5hIFN5c3RlbXMgSW5jCi0JCQkJODQwIFcgQ2FsaWZvcm5pYSBBdmUsIFN1aXRlIDEwMAotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMjYgICAoaGV4KQkJRUNNIFN5c3RlbXMgTHRkCi0wMDEzMjYgICAgIChiYXNlIDE2KQkJRUNNIFN5c3RlbXMgTHRkCi0JCQkJRWxsaWZvb3QgUGFyawotCQkJCUJ1cnN0d2ljawotCQkJCUhVTEwgRWFzdCBZb3Jrc2hpcmUgSFUxMiA5RFoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMy0yNyAgIChoZXgpCQlEYXRhIEFjcXVpc2l0aW9ucyBsaW1pdGVkCi0wMDEzMjcgICAgIChiYXNlIDE2KQkJRGF0YSBBY3F1aXNpdGlvbnMgbGltaXRlZAotCQkJCTg0IEdhc3NvbiBzdHJlZXQKLQkJCQlDaHJpc3RjaHVyY2ggIAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTEzLTI4ICAgKGhleCkJCVdlc3RlY2ggS29yZWEgSW5jLiwKLTAwMTMyOCAgICAgKGJhc2UgMTYpCQlXZXN0ZWNoIEtvcmVhIEluYy4sCi0JCQkJNTQ4LTksIEdhandhMy1Eb25nLFNlby1rdSwKLQkJCQlJbmNoZW9uICA0MDQtODE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTI5ICAgKGhleCkJCVZTU1QgQ28uLCBMVEQKLTAwMTMyOSAgICAgKGJhc2UgMTYpCQlWU1NUIENvLiwgTFRECi0JCQkJc3VpdCAzMjAyLCBLb3JlYSBXb3JsZCBUcmFkZSBDZW50ZXIgMTU5LTEKLQkJCQlTYW1zdW5nLURvbmcsIEthbmduYW0tR3UKLQkJCQlTZW91bCAgMTM1LTcyOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy0yQSAgIChoZXgpCQlTaXRyb25pY3MgVGVsZWNvbSBTb2x1dGlvbnMKLTAwMTMyQSAgICAgKGJhc2UgMTYpCQlTaXRyb25pY3MgVGVsZWNvbSBTb2x1dGlvbnMKLQkJCQlNaWNoZWxza2EgNjAKLQkJCQlQcmFndWUgUHJhZ3VlIDQgLSBNaWNobGUgMTQwIDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMTMtMkIgICAoaGV4KQkJUGhvZW5peCBEaWdpdGFsCi0wMDEzMkIgICAgIChiYXNlIDE2KQkJUGhvZW5peCBEaWdpdGFsCi0JCQkJNzY1MCBFYXN0IEV2YW5zIFJkLiBCbGRnLiBBCi0JCQkJU2NvdHRzZGFsZSBBeiA4NTI2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtMkMgICAoaGV4KQkJTUFaIEJyYW5kZW5idXJnIEdtYkgKLTAwMTMyQyAgICAgKGJhc2UgMTYpCQlNQVogQnJhbmRlbmJ1cmcgR21iSAotCQkJCU1pZWxlc3RyYcODxbhlIDIKLQkJCQlXZXJkZXIgQnJhbmRlbmJ1cmcgMTQ1NDIKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTJEICAgKGhleCkJCWlXaXNlIENvbW11bmljYXRpb25zCi0wMDEzMkQgICAgIChiYXNlIDE2KQkJaVdpc2UgQ29tbXVuaWNhdGlvbnMKLQkJCQlVbml0IDNDLCBBcmRlbiBHcm92ZQotCQkJCVJhY2Vjb3Vyc2UgUmQsTW9udGFndSBHYXJkZW5zCi0JCQkJQ2FwZSBUb3duICA3NDQxCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTEzLTJFICAgKGhleCkJCUlUaWFuIENvcG9yYXRpb24KLTAwMTMyRSAgICAgKGJhc2UgMTYpCQlJVGlhbiBDb3BvcmF0aW9uCi0JCQkJNEYgWW91bmdobyBCZC4xNjA1LTEgU2VvY2hvLWRvbmcKLQkJCQlTZW9jaG8tZ3UKLQkJCQlTZW91bCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy0yRiAgIChoZXgpCQlJbnRlcmFjdGVrCi0wMDEzMkYgICAgIChiYXNlIDE2KQkJSW50ZXJhY3RlawotCQkJCVNpZ21hbCAyIEJMREcgI0MtMzE5LCAxOCBLdW1pLWRvbmcKLQkJCQlQdW5kYW5nLWt1Ci0JCQkJU2VvbmduYW0gS3l1bmctZ2kgNDYzLTc0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy0zMCAgIChoZXgpCQlFVVJPIFBST1RFQ1RJT04gU1VSVkVJTExBTkNFCi0wMDEzMzAgICAgIChiYXNlIDE2KQkJRVVSTyBQUk9URUNUSU9OIFNVUlZFSUxMQU5DRQotCQkJCTMwIFJ1ZSBkdSBEb3VicwotCQkJCVNUUkFTQk9VUkcgIDY3MTAwCi0JCQkJRlJBTkNFCi0KLTAwLTEzLTMxICAgKGhleCkJCUNlbGxQb2ludCBDb25uZWN0Ci0wMDEzMzEgICAgIChiYXNlIDE2KQkJQ2VsbFBvaW50IENvbm5lY3QKLQkJCQlCaWxsZWR2ZWogNAotCQkJCUNvcGVuaGFnZW4gIDIxMDAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLTMyICAgKGhleCkJCUJlaWppbmcgVG9wc2VjIE5ldHdvcmsgU2VjdXJpdHkgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTMzMiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFRvcHNlYyBOZXR3b3JrIFNlY3VyaXR5IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJSHVha29uZyBUb3dlcgotCQkJCU5vLiAxIFNoYW5nZGkgRWFzdCBSb2FkCi0JCQkJSGFpZGlhbiBEaXN0cmljdCBCZWlqaW5nIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTEzLTMzICAgKGhleCkJCUJhdWRUZWMgQ29ycG9yYXRpb24KLTAwMTMzMyAgICAgKGJhc2UgMTYpCQlCYXVkVGVjIENvcnBvcmF0aW9uCi0JCQkJMTJGLCBOTy4xODEsIFNlYy4gIDEuIFRhdHVuZyBSZC4sCi0JCQkJSHNpY2hpaCBUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy0zNCAgIChoZXgpCQlBcmthZG9zLCBJbmMuCi0wMDEzMzQgICAgIChiYXNlIDE2KQkJQXJrYWRvcywgSW5jLgotCQkJCTk0OCBVUyBIV1kgMjIKLQkJCQlOb3J0aCBQbGFpbmZpZWxkIE5KIDA3MDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0zNSAgIChoZXgpCQlWUyBJbmR1c3RyeSBCZXJoYWQKLTAwMTMzNSAgICAgKGJhc2UgMTYpCQlWUyBJbmR1c3RyeSBCZXJoYWQKLQkJCQlQbG8gNDcsIFNlbmFpIEluZC4gRXN0LiBJSSwKLQkJCQlTZW5haSBKb2hvciA4MTQwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTEzLTM2ICAgKGhleCkJCVRpYW5qaW4gNzEyIENvbW11bmljYXRpb24gQnJvYWRjYXN0aW5nIGNvLiwgbHRkLgotMDAxMzM2ICAgICAoYmFzZSAxNikJCVRpYW5qaW4gNzEyIENvbW11bmljYXRpb24gQnJvYWRjYXN0aW5nIGNvLiwgbHRkLgotCQkJCU5vLjE4NSwgWGluZGEgUm9hZCwgSGViZWkgRGlzdHJpY3QKLQkJCQlUaWFuamluICAzMDAxNDAKLQkJCQlDSElOQQotCi0wMC0xMy0zNyAgIChoZXgpCQlPcmllbnQgUG93ZXIgSG9tZSBOZXR3b3JrIEx0ZC4KLTAwMTMzNyAgICAgKGJhc2UgMTYpCQlPcmllbnQgUG93ZXIgSG9tZSBOZXR3b3JrIEx0ZC4KLQkJCQkzMDcgSGFyYm91ciBDZW50cmUsIFRvd2VyIDEsCi0JCQkJMSBIb2sgQ2hldW5nIFN0cmVldCwgSHVuZyBIb20KLQkJCQlIT05HIEtPTkcKLQotMDAtMTMtMzggICAoaGV4KQkJRlJFU0VOSVVTLVZJQUwKLTAwMTMzOCAgICAgKGJhc2UgMTYpCQlGUkVTRU5JVVMtVklBTAotCQkJCUxlIEdyYW5kIENoZW1pbgotCQkJCUJSRVpJTlMgIDM4NTkwCi0JCQkJRlJBTkNFCi0KLTAwLTEzLTM5ICAgKGhleCkJCUVMLU1FIEFHCi0wMDEzMzkgICAgIChiYXNlIDE2KQkJRUwtTUUgQUcKLQkJCQlHZXdlcmJlcmluZyAxCi0JCQkJQXUgaS4gZC4gSGFsbGVydGF1IEJheWVybiA4NDA3MgotCQkJCUdFUk1BTlkKLQotMDAtMTMtM0EgICAoaGV4KQkJVmFkYVRlY2ggSW5jLgotMDAxMzNBICAgICAoYmFzZSAxNikJCVZhZGFUZWNoIEluYy4KLQkJCQkxMTU0MCBTLiBFYXN0ZXJuIEF2ZW51ZQotCQkJCUhlbmRlcnNvbiBOZXZhZGEgODkwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTNCICAgKGhleCkJCVNwZWVkIERyYWdvbiBNdWx0aW1lZGlhIExpbWl0ZWQKLTAwMTMzQiAgICAgKGJhc2UgMTYpCQlTcGVlZCBEcmFnb24gTXVsdGltZWRpYSBMaW1pdGVkCi0JCQkJUm9vbSAxMzEyLCBWYW50YSBJbmR1c3RyaWFsIENlbnRyZSwKLQkJCQkzMyBUYWkgTGluIFBhaSBSb2FkLAotCQkJCUt3YWkgQ2h1bmcgTi5ULiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTMtM0MgICAoaGV4KQkJUVVJTlRST04gU1lTVEVNUyBJTkMuCi0wMDEzM0MgICAgIChiYXNlIDE2KQkJUVVJTlRST04gU1lTVEVNUyBJTkMuCi0JCQkJMjEwNSBTTy4gQkxPU1NFUiBST0FECi0JCQkJU0FOVEEgTUFSSUEgQ0FMSUZPUk5JQSA5MzQ1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtM0QgICAoaGV4KQkJTWljcm8gTWVtb3J5IEN1cnRpc3MgV3JpZ2h0IENvCi0wMDEzM0QgICAgIChiYXNlIDE2KQkJTWljcm8gTWVtb3J5IEN1cnRpc3MgV3JpZ2h0IENvCi0JCQkJOTU0MCBWYXNzYXIgQXZlbnVlCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtM0UgICAoaGV4KQkJTWV0YVN3aXRjaAotMDAxMzNFICAgICAoYmFzZSAxNikJCU1ldGFTd2l0Y2gKLQkJCQkxNDExIEhhcmJvciBCYXkgUGFya3dheQotCQkJCVN1aXRlIDEwMDMKLQkJCQlBbGFtZWRhIENBIDk0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy0zRiAgIChoZXgpCQlFcHBlbmRvcmYgSW5zdHJ1bWVudGUgR21iSAotMDAxMzNGICAgICAoYmFzZSAxNikJCUVwcGVuZG9yZiBJbnN0cnVtZW50ZSBHbWJICi0JCQkJQmFya2hhdXNlbndlZyAxCi0JCQkJQWJ0bC4gSUgtRkUKLQkJCQlIYW1idXJnIERFIDIyMzM5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMy00MCAgIChoZXgpCQlBRC5FTCBzLnIubC4KLTAwMTM0MCAgICAgKGJhc2UgMTYpCQlBRC5FTCBzLnIubC4KLQkJCQl2aWEgUy4gUGVydGluaSw1Ci0JCQkJTWFydGVsbGFnbyBWRU5FWklBIDMwMDMwCi0JCQkJSVRBTFkKLQotMDAtMTMtNDEgICAoaGV4KQkJU2hhbmRvbmcgTmV3IEJlaXlhbmcgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkCi0wMDEzNDEgICAgIChiYXNlIDE2KQkJU2hhbmRvbmcgTmV3IEJlaXlhbmcgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJTk8uMTEgWGlud2VpIFJvYWQKLQkJCQlXZWloYWkgY2l0eSBTaGFuZG9uZyAyNjQyMDAKLQkJCQlDSElOQQotCi0wMC0xMy00MiAgIChoZXgpCQlWaXNpb24gUmVzZWFyY2gsIEluYy4KLTAwMTM0MiAgICAgKGJhc2UgMTYpCQlWaXNpb24gUmVzZWFyY2gsIEluYy4KLQkJCQkxMDAgRGV5IFJvYWQKLQkJCQlXYXluZSBOSiAwNzQ3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNDMgICAoaGV4KQkJTWF0c3VzaGl0YSBFbGVjdHJvbmljIENvbXBvbmVudHMgKEV1cm9wZSkgR21iSAotMDAxMzQzICAgICAoYmFzZSAxNikJCU1hdHN1c2hpdGEgRWxlY3Ryb25pYyBDb21wb25lbnRzIChFdXJvcGUpIEdtYkgKLQkJCQlaZXBwZWxpbnN0cmHDg8W4ZSAxOQotCQkJCUx1ZW5lYnVyZyBOaWVkZXJzYWNoc2VuIDIxMzM3Ci0JCQkJR0VSTUFOWQotCi0wMC0xMy00NCAgIChoZXgpCQlGYXJnbyBFbGVjdHJvbmljcyBJbmMuCi0wMDEzNDQgICAgIChiYXNlIDE2KQkJRmFyZ28gRWxlY3Ryb25pY3MgSW5jLgotCQkJCTY1MzMgRmx5aW5nIENsb3VkIERyaXZlCi0JCQkJRWRlbiBQcmFpcmllIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy00NSAgIChoZXgpCQlFYXRvbiBDb3Jwb3JhdGlvbgotMDAxMzQ1ICAgICAoYmFzZSAxNikJCUVhdG9uIENvcnBvcmF0aW9uCi0JCQkJNDIwMSBOb3J0aCAyN3RoIFN0cmVldAotCQkJCU1pbHdhdWtlZSBXaXNjb25zaW4gNTMyMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTQ2ICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMDAxMzQ2ICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCTJGLCBOby4yMzMtMiwgUGFvLUNoaWFvIFJvYWQKLQkJCQlIc2luLVRpZW4sIFRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTQ3ICAgKGhleCkJCUJsdWVUcmVlIFdpcmVsZXNzIERhdGEgSW5jLgotMDAxMzQ3ICAgICAoYmFzZSAxNikJCUJsdWVUcmVlIFdpcmVsZXNzIERhdGEgSW5jLgotCQkJCTI0MjUgNDZlIEF2ZW51ZQotCQkJCUxhY2hpbmUgUXVlYmVjIEg4VCAzQzkKLQkJCQlDQU5BREEKLQotMDAtMTMtNDggICAoaGV4KQkJQXJ0aWxhIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxMzQ4ICAgICAoYmFzZSAxNikJCUFydGlsYSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkyRi4sIE5vLjEsIEFsbGV5IDgsIFNpd2VpIExhbmUsIFpob25nemhlbmcgUmQuLAotCQkJCVhpbmRpYW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtNDkgICAoaGV4KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMTM0OSAgICAgKGJhc2UgMTYpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotCQkJCU5vLiA2LCBJbm5vdmF0aW9uIFJvYWQgSUkgU2NpZW5jZSBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtNEEgICAoaGV4KQkJRW5naW0sIEluYy4KLTAwMTM0QSAgICAgKGJhc2UgMTYpCQlFbmdpbSwgSW5jLgotCQkJCTQwIE5hZ29nIFBhcmsKLQkJCQlBY3RvbiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNEIgICAoaGV4KQkJVG9Hb2xkZW5OZXQgVGVjaG5vbG9neSBJbmMuCi0wMDEzNEIgICAgIChiYXNlIDE2KQkJVG9Hb2xkZW5OZXQgVGVjaG5vbG9neSBJbmMuCi0JCQkJNUYtMSBOby4yNSxQdS1kaW5nLiwKLQkJCQlIc2luLUNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy00QyAgIChoZXgpCQlZRFQgVGVjaG5vbG9neSBJbnRlcm5hdGlvbmFsCi0wMDEzNEMgICAgIChiYXNlIDE2KQkJWURUIFRlY2hub2xvZ3kgSW50ZXJuYXRpb25hbAotCQkJCTJGLiwgTm8uMjE4LCBSdWVpZ3VhbmcgUmQuLAotCQkJCU5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpLCAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy00RCAgIChoZXgpCQlJbmVwcm8gQlYKLTAwMTM0RCAgICAgKGJhc2UgMTYpCQlJbmVwcm8gQlYKLQkJCQlQb25kd2VnIDcKLQkJCQlOTC0yMTUzUEsKLQkJCQlOaWV1dy0gVmVubmVwIAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTEzLTRFICAgKGhleCkJCVZhbG94IFN5c3RlbXMsIEluYy4KLTAwMTM0RSAgICAgKGJhc2UgMTYpCQlWYWxveCBTeXN0ZW1zLCBJbmMuCi0JCQkJIzcwNCwgQWNlIFR3aW4gdG93ZXIgMiwgMjEyLTMwLCBHdXJvLTNkb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi03NzkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtNEYgICAoaGV4KQkJVHJhbnplbyBXaXJlbGVzcyBUZWNobm9sb2dpZXMgSW5jLgotMDAxMzRGICAgICAoYmFzZSAxNikJCVRyYW56ZW8gV2lyZWxlc3MgVGVjaG5vbG9naWVzIEluYy4KLQkJCQkyMDE1NSBTdGV3YXJ0IENyZXMuCi0JCQkJTWFwbGUgUmlkZ2UgQnJpdGlzaCBDb2x1bWJpYSBWMlggMFQ2Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLTUwICAgKGhleCkJCVNpbHZlciBTcHJpbmcgTmV0d29ya3MsIEluYwotMDAxMzUwICAgICAoYmFzZSAxNikJCVNpbHZlciBTcHJpbmcgTmV0d29ya3MsIEluYwotCQkJCTU3NSBCcm9hZHdheSBTdHJlZXQKLQkJCQlSZWR3b29kIENpdHkgQ0EgOTQwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTUxICAgKGhleCkJCU5pbGVzIEF1ZGlvIENvcnBvcmF0aW9uCi0wMDEzNTEgICAgIChiYXNlIDE2KQkJTmlsZXMgQXVkaW8gQ29ycG9yYXRpb24KLQkJCQkxMjMzMSBTVyAxMzB0aCBTdHJlZXQKLQkJCQlNaWFtaSBGTCAzMzE4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNTIgICAoaGV4KQkJTmF6dGVjLCBJbmMuCi0wMDEzNTIgICAgIChiYXNlIDE2KQkJTmF6dGVjLCBJbmMuCi0JCQkJODIwIFBhcmsgVHdvIERyLgotCQkJCVN1Z2FyIExhbmQgVFggNzc0NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTUzICAgKGhleCkJCUhZREFDIEZpbHRlcnRlY2huaWsgR01CSAotMDAxMzUzICAgICAoYmFzZSAxNikJCUhZREFDIEZpbHRlcnRlY2huaWsgR01CSAotCQkJCUluZHVzdHJpZWdlYmlldAotCQkJCVN1bHpiYWNoL1NhYXIgU2FhcmxhbmQgNjYyODAKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLTU0ICAgKGhleCkJCVpjb21heCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTM1NCAgICAgKGJhc2UgMTYpCQlaY29tYXggVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJOTggRm9yZCBSb2FkCi0JCQkJU3VpdGUgMy1GCi0JCQkJRGVudmlsbGUgTkogMDc4MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTU1ICAgKGhleCkJCVRPTUVOIEN5YmVyLWJ1c2luZXNzIFNvbHV0aW9ucywgSW5jLgotMDAxMzU1ICAgICAoYmFzZSAxNikJCVRPTUVOIEN5YmVyLWJ1c2luZXNzIFNvbHV0aW9ucywgSW5jLgotCQkJCTItMTEtMTkgS29obmFuCi0JCQkJTWluYXRva3Uta3UKLQkJCQlUT0tZTyAgMTA4LTAwNzUKLQkJCQlKQVBBTgotCi0wMC0xMy01NiAgIChoZXgpCQlGTElSIFJhZGlhdGlvbiBHbWJICi0wMDEzNTYgICAgIChiYXNlIDE2KQkJRkxJUiBSYWRpYXRpb24gR21iSAotCQkJCVBpZXBlcnNiZXJnIDEyLAotCQkJCVNvbGluZ2VuIE5SVyA0MjY1MwotCQkJCUdFUk1BTlkKLQotMDAtMTMtNTcgICAoaGV4KQkJU295YWwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTM1NyAgICAgKGJhc2UgMTYpCQlTb3lhbCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTEwRiwgTm8uIDI3LCBMYW5lIDE2OSwgS2FuZ25pbmcgU3QuLCBTaGlqciBDaXR5LAotCQkJCTJGLCBOby4gMjcsIExhbmUgMTY5LCBLYW5nbmluZyBTdC4sIFNoaWpyIENpdHksCi0JCQkJVGFpcGVpICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTU4ICAgKGhleCkJCVJlYWxtIFN5c3RlbXMsIEluYy4KLTAwMTM1OCAgICAgKGJhc2UgMTYpCQlSZWFsbSBTeXN0ZW1zLCBJbmMuCi0JCQkJOTM1MCBTb3V0aCA1MzUgRWFzdAotCQkJCTl0aCBGbG9vcgotCQkJCVNhbmR5IFV0YWggODQwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTU5ICAgKGhleCkJCVByb1RlbGV2aXNpb24gVGVjaG5vbG9naWVzIEEvUwotMDAxMzU5ICAgICAoYmFzZSAxNikJCVByb1RlbGV2aXNpb24gVGVjaG5vbG9naWVzIEEvUwotCQkJCU1hcmllbHVuZHZlaiAxNiwyCi0JCQkJSGVybGV2IENvcGVuaGFnZW4gMjczMAotCQkJCURFTk1BUksKLQotMDAtMTMtNUEgICAoaGV4KQkJUHJvamVjdCBUJkUgTGltaXRlZAotMDAxMzVBICAgICAoYmFzZSAxNikJCVByb2plY3QgVCZFIExpbWl0ZWQKLQkJCQlSb29tIDNDLCAyL0YuIFdhaCBTaGluZyBDZW50ZXIsCi0JCQkJMTEgU2hpbmcgWWlwIFN0cmVldCwKLQkJCQlLd3VuIFRvbmcsIEtvd2xvb24sIDg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0xMy01QiAgIChoZXgpCQlQYW5lbExpbmsgQ2luZW1hLCBMTEMKLTAwMTM1QiAgICAgKGJhc2UgMTYpCQlQYW5lbExpbmsgQ2luZW1hLCBMTEMKLQkJCQkxMDcwIEUgQXJxdWVzIEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNUMgICAoaGV4KQkJT25TaXRlIFN5c3RlbXMsIEluYy4KLTAwMTM1QyAgICAgKGJhc2UgMTYpCQlPblNpdGUgU3lzdGVtcywgSW5jLgotCQkJCTM5MDAgRnJlZWRvbSBDaXJjbGUKLQkJCQlTdWl0ZSAxMDIKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NC0xMjIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy01RCAgIChoZXgpCQlOVFRQQyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxMzVEICAgICAoYmFzZSAxNikJCU5UVFBDIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMy0yNSBLYW5kYSBKaW5iby1jaG8KLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMS0wMDUxCi0JCQkJSkFQQU4KLQotMDAtMTMtNUUgICAoaGV4KQkJRUFCL1JXSS9LCi0wMDEzNUUgICAgIChiYXNlIDE2KQkJRUFCL1JXSS9LCi0JCQkJRsOkcsO2Z2F0YW4gNgotCQkJCVN0b2NraG9sbSBLaXN0YSAxNjQgODAKLQkJCQlTV0VERU4KLQotMDAtMTMtNUYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMzVGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNjAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMzYwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNjEgICAoaGV4KQkJQmlvc3BhY2UgQ28uLCBMdGQuCi0wMDEzNjEgICAgIChiYXNlIDE2KQkJQmlvc3BhY2UgQ28uLCBMdGQuCi0JCQkJMTB0aCBGbG9vciwgUG9vbmdsaW0gQmxkZywgODIzIFllb2tzYW0gMS1kb25nCi0JCQkJR2FuZ25hbS1ndSBTZW91bCAxMzUtNzg0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTYyICAgKGhleCkJCVNoaW5IZXVuZyBQcmVjaXNpb24gQ28uLCBMdGQuCi0wMDEzNjIgICAgIChiYXNlIDE2KQkJU2hpbkhldW5nIFByZWNpc2lvbiBDby4sIEx0ZC4KLQkJCQlEYWVIYSBCbGRnLiA0MDEKLQkJCQkxMDEtNyBTaGluZ2lsRG9uZwotCQkJCVlvdW5nRHVuZ1BvR3UgU2VvdWwgMTUwLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy02MyAgIChoZXgpCQlWZXJhc2NhcGUsIEluYy4KLTAwMTM2MyAgICAgKGJhc2UgMTYpCQlWZXJhc2NhcGUsIEluYy4KLQkJCQkxMTAxIDMxc3QgU3QuLCBTdWl0ZSAjMTkwCi0JCQkJRG93bmVycyBHcm92ZSBJTCA2MDUxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNjQgICAoaGV4KQkJUGFyYWRpZ20gVGVjaG5vbG9neSBJbmMuLgotMDAxMzY0ICAgICAoYmFzZSAxNikJCVBhcmFkaWdtIFRlY2hub2xvZ3kgSW5jLi4KLQkJCQkzRiwgTm8uIDI4NSwgU2VjLjIsIFRpLURpbmcgQmx2ZCBOZWktSHUsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTY1ICAgKGhleCkJCU5vcnRlbAotMDAxMzY1ICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLTY2ICAgKGhleCkJCU5ldHVyaXR5IFRlY2hub2xvZ2llcyBJbmMuCi0wMDEzNjYgICAgIChiYXNlIDE2KQkJTmV0dXJpdHkgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk4MzAgU3Rld2FydCBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtNjcgICAoaGV4KQkJTmFyYXlvbi4gQ28uLCBMdGQuCi0wMDEzNjcgICAgIChiYXNlIDE2KQkJTmFyYXlvbi4gQ28uLCBMdGQuCi0JCQkJIzUwMiBIeW9jaGFuZyBUL1cgMTgxLTMKLQkJCQlKYW1zaWwtZG9uZywgU29uZ3BhLWd1Ci0JCQkJU2VvdWwgIDEzOC0yMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtNjggICAoaGV4KQkJTWFlcnNrIERhdGEgRGVmZW5jZQotMDAxMzY4ICAgICAoYmFzZSAxNikJCU1hZXJzayBEYXRhIERlZmVuY2UKLQkJCQlFbGxlZ2FhcmR2ZWogMjUKLQkJCQlTb2VuZGVyYm9yZyBESyA2NDAwCi0JCQkJREVOTUFSSwotCi0wMC0xMy02OSAgIChoZXgpCQlIb25kYSBFbGVjdHJvbiBDby4sIExFRC4KLTAwMTM2OSAgICAgKGJhc2UgMTYpCQlIb25kYSBFbGVjdHJvbiBDby4sIExFRC4KLQkJCQlLYW5lbWF0c3UgQnVpbGRpbmcgMyBGbG9vcgotCQkJCTItMTQtMSwgS3lvYmFzaGkgIAotCQkJCUNodW8ta3UgVG9reW8gMTA0LTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xMy02QSAgIChoZXgpCQlIYWNoIExhbmdlIFNBCi0wMDEzNkEgICAgIChiYXNlIDE2KQkJSGFjaCBMYW5nZSBTQQotCQkJCTYsIHJvdXRlIGRlIENvbXBvaXMKLQkJCQlDUCAyMTIKLQkJCQlWRVNFTkFaIEdFTkVWQSAxMjIyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTMtNkIgICAoaGV4KQkJRS1URUMKLTAwMTM2QiAgICAgKGJhc2UgMTYpCQlFLVRFQwotCQkJCTItMTctMTQtNTAzIEhha2F0YWVraW1hZQotCQkJCUhha2F0YWt1IEZ1a3Vva2FzaGkKLQkJCQlGdWt1b2thIEZ1a3Vva2FrZW4gODEyLTAwMTEKLQkJCQlKQVBBTgotCi0wMC0xMy02QyAgIChoZXgpCQlUb21Ub20KLTAwMTM2QyAgICAgKGJhc2UgMTYpCQlUb21Ub20KLQkJCQlPb3N0ZXJkb2tzc3RyYWF0IDExNAotCQkJCTEwMTEgREsgQW1zdGVyZGFtIAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTEzLTZEICAgKGhleCkJCVRlbnRhY3VsdXMgQUIKLTAwMTM2RCAgICAgKGJhc2UgMTYpCQlUZW50YWN1bHVzIEFCCi0JCQkJU3R1ZGllZ2FuZ2VuIDMKLQkJCQlPc3RlcnN1bmQgSmFtdGxhbmQgU0UgLSA4MzEgNDAKLQkJCQlTV0VERU4KLQotMDAtMTMtNkUgICAoaGV4KQkJVGVjaG1ldHJvIENvcnAuCi0wMDEzNkUgICAgIChiYXNlIDE2KQkJVGVjaG1ldHJvIENvcnAuCi0JCQkJNEYuIERvbmdhbSBCL0QuLCAyNjQtNSwgWWFuZ0phZS1Eb25nCi0JCQkJU2VvY2hvLUt1Ci0JCQkJU2VvdWwgIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtNkYgICAoaGV4KQkJUGFja2V0TW90aW9uLCBJbmMuCi0wMDEzNkYgICAgIChiYXNlIDE2KQkJUGFja2V0TW90aW9uLCBJbmMuCi0JCQkJMjEyMSBFbCBDYW1pbm8gUmVhbAotCQkJCTEwdGggRmxvb3IKLQkJCQlTYW4gTWF0ZW8gQ0EgOTQ0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTcwICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDEzNzAgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTEzLTcxICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDEzNzEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy03MiAgIChoZXgpCQlEZWxsIEluYy4KLTAwMTM3MiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy03MyAgIChoZXgpCQlCTHdhdmUgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTAwMTM3MyAgICAgKGJhc2UgMTYpCQlCTHdhdmUgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLQkJCQkyM0ZHSCwgQmxvY2sgQSxaaGVuWWUgQnVpbGRpbmcgLCBCYW9BbiBOYW4gUm9hZCAsIEx1b0h1ICwgU2hlbnpoZW4gLCBDaGluYQotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi0wMC0xMy03NCAgIChoZXgpCQlBdGhlcm9zIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDEzNzQgICAgIChiYXNlIDE2KQkJQXRoZXJvcyBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTU0ODAgR3JlYXQgQW1lcmljYSBQYXJrd2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTc1ICAgKGhleCkJCUFtZXJpY2FuIFNlY3VyaXR5IFByb2R1Y3RzIENvLgotMDAxMzc1ICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIFNlY3VyaXR5IFByb2R1Y3RzIENvLgotCQkJCTExOTI1IFBhY2lmaWMgYXZlLgotCQkJCUZvbnRhbmEgQ0EgOTIzMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTc2ICAgKGhleCkJCVRhYm9yIEVsZWN0cm9uaWNzIEx0ZC4KLTAwMTM3NiAgICAgKGJhc2UgMTYpCQlUYWJvciBFbGVjdHJvbmljcyBMdGQuCi0JCQkJOSBIYXRhdHNpYSBTdC4KLQkJCQlUZWwgSGFuYW4gIDIwMzAyCi0JCQkJSVNSQUVMCi0KLTAwLTEzLTc3ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ08uLCBMVEQKLTAwMTM3NyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENPLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4gM0RvbmcsIFllb25ndG9uZy1HdQotCQkJCVN1d29uIENpdHksIEdleW9uZ2dpIERvLCBLb3JlYQotCQkJCVN1d29uIEdleW9uZ2dpIDQ0Mzc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy03OCAgIChoZXgpCQlRU0FOIFRlY2hub2xvZ3ksIEluYy4KLTAwMTM3OCAgICAgKGJhc2UgMTYpCQlRU0FOIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyRi4sIE5vLjMxLCBMYW5lIDU4MywgUnVlaUd1YW5nIFJkLiwgTmVpaHUgRGlzdC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtNzkgICAoaGV4KQkJUE9OREVSIElORk9STUFUSU9OIElORFVTVFJJRVMgTFRELgotMDAxMzc5ICAgICAoYmFzZSAxNikJCVBPTkRFUiBJTkZPUk1BVElPTiBJTkRVU1RSSUVTIExURC4KLQkJCQkxNEYsTm8uNzcsbGFuZTcwMCwgQ2h1bmctQ2hlbmcgUm9hZAotCQkJCUhzaW4tVGllbiBDaXR5IFRhaXBlaSBIc2llbiAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLTdBICAgKGhleCkJCU5ldHZveCBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxMzdBICAgICAoYmFzZSAxNikJCU5ldHZveCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLjIxLTEgU2VjLiAxIENodW5nIEh1YSBXZXN0IFJvYWQKLQkJCQlUYWluYW4gIDcwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtN0IgICAoaGV4KQkJTW92b24gQ29ycG9yYXRpb24KLTAwMTM3QiAgICAgKGJhc2UgMTYpCQlNb3ZvbiBDb3Jwb3JhdGlvbgotCQkJCTV0aCwgSHl1bmp1ayBCL0QKLQkJCQkxNDAtMjgsIFNhbXN1bmctZG9uZywgS2FuZ25hbS1rdQotCQkJCVNlb3VsICAxMzUtMDkyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTdDICAgKGhleCkJCUthaWNvbSBjby4sIEx0ZC4KLTAwMTM3QyAgICAgKGJhc2UgMTYpCQlLYWljb20gY28uLCBMdGQuCi0JCQkJIzEwOSwgR2F5YW5nIFRlY2hubyBUb3duIDE0ODcsIEdheWFuZy1kb25nLEthbmdzby1ndQotCQkJCVNlb3VsICAxNTctODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTdEICAgKGhleCkJCUR5bmFsYWIsIEluYy4KLTAwMTM3RCAgICAgKGJhc2UgMTYpCQlEeW5hbGFiLCBJbmMuCi0JCQkJNTU1IExhbmNhc3RlciBBdmUuCi0JCQkJUmV5bm9sZHNidXJnIE9IIDQzMDY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy03RSAgIChoZXgpCQlDb3JFZGdlIE5ldHdvcmtzLCBJbmMuCi0wMDEzN0UgICAgIChiYXNlIDE2KQkJQ29yRWRnZSBOZXR3b3JrcywgSW5jLgotCQkJCTc2MDAgQm9vbmUgQXZlIE4KLQkJCQlTdWl0ZSAxCi0JCQkJQnJvb2tseW4gUGFyayBNTiA1NTQyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtN0YgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMzdGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtODAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxMzgwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtODEgICAoaGV4KQkJQ0hJUFMgJiBTeXN0ZW1zLCBJbmMuCi0wMDEzODEgICAgIChiYXNlIDE2KQkJQ0hJUFMgJiBTeXN0ZW1zLCBJbmMuCi0JCQkJNDc1MCBQYXRyaWNrIEhlbnJ5IERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtODIgICAoaGV4KQkJQ2V0YWNlYSBOZXR3b3JrcyBDb3Jwb3JhdGlvbgotMDAxMzgyICAgICAoYmFzZSAxNikJCUNldGFjZWEgTmV0d29ya3MgQ29ycG9yYXRpb24KLQkJCQkzNzA4IFdlc3QgMzZ0aCBBdmVudWUKLQkJCQlWYW5jb3V2ZXIgQnJpdGlzaCBDb2x1bWJpYSBWNk4gMlM0Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLTgzICAgKGhleCkJCUFwcGxpY2F0aW9uIFRlY2hub2xvZ2llcyBhbmQgRW5naW5lZXJpbmcgUmVzZWFyY2ggTGFib3JhdG9yeQotMDAxMzgzICAgICAoYmFzZSAxNikJCUFwcGxpY2F0aW9uIFRlY2hub2xvZ2llcyBhbmQgRW5naW5lZXJpbmcgUmVzZWFyY2ggTGFib3JhdG9yeQotCQkJCVNoaW5qdWt1IDEtY2hvbWUgQmxkZy4KLQkJCQkxLTEwLTQsIFNoaW5qdWt1Ci0JCQkJU2hpbmp1a3Uta3UgVG9reW8gMTYwLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0xMy04NCAgIChoZXgpCQlBZHZhbmNlZCBNb3Rpb24gQ29udHJvbHMKLTAwMTM4NCAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBNb3Rpb24gQ29udHJvbHMKLQkJCQkzODA1IENhbGxlIFRlY2F0ZQotCQkJCUNhbWFyaWxsbyBDYWxpZm9ybmlhIDkzMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy04NSAgIChoZXgpCQlBZGQtT24gVGVjaG5vbG9neSBDby4sIExURC4KLTAwMTM4NSAgICAgKGJhc2UgMTYpCQlBZGQtT24gVGVjaG5vbG9neSBDby4sIExURC4KLQkJCQkxRiwgTm8uMTEsIExhbmUgMjA2LCBEYS1BbiBSb2FkIFNlYy4gMSwKLQkJCQlUYWlwZWkgIDEwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtODYgICAoaGV4KQkJQUJCIEluYy4vVG90YWxmbG93Ci0wMDEzODYgICAgIChiYXNlIDE2KQkJQUJCIEluYy4vVG90YWxmbG93Ci0JCQkJNzA1MSBJbmR1c3RyaWFsIEJsdmQuCi0JCQkJQmFydGxlc3ZpbGxlIE9LIDc0MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy04NyAgIChoZXgpCQkyN00gVGVjaG5vbG9naWVzIEFCCi0wMDEzODcgICAgIChiYXNlIDE2KQkJMjdNIFRlY2hub2xvZ2llcyBBQgotCQkJCURpc2tldHRnYXRhbiAxMQotCQkJCUxpbmvDtnBpbmcgIFMtNTgzIDM1Ci0JCQkJU1dFREVOCi0KLTAwLTEzLTg4ICAgKGhleCkJCVdpTWVkaWEgQWxsaWFuY2UKLTAwMTM4OCAgICAgKGJhc2UgMTYpCQlXaU1lZGlhIEFsbGlhbmNlCi0JCQkJMjQwMCBDYW1pbm8gUmFtb24KLQkJCQlTdWl0ZSAzNzUKLQkJCQlTYW4gUmFtb24gQ0EgOTQ1ODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTg5ICAgKGhleCkJCVJlZGVzIGRlIFRlbGVmb27DrWEgTcOzdmlsIFMuQS4KLTAwMTM4OSAgICAgKGJhc2UgMTYpCQlSZWRlcyBkZSBUZWxlZm9uw61hIE3Ds3ZpbCBTLkEuCi0JCQkJQy9QdWVydG8gZGUgbGEgTW9yY3VlcmEgMTQgQjQKLQkJCQlMZWdhbsOpcyBNYWRyaWQgMjg5MTgKLQkJCQlTUEFJTgotCi0wMC0xMy04QSAgIChoZXgpCQlRSU5HREFPIEdPRVJURUsgRUxFQ1RST05JQ1MgQ08uLExURC4KLTAwMTM4QSAgICAgKGJhc2UgMTYpCQlRSU5HREFPIEdPRVJURUsgRUxFQ1RST05JQ1MgQ08uLExURC4KLQkJCQlSb29tIDYwNSxJbm5vdmF0aW9uIEJ1aWxkaW5nLEhpLXRlY2ggSW5kdXN0cmlhbCBQYXJrLAotCQkJCVFJTkdEQU8gU0hBTkRPTkcgMjY2MDYxCi0JCQkJQ0hJTkEKLQotMDAtMTMtOEIgICAoaGV4KQkJUGhhbnRvbSBUZWNobm9sb2dpZXMgTExDCi0wMDEzOEIgICAgIChiYXNlIDE2KQkJUGhhbnRvbSBUZWNobm9sb2dpZXMgTExDCi0JCQkJNzgyNSBGYXkgQXZlbnVlLCBTdWl0ZSAyMDAKLQkJCQlMYSBKb2xsYSBDQSA5MjAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtOEMgICAoaGV4KQkJS3VteW91bmcuQ28uTHRkCi0wMDEzOEMgICAgIChiYXNlIDE2KQkJS3VteW91bmcuQ28uTHRkCi0JCQkJU2VvdWwgS1kgYnVpbGRpbmcsIDQwLTE3IEhhbmdhbmcgUm8sIDNHYSwgWW91bmdzYW4tR3UKLQkJCQlTZW91bCAgMTQwLTg4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xMy04RCAgIChoZXgpCQlLaW5naG9sZAotMDAxMzhEICAgICAoYmFzZSAxNikJCUtpbmdob2xkCi0JCQkJMTFGLCBOby4gOTY1LCBKdW5namVuZyBSZC4KLQkJCQlKdW5naGUgVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtOEUgICAoaGV4KQkJRk9BQiBFbGVrdHJvbmlrIEFCCi0wMDEzOEUgICAgIChiYXNlIDE2KQkJRk9BQiBFbGVrdHJvbmlrIEFCCi0JCQkJU2Fua3QgSm9yZ2VucyBWYWcgOAotCQkJCUdvdGhlbmJ1cmcgIDQyMiA0OQotCQkJCVNXRURFTgotCi0wMC0xMy04RiAgIChoZXgpCQlBc2lhcm9jayBJbmNvcnBvcmF0aW9uCi0wMDEzOEYgICAgIChiYXNlIDE2KQkJQXNpYXJvY2sgSW5jb3Jwb3JhdGlvbgotCQkJCVAuTy4gQm94OTU3LCBPZmZzaG9yZSBJbmNvcnBvcmF0aW9ucyBDZW50cmUKLQkJCQlSb2FkIFRvd24gVG9ydG9sYSAKLQkJCQlWSVJHSU4gSVNMQU5EUywgQlJJVElTSAotCi0wMC0xMy05MCAgIChoZXgpCQlUZXJtdGVrIENvbXB1dGVyIENvLiwgTHRkCi0wMDEzOTAgICAgIChiYXNlIDE2KQkJVGVybXRlayBDb21wdXRlciBDby4sIEx0ZAotCQkJCTJGLCBOby4gMTAwLCBMaSBEZSBTdC4sCi0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy05MSAgIChoZXgpCQlPVUVOIENPLixMVEQuCi0wMDEzOTEgICAgIChiYXNlIDE2KQkJT1VFTiBDTy4sTFRELgotCQkJCUdvdGFuZGEgTlQgQmxkZy43RiwKLQkJCQk1LTIgSGlnYXNoaSBHb3RhbmRhIDQtY2hvbWUKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0xMy05MiAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLTAwMTM5MiAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmVudWUKLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLTkzICAgKGhleCkJCVBhbnRhIFN5c3RlbXMsIEluYy4KLTAwMTM5MyAgICAgKGJhc2UgMTYpCQlQYW50YSBTeXN0ZW1zLCBJbmMuCi0JCQkJMjA0NTAgU3RldmVucyBDcmVlayBCbHZkLgotCQkJCVN1aXRlIDQwMAotCQkJCUN1cGVydGlubyBDYWxpZm9ybmlhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy05NCAgIChoZXgpCQlJbmZvaGFuZCBDby4sTHRkCi0wMDEzOTQgICAgIChiYXNlIDE2KQkJSW5mb2hhbmQgQ28uLEx0ZAotCQkJCUtyYW56LVRlY2hubyAjMTIwNywgNTQ0Mi0xLCBTYW5nZGFld29uLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjItODE5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLTk1ICAgKGhleCkJCWNvbmdhdGVjIEFHCi0wMDEzOTUgICAgIChiYXNlIDE2KQkJY29uZ2F0ZWMgQUcKLQkJCQlBdXdpZXNlbnN0cmFzc2UgNQotCQkJCURlZ2dlbmRvcmYgIDk0NDY5Ci0JCQkJR0VSTUFOWQotCi0wMC0xMy05NiAgIChoZXgpCQlBY2JlbCBQb2x5dGVjaCBJbmMuCi0wMDEzOTYgICAgIChiYXNlIDE2KQkJQWNiZWwgUG9seXRlY2ggSW5jLgotCQkJCU5vLjE1OSxTZWMuMywgVGFtLUtpbmcgUmQuLAotCQkJCVRhbXN1aSBUYWlwZWkgMjUxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy05NyAgIChoZXgpCQlYc2lnbyBTeXN0ZW1zLCBJbmMuCi0wMDEzOTcgICAgIChiYXNlIDE2KQkJWHNpZ28gU3lzdGVtcywgSW5jLgotCQkJCTk0MCBTdGV3YXJ0IERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy05OCAgIChoZXgpCQlUcmFmZmljU2ltIENvLixMdGQKLTAwMTM5OCAgICAgKGJhc2UgMTYpCQlUcmFmZmljU2ltIENvLixMdGQKLQkJCQkyMy05IE1pdGEtYmlydSAyRiwgQ2hpeW9kYSAzLWNob21lCi0JCQkJTmFrYS1rdSwgTmFnb3lhCi0JCQkJQWljaGkgTm9uIDQ2MC0wMDEyCi0JCQkJSkFQQU4KLQotMDAtMTMtOTkgICAoaGV4KQkJU1RBQyBDb3Jwb3JhdGlvbi4KLTAwMTM5OSAgICAgKGJhc2UgMTYpCQlTVEFDIENvcnBvcmF0aW9uLgotCQkJCTItMTYtMzcsZnVqaW1pCi0JCQkJc2F5YW1hLXNoaSBzYWl0YW1hIDM1MC0xMzA2Ci0JCQkJSkFQQU4KLQotMDAtMTMtOUEgICAoaGV4KQkJSy11YmlxdWUgSUQgQ29ycC4KLTAwMTM5QSAgICAgKGJhc2UgMTYpCQlLLXViaXF1ZSBJRCBDb3JwLgotCQkJCVlhbWFzYW4gQmxkZy44RiwKLQkJCQlOaWhvbmJhc2hpIEhvbmNobzItNi0xMwotCQkJCUNodW8ta3UgVG9reW8gMTAzLTAwMjMKLQkJCQlKQVBBTgotCi0wMC0xMy05QiAgIChoZXgpCQlpb0lNQUdFIEx0ZC4KLTAwMTM5QiAgICAgKGJhc2UgMTYpCQlpb0lNQUdFIEx0ZC4KLQkJCQkzIE1hc2tpdCBTdHJlZXQKLQkJCQlIZXJ6bGl5YSBQaXR1YWNoIElMIDQ2NzMzCi0JCQkJSVNSQUVMCi0KLTAwLTEzLTlDICAgKGhleCkJCUV4YXZlcmEgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDEzOUMgICAgIChiYXNlIDE2KQkJRXhhdmVyYSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxOTUgTmV3IEhhbXBzaGlyZSBBdmVudWUKLQkJCQlTdWl0ZSAxNTUKLQkJCQlQb3J0c21vdXRoIE5IIDAzODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy05RCAgIChoZXgpCQlNYXJ2ZWxsIEhpc3BhbmEgUy5MLiAKLTAwMTM5RCAgICAgKGJhc2UgMTYpCQlNYXJ2ZWxsIEhpc3BhbmEgUy5MLiAKLQkJCQlDLyBDaGFybGVzIFJvYmVydCBEYXJ3aW4sIDIKLQkJCQlQYXJjIFRlY25vbG9naWMgUGF0ZXJuYSA0Njk4MAotCQkJCVNQQUlOCi0KLTAwLTEzLTlFICAgKGhleCkJCUNpYXJhIFRlY2hub2xvZ2llcyBJbmMuCi0wMDEzOUUgICAgIChiYXNlIDE2KQkJQ2lhcmEgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk5MzAwIFRyYW5zIENhbmFkYSBIaWdod2F5Ci0JCQkJU2FpbnQtTGF1cmVudCBRdWViZWMgSDRTIDFLNQotCQkJCUNBTkFEQQotCi0wMC0xMy05RiAgIChoZXgpCQlFbGVjdHJvbmljcyBEZXNpZ24gU2VydmljZXMsIENvLiwgTHRkLgotMDAxMzlGICAgICAoYmFzZSAxNikJCUVsZWN0cm9uaWNzIERlc2lnbiBTZXJ2aWNlcywgQ28uLCBMdGQuCi0JCQkJNS0xMC0yMCBUb2t1bWFydQotCQkJCUl0YWJhc2hpLWt1IFRva3lvIDE3NS0wMDgzCi0JCQkJSkFQQU4KLQotMDAtMTMtQTAgICAoaGV4KQkJQUxHT1NZU1RFTSBDby4sIEx0ZC4KLTAwMTNBMCAgICAgKGJhc2UgMTYpCQlBTEdPU1lTVEVNIENvLiwgTHRkLgotCQkJCTY1NiBrb2JpcmFvIG1paGFyYS1jaG8KLQkJCQlzYWthaSBvc2FrYSA1ODctMDAyMQotCQkJCUpBUEFOCi0KLTAwLTEzLUExICAgKGhleCkJCUNyb3cgRWxlY3Ryb25pYyBFbmdlbmVlcmluZwotMDAxM0ExICAgICAoYmFzZSAxNikJCUNyb3cgRWxlY3Ryb25pYyBFbmdlbmVlcmluZwotCQkJCTEyIEtpbm5lcmV0IHN0LgotCQkJCUFpcnBvcnQgQ2l0eSAgCi0JCQkJSVNSQUVMCi0KLTAwLTEzLUEyICAgKGhleCkJCU1heFN0cmVhbSwgSW5jCi0wMDEzQTIgICAgIChiYXNlIDE2KQkJTWF4U3RyZWFtLCBJbmMKLQkJCQkzNTUgU291dGggNTIwIFdlc3QgU3VpdGUgMTgwCi0JCQkJTGluZG9uIFV0IDg0MDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1BMyAgIChoZXgpCQlTaWVtZW5zIENvbSBDUEUgRGV2aWNlcwotMDAxM0EzICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQ29tIENQRSBEZXZpY2VzCi0JCQkJNDg0OSBBbHBoYSBSb2FkCi0JCQkJRGFsbGFzIFRleGFzIDc1MjQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1BNCAgIChoZXgpCQlLZXlFeWUgQ29tbXVuaWNhdGlvbnMKLTAwMTNBNCAgICAgKGJhc2UgMTYpCQlLZXlFeWUgQ29tbXVuaWNhdGlvbnMKLQkJCQk5Nzg1IEdvZXRoZQotCQkJCVNhY3JhbWVudG8gQ0EgOTU4MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUE1ICAgKGhleCkJCUdlbmVyYWwgU29sdXRpb25zLCBMVEQuCi0wMDEzQTUgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBTb2x1dGlvbnMsIExURC4KLQkJCQk1OTAyIFNvdmVyZWlnbiBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUE2ICAgKGhleCkJCUV4dHJpY29tIEx0ZAotMDAxM0E2ICAgICAoYmFzZSAxNikJCUV4dHJpY29tIEx0ZAotCQkJCUdsaWwgWWFtCi0JCQkJSGVyemxpYSAgNDY5MDUKLQkJCQlJU1JBRUwKLQotMDAtMTMtQTcgICAoaGV4KQkJQkFUVEVMTEUgTUVNT1JJQUwgSU5TVElUVVRFCi0wMDEzQTcgICAgIChiYXNlIDE2KQkJQkFUVEVMTEUgTUVNT1JJQUwgSU5TVElUVVRFCi0JCQkJNTA1IEtJTkcgQVZFCi0JCQkJQ09MVU1CVVMgT0hJTyA0MzIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQTggICAoaGV4KQkJVGFuaXN5cyBUZWNobm9sb2d5Ci0wMDEzQTggICAgIChiYXNlIDE2KQkJVGFuaXN5cyBUZWNobm9sb2d5Ci0JCQkJMTIyMDEgVGVjaG5vbG9neSBCbHZkLgotCQkJCVN1aXRlIDEyNQotCQkJCUF1c3RpbiBUWCA3ODcyNy02NjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1BOSAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0wMDEzQTkgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMgNS0xLTIKLQkJCQlLaXRhc2hpbmFnYXdhLAotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTAwLTEzLUFBICAgKGhleCkJCUFMUyAgJiBURUMgTHRkLgotMDAxM0FBICAgICAoYmFzZSAxNikJCUFMUyAgJiBURUMgTHRkLgotCQkJCTYgQi4gS2F6YWNoeWEgc3RyLgotCQkJCVNhcmF0b3YgU2FyYXRvdiByZWdpb24gNDEwNjAwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTEzLUFCICAgKGhleCkJCVRlbGVtb3RpdmUgQUcKLTAwMTNBQiAgICAgKGJhc2UgMTYpCQlUZWxlbW90aXZlIEFHCi0JCQkJQnJlaXR3aWVzZW4KLQkJCQlNdWVobGhhdXNlbiBCYWRlbiBXdWVydHRlbWJlcmcgNzMzNDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTEzLUFDICAgKGhleCkJCVN1bm15dW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0wMDEzQUMgICAgIChiYXNlIDE2KQkJU3VubXl1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLQkJCQlMQVJHTy1QTEFaQSA4RiwgSmFuZ2hhbmctRG9uZwotCQkJCTg1Ny0xLCBJbHNhbi1LdQotCQkJCUtveWFuZyBLeXVuZ2tpIDQxMS04MzcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtQUQgICAoaGV4KQkJU2VuZG8gTHRkCi0wMDEzQUQgICAgIChiYXNlIDE2KQkJU2VuZG8gTHRkCi0JCQkJSGF0Y2hmb3JkIEJyb29rCi0JCQkJSGF0Y2hmb3JkIFdheQotCQkJCUJpcm1pbmdoYW0gV2VzdCBNaWRsYW5kcyBCMjYgM1JaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTMtQUUgICAoaGV4KQkJUmFkaWFuY2UgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDEzQUUgICAgIChiYXNlIDE2KQkJUmFkaWFuY2UgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMzUwIFd5bm4gRHIuCi0JCQkJSHVudHN2aWxsZSBBbGFiYW1hIDM1ODA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1BRiAgIChoZXgpCQlOVU1BIFRlY2hub2xvZ3ksSW5jLgotMDAxM0FGICAgICAoYmFzZSAxNikJCU5VTUEgVGVjaG5vbG9neSxJbmMuCi0JCQkJNEYsTm83NzgsU2VjIDQsUGF0Y2ggUmQuCi0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLUIwICAgKGhleCkJCUphYmxvdHJvbgotMDAxM0IwICAgICAoYmFzZSAxNikJCUphYmxvdHJvbgotCQkJCVBvZCBTa2Fsa291IDMzCi0JCQkJSmFibG9uZWMgbmFkIE5pc291ICA0NjYwMQotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTEzLUIxICAgKGhleCkJCUludGVsbGlnZW50IENvbnRyb2wgU3lzdGVtcyAoQXNpYSkgUHRlIEx0ZAotMDAxM0IxICAgICAoYmFzZSAxNikJCUludGVsbGlnZW50IENvbnRyb2wgU3lzdGVtcyAoQXNpYSkgUHRlIEx0ZAotCQkJCTcwIFViaSBDcmVzY2VudCAjMDEtMTIKLQkJCQlVYmkgVGVjaCBQYXJrCi0JCQkJNDA4NTcwCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTEzLUIyICAgKGhleCkJCUNhcmFsbG9uIExpbWl0ZWQKLTAwMTNCMiAgICAgKGJhc2UgMTYpCQlDYXJhbGxvbiBMaW1pdGVkCi0JCQkJU3R1ZGlvIEcyMCBTaGVwaGVyZHMgQnVpbGRpbmcKLQkJCQlSb2NrbGV5IFJvYWQKLQkJCQlMb25kb24gVzE0IDBEQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEzLUIzICAgKGhleCkJCUVjb20gQ29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTNCMyAgICAgKGJhc2UgMTYpCQlFY29tIENvbW11bmljYXRpb25zIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJRmxvb3IgNywgTWFjaGluZXJ5IEluZHVzdHJ5IEJ1aWxkaW5nLCBOby4yMiwKLQkJCQlCYWl3YW56aHVhbmcgU3RyZWV0LCBYaWNoZW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgCi0JCQkJQ0hJTkEKLQotMDAtMTMtQjQgICAoaGV4KQkJQXBwZWFyIFRWCi0wMDEzQjQgICAgIChiYXNlIDE2KQkJQXBwZWFyIFRWCi0JCQkJTGlsbGVha2VydmVpZW4gNmQKLQkJCQlQLk8uIEJveCA4IExpbGxlYWtlcgotCQkJCU5PLTAyMTYgT3NsbyAKLQkJCQlOT1JXQVkKLQotMDAtMTMtQjUgICAoaGV4KQkJV2F2ZXNhdAotMDAxM0I1ICAgICAoYmFzZSAxNikJCVdhdmVzYXQKLQkJCQkxMzc1LCBUcmFucy1DYW5hZGEgSGlnaHdheQotCQkJCVN1aXRlIDMwMAotCQkJCURvcnZhbCBRdWViZWMgSDlQIDJXOAotCQkJCUNBTkFEQQotCi0wMC0xMy1CNiAgIChoZXgpCQlTbGluZyBNZWRpYSwgSW5jLgotMDAxM0I2ICAgICAoYmFzZSAxNikJCVNsaW5nIE1lZGlhLCBJbmMuCi0JCQkJMTg0MCBHYXRld2F5IENlbnRlcgotCQkJCTJuZCBGbG9vcgotCQkJCVNhbiBNYXRlbyBDQSA5NDQwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtQjcgICAoaGV4KQkJU2NhbnRlY2ggSUQKLTAwMTNCNyAgICAgKGJhc2UgMTYpCQlTY2FudGVjaCBJRAotCQkJCUFtZXJzZm9vcnRzZXN0cmFhdCAxMjQKLQkJCQlTb2VzdGVyYmVyZyBVdHJlY2h0IDM3NjkgQU4KLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMy1COCAgIChoZXgpCQlSeUNvIEVsZWN0cm9uaWMgU3lzdGVtcyBMaW1pdGVkCi0wMDEzQjggICAgIChiYXNlIDE2KQkJUnlDbyBFbGVjdHJvbmljIFN5c3RlbXMgTGltaXRlZAotCQkJCVVuaXQgRSwgQ2FydGVsIEJ1c2luZXNzIEVzdGF0ZQotCQkJCUVkaW5idXJnaCBXYXkKLQkJCQlIYXJsb3cgRXNzZXggQ00yMCAyVFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xMy1COSAgIChoZXgpCQlCTSBTUEEKLTAwMTNCOSAgICAgKGJhc2UgMTYpCQlCTSBTUEEKLQkJCQlWSUEgTUlMQU5PIDU0LzU2Ci0JCQkJUm96emFubyAgMjAwODkKLQkJCQlJVEFMWQotCi0wMC0xMy1CQSAgIChoZXgpCQlSZWFkeUxpbmtzIEluYwotMDAxM0JBICAgICAoYmFzZSAxNikJCVJlYWR5TGlua3MgSW5jCi0JCQkJNjU5NSBFZGVudmFsZSBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAxODAKLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUJCICAgKGhleCkJCVNtYXJ0dnVlIENvcnBvcmF0aW9uCi0wMDEzQkIgICAgIChiYXNlIDE2KQkJU21hcnR2dWUgQ29ycG9yYXRpb24KLQkJCQkxMDIgV29vZG1vbnQgQm91bGV2YXJkCi0JCQkJU3VpdGUgMjAwCi0JCQkJTmFzaHZpbGxlIFROIDM3MjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1CQyAgIChoZXgpCQlBcnRpbWkgTHRkCi0wMDEzQkMgICAgIChiYXNlIDE2KQkJQXJ0aW1pIEx0ZAotCQkJCUJldGplbWFuIEhvdXNlCi0JCQkJMTA0IEhpbGxzIFJvYWQKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0IyIDFMUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTEzLUJEICAgKGhleCkJCUhZTUFUT00gU0EKLTAwMTNCRCAgICAgKGJhc2UgMTYpCQlIWU1BVE9NIFNBCi0JCQkJWm9uZSBJbmR1c3RyaWVsbGUKLQkJCQkxNzUgcnVlIGRlIE1hc3NhY2FuCi0JCQkJVkVOREFSR1VFUyBIRVJBVUxUIDM0NzQwCi0JCQkJRlJBTkNFCi0KLTAwLTEzLUJFICAgKGhleCkJCVZpcnR1YWwgQ29uZXhpb25zCi0wMDEzQkUgICAgIChiYXNlIDE2KQkJVmlydHVhbCBDb25leGlvbnMKLQkJCQk0MTAgcnVlIFN0LU5pY29sYXMsIHN1aXRlIDYwMAotCQkJCU1vbnRyw6lhbCBRdcOpYmVjIEgyWSAyUDUKLQkJCQlDQU5BREEKLQotMDAtMTMtQkYgICAoaGV4KQkJTWVkaWEgU3lzdGVtIFBsYW5uaW5nIENvcnAuCi0wMDEzQkYgICAgIChiYXNlIDE2KQkJTWVkaWEgU3lzdGVtIFBsYW5uaW5nIENvcnAuCi0JCQkJNEYgVmVsY28tS3Vyb21vbiBCbGRnLgotCQkJCTMtMTQtNSBVZW5vLAotCQkJCVRhaXRvLWt1LCBUb2t5byAxMTAtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTEzLUMwICAgKGhleCkJCVRyaXggVGVjbm9sb2dpYSBMdGRhLgotMDAxM0MwICAgICAoYmFzZSAxNikJCVRyaXggVGVjbm9sb2dpYSBMdGRhLgotCQkJCVJ1YSBkYSBQYXosIDE5NTcgLSBDaMOhY2FyYSBTYW50byBBbnTDtG5pbwotCQkJCVPDo28gUGF1bG8gIDA0NzEzLTAwMgotCQkJCUJSQVpJTAotCi0wMC0xMy1DMSAgIChoZXgpCQlBc29rYSBVU0EgQ29ycG9yYXRpb24KLTAwMTNDMSAgICAgKGJhc2UgMTYpCQlBc29rYSBVU0EgQ29ycG9yYXRpb24KLQkJCQk1NTggUGlsZ3JpbSBEcml2ZQotCQkJCVVuaXQgSAotCQkJCUZvc3RlciBDaXR5IENBIDk0NDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1DMiAgIChoZXgpCQlXQUNPTSBDby4sTHRkCi0wMDEzQzIgICAgIChiYXNlIDE2KQkJV0FDT00gQ28uLEx0ZAotCQkJCTItNTEwLTEgVG95b25vZGFpIE90b25lLW1hY2hpCi0JCQkJS2l0YXNhaXRhbWEtZ3VuIFNhaXRhbWEgMzQ5LTExNDgKLQkJCQlKQVBBTgotCi0wMC0xMy1DMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDEzQzMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1DNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDEzQzQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1DNSAgIChoZXgpCQlMSUdIVFJPTiBGSUJFUi1PUFRJQyBERVZJQ0VTIElOQy4KLTAwMTNDNSAgICAgKGJhc2UgMTYpCQlMSUdIVFJPTiBGSUJFUi1PUFRJQyBERVZJQ0VTIElOQy4KLQkJCQk1MS0xIE1vb25weXVuZy1Eb25nLCBUYWVkdWNrLUd1Ci0JCQkJVGFlam9uIDMwNi0yMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtQzYgICAoaGV4KQkJT3BlbkdlYXIsIEluYwotMDAxM0M2ICAgICAoYmFzZSAxNikJCU9wZW5HZWFyLCBJbmMKLQkJCQk3OTg0IFNvdXRoIFdlbGJ5IFBhcmsgIzEwMQotCQkJCVNhbHQgTGFrZSBDaXR5IFVUQUggODQwODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUM3ICAgKGhleCkJCUlPTk9TIENvLixMdGQuCi0wMDEzQzcgICAgIChiYXNlIDE2KQkJSU9OT1MgQ28uLEx0ZC4KLQkJCQkxLTM2LTE4IE1peWFzYWthCi0JCQkJU2V0YWdheWEta3UgVG9reW8gMTU2LTAwNTEKLQkJCQlKQVBBTgotCi0wMC0xMy1DOCAgIChoZXgpCQlBREIgQnJvYWRiYW5kIEl0YWxpYQotMDAxM0M4ICAgICAoYmFzZSAxNikJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi0JCQkJVklBTEUgU0FSQ0EgMjIyCi0JCQkJTUlMQU5PICAyMDEyNgotCQkJCUlUQUxZCi0KLTAwLTEzLUM5ICAgKGhleCkJCUJleW9uZCBBY2hpZXZlIEVudGVycHJpc2VzIEx0ZC4KLTAwMTNDOSAgICAgKGJhc2UgMTYpCQlCZXlvbmQgQWNoaWV2ZSBFbnRlcnByaXNlcyBMdGQuCi0JCQkJCi0JCQkJUC5PLiBCb3ggOTU3LCBPZmZzaG9yZSBJbmNvcnBvcmF0aW9ucyBDZW50cmUKLQkJCQlSb2FkIFRvd24gVG9ydG9sYSAKLQkJCQlWSVJHSU4gSVNMQU5EUywgQlJJVElTSAotCi0wMC0xMy1DQSAgIChoZXgpCQlQaWNvIERpZ2l0YWwKLTAwMTNDQSAgICAgKGJhc2UgMTYpCQlQaWNvIERpZ2l0YWwKLQkJCQk2MjYwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1DQiAgIChoZXgpCQlaZW5pdGVsIE5vcndheSBBUwotMDAxM0NCICAgICAoYmFzZSAxNikJCVplbml0ZWwgTm9yd2F5IEFTCi0JCQkJU2FuZGFrZXIgdiAyNCBjCi0JCQkJUE8gQm94IDQ0OTgKLQkJCQlPc2xvIDA0MDMKLQkJCQlOT1JXQVkKLQotMDAtMTMtQ0MgICAoaGV4KQkJVGFsbCBNYXBsZSBTeXN0ZW1zCi0wMDEzQ0MgICAgIChiYXNlIDE2KQkJVGFsbCBNYXBsZSBTeXN0ZW1zCi0JCQkJODUgU2FyYXRvZ2EgQXZlIFN1aXRlIDEzOQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1DRCAgIChoZXgpCQlNVEkgY28uIExURAotMDAxM0NEICAgICAoYmFzZSAxNikJCU1USSBjby4gTFRECi0JCQkJMTY2LTEwIEthcmFrLWRvbmcKLQkJCQlSJkQgR3JvdXAgMwotCQkJCVNvbmdwYS1rdSBTZW91bCAxMzgtODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLUNFICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxM0NFICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS10ZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTMtQ0YgICAoaGV4KQkJNEFjY2VzcyBDb21tdW5pY2F0aW9ucwotMDAxM0NGICAgICAoYmFzZSAxNikJCTRBY2Nlc3MgQ29tbXVuaWNhdGlvbnMKLQkJCQkxIE4uIExhU2FsbGUgU3QuCi0JCQkJU3VpdGUgMjAxNQotCQkJCUNoaWNhZ28gSUwgNjA2MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUQwICAgKGhleCkJCXQrIE1lZGljYWwgTHRkCi0wMDEzRDAgICAgIChiYXNlIDE2KQkJdCsgTWVkaWNhbCBMdGQKLQkJCQkxNzRFIE1pbHRvbiBQYXJrCi0JCQkJQWJpbmdkb24gIE9YMTQgNFNFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTMtRDEgICAoaGV4KQkJS0lSSyB0ZWxlY29tIEEvUwotMDAxM0QxICAgICAoYmFzZSAxNikJCUtJUksgdGVsZWNvbSBBL1MKLQkJCQlMYW5nbWFya3N2ZWogMzQKLQkJCQlIb3JzZW5zICA4NzAwCi0JCQkJREVOTUFSSwotCi0wMC0xMy1EMiAgIChoZXgpCQlQQUdFIElCRVJJQ0EsIFMuQS4KLTAwMTNEMiAgICAgKGJhc2UgMTYpCQlQQUdFIElCRVJJQ0EsIFMuQS4KLQkJCQlBVi4gREUgTEEgSU5EVVNUUklBLCAyNAotCQkJCVRSRVMgQ0FOVE9TIE1BRFJJRCAyODc2MAotCQkJCVNQQUlOCi0KLTAwLTEzLUQzICAgKGhleCkJCU1JQ1JPLVNUQVIgSU5URVJOQVRJT05BTCBDTy4sIExURC4KLTAwMTNEMyAgICAgKGJhc2UgMTYpCQlNSUNSTy1TVEFSIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0JCQkJTk8uIDY5LCBMSS1ERSBTVC4KLQkJCQlKVU5HLUhFIENJVFkgVEFJUEVJIEhTSUVOIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtRDQgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDEzRDQgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJTm8uNSBTaGluZyBZZWggU3RyZWV0Ci0JCQkJS3dlaSBTaGFuIEhzaWFuZwotCQkJCVRhbyBZdWFuIEhzaWVuICAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLUQ1ICAgKGhleCkJCVJ1Z2dlZENvbQotMDAxM0Q1ICAgICAoYmFzZSAxNikJCVJ1Z2dlZENvbQotCQkJCTMwMCBBcHBsZXdvb2QgQ3Jlc2NlbnQgKFVuaXQgMSkKLQkJCQlDb25jb3JkLCAgT250YXJpbyBMNEsgNUM3Ci0JCQkJQ0FOQURBCi0KLTAwLTEzLUQ2ICAgKGhleCkJCVRJSSBORVRXT1JLIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAxM0Q2ICAgICAoYmFzZSAxNikJCVRJSSBORVRXT1JLIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTEzODUgQUtST04gU1RSRUVUCi0JCQkJQ09QSUFHVUUgTlkgMTE3MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUQ3ICAgKGhleCkJCVNQSURDT00gVGVjaG5vbG9naWVzIFNBCi0wMDEzRDcgICAgIChiYXNlIDE2KQkJU1BJRENPTSBUZWNobm9sb2dpZXMgU0EKLQkJCQkxMzcgYXZlbnVlIGR1IEdlbmVyYWwgTEVDTEVSQwotCQkJCUJPVVJHIExBIFJFSU5FICA5MjM0MAotCQkJCUZSQU5DRQotCi0wMC0xMy1EOCAgIChoZXgpCQlQcmluY2V0b24gSW5zdHJ1bWVudHMKLTAwMTNEOCAgICAgKGJhc2UgMTYpCQlQcmluY2V0b24gSW5zdHJ1bWVudHMKLQkJCQkzNjYwIFF1YWtlcmJyaWRnZSBSb2FkCi0JCQkJVHJlbnRvbiBOSiAwODYxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRDkgICAoaGV4KQkJTWF0cml4IFByb2R1Y3QgRGV2ZWxvcG1lbnQsIEluYy4KLTAwMTNEOSAgICAgKGJhc2UgMTYpCQlNYXRyaXggUHJvZHVjdCBEZXZlbG9wbWVudCwgSW5jLgotCQkJCTEzIE5vcnRoIEJpcmQgU3RyZWV0Ci0JCQkJU3VuIFByYWlyaWUgV0kgNTM1OTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLURBICAgKGhleCkJCURpc2t3YXJlIENvLiwgTHRkCi0wMDEzREEgICAgIChiYXNlIDE2KQkJRGlza3dhcmUgQ28uLCBMdGQKLQkJCQkxLTQtMTIgS2liYQotCQkJCU5ha29qaWtpYmEgQmxkZy41RgotCQkJCUtvdG8ta3UgVG9reW8gMTM1LTAwNDIKLQkJCQlKQVBBTgotCi0wMC0xMy1EQiAgIChoZXgpCQlTSE9FSSBFbGVjdHJpYyBDby4sTHRkCi0wMDEzREIgICAgIChiYXNlIDE2KQkJU0hPRUkgRWxlY3RyaWMgQ28uLEx0ZAotCQkJCTEtMjktMixXYWthYmF5YXNoaQotCQkJCVNldGFnYXlhLWt1IFRva3lvIDE1NC0wMDIzCi0JCQkJSkFQQU4KLQotMDAtMTMtREMgICAoaGV4KQkJSUJURUsgSU5DLgotMDAxM0RDICAgICAoYmFzZSAxNikJCUlCVEVLIElOQy4KLQkJCQkxNkYsIDMwLCBQZWktUGluZyBFYXN0IFJkLiwKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTMtREQgICAoaGV4KQkJQWJib3R0IERpYWdub3N0aWNzCi0wMDEzREQgICAgIChiYXNlIDE2KQkJQWJib3R0IERpYWdub3N0aWNzCi0JCQkJNTQ0MCBQYXRyaWNrIEhlbnJ5IERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLURFICAgKGhleCkJCUFkYXB0NCwgTExDCi0wMDEzREUgICAgIChiYXNlIDE2KQkJQWRhcHQ0LCBMTEMKLQkJCQkxMDUwIFcgTmFzYSBCbHZkLAotCQkJCVN1aXRlIDEzNAotCQkJCU1lbGJvdXJuZSBGTCAzMjkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtREYgICAoaGV4KQkJUnl2b3IgQ29ycC4KLTAwMTNERiAgICAgKGJhc2UgMTYpCQlSeXZvciBDb3JwLgotCQkJCTE1MTQ1IFJlZCBIaWxsIEF2ZS4KLQkJCQlTdWl0ZSBCCi0JCQkJVHVzdGluIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1FMCAgIChoZXgpCQlNdXJhdGEgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLTAwMTNFMCAgICAgKGJhc2UgMTYpCQlNdXJhdGEgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLQkJCQkyMjg4LCBPc2hpbm9oYXJhLAotCQkJCVlhc3Utc2hpIFNoaWdhIDUyMC0yMzkzCi0JCQkJSkFQQU4KLQotMDAtMTMtRTEgICAoaGV4KQkJSXByb2JlIEFCCi0wMDEzRTEgICAgIChiYXNlIDE2KQkJSXByb2JlIEFCCi0JCQkJRmlubGFuZHNnYXRhbiAxMgotCQkJCUtpc3RhIFNFLTE2NDc0Ci0JCQkJU1dFREVOCi0KLTAwLTEzLUUyICAgKGhleCkJCUdlb1Zpc2lvbiBJbmMuCi0wMDEzRTIgICAgIChiYXNlIDE2KQkJR2VvVmlzaW9uIEluYy4KLQkJCQk5Ri4sTm8uMjQ2LFNlYy4xLAotCQkJCU5laWh1IFJkLE5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFBST1ZJTkNFIE9GIENISU5BCi0KLTAwLTEzLUUzICAgKGhleCkJCUNvVmkgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDEzRTMgICAgIChiYXNlIDE2KQkJQ29WaSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk2MzAwIEJyaWRnZXBvaW50IFBhcmt3YXkKLQkJCQlTdWl0ZSAzMDAsIEJsZGcuIElJCi0JCQkJQXVzdGluIFRleGFzIDc4NzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1FNCAgIChoZXgpCQlZQU5HSkFFIFNZU1RFTVMgQ09SUC4KLTAwMTNFNCAgICAgKGJhc2UgMTYpCQlZQU5HSkFFIFNZU1RFTVMgQ09SUC4KLQkJCQkxMjAyLiBIQU5TSElOIElUIFRPV0VSIEd1cm8tM0RvbmcsCi0JCQkJR3Vyby1HdQotCQkJCVNlb3VsIDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtRTUgICAoaGV4KQkJVEVOT1NZUywgSU5DLgotMDAxM0U1ICAgICAoYmFzZSAxNikJCVRFTk9TWVMsIElOQy4KLQkJCQlTZW9qaW4gQi9ELCAxNTY0LTEsIFNlb2Noby1kb25nLAotCQkJCVNlb2Noby1ndQotCQkJCVNlb3VsIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTMtRTYgICAoaGV4KQkJVGVjaG5vbHV0aW9uCi0wMDEzRTYgICAgIChiYXNlIDE2KQkJVGVjaG5vbHV0aW9uCi0JCQkJWnVpZGVsaWpraGFsZnJvbmQgMQotCQkJCUdPVURBIFpIIDI4MDEgREQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xMy1FNyAgIChoZXgpCQlIYWxjcm8KLTAwMTNFNyAgICAgKGJhc2UgMTYpCQlIYWxjcm8KLQkJCQlTdWl0ZSAxLCBMZXZlbCAxCi0JCQkJOCBHcmVlbmhpbGwgUmQKLQkJCQlXYXl2aWxsZSBTb3V0aCBBdXN0cmFsaWEgNTAzNAotCQkJCUFVU1RSQUxJQQotCi0wMC0xMy1FOCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMTNFOCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktdGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTEzLUU5ICAgKGhleCkJCVZlcmlXYXZlLCBJbmMuCi0wMDEzRTkgICAgIChiYXNlIDE2KQkJVmVyaVdhdmUsIEluYy4KLQkJCQk5NjAwIFNXIE9hayBTdC4KLQkJCQlQb3J0bGFuZCBPUiA5NzIyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRUEgICAoaGV4KQkJS2Ftc3RydXAgQS9TCi0wMDEzRUEgICAgIChiYXNlIDE2KQkJS2Ftc3RydXAgQS9TCi0JCQkJSW5kdXN0cml2ZWogMjgKLQkJCQlTdGlsbGluZyAgODY2MAotCQkJCURFTk1BUksKLQotMDAtMTMtRUIgICAoaGV4KQkJU3lzbWFzdGVyIENvcnBvcmF0aW9uCi0wMDEzRUIgICAgIChiYXNlIDE2KQkJU3lzbWFzdGVyIENvcnBvcmF0aW9uCi0JCQkJNTgwMSBDaHJpc3RpZSBBdmUuCi0JCQkJU3VpdGUgNDAwCi0JCQkJRW1lcnl2aWxsZSBDQSA5NDYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRUMgICAoaGV4KQkJU3VuYmF5IFNvZnR3YXJlIEFHCi0wMDEzRUMgICAgIChiYXNlIDE2KQkJU3VuYmF5IFNvZnR3YXJlIEFHCi0JCQkJU2Vlc3RyYXNzZSA3OAotCQkJCVJ1ZXNjaGxpa29uIFpIIDg4MDMKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xMy1FRCAgIChoZXgpCQlQU0lBCi0wMDEzRUQgICAgIChiYXNlIDE2KQkJUFNJQQotCQkJCTUxNy0xMyBJbmR1c3BpcyA1dGgKLQkJCQlTYW5nRGFlV29uRG9uZyBKdW5nV29uR3UKLQkJCQlTdW5nTmFtIEt5dW5nR2kgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTEzLUVFICAgKGhleCkJCUpCWCBEZXNpZ25zIEluYy4KLTAwMTNFRSAgICAgKGJhc2UgMTYpCQlKQlggRGVzaWducyBJbmMuCi0JCQkJUE8gQm94IDk3MDE1OAotCQkJCUJvY2EgUmF0b24gRkwgMzM0OTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUVGICAgKGhleCkJCUtpbmdqb24gRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQKLTAwMTNFRiAgICAgKGJhc2UgMTYpCQlLaW5nam9uIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJUm9vbSA4MjcsSHVhbmFuIERpYW5saSBCdWxkaW5nLE5vLjIwNTAKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDMxCi0JCQkJQ0hJTkEKLQotMDAtMTMtRjAgICAoaGV4KQkJV2F2ZWZyb250IFNlbWljb25kdWN0b3IKLTAwMTNGMCAgICAgKGJhc2UgMTYpCQlXYXZlZnJvbnQgU2VtaWNvbmR1Y3RvcgotCQkJCTQ3NDYgNDR0aCBBdmUgU1cKLQkJCQlTdWl0ZSAyMDEKLQkJCQlTZWF0dGxlIFdBIDk4MTE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1GMSAgIChoZXgpCQlBTU9EIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDEzRjEgICAgIChiYXNlIDE2KQkJQU1PRCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTJGLiwgTm8uIDE2LCBQcm9zcGVyaXR5IFJvYWQgSUkKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1LCAgMzAwNzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLUYyICAgKGhleCkJCUtsYXMgTHRkCi0wMDEzRjIgICAgIChiYXNlIDE2KQkJS2xhcyBMdGQKLQkJCQlCcmFjZXRvd24gQnVzaW5lc3MgUGFyawotCQkJCUNsb25lZSBDbyBNZWF0aCAKLQkJCQlJUkVMQU5ECi0KLTAwLTEzLUYzICAgKGhleCkJCUdpZ2EtYnl0ZSBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDEzRjMgICAgIChiYXNlIDE2KQkJR2lnYS1ieXRlIENvbW11bmljYXRpb25zIEluYy4KLQkJCQk4RiwgTm8uNDMsIEZ1LUhzaW4gUm9hZC4gSHNpbi1UaWVuCi0JCQkJVGFpcGVpIEhzaWVuICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTEzLUY0ICAgKGhleCkJCVBzaXRlayAoUHR5KSBMdGQKLTAwMTNGNCAgICAgKGJhc2UgMTYpCQlQc2l0ZWsgKFB0eSkgTHRkCi0JCQkJVGhlIFZpbmV5YXJkcyBPZmZpY2UgRXN0YXRlCi0JCQkJOTkgSmlwIGRlIEphZ2VyIERyaXZlCi0JCQkJVHlnZXIgVmFsbGV5IENhcGUgVG93biA3NTMwCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTEzLUY1ICAgKGhleCkJCUFraW1iaSBTeXN0ZW1zCi0wMDEzRjUgICAgIChiYXNlIDE2KQkJQWtpbWJpIFN5c3RlbXMKLQkJCQkxNDAwIEZhc2hpb24gSXNsYW5kIEJsdmQKLQkJCQlTdWl0ZSA5MDAKLQkJCQlTYW4gTWF0ZW8gQ0EgOTQ0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUY2ICAgKGhleCkJCUNpbnRlY2gKLTAwMTNGNiAgICAgKGJhc2UgMTYpCQlDaW50ZWNoCi0JCQkJMjFhIHJvdXRlIGRlIGxhIHdhbnR6ZW5hdQotCQkJCUhvZW5oZWltICA2NzgwMAotCQkJCUZSQU5DRQotCi0wMC0xMy1GNyAgIChoZXgpCQlTTUMgTmV0d29ya3MsIEluYy4KLTAwMTNGNyAgICAgKGJhc2UgMTYpCQlTTUMgTmV0d29ya3MsIEluYy4KLQkJCQkzOCBUZXNsYQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTMtRjggICAoaGV4KQkJRGV4IFNlY3VyaXR5IFNvbHV0aW9ucwotMDAxM0Y4ICAgICAoYmFzZSAxNikJCURleCBTZWN1cml0eSBTb2x1dGlvbnMKLQkJCQkxMCBKdW5jdGlvbiBSb2FkIFBhcmt0b3duCi0JCQkJMm5kIEZsb29yIEJQIEhvdXNlCi0JCQkJSm9oYW5uZXNidXJnIEd1dGVuZyAyMDAwCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTEzLUY5ICAgKGhleCkJCUNhdmVyYSBTeXN0ZW1zCi0wMDEzRjkgICAgIChiYXNlIDE2KQkJQ2F2ZXJhIFN5c3RlbXMKLQkJCQkyMzU1IE9ha2xhbmQgUmQsIFN1aXRlIzMzCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUZBICAgKGhleCkJCUxpZmVTaXplIENvbW11bmljYXRpb25zLCBJbmMKLTAwMTNGQSAgICAgKGJhc2UgMTYpCQlMaWZlU2l6ZSBDb21tdW5pY2F0aW9ucywgSW5jCi0JCQkJOTAxIFMuIE1vcGFjCi0JCQkJQmxkZyAzLCBTdWl0ZSAzMDAKLQkJCQlBdXN0aW4gVFggNzg3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTEzLUZCICAgKGhleCkJCVJLQyBJTlNUUlVNRU5UIElOQy4KLTAwMTNGQiAgICAgKGJhc2UgMTYpCQlSS0MgSU5TVFJVTUVOVCBJTkMuCi0JCQkJMTYtNiwgS3VnYWhhcmEgNS1jaG9tZSwKLQkJCQlPaHRhLWt1IFRva3lvIDE0Ni04NTE1Ci0JCQkJSkFQQU4KLQotMDAtMTMtRkMgICAoaGV4KQkJU2lDb3J0ZXgsIEluYwotMDAxM0ZDICAgICAoYmFzZSAxNikJCVNpQ29ydGV4LCBJbmMKLQkJCQkzIENsb2NrdG93ZXIgUGxhY2UKLQkJCQlTdWl0ZSAyMTAKLQkJCQlNYXluYXJkIE1BIDAxNzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xMy1GRCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxM0ZEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xMy1GRSAgIChoZXgpCQlHUkFORFRFQyBFTEVDVFJPTklDIENPUlAuCi0wMDEzRkUgICAgIChiYXNlIDE2KQkJR1JBTkRURUMgRUxFQ1RST05JQyBDT1JQLgotCQkJCThGLE5PLjI2OCxMaWFuIENoZW5nIFJkLixDaHVuZyBIbyBDaXR5LAotCQkJCUhzaWVuIDIzNQotCQkJCVRhaXBlaSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xMy1GRiAgIChoZXgpCQlEYWdlLU1USSBvZiBNQywgSW5jLgotMDAxM0ZGICAgICAoYmFzZSAxNikJCURhZ2UtTVRJIG9mIE1DLCBJbmMuCi0JCQkJNzAxIE4uIFJvZXNrZSBBdmUuCi0JCQkJTWljaGlnYW4gQ2l0eSBJTiA0NjM2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMDAgICAoaGV4KQkJTUlORVJWQSBLT1JFQSBDTy4sIExURAotMDAxNDAwICAgICAoYmFzZSAxNikJCU1JTkVSVkEgS09SRUEgQ08uLCBMVEQKLQkJCQkjMjAzLCBTSCBTaWVubmUsIFNlb2h5ZW9uLURvbmcKLQkJCQlCdW5kYW5nLUd1Ci0JCQkJU2VvbmduYW0tU2kgR3llb25nZ2ktRG8gNDYzLTgyMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC0wMSAgIChoZXgpCQlSaXZlcnRyZWUgTmV0d29ya3MgQ29ycC4KLTAwMTQwMSAgICAgKGJhc2UgMTYpCQlSaXZlcnRyZWUgTmV0d29ya3MgQ29ycC4KLQkJCQlSIzMwNCwgSy1DZW50ZXIsIDE1OTEtOQotCQkJCUJ1cmltLWRvbmcsIERvbmdhaG4tZ3UKLQkJCQlBbnlhbmctc2kgS3l1bmdnaS1kbyA0MzEtODE1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LTAyICAgKGhleCkJCWtrLWVsZWN0cm9uaWMgYS9zCi0wMDE0MDIgICAgIChiYXNlIDE2KQkJa2stZWxlY3Ryb25pYyBhL3MKLQkJCQlDeXByZXN2ZWogNgotCQkJCUhlcm5pbmcgIDc0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTE0LTAzICAgKGhleCkJCVJlbmFzaXMsIExMQwotMDAxNDAzICAgICAoYmFzZSAxNikJCVJlbmFzaXMsIExMQwotCQkJCTE1MzAgTi4gU3RhdGUgU3QuCi0JCQkJU3VpdGUgRQotCQkJCUxlaGkgVVQgODQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTA0ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE0MDQgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0wNSAgIChoZXgpCQlPcGVuSUIsIEluYy4KLTAwMTQwNSAgICAgKGJhc2UgMTYpCQlPcGVuSUIsIEluYy4KLQkJCQlPcGVuRmFicmljcywgSW5jLiwgYy9vIFFMb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTIwNzEgU3RpZXJsaW4gQ291cnQsIFN1aXRlIDIwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMtNDY1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMDYgICAoaGV4KQkJR28gTmV0d29ya3MKLTAwMTQwNiAgICAgKGJhc2UgMTYpCQlHbyBOZXR3b3JrcwotCQkJCTEyNiBZaWdhbCBBbG9uIHN0LgotCQkJCVRlbCBBdml2ICA2NzQ0MwotCQkJCUlTUkFFTAotCi0wMC0xNC0wNyAgIChoZXgpCQlTcGVyaWFuIFByb3RlY3Rpb24gSW5zdHJ1bWVudGF0aW9uCi0wMDE0MDcgICAgIChiYXNlIDE2KQkJU3BlcmlhbiBQcm90ZWN0aW9uIEluc3RydW1lbnRhdGlvbgotCQkJCTY1MSBTb3V0aCBNYWluIFN0cmVldAotCQkJCU1pZGRsZXRvd24gQ1QgMDY0NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTA4ICAgKGhleCkJCUVrYSBTeXN0ZW1zIEluYy4KLTAwMTQwOCAgICAgKGJhc2UgMTYpCQlFa2EgU3lzdGVtcyBJbmMuCi0JCQkJMjAyNTEgQ2VudHVyeSBCbHZkCi0JCQkJU3VpdGUgMTIwCi0JCQkJR2VybWFudG93biBNRCAyMDg3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMDkgICAoaGV4KQkJTUFHTkVUSSBNQVJFTExJICAgUy5FLiBTLnAuQS4KLTAwMTQwOSAgICAgKGJhc2UgMTYpCQlNQUdORVRJIE1BUkVMTEkgICBTLkUuIFMucC5BLgotCQkJCVpJIE5vcmQsIEFsbGVlIGQnQXJnZW5zb24KLQkJCQlDSEFURUxMRVJBVUxUICA4NjEwMAotCQkJCUZSQU5DRQotCi0wMC0xNC0wQSAgIChoZXgpCQlXRVBJTyBDby4sIEx0ZC4KLTAwMTQwQSAgICAgKGJhc2UgMTYpCQlXRVBJTyBDby4sIEx0ZC4KLQkJCQkjMTEyNSwgT3B1czEsIEd1cm9kb25nY29tcGxleCBidWlsZGluZwotCQkJCTYxMS0yNixHdXJvLWRvbmcsR3Vyby1ndSwKLQkJCQlTZW91bCAgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC0wQiAgIChoZXgpCQlGSVJTVCBJTlRFUk5BVElPTkFMIENPTVBVVEVSLCBJTkMuCi0wMDE0MEIgICAgIChiYXNlIDE2KQkJRklSU1QgSU5URVJOQVRJT05BTCBDT01QVVRFUiwgSU5DLgotCQkJCUZJQyBCVUlMRElORywgTk8uMzAwLCBZQU5HIEdVQU5HIFNULiwKLQkJCQlORUlIVQotCQkJCVRBSVBFSSBDT1VOVFkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0wQyAgIChoZXgpCQlHS0IgQ0NUViBDTy4sIExURC4KLTAwMTQwQyAgICAgKGJhc2UgMTYpCQlHS0IgQ0NUViBDTy4sIExURC4KLQkJCQk3RiwgTm8uIDEsIExhbmUgNjQxLAotCQkJCVNoZW4gTGluZyBTb3V0aCBSZC4sCi0JCQkJVGEgWWEgSHNpYW5nLCBUQUlDSFVORyA0MjgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTBEICAgKGhleCkJCU5vcnRlbAotMDAxNDBEICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE0LTBFICAgKGhleCkJCU5vcnRlbAotMDAxNDBFICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE0LTBGICAgKGhleCkJCUZlZGVyYWwgU3RhdGUgVW5pdGFyeSBFbnRlcnByaXNlIExlbmluZ3JhZCBSJkQgSW5zdGl0dXRlIG9mCi0wMDE0MEYgICAgIChiYXNlIDE2KQkJRmVkZXJhbCBTdGF0ZSBVbml0YXJ5IEVudGVycHJpc2UgTGVuaW5ncmFkIFImRCBJbnN0aXR1dGUgb2YKLQkJCQkxMSBXYXJzaGF3c2theWEgU3QuCi0JCQkJU3QuIFBldGVyc2J1cmcgMTk2MTI4Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE0LTEwICAgKGhleCkJCVN1emhvdSBLZWRhIFRlY2hub2xvZ3kgQ08uLEx0ZAotMDAxNDEwICAgICAoYmFzZSAxNikJCVN1emhvdSBLZWRhIFRlY2hub2xvZ3kgQ08uLEx0ZAotCQkJCTEzMSxKaW5zaGFuIFJvYWQKLQkJCQlTdXpob3UgSmlhbmdTdSAyMTUwMTEKLQkJCQlDSElOQQotCi0wMC0xNC0xMSAgIChoZXgpCQlEZXV0c2NobWFubiBBdXRvbWF0aW9uIEdtYkggJiBDby4gS0cKLTAwMTQxMSAgICAgKGJhc2UgMTYpCQlEZXV0c2NobWFubiBBdXRvbWF0aW9uIEdtYkggJiBDby4gS0cKLQkJCQlDYXJsLVplaXNzLVN0ci4gOAotCQkJCUJhZCBDYW1iZXJnICBEIC0gNjU1MjAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTEyICAgKGhleCkJCVMtVEVDIGVsZWN0cm9uaWNzIEFHCi0wMDE0MTIgICAgIChiYXNlIDE2KQkJUy1URUMgZWxlY3Ryb25pY3MgQUcKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDQ5Ci0JCQkJWnVnIDYzMDAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNC0xMyAgIChoZXgpCQlUcmViaW5nICYgSGltc3RlZHQgUHJvemVzc2F1dG9tYXRpb24gR21iSCAmIENvLiBLRwotMDAxNDEzICAgICAoYmFzZSAxNikJCVRyZWJpbmcgJiBIaW1zdGVkdCBQcm96ZXNzYXV0b21hdGlvbiBHbWJIICYgQ28uIEtHCi0JCQkJV2lsaGVsbS1IZW5uZW1hbm4tU3RyLiAxMwotCQkJCVNjaHdlcmluIE1lY2tsZW5idXJnLVZvcnBvbW1lcm4gMTkwNjEKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTE0ICAgKGhleCkJCUp1bXBub2RlIFN5c3RlbXMgTExDLgotMDAxNDE0ICAgICAoYmFzZSAxNikJCUp1bXBub2RlIFN5c3RlbXMgTExDLgotCQkJCTgwMCBXYXNoaW5ndG9uIEF2ZSBOLgotCQkJCVN1aXRlIDMwOQotCQkJCU1pbm5lYXBvbGlzIE1OIDU1MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0xNSAgIChoZXgpCQlJbnRlYyBBdXRvbWF0aW9uIEluYy4KLTAwMTQxNSAgICAgKGJhc2UgMTYpCQlJbnRlYyBBdXRvbWF0aW9uIEluYy4KLQkJCQkyNzUxIEFyYnV0dXMgUmQuCi0JCQkJVmljdG9yaWEgQnJpdGlzaCBDb2x1bWJpYSBWOE4gNVg3Ci0JCQkJQ0FOQURBCi0KLTAwLTE0LTE2ICAgKGhleCkJCVNjb3NjaGUgSW5kdXN0cmllcywgSW5jLgotMDAxNDE2ICAgICAoYmFzZSAxNikJCVNjb3NjaGUgSW5kdXN0cmllcywgSW5jLgotCQkJCVBPIEJveCAyOTAxCi0JCQkJT3huYXJkIENBIDkzMDM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0xNyAgIChoZXgpCQlSU0UgSW5mb3JtYXRpb25zIFRlY2hub2xvZ2llIEdtYkgKLTAwMTQxNyAgICAgKGJhc2UgMTYpCQlSU0UgSW5mb3JtYXRpb25zIFRlY2hub2xvZ2llIEdtYkgKLQkJCQlTaWxiZXJiZXJnc3RyYXNzZSA5Ci0JCQkJV29sZnNiZXJnIEvDpHJudGVuIDk0MDAKLQkJCQlBVVNUUklBCi0KLTAwLTE0LTE4ICAgKGhleCkJCUM0TGluZQotMDAxNDE4ICAgICAoYmFzZSAxNikJCUM0TGluZQotCQkJCTEwMDEgSHl1bmRhaSBQYXJpc2lhbiwKLQkJCQk5MDctMTAgTW9rNS1Eb25nCi0JCQkJWWFuZ2NodW4tR3UgU2VvdWwgMTU4LTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC0xOSAgIChoZXgpCQlTSURTQQotMDAxNDE5ICAgICAoYmFzZSAxNikJCVNJRFNBCi0JCQkJUFRNIC0gVE9SUkVTIFFVRVZFRE8gMQotCQkJCVRSRVMgQ0FOVE9TIE1BRFJJRCAyODc2MAotCQkJCVNQQUlOCi0KLTAwLTE0LTFBICAgKGhleCkJCURFSUNZIENPUlBPUkFUSU9OCi0wMDE0MUEgICAgIChiYXNlIDE2KQkJREVJQ1kgQ09SUE9SQVRJT04KLQkJCQkzLTMtNixTYWthZS1jaG8sSGFtdXJhLXNoaSwKLQkJCQlUb2t5byAyMDUtMDAwMgotCQkJCUpBUEFOCi0KLTAwLTE0LTFCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTQxQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTFDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTQxQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTFEICAgKGhleCkJCUx1c3QgQW50cmllYnN0ZWNobmlrIEdtYkgKLTAwMTQxRCAgICAgKGJhc2UgMTYpCQlMdXN0IEFudHJpZWJzdGVjaG5payBHbWJICi0JCQkJR2V3ZXJiZXN0cmFzc2UgNS05Ci0JCQkJTGFobmF1IEhlc3NlbiAzNTYzMwotCQkJCUdFUk1BTlkKLQotMDAtMTQtMUUgICAoaGV4KQkJUC5BLiBTZW1pLCBJbmMuCi0wMDE0MUUgICAgIChiYXNlIDE2KQkJUC5BLiBTZW1pLCBJbmMuCi0JCQkJMzk2NSBGcmVlZG9tIENpcmNsZSwgRmwgOAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0xRiAgIChoZXgpCQlTdW5Ld2FuZyBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAxNDFGICAgICAoYmFzZSAxNikJCVN1bkt3YW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJIzM2NShUZWNobm8tcGFyaywgMzAxIGRvbmcsIDkwMSBobywpIFNhbWp1bmctZG9uZywgT2hqdW5nLWt1LAotCQkJCUJ1Y2hlb24tc2hpIEt5dW5nZ2ktZG8gNDIxLTgwOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC0yMCAgIChoZXgpCQlHLUxpbmtzIG5ldHdvcmtpbmcgY29tcGFueQotMDAxNDIwICAgICAoYmFzZSAxNikJCUctTGlua3MgbmV0d29ya2luZyBjb21wYW55Ci0JCQkJMUZMLiBOTy4xNS00OSwgTUlORyBERVIgU0VDT05EIFJPQUQsCi0JCQkJQ0hJIERVIERJU1RSSUNULAotCQkJCUtlZWx1bmcgIDIwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtMjEgICAoaGV4KQkJVG90YWwgV2lyZWxlc3MgVGVjaG5vbG9naWVzIFB0ZS4gTHRkLgotMDAxNDIxICAgICAoYmFzZSAxNikJCVRvdGFsIFdpcmVsZXNzIFRlY2hub2xvZ2llcyBQdGUuIEx0ZC4KLQkJCQlCbGsgMTAwMywgQnVraXQgTWVyYWggQ2VudHJhbCwgIzA0LTE4Ci0JCQkJVGVjaG5vcHJlbmV1ciBDZW50cmUKLQkJCQkxNTk4MzYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTQtMjIgICAoaGV4KQkJRGVsbCBJbmMuCi0wMDE0MjIgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMuCi0JCQkJT25lIERlbGwgV2F5Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMjMgICAoaGV4KQkJSi1TIENvLiBORVVST0NPTQotMDAxNDIzICAgICAoYmFzZSAxNikJCUotUyBDby4gTkVVUk9DT00KLQkJCQlFbmVyZ2V0aWNoZXNraWkgcHJvZXpkLCA2Ci0JCQkJTW9zY293ICAxMTEyNTAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTQtMjQgICAoaGV4KQkJTWVycnkgRWxlY3RyaWNzIENPLiwgTFRELgotMDAxNDI0ICAgICAoYmFzZSAxNikJCU1lcnJ5IEVsZWN0cmljcyBDTy4sIExURC4KLQkJCQlOTy4yMiwyM3JkIFJPQUQKLQkJCQlQQVJLIFRBSUNIVU5HLAotCQkJCVRBSUNIVU5HIENJVFkgIDQwODUwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0yNSAgIChoZXgpCQlHYWxhY3RpYyBDb21wdXRpbmcgQ29ycC4KLTAwMTQyNSAgICAgKGJhc2UgMTYpCQlHYWxhY3RpYyBDb21wdXRpbmcgQ29ycC4KLQkJCQkxL0YKLQkJCQkxMiBMZWUgQ2h1bmcgU3RyZWV0Ci0JCQkJQ2hhaSBXYW4gRGlzdHJpY3QgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xNC0yNiAgIChoZXgpCQlOTCBUZWNobm9sb2d5Ci0wMDE0MjYgICAgIChiYXNlIDE2KQkJTkwgVGVjaG5vbG9neQotCQkJCTgwMCBUdXJucGlrZSBTdHJlZXQKLQkJCQlTVEUgMTAwCi0JCQkJTm9ydGggQW5kb3ZlciBNQSAwMTg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMjcgICAoaGV4KQkJSmF6ek11dGFudAotMDAxNDI3ICAgICAoYmFzZSAxNikJCUphenpNdXRhbnQKLQkJCQkyIGFsbGVlIGR1IERveWVuIEdlb3JnZXMgQnJ1cwotCQkJCVBlc3NhYyAgMzM2MDAKLQkJCQlGUkFOQ0UKLQotMDAtMTQtMjggICAoaGV4KQkJVm9jb2xsZWN0LCBJbmMKLTAwMTQyOCAgICAgKGJhc2UgMTYpCQlWb2NvbGxlY3QsIEluYwotCQkJCTcwMyBSb2RpIFJvYWQKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0yOSAgIChoZXgpCQlWIENlbnRlciBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDE0MjkgICAgIChiYXNlIDE2KQkJViBDZW50ZXIgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCTdGLTcsIE5PLjM1LCBIc2ludGFpIFJkLgotCQkJCUp1YmVpIENpdHkgSHNpbmNodSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTJBICAgKGhleCkJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtIENvLiwgTHRkCi0wMDE0MkEgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uLCBMdGQKLQkJCQlOby4yMiwgQWxsZXkgMzgsIExhbmUgOTEsIFNlYy4gMSwKLQkJCQlOZWkgSHUgUm9hZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0yQiAgIChoZXgpCQlFZGF0YSBDb21tdW5pY2F0aW9uIEluYy4KLTAwMTQyQiAgICAgKGJhc2UgMTYpCQlFZGF0YSBDb21tdW5pY2F0aW9uIEluYy4KLQkJCQkyRi0xLCBOby4gODcyLCBDaHVuZy1DaGVuZyBSZAotCQkJCUNodW5nLUhvIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0yQyAgIChoZXgpCQlLb25jZXB0IEludGVybmF0aW9uYWwsIEluYy4KLTAwMTQyQyAgICAgKGJhc2UgMTYpCQlLb25jZXB0IEludGVybmF0aW9uYWwsIEluYy4KLQkJCQkyNTAwIEUgRm9vdGhpbGwgQmx2ZC4gIzQwNwotCQkJCVBhc2FkZW5hIENBIDkxMTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0yRCAgIChoZXgpCQlUb3JhZGV4IEFHCi0wMDE0MkQgICAgIChiYXNlIDE2KQkJVG9yYWRleCBBRwotCQkJCUFsdHNhZ2Vuc3RyYXNzZSA1Ci0JCQkJSG9ydyBMVSA2MDQ4Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTQtMkUgICAoaGV4KQkJNzcgRWxla3Ryb25pa2EgS2Z0LgotMDAxNDJFICAgICAoYmFzZSAxNikJCTc3IEVsZWt0cm9uaWthIEtmdC4KLQkJCQlGZWhlcnZhcmkgdXQgOTguCi0JCQkJQnVkYXBlc3QgSC0xMTYzCi0JCQkJSFVOR0FSWQotCi0wMC0xNC0yRiAgIChoZXgpCQlXaWxkUGFja2V0cwotMDAxNDJGICAgICAoYmFzZSAxNikJCVdpbGRQYWNrZXRzCi0JCQkJMTM0MCBUcmVhdCBCb3VsZXZhcmQKLQkJCQlTdWl0ZSA1MDAKLQkJCQlXYWxudXQgQ3JlZWsgQ0EgOTQ1OTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTMwICAgKGhleCkJCVZpUG93RVIsIEluYwotMDAxNDMwICAgICAoYmFzZSAxNikJCVZpUG93RVIsIEluYwotCQkJCTlGLiwgTm8uMjA1LTMsIFNlYy4gMywgQmVpc2luIFJkCi0JCQkJU2luZGlhbiBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtMzEgICAoaGV4KQkJUERMIEVsZWN0cm9uaWNzIEx0ZAotMDAxNDMxICAgICAoYmFzZSAxNikJCVBETCBFbGVjdHJvbmljcyBMdGQKLQkJCQk4MSBBdXN0aW4gU3RyZWV0Ci0JCQkJTmFwaWVyIEhhd2tlcyBCYXkgNDAxNQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTE0LTMyICAgKGhleCkJCVRhcmFsbGF4IFdpcmVsZXNzLCBJbmMuCi0wMDE0MzIgICAgIChiYXNlIDE2KQkJVGFyYWxsYXggV2lyZWxlc3MsIEluYy4KLQkJCQkxMCBXZXN0IDEwMCBTb3V0aCwKLQkJCQlTdWl0ZSA2MDAKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtMzMgICAoaGV4KQkJRW1wb3dlciBUZWNobm9sb2dpZXMoQ2FuYWRhKSBJbmMuCi0wMDE0MzMgICAgIChiYXNlIDE2KQkJRW1wb3dlciBUZWNobm9sb2dpZXMoQ2FuYWRhKSBJbmMuCi0JCQkJVW5pdCA0MDUgLSA1NjAwIFBhcmt3b29kIFdheSwKLQkJCQlSaWNobW9uZCBCcml0aXNoIENvbHVtYmlhIFY2ViAyTTIKLQkJCQlDQU5BREEKLQotMDAtMTQtMzQgICAoaGV4KQkJS2VyaSBTeXN0ZW1zLCBJbmMKLTAwMTQzNCAgICAgKGJhc2UgMTYpCQlLZXJpIFN5c3RlbXMsIEluYwotCQkJCVN1aXRlIDEwMAotCQkJCTE1MzAgT2FrbGFuZCBSZAotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0zNSAgIChoZXgpCQlDaXR5Q29tIENvcnAuCi0wMDE0MzUgICAgIChiYXNlIDE2KQkJQ2l0eUNvbSBDb3JwLgotCQkJCTNGLiwgTm8uNTMyLCBTZWMuIDIsCi0JCQkJSmhvbmdzaGFuIFJkLgotCQkJCUpob25naGUgQ2l0eSBUYWlwZWkgSHNpZW4gMjM1NTcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTM2ICAgKGhleCkJCVF3ZXJ0eSBFbGVrdHJvbmlrIEFCCi0wMDE0MzYgICAgIChiYXNlIDE2KQkJUXdlcnR5IEVsZWt0cm9uaWsgQUIKLQkJCQlHcnl0IDQ0Ci0JCQkJU0UtMTQ4IDkyCi0JCQkJ1nNtbyAgNjEwIDYwCi0JCQkJU1dFREVOCi0KLTAwLTE0LTM3ICAgKGhleCkJCUdTVGVsZXRlY2ggQ28uLEx0ZC4KLTAwMTQzNyAgICAgKGJhc2UgMTYpCQlHU1RlbGV0ZWNoIENvLixMdGQuCi0JCQkJMTM4NS0xNCwgSnVhbi1Eb25nLCBOYW0tZ3UKLQkJCQlJbmNoZW9uIDQwMi0yMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtMzggICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMTQzOCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5IFNvdXRoCi0JCQkJTVMwNzA0MDUKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0zOSAgIChoZXgpCQlCbG9uZGVyIFRvbmd1ZSBMYWJvcmF0b3JpZXMsIEluYy4KLTAwMTQzOSAgICAgKGJhc2UgMTYpCQlCbG9uZGVyIFRvbmd1ZSBMYWJvcmF0b3JpZXMsIEluYy4KLQkJCQlPbmUgSmFrZSBCcm93biBSb2FkCi0JCQkJT2xkIEJyaWRnZSBOZXcgSmVyc2V5IDA4ODU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC0zQSAgIChoZXgpCQlSQVlUQUxLIElOVEVSTkFUSU9OQUwgU1JMCi0wMDE0M0EgICAgIChiYXNlIDE2KQkJUkFZVEFMSyBJTlRFUk5BVElPTkFMIFNSTAotCQkJCVN0LiBNYXJlY2NoaWEgNzkKLQkJCQlWZXJ1Y2NoaW8gKFJOKSA0NzgyNgotCQkJCUlUQUxZCi0KLTAwLTE0LTNCICAgKGhleCkJCVNlbnNvdmF0aW9uIEFHCi0wMDE0M0IgICAgIChiYXNlIDE2KQkJU2Vuc292YXRpb24gQUcKLQkJCQlMdWR3aWdzaGFmZW5lciBTdHIuIDI5Ci0JCQkJU3RvY2thY2ggQmFkZW4tV3VlcnR0ZW1iZXJnIDc4MzMzCi0JCQkJR0VSTUFOWQotCi0wMC0xNC0zQyAgIChoZXgpCQlSaGVpbm1ldGFsbCBDYW5hZGEgSW5jLgotMDAxNDNDICAgICAoYmFzZSAxNikJCVJoZWlubWV0YWxsIENhbmFkYSBJbmMuCi0JCQkJMjI1IGJvdWwgZHUgc2VtaW5haXJlIHN1ZAotCQkJCVN0LUplYW4tc3VyLVJpY2hlbGlldSBRdWViZWMgSjNCIDhFOQotCQkJCUNBTkFEQQotCi0wMC0xNC0zRCAgIChoZXgpCQlBZXZvZSBJbmMuCi0wMDE0M0QgICAgIChiYXNlIDE2KQkJQWV2b2UgSW5jLgotCQkJCTExRiwgTm8gMjMsIEtlZWx1bmcgUm9hZAotCQkJCVRhaXBlaSBIc2luWWkgRGlzdHJpY3QgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC0zRSAgIChoZXgpCQlBaXJMaW5rIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDE0M0UgICAgIChiYXNlIDE2KQkJQWlyTGluayBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTMxNTkgQ29ycG9yYXRlIFBsYWNlCi0JCQkJSGF5d2FyZCBDQSA5NDU0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtM0YgICAoaGV4KQkJSG90d2F5IFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMTQzRiAgICAgKGJhc2UgMTYpCQlIb3R3YXkgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCU5vLiA4MSwgSHNpbiBUYWkgNXRoIFJvYWQgU2VjdGlvbiAxCi0JCQkJMTFGLTMKLQkJCQlTaGlKciBUYWlwZWkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC00MCAgIChoZXgpCQlBVE9NSUMgQ29ycG9yYXRpb24KLTAwMTQ0MCAgICAgKGJhc2UgMTYpCQlBVE9NSUMgQ29ycG9yYXRpb24KLQkJCQlNQU1QTyBCTERHCi0JCQkJMS0zLTExLEFTQUtVU0FCQVNISQotCQkJCVRBSVRPLUtVIFRPS1lPIDExMS0wMDUzCi0JCQkJSkFQQU4KLQotMDAtMTQtNDEgICAoaGV4KQkJSW5ub3ZhdGlvbiBTb3VuZCBUZWNobm9sb2d5IENvLiwgTFRELgotMDAxNDQxICAgICAoYmFzZSAxNikJCUlubm92YXRpb24gU291bmQgVGVjaG5vbG9neSBDby4sIExURC4KLQkJCQlCdWlsZGluZyAydGguLEN1aWhhaSBJbmR1c3RyaWFsIEFyZWEsCi0JCQkJSHVhaWRlLCBGdXlvbmcgVG93bgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi0wMC0xNC00MiAgIChoZXgpCQlBVFRPIENPUlBPUkFUSU9OCi0wMDE0NDIgICAgIChiYXNlIDE2KQkJQVRUTyBDT1JQT1JBVElPTgotCQkJCTEtMjUtMjMgSG9uZ28sCi0JCQkJQnVua3lvLWt1LAotCQkJCVRva3lvIDExMy04NDI1Ci0JCQkJSkFQQU4KLQotMDAtMTQtNDMgICAoaGV4KQkJQ29uc3VsdHJvbmljcyBFdXJvcGUgTHRkCi0wMDE0NDMgICAgIChiYXNlIDE2KQkJQ29uc3VsdHJvbmljcyBFdXJvcGUgTHRkCi0JCQkJRWxlY3Ryb24gV2F5Ci0JCQkJQ2hhbmRsZXJzIEZvcmQgSGFudHMgU081MyA0U0UKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNC00NCAgIChoZXgpCQlHcnVuZGZvcyBFbGVjdHJvbmljcwotMDAxNDQ0ICAgICAoYmFzZSAxNikJCUdydW5kZm9zIEVsZWN0cm9uaWNzCi0JCQkJQmlya2V2YWVuZ2V0IDItMTAKLQkJCQlCamVycmluZ2JybyAgREs4ODUwCi0JCQkJREVOTUFSSwotCi0wMC0xNC00NSAgIChoZXgpCQlUZWxlZm9uLUdyYWRuamEgZC5vLm8uCi0wMDE0NDUgICAgIChiYXNlIDE2KQkJVGVsZWZvbi1HcmFkbmphIGQuby5vLgotCQkJCVBsZXNpdmlja2EgMwotCQkJCVN2ZXRhIE5lZGVsamEgWnVwYW5pamEgWmFncmViYWNrYSAxMDQzMQotCQkJCUNST0FUSUEKLQotMDAtMTQtNDYgICAoaGV4KQkJU3VwZXJWaXNpb24gU29sdXRpb25zIExMQwotMDAxNDQ2ICAgICAoYmFzZSAxNikJCVN1cGVyVmlzaW9uIFNvbHV0aW9ucyBMTEMKLQkJCQk3NjIgSW5kdXN0cmlhbCBEci4KLQkJCQlFbG1odXJzdCBJTCA2MDEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNDcgICAoaGV4KQkJQk9BWiBJbmMuCi0wMDE0NDcgICAgIChiYXNlIDE2KQkJQk9BWiBJbmMuCi0JCQkJMjgyIFB1a29rLXJpIFNvbmdTYW4tbXlvbiBEYW5nemluLWd1biBDaHVuZ2NoZW9uZ25hbS1kbywgIDM0My04MzQKLQkJCQkjMzAxLCAxNDI5LTcgU2VvQ2hvLWRvbmcKLQkJCQlTZW91bCBTZW9DaG8tZ3UgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC00OCAgIChoZXgpCQlJbnZlbnRlYyBNdWx0aW1lZGlhICYgVGVsZWNvbSBDb3Jwb3JhdGlvbgotMDAxNDQ4ICAgICAoYmFzZSAxNikJCUludmVudGVjIE11bHRpbWVkaWEgJiBUZWxlY29tIENvcnBvcmF0aW9uCi0JCQkJNUYsTk8uMzk2LFNlYy4xIE5laS1IdSBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTQ5ICAgKGhleCkJCVNpY2h1YW4gQ2hhbmdob25nIEVsZWN0cmljIEx0ZC4KLTAwMTQ0OSAgICAgKGJhc2UgMTYpCQlTaWNodWFuIENoYW5naG9uZyBFbGVjdHJpYyBMdGQuCi0JCQkJTm8uMzUsRWFzdCBNaWFuWGluIFJvYWQKLQkJCQlNaWFuWWFuZyBTaUNodWFuIFBSQyA2MjEwMDAKLQkJCQlDSElOQQotCi0wMC0xNC00QSAgIChoZXgpCQlUYWl3YW4gVGhpY2stRmlsbSBJbmQuIENvcnAuCi0wMDE0NEEgICAgIChiYXNlIDE2KQkJVGFpd2FuIFRoaWNrLUZpbG0gSW5kLiBDb3JwLgotCQkJCU5PLjEyNixXdXUgR29uZyAybmQgUkQsCi0JCQkJV3V1IEd1dSBJbmR1c3RyaWFsIFpvbmUKLQkJCQlUYWlwZWkgSHNpZW4gIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtNEIgICAoaGV4KQkJSGlmbiwgSW5jLgotMDAxNDRCICAgICAoYmFzZSAxNikJCUhpZm4sIEluYy4KLQkJCQk3NTAgVW5pdmVyc2l0eSBBdmUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTRDICAgKGhleCkJCUdlbmVyYWwgTWV0ZXJzIENvcnAuCi0wMDE0NEMgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBNZXRlcnMgQ29ycC4KLQkJCQkxOTM1IERvbWluaW9uIFdheQotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ29sb3JhZG8gODA5MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTREICAgKGhleCkJCUludGVsbGlnZW50IFN5c3RlbXMKLTAwMTQ0RCAgICAgKGJhc2UgMTYpCQlJbnRlbGxpZ2VudCBTeXN0ZW1zCi0JCQkJMTExMDEgSm9obnMgSG9wa2lucyBSb2FkCi0JCQkJTGF1cmVsIE1EIDIwNzIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC00RSAgIChoZXgpCQlTUklTQQotMDAxNDRFICAgICAoYmFzZSAxNikJCVNSSVNBCi0JCQkJMzYvMSwgTmFraGltb3Zza2l5IHByLXQKLQkJCQlNb3Njb3cgMTE3MjE4Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE0LTRGICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbgotMDAxNDRGICAgICAoYmFzZSAxNikJCU9yYWNsZSBDb3Jwb3JhdGlvbgotCQkJCTE3IE5ldHdvcmsgQ2lyY2xlCi0JCQkJQmxkZy4gMTcsIFVNUEsxNy0xMzEKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC01MCAgIChoZXgpCQlIZWltIFN5c3RlbXMgR21iSAotMDAxNDUwICAgICAoYmFzZSAxNikJCUhlaW0gU3lzdGVtcyBHbWJICi0JCQkJRnJpZWRyaWNoIEViZXJ0IFN0cmFzc2UKLQkJCQlUZWNobm9sb2dpZVBhcmsKLQkJCQlCZXJnaXNjaCBHbGFkYmFjaCBOUlcgNTE0MjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTUxICAgKGhleCkJCUFwcGxlIENvbXB1dGVyIEluYy4KLTAwMTQ1MSAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlciBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJTVM6MzVHUE8KLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTUyICAgKGhleCkJCUNBTENVTEVYLElOQy4KLTAwMTQ1MiAgICAgKGJhc2UgMTYpCQlDQUxDVUxFWCxJTkMuCi0JCQkJMTMyIFcuIExBUyBDUlVDRVMgQVZFLgotCQkJCUxBUyBDUlVDRVMgTkVXIE1FWElDTyA4ODAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNTMgICAoaGV4KQkJQURWQU5URUNIIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0wMDE0NTMgICAgIChiYXNlIDE2KQkJQURWQU5URUNIIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0JCQkJIzEyMDIgQUNFIFRFQ0hOTyBUT1dFUiwgNjg0LTEKLQkJCQlEZXVuZ2Nob24tM0RvbmcsIEthbmdzZW8tS3UKLQkJCQlTZW91bCAxNTctNzIxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LTU0ICAgKGhleCkJCVN5bXdhdmUKLTAwMTQ1NCAgICAgKGJhc2UgMTYpCQlTeW13YXZlCi0JCQkJMTAyNTEgVmlzdGEgU29ycmVudG8gUGFya3dheQotCQkJCVN1aXRlIDEwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNTUgICAoaGV4KQkJQ29kZXIgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLTAwMTQ1NSAgICAgKGJhc2UgMTYpCQlDb2RlciBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgotCQkJCVRha2VkYSBCbGRnLCAxLTMwLTYgU2hpcmFzYWdpLAotCQkJCU5ha2Fuby1rdSBUb2t5byAxNjUtMDAzNQotCQkJCUpBUEFOCi0KLTAwLTE0LTU2ICAgKGhleCkJCUVkZ2UgUHJvZHVjdHMKLTAwMTQ1NiAgICAgKGJhc2UgMTYpCQlFZGdlIFByb2R1Y3RzCi0JCQkJMTA4MCBTb3V0aCBEZXBvdCBEcml2ZQotCQkJCU9nZGVuIFV0YWggODQ0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTU3ICAgKGhleCkJCVQtVklQUyBBUwotMDAxNDU3ICAgICAoYmFzZSAxNikJCVQtVklQUyBBUwotCQkJCU9zdGVuc2pvdmVpZW4gMTgKLQkJCQlPc2xvIE5PLTA2NjEKLQkJCQlOT1JXQVkKLQotMDAtMTQtNTggICAoaGV4KQkJSFMgQXV0b21hdGljIEFwUwotMDAxNDU4ICAgICAoYmFzZSAxNikJCUhTIEF1dG9tYXRpYyBBcFMKLQkJCQlCamVycmluZ2Jyb3ZlaiA3MAotCQkJCVJvZG92cmUgIDI2MTAKLQkJCQlERU5NQVJLCi0KLTAwLTE0LTU5ICAgKGhleCkJCU1vcmFtIENvLiwgTHRkLgotMDAxNDU5ICAgICAoYmFzZSAxNikJCU1vcmFtIENvLiwgTHRkLgotCQkJCTNGLCBNYW53b2wgQmxkZy4sIDEwMjItNAotCQkJCVlvdW5ndG9uZy1kb25nLCBZb3VuZ3RvbmctZ3UKLQkJCQlTdXdvbi1zaGkgR3lvdW5nZ2ktZG8gNDQzLTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC01QSAgIChoZXgpCQlOZXJhdGVjIEFHCi0wMDE0NUEgICAgIChiYXNlIDE2KQkJTmVyYXRlYyBBRwotCQkJCVJvc3N3aWVzc3RyYXNzZSAyOQotCQkJCUNILTg2MDggQnViaWtvbiBaSAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE0LTVCICAgKGhleCkJCVNlZWtlck5ldCBJbmMuCi0wMDE0NUIgICAgIChiYXNlIDE2KQkJU2Vla2VyTmV0IEluYy4KLQkJCQkzMDAgU2F0ZWxsaXRlIEJsdmQuCi0JCQkJU3V3YW5lZSBHZW9yZ2lhIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC01QyAgIChoZXgpCQlJbnRyb25pY3MgQi5WLgotMDAxNDVDICAgICAoYmFzZSAxNikJCUludHJvbmljcyBCLlYuCi0JCQkJSGVybWVzd2VnIDIyCi0JCQkJQmFybmV2ZWxkIEdlbGRlcmxhbmQgMzc3MSBORAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE0LTVEICAgKGhleCkJCVdKIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDE0NUQgICAgIChiYXNlIDE2KQkJV0ogQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk0MDEgUml2ZXIgT2FrcyBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTVFICAgKGhleCkJCUlCTSBDb3JwCi0wMDE0NUUgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTVGICAgKGhleCkJCUFESVRFQyBDTy4gTFRECi0wMDE0NUYgICAgIChiYXNlIDE2KQkJQURJVEVDIENPLiBMVEQKLQkJCQk0RiBIeW93b24gQi9ELCA5OS01LAotCQkJCUthcmFrLWRvbmcsU29uZ3BhLWd1Ci0JCQkJU2VvdWwgMTM4LTgwNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC02MCAgIChoZXgpCQlLeW9jZXJhIFdpcmVsZXNzIENvcnAuCi0wMDE0NjAgICAgIChiYXNlIDE2KQkJS3lvY2VyYSBXaXJlbGVzcyBDb3JwLgotCQkJCTEwMzAwIENhbXB1cyBQb2ludCBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNjEgICAoaGV4KQkJQ09ST05BIENPUlBPUkFUSU9OCi0wMDE0NjEgICAgIChiYXNlIDE2KQkJQ09ST05BIENPUlBPUkFUSU9OCi0JCQkJNy03LCBISUdBU0hJLVNISU5CTwotCQkJCVNBTkpPLVNISSBOSUlHQVRBIDk1NS04NTEwCi0JCQkJSkFQQU4KLQotMDAtMTQtNjIgICAoaGV4KQkJRGlnaXdlbGwgVGVjaG5vbG9neSwgaW5jCi0wMDE0NjIgICAgIChiYXNlIDE2KQkJRGlnaXdlbGwgVGVjaG5vbG9neSwgaW5jCi0JCQkJNEYsIE5vLjEsIFByb3NwZXJpdHkgMXN0IFJvYWQKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyayAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTYzICAgKGhleCkJCUlEQ1MgTi5WLgotMDAxNDYzICAgICAoYmFzZSAxNikJCUlEQ1MgTi5WLgotCQkJCUhlbGxlYmVlbWRlbiA5Ci0JCQkJSGFzc2VsdCBMaW1idXJnIDM1MDAKLQkJCQlCRUxHSVVNCi0KLTAwLTE0LTY0ICAgKGhleCkJCUNyeXB0b3NvZnQKLTAwMTQ2NCAgICAgKGJhc2UgMTYpCQlDcnlwdG9zb2Z0Ci0JCQkJTGVybW9udG92YSBzdHIsIDMKLQkJCQlQZW56YSByZWdpb24gNDQwMDI2Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE0LTY1ICAgKGhleCkJCU5vdm8gTm9yZGlzayBBL1MKLTAwMTQ2NSAgICAgKGJhc2UgMTYpCQlOb3ZvIE5vcmRpc2sgQS9TCi0JCQkJTm92byBBbGxlCi0JCQkJQmFnc3ZhZXJkICAyODgwCi0JCQkJREVOTUFSSwotCi0wMC0xNC02NiAgIChoZXgpCQlLbGVpbmhlbnogRWxla3Ryb25payBHbWJICi0wMDE0NjYgICAgIChiYXNlIDE2KQkJS2xlaW5oZW56IEVsZWt0cm9uaWsgR21iSAotCQkJCUdyZWluZXJiZXJnIDE0Ci0JCQkJTXVuaWNoICA4MTM3MQotCQkJCUdFUk1BTlkKLQotMDAtMTQtNjcgICAoaGV4KQkJQXJyb3dTcGFuIEluYy4KLTAwMTQ2NyAgICAgKGJhc2UgMTYpCQlBcnJvd1NwYW4gSW5jLgotCQkJCTQ2OTkgT2xkIElyb25zaWRlcyBEci4gU3VpdGUgMTAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTY4ICAgKGhleCkJCUNlbFBsYW4gSW50ZXJuYXRpb25hbCwgSW5jLgotMDAxNDY4ICAgICAoYmFzZSAxNikJCUNlbFBsYW4gSW50ZXJuYXRpb25hbCwgSW5jLgotCQkJCTE4MzUgQWxleGFuZGVyIEJlbGwgRHJpdmUKLQkJCQlzdWl0ZSAyMDAKLQkJCQlSZXN0b24gVkEgMjAxOTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTY5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTQ2OSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTZBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTQ2QSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTZCICAgKGhleCkJCUFuYWdyYW4sIEluYy4KLTAwMTQ2QiAgICAgKGJhc2UgMTYpCQlBbmFncmFuLCBJbmMuCi0JCQkJNTgwIE5vcnRoIFBhc3RvcmlhIEF2Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC02QyAgIChoZXgpCQlOZXRnZWFyIEluYy4KLTAwMTQ2QyAgICAgKGJhc2UgMTYpCQlOZXRnZWFyIEluYy4KLQkJCQk0NTAwIEdyZWF0IEFtZXJpY2EgUGFya3dheQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC02RCAgIChoZXgpCQlSRiBUZWNobm9sb2dpZXMKLTAwMTQ2RCAgICAgKGJhc2UgMTYpCQlSRiBUZWNobm9sb2dpZXMKLQkJCQkzMTI1IE4gMTI2dGggU3RyZWV0Ci0JCQkJQnJvb2tmaWVsZCBXSSA1MzAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNkUgICAoaGV4KQkJSC4gU3RvbGwgR21iSCAmIENvLiBLRwotMDAxNDZFICAgICAoYmFzZSAxNikJCUguIFN0b2xsIEdtYkggJiBDby4gS0cKLQkJCQlTdG9sbHdlZwotCQkJCVJldXRsaW5nZW4gRGV1dHNjaGxhbmQgNzI3NjAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTZGICAgKGhleCkJCUtvaGxlciBDbwotMDAxNDZGICAgICAoYmFzZSAxNikJCUtvaGxlciBDbwotCQkJCTQ0NCBIaWdobGFuZCBEcml2ZQotCQkJCU1TIDA3MgotCQkJCUtvaGxlciBXSSA1MzA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtNzAgICAoaGV4KQkJUHJva29tIFNvZnR3YXJlIFNBCi0wMDE0NzAgICAgIChiYXNlIDE2KQkJUHJva29tIFNvZnR3YXJlIFNBCi0JCQkJQWwuIEplcm96b2xpbXNraWUgNjUvNzkKLQkJCQlXYXJzemF3YSBNYXpvd2llY2tpZSAwMC02OTcKLQkJCQlQT0xBTkQKLQotMDAtMTQtNzEgICAoaGV4KQkJRWFzdGVybiBBc2lhIFRlY2hub2xvZ3kgTGltaXRlZAotMDAxNDcxICAgICAoYmFzZSAxNikJCUVhc3Rlcm4gQXNpYSBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQkxM0YsIE5vLiA5OSwgU2VjLiAxLCBOYW5rYW4gUm9hZCwKLQkJCQlMdWNodSwgVGFveXVhbiAzMzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTcyICAgKGhleCkJCUNoaW5hIEJyb2FkYmFuZCBXaXJlbGVzcyBJUCBTdGFuZGFyZCBHcm91cAotMDAxNDcyICAgICAoYmFzZSAxNikJCUNoaW5hIEJyb2FkYmFuZCBXaXJlbGVzcyBJUCBTdGFuZGFyZCBHcm91cAotCQkJCVAuTy5CT1ggODgsV2VzdCBIaWdoLXRlY2gKLQkJCQlEZXZlbG9wbWVudCBDZW50ZXIsCi0JCQkJWGknYW4gU2hhYW4gWGkgNzEwMDc1Ci0JCQkJQ0hJTkEKLQotMDAtMTQtNzMgICAoaGV4KQkJQm9va2hhbSBJbmMKLTAwMTQ3MyAgICAgKGJhc2UgMTYpCQlCb29raGFtIEluYwotCQkJCTEwIEJyZXdlciBIdW50IFdheQotCQkJCUthbmF0YSBPTiBLMksgMkI1Ci0JCQkJQ0FOQURBCi0KLTAwLTE0LTc0ICAgKGhleCkJCUs0MCBFbGVjdHJvbmljcwotMDAxNDc0ICAgICAoYmFzZSAxNikJCUs0MCBFbGVjdHJvbmljcwotCQkJCTYwMCBUb2xsZ2F0ZSBSZC4gVW5pdCBBCi0JCQkJRWxnaW4gSUwgNjAxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTc1ICAgKGhleCkJCVdpbGluZSBOZXR3b3JrcywgSW5jLgotMDAxNDc1ICAgICAoYmFzZSAxNikJCVdpbGluZSBOZXR3b3JrcywgSW5jLgotCQkJCTc0MSBBbGV4YW5kZXIgUmQKLQkJCQlQcmluY2V0b24gTkogMDg1NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTc2ICAgKGhleCkJCU11bHRpQ29tIEluZHVzdHJpZXMgTGltaXRlZAotMDAxNDc2ICAgICAoYmFzZSAxNikJCU11bHRpQ29tIEluZHVzdHJpZXMgTGltaXRlZAotCQkJCVJvb20gMTIwNi03LCBNYW5oYXR0YW4gQ2VudGVyLAotCQkJCTggS3dhaSBDaGVvbmcgUmQuCi0JCQkJS3dhaSBDaHVuZywgTi5ULiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE0LTc3ICAgKGhleCkJCU5lcnRlYyAgSW5jLgotMDAxNDc3ICAgICAoYmFzZSAxNikJCU5lcnRlYyAgSW5jLgotCQkJCTk1MCBDb3dpZSBzdC4KLQkJCQlHcmFuYnkgUXVlYmVjIEoySiAxUDIKLQkJCQlDQU5BREEKLQotMDAtMTQtNzggICAoaGV4KQkJU2hlblpoZW4gVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDE0NzggICAgIChiYXNlIDE2KQkJU2hlblpoZW4gVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJMy9GLEJsZGcuUjEtQixIaS10ZWNoIEluZHVzdHJpYWwgUGFyaywKLQkJCQlTaGVubmFuIFJkLgotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xNC03OSAgIChoZXgpCQlORUMgTWFnbnVzIENvbW11bmljYXRpb25zLEx0ZC4KLTAwMTQ3OSAgICAgKGJhc2UgMTYpCQlORUMgTWFnbnVzIENvbW11bmljYXRpb25zLEx0ZC4KLQkJCQk0LTI4Ci0JCQkJTWl0YSAxLUNob21lCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwOC0wMDczCi0JCQkJSkFQQU4KLQotMDAtMTQtN0EgICAoaGV4KQkJRXVidXMgR21iSAotMDAxNDdBICAgICAoYmFzZSAxNikJCUV1YnVzIEdtYkgKLQkJCQlHb2xsaWVyc3RyLiA3MCAgQXVmZ2FuZyBFICA0LlN0b2NrCi0JCQkJTXVuaWNoIEJhdmFyaWEgODAzMzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LTdCICAgKGhleCkJCUl0ZXJpcywgSW5jLgotMDAxNDdCICAgICAoYmFzZSAxNikJCUl0ZXJpcywgSW5jLgotCQkJCTE1MTUgUy4gTWFuY2hlc3RlciBBdmUuCi0JCQkJQW5haGVpbSBDQSA5MjgwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtN0MgICAoaGV4KQkJM0NvbSBMdGQKLTAwMTQ3QyAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cyBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTQtN0QgICAoaGV4KQkJQWVvbiBEaWdpdGFsIEludGVybmF0aW9uYWwKLTAwMTQ3RCAgICAgKGJhc2UgMTYpCQlBZW9uIERpZ2l0YWwgSW50ZXJuYXRpb25hbAotCQkJCTMxLTYsIFRoZSBCdW5kIENlbnRlcgotCQkJCTIyMiBZYW4gQW4gRS4gUmQKLQkJCQlTaGFuZ2hhaSBTSCAyMDAwMDIKLQkJCQlDSElOQQotCi0wMC0xNC03RSAgIChoZXgpCQlJbm5lcldpcmVsZXNzCi0wMDE0N0UgICAgIChiYXNlIDE2KQkJSW5uZXJXaXJlbGVzcwotCQkJCTExNTUgS2FzIERyaXZlLCBTdWl0ZSAyMDAKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC03RiAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDAxNDdGICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NwotCQkJCUVkZWdlbSBBbnR3ZXJwIEItMjY1MAotCQkJCUJFTEdJVU0KLQotMDAtMTQtODAgICAoaGV4KQkJSGl0YWNoaS1MRyBEYXRhIFN0b3JhZ2UgS29yZWEsIEluYwotMDAxNDgwICAgICAoYmFzZSAxNikJCUhpdGFjaGktTEcgRGF0YSBTdG9yYWdlIEtvcmVhLCBJbmMKLQkJCQkxOS0xLENoZW9uZ2hvLXJpCi0JCQkJSmlud3V5LU15dW4KLQkJCQlQeXVuZ3RhaWsgS3l1bmdnaS1EbyA0NTEtNzEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LTgxICAgKGhleCkJCU11bHRpbGluayBJbmMKLTAwMTQ4MSAgICAgKGJhc2UgMTYpCQlNdWx0aWxpbmsgSW5jCi0JCQkJNTgwIFRlcm5lcyBBdmUKLQkJCQlFbHlyaWEgT0ggNDQwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTgyICAgKGhleCkJCUdvQmFja1RWLCBJbmMKLTAwMTQ4MiAgICAgKGJhc2UgMTYpCQlHb0JhY2tUViwgSW5jCi0JCQkJOTM3IEhhbWlsdG9uIEF2ZW51ZQotCQkJCU1lbmxvIFBhcmsgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTgzICAgKGhleCkJCWVYUyBJbmMuCi0wMDE0ODMgICAgIChiYXNlIDE2KQkJZVhTIEluYy4KLQkJCQkxOTAwIEFsYW1lZGEgZGUgbGFzIFB1bGdhcwotCQkJCVN1aXRlIDEwMwotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtODQgICAoaGV4KQkJQ2VybWF0ZSBUZWNobm9sb2dpZXMgSW5jLgotMDAxNDg0ICAgICAoYmFzZSAxNikJCUNlcm1hdGUgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk3Ri0xLCBObyAxNjggTGllbi1DaGVuIFJkLgotCQkJCUNodW5nLUhvIENpdHkgVGFpcGVpIENvdW50eSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTg1ICAgKGhleCkJCUdpZ2EtQnl0ZQotMDAxNDg1ICAgICAoYmFzZSAxNikJCUdpZ2EtQnl0ZQotCQkJCU5vLjIxNSxOYW4tUGluZyBSb2FkLAotCQkJCVBpbi1KZW4gVGFveXVhbiAzMjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LTg2ICAgKGhleCkJCUVjaG8gRGlnaXRhbCBBdWRpbyBDb3Jwb3JhdGlvbgotMDAxNDg2ICAgICAoYmFzZSAxNikJCUVjaG8gRGlnaXRhbCBBdWRpbyBDb3Jwb3JhdGlvbgotCQkJCTY0NTAgVmlhIFJlYWwgIzEKLQkJCQlDYXJwaW50ZXJpYSBDQSA5MzAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtODcgICAoaGV4KQkJQW1lcmljYW4gVGVjaG5vbG9neSBJbnRlZ3JhdG9ycwotMDAxNDg3ICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIFRlY2hub2xvZ3kgSW50ZWdyYXRvcnMKLQkJCQkxMzU4IFJvc2FsaWEgQXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTg4ICAgKGhleCkJCUFrb3JyaQotMDAxNDg4ICAgICAoYmFzZSAxNikJCUFrb3JyaQotCQkJCTMwNSBGb3N0ZXIgU3RyZWV0Ci0JCQkJTGl0dGxldG9uIE1BIDAxNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC04OSAgIChoZXgpCQlCMTU0MDIxMDAgLSBKQU5ERUksIFMuTC4KLTAwMTQ4OSAgICAgKGJhc2UgMTYpCQlCMTU0MDIxMDAgLSBKQU5ERUksIFMuTC4KLQkJCQlQT0wuIElORC4gUE9DT01BQ08sIEUtMjgKLQkJCQlMQSBDT1JVw4PigJhBICAxNTE5MAotCQkJCVNQQUlOCi0KLTAwLTE0LThBICAgKGhleCkJCUVsaW4gRWJnIFRyYWN0aW9uIEdtYmgKLTAwMTQ4QSAgICAgKGJhc2UgMTYpCQlFbGluIEViZyBUcmFjdGlvbiBHbWJoCi0JCQkJQ3VtYmVybGFuZHN0cmFzc2UgMzIKLQkJCQlWaWVubmEgIDExNDAKLQkJCQlBVVNUUklBCi0KLTAwLTE0LThCICAgKGhleCkJCUdsb2JvIEVsZWN0cm9uaWMgR21iSCAmIENvLiBLRwotMDAxNDhCICAgICAoYmFzZSAxNikJCUdsb2JvIEVsZWN0cm9uaWMgR21iSCAmIENvLiBLRwotCQkJCUluZHVzdHJpZXN0cmFzc2UgNGEKLQkJCQlOaWVkZXJsYXVlciBCYXllcm4gOTc2MTgKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LThDICAgKGhleCkJCUZvcnRyZXNzIFRlY2hub2xvZ2llcwotMDAxNDhDICAgICAoYmFzZSAxNikJCUZvcnRyZXNzIFRlY2hub2xvZ2llcwotCQkJCTIgVGVjaG5vbG9neSBQYXJrIERyaXZlCi0JCQkJV2VzdGZvcmQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LThEICAgKGhleCkJCUN1YmljIERlZmVuc2UgU2ltdWxhdGlvbiBTeXN0ZW1zCi0wMDE0OEQgICAgIChiYXNlIDE2KQkJQ3ViaWMgRGVmZW5zZSBTaW11bGF0aW9uIFN5c3RlbXMKLQkJCQkyMDAxIFcuIE9ha3JpZGdlIFJvYWQKLQkJCQlPcmxhbmRvIEZMIDMyODA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC04RSAgIChoZXgpCQlUZWxlIFBvd2VyIEluYy4KLTAwMTQ4RSAgICAgKGJhc2UgMTYpCQlUZWxlIFBvd2VyIEluYy4KLQkJCQkxLTQ2LTE1I0IxRgotCQkJCUFzYWhpZ2Fva2EKLQkJCQlOZXJpbWEta3UgVG9reW8gMTc2LTAwMDUKLQkJCQlKQVBBTgotCi0wMC0xNC04RiAgIChoZXgpCQlQcm90cm9uaWMgKEZhciBFYXN0KSBMdGQuCi0wMDE0OEYgICAgIChiYXNlIDE2KQkJUHJvdHJvbmljIChGYXIgRWFzdCkgTHRkLgotCQkJCVJtLiAyNTA0LCBOYW55YW5nIFBsYXphLAotCQkJCTU3IEh1bmcgVG8gUm9hZAotCQkJCUt3dW4gVG9uZyBLb3dsb29uIDg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0xNC05MCAgIChoZXgpCQlBU1AgQ29ycG9yYXRpb24KLTAwMTQ5MCAgICAgKGJhc2UgMTYpCQlBU1AgQ29ycG9yYXRpb24KLQkJCQk0NjUgSW5kdXN0cmlhbCBQYXJrIFJvYWQKLQkJCQlIYXJ0d2VsbCBHQSAzMDY0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtOTEgICAoaGV4KQkJRGFuaWVscyBFbGVjdHJvbmljcyBMdGQuCi0wMDE0OTEgICAgIChiYXNlIDE2KQkJRGFuaWVscyBFbGVjdHJvbmljcyBMdGQuCi0JCQkJNDMgRXJpZSBTdAotCQkJCVZpY3RvcmlhIEJDIFY4ViAxUDgKLQkJCQlDQU5BREEKLQotMDAtMTQtOTIgICAoaGV4KQkJTGl0ZW9uLCBNb2JpbGUgTWVkaWEgU29sdXRpb24gU0JVCi0wMDE0OTIgICAgIChiYXNlIDE2KQkJTGl0ZW9uLCBNb2JpbGUgTWVkaWEgU29sdXRpb24gU0JVCi0JCQkJNEYsIDMsIExhbmUgNzY4LCBTZWMuIDQsCi0JCQkJUGF0ZWggUm9hZCwKLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtOTMgICAoaGV4KQkJU3lzdGltYXggU29sdXRpb25zCi0wMDE0OTMgICAgIChiYXNlIDE2KQkJU3lzdGltYXggU29sdXRpb25zCi0JCQkJMTMwMCBFIExvb2tvdXQgRHJpdmUKLQkJCQlSaWNoYXJkc29uIFRleGFzIDc1MDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC05NCAgIChoZXgpCQlFU1UgQUcKLTAwMTQ5NCAgICAgKGJhc2UgMTYpCQlFU1UgQUcKLQkJCQlMdWthc3N0cmFzc2UgMjkKLQkJCQlTdC4gR2FsbGVuICA5MDA4Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTQtOTUgICAoaGV4KQkJMldpcmUsIEluYy4KLTAwMTQ5NSAgICAgKGJhc2UgMTYpCQkyV2lyZSwgSW5jLgotCQkJCTE3MDQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTk2ICAgKGhleCkJCVBob25pYyBDb3JwLgotMDAxNDk2ICAgICAoYmFzZSAxNikJCVBob25pYyBDb3JwLgotCQkJCTEydGhGbCwgNTkgVHVuZyBIc2luZyBSZAotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC05NyAgIChoZXgpCQlaSElZVUFOIEVsZXRyb25pY3MgY28uLGx0ZC4KLTAwMTQ5NyAgICAgKGJhc2UgMTYpCQlaSElZVUFOIEVsZXRyb25pY3MgY28uLGx0ZC4KLQkJCQkyIEZsb29yLCBOTy4zIEJ1aWxkaW5nLCBIdWFuZ3pob3UgSW5kdXN0cmlhbCBFc3RhdGUsIENoZWJlaSBSb2FkLAotCQkJCVRpYW5oZQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYwCi0JCQkJQ0hJTkEKLQotMDAtMTQtOTggICAoaGV4KQkJVmlraW5nIERlc2lnbiBUZWNobm9sb2d5Ci0wMDE0OTggICAgIChiYXNlIDE2KQkJVmlraW5nIERlc2lnbiBUZWNobm9sb2d5Ci0JCQkJMkYsIE5vLjIsIExhbmUgNDIsCi0JCQkJSG91LUdhbmcgU3RyZWV0LCBTaGloLUxpbiBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTExCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC05OSAgIChoZXgpCQlIZWxpY29tbSBJbmMKLTAwMTQ5OSAgICAgKGJhc2UgMTYpCQlIZWxpY29tbSBJbmMKLQkJCQkxOTQ3IENhbWlubyBWaWRhIFJvYmxlCi0JCQkJU3VpdGUgMTA5Ci0JCQkJQ2FybHNiYWQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LTlBICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxNDlBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTYwMCBOIFVzIEh3eSA0NQotCQkJCVJtIE1XMTEzCi0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC05QiAgIChoZXgpCQlOb2tvdGEgQ29tbXVuaWNhdGlvbnMsIExMQwotMDAxNDlCICAgICAoYmFzZSAxNikJCU5va290YSBDb21tdW5pY2F0aW9ucywgTExDCi0JCQkJMjAwIEdhbGxlcmlhIFBhcmt3YXkKLQkJCQlTdWl0ZSAxODIwCi0JCQkJQXRsYW50YSBHZW9yZ2lhIDMwMzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC05QyAgIChoZXgpCQlIRiBDb21wYW55Ci0wMDE0OUMgICAgIChiYXNlIDE2KQkJSEYgQ29tcGFueQotCQkJCU5vZGUgUGFyayBUb3VyYWluZQotCQkJCUJQMSBUYXV4aWdueSAgMzczMTAKLQkJCQlGUkFOQ0UKLQotMDAtMTQtOUQgICAoaGV4KQkJU291bmQgSUQgSW5jLgotMDAxNDlEICAgICAoYmFzZSAxNikJCVNvdW5kIElEIEluYy4KLQkJCQkzNDMwIFdlc3QgQmF5c2hvcmUgUm9hZAotCQkJCVBhbG8gQWx0byBDYWxpZm9ybmlhIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC05RSAgIChoZXgpCQlVYk9ORSBDby4sIEx0ZAotMDAxNDlFICAgICAoYmFzZSAxNikJCVViT05FIENvLiwgTHRkCi0JCQkJU2hpbnlvdW5nIEIuRC4gNjAyLCBTZW9IeWVvbjItRG9uZwotCQkJCUJ1bmRhbmctR3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtOUYgICAoaGV4KQkJU3lzdGVtIGFuZCBDaGlwcywgSW5jLgotMDAxNDlGICAgICAoYmFzZSAxNikJCVN5c3RlbSBhbmQgQ2hpcHMsIEluYy4KLQkJCQk0RixOby4gMSwgTGFuZSA1MCwgTmFuS2FuZyBSb2FkLCBTZWN0aW9uIDMsCi0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LUEwICAgKGhleCkJCUFjY3NlbnNlLCBJbmMuCi0wMDE0QTAgICAgIChiYXNlIDE2KQkJQWNjc2Vuc2UsIEluYy4KLQkJCQk0NjAgV2FyZCBEcml2ZQotCQkJCVN1aXRlIEUyCi0JCQkJU2FudGEgQmFyYmFyYSBDYWxpZm9ybmlhIDkzMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1BMSAgIChoZXgpCQlTeW5jaHJvbm91cyBDb21tdW5pY2F0aW9uIENvcnAKLTAwMTRBMSAgICAgKGJhc2UgMTYpCQlTeW5jaHJvbm91cyBDb21tdW5pY2F0aW9uIENvcnAKLQkJCQk5IGZsb29yLCBObzE2OCwgUnVlaWd1YW5nIFJvYWQsIE5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LUEyICAgKGhleCkJCUNvcmUgTWljcm8gU3lzdGVtcyBJbmMuCi0wMDE0QTIgICAgIChiYXNlIDE2KQkJQ29yZSBNaWNybyBTeXN0ZW1zIEluYy4KLQkJCQlXYWp1biBCbGRnLiA2RiwgMi0yMi0yLCBLb2lzaGlrYXdhCi0JCQkJQnVua3lvLUt1IFRva3lvIDExMi0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMTQtQTMgICAoaGV4KQkJVml0ZWxlYyBCVgotMDAxNEEzICAgICAoYmFzZSAxNikJCVZpdGVsZWMgQlYKLQkJCQlrYXBpdHRlbHdlZyAxOAotCQkJCVAuTy5Cb3ggNjU0MwotCQkJCUJyZWRhIE5CIE5MIDQ4MjcgSEcKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNC1BNCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAxNEE0ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNUYtMSwgNSBIU0lOLUFOIFJPQUQKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtQTUgICAoaGV4KQkJR2VtdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDE0QTUgICAgIChiYXNlIDE2KQkJR2VtdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDEgSmVuIEFpIFJvYWQKLQkJCQlIc2luY2h1IEluZHVzdHJpYWwgUGFyawotCQkJCUh1a291LCBIc2luY2h1ICAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LUE2ICAgKGhleCkJCVRlcmFuZXRpY3MsIEluYy4KLTAwMTRBNiAgICAgKGJhc2UgMTYpCQlUZXJhbmV0aWNzLCBJbmMuCi0JCQkJMzk2NSBGcmVlZG9tIENpcmNsZQotCQkJCSBTaXh0aCBGbG9vcgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1BNyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxNEE3ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICAxNzkwVgotCQkJCURFTk1BUksKLQotMDAtMTQtQTggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNEE4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQTkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNEE5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQUEgICAoaGV4KQkJQXNobHkgQXVkaW8sIEluYy4KLTAwMTRBQSAgICAgKGJhc2UgMTYpCQlBc2hseSBBdWRpbywgSW5jLgotCQkJCTg0NyBIb2x0IFJvYWQKLQkJCQlXZWJzdGVyIE5ZIDE0NTgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1BQiAgIChoZXgpCQlTZW5oYWkgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxNEFCICAgICAoYmFzZSAxNikJCVNlbmhhaSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJUm0uMTBBLiAyOC9GLlNFR1BsYXphIEh1YXFpYW5nYmVpIFJvYWQKLQkJCQlTaGVuZ3poZW4gR3Vhbmdkb25nIDUxODAzMQotCQkJCUNISU5BCi0KLTAwLTE0LUFDICAgKGhleCkJCUJvdW50aWZ1bCBXaUZpCi0wMDE0QUMgICAgIChiYXNlIDE2KQkJQm91bnRpZnVsIFdpRmkKLQkJCQk3MDcgV2VzdCA3MDAgU291dGgKLQkJCQlXb29kcyBDcm9zcyBVdGFoIDg0MDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1BRCAgIChoZXgpCQlHYXNzbmVyIFdpZWdlLSB1LiBNZcODxbh0ZWNobmlrIEdtYkgKLTAwMTRBRCAgICAgKGJhc2UgMTYpCQlHYXNzbmVyIFdpZWdlLSB1LiBNZcODxbh0ZWNobmlrIEdtYkgKLQkJCQlNw7xuY2huZXIgQnVuZGVzc3RyYcOfZSAxMjMgICAKLQkJCQlTYWx6YnVyZyAgQS01MDIwCi0JCQkJQVVTVFJJQQotCi0wMC0xNC1BRSAgIChoZXgpCQlXaXpsb2dpY3MgQ28uLCBMdGQuCi0wMDE0QUUgICAgIChiYXNlIDE2KQkJV2l6bG9naWNzIENvLiwgTHRkLgotCQkJCVJtIzEzMjEsIFNhbWNoYW5nIFBsYXphLCAxNzMsCi0JCQkJRG93aGEtRG9uZyBNYXBvLUd1LAotCQkJCVNlb3VsICAxMjEtNzQ1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUFGICAgKGhleCkJCURhdGFzeW0gSW5jLgotMDAxNEFGICAgICAoYmFzZSAxNikJCURhdGFzeW0gSW5jLgotCQkJCTQzNSBFbGdpbiBTdHJlZXQKLQkJCQlCcmFudGZvcmQgT250YXJpbyBOM1M3UDUKLQkJCQlDQU5BREEKLQotMDAtMTQtQjAgICAoaGV4KQkJTmFlaWwgQ29tbXVuaXR5Ci0wMDE0QjAgICAgIChiYXNlIDE2KQkJTmFlaWwgQ29tbXVuaXR5Ci0JCQkJIzUwNiBBY2VUd2luIFRvd2VyIDEsIEd1cm8tRG9uZwotCQkJCVNlb3VsIEd1cm8tR3UgMTUyNzc5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUIxICAgKGhleCkJCUF2aXRlYyBBQgotMDAxNEIxICAgICAoYmFzZSAxNikJCUF2aXRlYyBBQgotCQkJCUJveCA3MTM5Ci0JCQkJU1VOREJZQkVSRyAgU0UtMTc0IDA3Ci0JCQkJU1dFREVOCi0KLTAwLTE0LUIyICAgKGhleCkJCW1DdWJlbG9naWNzIENvcnBvcmF0aW9uCi0wMDE0QjIgICAgIChiYXNlIDE2KQkJbUN1YmVsb2dpY3MgQ29ycG9yYXRpb24KLQkJCQk0RiwgVW5pYm9va3MgQi9ELCA1MTQtMSwgRG9nb2stRG9uZywgS2FuZ05hbQotCQkJCVNlb3VsICAxMzUtMjcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUIzICAgKGhleCkJCUNvcmVTdGFyIEludGVybmF0aW9uYWwgQ29ycAotMDAxNEIzICAgICAoYmFzZSAxNikJCUNvcmVTdGFyIEludGVybmF0aW9uYWwgQ29ycAotCQkJCTEwNDQgU2FuZHkgSGlsbCBSZAotCQkJCUlyd2luIFBBIDE1NjQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1CNCAgIChoZXgpCQlHZW5lcmFsIER5bmFtaWNzIFVuaXRlZCBLaW5nZG9tIEx0ZAotMDAxNEI0ICAgICAoYmFzZSAxNikJCUdlbmVyYWwgRHluYW1pY3MgVW5pdGVkIEtpbmdkb20gTHRkCi0JCQkJQ2FzdGxlaGFtIFJvYWQKLQkJCQlTdCBMZW9uYXJkcyBvbiBTZWEgRWFzdCBTdXNzZXggVE4zOCA5TkoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNC1CNSAgIChoZXgpCQlQSFlTSU9NRVRSSVgsSU5DCi0wMDE0QjUgICAgIChiYXNlIDE2KQkJUEhZU0lPTUVUUklYLElOQwotCQkJCTEwMSBCSUxMRVJJQ0EgQVZFICM1Ci0JCQkJTi4gQklMTEVSSUNBIE1BIDAxODYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1CNiAgIChoZXgpCQlFbnN3ZXIgVGVjaG5vbG9neSBJbmMuCi0wMDE0QjYgICAgIChiYXNlIDE2KQkJRW5zd2VyIFRlY2hub2xvZ3kgSW5jLgotCQkJCTFGIE5vLjcwIFNlYy4yIENodW5nIFNodW4gU3QuCi0JCQkJVGFpcGVpICAxMTYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LUI3ICAgKGhleCkJCUFSIEluZm90ZWsgSW5jLgotMDAxNEI3ICAgICAoYmFzZSAxNikJCUFSIEluZm90ZWsgSW5jLgotCQkJCTlGLCBOby4xODUsIEdhbmdRaWFuIFJvYWQKLQkJCQlOZWlIdSBUZWNobm9sb2d5IFBhcmssCi0JCQkJVGFpcGVpICAxMTQ5NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTQtQjggICAoaGV4KQkJSGlsbC1Sb20KLTAwMTRCOCAgICAgKGJhc2UgMTYpCQlIaWxsLVJvbQotCQkJCTExMjUgRS4gUGVhcmwgU3RyZWV0Ci0JCQkJQmF0ZXN2aWxsZSBJTiA0NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQjkgICAoaGV4KQkJTVNUQVIgU0VNSUNPTkRVQ1RPUgotMDAxNEI5ICAgICAoYmFzZSAxNikJCU1TVEFSIFNFTUlDT05EVUNUT1IKLQkJCQkxMS0xMyBydWUgUmVuw6kgSmFjcXVlcwotCQkJCUlzc3kgbGVzIE1vdWxpbmVhdXggIDkyMTMwCi0JCQkJRlJBTkNFCi0KLTAwLTE0LUJBICAgKGhleCkJCUNhcnZlcnMgU0EgZGUgQ1YKLTAwMTRCQSAgICAgKGJhc2UgMTYpCQlDYXJ2ZXJzIFNBIGRlIENWCi0JCQkJQWx2YXJleiBkZWwgQ2FzdGlsbG8gMTU1MAotCQkJCUNoYXB1bHRlcGVjIENvdW50cnkKLQkJCQlHdWFkYWxhamFyYSBKYWxpc2NvIDQ0NjIwCi0JCQkJTUVYSUNPCi0KLTAwLTE0LUJCICAgKGhleCkJCU9wZW4gSW50ZXJmYWNlIE5vcnRoIEFtZXJpY2EKLTAwMTRCQiAgICAgKGJhc2UgMTYpCQlPcGVuIEludGVyZmFjZSBOb3J0aCBBbWVyaWNhCi0JCQkJNTA2IDJuZCBBdmVudWUsIFN1aXRlIDQyMAotCQkJCVNlYXR0bGUgV0EgOTgxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUJDICAgKGhleCkJCVNZTkVDVElDIFRFTEVDT00gRVhQT1JUUyBQVlQuIExURC4KLTAwMTRCQyAgICAgKGJhc2UgMTYpCQlTWU5FQ1RJQyBURUxFQ09NIEVYUE9SVFMgUFZULiBMVEQuCi0JCQkJMTk2LCAxc3QgTWFpbiwgM3JkIFN0YWdlLCA0dGggQmxvY2sKLQkJCQlCYXNhdmVzaHdhciBOYWdhcgotCQkJCUJBTkdBTE9SRSAgNTYwMDc5Ci0JCQkJSU5ESUEKLQotMDAtMTQtQkQgICAoaGV4KQkJaW5jTkVUV09SS1MsIEluYwotMDAxNEJEICAgICAoYmFzZSAxNikJCWluY05FVFdPUktTLCBJbmMKLQkJCQkxOTggQnJpZ2h0b24gQXZlCi0JCQkJTG9uZyBCcmFuY2ggTkogMDc3NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUJFICAgKGhleCkJCVdpbmsgY29tbXVuaWNhdGlvbiB0ZWNobm9sb2d5IENPLkxURAotMDAxNEJFICAgICAoYmFzZSAxNikJCVdpbmsgY29tbXVuaWNhdGlvbiB0ZWNobm9sb2d5IENPLkxURAotCQkJCUh1aWppYW5nIEluZCBCbGRpbmcgRGFzaGkgVG93bgotCQkJCVBhbnl1IERpc3RyaWN0Ci0JCQkJR3VhbmcgemhvdSBHdWFuZyBkb25nIDUxMTQzMAotCQkJCUNISU5BCi0KLTAwLTE0LUJGICAgKGhleCkJCUNpc2NvLUxpbmtzeXMgTExDCi0wMDE0QkYgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cyBMTEMKLQkJCQkxMjEgVGhlb3J5IERyLgotCQkJCUlydmluZSBDQSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQzAgICAoaGV4KQkJU3ltc3RyZWFtIFRlY2hub2xvZ3kgR3JvdXAgTHRkCi0wMDE0QzAgICAgIChiYXNlIDE2KQkJU3ltc3RyZWFtIFRlY2hub2xvZ3kgR3JvdXAgTHRkCi0JCQkJTGV2ZWwgMSwgMyBDaGVzdGVyIFN0cmVldAotCQkJCU9ha2xlaWdoIFZpY3RvcmlhIDMxNjYKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTQtQzEgICAoaGV4KQkJVS5TLiBSb2JvdGljcyBDb3Jwb3JhdGlvbgotMDAxNEMxICAgICAoYmFzZSAxNikJCVUuUy4gUm9ib3RpY3MgQ29ycG9yYXRpb24KLQkJCQk5MzUgTmF0aW9uYWwgUGFya3dheQotCQkJCVNjaGF1bWJ1cmcgSUwgNjAxNzMtNTE1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQzIgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMTRDMiAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTIwNTU1IFRvbWJhbGwgUGFya3dheQotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQzMgICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5IExMQwotMDAxNEMzICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neSBMTEMKLQkJCQkxMjgwIERpc2MgRHJpdmUKLQkJCQlTaGFrb3BlZSBNTiA1NTM3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQzQgICAoaGV4KQkJVml0ZWxjb20gTW9iaWxlIFRlY2hub2xvZ3kKLTAwMTRDNCAgICAgKGJhc2UgMTYpCQlWaXRlbGNvbSBNb2JpbGUgVGVjaG5vbG9neQotCQkJCVBUQSwgQXZkYSwgSnVhbiBMw7NwZXogUGXDsWFsdmVyLCBuwrogNwotCQkJCTI5NTkwLCBDYW1wYW5pbGxhcwotCQkJCUNhbXBhbmlsbGFzLiBNYWxhZ2EuIAotCQkJCVNQQUlOCi0KLTAwLTE0LUM1ICAgKGhleCkJCUFsaXZlIFRlY2hub2xvZ2llcyBQdHkgTHRkCi0wMDE0QzUgICAgIChiYXNlIDE2KQkJQWxpdmUgVGVjaG5vbG9naWVzIFB0eSBMdGQKLQkJCQkxMSBUZWNobm9sb2d5IERyaXZlCi0JCQkJQXJ1bmRlbCBRdWVlbnNsYW5kIDQyMTQKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTQtQzYgICAoaGV4KQkJUXVpeGFudCBMdGQKLTAwMTRDNiAgICAgKGJhc2UgMTYpCQlRdWl4YW50IEx0ZAotCQkJCTYxQSBNb3VudCBQbGVhc2FudAotCQkJCUJpZ2dpbiBIaWxsCi0JCQkJRW5nbGFuZCBLZW50IFROMTYgM1RQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTQtQzcgICAoaGV4KQkJTm9ydGVsCi0wMDE0QzcgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTQtQzggICAoaGV4KQkJQ29udGVtcG9yYXJ5IFJlc2VhcmNoIENvcnAKLTAwMTRDOCAgICAgKGJhc2UgMTYpCQlDb250ZW1wb3JhcnkgUmVzZWFyY2ggQ29ycAotCQkJCTE3NjMwIERhdmVucG9ydCBSZAotCQkJCVNURSAxMTMKLQkJCQlEYWxsYXMgVFggNzUyNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUM5ICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotMDAxNEM5ICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTE3NDUgVGVjaG5vbG9neSBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQ0EgICAoaGV4KQkJS2V5IFJhZGlvIFN5c3RlbXMgTGltaXRlZAotMDAxNENBICAgICAoYmFzZSAxNikJCUtleSBSYWRpbyBTeXN0ZW1zIExpbWl0ZWQKLQkJCQlWZW51cyBIb3VzZQotCQkJCUNhbGxldmEgUGFyawotCQkJCUFsZGVybWFzdG9uIEJlcmtzaGlyZSBSRzcgOERBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTQtQ0IgICAoaGV4KQkJTGlmZVN5bmMgQ29ycG9yYXRpb24KLTAwMTRDQiAgICAgKGJhc2UgMTYpCQlMaWZlU3luYyBDb3Jwb3JhdGlvbgotCQkJCTEgRSBCcm93YXJkIEJvdWxldmFyZCwgU3VpdGUgMTcwMQotCQkJCUZvcnQgTGF1ZGVyZGFsZSBGbG9yaWRhIDMzMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1DQyAgIChoZXgpCQlaZXRlYywgSW5jLgotMDAxNENDICAgICAoYmFzZSAxNikJCVpldGVjLCBJbmMuCi0JCQkJODIyNiBCcmFja2VuIFBsYWNlIFNFCi0JCQkJU25vcXVhbG1pZSBXQSA5ODA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtQ0QgICAoaGV4KQkJRGlnaXRhbFpvbmUgQ28uLCBMdGQuCi0wMDE0Q0QgICAgIChiYXNlIDE2KQkJRGlnaXRhbFpvbmUgQ28uLCBMdGQuCi0JCQkJTm8uIDEwMDEgRSZDIFZlbnR1cmVEcmVhbVRvd2VyMgotCQkJCTE5Ny0xMCBHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1DRSAgIChoZXgpCQlORiBDT1JQT1JBVElPTgotMDAxNENFICAgICAoYmFzZSAxNikJCU5GIENPUlBPUkFUSU9OCi0JCQkJNi0zLTIwLCBUc3VuYXNoaW1hLWhpZ2FzaGkKLQkJCQlLb2hva3Uta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjMtODUwOAotCQkJCUpBUEFOCi0KLTAwLTE0LUNGICAgKGhleCkJCUlOVklTSU8gQ29tbXVuaWNhdGlvbnMKLTAwMTRDRiAgICAgKGJhc2UgMTYpCQlJTlZJU0lPIENvbW11bmljYXRpb25zCi0JCQkJU3RhbWhvbG1lbiAxNTcKLQkJCQlIdmlkb3ZyZSAgMjY1MAotCQkJCURFTk1BUksKLQotMDAtMTQtRDAgICAoaGV4KQkJQlRJIFN5c3RlbXMgSW5jLgotMDAxNEQwICAgICAoYmFzZSAxNikJCUJUSSBTeXN0ZW1zIEluYy4KLQkJCQk1MCBOb3J0aHNpZGUgUm9hZAotCQkJCU90dGF3YSBPbnRhcmlvIEsySCA1WjYKLQkJCQlDQU5BREEKLQotMDAtMTQtRDEgICAoaGV4KQkJVFJFTkRuZXQKLTAwMTREMSAgICAgKGJhc2UgMTYpCQlUUkVORG5ldAotCQkJCTIwNjc1IE1hbmhhdHRhbiBQbGFjZQotCQkJCVRvcnJhbmNlIENBIDkwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1EMiAgIChoZXgpCQlLeXVkZW4gVGVjaG5vc3lzdGVtcyBDb3Jwb3JhdGlvbgotMDAxNEQyICAgICAoYmFzZSAxNikJCUt5dWRlbiBUZWNobm9zeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJNC0xOS0xOCBTSElNSVpVLE1JTkFNSS1LVQotCQkJCUZVS1VPS0EgIDgxNS0wMDMxCi0JCQkJSkFQQU4KLQotMDAtMTQtRDMgICAoaGV4KQkJU0VQU0EKLTAwMTREMyAgICAgKGJhc2UgMTYpCQlTRVBTQQotCQkJCWNhbGxlIEFsYmF0cm9zLCA3IHkgOQotCQkJCVBvbC4gSW5kLiBMYSBFc3RhY2nDs24KLQkJCQlQSU5UTyBNYWRyaWQgMjgzMjAKLQkJCQlTUEFJTgotCi0wMC0xNC1ENCAgIChoZXgpCQlLIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMTRENCAgICAgKGJhc2UgMTYpCQlLIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkzMjUgR2FuYmFyYQotCQkJCUthbWktbWFjaGkKLQkJCQlLYW1pLWd1biBNaXlhZ2kta2VuIDk4MS00MjYzCi0JCQkJSkFQQU4KLQotMDAtMTQtRDUgICAoaGV4KQkJRGF0YW5nIFRlbGVjb20gVGVjaG5vbG9neSBDTy4gLCBMQ0QsT3B0aWNhbCBDb21tdW5pY2F0aW9uIEJyCi0wMDE0RDUgICAgIChiYXNlIDE2KQkJRGF0YW5nIFRlbGVjb20gVGVjaG5vbG9neSBDTy4gLCBMQ0QsT3B0aWNhbCBDb21tdW5pY2F0aW9uIEJyCi0JCQkJM3JkIEZsb29yLEJ1aWxkaW5nIDgsSGktVGVjaCBJbmN1YmF0aW9uIFBhcmssCi0JCQkJTmFueWFueGlhbixUaWFuZnUgQXZlLGNoZW5nZHUgSGktVGVjaCBab25lLAotCQkJCUNoZW5nRHUgU2lDaHVhbiA2MTAwNDEKLQkJCQlDSElOQQotCi0wMC0xNC1ENiAgIChoZXgpCQlKZW9uZ21pbiBFbGVjdHJvbmljcyBDby4sTHRkLgotMDAxNEQ2ICAgICAoYmFzZSAxNikJCUplb25nbWluIEVsZWN0cm9uaWNzIENvLixMdGQuCi0JCQkJIzcxMCwgQnl1a3NhbiBEaWdpdGFsIFZhbGxleSAyLAotCQkJCUthc2FuLURvbmcsIEtldW1jaGVvbi1HdSwKLQkJCQlTZW91bCAgMTUzIDc4MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1ENyAgIChoZXgpCQlEYXRhc3RvcmUgVGVjaG5vbG9neSBDb3JwCi0wMDE0RDcgICAgIChiYXNlIDE2KQkJRGF0YXN0b3JlIFRlY2hub2xvZ3kgQ29ycAotCQkJCTlGLCBOTy4xMCwgU0VDLjEsIENodW5nIEhzaW5nIFJELiwgV3UtS3UKLQkJCQlUYWlwZWkgSHNpZW4sICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE0LUQ4ICAgKGhleCkJCWJpby1sb2dpYyBTQQotMDAxNEQ4ICAgICAoYmFzZSAxNikJCWJpby1sb2dpYyBTQQotCQkJCTEsIHJ1ZSBkZSBsJ0V1cm9wZQotCQkJCUNMQUlYICAzODY0MAotCQkJCUZSQU5DRQotCi0wMC0xNC1EOSAgIChoZXgpCQlJUCBGYWJyaWNzLCBJbmMuCi0wMDE0RDkgICAgIChiYXNlIDE2KQkJSVAgRmFicmljcywgSW5jLgotCQkJCTE0OTY0IE5XIEdyZWVuYnJpZXIgUGFya3dheQotCQkJCUJlYXZlcnRvbiBPcmVnb24gOTcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LURBICAgKGhleCkJCUh1bnRsZWlnaCBIZWFsdGhjYXJlCi0wMDE0REEgICAgIChiYXNlIDE2KQkJSHVudGxlaWdoIEhlYWx0aGNhcmUKLQkJCQlIdW50bGVpZ2ggSGVhbHRoY2FyZSAtIERpYWdub3N0aWMgUHJvZHVjdHMgRGl2aXNpb24KLQkJCQkzNSBQb3J0bWFubW9vciBSb2FkCi0JCQkJQ2FyZGlmZiAgQ0YyNCA1SE4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNC1EQiAgIChoZXgpCQlFbG1hIFRyZW5ldyBFbGVjdHJvbmljIEdtYkgKLTAwMTREQiAgICAgKGJhc2UgMTYpCQlFbG1hIFRyZW5ldyBFbGVjdHJvbmljIEdtYkgKLQkJCQlTdHV0dGdhcnRlciBTdHJhc3NlIDExCi0JCQkJUGZvcnpoZWltIEJXIDc1MTc5Ci0JCQkJR0VSTUFOWQotCi0wMC0xNC1EQyAgIChoZXgpCQlDb21tdW5pY2F0aW9uIFN5c3RlbSBEZXNpZ24gJiBNYW51ZmFjdHVyaW5nIChDU0RNKQotMDAxNERDICAgICAoYmFzZSAxNikJCUNvbW11bmljYXRpb24gU3lzdGVtIERlc2lnbiAmIE1hbnVmYWN0dXJpbmcgKENTRE0pCi0JCQkJUG9zdGJ1cyAxODEKLQkJCQlCdXNzdW0gTkggMTQwMCBBRAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE0LUREICAgKGhleCkJCUNvdmVyZ2VuY2UgSW5jLgotMDAxNEREICAgICAoYmFzZSAxNikJCUNvdmVyZ2VuY2UgSW5jLgotCQkJCU9uZSBDbG9jayBUb3dlciBQbGFjZSwgU3VpdGUgMjAwCi0JCQkJTWF5bmFyZCBNQSAwMTc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtREUgICAoaGV4KQkJU2FnZSBJbnN0cnVtZW50cyBJbmMuCi0wMDE0REUgICAgIChiYXNlIDE2KQkJU2FnZSBJbnN0cnVtZW50cyBJbmMuCi0JCQkJMjQwIEFpcnBvcnQgQmx2ZC4KLQkJCQlGcmVlZG9tIENBIDk1MDE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1ERiAgIChoZXgpCQlISS1QIFRlY2ggQ29ycG9yYXRpb24KLTAwMTRERiAgICAgKGJhc2UgMTYpCQlISS1QIFRlY2ggQ29ycG9yYXRpb24KLQkJCQkxLTI3LTIzIEhpZ2FzaGl0b2tvcm96YXdhCi0JCQkJVG9rb3JvemF3YSBTYWl0YW1hIDM1OS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMTQtRTAgICAoaGV4KQkJTEVUJ1MgQ29ycG9yYXRpb24KLTAwMTRFMCAgICAgKGJhc2UgMTYpCQlMRVQnUyBDb3Jwb3JhdGlvbgotCQkJCUJhbmNobyBCbGRnLiA0RiwgMi0xOC0yMCBNYXJ1bm91Y2hpLCBOYWthCi0JCQkJTmFnb3lhIEFpY2hpIDQ2MC0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMTQtRTEgICAoaGV4KQkJRGF0YSBEaXNwbGF5IEFHCi0wMDE0RTEgICAgIChiYXNlIDE2KQkJRGF0YSBEaXNwbGF5IEFHCi0JCQkJSW5kdXN0cmllc3RyYcODxbhlIDEKLQkJCQlHZXJtZXJpbmcgQmF5ZXJuIDgyMTEwCi0JCQkJR0VSTUFOWQotCi0wMC0xNC1FMiAgIChoZXgpCQlkYXRhY29tIHN5c3RlbXMgaW5jLgotMDAxNEUyICAgICAoYmFzZSAxNikJCWRhdGFjb20gc3lzdGVtcyBpbmMuCi0JCQkJOSBhZGxlciBkcml2ZQotCQkJCWVhc3Qgc3lyYWN1c2Ugbi55LiAxMzA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRTMgICAoaGV4KQkJbW0tbGFiIEdtYkgKLTAwMTRFMyAgICAgKGJhc2UgMTYpCQltbS1sYWIgR21iSAotCQkJCVN0YW1taGVpbWVyIFN0cmFzc2UgMTAKLQkJCQlELTcwODA2Ci0JCQkJS29ybndlc3RoZWltICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LUU0ICAgKGhleCkJCUludGVncmFsIFRlY2hub2xvZ2llcwotMDAxNEU0ICAgICAoYmFzZSAxNikJCUludGVncmFsIFRlY2hub2xvZ2llcwotCQkJCTk4NTUgQ3Jvc3Nwb2ludCBCbHZkCi0JCQkJU3RlIDEyNgotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRTUgICAoaGV4KQkJQWx0aWNhc3QKLTAwMTRFNSAgICAgKGJhc2UgMTYpCQlBbHRpY2FzdAotCQkJCTE2dGggZmxvb3IsIE5hcmEgQmxkZywgMTMyOC0zCi0JCQkJU2VvY2hvLWRvbmcsIFNlb2Noby1ndSwKLQkJCQlTZW91bCAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUU2ICAgKGhleCkJCUFJTSBJbmZyYXJvdG1vZHVsZSBHbWJICi0wMDE0RTYgICAgIChiYXNlIDE2KQkJQUlNIEluZnJhcm90bW9kdWxlIEdtYkgKLQkJCQlTb2VmbGluZ2Vyc3RyLiAxMDAKLQkJCQlVbG0gQlcgODkwNzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE0LUU3ICAgKGhleCkJCVN0b2xpbngsLiBJbmMKLTAwMTRFNyAgICAgKGJhc2UgMTYpCQlTdG9saW54LC4gSW5jCi0JCQkJM0YgT2hjaGFuZyBCbGRnLiwgNjEgWWFuZ2phZS1kb25nCi0JCQkJU2VvY2hvLWd1Ci0JCQkJU2VvdWwgIDEzNy04ODkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtRTggICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTRFOCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUU5ICAgKGhleCkJCU5vcnRlY2ggSW50ZXJuYXRpb25hbAotMDAxNEU5ICAgICAoYmFzZSAxNikJCU5vcnRlY2ggSW50ZXJuYXRpb25hbAotCQkJCTMyQSBXaWdhbnRob3JwZSBSb2FkCi0JCQkJV2lsbG93dG9uIEh1YgotCQkJCVBpZXRlcm1hcnRpemJ1cmcgS3dhWnVsdSBOYXRhbCAzMjAxCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTE0LUVBICAgKGhleCkJCVMgRGlnbSBJbmMuIChTYWZlIFBhcmFkaWdtIEluYy4pCi0wMDE0RUEgICAgIChiYXNlIDE2KQkJUyBEaWdtIEluYy4gKFNhZmUgUGFyYWRpZ20gSW5jLikKLQkJCQk1RiwgU2hpbi1hbiBCbGRnLiA4OS04LAotCQkJCU1vb25qdW5nLURvbmcKLQkJCQlTb25ncGEtR3UgU2VvdWwgMTM4LTIwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNC1FQiAgIChoZXgpCQlBd2FyZVBvaW50IENvcnBvcmF0aW9uCi0wMDE0RUIgICAgIChiYXNlIDE2KQkJQXdhcmVQb2ludCBDb3Jwb3JhdGlvbgotCQkJCTg4OTkgVW5pdmVyc2l0eSBDZW50ZXIgTGFuZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRUMgICAoaGV4KQkJQWNybyBUZWxlY29tCi0wMDE0RUMgICAgIChiYXNlIDE2KQkJQWNybyBUZWxlY29tCi0JCQkJNzE0IFdvb2xpbSBlLUJpeiBDZW50ZXIgMTcwLTUgR3Vyby1kb25nCi0JCQkJR3Vyby1HdSBTZW91bCAxNTItNzY5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUVEICAgKGhleCkJCUFpcmFrLCBJbmMuCi0wMDE0RUQgICAgIChiYXNlIDE2KQkJQWlyYWssIEluYy4KLQkJCQkyMTY0MSBCZWF1bWVhZGUgQ2lyY2xlCi0JCQkJU3VpdGUgMzAwCi0JCQkJQXNoYnVybiBWaXJnaW5pYSAyMDE0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRUUgICAoaGV4KQkJV2VzdGVybiBEaWdpdGFsIFRlY2hub2xvZ2llcywgSW5jLgotMDAxNEVFICAgICAoYmFzZSAxNikJCVdlc3Rlcm4gRGlnaXRhbCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyMDUxMSBMYWtlIEZvcmVzdCBEci4KLQkJCQlMYWtlIEZvcmVzdCBDYSA5MjYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRUYgICAoaGV4KQkJVFplcm8gVGVjaG5vbG9naWVzLCBJbmMuCi0wMDE0RUYgICAgIChiYXNlIDE2KQkJVFplcm8gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNDU1IFcuIE1hdWRlIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRjAgICAoaGV4KQkJQnVzaW5lc3MgU2VjdXJpdHkgT0wgQUIKLTAwMTRGMCAgICAgKGJhc2UgMTYpCQlCdXNpbmVzcyBTZWN1cml0eSBPTCBBQgotCQkJCUJveCAxMTAgNjUKLQkJCQlTdG9yYSBSYWJ5IEJ5YXZhZyA4OAotCQkJCUx1bmQgIDIyMCAxMQotCQkJCVNXRURFTgotCi0wMC0xNC1GMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE0RjEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1GMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE0RjIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1GMyAgIChoZXgpCQlWaVhTIFN5c3RlbXMgSW5jCi0wMDE0RjMgICAgIChiYXNlIDE2KQkJVmlYUyBTeXN0ZW1zIEluYwotCQkJCTIyMzUgU2hlcHBhcmQgQXZlIEVhc3QKLQkJCQlTdWl0ZTE3MDUKLQkJCQlUT1JPTlRPIE9OVEFSSU8gTTJKIDVCNQotCQkJCUNBTkFEQQotCi0wMC0xNC1GNCAgIChoZXgpCQlEZWtUZWMgRGlnaXRhbCBWaWRlbyBCLlYuCi0wMDE0RjQgICAgIChiYXNlIDE2KQkJRGVrVGVjIERpZ2l0YWwgVmlkZW8gQi5WLgotCQkJCVZhbiBSaWViZWVja3dlZyA0M0EKLQkJCQlIaWx2ZXJzdW0gTkggMTIxMkFFCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTQtRjUgICAoaGV4KQkJT1NJIFNlY3VyaXR5IERldmljZXMKLTAwMTRGNSAgICAgKGJhc2UgMTYpCQlPU0kgU2VjdXJpdHkgRGV2aWNlcwotCQkJCTE1ODAgSmF5a2VuIFdheQotCQkJCUNodWxhIFZpc3RhIENhbGlmb3JuaWEgOTE5MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUY2ICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MsIEluYy4KLTAwMTRGNiAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzLCBJbmMuCi0JCQkJMTE5NCBOLiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE0LUY3ICAgKGhleCkJCUNyZXZpcwotMDAxNEY3ICAgICAoYmFzZSAxNikJCUNyZXZpcwotCQkJCUQtMTFGLCBEaWdpdGFsIEVtcGlyZSBCbGRnLiwgOTgwLTMKLQkJCQlZb3VuZ3RvbmcKLQkJCQlTdXdvbiAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE0LUY4ICAgKGhleCkJCVNjaWVudGlmaWMgQXRsYW50YQotMDAxNEY4ICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgQXRsYW50YQotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlNUyA1LjIuNDI4Ci0JCQkJTGF3cmVuY2V2aWxsZSBHYSAzMDA0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRjkgICAoaGV4KQkJVmFudGFnZSBDb250cm9scwotMDAxNEY5ICAgICAoYmFzZSAxNikJCVZhbnRhZ2UgQ29udHJvbHMKLQkJCQkxMDYxIFNvdXRoIDgwMCBFYXN0Ci0JCQkJT3JlbSBVVCA4NDA5NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTQtRkEgICAoaGV4KQkJQXNHYSBTLkEuCi0wMDE0RkEgICAgIChiYXNlIDE2KQkJQXNHYSBTLkEuCi0JCQkJUm9kIFJvYmVydG8gTW9yZWlyYSBLbSAwNAotCQkJCVBhdWxpbmlhIFNhbyBQYXVsbyAxMzE0MC0wMDAKLQkJCQlCUkFaSUwKLQotMDAtMTQtRkIgICAoaGV4KQkJVGVjaG5pY2FsIFNvbHV0aW9ucyBJbmMuCi0wMDE0RkIgICAgIChiYXNlIDE2KQkJVGVjaG5pY2FsIFNvbHV0aW9ucyBJbmMuCi0JCQkJMTAxLTczMTEgVmFudGFnZSBXYXkKLQkJCQlEZWx0YSBCQyBWNEcgMUM5Ci0JCQkJQ0FOQURBCi0KLTAwLTE0LUZDICAgKGhleCkJCUV4dGFuZG9uLCBJbmMuCi0wMDE0RkMgICAgIChiYXNlIDE2KQkJRXh0YW5kb24sIEluYy4KLQkJCQkzOTM1MCBDaXZpYyBDZW50ZXIgRHJpdmUgU3RlLiAxNjAKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNC1GRCAgIChoZXgpCQlUaGVjdXMgVGVjaG5vbG9neSBDb3JwLgotMDAxNEZEICAgICAoYmFzZSAxNikJCVRoZWN1cyBUZWNobm9sb2d5IENvcnAuCi0JCQkJMTVGLixOby4gNzksU2VjLiAxLFNpbnRhaSA1dGggUkQuLAotCQkJCVNpamhpaCBDaXR5IFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNC1GRSAgIChoZXgpCQlBcnRlY2ggRWxlY3Ryb25pY3MKLTAwMTRGRSAgICAgKGJhc2UgMTYpCQlBcnRlY2ggRWxlY3Ryb25pY3MKLQkJCQkjMzAxLCBZYW5namFlIEJsZGcuLCAyNzYtMgotCQkJCVlhbmdqYWUtRG9uZywgU2VvY2hvLUt1Ci0JCQkJU2VvdWwgIDEzNy04OTUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTQtRkYgICAoaGV4KQkJUHJlY2lzZSBBdXRvbWF0aW9uLCBJbmMuCi0wMDE0RkYgICAgIChiYXNlIDE2KQkJUHJlY2lzZSBBdXRvbWF0aW9uLCBJbmMuCi0JCQkJMTQwMiBBbGV4YW5kcmEgQmx2ZAotCQkJCUNyeXN0YWwgTGFrZSBJTCA2MDAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMDAgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDE1MDAgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xNS0wMSAgIChoZXgpCQlMZXhCb3gKLTAwMTUwMSAgICAgKGJhc2UgMTYpCQlMZXhCb3gKLQkJCQkzLCBhdmVudWUgRGlkaWVyIERhdXJhdAotCQkJCVRPVUxPVVNFICAzMTQwMAotCQkJCUZSQU5DRQotCi0wMC0xNS0wMiAgIChoZXgpCQlCRVRBIHRlY2gKLTAwMTUwMiAgICAgKGJhc2UgMTYpCQlCRVRBIHRlY2gKLQkJCQkxNSBydWUgZCdhcG9sbG8KLQkJCQlMJ1VOSU9OICAzMTI0MAotCQkJCUZSQU5DRQotCi0wMC0xNS0wMyAgIChoZXgpCQlQUk9GSWNvbW1zIHMuci5vLgotMDAxNTAzICAgICAoYmFzZSAxNikJCVBST0ZJY29tbXMgcy5yLm8uCi0JCQkJVHVyZ2VuZXZvdmEgNQotCQkJCUJybm8gRVUvRXVyb3BlIDYxOCAwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTE1LTA0ICAgKGhleCkJCUdBTUUgUExVUyBDTy4sIExURC4KLTAwMTUwNCAgICAgKGJhc2UgMTYpCQlHQU1FIFBMVVMgQ08uLCBMVEQuCi0JCQkJMTY0LTU3LCBZZW9uZ2h3YS1kb25nLCBKYW5nYW4tZ3UKLQkJCQlTdXdvbiBHeWVvbmdnaS1kbyA0NDAtODE4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTA1ICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jIAotMDAxNTA1ICAgICAoYmFzZSAxNikJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jIAotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMDYgICAoaGV4KQkJTmVvIFBob3RvbmljcwotMDAxNTA2ICAgICAoYmFzZSAxNikJCU5lbyBQaG90b25pY3MKLQkJCQk5MTAgRS4gQ2FsaWZvcm5pYSBTdC4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTA3ICAgKGhleCkJCVJlbmFpc3NhbmNlIExlYXJuaW5nIEluYwotMDAxNTA3ICAgICAoYmFzZSAxNikJCVJlbmFpc3NhbmNlIExlYXJuaW5nIEluYwotCQkJCTI5MTEgUGVhY2ggU3RyZWV0Ci0JCQkJUE8gQm94IDgwMzYKLQkJCQlXaXNjb25zaW4gUmFwaWRzIFdpc2NvbnNpbiA1NDQ5NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMDggICAoaGV4KQkJR2xvYmFsIFRhcmdldCBFbnRlcnByaXNlIEluYwotMDAxNTA4ICAgICAoYmFzZSAxNikJCUdsb2JhbCBUYXJnZXQgRW50ZXJwcmlzZSBJbmMKLQkJCQk1RiwgTm8uIDE4NiwgU2VjLiAyLCBDaHVuZy1Ic2luZyBSZC4sCi0JCQkJSHNpbiBUaWVuLCBUYWlwZWkgY291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtMDkgICAoaGV4KQkJUGx1cyBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDE1MDkgICAgIChiYXNlIDE2KQkJUGx1cyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJT2ZmaWNlICMyMDUsICBHYXlhbmcgVGVjaG5vLXRvd24sCi0JCQkJR2F5YW5nIDMtIGRvbmcsIEdhbmdzZW8ta3UKLQkJCQlTZW91bCAxNTctODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTBBICAgKGhleCkJCVNvbm9hIFN5c3RlbXMsIEluYwotMDAxNTBBICAgICAoYmFzZSAxNikJCVNvbm9hIFN5c3RlbXMsIEluYwotCQkJCTM5MDAgRnJlZWRvbSBDaXJjbGUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMEIgICAoaGV4KQkJU0FHRSBJTkZPVEVDSCBMVEQuCi0wMDE1MEIgICAgIChiYXNlIDE2KQkJU0FHRSBJTkZPVEVDSCBMVEQuCi0JCQkJM0YsIE5vMzAsIElORFVTVFJZIEUuIDlUSCBSRC4sU0NJRU5DRS1CQVNFRAotCQkJCUlORFVTVFJJQUwgUEFSSwotCQkJCUhTSU4tQ0hVIFRBSVdBTiAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTBDICAgKGhleCkJCUFWTSBHbWJICi0wMDE1MEMgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotMDAtMTUtMEQgICAoaGV4KQkJSG9hbmEgTWVkaWNhbCwgSW5jLgotMDAxNTBEICAgICAoYmFzZSAxNikJCUhvYW5hIE1lZGljYWwsIEluYy4KLQkJCQk4MjggRm9ydCBTdHJlZXQgTWFsbAotCQkJCVN1aXRlIDYyMAotCQkJCUhvbm9sdWx1IEhJIDk2ODEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0wRSAgIChoZXgpCQlPUEVOQlJBSU4gVEVDSE5PTE9HSUVTIENPLiwgTFRELgotMDAxNTBFICAgICAoYmFzZSAxNikJCU9QRU5CUkFJTiBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJIzgwNCxBTllBTkcgSy1DRU5URVIsMTU5MS05ICwgQlVSSU0tRE9ORyxET05HQU4tR1UsCi0JCQkJQU5ZQU5HIEtZVU5HR0ktRE8gNDMxLTgxNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0wRiAgIChoZXgpCQltaW5nam9uZwotMDAxNTBGICAgICAoYmFzZSAxNikJCW1pbmdqb25nCi0JCQkJOEYsTk8uMSxMQU5FIDE2LFNaRSBDSFVBTiBST0FELFNFQy4yLFBBTkNISUFPIENJVFkuCi0JCQkJVEFJUEVJICAyMjAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTEwICAgKGhleCkJCVRlY2hzcGhlcmUgQ28uLCBMdGQKLTAwMTUxMCAgICAgKGJhc2UgMTYpCQlUZWNoc3BoZXJlIENvLiwgTHRkCi0JCQkJNEYsIFdvbmlsIEJsZGcuLCA5ODAtNTQsIEJhbmdiYWUtZG9uZywgU2VvQ2hvLWd1Ci0JCQkJU2VvdWwgMTM3LTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0xMSAgIChoZXgpCQlEYXRhIENlbnRlciBTeXN0ZW1zCi0wMDE1MTEgICAgIChiYXNlIDE2KQkJRGF0YSBDZW50ZXIgU3lzdGVtcwotCQkJCTE0ODAyIFZlbnR1cmUgRHJpdmUKLQkJCQlEYWxsYXMgVFggNzUyMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTEyICAgKGhleCkJCVp1cmljaCBVbml2ZXJzaXR5IG9mIEFwcGxpZWQgU2NpZW5jZXMKLTAwMTUxMiAgICAgKGJhc2UgMTYpCQladXJpY2ggVW5pdmVyc2l0eSBvZiBBcHBsaWVkIFNjaWVuY2VzCi0JCQkJVGVjaG5pa3Vtc3RyYXNzZSA5Ci0JCQkJV2ludGVydGh1ciBaSCBDSC04NDAxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTUtMTMgICAoaGV4KQkJRUZTIHNhcwotMDAxNTEzICAgICAoYmFzZSAxNikJCUVGUyBzYXMKLQkJCQlCUCAzNAotCQkJCU1JTExFUlkgIEYtNjkzOTAKLQkJCQlGUkFOQ0UKLQotMDAtMTUtMTQgICAoaGV4KQkJSHUgWmhvdSBOQVZBIE5ldHdvcmtzJkVsZWN0cm9uaWNzIEx0ZC4KLTAwMTUxNCAgICAgKGJhc2UgMTYpCQlIdSBaaG91IE5BVkEgTmV0d29ya3MmRWxlY3Ryb25pY3MgTHRkLgotCQkJCTMvRixOby4zMjgtNCxHdWFuZyBZdWFuIFJkLgotCQkJCUh1IFpob3UgWmhlIEppYW5nIDMxMzAwMAotCQkJCUNISU5BCi0KLTAwLTE1LTE1ICAgKGhleCkJCUxlaXBvbGQrQ28uR21iSAotMDAxNTE1ICAgICAoYmFzZSAxNikJCUxlaXBvbGQrQ28uR21iSAotCQkJCUtyZXV6d2llc2UgMTIKLQkJCQlSb2NrZW5oYXVzZW4gUkxQIEQtNjc4MDYKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTE2ICAgKGhleCkJCVVSSUVMIFNZU1RFTVMgSU5DLgotMDAxNTE2ICAgICAoYmFzZSAxNikJCVVSSUVMIFNZU1RFTVMgSU5DLgotCQkJCSMyMDQgQnl1Y2tzYW4gRGlnaXRhbHZhbGxleSAxc3QsIDIxMi0xNiwgR3Vyby1kb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMTcgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDE1MTcgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEpsbiBIaS1UZWNoICAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE1LTE4ICAgKGhleCkJCVNoZW56aGVuIDEwTU9PTlMgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDTy4sTHRkCi0wMDE1MTggICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gMTBNT09OUyBUZWNobm9sb2d5IERldmVsb3BtZW50IENPLixMdGQKLQkJCQlBZGQ6M0YsSHVheGluZyBidWlsZGluZywgUWlhb1hpYW5nIHJvYWQsCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODA1MwotCQkJCUNISU5BCi0KLTAwLTE1LTE5ICAgKGhleCkJCVN0b3JlQWdlIE5ldHdvcmtpbmcgVGVjaG5vbG9naWVzCi0wMDE1MTkgICAgIChiYXNlIDE2KQkJU3RvcmVBZ2UgTmV0d29ya2luZyBUZWNobm9sb2dpZXMKLQkJCQk2MyBCYXItWWVodWRhIHN0LgotCQkJCU5lc2hlciAgMzY2NTEKLQkJCQlJU1JBRUwKLQotMDAtMTUtMUEgICAoaGV4KQkJSHVudGVyIEVuZ2luZWVyaW5nIENvbXBhbnkKLTAwMTUxQSAgICAgKGJhc2UgMTYpCQlIdW50ZXIgRW5naW5lZXJpbmcgQ29tcGFueQotCQkJCTExMjUwIEh1bnRlciBEcml2ZQotCQkJCUJyaWRnZXRvbiBNaXNzb3VyaSA2MzA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMUIgICAoaGV4KQkJSXNpbG9uIFN5c3RlbXMgSW5jLgotMDAxNTFCICAgICAoYmFzZSAxNikJCUlzaWxvbiBTeXN0ZW1zIEluYy4KLQkJCQkzMTAxIFdlc3Rlcm4gQXZlbnVlCi0JCQkJU2VhdHRsZSBXQSA5ODEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMUMgICAoaGV4KQkJTEVORUNPCi0wMDE1MUMgICAgIChiYXNlIDE2KQkJTEVORUNPCi0JCQkJNnRoLixEb25nIE1vb24gR29vZCBNb3JuaW5nIFRvd2VyCi0JCQkJMTMyMyBCZWFrc2Vvay1Eb25nIElsc2FuLUd1Ci0JCQkJS3llb25nIEtpLURvIEdvWWFuZy1TaSA0MTEtODE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTFEICAgKGhleCkJCU0ySSBDT1JQT1JBVElPTgotMDAxNTFEICAgICAoYmFzZSAxNikJCU0ySSBDT1JQT1JBVElPTgotCQkJCUt5b25nZ2kgVmVudHVyZSBBbnlhbmcgdGVjaG5pY2FsIGNlbnRlciwgMTN0aCBGbG9vciwgNTcyLTUsIEFueWFuZyA4LURvbmcsIE1hbmFuLUd1Ci0JCQkJQW55YW5nLVNoaSBLeW9uZ2dpLURvIDQzMC03MzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtMUUgICAoaGV4KQkJRXRoZXJuZXQgUG93ZXJsaW5rIFN0YW5kYXJkaXphdGlvbiBHcm91cCAoRVBTRykKLTAwMTUxRSAgICAgKGJhc2UgMTYpCQlFdGhlcm5ldCBQb3dlcmxpbmsgU3RhbmRhcmRpemF0aW9uIEdyb3VwIChFUFNHKQotCQkJCWMvbyBadXJpY2ggVW5pdmVyc2l0eSBvZiBBcHBsaWVkIFNjaWVuY2VzCi0JCQkJVGVjaG5pa3Vtc3RyYXNzZSA5Ci0JCQkJQ0gtODQwMSBXaW50ZXJ0aHVyIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE1LTFGICAgKGhleCkJCU11bHRpdmlzaW9uIEludGVsbGlnZW50IFN1cnZlaWxsYW5jZSAoSG9uZyBLb25nKSBMdGQKLTAwMTUxRiAgICAgKGJhc2UgMTYpCQlNdWx0aXZpc2lvbiBJbnRlbGxpZ2VudCBTdXJ2ZWlsbGFuY2UgKEhvbmcgS29uZykgTHRkCi0JCQkJMjYvRiwgQWl0a2VuIFZhbnNvbiBDZW50cmUsCi0JCQkJNjEgSG9pIFl1ZW4gUm9hZCwgS3d1biBUb25nLCBLb3dsb29uLAotCQkJCUhPTkcgS09ORwotCi0wMC0xNS0yMCAgIChoZXgpCQlSYWRpb2NyYWZ0cyBBUwotMDAxNTIwICAgICAoYmFzZSAxNikJCVJhZGlvY3JhZnRzIEFTCi0JCQkJU2FuZGFrZXJ2ZWllbiA2NAotCQkJCU9zbG8gMDQ4NAotCQkJCU5PUldBWQotCi0wMC0xNS0yMSAgIChoZXgpCQlIb3JvcXVhcnR6Ci0wMDE1MjEgICAgIChiYXNlIDE2KQkJSG9yb3F1YXJ0egotCQkJCUJQIDI1MQotCQkJCUZPTlRFTkFZIExFIENPTVRFIFZFTkRFRSA4NTIwNQotCQkJCUZSQU5DRQotCi0wMC0xNS0yMiAgIChoZXgpCQlEZWEgU2VjdXJpdHkKLTAwMTUyMiAgICAgKGJhc2UgMTYpCQlEZWEgU2VjdXJpdHkKLQkJCQlWaWEgTWFnZW50YSA5Ci0JCQkJTWFzc2EgTVMgNTQxMDAKLQkJCQlJVEFMWQotCi0wMC0xNS0yMyAgIChoZXgpCQlNZXRlb3IgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMTUyMyAgICAgKGJhc2UgMTYpCQlNZXRlb3IgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQkyMjYxNCA2NnRoIEF2ZW51ZSBTb3V0aAotCQkJCUtlbnQgV0EgOTgwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTI0ICAgKGhleCkJCU51bWF0aWNzLCBJbmMuCi0wMDE1MjQgICAgIChiYXNlIDE2KQkJTnVtYXRpY3MsIEluYy4KLQkJCQk0NjI4MCBEeWxhbiBEci4KLQkJCQlOb3ZpIE1pY2hpZ2FuIDQ4Mzc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0yNSAgIChoZXgpCQlDaGFtYmVybGFpbiBBY2Nlc3MgU29sdXRpb25zCi0wMDE1MjUgICAgIChiYXNlIDE2KQkJQ2hhbWJlcmxhaW4gQWNjZXNzIFNvbHV0aW9ucwotCQkJCTkxNjAgRS4gQmFoaWEgRHIuCi0JCQkJU2NvdHRzZGFsZSBBWiA4NTI2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMjYgICAoaGV4KQkJUmVtb3RlIFRlY2hub2xvZ2llcyBJbmMKLTAwMTUyNiAgICAgKGJhc2UgMTYpCQlSZW1vdGUgVGVjaG5vbG9naWVzIEluYwotCQkJCTc2NTEgQW5hZ3JhbSBEcml2ZQotCQkJCUVkZW4gUHJhaXJpZSBNTiA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMjcgICAoaGV4KQkJQmFsYm9hIEluc3RydW1lbnRzCi0wMDE1MjcgICAgIChiYXNlIDE2KQkJQmFsYm9hIEluc3RydW1lbnRzCi0JCQkJMTM4MiBCZWxsIEF2ZQotCQkJCVR1c3RpbiBDQSA5Mjc4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMjggICAoaGV4KQkJQmVhY29uIE1lZGljYWwgUHJvZHVjdHMgTExDIGQuYi5hLiBCZWFjb25NZWRhZXMKLTAwMTUyOCAgICAgKGJhc2UgMTYpCQlCZWFjb24gTWVkaWNhbCBQcm9kdWN0cyBMTEMgZC5iLmEuIEJlYWNvbk1lZGFlcwotCQkJCTE0NDA4IFcgMTA1VEggU1QKLQkJCQlMRU5FWEEgS1MgNjYyMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTI5ICAgKGhleCkJCU4zIENvcnBvcmF0aW9uCi0wMDE1MjkgICAgIChiYXNlIDE2KQkJTjMgQ29ycG9yYXRpb24KLQkJCQkjNDAyIEd3YW5nTXllb25nIFRlY2hubyBUb3duCi0JCQkJNjI2LTMgQ2x1bHNhbiAxLURvbmcsIEd3YW5nTXllb25nLUNpdHkKLQkJCQlHeWVvbmdHaS1EbyAgNDIzLTAzMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0yQSAgIChoZXgpCQlOb2tpYSBHbWJICi0wMDE1MkEgICAgIChiYXNlIDE2KQkJTm9raWEgR21iSAotCQkJCVJlbnNpbmdzdHIuIDE1Ci0JCQkJQm9jaHVtIE5SVyA0NDgwNwotCQkJCUdFUk1BTlkKLQotMDAtMTUtMkIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNTJCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMkMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNTJDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtMkQgICAoaGV4KQkJVGVuWCBOZXR3b3JrcywgTExDCi0wMDE1MkQgICAgIChiYXNlIDE2KQkJVGVuWCBOZXR3b3JrcywgTExDCi0JCQkJNDg1NSBXaWxleSBQb3N0IFdheQotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MTE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0yRSAgIChoZXgpCQlQYWNrZXRIb3AsIEluYy4KLTAwMTUyRSAgICAgKGJhc2UgMTYpCQlQYWNrZXRIb3AsIEluYy4KLQkJCQkxMzAxIFNob3Jld2F5IFJvYWQKLQkJCQlTdWl0ZSAyMDAKLQkJCQlCZWxtb250IENhbGlmb3JuaWEgOTQwMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTJGICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE1MkYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0zMCAgIChoZXgpCQlCdXMtVGVjaCwgSW5jLgotMDAxNTMwICAgICAoYmFzZSAxNikJCUJ1cy1UZWNoLCBJbmMuCi0JCQkJMTI5IE1pZGRsZXNleCBUdXJucGlrZQotCQkJCUJ1cmxpbmd0b24gTWEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTMxICAgKGhleCkJCUtPQ09NCi0wMDE1MzEgICAgIChiYXNlIDE2KQkJS09DT00KLQkJCQk1RiwgS09DT00gQmxkZy4sIDI2MC03Ci0JCQkJWXVtY2hhbmctRG9uZywgS2FuZ3Nlby1HdQotCQkJCVNFT1VMICAxNTctMDQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTMyICAgKGhleCkJCUNvbnN1bWVyIFRlY2hub2xvZ2llcyBHcm91cCwgTExDCi0wMDE1MzIgICAgIChiYXNlIDE2KQkJQ29uc3VtZXIgVGVjaG5vbG9naWVzIEdyb3VwLCBMTEMKLQkJCQk4MDEgQnJvb2tob2xsb3cKLQkJCQlFZmxhbmQgTkMgMjcyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTMzICAgKGhleCkJCU5BREFNLkNPLixMVEQKLTAwMTUzMyAgICAgKGJhc2UgMTYpCQlOQURBTS5DTy4sTFRECi0JCQkJIzkxLTMgV2FuZ3JpbS1MaQotCQkJCUJvbmdkYW0tRXVwCi0JCQkJSHdhc2VvbmcgR3llb25nZ2kgNDQ1LTg5NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0zNCAgIChoZXgpCQlBIEJFTFRSw4PigJxOSUNBLCBDb21wYW5oaWEgZGUgQ29tdW5pY2HDg8Knw4PCtWVzLCBMZGEKLTAwMTUzNCAgICAgKGJhc2UgMTYpCQlBIEJFTFRSw4PigJxOSUNBLCBDb21wYW5oaWEgZGUgQ29tdW5pY2HDg8Knw4PCtWVzLCBMZGEKLQkJCQlSLiBEci4gSm9zw4PCqSBCYXB0aXN0YSBkZSBTb3VzYSwgMjcKLQkJCQlMaXNib24gIDE1NDktMDAyIExpcwotCQkJCVBPUlRVR0FMCi0KLTAwLTE1LTM1ICAgKGhleCkJCU9URSBTcGEKLTAwMTUzNSAgICAgKGJhc2UgMTYpCQlPVEUgU3BhCi0JCQkJdmlhIEJhcnNhbnRpIDgKLQkJCQlGbG9yZW5jZSBGSSA1MDEyNwotCQkJCUlUQUxZCi0KLTAwLTE1LTM2ICAgKGhleCkJCVBvd2VydGVjaCBjby4sTHRkCi0wMDE1MzYgICAgIChiYXNlIDE2KQkJUG93ZXJ0ZWNoIGNvLixMdGQKLQkJCQkjNzA1LCBkb25neW91bmcgVmVudHVyZXN0ZWwsIDE5OS0zMgotCQkJCUFueWFuZzctZG9uZywgTWFuYW4tZ3UKLQkJCQlBbnlhbmcgQ2l0eSBLeW91bmdraS1kbyA0MzAtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTM3ICAgKGhleCkJCVZlbnR1cyBOZXR3b3JrcwotMDAxNTM3ICAgICAoYmFzZSAxNikJCVZlbnR1cyBOZXR3b3JrcwotCQkJCTgwMCBDb25uZWN0aWN1dCBBdmUKLQkJCQkxc3QgZmxvb3Igd2VzdAotCQkJCU5vcndhbGsgQ1QgMDY4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTM4ICAgKGhleCkJCVJGSUQsIEluYy4KLTAwMTUzOCAgICAgKGJhc2UgMTYpCQlSRklELCBJbmMuCi0JCQkJMTQxMDAgRWFzdCBKZXdlbGwgQXZlLgotCQkJCVN1aXRlIDEyCi0JCQkJQXVyb3JhIENPIDgwMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS0zOSAgIChoZXgpCQlUZWNobm9kcml2ZSBTUkwKLTAwMTUzOSAgICAgKGJhc2UgMTYpCQlUZWNobm9kcml2ZSBTUkwKLQkJCQlWaWEgTGVvbmFyZG8gZGEgVmluY2kgMTYyCi0JCQkJVHJlenphbm8gc3VsIE5hdmlnbGlvIE1pbGFubyAyMDA5MAotCQkJCUlUQUxZCi0KLTAwLTE1LTNBICAgKGhleCkJCVNoZW56aGVuIFN5c2NhbiBUZWNobm9sb2d5IENvLixMdGQuCi0wMDE1M0EgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU3lzY2FuIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQkxM0YsIE9seW1waWMgUGxhemEsCi0JCQkJU2hhbmcgYmFvIFJvYWQsIEZ1dGlhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDM0Ci0JCQkJQ0hJTkEKLQotMDAtMTUtM0IgICAoaGV4KQkJRU1IIG1ldGVyaW5nIEdtYkggJiBDby4gS0cKLTAwMTUzQiAgICAgKGJhc2UgMTYpCQlFTUggbWV0ZXJpbmcgR21iSCAmIENvLiBLRwotCQkJCVN1ZWRyaW5nIDUKLQkJCQlXaXR0ZW5idXJnIE1lY2tsZW5idXJnLVZvcnBvbW1lcm4gMTkyNDMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTNDICAgKGhleCkJCUtwcm90ZWNoIENvLiwgTHRkLgotMDAxNTNDICAgICAoYmFzZSAxNikJCUtwcm90ZWNoIENvLiwgTHRkLgotCQkJCTJuZCBGbG9vciwgIyAyMDIsIE15b3VuZy1qaSBlLVNwYWNlIElJCi0JCQkJMjE4LCBBbi15YW5nIDcgRG9uZywgTWFuLWFuIEd1LAotCQkJCUFuLXlhbmcgQ2l0eSBHeWVvbmctZ2kgRG8gNDMwLTgxNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0zRCAgIChoZXgpCQlFTElNIFBST0RVQ1QgQ08uCi0wMDE1M0QgICAgIChiYXNlIDE2KQkJRUxJTSBQUk9EVUNUIENPLgotCQkJCTYwMi0yIEdBWUFORyBURUNITk8gVE9XTiwgR0FZQU5HLCAzLURPTkcKLQkJCQlLQU5HU0VPLUdVIFNFT1VMIEtPUkVBCi0JCQkJU0VPVUwgMTU3LTc5MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS0zRSAgIChoZXgpCQlRLU1hdGljIFN3ZWRlbiBBQgotMDAxNTNFICAgICAoYmFzZSAxNikJCVEtTWF0aWMgU3dlZGVuIEFCCi0JCQkJTmVvbmdhdGFuIDgKLQkJCQlNb2xuZGFsICA0MzEgNTMKLQkJCQlTV0VERU4KLQotMDAtMTUtM0YgICAoaGV4KQkJQWxjYXRlbCBBbGVuaWEgU3BhY2UgSXRhbGlhCi0wMDE1M0YgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBBbGVuaWEgU3BhY2UgSXRhbGlhCi0JCQkJU3RyYWRhIFBhZGFuYSBTdXBlcmlvcmUgMjkwCi0JCQkJVmltb2Ryb25lIE1JIDIwMDkwCi0JCQkJSVRBTFkKLQotMDAtMTUtNDAgICAoaGV4KQkJTm9ydGVsCi0wMDE1NDAgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkLCBTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTUtNDEgICAoaGV4KQkJU3RyYXRhTGlnaHQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMTU0MSAgICAgKGJhc2UgMTYpCQlTdHJhdGFMaWdodCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTIxMDUgUy4gQmFzY29tIEF2ZW51ZQotCQkJCVN1aXRlIDMwMAotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS00MiAgIChoZXgpCQlNSUNST0hBUkQgUy5SLkwuCi0wMDE1NDIgICAgIChiYXNlIDE2KQkJTUlDUk9IQVJEIFMuUi5MLgotCQkJCVZpYSBQcmltbyBNYWdnaW8gMzYKLQkJCQlTYW4gVml0dG9yZSBPbG9uYSBNaWxhbm8gMjAwMjgKLQkJCQlJVEFMWQotCi0wMC0xNS00MyAgIChoZXgpCQlBYmVyZGVlbiBUZXN0IENlbnRlcgotMDAxNTQzICAgICAoYmFzZSAxNikJCUFiZXJkZWVuIFRlc3QgQ2VudGVyCi0JCQkJNDAwIENvbGxlcmFuIFJvYWQKLQkJCQlCbGRnLiAzNTAKLQkJCQlBYmVyZGVlbiBQcm92aW5nIEdyb3VuZHMgTUQgMjEwMDUtNTA1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNDQgICAoaGV4KQkJY29NLnMuYS50LiBBRwotMDAxNTQ0ICAgICAoYmFzZSAxNikJCWNvTS5zLmEudC4gQUcKLQkJCQlCZXNzZWxzdHIuIDMKLQkJCQlNYW5uaGVpbSAgRC02ODIxOQotCQkJCUdFUk1BTlkKLQotMDAtMTUtNDUgICAoaGV4KQkJU0VFQ09ERSBDby4sIEx0ZC4KLTAwMTU0NSAgICAgKGJhc2UgMTYpCQlTRUVDT0RFIENvLiwgTHRkLgotCQkJCTR0aCBGbG9vciwgQW1pbiBCbGRnLiwgMTEwLTEsIFlhbmdqYWVkb25nLCBTZW9jaG9ndQotCQkJCVNlb3VsICAxMzctODkxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTQ2ICAgKGhleCkJCUlURyBXb3JsZHdpZGUgU2RuIEJoZAotMDAxNTQ2ICAgICAoYmFzZSAxNikJCUlURyBXb3JsZHdpZGUgU2RuIEJoZAotCQkJCTIsIEphbGFuIEFzdGFrYVU4LzgzCi0JCQkJU2Vrc3llbiBVOCwgQnVraXQgSmVsdXRvbmcKLQkJCQlTaGFoIEFsYW0gU2VsYW5nb3IgRGFydWwgRWhzYW4gNDAxNTAKLQkJCQlNQUxBWVNJQQotCi0wMC0xNS00NyAgIChoZXgpCQlBaVplbiBTb2x1dGlvbnMgSW5jLgotMDAxNTQ3ICAgICAoYmFzZSAxNikJCUFpWmVuIFNvbHV0aW9ucyBJbmMuCi0JCQkJMTBGLTEsIE5vLjI5LCBQdWRpbmcgUmQuCi0JCQkJSHNpbmNodSBIc2luY2h1IENvdW50eSAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTQ4ICAgKGhleCkJCUNVQkUgVEVDSE5PTE9HSUVTCi0wMDE1NDggICAgIChiYXNlIDE2KQkJQ1VCRSBURUNITk9MT0dJRVMKLQkJCQkxMCwgcnVlIGRlcyBSb3Npw6lyaXN0ZXMKLQkJCQlDSEFNUEFHTkUgQVUgTU9OVCBEJ09SIEZSQU5DRSA2OTQxMAotCQkJCUZSQU5DRQotCi0wMC0xNS00OSAgIChoZXgpCQlEaXh0YWwgQmlvbWVkaWNhIEluZC4gQ29tLiBMdGRhCi0wMDE1NDkgICAgIChiYXNlIDE2KQkJRGl4dGFsIEJpb21lZGljYSBJbmQuIENvbS4gTHRkYQotCQkJCVIuIEVuZy4gRnJhbmNpc2NvIFBpdHRhIEJyaXRvLCA3MDMKLQkJCQlTYW8gUGF1bG8gU1AgMDQ3NTMtMDgwCi0JCQkJQlJBWklMCi0KLTAwLTE1LTRBICAgKGhleCkJCVdBTlNISUggRUxFQ1RST05JQyBDTy4sIExURAotMDAxNTRBICAgICAoYmFzZSAxNikJCVdBTlNISUggRUxFQ1RST05JQyBDTy4sIExURAotCQkJCTNGIDcyLCBXVSBLT05HIDZ0aCBSRC4sCi0JCQkJV1UgS1UgSU5EVVNUUklBTCBESVNUUklDVCwKLQkJCQlUQUlQRUkgSFNJRU4gVEFJV0FOIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtNEIgICAoaGV4KQkJV29uZGUgUHJvdWQgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAxNTRCICAgICAoYmFzZSAxNikJCVdvbmRlIFByb3VkIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQkyMUYuLCBOby4xMDAsIFNlYy4xLCBTaGludGFpIDV0aCBSZAotCQkJCVNpamhpaCBjaXR5IFRhaXBlaSBDb3VudHkgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS00QyAgIChoZXgpCQlTYXVuZGVycyBFbGVjdHJvbmljcwotMDAxNTRDICAgICAoYmFzZSAxNikJCVNhdW5kZXJzIEVsZWN0cm9uaWNzCi0JCQkJODIgSW5kdXN0cmlhbCBQYXJrIFJkCi0JCQkJU2FjbyBNRSAwNDA3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNEQgICAoaGV4KQkJTmV0cm9ub21lIFN5c3RlbXMsIEluYy4KLTAwMTU0RCAgICAgKGJhc2UgMTYpCQlOZXRyb25vbWUgU3lzdGVtcywgSW5jLgotCQkJCTE0NCBFbWVyeXZpbGxlIERyaXZlCi0JCQkJU3VpdGUgMjMwCi0JCQkJQ3JhbmJlcnJ5IFR3cC4gUEEgMTYwNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTRFICAgKGhleCkJCUlFQwotMDAxNTRFICAgICAoYmFzZSAxNikJCUlFQwotCQkJCTMsIHJ1ZSBkZSBWYXJlbWLDqQotCQkJCVAuTy4gQm94IDEzMQotCQkJCUNIIC0gMTIxMSBHRU5FVkEgMjAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTRGICAgKGhleCkJCW9uZSBSRiBUZWNobm9sb2d5Ci0wMDE1NEYgICAgIChiYXNlIDE2KQkJb25lIFJGIFRlY2hub2xvZ3kKLQkJCQkxMzYwIFJvdXRlIGRlcyBEb2xpbmVzCi0JCQkJQmF0IEI0IExlcyBDYXJkb3VsaW5lcwotCQkJCVZhbGJvbm5lIFNvcGhpYS1BbnRpcG9saXMgUEFDQSAwNjU2MAotCQkJCUZSQU5DRQotCi0wMC0xNS01MCAgIChoZXgpCQlOaXRzIFRlY2hub2xvZ3kgSW5jCi0wMDE1NTAgICAgIChiYXNlIDE2KQkJTml0cyBUZWNobm9sb2d5IEluYwotCQkJCTJGTC4gTm8uIDggQWxsZXkgMTYsIExhbmUgMjM1LCBCYXVjaGlhdSBSZC4sCi0JCQkJU2hpbmRpYW4gQ2l0eSBUYWlwZWkgSHNpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS01MSAgIChoZXgpCQlSYWRpb1B1bHNlIEluYy4KLTAwMTU1MSAgICAgKGJhc2UgMTYpCQlSYWRpb1B1bHNlIEluYy4KLQkJCQkybmQgZmwuIEhhbnMgQi9ELCAxMTEtNTUKLQkJCQlTZW9uZ25hZS1kb25nLCBHYW5nZG9uZy1ndQotCQkJCVNlb3VsICAxMzQtODgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTUyICAgKGhleCkJCVdpLUdlYXIgSW5jLgotMDAxNTUyICAgICAoYmFzZSAxNikJCVdpLUdlYXIgSW5jLgotCQkJCTM0MCBDaHVyY2ggU3RyZWV0Ci0JCQkJU3VpdGUgMTAKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS01MyAgIChoZXgpCQlDeXR5YyBDb3Jwb3JhdGlvbgotMDAxNTUzICAgICAoYmFzZSAxNikJCUN5dHljIENvcnBvcmF0aW9uCi0JCQkJMjUwIENhbXB1cyBEaXZlCi0JCQkJTWFybGJvcm91Z2ggTUEgMDE3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTU0ICAgKGhleCkJCUF0YWx1bSBXaXJlbGVzcyBTLkEuCi0wMDE1NTQgICAgIChiYXNlIDE2KQkJQXRhbHVtIFdpcmVsZXNzIFMuQS4KLQkJCQlDLyBPcmVsbGFuYSA1LCAxwrogSQotCQkJCU1hZHJpZCAgMjgwMDQKLQkJCQlTUEFJTgotCi0wMC0xNS01NSAgIChoZXgpCQlERk0gR21iSAotMDAxNTU1ICAgICAoYmFzZSAxNikJCURGTSBHbWJICi0JCQkJTGFocmVyIFN0cmFzc2UgNgotCQkJCUxhaHIgQmFkZW4tV3VlcnR0ZW1iZXJnIDc3OTMzCi0JCQkJR0VSTUFOWQotCi0wMC0xNS01NiAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0wMDE1NTYgICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCUxlIFBvbm5hbnQgZGUgUGFyaXMKLQkJCQkyNyBSdWUgTGVibGFuYwotCQkJCUNFREVYIFBhcmlzIDc1NTEyCi0JCQkJRlJBTkNFCi0KLTAwLTE1LTU3ICAgKGhleCkJCU9saXZldHRpCi0wMDE1NTcgICAgIChiYXNlIDE2KQkJT2xpdmV0dGkKLQkJCQlWaWEgSmVydmlzIDc3Ci0JCQkJSXZyZWEgVG9yaW5vIDEwMDE1Ci0JCQkJSVRBTFkKLQotMDAtMTUtNTggICAoaGV4KQkJRk9YQ09OTgotMDAxNTU4ICAgICAoYmFzZSAxNikJCUZPWENPTk4KLQkJCQlOby4yLDJuZCBEb25nSHVhbiBSb2FkLDEwdGggWW91U29uZwotCQkJCUluZHVzdHJpYWwgRGlzdHJpY3QsTG9uZ0h1YSBTdHJlZXQsQmFvJ2FuLAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMDkKLQkJCQlDSElOQQotCi0wMC0xNS01OSAgIChoZXgpCQlTZWN1cmFwbGFuZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTU1OSAgICAgKGJhc2UgMTYpCQlTZWN1cmFwbGFuZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMDgwMCBOLiBNYXZpbmVlIERyLgotCQkJCVR1Y3NvbiBBWiA4NTczNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNUEgICAoaGV4KQkJREFJTklQUE9OIFBIQVJNQUNFVVRJQ0FMIENPLiwgTFRELgotMDAxNTVBICAgICAoYmFzZSAxNikJCURBSU5JUFBPTiBQSEFSTUFDRVVUSUNBTCBDTy4sIExURC4KLQkJCQkyLTYtOCwgRE9TSE9NQUNISSwgQ0hVTy1LVQotCQkJCU9TQUtBIENJVFkgT1NBS0EgUFJFRi4gNTQxLTg1MjQKLQkJCQlKQVBBTgotCi0wMC0xNS01QiAgIChoZXgpCQlTYW1wbyBDb3Jwb3JhdGlvbgotMDAxNTVCICAgICAoYmFzZSAxNikJCVNhbXBvIENvcnBvcmF0aW9uCi0JCQkJMjE2IENodW5nIFNoYW4gUm9hZCwKLQkJCQlTZWMuIDEsIFBhbmNoaWFvIENpdHkKLQkJCQlUYWlwZWkgSHNpZW4gMjIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS01QyAgIChoZXgpCQlEcmVzc2VyIFdheW5lCi0wMDE1NUMgICAgIChiYXNlIDE2KQkJRHJlc3NlciBXYXluZQotCQkJCTM4MTQgSmFycmV0dCBXYXkKLQkJCQlBdXN0aW4gVGV4YXMgNzg3MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTVEICAgKGhleCkJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotMDAxNTVEICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotCQkJCU9uZSBNaWNyb3NvZnQgV2F5Ci0JCQkJUmVkbW9uZCBXQSA5ODA1Mi04MzAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS01RSAgIChoZXgpCQlNb3JnYW4gU3RhbmxleQotMDAxNTVFICAgICAoYmFzZSAxNikJCU1vcmdhbiBTdGFubGV5Ci0JCQkJNzUwIDd0aCBBdmVudWUKLQkJCQlOZXcgWW9yayBOWSAxMDAxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNUYgICAoaGV4KQkJR3JlZW5QZWFrIFRlY2hub2xvZ2llcwotMDAxNTVGICAgICAoYmFzZSAxNikJCUdyZWVuUGVhayBUZWNobm9sb2dpZXMKLQkJCQlMaW5kZXN0cmFhdCAxOQotCQkJCVplbGUgIDkyNDAKLQkJCQlCRUxHSVVNCi0KLTAwLTE1LTYwICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDE1NjAgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OSBTb3V0aAotCQkJCU1TMDcwNDA1Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNjEgICAoaGV4KQkJSkpQbHVzIENvcnBvcmF0aW9uCi0wMDE1NjEgICAgIChiYXNlIDE2KQkJSkpQbHVzIENvcnBvcmF0aW9uCi0JCQkJNjc4IE1hc3NhY2h1c2V0dHMgQXZlCi0JCQkJU3VpdGUgNTAzCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1NjIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1NjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02NCAgIChoZXgpCQlCRUhSSU5HRVIgU3BlemllbGxlIFN0dWRpb3RlY2huaWsgR21iSAotMDAxNTY0ICAgICAoYmFzZSAxNikJCUJFSFJJTkdFUiBTcGV6aWVsbGUgU3R1ZGlvdGVjaG5payBHbWJICi0JCQkJSGFubnMtTWFydGluLVNjaGxleWVyLVN0ci4gMzYtMzgKLQkJCQlXaWxsaWNoICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTY1ICAgKGhleCkJCVhJQU1FTiBZRUFMSU5LIE5FVFdPUksgVEVDSE5PTE9HWSBDTy4sTFRECi0wMDE1NjUgICAgIChiYXNlIDE2KQkJWElBTUVOIFlFQUxJTksgTkVUV09SSyBURUNITk9MT0dZIENPLixMVEQKLQkJCQk3RiBIdWFsaWFuIEVsZWN0cm9uaWMgQkxERy41ODAgSmlhaGUgUm9hZCxYaWFtZW4gQ2hpbmEKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLTAwLTE1LTY2ICAgKGhleCkJCUEtRmlyc3QgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMTU2NiAgICAgKGJhc2UgMTYpCQlBLUZpcnN0IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNUYsIE5vLiAxMTEtMiwgU2hpbi1UZWggUmQuLAotCQkJCVNhbi1DaHVuZyBDaXR5IFRhaXBlaSBTaGllbiAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTY3ICAgKGhleCkJCVJBRFdJTiBJbmMuCi0wMDE1NjcgICAgIChiYXNlIDE2KQkJUkFEV0lOIEluYy4KLQkJCQk5MDAgQ29ycG9yYXRlIERyaXZlCi0JCQkJTWFod2FoIE5KIDA3NDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02OCAgIChoZXgpCQlEaWxpdGhpdW0gTmV0d29ya3MKLTAwMTU2OCAgICAgKGJhc2UgMTYpCQlEaWxpdGhpdW0gTmV0d29ya3MKLQkJCQk1NDAxIE9sZCBSZWR3b29kIEh3eQotCQkJCVBldGFsdW1hIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02OSAgIChoZXgpCQlQRUNPIElJLCBJbmMuCi0wMDE1NjkgICAgIChiYXNlIDE2KQkJUEVDTyBJSSwgSW5jLgotCQkJCTcwNjAgSHVudGxleSBSb2FkCi0JCQkJQ29sdW1idXMgT0ggNDMyMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTZBICAgKGhleCkJCURHMkwgVGVjaG5vbG9naWVzIFB2dC4gTHRkLgotMDAxNTZBICAgICAoYmFzZSAxNikJCURHMkwgVGVjaG5vbG9naWVzIFB2dC4gTHRkLgotCQkJCUFNTCBDZW50ZXIgMSwgR25kLiBGbG9vciwgOCBNYWhhbCBJbmRsLiBFc3QuCi0JCQkJT2ZmLiBNYWhha2FsaSBDYXZlcyBSb2FkLCBBbmRoZXJpIEUKLQkJCQlNdW1iYWkgTWFoYXJhc2h0cmEgNDAwMDkzCi0JCQkJSU5ESUEKLQotMDAtMTUtNkIgICAoaGV4KQkJUGVyZmlzYW5zIE5ldHdvcmtzIENvcnAuCi0wMDE1NkIgICAgIChiYXNlIDE2KQkJUGVyZmlzYW5zIE5ldHdvcmtzIENvcnAuCi0JCQkJNDExOCAxNHRoIEF2ZW51ZQotCQkJCVVuaXQgNAotCQkJCU1hcmtoYW0gT250YXJpbyBMM1IgMEozCi0JCQkJQ0FOQURBCi0KLTAwLTE1LTZDICAgKGhleCkJCVNBTkUgU1lTVEVNIENPLiwgTFRECi0wMDE1NkMgICAgIChiYXNlIDE2KQkJU0FORSBTWVNURU0gQ08uLCBMVEQKLQkJCQlQaWthLUJ1aWxkaW5nIDRGICM4OTQgSG9neWUtRG9uZyBEb25nYW4tR1UKLQkJCQlBbnlhbmctc2kgS3l1bmdnaS1kbyA0MzEtODM2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTZEICAgKGhleCkJCVViaXF1aXRpIE5ldHdvcmtzIEluYy4KLTAwMTU2RCAgICAgKGJhc2UgMTYpCQlVYmlxdWl0aSBOZXR3b3JrcyBJbmMuCi0JCQkJNDk1IE1vbnRhZ3VlIEV4cHd5LgotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS02RSAgIChoZXgpCQlBLiBXLiBDb21tdW5pY2F0aW9uIFN5c3RlbXMgTHRkCi0wMDE1NkUgICAgIChiYXNlIDE2KQkJQS4gVy4gQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEx0ZAotCQkJCUNyb29rIEJhcm4KLQkJCQlUaGUgQ3Jvb2ssIFJvd2VsdG93bgotCQkJCUNhcmxpc2xlIEN1bWJyaWEgQ0E2IDZMSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LTZGICAgKGhleCkJCVhpcmFuZXQgQ29tbXVuaWNhdGlvbnMgR21iSAotMDAxNTZGICAgICAoYmFzZSAxNikJCVhpcmFuZXQgQ29tbXVuaWNhdGlvbnMgR21iSAotCQkJCUJlcnRvbHQtQnJlY2h0LUFsbGVlIDI0Ci0JCQkJRHJlc2RlbiBTYXhvbnkgMDEzMDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LTcwICAgKGhleCkJCVN5bWJvbCBUZWNobm9sb2dpZXNXaG9sbHkgb3duZWQgU3Vic2lkaWFyeSBvZiBNb3Rvcm9sYQotMDAxNTcwICAgICAoYmFzZSAxNikJCVN5bWJvbCBUZWNobm9sb2dpZXNXaG9sbHkgb3duZWQgU3Vic2lkaWFyeSBvZiBNb3Rvcm9sYQotCQkJCU9uZSBNb3Rvcm9sYSBQbGF6YQotCQkJCUhvbHRzdmlsbGUgTlkgMTE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTcxICAgKGhleCkJCU5vbGFuIFN5c3RlbXMKLTAwMTU3MSAgICAgKGJhc2UgMTYpCQlOb2xhbiBTeXN0ZW1zCi0JCQkJMTU5NSBDbGVvIFNwcmluZ3MgRHIuCi0JCQkJU2FuIEpvc2UgQ2EuIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS03MiAgIChoZXgpCQlSZWQtTGVtb24KLTAwMTU3MiAgICAgKGJhc2UgMTYpCQlSZWQtTGVtb24KLQkJCQlVbml0IDQsIDkvRiwgUGFyYW1vdW50IEJ1aWxkaW5nCi0JCQkJTm8uIDEyLCBLYSBZaXAgU3RyZWV0Ci0JCQkJQ2hhaSBXYW4gIAotCQkJCUhPTkcgS09ORwotCi0wMC0xNS03MyAgIChoZXgpCQlOZXdTb2Z0ICBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDE1NzMgICAgIChiYXNlIDE2KQkJTmV3U29mdCAgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTNGLCAxOS0zLCBTYW5DaG9uZyBSRCwgTmFuS2FuZywKLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtNzQgICAoaGV4KQkJSG9yaXpvbiBTZW1pY29uZHVjdG9ycyBMdGQuCi0wMDE1NzQgICAgIChiYXNlIDE2KQkJSG9yaXpvbiBTZW1pY29uZHVjdG9ycyBMdGQuCi0JCQkJOSBIYW1lbm9maW0gU3QuCi0JCQkJUE9CIDIxOTIKLQkJCQlIZXJ6bGl5YSAgNDYxMjAKLQkJCQlJU1JBRUwKLQotMDAtMTUtNzUgICAoaGV4KQkJTmV2aXMgTmV0d29ya3MgSW5jLgotMDAxNTc1ICAgICAoYmFzZSAxNikJCU5ldmlzIE5ldHdvcmtzIEluYy4KLQkJCQkzOTQ1IEZyZWVkb20gQ2lyY2xlCi0JCQkJU3VpdGUgNzIwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LTc2ICAgKGhleCkJCXNjaWwgYW5pbWFsIGNhcmUgY29tcGFueSBHbWJICi0wMDE1NzYgICAgIChiYXNlIDE2KQkJc2NpbCBhbmltYWwgY2FyZSBjb21wYW55IEdtYkgKLQkJCQlEaW5hLVdlaXNzbWFubi1BbGxlZSA2Ci0JCQkJVmllcm5oZWltIEhlc3NlbiA2ODUxOQotCQkJCUdFUk1BTlkKLQotMDAtMTUtNzcgICAoaGV4KQkJQWxsaWVkIFRlbGVzaXMKLTAwMTU3NyAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcwotCQkJCTMyMDAgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtNzggICAoaGV4KQkJQXVkaW8gLyBWaWRlbyBJbm5vdmF0aW9ucwotMDAxNTc4ICAgICAoYmFzZSAxNikJCUF1ZGlvIC8gVmlkZW8gSW5ub3ZhdGlvbnMKLQkJCQlBMy0zMzc1IE5vcnRoIFNlcnZpY2UgUm9hZAotCQkJCUJ1cmxpbmd0b24gT04gTDdOIDNHMgotCQkJCUNBTkFEQQotCi0wMC0xNS03OSAgIChoZXgpCQlMdW5hdG9uZSBJbmR1c3RyaWVsbGUgRWxla3Ryb25payBHbWJICi0wMDE1NzkgICAgIChiYXNlIDE2KQkJTHVuYXRvbmUgSW5kdXN0cmllbGxlIEVsZWt0cm9uaWsgR21iSAotCQkJCVJlbm5iYWhud2VnIDU1Ci0JCQkJV2llbiAgMTIyMAotCQkJCUFVU1RSSUEKLQotMDAtMTUtN0EgICAoaGV4KQkJVGVsZWZpbiBTLnAuQS4KLTAwMTU3QSAgICAgKGJhc2UgMTYpCQlUZWxlZmluIFMucC5BLgotCQkJCVZpYSBBbGJlcmUgODcvQQotCQkJCVZlcm9uYSBWUiAzNzEzOAotCQkJCUlUQUxZCi0KLTAwLTE1LTdCICAgKGhleCkJCUxldXplIGVsZWN0cm9uaWMgR21iSCArIENvLiBLRwotMDAxNTdCICAgICAoYmFzZSAxNikJCUxldXplIGVsZWN0cm9uaWMgR21iSCArIENvLiBLRwotCQkJCUluIGRlciBCcmFpa2UgMQotCQkJCU93ZW4gQmFkZW4tV8O8cnR0ZW1iZXJnIDczMjc3Ci0JCQkJR0VSTUFOWQotCi0wMC0xNS03QyAgIChoZXgpCQlEYXZlIE5ldHdvcmtzLCBJbmMuCi0wMDE1N0MgICAgIChiYXNlIDE2KQkJRGF2ZSBOZXR3b3JrcywgSW5jLgotCQkJCTIxNTEgTyd0b29sIEF2ZW51ZQotCQkJCVN1aXRlIEgKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtN0QgICAoaGV4KQkJUE9TREFUQSBDTy4sIExURC4KLTAwMTU3RCAgICAgKGJhc2UgMTYpCQlQT1NEQVRBIENPLiwgTFRELgotCQkJCTI3Ni0yLFNlb2h5ZW9uLWRvbmcsQnVuZGFuZy1ndSwKLQkJCQlTZW9uZ25hbS1DaXR5IEt5ZW9uZ2dpLURvIDQ2My03NzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtN0UgICAoaGV4KQkJV2VpZG38bGxlciBJbnRlcmZhY2UgR21iSCAmIENvLiBLRyAgIAotMDAxNTdFICAgICAoYmFzZSAxNikJCVdlaWRt/GxsZXIgSW50ZXJmYWNlIEdtYkggJiBDby4gS0cgICAKLQkJCQlLbGluZ2VuYmVyZ3N0cmHfZSAxNgotCQkJCURldG1vbGQgIDMyNzU4IAotCQkJCUdFUk1BTlkKLQotMDAtMTUtN0YgICAoaGV4KQkJQ2h1YW5HIEludGVybmF0aW9uYWwgSG9sZGluZyBDTy4sTFRELgotMDAxNTdGICAgICAoYmFzZSAxNikJCUNodWFuRyBJbnRlcm5hdGlvbmFsIEhvbGRpbmcgQ08uLExURC4KLQkJCQkxRiwgTk8uMTIsIEFsbGV5IDEsIExhbmUgMTI1LCBHdW9saWFuIFN0cmVldCA0TGlybiwgV3VoYW4gVmlsbGFnZQotCQkJCVRhb3l1YW4gTG9uZ3RhbiAzMjUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LTgwICAgKGhleCkJCVUtV0FZIENPUlBPUkFUSU9OCi0wMDE1ODAgICAgIChiYXNlIDE2KQkJVS1XQVkgQ09SUE9SQVRJT04KLQkJCQkzRi0yLCBOTy4gMTI1LCBMQU5FIDIzNSwgUEFPLUNISUFPCi0JCQkJSFNJTlRJRU4gQ0lUWSBUQUlQRUkgSFNJRU4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS04MSAgIChoZXgpCQlNQUtVUyBJbmMuCi0wMDE1ODEgICAgIChiYXNlIDE2KQkJTUFLVVMgSW5jLgotCQkJCTRGIERhZWRvIEJsZGcuIDc0OC0xNCBZZW9rc2FtLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAxMzUtMDgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTgyICAgKGhleCkJCVRWb25pY3MgTHRkCi0wMDE1ODIgICAgIChiYXNlIDE2KQkJVFZvbmljcyBMdGQKLQkJCQlQZW5vY2VkIFRlY2hub2xvZ3kgUGFyawotCQkJCVBlbmNvZWQgTWlkIEdsYW0gQ0YzNSA1SFoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNS04MyAgIChoZXgpCQlJVlQgY29ycG9yYXRpb24KLTAwMTU4MyAgICAgKGJhc2UgMTYpCQlJVlQgY29ycG9yYXRpb24KLQkJCQlTaGFuZ2RpIFhpbnhpIHJvYWQsIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0xNS04NCAgIChoZXgpCQlTY2hlbmNrIFByb2Nlc3MgR21iSAotMDAxNTg0ICAgICAoYmFzZSAxNikJCVNjaGVuY2sgUHJvY2VzcyBHbWJICi0JCQkJUGFsbGFzd2llc2Vuc3RyLiAxMDAKLQkJCQlEYXJtc3RhZHQgSGVzc2VuIDY0MjkzCi0JCQkJR0VSTUFOWQotCi0wMC0xNS04NSAgIChoZXgpCQlBb252aXNpb24gVGVjaG5vbG9weSBDb3JwLgotMDAxNTg1ICAgICAoYmFzZSAxNikJCUFvbnZpc2lvbiBUZWNobm9sb3B5IENvcnAuCi0JCQkJMkYsIE5vLiA1OCwgUGFyayAybmQgQXZlLiBTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1IDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtODYgICAoaGV4KQkJWGlhbWVuIE92ZXJzZWFzIENoaW5lc2UgRWxlY3Ryb25pYyBDby4sIEx0ZC4KLTAwMTU4NiAgICAgKGJhc2UgMTYpCQlYaWFtZW4gT3ZlcnNlYXMgQ2hpbmVzZSBFbGVjdHJvbmljIENvLiwgTHRkLgotCQkJCU5vLiAyMiwgSHVsaSBTdHJlZXQsCi0JCQkJSHVsaSBJbmR1c3RyaWFsIERpc3RyaWN0Ci0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi0wMC0xNS04NyAgIChoZXgpCQlUYWtlbmFrYSBTZWlzYWt1c2hvIENvLixMdGQKLTAwMTU4NyAgICAgKGJhc2UgMTYpCQlUYWtlbmFrYSBTZWlzYWt1c2hvIENvLixMdGQKLQkJCQkxNzggSElTSElFCi0JCQkJSElHQVNISS1PU0FLQSBDSVRZIE9TQUtBIDU3OC0wOTg0Ci0JCQkJSkFQQU4KLQotMDAtMTUtODggICAoaGV4KQkJQmFsZGEgU29sdXRpb24gTWFsYXlzaWEgU2RuIEJoZAotMDAxNTg4ICAgICAoYmFzZSAxNikJCUJhbGRhIFNvbHV0aW9uIE1hbGF5c2lhIFNkbiBCaGQKLQkJCQkzIEphbGFuIFphcmliIDYKLQkJCQlLYXdhc2FuIFBlcmluZHVzdHJpYW4gWmFyaWIKLQkJCQlMYWhhdCwgSXBvaCBQZXJhayAzMTUwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE1LTg5ICAgKGhleCkJCUQtTUFYIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxNTg5ICAgICAoYmFzZSAxNikJCUQtTUFYIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTdGLTYsTk8uMjYsTGlhbiBDaGVuZyBSRC4sQ2h1bmctSG8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS04QSAgIChoZXgpCQlTVVJFQ09NIFRlY2hub2xvZ3kgQ29ycC4KLTAwMTU4QSAgICAgKGJhc2UgMTYpCQlTVVJFQ09NIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk2RiwgTm8uIDEyNSwgU2VjLiAyLCBEYXR1bmcgUmQuCi0JCQkJU2hpanIgQ2l0eSwgVGFpcGVpIENvdW50eSAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS04QiAgIChoZXgpCQlQYXJrIEFpciBTeXN0ZW1zIEx0ZAotMDAxNThCICAgICAoYmFzZSAxNikJCVBhcmsgQWlyIFN5c3RlbXMgTHRkCi0JCQkJTm9ydGhmaWVsZHMKLQkJCQlNYXJrZXQgRGVlcGluZwotCQkJCVBldGVyYm9yb3VnaCAgUEU2IDhVRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LThDICAgKGhleCkJCUxpYWIgQXBTCi0wMDE1OEMgICAgIChiYXNlIDE2KQkJTGlhYiBBcFMKLQkJCQlPZXN0cmUgQWxsZSA2Ci0JCQkJU3RvZXZyaW5nICBESy05NTMwCi0JCQkJREVOTUFSSwotCi0wMC0xNS04RCAgIChoZXgpCQlKZW5uaWMgTHRkCi0wMDE1OEQgICAgIChiYXNlIDE2KQkJSmVubmljIEx0ZAotCQkJCUZ1cm5pdmFsIFN0cmVldAotCQkJCVNoZWZmaWVsZCBZb3Jrc2hpcmUgUzEgNFFUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTUtOEUgICAoaGV4KQkJUGx1c3Rlay5JTkMKLTAwMTU4RSAgICAgKGJhc2UgMTYpCQlQbHVzdGVrLklOQwotCQkJCTEzRi0xLE5vMyhCdWlsZGluZyBGKSBZdWFuIFF1IFN0cmVldAotCQkJCVRhaXBlaSBZdWFuIFF1IDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtOEYgICAoaGV4KQkJTlRUIEFkdmFuY2VkIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMTU4RiAgICAgKGJhc2UgMTYpCQlOVFQgQWR2YW5jZWQgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCVNoaW5qdWt1IE1pdHN1aSBCbGRnLiAyLTEtMSwgTmlzaGktc2hpbmp1a3UKLQkJCQlTaGluanVrdS1rdSBUb2t5byAxNjMtMDQzMQotCQkJCUpBUEFOCi0KLTAwLTE1LTkwICAgKGhleCkJCUhlY3Ryb25pYyBHbWJICi0wMDE1OTAgICAgIChiYXNlIDE2KQkJSGVjdHJvbmljIEdtYkgKLQkJCQlBbGxtZW5kc3RyYXNzZSAxNQotCQkJCUJvbm5kb3JmIEJhZGVuLVfDvHJ0dGVtYmVyZyA3OTg0OAotCQkJCUdFUk1BTlkKLQotMDAtMTUtOTEgICAoaGV4KQkJUkxXIEluYy4KLTAwMTU5MSAgICAgKGJhc2UgMTYpCQlSTFcgSW5jLgotCQkJCTIwMjkgQ2F0byBBdmUuCi0JCQkJU3RhdGUgQ29sbGVnZSBQQSAxNjgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtOTIgICAoaGV4KQkJRmFjb20gVUsgTHRkIChNZWxrc2hhbSkKLTAwMTU5MiAgICAgKGJhc2UgMTYpCQlGYWNvbSBVSyBMdGQgKE1lbGtzaGFtKQotCQkJCUxhbmNhc3RlciBIb3VzZQotCQkJCUJvd2VyaGlsbCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCU1lbGtzaGFtIFdpbHRzaGlyZSBTTjEwNEZCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTUtOTMgICAoaGV4KQkJVTRFQSBUZWNobm9sb2dpZXMgSW5jLgotMDAxNTkzICAgICAoYmFzZSAxNikJCVU0RUEgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk0ODg2MCBNaWxtb250IERyaXZlCi0JCQkJU3VpdGUxMDdDCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtOTQgICAoaGV4KQkJQklYT0xPTiBDTy4sTFRECi0wMDE1OTQgICAgIChiYXNlIDE2KQkJQklYT0xPTiBDTy4sTFRECi0JCQkJNTAyLTUwOCxEaWdpdGFsIEVtcGlyZSBCbGRnLgotCQkJCTk4MC0zIFllb25ndG9uZy1Eb25nCi0JCQkJWWVvbmd0b25nLUd1LFN1d29uIEd5ZW9uZ2dpLURvIDQ0My04MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtOTUgICAoaGV4KQkJUXVlc3RlciBUYW5nZW50IENvcnBvcmF0aW9uCi0wMDE1OTUgICAgIChiYXNlIDE2KQkJUXVlc3RlciBUYW5nZW50IENvcnBvcmF0aW9uCi0JCQkJMjAxIC0gOTg2NSBXZXN0IFNhYW5pY2ggUm9hZAotCQkJCVNpZG5leSBCQyBWOEwgNVk4Ci0JCQkJQ0FOQURBCi0KLTAwLTE1LTk2ICAgKGhleCkJCUFSUklTIEludGVybmF0aW9uYWwKLTAwMTU5NiAgICAgKGJhc2UgMTYpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS05NyAgIChoZXgpCQlBRVRBIEFVRElPIFNZU1RFTVMKLTAwMTU5NyAgICAgKGJhc2UgMTYpCQlBRVRBIEFVRElPIFNZU1RFTVMKLQkJCQkxOC0yMiwgYXZlbnVlIEVkb3VhcmQgSGVycmlvdAotCQkJCUtlcGxlciA0Ci0JCQkJTGUgUGxlc3NpcyBSb2JpbnNvbiAgOTIzNTAKLQkJCQlGUkFOQ0UKLQotMDAtMTUtOTggICAoaGV4KQkJS29sZWt0b3IgZ3JvdXAKLTAwMTU5OCAgICAgKGJhc2UgMTYpCQlLb2xla3RvciBncm91cAotCQkJCVZvamtvdmEgMTAKLQkJCQlJZHJpamEgIDUyODAKLQkJCQlTTE9WRU5JQQotCi0wMC0xNS05OSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0wMDE1OTkgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIExURAotCQkJCTQxNiwgTWFldGFuLTNEb25nLCBZZW9uZ3RvbmctR3UKLQkJCQlTdXdvbiBHeWVvbmdnaSA0NDMtNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LTlBICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE1OUEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS05QiAgIChoZXgpCQlOb3J0ZWwKLTAwMTU5QiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNS05QyAgIChoZXgpCQlCLUtZVU5HIFNZU1RFTSBDby4sTHRkLgotMDAxNTlDICAgICAoYmFzZSAxNikJCUItS1lVTkcgU1lTVEVNIENvLixMdGQuCi0JCQkJIzgxMixXT09MSU0gRS1CSVogQ0VOVEVSLDE3MC01Ci0JCQkJR1VSTy1ET05HIEdVUk8tR1UgMTUyLTg0NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS05RCAgIChoZXgpCQlNaW5pY29tIEFkdmFuY2VkIFN5c3RlbXMgbHRkCi0wMDE1OUQgICAgIChiYXNlIDE2KQkJTWluaWNvbSBBZHZhbmNlZCBTeXN0ZW1zIGx0ZAotCQkJCTE2LCBIYXJ0b20gU3QuCi0JCQkJSGFyLUhvdHp2aW0KLQkJCQlKZXJ1c2FsZW0gIDkxNDUwCi0JCQkJSVNSQUVMCi0KLTAwLTE1LTlFICAgKGhleCkJCU1hZCBDYXR6IEludGVyYWN0aXZlIEluYwotMDAxNTlFICAgICAoYmFzZSAxNikJCU1hZCBDYXR6IEludGVyYWN0aXZlIEluYwotCQkJCVVuaXRzIDMrNCBXZXN0IFBvaW50IFJvdwotCQkJCUdyZWF0IFBhcmsgUmQsIEFsbW9uZHNidXJ5Ci0JCQkJQnJpc3RvbCBTb3V0aCBHbG91Y2VzdGVyc2hpcmUgQlMzMiA0UUcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNS05RiAgIChoZXgpCQlUZXJhc2NhbGEsIEluYy4KLTAwMTU5RiAgICAgKGJhc2UgMTYpCQlUZXJhc2NhbGEsIEluYy4KLQkJCQkxNDUgQm9kd2VsbCBTdHJlZXQKLQkJCQlBdm9uIE1BIDAyMzIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1BMCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxNUEwICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xNS1BMSAgIChoZXgpCQlFQ0EtU0lOVEVSUwotMDAxNUExICAgICAoYmFzZSAxNikJCUVDQS1TSU5URVJTCi0JCQkJNSwgcnVlIFBhdWwgTWVzcGzDqQotCQkJCVRPVUxPVVNFIENlZGV4IDAxIDMxMTA2Ci0JCQkJRlJBTkNFCi0KLTAwLTE1LUEyICAgKGhleCkJCUFSUklTIEludGVybmF0aW9uYWwKLTAwMTVBMiAgICAgKGJhc2UgMTYpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1BMyAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDE1QTMgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJU3V3YW5lZSBHQSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQTQgICAoaGV4KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotMDAxNUE0ICAgICAoYmFzZSAxNikJCUFSUklTIEludGVybmF0aW9uYWwKLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1aXRlIDMwMAotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUE1ICAgKGhleCkJCURDSSBDby4sIEx0ZC4KLTAwMTVBNSAgICAgKGJhc2UgMTYpCQlEQ0kgQ28uLCBMdGQuCi0JCQkJNHRoIEZsLiBTdXN1bmcgQi9ELCA4OTMtNAotCQkJCUppam9rLWRvbmcKLQkJCQlZdXNlb25nLWd1IERhZWplb24gMzA1LTMzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS1BNiAgIChoZXgpCQlEaWdpdGFsIEVsZWN0cm9uaWNzIFByb2R1Y3RzIEx0ZC4KLTAwMTVBNiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIEVsZWN0cm9uaWNzIFByb2R1Y3RzIEx0ZC4KLQkJCQlSb29tIDMwMSwgMyByZCBGbG9vciwgVHN1biBZaXAgQ2VudHJlCi0JCQkJNDEgVHN1biBZaXAgU3RyZWV0Ci0JCQkJS3d1biBUb25nICA4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMTUtQTcgICAoaGV4KQkJUm9iYXRlY2ggQUcKLTAwMTVBNyAgICAgKGJhc2UgMTYpCQlSb2JhdGVjaCBBRwotCQkJCVBpbGF0dXNyaW5nIDEwCi0JCQkJTXVyaSBBRyA1NjMwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTUtQTggICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTVBOCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOIFVzIEh3eSA0NQotCQkJCVJtIE1XMTEzCi0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1BOSAgIChoZXgpCQlLV0FORyBXT08gSSZDIENPLixMVEQKLTAwMTVBOSAgICAgKGJhc2UgMTYpCQlLV0FORyBXT08gSSZDIENPLixMVEQKLQkJCQk4OTgtMjMsIEhvZ3llLWRvbmcsRG9uZ2FuLWd1Ci0JCQkJQW55YW5nLXNpLEd5ZW9uZ2dpLWRvCi0JCQkJNDMxLTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS1BQSAgIChoZXgpCQlSZXh0ZWNobmlrIEludGVybmF0aW9uYWwgQ28uLAotMDAxNUFBICAgICAoYmFzZSAxNikJCVJleHRlY2huaWsgSW50ZXJuYXRpb25hbCBDby4sCi0JCQkJUm9vbSA1LTMsIE5vLjUxLCBTZWN0aW9uIDIsIEtlZWx1bmcgUm9hZAotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1BQiAgIChoZXgpCQlQUk8gQ08gU09VTkQgSU5DCi0wMDE1QUIgICAgIChiYXNlIDE2KQkJUFJPIENPIFNPVU5EIElOQwotCQkJCTIyNSBQQVJTT05TIFNUUkVFVAotCQkJCUtBTEFNQVpPTyBNSUNISUdBTiA0OTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQUMgICAoaGV4KQkJQ2FwZWxvbiBBQgotMDAxNUFDICAgICAoYmFzZSAxNikJCUNhcGVsb24gQUIKLQkJCQlKw6RnZXJob3JucyB2w6RnIDEKLQkJCQlLdW5nZW5zIEt1cnZhIFN0b2NraG9sbSBTLTE0MSA3NQotCQkJCVNXRURFTgotCi0wMC0xNS1BRCAgIChoZXgpCQlBY2NlZGlhbiBOZXR3b3JrcwotMDAxNUFEICAgICAoYmFzZSAxNikJCUFjY2VkaWFuIE5ldHdvcmtzCi0JCQkJNDg3OCBMZXZ5LCBzdWl0ZSAyMDIKLQkJCQlzdWl0ZSAyMDIKLQkJCQlTdC1MYXVyZW50IFF1ZWJlYyBIOVAgMlY0Ci0JCQkJQ0FOQURBCi0KLTAwLTE1LUFFICAgKGhleCkJCWt5dW5nIGlsCi0wMDE1QUUgICAgIChiYXNlIDE2KQkJa3l1bmcgaWwKLQkJCQl3b2FyIHJvbmctbXluIHlvdWdhdGUtcmkgMTAxLTIKLQkJCQlwYWp1LWNpdHkgZ3llb25nIGdpIDQxMy04MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtQUYgICAoaGV4KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcywgSW5jLgotMDAxNUFGICAgICAoYmFzZSAxNikJCUF6dXJlV2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4Ri4sIE5vLjk0LCBCYW96aG9uZyBSZC4sIFhpbmRpYW4KLQkJCQlUYWlwZWkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtQjAgICAoaGV4KQkJQVVUT1RFTEVORVQgQ08uLExURAotMDAxNUIwICAgICAoYmFzZSAxNikJCUFVVE9URUxFTkVUIENPLixMVEQKLQkJCQkyRiwgODk4LTI0LCBIb2d5ZTItZG9uZywgRG9uZ2FuLWd1Ci0JCQkJQW55YW5nLUNpdHkgS3l1bmdnaS1kbyA0MzEtODM2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LUIxICAgKGhleCkJCUFtYmllbnQgQ29ycG9yYXRpb24KLTAwMTVCMSAgICAgKGJhc2UgMTYpCQlBbWJpZW50IENvcnBvcmF0aW9uCi0JCQkJNzkgQ2hhcGVsIFN0LgotCQkJCU5ld3RvbiBNQSAwMjQ1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQjIgICAoaGV4KQkJQWR2YW5jZWQgSW5kdXN0cmlhbCBDb21wdXRlciwgSW5jLgotMDAxNUIyICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIEluZHVzdHJpYWwgQ29tcHV0ZXIsIEluYy4KLQkJCQkxNzk3MCBFLiBBamF4IENpcmNsZQotCQkJCUNpdHkgb2YgSW5kdXN0cnkgQ0EgOTE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUIzICAgKGhleCkJCUNhcmV0ZWNoIEFCCi0wMDE1QjMgICAgIChiYXNlIDE2KQkJQ2FyZXRlY2ggQUIKLQkJCQlOeWJvcmdzdsOkZ2VuIDE5NwotCQkJCUthbGl4ICA5NTI5MQotCQkJCVNXRURFTgotCi0wMC0xNS1CNCAgIChoZXgpCQlQb2x5bWFwICBXaXJlbGVzcyBMTEMKLTAwMTVCNCAgICAgKGJhc2UgMTYpCQlQb2x5bWFwICBXaXJlbGVzcyBMTEMKLQkJCQkzMTAgUy4gV2lsbGlhbXMgQmx2ZC4gU3RlLiAzNTAKLQkJCQlUdWNzb24gQVogODU3MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUI1ICAgKGhleCkJCUNJIE5ldHdvcmsgQ29ycC4KLTAwMTVCNSAgICAgKGJhc2UgMTYpCQlDSSBOZXR3b3JrIENvcnAuCi0JCQkJMkYgRGFpbmkgSW5vdWUgQmxkZwotCQkJCTEtNi02IEFrYXNha2EgTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwNy0wMDUyCi0JCQkJSkFQQU4KLQotMDAtMTUtQjYgICAoaGV4KQkJU2hpbk1heXdhIEluZHVzdHJpZXMsIEx0ZC4KLTAwMTVCNiAgICAgKGJhc2UgMTYpCQlTaGluTWF5d2EgSW5kdXN0cmllcywgTHRkLgotCQkJCTEtMSBTaGlubWVpd2EtY2hvCi0JCQkJVGFrYXJhenVrYSBIeW9nbyA2NjUtODU1MAotCQkJCUpBUEFOCi0KLTAwLTE1LUI3ICAgKGhleCkJCVRvc2hpYmEKLTAwMTVCNyAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LFN1ZWhpcm8tQ2hvCi0JCQkJT21lIFRva3lvIDE5ODg3MTAKLQkJCQlKQVBBTgotCi0wMC0xNS1COCAgIChoZXgpCQlUYWhvZQotMDAxNUI4ICAgICAoYmFzZSAxNikJCVRhaG9lCi0JCQkJdWwuIFVuaXdlcnN5dGVja2EgMQotCQkJCVdyb2NsYXcgIDUwOTUxCi0JCQkJUE9MQU5ECi0KLTAwLTE1LUI5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE1QjkgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjOTQtMQotCQkJCUltc29vLURvbmcKLQkJCQlHdW1pLUNpdHkgR3llb25nLUJ1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE1LUJBICAgKGhleCkJCWliYSBBRwotMDAxNUJBICAgICAoYmFzZSAxNikJCWliYSBBRwotCQkJCUtvZW5pZ3N3YXJ0ZXJzdHJhc3NlIDQ0Ci0JCQkJRnVlcnRoIEJhdmFyaWEgOTA3NjIKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LUJCICAgKGhleCkJCVNNQSBTb2xhciBUZWNobm9sb2d5IEFHCi0wMDE1QkIgICAgIChiYXNlIDE2KQkJU01BIFNvbGFyIFRlY2hub2xvZ3kgQUcKLQkJCQlTb25uZW5hbGxlZSAxCi0JCQkJTmllc3RldGFsIEhlc3NlbiAzNDI2NgotCQkJCUdFUk1BTlkKLQotMDAtMTUtQkMgICAoaGV4KQkJRGV2ZWxjbwotMDAxNUJDICAgICAoYmFzZSAxNikJCURldmVsY28KLQkJCQlPbG9mIFBhbG1lcyBBbGzDqSA0MAotCQkJCUFhcmh1cyBOICA4MjAwCi0JCQkJREVOTUFSSwotCi0wMC0xNS1CRCAgIChoZXgpCQlHcm91cCA0IFRlY2hub2xvZ3kgTHRkCi0wMDE1QkQgICAgIChiYXNlIDE2KQkJR3JvdXAgNCBUZWNobm9sb2d5IEx0ZAotCQkJCUNoYWxsZW5nZSBIb3VzZQotCQkJCUludGVybmF0aW9uYWwgRHJpdmUKLQkJCQlUZXdrZXNidXJ5IEdsb3VjZXN0ZXJzaGlyZSBHTDIwIDhVUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE1LUJFICAgKGhleCkJCUlxdWEgTHRkLgotMDAxNUJFICAgICAoYmFzZSAxNikJCUlxdWEgTHRkLgotCQkJCUh5dm9uaW5rYXR1IDEKLQkJCQlTYWxvIFZhcnNpbmFpcy1TdW9taSAyNDI0MAotCQkJCUZJTkxBTkQKLQotMDAtMTUtQkYgICAoaGV4KQkJdGVjaG5pY29iCi0wMDE1QkYgICAgIChiYXNlIDE2KQkJdGVjaG5pY29iCi0JCQkJNCBSdWUgQ2FtaWxsZSBTYWludC1TYWVucwotCQkJCUxBTkVTVEVSIE1vcmJpaGFuIDU2NjAyCi0JCQkJRlJBTkNFCi0KLTAwLTE1LUMwICAgKGhleCkJCURJR0lUQUwgVEVMRU1FRElBIENPLixMVEQuCi0wMDE1QzAgICAgIChiYXNlIDE2KQkJRElHSVRBTCBURUxFTUVESUEgQ08uLExURC4KLQkJCQkxN1RIIEZMT09SLCBDSElOQSBZVVNFIEJVSUxESU5HLAotCQkJCU5PIDYwMTMgU0hFTk5BTiBST0FELEZVVElBTiBESVNUUklDVAotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0xNS1DMSAgIChoZXgpCQlTT05ZIENvbXB1dGVyIEVudGVydGFpbm1lbnQgaW5jLAotMDAxNUMxICAgICAoYmFzZSAxNikJCVNPTlkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBpbmMsCi0JCQkJNi0yMSwyQ2hvbWUKLQkJCQlNaW5hbWktQW95YW1hCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNy0wMDYyCi0JCQkJSkFQQU4KLQotMDAtMTUtQzIgICAoaGV4KQkJM00gR2VybWFueQotMDAxNUMyICAgICAoYmFzZSAxNikJCTNNIEdlcm1hbnkKLQkJCQlDYXJsIFNjaHVyeiBTdHIuIDEKLQkJCQlOZXVzcyBOUlcgNDE0NTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LUMzICAgKGhleCkJCVJ1ZiBUZWxlbWF0aWsgQUcKLTAwMTVDMyAgICAgKGJhc2UgMTYpCQlSdWYgVGVsZW1hdGlrIEFHCi0JCQkJUnVldGlzdHJhc3NlIDEzCi0JCQkJU2NobGllcmVuIFpIIDg5NTIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNS1DNCAgIChoZXgpCQlGTE9WRUwgQ08uLCBMVEQuCi0wMDE1QzQgICAgIChiYXNlIDE2KQkJRkxPVkVMIENPLiwgTFRELgotCQkJCVRoZSBUYWNoaWhpIGJ1aWxkaW5nIE5vLDMgaGFsbCwgNi0xLCBTYWthZS1jaG8sCi0JCQkJVGFjaGlrYXdhLXNoaQotCQkJCVRva3lvICAxOTAtMDAwMwotCQkJCUpBUEFOCi0KLTAwLTE1LUM1ICAgKGhleCkJCURlbGwgSW5jCi0wMDE1QzUgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1QzYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE1QzcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DOCAgIChoZXgpCQlGbGV4aVBhbmVsIEx0ZAotMDAxNUM4ICAgICAoYmFzZSAxNikJCUZsZXhpUGFuZWwgTHRkCi0JCQkJNyBiaXMgcnVlIExhbG8KLQkJCQlQYXJpcyA3NTAxNgotCQkJCUZSQU5DRQotCi0wMC0xNS1DOSAgIChoZXgpCQlHdW1zdGl4LCBJbmMKLTAwMTVDOSAgICAgKGJhc2UgMTYpCQlHdW1zdGl4LCBJbmMKLQkJCQkzMTMwIEFscGluZSBSb2FkCi0JCQkJU3VpdGUgMjg4LTYwNgotCQkJCVBvcnRvbGEgVmFsbGV5IENBIDk0MDI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DQSAgIChoZXgpCQlUZXJhUmVjb24sIEluYy4KLTAwMTVDQSAgICAgKGJhc2UgMTYpCQlUZXJhUmVjb24sIEluYy4KLQkJCQkyOTU1IENhbXB1cyBEcml2ZSwgU3VpdGUgMzI1Ci0JCQkJU2FuIE1hdGVvIENBIDk0NDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1DQiAgIChoZXgpCQlTdXJmIENvbW11bmljYXRpb24gU29sdXRpb25zIEx0ZC4KLTAwMTVDQiAgICAgKGJhc2UgMTYpCQlTdXJmIENvbW11bmljYXRpb24gU29sdXRpb25zIEx0ZC4KLQkJCQlQLk8uIEJveCAzNDMKLQkJCQlTb2x0YW0gSW5kdXN0cmlhbCBab25lCi0JCQkJWW9rbmVhbSAgMjAxNjQKLQkJCQlJU1JBRUwKLQotMDAtMTUtQ0MgICAoaGV4KQkJVEVQQ08gVVFVRVNULCBMVEQuCi0wMDE1Q0MgICAgIChiYXNlIDE2KQkJVEVQQ08gVVFVRVNULCBMVEQuCi0JCQkJU2Fubm9taXlhIEludGVzIEJsZGcuIDhGCi0JCQkJNy0xLTggSXNvZ2FtaS1kb3JpLCBDaHVvLWt1Ci0JCQkJS29iZSBIWU9HTyA2NTEtMDA4NgotCQkJCUpBUEFOCi0KLTAwLTE1LUNEICAgKGhleCkJCUV4YXJ0ZWNoIEludGVybmF0aW9uYWwgQ29ycC4KLTAwMTVDRCAgICAgKGJhc2UgMTYpCQlFeGFydGVjaCBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJMy9GLCBOby42MiwgTGFuZSAxODgsIFJ1ZWkgR3VhbmcgUmQuLCBOZWlodQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1DRSAgIChoZXgpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0wMDE1Q0UgICAgIChiYXNlIDE2KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotCQkJCTM4NzEgTGFrZWZpZWxkIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJU3V3YW5lZSBHQSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtQ0YgICAoaGV4KQkJQVJSSVMgSW50ZXJuYXRpb25hbAotMDAxNUNGICAgICAoYmFzZSAxNikJCUFSUklTIEludGVybmF0aW9uYWwKLQkJCQkzODcxIExha2VmaWVsZCBEcml2ZQotCQkJCVN1aXRlIDMwMAotCQkJCVN1d2FuZWUgR0EgMzAwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUQwICAgKGhleCkJCUFSUklTIEludGVybmF0aW9uYWwKLTAwMTVEMCAgICAgKGJhc2UgMTYpCQlBUlJJUyBJbnRlcm5hdGlvbmFsCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1EMSAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxNUQxICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1EMiAgIChoZXgpCQlYYW50ZWNoIENvcnBvcmF0aW9uCi0wMDE1RDIgICAgIChiYXNlIDE2KQkJWGFudGVjaCBDb3Jwb3JhdGlvbgotCQkJCTEzMTAwIFRlbGZhaXIgQXZlbnVlCi0JCQkJU2Vjb25kIEZsb29yCi0JCQkJU3lsbWFyIENBIDkxMzQyLTM1NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUQzICAgKGhleCkJCVBhbnRlY2gmQ3VyaXRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxNUQzICAgICAoYmFzZSAxNikJCVBhbnRlY2gmQ3VyaXRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTE0NTEtMzQsIFNlb2Noby1kb25nLCBTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNS1ENCAgIChoZXgpCQlFbWl0b3IgQUIKLTAwMTVENCAgICAgKGJhc2UgMTYpCQlFbWl0b3IgQUIKLQkJCQlTasO2dmlrc2JhY2tlbiAxNAotCQkJCVN0b2NraG9sbSAgMTE3IDQzCi0JCQkJU1dFREVOCi0KLTAwLTE1LUQ1ICAgKGhleCkJCU5JQ0VWVAotMDAxNUQ1ICAgICAoYmFzZSAxNikJCU5JQ0VWVAotCQkJCVdhcnNoYXdza29lIHNob3NzZSAxMjUKLQkJCQlNb3Njb3cgIDExNzQwNQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xNS1ENiAgIChoZXgpCQlPU0xpTksgU3AuIHogby5vLgotMDAxNUQ2ICAgICAoYmFzZSAxNikJCU9TTGlOSyBTcC4geiBvLm8uCi0JCQkJdWwuIE1hcnNhIDI3Ci0JCQkJR2RhbnNrICA4MDI5OQotCQkJCVBPTEFORAotCi0wMC0xNS1ENyAgIChoZXgpCQlSZXRpIENvcnBvcmF0aW9uCi0wMDE1RDcgICAgIChiYXNlIDE2KQkJUmV0aSBDb3Jwb3JhdGlvbgotCQkJCTZGLE5vIDEzLCBMYW5lIDEyMCwgU2VjIDEsIE5laWh1IFJkLiwKLQkJCQlUYWlwZWkgQ2l0eSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1EOCAgIChoZXgpCQlJbnRlcmxpbmsgRWxlY3Ryb25pY3MKLTAwMTVEOCAgICAgKGJhc2UgMTYpCQlJbnRlcmxpbmsgRWxlY3Ryb25pY3MKLQkJCQk1NDYgRmx5bm4gUm9hZAotCQkJCUNhbWFyaWxsbyBDQSA5MzAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtRDkgICAoaGV4KQkJUEtDIEVsZWN0cm9uaWNzIE95Ci0wMDE1RDkgICAgIChiYXNlIDE2KQkJUEtDIEVsZWN0cm9uaWNzIE95Ci0JCQkJUGFqdW5paXR5bnRpZSA0MwotCQkJCVJBQUhFICA5MjEyMAotCQkJCUZJTkxBTkQKLQotMDAtMTUtREEgICAoaGV4KQkJSVJJVEVMIEEuRC4KLTAwMTVEQSAgICAgKGJhc2UgMTYpCQlJUklURUwgQS5ELgotCQkJCUJhdGFqbmlja2kgcHV0IDIzCi0JCQkJQmVvZ3JhZCBTZXJiaWEgMTEwODAKLQkJCQlZVUdPU0xBVklBCi0KLTAwLTE1LURCICAgKGhleCkJCUNhbmVzdGEgSW5jLgotMDAxNURCICAgICAoYmFzZSAxNikJCUNhbmVzdGEgSW5jLgotCQkJCTk2NSBXZXN0IE1hdWRlIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1EQyAgIChoZXgpCQlLVCZDIENvLiwgTHRkLgotMDAxNURDICAgICAoYmFzZSAxNikJCUtUJkMgQ28uLCBMdGQuCi0JCQkJNDg3LTQsIEtUJkMgQmxkZy4KLQkJCQlCYW5nSHdhLURvbmcKLQkJCQlHYW5nU2VvLUt1IFNlb3VsIDE1Ny04NDkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTUtREQgICAoaGV4KQkJSVAgQ29udHJvbCBTeXN0ZW1zIEx0ZC4KLTAwMTVERCAgICAgKGJhc2UgMTYpCQlJUCBDb250cm9sIFN5c3RlbXMgTHRkLgotCQkJCVVuaXQgMTUsIEhpLVRlY2ggVmlsbGFnZSwKLQkJCQlXaXRuZXkgV2F5LCBCb2xkb24gQnVzaW5lc3MgUGFyaywKLQkJCQlCb2xkb24gVHluZSAmIFdlYXIgTkUzNSA5UEUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNS1ERSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxNURFICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwIFYKLQkJCQlERU5NQVJLCi0KLTAwLTE1LURGICAgKGhleCkJCUNsaXZldCBTLnAuQS4KLTAwMTVERiAgICAgKGJhc2UgMTYpCQlDbGl2ZXQgUy5wLkEuCi0JCQkJdmlhIENhbXAgTG9uYyAyNQotCQkJCUZlbHRyZSBCZWxsdW5vIDMyMDMwCi0JCQkJSVRBTFkKLQotMDAtMTUtRTAgICAoaGV4KQkJU1QtRXJpY3Nzb24KLTAwMTVFMCAgICAgKGJhc2UgMTYpCQlTVC1Fcmljc3NvbgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kICBTRS0yMjEgODMKLQkJCQlTV0VERU4KLQotMDAtMTUtRTEgICAoaGV4KQkJUGljb2NoaXAgTHRkCi0wMDE1RTEgICAgIChiYXNlIDE2KQkJUGljb2NoaXAgTHRkCi0JCQkJVXBwZXIgQm9yb3VnaCBDb3VydAotCQkJCVVwcGVyIEJvcm91Z2ggV2FsbHMKLQkJCQlCYXRoICBCQTEgMVJHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTUtRTIgICAoaGV4KQkJRHIuSW5nLiBIZXJiZXJ0IEtuYXVlciBHbWJICi0wMDE1RTIgICAgIChiYXNlIDE2KQkJRHIuSW5nLiBIZXJiZXJ0IEtuYXVlciBHbWJICi0JCQkJSGVnYXVlciBXZWcgMzgKLQkJCQlCZXJsaW4gIDE0MTYzCi0JCQkJR0VSTUFOWQotCi0wMC0xNS1FMyAgIChoZXgpCQlEcmVhbSBUZWNobm9sb2dpZXMgQ29ycG9yYXRpb24KLTAwMTVFMyAgICAgKGJhc2UgMTYpCQlEcmVhbSBUZWNobm9sb2dpZXMgQ29ycG9yYXRpb24KLQkJCQlFYmlzdSBQcmltZSBTcXVhcmUsIDEtMS0zOSBIaXJvbwotCQkJCVNoaWJ1eWEta3UgVG9reW8gMTUwLTAwMTIKLQkJCQlKQVBBTgotCi0wMC0xNS1FNCAgIChoZXgpCQlaaW1tZXIgRWxla3Ryb21lZGl6aW4KLTAwMTVFNCAgICAgKGJhc2UgMTYpCQlaaW1tZXIgRWxla3Ryb21lZGl6aW4KLQkJCQlKdW5rZXJzc3RyYXNzZSA5Ci0JCQkJTmV1LVVsbSBCYXllcm4gODkyMzEKLQkJCQlHRVJNQU5ZCi0KLTAwLTE1LUU1ICAgKGhleCkJCUNoZWVydGVrIEluYy4KLTAwMTVFNSAgICAgKGJhc2UgMTYpCQlDaGVlcnRlayBJbmMuCi0JCQkJTm8uMiwgRHUtU2luZyBGaXJzdCBSb2FkLCBTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LUU2ICAgKGhleCkJCU1PQklMRSBURUNITklLQSBJbmMuCi0wMDE1RTYgICAgIChiYXNlIDE2KQkJTU9CSUxFIFRFQ0hOSUtBIEluYy4KLQkJCQlTb3RvYm9yaSBTa3kgQmxkLiA1dGggRmxvb3IKLQkJCQkyLTExIEljaGlnYXlhIEhvbm11cmEtY2hvLAotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2Mi0wODQ1Ci0JCQkJSkFQQU4KLQotMDAtMTUtRTcgICAoaGV4KQkJUXVhbnRlYyBQcm9BdWRpbwotMDAxNUU3ICAgICAoYmFzZSAxNikJCVF1YW50ZWMgUHJvQXVkaW8KLQkJCQlMZW9wb2xkc3RyYXNzZSAxOAotCQkJCU3DvG5jaGVuICBELTgwODAyCi0JCQkJR0VSTUFOWQotCi0wMC0xNS1FOCAgIChoZXgpCQlOb3J0ZWwKLTAwMTVFOCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNS1FOSAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMTVFOSAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQkyRiwgTm8uMjMzLTIsIFBhby1DaGlhbyBSb2FkCi0JCQkJSHNpbi1UaWVuLCBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNS1FQSAgIChoZXgpCQlUZWxsdW1hdCAoUHR5KSBMdGQKLTAwMTVFQSAgICAgKGJhc2UgMTYpCQlUZWxsdW1hdCAoUHR5KSBMdGQKLQkJCQk2NC83NCBXaGl0ZSBSb2FkCi0JCQkJUmV0cmVhdAotCQkJCUNhcGUgVG93biBXZXN0ZXJuIFByb3ZpbmNlIDc5NDUKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMTUtRUIgICAoaGV4KQkJWlRFIENPUlBPUkFUSU9OCi0wMDE1RUIgICAgIChiYXNlIDE2KQkJWlRFIENPUlBPUkFUSU9OCi0JCQkJNS9GLEEgV2luZyxaVEUgUGxhemEsS2VqaSBSb2FkIFNvdXRoLEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMTUtRUMgICAoaGV4KQkJQm9jYSBEZXZpY2VzIExMQwotMDAxNUVDICAgICAoYmFzZSAxNikJCUJvY2EgRGV2aWNlcyBMTEMKLQkJCQk2MzUzIFcuIFJvZ2VycyBDaXJjbGUgIzQKLQkJCQlCb2NhIFJhdG9uIEZsb3JpZGEgMzM0ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUVEICAgKGhleCkJCUZ1bGNydW0gTWljcm9zeXN0ZW1zLCBJbmMuCi0wMDE1RUQgICAgIChiYXNlIDE2KQkJRnVsY3J1bSBNaWNyb3N5c3RlbXMsIEluYy4KLQkJCQkyNjYzMCBBZ291cmEgUm9hZAotCQkJCUNhbGFiYXNhcyBDQSA5MTMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtRUUgICAoaGV4KQkJT21uZXggQ29udHJvbCBTeXN0ZW1zCi0wMDE1RUUgICAgIChiYXNlIDE2KQkJT21uZXggQ29udHJvbCBTeXN0ZW1zCi0JCQkJIzc0IC0gMTgzMyBDb2FzdCBNZXJpZGlhbiBSZC4KLQkJCQlQb3J0IENvcXVpdGxhbSBCQyBWM0MgNkc1Ci0JCQkJQ0FOQURBCi0KLTAwLTE1LUVGICAgKGhleCkJCU5FQyBUT0tJTiBDb3Jwb3JhdGlvbgotMDAxNUVGICAgICAoYmFzZSAxNikJCU5FQyBUT0tJTiBDb3Jwb3JhdGlvbgotCQkJCTEtMSxBc2FoaS1DaG8gNy1jaG9tZSxTaGlyb2lzaGkKLQkJCQlNaXlhZ2kgOTg5LTAyMjMKLQkJCQlKQVBBTgotCi0wMC0xNS1GMCAgIChoZXgpCQlFR08gQlYKLTAwMTVGMCAgICAgKGJhc2UgMTYpCQlFR08gQlYKLQkJCQlQYXJhZGUgMTUKLQkJCQkncy1IZXJ0b2dlbmJvc2NoIE5vb3JkLUJyYWJhbnQgNTIxMUtMCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTUtRjEgICAoaGV4KQkJS1lMSU5LIENvbW11bmljYXRpb25zIENvcnAuCi0wMDE1RjEgICAgIChiYXNlIDE2KQkJS1lMSU5LIENvbW11bmljYXRpb25zIENvcnAuCi0JCQkJOEYtOCwgTm8uIDM1MSwgU2VjLiAyLCBaaG9uZ3NoYW4gUmQuLCBaaG9uZ2hlIENpdHkKLQkJCQlUYWlwZWkgQ291bnR5Ci0JCQkJMjM1MDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE1LUYyICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAxNUYyICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCU5vLjUgU2hpbmcgWWVoIFN0cmVldCxLd2VpIFNoYW4gSHNpYW5nLFRhb3l1YW4KLQkJCQlUYWlwZWkgIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtRjMgICAoaGV4KQkJUEVMVE9SIEFCCi0wMDE1RjMgICAgIChiYXNlIDE2KQkJUEVMVE9SIEFCCi0JCQkJQm94IDIzNDEKLQkJCQlTRS0zMzEgMDIgIFbDg+KAnlJOQU1PICBTRS0zMzEgMDIKLQkJCQlTV0VERU4KLQotMDAtMTUtRjQgICAoaGV4KQkJRXZlbnRpZGUKLTAwMTVGNCAgICAgKGJhc2UgMTYpCQlFdmVudGlkZQotCQkJCTEgQWxzYW4gV2F5Ci0JCQkJTGl0dGxlIEZlcnJ5IE5KIDA3NjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNS1GNSAgIChoZXgpCQlTdXN0YWluYWJsZSBFbmVyZ3kgU3lzdGVtcwotMDAxNUY1ICAgICAoYmFzZSAxNikJCVN1c3RhaW5hYmxlIEVuZXJneSBTeXN0ZW1zCi0JCQkJIzUwMCwgNjA5IDE0dGggU3RyZWV0IE5XCi0JCQkJQ2FsZ2FyeSBBYiBUMlQgMVAzCi0JCQkJQ0FOQURBCi0KLTAwLTE1LUY2ICAgKGhleCkJCVNDSUVOQ0UgQU5EIEVOR0lORUVSSU5HIFNFUlZJQ0VTLCBJTkMuCi0wMDE1RjYgICAgIChiYXNlIDE2KQkJU0NJRU5DRSBBTkQgRU5HSU5FRVJJTkcgU0VSVklDRVMsIElOQy4KLQkJCQk0MDE1IFBVTEFTS0kgUElLRSBOVwotCQkJCUhVTlRTVklMTEUgQUwgMzU4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUY3ICAgKGhleCkJCVdpbnRlY3JvbmljcyBMdGQuCi0wMDE1RjcgICAgIChiYXNlIDE2KQkJV2ludGVjcm9uaWNzIEx0ZC4KLQkJCQlOby4gNzE2LCAxMUYtMywgSnVuZyBKZW5nIFJkLgotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTUtRjggICAoaGV4KQkJS2luZ3Ryb25pY3MgSW5kdXN0cmlhbCBDby4gTHRkLgotMDAxNUY4ICAgICAoYmFzZSAxNikJCUtpbmd0cm9uaWNzIEluZHVzdHJpYWwgQ28uIEx0ZC4KLQkJCQlQZW50aG91c2UsIENlbnR1cnkgQ2VudHJlLAotCQkJCTQ0LTQ2IEh1bmcgVG8gUm9hZCwgS3d1biBUb25nCi0JCQkJS293bG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE1LUY5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTVGOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUZBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTVGQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE1LUZCICAgKGhleCkJCXNldGV4IHNjaGVybXVseSB0ZXh0aWxlIGNvbXB1dGVyIGdtYmgKLTAwMTVGQiAgICAgKGJhc2UgMTYpCQlzZXRleCBzY2hlcm11bHkgdGV4dGlsZSBjb21wdXRlciBnbWJoCi0JCQkJSGF1cHRzdHJhc3NlIDI1Ci0JCQkJTWVuZ2Vyc2tpcmNoZW4gSGVzc2VuIDM1Nzk0Ci0JCQkJR0VSTUFOWQotCi0wMC0xNS1GQyAgIChoZXgpCQlMaXR0ZWxmdXNlIFN0YXJ0Y28KLTAwMTVGQyAgICAgKGJhc2UgMTYpCQlMaXR0ZWxmdXNlIFN0YXJ0Y28KLQkJCQkzNzE0IEtpbm5lYXIgUGwKLQkJCQlTYXNrYXRvb24gU0sgUzdQIDBBNgotCQkJCUNBTkFEQQotCi0wMC0xNS1GRCAgIChoZXgpCQlDb21wbGV0ZSBNZWRpYSBTeXN0ZW1zCi0wMDE1RkQgICAgIChiYXNlIDE2KQkJQ29tcGxldGUgTWVkaWEgU3lzdGVtcwotCQkJCUdyb3ZlIFBsYWNlCi0JCQkJQ3Vja2ZpZWxkIExhbmUKLQkJCQlXYXJuaW5nbGlkIFdlc3Qgc3Vzc2V4IFJIMTcgNVNOCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTUtRkUgICAoaGV4KQkJU0NISUxMSU5HIFJPQk9USUNTIExMQwotMDAxNUZFICAgICAoYmFzZSAxNikJCVNDSElMTElORyBST0JPVElDUyBMTEMKLQkJCQkyMDEgQ09VU1RFQVUgUEwKLQkJCQlEQVZJUyBDQSA5NTYxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTUtRkYgICAoaGV4KQkJTm92YXRlbCBXaXJlbGVzcywgSW5jLgotMDAxNUZGICAgICAoYmFzZSAxNikJCU5vdmF0ZWwgV2lyZWxlc3MsIEluYy4KLQkJCQk5NjQ1IFNjcmFudG9uIFJvYWQKLQkJCQlTdWl0ZSAyMDUKLQkJCQlTYW4gRGllZ28gQ2FsaWZvcm5pYSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMDAgICAoaGV4KQkJQ2VsbGVCcml0ZSBNb2JpbGUgU3luY2hyb25pemF0aW9uCi0wMDE2MDAgICAgIChiYXNlIDE2KQkJQ2VsbGVCcml0ZSBNb2JpbGUgU3luY2hyb25pemF0aW9uCi0JCQkJMjUgQmFzZWwgU3QuCi0JCQkJUE9CIDc1NjUKLQkJCQlQZXRhY2ggVGlrdmEgIDQ5MTcwCi0JCQkJSVNSQUVMCi0KLTAwLTE2LTAxICAgKGhleCkJCUJ1ZmZhbG8gSW5jLgotMDAxNjAxICAgICAoYmFzZSAxNikJCUJ1ZmZhbG8gSW5jLgotCQkJCTQtMTUgU2hpYmF0YSBob25kb3JpCi0JCQkJTmFnb3lhIE1pbmFtaS1rdSwgQWljaGkgNDU3LTg1MjAKLQkJCQlKQVBBTgotCi0wMC0xNi0wMiAgIChoZXgpCQlDRVlPTiBURUNITk9MT0dZIENPLixMVEQuCi0wMDE2MDIgICAgIChiYXNlIDE2KQkJQ0VZT04gVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCTEzRiBTYW1zdW5nIEluc3VyYW5jZSBCL0QuICM5NDItOQotCQkJCUluZ3llLURvbmcsUGFsZGFsLUd1Ci0JCQkJU3V3b24tQ2l0eSBHeWVvbmdnaS1EbyA0NDItODMyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTAzICAgKGhleCkJCUNPT0xLU0tZIENvLiwgTFRECi0wMDE2MDMgICAgIChiYXNlIDE2KQkJQ09PTEtTS1kgQ28uLCBMVEQKLQkJCQlTaGluZ3N1bmcgb2ZmY2V0ZWwgQTUxMSwgMTU4OC0xCi0JCQkJU2VjaG8gU2VvdWwgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi0wNCAgIChoZXgpCQlTaWdwcm8KLTAwMTYwNCAgICAgKGJhc2UgMTYpCQlTaWdwcm8KLQkJCQk2NTUgVyBFdmVseW4gU1QKLQkJCQlTdWl0ZSAyCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMDUgICAoaGV4KQkJWU9SS1ZJTExFIFNPVU5EIElOQy4KLTAwMTYwNSAgICAgKGJhc2UgMTYpCQlZT1JLVklMTEUgU09VTkQgSU5DLgotCQkJCTQ2MjUgV0lUTUVSIElORFVTVFJJQUwgRVNUQVRFCi0JCQkJTklBR0FSQSBGQUxMUyBOWSAxNDMwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMDYgICAoaGV4KQkJSWRlYWwgSW5kdXN0cmllcwotMDAxNjA2ICAgICAoYmFzZSAxNikJCUlkZWFsIEluZHVzdHJpZXMKLQkJCQk5MTQ1IEJhbGJvYSBBdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTA3ICAgKGhleCkJCUN1cnZlcyBJbnRlcm5hdGlvbmFsIEluYy4KLTAwMTYwNyAgICAgKGJhc2UgMTYpCQlDdXJ2ZXMgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJMTAwIFJpdGNoaWUgUm9hZAotCQkJCVdhY28gVGV4YXMgNzY3MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTA4ICAgKGhleCkJCVNlcXVhbnMgQ29tbXVuaWNhdGlvbnMKLTAwMTYwOCAgICAgKGJhc2UgMTYpCQlTZXF1YW5zIENvbW11bmljYXRpb25zCi0JCQkJMTkgTGUgUGFydmlzIGRlIGxhIETDqWZlbnNlCi0JCQkJQsOidGltZW50IENpdGlDZW50ZXIKLQkJCQlQQVJJUyBMQSBERUZFTlNFIENFREVYIDkyMDczCi0JCQkJRlJBTkNFCi0KLTAwLTE2LTA5ICAgKGhleCkJCVVuaXRlY2ggZWxlY3Ryb25pY3MgY28uLCBsdGQuCi0wMDE2MDkgICAgIChiYXNlIDE2KQkJVW5pdGVjaCBlbGVjdHJvbmljcyBjby4sIGx0ZC4KLQkJCQk1RixOby4xMzYsTGFuZSAyMzUgLFBhby1jaGlhbyBSZC4sCi0JCQkJSHNpbi1UaWVuIGNpdHkgVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtMEEgICAoaGV4KQkJU1dFRVggRXVyb3BlIEJWCi0wMDE2MEEgICAgIChiYXNlIDE2KQkJU1dFRVggRXVyb3BlIEJWCi0JCQkJQW1wZXJld2VnIDMKLQkJCQlEZWxmdCBadWlkLUhvbGxhbmQgMjYyNyBCRwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE2LTBCICAgKGhleCkJCVRWV29ya3MgTExDCi0wMDE2MEIgICAgIChiYXNlIDE2KQkJVFZXb3JrcyBMTEMKLQkJCQlUd28gQmVsdmVkZXJlIFBsYWNlLCAjMjAwCi0JCQkJTWlsbCBWYWxsZXkgQ0EgOTQ5NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTBDICAgKGhleCkJCUxQTCAgREVWRUxPUE1FTlQgUy5BLiBERSBDLlYKLTAwMTYwQyAgICAgKGJhc2UgMTYpCQlMUEwgIERFVkVMT1BNRU5UIFMuQS4gREUgQy5WCi0JCQkJTEFHTyBHSU5FQlJBIDM4MCBQMwotCQkJCUNPTC4gRlJBTkNJU0NPIEkgTUFERVJPCi0JCQkJRC5GLiAxMTQ4MAotCQkJCU1FWElDTwotCi0wMC0xNi0wRCAgIChoZXgpCQlCZSBIZXJlIENvcnBvcmF0aW9uCi0wMDE2MEQgICAgIChiYXNlIDE2KQkJQmUgSGVyZSBDb3Jwb3JhdGlvbgotCQkJCTM5MzAwIENpdmljIENlbnRlciBEci4sIFN1aXRlIDE4MAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTBFICAgKGhleCkJCU9wdGljYSBUZWNobm9sb2dpZXMgSW5jLgotMDAxNjBFICAgICAoYmFzZSAxNikJCU9wdGljYSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTIwNTEgRG9nd29vZCBTdHJlZXQKLQkJCQlTdWl0ZSAyMTAKLQkJCQlMb3Vpc3ZpbGxlIENPIDgwMDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0wRiAgIChoZXgpCQlCQURHRVIgTUVURVIgSU5DCi0wMDE2MEYgICAgIChiYXNlIDE2KQkJQkFER0VSIE1FVEVSIElOQwotCQkJCTQ1NDUgVyBCUk9XTiBERUVSIFJECi0JCQkJTUlMV0FVS0VFIFdJIDUzMjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0xMCAgIChoZXgpCQlDYXJpbmEgVGVjaG5vbG9neQotMDAxNjEwICAgICAoYmFzZSAxNikJCUNhcmluYSBUZWNobm9sb2d5Ci0JCQkJNjkwQSBEaXNjb3ZlcnkgRHJpdmUKLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0xMSAgIChoZXgpCQlBbHRlY29uIFNybAotMDAxNjExICAgICAoYmFzZSAxNikJCUFsdGVjb24gU3JsCi0JCQkJVmlhIEYubGxpIENhaXJvbGksIDE3Ci0JCQkJTGlzc29uZSBNaWxhbm8gMjAwMzUKLQkJCQlJVEFMWQotCi0wMC0xNi0xMiAgIChoZXgpCQlPdHN1a2EgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE2MTIgICAgIChiYXNlIDE2KQkJT3RzdWthIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTEtMTAgU2FzYWdhb2thLCBNaW5ha3VjaGkKLQkJCQlrb3VrYSBzaGlnYSA1MjgtMDA2MQotCQkJCUpBUEFOCi0KLTAwLTE2LTEzICAgKGhleCkJCUxpYnJlU3RyZWFtIFRlY2hub2xvZ2llcyBJbmMuCi0wMDE2MTMgICAgIChiYXNlIDE2KQkJTGlicmVTdHJlYW0gVGVjaG5vbG9naWVzIEluYy4KLQkJCQk4OTUgV2F2ZXJsZXkgU3RyZWV0Ci0JCQkJU3VpdGUgMTEwCi0JCQkJV2lubmlwZWcgTWFuaXRvYmEgUjNUIDVQNAotCQkJCUNBTkFEQQotCi0wMC0xNi0xNCAgIChoZXgpCQlQaWNvc2Vjb25kIFB1bHNlIExhYnMKLTAwMTYxNCAgICAgKGJhc2UgMTYpCQlQaWNvc2Vjb25kIFB1bHNlIExhYnMKLQkJCQkyNTAwIDU1dGggU3RyZWV0Ci0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMTUgICAoaGV4KQkJTml0dGFuIENvbXBhbnksIExpbWl0ZWQKLTAwMTYxNSAgICAgKGJhc2UgMTYpCQlOaXR0YW4gQ29tcGFueSwgTGltaXRlZAotCQkJCTExLTYsIDEtY2hvbWUsIEhhdGFnYXlhCi0JCQkJU2hpYnV5YS1rdSBUb2t5byAxNTEtODUzNQotCQkJCUpBUEFOCi0KLTAwLTE2LTE2ICAgKGhleCkJCUJST1dBTiBDT01NVU5JQ0FUSU9OIElOQy4KLTAwMTYxNiAgICAgKGJhc2UgMTYpCQlCUk9XQU4gQ09NTVVOSUNBVElPTiBJTkMuCi0JCQkJTm8uMSBKZW4tQWkgUm9hZCwgSHNpbkNodSBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHVLb3UgSHNpYW5nIEhzaW5DaHUgSHNpZW4gMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi0xNyAgIChoZXgpCQlNU0kKLTAwMTYxNyAgICAgKGJhc2UgMTYpCQlNU0kKLQkJCQlOby42OSwgTGktRGUgU3QsIEp1bmctSG8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi0xOCAgIChoZXgpCQlISVZJT04gQ28uLCBMdGQuCi0wMDE2MTggICAgIChiYXNlIDE2KQkJSElWSU9OIENvLiwgTHRkLgotCQkJCTJGLiwgQWt5dW5nIEJsZGcuLCA1NC0xMCwgTXVuamVvbmctZG9uZywKLQkJCQlTb25ncGEtR3UgU2VvdWwgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTE5ICAgKGhleCkJCUxhIEZhY3RvcsOtYSBkZSBDb211bmljYWNpb25lcyBBcGxpY2FkYXMsUy5MLgotMDAxNjE5ICAgICAoYmFzZSAxNikJCUxhIEZhY3RvcsOtYSBkZSBDb211bmljYWNpb25lcyBBcGxpY2FkYXMsUy5MLgotCQkJCUMvQWdyaWN1bHR1cmEsMTExCi0JCQkJVGVycmFzc2EgQmFyY2Vsb25hIDA4MjIzCi0JCQkJU1BBSU4KLQotMDAtMTYtMUEgICAoaGV4KQkJRGFtZXRyaWMgQUIKLTAwMTYxQSAgICAgKGJhc2UgMTYpCQlEYW1ldHJpYyBBQgotCQkJCUJveCAxMjAKLQkJCQlTa2FyaG9sbWVuIFN0b2NraG9sbSBTRS0xMjcyMwotCQkJCVNXRURFTgotCi0wMC0xNi0xQiAgIChoZXgpCQlNaWNyb25ldCBDb3Jwb3JhdGlvbgotMDAxNjFCICAgICAoYmFzZSAxNikJCU1pY3JvbmV0IENvcnBvcmF0aW9uCi0JCQkJMTc4OC0zODggTm9tdXJhIEhpcm9va2EKLQkJCQlTaGlvamlyaS1zaGkgTmFnYW5vLWtlbiAzOTktMDcwMgotCQkJCUpBUEFOCi0KLTAwLTE2LTFDICAgKGhleCkJCWU6Y3VlCi0wMDE2MUMgICAgIChiYXNlIDE2KQkJZTpjdWUKLQkJCQlGcmllZHJpY2gtTGlzdC1TdHJhc3NlIDIzCi0JCQkJUGFkZXJib3JuICAzMzEwMAotCQkJCUdFUk1BTlkKLQotMDAtMTYtMUQgICAoaGV4KQkJSW5ub3ZhdGl2ZSBXaXJlbGVzcyBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTYxRCAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aXZlIFdpcmVsZXNzIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwNDcgVmlzdGEgUGFyayBEci4KLQkJCQlTdWl0ZSBBCi0JCQkJRm9yZXN0IFZBIDI0NTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0xRSAgIChoZXgpCQlXb29qaW5uZXQKLTAwMTYxRSAgICAgKGJhc2UgMTYpCQlXb29qaW5uZXQKLQkJCQkyOTIgb3NhbiBkb25ndGFuCi0JCQkJaHdhc2Vvbmcga3lvbmdnaSA0NDUtODEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTFGICAgKGhleCkJCVNVTldBVkVURUMgQ28uLCBMdGQuCi0wMDE2MUYgICAgIChiYXNlIDE2KQkJU1VOV0FWRVRFQyBDby4sIEx0ZC4KLQkJCQkjODIzLCBLd2FueWFuZy1kb25nLCBEb25nYW4ta3UKLQkJCQlBbnlhbmctc2kgS3l1bmdraS1kbyA0MzEtMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTIwICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDE2MjAgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMTYtMjEgICAoaGV4KQkJQ29sb3JhZG8gVm5ldAotMDAxNjIxICAgICAoYmFzZSAxNikJCUNvbG9yYWRvIFZuZXQKLQkJCQkyNTUgRS4gNnRoIFN0LgotCQkJCUxvdmVsYW5kIENPIDgwNTM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0yMiAgIChoZXgpCQlCQkggU1lTVEVNUyBHTUJICi0wMDE2MjIgICAgIChiYXNlIDE2KQkJQkJIIFNZU1RFTVMgR01CSAotCQkJCULDtnR0Z2Vyc3RyYXNzZSA0MAotCQkJCVdlaWRlbiBpLmQuT1BmLiBCYXllcm4gOTI2MzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LTIzICAgKGhleCkJCUludGVydmFsIE1lZGlhCi0wMDE2MjMgICAgIChiYXNlIDE2KQkJSW50ZXJ2YWwgTWVkaWEKLQkJCQkzMjAwIEFzaCBTdHJlZXQKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTI0ICAgKGhleCkJCVRlbmVyb3MsIEluYy4KLTAwMTYyNCAgICAgKGJhc2UgMTYpCQlUZW5lcm9zLCBJbmMuCi0JCQkJMjE1IENhc3RybyBTdC4KLQkJCQkzcmQgRmxvb3IKLQkJCQlNdC4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMjUgICAoaGV4KQkJSW1waW5qLCBJbmMuCi0wMDE2MjUgICAgIChiYXNlIDE2KQkJSW1waW5qLCBJbmMuCi0JCQkJNzAxIE4uIDM0dGggU3RyZWV0Ci0JCQkJU3VpdGUgMzAwCi0JCQkJU2VhdHRsZSBXQSA5ODEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMjYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTYyNiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTI3ICAgKGhleCkJCWVtYmVkZGVkLWxvZ2ljIERFU0lHTiBBTkQgTU9SRSBHbWJICi0wMDE2MjcgICAgIChiYXNlIDE2KQkJZW1iZWRkZWQtbG9naWMgREVTSUdOIEFORCBNT1JFIEdtYkgKLQkJCQlIYW5zZXN0cmFzc2UgMjQKLQkJCQlNdWVuc3RlciBOUlcgNDgxNTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LTI4ICAgKGhleCkJCVVsdHJhIEVsZWN0cm9uaWNzIE1hbnVmYWN0dXJpbmcgYW5kIENhcmQgU3lzdGVtcwotMDAxNjI4ICAgICAoYmFzZSAxNikJCVVsdHJhIEVsZWN0cm9uaWNzIE1hbnVmYWN0dXJpbmcgYW5kIENhcmQgU3lzdGVtcwotCQkJCUhhbXBzaGlyZSBSb2FkCi0JCQkJR3JhbmJ5IEVzdGF0ZQotCQkJCVdleW1vdXRoIERvcnNldCBEVDQgOVhECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtMjkgICAoaGV4KQkJTml2dXMgR21iSAotMDAxNjI5ICAgICAoYmFzZSAxNikJCU5pdnVzIEdtYkgKLQkJCQlJbSBUw6RsZSAyCi0JCQkJRXBwaW5nZW4gQmFkZW4tV3VlcnR0ZW1iZXJnIDc1MDMxCi0JCQkJR0VSTUFOWQotCi0wMC0xNi0yQSAgIChoZXgpCQlBbnRpayBjb21wdXRlcnMgJiBjb21tdW5pY2F0aW9ucyBzLnIuby4KLTAwMTYyQSAgICAgKGJhc2UgMTYpCQlBbnRpayBjb21wdXRlcnMgJiBjb21tdW5pY2F0aW9ucyBzLnIuby4KLQkJCQlSYXp1c292YSAyCi0JCQkJS29zaWNlIFNLIFNLLTA0MDAxCi0JCQkJU0xPVkFLSUEKLQotMDAtMTYtMkIgICAoaGV4KQkJVG9nYW1pIEVsZWN0cmljIE1mZy5jby4sTHRkLgotMDAxNjJCICAgICAoYmFzZSAxNikJCVRvZ2FtaSBFbGVjdHJpYyBNZmcuY28uLEx0ZC4KLQkJCQkxLTEgT2h0YWthcmEtS2l0YW1hY2hpCi0JCQkJU2FnYS5QUkYgODQwLTA4MDIKLQkJCQlKQVBBTgotCi0wMC0xNi0yQyAgIChoZXgpCQlYYW5ib28KLTAwMTYyQyAgICAgKGJhc2UgMTYpCQlYYW5ib28KLQkJCQkxMTUgV2VzdCAzMHRoLCA2dGggRmwKLQkJCQlOZXcgWW9yayBOWSAxMDAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMkQgICAoaGV4KQkJU1ROZXQgQ28uLCBMdGQuCi0wMDE2MkQgICAgIChiYXNlIDE2KQkJU1ROZXQgQ28uLCBMdGQuCi0JCQkJU2hpbi13aGEgQnVpbGRpbmcgNEYsIDk1NC0yNQotCQkJCUt3YW55YW5nLWRvbmcsIERvbmdhbi1ndQotCQkJCUFueWFuZy1zaSBLeXVuZ2tpLWRvICA0MzEtMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTJFICAgKGhleCkJCVNwYWNlIFNodXR0bGUgSGktVGVjaCBDby4sIEx0ZC4KLTAwMTYyRSAgICAgKGJhc2UgMTYpCQlTcGFjZSBTaHV0dGxlIEhpLVRlY2ggQ28uLCBMdGQuCi0JCQkJTm8uIDIyNiwgV3UtSG8gU3QuLCBXdS1MdW5nIFZpbGxhZ2UsCi0JCQkJQ2hpdW5nLUxpbiBIc2lhbmcsCi0JCQkJSHNpbmNodSBIc2llbiAgMzA3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi0yRiAgIChoZXgpCQlHZXV0ZWJyw7xjayBHbWJICi0wMDE2MkYgICAgIChiYXNlIDE2KQkJR2V1dGVicsO8Y2sgR21iSAotCQkJCUltIE5hc3NlbiA3LTkKLQkJCQlXaW5kaGFnZW4gIDUzNTc4Ci0JCQkJR0VSTUFOWQotCi0wMC0xNi0zMCAgIChoZXgpCQlWYXRpdiBUZWNobm9sb2dpZXMKLTAwMTYzMCAgICAgKGJhc2UgMTYpCQlWYXRpdiBUZWNobm9sb2dpZXMKLQkJCQk5MzM5IEdlbmVzZWUgQXZlbnVlCi0JCQkJU3VpdGUgMTMwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0zMSAgIChoZXgpCQlYdGVhbQotMDAxNjMxICAgICAoYmFzZSAxNikJCVh0ZWFtCi0JCQkJcm9vbSA4MDEsIE5vLjEwMiBpbnRlcm5hdGlvbmFsIFNjaWVuY2UgJiBUZWNob2xvZ3kgUGFyawotCQkJCU5vLjIgU2hhbmdEaSBJbmZvIFJvYWQsIEhhaURpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nIDg2MTAKLQkJCQlDSElOQQotCi0wMC0xNi0zMiAgIChoZXgpCQlTQU1TVU5HIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDAxNjMyICAgICAoYmFzZSAxNikJCVNBTVNVTkcgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJNDE2LCBNRVRBTi0zRE9ORywKLQkJCQlZT1VOR1RPTkctR1UKLQkJCQlTVVdPTiBLWVVOR0tJLURPIDQ0Mi03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtMzMgICAoaGV4KQkJT3hmb3JkIERpYWdub3N0aWNzIEx0ZC4KLTAwMTYzMyAgICAgKGJhc2UgMTYpCQlPeGZvcmQgRGlhZ25vc3RpY3MgTHRkLgotCQkJCVNhbmR5YnJhZQotCQkJCVdoaXRlYmFybiBEciwgQm9hcnMgSGlsbAotCQkJCU94Zm9yZCBPeG9uLiBPWDEgNUhKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtMzQgICAoaGV4KQkJTWF0aHRlY2gsIEluYy4KLTAwMTYzNCAgICAgKGJhc2UgMTYpCQlNYXRodGVjaCwgSW5jLgotCQkJCTY0MDIgQXJsaW5ndG9uIEJsdmQuLAotCQkJCVN1aXRlIDEyMDAKLQkJCQlGYWxscyBDaHVyY2ggVmlyZ2luaWEgMjIwNDItMjM1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtMzUgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMTYzNSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5IFNvdXRoCi0JCQkJTVMwNzA0MDUKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0zNiAgIChoZXgpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotMDAxNjM2ICAgICAoYmFzZSAxNikJCVF1YW50YSBDb21wdXRlciBJbmMuCi0JCQkJTm8uIDIxMSwgV2VuIEh3YSAyUmQuLCBLdWVpIFNoYW4gSHNpYW5nCi0JCQkJVGFvIFl1YW4gU2hpZW4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtMzcgICAoaGV4KQkJQ2l0ZWwgU3JsCi0wMDE2MzcgICAgIChiYXNlIDE2KQkJQ2l0ZWwgU3JsCi0JCQkJVmlhIEwuIEcuIENvbHVtZWxsYSwgMzYKLQkJCQlNaWxhbiBNSSAyMDEyOAotCQkJCUlUQUxZCi0KLTAwLTE2LTM4ICAgKGhleCkJCVRFQ09NIENvLiwgTHRkLgotMDAxNjM4ICAgICAoYmFzZSAxNikJCVRFQ09NIENvLiwgTHRkLgotCQkJCTIzIFImRCBSb2FkIDIgU2NpZW5jZSBCYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luLUNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi0zOSAgIChoZXgpCQlVQklRVUFNIENvLixMdGQKLTAwMTYzOSAgICAgKGJhc2UgMTYpCQlVQklRVUFNIENvLixMdGQKLQkJCQlUZWNobm92aWxsIDRGLDI3Mi0zIFlhdGFwMwotCQkJCUJ1bmRhbmcKLQkJCQlTZW9uZ25hbSBLeWVvbmdnaSA0NjMtODM2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTNBICAgKGhleCkJCVlWRVMgVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwMTYzQSAgICAgKGJhc2UgMTYpCQlZVkVTIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJTm8uNzQsIEZ1c2luZyAybmQgUmQuCi0JCQkJR3VlaXNoYW4gVGFveXVhbiAzMzM3NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtM0IgICAoaGV4KQkJVmVydGV4UlNJL0dlbmVyYWwgRHluYW1pY3MKLTAwMTYzQiAgICAgKGJhc2UgMTYpCQlWZXJ0ZXhSU0kvR2VuZXJhbCBEeW5hbWljcwotCQkJCTIxMjAgT2xkIEdhdGVzYnVyZyBSZC4KLQkJCQlTdGF0ZSBjb2xsZWdlIFBBIDE2ODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi0zQyAgIChoZXgpCQlSZWJveCBCLlYuCi0wMDE2M0MgICAgIChiYXNlIDE2KQkJUmVib3ggQi5WLgotCQkJCUhlbmRyaWsgRmlnZWV3ZWcgMVgKLQkJCQlIYWFybGVtIE5vb3JkLUhvbGxhbmQgMjAzMSBCSgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE2LTNEICAgKGhleCkJCVRzaW5naHVhIFRvbmdmYW5nIExlZ2VuZCBTaWxpY29uIFRlY2guIENvLiwgTHRkLgotMDAxNjNEICAgICAoYmFzZSAxNikJCVRzaW5naHVhIFRvbmdmYW5nIExlZ2VuZCBTaWxpY29uIFRlY2guIENvLiwgTHRkLgotCQkJCTI2RiBUU0lOR0hVQSBUT05HRkFORyBISS1URUNIIFBMQVpBCi0JCQkJQkVJSklORyAgMTAwMDgzCi0JCQkJQ0hJTkEKLQotMDAtMTYtM0UgICAoaGV4KQkJWGVuc291cmNlLCBJbmMuCi0wMDE2M0UgICAgIChiYXNlIDE2KQkJWGVuc291cmNlLCBJbmMuCi0JCQkJMjMwMCBHZW5nIFJkLgotCQkJCVN1aXRlIDI1MAotCQkJCVBhbG8gQWx0byBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtM0YgICAoaGV4KQkJQ1JlVEUgU1lTVEVNUyBJbmMuCi0wMDE2M0YgICAgIChiYXNlIDE2KQkJQ1JlVEUgU1lTVEVNUyBJbmMuCi0JCQkJN0YsTm8uMjUwLFNlYy4zLFBlaSBTaGVuIFJkLixTaGVuIEtlbmcgSHNpYW5nCi0JCQkJVGFpcGVpIENvdW50eSAgMjIyMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTQwICAgKGhleCkJCUFzbW9iaWxlIENvbW11bmljYXRpb24gSW5jLgotMDAxNjQwICAgICAoYmFzZSAxNikJCUFzbW9iaWxlIENvbW11bmljYXRpb24gSW5jLgotCQkJCU5vLjExIExhbmUgMTIwLCBMaS1UZSBSZC4sIFBlaXRvdSAxMTIsIFRhaXBlaSwgVGFpd2FuLCBSLk8uQwotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi00MSAgIChoZXgpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMTY0MSAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQkxNDEsIExBTkUgMzUxLCBTRUMuMSxUQUlQSU5HIFJELiAKLQkJCQlUU0FPVFVFTiBOQU5UT1UgNTQyNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTQyICAgKGhleCkJCVBhbmdvbGluCi0wMDE2NDIgICAgIChiYXNlIDE2KQkJUGFuZ29saW4KLQkJCQk5NTAxIFNhdGVsbGl0ZSBCb3VsZXZhcmQsIFN1aXRlIDEwOQotCQkJCU9ybGFuZG8gRkwgMzI4MzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTQzICAgKGhleCkJCVN1bmhpbGxvIENvcnBvcmF0aW9uCi0wMDE2NDMgICAgIChiYXNlIDE2KQkJU3VuaGlsbG8gQ29ycG9yYXRpb24KLQkJCQk0NDQgS2VsbGV5IERyaXZlCi0JCQkJV2VzdCBCZXJsaW4gTmV3IEplcnNleSAwODA5MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNDQgICAoaGV4KQkJTElURS1PTiBUZWNobm9sb2d5IENvcnAuCi0wMDE2NDQgICAgIChiYXNlIDE2KQkJTElURS1PTiBUZWNobm9sb2d5IENvcnAuCi0JCQkJMThGLCBOby4zOTIsIFJ1ZXkgS3VhbmcgUm9hZCwgTmllaHUsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTQ1ICAgKGhleCkJCVBvd2VyIERpc3RyaWJ1dGlvbiwgSW5jLgotMDAxNjQ1ICAgICAoYmFzZSAxNikJCVBvd2VyIERpc3RyaWJ1dGlvbiwgSW5jLgotCQkJCTQyMDAgT2FrbGV5cyBDdC4KLQkJCQlSaWNobW9uZCBWQSAyMzIyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNDYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNjQ2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNDcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxNjQ3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNDggICAoaGV4KQkJU1NEIENvbXBhbnkgTGltaXRlZAotMDAxNjQ4ICAgICAoYmFzZSAxNikJCVNTRCBDb21wYW55IExpbWl0ZWQKLQkJCQkzLTMtNCBIaWdhc2hpeWFndXJhCi0JCQkJS3VzYXRzdS1jaXR5IFNoaWdhIDUyNS0wMDU0Ci0JCQkJSkFQQU4KLQotMDAtMTYtNDkgICAoaGV4KQkJU2V0T25lIEdtYkgKLTAwMTY0OSAgICAgKGJhc2UgMTYpCQlTZXRPbmUgR21iSAotCQkJCUhlZ2VuaGVpbWVyIFN0ci4gMgotCQkJCVdlaWwgYW0gUmhlaW4gQmFkZW4gV3VlcnRlbWJlcmcgRC03OTU3NgotCQkJCUdFUk1BTlkKLQotMDAtMTYtNEEgICAoaGV4KQkJVmlicmF0aW9uIFRlY2hub2xvZ3kgTGltaXRlZAotMDAxNjRBICAgICAoYmFzZSAxNikJCVZpYnJhdGlvbiBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlWaWJ0ZWNoIEhvdXNlLCBDZW50cmFsIEJvdWxldmFyZAotCQkJCUNlbnRyYWwgUGFyawotCQkJCUxhcmJlcnQgU2NvdGxhbmQgRks1IDRSVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE2LTRCICAgKGhleCkJCVF1b3Jpb24gRGF0YSBTeXN0ZW1zIEdtYkgKLTAwMTY0QiAgICAgKGJhc2UgMTYpCQlRdW9yaW9uIERhdGEgU3lzdGVtcyBHbWJICi0JCQkJQW4gZGVyIEtsaW5nZSA2Ci0JCQkJRXJmdXJ0IFRodXJpbmdpYSA5OTE5NQotCQkJCUdFUk1BTlkKLQotMDAtMTYtNEMgICAoaGV4KQkJUExBTkVUIElOVCBDby4sIEx0ZAotMDAxNjRDICAgICAoYmFzZSAxNikJCVBMQU5FVCBJTlQgQ28uLCBMdGQKLQkJCQk4dGggRmxvb3IsIFNhZXVtIEIvRCwgMTM2MS01Ci0JCQkJU2VvY2hvLURvbmcsIFNlb2Noby1LdQotCQkJCVNlb3VsICAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTREICAgKGhleCkJCUFsY2F0ZWwgTm9ydGggQW1lcmljYSBJUCBEaXZpc2lvbgotMDAxNjREICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTm9ydGggQW1lcmljYSBJUCBEaXZpc2lvbgotCQkJCTcwMSBFLiBNaWRkbGVmaWVsZCBSRC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi00RSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxNjRFICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xNi00RiAgIChoZXgpCQlXb3JsZCBFdGhuaWMgQnJvYWRjYXN0aW4gSW5jLgotMDAxNjRGICAgICAoYmFzZSAxNikJCVdvcmxkIEV0aG5pYyBCcm9hZGNhc3RpbiBJbmMuCi0JCQkJNTAgQ2FsaWZvcm5pYSBTdHJlZXQsIFN1aXRlIDE1MDAKLQkJCQlTYW4gRnJhbmNpc2NvIENhbGlmb3JuaWEgOTQxMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTUwICAgKGhleCkJCUhlcmxleSBHZW5lcmFsIE1pY3Jvd2F2ZSBJc3JhZWwuIAotMDAxNjUwICAgICAoYmFzZSAxNikJCUhlcmxleSBHZW5lcmFsIE1pY3Jvd2F2ZSBJc3JhZWwuIAotCQkJCUtJQkJVVFogRVlBTAotCQkJCUQuTi4gSEFTSEFST04gSEFUSUNIT04KLQkJCQk0NTg0MAotCQkJCUlTUkFFTAotCi0wMC0xNi01MSAgIChoZXgpCQlFeGVvIFN5c3RlbXMKLTAwMTY1MSAgICAgKGJhc2UgMTYpCQlFeGVvIFN5c3RlbXMKLQkJCQkxNjUwLCBydWUgTWljaGVsaW4sIHN1aXRlIDIwMQotCQkJCUxhdmFsIFF1w6liZWMgSDdMIDRSMwotCQkJCUNBTkFEQQotCi0wMC0xNi01MiAgIChoZXgpCQlIb2F0ZWNoIFRlY2hub2xvZ2llcywgSW5jLgotMDAxNjUyICAgICAoYmFzZSAxNikJCUhvYXRlY2ggVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMUYuLCBOby4yMjQsIEd1b3NoZW5nIFN0LgotCQkJCVpodWJlaSBIc2luQ2h1IEhzaWVuIDMwMjQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi01MyAgIChoZXgpCQlMRUdPIFN5c3RlbSBBL1MgSUUgRWxlY3Ryb25pY3MgRGl2aXNpb24KLTAwMTY1MyAgICAgKGJhc2UgMTYpCQlMRUdPIFN5c3RlbSBBL1MgSUUgRWxlY3Ryb25pY3MgRGl2aXNpb24KLQkJCQlBYXN0dmVqIDEKLQkJCQlCaWxsdW5kIEtvbW11bmUgNzE5MAotCQkJCURFTk1BUksKLQotMDAtMTYtNTQgICAoaGV4KQkJRmxleC1QIEluZHVzdHJpZXMgU2RuLiBCaGQuCi0wMDE2NTQgICAgIChiYXNlIDE2KQkJRmxleC1QIEluZHVzdHJpZXMgU2RuLiBCaGQuCi0JCQkJTm8uMTI4LTEyLTIsIE1lbmFyYSBVTU5PLAotCQkJCUphbGFuIE1hY2FsaXN0ZXIsCi0JCQkJR2VvcmdldG93biBQZW5hbmcgMTA0MDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xNi01NSAgIChoZXgpCQlGVUhPIFRFQ0hOT0xPR1kgQ28uLCBMVEQKLTAwMTY1NSAgICAgKGJhc2UgMTYpCQlGVUhPIFRFQ0hOT0xPR1kgQ28uLCBMVEQKLQkJCQlOby4gMzAsIExhbmUgNzI2LCBKaW5tYSBSZCwgU2VjLiAzCi0JCQkJQ2hhbmcgSHVhIFRhaXdhIDUwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNTYgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDE2NTYgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTYtNTcgICAoaGV4KQkJQWVnYXRlIEx0ZAotMDAxNjU3ICAgICAoYmFzZSAxNikJCUFlZ2F0ZSBMdGQKLQkJCQlUZWNobm9sb2d5IENlbnRyZQotCQkJCU1lbGJvdXJuIEhlcnRmb3Jkc2hpcmUgU0c4IDZEUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE2LTU4ICAgKGhleCkJCUZ1c2lvbnRlY2ggVGVjaG5vbG9naWVzIEluYy4KLTAwMTY1OCAgICAgKGJhc2UgMTYpCQlGdXNpb250ZWNoIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNkYsIE5vLjc4LCBDaGVuZyBLdW5nIFJkLiwgU2VjLiAxLAotCQkJCU5hbiBLYW5nCi0JCQkJVGFpcGVpICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTU5ICAgKGhleCkJCVouTS5QLiBSQURXQUcKLTAwMTY1OSAgICAgKGJhc2UgMTYpCQlaLk0uUC4gUkFEV0FHCi0JCQkJQnJhY2thIDI4IHN0cmVldAotCQkJCVJBRE9NIE1hem93aWVja2llIDI2LTYwMAotCQkJCVBPTEFORAotCi0wMC0xNi01QSAgIChoZXgpCQlIYXJtYW4gU3BlY2lhbHR5IEdyb3VwCi0wMDE2NUEgICAgIChiYXNlIDE2KQkJSGFybWFuIFNwZWNpYWx0eSBHcm91cAotCQkJCTMgT2FrIFBhcmsgRHJpdmUKLQkJCQlCZWRmb3JkIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi01QiAgIChoZXgpCQlHcmlwIEF1ZGlvCi0wMDE2NUIgICAgIChiYXNlIDE2KQkJR3JpcCBBdWRpbwotCQkJCTYzNDUgVy4gTG91aXNlIERyaXZlCi0JCQkJR2xlbmRhbGUgQXJpem9uYSA4NTMxMC00MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi01QyAgIChoZXgpCQlUcmFja2Zsb3cgTHRkCi0wMDE2NUMgICAgIChiYXNlIDE2KQkJVHJhY2tmbG93IEx0ZAotCQkJCTE2Ny0xNjkgS2Vuc2luZ3RvbiBIaWdoIFN0cmVldAotCQkJCUxvbmRvbiBFbmdsYW5kIFc4NlNICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtNUQgICAoaGV4KQkJQWlyRGVmZW5zZSwgSW5jLgotMDAxNjVEICAgICAoYmFzZSAxNikJCUFpckRlZmVuc2UsIEluYy4KLQkJCQk0ODAwIE5vcnRoIFBvaW50IFBrd3kKLQkJCQlTdGUgMTAwCi0JCQkJQWxwaGFyZXR0YSBHQSAzMDAyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtNUUgICAoaGV4KQkJUHJlY2lzaW9uIEkvTwotMDAxNjVFICAgICAoYmFzZSAxNikJCVByZWNpc2lvbiBJL08KLQkJCQk0MDA1IE1pcmFuZGEgQXZlLiwgU3VpdGUgMjEwCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA0LTEyMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTVGICAgKGhleCkJCUZhaXJtb3VudCBBdXRvbWF0aW9uCi0wMDE2NUYgICAgIChiYXNlIDE2KQkJRmFpcm1vdW50IEF1dG9tYXRpb24KLQkJCQk0NjIxIFdlc3QgQ2hlc3RlciBQaWtlCi0JCQkJTmV3dG93biBTcXVhcmUgUEEgMTkwNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTYwICAgKGhleCkJCU5vcnRlbAotMDAxNjYwICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZCwgU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE2LTYxICAgKGhleCkJCU5vdmF0aXVtIFNvbHV0aW9ucyAoUCkgTHRkCi0wMDE2NjEgICAgIChiYXNlIDE2KQkJTm92YXRpdW0gU29sdXRpb25zIChQKSBMdGQKLQkJCQkzcmQgRmxvb3IsIFRlbXBsZSBUb3dlcnMsICM2NzIKLQkJCQlBbm5hIFNhbGFpLCBOYW5kYW5hbSwKLQkJCQlDaGVubmFpIFRhbWlsIE5hZHUgNjAwMDM1Ci0JCQkJSU5ESUEKLQotMDAtMTYtNjIgICAoaGV4KQkJTGl5dWggVGVjaG5vbG9neSBMdGQuCi0wMDE2NjIgICAgIChiYXNlIDE2KQkJTGl5dWggVGVjaG5vbG9neSBMdGQuCi0JCQkJN0YtMSwgTm8uIDkyLCBTZWMuIDEsIEhlaSBIdSBSZC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNjMgICAoaGV4KQkJS0JUIE1vYmlsZQotMDAxNjYzICAgICAoYmFzZSAxNikJCUtCVCBNb2JpbGUKLQkJCQk0RiwgUG9sYXJpcyBJLCAxNS0zLCBKZW9uZ2phLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSwgR3llb25nZ2ktZG8gNDYzLTgxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi02NCAgIChoZXgpCQlQcm9kLUVsIFNwQQotMDAxNjY0ICAgICAoYmFzZSAxNikJCVByb2QtRWwgU3BBCi0JCQkJVmlhIFBhbG1hbm92YSAxODUKLQkJCQlNaWxhbm8gTUkgMjAxMzIKLQkJCQlJVEFMWQotCi0wMC0xNi02NSAgIChoZXgpCQlDZWxsb24gRnJhbmNlCi0wMDE2NjUgICAgIChiYXNlIDE2KQkJQ2VsbG9uIEZyYW5jZQotCQkJCVJvdXRlIGQnQW5nZXJzIExlIE1hbnMgY2VkZXggOQotCQkJCUxlIE1hbnMgU2FydGhlIDcyMDgxCi0JCQkJRlJBTkNFCi0KLTAwLTE2LTY2ICAgKGhleCkJCVF1YW50aWVyIENvbW11bmljYXRpb24gSW5jLgotMDAxNjY2ICAgICAoYmFzZSAxNikJCVF1YW50aWVyIENvbW11bmljYXRpb24gSW5jLgotCQkJCTFGLCBOby4gMzYsIEluZHVzdHJ5IEUuIFJkIElWLAotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBwYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNjcgICAoaGV4KQkJQS1URUMgU3Vic3lzdGVtIElOQy4KLTAwMTY2NyAgICAgKGJhc2UgMTYpCQlBLVRFQyBTdWJzeXN0ZW0gSU5DLgotCQkJCTRGLCBOby4gODYsIENodW5nLUhzaW5nIFJvYWQsIFNoaWpyIENpdHksCi0JCQkJVGFpcGVpIENvdW50eQotCQkJCTIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtNjggICAoaGV4KQkJRWlzaGluIEVsZWN0cm9uaWNzCi0wMDE2NjggICAgIChiYXNlIDE2KQkJRWlzaGluIEVsZWN0cm9uaWNzCi0JCQkJTmlzaGlrdSBNaXlhc2hpdGEgMS0xOQotCQkJCUtvYmUgQ2l0eSBIeW9nbyBQcmVmZWN0dXJlIDY1MS0yMTQ2Ci0JCQkJSkFQQU4KLQotMDAtMTYtNjkgICAoaGV4KQkJTVJWIENvbW11bmljYXRpb24gKE5ldHdvcmtzKSBMVEQKLTAwMTY2OSAgICAgKGJhc2UgMTYpCQlNUlYgQ29tbXVuaWNhdGlvbiAoTmV0d29ya3MpIExURAotCQkJCVAuTyBCb3ggNjE0Ci0JCQkJWW9rbmVhbSAgMjA2OTIKLQkJCQlJU1JBRUwKLQotMDAtMTYtNkEgICAoaGV4KQkJVFBTCi0wMDE2NkEgICAgIChiYXNlIDE2KQkJVFBTCi0JCQkJMTQ1IHF1YWkgZGUgU3RhbGluZ3JhZAotCQkJCUlzc3kgTGVzIE1vdWxpbmVhdXggSWxlIGRlIEZyYW5jZSA5MjEzNwotCQkJCUZSQU5DRQotCi0wMC0xNi02QiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0wMDE2NkIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCTQxNixNYWV0YW4tM0RvbmcsWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24tQ2l0eSBLeWVvbmdnaS1EbyA0NDMtNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LTZDICAgKGhleCkJCVNhbXN1bmcgRWxlY3RvbmljcyBEaWdpdGFsIFZpZGVvIFN5c3RlbSBEaXZpc2lvbgotMDAxNjZDICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3RvbmljcyBEaWdpdGFsIFZpZGVvIFN5c3RlbSBEaXZpc2lvbgotCQkJCTQxNiwgTWFldGFuLTNEb25nLFllb25ndG9uZy1HdQotCQkJCVN1d29uIEd5ZW9uZ2dpLURvIDQ0My03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtNkQgICAoaGV4KQkJWXVsb25nIENvbXB1dGVyIFRlbGVjb21tdW5pY2F0aW9uIFNjaWVudGlmaWMoc2hlbnpoZW4pQ28uLEx0Ci0wMDE2NkQgICAgIChiYXNlIDE2KQkJWXVsb25nIENvbXB1dGVyIFRlbGVjb21tdW5pY2F0aW9uIFNjaWVudGlmaWMoc2hlbnpoZW4pQ28uLEx0Ci0JCQkJOC9GLmhpZ2ggVGVjaCBQbGF6YSxUaWFuQW4gQ3liZXJwYXJrLENoZWdvbmdtaWFvCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTE2LTZFICAgKGhleCkJCUFyYml0cm9uIEluYy4KLTAwMTY2RSAgICAgKGJhc2UgMTYpCQlBcmJpdHJvbiBJbmMuCi0JCQkJOTcwNSBQYXR1eGVudCBXb29kcyBEcml2ZQotCQkJCUNvbHVtYmlhIE1EIDIxMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi02RiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxNjZGICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEpsbiBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE2LTcwICAgKGhleCkJCVNLTkVUIENvcnBvcmF0aW9uCi0wMDE2NzAgICAgIChiYXNlIDE2KQkJU0tORVQgQ29ycG9yYXRpb24KLQkJCQlGb250YW5hIFNoaW55b2tvaGFtYQotCQkJCVNoaW55b2tvaGFtYSAyLDE3LDIga29ob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIyLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0xNi03MSAgIChoZXgpCQlTeW1waG94IEluZm9ybWF0aW9uIENvLgotMDAxNjcxICAgICAoYmFzZSAxNikJCVN5bXBob3ggSW5mb3JtYXRpb24gQ28uCi0JCQkJMTVGLCBOby4gNTEsIFNlYy4gMywgTWluc2hlbmcgRS4gUm9hZAotCQkJCVRhaXBlaSBDaXR5ICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTcyICAgKGhleCkJCVplbndheSBlbnRlcnByaXNlIGx0ZAotMDAxNjcyICAgICAoYmFzZSAxNikJCVplbndheSBlbnRlcnByaXNlIGx0ZAotCQkJCTZGLiwgTm8uMjAsIExhbmUgMTUwLCBKaG9uZ3NpbmcgUmQuLCBTaWpoaWggQ2l0eQotCQkJCVRhaXBlaSAgODg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi03MyAgIChoZXgpCQlCdXJ5IEdtYkggJiBDby4gS0cKLTAwMTY3MyAgICAgKGJhc2UgMTYpCQlCdXJ5IEdtYkggJiBDby4gS0cKLQkJCQlSb2JlcnQtS29jaC1TdHIuIDEtNwotCQkJCUxvZWhuZSBHZXJtYW55IDMyNTg0Ci0JCQkJR0VSTUFOWQotCi0wMC0xNi03NCAgIChoZXgpCQlFdXJvQ0IgKFBoaWxzLiksIEluYy4KLTAwMTY3NCAgICAgKGJhc2UgMTYpCQlFdXJvQ0IgKFBoaWxzLiksIEluYy4KLQkJCQlTRkIgTm8uMgotCQkJCU1hY3RhbiBFY29ub21pYyBab25lIC0gSQotCQkJCUxhcHVsYXB1IENpdHkgQ2VidSA2MDE1Ci0JCQkJUEhJTElQUElORVMKLQotMDAtMTYtNzUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDE2NzUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4gVVMgSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElsbGlub2lzIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi03NiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxNjc2ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEpsbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTYtNzcgICAoaGV4KQkJQmlobCtXaWVkZW1hbm4gR21iSAotMDAxNjc3ICAgICAoYmFzZSAxNikJCUJpaGwrV2llZGVtYW5uIEdtYkgKLQkJCQlGbG9zc3dvZXJ0aHN0ci4gNDEKLQkJCQlNYW5uaGVpbSBCYWRlbiBXw7xydGVtYmVyZyA2ODE5OQotCQkJCUdFUk1BTlkKLQotMDAtMTYtNzggICAoaGV4KQkJU0hFTlpIRU4gQkFPQU4gR0FPS0UgRUxFQ1RST05JQ1MgQ08uLCBMVEQKLTAwMTY3OCAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBCQU9BTiBHQU9LRSBFTEVDVFJPTklDUyBDTy4sIExURAotCQkJCUdBT0tFIElORFVTVFJJQUwgUEFSSywgTk8uOCBUQU5HS0VORyBST0FELCBTSElZQU4gVE9XTgotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgxMDgKLQkJCQlDSElOQQotCi0wMC0xNi03OSAgIChoZXgpCQllT24gQ29tbXVuaWNhdGlvbnMKLTAwMTY3OSAgICAgKGJhc2UgMTYpCQllT24gQ29tbXVuaWNhdGlvbnMKLQkJCQk0MTA1IFJveWFsIERyaXZlLCBTdWl0ZSAxMDAKLQkJCQlLZW5uZXNhdyBHZW9yZ2lhIDMwMTQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi03QSAgIChoZXgpCQlTa3l3b3J0aCBPdmVyc2VhcyBEdmVsb3BtZW50IEx0ZC4KLTAwMTY3QSAgICAgKGJhc2UgMTYpCQlTa3l3b3J0aCBPdmVyc2VhcyBEdmVsb3BtZW50IEx0ZC4KLQkJCQlSb29tIDE1MDUtMDYsV2VzdGxhbmRzIENlbnRyZQotCQkJCTIwIFdlc3RsYW5kcyBSb2FkLCBRdWFycnkgQmF5LAotCQkJCUhPTkcgS09ORwotCi0wMC0xNi03QiAgIChoZXgpCQlIYXZlciZCb2Vja2VyCi0wMDE2N0IgICAgIChiYXNlIDE2KQkJSGF2ZXImQm9lY2tlcgotCQkJCUNhcmwtSGF2ZXItUGxhdHogMwotCQkJCU9lbGRlIE5SVyA1OTMwMgotCQkJCUdFUk1BTlkKLQotMDAtMTYtN0MgICAoaGV4KQkJaVJleCBUZWNobm9sb2dpZXMgQlYKLTAwMTY3QyAgICAgKGJhc2UgMTYpCQlpUmV4IFRlY2hub2xvZ2llcyBCVgotCQkJCUhpZ2hUZWNoIENhbXB1cwotCQkJCUJ1aWxkaW5nIDQ2LCByb29tIHAtMDA1Ci0JCQkJRWluZGhvdmVuIEJyYWJhbnQgNTY1NkFFCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTYtN0QgICAoaGV4KQkJU2t5LUxpbmUgSW5mb3JtYXRpb24gQ28uLCBMdGQuCi0wMDE2N0QgICAgIChiYXNlIDE2KQkJU2t5LUxpbmUgSW5mb3JtYXRpb24gQ28uLCBMdGQuCi0JCQkJOEYuLE5vLjM4LFNpaHl1YW4gUmQuLAotCQkJCVNpbmlodWFuZyBUYWlwZWkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi03RSAgIChoZXgpCQlESUJPU1MuQ08uLExURAotMDAxNjdFICAgICAoYmFzZSAxNikJCURJQk9TUy5DTy4sTFRECi0JCQkJMTI2LTEsIEdvbmdkYW4tZG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC05MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtN0YgICAoaGV4KQkJQmx1ZWJpcmQgU29mdCBJbmMuCi0wMDE2N0YgICAgIChiYXNlIDE2KQkJQmx1ZWJpcmQgU29mdCBJbmMuCi0JCQkJNTYyLTIxIEdhbmduYW0tZ3UsCi0JCQkJU2VvdWwgIDEzNS04OTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtODAgICAoaGV4KQkJQmFsbHkgR2FtaW5nICsgU3lzdGVtcwotMDAxNjgwICAgICAoYmFzZSAxNikJCUJhbGx5IEdhbWluZyArIFN5c3RlbXMKLQkJCQk5NTAgU2FuZGhpbGwgUm9hZAotCQkJCVJlbm8gTlYgODk1MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTgxICAgKGhleCkJCVZlY3RvciBJbmZvcm1hdGlrIEdtYkgKLTAwMTY4MSAgICAgKGJhc2UgMTYpCQlWZWN0b3IgSW5mb3JtYXRpayBHbWJICi0JCQkJSW5nZXJzaGVpbWVyIFN0ci4gMjQKLQkJCQlTdHV0dGdhcnQgQmFkZW4tV3VlcnR0ZW1iZXJnIDcwNDk5Ci0JCQkJR0VSTUFOWQotCi0wMC0xNi04MiAgIChoZXgpCQlQcm8gRGV4LCBJbmMKLTAwMTY4MiAgICAgKGJhc2UgMTYpCQlQcm8gRGV4LCBJbmMKLQkJCQkxODAwIE5XIDE2OXRoIFBsYWNlCi0JCQkJQzEwMAotCQkJCUJlYXZlcnRvbiBPcmVnb24gOTcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTgzICAgKGhleCkJCVdFQklPIEludGVybmF0aW9uYWwgQ28uLC5MdGQuCi0wMDE2ODMgICAgIChiYXNlIDE2KQkJV0VCSU8gSW50ZXJuYXRpb25hbCBDby4sLkx0ZC4KLQkJCQkyMUYuLE5vLjE3MSBTb25nZGUgUmQuLFNpbnlpIERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTA4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtODQgICAoaGV4KQkJRG9uamluIENvLixMdGQuCi0wMDE2ODQgICAgIChiYXNlIDE2KQkJRG9uamluIENvLixMdGQuCi0JCQkJMjFGLENhbmdzb25nIEJ1aWxkaW5nLFRhaXJhbixGdXRpYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMTYtODUgICAoaGV4KQkJRWxpc2EgT3lqCi0wMDE2ODUgICAgIChiYXNlIDE2KQkJRWxpc2EgT3lqCi0JCQkJRWxla3Ryb25paWtrYXRpZSA0Ci0JCQkJOTA1NzAgT3VsdSAKLQkJCQlGSU5MQU5ECi0KLTAwLTE2LTg2ICAgKGhleCkJCUthcmwgU3RvcnogSW1hZ2luZwotMDAxNjg2ICAgICAoYmFzZSAxNikJCUthcmwgU3RvcnogSW1hZ2luZwotCQkJCTE3NSBDcmVtb25hIERyLgotCQkJCUdvbGV0YSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtODcgICAoaGV4KQkJQ2h1YmIgQ1NDLVZlbmRvciBBUAotMDAxNjg3ICAgICAoYmFzZSAxNikJCUNodWJiIENTQy1WZW5kb3IgQVAKLQkJCQlPdHRhd2EgU1ROCi0JCQkJUC5PLiBCT1ggOTgzMgotCQkJCU90dGF3YSAgSzFHIDZXNgotCQkJCUNBTkFEQQotCi0wMC0xNi04OCAgIChoZXgpCQlTZXJ2ZXJFbmdpbmVzIExMQwotMDAxNjg4ICAgICAoYmFzZSAxNikJCVNlcnZlckVuZ2luZXMgTExDCi0JCQkJMjA5IE4uIEZhaXIgT2FrcyBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTg5ICAgKGhleCkJCVBpbGtvciBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAxNjg5ICAgICAoYmFzZSAxNikJCVBpbGtvciBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCTM4MSxXb25jaHVuLURvbmcsWWVvdW5ndG9uZy1HdQotCQkJCVN1d29uIEt5dW5nIEtpLURvIDQ0Mi0zODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtOEEgICAoaGV4KQkJaWQtQ29uZmlybSBJbmMKLTAwMTY4QSAgICAgKGJhc2UgMTYpCQlpZC1Db25maXJtIEluYwotCQkJCTE4MDAgQm91bGRlciBTdAotCQkJCVN1aXRlIDQwMAotCQkJCURlbnZlciBDTyA4MDIxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtOEIgICAoaGV4KQkJUGFyYWxhbiBDb3Jwb3JhdGlvbgotMDAxNjhCICAgICAoYmFzZSAxNikJCVBhcmFsYW4gQ29ycG9yYXRpb24KLQkJCQk0NjU1IFJ1ZmZuZXIgU3QuCi0JCQkJU2FuIERpZWdvIENBIDkyMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi04QyAgIChoZXgpCQlEU0wgUGFydG5lciBBUwotMDAxNjhDICAgICAoYmFzZSAxNikJCURTTCBQYXJ0bmVyIEFTCi0JCQkJSGF2cmV2ZWllbiA0OQotCQkJCU9zbG8gIDA2ODAKLQkJCQlOT1JXQVkKLQotMDAtMTYtOEQgICAoaGV4KQkJS09SV0lOIENPLiwgTHRkLgotMDAxNjhEICAgICAoYmFzZSAxNikJCUtPUldJTiBDTy4sIEx0ZC4KLQkJCQkzcmQgRmxvb3IsIEhhbmEgQmxkZywgMTIzLTcgTm9uaHl1bi1kb25nCi0JCQkJS2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LThFICAgKGhleCkJCVZpbWljcm8gY29ycG9yYXRpb24KLTAwMTY4RSAgICAgKGJhc2UgMTYpCQlWaW1pY3JvIGNvcnBvcmF0aW9uCi0JCQkJMTUvRixTaGluaW5nIFRvd2VyLE5vLjM1LHh1ZXl1YW4KLQkJCQlSb2FkLEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODMKLQkJCQlDSElOQQotCi0wMC0xNi04RiAgIChoZXgpCQlHTiBOZXRjb20gYXMKLTAwMTY4RiAgICAgKGJhc2UgMTYpCQlHTiBOZXRjb20gYXMKLQkJCQlNZXRhbGJ1ZW4gNjYKLQkJCQlQLk8uQm94IDIwMQotCQkJCUJhbGxlcnVwIFNrb3ZsdW5kZSBESyAtIDI3NTAKLQkJCQlERU5NQVJLCi0KLTAwLTE2LTkwICAgKGhleCkJCUotVEVLIElOQ09SUE9SQVRJT04KLTAwMTY5MCAgICAgKGJhc2UgMTYpCQlKLVRFSyBJTkNPUlBPUkFUSU9OCi0JCQkJMkYtMSwgTm8uIDgzLCBTZWMuIDIsIEdvbmdEYW9XdSBSZC4sCi0JCQkJSHNpbmNodSBDaXR5ICAzMDA3MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtOTEgICAoaGV4KQkJTW9zZXItQmFlciBBRwotMDAxNjkxICAgICAoYmFzZSAxNikJCU1vc2VyLUJhZXIgQUcKLQkJCQlTcGl0YWxzdHJhc3NlIDcKLQkJCQlTdW1pc3dhbGQgQkUgMzQ1NAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE2LTkyICAgKGhleCkJCVNjaWVudGlmaWMtQXRsYW50YSwgSW5jLgotMDAxNjkyICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMtQXRsYW50YSwgSW5jLgotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlBVEwgMS4zLjQ3MwotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LTkzICAgKGhleCkJCVBvd2VyTGluayBUZWNobm9sb2d5IEluYy4KLTAwMTY5MyAgICAgKGJhc2UgMTYpCQlQb3dlckxpbmsgVGVjaG5vbG9neSBJbmMuCi0JCQkJTjAuIDE4LCBBbGxleSAxLCBMYW5lIDE1MSwgU2VjLiAxLCBKaG9uZ3NpbmcgUmQuLCBXdWd1IFRvd25zaGlwCi0JCQkJVGFpcGVpIEhzaWVuICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LTk0ICAgKGhleCkJCVNlbm5oZWlzZXIgQ29tbXVuaWNhdGlvbnMgQS9TCi0wMDE2OTQgICAgIChiYXNlIDE2KQkJU2VubmhlaXNlciBDb21tdW5pY2F0aW9ucyBBL1MKLQkJCQlMYW5nYWdlciA2Ci0JCQkJU29scsO4ZCBTdHJhbmQgQ29wZW5oYWdlbiAyNjgwCi0JCQkJREVOTUFSSwotCi0wMC0xNi05NSAgIChoZXgpCQlBVkMgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDE2OTUgICAgIChiYXNlIDE2KQkJQVZDIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCTYvRiBFbnRlcnByaXNlIFNxdWFyZSBJSUkKLQkJCQkzOSBXYW5nIENoaXUgUm9hZAotCQkJCUtvd2xvb24gQmF5ICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTYtOTYgICAoaGV4KQkJUURJIFRlY2hub2xvZ3kgKEguSy4pIExpbWl0ZWQKLTAwMTY5NiAgICAgKGJhc2UgMTYpCQlRREkgVGVjaG5vbG9neSAoSC5LLikgTGltaXRlZAotCQkJCTE2L0YsIFN0YW5kYXJkIENoYXJ0ZXJlZCBCYW5rIEJ1aWxkaW5nIDQtNEEKLQkJCQlEZXMgVm9ldXggUm9hZCBDZW50cmFsCi0JCQkJSG9uZyBLb25nICAKLQkJCQlDSElOQQotCi0wMC0xNi05NyAgIChoZXgpCQlORUMgQ29ycG9yYXRpb24KLTAwMTY5NyAgICAgKGJhc2UgMTYpCQlORUMgQ29ycG9yYXRpb24KLQkJCQk3LTEsIFNoaWJhIDUtY2hvbWUgTWluYXRvLWt1LAotCQkJCVRva3lvIDEwOC04MDAxCi0JCQkJSkFQQU4KLQotMDAtMTYtOTggICAoaGV4KQkJVCZBIE1vYmlsZSBQaG9uZXMKLTAwMTY5OCAgICAgKGJhc2UgMTYpCQlUJkEgTW9iaWxlIFBob25lcwotCQkJCTQvRiwgU291dGggQnVpbGRpbmcsTm8uMjk2NiwgSmlua2UgUm9hZAotCQkJCVpoYW5namlhbmcgSGlnaC1UZWNrIFBhcmsKLQkJCQlQdWRvbmcgU2hhbmdoYWkgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMDAtMTYtOTkgICAoaGV4KQkJVG9uaWMgRFZCIE1hcmtldGluZyBMdGQKLTAwMTY5OSAgICAgKGJhc2UgMTYpCQlUb25pYyBEVkIgTWFya2V0aW5nIEx0ZAotCQkJCVVuaXQgQiwgMTAvRiwgU3VtbWl0IEJ1aWxkaW5nLAotCQkJCTMwIE1hbiBZdWUgU3RyZWV0LAotCQkJCUh1bmcgSG9tIEtvd2xvb24gCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE2LTlBICAgKGhleCkJCVF1YWRyaWNzIEx0ZAotMDAxNjlBICAgICAoYmFzZSAxNikJCVF1YWRyaWNzIEx0ZAotCQkJCTEgQnJpZGV3ZWxsIFN0cmVldAotCQkJCUJyaXN0b2wgIEJTMSAyQUEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNi05QiAgIChoZXgpCQlBbHN0b20gVHJhbnNwb3J0Ci0wMDE2OUIgICAgIChiYXNlIDE2KQkJQWxzdG9tIFRyYW5zcG9ydAotCQkJCTExLCAxMyBhdmVudWUgZGUgQmVsIEFpcgotCQkJCVZpbGxldXJiYW5uZSBSaG9uZSA2OTEwMAotCQkJCUZSQU5DRQotCi0wMC0xNi05QyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE2OUMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi05RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE2OUQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi05RSAgIChoZXgpCQlUViBPbmUgTHRkCi0wMDE2OUUgICAgIChiYXNlIDE2KQkJVFYgT25lIEx0ZAotCQkJCVVuaXQgViBDb250aW5lbnRhbCBBcHByb2FjaAotCQkJCVdlc3R3b29kIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJTWFyZ2F0ZSBLZW50IENUOSA0SkcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNi05RiAgIChoZXgpCQlWaW10cm9uIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAxNjlGICAgICAoYmFzZSAxNikJCVZpbXRyb24gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJN0YuLCBOby45LCBBbGxleSAyLCBMYW5lIDM1Ci0JCQkJSmlodSBSZC4KLQkJCQlOZWlodSBEaXN0cmljdCBUYWlwZWkgQ2l0eSAxMTQ5MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtQTAgICAoaGV4KQkJQXV0by1NYXNraW4KLTAwMTZBMCAgICAgKGJhc2UgMTYpCQlBdXRvLU1hc2tpbgotCQkJCVNvcGhpZSBSYWRpY2hzIFZlaSA3Ci0JCQkJTElMTEVTVFJPTSBBa2Vyc2h1cyAyMDAzCi0JCQkJTk9SV0FZCi0KLTAwLTE2LUExICAgKGhleCkJCTNMZWFmIE5ldHdvcmtzCi0wMDE2QTEgICAgIChiYXNlIDE2KQkJM0xlYWYgTmV0d29ya3MKLQkJCQkzMjU1LTEgU2NvdHQgQmx2ZAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1BMiAgIChoZXgpCQlDZW50cmFMaXRlIFN5c3RlbXMsIEluYy4KLTAwMTZBMiAgICAgKGJhc2UgMTYpCQlDZW50cmFMaXRlIFN5c3RlbXMsIEluYy4KLQkJCQk2NDIwIFdhbGwgU3RyZWV0Ci0JCQkJTW9iaWxlIEFMIDM2Njk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1BMyAgIChoZXgpCQlJbmdldGVhbSBUcmFuc21pc3Npb24mRGlzdHJpYnV0aW9uLCBTLkEuCi0wMDE2QTMgICAgIChiYXNlIDE2KQkJSW5nZXRlYW0gVHJhbnNtaXNzaW9uJkRpc3RyaWJ1dGlvbiwgUy5BLgotCQkJCUMvIFVzYXVzdWFnYSwgNwotCQkJCVBvbC4gQXJ0dW5kdWFnYQotCQkJCUJhc2F1cmkgQml6a2FpYSA0ODk3MAotCQkJCVNQQUlOCi0KLTAwLTE2LUE0ICAgKGhleCkJCUV6dXJpbyBMdGQKLTAwMTZBNCAgICAgKGJhc2UgMTYpCQlFenVyaW8gTHRkCi0JCQkJVW5pdCAyCi0JCQkJMTI2IENvbGluZGFsZSBBdmVudWUKLQkJCQlMb25kb24gIE5XOSA1SEQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNi1BNSAgIChoZXgpCQlUYW5kYmVyZyBTdG9yYWdlIEFTQQotMDAxNkE1ICAgICAoYmFzZSAxNikJCVRhbmRiZXJnIFN0b3JhZ2UgQVNBCi0JCQkJUG9zdGJva3MgMTkxCi0JCQkJMTMyNSBMeXNha2VyCi0JCQkJTk9SV0FZCi0KLTAwLTE2LUE2ICAgKGhleCkJCURvdmFkbyBGWi1MTEMKLTAwMTZBNiAgICAgKGJhc2UgMTYpCQlEb3ZhZG8gRlotTExDCi0JCQkJQWwtVGh1cmF5YSBUb3dlciAxLCBvZmZpY2UgNTA0Ci0JCQkJUC5PLiBCb3ggNTAwNDIyCi0JCQkJRHViYWkgIAotCQkJCVVOSVRFRCBBUkFCIEVNSVJBVEVTCi0KLTAwLTE2LUE3ICAgKGhleCkJCUFXRVRBIEcmUAotMDAxNkE3ICAgICAoYmFzZSAxNikJCUFXRVRBIEcmUAotCQkJCUJ1cmcuIFdpbmtlbGxhYW4gMwotCQkJCU5vb3Rkb3JwICAyNjMxIEhHCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTYtQTggICAoaGV4KQkJQ1dUIENPLiwgTFRELgotMDAxNkE4ICAgICAoYmFzZSAxNikJCUNXVCBDTy4sIExURC4KLQkJCQkxMEYgTm8uIDc0IFNlYy4gMSBDaHVuZy1IdWEgUmQuCi0JCQkJVGFpcGVpICAxMDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUE5ICAgKGhleCkJCTJFSQotMDAxNkE5ICAgICAoYmFzZSAxNikJCTJFSQotCQkJCVJ1YSBkb3MgUnViaXMsIDc3IC0gQXNzdW1wY2FvCi0JCQkJQWd1YXMgZGUgTGluZG9pYSBTYW8gUGF1bG8gMTM5NDAtMDAwCi0JCQkJQlJBWklMCi0KLTAwLTE2LUFBICAgKGhleCkJCUtlaSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgSW5jLgotMDAxNkFBICAgICAoYmFzZSAxNikJCUtlaSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgSW5jLgotCQkJCTgtQkFOIENIVU9VCi0JCQkJS09CRSBIWU9HTyA2NTAtMDAyNAotCQkJCUpBUEFOCi0KLTAwLTE2LUFCICAgKGhleCkJCVBCSS1EYW5zZW5zb3IgQS9TCi0wMDE2QUIgICAgIChiYXNlIDE2KQkJUEJJLURhbnNlbnNvciBBL1MKLQkJCQlSb2VubmVkZXZlaiAxOAotCQkJCVJpbmdzdGVkICBESy00MTAwCi0JCQkJREVOTUFSSwotCi0wMC0xNi1BQyAgIChoZXgpCQlUb2hvIFRlY2hub2xvZ3kgQ29ycC4KLTAwMTZBQyAgICAgKGJhc2UgMTYpCQlUb2hvIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQlISUdBU0hJIDUtMQotCQkJCU9SSVpVU0hJTU9NQUNISQotCQkJCUlOQVpBV0EtQ0lUWSBBSUNISSA0OTItODUwMQotCQkJCUpBUEFOCi0KLTAwLTE2LUFEICAgKGhleCkJCUJULUxpbmtzIENvbXBhbnkgTGltaXRlZAotMDAxNkFEICAgICAoYmFzZSAxNikJCUJULUxpbmtzIENvbXBhbnkgTGltaXRlZAotCQkJCVJtIDgwMiwgTmFuIEZ1bmcgQ2VudHJlLCAyNjQtMjk4IENhc3RsZSBQZWFrIFJkCi0JCQkJVHN1ZW4gV2FuCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE2LUFFICAgKGhleCkJCUlOVkVOVEVMCi0wMDE2QUUgICAgIChiYXNlIDE2KQkJSU5WRU5URUwKLQkJCQkzNSBydWUgVG91cm5lZm9ydAotCQkJCVBBUklTICA3NTAwNQotCQkJCUZSQU5DRQotCi0wMC0xNi1BRiAgIChoZXgpCQlTaGVuemhlbiBVbmlvbiBOZXR3b3JrcyBFcXVpcG1lbnQgQ28uLEx0ZC4KLTAwMTZBRiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBVbmlvbiBOZXR3b3JrcyBFcXVpcG1lbnQgQ28uLEx0ZC4KLQkJCQlZaWhhaSBTcXVhcmUgZWFzdCBidWlsZGluZyAyMzA3LCBDaHVhbmd5ZSByb2FkLCBOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NAotCQkJCUNISU5BCi0KLTAwLTE2LUIwICAgKGhleCkJCVZLIENvcnBvcmF0aW9uCi0wMDE2QjAgICAgIChiYXNlIDE2KQkJVksgQ29ycG9yYXRpb24KLQkJCQlWSyBCL0QsIDU0OC02LCBBbnlhbmcgOGRvbmcsIE1hbmFuLWd1Ci0JCQkJQW55YW5nIEt5b3VuZ2dpIDQzMC04OTAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LUIxICAgKGhleCkJCUtCUwotMDAxNkIxICAgICAoYmFzZSAxNikJCUtCUwotCQkJCTg4IHJ1ZSBQaWVycmUgU8OpbWFyZAotCQkJCUJQIDU1Ci0JCQkJTW9pc3N5IGNlZGV4IElsZSBkZSBGcmFuY2UgNzc1NTIKLQkJCQlGUkFOQ0UKLQotMDAtMTYtQjIgICAoaGV4KQkJRHJpdmVDYW0gSW5jCi0wMDE2QjIgICAgIChiYXNlIDE2KQkJRHJpdmVDYW0gSW5jCi0JCQkJMzk1NCBNdXJwaHkgQ2FueW9uIFJvYWQKLQkJCQlTdWl0ZSBEMjA1Ci0JCQkJU2FuIERpZWdvIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1CMyAgIChoZXgpCQlQaG90b25pY2JyaWRnZXMgKENoaW5hKSBDby4sIEx0ZC4KLTAwMTZCMyAgICAgKGJhc2UgMTYpCQlQaG90b25pY2JyaWRnZXMgKENoaW5hKSBDby4sIEx0ZC4KLQkJCQlOby4gOTAwLCBZaXNoYW4gcm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMTYtQjQgICAoaGV4KQkJUFJJVkFURQotMDAxNkI0ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0xNi1CNSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxNkI1ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQjYgICAoaGV4KQkJQ2lzY28tTGlua3N5cwotMDAxNkI2ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMKLQkJCQkxMjEgVGhlb3J5Ci0JCQkJSXJ2aW5lIENBIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1CNyAgIChoZXgpCQlTZW91bCBDb21tdGVjaAotMDAxNkI3ICAgICAoYmFzZSAxNikJCVNlb3VsIENvbW10ZWNoCi0JCQkJNDQ4LTExLCBTZW9uZ25hZSAzZG9uZy4gR2FuZ2RvbmcgZ3UsCi0JCQkJU2VvdWwgIDEzNDAzMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi1COCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAxNkI4ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2vDpW5lIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTAwLTE2LUI5ICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcKLTAwMTZCOSAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZAotCQkJCU1TIDU2NjIKLQkJCQlSb3NldmlsbGUgQ0EgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUJBICAgKGhleCkJCVdFQVRIRVJORVdTIElOQy4KLTAwMTZCQSAgICAgKGJhc2UgMTYpCQlXRUFUSEVSTkVXUyBJTkMuCi0JCQkJTkFLQVNFIDEtMyBNVEcKLQkJCQlDSElCQSAgMjYyLTAwMzIKLQkJCQlKQVBBTgotCi0wMC0xNi1CQiAgIChoZXgpCQlMYXctQ2hhaW4gQ29tcHV0ZXIgVGVjaG5vbG9neSBDbyBMdGQKLTAwMTZCQiAgICAgKGJhc2UgMTYpCQlMYXctQ2hhaW4gQ29tcHV0ZXIgVGVjaG5vbG9neSBDbyBMdGQKLQkJCQk3Ri0yLCAyODYtNCwgaHNpbiB5YSByb2FkLCBjaGllbiBjaGVuIGRpc3RyaWN0Ci0JCQkJS2FvaHNpdW5nICA4MDY3MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtQkMgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTZCQyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTYtQkQgICAoaGV4KQkJQVRJIEluZHVzdHJpYWwgQXV0b21hdGlvbgotMDAxNkJEICAgICAoYmFzZSAxNikJCUFUSSBJbmR1c3RyaWFsIEF1dG9tYXRpb24KLQkJCQkxMDMxIEdvb2R3b3J0aCBEcml2ZQotCQkJCUFwZXggTm9ydGggQ2Fyb2xpbmEgMjc1MzktMzg2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQkUgICAoaGV4KQkJSU5GUkFORVQsIEluYy4KLTAwMTZCRSAgICAgKGJhc2UgMTYpCQlJTkZSQU5FVCwgSW5jLgotCQkJCTh0aCBGbG9vciwgQ293ZWxsIEIvRCwgNjYtMQotCQkJCUJhbnBvLURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAxMzctMDQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LUJGICAgKGhleCkJCVBhbG9ERXggR3JvdXAgT3kKLTAwMTZCRiAgICAgKGJhc2UgMTYpCQlQYWxvREV4IEdyb3VwIE95Ci0JCQkJUC5PLiBCb3ggNjQKLQkJCQlOYWhrZWxhbnRpZSAxNjAKLQkJCQlUdXVzdWxhICAwNDMwMQotCQkJCUZJTkxBTkQKLQotMDAtMTYtQzAgICAoaGV4KQkJU2VtdGVjaCBDb3Jwb3JhdGlvbgotMDAxNkMwICAgICAoYmFzZSAxNikJCVNlbXRlY2ggQ29ycG9yYXRpb24KLQkJCQkyMDAgRmx5bm4gUmQKLQkJCQlDYW1hcmlsbG8gQ2FsaWZvcm5pYSA5MzAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQzEgICAoaGV4KQkJRWxla3NlbiBMdGQKLTAwMTZDMSAgICAgKGJhc2UgMTYpCQlFbGVrc2VuIEx0ZAotCQkJCVBpbmV3b29kIFN0dWRpb3MKLQkJCQlJdmVyIEhlYXRoCi0JCQkJSXZlciBCdWNrcyBTTDAgME5ICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtQzIgICAoaGV4KQkJQXZ0ZWMgU3lzdGVtcyBJbmMKLTAwMTZDMiAgICAgKGJhc2UgMTYpCQlBdnRlYyBTeXN0ZW1zIEluYwotCQkJCTE0NDMyIEFsYmVtYXJsZSBQb2ludCBQbGFjZQotCQkJCUNoYW50aWxseSBWaXJnaW5pYSAyMDE1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQzMgICAoaGV4KQkJQkEgU3lzdGVtcyBJbmMKLTAwMTZDMyAgICAgKGJhc2UgMTYpCQlCQSBTeXN0ZW1zIEluYwotCQkJCTY4OTUgVmlhIERlbCBPcm8KLQkJCQlTYW4gSm9zZSBDQSA5NTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQzQgICAoaGV4KQkJU2lSRiBUZWNobm9sb2d5LCBJbmMuCi0wMDE2QzQgICAgIChiYXNlIDE2KQkJU2lSRiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjE3IERldmNvbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtQzUgICAoaGV4KQkJU2hlbnpoZW4gWGluZyBGZW5nIEluZHVzdHJ5IENvLixMdGQKLTAwMTZDNSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBYaW5nIEZlbmcgSW5kdXN0cnkgQ28uLEx0ZAotCQkJCUZsb29yIDEgLSA0LCBCbG9jayAyNSwgSG9uZ3RpYW4gSmlueXVhbiBJbmR1c3RyaWFsLAotCQkJCUhvbmd0aWFuIFJvYWQgSHVhbmdwdSwgU2hhamluLCBCYW9hbiwKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgODYKLQkJCQlDSElOQQotCi0wMC0xNi1DNiAgIChoZXgpCQlOb3J0aCBBdGxhbnRpYyBJbmR1c3RyaWVzCi0wMDE2QzYgICAgIChiYXNlIDE2KQkJTm9ydGggQXRsYW50aWMgSW5kdXN0cmllcwotCQkJCTE3MCBXaWxidXIgUGxhY2UKLQkJCQlCb2hlbWlhIE5ZIDExNzE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE2QzcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DOCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE2QzggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DOSAgIChoZXgpCQlOQVQgU2VhdHRsZSwgSW5jLgotMDAxNkM5ICAgICAoYmFzZSAxNikJCU5BVCBTZWF0dGxlLCBJbmMuCi0JCQkJMjIxMjUgMTd0aCBBdmUgU0UKLQkJCQlCb3RoZWxsIFdBIDk4MDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DQSAgIChoZXgpCQlOb3J0ZWwKLTAwMTZDQSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQsIFN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNi1DQiAgIChoZXgpCQlBcHBsZSBDb21wdXRlcgotMDAxNkNCICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyCi0JCQkJMSBJbmZpbml0ZSBMb29wIE1TOjM1R1BPCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1DQyAgIChoZXgpCQlYY3V0ZSBNb2JpbGUgQ29ycC4KLTAwMTZDQyAgICAgKGJhc2UgMTYpCQlYY3V0ZSBNb2JpbGUgQ29ycC4KLQkJCQkzRi4gTm8uMjUsIEFsbHkxNSwgTGFuZSAxMjAsIFNlYy4xLCBOZWlodSBSZC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtQ0QgICAoaGV4KQkJSElKSSBISUdILVRFQ0ggQ08uLCBMVEQuCi0wMDE2Q0QgICAgIChiYXNlIDE2KQkJSElKSSBISUdILVRFQ0ggQ08uLCBMVEQuCi0JCQkJT2hnYSA4MTMzCi0JCQkJSGlqaQotCQkJCUhheWFtaSBPaXRhIDg3OS0xNTA0Ci0JCQkJSkFQQU4KLQotMDAtMTYtQ0UgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMTZDRSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCTY2LCBDaHVuZyBTaGFuIFJkLiBUdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1DRiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAxNkNGICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNjYsIENodW5nIFNoYW4gUmQuIFR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUQwICAgKGhleCkJCUFUZWNoIGVsZWt0cm9uaWthIGQuby5vLgotMDAxNkQwICAgICAoYmFzZSAxNikJCUFUZWNoIGVsZWt0cm9uaWthIGQuby5vLgotCQkJCUJhYyBwcmkgTWF0ZXJpamkgMzAKLQkJCQlNYXRlcmlqYSBTSSA2MjQyCi0JCQkJU0xPVkVOSUEKLQotMDAtMTYtRDEgICAoaGV4KQkJWkFUIGEucy4KLTAwMTZEMSAgICAgKGJhc2UgMTYpCQlaQVQgYS5zLgotCQkJCUsgUG9kbGVzaSA1NDEKLQkJCQlQcmlicmFtIFZJICAyNjE4MAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTE2LUQyICAgKGhleCkJCUNhc3BpYW4KLTAwMTZEMiAgICAgKGJhc2UgMTYpCQlDYXNwaWFuCi0JCQkJMTcwIEJheXRlY2ggRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRDMgICAoaGV4KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotMDAxNkQzICAgICAoYmFzZSAxNikJCVdpc3Ryb24gQ29ycG9yYXRpb24KLQkJCQkyMUYsIDg4LCBTZWMuMSwgSHNpbiBUYWkgV3UgUmQuLCBIc2ljaGloLAotCQkJCVRhaXBlaSBIc2llbiAgMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1ENCAgIChoZXgpCQlDb21wYWwgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMTZENCAgICAgKGJhc2UgMTYpCQlDb21wYWwgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk3dGgsIEZMLCBOby4gMzE5LCBTZWMuIDQsIFBhLVRlaCByZC4KLQkJCQlUYWlwZWkgIDg4NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtRDUgICAoaGV4KQkJU3luY2NvbSBDby4sIEx0ZAotMDAxNkQ1ICAgICAoYmFzZSAxNikJCVN5bmNjb20gQ28uLCBMdGQKLQkJCQkjMzA2IE15dW5naSBlLXNwYWNlICAyMTgtMjAKLQkJCQlBbnlhbmc3LWRvbmcgTWFuYW4tZ3UKLQkJCQlBbnlhbmctc2kgS3l1bmdraS1kbyA0MzAtODE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE2LUQ2ICAgKGhleCkJCVREQSBUZWNoIFB0eSBMdGQKLTAwMTZENiAgICAgKGJhc2UgMTYpCQlUREEgVGVjaCBQdHkgTHRkCi0JCQkJMjEwIC8gNTQgQ3VycmllIFN0cmVldAotCQkJCUFkZWxhaWRlIFNvdXRoIEF1c3RyYWxpYSA1MDAwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTE2LUQ3ICAgKGhleCkJCVN1bndheXMgQUcKLTAwMTZENyAgICAgKGJhc2UgMTYpCQlTdW53YXlzIEFHCi0JCQkJTWFjYWlyZXN0ci4zLTUKLQkJCQlLb25zdGFueiBCYWRlbiBXw7xydHRlbWJlcmcgNzg0NjcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE2LUQ4ICAgKGhleCkJCVNlbmVhIEFCCi0wMDE2RDggICAgIChiYXNlIDE2KQkJU2VuZWEgQUIKLQkJCQlGw4PCtnJldGFnc2FsbGVuIDEyCi0JCQkJw4PigKZrZXJzYmVyZ2EgIDE4NDg0Ci0JCQkJU1dFREVOCi0KLTAwLTE2LUQ5ICAgKGhleCkJCU5JTkdCTyBCSVJEIENPLixMVEQuCi0wMDE2RDkgICAgIChiYXNlIDE2KQkJTklOR0JPIEJJUkQgQ08uLExURC4KLQkJCQlOby45OTkgRGFjaGVuZyBFYXN0IFJvYWQKLQkJCQlGZW5naHVhIFpoZWppYW5nIDMxNTUwMAotCQkJCUNISU5BCi0KLTAwLTE2LURBICAgKGhleCkJCUZ1dHJvbmljIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTAwMTZEQSAgICAgKGJhc2UgMTYpCQlGdXRyb25pYyBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJUm9vbSAxMDE2QSwgMTAvRi4sIFByb2ZpdCBJbmQuIEJsZGcuLAotCQkJCTEtMTUgS3dhaSBGdW5nIENyZXNjZW50LAotCQkJCUt3YWkgQ2h1bmcgIDAwMDAwCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE2LURCICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE2REIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWktQ2l0eSBHeWVvbmctQnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtREMgICAoaGV4KQkJQVJDSE9TCi0wMDE2REMgICAgIChiYXNlIDE2KQkJQVJDSE9TCi0JCQkJMTIgcnVlIEFNUEVSRQotCQkJCUlHTlkgRVNTT05ORVMgOTE0MzAKLQkJCQlGUkFOQ0UKLQotMDAtMTYtREQgICAoaGV4KQkJR2lnYWJlYW0gQ29ycG9yYXRpb24KLTAwMTZERCAgICAgKGJhc2UgMTYpCQlHaWdhYmVhbSBDb3Jwb3JhdGlvbgotCQkJCTQwNyBTcHJpbmdwYXJrIFBsYWNlCi0JCQkJU3RlIDkwMAotCQkJCUhlcm5kb24gVkEgMjAxNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LURFICAgKGhleCkJCUZBU1QgSW5jCi0wMDE2REUgICAgIChiYXNlIDE2KQkJRkFTVCBJbmMKLQkJCQk5MDUgSG9uZXlzcG90IFJkCi0JCQkJU3RyYXRmb3JkIENUIDA2NjE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1ERiAgIChoZXgpCQlMdW5kaW5vdmEgQUIKLTAwMTZERiAgICAgKGJhc2UgMTYpCQlMdW5kaW5vdmEgQUIKLQkJCQlEYWxieXZhZ2VuIDEKLQkJCQlMdW5kIFNrYWFuZSBTRS0yMjQgNjAKLQkJCQlTV0VERU4KLQotMDAtMTYtRTAgICAoaGV4KQkJM0NvbSBMdGQKLTAwMTZFMCAgICAgKGJhc2UgMTYpCQkzQ29tIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlQZW9wbGVidWlsZGluZyBFc3RhdGUsIE1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cyBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtRTEgICAoaGV4KQkJU2lsaWNvblN0b3IsIEluYy4KLTAwMTZFMSAgICAgKGJhc2UgMTYpCQlTaWxpY29uU3RvciwgSW5jLgotCQkJCTQ4NDMwIExha2V2aWV3IEJsdmQuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRTIgICAoaGV4KQkJQW1lcmljYW4gRmliZXJ0ZWssIEluYy4KLTAwMTZFMiAgICAgKGJhc2UgMTYpCQlBbWVyaWNhbiBGaWJlcnRlaywgSW5jLgotCQkJCTEyMCBCZWxtb250IERyaXZlCi0JCQkJU29tZXJzZXQgTmV3IEplcnNleSAwODg3My0xMjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1FMyAgIChoZXgpCQlBU0tFWSBDT01QVVRFUiBDT1JQLgotMDAxNkUzICAgICAoYmFzZSAxNikJCUFTS0VZIENPTVBVVEVSIENPUlAuCi0JCQkJMTBGLCBOTy4xMTksIENISUVOS0FORyBSRC4sCi0JCQkJQ0hVTkctSE8sIFRBSVBFSSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNi1FNCAgIChoZXgpCQlWQU5HVUFSRCBTRUNVUklUWSBFTkdJTkVFUklORyBDT1JQLgotMDAxNkU0ICAgICAoYmFzZSAxNikJCVZBTkdVQVJEIFNFQ1VSSVRZIEVOR0lORUVSSU5HIENPUlAuCi0JCQkJMywgTEFORSAzMiwgS1NPIENISU5HIFJELgotCQkJCVlBTkdNRUkgVEFPWVVBTiAzMjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUU1ICAgKGhleCkJCUZPUkRMRVkgREVWRUxPUE1FTlQgTElNSVRFRAotMDAxNkU1ICAgICAoYmFzZSAxNikJCUZPUkRMRVkgREVWRUxPUE1FTlQgTElNSVRFRAotCQkJCVJPT00gNzA2LCA3VEggRkxPT1IsIFlVIFNVTkcgQk9PTiBCVUlMRElORywgMTA3LTExMSBERVMgVk9FVVggUk9BRCwgQ0VOVFJBTCwKLQkJCQlIT05HIEtPTkcKLQotMDAtMTYtRTYgICAoaGV4KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLTAwMTZFNiAgICAgKGJhc2UgMTYpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCVBpbi1KZW4gQ2l0eSwgVGFveXVhbgotCQkJCTMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtRTcgICAoaGV4KQkJRHluYW1peCBQcm9tb3Rpb25zIExpbWl0ZWQKLTAwMTZFNyAgICAgKGJhc2UgMTYpCQlEeW5hbWl4IFByb21vdGlvbnMgTGltaXRlZAotCQkJCTc4OC03OTAsIEZpbmNobGV5IFJvYWQKLQkJCQlMb25kb24gIE5XMTEgN1RKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTYtRTggICAoaGV4KQkJU2lnbWEgRGVzaWducywgSW5jLgotMDAxNkU4ICAgICAoYmFzZSAxNikJCVNpZ21hIERlc2lnbnMsIEluYy4KLQkJCQkxNzc4IE1jQ2FydGh5IEJsdmQuCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUU5ICAgKGhleCkJCVRpYmEgTWVkaWNhbCBJbmMKLTAwMTZFOSAgICAgKGJhc2UgMTYpCQlUaWJhIE1lZGljYWwgSW5jCi0JCQkJNTAyNCBMYWtld29vZCBEcml2ZQotCQkJCVBsYW5vIFRYIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1FQSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxNkVBICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggUGFyayAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsgS3VsaW0gMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xNi1FQiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxNkVCICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTYtRUMgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zIENvLiwgTHRkLgotMDAxNkVDICAgICAoYmFzZSAxNikJCUVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcyBDby4sIEx0ZC4KLQkJCQlOby4gMjIsIEFsbGV5IDM4LCBMYW5lIDkxLCBTZWMuIDEsIE5laSBIdSBSb2FkLAotCQkJCVRhaXBlaSAgMTE0NDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUVEICAgKGhleCkJCURpZ2l0YWwgU2FmZXR5IFRlY2hub2xvZ2llcywgSW5jCi0wMDE2RUQgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBTYWZldHkgVGVjaG5vbG9naWVzLCBJbmMKLQkJCQk1MTEgRGF2aXMgRHJpdmUKLQkJCQlTdWl0ZSAzMDAKLQkJCQlNb3JyaXN2aWxsZSBOQyAyNzU2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRUUgICAoaGV4KQkJUm95YWxEaWdpdGFsIEluYy4KLTAwMTZFRSAgICAgKGJhc2UgMTYpCQlSb3lhbERpZ2l0YWwgSW5jLgotCQkJCThGLiwgTm8uMzA4LCBTZWMuMSwgTmVpaHUgUmQuCi0JCQkJTmVpaHUgRGlzdHJpY3QsCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTYtRUYgICAoaGV4KQkJS29rbyBGaXRuZXNzLCBJbmMuCi0wMDE2RUYgICAgIChiYXNlIDE2KQkJS29rbyBGaXRuZXNzLCBJbmMuCi0JCQkJMTM2IExvbmd3YXRlciBEcml2ZQotCQkJCU5vcndlbGwgTUEgMDIwNjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUYwICAgKGhleCkJCURlbGwKLTAwMTZGMCAgICAgKGJhc2UgMTYpCQlEZWxsCi0JCQkJOTA5IEhlcm1vc2EgQ3QKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE2LUYxICAgKGhleCkJCU9tbmlTZW5zZSwgTExDCi0wMDE2RjEgICAgIChiYXNlIDE2KQkJT21uaVNlbnNlLCBMTEMKLQkJCQkyIFJvYmluIERyaXZlCi0JCQkJTGFkeXMgSXNsYW5kIFNDIDI5OTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1GMiAgIChoZXgpCQlEbW9iaWxlIFN5c3RlbSBDby4sIEx0ZC4KLTAwMTZGMiAgICAgKGJhc2UgMTYpCQlEbW9iaWxlIFN5c3RlbSBDby4sIEx0ZC4KLQkJCQkyRiwgTm8uMTMtMjAsIFNlYy42LCBNaW5jeXVhbiBFLlJkLAotCQkJCU5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUYzICAgKGhleCkJCUNBU1QgSW5mb3JtYXRpb24gQ28uLCBMdGQKLTAwMTZGMyAgICAgKGJhc2UgMTYpCQlDQVNUIEluZm9ybWF0aW9uIENvLiwgTHRkCi0JCQkJNUYgTVNBIEJsZGcuIDg5MS00MyBEYWNjaGktRG9uZywKLQkJCQlnYW5nbmFtLUd1Ci0JCQkJU0VPVUwgIDEzNS0yODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtRjQgICAoaGV4KQkJRWlkaWNvbSBDby4sIEx0ZC4KLTAwMTZGNCAgICAgKGJhc2UgMTYpCQlFaWRpY29tIENvLiwgTHRkLgotCQkJCVBvbHljaGVtIEIvRCA0dGggRmxvb3IsIDkwMC0xCi0JCQkJS3dhbnlhbmctZG9uZywgRG9uZ2FuLWt1Ci0JCQkJQW55YW5nLXNpIEt5ZW9uZ2dpLWRvIDQzMS0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTYtRjUgICAoaGV4KQkJRGFsaWFuIEdvbGRlbiBIdWFsdSBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxNkY1ICAgICAoYmFzZSAxNikJCURhbGlhbiBHb2xkZW4gSHVhbHUgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4xIEh1YSBSb2FkLFFpeGlhbmxpbmcKLQkJCQlEYWxpYW4gTGlhb05pbmcgMTE2MDIzCi0JCQkJQ0hJTkEKLQotMDAtMTYtRjYgICAoaGV4KQkJVmlkZW8gUHJvZHVjdHMgR3JvdXAKLTAwMTZGNiAgICAgKGJhc2UgMTYpCQlWaWRlbyBQcm9kdWN0cyBHcm91cAotCQkJCTE2MDAgRW1lcnNvbiBBdmVudWUKLQkJCQlPeG5hcmQgQ2FsaWZvcm5pYSA5MzAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTYtRjcgICAoaGV4KQkJTC0zIENvbW11bmljYXRpb25zLCBFbGVjdHJvZHluYW1pY3MsIEluYy4KLTAwMTZGNyAgICAgKGJhc2UgMTYpCQlMLTMgQ29tbXVuaWNhdGlvbnMsIEVsZWN0cm9keW5hbWljcywgSW5jLgotCQkJCTEyMDAgSGlja3MgUmQuCi0JCQkJUm9sbGluZyBNZWFkb3dzIElMIDYwMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNi1GOCAgIChoZXgpCQlBVklRVEVDSCBURUNITk9MT0dZIENPLiwgTFRELgotMDAxNkY4ICAgICAoYmFzZSAxNikJCUFWSVFURUNIIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJNkYgMTIsIExpLWhzaW4gUm9hZCwgU0JJUAotCQkJCUhzaW4tY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE2LUY5ICAgKGhleCkJCUNFVFJUQSBQT1QsIGQuby5vLiwgS3JhbmoKLTAwMTZGOSAgICAgKGJhc2UgMTYpCQlDRVRSVEEgUE9ULCBkLm8uby4sIEtyYW5qCi0JCQkJUGxhbmluYSAzCi0JCQkJS3JhbmogU0kgNDAwMAotCQkJCVNMT1ZFTklBCi0KLTAwLTE2LUZBICAgKGhleCkJCUVDSSBUZWxlY29tIEx0ZC4KLTAwMTZGQSAgICAgKGJhc2UgMTYpCQlFQ0kgVGVsZWNvbSBMdGQuCi0JCQkJMzAgSGFzaXZpbSBTdC4KLQkJCQlQZXRhaCBUaWt2YSAgNDkxMzMKLQkJCQlJU1JBRUwKLQotMDAtMTYtRkIgICAoaGV4KQkJU0hFTlpIRU4gTVRDIENPLixMVEQuCi0wMDE2RkIgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gTVRDIENPLixMVEQuCi0JCQkJNS9GIEJlbll1YW4gQmxkZyw2MDE1IFNoZW5OYW4gUm9hZAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0xNi1GQyAgIChoZXgpCQlUT0hLRU4gQ08uLExURC4KLTAwMTZGQyAgICAgKGJhc2UgMTYpCQlUT0hLRU4gQ08uLExURC4KLQkJCQkyLTE2LTIwIFRhbWFnYXdhCi0JCQkJQ2hvZnUgVG9reW8gMTgyLTAwMjUKLQkJCQlKQVBBTgotCi0wMC0xNi1GRCAgIChoZXgpCQlKYXR5IEVsZWN0cm9uaWNzCi0wMDE2RkQgICAgIChiYXNlIDE2KQkJSmF0eSBFbGVjdHJvbmljcwotCQkJCUphdHkgQmxkZyAxMEYsIDE2NTktNSBCb25nY2h1bjExLURvbmcKLQkJCQlLd2FuYWstS3UKLQkJCQlTZW91bCAgMTUxLTgzMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNi1GRSAgIChoZXgpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0wMDE2RkUgICAgIChiYXNlIDE2KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGksCi0JCQkJU29tYS1jaXR5LCBGdWt1c2hpbWEtcHJlZi4sIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMTYtRkYgICAoaGV4KQkJV2FtaW4gT3B0b2NvbW0gTWZnIENvcnAKLTAwMTZGRiAgICAgKGJhc2UgMTYpCQlXYW1pbiBPcHRvY29tbSBNZmcgQ29ycAotCQkJCU5vLiAyMzkgUWlhb2hlIFJvYWQKLQkJCQlaaG9uZ2hlIENpdHkgVGFpcGVpIENvdW50eSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTAwICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE3MDAgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVVMgSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0wMSAgIChoZXgpCQlLREUsIEluYy4KLTAwMTcwMSAgICAgKGJhc2UgMTYpCQlLREUsIEluYy4KLQkJCQlLREUgVE9XTiwgNDItNywgTWFuZ3dvbC1kb25nCi0JCQkJSGFuYW0gR3llb25nZ2ktZG8gNDY1LTE1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy0wMiAgIChoZXgpCQlPc3VuZyBNaWRpY29tIENvLiwgTHRkCi0wMDE3MDIgICAgIChiYXNlIDE2KQkJT3N1bmcgTWlkaWNvbSBDby4sIEx0ZAotCQkJCTIzMS0xOCwgRG9yaW0yLWRvbmcsCi0JCQkJU2VvdWwsIFlvdW5nZGV1bmdwby1ndSAxNTAtODMyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LTAzICAgKGhleCkJCU1PU0RBTiBJbnRlcm5hdGlvbiBDby4sTHRkCi0wMDE3MDMgICAgIChiYXNlIDE2KQkJTU9TREFOIEludGVybmF0aW9uIENvLixMdGQKLQkJCQlOby43NCBDaGVnZ3VuZyBTaGludHN1ZW4sU2hhbmh1YSBKZW4sCi0JCQkJVGFpbmFuICA3NDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTA0ICAgKGhleCkJCVNoaW5jbyBFbGVjdHJvbmljcyBHcm91cCBDby4sTHRkCi0wMDE3MDQgICAgIChiYXNlIDE2KQkJU2hpbmNvIEVsZWN0cm9uaWNzIEdyb3VwIENvLixMdGQKLQkJCQlOby41IFdhaWh1YW4gUm9hZAotCQkJCUNoYW5nemhvdSBKaWFuZ3N1IDIxMzAyMgotCQkJCUNISU5BCi0KLTAwLTE3LTA1ICAgKGhleCkJCU1ldGhvZGUgRWxlY3Ryb25pY3MKLTAwMTcwNSAgICAgKGJhc2UgMTYpCQlNZXRob2RlIEVsZWN0cm9uaWNzCi0JCQkJNzQwMSBXLiBXaWxzb24KLQkJCQlDaGljYWdvIElMIDYwNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0wNiAgIChoZXgpCQlUZWNoZmFpdGggV2lyZWxlc3MgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IExpbWl0ZWQuCi0wMDE3MDYgICAgIChiYXNlIDE2KQkJVGVjaGZhaXRoIFdpcmVsZXNzIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBMaW1pdGVkLgotCQkJCTIvRiBNOCBXZXN0IE5vLjEgSml1IFhpYW4gUWlhbyBEb25nIFJvYWQsCi0JCQkJQ2hhbyBZYW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDE2Ci0JCQkJQ0hJTkEKLQotMDAtMTctMDcgICAoaGV4KQkJSW5HcmlkLCBJbmMKLTAwMTcwNyAgICAgKGJhc2UgMTYpCQlJbkdyaWQsIEluYwotCQkJCTkyMCBDYXNzYXR0IFJkCi0JCQkJU3VpdGUgMjIwCi0JCQkJQmVyd3luIFBhIDE5MzEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0wOCAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAxNzA4ICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0wOSAgIChoZXgpCQlFeGFsdCBDb21tdW5pY2F0aW9ucwotMDAxNzA5ICAgICAoYmFzZSAxNikJCUV4YWx0IENvbW11bmljYXRpb25zCi0JCQkJNTgwIERpdmlzaW9uIFN0cmVldAotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0wQSAgIChoZXgpCQlJTkVXIERJR0lUQUwgQ09NUEFOWQotMDAxNzBBICAgICAoYmFzZSAxNikJCUlORVcgRElHSVRBTCBDT01QQU5ZCi0JCQkJU3VwcGx5IEJ1cmVhdSAzdGggZmxvb3IgS1QmRyAyMDMtMSwKLQkJCQlQeW9uZyBjaG9uLWRvbmcsIERhZWRlb2cKLQkJCQlEYWVqZW9uICAzMDYtNzEyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LTBCICAgKGhleCkJCUNvbnRlbGEsIEluYy4KLTAwMTcwQiAgICAgKGJhc2UgMTYpCQlDb250ZWxhLCBJbmMuCi0JCQkJNi04IFNvb25hZS1kb25nLCBCdW5kYW5nLWd1LAotCQkJCTV0aCBGbG9vciwgS29yZWEgRmlyc3QgQmxkZy4sCi0JCQkJU3VuZ25hbSBLeXVuZ2dpLWRvIDQ2My04MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctMEMgICAoaGV4KQkJVHdpZyBDb20gTHRkLiAKLTAwMTcwQyAgICAgKGJhc2UgMTYpCQlUd2lnIENvbSBMdGQuIAotCQkJCU1lcmluaWl0eW5rYXR1IDExCi0JCQkJU2FsbyAyNDAwCi0JCQkJRklOTEFORAotCi0wMC0xNy0wRCAgIChoZXgpCQlEdXN0IE5ldHdvcmtzIEluYy4KLTAwMTcwRCAgICAgKGJhc2UgMTYpCQlEdXN0IE5ldHdvcmtzIEluYy4KLQkJCQkzMDY5NSBIdW50d29vZCBBdmUuCi0JCQkJSGF5d2FyZCBDYS4gOTQ1NDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTBFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTcwRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTBGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTcwRiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTEwICAgKGhleCkJCUNhc2EgU3lzdGVtcyBJbmMuCi0wMDE3MTAgICAgIChiYXNlIDE2KQkJQ2FzYSBTeXN0ZW1zIEluYy4KLQkJCQkxMCwgTmV3IEVuZ2xhbmQgQnVzaW5lc3MgQ2VudGVyIERyLgotCQkJCVN1aXRlIDExMAotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTExICAgKGhleCkJCUdFIEhlYWx0aGNhcmUgQmlvLVNjaWVuY2VzIEFCCi0wMDE3MTEgICAgIChiYXNlIDE2KQkJR0UgSGVhbHRoY2FyZSBCaW8tU2NpZW5jZXMgQUIKLQkJCQlCasO2cmtnYXRhbiAzMAotCQkJCVVwcHNhbGEgU0UgNzUxODQKLQkJCQlTV0VERU4KLQotMDAtMTctMTIgICAoaGV4KQkJSVNDTyBJbnRlcm5hdGlvbmFsCi0wMDE3MTIgICAgIChiYXNlIDE2KQkJSVNDTyBJbnRlcm5hdGlvbmFsCi0JCQkJMTAwMSBDYW1icmlkZ2UgRHJpdmUKLQkJCQlFbGsgR3JvdmUgVmlsbGFnZSBJTCA2MDAwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMTMgICAoaGV4KQkJVGlnZXIgTmV0Q29tCi0wMDE3MTMgICAgIChiYXNlIDE2KQkJVGlnZXIgTmV0Q29tCi0JCQkJSi0xNSBNdWRhbiBDdW4sIFlpamluZyBIdWF5dWFuLAotCQkJCUFpZ3VvIFJvYWQsIEx1b2h1IERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDMKLQkJCQlDSElOQQotCi0wMC0xNy0xNCAgIChoZXgpCQlCUiBDb250cm9scyBOZWRlcmxhbmQgYnYKLTAwMTcxNCAgICAgKGJhc2UgMTYpCQlCUiBDb250cm9scyBOZWRlcmxhbmQgYnYKLQkJCQlCcmFuZGVyd2VnIDEKLQkJCQlad29sbGUgT3Zlcmlqc3NlbCA4MDQyIFBECi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTctMTUgICAoaGV4KQkJUXN0aWsKLTAwMTcxNSAgICAgKGJhc2UgMTYpCQlRc3RpawotCQkJCUNhcnRlbCBCdXNpbmVzcyBFc3RhdGUKLQkJCQlFZGluYnVyZ2ggV2F5Ci0JCQkJSGFybG93IEVzc2V4IENNMjAgMlRUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTctMTYgICAoaGV4KQkJUW5vIFRlY2hub2xvZ3kgSW5jLgotMDAxNzE2ICAgICAoYmFzZSAxNikJCVFubyBUZWNobm9sb2d5IEluYy4KLQkJCQk2Ri0yLCBOby4yNSwgUHVkaW5nIFJvYWQKLQkJCQlIc2luY2h1IFRhaXdhbiAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTE3ICAgKGhleCkJCUxlaWNhIEdlb3N5c3RlbXMgQUcKLTAwMTcxNyAgICAgKGJhc2UgMTYpCQlMZWljYSBHZW9zeXN0ZW1zIEFHCi0JCQkJSGVpbnJpY2ggV2lsZCBTdHJhc3NlCi0JCQkJSGVlcmJydWdnIFN0LiBHYWxsZW4gQ0gtOTQzNQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE3LTE4ICAgKGhleCkJCVZhbnNjbyBFbGVjdHJvbmljcyBPeQotMDAxNzE4ICAgICAoYmFzZSAxNikJCVZhbnNjbyBFbGVjdHJvbmljcyBPeQotCQkJCVRpaWxlbmx5b2phbmthdHUgNQotCQkJCUZPUlNTQSAgMzAxMDEKLQkJCQlGSU5MQU5ECi0KLTAwLTE3LTE5ICAgKGhleCkJCUF1ZGlvQ29kZXMgVVNBLCBJbmMKLTAwMTcxOSAgICAgKGJhc2UgMTYpCQlBdWRpb0NvZGVzIFVTQSwgSW5jCi0JCQkJMjcgV29ybGQncyBGYWlyIERyaXZlCi0JCQkJU29tZXJzZXQgTkogMDg4NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTFBICAgKGhleCkJCVdpbmVnYXJkIENvbXBhbnkKLTAwMTcxQSAgICAgKGJhc2UgMTYpCQlXaW5lZ2FyZCBDb21wYW55Ci0JCQkJMzAwMCBLaXJrd29vZCBTdHJlZXQKLQkJCQlCdXJsaW5ndG9uIElBIDUyNjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0xQiAgIChoZXgpCQlJbm5vdmF0aW9uIExhYiBDb3JwLgotMDAxNzFCICAgICAoYmFzZSAxNikJCUlubm92YXRpb24gTGFiIENvcnAuCi0JCQkJMTJGTC4sIE5vLiAyODUsIFNlYy4gMiwgVGlEaW5nIEJsdmQuLAotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTFDICAgKGhleCkJCU5UIE1pY3JvU3lzdGVtcywgSW5jLgotMDAxNzFDICAgICAoYmFzZSAxNikJCU5UIE1pY3JvU3lzdGVtcywgSW5jLgotCQkJCTEtNS0zLTJGIFRhbWFnYXdhZGFpCi0JCQkJU2V0YWdheWEgVG9reW8gMTU4LTAwOTYKLQkJCQlKQVBBTgotCi0wMC0xNy0xRCAgIChoZXgpCQlESUdJVAotMDAxNzFEICAgICAoYmFzZSAxNikJCURJR0lUCi0JCQkJVmlhIFBhc3RldXIgLCAxLzMKLQkJCQlTLlBpZXRybyBNb3NlenpvIE5PVkFSQSAyODA2MAotCQkJCUlUQUxZCi0KLTAwLTE3LTFFICAgKGhleCkJCVRoZW8gQmVubmluZyBHbWJIICYgQ28uIEtHCi0wMDE3MUUgICAgIChiYXNlIDE2KQkJVGhlbyBCZW5uaW5nIEdtYkggJiBDby4gS0cKLQkJCQlNdWVuc3RlcnN0cmHDg8W4ZSAxMzUtMTM3Ci0JCQkJQm9jaG9sdCBOUlcgNDYzOTcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE3LTFGICAgKGhleCkJCUlNViBDb3Jwb3JhdGlvbgotMDAxNzFGICAgICAoYmFzZSAxNikJCUlNViBDb3Jwb3JhdGlvbgotCQkJCTItNi0xMCBUYWtlamltYQotCQkJCU5pc2hpeW9kb2dhd2Eta3UKLQkJCQlPc2FrYSAgNTU1LTAwMTEKLQkJCQlKQVBBTgotCi0wMC0xNy0yMCAgIChoZXgpCQlJbWFnZSBTZW5zaW5nIFN5c3RlbXMsIEluYy4KLTAwMTcyMCAgICAgKGJhc2UgMTYpCQlJbWFnZSBTZW5zaW5nIFN5c3RlbXMsIEluYy4KLQkJCQkxNjAwIFVuaXZlcnNpdHkgQXZlLiBXLgotCQkJCVN1aXRlIDUwMAotCQkJCVN0LiBQYXVsIE1OIDU1MTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0yMSAgIChoZXgpCQlGSVRSRSBTLnAuQS4KLTAwMTcyMSAgICAgKGJhc2UgMTYpCQlGSVRSRSBTLnAuQS4KLQkJCQlWaWEgVmFsc29sZGEsIDE1Ci0JCQkJTUlMQU4gTUlMQU5PIDIwMTQyCi0JCQkJSVRBTFkKLQotMDAtMTctMjIgICAoaGV4KQkJSGFuYXplZGVyIEVsZWN0cm9uaWMgR21iSAotMDAxNzIyICAgICAoYmFzZSAxNikJCUhhbmF6ZWRlciBFbGVjdHJvbmljIEdtYkgKLQkJCQlKLk0uIERpbW1lbHN0ciAxMAotCQkJCVJpZWQgaS4gSS4gT2JlcsO2c3RlcnJlaWNoIDQ5MTAKLQkJCQlBVVNUUklBCi0KLTAwLTE3LTIzICAgKGhleCkJCVN1bW1pdCBEYXRhIENvbW11bmljYXRpb25zCi0wMDE3MjMgICAgIChiYXNlIDE2KQkJU3VtbWl0IERhdGEgQ29tbXVuaWNhdGlvbnMKLQkJCQk1MjYgU291dGggTWFpbiBTdHJlZXQKLQkJCQlTdWl0ZSA4MDUKLQkJCQlBa3JvbiBPaGlvIDQ0MzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0yNCAgIChoZXgpCQlTdHVkZXIgUHJvZmVzc2lvbmFsIEF1ZGlvIEdtYkgKLTAwMTcyNCAgICAgKGJhc2UgMTYpCQlTdHVkZXIgUHJvZmVzc2lvbmFsIEF1ZGlvIEdtYkgKLQkJCQlBbHRoYXJkc3RyYXNzZSAzMAotCQkJCVJlZ2Vuc2RvcmYgWsO8cmljaCBDSC04MTA1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTctMjUgICAoaGV4KQkJTGlxdWlkIENvbXB1dGluZwotMDAxNzI1ICAgICAoYmFzZSAxNikJCUxpcXVpZCBDb21wdXRpbmcKLQkJCQkzNDAgVGVycnkgRm94IERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDNBMgotCQkJCUNBTkFEQQotCi0wMC0xNy0yNiAgIChoZXgpCQltMmMgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEx0ZC4KLTAwMTcyNiAgICAgKGJhc2UgMTYpCQltMmMgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEx0ZC4KLQkJCQkyNDAzLCAyNC9GLCBOYW55YW5nIFBsYXphCi0JCQkJNTcgSHVuZyBUbyBSb2FkCi0JCQkJS3d1bnRvbmcgSG9uZyBLb25nIDk5OSA5OTkKLQkJCQlDSElOQQotCi0wMC0xNy0yNyAgIChoZXgpCQlUaGVybW8gUmFtc2V5IEl0YWxpYSBzLnIubC4KLTAwMTcyNyAgICAgKGJhc2UgMTYpCQlUaGVybW8gUmFtc2V5IEl0YWxpYSBzLnIubC4KLQkJCQlTdHJhZGEgUml2b2x0YW5hIGttIDYvNwotCQkJCVJvZGFubyBNaWxhbm8gMjAwOTAKLQkJCQlJVEFMWQotCi0wMC0xNy0yOCAgIChoZXgpCQlTZWxleCBDb21tdW5pY2F0aW9ucwotMDAxNzI4ICAgICAoYmFzZSAxNikJCVNlbGV4IENvbW11bmljYXRpb25zCi0JCQkJVmlhIFBpZXJhZ29zdGluaSA4MAotCQkJCUdlbm92YSAgMTYxNTEKLQkJCQlJVEFMWQotCi0wMC0xNy0yOSAgIChoZXgpCQlVYmljb2QgQ28uTFRECi0wMDE3MjkgICAgIChiYXNlIDE2KQkJVWJpY29kIENvLkxURAotCQkJCTdGIENodW4tZ2luIEJsZGcsIDUzLTUgV29uaHlvLXJvCi0JCQkJWW9uZ3Nhbi1ndQotCQkJCVNlb3VsICAxNDAtNzE5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LTJBICAgKGhleCkJCVByb3dhcmUgVGVjaG5vbG9neSBDb3JwLgotMDAxNzJBICAgICAoYmFzZSAxNikJCVByb3dhcmUgVGVjaG5vbG9neSBDb3JwLgotCQkJCTZGbC4sIE5vLiA0LCBBbGxleSAxLCBMYW5lIDIzNSwgUGFvQ2hhbyBSZC4KLQkJCQlIc2luIFRpZW4gQ2l0eSBUYWlwZWkgSHNpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy0yQiAgIChoZXgpCQlHbG9iYWwgVGVjaG5vbG9naWVzIEluYy4KLTAwMTcyQiAgICAgKGJhc2UgMTYpCQlHbG9iYWwgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk0L0YgS2ljb3ggQmxkZy4sMTg4LTUsR3Vyby1Eb25nLEd1cm8tZ3UsCi0JCQkJU2VvdWwgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy0yQyAgIChoZXgpCQlUQUVKSU4gSU5GT1RFQ0gKLTAwMTcyQyAgICAgKGJhc2UgMTYpCQlUQUVKSU4gSU5GT1RFQ0gKLQkJCQk2RiBXb29saW0gZS1CaXogQ2VudGVyLCAxNzAtNQotCQkJCUd1cm8tRG9uZywgR3Vyby1HdSwKLQkJCQlTZW91bCAgMTUyLTc2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy0yRCAgIChoZXgpCQlBeGNlbiBQaG90b25pY3MgQ29ycG9yYXRpb24KLTAwMTcyRCAgICAgKGJhc2UgMTYpCQlBeGNlbiBQaG90b25pY3MgQ29ycG9yYXRpb24KLQkJCQk2RiwgTm8uIDExOSwgQmF1anVuZyBSZC4sCi0JCQkJU2hpbmRpYW4gQ2l0eSwgVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTJFICAgKGhleCkJCUZYQyBJbmMuCi0wMDE3MkUgICAgIChiYXNlIDE2KQkJRlhDIEluYy4KLQkJCQkxMC0xNiA2RiwgTmlob25iYXNoaSBUb21pemF3YS1DaG91LCBDaHVvLWt1Ci0JCQkJVG9reW8gIDEwMy0wMDA2Ci0JCQkJSkFQQU4KLQotMDAtMTctMkYgICAoaGV4KQkJTmV1TGlvbiBJbmNvcnBvcmF0ZWQKLTAwMTcyRiAgICAgKGJhc2UgMTYpCQlOZXVMaW9uIEluY29ycG9yYXRlZAotCQkJCTE2MDAgT2xkIENvdW50cnkgUm9hZAotCQkJCVBsYWludmlldyBOWSAxMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMzAgICAoaGV4KQkJQXV0b21hdGlvbiBFbGVjdHJvbmljcwotMDAxNzMwICAgICAoYmFzZSAxNikJCUF1dG9tYXRpb24gRWxlY3Ryb25pY3MKLQkJCQkxMTEgQmlnIEhvcm4gUmQuCi0JCQkJQ2FzcGVyIFd5IDgyNjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zMSAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTAwMTczMSAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQlOby41IFNoaW5nIFllaCBTdHJlZXQsS3dlaSBTaGFuIEhzaWFuZyxUYW95dWFuCi0JCQkJVGFpcGVpICAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTMyICAgKGhleCkJCVNjaWVuY2UtVGVjaG5pY2FsIENlbnRlciAiUklTU0EiCi0wMDE3MzIgICAgIChiYXNlIDE2KQkJU2NpZW5jZS1UZWNobmljYWwgQ2VudGVyICJSSVNTQSIKLQkJCQlzdC4gQWJyYW10c2V2c2thamEsIGguOQotCQkJCU1vc2NvdyAgMTI4NTcyCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTE3LTMzICAgKGhleCkJCVNGUgotMDAxNzMzICAgICAoYmFzZSAxNikJCVNGUgotCQkJCTQyIFF1YWkgZHUgcG9pbnQgZHUgam91cgotCQkJCUJvdWxvZ25lIEJpbGxhbmNvdXJ0IEhhdXRzIGRlIFNlaW5lIDkyNjU5Ci0JCQkJRlJBTkNFCi0KLTAwLTE3LTM0ICAgKGhleCkJCUFEQyBUZWxlY29tbXVuaWNhdGlvbnMKLTAwMTczNCAgICAgKGJhc2UgMTYpCQlBREMgVGVsZWNvbW11bmljYXRpb25zCi0JCQkJNTQxIEUgVHJpbWJsZSBSb2FkICAgIAotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzQtMTIyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMzUgICAoaGV4KQkJUFJJVkFURQotMDAxNzM1ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0xNy0zNiAgIChoZXgpCQlpaVRyb24gSW5jLgotMDAxNzM2ICAgICAoYmFzZSAxNikJCWlpVHJvbiBJbmMuCi0JCQkJODggTWVyY3kgU3QuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctMzcgICAoaGV4KQkJSW5kdXN0cmllIERpYWwgRmFjZSBTLnAuQS4KLTAwMTczNyAgICAgKGJhc2UgMTYpCQlJbmR1c3RyaWUgRGlhbCBGYWNlIFMucC5BLgotCQkJCXZpYSBDYW56bywgNAotCQkJCVBlc2NoaWVyYSBCb3Jyb21lbyBNaWxhbm8gMjAwNjgKLQkJCQlJVEFMWQotCi0wMC0xNy0zOCAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCi0wMDE3MzggICAgIChiYXNlIDE2KQkJSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwotCQkJCTEgQXpyaWVsaSBDZW50ZXIKLQkJCQlUZWwgQXZpdiAgNjcwMjEKLQkJCQlJU1JBRUwKLQotMDAtMTctMzkgICAoaGV4KQkJQnJpZ2h0IEhlYWRwaG9uZSBFbGVjdHJvbmljcyBDb21wYW55Ci0wMDE3MzkgICAgIChiYXNlIDE2KQkJQnJpZ2h0IEhlYWRwaG9uZSBFbGVjdHJvbmljcyBDb21wYW55Ci0JCQkJOEYsIDEwOSwgTGkgRGUgU3RyZWV0Ci0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgQ291bnR5IDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctM0EgICAoaGV4KQkJUmVhY2ggU3lzdGVtcyBJbmMuCi0wMDE3M0EgICAgIChiYXNlIDE2KQkJUmVhY2ggU3lzdGVtcyBJbmMuCi0JCQkJMTMzMCBCcm9hZHdheQotCQkJCVN1aXRlIDEyMDEKLQkJCQlPYWtsYW5kIENBIDk0NjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDE3M0IgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zQyAgIChoZXgpCQlFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucwotMDAxNzNDICAgICAoYmFzZSAxNikJCUV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zCi0JCQkJMzIyNSBEZW1pbmcgV2F5Ci0JCQkJU3VpdGUgMTIwCi0JCQkJTWlkZGxldG9uIFdJIDUzNTYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy0zRCAgIChoZXgpCQlOZW9sb2d5Ci0wMDE3M0QgICAgIChiYXNlIDE2KQkJTmVvbG9neQotCQkJCTEzMDAwIEdyZWdnIFN0cmVldCBTdWl0ZSBBCi0JCQkJUG93YXkgQ0EgOTIwNjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTNFICAgKGhleCkJCUxldWNvdHJvbkVxdWlwYW1lbnRvcyBMdGRhLgotMDAxNzNFICAgICAoYmFzZSAxNikJCUxldWNvdHJvbkVxdWlwYW1lbnRvcyBMdGRhLgotCQkJCVJ1YSBKb3JnZSBEaW9uaXNpbyBCYXJib3NhLCAzMTIKLQkJCQlTYW50YSBSaXRhIGRvIFNhcHVjYWkgTWluYXMgR2VyYWlzIDM3LjU0MC0wMDAKLQkJCQlCUkFaSUwKLQotMDAtMTctM0YgICAoaGV4KQkJQmVsa2luIENvcnBvcmF0aW9uCi0wMDE3M0YgICAgIChiYXNlIDE2KQkJQmVsa2luIENvcnBvcmF0aW9uCi0JCQkJNTAxIFcuIFdhbG51dCBTdHJlZXQKLQkJCQlDb21wdG9uIENBIDkwMjIwLTUyMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTQwICAgKGhleCkJCUJsdWJlcmkgR2FtaW5nIFRlY2hub2xvZ2llcyBJbmMKLTAwMTc0MCAgICAgKGJhc2UgMTYpCQlCbHViZXJpIEdhbWluZyBUZWNobm9sb2dpZXMgSW5jCi0JCQkJMjEyNSwgcnVlIExldGVuZHJlIFN1aXRlIDQyMAotCQkJCURydW1tb25kdmlsbGUgUXVlYmVjIEoyQyA3RzEKLQkJCQlDQU5BREEKLQotMDAtMTctNDEgICAoaGV4KQkJREVGSURFVgotMDAxNzQxICAgICAoYmFzZSAxNikJCURFRklERVYKLQkJCQkyNyBBdmVudWUgZGUgVmVyZHVuCi0JCQkJVmFudmVzICA5MjE3MAotCQkJCUZSQU5DRQotCi0wMC0xNy00MiAgIChoZXgpCQlGVUpJVFNVIExJTUlURUQKLTAwMTc0MiAgICAgKGJhc2UgMTYpCQlGVUpJVFNVIExJTUlURUQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiw0MDMKLQkJCQlLb3N1Z2ktY2hvIDEtY2hvbWUsTmFrYWhhcmEta3UKLQkJCQlLYXdhc2FraSBLYW5hZ2F3YSAyMTEtODU4OAotCQkJCUpBUEFOCi0KLTAwLTE3LTQzICAgKGhleCkJCURlY2sgU3JsCi0wMDE3NDMgICAgIChiYXNlIDE2KQkJRGVjayBTcmwKLQkJCQlWaWEgRmFiaW8gRmlsemkgMgotCQkJCU1pbGFuICAyMDEyNAotCQkJCUlUQUxZCi0KLTAwLTE3LTQ0ICAgKGhleCkJCUFyYW5lbyBMdGQuCi0wMDE3NDQgICAgIChiYXNlIDE2KQkJQXJhbmVvIEx0ZC4KLQkJCQkxMDMgTWVkaW5hdCBIYXllaHVkaW0KLQkJCQlIZXJ6bGl5YSAgNDY3MzMKLQkJCQlJU1JBRUwKLQotMDAtMTctNDUgICAoaGV4KQkJSU5OT1RaIENPLiwgTHRkCi0wMDE3NDUgICAgIChiYXNlIDE2KQkJSU5OT1RaIENPLiwgTHRkCi0JCQkJMTRGLCBQcmltZSBDZW50ZXIgNTQ2LTQgR3V1aS1Eb25nIEt3YW5nZ2luLUd1Ci0JCQkJU2VvdWwgU2VvdWwgMTQzLTIwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy00NiAgIChoZXgpCQlGcmVlZG9tOSBJbmMuCi0wMDE3NDYgICAgIChiYXNlIDE2KQkJRnJlZWRvbTkgSW5jLgotCQkJCTQxNDBCIFNMQURFVklFVyBDUkUuLAotCQkJCVVOSVQgNCwKLQkJCQlNSVNTSVNTQVVHQSwgT250YXJpbyBMNUw2QTEKLQkJCQlDQU5BREEKLQotMDAtMTctNDcgICAoaGV4KQkJVHJpbWJsZQotMDAxNzQ3ICAgICAoYmFzZSAxNikJCVRyaW1ibGUKLQkJCQkzNDUgU1cgQXZlcnkgQXZlCi0JCQkJQ29ydmFsbGlzIE9SIDk3MzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy00OCAgIChoZXgpCQlOZW9rb3JvcyBCcmFzaWwgTHRkYQotMDAxNzQ4ICAgICAoYmFzZSAxNikJCU5lb2tvcm9zIEJyYXNpbCBMdGRhCi0JCQkJUnVhIDg2LCBudW1lcm8gNTAxLCBTZXRvciBTdWwKLQkJCQlHb2lhbmlhIEdvaWFzIDc0MDgzLTMzMAotCQkJCUJSQVpJTAotCi0wMC0xNy00OSAgIChoZXgpCQlIWVVOREFFIFlPTkctTy1TQSBDTy4sTFRECi0wMDE3NDkgICAgIChiYXNlIDE2KQkJSFlVTkRBRSBZT05HLU8tU0EgQ08uLExURAotCQkJCTQ0OC0xMCwgSHl1Y2tqYWUgQi9EIFNlb25nbmFlLCBLYW5nZG9uZy1ndQotCQkJCVNlb3VsICAxMzQtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LTRBICAgKGhleCkJCVNPQ09NRUMKLTAwMTc0QSAgICAgKGJhc2UgMTYpCQlTT0NPTUVDCi0JCQkJcnVlIGRlIFdlc3Rob3VzZQotCQkJCUJFTkZFTEQgQ0VERVggIDY3MjM1Ci0JCQkJRlJBTkNFCi0KLTAwLTE3LTRCICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE3NEIgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTE3LTRDICAgKGhleCkJCU1pbGxpcG9yZQotMDAxNzRDICAgICAoYmFzZSAxNikJCU1pbGxpcG9yZQotCQkJCTEsIHJ1ZSBKYWNxdWVzIE1vbm9kCi0JCQkJUm9uZC1wb2ludCBkZXMgU2FuZ2xpZXJzCi0JCQkJR3V5YW5jb3VydCAgNzgyODAKLQkJCQlGUkFOQ0UKLQotMDAtMTctNEQgICAoaGV4KQkJRFlOQU1JQyBORVRXT1JLIEZBQ1RPUlksIElOQy4KLTAwMTc0RCAgICAgKGJhc2UgMTYpCQlEWU5BTUlDIE5FVFdPUksgRkFDVE9SWSwgSU5DLgotCQkJCTI2MjUwIEVERU4gTEFORElORyBSRC4KLQkJCQlIQVlXQVJEIENBIDk0NTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy00RSAgIChoZXgpCQlQYXJhbWEtdGVjaCBDby4sTHRkLgotMDAxNzRFICAgICAoYmFzZSAxNikJCVBhcmFtYS10ZWNoIENvLixMdGQuCi0JCQkJMi0xOS04LCBTaGFyeW8sIEhpZ2FzaGkta3UKLQkJCQlGdWt1b2thICA4MTItMDA2OAotCQkJCUpBUEFOCi0KLTAwLTE3LTRGICAgKGhleCkJCWlDYXRjaCBJbmMuCi0wMDE3NEYgICAgIChiYXNlIDE2KQkJaUNhdGNoIEluYy4KLQkJCQkxMEYtMiwgTm8uIDEwOSwgU2VjLiA2LCBNaW5jeXVhbiBFLiBSZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctNTAgICAoaGV4KQkJR1NJIEdyb3VwLCBNaWNyb0UgU3lzdGVtcwotMDAxNzUwICAgICAoYmFzZSAxNikJCUdTSSBHcm91cCwgTWljcm9FIFN5c3RlbXMKLQkJCQk4IEVyaWUgRHJpdmUKLQkJCQlOYXRpY2sgTUEgMDE3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTUxICAgKGhleCkJCU9ubGluZSBDb3Jwb3JhdGlvbgotMDAxNzUxICAgICAoYmFzZSAxNikJCU9ubGluZSBDb3Jwb3JhdGlvbgotCQkJCTIyRi0zLCBOby4gMzk4LCBIdWFuIFBlaSBSb2FkLAotCQkJCUNodW5nIExpIFRhb3l1YW4gMzIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy01MiAgIChoZXgpCQlEQUdTLCBJbmMKLTAwMTc1MiAgICAgKGJhc2UgMTYpCQlEQUdTLCBJbmMKLQkJCQlDLTUxMCwgV29vbGltIExpb24ncyBWYWxsZXksIDM3MS0yOCwgR2FzYW4gRG9uZywgR2V1bWNoZW9uIEt1Ci0JCQkJU2VvdWwgIDE1My03ODYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctNTMgICAoaGV4KQkJbkZvcmUgVGVjaG5vbG9neSBJbmMuCi0wMDE3NTMgICAgIChiYXNlIDE2KQkJbkZvcmUgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTBGLCA0MSBEb25nIFhpbmcgUmQsCi0JCQkJVGFpcGVpIFRhaXBlaSAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTU0ICAgKGhleCkJCUFya2lubyBIaVRPUCBDb3Jwb3JhdGlvbiBMaW1pdGVkCi0wMDE3NTQgICAgIChiYXNlIDE2KQkJQXJraW5vIEhpVE9QIENvcnBvcmF0aW9uIExpbWl0ZWQKLQkJCQkzRi4sIE5vLjgsIFNpbmdodWEgUmQuCi0JCQkJS3dlaSBTaGFuIEluZC4gUGFyawotCQkJCVRhb3l1YW4gQ2l0eSBUYW95dWFuIENvdW50eSAgMzMwNjgsCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy01NSAgIChoZXgpCQlHRSBTZWN1cml0eQotMDAxNzU1ICAgICAoYmFzZSAxNikJCUdFIFNlY3VyaXR5Ci0JCQkJMTIzNDUgU1cgTGV2ZXRvbiBEcml2ZQotCQkJCVR1YWxhdGluIE9SIDk3MDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy01NiAgIChoZXgpCQlWaW5jaSBMYWJzIE95Ci0wMDE3NTYgICAgIChiYXNlIDE2KQkJVmluY2kgTGFicyBPeQotCQkJCUZpbmxheXNvbmlua3VqYSAyMSBBCi0JCQkJVGFtcGVyZSBMw6Ruc2ktU3VvbWkgMzMyMTAKLQkJCQlGSU5MQU5ECi0KLTAwLTE3LTU3ICAgKGhleCkJCVJJWCBURUNITk9MT0dZIExJTUlURUQKLTAwMTc1NyAgICAgKGJhc2UgMTYpCQlSSVggVEVDSE5PTE9HWSBMSU1JVEVECi0JCQkJMTcgREFJIFdBTkcgU1RSRUVUCi0JCQkJVEFJIFBPIElORFVTVFJJQUwgRVNUQVRFCi0JCQkJVEFJIFBPIE5FVyBURVJSSVRPUklFUyAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTctNTggICAoaGV4KQkJVGhydVZpc2lvbiBMdGQKLTAwMTc1OCAgICAgKGJhc2UgMTYpCQlUaHJ1VmlzaW9uIEx0ZAotCQkJCUNlbnRyYWwgMTI3LCBOby4xOAotCQkJCU1pbHRvbiBQYXJrCi0JCQkJQWJpbmdkb24gT3hmb3Jkc2hpcmUgT1gxNCA0U0EKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy01OSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE3NTkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy01QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE3NUEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy01QiAgIChoZXgpCQlBQ1MgU29sdXRpb25zIFN3aXR6ZXJsYW5kIEx0ZC4KLTAwMTc1QiAgICAgKGJhc2UgMTYpCQlBQ1MgU29sdXRpb25zIFN3aXR6ZXJsYW5kIEx0ZC4KLQkJCQlGcmFua2Vuc3RyYXNzZSA3MAotCQkJCUJlcm4tIEJ1ZW1wbGl6ICAzMDE4Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTctNUMgICAoaGV4KQkJU0hBUlAgQ09SUE9SQVRJT04KLTAwMTc1QyAgICAgKGJhc2UgMTYpCQlTSEFSUCBDT1JQT1JBVElPTgotCQkJCTIyLTIyLCBOQUdBSUtFLUNITywKLQkJCQlBQkVOTy1LVQotCQkJCU9TQUtBICA1NDUtODUyMgotCQkJCUpBUEFOCi0KLTAwLTE3LTVEICAgKGhleCkJCURvbmdzZW8gc3lzdGVtLgotMDAxNzVEICAgICAoYmFzZSAxNikJCURvbmdzZW8gc3lzdGVtLgotCQkJCTk3NC0yMSBNYW5zdS1kb25nIE5hbWRvbmctZ3UKLQkJCQlJbmNoZW9uIEluLUNoZW9uIDQwNS04NjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctNUUgICAoaGV4KQkJWmVkLTMKLTAwMTc1RSAgICAgKGJhc2UgMTYpCQlaZWQtMwotCQkJCTUwMSBWYWxsZXkgV2F5Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTVGICAgKGhleCkJCVhFTk9MSU5LIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDAxNzVGICAgICAoYmFzZSAxNikJCVhFTk9MSU5LIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTJuZCBGbC4sIEp1bmd5b3UgQi9EIDc5Ny0yMgotCQkJCVllb2tzYW0tZG9uZyBHYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS05MzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctNjAgICAoaGV4KQkJTmFpdG8gRGVuc2VpIE1hY2hpZGEgTUZHLkNPLixMVEQKLTAwMTc2MCAgICAgKGJhc2UgMTYpCQlOYWl0byBEZW5zZWkgTWFjaGlkYSBNRkcuQ08uLExURAotCQkJCTItMTctMjggRnVjaGlub2JlCi0JCQkJU2FnYW1paGFyYSBLYW5hZ2F3YSAyMjktMDAwNgotCQkJCUpBUEFOCi0KLTAwLTE3LTYxICAgKGhleCkJCVpLU29mdHdhcmUgSW5jLgotMDAxNzYxICAgICAoYmFzZSAxNikJCVpLU29mdHdhcmUgSW5jLgotCQkJCVhpbndlaXphaSwgQmFudGlhbiwgTG9uZ2dhbmcgZGlzdHJpY3QsU2hlbnpoZW4gQ2hpbmEgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotMDAtMTctNjIgICAoaGV4KQkJU29sYXIgVGVjaG5vbG9neSwgSW5jLgotMDAxNzYyICAgICAoYmFzZSAxNikJCVNvbGFyIFRlY2hub2xvZ3ksIEluYy4KLQkJCQk3NjIwIENldHJvbmlhIFJvYWQKLQkJCQlBbGxlbnRvd24gUEEgMTgxMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTYzICAgKGhleCkJCUVzc2VudGlhIFMucC5BLgotMDAxNzYzICAgICAoYmFzZSAxNikJCUVzc2VudGlhIFMucC5BLgotCQkJCVZpYSBHLkIuIFZpY28sIDI5Ci0JCQkJQ2VsbGEgKFJFKSBSZWdnaW8gRW1pbGlhIDQyMDQwCi0JCQkJSVRBTFkKLQotMDAtMTctNjQgICAoaGV4KQkJQVRNZWRpYSBHbWJICi0wMDE3NjQgICAgIChiYXNlIDE2KQkJQVRNZWRpYSBHbWJICi0JCQkJU3R1aGxzYXR6ZW5oYXVzd2VnIDY5Ci0JCQkJU2FhcmJydWVja2VuIFNhYXJsYW5kIDY2MTIzCi0JCQkJR0VSTUFOWQotCi0wMC0xNy02NSAgIChoZXgpCQlOb3J0ZWwKLTAwMTc2NSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTctNjYgICAoaGV4KQkJQWNjZW5zZSBUZWNobm9sb2d5LCBJbmMuCi0wMDE3NjYgICAgIChiYXNlIDE2KQkJQWNjZW5zZSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMzUgVGFuc3VtYWNoaQotCQkJCVNoaW5qeXVrdS1rdSBUb2t5byAxNjIwODMzCi0JCQkJSkFQQU4KLQotMDAtMTctNjcgICAoaGV4KQkJRWFyZm9yY2UgQVMKLTAwMTc2NyAgICAgKGJhc2UgMTYpCQlFYXJmb3JjZSBBUwotCQkJCVAuTy5Cb3ggNAotCQkJCUJyeW5lICA0MzQ5Ci0JCQkJTk9SV0FZCi0KLTAwLTE3LTY4ICAgKGhleCkJCVppbndhdmUgTHRkCi0wMDE3NjggICAgIChiYXNlIDE2KQkJWmlud2F2ZSBMdGQKLQkJCQlaaW53YXZlIEx0ZCwgSGFyc3RvbiBNaWxsCi0JCQkJSGFyc3RvbgotCQkJCUNhbWJyaWRnZSBDYW1icmlkZ2VzaGlyZSBDQjIgNUdHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTctNjkgICAoaGV4KQkJQ3ltcGhvbml4IENvcnAKLTAwMTc2OSAgICAgKGJhc2UgMTYpCQlDeW1waG9uaXggQ29ycAotCQkJCTg4NzEgUy4gU2FuZHkgUGFya3dheSwgU3VpdGUgMTUwCi0JCQkJU2FuZHkgVVQgODQwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTZBICAgKGhleCkJCUF2YWdvIFRlY2hub2xvZ2llcwotMDAxNzZBICAgICAoYmFzZSAxNikJCUF2YWdvIFRlY2hub2xvZ2llcwotCQkJCTM1MCBXZXN0IFRyaW1ibGUgUmQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctNkIgICAoaGV4KQkJS2l5b24sIEluYy4KLTAwMTc2QiAgICAgKGJhc2UgMTYpCQlLaXlvbiwgSW5jLgotCQkJCTkzODEgSnVkaWNpYWwgRHJpdmUKLQkJCQlTdWl0ZSAxNjAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTZDICAgKGhleCkJCVBpdm90MywgSW5jLgotMDAxNzZDICAgICAoYmFzZSAxNikJCVBpdm90MywgSW5jLgotCQkJCTY2MDUgQ3lwcmVzc3dvb2QgRHJpdmUsIFN0ZSAzNTAKLQkJCQlTcHJpbmcgVFggNzczNzktNzc0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctNkQgICAoaGV4KQkJQ09SRSBDT1JQT1JBVElPTgotMDAxNzZEICAgICAoYmFzZSAxNikJCUNPUkUgQ09SUE9SQVRJT04KLQkJCQkxLTIyLTMsIFNhbmdlbmpheWEsCi0JCQkJU2V0YWdheWEta3UgVG9reW8tdG8gMTU0LTg1NTIKLQkJCQlKQVBBTgotCi0wMC0xNy02RSAgIChoZXgpCQlEVUNBVEkgU0lTVEVNSQotMDAxNzZFICAgICAoYmFzZSAxNikJCURVQ0FUSSBTSVNURU1JCi0JCQkJVklBIE1BUkNPIEVNSUxJTyBMRVBJRE8sIDE4MgotCQkJCUJPTE9HTkEgIDQwMTMyCi0JCQkJSVRBTFkKLQotMDAtMTctNkYgICAoaGV4KQkJUEFYIENvbXB1dGVyIFRlY2hub2xvZ3koU2hlbnpoZW4pIEx0ZC4KLTAwMTc2RiAgICAgKGJhc2UgMTYpCQlQQVggQ29tcHV0ZXIgVGVjaG5vbG9neShTaGVuemhlbikgTHRkLgotCQkJCTQvRiwgTm8uMyBCdWlsZGluZywgU29mdHdhcmUgUGFyaywgU2Vjb25kIENlbnRyYWwgU2NpZW5jZS1UZWNoIFJvYWQsIEhpZ2gtVGVjaAotCQkJCWluZHVzdHJpYWwgUGFyawotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xNy03MCAgIChoZXgpCQlBcnRpIEluZHVzdHJpYWwgRWxlY3Ryb25pY3MgTHRkLgotMDAxNzcwICAgICAoYmFzZSAxNikJCUFydGkgSW5kdXN0cmlhbCBFbGVjdHJvbmljcyBMdGQuCi0JCQkJR2VyLVNhbiBTaXRlc2ksIDY1Ny4gU29rYWsKLQkJCQlObzogODAsIEVyZ2F6aQotCQkJCUFua2FyYSBUUiAwNjM3MAotCQkJCVRVUktFWQotCi0wMC0xNy03MSAgIChoZXgpCQlBUEQgQ29tbXVuaWNhdGlvbnMgTHRkCi0wMDE3NzEgICAgIChiYXNlIDE2KQkJQVBEIENvbW11bmljYXRpb25zIEx0ZAotCQkJCU5ld2xhbmRzIENlbnRyZQotCQkJCUluZ2xlbWlyZSBMYW5lCi0JCQkJSFVMTCBFYXN0IFlvcmtzaGlyZSBIVTYgN1RRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTctNzIgICAoaGV4KQkJQVNUUk8gU3Ryb2JlbCBLb21tdW5pa2F0aW9uc3N5c3RlbWUgR21iSAotMDAxNzcyICAgICAoYmFzZSAxNikJCUFTVFJPIFN0cm9iZWwgS29tbXVuaWthdGlvbnNzeXN0ZW1lIEdtYkgKLQkJCQlPbGVmYW50IDEtMwotCQkJCUJlcmdpc2NoIEdsYWRiYWNoIE5SVyA1MTQyNwotCQkJCUdFUk1BTlkKLQotMDAtMTctNzMgICAoaGV4KQkJTGFrZXR1bmUgVGVjaG5vbG9naWVzIENvLiBMdGQKLTAwMTc3MyAgICAgKGJhc2UgMTYpCQlMYWtldHVuZSBUZWNobm9sb2dpZXMgQ28uIEx0ZAotCQkJCU5vLiAzOCBaaWppbmdodWEgUmQuIFdlc3RsYWtlIERpc3RyaWN0Ci0JCQkJR3VkYW5nIEluZHVzdHJpYWwgWm9uZSBCdWlsZGluZyAxMSwgNUYKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTMKLQkJCQlDSElOQQotCi0wMC0xNy03NCAgIChoZXgpCQlFbGVzdGEgR21iSAotMDAxNzc0ICAgICAoYmFzZSAxNikJCUVsZXN0YSBHbWJICi0JCQkJR290dGxpZWIgRGFpbWxlciBTdHJhc3NlIDEKLQkJCQlLb25zdGFueiAgNzg0NjcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE3LTc1ICAgKGhleCkJCVRURSBHZXJtYW55IEdtYkgKLTAwMTc3NSAgICAgKGJhc2UgMTYpCQlUVEUgR2VybWFueSBHbWJICi0JCQkJSGVybWFubi1TY2h3ZXItU3RyLiAzCi0JCQkJVmlsbGluZ2VuLVNjaHdlbm5pbmdlbiBCYWRlbi1Xw7xydHRlbWJlcmcgNzgwNDgKLQkJCQlHRVJNQU5ZCi0KLTAwLTE3LTc2ICAgKGhleCkJCU1lc28gU2NhbGUgRGlhZ25vc3RpY3MsIExMQwotMDAxNzc2ICAgICAoYmFzZSAxNikJCU1lc28gU2NhbGUgRGlhZ25vc3RpY3MsIExMQwotCQkJCTkyMzggR2FpdGhlciBSZC4KLQkJCQlHYWl0aGVyc2J1cmcgTUQgMjA4NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTc3ICAgKGhleCkJCU9ic2lkaWFuIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0wMDE3NzcgICAgIChiYXNlIDE2KQkJT2JzaWRpYW4gUmVzZWFyY2ggQ29ycG9yYXRpb24KLQkJCQlFZG1vbnRvbiBSZXNlYXJjaCBQYXJrCi0JCQkJU3VpdGUgMTA2ICAgOTY1MC0yMCBBdmUKLQkJCQlFZG1vbnRvbiBBbGJlcnRhIFQ2TjFHMQotCQkJCUNBTkFEQQotCi0wMC0xNy03OCAgIChoZXgpCQlDZW50cmFsIE11c2ljIENvLgotMDAxNzc4ICAgICAoYmFzZSAxNikJCUNlbnRyYWwgTXVzaWMgQ28uCi0JCQkJMDcxMS0wNzEyIFRvd2VyIEQsIFNPSE8gTmV3IFRvd24KLQkJCQlOby4gODggSmlhbmd1byBSb2FkLCBDaGFveWFuZyBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDAyMgotCQkJCUNISU5BCi0KLTAwLTE3LTc5ICAgKGhleCkJCVF1aWNrVGVsCi0wMDE3NzkgICAgIChiYXNlIDE2KQkJUXVpY2tUZWwKLQkJCQlDb3JuaXNoZSBFbC1OaWxlLCBNYWFzYXJhCi0JCQkJQ2Fpcm8gIDExNzQzCi0JCQkJRUdZUFQKLQotMDAtMTctN0EgICAoaGV4KQkJQVNTQSBBQkxPWSBBQgotMDAxNzdBICAgICAoYmFzZSAxNikJCUFTU0EgQUJMT1kgQUIKLQkJCQlUaGVyZXMgU3ZlbnNzb25zIGdhdGEgMTUKLQkJCQk0MTc1NSBHb3RlYm9yZwotCQkJCUdvdGVib3JnICA0MTc1NQotCQkJCVNXRURFTgotCi0wMC0xNy03QiAgIChoZXgpCQlBemFsZWEgTmV0d29ya3MgaW5jCi0wMDE3N0IgICAgIChiYXNlIDE2KQkJQXphbGVhIE5ldHdvcmtzIGluYwotCQkJCTY3MyBTIE1pbHBpdGFzIEJsdmQKLQkJCQlTdWl0ZSAxMDUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctN0MgICAoaGV4KQkJU21hcnRsaW5rIE5ldHdvcmsgU3lzdGVtcyBMaW1pdGVkCi0wMDE3N0MgICAgIChiYXNlIDE2KQkJU21hcnRsaW5rIE5ldHdvcmsgU3lzdGVtcyBMaW1pdGVkCi0JCQkJTC03LCBWZXJuYSBFbGVjdHJvbmljIGNpdHkKLQkJCQlWZXJuYQotCQkJCU5hZ29hIEdvYSA0MDMgNzIyCi0JCQkJSU5ESUEKLQotMDAtMTctN0QgICAoaGV4KQkJSURUIEludGVybmF0aW9uYWwgTGltaXRlZAotMDAxNzdEICAgICAoYmFzZSAxNikJCUlEVCBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLQkJCQlCbG9jayBDLCA5L0YsIEthaXNlciBFc3RhdGUsIFBoYXNlIEkKLQkJCQk0MSBNYW4gWXVlIFN0cmVldCwgSHVuZ2hvbSwgS293bG9vbgotCQkJCUhPTkcgS09ORwotCi0wMC0xNy03RSAgIChoZXgpCQlNZXNoY29tIFRlY2hub2xvZ2llcyBJbmMuCi0wMDE3N0UgICAgIChiYXNlIDE2KQkJTWVzaGNvbSBUZWNobm9sb2dpZXMgSW5jLgotCQkJCU1lcml0dWxsaW5rYXR1IDEgQwotCQkJCUhlbHNpbmtpICAwMDE3MAotCQkJCUZJTkxBTkQKLQotMDAtMTctN0YgICAoaGV4KQkJV29ybGRzbWFydCBSZXRlY2gKLTAwMTc3RiAgICAgKGJhc2UgMTYpCQlXb3JsZHNtYXJ0IFJldGVjaAotCQkJCTIzIEhpLVRlY2ggQ291cnQKLQkJCQlFaWdodCBNaWxlIFBsYWlucyBRTEQgNDExMwotCQkJCUFVU1RSQUxJQQotCi0wMC0xNy04MCAgIChoZXgpCQlBcHBsaWVkIEJpb3N5c3RlbXMgQi5WLgotMDAxNzgwICAgICAoYmFzZSAxNikJCUFwcGxpZWQgQmlvc3lzdGVtcyBCLlYuCi0JCQkJQmxrIDMzLCBNYXJzaWxpbmcgSW5kdXN0cmlhbCBFc3RhdGUgUm9hZCAzLAotCQkJCSMwNS0wMwotCQkJCTczOTI1NgotCQkJCVNJTkdBUE9SRQotCi0wMC0xNy04MSAgIChoZXgpCQlHcmV5c3RvbmUgRGF0YSBTeXN0ZW0sIEluYy4KLTAwMTc4MSAgICAgKGJhc2UgMTYpCQlHcmV5c3RvbmUgRGF0YSBTeXN0ZW0sIEluYy4KLQkJCQk0MDgwMCBFbmN5Y29wZWRpYSBDaXJjbGUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy04MiAgIChoZXgpCQlMb0Jlbm4gSW5jLgotMDAxNzgyICAgICAoYmFzZSAxNikJCUxvQmVubiBJbmMuCi0JCQkJMTUwIEthdGltYXZpayBSb2FkCi0JCQkJU3VpdGUgMjAyCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJMIDJOMgotCQkJCUNBTkFEQQotCi0wMC0xNy04MyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxNzgzICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy04NCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxNzg0ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIEh3eSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctODUgICAoaGV4KQkJU3BhcnIgRWxlY3Ryb25pY3MgTHRkCi0wMDE3ODUgICAgIChiYXNlIDE2KQkJU3BhcnIgRWxlY3Ryb25pY3MgTHRkCi0JCQkJU3BhcnIgRWxlY3Ryb25pY3MgTHRkCi0JCQkJNDMgSE1UIE1haW4gUm9hZCBNYXRoaWtlcmUKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDA1NAotCQkJCUlORElBCi0KLTAwLTE3LTg2ICAgKGhleCkJCXdpc2VtYmVkCi0wMDE3ODYgICAgIChiYXNlIDE2KQkJd2lzZW1iZWQKLQkJCQk4MDgsIGhhbnNpbiBJVCB0b3dlciwgMjM1IGd1cm8zLWRvbmcsIGd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTc2OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy04NyAgIChoZXgpCQlCcm90aGVyLCBCcm90aGVyICYgU29ucyBBcFMKLTAwMTc4NyAgICAgKGJhc2UgMTYpCQlCcm90aGVyLCBCcm90aGVyICYgU29ucyBBcFMKLQkJCQlWZWQgQW1hZ2VyYmFuZW4gOQotCQkJCUNvcGVuaGFnZW4gUyAgREstMjMwMAotCQkJCURFTk1BUksKLQotMDAtMTctODggICAoaGV4KQkJUGhpbGlwcyBMaWdodGluZyBCVgotMDAxNzg4ICAgICAoYmFzZSAxNikJCVBoaWxpcHMgTGlnaHRpbmcgQlYKLQkJCQlNYXRoaWxkZWxhYW4gMQotCQkJCUVpbmRob3ZlbiBOb29yZCBCcmFiYW50IDU2MTEgQkQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNy04OSAgIChoZXgpCQlaZW5pdHJvbiBDb3Jwb3JhdGlvbgotMDAxNzg5ICAgICAoYmFzZSAxNikJCVplbml0cm9uIENvcnBvcmF0aW9uCi0JCQkJTm8uIDgsIExhbmUgMjUwLCBTaW5odSAybmQgUmQuLCBOZWlodSBEaXN0cmljdCwKLQkJCQlUYWlwZWkgIDExNDk0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy04QSAgIChoZXgpCQlEQVJUUyBURUNITk9MT0dJRVMgQ09SUC4KLTAwMTc4QSAgICAgKGJhc2UgMTYpCQlEQVJUUyBURUNITk9MT0dJRVMgQ09SUC4KLQkJCQkyRixOby4xMTksQ2hpZW4gS2FuZyBSZC4sCi0JCQkJQ2h1bmctSG8gVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctOEIgICAoaGV4KQkJVGVsZWR5bmUgVGVjaG5vbG9naWVzIEluY29ycG9yYXRlZAotMDAxNzhCICAgICAoYmFzZSAxNikJCVRlbGVkeW5lIFRlY2hub2xvZ2llcyBJbmNvcnBvcmF0ZWQKLQkJCQkxMjMzMyBXZXN0IE9seW1waWMgQmx2ZAotCQkJCUxvcyBBbmdlbGVzIENBIDkwMDY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy04QyAgIChoZXgpCQlJbmRlcGVuZGVudCBXaXRuZXNzLCBJbmMKLTAwMTc4QyAgICAgKGJhc2UgMTYpCQlJbmRlcGVuZGVudCBXaXRuZXNzLCBJbmMKLQkJCQkxNTE1IFdlc3QgMjIwMCBTb3V0aAotCQkJCVN1aXRlIEUKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctOEQgICAoaGV4KQkJQ2hlY2twb2ludCBTeXN0ZW1zLCBJbmMuCi0wMDE3OEQgICAgIChiYXNlIDE2KQkJQ2hlY2twb2ludCBTeXN0ZW1zLCBJbmMuCi0JCQkJMTAxIFdvbGYgRHJpdmUKLQkJCQlUaG9yb2ZhcmUgTkogMDgwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LThFICAgKGhleCkJCUd1bm5lYm8gQ2FzaCBBdXRvbWF0aW9uIEFCCi0wMDE3OEUgICAgIChiYXNlIDE2KQkJR3VubmVibyBDYXNoIEF1dG9tYXRpb24gQUIKLQkJCQlGYWJyaWtzZ2F0YW4gMTAKLQkJCQlHw7Z0ZWJvcmcgIDQwMiAyNwotCQkJCVNXRURFTgotCi0wMC0xNy04RiAgIChoZXgpCQlOSU5HQk8gWUlET05HIEVMRUNUUk9OSUMgQ08uLExURC4KLTAwMTc4RiAgICAgKGJhc2UgMTYpCQlOSU5HQk8gWUlET05HIEVMRUNUUk9OSUMgQ08uLExURC4KLQkJCQlOby42NSBTaW1pbmcgRWFzdCBSZAotCQkJCVl1eWFvIENpdHksIFpoZWppYW5nIFByb3ZpbmNlIFpoZWppYW5nIFByb3ZpbmNlIENoaW5hIFAuQyAzMTU0MDAKLQkJCQlDSElOQQotCi0wMC0xNy05MCAgIChoZXgpCQlIWVVOREFJIERJR0lURUNIIENvLCBMdGQuCi0wMDE3OTAgICAgIChiYXNlIDE2KQkJSFlVTkRBSSBESUdJVEVDSCBDbywgTHRkLgotCQkJCTEzdGggRmwsIENob3VuZy1KaW4gQmxkZywgNTMtNQotCQkJCVdvbmh5by1ybyAzR2EsIFlvbmdzYW4tR3UKLQkJCQlTZW91bCAgMTQwLTcxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy05MSAgIChoZXgpCQlMaW5UZWNoIEdtYkgKLTAwMTc5MSAgICAgKGJhc2UgMTYpCQlMaW5UZWNoIEdtYkgKLQkJCQlGcmllZHJpY2gtRW5nZWxzLVN0ci4gMzUKLQkJCQlCZXJsaW4gIDEzMTU2Ci0JCQkJR0VSTUFOWQotCi0wMC0xNy05MiAgIChoZXgpCQlGYWxjb20gV2lyZWxlc3MgQ29tdW5pY2F0aW9ucyBHbWJoCi0wMDE3OTIgICAgIChiYXNlIDE2KQkJRmFsY29tIFdpcmVsZXNzIENvbXVuaWNhdGlvbnMgR21iaAotCQkJCUdld2VyYmVyaW5nIDYKLQkJCQlMYW5nZXdpZXNlbiBUaHVyaW5naWEgOTg3MDQKLQkJCQlHRVJNQU5ZCi0KLTAwLTE3LTkzICAgKGhleCkJCVRpZ2kgQ29ycG9yYXRpb24KLTAwMTc5MyAgICAgKGJhc2UgMTYpCQlUaWdpIENvcnBvcmF0aW9uCi0JCQkJMjA3MCBDaGFpbiBCcmlkZ2Ugcm9hZAotCQkJCVN1aXRlIEctMTAwCi0JCQkJVmllbm5hIFZhIDIyMTgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy05NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE3OTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy05NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE3OTUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy05NiAgIChoZXgpCQlSaXR0bWV5ZXIgQUcKLTAwMTc5NiAgICAgKGJhc2UgMTYpCQlSaXR0bWV5ZXIgQUcKLQkJCQlJbndpbGVycmllZHN0cmFzc2UgNTcKLQkJCQlQb3N0ZmFjaCA0NjQKLQkJCQlCYWFyIFpHIENILTYzNDEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xNy05NyAgIChoZXgpCQlUZWxzeSBFbGV0dHJvbmljYSBTLnAuQS4KLTAwMTc5NyAgICAgKGJhc2UgMTYpCQlUZWxzeSBFbGV0dHJvbmljYSBTLnAuQS4KLQkJCQlDb3JzbyBTdml6emVyYSAxODUKLQkJCQlUb3Jpbm8gIDEwMTQ5Ci0JCQkJSVRBTFkKLQotMDAtMTctOTggICAoaGV4KQkJQXpvbmljIFRlY2hub2xvZ3kgQ28uLCBMVEQKLTAwMTc5OCAgICAgKGJhc2UgMTYpCQlBem9uaWMgVGVjaG5vbG9neSBDby4sIExURAotCQkJCTE1Ri0zLCBOby4gMTYzLCBTZWMuLCAxIEtlZWx1bmcgUmQuCi0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTk5ICAgKGhleCkJCVNtYXJUaXJlIFN5c3RlbXMgSW5jLgotMDAxNzk5ICAgICAoYmFzZSAxNikJCVNtYXJUaXJlIFN5c3RlbXMgSW5jLgotCQkJCVN1aXRlIDE1MAotCQkJCTEzMTUxIFZhbmllciBQbGFjZQotCQkJCVJpY2htb25kIEJDIFY2ViAySjEKLQkJCQlDQU5BREEKLQotMDAtMTctOUEgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDE3OUEgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTm8uIDI4OSwgU2luaHUgM3JkIFJkLiwgTmVpaHUgRGlzdHJpY3QsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LTlCICAgKGhleCkJCUNoYW50IFNpbmNlcmUgQ08uLCBMVEQuCi0wMDE3OUIgICAgIChiYXNlIDE2KQkJQ2hhbnQgU2luY2VyZSBDTy4sIExURC4KLQkJCQk3Ri0yLE5PLjE4OCxTZWMgMyxUYSBUdW5nIFJvb2QsCi0JCQkJSHNpIENoaWggQ2l0eSBUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy05QyAgIChoZXgpCQlERVBSQUcgU0NIVUxaIEdNQkggdS4gQ08uCi0wMDE3OUMgICAgIChiYXNlIDE2KQkJREVQUkFHIFNDSFVMWiBHTUJIIHUuIENPLgotCQkJCUt1cmbDvHJzdGVucmluZyAxMi4xOAotCQkJCUFtYmVyZyBCYXllcm4gOTIyMjQKLQkJCQlHRVJNQU5ZCi0KLTAwLTE3LTlEICAgKGhleCkJCUtlbG1hbiBMaW1pdGVkCi0wMDE3OUQgICAgIChiYXNlIDE2KQkJS2VsbWFuIExpbWl0ZWQKLQkJCQlSYXRoZG93biBDbG9zZQotCQkJCUxpc3N1ZSBFYXN0IEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJTGlzYnVybiBDby4gQW50cmltIEJUMjggMlJCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTctOUUgICAoaGV4KQkJU2lyaXQgSW5jCi0wMDE3OUUgICAgIChiYXNlIDE2KQkJU2lyaXQgSW5jCi0JCQkJMjUyNSBNZXJpZGlhbiBQYXJrd2F5Ci0JCQkJU3VpdGUgNjAKLQkJCQlEdXJoYW0gTkMgMjc3MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LTlGICAgKGhleCkJCUFwcmljb3JuCi0wMDE3OUYgICAgIChiYXNlIDE2KQkJQXByaWNvcm4KLQkJCQkxMjE5MSBLaXJraGFtIFJECi0JCQkJUG93YXkgQ2FsaWZvcm5pYSA5MjA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctQTAgICAoaGV4KQkJUm9ib1RlY2ggc3JsCi0wMDE3QTAgICAgIChiYXNlIDE2KQkJUm9ib1RlY2ggc3JsCi0JCQkJVmlhIE1henppbmkgODIKLQkJCQlTYXJ6YW5hIChTUCkgIEktMTkwMzgKLQkJCQlJVEFMWQotCi0wMC0xNy1BMSAgIChoZXgpCQkzc29mdCBpbmMuCi0wMDE3QTEgICAgIChiYXNlIDE2KQkJM3NvZnQgaW5jLgotCQkJCXNoaW55b3VuZyBibGRnIDRmLCBjaHVuZ2RhbS1kb25nLCBnYW5nbmFtLWd1Ci0JCQkJc2VvdWwgIDEzNS0xMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctQTIgICAoaGV4KQkJQ2Ftcml2b3ggTHRkLgotMDAxN0EyICAgICAoYmFzZSAxNikJCUNhbXJpdm94IEx0ZC4KLQkJCQlUaGUgSmVmZnJleXMgQnVpbGRpbmcKLQkJCQlDb3dsZXkgUm9hZAotCQkJCUNhbWJyaWRnZSBDYW1icmlkZ2VzaGlyZSBDQjQgMFdTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTctQTMgICAoaGV4KQkJTUlYIHMuci5sLgotMDAxN0EzICAgICAoYmFzZSAxNikJCU1JWCBzLnIubC4KLQkJCQlWaWEgQ2FsZGVyYSwgMjEKLQkJCQlNaWxhbiAgSS0yMDE1MwotCQkJCUlUQUxZCi0KLTAwLTE3LUE0ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDE3QTQgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctQTUgICAoaGV4KQkJUmFsaW5rIFRlY2hub2xvZ3kgQ29ycAotMDAxN0E1ICAgICAoYmFzZSAxNikJCVJhbGluayBUZWNobm9sb2d5IENvcnAKLQkJCQlTdWl0ZSAyMTUsIEJsZGcgNTMuIDE5NS02MSBTZWMuNCwgQ2h1bmcgSHNpbmcgUmQsCi0JCQkJQ2h1dHVuZyBIc2luY2h1IDMxMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctQTYgICAoaGV4KQkJWU9TSU4gRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDE3QTYgICAgIChiYXNlIDE2KQkJWU9TSU4gRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJNkYtMiwgTm8uMTcsIExhbiAxNzQsIFNoaW4tTWluZyBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LUE3ICAgKGhleCkJCU1vYmlsZSBDb21wdXRpbmcgUHJvbW90aW9uIENvbnNvcnRpdW0KLTAwMTdBNyAgICAgKGJhc2UgMTYpCQlNb2JpbGUgQ29tcHV0aW5nIFByb21vdGlvbiBDb25zb3J0aXVtCi0JCQkJMy01LTEyIFNoaWJhLUtvZW4KLQkJCQlNaW5hdG8ta3UKLQkJCQlUb2t5byAgMTA1LTAwMTEKLQkJCQlKQVBBTgotCi0wMC0xNy1BOCAgIChoZXgpCQlFRE0gQ29ycG9yYXRpb24KLTAwMTdBOCAgICAgKGJhc2UgMTYpCQlFRE0gQ29ycG9yYXRpb24KLQkJCQkzLTUtMiBJdGFiYXNoaQotCQkJCUl0YWJhc2hpLWt1IFRva3lvIDE3My0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMTctQTkgICAoaGV4KQkJU2VudGl2aXNpb24KLTAwMTdBOSAgICAgKGJhc2UgMTYpCQlTZW50aXZpc2lvbgotCQkJCU1hcnluYXJza2EgMTlhCi0JCQkJV2Fyc2F3IE1hem93aWVja2llIDAyLTY3NAotCQkJCVBPTEFORAotCi0wMC0xNy1BQSAgIChoZXgpCQllbGFiLWV4cGVyaWVuY2UgaW5jLgotMDAxN0FBICAgICAoYmFzZSAxNikJCWVsYWItZXhwZXJpZW5jZSBpbmMuCi0JCQkJMTA0IEFub3RzdXBpYQotCQkJCUFub3RzdWRhaSA0LTYtMQotCQkJCVRzdS1zaGkgbWllIHByZWZlY3R1cmUgNTE0LTAxMzEKLQkJCQlKQVBBTgotCi0wMC0xNy1BQiAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMTdBQiAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xNy1BQyAgIChoZXgpCQlPJ05laWwgUHJvZHVjdCBEZXZlbG9wbWVudCBJbmMuCi0wMDE3QUMgICAgIChiYXNlIDE2KQkJTydOZWlsIFByb2R1Y3QgRGV2ZWxvcG1lbnQgSW5jLgotCQkJCTggTWFzb24KLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUFEICAgKGhleCkJCUFjZU5ldCBDb3Jwb3JhdGlvbgotMDAxN0FEICAgICAoYmFzZSAxNikJCUFjZU5ldCBDb3Jwb3JhdGlvbgotCQkJCTdGLTQsIE5vLjE0NiwgV2VuLVNoaW4gUm9hZAotCQkJCUd1ZWlzaGFuIFRBT1lVQU4gCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xNy1BRSAgIChoZXgpCQlHQUktVHJvbmljcwotMDAxN0FFICAgICAoYmFzZSAxNikJCUdBSS1Ucm9uaWNzCi0JCQkJQnJ1bmVsIERyaXZlCi0JCQkJU3RyZXR0b24gUGFyawotCQkJCUJ1cnRvbiBVcG9uIFRyZW50IFN0YWZmb3Jkc2hpcmUgREUxMyAwQloKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy1BRiAgIChoZXgpCQlFbmVybWV0Ci0wMDE3QUYgICAgIChiYXNlIDE2KQkJRW5lcm1ldAotCQkJCVNhbHZlc2VuaW50aWUKLQkJCQlKeXNrw6QgIEZJTi00MDQyMAotCQkJCUZJTkxBTkQKLQotMDAtMTctQjAgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTdCMCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTctQjEgICAoaGV4KQkJQUNJU1QgTWVkaWNhbCBTeXN0ZW1zLCBJbmMuCi0wMDE3QjEgICAgIChiYXNlIDE2KQkJQUNJU1QgTWVkaWNhbCBTeXN0ZW1zLCBJbmMuCi0JCQkJNzQ1MCBGbHlpbmcgQ2xvdWQgRHJpdmUKLQkJCQlTdWl0ZSAxNTAKLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUIyICAgKGhleCkJCVNLIFRlbGVzeXMKLTAwMTdCMiAgICAgKGJhc2UgMTYpCQlTSyBUZWxlc3lzCi0JCQkJNEYsIEt5dW5nZG9uZyBibGRnLCA0LTQsIFN1bmFlLURvbmcsIFB1bmRhbmctR3UKLQkJCQlTdW5nbmFtLUNpdHkgS3VuZ2dpLURvIDQ2My04MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctQjMgICAoaGV4KQkJQWZ0ZWsgSW5mb3N5cyBMaW1pdGVkCi0wMDE3QjMgICAgIChiYXNlIDE2KQkJQWZ0ZWsgSW5mb3N5cyBMaW1pdGVkCi0JCQkJUGF3YW4gQ29tcGxleAotCQkJCVNoZWVsYSBWaWhhciBDb2xvbnkKLQkJCQlQdW5lIE1haGFyYXNodHJhIDQxMSAwMzgKLQkJCQlJTkRJQQotCi0wMC0xNy1CNCAgIChoZXgpCQlSZW1vdGUgU2VjdXJpdHkgU3lzdGVtcywgTExDCi0wMDE3QjQgICAgIChiYXNlIDE2KQkJUmVtb3RlIFNlY3VyaXR5IFN5c3RlbXMsIExMQwotCQkJCTQ4MDYgVXBwZXIgQnJhbmRvbiBQbGFjZQotCQkJCU1hcmlldHRhIEdlb3JnaWEgMzAwNjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUI1ICAgKGhleCkJCVBlZXJsZXNzIFN5c3RlbXMgQ29ycG9yYXRpb24KLTAwMTdCNSAgICAgKGJhc2UgMTYpCQlQZWVybGVzcyBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJMjM4MSBSb3NlY3JhbnMgQXZlbnVlLCBTdWl0ZSA0MDAKLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1CNiAgIChoZXgpCQlBcXVhbnRpYQotMDAxN0I2ICAgICAoYmFzZSAxNikJCUFxdWFudGlhCi0JCQkJNzAwIFRhc21hbiBEci4KLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctQjcgICAoaGV4KQkJVG9uemUgVGVjaG5vbG9neSBDby4KLTAwMTdCNyAgICAgKGJhc2UgMTYpCQlUb256ZSBUZWNobm9sb2d5IENvLgotCQkJCTVGLTEwLCBOby42LCBMYW5lIDE4MCwKLQkJCQlTZWMgNiwgTWluY3l1YW4gRWFzdCBSb2FkCi0JCQkJVGFpcGVpICAxMTQ5MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctQjggICAoaGV4KQkJTk9WQVRST04gQ08uLCBMVEQuCi0wMDE3QjggICAgIChiYXNlIDE2KQkJTk9WQVRST04gQ08uLCBMVEQuCi0JCQkJIzYwMSBwb2xhcmlzIGJsZGcuLCAxNS0zIGplb25namEtZG9uZywgYnVuZGFuZy1ndQotCQkJCVNlb25nIE5hbSBHeWVvbmdnaSBEbyA0NjMtODExCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUI5ICAgKGhleCkJCUdhbWJybyBMdW5kaWEgQUIKLTAwMTdCOSAgICAgKGJhc2UgMTYpCQlHYW1icm8gTHVuZGlhIEFCCi0JCQkJQk9YIDEwMTAxCi0JCQkJTFVORCBTa8OlbmUgMjIwMTAKLQkJCQlTV0VERU4KLQotMDAtMTctQkEgICAoaGV4KQkJU0VETyBDTy4sIExURC4KLTAwMTdCQSAgICAgKGJhc2UgMTYpCQlTRURPIENPLiwgTFRELgotCQkJCTMwMiwgS1QgQmxkZywgMUFOTkVYLCAzNS0xCi0JCQkJWWVvbmdkZXVuZ3BvLWRvbmcgOGdhLCBZZW9uZ2RldW5ncG8tZ3UKLQkJCQlTZW91bCAgMTUwLTAzOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1CQiAgIChoZXgpCQlTeXJpbnggSW5kdXN0cmlhbCBFbGVjdHJvbmljcwotMDAxN0JCICAgICAoYmFzZSAxNikJCVN5cmlueCBJbmR1c3RyaWFsIEVsZWN0cm9uaWNzCi0JCQkJRGUgRmFjdG9yaWogMTMKLQkJCQlad2FhZyBOb29yZCBIb2xsYW5kIDE2ODkgQUsKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNy1CQyAgIChoZXgpCQlUb3VjaHR1bmVzIE11c2ljIENvcnBvcmF0aW9uCi0wMDE3QkMgICAgIChiYXNlIDE2KQkJVG91Y2h0dW5lcyBNdXNpYyBDb3Jwb3JhdGlvbgotCQkJCTMgUGxhY2UgZHUgQ29tbWVyY2UKLQkJCQk0dGggRmxvb3IKLQkJCQlNb250csOpYWwgUXXDqWJlYyBIM0UgMUg3Ci0JCQkJQ0FOQURBCi0KLTAwLTE3LUJEICAgKGhleCkJCVRpYmV0c3lzdGVtCi0wMDE3QkQgICAgIChiYXNlIDE2KQkJVGliZXRzeXN0ZW0KLQkJCQk2RiBJVCBDYXN0bGUgSUkgNTUwLTEgR2FzYW4tZG9uZwotCQkJCVNlb3VsIEdldW1jaGVvbi1ndSAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUJFICAgKGhleCkJCVRyYXRlYyBUZWxlY29tIEIuVi4KLTAwMTdCRSAgICAgKGJhc2UgMTYpCQlUcmF0ZWMgVGVsZWNvbSBCLlYuCi0JCQkJRGUgU21hbGxlIFppamRlIDEyCi0JCQkJVmVlbmVuZGFhbCAgTkwwLTM5MDMgTFAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xNy1CRiAgIChoZXgpCQlDb2hlcmVudCBSZXNlYXJjaCBMaW1pdGVkCi0wMDE3QkYgICAgIChiYXNlIDE2KQkJQ29oZXJlbnQgUmVzZWFyY2ggTGltaXRlZAotCQkJCTggUHJpbmNlc3MgTWV3cwotCQkJCUhvcmFjZSBSb2FkCi0JCQkJS2luZ3N0b24gdXBvbiBUaGFtZXMgU3VycmV5IEtUMSAyU1oKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy1DMCAgIChoZXgpCQlQdXJlVGVjaCBTeXN0ZW1zLCBJbmMuCi0wMDE3QzAgICAgIChiYXNlIDE2KQkJUHVyZVRlY2ggU3lzdGVtcywgSW5jLgotCQkJCTIwNzUgVyBQaW5uYWNsZSBQZWFrIFJvYWQgIzEyMAotCQkJCVBob2VuaXggQVogODUwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUMxICAgKGhleCkJCUNNIFByZWNpc2lvbiBUZWNobm9sb2d5IExURC4KLTAwMTdDMSAgICAgKGJhc2UgMTYpCQlDTSBQcmVjaXNpb24gVGVjaG5vbG9neSBMVEQuCi0JCQkJMiBGbCwgTm8uIDE3NywgQ2hpZW4tRSBSb2FkLCBDaHVuZy1IbyBDaXR5Ci0JCQkJVGFpcGVpIEhzaWVuICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LUMyICAgKGhleCkJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi0wMDE3QzIgICAgIChiYXNlIDE2KQkJQURCIEJyb2FkYmFuZCBJdGFsaWEKLQkJCQl2LlNhcmNhIDIyMgotCQkJCU1pbGFubyAgMjAxMjYKLQkJCQlJVEFMWQotCi0wMC0xNy1DMyAgIChoZXgpCQlLVEYgVGVjaG5vbG9naWVzIEluYy4KLTAwMTdDMyAgICAgKGJhc2UgMTYpCQlLVEYgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk0dGggRmwuLCBDZW50cmFsIFRvd2VyLCAyNjUtMywgU2VvaHl1bi1Eb25nCi0JCQkJQnVuZG5hZy1HdQotCQkJCVN1bmduYW0tQ2l0eSBLeXVuZ2dpLURvIDQ2My03NjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctQzQgICAoaGV4KQkJUXVhbnRhIE1pY3Jvc3lzdGVtcywgSU5DLgotMDAxN0M0ICAgICAoYmFzZSAxNikJCVF1YW50YSBNaWNyb3N5c3RlbXMsIElOQy4KLQkJCQkxODggV2VuaHdhIDJuZCBSRC4sIEt1ZWlzaGFuIEhzaWFuZwotCQkJCVRhb3l1YW4gU2hpZW4gIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctQzUgICAoaGV4KQkJU29uaWNXQUxMCi0wMDE3QzUgICAgIChiYXNlIDE2KQkJU29uaWNXQUxMCi0JCQkJMTE0MyBCb3JyZWdhcyBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTUxMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUM2ICAgKGhleCkJCUNyb3NzIE1hdGNoIFRlY2hub2xvZ2llcyBJbmMKLTAwMTdDNiAgICAgKGJhc2UgMTYpCQlDcm9zcyBNYXRjaCBUZWNobm9sb2dpZXMgSW5jCi0JCQkJNDAwLCBib3VsLiBKZWFuLUxlc2FnZQotCQkJCUhhbGwgT3Vlc3QsIFN1aXRlIDMwCi0JCQkJUXXDqWJlYywgUWMgIEcxSyA4VzEKLQkJCQlDQU5BREEKLQotMDAtMTctQzcgICAoaGV4KQkJTUFSQSBTeXN0ZW1zIENvbnN1bHRpbmcgQUIKLTAwMTdDNyAgICAgKGJhc2UgMTYpCQlNQVJBIFN5c3RlbXMgQ29uc3VsdGluZyBBQgotCQkJCUluc3RydW1lbnR2w6RnZW4gNDUKLQkJCQlTdG9ja2hvbG0gIDEyNiA1MwotCQkJCVNXRURFTgotCi0wMC0xNy1DOCAgIChoZXgpCQlLeW9jZXJhIE1pdGEgQ29ycG9yYXRpb24KLTAwMTdDOCAgICAgKGJhc2UgMTYpCQlLeW9jZXJhIE1pdGEgQ29ycG9yYXRpb24KLQkJCQkyLTE0LTksIFRhbWFnYXdhZGFpCi0JCQkJU2V0YWdheWEtV2FyZAotCQkJCVRva3lvICAxNTgtODYxMAotCQkJCUpBUEFOCi0KLTAwLTE3LUM5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE3QzkgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQk0MTYsIE1hZXRhbi0zRG9uZywgWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24gR2V5b25nZ2ktRG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1DQSAgIChoZXgpCQlRaXNkYSBDb3Jwb3JhdGlvbgotMDAxN0NBICAgICAoYmFzZSAxNikJCVFpc2RhIENvcnBvcmF0aW9uCi0JCQkJMTU3IFNoYW4gWWluZyBSb2FkLAotCQkJCUd1ZWlTaGFuIFRhb3l1YW4sIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTctQ0IgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAxN0NCICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE5vcnRoIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg5LTEyMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUNDICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50Ci0wMDE3Q0MgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQKLQkJCQk2MDEgRGF0YSBEci4KLQkJCQlNL1MgMzIwCi0JCQkJUGxhbm8gVFggNzUwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUNEICAgKGhleCkJCUNFQyBXaXJlbGVzcyBSJkQgTHRkLgotMDAxN0NEICAgICAoYmFzZSAxNikJCUNFQyBXaXJlbGVzcyBSJkQgTHRkLgotCQkJCVdlc3QgTTUgQnVpbGRpbmcsTm8uMSBFYXN0IFJvYWQKLQkJCQlKaXV4aWFucWlhbyBDaGFvIFlhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwMTYKLQkJCQlDSElOQQotCi0wMC0xNy1DRSAgIChoZXgpCQlTY3JlZW4gU2VydmljZSBTcGEKLTAwMTdDRSAgICAgKGJhc2UgMTYpCQlTY3JlZW4gU2VydmljZSBTcGEKLQkJCQlWaWEgRy5EaSBWaXR0b3JpbyAxNwotCQkJCUJyZXNjaWEgMjUxMjUKLQkJCQlJVEFMWQotCi0wMC0xNy1DRiAgIChoZXgpCQlpTUNBLUdtYkgKLTAwMTdDRiAgICAgKGJhc2UgMTYpCQlpTUNBLUdtYkgKLQkJCQlEb3Jmc3RyYXNzZSAyOGIKLQkJCQlJdHplaG9lIFNjaGxlc3dpZy1Ib2xzdGVpbiAyNTUyNAotCQkJCUdFUk1BTlkKLQotMDAtMTctRDAgICAoaGV4KQkJT3B0aWNvbSBDb21tdW5pY2F0aW9ucywgTExDCi0wMDE3RDAgICAgIChiYXNlIDE2KQkJT3B0aWNvbSBDb21tdW5pY2F0aW9ucywgTExDCi0JCQkJMTA1MCBDb25uZWN0aWN1dCBBdmVudWUsIE5XCi0JCQkJU3VpdGUgMTAwMAotCQkJCVdhc2hpbmd0b24gREMgMjAwMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUQxICAgKGhleCkJCU5vcnRlbAotMDAxN0QxICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xNy1EMiAgIChoZXgpCQlUSElOTElOWCBQVFkgTFRECi0wMDE3RDIgICAgIChiYXNlIDE2KQkJVEhJTkxJTlggUFRZIExURAotCQkJCTMxIENhcndvb2xhIENyZXNjZW50Ci0JCQkJTW9vbG9vbGFiYSBRdWVlbnNsYW5kIDQ1NTcKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTctRDMgICAoaGV4KQkJRXR5bW90aWMgUmVzZWFyY2gsIEluYy4KLTAwMTdEMyAgICAgKGJhc2UgMTYpCQlFdHltb3RpYyBSZXNlYXJjaCwgSW5jLgotCQkJCTYxIE1hcnRpbiBMYW5lCi0JCQkJRWxrIEdyb3ZlIFZpbGxhZ2UgSUwgNjAwNjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUQ0ICAgKGhleCkJCU1vbnNvb24gTXVsdGltZWRpYSwgSW5jCi0wMDE3RDQgICAgIChiYXNlIDE2KQkJTW9uc29vbiBNdWx0aW1lZGlhLCBJbmMKLQkJCQkxNzMwIFNvdXRoIEFtcGhsZXR0IGJsdmQuIFN1aXRlIDEwMQotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRDUgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMTdENSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaS1DaXR5IEd5ZW9uZy1CdWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xNy1ENiAgIChoZXgpCQlCbHVlY2hpcHMgTWljcm9ob3VzZSBDby4sTHRkLgotMDAxN0Q2ICAgICAoYmFzZSAxNikJCUJsdWVjaGlwcyBNaWNyb2hvdXNlIENvLixMdGQuCi0JCQkJMjEyLzIgTS4xMCBUYW1ib2wgVW1vbmcKLQkJCQlBbXBodXIgTXVhbmcKLQkJCQlMYW1waHVuICA1MTE1MAotCQkJCVRIQUlMQU5ECi0KLTAwLTE3LUQ3ICAgKGhleCkJCUlPTiBHZW9waHlzaWNhbCBDb3Jwb3JhdGlvbiBJbmMuCi0wMDE3RDcgICAgIChiYXNlIDE2KQkJSU9OIEdlb3BoeXNpY2FsIENvcnBvcmF0aW9uIEluYy4KLQkJCQk4NTAgRG9yb3RoeQotCQkJCVN1aXRlIDUxMAotCQkJCVJpY2hhcmRzb24gVGV4YXMgNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUQ4ICAgKGhleCkJCU1hZ251bSBTZW1pY29uZHVjdG9yLCBJbmMuCi0wMDE3RDggICAgIChiYXNlIDE2KQkJTWFnbnVtIFNlbWljb25kdWN0b3IsIEluYy4KLQkJCQk1OTEgWW9zZW1pdGUgRHJpdmUKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRDkgICAoaGV4KQkJQUFJIENvcnBvcmF0aW9uCi0wMDE3RDkgICAgIChiYXNlIDE2KQkJQUFJIENvcnBvcmF0aW9uCi0JCQkJUC5PLiBCb3ggMTI2Ci0JCQkJSHVudCBWYWxsZXkgTWFyeWxhbmQgMjEwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LURBICAgKGhleCkJCVNwYW5zIExvZ2ljCi0wMDE3REEgICAgIChiYXNlIDE2KQkJU3BhbnMgTG9naWMKLQkJCQkyMDEgU2FuIEFudG9uaW8gQ2lyY2xlCi0JCQkJIzI4MAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LURCICAgKGhleCkJCUNBTktPIFRFQ0hOT0xPR0lFUyBJTkMuCi0wMDE3REIgICAgIChiYXNlIDE2KQkJQ0FOS08gVEVDSE5PTE9HSUVTIElOQy4KLQkJCQk1IEZMLiBET05HIFNVTkcgQkxERy4gMTctOAotCQkJCVlPSURPLURPTkcsIFlFT05HREVVTkdQTy1LVQotCQkJCVNFT1VMICAxNTAtODc0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LURDICAgKGhleCkJCURBRU1ZVU5HIFpFUk8xCi0wMDE3REMgICAgIChiYXNlIDE2KQkJREFFTVlVTkcgWkVSTzEKLQkJCQkjODA5LEh5b3N1bmcgSW50ZWxsaWFuCi0JCQkJMTU5NC0xIEd3YW55YW5nLWRvbmcsRG9uZ2FuLWd1Ci0JCQkJQW55YW5nLXNpIEd5ZW9uZ2dpLWRvIDQzMS0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctREQgICAoaGV4KQkJQ2xpcHNhbCBBdXN0cmFsaWEKLTAwMTdERCAgICAgKGJhc2UgMTYpCQlDbGlwc2FsIEF1c3RyYWxpYQotCQkJCTMzLTM3IFBvcnQgV2FrZWZpZWxkIFJkCi0JCQkJR2VwcHMgQ3Jvc3MgU291dGggQXVzdHJhbGlhIDUwOTQKLQkJCQlBVVNUUkFMSUEKLQotMDAtMTctREUgICAoaGV4KQkJQWR2YW50YWdlIFNpeCBMdGQKLTAwMTdERSAgICAgKGJhc2UgMTYpCQlBZHZhbnRhZ2UgU2l4IEx0ZAotCQkJCTIwOCBHZW9yZ2UgU3QKLQkJCQlTaGF3Ci0JCQkJT0xESEFNIExhbmNzIE9MMiA4RFIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy1ERiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE3REYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE3RTAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1FMSAgIChoZXgpCQlEQUNPUyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDE3RTEgICAgIChiYXNlIDE2KQkJREFDT1MgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCTEwNCBEYWVyeXVuZy1UZWNobm90b3duIElJSSA0NDgKLQkJCQlHYXNhbi1Eb25nCi0JCQkJU0VPVUwgS2V1bWNoZW9uLUd1IDE1My03NzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctRTIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDE3RTIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4uIEh3eSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRTMgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTdFMyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRTQgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTdFNCAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRTUgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTdFNSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRTYgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTdFNiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRTcgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTdFNyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRTggICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTdFOCAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRTkgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTdFOSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRUEgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTdFQSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRUIgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTdFQiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRUMgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMTdFQyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRUQgICAoaGV4KQkJV29vSm9vSVQgTHRkLgotMDAxN0VEICAgICAoYmFzZSAxNikJCVdvb0pvb0lUIEx0ZC4KLQkJCQlIYW5rb29rdGlyZSBCL0QgNHRoIGZsb29yLCA1MDEtMTksCi0JCQkJU2lud29sMiAtZG9uZywKLQkJCQlZYW5nY2hlb24tZ3UsIFNlb3VsIDE1OC04MzkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctRUUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMTdFRSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUVGICAgKGhleCkJCUlCTSBDb3JwCi0wMDE3RUYgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkyMDUxIE1pc3Npb24gQ29sbGVnZSBCbHZkIAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xNy1GMCAgIChoZXgpCQlTWkNPTSBCcm9hZGJhbmQgTmV0d29yayBUZWNobm9sb2d5IENvLixMdGQKLTAwMTdGMCAgICAgKGJhc2UgMTYpCQlTWkNPTSBCcm9hZGJhbmQgTmV0d29yayBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlSb29tIDYwMiBOby44IEJ1aWxkaW5nICxTaGVuemhlbiBTb2Z0d2FyZSBQYXJrLAotCQkJCUhpLVRlY2ggQy5ab25lICxOYW5zaGFuIEFyZWEKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMTctRjEgICAoaGV4KQkJUmVudSBFbGVjdHJvbmljcyBQdnQgTHRkCi0wMDE3RjEgICAgIChiYXNlIDE2KQkJUmVudSBFbGVjdHJvbmljcyBQdnQgTHRkCi0JCQkJU3IgTm8gMi82LCBCYW5lciBSb2FkLAotCQkJCUJhbmVyLAotCQkJCVB1bmUgTWFoYXJhc2h0cmEgNDExMDQ1Ci0JCQkJSU5ESUEKLQotMDAtMTctRjIgICAoaGV4KQkJQXBwbGUgQ29tcHV0ZXIKLTAwMTdGMiAgICAgKGJhc2UgMTYpCQlBcHBsZSBDb21wdXRlcgotCQkJCTEgSW5maW5pdGUgTG9vcCBNUzozNUdQTwotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRjMgICAoaGV4KQkJSGFycmlzIENvcnBhcmF0aW9uCi0wMDE3RjMgICAgIChiYXNlIDE2KQkJSGFycmlzIENvcnBhcmF0aW9uCi0JCQkJMTAyNSBXZXN0IE5BU0EgQmx2ZAotCQkJCU1lbGJvdXJuZSBGTCAzMjkxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRjQgICAoaGV4KQkJWkVST04gQUxMSUFOQ0UKLTAwMTdGNCAgICAgKGJhc2UgMTYpCQlaRVJPTiBBTExJQU5DRQotCQkJCSAzRiBET09SSSBCVUlMRC4gMjQ0LTE0IGJ1bmppLCBQb2ktZG9uZywgR2FuZ25hbS1ndQotCQkJCVNFT1VMICAxMzUtOTY1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUY1ICAgKGhleCkJCUxJRyBORU9QVEVLCi0wMDE3RjUgICAgIChiYXNlIDE2KQkJTElHIE5FT1BURUsKLQkJCQk5MjYgR29zYWVrLWRvbmcKLQkJCQlHd29uc2Vvbi1ndQotCQkJCVN1d29uLXNpIEd5ZW9uZ2dpLWRvIDQ0MS04MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctRjYgICAoaGV4KQkJUHlyYW1pZCBNZXJpZGVuIEluYy4KLTAwMTdGNiAgICAgKGJhc2UgMTYpCQlQeXJhbWlkIE1lcmlkZW4gSW5jLgotCQkJCTQ1IEdyYWNleSBBdmUuCi0JCQkJTWVyaWRlbiBDVCAwNjQ1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRjcgICAoaGV4KQkJQ0VNIFNvbHV0aW9ucyBQdnQgTHRkCi0wMDE3RjcgICAgIChiYXNlIDE2KQkJQ0VNIFNvbHV0aW9ucyBQdnQgTHRkCi0JCQkJNDksS2FuaWphIEJoYXZhbgotCQkJCVJhY2UgQ291cnNlIFJvYWQKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MCAwMDEKLQkJCQlJTkRJQQotCi0wMC0xNy1GOCAgIChoZXgpCQlNb3RlY2ggSW5kdXN0cmllcyBJbmMuCi0wMDE3RjggICAgIChiYXNlIDE2KQkJTW90ZWNoIEluZHVzdHJpZXMgSW5jLgotCQkJCTZGLCBOby4gMjQ4LCBTZWMuIDMsIFBlaS1TaGVuIFJkLiwKLQkJCQlTaGVuLUtlbmcgSHNpYW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMjIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE3LUY5ICAgKGhleCkJCUZvcmNvbSBTcC4geiBvLm8uCi0wMDE3RjkgICAgIChiYXNlIDE2KQkJRm9yY29tIFNwLiB6IG8uby4KLQkJCQlHYWpvd2EgNgotCQkJCVBvem5hbiBXTEtQIDYwLTgxNQotCQkJCVBPTEFORAotCi0wMC0xNy1GQSAgIChoZXgpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLTAwMTdGQSAgICAgKGJhc2UgMTYpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLQkJCQlPbmUgTWljcm9zb2Z0IFdheQotCQkJCVJFRC1CLzEwNzIKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTItNjM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTctRkIgICAoaGV4KQkJRkEKLTAwMTdGQiAgICAgKGJhc2UgMTYpCQlGQQotCQkJCTYyOC03LCBEdW5nY2hvbi1Eb25nCi0JCQkJU2VvdWwgS2FuZ3Nlby1LdSAxNTctODM4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE3LUZDICAgKGhleCkJCVN1cHJlbWEgSW5jLgotMDAxN0ZDICAgICAoYmFzZSAxNikJCVN1cHJlbWEgSW5jLgotCQkJCTE2RiBQYXJrdmlldyBPZmZpY2UgVG93ZXIsCi0JCQkJSmVvbmdqYS1kb25nLCBCdW5kYW5nLWd1LAotCQkJCVNlb25nbmFtIEd5ZW9uZ2dpIDQ2My04NjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTctRkQgICAoaGV4KQkJQW11bGV0IEhvdGtleQotMDAxN0ZEICAgICAoYmFzZSAxNikJCUFtdWxldCBIb3RrZXkKLQkJCQlDYXZhbGllciBSb2FkCi0JCQkJSGVhdGhmaWVsZCBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUhlYXRoZmllbGQgRGV2b24gVFExMiA2VFEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xNy1GRSAgIChoZXgpCQlUQUxPUyBTWVNURU0gSU5DLgotMDAxN0ZFICAgICAoYmFzZSAxNikJCVRBTE9TIFNZU1RFTSBJTkMuCi0JCQkJNjE5MSBDT1JORVJTVE9ORSBDVC4gU1RFICMxMDkKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE3LUZGICAgKGhleCkJCVBMQVlMSU5FIENvLixMdGQuCi0wMDE3RkYgICAgIChiYXNlIDE2KQkJUExBWUxJTkUgQ28uLEx0ZC4KLQkJCQkxLTQtMjEgTU9UT0FLQVNBS0EKLQkJCQlNSU5BVE9LVQotCQkJCVRPS1lPICAxMDctMDA1MQotCQkJCUpBUEFOCi0KLTAwLTE4LTAwICAgKGhleCkJCVVOSUdSQU5EIExURAotMDAxODAwICAgICAoYmFzZSAxNikJCVVOSUdSQU5EIExURAotCQkJCTdGLTIsIE5vLjQ1LCBKaW5nZGUgU3QuLCBKaG9uZ2hlIENpdHksCi0JCQkJVGFpcGVpIENvdW50eQotCQkJCTIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtMDEgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0wMDE4MDEgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wMiAgIChoZXgpCQlBbHBoYSBOZXR3b3JrcyBJbmMuCi0wMDE4MDIgICAgIChiYXNlIDE2KQkJQWxwaGEgTmV0d29ya3MgSW5jLgotCQkJCU5vLjggTGktc2hpbmcgU2V2ZW50aCBSb2FkLFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0wMyAgIChoZXgpCQlBcmNTb2Z0IFNoYW5naGFpIENvLiBMVEQKLTAwMTgwMyAgICAgKGJhc2UgMTYpCQlBcmNTb2Z0IFNoYW5naGFpIENvLiBMVEQKLQkJCQkyMHRoIEZsb29yLCBTdWl0ZSAoRUFTVCkgMjAwOCwgQ2hpbmEgTWVyY2hhbnRzIFBsYXphLCAzMzMKLQkJCQlTaGFuZ2hhaSAgMjAwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMTgtMDQgICAoaGV4KQkJRS1URUsgRElHSVRBTCBURUNITk9MT0dZIExJTUlURUQKLTAwMTgwNCAgICAgKGJhc2UgMTYpCQlFLVRFSyBESUdJVEFMIFRFQ0hOT0xPR1kgTElNSVRFRAotCQkJCVVOSVQxNTIwLDE1L0YuLFRPV0VSIDIsR1JBTkQgQ0VOVFVSWSBQTEFDRSwxOTMgUFJJTkNFIEVEV0FSRCBST0FEIFdFU1QsS09XTE9PTiwKLQkJCQlIT05HIEtPTkcKLQotMDAtMTgtMDUgICAoaGV4KQkJQmVpamluZyBJbkhhbmQgTmV0d29ya2luZyBUZWNobm9sb2d5IENvLixMdGQuCi0wMDE4MDUgICAgIChiYXNlIDE2KQkJQmVpamluZyBJbkhhbmQgTmV0d29ya2luZyBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJMy9GLEJ1aWxkaW5nIEEsR0VNIFRlY2hjaGVudGVyCi0JCQkJTm8sOSAzcmQgU3RyZWV0IG9mIFNoYW5nZGkKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0xOC0wNiAgIChoZXgpCQlIb2trZWkgSW5kdXN0cmllcyBDby4sIEx0ZC4KLTAwMTgwNiAgICAgKGJhc2UgMTYpCQlIb2trZWkgSW5kdXN0cmllcyBDby4sIEx0ZC4KLQkJCQlJbWFoaXJhIDQzMgotCQkJCUhha3VzYW4gSXNoaWthd2EgOTI0LTA4MjcKLQkJCQlKQVBBTgotCi0wMC0xOC0wNyAgIChoZXgpCQlGYW5zdGVsIENvcnAuCi0wMDE4MDcgICAgIChiYXNlIDE2KQkJRmFuc3RlbCBDb3JwLgotCQkJCTc0NjYgRS4gTW9udGUgQ3Jpc3RvIEF2ZS4KLQkJCQlTY290dHNkYWxlIEFyaXpvbmEgODUyNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTA4ICAgKGhleCkJCVNpZ2h0TG9naXgsIEluYy4KLTAwMTgwOCAgICAgKGJhc2UgMTYpCQlTaWdodExvZ2l4LCBJbmMuCi0JCQkJNzQ1IEFsZXhhbmRlciBSb2FkCi0JCQkJUHJpbmNldG9uIE5KIDA4NTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wOSAgIChoZXgpCQlDUkVTWU4KLTAwMTgwOSAgICAgKGJhc2UgMTYpCQlDUkVTWU4KLQkJCQk4LTIyLEphbXdvbi1kb25nCi0JCQkJU2VvdWwgU2VvY2hvLUd1ICMxMzctOTAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTBBICAgKGhleCkJCU1lcmFraSwgSW5jLgotMDAxODBBICAgICAoYmFzZSAxNikJCU1lcmFraSwgSW5jLgotCQkJCTk5IFJob2RlIElzbGFuZCBTdC4KLQkJCQlTYW4gRnJhbmNpc2NvLCBDQSA5NDEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtMEIgICAoaGV4KQkJQnJpbGxpYW50IFRlbGVjb21tdW5pY2F0aW9ucwotMDAxODBCICAgICAoYmFzZSAxNikJCUJyaWxsaWFudCBUZWxlY29tbXVuaWNhdGlvbnMKLQkJCQkzMDcgT3JjaGFyZCBDaXR5IERyLgotCQkJCVN1aXRlIDEwMgotCQkJCUNhbXBiZWxsIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wQyAgIChoZXgpCQlPcHRlbGlhbiBBY2Nlc3MgTmV0d29ya3MKLTAwMTgwQyAgICAgKGJhc2UgMTYpCQlPcHRlbGlhbiBBY2Nlc3MgTmV0d29ya3MKLQkJCQkyMkEtMTA1MSBCYXh0ZXIgUm9hZAotCQkJCU90dGF3YSBPbnRhcmlvIEsyQyAzUDIKLQkJCQlDQU5BREEKLQotMDAtMTgtMEQgICAoaGV4KQkJVGVyYWJ5dGVzIFNlcnZlciBTdG9yYWdlIFRlY2ggQ29ycAotMDAxODBEICAgICAoYmFzZSAxNikJCVRlcmFieXRlcyBTZXJ2ZXIgU3RvcmFnZSBUZWNoIENvcnAKLQkJCQkxNDI1NyBFIERvbiBKdWxpYW4gUmQKLQkJCQlDaXR5IG9mIEluZHVzdHJ5IENBIDkxNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0wRSAgIChoZXgpCQlBdmVnYSBTeXN0ZW1zCi0wMDE4MEUgICAgIChiYXNlIDE2KQkJQXZlZ2EgU3lzdGVtcwotCQkJCTU5IFZpY3RvcmlhIFN0cmVldAotCQkJCU1jTWFob25zIFBvaW50IE5TVyAyMDYwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTE4LTBGICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDE4MEYgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgRGVubWFyayAxNzkwVgotCQkJCURFTk1BUksKLQotMDAtMTgtMTAgICAoaGV4KQkJSVBUcmFkZSBTLkEuCi0wMDE4MTAgICAgIChiYXNlIDE2KQkJSVBUcmFkZSBTLkEuCi0JCQkJUGFyYyBTY2llbnRpZmlxdWUKLQkJCQlBdmVudWUgZGVzIENoYXNzZXVycyBBcmRlbm5haXMsIDQKLQkJCQlTYXJ0LVRpbG1hbiBXYWxsb25pZSA0MDMxCi0JCQkJQkVMR0lVTQotCi0wMC0xOC0xMSAgIChoZXgpCQlOZXVyb3MgVGVjaG5vbG9neSBJbnRlcm5hdGlvbmFsLCBMTEMuCi0wMDE4MTEgICAgIChiYXNlIDE2KQkJTmV1cm9zIFRlY2hub2xvZ3kgSW50ZXJuYXRpb25hbCwgTExDLgotCQkJCTY1MCBXIExha2UgU3QKLQkJCQlTdWl0ZSAzMzAKLQkJCQlDaGljYWdvIElMIDYwNjYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0xMiAgIChoZXgpCQlCZWlqaW5nIFhpbndlaSBUZWxlY29tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDE4MTIgICAgIChiYXNlIDE2KQkJQmVpamluZyBYaW53ZWkgVGVsZWNvbSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVhpbndlaSBCbGRnLiwgTm8uIDcgWmhvbmdndWFuY3VuIFNvZnR3YXJlIFBhcmssCi0JCQkJTm8uIDggRG9uZ2JlaXdhbmcgV2VzdCBSb2FkCi0JCQkJSGFpZGlhbiBEaXN0cmljdCBCZWlqaW5nIDEwMDA5NAotCQkJCUNISU5BCi0KLTAwLTE4LTEzICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDE4MTMgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa8OlbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMTgtMTQgICAoaGV4KQkJTWl0dXRveW8gQ29ycG9yYXRpb24KLTAwMTgxNCAgICAgKGJhc2UgMTYpCQlNaXR1dG95byBDb3Jwb3JhdGlvbgotCQkJCTIwLTEsIFNha2FkbyAxLWNob21lLCBUYWthdHN1LWt1LAotCQkJCUthd2FzYWtpLXNoaSAgMjEzLTg1MzMKLQkJCQlKQVBBTgotCi0wMC0xOC0xNSAgIChoZXgpCQlHWiBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTgxNSAgICAgKGJhc2UgMTYpCQlHWiBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQlSb29tIDEsIDVGLiwgTm8uOTQsIEJhb2pob25nIFJkLgotCQkJCVNpbmRpYW4gQ2l0eQotCQkJCVRhaXBlaSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0xNiAgIChoZXgpCQlVYml4b24gQ28uLCBMdGQuCi0wMDE4MTYgICAgIChiYXNlIDE2KQkJVWJpeG9uIENvLiwgTHRkLgotCQkJCUNoZW9uZ2RvbmcgQnVpbGRpbmcgMkYKLQkJCQkxMzQ0LTI5IFNlb2NobyBkb25nIFNlb2NobyBrdQotCQkJCVNlb3VsICAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTE3ICAgKGhleCkJCUQuIEUuIFNoYXcgUmVzZWFyY2gsIExMQwotMDAxODE3ICAgICAoYmFzZSAxNikJCUQuIEUuIFNoYXcgUmVzZWFyY2gsIExMQwotCQkJCTEyMCBXLiA0NXRoIFN0LiwgMzNyZCBGbG9vcgotCQkJCU5ldyBZb3JrIE5ZIDEwMDM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0xOCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE4MTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0xOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE4MTkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0xQSAgIChoZXgpCQlBVmVyTWVkaWEgSW5mb3JtYXRpb24gSW5jLgotMDAxODFBICAgICAoYmFzZSAxNikJCUFWZXJNZWRpYSBJbmZvcm1hdGlvbiBJbmMuCi0JCQkJNUYuLCBOby4gMTM1LCBKaWFuIDFzdCBSZC4sCi0JCQkJWmhvbmdIZSBEaXN0LiwKLQkJCQlOZXcgVGFpcGVpIENpdHkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0xQiAgIChoZXgpCQlUYWlKaW4gTWV0YWwgQ28uLCBMdGQuCi0wMDE4MUIgICAgIChiYXNlIDE2KQkJVGFpSmluIE1ldGFsIENvLiwgTHRkLgotCQkJCSM5NS05LCBIYW5nZG9uZzctR2EsIEpvb25nLUd1Ci0JCQkJSW4gQ2hlb24gIDQwMC0wMzcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtMUMgICAoaGV4KQkJRXh0ZXJpdHkgTGltaXRlZAotMDAxODFDICAgICAoYmFzZSAxNikJCUV4dGVyaXR5IExpbWl0ZWQKLQkJCQlSaWRnZSBXYXksIEhpbGxlbmQgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlEYWxnZXR5IEJheQotCQkJCUR1bmZlcm1saW5lIEZpZmUgS1kxMSA5SkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC0xRCAgIChoZXgpCQlBU0lBIEVMRUNUUk9OSUNTIENPLixMVEQKLTAwMTgxRCAgICAgKGJhc2UgMTYpCQlBU0lBIEVMRUNUUk9OSUNTIENPLixMVEQKLQkJCQk2MjAtMyBET0NIRU9OLURPTkcKLQkJCQlHV0FOR1NBTi1HVQotCQkJCUdXQU5HSlUgIDUwNi0zMDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtMUUgICAoaGV4KQkJR0RYIFRlY2hub2xvZ2llcyBMdGQuCi0wMDE4MUUgICAgIChiYXNlIDE2KQkJR0RYIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJNjEtNjMgQmFjayBTbmVkZG9uIFN0cmVldAotCQkJCVBhaXNsZXkgUmVuZnJld3NoaXJlIFBBMyAyREQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC0xRiAgIChoZXgpCQlQYWxtbWljcm8gQ29tbXVuaWNhdGlvbnMKLTAwMTgxRiAgICAgKGJhc2UgMTYpCQlQYWxtbWljcm8gQ29tbXVuaWNhdGlvbnMKLQkJCQlSb29tIDA2MTEsIEJsZGcuQiBUc2luZ2h1YSBUb25nZmFuZyBUZWNobm9sb2d5IFBsYXphCi0JCQkJMSBXYW5nemh1YW5nIFJvYWQKLQkJCQlCZWlqaW5nICAxMDAwODMKLQkJCQlDSElOQQotCi0wMC0xOC0yMCAgIChoZXgpCQl3NW5ldHdvcmtzCi0wMDE4MjAgICAgIChiYXNlIDE2KQkJdzVuZXR3b3JrcwotCQkJCTQ4Mzg5IEZyZW1vbnQgQmx2ZAotCQkJCVN1aXRlIDEwNgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTIxICAgKGhleCkJCVNJTkRPUklDT0gKLTAwMTgyMSAgICAgKGJhc2UgMTYpCQlTSU5ET1JJQ09ICi0JCQkJMjc3LTIyLCAyZ2EsIFN1bmdzdS1kb25nLCBTdW5nZG9uZy1ndSwKLQkJCQlTZW91bCAgMTMzLTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC0yMiAgIChoZXgpCQlDRUMgVEVMRUNPTSBDTy4sTFRELgotMDAxODIyICAgICAoYmFzZSAxNikJCUNFQyBURUxFQ09NIENPLixMVEQuCi0JCQkJMTB0aEZMLkNFQyBCdWlsZGluZyw2IFpob25nZ3VhbmN1biBTb3V0aCBTdHJlZXQKLQkJCQlCZWlqaW5nICAxMDAwODYKLQkJCQlDSElOQQotCi0wMC0xOC0yMyAgIChoZXgpCQlEZWx0YSBFbGVjdHJvbmljcywgSW5jLgotMDAxODIzICAgICAoYmFzZSAxNikJCURlbHRhIEVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJMTg2IFJ1ZXkgS3VhbmcgUm9hZCwgTmVpaHUsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTI0ICAgKGhleCkJCUtpbWFsZGkgRWxlY3Ryb25pY3MsIFMuTC4KLTAwMTgyNCAgICAgKGJhc2UgMTYpCQlLaW1hbGRpIEVsZWN0cm9uaWNzLCBTLkwuCi0JCQkJQ3RyYS4gZGUgUnViw60sIDI5MiBCCi0JCQkJUG9sLiBJbmQuIENhbiBHdWl0YXJkCi0JCQkJVGVycmFzc2EgQmFyY2Vsb25hIDA4MjI4Ci0JCQkJU1BBSU4KLQotMDAtMTgtMjUgICAoaGV4KQkJUFJJVkFURQotMDAxODI1ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0xOC0yNiAgIChoZXgpCQlDYWxlIEFjY2VzcyBBQgotMDAxODI2ICAgICAoYmFzZSAxNikJCUNhbGUgQWNjZXNzIEFCCi0JCQkJQm94IDEzMDcKLQkJCQlTb2xuYSAgU0UtMTcxIDI1Ci0JCQkJU1dFREVOCi0KLTAwLTE4LTI3ICAgKGhleCkJCU5FQyBVTklGSUVEIFNPTFVUSU9OUyBORURFUkxBTkQgQi5WLgotMDAxODI3ICAgICAoYmFzZSAxNikJCU5FQyBVTklGSUVEIFNPTFVUSU9OUyBORURFUkxBTkQgQi5WLgotCQkJCUFOVE9OIFBISUxJUFNXRUcgMQotCQkJCUhJTFZFUlNVTSBOSCAxMjIzS1oKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xOC0yOCAgIChoZXgpCQllMnYgdGVjaG5vbG9naWVzIChVSykgbHRkLgotMDAxODI4ICAgICAoYmFzZSAxNikJCWUydiB0ZWNobm9sb2dpZXMgKFVLKSBsdGQuCi0JCQkJMTA2IFdhdGVyaG91c2UgTGFuZQotCQkJCUNoZWxtc2ZvcmQgRXNzZXggQ00xIDJRVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE4LTI5ICAgKGhleCkJCUdhdHNvbWV0ZXIKLTAwMTgyOSAgICAgKGJhc2UgMTYpCQlHYXRzb21ldGVyCi0JCQkJQ2xhZXMgVGlsbHl3ZWcgMgotCQkJCUhhYXJsZW0gTm9vcmQtSG9sbGFuZCAyMDMxIENXCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTgtMkEgICAoaGV4KQkJVGFpd2FuIFZpZGVvICYgTW9uaXRvcgotMDAxODJBICAgICAoYmFzZSAxNikJCVRhaXdhbiBWaWRlbyAmIE1vbml0b3IKLQkJCQkzRiwgMTQxIEplbiBBaSBSZCBTZWMuIDMKLQkJCQlUYWlwZWkgQ2l0eSAgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0yQiAgIChoZXgpCQlTb2Z0aWVyCi0wMDE4MkIgICAgIChiYXNlIDE2KQkJU29mdGllcgotCQkJCVRpZGhhciAzCi0JCQkJTWlsbGVuaXVtIGJsZGcgZmxvb3IgMTEKLQkJCQlSYSdhbmFuYSBub25lIDQzNjY1Ci0JCQkJSVNSQUVMCi0KLTAwLTE4LTJDICAgKGhleCkJCUFzY2VuZCBOZXR3b3JrcywgSW5jLgotMDAxODJDICAgICAoYmFzZSAxNikJCUFzY2VuZCBOZXR3b3JrcywgSW5jLgotCQkJCU5vLiA0IC0gNCwgTGFuZSA0MTMsIENodW5nQ2hhbiBSb2FkLAotCQkJCUJlblF1YW8gQ2l0eSBUYWlwZWkgMjIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0yRCAgIChoZXgpCQlBcnRlYyBHcm91cCBPw4PFkwotMDAxODJEICAgICAoYmFzZSAxNikJCUFydGVjIEdyb3VwIE/Dg8WTCi0JCQkJVMODwrxyaSAxMEMKLQkJCQlUYWxsaW5uIEhhcmp1bWFhIDExMzEzCi0JCQkJRVNUT05JQQotCi0wMC0xOC0yRSAgIChoZXgpCQlYU3RyZWFtSEQsIExMQwotMDAxODJFICAgICAoYmFzZSAxNikJCVhTdHJlYW1IRCwgTExDCi0JCQkJNzkwMEIgV2VzdHBhcmsgRHJpdmUKLQkJCQlTdWl0ZSAyMDBUCi0JCQkJTWNMZWFuIFZBIDIyMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0yRiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxODJGICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0zMCAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxODMwICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0zMSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxODMxICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0zMiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxODMyICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0zMyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxODMzICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0zNCAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAxODM0ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0zNSAgIChoZXgpCQlUaG9yYXRlYyAvIElUQwotMDAxODM1ICAgICAoYmFzZSAxNikJCVRob3JhdGVjIC8gSVRDCi0JCQkJMjY1NiBQYXR0b24gUm9hZAotCQkJCVJvc2V2aWxsZSBNTiA1NTExMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtMzYgICAoaGV4KQkJUmVsaWFuY2UgRWxlY3RyaWMgTGltaXRlZAotMDAxODM2ICAgICAoYmFzZSAxNikJCVJlbGlhbmNlIEVsZWN0cmljIExpbWl0ZWQKLQkJCQkyLTMtMiBGdWt1dXJhLCBLYW5hemF3YS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIzNi04NjQxCi0JCQkJSkFQQU4KLQotMDAtMTgtMzcgICAoaGV4KQkJVW5pdmVyc2FsIEFCSVQgQ28uLCBMdGQuCi0wMDE4MzcgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEFCSVQgQ28uLCBMdGQuCi0JCQkJN0YsIE5vLiAzMjMgWWFuZ2d1YW5nIFN0LiwKLQkJCQlOZWlodSBUYWlwZWkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC0zOCAgIChoZXgpCQlQYW5BY2Nlc3MgQ29tbXVuaWNhdGlvbnMsSW5jLgotMDAxODM4ICAgICAoYmFzZSAxNikJCVBhbkFjY2VzcyBDb21tdW5pY2F0aW9ucyxJbmMuCi0JCQkJRmxvb3IgOCxUb3dlciBCLEdsb2JhbCBUcmFkZSBDZW50ZXIsMzYgQmVpc2FuaHVhbmRvbmdsdSxEb25nY2hlbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nIDEwMDAxMwotCQkJCUNISU5BCi0KLTAwLTE4LTM5ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMgTExDCi0wMDE4MzkgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cyBMTEMKLQkJCQkxMjEgVGhlb3J5Ci0JCQkJSXJ2aW5lIENBIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0zQSAgIChoZXgpCQlXZXN0ZWxsIFRlY2hub2xvZ2llcwotMDAxODNBICAgICAoYmFzZSAxNikJCVdlc3RlbGwgVGVjaG5vbG9naWVzCi0JCQkJNzUwIE4uIENvbW1vbnMgRHIuCi0JCQkJQXVyb3JhIElMIDYwNTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC0zQiAgIChoZXgpCQlDRU5JVFMgQ28uLCBMdGQuCi0wMDE4M0IgICAgIChiYXNlIDE2KQkJQ0VOSVRTIENvLiwgTHRkLgotCQkJCTNGLCBZYW5namFlIEJsZGcuLCAyNjQtMwotCQkJCVlhbmdqYWUtRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy0xMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtM0MgICAoaGV4KQkJRW5jb3JlIFNvZnR3YXJlIExpbWl0ZWQKLTAwMTgzQyAgICAgKGJhc2UgMTYpCQlFbmNvcmUgU29mdHdhcmUgTGltaXRlZAotCQkJCTZGIExlbyBDb21wbGV4Ci0JCQkJNDQgUmVzaWRlbmN5IENyb3NzIFJvYWQKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDAyNQotCQkJCUlORElBCi0KLTAwLTE4LTNEICAgKGhleCkJCVZlcnRleCBMaW5rIENvcnBvcmF0aW9uCi0wMDE4M0QgICAgIChiYXNlIDE2KQkJVmVydGV4IExpbmsgQ29ycG9yYXRpb24KLQkJCQlNZWl0ZXRzdSBGdWRvc2FuIFRha2ViYXNoaSBCbGRnIDZGCi0JCQkJMy0xNSBLYW5kYSBOaXNoaWtpY2hvCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDEtMDA1NAotCQkJCUpBUEFOCi0KLTAwLTE4LTNFICAgKGhleCkJCURpZ2lsZW50LCBJbmMKLTAwMTgzRSAgICAgKGJhc2UgMTYpCQlEaWdpbGVudCwgSW5jCi0JCQkJMjE1IEUuIE1haW4gU3QuCi0JCQkJU3VpdGUgRAotCQkJCVB1bGxtYW4gV0EgOTkxNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTNGICAgKGhleCkJCTJXaXJlLCBJbmMKLTAwMTgzRiAgICAgKGJhc2UgMTYpCQkyV2lyZSwgSW5jCi0JCQkJMTcwNCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNDAgICAoaGV4KQkJMyBQaG9lbml4LCBJbmMuCi0wMDE4NDAgICAgIChiYXNlIDE2KQkJMyBQaG9lbml4LCBJbmMuCi0JCQkJMTMxMzUgTGVlIEphY2tzb24gSHd5Ci0JCQkJU3VpdGUgMzMwCi0JCQkJRmFpcmZheCBWaXJnaW5pYSAyMjAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNDEgICAoaGV4KQkJSGlnaCBUZWNoIENvbXB1dGVyIENvcnAKLTAwMTg0MSAgICAgKGJhc2UgMTYpCQlIaWdoIFRlY2ggQ29tcHV0ZXIgQ29ycAotCQkJCTIzIEhzaW4gSHVhIFJkLgotCQkJCVRhb3l1YW4gIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtNDIgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTg0MiAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MCBWCi0JCQkJREVOTUFSSwotCi0wMC0xOC00MyAgIChoZXgpCQlEYXdldmlzaW9uIEx0ZAotMDAxODQzICAgICAoYmFzZSAxNikJCURhd2V2aXNpb24gTHRkCi0JCQkJMTk3IEhpZ2ggU3RyZWV0Ci0JCQkJQ290dGVuaGFtIENhbWJyaWRnZSBDQjQgOFJYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTgtNDQgICAoaGV4KQkJSGVhZHMgVXAgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDE4NDQgICAgIChiYXNlIDE2KQkJSGVhZHMgVXAgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMjAzMyBDaGVubmF1bHQgRHJpdmUsIFN1aXRlIDEwMAotCQkJCUNhcnJvbGx0b24gVGV4YXMgNzUwMDYtNTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNDUgICAoaGV4KQkJTlBMIFB1bHNhciBMdGQuCi0wMDE4NDUgICAgIChiYXNlIDE2KQkJTlBMIFB1bHNhciBMdGQuCi0JCQkJWmFoYXJvdmEsIDE4YQotCQkJCVBlbnphICA0NDAwNDQKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMTgtNDYgICAoaGV4KQkJQ3J5cHRvIFMuQS4KLTAwMTg0NiAgICAgKGJhc2UgMTYpCQlDcnlwdG8gUy5BLgotCQkJCVYuIElwaXJvdSA0NQotCQkJCU1hcm91c2kgQXRoZW5zIDE1MTI1Ci0JCQkJR1JFRUNFCi0KLTAwLTE4LTQ3ICAgKGhleCkJCUFjZU5ldCBUZWNobm9sb2d5IEluYy4KLTAwMTg0NyAgICAgKGJhc2UgMTYpCQlBY2VOZXQgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTMzIFZpZW5uYSBEci4KLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNDggICAoaGV4KQkJVmVjaW1hIE5ldHdvcmtzIEluYy4KLTAwMTg0OCAgICAgKGJhc2UgMTYpCQlWZWNpbWEgTmV0d29ya3MgSW5jLgotCQkJCTE1MCBDYXJkaW5hbCBQbGFjZQotCQkJCVNhc2thdG9vbiBTayBTN0wgNkg3Ci0JCQkJQ0FOQURBCi0KLTAwLTE4LTQ5ICAgKGhleCkJCVBpZ2VvbiBQb2ludCBTeXN0ZW1zCi0wMDE4NDkgICAgIChiYXNlIDE2KQkJUGlnZW9uIFBvaW50IFN5c3RlbXMKLQkJCQkyMTkxIFMuIEVsIENhbWlubyBSZWFsCi0JCQkJU3VpdGUgMjA5Ci0JCQkJT2NlYW5zaWRlIENBIDkyMDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00QSAgIChoZXgpCQlDYXRjaGVyLCBJbmMuCi0wMDE4NEEgICAgIChiYXNlIDE2KQkJQ2F0Y2hlciwgSW5jLgotCQkJCTU4NjQgT3dlbnMgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCUNhcmxzYmFkIENBIDkyMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC00QiAgIChoZXgpCQlMYXMgVmVnYXMgR2FtaW5nLCBJbmMuCi0wMDE4NEIgICAgIChiYXNlIDE2KQkJTGFzIFZlZ2FzIEdhbWluZywgSW5jLgotCQkJCTQwMDAgV2VzdCBBbGkgQmFiYSBMYW5lLCBTdWl0ZSBECi0JCQkJTGFzIFZlZ2FzIE5ldmFkYSA4OTExOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNEMgICAoaGV4KQkJQm9nZW4gQ29tbXVuaWNhdGlvbnMKLTAwMTg0QyAgICAgKGJhc2UgMTYpCQlCb2dlbiBDb21tdW5pY2F0aW9ucwotCQkJCTUwIFNwcmluZyBTdC4KLQkJCQlSYW1zZXkgTkogMDc0NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTREICAgKGhleCkJCU5ldGdlYXIgSW5jLgotMDAxODREICAgICAoYmFzZSAxNikJCU5ldGdlYXIgSW5jLgotCQkJCTQ1MDAgR3JlYXQgQW1lcmljYSBQYXJrd2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTRFICAgKGhleCkJCUxpYW5oZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTg0RSAgICAgKGJhc2UgMTYpCQlMaWFuaGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJM0YsICMxMTksIERhSHUgU2hhblpodWFuZyBTdC4KLQkJCQlOZWlodSBEaXN0cmljdCBUYWlwZWkgQ2l0eSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTRGICAgKGhleCkJCTggV2F5cyBUZWNobm9sb2d5IENvcnAuCi0wMDE4NEYgICAgIChiYXNlIDE2KQkJOCBXYXlzIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkyRi0xLCBOby4gMjE2LCBTZWMuIDMsIFJvb3NldmVsdCBSZC4KLQkJCQlUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC01MCAgIChoZXgpCQlTZWNmb25lIEtmdAotMDAxODUwICAgICAoYmFzZSAxNikJCVNlY2ZvbmUgS2Z0Ci0JCQkJNTEgQmVyY3NlbnlpIHN0cgotCQkJCUphc3piZXJlbnkgIDUxMDAKLQkJCQlIVU5HQVJZCi0KLTAwLTE4LTUxICAgKGhleCkJCVNXc29mdAotMDAxODUxICAgICAoYmFzZSAxNikJCVNXc29mdAotCQkJCTEzNzU1IFN1bnJpc2UgVmFsbGV5IERyaXZlLCBTdWl0ZSA2MDAKLQkJCQlIZXJuZG9uIFZBIDIwMTcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC01MiAgIChoZXgpCQlTdG9yTGluayBTZW1pY29uZHVjdG9ycywgSW5jLgotMDAxODUyICAgICAoYmFzZSAxNikJCVN0b3JMaW5rIFNlbWljb25kdWN0b3JzLCBJbmMuCi0JCQkJMTgwNCBOLiBTaG9yZWxpbmUgQm91bGV2YXJkCi0JCQkJU3VpdGUgMjQwCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNTMgICAoaGV4KQkJQXRlcmEgTmV0d29ya3MgTFRELgotMDAxODUzICAgICAoYmFzZSAxNikJCUF0ZXJhIE5ldHdvcmtzIExURC4KLQkJCQkzMSwgSGFiYXJ6ZWwgU3QuCi0JCQkJUmFtYXQgSGFjaGF5YWwKLQkJCQlUZWwtQXZpdiAgNjk3MTAKLQkJCQlJU1JBRUwKLQotMDAtMTgtNTQgICAoaGV4KQkJQXJnYXJkIENvLiwgTHRkCi0wMDE4NTQgICAgIChiYXNlIDE2KQkJQXJnYXJkIENvLiwgTHRkCi0JCQkJMjU3MSBMYXJkcHJhbyBSZC4KLQkJCQl3YW5ndGhvbmdsYW5nIEJhbmdrb2sgMTAzMTAKLQkJCQlUSEFJTEFORAotCi0wMC0xOC01NSAgIChoZXgpCQlBZXJvbWFyaXRpbWUgU3lzdGVtYmF1IEdtYkgKLTAwMTg1NSAgICAgKGJhc2UgMTYpCQlBZXJvbWFyaXRpbWUgU3lzdGVtYmF1IEdtYkgKLQkJCQlMdWR3aWctRXJoYXJkLVN0ci4gMTYKLQkJCQlELTg1Mzc1IE5ldWZhaHJuIAotCQkJCUdFUk1BTlkKLQotMDAtMTgtNTYgICAoaGV4KQkJRXllRmksIEluYwotMDAxODU2ICAgICAoYmFzZSAxNikJCUV5ZUZpLCBJbmMKLQkJCQkxNDkgQ29tbW9ud2VhbHRoIERyaXZlCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNTcgICAoaGV4KQkJVW5pbGV2ZXIgUiZECi0wMDE4NTcgICAgIChiYXNlIDE2KQkJVW5pbGV2ZXIgUiZECi0JCQkJQmxkZy4gNTAKLQkJCQlTaGFybmJyb29rCi0JCQkJQmVkZm9yZCBCZWRmb3Jkc2hpcmUgTUs0NCAxTFEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC01OCAgIChoZXgpCQlUYWdNYXN0ZXIgQUIKLTAwMTg1OCAgICAgKGJhc2UgMTYpCQlUYWdNYXN0ZXIgQUIKLQkJCQlLcm9uYm9yZ3NncsOkbmQgMQotCQkJCUtpc3RhIFN0b2NraG9sbSBTLTE2NDg3Ci0JCQkJU1dFREVOCi0KLTAwLTE4LTU5ICAgKGhleCkJCVN0cmF3YmVycnkgTGludXggQ28uLEx0ZC4KLTAwMTg1OSAgICAgKGJhc2UgMTYpCQlTdHJhd2JlcnJ5IExpbnV4IENvLixMdGQuCi0JCQkJMS0yOC04LTIwNCBIaWdhc2hpYXlhc2UKLQkJCQlBZGFjaGlrdSBUb2t5byAxMjAtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTE4LTVBICAgKGhleCkJCXVDb250cm9sLCBJbmMuCi0wMDE4NUEgICAgIChiYXNlIDE2KQkJdUNvbnRyb2wsIEluYy4KLQkJCQk1OTE0IFcuIENvdXJ0eWFyZCBEcml2ZQotCQkJCVN1aXRlIDIxMAotCQkJCUF1c3RpbiBUWCA3ODczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNUIgICAoaGV4KQkJTmV0d29yayBDaGVtaXN0cnksIEluYwotMDAxODVCICAgICAoYmFzZSAxNikJCU5ldHdvcmsgQ2hlbWlzdHJ5LCBJbmMKLQkJCQkxODA0IEVtYmFyY2FkZXJvIFJkCi0JCQkJUGFsbyBBbHRvIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC01QyAgIChoZXgpCQlFRFMgTGFiIFB0ZSBMdGQKLTAwMTg1QyAgICAgKGJhc2UgMTYpCQlFRFMgTGFiIFB0ZSBMdGQKLQkJCQkyMCBBeWVyIFJhamFoIENyZXNjZW50Ci0JCQkJIzA4LTI2Ci0JCQkJMTM5OTY0Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTE4LTVEICAgKGhleCkJCVRBSUdVRU4gVEVDSE5PTE9HWSAoU0hFTi1aSEVOKSBDTy4sIExURC4KLTAwMTg1RCAgICAgKGJhc2UgMTYpCQlUQUlHVUVOIFRFQ0hOT0xPR1kgKFNIRU4tWkhFTikgQ08uLCBMVEQuCi0JCQkJTm8uIDIzLCBUaGUgVGhpcmQgSW5kdXN0cmlhbCBQYXJrIG9mIFhpYSBWaWxsYWdlLAotCQkJCUdvbmdtaW5nLCBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBDaXR5LCBHdWFuZ2RvbmcsIDgxNTEwNgotCQkJCUNISU5BCi0KLTAwLTE4LTVFICAgKGhleCkJCU5leHRlcm0gSW5jLgotMDAxODVFICAgICAoYmFzZSAxNikJCU5leHRlcm0gSW5jLgotCQkJCTEtMTItMywgU2hpYmF1cmEsIE1pbmF0by1rdSwKLQkJCQlUb2t5byAgMTA1LTAwMjMKLQkJCQlKQVBBTgotCi0wMC0xOC01RiAgIChoZXgpCQlUQUMgSW5jLgotMDAxODVGICAgICAoYmFzZSAxNikJCVRBQyBJbmMuCi0JCQkJNjYgTmlzaGlpc2hpZ2F0c3Vib2NobyBOaXNoaW5hbmFqeW8gU2hpbW9neW9rdQotCQkJCUt5b3RvICA2MDAtODg5NgotCQkJCUpBUEFOCi0KLTAwLTE4LTYwICAgKGhleCkJCVNJTSBUZWNobm9sb2d5IEdyb3VwIFNoYW5naGFpIFNpbWNvbSBMdGQuLAotMDAxODYwICAgICAoYmFzZSAxNikJCVNJTSBUZWNobm9sb2d5IEdyb3VwIFNoYW5naGFpIFNpbWNvbSBMdGQuLAotCQkJCVNJTSBUZWNobm9sb2d5IGJ1aWxkaW5nLAotCQkJCTcwMCBZaXNoYW4gUmQsIFNoYW5naGFpIDIwMDIzMwotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi0wMC0xOC02MSAgIChoZXgpCQlPb21hLCBJbmMuCi0wMDE4NjEgICAgIChiYXNlIDE2KQkJT29tYSwgSW5jLgotCQkJCTU1NSBVbml2ZXJzaXR5IEF2ZW51ZQotCQkJCVBhbG8gQWx0byBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNjIgICAoaGV4KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0wMDE4NjIgICAgIChiYXNlIDE2KQkJU2VhZ2F0ZSBUZWNobm9sb2d5Ci0JCQkJMTI4MCBEaXNjIERyaXZlCi0JCQkJU2hha29wZWUgTU4gNTUzNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTYzICAgKGhleCkJCVZlcml0ZWNoIEVsZWN0cm9uaWNzIExpbWl0ZWQKLTAwMTg2MyAgICAgKGJhc2UgMTYpCQlWZXJpdGVjaCBFbGVjdHJvbmljcyBMaW1pdGVkCi0JCQkJOEYsIDY3LCBTZWMuIDEsIFpob25nc2hhbiBSb2FkLCBYaW56aHVhbmcsCi0JCQkJVGFpcGVpICAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTY0ICAgKGhleCkJCUN5YmVjdGVjIEluYy4KLTAwMTg2NCAgICAgKGJhc2UgMTYpCQlDeWJlY3RlYyBJbmMuCi0JCQkJNzMwLCBydWUgQ29tbWVyY2lhbGUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlTdC1KZWFuLUNocnlzb3N0b21lIFFDIEc2WiAyQzUKLQkJCQlDQU5BREEKLQotMDAtMTgtNjUgICAoaGV4KQkJU2llbWVucyBIZWFsdGhjYXJlIERpYWdub3N0aWNzIE1hbnVmYWN0dXJpbmcgTHRkCi0wMDE4NjUgICAgIChiYXNlIDE2KQkJU2llbWVucyBIZWFsdGhjYXJlIERpYWdub3N0aWNzIE1hbnVmYWN0dXJpbmcgTHRkCi0JCQkJTm9ydGhlcm4gUm9hZAotCQkJCUNoaWx0b24gSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlTdWRidXJ5IFN1ZmZvbGsgQzAxMCAyWFEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC02NiAgIChoZXgpCQlMZXV0cm9uIFZpc2lvbgotMDAxODY2ICAgICAoYmFzZSAxNikJCUxldXRyb24gVmlzaW9uCi0JCQkJSW5kdXN0cmllc3RyYXNzZSA1NwotCQkJCUdsYXR0YnJ1Z2cgWkggODE1MgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE4LTY3ICAgKGhleCkJCUV2b2x1dGlvbiBSb2JvdGljcyBSZXRhaWwKLTAwMTg2NyAgICAgKGJhc2UgMTYpCQlFdm9sdXRpb24gUm9ib3RpY3MgUmV0YWlsCi0JCQkJNDMzIE4uIEZhaXIgT2FrcyBBdmUKLQkJCQlQYXNhZGVuYSBDQSA5MTEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNjggICAoaGV4KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBBIENpc2NvIENvbXBhbnkKLTAwMTg2OCAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljIEF0bGFudGEsIEEgQ2lzY28gQ29tcGFueQotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC02OSAgIChoZXgpCQlLSU5HSklNCi0wMDE4NjkgICAgIChiYXNlIDE2KQkJS0lOR0pJTQotCQkJCU5vLjEwLTE4LDItQ2hvbWUKLQkJCQlIaWdhc2hpLUthbmRhCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDEtMDAzMQotCQkJCUpBUEFOCi0KLTAwLTE4LTZBICAgKGhleCkJCUdsb2JhbCBMaW5rIERpZ2l0YWwgVGVjaG5vbG9neSBDbywuTFRECi0wMDE4NkEgICAgIChiYXNlIDE2KQkJR2xvYmFsIExpbmsgRGlnaXRhbCBUZWNobm9sb2d5IENvLC5MVEQKLQkJCQlRaWJhb3lpZGluZyBJbmQuQXJlYQotCQkJCUxpdWNob25nd2VpIFdhbmppYW5nIHRvd24KLQkJCQlEb25nZ3VhbiBHdWFuZ2RvbmcgNTIzMDUxCi0JCQkJQ0hJTkEKLQotMDAtMTgtNkIgICAoaGV4KQkJU2FtYnUgQ29tbXVuaWNzIENPLiwgTFRELgotMDAxODZCICAgICAoYmFzZSAxNikJCVNhbWJ1IENvbW11bmljcyBDTy4sIExURC4KLQkJCQkzOEItMUwgTmFtZG9uZyBJbmR1c3RyaWFsIENvbXBsZXgKLQkJCQk2MjYgTmFtY2hvbi1kb25nLCBOYW1kb25nLWd1Ci0JCQkJSW5jaGVvbiAgNDA1LTEwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC02QyAgIChoZXgpCQlOZW9ub2RlIEFCCi0wMDE4NkMgICAgIChiYXNlIDE2KQkJTmVvbm9kZSBBQgotCQkJCUJpYmxpb3Rla3NnYXRhbiAxMSwgMXN0IGZsb29yCi0JCQkJU3RvY2tob2xtICBTLTExMSA0NgotCQkJCVNXRURFTgotCi0wMC0xOC02RCAgIChoZXgpCQlaaGVuamlhbmcgU2FwcGhpcmUgRWxlY3Ryb25pYyBJbmR1c3RyeSBDTy4KLTAwMTg2RCAgICAgKGJhc2UgMTYpCQlaaGVuamlhbmcgU2FwcGhpcmUgRWxlY3Ryb25pYyBJbmR1c3RyeSBDTy4KLQkJCQlXZWkgU2FuIFJvYWQsRGluZ21hbyBEZXZlbG9wIEFyZWEKLQkJCQl6aGVuamlhbmcgamlhbmdzdSAyMTIwMDkKLQkJCQlDSElOQQotCi0wMC0xOC02RSAgIChoZXgpCQkzQ29tIEx0ZAotMDAxODZFICAgICAoYmFzZSAxNikJCTNDb20gTHRkCi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzLiBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMTgtNkYgICAoaGV4KQkJU2V0aGEgSW5kdXN0cmlhIEVsZXRyb25pY2EgTFREQQotMDAxODZGICAgICAoYmFzZSAxNikJCVNldGhhIEluZHVzdHJpYSBFbGV0cm9uaWNhIExUREEKLQkJCQlSdWEgQWx2YXJvIGRlIE1hY2VkbyAxMzQKLQkJCQlQYXJhZGEgZGUgTHVjYXMKLQkJCQlSaW8gZGUgSmFuZWlybyBSSiAyMS4yNTAtNjIwCi0JCQkJQlJBWklMCi0KLTAwLTE4LTcwICAgKGhleCkJCUUyOCBTaGFuZ2hhaSBMaW1pdGVkCi0wMDE4NzAgICAgIChiYXNlIDE2KQkJRTI4IFNoYW5naGFpIExpbWl0ZWQKLQkJCQkyL0YgRWFzdGVybiBUb3dlcgotCQkJCTY4OSBCZWlqaW5nIFJvYWQgKEVhc3QpCi0JCQkJU2hhbmdoYWkgIDIwMDAwMQotCQkJCUNISU5BCi0KLTAwLTE4LTcxICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDE4NzEgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzIgICAoaGV4KQkJRXhwZXJ0aXNlIEVuZ2luZWVyaW5nCi0wMDE4NzIgICAgIChiYXNlIDE2KQkJRXhwZXJ0aXNlIEVuZ2luZWVyaW5nCi0JCQkJNDE4NiBTb3JyZW50byBWYWxsZXkgQmx2ZCBTdWl0ZSAtSgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxODczICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxODc0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtNzUgICAoaGV4KQkJQW5hQ2lzZSBUZXN0bm9sb2d5IFB0ZSBMdGQKLTAwMTg3NSAgICAgKGJhc2UgMTYpCQlBbmFDaXNlIFRlc3Rub2xvZ3kgUHRlIEx0ZAotCQkJCTMgQmlzaGFuIFBsYWNlICMwMi0wNgotCQkJCUNQRiBCaXNoYW4gQnVpbGRpbmcKLQkJCQk1Nzk4MzgKLQkJCQlTSU5HQVBPUkUKLQotMDAtMTgtNzYgICAoaGV4KQkJV293V2VlIEx0ZC4KLTAwMTg3NiAgICAgKGJhc2UgMTYpCQlXb3dXZWUgTHRkLgotCQkJCTkyIEdyYW52aWxsZSBSZC4gU3VpdGUgMzAxQS1DCi0JCQkJRW5lcmd5IFBsYXphCi0JCQkJVC5TLlQuIEVhc3QgS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTgtNzcgICAoaGV4KQkJQW1wbGV4IEEvUwotMDAxODc3ICAgICAoYmFzZSAxNikJCUFtcGxleCBBL1MKLQkJCQlTaWxrZWJvcmd2ZWogMgotCQkJCUFhcmh1cyBDICA4MDAwCi0JCQkJREVOTUFSSwotCi0wMC0xOC03OCAgIChoZXgpCQlNYWNrd2FyZSBHbWJICi0wMDE4NzggICAgIChiYXNlIDE2KQkJTWFja3dhcmUgR21iSAotCQkJCVNjaMOkbnpsZSAxMwotCQkJCVdhaWJsaW5nZW4gQmFkZW4tV8O8cnR0ZW1iZXJnIDcxMzMyCi0JCQkJR0VSTUFOWQotCi0wMC0xOC03OSAgIChoZXgpCQlkU3lzCi0wMDE4NzkgICAgIChiYXNlIDE2KQkJZFN5cwotCQkJCVNvZWZsaW5nZXIgU3RyLiAxMDAKLQkJCQlVbG0gQlcgODkwNzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTE4LTdBICAgKGhleCkJCVdpcmVtb2xkCi0wMDE4N0EgICAgIChiYXNlIDE2KQkJV2lyZW1vbGQKLQkJCQk2MCBXb29kbGF3biBTdC4KLQkJCQlXZXN0IEhhcnRmb3JkIENUIDA2MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC03QiAgIChoZXgpCQk0TlNZUyBDby4gTHRkLgotMDAxODdCICAgICAoYmFzZSAxNikJCTROU1lTIENvLiBMdGQuCi0JCQkJM0YsIEhhbmEgQmxkZwotCQkJCTExOC0yLCBPcnl1LURvbmcKLQkJCQlHdXJvLUd1IFNlb3VsIDE1Mi0xMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtN0MgICAoaGV4KQkJSU5URVJDUk9TUywgTExDCi0wMDE4N0MgICAgIChiYXNlIDE2KQkJSU5URVJDUk9TUywgTExDCi0JCQkJTm92b3NlbG92IHN0ci4sIDU4LzcKLQkJCQlSeWF6YW4gIDM5MDA0OQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xOC03RCAgIChoZXgpCQlBcm1vcmxpbmsgc2hhbmdoYWkgQ28uIEx0ZAotMDAxODdEICAgICAoYmFzZSAxNikJCUFybW9ybGluayBzaGFuZ2hhaSBDby4gTHRkCi0JCQkJTk8gNTE1LCBTaGVuZ2Z1IHJvYWQKLQkJCQlTaGFuZ2hhaSAgMjAxMTA4Ci0JCQkJQ0hJTkEKLQotMDAtMTgtN0UgICAoaGV4KQkJUkdCIFNwZWN0cnVtCi0wMDE4N0UgICAgIChiYXNlIDE2KQkJUkdCIFNwZWN0cnVtCi0JCQkJOTUwIE1hcmluYSBWaWxsYWdlIFBrd3kKLQkJCQlBbGFtZWRhIENBIDk0NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC03RiAgIChoZXgpCQlaT0RJQU5FVAotMDAxODdGICAgICAoYmFzZSAxNikJCVpPRElBTkVUCi0JCQkJMjMsIHJ1ZSBkZXMgRnJhaXNldHRlcwotCQkJCVBBTEFJU0VBVSBFU1NPTk5FIDkxMTIwCi0JCQkJRlJBTkNFCi0KLTAwLTE4LTgwICAgKGhleCkJCU1heGltIEludGVncmF0ZWQgUHJvZHVjdHMKLTAwMTg4MCAgICAgKGJhc2UgMTYpCQlNYXhpbSBJbnRlZ3JhdGVkIFByb2R1Y3RzCi0JCQkJMTIwIFNhbiBHYWJyaWVsIERyLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtODEgICAoaGV4KQkJQnV5YW5nIEVsZWN0cm9uaWNzIEluZHVzdHJpYWwgQ28uLCBMdGQKLTAwMTg4MSAgICAgKGJhc2UgMTYpCQlCdXlhbmcgRWxlY3Ryb25pY3MgSW5kdXN0cmlhbCBDby4sIEx0ZAotCQkJCTQzNC0xNDAsIE9yeXUtRG9uZwotCQkJCVNlby1LdQotCQkJCUluY2hlb24gIDQwNC0zMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtODIgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMTg4MiAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCUYxLTIwLFNlY3Rpb24gRixIdWF3ZWkgQmFzZSxCYW50aWFuLCBMb25nZ2FuZyBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi0wMC0xOC04MyAgIChoZXgpCQlGT1JNT1NBMjEgSU5DLgotMDAxODgzICAgICAoYmFzZSAxNikJCUZPUk1PU0EyMSBJTkMuCi0JCQkJOEYtNiwgTk8uMzUxLCBDSFVORyBTSEFOIFJELiwgU0VDLjIKLQkJCQlDSFVORyBITyBDSVRZCi0JCQkJVEFJUEVJICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTg0ICAgKGhleCkJCUZvbiBUZWNobm9sb2d5IFMuTC4KLTAwMTg4NCAgICAgKGJhc2UgMTYpCQlGb24gVGVjaG5vbG9neSBTLkwuCi0JCQkJQXZkYS4gQnJ1c2VsYXMsIG4uIDcsIFBsYW50YSAzLCBBbGNvYmVuZGFzCi0JCQkJTWFkcmlkIDI4MTAwCi0JCQkJU1BBSU4KLQotMDAtMTgtODUgICAoaGV4KQkJQXZpZ2lsb24gQ29ycG9yYXRpb24KLTAwMTg4NSAgICAgKGJhc2UgMTYpCQlBdmlnaWxvbiBDb3Jwb3JhdGlvbgotCQkJCUJveCAzNzgsIDEwMSAtIDEwMDEgV2VzdCBCcm9hZHdheQotCQkJCVZhbmNvdXZlciBCQyBWNkggNEU0Ci0JCQkJQ0FOQURBCi0KLTAwLTE4LTg2ICAgKGhleCkJCUVMLVRFQ0gsIElOQy4KLTAwMTg4NiAgICAgKGJhc2UgMTYpCQlFTC1URUNILCBJTkMuCi0JCQkJQS03MTEsIFdPT0xJTSBMSU9OJ1MgVkFMTEVZLCAzNzEtMjgKLQkJCQlHQVNBTi1ET05HLCBHRVVNQ0hFT04tR1UsCi0JCQkJU0VPVUwgIDE1MC04MzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtODcgICAoaGV4KQkJTWV0YXN5c3RlbSBTcEEKLTAwMTg4NyAgICAgKGJhc2UgMTYpCQlNZXRhc3lzdGVtIFNwQQotCQkJCVZpYSBPYmVyZGFuIDE2Ci0JCQkJUmVnZ2lvIEVtaWxpYSBSRSA0MjEwMAotCQkJCUlUQUxZCi0KLTAwLTE4LTg4ICAgKGhleCkJCUdPVElWRSBhLnMuCi0wMDE4ODggICAgIChiYXNlIDE2KQkJR09USVZFIGEucy4KLQkJCQlaw6Ftb2Nrw6EgMzQKLQkJCQlCcmF0aXNsYXZhICA4MTEwMQotCQkJCVNMT1ZBS0lBCi0KLTAwLTE4LTg5ICAgKGhleCkJCVdpbk5ldCBTb2x1dGlvbnMgTGltaXRlZAotMDAxODg5ICAgICAoYmFzZSAxNikJCVdpbk5ldCBTb2x1dGlvbnMgTGltaXRlZAotCQkJCVJtODA0LCBLb3JuaGlsbCBNZXRybyBUb3dlciwgUXVhcnJ5IEJheQotCQkJCUhLIDg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0xOC04QSAgIChoZXgpCQlJbmZpbm92YSBMTEMKLTAwMTg4QSAgICAgKGJhc2UgMTYpCQlJbmZpbm92YSBMTEMKLQkJCQk1MSBTdG91dHMgTGFuZSwgVW5pdCAxICYgMgotCQkJCU1vbm1vdXRoIEp1bmN0aW9uIE5ldyBKZXJzZXkgMDg4NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LThCICAgKGhleCkJCURlbGwKLTAwMTg4QiAgICAgKGJhc2UgMTYpCQlEZWxsCi0JCQkJT25lIERlbGwgV2F5Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtOEMgICAoaGV4KQkJTW9iaWxlIEFjdGlvbiBUZWNobm9sb2d5IEluYy4KLTAwMTg4QyAgICAgKGJhc2UgMTYpCQlNb2JpbGUgQWN0aW9uIFRlY2hub2xvZ3kgSW5jLgotCQkJCTVGLCBOby4gMjA1LTMsIFNlYy4gMywgQmVpc2hpbiBSZC4KLQkJCQlTaGluZGlhbiBDaXR5LCBUYWlwZWkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtOEQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTg4RCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTgtOEUgICAoaGV4KQkJRWthaGF1LCBJbmMuCi0wMDE4OEUgICAgIChiYXNlIDE2KQkJRWthaGF1LCBJbmMuCi0JCQkJVGFsbGJlcmdpbmthdHUgMgotCQkJCUhFTFNJTktJIFVVU0lNQUEgMDAxODAKLQkJCQlGSU5MQU5ECi0KLTAwLTE4LThGICAgKGhleCkJCU1vbnRnb21lcnkgVGVjaG5vbG9neSwgSW5jLgotMDAxODhGICAgICAoYmFzZSAxNikJCU1vbnRnb21lcnkgVGVjaG5vbG9neSwgSW5jLgotCQkJCTgwMCBFYXN0IENvbW1lcmNlIFN0cmVldAotCQkJCUdyZWVudmlsbGUgQUwgMzYwMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LTkwICAgKGhleCkJCVJhZGlvQ09NLCBzLnIuby4KLTAwMTg5MCAgICAgKGJhc2UgMTYpCQlSYWRpb0NPTSwgcy5yLm8uCi0JCQkJTWlzaWtvdmEgMjIKLQkJCQlCcmF0aXNsYXZhICA4MTEgMDYKLQkJCQlTTE9WQUtJQQotCi0wMC0xOC05MSAgIChoZXgpCQlaaG9uZ3NoYW4gR2VuZXJhbCBLLW1hdGUgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTAwMTg5MSAgICAgKGJhc2UgMTYpCQlaaG9uZ3NoYW4gR2VuZXJhbCBLLW1hdGUgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLQkJCQkzL0YgQjEgQnVpbGRpbmcsIEZ1d2FuIEluZC4gWm9uZSBTdW4gV2VuIEVhc3QgUm9hZAotCQkJCVpob25nc2hhbiBHdWFuZ2RvbmcgNTI4NDAzCi0JCQkJQ0hJTkEKLQotMDAtMTgtOTIgICAoaGV4KQkJYWRzLXRlYyBHbWJICi0wMDE4OTIgICAgIChiYXNlIDE2KQkJYWRzLXRlYyBHbWJICi0JCQkJUmFpZmZlaXNlbnN0cmFzc2UgMTQKLQkJCQlMZWluZmVsZGVuLUVjaHRlcmRpbmdlbiBCYWRlbi1Xw7xydHRlbWJlcmcgNzA3NzEKLQkJCQlHRVJNQU5ZCi0KLTAwLTE4LTkzICAgKGhleCkJCVNIRU5aSEVOIFBIT1RPTiBCUk9BREJBTkQgVEVDSE5PTE9HWSBDTy4sTFRECi0wMDE4OTMgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gUEhPVE9OIEJST0FEQkFORCBURUNITk9MT0dZIENPLixMVEQKLQkJCQkyL0YgSGl2YWMgQkxELDJ0aCBMYW5nc2hhbiBSZCxOb3J0aCBIaS1UZWNoIEluZHVzdHJpYWwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMTgtOTQgICAoaGV4KQkJemltb2NvbQotMDAxODk0ICAgICAoYmFzZSAxNikJCXppbW9jb20KLQkJCQkzfjVGLCBCb25nVWkgQmxkZywgNzYtMSwgTXVuamVvbmctZG9uZwotCQkJCVNvbmdwYWd1Ci0JCQkJU2VvdWwgIDEzOC0yMDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtOTUgICAoaGV4KQkJSGFuc3VuIFRlY2hub2xvZ2llcyBJbmMuCi0wMDE4OTUgICAgIChiYXNlIDE2KQkJSGFuc3VuIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJUm9vbSAzMDEsIEJ1aWxkaW5nIDEwMywgV2FuZ2ppbmdrZWppeXVhbiwgQ2hhb3lhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAxMDIKLQkJCQlDSElOQQotCi0wMC0xOC05NiAgIChoZXgpCQlHcmVhdCBXZWxsIEVsZWN0cm9uaWMgTFRECi0wMDE4OTYgICAgIChiYXNlIDE2KQkJR3JlYXQgV2VsbCBFbGVjdHJvbmljIExURAotCQkJCVRoZSBUaGlyZCBJbmR1c3RyaWFsICBBcmVhCi0JCQkJR3VhbmxhbiBUb3duCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODExMAotCQkJCUNISU5BCi0KLTAwLTE4LTk3ICAgKGhleCkJCUpFU1MtTElOSyBQUk9EVUNUUyBDby4sIExURAotMDAxODk3ICAgICAoYmFzZSAxNikJCUpFU1MtTElOSyBQUk9EVUNUUyBDby4sIExURAotCQkJCTlGLCBOby4gMTc2LCBKaWFuLVlpIFJkLiwgQ2h1bmcgSG8gQ2l0eQotCQkJCVRhaXBlaSBDb3VudHkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtOTggICAoaGV4KQkJS0lOR1NUQVRFIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OCi0wMDE4OTggICAgIChiYXNlIDE2KQkJS0lOR1NUQVRFIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OCi0JCQkJMTBGLCBOby42OS0xMSwgU2VjLjIsIENodW5nIENoZW5nIEUuIFJkLiwKLQkJCQlUYW1zaHVpIFRvd24KLQkJCQlUYWlwZWkgQ291bnR5ICAyNTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LTk5ICAgKGhleCkJCVNoZW5aaGVuIGppZXNodW4gU2NpZW5jZSZUZWNobm9sb2d5IEluZHVzdHJ5IENPLExURC4KLTAwMTg5OSAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBqaWVzaHVuIFNjaWVuY2UmVGVjaG5vbG9neSBJbmR1c3RyeSBDTyxMVEQuCi0JCQkJQ2hpbmEgR3VhbmdEb25nIHN0YXRlIFNoZW56aGVuIENpdHkgRnV0aWFuIHNlY3Rpb24gTk8xNy4gTWVpbGluIFJvYWQKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDQ5Ci0JCQkJQ0hJTkEKLQotMDAtMTgtOUEgICAoaGV4KQkJSEFOQSBNaWNyb24gSW5jLgotMDAxODlBICAgICAoYmFzZSAxNikJCUhBTkEgTWljcm9uIEluYy4KLQkJCQkjOTUtMSBXb25uYW0tTGksIFVtYm9uZy1NeWVvbgotCQkJCUNodW5nLU5hbSwgU291dGggS29yZWEuCi0JCQkJQXNhbi1DaXR5IENodW5nLU5hbSAzMzYtODY0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LTlCICAgKGhleCkJCVRob21zb24gSW5jLgotMDAxODlCICAgICAoYmFzZSAxNikJCVRob21zb24gSW5jLgotCQkJCTEwMSBXZXN0IDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MC0xMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC05QyAgIChoZXgpCQlXZWxkZXggQ29ycG9yYXRpb24KLTAwMTg5QyAgICAgKGJhc2UgMTYpCQlXZWxkZXggQ29ycG9yYXRpb24KLQkJCQk2NzUxIEthdGVsbGEgQXZlbnVlCi0JCQkJQ3lwcmVzcyBDQSA5MDYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtOUQgICAoaGV4KQkJTmF2Y2FzdCBJbmMuCi0wMDE4OUQgICAgIChiYXNlIDE2KQkJTmF2Y2FzdCBJbmMuCi0JCQkJU3VpdGUgNjEyLCA2NzExIE1pc3Npc3NhdWdhIFJvYWQKLQkJCQlNaXNzaXNzYXVnYSBPTiBtMnIgMWEzCi0JCQkJQ0FOQURBCi0KLTAwLTE4LTlFICAgKGhleCkJCU9NTklLRVkgR21iSC4KLTAwMTg5RSAgICAgKGJhc2UgMTYpCQlPTU5JS0VZIEdtYkguCi0JCQkJRmVyaWh1bWVyc3RyYXNzZSAxMwotCQkJCUxpbnogVXBwZXJhdXN0cmlhIDQwNDAKLQkJCQlBVVNUUklBCi0KLTAwLTE4LTlGICAgKGhleCkJCUxlbm50ZWsgQ29ycG9yYXRpb24KLTAwMTg5RiAgICAgKGJhc2UgMTYpCQlMZW5udGVrIENvcnBvcmF0aW9uCi0JCQkJNEYsIDEyNSBHdWFuZ01pbmcgM3JkLiBSb2FkCi0JCQkJSmh1IEJlaSBIc2luIENodSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUEwICAgKGhleCkJCUNpZXJtYSBBc2NlbnNldXJzCi0wMDE4QTAgICAgIChiYXNlIDE2KQkJQ2llcm1hIEFzY2Vuc2V1cnMKLQkJCQkxNyBhdmVudWUgZ3VpZ2xpb25kYSBkZSBzYWludCBhZ2F0aGUKLQkJCQlOaWNlIFBBQ0EgMDYzMDAKLQkJCQlGUkFOQ0UKLQotMDAtMTgtQTEgICAoaGV4KQkJVGlxaXQgQ29tcHV0ZXJzLCBJbmMuCi0wMDE4QTEgICAgIChiYXNlIDE2KQkJVGlxaXQgQ29tcHV0ZXJzLCBJbmMuCi0JCQkJMjIxNSBPbGQgUGFnZSBNaWxsIFJkCi0JCQkJUGFsbyBBbHRvIENBIDk0MzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1BMiAgIChoZXgpCQlYSVAgVGVjaG5vbG9neSBBQgotMDAxOEEyICAgICAoYmFzZSAxNikJCVhJUCBUZWNobm9sb2d5IEFCCi0JCQkJUE8gQm94IDQzNwotCQkJCUrDtm5rw7ZwaW5nIFN3ZWRlbiBTRS0gNTUxIDE2Ci0JCQkJU1dFREVOCi0KLTAwLTE4LUEzICAgKGhleCkJCVpJUFBZIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMThBMyAgICAgKGJhc2UgMTYpCQlaSVBQWSBURUNITk9MT0dZIENPUlAuCi0JCQkJMTBGLCBOby4gNTAsIE1pbmN5dWFuIFJkLiwgU2luZGlhbiBDaXR5Ci0JCQkJVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUE0ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDE4QTQgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1BNSAgIChoZXgpCQlBRGlnaXQgVGVjaG5vbG9naWVzIENvcnAuCi0wMDE4QTUgICAgIChiYXNlIDE2KQkJQURpZ2l0IFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCVJtIEQzMDJFLE5vLjE4NSAzRi0yLEt1ci1Xb25nIFJvYWQsCi0JCQkJTHVuZy1UYW5nLAotCQkJCVRhby15dWFuLCAgMzI1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1BNiAgIChoZXgpCQlQZXJzaXN0ZW50IFN5c3RlbXMsIExMQwotMDAxOEE2ICAgICAoYmFzZSAxNikJCVBlcnNpc3RlbnQgU3lzdGVtcywgTExDCi0JCQkJMTE4IE4uIEhvd2FyZCBTdC4gIzcyCi0JCQkJQmFsdGltb3JlIE1EIDIxMjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1BNyAgIChoZXgpCQlZb2dnaWUgU2VjdXJpdHkgU3lzdGVtcyBMVEQuCi0wMDE4QTcgICAgIChiYXNlIDE2KQkJWW9nZ2llIFNlY3VyaXR5IFN5c3RlbXMgTFRELgotCQkJCVAuUC5Cb3ggMTU2Ci0JCQkJQmV0aCBIYWxldnkgIDQyODcwCi0JCQkJSVNSQUVMCi0KLTAwLTE4LUE4ICAgKGhleCkJCUFuTmVhbCBUZWNobm9sb2d5IEluYy4KLTAwMThBOCAgICAgKGJhc2UgMTYpCQlBbk5lYWwgVGVjaG5vbG9neSBJbmMuCi0JCQkJTm8uMzAtMTEsIFd1bmh1YSBSZC4sIE1pbnN5b25nCi0JCQkJQ2hpYXlpICA2MjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUE5ICAgKGhleCkJCUV0aGVybmV0IERpcmVjdCBDb3Jwb3JhdGlvbgotMDAxOEE5ICAgICAoYmFzZSAxNikJCUV0aGVybmV0IERpcmVjdCBDb3Jwb3JhdGlvbgotCQkJCTE5RixOby4zNDUgQ2h1bmcgSG8gUm9hZCwgWXVuZyBIbyBDaXR5Ci0JCQkJVGFpcGVpICAyMzQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUFBICAgKGhleCkJCVByb3RlYyBGaXJlIERldGVjdGlvbiBwbGMKLTAwMThBQSAgICAgKGJhc2UgMTYpCQlQcm90ZWMgRmlyZSBEZXRlY3Rpb24gcGxjCi0JCQkJUHJvdGVjIEhvdXNlCi0JCQkJQ2h1cmNoaWxsIFdheQotCQkJCU5lbHNvbiBMYW5jYXNoaXJlIEJCOSA2UlQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOC1BQiAgIChoZXgpCQlCRUlKSU5HIExIV1QgTUlDUk9FTEVDVFJPTklDUyBJTkMuCi0wMDE4QUIgICAgIChiYXNlIDE2KQkJQkVJSklORyBMSFdUIE1JQ1JPRUxFQ1RST05JQ1MgSU5DLgotCQkJCTE4L0YsUVVBTlRVTSBQTEFaQSxOTy4yNyBaSEkgQ0hVTiBSRC4sSEFJIERJQU4gRElTVFJJQ1QsQkVJSklORwotCQkJCUNISU5BCi0KLTAwLTE4LUFDICAgKGhleCkJCVNoYW5naGFpIEppYW8gRGEgSElTWVMgVGVjaG5vbG9neSBDby4gTHRkLgotMDAxOEFDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEppYW8gRGEgSElTWVMgVGVjaG5vbG9neSBDby4gTHRkLgotCQkJCTdGIEhhb3JhbiBIaVRlY2ggQmxkZy4sIE5vLjE5NTQgSHVhc2hhbiBSb2FkCi0JCQkJc2hhbmdoYWkgeHVodWkgMjAwMDMwCi0JCQkJQ0hJTkEKLQotMDAtMTgtQUQgICAoaGV4KQkJTklERUMgU0FOS1lPIENPUlBPUkFUSU9OCi0wMDE4QUQgICAgIChiYXNlIDE2KQkJTklERUMgU0FOS1lPIENPUlBPUkFUSU9OCi0JCQkJNTMyOSwgU2hpbW9zdXdhLW1hY2hpLCBTdXdhLWd1bgotCQkJCU5hZ2FubyAzOTMtODUxMQotCQkJCUpBUEFOCi0KLTAwLTE4LUFFICAgKGhleCkJCVRWVCBDTy4sTFRECi0wMDE4QUUgICAgIChiYXNlIDE2KQkJVFZUIENPLixMVEQKLQkJCQk1L0YsTm9ydGggQmxvY2ssQ0UgTGlnaHRpbmcgSG91c2UKLQkJCQlIaS10ZWNoIFBhcmssIE5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODAyNgotCQkJCUNISU5BCi0KLTAwLTE4LUFGICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDE4QUYgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWktQ2l0eSBHeWVvbmctQnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtQjAgICAoaGV4KQkJTm9ydGVsCi0wMDE4QjAgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTE4LUIxICAgKGhleCkJCUlCTSBDb3JwCi0wMDE4QjEgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkyMDUxIE1pc3Npb24gQ29sbGVnZSBCbHZkIAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1CMiAgIChoZXgpCQlBREVVTklTIFJGCi0wMDE4QjIgICAgIChiYXNlIDE2KQkJQURFVU5JUyBSRgotCQkJCTI4MyBSdWUgTkVFTAotCQkJCUNST0xMRVMgSVNFUkUgMzg5MjAKLQkJCQlGUkFOQ0UKLQotMDAtMTgtQjMgICAoaGV4KQkJVEVDIFdpekhvbWUgQ28uLCBMdGQuCi0wMDE4QjMgICAgIChiYXNlIDE2KQkJVEVDIFdpekhvbWUgQ28uLCBMdGQuCi0JCQkJMThmbC4sIEluLVNvbmcgYmxkZy4sIDE5NC0xNSwKLQkJCQlIZW9oeXVuLURvbmcsIDFHYSwgSnVuZy1HdQotCQkJCVNlb3VsICAxMDAtOTUyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LUI0ICAgKGhleCkJCURhd29uIE1lZGlhIEluYy4KLTAwMThCNCAgICAgKGJhc2UgMTYpCQlEYXdvbiBNZWRpYSBJbmMuCi0JCQkJUm01MDMuIHdvb2xpbSBlLWJpeiBjZW50ZXIgMTcwLTUsIEd1cm8zZG9uZyBHdXJvZ3UsCi0JCQkJU2VvdWwgIDE1Mi03NjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtQjUgICAoaGV4KQkJTWFnbmEgQ2FydGEKLTAwMThCNSAgICAgKGJhc2UgMTYpCQlNYWduYSBDYXJ0YQotCQkJCU5hcml0YXdlZyAxMjYKLQkJCQlBbXN0ZXJkYW0gTm9vcmQgSG9sbGFuZCAxMDQzIENBCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMTgtQjYgICAoaGV4KQkJUzNDLCBJbmMuCi0wMDE4QjYgICAgIChiYXNlIDE2KQkJUzNDLCBJbmMuCi0JCQkJMTAxMCBTdGV3YXJ0IERyLgotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1CNyAgIChoZXgpCQlEMyBMRUQsIExMQwotMDAxOEI3ICAgICAoYmFzZSAxNikJCUQzIExFRCwgTExDCi0JCQkJMzgwIE1vdW50YWluIFJkCi0JCQkJU3VpdGUgMTQxMgotCQkJCVVuaW9uIENpdHkgTkogMDcwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUI4ICAgKGhleCkJCU5ldyBWb2ljZSBJbnRlcm5hdGlvbmFsIEFHCi0wMDE4QjggICAgIChiYXNlIDE2KQkJTmV3IFZvaWNlIEludGVybmF0aW9uYWwgQUcKLQkJCQlTdC4gR2FsbGVyc3RyYXNzZSA4Ci0JCQkJTGFjaGVuIFNaIDg4NTMKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xOC1COSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE4QjkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1CQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE4QkEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1CQiAgIChoZXgpCQlFbGl3ZWxsIENvbnRyb2xzIHNybAotMDAxOEJCICAgICAoYmFzZSAxNikJCUVsaXdlbGwgQ29udHJvbHMgc3JsCi0JCQkJVmlhIGRlbGwnSW5kdXN0cmlhLCAxNQotCQkJCVBpZXZlIGQnQWxwYWdvIEJlbGx1bm8gMzIwMTAKLQkJCQlJVEFMWQotCi0wMC0xOC1CQyAgIChoZXgpCQlaQU8gTlZQIEJvbGlkCi0wMDE4QkMgICAgIChiYXNlIDE2KQkJWkFPIE5WUCBCb2xpZAotCQkJCVBpb25lcnNrYXlhIHN0ci4sIDQKLQkJCQlLb3JvbHlvdiBNb3Njb3cgcmVnaW9uIDE0MTA3MAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xOC1CRCAgIChoZXgpCQlTSEVOWkhFTiBEVkJXT1JMRCBURUNITk9MT0dZIENPLiwgTFRELgotMDAxOEJEICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIERWQldPUkxEIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJMk5EIEZMT09SLCBCVUlMRElORyBBLCBRSU5HSFUgWElOUUlBTyBJTkRVU1RSWSBBUkVBLAotCQkJCUxPTkdIVUEsIEJBTyBBTiBESVNUUklDVAotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgwMDAKLQkJCQlDSElOQQotCi0wMC0xOC1CRSAgIChoZXgpCQlBTlNBIENvcnBvcmF0aW9uCi0wMDE4QkUgICAgIChiYXNlIDE2KQkJQU5TQSBDb3Jwb3JhdGlvbgotCQkJCTE3Ri4sIE5vLjczOCwgQ2h1bmcgQ2hlbmcgUmQuCi0JCQkJQ2h1bmcgSG8gQ2l0eSwgVGFpcGVpIENvdW50eSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1CRiAgIChoZXgpCQlFc3NlbmNlIFRlY2hub2xvZ3kgU29sdXRpb24sIEluYy4KLTAwMThCRiAgICAgKGJhc2UgMTYpCQlFc3NlbmNlIFRlY2hub2xvZ3kgU29sdXRpb24sIEluYy4KLQkJCQlCMSwgTm8uIDIwNywgQmVpc2luIFJkLiwgU2VjLiAzCi0JCQkJU2luZGlhbiwgVGFpcGVpIENvdW50eSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1DMCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxOEMwICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtQzEgICAoaGV4KQkJQWxtaXRlYyBJbmZvcm3DoXRpY2EgZSBDb23DqXJjaW8gTHRkYS4KLTAwMThDMSAgICAgKGJhc2UgMTYpCQlBbG1pdGVjIEluZm9ybcOhdGljYSBlIENvbcOpcmNpbyBMdGRhLgotCQkJCTQ2MSwgRnJhbmNpc2NvIGRlIE1vcmFpcyBTdC4KLQkJCQlTw6NvIFBhdWxvICAwNDcxNC0wMTAKLQkJCQlCUkFaSUwKLQotMDAtMTgtQzIgICAoaGV4KQkJRmlyZXRpZGUsIEluYwotMDAxOEMyICAgICAoYmFzZSAxNikJCUZpcmV0aWRlLCBJbmMKLQkJCQkxNjc5NSBMYXJrIEF2LCBTdWl0ZSAyMDAKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUMzICAgKGhleCkJCUNTIENvcnBvcmF0aW9uCi0wMDE4QzMgICAgIChiYXNlIDE2KQkJQ1MgQ29ycG9yYXRpb24KLQkJCQlDUy1idWlsZGluZywgUGFuZ3lvIHNldmVuIHZlbnR1cmUgdmFsbGV5IDYyNQotCQkJCVNhbXB5ZW9uZy1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJIFNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My00MDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtQzQgICAoaGV4KQkJUmFiYSBUZWNobm9sb2dpZXMgTExDCi0wMDE4QzQgICAgIChiYXNlIDE2KQkJUmFiYSBUZWNobm9sb2dpZXMgTExDCi0JCQkJODgzMCBTdGFuZm9yZCBCbHZkIFN1aXRlIDIwNQotCQkJCUNvbHVtYmlhIE1hcnlsYW5kIDIxMDQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1DNSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxOEM1ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICAxNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xOC1DNiAgIChoZXgpCQlPUFcgRnVlbCBNYW5hZ2VtZW50IFN5c3RlbXMKLTAwMThDNiAgICAgKGJhc2UgMTYpCQlPUFcgRnVlbCBNYW5hZ2VtZW50IFN5c3RlbXMKLQkJCQk2OTAwIFNhbnRhIEZlIERyaXZlCi0JCQkJSG9kZ2tpbnMgSWxsaW5vaXMgNjA1MjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUM3ICAgKGhleCkJCVJlYWwgVGltZSBBdXRvbWF0aW9uCi0wMDE4QzcgICAgIChiYXNlIDE2KQkJUmVhbCBUaW1lIEF1dG9tYXRpb24KLQkJCQkyODI1IE4gTWF5ZmFpciBSZCBTdGUgMTEKLQkJCQlXYXV3YXRvc2EgV0kgNTMyMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUM4ICAgKGhleCkJCUlTT05BUyBJbmMuCi0wMDE4QzggICAgIChiYXNlIDE2KQkJSVNPTkFTIEluYy4KLQkJCQk2MzI1IEd1bnBhcmsgRHJpdmUKLQkJCQlTdWl0ZSAxMDEKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1DOSAgIChoZXgpCQlFT3BzIFRlY2hub2xvZ3kgTGltaXRlZAotMDAxOEM5ICAgICAoYmFzZSAxNikJCUVPcHMgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJUm9vbSAyMDAxLCBGYWlybW9udCBIb3VzZSwKLQkJCQk4IENvdHRvbiBUcmVlIERyaXZlLCBDZW50cmFsLAotCQkJCUhvbmcgS29uZyAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE4LUNBICAgKGhleCkJCVZpcHJpbmV0IEdtYkgKLTAwMThDQSAgICAgKGJhc2UgMTYpCQlWaXByaW5ldCBHbWJICi0JCQkJQmFzaWxpa2FzdHJhc3NlIDMKLQkJCQlCaW5nZW4gYW0gUmhlaW4gIDU1NDExCi0JCQkJR0VSTUFOWQotCi0wMC0xOC1DQiAgIChoZXgpCQlUZWNvYmVzdCBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMThDQiAgICAgKGJhc2UgMTYpCQlUZWNvYmVzdCBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQk1My9GLixCbG9jayBBLFVuaXRlZCBQbGF6YSwKLQkJCQlOby41MDIyLEJpbiBIZSBSb2FkCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAyNgotCQkJCUNISU5BCi0KLTAwLTE4LUNDICAgKGhleCkJCUFYSU9ITSBTQVMKLTAwMThDQyAgICAgKGJhc2UgMTYpCQlBWElPSE0gU0FTCi0JCQkJMSBSVUUgRCdBUkNVRUlMCi0JCQkJTU9OVFJPVUdFICA5MjEyMAotCQkJCUZSQU5DRQotCi0wMC0xOC1DRCAgIChoZXgpCQlFcmFlIEVsZWN0cm9uaWNzIEluZHVzdHJ5IENvLiwgTHRkCi0wMDE4Q0QgICAgIChiYXNlIDE2KQkJRXJhZSBFbGVjdHJvbmljcyBJbmR1c3RyeSBDby4sIEx0ZAotCQkJCSMzNzEtNTEsIEdhc2FuLWRvbmcKLQkJCQlHZXVtY2hlbi1ndSBTZW91bCAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LUNFICAgKGhleCkJCURyZWFtdGVjaCBDby4sIEx0ZAotMDAxOENFICAgICAoYmFzZSAxNikJCURyZWFtdGVjaCBDby4sIEx0ZAotCQkJCSMzNDAtNSwgWWFuZy1kYW5nIFJpLCBKaWstc2FuIE15ZW9uCi0JCQkJQ2hlb24tYW4gc2kgQ2h1bmctTmFtIDMzMDgxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOC1DRiAgIChoZXgpCQlCYWxkb3IgRWxlY3RyaWMgQ29tcGFueQotMDAxOENGICAgICAoYmFzZSAxNikJCUJhbGRvciBFbGVjdHJpYyBDb21wYW55Ci0JCQkJNjAwIFMuIFplcm8gU3QuCi0JCQkJRm9ydCBTbWl0aCBBUiA3MjkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRDAgICAoaGV4KQkJQXRSb2FkLCAgQSBUcmltYmxlIENvbXBhbnkKLTAwMThEMCAgICAgKGJhc2UgMTYpCQlBdFJvYWQsICBBIFRyaW1ibGUgQ29tcGFueQotCQkJCTQ3MDcxIEJheXNpZGUgUGFya3dheQotCQkJCUZyZW1vbnQgQ2FsaWZvcm5pYSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRDEgICAoaGV4KQkJU2llbWVucyBIb21lICYgT2ZmaWNlIENvbW0uIERldmljZXMKLTAwMThEMSAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEhvbWUgJiBPZmZpY2UgQ29tbS4gRGV2aWNlcwotCQkJCTQ4NDkgQWxwaGEgUmQuCi0JCQkJRGFsbGFzIFRleGFzIDc1MjQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1EMiAgIChoZXgpCQlIaWdoLUdhaW4gQW50ZW5uYXMgTExDCi0wMDE4RDIgICAgIChiYXNlIDE2KQkJSGlnaC1HYWluIEFudGVubmFzIExMQwotCQkJCTExNjc5IFMuIENvcm1vcmFudCBDaXJjbGUKLQkJCQlQYXJrZXIgQ08gODAxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUQzICAgKGhleCkJCVRFQU1DQVNUCi0wMDE4RDMgICAgIChiYXNlIDE2KQkJVEVBTUNBU1QKLQkJCQlDZW50cmUgRXNwYWNlIFBlcmZvcm1hbmNlCi0JCQkJU2FpbnQgR3JlZ29pcmUgIDM1NzY5Ci0JCQkJRlJBTkNFCi0KLTAwLTE4LUQ0ICAgKGhleCkJCVVuaWZpZWQgRGlzcGxheSBJbnRlcmZhY2UgU0lHCi0wMDE4RDQgICAgIChiYXNlIDE2KQkJVW5pZmllZCBEaXNwbGF5IEludGVyZmFjZSBTSUcKLQkJCQkxNTIwMSBTVyBHcmVlbmJyaWVyIFBhcmt3YXkKLQkJCQlCZWF2ZXJ0b24gT3JlZ29uIDk3MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1ENSAgIChoZXgpCQlSRUlHTkNPTQotMDAxOEQ1ICAgICAoYmFzZSAxNikJCVJFSUdOQ09NCi0JCQkJMTRGIEthbWNvIFlhbmphZSBUb3dlciwgOTQ5LTMKLQkJCQlEb2dvayAxLWRvbmdtLCBHYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS03MzkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtRDYgICAoaGV4KQkJU3dpcmxuZXQgQS9TCi0wMDE4RDYgICAgIChiYXNlIDE2KQkJU3dpcmxuZXQgQS9TCi0JCQkJRGlwbG9tdmVqIDM4MQotCQkJCUx5bmdieSAgREstMjgwMAotCQkJCURFTk1BUksKLQotMDAtMTgtRDcgICAoaGV4KQkJSmF2YWQgTmF2aWdhdGlvbiBTeXN0ZW1zIEluYy4KLTAwMThENyAgICAgKGJhc2UgMTYpCQlKYXZhZCBOYXZpZ2F0aW9uIFN5c3RlbXMgSW5jLgotCQkJCTE3MzEgVGVjaG5vbG9neSBEcml2ZSwgU3VpdGUgNjgwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUQ4ICAgKGhleCkJCUFSQ0ggTUVURVIgQ29ycG9yYXRpb24KLTAwMThEOCAgICAgKGJhc2UgMTYpCQlBUkNIIE1FVEVSIENvcnBvcmF0aW9uCi0JCQkJNEYsIE5vLjMtMiwgSW5kdXN0cnkgRS4gUmQuCi0JCQkJOSxIc2luY2h1IFNjaWVuY2UgUGFyawotCQkJCUhzaW5jaHUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtRDkgICAoaGV4KQkJU2FudG9zaGEgSW50ZXJuYXRvbmFsLCBJbmMKLTAwMThEOSAgICAgKGJhc2UgMTYpCQlTYW50b3NoYSBJbnRlcm5hdG9uYWwsIEluYwotCQkJCTM4NDMgUy4gQnJpc3RvbCBTdC4gIzI0MgotCQkJCVNhbnRhIEFuYSBDQSA5MjcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtREEgICAoaGV4KQkJQU1CRVIgd2lyZWxlc3MgR21iSAotMDAxOERBICAgICAoYmFzZSAxNikJCUFNQkVSIHdpcmVsZXNzIEdtYkgKLQkJCQlBbGJpbi1Lb2ViaXMtU3RyLiAxOAotCQkJCUtvZWxuICA1MTE0NwotCQkJCUdFUk1BTlkKLQotMDAtMTgtREIgICAoaGV4KQkJRVBMIFRlY2hub2xvZ3kgTHRkCi0wMDE4REIgICAgIChiYXNlIDE2KQkJRVBMIFRlY2hub2xvZ3kgTHRkCi0JCQkJTG9uZ0RvbmcsTG9uZ2dhbmcgRGlzdHJpY3QKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTE2Ci0JCQkJQ0hJTkEKLQotMDAtMTgtREMgICAoaGV4KQkJUHJvc3RhciBDby4sIEx0ZC4KLTAwMThEQyAgICAgKGJhc2UgMTYpCQlQcm9zdGFyIENvLiwgTHRkLgotCQkJCUEtNzAzIFRlY2hub3Rvd24sIDI1MC0zIEhhZ3llLWRvbmcsIE5vd29uLWd1Ci0JCQkJU2VvdWwgIDEzOS0yMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTgtREQgICAoaGV4KQkJU2lsaWNvbmR1c3QgRW5naW5lZXJpbmcgTHRkCi0wMDE4REQgICAgIChiYXNlIDE2KQkJU2lsaWNvbmR1c3QgRW5naW5lZXJpbmcgTHRkCi0JCQkJUE8gQm94IDc0LTI5OQotCQkJCU1hcmtldCBSZAotCQkJCUF1Y2tsYW5kICAKLQkJCQlORVcgWkVBTEFORAotCi0wMC0xOC1ERSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDAxOERFICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xOC1ERiAgIChoZXgpCQlUaGUgTW9yZXkgQ29ycG9yYXRpb24KLTAwMThERiAgICAgKGJhc2UgMTYpCQlUaGUgTW9yZXkgQ29ycG9yYXRpb24KLQkJCQkxMDAgTW9yZXkgRHJpdmUKLQkJCQlXb29kcmlkZ2UgSUwgNjA1MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUUwICAgKGhleCkJCUFOQVZFTwotMDAxOEUwICAgICAoYmFzZSAxNikJCUFOQVZFTwotCQkJCUxlcyBDYXJyw6lzIGR1IHBhcmMKLQkJCQkxMCBydWUgZGVzIFJvc2nDqXJpc3RlcwotCQkJCUNIQU1QQUdORSBhdSBNT05UIEQnT1IgUmjDtG5lIEYtNjk0MTAKLQkJCQlGUkFOQ0UKLQotMDAtMTgtRTEgICAoaGV4KQkJVmVya2VyayBTZXJ2aWNlIFN5c3RlbWVuCi0wMDE4RTEgICAgIChiYXNlIDE2KQkJVmVya2VyayBTZXJ2aWNlIFN5c3RlbWVuCi0JCQkJTW9sZW52bGlldCAxCi0JCQkJWndpam5kcmVjaHQgWnVpZC1Ib2xsYW5kIE5MLTMzMzVMSAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTE4LUUyICAgKGhleCkJCVRvcGRhdGEgU2lzdGVtYXMgZGUgQXV0b21hY2FvIEx0ZGEKLTAwMThFMiAgICAgKGJhc2UgMTYpCQlUb3BkYXRhIFNpc3RlbWFzIGRlIEF1dG9tYWNhbyBMdGRhCi0JCQkJUnVhIERyIENhcnZhbGhvIENoYXZlcywgNjYyCi0JCQkJQ3VyaXRpYmEgUFIgODAuMjIwLTAxMAotCQkJCUJSQVpJTAotCi0wMC0xOC1FMyAgIChoZXgpCQlWaXN1YWxnYXRlIFN5c3RlbXMsIEluYy4KLTAwMThFMyAgICAgKGJhc2UgMTYpCQlWaXN1YWxnYXRlIFN5c3RlbXMsIEluYy4KLQkJCQk2NCBCYWtlcnNmaWVsZCBTdHJlZXQKLQkJCQlUb3JvbnRvIE9udGFyaW8gTTNKIDJXNwotCQkJCUNBTkFEQQotCi0wMC0xOC1FNCAgIChoZXgpCQlZSUdVQU5HCi0wMDE4RTQgICAgIChiYXNlIDE2KQkJWUlHVUFORwotCQkJCTMvRkwuSW5kdXN0cnkgem9uZSxGdXhpbmxpbixIYW5nY2hlbmcsWGl4aWFuZyxCYW9hbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjYKLQkJCQlDSElOQQotCi0wMC0xOC1FNSAgIChoZXgpCQlBZGhvY28gQUcKLTAwMThFNSAgICAgKGJhc2UgMTYpCQlBZGhvY28gQUcKLQkJCQlUZWNobm9wYXJrCi0JCQkJSmFlZ2Vyc3RyLiAyCi0JCQkJV2ludGVydGh1ciBaSCBDSC04NDA2IAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE4LUU2ICAgKGhleCkJCUNvbXB1dGVyIEhhcmR3YXJlIERlc2lnbiBTSUEKLTAwMThFNiAgICAgKGJhc2UgMTYpCQlDb21wdXRlciBIYXJkd2FyZSBEZXNpZ24gU0lBCi0JCQkJRHplbHphdmFzIDEyMGkKLQkJCQlSaWdhICBMVi0xMDIxCi0JCQkJTEFUVklBCi0KLTAwLTE4LUU3ICAgKGhleCkJCUNhbWVvIENvbW11bmljYXRpb25zLCBJTkMuCi0wMDE4RTcgICAgIChiYXNlIDE2KQkJQ2FtZW8gQ29tbXVuaWNhdGlvbnMsIElOQy4KLQkJCQlOTy40MiwgU2VjLiA2LCBNaW5jeXVhbiBFLiBSZC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtRTggICAoaGV4KQkJSGFjZXRyb24gQ29ycG9yYXRpb24KLTAwMThFOCAgICAgKGJhc2UgMTYpCQlIYWNldHJvbiBDb3Jwb3JhdGlvbgotCQkJCU5vLiA1NDIsCi0JCQkJU2VjLjEsIFlhbmctSFUgUmQsCi0JCQkJWWFuZy1NZWksIFRhby1ZdWFuLCAzMjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUU5ICAgKGhleCkJCU51bWF0YSBDb3Jwb3JhdGlvbgotMDAxOEU5ICAgICAoYmFzZSAxNikJCU51bWF0YSBDb3Jwb3JhdGlvbgotCQkJCTgtMi0zOSBuYW5rby1oaWdhc2hpCi0JCQkJU3VtaW5vZS1rdQotCQkJCU9zYWthLXNoaSBPc2FrYS1mdSA1NTktMDAzMQotCQkJCUpBUEFOCi0KLTAwLTE4LUVBICAgKGhleCkJCUFsbHRlYyBHbWJICi0wMDE4RUEgICAgIChiYXNlIDE2KQkJQWxsdGVjIEdtYkgKLQkJCQlBbiBkZXIgVHJhdmUgMjctMzEKLQkJCQlTZWxtc2RvcmYgTWVja2xlbmJ1cmctVm9ycG9tbWVybiAyMzkyMwotCQkJCUdFUk1BTlkKLQotMDAtMTgtRUIgICAoaGV4KQkJQnJvVmlzIFdpcmVsZXNzIE5ldHdvcmtzCi0wMDE4RUIgICAgIChiYXNlIDE2KQkJQnJvVmlzIFdpcmVsZXNzIE5ldHdvcmtzCi0JCQkJMTk5MjUgU3RldmVucyBDcmVlayBCbHZkCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1FQyAgIChoZXgpCQlXZWxkaW5nIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMThFQyAgICAgKGJhc2UgMTYpCQlXZWxkaW5nIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkyNDc3NSBDcmVzdHZpZXcgQ291cnQKLQkJCQlGYXJtaW5ndG9uIEhpbGxzIE1JIDQ4MzM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1FRCAgIChoZXgpCQlBY2N1dGVjaCBVbHRyYXN5c3RlbXMgQ28uLCBMdGQuCi0wMDE4RUQgICAgIChiYXNlIDE2KQkJQWNjdXRlY2ggVWx0cmFzeXN0ZW1zIENvLiwgTHRkLgotCQkJCTExRi00LCBOby4gMTUwLAotCQkJCUNISUVOLVlJIFJPQUQsCi0JCQkJQ0hVTkctSE8gQ0lUWSwgVEFJUEVJIEhTSUVOLCAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE4LUVFICAgKGhleCkJCVZpZGVvbG9neSBJbWFnaW5nIFNvbHV0aW9ucywgSW5jLgotMDAxOEVFICAgICAoYmFzZSAxNikJCVZpZGVvbG9neSBJbWFnaW5nIFNvbHV0aW9ucywgSW5jLgotCQkJCTM3IE0gTGFyayBJbmR1c3RyaWFsIFBhcmt3YXkKLQkJCQlHcmVlbnZpbGxlIFJJIDAyODI4LTMwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUVGICAgKGhleCkJCUVzY2FwZSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxOEVGICAgICAoYmFzZSAxNikJCUVzY2FwZSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTI2MTUgUGFjaWZpYyBDb2FzdCBId3kKLQkJCQlTdGUgMzI5Ci0JCQkJSGVybW9zYSBCZWFjaCBDQSA5MDI1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTgtRjAgICAoaGV4KQkJSk9ZVE9UTyBDby4sIEx0ZC4KLTAwMThGMCAgICAgKGJhc2UgMTYpCQlKT1lUT1RPIENvLiwgTHRkLgotCQkJCTNGIFN1bmd3b28gQmxkZy4gNzE3LTMsIFNvb3Nlby1Eb25nCi0JCQkJS2FuZ25hbS1HdQotCQkJCVNlb3VsICAxMzUtMjIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LUYxICAgKGhleCkJCUNodW5pY2hpIERlbnNoaSBDby4sTFRELgotMDAxOEYxICAgICAoYmFzZSAxNikJCUNodW5pY2hpIERlbnNoaSBDby4sTFRELgotCQkJCTEgRGVuaml5YW1hCi0JCQkJTmFydW1pIGNobyBNaWRvcmkga3UKLQkJCQlOYWdveWEgQWljaGkgNDU4LTg1MjUKLQkJCQlKQVBBTgotCi0wMC0xOC1GMiAgIChoZXgpCQlCZWlqaW5nIFRpYW55dSBDb21tdW5pY2F0aW9uIEVxdWlwbWVudCBDby4sIEx0ZAotMDAxOEYyICAgICAoYmFzZSAxNikJCUJlaWppbmcgVGlhbnl1IENvbW11bmljYXRpb24gRXF1aXBtZW50IENvLiwgTHRkCi0JCQkJMjd0aCBGbG9vciwgVGVuZ2RhIFBsYXphCi0JCQkJWGl6aGltZW5nd2FpIFN0cmVldCwgSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA0NAotCQkJCUNISU5BCi0KLTAwLTE4LUYzICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAxOEYzICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTgtRjQgICAoaGV4KQkJRU8gVEVDSE5JQ1MgQ28uLCBMdGQuCi0wMDE4RjQgICAgIChiYXNlIDE2KQkJRU8gVEVDSE5JQ1MgQ28uLCBMdGQuCi0JCQkJODY0LTQsIEt3YW55YW5nIDItRG9uZwotCQkJCURvbmdhbi1HdQotCQkJCUFueWFuZyBLeWVvbmdnaS1EbyA0MzEtMDYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE4LUY1ICAgKGhleCkJCVNoZW56aGVuIFN0cmVhbWluZyBWaWRlbyBUZWNobm9sb2d5IENvbXBhbnkgTGltaXRlZAotMDAxOEY1ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFN0cmVhbWluZyBWaWRlbyBUZWNobm9sb2d5IENvbXBhbnkgTGltaXRlZAotCQkJCTUvRiwgQmxvY2sgMywgU29mdHdhcmUgUGFydCBOby4xLCBLZWppIE1pZGRsZSAyIFJvYWQsCi0JCQkJU2hlbnpoZW4gSGktVGVjaCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlTaGVuemhlbiBHYXVuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMTgtRjYgICAoaGV4KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLTAwMThGNiAgICAgKGJhc2UgMTYpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotCQkJCVByaW5zIEJvdWRld2lqbmxhYW4gNDcKLQkJCQlFZGVnZW0gQW50d2VycCBCLTI2NTAKLQkJCQlCRUxHSVVNCi0KLTAwLTE4LUY3ICAgKGhleCkJCUthbWVsZW9uIFRlY2hub2xvZ2llcwotMDAxOEY3ICAgICAoYmFzZSAxNikJCUthbWVsZW9uIFRlY2hub2xvZ2llcwotCQkJCTIxNywgcnVlIFN0IEhvbm9yw6kKLQkJCQlQYXJpcyAgNzUwMDEKLQkJCQlGUkFOQ0UKLQotMDAtMTgtRjggICAoaGV4KQkJQ2lzY28tTGlua3N5cyBMTEMKLTAwMThGOCAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ0EgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE4LUY5ICAgKGhleCkJCVZWT05ELCBJbmMuCi0wMDE4RjkgICAgIChiYXNlIDE2KQkJVlZPTkQsIEluYy4KLQkJCQkzMDAwIEJyaWRnZSBQYXJrd2F5Ci0JCQkJU3VpdGUgMTAyCi0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1GQSAgIChoZXgpCQlZdXNoaW4gUHJlY2lzaW9uIEVxdWlwbWVudCBDby4sTHRkLgotMDAxOEZBICAgICAoYmFzZSAxNikJCVl1c2hpbiBQcmVjaXNpb24gRXF1aXBtZW50IENvLixMdGQuCi0JCQkJMTEtMjYwIEtPR0FIT05NQUNISQotCQkJCUZVU0hJTUktS1UKLQkJCQlLWU9UTyAgNjEyLTg0OTIgSkFQCi0JCQkJSkFQQU4KLQotMDAtMTgtRkIgICAoaGV4KQkJQ29tcHJvIFRlY2hub2xvZ3kKLTAwMThGQiAgICAgKGJhc2UgMTYpCQlDb21wcm8gVGVjaG5vbG9neQotCQkJCTMvRiBObyAxMiwgQWxsZXkgNiwgTGFuZSA0NSwgUGFvIFNoaW4gUmQKLQkJCQlIc2ludGllbiAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOC1GQyAgIChoZXgpCQlBbHRlYyBFbGVjdHJvbmljIEFHCi0wMDE4RkMgICAgIChiYXNlIDE2KQkJQWx0ZWMgRWxlY3Ryb25pYyBBRwotCQkJCUxlbmdnZW5iYWNoc3RyYXNzZSAzCi0JCQkJRmFocndlaWQgWsO8cmljaCBDSC04OTUxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTgtRkQgICAoaGV4KQkJT3B0aW1hbCBUZWNobm9sb2dpZXMgSW50ZXJuYXRpb25hbCBJbmMuCi0wMDE4RkQgICAgIChiYXNlIDE2KQkJT3B0aW1hbCBUZWNobm9sb2dpZXMgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJMTIgU3BhbmlzaCBNYWluIERyaXZlCi0JCQkJUE8gQm94IEYtNDI0MDkvMzU5Ci0JCQkJRnJlZXBvcnQgR0JJIAotCQkJCUJBSEFNQVMKLQotMDAtMTgtRkUgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMThGRSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNjAzMDgKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOC1GRiAgIChoZXgpCQlQb3dlclF1YXR0cm8gQ28uCi0wMDE4RkYgICAgIChiYXNlIDE2KQkJUG93ZXJRdWF0dHJvIENvLgotCQkJCUrDoW5vcyB1LiAxNzUuCi0JCQkJQnVkYXBlc3QgIEgtMTE2MQotCQkJCUhVTkdBUlkKLQotMDAtMTktMDAgICAoaGV4KQkJSW50ZWxsaXZlcmVzZSAtIERCQSBWb2ljZWNvbQotMDAxOTAwICAgICAoYmFzZSAxNikJCUludGVsbGl2ZXJlc2UgLSBEQkEgVm9pY2Vjb20KLQkJCQk1OTAwIFdpbmR3YXJkIFBhcmt3YXkKLQkJCQlTdWl0ZSA1MDAKLQkJCQlBbHBoYXJldHRhIEdlb3JnaWEgMzAwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTAxICAgKGhleCkJCUYxTUVESUEKLTAwMTkwMSAgICAgKGJhc2UgMTYpCQlGMU1FRElBCi0JCQkJNjEwLCBLZXVta2FuZyBIaWdodGVjaCDCpcKxLCAxMzgtMSBTYW5nZGFld29uLURvbmcsIEp1bmd3b24tR3UKLQkJCQlTZW9uZ25hbS1TaSBHeWVvbmdnaS1EbyA0NjItNzA3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTAyICAgKGhleCkJCUNhbWJyaWRnZSBDb25zdWx0YW50cyBMdGQKLTAwMTkwMiAgICAgKGJhc2UgMTYpCQlDYW1icmlkZ2UgQ29uc3VsdGFudHMgTHRkCi0JCQkJU2NpZW5jZSBQYXJrCi0JCQkJTWlsdG9uIFJvYWQKLQkJCQlDYW1icmlkZ2UgQ2FtYnMgQ0I0IDBEVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE5LTAzICAgKGhleCkJCUJpZ2Zvb3QgTmV0d29ya3MgSW5jCi0wMDE5MDMgICAgIChiYXNlIDE2KQkJQmlnZm9vdCBOZXR3b3JrcyBJbmMKLQkJCQkzOTI1IFdlc3QgQnJha2VyIExhbmUKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTA0ICAgKGhleCkJCVdCIEVsZWN0cm9uaWNzIFNwLiB6IG8uby4KLTAwMTkwNCAgICAgKGJhc2UgMTYpCQlXQiBFbGVjdHJvbmljcyBTcC4geiBvLm8uCi0JCQkJdWwuIFBvem5hbnNrYSAxMjkvMTMzCi0JCQkJT3phcm93IE1hem93aWVja2kgTWF6b3dpZWNraWUgMDUtODUwCi0JCQkJUE9MQU5ECi0KLTAwLTE5LTA1ICAgKGhleCkJCVNDSFJBQ0sgU2Vjb25ldCBBRwotMDAxOTA1ICAgICAoYmFzZSAxNikJCVNDSFJBQ0sgU2Vjb25ldCBBRwotCQkJCUVpYmVzYnJ1bm5lcmdhc3NlIDE4Ci0JCQkJV2llbiDDg+KAk3N0ZXJyZWljaCAxMTIyCi0JCQkJQVVTVFJJQQotCi0wMC0xOS0wNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5MDYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0wNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5MDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0wOCAgIChoZXgpCQlEdWF4ZXMgQ29ycG9yYXRpb24KLTAwMTkwOCAgICAgKGJhc2UgMTYpCQlEdWF4ZXMgQ29ycG9yYXRpb24KLQkJCQkyLTUsIEthc3VtaWdhc2VraSAzLWNob21lLCBDaGl5b2RhLWt1LgotCQkJCVRva3lvIEZvcmVpZ24gMTAwLTYwMTQKLQkJCQlKQVBBTgotCi0wMC0xOS0wOSAgIChoZXgpCQlEZXZpIEEvUwotMDAxOTA5ICAgICAoYmFzZSAxNikJCURldmkgQS9TCi0JCQkJVWx2ZWhhdmV2ZWogNjEKLQkJCQlWZWpsZSAgNzEwMAotCQkJCURFTk1BUksKLQotMDAtMTktMEEgICAoaGV4KQkJSEFTV0FSRSBJTkMuCi0wMDE5MEEgICAgIChiYXNlIDE2KQkJSEFTV0FSRSBJTkMuCi0JCQkJNC0xMi0zIEhJR0FTSEkKLQkJCQlLVU5JVEFDSEkgVE9LWU8gMTg2LTAwMDIKLQkJCQlKQVBBTgotCi0wMC0xOS0wQiAgIChoZXgpCQlTb3V0aGVybiBWaXNpb24gU3lzdGVtcywgSW5jLgotMDAxOTBCICAgICAoYmFzZSAxNikJCVNvdXRoZXJuIFZpc2lvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJODIxNSBNYWRpc29uIEJsdmQsIFN1aXRlIDE1MAotCQkJCU1hZGlzb24gQUwgMzU3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTBDICAgKGhleCkJCUVuY29yZSBFbGVjdHJvbmljcywgSW5jLgotMDAxOTBDICAgICAoYmFzZSAxNikJCUVuY29yZSBFbGVjdHJvbmljcywgSW5jLgotCQkJCTE2NDgzIE9sZCBWYWxsZXkgQmx2ZC4KLQkJCQlMYSBQdWVudGUgQ0EgOTE3NDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTBEICAgKGhleCkJCUlFRUUgMTM5NGMKLTAwMTkwRCAgICAgKGJhc2UgMTYpCQlJRUVFIDEzOTRjCi0JCQkJYy9vIDEzOTQgVHJhZGUgQXNzb2NpYXRpb24KLQkJCQkxNTYwIEVhc3QgU291dGhsYWtlIEJsdmQuLCBTdWl0ZSAyMjAKLQkJCQlTb3V0aGxha2UgVFggNzYwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTBFICAgKGhleCkJCUF0ZWNoIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDE5MEUgICAgIChiYXNlIDE2KQkJQXRlY2ggVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk0IEZsLiwgTm8uIDEwMywgU2VjIDIsIEppdXpvbmcgUmQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTBGICAgKGhleCkJCUFkdmFuc3VzIENvcnAuCi0wMDE5MEYgICAgIChiYXNlIDE2KQkJQWR2YW5zdXMgQ29ycC4KLQkJCQlOby41IFNoaW5nIFllaCBTdHJlZXQsIEt3ZWkgSHNpYW5nCi0JCQkJVGFveXVhbiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS0xMCAgIChoZXgpCQlLbmljayBFbGVrdHJvbmlzY2hlIE1lc3NnZXJhZXRlIEdtYkggJiBDby4gS0cKLTAwMTkxMCAgICAgKGJhc2UgMTYpCQlLbmljayBFbGVrdHJvbmlzY2hlIE1lc3NnZXJhZXRlIEdtYkggJiBDby4gS0cKLQkJCQlCZXVja2VzdHIuIDIyCi0JCQkJQmVybGluICAxNDE2MwotCQkJCUdFUk1BTlkKLQotMDAtMTktMTEgICAoaGV4KQkJSnVzdCBJbiBNb2JpbGUgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0wMDE5MTEgICAgIChiYXNlIDE2KQkJSnVzdCBJbiBNb2JpbGUgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0JCQkJNXRoIEZsb29yLCAybmQgQXJlYSwgSGFpd2FuZ3hpbmcgQnVpbGRpbmcsIDYyIFhpbmdndWFuZyBBdmUuLCBOLkhpZ2gtVGVjaCBQYXJrCi0JCQkJQ2hvbmdxaW5nICA0MDExMjEKLQkJCQlDSElOQQotCi0wMC0xOS0xMiAgIChoZXgpCQlXZWxjYXQgSW5jCi0wMDE5MTIgICAgIChiYXNlIDE2KQkJV2VsY2F0IEluYwotCQkJCUVhc3QgVG93ZXIgNkYsIFNoaW5hZ2F3YSBTZWFzaWRlLCA0LTEyLTgsIEhpZ2FzaGkgU2hpbmFnYXdhLCBTaGluYWdhd2EgU2VjdGlvbgotCQkJCVRva3lvICAxNDAtMDAwMgotCQkJCUpBUEFOCi0KLTAwLTE5LTEzICAgKGhleCkJCUNodWFuZy1ZaSBOZXR3b3JrIEVxdWlwbWVudCBDby5MdGQuCi0wMDE5MTMgICAgIChiYXNlIDE2KQkJQ2h1YW5nLVlpIE5ldHdvcmsgRXF1aXBtZW50IENvLkx0ZC4KLQkJCQkyMzggVGlhbk11U2hhbiBSZC4sIFdlc3QgTGFrZSBkaXN0cmljdAotCQkJCUhhbmdaaG91IFpoZUppYW5nIDMxMDAwMAotCQkJCUNISU5BCi0KLTAwLTE5LTE0ICAgKGhleCkJCVdpbml4IENvLiwgTHRkCi0wMDE5MTQgICAgIChiYXNlIDE2KQkJV2luaXggQ28uLCBMdGQKLQkJCQkzNjMgQW5nYWRlIEJsZGcuLCBZYW5namFlLWRvbmcKLQkJCQlTZW9jaG8tZ3UKLQkJCQlTZW91bCAgMTM3LTg5OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0xNSAgIChoZXgpCQlURUNPTSBDby4sIEx0ZC4KLTAwMTkxNSAgICAgKGJhc2UgMTYpCQlURUNPTSBDby4sIEx0ZC4KLQkJCQkyMyBSJkQgUm9hZCAyIFNjaWVuY2UgQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktMTYgICAoaGV4KQkJUGF5VGVjIEFHCi0wMDE5MTYgICAgIChiYXNlIDE2KQkJUGF5VGVjIEFHCi0JCQkJUm9zZW5nYXJ0ZW5zdHJhc3NlIDMKLQkJCQlab2xsaWtlcmJlcmcgWkggODEyNQotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE5LTE3ICAgKGhleCkJCVBvc2lmbGV4IEluYy4KLTAwMTkxNyAgICAgKGJhc2UgMTYpCQlQb3NpZmxleCBJbmMuCi0JCQkJNiwgV3UtQ2h1YW4gUm9hZAotCQkJCVd1IEt1Ci0JCQkJVGFpcGVpIEhzaWVuICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTE4ICAgKGhleCkJCUludGVyYWN0aXZlIFdlYXIgQUcKLTAwMTkxOCAgICAgKGJhc2UgMTYpCQlJbnRlcmFjdGl2ZSBXZWFyIEFHCi0JCQkJUGV0ZXJzYnJ1bm5lciBTdHIuIDMKLQkJCQlTdGFybmJlcmcgQmF2YXJpYSA4MjMxOQotCQkJCUdFUk1BTlkKLQotMDAtMTktMTkgICAoaGV4KQkJQVNURUwgSW5jLgotMDAxOTE5ICAgICAoYmFzZSAxNikJCUFTVEVMIEluYy4KLQkJCQk1OS03IEphbmctZG9uZyBZdXN1bmctR3UKLQkJCQlEYWVqZW9uIENodW5nbmFtIDMwNS0zNDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktMUEgICAoaGV4KQkJSVJMSU5LCi0wMDE5MUEgICAgIChiYXNlIDE2KQkJSVJMSU5LCi0JCQkJSGFuWW91bmcgQi9EIDZGLCA0LTYKLQkJCQlNdW5qZW9uZy1kb25nLCBTb25wYS1rdQotCQkJCVNFT1VMICAxMzgtODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTFCICAgKGhleCkJCVNwdXRuaWsgRW5naW5lZXJpbmcgQUcKLTAwMTkxQiAgICAgKGJhc2UgMTYpCQlTcHV0bmlrIEVuZ2luZWVyaW5nIEFHCi0JCQkJSMO2aGV3ZWcgODUKLQkJCQlCaWVsLUJpZW5uZSBCRSAgMjUwMgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTE5LTFDICAgKGhleCkJCVNlbnNpY2FzdCBTeXN0ZW1zCi0wMDE5MUMgICAgIChiYXNlIDE2KQkJU2Vuc2ljYXN0IFN5c3RlbXMKLQkJCQkyMDAgUmVzZXJ2b2lyIFN0Ci0JCQkJU3VpdGUgMTAwCi0JCQkJTmVlZGhhbSBNQSAwMjQ5NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMUQgICAoaGV4KQkJTmludGVuZG8gQ28uLEx0ZC4KLTAwMTkxRCAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTE5LTFFICAgKGhleCkJCUJleW9uZHdpeiBDby4sIEx0ZC4KLTAwMTkxRSAgICAgKGJhc2UgMTYpCQlCZXlvbmR3aXogQ28uLCBMdGQuCi0JCQkJM0YsIERhZWNoYW5nIEJsZGcuLAotCQkJCTgtMiwgU29vbmFlLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTdW5nbmFtIEt5dW5na2ktZG8gNDYzLTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0xRiAgIChoZXgpCQlNaWNyb2xpbmsgY29tbXVuaWNhdGlvbnMgSW5jLgotMDAxOTFGICAgICAoYmFzZSAxNikJCU1pY3JvbGluayBjb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJOEYgLCAzMSAsIEhzaW50YWkgUm9hZCAsIENodXBlaSBDaXR5ICwgSHNpbmNodQotCQkJCUNodXBlaSBUYWl3YW4gMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS0yMCAgIChoZXgpCQlLVU1FIGVsZWN0cmljIENvLixMdGQuCi0wMDE5MjAgICAgIChiYXNlIDE2KQkJS1VNRSBlbGVjdHJpYyBDby4sTHRkLgotCQkJCTQtMi0yNCBLaXRha2F3YXJhCi0JCQkJSXRhbWktY2l0eSBIeW91Z28gCi0JCQkJSkFQQU4KLQotMDAtMTktMjEgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uCi0wMDE5MjEgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW0gQ28uCi0JCQkJTm8uMjIsQWxsZXkgMzgsTGFuZSA5MSwgU2VjLiAxLE5laSBIdSBSb2FkLgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS0yMiAgIChoZXgpCQlDTSBDb21hbmRvcyBMaW5lYXJlcwotMDAxOTIyICAgICAoYmFzZSAxNikJCUNNIENvbWFuZG9zIExpbmVhcmVzCi0JCQkJQXYgRW5nIEFsYmVydG8gZGUgWmFnb3R0aXMsIDc2MAotCQkJCUp1cnViYXR1YmEKLQkJCQlTYW8gUGF1bG8gU1AgMDQ2NzUtMDg1Ci0JCQkJQlJBWklMCi0KLTAwLTE5LTIzICAgKGhleCkJCVBob25leCBLb3JlYSBDby4sIExURC4KLTAwMTkyMyAgICAgKGJhc2UgMTYpCQlQaG9uZXggS29yZWEgQ28uLCBMVEQuCi0JCQkJMzMtMywgR2VveWVvLURvbmcKLQkJCQlTZW91bCBTb25ncGEtR3UgMTM4LTgxNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0yNCAgIChoZXgpCQlMQk5MICBFbmdpbmVlcmluZwotMDAxOTI0ICAgICAoYmFzZSAxNikJCUxCTkwgIEVuZ2luZWVyaW5nCi0JCQkJMSBDeWNsb3Ryb24gUmQuCi0JCQkJTVM0NlIwMTI1Ci0JCQkJQmVya2VsZXkgQ0EgOTQ3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTI1ICAgKGhleCkJCUludGVsaWNpcyBDb3Jwb3JhdGlvbgotMDAxOTI1ICAgICAoYmFzZSAxNikJCUludGVsaWNpcyBDb3Jwb3JhdGlvbgotCQkJCTQ2MzMgT2xkIElyb25zaWRlcyBEcml2ZSwgU3VpdGUgMTUwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTI2ICAgKGhleCkJCUJpdHNHZW4gQ28uLCBMdGQuCi0wMDE5MjYgICAgIChiYXNlIDE2KQkJQml0c0dlbiBDby4sIEx0ZC4KLQkJCQkjNTAyLCBPd25lcidzIFRvd2VyLCAjMTYtNSwgU3VuZWEtZG9uZwotCQkJCUJ1bmRhbmctZ3UgU2VvbmduYW0tc2kgNDYzLTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0yNyAgIChoZXgpCQlJbUNvU3lzIEx0ZAotMDAxOTI3ICAgICAoYmFzZSAxNikJCUltQ29TeXMgTHRkCi0JCQkJQnVuZGVzc3RyYXNzZSA1Ci0JCQkJWnVnIFpHIDYzMDAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xOS0yOCAgIChoZXgpCQlTaWVtZW5zIEFHLCBUcmFuc3BvcnRhdGlvbiBTeXN0ZW1zCi0wMDE5MjggICAgIChiYXNlIDE2KQkJU2llbWVucyBBRywgVHJhbnNwb3J0YXRpb24gU3lzdGVtcwotCQkJCVdlcm5lci12b24tU2llbWVucy1TdHJhw4PFuGUgNjcKLQkJCQlFcmxhbmdlbiAgOTEwNTIKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTI5ICAgKGhleCkJCTJNMkIgTW9udGFkb3JhIGRlIE1hcXVpbmFzIEJhaGlhIEJyYXNpbCBMVERBCi0wMDE5MjkgICAgIChiYXNlIDE2KQkJMk0yQiBNb250YWRvcmEgZGUgTWFxdWluYXMgQmFoaWEgQnJhc2lsIExUREEKLQkJCQlSdWEgRGphbG1hIGR1dHJhLCA2NjgsIFNldGUgUG9ydGFzCi0JCQkJU2FsdmFkb3IgQmFoaWEgNDAyNDAwODAKLQkJCQlCUkFaSUwKLQotMDAtMTktMkEgICAoaGV4KQkJQW50aW9wZSBBc3NvY2lhdGVzCi0wMDE5MkEgICAgIChiYXNlIDE2KQkJQW50aW9wZSBBc3NvY2lhdGVzCi0JCQkJMTggQ2xheSBTdHJlZXQKLQkJCQlGYWlyIEhhdmVuIE5ldyBKZXJzZXkgMDc3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTJCICAgKGhleCkJCUFjbGFyYSBSRiBTeXN0ZW1zIEluYy4KLTAwMTkyQiAgICAgKGJhc2UgMTYpCQlBY2xhcmEgUkYgU3lzdGVtcyBJbmMuCi0JCQkJMzA0MDAgU29sb24gUm9hZAotCQkJCVNvbG9uIE9IIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0yQyAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMTkyQyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0yRCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotMDAxOTJEICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJUmVuc2luZ3N0ci4gMTUKLQkJCQlCb2NodW0gTlJXIDQ0ODA3Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS0yRSAgIChoZXgpCQlTcGVjdHJhbCBJbnN0cnVtZW50cywgSW5jLgotMDAxOTJFICAgICAoYmFzZSAxNikJCVNwZWN0cmFsIEluc3RydW1lbnRzLCBJbmMuCi0JCQkJNDIwIE4gQm9uaXRhIEF2ZQotCQkJCVR1Y3NvbiBBWiA4NTc0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMkYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxOTJGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMzAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxOTMwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktMzEgICAoaGV4KQkJQmFsbHVmZiBHbWJICi0wMDE5MzEgICAgIChiYXNlIDE2KQkJQmFsbHVmZiBHbWJICi0JCQkJU2NodXJ3YWxkc3RyLiA5Ci0JCQkJTmV1aGF1c2VuIEJXIDczNzY1Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS0zMiAgIChoZXgpCQlHdWRlIEFuYWxvZy0gdW5kIERpZ2lhbHN5c3RlbWUgR21iSAotMDAxOTMyICAgICAoYmFzZSAxNikJCUd1ZGUgQW5hbG9nLSB1bmQgRGlnaWFsc3lzdGVtZSBHbWJICi0JCQkJRWludHJhY2hzdHJhc3NlIDExMwotCQkJCUNvbG9nbmUgTlJXIDUwNjY4Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS0zMyAgIChoZXgpCQlTdHJpeCBTeXN0ZW1zLCBJbmMuCi0wMDE5MzMgICAgIChiYXNlIDE2KQkJU3RyaXggU3lzdGVtcywgSW5jLgotCQkJCTI2NjEwIEFnb3VyYSBSb2FkCi0JCQkJQ2FsYWJhc2FzIENBIDkxMzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0zNCAgIChoZXgpCQlUUkVORE9OIFRPVUNIIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMTkzNCAgICAgKGJhc2UgMTYpCQlUUkVORE9OIFRPVUNIIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkyRiBOby41LCBBbGxleSAyMiwgTGFuZSA1MTMsIFJ1ZWlndWFuZyBSZC4sIE5laWh1Ci0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktMzUgICAoaGV4KQkJRHVlcnIgRGVudGFsIEdtYkggJiBDby4gS0cKLTAwMTkzNSAgICAgKGJhc2UgMTYpCQlEdWVyciBEZW50YWwgR21iSCAmIENvLiBLRwotCQkJCUhvZXBmaWdoZWltZXIgU3RyYXNzZSAxNwotCQkJCUJpZXRpZ2hlaW0tQmlzc2luZ2VuIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3NDMyMQotCQkJCUdFUk1BTlkKLQotMDAtMTktMzYgICAoaGV4KQkJU1RFUkxJVEUgT1BUSUNBTCBURUNITk9MT0dJRVMgTElNSVRFRAotMDAxOTM2ICAgICAoYmFzZSAxNikJCVNURVJMSVRFIE9QVElDQUwgVEVDSE5PTE9HSUVTIExJTUlURUQKLQkJCQlFLTEsRS0yLCZFLTMKLQkJCQlNSURDICwgV0FMVUoKLQkJCQlBVVJBTkdBQkFEIE1BSEFSQVNUUkEgNDMxMTM2Ci0JCQkJSU5ESUEKLQotMDAtMTktMzcgICAoaGV4KQkJQ29tbWVyY2VHdWFyZCBBQgotMDAxOTM3ICAgICAoYmFzZSAxNikJCUNvbW1lcmNlR3VhcmQgQUIKLQkJCQlHdXN0YXZzbHVuZHN2IDE1MUEKLQkJCQlCUk9NTUEgIDE2NzE0Ci0JCQkJU1dFREVOCi0KLTAwLTE5LTM4ICAgKGhleCkJCVVNQiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMTkzOCAgICAgKGJhc2UgMTYpCQlVTUIgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJMTAxMCwgNSwgQUNFIFRlY2hubyBUb3dlciwgMTk3LTIyLCBHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUxLTc2NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS0zOSAgIChoZXgpCQlHaWdhbWlwcwotMDAxOTM5ICAgICAoYmFzZSAxNikJCUdpZ2FtaXBzCi0JCQkJNXRoIEZsb29yLCBZYW5namFlIEJ1aWxkaW5nLCAyNjEsIFlhbmdqYWUtRG9uZwotCQkJCVNlb2Noby1HdSBTZW91bCAxMzctMTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTNBICAgKGhleCkJCU9FU09MVVRJT05TCi0wMDE5M0EgICAgIChiYXNlIDE2KQkJT0VTT0xVVElPTlMKLQkJCQlUZWNobm9wYXJrLCA5NTgtMyBEYWVjaG9uLURvbmcsIEJ1ay1HdQotCQkJCUd3YW5nanUgQnVrLUd1IDUwMC03MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktM0IgICAoaGV4KQkJV2lsaWJveCBEZWxpYmVyYW50IEdyb3VwIExMQwotMDAxOTNCICAgICAoYmFzZSAxNikJCVdpbGlib3ggRGVsaWJlcmFudCBHcm91cCBMTEMKLQkJCQkxNDQwIER1dGNoIFZhbGxleSBQbGFjZQotCQkJCVN1aXRlIDExNTUKLQkJCQlBdGxhbnRhIEdBIDMwMzI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0zQyAgIChoZXgpCQlIaWdoUG9pbnQgVGVjaG5vbG9naWVzIEluY29ycG9yYXRlZAotMDAxOTNDICAgICAoYmFzZSAxNikJCUhpZ2hQb2ludCBUZWNobm9sb2dpZXMgSW5jb3Jwb3JhdGVkCi0JCQkJMTE2MSBDYWRpbGxhYyBDb3VydAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS0zRCAgIChoZXgpCQlHTUMgR3VhcmRpYW4gTW9iaWxpdHkgQ29ycC4KLTAwMTkzRCAgICAgKGJhc2UgMTYpCQlHTUMgR3VhcmRpYW4gTW9iaWxpdHkgQ29ycC4KLQkJCQlTdWl0ZSAyMDAKLQkJCQk0MyBBdXJpZ2EgRHIuCi0JCQkJT3R0YXdhIE9OIEsyRSA3WTgKLQkJCQlDQU5BREEKLQotMDAtMTktM0UgICAoaGV4KQkJQURCIEJyb2FkYmFuZCBJdGFsaWEKLTAwMTkzRSAgICAgKGJhc2UgMTYpCQlBREIgQnJvYWRiYW5kIEl0YWxpYQotCQkJCVZJQUxFIFNBUkNBIDIyMgotCQkJCU1JTEFOTyAgMjAxMjYKLQkJCQlJVEFMWQotCi0wMC0xOS0zRiAgIChoZXgpCQlSREkgdGVjaG5vbG9neShTaGVuemhlbikgQ28uLExURAotMDAxOTNGICAgICAoYmFzZSAxNikJCVJESSB0ZWNobm9sb2d5KFNoZW56aGVuKSBDby4sTFRECi0JCQkJQnVpbGRpbmcgQzEmQzIsICBYaW4gVGFuZyBJbmR1c3RyaWFsIFpvbmUsRWFzdCBCYWlTaGlYaWEgVmlsbGFnZSwgRnV5b25nIFRvd24sIEJhb2FuIERpc3RyaWN0Ci0JCQkJU0hFTlpIRU4gR1VBTkdET05HIHByb3ZpbmNlIDUxODEwMwotCQkJCUNISU5BCi0KLTAwLTE5LTQwICAgKGhleCkJCVJhY2thYmxlIFN5c3RlbXMKLTAwMTk0MCAgICAgKGJhc2UgMTYpCQlSYWNrYWJsZSBTeXN0ZW1zCi0JCQkJMTkzMyBNaWxtb250IERyaXZlCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTQxICAgKGhleCkJCVBpdG5leSBCb3dlcywgSW5jCi0wMDE5NDEgICAgIChiYXNlIDE2KQkJUGl0bmV5IEJvd2VzLCBJbmMKLQkJCQkzNSBXYXRlcnZpZXcgRHJpdmUKLQkJCQlNU0MgMjYtMjEKLQkJCQlTaGVsdG9uIENUIDA2NDg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS00MiAgIChoZXgpCQlPTiBTT0ZUV0FSRSBJTlRFUk5BVElPTkFMIExJTUlURUQKLTAwMTk0MiAgICAgKGJhc2UgMTYpCQlPTiBTT0ZUV0FSRSBJTlRFUk5BVElPTkFMIExJTUlURUQKLQkJCQk5RiwgTk8uIDE3LCBTRUMuIDEsIENIRU5HLVRFIFJELgotCQkJCVRBSVBFSSAgMTAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS00MyAgIChoZXgpCQlCZWxkZW4KLTAwMTk0MyAgICAgKGJhc2UgMTYpCQlCZWxkZW4KLQkJCQk3OTMgRm9ydCBNaWxsIEhpZ2h3YXkKLQkJCQlGb3J0IE1pbGwgU291dGggQ2Fyb2xpbmEgMjk3MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTQ0ICAgKGhleCkJCUZvc3NpbCBQYXJ0bmVycywgTC5QLgotMDAxOTQ0ICAgICAoYmFzZSAxNikJCUZvc3NpbCBQYXJ0bmVycywgTC5QLgotCQkJCTIyODAgTi4gR3JlZW52aWxsZSBBdmUuCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNDUgICAoaGV4KQkJVGVuLVRlYyBJbmMuCi0wMDE5NDUgICAgIChiYXNlIDE2KQkJVGVuLVRlYyBJbmMuCi0JCQkJMTE4NSBEb2xseSBQYXJ0b24gUGt3eQotCQkJCVNldmllcnZpbGxlIFROIDM3ODYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS00NiAgIChoZXgpCQlDaWFuZXQgSW5kdXN0cmlhIGUgQ29tZXJjaW8gUy9BCi0wMDE5NDYgICAgIChiYXNlIDE2KQkJQ2lhbmV0IEluZHVzdHJpYSBlIENvbWVyY2lvIFMvQQotCQkJCXJvZCBTQzQwMSwga20wMSBUZWNub3BvbGlzL0FsZmFtYSA0by4gQW5kYXIKLQkJCQlGbG9yaWFub3BvbGlzIFNhbnRhIENhdGFyaW5hIDg4MDMwLTkwMgotCQkJCUJSQVpJTAotCi0wMC0xOS00NyAgIChoZXgpCQlTY2llbnRpZmljIEF0bGFudGEsIEEgQ2lzY28gQ29tcGFueQotMDAxOTQ3ICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgQXRsYW50YSwgQSBDaXNjbyBDb21wYW55Ci0JCQkJNTAzMCBTdWdhcmxvYWYgUGFya3dheQotCQkJCUFUTCAxLjMuNDczCi0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNDggICAoaGV4KQkJQWlyZVNwaWRlciBOZXR3b3JrcwotMDAxOTQ4ICAgICAoYmFzZSAxNikJCUFpcmVTcGlkZXIgTmV0d29ya3MKLQkJCQkxMTcxIE1vbnRhZ3VlIEV4cHJlc3MgV2F5Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTQ5ICAgKGhleCkJCVRFTlRFTCAgQ09NVEVDSCBDTy4sIExURC4KLTAwMTk0OSAgICAgKGJhc2UgMTYpCQlURU5URUwgIENPTVRFQ0ggQ08uLCBMVEQuCi0JCQkJMy9GLiwgTk8uIDQyLCBMQU5FIDgwLCBTRUMuIDMsIE5BTi1LQU5HIFJELiwKLQkJCQlUQUlQRUkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktNEEgICAoaGV4KQkJVEVTVE8gQUcKLTAwMTk0QSAgICAgKGJhc2UgMTYpCQlURVNUTyBBRwotCQkJCVRlc3RvIFN0cmFzc2UgMQotCQkJCUxlbnpraXJjaCBCYWRlbi1Xw7xydGVtYmVyZyA3OTg1MwotCQkJCUdFUk1BTlkKLQotMDAtMTktNEIgICAoaGV4KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotMDAxOTRCICAgICAoYmFzZSAxNikJCVNBR0VNIENPTU1VTklDQVRJT04KLQkJCQkyNyBSVUUgTEVCTEFOQwotCQkJCVBBUklTICA3NTUxMgotCQkJCUZSQU5DRQotCi0wMC0xOS00QyAgIChoZXgpCQlGdWppYW4gU3RlbGNvbSBpbmZvcm1hdGlvbiAmIFRlY2hub2xvZ3kgQ08uLEx0ZAotMDAxOTRDICAgICAoYmFzZSAxNikJCUZ1amlhbiBTdGVsY29tIGluZm9ybWF0aW9uICYgVGVjaG5vbG9neSBDTy4sTHRkCi0JCQkJNEYsQnVpbGRpbmcgQSxTdGFydCBTY2llbmNlIFBhcmssIE5vLjY4LEhvbmdzaGFueXVhbiBSZAotCQkJCUZ1emhvdSBGdWppYW4gMzUwMDAyCi0JCQkJQ0hJTkEKLQotMDAtMTktNEQgICAoaGV4KQkJQXZhZ28gVGVjaG5vbG9naWVzIFNkbiBCaGQKLTAwMTk0RCAgICAgKGJhc2UgMTYpCQlBdmFnbyBUZWNobm9sb2dpZXMgU2RuIEJoZAotCQkJCUJheWFuIExlcGFzIEZyZWUgSW5kdXN0cmlhbCBab25lCi0JCQkJQmF5YW4gTGVwYXMgUGVuYW5nIDExOTAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTktNEUgICAoaGV4KQkJVWx0cmEgRWxlY3Ryb25pY3MgLSBUQ1MgKFRhY3RpY2FsIENvbW11bmljYXRpb24gU3lzdGVtcykKLTAwMTk0RSAgICAgKGJhc2UgMTYpCQlVbHRyYSBFbGVjdHJvbmljcyAtIFRDUyAoVGFjdGljYWwgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zKQotCQkJCTU5OTAgQ290ZSBEZSBMaWVzc2UKLQkJCQlUTVIgUXVlYmVjIEg0VCAxVjcKLQkJCQlDQU5BREEKLQotMDAtMTktNEYgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTk0RiAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTktNTAgICAoaGV4KQkJSGFybWFuIE11bHRpbWVkaWEKLTAwMTk1MCAgICAgKGJhc2UgMTYpCQlIYXJtYW4gTXVsdGltZWRpYQotCQkJCTg0MDAgQmFsYm9hIEJsdmQuCi0JCQkJTm9ydGhyaWRnZSBDQSA5MTMyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNTEgICAoaGV4KQkJTkVUQ09OUywgcy5yLm8uCi0wMDE5NTEgICAgIChiYXNlIDE2KQkJTkVUQ09OUywgcy5yLm8uCi0JCQkJU3RhcmEgVmFqbm9yc2thIDM3Ci0JCQkJQnJhdGlzbGF2YSBTbG92YWtpYSA4MzEgMDQKLQkJCQlTTE9WQUtJQQotCi0wMC0xOS01MiAgIChoZXgpCQlBQ09HSVRPIENvLiwgTHRkCi0wMDE5NTIgICAgIChiYXNlIDE2KQkJQUNPR0lUTyBDby4sIEx0ZAotCQkJCSM1MDEgU2hpbnlvdW5nIFBhbGFjZSBUb3dlciwgMjQ2LTIsIFNlb2h5dW4KLQkJCQlTdW5nbmFtIEt5dW5nZ2kgNDYzLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS01MyAgIChoZXgpCQlDaGFpbmxlYWRlciBDb21tdW5pY2F0aW9ucyBDb3JwLgotMDAxOTUzICAgICAoYmFzZSAxNikJCUNoYWlubGVhZGVyIENvbW11bmljYXRpb25zIENvcnAuCi0JCQkJNUYsIE5vLiA0MDAsIFNlYy4gMiBCYWRlIFJkLiwKLQkJCQlUYWlwZWkgIDEwNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktNTQgICAoaGV4KQkJTGVhZiBDb3Jwb3JhdGlvbi4KLTAwMTk1NCAgICAgKGJhc2UgMTYpCQlMZWFmIENvcnBvcmF0aW9uLgotCQkJCUFtdXplIDFGCi0JCQkJSGlnYXNoaSBOYXJ1c2UgMzUtMTAKLQkJCQlJc2VoYXJhIENpdHkgS2FuYWdhd2EtUHJlZi4gMjU5LTExMTcKLQkJCQlKQVBBTgotCi0wMC0xOS01NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5NTUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS01NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDE5NTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS01NyAgIChoZXgpCQlTYWFmbmV0IENhbmFkYSBJbmMuCi0wMDE5NTcgICAgIChiYXNlIDE2KQkJU2FhZm5ldCBDYW5hZGEgSW5jLgotCQkJCTEwNy0xMDg5IEVhc3QgS2VudCBBdmUgKE4pCi0JCQkJVmFuY291dmVyIEJDIFY1WCA0VjkKLQkJCQlDQU5BREEKLQotMDAtMTktNTggICAoaGV4KQkJQmx1ZXRvb3RoIFNJRywgSW5jLgotMDAxOTU4ICAgICAoYmFzZSAxNikJCUJsdWV0b290aCBTSUcsIEluYy4KLQkJCQk1MDAgMTA4dGggQXZlbnVlIE5FCi0JCQkJU3VpdGUgMjUwCi0JCQkJQmVsbGV2dWUgV0EgOTgwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTU5ICAgKGhleCkJCVN0YWNjYXRvIENvbW11bmljYXRpb25zIEluYy4KLTAwMTk1OSAgICAgKGJhc2UgMTYpCQlTdGFjY2F0byBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJNjE5NSBMdXNrIEJsdmQuCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS01QSAgIChoZXgpCQlKZW5hZXIgQW50cmllYnN0ZWNobmlrIEdtYkgKLTAwMTk1QSAgICAgKGJhc2UgMTYpCQlKZW5hZXIgQW50cmllYnN0ZWNobmlrIEdtYkgKLQkJCQlCdWNoYWVyIFN0cmFzc2UgMQotCQkJCUplbmEgVGh1ZXJpbmdlbiAwNzc0NQotCQkJCUdFUk1BTlkKLQotMDAtMTktNUIgICAoaGV4KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0wMDE5NUIgICAgIChiYXNlIDE2KQkJRC1MaW5rIENvcnBvcmF0aW9uCi0JCQkJTk8uMjg5LCBTaW5odSAzcmQgUmQuLAotCQkJCU5laWh1IERpc3RyaWN0LCBUYWlwZWkgQ2l0eSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTVDICAgKGhleCkJCUlubm90ZWNoIENvcnBvcmF0aW9uCi0wMDE5NUMgICAgIChiYXNlIDE2KQkJSW5ub3RlY2ggQ29ycG9yYXRpb24KLQkJCQkzLTE3LTYKLQkJCQlTaGluLVlva29oYW1hLCBLb2hva3Uta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjItODU4MAotCQkJCUpBUEFOCi0KLTAwLTE5LTVEICAgKGhleCkJCVNoZW5aaGVuIFhpbkh1YVRvbmcgT3B0byBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDE5NUQgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gWGluSHVhVG9uZyBPcHRvIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQk1RixCYW9kYVpob3UsU2hhbmNoZW5nIEluZHVzdHJpYWwgWm9uZSxCYW9BbiBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMDgKLQkJCQlDSElOQQotCi0wMC0xOS01RSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxOTVFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNUYgICAoaGV4KQkJVmFsZW1vdW50IE5ldHdvcmtzIENvcnBvcmF0aW9uCi0wMDE5NUYgICAgIChiYXNlIDE2KQkJVmFsZW1vdW50IE5ldHdvcmtzIENvcnBvcmF0aW9uCi0JCQkJMTIwMS0gNXRoIEF2ZQotCQkJCVBPIEJveCA2ODcKLQkJCQlWYWxlbW91bnQgQkMgVjBFMlowCi0JCQkJQ0FOQURBCi0KLTAwLTE5LTYwICAgKGhleCkJCURvQ29NbyBTeXN0ZW1zLCBJbmMuCi0wMDE5NjAgICAgIChiYXNlIDE2KQkJRG9Db01vIFN5c3RlbXMsIEluYy4KLQkJCQlNZWd1cm8gVGVjaG5vIEJsZGcuIDJuZCBGbG9vcgotCQkJCTQtMzEtMTggTmlzaGktR290YW5kYQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAzMQotCQkJCUpBUEFOCi0KLTAwLTE5LTYxICAgKGhleCkJCUJsYXVwdW5rdCAgRW1iZWRkZWQgU3lzdGVtcyBHbWJICi0wMDE5NjEgICAgIChiYXNlIDE2KQkJQmxhdXB1bmt0ICBFbWJlZGRlZCBTeXN0ZW1zIEdtYkgKLQkJCQlCYWhuaG9mc3N0cmFzc2UgMTYKLQkJCQlTY2hsaXR6ICAzNjExMAotCQkJCUdFUk1BTlkKLQotMDAtMTktNjIgICAoaGV4KQkJQ29tbWVyY2lhbnQsIExQCi0wMDE5NjIgICAgIChiYXNlIDE2KQkJQ29tbWVyY2lhbnQsIExQCi0JCQkJMjkwMSBXaWxjcmVzdAotCQkJCVN1aXRlIDI1MAotCQkJCUhvdXN0b24gVGV4YXMgNzcwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTYzICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDE5NjMgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa8OlbmUgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTAwLTE5LTY0ICAgKGhleCkJCURvb3JraW5nIEluYy4KLTAwMTk2NCAgICAgKGJhc2UgMTYpCQlEb29ya2luZyBJbmMuCi0JCQkJMTIwIEdsYXNnb3cgU3QuCi0JCQkJSW5nbGV3b29kIENBLiA5MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNjUgICAoaGV4KQkJWXVIdWEgVGVsVGVjaCAoU2hhbmdIYWkpIENvLiwgTHRkLgotMDAxOTY1ICAgICAoYmFzZSAxNikJCVl1SHVhIFRlbFRlY2ggKFNoYW5nSGFpKSBDby4sIEx0ZC4KLQkJCQlZdUh1YSBSJkQgQnVpbGRpbmcsMjcgeGluIGppbiBxaWFvIHJvYWQsCi0JCQkJUHVkb25nLAotCQkJCVNIQU5HSEFJICAyMDEyMDYKLQkJCQlDSElOQQotCi0wMC0xOS02NiAgIChoZXgpCQlBc2lhcm9jayBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMTk2NiAgICAgKGJhc2UgMTYpCQlBc2lhcm9jayBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlQLk8uIEJveDk1NywgT2Zmc2hvcmUgSW5jb3Jwb3JhdGlvbnMgQ2VudHJlCi0JCQkJUm9hZCBUb3duIFRvcnRvbGEgCi0JCQkJVklSR0lOIElTTEFORFMsIEJSSVRJU0gKLQotMDAtMTktNjcgICAoaGV4KQkJVEVMREFUIFNwLkouCi0wMDE5NjcgICAgIChiYXNlIDE2KQkJVEVMREFUIFNwLkouCi0JCQkJS2lqb3dza2EgNDQKLQkJCQlOSVAgNTU0IDE5IDI2IDA0MgotCQkJCUJ5ZGdvc3pjeiB3b2ouIGt1amF3c2tvLXBvbW9yc2tpZSA4NS03MDMKLQkJCQlQT0xBTkQKLQotMDAtMTktNjggICAoaGV4KQkJRGlnaXRhbCBWaWRlbyBOZXR3b3JrcyhTaGFuZ2hhaSkgQ08uIExURC4KLTAwMTk2OCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFZpZGVvIE5ldHdvcmtzKFNoYW5naGFpKSBDTy4gTFRELgotCQkJCTl0aCBGbG9vcixIZWNodWFuIEJ1aWxkaW5nLCBOby4xMDI2IFlpU2hhbiBSZAotCQkJCVNoYW5naGFpICAyMDExMDMKLQkJCQlDSElOQQotCi0wMC0xOS02OSAgIChoZXgpCQlOb3J0ZWwKLTAwMTk2OSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMTktNkEgICAoaGV4KQkJTWlrcm9NIEdtYkgKLTAwMTk2QSAgICAgKGJhc2UgMTYpCQlNaWtyb00gR21iSAotCQkJCURvdmVzdHIuIDEKLQkJCQlCZXJsaW4gIDEwNTg3Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS02QiAgIChoZXgpCQlEYW5wZXggQ29ycG9yYXRpb24KLTAwMTk2QiAgICAgKGJhc2UgMTYpCQlEYW5wZXggQ29ycG9yYXRpb24KLQkJCQkyMTE0IFJpbmd3b29kIEF2ZW51ZQotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTZDICAgKGhleCkJCUVUUk9WSVNJT04gVEVDSE5PTE9HWQotMDAxOTZDICAgICAoYmFzZSAxNikJCUVUUk9WSVNJT04gVEVDSE5PTE9HWQotCQkJCTJGLCAxOS01IFNhbiBDaHVuZyBSZC4sCi0JCQkJQmxvY2sgQywgTmFuIEthbmcgU29mdHdhcmUgUGFyaywgTmFuIEthbmcgRGlzdHJpY3QsCi0JCQkJVEFJUEVJICAxMTUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTZEICAgKGhleCkJCVJheWJpdCBTeXN0ZW1zIEtvcmVhLCBJbmMKLTAwMTk2RCAgICAgKGJhc2UgMTYpCQlSYXliaXQgU3lzdGVtcyBLb3JlYSwgSW5jCi0JCQkJRHJlYW0gVG93ZXIgMTIyMQotCQkJCTkyMy0xNCwgTW9rZG9uZywgWWFuZ2NodW5rdQotCQkJCVNlb3VsICAxNTgtNzE4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LTZFICAgKGhleCkJCU1ldGFjb20gKFB0eSkgTHRkLgotMDAxOTZFICAgICAoYmFzZSAxNikJCU1ldGFjb20gKFB0eSkgTHRkLgotCQkJCTYgTmRhYmVuaSBCdXNpbmVzcyBQYXJrCi0JCQkJSW55b25pIFN0ciwgTmRhYmVuaQotCQkJCUNhcGUgVG93biBXZXN0ZXJuIENhcGUgNzQwNQotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xOS02RiAgIChoZXgpCQlTZW5zb1BhcnQgR21iSAotMDAxOTZGICAgICAoYmFzZSAxNikJCVNlbnNvUGFydCBHbWJICi0JCQkJQW0gV2llZGVuYmFjaCAxCi0JCQkJV2llZGVuIEJhZGVuLVd1ZXJ0dGVtYmVyZyBELTc5Njk1Ci0JCQkJR0VSTUFOWQotCi0wMC0xOS03MCAgIChoZXgpCQlaLUNvbSwgSW5jLgotMDAxOTcwICAgICAoYmFzZSAxNikJCVotQ29tLCBJbmMuCi0JCQkJN0YtMiwgTk8uOSwgUFJPU1BFUklUWSAxU1QgUkQuCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOQ0hVICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTcxICAgKGhleCkJCUd1YW5nemhvdSBVbmljb21wIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDAxOTcxICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBVbmljb21wIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTcvRixOb3J0aCBUb3dlcixKaW5zaGFuIEJ1aWxkaW5nLk5vLjI0OAotCQkJCVJkIFd1c2hhbiwgVGlhbmhlIERpc3RyaWN0Ci0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2MzAKLQkJCQlDSElOQQotCi0wMC0xOS03MiAgIChoZXgpCQlQbGV4dXMgKFhpYW1lbikgQ28uLGx0ZAotMDAxOTcyICAgICAoYmFzZSAxNikJCVBsZXh1cyAoWGlhbWVuKSBDby4sbHRkCi0JCQkJTm8uNiBYaWFuZ3hpbmcgMiBSb2FkCi0JCQkJWGlhbmd5dSBGcmVlIFRyYWRlIFpvbmUKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLTAwLTE5LTczICAgKGhleCkJCVpldWdtYSBTeXN0ZW1zCi0wMDE5NzMgICAgIChiYXNlIDE2KQkJWmV1Z21hIFN5c3RlbXMKLQkJCQlTdWl0ZSAyNTAKLQkJCQkxMzU3MSBDb21tZXJjZSBQYXJrd2F5Ci0JCQkJUmljaG1vbmQgQkMgVjZWIDJSMgotCQkJCUNBTkFEQQotCi0wMC0xOS03NCAgIChoZXgpCQlBYm9Db20gU3lzdGVtcywgSW5jLgotMDAxOTc0ICAgICAoYmFzZSAxNikJCUFib0NvbSBTeXN0ZW1zLCBJbmMuCi0JCQkJMUYgLCBOby4gMjEsIFlhbmZhIDJuZCBSZC4sIFNCSVAKLQkJCQlIc2luY2h1IENpdHkgSHNpbmNodSAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LTc1ICAgKGhleCkJCUJlaWppbmcgSHVpc2VuIG5ldHdvcmtzIHRlY2hub2xvZ3kgSW5jCi0wMDE5NzUgICAgIChiYXNlIDE2KQkJQmVpamluZyBIdWlzZW4gbmV0d29ya3MgdGVjaG5vbG9neSBJbmMKLQkJCQlKaWEjMiBvZiBYaWxpIG9mIEJhaXl1biByb2FkLFhpY2hlbmcgZGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwNDUKLQkJCQlDSElOQQotCi0wMC0xOS03NiAgIChoZXgpCQlYaXBoZXIgVGVjaG5vbG9naWVzLCBMTEMKLTAwMTk3NiAgICAgKGJhc2UgMTYpCQlYaXBoZXIgVGVjaG5vbG9naWVzLCBMTEMKLQkJCQkxNTYgUml2ZXIgUm9hZAotCQkJCVdpbGxpbmd0b24gQ1QgMDYyNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTc3ICAgKGhleCkJCUFlcm9oaXZlIE5ldHdvcmtzLCBJbmMuCi0wMDE5NzcgICAgIChiYXNlIDE2KQkJQWVyb2hpdmUgTmV0d29ya3MsIEluYy4KLQkJCQkzMTUwLUMgQ29yb25hZG8gRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNzggICAoaGV4KQkJRGF0dW0gU3lzdGVtcywgSW5jLgotMDAxOTc4ICAgICAoYmFzZSAxNikJCURhdHVtIFN5c3RlbXMsIEluYy4KLQkJCQkzNjY2IFRpZmZhbmkgQ3QuCi0JCQkJU2FudGEgQ3J1eiBDQSA5NTA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktNzkgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTk3OSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTktN0EgICAoaGV4KQkJTUFaZVQgR21iSAotMDAxOTdBICAgICAoYmFzZSAxNikJCU1BWmVUIEdtYkgKLQkJCQlHb2VzY2h3aXR6ZXIgU3RyLiAzMgotCQkJCUplbmEgIEQtMDc3NDUKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTdCICAgKGhleCkJCVBpY290ZXN0IENvcnAuCi0wMDE5N0IgICAgIChiYXNlIDE2KQkJUGljb3Rlc3QgQ29ycC4KLQkJCQk4Ri0xLCAyODYtOSwgSHNpbi1ZYSBSZC4sIDgwNjczCi0JCQkJS2FvaHNpdW5nICA4MDY3MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktN0MgICAoaGV4KQkJUmllZGVsIENvbW11bmljYXRpb25zIEdtYkgKLTAwMTk3QyAgICAgKGJhc2UgMTYpCQlSaWVkZWwgQ29tbXVuaWNhdGlvbnMgR21iSAotCQkJCVVlbGxlbmRhaGxlciBTdHIuIDM1MwotCQkJCVd1cHBlcnRhbCBOUlcgNDIxMDkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTdEICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQKLTAwMTk3RCAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkCi0JCQkJNjYsIENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktN0UgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZAotMDAxOTdFICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQKLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS03RiAgIChoZXgpCQlQTEFOVFJPTklDUywgSU5DLgotMDAxOTdGICAgICAoYmFzZSAxNikJCVBMQU5UUk9OSUNTLCBJTkMuCi0JCQkJMzQ1IEVOQ0lOQUwgU1RSRUVUCi0JCQkJU0FOVEEgQ1JVWiBDQUxJRk9STklBIDk1MDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS04MCAgIChoZXgpCQlHcmlkcG9pbnQgU3lzdGVtcwotMDAxOTgwICAgICAoYmFzZSAxNikJCUdyaWRwb2ludCBTeXN0ZW1zCi0JCQkJNDA0MyBDYXJsaW5nIEF2ZW51ZSwgU3VpdGUgMjAwCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDJBMwotCQkJCUNBTkFEQQotCi0wMC0xOS04MSAgIChoZXgpCQlWaXZveCBJbmMKLTAwMTk4MSAgICAgKGJhc2UgMTYpCQlWaXZveCBJbmMKLQkJCQk0MCBTcGVlbiBTdHJlZXQKLQkJCQlTdWl0ZSA0MDIKLQkJCQlGcmFtaW5naGFtIE1BIDAxNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS04MiAgIChoZXgpCQlTbWFyRFRWCi0wMDE5ODIgICAgIChiYXNlIDE2KQkJU21hckRUVgotCQkJCTUzMSBBdmVudWUgZHUgU2VycG9sZXQKLQkJCQlaRSBBdGjDqWxpYSAyCi0JCQkJTGEgQ2lvdGF0IEZyYW5jZSAxMyA3MDQKLQkJCQlGUkFOQ0UKLQotMDAtMTktODMgICAoaGV4KQkJQ0NUIFImRCBMaW1pdGVkCi0wMDE5ODMgICAgIChiYXNlIDE2KQkJQ0NUIFImRCBMaW1pdGVkCi0JCQkJMTgvRiBDQ1QgVGVsZWNvbSBCdWlsZGluZwotCQkJCTExIFdvIFNoaW5nIFN0cmVldAotCQkJCUZvdGFuLCBTaGF0aW4gTi5ULiAwMDAwCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE5LTg0ICAgKGhleCkJCUVTVElDIENvcnBvcmF0aW9uCi0wMDE5ODQgICAgIChiYXNlIDE2KQkJRVNUSUMgQ29ycG9yYXRpb24KLQkJCQkyLTUtOSBIYXNoaWJhaGlnYXNoaW5vLWNobwotCQkJCU1vcmlndWNoaSBPc2FrYSA1NzAtMDAzMQotCQkJCUpBUEFOCi0KLTAwLTE5LTg1ICAgKGhleCkJCUlUIFdhdGNoZG9ncywgSW5jCi0wMDE5ODUgICAgIChiYXNlIDE2KQkJSVQgV2F0Y2hkb2dzLCBJbmMKLQkJCQkxMjg4NSBSZXNlYXJjaCwgU3VpdGUgMjEwQgotCQkJCUF1c3RpbiBUWCA3ODc1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktODYgICAoaGV4KQkJQ2hlbmcgSG9uZ2ppYW4KLTAwMTk4NiAgICAgKGJhc2UgMTYpCQlDaGVuZyBIb25namlhbgotCQkJCVJtLjIzMDVCLlNlZ2UgUGxhemEsSHVhcWlhbmcgTm9ydGggUmQuLAotCQkJCUZ1dGlhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xOS04NyAgIChoZXgpCQlQYW5hc29uaWMgTW9iaWxlIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDAxOTg3ICAgICAoYmFzZSAxNikJCVBhbmFzb25pYyBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJNjAwIFNhZWRvLWNobywgVHN1enVraS1rdSwKLQkJCQlZb2tvaGFtYSBDaXR5IEthbmFnYXdhIFByZWZlY3R1cmUgMjI0LTg1MzkKLQkJCQlKQVBBTgotCi0wMC0xOS04OCAgIChoZXgpCQlXaTJXaSwgSW5jCi0wMDE5ODggICAgIChiYXNlIDE2KQkJV2kyV2ksIEluYwotCQkJCTIxMDcgTi4gMXN0IFN0cmVldAotCQkJCVN1aXRlIDU0MAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS04OSAgIChoZXgpCQlTb25pdHJvbCBDb3Jwb3JhdGlvbgotMDAxOTg5ICAgICAoYmFzZSAxNikJCVNvbml0cm9sIENvcnBvcmF0aW9uCi0JCQkJMTcwNyBPcmxhbmRvIENlbnRyYWwgUGt3eS4KLQkJCQlTdWl0ZSA1MDAKLQkJCQlPcmxhbmRvIEZMIDMyODA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS04QSAgIChoZXgpCQlOb3J0aHJvcCBHcnVtbWFuIFN5c3RlbXMgQ29ycC4KLTAwMTk4QSAgICAgKGJhc2UgMTYpCQlOb3J0aHJvcCBHcnVtbWFuIFN5c3RlbXMgQ29ycC4KLQkJCQk3MDU1IFRyb3kgSGlsbCBEcml2ZQotCQkJCUVsa3JpZGdlIE1hcnlsYW5kIDIxMDc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS04QiAgIChoZXgpCQlOb3ZlcmEgT3B0aWNzIEtvcmVhLCBJbmMuCi0wMDE5OEIgICAgIChiYXNlIDE2KQkJTm92ZXJhIE9wdGljcyBLb3JlYSwgSW5jLgotCQkJCTQ2My0xIEplb24gTWluIERvbmcgWXVzZW9uZyBHdQotCQkJCURlYWplb24gIDMwNS04MTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktOEMgICAoaGV4KQkJaVhTZWEKLTAwMTk4QyAgICAgKGJhc2UgMTYpCQlpWFNlYQotCQkJCTU1IGF2IGF1Z3VzdGUgUmVub2lyCi0JCQkJTWFybHkgbGUgUm9pICA3ODE2MAotCQkJCUZSQU5DRQotCi0wMC0xOS04RCAgIChoZXgpCQlPY2VhbiBPcHRpY3MsIEluYy4KLTAwMTk4RCAgICAgKGJhc2UgMTYpCQlPY2VhbiBPcHRpY3MsIEluYy4KLQkJCQk4MzAgRG91Z2xhcyBBdmUKLQkJCQlEdW5lZGluIEZMIDM0Njk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS04RSAgIChoZXgpCQlPdGljb24gQS9TCi0wMDE5OEUgICAgIChiYXNlIDE2KQkJT3RpY29uIEEvUwotCQkJCUtvbmdlYmFra2VuIDkKLQkJCQlTbcO4cnVtICAyNzY1Ci0JCQkJREVOTUFSSwotCi0wMC0xOS04RiAgIChoZXgpCQlBbGNhdGVsIEJlbGwgTi5WLgotMDAxOThGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgQmVsbCBOLlYuCi0JCQkJQ29wZXJuaWN1c2xhYW4gNTAKLQkJCQlBbnR3ZXJwICBCLTIwMTgKLQkJCQlCRUxHSVVNCi0KLTAwLTE5LTkwICAgKGhleCkJCUVMTSBEQVRBIENvLiwgTHRkLgotMDAxOTkwICAgICAoYmFzZSAxNikJCUVMTSBEQVRBIENvLiwgTHRkLgotCQkJCTItMTUgVEVDSE5PLVBBUksgMS1DSE9NRQotCQkJCVNISU1PTk9QUE9STywgQVRTVUJFVFNVLUtVCi0JCQkJU0FQUE9STyBIT0tLQUlETyAwMDQtMDAxNQotCQkJCUpBUEFOCi0KLTAwLTE5LTkxICAgKGhleCkJCWF2aW5mbwotMDAxOTkxICAgICAoYmFzZSAxNikJCWF2aW5mbwotCQkJCUppYWh1aXl1YW4gNzAzLEh1YWFvIENlbnRlciwzMSMgWml6aHV5dWFuIFJvYWQsCi0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4OQotCQkJCUNISU5BCi0KLTAwLTE5LTkyICAgKGhleCkJCUFEVFJBTiBJTkMuCi0wMDE5OTIgICAgIChiYXNlIDE2KQkJQURUUkFOIElOQy4KLQkJCQk5MDEgRXhwbG9yZXIgQmx2ZC4KLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODA2LTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LTkzICAgKGhleCkJCUNoYW5nc2h1IFN3aXRjaGdlYXIgTUZHLiBDby4sTHRkLiAoRm9ybWVyIENoYW5nc2h1IFN3aXRjaGdlYQotMDAxOTkzICAgICAoYmFzZSAxNikJCUNoYW5nc2h1IFN3aXRjaGdlYXIgTUZHLiBDby4sTHRkLiAoRm9ybWVyIENoYW5nc2h1IFN3aXRjaGdlYQotCQkJCU5vLiA4IEppYW55ZSBSb2FkCi0JCQkJQ2hhbmdzaHUgSmlhbmdzdSAyMTU1MDAKLQkJCQlDSElOQQotCi0wMC0xOS05NCAgIChoZXgpCQlKb3JqaW4gVGVjaG5vbG9naWVzIEluYy4KLTAwMTk5NCAgICAgKGJhc2UgMTYpCQlKb3JqaW4gVGVjaG5vbG9naWVzIEluYy4KLQkJCQk1RiwgTm8uMjgsIExhbmUxNDEsIFNpbmctYWkgUmQuCi0JCQkJTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMTktOTUgICAoaGV4KQkJSnVyb25nIEhpLVRlY2ggKFN1emhvdSlDby5sdGQKLTAwMTk5NSAgICAgKGJhc2UgMTYpCQlKdXJvbmcgSGktVGVjaCAoU3V6aG91KUNvLmx0ZAotCQkJCTI3NSxYaW5nIExvbmcgU3RyZWV0wqPCrFN1emhvdSBJbmR1ZHRyaWFsIFBhcmsKLQkJCQlTdXpob3UgSmlhbmcgU3UgMjE1MDIxCi0JCQkJQ0hJTkEKLQotMDAtMTktOTYgICAoaGV4KQkJVHVyYm9DaGVmIFRlY2hub2xvZ2llcyBJbmMuCi0wMDE5OTYgICAgIChiYXNlIDE2KQkJVHVyYm9DaGVmIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNDI0MCBJbnRlcm5hdGlvbmFsIFBhcmt3YXkKLQkJCQlTdWl0ZSAxMDUKLQkJCQlDYXJyb2xsdG9uIFRleGFzIDc1MDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS05NyAgIChoZXgpCQlTb2Z0IERldmljZSBTZG4gQmhkCi0wMDE5OTcgICAgIChiYXNlIDE2KQkJU29mdCBEZXZpY2UgU2RuIEJoZAotCQkJCTY3LTIgSmFsYW4gMi8yN0YKLQkJCQlLTFNDIFdhbmdzYSBNYWp1Ci0JCQkJS3VhbGEgTHVtcHVyIFdQIDUzMzAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMTktOTggICAoaGV4KQkJU0FUTyBDT1JQT1JBVElPTgotMDAxOTk4ICAgICAoYmFzZSAxNikJCVNBVE8gQ09SUE9SQVRJT04KLQkJCQkxLTIwNyxPTkFSSS1DSE8sCi0JCQkJT01JWUEtS1UKLQkJCQlTQUlUQU1BLVNISSBTQUlUQU1BIDMzMC0wODUyCi0JCQkJSkFQQU4KLQotMDAtMTktOTkgICAoaGV4KQkJRnVqaXRzdSBUZWNobm9sb2d5IFNvbHV0aW9ucwotMDAxOTk5ICAgICAoYmFzZSAxNikJCUZ1aml0c3UgVGVjaG5vbG9neSBTb2x1dGlvbnMKLQkJCQlCdWVyZ2VybWVpc3Rlci1VbHJpY2gtU3RyYXNzZSAxMDAKLQkJCQlBdWdzYnVyZyAgODYxOTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTE5LTlBICAgKGhleCkJCUVETy1FVkkKLTAwMTk5QSAgICAgKGJhc2UgMTYpCQlFRE8tRVZJCi0JCQkJNzA2NSBDb2x1bWJpYSBHYXRld2F5IERyLgotCQkJCUNvbHVtYmlhIE1EIDIxMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS05QiAgIChoZXgpCQlEaXZlcnNpZmllZCBUZWNobmljYWwgU3lzdGVtcywgSW5jLgotMDAxOTlCICAgICAoYmFzZSAxNikJCURpdmVyc2lmaWVkIFRlY2huaWNhbCBTeXN0ZW1zLCBJbmMuCi0JCQkJOTA5IEVsZWN0cmljIEF2ZW51ZQotCQkJCVN1aXRlIDIwNgotCQkJCVNlYWwgQmVhY2ggQ2FsaWZvcm5pYSA5MDc0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktOUMgICAoaGV4KQkJQ1RSSU5HCi0wMDE5OUMgICAgIChiYXNlIDE2KQkJQ1RSSU5HCi0JCQkJIzUxNCwgV29ybGQgTWVyaWRpYW4gVmVudHVyZSBDZW50ZXIgSUkKLQkJCQlHYXNuYS1kb25nCi0JCQkJS2V1bWNoZW9uLWd1IFNlb3VsIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktOUQgICAoaGV4KQkJVklaSU8sIEluYy4KLTAwMTk5RCAgICAgKGJhc2UgMTYpCQlWSVpJTywgSW5jLgotCQkJCTM5IFRlc2xhCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS05RSAgIChoZXgpCQlTSE9XQURFTlNISSBFTEVDVFJPTklDUyxJTkMuCi0wMDE5OUUgICAgIChiYXNlIDE2KQkJU0hPV0FERU5TSEkgRUxFQ1RST05JQ1MsSU5DLgotCQkJCTE5NzggSElST09LQS1OT01VUkEKLQkJCQlTSElPSklSSS1DSVRZIE5BR0FOTy1QUkVGLiAzOTktMDcwMgotCQkJCUpBUEFOCi0KLTAwLTE5LTlGICAgKGhleCkJCURLVCBBL1MKLTAwMTk5RiAgICAgKGJhc2UgMTYpCQlES1QgQS9TCi0JCQkJRmFub2V2ZWogNgotCQkJCUtyLiBTYWFieSAgREstNDA2MAotCQkJCURFTk1BUksKLQotMDAtMTktQTAgICAoaGV4KQkJTklIT04gREFUQSBTWVNURU5TLCBJTkMuCi0wMDE5QTAgICAgIChiYXNlIDE2KQkJTklIT04gREFUQSBTWVNURU5TLCBJTkMuCi0JCQkJNi05LCBLb3lvLWNobyBuYWthCi0JCQkJSGlnYXNoaW5hZGEta3UKLQkJCQlLb2JlLXNoaSBIeW9nbyA2NTgtMDAzMgotCQkJCUpBUEFOCi0KLTAwLTE5LUExICAgKGhleCkJCUxHIElORk9STUFUSU9OICYgQ09NTS4KLTAwMTlBMSAgICAgKGJhc2UgMTYpCQlMRyBJTkZPUk1BVElPTiAmIENPTU0uCi0JCQkJNjAtMzksS2FzYW4tZG9uZyxLdW1jaG9uLWt1Ci0JCQkJU2VvdWwgIDE1My0wMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktQTIgICAoaGV4KQkJT1JEWU4gVEVDSE5PTE9HSUVTCi0wMDE5QTIgICAgIChiYXNlIDE2KQkJT1JEWU4gVEVDSE5PTE9HSUVTCi0JCQkJT3pvbmUgTWFuYXkgVGVjaCBQYXJrLCAKLQkJCQkybmQgRmxvb3IsIFRvd2VyIEIsIEJlZ3VyIEhvYmxpLCBIb25nYXNhbmRyYSwgSG9zdXIgUm9hZCwgCi0JCQkJQmFuZ2Fsb3JlICAgNTYwIDA2OAotCQkJCUlORElBCi0KLTAwLTE5LUEzICAgKGhleCkJCWFzdGVlbCBlbGVjdHJvbmlxdWUgYXRsYW50aXF1ZQotMDAxOUEzICAgICAoYmFzZSAxNikJCWFzdGVlbCBlbGVjdHJvbmlxdWUgYXRsYW50aXF1ZQotCQkJCXphIGRlIGxhIGxhbmRlIGRlIHNhaW50IGplYW4KLQkJCQlicCA5MDExMQotCQkJCXNhaW50ZSBtYXJpZSBkZSByZWRvbiAgMzU2MDAKLQkJCQlGUkFOQ0UKLQotMDAtMTktQTQgICAoaGV4KQkJQXVzdGFyIFRlY2hub2xvZ3kgKGhhbmcgemhvdSkgQ28uLEx0ZAotMDAxOUE0ICAgICAoYmFzZSAxNikJCUF1c3RhciBUZWNobm9sb2d5IChoYW5nIHpob3UpIENvLixMdGQKLQkJCQk3LTQwMixXZXN0IExha2UgU29mdHdhcmUgUGFydAotCQkJCU5vIDEsSmlhZ29uZyBSZC4KLQkJCQlIYW5nIFpob3UgWmhlIEppYW5nIDMxMDAxMgotCQkJCUNISU5BCi0KLTAwLTE5LUE1ICAgKGhleCkJCVJhZGFyRmluZCBDb3Jwb3JhdGlvbgotMDAxOUE1ICAgICAoYmFzZSAxNikJCVJhZGFyRmluZCBDb3Jwb3JhdGlvbgotCQkJCTIxMDAgR2F0ZXdheSBDZW50cmUgQmx2ZC4sIFN1aXRlIDE1MAotCQkJCU1vcnJpc3ZpbGxlIE5DIDI3NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1BNiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMTlBNiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1BNyAgIChoZXgpCQlJVFUtVAotMDAxOUE3ICAgICAoYmFzZSAxNikJCUlUVS1UCi0JCQkJUGxhY2UgZGVzIE5hdGlvbnMKLQkJCQlHZW5ldmEgMjAgIENILTEyMTEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xOS1BOCAgIChoZXgpCQlXaVF1ZXN0IENvbW11bmljYXRpb25zCi0wMDE5QTggICAgIChiYXNlIDE2KQkJV2lRdWVzdCBDb21tdW5pY2F0aW9ucwotCQkJCTkxNSBFbnRlcnByaXNlIEJsdmQuCi0JCQkJU3VpdGUgMjAwCi0JCQkJQWxsZW4gVGV4YXMgNzUwMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUE5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTlBOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUFBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMTlBQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUFCICAgKGhleCkJCVJheWNvbSBDTyAuLCBMVEQKLTAwMTlBQiAgICAgKGJhc2UgMTYpCQlSYXljb20gQ08gLiwgTFRECi0JCQkJQSwzLTQvRkwsIEJ1aWxkaW5nIDEsMjcgQ2h1YW5neGluIFJvYWQsCi0JCQkJQ2hhbmdwaW5nIFNjaWVuY2UgUGFyawotCQkJCUJlaWppbmcgIDEwMjIwMAotCQkJCUNISU5BCi0KLTAwLTE5LUFDICAgKGhleCkJCUdTUCBTWVNURU1TIEluYy4KLTAwMTlBQyAgICAgKGJhc2UgMTYpCQlHU1AgU1lTVEVNUyBJbmMuCi0JCQkJMTNGTCwgMTAxIERvbmcsIENodW51aSBUZWNobm8gUGFyayAxLAotCQkJCTIwMC0xLCBDaHVudWktRG9uZywgV29ubWktR1UsCi0JCQkJQnVjaGVvbi1DaXR5IEd5ZW9uZ2dpLURvIDQyMC04NTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktQUQgICAoaGV4KQkJQk9CU1QgU0EKLTAwMTlBRCAgICAgKGJhc2UgMTYpCQlCT0JTVCBTQQotCQkJCXJ0ZSBkZXMgZmx1bWVhdXggNTAKLQkJCQlDYXNlIFBvc3RhbGUgMTAwMSBMYXVzYW5uZQotCQkJCVBSSUxMWSBWRCAxMDA4Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMTktQUUgICAoaGV4KQkJSG9wbGluZyBUZWNobm9sb2dpZXMgYi52LgotMDAxOUFFICAgICAoYmFzZSAxNikJCUhvcGxpbmcgVGVjaG5vbG9naWVzIGIudi4KLQkJCQlDYW1lcmFzdHJhYXQgMTAKLQkJCQlBbG1lcmUgRmxldm9sYW5kIDEzMjIgQkMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xOS1BRiAgIChoZXgpCQlSaWdvbCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMTlBRiAgICAgKGJhc2UgMTYpCQlSaWdvbCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQlOby4gMTU2IENhaSBIZSBWaWxsYWdlLCBTaGEgSGUgVG93bgotCQkJCUNoYW5nIFBpbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDIyMDYKLQkJCQlDSElOQQotCi0wMC0xOS1CMCAgIChoZXgpCQlIYW5ZYW5nIFN5c3RlbQotMDAxOUIwICAgICAoYmFzZSAxNikJCUhhbllhbmcgU3lzdGVtCi0JCQkJNzAxSG8sIEtvZm9tbyBUZWNobm8gQ2VudGVyIElJLCAxMjg5LTUKLQkJCQlKdW5nd2FuZy1Eb25nCi0JCQkJU2hpaHVuZy1TaGkgS3l1bmdnaS1EbyA0MjktODUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTE5LUIxICAgKGhleCkJCUFycm93NyBDb3Jwb3JhdGlvbgotMDAxOUIxICAgICAoYmFzZSAxNikJCUFycm93NyBDb3Jwb3JhdGlvbgotCQkJCUthbWlqaW1hIDMtMjctNwotCQkJCUhhbWFtYXRzdSBTaGl6dW9rYSA0MzMtODEyMgotCQkJCUpBUEFOCi0KLTAwLTE5LUIyICAgKGhleCkJCVhZbmV0c29mdCBDby4sTHRkCi0wMDE5QjIgICAgIChiYXNlIDE2KQkJWFluZXRzb2Z0IENvLixMdGQKLQkJCQlOTy4xNThaaGVueXUgU3RyZWV0IEhpZ2ggSW5kdXN0cmllcyBEZXZlbG9wbWVudCBhcmVhCi0JCQkJQ2hhbmdDaHVuIEppTGluIDEzMDAwMAotCQkJCUNISU5BCi0KLTAwLTE5LUIzICAgKGhleCkJCVN0YW5mb3JkIFJlc2VhcmNoIFN5c3RlbXMKLTAwMTlCMyAgICAgKGJhc2UgMTYpCQlTdGFuZm9yZCBSZXNlYXJjaCBTeXN0ZW1zCi0JCQkJMTI5MC1EIFJlYW13b29kIEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQjQgICAoaGV4KQkJVmlkZW9DYXN0IEx0ZC4KLTAwMTlCNCAgICAgKGJhc2UgMTYpCQlWaWRlb0Nhc3QgTHRkLgotCQkJCUd5YXJtYXQgdS4gOTkvQgotCQkJCUJ1ZGFwZXN0ICAxMTQ3Ci0JCQkJSFVOR0FSWQotCi0wMC0xOS1CNSAgIChoZXgpCQlGYW1hciBGdWVndWluYSBTLkEuCi0wMDE5QjUgICAgIChiYXNlIDE2KQkJRmFtYXIgRnVlZ3VpbmEgUy5BLgotCQkJCVJvZG5leSA3MAotCQkJCUJ1ZW5vcyBBaXJlcyAgMTQyNwotCQkJCUFSR0VOVElOQQotCi0wMC0xOS1CNiAgIChoZXgpCQlFdXJvIEVtbWUgcy5yLmwuCi0wMDE5QjYgICAgIChiYXNlIDE2KQkJRXVybyBFbW1lIHMuci5sLgotCQkJCVZpYSBCZWx2ZWRlcmUsIDI0Ci0JCQkJR2FsbGlhdGUgTG9tYmFyZG8gVmFyZXNlIDIxMDIwCi0JCQkJSVRBTFkKLQotMDAtMTktQjcgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMTlCNyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMTktQjggICAoaGV4KQkJQm91bmRhcnkgRGV2aWNlcwotMDAxOUI4ICAgICAoYmFzZSAxNikJCUJvdW5kYXJ5IERldmljZXMKLQkJCQk3MjAwIFcuIE9ha2xhbmQKLQkJCQlDaGFuZGxlciBBWiA4NTIyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQjkgICAoaGV4KQkJRGVsbCBJbmMuCi0wMDE5QjkgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMuCi0JCQkJT25lIERlbGwgV2F5Ci0JCQkJTVMgODU0NQotCQkJCVJvdW5kIFJvY2sgVFggNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUJBICAgKGhleCkJCVBhcmFkb3ggU2VjdXJpdHkgU3lzdGVtcyBMdGQKLTAwMTlCQSAgICAgKGJhc2UgMTYpCQlQYXJhZG94IFNlY3VyaXR5IFN5c3RlbXMgTHRkCi0JCQkJNzgwIEluZHVzdHJpYWwgQmx2ZAotCQkJCVN0LUV1c3RhY2hlIFF1ZWJlYyBKN1IgNVYzCi0JCQkJQ0FOQURBCi0KLTAwLTE5LUJCICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDE5QkIgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDYwMzA4Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQkMgICAoaGV4KQkJRUxFQ1RSTyBDSEFOQ0UgU1JMCi0wMDE5QkMgICAgIChiYXNlIDE2KQkJRUxFQ1RSTyBDSEFOQ0UgU1JMCi0JCQkJQ0FSSFVFIDMxNzkKLQkJCQlBVi4gRVZBIFBFUk9OIDcwNDkKLQkJCQlDQVBJVEFMIEZFREVSQUwgQlVFTk9TIEFJUkVTIDE0NDAKLQkJCQlBUkdFTlRJTkEKLQotMDAtMTktQkQgICAoaGV4KQkJTmV3IE1lZGlhIExpZmUKLTAwMTlCRCAgICAgKGJhc2UgMTYpCQlOZXcgTWVkaWEgTGlmZQotCQkJCUhlYSBKdSBCaWxkLCA1RiwgODM3LTcsIFllb2tzYW0tZG9uZwotCQkJCUthbmduYW0tZ3UgU2VvdWwgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS1CRSAgIChoZXgpCQlBbHRhaSBUZWNobm9sb2dpZXMgTGltaXRlZAotMDAxOUJFICAgICAoYmFzZSAxNikJCUFsdGFpIFRlY2hub2xvZ2llcyBMaW1pdGVkCi0JCQkJVW5pdCAxMDNCIGFuZCAxMDUsIDEvRiwgQmxvY2sgOSwKLQkJCQlIb25nIEtvbmcgU2NpZW5jZSBQYXJrCi0JCQkJU2hhdGluIE5ldyBUZXJyaXRvcmllcyAKLQkJCQlIT05HIEtPTkcKLQotMDAtMTktQkYgICAoaGV4KQkJQ2l0aXdheSB0ZWNobm9sb2d5IENvLixsdGQKLTAwMTlCRiAgICAgKGJhc2UgMTYpCQlDaXRpd2F5IHRlY2hub2xvZ3kgQ28uLGx0ZAotCQkJCU5vLjIgQnVpbGRpbmcsSmlhIDMyLEJlaWhleWFuIEF2ZW51ZSxFYXN0IENpdHkKLQkJCQlQZWlqaW5nICAxMDAwMDYKLQkJCQlDSElOQQotCi0wMC0xOS1DMCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLTAwMTlDMCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAKLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1DMSAgIChoZXgpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0wMDE5QzEgICAgIChiYXNlIDE2KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGksCi0JCQkJU29tYS1jaXR5IEZ1a3VzaGltYS1wcmVmLiA5NzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTE5LUMyICAgKGhleCkJCUVxdXVzdGVrIFNvbHV0aW9ucywgSW5jLgotMDAxOUMyICAgICAoYmFzZSAxNikJCUVxdXVzdGVrIFNvbHV0aW9ucywgSW5jLgotCQkJCSMyODYgLSA1NDg5IEJ5cm5lIFJvYWQsCi0JCQkJQnVybmFieSBCQyBWNUogM0oxCi0JCQkJQ0FOQURBCi0KLTAwLTE5LUMzICAgKGhleCkJCVF1YWxpdHJvbAotMDAxOUMzICAgICAoYmFzZSAxNikJCVF1YWxpdHJvbAotCQkJCVdpbGRmbG93ZXIgV2F5Ci0JCQkJQXBvbGxvIFJvYWQKLQkJCQlCZWxmYXN0IENvLiBBbnRyaW0gQlQxMiA2VEEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xOS1DNCAgIChoZXgpCQlJbmZvY3J5cHQgSW5jLgotMDAxOUM0ICAgICAoYmFzZSAxNikJCUluZm9jcnlwdCBJbmMuCi0JCQkJNzExLCBCWVVDS1NBTiBESUdJVEFMIFZBTExFWSAxIDIxMi0xNiwKLQkJCQlHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktQzUgICAoaGV4KQkJU09OWSBDb21wdXRlciBFbnRlcnRhaW5tZW50IGluYywKLTAwMTlDNSAgICAgKGJhc2UgMTYpCQlTT05ZIENvbXB1dGVyIEVudGVydGFpbm1lbnQgaW5jLAotCQkJCTYtMjEsMkNob21lCi0JCQkJTWluYW1pLUFveWFtYQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDctMDA2MgotCQkJCUpBUEFOCi0KLTAwLTE5LUM2ICAgKGhleCkJCVpURSBDb3Jwb3JhdGlvbgotMDAxOUM2ICAgICAoYmFzZSAxNikJCVpURSBDb3Jwb3JhdGlvbgotCQkJCVRlY2hub2xvZ3kgTWFuYWdlbWVudCBEZXBhcnRtZW50LCAKLQkJCQkxMi9GLiwgWlRFIFImRCBCdWlsZGluZywgS2VqaW5hbiBSb2FkCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE5LUM3ICAgKGhleCkJCUNhbWJyaWRnZSBJbmR1c3RyaWVzKEdyb3VwKSBDby4sTHRkLgotMDAxOUM3ICAgICAoYmFzZSAxNikJCUNhbWJyaWRnZSBJbmR1c3RyaWVzKEdyb3VwKSBDby4sTHRkLgotCQkJCVJvb20gMzA5LDMzMyBIb25nIFFpYW8gUm9hZAotCQkJCVNoYW5naGFpICAyMDAwMzAKLQkJCQlDSElOQQotCi0wMC0xOS1DOCAgIChoZXgpCQlBbnlEQVRBIENvcnBvcmF0aW9uCi0wMDE5QzggICAgIChiYXNlIDE2KQkJQW55REFUQSBDb3Jwb3JhdGlvbgotCQkJCTE4OTAyIEJhcmRlZW4gQXZlLgotCQkJCUlydmluZSBDQSA5MTYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQzkgICAoaGV4KQkJUyZDIEVMRUNUUklDIENPTVBBTlkKLTAwMTlDOSAgICAgKGJhc2UgMTYpCQlTJkMgRUxFQ1RSSUMgQ09NUEFOWQotCQkJCTExMzUgQVRMQU5USUMgQVZFCi0JCQkJQUxBTUVEQSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQ0EgICAoaGV4KQkJQnJvYWRhdGEgQ29tbXVuaWNhdGlvbnMsIEluYwotMDAxOUNBICAgICAoYmFzZSAxNikJCUJyb2FkYXRhIENvbW11bmljYXRpb25zLCBJbmMKLQkJCQkyNTQ1IFcgMjM3dGggU3QgU3RlIEsKLQkJCQlUb3JyYW5jZSBDYSA5MDUwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktQ0IgICAoaGV4KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTAwMTlDQiAgICAgKGJhc2UgMTYpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotCQkJCU5vLiA2LCBJbm5vdmF0aW9uIFJvYWQgSUkKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyaywgSHNpbmNodSAzMDAKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTE5LUNDICAgKGhleCkJCVJDRyAoSEspIEx0ZAotMDAxOUNDICAgICAoYmFzZSAxNikJCVJDRyAoSEspIEx0ZAotCQkJCTkvRi4sIENvcmUgQywgQ3liZXJwb3J0IDMKLQkJCQkxMDAgQ3liZXJwb3J0IFJkCi0JCQkJSE9ORyBLT05HCi0KLTAwLTE5LUNEICAgKGhleCkJCUNoZW5nZHUgZXRoZXJjb20gaW5mb3JtYXRpb24gdGVjaG5vbG9neSBMdGQuCi0wMDE5Q0QgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSBldGhlcmNvbSBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5IEx0ZC4KLQkJCQlTb3V0aCBFeHRlbnNpb24gb2YgVGlhbmZ1IFdpZGUgUm9hZCBOby43IGRlcGFydG1lbnQgcm9vbSAyMDEKLQkJCQlDaGVuZ2R1IFNpY2h1YW4gNjEwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMTktQ0UgICAoaGV4KQkJUHJvZ3Jlc3NpdmUgR2FtaW5nIEludGVybmF0aW9uYWwKLTAwMTlDRSAgICAgKGJhc2UgMTYpCQlQcm9ncmVzc2l2ZSBHYW1pbmcgSW50ZXJuYXRpb25hbAotCQkJCTkyMCBQaWxvdCBSb2FkCi0JCQkJTGFzIFZlZ2FzIE5WIDg5MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1DRiAgIChoZXgpCQlTQUxJQ1JVLCBTLkEuCi0wMDE5Q0YgICAgIChiYXNlIDE2KQkJU0FMSUNSVSwgUy5BLgotCQkJCUF2LiBTZXJyYSAsIDEwMAotCQkJCVN0YS5NYS5QYWxhdXRvcmRlcmEgQmFyY2Vsb25hIDA4NDYwCi0JCQkJU1BBSU4KLQotMDAtMTktRDAgICAoaGV4KQkJQ2F0aGV4aXMKLTAwMTlEMCAgICAgKGJhc2UgMTYpCQlDYXRoZXhpcwotCQkJCVBPIEJveCAxMDkxCi0JCQkJVW1obGFuZ2EgUm9ja3MKLQkJCQlEdXJiYW4gS3dhWnVsdSBOYXRhbCA0MzIwCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTE5LUQxICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi0wMDE5RDEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE5LUQyICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi0wMDE5RDIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTE5LUQzICAgKGhleCkJCVRSQUsgTWljcm93YXZlCi0wMDE5RDMgICAgIChiYXNlIDE2KQkJVFJBSyBNaWNyb3dhdmUKLQkJCQk0NzI2IEVpc2VuaG93ZXIgQmx2ZAotCQkJCVRhbXBhIEZMIDMzNjM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1ENCAgIChoZXgpCQlJQ1ggVGVjaG5vbG9naWVzCi0wMDE5RDQgICAgIChiYXNlIDE2KQkJSUNYIFRlY2hub2xvZ2llcwotCQkJCTM0NDAgRnJhbmNpcy1IdWdoZXMKLQkJCQlTdWl0ZSAxMjAKLQkJCQlMYXZhbCBRdWViZWMgSDdMIDVBOQotCQkJCUNBTkFEQQotCi0wMC0xOS1ENSAgIChoZXgpCQlJUCBJbm5vdmF0aW9ucywgSW5jLgotMDAxOUQ1ICAgICAoYmFzZSAxNikJCUlQIElubm92YXRpb25zLCBJbmMuCi0JCQkJMTUxNyAxNDZ0aCBBdmUKLQkJCQlEb3JyIE1JIDQ5MzIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1ENiAgIChoZXgpCQlMUyBDYWJsZSBMdGQuCi0wMDE5RDYgICAgIChiYXNlIDE2KQkJTFMgQ2FibGUgTHRkLgotCQkJCTEyRiBMUyBUb3dlciwgMTAyNi02LCBIb2dleS1kb25nCi0JCQkJQW55YW5nLXNpIEd5ZW9uZ2dpLWRvIDQzMS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktRDcgICAoaGV4KQkJRk9SVFVORVRFSyBDTy4sIExURAotMDAxOUQ3ICAgICAoYmFzZSAxNikJCUZPUlRVTkVURUsgQ08uLCBMVEQKLQkJCQkxMkYsIE5vLiA3NSwgU2VjIDEsIENob25ncWluZyBTLiBSZC4sCi0JCQkJWmhvbmd6aGVuZyBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS1EOCAgIChoZXgpCQlNQVhGT1IKLTAwMTlEOCAgICAgKGJhc2UgMTYpCQlNQVhGT1IKLQkJCQkjRSA4MDksIEJ1bmRhbmcsIFRlY2huby1QYXJrCi0JCQkJWWF0YXAtRG9uZywgQnVuZ2RhbmctR3UKLQkJCQlTZW9uZ25hbS1DaXR5IEd5ZW9uZ2dpLURvIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMTktRDkgICAoaGV4KQkJWmV1dHNjaGVsIEdtYkgKLTAwMTlEOSAgICAgKGJhc2UgMTYpCQlaZXV0c2NoZWwgR21iSAotCQkJCUhlZXJ3ZWcgMgotCQkJCVTDvGJpbmdlbi1IaXJzY2hhdSBCVyBELTcyMDcwCi0JCQkJR0VSTUFOWQotCi0wMC0xOS1EQSAgIChoZXgpCQlXZWxsdHJhbnMgTyZFIFRlY2hub2xvZ3kgQ28uICwgTHRkLgotMDAxOURBICAgICAoYmFzZSAxNikJCVdlbGx0cmFucyBPJkUgVGVjaG5vbG9neSBDby4gLCBMdGQuCi0JCQkJdGhlIDNyZCBGbG9vciwgYnVpbGRpbmcgQy1ELCBIaS10ZWNoIERpZ2l0YWwgSGFyYm9yLCBHdWFuZG9uZyBJbmR1c3RyaWFsIFBhcmsKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi0wMC0xOS1EQiAgIChoZXgpCQlNSUNSTy1TVEFSIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0wMDE5REIgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotCQkJCU5PLiA2OSwgTEktREUgU1QuLCBKVU5HLUhFIENJVFkKLQkJCQlUQUlQRUkgSFNJRU4gIDIzNQotCQkJCVRVVkFMVQotCi0wMC0xOS1EQyAgIChoZXgpCQlFTkVOU1lTIFRlY2hub2xvZ2llcwotMDAxOURDICAgICAoYmFzZSAxNikJCUVORU5TWVMgVGVjaG5vbG9naWVzCi0JCQkJTGUgR2VybWFuaXVtCi0JCQkJODAgQXZlbnVlIGRlcyBidXR0ZXMgZGUgQ2/Dq3NtZXMKLQkJCQlSRU5ORVMgQnJpdHRhbnkgMzU3MDAKLQkJCQlGUkFOQ0UKLQotMDAtMTktREQgICAoaGV4KQkJRkVJLVp5ZmVyLCBJbmMuCi0wMDE5REQgICAgIChiYXNlIDE2KQkJRkVJLVp5ZmVyLCBJbmMuCi0JCQkJMTUxNSBTLiBNYW5jaGVzdGVyCi0JCQkJQW5haGVpbSBDQSA5MjgwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktREUgICAoaGV4KQkJTU9CSVRFSwotMDAxOURFICAgICAoYmFzZSAxNikJCU1PQklURUsKLQkJCQk1RixOby42MCxMYW5lIDMyMSxZYW5nLUt3YW5nIFN0cmVldAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS1ERiAgIChoZXgpCQlUaG9tc29uIEluYy4KLTAwMTlERiAgICAgKGJhc2UgMTYpCQlUaG9tc29uIEluYy4KLQkJCQkxMDEgV2VzdCAxMDNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyOTAtMTEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRTAgICAoaGV4KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDE5RTAgICAgIChiYXNlIDE2KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJU291dGggQnVpbGRpbmcsIE5vLjUgS2V5dWFuIFJvYWQKLQkJCQlDZW50cmFsIFpvbmUsIFNjaWVuY2UgJiBUZWNobm9sb2d5IFBhcmsKLQkJCQlOYW5zaGFuIFNoZW56aGVuIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTE5LUUxICAgKGhleCkJCU5vcnRlbAotMDAxOUUxICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xOS1FMiAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi0wMDE5RTIgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTi4gTWF0aGlsZGEgQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRTMgICAoaGV4KQkJQXBwbGUgQ29tcHV0ZXIgSW5jLgotMDAxOUUzICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ2FsaWZvcm5pYSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRTQgICAoaGV4KQkJMldpcmUsIEluYwotMDAxOUU0ICAgICAoYmFzZSAxNikJCTJXaXJlLCBJbmMKLQkJCQkxNzA0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1FNSAgIChoZXgpCQlMeW54IFN0dWRpbyBUZWNobm9sb2d5LCBJbmMuCi0wMDE5RTUgICAgIChiYXNlIDE2KQkJTHlueCBTdHVkaW8gVGVjaG5vbG9neSwgSW5jLgotCQkJCTE1NDAgQmFydG9uIFJkICMgMjY4Ci0JCQkJUmVkbGFuZHMgQ0EgOTIzNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUU2ICAgKGhleCkJCVRPWU8gTUVESUMgQ08uLExURC4KLTAwMTlFNiAgICAgKGJhc2UgMTYpCQlUT1lPIE1FRElDIENPLixMVEQuCi0JCQkJMS0xNy0yMiBLaXRhaG9yaWUsIE5pc2hpLWt1Ci0JCQkJT3Nha2EgIDU1MC0wMDE0Ci0JCQkJSkFQQU4KLQotMDAtMTktRTcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxOUU3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRTggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxOUU4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRTkgICAoaGV4KQkJUy1JbmZvcm1hdGlvbiBUZWNobm9sZ3ksIENvLiwgTHRkLgotMDAxOUU5ICAgICAoYmFzZSAxNikJCVMtSW5mb3JtYXRpb24gVGVjaG5vbGd5LCBDby4sIEx0ZC4KLQkJCQlTdW5nd29vIEJsZGcsIDcxNy0zIFN1c2VvLWRvbmcsCi0JCQkJR2FuZ25hbS1ndSwKLQkJCQlTZW91bCAgMTM1LTg4NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xOS1FQSAgIChoZXgpCQlUZXJhTWFnZSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDE5RUEgICAgIChiYXNlIDE2KQkJVGVyYU1hZ2UgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCUdvbGRlbiBMYW5kIEJ1aWxkaW5nIFN1aXRlIDkwNwotCQkJCTMyIExpYW5nIE1hIEJyaWRnZSBSb2FkCi0JCQkJQmVpamluZyAgMTAwMDE2Ci0JCQkJQ0hJTkEKLQotMDAtMTktRUIgICAoaGV4KQkJUHlyb25peCBMdGQKLTAwMTlFQiAgICAgKGJhc2UgMTYpCQlQeXJvbml4IEx0ZAotCQkJCUJyYWl0aHdlbGwgV2F5Ci0JCQkJSGVsbGFieQotCQkJCVJvdGhlcmhhbSBTb3V0aCBZb3Jrc2hpcmUgUzY2IDhRWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE5LUVDICAgKGhleCkJCVNhZ2Ftb3JlIFN5c3RlbXMsIEluYy4KLTAwMTlFQyAgICAgKGJhc2UgMTYpCQlTYWdhbW9yZSBTeXN0ZW1zLCBJbmMuCi0JCQkJNTUgTWlkZGxlc2V4IFN0cmVldAotCQkJCVN1aXRlIDIxNwotCQkJCU5vcnRoIENoZWxtc2ZvcmQgTUEgMDE4NjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUVEICAgKGhleCkJCUF4ZXNzdGVsIEluYy4KLTAwMTlFRCAgICAgKGJhc2UgMTYpCQlBeGVzc3RlbCBJbmMuCi0JCQkJNjgxNSBGbGFuZGVycyBTci4KLQkJCQlTdGUgMjEwCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1FRSAgIChoZXgpCQlDQVJMTyBHQVZBWlpJIENPTlRST0xTIFNQQS1Db250cm9scyBEaXZpc2lvbgotMDAxOUVFICAgICAoYmFzZSAxNikJCUNBUkxPIEdBVkFaWkkgQ09OVFJPTFMgU1BBLUNvbnRyb2xzIERpdmlzaW9uCi0JCQkJVmlhIFNhZmZvcnplIDgKLQkJCQlCRUxMVU5PIEJMIEktMzIxMDAKLQkJCQlJVEFMWQotCi0wMC0xOS1FRiAgIChoZXgpCQlTSEVOWkhFTiBMSU5OS0lORyBFTEVDVFJPTklDUyBDTy4sTFRECi0wMDE5RUYgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gTElOTktJTkcgRUxFQ1RST05JQ1MgQ08uLExURAotCQkJCVJvb20gOTAxLEIgQmxvY2ssUWluZ2h1YSBJbmZvcm1hdGlvbiBDZW50ZXIgSGktdGVjIHBhcmsgTm9ydGggRGlzdHJpY3QsTmFuc2hhbiBEaXN0cmljdCxTaGVuemhlbgotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xOS1GMCAgIChoZXgpCQlVTklPTk1BTiBURUNITk9MT0dZIENPLixMVEQKLTAwMTlGMCAgICAgKGJhc2UgMTYpCQlVTklPTk1BTiBURUNITk9MT0dZIENPLixMVEQKLQkJCQkxOEYsIEhVQVlBTkcgVE9XRVIsWUFOREFZSSBST0FECi0JCQkJSFVJWkhPVSBHVUFOR0RPTkcgNTE2MDA3Ci0JCQkJQ0hJTkEKLQotMDAtMTktRjEgICAoaGV4KQkJU3RhciBDb21tdW5pY2F0aW9uIE5ldHdvcmsgVGVjaG5vbG9neSBDby4sTHRkCi0wMDE5RjEgICAgIChiYXNlIDE2KQkJU3RhciBDb21tdW5pY2F0aW9uIE5ldHdvcmsgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJMTAvRixUb3dlciBCLFNPSE8gTmV3IFRvd24sTm8uODggamlhbmd1b1JvYWQsQ2hhb3lhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwMjIKLQkJCQlDSElOQQotCi0wMC0xOS1GMiAgIChoZXgpCQlUZXJhZHluZSBLLksuCi0wMDE5RjIgICAgIChiYXNlIDE2KQkJVGVyYWR5bmUgSy5LLgotCQkJCTI3Mi0xMywgSGVpc2VpLCBUYWthb25vCi0JCQkJT3p1LW1hY2hpCi0JCQkJS2lrdWNoaS1ndW4gS3VtYW1vdG8gODY5LTEyMzIKLQkJCQlKQVBBTgotCi0wMC0xOS1GMyAgIChoZXgpCQlDZXRpcywgSW5jCi0wMDE5RjMgICAgIChiYXNlIDE2KQkJQ2V0aXMsIEluYwotCQkJCTUwMjUgR2FsbGV5IFJkCi0JCQkJQ29sb3JhZG8gU3ByaW5ncyBDTyA4MDkxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMTktRjQgICAoaGV4KQkJQ29udmVyZ2VucyBPeSBMdGQKLTAwMTlGNCAgICAgKGJhc2UgMTYpCQlDb252ZXJnZW5zIE95IEx0ZAotCQkJCVdlc3RlbmRpbnRpZSA5OSBCCi0JCQkJRXNwb28gVXVzaW1hYSBGSU4tMDIxNjAKLQkJCQlGSU5MQU5ECi0KLTAwLTE5LUY1ICAgKGhleCkJCUltYWdpbmF0aW9uIFRlY2hub2xvZ2llcyBMdGQKLTAwMTlGNSAgICAgKGJhc2UgMTYpCQlJbWFnaW5hdGlvbiBUZWNobm9sb2dpZXMgTHRkCi0JCQkJWnVyaWNoIEhvdXNlCi0JCQkJQ2FuYWwgV2hhcmYKLQkJCQlMZWVkcyBXZXN0IFlvcmtzaGlyZSBMUzExIDVEQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE5LUY2ICAgKGhleCkJCUFjY29uZXQgKFBURSkgTHRkCi0wMDE5RjYgICAgIChiYXNlIDE2KQkJQWNjb25ldCAoUFRFKSBMdGQKLQkJCQlOby4gMTYgQXllciBSYWphaCBDcmVzY2VudAotCQkJCSMgMDMtMDMKLQkJCQlTaW5nYXBvcmUgIDEzOTk2NQotCQkJCVNJTkdBUE9SRQotCi0wMC0xOS1GNyAgIChoZXgpCQlPbnNldCBDb21wdXRlciBDb3Jwb3JhdGlvbgotMDAxOUY3ICAgICAoYmFzZSAxNikJCU9uc2V0IENvbXB1dGVyIENvcnBvcmF0aW9uCi0JCQkJUC5PLiBCb3ggMzQ1MAotCQkJCVBvY2Fzc2V0IE1BIDAyNTU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1GOCAgIChoZXgpCQlFbWJlZGRlZCBTeXN0ZW1zIERlc2lnbiwgSW5jLgotMDAxOUY4ICAgICAoYmFzZSAxNikJCUVtYmVkZGVkIFN5c3RlbXMgRGVzaWduLCBJbmMuCi0JCQkJNjgxMCBEZWVycGF0aCBSb2FkCi0JCQkJU3VpdGUgMzAwCi0JCQkJRWxrcmlkZ2UgTUQgMjEwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTE5LUY5ICAgKGhleCkJCVRESy1MYW1iZGEKLTAwMTlGOSAgICAgKGJhc2UgMTYpCQlUREstTGFtYmRhCi0JCQkJNDA1IEVzc2V4IFJvYWQKLQkJCQlOZXB0dW5lIE5KIDA3NzUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xOS1GQSAgIChoZXgpCQlDYWJsZSBWaXNpb24gRWxlY3Ryb25pY3MgQ08uLCBMVEQuCi0wMDE5RkEgICAgIChiYXNlIDE2KQkJQ2FibGUgVmlzaW9uIEVsZWN0cm9uaWNzIENPLiwgTFRELgotCQkJCTEyRi0zLCBOby4xNiwgQ2hpZW4gUGEgUmQuCi0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xOS1GQiAgIChoZXgpCQlCU2t5QiBMdGQKLTAwMTlGQiAgICAgKGJhc2UgMTYpCQlCU2t5QiBMdGQKLQkJCQkxNjkgS0lOR1MgUk9BRAotCQkJCUJSRU5UV09PRCBFU1NFWCBDTTE0IDRFRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTE5LUZDICAgKGhleCkJCVBULiBVZm9ha3NlcyBTdWtzZXMgTHVhcmJpYXNhCi0wMDE5RkMgICAgIChiYXNlIDE2KQkJUFQuIFVmb2Frc2VzIFN1a3NlcyBMdWFyYmlhc2EKLQkJCQlKbC4gU3VsdGFuIEhhc2FudWRpbiBOby4gNDEKLQkJCQlLZWJheW9yYW4gQmFydQotCQkJCUpha2FydGEgU2VsYXRhbiBES0kgSmFrYXJ0YSAxMjE2MAotCQkJCUlORE9ORVNJQQotCi0wMC0xOS1GRCAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMTlGRCAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xOS1GRSAgIChoZXgpCQlTSEVOWkhFTiBTRUVDT01NIFRFQ0hOT0xPR1kgQ08uLExURC4KLTAwMTlGRSAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBTRUVDT01NIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlSb29tIDYwOSw0MDRZYW5uYW4gUm9hZAotCQkJCVNoZW5aaGVuIEd1YW5nZG9uZyA1MTgwMzEKLQkJCQlDSElOQQotCi0wMC0xOS1GRiAgIChoZXgpCQlGaW5uenltZXMKLTAwMTlGRiAgICAgKGJhc2UgMTYpCQlGaW5uenltZXMKLQkJCQk4MDAgV2VzdCBDdW1taW5ncyBQYXJrCi0JCQkJU3VpdGUgNTU1MAotCQkJCVdvYnVybiBNQSAwMTgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMDAgICAoaGV4KQkJTUFUUklYIElOQy4KLTAwMUEwMCAgICAgKGJhc2UgMTYpCQlNQVRSSVggSU5DLgotCQkJCUFTIGJsZC4zLTEzLTIwCi0JCQkJTmlzaGktVGVtbWEgS2l0YS1LdQotCQkJCU9zYWthICA1MzAtMDA0NwotCQkJCUpBUEFOCi0KLTAwLTFBLTAxICAgKGhleCkJCVNtaXRocyBNZWRpY2FsCi0wMDFBMDEgICAgIChiYXNlIDE2KQkJU21pdGhzIE1lZGljYWwKLQkJCQk0MzUwIFJpdmVyZ3JlZW4gUGFya3dheQotCQkJCVN1aXRlIDIwMAotCQkJCUR1bHV0aCBHQSAzMDA5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMDIgICAoaGV4KQkJU0VDVVJFIENBUkUgUFJPRFVDVFMsIElOQwotMDAxQTAyICAgICAoYmFzZSAxNikJCVNFQ1VSRSBDQVJFIFBST0RVQ1RTLCBJTkMKLQkJCQkzOSBDSEVORUxMIERSSVZFCi0JCQkJQ09OQ09SRCBOSCAwMzMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMDMgICAoaGV4KQkJQW5nZWwgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDFBMDMgICAgIChiYXNlIDE2KQkJQW5nZWwgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJMTcsIExhbmUgMTM0LCBTaG91IFNoYW4gUm9hZCwgVGFpIFNoYW4sCi0JCQkJVGFpcGVpICAyNDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTA0ICAgKGhleCkJCUludGVyYXkgU29sdXRpb25zIEJWCi0wMDFBMDQgICAgIChiYXNlIDE2KQkJSW50ZXJheSBTb2x1dGlvbnMgQlYKLQkJCQlNci4gVy5NLiBPcHBlZGlqayB2YW4gVmVlbndlZyA4Ci0JCQkJQlVSR1VNIEZyaWVzbGFuZCA5MjUxIEdBCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUEtMDUgICAoaGV4KQkJT1BUSUJBU0UgTFRECi0wMDFBMDUgICAgIChiYXNlIDE2KQkJT1BUSUJBU0UgTFRECi0JCQkJNyBTaGFua2FyIFN0LgotCQkJCUhlcnpsaXlhIElTUkFFTCA0NjEyMAotCQkJCUlTUkFFTAotCi0wMC0xQS0wNiAgIChoZXgpCQlPcFZpc3RhLCBJbmMuCi0wMDFBMDYgICAgIChiYXNlIDE2KQkJT3BWaXN0YSwgSW5jLgotCQkJCTg3MCBOb3J0aCBNY0NhcnRoeSBCbHZkLgotCQkJCU1pbHBpdGFzIENhbGlmb3JuaWEgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTA3ICAgKGhleCkJCUFyZWNvbnQgVmlzaW9uCi0wMDFBMDcgICAgIChiYXNlIDE2KQkJQXJlY29udCBWaXNpb24KLQkJCQkyNDAwIE4uIExpbmNvbG4gQXZlCi0JCQkJQWx0YWRlbmEgQ0EgOTEwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTA4ICAgKGhleCkJCURhbG1hbiBUZWNobmljYWwgU2VydmljZXMKLTAwMUEwOCAgICAgKGJhc2UgMTYpCQlEYWxtYW4gVGVjaG5pY2FsIFNlcnZpY2VzCi0JCQkJMzYgRHVrZSBDbG9zZQotCQkJCVdlc3QgV2F5Ci0JCQkJQW5kb3ZlciBIYW1wc2hpcmUgU1AxMCA1QVAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQS0wOSAgIChoZXgpCQlXYXlmYXJlciBUcmFuc2l0IFN5c3RlbXMgTHRkCi0wMDFBMDkgICAgIChiYXNlIDE2KQkJV2F5ZmFyZXIgVHJhbnNpdCBTeXN0ZW1zIEx0ZAotCQkJCTEwIFdpbGxpcyBXYXkKLQkJCQlGbGVldHMgSW5zZHVzdHJpYWwgRXN0Ci0JCQkJUG9vbGUgRG9yc2V0IEJIMTUgM1NTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUEtMEEgICAoaGV4KQkJQWRhcHRpdmUgTWljcm8tV2FyZSBJbmMuCi0wMDFBMEEgICAgIChiYXNlIDE2KQkJQWRhcHRpdmUgTWljcm8tV2FyZSBJbmMuCi0JCQkJNjkxNyBJbm5vdmF0aW9uIEJsdmQKLQkJCQlGb3J0IFdheW5lIElOIDQ2ODE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0wQiAgIChoZXgpCQlCT05BIFRFQ0hOT0xPR1kgSU5DLgotMDAxQTBCICAgICAoYmFzZSAxNikJCUJPTkEgVEVDSE5PTE9HWSBJTkMuCi0JCQkJNEYsIEUtUGxhY2UgQmxkZy4sIDcxOS0yNAotCQkJCVllb2tzYW0tRG9uZywgR2FuZ25hbS1HdSwKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS0wQyAgIChoZXgpCQlTd2UtRGlzaCBTYXRlbGxpdGUgU3lzdGVtcyBBQgotMDAxQTBDICAgICAoYmFzZSAxNikJCVN3ZS1EaXNoIFNhdGVsbGl0ZSBTeXN0ZW1zIEFCCi0JCQkJVG9yZ2dhdGFuIDE1Ci0JCQkJU29sbmEgU3RvY2tob2xtIFNFLTE3MSAwNgotCQkJCVNXRURFTgotCi0wMC0xQS0wRCAgIChoZXgpCQlIYW5kSGVsZCBlbnRlcnRhaW5tZW50LCBJbmMuCi0wMDFBMEQgICAgIChiYXNlIDE2KQkJSGFuZEhlbGQgZW50ZXJ0YWlubWVudCwgSW5jLgotCQkJCTUzOSBCcnlhbnQgU3RyZWV0LCBTdWl0ZSA0MDMKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0wRSAgIChoZXgpCQlDaGVuZyBVZWkgUHJlY2lzaW9uIEluZHVzdHJ5IENvLixMdGQKLTAwMUEwRSAgICAgKGJhc2UgMTYpCQlDaGVuZyBVZWkgUHJlY2lzaW9uIEluZHVzdHJ5IENvLixMdGQKLQkJCQlKdW5kYSBJbmR1c3RyeSBEaXN0cmljdCwgRG9uZ2tlbmcgVG93bixEb25nZ3VhbiBDaXR5Ci0JCQkJRG9uZ0d1YW4gR3VhbmcgRG9uZyA1MjM0NTUKLQkJCQlDSElOQQotCi0wMC0xQS0wRiAgIChoZXgpCQlTaXN0ZW1hcyBBdmFuemFkb3MgZGUgQ29udHJvbCwgUy5BLgotMDAxQTBGICAgICAoYmFzZSAxNikJCVNpc3RlbWFzIEF2YW56YWRvcyBkZSBDb250cm9sLCBTLkEuCi0JCQkJY2FsbGUgQ29scXVpZGUgNgotCQkJCUxhcyBSb3phcyBNYWRyaWQgMjgyMzAKLQkJCQlTUEFJTgotCi0wMC0xQS0xMCAgIChoZXgpCQlMVUNFTlQgVFJBTlMgRUxFQ1RST05JQ1MgQ08uLExURAotMDAxQTEwICAgICAoYmFzZSAxNikJCUxVQ0VOVCBUUkFOUyBFTEVDVFJPTklDUyBDTy4sTFRECi0JCQkJOUYtMSxOby4xNixDaGllbiBQYWggUmQuCi0JCQkJQ2h1bmcgSG8gVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtMTEgICAoaGV4KQkJR29vZ2xlIEluYy4KLTAwMUExMSAgICAgKGJhc2UgMTYpCQlHb29nbGUgSW5jLgotCQkJCTE2MDAgQW1waGl0aGVhdGVyIFBhcmt3YXkKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0xMiAgIChoZXgpCQlFc3NpbG9yCi0wMDFBMTIgICAgIChiYXNlIDE2KQkJRXNzaWxvcgotCQkJCTY0IEJpcyBBdmVudWUgQXViZXJ0Ci0JCQkJOTQzMDAgVmluY2VubmVzIAotCQkJCUZSQU5DRQotCi0wMC0xQS0xMyAgIChoZXgpCQlXYW5saWRhIEdyb3VwIENvLiwgTFRECi0wMDFBMTMgICAgIChiYXNlIDE2KQkJV2FubGlkYSBHcm91cCBDby4sIExURAotCQkJCUppYWhlIFJvYWQgTm8uNjE4Ci0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi0wMC0xQS0xNCAgIChoZXgpCQlYaW4gSHVhIENvbnRyb2wgRW5naW5lZXJpbmcgQ28uLEx0ZC4KLTAwMUExNCAgICAgKGJhc2UgMTYpCQlYaW4gSHVhIENvbnRyb2wgRW5naW5lZXJpbmcgQ28uLEx0ZC4KLQkJCQkxNjAgV2VuamluZyBSZC4sIE1pbmhhbmcKLQkJCQlTaGFuZ2hhaSAgMjAwMDI0NQotCQkJCUNISU5BCi0KLTAwLTFBLTE1ICAgKGhleCkJCWdlbWFsdG8gZS1QYXltZW50Ci0wMDFBMTUgICAgIChiYXNlIDE2KQkJZ2VtYWx0byBlLVBheW1lbnQKLQkJCQk2IHJ1ZSBkZSBsYSBWZXJyZXJpZQotCQkJCU1ldWRvbiAgOTIxOTcKLQkJCQlGUkFOQ0UKLQotMDAtMUEtMTYgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUExNiAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUEtMTcgICAoaGV4KQkJVGVhayBUZWNobm9sb2dpZXMsIEluYy4KLTAwMUExNyAgICAgKGJhc2UgMTYpCQlUZWFrIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTI5MDEgVGFzbWFuIERyLiwgU3RlLiAjMjEwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTE4ICAgKGhleCkJCUFkdmFuY2VkIFNpbXVsYXRpb24gVGVjaG5vbG9neSBpbmMuCi0wMDFBMTggICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgU2ltdWxhdGlvbiBUZWNobm9sb2d5IGluYy4KLQkJCQk1MDBBIEh1bnRtYXIgUGFyayBEcml2ZQotCQkJCUhlcm5kb24gVkEgMjAxNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTE5ICAgKGhleCkJCUNvbXB1dGVyIEVuZ2luZWVyaW5nIExpbWl0ZWQKLTAwMUExOSAgICAgKGJhc2UgMTYpCQlDb21wdXRlciBFbmdpbmVlcmluZyBMaW1pdGVkCi0JCQkJUE8gQm94IDI2LTI1Ci0JCQkJRXBzb20KLQkJCQlBdWNrbGFuZCBBSyAxMzQ0Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMUEtMUEgICAoaGV4KQkJR2VudGV4IENvcnBvcmF0aW9uL0VsZWN0cm8tQWNvdXN0aWMgUHJvZHVjdHMKLTAwMUExQSAgICAgKGJhc2UgMTYpCQlHZW50ZXggQ29ycG9yYXRpb24vRWxlY3Ryby1BY291c3RpYyBQcm9kdWN0cwotCQkJCTI0NTYgQnJvd24gQXZlbnVlCi0JCQkJTWFuY2hlc3RlciBOSCAwMzEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMUIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDFBMUIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4uIEh3eSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMUMgICAoaGV4KQkJR1QmVCBFbmdpbmVlcmluZyBQdGUgTHRkCi0wMDFBMUMgICAgIChiYXNlIDE2KQkJR1QmVCBFbmdpbmVlcmluZyBQdGUgTHRkCi0JCQkJMiBBbmcgTW8gS2lvIFN0LjY0LCBFY29uIEJ1aWxkaW5nLCAjMDQtMDAKLQkJCQlTaW5nYXBvcmUgNTY5MDg0Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTFBLTFEICAgKGhleCkJCVBDaG9tZSBPbmxpbmUgSW5jLgotMDAxQTFEICAgICAoYmFzZSAxNikJCVBDaG9tZSBPbmxpbmUgSW5jLgotCQkJCTExRiwgMTA1LCBTZWMuIDIsIFR1bi1Id2EgUy4gUmQuCi0JCQkJVGFpcGVpIDEwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtMUUgICAoaGV4KQkJQXJ1YmEgTmV0d29ya3MKLTAwMUExRSAgICAgKGJhc2UgMTYpCQlBcnViYSBOZXR3b3JrcwotCQkJCTEzMjIgQ3Jvc3NtYW4gQXYKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTFGICAgKGhleCkJCUNvYXN0YWwgRW52aXJvbm1lbnRhbCBTeXN0ZW1zCi0wMDFBMUYgICAgIChiYXNlIDE2KQkJQ29hc3RhbCBFbnZpcm9ubWVudGFsIFN5c3RlbXMKLQkJCQk4MjAgRmlyc3QgQXZlbnVlIFNvdXRoCi0JCQkJU2VhdHRsZSB3YSA5ODEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMjAgICAoaGV4KQkJQ01PVEVDSCBDby4gTHRkLgotMDAxQTIwICAgICAoYmFzZSAxNikJCUNNT1RFQ0ggQ28uIEx0ZC4KLQkJCQk1RiBFdHJvbml4IEJsZGcuIDE3LTEwCi0JCQkJWW9pZG8tRG9uZwotCQkJCVlvdW5nZHVuZ3BvLUd1IFNlb3VsIDE1MC04NzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtMjEgICAoaGV4KQkJSW5kYWMgQi5WLgotMDAxQTIxICAgICAoYmFzZSAxNikJCUluZGFjIEIuVi4KLQkJCQlJbnN0aXR1dGVud2VnIDE1QQotCQkJCUVuc2NoZWRlIE92ZXJpanNzZWwgNzUyMSBQSAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFBLTIyICAgKGhleCkJCWVRLTMgRW50d2lja2x1bmcgR21iSAotMDAxQTIyICAgICAoYmFzZSAxNikJCWVRLTMgRW50d2lja2x1bmcgR21iSAotCQkJCU1haWJ1cmdlciBTdHIuIDM2Ci0JCQkJTGVlciBOaWVkZXJzYWNoc2VuIEQtMjY3ODkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLTIzICAgKGhleCkJCUljZSBRdWJlLCBJbmMKLTAwMUEyMyAgICAgKGJhc2UgMTYpCQlJY2UgUXViZSwgSW5jCi0JCQkJMTQxIFdpbHNvbiBBdmUKLQkJCQlHcmVlbnNidXJnIFBhIDE1NjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0yNCAgIChoZXgpCQlHYWxheHkgVGVsZWNvbSBUZWNobm9sb2dpZXMgTHRkCi0wMDFBMjQgICAgIChiYXNlIDE2KQkJR2FsYXh5IFRlbGVjb20gVGVjaG5vbG9naWVzIEx0ZAotCQkJCU5vLjI1LCBUaGUgMXN0IEdhb3hpbiBSb2FkCi0JCQkJWGknYW4gQ2l0eSBTaGFubnhpIDcxMDA3NQotCQkJCUNISU5BCi0KLTAwLTFBLTI1ICAgKGhleCkJCURFTFRBIERPUkUKLTAwMUEyNSAgICAgKGJhc2UgMTYpCQlERUxUQSBET1JFCi0JCQkJQk9OTkVNQUlOCi0JCQkJQ09NQk9VUkcgQlJFVEFHTkUgMzUgMzUyNzAKLQkJCQlGUkFOQ0UKLQotMDAtMUEtMjYgICAoaGV4KQkJRGVsdGFub2RlIFNvbHV0aW9ucyBBQgotMDAxQTI2ICAgICAoYmFzZSAxNikJCURlbHRhbm9kZSBTb2x1dGlvbnMgQUIKLQkJCQlCb3ggOTIgMTg0Ci0JCQkJU3RvY2tob2xtICAxMjAgMDkKLQkJCQlTV0VERU4KLQotMDAtMUEtMjcgICAoaGV4KQkJVWJpc3RhcgotMDAxQTI3ICAgICAoYmFzZSAxNikJCVViaXN0YXIKLQkJCQk4RiwgU2VvbmdkbyBCdWlsZGluZywgNTg3LTIzCi0JCQkJU2luc2EtRG9uZywgR2FuZ25hbS1HdQotCQkJCVNlb3VsICAxMzUtNzQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTI4ICAgKGhleCkJCUFTV1QgQ28uLCBMVEQuIFRhaXdhbiBCcmFuY2ggSC5LLgotMDAxQTI4ICAgICAoYmFzZSAxNikJCUFTV1QgQ28uLCBMVEQuIFRhaXdhbiBCcmFuY2ggSC5LLgotCQkJCTdGLiwgTm8uMyBMYW5lIDkxLCBEb25nbWVpIFJkLgotCQkJCUhzaW5jaHUgIDMwMDcwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS0yOSAgIChoZXgpCQlUZWNoc29uaWMgSW5kdXN0cmllcyBkL2IvYSBIdW1taW5iaXJkCi0wMDFBMjkgICAgIChiYXNlIDE2KQkJVGVjaHNvbmljIEluZHVzdHJpZXMgZC9iL2EgSHVtbWluYmlyZAotCQkJCTEyMjAgT2xkIEFscGhhcmV0dGEgUmQKLQkJCQlTdWl0ZSAzNDAKLQkJCQlBbHBoYXJldHRhIEdBIDMwMDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0yQSAgIChoZXgpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDFBMkEgICAgIChiYXNlIDE2KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLiwgTm8uIDkgLCBQYXJrIEF2ZW51ZSBJSSwKLQkJCQlTY2llbmNlLWJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTJCICAgKGhleCkJCUF5ZWNvbSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxQTJCICAgICAoYmFzZSAxNikJCUF5ZWNvbSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiAyNSwgUiZEIFJvYWQgMiwgU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTJDICAgKGhleCkJCVNBVEVDIENvLixMVEQKLTAwMUEyQyAgICAgKGJhc2UgMTYpCQlTQVRFQyBDby4sTFRECi0JCQkJMzU4LTQsIFBhbGdvazItRG9uZywgU2FuZ25vay1HdQotCQkJCUFuc2FuLVNpIEt5dW5na2ktRG8gNDI2LTE5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS0yRCAgIChoZXgpCQlUaGUgTmF2dm8gR3JvdXAKLTAwMUEyRCAgICAgKGJhc2UgMTYpCQlUaGUgTmF2dm8gR3JvdXAKLQkJCQk0NDAwIEJha2VyIFJvYWQKLQkJCQlNaW5uZXRvbmthIE1OIDU1MzQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0yRSAgIChoZXgpCQlaaW92YSBDb3BvcmF0aW9uCi0wMDFBMkUgICAgIChiYXNlIDE2KQkJWmlvdmEgQ29wb3JhdGlvbgotCQkJCVVuaXQgMywgNy05IFNoZXJyaWZmcyByb2FkCi0JCQkJTG9uc2RhbGUgUy5BLiA1MTYwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTFBLTJGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUEyRiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTMwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUEzMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTMxICAgKGhleCkJCVNDQU4gQ09JTiBJbmR1c3RyaWVzIEFCCi0wMDFBMzEgICAgIChiYXNlIDE2KQkJU0NBTiBDT0lOIEluZHVzdHJpZXMgQUIKLQkJCQlKYWdlcnNoaWxsZ2F0YW4gMjYKLQkJCQlNYWxtb2UgU2thbmUgMjEzNzUKLQkJCQlTV0VERU4KLQotMDAtMUEtMzIgICAoaGV4KQkJQUNUSVZBIE1VTFRJTUVESUEKLTAwMUEzMiAgICAgKGJhc2UgMTYpCQlBQ1RJVkEgTVVMVElNRURJQQotCQkJCVNJQ1AgQ1NFCi0JCQkJU0FOVCBKT0FOIERFU1BJIEJBUkNFTE9OQSAwODk3MAotCQkJCVNQQUlOCi0KLTAwLTFBLTMzICAgKGhleCkJCUFTSSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxQTMzICAgICAoYmFzZSAxNikJCUFTSSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTEwNDIgRSBHdWFkYWx1cGUgUmQKLQkJCQlUZW1wZSBBWiA4NTI4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMzQgICAoaGV4KQkJS29ua2EgR3JvdXAgQ28uLCBMdGQuCi0wMDFBMzQgICAgIChiYXNlIDE2KQkJS29ua2EgR3JvdXAgQ28uLCBMdGQuCi0JCQkJT3ZlcnNlYSBDaGluZXNlIFRvd24sTmFuc2hhbiwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDUzCi0JCQkJQ0hJTkEKLQotMDAtMUEtMzUgICAoaGV4KQkJQkFSVEVDIEdtYkgKLTAwMUEzNSAgICAgKGJhc2UgMTYpCQlCQVJURUMgR21iSAotCQkJCVNjaHVsc3RyLiAzMAotCQkJCUdvdHRlc3plbGwgQmF2YXJpYSA5NDIzOQotCQkJCUdFUk1BTlkKLQotMDAtMUEtMzYgICAoaGV4KQkJQWlwZXJtb24gR21iSCAmIENvLiBLRwotMDAxQTM2ICAgICAoYmFzZSAxNikJCUFpcGVybW9uIEdtYkggJiBDby4gS0cKLQkJCQlaYW1kb3JmZXIgU3RyLiAxMDAKLQkJCQlNdW5jaGVuCi0JCQkJTXVuaWNoIEJhdmFyaWEgRC04MTY3NwotCQkJCUdFUk1BTlkKLQotMDAtMUEtMzcgICAoaGV4KQkJTGVhciBDb3Jwb3JhdGlvbgotMDAxQTM3ICAgICAoYmFzZSAxNikJCUxlYXIgQ29ycG9yYXRpb24KLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDQ4Ci0JCQkJS3JvbmFjaCBCYXllcm4gOTYzMTcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLTM4ICAgKGhleCkJCVNhbm1pbmEtU0NJCi0wMDFBMzggICAgIChiYXNlIDE2KQkJU2FubWluYS1TQ0kKLQkJCQkxMzAwMCBTb3V0aCBNZW1vcmlhbCBQYXJrd2F5Ci0JCQkJSHVudHN2aWxsZSBBTCAzNTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtMzkgICAoaGV4KQkJTWVydGVuIEdtYkgmQ29LRwotMDAxQTM5ICAgICAoYmFzZSAxNikJCU1lcnRlbiBHbWJIJkNvS0cKLQkJCQlGcml0ei1Lb3R6LVN0ci4gOAotCQkJCVdpZWhsIE5SVyA1MTY3NAotCQkJCUdFUk1BTlkKLQotMDAtMUEtM0EgICAoaGV4KQkJRG9uZ2FoZWxlY29tbQotMDAxQTNBICAgICAoYmFzZSAxNikJCURvbmdhaGVsZWNvbW0KLQkJCQk2NzgtMyxKZWlsLXJpLFlhbmdnaS1teXVuLENoZW9pbi1ndQotCQkJCVlvbmdpbi1zaSBHeWVvbmdnaS1kbyA0NDktODIxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTNCICAgKGhleCkJCURvYWggRWxlY29tIEluYy4KLTAwMUEzQiAgICAgKGJhc2UgMTYpCQlEb2FoIEVsZWNvbSBJbmMuCi0JCQkJOHRoIGZsLiBDZW50dXJ5IFBsYXphLCAyNzctNDAKLQkJCQlTdW5nc3UtMkdhIDNEb25nCi0JCQkJU2VvdWwgIDEzMy0xMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtM0MgICAoaGV4KQkJVGVjaG5vd2F2ZSBMdGQuCi0wMDFBM0MgICAgIChiYXNlIDE2KQkJVGVjaG5vd2F2ZSBMdGQuCi0JCQkJU2FrdXJhaSBCbGRnLjFGLAotCQkJCTEtMzUtNiBOYWthY2hvCi0JCQkJTXVzYXNoaW5vLXNoaSBUb2t5byAxODAtMDAwNgotCQkJCUpBUEFOCi0KLTAwLTFBLTNEICAgKGhleCkJCUFqaW4gVmlzaW9uIENvLixMdGQKLTAwMUEzRCAgICAgKGJhc2UgMTYpCQlBamluIFZpc2lvbiBDby4sTHRkCi0JCQkJMTQwNCwgTWFyaW8tVG93ZXIsIDIyMi0xMgotCQkJCUd1cm8tZG9uZywgR3Vyby1ndQotCQkJCVNlb3VsICAxNTItMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTNFICAgKGhleCkJCUZhc3RlciBUZWNobm9sb2d5IExMQwotMDAxQTNFICAgICAoYmFzZSAxNikJCUZhc3RlciBUZWNobm9sb2d5IExMQwotCQkJCTE4MTIgQXZlbnVlIEQKLQkJCQlTdWl0ZSAyMDIKLQkJCQlLYXR5IFRleGFzIDc3NDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS0zRiAgIChoZXgpCQlpbnRlbGJyYXMKLTAwMUEzRiAgICAgKGJhc2UgMTYpCQlpbnRlbGJyYXMKLQkJCQlyb2RvdmlhIGJyIDEwMSBrbSAyMTAKLQkJCQlpbnRlbGJyYXMKLQkJCQlzYW8gam9zZSBzYyA4ODEwNDgwMAotCQkJCUJSQVpJTAotCi0wMC0xQS00MCAgIChoZXgpCQlBLUZPVVIgVEVDSCBDTy4sIExURC4KLTAwMUE0MCAgICAgKGJhc2UgMTYpCQlBLUZPVVIgVEVDSCBDTy4sIExURC4KLQkJCQk2RiwgTm8uIDEwOCwgTWluLUNodWFuIFJkLiwKLQkJCQlIc2luLVRpZW4gVGFpcGVpIDIzMTQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS00MSAgIChoZXgpCQlJTk9DT1ZBIENvLixMdGQKLTAwMUE0MSAgICAgKGJhc2UgMTYpCQlJTk9DT1ZBIENvLixMdGQKLQkJCQk1RiBTRU9VTCBCRC43MzYtMTcKLQkJCQlZZW9rc2FtLURvbmcsIEthbmduYW0tS3UgU0VPVUwgMTM1LTkyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS00MiAgIChoZXgpCQlUZWNoY2l0eSBUZWNobm9sb2d5IGNvLiwgTHRkLgotMDAxQTQyICAgICAoYmFzZSAxNikJCVRlY2hjaXR5IFRlY2hub2xvZ3kgY28uLCBMdGQuCi0JCQkJNEYsIE5vLiA0LCBBbGxleSAxLCBTenUgV2VpIExhbmUsIENodW5nIENoZW5nIFJkLiwKLQkJCQlIc2luIFRlaW4gQ2l0eSBUYWlwZWkgSHNpZW4gMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS00MyAgIChoZXgpCQlMb2dpY2FsIExpbmsgQ29tbXVuaWNhdGlvbnMKLTAwMUE0MyAgICAgKGJhc2UgMTYpCQlMb2dpY2FsIExpbmsgQ29tbXVuaWNhdGlvbnMKLQkJCQkxOTA5IENlbnRyYWwgRHJpdmUgU3VpdGUgMjA1Ci0JCQkJQmVkZm9yZCBUWCA3NjAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNDQgICAoaGV4KQkJSldUcmFkaW5nIENvLiwgTHRkCi0wMDFBNDQgICAgIChiYXNlIDE2KQkJSldUcmFkaW5nIENvLiwgTHRkCi0JCQkJMTU5MCBLd2FueWFuZy1kb25nLCBEb25nYW4ta3UKLQkJCQlBaG55YW5nIEt5dW5na2kgLSBkbyA0MzEtMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTQ1ICAgKGhleCkJCUdOIE5ldGNvbSBhcwotMDAxQTQ1ICAgICAoYmFzZSAxNikJCUdOIE5ldGNvbSBhcwotCQkJCU1ldGFsYnVlbiA2NgotCQkJCVAuTy5Cb3ggMjAxCi0JCQkJQmFsbGVydXAgU2tvdmx1bmRlIERLIC0gMjc1MAotCQkJCURFTk1BUksKLQotMDAtMUEtNDYgICAoaGV4KQkJRGlnaXRhbCBNdWx0aW1lZGlhIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMUE0NiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIE11bHRpbWVkaWEgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCURvb3JpbSBCbGRnLCAzcmQgRmwsIDE2NC0yMSBQb2ktRG9uZywKLQkJCQlTZW91bCBLYW5nbmFtLUd1IDEzNS05NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtNDcgICAoaGV4KQkJQWdhbWkgU3lzdGVtcywgSW5jLgotMDAxQTQ3ICAgICAoYmFzZSAxNikJCUFnYW1pIFN5c3RlbXMsIEluYy4KLQkJCQkxMjY5IElubnNicnVjayBEcml2ZQotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS00OCAgIChoZXgpCQlUYWthY29tIENvcnBvcmF0aW9uCi0wMDFBNDggICAgIChiYXNlIDE2KQkJVGFrYWNvbSBDb3Jwb3JhdGlvbgotCQkJCTMwNC03MDkgQXphLU5pc2hpeWFubWEKLQkJCQlPcm9zaGktY2hvCi0JCQkJVG9raS1zaGkgR2lmdS1rZW4gNTA5LTUyMDIKLQkJCQlKQVBBTgotCi0wMC0xQS00OSAgIChoZXgpCQlNaWNybyBWaXNpb24gQ28uLExURAotMDAxQTQ5ICAgICAoYmFzZSAxNikJCU1pY3JvIFZpc2lvbiBDby4sTFRECi0JCQkJMS05LTE1Ci0JCQkJS2FuZG91amkgTWluYW1pCi0JCQkJTmlpZ2F0YS1jaXR5IE5paWdhdGEta2VuIDk1MC0wOTg2Ci0JCQkJSkFQQU4KLQotMDAtMUEtNEEgICAoaGV4KQkJUXVtcmFuZXQgSW5jLgotMDAxQTRBICAgICAoYmFzZSAxNikJCVF1bXJhbmV0IEluYy4KLQkJCQk1MzAgTGFrZXNpZGUgRHJpdmUKLQkJCQlTdWl0ZSAyMjAKLQkJCQlTdW5ueXZhbGUgQ2FsaWZvcm5pYSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNEIgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMUE0QiAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNjAzMDgKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS00QyAgIChoZXgpCQlDcm9zc2JvdyBUZWNobm9sb2d5LCBJbmMKLTAwMUE0QyAgICAgKGJhc2UgMTYpCQlDcm9zc2JvdyBUZWNobm9sb2d5LCBJbmMKLQkJCQk0MTQ1IE4uIEZpcnN0IFN0cmVldAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS00RCAgIChoZXgpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotMDAxQTREICAgICAoYmFzZSAxNikJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0JCQkJCi0JCQkJUGluLUplbiBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNEUgICAoaGV4KQkJTlRJIEFHIC8gTGluTW90Ci0wMDFBNEUgICAgIChiYXNlIDE2KQkJTlRJIEFHIC8gTGluTW90Ci0JCQkJSGFlcmRsaXN0cmFzc2UgMTUKLQkJCQlTcHJlaXRlbmJhY2ggQUcgODk1NwotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFBLTRGICAgKGhleCkJCUFWTSBHbWJICi0wMDFBNEYgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotMDAtMUEtNTAgICAoaGV4KQkJUGhlZU5ldCBUZWNobm9sb2d5IENvcnAuCi0wMDFBNTAgICAgIChiYXNlIDE2KQkJUGhlZU5ldCBUZWNobm9sb2d5IENvcnAuCi0JCQkJUm0uIDMsIDIwRiwgTm8uIDc5LCBTZWMuIDEgSHNpbiBUYWkgV3UgUmQuCi0JCQkJSHNpLUNoaWggVGFpcGVpIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNTEgICAoaGV4KQkJQWxmcmVkIE1hbm4gRm91bmRhdGlvbgotMDAxQTUxICAgICAoYmFzZSAxNikJCUFsZnJlZCBNYW5uIEZvdW5kYXRpb24KLQkJCQlQLk8uIEJveCA5MDUKLQkJCQlTYW50YSBDbGFyaXRhIENBIDkxMzgwLTkwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTUyICAgKGhleCkJCU1lc2hsaW54IFdpcmVsZXNzIEluYy4KLTAwMUE1MiAgICAgKGJhc2UgMTYpCQlNZXNobGlueCBXaXJlbGVzcyBJbmMuCi0JCQkJMTQxMCBHIEF2ZW51ZSwgU3VpdGUgVAotCQkJCVBsYW5vIFRleGFzIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS01MyAgIChoZXgpCQlaeWxheWEKLTAwMUE1MyAgICAgKGJhc2UgMTYpCQlaeWxheWEKLQkJCQk0NDQgTi4gRnJlZGVyaWNrIEF2ZS4KLQkJCQlTdWl0ZSAzMTgKLQkJCQlHYWl0aGVyc2J1cmcgTUQgMjA4NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTU0ICAgKGhleCkJCUhpcCBTaGluZyBFbGVjdHJvbmljcyBMdGQuCi0wMDFBNTQgICAgIChiYXNlIDE2KQkJSGlwIFNoaW5nIEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQlVbml0IDEvMi8zLCAyMC9GLCBOZXcgVHJlYXN1cmUgQ2VudGVyCi0JCQkJMTAgTmcgRm9uZyBTdHJlZXQsIFNhbiBQbyBLb25nLCBLb3dsb29uCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFBLTU1ICAgKGhleCkJCUFDQS1EaWdpdGFsIENvcnBvcmF0aW9uCi0wMDFBNTUgICAgIChiYXNlIDE2KQkJQUNBLURpZ2l0YWwgQ29ycG9yYXRpb24KLQkJCQkxNyBGLCBOby4gODY2LTcsIENodW5nIENoZW5nIFJkLiwKLQkJCQlDaHVuZyBIbyBDaXR5IFRhaXBlaSBDb3VudHkgMjM1ODYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTU2ICAgKGhleCkJCVZpZXdUZWwgQ28sLiBMdGQuCi0wMDFBNTYgICAgIChiYXNlIDE2KQkJVmlld1RlbCBDbywuIEx0ZC4KLQkJCQkjQi01MDIsQnVuZGFuZyBUZWNobm8gUGFyayAxNDgKLQkJCQlZYVRhcC1Eb25nCi0JCQkJQnVuRGFuZy1LdSwgU2VvbmdOYW0tU2kgR3llb25nR2ktRG8gNDYzLTc2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS01NyAgIChoZXgpCQlNYXRyaXggRGVzaWduIEdyb3VwLCBMTEMKLTAwMUE1NyAgICAgKGJhc2UgMTYpCQlNYXRyaXggRGVzaWduIEdyb3VwLCBMTEMKLQkJCQk1NzQxIFByb3NwZWN0IERyLgotCQkJCU5ld2J1cmdoIElOIDQ3NjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS01OCAgIChoZXgpCQlDQ1YgRGV1dHNjaGxhbmQgR21iSCAtIENlbGVjdHJvbmljIGVIZWFsdGggRGl2LgotMDAxQTU4ICAgICAoYmFzZSAxNikJCUNDViBEZXV0c2NobGFuZCBHbWJIIC0gQ2VsZWN0cm9uaWMgZUhlYWx0aCBEaXYuCi0JCQkJTm9yZGxpY2h0c3RyYXNzZSA2MwotCQkJCUJlcmxpbiAgRC0xMzQwNQotCQkJCUdFUk1BTlkKLQotMDAtMUEtNTkgICAoaGV4KQkJSXJjb25hCi0wMDFBNTkgICAgIChiYXNlIDE2KQkJSXJjb25hCi0JCQkJVW5pdCA0Qi0xLCBDb3Jwb3JhdGUgUGFyawotCQkJCUJsYW5jaGFyZHN0b3duIER1YmxpbiAxNQotCQkJCUlSRUxBTkQKLQotMDAtMUEtNUEgICAoaGV4KQkJS29yZWEgRWxlY3RyaWMgUG93ZXIgRGF0YSBOZXR3b3JrICAoS0ROKSBDby4sIEx0ZAotMDAxQTVBICAgICAoYmFzZSAxNikJCUtvcmVhIEVsZWN0cmljIFBvd2VyIERhdGEgTmV0d29yayAgKEtETikgQ28uLCBMdGQKLQkJCQk2NjUgTkFFU09OLURPTkcsCi0JCQkJR1lFT05HR0ktRE8gVUlXQU5HLVNJLCBOQUVTT04tRE9ORyA0MzctMDgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTVCICAgKGhleCkJCU5ldENhcmUgU2VydmljZSBDby4sIEx0ZC4KLTAwMUE1QiAgICAgKGJhc2UgMTYpCQlOZXRDYXJlIFNlcnZpY2UgQ28uLCBMdGQuCi0JCQkJNS0xMy0xNiBTaGltaXp1LCBBc2FoaS1rdQotCQkJCU9zYWthICA1MzUtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTFBLTVDICAgKGhleCkJCUV1Y2huZXIgR21iSCtDby4gS0cKLTAwMUE1QyAgICAgKGJhc2UgMTYpCQlFdWNobmVyIEdtYkgrQ28uIEtHCi0JCQkJS29obGhhbW1lcnN0ci4gMTYKLQkJCQlMZWluZmVsZGVuLUVjaHRlcmRpbmdlbiBCVyA3MDc3MQotCQkJCUdFUk1BTlkKLQotMDAtMUEtNUQgICAoaGV4KQkJTW9iaW5ub3ZhIENvcnAuCi0wMDFBNUQgICAgIChiYXNlIDE2KQkJTW9iaW5ub3ZhIENvcnAuCi0JCQkJMTFGLCA4NDUsIENIVU5HIFNIQU4gUkQKLQkJCQlUQU9ZVUFOICAzMzA1OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNUUgICAoaGV4KQkJVGhpbmNvbSBUZWNobm9sb2d5IENvLixMdGQKLTAwMUE1RSAgICAgKGJhc2UgMTYpCQlUaGluY29tIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTE3Ri0zLCBOby4zOTgsIEh1YW5iZWkgUmQuLAotCQkJCVpob25nbGkgQ2l0eSBUYW95dWFuIENvbnRyeSAzMjAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTVGICAgKGhleCkJCUtpdFdvcmtzLmZpIEx0ZC4KLTAwMUE1RiAgICAgKGJhc2UgMTYpCQlLaXRXb3Jrcy5maSBMdGQuCi0JCQkJU25vd3BvbGlzCi0JCQkJVnVva2F0dGkgS2FpbnV1IDg4NjEwCi0JCQkJRklOTEFORAotCi0wMC0xQS02MCAgIChoZXgpCQlXYXZlIEVsZWN0cm9uaWNzIENvLixMdGQuCi0wMDFBNjAgICAgIChiYXNlIDE2KQkJV2F2ZSBFbGVjdHJvbmljcyBDby4sTHRkLgotCQkJCTN0aCBGbC4sRGFlU2FuIFBsYXphIEIvRCxHdXVuLURvbmcsIDEyLTEsR3dvbnNlb24tR3UKLQkJCQlTdXdvbi1zaSBLeWVvbmdnaS1EbyA0NDEtODE0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTYxICAgKGhleCkJCVBhY1N0YXIgQ29ycC4KLTAwMUE2MSAgICAgKGJhc2UgMTYpCQlQYWNTdGFyIENvcnAuCi0JCQkJMTUwNTUgU1cgU2VxdW9pYSBQa3d5LCBTdWl0ZSAxMDAKLQkJCQlQb3J0bGFuZCBPUiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNjIgICAoaGV4KQkJRGF0YSBSb2JvdGljcywgSW5jb3Jwb3JhdGVkCi0wMDFBNjIgICAgIChiYXNlIDE2KQkJRGF0YSBSb2JvdGljcywgSW5jb3Jwb3JhdGVkCi0JCQkJMTg4MSBMYW5kaW5ncyBEcgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTYzICAgKGhleCkJCUVsc3RlciBTb2x1dGlvbnMsIExMQywKLTAwMUE2MyAgICAgKGJhc2UgMTYpCQlFbHN0ZXIgU29sdXRpb25zLCBMTEMsCi0JCQkJMjA4IFNvdXRoIFJvZ2VycyBMYW5lCi0JCQkJUmFsZWlnaCBOQyAyNzYxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNjQgICAoaGV4KQkJSUJNIENvcnAKLTAwMUE2NCAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtNjUgICAoaGV4KQkJU2VsdXhpdAotMDAxQTY1ICAgICAoYmFzZSAxNikJCVNlbHV4aXQKLQkJCQlOeWhhdm5zZ2FkZSA5LCAyLnNhbAotCQkJCUFhbGJvcmcgTm9yZCBKeWxsYW5kIDkwMDAKLQkJCQlERU5NQVJLCi0KLTAwLTFBLTY2ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxQTY2ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTY3ICAgKGhleCkJCUluZmluaXRlIFFMIFNkbiBCaGQKLTAwMUE2NyAgICAgKGJhc2UgMTYpCQlJbmZpbml0ZSBRTCBTZG4gQmhkCi0JCQkJRy4wMiwgQmxvY2sgQSwgRGF0YXJhbiBIYW1vZGFsCi0JCQkJTm8uNCwgSmFsYW4gMTMvNCwgU2VjdC4gMTMsCi0JCQkJUGV0YWxpbmcgSmF5YSBTZWxhbmdvciBEYXJ1bCBFaHNhbiA0NjMwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFBLTY4ICAgKGhleCkJCVdlbHRlYyBFbnRlcnByaXNlIENvLiwgTHRkLgotMDAxQTY4ICAgICAoYmFzZSAxNikJCVdlbHRlYyBFbnRlcnByaXNlIENvLiwgTHRkLgotCQkJCTJGLCBOby4gMzUxIFl1bmcgSG8gUmQuCi0JCQkJVGFpcGVpIEhzaWVuCi0JCQkJQ2h1bmcgSG8gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNjkgICAoaGV4KQkJV3VoYW4gWWFuZ3R6ZSBPcHRpY2FsIFRlY2hub2xvZ3kgQ08uLEx0ZC4KLTAwMUE2OSAgICAgKGJhc2UgMTYpCQlXdWhhbiBZYW5ndHplIE9wdGljYWwgVGVjaG5vbG9neSBDTy4sTHRkLgotCQkJCTQjLEd1YW5zaGFuIDIgUm9hZAotCQkJCVd1aGFuIEh1YmVpIDQzMDA3MwotCQkJCUNISU5BCi0KLTAwLTFBLTZBICAgKGhleCkJCVRyYW56YXMsIEluYy4KLTAwMUE2QSAgICAgKGJhc2UgMTYpCQlUcmFuemFzLCBJbmMuCi0JCQkJUXVlZW5zIHRvd2VyIEMxNwotCQkJCU1pbmF0b21pcmFpIDItMy01IE5pc2hpLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2Eta2VuIDIyMC02MjE3Ci0JCQkJSkFQQU4KLQotMDAtMUEtNkIgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wMDFBNkIgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSxTZWMuMSwgVEFJUElORyBSRC4KLQkJCQlUU0FPVFVFTiwKLQkJCQlOQU5UT1UgIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS02QyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFBNkMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS02RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFBNkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS02RSAgIChoZXgpCQlJbXBybyBUZWNobm9sb2dpZXMKLTAwMUE2RSAgICAgKGJhc2UgMTYpCQlJbXBybyBUZWNobm9sb2dpZXMKLQkJCQk0N0IgR2lsbGl0cyBSZAotCQkJCVBpbmV0b3duIEt3YVp1bHUtTmF0YWwgMzYxMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0xQS02RiAgIChoZXgpCQlNSS5URUwgcy5yLmwuCi0wMDFBNkYgICAgIChiYXNlIDE2KQkJTUkuVEVMIHMuci5sLgotCQkJCVZJQSBHVUlETyBST1NTQSwgMjIKLQkJCQlDT1JOQVRFIEQnQUREQSBNSUxBTk8gMjAwNDAKLQkJCQlJVEFMWQotCi0wMC0xQS03MCAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTAwMUE3MCAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTcxICAgKGhleCkJCURpb3N0ZWNoIENvLiwgTHRkLgotMDAxQTcxICAgICAoYmFzZSAxNikJCURpb3N0ZWNoIENvLiwgTHRkLgotCQkJCTE1MS0yMSwgQnVrLXJpLCBOYW1zYS1teWVvbiwKLQkJCQlDaGVvaW4tZ3UKLQkJCQlZb25naW4tY2l0eSBHeWVvbmdnaS1kbyA0NDkgODg0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTcyICAgKGhleCkJCU1vc2FydCBTZW1pY29uZHVjdG9yIENvcnAuCi0wMDFBNzIgICAgIChiYXNlIDE2KQkJTW9zYXJ0IFNlbWljb25kdWN0b3IgQ29ycC4KLQkJCQkyM0YuLCBOby4zMywgU2VjLjEsCi0JCQkJTWluIFNoZW5nIFJkLiwgUGFuY2hpYW8gQ2l0eQotCQkJCVRhaXBlaSAgMjIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS03MyAgIChoZXgpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMUE3MyAgICAgKGJhc2UgMTYpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMSBKZW4gQWkgUm9hZCwgSHNpbmNodSBJbmR1c3RyaWFsIFBhcmssIEh1a291LAotCQkJCUhzaW5jaHUgIDMwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNzQgICAoaGV4KQkJUHJvY2FyZSBJbnRlcm5hdGlvbmFsIENvCi0wMDFBNzQgICAgIChiYXNlIDE2KQkJUHJvY2FyZSBJbnRlcm5hdGlvbmFsIENvCi0JCQkJNUYsIE5vLjg4LCBKaG91emloIFN0cmVldCwgTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUEtNzUgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLTAwMUE3NSAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNrw6VuZSAyMjE4OAotCQkJCVNXRURFTgotCi0wMC0xQS03NiAgIChoZXgpCQlTRFQgaW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTFRELgotMDAxQTc2ICAgICAoYmFzZSAxNikJCVNEVCBpbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMVEQuCi0JCQkJU2FtaWwgQi9CIDJGLCA1LTYzIEh5b2NoYW5nLWRvbmcKLQkJCQlZb25nc2FuLUt1LAotCQkJCVNlb3VsICAxNDAtODk2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLTc3ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxQTc3ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTYwMCBOLiBId3kgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLTc4ICAgKGhleCkJCXVidG9zCi0wMDFBNzggICAgIChiYXNlIDE2KQkJdWJ0b3MKLQkJCQlSbi4yMTMsIFdvb2xpbSBMaW9uwqHCr3MgVmFsbGV5IMKlwrEsICM2ODAKLQkJCQlzZW91bCBHYXNhbi1kb25nIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtNzkgICAoaGV4KQkJVEVMRUNPTVVOSUNBVElPTiBURUNITk9MT0dJRVMgTFRELgotMDAxQTc5ICAgICAoYmFzZSAxNikJCVRFTEVDT01VTklDQVRJT04gVEVDSE5PTE9HSUVTIExURC4KLQkJCQk0RCBaSFVLT1ZBIEJMVi4KLQkJCQlPREVTU0EgIDY1MTIxCi0JCQkJVUtSQUlORQotCi0wMC0xQS03QSAgIChoZXgpCQlMaXNtb3JlIEluc3RydW1lbnRzIExpbWl0ZWQKLTAwMUE3QSAgICAgKGJhc2UgMTYpCQlMaXNtb3JlIEluc3RydW1lbnRzIExpbWl0ZWQKLQkJCQlVbml0IDIgVHJpc3RhciBDZW50cmUsIFN0YXIgUm9hZAotCQkJCVBhcnRyaWRnZSBHcmVlbgotCQkJCUhvcnNoYW0gV2VzdCBTdXNzZXggUkgxMyA4UkEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQS03QiAgIChoZXgpCQlUZWxlY28sIEluYy4KLTAwMUE3QiAgICAgKGJhc2UgMTYpCQlUZWxlY28sIEluYy4KLQkJCQk0MzAgV29vZHJ1ZmYgUmQuCi0JCQkJU3VpdGUgMzAwCi0JCQkJR3JlZW52aWxsZSBTQyAyOTYwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtN0MgICAoaGV4KQkJSGlyc2NobWFubiBNdWx0aW1lZGlhIEIuVi4KLTAwMUE3QyAgICAgKGJhc2UgMTYpCQlIaXJzY2htYW5uIE11bHRpbWVkaWEgQi5WLgotCQkJCVBhbXB1c2xhYW4gMTcwCi0JCQkJV2Vlc3AgTm9vcmQtSG9sbGFuZCAxMzgyIEpTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUEtN0QgICAoaGV4KQkJY3liZXItYmx1ZShISylMdGQKLTAwMUE3RCAgICAgKGJhc2UgMTYpCQljeWJlci1ibHVlKEhLKUx0ZAotCQkJCVJvb20gMTQwOCBibG9jayBDIHN0YXJzIFBsYXphIEhvbmdMaVJvYWQsRnVUaWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTAwLTFBLTdFICAgKGhleCkJCUxOIFNyaXRoYWkgQ29tbSBMdGQuCi0wMDFBN0UgICAgIChiYXNlIDE2KQkJTE4gU3JpdGhhaSBDb21tIEx0ZC4KLQkJCQk3MS8xMiBNLjUsIEJhbmduYS1UcmFkIFJkLCBLTS41MiwgVGhha2FtCi0JCQkJQmFuZ3Bha29uZyBDaGFjaG9lbmdzYW8gMjQxMzAKLQkJCQlUSEFJTEFORAotCi0wMC0xQS03RiAgIChoZXgpCQlHQ0kgU2NpZW5jZSZUZWNobm9sb2d5IENvLixMdGQuCi0wMDFBN0YgICAgIChiYXNlIDE2KQkJR0NJIFNjaWVuY2UmVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCU5vLjM4MSwgWGluZ2FuZ3pob25nIFJvYWQsCi0JCQkJZ3Vhbmd6aG91IGd1YW5nZG9uZyA1MTAzMTAKLQkJCQlDSElOQQotCi0wMC0xQS04MCAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0wMDFBODAgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMgNS0xLTIKLQkJCQlLaXRhc2hpbmFnYXdhCi0JCQkJU2hpbmFnYXdhLWt1IFRva3lvIDE0MS0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMUEtODEgICAoaGV4KQkJWmVsYXgKLTAwMUE4MSAgICAgKGJhc2UgMTYpCQlaZWxheAotCQkJCTJuZCBidWlkLiwgMUIsIFphdm9kc2theWEgc3QuLAotCQkJCU1vc2NvdyAgMTI0NjgxCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFBLTgyICAgKGhleCkJCVBST0JBIEJ1aWxkaW5nIEF1dG9tYXRpb24gQ28uLExURAotMDAxQTgyICAgICAoYmFzZSAxNikJCVBST0JBIEJ1aWxkaW5nIEF1dG9tYXRpb24gQ28uLExURAotCQkJCVBlbmdodWFuIEJ1aWxkaW5nIDUwMSwgU2hhbmdkaSBFYXN0IFJvYWQgIzEsIEhhaWRpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMUEtODMgICAoaGV4KQkJUGVnYXN1cyBUZWNobm9sb2dpZXMgSW5jLgotMDAxQTgzICAgICAoYmFzZSAxNikJCVBlZ2FzdXMgVGVjaG5vbG9naWVzIEluYy4KLQkJCQkxMDggUGF3bm9vayBGYXJtIFJkLgotCQkJCUxlbm9pciBDaXR5IFROIDM3NzcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS04NCAgIChoZXgpCQlWIE9uZSBNdWx0aW1lZGlhIFB0ZSBMdGQKLTAwMUE4NCAgICAgKGJhc2UgMTYpCQlWIE9uZSBNdWx0aW1lZGlhIFB0ZSBMdGQKLQkJCQlCbGsgNTQsIEthbGxhbmcgQmFocnUKLQkJCQkjMDItMDQKLQkJCQkzMzkzMzYKLQkJCQlTSU5HQVBPUkUKLQotMDAtMUEtODUgICAoaGV4KQkJTlYgTWljaGVsIFZhbiBkZSBXaWVsZQotMDAxQTg1ICAgICAoYmFzZSAxNikJCU5WIE1pY2hlbCBWYW4gZGUgV2llbGUKLQkJCQlNLiBWYW5kZXdpZWxlc3RyYWF0IDcKLQkJCQlNYXJrZSBXZXN0LVZsYWFuZGVyZW4gODUxMAotCQkJCUJFTEdJVU0KLQotMDAtMUEtODYgICAoaGV4KQkJQWR2YW5jZWRJTyBTeXN0ZW1zIEluYwotMDAxQTg2ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkSU8gU3lzdGVtcyBJbmMKLQkJCQk1OTUgSG93ZSBTdHJlZXQsIFN1aXRlIDUwMgotCQkJCVZhbmNvdXZlciBCQyBWNkMgMlQ1Ci0JCQkJQ0FOQURBCi0KLTAwLTFBLTg3ICAgKGhleCkJCUNhbmhvbGQgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0wMDFBODcgICAgIChiYXNlIDE2KQkJQ2FuaG9sZCBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLQkJCQlGbGF0IDQsIDEzL0YuLCBCbG9jayA0LCBUYWkgUGluZyBJbmR1c3RyaWFsIENlbnRyZQotCQkJCTUxQSBUaW5nIEtvayBSb2FkLCBUYWkgUG8sIE4uVC4sCi0JCQkJMDA4NTIKLQkJCQlIT05HIEtPTkcKLQotMDAtMUEtODggICAoaGV4KQkJVmVuZXJneSxDbyxMdGQKLTAwMUE4OCAgICAgKGJhc2UgMTYpCQlWZW5lcmd5LENvLEx0ZAotCQkJCVdlc3QgNnRoIEZsb29yLE0tOCBCdWlsZGluZyBNYXF1ZWxpbmcgWm9uZSwKLQkJCQlTaGVuemhlbiBIaWdoLVRlY2ggUGFyaywgTmFuc2hhbiBkaXN0cmljdCwKLQkJCQlzaGVuemhlbiBndWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMUEtODkgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUE4OSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUEtOEEgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMUE4QSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaS1DaXR5IEd5ZW9uZy1CdWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS04QiAgIChoZXgpCQlDSFVOSUwgRUxFQ1RSSUMgSU5ELiwgQ08uCi0wMDFBOEIgICAgIChiYXNlIDE2KQkJQ0hVTklMIEVMRUNUUklDIElORC4sIENPLgotCQkJCTMwOCxCeXVja1NhbiBEaWdpdGFsIFZhbGxleSwxMzItNyxHYW1qZW9uLURvbmcsU2FzYW5nLUd1Ci0JCQkJQnVzYW4gR3llb25nU2FuZ05hbURvIDYxNy04MDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtOEMgICAoaGV4KQkJQXN0YXJvIEFHCi0wMDFBOEMgICAgIChiYXNlIDE2KQkJQXN0YXJvIEFHCi0JCQkJQW1hbGllbmJhZHN0ci4gMzYKLQkJCQlCYXUgMzNhCi0JCQkJS2FybHNydWhlIEJXIDc2MjI3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS04RCAgIChoZXgpCQlBVkVDUyBCZXJnZW4gR21iSAotMDAxQThEICAgICAoYmFzZSAxNikJCUFWRUNTIEJlcmdlbiBHbWJICi0JCQkJQmlsbHJvdGhzdHIuIDExIGEKLQkJCQlCZXJnZW4gYXVmIFLDvGdlbiBNL1YgMTg1MjgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLThFICAgKGhleCkJCTNXYXkgTmV0d29ya3MgTHRkCi0wMDFBOEUgICAgIChiYXNlIDE2KQkJM1dheSBOZXR3b3JrcyBMdGQKLQkJCQk3MjAwIENhbWJyaWRnZSBSZXNlYXJjaCBQYXJrCi0JCQkJV2F0ZXJiZWFjaAotCQkJCUNhbWJyaWRnZSBDYW1icmlkZ2VzaGlyZSBDQjUgOVRMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUEtOEYgICAoaGV4KQkJTm9ydGVsCi0wMDFBOEYgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFBLTkwICAgKGhleCkJCVRyw7NwaWNvIFNpc3RlbWFzIGUgVGVsZWNvbXVuaWNhw6fDtWVzIGRhIEFtYXrDtG5pYSBMVERBLgotMDAxQTkwICAgICAoYmFzZSAxNikJCVRyw7NwaWNvIFNpc3RlbWFzIGUgVGVsZWNvbXVuaWNhw6fDtWVzIGRhIEFtYXrDtG5pYSBMVERBLgotCQkJCVJvZC4gIENhbXBpbmFzLU1vZ2ktTWlyaW0gKFNQIDM0MCkgIEttIDExOCw1Ci0JCQkJUG9saXMgZGUgVGVjbm9sb2dpYSAoQ1BxRCktUHLDqWRpbyA5QQotCQkJCUNhbXBpbmFzIFPDo28gUGF1bG8gMTMuMDg2LTkwMgotCQkJCUJSQVpJTAotCi0wMC0xQS05MSAgIChoZXgpCQlGdXNpb25EeW5hbWljIEx0ZC4KLTAwMUE5MSAgICAgKGJhc2UgMTYpCQlGdXNpb25EeW5hbWljIEx0ZC4KLQkJCQkxIEIuUy5SLiB0b3dlcnMsIDQtdGggZmxvb3IKLQkJCQkyIEJlbiBHdXJpb24gc3RyZWV0Ci0JCQkJUmFtYXQgR2FuICA1MjU3MwotCQkJCUlTUkFFTAotCi0wMC0xQS05MiAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTAwMUE5MiAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91Ci0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTkzICAgKGhleCkJCUVSQ08gTGV1Y2h0ZW4gR21iSAotMDAxQTkzICAgICAoYmFzZSAxNikJCUVSQ08gTGV1Y2h0ZW4gR21iSAotCQkJCUJyb2NraGF1c2VyIFdlZyA4MC04MgotCQkJCUzDvGRlbnNjaGVpZCBOUlcgRC01ODUwNwotCQkJCUdFUk1BTlkKLQotMDAtMUEtOTQgICAoaGV4KQkJVm90cm9uaWMgR21iSAotMDAxQTk0ICAgICAoYmFzZSAxNikJCVZvdHJvbmljIEdtYkgKLQkJCQlTYWFyYnJ1ZWNrZXIgU3RyLiA4Ci0JCQkJU3QuIEluZ2JlcnQgU2FhcmxhbmQgNjYzODYKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLTk1ICAgKGhleCkJCUhpc2Vuc2UgTW9iaWxlIENvbW11bmljYXRpb25zIFRlY2hub2xpZ3kgQ28uLEx0ZC4KLTAwMUE5NSAgICAgKGJhc2UgMTYpCQlIaXNlbnNlIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBUZWNobm9saWd5IENvLixMdGQuCi0JCQkJMTEsSmlhbmdYaSBSb2FkLAotCQkJCVFpbmdEYW8gU2hhbkRvbmcgMjY2MDcxCi0JCQkJQ0hJTkEKLQotMDAtMUEtOTYgICAoaGV4KQkJRUNMRVIgUy5BLgotMDAxQTk2ICAgICAoYmFzZSAxNikJCUVDTEVSIFMuQS4KLQkJCQlNb3RvcnMgMTY2LTE2OAotCQkJCUJhcmNlbG9uYSAgMDgwMzgKLQkJCQlTUEFJTgotCi0wMC0xQS05NyAgIChoZXgpCQlmaXRpdmlzaW9uIHRlY2hub2xvZ3kgSW5jLgotMDAxQTk3ICAgICAoYmFzZSAxNikJCWZpdGl2aXNpb24gdGVjaG5vbG9neSBJbmMuCi0JCQkJOEYsIE5vLiAzNTYsIFNlYy4gMSwgTmVpaHUgUmQKLQkJCQlOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS05OCAgIChoZXgpCQlBc290ZWwgQ29tbXVuaWNhdGlvbiBMaW1pdGVkIFRhaXdhbiBCcmFuY2gKLTAwMUE5OCAgICAgKGJhc2UgMTYpCQlBc290ZWwgQ29tbXVuaWNhdGlvbiBMaW1pdGVkIFRhaXdhbiBCcmFuY2gKLQkJCQkzRzE3LCBObzUsIEhzaW4gWWkgUm9hZCwgU2VjLiA1Ci0JCQkJVGFpcGVpICAxMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLTk5ICAgKGhleCkJCVNtYXJ0eSAoSFopIEluZm9ybWF0aW9uIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0wMDFBOTkgICAgIChiYXNlIDE2KQkJU21hcnR5IChIWikgSW5mb3JtYXRpb24gRWxlY3Ryb25pY3MgQ28uLCBMdGQKLQkJCQlZb25naHVhIEluZHVzdHJpYWwgRGlzdHJpY3QsSHVpc2hlbiBSb2FkLFpoZW5sb25nIFRvd24KLQkJCQlIdWlaaG91IEd1YW5nRG9uZyA1MTYyMjcKLQkJCQlDSElOQQotCi0wMC0xQS05QSAgIChoZXgpCQlTa3l3b3J0aCBEaWdpdGFsIHRlY2hub2xvZ3koc2hlbnpoZW4pY28ubHRkLgotMDAxQTlBICAgICAoYmFzZSAxNikJCVNreXdvcnRoIERpZ2l0YWwgdGVjaG5vbG9neShzaGVuemhlbiljby5sdGQuCi0JCQkJMTNGLEJsb2NrIEEsU2t5d29ydGggQnVpbGRpbmcsR2FveGluIEFWRS4xLlMsCi0JCQkJTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUEtOUIgICAoaGV4KQkJQURFQyAmIFBhcnRlciBBRwotMDAxQTlCICAgICAoYmFzZSAxNikJCUFERUMgJiBQYXJ0ZXIgQUcKLQkJCQlTdGFsZGVuYmFjaHN0cmFzc2UgMzAKLQkJCQlQZmFlZmZpa29uIFpIIDg4MDgKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xQS05QyAgIChoZXgpCQlSaWdodEhhbmQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDFBOUMgICAgIChiYXNlIDE2KQkJUmlnaHRIYW5kIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTY1NDUgTiBPbG1zdGVkIEF2ZW51ZQotCQkJCUNoaWNhZ28gSUwgNjA2MzEtMTQxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtOUQgICAoaGV4KQkJU2tpcHBlciBXaXJlbGVzcywgSW5jLgotMDAxQTlEICAgICAoYmFzZSAxNikJCVNraXBwZXIgV2lyZWxlc3MsIEluYy4KLQkJCQlTaGluanVrdS1TdW1pdG9tbyBCbGRnLiAyMEYKLQkJCQkyLTYtMSBOaXNoaS1TaGluanVrdQotCQkJCVNoaW5qdWt1IFRva3lvIDE2My0wMjIwCi0JCQkJSkFQQU4KLQotMDAtMUEtOUUgICAoaGV4KQkJSUNPTiBEaWdpdGFsIEludGVybmF0aW9uYWwgTGltaXRlZAotMDAxQTlFICAgICAoYmFzZSAxNikJCUlDT04gRGlnaXRhbCBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLQkJCQlTdWl0ZTIyMDksIDIyL0YuLCBTa3lMaW5lIFRvd2VyLAotCQkJCTM5IFdhbmcgS3dvbmcgUm9hZCwgS293bG9vbiBCYXkKLQkJCQlDSElOQQotCi0wMC0xQS05RiAgIChoZXgpCQlBLUxpbmsgRXVyb3BlIEx0ZAotMDAxQTlGICAgICAoYmFzZSAxNikJCUEtTGluayBFdXJvcGUgTHRkCi0JCQkJUC5PLkJveCAzCi0JCQkJRXNwb28gIEZJLTAyOTQxCi0JCQkJRklOTEFORAotCi0wMC0xQS1BMCAgIChoZXgpCQlEZWxsIEluYwotMDAxQUEwICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCAgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQTEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQUExICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQTIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQUEyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQTMgICAoaGV4KQkJREVMT1JNRQotMDAxQUEzICAgICAoYmFzZSAxNikJCURFTE9STUUKLQkJCQkyIERFTE9STUUgRFJJVkUKLQkJCQlZQVJNT1VUSCBNQUlORSAwNDA5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQTQgICAoaGV4KQkJRnV0dXJlIFVuaXZlcnNpdHktSGFrb2RhdGUKLTAwMUFBNCAgICAgKGJhc2UgMTYpCQlGdXR1cmUgVW5pdmVyc2l0eS1IYWtvZGF0ZQotCQkJCTExNi0yIEthbWVkYW5ha2Fuby1jaG8KLQkJCQlIYWtvZGF0ZSBIb2trYWlkbyAwNDEtODY1NQotCQkJCUpBUEFOCi0KLTAwLTFBLUE1ICAgKGhleCkJCUJSTiBQaG9lbml4Ci0wMDFBQTUgICAgIChiYXNlIDE2KQkJQlJOIFBob2VuaXgKLQkJCQkyNTAwIEF1Z3VzdGluZSBEcml2ZSwgU3VpdGUgMjAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUE2ICAgKGhleCkJCVRlbGVmdW5rZW4gUmFkaW8gQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEdtYkggJkNPLktHCi0wMDFBQTYgICAgIChiYXNlIDE2KQkJVGVsZWZ1bmtlbiBSYWRpbyBDb21tdW5pY2F0aW9uIFN5c3RlbXMgR21iSCAmQ08uS0cKLQkJCQlFYmVyaGFyZC1GaW5ja2gtU3RyYXNzZSA1NQotCQkJCVVsbSBCYWRlbi1Xw7xydHRlbWJlcmcgODkwNzUKLQkJCQlHRVJNQU5ZCi0KLTAwLTFBLUE3ICAgKGhleCkJCVRvcmlhbiBXaXJlbGVzcwotMDAxQUE3ICAgICAoYmFzZSAxNikJCVRvcmlhbiBXaXJlbGVzcwotCQkJCTIwNCBKb2huc3RvbiBTdHJlZXQKLQkJCQlDb2xsaW5nd29vZCBWaWN0b3JpYSAzMDY2Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFBLUE4ICAgKGhleCkJCU1hbWl5YSBEaWdpdGFsIEltYWdpbmcgQ28uLCBMdGQuCi0wMDFBQTggICAgIChiYXNlIDE2KQkJTWFtaXlhIERpZ2l0YWwgSW1hZ2luZyBDby4sIEx0ZC4KLQkJCQkyLTE0LTIyIFVlbm8KLQkJCQlUYWl0by1rdSBUb2t5byAxMTAtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTFBLUE5ICAgKGhleCkJCUZVSklBTiBTVEFSLU5FVCBDT01NVU5JQ0FUSU9OIENPLixMVEQKLTAwMUFBOSAgICAgKGJhc2UgMTYpCQlGVUpJQU4gU1RBUi1ORVQgQ09NTVVOSUNBVElPTiBDTy4sTFRECi0JCQkJMTktMjIjIEJ1aWxkaW5nLCBTdGFyLW5ldCBTY2llbmNlIFBsYXphLCBKdXl1YW56aG91LAotCQkJCTYxOCBKaW5zaGFuIFJvYWQsCi0JCQkJRlVaSE9VIEZVSklBTiAzNTAwMDIKLQkJCQlDSElOQQotCi0wMC0xQS1BQSAgIChoZXgpCQlBbmFsb2dpYyBDb3JwLgotMDAxQUFBICAgICAoYmFzZSAxNikJCUFuYWxvZ2ljIENvcnAuCi0JCQkJOCBDZW50ZW5uaWFsIERyaXZlCi0JCQkJUGVhYm9keSBNQSAwMTk2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQUIgICAoaGV4KQkJZVdpbmdzIHMuci5sLgotMDAxQUFCICAgICAoYmFzZSAxNikJCWVXaW5ncyBzLnIubC4KLQkJCQl2aWEgUy4gUXVhc2ltb2RvIDQ2Ci0JCQkJQ2FzdGVsIE1hZ2dpb3JlIEJvbG9nbmEgNDAwMTMKLQkJCQlJVEFMWQotCi0wMC0xQS1BQyAgIChoZXgpCQlDb3JlbGF0dXMgQUIKLTAwMUFBQyAgICAgKGJhc2UgMTYpCQlDb3JlbGF0dXMgQUIKLQkJCQlUZWduZXJnYXRhbiAzNwotCQkJCVN0b2NraG9sbSAgMTExNjEKLQkJCQlTV0VERU4KLQotMDAtMUEtQUQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUFBRCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUFFICAgKGhleCkJCVNhdmFudCBTeXN0ZW1zIExMQwotMDAxQUFFICAgICAoYmFzZSAxNikJCVNhdmFudCBTeXN0ZW1zIExMQwotCQkJCTc3MEEgTWFpbiBTdAotCQkJCU9zdGVydmlsbGUgTWFzc2FjaHVzZXR0cyAwMjY1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQUYgICAoaGV4KQkJQkxVU0VOUyBURUNITk9MT0dZCi0wMDFBQUYgICAgIChiYXNlIDE2KQkJQkxVU0VOUyBURUNITk9MT0dZCi0JCQkJRURJRklDSU8gQ05MLC0gQVYuCi0JCQkJRkVSTkFORE8gQ0FTQVMgTk9WT0EgLE7DgsK6IDM3QiAyw4LCugotCQkJCTE1NzA3IC0gU0FOVElBR08gREUgQ09NUE9TVEVMQSBBIENPUlXDg+KAmEEgCi0JCQkJU1BBSU4KLQotMDAtMUEtQjAgICAoaGV4KQkJU2lnbmFsIE5ldHdvcmtzIFB2dC4gTHRkLiwKLTAwMUFCMCAgICAgKGJhc2UgMTYpCQlTaWduYWwgTmV0d29ya3MgUHZ0LiBMdGQuLAotCQkJCU5vLjEyLCBLYWxwYXRhcnUgQXBhcnRtZW50cywKLQkJCQlSYWNlIENvdXJzZSBDcm9zcyBSb2FkLCBNYWRoYXZuYWdhciwKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDAwMQotCQkJCUlORElBCi0KLTAwLTFBLUIxICAgKGhleCkJCUFzaWEgUGFjaWZpYyBTYXRlbGxpdGUgSW5kdXN0cmllcyBDby4sIEx0ZC4KLTAwMUFCMSAgICAgKGJhc2UgMTYpCQlBc2lhIFBhY2lmaWMgU2F0ZWxsaXRlIEluZHVzdHJpZXMgQ28uLCBMdGQuCi0JCQkJOXRoIEZMLCBJVCBDYXN0bGUgMi1Eb25nLCAjNTUwLTEsIEdhc2FuLURvbmcsIEdldW1DaGVvbi1HdSwKLQkJCQlTZW91bCAgMTUzLTc2OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS1CMiAgIChoZXgpCQlDeWJlciBTb2x1dGlvbnMgSW5jLgotMDAxQUIyICAgICAoYmFzZSAxNikJCUN5YmVyIFNvbHV0aW9ucyBJbmMuCi0JCQkJNi02LTMsIE1pbmFtaSBZb3NoaW5hcmkKLQkJCQlBb2JhLWt1Ci0JCQkJU2VuZGFpIE1peWFnaS1rZW4gOTg5LTMyMDQKLQkJCQlKQVBBTgotCi0wMC0xQS1CMyAgIChoZXgpCQlWSVNJT05JVEUgSU5DLgotMDAxQUIzICAgICAoYmFzZSAxNikJCVZJU0lPTklURSBJTkMuCi0JCQkJIzcwNyBEYWVyeXVuZyBUZWNobm90b3duLTIgNTY5LTIxCi0JCQkJR2FzYW4tRG9uZyBHZXVtY2hlb24tR3UKLQkJCQlTZW91bCAgMTUzLTc3MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQS1CNCAgIChoZXgpCQlGRkVJIEx0ZC4KLTAwMUFCNCAgICAgKGJhc2UgMTYpCQlGRkVJIEx0ZC4KLQkJCQlCbG9jayAyLCAgRWF0b24gQ291cnQKLQkJCQlFYXRvbiBSb2FkCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRmb3Jkc2hpcmUgSFAyIDdEUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFBLUI1ICAgKGhleCkJCUhvbWUgTmV0d29yayBTeXN0ZW0KLTAwMUFCNSAgICAgKGJhc2UgMTYpCQlIb21lIE5ldHdvcmsgU3lzdGVtCi0JCQkJMTA3LCBIeXVuZGFpIEktVmFsbHkKLQkJCQlTYW5nZGFld29uIDEoaWwpLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjItNzE0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLUI2ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDFBQjYgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMDggV2lsZCBCYXNpbiBTdGUgMzUwCi0JCQkJQXVzdGluIFRYIDc4NzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1CNyAgIChoZXgpCQlFdGhvcyBOZXR3b3JrcyBMVEQuCi0wMDFBQjcgICAgIChiYXNlIDE2KQkJRXRob3MgTmV0d29ya3MgTFRELgotCQkJCTIgTWFza2l0IFN0LgotCQkJCUJ1aWxkaW5nIEQsIFBPQm94IDQwOTAKLQkJCQlIZXJ6bGlhICA0Njc2NgotCQkJCUlTUkFFTAotCi0wMC0xQS1COCAgIChoZXgpCQlBbnNlcmkgQ29ycG9yYXRpb24KLTAwMUFCOCAgICAgKGJhc2UgMTYpCQlBbnNlcmkgQ29ycG9yYXRpb24KLQkJCQkzNUUgSW5kdXN0cmlhbCBXYXkKLQkJCQlTdWl0ZSAxMDEKLQkJCQlSb2NoZXN0ZXIgTkggMDM4NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUI5ICAgKGhleCkJCVBNQwotMDAxQUI5ICAgICAoYmFzZSAxNikJCVBNQwotCQkJCTU2LCBhdmVudWUgUmFzcGFpbAotCQkJCVNhaW50IE1hdXIgdmFsIGRlIG1hcm5lIDk0MTAwCi0JCQkJRlJBTkNFCi0KLTAwLTFBLUJBICAgKGhleCkJCUNhdG9uIE92ZXJzZWFzIExpbWl0ZWQKLTAwMUFCQSAgICAgKGJhc2UgMTYpCQlDYXRvbiBPdmVyc2VhcyBMaW1pdGVkCi0JCQkJUm9vbSAxMDIsIE5vLiAxMDEsIExhbmUgOTEKLQkJCQlFLVNoYW4gUm9hZCwgUHVkb25nIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMDEyNwotCQkJCUNISU5BCi0KLTAwLTFBLUJCICAgKGhleCkJCUZvbnRhbCBUZWNobm9sb2d5IEluY29ycG9yYXRpb24KLTAwMUFCQiAgICAgKGJhc2UgMTYpCQlGb250YWwgVGVjaG5vbG9neSBJbmNvcnBvcmF0aW9uCi0JCQkJUm0uNTIyLCBCbGRnLiA1MiwgMTk1LCBTZWMuIDQsIENodW5nSHNpbmcgUmQuLCBDaHV0dW5nCi0JCQkJSHNpbmNodSAgMzEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS1CQyAgIChoZXgpCQlVNEVBIFRlY2hub2xvZ2llcyBMdGQKLTAwMUFCQyAgICAgKGJhc2UgMTYpCQlVNEVBIFRlY2hub2xvZ2llcyBMdGQKLQkJCQlDaXR5IFBvaW50Ci0JCQkJVGVtcGxlIEdhdGUKLQkJCQlCcmlzdG9sICBCUzEgNlBMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUEtQkQgICAoaGV4KQkJSW1wYXRpY2EgSW5jLgotMDAxQUJEICAgICAoYmFzZSAxNikJCUltcGF0aWNhIEluYy4KLQkJCQkyMDUtMTcyNSBTdC4gTGF1cmVudCBCbHZkLgotCQkJCU90dGF3YSBPTiBLMUcgM1Y0Ci0JCQkJQ0FOQURBCi0KLTAwLTFBLUJFICAgKGhleCkJCUNPTVBVVEVSIEhJLVRFQ0ggSU5DLgotMDAxQUJFICAgICAoYmFzZSAxNikJCUNPTVBVVEVSIEhJLVRFQ0ggSU5DLgotCQkJCUhpZ2FzaGlVZW5vMy0xOC03Ci0JCQkJVGFpdG9rdSBUb2t5byAxMTAtMDAxNQotCQkJCUpBUEFOCi0KLTAwLTFBLUJGICAgKGhleCkJCVRSVU1QRiBMYXNlciBNYXJraW5nIFN5c3RlbXMgQUcKLTAwMUFCRiAgICAgKGJhc2UgMTYpCQlUUlVNUEYgTGFzZXIgTWFya2luZyBTeXN0ZW1zIEFHCi0JCQkJQXVzc2VyZmVsZAotCQkJCUdydWVzY2ggR1IgNzIxNAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFBLUMwICAgKGhleCkJCUpPWUJJRU4gVEVDSE5PTE9HSUVTIENPLiwgTFRELgotMDAxQUMwICAgICAoYmFzZSAxNikJCUpPWUJJRU4gVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCTE4Ri0xLCBOTy43MDAsIFpIT05HWkhFTkcgUkQuLAotCQkJCVpIT05HSEUgQ0lUWSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS1DMSAgIChoZXgpCQkzQ29tIEx0ZAotMDAxQUMxICAgICAoYmFzZSAxNikJCTNDb20gTHRkCi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQS1DMiAgIChoZXgpCQlZRUMgQ28uLEx0ZC4KLTAwMUFDMiAgICAgKGJhc2UgMTYpCQlZRUMgQ28uLEx0ZC4KLQkJCQk1NDMtOSBUc3VydW1hCi0JCQkJTWFjaGlkYSBUb2t5byAxOTQtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTFBLUMzICAgKGhleCkJCVNjaWVudGlmaWMtQXRsYW50YSwgSW5jCi0wMDFBQzMgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYy1BdGxhbnRhLCBJbmMKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJQVRMIDEuMy40NzMKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1DNCAgIChoZXgpCQkyV2lyZSwgSW5jCi0wMDFBQzQgICAgIChiYXNlIDE2KQkJMldpcmUsIEluYwotCQkJCTE3MDQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUM1ICAgKGhleCkJCUJyZWFraW5nUG9pbnQgU3lzdGVtcywgSW5jLgotMDAxQUM1ICAgICAoYmFzZSAxNikJCUJyZWFraW5nUG9pbnQgU3lzdGVtcywgSW5jLgotCQkJCTM5MDAgTi4gQ2FwaXRhbCBvZiBUZXhhcyBId3kKLQkJCQlTdWl0ZSAxODAKLQkJCQlBdXN0aW4gVFggNzg3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUM2ICAgKGhleCkJCU1pY3JvIENvbnRyb2wgRGVzaWducwotMDAxQUM2ICAgICAoYmFzZSAxNikJCU1pY3JvIENvbnRyb2wgRGVzaWducwotCQkJCTE3NDkwIENhcmlib3UgRHIKLQkJCQlNb251bWVudCBDby4gODAxMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUM3ICAgKGhleCkJCVVOSVBPSU5UCi0wMDFBQzcgICAgIChiYXNlIDE2KQkJVU5JUE9JTlQKLQkJCQk3RiBHd2FuZ3N1bmcgQmxkIDgzMS00NyBZZW9rU2FtLURvbmcKLQkJCQlLYW5nbmFtLUd1IFNlb3VsIDEzNS05MzYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtQzggICAoaGV4KQkJSVNMIChJbnN0cnVtZW50YXRpb24gU2NpZW50aWZpcXVlIGRlIExhYm9yYXRvaXJlKQotMDAxQUM4ICAgICAoYmFzZSAxNikJCUlTTCAoSW5zdHJ1bWVudGF0aW9uIFNjaWVudGlmaXF1ZSBkZSBMYWJvcmF0b2lyZSkKLQkJCQlJbXBhc3NlIGRlcyA0IHZlbnRzCi0JCQkJUGFyYyBkJ0FjdGl2aXTDqSBkZSBsYSBNZXNuaWxsacOpcmUKLQkJCQlWRVJTT04gQ0FMVkFET1MgMTQ3OTAKLQkJCQlGUkFOQ0UKLQotMDAtMUEtQzkgICAoaGV4KQkJU1VaVUtFTiBDTy4sTFRECi0wMDFBQzkgICAgIChiYXNlIDE2KQkJU1VaVUtFTiBDTy4sTFRECi0JCQkJU1VaVUtFTiBUT01FSSBCTERHLgotCQkJCTI2IEhJTUVXQUtBLUNITyBNRUlUTy1LVQotCQkJCU5BR09ZQS1TSSBBSUNISS1LRU4gNDY1LTAwNDUKLQkJCQlKQVBBTgotCi0wMC0xQS1DQSAgIChoZXgpCQlUaWxlcmEgQ29ycG9yYXRpb24KLTAwMUFDQSAgICAgKGJhc2UgMTYpCQlUaWxlcmEgQ29ycG9yYXRpb24KLQkJCQkxOTAwIFdlc3QgUGFyayBEcml2ZQotCQkJCVN1aXRlIDI5MAotCQkJCVdlc3Rib3JvdWdoIE1BIDAxNTgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1DQiAgIChoZXgpCQlBdXRvY29tIFByb2R1Y3RzIEx0ZAotMDAxQUNCICAgICAoYmFzZSAxNikJCUF1dG9jb20gUHJvZHVjdHMgTHRkCi0JCQkJVW5pdCA0IFRhY2hicm9vayBMaW5rLCBUYWNoYnJvb2sgUGFyayBEcml2ZQotCQkJCVdhcndpY2sgV2Fyd2lja3NoaXJlIENWMzQgNlJICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUEtQ0MgICAoaGV4KQkJQ2VsZXN0aWFsIFNlbWljb25kdWN0b3IsIEx0ZAotMDAxQUNDICAgICAoYmFzZSAxNikJCUNlbGVzdGlhbCBTZW1pY29uZHVjdG9yLCBMdGQKLQkJCQlVZ2xhbmQgSG91c2UsIFNvdXRoIENodXJjaCBTdHJlZXQsCi0JCQkJIENheW1hbiBJc2xhbmRzCi0JCQkJR2VvcmdlIFRvd24sICBDYXltYW4gSXNsYW5kcyAwMDAwMAotCQkJCUNBWU1BTiBJU0xBTkRTCi0KLTAwLTFBLUNEICAgKGhleCkJCVRpZGVsIEVuZ2luZWVyaW5nIExQCi0wMDFBQ0QgICAgIChiYXNlIDE2KQkJVGlkZWwgRW5naW5lZXJpbmcgTFAKLQkJCQkyMDI1IFcgQmVsdCBMaW5lIFJvYWQgU3VpdGUgMTE0Ci0JCQkJQ2Fycm9sbHRvbiBUWCA3NTAxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtQ0UgICAoaGV4KQkJWVVQSVRFUlUgQ09SUE9SQVRJT04KLTAwMUFDRSAgICAgKGJhc2UgMTYpCQlZVVBJVEVSVSBDT1JQT1JBVElPTgotCQkJCTMsIERhbm5vdWUsIEl3YXp1LWNobywgT2themFraS1jaXR5LCBBaWNoaQotCQkJCU9rYXpha2kgQWljaGkgNDQ0LTIxNDQKLQkJCQlKQVBBTgotCi0wMC0xQS1DRiAgIChoZXgpCQlDLlQuIEVMRVRUUk9OSUNBCi0wMDFBQ0YgICAgIChiYXNlIDE2KQkJQy5ULiBFTEVUVFJPTklDQQotCQkJCVZpYSBDYWR1dGkgZGkgTmFzc2lyaXlhIDUgQgotCQkJCUJhcmJlcmlubyBWYWwgRCdFbHNhIChGSSkgIDUwMDIxCi0JCQkJSVRBTFkKLQotMDAtMUEtRDAgICAoaGV4KQkJQWxiaXMgVGVjaG5vbG9naWVzIEFHCi0wMDFBRDAgICAgIChiYXNlIDE2KQkJQWxiaXMgVGVjaG5vbG9naWVzIEFHCi0JCQkJQWxiaXNyaWVkZXJzdHJhc3NlIDE5OQotCQkJCUNIIDgwNDcgWnVlcmljaCAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xQS1EMSAgIChoZXgpCQlGQVJHTyBDTy4sIExURC4KLTAwMUFEMSAgICAgKGJhc2UgMTYpCQlGQVJHTyBDTy4sIExURC4KLQkJCQk0Ri4gS1lFTVlVTkcgQi9ECi0JCQkJMTY1LTQgU0FNU1VORy1ET05HLCBLQU5HTkFNLUtVCi0JCQkJU0VPVUwgIDEzNSA4ODUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtRDIgICAoaGV4KQkJRWxldHJvbmljYSBOaXRyb24gTHRkYQotMDAxQUQyICAgICAoYmFzZSAxNikJCUVsZXRyb25pY2EgTml0cm9uIEx0ZGEKLQkJCQlSdWEgRHIuIFVsaXNzZXMgRXNjb2JhciA0MTUKLQkJCQlKYXJkaW0gVmlzdGEgQWxlZ3JlCi0JCQkJQ2FtYW5kdWNhaWEgTWluYXMgR2VyYWlzIDM3NjUwLTAwMAotCQkJCUJSQVpJTAotCi0wMC0xQS1EMyAgIChoZXgpCQlWYW1wIEx0ZC4KLTAwMUFEMyAgICAgKGJhc2UgMTYpCQlWYW1wIEx0ZC4KLQkJCQlQTyBCb3ggODEwCi0JCQkJVmFhc2EgIDY1MTAxCi0JCQkJRklOTEFORAotCi0wMC0xQS1ENCAgIChoZXgpCQlpUE9YIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFBRDQgICAgIChiYXNlIDE2KQkJaVBPWCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTE1Ri0xLCBOby4xODYsIEppYW4tWWkgUmQuLCBDaHVuZy1IbyBDaXR5LAotCQkJCVRhaXBlaSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS1ENSAgIChoZXgpCQlLTUMgQ0hBSU4gSU5EVVNUUklBTCBDTy4sIExURC4KLTAwMUFENSAgICAgKGJhc2UgMTYpCQlLTUMgQ0hBSU4gSU5EVVNUUklBTCBDTy4sIExURC4KLQkJCQk3Ri04LCBOby4gODEsIFN1aS1MaWggUmQuLCBIc2luY2h1Ci0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQS1ENiAgIChoZXgpCQlKSUFHTlNVIEFFVE5BIEVMRUNUUklDIENPLixMVEQKLTAwMUFENiAgICAgKGJhc2UgMTYpCQlKSUFHTlNVIEFFVE5BIEVMRUNUUklDIENPLixMVEQKLQkJCQlOTy41NzEgUUlBTkhVIFJPQUQsUUlBTlFJQU8gSU5EVVNUUlkgUEFSSyxXVVhJLEpJQU5HU1UsQ0hJTkEKLQkJCQlXVVhJIEpJQU5HU1UgMjE0MTUxCi0JCQkJQ0hJTkEKLQotMDAtMUEtRDcgICAoaGV4KQkJQ2hyaXN0aWUgRGlnaXRhbCBTeXN0ZW1zLCBJbmMuCi0wMDFBRDcgICAgIChiYXNlIDE2KQkJQ2hyaXN0aWUgRGlnaXRhbCBTeXN0ZW1zLCBJbmMuCi0JCQkJODA5IFdlbGxpbmd0b24gU3RyZWV0IE5vcnRoCi0JCQkJS2l0Y2hlbmVyIE9udGFyaW8gTjJHIDRZNwotCQkJCUNBTkFEQQotCi0wMC0xQS1EOCAgIChoZXgpCQlBbHN0ZXJBZXJvIEdtYkgKLTAwMUFEOCAgICAgKGJhc2UgMTYpCQlBbHN0ZXJBZXJvIEdtYkgKLQkJCQlMw4PCvGJlY2tlciBTdHJhw4PFuGUgMQotCQkJCUhhbWJ1cmcgIDIyMDg3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS1EOSAgIChoZXgpCQlJbnRlcm5hdGlvbmFsIEJyb2FkYmFuZCBFbGVjdHJpYyBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAxQUQ5ICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgQnJvYWRiYW5kIEVsZWN0cmljIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjg1IER1bmxvcCBCbHZkLiBTVwotCQkJCVN1aXRlIEsKLQkJCQlIdW50c3ZpbGxlIEFMIDM1ODI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1EQSAgIChoZXgpCQlCaXotMi1NZSBJbmMuCi0wMDFBREEgICAgIChiYXNlIDE2KQkJQml6LTItTWUgSW5jLgotCQkJCTEzMDEgV2VzdCBFYXUgR2FsbGllIEJsdmQKLQkJCQlTdWl0ZSAxMDYKLQkJCQlNZWxib3VybmUgRkwgMzI5MzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLURCICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDFBREIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gSHd5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1EQyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQURDICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQS1ERCAgIChoZXgpCQlQZVBXYXZlIEx0ZAotMDAxQUREICAgICAoYmFzZSAxNikJCVBlUFdhdmUgTHRkCi0JCQkJMTcvRi4sIFBhcmsgQnVpbGRpbmcsCi0JCQkJNDc2IENhc3RsZSBQZWFrIFJvYWQKLQkJCQlDaGV1bmcgU2hhIFdhbiBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0xQS1ERSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxQURFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtREYgICAoaGV4KQkJSW50ZXJhY3RpdmV0diBQdHkgTGltaXRlZAotMDAxQURGICAgICAoYmFzZSAxNikJCUludGVyYWN0aXZldHYgUHR5IExpbWl0ZWQKLQkJCQlTdWl0ZSAxMCBMZXZlbCAzCi0JCQkJNTYgQm93bWFuIFN0cmVldAotCQkJCVB5cm1vbnQsIFN5ZG5leSBOU1cgMjAwOQotCQkJCUFVU1RSQUxJQQotCi0wMC0xQS1FMCAgIChoZXgpCQlNeXRob2xvZ3kgVGVjaCBFeHByZXNzIEluYy4KLTAwMUFFMCAgICAgKGJhc2UgMTYpCQlNeXRob2xvZ3kgVGVjaCBFeHByZXNzIEluYy4KLQkJCQkyRiwgTm8uMTAsIExhbmUgMjM1LCBCYW8gQ2hpYW8gcm9hZCwKLQkJCQlIc2luLVRpZW4uCi0JCQkJVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLUUxICAgKGhleCkJCUVER0UgQUNDRVNTIElOQwotMDAxQUUxICAgICAoYmFzZSAxNikJCUVER0UgQUNDRVNTIElOQwotCQkJCTU0NDAgQkVBVU1PTlQgQ0VOVEVSIEJMVkQKLQkJCQlTVUlURSA0OTAKLQkJCQlUQU1QQSBGTCAzMzYzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRTIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQUUyICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRTMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQUUzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRTQgICAoaGV4KQkJTWVkaWNpcyBUZWNobm9sb2dpZXMgQ29ycG9yYXRpb24KLTAwMUFFNCAgICAgKGJhc2UgMTYpCQlNZWRpY2lzIFRlY2hub2xvZ2llcyBDb3Jwb3JhdGlvbgotCQkJCTExODE4IE5vcnRoIENyZWVrIFBhcmt3YXkgTi4KLQkJCQlCb3RoZWxsIFdBIDk4MDExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1FNSAgIChoZXgpCQlNdm94IFRlY2hub2xvZ2llcyBJbmMuCi0wMDFBRTUgICAgIChiYXNlIDE2KQkJTXZveCBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTE5MDUwIFBydW5lcmlkZ2UgQXZlCi0JCQkJU3RlLiAxMjgKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUU2ICAgKGhleCkJCUF0bGFudGEgQWR2YW5jZWQgQ29tbXVuaWNhdGlvbnMgSG9sZGluZ3MgTGltaXRlZAotMDAxQUU2ICAgICAoYmFzZSAxNikJCUF0bGFudGEgQWR2YW5jZWQgQ29tbXVuaWNhdGlvbnMgSG9sZGluZ3MgTGltaXRlZAotCQkJCTE5MDAgV2VzdCBPYWsgQ2lyY2xlLCBNYXJpZXR0YQotCQkJCUF0bGFudGEgR2VvcmdpYSAzMDA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRTcgICAoaGV4KQkJQXp0ZWsgTmV0d29ya3MsIEluYy4KLTAwMUFFNyAgICAgKGJhc2UgMTYpCQlBenRlayBOZXR3b3JrcywgSW5jLgotCQkJCTI0NzcgNTV0aCBTdC4gIzIwMgotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUU4ICAgKGhleCkJCVNpZW1lbnMgRW50ZXJwcmlzZSBDb21tdW5pY2F0aW9ucyBHbWJIICYgQ28uIEtHCi0wMDFBRTggICAgIChiYXNlIDE2KQkJU2llbWVucyBFbnRlcnByaXNlIENvbW11bmljYXRpb25zIEdtYkggJiBDby4gS0cKLQkJCQlTRU4gU0MgTUMKLQkJCQlIb2ZtYW5uc3RyYXNzZSA1MQotCQkJCU11bmljaCA4MTM3OQotCQkJCUdFUk1BTlkKLQotMDAtMUEtRTkgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFBRTkgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUEtRUEgICAoaGV4KQkJUmFkaW8gVGVybWluYWwgU3lzdGVtcyBQdHkgTHRkCi0wMDFBRUEgICAgIChiYXNlIDE2KQkJUmFkaW8gVGVybWluYWwgU3lzdGVtcyBQdHkgTHRkCi0JCQkJMXN0IEZsb29yCi0JCQkJMTA4IERvaGVydHlzIFJvYWQKLQkJCQlMYXZlcnRvbiBOb3J0aCBWaWN0b3JpYSAzMDI2Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFBLUVCICAgKGhleCkJCUFsbGllZCBUZWxlc2lzIEsuSy4KLTAwMUFFQiAgICAgKGJhc2UgMTYpCQlBbGxpZWQgVGVsZXNpcyBLLksuCi0JCQkJTm8uMiBUT0MgQmxkZy4KLQkJCQk3LTIxLTExIE5pc2hpLUdvdGFuZGEKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMzEKLQkJCQlKQVBBTgotCi0wMC0xQS1FQyAgIChoZXgpCQlLZXVtYmVlIEVsZWN0cm9uaWNzIENvLixMdGQuCi0wMDFBRUMgICAgIChiYXNlIDE2KQkJS2V1bWJlZSBFbGVjdHJvbmljcyBDby4sTHRkLgotCQkJCTMtMjYsIEphbmdzYW5nLWRvbmcsIFNhbmdyb2stZ3UKLQkJCQlBbnNhbi1zaSBLeXVuZ2tpLWRvIDQyNi00MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtRUQgICAoaGV4KQkJSU5DT1RFQyBHbWJICi0wMDFBRUQgICAgIChiYXNlIDE2KQkJSU5DT1RFQyBHbWJICi0JCQkJQmxvbWVzdHJhc3NlIDI1IC0gMjcKLQkJCQlCaWVsZWZlbGQgTlJXIDMzNjA5Ci0JCQkJR0VSTUFOWQotCi0wMC0xQS1FRSAgIChoZXgpCQlTaGVuenRlY2ggTHRkCi0wMDFBRUUgICAgIChiYXNlIDE2KQkJU2hlbnp0ZWNoIEx0ZAotCQkJCTgxMywgOEYsIEhPTExZV09PRCBQTEFaQSwgNjEwIE5BVEhBTiBST0FELAotCQkJCUtPV0xPT04gIDg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0xQS1FRiAgIChoZXgpCQlMb29wY29tbSBUZWNobm9sb2d5LCBJbmMuCi0wMDFBRUYgICAgIChiYXNlIDE2KQkJTG9vcGNvbW0gVGVjaG5vbG9neSwgSW5jLgotCQkJCTE4Ri0xLCBOby4gMTUwLCBKaWFuIFlpIFJkLiwKLQkJCQlDaHVuZy1IbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFBLUYwICAgKGhleCkJCUFsY2F0ZWwgLSBJUEQKLTAwMUFGMCAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIC0gSVBECi0JCQkJNzAxIEUuIE1pZGRsZWZpZWxkIFJkLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUYxICAgKGhleCkJCUVtYmVkZGVkIEFydGlzdHMgQUIKLTAwMUFGMSAgICAgKGJhc2UgMTYpCQlFbWJlZGRlZCBBcnRpc3RzIEFCCi0JCQkJU29kcmEgUHJvbWVuYWRlbiA1MQotCQkJCU1hbG1vZSAgMjExIDM4Ci0JCQkJU1dFREVOCi0KLTAwLTFBLUYyICAgKGhleCkJCUR5bmF2aXNpb25zIFNjaHdlaXogQUcKLTAwMUFGMiAgICAgKGJhc2UgMTYpCQlEeW5hdmlzaW9ucyBTY2h3ZWl6IEFHCi0JCQkJRnJlaXNpbmdlciBMYW5kc3RyYXNzZSAyMQotCQkJCUQtODA5MzkgTXVlbmNoZW4gCi0JCQkJR0VSTUFOWQotCi0wMC0xQS1GMyAgIChoZXgpCQlTYW15b3VuZyBFbGVjdHJvbmljcwotMDAxQUYzICAgICAoYmFzZSAxNikJCVNhbXlvdW5nIEVsZWN0cm9uaWNzCi0JCQkJMTQ2LTEsIHNhbmdkYWV3b24tZG9uZywgam9vbmd3b24tZ3UKLQkJCQlzdW5nbmFtLXNoaSBHeXVuZ2dpLWRvIDQ2Mi04MDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUEtRjQgICAoaGV4KQkJSGFuZHJlYW1uZXQKLTAwMUFGNCAgICAgKGJhc2UgMTYpCQlIYW5kcmVhbW5ldAotCQkJCSMxMjA5IE1hcmlvVG93ZXIsIDIyMi0xMgotCQkJCUd1cm8tRG9uZywgR3Vyby1HdQotCQkJCVNlb3VsICAxNTItODQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLUY1ICAgKGhleCkJCVBFTlRBT05FLiBDTy4sIExURC4KLTAwMUFGNSAgICAgKGJhc2UgMTYpCQlQRU5UQU9ORS4gQ08uLCBMVEQuCi0JCQkJSHlvIENoYW5nIEJsZGcsIDNGLCAxMDEzLTYsIElua3llLWRvbmcgUGFsZGFsLUd1LAotCQkJCVN1d29uIENpdHkgR3l1bmdnaS1EbyA0MjItODMzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFBLUY2ICAgKGhleCkJCVdvdmVuIFN5c3RlbXMsIEluYy4KLTAwMUFGNiAgICAgKGJhc2UgMTYpCQlXb3ZlbiBTeXN0ZW1zLCBJbmMuCi0JCQkJMjQ1NSBBdWd1c3RpbmUgRHJpdmUKLQkJCQlTdWl0ZSAyMTEKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRjcgICAoaGV4KQkJZGF0YXNjaGFsdCBlK2EgR21iSAotMDAxQUY3ICAgICAoYmFzZSAxNikJCWRhdGFzY2hhbHQgZSthIEdtYkgKLQkJCQlBbiBkZXIgSMO8bHNob3JzdCA3LTkKLQkJCQlMw7xiZWNrICAyMzU2OAotCQkJCUdFUk1BTlkKLQotMDAtMUEtRjggICAoaGV4KQkJQ29wbGV5IENvbnRyb2xzIENvcnBvcmF0aW9uCi0wMDFBRjggICAgIChiYXNlIDE2KQkJQ29wbGV5IENvbnRyb2xzIENvcnBvcmF0aW9uCi0JCQkJMjAgRGFuIFJvYWQKLQkJCQlDYW50b24gTUEgMDIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUY5ICAgKGhleCkJCUFlcm9WSXJvbm1lbnQgKEFWIEluYykKLTAwMUFGOSAgICAgKGJhc2UgMTYpCQlBZXJvVklyb25tZW50IChBViBJbmMpCi0JCQkJNDY4NSBJbmR1c3RyaWFsIFN0Ci0JCQkJUE8gQTE4MjcxCi0JCQkJU2ltaSBWYWxsZXkgQ0EgOTMwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUZBICAgKGhleCkJCVdlbGNoIEFsbHluLCBJbmMuCi0wMDFBRkEgICAgIChiYXNlIDE2KQkJV2VsY2ggQWxseW4sIEluYy4KLQkJCQk0NjE5IEpvcmRhbiBSb2FkCi0JCQkJUE8gQm94IDE4NwotCQkJCVNrYW5lYXRlbGVzIEZhbGxzIE5ZIDEzMTUzLTAxODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFBLUZCICAgKGhleCkJCUpvYnkgSW5jLgotMDAxQUZCICAgICAoYmFzZSAxNikJCUpvYnkgSW5jLgotCQkJCTE1MzUgTWlzc2lvbiBTdC4KLQkJCQlGbG9vciAyCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUEtRkMgICAoaGV4KQkJTW9kdXNMaW5rIENvcnBvcmF0aW9uCi0wMDFBRkMgICAgIChiYXNlIDE2KQkJTW9kdXNMaW5rIENvcnBvcmF0aW9uCi0JCQkJMjkwNSBQcmVzdG9ud29vZCBEcml2ZQotCQkJCVBsYW5vIFRleGFzIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQS1GRCAgIChoZXgpCQlFVk9MSVMKLTAwMUFGRCAgICAgKGJhc2UgMTYpCQlFVk9MSVMKLQkJCQkyOSBhdmVudWUgZGUgbGEgZm9udGFpbmUKLQkJCQlaSSBBbmdlcnMgYmVhdWNvdXplCi0JCQkJQmVhdWNvdXplICA0OTA3MAotCQkJCUZSQU5DRQotCi0wMC0xQS1GRSAgIChoZXgpCQlTT0ZBQ1JFQUwKLTAwMUFGRSAgICAgKGJhc2UgMTYpCQlTT0ZBQ1JFQUwKLQkJCQkxNDkgYXZlbnVlIGR1IE1BSU5FCi0JCQkJUEFSSVMgUmVnaW9uIFBhcmlzaWVubmUgNzUwMTQKLQkJCQlGUkFOQ0UKLQotMDAtMUEtRkYgICAoaGV4KQkJV2l6eW91bmcgVGVjaC4KLTAwMUFGRiAgICAgKGJhc2UgMTYpCQlXaXp5b3VuZyBUZWNoLgotCQkJCTlGLCBOby4gMjUsIFNlYy4gMSwgTmFuamluZyBFLiBSZC4KLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItMDAgICAoaGV4KQkJTmVvcG9zdCBUZWNobm9sb2dpZXMKLTAwMUIwMCAgICAgKGJhc2UgMTYpCQlOZW9wb3N0IFRlY2hub2xvZ2llcwotCQkJCTExMyBydWUgSmVhbi1NYXJpbiBOYXVkaW4KLQkJCQlCYWduZXV4ICA5MjIyMAotCQkJCUZSQU5DRQotCi0wMC0xQi0wMSAgIChoZXgpCQlBcHBsaWVkIFJhZGlvIFRlY2hub2xvZ2llcwotMDAxQjAxICAgICAoYmFzZSAxNikJCUFwcGxpZWQgUmFkaW8gVGVjaG5vbG9naWVzCi0JCQkJMTEyNCBTb3V0aCBTZXJ2aWNlIFJvYWQgV2VzdAotCQkJCU9ha3ZpbGxlIE9udGFyaW8gTDZMIDVUNwotCQkJCUNBTkFEQQotCi0wMC0xQi0wMiAgIChoZXgpCQlFRCBDby5MdGQKLTAwMUIwMiAgICAgKGJhc2UgMTYpCQlFRCBDby5MdGQKLQkJCQk1MTctMTUgU2FuZ0RhZVdvbi1Eb25nCi0JCQkJU2VvbmdOYW0tQ2l0eSBHeWVvbmdHaS1EbyA0NjItODA2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTAzICAgKGhleCkJCUFjdGlvbiBUZWNobm9sb2d5IChTWikgQ28uLCBMdGQKLTAwMUIwMyAgICAgKGJhc2UgMTYpCQlBY3Rpb24gVGVjaG5vbG9neSAoU1opIENvLiwgTHRkCi0JCQkJQWN0aW9uIFRlY2hub2xvZ3kgQnVpbGRpbmcgQmFveXVhbiBSb2FkLCBYaXhpYW5nLCBCYW8nYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAyCi0JCQkJQ0hJTkEKLQotMDAtMUItMDQgICAoaGV4KQkJQWZmaW5pdHkgSW50ZXJuYXRpb25hbCBTLnAuYQotMDAxQjA0ICAgICAoYmFzZSAxNikJCUFmZmluaXR5IEludGVybmF0aW9uYWwgUy5wLmEKLQkJCQlDLnNvIFNhdm9uYSA1MQotCQkJCVZpbGxhc3RlbGxvbmUgVG9yaW5vIEkxMDAyOQotCQkJCUlUQUxZCi0KLTAwLTFCLTA1ICAgKGhleCkJCVlNQyBBRwotMDAxQjA1ICAgICAoYmFzZSAxNikJCVlNQyBBRwotCQkJCVNvbm5lbnN0cmFzc2UgNAotCQkJCUtyZXV6bGluZ2VuIFRodXJnYXUgODI4MAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFCLTA2ICAgKGhleCkJCUF0ZWxpZXJzIFIuIExBVU1PTklFUgotMDAxQjA2ICAgICAoYmFzZSAxNikJCUF0ZWxpZXJzIFIuIExBVU1PTklFUgotCQkJCTExLCBydWUgZHUgQ2hlbml2YWwKLQkJCQlCUCAxCi0JCQkJTmVzbGVzIGxhIFZhbGzDqWUgVmFsIGQnT2lzZSA5NTY5MAotCQkJCUZSQU5DRQotCi0wMC0xQi0wNyAgIChoZXgpCQlNZW5kb2Npbm8gU29mdHdhcmUKLTAwMUIwNyAgICAgKGJhc2UgMTYpCQlNZW5kb2Npbm8gU29mdHdhcmUKLQkJCQk0NzAwMSBCZW5lY2lhIFN0LgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTA4ICAgKGhleCkJCURhbmZvc3MgRHJpdmVzIEEvUwotMDAxQjA4ICAgICAoYmFzZSAxNikJCURhbmZvc3MgRHJpdmVzIEEvUwotCQkJCVVsc25hZXMgMQotCQkJCUdyYWFzdGVuIDYzMDAgCi0JCQkJREVOTUFSSwotCi0wMC0xQi0wOSAgIChoZXgpCQlNYXRyaXggVGVsZWNvbSBQdnQuIEx0ZC4KLTAwMUIwOSAgICAgKGJhc2UgMTYpCQlNYXRyaXggVGVsZWNvbSBQdnQuIEx0ZC4KLQkJCQkzOTQsIEdJREMsIE1ha2FycHVyYSwKLQkJCQlWYWRvZGFyYSBHdWphcmF0IDM5MDAxMAotCQkJCUlORElBCi0KLTAwLTFCLTBBICAgKGhleCkJCUludGVsbGlnZW50IERpc3RyaWJ1dGVkIENvbnRyb2xzIEx0ZAotMDAxQjBBICAgICAoYmFzZSAxNikJCUludGVsbGlnZW50IERpc3RyaWJ1dGVkIENvbnRyb2xzIEx0ZAotCQkJCUtleW5lcyBIb3VzZSwgQ2hlc3RlciBQYXJrCi0JCQkJQWxmcmV0b24gUm9hZAotCQkJCURlcmJ5IERlcmJ5c2hpcmUgREUyMSA0QVMKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi0wQiAgIChoZXgpCQlQaGlkZ2V0cyBJbmMuCi0wMDFCMEIgICAgIChiYXNlIDE2KQkJUGhpZGdldHMgSW5jLgotCQkJCTI3MTVBIDE2QSBTdHJlZXQgTi5XLgotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMk0gM1I3Ci0JCQkJQ0FOQURBCi0KLTAwLTFCLTBDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUIwQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTBEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUIwRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTBFICAgKGhleCkJCUlub1RlYyBHbWJIIE9yZ2FuaXNhdGlvbnNzeXN0ZW1lCi0wMDFCMEUgICAgIChiYXNlIDE2KQkJSW5vVGVjIEdtYkggT3JnYW5pc2F0aW9uc3N5c3RlbWUKLQkJCQlCaWVkcmljaHN0cmFzc2UgMTEKLQkJCQlXb2VsZmVyc2hlaW0gSGVzc2VuIEQtNjEyMDAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLTBGICAgKGhleCkJCVBldHJhdGVjCi0wMDFCMEYgICAgIChiYXNlIDE2KQkJUGV0cmF0ZWMKLQkJCQlEZXJlY2ggSGEtU2hhcm9uIDEyCi0JCQkJS2ZhciBTYWJhIFNoYXJvbiA0NDI3MQotCQkJCUlTUkFFTAotCi0wMC0xQi0xMCAgIChoZXgpCQlTaGVuWmhlbiBLYW5nIEh1aSBUZWNobm9sb2d5IENvLixsdGQKLTAwMUIxMCAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBLYW5nIEh1aSBUZWNobm9sb2d5IENvLixsdGQKLQkJCQlDaGluYSAgR3VhbmdEb25nCi0JCQkJVHdvIHMsZmxvb3IgQmFvQW4gRGlzdHJpY3QgTG9uZ0h1YQotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMDkKLQkJCQlDSElOQQotCi0wMC0xQi0xMSAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMUIxMSAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOTy4yODksIFNpbmh1IDNyZCBSZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QsIFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItMTIgICAoaGV4KQkJQXBwcmlvbgotMDAxQjEyICAgICAoYmFzZSAxNikJCUFwcHJpb24KLQkJCQlOYXNhIEFtZXMgUmVyZWFyY2ggQ2VudGVyCi0JCQkJUC5PLiBCb3ggOTUgQnVpbGRpbmcgMTkgU3VpdGUgMTAwMAotCQkJCU1vZmZldHQgRmllbGQgQ2FsaWZvcm5pYSA5NDAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMTMgICAoaGV4KQkJSWNyb24gVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uCi0wMDFCMTMgICAgIChiYXNlIDE2KQkJSWNyb24gVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uCi0JCQkJMjIxIC0gNDY2NCBMb3VnaGVlZCBIaWdod2F5Ci0JCQkJQnVybmFieSBCQyBWNUMgNVQ1Ci0JCQkJQ0FOQURBCi0KLTAwLTFCLTE0ICAgKGhleCkJCUNhcmV4IExpZ2h0aW5nIEVxdWlwbWVudCBGYWN0b3J5Ci0wMDFCMTQgICAgIChiYXNlIDE2KQkJQ2FyZXggTGlnaHRpbmcgRXF1aXBtZW50IEZhY3RvcnkKLQkJCQk1MCBDaGFuZyBUYW5nIFJkLiwgWWFuIFRpYW4gRGlzdHJpY3QsCi0JCQkJRnVuZ2tvbmcsIERvbmdHdWFuCi0JCQkJR3Vhbmdkb25nIHByb3ZpbmNlIAotCQkJCUNISU5BCi0KLTAwLTFCLTE1ICAgKGhleCkJCVZveHRlbCwgSW5jLgotMDAxQjE1ICAgICAoYmFzZSAxNikJCVZveHRlbCwgSW5jLgotCQkJCTEyNzI1IFNXIE1pbGxpa2FuIFdheQotCQkJCVN1aXRlIDIzMAotCQkJCUJlYXZlcnRvbiBPUiA5NzAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMTYgICAoaGV4KQkJQ2VsdHJvIEx0ZC4KLTAwMUIxNiAgICAgKGJhc2UgMTYpCQlDZWx0cm8gTHRkLgotCQkJCUF6b3JpbSBCdXNpbmVzcyBQYXJrCi0JCQkJOTQgRW0gSG1vc2hhdm90IFJvYWQuCi0JCQkJUGV0YWNoIFRpa3ZhICA0OTUyNwotCQkJCUlTUkFFTAotCi0wMC0xQi0xNyAgIChoZXgpCQlQYWxvIEFsdG8gTmV0d29ya3MKLTAwMUIxNyAgICAgKGJhc2UgMTYpCQlQYWxvIEFsdG8gTmV0d29ya3MKLQkJCQkyMTMwIEdvbGQgU3RyZWV0IFN1aXRlIDIwMAotCQkJCUFsdmlzbyBDQSA5NTAyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMTggICAoaGV4KQkJVHN1a2VuIEVsZWN0cmljIEluZC4gQ28uLEx0ZAotMDAxQjE4ICAgICAoYmFzZSAxNikJCVRzdWtlbiBFbGVjdHJpYyBJbmQuIENvLixMdGQKLQkJCQkzLTkgQWtlZG91cmkgSXp1bWkta3UKLQkJCQlTZW5kYWkgQ2l0eSBNaXlhZ2kgOTgxLTMyMDYKLQkJCQlKQVBBTgotCi0wMC0xQi0xOSAgIChoZXgpCQlJRUVFIEkmTSBTb2NpZXR5IFRDOSAKLTAwMUIxOSAgICAgKGJhc2UgMTYpCQlJRUVFIEkmTSBTb2NpZXR5IFRDOSAKLQkJCQkxMDAgQnVyZWF1IERyLiwgTWFpbCBTdG9wIDgyMjAKLQkJCQlHYWl0aGVyc2J1cmcgTUQgMjA4OTktODIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMUEgICAoaGV4KQkJZS10cmVlcyBKYXBhbiwgSW5jLgotMDAxQjFBICAgICAoYmFzZSAxNikJCWUtdHJlZXMgSmFwYW4sIEluYy4KLQkJCQlPb3dhZGEtY2hvIDItOS0yCi0JCQkJRGFpd2F1bnl1IGJsZGcgM0YKLQkJCQlIYWNoaW9qaS1jaXR5IFRva3lvIDE1MC0wMDAxCi0JCQkJSkFQQU4KLQotMDAtMUItMUIgICAoaGV4KQkJU2llbWVucyBBRywKLTAwMUIxQiAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHLAotCQkJCUkgSUEgU0MgRVdLIFBVMSwgT2VzdGxpY2hlIFJoZWluYnJ1ZWNrZW5zdHJhc3NlIDUwCi0JCQkJNzYxODEsIEthcmxzcnVoZSBCYWRlbiBXdWVydHRlbWJlcmcgCi0JCQkJR0VSTUFOWQotCi0wMC0xQi0xQyAgIChoZXgpCQlDb2hlcmVudAotMDAxQjFDICAgICAoYmFzZSAxNikJCUNvaGVyZW50Ci0JCQkJMTI4MCBCbHVlcyBIaWxscyBBdmUuCi0JCQkJQmxvb21maWVsZCBDVCAwNjAwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMUQgICAoaGV4KQkJUGhvZW5peCBJbnRlcm5hdGlvbmFsIENvLiwgTHRkCi0wMDFCMUQgICAgIChiYXNlIDE2KQkJUGhvZW5peCBJbnRlcm5hdGlvbmFsIENvLiwgTHRkCi0JCQkJMTFGLiBOby40Mi0xLCBTZWMuMSwgWmhvbmd5YW5nIE4uIFJkLiBCZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItMUUgICAoaGV4KQkJSEFSVCBDb21tdW5pY2F0aW9uIEZvdW5kYXRpb24KLTAwMUIxRSAgICAgKGJhc2UgMTYpCQlIQVJUIENvbW11bmljYXRpb24gRm91bmRhdGlvbgotCQkJCVNURSAxLTM1MAotCQkJCTkzOTAgUmVzZWFyY2ggQmx2ZAotCQkJCUF1c3RpbiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMUYgICAoaGV4KQkJREVMVEEgLSBEYW5pc2ggRWxlY3Ryb25pY3MsIExpZ2h0ICYgQWNvdXN0aWNzCi0wMDFCMUYgICAgIChiYXNlIDE2KQkJREVMVEEgLSBEYW5pc2ggRWxlY3Ryb25pY3MsIExpZ2h0ICYgQWNvdXN0aWNzCi0JCQkJVmVubGlnaGVkc3ZlaiA0Ci0JCQkJSMO4cnNob2xtICBESy0yOTcwCi0JCQkJREVOTUFSSwotCi0wMC0xQi0yMCAgIChoZXgpCQlUUGluZSBUZWNobm9sb2d5Ci0wMDFCMjAgICAgIChiYXNlIDE2KQkJVFBpbmUgVGVjaG5vbG9neQotCQkJCTNGLCBOby4xLCBBTi1JIFJkLAotCQkJCUtlZWx1bmcgIDExMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItMjEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFCMjEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xQi0yMiAgIChoZXgpCQlQYWxpdCBNaWNyb3N5c3RlbXMgKCBILksuKSBMdGQuCi0wMDFCMjIgICAgIChiYXNlIDE2KQkJUGFsaXQgTWljcm9zeXN0ZW1zICggSC5LLikgTHRkLgotCQkJCVJvb20gNC02LDExRixOYW4gRnVuZyBDb21tZXJjaWFsIENlbnRlcgotCQkJCTE5IExhbSBMb2sgUm9hZCxLb3dsb29uIEJheQotCQkJCUtvd2xvb24gIDExMQotCQkJCUhPTkcgS09ORwotCi0wMC0xQi0yMyAgIChoZXgpCQlTaW1wbGVDb21Ub29scwotMDAxQjIzICAgICAoYmFzZSAxNikJCVNpbXBsZUNvbVRvb2xzCi0JCQkJNTk4IEluZGlhbiBUcmFpbCBSZCBTLgotCQkJCVN1aXRlICMxMDIKLQkJCQlJbmRpYW4gVHJhaWwgTkMgMjgwNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTI0ICAgKGhleCkJCVF1YW50YSBDb21wdXRlciBJbmMuCi0wMDFCMjQgICAgIChiYXNlIDE2KQkJUXVhbnRhIENvbXB1dGVyIEluYy4KLQkJCQlOby4gMjExLCBXZW4gSHdhIDJuZCBSZC4sCi0JCQkJS3VlaSBTaGFuIEhzaWFuZyBUYW8gWXVhbiBTaGllbiAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTI1ICAgKGhleCkJCU5vcnRlbAotMDAxQjI1ICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xQi0yNiAgIChoZXgpCQlST04tVGVsZWNvbSBaQU8KLTAwMUIyNiAgICAgKGJhc2UgMTYpCQlST04tVGVsZWNvbSBaQU8KLQkJCQkxNSBBLCBaYXJlY2huYXlhIHN0LgotCQkJCVRyZWhnb3JueSBDaGVseWFiaW5zayByZWdpb24gNDU2MDgwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFCLTI3ICAgKGhleCkJCU1lcmxpbiBDU0kKLTAwMUIyNyAgICAgKGJhc2UgMTYpCQlNZXJsaW4gQ1NJCi0JCQkJMTI2MjUgRGFuaWVsc29uIENvdXJ0Ci0JCQkJU3VpdGUgMTA5Ci0JCQkJUG93YXkgQ0EgOTIwNjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTI4ICAgKGhleCkJCVBPTFlHT04sIEpTQwotMDAxQjI4ICAgICAoYmFzZSAxNikJCVBPTFlHT04sIEpTQwotCQkJCTM3LzEsIEthcmwgTWFyeCBzdHIuLCBmbG9vciA1Ci0JCQkJVWZhIEJhc2hrb3J0b3N0YW4gNDUwMDc3Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFCLTI5ICAgKGhleCkJCUF2YW50aXMuQ28uLEx0ZAotMDAxQjI5ICAgICAoYmFzZSAxNikJCUF2YW50aXMuQ28uLEx0ZAotCQkJCTUwMiBTRU9JTCBCTERHLgotCQkJCTE1NDMtOCBTRU9DSE8tRE9ORywgU0VPQ0hPLUdVCi0JCQkJU0VPVUwgIDEzMi04NzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItMkEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQjJBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMkIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQjJCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSi1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMkMgICAoaGV4KQkJQVRST04gZWxlY3Ryb25pYyBHbWJICi0wMDFCMkMgICAgIChiYXNlIDE2KQkJQVRST04gZWxlY3Ryb25pYyBHbWJICi0JCQkJQW0gWmllZ2Vsc3RhZGVsIDEyICsgMTQKLQkJCQlNYXJrdCBTY2h3YWJlbiAgODU1NzAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLTJEICAgKGhleCkJCU1lZC1FbmcgU3lzdGVtcyBJbmMuCi0wMDFCMkQgICAgIChiYXNlIDE2KQkJTWVkLUVuZyBTeXN0ZW1zIEluYy4KLQkJCQkyNDAwIFN0LiBMYXVyZW50IEJsdmQuCi0JCQkJT3R0YXdhIE9udGFyaW8gSzFHIDZDNAotCQkJCUNBTkFEQQotCi0wMC0xQi0yRSAgIChoZXgpCQlTaW5reW8gRWxlY3Ryb24gSW5jCi0wMDFCMkUgICAgIChiYXNlIDE2KQkJU2lua3lvIEVsZWN0cm9uIEluYwotCQkJCTMtMy0yMSBhc2FoaWdhb2thCi0JCQkJaGluby1jaXR5IFRva3lvIDE5MS0wMDY1Ci0JCQkJSkFQQU4KLQotMDAtMUItMkYgICAoaGV4KQkJTkVUR0VBUiBJbmMuCi0wMDFCMkYgICAgIChiYXNlIDE2KQkJTkVUR0VBUiBJbmMuCi0JCQkJNDUwMCBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItMzAgICAoaGV4KQkJU29saXRlY2ggSW5jLgotMDAxQjMwICAgICAoYmFzZSAxNikJCVNvbGl0ZWNoIEluYy4KLQkJCQkxODM4IE1haW4gU3RyZWV0Ci0JCQkJU3RldmVuc3ZpbGxlIE1EIDIxNjY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0zMSAgIChoZXgpCQlOZXVyYWwgSW1hZ2UuIENvLiBMdGQuCi0wMDFCMzEgICAgIChiYXNlIDE2KQkJTmV1cmFsIEltYWdlLiBDby4gTHRkLgotCQkJCUEzMDcsIENBU0ksIE9zYWthIFVuaXYuCi0JCQkJMi0xLCBZYW1hZGEtb2thCi0JCQkJU3VpdGEgY2l0eSBPc2FrYSA1NjUtMDg3MQotCQkJCUpBUEFOCi0KLTAwLTFCLTMyICAgKGhleCkJCVFMb2dpYyBDb3Jwb3JhdGlvbgotMDAxQjMyICAgICAoYmFzZSAxNikJCVFMb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTI2NjUwIEFsaXNvIFZpZWpvIFBhcmt3YXkKLQkJCQlBbGlzbyBWaWVqbyBDYWxpZm9ybmlhIDkyNjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0zMyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQjMzICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQi0zNCAgIChoZXgpCQlGb2N1cyBTeXN0ZW0gSW5jLgotMDAxQjM0ICAgICAoYmFzZSAxNikJCUZvY3VzIFN5c3RlbSBJbmMuCi0JCQkJMTlGLTEsIE5vLiAyNjYgV2VuIEh3YSAybmQgUmQuLCBTZWMuIDEKLQkJCQlMaW5rb3UgVGFpcGVpIENvdW50eSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTM1ICAgKGhleCkJCUNob25nUWluZyBKSU5PVSBTY2llbmNlICYgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDTy4sTHRkCi0wMDFCMzUgICAgIChiYXNlIDE2KQkJQ2hvbmdRaW5nIEpJTk9VIFNjaWVuY2UgJiBUZWNobm9sb2d5IERldmVsb3BtZW50IENPLixMdGQKLQkJCQlDaHVhbmd5ZXl1YW4gMjA4IyBLZXl1YW4gM3JkIFJvYWQgMTA2IwotCQkJCSBIaS1UZWNoIERldmVsb3BtZW50IFpvbmUKLQkJCQlDaG9uZ3FpbmcgIDQwMDAzMAotCQkJCUNISU5BCi0KLTAwLTFCLTM2ICAgKGhleCkJCVRzdWJhdGEgRW5naW5lZXJpbmcgQ28uLEx0ZC4gKEhlYWQgT2ZmaWNlKQotMDAxQjM2ICAgICAoYmFzZSAxNikJCVRzdWJhdGEgRW5naW5lZXJpbmcgQ28uLEx0ZC4gKEhlYWQgT2ZmaWNlKQotCQkJCUtveWFuYWdpIDEtMgotCQkJCVNlbmp1IGJsZC4KLQkJCQlJYmFyYWtpIE9zYWthIDU2Ny0wODUyCi0JCQkJSkFQQU4KLQotMDAtMUItMzcgICAoaGV4KQkJQ29tcHV0ZWMgT3kKLTAwMUIzNyAgICAgKGJhc2UgMTYpCQlDb21wdXRlYyBPeQotCQkJCUp1aG9sYW5rYXR1IDgKLQkJCQlQTCA2NgotCQkJCUtvdXZvbGEgS3ltaSA0NTIwMAotCQkJCUZJTkxBTkQKLQotMDAtMUItMzggICAoaGV4KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURC4KLTAwMUIzOCAgICAgKGJhc2UgMTYpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELgotCQkJCU5PLiAyNSwgVEhFIDNSRCBBVkVOVUUKLQkJCQlLVU5TSEFOIEVYUE9SVCBQUk9DRVNTSU5HIFpPTkUKLQkJCQlLVU5TSEFOIENJVFkgU1VaSE9VIFBST1ZJTkNFIDIxNTMwMAotCQkJCUNISU5BCi0KLTAwLTFCLTM5ICAgKGhleCkJCVByb3hpY2FzdAotMDAxQjM5ICAgICAoYmFzZSAxNikJCVByb3hpY2FzdAotCQkJCTMxMiBTdW5ueWZpZWxkIERyaXZlCi0JCQkJU3VpdGUgMjAwCi0JCQkJR2xlbnNoYXcgUEEgMTUxMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTNBICAgKGhleCkJCVNJTVMgQ29ycC4KLTAwMUIzQSAgICAgKGJhc2UgMTYpCQlTSU1TIENvcnAuCi0JCQkJUkFPTiBCbGRnLCA5RiwgOTItOCwgV29uaHlvcm8tMmdhLCBZb25nc2FuLWd1Ci0JCQkJU2VvdWwgIDE0MC04NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItM0IgICAoaGV4KQkJWWktUWluZyBDTy4sIExURAotMDAxQjNCICAgICAoYmFzZSAxNikJCVlpLVFpbmcgQ08uLCBMVEQKLQkJCQkzMTAgUk9PTSwxMkYKLQkJCQlOTy41LTEgSEVORyBZQU5HIFJELgotCQkJCVRBSVBFSSAgMTAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi0zQyAgIChoZXgpCQlTb2Z0d2FyZSBUZWNobm9sb2dpZXMgR3JvdXAsSW5jLgotMDAxQjNDICAgICAoYmFzZSAxNikJCVNvZnR3YXJlIFRlY2hub2xvZ2llcyBHcm91cCxJbmMuCi0JCQkJMTAzMzAgVy4gUm9vc2V2ZWx0IFJvYWQKLQkJCQlTdWl0ZSAzMTAKLQkJCQlXZXNjaGVzdGVyIElMIDYwMTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0zRCAgIChoZXgpCQlFdXJvVGVsIFNwYQotMDAxQjNEICAgICAoYmFzZSAxNikJCUV1cm9UZWwgU3BhCi0JCQkJdmlhbGUgTWFydGlyaSBkZWxsYSBMaWJlcnRhLDQKLQkJCQlMaXNzb25lIE1pbGFuIDIwMDM1Ci0JCQkJSVRBTFkKLQotMDAtMUItM0UgICAoaGV4KQkJQ3VydGlzLCBJbmMuCi0wMDFCM0UgICAgIChiYXNlIDE2KQkJQ3VydGlzLCBJbmMuCi0JCQkJMjQwNSBBbm5hcG9saXMgTGFuZQotCQkJCVN1aXRlIDIyMAotCQkJCU1pbm5lYXBvbGlzIE1OIDU1NDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi0zRiAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDFCM0YgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQuCi0JCQkJUm9zZXZpbGxlIENhbGlmb3JuaWEgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTQwICAgKGhleCkJCU5ldHdvcmsgQXV0b21hdGlvbiBteGMgQUIKLTAwMUI0MCAgICAgKGJhc2UgMTYpCQlOZXR3b3JrIEF1dG9tYXRpb24gbXhjIEFCCi0JCQkJQm94IDcyOTQKLQkJCQlTdG9ja2hvbG0gIDEwMzkwCi0JCQkJU1dFREVOCi0KLTAwLTFCLTQxICAgKGhleCkJCUdlbmVyYWwgSW5maW5pdHkgQ28uLEx0ZC4KLTAwMUI0MSAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIEluZmluaXR5IENvLixMdGQuCi0JCQkJM0YsTm8uMTY5LCBYaW5nLWFpIFJkLAotCQkJCU5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTQyICAgKGhleCkJCVdpc2UgJiBCbHVlCi0wMDFCNDIgICAgIChiYXNlIDE2KQkJV2lzZSAmIEJsdWUKLQkJCQkjNzE1LTMgQW55YW5nIE1lZ2F2YWxsZXkKLQkJCQk3OTkgR3dhbnlhbmctRG9uZywgRG9uZ2FuLUd1Ci0JCQkJQW55YW5nLVNpIEd5dW5nZ2ktRG8gNDMxLTc2NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi00MyAgIChoZXgpCQlCZWlqaW5nIERHIFRlbGVjb21tdW5pY2F0aW9ucyBlcXVpcG1lbnQgQ28uLEx0ZAotMDAxQjQzICAgICAoYmFzZSAxNikJCUJlaWppbmcgREcgVGVsZWNvbW11bmljYXRpb25zIGVxdWlwbWVudCBDby4sTHRkCi0JCQkJTm8uNSBKaWFuZ3RhaSBSb2FkLCBDaGFveWFuZyBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDAxNgotCQkJCUNISU5BCi0KLTAwLTFCLTQ0ICAgKGhleCkJCVNhbkRpc2sgQ29ycG9yYXRpb24KLTAwMUI0NCAgICAgKGJhc2UgMTYpCQlTYW5EaXNrIENvcnBvcmF0aW9uCi0JCQkJNjAxIE1jQ2FydGh5IEJvdWxldmFyZAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi00NSAgIChoZXgpCQlBQkIgQVMsIERpdmlzaW9uIEF1dG9tYXRpb24gUHJvZHVjdHMKLTAwMUI0NSAgICAgKGJhc2UgMTYpCQlBQkIgQVMsIERpdmlzaW9uIEF1dG9tYXRpb24gUHJvZHVjdHMKLQkJCQlCZXJnZXJ2ZWllbiAxMgotCQkJCVBPQiA5MAotCQkJCUJpbGxpbmdzdGFkICBOTy0xMzc1Ci0JCQkJTk9SV0FZCi0KLTAwLTFCLTQ2ICAgKGhleCkJCUJsdWVvbmUgVGVjaG5vbG9neSBDby4sTHRkCi0wMDFCNDYgICAgIChiYXNlIDE2KQkJQmx1ZW9uZSBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlSb29tIDMwOSwzIEZsb29yLCA0MDQgQnVpbGRpbmcsIFNoYW5nQnUgaW5kdXN0cmlhbAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMjgKLQkJCQlDSElOQQotCi0wMC0xQi00NyAgIChoZXgpCQlGdXRhcnF1ZSBBL1MKLTAwMUI0NyAgICAgKGJhc2UgMTYpCQlGdXRhcnF1ZSBBL1MKLQkJCQlBYWdhZGUgMTVCCi0JCQkJQWFsYm9yZyAgOTAwMAotCQkJCURFTk1BUksKLQotMDAtMUItNDggICAoaGV4KQkJU2hlbnpoZW4gTGFudGVjaCBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMUI0OCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBMYW50ZWNoIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTMwNiBSb29tLCBOYW5zaGFuIFdhdGVyIEJ1aWxkaW5nLAotCQkJCU5hbmhhaSBSb2FkLCBOYW5zaGFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1MgotCQkJCUNISU5BCi0KLTAwLTFCLTQ5ICAgKGhleCkJCVJvYmVydHMgUmFkaW8gbGltaXRlZAotMDAxQjQ5ICAgICAoYmFzZSAxNikJCVJvYmVydHMgUmFkaW8gbGltaXRlZAotCQkJCVN3aW50b24gV29ya3MKLQkJCQlUYWxib3QgUm9hZAotCQkJCU1leGJvcm91Z2ggU291dGggWW9ya3NoaXJlIFM2NCA4QUoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi00QSAgIChoZXgpCQlXJlcgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMUI0QSAgICAgKGJhc2UgMTYpCQlXJlcgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkyOTAzIEJ1bmtlciBIaWxsIExhbmUKLQkJCQlTdWl0ZSAxMDcKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNEIgICAoaGV4KQkJU0FOSU9OIENvLiwgTHRkLgotMDAxQjRCICAgICAoYmFzZSAxNikJCVNBTklPTiBDby4sIEx0ZC4KLQkJCQkjMjA4IEFDRVRFQ0hOTyBUT1dFUiwgNTUtNywgTVVMTEFFLURPTkcgM0dBLAotCQkJCVlFT05HREVVTkdQTy1HVSBTRU9VTCAxNTAtOTkyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTRDICAgKGhleCkJCVNpZ250ZWNoCi0wMDFCNEMgICAgIChiYXNlIDE2KQkJU2lnbnRlY2gKLQkJCQk2MDkgU2VvbmlsIFRlY2hub3BpYSA2MDkKLQkJCQlTYW5nZGFld29uIDFEb25nIEp1bmd3b24gZ3UKLQkJCQlTdW5nbmFtc2kgS3l1bmdnaWRvIDQ2Mi0xMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItNEQgICAoaGV4KQkJQXJlY2EgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxQjREICAgICAoYmFzZSAxNikJCUFyZWNhIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk4Ri4sIE5vLiAyMiwgTGFuZSAzNSwgSmktSHUgUmQuCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTRFICAgKGhleCkJCU5hdm1hbiBOZXcgWmVhbGFuZAotMDAxQjRFICAgICAoYmFzZSAxNikJCU5hdm1hbiBOZXcgWmVhbGFuZAotCQkJCTctMjEgS2F3YW5hIFN0cmVldAotCQkJCU5vcnRoY290ZQotCQkJCUF1Y2tsYW5kICAwNjI3Ci0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMUItNEYgICAoaGV4KQkJQXZheWEgSW5jLgotMDAxQjRGICAgICAoYmFzZSAxNikJCUF2YXlhIEluYy4KLQkJCQlSb29tIDFBIDMwOQotCQkJCTMwNyBNaWRkbGV0b3duIExpbmNyb2Z0IFJkCi0JCQkJTGluY3JvZnQgTkogMDc3MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTUwICAgKGhleCkJCU5pemhueSBOb3Znb3JvZCBGYWN0b3J5IG5hbWVkIGFmdGVyIE0uRnJ1bnplLCBGU1VFIChOWmlGKQotMDAxQjUwICAgICAoYmFzZSAxNikJCU5pemhueSBOb3Znb3JvZCBGYWN0b3J5IG5hbWVkIGFmdGVyIE0uRnJ1bnplLCBGU1VFIChOWmlGKQotCQkJCTE3NCwgR2FnYXJpbmEgQXZlbnVlCi0JCQkJTml6aG55IE5vdmdvcm9kICA2MDM5NTAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUItNTEgICAoaGV4KQkJVmVjdG9yIFRlY2hub2xvZ3kgQ29ycC4KLTAwMUI1MSAgICAgKGJhc2UgMTYpCQlWZWN0b3IgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLjcsIExhbmUxMiwgWWFqb3UgUm9hZC4KLQkJCQlUdWNoZW5nIFRhaXBlaSAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTUyICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxQjUyICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTYwMCBOLiBId3kgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTUzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUI1MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTU0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUI1NCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTU1ICAgKGhleCkJCUh1cmNvIEF1dG9tYXRpb24gTHRkLgotMDAxQjU1ICAgICAoYmFzZSAxNikJCUh1cmNvIEF1dG9tYXRpb24gTHRkLgotCQkJCTZGLCBOby4gMzEsIFNoaW50YWkgUmQuCi0JCQkJSnViZWkgQ2l0eSwgSHNpbmNodSBIc2llbiAzMDI0NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItNTYgICAoaGV4KQkJVGVodXRpIE5ldHdvcmtzIEx0ZC4KLTAwMUI1NiAgICAgKGJhc2UgMTYpCQlUZWh1dGkgTmV0d29ya3MgTHRkLgotCQkJCTEsIFNoZW5rYXIgU3QuCi0JCQkJSGVydHpsaXlhICA0NjEwNQotCQkJCUlTUkFFTAotCi0wMC0xQi01NyAgIChoZXgpCQlTRU1JTkRJQSBTWVNURU1TIFBSSVZBVEUgTElNSVRFRAotMDAxQjU3ICAgICAoYmFzZSAxNikJCVNFTUlORElBIFNZU1RFTVMgUFJJVkFURSBMSU1JVEVECi0JCQkJIzExMDYvOSxBLk0uSW5kdXN0cmlhbCBFc3RhdGUsR2FydmViaGFpIHBhbHlhLAotCQkJCTd0aCBNaWxlLCBIb3N1ciBSb2FkLAotCQkJCUJBTkdBTE9SRSBLQVJOQVRBS0EgNTYwMDY4Ci0JCQkJSU5ESUEKLQotMDAtMUItNTggICAoaGV4KQkJQUNFIENBRCBFbnRlcnByaXNlIENvLiwgTHRkLgotMDAxQjU4ICAgICAoYmFzZSAxNikJCUFDRSBDQUQgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQkyRiwgTm8uIDk0LCBCYW8gQ2h1bmcgUm9hZCwKLQkJCQlIc2luIFRpZW4gQ2l0eSwgVGFpcGVpIEhzaWVuIDIzMTQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi01OSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotMDAxQjU5ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTAwLTFCLTVBICAgKGhleCkJCUFwb2xsbyBJbWFnaW5nIFRlY2hub2xvZ2llcywgSW5jLgotMDAxQjVBICAgICAoYmFzZSAxNikJCUFwb2xsbyBJbWFnaW5nIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE4NTQ1IFJhbmdlbGFuZCBSZAotCQkJCVJhbW9uYSBDQSA5MjA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNUIgICAoaGV4KQkJMldpcmUsIEluYy4KLTAwMUI1QiAgICAgKGJhc2UgMTYpCQkyV2lyZSwgSW5jLgotCQkJCTE3MDQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTVDICAgKGhleCkJCUF6dXJldGVjIENvLiwgTHRkLgotMDAxQjVDICAgICAoYmFzZSAxNikJCUF6dXJldGVjIENvLiwgTHRkLgotCQkJCTNGLCBOby44LCBBbGxleSA4LCBMYW5lIDQ1LCBCYW94aW5nIFJkLiwKLQkJCQlYaW5kaWFuIENpdHkgVGFpcGVpIENvdW50eSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLTVEICAgKGhleCkJCVZvbG9saW5rIFB0eSBMdGQKLTAwMUI1RCAgICAgKGJhc2UgMTYpCQlWb2xvbGluayBQdHkgTHRkCi0JCQkJTGV2ZWwgMiwgNTQxIEJsYWNrYnVybiBSb2FkCi0JCQkJTW91bnQgV2F2ZXJsZXkgVmljdG9yaWEgMzE0OQotCQkJCUFVU1RSQUxJQQotCi0wMC0xQi01RSAgIChoZXgpCQlCUEwgTGltaXRlZAotMDAxQjVFICAgICAoYmFzZSAxNikJCUJQTCBMaW1pdGVkCi0JCQkJQlBMIFRvd2VycwotCQkJCTEzLCBLYXN0dXJiYSBSb2FkCi0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAwMDEKLQkJCQlJTkRJQQotCi0wMC0xQi01RiAgIChoZXgpCQlBbGllbiBUZWNobm9sb2d5Ci0wMDFCNUYgICAgIChiYXNlIDE2KQkJQWxpZW4gVGVjaG5vbG9neQotCQkJCTE4MjIwIEJ1dHRlcmZpZWxkIEJsdmQuCi0JCQkJTW9yZ2FuIEhpbGwgQ0EgOTUwMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTYwICAgKGhleCkJCU5BVklHT04gQUcKLTAwMUI2MCAgICAgKGJhc2UgMTYpCQlOQVZJR09OIEFHCi0JCQkJQmVybGluZXIgUGxhdHogMTEKLQkJCQlXdWVyemJ1cmcgQmF2YXJpYSA5NzA4MAotCQkJCUdFUk1BTlkKLQotMDAtMUItNjEgICAoaGV4KQkJRGlnaXRhbCBBY291c3RpY3MsIExMQwotMDAxQjYxICAgICAoYmFzZSAxNikJCURpZ2l0YWwgQWNvdXN0aWNzLCBMTEMKLQkJCQkzNyBTaGVyd29vZCBUZXJyYWNlCi0JCQkJTGFrZSBCbHVmZiBJTCA2MDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNjIgICAoaGV4KQkJSkhUIE9wdG9lbGVjdHJvbmljcyBDby4sTHRkLgotMDAxQjYyICAgICAoYmFzZSAxNikJCUpIVCBPcHRvZWxlY3Ryb25pY3MgQ28uLEx0ZC4KLQkJCQlIZXRpYW4gSW5kdXN0cmlhbCBQYXJrIDJyZCxIb3VqaWUgVG93biwgRG9uZ3VhbiwKLQkJCQlEb25nZ3VhbiBHdWFuZ2RvbmcgNTIzOTQ1Ci0JCQkJQ0hJTkEKLQotMDAtMUItNjMgICAoaGV4KQkJQXBwbGUgQ29tcHV0ZXIgSW5jLgotMDAxQjYzICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ2FsaWZvcm5pYSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNjQgICAoaGV4KQkJSXNhYWNMYW5kS29yZWEgQ28uLCBMdGQsCi0wMDFCNjQgICAgIChiYXNlIDE2KQkJSXNhYWNMYW5kS29yZWEgQ28uLCBMdGQsCi0JCQkJUm0gNjA4LCBIYW5nYW5nLUh5dW5kYWktSHllbCBCbGRnLiAyLTM2LAotCQkJCUhhbmdhbmdubyAyLWdhLCBZb25nc2FuLWd1LAotCQkJCVNlb3VsICAxNDAtODcxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTY1ICAgKGhleCkJCUNoaW5hIEdyaWRjb20gQ28uLCBMdGQKLTAwMUI2NSAgICAgKGJhc2UgMTYpCQlDaGluYSBHcmlkY29tIENvLiwgTHRkCi0JCQkJMjEvRiwgSHVhbmVuZyBCdWlsZGluZywgTm8uIDIwNjggU2hlbm5hbiBNYWluIFJvYWQKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgMDA4NgotCQkJCUNISU5BCi0KLTAwLTFCLTY2ICAgKGhleCkJCVNlbm5oZWlzZXIgZWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0wMDFCNjYgICAgIChiYXNlIDE2KQkJU2VubmhlaXNlciBlbGVjdHJvbmljIEdtYkggJiBDby4gS0cKLQkJCQlBbSBMYWJvciAxCi0JCQkJV2VkZW1hcmsgTmllZGVyc2FjaHNlbiAzMDkwMAotCQkJCUdFUk1BTlkKLQotMDAtMUItNjcgICAoaGV4KQkJVWJpcXVpc3lzIEx0ZAotMDAxQjY3ICAgICAoYmFzZSAxNikJCVViaXF1aXN5cyBMdGQKLQkJCQlUaGUgU3RlbGxhIEJ1aWxkaW5nCi0JCQkJV2luZG1pbGwgSGlsbCBCdXNpbmVzcyBQYXJrCi0JCQkJU3dpbmRvbiBXaWx0c2hpcmUgU041IDZOWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLTY4ICAgKGhleCkJCU1vZG5uZXQgQ28uLCBMdGQKLTAwMUI2OCAgICAgKGJhc2UgMTYpCQlNb2RubmV0IENvLiwgTHRkCi0JCQkJMjEzOSBEYWVteXVuZy1Eb25nIERJUCBtYWluIEIvRCBSb29tIzUwNSwgTmFtZ3UKLQkJCQlEYWVndSBLeXVuZ3NhbmcgQm9va2RvIDcwNS03MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItNjkgICAoaGV4KQkJRXF1YWxpbmUgQ29ycG9yYXRpb24KLTAwMUI2OSAgICAgKGJhc2UgMTYpCQlFcXVhbGluZSBDb3Jwb3JhdGlvbgotCQkJCTlGLCBOby4gMjM0LCBTZWN0aW9uIDQsIENoZW5nLURlIFJvYWQsCi0JCQkJVGFpcGVpIEhzaWVuIDI1MTYyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi02QSAgIChoZXgpCQlQb3dlcndhdmUgVGVjaG5vbG9naWVzIFN3ZWRlbiBBQgotMDAxQjZBICAgICAoYmFzZSAxNikJCVBvd2Vyd2F2ZSBUZWNobm9sb2dpZXMgU3dlZGVuIEFCCi0JCQkJMTY0IDI2Ci0JCQkJS2lzdGEKLQkJCQlLbmFycmFybsOkc2dhdGFuIDcsIEtpc3RhICAKLQkJCQlTV0VERU4KLQotMDAtMUItNkIgICAoaGV4KQkJU3d5eCBTb2x1dGlvbnMgQUcKLTAwMUI2QiAgICAgKGJhc2UgMTYpCQlTd3l4IFNvbHV0aW9ucyBBRwotCQkJCUpvc2VwaC12b24tRnJhdW5ob2Zlci1zdHIuMTNhCi0JCQkJRG9ydG11bmQgTlJXIDQ0MjI3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQi02QyAgIChoZXgpCQlMb29rWCBEaWdpdGFsIE1lZGlhIEJWCi0wMDFCNkMgICAgIChiYXNlIDE2KQkJTG9va1ggRGlnaXRhbCBNZWRpYSBCVgotCQkJCVJvZWtlbnZlbGR3ZWcgMQotCQkJCUJydW5zc3VtIExpbWJ1cmcgNjQ0NkRLCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUItNkQgICAoaGV4KQkJTWlkdHJvbmljcywgSW5jLgotMDAxQjZEICAgICAoYmFzZSAxNikJCU1pZHRyb25pY3MsIEluYy4KLQkJCQk3MDAwIE1vbnJvZSBTdC4KLQkJCQlXaWxsb3dicm9vayBJTCA2MDUyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNkUgICAoaGV4KQkJQW51ZSBTeXN0ZW1zLCBJbmMuCi0wMDFCNkUgICAgIChiYXNlIDE2KQkJQW51ZSBTeXN0ZW1zLCBJbmMuCi0JCQkJOTExMSBKb2xseXZpbGxlIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTZGICAgKGhleCkJCVRlbGV0cmFrIEx0ZAotMDAxQjZGICAgICAoYmFzZSAxNikJCVRlbGV0cmFrIEx0ZAotCQkJCTIxNCBLZXBhIFJvYWQKLQkJCQlNaXNzaW9uIEJheQotCQkJCUF1Y2tsYW5kICAxMDcxCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMUItNzAgICAoaGV4KQkJSVJJIFViaXRlcSwgSU5DLgotMDAxQjcwICAgICAoYmFzZSAxNikJCUlSSSBVYml0ZXEsIElOQy4KLQkJCQlTaGluanVrdS1Ob211cmEgQmxkZy4gNDdGLAotCQkJCTEtMjYtMiBOaXNoaS1zaGluanVrdSwKLQkJCQlTaGluanVrdS1rdSBUb2t5byAxNjMtMDU0NwotCQkJCUpBUEFOCi0KLTAwLTFCLTcxICAgKGhleCkJCVRlbHVsYXIgQ29ycC4KLTAwMUI3MSAgICAgKGJhc2UgMTYpCQlUZWx1bGFyIENvcnAuCi0JCQkJMzExIFNvdXRoIFdhY2tlciBEcml2ZQotCQkJCVN1aXRlIDQzMDAKLQkJCQlDaGljYWdvIElMIDYwNjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi03MiAgIChoZXgpCQlTaWNlcCBzLnAuYS4KLTAwMUI3MiAgICAgKGJhc2UgMTYpCQlTaWNlcCBzLnAuYS4KLQkJCQlWaWEgY2FsYWJyaWEsIDE0Ci0JCQkJQ2VydGFsZG8gIDUwMDUyCi0JCQkJSVRBTFkKLQotMDAtMUItNzMgICAoaGV4KQkJRFRMIEJyb2FkY2FzdCBMdGQKLTAwMUI3MyAgICAgKGJhc2UgMTYpCQlEVEwgQnJvYWRjYXN0IEx0ZAotCQkJCUpvaG5zb24ncyBFc3RhdGUKLQkJCQlTaWx2ZXJkYWxlIFJvYWQKLQkJCQlIQVlFUyBNaWRkbGVzZXggVUIzIDNCQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLTc0ICAgKGhleCkJCU1pcmFMaW5rIENvcnBvcmF0aW9uCi0wMDFCNzQgICAgIChiYXNlIDE2KQkJTWlyYUxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMTEgU1cgNXRoIEF2ZS4KLQkJCQlTdGUuIDEwMDAKLQkJCQlQb3J0bGFuZCBPUiA5NzIwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItNzUgICAoaGV4KQkJSHlwZXJtZWRpYSBTeXN0ZW1zCi0wMDFCNzUgICAgIChiYXNlIDE2KQkJSHlwZXJtZWRpYSBTeXN0ZW1zCi0JCQkJMkIgQmVyZ21hbiBTdC4KLQkJCQlSYWJiaW4gSW5kdXN0cmlhbCBQYXJrCi0JCQkJUmVob3ZvdCAgNzY3MDUKLQkJCQlJU1JBRUwKLQotMDAtMUItNzYgICAoaGV4KQkJUmlwY29kZSwgSW5jLgotMDAxQjc2ICAgICAoYmFzZSAxNikJCVJpcGNvZGUsIEluYy4KLQkJCQkxMTMwIEUuIEFyYXBhaG8gUm9hZAotCQkJCVN1aXRlIDQzNQotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTc3ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxQjc3ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUItNzggICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMUI3OCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJbXMwNDA4MDEKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi03OSAgIChoZXgpCQlGQUlWRUxFWSBUUkFOU1BPUlQKLTAwMUI3OSAgICAgKGJhc2UgMTYpCQlGQUlWRUxFWSBUUkFOU1BPUlQKLQkJCQlaSSBkdSBib2lzIGRlIHBsYW50ZQotCQkJCXJ1ZSBhbWVsaWEgZWFyaGFydAotCQkJCUxBIFZJTExFIEFVWCBEQU1FUyAgMzc3MDAKLQkJCQlGUkFOQ0UKLQotMDAtMUItN0EgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFCN0EgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUItN0IgICAoaGV4KQkJVGhlIFRpbnRvbWV0ZXIgTHRkCi0wMDFCN0IgICAgIChiYXNlIDE2KQkJVGhlIFRpbnRvbWV0ZXIgTHRkCi0JCQkJU29sYXIgV2F5Ci0JCQkJU29sc3RpY2UgUGFyawotCQkJCUFtZXNidXJ5IFdpbHRzaGlyZSBTUDQgN1NaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItN0MgICAoaGV4KQkJQSAmIFIgQ2FtYnJpZGdlCi0wMDFCN0MgICAgIChiYXNlIDE2KQkJQSAmIFIgQ2FtYnJpZGdlCi0JCQkJUGVtYnJva2UgQXZlbnVlCi0JCQkJV2F0ZXJiZWFjaAotCQkJCUNhbWJyaWRnZSBDQU1CUyBDQjI1IDlRUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLTdEICAgKGhleCkJCUNYUiBBbmRlcnNvbiBKYWNvYnNvbgotMDAxQjdEICAgICAoYmFzZSAxNikJCUNYUiBBbmRlcnNvbiBKYWNvYnNvbgotCQkJCVJ1ZSBkZSBsJ29ybmV0dGUKLQkJCQlBYm9uZGFudCAgMjg0MTAKLQkJCQlGUkFOQ0UKLQotMDAtMUItN0UgICAoaGV4KQkJQmVja21hbm4gR21iSAotMDAxQjdFICAgICAoYmFzZSAxNikJCUJlY2ttYW5uIEdtYkgKLQkJCQlCcmFuZHRzdHIuIDEKLQkJCQlIb2V2ZWxob2YgTlJXIDMzMTYxCi0JCQkJR0VSTUFOWQotCi0wMC0xQi03RiAgIChoZXgpCQlUTU4gVGVjaG5vbG9naWVzIFRlbGVjb211bmljYWNvZXMgTHRkYQotMDAxQjdGICAgICAoYmFzZSAxNikJCVRNTiBUZWNobm9sb2dpZXMgVGVsZWNvbXVuaWNhY29lcyBMdGRhCi0JCQkJUnVhIE5pbHphLCA0MjIKLQkJCQlTYW8gUGF1bG8gU1AgMDM2NTEtMTIwCi0JCQkJQlJBWklMCi0KLTAwLTFCLTgwICAgKGhleCkJCUxPUkQgQ29ycG9yYXRpb24KLTAwMUI4MCAgICAgKGJhc2UgMTYpCQlMT1JEIENvcnBvcmF0aW9uCi0JCQkJMjAwMCBXZXN0IEdyYW5kdmlldyBCbHZkCi0JCQkJRXJpZSBQYSAxNjUwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItODEgICAoaGV4KQkJREFUQVEgSW5zdHJ1bWVudHMsIEluYy4KLTAwMUI4MSAgICAgKGJhc2UgMTYpCQlEQVRBUSBJbnN0cnVtZW50cywgSW5jLgotCQkJCTI0MSBTcHJpbmdzaWRlIERyaXZlCi0JCQkJQWtyb24gT2hpbyA0NDMzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItODIgICAoaGV4KQkJVGFpd2FuIFNlbWljb25kdWN0b3IgQ28uLCBMdGQuCi0wMDFCODIgICAgIChiYXNlIDE2KQkJVGFpd2FuIFNlbWljb25kdWN0b3IgQ28uLCBMdGQuCi0JCQkJMTFGLCBOby4gMjA1LCBTZWMuIDMsIEJlaXNoaW4gUmQsCi0JCQkJU2hpbmRpYW4gVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItODMgICAoaGV4KQkJRmluc29mdCBMdGQKLTAwMUI4MyAgICAgKGJhc2UgMTYpCQlGaW5zb2Z0IEx0ZAotCQkJCTE2LTE4IEhhdHRvbiBHYXJkZW4KLQkJCQlMb25kb24gIEVDMU4gOEFUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItODQgICAoaGV4KQkJU2NhbiBFbmdpbmVlcmluZyBUZWxlY29tCi0wMDFCODQgICAgIChiYXNlIDE2KQkJU2NhbiBFbmdpbmVlcmluZyBUZWxlY29tCi0JCQkJU3ZvYm9keSBzdHIuIDc1Ci0JCQkJVm9yb25lemggIDM5NDAzMAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xQi04NSAgIChoZXgpCQlNQU4gRGllc2VsIFNFCi0wMDFCODUgICAgIChiYXNlIDE2KQkJTUFOIERpZXNlbCBTRQotCQkJCVRlZ2xob2xtc2dhZGUgNDEKLQkJCQlDb3BlbmhhZ2VuICAyNDUwCi0JCQkJREVOTUFSSwotCi0wMC0xQi04NiAgIChoZXgpCQlCb3NjaCBBY2Nlc3MgU3lzdGVtcyBHbWJICi0wMDFCODYgICAgIChiYXNlIDE2KQkJQm9zY2ggQWNjZXNzIFN5c3RlbXMgR21iSAotCQkJCUNoYXJsb3R0ZW5idXJnZXIgQWxsZWUgNTAgICAgICAgICAgICAKLQkJCQlBQUNIRU4gICAgRC01MjA2OCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLTg3ICAgKGhleCkJCURlZXBzb3VuZCBUZWNoLiBDby4sIEx0ZAotMDAxQjg3ICAgICAoYmFzZSAxNikJCURlZXBzb3VuZCBUZWNoLiBDby4sIEx0ZAotCQkJCTNGIE5vLiA1NzYgU2VjLiAxLCBNaW5zaGVuZyBOLiBSZC4sIEd1ZWlzaGFuIFRvd25zaGlwLAotCQkJCVRhb3l1YW4gIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItODggICAoaGV4KQkJRGl2aW5ldCBBY2Nlc3MgVGVjaG5vbG9naWVzIEx0ZAotMDAxQjg4ICAgICAoYmFzZSAxNikJCURpdmluZXQgQWNjZXNzIFRlY2hub2xvZ2llcyBMdGQKLQkJCQk0dGggRmxvb3IsIE1lZGlhIENlbnRlciwKLQkJCQlTYWthYWwgTmFnYXIsIEJhbmVyIFJvYWQKLQkJCQlQdW5lIE1haGFyYXNodHJhIDQxMTAwNwotCQkJCUlORElBCi0KLTAwLTFCLTg5ICAgKGhleCkJCUVNWkEgVmlzdWFsIFNlbnNlIEx0ZC4KLTAwMUI4OSAgICAgKGJhc2UgMTYpCQlFTVpBIFZpc3VhbCBTZW5zZSBMdGQuCi0JCQkJMjAgSGEndGEnYXMgU3QuLCBCZWl0aCBIYXBhbW9uCi0JCQkJc3VpdGUgMzkxCi0JCQkJS2ZhciBTYWJhICA0NDQyNQotCQkJCUlTUkFFTAotCi0wMC0xQi04QSAgIChoZXgpCQkyTSBFbGVjdHJvbmljIEEvUwotMDAxQjhBICAgICAoYmFzZSAxNikJCTJNIEVsZWN0cm9uaWMgQS9TCi0JCQkJTWFsZXJ2ZWogMTAKLQkJCQlUYWFzdHJ1cCAgMjYzMAotCQkJCURFTk1BUksKLQotMDAtMUItOEIgICAoaGV4KQkJTkVDIEFjY2Vzc1RlY2huaWNhLCBMdGQuCi0wMDFCOEIgICAgIChiYXNlIDE2KQkJTkVDIEFjY2Vzc1RlY2huaWNhLCBMdGQuCi0JCQkJODAwIFNoaW1vbWF0YQotCQkJCUtha2VnYXdhIFNoaXp1b2thIDQzNi04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUItOEMgICAoaGV4KQkJSk1pY3JvbiBUZWNobm9sb2d5IENvcnAuCi0wMDFCOEMgICAgIChiYXNlIDE2KQkJSk1pY3JvbiBUZWNobm9sb2d5IENvcnAuCi0JCQkJMUYsIE5vLjEzLCBJbm5vdmF0aW9uIFJvYWQgMQotCQkJCUhzaW5jaHUgU2NpZW5jZSBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi04RCAgIChoZXgpCQlFbGVjdHJvbmljIENvbXB1dGVyIFN5c3RlbXMsIEluYy4KLTAwMUI4RCAgICAgKGJhc2UgMTYpCQlFbGVjdHJvbmljIENvbXB1dGVyIFN5c3RlbXMsIEluYy4KLQkJCQk0MTggRG9uZWdhbCBEcml2ZQotCQkJCVRvd3NvbiBNRCAyMTI4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItOEUgICAoaGV4KQkJSHVsdSBTd2VkZW4gQUIKLTAwMUI4RSAgICAgKGJhc2UgMTYpCQlIdWx1IFN3ZWRlbiBBQgotCQkJCUJveCAxMjMyOCwgMTAyMjgKLQkJCQlLaXN0YSBTdG9ja2hvbG0gMTY0IDQwCi0JCQkJU1dFREVOCi0KLTAwLTFCLThGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUI4RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTkwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUI5MCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0otTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTkxICAgKGhleCkJCUVGS09OIEFHCi0wMDFCOTEgICAgIChiYXNlIDE2KQkJRUZLT04gQUcKLQkJCQlBbmRyaXR6ZXIgUmVpY2hzc3RyYXNzZSA2NgotCQkJCUdyYXogU3R5cmlhIDgwNDUKLQkJCQlBVVNUUklBCi0KLTAwLTFCLTkyICAgKGhleCkJCWwtYWNvdXN0aWNzCi0wMDFCOTIgICAgIChiYXNlIDE2KQkJbC1hY291c3RpY3MKLQkJCQlwYXJjIGRlIGxhIGZvbnRhaW5lIGRlIGpvdXZlbmNlCi0JCQkJbWFyY291c3NpcyBlc3Nvbm5lIDkxNDYyCi0JCQkJRlJBTkNFCi0KLTAwLTFCLTkzICAgKGhleCkJCUpDIERlY2F1eCBTQSBETlQKLTAwMUI5MyAgICAgKGJhc2UgMTYpCQlKQyBEZWNhdXggU0EgRE5UCi0JCQkJMjEgcnVlIGNsYXVkZSBCZXJuYXJkCi0JCQkJTUFVUkVQQVMgIDc4MzEwCi0JCQkJRlJBTkNFCi0KLTAwLTFCLTk0ICAgKGhleCkJCVQuRS5NLkEuIFMucC5BLgotMDAxQjk0ICAgICAoYmFzZSAxNikJCVQuRS5NLkEuIFMucC5BLgotCQkJCXZpYSBkZWxsYSBTY2llbnphIDIxIEEvQwotCQkJCUNhc3RlbG51b3ZvIFJhbmdvbmUgTW9kZW5hIDQxMDUxCi0JCQkJSVRBTFkKLQotMDAtMUItOTUgICAoaGV4KQkJVklERU8gU1lTVEVNUyBTUkwKLTAwMUI5NSAgICAgKGJhc2UgMTYpCQlWSURFTyBTWVNURU1TIFNSTAotCQkJCUxvYy4gR29yaXp6bywgMTYKLQkJCQkzMzAzMAotCQkJCUNBTUlOTyBBTCBUQUdMSUFNRU5UTyBVRCAKLQkJCQlJVEFMWQotCi0wMC0xQi05NiAgIChoZXgpCQlHZW5lcmFsIFNlbnNpbmcKLTAwMUI5NiAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIFNlbnNpbmcKLQkJCQkxMDggTGluY29sbiBTdC4KLQkJCQlCb3N0b24gTUEgMDIxMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTk3ICAgKGhleCkJCVZpb2xpbiBUZWNobm9sb2dpZXMKLTAwMUI5NyAgICAgKGJhc2UgMTYpCQlWaW9saW4gVGVjaG5vbG9naWVzCi0JCQkJMzMgV29vZCBBdmUgU291dGgKLQkJCQlJc2VsaW4gTkogMDg4MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLTk4ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDFCOTggICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUdVTUkgR3llb25nLUJ1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLTk5ICAgKGhleCkJCUtTIFN5c3RlbSBHbWJICi0wMDFCOTkgICAgIChiYXNlIDE2KQkJS1MgU3lzdGVtIEdtYkgKLQkJCQlBbGV4YW5kZXJzdHIuIDM3Ci0JCQkJTXVlbGhlaW0gTlJXIDQ1NDcyCi0JCQkJR0VSTUFOWQotCi0wMC0xQi05QSAgIChoZXgpCQlBcG9sbG8gRmlyZSBEZXRlY3RvcnMgTHRkCi0wMDFCOUEgICAgIChiYXNlIDE2KQkJQXBvbGxvIEZpcmUgRGV0ZWN0b3JzIEx0ZAotCQkJCTM2IEJyb29rc2lkZSBSb2FkCi0JCQkJSGF2YW50IEhhbXBzaGlyZSBQMDkgMUpSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItOUIgICAoaGV4KQkJSG9zZS1NY0Nhbm4gQ29tbXVuaWNhdGlvbnMKLTAwMUI5QiAgICAgKGJhc2UgMTYpCQlIb3NlLU1jQ2FubiBDb21tdW5pY2F0aW9ucwotCQkJCTEyNDEgV2VzdCBOZXdwb3J0IENlbnRlciBEcml2ZQotCQkJCURlZXJmaWVsZCBCZWFjaCBGTCAzMzQ0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItOUMgICAoaGV4KQkJU0FURUwgc3AuIHogby5vLgotMDAxQjlDICAgICAoYmFzZSAxNikJCVNBVEVMIHNwLiB6IG8uby4KLQkJCQlTY2h1YmVydGEgNzkKLQkJCQlHZGFuc2sgcG9tb3Jza2llIDgwLTE3MgotCQkJCVBPTEFORAotCi0wMC0xQi05RCAgIChoZXgpCQlOb3Z1cyBTZWN1cml0eSBTcC4geiBvLm8uCi0wMDFCOUQgICAgIChiYXNlIDE2KQkJTm92dXMgU2VjdXJpdHkgU3AuIHogby5vLgotCQkJCXVsLiBQdcKzYXdza2EgNDMxCi0JCQkJV2Fyc2F3IHdvai4gbWF6b3dpZWNraWUgMDItODAxCi0JCQkJUE9MQU5ECi0KLTAwLTFCLTlFICAgKGhleCkJCUFTS0VZICBDT01QVVRFUiAgQ09SUAotMDAxQjlFICAgICAoYmFzZSAxNikJCUFTS0VZICBDT01QVVRFUiAgQ09SUAotCQkJCTEwRixOTy4xMTksQ0hJRU5LQU5HIFJELAotCQkJCUNIVU5HLUhPLFRQSVBFSSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi05RiAgIChoZXgpCQlDYWx5cHRlY2ggUHR5IEx0ZAotMDAxQjlGICAgICAoYmFzZSAxNikJCUNhbHlwdGVjaCBQdHkgTHRkCi0JCQkJNS80ODYgTG93ZXIgSGVpZGVsYmVyZyBSb2FkCi0JCQkJSGVpZGVsYmVyZyBWaWN0b3JpYSAzMDg0Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFCLUEwICAgKGhleCkJCUF3b3gKLTAwMUJBMCAgICAgKGJhc2UgMTYpCQlBd294Ci0JCQkJOTMsIFBsYWNlIFBpZXJyZSBEdWhlbSwKLQkJCQlMZXMgQ2VudHVyaWVzCi0JCQkJMzQwMDAgTW9udHBlbGxpZXIgCi0JCQkJRlJBTkNFCi0KLTAwLTFCLUExICAgKGhleCkJCcOD4oCmbWljIEFCCi0wMDFCQTEgICAgIChiYXNlIDE2KQkJw4PigKZtaWMgQUIKLQkJCQlVcHBzYWxhIHNjaWVuY2UgcGFyawotCQkJCURhZyBIYW1tcnNrasODwrZsZHMgdsODwqRnIDUyIEIKLQkJCQlVcHBzYWxhICA3NTE4MwotCQkJCVNXRURFTgotCi0wMC0xQi1BMiAgIChoZXgpCQlJRFMgSW1hZ2luZyBEZXZlbG9wbWVudCBTeXN0ZW1zIEdtYkgKLTAwMUJBMiAgICAgKGJhc2UgMTYpCQlJRFMgSW1hZ2luZyBEZXZlbG9wbWVudCBTeXN0ZW1zIEdtYkgKLQkJCQlEaW1iYWNoZXIgU3RyLiA2Ci0JCQkJT2JlcnN1bG0gQlcgNzQxODIKLQkJCQlHRVJNQU5ZCi0KLTAwLTFCLUEzICAgKGhleCkJCUZsZXhpdCBHcm91cCBHbWJICi0wMDFCQTMgICAgIChiYXNlIDE2KQkJRmxleGl0IEdyb3VwIEdtYkgKLQkJCQlCcsODwqR1aGF1c3N0cmHDg8W4ZSAxNAotCQkJCVNhbHpidXJnIFNhbHpidXJnIDUwMjAKLQkJCQlBVVNUUklBCi0KLTAwLTFCLUE0ICAgKGhleCkJCVMuQS5FIEFmaWtpbQotMDAxQkE0ICAgICAoYmFzZSAxNikJCVMuQS5FIEFmaWtpbQotCQkJCUtpYnV0eiBBZmlraW0KLQkJCQlLaWJ1dHogQWZpa2ltICAxNTE0OAotCQkJCUlTUkFFTAotCi0wMC0xQi1BNSAgIChoZXgpCQlNeXVuZ01pbiBTeXN0ZW1zLCBJbmMuCi0wMDFCQTUgICAgIChiYXNlIDE2KQkJTXl1bmdNaW4gU3lzdGVtcywgSW5jLgotCQkJCSM0MTAsRG9vc2FuIFZlbnR1cmUgRGltZSAyLWNoYSwxMzA3LTM3Ci0JCQkJS3dhbnlhbmctRG9uZywKLQkJCQlLeXVuZ2tpLWRvICA0MzEtMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLUE2ICAgKGhleCkJCWludG90ZWNoIGluYy4KLTAwMUJBNiAgICAgKGJhc2UgMTYpCQlpbnRvdGVjaCBpbmMuCi0JCQkJIDEzRiBETUMgUiZEIENlbnRlciBFMy0yIEJ1aWxkaW5nIExhbmQgRGV2ZWxvcG1lbnQgRGlzdHJpY3QgU2FuZ2FtLURvbmcKLQkJCQlNYXBvZ3UgU2VvdWwgMTIxLTI3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi1BNyAgIChoZXgpCQlMb3JpY2EgU29sdXRpb25zCi0wMDFCQTcgICAgIChiYXNlIDE2KQkJTG9yaWNhIFNvbHV0aW9ucwotCQkJCTI3NSBOb3J0aHBvaW50ZSBQYXJrd2F5Ci0JCQkJQW1oZXJzdCBOWSAxNDIyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQTggICAoaGV4KQkJVUJJJk1PQkksLkluYwotMDAxQkE4ICAgICAoYmFzZSAxNikJCVVCSSZNT0JJLC5JbmMKLQkJCQkzRiwgRHVpZG8gQmxkZywgIzI4OC01LCBZYW5namFlLURvbmcKLQkJCQlTZW9jaG8tR3UgU2VvdWwgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi1BOSAgIChoZXgpCQlCUk9USEVSIElORFVTVFJJRVMsIExURC4KLTAwMUJBOSAgICAgKGJhc2UgMTYpCQlCUk9USEVSIElORFVTVFJJRVMsIExURC4KLQkJCQlQcmludGluZyAmIFNvbHV0aW9ucyBDb21wYW55LCBEZXZlbG9wbWVudCBNYW5hZ2VtZW50IERlcHQuCi0JCQkJMTUtMSBOYWVzaGlyby1jaG8sIE1penVoby1rdQotCQkJCU5hZ295YSBBaWNoaSA0NjctODU2MQotCQkJCUpBUEFOCi0KLTAwLTFCLUFBICAgKGhleCkJCVhlbklDcyBudgotMDAxQkFBICAgICAoYmFzZSAxNikJCVhlbklDcyBudgotCQkJCUFtYmFjaHRlbmxhYW4gNDQKLQkJCQlMZXV2ZW4gVmxhYW1zLUJyYWJhbnQgQi0zMDAxCi0JCQkJQkVMR0lVTQotCi0wMC0xQi1BQiAgIChoZXgpCQlUZWxjaGVteSwgSW5jb3Jwb3JhdGVkCi0wMDFCQUIgICAgIChiYXNlIDE2KQkJVGVsY2hlbXksIEluY29ycG9yYXRlZAotCQkJCTI5MDUgUHJlbWllcmUgUGFya3dheQotCQkJCVN1aXRlIDI4MAotCQkJCUR1bHV0aCBHQSAzMDA5NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQUMgICAoaGV4KQkJQ3VydGlzcyBXcmlnaHQgQ29udHJvbHMgRW1iZWRkZWQgQ29tcHV0aW5nCi0wMDFCQUMgICAgIChiYXNlIDE2KQkJQ3VydGlzcyBXcmlnaHQgQ29udHJvbHMgRW1iZWRkZWQgQ29tcHV0aW5nCi0JCQkJMTAyMDEgV2F0ZXJpZGdlIENpcmNsZQotCQkJCVN1aXRlIDMwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQUQgICAoaGV4KQkJaUNvbnRyb2wgSW5jb3Jwb3JhdGVkCi0wMDFCQUQgICAgIChiYXNlIDE2KQkJaUNvbnRyb2wgSW5jb3Jwb3JhdGVkCi0JCQkJMzIzNSBLaWZlciBSb2FkCi0JCQkJU3VpdGUgMjYwCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQUUgICAoaGV4KQkJTWljcm8gQ29udHJvbCBTeXN0ZW1zLCBJbmMKLTAwMUJBRSAgICAgKGJhc2UgMTYpCQlNaWNybyBDb250cm9sIFN5c3RlbXMsIEluYwotCQkJCTU4NzcgRW50ZXJwcmlzZSBQYXJrd2F5Ci0JCQkJRm9ydCBNeWVycyBGbG9yaWRhIDMzOTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1BRiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQkFGICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQi1CMCAgIChoZXgpCQlCSEFSQVQgRUxFQ1RST05JQ1MKLTAwMUJCMCAgICAgKGJhc2UgMTYpCQlCSEFSQVQgRUxFQ1RST05JQ1MKLQkJCQlKQUxBSEFMTEkgUE9TVAotCQkJCUJBTkdBTE9SRSBLQVJOQVRBS0EgNTYwMDEzCi0JCQkJSU5ESUEKLQotMDAtMUItQjEgICAoaGV4KQkJV2lzdHJvbiBOZXdlYiBDb3JwLgotMDAxQkIxICAgICAoYmFzZSAxNikJCVdpc3Ryb24gTmV3ZWIgQ29ycC4KLQkJCQlOby4gMTAtMSwgTGktaHNpbiBSb2FkIEksIEhzaW5jaHUgU2NpZW5jZSBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItQjIgICAoaGV4KQkJSW50ZWxsZWN0IEludGVybmF0aW9uYWwgTlYKLTAwMUJCMiAgICAgKGJhc2UgMTYpCQlJbnRlbGxlY3QgSW50ZXJuYXRpb25hbCBOVgotCQkJCUtsZWluZSBLbG9vc3RlcnN0cmFhdCAyMwotCQkJCVphdmVudGVtIFZsYWFtc2UgYnJhYmFudCAxOTMyCi0JCQkJQkVMR0lVTQotCi0wMC0xQi1CMyAgIChoZXgpCQlDb25kYWxvIEdtYkgKLTAwMUJCMyAgICAgKGJhc2UgMTYpCQlDb25kYWxvIEdtYkgKLQkJCQlLb2hsc3RhdHQgMwotCQkJCUxpY2h0ZW5hdSBCYXZhcmlhIDg2NzA2Ci0JCQkJR0VSTUFOWQotCi0wMC0xQi1CNCAgIChoZXgpCQlBaXJ2b2QgTGltaXRlZAotMDAxQkI0ICAgICAoYmFzZSAxNikJCUFpcnZvZCBMaW1pdGVkCi0JCQkJSGVhdGhlciBIb3VzZQotCQkJCUhlYXRoZXIgUm9hZAotCQkJCVNhbmR5Zm9yZCBJbmQgRXN0IER1YmxpbiAxOCBEMTgKLQkJCQlJUkVMQU5ECi0KLTAwLTFCLUI1ICAgKGhleCkJCVpGIEVsZWN0cm9uaWNzIEdtYkgKLTAwMUJCNSAgICAgKGJhc2UgMTYpCQlaRiBFbGVjdHJvbmljcyBHbWJICi0JCQkJQ2hlcnJ5c3RyYXNzZSAxCi0JCQkJQXVlcmJhY2ggaS4gZC4gT3BmLiBCYXllcm4gRC05MTI3NQotCQkJCUdFUk1BTlkKLQotMDAtMUItQjYgICAoaGV4KQkJQmlyZCBFbGVjdHJvbmljIENvcnAuCi0wMDFCQjYgICAgIChiYXNlIDE2KQkJQmlyZCBFbGVjdHJvbmljIENvcnAuCi0JCQkJMzAzMDMgQXVyb3JhIFJvYWQKLQkJCQlTb2xvbiBPaGlvIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1CNyAgIChoZXgpCQlBbHRhIEhlaWdodHMgVGVjaG5vbG9neSBDb3JwLgotMDAxQkI3ICAgICAoYmFzZSAxNikJCUFsdGEgSGVpZ2h0cyBUZWNobm9sb2d5IENvcnAuCi0JCQkJMTA4IEFsdGEgSGVpZ2h0cyBDb3VydAotCQkJCUxvcyBHYXRvcyBDYWxpZm9ybmlhIDk1MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1COCAgIChoZXgpCQlCTFVFV0FZIEVMRUNUUk9OSUMgQ087TFRECi0wMDFCQjggICAgIChiYXNlIDE2KQkJQkxVRVdBWSBFTEVDVFJPTklDIENPO0xURAotCQkJCVdvcmtzaG9wIEIsRG9uZyBGZW5nIFZpbGxhZ2UsCi0JCQkJRnJvbnQgQmFpeXVuLEd1IFRhbmcgQW8KLQkJCQlIdWlaaG91IEd1YW5nRG9uZyA1MTYwMDgKLQkJCQlDSElOQQotCi0wMC0xQi1COSAgIChoZXgpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4KLTAwMUJCOSAgICAgKGJhc2UgMTYpCQlFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbSBDby4KLQkJCQlOby4yMiwgQWxsZXkgMzgsIExhbmUgOTEgLCBTZWMuIDEgLCBOZWkgSHUgUm9hZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1CQSAgIChoZXgpCQlOb3J0ZWwKLTAwMUJCQSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUItQkIgICAoaGV4KQkJUkZUZWNoIENvLixMdGQKLTAwMUJCQiAgICAgKGJhc2UgMTYpCQlSRlRlY2ggQ28uLEx0ZAotCQkJCTMzOS0xNyBKd2FoYW5nLVJpLFdvbnNhbS1NeXVuLAotCQkJCUNoZW9pbi1HdQotCQkJCVlvbmdpbi1TaSBLeXVuZ2tpLURvIDQ0OS04NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUItQkMgICAoaGV4KQkJU2lsdmVyIFBlYWsgU3lzdGVtcywgSW5jLgotMDAxQkJDICAgICAoYmFzZSAxNikJCVNpbHZlciBQZWFrIFN5c3RlbXMsIEluYy4KLQkJCQk0NzEgRWwgQ2FtaW5vIFJlYWwKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQkQgICAoaGV4KQkJRk1DIEtvbmdzYmVyZyBTdWJzZWEgQVMKLTAwMUJCRCAgICAgKGJhc2UgMTYpCQlGTUMgS29uZ3NiZXJnIFN1YnNlYSBBUwotCQkJCUtpcmtlZ2FhcmRzdmVpZW4gNDUKLQkJCQlLb25nc2JlcmcgQnVza2VydWQgMzYwMQotCQkJCU5PUldBWQotCi0wMC0xQi1CRSAgIChoZXgpCQlJQ09QIERpZ2l0YWwKLTAwMUJCRSAgICAgKGJhc2UgMTYpCQlJQ09QIERpZ2l0YWwKLQkJCQkxNjgwMSBXLiAxMTZ0aCBTdC4KLQkJCQlMZW5leGEgS1MgNjYyMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUJGICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwMUJCRiAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMTQgUnVlIFBhdWwgRGF1dGllcgotCQkJCVbDqWxpenkgIDc4NDU3Ci0JCQkJRlJBTkNFCi0KLTAwLTFCLUMwICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLTAwMUJDMCAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItQzEgICAoaGV4KQkJSE9MVVggVGVjaG5vbG9neSwgSW5jLgotMDAxQkMxICAgICAoYmFzZSAxNikJCUhPTFVYIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxRiwgTm8uIDMwLCBSJkQgUmQuIElJLAotCQkJCVNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1DMiAgIChoZXgpCQlJbnRlZ3JhdGVkIENvbnRyb2wgVGVjaG5vbG9neSBMaW1pdGllZAotMDAxQkMyICAgICAoYmFzZSAxNikJCUludGVncmF0ZWQgQ29udHJvbCBUZWNobm9sb2d5IExpbWl0aWVkCi0JCQkJNkMgQXNjZW5zaW9uIFBsYWNlCi0JCQkJTWFpcmFuZ2kgQmF5Ci0JCQkJQXVja2xhbmQgQXVja2xhbmQgMDczNQotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTFCLUMzICAgKGhleCkJCU1vYmlzb2x1dGlvbiBDby4sTHRkCi0wMDFCQzMgICAgIChiYXNlIDE2KQkJTW9iaXNvbHV0aW9uIENvLixMdGQKLQkJCQk4NDgtMTYKLQkJCQlHdXllb25nLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLUM0ICAgKGhleCkJCVVsdHJhdGVjLCBJbmMuCi0wMDFCQzQgICAgIChiYXNlIDE2KQkJVWx0cmF0ZWMsIEluYy4KLQkJCQk0NTAgU2NpZW5jZSBEcml2ZQotCQkJCU1hZGlzb24gV0kgNTM3MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUM1ICAgKGhleCkJCUlFRUUgUmVnaXN0cmF0aW9uIEF1dGhvcml0eQotMDAxQkM1ICAgICAoYmFzZSAxNikJCUlFRUUgUmVnaXN0cmF0aW9uIEF1dGhvcml0eQotCQkJCTQ0NSBIb2VzIExhbmUKLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1DNiAgIChoZXgpCQlTdHJhdG8gUmVjaGVuemVudHJ1bSBBRwotMDAxQkM2ICAgICAoYmFzZSAxNikJCVN0cmF0byBSZWNoZW56ZW50cnVtIEFHCi0JCQkJUGFzY2Fsc3RyYXNzZSAxMAotCQkJCUQtMTA1ODcgQmVybGluIAotCQkJCUdFUk1BTlkKLQotMDAtMUItQzcgICAoaGV4KQkJU3RhclZlZGlhIFRlY2hub2xvZ3kgSW5jLgotMDAxQkM3ICAgICAoYmFzZSAxNikJCVN0YXJWZWRpYSBUZWNobm9sb2d5IEluYy4KLQkJCQkzRiwgTm8uIDI0NywgRG9uZSBTZWMuIDEsIEd1YW5nbWluZyA2dGggUmQuCi0JCQkJSmh1YmVpIEhzaW4tQ2h1IENvdW50eSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLUM4ICAgKGhleCkJCU1JVVJBIENPLixMVEQKLTAwMUJDOCAgICAgKGJhc2UgMTYpCQlNSVVSQSBDTy4sTFRECi0JCQkJODY0LTEsSG9qeW90c3VqaQotCQkJCU1hdHN1eWFtYSBFaGltZSA3OTktMjQzMAotCQkJCUpBUEFOCi0KLTAwLTFCLUM5ICAgKGhleCkJCUZTTiBESVNQTEFZIElOQwotMDAxQkM5ICAgICAoYmFzZSAxNikJCUZTTiBESVNQTEFZIElOQwotCQkJCUJhZWtzdWstRG9uZyAxMTQxLTEsIElsc2FuIFRlY2hubyBUb3duIDEwMDkKLQkJCQlLb3lhbmctU2ksIElsc2FuLUd1LCBLeWVvbmdnaS1EbywgUmVwdWJsaWMgb2YgS29yZWEKLQkJCQlLb3lhbmctc2kgS3llb25nZ2ktRG8gNDEwNzIyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFCLUNBICAgKGhleCkJCUJlaWppbmcgUnVuIFRlY2hub2xvZ3kgTFRELiBDb21wYW55Ci0wMDFCQ0EgICAgIChiYXNlIDE2KQkJQmVpamluZyBSdW4gVGVjaG5vbG9neSBMVEQuIENvbXBhbnkKLQkJCQk0L0YsIEhhbmd0aWFuIFRlY2hub2xvZ3kgQnVpbGRpbmcKLQkJCQlCZWlqaW5nIDEwMDAzNwotCQkJCUNISU5BCi0KLTAwLTFCLUNCICAgKGhleCkJCVBFTVBFSyBTWVNURU1TIFBUWSBMVEQKLTAwMUJDQiAgICAgKGJhc2UgMTYpCQlQRU1QRUsgU1lTVEVNUyBQVFkgTFRECi0JCQkJVU5JVCAzIC8gMTMgSE9ZTEUgQVZFTlVFCi0JCQkJQ0FTVExFIEhJTEwgTlNXIDIxNTQKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUItQ0MgICAoaGV4KQkJS0lOR1RFSyBDQ1RWIEFMTElBTkNFIENPLiwgTFRELgotMDAxQkNDICAgICAoYmFzZSAxNikJCUtJTkdURUsgQ0NUViBBTExJQU5DRSBDTy4sIExURC4KLQkJCQk1Ri0zLCBOTy4gMTA2LCBTRUMuIDMsIEhTSU4gWUkgUk9BRAotCQkJCVRBSVBFSSAgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1DRCAgIChoZXgpCQlEQVZJU0NPTU1TIChTKSBQVEUgTFRECi0wMDFCQ0QgICAgIChiYXNlIDE2KQkJREFWSVNDT01NUyAoUykgUFRFIExURAotCQkJCUJsayA3MCBVYmkgQ3Jlc2NlbnQgIzAxLTA3Ci0JCQkJVWJpIFRlY2hwYXJrCi0JCQkJNDA4NTcwCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTFCLUNFICAgKGhleCkJCU1lYXN1cmVtZW50IERldmljZXMgTHRkCi0wMDFCQ0UgICAgIChiYXNlIDE2KQkJTWVhc3VyZW1lbnQgRGV2aWNlcyBMdGQKLQkJCQlTaWx2ZXJidXJuIENyZXNjZW50Ci0JCQkJQnJpZGdlIG9mIERvbgotCQkJCUFiZXJkZWVuIEFiZXJkZWVuc2hpcmUgQUIyMyA4RVcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi1DRiAgIChoZXgpCQlEYXRhdXBpYSBDb3Jwb3JhdGlvbgotMDAxQkNGICAgICAoYmFzZSAxNikJCURhdGF1cGlhIENvcnBvcmF0aW9uCi0JCQkJT25lIEFsZXdpZmUgQ2VudGVyCi0JCQkJQ2FtYnJpZGdlIE1BIDAyMTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQi1EMCAgIChoZXgpCQlJREVOVEVDIFNPTFVUSU9OUwotMDAxQkQwICAgICAoYmFzZSAxNikJCUlERU5URUMgU09MVVRJT05TCi0JCQkJSGVydHpzdHIuIDEwCi0JCQkJV2VpbmhlaW0gIDY5NDY5Ci0JCQkJR0VSTUFOWQotCi0wMC0xQi1EMSAgIChoZXgpCQlTT0dFU1RNQVRJQwotMDAxQkQxICAgICAoYmFzZSAxNikJCVNPR0VTVE1BVElDCi0JCQkJNDA5IFJvdXRlIGRlIGxhIEdhcmUKLQkJCQlDSEFURUFVTkVVRiBERSBHQURBR05FIFBBQ0EgODQ0NzAKLQkJCQlGUkFOQ0UKLQotMDAtMUItRDIgICAoaGV4KQkJVUxUUkEtWCBBU0lBIFBBQ0lGSUMgSW5jLgotMDAxQkQyICAgICAoYmFzZSAxNikJCVVMVFJBLVggQVNJQSBQQUNJRklDIEluYy4KLQkJCQk1LTEtMTUgU290b2thbmRhCi0JCQkJVG9reW8gQ2hpeW9kYS1rdSAxMDEtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTFCLUQzICAgKGhleCkJCU1hdHN1c2hpdGEgRWxlY3RyaWMgUGFuYXNvbmljIEFWQwotMDAxQkQzICAgICAoYmFzZSAxNikJCU1hdHN1c2hpdGEgRWxlY3RyaWMgUGFuYXNvbmljIEFWQwotCQkJCTEtMTUgTWF0c3VvLWNobwotCQkJCTY3OC01MTgKLQkJCQlLYWRvbWEgT3Nha2EgNTcxLTg1MDQKLQkJCQlKQVBBTgotCi0wMC0xQi1ENCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFCRDQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItRDUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQkQ1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUQ2ICAgKGhleCkJCUtlbHZpbiBIdWdoZXMgTHRkCi0wMDFCRDYgICAgIChiYXNlIDE2KQkJS2VsdmluIEh1Z2hlcyBMdGQKLQkJCQlOZXcgTm9ydGggUm9hZAotCQkJCUhhaW5hdWx0Ci0JCQkJSWxmb3JkIEVzc2V4IElHNiAyVVIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQi1ENyAgIChoZXgpCQlTY2llbnRpZmljIEF0bGFudGEsIEEgQ2lzY28gQ29tcGFueQotMDAxQkQ3ICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgQXRsYW50YSwgQSBDaXNjbyBDb21wYW55Ci0JCQkJNTAzMCBTdWdhcmxvYWYgUGFya3dheQotCQkJCUFUTCAxLjMuNDczCi0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItRDggICAoaGV4KQkJRFZUZWwgTFRECi0wMDFCRDggICAgIChiYXNlIDE2KQkJRFZUZWwgTFRECi0JCQkJNSBTYXBpcgotCQkJCTQ2ODUyIEhlcnplbGlhIAotCQkJCUlTUkFFTAotCi0wMC0xQi1EOSAgIChoZXgpCQlFZGdld2F0ZXIgQ29tcHV0ZXIgU3lzdGVtcwotMDAxQkQ5ICAgICAoYmFzZSAxNikJCUVkZ2V3YXRlciBDb21wdXRlciBTeXN0ZW1zCi0JCQkJMTEyNSBJbm5vdmF0aW9uIERyaXZlCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLLTNHNgotCQkJCUNBTkFEQQotCi0wMC0xQi1EQSAgIChoZXgpCQlVVFN0YXJjb20gSW5jCi0wMDFCREEgICAgIChiYXNlIDE2KQkJVVRTdGFyY29tIEluYwotCQkJCTEyNzUgSGFyYm9yIEJheSBQS1dZCi0JCQkJQWxhbWVkYSBDQSA5NDUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItREIgICAoaGV4KQkJVmFsZW8gVkVDUwotMDAxQkRCICAgICAoYmFzZSAxNikJCVZhbGVvIFZFQ1MKLQkJCQkyIEF2ZW51ZSBGZXJuYW5kIFBvdWlsbG9uCi0JCQkJRXVyb3BhcmMKLQkJCQlDUkVURUlMIElsZSBkZSBGcmFuY2UgOTQwNDIKLQkJCQlGUkFOQ0UKLQotMDAtMUItREMgICAoaGV4KQkJVmVuY2VyIENvLiwgTHRkLgotMDAxQkRDICAgICAoYmFzZSAxNikJCVZlbmNlciBDby4sIEx0ZC4KLQkJCQkyMEYtMSwgTm8uNzcsIFNlYy4xLCBIc2luIFRhaSBXdSBSZC4sCi0JCQkJSHNpIENoaWggVGFpcGVpIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItREQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDFCREQgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItREUgICAoaGV4KQkJUmVua3VzLUhlaW56LCBJbmMuCi0wMDFCREUgICAgIChiYXNlIDE2KQkJUmVua3VzLUhlaW56LCBJbmMuCi0JCQkJMTkyMDEgQ29vayBTdC4KLQkJCQlGb290aGlsbCBSYW5jaCBDQSA5MjYxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItREYgICAoaGV4KQkJSXNrcmEgTUlTCi0wMDFCREYgICAgIChiYXNlIDE2KQkJSXNrcmEgTUlTCi0JCQkJTGp1YmxqYW5za2EgY2VzdGEgMjRhCi0JCQkJS3JhbmogU2xvdmVuaWEgNDAwMAotCQkJCVNMT1ZFTklBCi0KLTAwLTFCLUUwICAgKGhleCkJCVRFTEVOT1QgRUxFQ1RST05JQyBHbWJICi0wMDFCRTAgICAgIChiYXNlIDE2KQkJVEVMRU5PVCBFTEVDVFJPTklDIEdtYkgKLQkJCQlXaWVzZW50YWxzdHJhw4PFuGUgNDIKLQkJCQlBYWxlbiBCYWRlbi1Xw4PCvHJ0dGVtYmVyZyA3MzQzNAotCQkJCUdFUk1BTlkKLQotMDAtMUItRTEgICAoaGV4KQkJVmlhTG9neQotMDAxQkUxICAgICAoYmFzZSAxNikJCVZpYUxvZ3kKLQkJCQkyNDAwIExpbmNvbG4gQXZlCi0JCQkJQWx0YWRlbmEgQ0EgOTEwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUUyICAgKGhleCkJCUFobkxhYixJbmMuCi0wMDFCRTIgICAgIChiYXNlIDE2KQkJQWhuTGFiLEluYy4KLQkJCQk2dGggRmwsIENDTU0gQmxkZywgMTIgWWVvdWlkby1kb25nCi0JCQkJU2VvdWwgIDE1MDg2OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi1FMyAgIChoZXgpCQlIZWFsdGggSGVybyBOZXR3b3JrLCBJbmMuCi0wMDFCRTMgICAgIChiYXNlIDE2KQkJSGVhbHRoIEhlcm8gTmV0d29yaywgSW5jLgotCQkJCTIwMDAgU2VhcG9ydCBCbHZkLgotCQkJCVN1aXRlIDQwMAotCQkJCVJlZHdvb2QgQ2l0eSBDQSA5NDA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItRTQgICAoaGV4KQkJVE9XTkVUIFNSTAotMDAxQkU0ICAgICAoYmFzZSAxNikJCVRPV05FVCBTUkwKLQkJCQlWSUEgREVJIEZJTkFMRSwgMjAKLQkJCQk2MTA0MyBDQUdMSSAoUFUpIAotCQkJCUlUQUxZCi0KLTAwLTFCLUU1ICAgKGhleCkJCTgwMmF1dG9tYXRpb24gTGltaXRlZAotMDAxQkU1ICAgICAoYmFzZSAxNikJCTgwMmF1dG9tYXRpb24gTGltaXRlZAotCQkJCTE4IEZpcnN0IEF2ZW51ZQotCQkJCVdvcnRoaW5nIFdlc3QgU3Vzc2V4IEJOMTQgOU5KCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUItRTYgICAoaGV4KQkJVlIgQUcKLTAwMUJFNiAgICAgKGJhc2UgMTYpCQlWUiBBRwotCQkJCVLDvHRpc3RyYXNzZSAxOAotCQkJCVNjaGxpZXJlbiAgQ0gtODk1MgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFCLUU3ICAgKGhleCkJCVBvc3RlayBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMUJFNyAgICAgKGJhc2UgMTYpCQlQb3N0ZWsgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJU3VpdGUgNTEwLCBTaGFuZ2hhbmcgQnVpbGRpbmcKLQkJCQlIb25nbGkgUm9hZAotCQkJCVNoZW4gWmhlbiBHdWFuZyBEb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTAwLTFCLUU4ICAgKGhleCkJCVVsdHJhdHJvbmlrIEdtYkgKLTAwMUJFOCAgICAgKGJhc2UgMTYpCQlVbHRyYXRyb25payBHbWJICi0JCQkJR2V3ZXJiZXN0ci4gNTIKLQkJCQlIZXJyc2NoaW5nIEJhdmFyaWEgRC04MjIxMQotCQkJCUdFUk1BTlkKLQotMDAtMUItRTkgICAoaGV4KQkJQnJvYWRjb20gQ29ycG9yYXRpb24KLTAwMUJFOSAgICAgKGJhc2UgMTYpCQlCcm9hZGNvbSBDb3Jwb3JhdGlvbgotCQkJCTE2MjE1IEFsdG9uIFBhcmt3YXkKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUVBICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAxQkVBICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTFCLUVCICAgKGhleCkJCURNUCBFbGVjdHJvbmljcyBJTkMuCi0wMDFCRUIgICAgIChiYXNlIDE2KQkJRE1QIEVsZWN0cm9uaWNzIElOQy4KLQkJCQk4Ri4sIE5vLjEyLCBXdWN5dWFuIDd0aCBSZC4KLQkJCQlXdWd1IFRvd25zaGlwCi0JCQkJVGFpcGVpIENvdW50eSAgMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1FQyAgIChoZXgpCQlOZXRpbyBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLTAwMUJFQyAgICAgKGJhc2UgMTYpCQlOZXRpbyBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQk0Ri0xLCBOby4gNTgyLCBSdWVpZ3VhbmcgUmQuLCBOZWlodSBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTE0OTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFCLUVEICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0wMDFCRUQgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLQkJCQkxNzQ1IFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUItRUUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUJFRSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUItRUYgICAoaGV4KQkJQmxvc3NvbXMgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQuCi0wMDFCRUYgICAgIChiYXNlIDE2KQkJQmxvc3NvbXMgRGlnaXRhbCBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJQkxLMjUsSGVuZ2ZlbmcgSW5kLkNpdHksSGV6aG91Ci0JCQkJWGl4aWFuZyBUb3duCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEyNgotCQkJCUNISU5BCi0KLTAwLTFCLUYwICAgKGhleCkJCVZhbHVlIFBsYXRmb3JtcyBMaW1pdGVkCi0wMDFCRjAgICAgIChiYXNlIDE2KQkJVmFsdWUgUGxhdGZvcm1zIExpbWl0ZWQKLQkJCQlSbSA3MTItNzEzLCBCdWlsZGluZyA5LCA1LCBTY2llbmNlIFBhcmsgV2VzdCBBdmUuLAotCQkJCUhvbmcgS29uZyBTY2llbmNlIFBhcmssCi0JCQkJU2hhdGluLCAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFCLUYxICAgKGhleCkJCU5hbmppbmcgU2lsdmVyTmV0IFNvZnR3YXJlIENvLiwgTHRkLgotMDAxQkYxICAgICAoYmFzZSAxNikJCU5hbmppbmcgU2lsdmVyTmV0IFNvZnR3YXJlIENvLiwgTHRkLgotCQkJCTMvRiwgMTAgYnVpbGRpbmcsIE5hbmppbmcgV29ybGQgV2luZG93IFRlY2hub2xvZ3kgJiBTb2Z0d2FyZSBQYXJrCi0JCQkJMTIgRGluZ0h1YWlNZW4sIEd1bG91IERpc3RyaWN0LCBOYW5qaW5nCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMDAxMwotCQkJCUNISU5BCi0KLTAwLTFCLUYyICAgKGhleCkJCUtXT1JMRCBDT01QVVRFUiBDTy4sIExURAotMDAxQkYyICAgICAoYmFzZSAxNikJCUtXT1JMRCBDT01QVVRFUiBDTy4sIExURAotCQkJCU5vLiAxMTMsIEppYW4gMm5kIFJkLiwKLQkJCQlKaG9uZ2hlIFRhaXBlaSBjb3VudHkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1GMyAgIChoZXgpCQlUUkFOU1JBRElPIFNlbmRlclN5c3RlbWUgQmVybGluIEFHCi0wMDFCRjMgICAgIChiYXNlIDE2KQkJVFJBTlNSQURJTyBTZW5kZXJTeXN0ZW1lIEJlcmxpbiBBRwotCQkJCU1lcnRlbnNzdHJhc3NlIDYzCi0JCQkJQmVybGluIDEzNTg3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQi1GNCAgIChoZXgpCQlLRU5XSU4gSU5EVVNUUklBTChISykgTFRELgotMDAxQkY0ICAgICAoYmFzZSAxNikJCUtFTldJTiBJTkRVU1RSSUFMKEhLKSBMVEQuCi0JCQkJUk0uMTUxMiAxNS9GIFNIQVRJTiBHQUxMRVJJQQotCQkJCTE4LTI0IFNIQU4gTUVJIFNULCBGT1RBTgotCQkJCUhPTkcgS09ORwotCi0wMC0xQi1GNSAgIChoZXgpCQlUZWxsaW5rIFNpc3RlbWFzIGRlIFRlbGVjb211bmljYWNpw7NuIFMuTC4KLTAwMUJGNSAgICAgKGJhc2UgMTYpCQlUZWxsaW5rIFNpc3RlbWFzIGRlIFRlbGVjb211bmljYWNpw7NuIFMuTC4KLQkJCQlDLyBNYXLDrWEgVHViYXUgTsK6IDUgQmFqbyBCCi0JCQkJTWFkcmlkICAyODA1MAotCQkJCVNQQUlOCi0KLTAwLTFCLUY2ICAgKGhleCkJCUNPTldJU0UgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMdGQuCi0wMDFCRjYgICAgIChiYXNlIDE2KQkJQ09OV0lTRSBUZWNobm9sb2d5IENvcnBvcmF0aW9uIEx0ZC4KLQkJCQkyRiBOby40NCwgUGFyayBBdmUuIDIsIEhzaW5jaHUgU2NpZW5jZSBQYXJrCi0JCQkJSHNpbmNodSBDaXR5ICAzMDA3NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUItRjcgICAoaGV4KQkJTHVuZCBJUCBQcm9kdWN0cyBBQgotMDAxQkY3ICAgICAoYmFzZSAxNikJCUx1bmQgSVAgUHJvZHVjdHMgQUIKLQkJCQlEYWxieXYuIDEKLQkJCQlMdW5kIFNrYW5lIDIyNCA2MAotCQkJCVNXRURFTgotCi0wMC0xQi1GOCAgIChoZXgpCQlEaWdpdHJheCBJbmMuCi0wMDFCRjggICAgIChiYXNlIDE2KQkJRGlnaXRyYXggSW5jLgotCQkJCTI0NDMgVHJhbnNtaXR0ZXIgUmQsCi0JCQkJU3VpdGUgMjA2Ci0JCQkJUGFuYW1hIENpdHkgRkwgMzI0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFCLUY5ICAgKGhleCkJCUludGVsbGl0ZWN0IFdhdGVyIEx0ZAotMDAxQkY5ICAgICAoYmFzZSAxNikJCUludGVsbGl0ZWN0IFdhdGVyIEx0ZAotCQkJCVN1aXRlIDE5LCBCYXNlcG9pbnQgQnVzaW5lc3MgQ2VudHJlCi0JCQkJQXZpYXRpb24gUGFyayBXZXN0Ci0JCQkJQ2hyaXN0Y2h1cmNoIERvcnNldCBCSDIzIF5OVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFCLUZBICAgKGhleCkJCUcuaS5OLiBtYkgKLTAwMUJGQSAgICAgKGJhc2UgMTYpCQlHLmkuTi4gbWJICi0JCQkJUmFpZmZlaXNlbnN0ci4gMTUKLQkJCQlHcmllc2hlaW0gSGVzc2VuIDY0MzQ3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQi1GQiAgIChoZXgpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0wMDFCRkIgICAgIChiYXNlIDE2KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGkKLQkJCQlTb21hLWNpdHkgRnVrdXNoaW1hLS1wcmVmIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUItRkMgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDFCRkMgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1GRCAgIChoZXgpCQlEaWduc3lzIEluYy4KLTAwMUJGRCAgICAgKGJhc2UgMTYpCQlEaWduc3lzIEluYy4KLQkJCQkxNEYsIERpZ2l0YWwgRW1waXJlIEJsZGcuLCBCLTE0MDgKLQkJCQlZZW9uZ3RvbmctZ3UsCi0JCQkJU3V3b24gR3llb25nZ2ktZG8gNDQzLTgxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQi1GRSAgIChoZXgpCQlaYXZpbyBJbmMuCi0wMDFCRkUgICAgIChiYXNlIDE2KQkJWmF2aW8gSW5jLgotCQkJCU5vLjEsTGlzaW5nIDFzdCBSZC4gU2NpZW5jZSBCYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQi1GRiAgIChoZXgpCQlNaWxsZW5uaWEgTWVkaWEgaW5jLgotMDAxQkZGICAgICAoYmFzZSAxNikJCU1pbGxlbm5pYSBNZWRpYSBpbmMuCi0JCQkJNDIwMCBEYXkgU3ByaW5nIENUCi0JCQkJUGxhY2VydmlsbGUgQ0EgOTU2NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTAwICAgKGhleCkJCUVudHJ5IFBvaW50LCBMTEMKLTAwMUMwMCAgICAgKGJhc2UgMTYpCQlFbnRyeSBQb2ludCwgTExDCi0JCQkJUC5PLiBCb3ggMzM1NAotCQkJCTkzMCBFYXN0IExpbmNvbG4gUm9hZAotCQkJCUlkYWhvIEZhbGxzIElkYWhvIDgzNDAzLTMzNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTAxICAgKGhleCkJCUFCQiBPeSBEcml2ZXMKLTAwMUMwMSAgICAgKGJhc2UgMTYpCQlBQkIgT3kgRHJpdmVzCi0JCQkJSGlvbW90aWUgMTMKLQkJCQlIZWxzaW5raSAgRkktMDAzODAKLQkJCQlGSU5MQU5ECi0KLTAwLTFDLTAyICAgKGhleCkJCVBhbm8gTG9naWMKLTAwMUMwMiAgICAgKGJhc2UgMTYpCQlQYW5vIExvZ2ljCi0JCQkJMjAwMCBTZWFwb3J0IERyaXZlLCBTdWl0ZSAyMDAKLQkJCQlTdWl0ZSAyMDAKLQkJCQlSZWR3b29kIENpdHkgQ0EgOTQwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTAzICAgKGhleCkJCUJldHR5IFRWIFRlY2hub2xvZ3kgQUcKLTAwMUMwMyAgICAgKGJhc2UgMTYpCQlCZXR0eSBUViBUZWNobm9sb2d5IEFHCi0JCQkJSGFyZHR1cm1zdHJhc3NlIDIKLQkJCQladXJpY2ggIDgwMDA1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUMtMDQgICAoaGV4KQkJQWlyZ2FpbiwgSW5jLgotMDAxQzA0ICAgICAoYmFzZSAxNikJCUFpcmdhaW4sIEluYy4KLQkJCQkxOTMwIFBhbG9tYXIgUG9pbnQgV2F5Ci0JCQkJU3VpdGUgMTA3Ci0JCQkJQ2FybHNiYWQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTA1ICAgKGhleCkJCU5vbmluIE1lZGljYWwgSW5jLgotMDAxQzA1ICAgICAoYmFzZSAxNikJCU5vbmluIE1lZGljYWwgSW5jLgotCQkJCTEzNzAwIDFzdCBBdmVudWUgTm9ydGgKLQkJCQlQbHltb3V0aCBNTiA1NTQ0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMDYgICAoaGV4KQkJU2llbWVucyBOdW1lcmljYWwgQ29udHJvbCBMdGQuLCBOYW5qaW5nCi0wMDFDMDYgICAgIChiYXNlIDE2KQkJU2llbWVucyBOdW1lcmljYWwgQ29udHJvbCBMdGQuLCBOYW5qaW5nCi0JCQkJTm8uIDE4IFNpZW1lbnMgUm9hZCwgSmlhbmduaW5nIERldmVsb3BtZW50IFpvbmUKLQkJCQlOYW5qaW5nIEppYW5nU3UgMjExMTAwCi0JCQkJQ0hJTkEKLQotMDAtMUMtMDcgICAoaGV4KQkJQ3dsaW51eCBMaW1pdGVkCi0wMDFDMDcgICAgIChiYXNlIDE2KQkJQ3dsaW51eCBMaW1pdGVkCi0JCQkJVW5pdCAxMzgsIDEzL0YsIFdlc3dpY2sgQ29tbWVyY2lhbCBCdWlsZGluZywKLQkJCQkxNDctMTUxIFF1ZWVuJ3MgUm9hZCBFYXN0LAotCQkJCVdhbiBDaGFpICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUMtMDggICAoaGV4KQkJRWNobzM2MCwgSW5jLgotMDAxQzA4ICAgICAoYmFzZSAxNikJCUVjaG8zNjAsIEluYy4KLQkJCQkyMTAwMCBBdGxhbnRpYyBCbHZkCi0JCQkJU3VpdGUgNjAwCi0JCQkJRHVsbGVzIFZBIDIwMTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0wOSAgIChoZXgpCQlTQUUgRWxlY3Ryb25pYyBDby4sTHRkLgotMDAxQzA5ICAgICAoYmFzZSAxNikJCVNBRSBFbGVjdHJvbmljIENvLixMdGQuCi0JCQkJMjMvRixZaW5nIExvbmcgWmhhbiBZZSBCdWlsZGluZywKLQkJCQlOby42MDI1LCBTaGVuIE5hbiBSb2FkLEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMUMtMEEgICAoaGV4KQkJU2hlbnpoZW4gQUVFIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMUMwQSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBBRUUgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTFzdCBGbG9vciBCIEJ1aWxkaW5nLCBTaGVuemhlbiwKLQkJCQlUc2luZ2h1YSBIaS1UZWNoIFBhcmssIE5hbnNoYW4gSGktVGVjaCBQYXJrIE5vcnRoLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xQy0wQiAgIChoZXgpCQlTbWFydEFudCBUZWxlY29tCi0wMDFDMEIgICAgIChiYXNlIDE2KQkJU21hcnRBbnQgVGVsZWNvbQotCQkJCTJGLCBOby4gNjY5LCBTZWMuIDQsIENodW5nIEhzaW5nIFJkLiwgQ2h1dHVuZwotCQkJCUhzaW5jaHUgIDMxMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtMEMgICAoaGV4KQkJVEFOSVRBIENvcnBvcmF0aW9uCi0wMDFDMEMgICAgIChiYXNlIDE2KQkJVEFOSVRBIENvcnBvcmF0aW9uCi0JCQkJMS0xNC0yLE1hZW5vLWNobwotCQkJCUl0YWJhc2hpLWt1Ci0JCQkJVG9reW8gIDE3NC04NjMwCi0JCQkJSkFQQU4KLQotMDAtMUMtMEQgICAoaGV4KQkJRy1UZWNobm9sb2d5LCBJbmMuCi0wMDFDMEQgICAgIChiYXNlIDE2KQkJRy1UZWNobm9sb2d5LCBJbmMuCi0JCQkJMTY1MyBTdGFuZm9yZCBTdHJlZXQKLQkJCQlTYW50YSBNb25pY2EgQ0EgOTA0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTBFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUMwRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0wRiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFDMEYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTAgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi0wMDFDMTAgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0xMSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxQzExICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUMxMiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTMgICAoaGV4KQkJT1BUU1lTIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDFDMTMgICAgIChiYXNlIDE2KQkJT1BUU1lTIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJU1VJVEUgQi04MDIgQlVOREFORyBURUNITk8gUEFSSwotCQkJCVlBVEFQLURPTkcsIEJVTkRBTkctS1UKLQkJCQlTRU9OR05BTS1TSSBHWUVPTkdHSS1ETyA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTE0ICAgKGhleCkJCVZNd2FyZSwgSW5jCi0wMDFDMTQgICAgIChiYXNlIDE2KQkJVk13YXJlLCBJbmMKLQkJCQkzNDAxIEhpbGx2aWV3IEF2ZW51ZQotCQkJCVBhbG8gQWx0byBDQSA5NDMwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTUgICAoaGV4KQkJVFhQIENvcnBvcmF0aW9uCi0wMDFDMTUgICAgIChiYXNlIDE2KQkJVFhQIENvcnBvcmF0aW9uCi0JCQkJMTI5OSBDb21tZXJjZSBEci4KLQkJCQlSaWNoYXJkc29uIFRleGFzIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0xNiAgIChoZXgpCQlUaHlzc2VuS3J1cHAgRWxldmF0b3IKLTAwMUMxNiAgICAgKGJhc2UgMTYpCQlUaHlzc2VuS3J1cHAgRWxldmF0b3IKLQkJCQk5MjgwIENyZXN0d3luIEhpbGxzIERyaXZlCi0JCQkJTWVtcGhpcyBUTiAzODEyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMTcgICAoaGV4KQkJTm9ydGVsCi0wMDFDMTcgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFDLTE4ICAgKGhleCkJCVNpY2VydCBTLnIuTC4KLTAwMUMxOCAgICAgKGJhc2UgMTYpCQlTaWNlcnQgUy5yLkwuCi0JCQkJVmlhIEJlcm5hcmRpbm8gQWxpbWVuYSwgMTI4Ci0JCQkJUm9tZSAgMDAxNzMKLQkJCQlJVEFMWQotCi0wMC0xQy0xOSAgIChoZXgpCQlzZWN1bmV0IFNlY3VyaXR5IE5ldHdvcmtzIEFHCi0wMDFDMTkgICAgIChiYXNlIDE2KQkJc2VjdW5ldCBTZWN1cml0eSBOZXR3b3JrcyBBRwotCQkJCUtyb25wcmluemVuc3RyYcODxbhlIDMwCi0JCQkJRXNzZW4gTlJXIDQ1MTI4Ci0JCQkJR0VSTUFOWQotCi0wMC0xQy0xQSAgIChoZXgpCQlUaG9tYXMgSW5zdHJ1bWVudGF0aW9uLCBJbmMKLTAwMUMxQSAgICAgKGJhc2UgMTYpCQlUaG9tYXMgSW5zdHJ1bWVudGF0aW9uLCBJbmMKLQkJCQkxMzMgTGFuZGluZyBSZAotCQkJCUNhcGUgTWF5IENvdXJ0IEhvdXNlIE5KIDA4MjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0xQiAgIChoZXgpCQlIeXBlcnN0b25lIEdtYkgKLTAwMUMxQiAgICAgKGJhc2UgMTYpCQlIeXBlcnN0b25lIEdtYkgKLQkJCQlMaW5lLUVpZC1TdHIuIDMKLQkJCQlLb25zdGFueiBCYWRlbi1Xw7xydHRlbWJlcmcgNzg0NjcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLTFDICAgKGhleCkJCUNlbnRlciBDb21tdW5pY2F0aW9uIFN5c3RlbXMgR21iSAotMDAxQzFDICAgICAoYmFzZSAxNikJCUNlbnRlciBDb21tdW5pY2F0aW9uIFN5c3RlbXMgR21iSAotCQkJCUlnbmF6LUtvZWNrLVN0cmFzc2UgMTkKLQkJCQlWaWVubmEgIEEtMTIxMAotCQkJCUFVU1RSSUEKLQotMDAtMUMtMUQgICAoaGV4KQkJQ0hFTlpIT1UgR09TUEVMTCBESUdJVEFMIFRFQ0hOT0xPR1kgQ08uLExURAotMDAxQzFEICAgICAoYmFzZSAxNikJCUNIRU5aSE9VIEdPU1BFTEwgRElHSVRBTCBURUNITk9MT0dZIENPLixMVEQKLQkJCQlCQUlMVVRBTkcsU1VYSUFOIERJU1RSSUNULAotCQkJCUNIRU5aSE9VIEhVTkFOIDQyMzAyNQotCQkJCUNISU5BCi0KLTAwLTFDLTFFICAgKGhleCkJCWVtdHJpb24gR21iSAotMDAxQzFFICAgICAoYmFzZSAxNikJCWVtdHJpb24gR21iSAotCQkJCUdyZXNjaGJhY2hzdHJhc3NlIDEyCi0JCQkJS2FybHNydWhlIEJhZGVuIFd1ZXJ0dGVtYmVyZyA3NjIyOQotCQkJCUdFUk1BTlkKLQotMDAtMUMtMUYgICAoaGV4KQkJUXVlc3QgUmV0YWlsIFRlY2hub2xvZ3kgUHR5IEx0ZAotMDAxQzFGICAgICAoYmFzZSAxNikJCVF1ZXN0IFJldGFpbCBUZWNobm9sb2d5IFB0eSBMdGQKLQkJCQkzNy0zOSBXYWxzaCBTdHJlZXQKLQkJCQlUaGViYXJ0b24gU0EgNTAzMQotCQkJCUFVU1RSQUxJQQotCi0wMC0xQy0yMCAgIChoZXgpCQlDTEIgQmVuZWx1eAotMDAxQzIwICAgICAoYmFzZSAxNikJCUNMQiBCZW5lbHV4Ci0JCQkJUmFtZ2F0c2V3ZWcgMTcKLQkJCQlSYWFtc2RvbmtzdmVlciBOQlIgNDk0MSBWTgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFDLTIxICAgKGhleCkJCU51Y3NhZmUgSW5jLgotMDAxQzIxICAgICAoYmFzZSAxNikJCU51Y3NhZmUgSW5jLgotCQkJCTYwMSBPYWsgUmlkZ2UgVHVybnBpa2UKLQkJCQlPYWsgUmlkZ2UgVGVubmVzc2VlIDM3ODMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0yMiAgIChoZXgpCQlBZXJpcyBFbGV0dHJvbmljYSBzLnIubC4KLTAwMUMyMiAgICAgKGJhc2UgMTYpCQlBZXJpcyBFbGV0dHJvbmljYSBzLnIubC4KLQkJCQlab25hIEluZC5sZSBWYWxsZWN1cGEKLQkJCQlDb2xvbm5lbGxhIFRlcmFtbyA2NDAxMAotCQkJCUlUQUxZCi0KLTAwLTFDLTIzICAgKGhleCkJCURlbGwgSW5jCi0wMDFDMjMgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksICBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0yNCAgIChoZXgpCQlGb3Jtb3NhIFdpcmVsZXNzIFN5c3RlbXMgQ29ycC4KLTAwMUMyNCAgICAgKGJhc2UgMTYpCQlGb3Jtb3NhIFdpcmVsZXNzIFN5c3RlbXMgQ29ycC4KLQkJCQlOby4gNDA4LCBHdWFuZG9uZyBSZC4sCi0JCQkJSHNpbkNodSBDaXR5ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTI1ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTAwMUMyNSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy0yNiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0wMDFDMjYgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtMjcgICAoaGV4KQkJU3VuZWxsIEVsZWN0cm9uaWNzIENvLgotMDAxQzI3ICAgICAoYmFzZSAxNikJCVN1bmVsbCBFbGVjdHJvbmljcyBDby4KLQkJCQkzcmQgRmxvb3IsQmxkZy41MTQsQmFHdWEgUmQKLQkJCQlGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuWmhlbiBHdWFuZ2RvbmcgNTE4MDI5Ci0JCQkJQ0hJTkEKLQotMDAtMUMtMjggICAoaGV4KQkJU3BoYWlyb24gVGVjaG5vbG9naWVzIEdtYkggCi0wMDFDMjggICAgIChiYXNlIDE2KQkJU3BoYWlyb24gVGVjaG5vbG9naWVzIEdtYkggCi0JCQkJUGhpbGlwcC1SZWlzLVN0cmFzc2UgMQotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0JCQkJQmF1dHplbiBTYXhvbnkgMDI2MjUgICAgCi0JCQkJR0VSTUFOWQotCi0wMC0xQy0yOSAgIChoZXgpCQlDT1JFIERJR0lUQUwgRUxFQ1RST05JQ1MgQ08uLCBMVEQKLTAwMUMyOSAgICAgKGJhc2UgMTYpCQlDT1JFIERJR0lUQUwgRUxFQ1RST05JQ1MgQ08uLCBMVEQKLQkJCQkxMDA2IyAxMDIgQ0hVTlVJVEVDSE5PUEFSSyAyMDAtMQotCQkJCUNIVU5VSS1ET05HLCBXT05NSS1HVQotCQkJCUJVQ0hFT04tQ0lUWSBHWVVOR0dJLURPIDQyMC04NTcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtMkEgICAoaGV4KQkJRW52aXNhY29yIFRlY2hub2xvZ2llcyBJbmMuCi0wMDFDMkEgICAgIChiYXNlIDE2KQkJRW52aXNhY29yIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMTQ4NDUtNiBZb25nZSBTdHJlZXQsIFN1aXRlIDMxMAotCQkJCUF1cm9yYSBPTiBMNEcgNkg4Ci0JCQkJQ0FOQURBCi0KLTAwLTFDLTJCICAgKGhleCkJCUFsZXJ0bWUuY29tIExpbWl0ZWQKLTAwMUMyQiAgICAgKGJhc2UgMTYpCQlBbGVydG1lLmNvbSBMaW1pdGVkCi0JCQkJMjctMjggQnJpZGdlIFN0cmVldAotCQkJCUNhbWJyaWRnZSBDYW1icmlkZ2VzaGlyZSBDQjIgMVVKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtMkMgICAoaGV4KQkJU3luYXBzZQotMDAxQzJDICAgICAoYmFzZSAxNikJCVN5bmFwc2UKLQkJCQkxMzIgRXhwb3J0IENpcmNsZQotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTJEICAgKGhleCkJCUZsZXhSYWRpbyBTeXN0ZW1zCi0wMDFDMkQgICAgIChiYXNlIDE2KQkJRmxleFJhZGlvIFN5c3RlbXMKLQkJCQk4OTAwIE1hcnliYW5rIERyLgotCQkJCUF1c3RpbiBUWCA3ODc1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtMkUgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotMDAxQzJFICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkCi0JCQkJUm9zZXZpbGxlIENBIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0yRiAgIChoZXgpCQlQZmlzdGVyIEdtYkgKLTAwMUMyRiAgICAgKGJhc2UgMTYpCQlQZmlzdGVyIEdtYkgKLQkJCQlTdMODwqR0emxpbmdlciBTdHJhw4PFuGUgNzAKLQkJCQlBdWdzYnVyZyBCYXZhcmlhIDg2MTY1Ci0JCQkJR0VSTUFOWQotCi0wMC0xQy0zMCAgIChoZXgpCQlNb2RlIExpZ2h0aW5nIChVSyApIEx0ZC4KLTAwMUMzMCAgICAgKGJhc2UgMTYpCQlNb2RlIExpZ2h0aW5nIChVSyApIEx0ZC4KLQkJCQlUaGUgTWFsdGluZ3MKLQkJCQk2MyBIaWdoIFN0cmVldAotCQkJCVdhcmUgSGVydGZvcmRzaGlyZSBTRzEyIDlBRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFDLTMxICAgKGhleCkJCU1vYmlsZSBYUCBUZWNobm9sb2d5IENvLiwgTFRECi0wMDFDMzEgICAgIChiYXNlIDE2KQkJTW9iaWxlIFhQIFRlY2hub2xvZ3kgQ28uLCBMVEQKLQkJCQlSb29tIE5vLjI1MDYsVHJpLXRvd2VyIEMgYnVpbGRpbmcsTm8uNjbCo8KsWmhvbmdndWFuY3VuIEVhc3QgUm9hZCxIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMUMtMzIgICAoaGV4KQkJVGVsaWFuIENvcnBvcmF0aW9uCi0wMDFDMzIgICAgIChiYXNlIDE2KQkJVGVsaWFuIENvcnBvcmF0aW9uCi0JCQkJNEZMLiBOYW1qZW9uIEJsZGcuIDUzLTMgSGFhbmRvbmcKLQkJCQlLd2FuZ215dW5nc2kgS3lvdW5na2lkbyA0MjMwNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtMzMgICAoaGV4KQkJU3V0cm9uCi0wMDFDMzMgICAgIChiYXNlIDE2KQkJU3V0cm9uCi0JCQkJMjEzMDAgUmlkZ2V0b3AgQ2lyCi0JCQkJU3RlcmxpbmcgVkEgMjAxNjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTM0ICAgKGhleCkJCUhVRVkgQ0hJQU8gSU5URVJOQVRJT05BTCBDTy4sIExURC4KLTAwMUMzNCAgICAgKGJhc2UgMTYpCQlIVUVZIENISUFPIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQuCi0JCQkJNUYsIE5PLiA2NDktMSwKLQkJCQlDSFVORyBDSEVORyBSRC4sCi0JCQkJSFNJTiBDSFVBTkcgQ0lUWSBUQUlQRUkgMjQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy0zNSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQzM1ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwVgotCQkJCURFTk1BUksKLQotMDAtMUMtMzYgICAoaGV4KQkJaU5FV2lUIE5WCi0wMDFDMzYgICAgIChiYXNlIDE2KQkJaU5FV2lUIE5WCi0JCQkJU2NoYWxpw6tuaG9ldmVkcmVlZiAyMEQKLQkJCQlNZWNoZWxlbiBBbnR3ZXJwIDI4MDAKLQkJCQlCRUxHSVVNCi0KLTAwLTFDLTM3ICAgKGhleCkJCUNhbGxwb2QsIEluYy4KLTAwMUMzNyAgICAgKGJhc2UgMTYpCQlDYWxscG9kLCBJbmMuCi0JCQkJODUwIFcuIEphY2tzb24KLQkJCQlTdWl0ZSAyNjAKLQkJCQlDaGljYWdvIElMIDYwNjA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0zOCAgIChoZXgpCQlCaW8tUmFkIExhYm9yYXRvcmllcywgSW5jLgotMDAxQzM4ICAgICAoYmFzZSAxNikJCUJpby1SYWQgTGFib3JhdG9yaWVzLCBJbmMuCi0JCQkJMjQ1IFdpbnRlciBTdC4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlXYWx0aGFtIE1BIDAyNDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0zOSAgIChoZXgpCQlTIE5ldHN5c3RlbXMgSW5jLgotMDAxQzM5ICAgICAoYmFzZSAxNikJCVMgTmV0c3lzdGVtcyBJbmMuCi0JCQkJMTBGIFN1bmd3b24gQmxkZy4sIDE0MSBTYW1zdW5nLURvbmcKLQkJCQlLYW5nbmFtLUt1Ci0JCQkJU2VvdWwgIDEzNS03MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtM0EgICAoaGV4KQkJRWxlbWVudCBMYWJzLCBJbmMuCi0wMDFDM0EgICAgIChiYXNlIDE2KQkJRWxlbWVudCBMYWJzLCBJbmMuCi0JCQkJMzM1MCBTY290dCBCb3VsZXZhcmQKLQkJCQlCdWlsZGluZyAjMgotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy0zQiAgIChoZXgpCQlBbVJvYWQgVGVjaG5vbG9neSBJbmMuCi0wMDFDM0IgICAgIChiYXNlIDE2KQkJQW1Sb2FkIFRlY2hub2xvZ3kgSW5jLgotCQkJCTE4Ri0zIE5vLiAxNTAgLCBDaGllbiBJIFJkCi0JCQkJQ2h1bmcgSG8gVGFpcGVpIEhzaWVuIDIzNTExCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy0zQyAgIChoZXgpCQlTZW9uIERlc2lnbiBJbmMuCi0wMDFDM0MgICAgIChiYXNlIDE2KQkJU2VvbiBEZXNpZ24gSW5jLgotCQkJCTExMS0zQiBCdXJiaWRnZSBTdHJlZXQKLQkJCQlDb3F1aXRsYW0gQkMgVjNLIDdCMgotCQkJCUNBTkFEQQotCi0wMC0xQy0zRCAgIChoZXgpCQlXYXZlU3Rvcm0KLTAwMUMzRCAgICAgKGJhc2UgMTYpCQlXYXZlU3Rvcm0KLQkJCQk0MCBydWUgZCdPcmFkb3VyLXN1ci1HbGFuZQotCQkJCVBhcmlzIMODxb1sZS1kZS1GcmFuY2UgNzUwMTUKLQkJCQlGUkFOQ0UKLQotMDAtMUMtM0UgICAoaGV4KQkJRUNLZXkgTGltaXRlZAotMDAxQzNFICAgICAoYmFzZSAxNikJCUVDS2V5IExpbWl0ZWQKLQkJCQlQTyBCb3ggMTI4IDA1NwotCQkJCVJlbXVlcmEKLQkJCQlBdWNrbGFuZCAgMTA1MAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTFDLTNGICAgKGhleCkJCUludGVybmF0aW9uYWwgUG9saWNlIFRlY2hub2xvZ2llcywgSW5jLgotMDAxQzNGICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgUG9saWNlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTQxNTAgUy4gODd0aCBFLiBBdmVudWUKLQkJCQlUdWxzYSBPSyA3NDE0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNDAgICAoaGV4KQkJVkRHLVNlY3VyaXR5IGJ2Ci0wMDFDNDAgICAgIChiYXNlIDE2KQkJVkRHLVNlY3VyaXR5IGJ2Ci0JCQkJUmFkb25zdHJhYXQgMTAtMTQKLQkJCQlab2V0ZXJtZWVyIFpIIDI3MTggVEEKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xQy00MSAgIChoZXgpCQlzY2VtdGVjIFRyYW5zcG9uZGVyIFRlY2hub2xvZ3kgR21iSAotMDAxQzQxICAgICAoYmFzZSAxNikJCXNjZW10ZWMgVHJhbnNwb25kZXIgVGVjaG5vbG9neSBHbWJICi0JCQkJR2V3ZXJiZXBhcmtzdHIuIDIwCi0JCQkJUmVpY2hzaG9mIE5SVyA1MTU4MAotCQkJCUdFUk1BTlkKLQotMDAtMUMtNDIgICAoaGV4KQkJUGFyYWxsZWxzLCBJbmMuCi0wMDFDNDIgICAgIChiYXNlIDE2KQkJUGFyYWxsZWxzLCBJbmMuCi0JCQkJNjYwIFNXIDM5aCBTdHJlZXQKLQkJCQlTdWl0ZSAyMDUKLQkJCQlSZW50b24gV0EgOTgwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTQzICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxQzQzICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy00NCAgIChoZXgpCQlCb3NjaCBTZWN1cml0eSBTeXN0ZW1zIEJWCi0wMDFDNDQgICAgIChiYXNlIDE2KQkJQm9zY2ggU2VjdXJpdHkgU3lzdGVtcyBCVgotCQkJCUthcGl0dGVsd2VnIDEwCi0JCQkJNDgyNyBIRyAgQnJlZGEgQnJhYmFudCA0ODI3Ci0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUMtNDUgICAoaGV4KQkJQ2hlbmJybyBNaWNvbSBDby4sIEx0ZC4KLTAwMUM0NSAgICAgKGJhc2UgMTYpCQlDaGVuYnJvIE1pY29tIENvLiwgTHRkLgotCQkJCTE1RmwuLCBOby4gMTUwLCBKaWFuIFlpIFJvYWQKLQkJCQlDaHVuZyBIbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTQ2ICAgKGhleCkJCVFUVU0KLTAwMUM0NiAgICAgKGJhc2UgMTYpCQlRVFVNCi0JCQkJIzUwNyBCeXVja3Nhbi9LeXVuZ2luIERpZ2l0YWwgVmFsbGV5IDIgNDgxLTEwCi0JCQkJR2FzYW4tZG9uZyBHZXVtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTc4MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy00NyAgIChoZXgpCQlIYW5nemhvdSBIb2xseXN5cyBBdXRvbWF0aW9uIENvLiwgTHRkCi0wMDFDNDcgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgSG9sbHlzeXMgQXV0b21hdGlvbiBDby4sIEx0ZAotCQkJCU5vLjEwIE1pZGRsZSBSb2FkLCBKaWFuY2FpY2hlbmcsIEhhaWRpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDk2Ci0JCQkJQ0hJTkEKLQotMDAtMUMtNDggICAoaGV4KQkJV2lEZUZpLCBJbmMuCi0wMDFDNDggICAgIChiYXNlIDE2KQkJV2lEZUZpLCBJbmMuCi0JCQkJMTMzMyBHYXRld2F5IEJsdmQKLQkJCQlTdWl0ZSAxMDEyCi0JCQkJTWVsYm91cm5lIEZMIDMyOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy00OSAgIChoZXgpCQlab2x0YW4gVGVjaG5vbG9neSBJbmMuCi0wMDFDNDkgICAgIChiYXNlIDE2KQkJWm9sdGFuIFRlY2hub2xvZ3kgSW5jLgotCQkJCTRGLCBOby4zMCwgV3Vuc2kgU3QuCi0JCQkJSmh1YmVpIEhzaW5jaHUgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy00QSAgIChoZXgpCQlBVk0gR21iSAotMDAxQzRBICAgICAoYmFzZSAxNikJCUFWTSBHbWJICi0JCQkJQWx0LU1vYWJpdCA5NQotCQkJCUJlcmxpbiAgMTA1NTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLTRCICAgKGhleCkJCUdlbmVyOCwgSW5jLgotMDAxQzRCICAgICAoYmFzZSAxNikJCUdlbmVyOCwgSW5jLgotCQkJCTg5NyBJbmRlcGVuZGVuY2UgQXZlCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNEMgICAoaGV4KQkJUGV0cm90ZXN0IEluc3RydW1lbnRzCi0wMDFDNEMgICAgIChiYXNlIDE2KQkJUGV0cm90ZXN0IEluc3RydW1lbnRzCi0JCQkJTHVkd2lnLUVyaGFyZC1SaW5nIDEzCi0JCQkJRGFobGV3aXR6IEJCRyAxNTgyNwotCQkJCUdFUk1BTlkKLQotMDAtMUMtNEQgICAoaGV4KQkJWmVldG9vLCBJbmMuCi0wMDFDNEQgICAgIChiYXNlIDE2KQkJWmVldG9vLCBJbmMuCi0JCQkJMTI4IEdyZWF0IFJvYWQKLQkJCQlCZWRmb3JkIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy00RSAgIChoZXgpCQlUQVNBIEludGVybmF0aW9uYWwgTGltaXRlZAotMDAxQzRFICAgICAoYmFzZSAxNikJCVRBU0EgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0JCQkJNUbCo8KsQnVpbGRpbmcywqPCrE5vLjEyOTUgLFhpbiBKaW5xaWFvIFJvYWQsCi0JCQkJU2hhbmdoYWkgIDIwMTIwNgotCQkJCUNISU5BCi0KLTAwLTFDLTRGICAgKGhleCkJCU1BQ0FCIEFCCi0wMDFDNEYgICAgIChiYXNlIDE2KQkJTUFDQUIgQUIKLQkJCQlWYW5uaMO2Z3NnYXRhbiA3Ci0JCQkJVHJlbGxlYm9yZyAgMjMxNjYKLQkJCQlTV0VERU4KLQotMDAtMUMtNTAgICAoaGV4KQkJVENMIFRlY2hub2x5IEVsZWN0cm9uaWNzKEh1aXpob3UpQ28uLEx0ZAotMDAxQzUwICAgICAoYmFzZSAxNikJCVRDTCBUZWNobm9seSBFbGVjdHJvbmljcyhIdWl6aG91KUNvLixMdGQKLQkJCQkxMC9GLCBCbG9jayBBICwgVENMIFRvd2VyCi0JCQkJMSBHYW94aW4gTmFuIFJvYWQsIE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUMtNTEgICAoaGV4KQkJQ2VsZW5vIENvbW11bmljYXRpb25zCi0wMDFDNTEgICAgIChiYXNlIDE2KQkJQ2VsZW5vIENvbW11bmljYXRpb25zCi0JCQkJMjIgWmFyaGluIFN0cmVldAotCQkJCVJhJ2FuYW5hICA0MzY2NQotCQkJCUlTUkFFTAotCi0wMC0xQy01MiAgIChoZXgpCQlWSVNJT05FRSBTUkwKLTAwMUM1MiAgICAgKGJhc2UgMTYpCQlWSVNJT05FRSBTUkwKLQkJCQlWSUFMRSBERUxMQSBSRVBVQkJMSUNBLCAyMgotCQkJCVZJTExPUkJBIFRSRVZJU08gMzEwNTAKLQkJCQlJVEFMWQotCi0wMC0xQy01MyAgIChoZXgpCQlTeW5lcmd5IExpZ2h0aW5nIENvbnRyb2xzCi0wMDFDNTMgICAgIChiYXNlIDE2KQkJU3luZXJneSBMaWdodGluZyBDb250cm9scwotCQkJCU9uZSBMaXRob25pYSBXYXkKLQkJCQlDb255ZXJzIEdBIDMwMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01NCAgIChoZXgpCQlIaWxsc3RvbmUgTmV0d29ya3MgSW5jCi0wMDFDNTQgICAgIChiYXNlIDE2KQkJSGlsbHN0b25lIE5ldHdvcmtzIEluYwotCQkJCUEtMTkwNSBlLVdpbmcgQ2VudGVyCi0JCQkJWmhpY2h1biBSb2FkLCBIYWlkaWFuCi0JCQkJQmVpamluZyAgMTAwMDg2Ci0JCQkJQ0hJTkEKLQotMDAtMUMtNTUgICAoaGV4KQkJU2hlbnpoZW4gS2FpZmEgVGVjaG5vbG9neSBDby4KLTAwMUM1NSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBLYWlmYSBUZWNobm9sb2d5IENvLgotCQkJCTcwMDYgQ2FpdGlhbiBSb2FkLCBGdXRpYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzNQotCQkJCUNISU5BCi0KLTAwLTFDLTU2ICAgKGhleCkJCVBhZG8gU3lzdGVtcywgSW5jLgotMDAxQzU2ICAgICAoYmFzZSAxNikJCVBhZG8gU3lzdGVtcywgSW5jLgotCQkJCSM3MDYgTG9hZGxhbmQgRVogVG93ZXIgMTUzCi0JCQkJR3VtaS1Eb25nLCBCdW5kYW5nLUd1Ci0JCQkJU3VuZ05hbSBHeXVuZyBnaS1EbyA0NjMtODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTU3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUM1NyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFDNTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNTkgICAoaGV4KQkJREVWT04gSVQKLTAwMUM1OSAgICAgKGJhc2UgMTYpCQlERVZPTiBJVAotCQkJCTExMDAgRklSU1QgQVZFTlVFCi0JCQkJU1VJVEUgMTAwCi0JCQkJS0lORyBPRiBQUlVTU0lBIFBBIDE5NDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01QSAgIChoZXgpCQlBZHZhbmNlZCBSZWxheSBDb3Jwb3JhdGlvbgotMDAxQzVBICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFJlbGF5IENvcnBvcmF0aW9uCi0JCQkJMTg5NiBDb2x1bWJpYSBTdAotCQkJCUV1Z2VuZSBPUiA5NzQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNUIgICAoaGV4KQkJQ2h1YmIgRWxlY3Ryb25pYyBTZWN1cml0eSBTeXN0ZW1zIEx0ZAotMDAxQzVCICAgICAoYmFzZSAxNikJCUNodWJiIEVsZWN0cm9uaWMgU2VjdXJpdHkgU3lzdGVtcyBMdGQKLQkJCQlTaGFkc3dvcnRoIFJvYWQKLQkJCQlCbGFja2J1cm4gTGFuY2FzaGlyZSBCQjEgMlBSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtNUMgICAoaGV4KQkJSW50ZWdyYXRlZCBNZWRpY2FsIFN5c3RlbXMsIEluYy4KLTAwMUM1QyAgICAgKGJhc2UgMTYpCQlJbnRlZ3JhdGVkIE1lZGljYWwgU3lzdGVtcywgSW5jLgotCQkJCTE5ODQgT2Jpc3BvIEF2ZW51ZQotCQkJCVNpZ25hbCBIaWxsIENBIDkwNzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy01RCAgIChoZXgpCQlMZWljYSBNaWNyb3N5c3RlbXMKLTAwMUM1RCAgICAgKGJhc2UgMTYpCQlMZWljYSBNaWNyb3N5c3RlbXMKLQkJCQlQT0JveCA4MAotCQkJCTUxNSBDb2xkaGFtcyBMYW5lCi0JCQkJQ2FtYnJpZGdlICBDQjEgM1laCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtNUUgICAoaGV4KQkJQVNUT04gRnJhbmNlCi0wMDFDNUUgICAgIChiYXNlIDE2KQkJQVNUT04gRnJhbmNlCi0JCQkJMTUxIEF2ZW51ZSBHYWxsaWVuaQotCQkJCUJBR05PTEVUIGlsZSBkZSBmcmFuY2UgOTMxNzcKLQkJCQlGUkFOQ0UKLQotMDAtMUMtNUYgICAoaGV4KQkJV2lubGFuZCBFbGVjdHJvbmljcywgSW5jLgotMDAxQzVGICAgICAoYmFzZSAxNikJCVdpbmxhbmQgRWxlY3Ryb25pY3MsIEluYy4KLQkJCQkxOTUwIEV4Y2VsIERyaXZlCi0JCQkJTWFua2F0byBNTiA1NjAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNjAgICAoaGV4KQkJQ1NQIEZyb250aWVyIFRlY2hub2xvZ2llcyxJbmMuCi0wMDFDNjAgICAgIChiYXNlIDE2KQkJQ1NQIEZyb250aWVyIFRlY2hub2xvZ2llcyxJbmMuCi0JCQkJMy0yLTMsU2FzYXp1a2EKLQkJCQlTaGlidXlhLWt1IFRva3lvIDE1MS0wMDczCi0JCQkJSkFQQU4KLQotMDAtMUMtNjEgICAoaGV4KQkJR2FsYXh5IFRlY2hub2xvZ3kgKEhLKSBMdGQuCi0wMDFDNjEgICAgIChiYXNlIDE2KQkJR2FsYXh5IFRlY2hub2xvZ3kgKEhLKSBMdGQuCi0JCQkJVW5pdCA4MDIsIDgvRiwgU2h1aSBIaW5nIENlbnRyZSwgMTMgU2hldW5nIFl1ZXQgUm9hZCwKLQkJCQlLb3dsb29uIEJheSAgS2xuLiwgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFDLTYyICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIEluYwotMDAxQzYyICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIEluYwotCQkJCTYwLTM5LCBHYXNhbi1Eb25nCi0JCQkJS3VtY2hvbi1HdQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTYzICAgKGhleCkJCVRSVUVOCi0wMDFDNjMgICAgIChiYXNlIDE2KQkJVFJVRU4KLQkJCQk0RiBTQU1XT04gQkxERy4sIDQ1MS03Ci0JCQkJIEJBTkdCQUUtRE9ORywgU0VPQ0hPLUdVCi0JCQkJU0VPVUwgIDEzNy04MTgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtNjQgICAoaGV4KQkJQ2VsbG5ldCtIdW50Ci0wMDFDNjQgICAgIChiYXNlIDE2KQkJQ2VsbG5ldCtIdW50Ci0JCQkJNjQzNiBDb3VudHkgUm9hZCAxMQotCQkJCVBlcXVvdCBMYWtlcyBNaW5uZXNvdGEgNTY0NzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTY1ICAgKGhleCkJCUpvZVNjYW4sIEluYy4KLTAwMUM2NSAgICAgKGJhc2UgMTYpCQlKb2VTY2FuLCBJbmMuCi0JCQkJMTE5IEUgOHRoIFN0LgotCQkJCVZhbmNvdXZlciBXQSA5ODY2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNjYgICAoaGV4KQkJVUNBTVAgQ08uLExURAotMDAxQzY2ICAgICAoYmFzZSAxNikJCVVDQU1QIENPLixMVEQKLQkJCQkjMTAxNSwgS29sb24gU2NpZW5jZSBWYWxsZXkgwqXCsQotCQkJCVNlb3VsIEd1cm8tRG9uZyxHdXJvLWd1LCAxNTItODQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTY3ICAgKGhleCkJCVB1bXBraW4gTmV0d29ya3MsIEluYy4KLTAwMUM2NyAgICAgKGJhc2UgMTYpCQlQdW1wa2luIE5ldHdvcmtzLCBJbmMuCi0JCQkJM0ZMIEp1bmdIbyBCbGRnLCAxMDgtNCBTYW5nZG8tRG9uZywgRG9uZ2phay1HdQotCQkJCVNFT1VMICAxNTYtMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTY4ICAgKGhleCkJCUFuaHVpIFN1biBDcmVhdGUgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTAwMUM2OCAgICAgKGJhc2UgMTYpCQlBbmh1aSBTdW4gQ3JlYXRlIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJTk8uMTk5IFhpYW5nemhhbmcgUm9hZAotCQkJCUhlZmVpIEFuaHVpIDIzMDA4OAotCQkJCUNISU5BCi0KLTAwLTFDLTY5ICAgKGhleCkJCVBhY2tldCBWaXNpb24gTHRkCi0wMDFDNjkgICAgIChiYXNlIDE2KQkJUGFja2V0IFZpc2lvbiBMdGQKLQkJCQlTQyBIb3VzZQotCQkJCVZhbndhbGwgUm9hZAotCQkJCU1haWRlbmhlYWQgQmVya3MgU0w2IDRVQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFDLTZBICAgKGhleCkJCVdlaXNzIEVuZ2luZWVyaW5nIEx0ZC4KLTAwMUM2QSAgICAgKGJhc2UgMTYpCQlXZWlzcyBFbmdpbmVlcmluZyBMdGQuCi0JCQkJRmxvcmFzdHJhc3NlIDQyCi0JCQkJVXN0ZXIgWkggODYxMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFDLTZCICAgKGhleCkJCUNPVkFYICBDby4gTHRkCi0wMDFDNkIgICAgIChiYXNlIDE2KQkJQ09WQVggIENvLiBMdGQKLQkJCQkzLTI3LTIyIGtpdGFoYW5hZGEtY2hvIGtpdGFrdQotCQkJCXNha2FpLXNoaSBvb3Nha2EgNTkxLTgwMDIKLQkJCQlKQVBBTgotCi0wMC0xQy02QyAgIChoZXgpCQlKYWJpbCBDaXJjdWl0IChHdWFuZ3pob3UpIExpbWl0ZWQKLTAwMUM2QyAgICAgKGJhc2UgMTYpCQlKYWJpbCBDaXJjdWl0IChHdWFuZ3pob3UpIExpbWl0ZWQKLQkJCQkxMjgsIEp1biBDaGVuZyBSb2FkLHVhbmd6aG91IEVjb25vbWljIGFuZCBUZWNobm9sb2dpY2FsIERldmVsb3BtZW50IERpc3RyaWN0Ci0JCQkJR3Vhbmdkb25nIFByb3ZpbmNlCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA1MzAKLQkJCQlDSElOQQotCi0wMC0xQy02RCAgIChoZXgpCQlLWU9IUklUU1UgRUxFQ1RST05JQyBJTkRVU1RSWSBDTy4sIExURC4KLTAwMUM2RCAgICAgKGJhc2UgMTYpCQlLWU9IUklUU1UgRUxFQ1RST05JQyBJTkRVU1RSWSBDTy4sIExURC4KLQkJCQkyLTUtMSwgTklQUE9OQkFTSEktTklTSEksCi0JCQkJTkFOSVdBLUtVCi0JCQkJT1NBS0EgIDU1Ni0wMDA0Ci0JCQkJSkFQQU4KLQotMDAtMUMtNkUgICAoaGV4KQkJTmV3YnVyeSBOZXR3b3JrcywgSW5jLgotMDAxQzZFICAgICAoYmFzZSAxNikJCU5ld2J1cnkgTmV0d29ya3MsIEluYy4KLQkJCQk0MTkgQm95bHN0b24gU3RyZWV0Ci0JCQkJQm9zdG9uIE1BIDAyMTE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy02RiAgIChoZXgpCQlFbWZpdCBMdGQKLTAwMUM2RiAgICAgKGJhc2UgMTYpCQlFbWZpdCBMdGQKLQkJCQlLb250dGlzZW50aWUgOCBCCi0JCQkJVmFhamFrb3NraSAgNDA4MDAKLQkJCQlGSU5MQU5ECi0KLTAwLTFDLTcwICAgKGhleCkJCU5PVkFDT01NIExUREEKLTAwMUM3MCAgICAgKGJhc2UgMTYpCQlOT1ZBQ09NTSBMVERBCi0JCQkJUlVBIEJFSUpVSSwgNzAKLQkJCQlTQU5UTyBBTUFSTwotCQkJCVNBTyBQQVVMTyAgMDQ2ODktMDAwCi0JCQkJQlJBWklMCi0KLTAwLTFDLTcxICAgKGhleCkJCUVtZXJnZW50IEVsZWN0cm9uaWNzCi0wMDFDNzEgICAgIChiYXNlIDE2KQkJRW1lcmdlbnQgRWxlY3Ryb25pY3MKLQkJCQlCbGRnIDIgTGV2ZWwgMyBTdWl0ZSAzMDUKLQkJCQkyNTkxIFdleGZvcmQtQmF5bmUgUm9hZAotCQkJCVNld2lja2xleSBQQSAxNTE0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNzIgICAoaGV4KQkJTWF5ZXIgJiBDaWUgR21iSCAmIENvIEtHCi0wMDFDNzIgICAgIChiYXNlIDE2KQkJTWF5ZXIgJiBDaWUgR21iSCAmIENvIEtHCi0JCQkJRW1pbCBNYXllciBTdHJhc3NlIDEwCi0JCQkJQWxic3RhZHQgQmFkZW4gV8O8cnR0ZW1iZXJnIDcyNDYxCi0JCQkJR0VSTUFOWQotCi0wMC0xQy03MyAgIChoZXgpCQlBcmlzdGEgTmV0d29ya3MsIEluYy4KLTAwMUM3MyAgICAgKGJhc2UgMTYpCQlBcmlzdGEgTmV0d29ya3MsIEluYy4KLQkJCQkyNzUgTWlkZGxlZmllbGQgUm9hZCwgU3RlIDUwCi0JCQkJTWVubG8gUGFyayBDYWxpZm9ybmlhIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy03NCAgIChoZXgpCQlTeXN3YW4gVGVjaG5vbG9naWVzIEluYy4KLTAwMUM3NCAgICAgKGJhc2UgMTYpCQlTeXN3YW4gVGVjaG5vbG9naWVzIEluYy4KLQkJCQkyMDUwIEJlYXZlcmNyZWVrIFJvYWQKLQkJCQlTdWl0ZSAxMDEgIzM4OAotCQkJCU9yZWdvbiBDaXR5IE9yZWdvbiA5NzA0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtNzUgICAoaGV4KQkJUkYgU3lzdGVtcyBHbWJICi0wMDFDNzUgICAgIChiYXNlIDE2KQkJUkYgU3lzdGVtcyBHbWJICi0JCQkJRWluc3RlaW5zdHJhw4PFuGUgMTEKLQkJCQlWaWVybmhlaW0gSGVzc2VuIEQgNjg1MTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLTc2ICAgKGhleCkJCVRoZSBXYW5kc3dvcnRoIEdyb3VwIEx0ZAotMDAxQzc2ICAgICAoYmFzZSAxNikJCVRoZSBXYW5kc3dvcnRoIEdyb3VwIEx0ZAotCQkJCUFsYmVydCBEcml2ZQotCQkJCVNoZWVyd2F0ZXIKLQkJCQlXb2tpbmcgU3VycmV5IEdVMjEgNVNFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUMtNzcgICAoaGV4KQkJUHJvZHlzCi0wMDFDNzcgICAgIChiYXNlIDE2KQkJUHJvZHlzCi0JCQkJQy9UcmlnbyA1NCBQb2wuIEluZC4gUG9sdm9yYW5jYQotCQkJCUxlZ2FuZXMgTUFEUklEIDI4OTE0Ci0JCQkJU1BBSU4KLQotMDAtMUMtNzggICAoaGV4KQkJV1lQTEFZIFNBUwotMDAxQzc4ICAgICAoYmFzZSAxNikJCVdZUExBWSBTQVMKLQkJCQkyMDAgYXZlbnVlIGRlIFByb3ZlbmNlCi0JCQkJQUxMQVVDSCBCZFIgMTMxOTAKLQkJCQlGUkFOQ0UKLQotMDAtMUMtNzkgICAoaGV4KQkJQ29oZXNpdmUgRmluYW5jaWFsIFRlY2hub2xvZ2llcyBMTEMKLTAwMUM3OSAgICAgKGJhc2UgMTYpCQlDb2hlc2l2ZSBGaW5hbmNpYWwgVGVjaG5vbG9naWVzIExMQwotCQkJCTIwMCBTb3V0aCBXYWNrZXIgRHIuCi0JCQkJU3VpdGUgMTUwMAotCQkJCUNoaWNhZ28gSUwgNjA2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLTdBICAgKGhleCkJCVBlcmZlY3RvbmUgTmV0d2FyZSBDb21wYW55IEx0ZAotMDAxQzdBICAgICAoYmFzZSAxNikJCVBlcmZlY3RvbmUgTmV0d2FyZSBDb21wYW55IEx0ZAotCQkJCVVuaXQgODE1LCBTdW4gRnVuZyBDZW50cmUsCi0JCQkJS3dvayBTaHVpIFJkLAotCQkJCUt3YWkgQ2h1bmcgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xQy03QiAgIChoZXgpCQlDYXN0bGVuZXQgVGVjaG5vbG9neSBJbmMuCi0wMDFDN0IgICAgIChiYXNlIDE2KQkJQ2FzdGxlbmV0IFRlY2hub2xvZ3kgSW5jLgotCQkJCU5vLjY0LCBDaHVuZy1TaGFuIFJkLgotCQkJCVR1LUNoZW5nIENpdHkgVGFpcGVpIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtN0MgICAoaGV4KQkJUEVSUSBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDFDN0MgICAgIChiYXNlIDE2KQkJUEVSUSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMjYwMCBMSUJFUkVUWSBBVkVOVUUKLQkJCQlQLk8uIEJPWCAyNjAwCi0JCQkJUElUVFNCVVJHSCBQQSAxNTIzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtN0QgICAoaGV4KQkJRXhjZWxwb2ludCBNYW51ZmFjdHVyaW5nIFB0ZSBMdGQKLTAwMUM3RCAgICAgKGJhc2UgMTYpCQlFeGNlbHBvaW50IE1hbnVmYWN0dXJpbmcgUHRlIEx0ZAotCQkJCTE1LCBDaGFuZ2kgQnVzaW5lc3MgUGFyawotCQkJCUNlbnRyYWwgMSwgNXRoIExldmVsCi0JCQkJNDg2MDU3Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTFDLTdFICAgKGhleCkJCVRvc2hpYmEKLTAwMUM3RSAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LFN1ZWhpcm8tQ2hvCi0JCQkJT21lIFRva3lvIDE5ODg3MTAKLQkJCQlKQVBBTgotCi0wMC0xQy03RiAgIChoZXgpCQlDaGVjayBQb2ludCBTb2Z0d2FyZSBUZWNobm9sb2dpZXMKLTAwMUM3RiAgICAgKGJhc2UgMTYpCQlDaGVjayBQb2ludCBTb2Z0d2FyZSBUZWNobm9sb2dpZXMKLQkJCQkzQSBKYWJvdGluc2t5IFN0LgotCQkJCURpYW1vbmQgVG93ZXIKLQkJCQlSYW1hdCBHYW4gIDUyNTIwCi0JCQkJSVNSQUVMCi0KLTAwLTFDLTgwICAgKGhleCkJCU5ldyBCdXNpbmVzcyBEaXZpc2lvbi9SaGVhLUluZm9ybWF0aW9uIENPLiwgTFRELgotMDAxQzgwICAgICAoYmFzZSAxNikJCU5ldyBCdXNpbmVzcyBEaXZpc2lvbi9SaGVhLUluZm9ybWF0aW9uIENPLiwgTFRELgotCQkJCTRGIDU5NCBZZW9uZyBQdW5nIEJsZGcsIEd1ZXVpLURvbmcKLQkJCQlTZW91bCBHd2FuZ2ppbi1HdSAxNDMtMjAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLTgxICAgKGhleCkJCU5leHRHZW4gVmVudHVyaSBMVEQKLTAwMUM4MSAgICAgKGJhc2UgMTYpCQlOZXh0R2VuIFZlbnR1cmkgTFRECi0JCQkJVGVjaG5pdW0gMgotCQkJCUtpbmdzIFJvYWQKLQkJCQlTd2Fuc2VhIFdlc3QgR2xhbW9yZ2FuIFNBMThQSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFDLTgyICAgKGhleCkJCUdlbmV3IFRlY2hub2xvZ2llcwotMDAxQzgyICAgICAoYmFzZSAxNikJCUdlbmV3IFRlY2hub2xvZ2llcwotCQkJCTNBMyBCdWlsZGluZyBCMSwgQ3liZXItdGVjaCBab25lLAotCQkJCUdhb3hpbiBBdmUuIDdTLCBIaS10ZWNoIEluZHVzdHJpYWwgUGFyaywKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUMtODMgICAoaGV4KQkJTmV3IExldmVsIFRlbGVjb20gQ28uLCBMdGQuCi0wMDFDODMgICAgIChiYXNlIDE2KQkJTmV3IExldmVsIFRlbGVjb20gQ28uLCBMdGQuCi0JCQkJSU5OT1BMRVggMS03MDMKLQkJCQkzNzEtNDcsICBHYXNhbi1Eb25nLCBHZXVtY2hlb24tR3UKLQkJCQlTZW91bCAgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy04NCAgIChoZXgpCQlTVEwgU29sdXRpb24gQ28uLEx0ZC4KLTAwMUM4NCAgICAgKGJhc2UgMTYpCQlTVEwgU29sdXRpb24gQ28uLEx0ZC4KLQkJCQkjNzEwLCBXb3JsZCBNZXJpZGlhbiBWZW50dXJlIENlbnRlciBJCi0JCQkJNjAtMjQsIEdhc2FuLWRvbmcsIEdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTI3ODEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtODUgICAoaGV4KQkJRXVuaWNvcm4KLTAwMUM4NSAgICAgKGJhc2UgMTYpCQlFdW5pY29ybgotCQkJCTIyNi0xNiB1bmJvIGIvZCBzdWNrY2hvbi1kb25nIHNvbmdwYS1ndQotCQkJCXNlb3VsICAxMzg4NDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtODYgICAoaGV4KQkJQ3Jhbml0ZSBTeXN0ZW1zLCBJbmMuCi0wMDFDODYgICAgIChiYXNlIDE2KQkJQ3Jhbml0ZSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTIxIEFsYnJpZ2h0IFdheQotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtODcgICAoaGV4KQkJVXJpdmVyIEluYy4KLTAwMUM4NyAgICAgKGJhc2UgMTYpCQlVcml2ZXIgSW5jLgotCQkJCTNyZC4sIEZsLiwgQm9nd2FuZyBCbGRnLiwgUG9pLWRvbmcsIDIzOC03IEdhbmduYW0tZ3UsCi0JCQkJU2VvdWwgIDEzNS05NjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtODggICAoaGV4KQkJVFJBTlNZU1RFTSBJTkMuCi0wMDFDODggICAgIChiYXNlIDE2KQkJVFJBTlNZU1RFTSBJTkMuCi0JCQkJTm8uIDEtMiwgTGktSHNpbiBSZCAxLCBTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtODkgICAoaGV4KQkJRm9yY2UgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMUM4OSAgICAgKGJhc2UgMTYpCQlGb3JjZSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCVBPIEJveCAyNTAyODYKLQkJCQlQbGFubyBUWCA3NTAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtOEEgICAoaGV4KQkJQ2lycmFzY2FsZSBDb3Jwb3JhdGlvbgotMDAxQzhBICAgICAoYmFzZSAxNikJCUNpcnJhc2NhbGUgQ29ycG9yYXRpb24KLQkJCQk5NDQ5IENhcnJvbGwgUGFyayBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtOEIgICAoaGV4KQkJTUogSW5ub3ZhdGlvbnMgTHRkLgotMDAxQzhCICAgICAoYmFzZSAxNikJCU1KIElubm92YXRpb25zIEx0ZC4KLQkJCQkzMzMgV3llY3JvZnQgUm9hZAotCQkJCVVuaXQgMwotCQkJCU9ha3ZpbGxlIE9udGFyaW8gTDZLIDJIMgotCQkJCUNBTkFEQQotCi0wMC0xQy04QyAgIChoZXgpCQlESUFMIFRFQ0hOT0xPR1kgTFRELgotMDAxQzhDICAgICAoYmFzZSAxNikJCURJQUwgVEVDSE5PTE9HWSBMVEQuCi0JCQkJNkYtNCwgTk8uMTgsIExBTkUuNjA5LCBTRUMuNSwgQ0hPTkdTSU4gUkQuLAotCQkJCVNBTkNIT05HIENJVFkgVEFJUEVJIENPVU5UWSAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLThEICAgKGhleCkJCU1lc2EgSW1hZ2luZwotMDAxQzhEICAgICAoYmFzZSAxNikJCU1lc2EgSW1hZ2luZwotCQkJCUJhZGVuZXJzdHJhc3NlIDU2OQotCQkJCVrDvHJpY2ggWkggODA0OAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFDLThFICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50IElQRAotMDAxQzhFICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50IElQRAotCQkJCTcwMSBFLiBNaWRkbGVmaWVsZCBSZC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy04RiAgIChoZXgpCQlBZHZhbmNlZCBFbGVjdHJvbmljIERlc2lnbiwgSW5jLgotMDAxQzhGICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIEVsZWN0cm9uaWMgRGVzaWduLCBJbmMuCi0JCQkJMzQ0IEpvaG4gTCBEaWV0c2NoIEJsdmQuLCBVbml0ICMyCi0JCQkJTm9ydGggQXR0bGVib3JvIE1BIDAyNzYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy05MCAgIChoZXgpCQlFbXBhY2tldCBDb3Jwb3JhdGlvbgotMDAxQzkwICAgICAoYmFzZSAxNikJCUVtcGFja2V0IENvcnBvcmF0aW9uCi0JCQkJT3Nha2kgS0kgYmxkZy4KLQkJCQkxLTE5LTEwIE9zYWtpCi0JCQkJU2hpbmFnYXdhIFRva3lvIDE0MS0wMDMyCi0JCQkJSkFQQU4KLQotMDAtMUMtOTEgICAoaGV4KQkJR2VmZW4gSW5jLgotMDAxQzkxICAgICAoYmFzZSAxNikJCUdlZmVuIEluYy4KLQkJCQkyMDYwMCBOb3JkaG9mZiBTdHJlZXQKLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy05MiAgIChoZXgpCQlUZXJ2ZWxhCi0wMDFDOTIgICAgIChiYXNlIDE2KQkJVGVydmVsYQotCQkJCTQzIE5hZ29nIFBhcmsKLQkJCQlTdWl0ZSAyMDEKLQkJCQlBY3RvbiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtOTMgICAoaGV4KQkJRXhhRGlnbSBJbmMKLTAwMUM5MyAgICAgKGJhc2UgMTYpCQlFeGFEaWdtIEluYwotCQkJCTI4NzEgUHVsbG1hbiBTdAotCQkJCVNhbnRhIEFuYSBDQSA5MjcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtOTQgICAoaGV4KQkJTEktQ09SIEJpb3NjaWVuY2VzCi0wMDFDOTQgICAgIChiYXNlIDE2KQkJTEktQ09SIEJpb3NjaWVuY2VzCi0JCQkJNDY0NyBTdXBlcmlvciBTdHJlZXQKLQkJCQlMaW5jb2xuIE5FIDY4NTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy05NSAgIChoZXgpCQlPcHRpY29tbSBDb3Jwb3JhdGlvbgotMDAxQzk1ICAgICAoYmFzZSAxNikJCU9wdGljb21tIENvcnBvcmF0aW9uCi0JCQkJNjgyNyBOYW5jeSBSaWRnZSBEcgotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtOTYgICAoaGV4KQkJTGlua3dpc2UgVGVjaG5vbG9neSBQdGUgTHRkCi0wMDFDOTYgICAgIChiYXNlIDE2KQkJTGlua3dpc2UgVGVjaG5vbG9neSBQdGUgTHRkCi0JCQkJQmxrIDMsIEFuZyBNbyBLaW8gSW5kdXN0cmlhbCBQYXJrIDJBCi0JCQkJIzA2LTAzLiBBTUsgVGVjaCBJCi0JCQkJNTY4MDUwCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTFDLTk3ICAgKGhleCkJCUVuenl0ZWsgVGVjaG5vbG9neSBJbmMuLAotMDAxQzk3ICAgICAoYmFzZSAxNikJCUVuenl0ZWsgVGVjaG5vbG9neSBJbmMuLAotCQkJCTdGLCBOby4zNSwgSHN1ZWggRnUgUmQuLAotCQkJCUhzaW5jaHUgIDMwMCwKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLTk4ICAgKGhleCkJCUxVQ0tZIFRFQ0hOT0xPR1kgKEhLKSBDT01QQU5ZIExJTUlURUQKLTAwMUM5OCAgICAgKGJhc2UgMTYpCQlMVUNLWSBURUNITk9MT0dZIChISykgQ09NUEFOWSBMSU1JVEVECi0JCQkJRkxBVC9STSAxNTAzIDE1L0YgSVNMQU5EIEJFVkVSTEVZIE5PIDEgR1JFQVQgR0VPUkdFIFNUUkVFVCBDQVVTRVdBWSBCQVkKLQkJCQk5OTkwNzcKLQkJCQlIT05HIEtPTkcKLQotMDAtMUMtOTkgICAoaGV4KQkJU2h1bnJhIFNvZnR3YXJlIEx0ZC4KLTAwMUM5OSAgICAgKGJhc2UgMTYpCQlTaHVucmEgU29mdHdhcmUgTHRkLgotCQkJCTIwIEhhdGEnYXMgU3QuCi0JCQkJS2VmYXItU2FiYSAgNDQ0MjUKLQkJCQlJU1JBRUwKLQotMDAtMUMtOUEgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUM5QSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUMtOUIgICAoaGV4KQkJRkVJRyBFTEVDVFJPTklDIEdtYkgKLTAwMUM5QiAgICAgKGJhc2UgMTYpCQlGRUlHIEVMRUNUUk9OSUMgR21iSAotCQkJCUxhbmdlIFN0cmHDg8W4ZSA0Ci0JCQkJV2VpbGJ1cmcgSGVzc2VuIDM1NzgxCi0JCQkJR0VSTUFOWQotCi0wMC0xQy05QyAgIChoZXgpCQlOb3J0ZWwKLTAwMUM5QyAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUMtOUQgICAoaGV4KQkJTGllY3RoaSBBRwotMDAxQzlEICAgICAoYmFzZSAxNikJCUxpZWN0aGkgQUcKLQkJCQkxMCBVbnRlcmhvbHogU3RyZWV0Ci0JCQkJS3JpZWdzdGV0dGVuIFNvbG90aHVybiA0NTY2Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUMtOUUgICAoaGV4KQkJRHVhbHRlY2ggSVQgQUIKLTAwMUM5RSAgICAgKGJhc2UgMTYpCQlEdWFsdGVjaCBJVCBBQgotCQkJCUJhbmVoYWdzZ2F0YW4gMUYKLQkJCQlHT1RIRU5CVVJHIFbDpHN0cmEgR8O2dGFsYW5kIDQxNDUxCi0JCQkJU1dFREVOCi0KLTAwLTFDLTlGICAgKGhleCkJCVJhem9yc3RyZWFtLCBMTEMKLTAwMUM5RiAgICAgKGJhc2UgMTYpCQlSYXpvcnN0cmVhbSwgTExDCi0JCQkJMjM4MS1DIFJlbmFpc3NhbmNlIERyaXZlCi0JCQkJTGFzIFZlZ2FzIE5WIDg5MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1BMCAgIChoZXgpCQlQcm9kdWN0aW9uIFJlc291cmNlIEdyb3VwLCBMTEMKLTAwMUNBMCAgICAgKGJhc2UgMTYpCQlQcm9kdWN0aW9uIFJlc291cmNlIEdyb3VwLCBMTEMKLQkJCQk1MzkgVGVtcGxlIEhpbGwgUm9hZAotCQkJCU5ldyBXaW5kc29yIE5ZIDEyNTUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1BMSAgIChoZXgpCQlBS0FNQUkgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDFDQTEgICAgIChiYXNlIDE2KQkJQUtBTUFJIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTggQ0FNQlJJREdFIENFTlRFUgotCQkJCUNBTUJSSURHRSBNQSAwMjE0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQTIgICAoaGV4KQkJQURCIEJyb2FkYmFuZCBJdGFsaWEKLTAwMUNBMiAgICAgKGJhc2UgMTYpCQlBREIgQnJvYWRiYW5kIEl0YWxpYQotCQkJCVZJQUxFIFNBUkNBIDIyMgotCQkJCU1JTEFOTyAgMjAxMjYKLQkJCQlJVEFMWQotCi0wMC0xQy1BMyAgIChoZXgpCQlUZXJyYQotMDAxQ0EzICAgICAoYmFzZSAxNikJCVRlcnJhCi0JCQkJRHJhdWd5c3RlcyBzdHIuIDIyCi0JCQkJS2F1bmFzICBMVC01MTI1NgotCQkJCUxJVEhVQU5JQQotCi0wMC0xQy1BNCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAxQ0E0ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2vDpW5lIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTAwLTFDLUE1ICAgKGhleCkJCVp5Z28gQ29ycG9yYXRpb24KLTAwMUNBNSAgICAgKGJhc2UgMTYpCQlaeWdvIENvcnBvcmF0aW9uCi0JCQkJMjEgTGF1cmVsIEJyb29rIFJkLgotCQkJCU1pZGRsZWZpZWxkIENUIDA2NDU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1BNiAgIChoZXgpCQlXaW40TkVUCi0wMDFDQTYgICAgIChiYXNlIDE2KQkJV2luNE5FVAotCQkJCTEzMDEgS09MT04gRGlnaXRhbCBUb3dlciwKLQkJCQkyMjItNyBLdXJvLWRvbmcKLQkJCQlLdXJvLWd1IFNlb3VsIDE1Mi04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtQTcgICAoaGV4KQkJSW50ZXJuYXRpb25hbCBRdWFydHogTGltaXRlZAotMDAxQ0E3ICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgUXVhcnR6IExpbWl0ZWQKLQkJCQkybmQgRmxvb3IsIDIsIERhaSBXYW5nIFN0cmVldCwKLQkJCQlUYWkgUG8gSW5kdXN0cmlhbCBFc3RhdGUsIFRhaSBQbywgTi5ULgotCQkJCUhvbmcgS29uZyA4NTIKLQkJCQlDSElOQQotCi0wMC0xQy1BOCAgIChoZXgpCQlBaXJUaWVzIFdpcmVsZXNzIE5ldHdvcmtzCi0wMDFDQTggICAgIChiYXNlIDE2KQkJQWlyVGllcyBXaXJlbGVzcyBOZXR3b3JrcwotCQkJCUJ1eXVrZGVyZSBDYWQgTm8gMTAzIEthdCA1Ci0JCQkJTWVjaWRpeWVrb3ksIElzdGFuYnVsIDM0NDYwCi0JCQkJVFVSS0VZCi0KLTAwLTFDLUE5ICAgKGhleCkJCUF1ZGlvbWF0aWNhIFNybAotMDAxQ0E5ICAgICAoYmFzZSAxNikJCUF1ZGlvbWF0aWNhIFNybAotCQkJCVZpYSBNYW5mcmVkaSAxMgotCQkJCUZsb3JlbmNlIEl0YWx5IDUwMTM2Ci0JCQkJSVRBTFkKLQotMDAtMUMtQUEgICAoaGV4KQkJQmVsbG9uIFB0eSBMdGQKLTAwMUNBQSAgICAgKGJhc2UgMTYpCQlCZWxsb24gUHR5IEx0ZAotCQkJCVVuaXQgMTIvMTItMTggVmljdG9yaWEgU3QgRWFzdAotCQkJCUxpZGNvbWJlIE5TVyAyMDAwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTFDLUFCICAgKGhleCkJCU1leWVyIFNvdW5kIExhYm9yYXRvcmllcywgSW5jLgotMDAxQ0FCICAgICAoYmFzZSAxNikJCU1leWVyIFNvdW5kIExhYm9yYXRvcmllcywgSW5jLgotCQkJCTI4MzIgU2FuIFBhYmxvIEF2ZS4KLQkJCQlCZXJrZWxleSBDQSA5NDcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQUMgICAoaGV4KQkJUW5pcSBUZWNobm9sb2d5IENvcnAuCi0wMDFDQUMgICAgIChiYXNlIDE2KQkJUW5pcSBUZWNobm9sb2d5IENvcnAuCi0JCQkJNUYsIE5vLjEzMywgU2VjLjQsIE1pbnNoZW5nIEUuIFJkLiwKLQkJCQlTb25nc2hhbiBEaXN0cmljdCwKLQkJCQlUYWlwZWkgIDEwNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtQUQgICAoaGV4KQkJV3VoYW4gVGVsZWNvbW11bmljYXRpb24gRGV2aWNlcyBDby4sTHRkCi0wMDFDQUQgICAgIChiYXNlIDE2KQkJV3VoYW4gVGVsZWNvbW11bmljYXRpb24gRGV2aWNlcyBDby4sTHRkCi0JCQkJODggWW91a2V5dWFuIFJvYWQsSG9uZ3NoYW4gRGlzdHJpY3QKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi0wMC0xQy1BRSAgIChoZXgpCQlXaUNob3J1cywgSW5jLgotMDAxQ0FFICAgICAoYmFzZSAxNikJCVdpQ2hvcnVzLCBJbmMuCi0JCQkJMzU5MCBOIDFzdCBTdHJlZXQsIFN1aXRlIDMwMAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1BRiAgIChoZXgpCQlQbGF0byBOZXR3b3JrcyBJbmMuCi0wMDFDQUYgICAgIChiYXNlIDE2KQkJUGxhdG8gTmV0d29ya3MgSW5jLgotCQkJCTI4NTUgS2lmZXIgUm9hZAotCQkJCVN1aXRlIDIwNAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CMCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFDQjAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQjEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQ0IxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUIyICAgKGhleCkJCUJQVCBTUEEKLTAwMUNCMiAgICAgKGJhc2UgMTYpCQlCUFQgU1BBCi0JCQkJVmlhIFN0YXppb25lLDQ4Ci0JCQkJU2VzdG8gYWwgUmVnaGVuYSBQb3JkZW5vbmUgMzMwNzkKLQkJCQlJVEFMWQotCi0wMC0xQy1CMyAgIChoZXgpCQlBUFBMRSwgSU5DCi0wMDFDQjMgICAgIChiYXNlIDE2KQkJQVBQTEUsIElOQwotCQkJCTEgSU5GSU5JVEUgTE9PUAotCQkJCUNVUEVSVElOTyBDQUxJRk9STklBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CNCAgIChoZXgpCQlJcmlkaXVtIFNhdGVsbGl0ZSBMTEMKLTAwMUNCNCAgICAgKGJhc2UgMTYpCQlJcmlkaXVtIFNhdGVsbGl0ZSBMTEMKLQkJCQk4NDQwIFMuIFJpdmVyIFBhcmt3YXkKLQkJCQlUZW1wZSBBWiA4NTI4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQjUgICAoaGV4KQkJTmVpaHVhIE5ldHdvcmsgVGVjaG5vbG9neSBDby4sTFRELihOSE4pCi0wMDFDQjUgICAgIChiYXNlIDE2KQkJTmVpaHVhIE5ldHdvcmsgVGVjaG5vbG9neSBDby4sTFRELihOSE4pCi0JCQkJUGxvdCBYaW5tZWkgUm9hZCAxMDItUSxOZXcgRGlzdHJpY3QKLQkJCQlXdVhpIEppYW5nc3UgMjE0MDI4Ci0JCQkJQ0hJTkEKLQotMDAtMUMtQjYgICAoaGV4KQkJRHV6b24gQ05UIENvLiwgTHRkLgotMDAxQ0I2ICAgICAoYmFzZSAxNikJCUR1em9uIENOVCBDby4sIEx0ZC4KLQkJCQkxNHRoIEZsb29yLCBJUkUgYnVpbGRpbmcgMgotCQkJCVlhbmdweXVuZy1kb25nIDRnYSwgWW91bmdkdW5ncG8tZ3UKLQkJCQlTZW91bCAgMTUwLTk2NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xQy1CNyAgIChoZXgpCQlVU0MgRGlnaUFyayBDb3Jwb3JhdGlvbgotMDAxQ0I3ICAgICAoYmFzZSAxNikJCVVTQyBEaWdpQXJrIENvcnBvcmF0aW9uCi0JCQkJNkYgVGVubm96IENlbnRyYWwgVG93ZXIgMi0yLTI0IEhpZ2FzaGlzaGluYWdhd2EKLQkJCQlUb2t5byBTaGluYWdhd2Eta3UgMTQwLTAwMDIKLQkJCQlKQVBBTgotCi0wMC0xQy1COCAgIChoZXgpCQlDQkMgQ28uLCBMdGQKLTAwMUNCOCAgICAgKGJhc2UgMTYpCQlDQkMgQ28uLCBMdGQKLQkJCQkyLTE1LTEzLCBUc3VraXNoaW1hLCBDaHVvLWt1Ci0JCQkJVG9reW8gIDEwNC0wMDUyCi0JCQkJSkFQQU4KLQotMDAtMUMtQjkgICAoaGV4KQkJS1dBTkcgU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLTAwMUNCOSAgICAgKGJhc2UgMTYpCQlLV0FORyBTVU5HIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTIwMSwgV09STEQgVkVOVFVSRSBUT1dOIDYwLTI0LCBHQVNBTi1ET05HIEdFVU1DSFVOLUdVLAotCQkJCVNFT1VMICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLUJBICAgKGhleCkJCVZlclNjaWVudCwgSW5jLgotMDAxQ0JBICAgICAoYmFzZSAxNikJCVZlclNjaWVudCwgSW5jLgotCQkJCTc3MDAgRXF1aXRhYmxlIERyaXZlCi0JCQkJU3VpdGUgMTAwCi0JCQkJRWRlbiBQcmFpcmllIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CQiAgIChoZXgpCQlNdXNpY2lhbkxpbmsKLTAwMUNCQiAgICAgKGJhc2UgMTYpCQlNdXNpY2lhbkxpbmsKLQkJCQkyNDAxIENvcnkgQXZlLgotCQkJCVNhbiBKb3NlIENBIDk1MTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CQyAgIChoZXgpCQlDYXN0R3JhYmJlciwgTExDCi0wMDFDQkMgICAgIChiYXNlIDE2KQkJQ2FzdEdyYWJiZXIsIExMQwotCQkJCTY1MDcgV2lsa2lucyBBdmVudWUKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1CRCAgIChoZXgpCQlFenplIE1vYmlsZSBUZWNoLiwgSW5jLgotMDAxQ0JEICAgICAoYmFzZSAxNikJCUV6emUgTW9iaWxlIFRlY2guLCBJbmMuCi0JCQkJM0YsIEJ1Ym11c2EgQmxkZy4sIDE1MS0zMQotCQkJCU5vbmh5dW4tZG9uZywgS2FuZ25hbS1rdQotCQkJCVNlb3VsIDEzNS04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtQkUgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFDQkUgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gS1lPVE8gNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xQy1CRiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMUNCRiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFDLUMwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxQ0MwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUMtQzEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDFDQzEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4uIFVTIDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElsbGlub2lzIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1DMiAgIChoZXgpCQlQYXJ0IElJIFJlc2VhcmNoLCBJbmMuCi0wMDFDQzIgICAgIChiYXNlIDE2KQkJUGFydCBJSSBSZXNlYXJjaCwgSW5jLgotCQkJCTQ2MDEgRS4gQWlycG9ydCBEci4KLQkJCQlPbnRhcmlvIENBIDkxNzYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1DMyAgIChoZXgpCQlQYWNlIHBsYwotMDAxQ0MzICAgICAoYmFzZSAxNikJCVBhY2UgcGxjCi0JCQkJU2FsdHMgTWlsbAotCQkJCVZpY3RvcmlhIFJvYWQKLQkJCQlCcmFkZm9yZCBXZXN0IFlvcmtzaGlyZSBCRDE4IDNMRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFDLUM0ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDFDQzQgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCW1zMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQzUgICAoaGV4KQkJM0NPTSBMVEQKLTAwMUNDNSAgICAgKGJhc2UgMTYpCQkzQ09NIExURAotCQkJCTNDb20gRXVyb3BlIEx0ZCwgUGVvcGxlYnVpbGRpbmcgMgotCQkJCVBlb3BsZWJ1aWxkaW5nIEVzdGF0ZSwgTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xQy1DNiAgIChoZXgpCQlQcm9TdG9yIFN5c3RlbXMKLTAwMUNDNiAgICAgKGJhc2UgMTYpCQlQcm9TdG9yIFN5c3RlbXMKLQkJCQk1NTU1IENlbnRyYWwgQXZlbnVlCi0JCQkJU3VpdGUgMTAwCi0JCQkJQm91bGRlciBDb2xvcmFkbyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtQzcgICAoaGV4KQkJUmVtYnJhbmR0IFRlY2hub2xvZ2llcywgTExDIGQvYi9hIFJFTVNUUkVBTQotMDAxQ0M3ICAgICAoYmFzZSAxNikJCVJlbWJyYW5kdCBUZWNobm9sb2dpZXMsIExMQyBkL2IvYSBSRU1TVFJFQU0KLQkJCQkxNDAgU291dGggQmV2ZXJseSBEcml2ZQotCQkJCVN1aXRlIDIwMwotCQkJCUJldmVybHkgSGlsbHMgQ0EgOTAyMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUM4ICAgKGhleCkJCUlORFVTVFJPTklDIEluZHVzdHJpZS1FbGVjdHJvbmljIEdtYkggJiBDby4gS0cKLTAwMUNDOCAgICAgKGJhc2UgMTYpCQlJTkRVU1RST05JQyBJbmR1c3RyaWUtRWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0JCQkJQ2FybC1KYWNvYi1Lb2xiLVdlZyAxCi0JCQkJV2VydGhlaW0gQmFkZW4tV3VlcnR0ZW1iZXJnIDk3ODc3Ci0JCQkJR0VSTUFOWQotCi0wMC0xQy1DOSAgIChoZXgpCQlLYWlzZSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFDQzkgICAgIChiYXNlIDE2KQkJS2Fpc2UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLjY3OCwgV3Vuc3l1ZSBSZC4sIFp1b3lpbmcgRGlzdHJpY3QsCi0JCQkJS2FvaHNpdW5nICA4MTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLUNBICAgKGhleCkJCVNoYW5naGFpIEdhb3poaSBTY2llbmNlICYgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDby4KLTAwMUNDQSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBHYW96aGkgU2NpZW5jZSAmIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uCi0JCQkJTm8uMjgzIFFpbiBKaWFuZyBSZC4gU2hhbmdoYWksQ2hpbmEKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMUMtQ0IgICAoaGV4KQkJRm9ydGggQ29ycG9yYXRpb24gUHVibGljIENvbXBhbnkgTGltaXRlZAotMDAxQ0NCICAgICAoYmFzZSAxNikJCUZvcnRoIENvcnBvcmF0aW9uIFB1YmxpYyBDb21wYW55IExpbWl0ZWQKLQkJCQkyMjYvMTIsMTMsMTYgUGFob2x5b3RoaW4gUm9hZAotCQkJCVNhbXNlbm5haSwgUGF5YXRoYWkKLQkJCQlCYW5na29rICAxMDQwMAotCQkJCVRIQUlMQU5ECi0KLTAwLTFDLUNDICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkCi0wMDFDQ0MgICAgIChiYXNlIDE2KQkJUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQKLQkJCQkzMDUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMDAtMUMtQ0QgICAoaGV4KQkJQWxla3Ryb25hIENvcnBvcmF0aW9uCi0wMDFDQ0QgICAgIChiYXNlIDE2KQkJQWxla3Ryb25hIENvcnBvcmF0aW9uCi0JCQkJOTUgSGF0aGF3YXkgU3RyZWV0LCBTdWl0ZSAxMAotCQkJCVByb3ZpZGVuY2UgUkkgMDI5MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUNFICAgKGhleCkJCUJ5IFRlY2hkZXNpZ24KLTAwMUNDRSAgICAgKGJhc2UgMTYpCQlCeSBUZWNoZGVzaWduCi0JCQkJQy8gTWFycXVlcyBkZSBBaHVtYWRhIDExCi0JCQkJTWFkcmlkICAyODAyOAotCQkJCVNQQUlOCi0KLTAwLTFDLUNGICAgKGhleCkJCUxJTUVURUsKLTAwMUNDRiAgICAgKGJhc2UgMTYpCQlMSU1FVEVLCi0JCQkJIzIxMy0xLCBCeXVja3NhbiBEaWdpdGFsIFZhbGxleSBJSSwgNDgwLTEwLCBHYXNhbi1kb25nLAotCQkJCUdldW1jaGVuLWd1Ci0JCQkJU2VvdWwgIDE1My03ODMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtRDAgICAoaGV4KQkJQ2lyY2xlb25lIENvLixMdGQuCi0wMDFDRDAgICAgIChiYXNlIDE2KQkJQ2lyY2xlb25lIENvLixMdGQuCi0JCQkJODYwLTEsTm9kYQotCQkJCUJlcHB1LXNoaSBPb2l0YS1rZW4gODc0LTAwMTYKLQkJCQlKQVBBTgotCi0wMC0xQy1EMSAgIChoZXgpCQlXYXZlcyBBdWRpbyBMVEQKLTAwMUNEMSAgICAgKGJhc2UgMTYpCQlXYXZlcyBBdWRpbyBMVEQKLQkJCQlBenJpbGVpIENlbnRlciAzLCBUcmlhbmdsZSB0b3dlcgotCQkJCTMybmQgZmxvb3IKLQkJCQlUZWwgQXZpdiBDZW50cmFsIDY3MDIzCi0JCQkJSVNSQUVMCi0KLTAwLTFDLUQyICAgKGhleCkJCUtpbmcgQ2hhbXBpb24gKEhvbmcgS29uZykgTGltaXRlZAotMDAxQ0QyICAgICAoYmFzZSAxNikJCUtpbmcgQ2hhbXBpb24gKEhvbmcgS29uZykgTGltaXRlZAotCQkJCVVuaXQgMTUyMCwgMTUvRiwgUGhhc2UgMSwgTWV0cm8gQ2VudHJlLAotCQkJCTMyIExhbSBIaW5nIFN0cmVldCwgS293bG9vbiBCYXksCi0JCQkJS293bG9vbiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFDLUQzICAgKGhleCkJCVpQIEVuZ2luZWVyaW5nIFNFTAotMDAxQ0QzICAgICAoYmFzZSAxNikJCVpQIEVuZ2luZWVyaW5nIFNFTAotCQkJCXZpYSBBcmRpdG8gRGVzaW8sIDYwCi0JCQkJVGVjbm9wb2xvIFRpYnVydGlubwotCQkJCVJPTUUgIDAwMTMxCi0JCQkJSVRBTFkKLQotMDAtMUMtRDQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUNENCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUMtRDUgICAoaGV4KQkJWmVlVmVlLCBJbmMuCi0wMDFDRDUgICAgIChiYXNlIDE2KQkJWmVlVmVlLCBJbmMuCi0JCQkJMSBNb25hcmNoIERyaXZlCi0JCQkJU3VpdGUgMjAwCi0JCQkJTGl0dGxldG9uIE1BIDAxNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1ENiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxQ0Q2ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xQy1ENyAgIChoZXgpCQlIYXJtYW4vQmVja2VyIEF1dG9tb3RpdmUgU3lzdGVtcyBHbWJICi0wMDFDRDcgICAgIChiYXNlIDE2KQkJSGFybWFuL0JlY2tlciBBdXRvbW90aXZlIFN5c3RlbXMgR21iSAotCQkJCUJlY2tlci1Hw7ZyaW5nLVN0ci4gMTYKLQkJCQlLYXJsc2JhZCBCYWRlbiAtIFfDvHJ0dGVtYmVyZyA3NjMwNwotCQkJCUdFUk1BTlkKLQotMDAtMUMtRDggICAoaGV4KQkJQmx1ZUFudCBXaXJlbGVzcwotMDAxQ0Q4ICAgICAoYmFzZSAxNikJCUJsdWVBbnQgV2lyZWxlc3MKLQkJCQkyNDUgU3QuS2lsZGEgUmQsIFN0IEtpbGRhCi0JCQkJTWVsYm91cm5lIFZpY3RvcmlhIDMxODIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUMtRDkgICAoaGV4KQkJR2xvYmFsVG9wIFRlY2hub2xvZ3kgSW5jLgotMDAxQ0Q5ICAgICAoYmFzZSAxNikJCUdsb2JhbFRvcCBUZWNobm9sb2d5IEluYy4KLQkJCQkxNiBOYW4ta2UgOXRoIFJkLiBTY2llbmNlLWJhc2UgSW5kdXN0cmlhbCBQYXJrLAotCQkJCVNoYW5IdWEgVGFpbmFuIGNvdW50eSA3NDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLURBICAgKGhleCkJCUV4ZWdpbiBUZWNobm9sb2dpZXMgTGltaXRlZAotMDAxQ0RBICAgICAoYmFzZSAxNikJCUV4ZWdpbiBUZWNobm9sb2dpZXMgTGltaXRlZAotCQkJCTIwNCAtIDIwNzEgS2luZ3N3YXkgQXZlbnVlCi0JCQkJUG9ydCBDb3F1aXRsYW0gQkMgVjNDIDZOMgotCQkJCUNBTkFEQQotCi0wMC0xQy1EQiAgIChoZXgpCQlDQVJQT0lOVCBDTy4sTFRECi0wMDFDREIgICAgIChiYXNlIDE2KQkJQ0FSUE9JTlQgQ08uLExURAotCQkJCTEzNDAtNiwgTmFtZ2FuZyBCbGQgN0YsIFNlb2Noby1Eb25nCi0JCQkJU2VvY2hvLUt1LAotCQkJCVNFT1VMICAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFDLURDICAgKGhleCkJCUN1c3RvbSBDb21wdXRlciBTZXJ2aWNlcywgSW5jLgotMDAxQ0RDICAgICAoYmFzZSAxNikJCUN1c3RvbSBDb21wdXRlciBTZXJ2aWNlcywgSW5jLgotCQkJCTEwMjAgU3ByaW5nIENpdHkgRHJpdmUKLQkJCQlXYXVrZXNoYSBXSSA1MzE4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtREQgICAoaGV4KQkJQ09XQkVMTCBFTkdJTkVFUklORyBDTy4sIExURC4KLTAwMUNERCAgICAgKGJhc2UgMTYpCQlDT1dCRUxMIEVOR0lORUVSSU5HIENPLiwgTFRELgotCQkJCTE3MzktMSBOYWdhdG9ybwotCQkJCVNBS1UgTmFnYW5vIDM4NS0wMDIxCi0JCQkJSkFQQU4KLQotMDAtMUMtREUgICAoaGV4KQkJSW50ZXJhY3RpdmUgTXVsdGltZWRpYSBlWGNoYW5nZSBJbmMuCi0wMDFDREUgICAgIChiYXNlIDE2KQkJSW50ZXJhY3RpdmUgTXVsdGltZWRpYSBlWGNoYW5nZSBJbmMuCi0JCQkJTk8uIDE2NSBXZW5saW4gUm9hZC4KLQkJCQlUYWlwZWkgVGFpd2FuIDExMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtREYgICAoaGV4KQkJQmVsa2luIEludGVybmF0aW9uYWwgSW5jLgotMDAxQ0RGICAgICAoYmFzZSAxNikJCUJlbGtpbiBJbnRlcm5hdGlvbmFsIEluYy4KLQkJCQk1MDEgVy4gV2FsbnV0IFN0LgotCQkJCUNvbXB0b24gQ2EgOTAyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUUwICAgKGhleCkJCURBU0FOIFRQUwotMDAxQ0UwICAgICAoYmFzZSAxNikJCURBU0FOIFRQUwotCQkJCUhVTUFYIFZpbGxhZ2UgNkYsIDExLTQgU3VuYWUtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUMtRTEgICAoaGV4KQkJSU5EUkEgU0lTVEVNQVMsIFMuQS4KLTAwMUNFMSAgICAgKGJhc2UgMTYpCQlJTkRSQSBTSVNURU1BUywgUy5BLgotCQkJCUN0cmEuIGRlIExvZWNoZXMsIG4uw4LCuiA5Ci0JCQkJVE9SUkVKw4PigJxOIERFIEFSRE9aIE1BRFJJRCAyODg1MAotCQkJCVNQQUlOCi0KLTAwLTFDLUUyICAgKGhleCkJCUF0dGVybyBUZWNoLCBMTEMuCi0wMDFDRTIgICAgIChiYXNlIDE2KQkJQXR0ZXJvIFRlY2gsIExMQy4KLQkJCQkxMzE1IERpcmVjdG9ycyBSb3cgLSBTdWl0ZSAxMDcKLQkJCQlGb3J0IFdheW5lIEluZGlhbmEgNDY4MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUUzICAgKGhleCkJCU9wdGltZWRpY2FsIFN5c3RlbXMKLTAwMUNFMyAgICAgKGJhc2UgMTYpCQlPcHRpbWVkaWNhbCBTeXN0ZW1zCi0JCQkJMjM1IEhlbWJyZWUgUGFyayBEcml2ZQotCQkJCVJvc3dlbGwgR0EgMzAwNzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUU0ICAgKGhleCkJCUVsZVN5IEpTQwotMDAxQ0U0ICAgICAoYmFzZSAxNikJCUVsZVN5IEpTQwotCQkJCUFsdGF5c2theWEgc3RyZWV0LCAxNjFhCi0JCQkJVG9tc2sgb2JsYXN0IDYzNDAyMQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xQy1FNSAgIChoZXgpCQlNQlMgRWxlY3Ryb25pYyBTeXN0ZW1zIEdtYkgKLTAwMUNFNSAgICAgKGJhc2UgMTYpCQlNQlMgRWxlY3Ryb25pYyBTeXN0ZW1zIEdtYkgKLQkJCQlSaW5nc3RyYXNzZSAzCi0JCQkJODIzMTkgU3Rhcm5iZXJnIEJhdmFyaWEgODIzMTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFDLUU2ICAgKGhleCkJCUlOTkVTCi0wMDFDRTYgICAgIChiYXNlIDE2KQkJSU5ORVMKLQkJCQk4MCBhdmVudWUgZGVzIEJ1dHRlcyBkZSBDb8Orc21lcwotCQkJCVJFTk5FUyAgMzU3MDAKLQkJCQlGUkFOQ0UKLQotMDAtMUMtRTcgICAoaGV4KQkJUm9jb24gUExDIFJlc2VhcmNoIENlbnRyZQotMDAxQ0U3ICAgICAoYmFzZSAxNikJCVJvY29uIFBMQyBSZXNlYXJjaCBDZW50cmUKLQkJCQkyMSBWZWsgNTZBIHN0ci4KLQkJCQlTb2ZpYSAgMTcwMAotCQkJCUJVTEdBUklBCi0KLTAwLTFDLUU4ICAgKGhleCkJCUN1bW1pbnMgSW5jCi0wMDFDRTggICAgIChiYXNlIDE2KQkJQ3VtbWlucyBJbmMKLQkJCQkxNDAwIDczcmQgQXZlIE5FCi0JCQkJRnJpZGxleSBNTiA1NTQzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRTkgICAoaGV4KQkJR2FsYXh5IFRlY2hub2xvZ3kgTGltaXRlZAotMDAxQ0U5ICAgICAoYmFzZSAxNikJCUdhbGF4eSBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQk5L0YgV2luIEZ1bGwgQ29tbWVyaWNhbCBCdWlsZGluZywgMTcyLTE3NiBXaW5nIExvayBTdHJlZXQsCi0JCQkJU2hldW5nIFdhbiwgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xQy1FQSAgIChoZXgpCQlTY2llbnRpZmljLUF0bGFudGEsIEluYwotMDAxQ0VBICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMtQXRsYW50YSwgSW5jCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCUFUTCAyLlQuNjAzCi0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRUIgICAoaGV4KQkJTm9ydGVsCi0wMDFDRUIgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFDLUVDICAgKGhleCkJCU1vYmlsZXNvZnQgKEF1c3QuKSBQdHkgTHRkCi0wMDFDRUMgICAgIChiYXNlIDE2KQkJTW9iaWxlc29mdCAoQXVzdC4pIFB0eSBMdGQKLQkJCQlTdWl0ZSAyLCAyNy0zNSBHcm9zdmVub3IgU3RyZWV0Ci0JCQkJTmV1dHJhbCBCYXkKLQkJCQlTeWRuZXkgTlNXIDIwODkKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUMtRUQgICAoaGV4KQkJRU5WSVJPTk5FTUVOVCBTQQotMDAxQ0VEICAgICAoYmFzZSAxNikJCUVOVklST05ORU1FTlQgU0EKLQkJCQkxMTEgYmQuIFJvYmVzcGllcnJlCi0JCQkJUE9JU1NZIFl2ZWxpbmVzIDc4MzAwCi0JCQkJRlJBTkNFCi0KLTAwLTFDLUVFICAgKGhleCkJCVNIQVJQIENvcnBvcmF0aW9uCi0wMDFDRUUgICAgIChiYXNlIDE2KQkJU0hBUlAgQ29ycG9yYXRpb24KLQkJCQkyMi0yMixOYWdhaWtlLWNobyxBYmVuby1rdQotCQkJCU9zYWthICA1NDUtODUyMgotCQkJCUpBUEFOCi0KLTAwLTFDLUVGICAgKGhleCkJCVByaW1heCBFbGVjdHJvbmljcyBMVEQKLTAwMUNFRiAgICAgKGJhc2UgMTYpCQlQcmltYXggRWxlY3Ryb25pY3MgTFRECi0JCQkJNjY5LCBSdWV5IEt1YW5nIFJvYWQsIE5laWh1Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFDLUYwICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMDAxQ0YwICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5PLjI4OSwgU2luaHUgM3JkIFJkLiwKLQkJCQlOZWlodSBEaXN0cmljdCwgVGFpcGVpIENpdHkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xQy1GMSAgIChoZXgpCQlTVVBvWCBUZWNobm9sb2d5IENvLiAsIExURC4KLTAwMUNGMSAgICAgKGJhc2UgMTYpCQlTVVBvWCBUZWNobm9sb2d5IENvLiAsIExURC4KLQkJCQk3RiwgNDE5ICwgQ2h1bmcgU2FuIFJkLiAsIFNlYyAyCi0JCQkJQ2h1bmcgSG8gVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUMtRjIgICAoaGV4KQkJVGVubG9uIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMUNGMiAgICAgKGJhc2UgMTYpCQlUZW5sb24gVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTQvRi4sU2hlbmh1YSBCbGRnLE5vLjMxNTUsQmluaGUgUm9hZCxGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDMzCi0JCQkJQ0hJTkEKLQotMDAtMUMtRjMgICAoaGV4KQkJRVZTIEJST0FEQ0FTVCBFUVVJUE1FTlQKLTAwMUNGMyAgICAgKGJhc2UgMTYpCQlFVlMgQlJPQURDQVNUIEVRVUlQTUVOVAotCQkJCUxpZWdlIFNjaWVuY2UgUGFyawotCQkJCXJ1ZSBCb2lzIFN0IEplYW4gMTYKLQkJCQlPdWdyZWUgTGllZ2UgNDEwMgotCQkJCUJFTEdJVU0KLQotMDAtMUMtRjQgICAoaGV4KQkJTWVkaWEgVGVjaG5vbG9neSBTeXN0ZW1zIEluYwotMDAxQ0Y0ICAgICAoYmFzZSAxNikJCU1lZGlhIFRlY2hub2xvZ3kgU3lzdGVtcyBJbmMKLQkJCQk3NjYgTGFrZWZpZWxkIFJvYWQKLQkJCQlVbml0IEYKLQkJCQlXZXN0bGFrZSBWaWxsYWdlIENBIDkxMzc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1GNSAgIChoZXgpCQlXaXNlYmx1ZSBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMUNGNSAgICAgKGJhc2UgMTYpCQlXaXNlYmx1ZSBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlSbSBHNSwgNS9GLCBLaW5nc2ZvcmQgSW5kdXN0cmlhbCBCdWlsZGluZyBQaGFzZSBJSSwgMjYtMzIgS3dhaSBIZWkgU3RyZWV0LAotCQkJCUt3YWkgQ2h1bmcgTi5ULiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUMtRjYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxQ0Y2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUY3ICAgKGhleCkJCUF1ZGlvU2NpZW5jZQotMDAxQ0Y3ICAgICAoYmFzZSAxNikJCUF1ZGlvU2NpZW5jZQotCQkJCTcyOSB3ZXN0IDE2dGggc3QKLQkJCQlTdWl0ZSBDMgotCQkJCUNvc3RhIE1lc2EgQ2FsaWZvcm5pYSA5MjYyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRjggICAoaGV4KQkJUGFyYWRlIFRlY2hub2xvZ2llcywgTHRkLgotMDAxQ0Y4ICAgICAoYmFzZSAxNikJCVBhcmFkZSBUZWNobm9sb2dpZXMsIEx0ZC4KLQkJCQlDL08gUGFyYWRlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTUzMCBMYWtlc2lkZSBEci4gU3VpdGUgMjMwCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xQy1GOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFDRjkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRkEgICAoaGV4KQkJQWxhcm0uY29tCi0wMDFDRkEgICAgIChiYXNlIDE2KQkJQWxhcm0uY29tCi0JCQkJODE1MCBMZWVzYnVyZyBQaWtlCi0JCQkJU3VpdGUgMTQwMAotCQkJCVZpZW5uYSBWQSAyMjE4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRkIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUNGQiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFDLUZDICAgKGhleCkJCVN1bWluZXQgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgKFNoYW5naGFpKSBDby4sIEx0ZC4KLTAwMUNGQyAgICAgKGJhc2UgMTYpCQlTdW1pbmV0IENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgQ28uLCBMdGQuCi0JCQkJNEYsIDNCbGQuIDY0NyBMb25nLCBTb25nVGFvIFJvYWQsIFpoYW5nSmlhbmcgSGktVGVjaCBQYXJrCi0JCQkJU2hhbmdoYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLTAwLTFDLUZEICAgKGhleCkJCVVuaXZlcnNhbCBFbGVjdHJvbmljcwotMDAxQ0ZEICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBFbGVjdHJvbmljcwotCQkJCTYxMDEgR2F0ZXdheSBEcml2ZQotCQkJCUN5cHJlc3MgQ2FsaWZvcm5pYSA5MDYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRkUgICAoaGV4KQkJUXVhcnRpY3MgSW5jCi0wMDFDRkUgICAgIChiYXNlIDE2KQkJUXVhcnRpY3MgSW5jCi0JCQkJMTUyNDEgTGFndW5hIENhbnlvbiBSb2FkCi0JCQkJU3RlIDIwMAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUMtRkYgICAoaGV4KQkJTmFwZXJhIE5ldHdvcmtzIEluYwotMDAxQ0ZGICAgICAoYmFzZSAxNikJCU5hcGVyYSBOZXR3b3JrcyBJbmMKLQkJCQk3NjgzIFNFIDI3dGgKLQkJCQlTdWl0ZSAxMjAKLQkJCQlNZXJjZXIgSXNsYW5kIFdBIDk4MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0wMCAgIChoZXgpCQlCcml2byBTeXN0ZW1zLCBMTEMKLTAwMUQwMCAgICAgKGJhc2UgMTYpCQlCcml2byBTeXN0ZW1zLCBMTEMKLQkJCQk0MzMwIEVhc3QgV2VzdCBIaWdod2F5Ci0JCQkJU3VpdGUgMjUwCi0JCQkJQmV0aGVzZGEgTUQgMjA4MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTAxICAgKGhleCkJCU5lcHR1bmUgRGlnaXRhbAotMDAxRDAxICAgICAoYmFzZSAxNikJCU5lcHR1bmUgRGlnaXRhbAotCQkJCU1lZG5hcm9kbmkgbWVqbmkgcHJlaG9kIDYKLQkJCQlWcnRvamJhIE5vdmEgR29yaWNhIDUyOTAKLQkJCQlTTE9WRU5JQQotCi0wMC0xRC0wMiAgIChoZXgpCQlDeWJlcnRlY2ggVGVsZWNvbSBEZXZlbG9wbWVudAotMDAxRDAyICAgICAoYmFzZSAxNikJCUN5YmVydGVjaCBUZWxlY29tIERldmVsb3BtZW50Ci0JCQkJSGF6ZW5rb29nIDI1Ci0JCQkJQWxrbWFhciBOb29yZCBIb2xsYW5kIDE4MjIgQlMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xRC0wMyAgIChoZXgpCQlEZXNpZ24gU29sdXRpb25zIEluYy4KLTAwMUQwMyAgICAgKGJhc2UgMTYpCQlEZXNpZ24gU29sdXRpb25zIEluYy4KLQkJCQk4MSBEYXZpZCBMb3ZlIFBsYWNlCi0JCQkJR29sZXRhIENhIDkzMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0wNCAgIChoZXgpCQlaaXBpdCBXaXJlbGVzcywgSW5jLgotMDAxRDA0ICAgICAoYmFzZSAxNikJCVppcGl0IFdpcmVsZXNzLCBJbmMuCi0JCQkJNDkgU2FsdGVycyBSb2FkLgotCQkJCVN1aXRlIDYKLQkJCQlHcmVlbnZpbGxlIFNDIDI5NjA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0wNSAgIChoZXgpCQlpTGlnaHQKLTAwMUQwNSAgICAgKGJhc2UgMTYpCQlpTGlnaHQKLQkJCQlVbml0IDQgRW50ZXJwcmlzZSBDZW50cmUKLQkJCQlSb2d1ZXMgSGlsbAotCQkJCVBlbnNodXJzdCBLZW50IFROMTEgOEJHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUQtMDYgICAoaGV4KQkJSE0gRWxlY3Ryb25pY3MsIEluYy4KLTAwMUQwNiAgICAgKGJhc2UgMTYpCQlITSBFbGVjdHJvbmljcywgSW5jLgotCQkJCTE0MTEwIFN0b3dlIERyaXZlCi0JCQkJUG93YXkgQ0EgOTIwNjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTA3ICAgKGhleCkJCVNoZW56aGVuIFNhbmcgRmVpIENvbnN1bWVyIENvbW11bmljYXRpb25zIENvLixMdGQKLTAwMUQwNyAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBTYW5nIEZlaSBDb25zdW1lciBDb21tdW5pY2F0aW9ucyBDby4sTHRkCi0JCQkJMTEgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBSb2FkLAotCQkJCVNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgSW5kdXN0cmlhbCBQYXJrIE5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTFELTA4ICAgKGhleCkJCUpJQU5HU1UgWUlOSEUgRUxFQ1RST05JQ1MgQ08uLCBMVEQKLTAwMUQwOCAgICAgKGJhc2UgMTYpCQlKSUFOR1NVIFlJTkhFIEVMRUNUUk9OSUNTIENPLiwgTFRECi0JCQkJMTg4IE5BTkhVQU4gUk9BRAotCQkJCVRBTkdRSUFPCi0JCQkJWkhBTkdKSUFHQU5HIEpJQU5HU1UgMjE1NjExCi0JCQkJQ0hJTkEKLQotMDAtMUQtMDkgICAoaGV4KQkJRGVsbCBJbmMKLTAwMUQwOSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMEEgICAoaGV4KQkJRGF2aXMgSW5zdHJ1bWVudHMsIEluYy4KLTAwMUQwQSAgICAgKGJhc2UgMTYpCQlEYXZpcyBJbnN0cnVtZW50cywgSW5jLgotCQkJCTM0NjUgRGlhYmxvIEF2ZS4KLQkJCQlIYXl3YXJkIENBIDk0NTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0wQiAgIChoZXgpCQlQb3dlciBTdGFuZGFyZHMgTGFiCi0wMDFEMEIgICAgIChiYXNlIDE2KQkJUG93ZXIgU3RhbmRhcmRzIExhYgotCQkJCTEyMDEgTWFyaW5hIFZpbGxhZ2UgUGFya3dheSAjMTAxCi0JCQkJQWxhbWVkYSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMEMgICAoaGV4KQkJTW9iaWxlQ29tcGlhCi0wMDFEMEMgICAgIChiYXNlIDE2KQkJTW9iaWxlQ29tcGlhCi0JCQkJRG9uZ3dvbiBCbGRnLCA3MjUtMzAsIFllb2tzYW0tZG9uZywgR2FuZ25hbS1ndSwKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC0wRCAgIChoZXgpCQlTb255IENvbXB1dGVyIEVudGVydGFpbm1lbnQgaW5jLgotMDAxRDBEICAgICAoYmFzZSAxNikJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBpbmMuCi0JCQkJNi0yMSwyQ2hvbWUKLQkJCQlNaW5hbWktQW95YW1hCi0JCQkJTWluYXRvLUt1IFRva3lvIDEwNy0wMDYyCi0JCQkJSkFQQU4KLQotMDAtMUQtMEUgICAoaGV4KQkJQWdhcGhhIFRlY2hub2xvZ3kgY28uLCBMdGQuCi0wMDFEMEUgICAgIChiYXNlIDE2KQkJQWdhcGhhIFRlY2hub2xvZ3kgY28uLCBMdGQuCi0JCQkJOUYgTm8uMTIxLCBTaGluZ2RlIFJkLiwKLQkJCQlTYW5jaHVuZyBDaXR5IFRhaXBlaSBDb3VudHkgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC0wRiAgIChoZXgpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMUQwRiAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQkzL0YsIEJsZGcuIFIxLUIsCi0JCQkJSGktdGVjaCBJbmR1c3RyaWFsIFBhcmssIFNoZW5uYW4gUmQuLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xRC0xMCAgIChoZXgpCQlMaWdodEhhdXMgTG9naWMsIEluYy4KLTAwMUQxMCAgICAgKGJhc2UgMTYpCQlMaWdodEhhdXMgTG9naWMsIEluYy4KLQkJCQkxMjYtMTAyMCBNYWlubGFuZCBTdHJlZXQKLQkJCQlWYW5jb3V2ZXIgQkMgVjZCIDJUNAotCQkJCUNBTkFEQQotCi0wMC0xRC0xMSAgIChoZXgpCQlBbmFsb2d1ZSAmIE1pY3JvIEx0ZAotMDAxRDExICAgICAoYmFzZSAxNikJCUFuYWxvZ3VlICYgTWljcm8gTHRkCi0JCQkJTGFrZXNpZGUgSG91c2UKLQkJCQlMYWtlc2lkZQotCQkJCUxsYW50YXJuYW0gSW5kdXN0cmlhbCBQYXJrIEN3bWJyYW4gTlA0NCAzWFMKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRC0xMiAgIChoZXgpCQlST0hNIENPLiwgTFRELgotMDAxRDEyICAgICAoYmFzZSAxNikJCVJPSE0gQ08uLCBMVEQuCi0JCQkJMjEgU2FpaW4tTWl6b3Nha2ktY2hvLAotCQkJCVVreW8ta3UsCi0JCQkJS3lvdG8tc2hpIEtZT1RPIDYxNS04NTg1Ci0JCQkJSkFQQU4KLQotMDAtMUQtMTMgICAoaGV4KQkJTmV4dEdUVgotMDAxRDEzICAgICAoYmFzZSAxNikJCU5leHRHVFYKLQkJCQkxM0YgQnl1Y2tzYW4vS3l1bmdpbiBEaWdpdGFsIFZhbGxleSBsbAotCQkJCUdhc2FuLWRvbmcsIEdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELTE0ICAgKGhleCkJCVNQRVJBRFRPTkUgSU5GT1JNQVRJT04gVEVDSE5PTE9HWSBMSU1JVEVECi0wMDFEMTQgICAgIChiYXNlIDE2KQkJU1BFUkFEVE9ORSBJTkZPUk1BVElPTiBURUNITk9MT0dZIExJTUlURUQKLQkJCQlSb29tIDEwMDEgTk8uNDE4IEd1aSBQaW5nIFJvYWQsCi0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTAwLTFELTE1ICAgKGhleCkJCVNoZW56aGVuIERvbHBoaW4gRWxlY3Ryb25pYyBDby4sIEx0ZAotMDAxRDE1ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIERvbHBoaW4gRWxlY3Ryb25pYyBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nMjEsQmFveXVhbiwgTm8uMSBJbmR1c3RyaWFsIFpvbmUsCi0JCQkJWGl4aWFuZywgQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwMwotCQkJCUNISU5BCi0KLTAwLTFELTE2ICAgKGhleCkJCUVmaXhvCi0wMDFEMTYgICAgIChiYXNlIDE2KQkJRWZpeG8KLQkJCQk1IGF2ZW51ZSBkZSBTYWludCBNZW5ldAotCQkJCUltbWV1YmxlIEF4aW9tZSwgQsOidCBCCi0JCQkJTUFSU0VJTExFIFBBQ0EgMTMwMTEKLQkJCQlGUkFOQ0UKLQotMDAtMUQtMTcgICAoaGV4KQkJRGlnaXRhbCBTa3kgQ29ycG9yYXRpb24KLTAwMUQxNyAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFNreSBDb3Jwb3JhdGlvbgotCQkJCTUtNS0xNSBTb3Rva2FuZGEsCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDEtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTFELTE4ICAgKGhleCkJCVBvd2VyIElubm92YXRpb24gR21iSAotMDAxRDE4ICAgICAoYmFzZSAxNikJCVBvd2VyIElubm92YXRpb24gR21iSAotCQkJCVJlaGxhbmQgMgotCQkJCUFjaGltIE5pZWRlcnNhY2hzZW4gMjg4MzIKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELTE5ICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMUQxOSAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOby4gOSAsIFBhcmsgQXZlbnVlIElJLAotCQkJCVNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtMUEgICAoaGV4KQkJT3Zpc0xpbmsgUy5BLgotMDAxRDFBICAgICAoYmFzZSAxNikJCU92aXNMaW5rIFMuQS4KLQkJCQlDL0FuZHJlcyBPYmlzcG8sIDM3LiBQbC4gNC4KLQkJCQlNYWRyaWQgIDI4MDQzCi0JCQkJU1BBSU4KLQotMDAtMUQtMUIgICAoaGV4KQkJU2FuZ2VhbiBFbGVjdHJvbmljcyBJbmMuCi0wMDFEMUIgICAgIChiYXNlIDE2KQkJU2FuZ2VhbiBFbGVjdHJvbmljcyBJbmMuCi0JCQkJTm8uIDE4LCBMYW5lIDcsIExpLURlIHN0cmVldAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtMUMgICAoaGV4KQkJR2VubmV0IHMuYS4KLTAwMUQxQyAgICAgKGJhc2UgMTYpCQlHZW5uZXQgcy5hLgotCQkJCTIgTWVzb2dlaW9uIGF2ZS4KLQkJCQlQaXJnb3MgQXRoaW5vbgotCQkJCUF0aGVucyBBdHRpa2kgMTE1MjcKLQkJCQlHUkVFQ0UKLQotMDAtMUQtMUQgICAoaGV4KQkJSW50ZXItTSBDb3Jwb3JhdGlvbgotMDAxRDFEICAgICAoYmFzZSAxNikJCUludGVyLU0gQ29ycG9yYXRpb24KLQkJCQk2NTMtNSBCYW5naGFrLURvbmcsIERvYm9uZy1LdQotCQkJCVNlb3VsICAxMzItODQ2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELTFFICAgKGhleCkJCUtZVVNIVSBURU4gQ08uLExURAotMDAxRDFFICAgICAoYmFzZSAxNikJCUtZVVNIVSBURU4gQ08uLExURAotCQkJCTIzNjAgWVVOT0tJTU9UT01BQ0hJCi0JCQkJU0FTRUJPLUNpdHkgTkFHQVNBS0kgUHJlZmVjdHVyZSA4NTctMDExNQotCQkJCUpBUEFOCi0KLTAwLTFELTFGICAgKGhleCkJCVNpYXVsaXUgVGF1cm8gVGVsZXZpem9yaWFpLCBKU0MKLTAwMUQxRiAgICAgKGJhc2UgMTYpCQlTaWF1bGl1IFRhdXJvIFRlbGV2aXpvcmlhaSwgSlNDCi0JCQkJUHJhbW9uZXMsMTUKLQkJCQlTaWF1bGlhaSAgTFQtNTczMTgKLQkJCQlMSVRIVUFOSUEKLQotMDAtMUQtMjAgICAoaGV4KQkJQ09NVFJFTkQgQ08uCi0wMDFEMjAgICAgIChiYXNlIDE2KQkJQ09NVFJFTkQgQ08uCi0JCQkJM0YtMSAxMCBMQU5FIDYwOSBDSFVORyBIU0lOIFJPQUQsIFNFQyA1LCBTQU4gQ0hVTkcgQ0lUWSwgVEFJUEVJIFRBSVdBTiAyNDEKLQkJCQlUQUlQRUkgIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtMjEgICAoaGV4KQkJQWxjYWQgU0wKLTAwMUQyMSAgICAgKGJhc2UgMTYpCQlBbGNhZCBTTAotCQkJCVBvbC4gSW5kLiBBcnJlY2hlLVVnYWxkZSwgMQotCQkJCUlyw7puIEd1aXDDunpjb2EgRS0yMDMwNQotCQkJCVNQQUlOCi0KLTAwLTFELTIyICAgKGhleCkJCUZvc3MgQW5hbHl0aWNhbCBBL1MKLTAwMUQyMiAgICAgKGJhc2UgMTYpCQlGb3NzIEFuYWx5dGljYWwgQS9TCi0JCQkJU2xhbmdlcnVwZ2FkZSA2OQotCQkJCUhpbGxlcsO4ZCBTZWVsYW5kIDM0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTFELTIzICAgKGhleCkJCVNFTlNVUyAKLTAwMUQyMyAgICAgKGJhc2UgMTYpCQlTRU5TVVMgCi0JCQkJNDQgQ0FTVElMSUFOIERSSVZFCi0JCQkJR09MRVRBIENBTElGT1JOSUEgOTMxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTI0ICAgKGhleCkJCUFjbGFyYSBQb3dlci1MaW5lIFN5c3RlbXMgSW5jLgotMDAxRDI0ICAgICAoYmFzZSAxNikJCUFjbGFyYSBQb3dlci1MaW5lIFN5c3RlbXMgSW5jLgotCQkJCTk0NSBIb3JuZXQgRHJpdmUKLQkJCQlIYXplbHdvb2QgTU8gNjMwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTI1ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxRDI1ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC0yNiAgIChoZXgpCQlSb2NrcmlkZ2Vzb3VuZCBUZWNobm9sb2d5IENvLgotMDAxRDI2ICAgICAoYmFzZSAxNikJCVJvY2tyaWRnZXNvdW5kIFRlY2hub2xvZ3kgQ28uCi0JCQkJRnVtaW4gSW5kdXN0cmlhbCBQYXJrLCBIb3VqaWUgVG93bgotCQkJCURvbmcgR3VhbiBHdWFuZyBEb25nIDUyMzk1NgotCQkJCUNISU5BCi0KLTAwLTFELTI3ICAgKGhleCkJCU5BQy1JTlRFUkNPTQotMDAxRDI3ICAgICAoYmFzZSAxNikJCU5BQy1JTlRFUkNPTQotCQkJCUMuIFFVSU5URUxBLCAyNyBQT1JUQUwgNCBMT0NBTAotCQkJCVZJR08gUE9OVEVWRURSQSAzNjIwOQotCQkJCVNQQUlOCi0KLTAwLTFELTI4ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDFEMjggICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMUQtMjkgICAoaGV4KQkJRG9ybyBBQgotMDAxRDI5ICAgICAoYmFzZSAxNikJCURvcm8gQUIKLQkJCQlNYWdpc3RyYXRzdsOkZ2VuIDEwCi0JCQkJTHVuZCAgMjI2IDQzCi0JCQkJU1dFREVOCi0KLTAwLTFELTJBICAgKGhleCkJCVRpZGV3YXkgRWxlY3Ryb25pYyBMVEQKLTAwMUQyQSAgICAgKGJhc2UgMTYpCQlUaWRld2F5IEVsZWN0cm9uaWMgTFRECi0JCQkJWmhpSmkgSW5kdXN0cmlhbCAgQXJlYSAsSmluWWUgUm9hZAotCQkJCUI0IERvbmcuIGt1aXlvbmcgVG93bgotCQkJCXNoZW5nemhlbiBsb25nZ2FuZyBndWFuZ2RvbmcgNTE4MTE5Ci0JCQkJQ0hJTkEKLQotMDAtMUQtMkIgICAoaGV4KQkJV3VoYW4gUG9udCBUZWNobm9sb2d5IENPLiAsIExURAotMDAxRDJCICAgICAoYmFzZSAxNikJCVd1aGFuIFBvbnQgVGVjaG5vbG9neSBDTy4gLCBMVEQKLQkJCQlCdWlsZGluZyBFLCBHdWFuZG9uZyBTY2llbmNlIGFuZCBUZWNobm9sb2d5IEluZHVzdHJ5ICBQYXJrLAotCQkJCUVhc3QgTGFrZSBIaWdoIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgWm9uZSwKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi0wMC0xRC0yQyAgIChoZXgpCQlXYXZldHJlbmQgVGVjaG5vbG9naWVzIChQdHkpIExpbWl0ZWQKLTAwMUQyQyAgICAgKGJhc2UgMTYpCQlXYXZldHJlbmQgVGVjaG5vbG9naWVzIChQdHkpIExpbWl0ZWQKLQkJCQlXYXZldHJlbmQgSG91c2UsIEJ1aWxkaW5nIDgxNi8zCi0JCQkJSGFtbWV0cyBDcm9zc2luZyBPZmZpY2UgUGFyayxTZWxib3VybmUgcm9hZCwgZm91cndheXMKLQkJCQlHYXV0ZW5nICAyMDIxCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTFELTJEICAgKGhleCkJCVB5bG9uZSwgSW5jLgotMDAxRDJEICAgICAoYmFzZSAxNikJCVB5bG9uZSwgSW5jLgotCQkJCTRGIE5ha2FubyBCbGRnLiA0LTMwLTggS2l0YS1TaGluanVrdQotCQkJCVNoaW5qdWt1LWt1LCBUb2t5byAxNjktMDA3NAotCQkJCUpBUEFOCi0KLTAwLTFELTJFICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotMDAxRDJFICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTJGICAgKGhleCkJCVF1YW50dW1WaXNpb24gQ29ycG9yYXRpb24KLTAwMUQyRiAgICAgKGJhc2UgMTYpCQlRdWFudHVtVmlzaW9uIENvcnBvcmF0aW9uCi0JCQkJMzM1IFBsYW50YXRpb24gV2F5Ci0JCQkJUm9zd2VsbCBHYSAzMDA3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtMzAgICAoaGV4KQkJWVggV2lyZWxlc3MgUy5BLgotMDAxRDMwICAgICAoYmFzZSAxNikJCVlYIFdpcmVsZXNzIFMuQS4KLQkJCQlBdi4gVmljdcOxYSBNYWNrZW5uYSAjNDg2MAotCQkJCUVkaWZpY2lvIDUxMiwgcGlzbyAzLiBNYWN1bAotCQkJCVNhbnRpYWdvICA4NTgwNzEwCi0JCQkJQ0hJTEUKLQotMDAtMUQtMzEgICAoaGV4KQkJSElHSFBSTyBJTlRFUk5BVElPTkFMIFImRCBDTywuTFRELgotMDAxRDMxICAgICAoYmFzZSAxNikJCUhJR0hQUk8gSU5URVJOQVRJT05BTCBSJkQgQ08sLkxURC4KLQkJCQkzRixOby4yOTUsUnVpR3VhbmcgUmQsTmVpIEh1LAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC0zMiAgIChoZXgpCQlMb25na2F5IENvbW11bmljYXRpb24gJiBUZWNobm9sb2d5IChTaGFuZ2hhaSkgQ28uIEx0ZAotMDAxRDMyICAgICAoYmFzZSAxNikJCUxvbmdrYXkgQ29tbXVuaWNhdGlvbiAmIFRlY2hub2xvZ3kgKFNoYW5naGFpKSBDby4gTHRkCi0JCQkJTm8uNSBCdWlsZGluZywgVW5pdCAyLCBMYW5lIDI5OSBCaXNoZW5nIFJkLAotCQkJCVNoYW5naGFpICAyMDEyMDQKLQkJCQlDSElOQQotCi0wMC0xRC0zMyAgIChoZXgpCQlNYXZlcmljayBTeXN0ZW1zIEluYy4KLTAwMUQzMyAgICAgKGJhc2UgMTYpCQlNYXZlcmljayBTeXN0ZW1zIEluYy4KLQkJCQk5MDgsIERhZXJ1bmdwb3N0dG93ZXIgMi1jaGEsIDE4Mi0xMwotCQkJCUd1cm8tZG9uZywgR3Vyby1ndQotCQkJCVNlb3VsICAxNTItNzkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELTM0ICAgKGhleCkJCVNZUklTIFRlY2hub2xvZ3kgQ29ycAotMDAxRDM0ICAgICAoYmFzZSAxNikJCVNZUklTIFRlY2hub2xvZ3kgQ29ycAotCQkJCTIxIEYtMiwgIE5PLiAxMiwgIFNFQy4gMSwgIFRhaWp1bmdnYW5nIFJkLgotCQkJCVRhaWNodW5nICA0MDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTM1ICAgKGhleCkJCVZpY29uaWNzIEVsZWN0cm9uaWNzIEluYy4KLTAwMUQzNSAgICAgKGJhc2UgMTYpCQlWaWNvbmljcyBFbGVjdHJvbmljcyBJbmMuCi0JCQkJOTI0NSBMYW5nZWxpZXIKLQkJCQlTYWludCBMZW9uYXJkIFF1ZWJlYyBIMVAzSzkKLQkJCQlDQU5BREEKLQotMDAtMUQtMzYgICAoaGV4KQkJRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gT0YgSU5ESUEgTElNSVRFRAotMDAxRDM2ICAgICAoYmFzZSAxNikJCUVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE9GIElORElBIExJTUlURUQKLQkJCQlDT05UUk9MIEFORCBBVVRPTUFUSU9OIERJVklTSU9OLTMKLQkJCQlFQ0lMIFBPU1QKLQkJCQlIWURFUkFCQUQgQU5ESFJBIFBSQURFU0ggNTAwIDA2MgotCQkJCUlORElBCi0KLTAwLTFELTM3ICAgKGhleCkJCVRoYWxlcy1QYW5kYSBUcmFuc3BvcnRhdGlvbiBTeXN0ZW0KLTAwMUQzNyAgICAgKGJhc2UgMTYpCQlUaGFsZXMtUGFuZGEgVHJhbnNwb3J0YXRpb24gU3lzdGVtCi0JCQkJNnRoIGZsb29yLCBIVUlKSUUgUGxhemEsIDI2OCBaaG9uZ3NoYW4gUmQuCi0JCQkJbmFuamluZyBqaWFuZ3N1IDIxMDAwOAotCQkJCUNISU5BCi0KLTAwLTFELTM4ICAgKGhleCkJCVNlYWdhdGUgVGVjaG5vbG9neQotMDAxRDM4ICAgICAoYmFzZSAxNikJCVNlYWdhdGUgVGVjaG5vbG9neQotCQkJCTEyODAgRGlzYyBEcml2ZQotCQkJCVNoYWtvcGVlIE1OIDU1Mzc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC0zOSAgIChoZXgpCQlNT09IQURJR0lUQUwgQ08uLCBMVEQKLTAwMUQzOSAgICAgKGJhc2UgMTYpCQlNT09IQURJR0lUQUwgQ08uLCBMVEQKLQkJCQlTZW91bCBIaWdodGVjaCBWZW50dXJlIENlbnRlciBDLTMwNyA2NDctMjYKLQkJCQlEZXVuZ2Nob24tRG9uZyBHYW5nc2VvLUd1Ci0JCQkJU0VPVUwgIDE1Ny0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtM0EgICAoaGV4KQkJbWggYWNvdXN0aWNzIExMQwotMDAxRDNBICAgICAoYmFzZSAxNikJCW1oIGFjb3VzdGljcyBMTEMKLQkJCQkyNUEgU3VtbWl0IEF2ZQotCQkJCVN1bW1pdCBOSiAwNzkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtM0IgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUQzQiAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMUQtM0MgICAoaGV4KQkJTXVzY2xlIENvcnBvcmF0aW9uCi0wMDFEM0MgICAgIChiYXNlIDE2KQkJTXVzY2xlIENvcnBvcmF0aW9uCi0JCQkJMi01LTM1LCBLaWthd2EtaGlnYXNoaQotCQkJCU9zYWthICA1MzItMDAxMgotCQkJCUpBUEFOCi0KLTAwLTFELTNEICAgKGhleCkJCUF2aWR5bmUgQ29ycG9yYXRpb24KLTAwMUQzRCAgICAgKGJhc2UgMTYpCQlBdmlkeW5lIENvcnBvcmF0aW9uCi0JCQkJMjAyIFdlc3QgRHIKLQkJCQlNZWxib3VybmUgRkwgMzI5MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTNFICAgKGhleCkJCVNBS0EgVEVDSE5PIFNDSUVOQ0UgQ08uLExURAotMDAxRDNFICAgICAoYmFzZSAxNikJCVNBS0EgVEVDSE5PIFNDSUVOQ0UgQ08uLExURAotCQkJCU5pc2hpIDEwNS0xCi0JCQkJS2l0YXp1a2EtbWFjaGkKLQkJCQlLYW5hemF3YSBJc2hpa2F3YSA5MjAtMDM2NwotCQkJCUpBUEFOCi0KLTAwLTFELTNGICAgKGhleCkJCU1pdHJvbiBQdHkgTHRkCi0wMDFEM0YgICAgIChiYXNlIDE2KQkJTWl0cm9uIFB0eSBMdGQKLQkJCQlVbml0IDExCi0JCQkJMTItMTggQ2xhcmVuZG9uIFN0cmVldAotCQkJCUFydGFybW9uIE5TVyAyMDY1Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFELTQwICAgKGhleCkJCUxpdmluZyBJbmRlcGVuZGVudGx5IEdyb3VwLCBJbmMuCi0wMDFENDAgICAgIChiYXNlIDE2KQkJTGl2aW5nIEluZGVwZW5kZW50bHkgR3JvdXAsIEluYy4KLQkJCQk3NjcgVGhpcmQgQXZlLCAxNHRoIEZsb29yCi0JCQkJTmV3IFlvcmsgTlkgMTAwMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTQxICAgKGhleCkJCUhhcmR5IEluc3RydW1lbnRzCi0wMDFENDEgICAgIChiYXNlIDE2KQkJSGFyZHkgSW5zdHJ1bWVudHMKLQkJCQkzODYwIENhbGxlIEZvcnR1bmFkYQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNDIgICAoaGV4KQkJTm9ydGVsCi0wMDFENDIgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJODIwMCBEaXhpZSBSb2FkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQnJhbXB0b24gT250YXJpbyBMNlQgNVA2Ci0JCQkJQ0FOQURBCi0KLTAwLTFELTQzICAgKGhleCkJCVNoZW56aGVuIEctbGluayBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFENDMgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gRy1saW5rIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk0RiwgRSBCdWlsZGluZyxIdWFjaHVhbmcgRGEgVGVjaG5vbG9neSBab25lICxIYW5nY2hlbmcgSGlnaHdheSxHdXNodSxYaXhpYW5nICwKLQkJCQlzaGVuemhlbiBHdWFuZ0RvbmcgNTE4MTI2Ci0JCQkJQ0hJTkEKLQotMDAtMUQtNDQgICAoaGV4KQkJS3JvaG5lCi0wMDFENDQgICAgIChiYXNlIDE2KQkJS3JvaG5lCi0JCQkJS2Vya2VwbGFhdCAxMgotCQkJCURvcmRyZWNodCBaSCAzMzEzIExDCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUQtNDUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRDQ1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTQ2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUQ0NiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC00NyAgIChoZXgpCQlDb3ZvdGUgR21iSCAmIENvIEtHCi0wMDFENDcgICAgIChiYXNlIDE2KQkJQ292b3RlIEdtYkggJiBDbyBLRwotCQkJCVJpdHRlcmh1ZmVuIDMwCi0JCQkJQmVybGluICAxNDE2NQotCQkJCUdFUk1BTlkKLQotMDAtMUQtNDggICAoaGV4KQkJU2Vuc29yLVRlY2huaWsgV2llZGVtYW5uIEdtYkgKLTAwMUQ0OCAgICAgKGJhc2UgMTYpCQlTZW5zb3ItVGVjaG5payBXaWVkZW1hbm4gR21iSAotCQkJCUFtIELDpHJlbndhbGQgNgotCQkJCUthdWZiZXVyZW4gQmF5ZXJuIDg3NjAwCi0JCQkJR0VSTUFOWQotCi0wMC0xRC00OSAgIChoZXgpCQlJbm5vdmF0aW9uIFdpcmVsZXNzIEluYy4KLTAwMUQ0OSAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aW9uIFdpcmVsZXNzIEluYy4KLQkJCQk0Ri0xLCBOTy44MSwgU0hVRUlMSSBSRC4KLQkJCQlIU0lOQ0hVICAzMDA1OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtNEEgICAoaGV4KQkJQ2FyZXN0cmVhbSBIZWFsdGgsIEluYy4KLTAwMUQ0QSAgICAgKGJhc2UgMTYpCQlDYXJlc3RyZWFtIEhlYWx0aCwgSW5jLgotCQkJCTE1MCBWZXJvbmEgU3RyZWV0Ci0JCQkJUm9jaGVzdHNlciBOWSAxNDYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNEIgICAoaGV4KQkJR3JpZCBDb25uZWN0IEluYy4KLTAwMUQ0QiAgICAgKGJhc2UgMTYpCQlHcmlkIENvbm5lY3QgSW5jLgotCQkJCTE2MzAgVy4gRGllaGwgUmQKLQkJCQlOYXBlcnZpbGxlIElMIDYwNTYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC00QyAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudAotMDAxRDRDICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50Ci0JCQkJNjAxIERhdGEgRHJpdmUKLQkJCQlNL1MgMzIwCi0JCQkJUGxhbm8gVFggNzUwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTREICAgKGhleCkJCUFkYXB0aXZlIFJlY29nbml0aW9uIEh1bmdhcnksIEluYwotMDAxRDREICAgICAoYmFzZSAxNikJCUFkYXB0aXZlIFJlY29nbml0aW9uIEh1bmdhcnksIEluYwotCQkJCUtpcmFseWhhZ28gdGVyIDgtOQotCQkJCUJ1ZGFwZXN0IEV1cm9wZSAxMTI2Ci0JCQkJSFVOR0FSWQotCi0wMC0xRC00RSAgIChoZXgpCQlUQ00gTW9iaWxlIExMQwotMDAxRDRFICAgICAoYmFzZSAxNikJCVRDTSBNb2JpbGUgTExDCi0JCQkJOTIxOCBNZXRjYWxmLAotCQkJCVN1aXRlICMyOTMKLQkJCQlPdmVybGFuZCBQYXJrIEthbnNhcyA2NjIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNEYgICAoaGV4KQkJQXBwbGUgQ29tcHV0ZXIgSW5jLgotMDAxRDRGICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ2FsaWZvcm5pYSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNTAgICAoaGV4KQkJU1BJTkVUSVggU0EKLTAwMUQ1MCAgICAgKGJhc2UgMTYpCQlTUElORVRJWCBTQQotCQkJCVBhcmMgU2NpZW50aWZpcXVlIGRlIGwnRVBGTCwgQsOidGltZW50IEMKLQkJCQlMYXVzYW5uZSBWRCAxMDE1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUQtNTEgICAoaGV4KQkJQmFiY29jayAmIFdpbGNveCBQb3dlciBHZW5lcmF0aW9uIEdyb3VwLCBJbmMKLTAwMUQ1MSAgICAgKGJhc2UgMTYpCQlCYWJjb2NrICYgV2lsY294IFBvd2VyIEdlbmVyYXRpb24gR3JvdXAsIEluYwotCQkJCTExODY0IENhbm9uIEJsdmQsIFN1aXRlIDEwNQotCQkJCU5ld3BvcnQgTmV3cyBWQSAyMzYwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNTIgICAoaGV4KQkJRGVmem9uZSBCLlYuCi0wMDFENTIgICAgIChiYXNlIDE2KQkJRGVmem9uZSBCLlYuCi0JCQkJVHJhbnNwb3J0Y2VudHJ1bSAxMAotCQkJCUVuc2NoZWRlIE92ZXJpanNzZWwgNzU0NyBSVwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFELTUzICAgKGhleCkJCVMmTyBFbGVjdHJvbmljcyAoTWFsYXlzaWEpIFNkbi4gQmhkLgotMDAxRDUzICAgICAoYmFzZSAxNikJCVMmTyBFbGVjdHJvbmljcyAoTWFsYXlzaWEpIFNkbi4gQmhkLgotCQkJCUxvdCAyMDIsIEJha2FyIEFyYW5nCi0JCQkJSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQkwODAwMCBTdW5nYWkgUGV0YW5pIEtlZGFoIAotCQkJCU1BTEFZU0lBCi0KLTAwLTFELTU0ICAgKGhleCkJCVN1bm5pYyBUZWNobm9sb2d5ICYgTWVyY2hhbmRpc2UgSU5DLgotMDAxRDU0ICAgICAoYmFzZSAxNikJCVN1bm5pYyBUZWNobm9sb2d5ICYgTWVyY2hhbmRpc2UgSU5DLgotCQkJCTZGLCBOTy43NCxaSE9VLVogU1QuLAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC01NSAgIChoZXgpCQlaQU5UQVosIEluYwotMDAxRDU1ICAgICAoYmFzZSAxNikJCVpBTlRBWiwgSW5jCi0JCQkJNTc1OCBXLiBMYXMgUG9zaXRhcyBBdmVudWUKLQkJCQlQbGVhc2FudG9uIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC01NiAgIChoZXgpCQlLcmFtZXIgRWxlY3Ryb25pY3MgTHRkLgotMDAxRDU2ICAgICAoYmFzZSAxNikJCUtyYW1lciBFbGVjdHJvbmljcyBMdGQuCi0JCQkJMyBBbSBWZU9sYW1vIFN0cmVldAotCQkJCUplcnVzYWxlbSAgOTU0NjMKLQkJCQlJU1JBRUwKLQotMDAtMUQtNTcgICAoaGV4KQkJQ0FFVEVDIE1lc3N0ZWNobmlrCi0wMDFENTcgICAgIChiYXNlIDE2KQkJQ0FFVEVDIE1lc3N0ZWNobmlrCi0JCQkJU2NobG9zc3N0cmFzc2UgOTVhCi0JCQkJT2xjaGluZyBCYXllcm4gODIxNDAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELTU4ICAgKGhleCkJCUNRIEluYwotMDAxRDU4ICAgICAoYmFzZSAxNikJCUNRIEluYwotCQkJCTVGLCBOby4gNDMsIExhbmUgNzYsIFJ1aSBHdWFuZyBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTU5ICAgKGhleCkJCU1pdHJhIEVuZXJneSAmIEluZnJhc3RydWN0dXJlCi0wMDFENTkgICAgIChiYXNlIDE2KQkJTWl0cmEgRW5lcmd5ICYgSW5mcmFzdHJ1Y3R1cmUKLQkJCQlCb3VsZXZhcmQgZGUgbCdFdXJvcGUgMTMxCi0JCQkJMTMwMSBXYXZyZSAKLQkJCQlCRUxHSVVNCi0KLTAwLTFELTVBICAgKGhleCkJCTJXaXJlIEluYy4KLTAwMUQ1QSAgICAgKGJhc2UgMTYpCQkyV2lyZSBJbmMuCi0JCQkJMTcwNCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gIEpvc2UgQ2FsaWZvcm5pYSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNUIgICAoaGV4KQkJVGVjdmFuIEluZm9ybWF0aWNhIEx0ZGEKLTAwMUQ1QiAgICAgKGJhc2UgMTYpCQlUZWN2YW4gSW5mb3JtYXRpY2EgTHRkYQotCQkJCVJ1YSBHdWFpY3VydXMsIDE0NQotCQkJCVZpbGEgQ29uY2VpY8OjbwotCQkJCURpYWRlbWEgU8OjbyBQYXVsbyAwOTkxMS02MzAKLQkJCQlCUkFaSUwKLQotMDAtMUQtNUMgICAoaGV4KQkJVG9tIENvbW11bmljYXRpb24gSW5kdXN0cmlhbCBDby4sTHRkLgotMDAxRDVDICAgICAoYmFzZSAxNikJCVRvbSBDb21tdW5pY2F0aW9uIEluZHVzdHJpYWwgQ28uLEx0ZC4KLQkJCQkxMTczIE5pcHBhLWNob2ggS29ob2t1LWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIzLTAwNTcKLQkJCQlKQVBBTgotCi0wMC0xRC01RCAgIChoZXgpCQlDb250cm9sIER5bmFtaWNzIFB0eS4gTHRkLgotMDAxRDVEICAgICAoYmFzZSAxNikJCUNvbnRyb2wgRHluYW1pY3MgUHR5LiBMdGQuCi0JCQkJUE8gQm94IDYzNgotCQkJCU1PUkxFWSBXZXN0ZXJuIEF1c3RyYWxpYSA2OTQzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTFELTVFICAgKGhleCkJCUNPTUlORyBNRURJQSBDT1JQLgotMDAxRDVFICAgICAoYmFzZSAxNikJCUNPTUlORyBNRURJQSBDT1JQLgotCQkJCUJPTkEgQmxkLiA0dGggRmwuLCA1NDgtMTgKLQkJCQlEb2dvay0xRG9uZywgS2FuZ25hbS1LdSwKLQkJCQlTZW91bCAgMTM1LTE1OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC01RiAgIChoZXgpCQlPdmVyU3BlZWQgU0FSTAotMDAxRDVGICAgICAoYmFzZSAxNikJCU92ZXJTcGVlZCBTQVJMCi0JCQkJMTUsIGFsbGVlIGR1IEJvaXMgQ2FpbGxleQotCQkJCUxlIFRodWl0LVNpZ25vbCBOb3JtYW5kaWUgMjczNzAKLQkJCQlGUkFOQ0UKLQotMDAtMUQtNjAgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDFENjAgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC02MSAgIChoZXgpCQlCSUogQ29ycG9yYXRpb24KLTAwMUQ2MSAgICAgKGJhc2UgMTYpCQlCSUogQ29ycG9yYXRpb24KLQkJCQk3RiBUYWthbWl6YXdhIEJ1aWxkaW5nLDItNy0xMCwKLQkJCQlLaXRhc2Fpd2FpLE5pc2hpCi0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjIwLTAwMDQKLQkJCQlKQVBBTgotCi0wMC0xRC02MiAgIChoZXgpCQlJblBoYXNlIFRlY2hub2xvZ2llcwotMDAxRDYyICAgICAoYmFzZSAxNikJCUluUGhhc2UgVGVjaG5vbG9naWVzCi0JCQkJMjAwMCBQaWtlIFJvYWQKLQkJCQlMb25nbW9udCBDb2xvcmFkbyA4MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNjMgICAoaGV4KQkJTWllbGUgJiBDaWUuIEtHCi0wMDFENjMgICAgIChiYXNlIDE2KQkJTWllbGUgJiBDaWUuIEtHCi0JCQkJQ2FybC1NaWVsZS1TdHIuIDI5Ci0JCQkJR8O8dGVyc2xvaCAgMzMzMzIKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELTY0ICAgKGhleCkJCUFkYW0gQ29tbXVuaWNhdGlvbnMgU3lzdGVtcyBJbnQgTHRkCi0wMDFENjQgICAgIChiYXNlIDE2KQkJQWRhbSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zIEludCBMdGQKLQkJCQlUaGUgTWlzc2lvbgotCQkJCVdlbGxpbmd0b24gU3RyZWV0Ci0JCQkJU3RvY2twb3J0IENoZXNoaXJlIFNLMSAzQUgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRC02NSAgIChoZXgpCQlNaWNyb3dhdmUgUmFkaW8gQ29tbXVuaWNhdGlvbnMKLTAwMUQ2NSAgICAgKGJhc2UgMTYpCQlNaWNyb3dhdmUgUmFkaW8gQ29tbXVuaWNhdGlvbnMKLQkJCQkxMDEgQmlsbGVyaWNhIEF2ZW11ZSwgQmxkZyA2Ci0JCQkJTi4gQmlsbGVyaWNhIE1BIDAxODYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC02NiAgIChoZXgpCQlIeXVuZGFpIFRlbGVjb20KLTAwMUQ2NiAgICAgKGJhc2UgMTYpCQlIeXVuZGFpIFRlbGVjb20KLQkJCQlIeXVuZGFpIFRlbGVjb20gQmxkZy4sIDQyNzMtMTIsIFNoaW5naWwtRG9uZywgWW91bmdkdW5ncG8tR3UsCi0JCQkJU2VvdWwgIDE1MC04NTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtNjcgICAoaGV4KQkJQU1FQwotMDAxRDY3ICAgICAoYmFzZSAxNikJCUFNRUMKLQkJCQk5RixOby4zNjAsUnVlbCBHdWFuZyBSZCxOZWlodQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC02OCAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDAxRDY4ICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NyBCCi0JCQkJRWRlZ2VtIEFudHdlcnAgQi0yNjUwCi0JCQkJQkVMR0lVTQotCi0wMC0xRC02OSAgIChoZXgpCQlLbm9yci1CcmVtc2UgQUcKLTAwMUQ2OSAgICAgKGJhc2UgMTYpCQlLbm9yci1CcmVtc2UgQUcKLQkJCQlNb29zYWNoZXIgU3RyLiA4MAotCQkJCU11ZW5jaGVuIEJZIDgwODA5Ci0JCQkJR0VSTUFOWQotCi0wMC0xRC02QSAgIChoZXgpCQlBbHBoYSBOZXR3b3JrcyBJbmMuCi0wMDFENkEgICAgIChiYXNlIDE2KQkJQWxwaGEgTmV0d29ya3MgSW5jLgotCQkJCU5vLjggTGktc2hpbmcgU2V2ZW50aCBSb2FkLFNjaWVuY2UtYmFzZWQKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTZCICAgKGhleCkJCU1vdG9yb2xhIChmb3JtZXJseSBOZXRvcGlhLCBJbmMKLTAwMUQ2QiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSAoZm9ybWVybHkgTmV0b3BpYSwgSW5jCi0JCQkJNjAwMSBTaGVsbG1vdW5kIFN0Ci0JCQkJNHRoIEZsb29yCi0JCQkJRW1lcnl2aWxsZSBDQSA5NDYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNkMgICAoaGV4KQkJQ2xhcmlQaHkgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMUQ2QyAgICAgKGJhc2UgMTYpCQlDbGFyaVBoeSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTE2IFRlY2hub2xvZ3kgRHIuLCBTdWl0ZSAxNjUKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTZEICAgKGhleCkJCUNvbmZpZGFudCBJbnRlcm5hdGlvbmFsIExMQwotMDAxRDZEICAgICAoYmFzZSAxNikJCUNvbmZpZGFudCBJbnRlcm5hdGlvbmFsIExMQwotCQkJCTI1MzAgTWVyaWRpYW4gUGt3eQotCQkJCUR1cmhhbSBOb3J0aCBDYXJvbGluYSAyNzcxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtNkUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUQ2RSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRC02RiAgIChoZXgpCQlDaGFpbnpvbmUgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAxRDZGICAgICAoYmFzZSAxNikJCUNoYWluem9uZSBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJQ2hhaW56b25lIFRlY2guIEluZCBQYXJrLCBOYW54aW4gMXN0IFJkLgotCQkJCUd1aWNoZW5nIE5hbmhhaQotCQkJCUZvc2hhbiBHdWFuZ2RvbmcgNTI4MjAwCi0JCQkJQ0hJTkEKLQotMDAtMUQtNzAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRDcwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTcxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUQ3MSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC03MiAgIChoZXgpCQlXaXN0cm9uIENvcnBvcmF0aW9uCi0wMDFENzIgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotCQkJCTIxRiwgODgsIFNlYy4xLCBIc2luIFRhaSBXdSBSZC4sIEhzaWNoaWgsCi0JCQkJVGFpcGVpIEhzaWVuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtNzMgICAoaGV4KQkJQnVmZmFsbyBJbmMuCi0wMDFENzMgICAgIChiYXNlIDE2KQkJQnVmZmFsbyBJbmMuCi0JCQkJMTUsU2hpYmF0YSBIb25kb3JpIDQtY2hvbWUsCi0JCQkJTWluYW1pLWt1Ci0JCQkJTmFnb3lhIEFpY2hpIFByZWYuIDQ1Ny04NTIwCi0JCQkJSkFQQU4KLQotMDAtMUQtNzQgICAoaGV4KQkJVGlhbmppbiBDaGluYS1TaWxpY29uIE1pY3JvZWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDFENzQgICAgIChiYXNlIDE2KQkJVGlhbmppbiBDaGluYS1TaWxpY29uIE1pY3JvZWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJMzAxLDNGIEJ1aWxkaW5nIDIxMSxOby4yMTQgSG9uZ3FpIFJvYWQsIE5hbmthaSBEaXN0cmljdCwgVGlhbmppbiBDaGluYQotCQkJCVRpYW5qaW4gIDMwMDE5MAotCQkJCUNISU5BCi0KLTAwLTFELTc1ICAgKGhleCkJCVJhZGlvc2NhcGUgUExDCi0wMDFENzUgICAgIChiYXNlIDE2KQkJUmFkaW9zY2FwZSBQTEMKLQkJCQkxIEFsYmFueSBUZXJyYWNlCi0JCQkJUmVnZW50J3MgUGFyayBMb25kb24gTlcxIDREUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFELTc2ICAgKGhleCkJCUV5ZWhlaWdodCBMdGQuCi0wMDFENzYgICAgIChiYXNlIDE2KQkJRXllaGVpZ2h0IEx0ZC4KLQkJCQlVbml0IDM0LCBQYXJrIEhvdXNlCi0JCQkJMTUtMTkgR3JlZW5oaWxsIENyZXNjZW50Ci0JCQkJV2F0Zm9yZCBIZXJ0cyBXRDE4IDhQSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFELTc3ICAgKGhleCkJCU5TR2F0ZQotMDAxRDc3ICAgICAoYmFzZSAxNikJCU5TR2F0ZQotCQkJCVJtIDEzMDQsIDM5IEtpcnBpY2huYXlhIFN0cmVldAotCQkJCU1vc2NvdyAgMTA1MTg3Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFELTc4ICAgKGhleCkJCUludmVuZ28gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkCi0wMDFENzggICAgIChiYXNlIDE2KQkJSW52ZW5nbyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkzL0YsTm8uVDItQixIaWdoLVRlY2ggSW5kdXN0cmlhbCBQYXJrIFNvdXRoCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTFELTc5ICAgKGhleCkJCVNJR05BTUFYIExMQwotMDAxRDc5ICAgICAoYmFzZSAxNikJCVNJR05BTUFYIExMQwotCQkJCTEwOTAgVmVybW9udCBBdmVudWUKLQkJCQlXYXNoaW5ndG9uIFdhc2hpbmd0b24gRC5DLiAyMDAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtN0EgICAoaGV4KQkJV2lkZWJhbmQgU2VtaWNvbmR1Y3RvciwgSW5jLgotMDAxRDdBICAgICAoYmFzZSAxNikJCVdpZGViYW5kIFNlbWljb25kdWN0b3IsIEluYy4KLQkJCQkxMzUwIFBlYXIgQXZlCi0JCQkJU3VpdGUgQwotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTdCICAgKGhleCkJCUljZSBFbmVyZ3ksIEluYy4KLTAwMUQ3QiAgICAgKGJhc2UgMTYpCQlJY2UgRW5lcmd5LCBJbmMuCi0JCQkJOTM1MSBFYXN0bWFuIFBhcmsgRHJpdmUKLQkJCQlTdWl0ZSBCCi0JCQkJV2luZHNvciBDb2xvcmFkbyA4MDU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtN0MgICAoaGV4KQkJQUJFIEVsZXR0cm9uaWNhIFMucC5BLgotMDAxRDdDICAgICAoYmFzZSAxNikJCUFCRSBFbGV0dHJvbmljYSBTLnAuQS4KLQkJCQlWaWEgTGVvbmFyZG8gZGEgVmluY2ksIDkyCi0JCQkJQ0FSQVZBR0dJTyBCRyAyNDA0MwotCQkJCUlUQUxZCi0KLTAwLTFELTdEICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0wMDFEN0QgICAgIChiYXNlIDE2KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlQaW4tSmVuIENpdHksIFRhb3l1YW4sCi0JCQkJUGluLUplbiBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtN0UgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi0wMDFEN0UgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC03RiAgIChoZXgpCQlUZWtyb24gSW50ZXJuYXRpb25hbCBMdGQKLTAwMUQ3RiAgICAgKGJhc2UgMTYpCQlUZWtyb24gSW50ZXJuYXRpb25hbCBMdGQKLQkJCQk0MDkgQ3ViYSBTdHJlZXQsIEFsaWNldG93bgotCQkJCVBPIEJveCAzMS0yODUKLQkJCQlMb3dlciBIdXR0IFdlbGxpbmd0b24gNTAxMAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTFELTgwICAgKGhleCkJCUJlaWppbmcgSHVhaHVhbiBFbGV0cm9uaWNzIENvLixMdGQKLTAwMUQ4MCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEh1YWh1YW4gRWxldHJvbmljcyBDby4sTHRkCi0JCQkJTm8uMjYsU2hhbmdkaSA2dGggU3QuSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0xRC04MSAgIChoZXgpCQlHVUFOR1pIT1UgR0FURVdBWSBFTEVDVFJPTklDUyBDTy4sIExURAotMDAxRDgxICAgICAoYmFzZSAxNikJCUdVQU5HWkhPVSBHQVRFV0FZIEVMRUNUUk9OSUNTIENPLiwgTFRECi0JCQkJQjIwIyw0RixOby45IEppYW5nb25nIFJvYWQsVGlhbmhlIFNvZnR3YXJlIFBhcmssVGlhbmhlIERpc3RyaWN0LAotCQkJCUdVQU5HWkhPVSBHdWFuZ2RvbmcgNTEwNjY1Ci0JCQkJQ0hJTkEKLQotMDAtMUQtODIgICAoaGV4KQkJR04gQS9TIChHTiBOZXRjb20gQS9TKQotMDAxRDgyICAgICAoYmFzZSAxNikJCUdOIEEvUyAoR04gTmV0Y29tIEEvUykKLQkJCQlMYXV0cnVwYmplcmcgNwotCQkJCVAuTy5Cb3ggOTkKLQkJCQlCYWxsZXJ1cCAgREsgLSAyNzUwCi0JCQkJREVOTUFSSwotCi0wMC0xRC04MyAgIChoZXgpCQlFbWl0ZWNoIENvcnBvcmF0aW9uCi0wMDFEODMgICAgIChiYXNlIDE2KQkJRW1pdGVjaCBDb3Jwb3JhdGlvbgotCQkJCTJGLE5vLjctMSxJbmR1c3RyeSBFLFJkLjkKLQkJCQlTY2llbmNlLUJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1ICAzMDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTg0ICAgKGhleCkJCUdhdGV3YXksIEluYy4KLTAwMUQ4NCAgICAgKGJhc2UgMTYpCQlHYXRld2F5LCBJbmMuCi0JCQkJNjEwIEdhdGV3YXkgRHJpdmUKLQkJCQlQLk8uIEJveCAyMDAwCi0JCQkJTm9ydGggU2lvdXggQ2l0eSBTb3V0aCBEYWtvdGEgNTcwNDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTg1ICAgKGhleCkJCUNhbGwgRGlyZWN0IENlbGx1bGFyIFNvbHV0aW9ucwotMDAxRDg1ICAgICAoYmFzZSAxNikJCUNhbGwgRGlyZWN0IENlbGx1bGFyIFNvbHV0aW9ucwotCQkJCVN1aXRlIDE0NSwgTmF0aW9uYWwgSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQlBdXN0cmFsaWFuIFRlY2hub2xvZ3kgUGFyawotCQkJCUV2ZWxlaWdoIE5TVyAxNDMwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTFELTg2ICAgKGhleCkJCVNoaW53YSBJbmR1c3RyaWVzKENoaW5hKSBMdGQuCi0wMDFEODYgICAgIChiYXNlIDE2KQkJU2hpbndhIEluZHVzdHJpZXMoQ2hpbmEpIEx0ZC4KLQkJCQk4IFBpbmduYW56aG9uZyBSb2FkLCBQaW5nbmFuIEluZHVzdHJpYWwgUGFyaywgWmhvbmdrYWkgTm8uNCBSb2FkLAotCQkJCUh1aXpob3UgQ2l0eSBHdWFuZ2RvbmcgUHJvdmluY2UgNTE2MDA2Ci0JCQkJQ0hJTkEKLQotMDAtMUQtODcgICAoaGV4KQkJVmlnVGVjaCBMYWJzIFNkbiBCaGQKLTAwMUQ4NyAgICAgKGJhc2UgMTYpCQlWaWdUZWNoIExhYnMgU2RuIEJoZAotCQkJCTQ1LTExIFRoZSBCb3VsZXZhcmQgTWlkIFZhbGxleSBDaXR5Ci0JCQkJTGluZ2thcmFuIFN5ZWQgUHV0cmEKLQkJCQlLdWFsYSBMdW1wdXIgU2VsYW5nb3IgNTkyMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRC04OCAgIChoZXgpCQlDbGVhcndpcmUKLTAwMUQ4OCAgICAgKGJhc2UgMTYpCQlDbGVhcndpcmUKLQkJCQk0NDAwIENhcmlsbG9uIFBvaW50Ci0JCQkJS2lya2xhbmQgV2FzaGluZ3RvbiA5ODAzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtODkgICAoaGV4KQkJVmF1bHRTdG9yIENvcnBvcmF0aW9uCi0wMDFEODkgICAgIChiYXNlIDE2KQkJVmF1bHRTdG9yIENvcnBvcmF0aW9uCi0JCQkJMTAxMCBCcmlvc28gRHJpdmUKLQkJCQlDb3N0YSBNZXNhIENBIDkyNjI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC04QSAgIChoZXgpCQlUZWNoVHJleCBJbmMKLTAwMUQ4QSAgICAgKGJhc2UgMTYpCQlUZWNoVHJleCBJbmMKLQkJCQk2MjIxIEhpZ2h3YXkgNywgVW5pdCAxMgotCQkJCVdvb2RicmlkZ2UgT250YWxpbyBMNEggMEs4Ci0JCQkJQ0FOQURBCi0KLTAwLTFELThCICAgKGhleCkJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi0wMDFEOEIgICAgIChiYXNlIDE2KQkJQURCIEJyb2FkYmFuZCBJdGFsaWEKLQkJCQlWSUFMRSBTQVJDQSAyMjIKLQkJCQlNSUxBTk8gIDIwMTI2Ci0JCQkJSVRBTFkKLQotMDAtMUQtOEMgICAoaGV4KQkJTGEgQ3Jvc3NlIFRlY2hub2xvZ3kgTFRECi0wMDFEOEMgICAgIChiYXNlIDE2KQkJTGEgQ3Jvc3NlIFRlY2hub2xvZ3kgTFRECi0JCQkJMjgwOSBMb3NleSBCbHZkLiBTby4KLQkJCQlMYSBDcm9zc2UgV0kgNTQ2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELThEICAgKGhleCkJCVJheXRlayBHbWJICi0wMDFEOEQgICAgIChiYXNlIDE2KQkJUmF5dGVrIEdtYkgKLQkJCQlCbGFua2VuYnVyZ2VyIFN0ci4gMTM1Ci0JCQkJQmVybGluICAxMzEyNwotCQkJCUdFUk1BTlkKLQotMDAtMUQtOEUgICAoaGV4KQkJQWxlcmVvbiwgSW5jLgotMDAxRDhFICAgICAoYmFzZSAxNikJCUFsZXJlb24sIEluYy4KLQkJCQk3NjAwIE4uIENhcGl0YWwgb2YgVGV4YXMgSHd5Ci0JCQkJQmxkZyBDLCAjMjAwCi0JCQkJQXVzdGluIFRYIDc4NzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC04RiAgIChoZXgpCQlQdXJlV2F2ZSBOZXR3b3JrcwotMDAxRDhGICAgICAoYmFzZSAxNikJCVB1cmVXYXZlIE5ldHdvcmtzCi0JCQkJMjY2MC1DIE1hcmluZSBXYXkKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC05MCAgIChoZXgpCQlFTUNPIEZsb3cgU3lzdGVtcwotMDAxRDkwICAgICAoYmFzZSAxNikJCUVNQ08gRmxvdyBTeXN0ZW1zCi0JCQkJMjE1MCBNaWxsZXIgRHJpdmUKLQkJCQlMb25nbW9udCBDTyA4MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtOTEgICAoaGV4KQkJRGlnaXRpemUsIEluYwotMDAxRDkxICAgICAoYmFzZSAxNikJCURpZ2l0aXplLCBJbmMKLQkJCQkxNTggRWRpc29uIFJvYWQKLQkJCQlMYWtlIEhvcGF0Y29uZyBOZXcgSmVyc2V5IDA3ODQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC05MiAgIChoZXgpCQlNSUNSTy1TVEFSIElOVCdMIENPLixMVEQuCi0wMDFEOTIgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlQnTCBDTy4sTFRELgotCQkJCU5vLjY5LExpLURlIFN0LEp1bmctSG8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELTkzICAgKGhleCkJCU1vZGFjb20KLTAwMUQ5MyAgICAgKGJhc2UgMTYpCQlNb2RhY29tCi0JCQkJSmluc3VrIEJ1aWxkaW5nIDE1MzYtNwotCQkJCVNlb2Noby1Eb25nLCBTZW9jaG8tR3UKLQkJCQlTZW91bCAgMTM3LTA3MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC05NCAgIChoZXgpCQlDbGltYXggVGVjaG5vbG9neSBDby4sIEx0ZAotMDAxRDk0ICAgICAoYmFzZSAxNikJCUNsaW1heCBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJTm8uIDI1OCwgSHNpbiBIdSAybmQgUm9hZAotCQkJCU5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpIENpdHkgVGFpcGVpIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtOTUgICAoaGV4KQkJRmxhc2gsIEluYy4KLTAwMUQ5NSAgICAgKGJhc2UgMTYpCQlGbGFzaCwgSW5jLgotCQkJCTM3MDMgTi4gMjAwdGggU3QuCi0JCQkJRWxraG9ybiBORSA2ODAyMi0yOTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC05NiAgIChoZXgpCQlXYXRjaEd1YXJkIFZpZGVvCi0wMDFEOTYgICAgIChiYXNlIDE2KQkJV2F0Y2hHdWFyZCBWaWRlbwotCQkJCTMwMDEgU3VtbWl0IEF2ZS4KLQkJCQlQbGFubyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtOTcgICAoaGV4KQkJQWxlcnR1cyBUZWNobm9sb2dpZXMgTExDCi0wMDFEOTcgICAgIChiYXNlIDE2KQkJQWxlcnR1cyBUZWNobm9sb2dpZXMgTExDCi0JCQkJMTE3ODUgQmVsdHN2aWxsZSBEcml2ZQotCQkJCVN1aXRlIDEzMjUKLQkJCQlCZWx0c3ZpbGxlIE1EIDIwNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC05OCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRDk4ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRC05OSAgIChoZXgpCQlDeWFuIE9wdGljLCBJbmMuCi0wMDFEOTkgICAgIChiYXNlIDE2KQkJQ3lhbiBPcHRpYywgSW5jLgotCQkJCTEzOTAgTi4gTWNEb3dlbGwgQmx2ZAotCQkJCVN1aXRlIEctMzI3Ci0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTlBICAgKGhleCkJCUdPREVYIElOVEVSTkFUSU9OQUwgQ08uLCBMVEQKLTAwMUQ5QSAgICAgKGJhc2UgMTYpCQlHT0RFWCBJTlRFUk5BVElPTkFMIENPLiwgTFRECi0JCQkJNEYuIE5PLjE2OCwgTGlhbi1DaGVuZyBSb2FkIENodW5nLUhvIENpdHksCi0JCQkJVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtOUIgICAoaGV4KQkJSG9rdXlvIEF1dG9tYXRpYyBDby4sIEx0ZC4KLTAwMUQ5QiAgICAgKGJhc2UgMTYpCQlIb2t1eW8gQXV0b21hdGljIENvLiwgTHRkLgotCQkJCU5paXRha2EgMS0xMC05Ci0JCQkJWW9kb2dhd2EtS3UKLQkJCQlPc2FrYSAgNTMyLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0xRC05QyAgIChoZXgpCQlSb2Nrd2VsbCBBdXRvbWF0aW9uCi0wMDFEOUMgICAgIChiYXNlIDE2KQkJUm9ja3dlbGwgQXV0b21hdGlvbgotCQkJCTEgQWxsZW4tQnJhZGxleSBEcml2ZQotCQkJCUNTLUMyMzkKLQkJCQlNYXlmaWVsZCBIZWlnaHRzIE9oaW8gNDQxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELTlEICAgKGhleCkJCUFSVEpPWSBJTlRFUk5BVElPTkFMIExJTUlURUQKLTAwMUQ5RCAgICAgKGJhc2UgMTYpCQlBUlRKT1kgSU5URVJOQVRJT05BTCBMSU1JVEVECi0JCQkJUm9vbSAxNjAxLE5vLjIzOSBaaG9uZ1hpbmcgUm9hZCxMdW9IdSBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDEKLQkJCQlDSElOQQotCi0wMC0xRC05RSAgIChoZXgpCQlBWElPTiBURUNITk9MT0dJRVMKLTAwMUQ5RSAgICAgKGJhc2UgMTYpCQlBWElPTiBURUNITk9MT0dJRVMKLQkJCQkxNTEgUlVFIFBBUkMgSU5OT1ZBVElPTgotCQkJCUxBIFBPQ0FUSUVSRSBRVUVCRUMgRzBSMVowCi0JCQkJQ0FOQURBCi0KLTAwLTFELTlGICAgKGhleCkJCU1BVFQgICBSLlAuVHJhY3p5bnNjeSBTcC5KLgotMDAxRDlGICAgICAoYmFzZSAxNikJCU1BVFQgICBSLlAuVHJhY3p5bnNjeSBTcC5KLgotCQkJCVBvbG5vY25hIDQ0Ci0JCQkJS29zY2lhbiB3aWVsa29wb2xza2llIFBMLTY0MDAwCi0JCQkJUE9MQU5ECi0KLTAwLTFELUEwICAgKGhleCkJCUhlbmcgWXUgRWxlY3Ryb25pYyBNYW51ZmFjdHVyaW5nIENvbXBhbnkgTGltaXRlZAotMDAxREEwICAgICAoYmFzZSAxNikJCUhlbmcgWXUgRWxlY3Ryb25pYyBNYW51ZmFjdHVyaW5nIENvbXBhbnkgTGltaXRlZAotCQkJCVJvb20gMTAwNCwgSFNIIE1vbmdrb2sgUGxhemEsCi0JCQkJNzk0LTgwMiBOYXRoYW4gUm9hZCwKLQkJCQlLb3dsb29uICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUQtQTEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxREExICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUEyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMURBMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1BMyAgIChoZXgpCQlTYWJpT3NvCi0wMDFEQTMgICAgIChiYXNlIDE2KQkJU2FiaU9zbwotCQkJCTE4OSBTIFN0YXRlIFN1aXRlICMyNTAKLQkJCQlDbGVhcmZpZWxkIFV0YWggODQwMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUE0ICAgKGhleCkJCUhhbmd6aG91IFN5c3RlbSBUZWNobm9sb2d5IENPLiwgTFRECi0wMDFEQTQgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgU3lzdGVtIFRlY2hub2xvZ3kgQ08uLCBMVEQKLQkJCQlST09NIEExNTA1IEh1YVhpbmcgdGltZXMgcGxhemEsTk8gNDc4IFdlbnNhbiBSb2FkCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDEyCi0JCQkJQ0hJTkEKLQotMDAtMUQtQTUgICAoaGV4KQkJV0IgRWxlY3Ryb25pY3MKLTAwMURBNSAgICAgKGJhc2UgMTYpCQlXQiBFbGVjdHJvbmljcwotCQkJCUxhbmdlbGFuZHN2ZWogMUEKLQkJCQlIZXJuaW5nIEhlcm5pbmcgNzQwMAotCQkJCURFTk1BUksKLQotMDAtMUQtQTYgICAoaGV4KQkJTWVkaWEgTnVtZXJpY3MgTGltaXRlZAotMDAxREE2ICAgICAoYmFzZSAxNikJCU1lZGlhIE51bWVyaWNzIExpbWl0ZWQKLQkJCQlSb2RlbmJhY2hlciBDaGF1c3NlZSA2Ci0JCQkJSGFuYXUgSGVzc2VuIDYzNDU3Ci0JCQkJR0VSTUFOWQotCi0wMC0xRC1BNyAgIChoZXgpCQlTZWFtbGVzcyBJbnRlcm5ldAotMDAxREE3ICAgICAoYmFzZSAxNikJCVNlYW1sZXNzIEludGVybmV0Ci0JCQkJMjA1MCBSdXNzZXR0IFdheSBTdWl0ZSAzMzgKLQkJCQlDYXJzb24gQ2l0eSBOZXZhZGEgODk3MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUE4ICAgKGhleCkJCVRha2FoYXRhIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMURBOCAgICAgKGJhc2UgMTYpCQlUYWthaGF0YSBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJMTE4OCxLdWJvdGEsS3Vib3RhLW1hY2hpCi0JCQkJWW9uZXphd2Etc2hpIFlhbWFnYXRhLVByZWYuIDk5Mi0wMDAzCi0JCQkJSkFQQU4KLQotMDAtMUQtQTkgICAoaGV4KQkJQ2FzdGxlcyBUZWNobm9sb2d5LCBDby4sIExURAotMDAxREE5ICAgICAoYmFzZSAxNikJCUNhc3RsZXMgVGVjaG5vbG9neSwgQ28uLCBMVEQKLQkJCQkyRiwgTm8uMjA1LCBTZWMgMyBCZWlzaGluIFJkLiwKLQkJCQlIc2luLVRpZW4gQ2l0eSBUYWlwZWkgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRC1BQSAgIChoZXgpCQlEcmF5VGVrIENvcnAuCi0wMDFEQUEgICAgIChiYXNlIDE2KQkJRHJheVRlayBDb3JwLgotCQkJCU5vLiAyNiwgRnUtU2hpbmcgUm9hZAotCQkJCUh1S291IENvdW50eSwgSHNpbi1DaHUgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtQUIgICAoaGV4KQkJU3dpc3NRdWFsIExpY2Vuc2UgQUcKLTAwMURBQiAgICAgKGJhc2UgMTYpCQlTd2lzc1F1YWwgTGljZW5zZSBBRwotCQkJCUJhYXJlcnN0cmFzc2UgNzgKLQkJCQladWcgUG9zdGZhY2ggMTE3Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUQtQUMgICAoaGV4KQkJR2lnYW1vbiBTeXN0ZW1zIExMQwotMDAxREFDICAgICAoYmFzZSAxNikJCUdpZ2Ftb24gU3lzdGVtcyBMTEMKLQkJCQk1OTggR2licmFsdGFyIERyaXZlCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUFEICAgKGhleCkJCVNpbm90ZWNoIEVuZ2luZWVyaW5nIENvbnN1bHRhbnRzLCBJbmMuICBHZW90ZWNobmljYWwgRW5naW5lZQotMDAxREFEICAgICAoYmFzZSAxNikJCVNpbm90ZWNoIEVuZ2luZWVyaW5nIENvbnN1bHRhbnRzLCBJbmMuICBHZW90ZWNobmljYWwgRW5naW5lZQotCQkJCUJhc2VtZW50IE5vLjcgTGFuZSAyNiwgWWF0LVNlbiBSZC4KLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtQUUgICAoaGV4KQkJQ0hBTkcgVFNFTkcgVEVDSE5PTE9HWSBDTy4sIExURAotMDAxREFFICAgICAoYmFzZSAxNikJCUNIQU5HIFRTRU5HIFRFQ0hOT0xPR1kgQ08uLCBMVEQKLQkJCQkyRiBOTy4xNjAgQkFDSyBCVUlMRElORywgTEVOIENIRU5HIFJELiwgQ0hVTkcgSE8gQ0lUWQotCQkJCVRBSVBFSSBIU0lFTiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELUFGICAgKGhleCkJCU5vcnRlbAotMDAxREFGICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xRC1CMCAgIChoZXgpCQlGdUppYW4gSGVuZ1RvbmcgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkCi0wMDFEQjAgICAgIChiYXNlIDE2KQkJRnVKaWFuIEhlbmdUb25nIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLjE0LTgwNCxCdWlsZGluZyAyLEppblhpdUZ1Q2hlbmcsTm8uMzM4LEh1YUxpbiBSb2FkCi0JCQkJRnVaaG91IENpdHkgRnVKaWFuIFByb3ZpbmNlIDM1MDAwMQotCQkJCUNISU5BCi0KLTAwLTFELUIxICAgKGhleCkJCUNyZXNjZW5kbyBOZXR3b3JrcwotMDAxREIxICAgICAoYmFzZSAxNikJCUNyZXNjZW5kbyBOZXR3b3JrcwotCQkJCTYgWW9uaSBOZXRhbnlhaHUgU3QuCi0JCQkJT3ItWWVodWRhICA2MDM3NgotCQkJCUlTUkFFTAotCi0wMC0xRC1CMiAgIChoZXgpCQlIT0tLQUlETyBFTEVDVFJJQyBFTkdJTkVFUklORyBDTy4sTFRELgotMDAxREIyICAgICAoYmFzZSAxNikJCUhPS0tBSURPIEVMRUNUUklDIEVOR0lORUVSSU5HIENPLixMVEQuCi0JCQkJU291dGgxNS1XZXN0MjMKLQkJCQlOYW5wb3JvLUNobyBIb2trYWlkbyAwNjktMDIxNQotCQkJCUpBUEFOCi0KLTAwLTFELUIzICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLTAwMURCMyAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZAotCQkJCVJvc2V2aWxsZSBDQSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQjQgICAoaGV4KQkJS1VNSE8gRU5HIENPLixMVEQKLTAwMURCNCAgICAgKGJhc2UgMTYpCQlLVU1ITyBFTkcgQ08uLExURAotCQkJCTQ5OC0xMywgSFlVTkRBSSBCL0QgNUYKLQkJCQlQWUVPTkdSSSAzLURPTkcsIFNFTy1HVQotCQkJCURBRUdVICA3MDMtODM1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELUI1ICAgKGhleCkJCUp1bmlwZXIgbmV0d29ya3MKLTAwMURCNSAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIG5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZS4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUI2ICAgKGhleCkJCUJlc3RDb21tIE5ldHdvcmtzLCBJbmMuCi0wMDFEQjYgICAgIChiYXNlIDE2KQkJQmVzdENvbW0gTmV0d29ya3MsIEluYy4KLQkJCQk0NDAwIEUuIEJyb2Fkd2F5IEJsdmQuCi0JCQkJU3VpdGUgMjAxCi0JCQkJVHVjc29uIEFaIDg1NzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1CNyAgIChoZXgpCQlUZW5kcmlsIE5ldHdvcmtzLCBJbmMuCi0wMDFEQjcgICAgIChiYXNlIDE2KQkJVGVuZHJpbCBOZXR3b3JrcywgSW5jLgotCQkJCTU3MDAtRCBGbGF0aXJvbiBQYXJrd2F5Ci0JCQkJU3VpdGUgNTcwMC1ECi0JCQkJQm91bGRlciBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQjggICAoaGV4KQkJSW50b3RvIEluYy4KLTAwMURCOCAgICAgKGJhc2UgMTYpCQlJbnRvdG8gSW5jLgotCQkJCTMxMDAgRGUgTGEgQ3J1eiBCbHZkLiAgIzMwMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1COSAgIChoZXgpCQlXZWxsc3ByaW5nIFdpcmVsZXNzCi0wMDFEQjkgICAgIChiYXNlIDE2KQkJV2VsbHNwcmluZyBXaXJlbGVzcwotCQkJCTEwNyBNYWdlbGxhIENvdXJ0Ci0JCQkJTm9ydGggV2FsZXMgUGEgMTk0NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUJBICAgKGhleCkJCVNvbnkgQ29ycG9yYXRpb24KLTAwMURCQSAgICAgKGJhc2UgMTYpCQlTb255IENvcnBvcmF0aW9uCi0JCQkJR290ZW55YW1hIFRlYyw1LTEtMTIsCi0JCQkJS2l0YXNoaW5hZ2F3YQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTAwLTFELUJCICAgKGhleCkJCUR5bmFtaWMgU3lzdGVtIEVsZWN0cm9uaWNzIENvcnAuCi0wMDFEQkIgICAgIChiYXNlIDE2KQkJRHluYW1pYyBTeXN0ZW0gRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQk1RixOTyw5LExBTkUgMTMwLFNFQyAxLEtVQU5HRyBGVSBSRC5TQU4gQ0hVTkcgQ0lUWSwKLQkJCQlUYWlwZWkgSHNpZW4gMjQxNTgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELUJDICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAxREJDICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTFELUJEICAgKGhleCkJCVZlcnNhbWVkIEluYy4KLTAwMURCRCAgICAgKGJhc2UgMTYpCQlWZXJzYW1lZCBJbmMuCi0JCQkJMiBCbHVlIEhpbGwgUGxhemEKLQkJCQlQZWFybCBSaXZlciBOWSAxMDk2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQkUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0wMDFEQkUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4uIFVTIDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElsbGlub2lzIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1CRiAgIChoZXgpCQlSYWRpaWVudCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMURCRiAgICAgKGJhc2UgMTYpCQlSYWRpaWVudCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyMDg0LUEgV2Fsc2ggQXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUMwICAgKGhleCkJCUVucGhhc2UgRW5lcmd5Ci0wMDFEQzAgICAgIChiYXNlIDE2KQkJRW5waGFzZSBFbmVyZ3kKLQkJCQkyMDEgMXN0IFN0cmVldCwgU3VpdGUgMTExCi0JCQkJUGV0YWx1bWEgQ0EgOTQ5NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUMxICAgKGhleCkJCUF1ZGluYXRlIFB0eSBMCi0wMDFEQzEgICAgIChiYXNlIDE2KQkJQXVkaW5hdGUgUHR5IEwKLQkJCQlMZXZlbCAxLCA0NTggV2F0dGxlIFN0Ci0JCQkJVWx0aW1vIE5TVyAyMDA3Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFELUMyICAgKGhleCkJCVhPUlRFQyBPWQotMDAxREMyICAgICAoYmFzZSAxNikJCVhPUlRFQyBPWQotCQkJCUjDtnl0w6Rtw7ZudGllIDYKLQkJCQlMZW1ww6TDpGzDpCBQaXJrYW5tYWEgMzM4ODAKLQkJCQlGSU5MQU5ECi0KLTAwLTFELUMzICAgKGhleCkJCVJJS09SIFRWLCBMdGQKLTAwMURDMyAgICAgKGJhc2UgMTYpCQlSSUtPUiBUViwgTHRkCi0JCQkJS29zdG9tYXJvdnNreSBwZXIuLDMKLQkJCQlNb3Njb3cgIDEwNTEyMAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRC1DNCAgIChoZXgpCQlBSU9JIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDFEQzQgICAgIChiYXNlIDE2KQkJQUlPSSBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCUtEWCBPbW9yaSwgQmxkZy4gOEYKLQkJCQkxLTYtOCBPbW9yaSBLaXRhLCBPdGEta3UKLQkJCQlUb2t5byAgMTQzLTAwMTYKLQkJCQlKQVBBTgotCi0wMC0xRC1DNSAgIChoZXgpCQlCZWlqaW5nIEppYXh1biBGZWlob25nIEVsZWN0cmljaWFsIENvLiwgTHRkLgotMDAxREM1ICAgICAoYmFzZSAxNikJCUJlaWppbmcgSmlheHVuIEZlaWhvbmcgRWxlY3RyaWNpYWwgQ28uLCBMdGQuCi0JCQkJRWxlY3RyaWNhbCBCdWlsZGluZyxOby4gMzEgSmlhb2RhIEVhc3QgUm9hZCwKLQkJCQlCZWlqaW5nIEhhaWRpYW4gRGlzdHJpY3QsIDEwMDA0NAotCQkJCUNISU5BCi0KLTAwLTFELUM2ICAgKGhleCkJCVNOUiBJbmMuCi0wMDFEQzYgICAgIChiYXNlIDE2KQkJU05SIEluYy4KLQkJCQlWQklDIFQyMjNobywgSUNVLCAxMDMtNiBNdW5qaS1kb25nLCBZb3VzZW9uZy1ndQotCQkJCURhZWplb24gIDMwNS03MzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtQzcgICAoaGV4KQkJTC0zIENvbW11bmljYXRpb25zIEdlbmV2YSBBZXJvc3BhY2UKLTAwMURDNyAgICAgKGJhc2UgMTYpCQlMLTMgQ29tbXVuaWNhdGlvbnMgR2VuZXZhIEFlcm9zcGFjZQotCQkJCTQyNDAgSW50ZXJuYXRpb25hbCBQYXJrd2F5Ci0JCQkJU3VpdGUgMTAwCi0JCQkJQ2Fycm9sbHRvbiBUZXhhcyA3NTAwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQzggICAoaGV4KQkJU2NhZGFNZXRyY3MsIExMQy4KLTAwMURDOCAgICAgKGJhc2UgMTYpCQlTY2FkYU1ldHJjcywgTExDLgotCQkJCTU5NSBWaXN0YSBIaWxscyBDb3VydAotCQkJCUV1cmVrYSBNaXNzb3VyaSA2MzAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQzkgICAoaGV4KQkJR2FpblNwYW4gQ29ycC4KLTAwMURDOSAgICAgKGJhc2UgMTYpCQlHYWluU3BhbiBDb3JwLgotCQkJCVAuTy4gQm94IDIyMzU4MAotCQkJCUNhcm1lbCBDQSA5MzkyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtQ0EgICAoaGV4KQkJUEFWIEVsZWN0cm9uaWNzIExpbWl0ZWQKLTAwMURDQSAgICAgKGJhc2UgMTYpCQlQQVYgRWxlY3Ryb25pY3MgTGltaXRlZAotCQkJCTcgTGF2ZXJvY2sgUm9hZAotCQkJCVN0aXJsaW5nIFJvYWQgSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQlBaXJkcmllIExhbmFya3NoaXJlIE1MNiA3VUQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRC1DQiAgIChoZXgpCQlFeMOpbnMgRGV2ZWxvcG1lbnQgT3kKLTAwMURDQiAgICAgKGJhc2UgMTYpCQlFeMOpbnMgRGV2ZWxvcG1lbnQgT3kKLQkJCQlLYXVwcGFrYXR1IDM2Ci0JCQkJS2FqYWFuaSBLYWludXUgODcxMDAKLQkJCQlGSU5MQU5ECi0KLTAwLTFELUNDICAgKGhleCkJCUhldHJhIFNlY3VyZSBTb2x1dGlvbnMKLTAwMURDQyAgICAgKGJhc2UgMTYpCQlIZXRyYSBTZWN1cmUgU29sdXRpb25zCi0JCQkJMjM1MCBDb21tZXJjZSBQYXJrIERyLgotCQkJCVBhbG0gQmF5IEZMIDMyOTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DRCAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxRENEICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DRSAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxRENFICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1DRiAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxRENGICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1EMCAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQwICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1EMSAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQxICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1EMiAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQyICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1EMyAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQzICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1ENCAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQ0ICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1ENSAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQ1ICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1ENiAgIChoZXgpCQlBUlJJUyBHcm91cCwgSW5jLgotMDAxREQ2ICAgICAoYmFzZSAxNikJCUFSUklTIEdyb3VwLCBJbmMuCi0JCQkJMzg3MSBMYWtlZmllbGQgRHJpdmUKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1ENyAgIChoZXgpCQlBbGdvbGl0aAotMDAxREQ3ICAgICAoYmFzZSAxNikJCUFsZ29saXRoCi0JCQkJNDAwIElzYWJleQotCQkJCVNhaW50LUxhdXJlbnQgUWMgSDRUIDFWMwotCQkJCUNBTkFEQQotCi0wMC0xRC1EOCAgIChoZXgpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLTAwMUREOCAgICAgKGJhc2UgMTYpCQlNaWNyb3NvZnQgQ29ycG9yYXRpb24KLQkJCQlPbmUgTWljcm9zb2Z0IFdheQotCQkJCVJlZG1vbmQgV2FzaGluZ3RvbiA5ODA1Mi02Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1EOSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uLEx0ZC4KLTAwMUREOSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uLEx0ZC4KLQkJCQk2NixDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtREEgICAoaGV4KQkJTWlrcm9lbGVrdHJvbmlrYSBzcG9sLiBzIHIuIG8uCi0wMDFEREEgICAgIChiYXNlIDE2KQkJTWlrcm9lbGVrdHJvbmlrYSBzcG9sLiBzIHIuIG8uCi0JCQkJRHLDoWJ5IDg0OQotCQkJCVZ5c29rw6kgTcO9dG8gQ1ogNTY2IDAxCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMUQtREIgICAoaGV4KQkJQy1CRUwgQ29ycG9yYXRpb24KLTAwMUREQiAgICAgKGJhc2UgMTYpCQlDLUJFTCBDb3Jwb3JhdGlvbgotCQkJCUZ1dGFiYWNobyAzNS0xMgotCQkJCTZGIE9rYWRhIEJpbGRnCi0JCQkJSXRhYmFzaGkta3UgVG9reW8gMTczLTAwMTEKLQkJCQlKQVBBTgotCi0wMC0xRC1EQyAgIChoZXgpCQlIYW5nWmhvdSBEZUNoYW5nTG9uZyBUZWNoJkluZm8gQ28uLEx0ZAotMDAxRERDICAgICAoYmFzZSAxNikJCUhhbmdaaG91IERlQ2hhbmdMb25nIFRlY2gmSW5mbyBDby4sTHRkCi0JCQkJUm9vbSAxMTAyLEtlSmkgTWFuc2lvbiwKLQkJCQlFYXN0IFNvZnR3YXJlIFBhcmssOTAgV2VuU2FuIFJvYWQuCi0JCQkJSGFuZ1pob3UgWmhlSmlhbmcgMzEwMDEyCi0JCQkJQ0hJTkEKLQotMDAtMUQtREQgICAoaGV4KQkJREFUIEguSy4gTElNSVRFRAotMDAxREREICAgICAoYmFzZSAxNikJCURBVCBILksuIExJTUlURUQKLQkJCQlTdWl0ZSAxNDA1IDE0L0YuLCBDaXR5IFBsYXphIDQsIFRhaSBLb28gV2FuIFJkLAotCQkJCVRhaSBLb28gU2hpbmcgSG9uZyBLb25nIElzbGFuZCAwNjQ4MjgKLQkJCQlIT05HIEtPTkcKLQotMDAtMUQtREUgICAoaGV4KQkJWmhlamlhbmcgQnJvYWRjYXN0JlRlbGV2aXNpb24gVGVjaG5vbG9neSBDby4sTHRkLgotMDAxRERFICAgICAoYmFzZSAxNikJCVpoZWppYW5nIEJyb2FkY2FzdCZUZWxldmlzaW9uIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlCdWlsZGluZyBOby4xNixYaWRvdW1lbiBJbmR1c3RyeSBQYXJrLFdlbnlpIFJvYWQsCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDEyCi0JCQkJQ0hJTkEKLQotMDAtMUQtREYgICAoaGV4KQkJU3VuaXRlYyBFbnRlcnByaXNlIENvLiwgTHRkLgotMDAxRERGICAgICAoYmFzZSAxNikJCVN1bml0ZWMgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQkzRi4sIE5vLiA5OC0xLCBNaW5jeXVhbiBSZC4KLQkJCQlTaW5kaWFuIENpdHkgVGFpcGVpIENvdW50eSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFELUUwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAxREUwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUQtRTEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFERTEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRC1FMiAgIChoZXgpCQlSYWRpb25vciBDb21tdW5pY2F0aW9ucwotMDAxREUyICAgICAoYmFzZSAxNikJCVJhZGlvbm9yIENvbW11bmljYXRpb25zCi0JCQkJSW5ndmFsZCBZc3RnYWFyZHMgdmVnIDIzCi0JCQkJVHJvbmRoZWltIFRSRCA3MDQ2Ci0JCQkJTk9SV0FZCi0KLTAwLTFELUUzICAgKGhleCkJCUludHVpY29tCi0wMDFERTMgICAgIChiYXNlIDE2KQkJSW50dWljb20KLQkJCQkxODgwIFMuIEZsYXRpcm9uIEN0LgotCQkJCVN1aXRlIFIKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1FNCAgIChoZXgpCQlWaXNpb25lZXJlZCBJbWFnZSBTeXN0ZW1zCi0wMDFERTQgICAgIChiYXNlIDE2KQkJVmlzaW9uZWVyZWQgSW1hZ2UgU3lzdGVtcwotCQkJCTEwNTYxIEdhcmRlbiBHcm92ZSBCbHZkCi0JCQkJR2FyZGVuIEdyb3ZlIENhbGlmb3JuaWEgOTI4NDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUU1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMURFNSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1FNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFERTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRTcgICAoaGV4KQkJTWFyaW5lIFNvbmljIFRlY2hub2xvZ3ksIEx0ZC4KLTAwMURFNyAgICAgKGJhc2UgMTYpCQlNYXJpbmUgU29uaWMgVGVjaG5vbG9neSwgTHRkLgotCQkJCTU1MDggR2VvcmdlIFdhc2hpbmd0b24gTWVtb3JpYWwgSGlnaHdheQotCQkJCVAuTy4gQm94IDczMAotCQkJCVdoaXRlIE1hcnNoIFZpcmdpbmlhIDIzMTgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1FOCAgIChoZXgpCQlOaWtrbyBEZW5raSBUc3VzaGluIENvbXBhbnkoTkRUQykKLTAwMURFOCAgICAgKGJhc2UgMTYpCQlOaWtrbyBEZW5raSBUc3VzaGluIENvbXBhbnkoTkRUQykKLQkJCQk0NDAgS2Ftb3NoaWRhLXRvd24sIEFvYmEta3UKLQkJCQlZb2tvaGFtYSAgMjI3LTAwMzMKLQkJCQlKQVBBTgotCi0wMC0xRC1FOSAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxREU5ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRC1FQSAgIChoZXgpCQlDb21tdGVzdCBJbnN0cnVtZW50cyBMdGQKLTAwMURFQSAgICAgKGJhc2UgMTYpCQlDb21tdGVzdCBJbnN0cnVtZW50cyBMdGQKLQkJCQlMZXZlbCAyLCAyMiBNb29yaG91c2UgQXZlCi0JCQkJQ2hyaXN0Y2h1cmNoIENhbnRlcmJ1cnkgODI0MwotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTFELUVCICAgKGhleCkJCURJTkVDIEludGVybmF0aW9uYWwKLTAwMURFQiAgICAgKGJhc2UgMTYpCQlESU5FQyBJbnRlcm5hdGlvbmFsCi0JCQkJUnVlIGRlIGxhIEdhcmUsIDMwCi0JCQkJQlJBSU5FIEwnQUxMRVVEIEJSQUJBTlQgV0FMTE9OIDE0MjAKLQkJCQlCRUxHSVVNCi0KLTAwLTFELUVDICAgKGhleCkJCU1hcnVzeXMKLTAwMURFQyAgICAgKGJhc2UgMTYpCQlNYXJ1c3lzCi0JCQkJRXVuc3VuZyBCbGRnLiA1RgotCQkJCTUzLTggQ2h1bmdEYW0tRG9uZyBLYW5nTmFtLUt1Ci0JCQkJU2VvdWwgIDEzNS03NjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUQtRUQgICAoaGV4KQkJR3JpZCBOZXQsIEluYy4KLTAwMURFRCAgICAgKGJhc2UgMTYpCQlHcmlkIE5ldCwgSW5jLgotCQkJCTM0MCBCcmFubmFuIFN0cmVldAotCQkJCVN1aXRlIDUwMQotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUVFICAgKGhleCkJCU5FWFRWSVNJT04gU0lTVEVNQVMgRElHSVRBSVMgREUgVEVMRVZJU8ODxpJPIExUREEuCi0wMDFERUUgICAgIChiYXNlIDE2KQkJTkVYVFZJU0lPTiBTSVNURU1BUyBESUdJVEFJUyBERSBURUxFVklTw4PGkk8gTFREQS4KLQkJCQlBbGFtZWRhIFJpbyBOZWdybywgMTAzMCAtIDE5by4gYW5kYXIgY29uai4gMTkwNAotCQkJCUJhcnVlcmkgU8ODwqNvIFBhdWxvIDA2NDU0LTAwMAotCQkJCUJSQVpJTAotCi0wMC0xRC1FRiAgIChoZXgpCQlUUklNTSwgSU5DLgotMDAxREVGICAgICAoYmFzZSAxNikJCVRSSU1NLCBJTkMuCi0JCQkJNDA3IFJBSUxST0FEIFNUUkVFVAotCQkJCUJVVE5FUiBOQyAyNzUwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRjAgICAoaGV4KQkJVmlkaWVudCBTeXN0ZW1zLCBJbmMuCi0wMDFERjAgICAgIChiYXNlIDE2KQkJVmlkaWVudCBTeXN0ZW1zLCBJbmMuCi0JCQkJNDAwMCBCdXJ0b24gRHJpdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NDA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRjEgICAoaGV4KQkJSW50ZWdvIFN5c3RlbXMsIEluYy4KLTAwMURGMSAgICAgKGJhc2UgMTYpCQlJbnRlZ28gU3lzdGVtcywgSW5jLgotCQkJCTUzNDMgQm93ZGVuIFJvYWQKLQkJCQlKYWNrc29udmlsbGUgRkwgMzIyMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFELUYyICAgKGhleCkJCU5ldGZsaXgsIEluYy4KLTAwMURGMiAgICAgKGJhc2UgMTYpCQlOZXRmbGl4LCBJbmMuCi0JCQkJMTAwIFdpbmNoZXN0ZXIgQ2lyY2xlCi0JCQkJTG9zIEdhdG9zIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRC1GMyAgIChoZXgpCQlTQlMgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMURGMyAgICAgKGJhc2UgMTYpCQlTQlMgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlXMi1CNS82IEhpZ2gtdGVjaCBpbmR1c3RyaWFsIHBhcmsKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUQtRjQgICAoaGV4KQkJTWFnZWxsYW4gVGVjaG5vbG9neSBQdHkgTGltaXRlZAotMDAxREY0ICAgICAoYmFzZSAxNikJCU1hZ2VsbGFuIFRlY2hub2xvZ3kgUHR5IExpbWl0ZWQKLQkJCQk2NSBKb2huc3RvbiBTdHJlZXQKLQkJCQlBbm5hbmRhbGUgTlNXIDIwMDAKLQkJCQlBVVNUUkFMSUEKLQotMDAtMUQtRjUgICAoaGV4KQkJU3Vuc2hpbmUgQ28sTFRECi0wMDFERjUgICAgIChiYXNlIDE2KQkJU3Vuc2hpbmUgQ28sTFRECi0JCQkJMS0zLTUgS29qaW1hY2hpCi0JCQkJQ2hpeW9kYS1rdQotCQkJCVRPS1lPIEthbnRvIHJlZ2lvbiAxMDItMDA4MwotCQkJCUpBUEFOCi0KLTAwLTFELUY2ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxREY2ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRC1GNyAgIChoZXgpCQlSLiBTVEFITCBTY2hhbHRnZXLDpHRlIEdtYkgKLTAwMURGNyAgICAgKGJhc2UgMTYpCQlSLiBTVEFITCBTY2hhbHRnZXLDpHRlIEdtYkgKLQkJCQlhbSBCYWhuaG9mIDMwCi0JCQkJV2FsZGVuYnVyZyBCYWRlbiBXw7xydHRlbWJlcmcgNzQ2MzgKLQkJCQlHRVJNQU5ZCi0KLTAwLTFELUY4ICAgKGhleCkJCVdlYnBybyBWaXNpb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAxREY4ICAgICAoYmFzZSAxNikJCVdlYnBybyBWaXNpb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLiwgTm8uNTczLCBDaW5ncGluZyBSZC4KLQkJCQlBbnBpbmcgRGlzdHJpY3QgIDcwOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUQtRjkgICAoaGV4KQkJQ3liaW90cm9uaWNzIChGYXIgRWFzdCkgTGltaXRlZAotMDAxREY5ICAgICAoYmFzZSAxNikJCUN5YmlvdHJvbmljcyAoRmFyIEVhc3QpIExpbWl0ZWQKLQkJCQlVbml0IDE5MDYsIEVhc3Rlcm4gQ2VudHJlLAotCQkJCTEwNjUgS2luZydzIFJvYWQsCi0JCQkJUXVhcnJ5IEJheSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFELUZBICAgKGhleCkJCUZ1amlhbiBMQU5ESSBDb21tZXJjaWFsIEVxdWlwbWVudCBDby4sTHRkCi0wMDFERkEgICAgIChiYXNlIDE2KQkJRnVqaWFuIExBTkRJIENvbW1lcmNpYWwgRXF1aXBtZW50IENvLixMdGQKLQkJCQlCdWlsZGluZyAyMyx0aGUgMXN0IHNlY3Rpb24sU29mdHdhcmUgR2FyZGVuCi0JCQkJTm8uODkgU29mdHdhcmUgUm9hZCwKLQkJCQlGdXpob3UgRnVqaWFuIDM1MDAwMwotCQkJCUNISU5BCi0KLTAwLTFELUZCICAgKGhleCkJCU5FVENMRVVTIFN5c3RlbXMgQ29ycG9yYXRpb24KLTAwMURGQiAgICAgKGJhc2UgMTYpCQlORVRDTEVVUyBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJM0YsIERhaWljaGktbWFlZGEgQmxkZy4KLQkJCQkzLTUtMywgWWFtYXRvLWhpZ2FzaGkKLQkJCQlZYW1hdG8tc2hpICAyNDItMDAxNwotCQkJCUpBUEFOCi0KLTAwLTFELUZDICAgKGhleCkJCUtTSUMKLTAwMURGQyAgICAgKGJhc2UgMTYpCQlLU0lDCi0JCQkJIzZGLCBLb3JlYSBGZWRlcmF0aW9uIG9mIFRlYWNoZXIncyBBc3NvY2lhdGlvbnMsIDExNC0xLCBUYWVCb25nLVJvLAotCQkJCVNlb3VsIFNlb2Noby1LdSAxMzctNzE1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFELUZEICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFERkQgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFELUZFICAgKGhleCkJCVBhbG0sIEluYwotMDAxREZFICAgICAoYmFzZSAxNikJCVBhbG0sIEluYwotCQkJCTk1MCBXZXN0IE1hdWRlIEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUQtRkYgICAoaGV4KQkJTmV0d29yayBDcml0aWNhbCBTb2x1dGlvbnMgTHRkCi0wMDFERkYgICAgIChiYXNlIDE2KQkJTmV0d29yayBDcml0aWNhbCBTb2x1dGlvbnMgTHRkCi0JCQkJMTJCIFNvdXRodmlldyBQYXJrCi0JCQkJQ2F2ZXJzaGFtCi0JCQkJUmVhZGluZyBCZXJrc2hpcmUgUkc0NUFGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtMDAgICAoaGV4KQkJU2hhbnRvdSBJbnN0aXR1dGUgb2YgVWx0cmFzb25pYyBJbnN0cnVtZW50cwotMDAxRTAwICAgICAoYmFzZSAxNikJCVNoYW50b3UgSW5zdGl0dXRlIG9mIFVsdHJhc29uaWMgSW5zdHJ1bWVudHMKLQkJCQlOby43NywgSmluc2hhIFJvYWQsCi0JCQkJU2hhbnRvdSBHdWFuZ2RvbmcgNTE1MDQxCi0JCQkJQ0hJTkEKLQotMDAtMUUtMDEgICAoaGV4KQkJUmVuZXNhcyBUZWNobm9sb2d5IFNhbGVzIENvLiwgTHRkLgotMDAxRTAxICAgICAoYmFzZSAxNikJCVJlbmVzYXMgVGVjaG5vbG9neSBTYWxlcyBDby4sIEx0ZC4KLQkJCQkyLTYtMgotCQkJCU90ZW1hY2hpCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDAtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTFFLTAyICAgKGhleCkJCVNvdWdvdSBLZWlrYWt1IEtvdWd5b3UgQ28uLEx0ZC4KLTAwMUUwMiAgICAgKGJhc2UgMTYpCQlTb3Vnb3UgS2Vpa2FrdSBLb3VneW91IENvLixMdGQuCi0JCQkJSEsyIGJsZC4gMi0yMS0xMAotCQkJCU5pc2hpb2dpbWluYW1pCi0JCQkJU3VnaW5hbWlrdSBUb2t5byAxNjctMDA1MwotCQkJCUpBUEFOCi0KLTAwLTFFLTAzICAgKGhleCkJCUxpQ29tbSBDby4sIEx0ZC4KLTAwMUUwMyAgICAgKGJhc2UgMTYpCQlMaUNvbW0gQ28uLCBMdGQuCi0JCQkJOTA4LTEgU0VPLVJJLCBJRE9ORy1NWUVPTgotCQkJCVlPTkdJTi1TSSBHWUVPTkdHSS1ETyA0NDktODM0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTA0ICAgKGhleCkJCUhhbnNvbiBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotMDAxRTA0ICAgICAoYmFzZSAxNikJCUhhbnNvbiBSZXNlYXJjaCBDb3Jwb3JhdGlvbgotCQkJCTk4MTAgVmFyaWVsIEF2ZS4KLQkJCQlDaGF0c3dvcnRoIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0wNSAgIChoZXgpCQlYc2VlZCBUZWNobm9sb2dpZXMgJiBDb21wdXRpbmcKLTAwMUUwNSAgICAgKGJhc2UgMTYpCQlYc2VlZCBUZWNobm9sb2dpZXMgJiBDb21wdXRpbmcKLQkJCQlUb3BheiBIb3VzZSwgTUFUQU0KLQkJCQk1IE5haHVtIEhhdCBTdC4KLQkJCQlIYWlmYSAgMzkxMDAKLQkJCQlJU1JBRUwKLQotMDAtMUUtMDYgICAoaGV4KQkJV0lCUkFJTgotMDAxRTA2ICAgICAoYmFzZSAxNikJCVdJQlJBSU4KLQkJCQkzMDYgSkVJIFBsYXRzIEIvRCA0NTktMTEgR2FzYW4tZG9uZywgR2V1bWNoZW9uLWd1Ci0JCQkJU0VPVUwgIDE1My04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMDcgICAoaGV4KQkJV2lueSBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAxRTA3ICAgICAoYmFzZSAxNikJCVdpbnkgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzMDUtMzAzLCBCdWNoZW9uIFRlY2huby1wYXJrLCAjMzY1Ci0JCQkJU2FtamVvbmctZG9uZywgT2plb25nLWd1Ci0JCQkJQnVjaGVvbiBHeWVvbmdnaS1kbyA0MjEtNzQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTA4ICAgKGhleCkJCUNlbnRlYyBOZXR3b3JrcyBJbmMKLTAwMUUwOCAgICAgKGJhc2UgMTYpCQlDZW50ZWMgTmV0d29ya3MgSW5jCi0JCQkJU2NpZW5jZSBQbGF6YSAxMEYgLCAzMjggQWlycG9ydCBSZAotCQkJCVN1emhvdSBJbmR1c3RyaWFsIFBhcmsKLQkJCQlTdXpob3UgSmlhbmdzdSAyMTUwMjEKLQkJCQlDSElOQQotCi0wMC0xRS0wOSAgIChoZXgpCQlaRUZBVEVLIENvLixMVEQKLTAwMUUwOSAgICAgKGJhc2UgMTYpCQlaRUZBVEVLIENvLixMVEQKLQkJCQkzMjYtNCBHYXNhbmRvbmcsIEdldW1jaGVvbmd1Ci0JCQkJU2VvdWwgIDE1My04MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMEEgICAoaGV4KQkJU3liYSBUZWNoIExpbWl0ZWQKLTAwMUUwQSAgICAgKGJhc2UgMTYpCQlTeWJhIFRlY2ggTGltaXRlZAotCQkJCVJNMTMwMSwgVmFudGEgSW5kdXN0cmlhbCBDZW50cmUsCi0JCQkJMjEtMzMgVGFpIExpbiBQYWkgUmQuCi0JCQkJS3dhaSBDaHVuZyAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLTBCICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDFFMEIgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMEMgICAoaGV4KQkJU2hlcndvb2QgSW5mb3JtYXRpb24gUGFydG5lcnMsIEluYy4KLTAwMUUwQyAgICAgKGJhc2UgMTYpCQlTaGVyd29vZCBJbmZvcm1hdGlvbiBQYXJ0bmVycywgSW5jLgotCQkJCTExMjAgVywgMTIybmQgQXZlLCBTdGUgMzAwCi0JCQkJV2VzdG1pbnN0ZXIgQ08gODAyMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTBEICAgKGhleCkJCU1pY3JhbiBMdGQuCi0wMDFFMEQgICAgIChiYXNlIDE2KQkJTWljcmFuIEx0ZC4KLQkJCQlWZXJzaGluaW5hIHN0LiA0NwotCQkJCVRvbXNrIFRvbXNrIFJlZ2lvbiA2MzQwMzQKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUUtMEUgICAoaGV4KQkJTUFYSSBWSUVXIEhPTERJTkdTIExJTUlURUQKLTAwMUUwRSAgICAgKGJhc2UgMTYpCQlNQVhJIFZJRVcgSE9MRElOR1MgTElNSVRFRAotCQkJCVN1aXRlIDIzMDIsMjMvRiBHcmVhdCBFYWdsZSBDZW50cmUsIDIzIEhhcmJvdXIgUm9hZCwgV2FuY2hhaQotCQkJCUhvbmcgS29uZyAgCi0JCQkJQ0hJTkEKLQotMDAtMUUtMEYgICAoaGV4KQkJQnJpb3QgSW50ZXJuYXRpb25hbAotMDAxRTBGICAgICAoYmFzZSAxNikJCUJyaW90IEludGVybmF0aW9uYWwKLQkJCQkyIHJ1ZSByb2dlciBCb25uZXQKLQkJCQlQb250IGRlIGwnQXJjaGUgRXVyZSAyNzM0MAotCQkJCUZSQU5DRQotCi0wMC0xRS0xMCAgIChoZXgpCQlTaGVuWmhlbiBIdWF3ZWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLTAwMUUxMCAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBIdWF3ZWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLQkJCQlIVUFXRUkgSU5EVVNUUklBTCBQSyBCQU5USUFOLCBMT05HR0FORyBESVNUIFNIRU5aSEVOCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODA3NwotCQkJCUNISU5BCi0KLTAwLTFFLTExICAgKGhleCkJCUVMRUxVWCBJTlRFUk5BVElPTkFMIExURAotMDAxRTExICAgICAoYmFzZSAxNikJCUVMRUxVWCBJTlRFUk5BVElPTkFMIExURAotCQkJCTNGLiwgTk8uMTAzIENIT1cgVFpFIFNUUkVFVAotCQkJCU5FSS1IVSBESVNUUklDVCAoMTE0KQotCQkJCVRBSVBFSSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS0xMiAgIChoZXgpCQlFY29sYWIKLTAwMUUxMiAgICAgKGJhc2UgMTYpCQlFY29sYWIKLQkJCQk2NTUgTG9uZSBPYWsgRHJpdmUKLQkJCQlSZXNlYXJjaCBDZW50ZXIgRG9jayAtLSBGNDQxNgotCQkJCUVhZ2FuIE1OIDU1MTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0xMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFMTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMTQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRTE0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTE1ICAgKGhleCkJCUJlZWNoIEhpbGwgRWxlY3Ryb25pY3MKLTAwMUUxNSAgICAgKGJhc2UgMTYpCQlCZWVjaCBIaWxsIEVsZWN0cm9uaWNzCi0JCQkJQmVlY2hjcm9mdCwgQmVlY2ggSGlsbCBSb2FkCi0JCQkJQmVlY2ggSGlsbAotCQkJCVJlYWRpbmcgQmVya3NoaXJlIFJHNyAyQVUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRS0xNiAgIChoZXgpCQlLZXl0cm9uaXgKLTAwMUUxNiAgICAgKGJhc2UgMTYpCQlLZXl0cm9uaXgKLQkJCQlVbmdhcmdhc3NlIDY0LTY2LzEvMTA5Ci0JCQkJVmllbm5hICAxMDMwCi0JCQkJQVVTVFJJQQotCi0wMC0xRS0xNyAgIChoZXgpCQlTVE4gQlYKLTAwMUUxNyAgICAgKGJhc2UgMTYpCQlTVE4gQlYKLQkJCQlBbWVyaWthd2VnIDQKLQkJCQlIdWxzdCBaZWVsYW5kIDQ1NjEgUEIKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xRS0xOCAgIChoZXgpCQlSYWRpbyBBY3Rpdml0eSBzcmwKLTAwMUUxOCAgICAgKGJhc2UgMTYpCQlSYWRpbyBBY3Rpdml0eSBzcmwKLQkJCQlWaWEgUG9udGUgTnVvdm8gOAotCQkJCU1pbGFubyBNSSAyMDEyOAotCQkJCUlUQUxZCi0KLTAwLTFFLTE5ICAgKGhleCkJCUdUUkkKLTAwMUUxOSAgICAgKGJhc2UgMTYpCQlHVFJJCi0JCQkJTS9TIDA4MjEKLQkJCQlBdGxhbnRhIEdBIDMwMzMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0xQSAgIChoZXgpCQlCZXN0IFNvdXJjZSBUYWl3YW4gSW5jLgotMDAxRTFBICAgICAoYmFzZSAxNikJCUJlc3QgU291cmNlIFRhaXdhbiBJbmMuCi0JCQkJMkYsIE5vLjE2LCBMYW5lIDU2LCBKaG9uZ2poZW5nIFcuIFJkLiwKLQkJCQlKaHViZWkgQ2l0eSwgSHNpbmNodSBDb3VudHkgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS0xQiAgIChoZXgpCQlEaWdpdGFsIFN0cmVhbSBUZWNobm9sb2d5LCBJbmMuCi0wMDFFMUIgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBTdHJlYW0gVGVjaG5vbG9neSwgSW5jLgotCQkJCTQsNSw2dGggRmwuLCBUYWVDaGFuZyBCL0QsIDQ1MS0xCi0JCQkJU3VuZ05hZS1Eb25nLCBHYW5nRG9uZy1LdQotCQkJCVNlb3VsICAxMzQtMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTFDICAgKGhleCkJCVNXUyBBdXN0cmFsaWEgUHR5IExpbWl0ZWQKLTAwMUUxQyAgICAgKGJhc2UgMTYpCQlTV1MgQXVzdHJhbGlhIFB0eSBMaW1pdGVkCi0JCQkJMjMgU2NhbmxvbiBEcml2ZQotCQkJCUVwcGluZyBWaWN0b3JpYSAzMDc2Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFFLTFEICAgKGhleCkJCUVhc3QgQ29hc3QgRGF0YWNvbSwgSW5jLgotMDAxRTFEICAgICAoYmFzZSAxNikJCUVhc3QgQ29hc3QgRGF0YWNvbSwgSW5jLgotCQkJCTI0NSBHdXMgSGlwcCBCbHZkLiwgU1RFIDMKLQkJCQlSb2NrbGVkZ2UgRkwgMzI5NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTFFICAgKGhleCkJCUhvbmV5d2VsbCBMaWZlIFNhZmV0eQotMDAxRTFFICAgICAoYmFzZSAxNikJCUhvbmV5d2VsbCBMaWZlIFNhZmV0eQotCQkJCTEyIENsaW50b252aWxsZSBSb2FkCi0JCQkJTm9ydGhmb3JkIENUIDA0MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTFGICAgKGhleCkJCU5vcnRlbAotMDAxRTFGICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xRS0yMCAgIChoZXgpCQlJbnRlcnRhaW4gSW5jLgotMDAxRTIwICAgICAoYmFzZSAxNikJCUludGVydGFpbiBJbmMuCi0JCQkJU3VpdGUgNjA4IExHIEVjbGF0LTIsIDI0NS00IFNlb2h5dW4tZG9uZywgQnVuZGFuZy1ndQotCQkJCVN1bmduZ20tc2hpIEt5dW5nZ2ktZG8gNDYzLTgyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS0yMSAgIChoZXgpCQlRaXNkYSBDby4KLTAwMUUyMSAgICAgKGJhc2UgMTYpCQlRaXNkYSBDby4KLQkJCQkxNTcgU2hhbi1ZaW5nIFJvYWQsIEd1ZWlzaGFuCi0JCQkJVGFveXVhbiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS0yMiAgIChoZXgpCQlBUlZPTyBJbWFnaW5nIFByb2R1Y3RzIEJWCi0wMDFFMjIgICAgIChiYXNlIDE2KQkJQVJWT08gSW1hZ2luZyBQcm9kdWN0cyBCVgotCQkJCVBPIEJveCA0MzkKLQkJCQlXb2VyZGVuIFVUIDM0NDAgQUsKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0xRS0yMyAgIChoZXgpCQlFbGVjdHJvbmljIEVkdWNhdGlvbmFsIERldmljZXMsIEluYwotMDAxRTIzICAgICAoYmFzZSAxNikJCUVsZWN0cm9uaWMgRWR1Y2F0aW9uYWwgRGV2aWNlcywgSW5jCi0JCQkJMTkwMyBTIEdyYW50IFN0Ci0JCQkJRGVudmVyIENPIDgwMjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0yNCAgIChoZXgpCQlaaGVqaWFuZyBCZWxsIFRlY2hub2xvZ3kgQ28uLGx0ZAotMDAxRTI0ICAgICAoYmFzZSAxNikJCVpoZWppYW5nIEJlbGwgVGVjaG5vbG9neSBDby4sbHRkCi0JCQkJNiBYaWRvdW1lbiBSZC4gV2VzdCBMYWtlIGRpc3RyaWN0Ci0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDEyCi0JCQkJQ0hJTkEKLQotMDAtMUUtMjUgICAoaGV4KQkJSW50ZWsgRGlnaXRhbCBJbmMKLTAwMUUyNSAgICAgKGJhc2UgMTYpCQlJbnRlayBEaWdpdGFsIEluYwotCQkJCTExMDEsIDExdGggRmwuLCBBbnlhbmcgSy1jZW50ZXIgYnVpbGRpbmcsIDE1OTEtOQotCQkJCUd3YW55YW5nLWRvbmcsIERvbmdhbi1ndQotCQkJCUFueWFuZyBHeWVvbmdnaS1kbyA0MzEtODE1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTI2ICAgKGhleCkJCURpZ2lmcmllbmRzIENvLiBMdGQKLTAwMUUyNiAgICAgKGJhc2UgMTYpCQlEaWdpZnJpZW5kcyBDby4gTHRkCi0JCQkJSm95YW5nIEIvRCA2dGggRmxvb3IKLQkJCQkxMTMgU2Ftc3VuZy1kb25nLCBLYW5nbmFtLWd1Ci0JCQkJU2VvdWwgIDEzNS0wOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMjcgICAoaGV4KQkJU0JOIFRFQ0ggQ28uLEx0ZC4KLTAwMUUyNyAgICAgKGJhc2UgMTYpCQlTQk4gVEVDSCBDby4sTHRkLgotCQkJCSM3MDYgSW5kdXN0cmlhbCBBY2FkZW1pYyBDZW50ZXIsIEtvbmt1ayBVbml2ZXJzaXR5LCBId2F5YW5nLWRvbmcsIEd3YW5namluLWd1Ci0JCQkJU2VvdWwgIDE0My03MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtMjggICAoaGV4KQkJTHVtZXhpcyBDb3Jwb3JhdGlvbgotMDAxRTI4ICAgICAoYmFzZSAxNikJCUx1bWV4aXMgQ29ycG9yYXRpb24KLQkJCQkzMTg0IEFpcndheSBBdmUgQmxkZyBECi0JCQkJQ29zdGEgTWVzYSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMjkgICAoaGV4KQkJSHlwZXJ0aGVybSBJbmMKLTAwMUUyOSAgICAgKGJhc2UgMTYpCQlIeXBlcnRoZXJtIEluYwotCQkJCTE1IEdyZWF0IEhvbGxvdyBSZAotCQkJCVBPIEJveCA1MDEwCi0JCQkJSGFub3ZlciBOSCAwMzc1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMkEgICAoaGV4KQkJTmV0Z2VhciBJbmMuCi0wMDFFMkEgICAgIChiYXNlIDE2KQkJTmV0Z2VhciBJbmMuCi0JCQkJNDUwMCBHcmVhdCBBbWVyaWNhIFBhcmt3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtMkIgICAoaGV4KQkJUmFkaW8gU3lzdGVtcyBEZXNpZ24sIEluYy4KLTAwMUUyQiAgICAgKGJhc2UgMTYpCQlSYWRpbyBTeXN0ZW1zIERlc2lnbiwgSW5jLgotCQkJCTYwMSBIZXJvbiBEcml2ZQotCQkJCUxvZ2FuIFR3cCBOZXcgSmVyc2V5IDA4MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS0yQyAgIChoZXgpCQlDeVZlcnNlIENvcnBvcmF0aW9uCi0wMDFFMkMgICAgIChiYXNlIDE2KQkJQ3lWZXJzZSBDb3Jwb3JhdGlvbgotCQkJCVNob3V0b3UgUm91a3ViYW5rYW4gQmxkZy4gNEYKLQkJCQkxLTI4LTQsIFNob3V0b3UKLQkJCQlTaGlidXlhLWt1IFRva3lvIDE1MC0wMDQ2Ci0JCQkJSkFQQU4KLQotMDAtMUUtMkQgICAoaGV4KQkJU1RJTQotMDAxRTJEICAgICAoYmFzZSAxNikJCVNUSU0KLQkJCQlaQUMgbGVzIENPVVNURUxMSUVSUwotCQkJCTYgUnVlIGRlIEwnQUJSSVZBRE8KLQkJCQlDQVNUUklFUyBIRVJBVUxUIDM0MTYwCi0JCQkJRlJBTkNFCi0KLTAwLTFFLTJFICAgKGhleCkJCVNJUlRJIFMucC5BLgotMDAxRTJFICAgICAoYmFzZSAxNikJCVNJUlRJIFMucC5BLgotCQkJCVZpYSBTdGFtaXJhIGQnQW5jb25hIDkKLQkJCQlNSUxBTiAgMjAxMjcKLQkJCQlJVEFMWQotCi0wMC0xRS0yRiAgIChoZXgpCQlEaU1vdG8gUHR5IEx0ZAotMDAxRTJGICAgICAoYmFzZSAxNikJCURpTW90byBQdHkgTHRkCi0JCQkJNyBNZWxqYXJlbiBQbGFjZQotCQkJCUJ1ZGVyaW0gUXVlZW5zbGFuZCA0NTU2Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFFLTMwICAgKGhleCkJCVNoaXJlZW4gSW5jCi0wMDFFMzAgICAgIChiYXNlIDE2KQkJU2hpcmVlbiBJbmMKLQkJCQk4NTMxIFppZ2d5IExhbmUKLQkJCQlHYWl0aGVyc2J1cmcgTUQgMjA4NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTMxICAgKGhleCkJCUlORk9NQVJLIENPLixMVEQuCi0wMDFFMzEgICAgIChiYXNlIDE2KQkJSU5GT01BUksgQ08uLExURC4KLQkJCQk1Ri4sR2Vvd24gQmxkZy4sMTM2MC01MwotCQkJCVNlb3VsIFNlb2Noby1kb25nLFNlb2Noby1ndSAxMzctODYzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTMyICAgKGhleCkJCVplbnN5cwotMDAxRTMyICAgICAoYmFzZSAxNikJCVplbnN5cwotCQkJCUVtZHJ1cHZlaiAyNgotCQkJCUNvcGVuaGFnZW4gTyAgREstMjEwMAotCQkJCURFTk1BUksKLQotMDAtMUUtMzMgICAoaGV4KQkJSW52ZW50ZWMgQ29ycG9yYXRpb24KLTAwMUUzMyAgICAgKGJhc2UgMTYpCQlJbnZlbnRlYyBDb3Jwb3JhdGlvbgotCQkJCUludmVudGVjIEJ1aWxkaW5nLCA2NiBIb3UtS2FuZyBTdHJlZXQKLQkJCQlTaGluLUxpbiBEaXN0cmljdAotCQkJCVRhaXBlaSAgMTExCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS0zNCAgIChoZXgpCQlDcnlwdG9NZXRyaWNzCi0wMDFFMzQgICAgIChiYXNlIDE2KQkJQ3J5cHRvTWV0cmljcwotCQkJCTE2MCBNaWNoYWVsIENvd3BsYW5kIERyCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJNIDFQNgotCQkJCUNBTkFEQQotCi0wMC0xRS0zNSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMUUzNSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyBLWU9UTyA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTFFLTM2ICAgKGhleCkJCUlQVEUKLTAwMUUzNiAgICAgKGJhc2UgMTYpCQlJUFRFCi0JCQkJR2VsZWVubGFhbiA1Ci0JCQkJR2VuayBMaW1idXJnIDM2MDAKLQkJCQlCRUxHSVVNCi0KLTAwLTFFLTM3ICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotMDAxRTM3ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTEFORSAzNTEsIFNFQy4xLFRBSVBJTkcgUkQuCi0JCQkJVFNBT1RVRU4KLQkJCQlOQU5UT1UgNTQyNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTM4ICAgKGhleCkJCUJsdWVjYXJkIFNvZnR3YXJlIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFFMzggICAgIChiYXNlIDE2KQkJQmx1ZWNhcmQgU29mdHdhcmUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlELTgwMSBTaGFuZ2RpIFNjaWVuY2UgQnVpbGRpbmcKLQkJCQlOby44IFNoYW5nZGkgV2VzdCBSb2FkCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMUUtMzkgICAoaGV4KQkJQ29tc3lzIENvbW11bmljYXRpb24gTHRkLgotMDAxRTM5ICAgICAoYmFzZSAxNikJCUNvbXN5cyBDb21tdW5pY2F0aW9uIEx0ZC4KLQkJCQk5IEhhbWVub2ZpbSBzdC4KLQkJCQlIZXJ6ZWxpYSAgNDY3MjUKLQkJCQlJU1JBRUwKLQotMDAtMUUtM0EgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUUzQSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRS0zQiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRTNCICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRS0zQyAgIChoZXgpCQlMeW5nYm94IE1lZGlhIEFCCi0wMDFFM0MgICAgIChiYXNlIDE2KQkJTHluZ2JveCBNZWRpYSBBQgotCQkJCURpc2tldHRnYXRhbiAxMUIKLQkJCQlMaW5rb3BpbmcgIFNFLTU4MzM1Ci0JCQkJU1dFREVOCi0KLTAwLTFFLTNEICAgKGhleCkJCUFscHMgRWxlY3RyaWMgQ28uLCBMdGQKLTAwMUUzRCAgICAgKGJhc2UgMTYpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0JCQkJMS0yLTEsIE9raW5vdWNoaQotCQkJCVNvbWEgY2l0eSBGdWt1c2hpbS1wcmVmIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUUtM0UgICAoaGV4KQkJS01XIEluYy4KLTAwMUUzRSAgICAgKGJhc2UgMTYpCQlLTVcgSW5jLgotCQkJCTY1IFlvdW5nY2h1bi1yaSwgRG9uZ3Rhbi1teXVuCi0JCQkJSHdhc3VuZy1zaSBLeXVuZ2tpLWRvIDQ0NS04MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtM0YgICAoaGV4KQkJVHJlbGxpc1dhcmUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDFFM0YgICAgIChiYXNlIDE2KQkJVHJlbGxpc1dhcmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTY1MTYgVmlhIEVzcHJpbGxvLCBTdWl0ZSAzMDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTQwICAgKGhleCkJCVNoYW5naGFpIERhcmVHbG9iYWwgVGVjaG5vbG9naWVzICBDby4sTHRkLgotMDAxRTQwICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERhcmVHbG9iYWwgVGVjaG5vbG9naWVzICBDby4sTHRkLgotCQkJCTIyRiwgbG5mbyBUZWNoIEJ1aWxkaW5nLCBOTy4xNTU1IEtvbmdqaWFuZyBSb2FkLAotCQkJCVNoYW5naGFpICAyMDAwOTIKLQkJCQlDSElOQQotCi0wMC0xRS00MSAgIChoZXgpCQlNaWNyb3dhdmUgQ29tbXVuaWNhdGlvbiAmIENvbXBvbmVudCwgSW5jLgotMDAxRTQxICAgICAoYmFzZSAxNikJCU1pY3Jvd2F2ZSBDb21tdW5pY2F0aW9uICYgQ29tcG9uZW50LCBJbmMuCi0JCQkJIzIwNCwgV09PTElNIExJT05gUyBWQUxMRVkgMiwgNjgwCi0JCQkJR2FzYW4tRG9uZywgR2V1bWNob24tR1UKLQkJCQlTZW91bCAgMTUwLTc4NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS00MiAgIChoZXgpCQlUZWx0b25pa2EKLTAwMUU0MiAgICAgKGJhc2UgMTYpCQlUZWx0b25pa2EKLQkJCQlaaXJtdW51IDI3Ci0JCQkJVmlsbml1cyAgTFQgLSAwOTEwNQotCQkJCUxJVEhVQU5JQQotCi0wMC0xRS00MyAgIChoZXgpCQlBSVNJTiBBVyBDTy4sTFRELgotMDAxRTQzICAgICAoYmFzZSAxNikJCUFJU0lOIEFXIENPLixMVEQuCi0JCQkJNi0xOCBIQVJBWUFNQQotCQkJCU9LQS1DSE8KLQkJCQlPS0FaQUtJIEFJQ0hJIDQ0NC04NTY0Ci0JCQkJSkFQQU4KLQotMDAtMUUtNDQgICAoaGV4KQkJU0FOVEVDCi0wMDFFNDQgICAgIChiYXNlIDE2KQkJU0FOVEVDCi0JCQkJQW4gZGVyIFN0cnVzYmVrIDMxCi0JCQkJQWhyZW5zYnVyZyBTY2hsZXN3aWcgSG9sc3RlaW4gMjI5MjYKLQkJCQlHRVJNQU5ZCi0KLTAwLTFFLTQ1ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDFFNDUgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMUUtNDYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUU0NiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTQ3ICAgKGhleCkJCVBULiBIYXJpZmYgRGF5YSBUdW5nZ2FsIEVuZ2luZWVyaW5nCi0wMDFFNDcgICAgIChiYXNlIDE2KQkJUFQuIEhhcmlmZiBEYXlhIFR1bmdnYWwgRW5naW5lZXJpbmcKLQkJCQlKbC4gU29la2Fybm8gSGF0dGEgTm8uIDQ1MAotCQkJCUJhbmR1bmcgSmF3YSBCYXJhdCA0MDI2NgotCQkJCUlORE9ORVNJQQotCi0wMC0xRS00OCAgIChoZXgpCQlXaS1MaW5rcwotMDAxRTQ4ICAgICAoYmFzZSAxNikJCVdpLUxpbmtzCi0JCQkJMzMyIEF5aW91IHN0cmVldAotCQkJCUxpbWFzc29sICAzNzI1Ci0JCQkJQ1lQUlVTCi0KLTAwLTFFLTQ5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUU0OSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS00QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFNEEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNEIgICAoaGV4KQkJQ2l0eSBUaGVhdHJpY2FsCi0wMDFFNEIgICAgIChiYXNlIDE2KQkJQ2l0eSBUaGVhdHJpY2FsCi0JCQkJNDc1IEJhcmVsbCBBdmUKLQkJCQlDYXJsc3RhZHQgTmV3IEplcnNleSAwNzA3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNEMgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLiwgTHRkLgotMDAxRTRDICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby4sIEx0ZC4KLQkJCQk2NixDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtNEQgICAoaGV4KQkJV2Vsa2luIFNjaWVuY2VzLCBMTEMKLTAwMUU0RCAgICAgKGJhc2UgMTYpCQlXZWxraW4gU2NpZW5jZXMsIExMQwotCQkJCTEwMiBTLiBUZWpvbiBTdCwgU3VpdGUgMjAwCi0JCQkJQ29sb3JhZG8gU3ByaW5ncyBDTyA4MDkwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNEUgICAoaGV4KQkJREFLTyBFRFYtSW5nZW5pZXVyLSB1bmQgU3lzdGVtaGF1cyBHbWJICi0wMDFFNEUgICAgIChiYXNlIDE2KQkJREFLTyBFRFYtSW5nZW5pZXVyLSB1bmQgU3lzdGVtaGF1cyBHbWJICi0JCQkJRXJuc3QtSGFlY2tlbC1QbGF0eiA1LzYKLQkJCQlKZW5hIFRodXJpbmdpYSAwNzc0NQotCQkJCUdFUk1BTlkKLQotMDAtMUUtNEYgICAoaGV4KQkJRGVsbCBJbmMuCi0wMDFFNEYgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMuCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS01MCAgIChoZXgpCQlCQVRUSVNUT05JIFJFU0VBUkNICi0wMDFFNTAgICAgIChiYXNlIDE2KQkJQkFUVElTVE9OSSBSRVNFQVJDSAotCQkJCVBBUkNPIERPTklDQSA1NgotCQkJCUZJU0NJQU5PIFNBTEVSTk8gODQwODQKLQkJCQlJVEFMWQotCi0wMC0xRS01MSAgIChoZXgpCQlDb252ZXJ0ZXIgSW5kdXN0cnkgU3JsCi0wMDFFNTEgICAgIChiYXNlIDE2KQkJQ29udmVydGVyIEluZHVzdHJ5IFNybAotCQkJCVZpYSBFdWNsaWRlLCAxMgotCQkJCUZvcmxpJyBGQyA0NzEwMAotCQkJCUlUQUxZCi0KLTAwLTFFLTUyICAgKGhleCkJCUFwcGxlIENvbXB1dGVyIEluYwotMDAxRTUyICAgICAoYmFzZSAxNikJCUFwcGxlIENvbXB1dGVyIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDYWxpZm9ybmlhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS01MyAgIChoZXgpCQlGdXJ0aGVyIFRlY2ggQ28uLCBMVEQKLTAwMUU1MyAgICAgKGJhc2UgMTYpCQlGdXJ0aGVyIFRlY2ggQ28uLCBMVEQKLQkJCQk4RixOTyA0MjEsIFN1bmdzaGFuIFJELixUYWlwZWksIFRhaXduLFIuTy5DLgotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS01NCAgIChoZXgpCQlUT1lPIEVMRUNUUklDIENvcnBvcmF0aW9uCi0wMDFFNTQgICAgIChiYXNlIDE2KQkJVE9ZTyBFTEVDVFJJQyBDb3Jwb3JhdGlvbgotCQkJCTEtMzkgSElLSVNBV0EKLQkJCQlLQUdJWUEtQ0hPCi0JCQkJS0FTVUdBSSBBSUNISSA0ODAtMDM5MwotCQkJCUpBUEFOCi0KLTAwLTFFLTU1ICAgKGhleCkJCUNPV09OIFNZU1RFTVMsSW5jLgotMDAxRTU1ICAgICAoYmFzZSAxNikJCUNPV09OIFNZU1RFTVMsSW5jLgotCQkJCTZ0aCBGbC4gQ09XT04gVE9XRVIsNjg5LTMsCi0JCQkJWWVva3NhbS1Eb25nLEdhbmduYW0tR3UsCi0JCQkJU2VvdWwgIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtNTYgICAoaGV4KQkJQmFsbHkgV3VsZmYgRW50ZXJ0YWlubWVudCBHbWJICi0wMDFFNTYgICAgIChiYXNlIDE2KQkJQmFsbHkgV3VsZmYgRW50ZXJ0YWlubWVudCBHbWJICi0JCQkJTWF5YmFjaHVmZXIgNDgtNTEKLQkJCQlCZXJsaW4gIDEyMDQ1Ci0JCQkJR0VSTUFOWQotCi0wMC0xRS01NyAgIChoZXgpCQlBTENPTUEsIHNwb2wuIHMgci5vLgotMDAxRTU3ICAgICAoYmFzZSAxNikJCUFMQ09NQSwgc3BvbC4gcyByLm8uCi0JCQkJS2x1a292aWNlIDMxMywgUHJhaGEgLSA1Ci0JCQkJUHJhaGEgIDE1MiAwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTFFLTU4ICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMDAxRTU4ICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5PLjI4OSwgU2luaHUgM3JkIFJkLiwKLQkJCQlOZWlodSBEaXN0cmljdCwgVGFpcGVpIENpdHkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS01OSAgIChoZXgpCQlTaWxpY29uIFR1cm5rZXkgRXhwcmVzcywgTExDCi0wMDFFNTkgICAgIChiYXNlIDE2KQkJU2lsaWNvbiBUdXJua2V5IEV4cHJlc3MsIExMQwotCQkJCTc0OSBNaW5lciBSb2FkCi0JCQkJSGlnaGxhbmQgSGVpZ2h0cyBPaGlvIDQ0MTQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS01QSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAxRTVBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtNUIgICAoaGV4KQkJVW5pdHJvbiBDb21wYW55LCBJbmMuCi0wMDFFNUIgICAgIChiYXNlIDE2KQkJVW5pdHJvbiBDb21wYW55LCBJbmMuCi0JCQkJMTA5MjUgTWlsbGVyIFJvYWQKLQkJCQlEYWxsYXMgVFggNzUyMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTVDICAgKGhleCkJCVJCIEdlbmVyYWxFa29ub21pawotMDAxRTVDICAgICAoYmFzZSAxNikJCVJCIEdlbmVyYWxFa29ub21pawotCQkJCUJ1bGV2YXIgZGVzcG90YSBzdGVmYW5hIDU5YQotCQkJCUJlb2dyYWQgU2VyYmlhIDExMDAwCi0JCQkJWVVHT1NMQVZJQQotCi0wMC0xRS01RCAgIChoZXgpCQlIb2xvc3lzIGQuby5vLgotMDAxRTVEICAgICAoYmFzZSAxNikJCUhvbG9zeXMgZC5vLm8uCi0JCQkJTWF0aWplIEd1cGNhIDcKLQkJCQlPcm9zbGF2amUgIDQ5MjQzCi0JCQkJQ1JPQVRJQQotCi0wMC0xRS01RSAgIChoZXgpCQlDT21wdXRpbWUgTHRkLgotMDAxRTVFICAgICAoYmFzZSAxNikJCUNPbXB1dGltZSBMdGQuCi0JCQkJMTcvRiBHcmVhdCBFYWdsZSBDZW50cmUKLQkJCQkyMyBIYXJib3VyIFJvYWQKLQkJCQlXYW5jaGFpICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUUtNUYgICAoaGV4KQkJS3dpa0J5dGUsIExMQwotMDAxRTVGICAgICAoYmFzZSAxNikJCUt3aWtCeXRlLCBMTEMKLQkJCQkyNDMwIFcuIDEydGggU3RyZWV0Ci0JCQkJVGVtcGUgQVogODUyODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTYwICAgKGhleCkJCURpZ2l0YWwgTGlnaHRpbmcgU3lzdGVtcywgSW5jCi0wMDFFNjAgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBMaWdodGluZyBTeXN0ZW1zLCBJbmMKLQkJCQkxMjMwMiBTdyAxMjh0aCBjdCwgICAjMTA1Ci0JCQkJTWlhbWkgRkwgMzMxODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTYxICAgKGhleCkJCUlURUMgR21iSAotMDAxRTYxICAgICAoYmFzZSAxNikJCUlURUMgR21iSAotCQkJCUxhc3NuaXR6dGhhbCAzMDAKLQkJCQlBLTgyMDAgIEdsZWlzZG9yZgotCQkJCUFVU1RSSUEKLQotMDAtMUUtNjIgICAoaGV4KQkJU2llbW9uCi0wMDFFNjIgICAgIChiYXNlIDE2KQkJU2llbW9uCi0JCQkJMjcgU2llbW9uIENvbXBhbnkgRHJpdmUKLQkJCQlXYXRlcnRvd24gQ1QgMDY3OTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTYzICAgKGhleCkJCVZpYnJvLU1ldGVyIFNBCi0wMDFFNjMgICAgIChiYXNlIDE2KQkJVmlicm8tTWV0ZXIgU0EKLQkJCQlSb3V0ZSBkZSBNb25jb3IgNAotCQkJCUZyaWJvdXJnICBDSC0xNzAxCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUUtNjQgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFFNjQgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRS02NSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMUU2NSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFFLTY2ICAgKGhleCkJCVJFU09MIEVsZWt0cm9uaXNjaGUgUmVnZWx1bmdlbiBHbWJICi0wMDFFNjYgICAgIChiYXNlIDE2KQkJUkVTT0wgRWxla3Ryb25pc2NoZSBSZWdlbHVuZ2VuIEdtYkgKLQkJCQlIZWlza2FtcHN0ci4gMTAKLQkJCQlIYXR0aW5nZW4gTlJXIDQ1NTI3Ci0JCQkJR0VSTUFOWQotCi0wMC0xRS02NyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMUU2NyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFFLTY4ICAgKGhleCkJCVF1YW50YSBDb21wdXRlcgotMDAxRTY4ICAgICAoYmFzZSAxNikJCVF1YW50YSBDb21wdXRlcgotCQkJCU5PLiAyMTEsIFdFTiBIV0EgMlJELiwgS1VFSSBTSEFOIEhTSUFORwotCQkJCVRBSVBFSSBUQU8gWVVBTiBTSElFTiAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTY5ICAgKGhleCkJCVRob21zb24gSW5jLgotMDAxRTY5ICAgICAoYmFzZSAxNikJCVRob21zb24gSW5jLgotCQkJCTEwMSBXZXN0LiAxMDNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyOTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTZBICAgKGhleCkJCUJlaWppbmcgQmx1ZXhvbiBUZWNobm9sb2d5IENvLixMdGQKLTAwMUU2QSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEJsdWV4b24gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJSmlucWl1emhpY2h1biA3LTMwMSxaaGljaHVuIFJkLiwKLQkJCQlIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg4Ci0JCQkJQ0hJTkEKLQotMDAtMUUtNkIgICAoaGV4KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBBIENpc2NvIENvbXBhbnkKLTAwMUU2QiAgICAgKGJhc2UgMTYpCQlTY2llbnRpZmljIEF0bGFudGEsIEEgQ2lzY28gQ29tcGFueQotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS02QyAgIChoZXgpCQlDYXJib24gTW91bnRhaW4gTExDCi0wMDFFNkMgICAgIChiYXNlIDE2KQkJQ2FyYm9uIE1vdW50YWluIExMQwotCQkJCTQ4MjAgRmlzaGVyIFJvYWQKLQkJCQlBdGhlbnMgT0ggNDU3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTZEICAgKGhleCkJCUlUIFImRCBDZW50ZXIKLTAwMUU2RCAgICAgKGJhc2UgMTYpCQlJVCBSJkQgQ2VudGVyCi0JCQkJNDYxLTI1LCBKZW9ubWluLWRvbmcsWXVzZW9uZy1HdQotCQkJCURhZWplb24gIDMwNS04MTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtNkUgICAoaGV4KQkJU2hlbnpoZW4gRmlyc3QgTWlsZSBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMUU2RSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBGaXJzdCBNaWxlIENvbW11bmljYXRpb25zIEx0ZAotCQkJCTV0aCBGbG9vciwgQmxvY2sgUjMtQQotCQkJCUhpZ2gtVGVjaCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUUtNkYgICAoaGV4KQkJTWFnbmEtUG93ZXIgRWxlY3Ryb25pY3MsIEluYy4KLTAwMUU2RiAgICAgKGJhc2UgMTYpCQlNYWduYS1Qb3dlciBFbGVjdHJvbmljcywgSW5jLgotCQkJCTM5IFJveWFsIFJvYWQKLQkJCQlGbGVtaW5ndG9uIE5KIDA4ODIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS03MCAgIChoZXgpCQlDb2JoYW0gRGVmZW5jZSBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMUU3MCAgICAgKGJhc2UgMTYpCQlDb2JoYW0gRGVmZW5jZSBDb21tdW5pY2F0aW9ucyBMdGQKLQkJCQlIYXNsaW5nZGVuIFJvYWQKLQkJCQlCbGFja2J1cm4gTGFuY2FzaGlyZSBCQjEgMkVFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtNzEgICAoaGV4KQkJSWdlYWNhcmUgU29sdXRpb25zIEluYy4KLTAwMUU3MSAgICAgKGJhc2UgMTYpCQlJZ2VhY2FyZSBTb2x1dGlvbnMgSW5jLgotCQkJCTE2MyBSaXZhbGRhIFJvYWQsIE5vcnRoIFlvcmsKLQkJCQlPbnRhcmlvIE05TSAyTTcKLQkJCQlDQU5BREEKLQotMDAtMUUtNzIgICAoaGV4KQkJUENTCi0wMDFFNzIgICAgIChiYXNlIDE2KQkJUENTCi0JCQkJUlVFIFNBSU5UIEVYVVBFUlkKLQkJCQlCUDcwMzIyCi0JCQkJTEVTQ0FSIFBZUkVORUVTIEFUTEFOVElRVUVTIDY0MjMwCi0JCQkJRlJBTkNFCi0KLTAwLTFFLTczICAgKGhleCkJCVpURSBDT1JQT1JBVElPTgotMDAxRTczICAgICAoYmFzZSAxNikJCVpURSBDT1JQT1JBVElPTgotCQkJCTEyL0YgWlRFIFBsYXphLEtlamkgUm9hZCBTb3V0aCxIaS1UZWNoIEluZHVzdHJpYWwgUGFyayxOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEdVQU5HRE9ORyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0xRS03NCAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0wMDFFNzQgICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCTE0IFJ1ZSBQYXVsIERhdXRpZXIKLQkJCQlWZWxpenkgIDc4NDU3Ci0JCQkJRlJBTkNFCi0KLTAwLTFFLTc1ICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzCi0wMDFFNzUgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MKLQkJCQk2MC0zOSxLYXNhbi1kb25nLEt1bWNob24ta3UKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS03NiAgIChoZXgpCQlUaGVybW8gRmlzaGVyIFNjaWVudGlmaWMKLTAwMUU3NiAgICAgKGJhc2UgMTYpCQlUaGVybW8gRmlzaGVyIFNjaWVudGlmaWMKLQkJCQkyMjE1IEdyYW5kIEF2ZW51ZSBQYXJrd2F5Ci0JCQkJQXVzdGluIFRleGFzIDc4NzI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS03NyAgIChoZXgpCQlBaXIyQXBwCi0wMDFFNzcgICAgIChiYXNlIDE2KQkJQWlyMkFwcAotCQkJCTUwIE9sZCBGb3JnZSBSZAotCQkJCUhhbm92ZXIgTUEgMDIzMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTc4ICAgKGhleCkJCU93aXRlayBUZWNobm9sb2d5IEx0ZC4sCi0wMDFFNzggICAgIChiYXNlIDE2KQkJT3dpdGVrIFRlY2hub2xvZ3kgTHRkLiwKLQkJCQlOby4yLCBMYW5lIDc4LCBDaW5nc2hhbiA2dGggU3QuLAotCQkJCVlhbmdtZWkgVG93bnNoaXAsCi0JCQkJVGFveXVhbiBDb3VudHkgIDMyNjU3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS03OSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFNzkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtN0EgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRTdBICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTdCICAgKGhleCkJCVIuSS5DTy4gUy5yLmwuCi0wMDFFN0IgICAgIChiYXNlIDE2KQkJUi5JLkNPLiBTLnIubC4KLQkJCQl2aWEgQWRyaWF0aWNhLCAxNwotCQkJCUNhc3RlbGZpZGFyZG8gQU4gNjAwMjIKLQkJCQlJVEFMWQotCi0wMC0xRS03QyAgIChoZXgpCQlUYWl3aWNrIExpbWl0ZWQKLTAwMUU3QyAgICAgKGJhc2UgMTYpCQlUYWl3aWNrIExpbWl0ZWQKLQkJCQk1L0YuLCBCbG9jayBFLCBIaW5nIFlpcCBGYWN0b3J5IEJsZGcuLAotCQkJCTMxIEhpbmcgWWlwIFN0cmVldC4sIEt3dW4gVG9uZywgS2xuLiwgSEsuCi0JCQkJQ2hpbmEgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLTdEICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxRTdEICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS03RSAgIChoZXgpCQlOb3J0ZWwKLTAwMUU3RSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwKLQkJCQk4MjAwIERpeGllIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlCcmFtcHRvbiBPbnRhcmlvIEw2VCA1UDYKLQkJCQlDQU5BREEKLQotMDAtMUUtN0YgICAoaGV4KQkJQ0JNIG9mIEFtZXJpY2EKLTAwMUU3RiAgICAgKGJhc2UgMTYpCQlDQk0gb2YgQW1lcmljYQotCQkJCTE0NTUgV2VzdCBOZXdwb3J0IENlbnRlciBEcml2ZQotCQkJCURlZXJmaWVsZCBCZWFjaCBGbG9yaWRhIDMzNDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS04MCAgIChoZXgpCQlMYXN0IE1pbGUgTHRkLgotMDAxRTgwICAgICAoYmFzZSAxNikJCUxhc3QgTWlsZSBMdGQuCi0JCQkJMTIvRiBWSVAgQ29tbWVyY2lhbCBDZW50cmUKLQkJCQkxMjAgQ2FudG9uIFJvYWQKLQkJCQlUc2ltc2hhdHN1aSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLTgxICAgKGhleCkJCUNOQiBUZWNobm9sb2d5IEluYy4KLTAwMUU4MSAgICAgKGJhc2UgMTYpCQlDTkIgVGVjaG5vbG9neSBJbmMuCi0JCQkJIzcwMSBTdGFyIFZhbGxleSwgNjAtMTEgR2FzYW4tRG9uZywKLQkJCQlHZXVtY2hlb24tR3UKLQkJCQlTZW91bCAgMTUzNzc3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTgyICAgKGhleCkJCVNhbkRpc2sgQ29ycG9yYXRpb24gCi0wMDFFODIgICAgIChiYXNlIDE2KQkJU2FuRGlzayBDb3Jwb3JhdGlvbiAKLQkJCQk2MzAgQWxkZXIgRHJpdmUsCi0JCQkJU3VpdGUgMjAyCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLTgzICAgKGhleCkJCUxBTi9NQU4gU3RhbmRhcmRzIEFzc29jaWF0aW9uIChMTVNDKQotMDAxRTgzICAgICAoYmFzZSAxNikJCUxBTi9NQU4gU3RhbmRhcmRzIEFzc29jaWF0aW9uIChMTVNDKQotCQkJCUMvTyBJRUVFIFN0YW5kYXJkcyBBc3NvY2lhdGlvbgotCQkJCTQ0NSBIb2VzIExhbmUsCi0JCQkJUGlzY2F0YXdheSBOSiAwODg1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtODQgICAoaGV4KQkJUGlrYSBUZWNobm9sb2dpZXMgSW5jLgotMDAxRTg0ICAgICAoYmFzZSAxNikJCVBpa2EgVGVjaG5vbG9naWVzIEluYy4KLQkJCQk1MzUgTGVnZ2V0IERyaXZlCi0JCQkJU3VpdGUgNDAwCi0JCQkJT3R0YXdhIE9udGFyaW8gSzJLIDNCOAotCQkJCUNBTkFEQQotCi0wMC0xRS04NSAgIChoZXgpCQlMYWdvdGVrIENvcnBvcmF0aW9uCi0wMDFFODUgICAgIChiYXNlIDE2KQkJTGFnb3RlayBDb3Jwb3JhdGlvbgotCQkJCTExNjYxIFNFIDFzdCBTdC4gIzIwOAotCQkJCUJlbGxldnVlIFdBIDk4MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS04NiAgIChoZXgpCQlNRUwgQ28uLEx0ZC4KLTAwMUU4NiAgICAgKGJhc2UgMTYpCQlNRUwgQ28uLEx0ZC4KLQkJCQlUc3VrYWdvc2hpIDUtNS0xLFdhcmFiaS1zaGksU2FpdGFtYSxKYXBuYQotCQkJCVdhcmFiaSBTYWl0YW1hIDMzNS0wMDAyCi0JCQkJSkFQQU4KLQotMDAtMUUtODcgICAoaGV4KQkJUmVhbGVhc2UgTGltaXRlZAotMDAxRTg3ICAgICAoYmFzZSAxNikJCVJlYWxlYXNlIExpbWl0ZWQKLQkJCQkxNS9GLCBNb3JyaXNvbiBDb21tZXJjaWFsIEJ1aWxkaW5nCi0JCQkJMzEgTW9ycmlzb24gSGlsbCBSb2FkCi0JCQkJV2FuQ2hhaSAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLTg4ICAgKGhleCkJCUFORE9SIFNZU1RFTSBTVVBQT1JUIENPLiwgTFRELgotMDAxRTg4ICAgICAoYmFzZSAxNikJCUFORE9SIFNZU1RFTSBTVVBQT1JUIENPLiwgTFRELgotCQkJCU1pbmFtaS1TaGluYWdhd2EgMi0xNS04Ci0JCQkJU2luYWdhd2EgVG9reW8gMTQwLTAwMDQKLQkJCQlKQVBBTgotCi0wMC0xRS04OSAgIChoZXgpCQlDUkZTIExpbWl0ZWQKLTAwMUU4OSAgICAgKGJhc2UgMTYpCQlDUkZTIExpbWl0ZWQKLQkJCQlCdWlsZGluZyA3MjAwCi0JCQkJQ2FtYnJpZGdlIFJlc2VhcmNoIFBhcmsKLQkJCQlXYXRlcmJlYWNoIENhbWJyaWRnZXNoaXJlIENCMjUgOVRMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtOEEgICAoaGV4KQkJZUNvcHksIEluYwotMDAxRThBICAgICAoYmFzZSAxNikJCWVDb3B5LCBJbmMKLQkJCQkxIE9yYWNsZSBEcgotCQkJCU5hc2h1YSBOSCAwMzA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtOEIgICAoaGV4KQkJSW5mcmEgQWNjZXNzIEtvcmVhIENvLiwgTHRkLgotMDAxRThCICAgICAoYmFzZSAxNikJCUluZnJhIEFjY2VzcyBLb3JlYSBDby4sIEx0ZC4KLQkJCQk5RiBEYWV5YW5nIEIvRCwKLQkJCQk3MzUtMTEgQm9uZ2NodW4gMWRvbmcsCi0JCQkJS3dhbmFrLWd1LCBTZW91bCAxNTEtODMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLThDICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAxRThDICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtOEQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMUU4RCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtOEUgICAoaGV4KQkJSHVua2VsZXIgQUcKLTAwMUU4RSAgICAgKGJhc2UgMTYpCQlIdW5rZWxlciBBRwotCQkJCUJhaG5ob2ZzdHJhc3NlIDMxCi0JCQkJV2lrb24gQ0ggNDgwNgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTFFLThGICAgKGhleCkJCUNBTk9OIElOQy4KLTAwMUU4RiAgICAgKGJhc2UgMTYpCQlDQU5PTiBJTkMuCi0JCQkJMy0zMC0yCi0JCQkJU2hpbW9tYXJ1a28KLQkJCQlPaHRhLUt1IFRva3lvIDE0Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUUtOTAgICAoaGV4KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zIENvCi0wMDFFOTAgICAgIChiYXNlIDE2KQkJRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zIENvCi0JCQkJTm8uMjM5LCBTZWMuIDIsIFRpIERpbmcgQmx2ZAotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTkxICAgKGhleCkJCUtJTUlOIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0wMDFFOTEgICAgIChiYXNlIDE2KQkJS0lNSU4gRWxlY3Ryb25pYyBDby4sIEx0ZC4KLQkJCQkyOTMtNCwgRG9uZ2Rhbi1Eb25nCi0JCQkJR3VtaS1jaXR5IEd5ZW9uZ0J1ayA3MzAtOTA2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLTkyICAgKGhleCkJCUpFVUxJTiBTLkEuCi0wMDFFOTIgICAgIChiYXNlIDE2KQkJSkVVTElOIFMuQS4KLQkJCQlaSSBOwrAxCi0JCQkJcnVlIEphY3F1ZXMgTW9ub2QKLQkJCQlFdnJldXggIEYyNzAxOQotCQkJCUZSQU5DRQotCi0wMC0xRS05MyAgIChoZXgpCQlDaXJpVGVjaCBTeXN0ZW1zIEluYwotMDAxRTkzICAgICAoYmFzZSAxNikJCUNpcmlUZWNoIFN5c3RlbXMgSW5jCi0JCQkJOTIwIEhpbGx2aWV3IEN0Ci0JCQkJIzE3MAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS05NCAgIChoZXgpCQlTVVBFUkNPTSBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0wMDFFOTQgICAgIChiYXNlIDE2KQkJU1VQRVJDT00gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCThGLCBOTyAxMDAtMSwgTWluZy1DaHVhbiBSZC4KLQkJCQlTaGluZyBUaWVuIFRhaXBlaSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTk1ICAgKGhleCkJCVNJR01BTElOSwotMDAxRTk1ICAgICAoYmFzZSAxNikJCVNJR01BTElOSwotCQkJCURvb1NhbiBWZW50dXJlRGlnbSAxMDI4LAotCQkJCTEyNi0xIFB5dW5nY2hvbi1kb25nLCBEb25nYW4tS3UKLQkJCQlBbnlhbmctQ2l0eSBLeXVuZ2dpLWRvIDQzMS0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtOTYgICAoaGV4KQkJU2VwdXJhIFBsYwotMDAxRTk2ICAgICAoYmFzZSAxNikJCVNlcHVyYSBQbGMKLQkJCQlSYWRpbyBIb3VzZQotCQkJCVN0IEFuZHJld3MgUm9hZAotCQkJCUNhbWJyaWRnZSBDQU1CUklER0VTSElSRSBDQjQgMUdSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtOTcgICAoaGV4KQkJTWVkaXVtIExpbmsgU3lzdGVtIFRlY2hub2xvZ3kgQ08uLCBMVEQsCi0wMDFFOTcgICAgIChiYXNlIDE2KQkJTWVkaXVtIExpbmsgU3lzdGVtIFRlY2hub2xvZ3kgQ08uLCBMVEQsCi0JCQkJMTFGLi0yLCBOby43LCBBbGxleSA5MiwgTGFuZSA3NywgU2VjLiA0LCBTaW5oYWkgUmQuLAotCQkJCVd1bnNoYW4gRGlzdHJpY3QsIFRhaXBlaSAxMTY5MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtOTggICAoaGV4KQkJR3JlZW5MaW5lIENvbW11bmljYXRpb25zCi0wMDFFOTggICAgIChiYXNlIDE2KQkJR3JlZW5MaW5lIENvbW11bmljYXRpb25zCi0JCQkJQWxyYWJpYWgsIEFscmFiZWVhIHN0cmVldAotCQkJCUJ1aWxkaW5nIDgsIFAuTy4gQm94IDkyMQotCQkJCUFtbWFuIENlbnRyYWwgUmVnaW9uIDExOTUzCi0JCQkJSk9SREFOCi0KLTAwLTFFLTk5ICAgKGhleCkJCVZhbnRhbm9sIEluZHVzdHJpYWwgQ29ycG9yYXRpb24KLTAwMUU5OSAgICAgKGJhc2UgMTYpCQlWYW50YW5vbCBJbmR1c3RyaWFsIENvcnBvcmF0aW9uCi0JCQkJOUYsIE5PIDMxIC4gU2hpbi1UYWkgUm9hZAotCQkJCUp1YmVpIENpdHkgU2hpbmNodSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFFLTlBICAgKGhleCkJCUhBTUlMVE9OIEJvbmFkdXogQUcKLTAwMUU5QSAgICAgKGJhc2UgMTYpCQlIQU1JTFRPTiBCb25hZHV6IEFHCi0JCQkJVmlhIENydXNjaCA4Ci0JCQkJQm9uYWR1eiBHcmF1YnVlbmRlbiA3NDAyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUUtOUIgICAoaGV4KQkJU2FuLUVpc2hhLCBMdGQuCi0wMDFFOUIgICAgIChiYXNlIDE2KQkJU2FuLUVpc2hhLCBMdGQuCi0JCQkJMi0xIEViYXJhIDUtY2hvbWUKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQyLTg2MTEKLQkJCQlKQVBBTgotCi0wMC0xRS05QyAgIChoZXgpCQlGaWR1c3Ryb24gSU5DCi0wMDFFOUMgICAgIChiYXNlIDE2KQkJRmlkdXN0cm9uIElOQwotCQkJCU5PLjc3MC02LCBKaG9uZ2loZW5nIFJkLgotCQkJCUpob25naGUgQ2l0eSBUYWlwZWkgQ291bnR5IDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtOUQgICAoaGV4KQkJUmVjYWxsIFRlY2hub2xvZ2llcywgSW5jLgotMDAxRTlEICAgICAoYmFzZSAxNikJCVJlY2FsbCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMzAgRW50ZXJwcmlzZSBBdmUuCi0JCQkJU3VpdGUgRgotCQkJCVBhbG0gQmF5IEZMIDMyOTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS05RSAgIChoZXgpCQlkZG0gaG9wdCArIHNjaHVsZXIgR21iaCArIENvLiBLRwotMDAxRTlFICAgICAoYmFzZSAxNikJCWRkbSBob3B0ICsgc2NodWxlciBHbWJoICsgQ28uIEtHCi0JCQkJS29lbmlnc2JlcmdlciBTdHJhc3NlIDEyCi0JCQkJUm90dHdlaWwgQmFkZW4tV3VlcnR0ZW1iZXJnIDc4NjI2Ci0JCQkJR0VSTUFOWQotCi0wMC0xRS05RiAgIChoZXgpCQlWaXNpb25lZXJpbmcgU3lzdGVtcywgSW5jLgotMDAxRTlGICAgICAoYmFzZSAxNikJCVZpc2lvbmVlcmluZyBTeXN0ZW1zLCBJbmMuCi0JCQkJNTkzMSBTZWEgTGlvbiBQbGFjZQotCQkJCVN1aXRlIDEwOQotCQkJCUNhcmxzYmFkIENhbGlmb3JuaWEgOTIwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUEwICAgKGhleCkJCVhMTi10Ci0wMDFFQTAgICAgIChiYXNlIDE2KQkJWExOLXQKLQkJCQlIb29nc3RyYWF0IDUyCi0JCQkJUHV0dGUgQW50d2VycCBCMjU4MAotCQkJCUJFTEdJVU0KLQotMDAtMUUtQTEgICAoaGV4KQkJQnJ1bmF0YSBhL3MKLTAwMUVBMSAgICAgKGJhc2UgMTYpCQlCcnVuYXRhIGEvcwotCQkJCVZlc3Rlcmx1bmR2ZWogMTQKLQkJCQlIZXJsZXYgIDI3MzAKLQkJCQlERU5NQVJLCi0KLTAwLTFFLUEyICAgKGhleCkJCVN5bXggU3lzdGVtcywgSW5jLgotMDAxRUEyICAgICAoYmFzZSAxNikJCVN5bXggU3lzdGVtcywgSW5jLgotCQkJCTYzMjAgTlcgODR0aCBBdmVudWUKLQkJCQlNaWFtaSBGbG9yaWRhIDMzMTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1BMyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRUEzICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRS1BNCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRUE0ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRS1BNSAgIChoZXgpCQlST0JPVE9VUywgSW5jLgotMDAxRUE1ICAgICAoYmFzZSAxNikJCVJPQk9UT1VTLCBJbmMuCi0JCQkJTmV4IENlbnRlci0yMDEoTGFiLiksIFNLIG4gVGVjaG5vcGFyawotCQkJCVNhbmdkYWV3b24tZG9uZywgSnVuZ3dvbi1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2Mi0xMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtQTYgICAoaGV4KQkJQmVzdCBJVCBXb3JsZCAoSW5kaWEpIFB2dC4gTHRkLgotMDAxRUE2ICAgICAoYmFzZSAxNikJCUJlc3QgSVQgV29ybGQgKEluZGlhKSBQdnQuIEx0ZC4KLQkJCQk4Ny83MC85MyBNaXN0cnkgSW5kdXN0cmlhbCBDb21wbGV4LAotCQkJCU1JREMgQ3Jvc3MgUm9hZCAnQScsIEFuZGhlcmkgKEVhc3QpCi0JCQkJTXVtYmFpIE1haGFyYXNodHJhIDQwMDA5MwotCQkJCUlORElBCi0KLTAwLTFFLUE3ICAgKGhleCkJCUFjdGlvblRlYyBFbGVjdHJvbmljcywgSW5jIAotMDAxRUE3ICAgICAoYmFzZSAxNikJCUFjdGlvblRlYyBFbGVjdHJvbmljcywgSW5jIAotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQTggICAoaGV4KQkJRGF0YW5nIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBFcXVpcG1lbnQgQ08uLExURAotMDAxRUE4ICAgICAoYmFzZSAxNikJCURhdGFuZyBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgRXF1aXBtZW50IENPLixMVEQKLQkJCQlOby4yOSxYdWV5dWFuIFJkLixIYWlkaWFuIERpc3RyaWN0LEJlaWppbmcsMTAwMDgzIFAuUi5DaGluYQotCQkJCUJlaWppbmcgIDEwMDA4MwotCQkJCUNISU5BCi0KLTAwLTFFLUE5ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAxRUE5ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUUtQUEgICAoaGV4KQkJRS1TZW56YSBUZWNobm9sb2dpZXMgR21iSAotMDAxRUFBICAgICAoYmFzZSAxNikJCUUtU2VuemEgVGVjaG5vbG9naWVzIEdtYkgKLQkJCQlCbGFyZXJzdHJhc3NlIDU2Ci0JCQkJS29uc3RhbnogQlcgNzg0NjIKLQkJCQlHRVJNQU5ZCi0KLTAwLTFFLUFCICAgKGhleCkJCVRlbGVXZWxsIE95Ci0wMDFFQUIgICAgIChiYXNlIDE2KQkJVGVsZVdlbGwgT3kKLQkJCQlBbGFob3RpZSAxNCBiCi0JCQkJSmFydmVucGFhIFV1c2ltYWEgMDQ0MzAKLQkJCQlGSU5MQU5ECi0KLTAwLTFFLUFDICAgKGhleCkJCUFybWFkZXVzIFN5c3RlbXMKLTAwMUVBQyAgICAgKGJhc2UgMTYpCQlBcm1hZGV1cyBTeXN0ZW1zCi0JCQkJVGVjaG5vcG9sZSAtICA0MCwgcnVlIE1hcmMgU2VndWluCi0JCQkJQlAgMjExOAotCQkJCU1VTEhPVVNFIGNlZGV4IEhhdXQtUmhpbiA2ODA2MAotCQkJCUZSQU5DRQotCi0wMC0xRS1BRCAgIChoZXgpCQlXaW5ndGVjaCBHcm91cCBMaW1pdGVkCi0wMDFFQUQgICAgIChiYXNlIDE2KQkJV2luZ3RlY2ggR3JvdXAgTGltaXRlZAotCQkJCTZ0aCBmbG9vciwgVW5pdCBHLCBOby42NjgsIEVhc3QgQmVpamluZyBSb2FkLAotCQkJCVNoYW5naGFpICAyMDAwMDEKLQkJCQlDSElOQQotCi0wMC0xRS1BRSAgIChoZXgpCQlDb250aW5lbnRhbCBBdXRvbW90aXZlIFN5c3RlbXMKLTAwMUVBRSAgICAgKGJhc2UgMTYpCQlDb250aW5lbnRhbCBBdXRvbW90aXZlIFN5c3RlbXMKLQkJCQkyMTQ0MCBXZXN0IExha2UgQ29vayBSb2FkCi0JCQkJRGVlciBQYXJrIElMIDYwMDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1BRiAgIChoZXgpCQlPcGhpciBPcHRyb25pY3MgTHRkCi0wMDFFQUYgICAgIChiYXNlIDE2KQkJT3BoaXIgT3B0cm9uaWNzIEx0ZAotCQkJCVBPQiA0NTAyMQotCQkJCUplcnVzYWxlbSAgOTE0NTAKLQkJCQlJU1JBRUwKLQotMDAtMUUtQjAgICAoaGV4KQkJSW1lc0QgRWxlY3Ryb25pY2EgUy5MLgotMDAxRUIwICAgICAoYmFzZSAxNikJCUltZXNEIEVsZWN0cm9uaWNhIFMuTC4KLQkJCQlFbnRlbsOnYSA4MQotCQkJCUJhcmNlbG9uYSAgMDgwMTUKLQkJCQlTUEFJTgotCi0wMC0xRS1CMSAgIChoZXgpCQlDcnlwdHNvZnQgUHR5IEx0ZAotMDAxRUIxICAgICAoYmFzZSAxNikJCUNyeXB0c29mdCBQdHkgTHRkCi0JCQkJUC5PLiBCb3ggNjM4OQotCQkJCUZhaXJmaWVsZCBHYXJkZW5zIFF1ZWVuc2xhbmQgNDEwMwotCQkJCUFVU1RSQUxJQQotCi0wMC0xRS1CMiAgIChoZXgpCQlMRyBpbm5vdGVrCi0wMDFFQjIgICAgIChiYXNlIDE2KQkJTEcgaW5ub3RlawotCQkJCUhhbnlhbmcgVW5pdi4gMTI3MSwgU2EtZG9uZywgU2FuZ3Jvay1ndQotCQkJCUFuc2FuLXNpIEd5ZW9uZ2dpLWRvIDQyNi03OTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtQjMgICAoaGV4KQkJUHJpbWV4IFdpcmVsZXNzCi0wMDFFQjMgICAgIChiYXNlIDE2KQkJUHJpbWV4IFdpcmVsZXNzCi0JCQkJOTY1IFdlbGxzIFN0cmVldAotCQkJCUxha2UgR2VuZXZhIFdJIDUzMTQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1CNCAgIChoZXgpCQlVTklGQVQgVEVDSE5PTE9HWSBMVEQuCi0wMDFFQjQgICAgIChiYXNlIDE2KQkJVU5JRkFUIFRFQ0hOT0xPR1kgTFRELgotCQkJCTcvRkxPT1IgU1VJIEhPTkcgSU5ELiBCTERHLiwKLQkJCQk1NDctNTQ5IENBU1RMRSBQRUFLIFJPQUQKLQkJCQlLV0FJIENIVU5HLCBOLlQuIAotCQkJCUhPTkcgS09ORwotCi0wMC0xRS1CNSAgIChoZXgpCQlFdmVyIFNwYXJrbGUgVGVjaG5vbG9naWVzIEx0ZAotMDAxRUI1ICAgICAoYmFzZSAxNikJCUV2ZXIgU3BhcmtsZSBUZWNobm9sb2dpZXMgTHRkCi0JCQkJVW5pdCA0MDMsIE5hbiBGdW5nIENvbW1lcmNpYWwgQ2VudHJlCi0JCQkJMTksIExhbSBMb2sgU3QuCi0JCQkJS293bG9vbiBCYXkgS293bG9vbiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUUtQjYgICAoaGV4KQkJVEFHIEhldWVyIFNBCi0wMDFFQjYgICAgIChiYXNlIDE2KQkJVEFHIEhldWVyIFNBCi0JCQkJUnVlIExvdWlzLUpvc2VwaCBDaGV2cm9sZXQgNkEKLQkJCQlsYSBDaGF1eC1kZS1Gb25kcyBORSAyMzAwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMUUtQjcgICAoaGV4KQkJVEJUZWNoLCBDby4sIEx0ZC4KLTAwMUVCNyAgICAgKGJhc2UgMTYpCQlUQlRlY2gsIENvLiwgTHRkLgotCQkJCTExMDksIEh5dW5kYWkgS3JpbSwgMTMzMC0xOCwgU2VvY2hvLWRvbmcsCi0JCQkJU2VvY2hvLUd1LAotCQkJCVNlb3VsICAxMzctMDcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLUI4ICAgKGhleCkJCUZvcnRpcywgSW5jLgotMDAxRUI4ICAgICAoYmFzZSAxNikJCUZvcnRpcywgSW5jLgotCQkJCSM1MDIgVGVjaG5vIHBsYXphLCAxNDktMTAgWWF0YXAtZG9uZywKLQkJCQlCdW5kYW5nLWd1LAotCQkJCVNlb25nbmFtLXNpLCBHeWVvbmdnaS1kbywgNDYzLTgxNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS1COSAgIChoZXgpCQlTaW5nIEZhaSBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMUVCOSAgICAgKGJhc2UgMTYpCQlTaW5nIEZhaSBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlOby43MDAsIEthb2hzaXVuZyBVbml2ZXJzaXR5IFJkLiwgTmFuLVR6dSBEaXN0LgotCQkJCU5VSyBBZHZhbmNlZCBCdXNpbmVzcyBJbmN1YmF0aW9uIENlbnRlcgotCQkJCUthb2hzaXVuZyAgODExCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRS1CQSAgIChoZXgpCQlIaWdoIERlbnNpdHkgRGV2aWNlcyBBUwotMDAxRUJBICAgICAoYmFzZSAxNikJCUhpZ2ggRGVuc2l0eSBEZXZpY2VzIEFTCi0JCQkJVmVzdHJlIFN0cmFuZGdhdGUgMjYKLQkJCQlLcmlzdGlhbnNhbmQgIDQ2MTEKLQkJCQlOT1JXQVkKLQotMDAtMUUtQkIgICAoaGV4KQkJQkxVRUxJR0hUIFRFQ0hOT0xPR1kgSU5DLgotMDAxRUJCICAgICAoYmFzZSAxNikJCUJMVUVMSUdIVCBURUNITk9MT0dZIElOQy4KLQkJCQk2NDcyIENBTURFTiBBVkUuLCBTVUlURSAxMDJCCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUJDICAgKGhleCkJCVdJTlRFQ0ggQVVUT01BVElPTiBDTy4sTFRELgotMDAxRUJDICAgICAoYmFzZSAxNikJCVdJTlRFQ0ggQVVUT01BVElPTiBDTy4sTFRELgotCQkJCSMxMTE1LCBUQUVLV0FORyBCTFZELgotCQkJCVlPVU5HUk9ORy1ET05HLCBZT1VOR1RPTkctR1UKLQkJCQlTVVdPTi1TSSBLWVVOR0dJIDQ0My04MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtQkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRUJEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUJFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUVCRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1CRiAgIChoZXgpCQlIYWFzIEF1dG9tYXRpb24gSW5jLgotMDAxRUJGICAgICAoYmFzZSAxNikJCUhhYXMgQXV0b21hdGlvbiBJbmMuCi0JCQkJMjgwMCBTdHVyZ2lzIFJkCi0JCQkJT3huYXJkIENBIDkzMDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1DMCAgIChoZXgpCQlNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuCi0wMDFFQzAgICAgIChiYXNlIDE2KQkJTWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLgotCQkJCTIzNTUgVy4gQ2hhbmRsZXIgQmx2ZC4sCi0JCQkJQ2hhbmRsZXIgQVogODUyMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUMxICAgKGhleCkJCTNDT00gRVVST1BFIExURAotMDAxRUMxICAgICAoYmFzZSAxNikJCTNDT00gRVVST1BFIExURAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSEVSVFMuIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRS1DMiAgIChoZXgpCQlBcHBsZSwgSW5jCi0wMDFFQzIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5pZmludGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQzMgICAoaGV4KQkJS296aW8sIEluYy4KLTAwMUVDMyAgICAgKGJhc2UgMTYpCQlLb3ppbywgSW5jLgotCQkJCTI0MDAgVHJhZGUgQ2VudHJlIEF2ZQotCQkJCUxvbmdtb250IENPIDgwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1DNCAgIChoZXgpCQlDZWxpbyBDb3JwCi0wMDFFQzQgICAgIChiYXNlIDE2KQkJQ2VsaW8gQ29ycAotCQkJCTI2NSBFIDEwMCBTICAjIDI4MAotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1DNSAgIChoZXgpCQlNaWRkbGUgQXRsYW50aWMgUHJvZHVjdHMgSW5jCi0wMDFFQzUgICAgIChiYXNlIDE2KQkJTWlkZGxlIEF0bGFudGljIFByb2R1Y3RzIEluYwotCQkJCTMwMCBGYWlyZmllbGQgUm9hZAotCQkJCUZhaXJmaWVsZCBOSiAwNzAwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQzYgICAoaGV4KQkJT2J2aXVzIEhvbGRpbmdzIExMQwotMDAxRUM2ICAgICAoYmFzZSAxNikJCU9idml1cyBIb2xkaW5ncyBMTEMKLQkJCQkyMDgxMSBOVyBDb3JuZWxsIFJvYWQKLQkJCQlTdWl0ZSA3MDAKLQkJCQlIaWxsc2Jvcm8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUM3ICAgKGhleCkJCTJXaXJlCi0wMDFFQzcgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzA0IEF1dG9tYXRpb24gUHJrd3kKLQkJCQlTYW4gSm9zZSBDYSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtQzggICAoaGV4KQkJUmFwaWQgTW9iaWxlIChQdHkpIEx0ZAotMDAxRUM4ICAgICAoYmFzZSAxNikJCVJhcGlkIE1vYmlsZSAoUHR5KSBMdGQKLQkJCQlCdWlsZGluZyBDLEQsRSBBcGV4IENvcnBvcmF0ZSBQYXJrCi0JCQkJUXVpbnRpbiBCcmFuZCBTdHJlZXQsIFBlcnNlcXVvciBUZWNobm9wYXJrCi0JCQkJUHJldG9yaWEgR2F1dGVuZyAwMDIwCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTFFLUM5ICAgKGhleCkJCURlbGwgSW5jCi0wMDFFQzkgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUNBICAgKGhleCkJCU5vcnRlbAotMDAxRUNBICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTgyMDAgRGl4aWUgUm9hZAotCQkJCVN1aXRlIDEwMAotCQkJCUJyYW1wdG9uIE9udGFyaW8gTDZUIDVQNgotCQkJCUNBTkFEQQotCi0wMC0xRS1DQiAgIChoZXgpCQkiUlBDICJFbmVyZ29hdXRvbWF0aWthIiBMdGQKLTAwMUVDQiAgICAgKGJhc2UgMTYpCQkiUlBDICJFbmVyZ29hdXRvbWF0aWthIiBMdGQKLQkJCQlLcmFzbm9rYXphcm1lbm5heWEgc3QuLCAxMy8xCi0JCQkJTW9zY293ICAxMTEyNTAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUUtQ0MgICAoaGV4KQkJQ0RWSQotMDAxRUNDICAgICAoYmFzZSAxNikJCUNEVkkKLQkJCQkzMSBBdmVudWUgZHUgR8OpbsOpcmFsIExlY2xlcmMKLQkJCQlQQU5USU4gSWxlIGRlIEZyYW5jZSA5MzUwMAotCQkJCUZSQU5DRQotCi0wMC0xRS1DRCAgIChoZXgpCQlLWUxBTkQKLTAwMUVDRCAgICAgKGJhc2UgMTYpCQlLWUxBTkQKLQkJCQlObzk1IEJ1aWxkaW5nLAotCQkJCVNvdXRoZWFzdCBDb3JuZXIgb2YgWGlzYW5xaSBCcmlkZ2UsCi0JCQkJSGFpZGlhbiBCZWlqaW5nIDEwMDA5NgotCQkJCUNISU5BCi0KLTAwLTFFLUNFICAgKGhleCkJCUJJU0EgVGVjaG5vbG9naWVzIChIb25nIEtvbmcpIExpbWl0ZWQKLTAwMUVDRSAgICAgKGJhc2UgMTYpCQlCSVNBIFRlY2hub2xvZ2llcyAoSG9uZyBLb25nKSBMaW1pdGVkCi0JCQkJMTEwMiwgVHJhbnMgQXNpYSBDZW50cmUsCi0JCQkJMTggS2luIEhvbmcgU3RyZWV0LAotCQkJCUt3YWkgQ2h1bmcgIAotCQkJCUhPTkcgS09ORwotCi0wMC0xRS1DRiAgIChoZXgpCQlQSElMSVBTIEVMRUNUUk9OSUNTIFVLIExURAotMDAxRUNGICAgICAoYmFzZSAxNikJCVBISUxJUFMgRUxFQ1RST05JQ1MgVUsgTFRECi0JCQkJUEhJTElQUyBDRU5UUkUKLQkJCQlHVUlMREZPUkQgQlVTSU5FU1MgUEFSSwotCQkJCUdVSUxERk9SRCBTVVJSRVkgR1UyIDhYSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFFLUQwICAgKGhleCkJCUNPTk5FWElVTQotMDAxRUQwICAgICAoYmFzZSAxNikJCUNPTk5FWElVTQotCQkJCTM5IEwnQUxCQVJFREUKLQkJCQlBVVpJRUxMRSAgMzE2NTAKLQkJCQlGUkFOQ0UKLQotMDAtMUUtRDEgICAoaGV4KQkJS2V5cHJvY2Vzc29yIEIuVi4KLTAwMUVEMSAgICAgKGJhc2UgMTYpCQlLZXlwcm9jZXNzb3IgQi5WLgotCQkJCVBhYXNoZXV2ZWx3ZWcgMjAKLQkJCQlBbXN0ZXJkYW0gTkggMTEwNSBCSgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFFLUQyICAgKGhleCkJCVJheSBTaGluZSBWaWRlbyBUZWNobm9sb2d5IEluYwotMDAxRUQyICAgICAoYmFzZSAxNikJCVJheSBTaGluZSBWaWRlbyBUZWNobm9sb2d5IEluYwotCQkJCTZGLE5vLjk4LFNlYy4xLFhpbnRhaSA1dGggUmQuCi0JCQkJWGl6aGkgQ2l0eSBUYWlwZWkgQ291bnR5IDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtRDMgICAoaGV4KQkJRG90IFRlY2hub2xvZ3kgSW50J2wgQ28uLCBMdGQuCi0wMDFFRDMgICAgIChiYXNlIDE2KQkJRG90IFRlY2hub2xvZ3kgSW50J2wgQ28uLCBMdGQuCi0JCQkJVW5pdCAxMDAxLCBGb3Vyc2VhcyBCdWlsZGluZyAyMDgtMjEyLCBOYXRoYW4gUm9hZAotCQkJCUtvd2xvb24gIAotCQkJCUhPTkcgS09ORwotCi0wMC0xRS1ENCAgIChoZXgpCQlEb2JsZSBFbmdpbmVlcmluZwotMDAxRUQ0ICAgICAoYmFzZSAxNikJCURvYmxlIEVuZ2luZWVyaW5nCi0JCQkJODUgV2FsbnV0IFN0cmVldAotCQkJCVdhdGVydG93biBNYXNzYWNodXNldHRzIDAyNDcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1ENSAgIChoZXgpCQlUZWtvbi1BdXRvbWF0aWNzCi0wMDFFRDUgICAgIChiYXNlIDE2KQkJVGVrb24tQXV0b21hdGljcwotCQkJCVplbGVub2dyYWQsIDUxMi0yOQotCQkJCU1vc2NvdyAgMTI0NDgyCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFFLUQ2ICAgKGhleCkJCUFsZW50ZWMgJiBPcmlvbiBBQgotMDAxRUQ2ICAgICAoYmFzZSAxNikJCUFsZW50ZWMgJiBPcmlvbiBBQgotCQkJCUJveCAxMDgKLQkJCQkxMzIgMjMgU2FsdHNqw7YtQm9vIAotCQkJCVNXRURFTgotCi0wMC0xRS1ENyAgIChoZXgpCQlILVN0cmVhbSBXaXJlbGVzcywgSW5jLgotMDAxRUQ3ICAgICAoYmFzZSAxNikJCUgtU3RyZWFtIFdpcmVsZXNzLCBJbmMuCi0JCQkJMjU5NSBFYXN0IEJheXNob3JlIFJvYWQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUQ4ICAgKGhleCkJCURpZ2l0YWwgVW5pdGVkIEluYy4KLTAwMUVEOCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIFVuaXRlZCBJbmMuCi0JCQkJOUYsIE5vLjIyMCwgR2FuZ2NpYW4gUmQuCi0JCQkJVGFpcGVpICAxMTQ0NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUUtRDkgICAoaGV4KQkJTWl0c3ViaXNoaSBQcmVjaXNpb24gQ28uLExUZC4KLTAwMUVEOSAgICAgKGJhc2UgMTYpCQlNaXRzdWJpc2hpIFByZWNpc2lvbiBDby4sTFRkLgotCQkJCTM0NSBLQU1JTUFDSElZQQotCQkJCUtBTUFLVVJBLUNpdHkgS0FOQUdBV0EtUHJlZmVjdHVyZSAyNDctODUwNQotCQkJCUpBUEFOCi0KLTAwLTFFLURBICAgKGhleCkJCVdlc2VtYW5uIEVsZWt0cm90ZWNobmllayBCLlYuCi0wMDFFREEgICAgIChiYXNlIDE2KQkJV2VzZW1hbm4gRWxla3Ryb3RlY2huaWVrIEIuVi4KLQkJCQlEcm9vZ2Jsb2VtIDMxCi0JCQkJUm90dGVyZGFtIFp1aWQtSG9sbGFuZCAzMDY4IEFXCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMUUtREIgICAoaGV4KQkJR2lrZW4gVHJhc3RlbSBDby4sIEx0ZC4KLTAwMUVEQiAgICAgKGJhc2UgMTYpCQlHaWtlbiBUcmFzdGVtIENvLiwgTHRkLgotCQkJCTQtMSBUYWtlZGEgRGFua2F3YXJhY2hvIEZ1c2hpbWlrdQotCQkJCUt5b3RvICA2MTItODQxNAotCQkJCUpBUEFOCi0KLTAwLTFFLURDICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0wMDFFREMgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotMDAtMUUtREQgICAoaGV4KQkJV0FTS08gUy5BLgotMDAxRUREICAgICAoYmFzZSAxNikJCVdBU0tPIFMuQS4KLQkJCQlCZXJiZWNraWVnbyA2Ci0JCQkJR2xpd2ljZSBTaWxlc2lhIDQ0LTEwMAotCQkJCVBPTEFORAotCi0wMC0xRS1ERSAgIChoZXgpCQlCWUQgQ09NUEFOWSBMSU1JVEVECi0wMDFFREUgICAgIChiYXNlIDE2KQkJQllEIENPTVBBTlkgTElNSVRFRAotCQkJCU5PLjEsQmFvcGluZyBSb2FkLEJhb2xvbmcgSW5kdXN0cmlhbCBUb3duLExvbmdnYW5nCi0JCQkJU0hFTiBaSEVOIEd1YW5nZG9uZyA1MTgxMTYKLQkJCQlDSElOQQotCi0wMC0xRS1ERiAgIChoZXgpCQlNYXN0ZXIgSW5kdXN0cmlhbGl6YXRpb24gQ2VudGVyIEtpc3RhCi0wMDFFREYgICAgIChiYXNlIDE2KQkJTWFzdGVyIEluZHVzdHJpYWxpemF0aW9uIENlbnRlciBLaXN0YQotCQkJCVRvcnNoYW1uc2dhdGFuIDM2Ci0JCQkJS2lzdGEKLQkJCQlTdG9ja2hvbG0gIFNFLTE2NCA4MAotCQkJCVNXRURFTgotCi0wMC0xRS1FMCAgIChoZXgpCQlVcm1ldCBEb211cyBTcEEKLTAwMUVFMCAgICAgKGJhc2UgMTYpCQlVcm1ldCBEb211cyBTcEEKLQkJCQlWaWEgQm9sb2duYSAxODgvQwotCQkJCVRvcmlubyBUTyBJLTEwMTU0Ci0JCQkJSVRBTFkKLQotMDAtMUUtRTEgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDFFRTEgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFFLUUyICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAxRUUyICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRS1FMyAgIChoZXgpCQlUJlcgRWxlY3Ryb25pY3MgKFNoZW5aaGVuKSBDby4sTHRkCi0wMDFFRTMgICAgIChiYXNlIDE2KQkJVCZXIEVsZWN0cm9uaWNzIChTaGVuWmhlbikgQ28uLEx0ZAotCQkJCTJGIEJhaXlpbmcgQnVpbGRpbmcsIE5vLjE5LCBOYW5oYWlSZC4sIE5hbnNoYW4gRGlzdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNTIKLQkJCQlDSElOQQotCi0wMC0xRS1FNCAgIChoZXgpCQlBQ1MgU29sdXRpb25zIEZyYW5jZQotMDAxRUU0ICAgICAoYmFzZSAxNikJCUFDUyBTb2x1dGlvbnMgRnJhbmNlCi0JCQkJUnVlIENsYXVkZSBDaGFwcGUKLQkJCQlHdWlsaGVyYW5kIEdyYW5nZXMgQXJkZWNoZSAwNzUwMwotCQkJCUZSQU5DRQotCi0wMC0xRS1FNSAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTAwMUVFNSAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUU2ICAgKGhleCkJCVNoZW56aGVuIEFkdmFuY2VkIFZpZGVvIEluZm8tVGVjaCBDby4sIEx0ZC4KLTAwMUVFNiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBBZHZhbmNlZCBWaWRlbyBJbmZvLVRlY2ggQ28uLCBMdGQuCi0JCQkJVGlhbnhpYW5nIDExQSwgIFRpYW4nYW4gQ3liZXIgUGFyayAsIEZ1dGlhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNDgKLQkJCQlDSElOQQotCi0wMC0xRS1FNyAgIChoZXgpCQlFcGljIFN5c3RlbXMgSW5jCi0wMDFFRTcgICAgIChiYXNlIDE2KQkJRXBpYyBTeXN0ZW1zIEluYwotCQkJCTM5MCBTLiBBYmJvdHQgQXZlCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUU4ICAgKGhleCkJCU15dGVrCi0wMDFFRTggICAgIChiYXNlIDE2KQkJTXl0ZWsKLQkJCQkxNTEgTGFmYXlldHRlIFN0ciAzIEZsCi0JCQkJTmV3IFlvcmsgTlkgMTAwMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUU5ICAgKGhleCkJCVN0b25lcmlkZ2UgRWxlY3Ryb25pY3MgQUIKLTAwMUVFOSAgICAgKGJhc2UgMTYpCQlTdG9uZXJpZGdlIEVsZWN0cm9uaWNzIEFCCi0JCQkJR8OlcmRzZm9nZGV2w6RnZW4gMThBCi0JCQkJQnJvbW1hIFN0b2NraG9sbSAxNjggNjYKLQkJCQlTV0VERU4KLQotMDAtMUUtRUEgICAoaGV4KQkJU2Vuc29yIFN3aXRjaCwgSW5jLgotMDAxRUVBICAgICAoYmFzZSAxNikJCVNlbnNvciBTd2l0Y2gsIEluYy4KLQkJCQk5MDAgTm9ydGhyb3AgUm9hZAotCQkJCVdhbGxpbmdmb3JkIENUIDA2NDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1FQiAgIChoZXgpCQlUYWxrLUEtUGhvbmUgQ28uCi0wMDFFRUIgICAgIChiYXNlIDE2KQkJVGFsay1BLVBob25lIENvLgotCQkJCTUwMTMgTi4gS2VkemllIEF2ZS4KLQkJCQlDaGljYWdvIElMIDYwNjI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1FQyAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELgotMDAxRUVDICAgICAoYmFzZSAxNikJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuCi0JCQkJTk8uIDI1LCBUSEUgM1JEIFN0cmVldAotCQkJCUtVTlNIQU4gRVhQT1JUIFBST0NFU1NJTkcgWk9ORQotCQkJCUtVTlNIQU4gQ0lUWSBTVVpIT1UgUFJPVklOQ0UgMjE1MzAwCi0JCQkJQ0hJTkEKLQotMDAtMUUtRUQgICAoaGV4KQkJQWR2ZW50aXEgTHRkLgotMDAxRUVEICAgICAoYmFzZSAxNikJCUFkdmVudGlxIEx0ZC4KLQkJCQlUZWNobm9sb2d5IEhvdXNlCi0JCQkJVHJhZmFsZ2FyIFdheQotCQkJCUJhciBIaWxsIENhbWJzLiBDQjMgOFNRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUUtRUUgICAoaGV4KQkJRVRMIFN5c3RlbXMgTHRkCi0wMDFFRUUgICAgIChiYXNlIDE2KQkJRVRMIFN5c3RlbXMgTHRkCi0JCQkJQ29sZHdlbGwgUmFkaW8gU3RhdGlvbgotCQkJCU1hZGxleQotCQkJCUhlcmVmb3JkIEhlcmVmb3Jkc2hpcmUgSFIyIDlORQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFFLUVGICAgKGhleCkJCUNhbnRyb25pYyBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLTAwMUVFRiAgICAgKGJhc2UgMTYpCQlDYW50cm9uaWMgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0JCQkJVW5pdCA1MTUtNTE2LCBCdWlsZGluZyAxNSwgRWFzdCBXaW5nLCBObyA4IFNjaWVuY2UgUGFyayBXZXN0IEF2ZW51ZSwgSG9uZyBLb25nIFNjaWVuY2UgUGFyayBQaGFzZSBJSQotCQkJCVNoYXRpbiBOZXcgVGVycml0b3JpZXMgODUyCi0JCQkJSE9ORyBLT05HCi0KLTAwLTFFLUYwICAgKGhleCkJCUdpZ2FmaW4gTmV0d29ya3MKLTAwMUVGMCAgICAgKGJhc2UgMTYpCQlHaWdhZmluIE5ldHdvcmtzCi0JCQkJMTkwNTAgUHJ1bmVyaWRnZQotCQkJCVN1aXRlIDIwMAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtRjEgICAoaGV4KQkJU2VydmltYXQKLTAwMUVGMSAgICAgKGJhc2UgMTYpCQlTZXJ2aW1hdAotCQkJCVpBRVQgTGVzIEhhaWVzCi0JCQkJUnVlIEJlbm9pdCBGcmFjaG9uCi0JCQkJU3QgTWF4aW1pbiBPaXNlIDYwNzQwCi0JCQkJRlJBTkNFCi0KLTAwLTFFLUYyICAgKGhleCkJCU1pY3JvIE1vdGlvbiBJbmMKLTAwMUVGMiAgICAgKGJhc2UgMTYpCQlNaWNybyBNb3Rpb24gSW5jCi0JCQkJNzA3MCBXaW5jaGVzdGVyIENpcmNsZQotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFFLUYzICAgKGhleCkJCUZyb20yCi0wMDFFRjMgICAgIChiYXNlIDE2KQkJRnJvbTIKLQkJCQkyRiwgTWVzdGVyIGluYwotCQkJCTE2ODctMywgU2luaWwtZG9uZwotCQkJCURhZWplb24gIDMwNi0yMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUUtRjQgICAoaGV4KQkJTC0zIENvbW11bmljYXRpb25zIERpc3BsYXkgU3lzdGVtcwotMDAxRUY0ICAgICAoYmFzZSAxNikJCUwtMyBDb21tdW5pY2F0aW9ucyBEaXNwbGF5IFN5c3RlbXMKLQkJCQkxMzU1IEJsdWVncmFzcyBMYWtlcyBQYXJrd2F5Ci0JCQkJQWxwaGFyZXR0YSBHQSAzMDAwNC04NDU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1GNSAgIChoZXgpCQlIaXRlayBBdXRvbWF0ZWQgSW5jLgotMDAxRUY1ICAgICAoYmFzZSAxNikJCUhpdGVrIEF1dG9tYXRlZCBJbmMuCi0JCQkJUm9vbSBDMy05MDEsIE5vLjM4MywgSHVhbWVuIFNoaWppYQotCQkJCVdlbnNhbmx1IFJvYWQsCi0JCQkJSGFuZ3pob3UgIDMxMDAxMgotCQkJCUNISU5BCi0KLTAwLTFFLUY2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUVGNiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRS1GNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFFRjcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUUtRjggICAoaGV4KQkJRW1maW5pdHkgSW5jLgotMDAxRUY4ICAgICAoYmFzZSAxNikJCUVtZmluaXR5IEluYy4KLQkJCQkxMTEgRWxtIFN0cmVldAotCQkJCVN1aXRlIDIwMQotCQkJCVN1ZGJ1cnkgT250YXJpbyBQM0MxVDMKLQkJCQlDQU5BREEKLQotMDAtMUUtRjkgICAoaGV4KQkJUGFzY29tIEtvbW11bmlrYXRpb25zIHN5c3RlbWUgR21iSC4KLTAwMUVGOSAgICAgKGJhc2UgMTYpCQlQYXNjb20gS29tbXVuaWthdGlvbnMgc3lzdGVtZSBHbWJILgotCQkJCVRlY2hub2xvZ2llc3RyLiA0Ci0JCQkJQXJiaW5nIFVwcGVyIEF1c3RyaWEgNDMzMgotCQkJCUFVU1RSSUEKLQotMDAtMUUtRkEgICAoaGV4KQkJUFJPVEVJIEx0ZC4KLTAwMUVGQSAgICAgKGJhc2UgMTYpCQlQUk9URUkgTHRkLgotCQkJCTYwQSBCLlNhbXBzb25pZXZza3ksICBCdXNpbmVzcyBDZW50ZXIKLQkJCQlTdC5QZXRlcnNidXJnIFJVIDE5NDA0NAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRS1GQiAgIChoZXgpCQlUcmlvIE1vdGlvbiBUZWNobm9sb2d5IEx0ZAotMDAxRUZCICAgICAoYmFzZSAxNikJCVRyaW8gTW90aW9uIFRlY2hub2xvZ3kgTHRkCi0JCQkJU2hhbm5vbiBXYXkKLQkJCQlUZXdrZXNidXJ5IEdsb3VjZXN0ZXJzaGlyZSBHTDIwIDhORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFFLUZDICAgKGhleCkJCUpTQyAiTUFTU0EtSyIKLTAwMUVGQyAgICAgKGJhc2UgMTYpCQlKU0MgIk1BU1NBLUsiCi0JCQkJMTUsIEEsIFBpcm9nb3Zza2F5YSBuYWIuCi0JCQkJU2FpbnQtUGV0ZXJzYnVyZyBMZW5pbmdyYWRza2l5IHJlZy4gMTk0MDQ0Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFFLUZEICAgKGhleCkJCU1pY3JvYml0IDIuMCBBQgotMDAxRUZEICAgICAoYmFzZSAxNikJCU1pY3JvYml0IDIuMCBBQgotCQkJCU55c3RhZGVuIDEKLQkJCQlLQUxJWCAgOTUyNjEKLQkJCQlTV0VERU4KLQotMDAtMUUtRkUgICAoaGV4KQkJTEVWRUwgcy5yLm8uCi0wMDFFRkUgICAgIChiYXNlIDE2KQkJTEVWRUwgcy5yLm8uCi0JCQkJUGxob3Zza8OhIDE5OTcKLQkJCQlOw6FjaG9kICA1NDcgMDEKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0xRS1GRiAgIChoZXgpCQlNdWVsbGVyLUVsZWt0cm9uaWsgR21iSCAmIENvLiBLRwotMDAxRUZGICAgICAoYmFzZSAxNikJCU11ZWxsZXItRWxla3Ryb25payBHbWJIICYgQ28uIEtHCi0JCQkJRnJhbnotS2xlaW5lLVN0ci4gMTgKLQkJCQlTYWx6a290dGVuIE5SVyAzMzE1NAotCQkJCUdFUk1BTlkKLQotMDAtMUYtMDAgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMUYwMCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MFYKLQkJCQlERU5NQVJLCi0KLTAwLTFGLTAxICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFGMDEgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTB2Ci0JCQkJREVOTUFSSwotCi0wMC0xRi0wMiAgIChoZXgpCQlQaXhlbG1ldHJpeCBDb3Jwb3JhdGlvbiBQdGUgTHRkCi0wMDFGMDIgICAgIChiYXNlIDE2KQkJUGl4ZWxtZXRyaXggQ29ycG9yYXRpb24gUHRlIEx0ZAotCQkJCTMxIEtha2kgQnVraXQgUm9hZCAzCi0JCQkJIzA3LTAzLCBUZWNobGluawotCQkJCTQxNzgxOAotCQkJCVNJTkdBUE9SRQotCi0wMC0xRi0wMyAgIChoZXgpCQlOVU0gQUcKLTAwMUYwMyAgICAgKGJhc2UgMTYpCQlOVU0gQUcKLQkJCQlCYXR0ZW5odXNzdHJhc3NlIDE2Ci0JCQkJVGV1ZmVuIEFSIDkwNTMKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRi0wNCAgIChoZXgpCQlHcmFuY2ggTHRkLgotMDAxRjA0ICAgICAoYmFzZSAxNikJCUdyYW5jaCBMdGQuCi0JCQkJNDAgS29yb2xldmEgc3RyLgotCQkJCTUzIFBpc2FyZXZhIHN0ci4KLQkJCQlOb3Zvc2liaXJzayBOU08gNjMwMDE1Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFGLTA1ICAgKGhleCkJCWlUQVMgVGVjaG5vbG9neSBDb3JwLgotMDAxRjA1ICAgICAoYmFzZSAxNikJCWlUQVMgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLiA3NSwgU2h1aXl1YW4gU3QuCi0JCQkJSHNpbmNodSBDaXR5ICAzMDA2OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtMDYgICAoaGV4KQkJSW50ZWdyYXRlZCBEaXNwYXRjaCBTb2x1dGlvbnMKLTAwMUYwNiAgICAgKGJhc2UgMTYpCQlJbnRlZ3JhdGVkIERpc3BhdGNoIFNvbHV0aW9ucwotCQkJCTY0NSBNb3VudGFpbiBBdmUKLQkJCQlXeWNrb2ZmIE5KIDA3NDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0wNyAgIChoZXgpCQlBWlRFUSBNb2JpbGUKLTAwMUYwNyAgICAgKGJhc2UgMTYpCQlBWlRFUSBNb2JpbGUKLQkJCQlTdWl0ZSAyMTAsIDUyNSBVbml2ZXJzaXR5IEF2ZQotCQkJCVBhbG8gQWx0byBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMDggICAoaGV4KQkJUklTQ08gTFRECi0wMDFGMDggICAgIChiYXNlIDE2KQkJUklTQ08gTFRECi0JCQkJMzIgSGFjaGFyb3NoZXQgU3QKLQkJCQlLaXJpYXQgTWFsYWNoaSAgODMxMDEKLQkJCQlJU1JBRUwKLQotMDAtMUYtMDkgICAoaGV4KQkJSkFTVEVDIENPLiwgTFRELgotMDAxRjA5ICAgICAoYmFzZSAxNikJCUpBU1RFQyBDTy4sIExURC4KLQkJCQlKYXN0ZWMgQi9ELCA5Mi03Ci0JCQkJS3VtLWdvayBEb25nLCBCb29uLURhbmcgR3UKLQkJCQlTZW9uZy1uYW0gU2kgIEt5dW5nLWdpIERvIDQ2My04MDQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtMEEgICAoaGV4KQkJTm9ydGVsCi0wMDFGMEEgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJMTgzMCBNYXRoZXNvbiBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAxCi0JCQkJTWlzc2lzc2F1Z2EgT250YXJpbyBMNFcgMEIzCi0JCQkJQ0FOQURBCi0KLTAwLTFGLTBCICAgKGhleCkJCUZlZGVyYWwgU3RhdGUgVW5pdGFyeSBFbnRlcnByaXNlIEluZHVzdHJpYWwgVW5pb24iRWxlY3Ryb3ByaWJvciIKLTAwMUYwQiAgICAgKGJhc2UgMTYpCQlGZWRlcmFsIFN0YXRlIFVuaXRhcnkgRW50ZXJwcmlzZSBJbmR1c3RyaWFsIFVuaW9uIkVsZWN0cm9wcmlib3IiCi0JCQkJCi0JCQkJUGVuemEgIDQ0MDAxMQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRi0wQyAgIChoZXgpCQlJbnRlbGxpZ2VudCBEaWdpdGFsIFNlcnZpY2VzIEdtYkgKLTAwMUYwQyAgICAgKGJhc2UgMTYpCQlJbnRlbGxpZ2VudCBEaWdpdGFsIFNlcnZpY2VzIEdtYkgKLQkJCQlHcmV2ZXNtdWVobGVuZXIgU3RyYXNzZSA4Ci0JCQkJTWFsbGVudGluIE1lY2tsZW5idXJnLVZvcnBvbW1lcm4gMjM2MzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTBEICAgKGhleCkJCUwzIENvbW11bmljYXRpb25zIC0gVGVsZW1ldHJ5IFdlc3QKLTAwMUYwRCAgICAgKGJhc2UgMTYpCQlMMyBDb21tdW5pY2F0aW9ucyAtIFRlbGVtZXRyeSBXZXN0Ci0JCQkJOTAyMCBCYWxib2EgQXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0wRSAgIChoZXgpCQlKYXBhbiBLeWFzdGVtIENvLiwgTHRkCi0wMDFGMEUgICAgIChiYXNlIDE2KQkJSmFwYW4gS3lhc3RlbSBDby4sIEx0ZAotCQkJCTEtNC00Ci0JCQkJTmlzaGlraS1jaG8KLQkJCQlUYWNoaWthd2EgVG9reW8gMTkwLTAwMjIKLQkJCQlKQVBBTgotCi0wMC0xRi0wRiAgIChoZXgpCQlTZWxlY3QgRW5naW5lZXJlZCBTeXN0ZW1zCi0wMDFGMEYgICAgIChiYXNlIDE2KQkJU2VsZWN0IEVuZ2luZWVyZWQgU3lzdGVtcwotCQkJCTc5OTEgVy4gMjYgQXZlCi0JCQkJSGlhbGVhaCBGbG9yaWRhIDMzMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0xMCAgIChoZXgpCQlUT0xFRE8gRE8gQlJBU0lMIElORFVTVFJJQSBERSBCQUxBTkNBUyAgTFREQQotMDAxRjEwICAgICAoYmFzZSAxNikJCVRPTEVETyBETyBCUkFTSUwgSU5EVVNUUklBIERFIEJBTEFOQ0FTICBMVERBCi0JCQkJUlVBIE1BTk9FTCBDUkVNT05FU0ksIDEKLQkJCQlFU1RSQURBIFNBTVVFTCBBSVpFTUJFUkcsIDM0NQotCQkJCVNBTyBCRVJOQVJETyBETyBDQU1QTyBTUCAwOTg1MS05MDAKLQkJCQlCUkFaSUwKLQotMDAtMUYtMTEgICAoaGV4KQkJT1BFTk1PS08sIElOQy4KLTAwMUYxMSAgICAgKGJhc2UgMTYpCQlPUEVOTU9LTywgSU5DLgotCQkJCTdGLCBObyAzMDAsIFlhbmcgR3VhbmcgU3RyZWV0Ci0JCQkJTmVpSHUKLQkJCQlUYWlwZWkgIDExNDkxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0xMiAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi0wMDFGMTIgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTEzICAgKGhleCkJCVMuJiBBLlMuIEx0ZC4KLTAwMUYxMyAgICAgKGJhc2UgMTYpCQlTLiYgQS5TLiBMdGQuCi0JCQkJQm91dHJvcyBCbGRnLiAxc3QgYnNtdAotCQkJCUdoYWJpIFN0cmVldAotCQkJCUJlaXJ1dCAgMjA2NyA3ODA4Ci0JCQkJTEVCQU5PTgotCi0wMC0xRi0xNCAgIChoZXgpCQlOZXhHCi0wMDFGMTQgICAgIChiYXNlIDE2KQkJTmV4RwotCQkJCTVGIFNlb3VsIEFjYWRlbXkgQmxkZywgRGFlY2hpLURvbmcsIEdhbmduYW0tR3UsCi0JCQkJU2VvdWwgIDEzNS0yODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtMTUgICAoaGV4KQkJQmlvc2NyeXB0IEluYwotMDAxRjE1ICAgICAoYmFzZSAxNikJCUJpb3NjcnlwdCBJbmMKLQkJCQk1MDUgQ29jaHJhbmUgRHJpdmUKLQkJCQlNYXJraGFtIE9udGFyaW8gTDNSIDhFMwotCQkJCUNBTkFEQQotCi0wMC0xRi0xNiAgIChoZXgpCQlXaXN0cm9uIENvcnBvcmF0aW9uCi0wMDFGMTYgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotCQkJCTIxRiwgODgsIFNlYy4xLEhzaW4gVGFpIFd1IFJkLiwgSHNpY2hpaCwKLQkJCQlUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0xNyAgIChoZXgpCQlJRFggQ29tcGFueSwgTHRkLgotMDAxRjE3ICAgICAoYmFzZSAxNikJCUlEWCBDb21wYW55LCBMdGQuCi0JCQkJNi0yOC0xMSBTaHVrdWdhd2FyYSwgVGFuYS1rdQotCQkJCUthd2FzYWtpLVNoaSBLYW5hZ2F3YS1LZW4gMjE0MDAyMQotCQkJCUpBUEFOCi0KLTAwLTFGLTE4ICAgKGhleCkJCUhha3VzYW4uTWZnLkNvLC5MdGQKLTAwMUYxOCAgICAgKGJhc2UgMTYpCQlIYWt1c2FuLk1mZy5DbywuTHRkCi0JCQkJVG9taW4tS291Z3lvdS1Ja2VidWt1cm8gQkxELjVGCi0JCQkJMi0yNi01ICBNaW5hbWktSWtlYnVrdXJvCi0JCQkJVG9zaW1hIFdhcmQgVG9reW8tTWV0LiAxNzEtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTFGLTE5ICAgKGhleCkJCUJFTi1SSSBFTEVDVFJPTklDQSBTLkEuCi0wMDFGMTkgICAgIChiYXNlIDE2KQkJQkVOLVJJIEVMRUNUUk9OSUNBIFMuQS4KLQkJCQlQT0wuIElORC4gVkVOVE9SUk8gREVMIENBTk8KLQkJCQlDLy4gTE9aT1lBIDgKLQkJCQlBTENPUkNPTiBNQURSSUQgMjg5MjUKLQkJCQlTUEFJTgotCi0wMC0xRi0xQSAgIChoZXgpCQlQcm9taW52ZXN0Ci0wMDFGMUEgICAgIChiYXNlIDE2KQkJUHJvbWludmVzdAotCQkJCTcsIEJvYnJ1aXNrYXlhIHVsaWNhCi0JCQkJU2FpbnQtUGV0ZXJzYnVyZyBOb3J0aC1XZXN0IEZlZGVyYWwgRGlzdHJpY3QgMTk1MDA5Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFGLTFCICAgKGhleCkJCVJveWFsVGVrIENvbXBhbnkgTHRkLgotMDAxRjFCICAgICAoYmFzZSAxNikJCVJveWFsVGVrIENvbXBhbnkgTHRkLgotCQkJCVN1aXRlIDlGLTEsIE5vLiAxMDcxLCBDaHVuZyBDaGVuZyBSZC4KLQkJCQlUYW95dWFuIFNoaWVuIFRhb3l1YW4gMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0xQyAgIChoZXgpCQlLT0JJU0hJIEVMRUNUUklDIENvLixMdGQuCi0wMDFGMUMgICAgIChiYXNlIDE2KQkJS09CSVNISSBFTEVDVFJJQyBDby4sTHRkLgotCQkJCTE4MDUtMQotCQkJCUthbWl5YQotCQkJCUtvdW5vc3Utc2hpIFNhaXRhbWEta2VuIDM2NS0wMDI3Ci0JCQkJSkFQQU4KLQotMDAtMUYtMUQgICAoaGV4KQkJQXRsYXMgTWF0ZXJpYWwgVGVzdGluZyBUZWNobm9sb2d5IExMQwotMDAxRjFEICAgICAoYmFzZSAxNikJCUF0bGFzIE1hdGVyaWFsIFRlc3RpbmcgVGVjaG5vbG9neSBMTEMKLQkJCQk0MTE0IE4uIFJhdmVuc3dvb2QgQXZlLgotCQkJCUNoaWNhZ28gSUwgNjA2MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTFFICAgKGhleCkJCUFzdGVjIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMUYxRSAgICAgKGJhc2UgMTYpCQlBc3RlYyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJMTJGLCBOby4yLCBKaWFuIEJhIFJkLgotCQkJCUNodW5nIEhvIFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLTFGICAgKGhleCkJCUVkaW1heCBUZWNobm9sb2d5IENvLiBMdGQuCi0wMDFGMUYgICAgIChiYXNlIDE2KQkJRWRpbWF4IFRlY2hub2xvZ3kgQ28uIEx0ZC4KLQkJCQlOby4gMywgV3UtQ2h1YW4gM3JkIFJvYWQsIFd1LUt1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlUYWlwZWkgSHNpZW4gMjQ4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi0yMCAgIChoZXgpCQlMb2dpdGVjaCBFdXJvcGUgU0EKLTAwMUYyMCAgICAgKGJhc2UgMTYpCQlMb2dpdGVjaCBFdXJvcGUgU0EKLQkJCQlNb3VsaW4gZHUgQ2hvYyBECi0JCQkJUm9tYW5lbCBzdXIgTW9yZ2VzIENIIDExMjIKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRi0yMSAgIChoZXgpCQlJbm5lciBNb25nb2xpYSBZaW4gQW4gU2NpZW5jZSAmIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uLEwKLTAwMUYyMSAgICAgKGJhc2UgMTYpCQlJbm5lciBNb25nb2xpYSBZaW4gQW4gU2NpZW5jZSAmIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uLEwKLQkJCQlZaW5BbiBCdWlsZGluZyBZaXdlaSBSb2FkLlJ1WWkKLQkJCQlEZXZlbG9wbWVudCBab25lLEhvaGhvdAotCQkJCUJlaWppbmcgIDAxMDAxMAotCQkJCUNISU5BCi0KLTAwLTFGLTIyICAgKGhleCkJCVNvdXJjZSBQaG90b25pY3MsIEluYy4KLTAwMUYyMiAgICAgKGJhc2UgMTYpCQlTb3VyY2UgUGhvdG9uaWNzLCBJbmMuCi0JCQkJMjA1NTAgTm9yZGhvZmYgU3RyZWV0Ci0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMjMgICAoaGV4KQkJSW50ZXJhY291c3RpY3MKLTAwMUYyMyAgICAgKGJhc2UgMTYpCQlJbnRlcmFjb3VzdGljcwotCQkJCURyZWplcnZhZW5nZXQgOAotCQkJCUFzc2VucyBESyA1NjEwCi0JCQkJREVOTUFSSwotCi0wMC0xRi0yNCAgIChoZXgpCQlESUdJVFZJRVcgVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwMUYyNCAgICAgKGJhc2UgMTYpCQlESUdJVFZJRVcgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQlOTy4gMTQtMjIsIFRJQU4tRlUgLAotCQkJCVNBTlNJQSBUT1dOU0hJUCwKLQkJCQlUQUlQRUkgQ09VTlRZICAyMzcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLTI1ICAgKGhleCkJCU1CUyBHbWJICi0wMDFGMjUgICAgIChiYXNlIDE2KQkJTUJTIEdtYkgKLQkJCQlSw4PCtm1lcnN0cmHDg8W4ZSAxNQotCQkJCUtyZWZlbGQgTm9yZHJoZWluLVdlc3RmYWxlbiA0NzgwOQotCQkJCUdFUk1BTlkKLQotMDAtMUYtMjYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRjI2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTI3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUYyNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0yOCAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDFGMjggICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQKLQkJCQlSb3NldmlsbGUgQ0EgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTI5ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDFGMjkgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAyCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMkEgICAoaGV4KQkJQUNDTQotMDAxRjJBICAgICAoYmFzZSAxNikJCUFDQ00KLQkJCQlPYm91ciBJbmR1c3RyaWFsIENpdHksIEluZHVzdHJpYWwgem9uZSBBLCBsb3QxNCwgYmxvY2sgMTIwMDYuCi0JCQkJQ2Fpcm8gIAotCQkJCUVHWVBUCi0KLTAwLTFGLTJCICAgKGhleCkJCU9yYW5nZSBMb2dpYwotMDAxRjJCICAgICAoYmFzZSAxNikJCU9yYW5nZSBMb2dpYwotCQkJCSM3MDYgQWNlVGVjaG5vVG93ZXIgMTAtY2hhLDQ3MC01Ci0JCQkJR2FzYW4tZG9uZyBHZXVtY2hlb24tZ3UKLQkJCQlTRU9VTCAgMTUzLTc4OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi0yQyAgIChoZXgpCQlTdGFyYnJpZGdlIE5ldHdvcmtzCi0wMDFGMkMgICAgIChiYXNlIDE2KQkJU3RhcmJyaWRnZSBOZXR3b3JrcwotCQkJCTMyNjUgTWVyaWRpYW4gUGFya3dheQotCQkJCVN1aXRlIDEzNAotCQkJCVdlc3RvbiBGTCAzMzMzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtMkQgICAoaGV4KQkJRWxlY3Ryby1PcHRpY2FsIEltYWdpbmcsIEluYy4KLTAwMUYyRCAgICAgKGJhc2UgMTYpCQlFbGVjdHJvLU9wdGljYWwgSW1hZ2luZywgSW5jLgotCQkJCTQzMDAgRm9ydHVuZSBQbGFjZSwgU3VpdGUgQwotCQkJCVdlc3QgTWVsYm91cm5lIEZMIDMyOTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0yRSAgIChoZXgpCQlUcmlhbmdsZSBSZXNlYXJjaCBJbnQnbCBQdGUgTHRkCi0wMDFGMkUgICAgIChiYXNlIDE2KQkJVHJpYW5nbGUgUmVzZWFyY2ggSW50J2wgUHRlIEx0ZAotCQkJCTEwIFViaSBDcmVzY2VudCAjMDUtODMKLQkJCQlVYmkgVGVjaHBhcmsgU0cgNDA4NjY0Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTFGLTJGICAgKGhleCkJCUJlcmtlciBHbWJIICYgQ28uIEtHCi0wMDFGMkYgICAgIChiYXNlIDE2KQkJQmVya2VyIEdtYkggJiBDby4gS0cKLQkJCQlLbGFnZWJhY2ggMzgKLQkJCQlTY2hhbGtzbXVlaGxlIE5SVyA1ODU3OQotCQkJCUdFUk1BTlkKLQotMDAtMUYtMzAgICAoaGV4KQkJVHJhdmVscGluZwotMDAxRjMwICAgICAoYmFzZSAxNikJCVRyYXZlbHBpbmcKLQkJCQkKLQkJCQlMZWlwemlnZXIgU3RyLiA0NgotCQkJCUNoZW1uaXR6IFNheG9ueSAwOTExMwotCQkJCUdFUk1BTlkKLQotMDAtMUYtMzEgICAoaGV4KQkJUmFkaW9jb21wCi0wMDFGMzEgICAgIChiYXNlIDE2KQkJUmFkaW9jb21wCi0JCQkJS3Jha2VzdmVqIDE3Ci0JCQkJSGlsbGVyb2VkIENvcGVuaGFnZW4gMzQwMAotCQkJCURFTk1BUksKLQotMDAtMUYtMzIgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDFGMzIgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gS1lPVE8gNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0xRi0zMyAgIChoZXgpCQlOZXRnZWFyIEluYy4KLTAwMUYzMyAgICAgKGJhc2UgMTYpCQlOZXRnZWFyIEluYy4KLQkJCQk0NTAwIEdyZWF0IEFtZXJpY2EgUGt3eQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi0zNCAgIChoZXgpCQlMdW5nIEh3YSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMUYzNCAgICAgKGJhc2UgMTYpCQlMdW5nIEh3YSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkzRiwgMjQ4LCBQZWkgU2hlbmcgUmQuIFNlYy4gMywKLQkJCQlTaGVuZyBLZW5nCi0JCQkJVGFpcGVpIEhzaWVuIDIyMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtMzUgICAoaGV4KQkJQUlSODAyIExMQwotMDAxRjM1ICAgICAoYmFzZSAxNikJCUFJUjgwMiBMTEMKLQkJCQkxMTY5IEJhbnlvbiBDb3VydAotCQkJCU5hcGVydmlsbGUgSUwgNjA1NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTM2ICAgKGhleCkJCUJlbGx3aW4gSW5mb3JtYXRpb24gQ28uIEx0ZC4sCi0wMDFGMzYgICAgIChiYXNlIDE2KQkJQmVsbHdpbiBJbmZvcm1hdGlvbiBDby4gTHRkLiwKLQkJCQkxN0YtMSxOby4xMjgsQ2h1bmcgRGUgUmQuCi0JCQkJVGFpY2h1bmcgIDQwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtMzcgICAoaGV4KQkJR2VuZXNpcyBJJkMKLTAwMUYzNyAgICAgKGJhc2UgMTYpCQlHZW5lc2lzIEkmQwotCQkJCSM1MTUgbGlzYW50ZWtldW5vdGF1bgotCQkJCTExNDEtMSBCYWVrc2Vvay1Eb25nLCBsaXNhbmRvbmctR3UKLQkJCQlHb3lhbmcgR3llb25nZ2kgNDEwLTcyMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi0zOCAgIChoZXgpCQlQT1NJVFJPTgotMDAxRjM4ICAgICAoYmFzZSAxNikJCVBPU0lUUk9OCi0JCQkJRVNUUkFEQSBURUxFQlJBUy1VTklDQU1QLCBLTTAsOTcgLSBDSi4wMQotCQkJCUJBSVJSTzogQ0lEQURFIFVOSVZFUlNJVEFSSUEKLQkJCQlDQU1QSU5BUyBTQU8gUEFVTE8gMTMwODQtOTcxCi0JCQkJQlJBWklMCi0KLTAwLTFGLTM5ICAgKGhleCkJCUNvbnN0cnVjY2lvbmVzIHkgQXV4aWxpYXIgZGUgRmVycm9jYXJyaWxlcywgUy5BLgotMDAxRjM5ICAgICAoYmFzZSAxNikJCUNvbnN0cnVjY2lvbmVzIHkgQXV4aWxpYXIgZGUgRmVycm9jYXJyaWxlcywgUy5BLgotCQkJCUMvIEouTS4gSXR1cnJpb3osIDI2Ci0JCQkJQmVhc2FpbiBHdWlww7p6Y29hIEUtMjAyMDAKLQkJCQlTUEFJTgotCi0wMC0xRi0zQSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uLCBMdGQuCi0wMDFGM0EgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLiwgTHRkLgotCQkJCTY2LCBDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtM0IgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDFGM0IgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0xRi0zQyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMUYzQyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFGLTNEICAgKGhleCkJCVFiaXQgR21iSAotMDAxRjNEICAgICAoYmFzZSAxNikJCVFiaXQgR21iSAotCQkJCVN0ZWd3aWVzZW5zdHJhc3NlIDMyCi0JCQkJQnJ1Y2hzYWwgR2VybWFueSA3NjY0NgotCQkJCUdFUk1BTlkKLQotMDAtMUYtM0UgICAoaGV4KQkJUlAtVGVjaG5payBlLksuCi0wMDFGM0UgICAgIChiYXNlIDE2KQkJUlAtVGVjaG5payBlLksuCi0JCQkJSGVybWFubi1TdGF1ZGluZ2VyLVN0ci4gMTAtMTYKLQkJCQlSb2RnYXUgSGVzc2VuIDYzMTEwCi0JCQkJR0VSTUFOWQotCi0wMC0xRi0zRiAgIChoZXgpCQlBVk0gR21iSAotMDAxRjNGICAgICAoYmFzZSAxNikJCUFWTSBHbWJICi0JCQkJQWx0LU1vYWJpdCA5NQotCQkJCUJlcmxpbiAgMTA1NTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTQwICAgKGhleCkJCVNwZWFrZXJjcmFmdCBJbmMuCi0wMDFGNDAgICAgIChiYXNlIDE2KQkJU3BlYWtlcmNyYWZ0IEluYy4KLQkJCQk5NDAgQ29sdW1iaWEgQXZlLiwKLQkJCQlSaXZlcnNpZGUgQ0EgOTI1MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTQxICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotMDAxRjQxICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZS4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTQyICAgKGhleCkJCUV0aGVyc3RhY2sgUHR5IEx0ZAotMDAxRjQyICAgICAoYmFzZSAxNikJCUV0aGVyc3RhY2sgUHR5IEx0ZAotCQkJCTIwMSBOYXRpb25hbCBJbm5vdmF0aW9uIENlbnRyZQotCQkJCUF1c3RyYWxpYW4gVGVjaG5vbG9neSBQYXJrIE5TVyAyMjM0Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTFGLTQzICAgKGhleCkJCUVOVEVTIEVMRUtUUk9OSUsKLTAwMUY0MyAgICAgKGJhc2UgMTYpCQlFTlRFUyBFTEVLVFJPTklLCi0JCQkJWS4gRHVkdWxsdSBPcmcuIFNhbi4gQm9sLiBBbmQgU2FuYXlpIFNpdC4gTm8uNgotCQkJCVVtcmFuaXllCi0JCQkJSXN0YW5idWwgRHVkdWxsdSAzNDc3NQotCQkJCVRVUktFWQotCi0wMC0xRi00NCAgIChoZXgpCQlHRSBUcmFuc3BvcnRhdGlvbiBTeXN0ZW1zCi0wMDFGNDQgICAgIChiYXNlIDE2KQkJR0UgVHJhbnNwb3J0YXRpb24gU3lzdGVtcwotCQkJCTI5MDEgRWFzdCBMYWtlIFJvYWQKLQkJCQlFcmllIFBBIDE2NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00NSAgIChoZXgpCQlFbnRlcmFzeXMKLTAwMUY0NSAgICAgKGJhc2UgMTYpCQlFbnRlcmFzeXMKLQkJCQk1MCBNaW51dGVtYW4gUm9hZAotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTQ2ICAgKGhleCkJCU5vcnRlbAotMDAxRjQ2ICAgICAoYmFzZSAxNikJCU5vcnRlbAotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVGV4YXMgNzUwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTQ3ICAgKGhleCkJCU1DUyBMb2dpYyBJbmMuCi0wMDFGNDcgICAgIChiYXNlIDE2KQkJTUNTIExvZ2ljIEluYy4KLQkJCQk2Ri4gU2FtaG8gQ2VudGVyIEIgQmxkZy4sIDI3NS02Ci0JCQkJWWFuZ2phZS1Eb25nLCBTZWNoby1LdQotCQkJCVNlb3VsICAxMzctOTQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTQ4ICAgKGhleCkJCU1vaml4IEluYy4KLTAwMUY0OCAgICAgKGJhc2UgMTYpCQlNb2ppeCBJbmMuCi0JCQkJMTEwNzUgU2FudGEgTW9uaWNhIEJsdmQuCi0JCQkJU3VpdGUgMzUwCi0JCQkJTG9zIEFuZ2VsZXMgQ2EgOTAwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTQ5ICAgKGhleCkJCUV1cm9zYXQgRGlzdHJpYnV0aW9uIEx0ZAotMDAxRjQ5ICAgICAoYmFzZSAxNikJCUV1cm9zYXQgRGlzdHJpYnV0aW9uIEx0ZAotCQkJCTUgT3hnYXRlIENlbnRyZQotCQkJCU94Z2F0ZSBMYW5lCi0JCQkJTG9uZG9uICBOVzIgN0pBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUYtNEEgICAoaGV4KQkJQWxiZW50aWEgU3lzdGVtcyBTLkEuCi0wMDFGNEEgICAgIChiYXNlIDE2KQkJQWxiZW50aWEgU3lzdGVtcyBTLkEuCi0JCQkJQWxiYWxhIDEzCi0JCQkJTWFkcmlkICAyODAzNwotCQkJCVNQQUlOCi0KLTAwLTFGLTRCICAgKGhleCkJCUxpbmVhZ2UgUG93ZXIKLTAwMUY0QiAgICAgKGJhc2UgMTYpCQlMaW5lYWdlIFBvd2VyCi0JCQkJMzAwMCBTa3lsaW5lIERyLgotCQkJCU1lc3F1aXRlIFRYIDc1MTQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi00QyAgIChoZXgpCQlSb3NlbWFuIEVuZ2luZWVyaW5nIEx0ZAotMDAxRjRDICAgICAoYmFzZSAxNikJCVJvc2VtYW4gRW5naW5lZXJpbmcgTHRkCi0JCQkJNjUgV2Vpem1hbiBTdHJlZXQKLQkJCQlHaXZhdGFpbSBJc3JhZWwgNTM0NjgKLQkJCQlJU1JBRUwKLQotMDAtMUYtNEQgICAoaGV4KQkJU2VnbmV0aWNzIExMQwotMDAxRjREICAgICAoYmFzZSAxNikJCVNlZ25ldGljcyBMTEMKLQkJCQlTaGtpcGVyc2tpIHByb3RvayAxNAotCQkJCVNhaW50LVBldGVyc2J1cmcgIDE5OTEwNgotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRi00RSAgIChoZXgpCQlDb25NZWQgTGludmF0ZWMKLTAwMUY0RSAgICAgKGJhc2UgMTYpCQlDb25NZWQgTGludmF0ZWMKLQkJCQkxMTMxMSBDb25jZXB0IEJsdmQuCi0JCQkJTGFyZ28gRkwgMzM3NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTRGICAgKGhleCkJCVRoaW5rd2FyZSBDby4gTHRkLgotMDAxRjRGICAgICAoYmFzZSAxNikJCVRoaW5rd2FyZSBDby4gTHRkLgotCQkJCTE1RkwsIEhhbm1pIFRvd2VyLCA0NSwKLQkJCQlCYW5naS1Eb25nLCBTb25ncGEtZ3UKLQkJCQlTZW91bCAgMTM4LTcyNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi01MCAgIChoZXgpCQlTd2lzc2RpcyBBRwotMDAxRjUwICAgICAoYmFzZSAxNikJCVN3aXNzZGlzIEFHCi0JCQkJR3Jhc3dlZyA3Ci0JCQkJU2Nod2FyemhhZXVzZXJuIEJFIDQ5MTEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRi01MSAgIChoZXgpCQlIRCBDb21tdW5pY2F0aW9ucyBDb3JwCi0wMDFGNTEgICAgIChiYXNlIDE2KQkJSEQgQ29tbXVuaWNhdGlvbnMgQ29ycAotCQkJCTIxODAgRmlmdGggQXZlCi0JCQkJUm9ua29ua29tYSBOWSAxMTc3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtNTIgICAoaGV4KQkJVVZUIFVudGVybmVobWVuc2JlcmF0dW5nIGbDvHIgVmVya2VociB1bmQgVGVjaG5payBHbWJICi0wMDFGNTIgICAgIChiYXNlIDE2KQkJVVZUIFVudGVybmVobWVuc2JlcmF0dW5nIGbDvHIgVmVya2VociB1bmQgVGVjaG5payBHbWJICi0JCQkJSm9zZWZzc3RyLjU0LTU2Ci0JCQkJTWFpbnogUkxQIDU1MTE4Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi01MyAgIChoZXgpCQlHRU1BQyBHZXNlbGxzY2hhZnQgZsO8ciBNaWtyb2VsZWt0cm9uaWthbndlbmR1bmcgQ2hlbW5pdHogbWJICi0wMDFGNTMgICAgIChiYXNlIDE2KQkJR0VNQUMgR2VzZWxsc2NoYWZ0IGbDvHIgTWlrcm9lbGVrdHJvbmlrYW53ZW5kdW5nIENoZW1uaXR6IG1iSAotCQkJCVp3aWNrYXVlciBTdHIuIDIyNwotCQkJCUNoZW1uaXR6IFNhY2hzZW4gMDkxMTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTU0ICAgKGhleCkJCUxvcmV4IFRlY2hub2xvZ3kgSW5jLgotMDAxRjU0ICAgICAoYmFzZSAxNikJCUxvcmV4IFRlY2hub2xvZ3kgSW5jLgotCQkJCTMwMCBBbGRlbiBSb2FkCi0JCQkJTWFya2hhbSBPbnRhcmlvIEwzUjRDMQotCQkJCUNBTkFEQQotCi0wMC0xRi01NSAgIChoZXgpCQlIb25leXdlbGwgU2VjdXJpdHkgKENoaW5hKSBDby4sIEx0ZC4KLTAwMUY1NSAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgU2VjdXJpdHkgKENoaW5hKSBDby4sIEx0ZC4KLQkJCQlCbG9jayAyOCwgU2VjdGlvbiAyLCBIdWFpICBEZSBDdWkgR2FuZyBJbmR1c3RyaWFsICBFc3RhdGUsIEZ1IFlvbmcsIEJhbyBBbiwgU2hlblpoZW4sIFAuUi4gQ2hpbmEKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTAzCi0JCQkJQ0hJTkEKLQotMDAtMUYtNTYgICAoaGV4KQkJRElHSVRBTCBGT1JFQ0FTVAotMDAxRjU2ICAgICAoYmFzZSAxNikJCURJR0lUQUwgRk9SRUNBU1QKLQkJCQk1dGggRmwuLCA1MDcsIEUmQyBWZW50dXJlIERyZWFtIFRvd2VyIElJSSwgMTk3LTMzCi0JCQkJR3VybyAzLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCBHeXVuZ2dpLWRvIDE1Mi03MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtNTcgICAoaGV4KQkJUGhvbmlrIElubm92YXRpb24gQ28uLExURAotMDAxRjU3ICAgICAoYmFzZSAxNikJCVBob25payBJbm5vdmF0aW9uIENvLixMVEQKLQkJCQkyOS8xNjcgTW9vMiwgMzQ1IFJkLCBMYW1wbywKLQkJCQlCYW5nYnVhdGhvbmcKLQkJCQlOb250aGFidXJpICAxMTExMAotCQkJCVRIQUlMQU5ECi0KLTAwLTFGLTU4ICAgKGhleCkJCUVNSCBFbmVyZ2llbWVzc3RlY2huaWsgR21iSCAmIGNvLktHCi0wMDFGNTggICAgIChiYXNlIDE2KQkJRU1IIEVuZXJnaWVtZXNzdGVjaG5payBHbWJIICYgY28uS0cKLQkJCQlOZXUtR2FsbGluZXIgV2VnIDEKLQkJCQlHYWxsaW4gTWVja2xlbmJ1cmcgLSBWb3Jwb21tZXJuCi0JCQkJMTkgMjU4Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi01OSAgIChoZXgpCQlLcm9uYmFjayBUcmFjZXJzCi0wMDFGNTkgICAgIChiYXNlIDE2KQkJS3JvbmJhY2sgVHJhY2VycwotCQkJCWMvbyBJSEssIE0xNDYKLQkJCQlMYXV0cnVwdmFuZyAxNQotCQkJCUJhbGxlcnVwIENvcGVuaGFnZW4gMjc1MAotCQkJCURFTk1BUksKLQotMDAtMUYtNUEgICAoaGV4KQkJQmVja3dpdGggRWxlY3RyaWMgQ28uCi0wMDFGNUEgICAgIChiYXNlIDE2KQkJQmVja3dpdGggRWxlY3RyaWMgQ28uCi0JCQkJNjE5MCAxMTh0aCBBdmUgTm8KLQkJCQlMYXJnbyBGbG9yaWRhIDMzNzczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi01QiAgIChoZXgpCQlBcHBsZSwgSW5jLgotMDAxRjVCICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJTVMgMzUtR1BPCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi01QyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRjVDICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRi01RCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAxRjVEICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0xRi01RSAgIChoZXgpCQlEeW5hIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTAwMUY1RSAgICAgKGJhc2UgMTYpCQlEeW5hIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlIYW9IYWkgQnVpbGRpbmcgMUYsTm8uNyw1dGggU3RyZWV0LFNoYW5nZGksCi0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTFGLTVGICAgKGhleCkJCUJsYXRhbmQgR21iSAotMDAxRjVGICAgICAoYmFzZSAxNikJCUJsYXRhbmQgR21iSAotCQkJCUxpY2h0ZW5iZXJnc3RyYcODxbhlIDgKLQkJCQlHYXJjaGluZyBCYXZhcmlhIDg1NzQ4Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi02MCAgIChoZXgpCQlDT01QQVNTIFNZU1RFTVMgQ09SUC4KLTAwMUY2MCAgICAgKGJhc2UgMTYpCQlDT01QQVNTIFNZU1RFTVMgQ09SUC4KLQkJCQk2RiwgTm8uIDQxMywgU2VjLiAyLCBUaS1EaW5nIEJsdmQuLAotCQkJCVRhaXBlaSBOZWlodURpc3QgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi02MSAgIChoZXgpCQlUYWxlbnQgQ29tbXVuaWNhdGlvbiBOZXR3b3JrcyBJbmMuCi0wMDFGNjEgICAgIChiYXNlIDE2KQkJVGFsZW50IENvbW11bmljYXRpb24gTmV0d29ya3MgSW5jLgotCQkJCVJtLiA5MTAgUiZGIFBsYXphLCAjNzYsIEh1YW5ncHUgQXZlLiBXZXN0LAotCQkJCUd1YW5nemhvdSAoQ2FudG9uKSBHdWFuZ2RvbmcgUHJvdmluY2UgNTEwMzYwCi0JCQkJQ0hJTkEKLQotMDAtMUYtNjIgICAoaGV4KQkJSlNDICJTdGlsc29mdCIKLTAwMUY2MiAgICAgKGJhc2UgMTYpCQlKU0MgIlN0aWxzb2Z0IgotCQkJCU1heWFrb3Zza29nbyAxNQotCQkJCVN0YXZyb3BvbCAgMzU1MDAwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFGLTYzICAgKGhleCkJCUpTQyBHb29kd2luLUV1cm9wYQotMDAxRjYzICAgICAoYmFzZSAxNikJCUpTQyBHb29kd2luLUV1cm9wYQotCQkJCTIwLzUgTWFya3Npc3Rza2F5YSBzdC4KLQkJCQlNb3Njb3cgIDEwOTE0NwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0xRi02NCAgIChoZXgpCQlCZWlqaW5nIEF1dGVsYW4gVGVjaG5vbG9neSBJbmMuCi0wMDFGNjQgICAgIChiYXNlIDE2KQkJQmVpamluZyBBdXRlbGFuIFRlY2hub2xvZ3kgSW5jLgotCQkJCVJvb20gQi0xMkIwMSwgS2VzaGkgUGxhemEsIFhpbnhpIHJvYWQsCi0JCQkJU2hhbmdkaSBwYXJrLEhhaWRpYW4sCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMUYtNjUgICAoaGV4KQkJS09SRUEgRUxFQ1RSSUMgVEVSTUlOQUwgQ08uLCBMVEQuCi0wMDFGNjUgICAgIChiYXNlIDE2KQkJS09SRUEgRUxFQ1RSSUMgVEVSTUlOQUwgQ08uLCBMVEQuCi0JCQkJIzctMzggU09OR0RPLURPTkcKLQkJCQlZRU9OU1UtR1UgSU5DSEVPTiA0MDYtODQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTY2ICAgKGhleCkJCVBMQU5BUiBMTEMKLTAwMUY2NiAgICAgKGJhc2UgMTYpCQlQTEFOQVIgTExDCi0JCQkJMzIsIEVsa2luYSBzdHIKLQkJCQlDaGVseWFiaW5zayBTVSA0NTQwOTEKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUYtNjcgICAoaGV4KQkJSGl0YWNoaSxMdGQuCi0wMDFGNjcgICAgIChiYXNlIDE2KQkJSGl0YWNoaSxMdGQuCi0JCQkJTWluYW1pb2kgNi0yNy0xOCwgU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gMTQwLTg1NzIKLQkJCQlKQVBBTgotCi0wMC0xRi02OCAgIChoZXgpCQlNYXJ0aW5zc29uIEVsZWt0cm9uaWsgQUIKLTAwMUY2OCAgICAgKGJhc2UgMTYpCQlNYXJ0aW5zc29uIEVsZWt0cm9uaWsgQUIKLQkJCQlCb3ggOTA2MAotCQkJCUjDpGdlcnN0ZW4gU3RvY2tob2xtIDEyNiAwOQotCQkJCVNXRURFTgotCi0wMC0xRi02OSAgIChoZXgpCQlQaW5nb29kIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFGNjkgICAgIChiYXNlIDE2KQkJUGluZ29vZCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVJtMTkxNywgU291dGggQmxvY2ssIENhbmdzb25nIEJsZGcuLCBUYWlyYW4gSW5kdXN0cmlhbCBab25lLCBGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMDAtMUYtNkEgICAoaGV4KQkJUGFja2V0Rmx1eCBUZWNobm9sb2dpZXMsIEluYy4KLTAwMUY2QSAgICAgKGJhc2UgMTYpCQlQYWNrZXRGbHV4IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTUwIDExdGggQXZlbnVlCi0JCQkJSGVsZW5hIE1UIDU5NjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi02QiAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotMDAxRjZCICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAtMzksS2FzYW4tZG9uZyxLdW1jaG9uLWt1Ci0JCQkJU2VvdWwgIDE1My0wMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtNkMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRjZDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTZEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUY2RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi02RSAgIChoZXgpCQlWdGVjaCBFbmdpbmVlcmluZyBDb3Jwb3JhdGlvbgotMDAxRjZFICAgICAoYmFzZSAxNikJCVZ0ZWNoIEVuZ2luZWVyaW5nIENvcnBvcmF0aW9uCi0JCQkJMjAgTmV3IEVuZ2xhbmQgQnVzaW5lc3MgQ2VudGVyCi0JCQkJQW5kb3ZlciBNQSAwMTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtNkYgICAoaGV4KQkJRnVqaWFuIFN1bm5hZGEgQ29tbXVuaWNhdGlvbiBDby4sTHRkLgotMDAxRjZGICAgICAoYmFzZSAxNikJCUZ1amlhbiBTdW5uYWRhIENvbW11bmljYXRpb24gQ28uLEx0ZC4KLQkJCQk3L0bCo8KsTWFpbiBCdWlsZGluZ8KjwqxGdWppYW4gVG9yY2ggSGktVGVjaCBJbm5vdmF0aW9uIFBhcmvCo8KsIzYxMSBJbmR1c3RyaWFsIFJvYWTCo8KsIEZ1emhvdcKjwqxQUkMgMzUwMDAyCi0JCQkJNyMgQnVpbGRpbmcgQiBEaXN0cmljdCwgU29mdHdhcmUgUGFyaywgVG9uZ1BhbiBSb2FkIEZ1emhvdSwgUFJDIDM1MDAwMwotCQkJCUZ1emhvdSBGdWppYW4gMzUwMDAyCi0JCQkJQ0hJTkEKLQotMDAtMUYtNzAgICAoaGV4KQkJQm90aWsgVGVjaG5vbG9naWVzIExURAotMDAxRjcwICAgICAoYmFzZSAxNikJCUJvdGlrIFRlY2hub2xvZ2llcyBMVEQKLQkJCQlUcnVkb3ZheWEsIDEKLQkJCQlQZXJlc2xhdmwtWmFsZXNza3kgWWFyb3NsYXZza2F5YSAxNTIwMjAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMUYtNzEgICAoaGV4KQkJeEcgVGVjaG5vbG9neSwgSW5jLgotMDAxRjcxICAgICAoYmFzZSAxNikJCXhHIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyNDAgUy4gUGluZWFwcGxlIEF2ZW51ZQotCQkJCVN1aXRlIDcwMQotCQkJCVNhcmFzb3RhIEZMIDM0MjM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi03MiAgIChoZXgpCQlRaW5nRGFvIEhpcGhvbmUgVGVjaG5vbG9neSBDbywuTHRkCi0wMDFGNzIgICAgIChiYXNlIDE2KQkJUWluZ0RhbyBIaXBob25lIFRlY2hub2xvZ3kgQ28sLkx0ZAotCQkJCU5PLjEwNixKaWFuZ1hpIFJvYWQKLQkJCQlRaW5nRGFvIFNoYW5Eb25nIDI2NjA3MQotCQkJCUNISU5BCi0KLTAwLTFGLTczICAgKGhleCkJCVRlcmF2aWV3IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFGNzMgICAgIChiYXNlIDE2KQkJVGVyYXZpZXcgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkyM0YsIE5vLiAyOS01LCBTZWMuIDIsIEpob25namhlbmcgRS4gUm9hZCwKLQkJCQlEYW5zaHVpIFRvd25zaGlwLAotCQkJCVRhaXBlaSBDb3VudHkgIDI1MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtNzQgICAoaGV4KQkJRWlnZW4gRGV2ZWxvcG1lbnQKLTAwMUY3NCAgICAgKGJhc2UgMTYpCQlFaWdlbiBEZXZlbG9wbWVudAotCQkJCTE4MDcgVzEwdGggQXZlCi0JCQkJVmFuY291dmVyIEJDIFY2SiAyQTkKLQkJCQlDQU5BREEKLQotMDAtMUYtNzUgICAoaGV4KQkJR2lCYWhuIE1lZGlhCi0wMDFGNzUgICAgIChiYXNlIDE2KQkJR2lCYWhuIE1lZGlhCi0JCQkJMTgxNiBSb3NlZGFsZSBTdXNlby1kb25nCi0JCQkJS2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtODg1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLTc2ICAgKGhleCkJCUFpckxvZ2ljIFN5c3RlbXMgSW5jLgotMDAxRjc2ICAgICAoYmFzZSAxNikJCUFpckxvZ2ljIFN5c3RlbXMgSW5jLgotCQkJCTMwMjIgUGVsZWtlIFN0LlN1aXRlIDEKLQkJCQlMaWh1J2UgSEkgOTY3NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTc3ICAgKGhleCkJCUhFT0wgREVTSUdOCi0wMDFGNzcgICAgIChiYXNlIDE2KQkJSEVPTCBERVNJR04KLQkJCQkxIGJkIGQnYXJtb3IKLQkJCQlMQU5OSU9OIEJSRVRBR05FIDIyMzAwCi0JCQkJRlJBTkNFCi0KLTAwLTFGLTc4ICAgKGhleCkJCUJsdWUgRm94IFBvcmluaSBUZXh0aWxlCi0wMDFGNzggICAgIChiYXNlIDE2KQkJQmx1ZSBGb3ggUG9yaW5pIFRleHRpbGUKLQkJCQkxMjA4IFBvaW50ZSBDZW50cmUgRHJpdmUKLQkJCQlTVEUgMjAwCi0JCQkJQ2hhdHRhbm9vZ2EgVE4gMzc0MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTc5ICAgKGhleCkJCUxvZGFtIEVsZWN0cm9uaWNzIEEvUwotMDAxRjc5ICAgICAoYmFzZSAxNikJCUxvZGFtIEVsZWN0cm9uaWNzIEEvUwotCQkJCUvDpnJ2ZWogNzcKLQkJCQlTw7huZGVyYm9yZyBBbHMgREstNjQwMAotCQkJCURFTk1BUksKLQotMDAtMUYtN0EgICAoaGV4KQkJV2lXaWRlIEluYy4KLTAwMUY3QSAgICAgKGJhc2UgMTYpCQlXaVdpZGUgSW5jLgotCQkJCTEwQjEwLCBIdWEgSmllIFBsYXphCi0JCQkJIzEzIERhIFpob25nIFNpLCBIYWlkaWFuCi0JCQkJQmVpamluZyAgMTAwMDg5Ci0JCQkJQ0hJTkEKLQotMDAtMUYtN0IgICAoaGV4KQkJVGVjaE5leGlvbiBMdGQuCi0wMDFGN0IgICAgIChiYXNlIDE2KQkJVGVjaE5leGlvbiBMdGQuCi0JCQkJMTdGLTEsIE5vLiAxNiwgSmlhbiBCYSBSb2FkLAotCQkJCUNodW5nIEhvICBUYWlwZWkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi03QyAgIChoZXgpCQlXaXRlbGNvbSBBUwotMDAxRjdDICAgICAoYmFzZSAxNikJCVdpdGVsY29tIEFTCi0JCQkJVmVyZnRzZ3QgMTAKLQkJCQlNb3NzIE9zdGZvbGQgMTUxMQotCQkJCU5PUldBWQotCi0wMC0xRi03RCAgIChoZXgpCQllbWJlZGRlZCB3aXJlbGVzcyBHbWJICi0wMDFGN0QgICAgIChiYXNlIDE2KQkJZW1iZWRkZWQgd2lyZWxlc3MgR21iSAotCQkJCVPDtmZsaW5nZXIgU3RyLiAxMDAKLQkJCQlVbG0gQlcgODkwNzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLTdFICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDFGN0UgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVVMgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSWxsaW5vaXMgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTdGICAgKGhleCkJCVBoYWJyaXggTGltaXRlZAotMDAxRjdGICAgICAoYmFzZSAxNikJCVBoYWJyaXggTGltaXRlZAotCQkJCUJsaW5kbWFucyBHYXRlIENvdHRhZ2UKLQkJCQlXb29sdG9uIEhpbGwKLQkJCQlOZXdidXJ5IEhhbXBzaGlyZSBSRzIwIDlYQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFGLTgwICAgKGhleCkJCUx1Y2FzIEhvbGRpbmcgYnYKLTAwMUY4MCAgICAgKGJhc2UgMTYpCQlMdWNhcyBIb2xkaW5nIGJ2Ci0JCQkJRG9tZWluIDI4Ci0JCQkJR2VtZXJ0IE5CIDU0MjFBUgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTFGLTgxICAgKGhleCkJCUFjY2VsIFNlbWljb25kdWN0b3IgQ29ycAotMDAxRjgxICAgICAoYmFzZSAxNikJCUFjY2VsIFNlbWljb25kdWN0b3IgQ29ycAotCQkJCTFGLE1haW5ibGRnLDE0OSBDaHVuIFhpYW8gUm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMDAtMUYtODIgICAoaGV4KQkJQ2FsLUNvbXAgRWxlY3Ryb25pY3MgJiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZAotMDAxRjgyICAgICAoYmFzZSAxNikJCUNhbC1Db21wIEVsZWN0cm9uaWNzICYgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQKLQkJCQkzRiwgIzIwNSwgU2VjLjMgUGVpaHNpbiBSZC4KLQkJCQlIc2ludGVpbiBUYWlwZWkgQ291bnR5IDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtODMgICAoaGV4KQkJVGVsZXBsYW4gVGVjaG5vbG9neSBTZXJ2aWNlcyBTZG4gQmhkCi0wMDFGODMgICAgIChiYXNlIDE2KQkJVGVsZXBsYW4gVGVjaG5vbG9neSBTZXJ2aWNlcyBTZG4gQmhkCi0JCQkJMjU4MCwgVGluZ2thdCBQZXJ1c2FoYWFuIDRCCi0JCQkJWm9uIFBlcmRhZ2FuZ2FuIEJlYmFzIER1YQotCQkJCVBlcmFpIFBlbmFuZyAxMzYwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTFGLTg0ICAgKGhleCkJCUdpZ2xlIFNlbWljb25kdWN0b3IKLTAwMUY4NCAgICAgKGJhc2UgMTYpCQlHaWdsZSBTZW1pY29uZHVjdG9yCi0JCQkJQmFyY2Vsb25hIEFjdGl2YSAtIFZpdmVybyBHbG9yaWFzCi0JCQkJTGxhY3VuYSAxNjIKLQkJCQlCYXJjZWxvbmEgIDA4MDE4Ci0JCQkJU1BBSU4KLQotMDAtMUYtODUgICAoaGV4KQkJQXByaXZhIElTUywgTExDCi0wMDFGODUgICAgIChiYXNlIDE2KQkJQXByaXZhIElTUywgTExDCi0JCQkJNjkwMCBFIENhbWVsYmFjayBSZAotCQkJCVN1aXRlIDcwMAotCQkJCVNjb3R0c2RhbGUgQVogODUyNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTg2ICAgKGhleCkJCWRpZ0Vjb3IKLTAwMUY4NiAgICAgKGJhc2UgMTYpCQlkaWdFY29yCi0JCQkJMTYyNSBOLiAxMTAwIFcuCi0JCQkJU3ByaW5ndmlsbGUgVVQgODQ2NjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTg3ICAgKGhleCkJCVNreWRpZ2l0YWwgSW5jLgotMDAxRjg3ICAgICAoYmFzZSAxNikJCVNreWRpZ2l0YWwgSW5jLgotCQkJCSMyOC05IFdvbmh5b3JvMS1nYSwgWW9uZ3Nhbi1ndSwKLQkJCQlTZW91bCAgMTQwLTg0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi04OCAgIChoZXgpCQlGTVMgRm9yY2UgTWVhc3VyaW5nIFN5c3RlbXMgQUcKLTAwMUY4OCAgICAgKGJhc2UgMTYpCQlGTVMgRm9yY2UgTWVhc3VyaW5nIFN5c3RlbXMgQUcKLQkJCQlBc3BzdHJhc3NlIDYKLQkJCQlPYmVyZ2xhdHQgWnVyaWNoIDgxNTQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0xRi04OSAgIChoZXgpCQlTaWduYWxpb24gR21iSAotMDAxRjg5ICAgICAoYmFzZSAxNikJCVNpZ25hbGlvbiBHbWJICi0JCQkJU3VkaGF1c3dlZyA1Ci0JCQkJRHJlc2RlbiBTYXhvbnkgMDEwOTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLThBICAgKGhleCkJCUVsbGlvbiBEaWdpdGFsIEluYy4KLTAwMUY4QSAgICAgKGJhc2UgMTYpCQlFbGxpb24gRGlnaXRhbCBJbmMuCi0JCQkJU3VpdGUgODA5LCBTaWNveCBUb3dlciwgNTEzLTE0LCBTYW5nZGFld29uLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTdW5nbmFtLWNpdHkgS3lvbmdnaS1kbyA0MjYtNzI2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLThCICAgKGhleCkJCUNhY2hlIElRCi0wMDFGOEIgICAgIChiYXNlIDE2KQkJQ2FjaGUgSVEKLQkJCQk4ODM0IE5vcnRoIENhcGl0YWwgb2YgVGV4YXMgSHd5Ci0JCQkJQXVzdGluIFRleGFzIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi04QyAgIChoZXgpCQlDQ1MgSW5jLgotMDAxRjhDICAgICAoYmFzZSAxNikJCUNDUyBJbmMuCi0JCQkJU2hpbW9kYWNoaXVyaS1hZ2FydQotCQkJCUthcmFzdW1hLWRvcmksIEthbWlneW8ta3UKLQkJCQlLeW90byBLeW90byA2MDItODAxMQotCQkJCUpBUEFOCi0KLTAwLTFGLThEICAgKGhleCkJCUluZ2VuaWV1cmJ1ZXJvIFN0YXJrIEdtYkggdW5kIEtvLiBLRwotMDAxRjhEICAgICAoYmFzZSAxNikJCUluZ2VuaWV1cmJ1ZXJvIFN0YXJrIEdtYkggdW5kIEtvLiBLRwotCQkJCVJ1ZG9sZi1EaWVzZWwtU3RyYXNzZSA0NAotCQkJCUxhaWNoaW5nZW4gQlcgODkxNTAKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLThFICAgKGhleCkJCU1ldHJpcyBVU0EgSW5jLgotMDAxRjhFICAgICAoYmFzZSAxNikJCU1ldHJpcyBVU0EgSW5jLgotCQkJCTEyNzAxIEdyYW5kIFJpdmVyCi0JCQkJQnJpZ2h0b24gTUkgNDgxMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLThGICAgKGhleCkJCVNoYW5naGFpIEJlbGxtYW5uIERpZ2l0YWwgU291cmNlIENvLixMdGQuCi0wMDFGOEYgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgQmVsbG1hbm4gRGlnaXRhbCBTb3VyY2UgQ28uLEx0ZC4KLQkJCQk0MDQtNDA4IE1haW4gQmQsIEZEVVNQLCBOby4xMSBHdW90YWkgUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDQzMwotCQkJCUNISU5BCi0KLTAwLTFGLTkwICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jIAotMDAxRjkwICAgICAoYmFzZSAxNikJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jIAotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtOTEgICAoaGV4KQkJREJTIExvZGdpbmcgVGVjaG5vbG9naWVzLCBMTEMKLTAwMUY5MSAgICAgKGJhc2UgMTYpCQlEQlMgTG9kZ2luZyBUZWNobm9sb2dpZXMsIExMQwotCQkJCTIxMTk2IExpbWJlcgotCQkJCU1pc3Npb24gVmllam8gQ0EgOTI2OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTkyICAgKGhleCkJCVZpZGVvSVEsIEluYy4KLTAwMUY5MiAgICAgKGJhc2UgMTYpCQlWaWRlb0lRLCBJbmMuCi0JCQkJMjEzIEJ1cmxpbmd0b24gUm9hZAotCQkJCVN1aXRlIDEwNAotCQkJCUJlZGZvcmQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTkzICAgKGhleCkJCVhpb3RlY2ggQ29ycG9yYXRpb24KLTAwMUY5MyAgICAgKGJhc2UgMTYpCQlYaW90ZWNoIENvcnBvcmF0aW9uCi0JCQkJNjQ1NSBGbHlpbmcgQ2xvdWQgRHJpdmUKLQkJCQlFZGVuIFByYWlyaWUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTk0ICAgKGhleCkJCUxhc2NhciBFbGVjdHJvbmljcyBMdGQKLTAwMUY5NCAgICAgKGJhc2UgMTYpCQlMYXNjYXIgRWxlY3Ryb25pY3MgTHRkCi0JCQkJTW9kdWxlIEhvdXNlCi0JCQkJV2hpdGVwYXJpc2gKLQkJCQlOciBTYWxpc2J1cnkgV2lsdHNoaXJlIFNQNSAyU0oKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0xRi05NSAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0wMDFGOTUgICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCTE0IFJ1ZSBQYXVsIERhdXRpZXIKLQkJCQlWZWxpenkgIDc4NDU3Ci0JCQkJRlJBTkNFCi0KLTAwLTFGLTk2ICAgKGhleCkJCUFQUk9URUNIIENPLkxURAotMDAxRjk2ICAgICAoYmFzZSAxNikJCUFQUk9URUNIIENPLkxURAotCQkJCUtPTE9ORElHSVRBTCBUT1dFUiBBU1RPTiAyMDEsIDUwNS0xNAotCQkJCUdBU0FOLURPTkcsS1VNQ0hPTi1HVQotCQkJCVNFT1VMICBLU1hYIDAwMjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtOTcgICAoaGV4KQkJQkVSVEFOQSBTUkwKLTAwMUY5NyAgICAgKGJhc2UgMTYpCQlCRVJUQU5BIFNSTAotCQkJCVZJQUxFIEdBTElMRU8gRkVSUkFSSVMgMjcKLQkJCQlCUlVJTk8gVE9SSU5PIDEwMDkwCi0JCQkJSVRBTFkKLQotMDAtMUYtOTggICAoaGV4KQkJREFJSUNISS1ERU5UU1UgTFRELgotMDAxRjk4ICAgICAoYmFzZSAxNikJCURBSUlDSEktREVOVFNVIExURC4KLQkJCQlPT01PUkkgNjkwLTEKLQkJCQlLQU5JIEdJRlUgNTA5LTAyMzgKLQkJCQlKQVBBTgotCi0wMC0xRi05OSAgIChoZXgpCQlTRVJPTklDUyBjby5sdGQKLTAwMUY5OSAgICAgKGJhc2UgMTYpCQlTRVJPTklDUyBjby5sdGQKLQkJCQkjNDAxIFRlY2hub3BvbGlzLAotCQkJCTcxMUhvc2FuLWRvbmcsIERhbHNlby1ndQotCQkJCURhZWd1IEd5ZW9uZy1idWsgNzA0LTIzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi05QSAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMUY5QSAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyLTQzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTlCICAgKGhleCkJCVBPU0JSTwotMDAxRjlCICAgICAoYmFzZSAxNikJCVBPU0JSTwotCQkJCVNoaW55b3VuZ0d0b3dlciA2RiwgMjcxLTEKLQkJCQlTZW9oeXVuLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBLeXVuZ2dpLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtOUMgICAoaGV4KQkJTEVEQ08KLTAwMUY5QyAgICAgKGJhc2UgMTYpCQlMRURDTwotCQkJCTQ3ODAxIFcgQW5jaG9yIENvdXJ0Ci0JCQkJUGx5bW91dGggTUkgNDgxNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLTlEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUY5RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi05RSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDFGOUUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtOUYgICAoaGV4KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLTAwMUY5RiAgICAgKGJhc2UgMTYpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotCQkJCVByaW5zIEJvdWRld2lqbmxhYW4gNDcKLQkJCQlFZGVnZW0gQW50d2VycCBCLTI2NTAKLQkJCQlCRUxHSVVNCi0KLTAwLTFGLUEwICAgKGhleCkJCUExMCBOZXR3b3JrcwotMDAxRkEwICAgICAoYmFzZSAxNikJCUExMCBOZXR3b3JrcwotCQkJCTIzMDkgQmVyaW5nIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUExICAgKGhleCkJCUd0cmFuIEluYwotMDAxRkExICAgICAoYmFzZSAxNikJCUd0cmFuIEluYwotCQkJCTI2NTEgTGF2ZXJ5IENvdXJ0Ci0JCQkJTmV3YnVyeSBQYXJrIENBIDkxMzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BMiAgIChoZXgpCQlEYXRyb24gV29ybGQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMUZBMiAgICAgKGJhc2UgMTYpCQlEYXRyb24gV29ybGQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkzMDMwIEVudGVycHJpc2UgQ291cnQKLQkJCQlWaXN0YSBDYWxpZm9ybmlhIDkyMDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BMyAgIChoZXgpCQlUJlcgRWxlY3Ryb25pY3MoU2hlbnpoZW4pQ28uLEx0ZC4KLTAwMUZBMyAgICAgKGJhc2UgMTYpCQlUJlcgRWxlY3Ryb25pY3MoU2hlbnpoZW4pQ28uLEx0ZC4KLQkJCQkyRixCYWl5aW5nIEJ1aWxkaW5nLCBOby4xMDE5LAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwNjcKLQkJCQlDSElOQQotCi0wMC0xRi1BNCAgIChoZXgpCQlTaGVuWmhlbiBHb25namluIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMUZBNCAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBHb25namluIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQk0RixCYWl5aW5nIEJ1aWxkaW5nLCBOby4xMDE5LE5hbmhhaSBSRCxTaGVrb3UsCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA2NwotCQkJCUNISU5BCi0KLTAwLTFGLUE1ICAgKGhleCkJCUJsdWUtV2hpdGUgSW5kdXN0cmllcwotMDAxRkE1ICAgICAoYmFzZSAxNikJCUJsdWUtV2hpdGUgSW5kdXN0cmllcwotCQkJCTUzMDAgQnVzaW5lc3MgRHJpdmUKLQkJCQlIdW50aW5ndG9uIEJlYWNoIENBIDkyNjQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BNiAgIChoZXgpCQlTdGlsbyBzcmwKLTAwMUZBNiAgICAgKGJhc2UgMTYpCQlTdGlsbyBzcmwKLQkJCQlWaWEgQmVzYW5hLCA0Ci0JCQkJMjAxMjIgTWlsYW5vIAotCQkJCUlUQUxZCi0KLTAwLTFGLUE3ICAgKGhleCkJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBJbmMuCi0wMDFGQTcgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4KLQkJCQkyLTYtMjEgTWluYW1pLUFveWFtYSwKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA3LTAwNjIKLQkJCQlKQVBBTgotCi0wMC0xRi1BOCAgIChoZXgpCQlTbWFydCBFbmVyZ3kgSW5zdHJ1bWVudHMgSW5jLgotMDAxRkE4ICAgICAoYmFzZSAxNikJCVNtYXJ0IEVuZXJneSBJbnN0cnVtZW50cyBJbmMuCi0JCQkJMjk3IExha2VzaG9yZSBSb2FkIEVhc3QKLQkJCQlVbml0IDEKLQkJCQlPYWt2aWxsZSBPbnRhcmlvIEw2SiAxSjMKLQkJCQlDQU5BREEKLQotMDAtMUYtQTkgICAoaGV4KQkJQXRsYW50YSBEVEgsIEluYy4KLTAwMUZBOSAgICAgKGJhc2UgMTYpCQlBdGxhbnRhIERUSCwgSW5jLgotCQkJCTUzODggTmV3IFBlYWNodHJlZSBSZAotCQkJCUNoYW1ibGVlIEdBIDMwMzQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BQSAgIChoZXgpCQlUYXNlb24sIEluYy4KLTAwMUZBQSAgICAgKGJhc2UgMTYpCQlUYXNlb24sIEluYy4KLQkJCQkgMzA5OSBOLiBGaXJzdCBTdHJlZXQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQUIgICAoaGV4KQkJSS5TIEhJR0ggVEVDSC5JTkMKLTAwMUZBQiAgICAgKGJhc2UgMTYpCQlJLlMgSElHSCBURUNILklOQwotCQkJCTYwMy0xLFN1bmdib24tcmksRGFlc28tbXl1bgotCQkJCUV1bXN1bmctZ3VuIENodW5nY2hlb25nYnVrLWRvIDM2OS04MjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtQUMgICAoaGV4KQkJR29vZG1pbGwgU3lzdGVtcyBMdGQKLTAwMUZBQyAgICAgKGJhc2UgMTYpCQlHb29kbWlsbCBTeXN0ZW1zIEx0ZAotCQkJCVNpbmlrYWxsaW9udGllIDEwCi0JCQkJRXNwb28gVXVzaW1hYSAwMjYzMAotCQkJCUZJTkxBTkQKLQotMDAtMUYtQUQgICAoaGV4KQkJQnJvd24gSW5ub3ZhdGlvbnMsIEluYwotMDAxRkFEICAgICAoYmFzZSAxNikJCUJyb3duIElubm92YXRpb25zLCBJbmMKLQkJCQkzNjkgQ29uZ3Jlc3MgU3RyZWV0Ci0JCQkJRm91cnRoIEZsb29yCi0JCQkJQm9zdG9uIE1BIDAyMjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1BRSAgIChoZXgpCQlCbGljayBTb3V0aCBBZnJpY2EgKFB0eSkgTHRkCi0wMDFGQUUgICAgIChiYXNlIDE2KQkJQmxpY2sgU291dGggQWZyaWNhIChQdHkpIEx0ZAotCQkJCVBPIEJveCAxOTA4Ci0JCQkJUml2b25pYQotCQkJCUpvaGFubmVzYnVyZyBHYXV0ZW5nIDIxMDgKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtMUYtQUYgICAoaGV4KQkJTmV4dElPLCBJbmMuCi0wMDFGQUYgICAgIChiYXNlIDE2KQkJTmV4dElPLCBJbmMuCi0JCQkJMTI0MDEgUmVzZWFyY2ggQmx2ZC4KLQkJCQlCbGRnLiAyIFN1aXRlIDIwMAotCQkJCUF1c3RpbiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQjAgICAoaGV4KQkJVGltZUlQUywgSW5jLgotMDAxRkIwICAgICAoYmFzZSAxNikJCVRpbWVJUFMsIEluYy4KLQkJCQkzNTIyIE4gQ29tb3RhcmEgU3QKLQkJCQlXaWNoaXRhIEtTIDY3MjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CMSAgIChoZXgpCQlDeWJlcnRlY2ggSW5jLgotMDAxRkIxICAgICAoYmFzZSAxNikJCUN5YmVydGVjaCBJbmMuCi0JCQkJOTM1IEhvcnNoYW0gUmQKLQkJCQlVbml0IEkKLQkJCQlIb3JzaGFtIFBBIDE5MDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CMiAgIChoZXgpCQlTb250aGVpbSBJbmR1c3RyaWUgRWxla3Ryb25payBHbWJICi0wMDFGQjIgICAgIChiYXNlIDE2KQkJU29udGhlaW0gSW5kdXN0cmllIEVsZWt0cm9uaWsgR21iSAotCQkJCURpZXNlbHN0cmFzc2UgNwotCQkJCUtlbXB0ZW4gQWxsZ2FldSBCYXZhcmlhIEQtODc0MzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLUIzICAgKGhleCkJCTJXaXJlCi0wMDFGQjMgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CNCAgIChoZXgpCQlTbWFydFNoYXJlIFN5c3RlbXMKLTAwMUZCNCAgICAgKGJhc2UgMTYpCQlTbWFydFNoYXJlIFN5c3RlbXMKLQkJCQlUb2Jha3N2ZWplbiAyNSwgMS4gdGguCi0JCQkJU29lYm9yZyAgREstMjg2MAotCQkJCURFTk1BUksKLQotMDAtMUYtQjUgICAoaGV4KQkJSS9PIEludGVyY29ubmVjdCBJbmMuCi0wMDFGQjUgICAgIChiYXNlIDE2KQkJSS9PIEludGVyY29ubmVjdCBJbmMuCi0JCQkJMTIwMiBFIFdha2VoYW0gQXZlCi0JCQkJU2FudGEgQW5hIENBIDkyNzA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CNiAgIChoZXgpCQlDaGkgTGluIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDFGQjYgICAgIChiYXNlIDE2KQkJQ2hpIExpbiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLjE4LCBTaGVuZyBMaSAxc3QgU3QuLCBKZW4gVGUgSHNpYW5nLAotCQkJCVRhaW5hbiBUYWl3YW4gNzE3NTgKLQkJCQlDSElOQQotCi0wMC0xRi1CNyAgIChoZXgpCQlXaU1hdGUgVGVjaG5vbG9naWVzIENvcnAuCi0wMDFGQjcgICAgIChiYXNlIDE2KQkJV2lNYXRlIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCTE0QSBCdWlsZGluZyAyLCBHdWltaWFvIEdhcmRlbiwgTmFuZ3VhbmdsdSwgTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTQKLQkJCQlDSElOQQotCi0wMC0xRi1COCAgIChoZXgpCQlVbml2ZXJzYWwgUmVtb3RlIENvbnRyb2wsIEluYy4KLTAwMUZCOCAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgUmVtb3RlIENvbnRyb2wsIEluYy4KLQkJCQk1MDAgTWFtYXJvbmVjayBBdmVudWUKLQkJCQlTdWl0ZSA1MDIKLQkJCQlIYXJyaXNvbiBOWSAxMDUyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQjkgICAoaGV4KQkJUGFsdHJvbmljcwotMDAxRkI5ICAgICAoYmFzZSAxNikJCVBhbHRyb25pY3MKLQkJCQkxMTQ1IFBhbHRyb25pY3MgQ3QKLQkJCQlDcnlzdGFsIExha2UgSUwgNjAwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUJBICAgKGhleCkJCUJvWW91bmcgVGVjaC4gJiBNYXJrZXRpbmcsIEluYy4KLTAwMUZCQSAgICAgKGJhc2UgMTYpCQlCb1lvdW5nIFRlY2guICYgTWFya2V0aW5nLCBJbmMuCi0JCQkJWW91bmdkZXVuZ3BvLUd1IE11bnJhZTNnYSA4NC0yCi0JCQkJRG9uZ2d1ayBNZXJ0aWFuIDYwMgotCQkJCVNlb3VsICAxNTAtMDkzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLUJCICAgKGhleCkJCVhlbmF0ZWNoIENvLixMVEQKLTAwMUZCQiAgICAgKGJhc2UgMTYpCQlYZW5hdGVjaCBDby4sTFRECi0JCQkJIDUxNC0yIFlhIFRhYi1Eb25nIEJ1biBEYW5nIEd1Ci0JCQkJU2VvbmcgbmFtc2kgR3lvbmcgZ2ktZG8gNDYzLTgzOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0xRi1CQyAgIChoZXgpCQlFVkdBIENvcnBvcmF0aW9uCi0wMDFGQkMgICAgIChiYXNlIDE2KQkJRVZHQSBDb3Jwb3JhdGlvbgotCQkJCTI5MDAgU2F0dXJuIFN0LgotCQkJCVN1aXRlIEIKLQkJCQlCcmVhIENBIDkyODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1CRCAgIChoZXgpCQlLeW9jZXJhIFdpcmVsZXNzIENvcnAuCi0wMDFGQkQgICAgIChiYXNlIDE2KQkJS3lvY2VyYSBXaXJlbGVzcyBDb3JwLgotCQkJCTEwMzAwIENhbXB1cyBQb2ludCBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtQkUgICAoaGV4KQkJU2hlbnpoZW4gTW9wbmV0IEluZHVzdHJpYWwgQ28uLEx0ZAotMDAxRkJFICAgICAoYmFzZSAxNikJCVNoZW56aGVuIE1vcG5ldCBJbmR1c3RyaWFsIENvLixMdGQKLQkJCQlGIDMuTm8uMyBLZXl1YW4gUmQuCi0JCQkJU2hlbnpoZW4gTmFuc2hhbiBTY2llbmNlJkluZHVzdHJ5IFBhcmsKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMUYtQkYgICAoaGV4KQkJRnVsaHVhIE1pY3JvZWxlY3Ryb25pY3MgQ29ycC4gVGFpd2FuIEJyYW5jaAotMDAxRkJGICAgICAoYmFzZSAxNikJCUZ1bGh1YSBNaWNyb2VsZWN0cm9uaWNzIENvcnAuIFRhaXdhbiBCcmFuY2gKLQkJCQkxRiwgTm8uMTIsIFImRCBSb2FkLAotCQkJCVNjaWVuY2UtYmFzZWQgSW5kLiBQYXJrLAotCQkJCUhzaW4tQ2h1LCAzMDAgIDg4NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtQzAgICAoaGV4KQkJQ29udHJvbCBFeHByZXNzIEZpbmxhbmQgT3kKLTAwMUZDMCAgICAgKGJhc2UgMTYpCQlDb250cm9sIEV4cHJlc3MgRmlubGFuZCBPeQotCQkJCUxhaXRhYXRzaWxsYW50aWUgMwotCQkJCVNhdm9ubGlubmEgIDU3MTcwCi0JCQkJRklOTEFORAotCi0wMC0xRi1DMSAgIChoZXgpCQlIYW5sb25nIFRlY2hub2xvZ3kgQ28uLExURAotMDAxRkMxICAgICAoYmFzZSAxNikJCUhhbmxvbmcgVGVjaG5vbG9neSBDby4sTFRECi0JCQkJUk0uMjIyMCxCbG9jayBCLE5ldyBDZW50dXJ5IFBsYXphLDEgVGFpIFBpbmcgTmFuIFJvYWQsCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMDAwMgotCQkJCUNISU5BCi0KLTAwLTFGLUMyICAgKGhleCkJCUpvdyBUb25nIFRlY2hub2xvZ3kgQ28gTHRkCi0wMDFGQzIgICAgIChiYXNlIDE2KQkJSm93IFRvbmcgVGVjaG5vbG9neSBDbyBMdGQKLQkJCQk0NiBMYW5lIDMzNyBDaHVuZyBDaGVuZyBSZAotCQkJCVl1bmcgS2FuZyBDaXR5IFRhaW5hbiBDb3VudHkgNzEwNjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLUMzICAgKGhleCkJCVNtYXJ0U3luY2gsIEluYwotMDAxRkMzICAgICAoYmFzZSAxNikJCVNtYXJ0U3luY2gsIEluYwotCQkJCTQ0MDAgT2xkIENhbnRvbiBSZAotCQkJCVN1aXRlIDMwMAotCQkJCUphY2tzb24gTVMgMzkyMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUM0ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotMDAxRkM0ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIAotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUM1ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAxRkM1ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUYtQzYgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDFGQzYgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSxUYWlwZWkgMTEyCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLUM3ICAgKGhleCkJCUNhc2lvIEhpdGFjaGkgTW9iaWxlIENvbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0wMDFGQzcgICAgIChiYXNlIDE2KQkJQ2FzaW8gSGl0YWNoaSBNb2JpbGUgQ29tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQkyLTIyOS0xLCBTYWt1cmFnYW9rYQotCQkJCUhpZ2FzaGl5YW1hdG8tc2hpIFRva3lvIDIwNy04NTAxCi0JCQkJSkFQQU4KLQotMDAtMUYtQzggICAoaGV4KQkJVXAtVG9kYXkgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTAwMUZDOCAgICAgKGJhc2UgMTYpCQlVcC1Ub2RheSBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTcvRi4sIFVuaWZ5IENvbW1lcmNpYWwgJiBJbmR1c3RyaWFsIEJ1aWxkaW5nCi0JCQkJMzEgVGFpIFlpcCBTdHJlZXQsIEt3dW4gVG9uZywKLQkJCQlLb3dsb29uICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMUYtQzkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAxRkM5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUNBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMUZDQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1DQiAgIChoZXgpCQlOSVcgU29sdXRpb25zCi0wMDFGQ0IgICAgIChiYXNlIDE2KQkJTklXIFNvbHV0aW9ucwotCQkJCVAuTy4gQm94IDYyCi0JCQkJT25lIFRyZWUgSGlsbCBTb3V0aCBBdXN0cmFsaWEgNTExNAotCQkJCUFVU1RSQUxJQQotCi0wMC0xRi1DQyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMUZDQyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtQ0QgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMDAxRkNEICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtQ0UgICAoaGV4KQkJUVRFQ0ggTExDCi0wMDFGQ0UgICAgIChiYXNlIDE2KQkJUVRFQ0ggTExDCi0JCQkJTm92b3phdm9kc2theWEgc3QuIDE4IGJ1aWxkLiAxCi0JCQkJTW9zY293IE1vc2NvdyByZWdpb24gMTIxMzA5Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTFGLUNGICAgKGhleCkJCU1TSSBUZWNobm9sb2d5IEdtYkgKLTAwMUZDRiAgICAgKGJhc2UgMTYpCQlNU0kgVGVjaG5vbG9neSBHbWJICi0JCQkJSGFuYXVlciBMYW5kc3RyYcODxbhlIDMyOC0zMzAKLQkJCQlGcmFua2Z1cnQgYW0gTWFpbiBIZXNzZW4gNjAzMTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTFGLUQwICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0wMDFGRDAgICAgIChiYXNlIDE2KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlOby4yMTUsTmFuLVBpbmcgUm9hZCwKLQkJCQlQaW4tSmVuIFRhb3l1YW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi1EMSAgIChoZXgpCQlPUFRFWCBDTy4sTFRELgotMDAxRkQxICAgICAoYmFzZSAxNikJCU9QVEVYIENPLixMVEQuCi0JCQkJNS04LTEyCi0JCQkJT2dvdG8KLQkJCQlPdHN1IFNoaWdhIDUyMC0wMTAxCi0JCQkJSkFQQU4KLQotMDAtMUYtRDIgICAoaGV4KQkJQ09NTVRFQ0ggVEVDSE5PTE9HWSBNQUNBTyBDT01NRVJDSUFMIE9GRlNIT1JFIExURC4KLTAwMUZEMiAgICAgKGJhc2UgMTYpCQlDT01NVEVDSCBURUNITk9MT0dZIE1BQ0FPIENPTU1FUkNJQUwgT0ZGU0hPUkUgTFRELgotCQkJCTMxLFRBSSBZSVAgU1RSRUVULCA3L0YgS1dVTiBUT05HLAotCQkJCUtPV0xPT04sIEhPTkdLT05HIAotCQkJCUNISU5BCi0KLTAwLTFGLUQzICAgKGhleCkJCVJJVkEgTmV0d29ya3MgSW5jLgotMDAxRkQzICAgICAoYmFzZSAxNikJCVJJVkEgTmV0d29ya3MgSW5jLgotCQkJCTU1NSBSaXZhIEF2ZQotCQkJCUVhc3QgQnJ1bnN3aWNrIE5KIDA4ODE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1ENCAgIChoZXgpCQk0SVBORVQsIElOQy4KLTAwMUZENCAgICAgKGJhc2UgMTYpCQk0SVBORVQsIElOQy4KLQkJCQkzODEyOSBDQU1CUklER0UgQ09VUlQKLQkJCQlGUkVNT05UIENBIDk0NTM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1ENSAgIChoZXgpCQlNSUNST1JJU0Mgcy5yLm8uCi0wMDFGRDUgICAgIChiYXNlIDE2KQkJTUlDUk9SSVNDIHMuci5vLgotCQkJCURlbG5pY2thIDIyMgotCQkJCUppY2luIGtyYWxvdmVocmFkZWNreSBrcmFqIDUwNjAxCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotMDAtMUYtRDYgICAoaGV4KQkJU2hlbnpoZW4gQWxseXdsbAotMDAxRkQ2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEFsbHl3bGwKLQkJCQlLZWppeXVhbiBOYW5zaGFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTFGLUQ3ICAgKGhleCkJCVRFTEVSQUQgU0EKLTAwMUZENyAgICAgKGJhc2UgMTYpCQlURUxFUkFEIFNBCi0JCQkJMiwgYXZlbnVlIGRlIGxhIGJ1dHRlIGF1eCBjYWlsbGVzCi0JCQkJQU5HTEVUICA2NDYwMAotCQkJCUZSQU5DRQotCi0wMC0xRi1EOCAgIChoZXgpCQlBLVRSVVNUIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMDFGRDggICAgIChiYXNlIDE2KQkJQS1UUlVTVCBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTNGLiwgTk8uMzYxLCBGVVNJTkcgMVNUIFJELiwgR1VFSVNIQU4gVE9XTlNISVAsCi0JCQkJVEFPWVVBTiAgMzMzNzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLUQ5ICAgKGhleCkJCVJTRCBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMUZEOSAgICAgKGJhc2UgMTYpCQlSU0QgQ29tbXVuaWNhdGlvbnMgTHRkCi0JCQkJOCBCb3Jyb3dtZWFkb3cgUm9hZAotCQkJCVNwcmluZ2tlcnNlIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJU3RpcmxpbmcgU2NvdGxhbmQgRks3IDdVVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTFGLURBICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAxRkRBICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLURCICAgKGhleCkJCU5ldHdvcmsgU3VwcGx5IENvcnAuLAotMDAxRkRCICAgICAoYmFzZSAxNikJCU5ldHdvcmsgU3VwcGx5IENvcnAuLAotCQkJCTE5MzggTkFLQURBSVJBIEtBTkFFCi0JCQkJSUlEQSBOQUdBTk8gMzk1LTA4MDEKLQkJCQlKQVBBTgotCi0wMC0xRi1EQyAgIChoZXgpCQlNb2JpbGUgU2FmZSBUcmFjayBMdGQKLTAwMUZEQyAgICAgKGJhc2UgMTYpCQlNb2JpbGUgU2FmZSBUcmFjayBMdGQKLQkJCQlOaWVtZW5rYXR1IDczCi0JCQkJMTUxNDkgTGFodGkgCi0JCQkJRklOTEFORAotCi0wMC0xRi1ERCAgIChoZXgpCQlHREkgTExDCi0wMDFGREQgICAgIChiYXNlIDE2KQkJR0RJIExMQwotCQkJCU9uZSBNaWRBbWVyaWNhIFBsYXphCi0JCQkJU3VpdGUgMTAxMAotCQkJCU9ha2Jyb29rIFRlcnJhY2UgSUwgNjAxODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLURFICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFGREUgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFGLURGICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDFGREYgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTFGLUUwICAgKGhleCkJCUVkZ2VWZWxvY2l0eSBDb3JwCi0wMDFGRTAgICAgIChiYXNlIDE2KQkJRWRnZVZlbG9jaXR5IENvcnAKLQkJCQkzIEJvdXJib24gU3RyZWV0Ci0JCQkJUGVhYm9keSBNQSAwMTk2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRTEgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMUZFMSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCTY2LCBDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLUUyICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0wMDFGRTIgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0xRi1FMyAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotMDAxRkUzICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAtMzksS2FzYW4tZG9uZyxLdW1jaG9uLWt1LAotCQkJCVNlb3VsICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTFGLUU0ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDFGRTQgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa8OlbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMUYtRTUgICAoaGV4KQkJSW4tQ2lyY3VpdCBHbWJICi0wMDFGRTUgICAgIChiYXNlIDE2KQkJSW4tQ2lyY3VpdCBHbWJICi0JCQkJS8O2bmlnc2Jyw7xja2VyIFN0cmFzc2UgNjkKLQkJCQlEcmVzZGVuICAwMTA5OQotCQkJCUdFUk1BTlkKLQotMDAtMUYtRTYgICAoaGV4KQkJQWxwaGlvbiBDb3Jwb3JhdGlvbgotMDAxRkU2ICAgICAoYmFzZSAxNikJCUFscGhpb24gQ29ycG9yYXRpb24KLQkJCQkxOTYgUHJpbmNldG9uIEhpZ2h0c3Rvd24gUm9hZAotCQkJCVN1aXRlIDFBCi0JCQkJUHJpbmNldG9uIEp1bmN0aW9uIE5ldyBKZXJzZXkgMDg1NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUU3ICAgKGhleCkJCVNpbWV0Ci0wMDFGRTcgICAgIChiYXNlIDE2KQkJU2ltZXQKLQkJCQlTdHJhZGEgZGVsIFBvcnRvbmUgMTI5Ci0JCQkJR3J1Z2xpYXNjbyBUb3Jpbm8gMTAwOTUKLQkJCQlJVEFMWQotCi0wMC0xRi1FOCAgIChoZXgpCQlLVVJVU1VHQVdBIEVsZWN0cm9uaWNzIEluZHVzdHJ5IEluYywuCi0wMDFGRTggICAgIChiYXNlIDE2KQkJS1VSVVNVR0FXQSBFbGVjdHJvbmljcyBJbmR1c3RyeSBJbmMsLgotCQkJCTJGLCA1Mi01LCBOb2dhdGEgNmNob21lCi0JCQkJTmFrYW5vLUt1IFRPS1lPIDE2NS0wMDI3Ci0JCQkJSkFQQU4KLQotMDAtMUYtRTkgICAoaGV4KQkJUHJpbnRyZXgsIEluYy4KLTAwMUZFOSAgICAgKGJhc2UgMTYpCQlQcmludHJleCwgSW5jLgotCQkJCTI3NiBFYXN0IEdpc2ggUm9hZAotCQkJCVNhbiBKb3NlIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1FQSAgIChoZXgpCQlBcHBsaWVkIE1lZGlhIFRlY2hub2xvZ2llcyBDb3Jwb3JhdGlvbgotMDAxRkVBICAgICAoYmFzZSAxNikJCUFwcGxpZWQgTWVkaWEgVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uCi0JCQkJNDA5MSBBTVRDIENlbnRlciBEcml2ZQotCQkJCUNsZWFyd2F0ZXIgRkwgMzM3NjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUVCICAgKGhleCkJCVRyaW8gRGF0YWNvbSBQdHkgTHRkCi0wMDFGRUIgICAgIChiYXNlIDE2KQkJVHJpbyBEYXRhY29tIFB0eSBMdGQKLQkJCQk0MSBBc3RlciBBdmVudWUKLQkJCQlDYXJydW0gRG93bnMgVmljdG9yaWEgMzIwMQotCQkJCUFVU1RSQUxJQQotCi0wMC0xRi1FQyAgIChoZXgpCQlTeW5hcHNlIMOpbGVjdHJvbmlxdWUKLTAwMUZFQyAgICAgKGJhc2UgMTYpCQlTeW5hcHNlIMOpbGVjdHJvbmlxdWUKLQkJCQkxMDEwLCA3ZSBBdmVudWUKLQkJCQlHcmFuZC1Nw6hyZSBRdcOpYmVjIEc5VCAyQjgKLQkJCQlDQU5BREEKLQotMDAtMUYtRUQgICAoaGV4KQkJVGVjYW4gU3lzdGVtcyBJbmMuCi0wMDFGRUQgICAgIChiYXNlIDE2KQkJVGVjYW4gU3lzdGVtcyBJbmMuCi0JCQkJMjQ1MCBaYW5rZXIgUm9hZAotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0xRi1FRSAgIChoZXgpCQl1YmlzeXMgdGVjaG5vbG9naWVzIEdtYkgKLTAwMUZFRSAgICAgKGJhc2UgMTYpCQl1YmlzeXMgdGVjaG5vbG9naWVzIEdtYkgKLQkJCQlBbSBXZWhyaGFobiA0NQotCQkJCUTDvHNzZWxkb3JmIE5SVyA0MDIxMQotCQkJCUdFUk1BTlkKLQotMDAtMUYtRUYgICAoaGV4KQkJU0hJTlNFSSBJTkRVU1RSSUVTIENPLixMVEQKLTAwMUZFRiAgICAgKGJhc2UgMTYpCQlTSElOU0VJIElORFVTVFJJRVMgQ08uLExURAotCQkJCTQtMTItMTUsSE9SSUZVTkUsIEtJVEEtS1UsCi0JCQkJVE9LT1lPICAxMTQtMDAwNAotCQkJCUpBUEFOCi0KLTAwLTFGLUYwICAgKGhleCkJCUF1ZGlvIFBhcnRuZXJzaGlwCi0wMDFGRjAgICAgIChiYXNlIDE2KQkJQXVkaW8gUGFydG5lcnNoaXAKLQkJCQlHYWxsZXJ5IENvdXJ0Ci0JCQkJSGFua2V5IFBsYWNlCi0JCQkJTG9uZG9uICBTRTEgNEJCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMUYtRjEgICAoaGV4KQkJUGFyYWRveCBIZWxsYXMgUy5BLgotMDAxRkYxICAgICAoYmFzZSAxNikJCVBhcmFkb3ggSGVsbGFzIFMuQS4KLQkJCQkzIEtvcmludGhveSBTdAotCQkJCU1ldGFtb3Jmb3NpCi0JCQkJQXRoZW5zIEF0dGlraSAxNDQ1MQotCQkJCUdSRUVDRQotCi0wMC0xRi1GMiAgIChoZXgpCQlWSUEgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDFGRjIgICAgIChiYXNlIDE2KQkJVklBIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTFGLCA1MzEsIENodW5nLUNoZW5nIFJvYWQKLQkJCQlIc2luLVRpZW4gVGFpcGVpIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMUYtRjMgICAoaGV4KQkJQXBwbGUsIEluYwotMDAxRkYzICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUY0ICAgKGhleCkJCVBvd2VyIE1vbml0b3JzLCBJbmMuCi0wMDFGRjQgICAgIChiYXNlIDE2KQkJUG93ZXIgTW9uaXRvcnMsIEluYy4KLQkJCQk4MDAgTm9ydGggTWFpbiBTdHJlZXQKLQkJCQlNdC4gQ3Jhd2ZvcmQgVmlyZ2luaWEgMjI4NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUY1ICAgKGhleCkJCUtvbmdzYmVyZyBEZWZlbmNlICYgQWVyb3NwYWNlCi0wMDFGRjUgICAgIChiYXNlIDE2KQkJS29uZ3NiZXJnIERlZmVuY2UgJiBBZXJvc3BhY2UKLQkJCQlPbGF2IEJydW5ib3JncyB2ZWkgNgotCQkJCUJpbGxpbmdzdGFkICAxMzk2Ci0JCQkJTk9SV0FZCi0KLTAwLTFGLUY2ICAgKGhleCkJCVBTIEF1ZGlvIEludGVybmF0aW9uYWwKLTAwMUZGNiAgICAgKGJhc2UgMTYpCQlQUyBBdWRpbyBJbnRlcm5hdGlvbmFsCi0JCQkJNDgyNiBTdGVybGluZyBEcml2ZQotCQkJCUJvdWxkZXIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUY3ICAgKGhleCkJCU5ha2FqaW1hIEFsbCBQcmVjaXNpb24gQ28uLCBMdGQuCi0wMDFGRjcgICAgIChiYXNlIDE2KQkJTmFrYWppbWEgQWxsIFByZWNpc2lvbiBDby4sIEx0ZC4KLQkJCQlLYW1pLUdvbXlvMTQ4MAotCQkJCVNha2FraS1NYWNoaQotCQkJCUhhbmlzaGluYS1HdW4gTmFnYW5vLUtlbiAzODktMDYwNgotCQkJCUpBUEFOCi0KLTAwLTFGLUY4ICAgKGhleCkJCVNpZW1lbnMgQUcsIFNlY3RvciBJbmR1c3RyeSwgRHJpdmUgVGVjaG5vbG9naWVzLCBNb3Rpb24gQ29udHJvbCBTeXN0ZW1zCi0wMDFGRjggICAgIChiYXNlIDE2KQkJU2llbWVucyBBRywgU2VjdG9yIEluZHVzdHJ5LCBEcml2ZSBUZWNobm9sb2dpZXMsIE1vdGlvbiBDb250cm9sIFN5c3RlbXMKLQkJCQlGcmF1ZW5hdXJhY2hlcnN0cmFzc2UgODAKLQkJCQlFcmxhbmdlbiBCYXZhcmlhIDkxMDU2Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi1GOSAgIChoZXgpCQlBZHZhbmNlZCBLbm93bGVkZ2UgQXNzb2NpYXRlcwotMDAxRkY5ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIEtub3dsZWRnZSBBc3NvY2lhdGVzCi0JCQkJMzM1MCBTY290dCBCbHZkLCBTdWl0ZSA0MAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0LTMxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTFGLUZBICAgKGhleCkJCUNvcmV0cmVlLCBDbywgTHRkCi0wMDFGRkEgICAgIChiYXNlIDE2KQkJQ29yZXRyZWUsIENvLCBMdGQKLQkJCQkjNTAyIElUIFZlbnR1cmUgVG93biwgNjk0Ci0JCQkJVGFwcmliLWRvbmcsIFl1c3VuZy1HdQotCQkJCURhZWplb24gIDMwNS01MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMUYtRkIgICAoaGV4KQkJR3JlZW4gUGFja2V0IEJoZAotMDAxRkZCICAgICAoYmFzZSAxNikJCUdyZWVuIFBhY2tldCBCaGQKLQkJCQlMb3QgMS00LCBJbmN1YmF0b3IgMiwgVGVjaG5vbG9neSBQYXJrIE1hbGF5c2lhCi0JCQkJTGVidWhyYXlhIFB1Y2hvbmcgLSBTZyBCZXNpLCBCdWtpdCBKYWxpbAotCQkJCUt1YWxhIEx1bXB1ciBXaWxheWFoIFBlcnNla3V0dWFuIDU3MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMUYtRkMgICAoaGV4KQkJUmljY2l1cytTb2huIEdtYkgKLTAwMUZGQyAgICAgKGJhc2UgMTYpCQlSaWNjaXVzK1NvaG4gR21iSAotCQkJCUhheW5hdWVyIFN0ci4gNDkKLQkJCQlCZXJsaW4gIDEyMjQ5Ci0JCQkJR0VSTUFOWQotCi0wMC0xRi1GRCAgIChoZXgpCQlJbmRpZ28gTW9iaWxlIFRlY2hub2xvZ2llcyBDb3JwLgotMDAxRkZEICAgICAoYmFzZSAxNikJCUluZGlnbyBNb2JpbGUgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJMTFGLCBObzIyLCBMYW40MDcsVGlEaW5nIEJsdmQgU2VjdGlvbjIsIE5laWh1IFRlY2hub2xvZ3kgUGFyawotCQkJCVRhaXBlaSBDaXR5ICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTFGLUZFICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLTAwMUZGRSAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZAotCQkJCVJvc2V2aWxsZSBDQSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMUYtRkYgICAoaGV4KQkJUmVzcGlyb25pY3MsIEluYy4KLTAwMUZGRiAgICAgKGJhc2UgMTYpCQlSZXNwaXJvbmljcywgSW5jLgotCQkJCTE3NDAgR29sZGVuIE1pbGUgSGlnaHdheQotCQkJCU1vbnJvZXZpbGxlIFBBIDE1MTQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0wMCAgIChoZXgpCQlMRVhNQVJLIElOVEVSTkFUSU9OQUwsIElOQy4KLTAwMjAwMCAgICAgKGJhc2UgMTYpCQlMRVhNQVJLIElOVEVSTkFUSU9OQUwsIElOQy4KLQkJCQk3NDAgTkVXIENJUkNMRSBST0FECi0JCQkJQkxERy4gMzUKLQkJCQlMRVhJTkdUT04gS1kgNDA1NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTAxICAgKGhleCkJCURTUCBTT0xVVElPTlMsIElOQy4KLTAwMjAwMSAgICAgKGJhc2UgMTYpCQlEU1AgU09MVVRJT05TLCBJTkMuCi0JCQkJMjQ2NCBFTUJBUkNBREVSTyBXQVkKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTAyICAgKGhleCkJCVNFUklURUNIIEVOVEVSUFJJU0UgQ08uLCBMVEQuCi0wMDIwMDIgICAgIChiYXNlIDE2KQkJU0VSSVRFQ0ggRU5URVJQUklTRSBDTy4sIExURC4KLQkJCQlGTC4gMTgyLCBOTy4gNTMxLTEKLQkJCQlDSFVORyBDSEVORyBST0FEIEhTSU4gVElFTiBDSVRZCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIwLTAzICAgKGhleCkJCVBJWEVMIFBPV0VSIExURC4KLTAwMjAwMyAgICAgKGJhc2UgMTYpCQlQSVhFTCBQT1dFUiBMVEQuCi0JCQkJVW5pdCA1IENvbGxlZ2UgQnVzaW5lc3MgUGFyawotCQkJCUNvbGRoYW1zIExhbmUKLQkJCQlDQU1CUklER0UgIENCMSAzSEQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC0wNCAgIChoZXgpCQlZQU1BVEFLRS1IT05FWVdFTEwgQ08uLCBMVEQuCi0wMDIwMDQgICAgIChiYXNlIDE2KQkJWUFNQVRBS0UtSE9ORVlXRUxMIENPLiwgTFRELgotCQkJCTU0IFNVWlVLQVdBLCBJU0VIQVJBCi0JCQkJS0FOQUdBV0EgMjU5LTExICAKLQkJCQlKQVBBTgotCi0wMC0yMC0wNSAgIChoZXgpCQlTSU1QTEUgVEVDSE5PTE9HWQotMDAyMDA1ICAgICAoYmFzZSAxNikJCVNJTVBMRSBURUNITk9MT0dZCi0JCQkJMzAwMSBEQUlNTEVSIFJPQUQKLQkJCQlTQU5UQSBBTkEgQ0EgOTI3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTA2ICAgKGhleCkJCUdBUlJFVFQgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMjAwNiAgICAgKGJhc2UgMTYpCQlHQVJSRVRUIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNDg1MzEgV0FSTVNQUklOR1MgQkxWRC4KLQkJCQlGUkVNT05UIENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0wNyAgIChoZXgpCQlTRkEsIElOQy4KLTAwMjAwNyAgICAgKGJhc2UgMTYpCQlTRkEsIElOQy4KLQkJCQkxNDAxIE1DQ09STUlDSyBEUklWRQotCQkJCUxBTkRPVkVSIE1EIDIwNzg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0wOCAgIChoZXgpCQlDQUJMRSAmIENPTVBVVEVSIFRFQ0hOT0xPR1kKLTAwMjAwOCAgICAgKGJhc2UgMTYpCQlDQUJMRSAmIENPTVBVVEVSIFRFQ0hOT0xPR1kKLQkJCQkxNTU1IFNPLiBTSU5DTEFJUiBTVFJFRVQKLQkJCQlBTkFIRUlNIENBIDkyODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0wOSAgIChoZXgpCQlQQUNLQVJEIEJFTEwgRUxFQy4sIElOQy4KLTAwMjAwOSAgICAgKGJhc2UgMTYpCQlQQUNLQVJEIEJFTEwgRUxFQy4sIElOQy4KLQkJCQk5NDI1IENBTk9HQSBBVkVOVUUKLQkJCQlDSEFUU1dPUlRIIENBIDkxMzIxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMEEgICAoaGV4KQkJU09VUkNFLUNPTU0gQ09SUC4KLTAwMjAwQSAgICAgKGJhc2UgMTYpCQlTT1VSQ0UtQ09NTSBDT1JQLgotCQkJCTI1MDIwIFcuIEFWRU5VRSBTVEFORk9SRAotCQkJCVVOSVQgMTgwCi0JCQkJVkFMRU5DSUEgQ0EgOTEzNTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTBCICAgKGhleCkJCU9DVEFHT04gU1lTVEVNUyBDT1JQLgotMDAyMDBCICAgICAoYmFzZSAxNikJCU9DVEFHT04gU1lTVEVNUyBDT1JQLgotCQkJCTY1MTAgVy4gOTFTVCBBVkVOVUUKLQkJCQlXRVNUTUlOU1RFUiBDTyA4MDAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMEMgICAoaGV4KQkJQURBU1RSQSBTWVNURU1TIENPUlAuCi0wMDIwMEMgICAgIChiYXNlIDE2KQkJQURBU1RSQSBTWVNURU1TIENPUlAuCi0JCQkJMjgzMTAgSU5EVVNUUklBTCBCTFZELi1TVEUtSwotCQkJCUhBWVdBUkQgQ0EgOTQ1NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTBEICAgKGhleCkJCUNBUkwgWkVJU1MKLTAwMjAwRCAgICAgKGJhc2UgMTYpCQlDQVJMIFpFSVNTCi0JCQkJUE9TVEZBQ0ggMTM4MAotCQkJCUFCVC4gIDEtRUwgNzM0NDQgT0JFUktPQ0hFTgotCQkJCUdFUk1BTlkKLQotMDAtMjAtMEUgICAoaGV4KQkJU0FURUxMSVRFIFRFQ0hOT0xPR1kgTUdNVCwgSU5DCi0wMDIwMEUgICAgIChiYXNlIDE2KQkJU0FURUxMSVRFIFRFQ0hOT0xPR1kgTUdNVCwgSU5DCi0JCQkJMzUzMCBIWUxBTkQgQVZFTlVFCi0JCQkJQ09TVEEgTUVTQSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMEYgICAoaGV4KQkJVEFOQkFDIENPLiwgTFRELgotMDAyMDBGICAgICAoYmFzZSAxNikJCVRBTkJBQyBDTy4sIExURC4KLQkJCQlTQUtVUkFJIERBSSAyIEJHCi0JCQkJMjctNCBJUklZQSAxLUNIT01FIFRBSVRPLUtVIFRPS1lPIDExMAotCQkJCUpBUEFOCi0KLTAwLTIwLTEwICAgKGhleCkJCUpFT0wgU1lTVEVNIFRFQ0hOT0xPR1kgQ08uIExURAotMDAyMDEwICAgICAoYmFzZSAxNikJCUpFT0wgU1lTVEVNIFRFQ0hOT0xPR1kgQ08uIExURAotCQkJCTMtMS0yIE11c2FzaGlubwotCQkJCUFraXNoaW1hLXNoaSBUb2t5byAxOTYtODU1OAotCQkJCUpBUEFOCi0KLTAwLTIwLTExICAgKGhleCkJCUNBTk9QVVMgQ08uLCBMVEQuCi0wMDIwMTEgICAgIChiYXNlIDE2KQkJQ0FOT1BVUyBDTy4sIExURC4KLQkJCQlLT0JFIEhJLVRFQ0ggUEFSSwotCQkJCTEtMi0yIE1VUk9UQU5JIE5JU0hJLUtVIEtPQkUKLQkJCQk2NTEtMjIgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0yMC0xMiAgIChoZXgpCQlDQU1UUk9OSUNTIE1FRElDQUwgU1lTVEVNUwotMDAyMDEyICAgICAoYmFzZSAxNikJCUNBTVRST05JQ1MgTUVESUNBTCBTWVNURU1TCi0JCQkJUC5PLiBCT1ggOTUwCi0JCQkJSEFSVExBTkQgV0kgNTMwMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTEzICAgKGhleCkJCURJVkVSU0lGSUVEIFRFQ0hOT0xPR1ksIElOQy4KLTAwMjAxMyAgICAgKGJhc2UgMTYpCQlESVZFUlNJRklFRCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTEyIEUuIFNUQVRFIFNUUkVFVAotCQkJCVJJREdFTEFORCBNUyAzOTE1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMTQgICAoaGV4KQkJR0xPQkFMIFZJRVcgQ08uLCBMVEQuCi0wMDIwMTQgICAgIChiYXNlIDE2KQkJR0xPQkFMIFZJRVcgQ08uLCBMVEQuCi0JCQkJNEYsIE5PLiAyMywgTEFORSAzMDYKLQkJCQlGVS1URUggMSBSRC4gSFNJLUNISUgsIFRBSVBFSSwgSFNJRU4KLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC0xNSAgIChoZXgpCQlBQ1RJUyBDT01QVVRFUiBTQQotMDAyMDE1ICAgICAoYmFzZSAxNikJCUFDVElTIENPTVBVVEVSIFNBCi0JCQkJMTYgQ0hFTUlOIERFUyBBVUxYCi0JCQkJMTIyOCBQTEFOIExFUyBPVkFURVMKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTIwLTE2ICAgKGhleCkJCVNIT1dBIEVMRUNUUklDIFdJUkUgJiBDQUJMRSBDTwotMDAyMDE2ICAgICAoYmFzZSAxNikJCVNIT1dBIEVMRUNUUklDIFdJUkUgJiBDQUJMRSBDTwotCQkJCU5PLiAyMC0yNSwgU0VJU0hJTiA4LUNIT01FCi0JCQkJU0FHQU1JSEFSQSwgS0FOQUdBV0EKLQkJCQkyMjkgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0yMC0xNyAgIChoZXgpCQlPUkJPVEVDSAotMDAyMDE3ICAgICAoYmFzZSAxNikJCU9SQk9URUNICi0JCQkJSU5EVVNUUklBTCBaT05FCi0JCQkJUC5PLiBCT1ggMjE1IDcwNjUxICBZQVZORQotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0yMC0xOCAgIChoZXgpCQlDSVMgVEVDSE5PTE9HWSBJTkMuCi0wMDIwMTggICAgIChiYXNlIDE2KQkJQ0lTIFRFQ0hOT0xPR1kgSU5DLgotCQkJCUZMLiA5LTEsIE5PLiA5NCwgUEFPIENIVU5HIFJELgotCQkJCUhTSU4gVElFTiBDSVRZCi0JCQkJVEFJUEVJIEhTSUVOICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIwLTE5ICAgKGhleCkJCU9ITEVSIEdtYkgKLTAwMjAxOSAgICAgKGJhc2UgMTYpCQlPSExFUiBHbWJICi0JCQkJTUFZQkFDSFNUUkFTRSAzMAotCQkJCTcxMzMyIFdBSUJMSU5HRU4gIAotCQkJCUdFUk1BTlkKLQotMDAtMjAtMUEgICAoaGV4KQkJTVJWIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDIwMUEgICAgIChiYXNlIDE2KQkJTVJWIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjA0MTUgTm9yZGhvZmYgU3QuCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMUIgICAoaGV4KQkJTk9SVEhFUk4gVEVMRUNPTS9ORVRXT1JLCi0wMDIwMUIgICAgIChiYXNlIDE2KQkJTk9SVEhFUk4gVEVMRUNPTS9ORVRXT1JLCi0JCQkJU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTI1MCBTSURORVkgU1RSRUVUIEJFTExFVklMTEUsIE9OVEFSSU8KLQkJCQlLOE4gNUI3Ci0JCQkJQ0FOQURBCi0KLTAwLTIwLTFDICAgKGhleCkJCUVYQ0VMLCBJTkMuCi0wMDIwMUMgICAgIChiYXNlIDE2KQkJRVhDRUwsIElOQy4KLQkJCQkzNTUgT0xEIFBMWU1PVVRIIFJPQUQKLQkJCQlTQUdBTU9SRSBCRUFDSCBNQSAwMjU2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMUQgICAoaGV4KQkJS0FUQU5BIFBST0RVQ1RTCi0wMDIwMUQgICAgIChiYXNlIDE2KQkJS0FUQU5BIFBST0RVQ1RTCi0JCQkJVEhFIFNUVURJTywgUVVBUlJZIEhJTEwgQk9YLAotCQkJCVdJTFRTSElSRSBTTjE0IDlIVCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtMUUgICAoaGV4KQkJTkVUUVVFU1QgQ09SUE9SQVRJT04KLTAwMjAxRSAgICAgKGJhc2UgMTYpCQlORVRRVUVTVCBDT1JQT1JBVElPTgotCQkJCTUyMyBGRUxMT1dTSElQIFJPQUQtU1RFLiMyMDUKLQkJCQlNVC4gTEFVUkVMIE5KIDA4MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0xRiAgIChoZXgpCQlCRVNUIFBPV0VSIFRFQ0hOT0xPR1ksIElOQy4KLTAwMjAxRiAgICAgKGJhc2UgMTYpCQlCRVNUIFBPV0VSIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQlQLk8uIEJPWCAyODAKLQkJCQlORUNFREFIIFdJIDU0NjQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yMCAgIChoZXgpCQlNRUdBVFJPTiBDT01QVVRFUiBJTkRVU1RSSUVTIFBUWSwgTFRELgotMDAyMDIwICAgICAoYmFzZSAxNikJCU1FR0FUUk9OIENPTVBVVEVSIElORFVTVFJJRVMgUFRZLCBMVEQuCi0JCQkJCi0JCQkJVU5JVCAyLCAgNjItNjQgQ0hBUlRFUiBTVFJFRVQgUklOR1dPT0QgVgotCQkJCUFVU1RSQUxJQQotCi0wMC0yMC0yMSAgIChoZXgpCQlBTEdPUklUSE1TIFNPRlRXQVJFIFBWVC4gTFRELgotMDAyMDIxICAgICAoYmFzZSAxNikJCUFMR09SSVRITVMgU09GVFdBUkUgUFZULiBMVEQuCi0JCQkJODMgSk9MTFkgTUFLRVIgQ0hBTUJFUlMgSUkKLQkJCQlOQVJJTUFOIFBPSU5UIEJPTUJBWSAgNDAwMDIxCi0JCQkJSU5ESUEKLQkJCQlJTkRJQQotCi0wMC0yMC0yMiAgIChoZXgpCQlOTVMgQ29tbXVuaWNhdGlvbnMKLTAwMjAyMiAgICAgKGJhc2UgMTYpCQlOTVMgQ29tbXVuaWNhdGlvbnMKLQkJCQkxMDAgQ3Jvc3NpbmcgQm91bGV2YXJkCi0JCQkJRnJhbWluZ2hhbSBNQSAwMTcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMjMgICAoaGV4KQkJVC5DLiBURUNITk9MT0dJRVMgUFRZLiBMVEQKLTAwMjAyMyAgICAgKGJhc2UgMTYpCQlULkMuIFRFQ0hOT0xPR0lFUyBQVFkuIExURAotCQkJCTYvNjAgRkFJUkZPUkQgUkQuCi0JCQkJUEFEU1RPVyAgTlNXMjIxMQotCQkJCUFVU1RSQUxJQQotCi0wMC0yMC0yNCAgIChoZXgpCQlQQUNJRklDIENPTU1VTklDQVRJT04gU0NJRU5DRVMKLTAwMjAyNCAgICAgKGJhc2UgMTYpCQlQQUNJRklDIENPTU1VTklDQVRJT04gU0NJRU5DRVMKLQkJCQk5NjQ1IFNDUkFOVE9OIFJPQUQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTI1ICAgKGhleCkJCUNPTlRST0wgVEVDSE5PTE9HWSwgSU5DLgotMDAyMDI1ICAgICAoYmFzZSAxNikJCUNPTlRST0wgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTU3MzQgTUlERExFQlJPT0sgUElLRQotCQkJCUtOT1hWSUxMRSBUTiAzNzkyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMjYgICAoaGV4KQkJQU1LTFkgU1lTVEVNUywgSU5DLgotMDAyMDI2ICAgICAoYmFzZSAxNikJCUFNS0xZIFNZU1RFTVMsIElOQy4KLQkJCQkxNTgwMSBST0NLRklFTEQgQkxWRC4sICNQCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yNyAgIChoZXgpCQlNSU5HIEZPUlRVTkUgSU5EVVNUUlkgQ08uLCBMVEQKLTAwMjAyNyAgICAgKGJhc2UgMTYpCQlNSU5HIEZPUlRVTkUgSU5EVVNUUlkgQ08uLCBMVEQKLQkJCQk0RiwgTk8uIDgwMCBDSFVORyBDSEVORyBSRCwKLQkJCQlDSFVORyBITyBDSVRZLCBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtMjggICAoaGV4KQkJV0VTVCBFR0cgU1lTVEVNUywgSU5DLgotMDAyMDI4ICAgICAoYmFzZSAxNikJCVdFU1QgRUdHIFNZU1RFTVMsIElOQy4KLQkJCQk2NSBISUdIIFJJREdFIFJPQUQtU1RFLiMyODYKLQkJCQlTVEFNRk9SRCBDVCAwNjkwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMjkgICAoaGV4KQkJVEVMRVBST0NFU1NJTkcgUFJPRFVDVFMsIElOQy4KLTAwMjAyOSAgICAgKGJhc2UgMTYpCQlURUxFUFJPQ0VTU0lORyBQUk9EVUNUUywgSU5DLgotCQkJCTQ1NjUgRS4gSU5EVVNUUklBTCBTVFJFRVQKLQkJCQlCVUlMRElORyAjN0sKLQkJCQlTSU1JIFZBTExFWSBDQSA5MzA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMkEgICAoaGV4KQkJTi5WLiBEWklORQotMDAyMDJBICAgICAoYmFzZSAxNikJCU4uVi4gRFpJTkUKLQkJCQlLT05JTkcgTEVPUE9MRCBJSUkgTEFBTiAyCi0JCQkJQiAtIDg1MDAgS09SVFJJSksKLQkJCQlCRUxHSVVNCi0JCQkJQkVMR0lVTQotCi0wMC0yMC0yQiAgIChoZXgpCQlBRFZBTkNFRCBURUxFQ09NTVVOSUNBVElPTlMgTU9EVUxFUywgTFRELgotMDAyMDJCICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIFRFTEVDT01NVU5JQ0FUSU9OUyBNT0RVTEVTLCBMVEQuCi0JCQkJCi0JCQkJTU9VTlQgUExFQVNBTlQgSE9VU0UgSFVOVElOR0RPTiBST0FELAotCQkJCUNhbWJyaWRnZSBDQjMgT0JMICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC0yQyAgIChoZXgpCQlXRUxMVFJPTklYIENPLiwgTFRELgotMDAyMDJDICAgICAoYmFzZSAxNikJCVdFTExUUk9OSVggQ08uLCBMVEQuCi0JCQkJM0YsIE5PLiAzNi0xLCBIV0FORyBIU0kgU1RSRUVUCi0JCQkJU0hJTi1MSU4gVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIwLTJEICAgKGhleCkJCVRBSVlPIENPUlBPUkFUSU9OCi0wMDIwMkQgICAgIChiYXNlIDE2KQkJVEFJWU8gQ09SUE9SQVRJT04KLQkJCQkxLTItNiBTQU5OT0gsIE9IVEEtS1UKLQkJCQlUT0tZTwotCQkJCTE0MyAKLQkJCQlKQVBBTgotCi0wMC0yMC0yRSAgIChoZXgpCQlEQVlTVEFSIERJR0lUQUwKLTAwMjAyRSAgICAgKGJhc2UgMTYpCQlEQVlTVEFSIERJR0lUQUwKLQkJCQk1NTU2IEFUTEFOVEEgSElHSFdBWQotCQkJCUZMT1dFUlkgQlJBTkNIIEdBIDMwNTQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0yRiAgIChoZXgpCQlaRVRBIENPTU1VTklDQVRJT05TLCBMVEQuCi0wMDIwMkYgICAgIChiYXNlIDE2KQkJWkVUQSBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCVpFTklUSCBIT1VTRQotCQkJCUdSRVNGT1JEIElORFVTVFJJQUwgUEFSSwotCQkJCVdSRVhIQU0sIENMV1lELCBMTDEyIDhMWCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtMzAgICAoaGV4KQkJQU5BTE9HICYgRElHSVRBTCBTWVNURU1TCi0wMDIwMzAgICAgIChiYXNlIDE2KQkJQU5BTE9HICYgRElHSVRBTCBTWVNURU1TCi0JCQkJMS8yIExBVkVMTEUgUk9BRAotCQkJCUJBTkdBTE9SRSAtIDU2MDAwMQotCQkJCUlORElBCi0JCQkJSU5ESUEKLQotMDAtMjAtMzEgICAoaGV4KQkJVGF0dGlsZSBTUkwgCi0wMDIwMzEgICAgIChiYXNlIDE2KQkJVGF0dGlsZSBTUkwgCi0JCQkJQU0gUEVTVEFMT1paSVJJTkcgMjQKLQkJCQlELTkxMDU4IEVSTEFOR0VOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTMyICAgKGhleCkJCUFMQ0FURUwgVEFJU0VMCi0wMDIwMzIgICAgIChiYXNlIDE2KQkJQUxDQVRFTCBUQUlTRUwKLQkJCQk0LCBNSU5HIFNIRU5HIFNUUkVFVCBUVS1DSEVORwotCQkJCUlORFVTVFJJQUwgRElTVFJJQ1QgVEFJUEVJIEhTSUVICi0JCQkJVEFJV0FOIFJPQwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtMzMgICAoaGV4KQkJU1lOQVBTRSBURUNITk9MT0dJRVMsIElOQy4KLTAwMjAzMyAgICAgKGJhc2UgMTYpCQlTWU5BUFNFIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTQ4MjIgQUxCRU1BUkxFIFJPQUQsICMxMDQKLQkJCQlDSEFSTE9UVEUgTkMgMjgyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTM0ICAgKGhleCkJCVJPVEVDIElORFVTVFJJRUFVVE9NQVRJT04gR01CSAotMDAyMDM0ICAgICAoYmFzZSAxNikJCVJPVEVDIElORFVTVFJJRUFVVE9NQVRJT04gR01CSAotCQkJCUdVVEVOQkVSR1NUUi4gMTUKLQkJCQk3NjQzNyBSQVNUQVRUCi0JCQkJR0VSTUFOWQotCi0wMC0yMC0zNSAgIChoZXgpCQlJQk0gQ29ycAotMDAyMDM1ICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAuTy4gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0zNiAgIChoZXgpCQlCTUMgU09GVFdBUkUKLTAwMjAzNiAgICAgKGJhc2UgMTYpCQlCTUMgU09GVFdBUkUKLQkJCQkxNjAwIENJVFkgV0VTVCBCTFZELiwgIzE2MDAKLQkJCQlIT1VTVE9OIFRYIDc3MDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0zNyAgIChoZXgpCQlTRUFHQVRFIFRFQ0hOT0xPR1kKLTAwMjAzNyAgICAgKGJhc2UgMTYpCQlTRUFHQVRFIFRFQ0hOT0xPR1kKLQkJCQk4MDAxIEUuIEJMT09NSU5HVE9OIEZXWQotCQkJCU0vUyAtIE1QUzA0MwotCQkJCUJMT09NSU5HVE9OIE1OIDU1NDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0zOCAgIChoZXgpCQlWTUUgTUlDUk9TWVNURU1TIElOVEVSTkFUSU9OQUwgQ09SUE9SQVRJT04KLTAwMjAzOCAgICAgKGJhc2UgMTYpCQlWTUUgTUlDUk9TWVNURU1TIElOVEVSTkFUSU9OQUwgQ09SUE9SQVRJT04KLQkJCQkxMjA5MCBTLiBNRU1PUklBTCBQQVJLV0FZCi0JCQkJSFVOVFNWSUxMRSBBTCAzNTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtMzkgICAoaGV4KQkJU0NJTkVUUwotMDAyMDM5ICAgICAoYmFzZSAxNikJCVNDSU5FVFMKLQkJCQkxNTc1IFRFTkFLQSAtIFNURSMgTjgKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTNBICAgKGhleCkJCURJR0lUQUwgQkkwTUVUUklDUyBJTkMuCi0wMDIwM0EgICAgIChiYXNlIDE2KQkJRElHSVRBTCBCSTBNRVRSSUNTIElOQy4KLQkJCQk1NjAwIFJPV0xBTkQgUk9BRC0gU1RFLiMyMDUKLQkJCQlNSU5ORVRPTktBIE1OIDU1MzY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0zQiAgIChoZXgpCQlXSVNETSBMVEQuCi0wMDIwM0IgICAgIChiYXNlIDE2KQkJV0lTRE0gTFRELgotCQkJCVNULiBKT0hOUyBJTk5PVkFUSU9OIENFTlRSRQotCQkJCUNPV0xFWSBST0FEIENBTUJSSURHRSAgQ0I0IDRXUwotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC0zQyAgIChoZXgpCQlFVVJPVElNRSBBQgotMDAyMDNDICAgICAoYmFzZSAxNikJCUVVUk9USU1FIEFCCi0JCQkJQk9YIDI3NwotCQkJCVMtNTMyMjQgU0tBUkEKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtMjAtM0QgICAoaGV4KQkJSG9uZXl3ZWxsIEVDQwotMDAyMDNEICAgICAoYmFzZSAxNikJCUhvbmV5d2VsbCBFQ0MKLQkJCQkxOTg1IERvdWdsYXMgRHJpdmUKLQkJCQlNTjEwLTEyMUEKLQkJCQlHb2xkZW4gVmFsbGV5IE1OIDU1NDIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC0zRSAgIChoZXgpCQlMb2dpQ2FuIFRlY2hub2xvZ2llcywgSW5jLgotMDAyMDNFICAgICAoYmFzZSAxNikJCUxvZ2lDYW4gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTUwIEtBUkwgQ0xBUksgUk9BRAotCQkJCUVETU9OVE9OLCBBTEJFUlRBIFQ2TiAxRTIgIAotCQkJCUNBTkFEQQotCi0wMC0yMC0zRiAgIChoZXgpCQlKVUtJIENPUlBPUkFUSU9OCi0wMDIwM0YgICAgIChiYXNlIDE2KQkJSlVLSSBDT1JQT1JBVElPTgotCQkJCTgtMi0xIEtPS1VSWU8tQ0hPCi0JCQkJQ0hPRlUtU0hJIFRPS1lPICAxODIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLTQwICAgKGhleCkJCU1vdG9yb2xhIEJyb2FkYmFuZCBDb21tdW5pY2F0aW9ucyBTZWN0b3IKLTAwMjA0MCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBCcm9hZGJhbmQgQ29tbXVuaWNhdGlvbnMgU2VjdG9yCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNDEgICAoaGV4KQkJREFUQSBORVQKLTAwMjA0MSAgICAgKGJhc2UgMTYpCQlEQVRBIE5FVAotCQkJCVNVV09OIFAuTy4gQk9YIDEwNiwgU1VXT04KLQkJCQlLWVVOR0dJLURPCi0JCQkJS09SRUEgNDQwLTYwMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMC00MiAgIChoZXgpCQlEQVRBTUVUUklDUyBDT1JQLgotMDAyMDQyICAgICAoYmFzZSAxNikJCURBVEFNRVRSSUNTIENPUlAuCi0JCQkJODk2NiBDT01BTkNIRSBBVkUuCi0JCQkJQ0hBVFNXT1JUSCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNDMgICAoaGV4KQkJTkVVUk9OIENPTVBBTlkgTElNSVRFRAotMDAyMDQzICAgICAoYmFzZSAxNikJCU5FVVJPTiBDT01QQU5ZIExJTUlURUQKLQkJCQkxNSBLV0FJIFlJIFJPQUQsICBCTE9DSyAyLAotCQkJCTIxU1QgRkxPT1IsIEZMQVQgQgotCQkJCUtXQUkgQ0hVTkcsICAgTi5ULiAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTIwLTQ0ICAgKGhleCkJCUdFTklURUNIIFBUWSBMVEQKLTAwMjA0NCAgICAgKGJhc2UgMTYpCQlHRU5JVEVDSCBQVFkgTFRECi0JCQkJUC5PLiBCT1ggMTk2Ci0JCQkJQVNRVUlUSCBOU1cgMjA3NwotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC0yMC00NSAgIChoZXgpCQlJT04gTmV0d29ya3MsIEluYy4KLTAwMjA0NSAgICAgKGJhc2UgMTYpCQlJT04gTmV0d29ya3MsIEluYy4KLQkJCQkxNTUxIFNvdXRoIFdhc2hpbmd0b24gQXZlLgotCQkJCVBpc2NhdGF3YXkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTQ2ICAgKGhleCkJCUNJUFJJQ08sIElOQy4KLTAwMjA0NiAgICAgKGJhc2UgMTYpCQlDSVBSSUNPLCBJTkMuCi0JCQkJMjgwMCBDQU1QVVMgRFJJVkUtLVNVSVRFICM2MAotCQkJCVBMWU1PVVRIIE1OIDU1NDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC00NyAgIChoZXgpCQlTVEVJTkJSRUNIRVIgQ09SUC4KLTAwMjA0NyAgICAgKGJhc2UgMTYpCQlTVEVJTkJSRUNIRVIgQ09SUC4KLQkJCQkzMCBOT1JUSCBBVkVOVUUKLQkJCQlCVVJMSU5HVE9OIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC00OCAgIChoZXgpCQlNYXJjb25pIENvbW11bmljYXRpb25zCi0wMDIwNDggICAgIChiYXNlIDE2KQkJTWFyY29uaSBDb21tdW5pY2F0aW9ucwotCQkJCTEwMDAgRm9yZSBEcml2ZQotCQkJCVdhcnJlbmRhbGUgUEEgMTUwODYtNzUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNDkgICAoaGV4KQkJQ09NVFJPTiwgSU5DLgotMDAyMDQ5ICAgICAoYmFzZSAxNikJCUNPTVRST04sIElOQy4KLQkJCQlTQU5DQVRIRVJJTkEgQkxERy4KLQkJCQkzNi0xMiBTSElOSlVLVSAxLUNIT01FIFNISU5KVUtVLUtVCi0JCQkJVE9LWU8gMTYwIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMjAtNEEgICAoaGV4KQkJUFJPTkVUIEdNQkgKLTAwMjA0QSAgICAgKGJhc2UgMTYpCQlQUk9ORVQgR01CSAotCQkJCUtBUkxTVFJBU1NFIDQ5Ci0JCQkJRC03ODA1IEYgVklMTElOR0VOLVNDSFdFTk5JTkdFTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTRCICAgKGhleCkJCUFVVE9DT01QVVRFUiBDTy4sIExURC4KLTAwMjA0QiAgICAgKGJhc2UgMTYpCQlBVVRPQ09NUFVURVIgQ08uLCBMVEQuCi0JCQkJTk8uIDE4LCBQRUkgWVVBTiBST0FECi0JCQkJQ0hVTkctTEkgQ0lUWSwgVEFPLVlVQU4gSFNJRU4KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtNEMgICAoaGV4KQkJTUlUUk9OIENPTVBVVEVSIFBURSBMVEQuCi0wMDIwNEMgICAgIChiYXNlIDE2KQkJTUlUUk9OIENPTVBVVEVSIFBURSBMVEQuCi0JCQkJMTAyMCBIT1VHQU5HIEFWRU5VRSAxICMwMy0zNTA0Ci0JCQkJU0lOR0FQT1JFIDE5NTMKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjAtNEQgICAoaGV4KQkJSU5PVklTIEdNQkgKLTAwMjA0RCAgICAgKGJhc2UgMTYpCQlJTk9WSVMgR01CSAotCQkJCUhBTk5TLUJSQVVOIFNUUkFTU0UgNTAKLQkJCQk4NTM3NSBORVVGQUhSTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTRFICAgKGhleCkJCU5FVFdPUksgU0VDVVJJVFkgU1lTVEVNUywgSU5DLgotMDAyMDRFICAgICAoYmFzZSAxNikJCU5FVFdPUksgU0VDVVJJVFkgU1lTVEVNUywgSU5DLgotCQkJCTk0MDEgV0FQTEVTIFNUUkVFVCxTVEUuICMxMDAKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTRGICAgKGhleCkJCURFVVRTQ0hFIEFFUk9TUEFDRSBBRwotMDAyMDRGICAgICAoYmFzZSAxNikJCURFVVRTQ0hFIEFFUk9TUEFDRSBBRwotCQkJCUdFU0NIQUVGVFNGRUxECi0JCQkJVkVSVEVJRElHVU5HIFVORCBaSVZJTEUgU1lTVEVNIDgxNjYzIE1VRQotCQkJCUJVTkRFU1JFUFVCTElLIERFVVRTQ0hMQU5ECi0JCQkJR0VSTUFOWQotCi0wMC0yMC01MCAgIChoZXgpCQlLT1JFQSBDT01QVVRFUiBJTkMuCi0wMDIwNTAgICAgIChiYXNlIDE2KQkJS09SRUEgQ09NUFVURVIgSU5DLgotCQkJCTQ2OSwgREFFSEVVTkctRE9ORwotCQkJCU1BUE8tR1UsIFNFT1VMCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjAtNTEgICAoaGV4KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLTAwMjA1MSAgICAgKGJhc2UgMTYpCQlWZXJpbGluayBDb3Jwb3JhdGlvbgotCQkJCTEyNyBKZXRwbGV4IENpcmNsZQotCQkJCU1hZGlzb24gQUwgMzU3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTUyICAgKGhleCkJCVJBR1VMQSBTWVNURU1TCi0wMDIwNTIgICAgIChiYXNlIDE2KQkJUkFHVUxBIFNZU1RFTVMKLQkJCQk0NTQwIFMuIEpVUElURVIgRFJJVkUKLQkJCQlTQUxUIExBS0UgQ0lUWSBVVCA4NDEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNTMgICAoaGV4KQkJSFVOVFNWSUxMRSBNSUNST1NZU1RFTVMsIElOQy4KLTAwMjA1MyAgICAgKGJhc2UgMTYpCQlIVU5UU1ZJTExFIE1JQ1JPU1lTVEVNUywgSU5DLgotCQkJCVAuTy4gQk9YIDEyNDE1Ci0JCQkJSFVOVFNWSUxMRSBBTCAzNTgxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNTQgICAoaGV4KQkJU3ljYW1vcmUgTmV0d29ya3MKLTAwMjA1NCAgICAgKGJhc2UgMTYpCQlTeWNhbW9yZSBOZXR3b3JrcwotCQkJCTIyMCBNaWxsIFJkCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNTUgICAoaGV4KQkJQUxURUNIIENPLiwgTFRELgotMDAyMDU1ICAgICAoYmFzZSAxNikJCUFMVEVDSCBDTy4sIExURC4KLQkJCQlPSElTSEkgQkxERy4sIDItMjMtMTEKLQkJCQlOSVNISS1OSVBQT1JJLCBBUkFLQVdBLUtVCi0JCQkJIFRPS1lPIDExNiAgCi0JCQkJSkFQQU4KLQotMDAtMjAtNTYgICAoaGV4KQkJTkVPUFJPRFVDVFMKLTAwMjA1NiAgICAgKGJhc2UgMTYpCQlORU9QUk9EVUNUUwotCQkJCTI1IENIQVBNQU4gU1RSRUVUCi0JCQkJQkxBQ0tCVVJOIE5PUlRIIFZJQ1RPUklBIDMxMzAKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjAtNTcgICAoaGV4KQkJVElUWkUgREFURU5URUNITklLIEdtYkgKLTAwMjA1NyAgICAgKGJhc2UgMTYpCQlUSVRaRSBEQVRFTlRFQ0hOSUsgR21iSAotCQkJCURJRVNFTFNUUkFTU0UgMTAKLQkJCQlEUy03MTI3MiBSRU5OSU5HRU4tMiAgCi0JCQkJR0VSTUFOWQotCi0wMC0yMC01OCAgIChoZXgpCQlBTExJRUQgU0lHTkFMIElOQy4KLTAwMjA1OCAgICAgKGJhc2UgMTYpCQlBTExJRUQgU0lHTkFMIElOQy4KLQkJCQlST1VURSA0NgotCQkJCVRFVEVSQk9STyBOSiAwNzYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNTkgICAoaGV4KQkJTUlSTyBDT01QVVRFUiBQUk9EVUNUUyBBRwotMDAyMDU5ICAgICAoYmFzZSAxNikJCU1JUk8gQ09NUFVURVIgUFJPRFVDVFMgQUcKLQkJCQlDQVJMIE1JRUxFIFNUUi4gNAotCQkJCUQtMzgxMTIgQlJBVU5TQ0hXRUlHICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTVBICAgKGhleCkJCUNPTVBVVEVSIElERU5USUNTCi0wMDIwNUEgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgSURFTlRJQ1MKLQkJCQk1IFNIQVdNVVQgUk9BRAotCQkJCUNBTlRPTiBNQSAwMjAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNUIgICAoaGV4KQkJS2VudHJveCwgTExDCi0wMDIwNUIgICAgIChiYXNlIDE2KQkJS2VudHJveCwgTExDCi0JCQkJMjAwMTAgTlcgVGFuYXNib3VybmUgRHIuCi0JCQkJSGlsbHNib3JvIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC01QyAgIChoZXgpCQlJbnRlck5ldCBTeXN0ZW1zIG9mIEZsb3JpZGEsIEluYy4KLTAwMjA1QyAgICAgKGJhc2UgMTYpCQlJbnRlck5ldCBTeXN0ZW1zIG9mIEZsb3JpZGEsIEluYy4KLQkJCQlQLk8uIEJPWCA1NzgKLQkJCQlDUkVTVFZJRVcgRkwgMzI1MzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTVEICAgKGhleCkJCU5BTk9NQVRJQyBPWQotMDAyMDVEICAgICAoYmFzZSAxNikJCU5BTk9NQVRJQyBPWQotCQkJCVBVSVNUT0xBTiBSQUlUVEkgNAotCQkJCTAwNzYwIEhFTFNJTktJCi0JCQkJRklOTEFORAotCQkJCUZJTkxBTkQKLQotMDAtMjAtNUUgICAoaGV4KQkJQ0FTVExFIFJPQ0ssIElOQy4KLTAwMjA1RSAgICAgKGJhc2UgMTYpCQlDQVNUTEUgUk9DSywgSU5DLgotCQkJCTIwIFNPVVRIIFNBTlRBIENSVVogQVZFLgotCQkJCVNVSVRFICMzMTAKLQkJCQlMT1MgR0FUT1MgQ0EgOTUwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTVGICAgKGhleCkJCUdBTU1BREFUQSBDT01QVVRFUiBHTUJICi0wMDIwNUYgICAgIChiYXNlIDE2KQkJR0FNTUFEQVRBIENPTVBVVEVSIEdNQkgKLQkJCQlHVVRFTkJFUkdTVFIuIDEzCi0JCQkJODIxNjggUFVDSEhFSU0KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0yMC02MCAgIChoZXgpCQlBTENBVEVMIElUQUxJQSBTLnAuQS4KLTAwMjA2MCAgICAgKGJhc2UgMTYpCQlBTENBVEVMIElUQUxJQSBTLnAuQS4KLQkJCQlWSUEgVFJFTlRPLCAzMAotCQkJCTIwMDU5IFZJTUVSQ0FURSAoTUkpICAKLQkJCQlJVEFMWQotCi0wMC0yMC02MSAgIChoZXgpCQlHYXJyZXR0Q29tLCBJbmMuCi0wMDIwNjEgICAgIChiYXNlIDE2KQkJR2FycmV0dENvbSwgSW5jLgotCQkJCTQ3ODIzIFdlc3Rpbmdob3VzZSBEci4KLQkJCQlGcmVtb250IENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC02MiAgIChoZXgpCQlTQ09SUElPTiBMT0dJQywgTFRELgotMDAyMDYyICAgICAoYmFzZSAxNikJCVNDT1JQSU9OIExPR0lDLCBMVEQuCi0JCQkJMTkgQlJPT0tTSURFIFJPQUQKLQkJCQlPWEhFWSwgV0FURk9SRAotCQkJCUhFUlRTIFdEMSA0QlcgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIwLTYzICAgKGhleCkJCVdJUFJPIElORk9URUNIIExURC4KLTAwMjA2MyAgICAgKGJhc2UgMTYpCQlXSVBSTyBJTkZPVEVDSCBMVEQuCi0JCQkJVU5JVFMgNDctNDgsIFNERiBCTE9DSyBWSUkKLQkJCQlNRVBaLCBLQURBUFBFUkkgTUFEUkFTLTYwMDA0NQotCQkJCUlORElBCi0KLTAwLTIwLTY0ICAgKGhleCkJCVBST1RFQyBNSUNST1NZU1RFTVMsIElOQy4KLTAwMjA2NCAgICAgKGJhc2UgMTYpCQlQUk9URUMgTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJMjk3IExBQlJPU1NFCi0JCQkJUE9JTlRFLUNMQUlSRSwgUVVFQkVDIEg5UiAxQTMgIAotCQkJCUNBTkFEQQotCi0wMC0yMC02NSAgIChoZXgpCQlTVVBFUk5FVCBORVRXT1JLSU5HIElOQy4KLTAwMjA2NSAgICAgKGJhc2UgMTYpCQlTVVBFUk5FVCBORVRXT1JLSU5HIElOQy4KLQkJCQkxNiBUT1pFUkVUIEhBJ0FSRVRaIFNULgotCQkJCVRFTC1BVklWIDY3ODkxICAKLQkJCQlJU1JBRUwKLQotMDAtMjAtNjYgICAoaGV4KQkJR0VORVJBTCBNQUdJQywgSU5DLgotMDAyMDY2ICAgICAoYmFzZSAxNikJCUdFTkVSQUwgTUFHSUMsIElOQy4KLQkJCQkyNDY1IExBVEhBTSBTVFJFRVQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC02NyAgIChoZXgpCQlQUklWQVRFCi0wMDIwNjcgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTIwLTY4ICAgKGhleCkJCUlTRFlORQotMDAyMDY4ICAgICAoYmFzZSAxNikJCUlTRFlORQotCQkJCTExIFJPWEJVUlkgQVZFTlVFCi0JCQkJTkFUSUNLIE1BIDAxNzYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC02OSAgIChoZXgpCQlJU0ROIFNZU1RFTVMgQ09SUE9SQVRJT04KLTAwMjA2OSAgICAgKGJhc2UgMTYpCQlJU0ROIFNZU1RFTVMgQ09SUE9SQVRJT04KLQkJCQk4MzIwIE9MRCBDT1VSVEhPVVNFIFJELgotCQkJCVNVSVRFICMyMDMKLQkJCQlWSUVOTkEgVkEgMjIxODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTZBICAgKGhleCkJCU9TQUtBIENPTVBVVEVSIENPUlAuCi0wMDIwNkEgICAgIChiYXNlIDE2KQkJT1NBS0EgQ09NUFVURVIgQ09SUC4KLQkJCQkyLTggS09ZQUNIT1UgTkVZQUdBVy1TSEkKLQkJCQlPU0FLQSA1NzIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLTZCICAgKGhleCkJCUtPTklDQSBNSU5PTFRBIEhPTERJTkdTLCBJTkMuCi0wMDIwNkIgICAgIChiYXNlIDE2KQkJS09OSUNBIE1JTk9MVEEgSE9MRElOR1MsIElOQy4KLQkJCQkxLTYtMSwgTWFydW5vdWNoaSwKLQkJCQlDaGl5b2RhLWt1Ci0JCQkJVG9reW8gIDEwMC0wMDA1Ci0JCQkJSkFQQU4KLQotMDAtMjAtNkMgICAoaGV4KQkJRVZFUkdSRUVOIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMjA2QyAgICAgKGJhc2UgMTYpCQlFVkVSR1JFRU4gVEVDSE5PTE9HWSBDT1JQLgotCQkJCTIzMSBFTUVSU09OIFNUUkVFVAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNkQgICAoaGV4KQkJREFUQSBSQUNFLCBJTkMuCi0wMDIwNkQgICAgIChiYXNlIDE2KQkJREFUQSBSQUNFLCBJTkMuCi0JCQkJMTE1NTAgSUgtMTBXRVNUICBTVEUjMzk1Ci0JCQkJU0FOIEFOVE9OSU8gVFggNzgyMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTZFICAgKGhleCkJCVhBQ1QsIElOQy4KLTAwMjA2RSAgICAgKGJhc2UgMTYpCQlYQUNULCBJTkMuCi0JCQkJUC5PLiBCT1ggNTUKLQkJCQlBUkdZTEUgVFggNzYyMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTZGICAgKGhleCkJCUZMT1dQT0lOVCBDT1JQT1JBVElPTgotMDAyMDZGICAgICAoYmFzZSAxNikJCUZMT1dQT0lOVCBDT1JQT1JBVElPTgotCQkJCTcyOTEgQ09ST05BRE8gRFJJVkUsIFNURSMgNAotCQkJCVNBTiBKT1NFIENBIDk1MTI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC03MCAgIChoZXgpCQlIWU5FVCwgTFRELgotMDAyMDcwICAgICAoYmFzZSAxNikJCUhZTkVULCBMVEQuCi0JCQkJMTAyIEpBQk9USU5TS1kgU1QuCi0JCQkJUE8gQk9YIDM2MzgKLQkJCQlQRVRBQ0ggVElLVkEgNDkxMzAgIAotCQkJCUlTUkFFTAotCi0wMC0yMC03MSAgIChoZXgpCQlJQlIgR01CSAotMDAyMDcxICAgICAoYmFzZSAxNikJCUlCUiBHTUJICi0JCQkJS09ITEVSU1RSLiA0NQotCQkJCUQtNDYyODYgRE9SU1RFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC0yMC03MiAgIChoZXgpCQlXT1JLTElOSyBJTk5PVkFUSU9OUwotMDAyMDcyICAgICAoYmFzZSAxNikJCVdPUktMSU5LIElOTk9WQVRJT05TCi0JCQkJMjQ1MiBBUk1TVFJPTkcgU1RSRUVUCi0JCQkJTElWRVJNT1JFIENBIDk0NTVPCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC03MyAgIChoZXgpCQlGVVNJT04gU1lTVEVNUyBDT1JQT1JBVElPTgotMDAyMDczICAgICAoYmFzZSAxNikJCUZVU0lPTiBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJNzYwMCBTVEFORElTSCBQTEFDRQotCQkJCVJPQ0tWSUxMRSBNRCAyMDg1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtNzQgICAoaGV4KQkJU1VOR1dPT04gU1lTVEVNUwotMDAyMDc0ICAgICAoYmFzZSAxNikJCVNVTkdXT09OIFNZU1RFTVMKLQkJCQlZVVNVTiBCTERHLjQ0LTQKLQkJCQlTQU1TVU5HLURPTkcgS0FOR05BTS1LVSwgU0VPVUwgMTM1LTA5MAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIwLTc1ICAgKGhleCkJCU1PVE9ST0xBIENPTU1VTklDQVRJT04gSVNSQUVMCi0wMDIwNzUgICAgIChiYXNlIDE2KQkJTU9UT1JPTEEgQ09NTVVOSUNBVElPTiBJU1JBRUwKLQkJCQkzIEtSRU1FTkVUU0tJIFNUUkVFVAotCQkJCVBPQiAyNTAxNgotCQkJCVRFTC1BVklWICA2MTI1MCAgCi0JCQkJSVNSQUVMCi0KLTAwLTIwLTc2ICAgKGhleCkJCVJFVURPIENPUlBPUkFUSU9OCi0wMDIwNzYgICAgIChiYXNlIDE2KQkJUkVVRE8gQ09SUE9SQVRJT04KLQkJCQk0LTEtMTAgU0hJTlNBTgotCQkJCU5BR0FPS0EgQ0lUWSwgTklJR0FUQSA5NDAtMjEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTIwLTc3ICAgKGhleCkJCUtBUkRJT1MgU1lTVEVNUyBDT1JQLgotMDAyMDc3ICAgICAoYmFzZSAxNikJCUtBUkRJT1MgU1lTVEVNUyBDT1JQLgotCQkJCTI2IE4gU1VNTUlUIEFWRS4KLQkJCQlHQUlUSEVSU0JVUkcgTUQgMjA4NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTc4ICAgKGhleCkJCVJVTlRPUCwgSU5DLgotMDAyMDc4ICAgICAoYmFzZSAxNikJCVJVTlRPUCwgSU5DLgotCQkJCTUvRiwgTk8uIDEwLCBBTExFWSA4LCBMQU5FIDQ1Ci0JCQkJUEFPIFNISU4gUk9BRCwgSFNJTlRJRU4gVEFJUEVJIEhTSUVOCi0JCQkJVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtNzkgICAoaGV4KQkJTUlLUk9OIEdNQkgKLTAwMjA3OSAgICAgKGJhc2UgMTYpCQlNSUtST04gR01CSAotCQkJCUJSRVNMQVVFUlNUUi4gMS0zCi0JCQkJODUzODYgRUNISU5HICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTdBICAgKGhleCkJCVdpU0UgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMjA3QSAgICAgKGJhc2UgMTYpCQlXaVNFIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMTMwIEtOT1dMRVMgRFJJVkUKLQkJCQlMT1MgR0FUT1MgQ0EgOTUwMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTdCICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi0wMDIwN0IgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQkyMTExIE5FIDI1dGggQXZlbnVlCi0JCQkJSkYzLTQyMAotCQkJCUhpbGxzYm9ybyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtN0MgICAoaGV4KQkJQVVURUMgR21iSAotMDAyMDdDICAgICAoYmFzZSAxNikJCUFVVEVDIEdtYkgKLQkJCQlCQUhOSE9GU1RSLiA1NwotCQkJCTU1MjM0IEZSQU1FUlNIRUlNICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTdEICAgKGhleCkJCUFEVkFOQ0VEIENPTVBVVEVSIEFQUExJQ0FUSU9OUwotMDAyMDdEICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIENPTVBVVEVSIEFQUExJQ0FUSU9OUwotCQkJCTEwNyBQRU5OUyBUUkFJTAotCQkJCU5FV1RPV04gUEEgMTg5NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTdFICAgKGhleCkJCUZJTkVDT00gQ28uLCBMdGQuCi0wMDIwN0UgICAgIChiYXNlIDE2KQkJRklORUNPTSBDby4sIEx0ZC4KLQkJCQkxMTA4IEhXQUtPSy1ET05HLCBLQU5HU0VPLUtVCi0JCQkJU0VPVUwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMC03RiAgIChoZXgpCQlLWU9FSSBTQU5HWU8gQ08uLCBMVEQuCi0wMDIwN0YgICAgIChiYXNlIDE2KQkJS1lPRUkgU0FOR1lPIENPLiwgTFRELgotCQkJCURJUi4gJiBHRU4nTCBNR1IuSU5ELiBTWVNURU1TCi0JCQkJMjAtNCwgU0hPVE8gMi1DSE9NRSBTSElCVVlBLUtVCi0JCQkJVE9LWU8KLQkJCQlKQVBBTgotCi0wMC0yMC04MCAgIChoZXgpCQlTWU5FUkdZIChVSykgTFRELgotMDAyMDgwICAgICAoYmFzZSAxNikJCVNZTkVSR1kgKFVLKSBMVEQuCi0JCQkJSEFSVENSQU4gSE9VU0UKLQkJCQlDQVJQRU5ERVJTIFBBUkssCi0JCQkJV0FURk9SRCBIRVJUUy4gIFdEMSA1RVogIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIwLTgxICAgKGhleCkJCVRJVEFOIEVMRUNUUk9OSUNTCi0wMDIwODEgICAgIChiYXNlIDE2KQkJVElUQU4gRUxFQ1RST05JQ1MKLQkJCQkzMDMzIFNDSUVOQ0UgUEFSSyBST0FECi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC04MiAgIChoZXgpCQlPTkVBQyBDT1JQT1JBVElPTgotMDAyMDgyICAgICAoYmFzZSAxNikJCU9ORUFDIENPUlBPUkFUSU9OCi0JCQkJMjc5NDQgTi4gQlJBRExFWSBSRC4KLQkJCQlMSUJFUlRZVklMTEUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTgzICAgKGhleCkJCVBSRVNUSUNPTSBJTkNPUlBPUkFURUQKLTAwMjA4MyAgICAgKGJhc2UgMTYpCQlQUkVTVElDT00gSU5DT1JQT1JBVEVECi0JCQkJMzI3NSwgMVNUIFNUUkVFVCwgU1RFLiAjMQotCQkJCVNULUhVQkVSVCAoUVVFQkVDKQotCQkJCUNBTkFEQSBKM1kgOFk2Ci0JCQkJQ0FOQURBCi0KLTAwLTIwLTg0ICAgKGhleCkJCU9DRSBQUklOVElORyBTWVNURU1TLCBHTUJICi0wMDIwODQgICAgIChiYXNlIDE2KQkJT0NFIFBSSU5USU5HIFNZU1RFTVMsIEdNQkgKLQkJCQlTSUVNRU5TQUxMRUUgMgotCQkJCUQtODU1ODYgUE9JTkcKLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLTg1ICAgKGhleCkJCUVYSURFIEVMRUNUUk9OSUNTCi0wMDIwODUgICAgIChiYXNlIDE2KQkJRVhJREUgRUxFQ1RST05JQ1MKLQkJCQlQLk8uIEJPWCAgNTgxODkKLQkJCQlSQUxFSUdIIE5DIDI3NjU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC04NiAgIChoZXgpCQlNSUNST1RFQ0ggRUxFQ1RST05JQ1MgTElNSVRFRAotMDAyMDg2ICAgICAoYmFzZSAxNikJCU1JQ1JPVEVDSCBFTEVDVFJPTklDUyBMSU1JVEVECi0JCQkJTEFOQ0FTVEVSIFJPQUQKLQkJCQlDUkVTU0VYIElORFVTVFJJQUwgRVNUQVRFIEhJR0ggV1lDT01CRSwKLQkJCQlLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtODcgICAoaGV4KQkJTUVNT1RFQywgSU5DLgotMDAyMDg3ICAgICAoYmFzZSAxNikJCU1FTU9URUMsIElOQy4KLQkJCQk3NzU1IEhlbnJpLUJvdXJhc3NhCi0JCQkJTU9OVFJFQUwsIFFVRUJFQyAgIEg0UyAxUDcKLQkJCQlDQU5BREEKLQotMDAtMjAtODggICAoaGV4KQkJR0xPQkFMIFZJTExBR0UgQ09NTVVOSUNBVElPTgotMDAyMDg4ICAgICAoYmFzZSAxNikJCUdMT0JBTCBWSUxMQUdFIENPTU1VTklDQVRJT04KLQkJCQkxMTQ0IEVBU1QgQVJRVUVTIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtODkgICAoaGV4KQkJVDNQTFVTIE5FVFdPUktJTkcsIElOQy4KLTAwMjA4OSAgICAgKGJhc2UgMTYpCQlUM1BMVVMgTkVUV09SS0lORywgSU5DLgotCQkJCTI4NDAgU0FOIFRPTUFTIEVYUFJFU1NXQVkKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOEEgICAoaGV4KQkJU09OSVggQ09NTVVOSUNBVElPTlMsIExURC4KLTAwMjA4QSAgICAgKGJhc2UgMTYpCQlTT05JWCBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCVdJTEtJTlNPTiBST0FECi0JCQkJQ0lSRU5DRVNURVIsIEdMT1MuIEdMNyAxWVQKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtOEIgICAoaGV4KQkJTEFQSVMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIwOEIgICAgIChiYXNlIDE2KQkJTEFQSVMgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTEwMCBNQVJJTkEgVklMTEFHRSBQS1dZCi0JCQkJU1VJVEUgIzEwMAotCQkJCUFMQU1FREEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLThDICAgKGhleCkJCUdBTEFYWSBORVRXT1JLUywgSU5DLgotMDAyMDhDICAgICAoYmFzZSAxNikJCUdBTEFYWSBORVRXT1JLUywgSU5DLgotCQkJCTkzNDggREUgU09UTyBBVkVOVUUKLQkJCQlDSEFUU1dPUlRIIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC04RCAgIChoZXgpCQlDTUQgVEVDSE5PTE9HWQotMDAyMDhEICAgICAoYmFzZSAxNikJCUNNRCBURUNITk9MT0dZCi0JCQkJMSBWQU5ERVJCSUxUCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC04RSAgIChoZXgpCQlDSEVWSU4gU09GVFdBUkUgRU5HLiBMVEQuCi0wMDIwOEUgICAgIChiYXNlIDE2KQkJQ0hFVklOIFNPRlRXQVJFIEVORy4gTFRELgotCQkJCTIgQk9ST1VHSEdBVEUsIE9UTEVZLAotCQkJCUxFRURTLCBXRVNULCBZT1JLU0hJUkUKLQkJCQlMUzIxIDNBTCBVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIwLThGICAgKGhleCkJCUVDSSBURUxFQ09NIExURC4KLTAwMjA4RiAgICAgKGJhc2UgMTYpCQlFQ0kgVEVMRUNPTSBMVEQuCi0JCQkJSEFTSVZJTSBTVC4gMzAsCi0JCQkJUEVUQUNILVRJS1ZBIDQ5MTMzICAKLQkJCQlJU1JBRUwKLQotMDAtMjAtOTAgICAoaGV4KQkJQURWQU5DRUQgQ09NUFJFU1NJT04gVEVDSE5PTE9HWSwgSU5DLgotMDAyMDkwICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIENPTVBSRVNTSU9OIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk4MjAgRkxZTk4gUk9BRAotCQkJCUNBTUFSSUxMTyBDQSA5MzAxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOTEgICAoaGV4KQkJSjEyNSwgTkFUSU9OQUwgU0VDVVJJVFkgQUdFTkNZCi0wMDIwOTEgICAgIChiYXNlIDE2KQkJSjEyNSwgTkFUSU9OQUwgU0VDVVJJVFkgQUdFTkNZCi0JCQkJOTgwMCBTQVZBR0UgUk9BRAotCQkJCUZULiBNRUFERSBNRCAyMDc1NS02MDAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC05MiAgIChoZXgpCQlDSEVTUyBFTkdJTkVFUklORyBCLlYuCi0wMDIwOTIgICAgIChiYXNlIDE2KQkJQ0hFU1MgRU5HSU5FRVJJTkcgQi5WLgotCQkJCU5JRVVXRSBHUkFDSFQgNzQKLQkJCQkyMDExIE5KIEhBQVJMRU0KLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMC05MyAgIChoZXgpCQlMQU5ESU5HUyBURUNITk9MT0dZIENPUlAuCi0wMDIwOTMgICAgIChiYXNlIDE2KQkJTEFORElOR1MgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTE2MyBXQVRFUiBTVFJFRVQKLQkJCQlNRVJSSUxMIEJMT0NLIFVOSVQgQTIKLQkJCQlFWEVURVIgTkggMDM4MzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTk0ICAgKGhleCkJCUNVQklYIENPUlBPUkFUSU9OCi0wMDIwOTQgICAgIChiYXNlIDE2KQkJQ1VCSVggQ09SUE9SQVRJT04KLQkJCQkyODAwIExPQ0tIRUVEIFdBWQotCQkJCUNBUlNPTiBDSVRZIE5WIDg5NzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC05NSAgIChoZXgpCQlSSVZBIEVMRUNUUk9OSUNTCi0wMDIwOTUgICAgIChiYXNlIDE2KQkJUklWQSBFTEVDVFJPTklDUwotCQkJCVVOSVQgMTcsIEJBUlJTRk9MRCBSRC4KLQkJCQlXSU5HQVRFUyBJTkRVU1RSSUFMIFBBUksgV0VTVEhPVUdIVE9OLCBCCi0JCQkJTEFOQ0FTSElSRSBFTkdMQU5EIEJMNSAzWFcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC05NiAgIChoZXgpCQlJbnZlbnN5cwotMDAyMDk2ICAgICAoYmFzZSAxNikJCUludmVuc3lzCi0JCQkJMTM1NCBDbGlmZm9yZCBBdmVudWUKLQkJCQlMb3ZlcyBQYXJrIElMIDYxMTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC05NyAgIChoZXgpCQlBUFBMSUVEIFNJR05BTCBURUNITk9MT0dZCi0wMDIwOTcgICAgIChiYXNlIDE2KQkJQVBQTElFRCBTSUdOQUwgVEVDSE5PTE9HWQotCQkJCTE2MCBTT0JSQU5URSBXQVkKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTk4ICAgKGhleCkJCUhFQ1RST05JQyBBQgotMDAyMDk4ICAgICAoYmFzZSAxNikJCUhFQ1RST05JQyBBQgotCQkJCUJPWCAzMDAyCi0JCQkJUy03NTAwMyBVUFBTQUxBICAKLQkJCQlTV0VERU4KLQotMDAtMjAtOTkgICAoaGV4KQkJQk9OIEVMRUNUUklDIENPLiwgTFRELgotMDAyMDk5ICAgICAoYmFzZSAxNikJCUJPTiBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQk0LTQgMjgsIE1JWlVETy1DSE8KLQkJCQlBTUFHQVNBS0ksIDY2MQotCQkJCUhZT0dPIEhZT0dPIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMjAtOUEgICAoaGV4KQkJVEhFIDNETyBDT01QQU5ZCi0wMDIwOUEgICAgIChiYXNlIDE2KQkJVEhFIDNETyBDT01QQU5ZCi0JCQkJNjAwIEdBTFZFU1RPTiBEUklWRQotCQkJCVJFRFdPT0QgQ0lUWSBDQSA5NDA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtOUIgICAoaGV4KQkJRVJTQVQgRUxFQ1RST05JQyBHTUJICi0wMDIwOUIgICAgIChiYXNlIDE2KQkJRVJTQVQgRUxFQ1RST05JQyBHTUJICi0JCQkJSEFBUkJFUkdTVFIuIDYxCi0JCQkJRC05OTA5NyBFUkZVUlQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0yMC05QyAgIChoZXgpCQlQUklNQVJZIEFDQ0VTUyBDT1JQLgotMDAyMDlDICAgICAoYmFzZSAxNikJCVBSSU1BUlkgQUNDRVNTIENPUlAuCi0JCQkJMTAwODAgQ0FSUk9MTCBDQU5ZT04gUkQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLTlEICAgKGhleCkJCUxJUFBFUlQgQVVUT01BVElPTlNURUNITklLCi0wMDIwOUQgICAgIChiYXNlIDE2KQkJTElQUEVSVCBBVVRPTUFUSU9OU1RFQ0hOSUsKLQkJCQlELTY4MTY1IE1BTk5IRUlNCi0JCQkJS1JBUFBNVUVITFNUUi4gMzQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0yMC05RSAgIChoZXgpCQlCUk9XTidTIE9QRVJBVElORyBTWVNURU0gU0VSVklDRVMsIExURC4KLTAwMjA5RSAgICAgKGJhc2UgMTYpCQlCUk9XTidTIE9QRVJBVElORyBTWVNURU0gU0VSVklDRVMsIExURC4KLQkJCQlTVC4gQUdORVMgSE9VU0UsIENSRVNTV0VMTCBQSywKLQkJCQlCTEFDS0hFQVRILCBMb25kb24gU0UzIDlSRCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtOUYgICAoaGV4KQkJTUVSQ1VSWSBDT01QVVRFUiBTWVNURU1TLCBJTkMuCi0wMDIwOUYgICAgIChiYXNlIDE2KQkJTUVSQ1VSWSBDT01QVVRFUiBTWVNURU1TLCBJTkMuCi0JCQkJMTk5IFJJVkVSTkVDSyBST0FECi0JCQkJQ0hFTE1TRk9SRCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQTAgICAoaGV4KQkJT0EgTEFCT1JBVE9SWSBDTy4sIExURC4KLTAwMjBBMCAgICAgKGJhc2UgMTYpCQlPQSBMQUJPUkFUT1JZIENPLiwgTFRELgotCQkJCTIyOCBLQU1JTUFDSElZQSBLQU1BS1VSQQotCQkJCUtBTkFHQVdBIDI0NwotCQkJCUpBUEFOCi0KLTAwLTIwLUExICAgKGhleCkJCURPVkFUUk9OCi0wMDIwQTEgICAgIChiYXNlIDE2KQkJRE9WQVRST04KLQkJCQlQUk9EVUNUUyBESVZJU0lPTgotCQkJCTExOTggQk9TVE9OIEFWRU5VRQotCQkJCUxPTkdNT05UIENPIDgwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1BMiAgIChoZXgpCQlHQUxDT00gTkVUV09SS0lORyBMVEQuCi0wMDIwQTIgICAgIChiYXNlIDE2KQkJR0FMQ09NIE5FVFdPUktJTkcgTFRELgotCQkJCVAuTy4gQk9YIDE1NjgKLQkJCQlSQU1BVCBIQVNIQVJPTiA0NzExMyAgCi0JCQkJSVNSQUVMCi0KLTAwLTIwLUEzICAgKGhleCkJCURJVklDT00gSU5DLgotMDAyMEEzICAgICAoYmFzZSAxNikJCURJVklDT00gSU5DLgotCQkJCTU4MCBDT1RUT05XT09EIERSSVZFCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUE0ICAgKGhleCkJCU1VTFRJUE9JTlQgTkVUV09SS1MKLTAwMjBBNCAgICAgKGJhc2UgMTYpCQlNVUxUSVBPSU5UIE5FVFdPUktTCi0JCQkJMTkgREFWSVMgRFJJVkUKLQkJCQlCRUxNT05UIENBIDk0MDAyLTMwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUE1ICAgKGhleCkJCUFQSSBFTkdJTkVFUklORwotMDAyMEE1ICAgICAoYmFzZSAxNikJCUFQSSBFTkdJTkVFUklORwotCQkJCTI2ODkgUE9QTEFSV09PRCBXQVkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQTYgICAoaGV4KQkJUHJveGltIFdpcmVsZXNzCi0wMDIwQTYgICAgIChiYXNlIDE2KQkJUHJveGltIFdpcmVsZXNzCi0JCQkJMTU2MSBCdWNrZXllIERyaXZlCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUE3ICAgKGhleCkJCVBBSVJHQUlOIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAyMEE3ICAgICAoYmFzZSAxNikJCVBBSVJHQUlOIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTE0NDAyIEZSQU5LTElOIEFWRU5VRQotCQkJCVRVU1RJTiBDQSA5MjY4MC03MDEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1BOCAgIChoZXgpCQlTQVNUIFRFQ0hOT0xPR1kgQ09SUC4KLTAwMjBBOCAgICAgKGJhc2UgMTYpCQlTQVNUIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkyMjUgT0xEIE5FVyBCUlVOU1dJQ0sgUkQuCi0JCQkJU1VJVEUgIzEwMQotCQkJCVBJU0NBVEFXQVkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUE5ICAgKGhleCkJCVdISVRFIEhPUlNFIElORFVTVFJJQUwKLTAwMjBBOSAgICAgKGJhc2UgMTYpCQlXSElURSBIT1JTRSBJTkRVU1RSSUFMCi0JCQkJNEYuIE5PLjE2LCBBTExFWSA1NiwgTEFORSAxODEKLQkJCQlTRUMuNCwgQ0hVTkcgSFNJQU8gRUFTVCBST0FEIFRBSVBFSQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjAtQUEgICAoaGV4KQkJRElHSU1FRElBIFZJU0lPTiBMVEQuCi0wMDIwQUEgICAgIChiYXNlIDE2KQkJRElHSU1FRElBIFZJU0lPTiBMVEQuCi0JCQkJQ1JBV0xFWSBDT1VSVAotCQkJCVdJTkNIRVNURVIsIEhBTVBTSElSRQotCQkJCVNPMjEgMlFBIFVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtQUIgICAoaGV4KQkJTUlDUk8gSU5EVVNUUklFUyBDT1JQLgotMDAyMEFCICAgICAoYmFzZSAxNikJCU1JQ1JPIElORFVTVFJJRVMgQ09SUC4KLQkJCQk4Mzk5IEdSRUVOIE1FQURPV1MgRFIuIE4uCi0JCQkJV0VTVEVSVklMTEUgT0ggNDMwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUFDICAgKGhleCkJCUlOVEVSRkxFWCBEQVRFTlNZU1RFTUUgR01CSAotMDAyMEFDICAgICAoYmFzZSAxNikJCUlOVEVSRkxFWCBEQVRFTlNZU1RFTUUgR01CSAotCQkJCUdST0JXSUVTRU5TVFJBU0UgMjQKLQkJCQlXLTcyMDEgRFVSQ0hIQVVTRU4KLQkJCQlXRVNUR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMjAtQUQgICAoaGV4KQkJTElOUSBTWVNURU1TCi0wMDIwQUQgICAgIChiYXNlIDE2KQkJTElOUSBTWVNURU1TCi0JCQkJUC5PLiBCT1ggMTEwNDAKLQkJCQlUVUNTT04gQVogODU3MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUFFICAgKGhleCkJCU9STkVUIERBVEEgQ09NTVVOSUNBVElPTiBURUNILgotMDAyMEFFICAgICAoYmFzZSAxNikJCU9STkVUIERBVEEgQ09NTVVOSUNBVElPTiBURUNILgotCQkJCVAuTy4gQk9YIDMyMwotCQkJCUNBUk1JRUwgIDIwMTAwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTIwLUFGICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwMjBBRiAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCQVlGUk9OVCBQTEFaQQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1CMCAgIChoZXgpCQlHQVRFV0FZIERFVklDRVMsIElOQy4KLTAwMjBCMCAgICAgKGJhc2UgMTYpCQlHQVRFV0FZIERFVklDRVMsIElOQy4KLQkJCQkyNDQwIFNUQU5XRUxMIERSSVZFCi0JCQkJQ09OQ09SRCBDQSA5NDUyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQjEgICAoaGV4KQkJQ09NVEVDSCBSRVNFQVJDSCBJTkMuCi0wMDIwQjEgICAgIChiYXNlIDE2KQkJQ09NVEVDSCBSRVNFQVJDSCBJTkMuCi0JCQkJMjQyNzEgVEFIT0UKLQkJCQlMQUdVTkEgTklHVUVMIENBIDkyNjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1CMiAgIChoZXgpCQlHS0QgR2VzZWxsc2NoYWZ0IEZ1ciBLb21tdW5pa2F0aW9uIFVuZCBEYXRlbnRlY2huaWsKLTAwMjBCMiAgICAgKGJhc2UgMTYpCQlHS0QgR2VzZWxsc2NoYWZ0IEZ1ciBLb21tdW5pa2F0aW9uIFVuZCBEYXRlbnRlY2huaWsKLQkJCQkKLQkJCQlTQUFSQlVSR0VSIFJJTkcgMTAtMTIKLQkJCQk2ODIyOSBNQU5OSEVJTSAgCi0JCQkJR0VSTUFOWQotCi0wMC0yMC1CMyAgIChoZXgpCQlUYXR0aWxlIFNSTCAKLTAwMjBCMyAgICAgKGJhc2UgMTYpCQlUYXR0aWxlIFNSTCAKLQkJCQkzIEFQT0xMTyBQTEFDRQotCQkJCUxBTkUgQ09WRSBOLlMuVy4gMjA2NgotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC0yMC1CNCAgIChoZXgpCQlURVJNQSBFTEVLVFJPTklLIEFTCi0wMDIwQjQgICAgIChiYXNlIDE2KQkJVEVSTUEgRUxFS1RST05JSyBBUwotCQkJCUhPVk1BUktFTiA0LAotCQkJCURLLTg1MjAgTFlTVFJVUCAgCi0JCQkJREVOTUFSSwotCi0wMC0yMC1CNSAgIChoZXgpCQlZQVNLQVdBIEVMRUNUUklDIENPUlBPUkFUSU9OCi0wMDIwQjUgICAgIChiYXNlIDE2KQkJWUFTS0FXQSBFTEVDVFJJQyBDT1JQT1JBVElPTgotCQkJCTItMSBLVVJPU0FLSS1TSElST0lTSEkKLQkJCQlZQUhBVEFOSVNISS1LVSBLSVRBS1lVU0hVLUNJVFkKLQkJCQlKQVBBTgotCi0wMC0yMC1CNiAgIChoZXgpCQlBR0lMRSBORVRXT1JLUywgSU5DLgotMDAyMEI2ICAgICAoYmFzZSAxNikJCUFHSUxFIE5FVFdPUktTLCBJTkMuCi0JCQkJMjAwIEJBS0VSIEFWRU5VRQotCQkJCUNPTkNPUkQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUI3ICAgKGhleCkJCU5BTUFRVUEgQ09NUFVURVJXQVJFCi0wMDIwQjcgICAgIChiYXNlIDE2KQkJTkFNQVFVQSBDT01QVVRFUldBUkUKLQkJCQlQLk8uIEJPWCA3MTU1Ci0JCQkJU1RFTExFTiBCT1NDSCA3NTk5Ci0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTIwLUI4ICAgKGhleCkJCVBSSU1FIE9QVElPTiwgSU5DLgotMDAyMEI4ICAgICAoYmFzZSAxNikJCVBSSU1FIE9QVElPTiwgSU5DLgotCQkJCTIzNDEgVy4gMjA1VEggU1RSRUVUICMxMTYKLQkJCQlUT1JSQU5DRSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQjkgICAoaGV4KQkJTUVUUklDT00sIElOQy4KLTAwMjBCOSAgICAgKGJhc2UgMTYpCQlNRVRSSUNPTSwgSU5DLgotCQkJCTk4MCBVTklWRVJTSVRZIEFWRU5VRQotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQkEgICAoaGV4KQkJQ0VOVEVSIEZPUiBISUdIIFBFUkZPUk1BTkNFCi0wMDIwQkEgICAgIChiYXNlIDE2KQkJQ0VOVEVSIEZPUiBISUdIIFBFUkZPUk1BTkNFCi0JCQkJQ09NUFVUSU5HIE9GIFdQSQotCQkJCVNVSVRFICMxNzAgMjkzIEJPU1RPTiBQT1NUIFJPQUQgVy4KLQkJCQlNQVJMQk9STyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQkIgICAoaGV4KQkJWkFYIENPUlBPUkFUSU9OCi0wMDIwQkIgICAgIChiYXNlIDE2KQkJWkFYIENPUlBPUkFUSU9OCi0JCQkJMjAtMTIgT0dJS1VCTyA1LUNIT01FCi0JCQkJU1VHSU5BTUktS1UgVE9LWU8KLQkJCQkxNjcgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC0yMC1CQyAgIChoZXgpCQlMb25nIFJlYWNoIE5ldHdvcmtzIFB0eSBMdGQKLTAwMjBCQyAgICAgKGJhc2UgMTYpCQlMb25nIFJlYWNoIE5ldHdvcmtzIFB0eSBMdGQKLQkJCQlVbml0IDMsIDExOC0xMjIgQm93ZGVuIFN0Ci0JCQkJTUVBRE9XQkFOSyBOU1cgMjExNCAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLUJEICAgKGhleCkJCU5JT0JSQVJBIFIgJiBEIENPUlBPUkFUSU9OCi0wMDIwQkQgICAgIChiYXNlIDE2KQkJTklPQlJBUkEgUiAmIEQgQ09SUE9SQVRJT04KLQkJCQlQTyBCT1ggMzQxOAotCQkJCUpPUExJTiBNTyA2NDgwMy0zNDE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1CRSAgIChoZXgpCQlMQU4gQUNDRVNTIENPUlAuCi0wMDIwQkUgICAgIChiYXNlIDE2KQkJTEFOIEFDQ0VTUyBDT1JQLgotCQkJCTI3MzAgTU9OVEVSRVkgU1RSRUVULCBTVEUuIzEwMgotCQkJCVRPUlJBTkNFIENBIDkwNTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1CRiAgIChoZXgpCQlBRUhSIFRFU1QgU1lTVEVNUwotMDAyMEJGICAgICAoYmFzZSAxNikJCUFFSFIgVEVTVCBTWVNURU1TCi0JCQkJMTY2NyBQTFlNT1VUSCBTVFJFRVQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DMCAgIChoZXgpCQlQVUxTRSBFTEVDVFJPTklDUywgSU5DLgotMDAyMEMwICAgICAoYmFzZSAxNikJCVBVTFNFIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJNTcwNiBGUkVERVJJQ0sgQVZFTlVFCi0JCQkJUk9DS1ZJTExFIE1EIDIwODUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DMSAgIChoZXgpCQlTQVhBLCBJbmMuCi0wMDIwQzEgICAgIChiYXNlIDE2KQkJU0FYQSwgSW5jLgotCQkJCU5CRiBQbGF0aW51bSBUb3dlciAxLTE3LTMgU2hpcm9rYW5lCi0JCQkJTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwOC04MDUwCi0JCQkJSkFQQU4KLQotMDAtMjAtQzIgICAoaGV4KQkJVEVYQVMgTUVNT1JZIFNZU1RFTVMsIElOQy4KLTAwMjBDMiAgICAgKGJhc2UgMTYpCQlURVhBUyBNRU1PUlkgU1lTVEVNUywgSU5DLgotCQkJCTExMjAwIFdFU1RIRUlNRVIgUkQtU1RFIzEwMDAKLQkJCQlIT1VTVE9OIFRYIDc3MDQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DMyAgIChoZXgpCQlDT1VOVEVSIFNPTFVUSU9OUyBMVEQuCi0wMDIwQzMgICAgIChiYXNlIDE2KQkJQ09VTlRFUiBTT0xVVElPTlMgTFRELgotCQkJCTI2MyBIRUFHRSBST0FECi0JCQkJUklQTEVZLCBERVJCWVMgREU1IDNHSCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtQzQgICAoaGV4KQkJSU5FVCxJTkMuCi0wMDIwQzQgICAgIChiYXNlIDE2KQkJSU5FVCxJTkMuCi0JCQkJODAxIEUuIENBTVBCRUxMLVNURS4jMzMwCi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQzUgICAoaGV4KQkJRUFHTEUgVEVDSE5PTE9HWQotMDAyMEM1ICAgICAoYmFzZSAxNikJCUVBR0xFIFRFQ0hOT0xPR1kKLQkJCQkyODY1IFpBTktFUiBST0FECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUM2ICAgKGhleCkJCU5FQ1RFQwotMDAyMEM2ICAgICAoYmFzZSAxNikJCU5FQ1RFQwotCQkJCVJBTUEgVkkgUk9BRAotCQkJCVJBSlRIRVZJIEJBTkdLT0sgIDEwNDAwCi0JCQkJVEhBSUxBTkQKLQkJCQlUSEFJTEFORAotCi0wMC0yMC1DNyAgIChoZXgpCQlBS0FJIFByb2Zlc3Npb25hbCBNLkkuIENvcnAuCi0wMDIwQzcgICAgIChiYXNlIDE2KQkJQUtBSSBQcm9mZXNzaW9uYWwgTS5JLiBDb3JwLgotCQkJCTEtMywgSGlyYW51bWEgMS1DaG9tZSwKLQkJCQlOaXNoaS1rdSwgWW9rb2hhbWEsCi0JCQkJMjIwLTAwMjMgCi0JCQkJSkFQQU4KLQotMDAtMjAtQzggICAoaGV4KQkJTEFSU0NPTSBJTkNPUlBPUkFURUQKLTAwMjBDOCAgICAgKGJhc2UgMTYpCQlMQVJTQ09NIElOQ09SUE9SQVRFRAotCQkJCTQ2MDAgUEFUUklDSyBIRU5SWSBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DOSAgIChoZXgpCQlWSUNUUk9OIEJWCi0wMDIwQzkgICAgIChiYXNlIDE2KQkJVklDVFJPTiBCVgotCQkJCVBPQiAzMQotCQkJCU5MIDk3MDAgQUEgR1JPTklOR0VOCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjAtQ0EgICAoaGV4KQkJRElHSVRBTCBPQ0VBTgotMDAyMENBICAgICAoYmFzZSAxNikJCURJR0lUQUwgT0NFQU4KLQkJCQkxMTIwNiBUSE9NUFNPTiBBVkVOVUUKLQkJCQlMRU5FWEEgS1MgNjYyMTktMjMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtQ0IgICAoaGV4KQkJUFJFVEVDIEVMRUNUUk9OSUNTIENPUlAuCi0wMDIwQ0IgICAgIChiYXNlIDE2KQkJUFJFVEVDIEVMRUNUUk9OSUNTIENPUlAuCi0JCQkJMzk4OTkgQkFMRU5USU5FIERSLgotCQkJCVNVSVRFICMzMDUKLQkJCQlORVdBUksgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUNDICAgKGhleCkJCURJR0lUQUwgU0VSVklDRVMsIExURC4KLTAwMjBDQyAgICAgKGJhc2UgMTYpCQlESUdJVEFMIFNFUlZJQ0VTLCBMVEQuCi0JCQkJOSBXQVlURSBTVFJFRVQKLQkJCQlDT1NIQU0gSEFNUFNISVJFCi0JCQkJRU5HTEFORCBQTzYgM0JTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjAtQ0QgICAoaGV4KQkJSFlCUklEIE5FVFdPUktTLCBJTkMuCi0wMDIwQ0QgICAgIChiYXNlIDE2KQkJSFlCUklEIE5FVFdPUktTLCBJTkMuCi0JCQkJMTAyMDEgQlVCQiBST0FECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0LTQxNjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUNFICAgKGhleCkJCUxPR0lDQUwgREVTSUdOIEdST1VQLCBJTkMuCi0wMDIwQ0UgICAgIChiYXNlIDE2KQkJTE9HSUNBTCBERVNJR04gR1JPVVAsIElOQy4KLQkJCQk2MzAxIENIQVBFTCBISUxMIFJPQUQKLQkJCQlSQUxFSUdIIE5DIDI3NjA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1DRiAgIChoZXgpCQlURVNUICYgTUVBU1VSRU1FTlQgU1lTVEVNUyBJTkMKLTAwMjBDRiAgICAgKGJhc2UgMTYpCQlURVNUICYgTUVBU1VSRU1FTlQgU1lTVEVNUyBJTkMKLQkJCQkyMDQ1IFNJVEtBIENPVVJUCi0JCQkJTE9WRUxBTkQgQ08gODA1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUQwICAgKGhleCkJCVZFUlNBTFlOWCBDT1JQT1JBVElPTgotMDAyMEQwICAgICAoYmFzZSAxNikJCVZFUlNBTFlOWCBDT1JQT1JBVElPTgotCQkJCTg5NTAgQ0FSTEVZIENJUkNMRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRDEgICAoaGV4KQkJTUlDUk9DT01QVVRFUiBTWVNURU1TIChNKSBTRE4uCi0wMDIwRDEgICAgIChiYXNlIDE2KQkJTUlDUk9DT01QVVRFUiBTWVNURU1TIChNKSBTRE4uCi0JCQkJMjMtMjUsIEpBTEFOIEpFSkFLQSBUVUpVSAotCQkJCVRBTUFOIE1BTFVSSSwgQ0hFUkFTIDU1MTAwIEtVQUxBIExVTVBVUgotCQkJCU1BTEFZU0lBCi0JCQkJTUFMQVlTSUEKLQotMDAtMjAtRDIgICAoaGV4KQkJUkFEIERBVEEgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwMjBEMiAgICAgKGJhc2UgMTYpCQlSQUQgREFUQSBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCTggSEFORUNIT1NIRVQgU1RSRUVUCi0JCQkJVEVMLUFWSVYgIDY5NzEwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTIwLUQzICAgKGhleCkJCU9TVCAoT1VFU1QgU1RBTkRBUkQgVEVMRU1BVElRVQotMDAyMEQzICAgICAoYmFzZSAxNikJCU9TVCAoT1VFU1QgU1RBTkRBUkQgVEVMRU1BVElRVQotCQkJCVJVRSBEVSBCQVMgVklMTEFHRQotCQkJCUJQIDE1OCwgWi5JLiBTVUQtRVNUIDM1NTE1IENFU1NPTi1TRVZJR04KLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMjAtRDQgICAoaGV4KQkJQ0FCTEVUUk9OIC0gWkVJVFRORVQgSU5DLgotMDAyMEQ0ICAgICAoYmFzZSAxNikJCUNBQkxFVFJPTiAtIFpFSVRUTkVUIElOQy4KLQkJCQkzNSBJTkRVU1RSSUFMIFdBWQotCQkJCVAuTy4gQk9YIDUwMDUKLQkJCQlST0hFU1RFUiBOSCAwMzg2Ni01MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1ENSAgIChoZXgpCQlWSVBBIEdNQkgKLTAwMjBENSAgICAgKGJhc2UgMTYpCQlWSVBBIEdNQkgKLQkJCQlXRVRURVJLUkVVWiAyNwotCQkJCUQtOTEwNTggRVJMQU5HRU4KLQkJCQlHRVJNQU5ZCi0KLTAwLTIwLUQ2ICAgKGhleCkJCUJSRUVaRUNPTQotMDAyMEQ2ICAgICAoYmFzZSAxNikJCUJSRUVaRUNPTQotCQkJCUFUSURJTSBURUNITk9MT0dJQ0FMIFBLLUJMREcuMwotCQkJCVRFTC1BVklWICA2MTEzMQotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0yMC1ENyAgIChoZXgpCQlKQVBBTiBNSU5JQ09NUFVURVIgU1lTVEVNUyBDTy4sIEx0ZC4KLTAwMjBENyAgICAgKGJhc2UgMTYpCQlKQVBBTiBNSU5JQ09NUFVURVIgU1lTVEVNUyBDTy4sIEx0ZC4KLQkJCQkzLTMzLTE4IFRBS0FJRE9ISUdBU0hJCi0JCQkJU1VHSU5BTUktS1UKLQkJCQlUT0tZTyAxNjggIAotCQkJCUpBUEFOCi0KLTAwLTIwLUQ4ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyMEQ4ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTQ0MDEgR3JlYXQgQW1lcmljYSBQa3d5LgotCQkJCVNhbnRhIENsYXJhIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1EOSAgIChoZXgpCQlQQU5BU09OSUMgVEVDSE5PTE9HSUVTLCBJTkMuL01JRUNPLVVTCi0wMDIwRDkgICAgIChiYXNlIDE2KQkJUEFOQVNPTklDIFRFQ0hOT0xPR0lFUywgSU5DLi9NSUVDTy1VUwotCQkJCTE3MDMgTi4gUkFOREFMTCBSRC4KLQkJCQlFTEdJTiBJTCA2MDEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtREEgICAoaGV4KQkJQWxjYXRlbCBOb3J0aCBBbWVyaWNhIEVTRAotMDAyMERBICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTm9ydGggQW1lcmljYSBFU0QKLQkJCQkyNjgwMSBXZXN0IEFnb3VyYSBSb2FkCi0JCQkJQ0FMQUJBU0FTIENBIDkxMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1EQiAgIChoZXgpCQlYTkVUIFRFQ0hOT0xPR1ksIElOQy4KLTAwMjBEQiAgICAgKGJhc2UgMTYpCQlYTkVUIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk0MjYgUy4gSElMTFZJRVcgRFJJVkUKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtREMgICAoaGV4KQkJREVOU0lUUk9OIFRBSVdBTiBMVEQuCi0wMDIwREMgICAgIChiYXNlIDE2KQkJREVOU0lUUk9OIFRBSVdBTiBMVEQuCi0JCQkJS1lPV0EgTkFOQUJBTktBTiA1RgotCQkJCTEtMTEtNSBPTU9SSS1LSVRBIE9UQS1LVSwgIFRPS1lPIDE0MwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMjAtREQgICAoaGV4KQkJQ3liZXJ0ZWMgUHR5IEx0ZAotMDAyMEREICAgICAoYmFzZSAxNikJCUN5YmVydGVjIFB0eSBMdGQKLQkJCQlVbml0IDExLCA0MSBIaWdnaW5ib3RoYW0gUm9hZAotCQkJCUdsYWRlc3ZpbGxlIE5TVyAyMTExCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIwLURFICAgKGhleCkJCUpBUEFOIERJR0lUQUwgTEFCT1JBVCdZIENPLkxURAotMDAyMERFICAgICAoYmFzZSAxNikJCUpBUEFOIERJR0lUQUwgTEFCT1JBVCdZIENPLkxURAotCQkJCUpETCBLQVdBU0FLSSBSICYgRCBDRU5URVIKLQkJCQkxMC0xIE1JTkFNSS1LVVJPS0FXQSBBU0FPLUtVLCBLQVdBU0tBS0ktCi0JCQkJS0FOQUdBV0EtS0VOICAyMTUKLQkJCQlKQVBBTgotCi0wMC0yMC1ERiAgIChoZXgpCQlLWU9TQU4gRUxFQ1RSSUMgTUZHLiBDTy4sIExURC4KLTAwMjBERiAgICAgKGJhc2UgMTYpCQlLWU9TQU4gRUxFQ1RSSUMgTUZHLiBDTy4sIExURC4KLQkJCQkyLTI5LCBIRUlBTi1DSE8sIFRTVVJVTUktS1UKLQkJCQlZT0tPSEFNQSwgMjMwCi0JCQkJSkFQQU4KLQotMDAtMjAtRTAgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMuIAotMDAyMEUwICAgICAoYmFzZSAxNikJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jLiAKLQkJCQk3NjAgTm9ydGggTWFyeSBBdmUuCi0JCQkJU3Vubnl2YWxlLiBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRTEgICAoaGV4KQkJQUxBTUFSIEVMRUNUUk9OSUNTCi0wMDIwRTEgICAgIChiYXNlIDE2KQkJQUxBTUFSIEVMRUNUUk9OSUNTCi0JCQkJNDg5IERJVklTSU9OIFNUUkVFVAotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FMiAgIChoZXgpCQlJTkZPUk1BVElPTiBSRVNPVVJDRSBFTkdJTkVFUklORwotMDAyMEUyICAgICAoYmFzZSAxNikJCUlORk9STUFUSU9OIFJFU09VUkNFIEVOR0lORUVSSU5HCi0JCQkJODAyOSBDT1JQT1JBVEUgRFJJVkUKLQkJCQlCQUxUSU1PUkUgTUQgMjEyMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUUzICAgKGhleCkJCU1DRCBLRU5DT00gQ09SUE9SQVRJT04KLTAwMjBFMyAgICAgKGJhc2UgMTYpCQlNQ0QgS0VOQ09NIENPUlBPUkFUSU9OCi0JCQkJMjA5NTAgQ0FTVExFIFJPQ0sgUk9BRAotCQkJCUxBR1VOQSBCRUFDSCBDQSA5MjY1MS0xMTE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FNCAgIChoZXgpCQlIU0lORyBURUNIIEVOVEVSUFJJU0UgQ08uLCBMVEQKLTAwMjBFNCAgICAgKGJhc2UgMTYpCQlIU0lORyBURUNIIEVOVEVSUFJJU0UgQ08uLCBMVEQKLQkJCQlOTy4gMiwgTEFORSAxMjgsIFNFQy4gMgotCQkJCUNIVU5HIFNIQU4gTi4gUkQuCi0JCQkJVEVJUEVJLCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC1FNSAgIChoZXgpCQlBUEVYIERBVEEsIElOQy4KLTAwMjBFNSAgICAgKGJhc2UgMTYpCQlBUEVYIERBVEEsIElOQy4KLQkJCQk2NjI0IE9XRU5TIERSSVZFCi0JCQkJUExFQVNBTlRPTiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRTYgICAoaGV4KQkJTElES09QSU5HIE1BQ0hJTkUgVE9PTFMgQUIKLTAwMjBFNiAgICAgKGJhc2UgMTYpCQlMSURLT1BJTkcgTUFDSElORSBUT09MUyBBQgotCQkJCUJPWCA5MTAKLQkJCQk1MzEgMTkgTElES09QSU5HCi0JCQkJU1dFREVOCi0KLTAwLTIwLUU3ICAgKGhleCkJCUImVyBOVUNMRUFSIFNFUlZJQ0UgQ09NUEFOWQotMDAyMEU3ICAgICAoYmFzZSAxNikJCUImVyBOVUNMRUFSIFNFUlZJQ0UgQ09NUEFOWQotCQkJCVNQRUNJQUwgUFJPRFVDVFMgJiBJTlRFRy5TVkNTLgotCQkJCTE1NSBNSUxMIFJJREdFIFJPQUQKLQkJCQlMWU5DSEJVUkcgVkEgMjQ1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUU4ICAgKGhleCkJCURBVEFUUkVLIENPUlBPUkFUSU9OCi0wMDIwRTggICAgIChiYXNlIDE2KQkJREFUQVRSRUsgQ09SUE9SQVRJT04KLQkJCQk0NTA1IFdZTEFORCBEUklWRQotCQkJCUVMS0hBUlQgSU4gNDY1MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUU5ICAgKGhleCkJCURBTlRFTAotMDAyMEU5ICAgICAoYmFzZSAxNikJCURBTlRFTAotCQkJCVAuTy4gQk9YIDU1MDEzCi0JCQkJMjk5MSBOT1JUSCBBUkdZTEUgQVZFLgotCQkJCUZSRVNOTyBDQSA5MzcyNy0xMzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FQSAgIChoZXgpCQlFRkZJQ0lFTlQgTkVUV09SS1MsIElOQy4KLTAwMjBFQSAgICAgKGJhc2UgMTYpCQlFRkZJQ0lFTlQgTkVUV09SS1MsIElOQy4KLQkJCQk0MjAxIFNQUklORyBWQUxMRVkgUk9BRAotCQkJCVNVSVRFICMxMjAwCi0JCQkJREFMTEFTIFRYIDc1MjQ0LTM2NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUVCICAgKGhleCkJCUNJTkNJTk5BVEkgTUlDUk9XQVZFLCBJTkMuCi0wMDIwRUIgICAgIChiYXNlIDE2KQkJQ0lOQ0lOTkFUSSBNSUNST1dBVkUsIElOQy4KLQkJCQlPTkUgTUlDUk9XQVZFIFBMQVpBCi0JCQkJQ0lOQ0lOTkFUSSBPSCA0NTI0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRUMgICAoaGV4KQkJVEVDSFdBUkUgU1lTVEVNUyBDT1JQLgotMDAyMEVDICAgICAoYmFzZSAxNikJCVRFQ0hXQVJFIFNZU1RFTVMgQ09SUC4KLQkJCQkjMTAwIC0gMTIwNTEgSE9SU0VTSE9FIFdBWQotCQkJCVJJQ0hNT05ELCBCLkMuIENBTkFEQQotCQkJCVY3QSA0VjQKLQkJCQlDQU5BREEKLQotMDAtMjAtRUQgICAoaGV4KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDIwRUQgICAgIChiYXNlIDE2KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJMzY1IENMT1ZFUkxFQUYKLQkJCQlCQUxEV0lOIFBBUksgQ0EgOTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUVFICAgKGhleCkJCUdURUNIIENPUlBPUkFUSU9OCi0wMDIwRUUgICAgIChiYXNlIDE2KQkJR1RFQ0ggQ09SUE9SQVRJT04KLQkJCQk1NSBURUNITk9MT0dZIFdBWQotCQkJCVdFU1QgR1JFRU5XSUNIIFJJIDAyODE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1FRiAgIChoZXgpCQlVU0MgQ09SUE9SQVRJT04KLTAwMjBFRiAgICAgKGJhc2UgMTYpCQlVU0MgQ09SUE9SQVRJT04KLQkJCQk2LTQsIE9TQUtJIDEtQ0hPTUUKLQkJCQlTSElOQUdBV0EtS1UgVE9LWU8sCi0JCQkJMTQxIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMjAtRjAgICAoaGV4KQkJVU5JVkVSU0FMIE1JQ1JPRUxFQ1RST05JQ1MgQ08uCi0wMDIwRjAgICAgIChiYXNlIDE2KQkJVU5JVkVSU0FMIE1JQ1JPRUxFQ1RST05JQ1MgQ08uCi0JCQkJMywgMjdUSCBSRC4sIFRBSUNIVU5HIElORC5QQVJLCi0JCQkJVEFJQ0hVTgotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC1GMSAgIChoZXgpCQlBTFRPUyBJTkRJQSBMSU1JVEVECi0wMDIwRjEgICAgIChiYXNlIDE2KQkJQUxUT1MgSU5ESUEgTElNSVRFRAotCQkJCUQtNjAsIE9LTEhMQSBJTkRVU1RSSUFMCi0JCQkJQVJFQSwgUEhBU0UgMSBORVcgREVMSEkgLTExMDAyMAotCQkJCUlORElBCi0JCQkJSU5ESUEKLQotMDAtMjAtRjIgICAoaGV4KQkJT3JhY2xlIENvcnBvcmF0aW9uIAotMDAyMEYyICAgICAoYmFzZSAxNikJCU9yYWNsZSBDb3Jwb3JhdGlvbiAKLQkJCQk1MDAgT3JhY2xlIFBhcmt3YXkKLQkJCQlSZWR3b29kIFNob3JlcyBDQSA5NTA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRjMgICAoaGV4KQkJUkFZTkVUIENPUlBPUkFUSU9OCi0wMDIwRjMgICAgIChiYXNlIDE2KQkJUkFZTkVUIENPUlBPUkFUSU9OCi0JCQkJMTU1IENPTlNUSVRVVElPTiBEUklWRQotCQkJCU1FTkxPIFBBUksgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUY0ICAgKGhleCkJCVNQRUNUUklYIENPUlBPUkFUSU9OCi0wMDIwRjQgICAgIChiYXNlIDE2KQkJU1BFQ1RSSVggQ09SUE9SQVRJT04KLQkJCQkxMDYgV0lMTU9UIFJPQUQsIFNVSVRFIDI1MAotCQkJCURFRVJGSUVMRCBJTCA2MDAxNS01MTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1GNSAgIChoZXgpCQlQQU5EQVRFTCBBRwotMDAyMEY1ICAgICAoYmFzZSAxNikJCVBBTkRBVEVMIEFHCi0JCQkJRkFTQU5FTldFRyAyNQotCQkJCUQtMjIxNDUgIEhBTUJVUkcKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0yMC1GNiAgIChoZXgpCQlORVQgVEVLICBBTkQgS0FSTE5FVCwgSU5DLgotMDAyMEY2ICAgICAoYmFzZSAxNikJCU5FVCBURUsgIEFORCBLQVJMTkVULCBJTkMuCi0JCQkJTElUVExFIFNUUkVBTVMKLQkJCQlUSEUgQUJCT1RTQlJPT0ssIEJPVVJORSBFTkQgQlVDS1MsIFNMOCA1Ci0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMC1GNyAgIChoZXgpCQlDWUJFUkRBVEEgQ09SUE9SQVRJT04KLTAwMjBGNyAgICAgKGJhc2UgMTYpCQlDWUJFUkRBVEEgQ09SUE9SQVRJT04KLQkJCQkzIEp1c3RpbiBDb3VydAotCQkJCU1PTlRFUkVZIENBIDkzOTQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1GOCAgIChoZXgpCQlDQVJSRVJBIENPTVBVVEVSUywgSU5DLgotMDAyMEY4ICAgICAoYmFzZSAxNikJCUNBUlJFUkEgQ09NUFVURVJTLCBJTkMuCi0JCQkJMjMxODEgVkVSRFVHTyBEUklWRS1TVEUuIzEwNUEKLQkJCQlMQUdVTkEgSElMTFMgQ0EgOTI2NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUY5ICAgKGhleCkJCVBBUkFMSU5LIE5FVFdPUktTLCBJTkMuCi0wMDIwRjkgICAgIChiYXNlIDE2KQkJUEFSQUxJTksgTkVUV09SS1MsIElOQy4KLQkJCQk0RiwgTk8uIDI3LCBTRUMuMywgUEFURUggUkQuCi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIwLUZBICAgKGhleCkJCUdERSBTWVNURU1TLCBJTkMuCi0wMDIwRkEgICAgIChiYXNlIDE2KQkJR0RFIFNZU1RFTVMsIElOQy4KLQkJCQlQLk8uIEJPWCA4NTQ2OCAtIEJMREcuIzYxCi0JCQkJU0FOIERJRUdPIENBIDkyMTg2LTU0NjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIwLUZCICAgKGhleCkJCU9DVEVMIENPTU1VTklDQVRJT05TIENPUlAuCi0wMDIwRkIgICAgIChiYXNlIDE2KQkJT0NURUwgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQkxMDAxIE1VUlBIWSBSQU5DSCBSRAotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMC1GQyAgIChoZXgpCQlNQVRST1gKLTAwMjBGQyAgICAgKGJhc2UgMTYpCQlNQVRST1gKLQkJCQkxMDU1IFNULiBSRUdJUywKLQkJCQlET1JWQUwsIFFVRUJFQyAgSDlQLTJUNCAgCi0JCQkJQ0FOQURBCi0KLTAwLTIwLUZEICAgKGhleCkJCUlUViBURUNITk9MT0dJRVMsIElOQy4KLTAwMjBGRCAgICAgKGJhc2UgMTYpCQlJVFYgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNjgwMCBPV0VOU01PVVRIIEFWRS4gICMyMzAKLQkJCQlDQU5PR0EgUEFSSyBDQSA5MTMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjAtRkUgICAoaGV4KQkJVE9QV0FSRSBJTkMuIC8gR1JBTkQgQ09NUFVURVIKLTAwMjBGRSAgICAgKGJhc2UgMTYpCQlUT1BXQVJFIElOQy4gLyBHUkFORCBDT01QVVRFUgotCQkJCUNPUlBPUkFUSU9OCi0JCQkJQjEsIE5PLiA5LCBMQU5FIDUwIFNFQ1RJT04gMywgTkFOIEtBTkcgUgotCQkJCVRBSVBFSSAgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMC1GRiAgIChoZXgpCQlTWU1NRVRSSUNBTCBURUNITk9MT0dJRVMKLTAwMjBGRiAgICAgKGJhc2UgMTYpCQlTWU1NRVRSSUNBTCBURUNITk9MT0dJRVMKLQkJCQk1MDAgSFVOVE1BUiBQQVJLIERSSVZFCi0JCQkJSEVSTkRPTiBWQSAyMjA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMDAgICAoaGV4KQkJR2VtVGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDIxMDAgICAgIChiYXNlIDE2KQkJR2VtVGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uMSBKZW4gQWkgUm9hZCwgSHNpbmNodSBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHVrb3UsIEhzaW5jaHUgMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMS0wMSAgIChoZXgpCQlBcGxpY2FjaW9uZXMgRWxlY3Ryb25pY2FzIFF1YXNhciAoQUVRKQotMDAyMTAxICAgICAoYmFzZSAxNikJCUFwbGljYWNpb25lcyBFbGVjdHJvbmljYXMgUXVhc2FyIChBRVEpCi0JCQkJQy9SZXkgUGFzdG9yIDQwCi0JCQkJUG9saWdvbm8gSW5kdXN0cmlhbCBCdXRhcnF1ZQotCQkJCUxlZ2FuZXMgTWFkcmlkIDI4OTE0Ci0JCQkJU1BBSU4KLQotMDAtMjEtMDIgICAoaGV4KQkJVXBkYXRlTG9naWMgSW5jLgotMDAyMTAyICAgICAoYmFzZSAxNikJCVVwZGF0ZUxvZ2ljIEluYy4KLQkJCQkyIFdpbGxvdyBTdHJlZXQsIFN1aXRlIDEwMQotCQkJCVNvdXRoYm9yb3VnaCBNQSAwMTc0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMDMgICAoaGV4KQkJR0hJIEVsZWN0cm9uaWNzLCBMTEMKLTAwMjEwMyAgICAgKGJhc2UgMTYpCQlHSEkgRWxlY3Ryb25pY3MsIExMQwotCQkJCTM1NTU1IEdhcmZpZWxkIFJkLgotCQkJCVN1aXRlIDRCCi0JCQkJQ2xpbnRvbiBUb3duc2hpcCBNSSA0ODAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMDQgICAoaGV4KQkJR2lnYXNldCBDb21tdW5pY2F0aW9ucyBHbWJICi0wMDIxMDQgICAgIChiYXNlIDE2KQkJR2lnYXNldCBDb21tdW5pY2F0aW9ucyBHbWJICi0JCQkJRnJhbmtlbnN0cmFzc2UgMgotCQkJCTQ2Mzk1IEJvY2hvbHQgCi0JCQkJR0VSTUFOWQotCi0wMC0yMS0wNSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudAotMDAyMTA1ICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50Ci0JCQkJNzAxIEUuIE1pZGRsZWZpZWxkIFJkLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTA2ICAgKGhleCkJCVJJTSBUZXN0aW5nIFNlcnZpY2VzCi0wMDIxMDYgICAgIChiYXNlIDE2KQkJUklNIFRlc3RpbmcgU2VydmljZXMKLQkJCQk0NDAgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPTiBOMkwgNVI5Ci0JCQkJQ0FOQURBCi0KLTAwLTIxLTA3ICAgKGhleCkJCVNlb3dvbmludGVjaCBDbyBMdGQuCi0wMDIxMDcgICAgIChiYXNlIDE2KQkJU2Vvd29uaW50ZWNoIENvIEx0ZC4KLQkJCQk2ODktNDcgR2V1bWplb25nZG9uZwotCQkJCUd1bnBvc2kgS3lvdW5na2lkbyA0MzYtODYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTA4ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIxMDggICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIxLTA5ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIxMDkgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIxLTBBICAgKGhleCkJCWJ5ZDpzaWduIENvcnBvcmF0aW9uCi0wMDIxMEEgICAgIChiYXNlIDE2KQkJYnlkOnNpZ24gQ29ycG9yYXRpb24KLQkJCQkyLTEwLTYgVHN1a2lqaQotCQkJCUJQUyBTUVVBUkUgMkYKLQkJCQlDaHVvLWt1IFRva3lvIDEwNC0wMDQ1Ci0JCQkJSkFQQU4KLQotMDAtMjEtMEIgICAoaGV4KQkJR0VNSU5JIFRSQVpFIFJGSUQgUFZULiBMVEQuCi0wMDIxMEIgICAgIChiYXNlIDE2KQkJR0VNSU5JIFRSQVpFIFJGSUQgUFZULiBMVEQuCi0JCQkJMSwgRFIuIFJBTkdBIFJPQUQKLQkJCQlBTFdBUlBFVAotCQkJCUNIRU5OQUkgVEFNSUxOQURVIDYwMDAxOAotCQkJCUlORElBCi0KLTAwLTIxLTBDICAgKGhleCkJCUN5bXRlYyBTeXN0ZW1zLCBJbmMuCi0wMDIxMEMgICAgIChiYXNlIDE2KQkJQ3ltdGVjIFN5c3RlbXMsIEluYy4KLQkJCQkxMDg0NSBPbGl2ZSBCb3VsZXZlYXJkCi0JCQkJU3VpdGUgMzA2Ci0JCQkJU3QgTG91aXMgTU8gNjMxNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTBEICAgKGhleCkJCVNBTVNJTiBJTk5PVEVDCi0wMDIxMEQgICAgIChiYXNlIDE2KQkJU0FNU0lOIElOTk9URUMKLQkJCQlTQVJJWVVORE9ORyBJTFNBTkRPTkctR1UKLQkJCQkyNTItMjMKLQkJCQlHT1lBTkcgS1lVTkdHSSA0MTE1MzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMEUgICAoaGV4KQkJT3JwYWsgU3lzdGVtcyBMLlQuRC4KLTAwMjEwRSAgICAgKGJhc2UgMTYpCQlPcnBhayBTeXN0ZW1zIEwuVC5ELgotCQkJCTMxIExlY2hpIFN0Ci0JCQkJQm5laSAtIEJyYWsgIDUxMTE0Ci0JCQkJSVNSQUVMCi0KLTAwLTIxLTBGICAgKGhleCkJCUNlcm5pdW0gQ29ycAotMDAyMTBGICAgICAoYmFzZSAxNikJCUNlcm5pdW0gQ29ycAotCQkJCTE5NDMgSXNhYWMgTmV3dG9uIFNxCi0JCQkJU3VpdGUgMjAwCi0JCQkJUmVzdG9uIFZBIDIwMTkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0xMCAgIChoZXgpCQlDbGVhcmJveCBTeXN0ZW1zCi0wMDIxMTAgICAgIChiYXNlIDE2KQkJQ2xlYXJib3ggU3lzdGVtcwotCQkJCVVuaXQgMTEsIDEyLTE0IEJlYXVtb250IFJvYWQKLQkJCQlNdCBLdXJpbmctR2FpIE5TVyAyMDgwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIxLTExICAgKGhleCkJCVVuaXBob25lIEluYy4KLTAwMjExMSAgICAgKGJhc2UgMTYpCQlVbmlwaG9uZSBJbmMuCi0JCQkJNzk1IE1haW4gU3RyZWV0Ci0JCQkJSGFsZiBNb29uIEJheSBDQSA5NDAxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMTIgICAoaGV4KQkJV0lTQ09NIFNZU1RFTSBDTy4sTFRECi0wMDIxMTIgICAgIChiYXNlIDE2KQkJV0lTQ09NIFNZU1RFTSBDTy4sTFRECi0JCQkJMTAwIEppYW5nanVuIFJvYWQsSmlhbmduaW5nLAotCQkJCU5hbmppbmcgIDIxMTEwMAotCQkJCUNISU5BCi0KLTAwLTIxLTEzICAgKGhleCkJCVBhZHRlYyBTL0EKLTAwMjExMyAgICAgKGJhc2UgMTYpCQlQYWR0ZWMgUy9BCi0JCQkJUm9hZCBDYW1waW5hcyBNb2dpLU1pcmltIGttIDExOCw1Ci0JCQkJQ2FtcGluYXMgU8OjbyBQYXVsbyAxMzA4Ni05MDIKLQkJCQlCUkFaSUwKLQotMDAtMjEtMTQgICAoaGV4KQkJSHlsYWIgVGVjaG5vbG9neSBJbmMuCi0wMDIxMTQgICAgIChiYXNlIDE2KQkJSHlsYWIgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTVGLTIuLE5vLjg3MixKaG9uZ2poZW5nIFJkLgotCQkJCUpob25naGUgQ2l0eSwgVGFpcGVpIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtMTUgICAoaGV4KQkJUEhZV0UgU3lzdGVtZSBHbWJIICYgQ28uIEtHCi0wMDIxMTUgICAgIChiYXNlIDE2KQkJUEhZV0UgU3lzdGVtZSBHbWJIICYgQ28uIEtHCi0JCQkJUm9iZXJ0LUJvc2NoLUJyZWl0ZSAxMAotCQkJCUdvZXR0aW5nZW4gTmllZGVyc2FjaHNlbiAzNzA3OQotCQkJCUdFUk1BTlkKLQotMDAtMjEtMTYgICAoaGV4KQkJVHJhbnNjb24gRWxlY3Ryb25pYyBTeXN0ZW1zLCBzcG9sLiBzIHIuIG8uCi0wMDIxMTYgICAgIChiYXNlIDE2KQkJVHJhbnNjb24gRWxlY3Ryb25pYyBTeXN0ZW1zLCBzcG9sLiBzIHIuIG8uCi0JCQkJS3ZhcGlsb3ZhIDIxMzMKLQkJCQlGcnlkZWstTWlzdGVrICA3MzgwMgotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTIxLTE3ICAgKGhleCkJCVRlbGxvcmQKLTAwMjExNyAgICAgKGJhc2UgMTYpCQlUZWxsb3JkCi0JCQkJR3Vyb2d1IEd1cm9kb25nIDE3MC01IFdvb2xpbSBlLUJpeiBDZW50ZXIgNzA5Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMTggICAoaGV4KQkJQXRoZW5hIFRlY2gsIEluYy4KLTAwMjExOCAgICAgKGJhc2UgMTYpCQlBdGhlbmEgVGVjaCwgSW5jLgotCQkJCTM3MjEgTWFjaW50b3NoIERyCi0JCQkJVmludCBIaWxsIFRlY2ggUGFyawotCQkJCVdhcnJlbnRvbiBWQSAyMDE4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMTkgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvLU1lY2hhbmljcwotMDAyMTE5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryby1NZWNoYW5pY3MKLQkJCQkzMTQsIE1ldGFuIDMgZG9uZwotCQkJCVN1d29uIEt5dW5nLWdpIGRvIDQ0My03NDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMUEgICAoaGV4KQkJTEluVGVjaCBDb3Jwb3JhdGlvbgotMDAyMTFBICAgICAoYmFzZSAxNikJCUxJblRlY2ggQ29ycG9yYXRpb24KLQkJCQlLcmFzbm9rYXphcm1lbm5heWEgc3QuLCAxMgotCQkJCU1vc2NvdyAgMTExMjUwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTIxLTFCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjExQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0xQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIxMUMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMUQgICAoaGV4KQkJRGF0YWxpbmUgQUIKLTAwMjExRCAgICAgKGJhc2UgMTYpCQlEYXRhbGluZSBBQgotCQkJCUthdHJpbmVkYWxzZ2F0YW4gNTMKLQkJCQlCT1LDg+KAplMgIFMtNTA0NTEKLQkJCQlTV0VERU4KLQotMDAtMjEtMUUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjExRSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTFGICAgKGhleCkJCVNISU5TVU5HIERFTFRBVEVDSCBDTy4sTFRELgotMDAyMTFGICAgICAoYmFzZSAxNikJCVNISU5TVU5HIERFTFRBVEVDSCBDTy4sTFRELgotCQkJCTQ0LTEwCi0JCQkJVU5HTkFNLURPTkcKLQkJCQlDSEFOR1dPTi1DSVRZIEtZVU5HTkFNLURPIDY0MS0yOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMjAgICAoaGV4KQkJU2VxdWVsIFRlY2hub2xvZ2llcwotMDAyMTIwICAgICAoYmFzZSAxNikJCVNlcXVlbCBUZWNobm9sb2dpZXMKLQkJCQkyOTUxIENsZXZlbGFuZCBBdmUgTgotCQkJCVJvc2V2aWxsZSBNTiA1NTExMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMjEgICAoaGV4KQkJVlJtYWdpYyBHbWJICi0wMDIxMjEgICAgIChiYXNlIDE2KQkJVlJtYWdpYyBHbWJICi0JCQkJQXVndXN0YWFubGFnZSAzMgotCQkJCU1hbm5oZWltIEJXIDY4MTY1Ci0JCQkJR0VSTUFOWQotCi0wMC0yMS0yMiAgIChoZXgpCQlDaGlwLXBybyBMdGQuCi0wMDIxMjIgICAgIChiYXNlIDE2KQkJQ2hpcC1wcm8gTHRkLgotCQkJCTVGLi00LCBOby42MywgU2l3ZWkgUmQuLCBOb3J0aCBEaXN0cmljdCwKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIxLTIzICAgKGhleCkJCUFlcm9zYXQgQXZpb25pY3MKLTAwMjEyMyAgICAgKGJhc2UgMTYpCQlBZXJvc2F0IEF2aW9uaWNzCi0JCQkJNjIgU3RhdGUgUmQuCi0JCQkJMTAxQSBTdWl0ZSAyQgotCQkJCUFtaGVyc3QgTkggMDMwMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTI0ICAgKGhleCkJCU9wdG9zIFBsYwotMDAyMTI0ICAgICAoYmFzZSAxNikJCU9wdG9zIFBsYwotCQkJCVF1ZWVuc2ZlcnJ5IEhvdXNlCi0JCQkJQ2FybmVnaWUgQnVzaW5lc3MgQ2FtcHVzCi0JCQkJRHVuZmVybWxpbmUgRmlmZSBLWTExIDhHUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIxLTI1ICAgKGhleCkJCUtVSyBKRSBUT05HIFNISU4gQ28uLExURAotMDAyMTI1ICAgICAoYmFzZSAxNikJCUtVSyBKRSBUT05HIFNISU4gQ28uLExURAotCQkJCTQ3Ni0zCi0JCQkJSmFrSmVvbi1Eb25nLAotCQkJCUluY2hlb24gS3dhbmd5b3VrLVNpIDQwNy0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMjYgICAoaGV4KQkJU2hlbnpoZW4gVG9yY2ggRXF1aXBtZW50IENvLiwgTHRkLgotMDAyMTI2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFRvcmNoIEVxdWlwbWVudCBDby4sIEx0ZC4KLQkJCQlGbG9vciA1LCBCbG9jayAzLCBMaW1pbmcgSW5kdXN0cmlhbCBEaXN0cmljdCwgWmhvbmdzaGFueXVhbiBSb2FkLCBOYW5zaGFuLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTIKLQkJCQlDSElOQQotCi0wMC0yMS0yNyAgIChoZXgpCQlUUC1MSU5LIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDIxMjcgICAgIChiYXNlIDE2KQkJVFAtTElOSyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVNvdXRoIEJ1aWxkaW5nLCBOby41IEtleXVhbiBSb2FkLCBDZW50cmFsIFpvbmUsCi0JCQkJU2NpZW5jZSAmIFRlY2hub2xvZ3kgUGFyayxOYW5zaGFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTIxLTI4ICAgKGhleCkJCU9yYWNsZSBDb3Jwb3JhdGlvbgotMDAyMTI4ICAgICAoYmFzZSAxNikJCU9yYWNsZSBDb3Jwb3JhdGlvbgotCQkJCTE3IE5ldHdvcmsgQ2lyY2xlCi0JCQkJQnVpbGRpbmcgMTcsIFVNUEsxNy0xMzEKLQkJCQlNZW5sbyBQYXJrIENBIDk1MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0yOSAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTAwMjEyOSAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMjEgVGhlb3J5IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTJBICAgKGhleCkJCUF1ZGlvdm94IENvcnBvcmF0aW9uCi0wMDIxMkEgICAgIChiYXNlIDE2KQkJQXVkaW92b3ggQ29ycG9yYXRpb24KLQkJCQkxNTAgTWFyY3VzIEJsdmQKLQkJCQlIYXVwcGF1Z2UgTlkgMTE3ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTJCICAgKGhleCkJCU1TQSBBdWVyCi0wMDIxMkIgICAgIChiYXNlIDE2KQkJTVNBIEF1ZXIKLQkJCQlUaGllbWFubnN0ci4gMQotCQkJCUJlcmxpbiAgMTIwNTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLTJDICAgKGhleCkJCVNlbUluZGlhIFN5c3RlbSBQcml2YXRlIExpbWl0ZWQKLTAwMjEyQyAgICAgKGJhc2UgMTYpCQlTZW1JbmRpYSBTeXN0ZW0gUHJpdmF0ZSBMaW1pdGVkCi0JCQkJTm8uIDExMDYvOSwgQS5NIEluZHVzdHJpYWwgRXN0YXRlLCBHYXJ2ZWJoYXZpcGFseWEKLQkJCQk3dGggbWlsZSwgSG9zdXIgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwIDA2OAotCQkJCUlORElBCi0KLTAwLTIxLTJEICAgKGhleCkJCVNDSU1PTEVYIENPUlBPUkFUSU9OCi0wMDIxMkQgICAgIChiYXNlIDE2KQkJU0NJTU9MRVggQ09SUE9SQVRJT04KLQkJCQkyNDMwLCBTYWlqb3UsIFNob3dhLWNobwotCQkJCU5ha2Frb21hLWd1biwgWWFtYW5hc2hpICA0MDktMzg2NgotCQkJCUpBUEFOCi0KLTAwLTIxLTJFICAgKGhleCkJCWRyZXNkZW4tZWxla3Ryb25pawotMDAyMTJFICAgICAoYmFzZSAxNikJCWRyZXNkZW4tZWxla3Ryb25pawotCQkJCUdsYXNld2FsZHRzdHJhw4PFuGUgMjIKLQkJCQlEcmVzZGVuIFNheG9ueSBELTAxMjc3Ci0JCQkJR0VSTUFOWQotCi0wMC0yMS0yRiAgIChoZXgpCQlQaG9lYmUgTWljcm8gSW5jLgotMDAyMTJGICAgICAoYmFzZSAxNikJCVBob2ViZSBNaWNybyBJbmMuCi0JCQkJNDc2MDYgS2F0byBSZAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTMwICAgKGhleCkJCUtlaWNvIEhpZ2h0ZWNoIEluYy4KLTAwMjEzMCAgICAgKGJhc2UgMTYpCQlLZWljbyBIaWdodGVjaCBJbmMuCi0JCQkJQWNlIHR3aW4gdG93ZXIgSSwgMTJ0aCBGbC4KLQkJCQkyMTItMSwgR3Vyby1kb25nLCBndXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtMzEgICAoaGV4KQkJQmx5bmtlIEluYy4KLTAwMjEzMSAgICAgKGJhc2UgMTYpCQlCbHlua2UgSW5jLgotCQkJCTEzMyBSaWNobW9uZCBTdC4gV2VzdAotCQkJCVN1aXRlIDYwMAotCQkJCVRvcm9udG8gT250YXJpbyBNNUggMkwzCi0JCQkJQ0FOQURBCi0KLTAwLTIxLTMyICAgKGhleCkJCU1hc3RlcmNsb2NrLCBJbmMuCi0wMDIxMzIgICAgIChiYXNlIDE2KQkJTWFzdGVyY2xvY2ssIEluYy4KLQkJCQkyNDg0IFdlc3QgQ2xheSBTdC4KLQkJCQlTdC4gQ2hhcmxlcyBNTyA2MzMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMzMgICAoaGV4KQkJQnVpbGRpbmcgQiwgSW5jCi0wMDIxMzMgICAgIChiYXNlIDE2KQkJQnVpbGRpbmcgQiwgSW5jCi0JCQkJMTAwMCBOVyA2NXRoIFN0cmVldCwgU3VpdGUgMzAwCi0JCQkJRnQuIExhdWRlcmRhbGUgRkwgMzMzMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTM0ICAgKGhleCkJCUJyYW5keXdpbmUgQ29tbXVuaWNhdGlvbnMKLTAwMjEzNCAgICAgKGJhc2UgMTYpCQlCcmFuZHl3aW5lIENvbW11bmljYXRpb25zCi0JCQkJMTE1MyBXYXJuZXIgQXZlCi0JCQkJVHVzdGluIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zNSAgIChoZXgpCQlBTENBVEVMLUxVQ0VOVAotMDAyMTM1ICAgICAoYmFzZSAxNikJCUFMQ0FURUwtTFVDRU5UCi0JCQkJUmFtaXJleiBkZSBQcmFkbyA1Ci0JCQkJTWFkcmlkICAyODA0NQotCQkJCVNQQUlOCi0KLTAwLTIxLTM2ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIxMzYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVVMgSGlnaHdheSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtMzcgICAoaGV4KQkJQmF5IENvbnRyb2xzLCBMTEMKLTAwMjEzNyAgICAgKGJhc2UgMTYpCQlCYXkgQ29udHJvbHMsIExMQwotCQkJCTY1MjggV2VhdGhlcmZpZWxkIEN0Ci0JCQkJTWF1bWVlIE9IIDQzNTM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zOCAgIChoZXgpCQlDZXBoZWlkCi0wMDIxMzggICAgIChiYXNlIDE2KQkJQ2VwaGVpZAotCQkJCTkwNCBDYXJpYmJlYW4gRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTM5ICAgKGhleCkJCUVzY2hlcmxvZ2ljIEluYy4KLTAwMjEzOSAgICAgKGJhc2UgMTYpCQlFc2NoZXJsb2dpYyBJbmMuCi0JCQkJMTQ4MSBSb3NlYmFuayBSZC4KLQkJCQlQaWNrZXJpbmcgT250YXJpbyBMMVYgMVAzCi0JCQkJQ0FOQURBCi0KLTAwLTIxLTNBICAgKGhleCkJCVdpbmNoZXN0ZXIgU3lzdGVtcyBJbmMuCi0wMDIxM0EgICAgIChiYXNlIDE2KQkJV2luY2hlc3RlciBTeXN0ZW1zIEluYy4KLQkJCQkxMDEgQmlsbGVyaWNhIEF2ZW51ZQotCQkJCUJsZGcgNSBzdWl0ZSAxMDEKLQkJCQlCaWxsZXJpY2EsIE1BIDAxODYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zQiAgIChoZXgpCQlCZXJrc2hpcmUgUHJvZHVjdHMsIEluYwotMDAyMTNCICAgICAoYmFzZSAxNikJCUJlcmtzaGlyZSBQcm9kdWN0cywgSW5jCi0JCQkJUE8gQm94IDI4MTkKLQkJCQlDdW1taW5nIEdBIDMwMDI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zQyAgIChoZXgpCQlBbGlwaENvbQotMDAyMTNDICAgICAoYmFzZSAxNikJCUFsaXBoQ29tCi0JCQkJMTUwIEV4ZWN1dGl2ZSBQYXJrIEJsdmQKLQkJCQlTdWl0ZSA0NTUwCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtM0QgICAoaGV4KQkJQ2VybWV0ZWsgTWljcm9lbGVjdHJvbmljcywgSW5jLgotMDAyMTNEICAgICAoYmFzZSAxNikJCUNlcm1ldGVrIE1pY3JvZWxlY3Ryb25pY3MsIEluYy4KLQkJCQkzNzQgVHVycXVvaXNlIFN0cmVldAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS0zRSAgIChoZXgpCQlUb21Ub20KLTAwMjEzRSAgICAgKGJhc2UgMTYpCQlUb21Ub20KLQkJCQlPb3N0ZXJkb2tzc3RyYWF0IDExNAotCQkJCUFtc3RlcmRhbSBOb3J0aCBIb2xsYW5kIDEwMTEgREsKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMS0zRiAgIChoZXgpCQlBLVRlYW0gVGVjaG5vbG9neSBMdGQuCi0wMDIxM0YgICAgIChiYXNlIDE2KQkJQS1UZWFtIFRlY2hub2xvZ3kgTHRkLgotCQkJCVJtLiAxNjA4LCAxNi9GLiwgTWV0cm9wb2xlIFNxdWFyZSwKLQkJCQkyIE9uIFlpdSBTdC4sIFNoYXRpbiwKLQkJCQlOZXcgVGVycml0b3JpZXMsICAKLQkJCQlIT05HIEtPTkcKLQotMDAtMjEtNDAgICAoaGV4KQkJRU4gVGVjaG5vbG9naWVzIEluYy4KLTAwMjE0MCAgICAgKGJhc2UgMTYpCQlFTiBUZWNobm9sb2dpZXMgSW5jLgotCQkJCUdldW1ib2sgQmxkZy4gOUYsIEJhbmQteWktZG9uZyA0NS0yLCBTb25ncGEtZ3UKLQkJCQlTZW91bCAgMTM4LTgyOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS00MSAgIChoZXgpCQlSQURMSVZFCi0wMDIxNDEgICAgIChiYXNlIDE2KQkJUkFETElWRQotCQkJCTQgSGFuZWNob3NoZXQgU3QuCi0JCQkJVGVsIEF2aXYgIDY5NzEwCi0JCQkJSVNSQUVMCi0KLTAwLTIxLTQyICAgKGhleCkJCUFkdmFuY2VkIENvbnRyb2wgU3lzdGVtcyBkb28KLTAwMjE0MiAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBDb250cm9sIFN5c3RlbXMgZG9vCi0JCQkJQnVsZXZhciBab3JhbmEgRGppbmRqaWNhIDhhCi0JCQkJQmVsZ3JhZGUgU2VyYmlhIDExMDcwCi0KLTAwLTIxLTQzICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIxNDMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS00NCAgIChoZXgpCQlTUyBUZWxlY29tcwotMDAyMTQ0ICAgICAoYmFzZSAxNikJCVNTIFRlbGVjb21zCi0JCQkJMjMgQm90aGEgQXZlbnVlCi0JCQkJTHl0dGVsdG9uIE1hbm9yCi0JCQkJQ2VudHVyaW9uIEdhdXRlbmcgMDE0MAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0yMS00NSAgIChoZXgpCQlTZW1wdGlhbiBUZWNobm9sb2dpZXMgTHRkLgotMDAyMTQ1ICAgICAoYmFzZSAxNikJCVNlbXB0aWFuIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJTm8uIDgwOSwgIFRvd2VyIEIsIFNoaSBKaSBLZSBNYW8KLQkJCQlOby4gNjYgUmQuIFpob25nZ3VhbiBDdW4gRG9uZwotCQkJCUJlaWppbmcgIDEwMDE5MAotCQkJCUNISU5BCi0KLTAwLTIxLTQ2ICAgKGhleCkJCVNDSSBUZWNobm9sb2d5Ci0wMDIxNDYgICAgIChiYXNlIDE2KQkJU0NJIFRlY2hub2xvZ3kKLQkJCQlQT0IgMTAwMAotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTQ3ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyMTQ3ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTIxLTQ4ICAgKGhleCkJCUthY28gU29sYXIgS29yZWEKLTAwMjE0OCAgICAgKGJhc2UgMTYpCQlLYWNvIFNvbGFyIEtvcmVhCi0JCQkJQ2h1bmctd29uLWt1IFNhbmctZGVhLXdvbi1kb25nIDMzMy0xCi0JCQkJU29uZ25hbSBLeXVuZy1raWRvIDQ2Mi04MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtNDkgICAoaGV4KQkJQ2hpbmEgRGFoZW5nIEdyb3VwICxJbmMuCi0wMDIxNDkgICAgIChiYXNlIDE2KQkJQ2hpbmEgRGFoZW5nIEdyb3VwICxJbmMuCi0JCQkJMTJGIERhaGVuZyBTY2llbmNlICYgVGVjaG5vbG9neSBUb3dlciAsTk8uMyBTdXpob3UgU3RyLgotCQkJCUJlaWppbmcgIDEwMDA4MAotCQkJCUNISU5BCi0KLTAwLTIxLTRBICAgKGhleCkJCVBpeGVsIFZlbG9jaXR5LCBJbmMKLTAwMjE0QSAgICAgKGJhc2UgMTYpCQlQaXhlbCBWZWxvY2l0eSwgSW5jCi0JCQkJMzkxNyBSZXNlYXJjaCBQYXJrIERyLgotCQkJCVN1aXRlIEI3Ci0JCQkJQW5uIEFyYm9yIE1JIDQ4MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS00QiAgIChoZXgpCQlTaGVuemhlbiBIQU1QIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLixMdGQKLTAwMjE0QiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBIQU1QIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4zMDItMzAzLDMgRmxvb3IsRGlzdHJpY3QgQSxUQ0wgVG93ZXIsR2FveGluIE5hbiBZaSBSb2FkLE5hblNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjEtNEMgICAoaGV4KQkJU0FNU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLTAwMjE0QyAgICAgKGJhc2UgMTYpCQlTQU1TVU5HIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTQxNiwgTUVUQU4tM0RPTkcsCi0JCQkJWU9VTkdUT05HLUdVCi0JCQkJU1VXT04gS1lVTkdLSS1ETyA0NDItNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTREICAgKGhleCkJCUd1YW5nemhvdSBTa3l0b25lIFRyYW5zbWlzc2lvbiBUZWNobm9sb2d5IENvbS4gTHRkLgotMDAyMTREICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBTa3l0b25lIFRyYW5zbWlzc2lvbiBUZWNobm9sb2d5IENvbS4gTHRkLgotCQkJCTMvRiBXZXN0LCBCbG9jayA0LCBIdWFuZ3pob3UKLQkJCQlJbmR1c3RyaWFsIFBhcmssIENoZWJlaSBSb2FkLgotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYwCi0JCQkJQ0hJTkEKLQotMDAtMjEtNEUgICAoaGV4KQkJR1MgWXVhc2EgUG93ZXIgU3VwcGx5IEx0ZC4KLTAwMjE0RSAgICAgKGJhc2UgMTYpCQlHUyBZdWFzYSBQb3dlciBTdXBwbHkgTHRkLgotCQkJCTEsIElub2JhbmJhLWNobywgTmlzaGlub3NobywgS2lzc2hvaW4sIE1pbmFtaS1rdSwKLQkJCQlLeW90byAgNjAxLTg1MjAKLQkJCQlKQVBBTgotCi0wMC0yMS00RiAgIChoZXgpCQlBTFBTIEVsZWN0cmljIENvLiwgTHRkCi0wMDIxNEYgICAgIChiYXNlIDE2KQkJQUxQUyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGkKLQkJCQlTb21hIGNpdHkgRnVrdXNoaW1hIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjEtNTAgICAoaGV4KQkJRVlFVklFVyBFTEVDVFJPTklDUwotMDAyMTUwICAgICAoYmFzZSAxNikJCUVZRVZJRVcgRUxFQ1RST05JQ1MKLQkJCQkzIEZsb29yLCBOby4gODYsIEt1bmcgWWVoIDMyIFJvYWQKLQkJCQlUQUlDSFVORyAgNDA3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMS01MSAgIChoZXgpCQlNaWxsaW5ldCBDby4sIEx0ZC4KLTAwMjE1MSAgICAgKGJhc2UgMTYpCQlNaWxsaW5ldCBDby4sIEx0ZC4KLQkJCQkyRiwgV2VzdCBCdWlsZGluZywgSVQgVmVudHVyZSBUb3dlciwgNzgsIEdhcmFrYm9uLURvbmcKLQkJCQlTb25ncGEtZ3UgU2VvdWwgMTM4LTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS01MiAgIChoZXgpCQlHZW5lcmFsIFNhdGVsbGl0ZSBSZXNlYXJjaCAmIERldmVsb3BtZW50IExpbWl0ZWQKLTAwMjE1MiAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIFNhdGVsbGl0ZSBSZXNlYXJjaCAmIERldmVsb3BtZW50IExpbWl0ZWQKLQkJCQlMaXQuICJFIiwgYnVpbGRpbmcgMiwgNCBOb3ZvbGFkb3poc2theWEgc3RyCi0JCQkJU2FpbnQgUGV0ZXJzYnVyZyAgMTk3MTEwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTIxLTUzICAgKGhleCkJCVNlYU1pY3JvIEluYy4KLTAwMjE1MyAgICAgKGJhc2UgMTYpCQlTZWFNaWNybyBJbmMuCi0JCQkJMzI1MCBKYXkgU3RyZWV0Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTU0ICAgKGhleCkJCUQtVEFDUSBTb2x1dGlvbnMgTHRkCi0wMDIxNTQgICAgIChiYXNlIDE2KQkJRC1UQUNRIFNvbHV0aW9ucyBMdGQKLQkJCQlKYW1lcyBXYXR0IEJ1aWxkaW5nCi0JCQkJU0VUUAotCQkJCUVhc3QgS2lsYnJpZGUgTGFuYXJrc2hpcmUgRzc1IDBRRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIxLTU1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjE1NSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS01NiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIxNTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNTcgICAoaGV4KQkJTmF0aW9uYWwgRGF0YWNhc3QsIEluYy4KLTAwMjE1NyAgICAgKGJhc2UgMTYpCQlOYXRpb25hbCBEYXRhY2FzdCwgSW5jLgotCQkJCTIxMDAgQ3J5c3RhbCBEcml2ZSwgU3VpdGUgNzUwCi0JCQkJQXJsaW5ndG9uIFZBIDIyMjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS01OCAgIChoZXgpCQlTdHlsZSBGbHlpbmcgVGVjaG5vbG9neSBDby4KLTAwMjE1OCAgICAgKGJhc2UgMTYpCQlTdHlsZSBGbHlpbmcgVGVjaG5vbG9neSBDby4KLQkJCQkyMi9GLEN5YmVyIFRvd2VyIEIsTm8uMiBaaG9uZyBHdWFuIEN1biBTb3V0aCBTdHJlZXQsSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwODYKLQkJCQlDSElOQQotCi0wMC0yMS01OSAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi0wMDIxNTkgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTi4gTWF0aGlsZGEgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS01QSAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAyMTVBICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMgotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTVCICAgKGhleCkJCUlub3RpdmUKLTAwMjE1QiAgICAgKGJhc2UgMTYpCQlJbm90aXZlCi0JCQkJRGUgUGluY2thcnQgNTQKLQkJCQlOdWVuZW4gTm9vcmQgQnJhYmFudCA1Njc0IENDCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjEtNUMgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDIxNUMgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yMS01RCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjE1RCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTIxLTVFICAgKGhleCkJCUlCTSBDb3JwCi0wMDIxNUUgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTVGICAgKGhleCkJCUlIU0UgR21iSAotMDAyMTVGICAgICAoYmFzZSAxNikJCUlIU0UgR21iSAotCQkJCU1heWJhY2hzdHJhc3NlIDExCi0JCQkJT2JlcnRldXJpbmdlbiBCYWRlbi1Xw7xydHRlbWJlcmcgODgwOTQKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLTYwICAgKGhleCkJCUhpZGVhIFNvbHV0aW9ucyBDby4gTHRkLgotMDAyMTYwICAgICAoYmFzZSAxNikJCUhpZGVhIFNvbHV0aW9ucyBDby4gTHRkLgotCQkJCTRGLCBEbyZDYW4gaG91c2UgRGxkZy4sICM2NTYtMTY4MywgU2VvbmdzdSAxLWdhIDItZG9uZywgU2Vvbmdkb25nLWd1Ci0JCQkJU2VvdWwgIDY1Ni0xNjgzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTYxICAgKGhleCkJCVlvdXJuZXQgSW5jLgotMDAyMTYxICAgICAoYmFzZSAxNikJCVlvdXJuZXQgSW5jLgotCQkJCUtUIFImRCBDZW50ZXIKLQkJCQkxNyBVbXllb24tZG9uZywgU2VvY2hvLWd1Ci0JCQkJU2VvdWwgIDEzNy03OTIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtNjIgICAoaGV4KQkJTm9ydGVsCi0wMDIxNjIgICAgIChiYXNlIDE2KQkJTm9ydGVsCi0JCQkJMTgzMCBNYXRoZXNvbiBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAxCi0JCQkJTWlzc2lzc2F1Z2EgT250YXJpbyBMNFcgMEIzCi0JCQkJQ0FOQURBCi0KLTAwLTIxLTYzICAgKGhleCkJCUFTS0VZIENPTVBVVEVSIENPUlAKLTAwMjE2MyAgICAgKGJhc2UgMTYpCQlBU0tFWSBDT01QVVRFUiBDT1JQCi0JCQkJMTBGLE5PLjExOS5DSElFTktBTkcgUkQsQ0hVTkctSE8sCi0JCQkJVEFJUEVJIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtNjQgICAoaGV4KQkJU3BlY2lhbCBEZXNpZ24gQnVyZWF1IGZvciBTZWlzbWljIEluc3RydW1lbnRhdGlvbgotMDAyMTY0ICAgICAoYmFzZSAxNikJCVNwZWNpYWwgRGVzaWduIEJ1cmVhdSBmb3IgU2Vpc21pYyBJbnN0cnVtZW50YXRpb24KLQkJCQkxMjksIEtyYWlueWF5YSBTdHIuCi0JCQkJU2FyYXRvdiBTYXJhdG92IHJlZ2lvbiA0MTAwMTkKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjEtNjUgICAoaGV4KQkJUHJlc3N0ZWsgSW5jLgotMDAyMTY1ICAgICAoYmFzZSAxNikJCVByZXNzdGVrIEluYy4KLQkJCQk1NSBFeGVjdXRpdmUgRHJpdmUKLQkJCQlIdWRzb24gTmV3IEhhbXBzaGlyZSAwMzA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNjYgICAoaGV4KQkJTm92QXRlbCBJbmMuCi0wMDIxNjYgICAgIChiYXNlIDE2KQkJTm92QXRlbCBJbmMuCi0JCQkJMTEyMCAtIDY4IEF2ZSBORQotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMkUgOFM1Ci0JCQkJQ0FOQURBCi0KLTAwLTIxLTY3ICAgKGhleCkJCUhXQSBKSU4gVCZJIENvcnAuCi0wMDIxNjcgICAgIChiYXNlIDE2KQkJSFdBIEpJTiBUJkkgQ29ycC4KLQkJCQk1Ri4sIFNFSFdBIEJsZGcgMTY0LTI0LCBQb2ktZG9uZywgR2FuZ25hbS1ndSwgU2VvdWwsIEtvcmVhCi0JCQkJR2FuZ25hbS1ndSBTZW91bCAxMzUtOTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTY4ICAgKGhleCkJCWlWZWlhLCBMTEMKLTAwMjE2OCAgICAgKGJhc2UgMTYpCQlpVmVpYSwgTExDCi0JCQkJNTEgRnJhbmtsaW4gU3RyZWV0Ci0JCQkJU3VpdGUgMzAxCi0JCQkJQW5uYXBvbGlzIE1EIDIxNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS02OSAgIChoZXgpCQlQcm9sb2dpeCwgTExDLgotMDAyMTY5ICAgICAoYmFzZSAxNikJCVByb2xvZ2l4LCBMTEMuCi0JCQkJMTcyMTcgTkUgMTMzcmQgUGxhY2UKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTItMjE1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNkEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDIxNkEgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yMS02QiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjE2QiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTIxLTZDICAgKGhleCkJCU9EVkEKLTAwMjE2QyAgICAgKGJhc2UgMTYpCQlPRFZBCi0JCQkJNDIyMCBWYXJzaXR5IERyaXZlCi0JCQkJU3VpdGUgQQotCQkJCUFubiBBcmJvciBNSSA0ODEwOC01MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS02RCAgIChoZXgpCQlTb2x0ZWNoIENvLiwgTHRkLgotMDAyMTZEICAgICAoYmFzZSAxNikJCVNvbHRlY2ggQ28uLCBMdGQuCi0JCQkJIzMwLTMsM0YKLQkJCQlXb25oeW9ybzItS2EKLQkJCQlZb25nc2FuIEt1IFNlb3VsIDE0MDgzNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS02RSAgIChoZXgpCQlGdW5jdGlvbiBBVEkgKEh1aXpob3UpIFRlbGVjb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwMjE2RSAgICAgKGJhc2UgMTYpCQlGdW5jdGlvbiBBVEkgKEh1aXpob3UpIFRlbGVjb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQlOby4gOCwgSHVpdGFpIFJvYWQsIEh1aXRhaSBJbmR1c3RyaWFsIFpvbmUKLQkJCQlIdWl6aG91IENpdHkgR3Vhbmdkb25nIFByb3ZpbmNlIDUxNjAwNgotCQkJCUNISU5BCi0KLTAwLTIxLTZGICAgKGhleCkJCVN5bUNvbSwgSW5jLgotMDAyMTZGICAgICAoYmFzZSAxNikJCVN5bUNvbSwgSW5jLgotCQkJCTI4ODAgTm9ydGggUGxhemEgRHJpdmUKLQkJCQlSYXBpZCBDaXR5IFNEIDU3NzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS03MCAgIChoZXgpCQlEZWxsIEluYwotMDAyMTcwICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS03MSAgIChoZXgpCQlXZXN1bmcgVE5DIENvLiwgTHRkLgotMDAyMTcxICAgICAoYmFzZSAxNikJCVdlc3VuZyBUTkMgQ28uLCBMdGQuCi0JCQkJMTAyLTE0MDksIEJ1Y2hlb24gQ2h1bnVpIFRlY2hub3BhcmsgMXN0LAotCQkJCTIwMC0xLCBDaHVudWktZG9uZywgV29ubWktR3UKLQkJCQlCdWNoZW9uLUNpdHksIEd5ZW9uZ2dnaS1EbyA0MjAtODU3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTcyICAgKGhleCkJCVNlb3VsdGVrIFZhbGxleQotMDAyMTcyICAgICAoYmFzZSAxNikJCVNlb3VsdGVrIFZhbGxleQotCQkJCUJhbmctaSBEb25nIDUxLTUsIFNvbmdwYQotCQkJCVNlb3VsICAxMzgtMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLTczICAgKGhleCkJCUlvbiBUb3JyZW50IFN5c3RlbXMsIEluYy4KLTAwMjE3MyAgICAgKGJhc2UgMTYpCQlJb24gVG9ycmVudCBTeXN0ZW1zLCBJbmMuCi0JCQkJMzcgU291bmR2aWV3IFJkCi0JCQkJU3VpdGUgIDIKLQkJCQlHdWlsZm9yZCBDVCAwNjQzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNzQgICAoaGV4KQkJQXZhTEFOIFdpcmVsZXNzCi0wMDIxNzQgICAgIChiYXNlIDE2KQkJQXZhTEFOIFdpcmVsZXNzCi0JCQkJOTU4IFNhbiBMZWFuZHJvIEF2ZSwgU3VpdGUgOTAwCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtNzUgICAoaGV4KQkJUGFjaWZpYyBTYXRlbGxpdGUgSW50ZXJuYXRpb25hbCBMdGQuCi0wMDIxNzUgICAgIChiYXNlIDE2KQkJUGFjaWZpYyBTYXRlbGxpdGUgSW50ZXJuYXRpb25hbCBMdGQuCi0JCQkJMjAvRiBUYWkgVHVuZyBCdWlsZGluZywKLQkJCQk4IEZsZW1pbmcgUm9hZCwKLQkJCQlXYW5jaGFpICAxMDAwMDAKLQkJCQlIT05HIEtPTkcKLQotMDAtMjEtNzYgICAoaGV4KQkJWU1heCBUZWxlY29tIEx0ZC4KLTAwMjE3NiAgICAgKGJhc2UgMTYpCQlZTWF4IFRlbGVjb20gTHRkLgotCQkJCTExIE1vc2hlIExldmkgc3RyLgotCQkJCVVNSSBCdWlsZGluZwotCQkJCVJpc2hvbiBMZSBaaW9uICA3NTY1OAotCQkJCUlTUkFFTAotCi0wMC0yMS03NyAgIChoZXgpCQlXLiBMLiBHb3JlICYgQXNzb2NpYXRlcwotMDAyMTc3ICAgICAoYmFzZSAxNikJCVcuIEwuIEdvcmUgJiBBc3NvY2lhdGVzCi0JCQkJNDAyIFZpZXZlcyBXYXkKLQkJCQlFbGt0b24gTUQgMjE5MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTc4ICAgKGhleCkJCU1hdHVzY2hlayBNZXNzdGVjaG5payBHbWJICi0wMDIxNzggICAgIChiYXNlIDE2KQkJTWF0dXNjaGVrIE1lc3N0ZWNobmlrIEdtYkgKLQkJCQlXZXJuZXIgSGVpc2VuYmVyZyBTdHJhw4PFuGUgMTQKLQkJCQlBbHNkb3JmIE5SVyA1MjQ3NwotCQkJCUdFUk1BTlkKLQotMDAtMjEtNzkgICAoaGV4KQkJSU9HRUFSLCBJbmMuCi0wMDIxNzkgICAgIChiYXNlIDE2KQkJSU9HRUFSLCBJbmMuCi0JCQkJMjMgSHViYmxlCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS03QSAgIChoZXgpCQlTZWppbiBFbGVjdHJvbiwgSW5jLgotMDAyMTdBICAgICAoYmFzZSAxNikJCVNlamluIEVsZWN0cm9uLCBJbmMuCi0JCQkJU0ogVGVjaG5vdmlsbGUKLQkJCQk0dGggRmxvb3IgUm9vbSA0MTIsIDYwLTE5IEthU2FuLURvbmcsIEtldW1DaG9uLUt1Ci0JCQkJU2VvdWwgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtN0IgICAoaGV4KQkJQmFzdGVjIEFCCi0wMDIxN0IgICAgIChiYXNlIDE2KQkJQmFzdGVjIEFCCi0JCQkJSMOkc3R2w6RnZW4gNEEKLQkJCQlNYWxtw7YgTSAyMTIgMzUKLQkJCQlTV0VERU4KLQotMDAtMjEtN0MgICAoaGV4KQkJMldpcmUKLTAwMjE3QyAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTdEICAgKGhleCkJCVBZWElTIFMuUi5MLgotMDAyMTdEICAgICAoYmFzZSAxNikJCVBZWElTIFMuUi5MLgotCQkJCUMvTyBESVAuIElORk9STUFUSUNBIEUgU0lTVEVNSVNUSUNBIC0gVU5JVkVSU0lUWSBPRiBQQVZJQQotCQkJCVZJQSBGRVJSQVRBIDEKLQkJCQlQQVZJQSAgMjcxMDAKLQkJCQlJVEFMWQotCi0wMC0yMS03RSAgIChoZXgpCQlUZWxpdCBDb21tdW5pY2F0aW9uIHMucC5hCi0wMDIxN0UgICAgIChiYXNlIDE2KQkJVGVsaXQgQ29tbXVuaWNhdGlvbiBzLnAuYQotCQkJCVZpYSBzdGF6aW9uZSBkaSBwcm9zZWNjbyA1QgotCQkJCVNHT05JQ08gVHJpZXN0ZSAzNDAxMAotCQkJCUlUQUxZCi0KLTAwLTIxLTdGICAgKGhleCkJCUludHJhY28gVGVjaG5vbG9neSBQdGUgTHRkCi0wMDIxN0YgICAgIChiYXNlIDE2KQkJSW50cmFjbyBUZWNobm9sb2d5IFB0ZSBMdGQKLQkJCQk3NTBlIENoYWkgQ2hlZSBSb2FkICMwNS0wMQotCQkJCVNpbmdhcG9yZSAgNDY5MDAwNQotCQkJCVNJTkdBUE9SRQotCi0wMC0yMS04MCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMTgwICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtODEgICAoaGV4KQkJU2kyIE1pY3Jvc3lzdGVtcyBMaW1pdGVkCi0wMDIxODEgICAgIChiYXNlIDE2KQkJU2kyIE1pY3Jvc3lzdGVtcyBMaW1pdGVkCi0JCQkJTm8gODQsIFN5IE5vIDE1MCwgRVBJUCwgV2hpdGVmaWVsZCBJbmR1c3RyaWFsIEFyZWEKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDA2NgotCQkJCUlORElBCi0KLTAwLTIxLTgyICAgKGhleCkJCVNhbmRMaW5rcyBTeXN0ZW1zLCBMdGQuCi0wMDIxODIgICAgIChiYXNlIDE2KQkJU2FuZExpbmtzIFN5c3RlbXMsIEx0ZC4KLQkJCQlQLk8uQm94IDQ2MjkKLQkJCQlQZXRhaC1UaXF3YSBJc3JhZWwgNDkyNzcKLQkJCQlJU1JBRUwKLQotMDAtMjEtODMgICAoaGV4KQkJVkFURUNIIEhZRFJPCi0wMDIxODMgICAgIChiYXNlIDE2KQkJVkFURUNIIEhZRFJPCi0JCQkJV2llbmVyYmVyZ3N0cmFzc2UgNDEKLQkJCQlPYmplY3QgRAotCQkJCVZpZW5uYSAgQS0xMTIwCi0JCQkJQVVTVFJJQQotCi0wMC0yMS04NCAgIChoZXgpCQlQT1dFUlNPRlQgU1JMCi0wMDIxODQgICAgIChiYXNlIDE2KQkJUE9XRVJTT0ZUIFNSTAotCQkJCVZJQSBFTlJJQ08gQ09OVEksIDUKLQkJCQlTQ0FORElDQ0kgRkkgNTAwMTgKLQkJCQlJVEFMWQotCi0wMC0yMS04NSAgIChoZXgpCQlNSUNSTy1TVEFSIElOVCdMIENPLixMVEQuCi0wMDIxODUgICAgIChiYXNlIDE2KQkJTUlDUk8tU1RBUiBJTlQnTCBDTy4sTFRELgotCQkJCU5vLjY5LExpLURlIFN0LEp1bmctSG8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMS04NiAgIChoZXgpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZAotMDAyMTg2ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkCi0JCQkJMTQxLCBMYW5lIDM1MSwgU2VjLjEsIFRhaXBpbmcgUm9hZCwKLQkJCQlUU0FPVFVFTiAKLQkJCQlOQU5UT1UgIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMS04NyAgIChoZXgpCQlJbWFjcyBHbWJICi0wMDIxODcgICAgIChiYXNlIDE2KQkJSW1hY3MgR21iSAotCQkJCU1pdHRlbGZlbGRzdHJhc3NlIDI1Ci0JCQkJS29ybndlc3RoZWltIEdlcm1hbnkgRC03MDgwNgotCQkJCUdFUk1BTlkKLQotMDAtMjEtODggICAoaGV4KQkJRU1DIENvcnBvcmF0aW9uCi0wMDIxODggICAgIChiYXNlIDE2KQkJRU1DIENvcnBvcmF0aW9uCi0JCQkJMjQyMSBNaXNzaW9uIENvbGxlZ2UgQmx2ZAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS04OSAgIChoZXgpCQlBcHBUZWNoLCBJbmMuCi0wMDIxODkgICAgIChiYXNlIDE2KQkJQXBwVGVjaCwgSW5jLgotCQkJCTM2MyBHcmV5aG91bmQgUGFzcwotCQkJCUNhcm1lbCBJbmRpYW5hIDQ2MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS04QSAgIChoZXgpCQlFbGVjdHJvbmljIERlc2lnbiBhbmQgTWFudWZhY3R1cmluZyBDb21wYW55Ci0wMDIxOEEgICAgIChiYXNlIDE2KQkJRWxlY3Ryb25pYyBEZXNpZ24gYW5kIE1hbnVmYWN0dXJpbmcgQ29tcGFueQotCQkJCTMxIE1pbGxyYWNlIERyCi0JCQkJTHluY2hidXJnIFZBIDI0NTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS04QiAgIChoZXgpCQlXZXNjb24gVGVjaG5vbG9neSwgSW5jLgotMDAyMThCICAgICAoYmFzZSAxNikJCVdlc2NvbiBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNDY1NS0xNzAgT2xkIElyb25zaWRlcyBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENhbGlmb3JuaWEgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLThDICAgKGhleCkJCVRvcENvbnRyb2wgR01CSAotMDAyMThDICAgICAoYmFzZSAxNikJCVRvcENvbnRyb2wgR01CSAotCQkJCUVuemVuYmVyZ3dlZyAyNC9BCi0JCQkJVGVybGFuIChCWikgIDM5MDE4Ci0JCQkJSVRBTFkKLQotMDAtMjEtOEQgICAoaGV4KQkJQVAgUm91dGVyIEluZC4gRWxldHJvbmljYSBMVERBCi0wMDIxOEQgICAgIChiYXNlIDE2KQkJQVAgUm91dGVyIEluZC4gRWxldHJvbmljYSBMVERBCi0JCQkJQXYuIExvbWFudG8gSnVuaW9yLCAxMDAwCi0JCQkJQmFpcnJvIFBvbnRhbAotCQkJCUlsaGV1cyBCYWhpYSA0NTY1NC0wMDAKLQkJCQlCUkFaSUwKLQotMDAtMjEtOEUgICAoaGV4KQkJTUVLSUNTIENPLiwgTFRELgotMDAyMThFICAgICAoYmFzZSAxNikJCU1FS0lDUyBDTy4sIExURC4KLQkJCQlJbmR1c3RyaWFsIFpvbmUgODYxLTEwLCBUYWVneWUtRG9uZwotCQkJCUNodW5jaG9uIEthbmd3b24gMjAwLTk0NAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS04RiAgIChoZXgpCQlBdmFudGdhcmRlIEFjb3VzdGljIExhdXRzcHJlY2hlcnN5c3RlbWUgR21iSAotMDAyMThGICAgICAoYmFzZSAxNikJCUF2YW50Z2FyZGUgQWNvdXN0aWMgTGF1dHNwcmVjaGVyc3lzdGVtZSBHbWJICi0JCQkJTmliZWx1bmdlbnN0ci4gMzQ5Ci0JCQkJTGF1dGVydGFsIC0gUmVpY2hlbmJhY2ggSGVzc2VuIEQtNjQ2ODYKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLTkwICAgKGhleCkJCUdvbGlhdGggU29sdXRpb25zCi0wMDIxOTAgICAgIChiYXNlIDE2KQkJR29saWF0aCBTb2x1dGlvbnMKLQkJCQkzMDgyIFN0ZXJsaW5nIENpcmNsZQotCQkJCUJvdWxkZXIgQ29sb3JhZG8gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLTkxICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotMDAyMTkxICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5PLjI4OSwgU2luaHUgM3JkIFJELgotCQkJCU5laWh1IERpc3RyaWN0IFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtOTIgICAoaGV4KQkJQmFvZGluZyBHYWxheHkgRWxlY3Ryb25pYyBUZWNobm9sb2d5ICBDby4sTHRkCi0wMDIxOTIgICAgIChiYXNlIDE2KQkJQmFvZGluZyBHYWxheHkgRWxlY3Ryb25pYyBUZWNobm9sb2d5ICBDby4sTHRkCi0JCQkJTk8uOTEgRmVuZ2ZhbiBSZC4sR2FvS2FpIERpc3RyaWN0LEJhb2RpbmcgQ2l0eSxIZWJlaSBQcm92LkNoaW5hIDA3MTA1MQotCQkJCUJhb2RpbmcgQ2l0eSBIZWJlaSBQcm92LiAwNzEwNTEKLQkJCQlDSElOQQotCi0wMC0yMS05MyAgIChoZXgpCQlWaWRlb2ZvbiBNVgotMDAyMTkzICAgICAoYmFzZSAxNikJCVZpZGVvZm9uIE1WCi0JCQkJNiBCbGFja29hayBNZXdzCi0JCQkJTmV3dG93biBQQSAxODk0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtOTQgICAoaGV4KQkJUGluZyBDb21tdW5pY2F0aW9uCi0wMDIxOTQgICAgIChiYXNlIDE2KQkJUGluZyBDb21tdW5pY2F0aW9uCi0JCQkJU2FuZGFrZXJ2ZWllbiAyNEMKLQkJCQlPc2xvICAwNDczCi0JCQkJTk9SV0FZCi0KLTAwLTIxLTk1ICAgKGhleCkJCUdXRCBNZWRpYSBMaW1pdGVkCi0wMDIxOTUgICAgIChiYXNlIDE2KQkJR1dEIE1lZGlhIExpbWl0ZWQKLQkJCQkxMCBMZWVkcyBSb2FkCi0JCQkJU2hlZmZpZWxkIFNvdXRoIFlvcmtzaGlyZSBTOSAzVFkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMS05NiAgIChoZXgpCQlUZWxzZXkgIFMucC5BLgotMDAyMTk2ICAgICAoYmFzZSAxNikJCVRlbHNleSAgUy5wLkEuCi0JCQkJVmlhbGUgZGVsbCdJbmR1c3RyaWEsIDEKLQkJCQlRdWludG8gRGlUcmV2aXNvIDMxMDU1Ci0JCQkJSVRBTFkKLQotMDAtMjEtOTcgICAoaGV4KQkJRUxJVEVHUk9VUCBDT01QVVRFUiBTWVNURU0KLTAwMjE5NyAgICAgKGJhc2UgMTYpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTQotCQkJCU5PLjIzOSwgU2VjLiAyLCBUaSBEaW5nIEJsdmQuLAotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIxLTk4ICAgKGhleCkJCVRoYWkgUmFkaW8gQ28sIExURAotMDAyMTk4ICAgICAoYmFzZSAxNikJCVRoYWkgUmFkaW8gQ28sIExURAotCQkJCUhpLVRlY2ggSW5kdXN0cmlhbCBFc3RhdGUKLQkJCQk3ODcgTTAwIDEgQmFhbmxhbmUgU3ViIERpc3RyaWN0IEJhbmcgUGEtSW4gRGlzdHJpY3QKLQkJCQlBeXV0dGhheWEgIDEzMTYwCi0JCQkJVEhBSUxBTkQKLQotMDAtMjEtOTkgICAoaGV4KQkJVmFjb24gUGxjCi0wMDIxOTkgICAgIChiYXNlIDE2KQkJVmFjb24gUGxjCi0JCQkJUC5PLkJveCAyNQotCQkJCVZhYXNhICA2NTM4MAotCQkJCUZJTkxBTkQKLQotMDAtMjEtOUEgICAoaGV4KQkJQ2FtYnJpZGdlIFZpc3VhbCBOZXR3b3JrcyBMdGQKLTAwMjE5QSAgICAgKGJhc2UgMTYpCQlDYW1icmlkZ2UgVmlzdWFsIE5ldHdvcmtzIEx0ZAotCQkJCTYxIFNlbHd5biBSb2FkCi0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCMyA5RUEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMS05QiAgIChoZXgpCQlEZWxsIEluYwotMDAyMTlCICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS05QyAgIChoZXgpCQlIb25leXdsZCBUZWNobm9sb2d5IENvcnAuCi0wMDIxOUMgICAgIChiYXNlIDE2KQkJSG9uZXl3bGQgVGVjaG5vbG9neSBDb3JwLgotCQkJCU5vLjQwLEhzdWVoLUZ1IFJkLgotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjEtOUQgICAoaGV4KQkJQWRlc3lzIEJWCi0wMDIxOUQgICAgIChiYXNlIDE2KQkJQWRlc3lzIEJWCi0JCQkJTW9sZW53ZWVyIDQKLQkJCQlXYXRlcmluZ2VuIFp1aWQgSG9sbGFuZCAyMjkxIE5SCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjEtOUUgICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLTAwMjE5RSAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNrw6VuZSAyMjE4OAotCQkJCVNXRURFTgotCi0wMC0yMS05RiAgIChoZXgpCQlTQVRFTCBPWQotMDAyMTlGICAgICAoYmFzZSAxNikJCVNBVEVMIE9ZCi0JCQkJTWVyaW5paXR5bmthdHUgMTcKLQkJCQlTQUxPIExhbnNpLVN1b21lbiBMYWFuaSAyNDEwMAotCQkJCUZJTkxBTkQKLQotMDAtMjEtQTAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMUEwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUExICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjFBMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1BMiAgIChoZXgpCQlFS0UtRWxlY3Ryb25pY3MgTHRkLgotMDAyMUEyICAgICAoYmFzZSAxNikJCUVLRS1FbGVjdHJvbmljcyBMdGQuCi0JCQkJUGlpc3BhbnBvcnR0aSA3Ci0JCQkJRVNQT08gIDAyMjQwCi0JCQkJRklOTEFORAotCi0wMC0yMS1BMyAgIChoZXgpCQlNaWNyb21pbnQKLTAwMjFBMyAgICAgKGJhc2UgMTYpCQlNaWNyb21pbnQKLQkJCQkxMTEgQ29tbWVyY2UgU3QKLQkJCQlMYWtlIE1hcnkgRkwgMzI3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUE0ICAgKGhleCkJCURiaWkgTmV0d29ya3MKLTAwMjFBNCAgICAgKGJhc2UgMTYpCQlEYmlpIE5ldHdvcmtzCi0JCQkJMjIxNyBWaWEgQmxhbmNhCi0JCQkJT2NlYW5zaWRlIENBIDkyMDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1BNSAgIChoZXgpCQlFUkxQaGFzZSBQb3dlciBUZWNobm9sb2dpZXMgTHRkLgotMDAyMUE1ICAgICAoYmFzZSAxNikJCUVSTFBoYXNlIFBvd2VyIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJNzQgU2N1cmZpZWxkIEJsdmQuCi0JCQkJV2lubmlwZWcgTWFuaXRvYmEgUjNZIDFHNAotCQkJCUNBTkFEQQotCi0wMC0yMS1BNiAgIChoZXgpCQlWaWRlb3RlYyBTcGEKLTAwMjFBNiAgICAgKGJhc2UgMTYpCQlWaWRlb3RlYyBTcGEKLQkJCQlWaWEgRnJpdWxpLDYKLQkJCQlTY2hpbyBWaWNlbnphIDM2MDE1Ci0JCQkJSVRBTFkKLQotMDAtMjEtQTcgICAoaGV4KQkJSGFudGxlIFN5c3RlbSBDby4sIEx0ZC4KLTAwMjFBNyAgICAgKGJhc2UgMTYpCQlIYW50bGUgU3lzdGVtIENvLiwgTHRkLgotCQkJCTQ4MS0xMCBCeXVja3NhbiBEaWdpdGFsIFZhbGx5IElJLCBSTSAxNTExCi0JCQkJR2FzYW4tRG9uZywgR3VtY2hvbi1HdQotCQkJCVNlb3VsIENpdHkgU2VvdWwgMTUzLTc4MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS1BOCAgIChoZXgpCQlUZWxlcGhvbmljcyBDb3Jwb3JhdGlvbgotMDAyMUE4ICAgICAoYmFzZSAxNikJCVRlbGVwaG9uaWNzIENvcnBvcmF0aW9uCi0JCQkJODE1IEJyb2FkIEhvbGxvdyBSb2FkCi0JCQkJRmFybWluZ2RhbGUgTmV3IFlvcmsgMTE3OTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUE5ICAgKGhleCkJCU1vYmlsaW5rIFRlbGVjb20gQ28uLEx0ZAotMDAyMUE5ICAgICAoYmFzZSAxNikJCU1vYmlsaW5rIFRlbGVjb20gQ28uLEx0ZAotCQkJCTI5Mi0zIFNpbmRhbmctcmksIFNhbmRvbmctbXl1bgotCQkJCUd1bWkgR3llb25nYnVrIDczMC04NTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtQUEgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjFBQSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjEtQUIgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjFBQiAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MCBWCi0JCQkJREVOTUFSSwotCi0wMC0yMS1BQyAgIChoZXgpCQlJbmZyYXJlZCBJbnRlZ3JhdGVkIFN5c3RlbXMgTHRkCi0wMDIxQUMgICAgIChiYXNlIDE2KQkJSW5mcmFyZWQgSW50ZWdyYXRlZCBTeXN0ZW1zIEx0ZAotCQkJCVBhcmsgQ2lyY2xlLCBUaXRoZSBCYXJuIFdheQotCQkJCVN3YW4gVmFsbGV5Ci0JCQkJTm9ydGhhbXB0b24gTm9ydGhhbnRzIE5ONCA5QkcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMS1BRCAgIChoZXgpCQlOb3JkaWMgSUQgT3kKLTAwMjFBRCAgICAgKGJhc2UgMTYpCQlOb3JkaWMgSUQgT3kKLQkJCQlNeWxseW9qYW5rYXR1IDJBCi0JCQkJU0FMTyAgRklOLTI0MTAwCi0JCQkJRklOTEFORAotCi0wMC0yMS1BRSAgIChoZXgpCQlBTENBVEVMLUxVQ0VOVCBGUkFOQ0UgLSBXVEQKLTAwMjFBRSAgICAgKGJhc2UgMTYpCQlBTENBVEVMLUxVQ0VOVCBGUkFOQ0UgLSBXVEQKLQkJCQk3LTksIEF2ZW51ZSBNb3JhbmUgU2F1bG5pZXIKLQkJCQlCUCA1NwotCQkJCVZFTElaWSAgNzgxNDEKLQkJCQlGUkFOQ0UKLQotMDAtMjEtQUYgICAoaGV4KQkJUmFkaW8gRnJlcXVlbmN5IFN5c3RlbXMKLTAwMjFBRiAgICAgKGJhc2UgMTYpCQlSYWRpbyBGcmVxdWVuY3kgU3lzdGVtcwotCQkJCUthYmVsa2FtcCAyMAotCQkJCUhhbm5vdmVyICAzMDE3OQotCQkJCUdFUk1BTlkKLQotMDAtMjEtQjAgICAoaGV4KQkJVHljbyBUZWxlY29tbXVuaWNhdGlvbnMKLTAwMjFCMCAgICAgKGJhc2UgMTYpCQlUeWNvIFRlbGVjb21tdW5pY2F0aW9ucwotCQkJCTEwMTEgUGF3dHVja2V0IEJsdmQKLQkJCQlMb3dlbGwgTWFzc2FjaHVzZXR0cyAwMTg1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQjEgICAoaGV4KQkJRElHSVRBTCBTT0xVVElPTlMgTFRECi0wMDIxQjEgICAgIChiYXNlIDE2KQkJRElHSVRBTCBTT0xVVElPTlMgTFRECi0JCQkJVHNhcmlncmFkc2tvIFNob3NlIDdrbSBCTFZECi0JCQkJSGkgVGVjaCBQYXJrIEl6b3QsCi0JCQkJU29maWEgU29maWEgMTc4NAotCQkJCUJVTEdBUklBCi0KLTAwLTIxLUIyICAgKGhleCkJCUZpYmVyYmxhemUgQS9TCi0wMDIxQjIgICAgIChiYXNlIDE2KQkJRmliZXJibGF6ZSBBL1MKLQkJCQlLaWxkZXZhbmdzdmVqIDkKLQkJCQlHb2VkZXJ1cAotCQkJCVJvc2tpbGRlICA0MDAwCi0JCQkJREVOTUFSSwotCi0wMC0yMS1CMyAgIChoZXgpCQlSb3NzIENvbnRyb2xzCi0wMDIxQjMgICAgIChiYXNlIDE2KQkJUm9zcyBDb250cm9scwotCQkJCU9uZSBSb3NzIFdheQotCQkJCUxhdm9uaWEgR0EgMzA1NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUI0ICAgKGhleCkJCUFQUk8gTUVESUEgQ08uLCBMVEQKLTAwMjFCNCAgICAgKGJhc2UgMTYpCQlBUFJPIE1FRElBIENPLiwgTFRECi0JCQkJIzEzLTUsRG9kYW5nLURvbmcsV29ubWktR3UsCi0JCQkJQnVjaGVvbi1DaXR5IEt5dW5nZ2ktRG8gNDIwLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS1CNSAgIChoZXgpCQlWeXJvIEdhbWVzIExpbWl0ZWQKLTAwMjFCNSAgICAgKGJhc2UgMTYpCQlWeXJvIEdhbWVzIExpbWl0ZWQKLQkJCQkxNCBTdC4gU3RlcGhlbidzIEdyZWVuCi0JCQkJRHVibGluICAyCi0JCQkJSVJFTEFORAotCi0wMC0yMS1CNiAgIChoZXgpCQlUcmlhY3RhIFBvd2VyIFRlY2hub2xvZ2llcyBJbmMuCi0wMDIxQjYgICAgIChiYXNlIDE2KQkJVHJpYWN0YSBQb3dlciBUZWNobm9sb2dpZXMgSW5jLgotCQkJCUJveCA1ODIsIDcgTWlsbCBTdHJlZXQKLQkJCQlBbG1vbnRlIE9udGFyaW8gSzBBIDFBMAotCQkJCUNBTkFEQQotCi0wMC0yMS1CNyAgIChoZXgpCQlMZXhtYXJrIEludGVybmF0aW9uYWwgSW5jLgotMDAyMUI3ICAgICAoYmFzZSAxNikJCUxleG1hcmsgSW50ZXJuYXRpb25hbCBJbmMuCi0JCQkJNzQwIFdlc3QgTmV3IENpcmNsZSBSb2FkCi0JCQkJTGV4aW5ndG9uIEtZIDQwNTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1COCAgIChoZXgpCQlJbnBoaSBDb3Jwb3JhdGlvbgotMDAyMUI4ICAgICAoYmFzZSAxNikJCUlucGhpIENvcnBvcmF0aW9uCi0JCQkJMjM5MyBUb3duc0dhdGUgUmQuLCBTdWl0ZSAxMDEKLQkJCQlXZXN0bGFrZSBWaWxsYWdlIENBIDkxMzYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1COSAgIChoZXgpCQlVbml2ZXJzYWwgRGV2aWNlcyBJbmMuCi0wMDIxQjkgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIERldmljZXMgSW5jLgotCQkJCTUzNTMgWWFybW91dGggQXZlLiAjMjA5Ci0JCQkJRW5jaW5vIENBIDkxMzE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1CQSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDAyMUJBICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkLCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1CQiAgIChoZXgpCQlSaWtlbiBLZWlraSBDby4sIEx0ZC4KLTAwMjFCQiAgICAgKGJhc2UgMTYpCQlSaWtlbiBLZWlraSBDby4sIEx0ZC4KLQkJCQkgMi03LTYgQXp1c2F3YQotCQkJCUl0YWJhc2hpLUt1IFRva3lvIDE3NC04NzQ0Ci0JCQkJSkFQQU4KLQotMDAtMjEtQkMgICAoaGV4KQkJWkFMQSBDT01QVVRFUgotMDAyMUJDICAgICAoYmFzZSAxNikJCVpBTEEgQ09NUFVURVIKLQkJCQlFTCBCT1VOSQotCQkJCUFOTkFCQSAgMjMwMDAKLQkJCQlBTEdFUklBCi0KLTAwLTIxLUJEICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyMUJEICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTIxLUJFICAgKGhleCkJCUNpc2NvLCBTZXJ2aWNlIFByb3ZpZGVyIFZpZGVvIFRlY2hub2xvZ3kgR3JvdXAKLTAwMjFCRSAgICAgKGJhc2UgMTYpCQlDaXNjbywgU2VydmljZSBQcm92aWRlciBWaWRlbyBUZWNobm9sb2d5IEdyb3VwCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGFya3dheQotCQkJCU1haWwgU3RvcCAyLlQuNjAzCi0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtQkYgICAoaGV4KQkJSGl0YWNoaSBIaWdoLVRlY2ggQ29udHJvbCBTeXN0ZW1zIENvcnBvcmF0aW9uCi0wMDIxQkYgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBIaWdoLVRlY2ggQ29udHJvbCBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJNTAwLE1peXUtY2hvCi0JCQkJTWl0by1zaGkgSWJhcmFraS1rZW4gMzE5LTAzMTYKLQkJCQlKQVBBTgotCi0wMC0yMS1DMCAgIChoZXgpCQlNb2JpbGUgQXBwbGlhbmNlLCBJbmMuCi0wMDIxQzAgICAgIChiYXNlIDE2KQkJTW9iaWxlIEFwcGxpYW5jZSwgSW5jLgotCQkJCSM4MTkgS3JhbnogVGVjaG5vLAotCQkJCVNhbmdkYWV3b24tMSBEb25nLCBKdW5nd29uLUd1Ci0JCQkJU2VvbmcgbmFtIEd5ZW9uZ2dpLURvIDQ2Mi03MjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtQzEgICAoaGV4KQkJQUJCIE95IC8gRGlzdHJpYnV0aW9uIEF1dG9tYXRpb24KLTAwMjFDMSAgICAgKGJhc2UgMTYpCQlBQkIgT3kgLyBEaXN0cmlidXRpb24gQXV0b21hdGlvbgotCQkJCVBPIEJveCA2OTkKLQkJCQlWYWFzYSAgRkktNjUxMDEKLQkJCQlGSU5MQU5ECi0KLTAwLTIxLUMyICAgKGhleCkJCUdMIENvbW11bmljYXRpb25zIEluYwotMDAyMUMyICAgICAoYmFzZSAxNikJCUdMIENvbW11bmljYXRpb25zIEluYwotCQkJCTgxOCBXZXN0IERpYW1vbmQgQXZlCi0JCQkJVGhpcmQgRmxvb3IKLQkJCQlHYWl0aGVyc2J1cmcgTUQgMjA4NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUMzICAgKGhleCkJCUNPUk5FTEwgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwMjFDMyAgICAgKGJhc2UgMTYpCQlDT1JORUxMIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJNzkxNSBOLiA4MXN0IFN0cmVldAotCQkJCU1pbHdhdWtlZSBXaXNjb25zaW4gNTMyMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUM0ICAgKGhleCkJCUNvbnNpbGl1bSBBQgotMDAyMUM0ICAgICAoYmFzZSAxNikJCUNvbnNpbGl1bSBBQgotCQkJCVbDpHN0cmEgRmlubmJvZGF2w6RnZW4gMi00Ci0JCQkJTmFja2EgU3RvY2tob2xtIDEzMTMxCi0JCQkJU1dFREVOCi0KLTAwLTIxLUM1ICAgKGhleCkJCTNEU1AgQ29ycAotMDAyMUM1ICAgICAoYmFzZSAxNikJCTNEU1AgQ29ycAotCQkJCTE2MjcxIExhZ3VuYSBDYW55b24gUm9hZAotCQkJCVN1aXRlIDIwMAotCQkJCUlydmluZSwgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUM2ICAgKGhleCkJCUNTSiBHbG9iYWwsIEluYy4KLTAwMjFDNiAgICAgKGJhc2UgMTYpCQlDU0ogR2xvYmFsLCBJbmMuCi0JCQkJOXRoIEZsLiBTYW13aGFuIEJsZGcuIEFubmV4LCAxNy0yNiBZZW91aWRvLWRvbmcsCi0JCQkJWW91bmdkZXVuZ3BvLUd1Ci0JCQkJU2VvdWwgIDE1MC04NzQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtQzcgICAoaGV4KQkJUnVzc291bmQKLTAwMjFDNyAgICAgKGJhc2UgMTYpCQlSdXNzb3VuZAotCQkJCTUgRm9yYmVzIFJvYWQKLQkJCQlOZXdtYXJrZXQgTkggMDM4NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUM4ICAgKGhleCkJCUxPSFVJUyBOZXR3b3JrcwotMDAyMUM4ICAgICAoYmFzZSAxNikJCUxPSFVJUyBOZXR3b3JrcwotCQkJCTI2ODEgVFYgTW9uc3RlcgotCQkJCVZvdGxhYW4gNDA4IFZvdGxhYW4gMzEKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMS1DOSAgIChoZXgpCQlXYXZlY29tIEFzaWEgUGFjaWZpYyBMaW1pdGVkCi0wMDIxQzkgICAgIChiYXNlIDE2KQkJV2F2ZWNvbSBBc2lhIFBhY2lmaWMgTGltaXRlZAotCQkJCTIwMSBCaW8tSW5mb3JtYXRpY3MgQ2VudHJlLCAgTm8uMiBTY2llbmNlIFBhcmsgV2VzdCBBdmUKLQkJCQlIb25nIEtvbmcgU2NpZW5jZSBQYXJrLCBTaGF0aW4sIE5UCi0JCQkJSE9ORyBLT05HCi0KLTAwLTIxLUNBICAgKGhleCkJCUFSVCBTeXN0ZW0gQ28uLCBMdGQuCi0wMDIxQ0EgICAgIChiYXNlIDE2KQkJQVJUIFN5c3RlbSBDby4sIEx0ZC4KLQkJCQlNb2JpbGUgVGVjaG5vIEJsZGcgUm9vbSA5MTAKLQkJCQk1NzMtMTMsIEJva2h5ZW9uLWRvbmcsIEJ1ay1ndQotCQkJCURhZS1HdSAgNzAyLTAyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMS1DQiAgIChoZXgpCQlTTVMgVEVDTk9MT0dJQSBFTEVUUk9OSUNBIExUREEKLTAwMjFDQiAgICAgKGJhc2UgMTYpCQlTTVMgVEVDTk9MT0dJQSBFTEVUUk9OSUNBIExUREEKLQkJCQlBdi4gUGlyw4PCom1pZGUsIDY2MQotCQkJCURJQURFTUEgU8ODxpJPIFBBVUxPIDA5OTcwMzMwCi0JCQkJQlJBWklMCi0KLTAwLTIxLUNDICAgKGhleCkJCUZsZXh0cm9uaWNzIEludGVybmF0aW9uYWwKLTAwMjFDQyAgICAgKGJhc2UgMTYpCQlGbGV4dHJvbmljcyBJbnRlcm5hdGlvbmFsCi0JCQkJMjI0MSBMdW5keSBBdmUuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUNEICAgKGhleCkJCUxpdmVUVgotMDAyMUNEICAgICAoYmFzZSAxNikJCUxpdmVUVgotCQkJCTEzMzMgR2F0ZXdheSBEcml2ZSwgU3VpdGUgMTAwNwotCQkJCU1lbGJvdXJuZSBGbG9yaWRhIDMyOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1DRSAgIChoZXgpCQlOVEMtTWV0cm90ZWsKLTAwMjFDRSAgICAgKGJhc2UgMTYpCQlOVEMtTWV0cm90ZWsKLQkJCQk5LCBOZXZ6b3Jvdm95IHN0cmVldAotCQkJCVNhaW50LVBldGVyc2J1cmcgIDE5MjE0OAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yMS1DRiAgIChoZXgpCQlUaGUgQ3J5cHRvIEdyb3VwCi0wMDIxQ0YgICAgIChiYXNlIDE2KQkJVGhlIENyeXB0byBHcm91cAotCQkJCVp1Z2Vyc3RyYXNzZSA0MgotCQkJCVN0ZWluaGF1c2VuIFp1ZyA2MzEyCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjEtRDAgICAoaGV4KQkJR2xvYmFsIERpc3BsYXkgU29sdXRpb25zIFNwYQotMDAyMUQwICAgICAoYmFzZSAxNikJCUdsb2JhbCBEaXNwbGF5IFNvbHV0aW9ucyBTcGEKLQkJCQlWaWEgVGV6emUsIDIwL0EKLQkJCQlWQVQgSVQwMjk0MDE4MDI0OQotCQkJCUNvcm5lZG8gVmljZW50aW5vIFZpY2VuemEgMzYwNzMKLQkJCQlJVEFMWQotCi0wMC0yMS1EMSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMjFEMSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjEtRDIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDIxRDIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLUQzICAgKGhleCkJCUJPQ09NIFNFQ1VSSVRZKEFTSUEgUEFDSUZJQykgTElNSVRFRAotMDAyMUQzICAgICAoYmFzZSAxNikJCUJPQ09NIFNFQ1VSSVRZKEFTSUEgUEFDSUZJQykgTElNSVRFRAotCQkJCUZsci4zLE5PLjI5LCM2OSBHdWlxaW5nIFJECi0JCQkJQ2hpbmEKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMjEtRDQgICAoaGV4KQkJVm9sbG1lciBXZXJrZSBHbWJICi0wMDIxRDQgICAgIChiYXNlIDE2KQkJVm9sbG1lciBXZXJrZSBHbWJICi0JCQkJTWFzY2hpbmVuZmFicmlrCi0JCQkJQmliZXJhY2ggQmFkZW4tV8O8cnR0ZW1iZXJnIDg4NDAwCi0JCQkJR0VSTUFOWQotCi0wMC0yMS1ENSAgIChoZXgpCQlYMkUgR21iSAotMDAyMUQ1ICAgICAoYmFzZSAxNikJCVgyRSBHbWJICi0JCQkJUmFpZmZlaXNlbnN0cmFzc2UgOQotCQkJCVdpbmRlbiBSaGVpbmxhbmQtUGZhbHogNzY4NzIKLQkJCQlHRVJNQU5ZCi0KLTAwLTIxLUQ2ICAgKGhleCkJCUxYSSBDb25zb3J0aXVtCi0wMDIxRDYgICAgIChiYXNlIDE2KQkJTFhJIENvbnNvcnRpdW0KLQkJCQlQLk8uIEJveCAxMDE2Ci0JCQkJTml3b3QgQ08gODA1NDQtMTAxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRDcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMUQ3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUQ4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjFEOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1EOSAgIChoZXgpCQlTRUtPTklDIENPUlBPUkFUSU9OCi0wMDIxRDkgICAgIChiYXNlIDE2KQkJU0VLT05JQyBDT1JQT1JBVElPTgotCQkJCTctMjQtMTQKLQkJCQlPSVpVTUktR0FLVUVOLUNITwotCQkJCU5FUklNQS1LVSBUT0tZTyAxNzgtODY4NgotCQkJCUpBUEFOCi0KLTAwLTIxLURBICAgKGhleCkJCUF1dG9tYXRpb24gUHJvZHVjdHMgR3JvdXAgSW5jLgotMDAyMURBICAgICAoYmFzZSAxNikJCUF1dG9tYXRpb24gUHJvZHVjdHMgR3JvdXAgSW5jLgotCQkJCTEwMjUgV2VzdCAxNzAwIE5vcnRoCi0JCQkJTG9nYW4gVXRhaCA4NDMyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtREIgICAoaGV4KQkJU2FudGFjaGkgVmlkZW8gVGVjaG5vbG9neSAoU2hlbnpoZW4pIENvLiwgTHRkLgotMDAyMURCICAgICAoYmFzZSAxNikJCVNhbnRhY2hpIFZpZGVvIFRlY2hub2xvZ3kgKFNoZW56aGVuKSBDby4sIEx0ZC4KLQkJCQlTYW50YWNoaSBCdWlsZGluZywjMTQgS2FpZmVuZyBSb2FkLE1laWxpbiwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQ5Ci0JCQkJQ0hJTkEKLQotMDAtMjEtREMgICAoaGV4KQkJVEVDTk9BTEFSTSBTLnIubC4KLTAwMjFEQyAgICAgKGJhc2UgMTYpCQlURUNOT0FMQVJNIFMuci5sLgotCQkJCVZpYSBDaXJpZScKLQkJCQlTYW4gTWF1cm8gVG9yaW5lc2UgVG9yaW5vIDEwMDk5Ci0JCQkJSVRBTFkKLQotMDAtMjEtREQgICAoaGV4KQkJTm9ydGhzdGFyIFN5c3RlbXMgQ29ycAotMDAyMUREICAgICAoYmFzZSAxNikJCU5vcnRoc3RhciBTeXN0ZW1zIENvcnAKLQkJCQk1RiwgTm8uMjAwIEdhbmcgUWlhbiBSZAotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMS1ERSAgIChoZXgpCQlGaXJlcHJvIFdpcmVsZXNzCi0wMDIxREUgICAgIChiYXNlIDE2KQkJRmlyZXBybyBXaXJlbGVzcwotCQkJCTI3LCBaYW1ydWRwdXIgQ29tbXVuaXR5IENlbnRlciwKLQkJCQlLYWlsYXNoIENvbG9ueQotCQkJCU5ldyBEZWxoaSBIYXJ5YW5hIDExMDAyMAotCQkJCUlORElBCi0KLTAwLTIxLURGICAgKGhleCkJCU1hcnRpbiBDaHJpc3QgR21iSAotMDAyMURGICAgICAoYmFzZSAxNikJCU1hcnRpbiBDaHJpc3QgR21iSAotCQkJCUFuIGRlciBVbnRlcmVuIFNvZXNlIDUwCi0JCQkJT3N0ZXJvZGUgTmllZGVyc2FjaHNlbiAzNzUyMAotCQkJCUdFUk1BTlkKLQotMDAtMjEtRTAgICAoaGV4KQkJQ29tbUFnaWxpdHkgTHRkCi0wMDIxRTAgICAgIChiYXNlIDE2KQkJQ29tbUFnaWxpdHkgTHRkCi0JCQkJSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQlFcGluYWwgV2F5Ci0JCQkJTG91Z2hib3JvdWdoIExlaWNzIExFMTEgM0VICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjEtRTEgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDIxRTEgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJMjIyMSBMYWtlc2lkZSBCbHZkCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4Mi00Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1FMiAgIChoZXgpCQlDcmVhdGl2ZSBFbGVjdHJvbmljIEdtYkgKLTAwMjFFMiAgICAgKGJhc2UgMTYpCQlDcmVhdGl2ZSBFbGVjdHJvbmljIEdtYkgKLQkJCQlMb3JjaGVyIFN0cmFzc2UgNTIKLQkJCQlCaXJlbmJhY2ggQmFkZW4tV8O8cnR0ZW1iZXJnIDczMTAyCi0JCQkJR0VSTUFOWQotCi0wMC0yMS1FMyAgIChoZXgpCQlTZXJpYWxUZWsgTExDCi0wMDIxRTMgICAgIChiYXNlIDE2KQkJU2VyaWFsVGVrIExMQwotCQkJCTE2MzAgT2FrbGFuZCBSZAotCQkJCVN1aXRlIEExMTcKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRTQgICAoaGV4KQkJSS1XSU4KLTAwMjFFNCAgICAgKGJhc2UgMTYpCQlJLVdJTgotCQkJCTI3IFJ1ZSBkZXMgRWNvbmRlYXV4Ci0JCQkJRVBJTkFZIFNVUiBTRUlORSBTZWluZSBTYWludCBEZW5pcyA5MzgwMAotCQkJCUZSQU5DRQotCi0wMC0yMS1FNSAgIChoZXgpCQlEaXNwbGF5IFNvbHV0aW9uIEFHCi0wMDIxRTUgICAgIChiYXNlIDE2KQkJRGlzcGxheSBTb2x1dGlvbiBBRwotCQkJCVRhbGhvZnN0ci4gMzJhCi0JCQkJR2lsY2hpbmcgRCA4MjIwNQotCQkJCUdFUk1BTlkKLQotMDAtMjEtRTYgICAoaGV4KQkJU3RhcmxpZ2h0IFZpZGVvIExpbWl0ZWQKLTAwMjFFNiAgICAgKGJhc2UgMTYpCQlTdGFybGlnaHQgVmlkZW8gTGltaXRlZAotCQkJCTUvRi4sIFNoaW5nIERhbyBJbmR1c3RyaWFsIEJ1aWxkaW5nLAotCQkJCTIzMiBBYmVyZGVlbiBNYWluIFJvYWQsCi0JCQkJSE9ORyBLT05HCi0KLTAwLTIxLUU3ICAgKGhleCkJCUluZm9ybWF0aWNzIFNlcnZpY2VzIENvcnBvcmF0aW9uCi0wMDIxRTcgICAgIChiYXNlIDE2KQkJSW5mb3JtYXRpY3MgU2VydmljZXMgQ29ycG9yYXRpb24KLQkJCQkxNDAsIE5lZ2luIEJsZGcuLAotCQkJCU1pcmRhbWFkIEJsdmQKLQkJCQlUZWhyYW4gIDE1NDk1MzQ1MTEKLQkJCQlJUkFOLCBJU0xBTUlDIFJFUFVCTElDIE9GCi0KLTAwLTIxLUU4ICAgKGhleCkJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotMDAyMUU4ICAgICAoYmFzZSAxNikJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTEwLTEsIEhpZ2FzaGlrb3RhcmkgMS1jaG9tZQotCQkJCU5hZ2Fva2FreW8tc2hpIEt5b3RvIDYxNy04NTU1Ci0JCQkJSkFQQU4KLQotMDAtMjEtRTkgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyMUU5ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUVBICAgKGhleCkJCUJ5c3Ryb25pYyBMYXNlciBBRwotMDAyMUVBICAgICAoYmFzZSAxNikJCUJ5c3Ryb25pYyBMYXNlciBBRwotCQkJCUluZHVzdHJpZXN0ci4gMjEKLQkJCQkzMzYyIE5pZWRlcsO2bnogCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjEtRUIgICAoaGV4KQkJRVNQIFNZU1RFTVMsIExMQwotMDAyMUVCICAgICAoYmFzZSAxNikJCUVTUCBTWVNURU1TLCBMTEMKLQkJCQkxNDIyIEVhc3QgRm91cnRoIFN0cmVldAotCQkJCUNoYXJsb3R0ZSBOQyAyODIwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRUMgICAoaGV4KQkJU29sdXRyb25pYyBHbWJICi0wMDIxRUMgICAgIChiYXNlIDE2KQkJU29sdXRyb25pYyBHbWJICi0JCQkJS3VlZmVyc3RyYXNzZSAxOAotCQkJCUtvZW5nZW4gIDczMjU3Ci0JCQkJR0VSTUFOWQotCi0wMC0yMS1FRCAgIChoZXgpCQlUZWxlZ2VzaXMKLTAwMjFFRCAgICAgKGJhc2UgMTYpCQlUZWxlZ2VzaXMKLQkJCQk4NCBTdGF0aW9uIFJvYWQKLQkJCQlNYXJsb3cgQnVja3MgU0w3IDFOWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIxLUVFICAgKGhleCkJCUZ1bGwgU3BlY3RydW0gSW5jLgotMDAyMUVFICAgICAoYmFzZSAxNikJCUZ1bGwgU3BlY3RydW0gSW5jLgotCQkJCTExNDkgQ2hlc3RudXQgU3RyZWV0LCBTdWl0ZSAxMDAKLQkJCQlNZW5sbyBQYXJrIENhbGlmb3JuaWEgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUVGICAgKGhleCkJCUthcHN5cwotMDAyMUVGICAgICAoYmFzZSAxNikJCUthcHN5cwotCQkJCTc5MCBBdiBkdSBEb2N0ZXVyIE1hdXJpY2UgRG9uYXQKLQkJCQlMZSBNYXJjbyBQb2xvIEExCi0JCQkJMDYyNTAgTW91Z2lucyBTb3BoaWEgQW50aXBvbGlzIAotCQkJCUZSQU5DRQotCi0wMC0yMS1GMCAgIChoZXgpCQlFVzMgVGVjaG5vbG9naWVzIExMQwotMDAyMUYwICAgICAoYmFzZSAxNikJCUVXMyBUZWNobm9sb2dpZXMgTExDCi0JCQkJMjAgSG9tZXN0ZWFkIFZpbGxhZ2UgRHJpdmUKLQkJCQlXYXJ3aWNrIE5ZIDEwOTkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1GMSAgIChoZXgpCQlUdXR1cyBEYXRhIEFCCi0wMDIxRjEgICAgIChiYXNlIDE2KQkJVHV0dXMgRGF0YSBBQgotCQkJCVN2YXJkdmFnZW4gMTEKLQkJCQlEYW5kZXJ5ZCBTdG9ja2hvbG0gMTgyMzMKLQkJCQlTV0VERU4KLQotMDAtMjEtRjIgICAoaGV4KQkJRUFTWTNDQUxMIFRlY2hub2xvZ3kgTGltaXRlZAotMDAyMUYyICAgICAoYmFzZSAxNikJCUVBU1kzQ0FMTCBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlSb29tIDE5MDMtNiwgMTkvRi4sIEhJTkcgWUlQIENvbW1lcmNpYWwgQ2VudHJlCi0JCQkJMjcyLTI4NCBERVMgVk9FVVggUm9hZCBDZW50cmFsCi0JCQkJSG9uZyBLb25nICA5OTkwNzcKLQkJCQlDSElOQQotCi0wMC0yMS1GMyAgIChoZXgpCQlTaTE0IFNwQQotMDAyMUYzICAgICAoYmFzZSAxNikJCVNpMTQgU3BBCi0JCQkJVmlhIFRvbW1hc2VvIDc3Ci0JCQkJUGFkb3ZhIFBEIDM1MTMxCi0JCQkJSVRBTFkKLQotMDAtMjEtRjQgICAoaGV4KQkJSU5SYW5nZSBTeXN0ZW1zLCBJbmMKLTAwMjFGNCAgICAgKGJhc2UgMTYpCQlJTlJhbmdlIFN5c3RlbXMsIEluYwotCQkJCTIyMCBMYWtlbW9udCBQYXJrIEJsdmQKLQkJCQlBbHRvb25hIFBBIDE2NjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1GNSAgIChoZXgpCQlXZXN0ZXJuIEVuZ3JhdmVycyBTdXBwbHksIEluYy4KLTAwMjFGNSAgICAgKGJhc2UgMTYpCQlXZXN0ZXJuIEVuZ3JhdmVycyBTdXBwbHksIEluYy4KLQkJCQkxNzYyMSBOIEJsYWNrIENhbnlvbiBIaWdod2F5Ci0JCQkJUGhvZW5peCBBWiA4NTAyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRjYgICAoaGV4KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0wMDIxRjYgICAgIChiYXNlIDE2KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0JCQkJOTAwIENoZWxtc2ZvcmQgU3RyZWV0Ci0JCQkJTG93ZWxsIE1BIDAxODUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMS1GNyAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDIxRjcgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQKLQkJCQlSb3NldmlsbGUgQ0EgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIxLUY4ICAgKGhleCkJCUVuc2VvLCBJbmMuCi0wMDIxRjggICAgIChiYXNlIDE2KQkJRW5zZW8sIEluYy4KLQkJCQk0MDEgSW50ZXJuYXRpb25hbCBQYXJrd2F5Ci0JCQkJU3VpdGUgMTAwCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjEtRjkgICAoaGV4KQkJV0lSRUNPTSBUZWNobm9sb2dpZXMKLTAwMjFGOSAgICAgKGJhc2UgMTYpCQlXSVJFQ09NIFRlY2hub2xvZ2llcwotCQkJCTEzNSwgcnVlIEphY3F1ZXMgQ2hhcmxlcwotCQkJCU9MSVZFVCBMb2lyZXQgNDUxNjYKLQkJCQlGUkFOQ0UKLQotMDAtMjEtRkEgICAoaGV4KQkJQTRTUCBUZWNobm9sb2dpZXMgTHRkLgotMDAyMUZBICAgICAoYmFzZSAxNikJCUE0U1AgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQlLZWlsYXJhbnRhIDE5IEQKLQkJCQlFc3BvbyBVdXNpbWFhIDAyMTUwCi0JCQkJRklOTEFORAotCi0wMC0yMS1GQiAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotMDAyMUZCICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAtMzksS2FzYW4tZG9uZyxLdW1jaG9uLWt1LAotCQkJCVNlb3VsICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIxLUZDICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIxRkMgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIxLUZEICAgKGhleCkJCURTVEEgUy5MLgotMDAyMUZEICAgICAoYmFzZSAxNikJCURTVEEgUy5MLgotCQkJCU1hamFkYSA0Ci0JCQkJVHJlcyBDYW50b3MgTWFkcmlkIDI4NzYwCi0JCQkJU1BBSU4KLQotMDAtMjEtRkUgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjFGRSAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjEtRkYgICAoaGV4KQkJQ3lmcm93eSBQb2xzYXQgU0EKLTAwMjFGRiAgICAgKGJhc2UgMTYpCQlDeWZyb3d5IFBvbHNhdCBTQQotCQkJCcKjdWJpbm93YSA0QQotCQkJCVdhcnNhdyBNYXpvd2llY2tpZSAwMy04NzgKLQkJCQlQT0xBTkQKLQotMDAtMjItMDAgICAoaGV4KQkJSUJNIENvcnAKLTAwMjIwMCAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTIwNTEgTWlzc2lvbiBDb2xsZWdlIEJsdmQgCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTAxICAgKGhleCkJCUFrc3lzIE5ldHdvcmtzIEluYwotMDAyMjAxICAgICAoYmFzZSAxNikJCUFrc3lzIE5ldHdvcmtzIEluYwotCQkJCTQyOCwgMzU1MyAtIDMxIFN0cmVldCBOVwotCQkJCUNhbGdhcnkgIFQyTCAySzcKLQkJCQlDQU5BREEKLQotMDAtMjItMDIgICAoaGV4KQkJRXhjaXRvIEVsZWt0cm9uaWsgaSBTa8OlbmUgQUIKLTAwMjIwMiAgICAgKGJhc2UgMTYpCQlFeGNpdG8gRWxla3Ryb25payBpIFNrw6VuZSBBQgotCQkJCUJveCAxMjYKLQkJCQlMw7ZkZGVrw7ZwaW5nZSAgMjQ2IDIyCi0JCQkJU1dFREVOCi0KLTAwLTIyLTAzICAgKGhleCkJCUdsZW5zb3VuZCBFbGVjdHJvbmljcyBMdGQKLTAwMjIwMyAgICAgKGJhc2UgMTYpCQlHbGVuc291bmQgRWxlY3Ryb25pY3MgTHRkCi0JCQkJMSAtIDYgQnJvb2tzIFBsYWNlCi0JCQkJTWFpZHN0b25lIEtlbnQgTUUxNyAxVU4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi0wNCAgIChoZXgpCQlLT1JBVEVLCi0wMDIyMDQgICAgIChiYXNlIDE2KQkJS09SQVRFSwotCQkJCUdldW1qZW9uZy1kb25nCi0JCQkJR3VucG8tc2kgR3llb25nZ2ktZG8gNDM1LTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi0wNSAgIChoZXgpCQlXZUxpbmsgU29sdXRpb25zLCBJbmMuCi0wMDIyMDUgICAgIChiYXNlIDE2KQkJV2VMaW5rIFNvbHV0aW9ucywgSW5jLgotCQkJCTNGLCBOby4gODgsIFNlYy4gMSwgTmVpLUh1IFJkLgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi0wNiAgIChoZXgpCQlDeWJlcmR5bmUgSW5jLgotMDAyMjA2ICAgICAoYmFzZSAxNikJCUN5YmVyZHluZSBJbmMuCi0JCQkJNTA0woFAQzQ5LTIKLQkJCQlUc3VrdWJhLXNoaSBJYmFyYWtpLWtlbiAzMDUtMDgxNwotCQkJCUpBUEFOCi0KLTAwLTIyLTA3ICAgKGhleCkJCUludGVubyBCcm9hZGJhbmQgVGVjaG5vbG9neSBBQgotMDAyMjA3ICAgICAoYmFzZSAxNikJCUludGVubyBCcm9hZGJhbmQgVGVjaG5vbG9neSBBQgotCQkJCURyaXZoanVsc3bDpGdlbiAyMgotCQkJCVN0b2NraG9sbSBTRSAxMjYzMAotCQkJCVNXRURFTgotCi0wMC0yMi0wOCAgIChoZXgpCQlDZXJ0aWNvbSBDb3JwCi0wMDIyMDggICAgIChiYXNlIDE2KQkJQ2VydGljb20gQ29ycAotCQkJCTU1MjAgRXhwbG9yZXIgRHJpdmUsIDR0aCBGbG9vcgotCQkJCU1pc3Npc3NhdWdhIE9OIEw0VyA1TDEKLQkJCQlDQU5BREEKLQotMDAtMjItMDkgICAoaGV4KQkJT21yb24gSGVhbHRoY2FyZSBDby4sIEx0ZAotMDAyMjA5ICAgICAoYmFzZSAxNikJCU9tcm9uIEhlYWx0aGNhcmUgQ28uLCBMdGQKLQkJCQkyNCBZYW1hbm9zaGl0YS1jaG8gWWFtYW5vdWNoaQotCQkJCVVreW9rdQotCQkJCUt5b3RvICA2MTUwMDg0Ci0JCQkJSkFQQU4KLQotMDAtMjItMEEgICAoaGV4KQkJT25MaXZlLCBJbmMKLTAwMjIwQSAgICAgKGJhc2UgMTYpCQlPbkxpdmUsIEluYwotCQkJCTE4MSBMeXR0b24gQXZlCi0JCQkJUGFsbyBBbHRvIENhbGlmb3JuaWEgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTBCICAgKGhleCkJCU5hdGlvbmFsIFNvdXJjZSBDb2RpbmcgQ2VudGVyCi0wMDIyMEIgICAgIChiYXNlIDE2KQkJTmF0aW9uYWwgU291cmNlIENvZGluZyBDZW50ZXIKLQkJCQlTdWl0ZSA3MDEsUG93ZXIgQ3JlYXRpdmUgQSxOby4xCi0JCQkJU2hhbmdkaSBFYXN0IFJvYWQsSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTIyLTBDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjIwQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0wRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIyMEQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMEUgICAoaGV4KQkJSW5kaWdvIFNlY3VyaXR5IENvLiwgTHRkLgotMDAyMjBFICAgICAoYmFzZSAxNikJCUluZGlnbyBTZWN1cml0eSBDby4sIEx0ZC4KLQkJCQkybmQgRmxvb3IsIDI3Ny0xNjkgU3VuZ3NvbzItR2EsIFN1bmdkb25nLUd1Ci0JCQkJU2VvdWwgIDEzMy04MzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItMEYgICAoaGV4KQkJTW9DQSAoTXVsdGltZWRpYSBvdmVyIENvYXggQWxsaWFuY2UpCi0wMDIyMEYgICAgIChiYXNlIDE2KQkJTW9DQSAoTXVsdGltZWRpYSBvdmVyIENvYXggQWxsaWFuY2UpCi0JCQkJOTAgSW52ZXJuZXNzIENpcmNsZSBFYXN0Ci0JCQkJRW5nbGV3b29kIENBIDk0NTgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0xMCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMjEwICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMTEgICAoaGV4KQkJUm9oYXRpIFN5c3RlbXMKLTAwMjIxMSAgICAgKGJhc2UgMTYpCQlSb2hhdGkgU3lzdGVtcwotCQkJCTExOTIgQm9ycmVnYXMgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0xMiAgIChoZXgpCQlDQUkgTmV0d29ya3MsIEluYy4KLTAwMjIxMiAgICAgKGJhc2UgMTYpCQlDQUkgTmV0d29ya3MsIEluYy4KLQkJCQkxNzE1IEUuIFdpbHNoaXJlIEF2ZW51ZQotCQkJCVNURSA3MTkKLQkJCQlTYW50YSBBbmEgQ2FsaWZvcm5pYSA5MjcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMTMgICAoaGV4KQkJUENJIENPUlBPUkFUSU9OCi0wMDIyMTMgICAgIChiYXNlIDE2KQkJUENJIENPUlBPUkFUSU9OCi0JCQkJTm8uMjUsIExhbmUgNjYsIEhlYmVpIDFzdCBTdC4sICBCZWl0dW4gRGlzdHJpY3QKLQkJCQlUYWljaHVuZyAgNDA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi0xNCAgIChoZXgpCQlSSU5OQUkgS09SRUEKLTAwMjIxNCAgICAgKGJhc2UgMTYpCQlSSU5OQUkgS09SRUEKLQkJCQk1NjAtMiwgU2hpYmpvbmctMWRvbmcsIFB1cHlvdW5nLWd1Ci0JCQkJNXRoIFJlc2VhcmNoIFRlYW0KLQkJCQlQdXB5b3VuZy1ndSBJbmNoZW9uIDQwMy04NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItMTUgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0wMDIyMTUgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItMTYgICAoaGV4KQkJU0hJQkFVUkEgVkVORElORyBNQUNISU5FIENPUlBPUkFUSU9OCi0wMDIyMTYgICAgIChiYXNlIDE2KQkJU0hJQkFVUkEgVkVORElORyBNQUNISU5FIENPUlBPUkFUSU9OCi0JCQkJRWtpbWFlLWNobzEzLTEwCi0JCQkJT2JhbWEtc2hpIEZ1a3VpLWtlbiA5MTctMDA3NwotCQkJCUpBUEFOCi0KLTAwLTIyLTE3ICAgKGhleCkJCU5lYXQgRWxlY3Ryb25pY3MKLTAwMjIxNyAgICAgKGJhc2UgMTYpCQlOZWF0IEVsZWN0cm9uaWNzCi0JCQkJVmFydXbDpGdlbiAyCi0JCQkJTMO2ZGRla8O2cGluZ2UgU2vDpW5lIFNFLTI0NjQyCi0JCQkJU1dFREVOCi0KLTAwLTIyLTE4ICAgKGhleCkJCVZlcml2dWUgSW5jLgotMDAyMjE4ICAgICAoYmFzZSAxNikJCVZlcml2dWUgSW5jLgotCQkJCTMgQ2FybGlzbGUgUm9hZAotCQkJCVdlc3Rmb3JkIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0xOSAgIChoZXgpCQlEZWxsIEluYwotMDAyMjE5ICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0xQSAgIChoZXgpCQlBdWRpbyBQcmVjaXNpb24KLTAwMjIxQSAgICAgKGJhc2UgMTYpCQlBdWRpbyBQcmVjaXNpb24KLQkJCQk1NzUwIFNXIEFyY3RpYyBEcml2ZQotCQkJCUJlYXZlcnRvbiBPUiA5NzAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMUIgICAoaGV4KQkJTW9yZWdhIFN5c3RlbXMKLTAwMjIxQiAgICAgKGJhc2UgMTYpCQlNb3JlZ2EgU3lzdGVtcwotCQkJCTU3NzAgSHVyb250YXJpbyBTdHJlZXQKLQkJCQlTdWl0ZSA1MDEKLQkJCQlNaXNzaXNzYXVnYSBPbnRhcmlvIEw1UiAzRzUKLQkJCQlDQU5BREEKLQotMDAtMjItMUMgICAoaGV4KQkJUFJJVkFURQotMDAyMjFDICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yMi0xRCAgIChoZXgpCQlGcmVlZ2VuZSBUZWNobm9sb2d5IExURAotMDAyMjFEICAgICAoYmFzZSAxNikJCUZyZWVnZW5lIFRlY2hub2xvZ3kgTFRECi0JCQkJMy9GICxDIEJMREcsV2VpcGVuZ2RhIEluZHVzdHJpYWwgUGFyawotCQkJCWxvbmdrb3UgaW5kdXN0cmlhbCBhcmVhLGJhby1hbiBkaXN0cmljdAotCQkJCVNoZW56aGVuIEdvbmdkb25nIDUxODEwOQotCQkJCUNISU5BCi0KLTAwLTIyLTFFICAgKGhleCkJCU1lZGlhIERldmljZXMgQ28uLCBMdGQuCi0wMDIyMUUgICAgIChiYXNlIDE2KQkJTWVkaWEgRGV2aWNlcyBDby4sIEx0ZC4KLQkJCQlSbTEwMDIgQWNlIFRlY2hub1Rvd2VyKDl0aCkgMzQ1LTMwCi0JCQkJS2FzYW4tZG9uZywgS3VtY2hvbi1rdQotCQkJCVNlb3VsICAxNTMtODAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLTFGICAgKGhleCkJCWVTYW5nIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwMjIxRiAgICAgKGJhc2UgMTYpCQllU2FuZyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJIzEtODE3LCBJVCBDYXN0bGUgNTUwLTEsIEdhc2FuLURvbmcsCi0JCQkJR2V1bWNoZW9uLUd1LAotCQkJCVNlb3VsICAxNTMtNzY4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLTIwICAgKGhleCkJCU1pdGFjIFRlY2hub2xvZ3kgQ29ycAotMDAyMjIwICAgICAoYmFzZSAxNikJCU1pdGFjIFRlY2hub2xvZ3kgQ29ycAotCQkJCTl0aCBGbC4sICM3NSwgTWluLXNoZW5nIEUuIFJvYWQsIFNlYy4gMywKLQkJCQlUYWlwZWkgIDEwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItMjEgICAoaGV4KQkJSVRPSCBERU5LSSBDTyxMVEQuCi0wMDIyMjEgICAgIChiYXNlIDE2KQkJSVRPSCBERU5LSSBDTyxMVEQuCi0JCQkJMTE0Ni0yLCBBc2F6dW1hLWNobwotCQkJCUthc2FpIEh5b2dvIDY3OS0wMTgwCi0JCQkJSkFQQU4KLQotMDAtMjItMjIgICAoaGV4KQkJU2NoYWZmbmVyIERldXRzY2hsYW5kIEdtYkggCi0wMDIyMjIgICAgIChiYXNlIDE2KQkJU2NoYWZmbmVyIERldXRzY2hsYW5kIEdtYkggCi0JCQkJTvxydGluZ2VuIEJyYW5jaAotCQkJCVJhaWR3YW5nZXIgU3RyLiAxMiAKLQkJCQlO/HJ0aW5nZW4gQlcgRC03MjYyMiAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTIzICAgKGhleCkJCVRpbWVLZWVwaW5nIFN5c3RlbXMsIEluYy4KLTAwMjIyMyAgICAgKGJhc2UgMTYpCQlUaW1lS2VlcGluZyBTeXN0ZW1zLCBJbmMuCi0JCQkJMzA3MDAgQmFpbmJyaWRnZSBSb2FkCi0JCQkJU3VpdGUgSAotCQkJCVNvbG9uIE9IIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0yNCAgIChoZXgpCQlHb29kIFdpbGwgSW5zdHJ1bWVudCBDby4sIEx0ZC4KLTAwMjIyNCAgICAgKGJhc2UgMTYpCQlHb29kIFdpbGwgSW5zdHJ1bWVudCBDby4sIEx0ZC4KLQkJCQlOby4gNy0xIEpob25nc2luZyBSb2FkLAotCQkJCVR1Y2hlbmcgQ2l0eQotCQkJCVRhaXBlaSAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi0yNSAgIChoZXgpCQlUaGFsZXMgQXZpb25pY3MgTHRkCi0wMDIyMjUgICAgIChiYXNlIDE2KQkJVGhhbGVzIEF2aW9uaWNzIEx0ZAotCQkJCTg2IEJ1c2hleSBSb2FkCi0JCQkJUmF5bmVzIFBhcmsKLQkJCQlMb25kb24gIFNXMjAgMEpXCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItMjYgICAoaGV4KQkJQXZhYWssIEluYy4KLTAwMjIyNiAgICAgKGJhc2UgMTYpCQlBdmFhaywgSW5jLgotCQkJCTk2NDUgU2NyYW50b24gUmQuLCBTdWl0ZSAxMTAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTI3ICAgKGhleCkJCXV2LWVsZWN0cm9uaWMgR21iSAotMDAyMjI3ICAgICAoYmFzZSAxNikJCXV2LWVsZWN0cm9uaWMgR21iSAotCQkJCUdyb3Nzd2llc2Vuc3RyYXNzZSAyMAotCQkJCUR1cmNoaGF1c2VuIEJhZGVuLVfDvHJ0dGVtYmVyZyA3ODU5MQotCQkJCUdFUk1BTlkKLQotMDAtMjItMjggICAoaGV4KQkJQnJlZXplIElubm92YXRpb25zIEx0ZC4KLTAwMjIyOCAgICAgKGJhc2UgMTYpCQlCcmVlemUgSW5ub3ZhdGlvbnMgTHRkLgotCQkJCUhhciBIb3R6dmltLCBQLk8uIEJveCA0NTM5NwotCQkJCUplcnVzYWxlbSBJc3JhZWwgOTE0NTEKLQkJCQlJU1JBRUwKLQotMDAtMjItMjkgICAoaGV4KQkJQ29tcHVtZWRpY3MgTHRkCi0wMDIyMjkgICAgIChiYXNlIDE2KQkJQ29tcHVtZWRpY3MgTHRkCi0JCQkJMzAgLSA0MCBGbG9ja2hhcnQgU3RyZWV0Ci0JCQkJQWJib3RzZm9yZCBWaWN0b3JpYSAzMDY3Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTIyLTJBICAgKGhleCkJCVNvdW5kRWFyIEEvUwotMDAyMjJBICAgICAoYmFzZSAxNikJCVNvdW5kRWFyIEEvUwotCQkJCVJlbnRlbWVzdGVydmVqIDgwCi0JCQkJQ29wZW5oYWdlbiBOViBEZW5tYXJrIERLLTI0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTIyLTJCICAgKGhleCkJCU51Y29tbSwgSW5jLgotMDAyMjJCICAgICAoYmFzZSAxNikJCU51Y29tbSwgSW5jLgotCQkJCTEwMSBCaWxieSBSb2FkCi0JCQkJSGFja2V0dHN0b3duIE5KIDA3ODQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0yQyAgIChoZXgpCQlDZXRvbiBDb3JwCi0wMDIyMkMgICAgIChiYXNlIDE2KQkJQ2V0b24gQ29ycAotCQkJCTgyNTkgMTIybmQgQXZlIE5FLCBTdWl0ZSAyNzUKLQkJCQlLaXJrbGFuZCBXYXNoaW5ndG9uIDk4MDMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0yRCAgIChoZXgpCQlTTUMgTmV0d29ya3MgSW5jLgotMDAyMjJEICAgICAoYmFzZSAxNikJCVNNQyBOZXR3b3JrcyBJbmMuCi0JCQkJMjAgTWFzb24KLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTJFICAgKGhleCkJCW1haW50ZWNoIEdtYkgKLTAwMjIyRSAgICAgKGJhc2UgMTYpCQltYWludGVjaCBHbWJICi0JCQkJU2Vld2VnIDYwCi0JCQkJSMO2Y2hiZXJnIEJhdmFyaWEgOTcyMDQKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTJGICAgKGhleCkJCU9wZW4gR3JpZCBDb21wdXRpbmcsIEluYy4KLTAwMjIyRiAgICAgKGJhc2UgMTYpCQlPcGVuIEdyaWQgQ29tcHV0aW5nLCBJbmMuCi0JCQkJNDAzMC0xIFdlc3QgQnJha2VyIExhbmUgU1RFMTMwCi0JCQkJQXVzdGluIFRYIDc4NzU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0zMCAgIChoZXgpCQlGdXR1cmVMb2dpYyBJbmMuCi0wMDIyMzAgICAgIChiYXNlIDE2KQkJRnV0dXJlTG9naWMgSW5jLgotCQkJCTQyNSBFLiBDb2xvcmFkbyBTdC4sIFN0ZS4gMTAwCi0JCQkJR2xlbmRhbGUgQ0EgOTEyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTMxICAgKGhleCkJCVNNVCZDIENvLiwgTHRkLgotMDAyMjMxICAgICAoYmFzZSAxNikJCVNNVCZDIENvLiwgTHRkLgotCQkJCTJGci4gSGFrc2FuIEJsZGcuIDExMCwgR3dhbmdqYW5nLWRvbmcsIEd3YW5namluLWd1Ci0JCQkJU2VvdWwgIDE0My04MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItMzIgICAoaGV4KQkJRGVzaWduIERlc2lnbiBUZWNobm9sb2d5IEx0ZAotMDAyMjMyICAgICAoYmFzZSAxNikJCURlc2lnbiBEZXNpZ24gVGVjaG5vbG9neSBMdGQKLQkJCQlVbml0IDksIEFzaCBSb2FkIFNvdXRoCi0JCQkJV3JleGhhbSBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCVdyZXhoYW0gTm9ydGggV2FsZXMgTEwxMyA5VUcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi0zMyAgIChoZXgpCQlBREIgQnJvYWRiYW5kIEl0YWxpYQotMDAyMjMzICAgICAoYmFzZSAxNikJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi0JCQkJVklBTEUgU0FSQ0EgMjIyCi0JCQkJTUlMQU5PICAyMDEyNgotCQkJCUlUQUxZCi0KLTAwLTIyLTM0ICAgKGhleCkJCUNvcnZlbnRpcyBJbmMuCi0wMDIyMzQgICAgIChiYXNlIDE2KQkJQ29ydmVudGlzIEluYy4KLQkJCQkxNDEwIEVuZXJneSBQYXJrIERyLiBTdWl0ZSAjMQotCQkJCVN0LiBQYXVsIE1pbm5lc290YSA1NTEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItMzUgICAoaGV4KQkJU3RydWt0b24gU3lzdGVtcyBidgotMDAyMjM1ICAgICAoYmFzZSAxNikJCVN0cnVrdG9uIFN5c3RlbXMgYnYKLQkJCQlXZXN0a2FuYWFsZGlqayAyCi0JCQkJVXRyZWNodCAgMzU0MiBEQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIyLTM2ICAgKGhleCkJCVZFQ1RPUiBTUC4gWiBPLk8uCi0wMDIyMzYgICAgIChiYXNlIDE2KQkJVkVDVE9SIFNQLiBaIE8uTy4KLQkJCQlLUlpFTU9XQSA2Ci0JCQkJR0RZTklBICA4MS01NzcKLQkJCQlQT0xBTkQKLQotMDAtMjItMzcgICAoaGV4KQkJU2hpbmhpbnQgR3JvdXAKLTAwMjIzNyAgICAgKGJhc2UgMTYpCQlTaGluaGludCBHcm91cAotCQkJCVVuaXQgMTUwNiwgMTUvRiwgTmFueWFuZyBQbGF6YSwsIDU3IEh1bmcgVG8gUm9hZCwKLQkJCQlLd3VuIFRvbmcsIEtsbgotCQkJCUhPTkcgS09ORwotCi0wMC0yMi0zOCAgIChoZXgpCQlMT0dJUExVUwotMDAyMjM4ICAgICAoYmFzZSAxNikJCUxPR0lQTFVTCi0JCQkJMSwgUlVFIENMRU1FTlQgQURFUgotCQkJCUItNjA0MSBHT1NTRUxFSUVTCi0JCQkJR09TU0VMSUVTIEhBSU5BVVQgQi02MDQxCi0JCQkJQkVMR0lVTQotCi0wMC0yMi0zOSAgIChoZXgpCQlJbmRpYW5hIExpZmUgU2NpZW5jZXMgSW5jb3Jwb3JhdGVkCi0wMDIyMzkgICAgIChiYXNlIDE2KQkJSW5kaWFuYSBMaWZlIFNjaWVuY2VzIEluY29ycG9yYXRlZAotCQkJCTg4NzUgQmFzaCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSW5kaWFuYSA0NjI1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItM0EgICAoaGV4KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBDaXNjbyBTUFZUIEdyb3VwCi0wMDIyM0EgICAgIChiYXNlIDE2KQkJU2NpZW50aWZpYyBBdGxhbnRhLCBDaXNjbyBTUFZUIEdyb3VwCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGFya3dheQotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTNCICAgKGhleCkJCUNvbW11bmljYXRpb24gTmV0d29ya3MsIExMQwotMDAyMjNCICAgICAoYmFzZSAxNikJCUNvbW11bmljYXRpb24gTmV0d29ya3MsIExMQwotCQkJCTMgQ29ycG9yYXRlIERyaXZlCi0JCQkJRGFuYnVyeSBDVCAwNjgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItM0MgICAoaGV4KQkJUkFUSU8gRW50d2lja2x1bmdlbiBHbWJICi0wMDIyM0MgICAgIChiYXNlIDE2KQkJUkFUSU8gRW50d2lja2x1bmdlbiBHbWJICi0JCQkJTHVkd2lnLUVyaGFyZC1TdHJhc3NlIDIyCi0JCQkJSGFtYnVyZyAgMjA0NTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTNEICAgKGhleCkJCUp1bXBHZW4gU3lzdGVtcywgTExDCi0wMDIyM0QgICAgIChiYXNlIDE2KQkJSnVtcEdlbiBTeXN0ZW1zLCBMTEMKLQkJCQkyMTExIFBhbG9tYXIgQWlycG9ydCBSZCwgU3RlIDE0MAotCQkJCUNhcmxzYmFkIENBIDkyMDExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi0zRSAgIChoZXgpCQlJUlRyYW5zIEdtYkgKLTAwMjIzRSAgICAgKGJhc2UgMTYpCQlJUlRyYW5zIEdtYkgKLQkJCQlFaW5zdGVpbnN0cmFzc2UgMTQKLQkJCQlVbnRlcnNjaGxlaXNzaGVpbSBCQVlFUk4gODU3MTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLTNGICAgKGhleCkJCU5ldGdlYXIgSW5jLgotMDAyMjNGICAgICAoYmFzZSAxNikJCU5ldGdlYXIgSW5jLgotCQkJCTQ1MDAgR3JlYXQgQW1lcmljYSBQa3kKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNDAgICAoaGV4KQkJVW5pdmVyc2FsIFRlbGVjb20gUy9BCi0wMDIyNDAgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIFRlbGVjb20gUy9BCi0JCQkJQXZlbmlkYSBQYXVsaXN0YSwgMjQ0NCAtIDE3IGFuZGFyCi0JCQkJU2FvIFBhdWxvICAwMTMxMC0zMDAKLQkJCQlCUkFaSUwKLQotMDAtMjItNDEgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyMjQxICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTQyICAgKGhleCkJCUFsYWNyb24gSW5jLgotMDAyMjQyICAgICAoYmFzZSAxNikJCUFsYWNyb24gSW5jLgotCQkJCTcxIFNwaXQgQnJvb2sgUmQuCi0JCQkJU3VpdGUgMjA0Ci0JCQkJTmFzaHVhIE5IIDAzMDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi00MyAgIChoZXgpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDIyNDMgICAgIChiYXNlIDE2KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCThGLiwgTm8uIDk0LCBCYW96aG9uZyBSZC4sIFhpbmRpYW4KLQkJCQlUYWlwZWkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItNDQgICAoaGV4KQkJQ2hlbmdkdSBMaW5rb24gQ29tbXVuaWNhdGlvbnMgRGV2aWNlIENvLiwgTHRkCi0wMDIyNDQgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSBMaW5rb24gQ29tbXVuaWNhdGlvbnMgRGV2aWNlIENvLiwgTHRkCi0JCQkJNWYtMDIsIEp1bnRvbmcgQnVpbGRpbmcsIE5vLiA1MyxTaHVhbmdmZW5nIFJvYWQsIFd1aG91IERpc3RyaWN0LAotCQkJCUNoZW5nZHUgU2ljaHVhbiA2MTAwNDEKLQkJCQlDSElOQQotCi0wMC0yMi00NSAgIChoZXgpCQlMZWluZSAmIExpbmRlIEFCCi0wMDIyNDUgICAgIChiYXNlIDE2KQkJTGVpbmUgJiBMaW5kZSBBQgotCQkJCUJveCA4Ci0JCQkJU3Ryw6RuZ27DpHMgU8O2ZGVybWFubGFuZCBTRS02NDUgMjEKLQkJCQlTV0VERU4KLQotMDAtMjItNDYgICAoaGV4KQkJRXZvYyBJbnRlbGxpZ2VudCBUZWNobm9sb2d5IENvLixMdGQuCi0wMDIyNDYgICAgIChiYXNlIDE2KQkJRXZvYyBJbnRlbGxpZ2VudCBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJTm8uMzEgR2FveGluIENlbnRlcmFsIEF2ZW51ZSA0dGggUm9hZCxOYW5zaGFuIERpc3RyaWN0IFNoZW56aGVuIENpdHkKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjItNDcgICAoaGV4KQkJREFDIEVOR0lORUVSSU5HIENPLiwgTFRELgotMDAyMjQ3ICAgICAoYmFzZSAxNikJCURBQyBFTkdJTkVFUklORyBDTy4sIExURC4KLQkJCQkxLTUgT3lhbmFnaS1jaG8KLQkJCQlLYW1pdG9iYSwgTWluYW1pLWt1Ci0JCQkJS3lvdG8gIDYwMS04MTI4Ci0JCQkJSkFQQU4KLQotMDAtMjItNDggICAoaGV4KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0wMDIyNDggICAgIChiYXNlIDE2KQkJTWljcm9zb2Z0IENvcnBvcmF0aW9uCi0JCQkJT25lIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTItNjM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNDkgICAoaGV4KQkJSE9NRSBNVUxUSUVORVJHWSBTTAotMDAyMjQ5ICAgICAoYmFzZSAxNikJCUhPTUUgTVVMVElFTkVSR1kgU0wKLQkJCQlDQVBJVMOBTiBIQVlBIDEKLQkJCQlFRElGSUNJTyBFVUNPQ0VOVFJPIEJBSk8KLQkJCQlNQURSSUQgIDI4MDIwCi0JCQkJU1BBSU4KLQotMDAtMjItNEEgICAoaGV4KQkJUkFZTEFTRSBBRwotMDAyMjRBICAgICAoYmFzZSAxNikJCVJBWUxBU0UgQUcKLQkJCQlBcmdlbHNyaWVkZXIgRmVsZCAyLTQKLQkJCQlXZXNzbGluZyBCYXZhcmlhIDgyMjM0Ci0JCQkJR0VSTUFOWQotCi0wMC0yMi00QiAgIChoZXgpCQlBSVJURUNIIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAyMjRCICAgICAoYmFzZSAxNikJCUFJUlRFQ0ggVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTlmbC00LCBuby43NywgSHNpbiBUYWkgV3UgUmQuLCBzZWMuMSwgSHNpbi1DaGloCi0JCQkJVGFpcGVpICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTRDICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyMjRDICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTIyLTREICAgKGhleCkJCU1JVEFDIElOVEVSTkFUSU9OQUwgQ09SUC4KLTAwMjI0RCAgICAgKGJhc2UgMTYpCQlNSVRBQyBJTlRFUk5BVElPTkFMIENPUlAuCi0JCQkJNlRIIEZMLiwgTk8xODcsIFRJRElORyBCTFZELiwgU0VDLiAyCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTRFICAgKGhleCkJCVNFRW5lcmd5IENvcnAuCi0wMDIyNEUgICAgIChiYXNlIDE2KQkJU0VFbmVyZ3kgQ29ycC4KLQkJCQk0RiwgTm8uNjEsIERvbmdzaW5nIFJELgotCQkJCVRhaXBlaSAgMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi00RiAgIChoZXgpCQlCeXpvcm8gTmV0d29ya3MgTHRkLgotMDAyMjRGICAgICAoYmFzZSAxNikJCUJ5em9ybyBOZXR3b3JrcyBMdGQuCi0JCQkJUm9vbSA1QTEsQmxvY2sgQSwgS2VzaGkgUGxhemEsTm8uIDI4QSBJbmZvLiBSb2FkLAotCQkJCUhhaURpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0yMi01MCAgIChoZXgpCQlQb2ludCBTaXggV2lyZWxlc3MsIExMQwotMDAyMjUwICAgICAoYmFzZSAxNikJCVBvaW50IFNpeCBXaXJlbGVzcywgTExDCi0JCQkJMjMzMyBBbHVtbmkgUGFyayBQbGF6YQotCQkJCVN1aXRlIDMwNQotCQkJCUxleGluZ3RvbiBLWSA0MDUxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNTEgICAoaGV4KQkJTHVtYXNlbnNlIFRlY2hub2xvZ2llcwotMDAyMjUxICAgICAoYmFzZSAxNikJCUx1bWFzZW5zZSBUZWNobm9sb2dpZXMKLQkJCQkzMDMzIFNjb3R0IEJsdmQuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTUyICAgKGhleCkJCVpPTEwgTGlmZWNvciBDb3Jwb3JhdGlvbgotMDAyMjUyICAgICAoYmFzZSAxNikJCVpPTEwgTGlmZWNvciBDb3Jwb3JhdGlvbgotCQkJCTEyMSBGcmVlcG9ydCBSb2FkCi0JCQkJUGl0dHNidXJnaCBQQSAxNTIzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNTMgICAoaGV4KQkJRW50b3JpYW4gVGVjaG5vbG9naWVzCi0wMDIyNTMgICAgIChiYXNlIDE2KQkJRW50b3JpYW4gVGVjaG5vbG9naWVzCi0JCQkJODkwMCBTaG9hbCBDcmVlayBCbHZkCi0JCQkJQXVzdGluIFRYIDc4NzU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi01NCAgIChoZXgpCQlCaWdlbG93IEFlcm9zcGFjZQotMDAyMjU0ICAgICAoYmFzZSAxNikJCUJpZ2Vsb3cgQWVyb3NwYWNlCi0JCQkJMTg5OSBXLiBCcm9va3MgQXZlCi0JCQkJTm9ydGggTGFzIFZlZ2FzIE5WIDg5MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi01NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIyNTUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNTYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMjU2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTU3ICAgKGhleCkJCTNDb20gRXVyb3BlIEx0ZAotMDAyMjU3ICAgICAoYmFzZSAxNikJCTNDb20gRXVyb3BlIEx0ZAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydHMuIEhQMiA0TlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi01OCAgIChoZXgpCQlUYWl5byBZdWRlbiBDby4sIEx0ZC4KLTAwMjI1OCAgICAgKGJhc2UgMTYpCQlUYWl5byBZdWRlbiBDby4sIEx0ZC4KLQkJCQk4LTEsIFNha2FlLWNobwotCQkJCVRha2FzYWtpLXNoaSBHdW5tYS1rZW4gMzcwLTg1MjIKLQkJCQlKQVBBTgotCi0wMC0yMi01OSAgIChoZXgpCQlHdWFuZ3pob3UgTmV3IFBvc3Rjb20gRXF1aXBtZW50IENvLixMdGQuCi0wMDIyNTkgICAgIChiYXNlIDE2KQkJR3Vhbmd6aG91IE5ldyBQb3N0Y29tIEVxdWlwbWVudCBDby4sTHRkLgotCQkJCU5vLjPCocKhR3VhbmdwdXhpIFJvYWQsR3Vhbmd6aG91IFNjaWVuY2UgQ2l0eSwKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTAwLTIyLTVBICAgKGhleCkJCUdhcmRlIFNlY3VyaXR5IEFCCi0wMDIyNUEgICAgIChiYXNlIDE2KQkJR2FyZGUgU2VjdXJpdHkgQUIKLQkJCQlCb3ggNzgKLQkJCQlTb2RlcmhhbW4gIFMtODI2IDIyCi0JCQkJU1dFREVOCi0KLTAwLTIyLTVCICAgKGhleCkJCVRlcmFkaWNpIENvcnBvcmF0aW9uCi0wMDIyNUIgICAgIChiYXNlIDE2KQkJVGVyYWRpY2kgQ29ycG9yYXRpb24KLQkJCQkxMDEgNDYyMSBDYW5hZGEgV2F5LAotCQkJCUJ1cm5hYnkgQkMgVjZHIDRYOAotCQkJCUNBTkFEQQotCi0wMC0yMi01QyAgIChoZXgpCQlNdWx0aW1lZGlhICYgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5Ci0wMDIyNUMgICAgIChiYXNlIDE2KQkJTXVsdGltZWRpYSAmIENvbW11bmljYXRpb24gVGVjaG5vbG9neQotCQkJCURpZ2l0YWwgRW1waXJlIEQtODAxICM5ODAtMwotCQkJCVllb25nVG9uZy1Eb25nCi0JCQkJU3V3b24tQ2l0eSBLeWVvbmdHaS1EbyA0NDMtODEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLTVEICAgKGhleCkJCURpZ2ljYWJsZSBOZXR3b3JrIEluZGlhIFB2dC4gTHRkLgotMDAyMjVEICAgICAoYmFzZSAxNikJCURpZ2ljYWJsZSBOZXR3b3JrIEluZGlhIFB2dC4gTHRkLgotCQkJCTdCLCBTaGFoIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJT2ZmLiBWZWVyYSBEZXNhaSBSb2FkLAotCQkJCUFuZGhlcmkgLSBXZXN0LCBNdW1iYWkuIE1haGFyYXNodHJhIDQwMCAwNTMKLQkJCQlJTkRJQQotCi0wMC0yMi01RSAgIChoZXgpCQlVd2luIFRlY2hub2xvZ2llcyBDby4sTFRECi0wMDIyNUUgICAgIChiYXNlIDE2KQkJVXdpbiBUZWNobm9sb2dpZXMgQ28uLExURAotCQkJCTJGLE5vLjIyLlImRCBSRCBJSSxTQklQCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi01RiAgIChoZXgpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAyMjVGICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsOTAsQ2hpZW4gMSBSb2FkLENodW5nSG8sCi0JCQkJVGFpcGVpIEhzaWVuLCAyMzU4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItNjAgICAoaGV4KQkJQUZSRUVZIEluYy4KLTAwMjI2MCAgICAgKGJhc2UgMTYpCQlBRlJFRVkgSW5jLgotCQkJCTZGLCBOby4yNDksIENoaWVuIEkgUm9hZAotCQkJCUNodW5nIEhvIENpdHkgVGFpcGVpIENvdW50eSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTYxICAgKGhleCkJCUZyb250aWVyIFNpbGljb24gTHRkCi0wMDIyNjEgICAgIChiYXNlIDE2KQkJRnJvbnRpZXIgU2lsaWNvbiBMdGQKLQkJCQlHbGVuZWFnbGVzLCBUaGUgQmVsZnJ5Ci0JCQkJQ29sb25pYWwgV2F5Ci0JCQkJV2F0Zm9yZCBIZXJ0Zm9yZHNoaXJlIFdEMjQgNFdICi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItNjIgICAoaGV4KQkJQkVQIE1hcmluZQotMDAyMjYyICAgICAoYmFzZSAxNikJCUJFUCBNYXJpbmUKLQkJCQkxMyBUYXJuZGFsZSBHcm92ZSBBbGJhbnkKLQkJCQlOb3J0aCBTaG9yZQotCQkJCUF1Y2tsYW5kICAwNjMyCi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtMjItNjMgICAoaGV4KQkJS29vcyBUZWNobmljYWwgU2VydmljZXMsIEluYy4KLTAwMjI2MyAgICAgKGJhc2UgMTYpCQlLb29zIFRlY2huaWNhbCBTZXJ2aWNlcywgSW5jLgotCQkJCTEwMjUgR3JlZW53b29kIEJsdmQuCi0JCQkJU3VpdGUgMzkxCi0JCQkJTGFrZSBNYXJ5IEZMIDMyNzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi02NCAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAyMjY0ICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMgotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTY1ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIyNjUgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIyLTY2ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDIyNjYgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTIyLTY3ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyMjY3ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVGV4YXMgNzUwODItNDM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNjggICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMjI2OCAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCTY2LCBDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLTY5ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0wMDIyNjkgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLQkJCQk2NiwgQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi02QSAgIChoZXgpCQlIb25leXdlbGwKLTAwMjI2QSAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwKLQkJCQk4ODQwIEV2ZXJncmVlbiBCbHZkLgotCQkJCU1pbm5lYXBvbGlzIE1OIDU1NDMzLTYwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTZCICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAyMjZCICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItNkMgICAoaGV4KQkJTGlua1Nwcml0ZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjI2QyAgICAgKGJhc2UgMTYpCQlMaW5rU3ByaXRlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE0MTAgQ2Fubm9uIE1vdW50YWluIERyCi0JCQkJTG9uZ21vbnQgQ08gODA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTZEICAgKGhleCkJCVNoZW56aGVuIEdJRUMgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0wMDIyNkQgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gR0lFQyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkyNC9GLCBYaU5pYW4gQ2VudGVyLCBTaGVuTmFuIFJvYWQgNjAyMSMsIEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyBQcm92aW5jZSA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0yMi02RSAgIChoZXgpCQlHb3dlbGwgRWxlY3Ryb25pYyBMaW1pdGVkCi0wMDIyNkUgICAgIChiYXNlIDE2KQkJR293ZWxsIEVsZWN0cm9uaWMgTGltaXRlZAotCQkJCVJvb20gMzYwMSAsMzYgRmxvb3IsR29sZGVuIENlbnRyYWwgVG93ZXIsSmludGlhbiBSb2FkLEZ1dGlhbiBDZW50cmFsIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgwNDgKLQkJCQlDSElOQQotCi0wMC0yMi02RiAgIChoZXgpCQkzb25lZGF0YSBUZWNobm9sb2d5IENvLiBMdGQuCi0wMDIyNkYgICAgIChiYXNlIDE2KQkJM29uZWRhdGEgVGVjaG5vbG9neSBDby4gTHRkLgotCQkJCTMvRiwgQi8yLCBKaXV4aWFuZ2xpbmcgSW5kdXN0cmlhbCBEaXN0cmljdCwgWGlsaSBUb3duLCBOYW5zaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTUKLQkJCQlDSElOQQotCi0wMC0yMi03MCAgIChoZXgpCQlBQksgTm9ydGggQW1lcmljYSwgTExDCi0wMDIyNzAgICAgIChiYXNlIDE2KQkJQUJLIE5vcnRoIEFtZXJpY2EsIExMQwotCQkJCTQ0MCBOb3J0aCBXb2xmZSBSZC4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTcxICAgKGhleCkJCUrDg8KkZ2VyIENvbXB1dGVyZ2VzdGV1ZXJ0ZSBNZXNzdGVjaG5payBHbWJICi0wMDIyNzEgICAgIChiYXNlIDE2KQkJSsODwqRnZXIgQ29tcHV0ZXJnZXN0ZXVlcnRlIE1lc3N0ZWNobmlrIEdtYkgKLQkJCQlSaGVpbnN0cmHDg8W4ZSAyLTQKLQkJCQlMb3JzY2ggSGVzc2VuIDY0NjUzCi0JCQkJR0VSTUFOWQotCi0wMC0yMi03MiAgIChoZXgpCQlBbWVyaWNhbiBNaWNyby1GdWVsIERldmljZSBDb3JwLgotMDAyMjcyICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIE1pY3JvLUZ1ZWwgRGV2aWNlIENvcnAuCi0JCQkJMjE4MSBCdWNoYW5hbiBMb29wCi0JCQkJRmVybmRhbGUgV0EgOTgyNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTczICAgKGhleCkJCVRlY2h3YXkKLTAwMjI3MyAgICAgKGJhc2UgMTYpCQlUZWNod2F5Ci0JCQkJUm0gMTAwMiwgRGFlaHl1biBUZWNobm8gV29ybGQgQmQsCi0JCQkJMTc0LCBPanVuLURvbmcsCi0JCQkJVWl3YW5nLVNpLCBLeXVuZ2tpLURvIDQzNy04MjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItNzQgICAoaGV4KQkJRmFtaWx5UGhvbmUgQUIKLTAwMjI3NCAgICAgKGJhc2UgMTYpCQlGYW1pbHlQaG9uZSBBQgotCQkJCUFuY2thcmdyaXBzZ2F0YW4gMwotCQkJCU1hbG3DtiAgMjExMTkKLQkJCQlTV0VERU4KLQotMDAtMjItNzUgICAoaGV4KQkJQmVsa2luIEludGVybmF0aW9uYWwsIEluYy4KLTAwMjI3NSAgICAgKGJhc2UgMTYpCQlCZWxraW4gSW50ZXJuYXRpb25hbCwgSW5jLgotCQkJCTUwMSBXLiBXYWxudXQgU3QuCi0JCQkJQ29tcHRvbiBDQS4gOTAyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTc2ICAgKGhleCkJCVRyaXBsZSBFWUUgQi5WLgotMDAyMjc2ICAgICAoYmFzZSAxNikJCVRyaXBsZSBFWUUgQi5WLgotCQkJCVZhYXNzZW5zZXdlZyA3MQotCQkJCUVtc3QgIDgxNjYgQVQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMi03NyAgIChoZXgpCQlORUMgQXVzdHJhbGlhIFB0eSBMdGQKLTAwMjI3NyAgICAgKGJhc2UgMTYpCQlORUMgQXVzdHJhbGlhIFB0eSBMdGQKLQkJCQk2NDktNjU1IFNwcmluZ3ZhbGUgUmQKLQkJCQlNdWxncmF2ZSBWaWN0b3JpYSAzMTcwCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIyLTc4ICAgKGhleCkJCVNoZW56aGVuICBUb25nZmFuZyBNdWx0aW1lZGlhICBUZWNobm9sb2d5IENvLixMdGQuCi0wMDIyNzggICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gIFRvbmdmYW5nIE11bHRpbWVkaWEgIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQk5dGggRmxvb3IsQnVpbGRpbmcgI0QsVG9uZ2ZhbmcgSW5mb3JtYXRpb24gSGFyYm91cixIaWdoLXRlY2ggSW5kdXN0cmlhbCBQYXJrLExhbmdzaGFuIFJELCBOYW5TaGFuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuZyBHdWFuZ0RvbmcgNTE4MDU4Ci0JCQkJQ0hJTkEKLQotMDAtMjItNzkgICAoaGV4KQkJTmlwcG9uIENvbmx1eCBDby4sIEx0ZC4KLTAwMjI3OSAgICAgKGJhc2UgMTYpCQlOaXBwb24gQ29ubHV4IENvLiwgTHRkLgotCQkJCTUtMy04LCBDaGl5b2RhCi0JCQkJU2FrYWRvLXNoaSBTYWl0YW1hIDM1MC0wMjE0Ci0JCQkJSkFQQU4KLQotMDAtMjItN0EgICAoaGV4KQkJVGVsZWNvbSBEZXNpZ24KLTAwMjI3QSAgICAgKGJhc2UgMTYpCQlUZWxlY29tIERlc2lnbgotCQkJCVphIFJlbW9yYQotCQkJCVZvaWUgUm9tYWluZQotCQkJCTMzMTcwIEdyYWRpZ25hbiAKLQkJCQlGUkFOQ0UKLQotMDAtMjItN0IgICAoaGV4KQkJQXBvZ2VlIExhYnMsIEluYy4KLTAwMjI3QiAgICAgKGJhc2UgMTYpCQlBcG9nZWUgTGFicywgSW5jLgotCQkJCTIxMCBTLiAzcmQgU3QuCi0JCQkJTm9ydGggV2FsZXMgUEEgMTk0NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTdDICAgKGhleCkJCVdvb3JpIFNNVCBDby4sbHRkCi0wMDIyN0MgICAgIChiYXNlIDE2KQkJV29vcmkgU01UIENvLixsdGQKLQkJCQk2NDktMixTdXdvbGFtLXJpLFNlb3Rhbi1NeXVuCi0JCQkJUHlvbmd0YWVrIEt5b25nZ2ktRG8gNDUxLTg1MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi03RCAgIChoZXgpCQlZRSBEQVRBIElOQy4KLTAwMjI3RCAgICAgKGJhc2UgMTYpCQlZRSBEQVRBIElOQy4KLQkJCQkxODIgU2hpbmtvCi0JCQkJSXJ1bWEgU2FpdGFtYSAzNTgtMDA1NQotCQkJCUpBUEFOCi0KLTAwLTIyLTdFICAgKGhleCkJCUNoZW5nZHUgMzBLYWl0aWFuIENvbW11bmljYXRpb24gSW5kdXN0cnkgQ28uTHRkCi0wMDIyN0UgICAgIChiYXNlIDE2KQkJQ2hlbmdkdSAzMEthaXRpYW4gQ29tbXVuaWNhdGlvbiBJbmR1c3RyeSBDby5MdGQKLQkJCQlOby42IENodWFuZ3llIFJvYWQKLQkJCQlDaGVuZ2R1IFNpY2h1YW4gNjEwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMjItN0YgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi0wMDIyN0YgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItODAgICAoaGV4KQkJQTJCIEVsZWN0cm9uaWNzIEFCCi0wMDIyODAgICAgIChiYXNlIDE2KQkJQTJCIEVsZWN0cm9uaWNzIEFCCi0JCQkJQm94IDE0Ci0JCQkJTW90YWxhICBTLTU5MSAyMQotCQkJCVNXRURFTgotCi0wMC0yMi04MSAgIChoZXgpCQlEYWludHJlZSBOZXR3b3JrcyBJbmMKLTAwMjI4MSAgICAgKGJhc2UgMTYpCQlEYWludHJlZSBOZXR3b3JrcyBJbmMKLQkJCQkzMzQwIFdhbG51dCBBdmUKLQkJCQlTdWl0ZSAyNzUKLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi04MiAgIChoZXgpCQk4MDg2IExpbWl0ZWQKLTAwMjI4MiAgICAgKGJhc2UgMTYpCQk4MDg2IExpbWl0ZWQKLQkJCQkxNyBMb3dmaWVsZCBMYW5lCi0JCQkJQmFsZGVydG9uCi0JCQkJTmV3YXJrIE5vdHRzIE5HMjQgM0hKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjItODMgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAyMjgzICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi04NCAgIChoZXgpCQlERVNBWSBBJlYgU0NJRU5DRSBBTkQgVEVDSE5PTE9HWSBDTy4sTFRECi0wMDIyODQgICAgIChiYXNlIDE2KQkJREVTQVkgQSZWIFNDSUVOQ0UgQU5EIFRFQ0hOT0xPR1kgQ08uLExURAotCQkJCURFU0FZIDNyZCBab25lLENoZW5qaWFuZywKLQkJCQlIdWl6aG91IEd1YW5nZG9uZyA1MTYyMjkKLQkJCQlDSElOQQotCi0wMC0yMi04NSAgIChoZXgpCQlOT01VUyBDT01NIFNZU1RFTVMKLTAwMjI4NSAgICAgKGJhc2UgMTYpCQlOT01VUyBDT01NIFNZU1RFTVMKLQkJCQk2MDEsIEd1bmphbiBUb3dlciwKLQkJCQlPZmYuIEFsZW1iaWMgR29yd2EgUm9hZAotCQkJCUJhcm9kYSBHdWphcmF0IDM5MDAyMwotCQkJCUlORElBCi0KLTAwLTIyLTg2ICAgKGhleCkJCUFTVFJPTgotMDAyMjg2ICAgICAoYmFzZSAxNikJCUFTVFJPTgotCQkJCU91ZGVob29nZXZlZW5zZWRpamsgNAotCQkJCUR3aW5nZWxvbyBEcmVudGhlIDc5OTFQRAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIyLTg3ICAgKGhleCkJCVRpdGFuIFdpcmVsZXNzIExMQwotMDAyMjg3ICAgICAoYmFzZSAxNikJCVRpdGFuIFdpcmVsZXNzIExMQwotCQkJCTM5MTQgR2F0dGlzIFNjaG9vbCBSZAotCQkJCVN1aXRlIDEwMgotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2NjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTg4ICAgKGhleCkJCVNhZ3JhZCwgSW5jLgotMDAyMjg4ICAgICAoYmFzZSAxNikJCVNhZ3JhZCwgSW5jLgotCQkJCTc1MSBOb3J0aCBEcml2ZQotCQkJCU1lbGJvdXJuZSBGTCAzMjkzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItODkgICAoaGV4KQkJT3B0b3NlY3VyaXR5IEluYy4KLTAwMjI4OSAgICAgKGJhc2UgMTYpCQlPcHRvc2VjdXJpdHkgSW5jLgotCQkJCTUwNSwgQm91bC4gZHUgUGFyYyBUZWNobm9sb2dpcXVlCi0JCQkJUXVlYmVjICBHMVAgNFM5Ci0JCQkJQ0FOQURBCi0KLTAwLTIyLThBICAgKGhleCkJCVRlcmF0cm9uaWsgZWxla3Ryb25pc2NoZSBzeXN0ZW1lIGdtYmgKLTAwMjI4QSAgICAgKGJhc2UgMTYpCQlUZXJhdHJvbmlrIGVsZWt0cm9uaXNjaGUgc3lzdGVtZSBnbWJoCi0JCQkJS2FybC1VbHJpY2gtU3RyYXNzZSAxCi0JCQkJR3Jvc3MtVW1zdGFkdCAgRC02NDgyMwotCQkJCUdFUk1BTlkKLQotMDAtMjItOEIgICAoaGV4KQkJS2Vuc2luZ3RvbiBDb21wdXRlciBQcm9kdWN0cyBHcm91cAotMDAyMjhCICAgICAoYmFzZSAxNikJCUtlbnNpbmd0b24gQ29tcHV0ZXIgUHJvZHVjdHMgR3JvdXAKLQkJCQkzMzMgVHdpbiBEb2xwaGluIERyLgotCQkJCVNpeHRoIEZsb29yCi0JCQkJUmVkd29vZCBTaG9yZXMgQ0EgOTQwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLThDICAgKGhleCkJCVBob3RvbiBFdXJvcGUgR21iSAotMDAyMjhDICAgICAoYmFzZSAxNikJCVBob3RvbiBFdXJvcGUgR21iSAotCQkJCUrDg8K8bGljaGVyIFN0cmHDg8W4ZSAzNzYKLQkJCQlBYWNoZW4gTm9yZHJoZWluLVdlc3RmYWxlbiA1MjA3MAotCQkJCUdFUk1BTlkKLQotMDAtMjItOEQgICAoaGV4KQkJR0JTIExhYm9yYXRvcmllcyBMTEMKLTAwMjI4RCAgICAgKGJhc2UgMTYpCQlHQlMgTGFib3JhdG9yaWVzIExMQwotCQkJCTIzMjUgRHVsbGVzIENvcm5lciBCbHZkCi0JCQkJSGVybmRvbiBWQSAyMDE3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItOEUgICAoaGV4KQkJVFYtTlVNRVJJQwotMDAyMjhFICAgICAoYmFzZSAxNikJCVRWLU5VTUVSSUMKLQkJCQkyNC0yNiBydWUgTG91aXMgQXJtYW5kCi0JCQkJUGFyaXMgIDc1MDE1Ci0JCQkJRlJBTkNFCi0KLTAwLTIyLThGICAgKGhleCkJCUNOUlMKLTAwMjI4RiAgICAgKGJhc2UgMTYpCQlDTlJTCi0JCQkJTVJDVAotCQkJCTEgcGxhY2UgQXJpc3RpZGUgQnJpYW5kCi0JCQkJTWV1ZG9uIElsZSBkZSBGcmFuY2UgOTIxOTUKLQkJCQlGUkFOQ0UKLQotMDAtMjItOTAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMjkwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTkxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjI5MSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi05MiAgIChoZXgpCQlDaW5ldGFsCi0wMDIyOTIgICAgIChiYXNlIDE2KQkJQ2luZXRhbAotCQkJCTg2NTEgQ2FzdGxlIFBhcmsKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyNTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTkzICAgKGhleCkJCVpURSBDb3Jwb3JhdGlvbgotMDAyMjkzICAgICAoYmFzZSAxNikJCVpURSBDb3Jwb3JhdGlvbgotCQkJCTEyL0YgenRlIHBsYXphLGtlamkgUm9hZCBTb3V0aCxIaS1UZWNoIEluZHVzdHJpYWwgUGFyayxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTIyLTk0ICAgKGhleCkJCUt5b2NlcmEgQ29ycG9yYXRpb24KLTAwMjI5NCAgICAgKGJhc2UgMTYpCQlLeW9jZXJhIENvcnBvcmF0aW9uCi0JCQkJMi0xLTEsS2FnYWhhcmEKLQkJCQlUc3V6dWtpLWt1Ci0JCQkJWW9rb2hhbWEtc2hpIEthbmFnYXdhIDIyNC04NTAyCi0JCQkJSkFQQU4KLQotMDAtMjItOTUgICAoaGV4KQkJU0dNIFRlY2hub2xvZ3kgZm9yIGxpZ2h0aW5nIHNwYQotMDAyMjk1ICAgICAoYmFzZSAxNikJCVNHTSBUZWNobm9sb2d5IGZvciBsaWdodGluZyBzcGEKLQkJCQlWaWEgUGlvIExhIFRvcnJlIDEKLQkJCQlUYXZ1bGxpYSBQVSA2MTAxMAotCQkJCUlUQUxZCi0KLTAwLTIyLTk2ICAgKGhleCkJCUxpbm9XYXZlIENvcnBvcmF0aW9uCi0wMDIyOTYgICAgIChiYXNlIDE2KQkJTGlub1dhdmUgQ29ycG9yYXRpb24KLQkJCQkxMDAxLTEwMSBDaGFtcGxhaW4gQXZlbnVlCi0JCQkJQnVybGluZ3RvbiBPbmF0YXJpbyBMN0wgNVo0Ci0JCQkJQ0FOQURBCi0KLTAwLTIyLTk3ICAgKGhleCkJCVhNT1MgU2VtaWNvbmR1Y3RvcgotMDAyMjk3ICAgICAoYmFzZSAxNikJCVhNT1MgU2VtaWNvbmR1Y3RvcgotCQkJCVZlbnR1cmVycyBIb3VzZQotCQkJCUtpbmcgU3RyZWV0Ci0JCQkJQnJpc3RvbCAgQlMxIDRQQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIyLTk4ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDIyOTggICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa8OlbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjItOTkgICAoaGV4KQkJU2VhTWljcm8gSW5jLgotMDAyMjk5ICAgICAoYmFzZSAxNikJCVNlYU1pY3JvIEluYy4KLQkJCQk0Njc3IE9sZCBJcm9uc2lkZXMgRHIuLAotCQkJCVN1aXRlIDMxMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi05QSAgIChoZXgpCQlMYXN0YXIsIEluYy4KLTAwMjI5QSAgICAgKGJhc2UgMTYpCQlMYXN0YXIsIEluYy4KLQkJCQkzNTU1IEtldHRlcmluZyBCTFZELgotCQkJCU1vcmFpbmUgT2hpbyA0NTQzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItOUIgICAoaGV4KQkJQXZlckxvZ2ljIFRlY2hub2xvZ2llcywgSW5jLgotMDAyMjlCICAgICAoYmFzZSAxNikJCUF2ZXJMb2dpYyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk3Ri0yLCBOby4yLCBMYW5lIDI1OCwgUnVpIEd1YW5nIFJkLiwgTmVpLUh1IERpc3QuLAotCQkJCVRhaXBlaSBUYWl3YW4gMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi05QyAgIChoZXgpCQlWZXJpc21vIE5ldHdvcmtzIEluYwotMDAyMjlDICAgICAoYmFzZSAxNikJCVZlcmlzbW8gTmV0d29ya3MgSW5jCi0JCQkJMjk1IEJlcm5hbmRvIEF2ZW51ZQotCQkJCVN0ZSAjIDMwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLTlEICAgKGhleCkJCVBZVU5HLUhXQSBJTkQuQ08uLExURAotMDAyMjlEICAgICAoYmFzZSAxNikJCVBZVU5HLUhXQSBJTkQuQ08uLExURAotCQkJCTIzMC0xCi0JCQkJRHVja3dvby1SSSwgUGFsdGFuLU1ZVU4KLQkJCQlIV0FTVU5HLVNJIEtZVU5HR0ktRE8gNDQ1LTkxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi05RSAgIChoZXgpCQlTb2NpYWwgQWlkIFJlc2VhcmNoIENvLiwgTHRkLgotMDAyMjlFICAgICAoYmFzZSAxNikJCVNvY2lhbCBBaWQgUmVzZWFyY2ggQ28uLCBMdGQuCi0JCQkJU291dGggMywgV2VzdCAxMCwgQ2h1by1rdQotCQkJCTdGLCBGdWt1eWFtYS1NaW5hbWktM2p5b3UgQnVpbGQuCi0JCQkJU2FwcG9ybyBIb2trYWlkbyAwNjAtMDA2MwotCQkJCUpBUEFOCi0KLTAwLTIyLTlGICAgKGhleCkJCVNlbnN5cyBUcmFmZmljIEFCCi0wMDIyOUYgICAgIChiYXNlIDE2KQkJU2Vuc3lzIFRyYWZmaWMgQUIKLQkJCQlTbG90dHNnYXRhbiAxNAotCQkJCUJveCAyMTc0Ci0JCQkJSm9ua29waW5nIFNtYWxhbmQgNTUzMjIKLQkJCQlTV0VERU4KLQotMDAtMjItQTAgICAoaGV4KQkJRGVscGhpIENvcnBvcmF0aW9uCi0wMDIyQTAgICAgIChiYXNlIDE2KQkJRGVscGhpIENvcnBvcmF0aW9uCi0JCQkJTS9DLTQ4MC00MDUtMjU1Ci0JCQkJNTgyMCBEZWxwaGkgRHJpdmUKLQkJCQlUcm95IE1JIDQ4NDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1BMSAgIChoZXgpCQlIdWF3ZWkgU3ltYW50ZWMgVGVjaG5vbG9naWVzIENvLixMdGQuCi0wMDIyQTEgICAgIChiYXNlIDE2KQkJSHVhd2VpIFN5bWFudGVjIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCUJ1aWxkaW5nIDEsVGhlIFdlc3QgWm9uZSBTY2llbmNlIFBhcmsgb2YgVUVTVEMsTm8uODgsVGlhbmNoZW4gUm9hZAotCQkJCUNoZW5nZHUgU2ljaHVhbiA2MTE3MzEKLQkJCQlDSElOQQotCi0wMC0yMi1BMiAgIChoZXgpCQlYdHJhbXVzIFRlY2hub2xvZ2llcwotMDAyMkEyICAgICAoYmFzZSAxNikJCVh0cmFtdXMgVGVjaG5vbG9naWVzCi0JCQkJNXRoIEZsLiwgTm8uIDEwMiwgTGlkZSBTdC4sCi0JCQkJWmhvbmdoZSBDaXR5IFRhaXBlaSBDb3VudHkgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi1BMyAgIChoZXgpCQlDYWxpZm9ybmlhIEVhc3Rlcm4gTGFib3JhdG9yaWVzCi0wMDIyQTMgICAgIChiYXNlIDE2KQkJQ2FsaWZvcm5pYSBFYXN0ZXJuIExhYm9yYXRvcmllcwotCQkJCTQ1OTAgUGF0cmljayBIZW5yeSBEci4KLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQTQgICAoaGV4KQkJMldpcmUKLTAwMjJBNCAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUE1ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDIyQTUgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUE2ICAgKGhleCkJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBBbWVyaWNhCi0wMDIyQTYgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEFtZXJpY2EKLQkJCQk5MTkgRWFzdCBIaWxsc2RhbGUgQmx2ZAotCQkJCUZvc3RlciBDaXR5IENhbGlmb3JuaWEgOTQ0MDQtMjE3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQTcgICAoaGV4KQkJVHljbyBFbGVjdHJvbmljcyBBTVAgR21iSAotMDAyMkE3ICAgICAoYmFzZSAxNikJCVR5Y28gRWxlY3Ryb25pY3MgQU1QIEdtYkgKLQkJCQlBbXBlcmVzdHIuIDEyLTE0Ci0JCQkJQmVuc2hlaW0gSGVzc2VuIDY0NjI1Ci0JCQkJR0VSTUFOWQotCi0wMC0yMi1BOCAgIChoZXgpCQlPdW1hbiBGaW5sYW5kIE95Ci0wMDIyQTggICAgIChiYXNlIDE2KQkJT3VtYW4gRmlubGFuZCBPeQotCQkJCVZvaW1hdGllIDYKLQkJCQlLZW1wZWxlICBGSU4tOTA0NDAKLQkJCQlGSU5MQU5ECi0KLTAwLTIyLUE5ICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIEluYwotMDAyMkE5ICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIEluYwotCQkJCTYwLTM5LEdhc2FuLWRvbmcKLQkJCQlHdW1jaG9uLWd1Ci0JCQkJU2VvdWwgIDE1My0wMjMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItQUEgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDIyQUEgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjItQUIgICAoaGV4KQkJU2hlbnpoZW4gVHVyYm9zaWdodCBUZWNobm9sb2d5IEx0ZAotMDAyMkFCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFR1cmJvc2lnaHQgVGVjaG5vbG9neSBMdGQKLQkJCQlVbml0IEMtOEEsU2hlbm5hbiBHYXJkZW4gQmxkZyxIaWdodGVjaCBQYXJrLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjItQUMgICAoaGV4KQkJSGFuZ3pob3UgU2l5dWFuIFRlY2guIENvLiwgTHRkCi0wMDIyQUMgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgU2l5dWFuIFRlY2guIENvLiwgTHRkCi0JCQkJNSBGLCBUb3dlciBCLCBOby4gMzcsIFhpYW5nIFl1YW4gUm9hZAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMgotCQkJCUNISU5BCi0KLTAwLTIyLUFEICAgKGhleCkJCVRFTEVTSVMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDIyQUQgICAgIChiYXNlIDE2KQkJVEVMRVNJUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkyODE4MSBSaXZlciBEcml2ZQotCQkJCUNpcmNsZXZpbGxlIE9oaW8gNDMxMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUFFICAgKGhleCkJCU1hdHRlbCBJbmMuCi0wMDIyQUUgICAgIChiYXNlIDE2KQkJTWF0dGVsIEluYy4KLQkJCQkzMzMgQ29udGluZW50YWwgQmx2ZC4KLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1BRiAgIChoZXgpCQlTYWZldHkgVmlzaW9uCi0wMDIyQUYgICAgIChiYXNlIDE2KQkJU2FmZXR5IFZpc2lvbgotCQkJCTYxMDAgVy4gU2FtIEhvdXN0b24gUGt3eS4gTm9ydGgKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CMCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMjJCMCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFNpbmh1IDNyZCBSRC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QsIFRhaXBlaSBDaXR5IDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjItQjEgICAoaGV4KQkJRWxiaXQgU3lzdGVtcwotMDAyMkIxICAgICAoYmFzZSAxNikJCUVsYml0IFN5c3RlbXMKLQkJCQlQT0IgNTM5Ci0JCQkJSGFpZmEgIDMxMDUzCi0JCQkJSVNSQUVMCi0KLTAwLTIyLUIyICAgKGhleCkJCTRSRiBDb21tdW5pY2F0aW9ucyBMdGQKLTAwMjJCMiAgICAgKGJhc2UgMTYpCQk0UkYgQ29tbXVuaWNhdGlvbnMgTHRkCi0JCQkJMjYgR2xvdmVyIFN0cmVldAotCQkJCU5nYXVyYW5nYSBXZWxsaW5ndG9uIDYwMzUKLQkJCQlORVcgWkVBTEFORAotCi0wMC0yMi1CMyAgIChoZXgpCQlTZWkgUy5wLkEuCi0wMDIyQjMgICAgIChiYXNlIDE2KQkJU2VpIFMucC5BLgotCQkJCVZpYSBSdWZmaWxsaSwgMQotCQkJCUN1cm5vIEJlcmdhbW8gMjQwMzUKLQkJCQlJVEFMWQotCi0wMC0yMi1CNCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMkI0ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIFUuUy4gSGlnaHdheSA0NQotCQkJCUxpYmVydHl2aWxsZSBJbGxpbm9pcyA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQjUgICAoaGV4KQkJTk9WSVRBCi0wMDIyQjUgICAgIChiYXNlIDE2KQkJTk9WSVRBCi0JCQkJM0YzMDEsTmFtc3VuZyBCL0QgMzQwLTMwCi0JCQkJR2FzYW4tRG9uZwotCQkJCUdldW1jaGVvbi1HdSBTZW91bCAxNTMtNzgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIyLUI2ICAgKGhleCkJCVN1cGVyZmxvdyBUZWNobm9sb2dpZXMgR3JvdXAKLTAwMjJCNiAgICAgKGJhc2UgMTYpCQlTdXBlcmZsb3cgVGVjaG5vbG9naWVzIEdyb3VwCi0JCQkJNDA2MCBEaXhvbiBTdHJlZXQKLQkJCQlEZXMgTW9pbmVzIElBIDUwMjY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CNyAgIChoZXgpCQlHU1MgR3J1bmRpZyBTQVQtU3lzdGVtcyBHbWJICi0wMDIyQjcgICAgIChiYXNlIDE2KQkJR1NTIEdydW5kaWcgU0FULVN5c3RlbXMgR21iSAotCQkJCUJldXRoZXJuZXIgU3RyYXNzZSA0MwotCQkJCU51ZXJuYmVyZyBCYXllcm4gOTA0NzEKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUI4ICAgKGhleCkJCU5vcmNvdHQKLTAwMjJCOCAgICAgKGJhc2UgMTYpCQlOb3Jjb3R0Ci0JCQkJQnJvb2tmaWVsZCBIb3VzZQotCQkJCUdyaW1zZGl0Y2ggTGFuZSBvZmYgVGFycG9ybGV5IFJvYWQKLQkJCQlOb3Jjb3R0IEJyb29rIENoZXNoaXJlIFdBNCA0RUEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi1COSAgIChoZXgpCQlBbmFsb2dpeCBTZW1pbmNvbmR1Y3RvciwgSW5jCi0wMDIyQjkgICAgIChiYXNlIDE2KQkJQW5hbG9naXggU2VtaW5jb25kdWN0b3IsIEluYwotCQkJCTMyMTEgU2NvdHQgQmx2ZC4sIFN1aXRlIDEwMAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CQSAgIChoZXgpCQlIVVRIIEVsZWt0cm9uaWsgU3lzdGVtZSBHbWJICi0wMDIyQkEgICAgIChiYXNlIDE2KQkJSFVUSCBFbGVrdHJvbmlrIFN5c3RlbWUgR21iSAotCQkJCUVjaHRlcm5hY2hlciBTdHIuIDEwCi0JCQkJVHJvaXNkb3JmLVNwaWNoIE5SVyA1Mzg0MgotCQkJCUdFUk1BTlkKLQotMDAtMjItQkIgICAoaGV4KQkJYmV5ZXJkeW5hbWljIEdtYkggJiBDby4gS0cKLTAwMjJCQiAgICAgKGJhc2UgMTYpCQliZXllcmR5bmFtaWMgR21iSCAmIENvLiBLRwotCQkJCVRoZXJlc2llbnN0ci4gOAotCQkJCUhlaWxicm9ubiAgNzQwNzIKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUJDICAgKGhleCkJCUpEU1UgRnJhbmNlIFNBUwotMDAyMkJDICAgICAoYmFzZSAxNikJCUpEU1UgRnJhbmNlIFNBUwotCQkJCTM0IHJ1ZSBOZWNrZXIKLQkJCQlTQUlOVCBFVElFTk5FIExPSVJFIDQyMDAwCi0JCQkJRlJBTkNFCi0KLTAwLTIyLUJEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjJCRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1CRSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIyQkUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQkYgICAoaGV4KQkJU2llQW1wIEdyb3VwIG9mIENvbXBhbmllcwotMDAyMkJGICAgICAoYmFzZSAxNikJCVNpZUFtcCBHcm91cCBvZiBDb21wYW5pZXMKLQkJCQkyIEFuZyBNbyBLaW8gU3RyZWV0IDY0Ci0JCQkJQW5nIE1vIEtpbyBJbmR1c3RyaWFsIFBhcmsgMywgVW5pdCAwMi0wMUQgRWNvbiBCdWlsZGluZwotCQkJCVNpbmdhcG9yZSAgNTY5MDg0Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTIyLUMwICAgKGhleCkJCVNoZW56aGVuIEZvcmNlbGluayBFbGVjdHJvbmljIENvLCBMdGQKLTAwMjJDMCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBGb3JjZWxpbmsgRWxlY3Ryb25pYyBDbywgTHRkCi0JCQkJMm5kIGFuZCAzcmQgZmxvb3IsIEhhc3NlIG1hbnVmYWN0dXJlIGJ1aWxkaW5nLCBIYXNlZSBpbmR1c3RyaWFsIHBhcmsKLQkJCQlCYW54dWVnYW5nIGluZHVzdHJpYWwgYXJlYSwgTG9uZ2dhbmcgZGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTEyCi0JCQkJQ0hJTkEKLQotMDAtMjItQzEgICAoaGV4KQkJQWN0aXZlIFN0b3JhZ2UgSW5jLgotMDAyMkMxICAgICAoYmFzZSAxNikJCUFjdGl2ZSBTdG9yYWdlIEluYy4KLQkJCQkyMjk1IEplZmZlcnNvbiBTdHJlZXQKLQkJCQlUb3JyYW5jZSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItQzIgICAoaGV4KQkJUHJvdmlldyBFbGV0cm9uaWNhIGRvIEJyYXNpbCBMVERBCi0wMDIyQzIgICAgIChiYXNlIDE2KQkJUHJvdmlldyBFbGV0cm9uaWNhIGRvIEJyYXNpbCBMVERBCi0JCQkJUi4gQWNhcsOhLCAyMDMgLSBEaXN0cml0byBJbmR1c3RyaWFsCi0JCQkJTWFuYXVzIEFtYXpvbmFzIDY5MDc1LTAzMAotCQkJCUJSQVpJTAotCi0wMC0yMi1DMyAgIChoZXgpCQlaZWVwb3J0IFRlY2hub2xvZ3kgSW5jLgotMDAyMkMzICAgICAoYmFzZSAxNikJCVplZXBvcnQgVGVjaG5vbG9neSBJbmMuCi0JCQkJMUYsTm8yMzEsWGlhbnpoZW5nIDJuZCBSZC4KLQkJCQlIc2luQ2h1IFRhaXdhbiAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLUM0ICAgKGhleCkJCWVwcm8gR21iSAotMDAyMkM0ICAgICAoYmFzZSAxNikJCWVwcm8gR21iSAotCQkJCUpvZWJrZXN3ZWcgMwotCQkJCUdyb25hdSBOUlcgNDg1OTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUM1ICAgKGhleCkJCUlORk9SU09OIENvLEx0ZC4KLTAwMjJDNSAgICAgKGJhc2UgMTYpCQlJTkZPUlNPTiBDbyxMdGQuCi0JCQkJUm9vbSA3MDQsVG93ZXIgQjEsIENoYW5nWXVhblRpYW5EaSBQbGF6YQotCQkJCVN1WmhvdSBTdHJlZXQsIEhhaURpYW4gRGlzdHJpY3QKLQkJCQlCZWlKaW5nIENpdHkgIDEwMDA4MAotCQkJCUNISU5BCi0KLTAwLTIyLUM2ICAgKGhleCkJCVN1dHVzIEluYwotMDAyMkM2ICAgICAoYmFzZSAxNikJCVN1dHVzIEluYwotCQkJCTMwMS0zOTk5IEhlbm5pbmcgRHJpdmUKLQkJCQlCdXJuYWJ5IEJyaXRpc2ggQ29sdW1iaWEgVjVDIDZQOQotCQkJCUNBTkFEQQotCi0wMC0yMi1DNyAgIChoZXgpCQlTRUdHRVIgTWljcm9jb250cm9sbGVyIEdtYkggJiBDby4gS0cKLTAwMjJDNyAgICAgKGJhc2UgMTYpCQlTRUdHRVIgTWljcm9jb250cm9sbGVyIEdtYkggJiBDby4gS0cKLQkJCQlJbiBkZW4gV2VpZGVuIDExCi0JCQkJSGlsZGVuIE5SVyA0MDcyMQotCQkJCUdFUk1BTlkKLQotMDAtMjItQzggICAoaGV4KQkJQXBwbGllZCBJbnN0cnVtZW50cwotMDAyMkM4ICAgICAoYmFzZSAxNikJCUFwcGxpZWQgSW5zdHJ1bWVudHMKLQkJCQlFZGlzb253ZWcgMzlkCi0JCQkJVmxpc3NpbmdlbiBaZWVsYW5kIE5MLTQzODJOVgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTIyLUM5ICAgKGhleCkJCUxlbm9yZCwgQmF1ZXIgJiBDbyBHbWJICi0wMDIyQzkgICAgIChiYXNlIDE2KQkJTGVub3JkLCBCYXVlciAmIENvIEdtYkgKLQkJCQlEb2hsZW5zdHIgMzIKLQkJCQlPYmVyaGF1c2VuIE5SVyA0NjE0NQotCQkJCUdFUk1BTlkKLQotMDAtMjItQ0EgICAoaGV4KQkJQW52aXogQmlvbWV0cmljIFRlY2guIENvLiwgTHRkLgotMDAyMkNBICAgICAoYmFzZSAxNikJCUFudml6IEJpb21ldHJpYyBUZWNoLiBDby4sIEx0ZC4KLQkJCQk1dGggRmxvb3IsIDQyOTkgSmluZHUgUm9hZCwKLQkJCQlTaGFuZ2hhaSAgMjAxMTA4Ci0JCQkJQ0hJTkEKLQotMDAtMjItQ0IgICAoaGV4KQkJSU9OT0RFUyBJbmMuCi0wMDIyQ0IgICAgIChiYXNlIDE2KQkJSU9OT0RFUyBJbmMuCi0JCQkJMTU1NSBBdmVuaXIKLQkJCQlTdWl0ZSAxMDMKLQkJCQlMYXZhbCBRdWViZWMgSDdTMk41Ci0JCQkJQ0FOQURBCi0KLTAwLTIyLUNDICAgKGhleCkJCVNjaUxvZywgSW5jLgotMDAyMkNDICAgICAoYmFzZSAxNikJCVNjaUxvZywgSW5jLgotCQkJCTg4NDUgU291dGggR3JlZW52aWV3IERyaXZlCi0JCQkJU3VpdGUgNAotCQkJCU1pZGRsZXRvbiBXaXNjb25zaW4gNTM1NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUNEICAgKGhleCkJCUFyZWQgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjJDRCAgICAgKGJhc2UgMTYpCQlBcmVkIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNkYtOCBOby44MyBTZWMuMSwgTmFua2FuIFJkLiBMdXpodSBTaGlhbmcKLQkJCQlUYW95dWFuIENvdW50eSBUYWl3YW4gMzM4NTkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLUNFICAgKGhleCkJCUNpc2NvLCBTZXJ2aWNlIFByb3ZpZGVyIFZpZGVvIFRlY2hub2xvZ3kgR3JvdXAKLTAwMjJDRSAgICAgKGJhc2UgMTYpCQlDaXNjbywgU2VydmljZSBQcm92aWRlciBWaWRlbyBUZWNobm9sb2d5IEdyb3VwCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGFya3dheQotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUNGICAgKGhleCkJCVBMQU5FWCBDb21tdW5pY2F0aW9ucyBJTkMKLTAwMjJDRiAgICAgKGJhc2UgMTYpCQlQTEFORVggQ29tbXVuaWNhdGlvbnMgSU5DCi0JCQkJMkYgRsKBRU5JU1NBWSBFYmlzdSBCbGRnMy0xNi0zCi0JCQkJU2hpYnV5YS1rdSBUb2t5byAxNTAtMDAxMQotCQkJCUpBUEFOCi0KLTAwLTIyLUQwICAgKGhleCkJCVBvbGFyIEVsZWN0cm8gT3kKLTAwMjJEMCAgICAgKGJhc2UgMTYpCQlQb2xhciBFbGVjdHJvIE95Ci0JCQkJUHJvZmVzc29yaW50aWUgNQotCQkJCUtlbXBlbGUgT3VsdSA5MDQ0MAotCQkJCUZJTkxBTkQKLQotMDAtMjItRDEgICAoaGV4KQkJQWxicmVjaHQgSnVuZyBHbWJIICYgQ28uIEtHCi0wMDIyRDEgICAgIChiYXNlIDE2KQkJQWxicmVjaHQgSnVuZyBHbWJIICYgQ28uIEtHCi0JCQkJVm9sbWVzdHJhw4PFuGUgMQotCQkJCVNjaGFsa3Ntw4PCvGhsZSBOUlcgNTg1NzkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUQyICAgKGhleCkJCUFsbCBFYXJ0aCBDb23DqXJjaW8gZGUgRWxldHLDtG5pY29zIExUREEuCi0wMDIyRDIgICAgIChiYXNlIDE2KQkJQWxsIEVhcnRoIENvbcOpcmNpbyBkZSBFbGV0csO0bmljb3MgTFREQS4KLQkJCQlSdWEgQmVudG8gZGUgQXJydWRhIENhbWFyZ28KLQkJCQkyNzAgLSBKZC4gU2FudGFuYQotCQkJCUNhbXBpbmFzIFPDo28gUGF1bG8gMTMwODgtNjUwCi0JCQkJQlJBWklMCi0KLTAwLTIyLUQzICAgKGhleCkJCUh1Yi1UZWNoCi0wMDIyRDMgICAgIChiYXNlIDE2KQkJSHViLVRlY2gKLQkJCQk3NywgSW1hZS1kb25nCi0JCQkJQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04MjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjItRDQgICAoaGV4KQkJQ29tV29ydGggQ28uLCBMdGQuCi0wMDIyRDQgICAgIChiYXNlIDE2KQkJQ29tV29ydGggQ28uLCBMdGQuCi0JCQkJMi0zNS03IE5pc2hpbWFnb21lCi0JCQkJT2h0YS1rdSBUb2t5byAxNDMtMDAyNgotCQkJCUpBUEFOCi0KLTAwLTIyLUQ1ICAgKGhleCkJCUVhdG9uIENvcnAuIEVsZWN0cmljYWwgR3JvdXAgRGF0YSBDZW50ZXIgU29sdXRpb25zIC0gUHVsaXp6aQotMDAyMkQ1ICAgICAoYmFzZSAxNikJCUVhdG9uIENvcnAuIEVsZWN0cmljYWwgR3JvdXAgRGF0YSBDZW50ZXIgU29sdXRpb25zIC0gUHVsaXp6aQotCQkJCTMyMDAgUy4gU3VzYW4gU3QuCi0JCQkJU2FudGEgQW5hIENBIDkyNzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1ENiAgIChoZXgpCQlDeXBhayBBQgotMDAyMkQ2ICAgICAoYmFzZSAxNikJCUN5cGFrIEFCCi0JCQkJUC5PLiBCT1ggMjMzMgotCQkJCUZ1bmNrZW5zIEdyw6RuZCAxCi0JCQkJU3RvY2tob2xtICAxMDMgMTgKLQkJCQlTV0VERU4KLQotMDAtMjItRDcgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDIyRDcgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjItRDggICAoaGV4KQkJU2hlbnpoZW4gR1NUIFNlY3VyaXR5IGFuZCBTYWZldHkgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDIyRDggICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gR1NUIFNlY3VyaXR5IGFuZCBTYWZldHkgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJUm9vbSA1MDIsQnVpbGRpbmcgNiBvZiBLdXBhaSBJbmZvbWF0aW9uIEhhcmJvdXIsCi0JCQkJTm8uMiBNZW5neGkgUm9hZCwgSE5USUEoTm9ydGggYXJlYSksTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0yMi1EOSAgIChoZXgpCQlGb3J0ZXggSW5kdXN0cmlhbCBMdGQuCi0wMDIyRDkgICAgIChiYXNlIDE2KQkJRm9ydGV4IEluZHVzdHJpYWwgTHRkLgotCQkJCUZsYXQgMTYsIDEyIC9GLixQYWNpZmljIFRyYWRlIENlbnRyZQotCQkJCTIgS2FpIEhpbmcgUm9hZCxLb3dsb29uIEJheSwKLQkJCQlLb3dsb29uIEhvbmcgS29uZyA4NTIKLQkJCQlDSElOQQotCi0wMC0yMi1EQSAgIChoZXgpCQlBTkFURUssIExMQwotMDAyMkRBICAgICAoYmFzZSAxNikJCUFOQVRFSywgTExDCi0JCQkJMzIxOSBFYXN0IENhbWVsYmFjayBSb2FkCi0JCQkJU3VpdGUgNTAyCi0JCQkJUGhvZW5peCBBWiA4NTAxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItREIgICAoaGV4KQkJVHJhbnNsb2dpYyBDb3Jwb3JhdGlvbgotMDAyMkRCICAgICAoYmFzZSAxNikJCVRyYW5zbG9naWMgQ29ycG9yYXRpb24KLQkJCQkxMDgyNSBFLiA0N3RoIEF2ZW51ZQotCQkJCURlbnZlciBDb2xvcmFkbyA4MDIzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItREMgICAoaGV4KQkJVmlnaWwgSGVhbHRoIFNvbHV0aW9ucyBJbmMuCi0wMDIyREMgICAgIChiYXNlIDE2KQkJVmlnaWwgSGVhbHRoIFNvbHV0aW9ucyBJbmMuCi0JCQkJMjEwMi00NDY0IE1hcmtoYW0gU3QKLQkJCQlWaWN0b3JpYSBCQyBWOFogN1g4Ci0JCQkJQ0FOQURBCi0KLTAwLTIyLUREICAgKGhleCkJCVByb3RlY3RhIEVsZWN0cm9uaWNzIEx0ZAotMDAyMkREICAgICAoYmFzZSAxNikJCVByb3RlY3RhIEVsZWN0cm9uaWNzIEx0ZAotCQkJCUtlc21hcmsgc3RyIDcvQQotCQkJCUJ1ZGFwZXN0IEh1bmdhcnkgMTE1OAotCQkJCUhVTkdBUlkKLQotMDAtMjItREUgICAoaGV4KQkJT1BQTyBEaWdpdGFsLCBJbmMuCi0wMDIyREUgICAgIChiYXNlIDE2KQkJT1BQTyBEaWdpdGFsLCBJbmMuCi0JCQkJMjYyOUIgVGVybWluYWwgQmx2ZAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLURGICAgKGhleCkJCVRBTVVaIE1vbml0b3JzCi0wMDIyREYgICAgIChiYXNlIDE2KQkJVEFNVVogTW9uaXRvcnMKLQkJCQlUaWVkZW5rYW1wIDE2Ci0JCQkJSGVuc3RlZHQtVWx6YnVyZyBTSCAyNDU1OAotCQkJCUdFUk1BTlkKLQotMDAtMjItRTAgICAoaGV4KQkJQXRsYW50aWMgU29mdHdhcmUgVGVjaG5vbG9naWVzIFMuci5MLgotMDAyMkUwICAgICAoYmFzZSAxNikJCUF0bGFudGljIFNvZnR3YXJlIFRlY2hub2xvZ2llcyBTLnIuTC4KLQkJCQlWaWEgTWFydGlubyBCYXNzaSwgOQotCQkJCU1pbGFubyAgMjAxNDgKLQkJCQlJVEFMWQotCi0wMC0yMi1FMSAgIChoZXgpCQlaT1JUIExhYnMsIExMQy4KLTAwMjJFMSAgICAgKGJhc2UgMTYpCQlaT1JUIExhYnMsIExMQy4KLQkJCQk0NEggRG92ZXIgUG9pbnQgUm9hZAotCQkJCURvdmVyIE5IIDAzODIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1FMiAgIChoZXgpCQlXQUJURUMgVHJhbnNpdCBEaXZpc2lvbgotMDAyMkUyICAgICAoYmFzZSAxNikJCVdBQlRFQyBUcmFuc2l0IERpdmlzaW9uCi0JCQkJMTMwIFJpZGdldmlldyBDaXJjbGUKLQkJCQlEdW5jYW4gU0MgMjkzMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUUzICAgKGhleCkJCUFtZXJpZ29uCi0wMDIyRTMgICAgIChiYXNlIDE2KQkJQW1lcmlnb24KLQkJCQkyMTY4MCBIYWdnZXJ0eSBSb2FkCi0JCQkJU3VpdGUgMTAxCi0JCQkJTm9ydGh2aWxsZSBNaWNoaWdhbiA0ODE2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjItRTQgICAoaGV4KQkJQVBBU1MgVEVDSE5PTE9HWSBDTy4sIExURC4KLTAwMjJFNCAgICAgKGJhc2UgMTYpCQlBUEFTUyBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTJGLCBOby4gMjY3LCBTZWMuIDMsIENoZW5nZGUgUmQuLAotCQkJCURhdG9uZyBEaXN0cmljdAotCQkJCVRFSVBFSSAgMTEzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi1FNSAgIChoZXgpCQlGaXNoZXItUm9zZW1vdW50IFN5c3RlbXMgSW5jLgotMDAyMkU1ICAgICAoYmFzZSAxNikJCUZpc2hlci1Sb3NlbW91bnQgU3lzdGVtcyBJbmMuCi0JCQkJMTIzMDEgUmVzZWFyY2ggQmx2ZAotCQkJCUJ1aWxkaW5nIDMKLQkJCQlBdXN0aW4gVGV4YXMgNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUU2ICAgKGhleCkJCUludGVsbGlnZW50IERhdGEKLTAwMjJFNiAgICAgKGJhc2UgMTYpCQlJbnRlbGxpZ2VudCBEYXRhCi0JCQkJRWRmLiBJbnZlcmlubm92YSDDouKCrOKAnCBBdmRhLiBQdW50byBNb2JpLCA0LiBQYXJxdWUgQ2llbnTDg8KtZmljbyBUZWNub2zDg8KzZ2ljbwotCQkJCVRFQ05PQUxDQUzDg8KBLiBDcnRhLiBOYWNpb25hbCBJSSBNYWRyaWQtQmFyY2Vsb25hIEttLiAzMSw2MDAKLQkJCQlBbGNhbMODwqEgZGUgSGVuYXJlcyBNYWRyaWQgMjg4MDUKLQkJCQlTUEFJTgotCi0wMC0yMi1FNyAgIChoZXgpCQlXUFMgUGFya2luZyBTeXN0ZW1zCi0wMDIyRTcgICAgIChiYXNlIDE2KQkJV1BTIFBhcmtpbmcgU3lzdGVtcwotCQkJCUhvZXZlbndlZyAxMQotCQkJCUVpbmRob3ZlbiBOb29yZC1CcmFiYW50IDU2NTIgQVcKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMi1FOCAgIChoZXgpCQlBcHBsaXRpb24gQ28uLCBMdGQuCi0wMDIyRTggICAgIChiYXNlIDE2KQkJQXBwbGl0aW9uIENvLiwgTHRkLgotCQkJCTUwOS0xLCBCdW5kYW5nIFRlY2hubyBQYXJrIEQtZG9uZywKLQkJCQkxNTEgWWF0YXAtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nTmFtIEt5dW5nZ2ktZG8gNDYzLTc2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMi1FOSAgIChoZXgpCQlQcm9WaXNpb24gQ29tbXVuaWNhdGlvbnMKLTAwMjJFOSAgICAgKGJhc2UgMTYpCQlQcm9WaXNpb24gQ29tbXVuaWNhdGlvbnMKLQkJCQkxIFBvcnRsYW5kIFNxdWFyZQotCQkJCUJyaXN0b2wgIEJTMiA4UlIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMi1FQSAgIChoZXgpCQlSdXN0ZWxjb20gSW5jLgotMDAyMkVBICAgICAoYmFzZSAxNikJCVJ1c3RlbGNvbSBJbmMuCi0JCQkJR2FyYWduaXkgcHJvZXpkLCAxCi0JCQkJU3QuLVBldGVyc2J1cmcgIDE5MjI4OAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yMi1FQiAgIChoZXgpCQlEYXRhIFJlc3BvbnMgQS9TCi0wMDIyRUIgICAgIChiYXNlIDE2KQkJRGF0YSBSZXNwb25zIEEvUwotCQkJCUVsbGVrw6ZyIDYKLQkJCQlIZXJsZXYgIDI3MzAKLQkJCQlERU5NQVJLCi0KLTAwLTIyLUVDICAgKGhleCkJCUlERUFMQlQgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDAyMkVDICAgICAoYmFzZSAxNikJCUlERUFMQlQgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCTZGLiwgTk8uOCwgTEFORSAzNDUsIFlBTkdHVUFORyBTVC4sIE5FSUhVIERJU1RSSUNUCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIyLUVEICAgKGhleCkJCVRTSSBQb3dlciBDb3Jwb3JhdGlvbgotMDAyMkVEICAgICAoYmFzZSAxNikJCVRTSSBQb3dlciBDb3Jwb3JhdGlvbgotCQkJCTExMDMgV2VzdCBQaWVyY2UgQXZlbnVlCi0JCQkJQW50aWdvIFdJIDU0NDA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1FRSAgIChoZXgpCQlBbGdvIENvbW11bmljYXRpb24gUHJvZHVjdHMgTHRkCi0wMDIyRUUgICAgIChiYXNlIDE2KQkJQWxnbyBDb21tdW5pY2F0aW9uIFByb2R1Y3RzIEx0ZAotCQkJCTQ1MDAgQmVlZGllIFN0cmVldAotCQkJCUJ1cm5hYnkgQkMgVjVKIDVMMgotCQkJCUNBTkFEQQotCi0wMC0yMi1FRiAgIChoZXgpCQlJYmlzIFRlaywgTExDCi0wMDIyRUYgICAgIChiYXNlIDE2KQkJSWJpcyBUZWssIExMQwotCQkJCTkxMiBQaXR0c2J1cmdoIFJvYWQKLQkJCQlCdXRsZXIgUEEgMTYwMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUYwICAgKGhleCkJCTMgR3JlZW5zIEF2aWF0aW9uIExpbWl0ZWQKLTAwMjJGMCAgICAgKGJhc2UgMTYpCQkzIEdyZWVucyBBdmlhdGlvbiBMaW1pdGVkCi0JCQkJMTAgSGVkaW5naGFtIENsb3NlCi0JCQkJTWFjY2xlc2ZpZWxkICBTSzEwIDNMWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIyLUYxICAgKGhleCkJCVBSSVZBVEUKLTAwMjJGMSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMjItRjIgICAoaGV4KQkJU3VuUG93ZXIgQ29ycAotMDAyMkYyICAgICAoYmFzZSAxNikJCVN1blBvd2VyIENvcnAKLQkJCQkxNDE0IEhhcmJvdXIgV2F5IFNvdXRoCi0JCQkJUmljaG1vbmQgQ0EgOTQ4MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUYzICAgKGhleCkJCVNIQVJQIENPUlBPUkFUSU9OCi0wMDIyRjMgICAgIChiYXNlIDE2KQkJU0hBUlAgQ09SUE9SQVRJT04KLQkJCQkyMi0yMixOYWdhaWtlLWNobywKLQkJCQlBYmVuby1LVSwKLQkJCQlPc2FrYSwgNTQ1LTg1MjIsCi0JCQkJSkFQQU4KLQotMDAtMjItRjQgICAoaGV4KQkJQU1QQUsgVGVjaG5vbG9neSwgSW5jLgotMDAyMkY0ICAgICAoYmFzZSAxNikJCUFNUEFLIFRlY2hub2xvZ3ksIEluYy4KLQkJCQlOby4gOC0xLCBOYW55dWFuIDJuZCBSZC4KLQkJCQlKaG9uZ2xpIFRhb3l1YW4gMzIwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMi1GNSAgIChoZXgpCQlBZHZhbmNlZCBSZWFsdGltZSBUcmFja2luZyBHbWJICi0wMDIyRjUgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgUmVhbHRpbWUgVHJhY2tpbmcgR21iSAotCQkJCUFtIE9lZmVybCA2Ci0JCQkJV2VpbGhlaW0gQmF5ZXJuIEQtODIzNjIKLQkJCQlHRVJNQU5ZCi0KLTAwLTIyLUY2ICAgKGhleCkJCVN5cmFjdXNlIFJlc2VhcmNoIENvcnBvcmF0aW9uCi0wMDIyRjYgICAgIChiYXNlIDE2KQkJU3lyYWN1c2UgUmVzZWFyY2ggQ29ycG9yYXRpb24KLQkJCQk2MjI1IFJ1bm5pbmcgUmlkZ2UgUm9hZAotCQkJCU5vcnRoIFN5cmFjdXNlIE5ZIDEzMjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMi1GNyAgIChoZXgpCQlDb25jZXB0cm9uaWMKLTAwMjJGNyAgICAgKGJhc2UgMTYpCQlDb25jZXB0cm9uaWMKLQkJCQlEYXRhYmFua3dlZyA3Ci0JCQkJQU1FUlNGT09SVCB1dHJlY2h0IDM4MjEgQUwKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMi1GOCAgIChoZXgpCQlQSU1BIEVsZWN0cm9uaWMgU3lzdGVtcyBMdGQuCi0wMDIyRjggICAgIChiYXNlIDE2KQkJUElNQSBFbGVjdHJvbmljIFN5c3RlbXMgTHRkLgotCQkJCTUgSGF0em9yZWYgU3QuCi0JCQkJSG9sb24gIDU4ODU2Ci0JCQkJSVNSQUVMCi0KLTAwLTIyLUY5ICAgKGhleCkJCVBvbGxpbiBFbGVjdHJvbmljIEdtYkgKLTAwMjJGOSAgICAgKGJhc2UgMTYpCQlQb2xsaW4gRWxlY3Ryb25pYyBHbWJICi0JCQkJTWF4LVBvbGxpbi1TdHIuIDEKLQkJCQlQZm9lcnJpbmcgIDg1MTA0Ci0JCQkJR0VSTUFOWQotCi0wMC0yMi1GQSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjJGQSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTIyLUZCICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyMkZCICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjItRkMgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjJGQyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjItRkQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjJGRCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjItRkUgICAoaGV4KQkJTWljcm9wcm9jZXNzb3IgRGVzaWducyBJbmMKLTAwMjJGRSAgICAgKGJhc2UgMTYpCQlNaWNyb3Byb2Nlc3NvciBEZXNpZ25zIEluYwotCQkJCTY1IExvbmdtZWFkb3cgRHJpdmUKLQkJCQlQTyBCb3ggMTYwCi0JCQkJU2hlbGJ1cm5lIFZlcm1vbnQgMDU0ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIyLUZGICAgKGhleCkJCU5JVklTIExMQwotMDAyMkZGICAgICAoYmFzZSAxNikJCU5JVklTIExMQwotCQkJCTEwMDAgQ2lyY2xlIDc1Ci0JCQkJU3VpdGUgMzAwCi0JCQkJQXRsYW50YSBHQSAzMDMzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMDAgICAoaGV4KQkJQ2F5ZWUgQ29tcHV0ZXIgTHRkLgotMDAyMzAwICAgICAoYmFzZSAxNikJCUNheWVlIENvbXB1dGVyIEx0ZC4KLQkJCQlVbml0cyAxMDAyLTEwMDMsIDEwL0YsIEpvaW4tSW4gSGFuZyBTaW5nIENlbnRyZQotCQkJCTcxLTc1IENvbnRhaW5lciBQb3J0IFJvYWQKLQkJCQlLd2FpIENodW5nIE4uVCAKLQkJCQlIT05HIEtPTkcKLQotMDAtMjMtMDEgICAoaGV4KQkJV2l0cm9uIFRlY2hub2xvZ3kgTGltaXRlZAotMDAyMzAxICAgICAoYmFzZSAxNikJCVdpdHJvbiBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQk2L0YsIFhpbiBSdWkgQnVpbGRpbmcsIDMyIFRhbyBIdWEgUm9hZCwgRnV0aWFuIEZyZWUgVHJhZGUgWm9uZSwKLQkJCQlTaGVuemhlbiA4NgotCQkJCUNISU5BCi0KLTAwLTIzLTAyICAgKGhleCkJCUNvYmFsdCBEaWdpdGFsLCBJbmMuCi0wMDIzMDIgICAgIChiYXNlIDE2KQkJQ29iYWx0IERpZ2l0YWwsIEluYy4KLQkJCQkyNDA2IEVhc3QgVW5pdmVyc2l0eSBBdmVudWUKLQkJCQlVcmJhbmEgSUwgNjE4MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTAzICAgKGhleCkJCUxJVEUtT04gSVQgQ29ycG9yYXRpb24KLTAwMjMwMyAgICAgKGJhc2UgMTYpCQlMSVRFLU9OIElUIENvcnBvcmF0aW9uCi0JCQkJMTRGLCBOby4gMzkyLCBSdWV5IEt1YW5nIFJvYWQsIE5laWh1Ci0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtMDQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMzA0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTA1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjMwNSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0wNiAgIChoZXgpCQlBTFBTIEVsZWN0cmljIENvLiwgTHRkCi0wMDIzMDYgICAgIChiYXNlIDE2KQkJQUxQUyBFbGVjdHJpYyBDby4sIEx0ZAotCQkJCTEtMi0xLCBPa2lub3VjaGkKLQkJCQlTb21hIGNpdHkgRnVrdXNoaW1hIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjMtMDcgICAoaGV4KQkJRlVUVVJFIElOTk9WQVRJT04gVEVDSCBDTy4sTFRECi0wMDIzMDcgICAgIChiYXNlIDE2KQkJRlVUVVJFIElOTk9WQVRJT04gVEVDSCBDTy4sTFRECi0JCQkJMzEyIDMtRE9ORywgR1dBTkdNWVVORyBJTkRVU1RSSUFMIENPTVBMRVggMjAxCi0JCQkJSEFBTi1ET05HCi0JCQkJR1dBTkdNWVVORyBHWVVOR0dJIDQyMzA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy0wOCAgIChoZXgpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDIzMDggICAgIChiYXNlIDE2KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLiwgTm8uIDkgLCBQYXJrIEF2ZW51ZSBJSSwKLQkJCQlTY2llbmNlLWJhc2VkIEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1IFRhaXdhbiAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTA5ICAgKGhleCkJCUphbmFtIFRlY2hub2xvZ2llcyBMTEMKLTAwMjMwOSAgICAgKGJhc2UgMTYpCQlKYW5hbSBUZWNobm9sb2dpZXMgTExDCi0JCQkJMTAwIENyb3Nzd2F5cyBQYXJrIFdlc3QKLQkJCQlTdWl0ZSAxMDUKLQkJCQlXb29kYnVyeSBOWSAxMTc5NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMEEgICAoaGV4KQkJQVJCVVJHIEdtYkggJiBDbyBLRwotMDAyMzBBICAgICAoYmFzZSAxNikJCUFSQlVSRyBHbWJIICYgQ28gS0cKLQkJCQlBcnRodXIgSGVobCBTdHJhc3NlCi0JCQkJTG9zc2J1cmcgIEQtNzIyOTAKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTBCICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIzMEIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0wQyAgIChoZXgpCQlDTE9WRVIgRUxFQ1RST05JQ1MgQ08uLExURC4KLTAwMjMwQyAgICAgKGJhc2UgMTYpCQlDTE9WRVIgRUxFQ1RST05JQ1MgQ08uLExURC4KLQkJCQlBS0VOTyAzMDYtMQotCQkJCU9CQVRBIENoeW91Ci0JCQkJSVNFIENpdHkgTUlFIFByZWZlY3R1cmUgNTE5LTA1MDEKLQkJCQlKQVBBTgotCi0wMC0yMy0wRCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMjMwRCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRleGFzIDc1MDgyLTQzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTBFICAgKGhleCkJCUdvcmJhIEFHCi0wMDIzMEUgICAgIChiYXNlIDE2KQkJR29yYmEgQUcKLQkJCQlTYW5kYWNrZXJzdHJhc3NlCi0JCQkJT2JlcmLDvHJlbiBTRyBDSCAtIDkyNDUKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0yMy0wRiAgIChoZXgpCQlIaXJzY2ggRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLTAwMjMwRiAgICAgKGJhc2UgMTYpCQlIaXJzY2ggRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLQkJCQkxOTAwIENhcm5lZ2llLCBCbGRnIEIKLQkJCQlTYW50YSBBbmEgQ0EgOTI3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTEwICAgKGhleCkJCUxOQyBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyMzEwICAgICAoYmFzZSAxNikJCUxOQyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTE5RiwgTm8uIDc4LTIsIFNlYy4gMywgVGFpY2h1bmcgS2FuZyBSZC4KLQkJCQlUYWljaHVuZyAgNDA3NjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTExICAgKGhleCkJCUdsb3Njb20gQ28uLCBMdGQuCi0wMDIzMTEgICAgIChiYXNlIDE2KQkJR2xvc2NvbSBDby4sIEx0ZC4KLQkJCQkjNTA3IENoYW5naHl1biBCbGRnLgotCQkJCTk2MC0xIEhvZ3llLWRvbmcKLQkJCQlBbnlhbmcgQ2l0eSBLeXVuZ2dvLWRvIDQzMS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtMTIgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyMzEyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTEzICAgKGhleCkJCVFvb2wgVGVjaG5vbG9naWVzIEx0ZC4KLTAwMjMxMyAgICAgKGJhc2UgMTYpCQlRb29sIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJR290YW5kYSBOby4zIEhhbmF0YW5pIEJsZGcgM0YsCi0JCQkJNS0yOC05LEhpZ2FzaGktZ290YW5kYQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTIzLTE0ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyMzE0ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjMtMTUgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDIzMTUgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yMy0xNiAgIChoZXgpCQlLSVNBTiBFTEVDVFJPTklDUyBDTwotMDAyMzE2ICAgICAoYmFzZSAxNikJCUtJU0FOIEVMRUNUUk9OSUNTIENPCi0JCQkJMzE3LTE1Ci0JCQkJU1VORyBTVSAyR0EgM0RPTkcKLQkJCQlTRU9VTkctRE9ORyBHVSBTRU9VTCAxMzMtMTIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTE3ICAgKGhleCkJCUxhc2VyY3JhZnQgSW5jCi0wMDIzMTcgICAgIChiYXNlIDE2KQkJTGFzZXJjcmFmdCBJbmMKLQkJCQkxNDUwIE9ha2Jyb29rIERyaXZlCi0JCQkJU3VpdGUgOTAwCi0JCQkJTm9yY3Jvc3MgR0EgMzAwOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTE4ICAgKGhleCkJCVRvc2hpYmEKLTAwMjMxOCAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LFN1ZWhpcm8tQ2hvCi0JCQkJT21lIFRva3lvIDE5ODg3MTAKLQkJCQlKQVBBTgotCi0wMC0yMy0xOSAgIChoZXgpCQlTaWVsb3ggTExDCi0wMDIzMTkgICAgIChiYXNlIDE2KQkJU2llbG94IExMQwotCQkJCTE3MCBFYXN0IE5pbnRoIEF2ZS4KLQkJCQlSdW5uZW1lZGUgTkogMDgwNzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTFBICAgKGhleCkJCUlURiBDby4sIEx0ZC4KLTAwMjMxQSAgICAgKGJhc2UgMTYpCQlJVEYgQ28uLCBMdGQuCi0JCQkJMi0yLTExIE5pc2hpa2ktY2hvCi0JCQkJVGFjaGlrYXdhLXNoaSBUb2t5byAxOTAtMDAyMgotCQkJCUpBUEFOCi0KLTAwLTIzLTFCICAgKGhleCkJCURhbmFoZXIgTW90aW9uIC0gS29sbG1vcmdlbgotMDAyMzFCICAgICAoYmFzZSAxNikJCURhbmFoZXIgTW90aW9uIC0gS29sbG1vcmdlbgotCQkJCTIwMSBXLiBSb2NrIFJvYWQKLQkJCQlSYWRmb3JkIFZBIDI0MTQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0xQyAgIChoZXgpCQlGb3VyaWVyIFN5c3RlbXMgTHRkLgotMDAyMzFDICAgICAoYmFzZSAxNikJCUZvdXJpZXIgU3lzdGVtcyBMdGQuCi0JCQkJMTYgSGFtZWxhY2hhIFN0Ci0JCQkJUm9zaCBIYWF5aW4gIDQ4MDkxCi0JCQkJSVNSQUVMCi0KLTAwLTIzLTFEICAgKGhleCkJCURlbHRhY29tIEVsZWN0cm9uaWNzIEx0ZAotMDAyMzFEICAgICAoYmFzZSAxNikJCURlbHRhY29tIEVsZWN0cm9uaWNzIEx0ZAotCQkJCTJGLFpJVCw3a20gVHphcmlncmFkc2tvIFNob3NlCi0JCQkJU29maWEgU29maWEtZ3JhZCAxNzg0Ci0JCQkJQlVMR0FSSUEKLQotMDAtMjMtMUUgICAoaGV4KQkJQ2V6emVyIE11bHRpbWVkaWEgVGVjaG5vbG9naWVzCi0wMDIzMUUgICAgIChiYXNlIDE2KQkJQ2V6emVyIE11bHRpbWVkaWEgVGVjaG5vbG9naWVzCi0JCQkJUMOpcGluacOocmUgZCdlbnRyZXByaXNlcyBDUkVBVElDCi0JCQkJMTE1IHJ1ZSBDbGF1ZGUgQ2hhcHBlCi0JCQkJUGxvdXphbsOpICAyOTI4MAotCQkJCUZSQU5DRQotCi0wMC0yMy0xRiAgIChoZXgpCQlHdWFuZ2RhIEVsZWN0cm9uaWMgJiBUZWxlY29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLiwgTHRkLgotMDAyMzFGICAgICAoYmFzZSAxNikJCUd1YW5nZGEgRWxlY3Ryb25pYyAmIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi0JCQkJIzggR2FvcGVuZ2RvbmcgUm9hZCwgR2FveGluIERpc3RyaWN0Ci0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLTAwLTIzLTIwICAgKGhleCkJCU5pY2lyYSBOZXR3b3JrcwotMDAyMzIwICAgICAoYmFzZSAxNikJCU5pY2lyYSBOZXR3b3JrcwotCQkJCTM0NjAgVy4gQmF5c2hvcmUgUmQuCi0JCQkJUGFsbyBBbHRvIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0yMSAgIChoZXgpCQlBdml0ZWNoIEludGVybmF0aW9uYWwgQ29ycAotMDAyMzIxICAgICAoYmFzZSAxNikJCUF2aXRlY2ggSW50ZXJuYXRpb25hbCBDb3JwCi0JCQkJMTUzMzMgTkUgOTB0aCBTdHJlZXQKLQkJCQlSZWRtb25kIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0yMiAgIChoZXgpCQlLSVNTIFRla25pY2FsIFNvbHV0aW9ucywgSW5jLgotMDAyMzIyICAgICAoYmFzZSAxNikJCUtJU1MgVGVrbmljYWwgU29sdXRpb25zLCBJbmMuCi0JCQkJMTU4MyBTLiBOYXZham8gV2F5Ci0JCQkJQ2hhbmRsZXIgQXJpem9uYSA4NTI4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMjMgICAoaGV4KQkJWnlsaW4gQVMKLTAwMjMyMyAgICAgKGJhc2UgMTYpCQlaeWxpbiBBUwotCQkJCUF1Z2xlbmRzZGFsZW4gNzgKLQkJCQlTdGF2YW5nZXIgIDQwMTcKLQkJCQlOT1JXQVkKLQotMDAtMjMtMjQgICAoaGV4KQkJRy1QUk8gQ09NUFVURVIKLTAwMjMyNCAgICAgKGJhc2UgMTYpCQlHLVBSTyBDT01QVVRFUgotCQkJCWZpcnN0IGFycmFuZ2UgQywgWWluZ0h1IGluZHVzdHJpYWwgZXN0YXRlCi0JCQkJUWluZ1hpIENvdW50cnkKLQkJCQlEb25nR3VhbiBDaXR5IEd1YW5nRG9uZyBQcm92aW5jZSA1MjM2NDgKLQkJCQlDSElOQQotCi0wMC0yMy0yNSAgIChoZXgpCQlJT0xBTiBIb2xkaW5nCi0wMDIzMjUgICAgIChiYXNlIDE2KQkJSU9MQU4gSG9sZGluZwotCQkJCU1vbiBQbGFpc2lyIDI2Ci0JCQkJRXR0ZW4gTGV1ciAgNDg3OUFOCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjMtMjYgICAoaGV4KQkJRnVqaXRzdSBMaW1pdGVkCi0wMDIzMjYgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBMaW1pdGVkCi0JCQkJTXVzYXNoaS1rb3N1Z2kgVG93ZXIgUGxhY2UgQmxkZy4sCi0JCQkJNDAzLCBLb3N1Z2ktY2hvIDEtY2hvbWUsTmFrYWhhcmEta3UKLQkJCQlLYXdhc2FraSBLYW5hZ2F3YSAyMTEtMDA2MwotCQkJCUpBUEFOCi0KLTAwLTIzLTI3ICAgKGhleCkJCVNob3V5byBFbGVjdHJvbmljcyBDTy4sIExURAotMDAyMzI3ICAgICAoYmFzZSAxNikJCVNob3V5byBFbGVjdHJvbmljcyBDTy4sIExURAotCQkJCTRGLiwgTm8uOCwgTGFuZSAzNDUsIFlhbmcgS3VuZyBTdC4KLQkJCQlUYWlwZWkgIDExNDkxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy0yOCAgIChoZXgpCQlBTENPTiBURUxFQ09NTVVOSUNBVElPTlMgQ08uLCBMVEQuCi0wMDIzMjggICAgIChiYXNlIDE2KQkJQUxDT04gVEVMRUNPTU1VTklDQVRJT05TIENPLiwgTFRELgotCQkJCTJuZCBGTCwgTk8gNDgwLTUsIFNFQy4gNiwgWUVOLVBJTkcgTi4gUkQuLAotCQkJCVNISUgtTElOCi0JCQkJVEFJUEVJIFRBSVdBTiAxMTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTI5ICAgKGhleCkJCUREUmRyaXZlIExMQwotMDAyMzI5ICAgICAoYmFzZSAxNikJCUREUmRyaXZlIExMQwotCQkJCTExMDc2IEVsYXRpIFN0Ci0JCQkJTm9ydGhnbGVubiBDTyA4MDIzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMkEgICAoaGV4KQkJZW9uYXMgSVQtQmVyYXR1bmcgdW5kIC1FbnR3aWNrbHVuZyBHbWJICi0wMDIzMkEgICAgIChiYXNlIDE2KQkJZW9uYXMgSVQtQmVyYXR1bmcgdW5kIC1FbnR3aWNrbHVuZyBHbWJICi0JCQkJR3JlaWZlbmhhZ2VuZXIgU3RyLiA1NAotCQkJCUJlcmxpbiAgMTA0MzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTJCICAgKGhleCkJCUlSRCBBL1MKLTAwMjMyQiAgICAgKGJhc2UgMTYpCQlJUkQgQS9TCi0JCQkJS3VsbGluZ2dhZGUgMzEKLQkJCQlTdmVuZGJvcmcgRnluIDU3MDAKLQkJCQlERU5NQVJLCi0KLTAwLTIzLTJDICAgKGhleCkJCVNlbnRpY2FyZQotMDAyMzJDICAgICAoYmFzZSAxNikJCVNlbnRpY2FyZQotCQkJCTE2MSBXb3JjZXN0ZXIgUmQKLQkJCQlTdWl0ZSAzMDUKLQkJCQlGcmFtaW5naGFtIE1BIDAxNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0yRCAgIChoZXgpCQlTYW5kRm9yY2UKLTAwMjMyRCAgICAgKGJhc2UgMTYpCQlTYW5kRm9yY2UKLQkJCQkxMjk1MCBTYXJhdG9nYSBBdmUuCi0JCQkJU2FyYXRvZ2EgQ2FsaWZvcm5pYSA5NTA3MC00NjU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0yRSAgIChoZXgpCQlLZWRhaCBFbGVjdHJvbmljcyBFbmdpbmVlcmluZywgTExDCi0wMDIzMkUgICAgIChiYXNlIDE2KQkJS2VkYWggRWxlY3Ryb25pY3MgRW5naW5lZXJpbmcsIExMQwotCQkJCVplbGVub2dyYWQsIDQ0NQotCQkJCU1vc2NvdyAgMTI0NDk4Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTIzLTJGICAgKGhleCkJCUFkdmFuY2VkIENhcmQgU3lzdGVtcyBMdGQuCi0wMDIzMkYgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgQ2FyZCBTeXN0ZW1zIEx0ZC4KLQkJCQlVbml0IDIwMTAtMTMsIENoZXZhbGllciBDb21tZXJjaWFsIENlbnRyZSwKLQkJCQk4IFdhbmcgSG9pIFJvYWQsCi0JCQkJS293bG9vbiBCYXksIFNBUiAKLQkJCQlIT05HIEtPTkcKLQotMDAtMjMtMzAgICAoaGV4KQkJRElaSVBJQSwgSU5DLgotMDAyMzMwICAgICAoYmFzZSAxNikJCURJWklQSUEsIElOQy4KLQkJCQkxNXRoIEZsb29yLCBFYXN0IFdpbmcsIElUIFZlbnR1cmUgVG93ZXIKLQkJCQk3OCBHYXJhay1kb25nLCBTb25ncGEtR3UsCi0JCQkJU2VvdWwgIDEzODE2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy0zMSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjMzMSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyBLWU9UTyA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTIzLTMyICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjMzMiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy0zMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzMzMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtMzQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMzM0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTM1ICAgKGhleCkJCUxpbmtmbGV4IENvLixMdGQKLTAwMjMzNSAgICAgKGJhc2UgMTYpCQlMaW5rZmxleCBDby4sTHRkCi0JCQkJNUYuIE1pbiBZb3VuZyBCbGRnLiAxNzUtMgotCQkJCU5vbmh5ZW9uLURvbmcsIEdhbmduYW0tR3UKLQkJCQlTZW91bCAgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy0zNiAgIChoZXgpCQlNRVRFTCBzLnIuby4KLTAwMjMzNiAgICAgKGJhc2UgMTYpCQlNRVRFTCBzLnIuby4KLQkJCQlWZWxrYSBKZXNlbmljZSAxMjUKLQkJCQlWZWxrYSBKZXNlbmljZSBOYWNob2QgNTUyMjQKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0yMy0zNyAgIChoZXgpCQlHbG9iYWwgU3RhciBTb2x1dGlvbnMgVUxDCi0wMDIzMzcgICAgIChiYXNlIDE2KQkJR2xvYmFsIFN0YXIgU29sdXRpb25zIFVMQwotCQkJCTQ2MDAgSmFjb21icyBSb2FkCi0JCQkJUmljaG1vbmQgQkMgVjZWIDNCMQotCQkJCUNBTkFEQQotCi0wMC0yMy0zOCAgIChoZXgpCQlPSi1FbGVjdHJvbmljcyBBL1MKLTAwMjMzOCAgICAgKGJhc2UgMTYpCQlPSi1FbGVjdHJvbmljcyBBL1MKLQkJCQlTdGVuYWdlciAxM0IKLQkJCQlTw7huZGVyYm9yZyAgNjQwMAotCQkJCURFTk1BUksKLQotMDAtMjMtMzkgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMDAyMzM5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtM0EgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wMDIzM0EgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTNCICAgKGhleCkJCUMtTWF0aWMgU3lzdGVtcyBMdGQKLTAwMjMzQiAgICAgKGJhc2UgMTYpCQlDLU1hdGljIFN5c3RlbXMgTHRkCi0JCQkJV2FycmVuIENvdXJ0Ci0JCQkJUGFyayBSb2FkCi0JCQkJQ3Jvd2Jvcm91Z2ggRWFzdCBTdXNzZXggVE42IDJRWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIzLTNDICAgKGhleCkJCUFsZmxleAotMDAyMzNDICAgICAoYmFzZSAxNikJCUFsZmxleAotCQkJCUJsYXV3LXJvb2RsYWFuIDMwMAotCQkJCVpPRVRFUk1FRVIgIDI3MTggU0sKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yMy0zRCAgIChoZXgpCQlOb3Zlcm8gaG9sZGluZyBCLlYuCi0wMDIzM0QgICAgIChiYXNlIDE2KQkJTm92ZXJvIGhvbGRpbmcgQi5WLgotCQkJCVBhcnNldmFsc3RyYXNzZSA3QQotCQkJCUT8c3NlbGRvcmYgIDQwNDY4Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy0zRSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudC1JUEQKLTAwMjMzRSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudC1JUEQKLQkJCQk3MDEgRS4gTWlkZGxlZmllbGQgUmQuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtM0YgICAoaGV4KQkJUHVyZWNob2ljZSBJbmMKLTAwMjMzRiAgICAgKGJhc2UgMTYpCQlQdXJlY2hvaWNlIEluYwotCQkJCTExNDgxIFJ1cHAgRHJpdmUKLQkJCQlCdXJuc3ZpbGxlIE1OIDU1MzM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy00MCAgIChoZXgpCQlNaVggVGVsZW1hdGljcwotMDAyMzQwICAgICAoYmFzZSAxNikJCU1pWCBUZWxlbWF0aWNzCi0JCQkJQmxhYXV3a2xpcCBPZmZpY2UgUGFyayAyCi0JCQkJQ25yIFN0cmFuZCAmIFdlYmVyc3ZhbGxlaSBSZAotCQkJCVN0ZWxsZW5ib3NjaCBXZXN0ZXJuIENhcGUgNzYwMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0yMy00MSAgIChoZXgpCQlTaWVtZW5zIEFHLCBJbmZyYXN0cnVjdHVyZSAmIENpdGllcyBTZWN0b3IsIEJ1aWxkaW5nIFRlY2hub2xvZ2llcyBEaXZpc2lvbgotMDAyMzQxICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQUcsIEluZnJhc3RydWN0dXJlICYgQ2l0aWVzIFNlY3RvciwgQnVpbGRpbmcgVGVjaG5vbG9naWVzIERpdmlzaW9uCi0JCQkJU2llbWVuc2FsbGVlIDg0Ci0JCQkJS2FybHNydWhlIEJhZGVuLVd1ZXJ0dGVtYmVyZyBELTc2MTg3Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy00MiAgIChoZXgpCQlDb2ZmZWUgRXF1aXBtZW50IENvbXBhbnkKLTAwMjM0MiAgICAgKGJhc2UgMTYpCQlDb2ZmZWUgRXF1aXBtZW50IENvbXBhbnkKLQkJCQk0MjE2IDZ0aCBBdmUgTlcKLQkJCQlTZWF0dGxlIFdBIDk4MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy00MyAgIChoZXgpCQlURU0gQUcKLTAwMjM0MyAgICAgKGJhc2UgMTYpCQlURU0gQUcKLQkJCQlUcmlzdHN0cmFzc2UgOAotCQkJCUNodXIgIDcwMDcKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0yMy00NCAgIChoZXgpCQlPYmplY3RpdmUgSW50ZXJmYWNlIFN5c3RlbXMKLTAwMjM0NCAgICAgKGJhc2UgMTYpCQlPYmplY3RpdmUgSW50ZXJmYWNlIFN5c3RlbXMKLQkJCQkxMzg3MyBQYXJrIENlbnRlciBSZAotCQkJCVN1aXRlIDM2MAotCQkJCUhlcm5kb24gVkEgMjAxNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTQ1ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDIzNDUgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTa8OlbmUgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjMtNDYgICAoaGV4KQkJVmVzdGFjCi0wMDIzNDYgICAgIChiYXNlIDE2KQkJVmVzdGFjCi0JCQkJUC5PLiBCb3ggNzM1OAotCQkJCVNocmV3c2J1cnkgTkogMDc3MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTQ3ICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLTAwMjM0NyAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZAotCQkJCVJvc2V2aWxsZSBDYWxpZm9ybmlhIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy00OCAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0wMDIzNDggICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCTE0IFJ1ZSBQYXVsIERhdXRpZXIKLQkJCQlWZWxpenkgIDc4NDU3Ci0JCQkJRlJBTkNFCi0KLTAwLTIzLTQ5ICAgKGhleCkJCUhlbG1ob2x0eiBDZW50cmUgQmVybGluIGZvciBNYXRlcmlhbCBhbmQgRW5lcmd5Ci0wMDIzNDkgICAgIChiYXNlIDE2KQkJSGVsbWhvbHR6IENlbnRyZSBCZXJsaW4gZm9yIE1hdGVyaWFsIGFuZCBFbmVyZ3kKLQkJCQlEZXBhcnRtZW50IEZNRAotCQkJCUdsaWVuaWNrZXIgU3RyYXNzZSAxMDAKLQkJCQlCZXJsaW4gIDE0MTA5Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy00QSAgIChoZXgpCQlQUklWQVRFCi0wMDIzNEEgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTIzLTRCICAgKGhleCkJCUlueXVhbiBUZWNobm9sb2d5IEluYy4KLTAwMjM0QiAgICAgKGJhc2UgMTYpCQlJbnl1YW4gVGVjaG5vbG9neSBJbmMuCi0JCQkJTm8uIDMsIFNpbmd5ZSBTdC4sCi0JCQkJR3VlaXNoYW4gVG93bnNoaXAKLQkJCQlUYW95dWFuIENvdW50eSAgMzMzNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTRDICAgKGhleCkJCUtUQyBBQgotMDAyMzRDICAgICAoYmFzZSAxNikJCUtUQyBBQgotCQkJCUYgTyBQZXRlcnNvbnMgZ2F0YSA2Ci0JCQkJVmFzdHJhIEZyb2x1bmRhIEdvdGhlbmJ1cmcgU0UtNDIxMzEKLQkJCQlTV0VERU4KLQotMDAtMjMtNEQgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMjM0RCAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCTY2LCBDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuIFRhaXdhbiAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTRFICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0wMDIzNEUgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLQkJCQk2NixDaHVuZyBTaGFuIFJkLlR1LWNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuIFRhaXdhbiAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTRGICAgKGhleCkJCUx1bWlub3VzIFBvd2VyIFRlY2hub2xvZ2llcyBQdnQuIEx0ZC4KLTAwMjM0RiAgICAgKGJhc2UgMTYpCQlMdW1pbm91cyBQb3dlciBUZWNobm9sb2dpZXMgUHZ0LiBMdGQuCi0JCQkJQzgtQzksIENvbW11bml0eSBDZW50ZXIsCi0JCQkJQmVoaW5kIEphbmFrIENpbmVtYSwgSmFuYWtwdXJpLAotCQkJCU5ldyBEZWxoaSAgMTEwMDU4Ci0JCQkJSU5ESUEKLQotMDAtMjMtNTAgICAoaGV4KQkJTHluVGVjCi0wMDIzNTAgICAgIChiYXNlIDE2KQkJTHluVGVjCi0JCQkJODQwMSBNZWxyb3NlIERyaXZlCi0JCQkJTGVuZXhhIEtTIDY2MjE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy01MSAgIChoZXgpCQkyV2lyZQotMDAyMzUxICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNTIgICAoaGV4KQkJREFUQVNFTlNPUiBTLnAuQS4KLTAwMjM1MiAgICAgKGJhc2UgMTYpCQlEQVRBU0VOU09SIFMucC5BLgotCQkJCVZpYSBMYXZpbm8sIDI2NQotCQkJCU1vbnRlIFNhbiBQaWV0cm8gKEJPKSAgNDAwNTAKLQkJCQlJVEFMWQotCi0wMC0yMy01MyAgIChoZXgpCQlGIEUgVCBFbGV0dHJvbmljYSBzbmMKLTAwMjM1MyAgICAgKGJhc2UgMTYpCQlGIEUgVCBFbGV0dHJvbmljYSBzbmMKLQkJCQlWaWEgQS5NYW56b25pIDE0L2EKLQkJCQlDUDMwMyBQUFRUIFBvZ2dpYm9uc2kgQ2VudHJvCi0JCQkJUG9nZ2lib25zaSBTaWVuYSA1MzAzNgotCQkJCUlUQUxZCi0KLTAwLTIzLTU0ICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAyMzU0ICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UsCi0JCQkJVGFpcGVpIFRhaXdhbiAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTU1ICAgKGhleCkJCUtpbmNvIEF1dG9tYXRpb24oU2hhbmdoYWkpIEx0ZC4KLTAwMjM1NSAgICAgKGJhc2UgMTYpCQlLaW5jbyBBdXRvbWF0aW9uKFNoYW5naGFpKSBMdGQuCi0JCQkJQmxkZzEsIE5vLjEzODcsIFpoYW5nZG9uZyBSb2FkLAotCQkJCVpoYW5namlhbmcgSGktdGVjaCBQYXJrLCBQdWRvbmcuCi0JCQkJU2hhbmdoYWkgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMDAtMjMtNTYgICAoaGV4KQkJUGFja2V0IEZvcmVuc2ljcyBMTEMKLTAwMjM1NiAgICAgKGJhc2UgMTYpCQlQYWNrZXQgRm9yZW5zaWNzIExMQwotCQkJCTQyMCBTIFNtaXRoIFJkCi0JCQkJVGVtcGUgQVogODUyODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTU3ICAgKGhleCkJCVBpdHJvbm90IFRlY2hub2xvZ2llcyBhbmQgRW5naW5lZXJpbmcgUC5ULkUuIEx0ZC4KLTAwMjM1NyAgICAgKGJhc2UgMTYpCQlQaXRyb25vdCBUZWNobm9sb2dpZXMgYW5kIEVuZ2luZWVyaW5nIFAuVC5FLiBMdGQuCi0JCQkJOCBIYXR1dCBzdAotCQkJCVBhcmRlc2l5YSAgNDI4MTUKLQkJCQlJU1JBRUwKLQotMDAtMjMtNTggICAoaGV4KQkJU1lTVEVMIFNBCi0wMDIzNTggICAgIChiYXNlIDE2KQkJU1lTVEVMIFNBCi0JCQkJWkkgREUgQkVMTEUgQUlSRQotCQkJCUJQIDMxCi0JCQkJQVlUUkUgIDE3NDQwCi0JCQkJRlJBTkNFCi0KLTAwLTIzLTU5ICAgKGhleCkJCUJlbmNobWFyayBFbGVjdHJvbmljcyAoIFRoYWlsYW5kICkgUHVibGljIENvbXBhbnkgTGltaXRlZAotMDAyMzU5ICAgICAoYmFzZSAxNikJCUJlbmNobWFyayBFbGVjdHJvbmljcyAoIFRoYWlsYW5kICkgUHVibGljIENvbXBhbnkgTGltaXRlZAotCQkJCTk0IE1vbyAxLCBIaS1UZWNoIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJQmFubGFuZQotCQkJCUJhbmcgUGEtaW4gQXl1ZGhheWEgMTMxNjAKLQkJCQlUSEFJTEFORAotCi0wMC0yMy01QSAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTHRkLgotMDAyMzVBICAgICAoYmFzZSAxNikJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMdGQuCi0JCQkJTk8gMjUsIFRoZSAzcmQgc3RyZWV0LAotCQkJCUt1YW5TaGFuIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUKLQkJCQlLdWFuU2hhbiBTVVpIT1UgMjE1MzAwCi0JCQkJQ0hJTkEKLQotMDAtMjMtNUIgICAoaGV4KQkJR3VsZnN0cmVhbQotMDAyMzVCICAgICAoYmFzZSAxNikJCUd1bGZzdHJlYW0KLQkJCQkzMiBMdW1tdXMgRHJpdmUKLQkJCQlSREMgTGFiIFItMDgKLQkJCQlTYXZhbm5haCBHQSAzMTQwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNUMgICAoaGV4KQkJQXByaXVzLCBJbmMuCi0wMDIzNUMgICAgIChiYXNlIDE2KQkJQXByaXVzLCBJbmMuCi0JCQkJNDQwIE4uIFdvbGZlIFJkCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy01RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzNUQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNUUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyMzVFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTVGICAgKGhleCkJCVNpbGljb24gTWljcm8gU2Vuc29ycyBHbWJICi0wMDIzNUYgICAgIChiYXNlIDE2KQkJU2lsaWNvbiBNaWNybyBTZW5zb3JzIEdtYkgKLQkJCQlHcmVuenN0cmFzc2UgMjggLyBHZWLDpHVkZSAzMgotCQkJCURyZXNkZW4gU2F4b255IDAxMTA5Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy02MCAgIChoZXgpCQlMb29raXQgVGVjaG5vbG9neSBDby4sIEx0ZAotMDAyMzYwICAgICAoYmFzZSAxNikJCUxvb2tpdCBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJRkwgOCBTZWFzaG9yZSBNYW5zaW9uCi0JCQkJQmFvJ2FuIENCRCBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDAKLQkJCQlDSElOQQotCi0wMC0yMy02MSAgIChoZXgpCQlVbmlnZW4gQ29ycG9yYXRpb24KLTAwMjM2MSAgICAgKGJhc2UgMTYpCQlVbmlnZW4gQ29ycG9yYXRpb24KLQkJCQk0NTM4OCBXYXJtIFNwcmluZ3MgQmx2ZAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTYyICAgKGhleCkJCUdvbGRsaW5lIENvbnRyb2xzCi0wMDIzNjIgICAgIChiYXNlIDE2KQkJR29sZGxpbmUgQ29udHJvbHMKLQkJCQk2MSBXaGl0ZWNhcCBEcgotCQkJCU5vcnRoIEtpbmdzdG93biBSSSAwMjg1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNjMgICAoaGV4KQkJWmh1aGFpIFJheVNoYXJwIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDIzNjMgICAgIChiYXNlIDE2KQkJWmh1aGFpIFJheVNoYXJwIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uMTE5IG9mIEh1YXdlaSBSb2FkLCBRaWFuc2hhbiBTY2llbmNlICYgVGVjaG5vbG9neSBQYXJrLAotCQkJCVpodWhhaSBHdWFuZ2RvbmcgNTE5MDcwCi0JCQkJQ0hJTkEKLQotMDAtMjMtNjQgICAoaGV4KQkJUG93ZXIgSW5zdHJ1bWVudHMgUHRlIEx0ZAotMDAyMzY0ICAgICAoYmFzZSAxNikJCVBvd2VyIEluc3RydW1lbnRzIFB0ZSBMdGQKLQkJCQlCTEsgNDAgVE9IIEdVQU4gUkQgRUFTVCwgIzAxLTYyIEVOVEVSUFJJU0UgSFVCCi0JCQkJNjA4NTgyCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTIzLTY1ICAgKGhleCkJCUVMS0EtRWxla3Ryb25payBHbWJICi0wMDIzNjUgICAgIChiYXNlIDE2KQkJRUxLQS1FbGVrdHJvbmlrIEdtYkgKLQkJCQlUYWxzdHJhc3NlIDEwNAotCQkJCUzDvGRlbnNjaGVpZCBOUlcgNTg1MTUKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTY2ICAgKGhleCkJCUJlaWppbmcgU2lhc3VuIEVsZWN0cm9uaWMgU3lzdGVtIENvLixMdGQuCi0wMDIzNjYgICAgIChiYXNlIDE2KQkJQmVpamluZyBTaWFzdW4gRWxlY3Ryb25pYyBTeXN0ZW0gQ28uLEx0ZC4KLQkJCQlSbS4xMDE4IEh1YXRpYW4gQmxkZywgTm8uNiBCZWkgWGlhb21hY2hhbmcKLQkJCQlIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDM4Ci0JCQkJQ0hJTkEKLQotMDAtMjMtNjcgICAoaGV4KQkJVW5pQ29udHJvbHMgYS5zLgotMDAyMzY3ICAgICAoYmFzZSAxNikJCVVuaUNvbnRyb2xzIGEucy4KLQkJCQlLcmVuaWNrYSAyMjU3Ci0JCQkJUHJhZ3VlIDEwICAxMDAgMDAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wMC0yMy02OCAgIChoZXgpCQlNb3Rvcm9sYQotMDAyMzY4ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhCi0JCQkJMSBNb3Rvcm9sYSBQbGF6YQotCQkJCUhvbHRzdmlsbGUgTlkgMTE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTY5ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMDAyMzY5ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNkEgICAoaGV4KQkJQ2xlYXJBY2Nlc3MsIEluYy4KLTAwMjM2QSAgICAgKGJhc2UgMTYpCQlDbGVhckFjY2VzcywgSW5jLgotCQkJCTEzMDEgTkUgMTQ0dGggU3RyZWV0Ci0JCQkJU3VpdGUgMTE5Ci0JCQkJVmFuY291dmVyIFdBIDk4Njg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy02QiAgIChoZXgpCQlYZW1iZWRkZWQsIEluYy4KLTAwMjM2QiAgICAgKGJhc2UgMTYpCQlYZW1iZWRkZWQsIEluYy4KLQkJCQkxMDUwIEhpZ2hsYW5kIERyCi0JCQkJU3VpdGUgRQotCQkJCUFubiBBcmJvciBNSSA0ODEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNkMgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyMzZDICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTZEICAgKGhleCkJCVJlc01lZCBMdGQKLTAwMjM2RCAgICAgKGJhc2UgMTYpCQlSZXNNZWQgTHRkCi0JCQkJMSwgRWxpemFiZXRoIE1hY2FydGh1ciBEcml2ZQotCQkJCUJlbGxhIFZpc3RhIE5TVyAyMTUzCi0JCQkJQVVTVFJBTElBCi0KLTAwLTIzLTZFICAgKGhleCkJCUJ1cnN0ZXIgR21iSCAmIENvIEtHCi0wMDIzNkUgICAgIChiYXNlIDE2KQkJQnVyc3RlciBHbWJIICYgQ28gS0cKLQkJCQlUYWxzdHJhc3NlIDEtNQotCQkJCUdlcm5zYmFjaCBCYWRlbi1Xw7xydHRlbWJlcmcgNzY1OTMKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLTZGICAgKGhleCkJCURBUSBTeXN0ZW0KLTAwMjM2RiAgICAgKGJhc2UgMTYpCQlEQVEgU3lzdGVtCi0JCQkJNzA5LTEsIEJ1bmRhbmcgVGVjaG5vIFBhcmsgQS1Eb25nLAotCQkJCVlhdGFwLURvbmcsIEJ1bmRhbmctR3UKLQkJCQlTdW5nbmFtLVNpIEt5dW5nZ2ktRG8sIDQ2My03NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtNzAgICAoaGV4KQkJU25lbGwKLTAwMjM3MCAgICAgKGJhc2UgMTYpCQlTbmVsbAotCQkJCUhhcnRtYW4gSG91c2UKLQkJCQlEYW5laGlsbAotCQkJCVJlYWRpbmcgQmVya3MgUkc2IDRQQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIzLTcxICAgKGhleCkJCVNPQU0gU3lzdGVsCi0wMDIzNzEgICAgIChiYXNlIDE2KQkJU09BTSBTeXN0ZWwKLQkJCQkxODItMTMsIERhZXJ1bmcgUG9zdCBUb3dlciBJSSwgMTUwNAotCQkJCVNlb3VsIEd1cm8tZG9uZywgR3Vyby1ndSAxNTItODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTcyICAgKGhleCkJCU1PUkUgU1RBUiBJTkRVU1RSSUFMIEdST1VQIExJTUlURUQKLTAwMjM3MiAgICAgKGJhc2UgMTYpCQlNT1JFIFNUQVIgSU5EVVNUUklBTCBHUk9VUCBMSU1JVEVECi0JCQkJUm0xMjIxLTEyMjUsIEYxMiBTYW5nZGEgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBCdWlsZGluZyAsCi0JCQkJS2VqaSBSb2FkICwgSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTIzLTczICAgKGhleCkJCUdyaWRJcm9uIFN5c3RlbXMsIEluYy4KLTAwMjM3MyAgICAgKGJhc2UgMTYpCQlHcmlkSXJvbiBTeXN0ZW1zLCBJbmMuCi0JCQkJNzI2IFBhbG9tYXIgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy03NCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyMzc0ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtNzUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjM3NSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTc2ICAgKGhleCkJCUhUQyBDb3Jwb3JhdGlvbgotMDAyMzc2ICAgICAoYmFzZSAxNikJCUhUQyBDb3Jwb3JhdGlvbgotCQkJCU5vLjIzIFhpbmdodWEgUm9hZAotCQkJCVRhb3l1YW4gQ2l0eQotCQkJCVRhb3l1YW4gQ291bnR5ICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTc3ICAgKGhleCkJCUlzb3RlayBFbGVjdHJvbmljcyBMdGQKLTAwMjM3NyAgICAgKGJhc2UgMTYpCQlJc290ZWsgRWxlY3Ryb25pY3MgTHRkCi0JCQkJOSBDbGF5dG9uIFdvb2QgQmFuawotCQkJCVdlc3QgUGFyayBSaW5nIFJvYWQKLQkJCQlMZWVkcyAgTFMxNiA2UVoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yMy03OCAgIChoZXgpCQlHTiBOZXRjb20gQS9TCi0wMDIzNzggICAgIChiYXNlIDE2KQkJR04gTmV0Y29tIEEvUwotCQkJCUxhdXRydXBiamVyZyA3Ci0JCQkJUC5PLkJveCA5OQotCQkJCUJhbGxlcnVwICBESyAtIDI3NTAKLQkJCQlERU5NQVJLCi0KLTAwLTIzLTc5ICAgKGhleCkJCVVuaW9uIEJ1c2luZXNzIE1hY2hpbmVzIENvLiBMdGQuCi0wMDIzNzkgICAgIChiYXNlIDE2KQkJVW5pb24gQnVzaW5lc3MgTWFjaGluZXMgQ28uIEx0ZC4KLQkJCQlVbml0IDIsIDIvRiwgQmxvY2sgQSwgSG9uZyBLb25nIEluZHVzdHJpYWwgQ2VudHJlLAotCQkJCTQ4OS00OTEgQ2FzdGxlIFBlYWsgUm9hZCwKLQkJCQlMYWkgQ2hpIEtvayBLb3dsb29uIAotCQkJCUhPTkcgS09ORwotCi0wMC0yMy03QSAgIChoZXgpCQlSSU0KLTAwMjM3QSAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMDAtMjMtN0IgICAoaGV4KQkJV0hESSBMTEMKLTAwMjM3QiAgICAgKGJhc2UgMTYpCQlXSERJIExMQwotCQkJCTIzNTAgTWlzc2lvbiBDb2xsZWdlIEJsdmQuCi0JCQkJU3VpdGUgNTAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTdDICAgKGhleCkJCU5FT1RJT04KLTAwMjM3QyAgICAgKGJhc2UgMTYpCQlORU9USU9OCi0JCQkJWkkgbGVzIFBhbHVkcwotCQkJCTE2NSwgYXZlbnVlIGR1IE1hcmluIEJsYW5jCi0JCQkJQVVCQUdORSAgRi0xMzQwMAotCQkJCUZSQU5DRQotCi0wMC0yMy03RCAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAyMzdEICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMgotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTdFICAgKGhleCkJCUVMU1RFUiBHTUJICi0wMDIzN0UgICAgIChiYXNlIDE2KQkJRUxTVEVSIEdNQkgKLQkJCQlLVUhCUlVFQ0tFTlNUUkFTU0UgMi00Ci0JCQkJSEFNRUxOICAzMTc4NQotCQkJCUdFUk1BTlkKLQotMDAtMjMtN0YgICAoaGV4KQkJUExBTlRST05JQ1MKLTAwMjM3RiAgICAgKGJhc2UgMTYpCQlQTEFOVFJPTklDUwotCQkJCTM0NSBFTkNJTkFMIFNUCi0JCQkJU0FOVEEgQ1JVWiBDQSA5NTA2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtODAgICAoaGV4KQkJTmFub3RlcQotMDAyMzgwICAgICAoYmFzZSAxNikJCU5hbm90ZXEKLQkJCQkgUE8gQm94IDc5OTEKLQkJCQkxIFBpZXRlciBTdHJlZXQsIEhpZ2h2ZWxkIFBhcmsKLQkJCQlDZW50dXJpb24gR2F1dGVuZyAwMDQ2Ci0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTIzLTgxICAgKGhleCkJCUxlbmdkYSBUZWNobm9sb2d5KFhpYW1lbikgQ28uLEx0ZC4KLTAwMjM4MSAgICAgKGJhc2UgMTYpCQlMZW5nZGEgVGVjaG5vbG9neShYaWFtZW4pIENvLixMdGQuCi0JCQkJNS9GLCA0NyBIYWlqaW5nIFNvdXRoIDJuZCBSb2FkLFhpYW1lbiBFeHBvcnQgUHJvY2Vzc2luZyBab25lLCBIYWljYW5nIERpc3RyaWN0LAotCQkJCVhpYW1lbiBGdWppYW4gMzYxMDI2Ci0JCQkJQ0hJTkEKLQotMDAtMjMtODIgICAoaGV4KQkJTGloIFJvbmcgRWxlY3Ryb25pYyBFbnRlcnByaXNlIENvLiwgTHRkLgotMDAyMzgyICAgICAoYmFzZSAxNikJCUxpaCBSb25nIEVsZWN0cm9uaWMgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQlOby4gMiwgTGFuZSAzODcsIEhzaW4gU2h1IFJkLgotCQkJCUhzaW4gQ2h1YW5nIENpdHksIFRhaXBlaSAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTgzICAgKGhleCkJCUluTWFnZSBTeXN0ZW1zIEluYwotMDAyMzgzICAgICAoYmFzZSAxNikJCUluTWFnZSBTeXN0ZW1zIEluYwotCQkJCTMyNTUtMSBTY290dCBCbHZkLCAjMTA0Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTg0ICAgKGhleCkJCUdHSCBFbmdpbmVlcmluZyBzLnIubC4KLTAwMjM4NCAgICAgKGJhc2UgMTYpCQlHR0ggRW5naW5lZXJpbmcgcy5yLmwuCi0JCQkJVmlhIEFndWNjaGkgODQvMgotCQkJCUJvbG9nbmEgIDQwMTMzCi0JCQkJSVRBTFkKLQotMDAtMjMtODUgICAoaGV4KQkJQU5USVBPREUKLTAwMjM4NSAgICAgKGJhc2UgMTYpCQlBTlRJUE9ERQotCQkJCTUgUlVFIERFIERPVUFJCi0JCQkJUEFSSVMgSUxFIERFIEZSQU5DRSA3NTAwOQotCQkJCUZSQU5DRQotCi0wMC0yMy04NiAgIChoZXgpCQlUb3VyICYgQW5kZXJzc29uIEFCCi0wMDIzODYgICAgIChiYXNlIDE2KQkJVG91ciAmIEFuZGVyc3NvbiBBQgotCQkJCUFubmVsdW5kCi0JCQkJTGp1bmcgIDUyNCA4MAotCQkJCVNXRURFTgotCi0wMC0yMy04NyAgIChoZXgpCQlUaGlua0Zsb29kLCBJbmMuCi0wMDIzODcgICAgIChiYXNlIDE2KQkJVGhpbmtGbG9vZCwgSW5jLgotCQkJCTEzOCBDbGFmbGluIFN0Ci0JCQkJQmVsbW9udCBNQSAwMjQ3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtODggICAoaGV4KQkJVi5ULiBUZWxlbWF0aWNhIFMucC5hLgotMDAyMzg4ICAgICAoYmFzZSAxNikJCVYuVC4gVGVsZW1hdGljYSBTLnAuYS4KLQkJCQlWaWEgR29ya3ksIDIxCi0JCQkJU2FuIEdpdWxpYW5vIE1pbGFuZXNlIE1pbGFubyAyMDA5OAotCQkJCUlUQUxZCi0KLTAwLTIzLTg5ICAgKGhleCkJCUhBTkdaSE9VIEgzQyBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDIzODkgICAgIChiYXNlIDE2KQkJSEFOR1pIT1UgSDNDIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlPcmllbnRhbCBFbGVjdHJvbmljcyBCbGRnLiwgIzIsIENodWFuZ3llIFJvYWTCo8KsU2hhbmdkaSBJbmZvcm1hdGlvbiBJbmR1c3RyeSBCYXNlLAotCQkJCUhhaWRpYW4gRGlzdHJpY3QsIEJlaWppbmcsIFAuUi5DaGluYQotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTAwLTIzLThBICAgKGhleCkJCUNpZW5hIENvcnBvcmF0aW9uCi0wMDIzOEEgICAgIChiYXNlIDE2KQkJQ2llbmEgQ29ycG9yYXRpb24KLQkJCQk5MjAgRWxrcmlkZ2UgTGFuZGluZwotCQkJCUxpbnRoaWN1bSBNRCAyMTA5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtOEIgICAoaGV4KQkJUXVhbnRhIENvbXB1dGVyIEluYy4KLTAwMjM4QiAgICAgKGJhc2UgMTYpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotCQkJCU5PLiAyMTEsIFdFTiBIV0EgMlJELixLVUVJIFNIQU4gSFNJQU5HLCBUQU8gWVVBTiBTSElFTiwKLQkJCQlUQUlQRUkgVEFJV0FOIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtOEMgICAoaGV4KQkJUFJJVkFURQotMDAyMzhDICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yMy04RCAgIChoZXgpCQlUZWNobm8gRGVzaWduIENvLiwgTHRkLgotMDAyMzhEICAgICAoYmFzZSAxNikJCVRlY2hubyBEZXNpZ24gQ28uLCBMdGQuCi0JCQkJMzEyLTIKLQkJCQlUb3Jpa28sIE5pc2hpaGFyYS1tdXJhCi0JCQkJQXNvLWd1biBLdW1hbW90by1rZW4gODYxLTI0MDEKLQkJCQlKQVBBTgotCi0wMC0yMy04RSAgIChoZXgpCQlBREIgQnJvYWRiYW5kIEl0YWxpYQotMDAyMzhFICAgICAoYmFzZSAxNikJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi0JCQkJVklBTEUgU0FSQ0EgMjIyCi0JCQkJTUlMQU5PICAyMDEyNgotCQkJCUlUQUxZCi0KLTAwLTIzLThGICAgKGhleCkJCU5JREVDIENPUEFMIENPUlBPUkFUSU9OCi0wMDIzOEYgICAgIChiYXNlIDE2KQkJTklERUMgQ09QQUwgQ09SUE9SQVRJT04KLQkJCQkyLTE4LTEwLFNISU1VUkEKLQkJCQlJVEFCQVNISS1LVSBUT0tZTyAxNzQtODU1MAotCQkJCUpBUEFOCi0KLTAwLTIzLTkwICAgKGhleCkJCUFsZ29sd2FyZSBDb3Jwb3JhdGlvbgotMDAyMzkwICAgICAoYmFzZSAxNikJCUFsZ29sd2FyZSBDb3Jwb3JhdGlvbgotCQkJCTEzRi01LCBOby4gNzcsIFNlYy4gMSwgU2ludGFpIDV0aCBSZC4sCi0JCQkJU2lqaGloIENpdHksCi0JCQkJVGFpcGVpIENvdW50eSBUYWl3YW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy05MSAgIChoZXgpCQlNYXhpYW4KLTAwMjM5MSAgICAgKGJhc2UgMTYpCQlNYXhpYW4KLQkJCQkyMXRoIEZsLiBLSU5TIHRvd2VyLCAyNS0xCi0JCQkJSmVvbmphLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1jaXR5IEd5ZW9uZ2dpLWRvIDQ2My04NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtOTIgICAoaGV4KQkJUHJvdGV1cyBJbmR1c3RyaWVzIEluYy4KLTAwMjM5MiAgICAgKGJhc2UgMTYpCQlQcm90ZXVzIEluZHVzdHJpZXMgSW5jLgotCQkJCTM0MCBQaW9uZWVyIFdheQotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLTkzICAgKGhleCkJCUFKSU5FWFRFSwotMDAyMzkzICAgICAoYmFzZSAxNikJCUFKSU5FWFRFSwotCQkJCTktMywgSG9saW1kb25nLCBEYWxzZW9ndQotCQkJCURhZWd1ICA3MDQtMjQwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTk0ICAgKGhleCkJCVNhbWplb24KLTAwMjM5NCAgICAgKGJhc2UgMTYpCQlTYW1qZW9uCi0JCQkJIzEzMTMtMSBKb2lsLVJpLCBTYW1kb25nLU15ZXVuLFVsanUtR3VuCi0JCQkJVWxzYW4gQ2l0eSBTb3V0aCBLb3JlYSA2ODktOTM0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLTk1ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDIzOTUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy05NiAgIChoZXgpCQlBTkRFUyBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0wMDIzOTYgICAgIChiYXNlIDE2KQkJQU5ERVMgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCTJGLE5vLiAxLCBMaS1Ic2luIEZpcnN0IFJvYWQsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luLUNodSBUYWl3YW4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy05NyAgIChoZXgpCQlXZXN0ZWxsIFRlY2hub2xvZ2llcyBJbmMuCi0wMDIzOTcgICAgIChiYXNlIDE2KQkJV2VzdGVsbCBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTExODUyIFByZXNsZXkgQ3IKLQkJCQlQbGFpbmZpZWxkIElMIDYwNTg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy05OCAgIChoZXgpCQlTa3kgQ29udHJvbAotMDAyMzk4ICAgICAoYmFzZSAxNikJCVNreSBDb250cm9sCi0JCQkJdWwuIFN2b3Jub3N0aSA0MQotCQkJCUJyYXRpc2xhdmEgQkEgODIgMTA3Ci0JCQkJU0xPVkFLSUEKLQotMDAtMjMtOTkgICAoaGV4KQkJVkQgRGl2aXNpb24sIFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uCi0wMDIzOTkgICAgIChiYXNlIDE2KQkJVkQgRGl2aXNpb24sIFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uCi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIHllb25ndG9uZy1ndSwgU3V3b24tY2l0eQotCQkJCUtvcmVhCi0JCQkJU3V3b24gIDQ0My03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtOUEgICAoaGV4KQkJRWFzeURhdGEgU29mdHdhcmUgR21iSAotMDAyMzlBICAgICAoYmFzZSAxNikJCUVhc3lEYXRhIFNvZnR3YXJlIEdtYkgKLQkJCQlTdGVpbmJhY2hlciBTdHJhw4PFuGUgMTQtMjQKLQkJCQlFc2NoYm9ybiAvIFRzLiBIZXNzZW4gRC02NTc2MAotCQkJCUdFUk1BTlkKLQotMDAtMjMtOUIgICAoaGV4KQkJRWxzdGVyIFNvbHV0aW9ucywgTExDCi0wMDIzOUIgICAgIChiYXNlIDE2KQkJRWxzdGVyIFNvbHV0aW9ucywgTExDCi0JCQkJMjA4IFNvdXRoIFJvZ2VycyBMYW5lCi0JCQkJUmFsZWlnaCBOb3J0aCBDYXJvbGluYSAyNzYxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtOUMgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAyMzlDICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy05RCAgIChoZXgpCQlNYXBvd2VyIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0wMDIzOUQgICAgIChiYXNlIDE2KQkJTWFwb3dlciBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCU5vLiA1MCBNaW5xdWFuIFJvYWQKLQkJCQlMdXpodSBTaGlhbmcKLQkJCQlUYW95dWFuIENvdW50eSAgMzM4NDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLTlFICAgKGhleCkJCUppYW5nc3UgTGVtb3RlIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZAotMDAyMzlFICAgICAoYmFzZSAxNikJCUppYW5nc3UgTGVtb3RlIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZAotCQkJCU1lbmdsYW4gSW5kdXN0cmlhbCBQYXJrLFl1c2hhbgotCQkJCUNoYW5nc2h1IEppYW5nc3UgMjE1NTAwCi0JCQkJQ0hJTkEKLQotMDAtMjMtOUYgICAoaGV4KQkJSW5zdGl0dXQgZsO8ciBQcsO8ZnRlY2huaWsKLTAwMjM5RiAgICAgKGJhc2UgMTYpCQlJbnN0aXR1dCBmw7xyIFByw7xmdGVjaG5pawotCQkJCVNjaHVsc3RyLiAzCi0JCQkJVG9kdGVud2VpcyBCYXllcm4gODY0NDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLUEwICAgKGhleCkJCUhhbmEgQ05TIENvLiwgTFRELgotMDAyM0EwICAgICAoYmFzZSAxNikJCUhhbmEgQ05TIENvLiwgTFRELgotCQkJCVRhZWphbmctZG9uZyAxNzIwLTUyIFRhZWphbmctTm9uZ0dvbmctRGFuamkKLQkJCQlXb25qdSBHYW5nd29uLWRvIDIyMC05NjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtQTEgICAoaGV4KQkJVHJlbmQgRWxlY3Ryb25pY3MgTHRkCi0wMDIzQTEgICAgIChiYXNlIDE2KQkJVHJlbmQgRWxlY3Ryb25pY3MgTHRkCi0JCQkJR3V0IE5vLiAzNTAKLQkJCQlWaWxsYWdlIC0gQmhhbGdhb24KLQkJCQlBdXJhbmFnYWJhZCBNYWhhcmFzaHRyYSA0MzEyMTAKLQkJCQlJTkRJQQotCi0wMC0yMy1BMiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyM0EyICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQTMgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjNBMyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUE0ICAgKGhleCkJCU5ldyBDb25jZXB0cyBEZXZlbG9wbWVudCBDb3JwLgotMDAyM0E0ICAgICAoYmFzZSAxNikJCU5ldyBDb25jZXB0cyBEZXZlbG9wbWVudCBDb3JwLgotCQkJCTI2NTAgQnJpZGdlIExhbmUKLQkJCQlXb29kc3RvY2sgSUwgNjAwOTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUE1ICAgKGhleCkJCVNhZ2VUViwgTExDCi0wMDIzQTUgICAgIChiYXNlIDE2KQkJU2FnZVRWLCBMTEMKLQkJCQk5ODAwIFMuIExhIENpZW5lZ2EgQmx2ZAotCQkJCVN1aXRlIDkwNQotCQkJCUluZ2xld29vZCBDQSA5MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQTYgICAoaGV4KQkJRS1Nb24KLTAwMjNBNiAgICAgKGJhc2UgMTYpCQlFLU1vbgotCQkJCU9uZSBPeGZvcmQgVmFsbGV5LCBTdWl0ZSA0MTgKLQkJCQlMYW5naG9ybmUgUEEgMTkwNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUE3ICAgKGhleCkJCVJlZHBpbmUgU2lnbmFscywgSW5jLgotMDAyM0E3ICAgICAoYmFzZSAxNikJCVJlZHBpbmUgU2lnbmFscywgSW5jLgotCQkJCVBsb3QgODcsIFNhZ2FyIFNvY2lldHkKLQkJCQlCYW5qYXJhIEhpbGxzIFJvYWQgTm8uIDIKLQkJCQlIeWRlcmFiYWQgQVAgNTAwMDM0Ci0JCQkJSU5ESUEKLQotMDAtMjMtQTggICAoaGV4KQkJTWFyc2hhbGwgRWxlY3Ryb25pY3MKLTAwMjNBOCAgICAgKGJhc2UgMTYpCQlNYXJzaGFsbCBFbGVjdHJvbmljcwotCQkJCTE5MTAgRSBNYXBsZSBBdmUKLQkJCQlFbCBTZWd1bmRvIENhIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1BOSAgIChoZXgpCQlCZWlqaW5nIERldGlhbnF1YW4gRWxlY3Ryb21lY2hhbmljYWwgRXF1aXBtZW50IENvLiwgTHRkCi0wMDIzQTkgICAgIChiYXNlIDE2KQkJQmVpamluZyBEZXRpYW5xdWFuIEVsZWN0cm9tZWNoYW5pY2FsIEVxdWlwbWVudCBDby4sIEx0ZAotCQkJCU5vLiAyIENoYXBlbmcgUm9hZCwgSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwOTEKLQkJCQlDSElOQQotCi0wMC0yMy1BQSAgIChoZXgpCQlIRlIsIEluYy4KLTAwMjNBQSAgICAgKGJhc2UgMTYpCQlIRlIsIEluYy4KLQkJCQk1RiwgSGFuYSBFWiBUb3dlcgotCQkJCTE1OCwgR3VtaS1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJU3VuZ25hbS1zaSBLeXVuZ2dpLWRvIDQ2My04NzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtQUIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyM0FCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUFDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjNBQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1BRCAgIChoZXgpCQlYbWFyayBDb3Jwb3JhdGlvbgotMDAyM0FEICAgICAoYmFzZSAxNikJCVhtYXJrIENvcnBvcmF0aW9uCi0JCQkJMzA5IExlZ2dldCAgRHJpdmUKLQkJCQlPdHRhd2EgT250YXJpbyBLMksgM0EzCi0JCQkJQ0FOQURBCi0KLTAwLTIzLUFFICAgKGhleCkJCURlbGwgSW5jLgotMDAyM0FFICAgICAoYmFzZSAxNikJCURlbGwgSW5jLgotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtQUYgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjNBRiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVLlMuIEhpZ2h3YXkgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSWxsaW5vaXMgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUIwICAgKGhleCkJCUNPTVhJT04gVGVjaG5vbG9neSBJbmMuCi0wMDIzQjAgICAgIChiYXNlIDE2KQkJQ09NWElPTiBUZWNobm9sb2d5IEluYy4KLQkJCQkxMUYsIE5vLiAxMTEsIFNlYyAyLCBLZWVsdW5nIFJkLiwgU2lueWkgRGlzdHJpYwotCQkJCVRhaXBlaSBUYWl3YW4gMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy1CMSAgIChoZXgpCQlMb25nY2hlZXIgVGVjaG5vbG9neSAoU2luZ2Fwb3JlKSBQdGUgTHRkCi0wMDIzQjEgICAgIChiYXNlIDE2KQkJTG9uZ2NoZWVyIFRlY2hub2xvZ3kgKFNpbmdhcG9yZSkgUHRlIEx0ZAotCQkJCTQzIEtha2kgQnVraXQgVmlldywgICMwNC0wMSAgLAotCQkJCUtha2kgQnVraXQgVGVjaCBQYXJrIElJLAotCQkJCTQxNTk3MAotCQkJCVNJTkdBUE9SRQotCi0wMC0yMy1CMiAgIChoZXgpCQlJbnRlbGxpZ2VudCBNZWNoYXRyb25pYyBTeXN0ZW1zIEluYwotMDAyM0IyICAgICAoYmFzZSAxNikJCUludGVsbGlnZW50IE1lY2hhdHJvbmljIFN5c3RlbXMgSW5jCi0JCQkJMTYxIFJvZ2VyIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJKIDFCMQotCQkJCUNBTkFEQQotCi0wMC0yMy1CMyAgIChoZXgpCQlMeXluIEFCCi0wMDIzQjMgICAgIChiYXNlIDE2KQkJTHl5biBBQgotCQkJCUlERU9OIFNjaWVuY2UgUGFyawotCQkJCVNjaGVlbGV2w6RnZW4gMTcKLQkJCQlMdW5kICAyMjMgNzAKLQkJCQlTV0VERU4KLQotMDAtMjMtQjQgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjNCNCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gdiAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjMtQjUgICAoaGV4KQkJT1JUQU5BIExURAotMDAyM0I1ICAgICAoYmFzZSAxNikJCU9SVEFOQSBMVEQKLQkJCQlPU1RJTSBLT0NBU0lOQU4gU0FOQVlJIFNJVEVTSQotCQkJCTEzLiBTT0tBSyBOTzozNy0zOSBZLiBNQUhBTExFCi0JCQkJQU5LQVJBICAwNjM3MAotCQkJCVRVUktFWQotCi0wMC0yMy1CNiAgIChoZXgpCQlTRUNVUklURSBDT01NVU5JQ0FUSU9OUyAvIEhPTkVZV0VMTAotMDAyM0I2ICAgICAoYmFzZSAxNikJCVNFQ1VSSVRFIENPTU1VTklDQVRJT05TIC8gSE9ORVlXRUxMCi0JCQkJRk9OVCBERSBMJ09STUUKLQkJCQkxMTk4IEFWIERVIERPQ1RFVVIgRE9OQVQKLQkJCQlNT1VHSU5TIEZSQU5DRSAwNjI1MAotCQkJCUZSQU5DRQotCi0wMC0yMy1CNyAgIChoZXgpCQlRLUxpZ2h0IENvLiwgTHRkLgotMDAyM0I3ICAgICAoYmFzZSAxNikJCVEtTGlnaHQgQ28uLCBMdGQuCi0JCQkJMTc4LTEgV29vZ3llLVJpLCBTYW5nZG9uZy1NeXVuLAotCQkJCUdpbWhhZS1TaSBHeXVuZ3NhbmdOYW0tRG8gNjIxLTgxMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy1COCAgIChoZXgpCQlTaWNodWFuIEppdXpob3UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLixMdGQKLTAwMjNCOCAgICAgKGJhc2UgMTYpCQlTaWNodWFuIEppdXpob3UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOby4yNTkgSml1emhvdSBSb2FkLAotCQkJCU1pYW55YW5nIFNpY2h1YW4gNjIxMDAwCi0JCQkJQ0hJTkEKLQotMDAtMjMtQjkgICAoaGV4KQkJRUFEUyBEZXV0c2NobGFuZCBHbWJICi0wMDIzQjkgICAgIChiYXNlIDE2KQkJRUFEUyBEZXV0c2NobGFuZCBHbWJICi0JCQkJV2lsbHkgTWVzc2Vyc2NobWl0dCBTdHIuCi0JCQkJT3R0b2JydW5uIEJhdmFyaWEgODU1MjEKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLUJBICAgKGhleCkJCUNocm9tYQotMDAyM0JBICAgICAoYmFzZSAxNikJCUNocm9tYQotCQkJCTY4LCBId2EtWWEgMXN0IFJkLiwgSHdhLVlhIFRlY2huaWNhbCBQYXJrLAotCQkJCUt1ZWktU2hhbiBIc2lhbmcsCi0JCQkJVGFveXVhbiBIc2llbiBUYWl3YW4gMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy1CQiAgIChoZXgpCQlTY2htaXR0IEluZHVzdHJpZXMKLTAwMjNCQiAgICAgKGJhc2UgMTYpCQlTY2htaXR0IEluZHVzdHJpZXMKLQkJCQkyNzY1IE5XIE5pY29sYWkgU3QKLQkJCQlQb3J0bGFuZCBPcmVnb24gOTcyMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUJDICAgKGhleCkJCUVRLVNZUyBHbWJICi0wMDIzQkMgICAgIChiYXNlIDE2KQkJRVEtU1lTIEdtYkgKLQkJCQlIaW50ZXIgZGVuIEfDpHJ0ZW4gMTViCi0JCQkJVHJldWVuYnJpZXR6ZW4gT1QgRmVsZGhlaW0gQnJhbmRlbmJ1cmcgMTQ5MjkKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLUJEICAgKGhleCkJCURpZ2l0YWwgQWxseSwgSW5jLgotMDAyM0JEICAgICAoYmFzZSAxNikJCURpZ2l0YWwgQWxseSwgSW5jLgotCQkJCTEyMTggVmFsbGV5IFJpZGdlIERyaXZlCi0JCQkJR3JhaW4gVmFsbGV5IE1PIDY0MDI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1CRSAgIChoZXgpCQlDaXNjbyBTUFZURwotMDAyM0JFICAgICAoYmFzZSAxNikJCUNpc2NvIFNQVlRHCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCUxhd3JlbmNldmlsbGUgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUJGICAgKGhleCkJCU1haW5waW5lLCBJbmMuCi0wMDIzQkYgICAgIChiYXNlIDE2KQkJTWFpbnBpbmUsIEluYy4KLQkJCQlQTyBCb3ggMjQxCi0JCQkJV2lsc29udmlsbGUgT3JlZ29uIDk3MDcwLTAyNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUMwICAgKGhleCkJCUJyb2Fkd2F5IE5ldHdvcmtzCi0wMDIzQzAgICAgIChiYXNlIDE2KQkJQnJvYWR3YXkgTmV0d29ya3MKLQkJCQkxNzU0IFRlY2hub2xvZ3kgRHJpdmUsIFN1aXRlIDIwOAotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUMxICAgKGhleCkJCVNlY3VyaXRhcyBEaXJlY3QgQUIKLTAwMjNDMSAgICAgKGJhc2UgMTYpCQlTZWN1cml0YXMgRGlyZWN0IEFCCi0JCQkJS2FsZW5kZWdhdGFuIDI2Ci0JCQkJTWFsbcO2ICAyMDMyMAotCQkJCVNXRURFTgotCi0wMC0yMy1DMiAgIChoZXgpCQlTQU1TVU5HIEVsZWN0cm9uaWNzLiBDby4gTFRECi0wMDIzQzIgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFbGVjdHJvbmljcy4gQ28uIExURAotCQkJCTE5dGggRmwuLCBLb3JlYSBMaWZlIEJsZGcuIDEzMzgtMTIKLQkJCQlTZW9jaG8gMiBEb25nIFNlb2Noby1ndSBEb21hc3RpYyBTYWxlcyYgTWFya2V0aW5nIERpdmlzaW9uCi0JCQkJU2VvdWwgIDEzNy04NjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjMtQzMgICAoaGV4KQkJTG9nTWVJbiwgSW5jLgotMDAyM0MzICAgICAoYmFzZSAxNikJCUxvZ01lSW4sIEluYy4KLQkJCQk1MDAgVW5pY29ybiBQYXJrIERyaXZlCi0JCQkJV29idXJuIE1hc3NhY2h1c2V0dHMgMDE4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUM0ICAgKGhleCkJCUx1eCBMdW1lbgotMDAyM0M0ICAgICAoYmFzZSAxNikJCUx1eCBMdW1lbgotCQkJCUtlcm5lbmVyZ2llc3RyYWF0IDUzQQotCQkJCVdpbHJpamsgQW50d2VycCAyNjEwCi0JCQkJQkVMR0lVTQotCi0wMC0yMy1DNSAgIChoZXgpCQlSYWRpYXRpb24gU2FmZXR5IGFuZCBDb250cm9sIFNlcnZpY2VzIEluYwotMDAyM0M1ICAgICAoYmFzZSAxNikJCVJhZGlhdGlvbiBTYWZldHkgYW5kIENvbnRyb2wgU2VydmljZXMgSW5jCi0JCQkJOTEgUG9ydHNtb3V0aCBBdmUKLQkJCQlTdHJhdGhhbSBOZXcgSGFtcHNoaXJlIDAzODg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1DNiAgIChoZXgpCQlTTUMgQ29ycG9yYXRpb24KLTAwMjNDNiAgICAgKGJhc2UgMTYpCQlTTUMgQ29ycG9yYXRpb24KLQkJCQk0LTItMiwgS2ludW5vZGFpCi0JCQkJVHN1a3ViYSBNaXJhaS1zaGkgSWJhcmFraS1rZW4gMzAwLTI0OTMKLQkJCQlKQVBBTgotCi0wMC0yMy1DNyAgIChoZXgpCQlBVlN5c3RlbQotMDAyM0M3ICAgICAoYmFzZSAxNikJCUFWU3lzdGVtCi0JCQkJdWwuIEZyaWVkbGVpbmEgNAotCQkJCUtyYWvDs3cgbWHCs29wb2xza2llIDMwLTAwOQotCQkJCVBPTEFORAotCi0wMC0yMy1DOCAgIChoZXgpCQlURUFNLVIKLTAwMjNDOCAgICAgKGJhc2UgMTYpCQlURUFNLVIKLQkJCQlHcmFnZGFuc2tpIHN0ci4xMTEsIEEsIDktTgotCQkJCVN0LiBQZXRlcnNidXJnICAxOTUyNjUKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjMtQzkgICAoaGV4KQkJU2ljaHVhbiBUaWFueWkgSW5mb3JtYXRpb24gU2NpZW5jZSAmIFRlY2hub2xvZ3kgU3RvY2sgQ08uLExURAotMDAyM0M5ICAgICAoYmFzZSAxNikJCVNpY2h1YW4gVGlhbnlpIEluZm9ybWF0aW9uIFNjaWVuY2UgJiBUZWNobm9sb2d5IFN0b2NrIENPLixMVEQKLQkJCQlOby4xLEhvdCBTcHJpbmcgSGlnaHdheSxEYXlpIENvdW50eQotCQkJCUNoZW5nZHUgU2ljaHVhbiA2MTEzMzAKLQkJCQlDSElOQQotCi0wMC0yMy1DQSAgIChoZXgpCQlCZWhpbmQgVGhlIFNldCwgTExDCi0wMDIzQ0EgICAgIChiYXNlIDE2KQkJQmVoaW5kIFRoZSBTZXQsIExMQwotCQkJCTIxODUgS25vbGx3b29kIERyLgotCQkJCUJvdWxkZXIgQ08gODAzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUNCICAgKGhleCkJCVNoZW56aGVuIEZ1bGwtam9pbiBUZWNobm9sb2d5IENvLixMdGQKLTAwMjNDQiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBGdWxsLWpvaW4gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJOS9GLE5vLjEsWGlucnVpIFJvYWQsSG91cnVpICxYaXhpYW5nIFRvd24sIEJhbydhbiBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi0wMC0yMy1DQyAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjNDQyAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yMy1DRCAgIChoZXgpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLTAwMjNDRCAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLQkJCQlTb3V0aCBCdWlsZGluZywgTm8uNSBLZXl1YW4gUm9hZCwgQ2VudHJhbCBab25lLAotCQkJCVNjaWVuY2UgJiBUZWNobm9sb2d5IFBhcmsgTmFuc2hhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi0wMC0yMy1DRSAgIChoZXgpCQlLSVRBIERFTlNISSBDT1JQT1JBVElPTgotMDAyM0NFICAgICAoYmFzZSAxNikJCUtJVEEgREVOU0hJIENPUlBPUkFUSU9OCi0JCQkJMTJGIFRPS1lPLU5JU0hJSUtFQlVLVVJPIEJpbGcuLAotCQkJCTEtNy03LCBOaXNoaS1pa2VidWt1cm8KLQkJCQlUb3NoaW1hLWt1LCBUb2t5byAxNzEtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTIzLUNGICAgKGhleCkJCUNVTU1JTlMtQUxMSVNPTiBDT1JQLgotMDAyM0NGICAgICAoYmFzZSAxNikJCUNVTU1JTlMtQUxMSVNPTiBDT1JQLgotCQkJCTg5MSBGRUVIQU5WSUxMRSBEUklWRQotCQkJCU1ULiBQUk9TUEVDVCBJTCA2MDA1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRDAgICAoaGV4KQkJVW5pbG9jIFVTQSBJbmMuCi0wMDIzRDAgICAgIChiYXNlIDE2KQkJVW5pbG9jIFVTQSBJbmMuCi0JCQkJMzMzMyBNaWNoZWxzb24gRHJpdmUKLQkJCQlTdWl0ZSA2MDAKLQkJCQlJcnZpbmUgQ0EgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUQxICAgKGhleCkJCVRSRwotMDAyM0QxICAgICAoYmFzZSAxNikJCVRSRwotCQkJCVdpc21hIEtvc2dvcm8gMTN0aCBGbG9vcgotCQkJCUpsLiBNSC4gVGhhbXJpbiA1MwotCQkJCUpha2FydGEgUHVzYXQgIDEwMzUwCi0JCQkJSU5ET05FU0lBCi0KLTAwLTIzLUQyICAgKGhleCkJCUluaGFuZCBFbGVjdHJvbmljcywgSW5jLgotMDAyM0QyICAgICAoYmFzZSAxNikJCUluaGFuZCBFbGVjdHJvbmljcywgSW5jLgotCQkJCTMwIFdlc3QgR3VkZSBEcml2ZQotCQkJCVN1aXRlIDU1MAotCQkJCVJvY2t2aWxsZSBNYXJ5bGFuZCAyMDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRDMgICAoaGV4KQkJQWlyTGluayBXaUZpIE5ldHdvcmtpbmcgQ29ycC4KLTAwMjNEMyAgICAgKGJhc2UgMTYpCQlBaXJMaW5rIFdpRmkgTmV0d29ya2luZyBDb3JwLgotCQkJCTE5Ri0xIFJvb20gQSAsIE5vLjk3LCBTZWMgNCwgQ2h1bmcgSHNpbiBSZC4sCi0JCQkJU2FuIENodW5nIENpdHksIFRhaXBlaSBIc2llbiAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTIzLUQ0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wMDIzRDQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUQ1ICAgKGhleCkJCVdBUkVNQSBlbGVjdHJvbmljIEdtYkgKLTAwMjNENSAgICAgKGJhc2UgMTYpCQlXQVJFTUEgZWxlY3Ryb25pYyBHbWJICi0JCQkJRGlsbGJlcmcgMzMKLQkJCQlNYXJrdGhlaWRlbmZlbGQgQmF2YXJpYSA5NzgyOAotCQkJCUdFUk1BTlkKLQotMDAtMjMtRDYgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTFRECi0wMDIzRDYgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTFRECi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUQ3ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTAwMjNENyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUQ4ICAgKGhleCkJCUJhbGwtSXQgT3kKLTAwMjNEOCAgICAgKGJhc2UgMTYpCQlCYWxsLUl0IE95Ci0JCQkJVXVzaWthdHUgMjQgRyA3NgotCQkJCU91bHUgIDkwMTAwCi0JCQkJRklOTEFORAotCi0wMC0yMy1EOSAgIChoZXgpCQlCYW5uZXIgRW5naW5lZXJpbmcKLTAwMjNEOSAgICAgKGJhc2UgMTYpCQlCYW5uZXIgRW5naW5lZXJpbmcKLQkJCQk5NzE0IDEwdGggQXZlLiBOLgotCQkJCVBseW1vdXRoIE1OIDU1NDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1EQSAgIChoZXgpCQlJbmR1c3RyaWFsIENvbXB1dGVyIFNvdXJjZSAoRGV1dHNjaGxhbmQpR21iSAotMDAyM0RBICAgICAoYmFzZSAxNikJCUluZHVzdHJpYWwgQ29tcHV0ZXIgU291cmNlIChEZXV0c2NobGFuZClHbWJICi0JCQkJTWFyaWUtQ3VyaWUtU3RyYcODxbhlIDkKLQkJCQlQdWxoZWltIE5SVyA1MDI1OQotCQkJCUdFUk1BTlkKLQotMDAtMjMtREIgICAoaGV4KQkJc2F4bmV0IGdtYmgKLTAwMjNEQiAgICAgKGJhc2UgMTYpCQlzYXhuZXQgZ21iaAotCQkJCVdpbGx5LUJyYW5kdC1SaW5nIDEKLQkJCQlPZWxzbml0eiBTYWNoc2VuIDA4NjA2Ci0JCQkJR0VSTUFOWQotCi0wMC0yMy1EQyAgIChoZXgpCQlCZW5laW4sIEluYwotMDAyM0RDICAgICAoYmFzZSAxNikJCUJlbmVpbiwgSW5jCi0JCQkJSHlvamFjaG9uamVzYW5nZ2EyMjggQjksIDI5NywKLQkJCQlzZW9oeXVuLWRvbmcsIGJ1bmRhbmctZ3UKLQkJCQlTZW5nbmFtLXNpIEt5dW5nZ2ktZG8gNDYzLTgxOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy1ERCAgIChoZXgpCQlFTEdJTiBTLkEuCi0wMDIzREQgICAgIChiYXNlIDE2KQkJRUxHSU4gUy5BLgotCQkJCVJVQSBCQVJBTyBERSBDQU1QSU5BUywgMzA1Ci0JCQkJQ0FNUE9TIEVMSVNFT1MKLQkJCQlTQU8gUEFVTE8gIDAxMjAxLTkwMQotCQkJCUJSQVpJTAotCi0wMC0yMy1ERSAgIChoZXgpCQlBbnN5bmMgSW5jLgotMDAyM0RFICAgICAoYmFzZSAxNikJCUFuc3luYyBJbmMuCi0JCQkJNDk3MCBSb2JlcnQgSiBNYXR0aGV3cyBQa3kKLQkJCQlTdWl0ZSAxNjAKLQkJCQlFbCBEb3JhZG8gSGlsbHMgQ0EgOTU3NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLURGICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjNERiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1FMCAgIChoZXgpCQlJTk8gVGhlcmFwZXV0aWNzIExMQwotMDAyM0UwICAgICAoYmFzZSAxNikJCUlOTyBUaGVyYXBldXRpY3MgTExDCi0JCQkJMjkwMiBEYWlyeSBEcml2ZQotCQkJCU1hZGlzb24gV0kgNTM3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUUxICAgKGhleCkJCUNhdmVuYSBJbWFnZSBQcm9kdWN0cyBBQgotMDAyM0UxICAgICAoYmFzZSAxNikJCUNhdmVuYSBJbWFnZSBQcm9kdWN0cyBBQgotCQkJCU55dG9ycHN2YWdlbiAyNgotCQkJCVTDpGJ5IFN0b2NraG9sbSBzZS0xODMgNTMKLQkJCQlTV0VERU4KLQotMDAtMjMtRTIgICAoaGV4KQkJU0VBIFNpZ25hbGlzYXRpb24KLTAwMjNFMiAgICAgKGJhc2UgMTYpCQlTRUEgU2lnbmFsaXNhdGlvbgotCQkJCTIwLTIyIFJ1ZSBQaWVycmUgTWVuZMOocyBGcmFuY2UKLQkJCQlCUCAyMzEKLQkJCQlWYXVseCBlbiBWZWxpbiBDRURFWCAgNjk1MTUKLQkJCQlGUkFOQ0UKLQotMDAtMjMtRTMgICAoaGV4KQkJTWljcm90cm9uaWMgQUcKLTAwMjNFMyAgICAgKGJhc2UgMTYpCQlNaWNyb3Ryb25pYyBBRwotCQkJCUR1ZW5uZXJuc3RyYXNzZSAzMgotCQkJCU9lbnNpbmdlbiBTb2xvdGh1cm4gNDcwMgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTIzLUU0ICAgKGhleCkJCUlQbmVjdCBjby4gbHRkLgotMDAyM0U0ICAgICAoYmFzZSAxNikJCUlQbmVjdCBjby4gbHRkLgotCQkJCTgwOCBhbGJhdHJvc3MgQi9EIDIzNy0xOAotCQkJCUdhc2FuLWRvbmcsIEdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUU1ICAgKGhleCkJCUlQYVhpb20gTmV0d29ya3MKLTAwMjNFNSAgICAgKGJhc2UgMTYpCQlJUGFYaW9tIE5ldHdvcmtzCi0JCQkJQXN0b24gQ291cnQKLQkJCQlLaW5nc21lYWQgQnVzaW5lc3MgUGFyaywgRnJlZGVyaWNrIFBsYWNlCi0JCQkJSGlnaCBXeWNvbWJlIEJ1Y2tpbmdoYW1zaGlyZSBIUDExIDFMQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTIzLUU2ICAgKGhleCkJCVBpcmt1cywgSW5jLgotMDAyM0U2ICAgICAoYmFzZSAxNikJCVBpcmt1cywgSW5jLgotCQkJCTJGLDEtMS0yCi0JCQkJU2hpbXVyYQotCQkJCUl0YWJhc2hpLWt1IFRva3lvIDE3NC0wMDU2Ci0JCQkJSkFQQU4KLQotMDAtMjMtRTcgICAoaGV4KQkJSGlua2UgQS9TCi0wMDIzRTcgICAgIChiYXNlIDE2KQkJSGlua2UgQS9TCi0JCQkJVGluZ2JqZXJndmVqIDIKLQkJCQlCamFldmVyc2tvdiAgREstNDYzMgotCQkJCURFTk1BUksKLQotMDAtMjMtRTggICAoaGV4KQkJRGVtY28gQ29ycC4KLTAwMjNFOCAgICAgKGJhc2UgMTYpCQlEZW1jbyBDb3JwLgotCQkJCSM5MTksIERvb3NhbiBWZW50dXJlZGlnbSwgMTI2LTEKLQkJCQlQeXVuZ2Nob24tRG9uZywgRG9uZ2FuLUt1Ci0JCQkJQW55YW5nLVNpIEt5dW5na2ktRG8gNDMxLTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yMy1FOSAgIChoZXgpCQlGNSBOZXR3b3JrcywgSW5jLgotMDAyM0U5ICAgICAoYmFzZSAxNikJCUY1IE5ldHdvcmtzLCBJbmMuCi0JCQkJNDAxIEVsbGlvdHQgQXZlLiBXLgotCQkJCVNlYXR0bGUgV0EgOTgxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUVBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjNFQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1FQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDIzRUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRUMgICAoaGV4KQkJQWxnb3JpdGhtaXggR21iSAotMDAyM0VDICAgICAoYmFzZSAxNikJCUFsZ29yaXRobWl4IEdtYkgKLQkJCQlLbGV0dGdhdXN0cmFzc2UgMjEKLQkJCQlXYWxkc2h1dC1UaWVuZ2VuIEJXIDc5NzYxCi0JCQkJR0VSTUFOWQotCi0wMC0yMy1FRCAgIChoZXgpCQlNb3Rvcm9sYSBDSFMKLTAwMjNFRCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBDSFMKLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1FRSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyM0VFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRUYgICAoaGV4KQkJWnVlbmQgU3lzdGVtdGVjaG5payBBRwotMDAyM0VGICAgICAoYmFzZSAxNikJCVp1ZW5kIFN5c3RlbXRlY2huaWsgQUcKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDgKLQkJCQlBbHRzdGFldHRlbiBTRyA5NDUwCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjMtRjAgICAoaGV4KQkJU2hhbmdoYWkgSmluZ2hhbiBXZWlnaGluZyBBcHBhcmF0dXMgQ28uIEx0ZC4KLTAwMjNGMCAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBKaW5naGFuIFdlaWdoaW5nIEFwcGFyYXR1cyBDby4gTHRkLgotCQkJCUJ1aWxkaW5nIDU4LCBOby45OSBDaHVuZ3VhbmcgUm9hZCwgWGluemh1YW5nIEluZHVzdHJpYWwgWm9uZSxNaW5oYW5nLAotCQkJCVNoYW5naGFpICAyMDExMDgKLQkJCQlDSElOQQotCi0wMC0yMy1GMSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMDAyM0YxICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU2vDpW5lIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTAwLTIzLUYyICAgKGhleCkJCVRWTG9naWMKLTAwMjNGMiAgICAgKGJhc2UgMTYpCQlUVkxvZ2ljCi0JCQkJc3VpdGUgOTE0IEFDRSBUZWNobm8gVG93ZXItOXRoCi0JCQkJR2FzYW4tZG9uZwotCQkJCUdldW1jaGVvbi1ndSBTRU9VTCAxNTMtNzgyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTIzLUYzICAgKGhleCkJCUdsb2NvbSwgSW5jLgotMDAyM0YzICAgICAoYmFzZSAxNikJCUdsb2NvbSwgSW5jLgotCQkJCTIyIEZpcnN0ZmllbGQgUm9hZAotCQkJCVN1aXRlIDEyNQotCQkJCUdhaXRoZXJzYnVyZyBNYXJ5bGFuZCAyMDg3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRjQgICAoaGV4KQkJTWFzdGVybmF1dAotMDAyM0Y0ICAgICAoYmFzZSAxNikJCU1hc3Rlcm5hdXQKLQkJCQk0LCBydWUgQ2hhcmxlcyBDcm9zCi0JCQkJTG91dmllcnMgIDI3NDA3Ci0JCQkJRlJBTkNFCi0KLTAwLTIzLUY1ICAgKGhleCkJCVdJTE8gU0UKLTAwMjNGNSAgICAgKGJhc2UgMTYpCQlXSUxPIFNFCi0JCQkJTm9ydGtpcmNoZW5zdHIuIDEwMAotCQkJCUQgLSA0NDI2MyBEb3J0bXVuZCBOUlcgNDQyNjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLUY2ICAgKGhleCkJCVNvZnR3ZWxsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDIzRjYgICAgIChiYXNlIDE2KQkJU29mdHdlbGwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk0RiwgTm8uIDQxOSwgSmhvbmdoZSBSZC4sIFlvbmdoZSBDaXR5LAotCQkJCVRhaXBlaSBDb3VudHkgIDIzNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjMtRjcgICAoaGV4KQkJUFJJVkFURQotMDAyM0Y3ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yMy1GOCAgIChoZXgpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotMDAyM0Y4ICAgICAoYmFzZSAxNikJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJTk8uNiBJbm5vdmF0aW9uIFJvYWQgSUksCi0JCQkJU2NpZW5jZSBQYXJrLAotCQkJCUhzaW4tQ2h1LCBUYWl3YW4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yMy1GOSAgIChoZXgpCQlEb3VibGUtVGFrZSBTb2Z0d2FyZSwgSU5DLgotMDAyM0Y5ICAgICAoYmFzZSAxNikJCURvdWJsZS1UYWtlIFNvZnR3YXJlLCBJTkMuCi0JCQkJODQ3MCBBbGxpc29uIFBvaW50ZSBCbHZkCi0JCQkJU3VpdGUgMzAwCi0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yMy1GQSAgIChoZXgpCQlSRyBOZXRzLCBJbmMuCi0wMDIzRkEgICAgIChiYXNlIDE2KQkJUkcgTmV0cywgSW5jLgotCQkJCTEwMDAgRS4gV2lsbGlhbSBTdHJlZXQKLQkJCQlTdWl0ZSAyMDQKLQkJCQlDYXJzb24gQ2l0eSBOViA4OTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjMtRkIgICAoaGV4KQkJSVAgRGF0YXRlbCwgSW5jLgotMDAyM0ZCICAgICAoYmFzZSAxNikJCUlQIERhdGF0ZWwsIEluYy4KLQkJCQkxMzExMCBTb3V0aHdlc3QgRnJlZXdheQotCQkJCVN1Z2FyIExhbmQgVGV4YXMgNzc0NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUZDICAgKGhleCkJCVVsdHJhIFN0ZXJlbyBMYWJzLCBJbmMKLTAwMjNGQyAgICAgKGJhc2UgMTYpCQlVbHRyYSBTdGVyZW8gTGFicywgSW5jCi0JCQkJMTgxIEJvbmV0dGkgRHJpdmUKLQkJCQlTYW4gTHVpcyBPYmlzcG8gQ0EgOTM0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTIzLUZEICAgKGhleCkJCUFGVCBBdGxhcyBGYWhyemV1Z3RlY2huaWsgR21iSAotMDAyM0ZEICAgICAoYmFzZSAxNikJCUFGVCBBdGxhcyBGYWhyemV1Z3RlY2huaWsgR21iSAotCQkJCUdld2VyYmVzdHIuIDE0Ci0JCQkJV2VyZG9obCAgNTg3OTEKLQkJCQlHRVJNQU5ZCi0KLTAwLTIzLUZFICAgKGhleCkJCUJpb2RldmljZXMsIFNBCi0wMDIzRkUgICAgIChiYXNlIDE2KQkJQmlvZGV2aWNlcywgU0EKLQkJCQlSdWEgNSBkZSBPdXR1YnJvIDMwOQotCQkJCVBvcnRvICA0MTAwLTE3NQotCQkJCVBPUlRVR0FMCi0KLTAwLTIzLUZGICAgKGhleCkJCUJlaWppbmcgSFRUQyBUZWNobm9sb2d5IEx0ZC4KLTAwMjNGRiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEhUVEMgVGVjaG5vbG9neSBMdGQuCi0JCQkJQi0xM0QtMyBLZXNoaSBCdWlsZGluZyxKaWEgTm8uMjggWGlueGkgUm9hZCxTSEFOR0RJIElUIEluZHVzdHJ5IEJhc2UKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0wMC0yNC0wMCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMjQwMCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0wMSAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMjQwMSAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFhpbmh1IDNyZC4KLQkJCQlOZWlodSBEaXN0cmljdCBUYWlwZWkgQ2l0eSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTAyICAgKGhleCkJCU9wLVRlY3Rpb24gR21iSAotMDAyNDAyICAgICAoYmFzZSAxNikJCU9wLVRlY3Rpb24gR21iSAotCQkJCUJvcnNpZ3N0cmHDg8W4ZSA4MAotCQkJCUhlaW5zYmVyZyBHZXJtYW55IDUyNTI1Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC0wMyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNDAzICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yNC0wNCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNDA0ICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yNC0wNSAgIChoZXgpCQlEaWxvZyBOb3JkaWMgQUIKLTAwMjQwNSAgICAgKGJhc2UgMTYpCQlEaWxvZyBOb3JkaWMgQUIKLQkJCQlGYWt0b3J2w6RnZW4gOQotCQkJCUt1bmdzYmFja2EgSGFsbGFuZCA0MzkgMzQKLQkJCQlTV0VERU4KLQotMDAtMjQtMDYgICAoaGV4KQkJUG9pbnRtb2JpbGUKLTAwMjQwNiAgICAgKGJhc2UgMTYpCQlQb2ludG1vYmlsZQotCQkJCTMwMSxXb3JsZCBNZXJpZGlhbiBWZXJ0dXJlIENlbnRlci0xIDYwLTI0Ci0JCQkJR2FzYW4tZG9uZwotCQkJCVNlb3VsIEdldW1jaGVvbi1ndSAxNTM3ODEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtMDcgICAoaGV4KQkJVEVMRU0gU0FTCi0wMDI0MDcgICAgIChiYXNlIDE2KQkJVEVMRU0gU0FTCi0JCQkJMTYsIFJVRSBERSBMJ0VUQU5HCi0JCQkJR0lFUkVTIFJIT05FIEFMUEVTIDM4NjEwCi0JCQkJRlJBTkNFCi0KLTAwLTI0LTA4ICAgKGhleCkJCVBhY2lmaWMgQmlvc2NpZW5jZXMKLTAwMjQwOCAgICAgKGJhc2UgMTYpCQlQYWNpZmljIEJpb3NjaWVuY2VzCi0JCQkJMTUwNSBBZGFtcyBEcml2ZQotCQkJCU1lbmxvIFBhcmsgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTA5ICAgKGhleCkJCVRoZSBUb3JvIENvbXBhbnkKLTAwMjQwOSAgICAgKGJhc2UgMTYpCQlUaGUgVG9ybyBDb21wYW55Ci0JCQkJNTgyNSBKYXNtaW5lIFN0cmVldAotCQkJCVJpdmVyc2lkZSBDQSA5MjUwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMEEgICAoaGV4KQkJVVMgQmV2ZXJhZ2UgTmV0Ci0wMDI0MEEgICAgIChiYXNlIDE2KQkJVVMgQmV2ZXJhZ2UgTmV0Ci0JCQkJMTAwMSBXLiBGYXlldHRlIFN0cmVldAotCQkJCTNBCi0JCQkJU3lyYWN1c2UgTlkgMTMyMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTBCICAgKGhleCkJCVZpcnR1YWwgQ29tcHV0ZXIgSW5jLgotMDAyNDBCICAgICAoYmFzZSAxNikJCVZpcnR1YWwgQ29tcHV0ZXIgSW5jLgotCQkJCTMgTEFOIERyaXZlCi0JCQkJV2VzdGZvcmQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTBDICAgKGhleCkJCURFTEVDIEdtYkgKLTAwMjQwQyAgICAgKGJhc2UgMTYpCQlERUxFQyBHbWJICi0JCQkJUnVoZXdlZyAxNy0yMQotCQkJCUfDtmxsaGVpbSBSaGVpbmxhbmQtUGZhbHogNjczMDcKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LTBEICAgKGhleCkJCU9uZVBhdGggTmV0d29ya3MgTFRELgotMDAyNDBEICAgICAoYmFzZSAxNikJCU9uZVBhdGggTmV0d29ya3MgTFRELgotCQkJCTggSGFydG9tIFN0Ci0JCQkJSmVydXNhbGVtICA5MTQ1MAotCQkJCUlTUkFFTAotCi0wMC0yNC0wRSAgIChoZXgpCQlJbnZlbnRlYyBCZXN0YSBDby4sIEx0ZC4KLTAwMjQwRSAgICAgKGJhc2UgMTYpCQlJbnZlbnRlYyBCZXN0YSBDby4sIEx0ZC4KLQkJCQkxMEZMLCBOby4zNiwgTGFuZSA1MTMsIFJ1aSBHdWFuZyBSb2FkLCBOZWkgSHUgRGlzdC4KLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMEYgICAoaGV4KQkJSXNoaWkgVG9vbCAmIEVuZ2luZWVyaW5nIENvcnBvcmF0aW9uCi0wMDI0MEYgICAgIChiYXNlIDE2KQkJSXNoaWkgVG9vbCAmIEVuZ2luZWVyaW5nIENvcnBvcmF0aW9uCi0JCQkJMi01LTYwIEhpZ2FzaGktT21pY2hpCi0JCQkJT2l0YSAgODcwLTA4MjMKLQkJCQlKQVBBTgotCi0wMC0yNC0xMCAgIChoZXgpCQlOVUVURVEgVGVjaG5vbG9neSxJbmMuCi0wMDI0MTAgICAgIChiYXNlIDE2KQkJTlVFVEVRIFRlY2hub2xvZ3ksSW5jLgotCQkJCTExRiwgTm8uIDExMiwgU2VjLiAxLCBaaG9uZy1YaWFvIEUgUmQuCi0JCQkJVGFpcGVpICAxMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTExICAgKGhleCkJCVBoYXJtYVNtYXJ0IExMQwotMDAyNDExICAgICAoYmFzZSAxNikJCVBoYXJtYVNtYXJ0IExMQwotCQkJCTM0OTUgV2ludG9uIFBsYWNlCi0JCQkJQmxkZyBBLCBTdWl0ZSAxCi0JCQkJUm9jaGVzdGVyIE5ZIDE0NjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0xMiAgIChoZXgpCQlCZW5pZ24gVGVjaG5vbG9naWVzIENvLCBMdGQuCi0wMDI0MTIgICAgIChiYXNlIDE2KQkJQmVuaWduIFRlY2hub2xvZ2llcyBDbywgTHRkLgotCQkJCTUwNCByb29tLCA1RiwgU291dGggYnVpbGRpbmcsIEZvcnNhZmUgVG93ZXIsCi0JCQkJU291dGggT25lIFN0cmVldCwgSGktVGVjaCBab25lLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNC0xMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI0MTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMTQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNDE0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTE1ICAgKGhleCkJCU1hZ25ldGljIEF1dG9jb250cm9sIEdtYkgKLTAwMjQxNSAgICAgKGJhc2UgMTYpCQlNYWduZXRpYyBBdXRvY29udHJvbCBHbWJICi0JCQkJR3JpZW5tYXR0IDIwCi0JCQkJU2Nob3BmaGVpbSAgRC03OTY1MAotCQkJCUdFUk1BTlkKLQotMDAtMjQtMTYgICAoaGV4KQkJQW55IFVzZQotMDAyNDE2ICAgICAoYmFzZSAxNikJCUFueSBVc2UKLQkJCQlMRyBBUFQgMjExLTE4MDUsCi0JCQkJU2hpbmJvbmctRG9uZywgU3VqaS1HdSwKLQkJCQlZb25naW4gQ2l0eSBHeWVvbmctR2kgUHJvdmluY2UgNDQ4LTE1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNC0xNyAgIChoZXgpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotMDAyNDE3ICAgICAoYmFzZSAxNikJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0JCQkJUHJpbnMgQm91ZGV3aWpubGFhbiA0NwotCQkJCUVkZWdlbSAtIEFudHdlcnAgIEItMjY1MAotCQkJCUJFTEdJVU0KLQotMDAtMjQtMTggICAoaGV4KQkJTmV4dHdhdmUgU2VtaWNvbmR1Y3RvcgotMDAyNDE4ICAgICAoYmFzZSAxNikJCU5leHR3YXZlIFNlbWljb25kdWN0b3IKLQkJCQkzNjExIFZhbGxleSBDZW50cmUgRHIKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTE5ICAgKGhleCkJCVBSSVZBVEUKLTAwMjQxOSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtMjQtMUEgICAoaGV4KQkJUmVkIEJlZXRsZSBJbmMuCi0wMDI0MUEgICAgIChiYXNlIDE2KQkJUmVkIEJlZXRsZSBJbmMuCi0JCQkJODk4IFNpbGFzIERlYW5lIEhpZ2h3YXkKLQkJCQlXZXRoZXJzZmllbGQgQ1QgMDYxMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTFCICAgKGhleCkJCWlXT1cgQ29tbXVuaWNhdGlvbnMgUHRlIEx0ZAotMDAyNDFCICAgICAoYmFzZSAxNikJCWlXT1cgQ29tbXVuaWNhdGlvbnMgUHRlIEx0ZAotCQkJCTEgTG9yb25nIDIgVG9hIFBheW9oICMwNC0wMQotCQkJCVllbGxvdyBQYWdlcyBCdWlsZGluZwotCQkJCTMxOTYzNwotCQkJCVNJTkdBUE9SRQotCi0wMC0yNC0xQyAgIChoZXgpCQlGdUdhbmcgRWxlY3Ryb25pYyAoREcpIENvLixMdGQKLTAwMjQxQyAgICAgKGJhc2UgMTYpCQlGdUdhbmcgRWxlY3Ryb25pYyAoREcpIENvLixMdGQKLQkJCQlJbmR1c3RyeSBTdHJlZXQsIERvbmctS2VuZwotCQkJCUd1YW5nIERvbmcgUHJvdmluY2UKLQkJCQlEb25nIEd1YW4gQ2l0eSAgNTIzNDQ4Ci0JCQkJQ0hJTkEKLQotMDAtMjQtMUQgICAoaGV4KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLTAwMjQxRCAgICAgKGJhc2UgMTYpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCU5vLjIxNSxOYW4tUGluZyBSb2FkLAotCQkJCVBpbi1KZW4gVGFveXVhbiAzMjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTFFICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyNDFFICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTI0LTFGICAgKGhleCkJCURDVC1EZWx0YSBHbWJICi0wMDI0MUYgICAgIChiYXNlIDE2KQkJRENULURlbHRhIEdtYkgKLQkJCQlCb2RhbnJ1ZWNrc3RyYXNzZSAxCi0JCQkJQm9kbWFuIC0gTHVkd2lnc2hhZmVuIEJhZGVuIC0gV8O8cnR0ZW1iZXJnIDc4MzUxCi0JCQkJR0VSTUFOWQotCi0wMC0yNC0yMCAgIChoZXgpCQlOZXRVUCBJbmMuCi0wMDI0MjAgICAgIChiYXNlIDE2KQkJTmV0VVAgSW5jLgotCQkJCU9sb2YgUGFsbWUgc3QuLCAxLCBzZWN0LiA3Ci0JCQkJTW9zY293ICAxMTkzMTEKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjQtMjEgICAoaGV4KQkJTUlDUk8tU1RBUiBJTlQnTCBDTy4sIExURC4KLTAwMjQyMSAgICAgKGJhc2UgMTYpCQlNSUNSTy1TVEFSIElOVCdMIENPLiwgTFRELgotCQkJCU5vLjY5LCBMaS1EZSBTdAotCQkJCUp1bmctSG8gQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC0yMiAgIChoZXgpCQlLbmFwcCBMb2dpc3RpayBBdXRvbWF0aW9uIEdtYkgKLTAwMjQyMiAgICAgKGJhc2UgMTYpCQlLbmFwcCBMb2dpc3RpayBBdXRvbWF0aW9uIEdtYkgKLQkJCQlHw7xudGVyLUtuYXBwLVN0cmFzc2UgNS03Ci0JCQkJSGFydCBiZWkgR3JheiBTdHlyaWEgODA3NQotCQkJCUFVU1RSSUEKLQotMDAtMjQtMjMgICAoaGV4KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcyAoU2hhbmdoYWkpIEluYy4KLTAwMjQyMyAgICAgKGJhc2UgMTYpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgSW5jLgotCQkJCU5PLiA4LCBMQU5FIDY2LCBDSEVOR0JBTyBSRC4KLQkJCQlNQUxVIENPVU5UWSwgSklBRElORyBESVNUUklDVCwKLQkJCQlTSEFOR0hBSSAgMjAxODAxCi0JCQkJQ0hJTkEKLQotMDAtMjQtMjQgICAoaGV4KQkJQXhpcyBOZXR3b3JrIFRlY2hub2xvZ3kKLTAwMjQyNCAgICAgKGJhc2UgMTYpCQlBeGlzIE5ldHdvcmsgVGVjaG5vbG9neQotCQkJCVVuaXQgMTAsIE1pZHNoaXJlcyBCdXMgUGFyawotCQkJCVNtZWF0b24gQ2xvc2UKLQkJCQlBeWxlc2J1cnkgQnVja3MgSFAxOSA4SEwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNC0yNSAgIChoZXgpCQlTaGVuemhlbnNoaSBjaHVhbmd6aGljaGVuZyBUZWNobm9sb2d5IENvLixMdGQKLTAwMjQyNSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbnNoaSBjaHVhbmd6aGljaGVuZyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQk1dGggRmxvb3IsQmxvY2syLDI1dGggQnVpbGRpbmcsSW5kdXN0cmlhbCBab25lIFdlc3QgS2V5dWFuIFNjaS10ZWNoIEdhcmRlbiBOYW5zaGFuIERpc3RyaWNoLFNoZW56aGVuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTI0LTI2ICAgKGhleCkJCU5PSE1JIEJPU0FJIExURC4KLTAwMjQyNiAgICAgKGJhc2UgMTYpCQlOT0hNSSBCT1NBSSBMVEQuCi0JCQkJNy0zLEt1ZGFuLU1pbmFtaSA0LUNob21lLAotCQkJCUNoaXlvZGEta3UKLQkJCQlUb2t5byAgMTAyLTgyNzcKLQkJCQlKQVBBTgotCi0wMC0yNC0yNyAgIChoZXgpCQlTU0kgQ09NUFVURVIgQ09SUAotMDAyNDI3ICAgICAoYmFzZSAxNikJCVNTSSBDT01QVVRFUiBDT1JQCi0JCQkJNEYsIE5PNCwgTEFORSAyMzUsIEJBTyBDSElBTyBST0FECi0JCQkJSFNJTiBUSUVOIFRBSVBFSSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTI4ICAgKGhleCkJCUVuZXJneUlDVAotMDAyNDI4ICAgICAoYmFzZSAxNikJCUVuZXJneUlDVAotCQkJCVRoZW9kb29yIFNldmVuc2xhYW4gMTA0YQotCQkJCUtvcnRyaWprICA4NTAwCi0JCQkJQkVMR0lVTQotCi0wMC0yNC0yOSAgIChoZXgpCQlNSyBNQVNURVIgSU5DLgotMDAyNDI5ICAgICAoYmFzZSAxNikJCU1LIE1BU1RFUiBJTkMuCi0JCQkJNkYsIC0xLCBOTy4gMTEwLFNFQy4gMywgSkhPTkdTSEFOIFJELiwKLQkJCQlKSE9ORy1IRSBDSVRZLCBUQUlQRUkgQ09VTlRZIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtMkEgICAoaGV4KQkJSGl0dGl0ZSBNaWNyb3dhdmUgQ29ycG9yYXRpb24KLTAwMjQyQSAgICAgKGJhc2UgMTYpCQlIaXR0aXRlIE1pY3Jvd2F2ZSBDb3Jwb3JhdGlvbgotCQkJCTIwIEFscGhhIFJkCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMkIgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLixMdGQuCi0wMDI0MkIgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLixMdGQuCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiBUYWl3YW4gMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC0yQyAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotMDAyNDJDICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC0yRSAgIChoZXgpCQlEYXRhc3RyaXAgSW5jLgotMDAyNDJFICAgICAoYmFzZSAxNikJCURhdGFzdHJpcCBJbmMuCi0JCQkJMSBXYXRlcnZpZXcgRHJpdmUKLQkJCQlTdWl0ZSAxMDMKLQkJCQlTaGVsdG9uIENUIDA2NDg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0yRiAgIChoZXgpCQlWaXJ0ZW5TeXMgSW5jCi0wMDI0MkYgICAgIChiYXNlIDE2KQkJVmlydGVuU3lzIEluYwotCQkJCTg3MDUgTmltYnVzIEF2ZSBTdGUgMTAwCi0JCQkJQmVhdmVydG9uIE9SIDk3MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0zMCAgIChoZXgpCQlSdWJ5IFRlY2ggQ29ycC4KLTAwMjQzMCAgICAgKGJhc2UgMTYpCQlSdWJ5IFRlY2ggQ29ycC4KLQkJCQkzRiwgTk8uIDEsIExhbmUgNTAsIE5hbiBLYW5nIFJvYWQsIFNlYy4gMywKLQkJCQlUYWlwZWkgIDExNTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC0zMSAgIChoZXgpCQlVbmktdiBjby4sbHRkCi0wMDI0MzEgICAgIChiYXNlIDE2KQkJVW5pLXYgY28uLGx0ZAotCQkJCTUvRixDT0ZDTyBQcm9wZXJ0eSBUb3dlciwKLQkJCQl0aGUgM3JkIEFyZWEsIEJhbydhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjYKLQkJCQlDSElOQQotCi0wMC0yNC0zMiAgIChoZXgpCQlOZW9zdGFyIFRlY2hub2xvZ3kgQ28uLExURAotMDAyNDMyICAgICAoYmFzZSAxNikJCU5lb3N0YXIgVGVjaG5vbG9neSBDby4sTFRECi0JCQkJOEYuLCBOby4xMDIsIFNlYy4gMSwgU2ludGFpIDV0aCBSZC4KLQkJCQlTaWpoaWggQ2l0eSBUYWlwZWkgMjIxNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTMzICAgKGhleCkJCUFscHMgRWxlY3RyaWMgQ28uLCBMdGQKLTAwMjQzMyAgICAgKGJhc2UgMTYpCQlBbHBzIEVsZWN0cmljIENvLiwgTHRkCi0JCQkJMS0yLTEsIE9raW5vdWNoaQotCQkJCVNvbWEgY2l0eSBGdWt1c2hpbWEta2VuIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjQtMzQgICAoaGV4KQkJTGVjdHJvc29uaWNzLCBJbmMuCi0wMDI0MzQgICAgIChiYXNlIDE2KQkJTGVjdHJvc29uaWNzLCBJbmMuCi0JCQkJNTgxIExhc2VyIFJkLgotCQkJCVJpbyBSYW5jaG8gTk0gODcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTM1ICAgKGhleCkJCVdJREUgQ09SUE9SQVRJT04KLTAwMjQzNSAgICAgKGJhc2UgMTYpCQlXSURFIENPUlBPUkFUSU9OCi0JCQkJTEVBREVSUyBUT1dFUiA3VEggRkwuLCBHT01BRS1ET05HLCBHSUhFVU5HLUdVCi0JCQkJWU9OR0lOIEdZRU9OR0dJIDQ0Ni05MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtMzYgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyNDM2ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTM3ICAgKGhleCkJCU1vdG9yb2xhIC0gQlNHCi0wMDI0MzcgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgLSBCU0cKLQkJCQkxMTAxIE1hcmluYSBWaWxsYWdlIFBrd3kKLQkJCQlTdGUgMjAwCi0JCQkJQWxhbWVkYSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtMzggICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLTAwMjQzOCAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotCQkJCTE3NDUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0zOSAgIChoZXgpCQlFc3NlbnRpYWwgVmlld2luZyBTeXN0ZW1zIExpbWl0ZWQKLTAwMjQzOSAgICAgKGJhc2UgMTYpCQlFc3NlbnRpYWwgVmlld2luZyBTeXN0ZW1zIExpbWl0ZWQKLQkJCQlIaWxsaW5ndG9uIFBhcmsgSW5ub3ZhdGlvbiBDZW50cmUKLQkJCQkxIEFpbnNsaWUgUm9hZAotCQkJCUdsYXNnb3cgUmVuZnJld3NoaXJlIEc1MiA0UlUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNC0zQSAgIChoZXgpCQlMdWRsIEVsZWN0cm9uaWMgUHJvZHVjdHMKLTAwMjQzQSAgICAgKGJhc2UgMTYpCQlMdWRsIEVsZWN0cm9uaWMgUHJvZHVjdHMKLQkJCQkxNzEgQnJhZHkgQXZlCi0JCQkJSGF3dGhvcm5lIE5ZIDEwNTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0zQiAgIChoZXgpCQlDU1NJIChTKSBQdGUgTHRkCi0wMDI0M0IgICAgIChiYXNlIDE2KQkJQ1NTSSAoUykgUHRlIEx0ZAotCQkJCTcwIEJlbmRlbWVlciBSb2FkIFVuaXQgMDQtMDQKLQkJCQkzMzk5NDAKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjQtM0MgICAoaGV4KQkJUy5BLkEuQS4KLTAwMjQzQyAgICAgKGJhc2UgMTYpCQlTLkEuQS5BLgotCQkJCVouQS4gQ3JvaXggU2FpbnQgTWF0aGlldQotCQkJCUdBTExBUkRPTiBFdXJlIGV0IExvaXIgMjgzMjAKLQkJCQlGUkFOQ0UKLQotMDAtMjQtM0QgICAoaGV4KQkJRW1lcnNvbiBBcHBsaWFuY2UgTW90b3JzIGFuZCBDb250cm9scwotMDAyNDNEICAgICAoYmFzZSAxNikJCUVtZXJzb24gQXBwbGlhbmNlIE1vdG9ycyBhbmQgQ29udHJvbHMKLQkJCQkxOTAxIFNvdXRoIFN0LgotCQkJCUVsZ2luIElMIDYwMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC0zRiAgIChoZXgpCQlTdG9yd2l6ZSwgSW5jLgotMDAyNDNGICAgICAoYmFzZSAxNikJCVN0b3J3aXplLCBJbmMuCi0JCQkJMTEgQWxhdGxlZiBTdC4KLQkJCQlZZWh1ZCAgNTYyMTYKLQkJCQlJU1JBRUwKLQotMDAtMjQtNDAgICAoaGV4KQkJSGFsbyBNb25pdG9yaW5nLCBJbmMuCi0wMDI0NDAgICAgIChiYXNlIDE2KQkJSGFsbyBNb25pdG9yaW5nLCBJbmMuCi0JCQkJNTE1IFNwYXJrbWFuIERyLgotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTQxICAgKGhleCkJCVdhbnpsIE1ldGFsbHdhcmVuZmFicmlrIEdtYkgKLTAwMjQ0MSAgICAgKGJhc2UgMTYpCQlXYW56bCBNZXRhbGx3YXJlbmZhYnJpayBHbWJICi0JCQkJQnViZXNoZWltZXIgU3RyYXNzZSA0Ci0JCQkJTGVpcGhlaW0gQmF2YXJpYSA4OTM0MAotCQkJCUdFUk1BTlkKLQotMDAtMjQtNDIgICAoaGV4KQkJQXhvbmEgTGltaXRlZAotMDAyNDQyICAgICAoYmFzZSAxNikJCUF4b25hIExpbWl0ZWQKLQkJCQkxNDggR3JlZW4gTGFuZQotCQkJCVN0LiBBbGJhbnMgSGVydHMgQUwzIDZFVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI0LTQzICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotMDAyNDQzICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCTIyMjEgTGFrZXNpZGUgQmx2ZAotCQkJCVJpY2hhcmRzb24gVFggNzUwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTQ0ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyNDQ0ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjQtNDUgICAoaGV4KQkJTGlxdWlkeFN0cmVhbSBTeXN0ZW1zIEluYy4KLTAwMjQ0NSAgICAgKGJhc2UgMTYpCQlMaXF1aWR4U3RyZWFtIFN5c3RlbXMgSW5jLgotCQkJCTg0ODAgQm91bC4gRHUgR29sZgotCQkJCU1vbnRyZWFsIFF1ZWJlYyBIMUogM0ExCi0JCQkJQ0FOQURBCi0KLTAwLTI0LTQ2ICAgKGhleCkJCU1NQiBSZXNlYXJjaCBJbmMuCi0wMDI0NDYgICAgIChiYXNlIDE2KQkJTU1CIFJlc2VhcmNoIEluYy4KLQkJCQkzNSBQcmluY2UgQXJ0aHVyIEF2ZS4KLQkJCQlUb3JvbnRvIE9udGFyaW8gTTVSIDFCMgotCQkJCUNBTkFEQQotCi0wMC0yNC00NyAgIChoZXgpCQlLYXp0ZWsgU3lzdGVtcwotMDAyNDQ3ICAgICAoYmFzZSAxNikJCUthenRlayBTeXN0ZW1zCi0JCQkJMTcgQnJvbWZpZWxkIFJvYWQKLQkJCQlBY3RvbiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNDggICAoaGV4KQkJU3BpZGVyQ2xvdWQgV2lyZWxlc3MsIEluYwotMDAyNDQ4ICAgICAoYmFzZSAxNikJCVNwaWRlckNsb3VkIFdpcmVsZXNzLCBJbmMKLQkJCQkzOTAwIEZyZWVkb20gQ2lyY2xlLCBTdWl0ZSAxMDQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNDkgICAoaGV4KQkJU2hlbiBaaGVuIExpdGUgU3RhciBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENvLiwgTHRkCi0wMDI0NDkgICAgIChiYXNlIDE2KQkJU2hlbiBaaGVuIExpdGUgU3RhciBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJWGluZ2hvbmcgU2NpZW5jZSBQYXJrLDFzdCBJbmQuQXJlYSwKLQkJCQlGZW5naHVhbmdndWFuZywgWGl4aWFuZyxCYW9hbiBBcmVhCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEwMgotCQkJCUNISU5BCi0KLTAwLTI0LTRBICAgKGhleCkJCVZveWFudCBJbnRlcm5hdGlvbmFsCi0wMDI0NEEgICAgIChiYXNlIDE2KQkJVm95YW50IEludGVybmF0aW9uYWwKLQkJCQk0NDQgQ2FzdHJvIFN0Ci0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNEIgICAoaGV4KQkJUEVSQ0VQVFJPTiBJTkMKLTAwMjQ0QiAgICAgKGJhc2UgMTYpCQlQRVJDRVBUUk9OIElOQwotCQkJCTQ3ODI3IEhBTFlBUkQgRFIKLQkJCQlQTyAjQ0M2NzM0OAotCQkJCVBMWU1PVVRIIE1JIDQ4MTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC00QyAgIChoZXgpCQlTb2xhcnRyb24gTWV0cm9sb2d5IEx0ZAotMDAyNDRDICAgICAoYmFzZSAxNikJCVNvbGFydHJvbiBNZXRyb2xvZ3kgTHRkCi0JCQkJU3RleW5pbmcgV2F5Ci0JCQkJQm9nbm9yIFJlZ2lzIFdlc3QgU3Vzc2V4IFBPMjAgOVNUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjQtNEQgICAoaGV4KQkJSG9ra2FpZG8gRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLTAwMjQ0RCAgICAgKGJhc2UgMTYpCQlIb2trYWlkbyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgotCQkJCTEtMSBFYXN0IDEwIE5vcnRoIDEwCi0JCQkJSGlnYXNoaS1rdQotCQkJCVNhcHBvcm8gSG9ra2FpZG8gMDY1LTAwMTAKLQkJCQlKQVBBTgotCi0wMC0yNC00RSAgIChoZXgpCQlSYWRDaGlwcywgSW5jLgotMDAyNDRFICAgICAoYmFzZSAxNikJCVJhZENoaXBzLCBJbmMuCi0JCQkJNDIyIEVhc3QgVmVybWlqbyBBdmUuCi0JCQkJU3VpdGUgNDAxCi0JCQkJQ29sb3JhZG8gU3ByaW5ncyBDTyA4MDkwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtNEYgICAoaGV4KQkJQXNhbnRyb24gVGVjaG5vbG9naWVzIEx0ZC4KLTAwMjQ0RiAgICAgKGJhc2UgMTYpCQlBc2FudHJvbiBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTNGLTEsIE5vLjMwIEppaGUgUmQuLCAxMTEKLQkJCQlTaGlobGluIERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTE2NgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtNTAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNDUwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTUxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjQ1MSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC01MiAgIChoZXgpCQlTaWxpY29uIFNvZnR3YXJlIEdtYkgKLTAwMjQ1MiAgICAgKGJhc2UgMTYpCQlTaWxpY29uIFNvZnR3YXJlIEdtYkgKLQkJCQlTdGV1YmVuc3RyLiA0NgotCQkJCU1hbm5oZWltIEJhZGVuLVfDvHJ0dGVtYmVyZyA2ODE2MwotCQkJCUdFUk1BTlkKLQotMDAtMjQtNTMgICAoaGV4KQkJSW5pdHJhIGQuby5vLgotMDAyNDUzICAgICAoYmFzZSAxNikJCUluaXRyYSBkLm8uby4KLQkJCQlTbG9tc2tvdmEgMzMKLQkJCQlManVibGphbmEgIDEwMDAKLQkJCQlTTE9WRU5JQQotCi0wMC0yNC01NCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0wMDI0NTQgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIExURAotCQkJCTQxNiwgTWFldGFuIDNEb25nLCBZZW9uZ3RvbmctR3UsCi0JCQkJU3V3b24gR3llb25nZ2ktRG8gNDQzNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTU1ICAgKGhleCkJCU11TG9naWMgQlYKLTAwMjQ1NSAgICAgKGJhc2UgMTYpCQlNdUxvZ2ljIEJWCi0JCQkJT2xpdmllciB2YW4gTm9vcnRzdHJhYXQgNAotCQkJCVNjaGllZGFtIFpIIDMxMjRMQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI0LTU2ICAgKGhleCkJCTJXaXJlCi0wMDI0NTYgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC01OCAgIChoZXgpCQlQQSBCYXN0aW9uIENDCi0wMDI0NTggICAgIChiYXNlIDE2KQkJUEEgQmFzdGlvbiBDQwotCQkJCTk3LCBsaXRlciBLLCBCdWRkeW9ubm92c2t5IGF2ZS4KLQkJCQlSb3N0b3Ytb24tRG9uICAzNDQwMTEKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjQtNTkgICAoaGV4KQkJQUJCIFNUT1RaLUtPTlRBS1QgR21iSAotMDAyNDU5ICAgICAoYmFzZSAxNikJCUFCQiBTVE9UWi1LT05UQUtUIEdtYkgKLQkJCQlFcHBlbGhlaW1lciBTdHJhw4PFuGUgODIKLQkJCQlTVE8vS0UxCi0JCQkJSGVpZGVsYmVyZyAgNjkxMjMKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LTVBICAgKGhleCkJCU5hbmppbmcgUGFuZGEgRWxlY3Ryb25pY3MgQ29tcGFueSBMaW1pdGVkCi0wMDI0NUEgICAgIChiYXNlIDE2KQkJTmFuamluZyBQYW5kYSBFbGVjdHJvbmljcyBDb21wYW55IExpbWl0ZWQKLQkJCQlaaG9uZ3NoYW4gRWFzdFJvYWQgMzAxLAotCQkJCU5BTkpJTkcgSklBTkdTVSAyMTAwMTYKLQkJCQlDSElOQQotCi0wMC0yNC01QiAgIChoZXgpCQlSQUlET04gVEVDSE5PTE9HWSwgSU5DLgotMDAyNDVCICAgICAoYmFzZSAxNikJCVJBSURPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJNEYtOCwgTk8uMTYsIExhbmUgNjA5LCBTZWMuNSwgQ2h1bmctSHNpbiBSZC4sCi0JCQkJU2FuLUNodW5nIENpdHkgVGFpcGVpIGNvdW50eSwgMjQxNTkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTVDICAgKGhleCkJCURlc2lnbi1Db20gVGVjaG5vbG9naWVzIFB0eS4gTHRkLgotMDAyNDVDICAgICAoYmFzZSAxNikJCURlc2lnbi1Db20gVGVjaG5vbG9naWVzIFB0eS4gTHRkLgotCQkJCTE0IFJlZGxhbmQgRHJpdmUKLQkJCQlNaXRjaGFtIFZpY3RvcmlhIDMxMzIKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjQtNUQgICAoaGV4KQkJVGVyYmVyZyBiZXN0dXJpbmdzdGVjaG5pZWsgQi5WLgotMDAyNDVEICAgICAoYmFzZSAxNikJCVRlcmJlcmcgYmVzdHVyaW5nc3RlY2huaWVrIEIuVi4KLQkJCQlMYWdlIERpamstTm9vcmQgMwotCQkJCUlKc3NlbHN0ZWluIFV0cmVjaHQgMzQwMSBWQQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI0LTVFICAgKGhleCkJCUhpdmlzaW9uIENvLixsdGQKLTAwMjQ1RSAgICAgKGJhc2UgMTYpCQlIaXZpc2lvbiBDby4sbHRkCi0JCQkJMjIwMS0yMjAyLCBDT0ZDTyBQcm9wZXJ0eSBUb3dlciwKLQkJCQkzcmQgQmFvJ2FuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwMQotCQkJCUNISU5BCi0KLTAwLTI0LTVGICAgKGhleCkJCVZpbmUgVGVsZWNvbSBDTy4sTHRkLgotMDAyNDVGICAgICAoYmFzZSAxNikJCVZpbmUgVGVsZWNvbSBDTy4sTHRkLgotCQkJCTE5MS00LCA0RiwgQW55YW5nLWRvbmcsIE1hbmFuLWd1Ci0JCQkJQW55YW5nLXNpIEd5ZW9uZ2dpLWRvIDQzMC0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjAgICAoaGV4KQkJR2lhdmFsIFNjaWVuY2UgRGV2ZWxvcG1lbnQgQ28uIEx0ZC4KLTAwMjQ2MCAgICAgKGJhc2UgMTYpCQlHaWF2YWwgU2NpZW5jZSBEZXZlbG9wbWVudCBDby4gTHRkLgotCQkJCTU4IEJlaSBTaSBIdWFuIFhpIFJkCi0JCQkJSWRlYWwgUGxhemEsIFN1aXRlIDQxMwotCQkJCUJlaWppbmcgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMjQtNjEgICAoaGV4KQkJU2hpbiBXYW5nIFRlY2guCi0wMDI0NjEgICAgIChiYXNlIDE2KQkJU2hpbiBXYW5nIFRlY2guCi0JCQkJNjMyLTYyLCBHdXJvLURvbmcsIEd1cm8tR3UKLQkJCQkxMDUtSG8sIEMtRG9uZywgR3Vyb2N1bGF0aW9uIERlcHQuCi0JCQkJU2VvdWwgIDE1Mi04NjYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjIgICAoaGV4KQkJUmF5em9uZSBDb3Jwb3JhdGlvbgotMDAyNDYyICAgICAoYmFzZSAxNikJCVJheXpvbmUgQ29ycG9yYXRpb24KLQkJCQkjMjAwOCwgQi1Eb25nLCBTYW1obyBCTERHCi0JCQkJWWFuZ2phZTItRG9uZywgU2VvY2hvLUd1Ci0JCQkJU2VvdWwgIDEzNy05NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNjMgICAoaGV4KQkJUGh5YnJpZGdlIEluYwotMDAyNDYzICAgICAoYmFzZSAxNikJCVBoeWJyaWRnZSBJbmMKLQkJCQkzNDk1IExhaXJkIFJkIAotCQkJCVVuaXQgMTIKLQkJCQlNaXNzaXNzYXVnYSBPbnRhcmlvIEw1TDVTNQotCQkJCUNBTkFEQQotCi0wMC0yNC02NCAgIChoZXgpCQlCcmlkZ2UgVGVjaG5vbG9naWVzIENvIEFTCi0wMDI0NjQgICAgIChiYXNlIDE2KQkJQnJpZGdlIFRlY2hub2xvZ2llcyBDbyBBUwotCQkJCU3DuGxsZXBhcmtlbiA0Ci0JCQkJT3NsbyAgMDQ1OQotCQkJCU5PUldBWQotCi0wMC0yNC02NSAgIChoZXgpCQlFbGVudGVjCi0wMDI0NjUgICAgIChiYXNlIDE2KQkJRWxlbnRlYwotCQkJCTQwMS0xMyBDaHVuZ2d5ZS1SaSxEb25ndGFuLU15dW4KLQkJCQlId2FzdW5nIEt5dW5nZ2kgNDQ1LTgxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNC02NiAgIChoZXgpCQlVbml0cm9uIG52Ci0wMDI0NjYgICAgIChiYXNlIDE2KQkJVW5pdHJvbiBudgotCQkJCUZyYW5ya2lqa2xhYW4gMjcKLQkJCQlQb3BlcmluZ2UgVy12bCA4OTcwCi0JCQkJQkVMR0lVTQotCi0wMC0yNC02NyAgIChoZXgpCQlBT0MgSW50ZXJuYXRpb25hbCAoRXVyb3BlKSBHbWJICi0wMDI0NjcgICAgIChiYXNlIDE2KQkJQU9DIEludGVybmF0aW9uYWwgKEV1cm9wZSkgR21iSAotCQkJCUxhaG5zdHJhc3NlIDg2QQotCQkJCUJlcmxpbiAgMTIwNTUKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LTY4ICAgKGhleCkJCVN1bWF2aXNpb24gVGVjaG5vbG9naWVzIENvLixMdGQKLTAwMjQ2OCAgICAgKGJhc2UgMTYpCQlTdW1hdmlzaW9uIFRlY2hub2xvZ2llcyBDby4sTHRkCi0JCQkJNkYsIEJsb2NrIEEyLCBQb3dlciBDcmVhdGl2ZSBCdWlsZGluZyxOby4xIFNoYW5nZGkgRWFzdCBSb2FkLCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDAtMjQtNjkgICAoaGV4KQkJU21hcnQgRG9vcnBob25lcwotMDAyNDY5ICAgICAoYmFzZSAxNikJCVNtYXJ0IERvb3JwaG9uZXMKLQkJCQlTcGlldmVsZHN0cmFhdCAyNAotCQkJCUxva2VyZW4gIDkxNjAKLQkJCQlCRUxHSVVNCi0KLTAwLTI0LTZBICAgKGhleCkJCVNvbGlkIFllYXIgQ28uLCBMdGQuCi0wMDI0NkEgICAgIChiYXNlIDE2KQkJU29saWQgWWVhciBDby4sIEx0ZC4KLQkJCQkyRi0xLCBOby4gOTQsIEJhby1jaHVuZyBSb2FkLAotCQkJCUhzaW4tdGllbiBDaXR5IFRhaXBlaSBIc2llbiAyMzE0NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtNkIgICAoaGV4KQkJQ292aWEsIEluYy4KLTAwMjQ2QiAgICAgKGJhc2UgMTYpCQlDb3ZpYSwgSW5jLgotCQkJCUJlbmV4IFMtMyBCbGRnLiwgMy0yMC04LCBTaGlueW9rb2hhbWEsS29ob2t1LWt1LAotCQkJCVlva29oYW1hLWNpdHkgS2FuYWdhd2EtcHJlZi4gMjIyLTAwMzMKLQkJCQlKQVBBTgotCi0wMC0yNC02QyAgIChoZXgpCQlBUlVCQSBORVRXT1JLUywgSU5DLgotMDAyNDZDICAgICAoYmFzZSAxNikJCUFSVUJBIE5FVFdPUktTLCBJTkMuCi0JCQkJMTM0NCBDcm9zc21hbiBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTZEICAgKGhleCkJCVdlaW56aWVybCBFbmdpbmVlcmluZyBHbWJICi0wMDI0NkQgICAgIChiYXNlIDE2KQkJV2VpbnppZXJsIEVuZ2luZWVyaW5nIEdtYkgKLQkJCQlCYWhuaG9mc3RyLiA2Ci0JCQkJVHlybGFjaGluZyBCYXZhcmlhIDg0NTU4Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC02RSAgIChoZXgpCQlQaGlob25nIFVTQSBDb3JwLgotMDAyNDZFICAgICAoYmFzZSAxNikJCVBoaWhvbmcgVVNBIENvcnAuCi0JCQkJNDc4MDAgRnJlbW9udCBCbHZkLgotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTZGICAgKGhleCkJCU9uZGEgQ29tbXVuaWNhdGlvbiBzcGEKLTAwMjQ2RiAgICAgKGJhc2UgMTYpCQlPbmRhIENvbW11bmljYXRpb24gc3BhCi0JCQkJdmlhIGRlbCBsYXZvcm8gOQotCQkJCXBvcmRlbm9uZSAgMzMxNzAKLQkJCQlJVEFMWQotCi0wMC0yNC03MCAgIChoZXgpCQlBVVJPVEVDSCB1bHRyYXNvdW5kIEFTLgotMDAyNDcwICAgICAoYmFzZSAxNikJCUFVUk9URUNIIHVsdHJhc291bmQgQVMuCi0JCQkJU3ZpbmdlbiAxCi0JCQkJVHlkYWwgU3ItVHIgTi03NTkwCi0JCQkJTk9SV0FZCi0KLTAwLTI0LTcxICAgKGhleCkJCUZ1c2lvbiBNdWx0aVN5c3RlbXMgZGJhIEZ1c2lvbi1pbwotMDAyNDcxICAgICAoYmFzZSAxNikJCUZ1c2lvbiBNdWx0aVN5c3RlbXMgZGJhIEZ1c2lvbi1pbwotCQkJCTYzNTAgUy4gMzAwMCBFLiwgNnRoIGZsb29yCi0JCQkJU2FsdCBsYWtlIENpdHkgVVQgODQxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTcyICAgKGhleCkJCVJlRHJpdmVuIFBvd2VyIEluYy4KLTAwMjQ3MiAgICAgKGJhc2UgMTYpCQlSZURyaXZlbiBQb3dlciBJbmMuCi0JCQkJMjRBIEJhdGggUmQuCi0JCQkJSXJvcXVvaXMgT250YXJpbyBLMEUgMUswCi0JCQkJQ0FOQURBCi0KLTAwLTI0LTczICAgKGhleCkJCTNDb20gRXVyb3BlIEx0ZAotMDAyNDczICAgICAoYmFzZSAxNikJCTNDb20gRXVyb3BlIEx0ZAotCQkJCVBlb3BsZSBCdWlsZGluZyAyCi0JCQkJTWF5bGFuZHMgQXZlbnVlCi0JCQkJSGVtZWwgSGVtcHN0ZWFkIEhlcnRzLiBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjQtNzQgICAoaGV4KQkJQXV0cm9uaWNhIEZpcmUgQW5kIFNlY3VyaXJ0eQotMDAyNDc0ICAgICAoYmFzZSAxNikJCUF1dHJvbmljYSBGaXJlIEFuZCBTZWN1cmlydHkKLQkJCQlIYWFrb24gVklJJ3MgZy40Ci0JCQkJVHJvbmRoZWltIE4tNzQ4MwotCQkJCU5PUldBWQotCi0wMC0yNC03NSAgIChoZXgpCQlDb21wYXNzIFN5c3RlbShFbWJlZGRlZCBEZXB0LikKLTAwMjQ3NSAgICAgKGJhc2UgMTYpCQlDb21wYXNzIFN5c3RlbShFbWJlZGRlZCBEZXB0LikKLQkJCQkxNDAzIEFDRSBUZWNobm9Ub3dlciA4dGgKLQkJCQkxOTEtNywgR3Vyby1kb25nLCBHdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi0wNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtNzYgICAoaGV4KQkJVEFQLnR2Ci0wMDI0NzYgICAgIChiYXNlIDE2KQkJVEFQLnR2Ci0JCQkJMTZ3MzYxIFNvdXRoIEZyb250YWdlIFJvYWQKLQkJCQlTdWl0ZSAxMjgKLQkJCQlCdXJyIFJpZGdlIElMIDYwNTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC03NyAgIChoZXgpCQlUaWJibyBUZWNobm9sb2d5Ci0wMDI0NzcgICAgIChiYXNlIDE2KQkJVGliYm8gVGVjaG5vbG9neQotCQkJCTlGLTMsIE5vIDMxLCBMYW5lIDE2OSwgS2FuZy1OaW5nIFN0LiwKLQkJCQlIc2ktQ2hpaCBUYWlwZWkgSHNpZW4gMjIxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC03OCAgIChoZXgpCQlNYWcgVGVjaCBFbGVjdHJvbmljcyBDbyBMaW1pdGVkCi0wMDI0NzggICAgIChiYXNlIDE2KQkJTWFnIFRlY2ggRWxlY3Ryb25pY3MgQ28gTGltaXRlZAotCQkJCUZsYXQgLyBSb29tIFQ3OCBHT0YgQmFuZ2tvayBCdWlsZGluZwotCQkJCTE4IEJvbmhhbSBTdHJhbmQgV2VzdAotCQkJCVNoZXVuZyBXYW4gSEsgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTI0LTc5ICAgKGhleCkJCU9wdGVjIERpc3BsYXlzLCBJbmMuCi0wMDI0NzkgICAgIChiYXNlIDE2KQkJT3B0ZWMgRGlzcGxheXMsIEluYy4KLQkJCQk1MjggUy4gNnRoIEF2ZW51ZQotCQkJCUNpdHkgb2YgSW5kdXN0cnkgQ2FsaWZvcm5pYSA5MTc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtN0EgICAoaGV4KQkJRlUgWUkgQ0hFTkcgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjQ3QSAgICAgKGJhc2UgMTYpCQlGVSBZSSBDSEVORyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTEzRiwgTm8uIDEwNS0xLCBKaWxpbiBSZC4sIEx1anUgU2hpYW5nLAotCQkJCVRhb3l1YW4gIDMzOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtN0IgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0wMDI0N0IgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC03QyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNDdDICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwVgotCQkJCURFTk1BUksKLQotMDAtMjQtN0QgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjQ3RCAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjQtN0UgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQKLTAwMjQ3RSAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZAotCQkJCTE0MSwgTEFORSAzNTEsU0VDLjEsICBUQUlQSU5HIFJELgotCQkJCVRTQU9UVUVOCi0JCQkJTkFOVE9VIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC03RiAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMjQ3RiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQkyMjIxIExha2VzaWRlIEJsdmQKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgyLTQzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTgwICAgKGhleCkJCU1ldGVvY29udHJvbCBHbWJICi0wMDI0ODAgICAgIChiYXNlIDE2KQkJTWV0ZW9jb250cm9sIEdtYkgKLQkJCQlTcGljaGVyZXJzdHJhc3NlIDQ4Ci0JCQkJQXVnc2J1cmcgQmF2YXJpYSA4NjE1MgotCQkJCUdFUk1BTlkKLQotMDAtMjQtODEgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwMjQ4MSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTIwNTU1IFN0YXRlIEhpZ2h3YXkgMjQ5Ci0JCQkJTVMwNDA4MDIKLQkJCQlIb3VzdG9uIFRYIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC04MiAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLTAwMjQ4MiAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUuCi0JCQkJU3VpdGUgMTAxCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC04MyAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotMDAyNDgzICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAtMzksS2FzYW4tZG9uZyxLdW1jaG9uLWt1LAotCQkJCVNlb3VsICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI0LTg0ICAgKGhleCkJCUJhbmcgYW5kIE9sdWZzZW4gTWVkaWNvbSBhL3MKLTAwMjQ4NCAgICAgKGJhc2UgMTYpCQlCYW5nIGFuZCBPbHVmc2VuIE1lZGljb20gYS9zCi0JCQkJR2ltc2luZ2x1bmR2ZWogMjAKLQkJCQlTdHJ1ZXIgREsgREs3NjAwCi0JCQkJREVOTUFSSwotCi0wMC0yNC04NSAgIChoZXgpCQlDb250ZVh0cmVhbSBMdGQKLTAwMjQ4NSAgICAgKGJhc2UgMTYpCQlDb250ZVh0cmVhbSBMdGQKLQkJCQk5NCBFbS1IYU1vc2hhdm90Ci0JCQkJUE9CIDMyNDYKLQkJCQlQZXRhY2gtVGlrdmEgIDQ5NTI3Ci0JCQkJSVNSQUVMCi0KLTAwLTI0LTg2ICAgKGhleCkJCURlc2lnbkFydCBOZXR3b3JrcwotMDAyNDg2ICAgICAoYmFzZSAxNikJCURlc2lnbkFydCBOZXR3b3JrcwotCQkJCTQgSGEnaGFyb3NoZXQgU3QKLQkJCQlQLk8uIEJveCAyMjc4Ci0JCQkJUmEnYW5hbmEgIDQzMTAxCi0JCQkJSVNSQUVMCi0KLTAwLTI0LTg3ICAgKGhleCkJCUJsYWNrYm9hcmQgSW5jLgotMDAyNDg3ICAgICAoYmFzZSAxNikJCUJsYWNrYm9hcmQgSW5jLgotCQkJCTIyNjAxIE5vcnRoIDE5dGggQXZlbnVlCi0JCQkJU3VpdGUgMjAwCi0JCQkJUGhvZW5peCBBWiA4NTAyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtODggICAoaGV4KQkJQ2VudHJlIEZvciBEZXZlbG9wbWVudCBPZiBUZWxlbWF0aWNzCi0wMDI0ODggICAgIChiYXNlIDE2KQkJQ2VudHJlIEZvciBEZXZlbG9wbWVudCBPZiBUZWxlbWF0aWNzCi0JCQkJQjAxLCBFbGVjdHJvbmljIENpdHksIFBoYXNlIDEKLQkJCQlIb3N1ciBSb2FkCi0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAxMDAKLQkJCQlJTkRJQQotCi0wMC0yNC04OSAgIChoZXgpCQlWb2RhZm9uZSBPbW5pdGVsIE4uVi4KLTAwMjQ4OSAgICAgKGJhc2UgMTYpCQlWb2RhZm9uZSBPbW5pdGVsIE4uVi4KLQkJCQlWaWEgSmVydmlzIDEzCi0JCQkJMTAwMTUgSXZyZWEgVG9yaW5vCi0JCQkJSVRBTFkKLQotMDAtMjQtOEEgICAoaGV4KQkJS2FnYSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTAwMjQ4QSAgICAgKGJhc2UgMTYpCQlLYWdhIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCUhvbmdvIDItMi05Ci0JCQkJQnVua3lvLWt1Ci0JCQkJVG9reW8gMTEzLTg1MDMKLQkJCQlKQVBBTgotCi0wMC0yNC04QiAgIChoZXgpCQlIWUJVUyBDTy4sIExURC4KLTAwMjQ4QiAgICAgKGJhc2UgMTYpCQlIWUJVUyBDTy4sIExURC4KLQkJCQlSbSMgNzAxLCBEYWVydW5nIFBvc3QgVG93ZXIgMXN0Ci0JCQkJMjEyLTgsIEd1cm8tM2RvbmcsIEd1cm8tZ3UKLQkJCQlTRU9VTCAgMTUyLTc5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNC04QyAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTAwMjQ4QyAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91LAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNC04RCAgIChoZXgpCQlTb255IENvbXB1dGVyIEVudGVydGFpbm1lbnQgSW5jLgotMDAyNDhEICAgICAoYmFzZSAxNikJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBJbmMuCi0JCQkJMi02LTIxIE1pbmFtaS1Bb3lhbWEsCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNy0wMDYyCi0JCQkJSkFQQU4KLQotMDAtMjQtOEUgICAoaGV4KQkJSW5mb3dhcmUgWlJ0LgotMDAyNDhFICAgICAoYmFzZSAxNikJCUluZm93YXJlIFpSdC4KLQkJCQlIdXNlZyB1LiAxMC9hCi0JCQkJQnVkYXBlc3QgIDEyMjMKLQkJCQlIVU5HQVJZCi0KLTAwLTI0LThGICAgKGhleCkJCURPLU1PTklYCi0wMDI0OEYgICAgIChiYXNlIDE2KQkJRE8tTU9OSVgKLQkJCQkjNTAxLCBLb3JlYW5hIEIvRAotCQkJCTctNSwgU3VuYWUtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDgyCi0JCQkJS09SRUEsIERFTU9DUkFUSUMgUEVPUExFJ1MgUkVQVUJMSQotCi0wMC0yNC05MCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMVEQKLTAwMjQ5MCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMVEQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtOTEgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMDAyNDkxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtOTIgICAoaGV4KQkJTW90b3JvbGEsIEJyb2FkYmFuZCBTb2x1dGlvbnMgR3JvdXAKLTAwMjQ5MiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSwgQnJvYWRiYW5kIFNvbHV0aW9ucyBHcm91cAotCQkJCTExMDEgTWFyaW5hIFZpbGxhZ2UgUGFya3dheQotCQkJCVN1aXRlIDIwMAotCQkJCUFsYW1lZGEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTkzICAgKGhleCkJCU1vdG9yb2xhLCBJbmMKLTAwMjQ5MyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSwgSW5jCi0JCQkJMTEwMSBNYXJpbmEgVmlsbGFnZSBQYXJrd2F5Ci0JCQkJU3VpdGUgMjAwCi0JCQkJQWxhbWVkYSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtOTQgICAoaGV4KQkJU2hlbnpoZW4gQmFveGluIFRlY2ggQ08uLCBMdGQuCi0wMDI0OTQgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQmFveGluIFRlY2ggQ08uLCBMdGQuCi0JCQkJNkYgSHVhbGUgQkxERy4sIFpob25naGFuZ2JlaSBSZC4sCi0JCQkJRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTAwLTI0LTk1ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDI0OTUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVS5TLiBIaWdod2F5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElsbGlub2lzIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC05NiAgIChoZXgpCQlHaW56aW5nZXIgZWxlY3Ryb25pYyBzeXN0ZW1zCi0wMDI0OTYgICAgIChiYXNlIDE2KQkJR2luemluZ2VyIGVsZWN0cm9uaWMgc3lzdGVtcwotCQkJCUdld2VyYmVnZWJpZXQgUGlyYXRoIDE2Ci0JCQkJV2VuZyBVcHBlciBBdXN0cmlhIDQ5NTIKLQkJCQlBVVNUUklBCi0KLTAwLTI0LTk3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjQ5NyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC05OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI0OTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtOTkgICAoaGV4KQkJQXF1aWxhIFRlY2hub2xvZ2llcwotMDAyNDk5ICAgICAoYmFzZSAxNikJCUFxdWlsYSBUZWNobm9sb2dpZXMKLQkJCQk4NDI5QSBXYXNoaW5ndG9uIFBsYWNlIE5FCi0JCQkJQWxidXF1ZXJxdWUgTk0gODcxMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LTlBICAgKGhleCkJCUJlaWppbmcgWmhvbmdjaHVhbmcgVGVsZWNvbW11bmljYXRpb24gVGVzdCBDby4sIEx0ZC4KLTAwMjQ5QSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFpob25nY2h1YW5nIFRlbGVjb21tdW5pY2F0aW9uIFRlc3QgQ28uLCBMdGQuCi0JCQkJMTItMTQsQmxvY2sgQyxCZWlqaW5nIEludGVybmF0aW9uYWwgQnVpbGRpbmcsIzE4LFpob25nIEd1YW4gQ3VuIE5hbiBSb2FkLAotCQkJCUhhaSBEaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgxCi0JCQkJQ0hJTkEKLQotMDAtMjQtOUIgICAoaGV4KQkJQWN0aW9uIFN0YXIgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLTAwMjQ5QiAgICAgKGJhc2UgMTYpCQlBY3Rpb24gU3RhciBFbnRlcnByaXNlIENvLiwgTHRkLgotCQkJCTEwRiwgTm8uMTU5LCBUYS1UdW5nIFJkLiwgU2VjLjIKLQkJCQlIc2ljaGloIFRhaXBlaSBIc2llbiAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LTlDICAgKGhleCkJCUJpbWVuZyBDb211bmljYXRpb24gU3lzdGVtIENvLiBMdGQKLTAwMjQ5QyAgICAgKGJhc2UgMTYpCQlCaW1lbmcgQ29tdW5pY2F0aW9uIFN5c3RlbSBDby4gTHRkCi0JCQkJTGV2ZWwgMTYvZiwgVG93ZXIgQixTaW5vdHJhbnMgUGxhemEsTm8uNDMsIFhpIFpoaSBNZW4gTm9ydGhlcm4gUm9hZCxIYWkgZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA0NAotCQkJCUNISU5BCi0KLTAwLTI0LTlEICAgKGhleCkJCU5FUyBUZWNobm9sb2d5IEluYy4KLTAwMjQ5RCAgICAgKGJhc2UgMTYpCQlORVMgVGVjaG5vbG9neSBJbmMuCi0JCQkJIzIwNSBBQ0UgVGVjaG5vdG93ZXIgMTAsIDQ3MC01IEdhc2FuLWRvbmcKLQkJCQlHZXVtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTc4OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNC05RSAgIChoZXgpCQlBREMtRWxla3Ryb25payBHbWJICi0wMDI0OUUgICAgIChiYXNlIDE2KQkJQURDLUVsZWt0cm9uaWsgR21iSAotCQkJCcOD4oCTc3RpbmdzdHJhw4PFuGUgMTNiCi0JCQkJSGFtbSBOUlcgRC01OTA2MwotCQkJCUdFUk1BTlkKLQotMDAtMjQtOUYgICAoaGV4KQkJUklNIFRlc3RpbmcgU2VydmljZXMKLTAwMjQ5RiAgICAgKGJhc2UgMTYpCQlSSU0gVGVzdGluZyBTZXJ2aWNlcwotCQkJCTQ0MCBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDVSOQotCQkJCUNBTkFEQQotCi0wMC0yNC1BMCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyNEEwICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQTEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjRBMSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUEyICAgKGhleCkJCUhvbmcgS29uZyBNaWRkbGV3YXJlIFRlY2hub2xvZ3kgTGltaXRlZAotMDAyNEEyICAgICAoYmFzZSAxNikJCUhvbmcgS29uZyBNaWRkbGV3YXJlIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJvb20gMTMxNSAsTGVpZ2h0b24gQ2VudHJlLDc3IExlaWdodG9uIFJvYWQKLQkJCQlDYXVzZXdheSBCYXkgIDg1MgotCQkJCUhPTkcgS09ORwotCi0wMC0yNC1BMyAgIChoZXgpCQlTb25pbSBUZWNobm9sb2dpZXMgSW5jCi0wMDI0QTMgICAgIChiYXNlIDE2KQkJU29uaW0gVGVjaG5vbG9naWVzIEluYwotCQkJCTE4NzUgUy5HcmFudCBTdHJlZXQKLQkJCQlTdGUjNjIwCi0JCQkJU2FubWF0ZW8gQ0EgOTQ0MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUE0ICAgKGhleCkJCVNpa2x1IENvbW11bmljYXRpb24KLTAwMjRBNCAgICAgKGJhc2UgMTYpCQlTaWtsdSBDb21tdW5pY2F0aW9uCi0JCQkJNyBTaG9oYW0gU3QuLCAsIDNyZCBGbG9vcgotCQkJCVBldGFoIFRpa3ZhICA0OTUxNwotCQkJCUlTUkFFTAotCi0wMC0yNC1BNSAgIChoZXgpCQlCdWZmYWxvIEluYy4KLTAwMjRBNSAgICAgKGJhc2UgMTYpCQlCdWZmYWxvIEluYy4KLQkJCQkxNSwgU2hpYmF0YSBIb25kb3JpIDQtY2hvbWUKLQkJCQlNaW5hbWkta3UsTmFnb3lhIEFpY2hpIFByZWYuIDQ1Ny04NTIwCi0JCQkJSkFQQU4KLQotMDAtMjQtQTYgICAoaGV4KQkJVEVMRVNUQVIgRElHSVRBTCBHbWJICi0wMDI0QTYgICAgIChiYXNlIDE2KQkJVEVMRVNUQVIgRElHSVRBTCBHbWJICi0JCQkJVnVsa2FuaMO2aGUgLyBCNDEwCi0JCQkJRHJlaXMgLSBCcsO8Y2sgIDU0NTUyCi0JCQkJR0VSTUFOWQotCi0wMC0yNC1BNyAgIChoZXgpCQlBZHZhbmNlZCBWaWRlbyBDb21tdW5pY2F0aW9ucyBJbmMuCi0wMDI0QTcgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgVmlkZW8gQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTYzMyBXIDV0aCBTdHJlZXQKLQkJCQk2ODAwCi0JCQkJTG9zIEFuZ2VsZXMgQ0EgOTAwMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUE4ICAgKGhleCkJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLTAwMjRBOCAgICAgKGJhc2UgMTYpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0JCQkJODAwMCBGb290aGlsbHMgQmx2ZAotCQkJCVJvc2V2aWxsZSBDYWxpZm9ybmlhIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1BOSAgIChoZXgpCQlBZyBMZWFkZXIgVGVjaG5vbG9neQotMDAyNEE5ICAgICAoYmFzZSAxNikJCUFnIExlYWRlciBUZWNobm9sb2d5Ci0JCQkJMjIwMiBTIFJpdmVyc2lkZSBEci4KLQkJCQlQTyBCb3ggMjM0OAotCQkJCUFtZXMgSUEgNTAwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUFBICAgKGhleCkJCUR5Y29yIFRlY2hub2xvZ2llcyBMdGQuCi0wMDI0QUEgICAgIChiYXNlIDE2KQkJRHljb3IgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQkxODUxIDk0IFN0cmVldAotCQkJCUVkbW9udG9uIEFsYmVydGEgVDZOIDFFNgotCQkJCUNBTkFEQQotCi0wMC0yNC1BQiAgIChoZXgpCQlBNyBFbmdpbmVlcmluZywgSW5jLgotMDAyNEFCICAgICAoYmFzZSAxNikJCUE3IEVuZ2luZWVyaW5nLCBJbmMuCi0JCQkJMTIxMjcgS2lya2hhbSBSb2FkIFN1aXRlIDEwMQotCQkJCVBvd2F5IENBIDkyMDY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1BQyAgIChoZXgpCQlIYW5nemhvdSBEUHRlY2ggVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAyNEFDICAgICAoYmFzZSAxNikJCUhhbmd6aG91IERQdGVjaCBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJSHVhcm9uZyBTaGlkYWkgQmxkLiwgTk8uMzg4MCxKaWFuZy1OYW4gQXZlbnVlLCBCaW5qaWFuZyBEaXN0cmljdAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDA1MQotCQkJCUNISU5BCi0KLTAwLTI0LUFEICAgKGhleCkJCUFkb2xmIFRoaWVzIEdtYmggJiBDby4gS0cKLTAwMjRBRCAgICAgKGJhc2UgMTYpCQlBZG9sZiBUaGllcyBHbWJoICYgQ28uIEtHCi0JCQkJSGF1cHRzdHIuIDc2Ci0JCQkJR8O2dHRpbmdlbiAgMzcwODMKLQkJCQlHRVJNQU5ZCi0KLTAwLTI0LUFFICAgKGhleCkJCU1vcnBobwotMDAyNEFFICAgICAoYmFzZSAxNikJCU1vcnBobwotCQkJCTE4IGNoYXVzc2VlIEp1bGVzIENlc2FyCi0JCQkJT1NOWSAgOTU1MjAKLQkJCQlGUkFOQ0UKLQotMDAtMjQtQUYgICAoaGV4KQkJRWNob1N0YXIgVGVjaG5vbG9naWVzCi0wMDI0QUYgICAgIChiYXNlIDE2KQkJRWNob1N0YXIgVGVjaG5vbG9naWVzCi0JCQkJOTQgSW52ZXJuZXNzIENpcmNsZQotCQkJCUVuZ2xld29vZCBDTyA4MDExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQjAgICAoaGV4KQkJRVNBQiBBQgotMDAyNEIwICAgICAoYmFzZSAxNikJCUVTQUIgQUIKLQkJCQlCb3ggODAwNAotCQkJCUxpbmRob2xtc2FsbMOpbiA5Ci0JCQkJR290aGVuYnVyZyAgU0UtNDAyIDc3Ci0JCQkJU1dFREVOCi0KLTAwLTI0LUIxICAgKGhleCkJCUNvdWxvbWIgVGVjaG5vbG9naWVzCi0wMDI0QjEgICAgIChiYXNlIDE2KQkJQ291bG9tYiBUZWNobm9sb2dpZXMKLQkJCQkxNjkyIERlbGwgQXZlCi0JCQkJQ2FtcGJlbGwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUIyICAgKGhleCkJCU5ldGdlYXIKLTAwMjRCMiAgICAgKGJhc2UgMTYpCQlOZXRnZWFyCi0JCQkJMzUwIEVhc3QgUGx1bWVyaWEgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQjMgICAoaGV4KQkJR3JhZi1TeXRlY28gR21iSCAmIENvLiBLRwotMDAyNEIzICAgICAoYmFzZSAxNikJCUdyYWYtU3l0ZWNvIEdtYkggJiBDby4gS0cKLQkJCQlLYWlzZXJzdHIuIDE4Ci0JCQkJVHVuaW5nZW4gQmFkZW4tV8O8cnR0ZW1iZXJnIDc4NjA5Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC1CNCAgIChoZXgpCQlFU0NBVFJPTklDIEdtYkgKLTAwMjRCNCAgICAgKGJhc2UgMTYpCQlFU0NBVFJPTklDIEdtYkgKLQkJCQlXdWVyemJ1cmdlciBTdHIuIDgKLQkJCQlMYWF0emVuIExvd2VyIFNheG9ueSAzMDg4MAotCQkJCUdFUk1BTlkKLQotMDAtMjQtQjUgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDI0QjUgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJMjIyMSBMYWtlc2lkZSBCbHZkCi0JCQkJUmljaGFyZHNvbiBUWCA3NTA4Mi00Mzk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1CNiAgIChoZXgpCQlTZWFnYXRlIFRlY2hub2xvZ3kKLTAwMjRCNiAgICAgKGJhc2UgMTYpCQlTZWFnYXRlIFRlY2hub2xvZ3kKLQkJCQkxMjgwIERpc2MgRHJpdmUKLQkJCQlTaGFrb3BlZSBNTiA1NTM3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQjcgICAoaGV4KQkJR3JpZFBvaW50LCBJbmMuCi0wMDI0QjcgICAgIChiYXNlIDE2KQkJR3JpZFBvaW50LCBJbmMuCi0JCQkJMjgwMSBDbGFyZW5kb24gQmx2ZC4KLQkJCQlTdWl0ZSAxMDAKLQkJCQlBcmxpbmd0b24gVkEgMjIyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUI4ICAgKGhleCkJCWZyZWUgYWxsaWFuY2Ugc2RuIGJoZAotMDAyNEI4ICAgICAoYmFzZSAxNikJCWZyZWUgYWxsaWFuY2Ugc2RuIGJoZAotCQkJCUItMy0yIFBsYXphIERhbWFzCi0JCQkJU3JpIEhhcnRhbWFzCi0JCQkJS3VhbGEgTHVtcHVyIFdQIDUwNDgwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjQtQjkgICAoaGV4KQkJV3VoYW4gSGlnaGVhc3kgRWxlY3Ryb25pYyBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLkx0ZAotMDAyNEI5ICAgICAoYmFzZSAxNikJCVd1aGFuIEhpZ2hlYXN5IEVsZWN0cm9uaWMgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDby5MdGQKLQkJCQlCbGRnIEEyIE9wdGljcyBWYWxsZXkgU29mdHdhcmUgUGFyayxHdWFuc2hhbiAxc3QgUmQsCi0JCQkJV3VoYW4gSHViZWkgNDMwMDMzCi0JCQkJQ0hJTkEKLQotMDAtMjQtQkEgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTAwMjRCQSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVMgODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQkIgICAoaGV4KQkJQ0VOVFJBTCBDb3Jwb3JhdGlvbgotMDAyNEJCICAgICAoYmFzZSAxNikJCUNFTlRSQUwgQ29ycG9yYXRpb24KLQkJCQlOSVNTTyAxNyBCbGRnLjdGIDItMTQtMzAKLQkJCQlTaGlueW9rb2hhbWEgS291aG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMjQtQkMgICAoaGV4KQkJSHVSb2IgQ28uLEx0ZAotMDAyNEJDICAgICAoYmFzZSAxNikJCUh1Um9iIENvLixMdGQKLQkJCQkyMTIxLCBKZW9uZ3dhbmctRG9uZwotCQkJCVNpaGV1bmctU2kgR3llb25nZ2ktRG8gNDI5LTc5MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNC1CRCAgIChoZXgpCQlIYWluemwgSW5kdXN0cmllc3lzdGVtZSBHbWJICi0wMDI0QkQgICAgIChiYXNlIDE2KQkJSGFpbnpsIEluZHVzdHJpZXN5c3RlbWUgR21iSAotCQkJCUluZHVzdHJpZXplaWxlIDU2Ci0JCQkJUG9zdGZhY2ggMTAwCi0JCQkJTGlueiBVcHBlciBBdXN0cmlhIDQwMjEKLQkJCQlBVVNUUklBCi0KLTAwLTI0LUJFICAgKGhleCkJCVNvbnkgQ29ycG9yYXRpb24KLTAwMjRCRSAgICAgKGJhc2UgMTYpCQlTb255IENvcnBvcmF0aW9uCi0JCQkJR290ZW55YW1hIFRlYy4gNS0xLTEyCi0JCQkJS2l0YXNoaW5hZ2F3YQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTAwLTI0LUJGICAgKGhleCkJCUNJQVQKLTAwMjRCRiAgICAgKGJhc2UgMTYpCQlDSUFUCi0JCQkJMzAsIEF2ZW51ZSBKZWFuIEZhbGNvbm5pZXIKLQkJCQlDdWxveiAgMDEzNTAKLQkJCQlGUkFOQ0UKLQotMDAtMjQtQzAgICAoaGV4KQkJTlRJIENPTU9ETyBJTkMKLTAwMjRDMCAgICAgKGJhc2UgMTYpCQlOVEkgQ09NT0RPIElOQwotCQkJCVJtIzUwMiwgS2FuZ3lvbmcgQmxkZywgU3VuZ25hbS1kb25nCi0JCQkJQ2hldW5nd29uLWd1Ci0JCQkJU3VuZ25hbS1zaSBLeXVuZ2dpLWRvIDQ2Mi04MjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtQzEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjRDMSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCU5vLjExODcgQmluQW4gUm9hZCwgQmluamlhbmcgRGlzdHJpY3QsCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDUzCi0JCQkJQ0hJTkEKLQotMDAtMjQtQzIgICAoaGV4KQkJQXN1bW8gQ28uLEx0ZC4KLTAwMjRDMiAgICAgKGJhc2UgMTYpCQlBc3VtbyBDby4sTHRkLgotCQkJCU95YS1LaXRhIDEtMy0xCi0JCQkJRUJJTkEtQ0lUWSBLQU5BR0FXQS1QUkVGLiAyNDMtMDQxOQotCQkJCUpBUEFOCi0KLTAwLTI0LUMzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjRDMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1DNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI0QzQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQzUgICAoaGV4KQkJTWVyaWRpYW4gQXVkaW8gTGltaXRlZAotMDAyNEM1ICAgICAoYmFzZSAxNikJCU1lcmlkaWFuIEF1ZGlvIExpbWl0ZWQKLQkJCQkxMSBMYXRoYW0gUm9hZAotCQkJCUh1bnRpbmdkb24gQ2FtYnMgUEUyOSA2WUUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNC1DNiAgIChoZXgpCQlIYWdlciBFbGVjdHJvIFNBUwotMDAyNEM2ICAgICAoYmFzZSAxNikJCUhhZ2VyIEVsZWN0cm8gU0FTCi0JCQkJMTMyLCBib3VsZXZhcmQgZCdFdXJvcGUKLQkJCQlPYmVybmFpIEJhcy1SaGluIDY3MjE1Ci0JCQkJRlJBTkNFCi0KLTAwLTI0LUM3ICAgKGhleCkJCU1vYmlsYXJtIEx0ZAotMDAyNEM3ICAgICAoYmFzZSAxNikJCU1vYmlsYXJtIEx0ZAotCQkJCTc2OCBDYW5uaW5nIEhpZ2h3YXkKLQkJCQlBcHBsZWNyb3NzCi0JCQkJV2VzdGVybiBBdXN0cmFsaWEgNjE1MwotCQkJCUFVU1RSQUxJQQotCi0wMC0yNC1DOCAgIChoZXgpCQlCcm9hZGJhbmQgU29sdXRpb25zIEdyb3VwCi0wMDI0QzggICAgIChiYXNlIDE2KQkJQnJvYWRiYW5kIFNvbHV0aW9ucyBHcm91cAotCQkJCTExMDEgTWFyaW5hIFZpbGxhZ2UgUGFya3dheQotCQkJCUFsYW1lZGEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUM5ICAgKGhleCkJCUJyb2FkYmFuZCBTb2x1dGlvbnMgR3JvdXAKLTAwMjRDOSAgICAgKGJhc2UgMTYpCQlCcm9hZGJhbmQgU29sdXRpb25zIEdyb3VwCi0JCQkJMTEwMSBNYXJpbmEgVmlsbGFnZSBQYXJrd2F5Ci0JCQkJQWxhbWVkYSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQ0EgICAoaGV4KQkJVG9iaWkgVGVjaG5vbG9neSBBQgotMDAyNENBICAgICAoYmFzZSAxNikJCVRvYmlpIFRlY2hub2xvZ3kgQUIKLQkJCQlLYXJsc3JvdsOkZ2VuIDJECi0JCQkJRGFuZGVyeWQgIDE4MjUzCi0JCQkJU1dFREVOCi0KLTAwLTI0LUNCICAgKGhleCkJCUF1dG9uZXQgTW9iaWxlCi0wMDI0Q0IgICAgIChiYXNlIDE2KQkJQXV0b25ldCBNb2JpbGUKLQkJCQkyMjM1IE1lcmN1cnkgV2F5IFN0ZS4gMTQ1Ci0JCQkJU2FudGEgUm9zYSBDQSA5NTQwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtQ0MgICAoaGV4KQkJRmFzY2luYXRpb25zIFRveXMgYW5kIEdpZnRzLCBJbmMuCi0wMDI0Q0MgICAgIChiYXNlIDE2KQkJRmFzY2luYXRpb25zIFRveXMgYW5kIEdpZnRzLCBJbmMuCi0JCQkJMTkyMjQgRGVzIE1vaW5lcyBXYXkgUwotCQkJCVN0ZSAxMDAKLQkJCQlTZWF0dGxlIFdhc2hpbmd0b24gOTgxNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUNEICAgKGhleCkJCVdpbGxvdyBHYXJhZ2UsIEluYy4KLTAwMjRDRCAgICAgKGJhc2UgMTYpCQlXaWxsb3cgR2FyYWdlLCBJbmMuCi0JCQkJNjggV2lsbG93IFJkLgotCQkJCU1lbmxvIFBhcmsgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUNFICAgKGhleCkJCUV4ZWx0ZWNoIEluYwotMDAyNENFICAgICAoYmFzZSAxNikJCUV4ZWx0ZWNoIEluYwotCQkJCTczMTcgSmFjayBOZXdlbGwgQmx2ZCBOb3J0aAotCQkJCUZvcnQgV29ydGggVFggNzYxMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUNGICAgKGhleCkJCUluc2NhcGUgRGF0YSBDb3Jwb3JhdGlvbgotMDAyNENGICAgICAoYmFzZSAxNikJCUluc2NhcGUgRGF0YSBDb3Jwb3JhdGlvbgotCQkJCTE2MTEgU291dGggTWFpbiBTdHJlZXQKLQkJCQlNaWxwaXRhcyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtRDAgICAoaGV4KQkJU2hlbnpoZW4gU09HT09EIEluZHVzdHJ5IENPLixMVEQuCi0wMDI0RDAgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU09HT09EIEluZHVzdHJ5IENPLixMVEQuCi0JCQkJU09HT09EIFNjaWVuY2UgUGFyayxBdmlhdGlvbiBSb2FkLFhpWGlhbmcgVG93bixCYW8nYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmd6aG91IDUxODEwMgotCQkJCUNISU5BCi0KLTAwLTI0LUQxICAgKGhleCkJCVRob21zb24gSW5jLgotMDAyNEQxICAgICAoYmFzZSAxNikJCVRob21zb24gSW5jLgotCQkJCTEwMSBXZXN0IDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtRDIgICAoaGV4KQkJQXNrZXkgQ29tcHV0ZXIKLTAwMjREMiAgICAgKGJhc2UgMTYpCQlBc2tleSBDb21wdXRlcgotCQkJCTEwRixOTy4xMTksQ0hJRU5LQU5HIFJELENIVU5HLUhPLFRBSVBFSSwKLQkJCQlUQUlXQU4gVEFJUEVJIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjQtRDMgICAoaGV4KQkJUVVBTElDQSBJbmMuCi0wMDI0RDMgICAgIChiYXNlIDE2KQkJUVVBTElDQSBJbmMuCi0JCQkJNS0yOS0xNSxUb3lvLAotCQkJCUtvdG8ta3UsCi0JCQkJVG9reW8gIDEzNS0wMDE2Ci0JCQkJSkFQQU4KLQotMDAtMjQtRDQgICAoaGV4KQkJRlJFRUJPWCBTQQotMDAyNEQ0ICAgICAoYmFzZSAxNikJCUZSRUVCT1ggU0EKLQkJCQk4IHJ1ZSBkZSBsYSBWaWxsZSBsJ0V2ZXF1ZQotCQkJCVBBUklTIElkRiA3NTAwOAotCQkJCUZSQU5DRQotCi0wMC0yNC1ENSAgIChoZXgpCQlXaW53YXJkIEluZHVzdHJpYWwgTGltaXRlZAotMDAyNEQ1ICAgICAoYmFzZSAxNikJCVdpbndhcmQgSW5kdXN0cmlhbCBMaW1pdGVkCi0JCQkJUm0uNywgUCBGbG9vciwgVG93ZXIgQSwKLQkJCQlIdW5nIEhvbSBDb21tZXJjaWFsIENlbnRyZSwKLQkJCQlIb25nS29uZyAgODUyCi0JCQkJQ0hJTkEKLQotMDAtMjQtRDYgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDI0RDYgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yNC1ENyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjRENyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTI0LUQ4ICAgKGhleCkJCUlsU3VuZyBQcmVjaXNpb24KLTAwMjREOCAgICAgKGJhc2UgMTYpCQlJbFN1bmcgUHJlY2lzaW9uCi0JCQkJMTgyLTIsIEplZ2ktcmksIEplb25nbmFtLW15ZW9uCi0JCQkJSHdhbnNlb25nLXNpIEd5ZW9uZ2dpLWRvIDQ0NS05NjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtRDkgICAoaGV4KQkJQklDT00sIEluYy4KLTAwMjREOSAgICAgKGJhc2UgMTYpCQlCSUNPTSwgSW5jLgotCQkJCTc1NSBNYWluIFN0cmVldAotCQkJCUJ1aWxkaW5nIDMKLQkJCQlNb25yb2UgQ1QgMDY0NjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LURBICAgKGhleCkJCUlubm92YXIgU3lzdGVtcyBMaW1pdGVkCi0wMDI0REEgICAgIChiYXNlIDE2KQkJSW5ub3ZhciBTeXN0ZW1zIExpbWl0ZWQKLQkJCQkxMjE1NSBDb21taXNzaW9uZXIgRHJpdmUKLQkJCQlQTyBCb3ggNjY4Ci0JCQkJTm9ydGggSmFja3NvbiBPaGlvIDQ0NDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1EQiAgIChoZXgpCQlBbGNvaG9sIE1vbml0b3JpbmcgU3lzdGVtcwotMDAyNERCICAgICAoYmFzZSAxNikJCUFsY29ob2wgTW9uaXRvcmluZyBTeXN0ZW1zCi0JCQkJMTI0MSBXLiBNaW5lcmFsIEF2ZW51ZQotCQkJCVN1aXRlIDIwMAotCQkJCUxpdHRsZXRvbiBDTyA4MDEyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtREMgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAyNERDICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1ERCAgIChoZXgpCQlDZW50cmFrLCBJbmMuCi0wMDI0REQgICAgIChiYXNlIDE2KQkJQ2VudHJhaywgSW5jLgotCQkJCTIwNyBQZW5ucyBUcmFpbAotCQkJCU5ld3Rvd24gUEEgMTg5NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LURFICAgKGhleCkJCUdMT0JBTCBUZWNobm9sb2d5IEluYy4KLTAwMjRERSAgICAgKGJhc2UgMTYpCQlHTE9CQUwgVGVjaG5vbG9neSBJbmMuCi0JCQkJTm8uMTY4LFNoYW5zaGFuIFJkLiwgV2FuZ2NodW4gSW5kdXN0cmlhbCBQYXJrLAotCQkJCU5pbmdibyAgMzE1MTc2Ci0JCQkJQ0hJTkEKLQotMDAtMjQtREYgICAoaGV4KQkJRGlnaXRhbGJveCBFdXJvcGUgR21iSAotMDAyNERGICAgICAoYmFzZSAxNikJCURpZ2l0YWxib3ggRXVyb3BlIEdtYkgKLQkJCQlTYW5kc3RyYcODxbhlIDY1Ci0JCQkJUmF0aW5nZW4gIDQwODc4Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC1FMCAgIChoZXgpCQlEUyBUZWNoLCBMTEMKLTAwMjRFMCAgICAgKGJhc2UgMTYpCQlEUyBUZWNoLCBMTEMKLQkJCQkyMjEwIEh1dHRvbiBEcml2ZQotCQkJCVN1aXRlIDEwMAotCQkJCUNhcnJvbGx0b24gVFggNzUwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUUxICAgKGhleCkJCUNvbnZleSBDb21wdXRlciBDb3JwLgotMDAyNEUxICAgICAoYmFzZSAxNikJCUNvbnZleSBDb21wdXRlciBDb3JwLgotCQkJCTEzMDIgRS4gQ29sbGlucyBCbHZkLgotCQkJCVJpY2hhcmRzb24gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUUyICAgKGhleCkJCUhBU0VHQVdBIEVMRUNUUklDIENPLixMVEQuCi0wMDI0RTIgICAgIChiYXNlIDE2KQkJSEFTRUdBV0EgRUxFQ1RSSUMgQ08uLExURC4KLQkJCQk1LTYtMjAgU0hJT0UKLQkJCQlMSUdIVE5JTkcgVEVDSE5PTE9HWSBDRU5URVIKLQkJCQlBTUFHQVNBS0kgSFlPR08gNjYxLTA5NzYKLQkJCQlKQVBBTgotCi0wMC0yNC1FMyAgIChoZXgpCQlDQU8gR3JvdXAKLTAwMjRFMyAgICAgKGJhc2UgMTYpCQlDQU8gR3JvdXAKLQkJCQk0NjI4IFdlc3QgU2t5aGF3ayBEcml2ZQotCQkJCVdlc3QgSm9yZGFuIFVUIDg0MDg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1FNCAgIChoZXgpCQlXaXRoaW5ncwotMDAyNEU0ICAgICAoYmFzZSAxNikJCVdpdGhpbmdzCi0JCQkJMzdiaXMgcnVlIGR1IEdlbmVyYWwgTGVjbGVyYwotCQkJCUlzc3kgbGVzIE1vdWxpbmVhdXggIDkyNDQyCi0JCQkJRlJBTkNFCi0KLTAwLTI0LUU1ICAgKGhleCkJCVNlZXIgVGVjaG5vbG9neSwgSW5jCi0wMDI0RTUgICAgIChiYXNlIDE2KQkJU2VlciBUZWNobm9sb2d5LCBJbmMKLQkJCQkyNjgxIFBhcmxleXMgV2F5Ci0JCQkJU3VpdGUgMjAxCi0JCQkJU2FsdCBMYWtlIENpdHkgVXRhaCA4NDEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjQtRTYgICAoaGV4KQkJSW4gTW90aW9uIFRlY2hub2xvZ3kgSW5jLgotMDAyNEU2ICAgICAoYmFzZSAxNikJCUluIE1vdGlvbiBUZWNobm9sb2d5IEluYy4KLQkJCQkjMzUwLCA2MjUgQWduZXMgU3RyZWV0Ci0JCQkJTmV3IFdlc3RtaW5zdGVyIEJDIFYzTSA1WTQKLQkJCQlDQU5BREEKLQotMDAtMjQtRTcgICAoaGV4KQkJUGxhc3RlciBOZXR3b3JrcwotMDAyNEU3ICAgICAoYmFzZSAxNikJCVBsYXN0ZXIgTmV0d29ya3MKLQkJCQk5MzUgSGFtaWx0b24gQXZlbnVlCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNS0xNDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1FOCAgIChoZXgpCQlEZWxsIEluYy4KLTAwMjRFOCAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUU5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuLCBTdG9yYWdlIFN5c3RlbSBEaXZpc2lvbgotMDAyNEU5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuLCBTdG9yYWdlIFN5c3RlbSBEaXZpc2lvbgotCQkJCTQxNiwgTWFldGFuIDNEb25nLCBZZW9uZ3RvbmctR3UKLQkJCQlTdXdvbiBDaXR5IEdleW9uZ2dpIERvIDQ0My03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtRUEgICAoaGV4KQkJaXJpcy1HbWJIIGluZnJhcmVkICYgaW50ZWxsaWdlbnQgc2Vuc29ycwotMDAyNEVBICAgICAoYmFzZSAxNikJCWlyaXMtR21iSCBpbmZyYXJlZCAmIGludGVsbGlnZW50IHNlbnNvcnMKLQkJCQlPc3RlbmRzdHJhc3NlIDEtMTQKLQkJCQlCZXJsaW4gIDEyNDU5Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC1FQiAgIChoZXgpCQlDbGVhclBhdGggTmV0d29ya3MsIEluYy4KLTAwMjRFQiAgICAgKGJhc2UgMTYpCQlDbGVhclBhdGggTmV0d29ya3MsIEluYy4KLQkJCQkxOTQwIEUuIE1hcmlwb3NhIEF2ZS4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlFbCBTZWd1bmRvIENBIDkwMjQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1FQyAgIChoZXgpCQlVbml0ZWQgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkLgotMDAyNEVDICAgICAoYmFzZSAxNikJCVVuaXRlZCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJNS9GLDl0aCBCdWlsZGluZyxTb2Z0d2FyZSBQYXJrLDJuZCBLZWppLXpob25nIFJvYWQsSGlnaC1UZWNoIEluZHVzdHJpYWwgUGFyawotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNC1FRCAgIChoZXgpCQlZVCBFbGVjLiBDbywuTHRkLgotMDAyNEVEICAgICAoYmFzZSAxNikJCVlUIEVsZWMuIENvLC5MdGQuCi0JCQkJQmxvY2sgQiwyIEZsb29yICxCYW8gWWluZyBJbmR1c3RyaWFsIERpc3RyaWN0LAotCQkJCUxvbmcgR2FuZyBMb25nWGksCi0JCQkJV3UgTGlhbiBMdSBTaGVuemhlbiA1MTgxMTYKLQkJCQlDSElOQQotCi0wMC0yNC1FRSAgIChoZXgpCQlXeW5tYXggSW5jLgotMDAyNEVFICAgICAoYmFzZSAxNikJCVd5bm1heCBJbmMuCi0JCQkJMThGLiwgTm8uIDc1LCBTZWMuIDEsIFhpblRhaSA1dGggIFJkLiwKLQkJCQlYaXpoaSAgQ2l0eSwgVGFpcGVpIENvdW50eSAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LUVGICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDI0RUYgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCAgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjQtRjAgICAoaGV4KQkJU2Vhbm9kZXMKLTAwMjRGMCAgICAgKGJhc2UgMTYpCQlTZWFub2RlcwotCQkJCUJhdGltZW50IFBsYXRvbgotCQkJCTI1IEJ2ZCBWaWN0b3IgSHVnbwotCQkJCUNvbG9taWVycyAgMzE3NzAKLQkJCQlGUkFOQ0UKLQotMDAtMjQtRjEgICAoaGV4KQkJU2hlbnpoZW4gRmFuaGFpIFNhbmppYW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotMDAyNEYxICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEZhbmhhaSBTYW5qaWFuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQkzRsKjwqxHdWFuZ2NhaSBYaW50aWFuZGkgQnVpbGRpbmcsTmFuc2hhbiBSZCxOYW5zaGFuLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTQKLQkJCQlDSElOQQotCi0wMC0yNC1GMiAgIChoZXgpCQlVbmlwaG9uZSBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLTAwMjRGMiAgICAgKGJhc2UgMTYpCQlVbmlwaG9uZSBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQlOby4gMjUsIENodS1LdW5nIDNyZCBMYW5lLCBDaHUtSG91IFRzdW5nLCBKZW4tV3UgSHNpYW5nLAotCQkJCUthb2hzaXVuZyBIc2llbiAgODE0NDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI0LUYzICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyNEYzICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPIEtZT1RPIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjQtRjQgICAoaGV4KQkJS2FtaW5hcmlvIFRlY2hub2xvZ2llcyBMdGQuCi0wMDI0RjQgICAgIChiYXNlIDE2KQkJS2FtaW5hcmlvIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJWWF0YW0gSW5kdXN0cmlhbCBQYXJrCi0JCQkJQ1BDIEJ1aWxkaW5nCi0JCQkJWW9rbmVhbSBJU1JBRUwgMjA2OTIKLQkJCQlJU1JBRUwKLQotMDAtMjQtRjUgICAoaGV4KQkJTkRTIFN1cmdpY2FsIEltYWdpbmcKLTAwMjRGNSAgICAgKGJhc2UgMTYpCQlORFMgU3VyZ2ljYWwgSW1hZ2luZwotCQkJCTU3NTAgSGVsbHllciBBdmUuCi0JCQkJU2FuIEpvc2UgQ0EuIDk1MTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNC1GNiAgIChoZXgpCQlNSVlPU0hJIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OCi0wMDI0RjYgICAgIChiYXNlIDE2KQkJTUlZT1NISSBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotCQkJCTMtMTMtMjEgS1VTSElSTwotCQkJCUtBV0FOSVNISS1DSVRZIEhZT0dPLVBSRUYuIDY2Ni0wMDI0Ci0JCQkJSkFQQU4KLQotMDAtMjQtRjcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNEY3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUY4ICAgKGhleCkJCVRlY2huaWNhbCBTb2x1dGlvbnMgQ29tcGFueSBMdGQuCi0wMDI0RjggICAgIChiYXNlIDE2KQkJVGVjaG5pY2FsIFNvbHV0aW9ucyBDb21wYW55IEx0ZC4KLQkJCQlCb3ggMzE3NTAKLQkJCQlXaGl0ZWhvcnNlIFl1a29uIFkxQSA2TDMKLQkJCQlDQU5BREEKLQotMDAtMjQtRjkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNEY5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI0LUZBICAgKGhleCkJCUhpbGdlciB1LiBLZXJuIEdNQkgKLTAwMjRGQSAgICAgKGJhc2UgMTYpCQlIaWxnZXIgdS4gS2VybiBHTUJICi0JCQkJS2FlZmVydGFsZXIgU3RyYXNzZSAyNTMtMjU1Ci0JCQkJTWFubmhlaW0gQmFkZW4tV3VlcnR0ZW1iZXJnIDY4MTY3Ci0JCQkJR0VSTUFOWQotCi0wMC0yNC1GQiAgIChoZXgpCQlQUklWQVRFCi0wMDI0RkIgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTI0LUZDICAgKGhleCkJCVF1b1BpbiBDby4sIEx0ZC4KLTAwMjRGQyAgICAgKGJhc2UgMTYpCQlRdW9QaW4gQ28uLCBMdGQuCi0JCQkJIzEwOSwgUiZEIENlbnRlciBmb3IgQWR2YW5jZWQgVGVjaG5vbG9neSA2OCBZYXRhcC1kb25nIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbSBLeXVuZ2tpLWRvIDQ2My04MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjQtRkQgICAoaGV4KQkJUHJvc2lsaWVudCBUZWNobm9sb2dpZXMgQUIKLTAwMjRGRCAgICAgKGJhc2UgMTYpCQlQcm9zaWxpZW50IFRlY2hub2xvZ2llcyBBQgotCQkJCcOD4oCmcnN0YcODwqRuZ3N2w4PCpGdlbiAyNSAoM3JkIGZsb29yKSwgKEJveCA0NzIzMSkKLQkJCQlTdG9ja2hvbG0gIFNFLTEwMDc0Ci0JCQkJU1dFREVOCi0KLTAwLTI0LUZFICAgKGhleCkJCUFWTSBHbWJICi0wMDI0RkUgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotMDAtMjQtRkYgICAoaGV4KQkJUUxvZ2ljIENvcnBvcmF0aW9uCi0wMDI0RkYgICAgIChiYXNlIDE2KQkJUUxvZ2ljIENvcnBvcmF0aW9uCi0JCQkJMjY2NTAgQWxpc28gVmllam8gUGFya3dheQotCQkJCUFsaXNvIFZpZWpvIENBIDkyNjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0wMCAgIChoZXgpCQlBcHBsZSwgSW5jCi0wMDI1MDAgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMDEgICAoaGV4KQkJSlNDICJTdXBlcnRlbCIKLTAwMjUwMSAgICAgKGJhc2UgMTYpCQlKU0MgIlN1cGVydGVsIgotCQkJCTM4QSBQZXRyb2dyYWRza2F5YSBlbWIuCi0JCQkJU3QuUGV0ZXJzYnVyZyAgMTk3MTAxCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTI1LTAyICAgKGhleCkJCU5hdHVyYWxQb2ludAotMDAyNTAyICAgICAoYmFzZSAxNikJCU5hdHVyYWxQb2ludAotCQkJCVBPIEJveCAyMzE3Ci0JCQkJQ29ydmFsbGlzIE9SIDk3MzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0wMyAgIChoZXgpCQlJQk0gQ29ycAotMDAyNTAzICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMjA1MSBNaXNzaW9uIENvbGxlZ2UgQmx2ZCAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMDQgICAoaGV4KQkJVmFsaWFudCBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0wMDI1MDQgICAgIChiYXNlIDE2KQkJVmFsaWFudCBDb21tdW5pY2F0aW9ucyBMaW1pdGVkCi0JCQkJNzEtMSBTaGl2YWppIE1hcmcKLQkJCQlOZXcgRGVsaGkgRGVsaGkgMTEwMDE1Ci0JCQkJSU5ESUEKLQotMDAtMjUtMDUgICAoaGV4KQkJZWtzIEVuZ2VsIEdtYkggJiBDby4gS0cKLTAwMjUwNSAgICAgKGJhc2UgMTYpCQlla3MgRW5nZWwgR21iSCAmIENvLiBLRwotCQkJCVNjaHVldHplbnN0cmFzc2UgMgotCQkJCVdlbmRlbi1IaWxsbWlja2UgTlJXIDU3NDgyCi0JCQkJR0VSTUFOWQotCi0wMC0yNS0wNiAgIChoZXgpCQlBLkkuIEFOVElUQUNDSEVHR0lPIElUQUxJQSBTUkwKLTAwMjUwNiAgICAgKGJhc2UgMTYpCQlBLkkuIEFOVElUQUNDSEVHR0lPIElUQUxJQSBTUkwKLQkJCQlWSUNPTE8gREVMTEUgREFNRSA0Ci0JCQkJQk9MT0dOQSAgNDAxMjQKLQkJCQlJVEFMWQotCi0wMC0yNS0wNyAgIChoZXgpCQlBU1RBSyBJbmMuCi0wMDI1MDcgICAgIChiYXNlIDE2KQkJQVNUQUsgSW5jLgotCQkJCTE5MTEgSGFydG9nIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTA4ICAgKGhleCkJCU1hcXVldCBDYXJkaW9wdWxtb25hcnkgQUcKLTAwMjUwOCAgICAgKGJhc2UgMTYpCQlNYXF1ZXQgQ2FyZGlvcHVsbW9uYXJ5IEFHCi0JCQkJSGVjaGluZ2VyIFN0cmFzc2UgMzgKLQkJCQlIaXJybGluZ2VuICA3MjE0NQotCQkJCUdFUk1BTlkKLQotMDAtMjUtMDkgICAoaGV4KQkJU0hBUkVUUk9OSUMgR3JvdXAgTFRECi0wMDI1MDkgICAgIChiYXNlIDE2KQkJU0hBUkVUUk9OSUMgR3JvdXAgTFRECi0JCQkJU2hhSmluZyxCYW8nYW4gWm9uZSwKLQkJCQlTaGVuWmhlbiBHdWFuZ2RvbmcgNTE4MTA0Ci0JCQkJQ0hJTkEKLQotMDAtMjUtMEEgICAoaGV4KQkJU2VjdXJpdHkgRXhwZXJ0IENvLiBMdGQKLTAwMjUwQSAgICAgKGJhc2UgMTYpCQlTZWN1cml0eSBFeHBlcnQgQ28uIEx0ZAotCQkJCThGLTMsIE5vLjIsIEppYW4gOHRoIFJkLiwKLQkJCQlKaG9uZ2hlIFRhaXBlaSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTBCICAgKGhleCkJCUNFTlRST0ZBQ1RPUiAgSU5DCi0wMDI1MEIgICAgIChiYXNlIDE2KQkJQ0VOVFJPRkFDVE9SICBJTkMKLQkJCQlSb2FkIFRvd24sIFRvcnRvbGEsIFAuTy5Cb3ggMzE2MSwKLQkJCQlUb3J0b2xhICAxOTQyOTUKLQkJCQlWSVJHSU4gSVNMQU5EUywgQlJJVElTSAotCi0wMC0yNS0wQyAgIChoZXgpCQlFbmVydHJhYwotMDAyNTBDICAgICAoYmFzZSAxNikJCUVuZXJ0cmFjCi0JCQkJOTQgUml2ZXIgUmQKLQkJCQlTdWl0ZSAxMDAKLQkJCQlIdWRzb24gTkggMDMwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTBEICAgKGhleCkJCUdaVCBUZWxrb20tVGVsbW9yIHNwLiB6IG8uby4KLTAwMjUwRCAgICAgKGJhc2UgMTYpCQlHWlQgVGVsa29tLVRlbG1vciBzcC4geiBvLm8uCi0JCQkJTWlja2lld2ljemEgNS83Ci0JCQkJR2RhbnNrIHBvbW9yc2tpZSA4MC00MjUKLQkJCQlQT0xBTkQKLQotMDAtMjUtMEUgICAoaGV4KQkJZ3QgZ2VybWFuIHRlbGVtYXRpY3MgZ21iaAotMDAyNTBFICAgICAoYmFzZSAxNikJCWd0IGdlcm1hbiB0ZWxlbWF0aWNzIGdtYmgKLQkJCQlSYW5rZXN0cmFzc2UgMjYKLQkJCQlCZXJsaW4gIEQtMTA3ODkKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTBGICAgKGhleCkJCU9uLVJhbXAgV2lyZWxlc3MsIEluYy4KLTAwMjUwRiAgICAgKGJhc2UgMTYpCQlPbi1SYW1wIFdpcmVsZXNzLCBJbmMuCi0JCQkJMTY4ODUgV2VzdCBCZXJuYXJkbyBEcml2ZQotCQkJCVN1aXRlIDI1NQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMTAgICAoaGV4KQkJUGljby1UZXNsYSBNYWduZXRpYyBUaGVyYXBpZXMKLTAwMjUxMCAgICAgKGJhc2UgMTYpCQlQaWNvLVRlc2xhIE1hZ25ldGljIFRoZXJhcGllcwotCQkJCTc4NTIgU291dGggRWxhdGkKLQkJCQkjMjAyCi0JCQkJTGl0dGxldG9uIENPIDgwMTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0xMSAgIChoZXgpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTSBDTy4sIExURC4KLTAwMjUxMSAgICAgKGJhc2UgMTYpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTSBDTy4sIExURC4KLQkJCQlOTy4gMjM5LCBTZWMuIDIsIFRpIERpbmcgQmx2ZC4KLQkJCQlUYWlwZWkgVGFpd2FuIDExNDkzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS0xMiAgIChoZXgpCQlaVEUgQ29ycG9yYXRpb24KLTAwMjUxMiAgICAgKGJhc2UgMTYpCQlaVEUgQ29ycG9yYXRpb24KLQkJCQkxMkYsIFImRCBCdWlsZGluZywgWnRlLCBIaS1UZWNoIEluZHVzdHJpYWwgUGFyawotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNS0xMyAgIChoZXgpCQlDWFAgRElHSVRBTCBCVgotMDAyNTEzICAgICAoYmFzZSAxNikJCUNYUCBESUdJVEFMIEJWCi0JCQkJRGUgUmV1bHZlciA5N0EKLQkJCQlFbnNjaGVkZSAgNzU0NFJUCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjUtMTQgICAoaGV4KQkJUEMgV29ydGggSW50J2wgQ28uLCBMdGQuCi0wMDI1MTQgICAgIChiYXNlIDE2KQkJUEMgV29ydGggSW50J2wgQ28uLCBMdGQuCi0JCQkJMThGLCBOby4xMDAsIEhzaW4tVGFpLVd1IFJkLiwgU2VjLiAxLAotCQkJCUhzaS1DaGloLCBUYWlwZWkgMjIxMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTE1ICAgKGhleCkJCVNGUgotMDAyNTE1ICAgICAoYmFzZSAxNikJCVNGUgotCQkJCTQyIFF1YWkgZHUgcG9pbnQgZHUgam91cgotCQkJCUJvdWxvZ25lIGJpbGxhbmNvdXJ0IC4gOTI2NTkKLQkJCQlGUkFOQ0UKLQotMDAtMjUtMTYgICAoaGV4KQkJSW50ZWdyYXRlZCBEZXNpZ24gVG9vbHMsIEluYy4KLTAwMjUxNiAgICAgKGJhc2UgMTYpCQlJbnRlZ3JhdGVkIERlc2lnbiBUb29scywgSW5jLgotCQkJCTEyMDIgRSBQYXJrIEF2ZW51ZQotCQkJCVRhbGxhaGFzc2VlIEZMIDMyMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0xNyAgIChoZXgpCQlWZW5udGlzLCBMTEMKLTAwMjUxNyAgICAgKGJhc2UgMTYpCQlWZW5udGlzLCBMTEMKLQkJCQkxMTMwMSBKYW1lcyBTdHJlZXQKLQkJCQlIb2xsYW5kIE1JIDQ5NDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0xOCAgIChoZXgpCQlQb3dlciBQTFVTIENvbW11bmljYXRpb25zIEFHCi0wMDI1MTggICAgIChiYXNlIDE2KQkJUG93ZXIgUExVUyBDb21tdW5pY2F0aW9ucyBBRwotCQkJCUFtIEV4ZXJ6aWVycGxhdHogMgotCQkJCU1hbm5oZWltIEJhZGVuIFd1ZXJ0dGVtYmVyZyA2ODE2NwotCQkJCUdFUk1BTlkKLQotMDAtMjUtMTkgICAoaGV4KQkJVmlhYXMgSW5jCi0wMDI1MTkgICAgIChiYXNlIDE2KQkJVmlhYXMgSW5jCi0JCQkJMzE3NSBTb3V0aCBXaW5jaGVzdGVyIEJsdmQKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMUEgICAoaGV4KQkJUHNpYmVyIERhdGEgU3lzdGVtcyBJbmMuCi0wMDI1MUEgICAgIChiYXNlIDE2KQkJUHNpYmVyIERhdGEgU3lzdGVtcyBJbmMuCi0JCQkJNzA3NS1LIE1pc3Npb24gR29yZ2UgUmQKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTFCICAgKGhleCkJCVBoaWxpcHMgQ2FyZVNlcnZhbnQKLTAwMjUxQiAgICAgKGJhc2UgMTYpCQlQaGlsaXBzIENhcmVTZXJ2YW50Ci0JCQkJSGlnaCBUZWNoIENhbXB1cyAyNwotCQkJCUVpbmRob3ZlbiBOb29yZC1CcmFiYW50IDU2NTYgQUUKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yNS0xQyAgIChoZXgpCQlFRFQKLTAwMjUxQyAgICAgKGJhc2UgMTYpCQlFRFQKLQkJCQkxNDAwIFNXIENvbXB0b24KLQkJCQlTdWl0ZSAzMTUKLQkJCQlCZWF2ZXJ0b24gT1IgOTcwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTFEICAgKGhleCkJCURTQSBFbmNvcmUsIExMQwotMDAyNTFEICAgICAoYmFzZSAxNikJCURTQSBFbmNvcmUsIExMQwotCQkJCTUwIFBvY29ubyBSZAotCQkJCUJyb29rZmllbGQgQ1QgMDY4MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTFFICAgKGhleCkJCVJPVEVMIFRFQ0hOT0xPR0lFUwotMDAyNTFFICAgICAoYmFzZSAxNikJCVJPVEVMIFRFQ0hOT0xPR0lFUwotCQkJCUNFVklaTElERVJFIDE0LkNEIE5POjIvMTkgQkFMR0FUCi0JCQkJQU5LQVJBICAwNjUyMAotCQkJCVRVUktFWQotCi0wMC0yNS0xRiAgIChoZXgpCQlaWU5VUyBWSVNJT04gSU5DLgotMDAyNTFGICAgICAoYmFzZSAxNikJCVpZTlVTIFZJU0lPTiBJTkMuCi0JCQkJMS0xLTctMUEKLQkJCQlTQUdBTUlIQVJBIEtBTkFHQVdBIDIyOS0wMDM5Ci0JCQkJSkFQQU4KLQotMDAtMjUtMjAgICAoaGV4KQkJU01BIFJhaWx3YXkgVGVjaG5vbG9neSBHbWJICi0wMDI1MjAgICAgIChiYXNlIDE2KQkJU01BIFJhaWx3YXkgVGVjaG5vbG9neSBHbWJICi0JCQkJTWlyYW1zdHIuIDg3Ci0JCQkJS2Fzc2VsIEhlc3NlIDM0MTIzCi0JCQkJR0VSTUFOWQotCi0wMC0yNS0yMSAgIChoZXgpCQlMb2dpdGVrIEVsZWN0cm9uaWMgU3lzdGVtcywgSW5jLgotMDAyNTIxICAgICAoYmFzZSAxNikJCUxvZ2l0ZWsgRWxlY3Ryb25pYyBTeXN0ZW1zLCBJbmMuCi0JCQkJNTYyMiBFZGdlbW9vciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTIyICAgKGhleCkJCUFTUm9jayBJbmNvcnBvcmF0aW9uCi0wMDI1MjIgICAgIChiYXNlIDE2KQkJQVNSb2NrIEluY29ycG9yYXRpb24KLQkJCQkyRi4sIE5vLiAzNywgU2VjLiAyLCBKaG9uZ3lhbmcgUy4gUmQuLCBCZWl0b3UgRGlzdHJpY3QsCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTIzICAgKGhleCkJCU9DUCBJbmMuCi0wMDI1MjMgICAgIChiYXNlIDE2KQkJT0NQIEluYy4KLQkJCQkxODQ5NSBTIERpeGllIEh3eSAgICBQTUIgMTA3Ci0JCQkJTWlhbWkgRmxvcmlkYSAzMzE1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMjQgICAoaGV4KQkJTGlnaHRjb21tIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMjUyNCAgICAgKGJhc2UgMTYpCQlMaWdodGNvbW0gVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTkvRi4sSGktVGVjaCBWZW50dXJlIFBhcmsgVG93ZXIgQSwKLQkJCQlUaWFuIGFuIEN5YmVyIFBhcmssRnV0aWFuCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA0MAotCQkJCUNISU5BCi0KLTAwLTI1LTI1ICAgKGhleCkJCUNURVJBIE5ldHdvcmtzIEx0ZC4KLTAwMjUyNSAgICAgKGJhc2UgMTYpCQlDVEVSQSBOZXR3b3JrcyBMdGQuCi0JCQkJMjQgSW1iZXIgU3QuCi0JCQkJUGV0YWNoLVRpa3ZhICA0OTUxMTEKLQkJCQlJU1JBRUwKLQotMDAtMjUtMjYgICAoaGV4KQkJR2VudWluZSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDI1MjYgICAgIChiYXNlIDE2KQkJR2VudWluZSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJS2xpbmdlbG5iZXJnIEJsZGcuCi0JCQkJMS0xMy0xMiBTaGluLVlva29oYW1hIEtvdWhva3Uta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjItMDAzMwotCQkJCUpBUEFOCi0KLTAwLTI1LTI3ICAgKGhleCkJCUJpdHJvZGUgQ29ycC4KLTAwMjUyNyAgICAgKGJhc2UgMTYpCQlCaXRyb2RlIENvcnAuCi0JCQkJOTc4NyBHcmVlbiBQYXJrIEluZHVzdHJpYWwgRHJpdmUKLQkJCQlTdC4gTG91aXMgTU8gNjMxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTI4ICAgKGhleCkJCURhaWRvIFNpZ25hbCBDby4sIEx0ZC4KLTAwMjUyOCAgICAgKGJhc2UgMTYpCQlEYWlkbyBTaWduYWwgQ28uLCBMdGQuCi0JCQkJMi0yMC0yCi0JCQkJTmFrYWlrZWdhbWkKLQkJCQlPaHRhLWt1IFRPS1lPIDE0Ni04Njc4Ci0JCQkJSkFQQU4KLQotMDAtMjUtMjkgICAoaGV4KQkJQ09NRUxJVCBHUk9VUCBTLlAuQQotMDAyNTI5ICAgICAoYmFzZSAxNikJCUNPTUVMSVQgR1JPVVAgUy5QLkEKLQkJCQlET04gQVJSSUdPTkkgTi4gNQotCQkJCVNBTiBMT1JFTlpPLCBST1ZFVFRBIEJFUkdBTU8gMjQwMjAKLQkJCQlJVEFMWQotCi0wMC0yNS0yQSAgIChoZXgpCQlDaGVuZ2R1IEdlZVlhIFRlY2hub2xvZ3kgQ28uLExURAotMDAyNTJBICAgICAoYmFzZSAxNikJCUNoZW5nZHUgR2VlWWEgVGVjaG5vbG9neSBDby4sTFRECi0JCQkJNTAgU2h1eGkgUm9hZCwKLQkJCQlDaGVuZ2R1IFNpQ2h1YW4gNjEwMDkxCi0JCQkJQ0hJTkEKLQotMDAtMjUtMkIgICAoaGV4KQkJU3RpcmxpbmcgRW5lcmd5IFN5c3RlbXMKLTAwMjUyQiAgICAgKGJhc2UgMTYpCQlTdGlybGluZyBFbmVyZ3kgU3lzdGVtcwotCQkJCVNhbmRpYSBOYXRpb25hbCBMYWJzIC0gTlNUVEYKLQkJCQlQTyBCb3ggNTgwMCBNUyAxMTI3Ci0JCQkJQWxidXF1ZXJxdWUgTk0gODcxODUtMTEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMkMgICAoaGV4KQkJRW50b3VyYWdlIFN5c3RlbXMsIEluYy4KLTAwMjUyQyAgICAgKGJhc2UgMTYpCQlFbnRvdXJhZ2UgU3lzdGVtcywgSW5jLgotCQkJCTc5MDEgSm9uZXMgQnJhbmNoIERyaXZlCi0JCQkJU3VpdGUgNzAwCi0JCQkJTWNMZWFuIFZpcmdpbmlhIDIyMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0yRCAgIChoZXgpCQlLaXJ5dW5nIEVsZWN0cm9uaWNzCi0wMDI1MkQgICAgIChiYXNlIDE2KQkJS2lyeXVuZyBFbGVjdHJvbmljcwotCQkJCUtpcnl1bmcgQmxkZy4gNjg2LTcwLCBTaW5kYWViYW5nLWRvbmcKLQkJCQlEb25namFrLWd1LAotCQkJCVNlb3VsICAxNTYtMDEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LTJFICAgKGhleCkJCUNpc2NvIFNQVlRHCi0wMDI1MkUgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtMkYgICAoaGV4KQkJRW5lcmd5LCBJbmMuCi0wMDI1MkYgICAgIChiYXNlIDE2KQkJRW5lcmd5LCBJbmMuCi0JCQkJMzI5NyBQYWNpZmljIFN0cmVldAotCQkJCUNoYXJsZXN0b24gU0MgMjk0MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTMwICAgKGhleCkJCUFldGFzIFN5c3RlbXMgSW5jLgotMDAyNTMwICAgICAoYmFzZSAxNikJCUFldGFzIFN5c3RlbXMgSW5jLgotCQkJCTNBMywgTm8uIDEsIExpSHNpbiBSb2FkIEkKLQkJCQlIc2luQ2h1IFRhaXdhbiAzMDA3OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjUtMzEgICAoaGV4KQkJQ2xvdWQgRW5naW5lcywgSW5jLgotMDAyNTMxICAgICAoYmFzZSAxNikJCUNsb3VkIEVuZ2luZXMsIEluYy4KLQkJCQk4NTcgTW9udGdvbWVyeSBTdHJlZXQKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0zMiAgIChoZXgpCQlEaWdpdGFsIFJlY29yZGVycwotMDAyNTMyICAgICAoYmFzZSAxNikJCURpZ2l0YWwgUmVjb3JkZXJzCi0JCQkJNDAxOCBQYXRyaW90IERyaXZlCi0JCQkJU3VpdGUgMTAwCi0JCQkJRHVyaGFtIE5DIDI3NzA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0zMyAgIChoZXgpCQlXSVRURU5TVEVJTiBBRwotMDAyNTMzICAgICAoYmFzZSAxNikJCVdJVFRFTlNURUlOIEFHCi0JCQkJV2FsdGVyLVdpdHRlbnN0ZWluLVN0ci4gMQotCQkJCUlnZXJzaGVpbSAgOTc5OTkKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTM1ICAgKGhleCkJCU1pbmltYXggR21iSCAmIENvIEtHCi0wMDI1MzUgICAgIChiYXNlIDE2KQkJTWluaW1heCBHbWJIICYgQ28gS0cKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDEwLzEyCi0JCQkJQmFkIE9sZGVzbG9lIFNIIDIzODQwCi0JCQkJR0VSTUFOWQotCi0wMC0yNS0zNiAgIChoZXgpCQlPa2kgRWxlY3RyaWMgSW5kdXN0cnkgQ28uLCBMdGQuCi0wMDI1MzYgICAgIChiYXNlIDE2KQkJT2tpIEVsZWN0cmljIEluZHVzdHJ5IENvLiwgTHRkLgotCQkJCTEtMTYtOCBDaHVvdQotCQkJCVdhcmFiaS1zaGkgU2FpdGFtYSAzMzUtODUxMAotCQkJCUpBUEFOCi0KLTAwLTI1LTM3ICAgKGhleCkJCVJ1bmNvbSBUZWNobm9sb2dpZXMgTHRkLgotMDAyNTM3ICAgICAoYmFzZSAxNikJCVJ1bmNvbSBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTExIE1vc2hlIExldmkgU3RyLiAxMXRoIEZsci4KLQkJCQlVTUkgQnVpbGRpbmcKLQkJCQlSaXNob24gTGUgWmlvbiAgNzU2NTgKLQkJCQlJU1JBRUwKLQotMDAtMjUtMzggICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4sIE1lbW9yeSBEaXZpc2lvbgotMDAyNTM4ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuLCBNZW1vcnkgRGl2aXNpb24KLQkJCQlTYW4gIzE2IEJhbndvbC1Eb25nLCBUYWVhbi1HdQotCQkJCUh3YXN1bmcgQ2l0eSBHeWVvbmdnaSBEbyA0NDUtNzAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LTM5ICAgKGhleCkJCUlmVEEgR21iSAotMDAyNTM5ICAgICAoYmFzZSAxNikJCUlmVEEgR21iSAotCQkJCUluZHVzdHJpZXN0cmFzc2UgMzMKLQkJCQlHcm9lYmVuemVsbCBCYXZhcmlhIDgyMTk0Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS0zQSAgIChoZXgpCQlDRVZBLCBMdGQuCi0wMDI1M0EgICAgIChiYXNlIDE2KQkJQ0VWQSwgTHRkLgotCQkJCTIgTWFza2l0IFN0cmVldC4KLQkJCQlQLk8uIEJveCAyMDY4Ci0JCQkJSGVyemVsaWEgIDQ2MTIwCi0JCQkJSVNSQUVMCi0KLTAwLTI1LTNCICAgKGhleCkJCWRpbiBEaWV0bWFyIE5vY2tlciBGYWNpbGl0eW1hbmFnZW1lbnQgR21iSAotMDAyNTNCICAgICAoYmFzZSAxNikJCWRpbiBEaWV0bWFyIE5vY2tlciBGYWNpbGl0eW1hbmFnZW1lbnQgR21iSAotCQkJCUtvdHppbmFzdHJhc3NlIDUKLQkJCQlMaW56IFVwcGVyIEF1c3RyaWEgNDAzMAotCQkJCUFVU1RSSUEKLQotMDAtMjUtM0MgICAoaGV4KQkJMldpcmUKLTAwMjUzQyAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTNEICAgKGhleCkJCURSUyBDb25zb2xpZGF0ZWQgQ29udHJvbHMKLTAwMjUzRCAgICAgKGJhc2UgMTYpCQlEUlMgQ29uc29saWRhdGVkIENvbnRyb2xzCi0JCQkJMjEgU291dGggU3RyZWV0Ci0JCQkJRGFuYnVyeSBDVCAwNjgxMC04MTQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS0zRSAgIChoZXgpCQlTZW5zdXMgTWV0ZXJpbmcgU3lzdGVtcwotMDAyNTNFICAgICAoYmFzZSAxNikJCVNlbnN1cyBNZXRlcmluZyBTeXN0ZW1zCi0JCQkJOTk0MSBXLiBFbWVyYWxkIFN0cmVldAotCQkJCUJvaXNlIElkYWhvIDgzNzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS00MCAgIChoZXgpCQlRdWFzYXIgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDI1NDAgICAgIChiYXNlIDE2KQkJUXVhc2FyIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE3MDEgQmFycmV0dCBMYWtlcyBCb3VsZXZhcmQKLQkJCQlTdWl0ZSAxNjAKLQkJCQlLZW5uZXNhdyBHQSAzMDE0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNDEgICAoaGV4KQkJTWFxdWV0IENyaXRpY2FsIENhcmUgQUIKLTAwMjU0MSAgICAgKGJhc2UgMTYpCQlNYXF1ZXQgQ3JpdGljYWwgQ2FyZSBBQgotCQkJCVLDtm50Z2VudsOkZ2VuIDIKLQkJCQlTb2xuYSAgU0UtMTcxIDk1Ci0JCQkJU1dFREVOCi0KLTAwLTI1LTQyICAgKGhleCkJCVBpdHRhc29mdAotMDAyNTQyICAgICAoYmFzZSAxNikJCVBpdHRhc29mdAotCQkJCSM5MTMgRGFlcnl1bmcgVGVjaG5vIFRvd24gOHRoIDQ4MS0xMWdhCi0JCQkJR2FzYW4tZG9uZwotCQkJCUdldW1jaGVvbi1ndSBTZW91bCAxNTMtNzc1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LTQzICAgKGhleCkJCU1PTkVZVEVDSAotMDAyNTQzICAgICAoYmFzZSAxNikJCU1PTkVZVEVDSAotCQkJCVJ1YSBHdWlyYXRpbmdhIDkzMSB1bi4gMTAzCi0JCQkJQ2hhY2FyYSBJbmdsZXNhCi0JCQkJU2FvIFBhdWxvIFNQIDA0MTQxLTAwMQotCQkJCUJSQVpJTAotCi0wMC0yNS00NCAgIChoZXgpCQlMb0phY2sgQ29ycG9yYXRpb24KLTAwMjU0NCAgICAgKGJhc2UgMTYpCQlMb0phY2sgQ29ycG9yYXRpb24KLQkJCQk3ODAgRGVkaGFtIFN0cmVldAotCQkJCU1BIDAyMDIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS00NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI1NDUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNDYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNTQ2ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTQ3ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI1NDcgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTI1LTQ4ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI1NDggICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTI1LTQ5ICAgKGhleCkJCUplb3JpY2ggVGVjaC4gQ28uLEx0ZC4KLTAwMjU0OSAgICAgKGJhc2UgMTYpCQlKZW9yaWNoIFRlY2guIENvLixMdGQuCi0JCQkJNEYuLCBOby42LCBMbi4gNzAsIFNlYy4gMiwgQWNhZGVtaWEgUmQuLCBOYW5nYW5nIERpc3RyaWN0LCBUYWlwZWkgQ2l0eSAxMTUsIFRhaXdhbiAoUi5PLkMuKQotCQkJCVRhaXBlaSBUYWl3YW4gMTEwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS00QSAgIChoZXgpCQlSaW5nQ3ViZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjU0QSAgICAgKGJhc2UgMTYpCQlSaW5nQ3ViZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMDAgV2VzdCBFdmVseW4gQXZlLCBTdWl0ZSAyMTAKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS00QiAgIChoZXgpCQlBcHBsZSwgSW5jCi0wMDI1NEIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCWN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNEMgICAoaGV4KQkJVmlkZW9uIENlbnRyYWwsIEluYy4KLTAwMjU0QyAgICAgKGJhc2UgMTYpCQlWaWRlb24gQ2VudHJhbCwgSW5jLgotCQkJCTIxNzEgU2FuZHkgRHJpdmUKLQkJCQlTdGF0ZSBDb2xsZWdlIFBBIDE2ODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS00RCAgIChoZXgpCQlTaW5nYXBvcmUgVGVjaG5vbG9naWVzIEVsZWN0cm9uaWNzIExpbWl0ZWQKLTAwMjU0RCAgICAgKGJhc2UgMTYpCQlTaW5nYXBvcmUgVGVjaG5vbG9naWVzIEVsZWN0cm9uaWNzIExpbWl0ZWQKLQkJCQkyNCBBbmcgTW8gS2lvCi0JCQkJU3RyZWV0IDY1Ci0JCQkJNTY5MDYxCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTI1LTRFICAgKGhleCkJCVZlcnRleCBXaXJlbGVzcyBDby4sIEx0ZC4KLTAwMjU0RSAgICAgKGJhc2UgMTYpCQlWZXJ0ZXggV2lyZWxlc3MgQ28uLCBMdGQuCi0JCQkJNUYsIFNlb2h5ZW9uIFBsYXphLCAyNTQtNSwgU2VvaHllb24tZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtNEYgICAoaGV4KQkJRUxFVFRST0xBQiBTcmwKLTAwMjU0RiAgICAgKGJhc2UgMTYpCQlFTEVUVFJPTEFCIFNybAotCQkJCVZpYSBEZWxsJ0luZHVzdHJpYSAyNQotCQkJCVNhbiBWZW5kZW1pYW5vIFRyZXZpc28gMzEwMjAKLQkJCQlJVEFMWQotCi0wMC0yNS01MCAgIChoZXgpCQlSaXZlcmJlZCBUZWNobm9sb2d5Ci0wMDI1NTAgICAgIChiYXNlIDE2KQkJUml2ZXJiZWQgVGVjaG5vbG9neQotCQkJCTEyNSBDYW1icmlkZ2UgUGFyayBEcml2ZQotCQkJCUNhbWJyaWRnZSBNQSAwMjE0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNTEgICAoaGV4KQkJU0UtRWxla3Ryb25pYyBHbWJICi0wMDI1NTEgICAgIChiYXNlIDE2KQkJU0UtRWxla3Ryb25pYyBHbWJICi0JCQkJRXl0aHN0ci4gMTYKLQkJCQlHb2VwcGluZ2VuICA3MzAzNwotCQkJCUdFUk1BTlkKLQotMDAtMjUtNTIgICAoaGV4KQkJVlhJIENPUlBPUkFUSU9OCi0wMDI1NTIgICAgIChiYXNlIDE2KQkJVlhJIENPUlBPUkFUSU9OCi0JCQkJT25lIEZyb250IFNyZWV0Ci0JCQkJUm9sbGluc2ZvcmQgTkggMDM4NjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTUzICAgKGhleCkJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi0wMDI1NTMgICAgIChiYXNlIDE2KQkJQURCIEJyb2FkYmFuZCBJdGFsaWEKLQkJCQlWSUFMRSBTQVJDQSAyMjIKLQkJCQlNSUxBTk8gSVRBTFkgMjAxMjYKLQkJCQlJVEFMWQotCi0wMC0yNS01NCAgIChoZXgpCQlQaXhlbDggTmV0d29ya3MKLTAwMjU1NCAgICAgKGJhc2UgMTYpCQlQaXhlbDggTmV0d29ya3MKLQkJCQkyMiBHcmVhdCBPYWtzIEJsdmQsIFN1aXRlIDE1MAotCQkJCVNhbiBKb3NlIENBIDk1MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS01NSAgIChoZXgpCQlWaXNvbmljIFRlY2hub2xvZ2llcyAxOTkzIEx0ZAotMDAyNTU1ICAgICAoYmFzZSAxNikJCVZpc29uaWMgVGVjaG5vbG9naWVzIDE5OTMgTHRkCi0JCQkJMjMgSGFiYXJ6ZWwgc3QnCi0JCQkJVGVsIC0gQXZpdiAgNjk3MTAKLQkJCQlJU1JBRUwKLQotMDAtMjUtNTYgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sIEx0ZC4KLTAwMjU1NiAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotCQkJCU5vLjE5MjUsIE5hbmxlIFJvYWQKLQkJCQlTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCVNoYW5nSGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi0wMC0yNS01NyAgIChoZXgpCQlSZXNlYXJjaCBJbiBNb3Rpb24KLTAwMjU1NyAgICAgKGJhc2UgMTYpCQlSZXNlYXJjaCBJbiBNb3Rpb24KLQkJCQk0NDAgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCA1VzkKLQkJCQlDQU5BREEKLQotMDAtMjUtNTggICAoaGV4KQkJTVBFRElBCi0wMDI1NTggICAgIChiYXNlIDE2KQkJTVBFRElBCi0JCQkJU2hpbnlvdW5nIFRvd2VyIDEyRiAyNDYtMgotCQkJCVNlb2h5ZW9uLWRpbmcgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtIEd5ZW9uZ2dpLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtNTkgICAoaGV4KQkJU3lwaGFuIFRlY2hub2xvZ2llcyBMdGQKLTAwMjU1OSAgICAgKGJhc2UgMTYpCQlTeXBoYW4gVGVjaG5vbG9naWVzIEx0ZAotCQkJCVRoZSBXYXRlcm1pbGwKLQkJCQlCcm91Z2h0b24gSGFsbAotCQkJCVNraXB0b24gTm9ydGggWW9ya3NoaXJlIEJEMjMgM0FHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjUtNUEgICAoaGV4KQkJVGFudGFsdXMgU3lzdGVtcyBDb3JwLgotMDAyNTVBICAgICAoYmFzZSAxNikJCVRhbnRhbHVzIFN5c3RlbXMgQ29ycC4KLQkJCQkzMDEtMzQ4MCBHaWxtb3JlIFdheQotCQkJCUJ1cm5hYnkgQkMgVjVHIDRZMQotCQkJCUNBTkFEQQotCi0wMC0yNS01QiAgIChoZXgpCQlDb2FjaENvbW0sIExMQwotMDAyNTVCICAgICAoYmFzZSAxNikJCUNvYWNoQ29tbSwgTExDCi0JCQkJMjA1IFRlY2hub2xvZ3kgUGFya3dheQotCQkJCUF1YnVybiBBTCAzNjgzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNUMgICAoaGV4KQkJTkVDIENvcnBvcmF0aW9uCi0wMDI1NUMgICAgIChiYXNlIDE2KQkJTkVDIENvcnBvcmF0aW9uCi0JCQkJMTc1MywgU2hpbW9udW1hYmUsIE5ha2FoYXJhLUt1LCBLYXdhc2FraQotCQkJCUthbmFnYXdhICAyMTEtODY2NgotCQkJCUpBUEFOCi0KLTAwLTI1LTVEICAgKGhleCkJCU1vcm5pbmdzdGFyIENvcnBvcmF0aW9uCi0wMDI1NUQgICAgIChiYXNlIDE2KQkJTW9ybmluZ3N0YXIgQ29ycG9yYXRpb24KLQkJCQk5MDU1IEd1aWxmb3JkIFJkLgotCQkJCVN1aXRlIEcKLQkJCQlDb2x1bWJpYSBNRCAyMTA0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNUUgICAoaGV4KQkJU2hhbmdoYWkgRGFyZSBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLTAwMjU1RSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBEYXJlIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCTIyRixJbmZvIFRlY2ggQnVpbGRpbmcsIE5vLjE1NTUsS29uZ2ppYW5nIFJvYWQsCi0JCQkJU2hhbmdoYWkgMjAwMDkyCi0JCQkJQ0hJTkEKLQotMDAtMjUtNUYgICAoaGV4KQkJU2VuVGVjIEFHCi0wMDI1NUYgICAgIChiYXNlIDE2KQkJU2VuVGVjIEFHCi0JCQkJUmluZ3N0cmFzc2UgMzkKLQkJCQlUaGVyd2lsICA0MTA2Ci0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMjUtNjAgICAoaGV4KQkJSWJyaWRnZSBOZXR3b3JrcyAmIENvbW11bmljYXRpb25zIEx0ZC4KLTAwMjU2MCAgICAgKGJhc2UgMTYpCQlJYnJpZGdlIE5ldHdvcmtzICYgQ29tbXVuaWNhdGlvbnMgTHRkLgotCQkJCTI4LEJlZGZvcmQgUm9hZCBFYXN0IEhhbQotCQkJCUxvbmRvbiAgRTYgMk5OCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjUtNjEgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotMDAyNTYxICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkLgotCQkJCVJvc2V2aWxsZSBDYWxpZm9ybmlhIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS02MiAgIChoZXgpCQlpbnRlcmJybyBDby4gTHRkLgotMDAyNTYyICAgICAoYmFzZSAxNikJCWludGVyYnJvIENvLiBMdGQuCi0JCQkJNkYgSm95YW5nIEIvRCwgMTEzIFNhbXNlb25nLURvbmcsIEdhbmduYW0tR3UKLQkJCQlTZW91bCAgMTM1LTA5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS02MyAgIChoZXgpCQlMdXh0ZXJhIEluYwotMDAyNTYzICAgICAoYmFzZSAxNikJCUx1eHRlcmEgSW5jCi0JCQkJMjMyMC4gQ2FtaW5vIFZpZGEgUm9ibGUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlDYXJsc2JhZCBDQSA5MjAxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNjQgICAoaGV4KQkJRGVsbCBJbmMuCi0wMDI1NjQgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMuCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS02NSAgIChoZXgpCQlWaXppbWF4IEluYy4KLTAwMjU2NSAgICAgKGJhc2UgMTYpCQlWaXppbWF4IEluYy4KLQkJCQkyMjg0LCBydWUgZGUgbGEgUHJvdmluY2UKLQkJCQlMb25ndWV1aWwgUXXDqWJlYyBKNEcgMUcxCi0JCQkJQ0FOQURBCi0KLTAwLTI1LTY2ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDAyNTY2ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS02NyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0wMDI1NjcgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS02OCAgIChoZXgpCQlTaGVuemhlbiBIdWF3ZWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLTAwMjU2OCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBIdWF3ZWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDgKLQkJCQlDSElOQQotCi0wMC0yNS02OSAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0wMDI1NjkgICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCTE0IFJ1ZSBQYXVsIERhdXRpZXIKLQkJCQlWZWxpenkgIDc4NDU3Ci0JCQkJRlJBTkNFCi0KLTAwLTI1LTZBICAgKGhleCkJCWluSVQgLSBJbnN0aXR1dCBJbmR1c3RyaWFsIElUCi0wMDI1NkEgICAgIChiYXNlIDE2KQkJaW5JVCAtIEluc3RpdHV0IEluZHVzdHJpYWwgSVQKLQkJCQlMaWViaWdzdHJhc3NlIDg3Ci0JCQkJTGVtZ28gTm9ydGhyaGluZS1XZXN0ZmFsaWEgMzI2NTcKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTZCICAgKGhleCkJCUFURU5JWCBFLkUuIHMuci5sLgotMDAyNTZCICAgICAoYmFzZSAxNikJCUFURU5JWCBFLkUuIHMuci5sLgotCQkJCVZpYSBUb3JyaWNlbGxpLCAxNS9iCi0JCQkJVkVST05BIFZSIDM3MTM1Ci0JCQkJSVRBTFkKLQotMDAtMjUtNkMgICAoaGV4KQkJIkF6aW11dCIgUHJvZHVjdGlvbiBBc3NvY2lhdGlvbiBKU0MKLTAwMjU2QyAgICAgKGJhc2UgMTYpCQkiQXppbXV0IiBQcm9kdWN0aW9uIEFzc29jaWF0aW9uIEpTQwotCQkJCTItQiBBdGFldmEgU3RyZWV0Ci0JCQkJTWFraGFjaGthbGEgRGFnZXN0YW4gMzY3MDA1Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTI1LTZEICAgKGhleCkJCUJyb2FkYmFuZCBGb3J1bQotMDAyNTZEICAgICAoYmFzZSAxNikJCUJyb2FkYmFuZCBGb3J1bQotCQkJCTQ4Mzc3IEZyZW1vbnQgQm91bGV2YXJkCi0JCQkJU3VpdGUgMTE3Ci0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtNkUgICAoaGV4KQkJVmFuIEJyZWRhIEIuVi4KLTAwMjU2RSAgICAgKGJhc2UgMTYpCQlWYW4gQnJlZGEgQi5WLgotCQkJCU1lcmN1cml1c3dlZyAyMQotCQkJCUJydW1tZW4gR2VsZGVybGFuZCA2OTcxIEdWCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjUtNkYgICAoaGV4KQkJRGFudGhlcm0gUG93ZXIKLTAwMjU2RiAgICAgKGJhc2UgMTYpCQlEYW50aGVybSBQb3dlcgotCQkJCU1hcmllbmx5c3R2ZWogNjUKLQkJCQlTa2l2ZSAgNzgwMAotCQkJCURFTk1BUksKLQotMDAtMjUtNzAgICAoaGV4KQkJRWFzdGVybiBDb21tdW5pY2F0aW9ucyBDb21wYW55IExpbWl0ZWQKLTAwMjU3MCAgICAgKGJhc2UgMTYpCQlFYXN0ZXJuIENvbW11bmljYXRpb25zIENvbXBhbnkgTGltaXRlZAotCQkJCU5vLjM5OCBXZW5zYW4gUm9hZCwKLQkJCQlOby42NiBEb25neGluIFJvYWQsUiZEIGJ1aWxkaW5nLEIzMTEKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTMKLQkJCQlDSElOQQotCi0wMC0yNS03MSAgIChoZXgpCQlaaGVqaWFuZyBUaWFubGUgRGlnaXRhbCBFbGVjdHJpYyBDby4sTHRkCi0wMDI1NzEgICAgIChiYXNlIDE2KQkJWmhlamlhbmcgVGlhbmxlIERpZ2l0YWwgRWxlY3RyaWMgQ28uLEx0ZAotCQkJCU5vLjggVGlhbmxlIFJkLEVjb25vbWljIERldmVsb3BtZW50IFpvbmUKLQkJCQlTaGVuZ3pob3UgWmhlamlhbmcgMzEyNDAwCi0JCQkJQ0hJTkEKLQotMDAtMjUtNzIgICAoaGV4KQkJTmVtby1RIEludGVybmF0aW9uYWwgQUIKLTAwMjU3MiAgICAgKGJhc2UgMTYpCQlOZW1vLVEgSW50ZXJuYXRpb25hbCBBQgotCQkJCUJveCAyMTAKLQkJCQlTb2xsZW50dW5hICAxOTEyMwotCQkJCVNXRURFTgotCi0wMC0yNS03MyAgIChoZXgpCQlTVCBFbGVjdHJvbmljcyAoSW5mby1TZWN1cml0eSkgUHRlIEx0ZAotMDAyNTczICAgICAoYmFzZSAxNikJCVNUIEVsZWN0cm9uaWNzIChJbmZvLVNlY3VyaXR5KSBQdGUgTHRkCi0JCQkJMTAwLCBKdXJvbmcgRWFzdCBTdHJlZXQgMjEsIFNUIEVsZWN0cm9uaWNzIEp1cm9uZyBFYXN0IEJsZGcKLQkJCQk2MDk2MDIKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjUtNzQgICAoaGV4KQkJS1VOSU1JIE1FRElBIERFVklDRSBDby4sIEx0ZC4KLTAwMjU3NCAgICAgKGJhc2UgMTYpCQlLVU5JTUkgTUVESUEgREVWSUNFIENvLiwgTHRkLgotCQkJCTMgS0lUQU1BQ0hJREEgWUFNQVpBS0kKLQkJCQlLVU5JTUksIERBVEUgRlVLVVNISU1BIDk2OS0xNzcxCi0JCQkJSkFQQU4KLQotMDAtMjUtNzUgICAoaGV4KQkJRmliZXJQbGV4IEluYwotMDAyNTc1ICAgICAoYmFzZSAxNikJCUZpYmVyUGxleCBJbmMKLQkJCQkxMDg0MC00MTIgR3VpbGZvcmQgUmQKLQkJCQlBbm5hcG9saXMgSnVuY3Rpb24gTUQgMjA3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTc2ICAgKGhleCkJCU5FTEkgVEVDSE5PTE9HSUVTCi0wMDI1NzYgICAgIChiYXNlIDE2KQkJTkVMSSBURUNITk9MT0dJRVMKLQkJCQlSb3V0ZSBOYXRpb25hbGUKLQkJCQlJbW1ldWJsZSBPcmNoaXMKLQkJCQlMRSBSSEVVICAzNTY1MAotCQkJCUZSQU5DRQotCi0wMC0yNS03NyAgIChoZXgpCQlELUJPWCBUZWNobm9sb2dpZXMKLTAwMjU3NyAgICAgKGJhc2UgMTYpCQlELUJPWCBUZWNobm9sb2dpZXMKLQkJCQkyMTcyIGRlIGxhIFByb3ZpbmNlCi0JCQkJTG9uZ3VldWlsIFF1ZWJlYyBKNEcgMVI3Ci0JCQkJQ0FOQURBCi0KLTAwLTI1LTc4ICAgKGhleCkJCUpTQyAiQ29uY2VybiAiU296dmV6ZGllIgotMDAyNTc4ICAgICAoYmFzZSAxNikJCUpTQyAiQ29uY2VybiAiU296dmV6ZGllIgotCQkJCVBsZWtoYW5vdnNrYXlhIHN0LiwgMTQKLQkJCQlWb3JvbmV6aCAgMzk0MDE4Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLTI1LTc5ICAgKGhleCkJCUogJiBGIExhYnMKLTAwMjU3OSAgICAgKGJhc2UgMTYpCQlKICYgRiBMYWJzCi0JCQkJMTIxNCBXLiBCb3N0b24gUG9zdCBSb2FkCi0JCQkJTWFtYXJvbmVjayBOWSAxMDU0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtN0EgICAoaGV4KQkJQ0FNQ08gUHJvZHVrdGlvbnMtIHVuZCBWZXJ0cmllYnMtR21iSCBmw7xyIEJlc2NoYWxsdW5ncy0gdW5kIEJlbGV1Y2h0dW5nc2FubGFnZW4KLTAwMjU3QSAgICAgKGJhc2UgMTYpCQlDQU1DTyBQcm9kdWt0aW9ucy0gdW5kIFZlcnRyaWVicy1HbWJIIGbDvHIgQmVzY2hhbGx1bmdzLSB1bmQgQmVsZXVjaHR1bmdzYW5sYWdlbgotCQkJCUZpc2NocGlja2UgNQotCQkJCVdlbmRlbiBOUlcgNTc0ODIKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LTdCICAgKGhleCkJCVNUSiAgRUxFQ1RST05JQ1MgIFBWVCAgTFRECi0wMDI1N0IgICAgIChiYXNlIDE2KQkJU1RKICBFTEVDVFJPTklDUyAgUFZUICBMVEQKLQkJCQlYLTI0IE9LSExBICBJTkRVU1RSSUFMICBBUkVBCi0JCQkJUEhBU0UgLSAyCi0JCQkJTkVXICBERUxISSBERUxISSAxMTAgMDIwCi0JCQkJSU5ESUEKLQotMDAtMjUtN0MgICAoaGV4KQkJSHVhY2hlbnRlbCBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLiwgTHRkCi0wMDI1N0MgICAgIChiYXNlIDE2KQkJSHVhY2hlbnRlbCBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLiwgTHRkCi0JCQkJNzQ3IFhpbll1IFJkLiBIaWdoLVRlY2ggWm9uZQotCQkJCUppbmFuIFNoYW5kb25nIFByb3ZpbmNlIDI1MDEwMQotCQkJCUNISU5BCi0KLTAwLTI1LTdEICAgKGhleCkJCVBvaW50UmVkIFRlbGVjb20gUHJpdmF0ZSBMdGQuCi0wMDI1N0QgICAgIChiYXNlIDE2KQkJUG9pbnRSZWQgVGVsZWNvbSBQcml2YXRlIEx0ZC4KLQkJCQkxNUYgLSA1LiwgTm8uIDEwNzEsIFpob25nemhlbmcgUm9hZCwKLQkJCQlUYW95dWFuIENpdHkgMzMwICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LTdFICAgKGhleCkJCU5FVyBQT1MgVGVjaG5vbG9neSBMaW1pdGVkCi0wMDI1N0UgICAgIChiYXNlIDE2KQkJTkVXIFBPUyBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQk2RlJNLCA2RiwgQ2hpbmEgRWNvbm9taWMgVHJhZGUgQnVpbGRpbmcKLQkJCQk3UmQgWml6aHUsIFpodXppbGluLCBGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjUtN0YgICAoaGV4KQkJQ2FsbFRlY2hTb2x1dGlvbiBDby4sTHRkCi0wMDI1N0YgICAgIChiYXNlIDE2KQkJQ2FsbFRlY2hTb2x1dGlvbiBDby4sTHRkCi0JCQkJIzEyMyxEYWV3b29wcnVnaW8gQi9ELDM0NC0xLCBTZW9neW8tRG9uZyxNYXBvLWd1Ci0JCQkJU2VvdWwgIDEyMS04MzcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtODAgICAoaGV4KQkJRXF1aXBzb24gUy5BLgotMDAyNTgwICAgICAoYmFzZSAxNikJCUVxdWlwc29uIFMuQS4KLQkJCQlQb2xpZ29ubyBJbmQuIEzCtEFsdGVyw7MKLQkJCQlBdmRhLiBTYWxlciwgMTQKLQkJCQlTaWxsYSBWYWxlbmNpYSA0NjQ2MAotCQkJCVNQQUlOCi0KLTAwLTI1LTgxICAgKGhleCkJCXgtc3RhciBuZXR3b3JrcyBJbmMuCi0wMDI1ODEgICAgIChiYXNlIDE2KQkJeC1zdGFyIG5ldHdvcmtzIEluYy4KLQkJCQkxRixOTzEtMixDaHVuZ2NoaW5nIFMuUmQuU2VjIDMKLQkJCQlUYWlwZWkgIDEwMDc2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS04MiAgIChoZXgpCQlNYWtzYXQgVGVjaG5vbG9naWVzIChQKSBMdGQKLTAwMjU4MiAgICAgKGJhc2UgMTYpCQlNYWtzYXQgVGVjaG5vbG9naWVzIChQKSBMdGQKLQkJCQlELTEwLzYsIE9raGxhLCBQaGFzZS1JCi0JCQkJTmV3IERlbGhpICAxMTAwMjAKLQkJCQlJTkRJQQotCi0wMC0yNS04MyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI1ODMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtODQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNTg0ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTg1ICAgKGhleCkJCUtPS1VZTyBTJlQgQ28uLCBMdGQuCi0wMDI1ODUgICAgIChiYXNlIDE2KQkJS09LVVlPIFMmVCBDby4sIEx0ZC4KLQkJCQkxLTgtMzUKLQkJCQlLb25hbgotCQkJCU1pbmF0by1rdSBUb2t5byAxMDgtODcxMAotCQkJCUpBUEFOCi0KLTAwLTI1LTg2ICAgKGhleCkJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotMDAyNTg2ICAgICAoYmFzZSAxNikJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCUJ1aWxkaW5nIDcsIFNlY29uZCBQYXJ0LCBIb25naHVhbGluZyBJbmR1c3RyaWFsIFpvbmUKLQkJCQlYaWxpIHRvd24sIE5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjUtODcgICAoaGV4KQkJVml0YWxpdHksIEluYy4KLTAwMjU4NyAgICAgKGJhc2UgMTYpCQlWaXRhbGl0eSwgSW5jLgotCQkJCU9uZSBCcm9hZHdheQotCQkJCTE0dGggRmxvb3IKLQkJCQlDYW1icmlkZ2UgTUEgMDIxNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTg4ICAgKGhleCkJCUdlbmllIEluZHVzdHJpZXMsIEluYy4KLTAwMjU4OCAgICAgKGJhc2UgMTYpCQlHZW5pZSBJbmR1c3RyaWVzLCBJbmMuCi0JCQkJMTg2MjAgTkUgNjd0aCBDdAotCQkJCVJlZG1vbmQgV0EgOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTg5ICAgKGhleCkJCUhpbGxzIEluZHVzdHJpZXMgTGltaXRlZAotMDAyNTg5ICAgICAoYmFzZSAxNikJCUhpbGxzIEluZHVzdHJpZXMgTGltaXRlZAotCQkJCTUgQ2FtYnJpYSBSb2FkCi0JCQkJS2V5c2Jvcm91Z2gKLQkJCQlNZWxib3VybmUgVklDIDMxNzMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjUtOEEgICAoaGV4KQkJUG9sZS9aZXJvIENvcnBvcmF0aW9uCi0wMDI1OEEgICAgIChiYXNlIDE2KQkJUG9sZS9aZXJvIENvcnBvcmF0aW9uCi0JCQkJNTUzMCBVbmlvbiBDZW50cmUgRHJpdmUKLQkJCQlXZXN0IENoZXN0ZXIgT0ggNDUwNjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LThCICAgKGhleCkJCU1lbGxhbm94IFRlY2hub2xvZ2llcyBMdGQKLTAwMjU4QiAgICAgKGJhc2UgMTYpCQlNZWxsYW5veCBUZWNobm9sb2dpZXMgTHRkCi0JCQkJMzUwIE9ha21lYWQgUGFya3dheQotCQkJCVN1bm55dmFsZSwgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LThDICAgKGhleCkJCUVTVVMgRUxFS1RST05JSyBTQU4uIFZFIERJUy4gVElDLiBMVEQuIFNUSS4KLTAwMjU4QyAgICAgKGJhc2UgMTYpCQlFU1VTIEVMRUtUUk9OSUsgU0FOLiBWRSBESVMuIFRJQy4gTFRELiBTVEkuCi0JCQkJRVNFTlNFSElSIE1BSEFMTEVTSSBLVVJLQ1VMRVIgQ0FEREVTSQotCQkJCVNBRklSIFNPS0FLIE5POjExLzEgRFVEVUxMVSBVTVJBTklZRQotCQkJCUlTVEFOQlVMICAzNDc3NgotCQkJCVRVUktFWQotCi0wMC0yNS04RCAgIChoZXgpCQlIYWllcgotMDAyNThEICAgICAoYmFzZSAxNikJCUhhaWVyCi0JCQkJTm8uMSxIYWllciBSb2FkCi0JCQkJUWluZ2RhbyBTaGFuZG9uZyAyNjYxMDEKLQkJCQlDSElOQQotCi0wMC0yNS04RSAgIChoZXgpCQlUaGUgV2VhdGhlciBDaGFubmVsCi0wMDI1OEUgICAgIChiYXNlIDE2KQkJVGhlIFdlYXRoZXIgQ2hhbm5lbAotCQkJCU1haWwgU3RvcCA1MDAKLQkJCQkzMDAgSW50ZXJzdGF0ZSBOb3J0aCBQa3d5Ci0JCQkJQXRsYW50YSBHQSAzMDMzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtOEYgICAoaGV4KQkJVHJpZGVudCBNaWNyb3N5c3RlbXMsIEluYy4KLTAwMjU4RiAgICAgKGJhc2UgMTYpCQlUcmlkZW50IE1pY3Jvc3lzdGVtcywgSW5jLgotCQkJCTM0MDggR2FycmV0dCBEcml2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS05MCAgIChoZXgpCQlTdXBlciBNaWNybyBDb21wdXRlciwgSW5jLgotMDAyNTkwICAgICAoYmFzZSAxNikJCVN1cGVyIE1pY3JvIENvbXB1dGVyLCBJbmMuCi0JCQkJOTgwIFJvY2sgQXZlbnVlCi0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtOTEgICAoaGV4KQkJTkVYVEVLLCBJbmMuCi0wMDI1OTEgICAgIChiYXNlIDE2KQkJTkVYVEVLLCBJbmMuCi0JCQkJNDEwIERvdWdsYXNzIFN0cmVldAotCQkJCVJlYWRpbmcgUEEgMTk2MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTkyICAgKGhleCkJCUd1YW5nemhvdSBTaGlydWkgRWxlY3Ryb25pYyBDby4sIEx0ZAotMDAyNTkyICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBTaGlydWkgRWxlY3Ryb25pYyBDby4sIEx0ZAotCQkJCTMwMUQsIE5vLjksIENhaXBpbiBSb2FkLAotCQkJCUd1YW5nemhvdSBTY2llbmNlIFBhcmsKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTAwLTI1LTkzICAgKGhleCkJCURhdE5ldCBJbmZvcm1hdGlrYWkgS2Z0LgotMDAyNTkzICAgICAoYmFzZSAxNikJCURhdE5ldCBJbmZvcm1hdGlrYWkgS2Z0LgotCQkJCUjDqXR2ZXrDqXIgdS4gNS4KLQkJCQlTemlnZXRzemVudG1pa2zDs3MgUGVzdCBtZWd5ZSAyMzEwCi0JCQkJSFVOR0FSWQotCi0wMC0yNS05NCAgIChoZXgpCQlFdXJvZGVzaWduIEJHIExURAotMDAyNTk0ICAgICAoYmFzZSAxNikJCUV1cm9kZXNpZ24gQkcgTFRECi0JCQkJMTUtMTcgVGludGlhdmEgU3RyLiwKLQkJCQlTb2ZpYSAgMTExMwotCQkJCUJVTEdBUklBCi0KLTAwLTI1LTk1ICAgKGhleCkJCU5vcnRod2VzdCBTaWduYWwgU3VwcGx5LCBJbmMKLTAwMjU5NSAgICAgKGJhc2UgMTYpCQlOb3J0aHdlc3QgU2lnbmFsIFN1cHBseSwgSW5jCi0JCQkJMTI5NjUgU1cgSGVybWFuIFJkCi0JCQkJVHVhbGF0aW4gT1IgOTcwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LTk2ICAgKGhleCkJCUdJR0FWSVNJT04gc3JsCi0wMDI1OTYgICAgIChiYXNlIDE2KQkJR0lHQVZJU0lPTiBzcmwKLQkJCQlWaWEgRmlnaW5pLCAxNgotCQkJCU11Z2dpw7IgTWlsYW5vIDIwMDUzCi0JCQkJSVRBTFkKLQotMDAtMjUtOTcgICAoaGV4KQkJS2Fsa2kgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMKLTAwMjU5NyAgICAgKGJhc2UgMTYpCQlLYWxraSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcwotCQkJCSMxNDcsMm5kIEZsb29yLCBBbmFudGFQdXNocGEgQnVpbGRpbmcsCi0JCQkJNXRoIE1haW4gUm9hZCw3dGggU2VjdG9yLEhTUiBMYXlvdXQKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDAzNAotCQkJCUlORElBCi0KLTAwLTI1LTk4ICAgKGhleCkJCVpob25nIFNoYW4gQ2l0eSBMaXRhaSBFbGVjdHJvbmljIEluZHVzdHJpYWwgQ28uIEx0ZAotMDAyNTk4ICAgICAoYmFzZSAxNikJCVpob25nIFNoYW4gQ2l0eSBMaXRhaSBFbGVjdHJvbmljIEluZHVzdHJpYWwgQ28uIEx0ZAotCQkJCU5vLjMgSW5kdXN0cmlhbCBEaXN0cmljdCwgV3VndWlzaGFuLCBDaGVuZyBndWkgUm9hZAotCQkJCVpob25nIHNoYW4gQ2l0eSBHdWFuZyBkb25nIFByb3ZpbmNlIDUyODQ1OAotCQkJCUNISU5BCi0KLTAwLTI1LTk5ICAgKGhleCkJCUhlZG9uIGUuZC4gQi5WLgotMDAyNTk5ICAgICAoYmFzZSAxNikJCUhlZG9uIGUuZC4gQi5WLgotCQkJCUVsZWt0cm9uaWNhd2VnIDE1Ci0JCQkJRGVsZnQgWnVpZCBIb2xsYW5kIDI2MjggWEcKLQkJCQlORVRIRVJMQU5EUwotCi0wMC0yNS05QSAgIChoZXgpCQlDRVN0cm9uaWNzIEdtYkgKLTAwMjU5QSAgICAgKGJhc2UgMTYpCQlDRVN0cm9uaWNzIEdtYkgKLQkJCQlGcmllZHJpY2hzdHIuIDI0MwotCQkJCVZlbGJlcnQgIDQyNTUxCi0JCQkJR0VSTUFOWQotCi0wMC0yNS05QiAgIChoZXgpCQlCZWlqaW5nIFBLVU5JVFkgTWljcm9zeXN0ZW1zIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMjU5QiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFBLVU5JVFkgTWljcm9zeXN0ZW1zIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQkxMXRoIEZsb29yLCBSZXNvdXJjZSBQbGF6YSwgTm8uMTUxIE5vcnRoIFpob25nZ3VhbmN1biBTdHJlZXQKLQkJCQlIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDAtMjUtOUMgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi0wMDI1OUMgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS05RCAgIChoZXgpCQlQUklWQVRFCi0wMDI1OUQgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTI1LTlFICAgKGhleCkJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0wMDI1OUUgICAgIChiYXNlIDE2KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlCMS03LEh1YXdlaSBCYXNlLEJhbnRpYW4sIExvbmdnYW5nIERpc3RyaWN0LFNoZW5aaGVuLEd1YW5nRG9uZyxDSElOQQotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi0wMC0yNS05RiAgIChoZXgpCQlUZWNobm9EaWdpdGFsIFRlY2hub2xvZ2llcyBHbWJICi0wMDI1OUYgICAgIChiYXNlIDE2KQkJVGVjaG5vRGlnaXRhbCBUZWNobm9sb2dpZXMgR21iSAotCQkJCUhhZXNzbGVyc3RyLiA4Ci0JCQkJRXJmdXJ0IFRodXJpbmdpYSA5OTA5NgotCQkJCUdFUk1BTlkKLQotMDAtMjUtQTAgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi0wMDI1QTAgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotMDAtMjUtQTEgICAoaGV4KQkJRW5hbGFzeXMKLTAwMjVBMSAgICAgKGJhc2UgMTYpCQlFbmFsYXN5cwotCQkJCTI1MCBBdmVuaWRhIENhbXBpbGxvCi0JCQkJQ2FsZXhpY28gQ2FsaWZvcm5pYSA5MjIzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQTIgICAoaGV4KQkJQWx0YSBEZWZpbmljaW9uIExJTkNFTyBTLkwuCi0wMDI1QTIgICAgIChiYXNlIDE2KQkJQWx0YSBEZWZpbmljaW9uIExJTkNFTyBTLkwuCi0JCQkJTWFyaWEgZGUgTHVuYSAxMSwgbmF2ZSA0Ci0JCQkJWmFyYWdvemEgIEVzLTUwMDE4Ci0JCQkJU1BBSU4KLQotMDAtMjUtQTMgICAoaGV4KQkJVHJpbWF4IFdpcmVsZXNzLCBJbmMuCi0wMDI1QTMgICAgIChiYXNlIDE2KQkJVHJpbWF4IFdpcmVsZXNzLCBJbmMuCi0JCQkJMjY3NSBTIEhvcnNlc2hvZSBEcgotCQkJCVN1aXRlIDQwMQotCQkJCU5hcGxlcyBGTCAzNDEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQTQgICAoaGV4KQkJRXVyb0Rlc2lnbiBlbWJlZGRlZCB0ZWNobm9sb2dpZXMgR21iSAotMDAyNUE0ICAgICAoYmFzZSAxNikJCUV1cm9EZXNpZ24gZW1iZWRkZWQgdGVjaG5vbG9naWVzIEdtYkgKLQkJCQlXYWxkc3RyYcODxbhlIDRBCi0JCQkJS2lyY2hkb3JmIGEuZC4gQW1wZXIgQmF5ZXJuIDg1NDE0Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS1BNSAgIChoZXgpCQlXYWxudXQgTWVkaWEgTmV0d29yawotMDAyNUE1ICAgICAoYmFzZSAxNikJCVdhbG51dCBNZWRpYSBOZXR3b3JrCi0JCQkJNDQwIE4gV29sZmUgUmQKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUE2ICAgKGhleCkJCUNlbnRyYWwgTmV0d29yayBTb2x1dGlvbiBDby4sIEx0ZC4KLTAwMjVBNiAgICAgKGJhc2UgMTYpCQlDZW50cmFsIE5ldHdvcmsgU29sdXRpb24gQ28uLCBMdGQuCi0JCQkJNTg0LTEsIFBhamFuZy1Eb25nLCBKYW5nQW4tR3UKLQkJCQlTdXdvbi1TaSwgS3l1bmdnaS1EbyA0NDAtODU0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUE3ICAgKGhleCkJCUNvbXZlcmdlLCBJbmMuCi0wMDI1QTcgICAgIChiYXNlIDE2KQkJQ29tdmVyZ2UsIEluYy4KLQkJCQk1MzkwIFRyaWFuZ2xlIFBhcmt3YXkKLQkJCQlTdWl0ZSAzMDAKLQkJCQlOb3Jjcm9zcyBHQSAzMDA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQTggICAoaGV4KQkJS29udHJvbiAoQmVpSmluZykgVGVjaG5vbG9neSBDby4sTHRkCi0wMDI1QTggICAgIChiYXNlIDE2KQkJS29udHJvbiAoQmVpSmluZykgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJMTcgQnVpbGRpbmcsIEJsb2NrICMxLEFCUC4gIDE4OCBXZXN0ZXJuIFNvdXRoIDR0aCBSaW5nIFJvYWQKLQkJCQlCZWlKaW5nICAxMDAwNzAKLQkJCQlDSElOQQotCi0wMC0yNS1BOSAgIChoZXgpCQlTaGFuZ2hhaSBFbWJlZHdheSBJbmZvcm1hdGlvbiBUZWNobm9sb2dpZXMgQ28uLEx0ZAotMDAyNUE5ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEVtYmVkd2F5IEluZm9ybWF0aW9uIFRlY2hub2xvZ2llcyBDby4sTHRkCi0JCQkJMkYsQnVpbGRpbmcgOSxMdWppYXp1aSBTb2Z0d2FyZSBQYXJrLCBOby4yMCxMYW5lIDkxLEUnU2hhbiBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDEyNwotCQkJCUNISU5BCi0KLTAwLTI1LUFBICAgKGhleCkJCUJlaWppbmcgU291bCBUZWNobm9sb2d5IENvLixMdGQuCi0wMDI1QUEgICAgIChiYXNlIDE2KQkJQmVpamluZyBTb3VsIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlSb29tIDYwNixYaW56aGVuZyBPZmZpY2UgQnVpbGRpbmcKLQkJCQlOby4xIENoYW5nd2EgTWlkZGxlIFN0cmVldCxIYWlkaWFuIERpc3RyaWN0LgotCQkJCUJFSUpJTkcgIDEwMDA4OQotCQkJCUNISU5BCi0KLTAwLTI1LUFCICAgKGhleCkJCUFJTyBMQ0QgUEMgQlUgLyBUUFYKLTAwMjVBQiAgICAgKGJhc2UgMTYpCQlBSU8gTENEIFBDIEJVIC8gVFBWCi0JCQkJMTBGLiwgTm8uLCAyMzAsIExpYW5jaGVuZyBSZC4KLQkJCQlaaG9uZ2hlIENpdHkgVGFpcGVpIFRhaXdhbiAyMzU1MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjUtQUMgICAoaGV4KQkJSS1UZWNoIGNvcnBvcmF0aW9uCi0wMDI1QUMgICAgIChiYXNlIDE2KQkJSS1UZWNoIGNvcnBvcmF0aW9uCi0JCQkJMS0xNSBTaGluLW9nYXdhIG1hY2hpCi0JCQkJU2hpbmp5dWt1LWt1IFRva3lvIDE2Mi0wODE0Ci0JCQkJSkFQQU4KLQotMDAtMjUtQUQgICAoaGV4KQkJTWFudWZhY3R1cmluZyBSZXNvdXJjZXMgSW50ZXJuYXRpb25hbAotMDAyNUFEICAgICAoYmFzZSAxNikJCU1hbnVmYWN0dXJpbmcgUmVzb3VyY2VzIEludGVybmF0aW9uYWwKLQkJCQkxNjAwIFVuaW9uIEhpbGwgUm9hZAotCQkJCUFscGhhcmV0dGEgR0EgMzAwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUFFICAgKGhleCkJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotMDAyNUFFICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBDb3Jwb3JhdGlvbgotCQkJCU9uZSBNaWNyb3NvZnQgV2F5Ci0JCQkJUmVkbW9uZCBXYXNoaW5ndG9uIDk4MDUyLTYzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUFGICAgKGhleCkJCUNPTUZJTEUgVGVjaG5vbG9neQotMDAyNUFGICAgICAoYmFzZSAxNikJCUNPTUZJTEUgVGVjaG5vbG9neQotCQkJCUd1cm8gNSBkb25nLCBHdXJvLWd1Ci0JCQkJMTA0LTUKLQkJCQlTZW91bCAgMTUyLTg0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS1CMCAgIChoZXgpCQlTY2htYXJ0eiBJbmMKLTAwMjVCMCAgICAgKGJhc2UgMTYpCQlTY2htYXJ0eiBJbmMKLQkJCQkyMzA3IFZhbGVyaWFuIFRybAotCQkJCVJvdW5kIFJvY2sgVFggNzg2NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUIxICAgKGhleCkJCU1heWEtQ3JlYXRpb24gQ29ycG9yYXRpb24KLTAwMjVCMSAgICAgKGJhc2UgMTYpCQlNYXlhLUNyZWF0aW9uIENvcnBvcmF0aW9uCi0JCQkJM0YsIEJ1aWxkaW5nIE0tMTAsIENlbnRyZSBvZCBIaS1UZWNoIEluZC4gRGlzdC4KLQkJCQlTaGVuemhlbiAgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjUtQjIgICAoaGV4KQkJTEZLLUxlbmtmbHVna8ODwrZycGVyc3lzdGVtZSBHbWJICi0wMDI1QjIgICAgIChiYXNlIDE2KQkJTEZLLUxlbmtmbHVna8ODwrZycGVyc3lzdGVtZSBHbWJICi0JCQkJTGFuZHNodXRlciBTdHJhw4PFuGUgIDI2Ci0JCQkJVW50ZXJzY2hsZWnDg8W4aGVpbSBCYXZhcmlhIDg1NzE2Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS1CMyAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAyNUIzICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1TIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1CNCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI1QjQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQjUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNUI1ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUI2ICAgKGhleCkJCVRlbGVjb20gRk0KLTAwMjVCNiAgICAgKGJhc2UgMTYpCQlUZWxlY29tIEZNCi0JCQkJODk1IFBseW1vdXRoIFJvYWQKLQkJCQlTbG91Z2ggQmVya3MgU0wxIDRMUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI1LUI3ICAgKGhleCkJCUNvc3RhciAgZWxlY3Ryb25pY3MsIGluYy4sCi0wMDI1QjcgICAgIChiYXNlIDE2KQkJQ29zdGFyICBlbGVjdHJvbmljcywgaW5jLiwKLQkJCQkzZmwsLTEgbm8gMTMsbGFuZSAxMjAsbmVpLWh1IHJvYWQgc2VjLjEsCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LUI4ICAgKGhleCkJCUFnaWxlIENvbW11bmljYXRpb25zLCBJbmMuCi0wMDI1QjggICAgIChiYXNlIDE2KQkJQWdpbGUgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkxMjQyNyBSZW53aWNrIERyCi0JCQkJUmFuY2hvIEN1Y2Ftb25nYSBDYWxpZm9ybmlhIDkxNzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1COSAgIChoZXgpCQlBZ2lsaW5rIFN5c3RlbXMgQ29ycC4KLTAwMjVCOSAgICAgKGJhc2UgMTYpCQlBZ2lsaW5rIFN5c3RlbXMgQ29ycC4KLQkJCQkjMzAwLTEyNzUgV2VzdCA2dGggQXZlCi0JCQkJVmFuY291dmVyIEJDIFY2SCAxQTYKLQkJCQlDQU5BREEKLQotMDAtMjUtQkEgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQgSVBECi0wMDI1QkEgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQgSVBECi0JCQkJNzAxIEUuIE1pZGRsZWZpZWxkIFJkLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUJCICAgKGhleCkJCUlOTkVSSU5UIENvLiwgTHRkLgotMDAyNUJCICAgICAoYmFzZSAxNikJCUlOTkVSSU5UIENvLiwgTHRkLgotCQkJCURvbmd5b3VuZyBDZW50cmFsVG93ZXIgIzIwMiwgR2V1bWp1bmctZG9uZywKLQkJCQlHdW5wby1zaSxLeXVuZ2dpLWRvLDQzNS0wNTAgU291dGggS09SRUEuCi0JCQkJR3VucG8tc2kgS3l1bmdnaS1kbyA0MzAwNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtQkMgICAoaGV4KQkJQXBwbGUsIEluYwotMDAyNUJDICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUJEICAgKGhleCkJCUl0YWxkYXRhIEluZ2VnbmVyaWEgZGVsbCdJZGVhIFMucC5BLgotMDAyNUJEICAgICAoYmFzZSAxNikJCUl0YWxkYXRhIEluZ2VnbmVyaWEgZGVsbCdJZGVhIFMucC5BLgotCQkJCXZpYWxlIEVyb2kgZGkgQ2VmYWxvbmlhIDEyMwotCQkJCVJvbWEgIDAwMTI4Ci0JCQkJSVRBTFkKLQotMDAtMjUtQkUgICAoaGV4KQkJVGVrdHJhcCBTeXN0ZW1zIEluYy4KLTAwMjVCRSAgICAgKGJhc2UgMTYpCQlUZWt0cmFwIFN5c3RlbXMgSW5jLgotCQkJCTE1IEJ1dGVhdSBTdC4KLQkJCQlTdWl0ZSAyMzAtOQotCQkJCUdhdGluZWF1IFF1ZWJlYyBKOFogMVY0Ci0JCQkJQ0FOQURBCi0KLTAwLTI1LUJGICAgKGhleCkJCVdpcmVsZXNzIENhYmxlcyBJbmMuCi0wMDI1QkYgICAgIChiYXNlIDE2KQkJV2lyZWxlc3MgQ2FibGVzIEluYy4KLQkJCQkyODgwIFphbmtlciBSZCwgU3RlIDIwMwotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1DMCAgIChoZXgpCQlaaWxsaW9uVFYgQ29ycG9yYXRpb24KLTAwMjVDMCAgICAgKGJhc2UgMTYpCQlaaWxsaW9uVFYgQ29ycG9yYXRpb24KLQkJCQkxMTcwIEtpZmVyIFJvYWQKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUMxICAgKGhleCkJCU5hd29vIEtvcmVhIENvcnAuCi0wMDI1QzEgICAgIChiYXNlIDE2KQkJTmF3b28gS29yZWEgQ29ycC4KLQkJCQk0RmwuLCBIYW53b24gQmxkZy4sIDYtMSwgU3VuYWUtZG9uZywgQnVuZGFuZy1ndSwKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUMyICAgKGhleCkJCVJpbmdCZWxsIENvLixMdGQuCi0wMDI1QzIgICAgIChiYXNlIDE2KQkJUmluZ0JlbGwgQ28uLEx0ZC4KLQkJCQkxMDU4NiBLaW5nR2VvcmdlIEh3eQotCQkJCVN1cnJleSBCLkMgVjNUIDJYMwotCQkJCUNBTkFEQQotCi0wMC0yNS1DMyAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTAwMjVDMyAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlDQVJSRVRFUkEgQkFTRSBBRVJFQSAjIDU4NTAKLQkJCQlaYXBvcGFuIEphbGlzY28gNDQxMzAKLQkJCQlNRVhJQ08KLQotMDAtMjUtQzQgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi0wMDI1QzQgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtQzUgICAoaGV4KQkJU3RhciBMaW5rIENvbW11bmljYXRpb24gUHZ0LiBMdGQuCi0wMDI1QzUgICAgIChiYXNlIDE2KQkJU3RhciBMaW5rIENvbW11bmljYXRpb24gUHZ0LiBMdGQuCi0JCQkJSFIxMTQvNiAmIEhyMTMyLzYsIFB1bHByZWhsYWRwdXIsCi0JCQkJU3VyYWoga3VuZCBSb2FkLCBOZWFyIEJhZGFycHVyLAotCQkJCU5ldyBEZWxoaSAgMTEwMDQ0Ci0JCQkJSU5ESUEKLQotMDAtMjUtQzYgICAoaGV4KQkJa2FzZXJjb3JwLCBsdGQKLTAwMjVDNiAgICAgKGJhc2UgMTYpCQlrYXNlcmNvcnAsIGx0ZAotCQkJCVNvdXRoIDIwLEdhb2J1IFJvYWQsR2FvYnUgVG93bgotCQkJCURvbmd3YW4gR3Vhbmdkb25nIDUyMzAwMAotCQkJCUNISU5BCi0KLTAwLTI1LUM3ICAgKGhleCkJCWFsdGVrIENvcnBvcmF0aW9uCi0wMDI1QzcgICAgIChiYXNlIDE2KQkJYWx0ZWsgQ29ycG9yYXRpb24KLQkJCQkzRiwgTm8uIDEwLCBMaS1Ic2luIFJvYWQsIFNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhzaW5jaHUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjUtQzggICAoaGV4KQkJUy1BY2Nlc3MgR21iSAotMDAyNUM4ICAgICAoYmFzZSAxNikJCVMtQWNjZXNzIEdtYkgKLQkJCQlPYmVyaGF1c2Vuc3RyYXNzZSA0NwotCQkJCVdldHRzd2lsIGEvQSBadWVyaWNoIDg5MDcKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0yNS1DOSAgIChoZXgpCQlTSEVOWkhFTiBIVUFQVSBESUdJVEFMIENPLiwgTFRECi0wMDI1QzkgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gSFVBUFUgRElHSVRBTCBDTy4sIExURAotCQkJCUZ1dGlhbiBEaXN0cmljdCxDaGVnb25nbWlhbyxUaWFuQW4gQ3liZXJwYXJrCi0JCQkJMTcvRiBFYXN0LEhpZ2gtVGVjaCBQbGF6YSwgUGhhc2UgwqLDsgotCQkJCVNoZW5aaGVuIEd1YW5nZG9uZyBQcm92aW5jZSA1MTgwNDAKLQkJCQlDSElOQQotCi0wMC0yNS1DQSAgIChoZXgpCQlMUyBSZXNlYXJjaCwgTExDCi0wMDI1Q0EgICAgIChiYXNlIDE2KQkJTFMgUmVzZWFyY2gsIExMQwotCQkJCVc2NiBOMjIwIENvbW1lcmNlIENvdXJ0Ci0JCQkJQ2VkYXJidXJnIFdJIDUzMDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1DQiAgIChoZXgpCQlSZWluZXIgU0NUCi0wMDI1Q0IgICAgIChiYXNlIDE2KQkJUmVpbmVyIFNDVAotCQkJCVJlaW5lciBLYXJ0ZW5nZXLDpHRlIEdtYkggJiBDby4gS0cuCi0JCQkJR29ldGhlc3RyLiAxNAotCQkJCUZ1cnR3YW5nZW4gIDc4MTIwCi0JCQkJR0VSTUFOWQotCi0wMC0yNS1DQyAgIChoZXgpCQlNb2JpbGUgQ29tbXVuaWNhdGlvbnMgS29yZWEgSW5jb3Jwb3JhdGVkCi0wMDI1Q0MgICAgIChiYXNlIDE2KQkJTW9iaWxlIENvbW11bmljYXRpb25zIEtvcmVhIEluY29ycG9yYXRlZAotCQkJCTEwMTEtMTAxMiwgU3V3b24gSGlnaCBWZW50dXJlIFZhbGxleSwKLQkJCQk5NTggR29zYWVrLWRvbmcsIEd3b25zZW9uLWd1LAotCQkJCVN1d29uLXNpLCBHeWVvbmdnaS1kbywgNDQxLTM2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS1DRCAgIChoZXgpCQlTa3lsYW5lIE9wdGljcwotMDAyNUNEICAgICAoYmFzZSAxNikJCVNreWxhbmUgT3B0aWNzCi0JCQkJUnVlIGQnQXJsb24sIDYKLQkJCQlXaW5kaG9mICA4Mzk5Ci0JCQkJTFVYRU1CT1VSRwotCi0wMC0yNS1DRSAgIChoZXgpCQlJbm5lclNwYWNlCi0wMDI1Q0UgICAgIChiYXNlIDE2KQkJSW5uZXJTcGFjZQotCQkJCVBPIEJveCAyMTg2Ci0JCQkJR3JhbmQgUmFwaWRzIE1JIDQ5NTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1DRiAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNUNGICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0wMC0yNS1EMCAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMDAyNUQwICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJIENvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotMDAtMjUtRDEgICAoaGV4KQkJRWFzdGVjaCBFbGVjdHJvbmljcyAoVGFpd2FuKSBJbmMuCi0wMDI1RDEgICAgIChiYXNlIDE2KQkJRWFzdGVjaCBFbGVjdHJvbmljcyAoVGFpd2FuKSBJbmMuCi0JCQkJMTNGLCBOby4gOTksIFNlYy4gMSwgTmFua2FuIFJvYWQsIEx1Y2h1IFNoaWFuZwotCQkJCVRhb3l1YW4gSHNpZW4gMzM4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1EMiAgIChoZXgpCQlJbnBlZ1Zpc2lvbiBDby4sIEx0ZAotMDAyNUQyICAgICAoYmFzZSAxNikJCUlucGVnVmlzaW9uIENvLiwgTHRkCi0JCQkJMjI2LTMsIEJ1Z29rLWRvbmcsIEdldW1qZW9uZy1ndSwKLQkJCQlCdXNhbiAgNjA5LTMyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNS1EMyAgIChoZXgpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMKLTAwMjVEMyAgICAgKGJhc2UgMTYpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzLCBJbmMKLQkJCQk4RiAuLCBOby45NCwgQmFvemhvbmcgUmQuCi0JCQkJWGluZGlhbiBDaXR5ICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LUQ0ICAgKGhleCkJCUZvcnRyZXNzIFRlY2hub2xvZ2llcwotMDAyNUQ0ICAgICAoYmFzZSAxNikJCUZvcnRyZXNzIFRlY2hub2xvZ2llcwotCQkJCTIgVGVjaG5vbG9neSBQYXJrIERyCi0JCQkJV2VzdGZvcmQgTUEgMDE4ODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUQ1ICAgKGhleCkJCVJvYm9uaWNhIChQdHkpIEx0ZAotMDAyNUQ1ICAgICAoYmFzZSAxNikJCVJvYm9uaWNhIChQdHkpIEx0ZAotCQkJCTQxIFBhcmsgQXZlbnVlIE5vcnRoCi0JCQkJSGlnaHdheSBCdXNpbmVzcyBQYXJrCi0JCQkJQ2VudHVyaW9uIEdhdXRlbmcgMDA0NgotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0yNS1ENiAgIChoZXgpCQlUaGUgS3JvZ2VyIENvLgotMDAyNUQ2ICAgICAoYmFzZSAxNikJCVRoZSBLcm9nZXIgQ28uCi0JCQkJMTE0NTAgR3Jvb21zIFJvYWQKLQkJCQlCbHVlIEFzaCBPSCA0NTI0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtRDcgICAoaGV4KQkJQ0VETwotMDAyNUQ3ICAgICAoYmFzZSAxNikJCUNFRE8KLQkJCQlWaWRlbnNrYSAxMjcKLQkJCQlCUk5PICA2MTkwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTI1LUQ4ICAgKGhleCkJCUtPUkVBIE1BSU5URU5BTkNFCi0wMDI1RDggICAgIChiYXNlIDE2KQkJS09SRUEgTUFJTlRFTkFOQ0UKLQkJCQkzRiBIQUVMSU0gQlVJRElORyAxMDMtNywgR1VSTy01RE9ORwotCQkJCUdVUk8tR1UsCi0JCQkJU0VPVUwgIDE1Mi04NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtRDkgICAoaGV4KQkJRGF0YUZhYiBTeXN0ZW1zIEluYy4KLTAwMjVEOSAgICAgKGJhc2UgMTYpCQlEYXRhRmFiIFN5c3RlbXMgSW5jLgotCQkJCTM4NS0zIEhvbmd6dW4gUm9hZAotCQkJCVBpbmd6aGVuIENpdHkgVGFveXVhbiBDb3VudHkgMzI0NjYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LURBICAgKGhleCkJCVNlY3VyYSBLZXkKLTAwMjVEQSAgICAgKGJhc2UgMTYpCQlTZWN1cmEgS2V5Ci0JCQkJMjAzMDEgTm9yZGhvZmYgU3QuCi0JCQkJQ2hhdHN3b3J0aCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjUtREIgICAoaGV4KQkJQVRJIEVsZWN0cm9uaWNzKFNoZW56aGVuKSBDby4sIExURAotMDAyNURCICAgICAoYmFzZSAxNikJCUFUSSBFbGVjdHJvbmljcyhTaGVuemhlbikgQ28uLCBMVEQKLQkJCQkyRiwxc3QgQnVsaWRpbmcsVGFuZ3lhbnNoYW4gSW5kdXN0cmlhbCBQYXJrLAotCQkJCVRhbmdrZW5nIFZpbGxhZ2UsU2hpeWFuIFRvd24sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwOAotCQkJCUNISU5BCi0KLTAwLTI1LURDICAgKGhleCkJCVN1bWl0b21vIEVsZWN0cmljIE5ldHdvcmtzLCBJbmMKLTAwMjVEQyAgICAgKGJhc2UgMTYpCQlTdW1pdG9tbyBFbGVjdHJpYyBOZXR3b3JrcywgSW5jCi0JCQkJMS0xLTMsIFNoaW1heWEsIEtvbm9oYW5hLWt1Ci0JCQkJT3Nha2EgT3Nha2EgUHJlZmVjdHVyZSA1NTQtMDAyNAotCQkJCUpBUEFOCi0KLTAwLTI1LUREICAgKGhleCkJCVNVTk5ZVEVLIElORk9STUFUSU9OIENPLiwgTFRELgotMDAyNUREICAgICAoYmFzZSAxNikJCVNVTk5ZVEVLIElORk9STUFUSU9OIENPLiwgTFRELgotCQkJCTEyRiwgTk8uIDg4LCBIU0lOLVRFIFJPQUQKLQkJCQlTQU4gQ0hVTkcgQ0lUWQotCQkJCVRBSVBFSSBIU0lFTiAgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNS1ERSAgIChoZXgpCQlQcm9iaXRzIENvLiwgTFRELgotMDAyNURFICAgICAoYmFzZSAxNikJCVByb2JpdHMgQ28uLCBMVEQuCi0JCQkJIzE1MDIsIEtvbG9uIFNjaWVuY2UgVmFsbGV5IElJLCA4MTEKLQkJCQlHdXJvLURvbmcsIEd1cm8tR3UsCi0JCQkJU2VvdWwgIDE1Mi04NzgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtREYgICAoaGV4KQkJUFJJVkFURQotMDAyNURGICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC0yNS1FMCAgIChoZXgpCQlDZWVkVGVjIFNkbiBCaGQKLTAwMjVFMCAgICAgKGJhc2UgMTYpCQlDZWVkVGVjIFNkbiBCaGQKLQkJCQkzMDMtNC01LCBLcnlzdGFsIFBvaW50IEJ1c2luZXNzIENlbnRlcgotCQkJCUJheWFuIExlcGFzIFBlbmFuZyAxMTkwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTI1LUUxICAgKGhleCkJCVNIQU5HSEFJIFNFRVlPTyBFTEVDVFJPTklDICYgVEVDSE5PTE9HWSBDTy4sIExURAotMDAyNUUxICAgICAoYmFzZSAxNikJCVNIQU5HSEFJIFNFRVlPTyBFTEVDVFJPTklDICYgVEVDSE5PTE9HWSBDTy4sIExURAotCQkJCVJNNzAxLFhJTidBTiBCVUlMRElORyw5OSBUSUFOWkhPVSBSRCxYVUhVSSBESVNUUklDVCxTSEFOR0hBSQotCQkJCVNIQU5HSEFJICAyMDAyMzMKLQkJCQlDSElOQQotCi0wMC0yNS1FMiAgIChoZXgpCQlFdmVyc3ByaW5nIEluZHVzdHJ5IENvLiwgTHRkLgotMDAyNUUyICAgICAoYmFzZSAxNikJCUV2ZXJzcHJpbmcgSW5kdXN0cnkgQ28uLCBMdGQuCi0JCQkJN0YuLCBOby4gNjA5LCBTZWMgMSwgV2Fuc2hvdSBSZC4KLQkJCQlHdWVpc2hhbiBUb3duc2hpcCBUYW95dWFuIENvdW50eSAzMzMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LUUzICAgKGhleCkJCUhhbnNoaW5pdCBJbmMuCi0wMDI1RTMgICAgIChiYXNlIDE2KQkJSGFuc2hpbml0IEluYy4KLQkJCQlEb25nLVdvbiBCbGQgM0YsIDM5NS0xMywgR2FsLU1hIDIsIFNlby1HdQotCQkJCURhZWplb24gIDMwMi04MDkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjUtRTQgICAoaGV4KQkJT01OSS1XaUZpLCBMTEMKLTAwMjVFNCAgICAgKGJhc2UgMTYpCQlPTU5JLVdpRmksIExMQwotCQkJCTEwNyBQaW5lIEhpbGwgUm9hZAotCQkJCUJlcndpY2sgTWFpbmUgMDM5MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUU1ICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIEluYwotMDAyNUU1ICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIEluYwotCQkJCTYwLTM5ICxHYXNhbi1Eb25nCi0JCQkJR3VtY2hvbi1ndQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUU2ICAgKGhleCkJCUJlbGdpYW4gTW9uaXRvcmluZyBTeXN0ZW1zIGJ2YmEKLTAwMjVFNiAgICAgKGJhc2UgMTYpCQlCZWxnaWFuIE1vbml0b3JpbmcgU3lzdGVtcyBidmJhCi0JCQkJVGguIFNldmVuc2xhYW4gMTA2Ci0JCQkJS29ydHJpamsgV1ZMIDg1MDAKLQkJCQlCRUxHSVVNCi0KLTAwLTI1LUU3ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0wMDI1RTcgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCAgMjIxODgKLQkJCQlTV0VERU4KLQotMDAtMjUtRTggICAoaGV4KQkJSWRhaG8gVGVjaG5vbG9neQotMDAyNUU4ICAgICAoYmFzZSAxNikJCUlkYWhvIFRlY2hub2xvZ3kKLQkJCQkzOTAgV2FrYXJhIHdheQotCQkJCVNhbHQgbGFrZSBDaXR5IFVUIDg0MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1FOSAgIChoZXgpCQlpLW1hdGUgRGV2ZWxvcG1lbnQsIEluYy4KLTAwMjVFOSAgICAgKGJhc2UgMTYpCQlpLW1hdGUgRGV2ZWxvcG1lbnQsIEluYy4KLQkJCQk4MzgzIDE1OHRoIEF2ZS4gTi5FLiwgU3VpdGUgMzAwLCBSZWRtb25kLAotCQkJCVdBIDk4MDUyLTM4NzEKLQkJCQlXYXNoaW5ndG9uIFdBIDk4MDUyLTM4NzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUVBICAgKGhleCkJCUlwaGlvbiBCVgotMDAyNUVBICAgICAoYmFzZSAxNikJCUlwaGlvbiBCVgotCQkJCVdpbGxlbXN0cmFhdCAxMDYKLQkJCQlFaW5kaG92ZW4gIDU2MTZHRQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTI1LUVCICAgKGhleCkJCVJldXRlY2ggUmFkYXIgU3lzdGVtcyAoUFRZKSBMdGQKLTAwMjVFQiAgICAgKGJhc2UgMTYpCQlSZXV0ZWNoIFJhZGFyIFN5c3RlbXMgKFBUWSkgTHRkCi0JCQkJMzUgRWxlY3Ryb24gQXZlbnVlCi0JCQkJVGVjaG5vcGFyawotCQkJCVN0ZWxsZW5ib3NjaCBXZXN0ZXJuIENhcGUgNzYwMAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC0yNS1FQyAgIChoZXgpCQlIdW1hbndhcmUKLTAwMjVFQyAgICAgKGJhc2UgMTYpCQlIdW1hbndhcmUKLQkJCQk0NDUgcnVlIGR1IFBhcmMgSW5kdXN0cmllbAotCQkJCUxvbmd1ZXVpbCBRdcOpYmVjIEo0SCAzVjcKLQkJCQlDQU5BREEKLQotMDAtMjUtRUQgICAoaGV4KQkJTnVWbyBUZWNobm9sb2dpZXMgTExDCi0wMDI1RUQgICAgIChiYXNlIDE2KQkJTnVWbyBUZWNobm9sb2dpZXMgTExDCi0JCQkJMzAxNSBLdXN0b20gRHJpdmUKLQkJCQlIZWJyb24gS1kgNDEwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUVFICAgKGhleCkJCUF2dGV4IEx0ZAotMDAyNUVFICAgICAoYmFzZSAxNikJCUF2dGV4IEx0ZAotCQkJCVVuaXQgRzUgQ2FwaXRhbCBCdXNpbmVzcyBQYXJrCi0JCQkJUGFya3dheQotCQkJCUNhcmRpZmYgIENGMyAyUFgKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC0yNS1FRiAgIChoZXgpCQlJLVRFQyBDby4sIEx0ZC4KLTAwMjVFRiAgICAgKGJhc2UgMTYpCQlJLVRFQyBDby4sIEx0ZC4KLQkJCQk3L0YsS0FXQVJBTUFDSEkgS09ZTyBCTERHLjMtNC0zLEtBV0FSQU1DSEksQ0hVTy1LVSwKLQkJCQlPU0FLQSAgNTQxLTAwNDgKLQkJCQlKQVBBTgotCi0wMC0yNS1GMCAgIChoZXgpCQlTdWdhIEVsZWN0cm9uaWNzIExpbWl0ZWQKLTAwMjVGMCAgICAgKGJhc2UgMTYpCQlTdWdhIEVsZWN0cm9uaWNzIExpbWl0ZWQKLQkJCQlVbml0cyAxOTA0LTE5MDcsIENoZXZhbGllciBDb21tZXJjaWFsIENlbnRyZSwKLQkJCQk4IFdhbmcgSG9pIFJvYWQsICwKLQkJCQlLb3dsb29uIEJheSBIb25nIEtvbmcgCi0JCQkJQ0hJTkEKLQotMDAtMjUtRjEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTAwMjVGMSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUYyICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDI1RjIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNS1GMyAgIChoZXgpCQlOb3Jkd2VzdGRldXRzY2hlIFrDpGhsZXJyZXZpc2lvbgotMDAyNUYzICAgICAoYmFzZSAxNikJCU5vcmR3ZXN0ZGV1dHNjaGUgWsOkaGxlcnJldmlzaW9uCi0JCQkJSW5nLiBBdWcuIEtuZW1leWVyIEdtYkggJiBDby4gS0cKLQkJCQlIZWlkZXdlZyAzMwotCQkJCUJhZCBMYWVyIE5pZWRlcnNhY2hzZW4gNDkxOTYKLQkJCQlHRVJNQU5ZCi0KLTAwLTI1LUY0ICAgKGhleCkJCUtvQ28gQ29ubmVjdG9yIEFHCi0wMDI1RjQgICAgIChiYXNlIDE2KQkJS29DbyBDb25uZWN0b3IgQUcKLQkJCQlNYXJpZW5zdHJhw4PFuGUgMTIKLQkJCQlCZXJsaW4gIDEwMTE3Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS1GNSAgIChoZXgpCQlEVlMgS29yZWEsIENvLiwgTHRkCi0wMDI1RjUgICAgIChiYXNlIDE2KQkJRFZTIEtvcmVhLCBDby4sIEx0ZAotCQkJCTQ5Ny0zLCBTYW5nSGEtRG9uZywgR2loZXVuZy1ndQotCQkJCVImRCBIYXJkd2FyZSAyVGVhbQotCQkJCVlvbmctSW4gY2l0eSBHeWVvbmdnaS1kbyA0NDYtOTE0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI1LUY2ICAgKGhleCkJCW5ldFRBTEsuY29tLCBJbmMuCi0wMDI1RjYgICAgIChiYXNlIDE2KQkJbmV0VEFMSy5jb20sIEluYy4KLQkJCQkxMTAwIE5XIDE2M1JEIERSSVZFCi0JCQkJU1VJVEUgQi00Ci0JCQkJTk9SVEggTUlBTUkgQkVBQ0ggRkwgMzMxNjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUY3ICAgKGhleCkJCUFuc2FsZG8gU1RTIFVTQQotMDAyNUY3ICAgICAoYmFzZSAxNikJCUFuc2FsZG8gU1RTIFVTQQotCQkJCTEwMDAgVGVjaG5vbG9neSBEcml2ZQotCQkJCVVuaW9uIFN3aXRjaCAmIFNpZ25hbCBCdWlsZGluZwotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI1LUY5ICAgKGhleCkJCUdNSyBlbGVjdHJvbmljIGRlc2lnbiBHbWJICi0wMDI1RjkgICAgIChiYXNlIDE2KQkJR01LIGVsZWN0cm9uaWMgZGVzaWduIEdtYkgKLQkJCQlEYWltbGVyc3RyLiA4Ci0JCQkJV2VybmJlcmctS29lYmxpdHogQmF2YXJpYSBELTkyNTMzCi0JCQkJR0VSTUFOWQotCi0wMC0yNS1GQSAgIChoZXgpCQlKJk0gQW5hbHl0aWsgQUcKLTAwMjVGQSAgICAgKGJhc2UgMTYpCQlKJk0gQW5hbHl0aWsgQUcKLQkJCQlXaWxseS1NZXNzZXJzY2htaXR0LVN0cmFzc2UgOAotCQkJCUVzc2luZ2VuIEJXIDczNDU3Ci0JCQkJR0VSTUFOWQotCi0wMC0yNS1GQiAgIChoZXgpCQlUdW5zdGFsbCBIZWFsdGhjYXJlIEEvUwotMDAyNUZCICAgICAoYmFzZSAxNikJCVR1bnN0YWxsIEhlYWx0aGNhcmUgQS9TCi0JCQkJU3Ryb2VtbWVuIDYKLQkJCQlOb2VycmVzdW5kYnkgIDk0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTI1LUZDICAgKGhleCkJCUVOREEgRU5EVVNUUklZRUwgRUxFS1RST05JSyBMVEQuIFNUSS4KLTAwMjVGQyAgICAgKGJhc2UgMTYpCQlFTkRBIEVORFVTVFJJWUVMIEVMRUtUUk9OSUsgTFRELiBTVEkuCi0JCQkJWS4gRHVkdWxsdSBCYXJiYXJvcyBDLiBLdXR1cCBTLiBOby4gMjAKLQkJCQlVbXJhbml5ZQotCQkJCUlzdGFuYnVsICAzNDc3NQotCQkJCVRVUktFWQotCi0wMC0yNS1GRCAgIChoZXgpCQlPQlIgQ2VudHJ1bSBUZWNobmlraSBNb3Jza2llaiBTLkEuCi0wMDI1RkQgICAgIChiYXNlIDE2KQkJT0JSIENlbnRydW0gVGVjaG5pa2kgTW9yc2tpZWogUy5BLgotCQkJCURpY2ttYW5hIDYyCi0JCQkJR2R5bmlhICA4MS0xMDkKLQkJCQlQT0xBTkQKLQotMDAtMjUtRkUgICAoaGV4KQkJUGlsb3QgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLTAwMjVGRSAgICAgKGJhc2UgMTYpCQlQaWxvdCBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgotCQkJCU5vLiAyLCBUenUtQ2hpYW5nIDNyZCBSb2FkLCBDaHVuZy1MaSBJbmR1c3RyaWFsIFpvbmUsCi0JCQkJVGFveXVhbiAgSHNpZW4gMzIwNjMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI1LUZGICAgKGhleCkJCUNyZU5vdmEgVGVjaG5vbG9neSBHbWJICi0wMDI1RkYgICAgIChiYXNlIDE2KQkJQ3JlTm92YSBUZWNobm9sb2d5IEdtYkgKLQkJCQlBbiBkZXIgU2NoaW5kaG9obCA3Ci0JCQkJU3VsemJhY2ggSGVzc2VuIDY1ODQzCi0JCQkJR0VSTUFOWQotCi0wMC0yNi0wMCAgIChoZXgpCQlURUFDIEF1c3RyYWxpYSBQdHkgTHRkLgotMDAyNjAwICAgICAoYmFzZSAxNikJCVRFQUMgQXVzdHJhbGlhIFB0eSBMdGQuCi0JCQkJNzUgTm9ydGhnYXRlIERyaXZlCi0JCQkJVGhvbWFzdG93biBWaWN0b3JpYSAzMDc0Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTI2LTAxICAgKGhleCkJCUN1dGVyYSBJbmMKLTAwMjYwMSAgICAgKGJhc2UgMTYpCQlDdXRlcmEgSW5jCi0JCQkJMzI0MCBCYXlzaG9yZSBCbHZkCi0JCQkJQnJpc2JhbmUgQ0EgOTQ0MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTAyICAgKGhleCkJCVNNQVJUIFRlbXBzIExMQwotMDAyNjAyICAgICAoYmFzZSAxNikJCVNNQVJUIFRlbXBzIExMQwotCQkJCTMwMyBTIEJ5cmtpdCBTdAotCQkJCU1pc2hhd2FrYSBJTiA0NjU0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMDMgICAoaGV4KQkJU2hlbnpoZW4gV2lzdGFyIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTAwMjYwMyAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBXaXN0YXIgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCVJtOTE5LCBTY2llbmNlICZUZWNobm9sb2d5IFNlcnZpY2UgQ2VudGVyCi0JCQkJTm8uMSBRaWxpbiBSZAotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjYtMDQgICAoaGV4KQkJQXVkaW8gUHJvY2Vzc2luZyBUZWNobm9sb2d5IEx0ZAotMDAyNjA0ICAgICAoYmFzZSAxNikJCUF1ZGlvIFByb2Nlc3NpbmcgVGVjaG5vbG9neSBMdGQKLQkJCQlXaGl0ZXJvY2sgQnVzaW5lc3MgUGFyawotCQkJCTcyOSBTcHJpbmdmaWVsZCBSb2FkCi0JCQkJQmVsZmFzdCBDb3VudHkgQW50cmltIEJUMTIgN0ZQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjYtMDUgICAoaGV4KQkJQ0MgU3lzdGVtcyBBQgotMDAyNjA1ICAgICAoYmFzZSAxNikJCUNDIFN5c3RlbXMgQUIKLQkJCQlCb3ggODMKLQkJCQlBbGZ0YSBTd2VkZW4gODIyMjIKLQkJCQlTV0VERU4KLQotMDAtMjYtMDYgICAoaGV4KQkJUkFVTUZFTEQgR21iSAotMDAyNjA2ICAgICAoYmFzZSAxNikJCVJBVU1GRUxEIEdtYkgKLQkJCQlSZWljaGVuYmVyZ2VyIFN0ci4gMTI0Ci0JCQkJQmVybGluICAxMDk5OQotCQkJCUdFUk1BTlkKLQotMDAtMjYtMDcgICAoaGV4KQkJRW5hYmxpbmcgVGVjaG5vbG9neSBQdHkgTHRkCi0wMDI2MDcgICAgIChiYXNlIDE2KQkJRW5hYmxpbmcgVGVjaG5vbG9neSBQdHkgTHRkCi0JCQkJMjMvNDQgS2luZ3MgUGFyayBSb2FkCi0JCQkJV2VzdCBQZXJ0aCBXZXN0ZXJuIEF1c3RyYWxpYSA2MDA1Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTI2LTA4ICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjYwOCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wOSAgIChoZXgpCQlQaHlsbGlzIENvLiwgTHRkLgotMDAyNjA5ICAgICAoYmFzZSAxNikJCVBoeWxsaXMgQ28uLCBMdGQuCi0JCQkJOXRoIEZsLiwgUm9vbSAzLzQsIE5vLiA1MiwgU2VjLiAyLCBDaHVuZyBTaGFuIE5vcnRoIFJvYWQsCi0JCQkJVGFpcGVpICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTBBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjYwQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2MEIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMEMgICAoaGV4KQkJRGF0YXJhbQotMDAyNjBDICAgICAoYmFzZSAxNikJCURhdGFyYW0KLQkJCQkxODYgUHJpbmNldG9uIFJkLgotCQkJCUJsZGcuIDNBCi0JCQkJV2VzdCBXaW5kc29yIE5KIDA4NTUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wRCAgIChoZXgpCQlNaWNyb25ldGljcywgSW5jLgotMDAyNjBEICAgICAoYmFzZSAxNikJCU1pY3JvbmV0aWNzLCBJbmMuCi0JCQkJMjYgSGFtcHNoaXJlIERyCi0JCQkJSHVkc29uIE5IIDAzMDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wRSAgIChoZXgpCQlBYmxhemUgU3lzdGVtcywgTExDCi0wMDI2MEUgICAgIChiYXNlIDE2KQkJQWJsYXplIFN5c3RlbXMsIExMQwotCQkJCTUyMyBXZXN0IFZhbGxleSBSb2FkCi0JCQkJV2F5bmUgUGVubnN5bHZhbmlhIDE5MDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0wRiAgIChoZXgpCQlMaW5uIFByb2R1Y3RzIEx0ZAotMDAyNjBGICAgICAoYmFzZSAxNikJCUxpbm4gUHJvZHVjdHMgTHRkCi0JCQkJR2xhc2dvdyBSb2FkCi0JCQkJV2F0ZXJmb290Ci0JCQkJR2xhc2dvdyAgRzc2IDBFUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI2LTEwICAgKGhleCkJCUFwYWNld2F2ZSBUZWNobm9sb2dpZXMKLTAwMjYxMCAgICAgKGJhc2UgMTYpCQlBcGFjZXdhdmUgVGVjaG5vbG9naWVzCi0JCQkJNDgzODkgRnJlbW9udCBCbHZkLCBTVEUjMTAwCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMTEgICAoaGV4KQkJTGljZXJhIEFCCi0wMDI2MTEgICAgIChiYXNlIDE2KQkJTGljZXJhIEFCCi0JCQkJVGVrbmlrcmluZ2VuIDFDCi0JCQkJTGlua8O2cGluZyAgNTgzMzAKLQkJCQlTV0VERU4KLQotMDAtMjYtMTIgICAoaGV4KQkJU3BhY2UgRXhwbG9yYXRpb24gVGVjaG5vbG9naWVzCi0wMDI2MTIgICAgIChiYXNlIDE2KQkJU3BhY2UgRXhwbG9yYXRpb24gVGVjaG5vbG9naWVzCi0JCQkJMSBSb2NrZXQgUm9hZAotCQkJCUhhd3Rob3JuZSBDQSA5MDI1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMTMgICAoaGV4KQkJRW5nZWwgQXhpbCBTLkwuCi0wMDI2MTMgICAgIChiYXNlIDE2KQkJRW5nZWwgQXhpbCBTLkwuCi0JCQkJUHVpZyBkZWxzIFR1ZG9ucywgNgotCQkJCVBvbC4gSW5kdXN0cmlhbCBTYW50aWdhCi0JCQkJQmFyYmVyYSBkZWwgVmFsbGVzIEJhcmNlbG9uYSAwODIxMAotCQkJCVNQQUlOCi0KLTAwLTI2LTE0ICAgKGhleCkJCUtUTkYKLTAwMjYxNCAgICAgKGJhc2UgMTYpCQlLVE5GCi0JCQkJMjA0LERhZXJ5dW5ndGVjaG5vdG93bjEsMzI3LEdhc2FuLURvbmcsCi0JCQkJR2V1bWNoZW9uLUd1LAotCQkJCVNlb3VsICAxNTMtNzcxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTE1ICAgKGhleCkJCVRlcmFjb20gTGltaXRlZAotMDAyNjE1ICAgICAoYmFzZSAxNikJCVRlcmFjb20gTGltaXRlZAotCQkJCUItODQKLQkJCQlTZWN0b3IgLSA2MAotCQkJCU5vaWRhIFV0dGFyIFByYWRlc2ggMjAxMzAxCi0JCQkJSU5ESUEKLQotMDAtMjYtMTYgICAoaGV4KQkJUm9zZW1vdW50IEluYy4KLTAwMjYxNiAgICAgKGJhc2UgMTYpCQlSb3NlbW91bnQgSW5jLgotCQkJCTgyMDAgTWFya2V0IEJvdWxldmFyZAotCQkJCUNoYW5oYXNzZW4gTU4gNTUzMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTE3ICAgKGhleCkJCU9FTSBXb3JsZHdpZGUKLTAwMjYxNyAgICAgKGJhc2UgMTYpCQlPRU0gV29ybGR3aWRlCi0JCQkJMjkyMCBLZWxseSBBdmUKLQkJCQlXYXRlcnRvd24gU0QgNTcyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTE4ICAgKGhleCkJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotMDAyNjE4ICAgICAoYmFzZSAxNikJCUFTVVNUZWsgQ09NUFVURVIgSU5DLgotCQkJCTE1LExpLVRlIFJkLixQZWl0b3UKLQkJCQlUYWlwZWkgVGFpd2FuIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtMTkgICAoaGV4KQkJRlJDCi0wMDI2MTkgICAgIChiYXNlIDE2KQkJRlJDCi0JCQkJMTUxMSBTb3V0aCBCZW5qYW1pbiBBdmVudWUKLQkJCQlNYXNvbiBDaXR5IElBIDUwNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0xQSAgIChoZXgpCQlGZW10b2NvbW0gU3lzdGVtIFRlY2hub2xvZ3kgQ29ycC4KLTAwMjYxQSAgICAgKGJhc2UgMTYpCQlGZW10b2NvbW0gU3lzdGVtIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkyRi4tMixOby4yOCwgVGFpeXVhbiBTdC4sCi0JCQkJSmh1YmVpIENpdHksIEhzaW5jaHUgQ291bnRyeSwgMzAyODgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTFCICAgKGhleCkJCUxBVVJFTCBCQU5LIE1BQ0hJTkVTIENPLiwgTFRELgotMDAyNjFCICAgICAoYmFzZSAxNikJCUxBVVJFTCBCQU5LIE1BQ0hJTkVTIENPLiwgTFRELgotCQkJCTEyLTYKLQkJCQloaWdhc2hpdGFiYXRhIDEtQ2hvbWUKLQkJCQlLaXRhLUt1IFRva3lvIDExNC0wMDEzCi0JCQkJSkFQQU4KLQotMDAtMjYtMUMgICAoaGV4KQkJTkVPVklBIElOQy4KLTAwMjYxQyAgICAgKGJhc2UgMTYpCQlORU9WSUEgSU5DLgotCQkJCTUwMyBMT1RURSBJVCBDQVNUTEUgMURPTkcsNTUwLTEKLQkJCQlHQVNBTi1ET05HLCBHRVVNQ0hFT04tR1UKLQkJCQlTRU9VTCAgMTUzLTc2OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi0xRCAgIChoZXgpCQlDT1AgU0VDVVJJVFkgU1lTVEVNIENPUlAuCi0wMDI2MUQgICAgIChiYXNlIDE2KQkJQ09QIFNFQ1VSSVRZIFNZU1RFTSBDT1JQLgotCQkJCTR+N0YsIE5vLjUsIExhbmUgMTMwLCBNaW4tQ2h1bmcgUmQuLAotCQkJCUhzaW4gVGllbiBDaXR5Ci0JCQkJVGFpcGVpICAyMzE0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtMUUgICAoaGV4KQkJUUlOR0JBTkcgRUxFQyhTWikgQ08uLCBMVEQKLTAwMjYxRSAgICAgKGJhc2UgMTYpCQlRSU5HQkFORyBFTEVDKFNaKSBDTy4sIExURAotCQkJCU5vLiAyLCBxaW1pbiBSZC4gTm9ydGggRGlzdHJpY3QsIEhpZ2gtdGVjaCBJbmR1c3RyaWFsIFBhcmssIE5hbnNoYW4sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTI2LTFGICAgKGhleCkJCVNBRSBNYWduZXRpY3MgKEguSy4pIEx0ZC4KLTAwMjYxRiAgICAgKGJhc2UgMTYpCQlTQUUgTWFnbmV0aWNzIChILksuKSBMdGQuCi0JCQkJU0FFIFRlY2hub2xvZ3kgQ2VudHJlCi0JCQkJNiBTY2llbmNlIFBhcmsgRWFzdCBBdmVudWUKLQkJCQlIb25nIEtvbmcgU2NpZW5jZSBQYXJrIFNoYXRpbiwgTmV3IFRlcnJpdG9yaWVzIAotCQkJCUhPTkcgS09ORwotCi0wMC0yNi0yMCAgIChoZXgpCQlJU0dVUyBHbWJICi0wMDI2MjAgICAgIChiYXNlIDE2KQkJSVNHVVMgR21iSAotCQkJCU9iZXJkb3Jmc3RyYcODxbhlIDE4IC0gMjIKLQkJCQlWUyAtIFNjaHdlbm5pbmdlbiBCVyA3ODA1NAotCQkJCUdFUk1BTlkKLQotMDAtMjYtMjEgICAoaGV4KQkJSW50ZWxpQ2xvdWQgVGVjaG5vbG9neSBJbmMuCi0wMDI2MjEgICAgIChiYXNlIDE2KQkJSW50ZWxpQ2xvdWQgVGVjaG5vbG9neSBJbmMuCi0JCQkJODk1IERvdmUgU3QuCi0JCQkJU3RlLiAzMDAKLQkJCQlOZXdwb3J0IEJlYWNoIENBIDkyNjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0yMiAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELgotMDAyNjIyICAgICAoYmFzZSAxNikJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQuCi0JCQkJTk8uIDI1LCBUSEUgM1JEIFN0cmVldCBLVU5TSEFOIEVYUE9SVCBQUk9DRVNTSU5HIFpPTkUKLQkJCQlLVU5TSEFOIFNVWkhPVSAyMTUzMDAKLQkJCQlDSElOQQotCi0wMC0yNi0yMyAgIChoZXgpCQlKUkQgQ29tbXVuaWNhdGlvbiBJbmMKLTAwMjYyMyAgICAgKGJhc2UgMTYpCQlKUkQgQ29tbXVuaWNhdGlvbiBJbmMKLQkJCQkxNi9GLCBUQ0wgVG93ZXIsIEdhb3hpbiBOYW55aSBSb2FkLCBOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTI2LTI0ICAgKGhleCkJCVRob21zb24gSW5jLgotMDAyNjI0ICAgICAoYmFzZSAxNikJCVRob21zb24gSW5jLgotCQkJCTEwMSBXZXN0IDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtMjUgICAoaGV4KQkJTWVkaWFTcHV0bmlrCi0wMDI2MjUgICAgIChiYXNlIDE2KQkJTWVkaWFTcHV0bmlrCi0JCQkJWWFyb3NsYXZza29lIHNob3NzZSwgMTksCi0JCQkJTW9zY293ICAxMjkzMzcKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjYtMjYgICAoaGV4KQkJR2VvcGh5c2ljYWwgU3VydmV5IFN5c3RlbXMsIEluYy4KLTAwMjYyNiAgICAgKGJhc2UgMTYpCQlHZW9waHlzaWNhbCBTdXJ2ZXkgU3lzdGVtcywgSW5jLgotCQkJCTEyIEluZHVzdHJpYWwgV2F5Ci0JCQkJU2FsZW0gTkggMDMwNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTI3ICAgKGhleCkJCVRydWVzZWxsCi0wMDI2MjcgICAgIChiYXNlIDE2KQkJVHJ1ZXNlbGwKLQkJCQkzMDEgU3VuZ3l1biBCbGRnLCA4OS0yCi0JCQkJWWFuZ2phZS1kb25nLAotCQkJCVNlb2Noby1ndSwgU2VvdWwgMTM3LTEzMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi0yOCAgIChoZXgpCQljb21wYW55dGVjIGF1dG9tYcOnw6NvIGUgY29udHJvbGUgbHRkYQotMDAyNjI4ICAgICAoYmFzZSAxNikJCWNvbXBhbnl0ZWMgYXV0b21hw6fDo28gZSBjb250cm9sZSBsdGRhCi0JCQkJUnVhIE1hcmNpbGlvIERpYXMgMzAwNQotCQkJCVBlbG90YXMgUmlvIEdyYW5kZSBkbyBTdWwgOTYwMjAtNDgwCi0JCQkJQlJBWklMCi0KLTAwLTI2LTI5ICAgKGhleCkJCUp1cGhvb24gU3lzdGVtIFNvZnR3YXJlIEluYy4KLTAwMjYyOSAgICAgKGJhc2UgMTYpCQlKdXBob29uIFN5c3RlbSBTb2Z0d2FyZSBJbmMuCi0JCQkJUm9vbSA5MTAsQnVpbGRpbmcgMgotCQkJCVNoYW5nZG9uZyBJbnRlcm5hdGlvbiBCdWlsZGluZyxKaWFuZ2RvbmcgRGlzdHJpY3QKLQkJCQlOaW5nYm8gWmhlamlhbmcgMzE1MDQxCi0JCQkJQ0hJTkEKLQotMDAtMjYtMkEgICAoaGV4KQkJUHJveGVuc2UsIExMQwotMDAyNjJBICAgICAoYmFzZSAxNikJCVByb3hlbnNlLCBMTEMKLQkJCQk2ODkgTlcgU3RvbmVwaW5lIERyCi0JCQkJQmVuZCBPcmVnb24gOTc3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTJCICAgKGhleCkJCVdvbmdzIEVsZWN0cm9uaWNzIENvLiBMdGQuCi0wMDI2MkIgICAgIChiYXNlIDE2KQkJV29uZ3MgRWxlY3Ryb25pY3MgQ28uIEx0ZC4KLQkJCQlXYW5mZW5nIEluZC4gRXNhdGEsIFNoYWppbmcsIEJhb2FuLAotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgNTE4MTA0Ci0JCQkJQ0hJTkEKLQotMDAtMjYtMkMgICAoaGV4KQkJSUtUIEFkdmFuY2VkIFRlY2hub2xvZ2llcyBzLnIuby4KLTAwMjYyQyAgICAgKGJhc2UgMTYpCQlJS1QgQWR2YW5jZWQgVGVjaG5vbG9naWVzIHMuci5vLgotCQkJCVBpc2Vja2VobyAzMzQvMTkKLQkJCQlQcmFoYSA1ICAxNTAwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTAwLTI2LTJEICAgKGhleCkJCVdpc3Ryb24gQ29ycG9yYXRpb24KLTAwMjYyRCAgICAgKGJhc2UgMTYpCQlXaXN0cm9uIENvcnBvcmF0aW9uCi0JCQkJMjFGLCA4OCwgU2VjLjEsIEhzaW4gVGFpIFd1IFJkLiwgSHNpY2hpaCwKLQkJCQlUYWlwZWkgSHNpZW4gVGFpd2FuIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtMkUgICAoaGV4KQkJQ2hlbmdkdSBKaXV6aG91IEVsZWN0cm9uaWMgVGVjaG5vbG9neSBJbmMKLTAwMjYyRSAgICAgKGJhc2UgMTYpCQlDaGVuZ2R1IEppdXpob3UgRWxlY3Ryb25pYyBUZWNobm9sb2d5IEluYwotCQkJCUEyIEJ1aWxkaW5nLFRpYW5mdSBTb2Z0d2FyZSBQYXJrCi0JCQkJTm8uNzY1LE1pZCBUaWFuZnUgQXZlbnVlLEhpZ2gtdGVjaCBpbmR1c3RyaWFsIERldmVsb3BtZW50IFpvbmUKLQkJCQlDaGVuZ2R1IFNpY2h1YW4gNjEwMDQxCi0JCQkJQ0hJTkEKLQotMDAtMjYtMkYgICAoaGV4KQkJSEFNQU1BVFNVIFRPQSBFTEVDVFJPTklDUwotMDAyNjJGICAgICAoYmFzZSAxNikJCUhBTUFNQVRTVSBUT0EgRUxFQ1RST05JQ1MKLQkJCQk5MTYyLTEKLQkJCQlNSVlBS09EQS1DSE8KLQkJCQlIQU1BTUFUU1UgU0laVU9LQSA0MzEtMjEwMgotCQkJCUpBUEFOCi0KLTAwLTI2LTMwICAgKGhleCkJCUFDT1JFTCBTLkEuUwotMDAyNjMwICAgICAoYmFzZSAxNikJCUFDT1JFTCBTLkEuUwotCQkJCTMsIFJ1ZSBQYXVsIExBTkdFVklOCi0JCQkJU0FJTlQtUEVSQVkgIEYtMDcxMzAKLQkJCQlGUkFOQ0UKLQotMDAtMjYtMzEgICAoaGV4KQkJQ09NTVRBQ1QgTFRECi0wMDI2MzEgICAgIChiYXNlIDE2KQkJQ09NTVRBQ1QgTFRECi0JCQkJTmFoYWwgU25pciAxMAotCQkJCVBPIEJveCAxNjkKLQkJCQlZYXpuZSAgODExMDEKLQkJCQlJU1JBRUwKLQotMDAtMjYtMzIgICAoaGV4KQkJSW5zdHJ1bWVudGF0aW9uIFRlY2hub2xvZ2llcyBkLmQuCi0wMDI2MzIgICAgIChiYXNlIDE2KQkJSW5zdHJ1bWVudGF0aW9uIFRlY2hub2xvZ2llcyBkLmQuCi0JCQkJVmVsaWthIHBvdCAyMgotCQkJCVNvbGthbiBOb3ZhIEdvcmljYSA1MjUwCi0JCQkJU0xPVkVOSUEKLQotMDAtMjYtMzMgICAoaGV4KQkJTUlSIC0gTWVkaWNhbCBJbnRlcm5hdGlvbmFsIFJlc2VhcmNoCi0wMDI2MzMgICAgIChiYXNlIDE2KQkJTUlSIC0gTWVkaWNhbCBJbnRlcm5hdGlvbmFsIFJlc2VhcmNoCi0JCQkJVmlhIGRlbCBNYWdnaW9saW5vIDEyNQotCQkJCVJvbWUgUk0gMDAxNTUKLQkJCQlJVEFMWQotCi0wMC0yNi0zNCAgIChoZXgpCQlJbmZpbmV0YSBTeXN0ZW1zLCBJbmMKLTAwMjYzNCAgICAgKGJhc2UgMTYpCQlJbmZpbmV0YSBTeXN0ZW1zLCBJbmMKLQkJCQkyODcwIFphbmtlciBSZAotCQkJCVN1aXRlIDEwMAotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0zNSAgIChoZXgpCQlCbHVldGVjaG5peCBHbWJICi0wMDI2MzUgICAgIChiYXNlIDE2KQkJQmx1ZXRlY2huaXggR21iSAotCQkJCVdhaWRoYXVzZW5zdHIuIDMvMTkKLQkJCQlWaWVubmEgIDExNDAKLQkJCQlBVVNUUklBCi0KLTAwLTI2LTM2ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0wMDI2MzYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTi4gVVMgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTM3ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryby1NZWNoYW5pY3MKLTAwMjYzNyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm8tTWVjaGFuaWNzCi0JCQkJMzE0LCBNZXRhbiBkb25nCi0JCQkJU3V3b24gS3l1bmcta2kgZG8gNDQzLTc0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi0zOCAgIChoZXgpCQlYaWEgTWVuIEpveWF0ZWNoIENvLiwgTHRkLgotMDAyNjM4ICAgICAoYmFzZSAxNikJCVhpYSBNZW4gSm95YXRlY2ggQ28uLCBMdGQuCi0JCQkJUm9vbSAzMDQsIDI4dGggQnVpbGRpbmcsIEd1YW5yaSBSb2FkLCBYaWFtZW4gU29mdHdhcmUgUGFyawotCQkJCVhpYW1lbiBGdWppYW4gUHJvdmluY2UgMzYxMDA4Ci0JCQkJQ0hJTkEKLQotMDAtMjYtMzkgICAoaGV4KQkJVC5NLiBFbGVjdHJvbmljcywgSW5jLgotMDAyNjM5ICAgICAoYmFzZSAxNikJCVQuTS4gRWxlY3Ryb25pY3MsIEluYy4KLQkJCQk0NSBNYWluIFN0Ci0JCQkJQm95bHN0b24gTUEgMDE1MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTNBICAgKGhleCkJCURpZ2l0ZWMgU3lzdGVtcwotMDAyNjNBICAgICAoYmFzZSAxNikJCURpZ2l0ZWMgU3lzdGVtcwotCQkJCUM1QS8yNTcsIDFzdCBGbG9vcgotCQkJCUphbmFrcHVyaQotCQkJCU5ldyBEZWxoaSBEZWxoaSAxMTAwNTgKLQkJCQlJTkRJQQotCi0wMC0yNi0zQiAgIChoZXgpCQlPbmJuZXRlY2gKLTAwMjYzQiAgICAgKGJhc2UgMTYpCQlPbmJuZXRlY2gKLQkJCQk1MDYsIFNhbXN1bmcgSVQgVmFsbGV5LCAxOTctNQotCQkJCUd1cm8tRG9uZwotCQkJCUd1cm8tR3UgU2VvdWwgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi0zQyAgIChoZXgpCQlCYWNobWFubiBHbWJIICYgQ28uIEtHCi0wMDI2M0MgICAgIChiYXNlIDE2KQkJQmFjaG1hbm4gR21iSCAmIENvLiBLRwotCQkJCUVybnN0aGFsZGVuc3RyYXNzZSAzMwotCQkJCVN0dXR0Z2FydCBCVyA3MDU2NQotCQkJCUdFUk1BTlkKLQotMDAtMjYtM0QgICAoaGV4KQkJTUlBIENvcnBvcmF0aW9uCi0wMDI2M0QgICAgIChiYXNlIDE2KQkJTUlBIENvcnBvcmF0aW9uCi0JCQkJMS0zLTE1IFlvc2hpbm8tY2hvLCBNaW5hbWkta3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMzItMDAxNAotCQkJCUpBUEFOCi0KLTAwLTI2LTNFICAgKGhleCkJCVRyYXBlemUgTmV0d29ya3MKLTAwMjYzRSAgICAgKGJhc2UgMTYpCQlUcmFwZXplIE5ldHdvcmtzCi0JCQkJNTc1MyBXZXN0IExhcyBQb3NpdGFzIEJsdmQuCi0JCQkJUGxlYXNhbnRvbiBDYWxpZm9ybmlhIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi0zRiAgIChoZXgpCQlMSU9TIFRlY2hub2xvZ3kgR21iSAotMDAyNjNGICAgICAoYmFzZSAxNikJCUxJT1MgVGVjaG5vbG9neSBHbWJICi0JCQkJU2NoYW56ZW5zdHJhw4PFuGUgMzkKLQkJCQlCdWlsZGluZyBEOS1EMTMKLQkJCQlLw4PCtmxuIEdlcm1hbnkgRC01MTA2MwotCQkJCUdFUk1BTlkKLQotMDAtMjYtNDAgICAoaGV4KQkJQmF1c3RlbSBCcm9hZGJhbmQgVGVjaG5vbG9naWVzLCBMdGQuCi0wMDI2NDAgICAgIChiYXNlIDE2KQkJQmF1c3RlbSBCcm9hZGJhbmQgVGVjaG5vbG9naWVzLCBMdGQuCi0JCQkJOTEwIFF1YW50dW0gUGxhemEKLQkJCQlOby4yMyBaaGljaHVuIFJvYWQKLQkJCQlCZWlqaW5nICAxMDAxOTEKLQkJCQlDSElOQQotCi0wMC0yNi00MSAgIChoZXgpCQlNb3Rvcm9sYSwgSW5jCi0wMDI2NDEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYwotCQkJCTExMDEgTWFyaW5hIFZpbGxhZ2UgUGFya3dheQotCQkJCVN1aXRlIDIwMAotCQkJCUFsYW1lZGEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTQyICAgKGhleCkJCU1vdG9yb2xhLCBJbmMKLTAwMjY0MiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSwgSW5jCi0JCQkJMTEwMSBNYXJpbmEgVmlsbGFnZSBQYXJrd2F5Ci0JCQkJU3VpdGUgMjAwCi0JCQkJQWxhbWVkYSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNDMgICAoaGV4KQkJQWxwcyBFbGVjdHJpYyBDby4sIEx0ZAotMDAyNjQzICAgICAoYmFzZSAxNikJCUFscHMgRWxlY3RyaWMgQ28uLCBMdGQKLQkJCQkxLTItMSxPa2lub3VjaGkKLQkJCQlTb21hLWNpdHkgRnVrdXNoaW1hLWtlbiA5NzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTI2LTQ0ICAgKGhleCkJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0wMDI2NDQgICAgIChiYXNlIDE2KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3Ci0JCQkJRWRlZ2VtIEFudHdlcnAgQi0yNjUwCi0JCQkJQkVMR0lVTQotCi0wMC0yNi00NSAgIChoZXgpCQlDaXJjb250cm9sIFMuQS4KLTAwMjY0NSAgICAgKGJhc2UgMTYpCQlDaXJjb250cm9sIFMuQS4KLQkJCQlMZXBhbnQgNDMKLQkJCQlUZXJyYXNzYSBCYXJjZWxvbmEgMDgyMjMKLQkJCQlTUEFJTgotCi0wMC0yNi00NiAgIChoZXgpCQlTSEVOWUFORyBUT05HRkFORyBNVUxUSU1FRElBIFRFQ0hOT0xPR1kgQ09NUEFOWSBMSU1JVEVECi0wMDI2NDYgICAgIChiYXNlIDE2KQkJU0hFTllBTkcgVE9OR0ZBTkcgTVVMVElNRURJQSBURUNITk9MT0dZIENPTVBBTlkgTElNSVRFRAotCQkJCU5vLjEwIFBpbmcgTmFuIEVhc3QgUm9hZAotCQkJCUh1bm5hbiBOZXcgRGlzdHJpY3QuCi0JCQkJU2hlbnlhbmcgTGlhbyBOaW5nIDExMDAxNAotCQkJCUNISU5BCi0KLTAwLTI2LTQ3ICAgKGhleCkJCVdGRSBURUNITk9MT0dZIENPUlAuCi0wMDI2NDcgICAgIChiYXNlIDE2KQkJV0ZFIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkxN0YgTk8uMjM4LENoaW4tSHVhIE4gUmQsCi0JCQkJVGFpY2h1bmcgIDQwNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtNDggICAoaGV4KQkJRW1pdGVjaCBDb3JwLgotMDAyNjQ4ICAgICAoYmFzZSAxNikJCUVtaXRlY2ggQ29ycC4KLQkJCQlOby4gMTU2LTVBLCBDaGVuZ0dvbmcgMXN0IFN0LiwKLQkJCQlKaHViZWkgQ2l0eSBIc2luY2h1IENvdW50eSAzMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTRBICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjY0QSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNEMgICAoaGV4KQkJU2hhbmdoYWkgRGlnaVZpc2lvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyNjRDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERpZ2lWaXNpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4gMzMzIEd1YW5namkgUmQuCi0JCQkJU2hhbmdoYWkgIDIwMDA4MwotCQkJCUNISU5BCi0KLTAwLTI2LTREICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTAwMjY0RCAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOby4gOSAsIFBhcmsgQXZlbnVlIElJICwKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyayAsCi0JCQkJSHNpbmNodSBUYWl3YW4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi00RSAgIChoZXgpCQlSYWlsICYgUm9hZCBQcm90ZWMgR21iSAotMDAyNjRFICAgICAoYmFzZSAxNikJCVJhaWwgJiBSb2FkIFByb3RlYyBHbWJICi0JCQkJTm9yZGVyaG9mZW5kZW4gMTItMTMKLQkJCQlGbGVuc2J1cmcgIDI0OTM3Ci0JCQkJR0VSTUFOWQotCi0wMC0yNi00RiAgIChoZXgpCQlLcsO8Z2VyJkdvdGhlIEdtYkgKLTAwMjY0RiAgICAgKGJhc2UgMTYpCQlLcsO8Z2VyJkdvdGhlIEdtYkgKLQkJCQlBdHplbmRvcmZlciBTdHJhc3NlIDE5Ci0JCQkJU3Rhc3NmdXJ0IFNhY2hzZW4gQW5oYWx0IDM5NDE4Ci0JCQkJR0VSTUFOWQotCi0wMC0yNi01MCAgIChoZXgpCQkyV2lyZQotMDAyNjUwICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNTEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNjUxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTUyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjY1MiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi01MyAgIChoZXgpCQlEYXlTZXF1ZXJyYSBDb3Jwb3JhdGlvbgotMDAyNjUzICAgICAoYmFzZSAxNikJCURheVNlcXVlcnJhIENvcnBvcmF0aW9uCi0JCQkJMTU0IENvb3BlciBSb2FkCi0JCQkJU3VpdGUgIzkwMgotCQkJCVdlc3QgQmVybGluIE5KIDA4MDkxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi01NCAgIChoZXgpCQkzQ29tIENvcnBvcmF0aW9uCi0wMDI2NTQgICAgIChiYXNlIDE2KQkJM0NvbSBDb3Jwb3JhdGlvbgotCQkJCTUzNTMgQmV0c3kgUm9zcyBEcml2ZQotCQkJCUJsZGcgMTQsIE0vUyAxNDI1Ci0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1NC0xMTYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi01NSAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDAyNjU1ICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1zIDA2MDMwMgotCQkJCUhvdXN0b24gVGV4YXMgNzcwOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTU2ICAgKGhleCkJCVNhbnNvbmljIEVsZWN0cm9uaWNzIFVTQQotMDAyNjU2ICAgICAoYmFzZSAxNikJCVNhbnNvbmljIEVsZWN0cm9uaWNzIFVTQQotCQkJCTk5NTAgQmFsZHdpbiBQbGFjZQotCQkJCUVsIE1vbnRlIENhaWxmb3JuaWEgOTE3MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTU3ICAgKGhleCkJCU9PTyBOUFAgRUtSQQotMDAyNjU3ICAgICAoYmFzZSAxNikJCU9PTyBOUFAgRUtSQQotCQkJCUkuWWFrb3ZsZXZhIFN0LiwgMwotCQkJCUNoZWJva3NhcnkgQ2h1dmFzaCBSZXB1YmxpYyA0MjgwMDMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDAtMjYtNTggICAoaGV4KQkJVC1QbGF0Zm9ybXMgKEN5cHJ1cykgTGltaXRlZAotMDAyNjU4ICAgICAoYmFzZSAxNikJCVQtUGxhdGZvcm1zIChDeXBydXMpIExpbWl0ZWQKLQkJCQlUaGVtaXN0b2tsaSBEZXJ2aSAzLCBKdWxpYSBIb3VzZQotCQkJCU5pY29zaWEgIFAuQy4tMTA2NgotCQkJCUNZUFJVUwotCi0wMC0yNi01OSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTAwMjY1OSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi0wMC0yNi01QSAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTAwMjY1QSAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFNpbmh1IDNyZCBSZC4sCi0JCQkJTmVpaHUgRGlzdHJpY3QgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtNUIgICAoaGV4KQkJSGl0cm9uIFRlY2hub2xvZ2llcy4gSW5jCi0wMDI2NUIgICAgIChiYXNlIDE2KQkJSGl0cm9uIFRlY2hub2xvZ2llcy4gSW5jCi0JCQkJTm8uIDEtOCwgTGlzaW5nIDFzdCBSZC4gSHNpbmNodSBTY2llbmNlIFBhcmssCi0JCQkJSHNpbi1jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtNUMgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotMDAyNjVDICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLTAwLTI2LTVEICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTAwMjY1RCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTVFICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTAwMjY1RSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi0wMC0yNi01RiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTAwMjY1RiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtNjAgICAoaGV4KQkJTG9naXdheXMKLTAwMjY2MCAgICAgKGJhc2UgMTYpCQlMb2dpd2F5cwotCQkJCTI0LzI2IHJ1ZSBMb3VpcyBBUk1BTkQKLQkJCQlQQVJJUyAgNzUwMTUKLQkJCQlGUkFOQ0UKLQotMDAtMjYtNjEgICAoaGV4KQkJSXJ1bXRlayBDby4sIEx0ZC4KLTAwMjY2MSAgICAgKGJhc2UgMTYpCQlJcnVtdGVrIENvLiwgTHRkLgotCQkJCUFwdCA3MDggIDUxMy0yMiBKb29uZ2lsIEVpbmVzIFBsYXR6Ci0JCQkJU2FuZ2RhZXdvbi1kb25nLCBKdW5nd29uLUd1Ci0JCQkJU2VvbmduYW0tQ2l0eSBHeXVuZ2dpLWRvIDQ2Mi0xMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtNjIgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0wMDI2NjIgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi02MyAgIChoZXgpCQlTaGVuemhlbiBIdWl0YWl3ZWkgVGVjaC4gTHRkLCBjby4KLTAwMjY2MyAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBIdWl0YWl3ZWkgVGVjaC4gTHRkLCBjby4KLQkJCQlKaWFuRGEgQnVpbGRpbmcsNTAxLTUwMgotCQkJCUtld2VpIE5vLiAxCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTAwLTI2LTY0ICAgKGhleCkJCUNvcmUgU3lzdGVtIEphcGFuCi0wMDI2NjQgICAgIChiYXNlIDE2KQkJQ29yZSBTeXN0ZW0gSmFwYW4KLQkJCQlCdW5zaHUgQmxkZywyLTI3LTYsTXlvamluCi0JCQkJSGFjaGlvamkgVG9reW8gMTkyMDA0NgotCQkJCUpBUEFOCi0KLTAwLTI2LTY1ICAgKGhleCkJCVByb3RlY3RlZExvZ2ljIENvcnBvcmF0aW9uCi0wMDI2NjUgICAgIChiYXNlIDE2KQkJUHJvdGVjdGVkTG9naWMgQ29ycG9yYXRpb24KLQkJCQlQTyBCb3ggNjc3MDcKLQkJCQlBbGJ1cXVlcnF1ZSBOTSA4NzE5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNjYgICAoaGV4KQkJRUZNIE5ldHdvcmtzCi0wMDI2NjYgICAgIChiYXNlIDE2KQkJRUZNIE5ldHdvcmtzCi0JCQkJNkYgQmVucG9zcmEgSUkgQi9EIDE4MDItMQotCQkJCUJvamVvbmctZG9uZyBHaWhldW5nLWd1LAotCQkJCVlvbmcgSW4gS3l1bmdnaS1kbyA0NDYtOTEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTY3ICAgKGhleCkJCUNBUkVDT00gQ08uLExURC4KLTAwMjY2NyAgICAgKGJhc2UgMTYpCQlDQVJFQ09NIENPLixMVEQuCi0JCQkJMy0zNS00Ci0JCQkJVGFtYWdhd2EKLQkJCQlDaG9mdSBUb2t5byAxODItMDAyNQotCQkJCUpBUEFOCi0KLTAwLTI2LTY4ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI2NjggICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTI2LTY5ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0wMDI2NjkgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTAwLTI2LTZBICAgKGhleCkJCUVTU0VOU0lVTSBOVgotMDAyNjZBICAgICAoYmFzZSAxNikJCUVTU0VOU0lVTSBOVgotCQkJCUdhc3RvbiBHZWVuc2xhYW4gOQotCQkJCUxFVVZFTiBWTCBCUkFCQU5UIDMwMDEKLQkJCQlCRUxHSVVNCi0KLTAwLTI2LTZCICAgKGhleCkJCVNISU5FIFVOSU9OIEVOVEVSUFJJU0UgTElNSVRFRAotMDAyNjZCICAgICAoYmFzZSAxNikJCVNISU5FIFVOSU9OIEVOVEVSUFJJU0UgTElNSVRFRAotCQkJCVVOSVQgMTIxMSwgMTJGTC4sIENIRVZBTElFUiBDT01NRVJDSUFMIENFTlRFUiwKLQkJCQlOTy44IFdBTkcgSE9JIFJPQUQsIEtPV0xPT05CQVkKLQkJCQlLT1dMT09OICBOSUwKLQkJCQlIT05HIEtPTkcKLQotMDAtMjYtNkMgICAoaGV4KQkJSW52ZW50ZWMKLTAwMjY2QyAgICAgKGJhc2UgMTYpCQlJbnZlbnRlYwotCQkJCUludmVudGVjIEJ1aWxkaW5nLCA2NiBIb3UtS2FuZyBTdHJlZXQgU2hpaC1MaW4gRGlzdHJpY3QsCi0JCQkJVGFpcGVpICAxMTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTZEICAgKGhleCkJCU1vYmlsZUFjY2VzcyBOZXR3b3JrcwotMDAyNjZEICAgICAoYmFzZSAxNikJCU1vYmlsZUFjY2VzcyBOZXR3b3JrcwotCQkJCTgzOTEgT2xkIENvdXJ0aG91c2UgUmQuCi0JCQkJU3VpdGUgMzAwCi0JCQkJVmllbm5hIFZBIDIyMTgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi02RSAgIChoZXgpCQlOaXNzaG8tZGVua2kgQ28uLExURC4KLTAwMjY2RSAgICAgKGJhc2UgMTYpCQlOaXNzaG8tZGVua2kgQ28uLExURC4KLQkJCQkzLTctNixjaGlkb3JpCi0JCQkJb2h0YSBUb2t5byAxNDYtMDA4MwotCQkJCUpBUEFOCi0KLTAwLTI2LTZGICAgKGhleCkJCUNvb3JkaXdpc2UgVGVjaG5vbG9neSBDb3JwLgotMDAyNjZGICAgICAoYmFzZSAxNikJCUNvb3JkaXdpc2UgVGVjaG5vbG9neSBDb3JwLgotCQkJCTJGLiwgTm8uMTIzLCBTZWMuIDEsIExpb3VqaWEgNXRoIFJkLgotCQkJCUpodWJlaSBDaXR5LCBIc2luY2h1IENvdW50eSAgMzAyNzIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTcwICAgKGhleCkJCUNpbmNoIENvbm5lY3RvcnMKLTAwMjY3MCAgICAgKGJhc2UgMTYpCQlDaW5jaCBDb25uZWN0b3JzCi0JCQkJMTcwMCBGaW5sZXkgUm9hZAotCQkJCUxvbWJhcmQgSUwgNjAxNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTcxICAgKGhleCkJCUFVVE9WSVNJT04gQ28uLCBMdGQKLTAwMjY3MSAgICAgKGJhc2UgMTYpCQlBVVRPVklTSU9OIENvLiwgTHRkCi0JCQkJU2hpbnNlZ2FlIFlCUyBCbGRnLiAxMDIKLQkJCQkyMjctMSwgWW9uZ2RhcC1Eb25nCi0JCQkJU2Vvbmdkb25nLWd1IFNlb3VsIDEzMy04NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtNzIgICAoaGV4KQkJQUFNUCBvZiBBbWVyaWNhCi0wMDI2NzIgICAgIChiYXNlIDE2KQkJQUFNUCBvZiBBbWVyaWNhCi0JCQkJMTMxOTAgNTZ0aCBDb3VydAotCQkJCVN1aXRlIDQwMQotCQkJCUNsZWFyd2F0ZXIgRmxvcmlkYSAzMzc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNzMgICAoaGV4KQkJUklDT0ggQ09NUEFOWSBMVEQuCi0wMDI2NzMgICAgIChiYXNlIDE2KQkJUklDT0ggQ09NUEFOWSBMVEQuCi0JCQkJODEwIFNISU1PSU1BSVpVTUkKLQkJCQlFYmluYSBDaXR5IEtBTkFHQVdBIFBSRUYgMjQzLTA0NjAKLQkJCQlKQVBBTgotCi0wMC0yNi03NCAgIChoZXgpCQlFbGVjdHJvbmljIFNvbHV0aW9ucywgSW5jLgotMDAyNjc0ICAgICAoYmFzZSAxNikJCUVsZWN0cm9uaWMgU29sdXRpb25zLCBJbmMuCi0JCQkJMTM1NSBIb3Jpem9uIEF2ZW51ZQotCQkJCUxhZmF5ZXR0ZSBDTyA4MDAyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtNzUgICAoaGV4KQkJQXp0ZWNoIEVsZWN0cm9uaWNzIFB0ZSBMdGQKLTAwMjY3NSAgICAgKGJhc2UgMTYpCQlBenRlY2ggRWxlY3Ryb25pY3MgUHRlIEx0ZAotCQkJCTMxIFViaSBSb2FkIDEKLQkJCQlBenRlY2ggQnVpbGRpbmcKLQkJCQlTaW5nYXBvcmUgIDQwODY5NAotCQkJCVNJTkdBUE9SRQotCi0wMC0yNi03NiAgIChoZXgpCQlDT01NaWR0IEFTCi0wMDI2NzYgICAgIChiYXNlIDE2KQkJQ09NTWlkdCBBUwotCQkJCUtpa3JlZ2F0YSA1Ny01OQotCQkJCUxldmFuZ2VyIE5vcmQtVHJvZW5kZWxhZyA3NjAwCi0JCQkJTk9SV0FZCi0KLTAwLTI2LTc3ICAgKGhleCkJCURFSUYgQS9TCi0wMDI2NzcgICAgIChiYXNlIDE2KQkJREVJRiBBL1MKLQkJCQlGcmlzZW5ib3JndmVqIDMzCi0JCQkJU2tpdmUgIDc4MDAKLQkJCQlERU5NQVJLCi0KLTAwLTI2LTc4ICAgKGhleCkJCUxvZ2ljIEluc3RydW1lbnQgU0EKLTAwMjY3OCAgICAgKGJhc2UgMTYpCQlMb2dpYyBJbnN0cnVtZW50IFNBCi0JCQkJNDMsIEF2ZW51ZSBkZSBsJ0V1cm9wZQotCQkJCUJQIDYwMDEyCi0JCQkJRG9tb250ICA5NTMzMAotCQkJCUZSQU5DRQotCi0wMC0yNi03OSAgIChoZXgpCQlFdXBob25pYyBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjY3OSAgICAgKGJhc2UgMTYpCQlFdXBob25pYyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyLTUtMTAgU2hpbi15b2tvaGFtYSwgS291aG9rdS1rdQotCQkJCVlva29oYW1hICAyMjItMDAzMwotCQkJCUpBUEFOCi0KLTAwLTI2LTdBICAgKGhleCkJCXd1aGFuIGhvbmd4aW4gdGVsZWNvbW11bmljYXRpb24gdGVjaG5vbG9naWVzIGNvLixsdGQKLTAwMjY3QSAgICAgKGJhc2UgMTYpCQl3dWhhbiBob25neGluIHRlbGVjb21tdW5pY2F0aW9uIHRlY2hub2xvZ2llcyBjby4sbHRkCi0JCQkJTm8uNSBEb254aW4gUm9hZCxXdWhhbiBFYXN0IExha2UgSGlnaC1UZWNoIERldmVsb3BtZW50IFpvbmUKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzMKLQkJCQlDSElOQQotCi0wMC0yNi03QiAgIChoZXgpCQlHU0kgSGVsbWhvbHR6emVudHJ1bSBmw4PCvHIgU2Nod2VyaW9uZW5mb3JzY2h1bmcgR21iSAotMDAyNjdCICAgICAoYmFzZSAxNikJCUdTSSBIZWxtaG9sdHp6ZW50cnVtIGbDg8K8ciBTY2h3ZXJpb25lbmZvcnNjaHVuZyBHbWJICi0JCQkJUGxhbmNrc3RyYcODxbhlIDEKLQkJCQlEYXJtc3RhZHQgSGVzc2VuIDY0MjkxCi0JCQkJR0VSTUFOWQotCi0wMC0yNi03QyAgIChoZXgpCQlNZXR6LVdlcmtlIEdtYkggJiBDbyBLRwotMDAyNjdDICAgICAoYmFzZSAxNikJCU1ldHotV2Vya2UgR21iSCAmIENvIEtHCi0JCQkJT2htc3RyYXNzZSA1NQotCQkJCVppcm5kb3JmICA5MDUxMwotCQkJCUdFUk1BTlkKLQotMDAtMjYtN0QgICAoaGV4KQkJQS1NYXggVGVjaG5vbG9neSBNYWNhbyBDb21tZXJjaWFsIE9mZnNob3JlIENvbXBhbnkgTGltaXRlZAotMDAyNjdEICAgICAoYmFzZSAxNikJCUEtTWF4IFRlY2hub2xvZ3kgTWFjYW8gQ29tbWVyY2lhbCBPZmZzaG9yZSBDb21wYW55IExpbWl0ZWQKLQkJCQlBdmVuaWRhIERhIFByYWlhIEdyYW5kZSBOby4gNDA5Ci0JCQkJRWRpZmljaW8gRG9zIFNlcnZpY29zIEp1cmlkaWNvcyBEYSBDaGluYSA1QQotCQkJCU1hY2F1ICAKLQkJCQlDSElOQQotCi0wMC0yNi03RSAgIChoZXgpCQlQYXJyb3QgU0EKLTAwMjY3RSAgICAgKGJhc2UgMTYpCQlQYXJyb3QgU0EKLQkJCQkxNzQgcXVhaSBkZSBKZW1tYXBlcwotCQkJCVBhcmlzICA3ODEwMAotCQkJCUZSQU5DRQotCi0wMC0yNi03RiAgIChoZXgpCQlaZW50ZXJpbyBBQgotMDAyNjdGICAgICAoYmFzZSAxNikJCVplbnRlcmlvIEFCCi0JCQkJRGlza2V0dGdhdGFuIDExQgotCQkJCUxpbmvDtnBpbmcgIDU4MzM1Ci0JCQkJU1dFREVOCi0KLTAwLTI2LTgwICAgKGhleCkJCUxvY2tpZSBJbm5vdmF0aW9uIFB0eSBMdGQKLTAwMjY4MCAgICAgKGJhc2UgMTYpCQlMb2NraWUgSW5ub3ZhdGlvbiBQdHkgTHRkCi0JCQkJVW5pdCAyNAotCQkJCTItMTIgVGVtcGxlIFN0cmVldAotCQkJCUFzaHdvb2QgVklDVE9SSUEgMzE0NwotCQkJCUFVU1RSQUxJQQotCi0wMC0yNi04MSAgIChoZXgpCQlJbnRlcnNwaXJvIEFCCi0wMDI2ODEgICAgIChiYXNlIDE2KQkJSW50ZXJzcGlybyBBQgotCQkJCUJveCAxMDA2MAotCQkJCUxpZGluZ8O2ICAxODExMAotCQkJCVNXRURFTgotCi0wMC0yNi04MiAgIChoZXgpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTAwMjY4MiAgICAgKGJhc2UgMTYpCQlHZW10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlOby4xIEplbiBBaSBSb2FkLCBIc2luY2h1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlIc2luY2h1IFRhaXdhbiAzMDMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTgzICAgKGhleCkJCUFqb2hvIEVudGVycHJpc2UgQ28uLCBMdGQuCi0wMDI2ODMgICAgIChiYXNlIDE2KQkJQWpvaG8gRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQkxRi4sIE5vLjMwMC0zLCBTZWMuIDMsIEhvcGluZyBXLiBSZC4sIFdhbi1IdWEgMTA4Ci0JCQkJVGFpcGVpIFRhaXdhbiAxMDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LTg0ICAgKGhleCkJCUtJU0FOIFNZU1RFTQotMDAyNjg0ICAgICAoYmFzZSAxNikJCUtJU0FOIFNZU1RFTQotCQkJCVlVQ0hFT04gUEFDVE9QSUEgNjIzLCBBTllBTkc3Ci0JCQkJQU5ZQU5HIEdZRU9OR0dJIDQzMC03MjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtODUgICAoaGV4KQkJRGlnaXRhbCBJbm5vdmF0aW9uCi0wMDI2ODUgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBJbm5vdmF0aW9uCi0JCQkJVHJhdmJhbmV2ZWllbiA2Ci0JCQkJVHJvbmRoZWltICA3MDQ0Ci0JCQkJTk9SV0FZCi0KLTAwLTI2LTg2ICAgKGhleCkJCVF1YW50ZW5uYSBDb21tdW5jYXRpb25zLCBJbmMuCi0wMDI2ODYgICAgIChiYXNlIDE2KQkJUXVhbnRlbm5hIENvbW11bmNhdGlvbnMsIEluYy4KLQkJCQkzNDUwIFcuIFdhcnJlbiBBdmUuCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtODcgICAoaGV4KQkJQUxMSUVEIFRFTEVTSVMsIEsuSyBjb3JlZ2EgZGl2aXNpb24uCi0wMDI2ODcgICAgIChiYXNlIDE2KQkJQUxMSUVEIFRFTEVTSVMsIEsuSyBjb3JlZ2EgZGl2aXNpb24uCi0JCQkJMS0xOS0yMCwgU2hpbnlva29oYW1hCi0JCQkJS291aG9rdS1rdQotCQkJCVlva29oYW1hLWNpdHkgS2FuYWdhd2Eta2VuIDIyMi0wMDMzCi0JCQkJSkFQQU4KLQotMDAtMjYtODggICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotMDAyNjg4ICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi04OSAgIChoZXgpCQlHZW5lcmFsIER5bmFtaWNzIFJvYm90aWMgU3lzdGVtcwotMDAyNjg5ICAgICAoYmFzZSAxNikJCUdlbmVyYWwgRHluYW1pY3MgUm9ib3RpYyBTeXN0ZW1zCi0JCQkJMTIzMSBUZWNoIENvdXJ0Ci0JCQkJV2VzdG1pbnN0ZXIgTUQgMjExNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LThBICAgKGhleCkJCVRlcnJpZXIgU0MgTHRkCi0wMDI2OEEgICAgIChiYXNlIDE2KQkJVGVycmllciBTQyBMdGQKLQkJCQlTdHJldHRpdCBGYXJtCi0JCQkJU25vbGwgSGF0Y2ggUm9hZAotCQkJCUVhc3QgUGVja2hhbSBLZW50IFROMTIgNUVFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjYtOEIgICAoaGV4KQkJR3Vhbmd6aG91IEVzY2VuZSBDb21wdXRlciBUZWNobm9sb2d5IExpbWl0ZWQKLTAwMjY4QiAgICAgKGJhc2UgMTYpCQlHdWFuZ3pob3UgRXNjZW5lIENvbXB1dGVyIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCVJvb20gMjA5LCBOby41NC01NiBZdWVoZSBCdWlsZGluZywgSHVhY3VpIFN0cmVldCwgVGlhbmhlIEluZHVzdHJpYWwgUGFyawotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgUHJvdmluY2UgNTEwMDY1Ci0JCQkJQ0hJTkEKLQotMDAtMjYtOEMgICAoaGV4KQkJU3RhckxlYWYgTHRkLgotMDAyNjhDICAgICAoYmFzZSAxNikJCVN0YXJMZWFmIEx0ZC4KLQkJCQlDaGFzdG9uIEhvdXNlLCBNaWxsIENvdXJ0Ci0JCQkJR3JlYXQgU2hlbGZvcmQKLQkJCQlDYW1icmlkZ2UgIENCMjIgNUxECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMjYtOEQgICAoaGV4KQkJQ2VsbFRlbCBTLnAuQS4KLTAwMjY4RCAgICAgKGJhc2UgMTYpCQlDZWxsVGVsIFMucC5BLgotCQkJCVZpYSBSb21hbm8gNzIKLQkJCQlTY2FybWFnbm8gVG9yaW5vIDEwMDEwCi0JCQkJSVRBTFkKLQotMDAtMjYtOEUgICAoaGV4KQkJQWx0YSBTb2x1dGlvbnMsIEluYy4KLTAwMjY4RSAgICAgKGJhc2UgMTYpCQlBbHRhIFNvbHV0aW9ucywgSW5jLgotCQkJCTExMzA1IFJhbmNobyBCZXJuYXJkbyBSb2FkCi0JCQkJU3VpdGUgMTA0Ci0JCQkJU2FuIERpZWdvIENBIDkyMTI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi04RiAgIChoZXgpCQlNVEEgU3BBCi0wMDI2OEYgICAgIChiYXNlIDE2KQkJTVRBIFNwQQotCQkJCVZpYWxlIGRlbGwgSW5kdXN0cmlhIDEyCi0JCQkJQ29kb2dubyBMT0RJIDI2ODQ1Ci0JCQkJSVRBTFkKLQotMDAtMjYtOTAgICAoaGV4KQkJSSBETyBJVAotMDAyNjkwICAgICAoYmFzZSAxNikJCUkgRE8gSVQKLQkJCQkxMzA4LCBXb29saW1MaW9uczJuZCBEb2tzYW4gU3RhdGlvbgotCQkJCVNlb3VsICAxNTMtNzg3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LTkxICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTAwMjY5MSAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMTQgUnVlIFBhdWwgRGF1dGllcgotCQkJCVZlbGl6eSAgNzg0NTcKLQkJCQlGUkFOQ0UKLQotMDAtMjYtOTIgICAoaGV4KQkJTWl0c3ViaXNoaSBFbGVjdHJpYyBDby4KLTAwMjY5MiAgICAgKGJhc2UgMTYpCQlNaXRzdWJpc2hpIEVsZWN0cmljIENvLgotCQkJCTItNy0zIE1hcnVub3VjaGkKLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMC04MzEwCi0JCQkJSkFQQU4KLQotMDAtMjYtOTMgICAoaGV4KQkJUVZpZGl1bSBUZWNobm9sb2dpZXMsIEluYy4KLTAwMjY5MyAgICAgKGJhc2UgMTYpCQlRVmlkaXVtIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEyOTg5IENoYXBhcnJhbCBSaWRnZSBSZAotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtOTQgICAoaGV4KQkJU2Vuc2NpZW50IEx0ZAotMDAyNjk0ICAgICAoYmFzZSAxNikJCVNlbnNjaWVudCBMdGQKLQkJCQlVbml0IDIsIEJsb2NrIEEsIEFyZW5hIEJ1c2luZXNzIENlbnRyZQotCQkJCUhvbHkgUm9vZCBDbG9zZQotCQkJCVBvb2xlIERvcnNldCBCSDE3IDdGSgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI2LTk1ICAgKGhleCkJCVpUIEdyb3VwIEludCdsIEluYwotMDAyNjk1ICAgICAoYmFzZSAxNikJCVpUIEdyb3VwIEludCdsIEluYwotCQkJCTM1MCBNZWFkb3dsYW5kcyBQYXJrd2F5Ci0JCQkJU2VjYXVjdXMgTkogMDcwOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTk2ICAgKGhleCkJCU5PT0xJWCBDby4sIEx0ZAotMDAyNjk2ICAgICAoYmFzZSAxNikJCU5PT0xJWCBDby4sIEx0ZAotCQkJCURBRUNIQU5HIEIvRCAzRiwgOC0yIFNVTkFFLURPTkcKLQkJCQlCVURBTkctR1UKLQkJCQlTVU5HTkFNLVNJIEtZVU5HR0ktRE8gNDYzLTgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi05NyAgIChoZXgpCQlDaGVldGFoIFRlY2hub2xvZ2llcywgTC5QLgotMDAyNjk3ICAgICAoYmFzZSAxNikJCUNoZWV0YWggVGVjaG5vbG9naWVzLCBMLlAuCi0JCQkJMzgxIE1hbnNmaWVsZCBBdmVudWUKLQkJCQlTdWl0ZSAyMDAKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi05OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2OTggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtOTkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDAyNjk5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkMtTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LTlBICAgKGhleCkJCWNhcmluYSBzeXN0ZW0gY28uLCBsdGQuCi0wMDI2OUEgICAgIChiYXNlIDE2KQkJY2FyaW5hIHN5c3RlbSBjby4sIGx0ZC4KLQkJCQkxLTUtMiBNaW5hdG9qaW1hLW1pbmFtaW1hY2hpCi0JCQkJQ2h1by1rdQotCQkJCUtvYmUgSHlvZ28gNjUwLTAwNDcKLQkJCQlKQVBBTgotCi0wMC0yNi05QiAgIChoZXgpCQlTT0tSQVQgTHRkLgotMDAyNjlCICAgICAoYmFzZSAxNikJCVNPS1JBVCBMdGQuCi0JCQkJVm9sa29uc2tvZ28gMgotCQkJCUlya3V0c2sgIDY2NDAwNwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yNi05QyAgIChoZXgpCQlJVFVTIEpBUEFOIENPLiBMVEQKLTAwMjY5QyAgICAgKGJhc2UgMTYpCQlJVFVTIEpBUEFOIENPLiBMVEQKLQkJCQk3RiBTaGlua2F3YSBCL0QKLQkJCQkxLTEtNyBTaGlua2F3YQotCQkJCUNodW9rdSBUb2t5byAxMDQwMDMzCi0JCQkJSkFQQU4KLQotMDAtMjYtOUQgICAoaGV4KQkJTTJNbmV0IENvLiwgTHRkLgotMDAyNjlEICAgICAoYmFzZSAxNikJCU0yTW5ldCBDby4sIEx0ZC4KLQkJCQk2MDcgRG93bnRvd24gQmxkLiAxMDQzLTEgSG9neWUtRG9uZyBEb25nYW4tR3UKLQkJCQlBbnlhbmctQ2l0eSBLeXVuZ2dpLURvIDQzMS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtOUUgICAoaGV4KQkJUXVhbnRhIENvbXB1dGVyIEluYwotMDAyNjlFICAgICAoYmFzZSAxNikJCVF1YW50YSBDb21wdXRlciBJbmMKLQkJCQlOTy4gMjExLCBXRU4gSFdBIDJSRC4sIEtVRUkgU0hBTiBIU0lBTkcsIFRBSVBFSSwgU0hJRU4KLQkJCQlUQU8gWVVBTiAgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi05RiAgIChoZXgpCQlQUklWQVRFCi0wMDI2OUYgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLTI2LUEwICAgKGhleCkJCW1vYmxpYwotMDAyNkEwICAgICAoYmFzZSAxNikJCW1vYmxpYwotCQkJCTdGLCAyNzEtMSwgU2VvaHllb24tZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEt5ZW9uZ2dpLWRvIDQ2My04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtQTEgICAoaGV4KQkJTWVnZ2VyCi0wMDI2QTEgICAgIChiYXNlIDE2KQkJTWVnZ2VyCi0JCQkJNDI3MSBCcm9uemUgV2F5Ci0JCQkJRGFsbGFzIFRleGFzIDc1MjM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1BMiAgIChoZXgpCQlJbnN0cnVtZW50YXRpb24gVGVjaG5vbG9neSBTeXN0ZW1zCi0wMDI2QTIgICAgIChiYXNlIDE2KQkJSW5zdHJ1bWVudGF0aW9uIFRlY2hub2xvZ3kgU3lzdGVtcwotCQkJCTE5MzYwIEJ1c2luZXNzIENlbnRlciBEcml2ZQotCQkJCU5vcnRocmlkZ2UgQ0EgOTEzMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUEzICAgKGhleCkJCUZRIEluZ2VuaWVyaWEgRWxlY3Ryb25pY2EgUy5BLgotMDAyNkEzICAgICAoYmFzZSAxNikJCUZRIEluZ2VuaWVyaWEgRWxlY3Ryb25pY2EgUy5BLgotCQkJCUNvcnNlZ2EgMzcyIDEgMgotCQkJCUJhcmNlbG9uYSAgMDgwMzcKLQkJCQlTUEFJTgotCi0wMC0yNi1BNCAgIChoZXgpCQlOb3Z1cyBQcm9kdXRvcyBFbGV0cm9uaWNvcyBMdGRhCi0wMDI2QTQgICAgIChiYXNlIDE2KQkJTm92dXMgUHJvZHV0b3MgRWxldHJvbmljb3MgTHRkYQotCQkJCVJ1YSBBbHZhcm8gQ2hhdmVzLCAxNTUKLQkJCQlCYWlycm8gRmxvcmVzdGEKLQkJCQlQb3J0byBBbGVncmUgUlMgOTAyMjAtMDQwCi0JCQkJQlJBWklMCi0KLTAwLTI2LUE1ICAgKGhleCkJCU1JQ1JPUk9CT1QuQ08uLExURAotMDAyNkE1ICAgICAoYmFzZSAxNikJCU1JQ1JPUk9CT1QuQ08uLExURAotCQkJCTE2Ny0zIEd1bmdweWVvbmctcmkKLQkJCQlEb2NoZW9rLW15ZW9uCi0JCQkJR3dhbmdqdS1zaSBHeWVvbmdnaS1EbyA0NjQtODgxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUE2ICAgKGhleCkJCVRSSVhFTEwKLTAwMjZBNiAgICAgKGJhc2UgMTYpCQlUUklYRUxMCi0JCQkJNDYwLCBSdWUgZHUgcG9tbWFyaW4KLQkJCQlNT0lSQU5TICAzODIxMAotCQkJCUZSQU5DRQotCi0wMC0yNi1BNyAgIChoZXgpCQlDT05ORUNUIFNSTAotMDAyNkE3ICAgICAoYmFzZSAxNikJCUNPTk5FQ1QgU1JMCi0JCQkJVmlhIENlcm5haWEsIDExCi0JCQkJTWlsYW4gIDIwMTIxCi0JCQkJSVRBTFkKLQotMDAtMjYtQTggICAoaGV4KQkJREFFSEFQIEhZUEVSLVRFQ0gKLTAwMjZBOCAgICAgKGJhc2UgMTYpCQlEQUVIQVAgSFlQRVItVEVDSAotCQkJCU1lZ2EgY2VudGVyICMxMTA4LCBTSyBUZWNobm8tUGFyaywgIzE5MC0xLCBTYW5nZGFld29uLURvbmcsIEp1bmd3b24tR3UKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaS1EbyA0NjItODA3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUE5ICAgKGhleCkJCVN0cm9uZyBUZWNobm9sb2dpZXMgUHR5IEx0ZAotMDAyNkE5ICAgICAoYmFzZSAxNikJCVN0cm9uZyBUZWNobm9sb2dpZXMgUHR5IEx0ZAotCQkJCTYwIFdlZGdld29vZCBSb2FkCi0JCQkJSGFsbGFtIFZpY3RvcmlhIDM4MDMKLQkJCQlBVVNUUkFMSUEKLQotMDAtMjYtQUEgICAoaGV4KQkJS2VubWVjIE1lY2hhbmljYWwgRW5naW5lZXJpbmcgQ28uLCBMdGQuCi0wMDI2QUEgICAgIChiYXNlIDE2KQkJS2VubWVjIE1lY2hhbmljYWwgRW5naW5lZXJpbmcgQ28uLCBMdGQuCi0JCQkJM0YsIE5vLiA5NywgU2VjLjIgTmFuLUthbmcgUmQuLAotCQkJCVRhaXBlaSAgMTE1NzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LUFCICAgKGhleCkJCVNFSUtPIEVQU09OIENPUlBPUkFUSU9OCi0wMDI2QUIgICAgIChiYXNlIDE2KQkJU0VJS08gRVBTT04gQ09SUE9SQVRJT04KLQkJCQkzLTMtNSBPV0EKLQkJCQlTVVdBLVNISSBOQUdBTk8tS0VOIDM5Mi04NTAyCi0JCQkJSkFQQU4KLQotMDAtMjYtQUMgICAoaGV4KQkJU2hhbmdoYWkgTFVTVEVSIFRlcmFiYW5kIHBob3RvbmljIENvLiwgTHRkLgotMDAyNkFDICAgICAoYmFzZSAxNikJCVNoYW5naGFpIExVU1RFUiBUZXJhYmFuZCBwaG90b25pYyBDby4sIEx0ZC4KLQkJCQlGNCwgTm8uMzkgQ2hlbmdaaG9uZyBSZC4KLQkJCQlKaWFEaW5nIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMTgwMAotCQkJCUNISU5BCi0KLTAwLTI2LUFEICAgKGhleCkJCUFyYWRhIFN5c3RlbXMsIEluYy4KLTAwMjZBRCAgICAgKGJhc2UgMTYpCQlBcmFkYSBTeXN0ZW1zLCBJbmMuCi0JCQkJMTAyNCBNb3JzZSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUFFICAgKGhleCkJCVdpcmVsZXNzIE1lYXN1cmVtZW50IEx0ZAotMDAyNkFFICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIE1lYXN1cmVtZW50IEx0ZAotCQkJCVRoZSBDcmVzY2VudAotCQkJCUVNU1dPUlRIICBQTzEwIDhKUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI2LUFGICAgKGhleCkJCUR1ZWxjbyBBL1MKLTAwMjZBRiAgICAgKGJhc2UgMTYpCQlEdWVsY28gQS9TCi0JCQkJTW9tbWFya3ZlaiA1Ci0JCQkJVm9sbGVydXAKLQkJCQlTb2VuZGVyYm9yZyBTb2VuZGVyanlsbGFuZCBESzY0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTI2LUIwICAgKGhleCkJCUFwcGxlLCBJbmMKLTAwMjZCMCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1CMSAgIChoZXgpCQlOYXZpcyBBdXRvIE1vdGl2ZSBTeXN0ZW1zLCBJbmMuCi0wMDI2QjEgICAgIChiYXNlIDE2KQkJTmF2aXMgQXV0byBNb3RpdmUgU3lzdGVtcywgSW5jLgotCQkJCTNyZCBGTE9PUiwgSFlVTkRBSSBBUVVBIFBBTEFDRSA3ODUsIFdPTyAxLURPTkcsIEhBRVVOREFFR1UKLQkJCQlCVVNBTiAgNjEyLTgyMgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi1CMiAgIChoZXgpCQlTZXRyaXggQUcKLTAwMjZCMiAgICAgKGJhc2UgMTYpCQlTZXRyaXggQUcKLQkJCQlUaGVyZXNpZW5zdHJhc3NlIDYtOAotCQkJCU11ZW5jaGVuIEJheWVybiA4MDMzMwotCQkJCUdFUk1BTlkKLQotMDAtMjYtQjMgICAoaGV4KQkJVGhhbGVzIENvbW11bmljYXRpb25zIEluYwotMDAyNkIzICAgICAoYmFzZSAxNikJCVRoYWxlcyBDb21tdW5pY2F0aW9ucyBJbmMKLQkJCQkyMjYwNSBHYXRld2F5IENlbnRlciBEcml2ZQotCQkJCUNsYXJrc2J1cmcgTUQgMjA4NzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUI0ICAgKGhleCkJCUZvcmQgTW90b3IgQ29tcGFueQotMDAyNkI0ICAgICAoYmFzZSAxNikJCUZvcmQgTW90b3IgQ29tcGFueQotCQkJCTIwMzAwIFJvdHVuZGEgRHJpdmUKLQkJCQlCdWlsZGluZyAjNSwgMkUwOTkKLQkJCQlEZWFyYm9ybiBNSSA0ODEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQjUgICAoaGV4KQkJSUNPTU0gVGVsZSBMdGQKLTAwMjZCNSAgICAgKGJhc2UgMTYpCQlJQ09NTSBUZWxlIEx0ZAotCQkJCTMwNCwgVHJlbmRzZXQgVG93ZXJzLAotCQkJCVJhb2QgIyAyLCBCYW5qYXJhIEhpbGxzCi0JCQkJSHlkZXJhYmFkIEFQIDUwMDAzNAotCQkJCUlORElBCi0KLTAwLTI2LUI2ICAgKGhleCkJCUFza2V5IENvbXB1dGVyCi0wMDI2QjYgICAgIChiYXNlIDE2KQkJQXNrZXkgQ29tcHV0ZXIKLQkJCQkxMEYsTk8uMTE5LENISUVOS0FORyBSRCxDSFVORy1ITwotCQkJCVRBSVBFSSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi1CNyAgIChoZXgpCQlLaW5nc3RvbiBUZWNobm9sb2d5IENvbXBhbnksIEluYy4KLTAwMjZCNyAgICAgKGJhc2UgMTYpCQlLaW5nc3RvbiBUZWNobm9sb2d5IENvbXBhbnksIEluYy4KLQkJCQkxNzYwMCBOZXdob3BlIFN0LgotCQkJCUZvdW50YWluIFZhbGxleSBDQSA5MjcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQjggICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0wMDI2QjggICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1COSAgIChoZXgpCQlEZWxsIEluYwotMDAyNkI5ICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1CQSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMDAyNkJBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4sIFVTIDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1CQiAgIChoZXgpCQlBcHBsZSwgSW5jCi0wMDI2QkIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUJDICAgKGhleCkJCUdlbmVyYWwgSmFjayBUZWNobm9sb2d5IEx0ZC4KLTAwMjZCQyAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIEphY2sgVGVjaG5vbG9neSBMdGQuCi0JCQkJVGhlIEFyZWEgb2YgQWRtaW5pc3RyYXRpb24gb2YgTGlhbiBCZWksCi0JCQkJQ2hhbmcgUGluZwotCQkJCURvbmcgR3VhbiBHdWFuZyBEb25nIDUyMzU4MAotCQkJCUNISU5BCi0KLTAwLTI2LUJEICAgKGhleCkJCUpURUMgQ2FyZCAmIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0wMDI2QkQgICAgIChiYXNlIDE2KQkJSlRFQyBDYXJkICYgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQlEYWJvIEJsZGcsIDRGLCA2MS0xLCBHeWVzdS1kb25nLCBTb3NhLWd1Ci0JCQkJQnVjaGVvbiBHeXVuZ2dpLWRvIDQyMi0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtQkUgICAoaGV4KQkJU2Nob29uZGVyYmVlayBFbGVrdHJvbmljYSBTeXN0ZW1lbiBCLlYuCi0wMDI2QkUgICAgIChiYXNlIDE2KQkJU2Nob29uZGVyYmVlayBFbGVrdHJvbmljYSBTeXN0ZW1lbiBCLlYuCi0JCQkJUm9nZ2VzdHJhYXQgMy01Ci0JCQkJTmlldXcgVmVubmVwIE5vb3JkIEhvbGxhbmQgMjE1M0dDCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtMjYtQkYgICAoaGV4KQkJU2hlblpoZW4gVGVtb2JpIFNjaWVuY2UmVGVjaCBEZXZlbG9wbWVudCBDby4sTHRkCi0wMDI2QkYgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gVGVtb2JpIFNjaWVuY2UmVGVjaCBEZXZlbG9wbWVudCBDby4sTHRkCi0JCQkJNEZsb29yRywgSmlucnVuIFRvd2VyLCA2MDE5IFNoZW5uYW4gUm9hZAotCQkJCUZ1VGlhbiBEaXN0cmljdAotCQkJCVNoZW5aaGVuICA1MTgwMDAKLQkJCQlDSElOQQotCi0wMC0yNi1DMCAgIChoZXgpCQlFbmVyZ3lIdWIKLTAwMjZDMCAgICAgKGJhc2UgMTYpCQlFbmVyZ3lIdWIKLQkJCQkyMzIgM3JkIFN0IEMyMDEKLQkJCQlCcm9va2x5biBOWSAxMTIxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQzEgICAoaGV4KQkJQVJUUkFZIENPLiwgTFRELgotMDAyNkMxICAgICAoYmFzZSAxNikJCUFSVFJBWSBDTy4sIExURC4KLQkJCQk1RiBVZW5vIEJsZGcsIDEtMTctNSBLb3Vlbmppa2l0YSwKLQkJCQlTdWdpbmFtaS1rdSwKLQkJCQlUb2t5byAgMTY2LTAwMDIKLQkJCQlKQVBBTgotCi0wMC0yNi1DMiAgIChoZXgpCQlTQ0RJIENvLiBMVEQKLTAwMjZDMiAgICAgKGJhc2UgMTYpCQlTQ0RJIENvLiBMVEQKLQkJCQkjNDUxLCBIYWdhbC1Eb25nLCBHaWhldW5nLUd1LAotCQkJCVlvbmdpbi1TaSBHeWVvbmdnaS1EbyA0NDYtOTMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUMzICAgKGhleCkJCUluc2lnaHRlayBDb3JwLgotMDAyNkMzICAgICAoYmFzZSAxNikJCUluc2lnaHRlayBDb3JwLgotCQkJCTVGLE5PLjc1NSxDaHVuZyBDaGVuZyBSZC4sCi0JCQkJQ2h1bmcgSG8gQ2l0eSBUYWlwZWkgSHNpZW4gMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi1DNCAgIChoZXgpCQlDYWRtb3MgbWljcm9zeXN0ZW1zIFMuci5sLgotMDAyNkM0ICAgICAoYmFzZSAxNikJCUNhZG1vcyBtaWNyb3N5c3RlbXMgUy5yLmwuCi0JCQkJVmlhIFBpZXRybyBGcmF0dGluaSwgMjU1Ci0JCQkJUm9tYSAgMDAxNDkKLQkJCQlJVEFMWQotCi0wMC0yNi1DNSAgIChoZXgpCQlHdWFuZ2RvbmcgR29zdW4gVGVsZWNvbW11bmljYXRpb25zIENvLixMdGQKLTAwMjZDNSAgICAgKGJhc2UgMTYpCQlHdWFuZ2RvbmcgR29zdW4gVGVsZWNvbW11bmljYXRpb25zIENvLixMdGQKLQkJCQlHdWFuZ2Rvbmcgc29mdHdhcmUgcGFyayBELCBOby4xMSwgQ2FpUGluZyByb2FkICwgR3Vhbmd6aG91IHNjaWVuY2UgY2l0eQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYzCi0JCQkJQ0hJTkEKLQotMDAtMjYtQzYgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDI2QzYgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yNi1DNyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwMjZDNyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLTI2LUM4ICAgKGhleCkJCVN5c3RlbSBTZW5zb3IKLTAwMjZDOCAgICAgKGJhc2UgMTYpCQlTeXN0ZW0gU2Vuc29yCi0JCQkJMzgyNSBPaGlvIEF2ZW51ZQotCQkJCVNhaW50IENoYXJsZXMgSUwgNjAxNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUM5ICAgKGhleCkJCVByb3ZlbnRpeCBTeXN0ZW1zLCBJbmMuCi0wMDI2QzkgICAgIChiYXNlIDE2KQkJUHJvdmVudGl4IFN5c3RlbXMsIEluYy4KLQkJCQk0NTE4IFZhbGxleWRhbGUgUm9hZAotCQkJCVN1aXRlIDIwMgotCQkJCUJpcm1pbmdoYW0gQUwgMzUyNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUNBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjZDQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1DQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI2Q0IgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQ0MgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLTAwMjZDQyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MCBWCi0JCQkJREVOTUFSSwotCi0wMC0yNi1DRCAgIChoZXgpCQlQdXJwbGVDb21tLCBJbmMuCi0wMDI2Q0QgICAgIChiYXNlIDE2KQkJUHVycGxlQ29tbSwgSW5jLgotCQkJCTI2MjAgQXVndXN0aW5lIERyLiwgU3RlLiAxMDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQ0UgICAoaGV4KQkJS296dW1pIFVTQSBDb3JwLgotMDAyNkNFICAgICAoYmFzZSAxNikJCUtvenVtaSBVU0EgQ29ycC4KLQkJCQkzMDA1IEhhcnRyaWRnZSBUZXJyYWNlCi0JCQkJV2VsbGluZ3RvbiBGTCAzMzQxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtQ0YgICAoaGV4KQkJREVLQSBSJkQKLTAwMjZDRiAgICAgKGJhc2UgMTYpCQlERUtBIFImRAotCQkJCTM0MCBDb21tZXJjaWFsIFN0cmVldAotCQkJCU1hbmNoZXN0ZXIgTkggMDMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUQwICAgKGhleCkJCVNlbWloYWxmCi0wMDI2RDAgICAgIChiYXNlIDE2KQkJU2VtaWhhbGYKLQkJCQl1bC4gUmFjaWJvcnNrYSAxNUQvMzIKLQkJCQlLcmFrb3cgIDMwLTM4NAotCQkJCVBPTEFORAotCi0wMC0yNi1EMSAgIChoZXgpCQlTIFNxdWFyZWQgSW5ub3ZhdGlvbnMgSW5jLgotMDAyNkQxICAgICAoYmFzZSAxNikJCVMgU3F1YXJlZCBJbm5vdmF0aW9ucyBJbmMuCi0JCQkJNjgwNy0xMDQgU3RyZWV0Ci0JCQkJRWRtb250b24gQUIgVDZIIDJMNQotCQkJCUNBTkFEQQotCi0wMC0yNi1EMiAgIChoZXgpCQlQY3ViZSBTeXN0ZW1zLCBJbmMuCi0wMDI2RDIgICAgIChiYXNlIDE2KQkJUGN1YmUgU3lzdGVtcywgSW5jLgotCQkJCTE4NTcgTydUb29sZSBMYW5lCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUQzICAgKGhleCkJCVplbm8gSW5mb3JtYXRpb24gU3lzdGVtCi0wMDI2RDMgICAgIChiYXNlIDE2KQkJWmVubyBJbmZvcm1hdGlvbiBTeXN0ZW0KLQkJCQkjMTQwNCBBLURvbmcgRGlnaXRhbCBFbXBpcmUgQmxkZywgOTgwLTMsIFlvdW5ndG9uZy1kb25nLCBZb3VuZ3RvbmctZ3UKLQkJCQlTdXdvbiBDaXR5IEd5ZW9uZ2dpLURvIDQ0My03MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtRDQgICAoaGV4KQkJSVJDQSBTcEEKLTAwMjZENCAgICAgKGJhc2UgMTYpCQlJUkNBIFNwQQotCQkJCVZpYWxlIFZlbmV6aWEgMzEgLSBDLlAuIDI0OAotCQkJCVNhbiBWZW5kZW1pYW5vIChUcmV2aXNvKSBJdGFseSAzMTAyMAotCQkJCUlUQUxZCi0KLTAwLTI2LUQ1ICAgKGhleCkJCU9yeSBTb2x1Y29lcyBlbSBDb21lcmNpbyBkZSBJbmZvcm1hdGljYSBMdGRhLgotMDAyNkQ1ICAgICAoYmFzZSAxNikJCU9yeSBTb2x1Y29lcyBlbSBDb21lcmNpbyBkZSBJbmZvcm1hdGljYSBMdGRhLgotCQkJCUF2LiBVbmlzaW5vcywgNjE1Ci0JCQkJU2FvIExlb3BvbGRvIFJTIDkzMDIyMDAwCi0JCQkJQlJBWklMCi0KLTAwLTI2LUQ2ICAgKGhleCkJCU5pbmdibyBBbmR5IE9wdG9lbGVjdHJvbmljIENvLiwgTHRkLgotMDAyNkQ2ICAgICAoYmFzZSAxNikJCU5pbmdibyBBbmR5IE9wdG9lbGVjdHJvbmljIENvLiwgTHRkLgotCQkJCUxhbmppYW5nIFN0cmVldCBJbmR1c3RyaWFsIFpvbmUKLQkJCQlZdXlhbyBaaGVqaWFuZyAzMTU0MDAKLQkJCQlDSElOQQotCi0wMC0yNi1ENyAgIChoZXgpCQlYaWFtZW4gQkIgRWxlY3Ryb24gJiBUZWNobm9sb2d5IENvLiwgTHRkLgotMDAyNkQ3ICAgICAoYmFzZSAxNikJCVhpYW1lbiBCQiBFbGVjdHJvbiAmIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMzAzLCBBbmd5ZSBCdWlsZGluZywgVG9yY2ggSGlnaC10ZWNoIERldmVsb3BtZW50IFpvbmUKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwOQotCQkJCUNISU5BCi0KLTAwLTI2LUQ4ICAgKGhleCkJCU1hZ2ljIFBvaW50IEluYy4KLTAwMjZEOCAgICAgKGJhc2UgMTYpCQlNYWdpYyBQb2ludCBJbmMuCi0JCQkJU3VpdGUgMjAzLCBCdWlsZGluZyAxNywgTm8uIDI5NSBMaW4gTmFuIFJvYWQsIFB1ZG9uZyBTb2Z0d2FyZSBQYXJrIFNhbmxpbiBXb3JsZCBFeHBvIEJsb2NrCi0JCQkJU2hhbmdoYWkgIDIwMDAxMjYKLQkJCQlDSElOQQotCi0wMC0yNi1EOSAgIChoZXgpCQlQYWNlIHBsYwotMDAyNkQ5ICAgICAoYmFzZSAxNikJCVBhY2UgcGxjCi0JCQkJU2FsdHMgTWlsbAotCQkJCVZpY3RvcmlhIFJvYWQKLQkJCQlCcmFkZm9yZCBXZXN0IFlvcmtzaGlyZSBCRDE4IDNMRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTI2LURBICAgKGhleCkJCVVuaXZlcnNhbCBNZWRpYSBDb3Jwb3JhdGlvbiAvU2xvdmFraWEvIHMuci5vLgotMDAyNkRBICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBNZWRpYSBDb3Jwb3JhdGlvbiAvU2xvdmFraWEvIHMuci5vLgotCQkJCU1pY2tpZXdpY3pvdmEgNzEwNC8xNAotCQkJCUJyYXRpc2xhdmEgIDgxMSAwNwotCQkJCVNMT1ZBS0lBCi0KLTAwLTI2LURCICAgKGhleCkJCUlvbmljcyBFTVMgSW5jLgotMDAyNkRCICAgICAoYmFzZSAxNikJCUlvbmljcyBFTVMgSW5jLgotCQkJCUNhcm1lbHJheSBJbmR1c3RyaWFsIFBhcmsgMiwgQnJneS4gVHVsbwotCQkJCUNhbGFtYmEgTGFndW5hIDQwMjcKLQkJCQlQSElMSVBQSU5FUwotCi0wMC0yNi1EQyAgIChoZXgpCQlPcHRpY2FsIFN5c3RlbXMgRGVzaWduCi0wMDI2REMgICAgIChiYXNlIDE2KQkJT3B0aWNhbCBTeXN0ZW1zIERlc2lnbgotCQkJCTcvMSBWdWtvIFBsYWNlCi0JCQkJV2Fycmlld29vZCBOU1cgMjEwMgotCQkJCUFVU1RSQUxJQQotCi0wMC0yNi1ERCAgIChoZXgpCQlGaXZhbCBDb3Jwb3JhdGlvbgotMDAyNkREICAgICAoYmFzZSAxNikJCUZpdmFsIENvcnBvcmF0aW9uCi0JCQkJcm9vbSAyMDEtNyBzYWdpdHRhcml1cyBCCi0JCQkJd3V4aSBzb2Z0d2FyZSBwYXJrCi0JCQkJamlhbmdzdSBwcm92aW5jZSAyMTQwMjgKLQkJCQlDSElOQQotCi0wMC0yNi1ERSAgIChoZXgpCQlGREkgTUFURUxFQwotMDAyNkRFICAgICAoYmFzZSAxNikJCUZESSBNQVRFTEVDCi0JCQkJUm91dGUgZGUgc2FpbnQgc3ltcGhvcmllbgotCQkJCUJQIDY5Ci0JCQkJTGVzIGxhbmRlcyBHw6ludXNzb24gIDg1MTMwCi0JCQkJRlJBTkNFCi0KLTAwLTI2LURGICAgKGhleCkJCVRhaURvYyBUZWNobm9sb2d5IENvcnAuCi0wMDI2REYgICAgIChiYXNlIDE2KQkJVGFpRG9jIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQk3RiwgTm8uIDEyNywgV3Vnb25nIDJuZCBSZC4sIDI0ODg4IFd1Z3UgVG93bnNoaXAKLQkJCQlUYWlwZWkgQ291bnR5IFRhaXdhbiAyNDg4OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMjYtRTAgICAoaGV4KQkJQVNJVEVRCi0wMDI2RTAgICAgIChiYXNlIDE2KQkJQVNJVEVRCi0JCQkJNUYsIERPTkdZT1VORyBCbGRnLDM4Mi02LFlhdGFwIGRvbmcKLQkJCQlCdW5kYW5nIEd1LAotCQkJCVN1bmcgTmFtIHNpIEt5b3VuZ2dpLWRvIDQ2My04MjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtRTEgICAoaGV4KQkJU3RhbmZvcmQgVW5pdmVyc2l0eSwgT3BlbkZsb3cgR3JvdXAKLTAwMjZFMSAgICAgKGJhc2UgMTYpCQlTdGFuZm9yZCBVbml2ZXJzaXR5LCBPcGVuRmxvdyBHcm91cAotCQkJCTM1MyBTZXJyYSBNYWxsCi0JCQkJRUUgLSBDb21wdXRlciBTeXN0ZW1zIExhYm9yYXRvcnkKLQkJCQlTdGFuZm9yZCBDQSA5NDMwNS05MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1FMiAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotMDAyNkUyICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAtMzksR2FzYW4tZG9uZyxHdW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUUzICAgKGhleCkJCURUSQotMDAyNkUzICAgICAoYmFzZSAxNikJCURUSQotCQkJCVJ1ZSBkZSBsYSBnYXJlLCAzNQotCQkJCU5BTklOTkUgTkFNVVIgNTEwMAotCQkJCUJFTEdJVU0KLQotMDAtMjYtRTQgICAoaGV4KQkJQ0FOQUwgT1ZFUlNFQVMKLTAwMjZFNCAgICAgKGJhc2UgMTYpCQlDQU5BTCBPVkVSU0VBUwotCQkJCTQ4IHF1YWkgZHUgcG9pbnQgZHUgam91cgotCQkJCUJvdWxvZ25lLUJpbGxhbmNvdXJ0ICA5MjY1OQotCQkJCUZSQU5DRQotCi0wMC0yNi1FNSAgIChoZXgpCQlBRUcgUG93ZXIgU29sdXRpb25zCi0wMDI2RTUgICAgIChiYXNlIDE2KQkJQUVHIFBvd2VyIFNvbHV0aW9ucwotCQkJCUVtaWwgU2llcG1hbm5zdHIuIDMyCi0JCQkJV2Fyc3RlaW4gTlJXIDU5NTgxCi0JCQkJR0VSTUFOWQotCi0wMC0yNi1FNiAgIChoZXgpCQlWaXNpb25oaXRlY2ggQ28uLCBMdGQuCi0wMDI2RTYgICAgIChiYXNlIDE2KQkJVmlzaW9uaGl0ZWNoIENvLiwgTHRkLgotCQkJCVZpc2lvbiBibGRnLiAxNTAtMwotCQkJCVNpbWdvay1Eb25nLCBXb25taS1LdQotCQkJCUJ1Y2hvbiBLeXVuZ2dpLURvIDQyMC04MjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjYtRTcgICAoaGV4KQkJU2hhbmdoYWkgT05MQU4gQ29tbXVuaWNhdGlvbiBUZWNoLiBDby4sIEx0ZC4KLTAwMjZFNyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBPTkxBTiBDb21tdW5pY2F0aW9uIFRlY2guIENvLiwgTHRkLgotCQkJCTNGLCA2QywgTm8uIDE2NTgsIEd1bWVpIFJvYWQsIFh1aHVpIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTAwLTI2LUU4ICAgKGhleCkJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotMDAyNkU4ICAgICAoYmFzZSAxNikJCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgotCQkJCTEwLTEsIEhpZ2FzaGlrb3RhcmkgMS1jaG9tZQotCQkJCU5hZ2Fva2FreW8tc2hpIEt5b3RvIDYxNy04NTU1Ci0JCQkJSkFQQU4KLQotMDAtMjYtRTkgICAoaGV4KQkJU1AgQ29ycAotMDAyNkU5ICAgICAoYmFzZSAxNikJCVNQIENvcnAKLQkJCQlHdXJvIDMtZG9uZyAsR3Vyby1ndQotCQkJCUFjZSBUZWNobm8gOCBDaGEgMTMwNQotCQkJCVNlb3VsICAxNTItNzgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTI2LUVBICAgKGhleCkJCUNoZWVyY2hpcCBFbGVjdHJvbmljIFRlY2hub2xvZ3kgKFNoYW5nSGFpKSBDby4sIEx0ZC4KLTAwMjZFQSAgICAgKGJhc2UgMTYpCQlDaGVlcmNoaXAgRWxlY3Ryb25pYyBUZWNobm9sb2d5IChTaGFuZ0hhaSkgQ28uLCBMdGQuCi0JCQkJUk9PTSAxMjAyLCBOTy4gNTEsIDcgQXJlYSwgTk8uIDE0NjcgQ0FPQkFPIFJPQUQ7Ci0JCQkJTUlOSEFORyBBUkVBCi0JCQkJU0hBTkdIQUkgIDIwMTEwMQotCQkJCUNISU5BCi0KLTAwLTI2LUVCICAgKGhleCkJCUFkdmFuY2VkIFNwZWN0cnVtIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDI2RUIgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgU3BlY3RydW0gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxRi4sIE5vLjY3IEpob25namhlbmcgUmQuCi0JCQkJU2luamh1YW5nIFRhaXdhbiAyNDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LUVDICAgKGhleCkJCUxlZ3JhbmQgSG9tZSBTeXN0ZW1zLCBJbmMKLTAwMjZFQyAgICAgKGJhc2UgMTYpCQlMZWdyYW5kIEhvbWUgU3lzdGVtcywgSW5jCi0JCQkJMzAxIEZ1bGxpbmcgTWlsbCBSZAotCQkJCVN1aXRlIEcKLQkJCQlNaWRkbGV0b3duIFBBIDE3MDU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1FRCAgIChoZXgpCQl6dGUgY29ycG9yYXRpb24KLTAwMjZFRCAgICAgKGJhc2UgMTYpCQl6dGUgY29ycG9yYXRpb24KLQkJCQkxMi9GIHp0ZSBwbGF6YSxrZWppIFJvYWQgU291dGgsSEktVGVjaCBJbmR1c3RyaWFsIFBhcmssTmFuc2hhbiBEaXN0cmljdAotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0wMC0yNi1FRSAgIChoZXgpCQlUS00gR21iSAotMDAyNkVFICAgICAoYmFzZSAxNikJCVRLTSBHbWJICi0JCQkJU2NobG9zc3N0cmHDg8W4ZSAxMjMKLQkJCQlNw4PCtm5jaGVuZ2xhZGJhY2ggTlJXIDQxMjM4Ci0JCQkJR0VSTUFOWQotCi0wMC0yNi1FRiAgIChoZXgpCQlUZWNobm9sb2d5IEFkdmFuY2VtZW50IEdyb3VwLCBJbmMuCi0wMDI2RUYgICAgIChiYXNlIDE2KQkJVGVjaG5vbG9neSBBZHZhbmNlbWVudCBHcm91cCwgSW5jLgotCQkJCTIyMzU1IFRhZyBXYXkKLQkJCQlEdWxsZXMgVkEgMjAxNjYtOTMxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtRjAgICAoaGV4KQkJY1RyaXhzIEludGVybmF0aW9uYWwgR21iSC4KLTAwMjZGMCAgICAgKGJhc2UgMTYpCQljVHJpeHMgSW50ZXJuYXRpb25hbCBHbWJILgotCQkJCUxpZWZlcmluZ2VyIEhhdXB0c3RyLiAxNDAKLQkJCQlTYWx6YnVyZyBTYWx6YnVyZyA1MDIwCi0JCQkJQVVTVFJJQQotCi0wMC0yNi1GMSAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDI2RjEgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMDAgRm9vdGhpbGxzIEJsdmQuCi0JCQkJUm9zZXZpbGxlIENhbGlmb3JuaWEgOTU3NDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI2LUYyICAgKGhleCkJCU5ldGdlYXIKLTAwMjZGMiAgICAgKGJhc2UgMTYpCQlOZXRnZWFyCi0JCQkJMzUwIEVhc3QgUGx1bWVyaWEgRHJpdmUKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNi1GMyAgIChoZXgpCQlTTUMgTmV0d29ya3MKLTAwMjZGMyAgICAgKGJhc2UgMTYpCQlTTUMgTmV0d29ya3MKLQkJCQkyMCBNYXNvbgotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtRjQgICAoaGV4KQkJTmVzc2xhYgotMDAyNkY0ICAgICAoYmFzZSAxNikJCU5lc3NsYWIKLQkJCQk0ODktMiBNYWV0YW4gMy1kb25nLCBZZW9uZyBUb25nLWd1Ci0JCQkJU3V3b24tc2kgR3llb25nZ2ktZG8gNDQzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi1GNSAgIChoZXgpCQlYUlBMVVMgSW5jLgotMDAyNkY1ICAgICAoYmFzZSAxNikJCVhSUExVUyBJbmMuCi0JCQkJIzgwNSBBY2UgVGVjaG5vIFRvd2VyIDJuZCAxOTctMTcKLQkJCQlHdXJvM0RvbmcsIEd1cm8tR3UKLQkJCQlTZW91bCAgMTUyLTc2NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNi1GNiAgIChoZXgpCQlNaWxpdGFyeSBDb21tdW5pY2F0aW9uIEluc3RpdHV0ZQotMDAyNkY2ICAgICAoYmFzZSAxNikJCU1pbGl0YXJ5IENvbW11bmljYXRpb24gSW5zdGl0dXRlCi0JCQkJdWwuIFdhcnN6YXdza2EgMjJBCi0JCQkJWmVncnplICAwNS0xMzAKLQkJCQlQT0xBTkQKLQotMDAtMjYtRjcgICAoaGV4KQkJSW5mb3N5cyBUZWNobm9sb2dpZXMgTHRkLgotMDAyNkY3ICAgICAoYmFzZSAxNikJCUluZm9zeXMgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQk0NCwgRWxlY3Ryb25pY3MgQ2l0eQotCQkJCUhvc3VyIFJvYWQKLQkJCQlCYW5nYWxvcmUgS2FybmFrYXRhIDU2MDEwMAotCQkJCUlORElBCi0KLTAwLTI2LUY4ICAgKGhleCkJCUdvbGRlbiBIaWdod2F5IEluZHVzdHJ5IERldmVsb3BtZW50IENvLiwgTHRkLgotMDAyNkY4ICAgICAoYmFzZSAxNikJCUdvbGRlbiBIaWdod2F5IEluZHVzdHJ5IERldmVsb3BtZW50IENvLiwgTHRkLgotCQkJCUZsb29yIDcsIEJsb2NrIDgsIFZpc2lvbiBTaGVuemhlbiBCdXNpbmVzcyBQYXJrLCBOby45IEdhb3hpbiA5dGggU291dGggUm9hZAotCQkJCVNoZW56aGVuIEhpLXRlY2ggSW5kdXN0cmlhbCBQYXJrLCBOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gQ2l0eSBHdWFuZ2RvbmcgUHJvdmluY2UgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDAtMjYtRjkgICAoaGV4KQkJUy5FLk0uIHNybAotMDAyNkY5ICAgICAoYmFzZSAxNikJCVMuRS5NLiBzcmwKLQkJCQl2aWEgTGVjY28sIDYxCi0JCQkJVmltZXJjYXRlIE1vbnphIEJyaWFuemEgMjAwNTkKLQkJCQlJVEFMWQotCi0wMC0yNi1GQSAgIChoZXgpCQlCYW5kUmljaCBJbmMuCi0wMDI2RkEgICAgIChiYXNlIDE2KQkJQmFuZFJpY2ggSW5jLgotCQkJCTdGLiwgTm8uMTg4LCBCYW9jaWFvIFJvYWQKLQkJCQlTaW5kaWFuIENpdHkgVGFpcGVpIDIzMTQ1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi1GQiAgIChoZXgpCQlBaXJEaW8gV2lyZWxlc3MsIEluYy4KLTAwMjZGQiAgICAgKGJhc2UgMTYpCQlBaXJEaW8gV2lyZWxlc3MsIEluYy4KLQkJCQkxMy01LCBOby4gNzksIFNlYy4gMSwgSHNpbiBUYWkgV3UgUm9hZAotCQkJCUhzaWNoaWggQ2l0eSwgVGFpcGVpIENvdW50eSBUYWl3YW4gMjIxMDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LUZDICAgKGhleCkJCUFjU2lQIFRlY2hub2xvZ3kgQ29ycC4KLTAwMjZGQyAgICAgKGJhc2UgMTYpCQlBY1NpUCBUZWNobm9sb2d5IENvcnAuCi0JCQkJM0YuLCBOby4yMiwgRGFsaW4gUmQuLAotCQkJCVRhb3l1YW4gQ2l0eSwgVGFveXVhbiBDb3VudHkgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNi1GRCAgIChoZXgpCQlJbnRlcmFjdGl2ZSBJbnRlbGxpZ2VuY2UKLTAwMjZGRCAgICAgKGJhc2UgMTYpCQlJbnRlcmFjdGl2ZSBJbnRlbGxpZ2VuY2UKLQkJCQk3NjAxIEludGVyYWN0aXZlIFdheQotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjYtRkUgICAoaGV4KQkJTUtEIFRlY2hub2xvZ3kgSW5jLgotMDAyNkZFICAgICAoYmFzZSAxNikJCU1LRCBUZWNobm9sb2d5IEluYy4KLQkJCQkgUi5COCwgTm8uMSBMaXNpbmcgMXN0ICBSZC4sCi0JCQkJSHNpbmNodSAgMzAwNzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI2LUZGICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbgotMDAyNkZGICAgICAoYmFzZSAxNikJCVJlc2VhcmNoIEluIE1vdGlvbgotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi0wMC0yNy0wMCAgIChoZXgpCQlTaGVuemhlbiBTaWdsZW50IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDI3MDAgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU2lnbGVudCBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUJVSUxESU5HIEE4LFRBTkdMQU5HIElORFVTVFJJQUwgWk9ORSxYSUxJLE5BTlNIQU4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotMDAtMjctMDEgICAoaGV4KQkJSU5DT3N0YXJ0ZWMgR21iSAotMDAyNzAxICAgICAoYmFzZSAxNikJCUlOQ09zdGFydGVjIEdtYkgKLQkJCQlSaGVpbnN0ci4gMTcKLQkJCQlUZWx0b3cgR2VybWFueSAxNDUxMwotCQkJCUdFUk1BTlkKLQotMDAtMjctMDIgICAoaGV4KQkJU29sYXJFZGdlIFRlY2hub2xvZ2llcwotMDAyNzAyICAgICAoYmFzZSAxNikJCVNvbGFyRWRnZSBUZWNobm9sb2dpZXMKLQkJCQkxIEFiYmEgRWJhbiBTdC4KLQkJCQlQT0IgMTI3NjYKLQkJCQlIZXJ6ZWxpYSAgNDY3MjUKLQkJCQlJU1JBRUwKLQotMDAtMjctMDMgICAoaGV4KQkJVGVzdGVjaCBFbGVjdHJvbmljcyBQdGUgTHRkCi0wMDI3MDMgICAgIChiYXNlIDE2KQkJVGVzdGVjaCBFbGVjdHJvbmljcyBQdGUgTHRkCi0JCQkJQmxvY2sgMTE4LCAjMDUtMTEwLAotCQkJCUFsanVuaWVkIEF2ZSAyCi0JCQkJU2luZ2Fwb3JlICAzODAxMTgKLQkJCQlTSU5HQVBPUkUKLQotMDAtMjctMDQgICAoaGV4KQkJQWNjZWxlcmF0ZWQgQ29uY2VwdHMsIEluYwotMDAyNzA0ICAgICAoYmFzZSAxNikJCUFjY2VsZXJhdGVkIENvbmNlcHRzLCBJbmMKLQkJCQk0MDE3IFcgRHIgTWFydGluIEx1dGhlciBLaW5nIEpyIEJsdmQKLQkJCQlUYW1wYSBGTCAzMzYxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjctMDUgICAoaGV4KQkJU2VjdHJvbmljCi0wMDI3MDUgICAgIChiYXNlIDE2KQkJU2VjdHJvbmljCi0JCQkJWi5JLiBMZXMgU2F1bG5pZXJzCi0JCQkJU2FpbnRlLU1hdXJlIGRlIFRvdXJhaW5lICAzNzgwMAotCQkJCUZSQU5DRQotCi0wMC0yNy0wNiAgIChoZXgpCQlZT0lTWVMKLTAwMjcwNiAgICAgKGJhc2UgMTYpCQlZT0lTWVMKLQkJCQkzMDktNTIgU1VOR1NVLTJHQSwgMURPTkcsIFNVTkdET05HLUdVCi0JCQkJU0VPVUwgIDEzMy04MjcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMjctMDcgICAoaGV4KQkJTGlmdCBDb21wbGV4IERTLCBKU0MKLTAwMjcwNyAgICAgKGJhc2UgMTYpCQlMaWZ0IENvbXBsZXggRFMsIEpTQwotCQkJCW1pa3JvcmF5b24gR29yc2t5LCA2Ci0JCQkJTm92b3NpYmlyc2sgIDYzMDA3MwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC0yNy0wOCAgIChoZXgpCQlOb3JkaWFnIEFTQQotMDAyNzA4ICAgICAoYmFzZSAxNikJCU5vcmRpYWcgQVNBCi0JCQkJRnJ5c2phdmVpZW4gNDAKLQkJCQlPc2xvICAwODg0Ci0JCQkJTk9SV0FZCi0KLTAwLTI3LTA5ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMDAyNzA5ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTAwLTI3LTBBICAgKGhleCkJCUlFRSBTLkEuCi0wMDI3MEEgICAgIChiYXNlIDE2KQkJSUVFIFMuQS4KLQkJCQlaQUUgV2VpZXJnZXdhbgotCQkJCTExLCBydWUgRWRtb25kIFJldXRlcgotCQkJCUNvbnRlcm4gIEwtNTMyNgotCQkJCUxVWEVNQk9VUkcKLQotMDAtMjctMEIgICAoaGV4KQkJQWR1cmEgVGVjaG5vbG9naWVzCi0wMDI3MEIgICAgIChiYXNlIDE2KQkJQWR1cmEgVGVjaG5vbG9naWVzCi0JCQkJMjggU2Vjb25kIFN0cmVldAotCQkJCTR0aCBGbG9vcgotCQkJCVNhbiBGcmFuY2lzY28gQ0EgOTQxMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI3LTBDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwMjcwQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNy0wRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDI3MEQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjctMEUgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wMDI3MEUgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wMC0yNy0wRiAgIChoZXgpCQlFbnZpc2lvbm5vdmF0aW9uIEluYwotMDAyNzBGICAgICAoYmFzZSAxNikJCUVudmlzaW9ubm92YXRpb24gSW5jCi0JCQkJNCBXYXJlaGFtIERyaXZlCi0JCQkJTWlzc2lzc2F1Z2EgT250YXJpbyBMNU0gMUI2Ci0JCQkJQ0FOQURBCi0KLTAwLTI3LTEwICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotMDAyNzEwICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotMDAtMjctMTEgICAoaGV4KQkJTGFuUHJvIEluYwotMDAyNzExICAgICAoYmFzZSAxNikJCUxhblBybyBJbmMKLQkJCQkxODgwIE5XIDkzQXYKLQkJCQlNaWFtaSBGbG9yaWRhIDMzMTcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yNy0xMiAgIChoZXgpCQlNYXhWaXNpb24gTExDCi0wMDI3MTIgICAgIChiYXNlIDE2KQkJTWF4VmlzaW9uIExMQwotCQkJCTQ5NSBQcm9kdWN0aW9uIEF2ZQotCQkJCU1hZGlzb24gQUwgMzU3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTI3LTEzICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotMDAyNzEzICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTEFORSAzNTEsIFNFQy4xLCBUQUlQSU5HIFJELgotCQkJCVRTQU9UVUVOCi0JCQkJTkFOVE9VIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0yNy0xNCAgIChoZXgpCQlHcmFpbm11c3RhcmRzLCBDbyxsdGQuCi0wMDI3MTQgICAgIChiYXNlIDE2KQkJR3JhaW5tdXN0YXJkcywgQ28sbHRkLgotCQkJCUhFSVdBIE1LIEJsZGcsMi00OC00LE5paG9uYmFzaGktSGFtYS1jaG8KLQkJCQlDaHVvLWt1LAotCQkJCVRva3lvICAxMDMtMDAwNwotCQkJCUpBUEFOCi0KLTAwLTI3LTE1ICAgKGhleCkJCVJlYm91bmQgVGVsZWNvbS4gQ28uLCBMdGQKLTAwMjcxNSAgICAgKGJhc2UgMTYpCQlSZWJvdW5kIFRlbGVjb20uIENvLiwgTHRkCi0JCQkJMTJGLEJ1aWxkaW5nIE5vLjgyLE5vLjExOTgsTm9ydGggUWluemhvdSBSZCwKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMDAtMjctMTYgICAoaGV4KQkJQWRhY2hpLVN5b2thaSBDby4sIEx0ZC4KLTAwMjcxNiAgICAgKGJhc2UgMTYpCQlBZGFjaGktU3lva2FpIENvLiwgTHRkLgotCQkJCTIyOC0yIEhhemFtYSBNYWtpCi0JCQkJRnVrdWNoaXlhbWEtc2hpIEt5b3RvIDYyMC0wOTEzCi0JCQkJSkFQQU4KLQotMDAtMjctMTcgICAoaGV4KQkJQ0UgRGlnaXRhbChaaGVuamlhbmcpQ28uLEx0ZAotMDAyNzE3ICAgICAoYmFzZSAxNikJCUNFIERpZ2l0YWwoWmhlbmppYW5nKUNvLixMdGQKLQkJCQlXZWkgMyBSb2FkLCBEaW5nbWFvLCBFY28uRGV2LlpvbmUsCi0JCQkJSmlhbmdzdQotCQkJCVpoZW5qaWFuZyAgMjEyMDA5Ci0JCQkJQ0hJTkEKLQotMDAtMjctMTggICAoaGV4KQkJU3V6aG91IE5FVyBTRUFVTklPTiBWaWRlbyBUZWNobm9sb2d5IENvLixMdGQKLTAwMjcxOCAgICAgKGJhc2UgMTYpCQlTdXpob3UgTkVXIFNFQVVOSU9OIFZpZGVvIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCTM4MyBKaW5nbWFvIFJvYWQsIEluZHVzdHJ5IFBhcmsKLQkJCQlTdXpob3UgSmlhbmdzdSAyMTUwMjEKLQkJCQlDSElOQQotCi0wMC0yNy0xOSAgIChoZXgpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLTAwMjcxOSAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLQkJCQlCdWlsZGluZyA3LCBTZWNvbmQgUGFydCwgSG9uZ2h1YWxpbmcgSW5kdXN0cmlhbCBab25lLCBYaWxpIHRvd24KLQkJCQlOYW5zaGFuCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTAwLTI3LTFBICAgKGhleCkJCUdlZW5vdm8gVGVjaG5vbG9neSBMdGQuCi0wMDI3MUEgICAgIChiYXNlIDE2KQkJR2Vlbm92byBUZWNobm9sb2d5IEx0ZC4KLQkJCQlVbml0IDQwMiwgNC9GLiwgVG93ZXIgSSxTSFVJIFFJTkcgTVUgSFVBIFlVQU4sCi0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4MAotCQkJCUNISU5BCi0KLTAwLTI3LTFCICAgKGhleCkJCUFsZWMgU2ljaGVyaGVpdHNzeXN0ZW1lIEdtYkgKLTAwMjcxQiAgICAgKGJhc2UgMTYpCQlBbGVjIFNpY2hlcmhlaXRzc3lzdGVtZSBHbWJICi0JCQkJRnJpZWRyaWNoLUhvZWxzY2hlci1TdHJhc3NlIDM2NwotCQkJCURvcnRtdW5kICA0NDMyOAotCQkJCUdFUk1BTlkKLQotMDAtMjctMUMgICAoaGV4KQkJTUVSQ1VSWSBDT1JQT1JBVElPTgotMDAyNzFDICAgICAoYmFzZSAxNikJCU1FUkNVUlkgQ09SUE9SQVRJT04KLQkJCQk1MzEtNiwgR2Fqd2Fkb25nLAotCQkJCVNlb2d1Ci0JCQkJSW5jaGVvbiAgNDA0LTI1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNy0xRCAgIChoZXgpCQlDb21iYSBUZWxlY29tIFN5c3RlbXMgKENoaW5hKSBMdGQuCi0wMDI3MUQgICAgIChiYXNlIDE2KQkJQ29tYmEgVGVsZWNvbSBTeXN0ZW1zIChDaGluYSkgTHRkLgotCQkJCTEwIFNoZW56aG91IFJvYWQKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTAwLTI3LTFFICAgKGhleCkJCVhhZ3lsIENvbW11bmljYXRpb25zCi0wMDI3MUUgICAgIChiYXNlIDE2KQkJWGFneWwgQ29tbXVuaWNhdGlvbnMKLQkJCQkxNjY3IE1hcnJvbmllciBDcnQKLQkJCQlDdW1iZXJsYW5kIE9udGFyaW8gSzRDIDFDMgotCQkJCUNBTkFEQQotCi0wMC0yNy0xRiAgIChoZXgpCQlNSVBSTyBFbGVjdHJvbmljcyBDby4sIEx0ZAotMDAyNzFGICAgICAoYmFzZSAxNikJCU1JUFJPIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJODE0LFBlaWthbmcgUm9hZAotCQkJCUNoaWF5aSAgNjAwOTYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTI3LTIwICAgKGhleCkJCU5FVy1TT0wgQ09NCi0wMDI3MjAgICAgIChiYXNlIDE2KQkJTkVXLVNPTCBDT00KLQkJCQlCdWNoZW9uIFRlY25vcGFyayA0MDMtNjAyCi0JCQkJWWFrZGFlLWRvbmcgV29ubWktZ3UKLQkJCQlCdWNoZW9uIGNpdHkgS3lvdW5na2ktZG8gNDIwLTczNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0yNy0yMSAgIChoZXgpCQlTaGVuemhlbiBCYW9hbiBGZW5kYSBJbmR1c3RyaWFsIENvLiwgTHRkCi0wMDI3MjEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQmFvYW4gRmVuZGEgSW5kdXN0cmlhbCBDby4sIEx0ZAotCQkJCUZlbmRhIEhpLVRlY2ggUGFyawotCQkJCVpob3VzaGkgUm9hZCwgU2hpeWFuCi0JCQkJQmFvYW4gU2hlbnpoZW4gNTE4MTA4Ci0JCQkJQ0hJTkEKLQotMDAtMjctMjIgICAoaGV4KQkJVWJpcXVpdGkgTmV0d29ya3MKLTAwMjcyMiAgICAgKGJhc2UgMTYpCQlVYmlxdWl0aSBOZXR3b3JrcwotCQkJCTkxIEUuIFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMjctRjggICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLTAwMjdGOCAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotCQkJCTE3NDUgVGVjaG5vbG9neSBEcgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0yQS02QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMDJBNkEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMkEtQUYgICAoaGV4KQkJTEFSc3lzLUF1dG9tYXRpb24gR21iSAotMDAyQUFGICAgICAoYmFzZSAxNikJCUxBUnN5cy1BdXRvbWF0aW9uIEdtYkgKLQkJCQlTaW56aW5nZXIgU3RyLiAzCi0JCQkJSG9jaGJ1cmctQWNoICA1MTIyCi0JCQkJQVVTVFJJQQotCi0wMC0yRC03NiAgIChoZXgpCQlUSVRFQ0ggR21iSAotMDAyRDc2ICAgICAoYmFzZSAxNikJCVRJVEVDSCBHbWJICi0JCQkJT3R0by1IYWhuLVN0ci4gNgotCQkJCU11ZWxoZWltLUthZXJsaWNoICA1NjIxOAotCQkJCUdFUk1BTlkKLQotMDAtMzAtMDAgICAoaGV4KQkJQUxMV0VMTCBURUNITk9MT0dZIENPUlAuCi0wMDMwMDAgICAgIChiYXNlIDE2KQkJQUxMV0VMTCBURUNITk9MT0dZIENPUlAuCi0JCQkJNEYsICMxNSwgTEFORTMsIFNFQy4yCi0JCQkJQ0hJRU4gS1dPIE4uIFJPQUQgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTAxICAgKGhleCkJCVNNUAotMDAzMDAxICAgICAoYmFzZSAxNikJCVNNUAotCQkJCTIyLCBSVUUgREVTIENPU01PTkFVVEVTCi0JCQkJMzE0MDAgVE9VTE9VU0UKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtMzAtMDIgICAoaGV4KQkJRXhwYW5kIE5ldHdvcmtzCi0wMDMwMDIgICAgIChiYXNlIDE2KQkJRXhwYW5kIE5ldHdvcmtzCi0JCQkJQXRpZGltIFRlY2ggUGFyaywgQmxkZy4gNAotCQkJCVAuTy4gQm94IDU4MTQyCi0JCQkJVGVsLUF2aXYgNjE1ODAgIAotCQkJCUlTUkFFTAotCi0wMC0zMC0wMyAgIChoZXgpCQlQaGFzeXMgTHRkLgotMDAzMDAzICAgICAoYmFzZSAxNikJCVBoYXN5cyBMdGQuCi0JCQkJIzEwMC05NDA0IDQxc3QgQXZlbnVlCi0JCQkJRWRtb250b24gQWxiZXJ0YSBUNlggMVIyIAotCQkJCUNBTkFEQQotCi0wMC0zMC0wNCAgIChoZXgpCQlMRUFEVEVLIFJFU0VBUkNIIElOQy4KLTAwMzAwNCAgICAgKGJhc2UgMTYpCQlMRUFEVEVLIFJFU0VBUkNIIElOQy4KLQkJCQkxOEYsIE5vLjE2NiwgQ2hpZW4tWWkgUm9hZAotCQkJCUNodW5nLUhvIFRhaXBlaSwKLQkJCQlIc2llbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0wNSAgIChoZXgpCQlGdWppdHN1IFNpZW1lbnMgQ29tcHV0ZXJzCi0wMDMwMDUgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBTaWVtZW5zIENvbXB1dGVycwotCQkJCUJ1ZXJnZXJtZWlzdGVyIHVscmljaCAxMDAKLQkJCQk4NjE5OSBBdWdzYnVyZyAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC0wNiAgIChoZXgpCQlTVVBFUlBPV0VSIENPTVBVVEVSCi0wMDMwMDYgICAgIChiYXNlIDE2KQkJU1VQRVJQT1dFUiBDT01QVVRFUgotCQkJCUVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCU5PLiAyMCBXVS1HT05HIDZUSCBST0FEIFdVLUtVIElORFVTVFInTAotCQkJCVRhaXBlaSAyNDggIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtMDcgICAoaGV4KQkJT1BUSSwgSU5DLgotMDAzMDA3ICAgICAoYmFzZSAxNikJCU9QVEksIElOQy4KLQkJCQkxNDQwIE1DQ0FSVEhZIEJMVkQuCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTA4ICAgKGhleCkJCUFWSU8gRElHSVRBTCwgSU5DLgotMDAzMDA4ICAgICAoYmFzZSAxNikJCUFWSU8gRElHSVRBTCwgSU5DLgotCQkJCTk1NyBJTkRVU1RSSUFMIFJPQUQKLQkJCQlTQU4gQ0FSTE9TIENBIDk0MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0wOSAgIChoZXgpCQlUYWNoaW9uIE5ldHdvcmtzLCBJbmMuCi0wMDMwMDkgICAgIChiYXNlIDE2KQkJVGFjaGlvbiBOZXR3b3JrcywgSW5jLgotCQkJCTIgTWVyaWRpYW4gUm9hZAotCQkJCUVhdG9udG93biBOSiAwNzcyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMEEgICAoaGV4KQkJQVpURUNIIEVsZWN0cm9uaWNzIFB0ZSBMdGQKLTAwMzAwQSAgICAgKGJhc2UgMTYpCQlBWlRFQ0ggRWxlY3Ryb25pY3MgUHRlIEx0ZAotCQkJCTMxIFVCSSBST0FEIDEKLQkJCQlBWlRFQ0ggQlVJTERJTkcKLQkJCQk0MDg2OTQKLQkJCQlTSU5HQVBPUkUKLQotMDAtMzAtMEIgICAoaGV4KQkJbVBIQVNFIFRlY2hub2xvZ2llcywgSW5jLgotMDAzMDBCICAgICAoYmFzZSAxNikJCW1QSEFTRSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyNTAgMTR0aCBTdHJlZXQKLQkJCQlHQ0FUVCBCbGRnLiAtIFJvb20gIzI0OEEKLQkJCQlBdGxhbnRhIEdBIDMwMzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0wQyAgIChoZXgpCQlDT05HUlVFTkNZLCBMVEQuCi0wMDMwMEMgICAgIChiYXNlIDE2KQkJQ09OR1JVRU5DWSwgTFRELgotCQkJCTIzIEhBU0lWSU0gU1RSRUVUCi0JCQkJUE9CIDc4MTMKLQkJCQlQRVRBSC1USUtWQSA0OTE3MCAgCi0JCQkJSVNSQUVMCi0KLTAwLTMwLTBEICAgKGhleCkJCU1NQyBUZWNobm9sb2d5LCBJbmMuCi0wMDMwMEQgICAgIChiYXNlIDE2KQkJTU1DIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkjMTUwMiwgU2VvdWwgVmVudHVyZSBUb3duLCBBanUgQmxkZwotCQkJCTY3OS01LCBZZW9rc2FtLURvbmcsIEthbmduYW0tR3UKLQkJCQlTZW91bCAxMzUtMDgwICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtMEUgICAoaGV4KQkJS2xvdHogRGlnaXRhbCBBRwotMDAzMDBFICAgICAoYmFzZSAxNikJCUtsb3R6IERpZ2l0YWwgQUcKLQkJCQlIYW5zLVN0aWVzc2JlcmdlcnN0ci4gMkEKLQkJCQlELTg1NTQwIEhhYXIgIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtMEYgICAoaGV4KQkJSU1UIC0gSW5mb3JtYXRpb24gTWFuYWdlbWVudCBUCi0wMDMwMEYgICAgIChiYXNlIDE2KQkJSU1UIC0gSW5mb3JtYXRpb24gTWFuYWdlbWVudCBUCi0JCQkJR2V3ZXJiZXN0cmFzc2UgOAotCQkJCUNILTk0NzAgQnVjaHMgIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTMwLTEwICAgKGhleCkJCVZJU0lPTkVUSUNTIElOVEVSTkFUSU9OQUwKLTAwMzAxMCAgICAgKGJhc2UgMTYpCQlWSVNJT05FVElDUyBJTlRFUk5BVElPTkFMCi0JCQkJM0YsIE5PLiAzLCBQUk9TUEVSSVRZIFJPQUQgMQotCQkJCVNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLIEhTSU5DSFUKLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0xMSAgIChoZXgpCQlITVMgSW5kdXN0cmlhbCBOZXR3b3JrcyAgIAotMDAzMDExICAgICAoYmFzZSAxNikJCUhNUyBJbmR1c3RyaWFsIE5ldHdvcmtzICAgCi0JCQkJUCBPIEJveCA0MTI2Ci0JCQkJSEFMTVNUQUQKLQkJCQlTRS0zMDAgMDQKLQkJCQlTV0VERU4KLQotMDAtMzAtMTIgICAoaGV4KQkJRElHSVRBTCBFTkdJTkVFUklORyBMVEQuCi0wMDMwMTIgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFTkdJTkVFUklORyBMVEQuCi0JCQkJMiBUUkVOQ0ggUk9BRCwgTUFMTFVTSwotCQkJCUJFTEZBU1QgQlQzNiA0VFkKLQkJCQlOT1JUSEVSTiBJUkVMQU5ECi0JCQkJSVJFTEFORAotCi0wMC0zMC0xMyAgIChoZXgpCQlORUMgQ29ycG9yYXRpb24KLTAwMzAxMyAgICAgKGJhc2UgMTYpCQlORUMgQ29ycG9yYXRpb24KLQkJCQkxLTEwIE5pc3NoaW5jaG8sIEZ1Y2h1Ci0JCQkJVG9reW8gMTgzLTg1MDEgIAotCQkJCUpBUEFOCi0KLTAwLTMwLTE0ICAgKGhleCkJCURJVklPLCBJTkMuCi0wMDMwMTQgICAgIChiYXNlIDE2KQkJRElWSU8sIElOQy4KLQkJCQk5OTcgRS4gQVJRVUVTIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMTUgICAoaGV4KQkJQ1AgQ0xBUkUgQ09SUC4KLTAwMzAxNSAgICAgKGJhc2UgMTYpCQlDUCBDTEFSRSBDT1JQLgotCQkJCTc4IENIRVJSWSBISUxMIERSSVZFCi0JCQkJQkVWRVJMWSBNQSAwMTkxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMTYgICAoaGV4KQkJSVNISURBIENPLiwgTFRELgotMDAzMDE2ICAgICAoYmFzZSAxNikJCUlTSElEQSBDTy4sIExURC4KLQkJCQk5NTktMSBTSElNT01BR0FSSQotCQkJCVJJVFRPLUNITyBLVVJJVEEtR1VOIFNISUdBICA1MjAtMzAyNgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtMzAtMTcgICAoaGV4KQkJQmx1ZUFyYyBVSyBMdGQKLTAwMzAxNyAgICAgKGJhc2UgMTYpCQlCbHVlQXJjIFVLIEx0ZAotCQkJCVF1ZWVuc2dhdGUgSG91c2UKLQkJCQlDb29raGFtIFJvYWQKLQkJCQlCcmFja25lbGwgIFJHMTIgMVJCCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMzAtMTggICAoaGV4KQkJSmV0d2F5IEluZm9ybWF0aW9uIENvLiwgTHRkLgotMDAzMDE4ICAgICAoYmFzZSAxNikJCUpldHdheSBJbmZvcm1hdGlvbiBDby4sIEx0ZC4KLQkJCQk0RiwgTm8uIDE2OCwgTEkgVEhFIFNULgotCQkJCUNodW5nIEhvIENpdHkgMjM1IFRhaXBlaSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTE5ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMzAxOSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMUEgICAoaGV4KQkJU01BUlRCUklER0VTIFBURS4gTFRELgotMDAzMDFBICAgICAoYmFzZSAxNikJCVNNQVJUQlJJREdFUyBQVEUuIExURC4KLQkJCQk3NDUgVG9hIFBheW9oIExvcm9uZyA1Ci0JCQkJIzA0LTAxCi0JCQkJMzE5NDU1Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTMwLTFCICAgKGhleCkJCVNIVVRUTEUsIElOQy4KLTAwMzAxQiAgICAgKGJhc2UgMTYpCQlTSFVUVExFLCBJTkMuCi0JCQkJNUYsIE5vLiAzNCwgTGFuZSA2MAotCQkJCVdlbi1IdSBTdC4sIE5laS1IdSBEaXN0LiwKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtMUMgICAoaGV4KQkJQUxUVkFURVIgQUlSREFUQSBTWVNURU1TCi0wMDMwMUMgICAgIChiYXNlIDE2KQkJQUxUVkFURVIgQUlSREFUQSBTWVNURU1TCi0JCQkJR01CSCAmIENPLiBLRwotCQkJCVJJRU1FTlNUUkFTU0UgMzAgNzQ5MDYgQkFEIFJBUFBFTkFVCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMzAtMUQgICAoaGV4KQkJU0tZU1RSRUFNLCBJTkMuCi0wMDMwMUQgICAgIChiYXNlIDE2KQkJU0tZU1RSRUFNLCBJTkMuCi0JCQkJNDU1IERlR3VpZ25lIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg2LTM4MzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTFFICAgKGhleCkJCTNDT00gRXVyb3BlIEx0ZC4KLTAwMzAxRSAgICAgKGJhc2UgMTYpCQkzQ09NIEV1cm9wZSBMdGQuCi0JCQkJM0NPTSBDZW50cmUKLQkJCQlCb3VuZGFyeSBXYXksIEhlbWVsIEhlbXBzdGVhZAotCQkJCUhlcnRzLiAgSFAyIDdZVSAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMzAtMUYgICAoaGV4KQkJT1BUSUNBTCBORVRXT1JLUywgSU5DLgotMDAzMDFGICAgICAoYmFzZSAxNikJCU9QVElDQUwgTkVUV09SS1MsIElOQy4KLQkJCQkxNjYgQkFZUE9JTlRFIFBBUktXQVkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMjAgICAoaGV4KQkJVFNJLCBJbmMuLgotMDAzMDIwICAgICAoYmFzZSAxNikJCVRTSSwgSW5jLi4KLQkJCQk1MDAgQ2FyZGlnYW4gUm9hZAotCQkJCVNob3JldmlldyBNTiA1NTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMjEgICAoaGV4KQkJSFNJTkcgVEVDSC4gRU5URVJQUklTRSBDTy4sTFRECi0wMDMwMjEgICAgIChiYXNlIDE2KQkJSFNJTkcgVEVDSC4gRU5URVJQUklTRSBDTy4sTFRECi0JCQkJMkYsIE5PLiAyMiwgQUxMTEVZIDM4LCBMQU5FIDkxCi0JCQkJU0VDLiAxLCBORUkgSFUgUk9BRAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0yMiAgIChoZXgpCQlGb25nIEthaSBJbmR1c3RyaWFsIENvLiwgTHRkLgotMDAzMDIyICAgICAoYmFzZSAxNikJCUZvbmcgS2FpIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJNEYtMywgTm8uIDEzLCBXdSBDaHVhbiAxc3QgUm9hZAotCQkJCUhzaW4gQ2h1YW5nIENpdHksIFRhaXBlaSBIc2llbiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC0yMyAgIChoZXgpCQlDT0dFTlQgQ09NUFVURVIgU1lTVEVNUywgSU5DLgotMDAzMDIzICAgICAoYmFzZSAxNikJCUNPR0VOVCBDT01QVVRFUiBTWVNURU1TLCBJTkMuCi0JCQkJMTAgUklWRVIgUk9BRCAtIFNURS4gIzIwNQotCQkJCVVYQlJJREdFIE1BIDAxNTY5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0yNCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDMwMjQgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRSAtU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMjUgICAoaGV4KQkJQ0hFQ0tPVVQgQ09NUFVURVIgU1lTVEVNUywgTFRECi0wMDMwMjUgICAgIChiYXNlIDE2KQkJQ0hFQ0tPVVQgQ09NUFVURVIgU1lTVEVNUywgTFRECi0JCQkJVE9XTlNFTkQgRkFSTSBST0FECi0JCQkJSE9VR0hUT04gUkVHSVMsIERVTlNUQUJMRSBCRURGT1JEU0hJUkUKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTMwLTI2ICAgKGhleCkJCUhlaVRlbCBEaWdpdGFsIFZpZGVvIEdtYkgKLTAwMzAyNiAgICAgKGJhc2UgMTYpCQlIZWlUZWwgRGlnaXRhbCBWaWRlbyBHbWJICi0JCQkJU3R1dGhhZ2VuIDI1Ci0JCQkJMjQxMTMgTW9sZnNlZQotCQkJCUdFUk1BTlkKLQotMDAtMzAtMjcgICAoaGV4KQkJS0VSQkFOR08sIElOQy4KLTAwMzAyNyAgICAgKGJhc2UgMTYpCQlLRVJCQU5HTywgSU5DLgotCQkJCTIxNzcxIFNURVZFTlMgQ1JFRUsgQkxWRC4gIzEwMAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMjggICAoaGV4KQkJRkFTRSBTYWxkYXR1cmEgc3JsCi0wMDMwMjggICAgIChiYXNlIDE2KQkJRkFTRSBTYWxkYXR1cmEgc3JsCi0JCQkJVi5SLiBCZXJuYXJkaSA1Ci0JCQkJMTAwNDIgU3R1cGluaXFpLU5pY2hlbGlubwotCQkJCVRPUklOTyAgCi0JCQkJSVRBTFkKLQotMDAtMzAtMjkgICAoaGV4KQkJT1BJQ09NCi0wMDMwMjkgICAgIChiYXNlIDE2KQkJT1BJQ09NCi0JCQkJUk9PTSAjMzAyLCBTVFlMRSBGQUNUT1JZIDE1MQotCQkJCVlBVEFCLURPTkcsIEJVTkRBTkctR1UgU1VOR05BTS1TSSwgS1lVTkcKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC0yQSAgIChoZXgpCQlTT1VUSEVSTiBJTkZPUk1BVElPTgotMDAzMDJBICAgICAoYmFzZSAxNikJCVNPVVRIRVJOIElORk9STUFUSU9OCi0JCQkJU1lTVEVNLCBJTkMuCi0JCQkJTk8uOCwgUiZEIFJELiBJViBTQ0lFTkNFLUJBU0VEIElORFVTVFJJQQotCQkJCUhTSU5DSFUgVEFJV0FOLCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTJCICAgKGhleCkJCUlOQUxQIE5FVFdPUktTLCBJTkMuCi0wMDMwMkIgICAgIChiYXNlIDE2KQkJSU5BTFAgTkVUV09SS1MsIElOQy4KLQkJCQlNRVJJRURXRUcgNwotCQkJCUNILTMxNzIgTklFREVSV0FOR0VOCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0zMC0yQyAgIChoZXgpCQlTWUxBTlRSTyBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDMwMkMgICAgIChiYXNlIDE2KQkJU1lMQU5UUk8gU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTE2ODYgREVMTCBBVkVOVUUKLQkJCQlDQU1QQkVMTCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMkQgICAoaGV4KQkJUVVBTlRVTSBCUklER0UgQ09NTVVOSUNBVElPTlMKLTAwMzAyRCAgICAgKGJhc2UgMTYpCQlRVUFOVFVNIEJSSURHRSBDT01NVU5JQ0FUSU9OUwotCQkJCU9ORSBISUdIIFNUUkVFVAotCQkJCU5PUlRIIEFORE9WRVIgTUEgMDE4NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTJFICAgKGhleCkJCUhvZnQgJiBXZXNzZWwgQUcKLTAwMzAyRSAgICAgKGJhc2UgMTYpCQlIb2Z0ICYgV2Vzc2VsIEFHCi0JCQkJUm90ZW5idXJnZXIgU3RyYXNzZSAyMAotCQkJCTMwNjU5IEhhbm5vdmVyICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTJGICAgKGhleCkJCUdFIEF2aWF0aW9uIFN5c3RlbQotMDAzMDJGICAgICAoYmFzZSAxNikJCUdFIEF2aWF0aW9uIFN5c3RlbQotCQkJCTMyOTAgUGF0dGVyc29uIEF2ZS4sIFMuRS4KLQkJCQlHcmFuZCBSYXBpZHMgTUkgNDk1MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTMwICAgKGhleCkJCUhBUk1PTklYIENPUlBPUkFUSU9OCi0wMDMwMzAgICAgIChiYXNlIDE2KQkJSEFSTU9OSVggQ09SUE9SQVRJT04KLQkJCQkxNzU1IE9TR09PRCBTVFJFRVQKLQkJCQlOT1JUSCBBTkRPVkVSIE1BIDAxODQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0zMSAgIChoZXgpCQlMSUdIVFdBVkUgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMzAzMSAgICAgKGJhc2UgMTYpCQlMSUdIVFdBVkUgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkyNjEgUEVQRSdTIEZBUk0gUk9BRAotCQkJCU1JTEZPUkQgQ1QgMDY0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTMyICAgKGhleCkJCU1hZ2ljUmFtLCBJbmMuCi0wMDMwMzIgICAgIChiYXNlIDE2KQkJTWFnaWNSYW0sIEluYy4KLQkJCQkxODUwIEJldmVybHkgQmx2ZC4KLQkJCQlMb3MgQW5nZWxlcyBDQSA5MDA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMzMgICAoaGV4KQkJT1JJRU5UIFRFTEVDT00gQ08uLCBMVEQuCi0wMDMwMzMgICAgIChiYXNlIDE2KQkJT1JJRU5UIFRFTEVDT00gQ08uLCBMVEQuCi0JCQkJTUlTVU5HIEJVTERJTkcgMTE1LTcKLQkJCQlOT05IWVVOLURPTkcsIEtBTkdNQU4tS1UgU0VPVUwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC0zNCAgIChoZXgpCQlTRVQgRU5HSU5FRVJJTkcKLTAwMzAzNCAgICAgKGJhc2UgMTYpCQlTRVQgRU5HSU5FRVJJTkcKLQkJCQkxNTc1MCBWSU5FWUFSRCBCTFZELiBTVEUuICMxMDAKLQkJCQlNT1JHQU4gSElMTCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtMzUgICAoaGV4KQkJQ29ybmluZyBJbmNvcnBvcmF0ZWQKLTAwMzAzNSAgICAgKGJhc2UgMTYpCQlDb3JuaW5nIEluY29ycG9yYXRlZAotCQkJCURhdGEgQ2VudGVyCi0JCQkJTS9TIC0gU1AtV1ctMDEKLQkJCQlDb3JuaW5nIE5ZIDE0ODMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0zNiAgIChoZXgpCQlSTVAgRUxFS1RST05JS1NZU1RFTUUgR01CSAotMDAzMDM2ICAgICAoYmFzZSAxNikJCVJNUCBFTEVLVFJPTklLU1lTVEVNRSBHTUJICi0JCQkJSEFOTlMtTUFSVElOLVNDSExFJ1ItU1RSLjEyLTE0Ci0JCQkJRC00Nzg3NyBXSUxMSUNILU1VTkNISEVJREUKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0zMC0zNyAgIChoZXgpCQlQYWNrYXJkIEJlbGwgTmVjIFNlcnZpY2VzCi0wMDMwMzcgICAgIChiYXNlIDE2KQkJUGFja2FyZCBCZWxsIE5lYyBTZXJ2aWNlcwotCQkJCTI5OSBhdmVudWUgUGF0dG9uLCBCUCA2NDUKLQkJCQk0OTAwNiBBbmdlcnMgQ2VkZXggMDEgIAotCQkJCUZSQU5DRQotCi0wMC0zMC0zOCAgIChoZXgpCQlYQ1AsIElOQy4KLTAwMzAzOCAgICAgKGJhc2UgMTYpCQlYQ1AsIElOQy4KLQkJCQk0MCBFTE0gU1RSRUVUCi0JCQkJRFJZREVOIE5ZIDEzMDUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC0zOSAgIChoZXgpCQlTT0ZUQk9PSyBQUkVTUwotMDAzMDM5ICAgICAoYmFzZSAxNikJCVNPRlRCT09LIFBSRVNTCi0JCQkJNzc0NSBIRVJTQ0hFTCBBVkVOVUUKLQkJCQlMQSBKT0xMQSBDQSA5MjAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtM0EgICAoaGV4KQkJTUFBVEVMCi0wMDMwM0EgICAgIChiYXNlIDE2KQkJTUFBVEVMCi0JCQkJNDk1IFJVRSBERSBQT01NQVJJTgotCQkJCTM4MzYwIFZPUkVQUEUgIAotCQkJCUZSQU5DRQotCi0wMC0zMC0zQiAgIChoZXgpCQlQb3dlckNvbSBUZWNobm9sb2d5Ci0wMDMwM0IgICAgIChiYXNlIDE2KQkJUG93ZXJDb20gVGVjaG5vbG9neQotCQkJCTJGLCBOby4gMzQsIEluZHVzdHJ5IEUuIFJvYWQgSVYKLQkJCQlIc2luY2h1IFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSAzMDAgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtM0MgICAoaGV4KQkJT05OVE8gQ09SUC4KLTAwMzAzQyAgICAgKGJhc2UgMTYpCQlPTk5UTyBDT1JQLgotCQkJCTEyRi0yLCAgTk8uIDE2MQotCQkJCVNVTkcgVEVIIFJELiwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTNEICAgKGhleCkJCUlWQSBDT1JQT1JBVElPTgotMDAzMDNEICAgICAoYmFzZSAxNikJCUlWQSBDT1JQT1JBVElPTgotCQkJCTI5IEhVRFNPTiBST0FECi0JCQkJU1VEQlVSWSBNQSAwMTc3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtM0UgICAoaGV4KQkJUmFkY29tIEx0ZC4KLTAwMzAzRSAgICAgKGJhc2UgMTYpCQlSYWRjb20gTHRkLgotCQkJCTEyIEhhbmVjaG9zaGV0IFN0cmVldAotCQkJCVRlbC1Bdml2IDY5NzEwICAKLQkJCQlJU1JBRUwKLQotMDAtMzAtM0YgICAoaGV4KQkJVHVyYm9Db21tIFRlY2ggSW5jLgotMDAzMDNGICAgICAoYmFzZSAxNikJCVR1cmJvQ29tbSBUZWNoIEluYy4KLQkJCQk0Ri0yLCBObyAxNzEsIFN1bmctVGNoIFJvYWQKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtNDAgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAzMDQwICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUgLVNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTQxICAgKGhleCkJCVNBRUpJTiBUICYgTSBDTy4sIExURC4KLTAwMzA0MSAgICAgKGJhc2UgMTYpCQlTQUVKSU4gVCAmIE0gQ08uLCBMVEQuCi0JCQkJMk5EIEZMLiwgU0FFSklOIEJMREcuIDY4OQotCQkJCUlMV09OLURPTkcsIEtBTkdOQU0tR1UsIFNFT1VMCi0JCQkJMTM1LTIzMCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC00MiAgIChoZXgpCQlEZVRlV2UtRGV1dHNjaGUgVGVsZXBob253ZXJrZQotMDAzMDQyICAgICAoYmFzZSAxNikJCURlVGVXZS1EZXV0c2NoZSBUZWxlcGhvbndlcmtlCi0JCQkJWmV1Z2hvZnN0cmFzc2UgMQotCQkJCUQtMTA5OTcgQmVybGluICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTQzICAgKGhleCkJCUlEUkVBTSBURUNITk9MT0dJRVMsIFBURS4gTFRELgotMDAzMDQzICAgICAoYmFzZSAxNikJCUlEUkVBTSBURUNITk9MT0dJRVMsIFBURS4gTFRELgotCQkJCTU0IEtBTExBTkcgQkFIUlUsICMwMi0xNAotCQkJCVNJTkdBUE9SRSAzMzkzMzYKLQkJCQlTSU5HQVBPUkUKLQkJCQlTSU5HQVBPUkUKLQotMDAtMzAtNDQgICAoaGV4KQkJQ3JhZGxlUG9pbnQsIEluYwotMDAzMDQ0ICAgICAoYmFzZSAxNikJCUNyYWRsZVBvaW50LCBJbmMKLQkJCQk4MDUgVy4gRnJhbmtsaW4gU3QuCi0JCQkJQm9pc2UgSUQgODM3MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTQ1ICAgKGhleCkJCVZpbGxhZ2UgTmV0d29ya3MsIEluYy4gKFZOSSkKLTAwMzA0NSAgICAgKGJhc2UgMTYpCQlWaWxsYWdlIE5ldHdvcmtzLCBJbmMuIChWTkkpCi0JCQkJMTAwIFZpbGxhZ2UgQ291cnQgLSBTdGUuICMzMDEKLQkJCQlIYXpsZXQgTkogMDc3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTQ2ICAgKGhleCkJCUNvbnRyb2xsZWQgRWxlY3Ryb25pYyBNYW5hZ2VtZQotMDAzMDQ2ICAgICAoYmFzZSAxNikJCUNvbnRyb2xsZWQgRWxlY3Ryb25pYyBNYW5hZ2VtZQotCQkJCVVuaXQgNCBSYXZlbmhpbGwgQnVzaW5lc3MgUGFyawotCQkJCVJhdmVuaGlsbCBSb2FkCi0JCQkJQmVsZmFzdCAgCi0JCQkJSVJFTEFORAotCi0wMC0zMC00NyAgIChoZXgpCQlOSVNTRUkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDMwNDcgICAgIChiYXNlIDE2KQkJTklTU0VJIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTMyIE1JWUFXQUtFLCBTSElNT05PSVNISUtJLUNITwotCQkJCU5BS0FHQVdBLUtVLCBOQUdPWUEgNDU0LTA5NDUKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTMwLTQ4ICAgKGhleCkJCVN1cGVybWljcm8gQ29tcHV0ZXIsIEluYy4KLTAwMzA0OCAgICAgKGJhc2UgMTYpCQlTdXBlcm1pY3JvIENvbXB1dGVyLCBJbmMuCi0JCQkJMjA1MSBKdW5jdGlvbiBBdmVudWUKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNDkgICAoaGV4KQkJQlJZQU5UIFRFQ0hOT0xPR1ksIExURC4KLTAwMzA0OSAgICAgKGJhc2UgMTYpCQlCUllBTlQgVEVDSE5PTE9HWSwgTFRELgotCQkJCVAuTy4gQk9YIDY5NTU3Ci0JCQkJQlJZQU5TVE9OLCAyMDIxCi0JCQkJU09VVEggQUZSSUNBCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTMwLTRBICAgKGhleCkJCUZyYXVuaG9mZXIgSVBNUwotMDAzMDRBICAgICAoYmFzZSAxNikJCUZyYXVuaG9mZXIgSVBNUwotCQkJCU1hcmlhLVJlaWNoZS1TdHJhc3NlIDIKLQkJCQkwMTEwOQotCQkJCUdFUk1BTlkKLQotMDAtMzAtNEIgICAoaGV4KQkJT1JCQUNPTSBTWVNURU1TLCBJTkMuCi0wMDMwNEIgICAgIChiYXNlIDE2KQkJT1JCQUNPTSBTWVNURU1TLCBJTkMuCi0JCQkJMTcwNCBUQVlMT1JTIExBTkUKLQkJCQlDSU5OQU1JTlNPTiBOSiAwODA3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNEMgICAoaGV4KQkJQVBQSUFOIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDMwNEMgICAgIChiYXNlIDE2KQkJQVBQSUFOIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJODAgQ0VOVFJBTCBTVFJFRVQKLQkJCQlCT1hCT1JPVUdIIE1BIDAxNzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC00RCAgIChoZXgpCQlFU0kKLTAwMzA0RCAgICAgKGJhc2UgMTYpCQlFU0kKLQkJCQkyNjAxIFN1bW1pdCBBdmVudWUKLQkJCQlQbGFubyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNEUgICAoaGV4KQkJQlVTVEVDIFBST0RVQ1RJT04gTFRELgotMDAzMDRFICAgICAoYmFzZSAxNikJCUJVU1RFQyBQUk9EVUNUSU9OIExURC4KLQkJCQlXT1JMRCBBVklBVElPTiBQQVJLCi0JCQkJU2hhbm5vbiBDb3VudHkgQ2xhcmUgCi0JCQkJSVJFTEFORAotCi0wMC0zMC00RiAgIChoZXgpCQlQTEFORVQgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMDAzMDRGICAgICAoYmFzZSAxNikJCVBMQU5FVCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMTFGLCBOby4gOTYsIE1pbi1DaHVhbiBSb2FkCi0JCQkJSHNpbi1UaWVuIFRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC01MCAgIChoZXgpCQlWZXJzYSBUZWNobm9sb2d5Ci0wMDMwNTAgICAgIChiYXNlIDE2KQkJVmVyc2EgVGVjaG5vbG9neQotCQkJCTQ0MzAgRS4gTWlyYWxvbWEgQXZlLiwgLSBTdGUuCi0JCQkJQW5haGVpbSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNTEgICAoaGV4KQkJT1JCSVQgQVZJT05JQyAmIENPTU1VTklDQVRJT04KLTAwMzA1MSAgICAgKGJhc2UgMTYpCQlPUkJJVCBBVklPTklDICYgQ09NTVVOSUNBVElPTgotCQkJCVNZU1RFTVMsIExURC4KLQkJCQlQLk8uIEJPWCAzMTcxIElORFVTVFJJQUwgWk9ORSwgTkVUQU5ZQSA0Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTMwLTUyICAgKGhleCkJCUVMQVNUSUMgTkVUV09SS1MKLTAwMzA1MiAgICAgKGJhc2UgMTYpCQlFTEFTVElDIE5FVFdPUktTCi0JCQkJNjEyMCBXSU5EV0FSRCBQQVJLV0FZIC1TVEUjMTAwCi0JCQkJQUxQSEFSRVRUQSBHQSAzMDAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNTMgICAoaGV4KQkJQmFzbGVyIEFHCi0wMDMwNTMgICAgIChiYXNlIDE2KQkJQmFzbGVyIEFHCi0JCQkJQW4gRGVyIFN0cnVzYmVrIDYwLTYyCi0JCQkJMjI5MjYgQWhyZW5zYnVyZyAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC01NCAgIChoZXgpCQlDQVNUTEVORVQgVEVDSE5PTE9HWSwgSU5DLgotMDAzMDU0ICAgICAoYmFzZSAxNikJCUNBU1RMRU5FVCBURUNITk9MT0dZLCBJTkMuCi0JCQkJTk8uIDEzMCBXVS1LVU5HIFJELiwKLQkJCQlXVS1LVSBIU0lBTkcgVEFJUEVJIEhTSUVOCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLTU1ICAgKGhleCkJCVJlbmVzYXMgVGVjaG5vbG9neSBBbWVyaWNhLCBJbmMuCi0wMDMwNTUgICAgIChiYXNlIDE2KQkJUmVuZXNhcyBUZWNobm9sb2d5IEFtZXJpY2EsIEluYy4KLQkJCQk0NTAgSG9sZ2VyIFdheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC01NiAgIChoZXgpCQlCZWNrIElQQyBHbWJICi0wMDMwNTYgICAgIChiYXNlIDE2KQkJQmVjayBJUEMgR21iSAotCQkJCUdyw7xuaW5nZXIgV2VnIDI0Ci0JCQkJRC0zNTQxNSBQb2hsaGVpbSAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTU3ICAgKGhleCkJCVFUZWxOZXQsIEluYy4KLTAwMzA1NyAgICAgKGJhc2UgMTYpCQlRVGVsTmV0LCBJbmMuCi0JCQkJNDAwIC0gMzExNSAxMnRoIFN0cmVldCBORQotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMkUgN0oyCi0JCQkJQ0FOQURBCi0KLTAwLTMwLTU4ICAgKGhleCkJCUFQSSBNT1RJT04KLTAwMzA1OCAgICAgKGJhc2UgMTYpCQlBUEkgTU9USU9OCi0JCQkJNDUgSEFaRUxXT09EIERSSVZFCi0JCQkJQU1IRVJTVCBOWSAxNDIyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNTkgICAoaGV4KQkJS09OVFJPTiBDT01QQUNUIENPTVBVVEVSUyBBRwotMDAzMDU5ICAgICAoYmFzZSAxNikJCUtPTlRST04gQ09NUEFDVCBDT01QVVRFUlMgQUcKLQkJCQlOb3Jkc3RyYXNzZSAxMS9GCi0JCQkJIExVVEVSQkFDSCAgNDU0MgotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTMwLTVBICAgKGhleCkJCVRFTEdFTiBDT1JQT1JBVElPTgotMDAzMDVBICAgICAoYmFzZSAxNikJCVRFTEdFTiBDT1JQT1JBVElPTgotCQkJCTMxMDEgU09WRVJFSUdOIERSLiAtIFNURS4KLQkJCQlMQU5TSU5HIE1JIDQ4OTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC01QiAgIChoZXgpCQlUb2tvIEluYy4KLTAwMzA1QiAgICAgKGJhc2UgMTYpCQlUb2tvIEluYy4KLQkJCQkxOCBDT01JR0FZQSwgVFNVUlVHQVNISU1BLVNISQotCQkJCVNBSVRBTUEtS0VOCi0JCQkJSkFQQU4gMzUwLTIyODEKLQkJCQlKQVBBTgotCi0wMC0zMC01QyAgIChoZXgpCQlTTUFSIExhYm9yYXRvcmllcyBDb3JwLgotMDAzMDVDICAgICAoYmFzZSAxNikJCVNNQVIgTGFib3JhdG9yaWVzIENvcnAuCi0JCQkJMTA5NjAgTWlsbHJpZGdlIE5vcnRoIC0gU3RlLiAjMTA3Ci0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNUQgICAoaGV4KQkJRElHSVRSQSBTWVNURU1TLCBJTkMuCi0wMDMwNUQgICAgIChiYXNlIDE2KQkJRElHSVRSQSBTWVNURU1TLCBJTkMuCi0JCQkJOC02MSwgR0FXT0wtRE9ORwotCQkJCVlPTkdTQU4tS1UgU0VPVUwKLQkJCQlLT1JFQSAxNDAtMTUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTMwLTVFICAgKGhleCkJCUFiZWxrbyBJbm5vdmF0aW9uCi0wMDMwNUUgICAgIChiYXNlIDE2KQkJQWJlbGtvIElubm92YXRpb24KLQkJCQlCb3ggODA4Ci0JCQkJUy05NzEyNSBMdWxlYSAgCi0JCQkJU1dFREVOCi0KLTAwLTMwLTVGICAgKGhleCkJCUhhc3NlbGJsYWQKLTAwMzA1RiAgICAgKGJhc2UgMTYpCQlIYXNzZWxibGFkCi0JCQkJSGVqcmV2ZWogMzAKLQkJCQlDb3BlbmhhZ2VuIE5WIERLLTI0MDAKLQkJCQlERU5NQVJLCi0KLTAwLTMwLTYwICAgKGhleCkJCVBvd2VyZmlsZSwgSW5jLgotMDAzMDYwICAgICAoYmFzZSAxNikJCVBvd2VyZmlsZSwgSW5jLgotCQkJCTMzNTAgVGhvbWFzIFJvYWQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NC0yMDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC02MSAgIChoZXgpCQlNb2J5VEVMCi0wMDMwNjEgICAgIChiYXNlIDE2KQkJTW9ieVRFTAotCQkJCTQzMDEgQ29ubmVjdGljdXQgQXZlLiBOVwotCQkJCVN0ZS4gIzQ1NAotCQkJCVdhc2hpbmd0b24gREMgMjAwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTYyICAgKGhleCkJCVBBVEggMSBORVRXT1JLIFRFQ0hOT0wnUyBJTkMuCi0wMDMwNjIgICAgIChiYXNlIDE2KQkJUEFUSCAxIE5FVFdPUksgVEVDSE5PTCdTIElOQy4KLQkJCQkzNjM2IE5PQkVMIERSSVZFIC0gU1RFLiAjMjc1Ci0JCQkJU0FOIERJRUdPIENBIDkyMTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC02MyAgIChoZXgpCQlTQU5URVJBIFNZU1RFTVMsIElOQy4KLTAwMzA2MyAgICAgKGJhc2UgMTYpCQlTQU5URVJBIFNZU1RFTVMsIElOQy4KLQkJCQkyOTAxIFNVTU1JVCBBVkVOVUUgLSBTVEUuICMxMDAKLQkJCQlQTEFOTyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNjQgICAoaGV4KQkJQURMSU5LIFRFQ0hOT0xPR1ksIElOQy4KLTAwMzA2NCAgICAgKGJhc2UgMTYpCQlBRExJTksgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTlGLCBOTy4gMTY2LCBKSUVOLVlJIFIuRC4KLQkJCQlDSFVORy1ITyBDSVRZIFRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC02NSAgIChoZXgpCQlBUFBMRSBDT01QVVRFUiwgSU5DLgotMDAzMDY1ICAgICAoYmFzZSAxNikJCUFQUExFIENPTVBVVEVSLCBJTkMuCi0JCQkJMjA2NTAgVkFMTEVZIEdSRUVOIERSSVZFCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC02NiAgIChoZXgpCQlSRk0KLTAwMzA2NiAgICAgKGJhc2UgMTYpCQlSRk0KLQkJCQkzMDc5IFByZW1pZXJlIFBrd3kKLQkJCQlTdWl0ZSAxNDAKLQkJCQlEdWx1dGggR0EgMzAwOTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTY3ICAgKGhleCkJCUJJT1NUQVIgTUlDUk9URUNIIElOVCdMIENPUlAuCi0wMDMwNjcgICAgIChiYXNlIDE2KQkJQklPU1RBUiBNSUNST1RFQ0ggSU5UJ0wgQ09SUC4KLQkJCQkyRkwuIE5PLiAxMDgtMiBNSU4gQ0hVQU4gUk9BRAotCQkJCUhTSU4gVElFTiBDSVRZLCBUQUlQRUkgSFNJRU4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtNjggICAoaGV4KQkJQ1lCRVJORVRJQ1MgVEVDSC4gQ08uLCBMVEQuCi0wMDMwNjggICAgIChiYXNlIDE2KQkJQ1lCRVJORVRJQ1MgVEVDSC4gQ08uLCBMVEQuCi0JCQkJREFJVE9IIEJMREcuIDRGIDMtMzItMQotCQkJCVRBS0FEQSwgVE9TSElNQS1LVSwgVE9LWU8KLQkJCQlKQVBBTiAxNzEtMDAzMwotCQkJCUpBUEFOCi0KLTAwLTMwLTY5ICAgKGhleCkJCUlNUEFDQ1QgVEVDSE5PTE9HWSBDT1JQLgotMDAzMDY5ICAgICAoYmFzZSAxNikJCUlNUEFDQ1QgVEVDSE5PTE9HWSBDT1JQLgotCQkJCTJGLCBOTy4gMTIsIFImRCBSRC4gSUkKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSyBIU0lOLUNIVQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC02QSAgIChoZXgpCQlQRU5UQSBNRURJQSBDTy4sIExURC4KLTAwMzA2QSAgICAgKGJhc2UgMTYpCQlQRU5UQSBNRURJQSBDTy4sIExURC4KLQkJCQlFLTUwNCBCdW5kYW5nIFRlY2hub3BhcmssMTUxCi0JCQkJWWF0b3AtZG9uZyBCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0gR3llb25nZ2ktZG8gCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTMwLTZCICAgKGhleCkJCUNNT1MgU1lTVEVNUywgSU5DLgotMDAzMDZCICAgICAoYmFzZSAxNikJCUNNT1MgU1lTVEVNUywgSU5DLgotCQkJCTIzNDQwIEhBV1RIT1JORSBCTFZELVNURSAjMjkwCi0JCQkJVE9SUkFOQ0UgQ0EgOTA1MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTZDICAgKGhleCkJCUhpdGV4IEhvbGRpbmcgR21iSAotMDAzMDZDICAgICAoYmFzZSAxNikJCUhpdGV4IEhvbGRpbmcgR21iSAotCQkJCUdyZXNjaGJhY2hzdHIuIDEyCi0JCQkJNzYyMjkgS2FybHNydWhlICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTZEICAgKGhleCkJCUxVQ0VOVCBURUNITk9MT0dJRVMKLTAwMzA2RCAgICAgKGJhc2UgMTYpCQlMVUNFTlQgVEVDSE5PTE9HSUVTCi0JCQkJMzAwIEJBS0VSIEFWRU5VRSAtIFNURS4gIzEwMAotCQkJCUNPTkNPUkQgTUEgMDE3NDItMjE2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNkUgICAoaGV4KQkJSEVXTEVUVCBQQUNLQVJECi0wMDMwNkUgICAgIChiYXNlIDE2KQkJSEVXTEVUVCBQQUNLQVJECi0JCQkJMTEwMDAgV09MRkUgUk9BRAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNkYgICAoaGV4KQkJU0VZRU9OIFRFQ0guIENPLiwgTFRELgotMDAzMDZGICAgICAoYmFzZSAxNikJCVNFWUVPTiBURUNILiBDTy4sIExURC4KLQkJCQlOQU1DSEVPTiBCTERHLiA2RiwKLQkJCQlEQUVDSEktRE9ORywgOTU3LTAxMyBLQU5HTkFNLUdVLCBTRU9VTAotCQkJCUtPUkVBIDEzNS0yODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtNzAgICAoaGV4KQkJMU5ldCBDb3Jwb3JhdGlvbgotMDAzMDcwICAgICAoYmFzZSAxNikJCTFOZXQgQ29ycG9yYXRpb24KLQkJCQkzNDcgRWxpemFiZXRoIEF2ZW51ZSAtIFN0ZS4gIzEwMAotCQkJCVNvbWVyc2V0IE5KIDA4ODczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC03MSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDMwNzEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2IC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNzIgICAoaGV4KQkJSW50ZWxsaWJ5dGUgSW5jLgotMDAzMDcyICAgICAoYmFzZSAxNikJCUludGVsbGlieXRlIEluYy4KLQkJCQlDYW5hZGEgVHJ1c3QgVG93ZXIgLSBCQ0UgUGxhY2UKLQkJCQkxNjEgQmF5IFN0LiAyN3RoIEZsb29yLAotCQkJCVRvcm9udG8gT250YXJpbyBNNUogMlMxCi0JCQkJQ0FOQURBCi0KLTAwLTMwLTczICAgKGhleCkJCUludGVybmF0aW9uYWwgTWljcm9zeXN0ZW1zLCBJbgotMDAzMDczICAgICAoYmFzZSAxNikJCUludGVybmF0aW9uYWwgTWljcm9zeXN0ZW1zLCBJbgotCQkJCTUyMSBWYWxsZXkgV2F5Ci0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTc0ICAgKGhleCkJCUVRVUlJTkVUIExURC4KLTAwMzA3NCAgICAgKGJhc2UgMTYpCQlFUVVJSU5FVCBMVEQuCi0JCQkJRURJU09OIEhPVVNFCi0JCQkJRURJU09OIFJPQUQKLQkJCQkgU1dJTkRPTiwgU04zIDVKQSAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtMzAtNzUgICAoaGV4KQkJQURURUNICi0wMDMwNzUgICAgIChiYXNlIDE2KQkJQURURUNICi0JCQkJUlVFIERVIFZBTCBTVCBMQU1CRVJUIDE5MSAvIGkKLQkJCQkgU0VSQUlORyAgNDEwMAotCQkJCUJFTEdJVU0KLQotMDAtMzAtNzYgICAoaGV4KQkJQWthbWJhIENvcnBvcmF0aW9uCi0wMDMwNzYgICAgIChiYXNlIDE2KQkJQWthbWJhIENvcnBvcmF0aW9uCi0JCQkJMTU1OTUgTG9zIEdhdG9zIEJsdmQuCi0JCQkJTG9zIEdhdG9zIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC03NyAgIChoZXgpCQlPTlBSRU0gTkVUV09SS1MKLTAwMzA3NyAgICAgKGJhc2UgMTYpCQlPTlBSRU0gTkVUV09SS1MKLQkJCQk0MjUwMSBBTEJSQUUgU1RSRUVUCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtNzggICAoaGV4KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotMDAzMDc4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMsIEluYy4KLQkJCQkxNzAgV2VzdCBUYXNtYW4gRHJpdmUgLSBTSkEtMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC03OSAgIChoZXgpCQlDUU9TLCBJTkMuCi0wMDMwNzkgICAgIChiYXNlIDE2KQkJQ1FPUywgSU5DLgotCQkJCTI1IE1BVUNITFkgIC0gU1RFLiAjMzI5Ci0JCQkJSVJWSU5FIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC03QSAgIChoZXgpCQlBZHZhbmNlZCBUZWNobm9sb2d5ICYgU3lzdGVtcwotMDAzMDdBICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFRlY2hub2xvZ3kgJiBTeXN0ZW1zCi0JCQkJWW9rb2hhbWEgQnVzaW5lc3MgUGFyayBFYXN0IFRvd2VyIDlGLAotCQkJCTEzNCBHb3Vkby1jaG8sIEhvZG9nYXlhLWt1LCBZb2tvaGFtYSwgS2EKLQkJCQkyNDAtMDAwNQotCQkJCUpBUEFOCi0KLTAwLTMwLTdCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwMzA3QiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyaXZlIC0gU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtN0MgICAoaGV4KQkJQURJRCBTQQotMDAzMDdDICAgICAoYmFzZSAxNikJCUFESUQgU0EKLQkJCQk3MCBSVSBBTkFUT0xFIEZSQU5DRQotCQkJCTkyIDMwMCBMRVZBTExPSVMtUEVSUkVUIENFREVYICAKLQkJCQlGUkFOQ0UKLQotMDAtMzAtN0QgICAoaGV4KQkJR1JFIEFNRVJJQ0EsIElOQy4KLTAwMzA3RCAgICAgKGJhc2UgMTYpCQlHUkUgQU1FUklDQSwgSU5DLgotCQkJCTQyNSBIQVJCT1IgQkxWRC4KLQkJCQlCRUxNT05UIENBIDk0MDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC03RSAgIChoZXgpCQlSZWRmbGV4IENvbW11bmljYXRpb24gU3lzdGVtcwotMDAzMDdFICAgICAoYmFzZSAxNikJCVJlZGZsZXggQ29tbXVuaWNhdGlvbiBTeXN0ZW1zCi0JCQkJMTEtMjkgRWFzdGVybiBSb2FkCi0JCQkJU291dGggTWVsYm91cm5lIFZpY3RvcmlhIDMyMDUgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTMwLTdGICAgKGhleCkJCUlSTEFOIExURC4KLTAwMzA3RiAgICAgKGJhc2UgMTYpCQlJUkxBTiBMVEQuCi0JCQkJMSBIQVRBTUFSIFNUUkVFVAotCQkJCVAuTy4gQk9YIDI4OCBZT0tORUFNIDIwNjkyCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTMwLTgwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMzA4MCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtODEgICAoaGV4KQkJQUxUT1MgQyZDCi0wMDMwODEgICAgIChiYXNlIDE2KQkJQUxUT1MgQyZDCi0JCQkJMTUwLTAxMCBSTS4gMTAxMiwgNDQtMQotCQkJCURBRSBZT1VORyBCL0QsIFlPVklETy1ET05HIFlPVU5HQ0hVTkdQTy0KLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC04MiAgIChoZXgpCQlUQUlIQU4gRUxFQ1RSSUMgV0lSRSBDTy4sIExURC4KLTAwMzA4MiAgICAgKGJhc2UgMTYpCQlUQUlIQU4gRUxFQ1RSSUMgV0lSRSBDTy4sIExURC4KLQkJCQlDb21tdW5pY2F0aW9uIEVuZ2luZWVyaW5nIFRlYW0KLQkJCQk5OTYgU2loZXVuZy1Eb25nIEtleW0gQ2hlb24ta3UKLQkJCQlTZW91bCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTMwLTgzICAgKGhleCkJCUl2cm9uIFN5c3RlbXMKLTAwMzA4MyAgICAgKGJhc2UgMTYpCQlJdnJvbiBTeXN0ZW1zCi0JCQkJMTktMjAgWU9SSyBST0FECi0JCQkJRFVOIExBT0dIQUlSRSBDT1VOVFkgRFVCTElOCi0JCQkJSVJFTEFORAotCQkJCUlSRUxBTkQKLQotMDAtMzAtODQgICAoaGV4KQkJQUxMSUVEIFRFTEVTWU4gSU5URVJOQUlPTkFMCi0wMDMwODQgICAgIChiYXNlIDE2KQkJQUxMSUVEIFRFTEVTWU4gSU5URVJOQUlPTkFMCi0JCQkJQ09SUE9SQVRJT04KLQkJCQk5NjAgU1RFV0FSVCBEUklWRSwgIFNURS4KLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTg1ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMzA4NSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTg2ICAgKGhleCkJCVRyYW5zaXN0b3IgRGV2aWNlcywgSW5jLgotMDAzMDg2ICAgICAoYmFzZSAxNikJCVRyYW5zaXN0b3IgRGV2aWNlcywgSW5jLgotCQkJCTM2QSBOZXdidXJnaCBSb2FkCi0JCQkJSGFja2V0dHN0b3duIE5KIDA3ODQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04NyAgIChoZXgpCQlWRUdBIEdSSUVTSEFCRVIgS0cKLTAwMzA4NyAgICAgKGJhc2UgMTYpCQlWRUdBIEdSSUVTSEFCRVIgS0cKLQkJCQlBTSBIT0hFTlNURUlOIDExMwotCQkJCTc3NzYxIFNDSFVMVEFDSAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLTg4ICAgKGhleCkJCUVyaWNzc29uCi0wMDMwODggICAgIChiYXNlIDE2KQkJRXJpY3Nzb24KLQkJCQkxMDAgSGVhZHF1YXJ0ZXJzIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTg5ICAgKGhleCkJCVNwZWN0cmFwb2ludCBXaXJlbGVzcywgTExDCi0wMDMwODkgICAgIChiYXNlIDE2KQkJU3BlY3RyYXBvaW50IFdpcmVsZXNzLCBMTEMKLQkJCQkxMTI1IEUuIENvbGxpbnMgQmx2ZC4KLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04QSAgIChoZXgpCQlOSUNPVFJBIFNJU1RFTUkgUy5QLkEKLTAwMzA4QSAgICAgKGJhc2UgMTYpCQlOSUNPVFJBIFNJU1RFTUkgUy5QLkEKLQkJCQk0MSBWaWEgUHJpbW8gTWFnZ2lvCi0JCQkJQmFyYW56YXRlIChNSSkgMjAwMjEKLQkJCQlJVEFMWQotCi0wMC0zMC04QiAgIChoZXgpCQlCcml4IE5ldHdvcmtzCi0wMDMwOEIgICAgIChiYXNlIDE2KQkJQnJpeCBOZXR3b3JrcwotCQkJCTMwMCBDb25jb3JkIFJvYWQKLQkJCQlCaWxsZXJpY2EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLThDICAgKGhleCkJCVF1YW50dW0gQ29ycG9yYXRpb24KLTAwMzA4QyAgICAgKGJhc2UgMTYpCQlRdWFudHVtIENvcnBvcmF0aW9uCi0JCQkJMTAxMjUgRmVkZXJhbCBEcml2ZQotCQkJCUNvbG9yYWRvIFNwcmluZ3MgQ08gODA5MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLThEICAgKGhleCkJCVBpbm5hY2xlIFN5c3RlbXMsIEluYy4KLTAwMzA4RCAgICAgKGJhc2UgMTYpCQlQaW5uYWNsZSBTeXN0ZW1zLCBJbmMuCi0JCQkJRnJhbmtmdXJ0ZXIgU3RyLiAzYwotCQkJCUQtMzgxMjIgQnJhdW5zY2h3ZWlnIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtOEUgICAoaGV4KQkJQ1JPU1MgTUFUQ0ggVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDMwOEUgICAgIChiYXNlIDE2KQkJQ1JPU1MgTUFUQ0ggVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMzk2MCBSQ0EgQmx2ZC4sIFN1aXRlIDYwMDEKLQkJCQlQYWxtIEJlYWNoIEZMIDMzNDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC04RiAgIChoZXgpCQlNSUNSSUxPUiwgSW5jLgotMDAzMDhGICAgICAoYmFzZSAxNikJCU1JQ1JJTE9SLCBJbmMuCi0JCQkJMTcgTGFrZXNpZGUgT2ZmaWNlIFBhcmsKLQkJCQk2MDcgTm9ydGggQXZlbnVlCi0JCQkJV2FrZWZpZWxkIE1BIDAxODgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05MCAgIChoZXgpCQlDWVJBIFRFQ0hOT0xPR0lFUywgSU5DLgotMDAzMDkwICAgICAoYmFzZSAxNikJCUNZUkEgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJODAwMCBDQVBXRUxMIERSSVZFCi0JCQkJT0FLTEFORCBDQSA5NDYyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtOTEgICAoaGV4KQkJVEFJV0FOIEZJUlNUIExJTkUgRUxFQy4gQ09SUC4KLTAwMzA5MSAgICAgKGJhc2UgMTYpCQlUQUlXQU4gRklSU1QgTElORSBFTEVDLiBDT1JQLgotCQkJCTQwIENodW5nLVNoYW4gUm9hZAotCQkJCVR1LUNoZW5nIEluZHVzdHJpYWwgUGFyawotCQkJCVRhaXBlaSBDb3VudHkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtOTIgICAoaGV4KQkJTW9kdU5PUk0gR21iSAotMDAzMDkyICAgICAoYmFzZSAxNikJCU1vZHVOT1JNIEdtYkgKLQkJCQlMYW5ncnV0aXN0cmFzc2UgMzMKLQkJCQlDSC04ODQwIEVpbnNsZWRlbG4gIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTMwLTkzICAgKGhleCkJCVNvbm5ldCBUZWNobm9sb2dpZXMsIEluYwotMDAzMDkzICAgICAoYmFzZSAxNikJCVNvbm5ldCBUZWNobm9sb2dpZXMsIEluYwotCQkJCTggQXV0cnkKLQkJCQlJcnZpbmUsIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMDMwOTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTk1ICAgKGhleCkJCVByb2NvbXAgSW5mb3JtYXRpY3MsIEx0ZC4KLTAwMzA5NSAgICAgKGJhc2UgMTYpCQlQcm9jb21wIEluZm9ybWF0aWNzLCBMdGQuCi0JCQkJNUYsIDY5LTEwLCBTZWMuIDIsCi0JCQkJQ2h1bmcgQ2hlbmcgRS4gUm9hZAotCQkJCVRhbXNodWksIFRhaXBlaSwgSHNpZW4gIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtOTYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDAzMDk2ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUgLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05NyAgIChoZXgpCQlBQiBSZWdpbgotMDAzMDk3ICAgICAoYmFzZSAxNikJCUFCIFJlZ2luCi0JCQkJQm94IDM2NgotCQkJCVNFLTI2MTIzIExhbmRza3JvbmEgCi0JCQkJU1dFREVOCi0KLTAwLTMwLTk4ICAgKGhleCkJCUdsb2JhbCBDb252ZXJnaW5nIFRlY2hub2xvZ2llcwotMDAzMDk4ICAgICAoYmFzZSAxNikJCUdsb2JhbCBDb252ZXJnaW5nIFRlY2hub2xvZ2llcwotCQkJCTE4MDAgUHJlc3RvbiBQYXJrIEJsdmQuCi0JCQkJU3VpdGUgIzI1MAotCQkJCVBsYW5vIFRYIDc1MDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05OSAgIChoZXgpCQlCT0VOSUcgVU5EIEtBTExFTkJBQ0ggT0hHCi0wMDMwOTkgICAgIChiYXNlIDE2KQkJQk9FTklHIFVORCBLQUxMRU5CQUNIIE9IRwotCQkJCUFNIFNQT0VSS0VMIDEwMAotCQkJCTQ0MjI3IERPUlRNVU5ECi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMzAtOUEgICAoaGV4KQkJQVNUUk8gVEVSUkEgQ09SUC4KLTAwMzA5QSAgICAgKGJhc2UgMTYpCQlBU1RSTyBURVJSQSBDT1JQLgotCQkJCTExNTI2IFNPUlJFTlRPIFZBTExFWSBST0FECi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05QiAgIChoZXgpCQlTbWFydHdhcmUKLTAwMzA5QiAgICAgKGJhc2UgMTYpCQlTbWFydHdhcmUKLQkJCQk0OSBBViBBcmlzdGlkZQotCQkJCUJyaWFuZAotCQkJCTkyMTYwIEFudG9ueSAgCi0JCQkJRlJBTkNFCi0KLTAwLTMwLTlDICAgKGhleCkJCVRpbWluZyBBcHBsaWNhdGlvbnMsIEluYy4KLTAwMzA5QyAgICAgKGJhc2UgMTYpCQlUaW1pbmcgQXBwbGljYXRpb25zLCBJbmMuCi0JCQkJNDc3NSBXYWxudXQgU3QuCi0JCQkJU3VpdGUgMUIKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC05RCAgIChoZXgpCQlOaW1ibGUgTWljcm9zeXN0ZW1zLCBJbmMuCi0wMDMwOUQgICAgIChiYXNlIDE2KQkJTmltYmxlIE1pY3Jvc3lzdGVtcywgSW5jLgotCQkJCTUwIENodXJjaCBTdHJlZXQgLSA1dGggRmxvb3IKLQkJCQlDYW1icmlkZ2UgTUEgMDIxMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLTlFICAgKGhleCkJCVdPUktCSVQgQ09SUE9SQVRJT04uCi0wMDMwOUUgICAgIChiYXNlIDE2KQkJV09SS0JJVCBDT1JQT1JBVElPTi4KLQkJCQkxLTItMiBDaHVvdSwgWWFtYXRvCi0JCQkJS2FuYWdhd2EgIDI0Mi0wMDIxICAKLQkJCQlKQVBBTgotCi0wMC0zMC05RiAgIChoZXgpCQlBTUJFUiBORVRXT1JLUwotMDAzMDlGICAgICAoYmFzZSAxNikJCUFNQkVSIE5FVFdPUktTCi0JCQkJMjQ3NSBBVUdVU1RJTkUgRFIuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUEwICAgKGhleCkJCVRZQ08gU1VCTUFSSU5FIFNZU1RFTVMsIExURC4KLTAwMzBBMCAgICAgKGJhc2UgMTYpCQlUWUNPIFNVQk1BUklORSBTWVNURU1TLCBMVEQuCi0JCQkJMjUwIElORFVTVFJJQUwgV0FZIFdFU1QKLQkJCQlFQVRPTlRPV04gTkogMDc3MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUExICAgKGhleCkJCVdFQkdBVEUgSW5jLgotMDAzMEExICAgICAoYmFzZSAxNikJCVdFQkdBVEUgSW5jLgotCQkJCTRGLCBQaWthIEJsZGcuLCA4OTQtMjAsIEhveWtlIDItZG9uZwotCQkJCURvbmdhbi1LdSwKLQkJCQlBbnlhbmctU2kgS3l1bmdnaS1EbyAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtQTIgICAoaGV4KQkJTGlnaHRuZXIgRW5naW5lZXJpbmcKLTAwMzBBMiAgICAgKGJhc2UgMTYpCQlMaWdodG5lciBFbmdpbmVlcmluZwotCQkJCTg1NTEgTGEgSm9sbGEgU2hvcmVzIERyCi0JCQkJTGEgSm9sbGEgQ0EgOTIwMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUEzICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMzBBMyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFIC1TSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1BNCAgIChoZXgpCQlXb29kd2luZCBDb21tdW5pY2F0aW9ucyBTeXN0ZW0KLTAwMzBBNCAgICAgKGJhc2UgMTYpCQlXb29kd2luZCBDb21tdW5pY2F0aW9ucyBTeXN0ZW0KLQkJCQkyMDMwMCBDZW50dXJ5IEJsdmQuLCBTdWl0ZSAyMDBCCi0JCQkJR2VybWFudG93biBNRCAyMDg3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQTUgICAoaGV4KQkJQUNUSVZFIFBPV0VSCi0wMDMwQTUgICAgIChiYXNlIDE2KQkJQUNUSVZFIFBPV0VSCi0JCQkJMTE1MjUgU1RPTkVIT0xMT1cgLSBTVEUuIzI1NQotCQkJCUFVU1RJTiBUWCA3ODc1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQTYgICAoaGV4KQkJVklBTkVUIFRFQ0hOT0xPR0lFUywgTFRELgotMDAzMEE2ICAgICAoYmFzZSAxNikJCVZJQU5FVCBURUNITk9MT0dJRVMsIExURC4KLQkJCQk4IEhBQ0hBUkFTSCBTVFJFRVQKLQkJCQlSQU1BVCBIQVNIQVJPTiA0NzI2MgotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC0zMC1BNyAgIChoZXgpCQlTQ0hXRUlUWkVSIEVOR0lORUVSSU5HCi0wMDMwQTcgICAgIChiYXNlIDE2KQkJU0NIV0VJVFpFUiBFTkdJTkVFUklORwotCQkJCUxBQk9SQVRPUklFUywgSU5DLgotCQkJCTIzNTAgTkUgSE9QS0lOUyBDT1VSVAotCQkJCVBVTExNQU4gV0EgOTkxNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUE4ICAgKGhleCkJCU9MJ0UgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwMzBBOCAgICAgKGJhc2UgMTYpCQlPTCdFIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTk2MiBaQU5LRVIgUk9BRAotCQkJCVNBTiBKT1NFIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1BOSAgIChoZXgpCQlOZXRpdmVyc2UsIEluYy4KLTAwMzBBOSAgICAgKGJhc2UgMTYpCQlOZXRpdmVyc2UsIEluYy4KLQkJCQkxMDAgQ2VudHVyeSBDZW50ZXIgQ291cnQKLQkJCQlTdWl0ZSAjNjAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUFBICAgKGhleCkJCUFYVVMgTUlDUk9TWVNURU1TLCBJTkMuCi0wMDMwQUEgICAgIChiYXNlIDE2KQkJQVhVUyBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQkyRi00LCBOTy4xOC9OLiA2MDksIFNFQy4gNQotCQkJCUNIVU4tSFNJTiBST0FELCBTQU4gQ0hVTkcgVEFJUEVJIENPVU5UWQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1BQiAgIChoZXgpCQlERUxUQSBORVRXT1JLUywgSU5DLgotMDAzMEFCICAgICAoYmFzZSAxNikJCURFTFRBIE5FVFdPUktTLCBJTkMuCi0JCQkJOCwgS09OIEpBTiBXRVNUIFJPQUQKLQkJCQlMSVVUVSBJTkRVU1RSSUFMIFpPTkUgS0VFTFVORwotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1BQyAgIChoZXgpCQlTeXN0ZW1lIExhdWVyIEdtYkggJiBDby4sIEx0ZC4KLTAwMzBBQyAgICAgKGJhc2UgMTYpCQlTeXN0ZW1lIExhdWVyIEdtYkggJiBDby4sIEx0ZC4KLQkJCQlLZWx0ZXJzdHJhc3NlIDU5Ci0JCQkJNzI2NjkgVW50ZXJlbnNpbmdlbiAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC1BRCAgIChoZXgpCQlTSEFOR0hBSSBDT01NVU5JQ0FUSU9OCi0wMDMwQUQgICAgIChiYXNlIDE2KQkJU0hBTkdIQUkgQ09NTVVOSUNBVElPTgotCQkJCVRFQ0hOT0xPR0lFUyBDRU5URVIKLQkJCQkxNSBHVUktUUlORyBST0FEIFNIQU5HSEFJIDIwMDIzMwotCQkJCVAuUi4gQ0hJTkEKLQkJCQlDSElOQQotCi0wMC0zMC1BRSAgIChoZXgpCQlUaW1lcyBOIFN5c3RlbSwgSW5jLgotMDAzMEFFICAgICAoYmFzZSAxNikJCVRpbWVzIE4gU3lzdGVtLCBJbmMuCi0JCQkJMTgyNiBLcmFtZXIgTGFuZSAtIFN0ZS4KLQkJCQlBdXN0aW4gVFggNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUFGICAgKGhleCkJCUhvbmV5d2VsbCBHbWJICi0wMDMwQUYgICAgIChiYXNlIDE2KQkJSG9uZXl3ZWxsIEdtYkgKLQkJCQlCb2VibGluZ2VyIFN0ci4gMTcKLQkJCQlQLk8uIEJveCAxMTY0Ci0JCQkJRC03MTA5OCBTY2hvZW5haWNoICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTMwLUIwICAgKGhleCkJCUNvbnZlcmdlbmV0IFRlY2hub2xvZ2llcwotMDAzMEIwICAgICAoYmFzZSAxNikJCUNvbnZlcmdlbmV0IFRlY2hub2xvZ2llcwotCQkJCTIyMjIgVHJhZGUgWm9uZSBCb3VsZXZhcmQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQjEgICAoaGV4KQkJVHJ1bmtOZXQKLTAwMzBCMSAgICAgKGJhc2UgMTYpCQlUcnVua05ldAotCQkJCUF1YmVyZ2VudmlsbGVyIEFsbGVlIDUxCi0JCQkJRGllYnVyZyAgRC02NDgwNwotCQkJCUdFUk1BTlkKLQotMDAtMzAtQjIgICAoaGV4KQkJTC0zIFNvbm9tYSBFTwotMDAzMEIyICAgICAoYmFzZSAxNikJCUwtMyBTb25vbWEgRU8KLQkJCQk0MjggQXZpYXRpb24gQmx2ZAotCQkJCVNhbnRhIFJvc2EgQ0EgOTU0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUIzICAgKGhleCkJCVNhbiBWYWxsZXkgU3lzdGVtcywgSW5jLgotMDAzMEIzICAgICAoYmFzZSAxNikJCVNhbiBWYWxsZXkgU3lzdGVtcywgSW5jLgotCQkJCTIxMDUgUy4gQmFzY29tIEF2ZS4gLSBTdGUuICMzOTAKLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQjQgICAoaGV4KQkJSU5URVJTSUwgQ09SUC4KLTAwMzBCNCAgICAgKGJhc2UgMTYpCQlJTlRFUlNJTCBDT1JQLgotCQkJCVAuTy4gQk9YIDg4MwotCQkJCTI0MDEgUEFMTSBCQVkgUk9BRAotCQkJCU1FTEJPVVJORSBGTCAzMjkwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQjUgICAoaGV4KQkJVGFkaXJhbiBNaWNyb3dhdmUgTmV0d29ya3MKLTAwMzBCNSAgICAgKGJhc2UgMTYpCQlUYWRpcmFuIE1pY3Jvd2F2ZSBOZXR3b3JrcwotCQkJCTQwMDAgR3JlZW5icmlhciBEcml2ZQotCQkJCVN0YWZmb3JkIFRYIDc3NDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1CNiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDMwQjYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRSAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUI3ICAgKGhleCkJCVRlbGV0cm9sIFN5c3RlbXMsIEluYy4KLTAwMzBCNyAgICAgKGJhc2UgMTYpCQlUZWxldHJvbCBTeXN0ZW1zLCBJbmMuCi0JCQkJVGVjaG5vbG9neSBDZW50ZXIKLQkJCQkyODYgQ29tbWVyY2lhbCBTdHJlZXQKLQkJCQlNYW5jaGVzdGVyIE5IIDAzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1COCAgIChoZXgpCQlSaXZlckRlbHRhIE5ldHdvcmtzCi0wMDMwQjggICAgIChiYXNlIDE2KQkJUml2ZXJEZWx0YSBOZXR3b3JrcwotCQkJCVRocmVlIEhpZ2h3b29kIERyaXZlIEVhc3QKLQkJCQlUZXdrc2J1cnkgTUEgMDE4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUI5ICAgKGhleCkJCUVDVEVMCi0wMDMwQjkgICAgIChiYXNlIDE2KQkJRUNURUwKLQkJCQkyMjI0MCBDT01TQVQgRFJJVkUKLQkJCQlDTEFSS1NCVVJHIE1EIDIwODcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1CQSAgIChoZXgpCQlBQyZUIFNZU1RFTSBDTy4sIExURC4KLTAwMzBCQSAgICAgKGJhc2UgMTYpCQlBQyZUIFNZU1RFTSBDTy4sIExURC4KLQkJCQlST09NIDcwMiwgS0VVTS1XSEEgUExBWkEKLQkJCQkxMTQyLTUsIFNBTkJPTi1ET05HIEtPT05QTy1TSEksIEtZT05HS0ktCi0JCQkJNDM1LTA0MCBTT1VUSCBLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC1CQiAgIChoZXgpCQlDYWNoZUZsb3csIEluYy4KLTAwMzBCQiAgICAgKGJhc2UgMTYpCQlDYWNoZUZsb3csIEluYy4KLQkJCQk2NTAgQWxtYW5vciBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQkMgICAoaGV4KQkJT3B0cm9uaWMgQUcKLTAwMzBCQyAgICAgKGJhc2UgMTYpCQlPcHRyb25pYyBBRwotCQkJCXVudGVyZWdnZXJzdHJhc3NlIDUzCi0JCQkJOTQwMyBHb2xkYWNoICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC0zMC1CRCAgIChoZXgpCQlCRUxLSU4gQ09NUE9ORU5UUwotMDAzMEJEICAgICAoYmFzZSAxNikJCUJFTEtJTiBDT01QT05FTlRTCi0JCQkJNTAxIFdFU1QgV0FMTlVUIFNUUkVFVAotCQkJCUNPTVBUT04gQ0EgOTAyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUJFICAgKGhleCkJCUNpdHktTmV0IFRlY2hub2xvZ3ksIEluYy4KLTAwMzBCRSAgICAgKGJhc2UgMTYpCQlDaXR5LU5ldCBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTM1IEUuIENoZXNudXQgQXZlLiwgU3RlLgotCQkJCU1vbnJvdmlhIENBIDkxMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1CRiAgIChoZXgpCQlNVUxUSURBVEEgR01CSAotMDAzMEJGICAgICAoYmFzZSAxNikJCU1VTFRJREFUQSBHTUJICi0JCQkJQUxTRkVMREVSIFNUUi4gMwotCQkJCUQtNjQyODkgREFSTVNUQURUCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMzAtQzAgICAoaGV4KQkJTGFyYSBUZWNobm9sb2d5LCBJbmMuCi0wMDMwQzAgICAgIChiYXNlIDE2KQkJTGFyYSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMjM0NSBOb3J0aCBGaXJzdCBTdHJlZXQKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQzEgICAoaGV4KQkJSEVXTEVUVC1QQUNLQVJECi0wMDMwQzEgICAgIChiYXNlIDE2KQkJSEVXTEVUVC1QQUNLQVJECi0JCQkJMTEwMDAgV09MRkUgUk9BRAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQzIgICAoaGV4KQkJQ09NT05FCi0wMDMwQzIgICAgIChiYXNlIDE2KQkJQ09NT05FCi0JCQkJUGFyYyBEZSBNYXJ0aWNvdAotCQkJCTMzNjEwIENlc3RhcyAgCi0JCQkJRlJBTkNFCi0KLTAwLTMwLUMzICAgKGhleCkJCUZMVUVDS0lHRVIgRUxFS1RST05JSyBBRwotMDAzMEMzICAgICAoYmFzZSAxNikJCUZMVUVDS0lHRVIgRUxFS1RST05JSyBBRwotCQkJCUtJUkNIQkFSR1NUUkFTU0UgMjAxCi0JCQkJQ0gtMzQwMCBCVVJHRE9SRgotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtMzAtQzQgICAoaGV4KQkJQ2Fub24gSW1hZ2luZyBTeXN0ZW1zIEluYy4KLTAwMzBDNCAgICAgKGJhc2UgMTYpCQlDYW5vbiBJbWFnaW5nIFN5c3RlbXMgSW5jLgotCQkJCTEtMjQgWW9uZXlhbWEsIENodW8ta3UKLQkJCQlOaWlnYXRhLXNoaSBOaWlnYXRhIDk1MC0wOTE2Ci0JCQkJSkFQQU4KLQotMDAtMzAtQzUgICAoaGV4KQkJQ0FERU5DRSBERVNJR04gU1lTVEVNUwotMDAzMEM1ICAgICAoYmFzZSAxNikJCUNBREVOQ0UgREVTSUdOIFNZU1RFTVMKLQkJCQlDQU5BREEsIExURC4KLQkJCQkyNDAtMTEzMCBNT1JSSVNPTiBEUklWRSBPVFRBV0EsIE9OVEFSSU8KLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtMzAtQzYgICAoaGV4KQkJQ09OVFJPTCBTT0xVVElPTlMsIElOQy4KLTAwMzBDNiAgICAgKGJhc2UgMTYpCQlDT05UUk9MIFNPTFVUSU9OUywgSU5DLgotCQkJCTIwMSA4NVRIIEFWRU5VRSBOVwotCQkJCU1JTk5FQVBPTElTIE1OIDU1NDMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1DNyAgIChoZXgpCQlNYWNyb21hdGUgQ29ycC4KLTAwMzBDNyAgICAgKGJhc2UgMTYpCQlNYWNyb21hdGUgQ29ycC4KLQkJCQk4RixVbml2ZXJzYWwgQ2VudGVyLE51bWJlciAxNzkKLQkJCQlTZWMuMSxUYS1UdW5nIFJvYWQsIEhzaS1DaGloCi0JCQkJVGFpcGVpIEhzaWVuIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtQzggICAoaGV4KQkJR0FEIExJTkUsIExURC4KLTAwMzBDOCAgICAgKGJhc2UgMTYpCQlHQUQgTElORSwgTFRELgotCQkJCUJFSVQgUk9LQVIgSEFSIEhPVFpWSU0KLQkJCQlKRVJVU0FMRU0KLQkJCQlJU1JBRUwKLQotMDAtMzAtQzkgICAoaGV4KQkJTHV4TiwgTgotMDAzMEM5ICAgICAoYmFzZSAxNikJCUx1eE4sIE4KLQkJCQk1NzAgTWF1ZGUgQ291cnQKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNBICAgKGhleCkJCURpc2NvdmVyeSBDb20KLTAwMzBDQSAgICAgKGJhc2UgMTYpCQlEaXNjb3ZlcnkgQ29tCi0JCQkJNDkzNSBDZW50dXJ5IFN0cmVldAotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNCICAgKGhleCkJCU9NTkkgRkxPVyBDT01QVVRFUlMsIElOQy4KLTAwMzBDQiAgICAgKGJhc2UgMTYpCQlPTU5JIEZMT1cgQ09NUFVURVJTLCBJTkMuCi0JCQkJMTA3MDEgQ09SUE9SQVRFIERSSVZFLVNURS4jMzAwCi0JCQkJU1RBRkZPUkQgVFggNzc0NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNDICAgKGhleCkJCVRlbm9yIE5ldHdvcmtzLCBJbmMuCi0wMDMwQ0MgICAgIChiYXNlIDE2KQkJVGVub3IgTmV0d29ya3MsIEluYy4KLQkJCQk1MCBOYWdvZyBQYXJrCi0JCQkJQWN0b24gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNEICAgKGhleCkJCUNPTkVYQU5UIFNZU1RFTVMsIElOQy4KLTAwMzBDRCAgICAgKGJhc2UgMTYpCQlDT05FWEFOVCBTWVNURU1TLCBJTkMuCi0JCQkJNDMxMSBKQU1CT1JFRSBST0FECi0JCQkJTkVXUE9SVCBCRUFDSCBDQSA5MjY2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtQ0UgICAoaGV4KQkJWmFmZmlyZQotMDAzMENFICAgICAoYmFzZSAxNikJCVphZmZpcmUKLQkJCQkyNjMwIE9yY2hhcmQgUGFya3dheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0LTIwMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUNGICAgKGhleCkJCVRXTyBURUNITk9MT0dJRVMsIElOQy4KLTAwMzBDRiAgICAgKGJhc2UgMTYpCQlUV08gVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNDE5IFNBUkdPTiBXQVkKLQkJCQlIT1JTSEFNIFBBIDE5MDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1EMCAgIChoZXgpCQlUZWxsYWJzCi0wMDMwRDAgICAgIChiYXNlIDE2KQkJVGVsbGFicwotCQkJCTE3NTAgRm91bmRlcidzIFBhcmt3YXkKLQkJCQlTdWl0ZSAxMDAKLQkJCQlBbHBoYXJldHRhIEdBIDMwMDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1EMSAgIChoZXgpCQlJTk9WQSBDT1JQT1JBVElPTgotMDAzMEQxICAgICAoYmFzZSAxNikJCUlOT1ZBIENPUlBPUkFUSU9OCi0JCQkJMTEwIEFWT04gU1RSRUVUCi0JCQkJQ0hBUkxPVFRFU1ZJTEUgVkEgMjI5MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUQyICAgKGhleCkJCVdJTiBURUNITk9MT0dJRVMsIENPLiwgTFRELgotMDAzMEQyICAgICAoYmFzZSAxNikJCVdJTiBURUNITk9MT0dJRVMsIENPLiwgTFRELgotCQkJCTRGLTYsIE5vLiA4MSwgU2VjLiAxCi0JCQkJSHNpbiBUYWkgV3UgUm9hZCwgSHNpLUNoaQotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1EMyAgIChoZXgpCQlBZ2lsZW50IFRlY2hub2xvZ2llcwotMDAzMEQzICAgICAoYmFzZSAxNikJCUFnaWxlbnQgVGVjaG5vbG9naWVzCi0JCQkJMTUwMSBQYWdlIE1pbGwgUm9hZAotCQkJCVBhbG8gQWx0byBDQSA5NDMwNC0xMTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1ENCAgIChoZXgpCQlBQUUgU3lzdGVtcywgSW5jCi0wMDMwRDQgICAgIChiYXNlIDE2KQkJQUFFIFN5c3RlbXMsIEluYwotCQkJCTY0MiBOb3J0aCBQYXN0b3JpYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUQ1ICAgKGhleCkJCURSZXNlYXJjaCBHbWJICi0wMDMwRDUgICAgIChiYXNlIDE2KQkJRFJlc2VhcmNoIEdtYkgKLQkJCQlPdHRvLVNjaG1pcmdhbC1TdHIuMwotCQkJCTEwMzE5IEJlcmxpbiAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC1ENiAgIChoZXgpCQlNU0MgVkVSVFJJRUJTIEdNQkgKLTAwMzBENiAgICAgKGJhc2UgMTYpCQlNU0MgVkVSVFJJRUJTIEdNQkgKLQkJCQlJTkRVU1RSSUVTVFIuIDE2Ci0JCQkJRC03NjI5NyBTVFVURU5TRUUKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC0zMC1ENyAgIChoZXgpCQlJbm5vdmF0aXZlIFN5c3RlbXMsIEwuTC5DLgotMDAzMEQ3ICAgICAoYmFzZSAxNikJCUlubm92YXRpdmUgU3lzdGVtcywgTC5MLkMuCi0JCQkJMTAwMCBJbm5vdmF0aXZlIERyaXZlCi0JCQkJTWl0Y2hlbGwgU0QgNTczMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUQ4ICAgKGhleCkJCVNJVEVLCi0wMDMwRDggICAgIChiYXNlIDE2KQkJU0lURUsKLQkJCQlWSUEgTU9OVEUgRklPUklOTyA5Ci0JCQkJMzcwNTcgLSBTLiBHSU9WQU5OSSBMVVAuIFZFUk9OQQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtMzAtRDkgICAoaGV4KQkJREFUQUNPUkUgU09GVFdBUkUgQ09SUC4KLTAwMzBEOSAgICAgKGJhc2UgMTYpCQlEQVRBQ09SRSBTT0ZUV0FSRSBDT1JQLgotCQkJCUNPUlBPUkFURSBQQVJLCi0JCQkJNjI2MSBOVyA2VEggV0FZICMxMTAKLQkJCQlGT1JUIExBVURFUkRBTEUgRkwgMzMzMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLURBICAgKGhleCkJCUNPTVRSRU5EIENPLgotMDAzMERBICAgICAoYmFzZSAxNikJCUNPTVRSRU5EIENPLgotCQkJCTNGLTEgMTAgTEFORSA2MDkgQ0hVTkcKLQkJCQlIU0lOIFJPQUQsIFNFQyA1LCBTQU4gQ0hVTkcgQ0lUWSwgVEFJUEVJCi0JCQkJVEFJV0FOIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtREIgICAoaGV4KQkJTWluZHJlYWR5IFNvbHV0aW9ucywgSW5jLgotMDAzMERCICAgICAoYmFzZSAxNikJCU1pbmRyZWFkeSBTb2x1dGlvbnMsIEluYy4KLQkJCQkyODAwIE1hcmllLUN1cmllIEF2ZW51ZQotCQkJCVNhaW50LUxhdXJlbnQKLQkJCQlRdWViZWMgIEg0UyAyQzIKLQkJCQlDQU5BREEKLQotMDAtMzAtREMgICAoaGV4KQkJUklHSFRFQ0ggQ09SUE9SQVRJT04KLTAwMzBEQyAgICAgKGJhc2UgMTYpCQlSSUdIVEVDSCBDT1JQT1JBVElPTgotCQkJCTRGLCBOTy4gMzUxLCBDSFVORy1TSFVOIFJELgotCQkJCVNFQy4gMiwgQ0hVTkctSE8gQ0lUWSBUQUlQRUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtREQgICAoaGV4KQkJSU5ESUdJVEEgQ09SUE9SQVRJT04KLTAwMzBERCAgICAgKGJhc2UgMTYpCQlJTkRJR0lUQSBDT1JQT1JBVElPTgotCQkJCTMwIENvcnBvcmF0ZSBQYXJrIERyaXZlCi0JCQkJU3VpdGUgMzEwCi0JCQkJSXJ2aW5lIENBIDkyNjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1ERSAgIChoZXgpCQlXQUdPIEtvbnRha3R0ZWNobmlrIEdtYkgKLTAwMzBERSAgICAgKGJhc2UgMTYpCQlXQUdPIEtvbnRha3R0ZWNobmlrIEdtYkgKLQkJCQlIYW5zYXN0cmFzc2UgMjcKLQkJCQkzMjQyMyBNaW5kZW4gIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtREYgICAoaGV4KQkJS0IvVEVMIFRFTEVDT01VTklDQUNJT05FUwotMDAzMERGICAgICAoYmFzZSAxNikJCUtCL1RFTCBURUxFQ09NVU5JQ0FDSU9ORVMKLQkJCQlTLkEuIERFIEMuVi4KLQkJCQlUT1JSRSBURUxNRVggNCAgUElTTywgUExBWkEgQ1VJQ1VJTENPCi0JCQkJTWV4aWNvIENpdHkgMTQwNjAgIAotCQkJCU1FWElDTwotCi0wMC0zMC1FMCAgIChoZXgpCQlPWEZPUkQgU0VNSUNPTkRVQ1RPUiBMVEQuCi0wMDMwRTAgICAgIChiYXNlIDE2KQkJT1hGT1JEIFNFTUlDT05EVUNUT1IgTFRELgotCQkJCTI1IE1JTFRPTiBQQVJLCi0JCQkJQWJpbmdkb24gT3hvbiBPWDE0IDRTSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTMwLUUxICAgKGhleCkJCU5ldHdvcmsgRXF1aXBtZW50IFRlY2hub2xvZ2llcywgSW5jLgotMDAzMEUxICAgICAoYmFzZSAxNikJCU5ldHdvcmsgRXF1aXBtZW50IFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTY5MDAgUGFzZW8gUGFkcmUgUGFya3dheQotCQkJCUZyZW1vbnQgQ0EgOTQ1NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUUyICAgKGhleCkJCUdBUk5FVCBTWVNURU1TIENPLiwgTFRELgotMDAzMEUyICAgICAoYmFzZSAxNikJCUdBUk5FVCBTWVNURU1TIENPLiwgTFRELgotCQkJCVN1bmd3b24gQmxkZy4gNTQ1LTcKLQkJCQlEb2dvay1Eb25nLCBLYW5nbmFtLUd1Ci0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zMC1FMyAgIChoZXgpCQlTRURPTkEgTkVUV09SS1MgQ09SUC4KLTAwMzBFMyAgICAgKGJhc2UgMTYpCQlTRURPTkEgTkVUV09SS1MgQ09SUC4KLQkJCQkxMEEgSEVBUlNUIFdBWQotCQkJCUtBTkFUQSwgIE9OVEFSSU8KLQkJCQlDQU5BREEgSzJMIDJQNAotCQkJCUNBTkFEQQotCi0wMC0zMC1FNCAgIChoZXgpCQlDSElZT0RBIFNZU1RFTSBSSUtFTgotMDAzMEU0ICAgICAoYmFzZSAxNikJCUNISVlPREEgU1lTVEVNIFJJS0VOCi0JCQkJMi03LCBLQU5EQS1OSVNISUtJLUNITwotCQkJCUNISVlPREEtS1UgVE9LWU8KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTMwLUU1ICAgKGhleCkJCUFtcGVyIERhdG9zIFMuQS4KLTAwMzBFNSAgICAgKGJhc2UgMTYpCQlBbXBlciBEYXRvcyBTLkEuCi0JCQkJQy9NYXJjb25pIG4qMyAgKFBUTSkKLQkJCQlUcmVzIENhbnRvcwotCQkJCTI4NzYwIE1hZHJpZCAgCi0JCQkJU1BBSU4KLQotMDAtMzAtRTYgICAoaGV4KQkJRHJhZWdlciBNZWRpY2FsIFN5c3RlbXMsIEluYy4KLTAwMzBFNiAgICAgKGJhc2UgMTYpCQlEcmFlZ2VyIE1lZGljYWwgU3lzdGVtcywgSW5jLgotCQkJCTYgVGVjaCBEcml2ZQotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUU3ICAgKGhleCkJCUNORiBNT0JJTEUgU09MVVRJT05TLCBJTkMuCi0wMDMwRTcgICAgIChiYXNlIDE2KQkJQ05GIE1PQklMRSBTT0xVVElPTlMsIElOQy4KLQkJCQk3NzIyIEUuIEdSQVkgUk9BRAotCQkJCVNDT1RUU0RBTEUgQVogODUyNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUU4ICAgKGhleCkJCUVOU0lNIENPUlAuCi0wMDMwRTggICAgIChiYXNlIDE2KQkJRU5TSU0gQ09SUC4KLQkJCQkxMjE1IFRlcnJhIEJlbGxhIEF2ZS4KLQkJCQlNb3VudGFpbnZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUU5ICAgKGhleCkJCUdNQSBDT01NVU5JQ0FUSU9OIE1BTlVGQUNUJ0cKLTAwMzBFOSAgICAgKGJhc2UgMTYpCQlHTUEgQ09NTVVOSUNBVElPTiBNQU5VRkFDVCdHCi0JCQkJTUFSS0VUSU5HLCAoMTk5MSkgTFRELgotCQkJCTEwMiBKQUJVVElOU0tJIFNUUkVFVCBLSVJZQVQgQVJJRSwgUEVUQUMKLQkJCQlJU1JBRUwgSVNSQUVMIDQ5MTMwCi0JCQkJSVNSQUVMCi0KLTAwLTMwLUVBICAgKGhleCkJCVRlcmFGb3JjZSBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0wMDMwRUEgICAgIChiYXNlIDE2KQkJVGVyYUZvcmNlIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkxMTAwIEVYRUNVVElWRSBEUklWRQotCQkJCVJJQ0hBUkRTT04gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUVCICAgKGhleCkJCVRVUkJPTkVUIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDMwRUIgICAgIChiYXNlIDE2KQkJVFVSQk9ORVQgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxOUYtMSwgTk8uIDE3MSwgU1VORy1URUggUk9BRAotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1FQyAgIChoZXgpCQlCT1JHQVJEVAotMDAzMEVDICAgICAoYmFzZSAxNikJCUJPUkdBUkRUCi0JCQkJRElFU0VMU1RSLiAxNQotCQkJCUQ3MTY2NSBWQUlISU5HRU4vRU5aCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtMzAtRUQgICAoaGV4KQkJRXhwZXJ0IE1hZ25ldGljcyBDb3JwLgotMDAzMEVEICAgICAoYmFzZSAxNikJCUV4cGVydCBNYWduZXRpY3MgQ29ycC4KLQkJCQkxMi9GLiwgVW5pdCBELCBNVEcgQmxkZy4sIDEtMywgTmFrYXNlCi0JCQkJTWloYW1hLWt1LCBDaGliYS1jaXR5LCAyNjEtODUwMSAgCi0JCQkJSkFQQU4KLQotMDAtMzAtRUUgICAoaGV4KQkJRFNHIFRlY2hub2xvZ3ksIEluYy4KLTAwMzBFRSAgICAgKGJhc2UgMTYpCQlEU0cgVGVjaG5vbG9neSwgSW5jLgotCQkJCTZGLTQgTm8uIDI3MCwgQ2h3aWcgSHNpYW8KLQkJCQlFYXN0IFJvYWQsIFNlYy4gNAotCQkJCSBUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtMzAtRUYgICAoaGV4KQkJTkVPTiBURUNITk9MT0dZLCBJTkMuCi0wMDMwRUYgICAgIChiYXNlIDE2KQkJTkVPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJODUgV0VTVCBNT05UQUdVRSBFWFBSRVNTV0FZCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUYwICAgKGhleCkJCVVuaWZvcm0gSW5kdXN0cmlhbCBDb3JwLgotMDAzMEYwICAgICAoYmFzZSAxNikJCVVuaWZvcm0gSW5kdXN0cmlhbCBDb3JwLgotCQkJCTE4RiwgMTcxLCBTaHVuZyBUZWggUm9hZAotCQkJCVRhaXBlaSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC0zMC1GMSAgIChoZXgpCQlBY2N0b24gVGVjaG5vbG9neSBDb3JwLgotMDAzMEYxICAgICAoYmFzZSAxNikJCUFjY3RvbiBUZWNobm9sb2d5IENvcnAuCi0JCQkJTm8uIDEsIENyZWF0aW9uIFJkLiBJVgotCQkJCVMuRy5aLlAKLQkJCQlIc2luY2h1ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMwLUYyICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwMzBGMiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA4NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRjMgICAoaGV4KQkJQXQgV29yayBDb21wdXRlcnMKLTAwMzBGMyAgICAgKGJhc2UgMTYpCQlBdCBXb3JrIENvbXB1dGVycwotCQkJCVAuTy4gQm94IDk0NwotCQkJCUNvcnZhbGxpcyBPUiA5NzMzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRjQgICAoaGV4KQkJU1RBUkRPVCBURUNITk9MT0dJRVMKLTAwMzBGNCAgICAgKGJhc2UgMTYpCQlTVEFSRE9UIFRFQ0hOT0xPR0lFUwotCQkJCTY4MjAtSCBPUkFOR0UgVEhPUlBFIEFWRS4KLQkJCQlCVUVOQSBQQVJLIENBIDkwNjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1GNSAgIChoZXgpCQlXaWxkIExhYi4gTHRkLgotMDAzMEY1ICAgICAoYmFzZSAxNikJCVdpbGQgTGFiLiBMdGQuCi0JCQkJMS0zMy0xNy02MDQgSGFyYXlhbWEKLQkJCQlVcmF3YSBDaXR5IFNhaXRhbWEgcHJpZi4gMzM2LTA5MzEgCi0JCQkJSkFQQU4KLQotMDAtMzAtRjYgICAoaGV4KQkJU0VDVVJFTE9HSVggQ09SUE9SQVRJT04KLTAwMzBGNiAgICAgKGJhc2UgMTYpCQlTRUNVUkVMT0dJWCBDT1JQT1JBVElPTgotCQkJCTEzNzUwIFNBTiBQRURSTwotCQkJCVNBTiBBTlRPTklPIFRYIDc4MjMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1GNyAgIChoZXgpCQlSQU1JWCBJTkMuCi0wMDMwRjcgICAgIChiYXNlIDE2KQkJUkFNSVggSU5DLgotCQkJCTE2NzIgRE9OTE9OIFNUUkVFVAotCQkJCVZFTlRVUkEgQ0EgOTMwMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTMwLUY4ICAgKGhleCkJCUR5bmFwcm8gU3lzdGVtcywgSW5jLgotMDAzMEY4ICAgICAoYmFzZSAxNikJCUR5bmFwcm8gU3lzdGVtcywgSW5jLgotCQkJCTgwMCBDYXJsZXRvbiBDb3VydAotCQkJCUFubmFjaXMgSXNsYW5kCi0JCQkJTmV3IFdlc3RtaW5zdGVyIEJyaXRpc2ggQ29sdW1iaWEgVjNNIDZMMyAKLQkJCQlDQU5BREEKLQotMDAtMzAtRjkgICAoaGV4KQkJU29sbGFlIFN5c3RlbXMgQ28uLCBMdGQuCi0wMDMwRjkgICAgIChiYXNlIDE2KQkJU29sbGFlIFN5c3RlbXMgQ28uLCBMdGQuCi0JCQkJNjA3IEluY2hlbyBJVCBUb3dlcgotCQkJCTU5Mi01LCBEb2h3YS0xLWRvbmcKLQkJCQlOYW0tZ3UgSW5jaGVvbiAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtMzAtRkEgICAoaGV4KQkJVEVMSUNBLCBJTkMuCi0wMDMwRkEgICAgIChiYXNlIDE2KQkJVEVMSUNBLCBJTkMuCi0JCQkJNzM0IEZPUkVTVCBTVFJFRVQsIEJMREcuCi0JCQkJU1VJVEUgIzEwMAotCQkJCU1BUkxCT1JPIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zMC1GQiAgIChoZXgpCQlBWlMgVGVjaG5vbG9neSBBRwotMDAzMEZCICAgICAoYmFzZSAxNikJCUFaUyBUZWNobm9sb2d5IEFHCi0JCQkJU3RlaW5iZWlzc3RyYXNzZSAyLTQKLQkJCQk3MjUxMCBTdGV0dGVuIEEuSy5NLiAgCi0JCQkJR0VSTUFOWQotCi0wMC0zMC1GQyAgIChoZXgpCQlUZXJhd2F2ZSBDb21tdW5pY2F0aW9ucywgSW5jLgotMDAzMEZDICAgICAoYmFzZSAxNikJCVRlcmF3YXZlIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMzA2OTUgSHVudHdvb2QgQXZlbnVlCi0JCQkJSGF5d2FyZCBDQSA5NDU0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRkQgICAoaGV4KQkJSU5URUdSQVRFRCBTWVNURU1TIERFU0lHTgotMDAzMEZEICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgU1lTVEVNUyBERVNJR04KLQkJCQkzNjUwLUcgQ0VOVFJFIENJUkNMRSBEUklWRQotCQkJCUZPUlQgTUlMTCBTQyAyOTcxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzAtRkUgICAoaGV4KQkJRFNBIEdtYkgKLTAwMzBGRSAgICAgKGJhc2UgMTYpCQlEU0EgR21iSAotCQkJCVBhc2NhbHN0ci4gMjgKLQkJCQk1MjA3NiBBYWNoZW4gIAotCQkJCUdFUk1BTlkKLQotMDAtMzAtRkYgICAoaGV4KQkJREFUQUZBQiBTWVNURU1TLCBJTkMuCi0wMDMwRkYgICAgIChiYXNlIDE2KQkJREFUQUZBQiBTWVNURU1TLCBJTkMuCi0JCQkJUk9PTSAjMTkxMCwgMTlGLCBOTy4gMzMzCi0JCQkJS0VFTFVORyBST0FEIFNFQy4gMSwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTMzLTZDICAgKGhleCkJCVN5bmFwU2Vuc2UgQ29ycG9yYXRpb24KLTAwMzM2QyAgICAgKGJhc2UgMTYpCQlTeW5hcFNlbnNlIENvcnBvcmF0aW9uCi0JCQkJMjM2NSBJcm9uIFBvaW50IFJvYWQsIFN1aXRlIDEwMAotCQkJCUZvbHNvbSBDQSA5NTYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzQtRjEgICAoaGV4KQkJUmFkaWNvbSBSZXNlYXJjaCwgSW5jLgotMDAzNEYxICAgICAoYmFzZSAxNikJCVJhZGljb20gUmVzZWFyY2gsIEluYy4KLQkJCQkyMTQ4IEJlcmluZyBEcml2ZQotCQkJCVNhbiBKb3NlIENhIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zNS0zMiAgIChoZXgpCQlFbGVjdHJvLU1ldHJpY3MgQ29ycG9yYXRpb24KLTAwMzUzMiAgICAgKGJhc2UgMTYpCQlFbGVjdHJvLU1ldHJpY3MgQ29ycG9yYXRpb24KLQkJCQkyMzEgRW50ZXJwcmlzZSBSb2FkCi0JCQkJSm9obnN0b3duIE5ldyBZb3JrIDEyMDk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC0zNi1GOCAgIChoZXgpCQlDb250aSBUZW1pYyBtaWNyb2VsZWN0cm9uaWMgR21iSAotMDAzNkY4ICAgICAoYmFzZSAxNikJCUNvbnRpIFRlbWljIG1pY3JvZWxlY3Ryb25pYyBHbWJICi0JCQkJRG9ybmllcnN0cmHvv71lIDEKLQkJCQlNYXJrZG9yZiAgODg2NzcKLQkJCQlHRVJNQU5ZCi0KLTAwLTM2LUZFICAgKGhleCkJCVN1cGVyVmlzaW9uCi0wMDM2RkUgICAgIChiYXNlIDE2KQkJU3VwZXJWaXNpb24KLQkJCQlwbyBib3ggMzQ3MgotCQkJCXBhbG9zIHZlcmRlcyBDQSA5MDI3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtMzctNkQgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0wMDM3NkQgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0JCQkJMS0xMC0xLEhpZ2FzaGlrb3RhcmkKLQkJCQlOYWdhb2tha3lvLXNoaSBLeW90byA2MTctODU1NQotCQkJCUpBUEFOCi0KLTAwLTNBLTk4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwM0E5OCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTNBLTk5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwM0E5OSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTNBLTlBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwM0E5QSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTNBLTlCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwM0E5QiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTNBLTlDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTAwM0E5QyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTNBLTlEICAgKGhleCkJCU5FQyBBY2Nlc3NUZWNobmljYSwgTHRkLgotMDAzQTlEICAgICAoYmFzZSAxNikJCU5FQyBBY2Nlc3NUZWNobmljYSwgTHRkLgotCQkJCTgwMCBTaGltb21hdGEKLQkJCQlLYWtlZ2F3YSBTaGl6dW9rYSA0MzYtODUwMQotCQkJCUpBUEFOCi0KLTAwLTNBLUFGICAgKGhleCkJCUJsdWVCaXQgTHRkLgotMDAzQUFGICAgICAoYmFzZSAxNikJCUJsdWVCaXQgTHRkLgotCQkJCVVuaXQgQiwgMjEvRi4sIDc4IEh1bmcgVG8gUm9hZCwKLQkJCQlLd3VuIFRvbmcsIAotCQkJCUtvd2xvb24sICAgCi0JCQkJSE9ORyBLT05HCi0KLTAwLTNDLUM1ICAgKGhleCkJCVdPTldPTyBFbmdpbmVlcmluZyBDby4sIEx0ZAotMDAzQ0M1ICAgICAoYmFzZSAxNikJCVdPTldPTyBFbmdpbmVlcmluZyBDby4sIEx0ZAotCQkJCTdGIDIwMSwgVGVjaG5vLVBhcmsgU3NhbmdZb25nIElJSSwgCi0JCQkJMzYtMSBTYW1qZW9uZy1kb25nIE9qZW9uZy1ndSwKLQkJCQlCdWNoZW9uIENpdHkgR3llb25nZ2ktRG8gNDIxLTgwOAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC0zRC00MSAgIChoZXgpCQlIYXR0ZWxhbmQgQ29tcHV0ZXIgQVMKLTAwM0Q0MSAgICAgKGJhc2UgMTYpCQlIYXR0ZWxhbmQgQ29tcHV0ZXIgQVMKLQkJCQlBYW1zb3NlbgotCQkJCU5lZHJlIFZhdHMgUm9nYWxhbmQgNTU3OAotCQkJCU5PUldBWQotCi0wMC0zRS1FMSAgIChoZXgpCQlBcHBsZSwgSW5jLgotMDAzRUUxICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBpbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0wMCAgIChoZXgpCQlQQ0kgQ09NUE9ORU5URVMgREEgQU1aT05JQSBMVEQKLTAwNDAwMCAgICAgKGJhc2UgMTYpCQlQQ0kgQ09NUE9ORU5URVMgREEgQU1aT05JQSBMVEQKLQkJCQlSVUEgSk9TRUYgS1JZU1MKLQkJCQkxMjkgLSBTQU8gUEFVTE8gLSBTUAotCQkJCTAxMTQwIEJSQVNJTAotCQkJCUJSQVpJTAotCi0wMC00MC0wMSAgIChoZXgpCQlaZXJvIE9uZSBUZWNobm9sb2d5IENvLiBMdGQuCi0wMDQwMDEgICAgIChiYXNlIDE2KQkJWmVybyBPbmUgVGVjaG5vbG9neSBDby4gTHRkLgotCQkJCTEwIEZsLiwgTm8uIDgsIExhbmUgMzYwLCBTZWMgMSwgCi0JCQkJTmVpaHUgUm9hZAotCQkJCU5laWh1IERpc3QuLCBUYWlwZWkgQ2l0eSAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTAyICAgKGhleCkJCVBFUkxFIFNZU1RFTVMgTElNSVRFRAotMDA0MDAyICAgICAoYmFzZSAxNikJCVBFUkxFIFNZU1RFTVMgTElNSVRFRAotCQkJCTYwIFJFTkZSRVcgRFJJVkUKLQkJCQlNQVJLSEFNIE9OVEFSSU8KLQkJCQlDQU5BREEgTDNSIDBFMQotCQkJCUNBTkFEQQotCi0wMC00MC0wMyAgIChoZXgpCQlFbWVyc29uIFByb2Nlc3MgTWFuYWdlbWVudCBQb3dlciAmIFdhdGVyIFNvbHV0aW9ucywgSW5jLgotMDA0MDAzICAgICAoYmFzZSAxNikJCUVtZXJzb24gUHJvY2VzcyBNYW5hZ2VtZW50IFBvd2VyICYgV2F0ZXIgU29sdXRpb25zLCBJbmMuCi0JCQkJMjAwIEJldGEgRHJpdmUKLQkJCQlQSVRUU0JVUkdIIFBBIDE1MjM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0wNCAgIChoZXgpCQlJQ00gQ08uIExURC4KLTAwNDAwNCAgICAgKGJhc2UgMTYpCQlJQ00gQ08uIExURC4KLQkJCQk0LTItOSBOSUhPTkJBU0hJIE5BTklXQS1LVQotCQkJCU9TQUtBLCAoNTU2KQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtMDUgICAoaGV4KQkJQU5JIENPTU1VTklDQVRJT05TIElOQy4KLTAwNDAwNSAgICAgKGJhc2UgMTYpCQlBTkkgQ09NTVVOSUNBVElPTlMgSU5DLgotCQkJCTggQU5aSU8KLQkJCQlJUlZJTkUgQ0EgOTI3MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTA2ICAgKGhleCkJCVNBTVBPIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLTAwNDAwNiAgICAgKGJhc2UgMTYpCQlTQU1QTyBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0JCQkJMjYtMiBUSU5HLUhVLAotCQkJCVRBLUtBTkcgVFNVTiBLVUVJLVNIQU4gSFNJQU5HLCBUQU9ZVUFOIEgKLQkJCQkzMzMzNCBUQUlXQU4gMzMzMzQgVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtMDcgICAoaGV4KQkJVEVMTUFUIElORk9STUFUSVFVRQotMDA0MDA3ICAgICAoYmFzZSAxNikJCVRFTE1BVCBJTkZPUk1BVElRVUUKLQkJCQk2IFJVRSBERSBMJ0lORFVTVFJJRQotCQkJCUJQIDEyICA2ODM2MCBTT1VMVFoKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNDAtMDggICAoaGV4KQkJQSBQTFVTIElORk8gQ09SUE9SQVRJT04KLTAwNDAwOCAgICAgKGJhc2UgMTYpCQlBIFBMVVMgSU5GTyBDT1JQT1JBVElPTgotCQkJCTVGLCBOTy4yLCBMQU5FIDIzNQotCQkJCUJBTyBDSElBTyBST0FEIEhTSU4gVElFTiwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTA5ICAgKGhleCkJCVRBQ0hJQkFOQSBURUNUUk9OIENPLiwgTFRELgotMDA0MDA5ICAgICAoYmFzZSAxNikJCVRBQ0hJQkFOQSBURUNUUk9OIENPLiwgTFRELgotCQkJCVNZU1RFTUFUSUMgRVFVSVBNRU5UIERJVklTSU9OCi0JCQkJMi0yLTUgSElHQVNISVlBTUEsIE1FR1VST0tVIFRPS1lPLCAxNTMKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTBBICAgKGhleCkJCVBJVk9UQUwgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDQwMEEgICAgIChiYXNlIDE2KQkJUElWT1RBTCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMDAgVy4gUklOQ09OIEFWRU5VRS1TVEUgIzIxMQotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0wQiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDQwMEIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTBDICAgKGhleCkJCUdFTkVSQUwgTUlDUk8gU1lTVEVNUywgSU5DLgotMDA0MDBDICAgICAoYmFzZSAxNikJCUdFTkVSQUwgTUlDUk8gU1lTVEVNUywgSU5DLgotCQkJCVAuTy4gQk9YIDM2ODkKLQkJCQlSQU5DSE8gQ1VDQU1PTkdBIENBIDkxNzI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0wRCAgIChoZXgpCQlMQU5ORVQgREFUQSBDT01NVU5JQ0FUSU9OUyxMVEQKLTAwNDAwRCAgICAgKGJhc2UgMTYpCQlMQU5ORVQgREFUQSBDT01NVU5JQ0FUSU9OUyxMVEQKLQkJCQlBVElESU0gVEVDSE5PTE9HJ0wgUEFSSywgQkcuIzMKLQkJCQlURUwgQVZJViA2MTEzMQotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC00MC0wRSAgIChoZXgpCQlNRU1PVEVDLCBJTkMuCi0wMDQwMEUgICAgIChiYXNlIDE2KQkJTUVNT1RFQywgSU5DLgotCQkJCTc3NTUgSGVucmktQm91cmFzc2EKLQkJCQlNT05UUkVBTCwgUVVFQkVDICAgSDRTIDFQNwotCQkJCUNBTkFEQQotCi0wMC00MC0wRiAgIChoZXgpCQlEQVRBQ09NIFRFQ0hOT0xPR0lFUwotMDA0MDBGICAgICAoYmFzZSAxNikJCURBVEFDT00gVEVDSE5PTE9HSUVTCi0JCQkJMTEwMDEgMzFTVCBQTEFDRSBXRVNUCi0JCQkJRVZFUkVUVCBXQSA5ODIwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMTAgICAoaGV4KQkJU09OSUMgU1lTVEVNUywgSU5DLgotMDA0MDEwICAgICAoYmFzZSAxNikJCVNPTklDIFNZU1RFTVMsIElOQy4KLQkJCQk1NzUgUEFTVE9SSUEgTk9SVEggQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMTEgICAoaGV4KQkJQU5ET1ZFUiBDT05UUk9MUyBDT1JQT1JBVElPTgotMDA0MDExICAgICAoYmFzZSAxNikJCUFORE9WRVIgQ09OVFJPTFMgQ09SUE9SQVRJT04KLQkJCQkzMDAgQlJJQ0tTVE9ORSBTUVVBUkUKLQkJCQlBTkRPVkVSIE1BIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xMiAgIChoZXgpCQlXSU5EQVRBLCBJTkMuCi0wMDQwMTIgICAgIChiYXNlIDE2KQkJV0lOREFUQSwgSU5DLgotCQkJCTEwIEJFQVJGT09UIFJPQUQKLQkJCQlOT1JUSEJPUk8gTUEgMDE1MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTEzICAgKGhleCkJCU5UVCBEQVRBIENPTU0uIFNZU1RFTVMgQ09SUC4KLTAwNDAxMyAgICAgKGJhc2UgMTYpCQlOVFQgREFUQSBDT01NLiBTWVNURU1TIENPUlAuCi0JCQkJREVWRUxPUE1FTlQgSEVBRFFVQVJURVJTCi0JCQkJVE9ZT1NVIENFTlRFUiBCTERHLiwgMy0zLTMgVE9ZT1NVLCBLT1RPLQotCQkJCVRPS1lPIDEzNSBUT0tZTyAxMzUgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0xNCAgIChoZXgpCQlDT01TT0ZUIEdNQkgKLTAwNDAxNCAgICAgKGJhc2UgMTYpCQlDT01TT0ZUIEdNQkgKLQkJCQlXQUNISEFVU1NUUi4gNUEKLQkJCQk3NTAwIEtBUkxTUlVIRSA0MQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLTE1ICAgKGhleCkJCUFTQ09NIElORlJBU1lTIEFHCi0wMDQwMTUgICAgIChiYXNlIDE2KQkJQVNDT00gSU5GUkFTWVMgQUcKLQkJCQlEUFQuIEVBU08gMzcyNgotCQkJCUdMVVRaLUJMT1RaSEVJTVNUUi4gMSBDSC00NTAzICBTT0xPVEhVUk4KLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTQwLTE2ICAgKGhleCkJCUFEQyAtIEdsb2JhbCBDb25uZWN0aXZpdHkgU29sdXRpb25zIERpdmlzaW9uCi0wMDQwMTYgICAgIChiYXNlIDE2KQkJQURDIC0gR2xvYmFsIENvbm5lY3Rpdml0eSBTb2x1dGlvbnMgRGl2aXNpb24KLQkJCQlQLk8uIEJveCAxMTAxCi0JCQkJTWlubmVhcG9saXMgTU4gNTU0NDAtMTEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMTcgICAoaGV4KQkJU2lsZXggVGVjaG5vbG9neSBBbWVyaWNhCi0wMDQwMTcgICAgIChiYXNlIDE2KQkJU2lsZXggVGVjaG5vbG9neSBBbWVyaWNhCi0JCQkJMTU3IFdlc3QgNzA2NSBTb3V0aAotCQkJCVNhbHQgTGFrZSBDaXR5IFVUIDg0MDQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xOCAgIChoZXgpCQlBRE9CRSBTWVNURU1TLCBJTkMuCi0wMDQwMTggICAgIChiYXNlIDE2KQkJQURPQkUgU1lTVEVNUywgSU5DLgotCQkJCTE1ODUgQ0hBUkxFU1RPTiBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMTkgICAoaGV4KQkJQUVPTiBTWVNURU1TLCBJTkMuCi0wMDQwMTkgICAgIChiYXNlIDE2KQkJQUVPTiBTWVNURU1TLCBJTkMuCi0JCQkJODQwMSBXQVNISU5HVE9OIFBMQUNFIE5FCi0JCQkJQUxCVVFVRVJRVUUgTk0gODcxMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTFBICAgKGhleCkJCUZVSkkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDQwMUEgICAgIChiYXNlIDE2KQkJRlVKSSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQlORVcgWVVSQUtVQ0hPIEJMREcKLQkJCQkxMi0xIFlVUkFLVUNITyAxLUNIT01FIENISVlPREEtS1UsIFRPS1lPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0xQiAgIChoZXgpCQlQUklOVEVSIFNZU1RFTVMgQ09SUC4KLTAwNDAxQiAgICAgKGJhc2UgMTYpCQlQUklOVEVSIFNZU1RFTVMgQ09SUC4KLQkJCQkyMDcgUEVSUlkgUEFSS1dBWQotCQkJCUdBSVRIRVJTQlVSRyBNRCAyMDg3Ny0yMTQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xQyAgIChoZXgpCQlBU1QgUkVTRUFSQ0gsIElOQy4KLTAwNDAxQyAgICAgKGJhc2UgMTYpCQlBU1QgUkVTRUFSQ0gsIElOQy4KLQkJCQlNUyAyLTc4Ci0JCQkJMTYxNSBBTFRPTiBQQVJLV0FZCi0JCQkJSVJWSU5FIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0xRCAgIChoZXgpCQlJTlZJU0lCTEUgU09GVFdBUkUsIElOQy4KLTAwNDAxRCAgICAgKGJhc2UgMTYpCQlJTlZJU0lCTEUgU09GVFdBUkUsIElOQy4KLQkJCQkxMTQyIENIRVNTIERSSVZFCi0JCQkJRk9TVEVSIENJVFkgQ0EgOTQ0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTFFICAgKGhleCkJCUlDQwotMDA0MDFFICAgICAoYmFzZSAxNikJCUlDQwotCQkJCTgyMzAgTU9OVEdPTUVSWSBST0FECi0JCQkJQ0lOQ0lOTkFUSSBPSCA0NTIzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMUYgICAoaGV4KQkJQ09MT1JHUkFQSCBMVEQKLTAwNDAxRiAgICAgKGJhc2UgMTYpCQlDT0xPUkdSQVBIIExURAotCQkJCVVOSVQgMiwgTUFSUyBIT1VTRQotCQkJCUNBTExFVkEgUEFSSywgQUxERVJNQVNUT04gTlIuIFJFQURJTkcsIEIKLQkJCQlSRzcgNFFXIC0gVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC0yMCAgIChoZXgpCQlURSBDb25uZWN0aXZpdHkgTHRkLgotMDA0MDIwICAgICAoYmFzZSAxNikJCVRFIENvbm5lY3Rpdml0eSBMdGQuCi0JCQkJS2lubWVsIFBhcmsKLQkJCQlCb2RlbHd5ZGRhbiBSSFlMIExMMTggNVRaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtMjEgICAoaGV4KQkJUkFTVEVSIEdSQVBISUNTCi0wMDQwMjEgICAgIChiYXNlIDE2KQkJUkFTVEVSIEdSQVBISUNTCi0JCQkJMjg1IE4uIFdPTEZFIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTIyICAgKGhleCkJCUtMRVZFUiBDT01QVVRFUlMsIElOQy4KLTAwNDAyMiAgICAgKGJhc2UgMTYpCQlLTEVWRVIgQ09NUFVURVJTLCBJTkMuCi0JCQkJMTAyOCBXLiBNQVVERSBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTIzICAgKGhleCkJCUxPR0lDIENPUlBPUkFUSU9OCi0wMDQwMjMgICAgIChiYXNlIDE2KQkJTE9HSUMgQ09SUE9SQVRJT04KLQkJCQkzLTE0LTEwIE1FSUpJLVNFSU1FSSBCVUlMRElORwotCQkJCU1JVEEgTUlOQVRPLUtVIFRPS1lPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0yNCAgIChoZXgpCQlDT01QQUMgSU5DLgotMDA0MDI0ICAgICAoYmFzZSAxNikJCUNPTVBBQyBJTkMuCi0JCQkJMTYtNyBOSUhPTkJBU0kgSEFNQUNITyAzLUNITwotCQkJCUNIVU8tS1UsIFRPS1lPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0yNSAgIChoZXgpCQlNT0xFQ1VMQVIgRFlOQU1JQ1MKLTAwNDAyNSAgICAgKGJhc2UgMTYpCQlNT0xFQ1VMQVIgRFlOQU1JQ1MKLQkJCQk4ODAgRUFTVCBBUlFVRVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2LTQ1MzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTI2ICAgKGhleCkJCUJ1ZmZhbG8sIEluYwotMDA0MDI2ICAgICAoYmFzZSAxNikJCUJ1ZmZhbG8sIEluYwotCQkJCU1FTENPIEhJLVRFQ0ggQ0VOVEVSLAotCQkJCTQtMTUgIFNoaWJhdGEsIEhvbmRvcmksIAotCQkJCU1JTkFNSS1LVSwgTkFHT1lBIEFpY2hpIDQ1Ny04NTIwCi0JCQkJSkFQQU4KLQotMDAtNDAtMjcgICAoaGV4KQkJU01DIE1BU1NBQ0hVU0VUVFMsIElOQy4KLTAwNDAyNyAgICAgKGJhc2UgMTYpCQlTTUMgTUFTU0FDSFVTRVRUUywgSU5DLgotCQkJCTI1IFdBTEtFUlMgQlJPT0sgRFJJVkUKLQkJCQlSRUFESU5HIE1BIDAxODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0yOCAgIChoZXgpCQlORVRDT01NIExJTUlURUQKLTAwNDAyOCAgICAgKGJhc2UgMTYpCQlORVRDT01NIExJTUlURUQKLQkJCQkzIE9MWU1QSUMgQlVTSU5FU1MgQ0VOVFJFCi0JCQkJUEFZQ09DS0UgUk9BRCBCQVNJTERPTiwgRVNTRVggU1MxNCAzRVgKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTI5ICAgKGhleCkJCUNPTVBFWAotMDA0MDI5ICAgICAoYmFzZSAxNikJCUNPTVBFWAotCQkJCUIuUC4gMzUKLQkJCQk3NDM3MSBQUklOR1ktRlJBTkNFCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTQwLTJBICAgKGhleCkJCUNBTk9HQS1QRVJLSU5TCi0wMDQwMkEgICAgIChiYXNlIDE2KQkJQ0FOT0dBLVBFUktJTlMKLQkJCQkyMTAxMiBMQVNTRU4gU1RSRUVUCi0JCQkJQ0hBVFNXT1JUSCBDQSA5MTMxMS00MjQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0yQiAgIChoZXgpCQlUUklHRU0gQ09NUFVURVIsIElOQy4KLTAwNDAyQiAgICAgKGJhc2UgMTYpCQlUUklHRU0gQ09NUFVURVIsIElOQy4KLQkJCQlLSVNVTkcgQi9EIDRGLCA3ODQtNgotCQkJCVlFT0tTQU0tRE9ORywgS0FOR05BTS1HVQotCQkJCVNFT1VMIEtPUkVBIDEzNS0wODAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNDAtMkMgICAoaGV4KQkJSVNJUyBESVNUUklCVVRFRCBTWVNURU1TLCBJTkMuCi0wMDQwMkMgICAgIChiYXNlIDE2KQkJSVNJUyBESVNUUklCVVRFRCBTWVNURU1TLCBJTkMuCi0JCQkJMTExIFNPVVRIIENBWVVHQSBTVFJFRVQKLQkJCQlTVUlURSAjMjAwCi0JCQkJSVRIQUNBIE5ZIDE0ODUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0yRCAgIChoZXgpCQlIQVJSSVMgQURBQ09NIENPUlBPUkFUSU9OCi0wMDQwMkQgICAgIChiYXNlIDE2KQkJSEFSUklTIEFEQUNPTSBDT1JQT1JBVElPTgotCQkJCTExMDAgVkVOVFVSRSBDT1VSVAotCQkJCUNBUlJPTExUT04gVFggNzUwMDYtNTQxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMkUgICAoaGV4KQkJUFJFQ0lTSU9OIFNPRlRXQVJFLCBJTkMuCi0wMDQwMkUgICAgIChiYXNlIDE2KQkJUFJFQ0lTSU9OIFNPRlRXQVJFLCBJTkMuCi0JCQkJNjAwIFMgRkVERVJBTCBIV1kgU1RFCi0JCQkJREVFUkZJRUxEIEJFQUNIIEZMIDMzNDQxLTQxOTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTJGICAgKGhleCkJCVhMTlQgREVTSUdOUyBJTkMuCi0wMDQwMkYgICAgIChiYXNlIDE2KQkJWExOVCBERVNJR05TIElOQy4KLQkJCQkxNTA1MCBBVkVOVUUgT0YgU0NJRU5DRQotCQkJCVNVSVRFIDIwMAotCQkJCVNBTiBESUVHTyBDQSA5MjEyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMzAgICAoaGV4KQkJR0sgQ09NUFVURVIKLTAwNDAzMCAgICAgKGJhc2UgMTYpCQlHSyBDT01QVVRFUgotCQkJCUJBU0xFUiBTVFJBU1NFIDEwMwotCQkJCUQtNzgwMCBGUkVJQlVSRwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLTMxICAgKGhleCkJCUtPS1VTQUkgRUxFQ1RSSUMgQ08uLCBMVEQKLTAwNDAzMSAgICAgKGJhc2UgMTYpCQlLT0tVU0FJIEVMRUNUUklDIENPLiwgTFRECi0JCQkJMi0xIFlBU1VVQ0hJCi0JCQkJWUFUU1VPLU1BQ0hJIE5FSUdVTgotCQkJCVRPWUFNQSA5MzktMjMgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0zMiAgIChoZXgpCQlESUdJVEFMIENPTU1VTklDQVRJT05TCi0wMDQwMzIgICAgIChiYXNlIDE2KQkJRElHSVRBTCBDT01NVU5JQ0FUSU9OUwotCQkJCUFTU09DSUFURVMsIElOQy4KLQkJCQkyMDEwIEZPUlRVTkUgRFJJVkUsICMxMDEKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMzMgICAoaGV4KQkJQUREVFJPTiBURUNITk9MT0dZIENPLiwgTFRELgotMDA0MDMzICAgICAoYmFzZSAxNikJCUFERFRST04gVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQk0NjU2MCBGUkVNT05UIEJMVkQuICMzMDMKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zNCAgIChoZXgpCQlCVVNURUsgQ09SUE9SQVRJT04KLTAwNDAzNCAgICAgKGJhc2UgMTYpCQlCVVNURUsgQ09SUE9SQVRJT04KLQkJCQk0MTUxIEJVUlRPTiBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zNSAgIChoZXgpCQlPUENPTQotMDA0MDM1ICAgICAoYmFzZSAxNikJCU9QQ09NCi0JCQkJMTIxNSBXLiBDUk9TQlkgUkQuCi0JCQkJQ0FSUk9MTFRPTiBUWCA3NTAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtMzYgICAoaGV4KQkJVFJJQkUgQ09NUFVURVIgV09SS1MsIElOQy4KLTAwNDAzNiAgICAgKGJhc2UgMTYpCQlUUklCRSBDT01QVVRFUiBXT1JLUywgSU5DLgotCQkJCTExOTUgUEFSSyBBVkVOVUUtU1RFICMyMTEKLQkJCQlFTUVSWVZJTExFIENBIDk0NjA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zNyAgIChoZXgpCQlTRUEtSUxBTiwgSU5DLgotMDA0MDM3ICAgICAoYmFzZSAxNikJCVNFQS1JTEFOLCBJTkMuCi0JCQkJMTQ2MDIgTk9SVEggVVMgSElHSFdBWSAjMzEKLQkJCQlDQVJNRUwgSU4gNDYwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTM4ICAgKGhleCkJCVRBTEVOVCBFTEVDVFJJQyBJTkNPUlBPUkFURUQKLTAwNDAzOCAgICAgKGJhc2UgMTYpCQlUQUxFTlQgRUxFQ1RSSUMgSU5DT1JQT1JBVEVECi0JCQkJM1JEIEZMLiwgTk8uIDI2MCwgUEEgVEVIIFJPQUQKLQkJCQlTRUMuIDIgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTM5ICAgKGhleCkJCU9QVEVDIERBSUlDSEkgREVOS08gQ08uLCBMVEQuCi0wMDQwMzkgICAgIChiYXNlIDE2KQkJT1BURUMgREFJSUNISSBERU5LTyBDTy4sIExURC4KLQkJCQlGSUJFUiBPUFRJQ1MgJiBURUxFQ09NLiBESVYuCi0JCQkJMy0xLTEgTUFSVU5PVUNISSBDSElZT0RBS1UgVE9LWU8gMTAwCi0JCQkJSkFQQU4KLQotMDAtNDAtM0EgICAoaGV4KQkJSU1QQUNUIFRFQ0hOT0xPR0lFUwotMDA0MDNBICAgICAoYmFzZSAxNikJCUlNUEFDVCBURUNITk9MT0dJRVMKLQkJCQk2IFJVRSBERSBMJ0FDQURJRQotCQkJCVouQS4gQ09VUlRBQk9FVUYgOTE5NTMgTEVTIFVMSVMgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNDAtM0IgICAoaGV4KQkJU1lORVJKRVQgSU5URVJOQVRJT05BTCBDT1JQLgotMDA0MDNCICAgICAoYmFzZSAxNikJCVNZTkVSSkVUIElOVEVSTkFUSU9OQUwgQ09SUC4KLQkJCQk1RiwgTk8gMzUsIEtVQU5HIEZVIFMuIFJPQUQKLQkJCQlUQUlQRUksCi0JCQkJVEFJV0FOIFIuIE8uIEMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC0zQyAgIChoZXgpCQlGT1JLUywgSU5DLgotMDA0MDNDICAgICAoYmFzZSAxNikJCUZPUktTLCBJTkMuCi0JCQkJMS0yNy00IElSSVlBLAotCQkJCUlSSVlBIDEtMjctNCBUQUlUTywKLQkJCQkxMTAgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC0zRCAgIChoZXgpCQlUZXJhZGF0YSBDb3Jwb3JhdGlvbgotMDA0MDNEICAgICAoYmFzZSAxNikJCVRlcmFkYXRhIENvcnBvcmF0aW9uCi0JCQkJMTcwOTUgVmlhIERlbCBDYW1wbwotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtM0UgICAoaGV4KQkJUkFTVEVSIE9QUyBDT1JQT1JBVElPTgotMDA0MDNFICAgICAoYmFzZSAxNikJCVJBU1RFUiBPUFMgQ09SUE9SQVRJT04KLQkJCQkyNTAwIFdBTFNIIEFWRU5VRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC0zRiAgIChoZXgpCQlTU0FOR1lPTkcgQ09NUFVURVIgU1lTVEVNUwotMDA0MDNGICAgICAoYmFzZSAxNikJCVNTQU5HWU9ORyBDT01QVVRFUiBTWVNURU1TCi0JCQkJQ09SUE9SQVRJT04KLQkJCQk2MC0xLCAzR0EsIENIVU5HTVUtUk8sIEpVTkctR1UgU0VPVUwKLQkJCQlLT1JFQSAxMDAtNzA1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTQwLTQwICAgKGhleCkJCVJJTkcgQUNDRVNTLCBJTkMuCi0wMDQwNDAgICAgIChiYXNlIDE2KQkJUklORyBBQ0NFU1MsIElOQy4KLQkJCQk5NTctUiBJTkRVU1RSSUFMIFJPQUQKLQkJCQlTQU4gQ0FSTE9TIENBIDk0MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC00MSAgIChoZXgpCQlGVUpJS1VSQSBMVEQuCi0wMDQwNDEgICAgIChiYXNlIDE2KQkJRlVKSUtVUkEgTFRELgotCQkJCTEtNS0xLCBLSUJBLCBLT1RPLUtVCi0JCQkJVE9LWU8gMTM1Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC00MiAgIChoZXgpCQlOLkEuVC4gR01CSAotMDA0MDQyICAgICAoYmFzZSAxNikJCU4uQS5ULiBHTUJICi0JCQkJR09FVEhFU1RSLiAyCi0JCQkJNTIxMCBUUk9JU0RPUkYtU0lFR0xBUgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLTQzICAgKGhleCkJCU5va2lhIFNpZW1lbnMgTmV0d29ya3MgR21iSCAmIENvLiBLRy4KLTAwNDA0MyAgICAgKGJhc2UgMTYpCQlOb2tpYSBTaWVtZW5zIE5ldHdvcmtzIEdtYkggJiBDby4gS0cuCi0JCQkJV2VybmVyLXZvbi1TaWVtZW5zIFN0ci4gMi02Ci0JCQkJQnJ1Y2hzYWwgQmFkZW4tV8O8cnRlbWJlcmcgNzY2NDYKLQkJCQlGSU5MQU5ECi0KLTAwLTQwLTQ0ICAgKGhleCkJCVFOSVggQ09NUFVURVIgQ08uLCBMVEQuCi0wMDQwNDQgICAgIChiYXNlIDE2KQkJUU5JWCBDT01QVVRFUiBDTy4sIExURC4KLQkJCQk4LDlGIEtPUkVBTiBURUFDSEVSJ1MgTVVULkJMREcKLQkJCQkzNS0zLCBZRU9VSURPX0RPTkcsIFlFT05HREVVTkdQT19HVQotCQkJCVNFT1VMIEtPUkVBIDE1MC0wMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNDAtNDUgICAoaGV4KQkJVFdJTkhFQUQgQ09SUE9SQVRJT04KLTAwNDA0NSAgICAgKGJhc2UgMTYpCQlUV0lOSEVBRCBDT1JQT1JBVElPTgotCQkJCTE1MzcgQ0VOVFJFIFBPSU5URSBEUklWRQotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC00NiAgIChoZXgpCQlVREMgUkVTRUFSQ0ggTElNSVRFRAotMDA0MDQ2ICAgICAoYmFzZSAxNikJCVVEQyBSRVNFQVJDSCBMSU1JVEVECi0JCQkJOEEgS0lORyBXQU4gSU5EVVNUUklBTCBCTERHLgotCQkJCTU0IEhVTkcgVE8gUk9BRCwgS1dVTiBUT05HCi0JCQkJSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLTQwLTQ3ICAgKGhleCkJCVdJTkQgUklWRVIgU1lTVEVNUwotMDA0MDQ3ICAgICAoYmFzZSAxNikJCVdJTkQgUklWRVIgU1lTVEVNUwotCQkJCTEwMTAgQVRMQU5USUMgQVZFTlVFCi0JCQkJQUxBTUVEQSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNDggICAoaGV4KQkJU01EIElORk9STUFUSUNBIFMuQS4KLTAwNDA0OCAgICAgKGJhc2UgMTYpCQlTTUQgSU5GT1JNQVRJQ0EgUy5BLgotCQkJCUxBUkdPIE1PVklNRU5UTyBEQVMgRk9SQ0FTCi0JCQkJQVJNQURBUywgNCBBTEZSQUdJREUsICAyNzAwIEFNQURPUkEKLQkJCQlQT1JUVUdBTAotCQkJCVBPUlRVR0FMCi0KLTAwLTQwLTQ5ICAgKGhleCkJCVJvY2hlIERpYWdub3N0aWNzIEx0ZC4KLTAwNDA0OSAgICAgKGJhc2UgMTYpCQlSb2NoZSBEaWFnbm9zdGljcyBMdGQuCi0JCQkJRk9SUkVOU1RSQVNTRQotCQkJCTYzNDMgUk9US1JFVVoKLQkJCQlTV0lUWkVSTEFORAotCi0wMC00MC00QSAgIChoZXgpCQlXRVNUIEFVU1RSQUxJQU4gREVQQVJUTUVOVAotMDA0MDRBICAgICAoYmFzZSAxNikJCVdFU1QgQVVTVFJBTElBTiBERVBBUlRNRU5UCi0JCQkJT0YgRU1QTE9ZTUVOVCAoREVWRVQpCi0JCQkJTEVWRVIgMiwgMTUxIFJPWUFMIFNULiBFQVNUIFBFUlRIICA2MDAxCi0JCQkJV0VTVEVSTiBBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtNDAtNEIgICAoaGV4KQkJTUFQTEUgQ09NUFVURVIgU1lTVEVNUwotMDA0MDRCICAgICAoYmFzZSAxNikJCU1BUExFIENPTVBVVEVSIFNZU1RFTVMKLQkJCQlQLk8uIEJPWCAxMDA1MAotCQkJCVNULiBKT0hOJ1MsIE5GCi0JCQkJQ0FOQURBIEFMQSA0TDUKLQkJCQlDQU5BREEKLQotMDAtNDAtNEMgICAoaGV4KQkJSFlQRVJURUMgUFRZIExURC4KLTAwNDA0QyAgICAgKGJhc2UgMTYpCQlIWVBFUlRFQyBQVFkgTFRELgotCQkJCVAuTy4gQk9YIDE3ODIKLQkJCQlNQUNRVUFSSUUgQ0VOVFJFIE5TVywgMjExMwotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC00MC00RCAgIChoZXgpCQlURUxFQ09NTVVOSUNBVElPTlMgVEVDSE5JUVVFUwotMDA0MDREICAgICAoYmFzZSAxNikJCVRFTEVDT01NVU5JQ0FUSU9OUyBURUNITklRVUVTCi0JCQkJTS9TCi0JCQkJMjA0MDAgT0JTRVJWQVRJT04gRFJJVkUKLQkJCQlHRVJNQU5UT1dOIE1EIDIwODc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC00RSAgIChoZXgpCQlGTFVFTlQsIElOQy4KLTAwNDA0RSAgICAgKGJhc2UgMTYpCQlGTFVFTlQsIElOQy4KLQkJCQk1OTQgV09SQ0VTVEVSIFJPQUQtU1RFLiMzMDgKLQkJCQlOQVRJQ0sgTUEgMDE3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTRGICAgKGhleCkJCVNQQUNFICYgTkFWQUwgV0FSRkFSRSBTWVNURU1TCi0wMDQwNEYgICAgIChiYXNlIDE2KQkJU1BBQ0UgJiBOQVZBTCBXQVJGQVJFIFNZU1RFTVMKLQkJCQlOVVdDCi0JCQkJQ09ERSAyMjIyLCAgQkxERyAxMTcxLTMKLQkJCQlORVdQT1JUIFJJIDAyODQxLTUwNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTUwICAgKGhleCkJCUlST05JQ1MsIElOQ09SUE9SQVRFRAotMDA0MDUwICAgICAoYmFzZSAxNikJCUlST05JQ1MsIElOQ09SUE9SQVRFRAotCQkJCTc2NyBXQVJSRU4gUkQKLQkJCQlJVEhBQ0EgTi5ZLiAxNDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNTEgICAoaGV4KQkJR1JBQ0lMSVMsIElOQy4KLTAwNDA1MSAgICAgKGJhc2UgMTYpCQlHUkFDSUxJUywgSU5DLgotCQkJCTYyMyBQQUxBQ0UgU1RSRUVUCi0JCQkJQVVST1JBIElMIDYwNTA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC01MiAgIChoZXgpCQlTVEFSIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA0MDUyICAgICAoYmFzZSAxNikJCVNUQVIgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNTE1IFNIQVcgUk9BRAotCQkJCVNURVJMSU5HIFZBIDIyMDc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC01MyAgIChoZXgpCQlBTVBSTyBDT01QVVRFUlMKLTAwNDA1MyAgICAgKGJhc2UgMTYpCQlBTVBSTyBDT01QVVRFUlMKLQkJCQk5OTAgQUxNT05ET1IgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC01NCAgIChoZXgpCQlDT05ORUNUSU9OIE1BQ0hJTkVTIFNFUlZJQ0VTCi0wMDQwNTQgICAgIChiYXNlIDE2KQkJQ09OTkVDVElPTiBNQUNISU5FUyBTRVJWSUNFUwotCQkJCTEyIEhFTlNIQVcgU1RSRUVUCi0JCQkJV09CVVJOIE1BIDAxODAxLTQ2NjY2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNTUgICAoaGV4KQkJTUVUUk9OSVggR01CSAotMDA0MDU1ICAgICAoYmFzZSAxNikJCU1FVFJPTklYIEdNQkgKLQkJCQlORVVFIEtOT0NIRU5IQVVFUlNUUkFCRSA1Ci0JCQkJRC0zMzAwIEJSQVVOU0NIV0VJRwotCQkJCVdFU1QgR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtNTYgICAoaGV4KQkJTUNNIEpBUEFOIExURC4KLTAwNDA1NiAgICAgKGJhc2UgMTYpCQlNQ00gSkFQQU4gTFRELgotCQkJCVNZVVVLQUVOIEJMRC4gMi0xMS0xCi0JCQkJS09NQVpBV0EgU0VUQUdBWUEtS1UgVE9LWU8gMTU0Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC01NyAgIChoZXgpCQlMT0NLSEVFRCAtIFNBTkRFUlMKLTAwNDA1NyAgICAgKGJhc2UgMTYpCQlMT0NLSEVFRCAtIFNBTkRFUlMKLQkJCQlEQU5JRUwgV0VCU1RFUiBISUdIV0FZIFNPVVRICi0JCQkJUC5PLiBCT1ggODY4Ci0JCQkJTkFTSFVBIE5IIDAzMDYxLTA4NjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTU4ICAgKGhleCkJCUtST05PUywgSU5DLgotMDA0MDU4ICAgICAoYmFzZSAxNikJCUtST05PUywgSU5DLgotCQkJCTQwMCBGSUZUSCBBVkVOVUUKLQkJCQlXQUxUSEFNIE1BIDAyMTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC01OSAgIChoZXgpCQlZT1NISURBIEtPR1lPIEsuIEsuCi0wMDQwNTkgICAgIChiYXNlIDE2KQkJWU9TSElEQSBLT0dZTyBLLiBLLgotCQkJCVRFQ0hOSUNBTCBSRVNFQVJDSCBERVBULgotCQkJCTIwMCBZT1NISURBIEtVUk9CRSBDSVRZIFRPWUFNQSBQUkVGLgotCQkJCTkzOSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLTVBICAgKGhleCkJCUdPTERTVEFSIElORk9STUFUSU9OICYgQ09NTS4KLTAwNDA1QSAgICAgKGJhc2UgMTYpCQlHT0xEU1RBUiBJTkZPUk1BVElPTiAmIENPTU0uCi0JCQkJNTMzLCBIT0dBRS1ET05HLCBBTllBTkctU0hJCi0JCQkJS1lPTkdLSS1ETyA0MzAtMDgwCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNDAtNUIgICAoaGV4KQkJRlVOQVNTRVQgTElNSVRFRAotMDA0MDVCICAgICAoYmFzZSAxNikJCUZVTkFTU0VUIExJTUlURUQKLQkJCQlPUkNIQVJEUywgMTQgVE9XTlNFTkQKLQkJCQlTT01FUlNFVCBUQTE5IE9BVSBJTE1JTlNURVIKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTVDICAgKGhleCkJCUZVVFVSRSBTWVNURU1TLCBJTkMuCi0wMDQwNUMgICAgIChiYXNlIDE2KQkJRlVUVVJFIFNZU1RFTVMsIElOQy4KLQkJCQlST09NIDEwMiBET05HIEJBTkcgQi9ELAotCQkJCVlFT0cgU0FNLURPTkcgNzQwLTUsIEtBTkcgTkFNLUtVCi0JCQkJU0VPVUwgMTMwLTA4MCBTRU9VTCAxMzAtMDgwIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTQwLTVEICAgKGhleCkJCVNUQVItVEVLLCBJTkMuCi0wMDQwNUQgICAgIChiYXNlIDE2KQkJU1RBUi1URUssIElOQy4KLQkJCQk3MSBMWU1BTiBTVFJFRVQKLQkJCQlOT1JUSEJPUk8gTUEgMDE1MzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTVFICAgKGhleCkJCU5PUlRIIEhJTExTIElTUkFFTAotMDA0MDVFICAgICAoYmFzZSAxNikJCU5PUlRIIEhJTExTIElTUkFFTAotCQkJCVAuTy4gQk9YIDEyODAKLQkJCQlZT0tORUFNIDIwNjkyCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTQwLTVGICAgKGhleCkJCUFGRSBDT01QVVRFUlMgTFRELgotMDA0MDVGICAgICAoYmFzZSAxNikJCUFGRSBDT01QVVRFUlMgTFRELgotCQkJCTYyIEFOQ0hPUkFHRSBST0FECi0JCQkJU1VUVE9OIENPTERGSUVMRCBXRVNUIE1JRExBTkRTIEI3NCAyUEcKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTYwICAgKGhleCkJCUNPTUVOREVDIExURAotMDA0MDYwICAgICAoYmFzZSAxNikJCUNPTUVOREVDIExURAotCQkJCUVOVEVSUFJJU0UgV0FZLAotCQkJCUFTVE9OIFNDSUVOQ0UgUEFSSywgQVNUT04gVFJJQU5HTEUKLQkJCQlCSVJNSU5HSEFNIEJJUk1JTkdIQU0gRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTYxICAgKGhleCkJCURBVEFURUNIIEVOVEVSUFJJU0VTIENPLiwgTFRELgotMDA0MDYxICAgICAoYmFzZSAxNikJCURBVEFURUNIIEVOVEVSUFJJU0VTIENPLiwgTFRELgotCQkJCShMSU4gS09VIElORFVTVFJJQUwgWk9ORSBTRUMsNAotCQkJCTI3LCBIU0ktU0hJSCBMQUtFIFJPQUQgS1VFSS1TSEFOIEhTSUFORwotCQkJCVRBT1lVQU4gQ09VTlRZIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTYyICAgKGhleCkJCUUtU1lTVEVNUywgSU5DLi9HQVJMQU5EIERJVi4KLTAwNDA2MiAgICAgKGJhc2UgMTYpCQlFLVNZU1RFTVMsIElOQy4vR0FSTEFORCBESVYuCi0JCQkJUC5PLiBCT1ggNjYwMDIzCi0JCQkJTUFJTCBTVE9QIDYzMDAwCi0JCQkJREFMTEFTIFRYIDc1MjY2LTAwMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTYzICAgKGhleCkJCVZJQSBURUNITk9MT0dJRVMsIElOQy4KLTAwNDA2MyAgICAgKGJhc2UgMTYpCQlWSUEgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNTAyMCBCUkFORElOIENPVVJUCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNjQgICAoaGV4KQkJS0xBIElOU1RSVU1FTlRTIENPUlBPUkFUSU9OCi0wMDQwNjQgICAgIChiYXNlIDE2KQkJS0xBIElOU1RSVU1FTlRTIENPUlBPUkFUSU9OCi0JCQkJMTYwIFJJTyBST0JMRVMKLQkJCQlTQU4gSk9TRSBDQSA5NTE2MS05MDU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC02NSAgIChoZXgpCQlHVEUgU1BBQ0VORVQKLTAwNDA2NSAgICAgKGJhc2UgMTYpCQlHVEUgU1BBQ0VORVQKLQkJCQkxNzAwIE9MRCBNRUFET1cgUk9BRAotCQkJCU1DTEVBTiBWQSAyMjEwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNjYgICAoaGV4KQkJSElUQUNISSBDQUJMRSwgTFRELgotMDA0MDY2ICAgICAoYmFzZSAxNikJCUhJVEFDSEkgQ0FCTEUsIExURC4KLQkJCQlPUFRPIEVMRUNUUk9OSUMgU1lTVEVNIExBQgotCQkJCTg4MCBJU0FHT1pBVy1DSE8sIEhJVEFDSEktU0hJIElCQVJBS0ktS0UKLQkJCQkzMTktMTQgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC02NyAgIChoZXgpCQlPTU5JQllURSBDT1JQT1JBVElPTgotMDA0MDY3ICAgICAoYmFzZSAxNikJCU9NTklCWVRFIENPUlBPUkFUSU9OCi0JCQkJMjQ1IFdFU1QgUk9PU0VWRUxUIFJPQUQKLQkJCQlXRVNUIENISUNBR08gSUwgNjAxODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTY4ICAgKGhleCkJCUVYVEVOREVEIFNZU1RFTVMKLTAwNDA2OCAgICAgKGJhc2UgMTYpCQlFWFRFTkRFRCBTWVNURU1TCi0JCQkJNjEyMyBOT1JUSCBNRUVLRVIgQVZFTlVFCi0JCQkJQk9JU0UgSUQgODM3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTY5ICAgKGhleCkJCUxFTUNPTSBTWVNURU1TLCBJTkMuCi0wMDQwNjkgICAgIChiYXNlIDE2KQkJTEVNQ09NIFNZU1RFTVMsIElOQy4KLQkJCQkyMTA0IFdFU1QgUEVPUklBIEFWRU5VRQotCQkJCVBIT0VOSVggQVogODUwMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTZBICAgKGhleCkJCUtFTlRFSyBJTkZPUk1BVElPTiBTWVNURU1TLElOQwotMDA0MDZBICAgICAoYmFzZSAxNikJCUtFTlRFSyBJTkZPUk1BVElPTiBTWVNURU1TLElOQwotCQkJCTI5NDUgV0lMREVSTkVTUyBQTEFDRQotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTZCICAgKGhleCkJCVNZU0dFTgotMDA0MDZCICAgICAoYmFzZSAxNikJCVNZU0dFTgotCQkJCTU1NiBHSUJSQUxUQVIgRFJJVkUKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNkMgICAoaGV4KQkJQ09QRVJOSVFVRQotMDA0MDZDICAgICAoYmFzZSAxNikJCUNPUEVSTklRVUUKLQkJCQk2LCBNQUlMIERFIEwnRVVST1BFIEJQIDI1Ci0JCQkJNzgxNzAgTEEgQ0VMTEUtU0FJTlQtQ0xPVUQKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNDAtNkQgICAoaGV4KQkJTEFOQ08sIElOQy4KLTAwNDA2RCAgICAgKGJhc2UgMTYpCQlMQU5DTywgSU5DLgotCQkJCTgwMCBXRVNUIEFJUlBPUlQgRlJFRVdBWQotCQkJCVNVSVRFICMxMTAwCi0JCQkJSVJWSU5HIFRYIDc1MDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC02RSAgIChoZXgpCQlDT1JPTExBUlksIElOQy4KLTAwNDA2RSAgICAgKGJhc2UgMTYpCQlDT1JPTExBUlksIElOQy4KLQkJCQkyODAyIEtFTFZJTgotCQkJCUlSVklORSBDQSA5MjcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNkYgICAoaGV4KQkJU1lOQyBSRVNFQVJDSCBJTkMuCi0wMDQwNkYgICAgIChiYXNlIDE2KQkJU1lOQyBSRVNFQVJDSCBJTkMuCi0JCQkJNyBTVFVERUJBS0VSCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC03MCAgIChoZXgpCQlJTlRFUldBUkUgQ08uLCBMVEQuCi0wMDQwNzAgICAgIChiYXNlIDE2KQkJSU5URVJXQVJFIENPLiwgTFRELgotCQkJCTdGIEtVREFOIE5FVyBDRU5UUkFMIEJMREcuLAotCQkJCTEtNC01IEtVREFOLUtJVEEsIENISVlPREEtS1UKLQkJCQlUT0tZTyAxMDIgVE9LWU8gMTAyIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtNzEgICAoaGV4KQkJQVRNIENPTVBVVEVSIEdNQkgKLTAwNDA3MSAgICAgKGJhc2UgMTYpCQlBVE0gQ09NUFVURVIgR01CSAotCQkJCUJVQ0tMRVNUUi4gMS01LFBPU1RGQUNIIDEwMTA0MwotCQkJCUQ3NzUwIEtPTlNUQU5aCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtNzIgICAoaGV4KQkJQXBwbGllZCBJbm5vdmF0aW9uIEluYy4KLTAwNDA3MiAgICAgKGJhc2UgMTYpCQlBcHBsaWVkIElubm92YXRpb24gSW5jLgotCQkJCTU4MDAgSW5ub3ZhdGlvbiBEcml2ZQotCQkJCUR1YmxpbiBPSCA0MzAxNi0zMjcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC03MyAgIChoZXgpCQlCQVNTIEFTU09DSUFURVMKLTAwNDA3MyAgICAgKGJhc2UgMTYpCQlCQVNTIEFTU09DSUFURVMKLQkJCQk0MzUgVEFTU08gU1RSRUVULCBTVEUuICMzMjUKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTc0ICAgKGhleCkJCUNBQkxFIEFORCBXSVJFTEVTUwotMDA0MDc0ICAgICAoYmFzZSAxNikJCUNBQkxFIEFORCBXSVJFTEVTUwotCQkJCUNPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTkxOSBHQUxMT1dTIFJPQUQKLQkJCQlWSUVOTkEgVkEgMjIxODItMzk2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtNzUgICAoaGV4KQkJVGF0dGlsZSBTUkwgCi0wMDQwNzUgICAgIChiYXNlIDE2KQkJVGF0dGlsZSBTUkwgCi0JCQkJMTEtMTIgTk9SVEhGSUVMRCBQUk9TUEVDVAotCQkJCVBVVE5FWSBCUklER0UgUk9BRCBMT05ET04gU1cxOCAxSFIKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLTc2ICAgKGhleCkJCVN1biBDb252ZXJzaW9uIFRlY2hub2xvZ2llcwotMDA0MDc2ICAgICAoYmFzZSAxNikJCVN1biBDb252ZXJzaW9uIFRlY2hub2xvZ2llcwotCQkJCTEwMCBDb21tZXJjZSBCb3VsZXZhcmQKLQkJCQlRdWFrZXJ0b3duIFBBIDc4OTUxLTIyMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTc3ICAgKGhleCkJCU1BWFRPTiBURUNITk9MT0dZIENPUlBPUkFUSU9OCi0wMDQwNzcgICAgIChiYXNlIDE2KQkJTUFYVE9OIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQk0RkssIDI0OSwgU0VDLiAzLAotCQkJCUNIVU5HIEhTSUFPIEUuIFJELiwgVEFJUEVJCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC03OCAgIChoZXgpCQlXRUFSTkVTIEFVVE9NQVRJT04gUFRFIExURAotMDA0MDc4ICAgICAoYmFzZSAxNikJCVdFQVJORVMgQVVUT01BVElPTiBQVEUgTFRECi0JCQkJODAxIExPUk9ORyA3LCBUT0EgUEFZT0gKLQkJCQlTSU5HQVBPUkUgMTIzMQotCQkJCVNJTkdBUE9SRQotCi0wMC00MC03OSAgIChoZXgpCQlKVUtPIE1BTlVGQUNUVVJFIENPTVBBTlksIExURC4KLTAwNDA3OSAgICAgKGJhc2UgMTYpCQlKVUtPIE1BTlVGQUNUVVJFIENPTVBBTlksIExURC4KLQkJCQlGTEFUIEMsIDNSRCBGTE9PUiwgQ0RXIEJMREcuCi0JCQkJMzg4IENBU1RMRSBQRUFLIFJPQUQsIFRTVUVOIFdBTiwgTi5ULgotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC00MC03QSAgIChoZXgpCQlTT0NJRVRFIEQnRVhQTE9JVEFUSU9OIERVIENOSVQKLTAwNDA3QSAgICAgKGJhc2UgMTYpCQlTT0NJRVRFIEQnRVhQTE9JVEFUSU9OIERVIENOSVQKLQkJCQkyIEdMQUNFIERFIExBIERFRkVOU0UgOTIwNTMKLQkJCQlQQVJJUy1MQS1ERUZFTlNFCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTQwLTdCICAgKGhleCkJCVNDSUVOVElGSUMgQVRMQU5UQQotMDA0MDdCICAgICAoYmFzZSAxNikJCVNDSUVOVElGSUMgQVRMQU5UQQotCQkJCUluZm9ybWF0aW9uIFRlY2hub2xvZ3kKLQkJCQk0MzExIENvbW11bmljYXRpb25zIERyaXZlIE1haWwgQ29kZTogIDMwCi0JCQkJTm9yY3Jvc3MgR0EgMzAwOTEtNjg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtN0MgICAoaGV4KQkJUVVNRSBDT1JQT1JBVElPTgotMDA0MDdDICAgICAoYmFzZSAxNikJCVFVTUUgQ09SUE9SQVRJT04KLQkJCQk1MDAgWU9TRU1JVEUgRFJJVkUsIE0vUy0yOQotCQkJCU1JTFBJVEFTIENBIDk1MDM1LTU0MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTdEICAgKGhleCkJCUVYVEVOU0lPTiBURUNITk9MT0dZIENPUlAuCi0wMDQwN0QgICAgIChiYXNlIDE2KQkJRVhURU5TSU9OIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkzMCBIT0xMSVMgU1RSRUVUCi0JCQkJRlJBTUlOR0hBTSBNQSAwMTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtN0UgICAoaGV4KQkJRVZFUkdSRUVOIFNZU1RFTVMsIElOQy4KLTAwNDA3RSAgICAgKGJhc2UgMTYpCQlFVkVSR1JFRU4gU1lTVEVNUywgSU5DLgotCQkJCTEyMCBMQU5ESU5HIENPVVJULVNVSVRFCi0JCQkJTk9WQVRPIENBIDk0OTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC03RiAgIChoZXgpCQlGTElSIFN5c3RlbXMKLTAwNDA3RiAgICAgKGJhc2UgMTYpCQlGTElSIFN5c3RlbXMKLQkJCQlCT1ggMwotCQkJCTE4Mi0xMSAgREFOREVSWUQKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtNDAtODAgICAoaGV4KQkJQVRIRU5JWCBDT1JQT1JBVElPTgotMDA0MDgwICAgICAoYmFzZSAxNikJCUFUSEVOSVggQ09SUE9SQVRJT04KLQkJCQk2NzUgQUxNQU5PUiBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTgxICAgKGhleCkJCU1BTk5FU01BTk4gU0NBTkdSQVBISUMgR01CSAotMDA0MDgxICAgICAoYmFzZSAxNikJCU1BTk5FU01BTk4gU0NBTkdSQVBISUMgR01CSAotCQkJCVJJU1NFTkVSIFNUUkFTU0UgMTEyLTExNAotCQkJCVctMjAwMCBXRURFTAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLTgyICAgKGhleCkJCUxBQk9SQVRPUlkgRVFVSVBNRU5UIENPUlAuCi0wMDQwODIgICAgIChiYXNlIDE2KQkJTEFCT1JBVE9SWSBFUVVJUE1FTlQgQ09SUC4KLQkJCQkxLTctMyBNSU5BVE9NQUNISQotCQkJCVRVQ0hJVVJBLUNJVFkgSUJBUkFHSS1LRU4sCi0JCQkJMzAwIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtODMgICAoaGV4KQkJVERBIElORFVTVFJJQSBERSBQUk9EVVRPUwotMDA0MDgzICAgICAoYmFzZSAxNikJCVREQSBJTkRVU1RSSUEgREUgUFJPRFVUT1MKLQkJCQlFTEVUUk9OSUNPUyBTLkEuCi0JCQkJUlVFIEFHT1NUSU5PIFRPR05FUkksIDkyIDA0NjkwIC0gU0FPIFBBVQotCQkJCUJSQVpJTAotCQkJCUJSQVpJTAotCi0wMC00MC04NCAgIChoZXgpCQlIT05FWVdFTEwgQUNTCi0wMDQwODQgICAgIChiYXNlIDE2KQkJSE9ORVlXRUxMIEFDUwotCQkJCQotCQkJCTUxMiBWaXJnaW5pYSBEcml2ZQotCQkJCUZvcnQgV2FzaGluZ3RvbiBQQSAxOTAzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtODUgICAoaGV4KQkJU0FBQiBJTlNUUlVNRU5UUyBBQgotMDA0MDg1ICAgICAoYmFzZSAxNikJCVNBQUIgSU5TVFJVTUVOVFMgQUIKLQkJCQlQLk8uIEJPWCAxMDE3Ci0JCQkJUy01NTEgMTEgSk9OS09QSU5HCi0JCQkJU1dFREVOCi0KLTAwLTQwLTg2ICAgKGhleCkJCU1JQ0hFTFMgJiBLTEVCRVJIT0ZGIENPTVBVVEVSCi0wMDQwODYgICAgIChiYXNlIDE2KQkJTUlDSEVMUyAmIEtMRUJFUkhPRkYgQ09NUFVURVIKLQkJCQlHQVRIRSAxMTcKLQkJCQk1NjAwIFdVUFBFUlRBTCAxCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtODcgICAoaGV4KQkJVUJJVFJFWCBDT1JQT1JBVElPTgotMDA0MDg3ICAgICAoYmFzZSAxNikJCVVCSVRSRVggQ09SUE9SQVRJT04KLQkJCQkxOVRIIEZMT09SLCAxNTUgQ0FSTFRPTiBTVFJFRVQKLQkJCQlXSU5OSVBFRywgTUFOSVRPQkEKLQkJCQlDQU5BREEgUjNDIDNIOAotCQkJCUNBTkFEQQotCi0wMC00MC04OCAgIChoZXgpCQlNT0JJVVMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDQwODggICAgIChiYXNlIDE2KQkJTU9CSVVTIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTU4MzUgRE9ZTEUgU1RSRUVUCi0JCQkJRU1FUllWSUxMRSBDQSA5NDYwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtODkgICAoaGV4KQkJTUVJREVOU0hBIENPUlBPUkFUSU9OCi0wMDQwODkgICAgIChiYXNlIDE2KQkJTUVJREVOU0hBIENPUlBPUkFUSU9OCi0JCQkJRkFDVE9SWSBOTy40LCA1MTUgS0FNSU5BS0FNSVpPCi0JCQkJSElHQVNISSBNQUtBRE8gTlVNQVpVLUNJVFkgU0hJWlVPS0EtUFJFRgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtOEEgICAoaGV4KQkJVFBTIFRFTEVQUk9DRVNTSU5HIFNZUy4gR01CSAotMDA0MDhBICAgICAoYmFzZSAxNikJCVRQUyBURUxFUFJPQ0VTU0lORyBTWVMuIEdNQkgKLQkJCQlTQ0hXQURFUk1VQ0hMU1RSQVNTRSA0LTgKLQkJCQlXLTg1MDEgQ0FET0xaQlVSRwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLThCICAgKGhleCkJCVJBWUxBTiBDT1JQT1JBVElPTgotMDA0MDhCICAgICAoYmFzZSAxNikJCVJBWUxBTiBDT1JQT1JBVElPTgotCQkJCTEyMCBJTkRFUEVOREVOQ0UgRFJJVkUKLQkJCQlNRU5MTyBQQVJLIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC04QyAgIChoZXgpCQlBWElTIENPTU1VTklDQVRJT05TIEFCCi0wMDQwOEMgICAgIChiYXNlIDE2KQkJQVhJUyBDT01NVU5JQ0FUSU9OUyBBQgotCQkJCVNDSEVFTEVWQUdFTiAxNgotCQkJCVMtMjIzIDcwIExVTkQKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtNDAtOEQgICAoaGV4KQkJVEhFIEdPT0RZRUFSIFRJUkUgJiBSVUJCRVIgQ08uCi0wMDQwOEQgICAgIChiYXNlIDE2KQkJVEhFIEdPT0RZRUFSIFRJUkUgJiBSVUJCRVIgQ08uCi0JCQkJMTE0NCBFQVNUIE1BUktFVCBTVFJFRVQKLQkJCQlBS1JPTiBPSCA0NDMxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOEUgICAoaGV4KQkJVGF0dGlsZSBTUkwgCi0wMDQwOEUgICAgIChiYXNlIDE2KQkJVGF0dGlsZSBTUkwgCi0JCQkJMjM2MCBNQVJZTEFORCBST0FECi0JCQkJV0lMTE9XIEdST1ZFIFBBIDE5MDkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC04RiAgIChoZXgpCQlXTS1EQVRBIE1JTkZPIEFCCi0wMDQwOEYgICAgIChiYXNlIDE2KQkJV00tREFUQSBNSU5GTyBBQgotCQkJCU9MT0YgQVNLTFVORFMgR0FUQSAxNAotCQkJCUJPWCAyMDY1IDQyMSAwMiBHT1RFQk9SRwotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC00MC05MCAgIChoZXgpCQlBTlNFTCBDT01NVU5JQ0FUSU9OUwotMDA0MDkwICAgICAoYmFzZSAxNikJCUFOU0VMIENPTU1VTklDQVRJT05TCi0JCQkJMTcwMSBKVU5DVElPTiBDT1VSVAotCQkJCVNBTiBKT1NFIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC05MSAgIChoZXgpCQlQUk9DT01QIElORFVTVFJJQSBFTEVUUk9OSUNBCi0wMDQwOTEgICAgIChiYXNlIDE2KQkJUFJPQ09NUCBJTkRVU1RSSUEgRUxFVFJPTklDQQotCQkJCUFWLiBLRU5LSVRJIFNJTU9NT1RPLCA3NjcKLQkJCQkwNTM0NyAtIFNBTyBQQVVMTyAvIFNQCi0JCQkJQlJBWklMCi0JCQkJQlJBWklMCi0KLTAwLTQwLTkyICAgKGhleCkJCUFTUCBDT01QVVRFUiBQUk9EVUNUUywgSU5DLgotMDA0MDkyICAgICAoYmFzZSAxNikJCUFTUCBDT01QVVRFUiBQUk9EVUNUUywgSU5DLgotCQkJCTE2MCBTQU4gR0FCUklFTCBEUklWRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOTMgICAoaGV4KQkJUEFYREFUQSBORVRXT1JLUyBMVEQuCi0wMDQwOTMgICAgIChiYXNlIDE2KQkJUEFYREFUQSBORVRXT1JLUyBMVEQuCi0JCQkJQ09NTVVOSUNBVElPTlMgSE9VU0UsCi0JCQkJRlJPR01PUkUgUk9BRCBIRU1FTCBIRU1QU1RFQUQsIEhFUlRTIEhQMwotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC05NCAgIChoZXgpCQlTSE9HUkFQSElDUywgSU5DLgotMDA0MDk0ICAgICAoYmFzZSAxNikJCVNIT0dSQVBISUNTLCBJTkMuCi0JCQkJMTg5MCBOLiBTSE9SRUxJTkUgQkxWRC4KLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC05NSAgIChoZXgpCQlSLlAuVC4gSU5URVJHUk9VUFMgSU5UJ0wgTFRELgotMDA0MDk1ICAgICAoYmFzZSAxNikJCVIuUC5ULiBJTlRFUkdST1VQUyBJTlQnTCBMVEQuCi0JCQkJOUYsIDUwIE1JTiBDSFVBTiBSRAotCQkJCUhTSU4gVElFTiwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLTk2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMsIEluYy4KLTAwNDA5NiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTcwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC05NyAgIChoZXgpCQlEQVRFWCBESVZJU0lPTiBPRgotMDA0MDk3ICAgICAoYmFzZSAxNikJCURBVEVYIERJVklTSU9OIE9GCi0JCQkJSU5TVFJVTUVOVEFSSVVNIENPUlAuCi0JCQkJUC5PLiBCT1ggNDQ2LCBTRi0wMDEwMSBIRUxTSU5LSQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTQwLTk4ICAgKGhleCkJCURSRVNTTEVSIEdNQkggJiBDTy4KLTAwNDA5OCAgICAgKGJhc2UgMTYpCQlEUkVTU0xFUiBHTUJIICYgQ08uCi0JCQkJS0FDS0VSVFNUUkFTU0UgMTAKLQkJCQlELTUyMDcyIEFBQ0hFTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLTk5ICAgKGhleCkJCU5FV0dFTiBTWVNURU1TIENPUlAuCi0wMDQwOTkgICAgIChiYXNlIDE2KQkJTkVXR0VOIFNZU1RFTVMgQ09SUC4KLQkJCQkxNzU4MCBORVdIT1BFIFNUUkVFVAotCQkJCUZPVU5UQUlOIFZBTExFWSBDQSA5MjcwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOUEgICAoaGV4KQkJTkVUV09SSyBFWFBSRVNTLCBJTkMuCi0wMDQwOUEgICAgIChiYXNlIDE2KQkJTkVUV09SSyBFWFBSRVNTLCBJTkMuCi0JCQkJMjIwMCBHUkVFTiBST0FEIC0gU1RFCi0JCQkJQU5OIEFSQk9SIE1JIDQ4MTcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC05QiAgIChoZXgpCQlIQUwgQ09NUFVURVIgU1lTVEVNUyBJTkMuCi0wMDQwOUIgICAgIChiYXNlIDE2KQkJSEFMIENPTVBVVEVSIFNZU1RFTVMgSU5DLgotCQkJCTEzMTUgREVMTCBBVkVOVUUKLQkJCQlDQU1QQkVMTCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtOUMgICAoaGV4KQkJVFJBTlNXQVJFCi0wMDQwOUMgICAgIChiYXNlIDE2KQkJVFJBTlNXQVJFCi0JCQkJMjEsIFJVRSBEVSA4IE1BSSAxOTQ1Ci0JCQkJOTQxMTA3IEFSQ1VFSUwKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNDAtOUQgICAoaGV4KQkJRElHSUJPQVJELCBJTkMuCi0wMDQwOUQgICAgIChiYXNlIDE2KQkJRElHSUJPQVJELCBJTkMuCi0JCQkJNjQwMCBGTFlJTkcgQ0xPVUQgRFJJVkUKLQkJCQlFREVOIFBSQUlSSUUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLTlFICAgKGhleCkJCUNPTkNVUlJFTlQgVEVDSE5PTE9HSUVTICBMVEQuCi0wMDQwOUUgICAgIChiYXNlIDE2KQkJQ09OQ1VSUkVOVCBURUNITk9MT0dJRVMgIExURC4KLQkJCQk2NTQgVEhFIENSRVNDRU5UCi0JCQkJQ09MQ0hFU1RFUiBCVVNJTkVTUyBQQVJLIENPTENIRVNURVIsIEVTUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtOUYgICAoaGV4KQkJVGVsY28gU3lzdGVtcywgSW5jLiAKLTAwNDA5RiAgICAgKGJhc2UgMTYpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuIAotCQkJCTE1IEJlcmtzaGlyZSBSb2FkCi0JCQkJTWFuc2ZpZWxkLCBNQSAwMjA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQTAgICAoaGV4KQkJR09MRFNUQVIgQ08uLCBMVEQuCi0wMDQwQTAgICAgIChiYXNlIDE2KQkJR09MRFNUQVIgQ08uLCBMVEQuCi0JCQkJNiBHQSAzQiBNVU5MQUUgWUVPTkdERVVOR1BPCi0JCQkJU0VPVUwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC00MC1BMSAgIChoZXgpCQlFUkdPIENPTVBVVElORwotMDA0MEExICAgICAoYmFzZSAxNikJCUVSR08gQ09NUFVUSU5HCi0JCQkJT05FIElOVEVSQ09OVElORU5UQUwgV0FZCi0JCQkJUEVBQk9EWSBNQSAwMTk2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQTIgICAoaGV4KQkJS0lOR1NUQVIgVEVDSE5PTE9HWSBJTkMuCi0wMDQwQTIgICAgIChiYXNlIDE2KQkJS0lOR1NUQVIgVEVDSE5PTE9HWSBJTkMuCi0JCQkJMS0zRiwgTk8uIDE4NSwgU0VDLiAzLAotCQkJCUNIRU5HIFRFSCBST0FECi0JCQkJVEFJUEVJIFRBSVdBTiwgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC1BMyAgIChoZXgpCQlNSUNST1VOSVRZIFNZU1RFTVMgRU5HSU5FRVJJTkcKLTAwNDBBMyAgICAgKGJhc2UgMTYpCQlNSUNST1VOSVRZIFNZU1RFTVMgRU5HSU5FRVJJTkcKLQkJCQkyNTUgQ0FTUElBTiBEUklWRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OS0xMDE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1BNCAgIChoZXgpCQlST1NFIEVMRUNUUk9OSUNTCi0wMDQwQTQgICAgIChiYXNlIDE2KQkJUk9TRSBFTEVDVFJPTklDUwotCQkJCVAuTy4gQk9YIDc0MjU3MQotCQkJCUhPVVNUT04gVFggNzcyNzQtMjU3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQTUgICAoaGV4KQkJQ0xJTklDT01QIElOVEwuCi0wMDQwQTUgICAgIChiYXNlIDE2KQkJQ0xJTklDT01QIElOVEwuCi0JCQkJNDUxMCBFWEVDQ1VUSVZFIERSSVZFLVNURS4jMjAwCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1BNiAgIChoZXgpCQlDcmF5LCBJbmMuCi0wMDQwQTYgICAgIChiYXNlIDE2KQkJQ3JheSwgSW5jLgotCQkJCTY1NUYgTE9ORSBPQUsgRFJJVkUKLQkJCQlFQUdBTiBNTiA1NTEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQTcgICAoaGV4KQkJSVRBVVRFQyBQSElMQ08gUy5BLgotMDA0MEE3ICAgICAoYmFzZSAxNikJCUlUQVVURUMgUEhJTENPIFMuQS4KLQkJCQlHUlVQTyBJVEFVVEVDIFBISUxDTwotCQkJCVJVQSBTQU5UQSBDQVRBUklOQSwgMSAwMzA4Ni0wMjAgU0FPIFBBVUwKLQkJCQlCUkFaSUwKLQkJCQlCUkFaSUwKLQotMDAtNDAtQTggICAoaGV4KQkJSU1GIElOVEVSTkFUSU9OQUwgTFRELgotMDA0MEE4ICAgICAoYmFzZSAxNikJCUlNRiBJTlRFUk5BVElPTkFMIExURC4KLQkJCQlOTy41IDIvRiBLSU5HU0ZPUkQgSU5ELiBDRU5UUkUKLQkJCQkxMyBXQU5HIEhPSSBST0FEIEtPV0xPT04gQkFZLCBLT1dMT09OCi0JCQkJSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLTQwLUE5ICAgKGhleCkJCURBVEFDT00gSU5DLgotMDA0MEE5ICAgICAoYmFzZSAxNikJCURBVEFDT00gSU5DLgotCQkJCTE0NiBISUdIV0FZIFJPVVRFIDM0IC0gU1RFIDI1MAotCQkJCUhPTE1ERUwgTkogMDc3MzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUFBICAgKGhleCkJCVZBTE1FVCBBVVRPTUFUSU9OIElOQy4KLTAwNDBBQSAgICAgKGJhc2UgMTYpCQlWQUxNRVQgQVVUT01BVElPTiBJTkMuCi0JCQkJUC5PLiBCT1ggMjM3Ci0JCQkJU0YtMzMxMDEgVEFNUEVSRQotCQkJCUZJTkxBTkQKLQkJCQlGSU5MQU5ECi0KLTAwLTQwLUFCICAgKGhleCkJCVJPTEFORCBERyBDT1JQT1JBVElPTgotMDA0MEFCICAgICAoYmFzZSAxNikJCVJPTEFORCBERyBDT1JQT1JBVElPTgotCQkJCTEyMjcgT0tVQk8tQ0hPLCBIQU1BTUFUU1UtU0hJCi0JCQkJU0hJWlVPS0EtS0VOCi0JCQkJNDMyIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtQUMgICAoaGV4KQkJU1VQRVIgV09SS1NUQVRJT04sIElOQy4KLTAwNDBBQyAgICAgKGJhc2UgMTYpCQlTVVBFUiBXT1JLU1RBVElPTiwgSU5DLgotCQkJCTIxOTAgUEFSQUdPTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1BRCAgIChoZXgpCQlTTUEgUkVHRUxTWVNURU1FIEdNQkgKLTAwNDBBRCAgICAgKGJhc2UgMTYpCQlTTUEgUkVHRUxTWVNURU1FIEdNQkgKLQkJCQlIQU5OT1ZFUlNDSEUgU1RSLiAxLTUKLQkJCQlEIDM1MDEgTklFU1RFVEFMCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtQUUgICAoaGV4KQkJREVMVEEgQ09OVFJPTFMsIElOQy4KLTAwNDBBRSAgICAgKGJhc2UgMTYpCQlERUxUQSBDT05UUk9MUywgSU5DLgotCQkJCTEzNTIwIDc4VEggQVZFTlVFCi0JCQkJU1VSUkVZLCBCLkMuCi0JCQkJQ0FOQURBIFYzVyA4SjYKLQkJCQlDQU5BREEKLQotMDAtNDAtQUYgICAoaGV4KQkJRElHSVRBTCBQUk9EVUNUUywgSU5DLgotMDA0MEFGICAgICAoYmFzZSAxNikJCURJR0lUQUwgUFJPRFVDVFMsIElOQy4KLQkJCQk0MTEgV0FWRVJMWSBPQUtTIFJPQUQKLQkJCQlXQUxUSEFNIE1BIDAyMTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1CMCAgIChoZXgpCQlCWVRFWCBDT1JQT1JBVElPTiwgRU5HSU5FRVJJTkcKLTAwNDBCMCAgICAgKGJhc2UgMTYpCQlCWVRFWCBDT1JQT1JBVElPTiwgRU5HSU5FRVJJTkcKLQkJCQkxMzg3MyBQQVJLIENFTlRFUiBST0FECi0JCQkJSEVSTkRPTiBWQSAyMjA3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQjEgICAoaGV4KQkJQ09ET05JQ1MgSU5DLgotMDA0MEIxICAgICAoYmFzZSAxNikJCUNPRE9OSUNTIElOQy4KLQkJCQkxNzk5MSBFTkdMRVdPT0QgRFJJVkUKLQkJCQlNSURETEVCVVJHIEhUUyBPSCA0NDEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQjIgICAoaGV4KQkJU1lTVEVNRk9SU0NIVU5HCi0wMDQwQjIgICAgIChiYXNlIDE2KQkJU1lTVEVNRk9SU0NIVU5HCi0JCQkJS09OSUdTVFJBU1NFIDMzQQotCQkJCTUzMDAgQk9OTiAxCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtQjMgICAoaGV4KQkJUGFyVGVjaCBJbmMuCi0wMDQwQjMgICAgIChiYXNlIDE2KQkJUGFyVGVjaCBJbmMuCi0JCQkJODM4MyBTZW5lY2EgVHVybnBpa2UKLQkJCQlORVcgSEFSVEZPUkQgTlkgMTM0MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUI0ICAgKGhleCkJCU5FWFRDT00gSy5LLgotMDA0MEI0ICAgICAoYmFzZSAxNikJCU5FWFRDT00gSy5LLgotCQkJCTEtMTItMSBTSElCVVlBCi0JCQkJU0hJQlVZQS1LVSwgVE9LWU8sIDE1MAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtQjUgICAoaGV4KQkJVklERU8gVEVDSE5PTE9HWSBDT01QVVRFUlMgTFRECi0wMDQwQjUgICAgIChiYXNlIDE2KQkJVklERU8gVEVDSE5PTE9HWSBDT01QVVRFUlMgTFRECi0JCQkJMzMvRi4sIEJMT0NLICMxLAotCQkJCVRBSSBQSU5HIElORFVTVFJJQUwgQ0VOVEVSIDU3IFRJTkcgS09LIFIKLQkJCQlOLlQuIEhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC00MC1CNiAgIChoZXgpCQlDT01QVVRFUk0gIENPUlBPUkFUSU9OCi0wMDQwQjYgICAgIChiYXNlIDE2KQkJQ09NUFVURVJNICBDT1JQT1JBVElPTgotCQkJCTExMSBXT09EIFNUUkVFVAotCQkJCVBJVFRTQlVSR0ggUEEgMTUyMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUI3ICAgKGhleCkJCVNURUFMVEggQ09NUFVURVIgU1lTVEVNUwotMDA0MEI3ICAgICAoYmFzZSAxNikJCVNURUFMVEggQ09NUFVURVIgU1lTVEVNUwotCQkJCTIzNDEgUkVHSU5BIENULgotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1COCAgIChoZXgpCQlJREVBIEFTU09DSUFURVMKLTAwNDBCOCAgICAgKGJhc2UgMTYpCQlJREVBIEFTU09DSUFURVMKLQkJCQkyOSBEVU5IQU0gUk9BRAotCQkJCUJJTExFUklDQSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQjkgICAoaGV4KQkJTUFDUSBFTEVDVFJPTklRVUUgU0EKLTAwNDBCOSAgICAgKGJhc2UgMTYpCQlNQUNRIEVMRUNUUk9OSVFVRSBTQQotCQkJCVJVRSBERSBMJ0FFUk9ORUYgMgotCQkJCUIgLSAxMTQwIEJSVVNTRUxTCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtNDAtQkEgICAoaGV4KQkJQUxMSUFOVCBDT01QVVRFUiBTWVNURU1TIENPUlAuCi0wMDQwQkEgICAgIChiYXNlIDE2KQkJQUxMSUFOVCBDT01QVVRFUiBTWVNURU1TIENPUlAuCi0JCQkJT05FIE1PTkFSQ0ggRFJJVkUKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUJCICAgKGhleCkJCUdPTERTVEFSIENBQkxFIENPLiwgTFRELgotMDA0MEJCICAgICAoYmFzZSAxNikJCUdPTERTVEFSIENBQkxFIENPLiwgTFRELgotCQkJCTU1NSwgSE9HWUUtRE9ORywgQU5ZQU5HLVNISQotCQkJCUtZVU5HS0ktRE8sIDQzMC0wODAKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC00MC1CQyAgIChoZXgpCQlBTEdPUklUSE1JQ1MgTFRELgotMDA0MEJDICAgICAoYmFzZSAxNikJCUFMR09SSVRITUlDUyBMVEQuCi0JCQkJMyBEUkFZVE9OIFBBUksKLQkJCQlMT05ET04gTjUgMU5VCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTQwLUJEICAgKGhleCkJCVNUQVJMSUdIVCBORVRXT1JLUywgSU5DLgotMDA0MEJEICAgICAoYmFzZSAxNikJCVNUQVJMSUdIVCBORVRXT1JLUywgSU5DLgotCQkJCTQ0NCBDQVNUUk8gU1RSRUVUIFNURQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUJFICAgKGhleCkJCUJPRUlORyBERUZFTlNFICYgU1BBQ0UKLTAwNDBCRSAgICAgKGJhc2UgMTYpCQlCT0VJTkcgREVGRU5TRSAmIFNQQUNFCi0JCQkJUC5PLiBCT1ggMzk5OQotCQkJCU1BSUwgU1RPUCA4OC0xMgotCQkJCVNFQVRUTEUgV0EgOTgxMjQtMjQ5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQkYgICAoaGV4KQkJQ0hBTk5FTCBTWVNURU1TIElOVEVSTidMIElOQy4KLTAwNDBCRiAgICAgKGJhc2UgMTYpCQlDSEFOTkVMIFNZU1RFTVMgSU5URVJOJ0wgSU5DLgotCQkJCTkzIFNPLiBMQSBQQVRFUkEgTEFORQotCQkJCVNBTlRBIEJBUkJBUkEgQ0EgOTMxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUMwICAgKGhleCkJCVZJU1RBIENPTlRST0xTIENPUlBPUkFUSU9OCi0wMDQwQzAgICAgIChiYXNlIDE2KQkJVklTVEEgQ09OVFJPTFMgQ09SUE9SQVRJT04KLQkJCQkyNzgyNSBGUkVNT05UIENPVVJUCi0JCQkJVkFMRU5DSUEgQ0EgOTEzNTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUMxICAgKGhleCkJCUJJWkVSQkEtV0VSS0UgV0lMSEVJTSBLUkFVVAotMDA0MEMxICAgICAoYmFzZSAxNikJCUJJWkVSQkEtV0VSS0UgV0lMSEVJTSBLUkFVVAotCQkJCUdNQkggJiBDTy4gS0csCi0JCQkJV0lMSEVMTS1LUkFVVC1TVFIuIDY1IFAuTy4gQk9YIDEwMDE2NAotCQkJCUQtNzQ2MCBCQUxJTkdFTiBELTc0NjAgQkFMSU5HRU4gR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtNDAtQzIgICAoaGV4KQkJQVBQTElFRCBDT01QVVRJTkcgREVWSUNFUwotMDA0MEMyICAgICAoYmFzZSAxNikJCUFQUExJRUQgQ09NUFVUSU5HIERFVklDRVMKLQkJCQlBTEVQSCBQQVJLCi0JCQkJMTAwIFNPVVRIIENBTVBVUyBEUklWRQotCQkJCVRFUlJFIEhBVVRFIElOIDQ3ODAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DMyAgIChoZXgpCQlGSVNDSEVSIEFORCBQT1JURVIgQ08uCi0wMDQwQzMgICAgIChiYXNlIDE2KQkJRklTQ0hFUiBBTkQgUE9SVEVSIENPLgotCQkJCTEyNSBFLiBDT1VOVFkgTElORSBST0FECi0JCQkJV0FSTUlOU1RFUiBQQSAxODk3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQzQgICAoaGV4KQkJS0lOS0VJIFNZU1RFTSBDT1JQT1JBVElPTgotMDA0MEM0ICAgICAoYmFzZSAxNikJCUtJTktFSSBTWVNURU0gQ09SUE9SQVRJT04KLQkJCQkxLTIyLTE3LCBLQU1JS0lUQSwgSElSQU5PS1UKLQkJCQlPU0FLQSwgNTQ3Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC1DNSAgIChoZXgpCQlNSUNPTSBDT01NVU5JQ0FUSU9OUyBJTkMuCi0wMDQwQzUgICAgIChiYXNlIDE2KQkJTUlDT00gQ09NTVVOSUNBVElPTlMgSU5DLgotCQkJCTQxMDAgTE9TIEFOR0VMRVMgQVZFTlVFCi0JCQkJU0lNSSBWQUxMRVkgQ0EgOTMwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUM2ICAgKGhleCkJCUZJQkVSTkVUIFJFU0VBUkNILCBJTkMuCi0wMDQwQzYgICAgIChiYXNlIDE2KQkJRklCRVJORVQgUkVTRUFSQ0gsIElOQy4KLQkJCQkxIFRBUkEgQk9VTEVWQVJELSM0MDUKLQkJCQlOQVNIVUEgTkggMDMwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUM3ICAgKGhleCkJCVJVQlkgVEVDSCBDT1JQT1JBVElPTgotMDA0MEM3ICAgICAoYmFzZSAxNikJCVJVQlkgVEVDSCBDT1JQT1JBVElPTgotCQkJCTZGLTEsIE5PLjMsIExBTkUgMjUwLAotCQkJCVNFQy4gNSBOQU5LSU5HIEUuUk9BRAotCQkJCVRBSVBFSSBUQUlXQU4sIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNDAtQzggICAoaGV4KQkJTUlMQU4gVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDA0MEM4ICAgICAoYmFzZSAxNikJCU1JTEFOIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQk4OTQgUk9TUyBEUklWRS0tU1RFICMxMDUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUM5ICAgKGhleCkJCU5DVUJFCi0wMDQwQzkgICAgIChiYXNlIDE2KQkJTkNVQkUKLQkJCQk5MTkgRUFTVCBISUxMU0RBTEUgQkxWRC4KLQkJCQlTVUlURSAyMDAKLQkJCQlGT1NURVIgQ0lUWSBDQSA5NDQwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQ0EgICAoaGV4KQkJRklSU1QgSU5URVJOQVQnTCBDT01QVVRFUiwgSU5DCi0wMDQwQ0EgICAgIChiYXNlIDE2KQkJRklSU1QgSU5URVJOQVQnTCBDT01QVVRFUiwgSU5DCi0JCQkJRklDIEJ1aWxkaW5nCi0JCQkJTm8gMzAwIFlhbmcgR3VhbmcgU3RyZWV0Ci0JCQkJTmVpaHUgVGFpcGVpIDExNCBUYWlwZWkgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC00MC1DQiAgIChoZXgpCQlMQU5XQU4gVEVDSE5PTE9HSUVTCi0wMDQwQ0IgICAgIChiYXNlIDE2KQkJTEFOV0FOIFRFQ0hOT0xPR0lFUwotCQkJCTE1NjYgTEEgUFJBREVSQSBEUklWRQotCQkJCUNBTVBCRUxMIENBIDk1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DQyAgIChoZXgpCQlTSUxDT00gTUFOVUYnRyBURUNITk9MT0dZIElOQy4KLTAwNDBDQyAgICAgKGJhc2UgMTYpCQlTSUxDT00gTUFOVUYnRyBURUNITk9MT0dZIElOQy4KLQkJCQk1NjIwIFRJTUJFUkxFQSBCT1VMRVZBUkQKLQkJCQlNSVNTSVNTQVVHQSwgT05UQVJJTwotCQkJCUNBTkFEQSBMNFcgNE02Ci0JCQkJQ0FOQURBCi0KLTAwLTQwLUNEICAgKGhleCkJCVRFUkEgTUlDUk9TWVNURU1TLCBJTkMuCi0wMDQwQ0QgICAgIChiYXNlIDE2KQkJVEVSQSBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQkyNTAwIEdSRUFUIEFNRVJJQ0EgUEFSS1dBWQotCQkJCVNURS4gIzI1MAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1DRSAgIChoZXgpCQlORVQtU09VUkNFLCBJTkMuCi0wMDQwQ0UgICAgIChiYXNlIDE2KQkJTkVULVNPVVJDRSwgSU5DLgotCQkJCTEyNjUgRUwgQ0FNSU5PIFJFQUwKLQkJCQlTVUlURSAxMDEKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtQ0YgICAoaGV4KQkJU1RSQVdCRVJSWSBUUkVFLCBJTkMuCi0wMDQwQ0YgICAgIChiYXNlIDE2KQkJU1RSQVdCRVJSWSBUUkVFLCBJTkMuCi0JCQkJMTYwIFNPVVRIIFdPTEZFIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUQwICAgKGhleCkJCU1JVEFDIElOVEVSTkFUSU9OQUwgQ09SUC4KLTAwNDBEMCAgICAgKGJhc2UgMTYpCQlNSVRBQyBJTlRFUk5BVElPTkFMIENPUlAuCi0JCQkJOFRIIEZMLiA1ODUgTUlORyBTSEVORyBFLiBSRC4KLQkJCQlUQUlQRUkKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLUQxICAgKGhleCkJCUZVS1VEQSBERU5TSEkgQ08uLCBMVEQuCi0wMDQwRDEgICAgIChiYXNlIDE2KQkJRlVLVURBIERFTlNISSBDTy4sIExURC4KLQkJCQlSICYgRCBERVBBUlRNRU5UIE5PLiAxCi0JCQkJMzUtOCwgSE9OR08gMi1DSE9NRSwgQlVOS1lPLUtVIFRPS1lPIDExMwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtRDIgICAoaGV4KQkJUEFHSU5FIENPUlBPUkFUSU9OCi0wMDQwRDIgICAgIChiYXNlIDE2KQkJUEFHSU5FIENPUlBPUkFUSU9OCi0JCQkJMTk2MS1BIENPTkNPVVJTRSBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1EMyAgIChoZXgpCQlLSU1QU0lPTiBJTlRFUk5BVElPTkFMIENPUlAuCi0wMDQwRDMgICAgIChiYXNlIDE2KQkJS0lNUFNJT04gSU5URVJOQVRJT05BTCBDT1JQLgotCQkJCTQ3MDEgUEFUUklDSyBIRU5SWSBEUklWRQotCQkJCVNVSVRFIDQwMQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1ENCAgIChoZXgpCQlHQUdFIFRBTEtFUiBDT1JQLgotMDA0MEQ0ICAgICAoYmFzZSAxNikJCUdBR0UgVEFMS0VSIENPUlAuCi0JCQkJMTM2ODAgTkUgMTZUSCBTVFJFRVQKLQkJCQlCRUxMRVZVRSBXQSA5ODAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRDUgICAoaGV4KQkJU2FydG9yaXVzIE1lY2hhdHJvbmljcyBUJkggR21iSCAKLTAwNDBENSAgICAgKGJhc2UgMTYpCQlTYXJ0b3JpdXMgTWVjaGF0cm9uaWNzIFQmSCBHbWJIIAotCQkJCVdFRU5ERVIgTEFORFNUUjogOTQgLSAxMDgKLQkJCQkzNDAwIEdPVFRJTkdFTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLUQ2ICAgKGhleCkJCUxPQ0FNQVRJT04gQi5WLgotMDA0MEQ2ICAgICAoYmFzZSAxNikJCUxPQ0FNQVRJT04gQi5WLgotCQkJCVBPU1RCT1ggMzYwCi0JCQkJNzUwMCBBSiBFTlNDSEVERQotCQkJCUhPTExBTkQKLQkJCQlORVRIRVJMQU5EUwotCi0wMC00MC1ENyAgIChoZXgpCQlTVFVESU8gR0VOIElOQy4KLTAwNDBENyAgICAgKGJhc2UgMTYpCQlTVFVESU8gR0VOIElOQy4KLQkJCQkzLTEyLTggVEFLQU5BV0EgIzIwMgotCQkJCU1JTkFUT0tVLCBUT0tZTyAxMDgKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTQwLUQ4ICAgKGhleCkJCU9DRUFOIE9GRklDRSBBVVRPTUFUSU9OIExURC4KLTAwNDBEOCAgICAgKGJhc2UgMTYpCQlPQ0VBTiBPRkZJQ0UgQVVUT01BVElPTiBMVEQuCi0JCQkJNFRIICYgNVRIIEZMT09SLCBLQURFUiBCTERHLgotCQkJCTIyIEtBSSBDSEVVTkcgUk9BRCBLT1dMT09OIEJBWSwgS09XTE9PTgotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC00MC1EOSAgIChoZXgpCQlBTUVSSUNBTiBNRUdBVFJFTkRTIElOQy4KLTAwNDBEOSAgICAgKGJhc2UgMTYpCQlBTUVSSUNBTiBNRUdBVFJFTkRTIElOQy4KLQkJCQk2MTQ1RiBOIEJFTFQgUEFSS1dBWQotCQkJCU5PUkNST1NTIEdBIDMwMDcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1EQSAgIChoZXgpCQlURUxTUEVDIExURAotMDA0MERBICAgICAoYmFzZSAxNikJCVRFTFNQRUMgTFRECi0JCQkJTEFOQ0FTVEVSIFBBUktFUiBST0FECi0JCQkJUk9DSEVTVEVSIEFJUlBPUlQsIFJPQ0hFU1RFUiBLRU5UIE1FMSAzUQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC1EQiAgIChoZXgpCQlBRFZBTkNFRCBURUNITklDQUwgU09MVVRJT05TCi0wMDQwREIgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgVEVDSE5JQ0FMIFNPTFVUSU9OUwotCQkJCTgwNTAgU0VNSU5PTEUgT0ZGSUNFIENFTlRFUgotCQkJCVNVSVRFIDIxMAotCQkJCVNFTUlOT0xFIEZMIDM0NjQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1EQyAgIChoZXgpCQlUUklURUMgRUxFQ1RST05JQyBHTUJICi0wMDQwREMgICAgIChiYXNlIDE2KQkJVFJJVEVDIEVMRUNUUk9OSUMgR01CSAotCQkJCVJPQkVSVCBLT0NIIFNUUi4gMzUKLQkJCQlENjUwMCBNQUlOWiA0MgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTQwLUREICAgKGhleCkJCUhPTkcgVEVDSE5PTE9HSUVTCi0wMDQwREQgICAgIChiYXNlIDE2KQkJSE9ORyBURUNITk9MT0dJRVMKLQkJCQk1MzIgV0VEREVMTCBEUklWRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtREUgICAoaGV4KQkJRWxzYWcgRGF0YW1hdCBzcGEKLTAwNDBERSAgICAgKGJhc2UgMTYpCQlFbHNhZyBEYXRhbWF0IHNwYQotCQkJCUVMU0FHIFMuUC5BLgotCQkJCVZJQSBHLiBQVUNDSU5JLCAyCi0JCQkJR0VOT1ZBICAxNjE1NAotCQkJCUlUQUxZCi0KLTAwLTQwLURGICAgKGhleCkJCURJR0FMT0cgU1lTVEVNUywgSU5DLgotMDA0MERGICAgICAoYmFzZSAxNikJCURJR0FMT0cgU1lTVEVNUywgSU5DLgotCQkJCTMxODAgU09VVEggMTY2VEggU1RSRUVUCi0JCQkJTkVXIEJFUkxJTiBXSSA1MzE1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRTAgICAoaGV4KQkJQVRPTVdJREUgTFRELgotMDA0MEUwICAgICAoYmFzZSAxNikJCUFUT01XSURFIExURC4KLQkJCQkyMyBUSEUgR1JFRU5XQVkKLQkJCQlPUlBJTkdUT04gQlI1IDJBWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNDAtRTEgICAoaGV4KQkJTUFSTkVSIElOVEVSTkFUSU9OQUwsIElOQy4KLTAwNDBFMSAgICAgKGJhc2UgMTYpCQlNQVJORVIgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTE2MTcgOTNSRCBMQU5FIE5FCi0JCQkJQkxBSU5FIE1OIDU1NDQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1FMiAgIChoZXgpCQlNRVNBIFJJREdFIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA0MEUyICAgICAoYmFzZSAxNikJCU1FU0EgUklER0UgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNjcyNSBNRVNBIFJJREdFIFJPQUQtU1RFIzEwMAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRTMgICAoaGV4KQkJUVVJTiBTWVNURU1TIExURAotMDA0MEUzICAgICAoYmFzZSAxNikJCVFVSU4gU1lTVEVNUyBMVEQKLQkJCQlPQUtMQU5EUyBCVVNJTkVTUyBDRU5UUkUKLQkJCQlPQUtMQU5EUyBQQVJLLCBXT0tJTkdIQU0gQkVSS1MgIFJHMTEgMkZECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC00MC1FNCAgIChoZXgpCQlFLU0gVEVDSE5PTE9HWSwgSU5DLgotMDA0MEU0ICAgICAoYmFzZSAxNikJCUUtTSBURUNITk9MT0dZLCBJTkMuCi0JCQkJOTI0NSBTT1VUSFdFU1QgTklNQlVTIEFWRS4KLQkJCQlCRUFWRVJUT04gT1IgOTcwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUU1ICAgKGhleCkJCVNZQlVTIENPUlBPUkFUSU9OCi0wMDQwRTUgICAgIChiYXNlIDE2KQkJU1lCVVMgQ09SUE9SQVRJT04KLQkJCQkyMzAwIFRBTEwgUElORSBEUklWRS1TVEUuICMxMDAKLQkJCQlMQVJHTyBGTCAzNDY0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRTYgICAoaGV4KQkJQy5BLkUuTi4KLTAwNDBFNiAgICAgKGJhc2UgMTYpCQlDLkEuRS5OLgotCQkJCTIsIENIRU1JTiBMQVRFUkFMCi0JCQkJRjk0MjkwIFZJTExFTkVVVkUgTEUgUk9JCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLTQwLUU3ICAgKGhleCkJCUFSTk9TIElOU1RSVU1FTlRTICYgQ09NUFVURVIKLTAwNDBFNyAgICAgKGJhc2UgMTYpCQlBUk5PUyBJTlNUUlVNRU5UUyAmIENPTVBVVEVSCi0JCQkJU1lTVEVNUyAoR1JPVVApIENPLiwgTFRELgotCQkJCTQvRi4sIEVVUkVLQSBJTkQuIEJMREcuLCAxLTE3IFNBSSBMQVUgS08KLQkJCQlUU1VFTiBXQU4gTi5ULiBIT05HIEtPTkcKLQkJCQlIT05HIEtPTkcKLQotMDAtNDAtRTggICAoaGV4KQkJQ0hBUkxFUyBSSVZFUiBEQVRBIFNZU1RFTVMsSU5DCi0wMDQwRTggICAgIChiYXNlIDE2KQkJQ0hBUkxFUyBSSVZFUiBEQVRBIFNZU1RFTVMsSU5DCi0JCQkJOTgzIENPTkNPUkQgU1RSRUVUCi0JCQkJRlJBTUlOR0hBTSBNQSAwMTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRTkgICAoaGV4KQkJQUNDT1JEIFNZU1RFTVMsIElOQy4KLTAwNDBFOSAgICAgKGJhc2UgMTYpCQlBQ0NPUkQgU1lTVEVNUywgSU5DLgotCQkJCTU3MiBWQUxMRVkgV0FZCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUVBICAgKGhleCkJCVBMQUlOIFRSRUUgU1lTVEVNUyBJTkMKLTAwNDBFQSAgICAgKGJhc2UgMTYpCQlQTEFJTiBUUkVFIFNZU1RFTVMgSU5DCi0JCQkJQ0hJRUYgRVhFQ1RVVklFIE9GRklDRVIKLQkJCQk1OSBJQkVSIFJPQUQsIFNUSVRUU1ZJTExFIE9OVEFSSU8gSzJTIDFFCi0JCQkJQ0FOQURBCi0JCQkJQ0FOQURBCi0KLTAwLTQwLUVCICAgKGhleCkJCU1BUlRJTiBNQVJJRVRUQSBDT1JQT1JBVElPTgotMDA0MEVCICAgICAoYmFzZSAxNikJCU1BUlRJTiBNQVJJRVRUQSBDT1JQT1JBVElPTgotCQkJCTEyNTA2IExBS0UgVU5ERVJISUxMCi0JCQkJT1JMQU5ETyBGTCAzMjgyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRUMgICAoaGV4KQkJTUlLQVNBIFNZU1RFTSBFTkdJTkVFUklORwotMDA0MEVDICAgICAoYmFzZSAxNikJCU1JS0FTQSBTWVNURU0gRU5HSU5FRVJJTkcKLQkJCQlDTy4sIExURC4KLQkJCQkxLTMtMTAsIE1JTkFNSS1TSElOTUFDSEksIENIVU8tS1UsIE9TQUtBCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC1FRCAgIChoZXgpCQlORVRXT1JLIENPTlRST0xTIElOVCdOQVRMIElOQy4KLTAwNDBFRCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIENPTlRST0xTIElOVCdOQVRMIElOQy4KLQkJCQk5IFdPT0RMQVdOIEdSRUVOCi0JCQkJQ0hBUkxPVFRFIE5DIDI4MjE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1FRSAgIChoZXgpCQlPUFRJTUVNCi0wMDQwRUUgICAgIChiYXNlIDE2KQkJT1BUSU1FTQotCQkJCTI5NyBOLiBCRVJOQVJETyBBVkVOVUUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzLTUyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUVGICAgKGhleCkJCUhZUEVSQ09NLCBJTkMuCi0wMDQwRUYgICAgIChiYXNlIDE2KQkJSFlQRVJDT00sIElOQy4KLQkJCQkyODUxIFdFU1QgS0FUSExFRU4gUk9BRAotCQkJCVBIT0VOSVggQVogODUwMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUYwICAgKGhleCkJCU1pY3JvQnJhaW4sSW5jLgotMDA0MEYwICAgICAoYmFzZSAxNikJCU1pY3JvQnJhaW4sSW5jLgotCQkJCVl1emFuIEJsZGcuIDRGLAotCQkJCTIwNSxLaWJ1dGFrZSxOYWdha3V0ZSYjODIwODsgQ2hvLAotCQkJCUFpY2hpLWd1biBBSUNISSAgNDgwLTExMTcKLQkJCQlKQVBBTgotCi0wMC00MC1GMSAgIChoZXgpCQlDSFVPIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDA0MEYxICAgICAoYmFzZSAxNikJCUNIVU8gRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJMS05LTksIE1PVE9IT05HTy1DSE8KLQkJCQlIQUNISU9KSS1TSEkgVE9LWU8gMTkyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC00MC1GMiAgIChoZXgpCQlKQU5JQ0ggJiBLTEFTUyBDT01QVVRFUlRFQ0hOSUsKLTAwNDBGMiAgICAgKGJhc2UgMTYpCQlKQU5JQ0ggJiBLTEFTUyBDT01QVVRFUlRFQ0hOSUsKLQkJCQlaVU0gQUxURU4gWk9MTEhBVVMgMjAKLQkJCQlXLTU2MDAgV1VQUEVSVEFMIDIKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC1GMyAgIChoZXgpCQlORVRDT1IKLTAwNDBGMyAgICAgKGJhc2UgMTYpCQlORVRDT1IKLQkJCQk4NTAgQVVCVVJOIENPVVJUCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRjQgICAoaGV4KQkJQ0FNRU8gQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwNDBGNCAgICAgKGJhc2UgMTYpCQlDQU1FTyBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTcxIFNQSVRCUk9PSyBST0FELCBTVEUgIzQxMAotCQkJCU5BU0hVQSBOSCAwMzA2MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUY1ICAgKGhleCkJCU9FTSBFTkdJTkVTCi0wMDQwRjUgICAgIChiYXNlIDE2KQkJT0VNIEVOR0lORVMKLQkJCQkxMTkwIERFTEwgQVZFTlVFLCBTVEUuCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUY2ICAgKGhleCkJCUtBVFJPTiBDT01QVVRFUlMgSU5DLgotMDA0MEY2ICAgICAoYmFzZSAxNikJCUtBVFJPTiBDT01QVVRFUlMgSU5DLgotCQkJCTQgRkwuIE5PLiAyLCBBTExFWSAyMwotCQkJCUxBTkUgOTEgU0VDLiAxIE5FSSBIVSBST0FECi0JCQkJVEFJUEVJIFRBSVBFSSBUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTQwLUY3ICAgKGhleCkJCVBvbGFyb2lkIENvcnBvcmF0aW9uCi0wMDQwRjcgICAgIChiYXNlIDE2KQkJUG9sYXJvaWQgQ29ycG9yYXRpb24KLQkJCQkzMDAgQmFrZXIgQXZlbnVlCi0JCQkJQ29uY29yZCBNQSAwMTc0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRjggICAoaGV4KQkJU1lTVEVNSEFVUyBESVNDT00KLTAwNDBGOCAgICAgKGJhc2UgMTYpCQlTWVNURU1IQVVTIERJU0NPTQotCQkJCURJU1RSSUJVVEVEIENPTVBVVElORyBHTUJICi0JCQkJUk9FUk1PTkRFUlNUUi4gNjE1IEQtNTEwMCBBQUNIRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC1GOSAgIChoZXgpCQlDT01CSU5FVAotMDA0MEY5ICAgICAoYmFzZSAxNikJCUNPTUJJTkVUCi0JCQkJMzMzIFcuIEVMIENBTUlOTyBSRUFMLVNURSMzMTAKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQwLUZBICAgKGhleCkJCU1JQ1JPQk9BUkRTLCBJTkMuCi0wMDQwRkEgICAgIChiYXNlIDE2KQkJTUlDUk9CT0FSRFMsIElOQy4KLQkJCQkzMS04LCBUQUtBU0VDSE8sRlVOQUJBU0hJLUNJVFkKLQkJCQlDSElCQSAyNzMgQ0hJQkEgMjczIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtNDAtRkIgICAoaGV4KQkJQ0FTQ0FERSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDA0MEZCICAgICAoYmFzZSAxNikJCUNBU0NBREUgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQlQUk9EVUNUSU9OIFFVQUxJVFkgRU5HSU5FRVIKLQkJCQkyMzkgTElUVExFVE9OIFJPQUQtVU5JVCA0QQotCQkJCVdFU1RGT1JEIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1GQyAgIChoZXgpCQlJQlIgQ09NUFVURVIgVEVDSE5JSyBHTUJICi0wMDQwRkMgICAgIChiYXNlIDE2KQkJSUJSIENPTVBVVEVSIFRFQ0hOSUsgR01CSAotCQkJCUZSQU5LRlVSVEVSIFNUUi4gMTE0Ci0JCQkJRCA2MDU2IEhFVVNFTlNUQU1NCi0JCQkJV0VTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC00MC1GRCAgIChoZXgpCQlMWEUKLTAwNDBGRCAgICAgKGJhc2UgMTYpCQlMWEUKLQkJCQkzMDMgUkVTRUFSQ0ggRFJJVkUKLQkJCQlOT1JDUk9TUyBHQSAzMDA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDAtRkUgICAoaGV4KQkJU1lNUExFWCBDT01NVU5JQ0FUSU9OUwotMDA0MEZFICAgICAoYmFzZSAxNikJCVNZTVBMRVggQ09NTVVOSUNBVElPTlMKLQkJCQk1IFJFU0VBUkNIIERSSVZFCi0JCQkJQU5OIEFSQk9SIE1JIDQ4MTAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC00MC1GRiAgIChoZXgpCQlURUxFQklUIENPUlBPUkFUSU9OCi0wMDQwRkYgICAgIChiYXNlIDE2KQkJVEVMRUJJVCBDT1JQT1JBVElPTgotCQkJCTEzMTUgQ0hFU0FQRUFLRSBURVJSQUNFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5LTExMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQxLUI0ICAgKGhleCkJCVd1eGkgWmhvbmd4aW5nIE9wdG9lbGVjdHJvbmljcyBUZWNobm9sb2d5IENvLixMdGQuCi0wMDQxQjQgICAgIChiYXNlIDE2KQkJV3V4aSBaaG9uZ3hpbmcgT3B0b2VsZWN0cm9uaWNzIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlCbG9jayA5My1DLCBTY2kuICYgVGVjaC4gSW5kdXN0cnkgcGFyaywKLQkJCQlOZXcgZGlzdHJpY3QuCi0JCQkJV3V4aSBKaWFuZ3N1IDIxNDAyOAotCQkJCUNISU5BCi0KLTAwLTQyLTUyICAgKGhleCkJCVJMWCBUZWNobm9sb2dpZXMKLTAwNDI1MiAgICAgKGJhc2UgMTYpCQlSTFggVGVjaG5vbG9naWVzCi0JCQkJMjUyMzEgR3JvZ3JhbnMgTWlsbCBSZAotCQkJCVN1aXRlIDYwMAotCQkJCVRoZSBXb29kbGFuZHMgVHggNzczODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTQzLUZGICAgKGhleCkJCUtFVFJPTiBTLlIuTC4KLTAwNDNGRiAgICAgKGJhc2UgMTYpCQlLRVRST04gUy5SLkwuCi0JCQkJVmlhIEdpdXNlcHBlIFRhbGllcmNpbyBuLiA3Ci0JCQkJQW5jb25hICA2MDEzMQotCQkJCUlUQUxZCi0KLTAwLTQ1LTAxICAgKGhleCkJCVZlcnN1cyBUZWNobm9sb2d5LCBJbmMuCi0wMDQ1MDEgICAgIChiYXNlIDE2KQkJVmVyc3VzIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyNjAwIE1pbGxlciBDcmVlayBSb2FkCi0JCQkJVHJhdmVyc2UgQ2l0eSBNSSA0OTY4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNDYtNEIgICAoaGV4KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFREIAotMDA0NjRCICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURCAKLQkJCQlIdWF3ZWkgaW5kdXN0cmlhbCBiYXNlLEJhbnRpYW4sTG9uZ2dhbmcKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotMDAtNTAtMDAgICAoaGV4KQkJTkVYTyBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA1MDAwICAgICAoYmFzZSAxNikJCU5FWE8gQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkyTkQgRkwuLCAxNjAsIE1JTkdDSFUgUk9BRAotCQkJCUhTSU5DSFUgQ0lUWSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC0wMSAgIChoZXgpCQlZQU1BU0hJVEEgU1lTVEVNUyBDT1JQLgotMDA1MDAxICAgICAoYmFzZSAxNikJCVlBTUFTSElUQSBTWVNURU1TIENPUlAuCi0JCQkJNS03LTEyIElLRUdBTUkKLQkJCQlPVEEtS1UgVE9LWU8gIAotCQkJCUpBUEFOCi0KLTAwLTUwLTAyICAgKGhleCkJCU9NTklTRUMgQUcKLTAwNTAwMiAgICAgKGJhc2UgMTYpCQlPTU5JU0VDIEFHCi0JCQkJUklFVFNUUkFTU0UgMTQKLQkJCQlDSC04MTA4IERBRUxMSUtPTiAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtNTAtMDMgICAoaGV4KQkJWHJpdGUgSW5jCi0wMDUwMDMgICAgIChiYXNlIDE2KQkJWHJpdGUgSW5jCi0JCQkJNDMwMCA0NFRIIFN0cmVldCwgUy5FLgotCQkJCUdyYW5kIFJhcGlkcyBNSSA0OTUxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMDQgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDA1MDA0ICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTA2ICAgKGhleCkJCVRBQyBBQgotMDA1MDA2ICAgICAoYmFzZSAxNikJCVRBQyBBQgotCQkJCUpBR0VSU0hJTExHQVRPTiAxOAotCQkJCTIxMzc1IE1BTE1PICAKLQkJCQlTV0VERU4KLQotMDAtNTAtMDcgICAoaGV4KQkJU0lFTUVOUyBURUxFQ09NTVVOSUNBVElPTiBTWVNURU1TIExJTUlURUQKLTAwNTAwNyAgICAgKGJhc2UgMTYpCQlTSUVNRU5TIFRFTEVDT01NVU5JQ0FUSU9OIFNZU1RFTVMgTElNSVRFRAotCQkJCU5PLiA5MCwgU0VDLiAxLCBDSElFTiBLVU8gTk9SVEggUk9BRAotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC0wOCAgIChoZXgpCQlUSVZBIE1JQ1JPQ09NUFVURVIgQ09SUC4gKFRNQykKLTAwNTAwOCAgICAgKGJhc2UgMTYpCQlUSVZBIE1JQ1JPQ09NUFVURVIgQ09SUC4gKFRNQykKLQkJCQk0ODU1MCBGUkVNT05UIEJMVkQuCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMDkgICAoaGV4KQkJUEhJTElQUyBCUk9BREJBTkQgTkVUV09SS1MKLTAwNTAwOSAgICAgKGJhc2UgMTYpCQlQSElMSVBTIEJST0FEQkFORCBORVRXT1JLUwotCQkJCTY0IFBFUklNRVRFUiBDRU5UUkUgRUFTVAotCQkJCUFUTEFOVEEgR0EgMzAzNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTBBICAgKGhleCkJCUlSSVMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDUwMEEgICAgIChiYXNlIDE2KQkJSVJJUyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQlXRVNUTU9SRUxBTkQgSU5EVVNSSUFMIFBBUksKLQkJCQlSLlIuIDEyICBCT1ggMzYKLQkJCQlHUkVFTlNCVVJHIFBBIDE1NjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0wQiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwMEIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlNL1MgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0wQyAgIChoZXgpCQllLVRlayBMYWJzLCBJbmMuCi0wMDUwMEMgICAgIChiYXNlIDE2KQkJZS1UZWsgTGFicywgSW5jLgotCQkJCTEwNTcgRUFTVCBIRU5SSUVUVEEgUkQuCi0JCQkJUk9DSEVTVEVSIE5ZIDE0NjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0wRCAgIChoZXgpCQlTQVRPUkkgRUxFQ1RPUklDIENPLiwgTFRELgotMDA1MDBEICAgICAoYmFzZSAxNikJCVNBVE9SSSBFTEVDVE9SSUMgQ08uLCBMVEQuCi0JCQkJVElHVVNBREFJIDM4LTggIE1JRE9SSS1LVQotCQkJCVlPS09IQU1BLCBLQU5BR0FXQSAgCi0JCQkJSkFQQU4KLQotMDAtNTAtMEUgICAoaGV4KQkJQ0hST01BVElTIE5FVFdPUktTLCBJTkMuCi0wMDUwMEUgICAgIChiYXNlIDE2KQkJQ0hST01BVElTIE5FVFdPUktTLCBJTkMuCi0JCQkJMyBCRVRIRVNEQSBNRVRSTyBDRU5URVIKLQkJCQlCRVRIRVNEQSBNRCAyMDgxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMEYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDBGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0xMCAgIChoZXgpCQlOb3ZhTkVUIExlYXJuaW5nLCBJbmMuCi0wMDUwMTAgICAgIChiYXNlIDE2KQkJTm92YU5FVCBMZWFybmluZywgSW5jLgotCQkJCTEyNSBXLiBDSFVSQ0ggU1RSRUVULVNURS4gIzMwMAotCQkJCUNIQU1QQUlHTiBJTCA2MTgyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMTIgICAoaGV4KQkJQ0JMIC0gR01CSAotMDA1MDEyICAgICAoYmFzZSAxNikJCUNCTCAtIEdNQkgKLQkJCQlEQVJNU1RBRURURVIgU1RSLiA4MQotCQkJCUQtNjQ4MzkgTVVFTlNURVIgIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtMTMgICAoaGV4KQkJQ2hhcGFycmFsIE5ldHdvcmsgU3RvcmFnZQotMDA1MDEzICAgICAoYmFzZSAxNikJCUNoYXBhcnJhbCBOZXR3b3JrIFN0b3JhZ2UKLQkJCQk3NDIwIEUuIERyeSBDcmVlayBQYXJrd2F5Ci0JCQkJTG9uZ21vbnQgQ08gODA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTE0ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTAxNCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJTS9TLyBTSkEtMgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0xNSAgIChoZXgpCQlCUklHSFQgU1RBUiBFTkdJTkVFUklORwotMDA1MDE1ICAgICAoYmFzZSAxNikJCUJSSUdIVCBTVEFSIEVOR0lORUVSSU5HCi0JCQkJMTkgRU5GSUVMRCBEUklWRQotCQkJCUFORE9WRVIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTE2ICAgKGhleCkJCVNTVC9XT09ESEVBRCBJTkRVU1RSSUVTCi0wMDUwMTYgICAgIChiYXNlIDE2KQkJU1NUL1dPT0RIRUFEIElORFVTVFJJRVMKLQkJCQk1MCBOT1JUSExBTkQgUk9BRAotCQkJCVdBVEVSTE9PCi0JCQkJT05UQVJJTyBOMlYgMU4zICAKLQkJCQlDQU5BREEKLQotMDAtNTAtMTcgICAoaGV4KQkJUlNSIFMuUi5MLgotMDA1MDE3ICAgICAoYmFzZSAxNikJCVJTUiBTLlIuTC4KLQkJCQlWSUEgU0lOSUdBR0xJQSwgMzgKLQkJCQlMVVJBVEUgQ0FDQ0lWSU8gKENPKQotCQkJCTIyMDc1IElUQUxZCi0JCQkJSVRBTFkKLQotMDAtNTAtMTggICAoaGV4KQkJQU1JVCwgSW5jLgotMDA1MDE4ICAgICAoYmFzZSAxNikJCUFNSVQsIEluYy4KLQkJCQlOby4zMiwgSHVhbmdvbmcgUmQuLAotCQkJCVlvbmdrYW5nIENpdHksIFRhaW5hbiBDb3VudHkgNzEwNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTE5ICAgKGhleCkJCVNQUklORyBUSURFIE5FVFdPUktTLCBJTkMuCi0wMDUwMTkgICAgIChiYXNlIDE2KQkJU1BSSU5HIFRJREUgTkVUV09SS1MsIElOQy4KLQkJCQk4NSBTV0FOU09OIFJPQUQKLQkJCQlCT1hCT1JPVUdIIE1BIDAxNzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0xQSAgIChoZXgpCQlJUWluVmlzaW9uCi0wMDUwMUEgICAgIChiYXNlIDE2KQkJSVFpblZpc2lvbgotCQkJCTMzMTIyIFZhbGxlIFJvYWQKLQkJCQlTYW4gSnVhbiBDYXBpc3RyYW5vIENBIDkyNjc1LTQ4NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTFCICAgKGhleCkJCUFCTCBDQU5BREEsIElOQy4KLTAwNTAxQiAgICAgKGJhc2UgMTYpCQlBQkwgQ0FOQURBLCBJTkMuCi0JCQkJODU1MCBDT1RFIERFIExJRVNTRQotCQkJCVNULUxBVVJFTlQgKFFVRUJFQykgSDRUIDFIMiAgCi0JCQkJQ0FOQURBCi0KLTAwLTUwLTFDICAgKGhleCkJCUpBVE9NIFNZU1RFTVMsIElOQy4KLTAwNTAxQyAgICAgKGJhc2UgMTYpCQlKQVRPTSBTWVNURU1TLCBJTkMuCi0JCQkJOTkgTUlDSEFFTCBDT1dQTEFORCBEUklWRQotCQkJCUtBTkFUQQotCQkJCU9OVEFSSU8sIEsyTSAxWDMgIAotCQkJCUNBTkFEQQotCi0wMC01MC0xRSAgIChoZXgpCQlNaXJhbmRhIFRlY2hub2xvZ2llcywgSW5jLgotMDA1MDFFICAgICAoYmFzZSAxNikJCU1pcmFuZGEgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMzQ5OSwgRG91Z2xhcyBCLiBGbG9yZWFuaQotCQkJCVNhbml0LUxhdXJlbnQsIFFDCi0JCQkJSDRTIDJDNiAKLQkJCQlDQU5BREEKLQotMDAtNTAtMUYgICAoaGV4KQkJTVJHIFNZU1RFTVMsIExURC4KLTAwNTAxRiAgICAgKGJhc2UgMTYpCQlNUkcgU1lTVEVNUywgTFRELgotCQkJCVdJTExPVyBIT1VTRSwgU0xBRCBST0FECi0JCQkJU1RST1VECi0JCQkJR0xPUy4gIEdMNSAxUUcgRW5nbGFuZCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtMjAgICAoaGV4KQkJTUVESUFTVEFSIENPLiwgTFRELgotMDA1MDIwICAgICAoYmFzZSAxNikJCU1FRElBU1RBUiBDTy4sIExURC4KLQkJCQkzRkwsIFNPSFVOIEJMREcuCi0JCQkJOTUxLTMzIERPR09LLURPTkcsIEtBTkdOQU0tS1UgU0VPVUwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC01MC0yMSAgIChoZXgpCQlFSVMgSU5URVJOQVRJT05BTCwgSU5DLgotMDA1MDIxICAgICAoYmFzZSAxNikJCUVJUyBJTlRFUk5BVElPTkFMLCBJTkMuCi0JCQkJMTM1MSBXQVNISU5HVE9OIEJMVkQuCi0JCQkJU1RBTUZPUkQgQ1QgMDY5MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTIyICAgKGhleCkJCVpPTkVUIFRFQ0hOT0xPR1ksIElOQy4KLTAwNTAyMiAgICAgKGJhc2UgMTYpCQlaT05FVCBURUNITk9MT0dZLCBJTkMuCi0JCQkJODMwIFJPT00sIEJMREcuIDUzLCAxOTUsIFNFQy40Ci0JCQkJQ0hVTkcgSFNJVU5HIFJELCBDSFVUVU5HCi0JCQkJSFNJTkNIQSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC0yMyAgIChoZXgpCQlQRyBERVNJR04gRUxFQ1RST05JQ1MsIElOQy4KLTAwNTAyMyAgICAgKGJhc2UgMTYpCQlQRyBERVNJR04gRUxFQ1RST05JQ1MsIElOQy4KLQkJCQk0ODcwMCBTVFJVQ1RVUkFMIERSSVZFCi0JCQkJQ0hFU1RFUkZJRUxEIE1JIDQ4MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0yNCAgIChoZXgpCQlOQVZJQyBTWVNURU1TLCBJTkMuCi0wMDUwMjQgICAgIChiYXNlIDE2KQkJTkFWSUMgU1lTVEVNUywgSU5DLgotCQkJCTc0IENSRVNDRU5UIFNUUkVFVAotCQkJCU5FRURIQU0gTUEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTI2ICAgKGhleCkJCUNPU1lTVEVNUywgSU5DLgotMDA1MDI2ICAgICAoYmFzZSAxNikJCUNPU1lTVEVNUywgSU5DLgotCQkJCTEyNjMgT0FLTUVBRCBQQVJLV0FZCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0yNyAgIChoZXgpCQlHRU5JQ09NIENPUlBPUkFUSU9OCi0wMDUwMjcgICAgIChiYXNlIDE2KQkJR0VOSUNPTSBDT1JQT1JBVElPTgotCQkJCTkwMCBDTE9QUEVSIFJPQUQgLSBTVEUuICMxMTAKLQkJCQlHQUlUSEVSU0JVUkcgTUQgMjA4NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTI4ICAgKGhleCkJCUFWQUwgQ09NTVVOSUNBVElPTlMKLTAwNTAyOCAgICAgKGJhc2UgMTYpCQlBVkFMIENPTU1VTklDQVRJT05TCi0JCQkJMTc3NyBOT1JUSCBDQUxJRk9STklBIEJMVkQuCi0JCQkJV0FMTlVUIENSRUVLIENBIDk0NTk2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0yOSAgIChoZXgpCQkxMzk0IFBSSU5URVIgV09SS0lORyBHUk9VUAotMDA1MDI5ICAgICAoYmFzZSAxNikJCTEzOTQgUFJJTlRFUiBXT1JLSU5HIEdST1VQCi0JCQkJUC5PLiBCT1ggMjMxNTgKLQkJCQlTQU4gSk9TRSBDQSA5NTE1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMkEgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDJBICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQlNL1MgU0pBLTIKLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMkIgICAoaGV4KQkJR0VOUkFEIExURC4KLTAwNTAyQiAgICAgKGJhc2UgMTYpCQlHRU5SQUQgTFRELgotCQkJCU9SSU9OIEJVU0lORVNTIFBBUksKLQkJCQlCSVJESEFMTCBMQU5FIFNUT0NLUE9SVCwgQ0hFU0hJUkUKLQkJCQlVTklURUQgS0lOR0RPTSBTSzMgT1hHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtMkMgICAoaGV4KQkJU09ZTyBDT01QVVRFUiwgSU5DLgotMDA1MDJDICAgICAoYmFzZSAxNikJCVNPWU8gQ09NUFVURVIsIElOQy4KLQkJCQlOTy4gMjEgV1UtS1VORyA1IFJELgotCQkJCUhTSU5HIENIVUFORyBDSVRZIFRBSVBFSSBIU0lFTgotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC0yRCAgIChoZXgpCQlBQ0NFTCwgSU5DLgotMDA1MDJEICAgICAoYmFzZSAxNikJCUFDQ0VMLCBJTkMuCi0JCQkJMUYsIE5PLiA3LCBSJkQgMVNUIFJPQUQKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtMkUgICAoaGV4KQkJQ0FNQkVYIENPUlBPUkFUSU9OCi0wMDUwMkUgICAgIChiYXNlIDE2KQkJQ0FNQkVYIENPUlBPUkFUSU9OCi0JCQkJMTE1IEZsYW5kZXJzIFJvYWQKLQkJCQlXZXN0Ym9yb3VnaCBNQSAwMTU4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMkYgICAoaGV4KQkJVG9sbEJyaWRnZSBUZWNobm9sb2dpZXMsIEluYy4KLTAwNTAyRiAgICAgKGJhc2UgMTYpCQlUb2xsQnJpZGdlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTg3MiBIRVJNT1NBIERSSVZFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zMCAgIChoZXgpCQlGVVRVUkUgUExVUyBTWVNURU1TCi0wMDUwMzAgICAgIChiYXNlIDE2KQkJRlVUVVJFIFBMVVMgU1lTVEVNUwotCQkJCTM2IE9MREUgRU5HTElTSCBSRC4KLQkJCQlCRURGT1JEIE5IIDAzMTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zMSAgIChoZXgpCQlBRVJPRkxFWCBMQUJPUkFUT1JJRVMsIElOQy4KLTAwNTAzMSAgICAgKGJhc2UgMTYpCQlBRVJPRkxFWCBMQUJPUkFUT1JJRVMsIElOQy4KLQkJCQkzNSBTT1VUSCBTRVJWSUNFIFJPQUQKLQkJCQlQTEFJTlZJRVcgTlkgMTE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTMyICAgKGhleCkJCVBJQ0FaTyBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA1MDMyICAgICAoYmFzZSAxNikJCVBJQ0FaTyBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTYxIERBR0dFVFQgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtMzMgICAoaGV4KQkJTUFZQU4gTkVUV09SS1MKLTAwNTAzMyAgICAgKGJhc2UgMTYpCQlNQVlBTiBORVRXT1JLUwotCQkJCTMzNTAgU0NPVFQgQkxWRC4gLSBCTERHLiAjOQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zNiAgIChoZXgpCQlORVRDQU0sIExURC4KLTAwNTAzNiAgICAgKGJhc2UgMTYpCQlORVRDQU0sIExURC4KLQkJCQk2MDcxIE4uIFBBU0VPIFpBTERJVkFSCi0JCQkJVFVDU09OIEFaIDg1NzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC0zNyAgIChoZXgpCQlLT0dBIEVMRUNUUk9OSUNTIENPLgotMDA1MDM3ICAgICAoYmFzZSAxNikJCUtPR0EgRUxFQ1RST05JQ1MgQ08uCi0JCQkJNS04LTEwLCBURUhBUkEsIFJJVFRPLUNITwotCQkJCUtVUklUQSBHVU4KLQkJCQlTSElHQSwgNDIwLTMwNDcgIAotCQkJCUpBUEFOCi0KLTAwLTUwLTM4ICAgKGhleCkJCURBSU4gVEVMRUNPTSBDTy4sIExURC4KLTAwNTAzOCAgICAgKGJhc2UgMTYpCQlEQUlOIFRFTEVDT00gQ08uLCBMVEQuCi0JCQkJMk5EIEZsci4sIE9ILVNVTkcgQkxERy4gIzItMjgKLQkJCQlZQU5HSkFFLURPTkcsIFNFT0NITy1HVSBTRU9VTCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNTAtMzkgICAoaGV4KQkJTUFSSU5FUiBORVRXT1JLUwotMDA1MDM5ICAgICAoYmFzZSAxNikJCU1BUklORVIgTkVUV09SS1MKLQkJCQkxNTg1IFMuIE1BTkNIRVNURVIgQVZFLgotCQkJCUFOQUhFSU0gQ0EgOTI4MDItMjkwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtM0EgICAoaGV4KQkJREFUT05HIEVMRUNUUk9OSUNTIExURC4KLTAwNTAzQSAgICAgKGJhc2UgMTYpCQlEQVRPTkcgRUxFQ1RST05JQ1MgTFRELgotCQkJCUNMQVlUT04gV09PRCBDTE9TRQotCQkJCVdFU1QgUEFSSwotCQkJCUxlZWRzIExTMTYgNlFFICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC0zQiAgIChoZXgpCQlNRURJQUZJUkUgQ09SUE9SQVRJT04KLTAwNTAzQiAgICAgKGJhc2UgMTYpCQlNRURJQUZJUkUgQ09SUE9SQVRJT04KLQkJCQkxMTMxNyBGUkVERVJJQ0sgQVZFTlVFCi0JCQkJQkVMVFNWSUxMRSBNRCAyMDcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtM0MgICAoaGV4KQkJVFNJTkdIVUEgTk9WRUwgRUxFQ1RST05JQ1MKLTAwNTAzQyAgICAgKGJhc2UgMTYpCQlUU0lOR0hVQSBOT1ZFTCBFTEVDVFJPTklDUwotCQkJCUNPLiwgTFRELgotCQkJCVJPT00gMTIwNSwgSFVBWUUgQlVJTERJTkcgVFNJTkdIVUEgVU5JVkUKLQkJCQkxMDAwODQgMTAwMDg0IENISU5BCi0JCQkJQ0hJTkEKLQotMDAtNTAtM0UgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDNFICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJTS9TLyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTNGICAgKGhleCkJCUFOQ0hPUiBHQU1FUwotMDA1MDNGICAgICAoYmFzZSAxNikJCUFOQ0hPUiBHQU1FUwotCQkJCTgxNSBQSUxPVCBST0FELCBTdWl0ZSBHCi0JCQkJTEFTIFZFR0FTIE5WIDg5MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC00MCAgIChoZXgpCQlQYW5hc29uaWMgRWxlY3RyaWMgV29ya3MgQ28uLCBMdGQuCi0wMDUwNDAgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIEVsZWN0cmljIFdvcmtzIENvLiwgTHRkLgotCQkJCVRzdS1GYWN0b3J5LCAxNjY4LCBGdWppa2F0YQotCQkJCVRzdS1zaGkgTWllLWtlbiA1MTQtODU1NQotCQkJCUpBUEFOCi0KLTAwLTUwLTQxICAgKGhleCkJCUNvcmV0cm9uaWMgQ29ycG9yYXRpb24KLTAwNTA0MSAgICAgKGJhc2UgMTYpCQlDb3JldHJvbmljIENvcnBvcmF0aW9uCi0JCQkJTk8uMTEsIExJIEhTSU4gUkQuCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSElTTkNIVQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtNDIgICAoaGV4KQkJU0NJIE1BTlVGQUNUVVJJTkcgU0lOR0FQT1JFIFBURSwgTFRELgotMDA1MDQyICAgICAoYmFzZSAxNikJCVNDSSBNQU5VRkFDVFVSSU5HIFNJTkdBUE9SRSBQVEUsIExURC4KLQkJCQkzIERFUE9UIENMT1NFCi0JCQkJU0lOR0FQT1JFIDEwOTg0MCAKLQkJCQlTSU5HQVBPUkUKLQotMDAtNTAtNDMgICAoaGV4KQkJTUFSVkVMTCBTRU1JQ09ORFVDVE9SLCBJTkMuCi0wMDUwNDMgICAgIChiYXNlIDE2KQkJTUFSVkVMTCBTRU1JQ09ORFVDVE9SLCBJTkMuCi0JCQkJNjQ1IEFMTUFOT1IgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC00NCAgIChoZXgpCQlBU0FDQSBDT1JQT1JBVElPTgotMDA1MDQ0ICAgICAoYmFzZSAxNikJCUFTQUNBIENPUlBPUkFUSU9OCi0JCQkJNDIwIENPUlBPUkFURSBDSVJDTEUsIFVuaXQgSAotCQkJCUdPTERFTiBDTyA4MDQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNDUgICAoaGV4KQkJUklPV09SS1MgU09MVVRJT05TLCBJTkMuCi0wMDUwNDUgICAgIChiYXNlIDE2KQkJUklPV09SS1MgU09MVVRJT05TLCBJTkMuCi0JCQkJNEYsIE5PLjI4LCBMQU5FIDU4MwotCQkJCUpVSS1LV0FORyBST0FEIFRBSVBFSSwgIDExNDU3Ci0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTQ2ICAgKGhleCkJCU1FTklDWCBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotMDA1MDQ2ICAgICAoYmFzZSAxNikJCU1FTklDWCBJTlRFUk5BVElPTkFMIENPLiwgTFRELgotCQkJCU5PLjksIE1JTkcgVFNVTiBST0FECi0JCQkJQ0hVVFVORywgSFNJTkNIVQotCQkJCVRBSVdBTiAzMTAgVEFJV0FOIDMxMCBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLTQ3ICAgKGhleCkJCVBSSVZBVEUKLTAwNTA0NyAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDAtNTAtNDggICAoaGV4KQkJSU5GT0xJQlJJQQotMDA1MDQ4ICAgICAoYmFzZSAxNikJCUlORk9MSUJSSUEKLQkJCQk0MTEgV0FWRVJMWSBPQUtTIFJELVNURSAjMzIzCi0JCQkJV0FMVEhBTSBNQSAwMjE1NC04NDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC00OSAgIChoZXgpCQlBcmJvciBOZXR3b3JrcyBJbmMKLTAwNTA0OSAgICAgKGJhc2UgMTYpCQlBcmJvciBOZXR3b3JrcyBJbmMKLQkJCQk2IE9tbmkgV2F5Ci0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNEEgICAoaGV4KQkJRUxURUNPIEEuUy4KLTAwNTA0QSAgICAgKGJhc2UgMTYpCQlFTFRFQ08gQS5TLgotCQkJCVJPU0lOU0tBIENFU1RBICBQLk8uIEJPWCBDLTkKLQkJCQkwMTAwMSBaSUxJTkEKLQkJCQlTTE9WQUtJQQotCQkJCVNMT1ZBS0lBCi0KLTAwLTUwLTRCICAgKGhleCkJCUJBUkNPTkVUIE4uVi4KLTAwNTA0QiAgICAgKGJhc2UgMTYpCQlCQVJDT05FVCBOLlYuCi0JCQkJTFVJUEFBUkRTVFJBQVQgMTIKLQkJCQk4NTAwIEtPUlRSSUpLCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtNTAtNEMgICAoaGV4KQkJR2FsaWwgTW90aW9uIENvbnRyb2wKLTAwNTA0QyAgICAgKGJhc2UgMTYpCQlHYWxpbCBNb3Rpb24gQ29udHJvbAotCQkJCTI3MCBUZWNobm9sb2d5IFdheQotCQkJCVJvY2tsaW4gQ0EgOTU3NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTREICAgKGhleCkJCVRva3lvIEVsZWN0cm9uIERldmljZSBMaW1pdGVkCi0wMDUwNEQgICAgIChiYXNlIDE2KQkJVG9reW8gRWxlY3Ryb24gRGV2aWNlIExpbWl0ZWQKLQkJCQkxLCBIaWdhc2hpa2F0YS1tYWNoaSwgVHN1enVraS1rdSwKLQkJCQlZb2tvaGFtYS1zaGkgS2FuYWdhd2Eta2VuIAotCQkJCUpBUEFOCi0KLTAwLTUwLTRFICAgKGhleCkJCVNJRVJSQSBNT05JVE9SIENPUlAuCi0wMDUwNEUgICAgIChiYXNlIDE2KQkJU0lFUlJBIE1PTklUT1IgQ09SUC4KLQkJCQkxOTkxIFRBUk9CIENPVVJUCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTRGICAgKGhleCkJCU9MRU5DT00gRUxFQ1RST05JQ1MKLTAwNTA0RiAgICAgKGJhc2UgMTYpCQlPTEVOQ09NIEVMRUNUUk9OSUNTCi0JCQkJU09MVEFNIElORFVTVFJJQUwgUEFSSwotCQkJCVAuTy4gQk9YIDE5NgotCQkJCVlPS05FQU0gMjA2OTIgIAotCQkJCUlTUkFFTAotCi0wMC01MC01MCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwNTAgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTEgICAoaGV4KQkJSVdBVFNVIEVMRUNUUklDIENPLiwgTFRELgotMDA1MDUxICAgICAoYmFzZSAxNikJCUlXQVRTVSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQk3LTQxLCBLVUdBWUFNQSAxLUNIT01FCi0JCQkJU1VHSU5BTUktS1UsIFRPS1lPIDE2OC04NTAxICAKLQkJCQlKQVBBTgotCi0wMC01MC01MiAgIChoZXgpCQlUSUFSQSBORVRXT1JLUywgSU5DLgotMDA1MDUyICAgICAoYmFzZSAxNikJCVRJQVJBIE5FVFdPUktTLCBJTkMuCi0JCQkJMTEzIEZPT1JJRVIgQVZFTlVFCi0JCQkJRlJFTU9OVCBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDUzICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFLVNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTQgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA1MDU0ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQlNL1MgU0pBLTIKLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTUgICAoaGV4KQkJRE9NUyBBL1MKLTAwNTA1NSAgICAgKGJhc2UgMTYpCQlET01TIEEvUwotCQkJCUZPUk1FUlZBTkdFTiAyOAotCQkJCURLLTI2MDAgR0xPU1RSVVAKLQkJCQlERU5NQVJLCi0JCQkJREVOTUFSSwotCi0wMC01MC01NiAgIChoZXgpCQlWTXdhcmUsIEluYy4KLTAwNTA1NiAgICAgKGJhc2UgMTYpCQlWTXdhcmUsIEluYy4KLQkJCQkzNDAxIEhpbGx2aWV3IEF2ZW51ZQotCQkJCVBBTE8gQUxUTyBDQSA5NDMwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTcgICAoaGV4KQkJQlJPQURCQU5EIEFDQ0VTUyBTWVNURU1TCi0wMDUwNTcgICAgIChiYXNlIDE2KQkJQlJPQURCQU5EIEFDQ0VTUyBTWVNURU1TCi0JCQkJMjAxIEZPUkVTVCBTVFJFRVQKLQkJCQlNQVJMQk9ST1VHSCBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNTggICAoaGV4KQkJVmVnYVN0cmVhbSBHcm91cCBMaW10ZWQKLTAwNTA1OCAgICAgKGJhc2UgMTYpCQlWZWdhU3RyZWFtIEdyb3VwIExpbXRlZAotCQkJCUFzbWVjIENlbnRyZSwgRWFnbGUgSG91c2UKLQkJCQlUaGUgUmluZwotCQkJCUJyYWNrbmVsbCBCZXJrc2hpcmUgUkcxMiAxSEIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC01OSAgIChoZXgpCQlpQkFITgotMDA1MDU5ICAgICAoYmFzZSAxNikJCWlCQUhOCi0JCQkJMTA3NTcgUy4gUml2ZXIgRnJvbnQgUGFya3dheQotCQkJCVN1aXRlIDMwMAotCQkJCVNvdXRoIEpvcmRhbiBVVCA4NDA5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNUEgICAoaGV4KQkJTkVUV09SSyBBTENIRU1ZLCBJTkMuCi0wMDUwNUEgICAgIChiYXNlIDE2KQkJTkVUV09SSyBBTENIRU1ZLCBJTkMuCi0JCQkJMTUyMS41IFBBQ0lGSUMgQVZFTlVFCi0JCQkJU0FOVEEgQ1JVWiBDQSA5NTA2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNUIgICAoaGV4KQkJS0FXQVNBS0kgTFNJIFUuUy5BLiwgSU5DLgotMDA1MDVCICAgICAoYmFzZSAxNikJCUtBV0FTQUtJIExTSSBVLlMuQS4sIElOQy4KLQkJCQkyNTcwIE5PUlRIRklSU1QgU1RSRUVUCi0JCQkJU1VJVEUgIzMwMQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC01QyAgIChoZXgpCQlUVU5ETyBDT1JQT1JBVElPTgotMDA1MDVDICAgICAoYmFzZSAxNikJCVRVTkRPIENPUlBPUkFUSU9OCi0JCQkJNyBHSUJPUkVJIElTUkFFTCBTVFJFRVQKLQkJCQlOQVRBTllBIDQyNTA0ICAKLQkJCQlJU1JBRUwKLQotMDAtNTAtNUUgICAoaGV4KQkJRElHSVRFSyBNSUNST0xPR0lDIFMuQS4KLTAwNTA1RSAgICAgKGJhc2UgMTYpCQlESUdJVEVLIE1JQ1JPTE9HSUMgUy5BLgotCQkJCVNBTlQgSk9BTiBERSBMQSBTQUxMRSA2Ci0JCQkJRTA4MDIyIEJBUkNFTE9OQQotCQkJCVNQQUlOCi0JCQkJU1BBSU4KLQotMDAtNTAtNUYgICAoaGV4KQkJQlJBTkQgSU5OT1ZBVE9SUwotMDA1MDVGICAgICAoYmFzZSAxNikJCUJSQU5EIElOTk9WQVRPUlMKLQkJCQlERSBQSU5DSyBBUlQgNTQKLQkJCQk1Njc0IENDIE5VRU5FTiAgCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtNTAtNjAgICAoaGV4KQkJVEFOREJFUkcgVEVMRUNPTSBBUwotMDA1MDYwICAgICAoYmFzZSAxNikJCVRBTkRCRVJHIFRFTEVDT00gQVMKLQkJCQlQaGlsaXAgUGVkZXJzZW5zIHZlaSAyMAotCQkJCTEzNjEgTHlzYWtlciAKLQkJCQlOT1JXQVkKLQotMDAtNTAtNjIgICAoaGV4KQkJS09VV0VMTCBFTEVDVFJPTklDUyBDT1JQLiAgKioKLTAwNTA2MiAgICAgKGJhc2UgMTYpCQlLT1VXRUxMIEVMRUNUUk9OSUNTIENPUlAuICAqKgotCQkJCTdGLCBOTy45OSwgTkFOLUtBTkcgUk9BRAotCQkJCVNFQy4gMywgVEFJUEVJCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC02MyAgIChoZXgpCQlPWSBDT01TRUwgU1lTVEVNIEFCCi0wMDUwNjMgICAgIChiYXNlIDE2KQkJT1kgQ09NU0VMIFNZU1RFTSBBQgotCQkJCVRFR0VMQlJVS1NHQVRBTiA1LTcKLQkJCQlGSU4tNjUxMDAgVkFTQSAgCi0JCQkJRklOTEFORAotCi0wMC01MC02NCAgIChoZXgpCQlDQUUgRUxFQ1RST05JQ1MKLTAwNTA2NCAgICAgKGJhc2UgMTYpCQlDQUUgRUxFQ1RST05JQ1MKLQkJCQlQLk8uIEJPWCAxODAwCi0JCQkJU1QuIExBVVJFTlQsIFFVRUJFQyBINEwgNFg0ICAKLQkJCQlDQU5BREEKLQotMDAtNTAtNjUgICAoaGV4KQkJVERLLUxhbWJkYSBDb3Jwb3JhdGlvbgotMDA1MDY1ICAgICAoYmFzZSAxNikJCVRESy1MYW1iZGEgQ29ycG9yYXRpb24KLQkJCQkzNi0xIEthc3VtaW5vc2F0bwotCQkJCUFtaS1NYWNoaSBJbmFzaGlraS1HdW4gSWJhcmFraSwgMzAwLTAzOTYKLQkJCQlKQVBBTgotCi0wMC01MC02NiAgIChoZXgpCQlBdGVjb00gR21iSCBhZHZhbmNlZCB0ZWxlY29tdW5pY2F0aW9uIG1vZHVsZXMKLTAwNTA2NiAgICAgKGJhc2UgMTYpCQlBdGVjb00gR21iSCBhZHZhbmNlZCB0ZWxlY29tdW5pY2F0aW9uIG1vZHVsZXMKLQkJCQlLQUlTRVJTVFIuIDEwMAotCQkJCUQtNTIxMzQgSEVSWk9HRU5SQVRIICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLTY3ICAgKGhleCkJCUFFUk9DT01NLCBJTkMuCi0wMDUwNjcgICAgIChiYXNlIDE2KQkJQUVST0NPTU0sIElOQy4KLQkJCQkxMzI1NiBXLiA5OFRIIFNUUkVFVAotCQkJCUxFTkVYQSBLUyA2NjIxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNjggICAoaGV4KQkJRUxFQ1RST05JQyBJTkRVU1RSSUVTIEFTU09DSUFUSU9OCi0wMDUwNjggICAgIChiYXNlIDE2KQkJRUxFQ1RST05JQyBJTkRVU1RSSUVTIEFTU09DSUFUSU9OCi0JCQkJMjUwMCBXSUxTT04gQkxWRC4KLQkJCQlBUkxJTkdUT04gVkEgMjIyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTY5ICAgKGhleCkJCVBpeFN0cmVhbSBJbmNvcnBvcmF0ZWQKLTAwNTA2OSAgICAgKGJhc2UgMTYpCQlQaXhTdHJlYW0gSW5jb3Jwb3JhdGVkCi0JCQkJMTgwIENPTFVNQklBIFNULiBXLgotCQkJCVdBVEVSTE9PCi0JCQkJT250YXJpbyBOMkwgM0wzICAKLQkJCQlDQU5BREEKLQotMDAtNTAtNkEgICAoaGV4KQkJRURFVkEsIElOQy4KLTAwNTA2QSAgICAgKGJhc2UgMTYpCQlFREVWQSwgSU5DLgotCQkJCTI5OCBTLiBTVU5OWVZBTEUgQVZFLiAtICMyMDgKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTZCICAgKGhleCkJCVNQWC1BVEVHCi0wMDUwNkIgICAgIChiYXNlIDE2KQkJU1BYLUFURUcKLQkJCQk4MDIgUy4gTUFJTiBTVFJFRVQKLQkJCQlXQVlMQU5EIE1JIDQ5MzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC02QyAgIChoZXgpCQlCZWlqZXIgRWxlY3Ryb25pY3MgUHJvZHVjdHMgQUIKLTAwNTA2QyAgICAgKGJhc2UgMTYpCQlCZWlqZXIgRWxlY3Ryb25pY3MgUHJvZHVjdHMgQUIKLQkJCQlCb3ggNDI2Ci0JCQkJU0UtMjAxIDI0IE1hbG1vZSAKLQkJCQlTV0VERU4KLQotMDAtNTAtNkQgICAoaGV4KQkJVklERU9KRVQgU1lTVEVNUwotMDA1MDZEICAgICAoYmFzZSAxNikJCVZJREVPSkVUIFNZU1RFTVMKLQkJCQlJTlRFUk5BVElPTkFMIElOQy4KLQkJCQkxNTAwIE1JVFRFTCBCTFZELgotCQkJCVdPT0REQUxFIElMIDYwMDkxLTEwNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTZFICAgKGhleCkJCUNPUkRFUiBFTkdJTkVFUklORyBDT1JQT1JBVElPTgotMDA1MDZFICAgICAoYmFzZSAxNikJCUNPUkRFUiBFTkdJTkVFUklORyBDT1JQT1JBVElPTgotCQkJCTE1MSBLQUxNVVMgRFJJVkUgLSBTVEUgI0ExMDMKLQkJCQlDT1NUQSBNRVNBIENBIDkyNjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC02RiAgIChoZXgpCQlHLUNPTk5FQ1QKLTAwNTA2RiAgICAgKGJhc2UgMTYpCQlHLUNPTk5FQ1QKLQkJCQlQLk8uIEJPWCAyMjAwCi0JCQkJSEVSWkxJWUEgNDYxMjAgIAotCQkJCUlTUkFFTAotCi0wMC01MC03MCAgIChoZXgpCQlDSEFJTlRFQ0ggQ09NUFVURVIgQ08uLCBMVEQuCi0wMDUwNzAgICAgIChiYXNlIDE2KQkJQ0hBSU5URUNIIENPTVBVVEVSIENPLiwgTFRELgotCQkJCTVUSCBGLCBBTExFWSAyLCBMQU5FIDIyMgotCQkJCUxJRU4tQ0hFTkcgUkQuLCBDSFVORy1ITyBUQUlQRUktSFNJRU4KLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC03MSAgIChoZXgpCQlBSVdBIENPLiwgTFRELgotMDA1MDcxICAgICAoYmFzZSAxNikJCUFJV0EgQ08uLCBMVEQuCi0JCQkJMS0xMSwgS0FNSVRPTUFUU1VSSSA0LUNIT01FCi0JCQkJVVRTVU5PTUlZQS1TSEksIFRPQ0hJR0ktS0VOIDMyMC04NSAgCi0JCQkJSkFQQU4KLQotMDAtNTAtNzIgICAoaGV4KQkJQ09SVklTIENPUlBPUkFUSU9OCi0wMDUwNzIgICAgIChiYXNlIDE2KQkJQ09SVklTIENPUlBPUkFUSU9OCi0JCQkJODMyMCBHVUlMRk9SRCBST0FECi0JCQkJQ09MVU1CSUEgTUQgMjEwNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTczICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTA3MyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCU0vUyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTc0ICAgKGhleCkJCUFEVkFOQ0VEIEhJLVRFQ0ggQ09SUC4KLTAwNTA3NCAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBISS1URUNIIENPUlAuCi0JCQkJMTk5MCBFQVNUIEdSQU5EIEFWRS4KLQkJCQlFTCBTRUdVTkRPIENBIDkwNTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC03NSAgIChoZXgpCQlLRVNUUkVMIFNPTFVUSU9OUwotMDA1MDc1ICAgICAoYmFzZSAxNikJCUtFU1RSRUwgU09MVVRJT05TCi0JCQkJMjM3MCBDSEFSTEVTVE9OIFJPQUQKLQkJCQlNVC4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtNzYgICAoaGV4KQkJSUJNIENvcnAKLTAwNTA3NiAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQIE8gQm94IDEyMTk1Ci0JCQkJUmVlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTc3ICAgKGhleCkJCVBST0xJRklDIFRFQ0hOT0xPR1ksIElOQy4KLTAwNTA3NyAgICAgKGJhc2UgMTYpCQlQUk9MSUZJQyBURUNITk9MT0dZLCBJTkMuCi0JCQkJNkYgMSwgTEFORSA1MSwgU0VDIDEKLQkJCQlOQU4tQ0hBTiBST0FEIFRBSVBFSQotCQkJCTEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtNzggICAoaGV4KQkJTUVHQVRPTiBIT1VTRSwgTFRELgotMDA1MDc4ICAgICAoYmFzZSAxNikJCU1FR0FUT04gSE9VU0UsIExURC4KLQkJCQlaSVA6IDIyNCBOTy4xLTMtNSBOQUtBTUFDSElCQUkKLQkJCQlUU1VEVUtJIFdBUkQKLQkJCQlZT0tPSEFNQSAgCi0JCQkJSkFQQU4KLQotMDAtNTAtNzkgICAoaGV4KQkJUFJJVkFURQotMDA1MDc5ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC01MC03QSAgIChoZXgpCQlYUEVFRCwgSU5DLgotMDA1MDdBICAgICAoYmFzZSAxNikJCVhQRUVELCBJTkMuCi0JCQkJNDY5OSBPTEQgSVJPTlNJREVTIERSSVZFCi0JCQkJU1VJVEUgIzMwMAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC03QiAgIChoZXgpCQlNRVJMT1QgQ09NTVVOSUNBVElPTlMKLTAwNTA3QiAgICAgKGJhc2UgMTYpCQlNRVJMT1QgQ09NTVVOSUNBVElPTlMKLQkJCQlCRVJLU0hJUkUgQ09SUE9SQVRFIFBBUksKLQkJCQk0IEJFUktTSElSRSBCTFZELgotCQkJCUJFVEhFTCBDVCAwNjgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtN0MgICAoaGV4KQkJVklERU9DT04gQUcKLTAwNTA3QyAgICAgKGJhc2UgMTYpCQlWSURFT0NPTiBBRwotCQkJCUFMQkVSVC1TQ0hXRUlUWkVSLVNUUi4gNjQKLQkJCQlELTgxNzM1IE1VTklDSAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLTdEICAgKGhleCkJCUlGUAotMDA1MDdEICAgICAoYmFzZSAxNikJCUlGUAotCQkJCUxFU1NJTkdTVFIuIDQKLQkJCQlELTc4MzE1IFJBRE9MRlpFTEwgIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtN0UgICAoaGV4KQkJTkVXRVIgVEVDSE5PTE9HWQotMDA1MDdFICAgICAoYmFzZSAxNikJCU5FV0VSIFRFQ0hOT0xPR1kKLQkJCQk0ODQ4IFdFU1QgSVJWSU5HIFNULgotCQkJCVdJQ0hJVEEgS1MgNjcyMDktMjYyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtN0YgICAoaGV4KQkJRHJheVRlayBDb3JwLgotMDA1MDdGICAgICAoYmFzZSAxNikJCURyYXlUZWsgQ29ycC4KLQkJCQkyNiwgRnVzaGluZyBSZC4KLQkJCQlIc2luY2h1IEluZHVzdHJpYWwgUGFyawotCQkJCUhzaW5jaHUgSHVrb3UgMzAzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC04MCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwODAgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCU0vUyBTSkEtMgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC04MSAgIChoZXgpCQlNVVJBVEEgTUFDSElORVJZLCBMVEQuCi0wMDUwODEgICAgIChiYXNlIDE2KQkJTVVSQVRBIE1BQ0hJTkVSWSwgTFRELgotCQkJCTEzNiwgVEFLRURBLU1VS0FJU0hJUk8tQ0hPCi0JCQkJRlVTSElNSS1LVSwgS1lPVE8gNjEyLTg2ODYgIAotCQkJCUpBUEFOCi0KLTAwLTUwLTgyICAgKGhleCkJCUZPUkVTU09OIENPUlBPUkFUSU9OCi0wMDUwODIgICAgIChiYXNlIDE2KQkJRk9SRVNTT04gQ09SUE9SQVRJT04KLQkJCQkzRiwgTk8uOSBTRUMuMQotCQkJCUNIQU5HIEFOIEVBU1QgUk9BRAotCQkJCVRBSVBFSSAxMDQwNCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC04MyAgIChoZXgpCQlHSUxCQVJDTywgSU5DLgotMDA1MDgzICAgICAoYmFzZSAxNikJCUdJTEJBUkNPLCBJTkMuCi0JCQkJUE9CIDIyMDg3Ci0JCQkJR1JFRU5TQk9STyBOQyAyNzQyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtODQgICAoaGV4KQkJQVRMIFBST0RVQ1RTCi0wMDUwODQgICAgIChiYXNlIDE2KQkJQVRMIFBST0RVQ1RTCi0JCQkJMjgwMSBLRUxWSU4gQVZFTlVFCi0JCQkJSVJWSU5FIENBIDkyNjE0LTU4NzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTg2ICAgKGhleCkJCVRFTEtPTSBTQSwgTFRELgotMDA1MDg2ICAgICAoYmFzZSAxNikJCVRFTEtPTSBTQSwgTFRELgotCQkJCVRFTEtPTSBMQUJPUkFUT1JZCi0JCQkJUC4gQkFHIFg3NAotCQkJCVBSRVRPUklBICAKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtNTAtODcgICAoaGV4KQkJVEVSQVNBS0kgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDUwODcgICAgIChiYXNlIDE2KQkJVEVSQVNBS0kgRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJNy0yLTEwIEhBTk5BTi1DSE8gQUJFTk8tS1UKLQkJCQlPU0FLQSwgNTQ1LTAwMjEgIAotCQkJCUpBUEFOCi0KLTAwLTUwLTg4ICAgKGhleCkJCUFNQU5PIENPUlBPUkFUSU9OCi0wMDUwODggICAgIChiYXNlIDE2KQkJQU1BTk8gQ09SUE9SQVRJT04KLQkJCQkyNzUsIE1BTUVETy1DSE8KLQkJCQlLT1VIT0tVLUtVLCBZT0tPSEFNQQotCQkJCTIyMi04NTU4ICAKLQkJCQlKQVBBTgotCi0wMC01MC04OSAgIChoZXgpCQlTQUZFVFkgTUFOQUdFTUVOVCBTWVNURU1TCi0wMDUwODkgICAgIChiYXNlIDE2KQkJU0FGRVRZIE1BTkFHRU1FTlQgU1lTVEVNUwotCQkJCUJSQU5ERVJJSlNUUkFBVCA2Ci0JCQkJNTIyMyBBUyAnUy1IRVJUT0dFTkJPU0NIJyAgTkVUSEVSTEFORFMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC01MC04QiAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMDA1MDhCICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMjA1NTUgU3RhdGUgSGlnaHdheSAyNDkKLQkJCQlNUzA0MDgwMQotCQkJCUhvdXN0b24gVFggNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLThDICAgKGhleCkJCVJTSSBTWVNURU1TCi0wMDUwOEMgICAgIChiYXNlIDE2KQkJUlNJIFNZU1RFTVMKLQkJCQk1NTU1IFcuIDc4VEggU1RSRUVULCBTdWl0ZSBGCi0JCQkJRURJTkEgTU4gNTU0MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLThEICAgKGhleCkJCUFCSVQgQ09NUFVURVIgQ09SUE9SQVRJT04KLTAwNTA4RCAgICAgKGJhc2UgMTYpCQlBQklUIENPTVBVVEVSIENPUlBPUkFUSU9OCi0JCQkJM0YtNywgTk8uIDc5LCBTRUMuMQotCQkJCUhTSU4gVEFJIFdVIFJPQUQsIEhTSSBDSEkKLQkJCQlUQUlQRUkgSFNJRU4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtOEUgICAoaGV4KQkJT1BUSU1BVElPTiwgSU5DLgotMDA1MDhFICAgICAoYmFzZSAxNikJCU9QVElNQVRJT04sIElOQy4KLQkJCQlQLk8uIEJPWCAxNDM1NwotCQkJCUhVTlRTVklMTEUgQUwgMzU4MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLThGICAgKGhleCkJCUFTSVRBIFRFQ0hOT0xPR0lFUyBJTlQnTCBMVEQuCi0wMDUwOEYgICAgIChiYXNlIDE2KQkJQVNJVEEgVEVDSE5PTE9HSUVTIElOVCdMIExURC4KLQkJCQlVTklUIDIgQkFMTFlCUklUIEJVU0lORVNTIFBBUksKLQkJCQlHQUxXQVkKLQkJCQlJUkVMQU5ECi0KLTAwLTUwLTkwICAgKGhleCkJCURDVFJJCi0wMDUwOTAgICAgIChiYXNlIDE2KQkJRENUUkkKLQkJCQlOTy40MCBYVUUgWVVBTiBSRAotCQkJCUhBSURJQU4gRElTVFJJQ1QgQkVJSklORywgMTAwMDgzLCBQLlIuCi0JCQkJQ0hJTkEKLQkJCQlDSElOQQotCi0wMC01MC05MSAgIChoZXgpCQlORVRBQ0NFU1MsIElOQy4KLTAwNTA5MSAgICAgKGJhc2UgMTYpCQlORVRBQ0NFU1MsIElOQy4KLQkJCQkxOCBLRUVXQVlESU4gRFJJVkUKLQkJCQlTQUxFTSBOSCAwMzA3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtOTIgICAoaGV4KQkJUklHQUtVIElORFVTVFJJQUwgQ09SUE9SQVRJT04KLTAwNTA5MiAgICAgKGJhc2UgMTYpCQlSSUdBS1UgSU5EVVNUUklBTCBDT1JQT1JBVElPTgotCQkJCTE0LTggQUtBT0pJLUNITwotCQkJCVRBS0FUU1VLSS1TSEksIE9TQUtBIDU2OS0xMTQ2ICAKLQkJCQlKQVBBTgotCi0wMC01MC05MyAgIChoZXgpCQlCT0VJTkcKLTAwNTA5MyAgICAgKGJhc2UgMTYpCQlCT0VJTkcKLQkJCQkzMzcwIE1pcmFsb21hIEF2ZW51ZQotCQkJCUFuYWhlaW0gQ0EgOTI4MDMtMzEwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtOTQgICAoaGV4KQkJUEFDRSBwbGMKLTAwNTA5NCAgICAgKGJhc2UgMTYpCQlQQUNFIHBsYwotCQkJCVZJQ1RPUklBIFJELCBTQUxUQUlSRQotCQkJCVNISVBMRVksIFcuIFlPUktTSElSRSBCUkFERk9SRCAgQkQyOCAzTEYKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtOTUgICAoaGV4KQkJUEVSQUNPTSBORVRXT1JLUwotMDA1MDk1ICAgICAoYmFzZSAxNikJCVBFUkFDT00gTkVUV09SS1MKLQkJCQkxMzAwMCBXRVNUT04gUEFSS1dBWQotCQkJCVNVSVRFICMxMDUKLQkJCQlDQVJZIE5DIDI3NTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC05NiAgIChoZXgpCQlTQUxJWCBURUNITk9MT0dJRVMsIElOQy4KLTAwNTA5NiAgICAgKGJhc2UgMTYpCQlTQUxJWCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk5MDQgV0lORCBSSVZFUiBMQU5FLSBTVEUuICMxMDEKLQkJCQlHQUlUSEVSU0JVUkcgTUQgMjA4NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLTk3ICAgKGhleCkJCU1NQy1FTUJFRERFRCBDT01QVVRFUlRFQ0hOSUsgR21iSAotMDA1MDk3ICAgICAoYmFzZSAxNikJCU1NQy1FTUJFRERFRCBDT01QVVRFUlRFQ0hOSUsgR21iSAotCQkJCVVMUklDSFNCRVJHRVJTVFIuIDE3Ci0JCQkJRC05NDQ2OSBERUdHRU5ET1JGICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLTk4ICAgKGhleCkJCUdMT0JBTE9PUCwgTFRELgotMDA1MDk4ICAgICAoYmFzZSAxNikJCUdMT0JBTE9PUCwgTFRELgotCQkJCTEyIEhBU0hBUk9OIFJPQUQKLQkJCQlLRkFSIFNBQkEgNDQyNjkgIAotCQkJCUlTUkFFTAotCi0wMC01MC05OSAgIChoZXgpCQkzQ09NIEVVUk9QRSwgTFRELgotMDA1MDk5ICAgICAoYmFzZSAxNikJCTNDT00gRVVST1BFLCBMVEQuCi0JCQkJQk9VTkRBUlkgV0FZCi0JCQkJSEVNRUwgSEVNUFNURUFECi0JCQkJSEVSVFMuIEhQMiA3WVUgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTUwLTlBICAgKGhleCkJCVRBRyBFTEVDVFJPTklDIFNZU1RFTVMKLTAwNTA5QSAgICAgKGJhc2UgMTYpCQlUQUcgRUxFQ1RST05JQyBTWVNURU1TCi0JCQkJR0VORVNJUyBCVVNJTkVTUyBQQVJLCi0JCQkJQWxiZXJ0IERyaXZlCi0JCQkJV09LSU5HLCBTVVJSRVkgR1UyMSA1UlcgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTUwLTlCICAgKGhleCkJCVNXSVRDSENPUkUgQUIKLTAwNTA5QiAgICAgKGJhc2UgMTYpCQlTV0lUQ0hDT1JFIEFCCi0JCQkJUE9TSVRJT05FTiAxNTMKLQkJCQkxMTUgNzQgU1RPQ0tIT0xNCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLTUwLTlDICAgKGhleCkJCUJFVEEgUkVTRUFSQ0gKLTAwNTA5QyAgICAgKGJhc2UgMTYpCQlCRVRBIFJFU0VBUkNICi0JCQkJQkVUQVNUUi4gMQotCQkJCTg1Nzc0IFVOVEVSRk9FSFJJTkcgIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtOUQgICAoaGV4KQkJVEhFIElORFVTVFJFRSBCLlYuCi0wMDUwOUQgICAgIChiYXNlIDE2KQkJVEhFIElORFVTVFJFRSBCLlYuCi0JCQkJUC5PLiBCT1ggNDYyCi0JCQkJNTYwMCBBTCBFSU5ESE9WRU4KLQkJCQlUSEUgTkVUSEVSTEFORFMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC01MC05RSAgIChoZXgpCQlMZXMgVGVjaG5vbG9naWVzIFNvZnRBY291c3RpayBJbmMuCi0wMDUwOUUgICAgIChiYXNlIDE2KQkJTGVzIFRlY2hub2xvZ2llcyBTb2Z0QWNvdXN0aWsgSW5jLgotCQkJCQotCQkJCTM5MCwgUlVFIFNBSU5ULVZBTExJRVIgRVNULCA0dGggZmxvb3IKLQkJCQlRdWViZWMgRzFLICAzUDYgIAotCQkJCUNBTkFEQQotCi0wMC01MC05RiAgIChoZXgpCQlIT1JJWk9OIENPTVBVVEVSCi0wMDUwOUYgICAgIChiYXNlIDE2KQkJSE9SSVpPTiBDT01QVVRFUgotCQkJCVRSSU5JVFkgQkxERy4gNC0yMi03Ci0JCQkJTklTSEktQVpBQlUsIE1JTkFUTy1LVQotCQkJCSBUT0tZTyAxMDYgIAotCQkJCUpBUEFOCi0KLTAwLTUwLUEwICAgKGhleCkJCURFTFRBIENPTVBVVEVSIFNZU1RFTVMsIElOQy4KLTAwNTBBMCAgICAgKGJhc2UgMTYpCQlERUxUQSBDT01QVVRFUiBTWVNURU1TLCBJTkMuCi0JCQkJMTE3MTkgTkUgOTVUSCBTVFJFRVQgLSBTVEUuCi0JCQkJVkFOQ09VVkVSIFdBIDk4NjgyLTI0NDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUExICAgKGhleCkJCUNBUkxPIEdBVkFaWkksIElOQy4KLTAwNTBBMSAgICAgKGJhc2UgMTYpCQlDQVJMTyBHQVZBWlpJLCBJTkMuCi0JCQkJMjIyIFBFTk5CUklHSFQgRFIuIC0gU1RFLiMyMTAKLQkJCQlIT1VTVE9OIFRYIDc3MDkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1BMiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwQTIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUgLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUEzICAgKGhleCkJCVRyYW5zTWVkaWEgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTAwNTBBMyAgICAgKGJhc2UgMTYpCQlUcmFuc01lZGlhIENvbW11bmljYXRpb25zLCBJbmMuCi0JCQkJMjAgR1JFQVQgT0FLUyBCTFZELiwgIzIxMAotCQkJCVNBTiBKT1NFIENBIDk1MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1BNCAgIChoZXgpCQlJTyBURUNILCBJTkMuCi0wMDUwQTQgICAgIChiYXNlIDE2KQkJSU8gVEVDSCwgSU5DLgotCQkJCTI1OTcxIENBTk5PTiBST0FECi0JCQkJQ0xFVkVMQU5EIE9IIDQ0MTQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1BNSAgIChoZXgpCQlDQVBJVE9MIEJVU0lORVNTIFNZU1RFTVMsIExURC4KLTAwNTBBNSAgICAgKGJhc2UgMTYpCQlDQVBJVE9MIEJVU0lORVNTIFNZU1RFTVMsIExURC4KLQkJCQk0My80NCBSSVZFUlNJREUKLQkJCQlTSVIgVEhPTUFTIExPTkdMRVkgUk9BRAotCQkJCVJPQ0hFU1RFUiwgS0VOVCBFbmdsYW5kIE1FMiA0RFAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNTAtQTYgICAoaGV4KQkJT1BUUk9OSUNTCi0wMDUwQTYgICAgIChiYXNlIDE2KQkJT1BUUk9OSUNTCi0JCQkJMTc1IENSRU1PTkEgRFJJVkUKLQkJCQlHT0xFVEEgQ0EgOTMxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUE3ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTBBNyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCU0vUyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUE4ICAgKGhleCkJCU9wZW5Db24gU3lzdGVtcywgSW5jLgotMDA1MEE4ICAgICAoYmFzZSAxNikJCU9wZW5Db24gU3lzdGVtcywgSW5jLgotCQkJCTM3NyBIT0VTIExBTkUKLQkJCQlQSVNDQVRBV0FZIE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1BOSAgIChoZXgpCQlNT0xEQVQgV0lSRUxFU1MgVEVDSE5PTEdJRVMKLTAwNTBBOSAgICAgKGJhc2UgMTYpCQlNT0xEQVQgV0lSRUxFU1MgVEVDSE5PTEdJRVMKLQkJCQkzIFNISU1PTiBJU1JBRUxJIFNUUkVFVAotCQkJCVJJU0hPTiBMRSBaSU9OIDc1NjU0Ci0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLTUwLUFBICAgKGhleCkJCUtPTklDQSBNSU5PTFRBIEhPTERJTkdTLCBJTkMuCi0wMDUwQUEgICAgIChiYXNlIDE2KQkJS09OSUNBIE1JTk9MVEEgSE9MRElOR1MsIElOQy4KLQkJCQkxLTYtMSwgTWFydW5vdWNoaSwKLQkJCQlDaGl5b2RhLWt1Ci0JCQkJVG9reW8gIDEwMC0wMDA1Ci0JCQkJSkFQQU4KLQotMDAtNTAtQUIgICAoaGV4KQkJTkFMVEVDLCBJbmMuCi0wMDUwQUIgICAgIChiYXNlIDE2KQkJTkFMVEVDLCBJbmMuCi0JCQkJMS0xLTE1LCBOYWthbm9nbywgU2hpbWl6dS1rdQotCQkJCVNoaXp1b2thLXNoaSBTaGl6dW9rYSA0MjQtMDg4OAotCQkJCUpBUEFOCi0KLTAwLTUwLUFDICAgKGhleCkJCU1BUExFIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMDUwQUMgICAgIChiYXNlIDE2KQkJTUFQTEUgQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQkyRiwgTk8uIDE4NCwgU0VDLiAyCi0JCQkJQ0hBTkctQU4gRS4gUkQuCi0JCQkJVGFpcGVpICAKLQkJCQlUQUpJS0lTVEFOCi0KLTAwLTUwLUFEICAgKGhleCkJCUNvbW1VbmlxdWUgV2lyZWxlc3MgQ29ycC4KLTAwNTBBRCAgICAgKGJhc2UgMTYpCQlDb21tVW5pcXVlIFdpcmVsZXNzIENvcnAuCi0JCQkJMTA3MCBNQVJJTkEgVklMTEFHRSBQQVJLV0FZCi0JCQkJU1VJVEUgIzIwNgotCQkJCUFMQU1FREEgQ0EgOTQ1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUFFICAgKGhleCkJCUlXQUtJIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDA1MEFFICAgICAoYmFzZSAxNikJCUlXQUtJIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTEsIEtBTUFOT01BRQotCQkJCUpPQkFOLUtBTUlZVU5BR0FZQS1NQUNISQotCQkJCUlXQUtJLUNJVFksIEZVS1VTSElNQSA5NzItODMyMiA5NzItODMyMiAKLQkJCQlKQVBBTgotCi0wMC01MC1BRiAgIChoZXgpCQlJTlRFUkdPTiwgSU5DLgotMDA1MEFGICAgICAoYmFzZSAxNikJCUlOVEVSR09OLCBJTkMuCi0JCQkJNTgwMCBSQU5DSEVTVEVSIERSSVZFCi0JCQkJSE9VU1RPTiBUWCA3NzAzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQjAgICAoaGV4KQkJVEVDSE5PTE9HWSBBVExBTlRBIENPUlBPUkFUSU9OCi0wMDUwQjAgICAgIChiYXNlIDE2KQkJVEVDSE5PTE9HWSBBVExBTlRBIENPUlBPUkFUSU9OCi0JCQkJNTAwIFN1Z2FyIE1pbGwgUm9hZAotCQkJCVN1aXRlIDIwMkEKLQkJCQlBdGxhbnRhIEdBIDMwMzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1CMSAgIChoZXgpCQlHSURESU5HUyAmIExFV0lTCi0wMDUwQjEgICAgIChiYXNlIDE2KQkJR0lERElOR1MgJiBMRVdJUwotCQkJCTY2MCBTLiBNSUxJVEFSWSBSRC4KLQkJCQlGT05EIERVIExBQyBXSSA1NDkzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQjIgICAoaGV4KQkJQlJPREVMIEFVVE9NQVRJT04KLTAwNTBCMiAgICAgKGJhc2UgMTYpCQlCUk9ERUwgQVVUT01BVElPTgotCQkJCURpc3RlbGJ1c2NoIDI0Ci0JCQkJNDI1NDkgVmVsYmVydCAKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLUIzICAgKGhleCkJCVZPSUNFQk9BUkQgQ09SUE9SQVRJT04KLTAwNTBCMyAgICAgKGJhc2UgMTYpCQlWT0lDRUJPQVJEIENPUlBPUkFUSU9OCi0JCQkJMzE1MSBXRVNUIEZJRlRIIFNUUkVFVAotCQkJCU9YTkFSRCBDQSA5MzAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQjQgICAoaGV4KQkJU0FUQ0hXRUxMIENPTlRST0wgU1lTVEVNUywgTFRECi0wMDUwQjQgICAgIChiYXNlIDE2KQkJU0FUQ0hXRUxMIENPTlRST0wgU1lTVEVNUywgTFRECi0JCQkJUC5PLiBCT1ggNTcsICA5NCBGQVJOSEFNIFJPQUQKLQkJCQlTTE9VR0gsCi0JCQkJQkVSS1NISVJFIFNMMSA0VUggIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTUwLUI1ICAgKGhleCkJCUZJQ0hFVC1CQVVDSEUKLTAwNTBCNSAgICAgKGJhc2UgMTYpCQlGSUNIRVQtQkFVQ0hFCi0JCQkJMTUtMTcgQVZFLiBNT1JBTkUtU0FVTE5JRVIKLQkJCQk3ODE0MCBWRUxJWlkKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtNTAtQjYgICAoaGV4KQkJR09PRCBXQVkgSU5ELiBDTy4sIExURC4KLTAwNTBCNiAgICAgKGJhc2UgMTYpCQlHT09EIFdBWSBJTkQuIENPLiwgTFRELgotCQkJCTVGLCBOTy44LCBBTExFWSA2LAotCQkJCUxBTkUgNDUgUEFPLUhTSU4gUkQuLUhTSU4gVElFTiBUQUlQRUkgSFMKLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC1CNyAgIChoZXgpCQlCT1NFUiBURUNITk9MT0dZIENPLiwgTFRELgotMDA1MEI3ICAgICAoYmFzZSAxNikJCUJPU0VSIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJMTVGLTYsIDc3IEhTSU4gVEFJIFdVIFJPQUQKLQkJCQlTRUMuIDEsIEhTSS1DSEkKLQkJCQlUQUlQRUkgSFNJRU4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtQjggICAoaGV4KQkJSU5PVkEgQ09NUFVURVJTIEdNQkggJiBDTy4gS0cKLTAwNTBCOCAgICAgKGJhc2UgMTYpCQlJTk9WQSBDT01QVVRFUlMgR01CSCAmIENPLiBLRwotCQkJCVNVREVURU5TVFJBU1NFIDUKLQkJCQk4NzYwMCBLQVVGQkVVUkVOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTUwLUI5ICAgKGhleCkJCVhJVFJPTiBURUNITk9MT0dJRVMsIElOQy4KLTAwNTBCOSAgICAgKGJhc2UgMTYpCQlYSVRST04gVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNjI5NS1EIEZFUlJJUyBTUVVBUkUKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUJBICAgKGhleCkJCUQtTElOSwotMDA1MEJBICAgICAoYmFzZSAxNikJCUQtTElOSwotCQkJCTJGLCBOTy4gMjMzTC0yLCBQQU8tQ0hJQU8gUkQuCi0JCQkJSHNpbi1UaWVuIDIzMQotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC1CQiAgIChoZXgpCQlDTVMgVEVDSE5PTE9HSUVTCi0wMDUwQkIgICAgIChiYXNlIDE2KQkJQ01TIFRFQ0hOT0xPR0lFUwotCQkJCTEzOTU1IEZBUk1JTkdUT04gUkFPRAotCQkJCUxJVk9OSUEgTUkgNDgxNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUJDICAgKGhleCkJCUhBTU1FUiBTVE9SQUdFIFNPTFVUSU9OUwotMDA1MEJDICAgICAoYmFzZSAxNikJCUhBTU1FUiBTVE9SQUdFIFNPTFVUSU9OUwotCQkJCTg0NTAgQ0VOVFJBTCBBVkVOVUUKLQkJCQlORVdBUksgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUJEICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNTBCRCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRSAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQkUgICAoaGV4KQkJRkFTVCBNVUxUSU1FRElBIEFHCi0wMDUwQkUgICAgIChiYXNlIDE2KQkJRkFTVCBNVUxUSU1FRElBIEFHCi0JCQkJUlVFREVTSEVJTUVSU1RSLiAxMS0xMwotCQkJCTgwNjg2IE1VTklDSCAgCi0JCQkJR0VSTUFOWQotCi0wMC01MC1CRiAgIChoZXgpCQlNZXRhbGxpZ2VuY2UgVGVjaG5vbG9neSBDb3JwLgotMDA1MEJGICAgICAoYmFzZSAxNikJCU1ldGFsbGlnZW5jZSBUZWNobm9sb2d5IENvcnAuCi0JCQkJTk8uOSwgUEFSSyBBVkVOVUUgSUkKLQkJCQlTQ0lFTkNFLUJBU0UgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTi1DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtQzAgICAoaGV4KQkJR0FUQU4sIElOQy4KLTAwNTBDMCAgICAgKGJhc2UgMTYpCQlHQVRBTiwgSU5DLgotCQkJCTU5MzMgQ09ST05BRE8gTEFORQotCQkJCVBMRUFTQU5UT04gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUMxICAgKGhleCkJCUdFTUZMRVggTkVUV09SS1MsIExURC4KLTAwNTBDMSAgICAgKGJhc2UgMTYpCQlHRU1GTEVYIE5FVFdPUktTLCBMVEQuCi0JCQkJMjMwLTY2NTEgRlJBU0VSV09PRCBQTC4KLQkJCQlSSUNITU9ORCwgQi5DLgotCQkJCUNBTkFEQSBWNlcgMUozCi0JCQkJQ0FOQURBCi0KLTAwLTUwLUMyICAgKGhleCkJCUlFRUUgUkVHSVNUUkFUSU9OIEFVVEhPUklUWQotMDA1MEMyICAgICAoYmFzZSAxNikJCUlFRUUgUkVHSVNUUkFUSU9OIEFVVEhPUklUWQotCQkJCTQ0NSBIT0VTIExBTkUKLQkJCQlQSVNDQVRBV0FZIE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1DNCAgIChoZXgpCQlJTUQKLTAwNTBDNCAgICAgKGJhc2UgMTYpCQlJTUQKLQkJCQlIRVJCU1RSQVNTRSA4Ci0JCQkJRC04MjE3OCBQVUNISEVJTSAgCi0JCQkJR0VSTUFOWQotCi0wMC01MC1DNSAgIChoZXgpCQlBRFMgVGVjaG5vbG9naWVzLCBJbmMKLTAwNTBDNSAgICAgKGJhc2UgMTYpCQlBRFMgVGVjaG5vbG9naWVzLCBJbmMKLQkJCQkxMjYyNyBIaWRkZW5jcmVlayBXYXkKLQkJCQlDZXJyaXRvcyBDQSA5MDcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQzYgICAoaGV4KQkJTE9PUCBURUxFQ09NTVVOSUNBVElPTiBJTlRFUk5BVElPTkFMLCBJTkMuCi0wMDUwQzYgICAgIChiYXNlIDE2KQkJTE9PUCBURUxFQ09NTVVOSUNBVElPTiBJTlRFUk5BVElPTkFMLCBJTkMuCi0JCQkJMkYsIE5PLiAyMiwgUFJPU1BFUklUWSBSRC4gMgotCQkJCVNjaWVuY2UtQmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC01MC1DOCAgIChoZXgpCQkgQWRkb25pY3MgVGVjaG5vbG9naWVzLCBJbmMuCi0wMDUwQzggICAgIChiYXNlIDE2KQkJIEFkZG9uaWNzIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTE5MTggSnVuY3Rpb24gQXZlLiwKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtQzkgICAoaGV4KQkJTUFTUFJPIERFTktPSCBDT1JQLgotMDA1MEM5ICAgICAoYmFzZSAxNikJCU1BU1BSTyBERU5LT0ggQ09SUC4KLQkJCQlBU0FEQSBOSVNTSElOIEFJQ0hJCi0JCQkJNDcwLTAxOTQKLQkJCQlKQVBBTgotCi0wMC01MC1DQSAgIChoZXgpCQlORVQgVE8gTkVUIFRFQ0hOT0xPR0lFUwotMDA1MENBICAgICAoYmFzZSAxNikJCU5FVCBUTyBORVQgVEVDSE5PTE9HSUVTCi0JCQkJNjgwIENFTlRSQUwgQVZFTlVFIC0gU1RFLiAjMzAxCi0JCQkJRE9WRVIgTkggMDM4MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUNCICAgKGhleCkJCUpFVFRFUgotMDA1MENCICAgICAoYmFzZSAxNikJCUpFVFRFUgotCQkJCUdSQUVURVJTVFJBU1NFIDIKLQkJCQlENzE2NDIgIExVRFdJR1NCVVJHCi0JCQkJR0VSTUFOWQotCi0wMC01MC1DQyAgIChoZXgpCQlYWVJBVEVYCi0wMDUwQ0MgICAgIChiYXNlIDE2KQkJWFlSQVRFWAotCQkJCU1BSUwgUE9JTlQ6IDI2LzEzOyBERVBUOiAgU1RPUkFHRSBTWVNURU0KLQkJCQlMYW5nc3RvbmUgUm9hZAotCQkJCUhhdmFudCBQTzkgMVNBICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC1DRCAgIChoZXgpCQlESUdJQU5TV0VSIEEvUwotMDA1MENEICAgICAoYmFzZSAxNikJCURJR0lBTlNXRVIgQS9TCi0JCQkJU0tBTEhVU0UgNQotCQkJCTkyNDAgTklCRQotCQkJCURFTk1BUksKLQotMDAtNTAtQ0UgICAoaGV4KQkJTEcgSU5URVJOQVRJT05BTCBDT1JQLgotMDA1MENFICAgICAoYmFzZSAxNikJCUxHIElOVEVSTkFUSU9OQUwgQ09SUC4KLQkJCQlMRyBUV0lOIFRPV0VSUwotCQkJCTIwIFlPSURPLURPTkcsIFlPVU5HRFVOR1BPLUdVCi0JCQkJU0VPVUwsICAxNTAtNjA2ICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNTAtQ0YgICAoaGV4KQkJVkFOTElOSyBDT01NVU5JQ0FUSU9OIFRFQ0hOT0xPR1kgUkVTRUFSQ0ggSU5TVElUVVRFCi0wMDUwQ0YgICAgIChiYXNlIDE2KQkJVkFOTElOSyBDT01NVU5JQ0FUSU9OIFRFQ0hOT0xPR1kgUkVTRUFSQ0ggSU5TVElUVVRFCi0JCQkJMjEwIFlBREkgT0ZGSUNFIEJVSUxESU5HCi0JCQkJIE5PLiA0OCBCRUkgU0FOIEh1YW4gWmhvbmcgTHUKLQkJCQlCRUlKSU5HIDEwMDA4OCAgCi0JCQkJQ0hJTkEKLQotMDAtNTAtRDAgICAoaGV4KQkJTUlORVJWQSBTWVNURU1TCi0wMDUwRDAgICAgIChiYXNlIDE2KQkJTUlORVJWQSBTWVNURU1TCi0JCQkJMTU4NSBDSEFSTEVTVE9OIFJPQUQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDg0OTQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1EMSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwRDEgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlNL1MgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1EMiAgIChoZXgpCQlDTUMgRWxlY3Ryb25pY3MgSW5jCi0wMDUwRDIgICAgIChiYXNlIDE2KQkJQ01DIEVsZWN0cm9uaWNzIEluYwotCQkJCTYwMCBEci5GcmVkZXJpay1QaGlsaXBzIEJsdmQKLQkJCQlNb250cmVhbCAgUUMgSDRNIDJTOQotCQkJCUNBTkFEQQotCi0wMC01MC1EMyAgIChoZXgpCQlESUdJVEFMIEFVRElPIFBST0NFU1NJTkcgUFRZLiBMVEQuCi0wMDUwRDMgICAgIChiYXNlIDE2KQkJRElHSVRBTCBBVURJTyBQUk9DRVNTSU5HIFBUWS4gTFRELgotCQkJCVBPIEJPWCA0MAotCQkJCUNPTkNPUkQgV0VTVAotCQkJCU5TVyAyMTM4ICAKLQkJCQlBVVNUUkFMSUEKLQotMDAtNTAtRDQgICAoaGV4KQkJSk9PSE9ORyBJTkZPUk1BVElPTiAmCi0wMDUwRDQgICAgIChiYXNlIDE2KQkJSk9PSE9ORyBJTkZPUk1BVElPTiAmCi0JCQkJQ09NTVVOSUNBVElPTlMsIExURC4KLQkJCQlKVU5HTkFNIEIvRCwgNzIxLTM5IFlFT0tTQU0tRE9ORywgS0FOR05BCi0JCQkJU0VPVUwgU0VPVUwgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNTAtRDUgICAoaGV4KQkJQUQgU1lTVEVNUyBDT1JQLgotMDA1MEQ1ICAgICAoYmFzZSAxNikJCUFEIFNZU1RFTVMgQ09SUC4KLQkJCQkxLTQtMSwgTkFLQUNITywgTVVTQVNISU5PIENJVFkKLQkJCQlUT0tZTyAxODAtMDAwNiAgCi0JCQkJSkFQQU4KLQotMDAtNTAtRDYgICAoaGV4KQkJQVRMQVMgQ09QQ08gVE9PTFMgQUIKLTAwNTBENiAgICAgKGJhc2UgMTYpCQlBVExBUyBDT1BDTyBUT09MUyBBQgotCQkJCQotCQkJCVMtMTA1IDIzIFNUT0NLSE9MTSAgCi0JCQkJU1dFREVOCi0KLTAwLTUwLUQ3ICAgKGhleCkJCVRFTFNUUkFUCi0wMDUwRDcgICAgIChiYXNlIDE2KQkJVEVMU1RSQVQKLQkJCQkzNjAwIEFWRU5VRQotCQkJCVBMQU5PIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1EOCAgIChoZXgpCQlVTklDT1JOIENPTVBVVEVSIENPUlAuCi0wMDUwRDggICAgIChiYXNlIDE2KQkJVU5JQ09STiBDT01QVVRFUiBDT1JQLgotCQkJCTcgRkwuLCAgTk8uIDk2IEtXQU5HIEZVIE5PUlRIIFJPQUQKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtRDkgICAoaGV4KQkJRU5HRVRST04tRU5HRU5IQVJJQSBFTEVUUk9OSUNBIElORC4gZSBDT00uIExUREEKLTAwNTBEOSAgICAgKGJhc2UgMTYpCQlFTkdFVFJPTi1FTkdFTkhBUklBIEVMRVRST05JQ0EgSU5ELiBlIENPTS4gTFREQQotCQkJCVZJQSBTT0NSQVRFUyBNLiBCSVRURU5DT1VSVCwgMTA5OQotCQkJCTMyMDEwLTAxMCBDb250YWdlbSBNRyAgCi0JCQkJQlJBWklMCi0KLTAwLTUwLURBICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwNTBEQSAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCQVlGUk9OVCBQTEFaQQotCQkJCU1TOiA0MjIwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLURCICAgKGhleCkJCUNPTlRFTVBPUkFSWSBDT05UUk9MCi0wMDUwREIgICAgIChiYXNlIDE2KQkJQ09OVEVNUE9SQVJZIENPTlRST0wKLQkJCQlTWVNURU1TLCBJTkMuCi0JCQkJMjQzMSBDVVJUSVNTIFNUUkVFVAotCQkJCURPV05FUlMgR1JPVkUgSUwgNjA1MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLURDICAgKGhleCkJCVRBUyBURUxFRk9OQkFVIEEuIFNDSFdBQkUgR01CSCAmIENPLiBLRwotMDA1MERDICAgICAoYmFzZSAxNikJCVRBUyBURUxFRk9OQkFVIEEuIFNDSFdBQkUgR01CSCAmIENPLiBLRwotCQkJCQotCQkJCUxBTkdNQUFSIDI1Ci0JCQkJRC00MTIzOCBNT05DSEVOR0xBREJBQ0ggIAotCQkJCUdFUk1BTlkKLQotMDAtNTAtREQgICAoaGV4KQkJU0VSUkEgU09MREFEVVJBLCBTLkEuCi0wMDUwREQgICAgIChiYXNlIDE2KQkJU0VSUkEgU09MREFEVVJBLCBTLkEuCi0JCQkJUE9MLiBJTkQuIFpPTkEgRlJBTkNBLAotCQkJCVNFQ1RPUiBDLCBDQUxMRSBELCBOLiAyOSAwODA0MCBCQVJDRUxPTkEKLQkJCQlTUEFJTgotCQkJCVNQQUlOCi0KLTAwLTUwLURFICAgKGhleCkJCVNJR05VTSBTWVNURU1TIENPUlAuCi0wMDUwREUgICAgIChiYXNlIDE2KQkJU0lHTlVNIFNZU1RFTVMgQ09SUC4KLQkJCQkxMjExIEZseW5uIFJkLAotCQkJCSMxMDQKLQkJCQlDYW1hcmlsbG8gQ0EgOTMwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLURGICAgKGhleCkJCUFpckZpYmVyLCBJbmMuCi0wMDUwREYgICAgIChiYXNlIDE2KQkJQWlyRmliZXIsIEluYy4KLQkJCQlQLk8uIEJPWCA1MDIxNDgKLQkJCQlTQU4gRElFR08gQ0EgOTIxNTAtMjE0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRTEgICAoaGV4KQkJTlMgVEVDSCBFTEVDVFJPTklDUyBTRE4gQkhECi0wMDUwRTEgICAgIChiYXNlIDE2KQkJTlMgVEVDSCBFTEVDVFJPTklDUyBTRE4gQkhECi0JCQkJTk8uIDIxICYgMjMgSkFMQU4gQ0FOR0dJSCAxMAotCQkJCVRBTUFOIFBFUklORFVTVFJJQU4gQ0VNRVJMQU5HCi0JCQkJODE4MDAgVWx1IFRpcmFtLUpvaG9yIEJhaHJ1ICAKLQkJCQlNQUxBWVNJQQotCi0wMC01MC1FMiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwRTIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUgLSBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUUzICAgKGhleCkJCU1vdG9yb2xhLCBJbmMuCi0wMDUwRTMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYy4KLQkJCQkyNDUwIFdhbHNoIEF2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1FNCAgIChoZXgpCQlBUFBMRSBDT01QVVRFUiwgSU5DLgotMDA1MEU0ICAgICAoYmFzZSAxNikJCUFQUExFIENPTVBVVEVSLCBJTkMuCi0JCQkJMjA2NTAgVkFMTEVZIEdSRUVOIERSLgotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRTYgICAoaGV4KQkJSEFLVVNBTiBDT1JQT1JBVElPTgotMDA1MEU2ICAgICAoYmFzZSAxNikJCUhBS1VTQU4gQ09SUE9SQVRJT04KLQkJCQlKIFRPV0VSLCAxLTEsIE5JS0tPVS1DSE8KLQkJCQlGVUNIVS1TSEkgVE9LWU8gMTgzLTAwNDQKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTUwLUU3ICAgKGhleCkJCVBBUkFESVNFIElOTk9WQVRJT05TIChBU0lBKQotMDA1MEU3ICAgICAoYmFzZSAxNikJCVBBUkFESVNFIElOTk9WQVRJT05TIChBU0lBKQotCQkJCVBURS4gTFRELgotCQkJCTI1IFNFUkFOR09PTiBOT1JUSCBBVkUuIDUgNlRIIEZMT09SIFVSQUMKLQkJCQlTSU5HQVBPUkUgNTU0OTE0Ci0JCQkJU0lOR0FQT1JFCi0KLTAwLTUwLUU4ICAgKGhleCkJCU5PTUFESVggSU5DLgotMDA1MEU4ICAgICAoYmFzZSAxNikJCU5PTUFESVggSU5DLgotCQkJCTI3MDEgT0NFQU4gUEFSSyBCTFZELi1TVEUuIzIzMQotCQkJCVNBTlRBIE1PTklDQSBDQSA5MDQwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRUEgICAoaGV4KQkJWEVMIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDUwRUEgICAgIChiYXNlIDE2KQkJWEVMIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTcxMDEgRS4gT0hJTyBEUklWRQotCQkJCUFVUk9SQSBDTyA4MDAxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRUIgICAoaGV4KQkJQUxQSEEtVE9QIENPUlBPUkFUSU9OCi0wMDUwRUIgICAgIChiYXNlIDE2KQkJQUxQSEEtVE9QIENPUlBPUkFUSU9OCi0JCQkJMTlGLiwgTk8uIDIsIExBTkUgMTUwCi0JCQkJU0VDLiA1LCBIU0lOLVlJIFJPQUQKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtRUMgICAoaGV4KQkJT0xJQ09NIEEvUwotMDA1MEVDICAgICAoYmFzZSAxNikJCU9MSUNPTSBBL1MKLQkJCQlOWUJST1ZFSiAxMTQKLQkJCQlESy0yODAwIExZTkdCWQotCQkJCURFTk1BUksKLQotMDAtNTAtRUQgICAoaGV4KQkJQU5EQSBORVRXT1JLUwotMDA1MEVEICAgICAoYmFzZSAxNikJCUFOREEgTkVUV09SS1MKLQkJCQkyOTIxIENPUFBFUiBST0FECi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUVFICAgKGhleCkJCVRFSyBESUdJVEVMIENPUlBPUkFUSU9OCi0wMDUwRUUgICAgIChiYXNlIDE2KQkJVEVLIERJR0lURUwgQ09SUE9SQVRJT04KLQkJCQkyMDAxMCBDRU5UVVJZIEJMVkQuICMzMDAKLQkJCQlHRVJNQU5UT1dOIE1EIDIwODc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1FRiAgIChoZXgpCQlTUEUgU3lzdGVtaGF1cyBHbWJICi0wMDUwRUYgICAgIChiYXNlIDE2KQkJU1BFIFN5c3RlbWhhdXMgR21iSAotCQkJCVdBTERTVFJBU1NFIDcKLQkJCQk2MzE1MCBIRVVTRU5TVEFNTSAgCi0JCQkJR0VSTUFOWQotCi0wMC01MC1GMCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDUwRjAgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlNL1MgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC01MC1GMSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotMDA1MEYxICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJOTQgRW0tSGFtb3NoYXZvdCBXYXkuCi0JCQkJUGFyayBBem9yaW0sUC5PLiBCb3ggMTAwOTcKLQkJCQlQZXRhY2gtVGlrdmEgIAotCQkJCUlTUkFFTAotCi0wMC01MC1GMiAgIChoZXgpCQlNSUNST1NPRlQgQ09SUC4KLTAwNTBGMiAgICAgKGJhc2UgMTYpCQlNSUNST1NPRlQgQ09SUC4KLQkJCQlPTkUgTUlDUk9TT0ZUIFdBWQotCQkJCVJFRE1PTkQgV0EgOTgwNTItNjM5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRjMgICAoaGV4KQkJR0xPQkFMIE5FVCBJTkZPUk1BVElPTiBDTy4sIEx0ZC4KLTAwNTBGMyAgICAgKGJhc2UgMTYpCQlHTE9CQUwgTkVUIElORk9STUFUSU9OIENPLiwgTHRkLgotCQkJCU5PUlRIIFRPV0VSLSBSTSAxMzA1Ci0JCQkJV09STEQgVFJBREUgQ0VOVFJFIENPTVBMRVggTk8uMzcxLTM3NSwgSAotCQkJCUdVQU5HIFpIT1UgNTEwMDk1ICAKLQkJCQlDSElOQQotCi0wMC01MC1GNCAgIChoZXgpCQlTSUdNQVRFSyBHTUJIICYgQ08uIEtHCi0wMDUwRjQgICAgIChiYXNlIDE2KQkJU0lHTUFURUsgR01CSCAmIENPLiBLRwotCQkJCUEtNTExMiBMQU1QUkVDSFRTSEFVU0VOLAotCQkJCUJVUk1PT1NFUiBTVFJBU1NFIDEwCi0JCQkJQVVTVFJJQQotCQkJCUFVU1RSSUEKLQotMDAtNTAtRjYgICAoaGV4KQkJUEFOLUlOVEVSTkFUSU9OQUwgSU5EVVNUUklBTCBDT1JQLgotMDA1MEY2ICAgICAoYmFzZSAxNikJCVBBTi1JTlRFUk5BVElPTkFMIElORFVTVFJJQUwgQ09SUC4KLQkJCQlHRiwgTk8uIDE3NiwgQ0hBTkcgQ0hVTiBSRC4KLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNTAtRjcgICAoaGV4KQkJVkVOVFVSRSBNQU5VRkFDVFVSSU5HIChTSU5HQVBPUkUpIExURC4KLTAwNTBGNyAgICAgKGJhc2UgMTYpCQlWRU5UVVJFIE1BTlVGQUNUVVJJTkcgKFNJTkdBUE9SRSkgTFRELgotCQkJCQotCQkJCTUwMDYgQU5HIE1PIEtJTyBBVkVOVUUKLQkJCQkjMDUtMDEgVGVjaHBsYWNlIElJICA1Njk4NzMKLQkJCQlTSU5HQVBPUkUKLQotMDAtNTAtRjggICAoaGV4KQkJRU5UUkVHQSBURUNITk9MT0dJRVMsIElOQy4KLTAwNTBGOCAgICAgKGJhc2UgMTYpCQlFTlRSRUdBIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTI1NjkxIEFUTEFOVElDIE9DRUFOIERSSVZFCi0JCQkJU1VJVEUgIzE4Ci0JCQkJTEFLRSBGT1JFU1QgQ0EgOTI2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTUwLUY5ICAgKGhleCkJCVNFTlNPUk1BVElDIEFDRAotMDA1MEY5ICAgICAoYmFzZSAxNikJCVNFTlNPUk1BVElDIEFDRAotCQkJCTcwIFdFU1RWSUVXIFNUUkVFVAotCQkJCUxFWElOR1RPTiBNQSAwMjE3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNTAtRkEgICAoaGV4KQkJT1hURUwsIExURC4KLTAwNTBGQSAgICAgKGJhc2UgMTYpCQlPWFRFTCwgTFRELgotCQkJCVRIRSBNQVJLRVQgUExBQ0UKLQkJCQlESURDT1QKLQkJCQkwWDExIDdMRSBFbmdsYW5kICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC01MC1GQiAgIChoZXgpCQlWU0sgRUxFQ1RST05JQ1MKLTAwNTBGQiAgICAgKGJhc2UgMTYpCQlWU0sgRUxFQ1RST05JQ1MKLQkJCQlWRU5FVElFTEFBTiAzOQotCQkJCTg1MzAgSEFSRUxCRUtFCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtNTAtRkMgICAoaGV4KQkJRURJTUFYIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDUwRkMgICAgIChiYXNlIDE2KQkJRURJTUFYIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJMyBXVS1DSFVOIDNyZCBST0FECi0JCQkJV3UtS3UgSW5kdXN0cmlhbCBQYXJrCi0JCQkJVEFJUEVJIEhzaWVuICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTUwLUZEICAgKGhleCkJCVZJU0lPTkNPTU0gQ08uLCBMVEQuCi0wMDUwRkQgICAgIChiYXNlIDE2KQkJVklTSU9OQ09NTSBDTy4sIExURC4KLQkJCQk0LCA1RiwgREFFV09OIEIvRAotCQkJCTE5OC04LCBTRU9CSU5HR08tRE9ORwotCQkJCVlPTkdTQU4tR1UsIFNFT1VMICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNTAtRkUgICAoaGV4KQkJUENUVm5ldCBBU0EKLTAwNTBGRSAgICAgKGJhc2UgMTYpCQlQQ1RWbmV0IEFTQQotCQkJCVNUUkFORFZFSUxFTiA1MAotCQkJCU4tMTMyNCBMWVNBS0VSICAKLQkJCQlOT1JXQVkKLQotMDAtNTAtRkYgICAoaGV4KQkJSEFLS08gRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0wMDUwRkYgICAgIChiYXNlIDE2KQkJSEFLS08gRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJMjM4LCBLQU1JS0FTSElXQU5PLU1BQ0hJCi0JCQkJTUFUVE8tU0hJLCBJU0hJS0FXQSA5MjQtMDAzNSAgCi0JCQkJSkFQQU4KLQotMDAtNTItMTggICAoaGV4KQkJV3V4aSBLZWJvZGEgRWxlY3Ryb24gQ28uTHRkCi0wMDUyMTggICAgIChiYXNlIDE2KQkJV3V4aSBLZWJvZGEgRWxlY3Ryb24gQ28uTHRkCi0JCQkJTm8uMTU1IENodW5odWkgUm9hZCwgWGlzaGFuIERpc3RyaWN0LCAKLQkJCQlXdXhpIEppYW5nc3UgMjE0MTAxCi0JCQkJQ0hJTkEKLQotMDAtNTQtQUYgICAoaGV4KQkJQ29udGluZW50YWwgQXV0b21vdGl2ZSBTeXN0ZW1zIEluYy4KLTAwNTRBRiAgICAgKGJhc2UgMTYpCQlDb250aW5lbnRhbCBBdXRvbW90aXZlIFN5c3RlbXMgSW5jLgotCQkJCTIxNDQwIFcuIExha2UgQ29vayBSZC4KLQkJCQlEZWVyIFBhcmsgSUwgNjAwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTVDLUIxICAgKGhleCkJCUdvc3BlbGwgRElHSVRBTCBURUNITk9MT0dZIENPLiwgTFRECi0wMDVDQjEgICAgIChiYXNlIDE2KQkJR29zcGVsbCBESUdJVEFMIFRFQ0hOT0xPR1kgQ08uLCBMVEQKLQkJCQlCbG9jayBGMTAtRjEzoaJGNTE4IElkZWEgbGFuZCChokJhbyBZdWFuIFJvYWQKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAyCi0JCQkJQ0hJTkEKLQotMDAtNjAtMDAgICAoaGV4KQkJWFlDT00gSU5DLgotMDA2MDAwICAgICAoYmFzZSAxNikJCVhZQ09NIElOQy4KLQkJCQk3NTAgTi4gTUFQTEUKLQkJCQlTQUxJTkUgTUkgNDgxNzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTAxICAgKGhleCkJCUlubm9TeXMsIEluYy4KLTAwNjAwMSAgICAgKGJhc2UgMTYpCQlJbm5vU3lzLCBJbmMuCi0JCQkJMzA5NSBSSUNITU9ORCBQS1dZICMyMDcKLQkJCQlSSUNITU9ORCBDQSA5NDgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMDIgICAoaGV4KQkJU0NSRUVOIFNVQlRJVExJTkcgU1lTVEVNUywgTFRECi0wMDYwMDIgICAgIChiYXNlIDE2KQkJU0NSRUVOIFNVQlRJVExJTkcgU1lTVEVNUywgTFRECi0JCQkJVEhFIE9MRCBSRUNUT1JZCi0JCQkJQ0hVUkNIIExBTkUKLQkJCQlDTEFZRE9OIElQU1dJQ0ggIElQNiBPRVEgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtMDMgICAoaGV4KQkJVEVSQU9LQSBXRUlHSCBTWVNURU0gUFRFLCBMVEQuCi0wMDYwMDMgICAgIChiYXNlIDE2KQkJVEVSQU9LQSBXRUlHSCBTWVNURU0gUFRFLCBMVEQuCi0JCQkJM0EgVFVBUyBBVkVOVUUgOAotCQkJCVNJTkdBUE9SRSA2MzkxMjggCi0JCQkJU0lOR0FQT1JFCi0KLTAwLTYwLTA0ICAgKGhleCkJCUNPTVBVVEFET1JFUyBNT0RVTEFSRVMgU0EKLTAwNjAwNCAgICAgKGJhc2UgMTYpCQlDT01QVVRBRE9SRVMgTU9EVUxBUkVTIFNBCi0JCQkJQVZEQSBNT05URVNJRVJSQSBTL04KLQkJCQlFRElGSUNJTyBDT05HUkVTT1MgMzE0Ci0JCQkJNDEwMjAtU0VWSUxMQSAgCi0JCQkJU1BBSU4KLQotMDAtNjAtMDUgICAoaGV4KQkJRkVFREJBQ0sgREFUQSBMVEQuCi0wMDYwMDUgICAgIChiYXNlIDE2KQkJRkVFREJBQ0sgREFUQSBMVEQuCi0JCQkJUEFSSyBST0FECi0JCQkJQ1JPV0JPUk9VR0gKLQkJCQlFQVNUIFNVU1NFWCwgVE42IDJRUiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtMDYgICAoaGV4KQkJU09URUMgQ08uLCBMVEQKLTAwNjAwNiAgICAgKGJhc2UgMTYpCQlTT1RFQyBDTy4sIExURAotCQkJCVlPS09IQU1BIEJBU0hBTUlDSEkgQkxERy4sCi0JCQkJNC01NSBPSFRBLUNITyBOQUtBLUtVCi0JCQkJWU9LT0hBTUEgIDIzMSAgCi0JCQkJSkFQQU4KLQotMDAtNjAtMDcgICAoaGV4KQkJQUNSRVMgR0FNSU5HLCBJTkMuCi0wMDYwMDcgICAgIChiYXNlIDE2KQkJQUNSRVMgR0FNSU5HLCBJTkMuCi0JCQkJODE1IE5XIDlUSCBTVFJFRVQKLQkJCQlDT1JWQUxMSVMgT1IgOTczMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTA4ICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAwNjAwOCAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJNTQwMCBCQVlGUk9OVCBQTEFaQQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0wOSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDYwMDkgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0wQSAgIChoZXgpCQlTT1JEIENPTVBVVEVSIENPUlBPUkFUSU9OCi0wMDYwMEEgICAgIChiYXNlIDE2KQkJU09SRCBDT01QVVRFUiBDT1JQT1JBVElPTgotCQkJCTIwLTcsIE1BU0FHTyA1LUNIT01FCi0JCQkJTUlIQU1BLUtVLCBDSElCQS1TSEkKLQkJCQlDSElCQSAyNjEgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTBCICAgKGhleCkJCUxPR1dBUkUgR21iSAotMDA2MDBCICAgICAoYmFzZSAxNikJCUxPR1dBUkUgR21iSAotCQkJCVNDSFdFREVOU1RSLiA5Ci0JCQkJRC0xMzM1OSBCRVJMSU4gIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtMEMgICAoaGV4KQkJRXVyb3RlY2ggSW5jLgotMDA2MDBDICAgICAoYmFzZSAxNikJCUV1cm90ZWNoIEluYy4KLQkJCQkxMDI2MCBPbGQgQ29sdW1iaWEgUm9hZAotCQkJCUNPTFVNQklBIE1EIDIxMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0wRCAgIChoZXgpCQlEaWdpdGFsIExvZ2ljIEdtYkgKLTAwNjAwRCAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIExvZ2ljIEdtYkgKLQkJCQlTdGFobHdlcmtzdHIuIDI1Ci0JCQkJTXVkZXJzYmFjaCAgNTc1NTUKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLTBFICAgKGhleCkJCVdBVkVORVQgSU5URVJOQVRJT05BTCwgSU5DLgotMDA2MDBFICAgICAoYmFzZSAxNikJCVdBVkVORVQgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTU4MjUgS0VOTkVEWSBST0FECi0JCQkJTUlTU0lTU0FVR0EsIE9OVEFSSU8gTDRaIDJHMyAgCi0JCQkJQ0FOQURBCi0KLTAwLTYwLTBGICAgKGhleCkJCVdFU1RFTEwsIElOQy4KLTAwNjAwRiAgICAgKGJhc2UgMTYpCQlXRVNURUxMLCBJTkMuCi0JCQkJNzUgRVhFQ1VUSVZFIERSSVZFCi0JCQkJQVVST1JBIElMIDYwNTA0LTQxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTEwICAgKGhleCkJCU5FVFdPUksgTUFDSElORVMsIElOQy4KLTAwNjAxMCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIE1BQ0hJTkVTLCBJTkMuCi0JCQkJMjU1IE9MRCBORVcgQlJVTlNXSUNLIFJELiwgIyBOMzIwCi0JCQkJUElTQ0FUQVdBWSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMTEgICAoaGV4KQkJQ1JZU1RBTCBTRU1JQ09ORFVDVE9SIENPUlAuCi0wMDYwMTEgICAgIChiYXNlIDE2KQkJQ1JZU1RBTCBTRU1JQ09ORFVDVE9SIENPUlAuCi0JCQkJUC5PLiBCT1ggMTc4NDcKLQkJCQlBVVNUSU4gVFggNzg3NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTEyICAgKGhleCkJCVBPV0VSIENPTVBVVElORyBDT1JQT1JBVElPTgotMDA2MDEyICAgICAoYmFzZSAxNikJCVBPV0VSIENPTVBVVElORyBDT1JQT1JBVElPTgotCQkJCTEwMjYxIEJVQkIgUk9BRAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMTMgICAoaGV4KQkJTkVUU1RBTCBNQVNDSElORU4gQUcKLTAwNjAxMyAgICAgKGJhc2UgMTYpCQlORVRTVEFMIE1BU0NISU5FTiBBRwotCQkJCUlORFVTVFJJRVNUUkFTU0UKLQkJCQlDSC04NzUyIE5BRUZFTFMgIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTYwLTE0ICAgKGhleCkJCUVERUMgQ08uLCBMVEQuCi0wMDYwMTQgICAgIChiYXNlIDE2KQkJRURFQyBDTy4sIExURC4KLQkJCQk5RiBPRiBULk8uQy4gQlVJTERJTkcKLQkJCQk3LTIyLTE3IE5JU0hJR09UQU5EQQotCQkJCVNISU5BR0FXQUtVLCAgVE9LWU8gIAotCQkJCUpBUEFOCi0KLTAwLTYwLTE1ICAgKGhleCkJCU5FVDJORVQgQ09SUE9SQVRJT04KLTAwNjAxNSAgICAgKGJhc2UgMTYpCQlORVQyTkVUIENPUlBPUkFUSU9OCi0JCQkJMTMxIENPT0xJREdFIFNUUkVFVAotCQkJCUhVRFNPTiBNQSAwMTc0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMTYgICAoaGV4KQkJQ0xBUklJT04KLTAwNjAxNiAgICAgKGJhc2UgMTYpCQlDTEFSSUlPTgotCQkJCUNPU0xJTiBEUklWRQotCQkJCU1haWwgU3RvcCBDMjUKLQkJCQlTT1VUSEJPUk8gTUEgMDE3NzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTE3ICAgKGhleCkJCVRPS0lNRUMgSU5DLgotMDA2MDE3ICAgICAoYmFzZSAxNikJCVRPS0lNRUMgSU5DLgotCQkJCTItMTYsIE1JTkFNSS1LQU1BVEEsIE9IVEEtS1UKLQkJCQlUT0tZTyAxNDQgIAotCQkJCUpBUEFOCi0KLTAwLTYwLTE4ICAgKGhleCkJCVNURUxMQVIgT05FIENPUlBPUkFUSU9OCi0wMDYwMTggICAgIChiYXNlIDE2KQkJU1RFTExBUiBPTkUgQ09SUE9SQVRJT04KLQkJCQk1MDAgMTA4VEggQVZFLiBORS0tU1RFLiAjMjIwMAotCQkJCUJFTExFVlVFIFdBIDk4MDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0xOSAgIChoZXgpCQlSb2NoZSBEaWFnbm9zdGljcwotMDA2MDE5ICAgICAoYmFzZSAxNikJCVJvY2hlIERpYWdub3N0aWNzCi0JCQkJOTExNSBIYWd1ZSBSb2FkCi0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjUwLTA0NTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTFBICAgKGhleCkJCUtFSVRITEVZIElOU1RSVU1FTlRTCi0wMDYwMUEgICAgIChiYXNlIDE2KQkJS0VJVEhMRVkgSU5TVFJVTUVOVFMKLQkJCQkzMDUwMCBCQUlOQlJJREdFIFJELgotCQkJCVNPTE9OIE9IIDQ0MTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0xQiAgIChoZXgpCQlNRVNBIEVMRUNUUk9OSUNTCi0wMDYwMUIgICAgIChiYXNlIDE2KQkJTUVTQSBFTEVDVFJPTklDUwotCQkJCTEzMjMgNjFTVCBTVFJFRVQKLQkJCQlFTUVSWVZJTExFIENBIDk0NjA4LTIxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTFDICAgKGhleCkJCVRFTFhPTiBDT1JQT1JBVElPTgotMDA2MDFDICAgICAoYmFzZSAxNikJCVRFTFhPTiBDT1JQT1JBVElPTgotCQkJCTMzMzAgVy4gTUFSS0VUIFNUUkVFVAotCQkJCVBPIEJPWCA1NTgyCi0JCQkJQUtST04gT0ggNDQzMzQtMDU4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMUQgICAoaGV4KQkJTFVDRU5UIFRFQ0hOT0xPR0lFUwotMDA2MDFEICAgICAoYmFzZSAxNikJCUxVQ0VOVCBURUNITk9MT0dJRVMKLQkJCQkxMDEgQ1JBV0ZPUkRTIENPUk5FUiBSRC4KLQkJCQlST09NICA0Sy0zMjEKLQkJCQlIT0xNREVMIE5KIDA3NzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0xRSAgIChoZXgpCQlTT0ZUTEFCLCBJTkMuCi0wMDYwMUUgICAgIChiYXNlIDE2KQkJU09GVExBQiwgSU5DLgotCQkJCVAuTy4gQk9YIDgKLQkJCQlDSElNTkVZIFJPQ0sgQ08gODExMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTFGICAgKGhleCkJCVNUQUxMSU9OIFRFQ0hOT0xPR0lFUwotMDA2MDFGICAgICAoYmFzZSAxNikJCVNUQUxMSU9OIFRFQ0hOT0xPR0lFUwotCQkJCTMzIFdPT0RTVE9DSyBST0FECi0JCQkJVE9PV09ORyBRLUwtRC0gNDA2NiAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLTYwLTIwICAgKGhleCkJCVBJVk9UQUwgTkVUV09SS0lORywgSU5DLgotMDA2MDIwICAgICAoYmFzZSAxNikJCVBJVk9UQUwgTkVUV09SS0lORywgSU5DLgotCQkJCTcyNDYgU0hBUk9OIERSLiwgU1RFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTIxICAgKGhleCkJCURTQyBDT1JQT1JBVElPTgotMDA2MDIxICAgICAoYmFzZSAxNikJCURTQyBDT1JQT1JBVElPTgotCQkJCVJFQ1JVSVQtU0hJTk9IVFNVS0EgQkxERy4sCi0JCQkJMi0yNS0xNSBNSU5BTUlPSFRTVUtBLCBUT1NISU1BLUtVLAotCQkJCVRPS1lPIDE3MCAgCi0JCQkJSkFQQU4KLQotMDAtNjAtMjIgICAoaGV4KQkJVklDT00gU1lTVEVNUywgSU5DLgotMDA2MDIyICAgICAoYmFzZSAxNikJCVZJQ09NIFNZU1RFTVMsIElOQy4KLQkJCQkxOTYxIExBTkRJTkdTIERSSVZFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjMgICAoaGV4KQkJUEVSSUNPTSBTRU1JQ09ORFVDVE9SIENPUlAuCi0wMDYwMjMgICAgIChiYXNlIDE2KQkJUEVSSUNPTSBTRU1JQ09ORFVDVE9SIENPUlAuCi0JCQkJMjM4MCBCRVJJTkcgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjQgICAoaGV4KQkJR1JBRElFTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDYwMjQgICAgIChiYXNlIDE2KQkJR1JBRElFTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMiBNT1VOVCBST1lBTCBBVkVOVUUKLQkJCQlNQVJMQk9STyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjUgICAoaGV4KQkJQUNUSVZFIElNQUdJTkcgUExDCi0wMDYwMjUgICAgIChiYXNlIDE2KQkJQUNUSVZFIElNQUdJTkcgUExDCi0JCQkJSEFUVE9SSSBIT1VTRQotCQkJCVZBTldBTEwgQlVTSU5FU1MgUEFSSwotCQkJCU1BSURFTkhFQUQgQmVya3NoaXJlIFNMNiA0VUIgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtMjYgICAoaGV4KQkJVklLSU5HIE1vZHVsYXIgU29sdXRpb25zCi0wMDYwMjYgICAgIChiYXNlIDE2KQkJVklLSU5HIE1vZHVsYXIgU29sdXRpb25zCi0JCQkJMTEgQ09MVU1CSUEKLQkJCQlMQUdVTkEgSElMTFMgQ0EgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTI3ICAgKGhleCkJCVN1cGVyaW9yIE1vZHVsYXIgUHJvZHVjdHMKLTAwNjAyNyAgICAgKGJhc2UgMTYpCQlTdXBlcmlvciBNb2R1bGFyIFByb2R1Y3RzCi0JCQkJR2VuZXJhbCBUZWNobm9sb2d5IERpdmlzaW9uCi0JCQkJNDE1IFBJTkVEQSBDT1VSVAotCQkJCU1FTEJPVVJORSBGTCAzMjk0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjggICAoaGV4KQkJTUFDUk9WSVNJT04gQ09SUE9SQVRJT04KLTAwNjAyOCAgICAgKGJhc2UgMTYpCQlNQUNST1ZJU0lPTiBDT1JQT1JBVElPTgotCQkJCTI4MzAgRGUgTGEgQ3J1eiBCb3VsZXZhcmQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMjkgICAoaGV4KQkJQ0FSWSBQRVJJUEhFUkFMUyBJTkMuCi0wMDYwMjkgICAgIChiYXNlIDE2KQkJQ0FSWSBQRVJJUEhFUkFMUyBJTkMuCi0JCQkJMTkwIENPTE9OTkFERSBST0FEIFMsIFVOSVQgOQotCQkJCU5FUEVBTiwgT05UQVJJTyBLMkUgN0o1ICAKLQkJCQlDQU5BREEKLQotMDAtNjAtMkEgICAoaGV4KQkJU1lNSUNST04gQ09NUFVURVIgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwNjAyQSAgICAgKGJhc2UgMTYpCQlTWU1JQ1JPTiBDT01QVVRFUiBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCVVOSVQgNCBHUkVFTiBMQU5FIEJVU0lORVNTIFBBUksKLQkJCQkyMzggR3JlZW4gbGFuZQotCQkJCUxvbmRvbiBTRTkgM1RMICAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTJCICAgKGhleCkJCVBFQUsgQVVESU8KLTAwNjAyQiAgICAgKGJhc2UgMTYpCQlQRUFLIEFVRElPCi0JCQkJMTc5MCAzMFRIIFNUUkVFVCBTVEUgIzQxNAotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTJDICAgKGhleCkJCUxJTlggRGF0YSBUZXJtaW5hbHMsIEluYy4KLTAwNjAyQyAgICAgKGJhc2UgMTYpCQlMSU5YIERhdGEgVGVybWluYWxzLCBJbmMuCi0JCQkJNjI1IERJR0lUQUwgRFJJVkUtU1RFICMxMDAKLQkJCQlQTEFOTyBUWCA3NTA3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMkQgICAoaGV4KQkJQUxFUlRPTiBURUNITk9MT0dJRVMsIElOQy4KLTAwNjAyRCAgICAgKGJhc2UgMTYpCQlBTEVSVE9OIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTY2NzAgMTg1VEggQVZFLiBOLkUuCi0JCQkJUkVETU9ORCBXQSA5ODA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMkUgICAoaGV4KQkJQ1lDTEFERVMgQ09SUE9SQVRJT04KLTAwNjAyRSAgICAgKGJhc2UgMTYpCQlDWUNMQURFUyBDT1JQT1JBVElPTgotCQkJCTQxOTM0IENIUklTVFkgU1RSRUVUCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMkYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA2MDJGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtMzAgICAoaGV4KQkJVklMTEFHRSBUUk9OSUMgRU5UV0lDS0xVTkcKLTAwNjAzMCAgICAgKGJhc2UgMTYpCQlWSUxMQUdFIFRST05JQyBFTlRXSUNLTFVORwotCQkJCVdFTExXRUcgOTUKLQkJCQkzMTE1NyBTQVJTVEVEVCAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC0zMSAgIChoZXgpCQlIUksgU1lTVEVNUwotMDA2MDMxICAgICAoYmFzZSAxNikJCUhSSyBTWVNURU1TCi0JCQkJUC5PLiBCT1ggNTE0Ci0JCQkJV0VTVFZJTExFIDM2MzAgIAotCQkJCVNPVVRIIEFGUklDQQotCi0wMC02MC0zMiAgIChoZXgpCQlJLUNVQkUsIElOQy4KLTAwNjAzMiAgICAgKGJhc2UgMTYpCQlJLUNVQkUsIElOQy4KLQkJCQkyMzI4LUMgV0FMU0ggQVZFTlVFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTMzICAgKGhleCkJCUFDVUlUWSBJTUFHSU5HLCBJTkMuCi0wMDYwMzMgICAgIChiYXNlIDE2KQkJQUNVSVRZIElNQUdJTkcsIElOQy4KLQkJCQk5IFRPV05TRU5EIFdFU1QKLQkJCQlOQVNIVUEgTkggMDMwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTM0ICAgKGhleCkJCVJPQkVSVCBCT1NDSCBHbWJICi0wMDYwMzQgICAgIChiYXNlIDE2KQkJUk9CRVJUIEJPU0NIIEdtYkgKLQkJCQlQT1NUQk9YIDExIDYyCi0JCQkJRC02NDcwMSBFUkJBQ0ggIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtMzUgICAoaGV4KQkJREFMTEFTIFNFTUlDT05EVUNUT1IsIElOQy4KLTAwNjAzNSAgICAgKGJhc2UgMTYpCQlEQUxMQVMgU0VNSUNPTkRVQ1RPUiwgSU5DLgotCQkJCTQ0MDEgU09VVEggQkVMVFdPT0QgUEFSS1dBWQotCQkJCURBTExBUyBUWCA3NTI0NC0zMjkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0zNiAgIChoZXgpCQlBSVQgQXVzdHJpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kgR21iSAotMDA2MDM2ICAgICAoYmFzZSAxNikJCUFJVCBBdXN0cmlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSBHbWJICi0JCQkJRG9uYXUtQ2l0eS1TdHJhw4PFuGUgMQotCQkJCVZpZW5uYSAgMTIyMAotCQkJCUFVU1RSSUEKLQotMDAtNjAtMzcgICAoaGV4KQkJTlhQIFNlbWljb25kdWN0b3JzCi0wMDYwMzcgICAgIChiYXNlIDE2KQkJTlhQIFNlbWljb25kdWN0b3JzCi0JCQkJTWlsbGJyb29rIFRlY2hub2xvZ3kgQ2FtcHVzCi0JCQkJTWlsbGJyb29rIFNvdXRoYW1wdG9uIFNPMTUgMERKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNjAtMzggICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi0wMDYwMzggICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJR2xvYmFsIE9wZXJhdGlvbnMgRW5naW5lZXJpbmcKLQkJCQlEZXAgNjgwMCBQcm9ncmFtIE1hbmFnZXIgODIwMCBEaXhpZSBSb2FkCi0JCQkJQnJhbXB0b24gT250YXJpbyAxNlQgNVA2IAotCQkJCUNBTkFEQQotCi0wMC02MC0zOSAgIChoZXgpCQlTYW5Db20gVGVjaG5vbG9neSwgSW5jLgotMDA2MDM5ICAgICAoYmFzZSAxNikJCVNhbkNvbSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNzcxOSBXT09EIEhPTExPVyBEUklWRQotCQkJCVNVSVRFICMxNTYKLQkJCQlBVVNUSU4gVFggNzg3MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTNBICAgKGhleCkJCVFVSUNLIENPTlRST0xTIExURC4KLTAwNjAzQSAgICAgKGJhc2UgMTYpCQlRVUlDSyBDT05UUk9MUyBMVEQuCi0JCQkJRFVSSEFNIEhPVVNFLCBXQVJXSUNLIENPVVJUCi0JCQkJUEFSSyBST0FELCBNSURETEVUT04KLQkJCQlNQU5DSEVTVEVSICBNMjQgMUFFICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC02MC0zQiAgIChoZXgpCQlBTVRFQyBzcGEKLTAwNjAzQiAgICAgKGJhc2UgMTYpCQlBTVRFQyBzcGEKLQkJCQlMT0MuIFMuIE1BUlRJTk8KLQkJCQk1MzAyNSBQSUFOQ0FTVEFHTkFJTyAoU0lFTkEpICAKLQkJCQlJVEFMWQotCi0wMC02MC0zQyAgIChoZXgpCQlIQUdJV0FSQSBTWVMtQ09NIENPLiwgTFRELgotMDA2MDNDICAgICAoYmFzZSAxNikJCUhBR0lXQVJBIFNZUy1DT00gQ08uLCBMVEQuCi0JCQkJMi00LTMgTklTSElLSSBOQUtBLUtVCi0JCQkJTkFHT1lBCi0JCQkJQUlDSEkgNDYwICAKLQkJCQlKQVBBTgotCi0wMC02MC0zRCAgIChoZXgpCQkzQ1gKLTAwNjAzRCAgICAgKGJhc2UgMTYpCQkzQ1gKLQkJCQkyMDg1IEhBTUlMVE9OIEFWRS4sIC1TVEUuIzIyMAotCQkJCVNBTiBKT1NFIENBIDk1MTI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0zRSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDYwM0UgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC0zRiAgIChoZXgpCQlQQVRBUFNDTyBERVNJR05TCi0wMDYwM0YgICAgIChiYXNlIDE2KQkJUEFUQVBTQ08gREVTSUdOUwotCQkJCTUzNTAgUEFSVE5FUlMgQ09VUlQKLQkJCQlGUkVERVJJQ0sgTUQgMjE3MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTQwICAgKGhleCkJCU5FVFJPIENPUlAuCi0wMDYwNDAgICAgIChiYXNlIDE2KQkJTkVUUk8gQ09SUC4KLQkJCQkzMTIwIFNDT1RUIEJMVkQuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTQxICAgKGhleCkJCVlva29nYXdhIEVsZWN0cmljIENvcnBvcmF0aW9uCi0wMDYwNDEgICAgIChiYXNlIDE2KQkJWW9rb2dhd2EgRWxlY3RyaWMgQ29ycG9yYXRpb24KLQkJCQkyLTktMzEgTmFrYWNobywgTXVzYXNoaW5vLXNoaQotCQkJCVRva3lvIDE4MC04NzUwICAKLQkJCQlKQVBBTgotCi0wMC02MC00MiAgIChoZXgpCQlUS1MgKFVTQSksIElOQy4KLTAwNjA0MiAgICAgKGJhc2UgMTYpCQlUS1MgKFVTQSksIElOQy4KLQkJCQkxMjAxIENPTU1FUkNFCi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNDMgICAoaGV4KQkJaURpcmVjdCwgSU5DLgotMDA2MDQzICAgICAoYmFzZSAxNikJCWlEaXJlY3QsIElOQy4KLQkJCQkxMzg2NSBTdW5yaXNlIFZhbGx5IERyaXZlCi0JCQkJU3VpdGUgMTAwCi0JCQkJSGVybmRvbiBWQSAyMDE3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNDQgICAoaGV4KQkJTElUVE9OL1BPTFktU0NJRU5USUZJQwotMDA2MDQ0ICAgICAoYmFzZSAxNikJCUxJVFRPTi9QT0xZLVNDSUVOVElGSUMKLQkJCQkyMjAwIFNPVVRIIE1BSU4gU1RSRUVUCi0JCQkJQkxBQ0tTQlVSRyBWQSAyNDA2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNDUgICAoaGV4KQkJUEFUSExJR0hUIFRFQ0hOT0xPR0lFUwotMDA2MDQ1ICAgICAoYmFzZSAxNikJCVBBVEhMSUdIVCBURUNITk9MT0dJRVMKLQkJCQk3NjcgV0FSUkVOIFJPQUQKLQkJCQlJVEhBQ0EgTlkgMTQ4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTQ2ICAgKGhleCkJCVZNRVRSTywgSU5DLgotMDA2MDQ2ICAgICAoYmFzZSAxNikJCVZNRVRSTywgSU5DLgotCQkJCTE4ODAgREFJUlkgQVNIRk9SRC0gU1RFICM1MzUKLQkJCQlIT1VTVE9OIFRYIDc3MDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00NyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDYwNDcgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00OCAgIChoZXgpCQlFTUMgQ09SUE9SQVRJT04KLTAwNjA0OCAgICAgKGJhc2UgMTYpCQlFTUMgQ09SUE9SQVRJT04KLQkJCQkxNzEgU09VVEggU1QuLAotCQkJCUhPUEtJTlRPTiBNQSAwMTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNDkgICAoaGV4KQkJVklOQSBURUNITk9MT0dJRVMKLTAwNjA0OSAgICAgKGJhc2UgMTYpCQlWSU5BIFRFQ0hOT0xPR0lFUwotCQkJCTYgVU5JT04gU1FVQVJFIC0gU1RFIEYKLQkJCQlVTklPTiBDSVRZIENBIDk0NTg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00QSAgIChoZXgpCQlTQUlDIElERUFTIEdST1VQCi0wMDYwNEEgICAgIChiYXNlIDE2KQkJU0FJQyBJREVBUyBHUk9VUAotCQkJCTcxMjAgQ09MVU1CSUEgR0FURVdBWSBEUklWRQotCQkJCUNPTFVNQklBIE1EIDIxMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC00QiAgIChoZXgpCQlTYWZlLWNvbSBHbWJIICYgQ28uIEtHCi0wMDYwNEIgICAgIChiYXNlIDE2KQkJU2FmZS1jb20gR21iSCAmIENvLiBLRwotCQkJCUJ1cmcgTGljaHRlbmZlbHMKLQkJCQkzNTEwNCBMaWNodGVuZmVscyAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC00QyAgIChoZXgpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0wMDYwNEMgICAgIChiYXNlIDE2KQkJU0FHRU0gQ09NTVVOSUNBVElPTgotCQkJCTI3IFJVRSBMRUJMQU5DCi0JCQkJQ0VERVggMTUgUEFSSVMgNzU1MTIKLQkJCQlGUkFOQ0UKLQotMDAtNjAtNEQgICAoaGV4KQkJTU1DIE5FVFdPUktTLCBJTkMuCi0wMDYwNEQgICAgIChiYXNlIDE2KQkJTU1DIE5FVFdPUktTLCBJTkMuCi0JCQkJMTEzNCBFQVNUIEFSUVVFUyBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYtNDYwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNEUgICAoaGV4KQkJQ1lDTEUgQ09NUFVURVIgQ09SUE9SQVRJT04sIElOQy4KLTAwNjA0RSAgICAgKGJhc2UgMTYpCQlDWUNMRSBDT01QVVRFUiBDT1JQT1JBVElPTiwgSU5DLgotCQkJCTIwMjQ1IFNURVZFTlMgQ1JFRUsgQkxWRC4KLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTRGICAgKGhleCkJCVRhdHRpbGUgU1JMIAotMDA2MDRGICAgICAoYmFzZSAxNikJCVRhdHRpbGUgU1JMIAotCQkJCTU1Mi01MSBBSklHQVVSQQotCQkJCUhJVEFDSElOQUtBCi0JCQkJSUJBUkFLSSwgMzExLTEyICAKLQkJCQlKQVBBTgotCi0wMC02MC01MCAgIChoZXgpCQlJTlRFUk5JWCBJTkMuCi0wMDYwNTAgICAgIChiYXNlIDE2KQkJSU5URVJOSVggSU5DLgotCQkJCTU5LTEwIFRBS0FLVVJBLUNITwotCQkJCUhBQ0hJT0pJCi0JCQkJVE9LWU8gMTkyIAotCQkJCUpBUEFOCi0KLTAwLTYwLTUxICAgKGhleCkJCVFVQUxJVFkgU0VNSUNPTkRVQ1RPUgotMDA2MDUxICAgICAoYmFzZSAxNikJCVFVQUxJVFkgU0VNSUNPTkRVQ1RPUgotCQkJCTg1MSBNQVJUSU4gQVZFTlVFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTUyICAgKGhleCkJCVBFUklQSEVSQUxTIEVOVEVSUFJJU0UgQ08uLCBMdGQuCi0wMDYwNTIgICAgIChiYXNlIDE2KQkJUEVSSVBIRVJBTFMgRU5URVJQUklTRSBDTy4sIEx0ZC4KLQkJCQkzRiwgTk8uMTAsIEFMTEVZIDYsIExBTkUgNDUKLQkJCQlQQU8gU0hJTiBST0FELCBIU0lOIFRJRU4gQ0lUWQotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC02MC01MyAgIChoZXgpCQlUT1lPREEgTUFDSElORSBXT1JLUywgTFRELgotMDA2MDUzICAgICAoYmFzZSAxNikJCVRPWU9EQSBNQUNISU5FIFdPUktTLCBMVEQuCi0JCQkJMS03IEtJVEFKSVpPWUFNQSBOT0RBQ0hPVQotCQkJCUtBUklZQSBDSVRZLCBBSUNISSAgCi0JCQkJSkFQQU4KLQotMDAtNjAtNTQgICAoaGV4KQkJQ09OVFJPTFdBUkUgR01CSAotMDA2MDU0ICAgICAoYmFzZSAxNikJCUNPTlRST0xXQVJFIEdNQkgKLQkJCQlXQUxEU1RSQVNTRSA5MgotCQkJCTYzMTI4IERJRVRaRU5CQUNIICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLTU1ICAgKGhleCkJCUNPUk5FTEwgVU5JVkVSU0lUWQotMDA2MDU1ICAgICAoYmFzZSAxNikJCUNPUk5FTEwgVU5JVkVSU0lUWQotCQkJCTExMCBNQVBMRSBBVkVOVUUKLQkJCQlJVEhBQ0EgTlkgMTQ4NTAtNDkwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNTYgICAoaGV4KQkJTkVUV09SSyBUT09MUywgSU5DLgotMDA2MDU2ICAgICAoYmFzZSAxNikJCU5FVFdPUksgVE9PTFMsIElOQy4KLQkJCQkyOTc1IEJPV0VSUyBBVkVOVUUsICMyMDIKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MS0wOTU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC01NyAgIChoZXgpCQlNVVJBVEEgTUFOVUZBQ1RVUklORyBDTy4sIExURC4KLTAwNjA1NyAgICAgKGJhc2UgMTYpCQlNVVJBVEEgTUFOVUZBQ1RVUklORyBDTy4sIExURC4KLQkJCQkxLTE4LTEgSEFLVVNBTiBNSURPUkktS1UKLQkJCQlZT0tPSEFNQSAgMjI2ICAKLQkJCQlKQVBBTgotCi0wMC02MC01OCAgIChoZXgpCQlDT1BQRVIgTU9VTlRBSU4gQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwNjA1OCAgICAgKGJhc2UgMTYpCQlDT1BQRVIgTU9VTlRBSU4gQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk2NjUwIExVU0sgQkxWRC4tU1RFICNCMTAzCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC01OSAgIChoZXgpCQlURUNITklDQUwgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwNjA1OSAgICAgKGJhc2UgMTYpCQlURUNITklDQUwgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQkxMDAgRE9NSU5PIERSSVZFCi0JCQkJQ09OQ09SRCBNQSAwMTc0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNUEgICAoaGV4KQkJQ0VMQ09SRSwgSU5DLgotMDA2MDVBICAgICAoYmFzZSAxNikJCUNFTENPUkUsIElOQy4KLQkJCQk4MDAxIENFTlRFUlZJRVcgUEFSS1dBWQotCQkJCVNVSVRFICMyMDEKLQkJCQlNRU1QSElTIFROIDM4MDE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC01QiAgIChoZXgpCQlJbnRyYVNlcnZlciBUZWNobm9sb2d5LCBJbmMuCi0wMDYwNUIgICAgIChiYXNlIDE2KQkJSW50cmFTZXJ2ZXIgVGVjaG5vbG9neSwgSW5jLgotCQkJCTEyNSBIT1BQSU5HIEJST09LIFBBUksKLQkJCQlIT0xMSVNUT04gTUEgMDE3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTVDICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwNjA1QyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTVEICAgKGhleCkJCVNDQU5JVkFMVkUgQ09SUC4KLTAwNjA1RCAgICAgKGJhc2UgMTYpCQlTQ0FOSVZBTFZFIENPUlAuCi0JCQkJMTcyMiBOLiBNQURTT04gU1RSRUVUCi0JCQkJTElCRVJUWSBMQUtFIFdBIDk5MDE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC01RSAgIChoZXgpCQlMSUJFUlRZIFRFQ0hOT0xPR1kgTkVUV09SS0lORwotMDA2MDVFICAgICAoYmFzZSAxNikJCUxJQkVSVFkgVEVDSE5PTE9HWSBORVRXT1JLSU5HCi0JCQkJUC5PLiBCT1ggMTE1NjYKLQkJCQlIQVRGSUVMRCwgUFJFVE9SSUEgMDAyOCAgCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTYwLTVGICAgKGhleCkJCU5JUFBPTiBVTklTT0ZUIENPUlBPUkFUSU9OCi0wMDYwNUYgICAgIChiYXNlIDE2KQkJTklQUE9OIFVOSVNPRlQgQ09SUE9SQVRJT04KLQkJCQlCUiBOSU5HWU9DSE8gMSwyLTEzLTkKLQkJCQlOSUhPTkJBU0hJLU5JTkdZT0NITywgQ0hVTy1LVQotCQkJCVRPS1lPIDEwMyAgCi0JCQkJSkFQQU4KLQotMDAtNjAtNjAgICAoaGV4KQkJREFXTklORyBURUNITk9MT0dJRVMsIElOQy4KLTAwNjA2MCAgICAgKGJhc2UgMTYpCQlEQVdOSU5HIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTQwOSBNQVNPTiBST0FECi0JCQkJRkFJUlBPUlQgTlkgMTQ0NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTYxICAgKGhleCkJCVdISVNUTEUgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwNjA2MSAgICAgKGJhc2UgMTYpCQlXSElTVExFIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJMTEwIE1BUlNIIERSSVZFLVNURSAjMTAwCi0JCQkJRk9TVEVSIENJVFkgQ0EgOTQ0MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTYyICAgKGhleCkJCVRFTEVTWU5DLCBJTkMuCi0wMDYwNjIgICAgIChiYXNlIDE2KQkJVEVMRVNZTkMsIElOQy4KLQkJCQk1NTU1IE9BS0JST09LIFBLV1ktU1RFICMxMTAKLQkJCQlOT1JDUk9TUyBHQSAzMDA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNjMgICAoaGV4KQkJUFNJT04gREFDT00gUExDLgotMDA2MDYzICAgICAoYmFzZSAxNikJCVBTSU9OIERBQ09NIFBMQy4KLQkJCQlQU0lPTiBEQUNPTSBIT1VTRQotCQkJCVBSRVNMRVkgV0FZLAotCQkJCUNST1dOSElMTCBNSUxUT04gS0VZTkVTICBNSzggMEVGIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTYwLTY0ICAgKGhleCkJCU5FVENPTU0gTElNSVRFRAotMDA2MDY0ICAgICAoYmFzZSAxNikJCU5FVENPTU0gTElNSVRFRAotCQkJCVBPIEJPWCAzNzkKLQkJCQlOT1JUSCBSWURFLCBOU1csIDIxMTMgIAotCQkJCUFVU1RSQUxJQQotCi0wMC02MC02NSAgIChoZXgpCQlCRVJORUNLRVIgJiBSQUlORVIgSU5EVVNUUklFLUVMRUtUUk9OSUMgR21iSAotMDA2MDY1ICAgICAoYmFzZSAxNikJCUJFUk5FQ0tFUiAmIFJBSU5FUiBJTkRVU1RSSUUtRUxFS1RST05JQyBHbWJICi0JCQkJRUdHRUxTQkVSRyAxMjAKLQkJCQk1MTQyIEVHR0VMU0JFUkcgIAotCQkJCUFVU1RSSUEKLQotMDAtNjAtNjYgICAoaGV4KQkJTEFDUk9JWCBUcmFmaWMKLTAwNjA2NiAgICAgKGJhc2UgMTYpCQlMQUNST0lYIFRyYWZpYwotCQkJCTEgZXJlIEF2ZW51ZSwgMTEgZW1lIHJ1ZQotCQkJCTA2NTE2IENBUlJPUyAgCi0JCQkJRlJBTkNFCi0KLTAwLTYwLTY3ICAgKGhleCkJCUFDRVIgTkVUWFVTIElOQy4KLTAwNjA2NyAgICAgKGJhc2UgMTYpCQlBQ0VSIE5FVFhVUyBJTkMuCi0JCQkJNUYtMywgNSBIU0lOIEFOTiBST0FEICBTQklQCi0JCQkJSFNJTkNIVSAzMDAgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNjAtNjggICAoaGV4KQkJRGlhbG9naWMgQ29ycG9yYXRpb24KLTAwNjA2OCAgICAgKGJhc2UgMTYpCQlEaWFsb2dpYyBDb3Jwb3JhdGlvbgotCQkJCTk4MDAgQ2F2ZW5kaXNoIEJsdmQsIDV0aCBGbG9vcgotCQkJCU1vbnRyZWFsIFF1ZWJlYyBINE0gMlY5Ci0JCQkJQ0FOQURBCi0KLTAwLTYwLTY5ICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotMDA2MDY5ICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTE3NDUgVGVjaG5vbG9neSBEcml2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC02QSAgIChoZXgpCQlNSVRTVUJJU0hJIFdJUkVMRVNTIENPTU1VTklDQVRJT05TLiBJTkMuCi0wMDYwNkEgICAgIChiYXNlIDE2KQkJTUlUU1VCSVNISSBXSVJFTEVTUyBDT01NVU5JQ0FUSU9OUy4gSU5DLgotCQkJCTIwMDEgQ0hFUlJZIERSSVZFCi0JCQkJQlJBU0VMVE9OIEdBIDMwNTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC02QiAgIChoZXgpCQlTeW5jbGF5ZXIgSW5jLgotMDA2MDZCICAgICAoYmFzZSAxNikJCVN5bmNsYXllciBJbmMuCi0JCQkJMS0yMCBIaW1lZ2Fva2EKLQkJCQlLYW5pLUNpdHkKLQkJCQlHSUZVIDUwOS0wMjQ5ICAKLQkJCQlKQVBBTgotCi0wMC02MC02QyAgIChoZXgpCQlBUkVTQ09NCi0wMDYwNkMgICAgIChiYXNlIDE2KQkJQVJFU0NPTQotCQkJCTI4MzMgSlVOQ1RJT04gQVZFLiAtIFNURSAjMjA2Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTZEICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlAuCi0wMDYwNkQgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUC4KLQkJCQk1NTAgS0lORyBTVFJFRVQKLQkJCQlNL1MgTEtHMS0zL0ExMAotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNkUgICAoaGV4KQkJREFWSUNPTSBTRU1JQ09ORFVDVE9SLCBJTkMuCi0wMDYwNkUgICAgIChiYXNlIDE2KQkJREFWSUNPTSBTRU1JQ09ORFVDVE9SLCBJTkMuCi0JCQkJMjQ1NyBBVUdVU1RJTkUgRFJJVkUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtNkYgICAoaGV4KQkJQ0xBUklPTiBDT1JQT1JBVElPTiBPRiBBTUVSSUNBCi0wMDYwNkYgICAgIChiYXNlIDE2KQkJQ0xBUklPTiBDT1JQT1JBVElPTiBPRiBBTUVSSUNBCi0JCQkJMTcgTEFLRVNJREUgT0ZGSUNFIFBBUksKLQkJCQk2MDcgTk9SVEggQVZFTlVFCi0JCQkJV0FLRUZJRUxEIE1BIDAxODgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03MCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDYwNzAgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03MSAgIChoZXgpCQlNSURBUyBMQUIsIElOQy4KLTAwNjA3MSAgICAgKGJhc2UgMTYpCQlNSURBUyBMQUIsIElOQy4KLQkJCQk0IEtBVEFNQUNISSwKLQkJCQlTSElOSlVLVS1LVQotCQkJCVRPS1lPIDE2MCAKLQkJCQlKQVBBTgotCi0wMC02MC03MiAgIChoZXgpCQlWWEwgSU5TVFJVTUVOVFMsIExJTUlURUQKLTAwNjA3MiAgICAgKGJhc2UgMTYpCQlWWEwgSU5TVFJVTUVOVFMsIExJTUlURUQKLQkJCQlQTE9UIE5PLiAxNywgS09OQVBQQU5BIEFHUkFIQVJBCi0JCQkJRUxFQ1RST05JQyBDSVRZCi0JCQkJQkFOR0FMT1JFIC0gIDU2MSAyMjkgIAotCQkJCUlORElBCi0KLTAwLTYwLTczICAgKGhleCkJCVJFRENSRUVLIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDYwNzMgICAgIChiYXNlIDE2KQkJUkVEQ1JFRUsgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkzOTAwIE5FV1BBUksgTUFMTCBST0FECi0JCQkJTkVXQVJLIENBIDk0NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC03NCAgIChoZXgpCQlRU0MgQVVESU8gUFJPRFVDVFMKLTAwNjA3NCAgICAgKGJhc2UgMTYpCQlRU0MgQVVESU8gUFJPRFVDVFMKLQkJCQkxNjc1IE1BQ0FSVEhVUiBCTFZELgotCQkJCUNPU1RBIE1FU0EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTc1ICAgKGhleCkJCVBFTlRFSywgSU5DLgotMDA2MDc1ICAgICAoYmFzZSAxNikJCVBFTlRFSywgSU5DLgotCQkJCTEgUEFSSyBXQVkKLQkJCQlVUFBFUiBTQURETEUgUklWRVIgTkogMDc0NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTc2ICAgKGhleCkJCVNDSExVTUJFUkdFUiBURUNITk9MT0dJRVMgUkVUQUlMIFBFVFJPTEVVTSBTWVNURU1TCi0wMDYwNzYgICAgIChiYXNlIDE2KQkJU0NITFVNQkVSR0VSIFRFQ0hOT0xPR0lFUyBSRVRBSUwgUEVUUk9MRVVNIFNZU1RFTVMKLQkJCQk4MjUtTSBHUkVFTkJSSUVSIENJUkNMRQotCQkJCUNIRVNBUEVBS0UgVkEgMjMzMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTc3ICAgKGhleCkJCVBSSVNBIE5FVFdPUktTCi0wMDYwNzcgICAgIChiYXNlIDE2KQkJUFJJU0EgTkVUV09SS1MKLQkJCQk2NjIwIE1lc2EgUmlkZ2UgUm9hZCwKLQkJCQlTdWl0ZSAyMDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTc4ICAgKGhleCkJCVBPV0VSIE1FQVNVUkVNRU5UIExURC4KLTAwNjA3OCAgICAgKGJhc2UgMTYpCQlQT1dFUiBNRUFTVVJFTUVOVCBMVEQuCi0JCQkJMjE5NSBLRUFUSU5HIENST1NTIFJPQUQKLQkJCQlTQUFOSUNIVE9OLCBCLkMuIFY4TSAyQTUgIAotCQkJCUNBTkFEQQotCi0wMC02MC03OSAgIChoZXgpCQlNYWluc3RyZWFtIERhdGEsIEluYy4KLTAwNjA3OSAgICAgKGJhc2UgMTYpCQlNYWluc3RyZWFtIERhdGEsIEluYy4KLQkJCQkzNzUgQ2hpcGV0YSBXYXksIFN1aXRlIEIKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtN0EgICAoaGV4KQkJRFZTIEdtYkgKLTAwNjA3QSAgICAgKGJhc2UgMTYpCQlEVlMgR21iSAotCQkJCUtSRVBFTlNUUkFTU0UgOAotCQkJCUQtMzAxNjUgSEFOTk9WRVIgIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtN0IgICAoaGV4KQkJRk9SRSBTWVNURU1TLCBJTkMuCi0wMDYwN0IgICAgIChiYXNlIDE2KQkJRk9SRSBTWVNURU1TLCBJTkMuCi0JCQkJMTAwMCBGT1JFIERSSVZFCi0JCQkJV0FSUkVOREFMRSBQQSAxNTA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtN0MgICAoaGV4KQkJV2F2ZUFjY2VzcywgTHRkLgotMDA2MDdDICAgICAoYmFzZSAxNikJCVdhdmVBY2Nlc3MsIEx0ZC4KLQkJCQlQLk8uIEJPWCAyNDczCi0JCQkJMTAgSEFZRVpJUkEgU1RSRUVUCi0JCQkJUkEnQU5BTkEgNDM2NjMgIAotCQkJCUlTUkFFTAotCi0wMC02MC03RCAgIChoZXgpCQlTRU5USUVOVCBORVRXT1JLUyBJTkMuCi0wMDYwN0QgICAgIChiYXNlIDE2KQkJU0VOVElFTlQgTkVUV09SS1MgSU5DLgotCQkJCTIyMDEgQ0FOVFUgQ09VUlQtU1RFICMyMDUKLQkJCQlTQVJBU09UQSBGTCAzNDIzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtN0UgICAoaGV4KQkJR0lHQUxBQlMsIElOQy4KLTAwNjA3RSAgICAgKGJhc2UgMTYpCQlHSUdBTEFCUywgSU5DLgotCQkJCTI5MCBTQU5UQSBBTkEgQ09VUlQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTdGICAgKGhleCkJCUFVUk9SQSBURUNITk9MT0dJRVMsIElOQy4KLTAwNjA3RiAgICAgKGJhc2UgMTYpCQlBVVJPUkEgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTc2IFNFQ09ORCBBVkVOVUUKLQkJCQlXQUxUSEFNIE1BIDAyMTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04MCAgIChoZXgpCQlNSUNST1RST05JWCBEQVRBQ09NIExURC4KLTAwNjA4MCAgICAgKGJhc2UgMTYpCQlNSUNST1RST05JWCBEQVRBQ09NIExURC4KLQkJCQkyMDAgQUJFUkRFRU4gRFJJVkUKLQkJCQlMT05ET04sIE9OVEFSSU8gTjVWIDROMiAgCi0JCQkJQ0FOQURBCi0KLTAwLTYwLTgxICAgKGhleCkJCVRWL0NPTSBJTlRFUk5BVElPTkFMCi0wMDYwODEgICAgIChiYXNlIDE2KQkJVFYvQ09NIElOVEVSTkFUSU9OQUwKLQkJCQkxNjUxNiBWSUEgRVNQUklMTE8KLQkJCQlTQU4gRElFR08gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTgyICAgKGhleCkJCU5PVkFMSU5LIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA2MDgyICAgICAoYmFzZSAxNikJCU5PVkFMSU5LIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTQ4NTExIFdBUk0gU1BSSU5HUyBCTFZELiAjMjA4Ci0JCQkJRlJFTU9OVCBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtODMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA2MDgzICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtODQgICAoaGV4KQkJRElHSVRBTCBWSURFTwotMDA2MDg0ICAgICAoYmFzZSAxNikJCURJR0lUQUwgVklERU8KLQkJCQk0OTIwIEFWQUxPTiBSSURHRSBQS1dZCi0JCQkJU1VJVEUgIzYwMAotCQkJCU5PUkNST1NTIEdBIDMwMDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04NSAgIChoZXgpCQlTdG9yYWdlIENvbmNlcHRzCi0wMDYwODUgICAgIChiYXNlIDE2KQkJU3RvcmFnZSBDb25jZXB0cwotCQkJCTE0MzUyIENoYW1iZXIgUm9hZAotCQkJCVR1c3RpbiBDQSA5Mjc4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtODYgICAoaGV4KQkJTE9HSUMgUkVQTEFDRU1FTlQgVEVDSC4gTFRELgotMDA2MDg2ICAgICAoYmFzZSAxNikJCUxPR0lDIFJFUExBQ0VNRU5UIFRFQ0guIExURC4KLQkJCQkxNCBBUktXUklHSFQgUk9BRAotCQkJCVJFQURJTkcgQkVSS1MgUkcyMExTCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC02MC04NyAgIChoZXgpCQlLQU5TQUkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDYwODcgICAgIChiYXNlIDE2KQkJS0FOU0FJIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTYtMTQtOSBNSURPUklJLCBBU0FNSU5BTUktS1UKLQkJCQlISVJPU0hJTUEgNzMxLTAxICAKLQkJCQlKQVBBTgotCi0wMC02MC04OCAgIChoZXgpCQlXSElURSBNT1VOVEFJTiBEU1AsIElOQy4KLTAwNjA4OCAgICAgKGJhc2UgMTYpCQlXSElURSBNT1VOVEFJTiBEU1AsIElOQy4KLQkJCQk0MTAgQU1IRVJTVCBTVFJFRVQtU1RFICMzMjUKLQkJCQlOQVNIVUEgTkggMDMwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTg5ICAgKGhleCkJCVhBVEEKLTAwNjA4OSAgICAgKGJhc2UgMTYpCQlYQVRBCi0JCQkJMTUxIEVBU1QgQ0xJRkYgUk9BRC1TVEUuIzEwCi0JCQkJQlVSTlNWSUxMRSBNTiA1NTMzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOEEgICAoaGV4KQkJQ0lUQURFTCBDT01QVVRFUgotMDA2MDhBICAgICAoYmFzZSAxNikJCUNJVEFERUwgQ09NUFVURVIKLQkJCQkyOSBBUk1PUlkgUkQKLQkJCQlNSUxGT1JEIE1BIDAzMDU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04QiAgIChoZXgpCQlDb25mZXJUZWNoIEludGVybmF0aW9uYWwKLTAwNjA4QiAgICAgKGJhc2UgMTYpCQlDb25mZXJUZWNoIEludGVybmF0aW9uYWwKLQkJCQkxMjExMCBOLiBQRUNPUyBTVFJFRVQKLQkJCQlXRVNUTUlOU1RFUiBDTyA4MDIzNC0yMDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04QyAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMDYwOEMgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQkFZRlJPTlQgUExBWkEKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1Mi04MTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC04RCAgIChoZXgpCQlVTklQVUxTRSBDT1JQLgotMDA2MDhEICAgICAoYmFzZSAxNikJCVVOSVBVTFNFIENPUlAuCi0JCQkJMi03LCBTRU5HRU5EQUktTklTSEkKLQkJCQlLT1NISUdBWUEtQ0lUWQotCQkJCVNBSVRBTUEgMzQzICAKLQkJCQlKT1JEQU4KLQotMDAtNjAtOEUgICAoaGV4KQkJSEUgRUxFQ1RST05JQ1MsIFRFQ0hOT0xPR0lFICYgU1lTVEVNVEVDSE5JSyBHbWJICi0wMDYwOEUgICAgIChiYXNlIDE2KQkJSEUgRUxFQ1RST05JQ1MsIFRFQ0hOT0xPR0lFICYgU1lTVEVNVEVDSE5JSyBHbWJICi0JCQkJQU0gR05FSVNFTkFVRkxPVCA4Ci0JCQkJIEQtNjY1MzggTkVVTkhJUkNIRU4gIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtOEYgICAoaGV4KQkJVEVLUkFNIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDYwOEYgICAgIChiYXNlIDE2KQkJVEVLUkFNIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJQjEsIE5PLiAxNywgTEFORSAxNTksIFNFQy4gNgotCQkJCVJPT1NFVkVMVCBSRCwKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNjAtOTAgICAoaGV4KQkJQXJ0aXphIE5ldHdvcmtzIEluYwotMDA2MDkwICAgICAoYmFzZSAxNikJCUFydGl6YSBOZXR3b3JrcyBJbmMKLQkJCQlGYXJldCBUYWNoaWthd2EgQ2VudGVyIFNxdWFyZSwgMi0zNi0yIEFrZWJvbm8tY2hvLCAKLQkJCQlUYWNoaWthd2Etc2hpLCBUb2t5byAgMTkwLTAwMTIKLQkJCQlKQVBBTgotCi0wMC02MC05MSAgIChoZXgpCQlGSVJTVCBQQUNJRklDIE5FVFdPUktTLCBJTkMuCi0wMDYwOTEgICAgIChiYXNlIDE2KQkJRklSU1QgUEFDSUZJQyBORVRXT1JLUywgSU5DLgotCQkJCTg3MSBGT1ggTEFORQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05MiAgIChoZXgpCQlNSUNSTy9TWVMsIElOQy4KLTAwNjA5MiAgICAgKGJhc2UgMTYpCQlNSUNSTy9TWVMsIElOQy4KLQkJCQkzNDQ3IE9DRUFOIFZJRVcgQkxWRC4KLQkJCQlHTEVOREFMRSBDQSA5MTIwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOTMgICAoaGV4KQkJVkFSSUFOCi0wMDYwOTMgICAgIChiYXNlIDE2KQkJVkFSSUFOCi0JCQkJMjcwMCBNSVRDSEVMTCBEUi4KLQkJCQlXQUxOVVQgR1JFRUsgQ0EgOTQ1OTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTk0ICAgKGhleCkJCUlCTSBDb3JwCi0wMDYwOTQgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSb2FkCi0JCQkJUE8gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05NSAgIChoZXgpCQlBQ0NVLVRJTUUgU1lTVEVNUywgSU5DLgotMDA2MDk1ICAgICAoYmFzZSAxNikJCUFDQ1UtVElNRSBTWVNURU1TLCBJTkMuCi0JCQkJNDIwIFNPTUVSUyBST0FECi0JCQkJRUxMSU5HVE9OIENUIDA2MDI5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05NiAgIChoZXgpCQlULlMuIE1JQ1JPVEVDSCBJTkMuCi0wMDYwOTYgICAgIChiYXNlIDE2KQkJVC5TLiBNSUNST1RFQ0ggSU5DLgotCQkJCTIwODE4IEhJR0dJTlMgQ09VUlQKLQkJCQlUT1JSQU5DRSBDQSA5MDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOTcgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDA2MDk3ICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTk4ICAgKGhleCkJCUhUIENPTU1VTklDQVRJT05TCi0wMDYwOTggICAgIChiYXNlIDE2KQkJSFQgQ09NTVVOSUNBVElPTlMKLQkJCQk0NDgwIFNIT1BQSU5HIExBTkUKLQkJCQlTSU1JIFZBTExFWSBDQSA5MzA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtOTkgICAoaGV4KQkJU0JFLCBJbmMuCi0wMDYwOTkgICAgIChiYXNlIDE2KQkJU0JFLCBJbmMuCi0JCQkJMjMwNSBDYW1pbm8gUmFtb24KLQkJCQlTdWl0ZSAyMDAKLQkJCQlTYW4gUmFtb24gQ0EgOTQ1ODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTlBICAgKGhleCkJCU5KSyBURUNITk8gQ08uCi0wMDYwOUEgICAgIChiYXNlIDE2KQkJTkpLIFRFQ0hOTyBDTy4KLQkJCQlOMS0yNSBLQU1JWUFTQVRPCi0JCQkJS09NQVRTVSAgIzkyMyAgCi0JCQkJSkFQQU4KLQotMDAtNjAtOUIgICAoaGV4KQkJQVNUUk8tTUVELCBJTkMuCi0wMDYwOUIgICAgIChiYXNlIDE2KQkJQVNUUk8tTUVELCBJTkMuCi0JCQkJNjAwIEVBU1QgR1JFRU5XSUNIIEFWRS4KLQkJCQlXRVNUIFdBUldJQ0sgUkkgMDI4OTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTlDICAgKGhleCkJCVBlcmtpbi1FbG1lciBJbmNvcnBvcmF0ZWQKLTAwNjA5QyAgICAgKGJhc2UgMTYpCQlQZXJraW4tRWxtZXIgSW5jb3Jwb3JhdGVkCi0JCQkJNzEwIEJyaWRnZXBvcnQgQXZlLgotCQkJCVNoZWx0b24gQ1QgMDY0ODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTlEICAgKGhleCkJCVBNSSBGT09EIEVRVUlQTUVOVCBHUk9VUAotMDA2MDlEICAgICAoYmFzZSAxNikJCVBNSSBGT09EIEVRVUlQTUVOVCBHUk9VUAotCQkJCTcwMSBSSURHRSBBVkVOVUUKLQkJCQlUUk9ZIE9IIDQ1Mzc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC05RSAgIChoZXgpCQlBU0MgWDMgLSBJTkZPUk1BVElPTiBURUNITk9MT0dZIFNUQU5EQVJEUyBTRUNSRVRBUklBVFMKLTAwNjA5RSAgICAgKGJhc2UgMTYpCQlBU0MgWDMgLSBJTkZPUk1BVElPTiBURUNITk9MT0dZIFNUQU5EQVJEUyBTRUNSRVRBUklBVFMKLQkJCQkxMjUwIEVZRSBTVFJFRVQgTlcgLSBTVEUgIzIwMAotCQkJCVdBU0hJTkdUT04gREMgMjAwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLTlGICAgKGhleCkJCVBIQVNUIENPUlBPUkFUSU9OCi0wMDYwOUYgICAgIChiYXNlIDE2KQkJUEhBU1QgQ09SUE9SQVRJT04KLQkJCQk3OSBXRVNUIDQ1MDAgU09VVEggLSBCTERHLiMxNAotCQkJCVNBTFQgTEFLRSBDSVRZIFVUIDg0MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1BMCAgIChoZXgpCQlTV0lUQ0hFRCBORVRXT1JLIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA2MEEwICAgICAoYmFzZSAxNikJCVNXSVRDSEVEIE5FVFdPUksgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTM4MDUgMVNUIEFWRU5VRSBOT1JUSAotCQkJCVBMWU1PVVRIIE1OIDU1NDQxLTU0NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUExICAgKGhleCkJCVZQTmV0LCBJbmMuCi0wMDYwQTEgICAgIChiYXNlIDE2KQkJVlBOZXQsIEluYy4KLQkJCQk1NTUgTi4gTUFUSElMREEgQVZFLiwtU1RFICMxMTAKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUEyICAgKGhleCkJCU5JSE9OIFVOSVNZUyBMSU1JVEVEIENPLgotMDA2MEEyICAgICAoYmFzZSAxNikJCU5JSE9OIFVOSVNZUyBMSU1JVEVEIENPLgotCQkJCVAuTy4gQk9YIDEzNQotCQkJCVRPS1lPLVRPLCAgS09VVE9VLUtVCi0JCQkJU0hJTk9OT01FIDEtMTAtOSAgCi0JCQkJSkFQQU4KLQotMDAtNjAtQTMgICAoaGV4KQkJQ09OVElOVVVNIFRFQ0hOT0xPR1kgQ09SUC4KLTAwNjBBMyAgICAgKGJhc2UgMTYpCQlDT05USU5VVU0gVEVDSE5PTE9HWSBDT1JQLgotCQkJCTIyMCBDT05USU5VVU0gRFJJVkUKLQkJCQlGTEVUQ0hFUiBOQyAyODczMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQTQgICAoaGV4KQkJR1JJTkFLRVIgU1lTVEVNIFRFQ0hOT0xPR0lFUwotMDA2MEE0ICAgICAoYmFzZSAxNikJCUdSSU5BS0VSIFNZU1RFTSBURUNITk9MT0dJRVMKLQkJCQlCT1ggOTEyLTU2MQotCQkJCVNJTFZFUlRPTiAgMDEyNyAgCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTYwLUE1ICAgKGhleCkJCVBFUkZPUk1BTkNFIFRFTEVDT00gQ09SUC4KLTAwNjBBNSAgICAgKGJhc2UgMTYpCQlQRVJGT1JNQU5DRSBURUxFQ09NIENPUlAuCi0JCQkJMTAgQ0FSTFNPTiBST0FECi0JCQkJUk9DSEVTVEVSIE5ZIDE0NjEwLTEwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUE2ICAgKGhleCkJCVBBUlRJQ0xFIE1FQVNVUklORyBTWVNURU1TCi0wMDYwQTYgICAgIChiYXNlIDE2KQkJUEFSVElDTEUgTUVBU1VSSU5HIFNZU1RFTVMKLQkJCQk1NDc1IEFJUlBPUlQgQkxWRC4KLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1BNyAgIChoZXgpCQlNSUNST1NFTlMgR21iSCAmIENPLiBLRwotMDA2MEE3ICAgICAoYmFzZSAxNikJCU1JQ1JPU0VOUyBHbWJIICYgQ08uIEtHCi0JCQkJS3VlZmVyc3RyYXNzZSAxNgotCQkJCUQtNTkwNjcgSGFtbSAgCi0JCQkJR0VSTUFOWQotCi0wMC02MC1BOCAgIChoZXgpCQlUSURPTUFUIEFCCi0wMDYwQTggICAgIChiYXNlIDE2KQkJVElET01BVCBBQgotCQkJCQotCQkJCVMtMTIwODkgU1RPQ0tIT0xNICAKLQkJCQlTV0VERU4KLQotMDAtNjAtQTkgICAoaGV4KQkJR0VTWVRFQyBNYkgKLTAwNjBBOSAgICAgKGJhc2UgMTYpCQlHRVNZVEVDIE1iSAotCQkJCVBBU0NBTFNUUkFTU0UgNgotCQkJCUQgNTIwNzYgQUFDSEVOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLUFBICAgKGhleCkJCUlOVEVMTElHRU5UIERFVklDRVMgSU5DLiAoSURJKQotMDA2MEFBICAgICAoYmFzZSAxNikJCUlOVEVMTElHRU5UIERFVklDRVMgSU5DLiAoSURJKQotCQkJCTE3MTgtTCBCRUxNT05UIEFWRU5VRQotCQkJCUJBTFRJTU9SRSBNRCAyMTI0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQUIgICAoaGV4KQkJTEFSU0NPTSBJTkNPUlBPUkFURUQKLTAwNjBBQiAgICAgKGJhc2UgMTYpCQlMQVJTQ09NIElOQ09SUE9SQVRFRAotCQkJCTE4NDUgTUNDQU5ETEVTUyBEUklWRQotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1BQyAgIChoZXgpCQlSRVNJTElFTkNFIENPUlBPUkFUSU9OCi0wMDYwQUMgICAgIChiYXNlIDE2KQkJUkVTSUxJRU5DRSBDT1JQT1JBVElPTgotCQkJCTE3NTUgRU1CQVJDQURFUk8gUk9BRC1TVEUgIzEyMAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQUQgICAoaGV4KQkJTWVnYUNoaXBzIENvcnBvcmF0aW9uCi0wMDYwQUQgICAgIChiYXNlIDE2KQkJTWVnYUNoaXBzIENvcnBvcmF0aW9uCi0JCQkJNC0xLTYsTWl5YWhhcmEKLQkJCQlZb2RvZ2F3YS1rdQotCQkJCU9zYWthIDUzMi0wMDAzCi0JCQkJSkFQQU4KLQotMDAtNjAtQUUgICAoaGV4KQkJVFJJTyBJTkZPUk1BVElPTiBTWVNURU1TIEFCCi0wMDYwQUUgICAgIChiYXNlIDE2KQkJVFJJTyBJTkZPUk1BVElPTiBTWVNURU1TIEFCCi0JCQkJRk9HREVWQUdFTiA0QgotCQkJCVMtMTgzIDY0IFRBQlkgCi0JCQkJU1dFREVOCi0KLTAwLTYwLUFGICAgKGhleCkJCVBBQ0lGSUMgTUlDUk8gREFUQSwgSU5DLgotMDA2MEFGICAgICAoYmFzZSAxNikJCVBBQ0lGSUMgTUlDUk8gREFUQSwgSU5DLgotCQkJCTE2NzUxIE1JTExJS0FOIEFWRU5VRQotCQkJCUlSVklORSBDQSA5MjcxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQjAgICAoaGV4KQkJSEVXTEVUVC1QQUNLQVJEIENPLgotMDA2MEIwICAgICAoYmFzZSAxNikJCUhFV0xFVFQtUEFDS0FSRCBDTy4KLQkJCQlNUyA0MkxFCi0JCQkJMTAwMDAgV09MRkUgUk9BRAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQjEgICAoaGV4KQkJSU5QVVQvT1VUUFVULCBJTkMuCi0wMDYwQjEgICAgIChiYXNlIDE2KQkJSU5QVVQvT1VUUFVULCBJTkMuCi0JCQkJMTIzMDAgUEFSQyBDUkVTVCBEUklWRQotCQkJCVNUQUZGT1JEIFRYIDc3NDc3LTI0MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUIyICAgKGhleCkJCVBST0NFU1MgQ09OVFJPTCBDT1JQLgotMDA2MEIyICAgICAoYmFzZSAxNikJCVBST0NFU1MgQ09OVFJPTCBDT1JQLgotCQkJCTY4NzUgTUlNTVMgRFJJVkUKLQkJCQlBVExBTlRBIEdBIDMwMzQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1CMyAgIChoZXgpCQlaLUNPTSwgSU5DLgotMDA2MEIzICAgICAoYmFzZSAxNikJCVotQ09NLCBJTkMuCi0JCQkJN0YtMiwgTk8uOSwgUFJPU1BFUklUWSAxU1QgUkQuCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTYwLUI0ICAgKGhleCkJCUdMRU5BWVJFIFImRCBJTkMuCi0wMDYwQjQgICAgIChiYXNlIDE2KQkJR0xFTkFZUkUgUiZEIElOQy4KLQkJCQkxNTcwIEtPT1RFTkFZIFNUUkVFVAotCQkJCVZBTkNPVVZFUiwgQkMgVjVLIDVCOCAgCi0JCQkJQ0FOQURBCi0KLTAwLTYwLUI1ICAgKGhleCkJCUtFQkEgR21iSAotMDA2MEI1ICAgICAoYmFzZSAxNikJCUtFQkEgR21iSAotCQkJCUdFV0VSQkVQQVJLIFVSRkFIUgotCQkJCUEtNDA0MSBMSU5aICAKLQkJCQlBVVNUUklBCi0KLTAwLTYwLUI2ICAgKGhleCkJCUxBTkQgQ09NUFVURVIgQ08uLCBMVEQuCi0wMDYwQjYgICAgIChiYXNlIDE2KQkJTEFORCBDT01QVVRFUiBDTy4sIExURC4KLQkJCQk3LTQtMTcgTklTSElOQUtBSklNQQotCQkJCVlPRE9HQVdBS1UgNTMyICAKLQkJCQlKQVBBTgotCi0wMC02MC1CNyAgIChoZXgpCQlDSEFOTkVMTUFUSUMsIElOQy4KLTAwNjBCNyAgICAgKGJhc2UgMTYpCQlDSEFOTkVMTUFUSUMsIElOQy4KLQkJCQkxNzAwIEdJTExFU1BJRSBXQVkKLQkJCQlFTCBDQUpPTiBDQSA5MjAyMC0wOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1COCAgIChoZXgpCQlDT1JFTElTIEluYy4KLTAwNjBCOCAgICAgKGJhc2UgMTYpCQlDT1JFTElTIEluYy4KLQkJCQkxMjYwNyBIaWRkZW5jcmVlayBXYXkKLQkJCQlDZXJyaXRvcyBDQSA5MDcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQjkgICAoaGV4KQkJTkVDIEluZnJvbnRpYSBDb3Jwb3JhdGlvbgotMDA2MEI5ICAgICAoYmFzZSAxNikJCU5FQyBJbmZyb250aWEgQ29ycG9yYXRpb24KLQkJCQkyLTYtMSxLaXRhbWlrYXRhLFRha2F0c3Uta3UKLQkJCQlLYXdhc2FraSAgMjEzLTg1MTEKLQkJCQlKQVBBTgotCi0wMC02MC1CQSAgIChoZXgpCQlTQUhBUkEgTkVUV09SS1MsIElOQy4KLTAwNjBCQSAgICAgKGJhc2UgMTYpCQlTQUhBUkEgTkVUV09SS1MsIElOQy4KLQkJCQkzMzUgSElHSExBTkQgQVZFLgotCQkJCUNIRVNISVJFIENUIDA2NDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1CQiAgIChoZXgpCQlDQUJMRVRST04gLSBORVRMSU5LLCBJTkMuCi0wMDYwQkIgICAgIChiYXNlIDE2KQkJQ0FCTEVUUk9OIC0gTkVUTElOSywgSU5DLgotCQkJCTM1IElORFVTVFJJQUwgV0FZCi0JCQkJUC5PLiBCT1ggNTAwNQotCQkJCVJPQ0hFU1RFUiBOSCAwMzg2Ni01MDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1CQyAgIChoZXgpCQlLZXVuWW91bmcgRWxlY3Ryb25pY3MgJiBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotMDA2MEJDICAgICAoYmFzZSAxNikJCUtldW5Zb3VuZyBFbGVjdHJvbmljcyAmIENvbW11bmljYXRpb24gQ28uLCBMdGQuCi0JCQkJMzI1LTc2LCBEQUVIRVVORy1ET05HLCBNQVBPLUdVLAotCQkJCVNFT1VMICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtNjAtQkQgICAoaGV4KQkJSFVCQkVMTC1QVUxTRUNPTQotMDA2MEJEICAgICAoYmFzZSAxNikJCUhVQkJFTEwtUFVMU0VDT00KLQkJCQkyOTAwIFRPV0VSVklFVyBST0FECi0JCQkJSEVSTkRPTiBWQSAyMTA3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtQkUgICAoaGV4KQkJV0VCVFJPTklDUwotMDA2MEJFICAgICAoYmFzZSAxNikJCVdFQlRST05JQ1MKLQkJCQkzQi0xICA4LTItMTIKLQkJCQlOSVNISS1HT1RBTkRBCi0JCQkJU0hJTkFHQVdBLUtVIFRPS1lPIDE0MSAgCi0JCQkJSkFQQU4KLQotMDAtNjAtQkYgICAoaGV4KQkJTUFDUkFJR09SIFNZU1RFTVMsIElOQy4KLTAwNjBCRiAgICAgKGJhc2UgMTYpCQlNQUNSQUlHT1IgU1lTVEVNUywgSU5DLgotCQkJCVBPIEJPWCAxMDA4Ci0JCQkJQlJPT0tMSU5FIFZJTExBR0UgTUEgMDIxNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUMwICAgKGhleCkJCU5lcmEgTmV0d29ya3MgQVMKLTAwNjBDMCAgICAgKGJhc2UgMTYpCQlOZXJhIE5ldHdvcmtzIEFTCi0JCQkJS29rc3RhZHZlaWVuIDIzCi0JCQkJQmVyZ2VuICA1MDIwCi0JCQkJTk9SV0FZCi0KLTAwLTYwLUMxICAgKGhleCkJCVdhdmVTcGFuIENvcnBvcmF0aW9uCi0wMDYwQzEgICAgIChiYXNlIDE2KQkJV2F2ZVNwYW4gQ29ycG9yYXRpb24KLQkJCQk1MDAgTi4gQkVSTkFSRE8gQVZFLgotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUMyICAgKGhleCkJCU1QTCBBRwotMDA2MEMyICAgICAoYmFzZSAxNikJCU1QTCBBRwotCQkJCVRhZWZlcm5zdHJhc3NlIDIwCi0JCQkJQ0gtNTQwNSBEYWV0dHdpbCAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC02MC1DMyAgIChoZXgpCQlORVRWSVNJT04gQ09SUE9SQVRJT04KLTAwNjBDMyAgICAgKGJhc2UgMTYpCQlORVRWSVNJT04gQ09SUE9SQVRJT04KLQkJCQlNUyMgMUEKLQkJCQlPTkUgQ09NQUMgTE9PUAotCQkJCVJPTktPTktPTUEgTlkgMTE3NzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUM0ICAgKGhleCkJCVNPTElUT04gU1lTVEVNUyBLLksuCi0wMDYwQzQgICAgIChiYXNlIDE2KQkJU09MSVRPTiBTWVNURU1TIEsuSy4KLQkJCQkyLTQtMyBTSElOSlVLVSwgU0hJTkpVS1UtS1UKLQkJCQlUT0tZTyAxNjAgIAotCQkJCUpBUEFOCi0KLTAwLTYwLUM1ICAgKGhleCkJCUFOQ09UIENPUlAuCi0wMDYwQzUgICAgIChiYXNlIDE2KQkJQU5DT1QgQ09SUC4KLQkJCQkxMTUgQ09OU1RJVFVUSU9OIERSLgotCQkJCU1FTkxPIFBBUksgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUM2ICAgKGhleCkJCURDUyBBRwotMDA2MEM2ICAgICAoYmFzZSAxNikJCURDUyBBRwotCQkJCVNBTFpBQ0hTVFJBU1MgMzEKLQkJCQlELTE0MTI5ICBCRVJMSU4gIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtQzcgICAoaGV4KQkJQU1BVEkgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwNjBDNyAgICAgKGJhc2UgMTYpCQlBTUFUSSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotCQkJCTIwNDMgU0FNQVJJVEFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUM4ICAgKGhleCkJCUtVS0EgV0VMRElORyBTWVNURU1TICYgUk9CT1RTCi0wMDYwQzggICAgIChiYXNlIDE2KQkJS1VLQSBXRUxESU5HIFNZU1RFTVMgJiBST0JPVFMKLQkJCQlCTFVFQ0hFUlNUUkFTU0UgMTQ0Ci0JCQkJREVQVC4gUkUtU0gKLQkJCQlELTg2MTY1IEFVR1NCVVJHICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTYwLUM5ICAgKGhleCkJCUNvbnRyb2xOZXQsIEluYy4KLTAwNjBDOSAgICAgKGJhc2UgMTYpCQlDb250cm9sTmV0LCBJbmMuCi0JCQkJNzQ3IENBTURFTiwgU1RFLiBBCi0JCQkJQ0FNUEJFTEwgQ0EgOTUwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUNBICAgKGhleCkJCUhBUk1PTklDIFNZU1RFTVMgSU5DT1JQT1JBVEVECi0wMDYwQ0EgICAgIChiYXNlIDE2KQkJSEFSTU9OSUMgU1lTVEVNUyBJTkNPUlBPUkFURUQKLQkJCQkxOTkgMVNUIFNUUkVFVCAtIFNURSAjMzAyCi0JCQkJTE9TIEFMVE9TIENBIDk0MDIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1DQiAgIChoZXgpCQlISVRBQ0hJIFpPU0VOIENPUlBPUkFUSU9OCi0wMDYwQ0IgICAgIChiYXNlIDE2KQkJSElUQUNISSBaT1NFTiBDT1JQT1JBVElPTgotCQkJCTMtNCwgU0FLVVJBSklNQSAxLUNIT01FCi0JCQkJS09OT0hBTkEtS1UsIE9TQUtBIDU1NCAgCi0JCQkJSkFQQU4KLQotMDAtNjAtQ0MgICAoaGV4KQkJRU1UUkFLLCBJTkNPUlBPUkFURUQKLTAwNjBDQyAgICAgKGJhc2UgMTYpCQlFTVRSQUssIElOQ09SUE9SQVRFRAotCQkJCTcxNTAgQ0FNUFVTIERSSVZFLCBTVEUgIzE4MAotCQkJCUNPTE9SQURPIFNQUklOR1MgQ08gODA5MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUNEICAgKGhleCkJCVZpZGVvU2VydmVyLCBJbmMuCi0wMDYwQ0QgICAgIChiYXNlIDE2KQkJVmlkZW9TZXJ2ZXIsIEluYy4KLQkJCQk1IEZPUkJFUyBST0FECi0JCQkJTEVYSU5HVE9OIE1BIDAyMTczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1DRSAgIChoZXgpCQlBQ0NMQUlNIENPTU1VTklDQVRJT05TCi0wMDYwQ0UgICAgIChiYXNlIDE2KQkJQUNDTEFJTSBDT01NVU5JQ0FUSU9OUwotCQkJCTUwMDAgT0xEIElST05TSURFUyBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1DRiAgIChoZXgpCQlBTFRFT04gTkVUV09SS1MsIElOQy4KLTAwNjBDRiAgICAgKGJhc2UgMTYpCQlBTFRFT04gTkVUV09SS1MsIElOQy4KLQkJCQk1MCBHUkVBVCBPQUtTIEJMVkQuCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUQwICAgKGhleCkJCVNOTVAgUkVTRUFSQ0ggSU5DT1JQT1JBVEVECi0wMDYwRDAgICAgIChiYXNlIDE2KQkJU05NUCBSRVNFQVJDSCBJTkNPUlBPUkFURUQKLQkJCQkzMDAxIEtJTUJFUkxJTiBIRUlHSFRTIFJPQUQKLQkJCQlLTk9YVklMTEUgVE4gMzc5MjAtOTcxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRDEgICAoaGV4KQkJQ0FTQ0FERSBDT01NVU5JQ0FUSU9OUwotMDA2MEQxICAgICAoYmFzZSAxNikJCUNBU0NBREUgQ09NTVVOSUNBVElPTlMKLQkJCQk2IFRFQ0hOT0xPR1kgUEFSSyBEUklWRQotCQkJCVdFU1RGT1JEIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1EMiAgIChoZXgpCQlMVUNFTlQgVEVDSE5PTE9HSUVTIFRBSVdBTiBURUxFQ09NTVVOSUNBVElPTlMgQ08uLCBMVEQuCi0wMDYwRDIgICAgIChiYXNlIDE2KQkJTFVDRU5UIFRFQ0hOT0xPR0lFUyBUQUlXQU4gVEVMRUNPTU1VTklDQVRJT05TIENPLiwgTFRELgotCQkJCSMyLCBJTk5PVkFUSU9OIFJPQUQgSUkKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU4gQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTYwLUQzICAgKGhleCkJCUFUJlQKLTAwNjBEMyAgICAgKGJhc2UgMTYpCQlBVCZUCi0JCQkJMTAxIENSQVdGT1JEUyBDT1JORVIgUk9BRCwgUmQuIDFKMzIxCi0JCQkJUC5PLiBCT1ggMzAzMAotCQkJCUhPTE1ERUwgTkogMDc3MzMtMzAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRDQgICAoaGV4KQkJRUxEQVQgQ09NTVVOSUNBVElPTiBMVEQuCi0wMDYwRDQgICAgIChiYXNlIDE2KQkJRUxEQVQgQ09NTVVOSUNBVElPTiBMVEQuCi0JCQkJMTAgSEFLSVNIT04gU1RSRUVUCi0JCQkJQk5FSS1CUkFLICA1MTIwMyAgCi0JCQkJSVNSQUVMCi0KLTAwLTYwLUQ1ICAgKGhleCkJCU1JWUFDSEkgVEVDSE5PUyBDT1JQLgotMDA2MEQ1ICAgICAoYmFzZSAxNikJCU1JWUFDSEkgVEVDSE5PUyBDT1JQLgotCQkJCTk1LTMsIEZVVEFTVVpVS0EKLQkJCQlOT0RBIENJVFksIENISUJBLCAyNzggIAotCQkJCUpBUEFOCi0KLTAwLTYwLUQ2ICAgKGhleCkJCU5vdkF0ZWwgV2lyZWxlc3MgVGVjaG5vbG9naWVzIEx0ZC4KLTAwNjBENiAgICAgKGJhc2UgMTYpCQlOb3ZBdGVsIFdpcmVsZXNzIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJU1VJVEUgMjAwLCA2NzE1LThUSCBTVFJFRVQgTkUKLQkJCQlDQUxHQVJZLCBBTEJFUlRBIFQyRSA4TTQgIAotCQkJCUNBTkFEQQotCi0wMC02MC1ENyAgIChoZXgpCQlFQ09MRSBQT0xZVEVDSE5JUVVFIEZFREVSQUxFIERFIExBVVNBTk5FIChFUEZMKQotMDA2MEQ3ICAgICAoYmFzZSAxNikJCUVDT0xFIFBPTFlURUNITklRVUUgRkVERVJBTEUgREUgTEFVU0FOTkUgKEVQRkwpCi0JCQkJRUNVQkxFTlMKLQkJCQlDSC0xMDE1IExBVVNBTk5FICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC02MC1EOCAgIChoZXgpCQlFTE1JQyBTWVNURU1TLCBJTkMuCi0wMDYwRDggICAgIChiYXNlIDE2KQkJRUxNSUMgU1lTVEVNUywgSU5DLgotCQkJCURBSS1JQ0hJIFNFSU1FSSBCTERHLgotCQkJCTQtNTkgQkVOVEVOLURPUkksIE5BS0EtS1UKLQkJCQlZT0tPSEFNQSAyMzEgIAotCQkJCUpBUEFOCi0KLTAwLTYwLUQ5ICAgKGhleCkJCVRSQU5TWVMgTkVUV09SS1MgSU5DLgotMDA2MEQ5ICAgICAoYmFzZSAxNikJCVRSQU5TWVMgTkVUV09SS1MgSU5DLgotCQkJCTM0MDMgR1JJRkZJVEgKLQkJCQlTVC4gTEFVUkVOVCwgUVVFQkVDIEg0VCAxVzUgIAotCQkJCUNBTkFEQQotCi0wMC02MC1EQSAgIChoZXgpCQlKQk0gRUxFQ1RST05JQ1MgQ08uCi0wMDYwREEgICAgIChiYXNlIDE2KQkJSkJNIEVMRUNUUk9OSUNTIENPLgotCQkJCTQ2NDUgTGFHdWFyZGlhbiBEcml2ZQotCQkJCVNULiBMT1VJUyBNTyA2MzEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtREIgICAoaGV4KQkJTlRQIEVMRUtUUk9OSUsgQS9TCi0wMDYwREIgICAgIChiYXNlIDE2KQkJTlRQIEVMRUtUUk9OSUsgQS9TCi0JCQkJS05BUEhPTE0gNwotCQkJCURLLTI3MzAgSEVSTEVWICAKLQkJCQlERU5NQVJLCi0KLTAwLTYwLURDICAgKGhleCkJCVRveW8gTmV0d29yayBTeXN0ZW1zICAmIFN5c3RlbSBJbnRlZ3JhdGlvbiBDby4gTFRECi0wMDYwREMgICAgIChiYXNlIDE2KQkJVG95byBOZXR3b3JrIFN5c3RlbXMgICYgU3lzdGVtIEludGVncmF0aW9uIENvLiBMVEQKLQkJCQkxOCBOaWhvbi1vZG9yaSxOYWthLWt1Ci0JCQkJWW9rb2hhbWEsIEthbmFnYXdhICAyMzEtMDAyMQotCQkJCUpBUEFOCi0KLTAwLTYwLUREICAgKGhleCkJCU1ZUklDT00sIElOQy4KLTAwNjBERCAgICAgKGJhc2UgMTYpCQlNWVJJQ09NLCBJTkMuCi0JCQkJMzI1QiBOLiBTQU5UQSBBTklUQSBBVkUuCi0JCQkJQVJDQURJQSBDQSA5MTAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtREUgICAoaGV4KQkJS2F5c2VyLVRocmVkZSBHbWJICi0wMDYwREUgICAgIChiYXNlIDE2KQkJS2F5c2VyLVRocmVkZSBHbWJICi0JCQkJV29sZnJhdHNoYXVzZXIgU3RyLiA0OAotCQkJCUQtODEzNzkgTXVuaWNoIAotCQkJCUdFUk1BTlkKLQotMDAtNjAtREYgICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0wMDYwREYgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1FMCAgIChoZXgpCQlBWElPTSBURUNITk9MT0dZIENPLiwgTFRELgotMDA2MEUwICAgICAoYmFzZSAxNikJCUFYSU9NIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJM0YsIDE0LCBMQU5FIDIzNQotCQkJCVBBTyBDSElBTyBST0FELCBIU0lOIFRJRU4KLQkJCQlUQUlQRUkgSFNJRU4gIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtNjAtRTEgICAoaGV4KQkJT1JDS0lUIENPTU1VTklDQVRJT05TIExURC4KLTAwNjBFMSAgICAgKGJhc2UgMTYpCQlPUkNLSVQgQ09NTVVOSUNBVElPTlMgTFRELgotCQkJCTM4IE5BSEFMQVQgWUlaSEFLIFNUUkVFVAotCQkJCVRFTC1BVklWICA2NzQ0OCAgCi0JCQkJSVNSQUVMCi0KLTAwLTYwLUUyICAgKGhleCkJCVFVRVNUIEVOR0lORUVSSU5HICYgREVWRUxPUE1FTlQKLTAwNjBFMiAgICAgKGJhc2UgMTYpCQlRVUVTVCBFTkdJTkVFUklORyAmIERFVkVMT1BNRU5UCi0JCQkJMTM0NSBFQVNUIFJPQ0sgV1JFTiBST0FECi0JCQkJUEhPRU5JWCBBWiA4NTA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRTMgICAoaGV4KQkJQVJCSU4gSU5TVFJVTUVOVFMKLTAwNjBFMyAgICAgKGJhc2UgMTYpCQlBUkJJTiBJTlNUUlVNRU5UUwotCQkJCTMyMDYgTE9OR01JUkUgRFJJVkUKLQkJCQlDT0xMRUdFIFNUQVRJT04gVFggNzc4NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUU0ICAgKGhleCkJCUNPTVBVU0VSVkUsIElOQy4KLTAwNjBFNCAgICAgKGJhc2UgMTYpCQlDT01QVVNFUlZFLCBJTkMuCi0JCQkJNTAwMCBBUkxJTkdUT04gQ0VOVFJFIEJMVkQuCi0JCQkJUC5PLiBCT1ggMjAyMTIKLQkJCQlDT0xVTUJVUyBPSCA0MzIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRTUgICAoaGV4KQkJRlVKSSBBVVRPTUFUSU9OIENPLiwgTFRELgotMDA2MEU1ICAgICAoYmFzZSAxNikJCUZVSkkgQVVUT01BVElPTiBDTy4sIExURC4KLQkJCQkzLTIzLTEwLCBORUdJU0hJCi0JCQkJVVJBV0EtU0hJLCAzMzYgU0FJVEFNQSAgCi0JCQkJSkFQQU4KLQotMDAtNjAtRTYgICAoaGV4KQkJU0hPTUlUSSBTWVNURU1TIElOQ09SUE9SQVRFRAotMDA2MEU2ICAgICAoYmFzZSAxNikJCVNIT01JVEkgU1lTVEVNUyBJTkNPUlBPUkFURUQKLQkJCQkyMDk5IEdBVEVXQVkgUExBQ0UgLSBTVEUuIzIyMAotCQkJCVNBTiBKT1NFIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1FNyAgIChoZXgpCQlSQU5EQVRBCi0wMDYwRTcgICAgIChiYXNlIDE2KQkJUkFOREFUQQotCQkJCVBPIEJPWCAyMDkKLQkJCQlIQVdUSE9STiAgVklDICAzMTIyICAKLQkJCQlBVVNUUkFMSUEKLQotMDAtNjAtRTggICAoaGV4KQkJSElUQUNISSBDT01QVVRFUiBQUk9EVUNUUyAoQU1FUklDQSksIElOQy4KLTAwNjBFOCAgICAgKGJhc2UgMTYpCQlISVRBQ0hJIENPTVBVVEVSIFBST0RVQ1RTIChBTUVSSUNBKSwgSU5DLgotCQkJCTMxMDEgVEFTTUFOIERSSVZFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUU5ICAgKGhleCkJCUFUT1AgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDYwRTkgICAgIChiYXNlIDE2KQkJQVRPUCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQlTVUlURSAzMDUsIE5PLiA0NywgUEFSSyBBVkVOVUUgSUksCi0JCQkJIFNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLCi0JCQkJSFNJTkNIVSAzMDA0NyAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC02MC1FQSAgIChoZXgpCQlTdHJlYW1Mb2dpYwotMDA2MEVBICAgICAoYmFzZSAxNikJCVN0cmVhbUxvZ2ljCi0JCQkJMjEzMjkgTk9SREhPRkYgU1RSRUVUCi0JCQkJQ0hBVFNXT1JUSCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRUIgICAoaGV4KQkJRk9VUlRIVFJBQ0sgU1lTVEVNUwotMDA2MEVCICAgICAoYmFzZSAxNikJCUZPVVJUSFRSQUNLIFNZU1RFTVMKLQkJCQlVTklUIDMgVEhFIFNZQ0FNT1JFUwotCQkJCTI3IE1JTEwgUk9BRAotCQkJCU1BUkxPVyAtIFNMNyAxUUIgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTYwLUVDICAgKGhleCkJCUhFUk1BUlkgT1BUTyBFTEVDVFJPTklDUyBJTkMuCi0wMDYwRUMgICAgIChiYXNlIDE2KQkJSEVSTUFSWSBPUFRPIEVMRUNUUk9OSUNTIElOQy4KLQkJCQkyMDEtNDA1MCBHUkFWRUxFWSBTVAotCQkJCUJVUk5BQlksIEJDIFY1Qy0zVDYgIAotCQkJCUNBTkFEQQotCi0wMC02MC1FRCAgIChoZXgpCQlSSUNBUkRPIFRFU1QgQVVUT01BVElPTiBMVEQuCi0wMDYwRUQgICAgIChiYXNlIDE2KQkJUklDQVJETyBURVNUIEFVVE9NQVRJT04gTFRELgotCQkJCUxPV0VTTU9PUiBXSEFSRgotCQkJCVdPUkNFU1RFUiwgV1IxMlJTICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC02MC1FRSAgIChoZXgpCQlBUE9MTE8KLTAwNjBFRSAgICAgKGJhc2UgMTYpCQlBUE9MTE8KLQkJCQkzNjEwIEJJUkNIIFNUUkVFVC0tU1RFICMxMDAKLQkJCQlORVdQT1JUIEJFQUNIIENBIDkyNjYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1FRiAgIChoZXgpCQlGTFlURUNIIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMDYwRUYgICAgIChiYXNlIDE2KQkJRkxZVEVDSCBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCU5vLjE2OCBTaW5nLWFpIFJkLiwgTmVpaHUgRGlzdHJpY3QKLQkJCQlUQUlQRUkgQ0lUWSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC02MC1GMCAgIChoZXgpCQlKT0hOU09OICYgSk9ITlNPTiBNRURJQ0FMLCBJTkMKLTAwNjBGMCAgICAgKGJhc2UgMTYpCQlKT0hOU09OICYgSk9ITlNPTiBNRURJQ0FMLCBJTkMKLQkJCQk0MTEwIEdFT1JHRSBSRC4KLQkJCQlUQU1QQSBGTCAzMzYzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRjEgICAoaGV4KQkJRVhQIENPTVBVVEVSLCBJTkMuCi0wMDYwRjEgICAgIChiYXNlIDE2KQkJRVhQIENPTVBVVEVSLCBJTkMuCi0JCQkJMTQxIEVJTEVFTiBXQVkKLQkJCQlTWU9TU0VUIE5ZIDExNzkxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GMiAgIChoZXgpCQlMQVNFUkdSQVBISUNTLCBJTkMuCi0wMDYwRjIgICAgIChiYXNlIDE2KQkJTEFTRVJHUkFQSElDUywgSU5DLgotCQkJCTIwIEFEQQotCQkJCUlSVklORSBDQSA5MjcxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRjMgICAoaGV4KQkJUGVyZm9ybWFuY2UgQW5hbHlzaXMgQnJvYWRiYW5kLCBTcGlyZW50IHBsYwotMDA2MEYzICAgICAoYmFzZSAxNikJCVBlcmZvcm1hbmNlIEFuYWx5c2lzIEJyb2FkYmFuZCwgU3BpcmVudCBwbGMKLQkJCQkyNzM0OSBBZ291cmEgUm9hZAotCQkJCUNhbGFiYXNhcyBIaWxscyBDQSA5MTMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRjQgICAoaGV4KQkJQURWQU5DRUQgQ09NUFVURVIgU09MVVRJT05TLCBJbmMuCi0wMDYwRjQgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgQ09NUFVURVIgU09MVVRJT05TLCBJbmMuCi0JCQkJMTI2NzUgREFOSUVMU09OIENPVVJUCi0JCQkJU1VJVEUgIzQwNwotCQkJCVBPV0FZIENBIDkyMDY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GNSAgIChoZXgpCQlJQ09OIFdFU1QsIElOQy4KLTAwNjBGNSAgICAgKGJhc2UgMTYpCQlJQ09OIFdFU1QsIElOQy4KLQkJCQkzMzQyIFNPVVRIIDMwMCBFQVNUCi0JCQkJU0FMVCBMQUtFIENJVFkgVVQgODQxMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUY2ICAgKGhleCkJCU5FWFRFU1QgQ09NTVVOSUNBVElPTlMgUFJPRFVDVFMsIElOQy4KLTAwNjBGNiAgICAgKGJhc2UgMTYpCQlORVhURVNUIENPTU1VTklDQVRJT05TIFBST0RVQ1RTLCBJTkMuCi0JCQkJVFdPIE1JRCBBTUVSSUNBIFBMQVpBLCBTVEUuNTAwCi0JCQkJT0FLQlJPT0sgVEVSUkFDRSBJTCA2MDE4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRjcgICAoaGV4KQkJREFUQUZVU0lPTiBTWVNURU1TCi0wMDYwRjcgICAgIChiYXNlIDE2KQkJREFUQUZVU0lPTiBTWVNURU1TCi0JCQkJUC5PLiBCT1ggNTgyCi0JCQkJU1RFTExFTkJPU0NILCAgNzU5OSAgCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTYwLUY4ICAgKGhleCkJCUxvcmFuIEludGVybmF0aW9uYWwgVGVjaG5vbG9naWVzIEluYy4KLTAwNjBGOCAgICAgKGJhc2UgMTYpCQlMb3JhbiBJbnRlcm5hdGlvbmFsIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJOTU1IEdSRUVOIFZBTExFWSBDUkVTQ0VOVAotCQkJCVNVSVRFICMxNjUKLQkJCQlPVFRBV0EsIE9OVEFSSU8gSzJDIDNWNCAgCi0JCQkJQ0FOQURBCi0KLTAwLTYwLUY5ICAgKGhleCkJCURJQU1PTkQgTEFORSBDT01NVU5JQ0FUSU9OUwotMDA2MEY5ICAgICAoYmFzZSAxNikJCURJQU1PTkQgTEFORSBDT01NVU5JQ0FUSU9OUwotCQkJCTEzMTAgUkVEV09PRCBXQVkgLSBTVEUuCi0JCQkJUEVUQUxVTUEgQ0EgOTQ5NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUZBICAgKGhleCkJCUVEVUNBVElPTkFMIFRFQ0hOT0xPR1kgUkVTT1VSQ0VTLCBJTkMuCi0wMDYwRkEgICAgIChiYXNlIDE2KQkJRURVQ0FUSU9OQUwgVEVDSE5PTE9HWSBSRVNPVVJDRVMsIElOQy4KLQkJCQkxNzQyIENIVVJDSCBTVFJFRVQKLQkJCQlIT0xCUk9PSyBOWSAxMTc0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRkIgICAoaGV4KQkJUEFDS0VURUVSLCBJTkMuCi0wMDYwRkIgICAgIChiYXNlIDE2KQkJUEFDS0VURUVSLCBJTkMuCi0JCQkJMTAyMDEgTi4gREUgQU5aQSBCT1VMRVZBUkQKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUZDICAgKGhleCkJCUNPTlNFUlZBVElPTiBUSFJPVUdIIElOTk9WQVRJT04gTFRELgotMDA2MEZDICAgICAoYmFzZSAxNikJCUNPTlNFUlZBVElPTiBUSFJPVUdIIElOTk9WQVRJT04gTFRELgotCQkJCTEwNDAgV0hJUFBMRSBTVC4tIFNURS4gIzIyNQotCQkJCVBSRVNDT1RUIEFaIDg2MzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC02MC1GRCAgIChoZXgpCQlOZXRJQ3MsIEluYy4KLTAwNjBGRCAgICAgKGJhc2UgMTYpCQlOZXRJQ3MsIEluYy4KLQkJCQk0MiBOQUdPRyBQQVJLCi0JCQkJQUNUT04gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTYwLUZFICAgKGhleCkJCUxZTlggU1lTVEVNIERFVkVMT1BFUlMsIElOQy4KLTAwNjBGRSAgICAgKGJhc2UgMTYpCQlMWU5YIFNZU1RFTSBERVZFTE9QRVJTLCBJTkMuCi0JCQkJMTc1TiBORVcgQk9TVE9OIFNUUkVFVAotCQkJCVdPQlVSTiBNQSAwMTgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjAtRkYgICAoaGV4KQkJUXVWaXMsIEluYy4KLTAwNjBGRiAgICAgKGJhc2UgMTYpCQlRdVZpcywgSW5jLgotCQkJCTI5MjEgU1cgV0FOQU1BS0VSIERSSVZFCi0JCQkJU1VJVEUgIzEwNwotCQkJCVRPUEVLQSBLUyA2NjYxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjQtNDAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMDA2NDQwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNjQtQTYgICAoaGV4KQkJTWFxdWV0IENhcmRpb1Zhc2N1bGFyCi0wMDY0QTYgICAgIChiYXNlIDE2KQkJTWFxdWV0IENhcmRpb1Zhc2N1bGFyCi0JCQkJMTMwMCBNYWNBcnRodXIgQmx2ZAotCQkJCU1haHdhaCBOSiAwNzQzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNkItOUUgICAoaGV4KQkJVklaSU8gSW5jCi0wMDZCOUUgICAgIChiYXNlIDE2KQkJVklaSU8gSW5jCi0JCQkJMzkgVGVzbGEKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTZCLUEwICAgKGhleCkJCVNIRU5aSEVOIFVOSVZFUlNBTCBJTlRFTExJU1lTIFBURSBMVEQKLTAwNkJBMCAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBVTklWRVJTQUwgSU5URUxMSVNZUyBQVEUgTFRECi0JCQkJUk9PTSAxNjA3LTE2MDgsWElOR0pJIE1BTlNJT04KLQkJCQlYSU5YSU5TSEEgUk9BRCwgU0hBSklORyBUT1dOCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODEwNAotCQkJCUNISU5BCi0KLTAwLTZELUZCICAgKGhleCkJCVZ1dHJpeCAoVUspIEx0ZAotMDA2REZCICAgICAoYmFzZSAxNikJCVZ1dHJpeCAoVUspIEx0ZAotCQkJCVVuaXQgMSBSZWQgTG9kZ2UgQnVzaW5lc3MgUGFyawotCQkJCVdhcmxleXMgTGFuZQotCQkJCVdlc3Rvbi1zdXBlci1tYXJlIE5vcnRoIFNvbWVyc2V0IEJTMjQgN1ROCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtNzAtQjAgICAoaGV4KQkJTS9BLUNPTSBJTkMuIENPTVBBTklFUwotMDA3MEIwICAgICAoYmFzZSAxNikJCU0vQS1DT00gSU5DLiBDT01QQU5JRVMKLQkJCQkxMTcxNyBFWFBMT1JBVElPTiBMQU5FCi0JCQkJR0VSTUFOVE9XTiBNRCAyMDc2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtNzAtQjMgICAoaGV4KQkJREFUQSBSRUNBTEwgTFRELgotMDA3MEIzICAgICAoYmFzZSAxNikJCURBVEEgUkVDQUxMIExURC4KLQkJCQlTT05ERVMgUExBQ0UKLQkJCQlET1JLSU5HIFNVUlJFWSBSSDQgM0VGCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC03OC05RSAgIChoZXgpCQlTQUdFTUNPTQotMDA3ODlFICAgICAoYmFzZSAxNikJCVNBR0VNQ09NCi0JCQkJMjUwIHJvdXRlIGRlIGwnRW1wZXJldXIKLQkJCQlSVUVJTCBNQUxNQUlTT04gIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLTAwLTdGLTI4ICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jIAotMDA3RjI4ICAgICAoYmFzZSAxNikJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jIAotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMDAgICAoaGV4KQkJTVVMVElURUNIIFNZU1RFTVMsIElOQy4KLTAwODAwMCAgICAgKGJhc2UgMTYpCQlNVUxUSVRFQ0ggU1lTVEVNUywgSU5DLgotCQkJCTIyMDUgV09PREFMRSBEUklWRQotCQkJCU1PVU5EUyBWSUVXIE1OIDU1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0wMSAgIChoZXgpCQlQRVJJUEhPTklDUyBDT1JQT1JBVElPTgotMDA4MDAxICAgICAoYmFzZSAxNikJCVBFUklQSE9OSUNTIENPUlBPUkFUSU9OCi0JCQkJNDAwMCBWRVRFUkFOUyBNRU1PUklBTCBISUdIV0FZCi0JCQkJQk9IRU1JQSBORVcgWU9SSyAxMTcxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMDIgICAoaGV4KQkJU0FURUxDT00gKFVLKSBMVEQKLTAwODAwMiAgICAgKGJhc2UgMTYpCQlTQVRFTENPTSAoVUspIExURAotCQkJCVRFQ0hOT0xPR1kgVFJBTlNGRVIgQ0VOVFJFCi0JCQkJU0lMV09PRCBQQVJLLCBCVUNLSFVSU1QgUk9BRCBBU0NPVCwgQkVSSwotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0wMyAgIChoZXgpCQlIWVRFQyBFTEVDVFJPTklDUyBMVEQuCi0wMDgwMDMgICAgIChiYXNlIDE2KQkJSFlURUMgRUxFQ1RST05JQ1MgTFRELgotCQkJCTUgQ1JBRE9DSyBST0FECi0JCQkJUkVBRElORyBCRVJLUyBSRzUgNERYCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLTA0ICAgKGhleCkJCUFOVExPVyBDT01NVU5JQ0FUSU9OUywgTFRELgotMDA4MDA0ICAgICAoYmFzZSAxNikJCUFOVExPVyBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCTQgQ09MVEhST1AgV0FZCi0JCQkJVEhBVENIQU0gUkcxOSA0TFcKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtMDUgICAoaGV4KQkJQ0FDVFVTIENPTVBVVEVSIElOQy4KLTAwODAwNSAgICAgKGJhc2UgMTYpCQlDQUNUVVMgQ09NUFVURVIgSU5DLgotCQkJCTExMjAgTUVUUk9DUkVTVCBEUklWRQotCQkJCVNVSVRFIDEwMwotCQkJCUNBUlJPTExUT04gVFggNzUwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTA2ICAgKGhleCkJCUNPTVBVQUREIENPUlBPUkFUSU9OCi0wMDgwMDYgICAgIChiYXNlIDE2KQkJQ09NUFVBREQgQ09SUE9SQVRJT04KLQkJCQlFTkdJTkVFUklORwotCQkJCTEyMzAzIFRFQ0hOT0xPR1kgQkxWRC4KLQkJCQlBVVNUSU4gVFggNzg3MjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTA3ICAgKGhleCkJCURMT0cgTkMtU1lTVEVNRQotMDA4MDA3ICAgICAoYmFzZSAxNikJCURMT0cgTkMtU1lTVEVNRQotCQkJCVdFUk5FUi1WT04tU0lFTUVOUyBTVFJBU1NFIDEzCi0JCQkJRC04MDM3LCBPTENISU5HCi0JCQkJR0VSTUFOWQotCi0wMC04MC0wOCAgIChoZXgpCQlEWU5BVEVDSCBDT01QVVRFUiBTWVNURU1TCi0wMDgwMDggICAgIChiYXNlIDE2KQkJRFlOQVRFQ0ggQ09NUFVURVIgU1lTVEVNUwotCQkJCTI4MCBCRVJOQVJETyBBVkVOVUUKLQkJCQlQLk8uIEJPWCA3NDAwCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDAzOS03NDAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0wOSAgIChoZXgpCQlKVVBJVEVSIFNZU1RFTVMsIElOQy4KLTAwODAwOSAgICAgKGJhc2UgMTYpCQlKVVBJVEVSIFNZU1RFTVMsIElOQy4KLQkJCQkzMDczIFRFQUdBUkRFTiBTVFJFRVQKLQkJCQlTQU4gTEVBTkRSTyBDQSA5NDU3Ny01NzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0wQSAgIChoZXgpCQlKQVBBTiBDT01QVVRFUiBDT1JQLgotMDA4MDBBICAgICAoYmFzZSAxNikJCUpBUEFOIENPTVBVVEVSIENPUlAuCi0JCQkJTC4gSy4gQkxERy4gSElHQVNISSBLQU5EQQotCQkJCTItNi05IENISVlPREEtS1UgVE9LWU8gMTAxCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC0wQiAgIChoZXgpCQlDU0sgQ09SUE9SQVRJT04KLTAwODAwQiAgICAgKGJhc2UgMTYpCQlDU0sgQ09SUE9SQVRJT04KLQkJCQkxOEYgTUFUU1VTSElUQSBJTVAgQkxERywKLQkJCQkxLTMtNyBTSElST01JIENIVU8tS1UgT1NBS0EKLQkJCQlKQVBBTiA1NDAKLQkJCQlKQVBBTgotCi0wMC04MC0wQyAgIChoZXgpCQlWSURFQ09NIExJTUlURUQKLTAwODAwQyAgICAgKGJhc2UgMTYpCQlWSURFQ09NIExJTUlURUQKLQkJCQlORVdUT1dOIEVTVEFURQotCQkJCUhFTkxFWS1PTi1USEFNRVMgT1hPTiAgUkc5IDFIRwotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0wRCAgIChoZXgpCQlWT1NTV0lOS0VMIEYuVS4KLTAwODAwRCAgICAgKGJhc2UgMTYpCQlWT1NTV0lOS0VMIEYuVS4KLQkJCQlBTSBKT1NURU5IT0YgMTUKLQkJCQlELTQxMzAgTU9FUlMKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC04MC0wRSAgIChoZXgpCQlBVExBTlRJWCBDT1JQT1JBVElPTgotMDA4MDBFICAgICAoYmFzZSAxNikJCUFUTEFOVElYIENPUlBPUkFUSU9OCi0JCQkJNTQwMSBOVyBCUk9LRU5TT1VORCBCTFZELgotCQkJCUJPQ0EgUkFUT04gRkwgMzM0MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTBGICAgKGhleCkJCVNUQU5EQVJEIE1JQ1JPU1lTVEVNUwotMDA4MDBGICAgICAoYmFzZSAxNikJCVNUQU5EQVJEIE1JQ1JPU1lTVEVNUwotCQkJCTMwMCBLRU5ORURZIERSSVZFCi0JCQkJSEFVUFBBVUdFIE5ZIDExNzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xMCAgIChoZXgpCQlDT01NT0RPUkUgSU5URVJOQVRJT05BTAotMDA4MDEwICAgICAoYmFzZSAxNikJCUNPTU1PRE9SRSBJTlRFUk5BVElPTkFMCi0JCQkJMTIwMCBXSUxTT04gRFJJVkUKLQkJCQlXRVNUIENIRVNURVIgUEEgMTkzODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTExICAgKGhleCkJCURJR0lUQUwgU1lTVEVNUyBJTlQnTC4gSU5DLgotMDA4MDExICAgICAoYmFzZSAxNikJCURJR0lUQUwgU1lTVEVNUyBJTlQnTC4gSU5DLgotCQkJCTc2NTkgMTc4VEggUEwuIE5FCi0JCQkJUC5PLiBCT1ggOTA4Ci0JCQkJUkVETU9ORCBXQSA5ODA3My0wOTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xMiAgIChoZXgpCQlJTlRFR1JBVEVEIE1FQVNVUkVNRU5UIFNZU1RFTVMKLTAwODAxMiAgICAgKGJhc2UgMTYpCQlJTlRFR1JBVEVEIE1FQVNVUkVNRU5UIFNZU1RFTVMKLQkJCQk5NTI1IFNXIEdFTUlOSSBEUklWRQotCQkJCUJFQVZFUlRPTiBPUiA5NzAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMTMgICAoaGV4KQkJVEhPTUFTLUNPTlJBRCBDT1JQT1JBVElPTgotMDA4MDEzICAgICAoYmFzZSAxNikJCVRIT01BUy1DT05SQUQgQ09SUE9SQVRJT04KLQkJCQkxOTA4LVIgS1JBTUVSIExBTkUKLQkJCQlBVVNUSU4gVFggNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTE0ICAgKGhleCkJCUVTUFJJVCBTWVNURU1TCi0wMDgwMTQgICAgIChiYXNlIDE2KQkJRVNQUklUIFNZU1RFTVMKLQkJCQkxNEYsIE5PLiAxLCBTRUMuIDQKLQkJCQlOQU4gS0lORyBFQVNUIFJPQUQgMTA1NjkgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTgwLTE1ICAgKGhleCkJCVNFSUtPIFNZU1RFTVMsIElOQy4KLTAwODAxNSAgICAgKGJhc2UgMTYpCQlTRUlLTyBTWVNURU1TLCBJTkMuCi0JCQkJU1lTVEVNUyBERVZFTE9QTUVOVCBESVZJU0lPTgotCQkJCTUtNCBIQUNDSE9CT1JJIDQtQ0hPVU1FIENIVVVPVS1LVSBUT0tPWU8KLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTE2ICAgKGhleCkJCVdBTkRFTCBBTkQgR09MVEVSTUFOTgotMDA4MDE2ICAgICAoYmFzZSAxNikJCVdBTkRFTCBBTkQgR09MVEVSTUFOTgotCQkJCTEwMzAgU1dBQklBIENPVVJUCi0JCQkJUkVTRUFSQ0ggVFJJQU5HTEUgUEFSSwotCQkJCU5DIDI3NzA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0xNyAgIChoZXgpCQlQRlUgTElNSVRFRAotMDA4MDE3ICAgICAoYmFzZSAxNikJCVBGVSBMSU1JVEVECi0JCQkJTkVUV09SSyBTRUMuCi0JCQkJNjU4LTEsIFRTVVJVTUEgTUFDSElEQS1TSEksIFRPS1lPIDE5NC0wMAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtMTggICAoaGV4KQkJS09CRSBTVEVFTCwgTFRELgotMDA4MDE4ICAgICAoYmFzZSAxNikJCUtPQkUgU1RFRUwsIExURC4KLQkJCQlLT0JFIElTVVpVIFJFQ1JVSVQgQkxERy4KLQkJCQk3VEggRkxPT1IgMi0yLCA0LUNIT01FLCBLVU1PSS1ET1JJLCBDSFVPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC0xOSAgIChoZXgpCQlEQVlOQSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA4MDE5ICAgICAoYmFzZSAxNikJCURBWU5BIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNTAgU09VVEggTUFJTiBTVFJFRVQtIzUzMAotCQkJCVNBTFQgTEFLRSBDSVRZIFVUQUggODQxNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTFBICAgKGhleCkJCUJFTEwgQVRMQU5USUMKLTAwODAxQSAgICAgKGJhc2UgMTYpCQlCRUxMIEFUTEFOVElDCi0JCQkJTjkyIFcxNDYxMiAgQU5USE9OWSBBVkVOVUUKLQkJCQlNRU5PTU9ORUUgRkFMTFMgV0kgNTMwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTFCICAgKGhleCkJCUtPRElBSyBURUNITk9MT0dZCi0wMDgwMUIgICAgIChiYXNlIDE2KQkJS09ESUFLIFRFQ0hOT0xPR1kKLQkJCQkyMzQwIEhBUlJJUyBXQVkKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMUMgICAoaGV4KQkJTkVXUE9SVCBTWVNURU1TIFNPTFVUSU9OUwotMDA4MDFDICAgICAoYmFzZSAxNikJCU5FV1BPUlQgU1lTVEVNUyBTT0xVVElPTlMKLQkJCQk0MDE5IFdFU1RFUkxZIEFWRU5VRQotCQkJCVNVSVRFIDEwMwotCQkJCU5FV1BPUlQgQkVBQ0ggQ0EgOTI2NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTFEICAgKGhleCkJCUlOVEVHUkFURUQgSU5GRVJFTkNFIE1BQ0hJTkVTCi0wMDgwMUQgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBJTkZFUkVOQ0UgTUFDSElORVMKLQkJCQkxNDY4IEVBU1QgS0FURUxMQQotCQkJCUFOQUhFSU0gQ0EgOTI4MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTFFICAgKGhleCkJCVhJTkVUUk9OLCBJTkMuCi0wMDgwMUUgICAgIChiYXNlIDE2KQkJWElORVRST04sIElOQy4KLQkJCQkyMzMwIEIuIFdBTFNIIEFWRS4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMUYgICAoaGV4KQkJS1JVUFAgQVRMQVMgRUxFQ1RST05JSyBHTUJICi0wMDgwMUYgICAgIChiYXNlIDE2KQkJS1JVUFAgQVRMQVMgRUxFQ1RST05JSyBHTUJICi0JCQkJUC5PLiBCT1ggNDQ4NTQ1Ci0JCQkJRC0yODAwIEJSRU1FTiA0NAotCQkJCUdFUk1BTlkKLQotMDAtODAtMjAgICAoaGV4KQkJTkVUV09SSyBQUk9EVUNUUwotMDA4MDIwICAgICAoYmFzZSAxNikJCU5FVFdPUksgUFJPRFVDVFMKLQkJCQlESVZJU0lPTiBPRiBBTkRSRVcgQ09SUE9SQVRJT04KLQkJCQkyNzcxIFBMQVpBIERFTCBBTU8zCi0JCQkJVE9SUkFOQ0UgQ0EgOTA1MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTIxICAgKGhleCkJCUFsY2F0ZWwgQ2FuYWRhIEluYy4KLTAwODAyMSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIENhbmFkYSBJbmMuCi0JCQkJMzQ5IFRlcnJ5IEZveCBEcml2ZQotCQkJCUthbmF0YSBPbnRhcmlvIEsySyAyVjYKLQkJCQlDQU5BREEKLQotMDAtODAtMjIgICAoaGV4KQkJU0NBTi1PUFRJQ1MKLTAwODAyMiAgICAgKGJhc2UgMTYpCQlTQ0FOLU9QVElDUwotCQkJCTIwMSBURUNITk9MT0dZIERSSVZFCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yMyAgIChoZXgpCQlJTlRFR1JBVEVEIEJVU0lORVNTIE5FVFdPUktTCi0wMDgwMjMgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBCVVNJTkVTUyBORVRXT1JLUwotCQkJCTFCTiBUSEUgU1lTVEVNUyBDRU5UUkUKLQkJCQkxNCwgQlJJREdFR0FURSBCVVNJTkVTUyBQQVJLLCBHQVRFSE9VU0UKLQkJCQlCVUNLUyBIUDE5IDNYTiAtIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0yNCAgIChoZXgpCQlLQUxQQU5BLCBJTkMuCi0wMDgwMjQgICAgIChiYXNlIDE2KQkJS0FMUEFOQSwgSU5DLgotCQkJCTExNTQgRUFTVCBBUlFVRVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yNSAgIChoZXgpCQlTVE9MTE1BTk4gR01CSAotMDA4MDI1ICAgICAoYmFzZSAxNikJCVNUT0xMTUFOTiBHTUJICi0JCQkJTUFYLUJSQVVFUi1BTExFRSA4MQotCQkJCUQtMjAwMCBIQU1CVVJHIDUwCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtODAtMjYgICAoaGV4KQkJTkVUV09SSyBQUk9EVUNUUyBDT1JQT1JBVElPTgotMDA4MDI2ICAgICAoYmFzZSAxNikJCU5FVFdPUksgUFJPRFVDVFMgQ09SUE9SQVRJT04KLQkJCQkxNDQwIFdFU1QgQ09MT1JBRE8gQkxWRC4KLQkJCQlQQVNBREVOQSBDQSA5MTEwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMjcgICAoaGV4KQkJQURBUFRJVkUgU1lTVEVNUywgSU5DLgotMDA4MDI3ICAgICAoYmFzZSAxNikJCUFEQVBUSVZFIFNZU1RFTVMsIElOQy4KLQkJCQkxNDAwIE4uVy4gQ09NUFRPTiBEUklWRQotCQkJCVNVSVRFIDM0MAotCQkJCUJFQVZFUlRPTiBPUiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMjggICAoaGV4KQkJVFJBRFBPU1QgKEhLKSBMVEQKLTAwODAyOCAgICAgKGJhc2UgMTYpCQlUUkFEUE9TVCAoSEspIExURAotCQkJCTUvRiwgU1RBUiBDRU5UUkUKLQkJCQk0NDMtNDUxIENBU1RMRSBQRUFLIFJPQUQgS1dBSSBDSFVORywgTi5UCi0JCQkJSE9ORyBLT05HCi0JCQkJSE9ORyBLT05HCi0KLTAwLTgwLTI5ICAgKGhleCkJCUVBR0xFIFRFQ0hOT0xPR1ksIElOQy4KLTAwODAyOSAgICAgKGJhc2UgMTYpCQlFQUdMRSBURUNITk9MT0dZLCBJTkMuCi0JCQkJNjgwMCBPUkFOR0VUSE9SUEUgQVZFLlVOSVQKLQkJCQlCVUVOQSBQQVJLIENBIDkwNjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yQSAgIChoZXgpCQlURVNUIFNZU1RFTVMgJiBTSU1VTEFUSU9OUyBJTkMKLTAwODAyQSAgICAgKGJhc2UgMTYpCQlURVNUIFNZU1RFTVMgJiBTSU1VTEFUSU9OUyBJTkMKLQkJCQkzMjQyOSBJTkRVU1RSSUFMIERSSVZFCi0JCQkJTUFESVNPTiBIRUlHSFRTIE1JIDQ4MDcxLTE1MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTJCICAgKGhleCkJCUlOVEVHUkFURUQgTUFSS0VUSU5HIENPCi0wMDgwMkIgICAgIChiYXNlIDE2KQkJSU5URUdSQVRFRCBNQVJLRVRJTkcgQ08KLQkJCQkxMzYwIEJPUkRFQVVYIERSSVZFCi0JCQkJQkxERy4gIzQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTJDICAgKGhleCkJCVRIRSBTQUdFIEdST1VQIFBMQwotMDA4MDJDICAgICAoYmFzZSAxNikJCVRIRSBTQUdFIEdST1VQIFBMQwotCQkJCVNBR0UgSE9VU0UsIEJFTlRPTiBQQVJLIFJPQUQKLQkJCQlORVdDQVNUTEUgVVBPTiBUWU5FIE5FNyA3TFoKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLTJEICAgKGhleCkJCVhZTE9HSUNTIElOQwotMDA4MDJEICAgICAoYmFzZSAxNikJCVhZTE9HSUNTIElOQwotCQkJCTUzIFRISVJEIEFWRU5VRQotCQkJCUJVUkxJTkdUT04gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTJFICAgKGhleCkJCUNBU1RMRSBST0NLIENPTVBVVElORwotMDA4MDJFICAgICAoYmFzZSAxNikJCUNBU1RMRSBST0NLIENPTVBVVElORwotCQkJCTIwODM3IEJPWUNFIExBTkUKLQkJCQlTQVJBVE9HQSBDQSA5NTA3MC00ODA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0yRiAgIChoZXgpCQlOQVRJT05BTCBJTlNUUlVNRU5UUyBDT1JQLgotMDA4MDJGICAgICAoYmFzZSAxNikJCU5BVElPTkFMIElOU1RSVU1FTlRTIENPUlAuCi0JCQkJMTE1MDAgTm9ydGggTW9wYWMgRXhwcmVzc3dheQotCQkJCUFVU1RJTiBUWCA3ODc1OS0zNTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0zMCAgIChoZXgpCQlORVhVUyBFTEVDVFJPTklDUwotMDA4MDMwICAgICAoYmFzZSAxNikJCU5FWFVTIEVMRUNUUk9OSUNTCi0JCQkJMzkgU1BSSU5HRklFTEQgUk9BRAotCQkJCUNBTUJSSURHRSBDQjQgMUFECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC0zMSAgIChoZXgpCQlCQVNZUywgQ09SUC4KLTAwODAzMSAgICAgKGJhc2UgMTYpCQlCQVNZUywgQ09SUC4KLQkJCQk1MDEgTUFDQVJBIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMzIgICAoaGV4KQkJQUNDRVNTIENPLiwgTFRELgotMDA4MDMyICAgICAoYmFzZSAxNikJCUFDQ0VTUyBDTy4sIExURC4KLQkJCQlISUVJLUtVREFOIEJMREcuIEIxCi0JCQkJMy04LTExIEtVREFOLU1JTkFNSSwgQ0hJWU9EQS1LVSwgVE9LWU8gMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtMzMgICAoaGV4KQkJRU1TIEF2aWF0aW9uLCBJbmMuCi0wMDgwMzMgICAgIChiYXNlIDE2KQkJRU1TIEF2aWF0aW9uLCBJbmMuCi0JCQkJMTIxIFdISVRURU5EQUxFIERSSVZFCi0JCQkJU3VpdGUgQQotCQkJCU1PT1JFU1RPV04gTkogMDgwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTM0ICAgKGhleCkJCVNNVCBHT1VQSUwKLTAwODAzNCAgICAgKGJhc2UgMTYpCQlTTVQgR09VUElMCi0JCQkJMyBSVUUgREVTIEFSQ0hJVkVTCi0JCQkJOTQwMDAgQ1JFVEVJTAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC04MC0zNSAgIChoZXgpCQlURUNITk9MT0dZIFdPUktTLCBJTkMuCi0wMDgwMzUgICAgIChiYXNlIDE2KQkJVEVDSE5PTE9HWSBXT1JLUywgSU5DLgotCQkJCTQwMzAgQlJBS0VSIExBTkUgIzM1MAotCQkJCUFVU1RJTiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtMzYgICAoaGV4KQkJUkVGTEVYIE1BTlVGQUNUVVJJTkcgU1lTVEVNUwotMDA4MDM2ICAgICAoYmFzZSAxNikJCVJFRkxFWCBNQU5VRkFDVFVSSU5HIFNZU1RFTVMKLQkJCQlVTklUIEQsIFRIRSBGTEVNSU5HIENFTlRSRSwKLQkJCQlGTEVNSU5HIFdBWSwgQ1JBV0xFWSBXRVNUIFNVU1NFWCBSSDEwIDJOCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLTM3ICAgKGhleCkJCUVyaWNzc29uIEdyb3VwCi0wMDgwMzcgICAgIChiYXNlIDE2KQkJRXJpY3Nzb24gR3JvdXAKLQkJCQlUZWxlZm9uYWt0aWVib2xhZ2V0Ci0JCQkJTE0gRXJpY3Nzb24gQ29ycC4gMTI2IDI1IFNUT0NLSE9MTQotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC04MC0zOCAgIChoZXgpCQlEQVRBIFJFU0VBUkNIICYgQVBQTElDQVRJT05TCi0wMDgwMzggICAgIChiYXNlIDE2KQkJREFUQSBSRVNFQVJDSCAmIEFQUExJQ0FUSU9OUwotCQkJCTkwNDEgRVhFQ1VUSVZFIFBBUksgRFIuCi0JCQkJU1VJVEUgMjAwCi0JCQkJS05PWFZJTExFIFROIDM3OTIzLTQ2MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTM5ICAgKGhleCkJCUFMQ0FURUwgU1RDIEFVU1RSQUxJQQotMDA4MDM5ICAgICAoYmFzZSAxNikJCUFMQ0FURUwgU1RDIEFVU1RSQUxJQQotCQkJCTI1Mi0yODAgQk9UQU5ZIFJPQUQKLQkJCQlBTEVYQU5EUklBLCBOU1cgMjAxNQotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC04MC0zQSAgIChoZXgpCQlWQVJJVFlQRVIsIElOQy4KLTAwODAzQSAgICAgKGJhc2UgMTYpCQlWQVJJVFlQRVIsIElOQy4KLQkJCQk5MDAgTUlERExFU0VYIFRVUk5QSUtFCi0JCQkJQklMTEVSSUNBIE1BIDAxODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC0zQiAgIChoZXgpCQlBUFQgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwODAzQiAgICAgKGJhc2UgMTYpCQlBUFQgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk5NjA3IERSLiBQRVJSWSBST0FECi0JCQkJSUpBTVNWSUxMRSBNRCAyMTc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtM0MgICAoaGV4KQkJVFZTIEVMRUNUUk9OSUNTIExURAotMDA4MDNDICAgICAoYmFzZSAxNikJCVRWUyBFTEVDVFJPTklDUyBMVEQKLQkJCQk0NCwgTUlMTEVSIFJPQUQKLQkJCQlCQU5HQUxPUkUgNTYwIDA1MgotCQkJCUlORElBCi0JCQkJSU5ESUEKLQotMDAtODAtM0QgICAoaGV4KQkJU1VSSUdJS0VOIENPLiwgIExURC4KLTAwODAzRCAgICAgKGJhc2UgMTYpCQlTVVJJR0lLRU4gQ08uLCAgTFRELgotCQkJCVlPVVRIIEJMREcsIDQtMS05IFNISU5KVUtVCi0JCQkJU0hJTkpVS1UtS1UsIFRPS1lPCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC0zRSAgIChoZXgpCQlTWU5FUk5FVElDUwotMDA4MDNFICAgICAoYmFzZSAxNikJCVNZTkVSTkVUSUNTCi0JCQkJODUgUkFOR0VXQVkgUk9BRAotCQkJCU5PUlRIIEJJTExFUklDQSBNQSAwMTg2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtM0YgICAoaGV4KQkJVEFUVU5HIENPTVBBTlkKLTAwODAzRiAgICAgKGJhc2UgMTYpCQlUQVRVTkcgQ09NUEFOWQotCQkJCTIyIENIVU5HU0hBTkcgTi4gUkQuIDNSRCBTRUMuCi0JCQkJVEFJUEVJIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTgwLTQwICAgKGhleCkJCUpPSE4gRkxVS0UgTUFOVUZBQ1RVUklORyBDTy4KLTAwODA0MCAgICAgKGJhc2UgMTYpCQlKT0hOIEZMVUtFIE1BTlVGQUNUVVJJTkcgQ08uCi0JCQkJUC5PLiBCT1ggQzkwOTAtTS9TIDI0NEYKLQkJCQlFVkVSRVRUIFdBIDk4MjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00MSAgIChoZXgpCQlWRUIgS09NQklOQVQgUk9CT1RST04KLTAwODA0MSAgICAgKGJhc2UgMTYpCQlWRUIgS09NQklOQVQgUk9CT1RST04KLQkJCQlHUlVOQUVSIFNUUkFCRSAyLCBEUkVTREVOIDgwMTAKLQkJCQlHRFIgRUFTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC04MC00MiAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIKLTAwODA0MiAgICAgKGJhc2UgMTYpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIKLQkJCQkyOTAwIFMuIERpYWJsbyBXYXkKLQkJCQlUZW1wZSBBWiA4NTI4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNDMgICAoaGV4KQkJTkVUV09STEQsIElOQy4KLTAwODA0MyAgICAgKGJhc2UgMTYpCQlORVRXT1JMRCwgSU5DLgotCQkJCUtBTkRBIDMgQU1FUkVYIEJMREcuCi0JCQkJMy0xMCBLQU5EQUpJTkJPQ0hPIENISVlPREEtS1UgICAgVE9LWU8gMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtNDQgICAoaGV4KQkJU1lTVEVDSCBDT01QVVRFUiBDT1JQLgotMDA4MDQ0ICAgICAoYmFzZSAxNikJCVNZU1RFQ0ggQ09NUFVURVIgQ09SUC4KLQkJCQk2NDY1IE5BTkNZIFJJREdFIERSSVZFCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00NSAgIChoZXgpCQlNQVRTVVNISVRBIEVMRUNUUklDIElORC4gQ08KLTAwODA0NSAgICAgKGJhc2UgMTYpCQlNQVRTVVNISVRBIEVMRUNUUklDIElORC4gQ08KLQkJCQlDT01QVVRFUiBESVZJU0lPTgotCQkJCTEwMDYsIEtBRE9NQSwKLQkJCQlPU0FLQSA1NzEgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC00NiAgIChoZXgpCQlUYXR0aWxlIFNSTCAKLTAwODA0NiAgICAgKGJhc2UgMTYpCQlUYXR0aWxlIFNSTCAKLQkJCQlERVBULiBPRiBFTEVDVFJJQ0FMIEVOR0lOJ0lORwotCQkJCTEwIEtJTkdTIENPTExFR0UgUkQuIFRPUk9OVE8sIE9OVEFSSU8gTTUKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtODAtNDcgICAoaGV4KQkJSU4tTkVUIENPUlAuCi0wMDgwNDcgICAgIChiYXNlIDE2KQkJSU4tTkVUIENPUlAuCi0JCQkJMTY3MjAgV0VTVCBCRVJOQVJETyBEUklWRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyNy0xOTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00OCAgIChoZXgpCQlDT01QRVggSU5DT1JQT1JBVEVECi0wMDgwNDggICAgIChiYXNlIDE2KQkJQ09NUEVYIElOQ09SUE9SQVRFRAotCQkJCTQwNTUgRUFTVCBMQSBQQUxNQQotCQkJCVVOSVQKLQkJCQlBTkFIRUlNIENBIDkyODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00OSAgIChoZXgpCQlOSVNTSU4gRUxFQ1RSSUMgQ08uLCBMVEQuCi0wMDgwNDkgICAgIChiYXNlIDE2KQkJTklTU0lOIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTQ3LCBVTUVaVSAtIFRBS0FTRSAtIENITwotCQkJCVVLWU8tS1UsIEtZT1RPLCA2MTUKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTRBICAgKGhleCkJCVBSTy1MT0cKLTAwODA0QSAgICAgKGJhc2UgMTYpCQlQUk8tTE9HCi0JCQkJMTIgVVBQRVIgUkFHU0RBTEUgRFJJVkUKLQkJCQlNT05URVJFWSBDQSA5Mzk0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNEIgICAoaGV4KQkJRUFHTEUgVEVDSE5PTE9HSUVTIFBUWS5MVEQuCi0wMDgwNEIgICAgIChiYXNlIDE2KQkJRUFHTEUgVEVDSE5PTE9HSUVTIFBUWS5MVEQuCi0JCQkJNzAgS0VZUyBST0FECi0JCQkJTU9PUkFCQklOICBWSUMuIDMxODkKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtODAtNEMgICAoaGV4KQkJQ09OVEVDIENPLiwgTFRELgotMDA4MDRDICAgICAoYmFzZSAxNikJCUNPTlRFQyBDTy4sIExURC4KLQkJCQkzLTktMzEsIEhJTUVTQVRPCi0JCQkJTklTSElZT0RPR0FXQS1LVSBPU0FLQSwgNTU1Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC00RCAgIChoZXgpCQlDWUNMT05FIE1JQ1JPU1lTVEVNUywgSU5DLgotMDA4MDREICAgICAoYmFzZSAxNikJCUNZQ0xPTkUgTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJMjUgU0NJRU5DRSBQQVJLCi0JCQkJTkVXIEhBVkVOIENUIDA2NTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00RSAgIChoZXgpCQlBUEVYIENPTVBVVEVSIENPTVBBTlkKLTAwODA0RSAgICAgKGJhc2UgMTYpCQlBUEVYIENPTVBVVEVSIENPTVBBTlkKLQkJCQk0NTAwIDE1MFRIIEFWRU5VRSwgTkUKLQkJCQlSRURNT05EIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC00RiAgIChoZXgpCQlEQUlLSU4gSU5EVVNUUklFUywgTFRELgotMDA4MDRGICAgICAoYmFzZSAxNikJCURBSUtJTiBJTkRVU1RSSUVTLCBMVEQuCi0JCQkJRUxFQ1RST05JQ1MgRElWSVNJT04KLQkJCQlTSElHQSBQTEFOVCAxMDAwLTIgT0hUQU5JIE9LQU1PVE8tQ0hPLCBLCi0JCQkJSkFQQU4gNTI1Ci0JCQkJSkFQQU4KLQotMDAtODAtNTAgICAoaGV4KQkJWklBVEVDSCBDT1JQT1JBVElPTgotMDA4MDUwICAgICAoYmFzZSAxNikJCVpJQVRFQ0ggQ09SUE9SQVRJT04KLQkJCQkzNDMzIFJPQkVSVE8gQ09VUlQKLQkJCQlTQU4gTFVJUyBPQklTUE8gQ0EgOTM0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTUxICAgKGhleCkJCUZJQkVSTVVYCi0wMDgwNTEgICAgIChiYXNlIDE2KQkJRklCRVJNVVgKLQkJCQk5MzEwIFRPUEFOR0EgQ0FOWU9OIEJMVkQuCi0JCQkJQ0hBVFNXT1JUSCBDQSA5MTMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNTIgICAoaGV4KQkJVEVDSE5JQ0FMTFkgRUxJVEUgQ09OQ0VQVFMKLTAwODA1MiAgICAgKGJhc2UgMTYpCQlURUNITklDQUxMWSBFTElURSBDT05DRVBUUwotCQkJCTI2MTUgUEFDSUZJQyBDT0FTVCBISUdIV0FZCi0JCQkJSEVSTU9TQSBCRUFDSCBDQSA5MDI1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNTMgICAoaGV4KQkJSU5URUxMSUNPTSwgSU5DLgotMDA4MDUzICAgICAoYmFzZSAxNikJCUlOVEVMTElDT00sIElOQy4KLQkJCQkyMDQxNSBOT1JESE9GRiBTVFJFRVQKLQkJCQlDSEFUU1dPUlRIIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC01NCAgIChoZXgpCQlGUk9OVElFUiBURUNITk9MT0dJRVMgQ09SUC4KLTAwODA1NCAgICAgKGJhc2UgMTYpCQlGUk9OVElFUiBURUNITk9MT0dJRVMgQ09SUC4KLQkJCQkxMDIwMSBOTy4gUFQuIFdBU0hJTkdUT04gUk9BRAotCQkJCU1FUVVPTiBXSSA1MzA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNTUgICAoaGV4KQkJRkVSTUlMQUIKLTAwODA1NSAgICAgKGJhc2UgMTYpCQlGRVJNSUxBQgotCQkJCVAuTy4gQk9YIDUwMCwgTVMtMjM0Ci0JCQkJQkFUQVZJQSBJTCA2MDUxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNTYgICAoaGV4KQkJU1BISU5YIEVMRUtUUk9OSUsgR01CSAotMDA4MDU2ICAgICAoYmFzZSAxNikJCVNQSElOWCBFTEVLVFJPTklLIEdNQkgKLQkJCQlXQUxETUFUVEVOU1RSLCAxMwotCQkJCTc4MDggV0FMREtJUkNIIDMgUkFQUEVORUNLU1RSQUJFIDEKLQkJCQlXRVNUIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLTU3ICAgKGhleCkJCUFEU09GVCwgTFRELgotMDA4MDU3ICAgICAoYmFzZSAxNikJCUFEU09GVCwgTFRELgotCQkJCUltIEJhdW1nYXJ0ZW4gNgotCQkJCU1PSExJTiBDSC00MzEzIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTgwLTU4ICAgKGhleCkJCVBSSU5URVIgU1lTVEVNUyBDT1JQT1JBVElPTgotMDA4MDU4ICAgICAoYmFzZSAxNikJCVBSSU5URVIgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTIwNyBQQVJSWSBQQVJLV0FZCi0JCQkJR0FJVEhFUlNCVVJHIE1EIDIwODc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC01OSAgIChoZXgpCQlTVEFOTEVZIEVMRUNUUklDIENPLiwgTFRECi0wMDgwNTkgICAgIChiYXNlIDE2KQkJU1RBTkxFWSBFTEVDVFJJQyBDTy4sIExURAotCQkJCVImRCBMQUJPUkFUT1JZCi0JCQkJMS0zLTEgRURBLU5JU0hJLCBNSURPUkktS1UsIFlPS09IQU1BLVNISQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtNUEgICAoaGV4KQkJVFVMSVAgQ09NUFVURVJTIElOVEVSTkFUJ0wgQi5WCi0wMDgwNUEgICAgIChiYXNlIDE2KQkJVFVMSVAgQ09NUFVURVJTIElOVEVSTkFUJ0wgQi5WCi0JCQkJUC5PLiBCT1ggMzMzMwotCQkJCTUyMDMgREggJ1MtSEVSVE9HRU5CT1NDSAotCQkJCVRIRSBORVRIRVJMQU5EUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTgwLTVCICAgKGhleCkJCUNPTkRPUiBTWVNURU1TLCBJTkMuCi0wMDgwNUIgICAgIChiYXNlIDE2KQkJQ09ORE9SIFNZU1RFTVMsIElOQy4KLQkJCQkyMTMzIFNBTUFSSUxUQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNUMgICAoaGV4KQkJQUdJTElTIENPUlBPUkFUSU9OCi0wMDgwNUMgICAgIChiYXNlIDE2KQkJQUdJTElTIENPUlBPUkFUSU9OCi0JCQkJMTEwMSBTQU4gQU5UT05JTyBST0FECi0JCQkJU1VJVEUgMTAxCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0My0xMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC01RCAgIChoZXgpCQlDQU5TVEFSCi0wMDgwNUQgICAgIChiYXNlIDE2KQkJQ0FOU1RBUgotCQkJCTM5MDAgVklDVE9SSUEgUEFSSyBBVkVOVUUKLQkJCQlOT1JUSCBZT1JLIE9OVEFSSU8sIENBTkFEQQotCQkJCU0ySCAzSDcKLQkJCQlDQU5BREEKLQotMDAtODAtNUUgICAoaGV4KQkJTFNJIExPR0lDIENPUlBPUkFUSU9OCi0wMDgwNUUgICAgIChiYXNlIDE2KQkJTFNJIExPR0lDIENPUlBPUkFUSU9OCi0JCQkJMTU1MSBNQ0NBUlRIWSBCT1VMRVZBUkQKLQkJCQlNUyBHODEzCi0JCQkJTUlMUElUQVMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTVGICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0wMDgwNUYgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkyMDU1NSBTdGF0ZSBIaWdod2F5IDI0OQotCQkJCU1TMDQwODAxCi0JCQkJSG91c3RvbiBUWCA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNjAgICAoaGV4KQkJTkVUV09SSyBJTlRFUkZBQ0UgQ09SUE9SQVRJT04KLTAwODA2MCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIElOVEVSRkFDRSBDT1JQT1JBVElPTgotCQkJCTE1MDE5IFdFU1QgOTUgU1RSRUVUCi0JCQkJTEVORVhBIEtTIDY2MjE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC02MSAgIChoZXgpCQlMSVRUT04gU1lTVEVNUywgSU5DLgotMDA4MDYxICAgICAoYmFzZSAxNikJCUxJVFRPTiBTWVNURU1TLCBJTkMuCi0JCQkJTS9TIDQ0LTIwCi0JCQkJMjk4NTEgQUdPVVJBIFJPQUQKLQkJCQlBR09VUkEgSElMTFMgQ0EgOTEzMDEtMDUwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNjIgICAoaGV4KQkJSU5URVJGQUNFICBDTy4KLTAwODA2MiAgICAgKGJhc2UgMTYpCQlJTlRFUkZBQ0UgIENPLgotCQkJCTgtMjYgT1pVIDUtQ0hPTUUgTUlOQU1JLUtVCi0JCQkJSElST1NISU1BIDczMgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtNjMgICAoaGV4KQkJSGlyc2NobWFubiBBdXRvbWF0aW9uIGFuZCBDb250cm9sIEdtYkgKLTAwODA2MyAgICAgKGJhc2UgMTYpCQlIaXJzY2htYW5uIEF1dG9tYXRpb24gYW5kIENvbnRyb2wgR21iSAotCQkJCVN0dXR0Z2FydGVyIFN0cmFzc2UgNDUtNTEgCi0JCQkJTmVja2FydGVuemxpbmdlbiAgIEQtNzI2NTQgCi0JCQkJR0VSTUFOWQotCi0wMC04MC02NCAgIChoZXgpCQlUYXR0aWxlIFNSTCAKLTAwODA2NCAgICAgKGJhc2UgMTYpCQlUYXR0aWxlIFNSTCAKLQkJCQkzNDcxIE5PUlRIIEZJUlNUIFNUUkVFVCBNL1MKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNjUgICAoaGV4KQkJQ1lCRVJHUkFQSElDIFNZU1RFTVMgUFRZIExURC4KLTAwODA2NSAgICAgKGJhc2UgMTYpCQlDWUJFUkdSQVBISUMgU1lTVEVNUyBQVFkgTFRELgotCQkJCTI5MCBCVVJXT09EIFJPQUQKLQkJCQlIQVdUSE9STiwgVklDVE9SSUEgMzEyMgotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC04MC02NiAgIChoZXgpCQlBUkNPTSBDT05UUk9MIFNZU1RFTVMsIExURC4KLTAwODA2NiAgICAgKGJhc2UgMTYpCQlBUkNPTSBDT05UUk9MIFNZU1RFTVMsIExURC4KLQkJCQlVTklUIDgsIENMSUZUT04gUk9BRAotCQkJCUNBTUJSSURHRSBDQkkgNFdICi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC02NyAgIChoZXgpCQlTUVVBUkUgRCBDT01QQU5ZCi0wMDgwNjcgICAgIChiYXNlIDE2KQkJU1FVQVJFIEQgQ09NUEFOWQotCQkJCTQwNDEgTk9SVEggUklDSEFSRCBTVFJFRVQKLQkJCQlQLk8uIEJPWCA0NzIKLQkJCQlNSUxXQVVLRUUgV0kgNTMyMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTY4ICAgKGhleCkJCVlBTUFURUNIIFNDSUVOVElGSUMgTFRELgotMDA4MDY4ICAgICAoYmFzZSAxNikJCVlBTUFURUNIIFNDSUVOVElGSUMgTFRELgotCQkJCTEyNTUgTEFJUkQsIFNVSVRFIDI2MAotCQkJCU1PTlRSRUFMLCBRVUVCRUMgSDNQIDJUMQotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC04MC02OSAgIChoZXgpCQlDT01QVVRPTkUgU1lTVEVNUwotMDA4MDY5ICAgICAoYmFzZSAxNikJCUNPTVBVVE9ORSBTWVNURU1TCi0JCQkJMTEwMCBOT1JUSE1FQURPVyBQQVJLV0FZCi0JCQkJU1VJVEUgMTUwCi0JCQkJUk9TV0VMTCBHQSAzMDA3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNkEgICAoaGV4KQkJRVJJIChFTVBBQyBSRVNFQVJDSCBJTkMuKQotMDA4MDZBICAgICAoYmFzZSAxNikJCUVSSSAoRU1QQUMgUkVTRUFSQ0ggSU5DLikKLQkJCQk0NzU2MCBTRUFCUklER0UgRFJJVkUKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC02QiAgIChoZXgpCQlTQ0hNSUQgVEVMRUNPTU1VTklDQVRJT04KLTAwODA2QiAgICAgKGJhc2UgMTYpCQlTQ0hNSUQgVEVMRUNPTU1VTklDQVRJT04KLQkJCQlCSU5aU1RSQVNTRSAzNSwKLQkJCQlDSC04MDQ1IFpVUklDSAotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtODAtNkMgICAoaGV4KQkJQ0VHRUxFQyBQUk9KRUNUUyBMVEQKLTAwODA2QyAgICAgKGJhc2UgMTYpCQlDRUdFTEVDIFBST0pFQ1RTIExURAotCQkJCURFUFQuIE1ERCwKLQkJCQlCT1VHSFRPTiBSRCwgIFJVR0JZIFdBUktTLCBDTzIxIDFCVQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC02RCAgIChoZXgpCQlDRU5UVVJZIFNZU1RFTVMgQ09SUC4KLTAwODA2RCAgICAgKGJhc2UgMTYpCQlDRU5UVVJZIFNZU1RFTVMgQ09SUC4KLQkJCQkyLTgtMTIgTUlOQU1JLUNITwotCQkJCUtPS1VCVU5KSS1TSEksIFRPS1lPCi0JCQkJMTg1IEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtNkUgICAoaGV4KQkJTklQUE9OIFNURUVMIENPUlBPUkFUSU9OCi0wMDgwNkUgICAgIChiYXNlIDE2KQkJTklQUE9OIFNURUVMIENPUlBPUkFUSU9OCi0JCQkJMzEtMSBTSElOS0FXQSAyLUNIT1VNRQotCQkJCUNIVU8tS1UgVE9LWU8gMTA0Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC02RiAgIChoZXgpCQlPTkVMQU4gTFRELgotMDA4MDZGICAgICAoYmFzZSAxNikJCU9ORUxBTiBMVEQuCi0JCQkJUC5PLiBCT1ggMTA3Ci0JCQkJSEVOTEVZIE9OIFRIQU1FUyBPWEZPUkRTSElSRSBSRzkgM05PUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtNzAgICAoaGV4KQkJQ09NUFVUQURPUkFTIE1JQ1JPTgotMDA4MDcwICAgICAoYmFzZSAxNikJCUNPTVBVVEFET1JBUyBNSUNST04KLQkJCQlHVUVSUkVSTyAyMDAxIC0gMTkKLQkJCQlJUkFQVUFUTyBHVE8gIDM2NjYwCi0JCQkJTUVYSUNPCi0JCQkJTUVYSUNPCi0KLTAwLTgwLTcxICAgKGhleCkJCVNBSSBURUNITk9MT0dZCi0wMDgwNzEgICAgIChiYXNlIDE2KQkJU0FJIFRFQ0hOT0xPR1kKLQkJCQk0MjI0IENBTVBVUyBQT0lOVCBDT1VSVAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMS0xNTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC03MiAgIChoZXgpCQlNSUNST1BMRVggU1lTVEVNUyBMVEQuCi0wMDgwNzIgICAgIChiYXNlIDE2KQkJTUlDUk9QTEVYIFNZU1RFTVMgTFRELgotCQkJCTEwNC0yMDcxIEtpbmdzd2F5Ci0JCQkJUG9ydCBDb3F1aXRsYW0sICBCQyBWM0MgNk4yCi0JCQkJQ0FOQURBCi0KLTAwLTgwLTczICAgKGhleCkJCURXQiBBU1NPQ0lBVEVTCi0wMDgwNzMgICAgIChiYXNlIDE2KQkJRFdCIEFTU09DSUFURVMKLQkJCQk5MzYwIFNXIEdFTUlOSSBEUklWRQotCQkJCUJFQVZFUlRPTiBPUiA5NzAwNS03MTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC03NCAgIChoZXgpCQlGSVNIRVIgQ09OVFJPTFMKLTAwODA3NCAgICAgKGJhc2UgMTYpCQlGSVNIRVIgQ09OVFJPTFMKLQkJCQkxNzEyIENFTlRSRSBDUkVFSyBEUklWRQotCQkJCUFVU1RJTiBUWCA3ODc1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtNzUgICAoaGV4KQkJUEFSU1lURUMgR01CSAotMDA4MDc1ICAgICAoYmFzZSAxNikJCVBBUlNZVEVDIEdNQkgKLQkJCQlKVUVMSUNIRVIgU1RSLiAzMzgKLQkJCQlENTEwMCBBQUNIRU4KLQkJCQlGLlIuIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLTc2ICAgKGhleCkJCU1DTkMKLTAwODA3NiAgICAgKGJhc2UgMTYpCQlNQ05DCi0JCQkJUC5PLiBCT1ggMTI4ODkKLQkJCQlSVFAgTkMgMjc3MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTc3ICAgKGhleCkJCUJST1RIRVIgSU5EVVNUUklFUywgTFRELgotMDA4MDc3ICAgICAoYmFzZSAxNikJCUJST1RIRVIgSU5EVVNUUklFUywgTFRELgotCQkJCVJFU0VBUkNIIExBQk9SQVRPUlkKLQkJCQk5LTM1IEhPUklUQS1ET1JJLCBNSVpVSE8tS1UgTkFHT1lBLCA0NjcKLQkJCQlKQVBBTgotCi0wMC04MC03OCAgIChoZXgpCQlQUkFDVElDQUwgUEVSSVBIRVJBTFMsIElOQy4KLTAwODA3OCAgICAgKGJhc2UgMTYpCQlQUkFDVElDQUwgUEVSSVBIRVJBTFMsIElOQy4KLQkJCQkzNzUgQ09ORUpPIFJJREdFIEFWRU5VRQotCQkJCVRIT1VTQU5EIE9BS1MgQ0EgOTEzNjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTc5ICAgKGhleCkJCU1JQ1JPQlVTIERFU0lHTlMgTFRELgotMDA4MDc5ICAgICAoYmFzZSAxNikJCU1JQ1JPQlVTIERFU0lHTlMgTFRELgotCQkJCVRSRUFEQVdBWSBISUxMCi0JCQkJTE9VRFdBVEVSIEhJR0ggV1lDT01CRSBCVUNLUyBIUDEwIDlRTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtN0EgICAoaGV4KQkJQUlURUNIIFNZU1RFTVMgTFRELgotMDA4MDdBICAgICAoYmFzZSAxNikJCUFJVEVDSCBTWVNURU1TIExURC4KLQkJCQkzMDgwIE9MQ09UVCBTVFJFRVQKLQkJCQlTVUlURSAxMDVBCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTdCICAgKGhleCkJCUFSVEVMIENPTU1VTklDQVRJT05TIENPUlAuCi0wMDgwN0IgICAgIChiYXNlIDE2KQkJQVJURUwgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQkyMiBLQU5FIElORFVTVFJJQUwgRFJJVkUKLQkJCQlIVURTT04gTUEgMDE3NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTdDICAgKGhleCkJCUZJQkVSQ09NLCBJTkMuCi0wMDgwN0MgICAgIChiYXNlIDE2KQkJRklCRVJDT00sIElOQy4KLQkJCQkzMzUzIE9SQU5HRSBBVkVOVUUgTkUKLQkJCQlST0FOT0tFIFZBIDI0MDEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC03RCAgIChoZXgpCQlFUVVJTk9YIFNZU1RFTVMgSU5DLgotMDA4MDdEICAgICAoYmFzZSAxNikJCUVRVUlOT1ggU1lTVEVNUyBJTkMuCi0JCQkJMTQyNjAgU1cgMTE5VEggQVZFTlVFCi0JCQkJTUlBTUkgRkwgMzMxODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTdFICAgKGhleCkJCVNPVVRIRVJOIFBBQ0lGSUMgTFRELgotMDA4MDdFICAgICAoYmFzZSAxNikJCVNPVVRIRVJOIFBBQ0lGSUMgTFRELgotCQkJCVNBTldBIEJMREcuLCAyLTE2LTIwCi0JCQkJTUlOQU1JU0FJV0FJIE5JU0hJIFlPS09IQU1BCi0JCQkJSkFQQU4gSkFQQU4gMjIwCi0JCQkJSkFQQU4KLQotMDAtODAtN0YgICAoaGV4KQkJRFktNCBJTkNPUlBPUkFURUQKLTAwODA3RiAgICAgKGJhc2UgMTYpCQlEWS00IElOQ09SUE9SQVRFRAotCQkJCTMzMyBQQUxMQURJVU0gRFJJVkUsIE1TIDMxMgotCQkJCUtBTkFUQSwgT05UQVJJTywgSzJWIDFBNgotCQkJCUNBTkFEQQotCQkJCUNBTkFEQQotCi0wMC04MC04MCAgIChoZXgpCQlEQVRBTUVESUEgQ09SUE9SQVRJT04KLTAwODA4MCAgICAgKGJhc2UgMTYpCQlEQVRBTUVESUEgQ09SUE9SQVRJT04KLQkJCQk3NDAxIENFTlRSQUwgSElHSFdBWQotCQkJCVBFTk5TQVVLRU4gTkogMDgxMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTgxICAgKGhleCkJCUtFTkRBTEwgU1FVQVJFIFJFU0VBUkNIIENPUlAuCi0wMDgwODEgICAgIChiYXNlIDE2KQkJS0VOREFMTCBTUVVBUkUgUkVTRUFSQ0ggQ09SUC4KLQkJCQkxNzAgVFJBQ0VSIExBTkUKLQkJCQlXQUxUSEFNIE1BIDAyMTU0LTEzNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTgyICAgKGhleCkJCVBFUCBNT0RVTEFSIENPTVBVVEVSUyBHTUJICi0wMDgwODIgICAgIChiYXNlIDE2KQkJUEVQIE1PRFVMQVIgQ09NUFVURVJTIEdNQkgKLQkJCQlBUEZFTFNUUkFOR0VSIFNUUi4gMTYKLQkJCQlEIC0gODk1MCBLQVVGQkVVUkVOCi0JCQkJV0VTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC04MC04MyAgIChoZXgpCQlBTURBSEwKLTAwODA4MyAgICAgKGJhc2UgMTYpCQlBTURBSEwKLQkJCQkxMjUwIEVBU1QgQVJRVUVTIEFWRU5VRQotCQkJCU0vUyAyODYgUC5PLiBCT1ggMzQ3MAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OC0zNDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC04NCAgIChoZXgpCQlUSEUgQ0xPVUQgSU5DLgotMDA4MDg0ICAgICAoYmFzZSAxNikJCVRIRSBDTE9VRCBJTkMuCi0JCQkJQ0xPVUQgQkxERy4KLQkJCQk3MS0xLCBDSEVPTkctREFNIERPTkcgS0FORy1OQU0gS1UsIFNFT1VMCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtODAtODUgICAoaGV4KQkJSC1USFJFRSBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDgwODUgICAgIChiYXNlIDE2KQkJSC1USFJFRSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMTAwIFBBUksgRFJJVkUsIFNVSVRFIDIwNAotCQkJCVJFU0VBUkNIIFRSSUFOR0xFIFBBUksKLQkJCQlOQyAyNzcwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtODYgICAoaGV4KQkJQ09NUFVURVIgR0VORVJBVElPTiBJTkMuCi0wMDgwODYgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgR0VORVJBVElPTiBJTkMuCi0JCQkJMzg1NSBQUkVTSURFTlRJQUwgUEFSS1dBWQotCQkJCUFUTEFOVEEgR0EgMzAzNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTg3ICAgKGhleCkJCU9LSSBFTEVDVFJJQyBJTkRVU1RSWSBDTy4sIExURAotMDA4MDg3ICAgICAoYmFzZSAxNikJCU9LSSBFTEVDVFJJQyBJTkRVU1RSWSBDTy4sIExURAotCQkJCTEwLTMgU0hJQkFVUkEgNC1DSE9NRQotCQkJCU1JTkFUTy1LVSwgVE9LWU8gMTA4Ci0JCQkJSkFQQU4KLQotMDAtODAtODggICAoaGV4KQkJVklDVE9SIENPTVBBTlkgT0YgSkFQQU4sIExURC4KLTAwODA4OCAgICAgKGJhc2UgMTYpCQlWSUNUT1IgQ09NUEFOWSBPRiBKQVBBTiwgTFRELgotCQkJCTU4LTcgU0hJTk1FSS1DSE8sIFlPS09TVUtBCi0JCQkJS0FOQUdBV0EgICAyMzkKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLTg5ICAgKGhleCkJCVRFQ05FVElDUyAoUFRZKSBMVEQuCi0wMDgwODkgICAgIChiYXNlIDE2KQkJVEVDTkVUSUNTIChQVFkpIExURC4KLQkJCQlQLk8uIEJPWC9QT1NCVVMgNTY0MTIKLQkJCQlQSU5FR09XUklFLCAyMTIzCi0JCQkJU09VVEggQUZSSUNBCi0JCQkJU09VVEggQUZSSUNBCi0KLTAwLTgwLThBICAgKGhleCkJCVNVTU1JVCBNSUNST1NZU1RFTVMgQ09SUC4KLTAwODA4QSAgICAgKGJhc2UgMTYpCQlTVU1NSVQgTUlDUk9TWVNURU1TIENPUlAuCi0JCQkJNzEwIExBS0VXQVktU1RFLiMxNTAKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC04QiAgIChoZXgpCQlEQUNPTEwgTElNSVRFRAotMDA4MDhCICAgICAoYmFzZSAxNikJCURBQ09MTCBMSU1JVEVECi0JCQkJREFDT0xMIEhPVVNFLCBHQVJETkVSUyBMQU5FCi0JCQkJQkFUSEdBVEUgV0VTVCBMT1RISUFOCi0JCQkJU0NPVExBTkQgRUg0OCAxVFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC04QyAgIChoZXgpCQlOZXRTY291dCBTeXN0ZW1zLCBJbmMuCi0wMDgwOEMgICAgIChiYXNlIDE2KQkJTmV0U2NvdXQgU3lzdGVtcywgSW5jLgotCQkJCTE1MDEgTUFJTiBTVFJFRVQKLQkJCQlTVUlURSAjNDAKLQkJCQlURVdLU0JVUlkgTUEgMDE4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLThEICAgKGhleCkJCVdFU1RDT0FTVCBURUNITk9MT0dZIEIuVi4KLTAwODA4RCAgICAgKGJhc2UgMTYpCQlXRVNUQ09BU1QgVEVDSE5PTE9HWSBCLlYuCi0JCQkJUC5PLiBCT1ggMzMxNwotCQkJCTI2MDEgREggREVMRlQKLQkJCQlORVRIRVJMQU5EUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLTgwLThFICAgKGhleCkJCVJBRFNUT05FIFRFQ0hOT0xPR1kKLTAwODA4RSAgICAgKGJhc2UgMTYpCQlSQURTVE9ORSBURUNITk9MT0dZCi0JCQkJV0FURVIgTEFORSwgVE9XQ0VTVEVSCi0JCQkJTk9SVEhBTlRTIE5OMTIgN0pOCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLThGICAgKGhleCkJCUMuIElUT0ggRUxFQ1RST05JQ1MsIElOQy4KLTAwODA4RiAgICAgKGJhc2UgMTYpCQlDLiBJVE9IIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJMjUwNSBNQ0NBQkUgV0FZCi0JCQkJSVJWSU5FIENBIDkyNzE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC05MCAgIChoZXgpCQlNSUNST1RFSyBJTlRFUk5BVElPTkFMLCBJTkMuCi0wMDgwOTAgICAgIChiYXNlIDE2KQkJTUlDUk9URUsgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTMzMDAgTlcgMjExVEggVEVSUkFDRQotCQkJCUhJTExTQk9SIE9SIDk3MTI0LTcxMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLTkxICAgKGhleCkJCVRPS1lPIEVMRUNUUklDIENPLixMVEQKLTAwODA5MSAgICAgKGJhc2UgMTYpCQlUT0tZTyBFTEVDVFJJQyBDTy4sTFRECi0JCQkJMTAtMTQgVUNISUtBTkRBCi0JCQkJMS1DSE9NRSBDSElZT0RBLUtVCi0JCQkJVE9LWU8gSkFQQU4gMTAxCi0JCQkJSkFQQU4KLQotMDAtODAtOTIgICAoaGV4KQkJU2lsZXggVGVjaG5vbG9neSwgSW5jLgotMDA4MDkyICAgICAoYmFzZSAxNikJCVNpbGV4IFRlY2hub2xvZ3ksIEluYy4KLQkJCQkyLTMtMSBIaWthcmlkYWksCi0JCQkJU2Vpa2EtY2hvCi0JCQkJS3lvdG8gIDYxOS0wMjM3Ci0JCQkJSkFQQU4KLQotMDAtODAtOTMgICAoaGV4KQkJWFlST04gQ09SUE9SQVRJT04KLTAwODA5MyAgICAgKGJhc2UgMTYpCQlYWVJPTiBDT1JQT1JBVElPTgotCQkJCTc4NjQgTElMWSBDT1VSVAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtOTQgICAoaGV4KQkJQUxGQSBMQVZBTCBBVVRPTUFUSU9OIEFCCi0wMDgwOTQgICAgIChiYXNlIDE2KQkJQUxGQSBMQVZBTCBBVVRPTUFUSU9OIEFCCi0JCQkJQUROCi0JCQkJUy0yMDUgMjIgTUFMTU8KLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtODAtOTUgICAoaGV4KQkJQkFTSUMgTUVSVE9OIEhBTkRFTFNHRVMuTS5CLkguCi0wMDgwOTUgICAgIChiYXNlIDE2KQkJQkFTSUMgTUVSVE9OIEhBTkRFTFNHRVMuTS5CLkguCi0JCQkJRFVSQ0hMQVNTLVNUUkFTU0UgNDIKLQkJCQlBIC0gOTAyMCBLTEFHRU5GVVJUCi0JCQkJQVVTVFJJQQotCQkJCUFVU1RSSUEKLQotMDAtODAtOTYgICAoaGV4KQkJSFVNQU4gREVTSUdORUQgU1lTVEVNUywgSU5DLgotMDA4MDk2ICAgICAoYmFzZSAxNikJCUhVTUFOIERFU0lHTkVEIFNZU1RFTVMsIElOQy4KLQkJCQk0MjEgRkVIRUxFWSBEUklWRQotCQkJCUtJTkcgT0YgUFJVU1NJQSBQQSAxOTQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtOTcgICAoaGV4KQkJQ0VOVFJBTFAgQVVUT01BVElTTUVTCi0wMDgwOTcgICAgIChiYXNlIDE2KQkJQ0VOVFJBTFAgQVVUT01BVElTTUVTCi0JCQkJMjEsIFJVRSBNQVJDRUwgUEFHTk9MIDY5Njk0Ci0JCQkJVkVOSVNTSUVVWCBDRURFWAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC04MC05OCAgIChoZXgpCQlUREsgQ09SUE9SQVRJT04KLTAwODA5OCAgICAgKGJhc2UgMTYpCQlUREsgQ09SUE9SQVRJT04KLQkJCQlDT1JQLiBSJkQgREVQVC4gVEVDSC4gSERRVEVSUy4KLQkJCQkyLTE1LTcsIEhJR0FTSEktT1dBREEsIElDSElLQVdBLVNISQotCQkJCUNISUJBLUtFTiAyNzIsIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtOTkgICAoaGV4KQkJRWF0b24gSW5kdXN0cmllcyBHbWJICi0wMDgwOTkgICAgIChiYXNlIDE2KQkJRWF0b24gSW5kdXN0cmllcyBHbWJICi0JCQkJSGVpbi1Nb2VsbGVyIC0gU3RyYWJlIDctMTEKLQkJCQk1MzExNSBCb25uCi0JCQkJR0VSTUFOWQotCi0wMC04MC05QSAgIChoZXgpCQlOT1ZVUyBORVRXT1JLUyBMVEQKLTAwODA5QSAgICAgKGJhc2UgMTYpCQlOT1ZVUyBORVRXT1JLUyBMVEQKLQkJCQlKT0hOIFNDT1RUIEhPVVNFCi0JCQkJTUFSS0VUIFNUUkVFVCBCUkFDS05FTEwsIEJFUktXICBSRzEyIDFKQgotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC05QiAgIChoZXgpCQlKVVNUU1lTVEVNIENPUlBPUkFUSU9OCi0wMDgwOUIgICAgIChiYXNlIDE2KQkJSlVTVFNZU1RFTSBDT1JQT1JBVElPTgotCQkJCTMtNDYgT0tJTk9IQU1BSElHQVNISQotCQkJCVRPS1VTSU1BU0hJIDc3MAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtOUMgICAoaGV4KQkJTFVYQ09NLCBJTkMuCi0wMDgwOUMgICAgIChiYXNlIDE2KQkJTFVYQ09NLCBJTkMuCi0JCQkJMzI0OSBMQVVSRUxWSUVXIENPVVJUCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtOUQgICAoaGV4KQkJQ29tbXNjcmFmdCBMdGQuCi0wMDgwOUQgICAgIChiYXNlIDE2KQkJQ29tbXNjcmFmdCBMdGQuCi0JCQkJUE8gQk9YIDE2MAotCQkJCUJFTlRMRVksIFcuQS4gNjEwMgotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC04MC05RSAgIChoZXgpCQlEQVRVUyBHTUJICi0wMDgwOUUgICAgIChiYXNlIDE2KQkJREFUVVMgR01CSAotCQkJCUlORFVTVFJJRVNUUi4gMgotCQkJCUQtNTEwMiBXVVJTRUxFTi9BQUNIRU4KLQkJCQlXRVNUIEdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLTgwLTlGICAgKGhleCkJCUFMQ0FURUwgQlVTSU5FU1MgU1lTVEVNUwotMDA4MDlGICAgICAoYmFzZSAxNikJCUFMQ0FURUwgQlVTSU5FU1MgU1lTVEVNUwotCQkJCTU0LCBBVkVOVUUgSkVBTiBKQVVSRVMKLQkJCQk5MjcwNyBDT0xPTUJFUyBDRURFWAotCQkJCUZSQU5DRQotCi0wMC04MC1BMCAgIChoZXgpCQlFRElTQSBIRVdMRVRUIFBBQ0tBUkQgUy9BCi0wMDgwQTAgICAgIChiYXNlIDE2KQkJRURJU0EgSEVXTEVUVCBQQUNLQVJEIFMvQQotCQkJCUFMQU1FREEgUklPIE5FR1JPLAotCQkJCTc1MC1BTFBIQVZJTExFIDA2NDU0LTAwMCAgQkFSVUVSSSBTUAotCQkJCUJSQVpJTAotCQkJCUJSQVpJTAotCi0wMC04MC1BMSAgIChoZXgpCQlNSUNST1RFU1QsIElOQy4KLTAwODBBMSAgICAgKGJhc2UgMTYpCQlNSUNST1RFU1QsIElOQy4KLQkJCQk0NzQ3IE4uIDIyTkQgU1RSRUVUCi0JCQkJUEhPRU5JWCBBWiA4NTAxNi00NzA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BMiAgIChoZXgpCQlUYXR0aWxlIFNSTCAKLTAwODBBMiAgICAgKGJhc2UgMTYpCQlUYXR0aWxlIFNSTCAKLQkJCQk3MCBST1VURSBEVSBQT05UIC0gQlVUSU4KLQkJCQlDSC0xMjEzIFBFVElULUxBTkNZIEdFTkVWQQotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtODAtQTMgICAoaGV4KQkJTGFudHJvbml4Ci0wMDgwQTMgICAgIChiYXNlIDE2KQkJTGFudHJvbml4Ci0JCQkJMTUzNTMgQmFycmFuY2EgUGFya3dheQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQTQgICAoaGV4KQkJTElCRVJUWSBFTEVDVFJPTklDUwotMDA4MEE0ICAgICAoYmFzZSAxNikJCUxJQkVSVFkgRUxFQ1RST05JQ1MKLQkJCQkzMzIgSEFSQk9SIFdBWQotCQkJCVNPVVRIIFNBTiBGUkFOQ0lTQ08gQ0EgOTQwODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUE1ICAgKGhleCkJCVNQRUVEIElOVEVSTkFUSU9OQUwKLTAwODBBNSAgICAgKGJhc2UgMTYpCQlTUEVFRCBJTlRFUk5BVElPTkFMCi0JCQkJMTMyMCBBUkJPTElUQSBEUi4KLQkJCQlMQSBIQUJSQSBDQSA5MDYzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQTYgICAoaGV4KQkJUkVQVUJMSUMgVEVDSE5PTE9HWSwgSU5DLgotMDA4MEE2ICAgICAoYmFzZSAxNikJCVJFUFVCTElDIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQlQLk8uIEJPWCAxNDEwMDYKLQkJCQlBVVNUSU4gVFggNzg3MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUE3ICAgKGhleCkJCUhvbmV5d2VsbCBJbnRlcm5hdGlvbmFsIEluYwotMDA4MEE3ICAgICAoYmFzZSAxNikJCUhvbmV5d2VsbCBJbnRlcm5hdGlvbmFsIEluYwotCQkJCVZhbmNvdXZlciBDZW50ZXIgb2YgRXhjZWxsZW5jZSAKLQkJCQk1MDAgQnJvb2tzYmFuayBBdmVudWUgCi0JCQkJTm9ydGggVmFuY291dmVyICBWN0ogM1M0IAotCQkJCUNBTkFEQQotCi0wMC04MC1BOCAgIChoZXgpCQlWSVRBQ09NIENPUlBPUkFUSU9OCi0wMDgwQTggICAgIChiYXNlIDE2KQkJVklUQUNPTSBDT1JQT1JBVElPTgotCQkJCTEzMzAgQ0hBUkxFU1RPTiBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQTkgICAoaGV4KQkJQ0xFQVJQT0lOVCBSRVNFQVJDSAotMDA4MEE5ICAgICAoYmFzZSAxNikJCUNMRUFSUE9JTlQgUkVTRUFSQ0gKLQkJCQkxOTAgTk9SVEggTUFJTiBTVFJFRVQKLQkJCQlOQVRJQ0sgTUEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUFBICAgKGhleCkJCU1BWFBFRUQKLTAwODBBQSAgICAgKGJhc2UgMTYpCQlNQVhQRUVECi0JCQkJMTEyMCBDSEVTUyBEUklWRQotCQkJCUZPU1RFUiBDSVRZIENBIDk0NDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BQiAgIChoZXgpCQlEVUtBTkUgTkVUV09SSyBJTlRFR1JBVElPTgotMDA4MEFCICAgICAoYmFzZSAxNikJCURVS0FORSBORVRXT1JLIElOVEVHUkFUSU9OCi0JCQkJMjkwMCBEVUtBTkUgRFJJVkUKLQkJCQlTVC4gQ0hBUkxFUyBJTCA2MDE3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQUMgICAoaGV4KQkJSU1MT0dJWCwgRElWSVNJT04gT0YgR0VORVNZUwotMDA4MEFDICAgICAoYmFzZSAxNikJCUlNTE9HSVgsIERJVklTSU9OIE9GIEdFTkVTWVMKLQkJCQkxOTAwIFNVTU1JVCBUT1dFUiBCTFZELlNURSM3NzAKLQkJCQlPUkxBTkRPIEZMIDMyODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1BRCAgIChoZXgpCQlDTkVUIFRFQ0hOT0xPR1ksIElOQy4KLTAwODBBRCAgICAgKGJhc2UgMTYpCQlDTkVUIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkyMTk5IFpBTktFUiBST0FECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUFFICAgKGhleCkJCUhVR0hFUyBORVRXT1JLIFNZU1RFTVMKLTAwODBBRSAgICAgKGJhc2UgMTYpCQlIVUdIRVMgTkVUV09SSyBTWVNURU1TCi0JCQkJMTE3MTcgRVhQTE9SQVRJT04gTEFORQotCQkJCUdFUk1BTlRPV04gTUQgMjA4NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUFGICAgKGhleCkJCUFMTFVNRVIgQ08uLCBMVEQuCi0wMDgwQUYgICAgIChiYXNlIDE2KQkJQUxMVU1FUiBDTy4sIExURC4KLQkJCQkyLTgtOCBDSFVPLUNITywgTUVHVVJPLUtVCi0JCQkJVE9LWU8gMTUyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1CMCAgIChoZXgpCQlBRFZBTkNFRCBJTkZPUk1BVElPTgotMDA4MEIwICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIElORk9STUFUSU9OCi0JCQkJVEVDSE5PTE9HWSwgSU5DLgotCQkJCTVGIDEtMi02IE5JSE9OQkFTSEktSE9OQ0hPIENIVU8tS1UsICBUT0sKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUIxICAgKGhleCkJCVNPRlRDT00gQS9TCi0wMDgwQjEgICAgIChiYXNlIDE2KQkJU09GVENPTSBBL1MKLQkJCQlTVFVESUVTVFJBRURFIDIxCi0JCQkJREsgMTQ1NSBDT1BFTk5IQUdFTiBLLgotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLTgwLUIyICAgKGhleCkJCU5FVFdPUksgRVFVSVBNRU5UIFRFQ0hOT0xPR0lFUwotMDA4MEIyICAgICAoYmFzZSAxNikJCU5FVFdPUksgRVFVSVBNRU5UIFRFQ0hOT0xPR0lFUwotCQkJCTY5MDAgUEFTRU8gUEFEUkUgUEFSS1dBWQotCQkJCUZSRU1PTlQgQ0EgOTQ1NTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUIzICAgKGhleCkJCUFWQUwgREFUQSBDT1JQT1JBVElPTgotMDA4MEIzICAgICAoYmFzZSAxNikJCUFWQUwgREFUQSBDT1JQT1JBVElPTgotCQkJCU1BQ0hJREEgRU5HSU5FRVJJTkcgQ0VOVEVSCi0JCQkJMTc1Ny0xIEtBTkFJLUNITyBNQUNISURBIENJVFkgVE9LWU8gSkFQQQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtQjQgICAoaGV4KQkJU09QSElBIFNZU1RFTVMKLTAwODBCNCAgICAgKGJhc2UgMTYpCQlTT1BISUEgU1lTVEVNUwotCQkJCTMzMzcgS0lGRVIgUk9BRAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1CNSAgIChoZXgpCQlVTklURUQgTkVUV09SS1MgSU5DLgotMDA4MEI1ICAgICAoYmFzZSAxNikJCVVOSVRFRCBORVRXT1JLUyBJTkMuCi0JCQkJMjE3OCBQQVJBR09OIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUI2ICAgKGhleCkJCVRIRU1JUyBDT01QVVRFUgotMDA4MEI2ICAgICAoYmFzZSAxNikJCVRIRU1JUyBDT01QVVRFUgotCQkJCTY2ODEgT1dFTlMgRFJJVkUKLQkJCQlQTEVBU09OVE9OIENBIDk0NTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1CNyAgIChoZXgpCQlTVEVMTEFSIENPTVBVVEVSCi0wMDgwQjcgICAgIChiYXNlIDE2KQkJU1RFTExBUiBDT01QVVRFUgotCQkJCTk1IFdFTExTIEFWRU5VRQotCQkJCU5FV1RPTiBNQSAwMjE1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQjggICAoaGV4KQkJQlVHLCBJTkNPUlBPUkFURUQKLTAwODBCOCAgICAgKGJhc2UgMTYpCQlCVUcsIElOQ09SUE9SQVRFRAotCQkJCTEtMTQgVEVDSE5PLVBBUksgIDEtQ0hPTUUKLQkJCQlTSElNT05PUFBPUk8sIEFUU1VCRVRTVS1LVSBTQVBQT1JPIDAwNCwKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUI5ICAgKGhleCkJCUFSQ0hFIFRFQ0hOT0xJR0lFUyBJTkMuCi0wMDgwQjkgICAgIChiYXNlIDE2KQkJQVJDSEUgVEVDSE5PTElHSUVTIElOQy4KLQkJCQk0ODUwMiBLQVRPIFJPQUQKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUyBNSU5PUiBPVVRMWUlORyBJU0xBTgotCi0wMC04MC1CQSAgIChoZXgpCQlTUEVDSUFMSVggKEFTSUEpIFBURSwgTFRECi0wMDgwQkEgICAgIChiYXNlIDE2KQkJU1BFQ0lBTElYIChBU0lBKSBQVEUsIExURAotCQkJCTMgV0lOVEVSU0VMTFMgUk9BRAotCQkJCUJZRkxFRVQgU1VSUkVZICBLVDE0N0xGCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC1CQiAgIChoZXgpCQlIVUdIRVMgTEFOIFNZU1RFTVMKLTAwODBCQiAgICAgKGJhc2UgMTYpCQlIVUdIRVMgTEFOIFNZU1RFTVMKLQkJCQkxMjI1IENIQVJMRVNUT04gUk9BRAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUJDICAgKGhleCkJCUhJVEFDSEkgRU5HSU5FRVJJTkcgQ08uLCBMVEQKLTAwODBCQyAgICAgKGJhc2UgMTYpCQlISVRBQ0hJIEVOR0lORUVSSU5HIENPLiwgTFRECi0JCQkJNC04LTI2LCBPTUlLQUNITwotCQkJCUhJVEFDSEkgQ0lUWSBJQkFSQUtJIFBSRUZFQ1RVUkUgMzE5LTEyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1CRCAgIChoZXgpCQlUSEUgRlVSVUtBV0EgRUxFQ1RSSUMgQ08uLCBMVEQKLTAwODBCRCAgICAgKGJhc2UgMTYpCQlUSEUgRlVSVUtBV0EgRUxFQ1RSSUMgQ08uLCBMVEQKLQkJCQk2LTEsIE1BUlVOT1VDSEkgMi1DSE9NRQotCQkJCUNISVlPREEtS1UsIFRPS1lPCi0JCQkJMTAwIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtODAtQkUgICAoaGV4KQkJQVJJRVMgUkVTRUFSQ0gKLTAwODBCRSAgICAgKGJhc2UgMTYpCQlBUklFUyBSRVNFQVJDSAotCQkJCTQ2NzkxIEZSRU1PTkQgQkxWRC4KLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1CRiAgIChoZXgpCQlUQUtBT0tBIEVMRUNUUklDIE1GRy4gQ08uIExURC4KLTAwODBCRiAgICAgKGJhc2UgMTYpCQlUQUtBT0tBIEVMRUNUUklDIE1GRy4gQ08uIExURC4KLQkJCQlLQU5EQSBCUkFOQ0ggT0ZGSUNFIFRPTkVOCi0JCQkJMi0xLTExLCBTQVJVR0FLVS1DSE8gQ0hJWU9EQS1LVSwgVE9LWU8sCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1DMCAgIChoZXgpCQlQRU5SSUwgREFUQUNPTU0KLTAwODBDMCAgICAgKGJhc2UgMTYpCQlQRU5SSUwgREFUQUNPTU0KLQkJCQkxMzAwIFFVSU5DRSBPUkNIQVJEIEJMVkQuCi0JCQkJR0FJVEhFUlNCVVJHIE1EIDIwODc4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DMSAgIChoZXgpCQlMQU5FWCBDT1JQT1JBVElPTgotMDA4MEMxICAgICAoYmFzZSAxNikJCUxBTkVYIENPUlBPUkFUSU9OCi0JCQkJMTA3MjcgVFVDS0VSIFNUUkVFVAotCQkJCUJFTFRTVklMTEUgTUQgMjA3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUMyICAgKGhleCkJCUlFRUUgODAyLjEgQ09NTUlUVEVFCi0wMDgwQzIgICAgIChiYXNlIDE2KQkJSUVFRSA4MDIuMSBDT01NSVRURUUKLQkJCQk4MDIuMSBDaGFpciwgYy9vIElFRUUgU3RhbmRhcmRzIEFzc29jaWF0aW9uCi0JCQkJNDQ1IEhvZXMgTGFuZQotCQkJCVBpc2NhdGF3YXkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUMzICAgKGhleCkJCUJJQ0MgSU5GT1JNQVRJT04gU1lTVEVNUyAmIFNWQwotMDA4MEMzICAgICAoYmFzZSAxNikJCUJJQ0MgSU5GT1JNQVRJT04gU1lTVEVNUyAmIFNWQwotCQkJCTUwMCBDQVBBQklMSVRZIEdSRUVOLCBMVVRPTgotCQkJCUJFREZPUkRTSElSRQotCQkJCUVOR0xBTkQgTFUxIDNMVAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLUM0ICAgKGhleCkJCURPQ1VNRU5UIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA4MEM0ICAgICAoYmFzZSAxNikJCURPQ1VNRU5UIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTEzMDAgQ0hBUkxFU1RPTiBST0FECi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQzUgICAoaGV4KQkJTk9WRUxMQ08gREUgTUVYSUNPCi0wMDgwQzUgICAgIChiYXNlIDE2KQkJTk9WRUxMQ08gREUgTUVYSUNPCi0JCQkJQ09OU1RJVFVZRU5URVMgTk8uIDkwNwotCQkJCUNPTC4gTE9NQVMgQUxUQVMKLQkJCQkxMTk1MCBNRVhJQ08gMTE5NTAgTUVYSUNPIEQuRi4KLQkJCQlNRVhJQ08KLQotMDAtODAtQzYgICAoaGV4KQkJTkFUSU9OQUwgREFUQUNPTU0gQ09SUE9SQVRJT04KLTAwODBDNiAgICAgKGJhc2UgMTYpCQlOQVRJT05BTCBEQVRBQ09NTSBDT1JQT1JBVElPTgotCQkJCTJGLCAyOCwgSU5EVVNUUlkgRUFTVCA5VEggUkQuCi0JCQkJU0NJRU5DRSBQQVJLLCBIU0lOLUNIVQotCQkJCVRBSVdBTiAgMzAwNzcgVEFJV0FOICAzMDA3NyBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTgwLUM3ICAgKGhleCkJCVhJUkNPTQotMDA4MEM3ICAgICAoYmFzZSAxNikJCVhJUkNPTQotCQkJCTI2MDI1IE1VUkVBVSBST0FECi0JCQkJQ0FMQUJBU0FTIENBIDkxMzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DOCAgIChoZXgpCQlELUxJTksgU1lTVEVNUywgSU5DLgotMDA4MEM4ICAgICAoYmFzZSAxNikJCUQtTElOSyBTWVNURU1TLCBJTkMuCi0JCQkJNTMgRGlzY292ZXIgRHIuCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DOSAgIChoZXgpCQlBTEJFUlRBIE1JQ1JPRUxFQ1RST05JQyBDRU5UUkUKLTAwODBDOSAgICAgKGJhc2UgMTYpCQlBTEJFUlRBIE1JQ1JPRUxFQ1RST05JQyBDRU5UUkUKLQkJCQkzMTgsIDExMzE1IC0gODcgQVZFTlVFCi0JCQkJRURNT05UT04sIEFCIFQ2RyAyQzIKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtODAtQ0EgICAoaGV4KQkJTkVUQ09NIFJFU0VBUkNIIElOQ09SUE9SQVRFRAotMDA4MENBICAgICAoYmFzZSAxNikJCU5FVENPTSBSRVNFQVJDSCBJTkNPUlBPUkFURUQKLQkJCQkyMDEgVEVDSE5PTE9HWSBEUklWRQotCQkJCUlSVklORSBDQSA5MjcxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQ0IgICAoaGV4KQkJRkFMQ08gREFUQSBQUk9EVUNUUwotMDA4MENCICAgICAoYmFzZSAxNikJCUZBTENPIERBVEEgUFJPRFVDVFMKLQkJCQk0NDAgUE9UUkVSTyBBVkVOVUUKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYtNDE5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtQ0MgICAoaGV4KQkJTUlDUk9XQVZFIEJZUEFTUyBTWVNURU1TCi0wMDgwQ0MgICAgIChiYXNlIDE2KQkJTUlDUk9XQVZFIEJZUEFTUyBTWVNURU1TCi0JCQkJMjUgQlJBSU5UUkVFIEhJTEwgT0ZGSUNFIFBBUksKLQkJCQlCUkFJTlRSRUUgTUEgMDIxODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUNEICAgKGhleCkJCU1JQ1JPTklDUyBDT01QVVRFUiwgSU5DLgotMDA4MENEICAgICAoYmFzZSAxNikJCU1JQ1JPTklDUyBDT01QVVRFUiwgSU5DLgotCQkJCTQ1MzY1IE5PUlRIUE9SVCBMT09QIFdFU1QKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1DRSAgIChoZXgpCQlCUk9BRENBU1QgVEVMRVZJU0lPTiBTWVNURU1TCi0wMDgwQ0UgICAgIChiYXNlIDE2KQkJQlJPQURDQVNUIFRFTEVWSVNJT04gU1lTVEVNUwotCQkJCVAuTy4gQk9YIDMwODE2Ci0JCQkJU0FMVCBMQUtFIENJVFksIFVUQUgKLQkJCQlVdGFoIDg0MTMwLTA4MTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUNGICAgKGhleCkJCUVNQkVEREVEIFBFUkZPUk1BTkNFIElOQy4KLTAwODBDRiAgICAgKGJhc2UgMTYpCQlFTUJFRERFRCBQRVJGT1JNQU5DRSBJTkMuCi0JCQkJMzM4NSBTQ09UVCBCTFZELgotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0LTMxMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUQwICAgKGhleCkJCUNPTVBVVEVSIFBFUklQSEVSQUxTLCBJTkMuCi0wMDgwRDAgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgUEVSSVBIRVJBTFMsIElOQy4KLQkJCQk2NjcgUkFOQ0hPIENPTkVKTyBCTFZELgotCQkJCU5FV0JVUlkgUEFSSyBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRDEgICAoaGV4KQkJS0lNVFJPTiBDT1JQT1JBVElPTgotMDA4MEQxICAgICAoYmFzZSAxNikJCUtJTVRST04gQ09SUE9SQVRJT04KLQkJCQkxNzA5IEpVTkNUSU9OIENPVVJUCi0JCQkJQlVJTERJTkcgMzgwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUQyICAgKGhleCkJCVNISU5OSUhPTkRFTktPIENPLiwgTFRELgotMDA4MEQyICAgICAoYmFzZSAxNikJCVNISU5OSUhPTkRFTktPIENPLiwgTFRELgotCQkJCTYtOCBOSVNISVRFTk1BIDIgQ0hPTUUKLQkJCQlLSVRBLUtVLCBPU0FLQSA1MzAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUQzICAgKGhleCkJCVNISVZBIENPUlAuCi0wMDgwRDMgICAgIChiYXNlIDE2KQkJU0hJVkEgQ09SUC4KLQkJCQkyMDUgQlVSTElOR1RPTiBST0FECi0JCQkJQkVERk9SRCBNQSAwMTczMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRDQgICAoaGV4KQkJQ0hBU0UgUkVTRUFSQ0ggTFRELgotMDA4MEQ0ICAgICAoYmFzZSAxNikJCUNIQVNFIFJFU0VBUkNIIExURC4KLQkJCQk3IENISU5FSEFNIEJVU0lORVNTIFBBUksKLQkJCQlCQVNJTkdTVE9LRSwgUkcgMjQgT1dECi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLUQ1ICAgKGhleCkJCUNBRFJFIFRFQ0hOT0xPR0lFUwotMDA4MEQ1ICAgICAoYmFzZSAxNikJCUNBRFJFIFRFQ0hOT0xPR0lFUwotCQkJCTE5NTQ1IE5XIFZPTiBORVVNQU5OIERSSVZFCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1ENiAgIChoZXgpCQlOVVZPVEVDSCwgSU5DLgotMDA4MEQ2ICAgICAoYmFzZSAxNikJCU5VVk9URUNILCBJTkMuCi0JCQkJMjAxNSBCUklER0VXQVksIFNVSVRFIDIwNAotCQkJCVNBVVNBTElUTyBDQSA5NDk2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRDcgICAoaGV4KQkJRmFudHVtIEVuZ2luZWVyaW5nCi0wMDgwRDcgICAgIChiYXNlIDE2KQkJRmFudHVtIEVuZ2luZWVyaW5nCi0JCQkJCi0JCQkJUC5PLiBCb3ggMTUwOQotCQkJCVJvY2t3YWxsIFRYIDc1MDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1EOCAgIChoZXgpCQlORVRXT1JLIFBFUklQSEVSQUxTIElOQy4KLTAwODBEOCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFBFUklQSEVSQUxTIElOQy4KLQkJCQkyODkwIFpPTktFUiBST0FEIFNVSVRFIDIwOQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1EOSAgIChoZXgpCQlFTUsgRWxla3Ryb25payBHbWJIICYgQ28uIEtHCi0wMDgwRDkgICAgIChiYXNlIDE2KQkJRU1LIEVsZWt0cm9uaWsgR21iSCAmIENvLiBLRwotCQkJCU9iZXJlIEJlcmdzdHJhc3NlIDE2Ci0JCQkJNzUzMzUgRG9iZWwgCi0JCQkJR0VSTUFOWQotCi0wMC04MC1EQSAgIChoZXgpCQlCcnVlbCAmIEtqYWVyIFNvdW5kICYgVmlicmF0aW9uIE1lYXN1cmVtZW50IEEvUwotMDA4MERBICAgICAoYmFzZSAxNikJCUJydWVsICYgS2phZXIgU291bmQgJiBWaWJyYXRpb24gTWVhc3VyZW1lbnQgQS9TCi0JCQkJU2tvZHNib3JndmVqIDMwNyAKLQkJCQlESy0yODUwIE5BRVJVTQotCQkJCURFTk1BUksKLQotMDAtODAtREIgICAoaGV4KQkJR1JBUEhPTiBDT1JQT1JBVElPTgotMDA4MERCICAgICAoYmFzZSAxNikJCUdSQVBIT04gQ09SUE9SQVRJT04KLQkJCQkxNTA2IERFTEwgQVZFIC0gIwotCQkJCUNBTVBCRUxMIENBIDk1MDA4LTY5MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLURDICAgKGhleCkJCVBJQ0tFUiBJTlRFUk5BVElPTkFMCi0wMDgwREMgICAgIChiYXNlIDE2KQkJUElDS0VSIElOVEVSTkFUSU9OQUwKLQkJCQk1OTUgTUlORVIgUk9BRAotCQkJCUNMRVZFTEFORCBPSCA0NDE0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtREQgICAoaGV4KQkJR01YIElOQy9HSU1JWAotMDA4MEREICAgICAoYmFzZSAxNikJCUdNWCBJTkMvR0lNSVgKLQkJCQkzMjIzIEFSTk9MRCBMQU5FCi0JCQkJTk9SVEhCUk9PSyBJTCA2MDA2Mi0yNDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1ERSAgIChoZXgpCQlHSVBTSSBTLkEuCi0wMDgwREUgICAgIChiYXNlIDE2KQkJR0lQU0kgUy5BLgotCQkJCTIsQkQgVkFVQkFOIC0gQi5QLiAyNjgKLQkJCQk3ODA1MyBTVC4gUVVFTlRJTiBFTiBZVkVMSU5FUyBDRURFWAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC04MC1ERiAgIChoZXgpCQlBREMgQ09ERU5PTEwgVEVDSE5PTE9HWSBDT1JQLgotMDA4MERGICAgICAoYmFzZSAxNikJCUFEQyBDT0RFTk9MTCBURUNITk9MT0dZIENPUlAuCi0JCQkJMjAwIENPUlBPUkFURSBCTFZELiBTTy4KLQkJCQlZT05LRVJTIE5ZIDEwNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1FMCAgIChoZXgpCQlYVFAgU1lTVEVNUywgSU5DLgotMDA4MEUwICAgICAoYmFzZSAxNikJCVhUUCBTWVNURU1TLCBJTkMuCi0JCQkJMTkwMCBTVEFURSBTVFJFRVQgLCBTVEUKLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1FMSAgIChoZXgpCQlTVE1JQ1JPRUxFQ1RST05JQ1MKLTAwODBFMSAgICAgKGJhc2UgMTYpCQlTVE1JQ1JPRUxFQ1RST05JQ1MKLQkJCQkxMDAwIEFaVEVDIFdFU1QKLQkJCQlBTE1PTkRTQlVSWSBCUklTVE9MIEJTMzIgNFNRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtRTIgICAoaGV4KQkJVC5ELkkuIENPLiwgTFRELgotMDA4MEUyICAgICAoYmFzZSAxNikJCVQuRC5JLiBDTy4sIExURC4KLQkJCQlERVZFTE9QTUVOVCBESVYuICAjMyBGVUpJIEJMREcKLQkJCQkxLTMtMTMgSVRBQ0hJQk9SSSBOSVNISS1LVSBPU0FLQSA1NTAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUUzICAgKGhleCkJCUNPUkFMIE5FVFdPUksgQ09SUE9SQVRJT04KLTAwODBFMyAgICAgKGJhc2UgMTYpCQlDT1JBTCBORVRXT1JLIENPUlBPUkFUSU9OCi0JCQkJKE5PVyBCQVkgTkVUV09SS1MpCi0JCQkJNDQwMSBHUkVBVCBBTUVSSUNBTiBQS1dZIE0vUzogU0MwMS0wNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyLTgxODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUU0ICAgKGhleCkJCU5PUlRIV0VTVCBESUdJVEFMIFNZU1RFTVMsIElOQwotMDA4MEU0ICAgICAoYmFzZSAxNikJCU5PUlRIV0VTVCBESUdJVEFMIFNZU1RFTVMsIElOQwotCQkJCVAuTy4gQk9YIDE1Mjg4Ci0JCQkJU0VBVFRMRSBXQSA5ODExNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRTUgICAoaGV4KQkJTFNJIExvZ2ljIENvcnBvcmF0aW9uCi0wMDgwRTUgICAgIChiYXNlIDE2KQkJTFNJIExvZ2ljIENvcnBvcmF0aW9uCi0JCQkJMzcxOCBOLiBSb2NrIFJvYWQKLQkJCQlXaWNoaXRhIEtTIDY3MjI2LTEzOTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUU2ICAgKGhleCkJCVBFRVIgTkVUV09SS1MsIElOQy4KLTAwODBFNiAgICAgKGJhc2UgMTYpCQlQRUVSIE5FVFdPUktTLCBJTkMuCi0JCQkJMzM1MCBTQ09UVCBCTFZELiBCTERHLiAxNAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1FNyAgIChoZXgpCQlMWU5XT09EIFNDSUVOVElGSUMgREVWLiBMVEQuCi0wMDgwRTcgICAgIChiYXNlIDE2KQkJTFlOV09PRCBTQ0lFTlRJRklDIERFVi4gTFRELgotCQkJCUZBUk5IQU0gVFJBRElORyBFU1RBVEUKLQkJCQlGQVJOSEFNLCBTVVJSRVksIEdVOSA5Tk4KLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTgwLUU4ICAgKGhleCkJCUNVTVVMVVMgQ09SUE9SQVRJSU9OCi0wMDgwRTggICAgIChiYXNlIDE2KQkJQ1VNVUxVUyBDT1JQT1JBVElJT04KLQkJCQkyMzUwMCBNRVJDQU5USUxFIFJPQUQKLQkJCQlDTEVWRUxBTkQgT0ggNDQxMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUU5ICAgKGhleCkJCU1hZGdlIEx0ZC4KLTAwODBFOSAgICAgKGJhc2UgMTYpCQlNYWRnZSBMdGQuCi0JCQkJTWFkZ2UgSG91c2UKLQkJCQlQcmlvcnMgV2F5Ci0JCQkJTWFpbmRlbmhlYWQgQmVya3NoaXJlIFNMNiAySFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC1FQSAgIChoZXgpCQlBRFZBIE9wdGljYWwgTmV0d29ya2luZyBMdGQuCi0wMDgwRUEgICAgIChiYXNlIDE2KQkJQURWQSBPcHRpY2FsIE5ldHdvcmtpbmcgTHRkLgotCQkJCU9uZSBUZWNobm9sb2d5IFBhcmt3YXkgU291dGgKLQkJCQlOb3Jjcm9zcyBHQSAzMDA5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRUIgICAoaGV4KQkJQ09NUENPTlRST0wgQi5WLgotMDA4MEVCICAgICAoYmFzZSAxNikJCUNPTVBDT05UUk9MIEIuVi4KLQkJCQlTVFJBVFVNU0VEIEszMQotCQkJCTU2MTEgTkIgRUlOREhPVkVOCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtODAtRUMgICAoaGV4KQkJU1VQRVJDT01QVVRJTkcgU09MVVRJT05TLCBJTkMuCi0wMDgwRUMgICAgIChiYXNlIDE2KQkJU1VQRVJDT01QVVRJTkcgU09MVVRJT05TLCBJTkMuCi0JCQkJNjE3NSBOQU5DWSBSSURHRSBCTFZELgotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRUQgICAoaGV4KQkJSVEgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDgwRUQgICAgIChiYXNlIDE2KQkJSVEgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTE4MTEgTkUgRklSU1QgU1RSRUVUCi0JCQkJU1VJVEUgMjAxCi0JCQkJQkVMTEVWVUUgV0EgOTgwMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUVFICAgKGhleCkJCVRIT01TT04gQ1NGCi0wMDgwRUUgICAgIChiYXNlIDE2KQkJVEhPTVNPTiBDU0YKLQkJCQk1MSBFU1BMQU5BREUgRFUgR0VORVJBTAotCQkJCURFIEdBVUxMRSA5MjA0NSAtIFBBUklTIExBICBERUZFTlNFIC0gQ0UKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtODAtRUYgICAoaGV4KQkJUkFUSU9OQUwKLTAwODBFRiAgICAgKGJhc2UgMTYpCQlSQVRJT05BTAotCQkJCTMzMjAgU0NPVFQgQk9VTEVWQVJECi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUYwICAgKGhleCkJCVBhbmFzb25pYyBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLTAwODBGMCAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCi0JCQkJNC0xLTYyIE1pbm9zaGltYSBIYWthdGEgRnVrdW9rYQotCQkJCTgxMi04NTMxCi0JCQkJSkFQQU4KLQotMDAtODAtRjEgICAoaGV4KQkJT1BVUyBTWVNURU1TCi0wMDgwRjEgICAgIChiYXNlIDE2KQkJT1BVUyBTWVNURU1TCi0JCQkJMzAwMCBDT1JPTkFETyBEUklWRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GMiAgIChoZXgpCQlSQVlDT00gU1lTVEVNUyBJTkMKLTAwODBGMiAgICAgKGJhc2UgMTYpCQlSQVlDT00gU1lTVEVNUyBJTkMKLQkJCQkxNjUyNSBTSEVSTUFOIFdBWSAjQy04Ci0JCQkJVkFOIE5VWVMgQ0EgOTE0MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUYzICAgKGhleCkJCVNVTiBFTEVDVFJPTklDUyBDT1JQLgotMDA4MEYzICAgICAoYmFzZSAxNikJCVNVTiBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTI1MCBBU0FISSBLT0NISU5PLUNITwotCQkJCUtPTkFOLUNJVFkgQUlDSEkKLQkJCQk0ODMgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC04MC1GNCAgIChoZXgpCQlURUxFTUVDQU5JUVVFIEVMRUNUUklRVUUKLTAwODBGNCAgICAgKGJhc2UgMTYpCQlURUxFTUVDQU5JUVVFIEVMRUNUUklRVUUKLQkJCQkzMyBCSVMgQVZFTlVFLAotCQkJCURVIE1BUkVDSEFMIEpPRkZSRSA5MjAwMiBOQU5URVJSRSBDRURFWAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC04MC1GNSAgIChoZXgpCQlRdWFudGVsIEx0ZAotMDA4MEY1ICAgICAoYmFzZSAxNikJCVF1YW50ZWwgTHRkCi0JCQkJVHVybnBpa2UgUm9hZAotCQkJCU5ld2J1cnkgQmVya3NoaXJlIFJHMTQgMk5YCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtODAtRjYgICAoaGV4KQkJU1lORVJHWSBNSUNST1NZU1RFTVMKLTAwODBGNiAgICAgKGJhc2UgMTYpCQlTWU5FUkdZIE1JQ1JPU1lTVEVNUwotCQkJCTk2MDUgU0NSQU5UT04gUk9BRC1TVEUgIzcwMAotCQkJCVNBTiBESUVHTyBDQSA5MjEyMS0xNzczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GNyAgIChoZXgpCQlaRU5JVEggRUxFQ1RST05JQ1MKLTAwODBGNyAgICAgKGJhc2UgMTYpCQlaRU5JVEggRUxFQ1RST05JQ1MKLQkJCQkxMDAwIE1JTFdBVUtFRSBBVkVOVUUKLQkJCQlHTEVOVklFVyBJTCA2MDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtODAtRjggICAoaGV4KQkJTUlaQVIsIElOQy4KLTAwODBGOCAgICAgKGJhc2UgMTYpCQlNSVpBUiwgSU5DLgotCQkJCTE0MTkgRFVOTiBEUklWRQotCQkJCUNBUlJPTExUT04gVFggNzUwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUY5ICAgKGhleCkJCUhFVVJJS09OIENPUlBPUkFUSU9OCi0wMDgwRjkgICAgIChiYXNlIDE2KQkJSEVVUklLT04gQ09SUE9SQVRJT04KLQkJCQk4MzEwIEVYQ0VMU0lPUiBEUklWRQotCQkJCU1BRElTT04gV0kgNTM3MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUZBICAgKGhleCkJCVJXVCBHTUJICi0wMDgwRkEgICAgIChiYXNlIDE2KQkJUldUIEdNQkgKLQkJCQlUQUxBTkdFUlNUUi4gNS03Ci0JCQkJRCAtIDgwMzMgS1JBSUxMSU5HCi0JCQkJV0VTVCBHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC04MC1GQiAgIChoZXgpCQlCVk0gTElNSVRFRAotMDA4MEZCICAgICAoYmFzZSAxNikJCUJWTSBMSU1JVEVECi0JCQkJSE9CQiBMQU5FCi0JCQkJSEVER0UgRU5EIFNPVVRIQU1QVE9OCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC04MC1GQyAgIChoZXgpCQlBVkFUQVIgQ09SUE9SQVRJT04KLTAwODBGQyAgICAgKGJhc2UgMTYpCQlBVkFUQVIgQ09SUE9SQVRJT04KLQkJCQk2NSBTT1VUSCBTVFJFRVQKLQkJCQlIT1BLSU5UT04gTUEgMDE3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTgwLUZEICAgKGhleCkJCUVYU0NFRUQgQ09SUFJBVElPTgotMDA4MEZEICAgICAoYmFzZSAxNikJCUVYU0NFRUQgQ09SUFJBVElPTgotCQkJCTEtMTUtMTIsIEtJVEFLQVNFLCBTQUlXQUktS1UKLQkJCQlLQVdBU0FLSS1DSVRZLCAyMTEgS0FOQUdBV0EKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLTgwLUZFICAgKGhleCkJCUFaVVJFIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA4MEZFICAgICAoYmFzZSAxNikJCUFaVVJFIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTYzIFNPVVRIIFNUUkVFVAotCQkJCUhPUEtJTlRPTiBNQSAwMTc0OC0yMjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04MC1GRiAgIChoZXgpCQlTT0MuIERFIFRFTEVJTkZPUk1BVElRVUUgUlRDCi0wMDgwRkYgICAgIChiYXNlIDE2KQkJU09DLiBERSBURUxFSU5GT1JNQVRJUVVFIFJUQwotCQkJCVAuTy4gQk9YIDk1NSBQTEFDRSBEVSBQQVJDCi0JCQkJMzAwIExFTy1QQVJJU1RBVSAgICBTVUlURSA3MjUgTU9OVFJFQUwgKAotCQkJCUNBTkFEQSBIMlcgMk4xCi0JCQkJQ0FOQURBCi0KLTAwLThDLTEwICAgKGhleCkJCUJsYWNrIEJveCBDb3JwLgotMDA4QzEwICAgICAoYmFzZSAxNikJCUJsYWNrIEJveCBDb3JwLgotCQkJCTEwMDAgUGFyayBEcml2ZQotCQkJCUxhd3JlbmNlIFBBIDE1MDU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC04Qy1GQSAgIChoZXgpCQlJbnZlbnRlYyBDb3Jwb3JhdGlvbgotMDA4Q0ZBICAgICAoYmFzZSAxNikJCUludmVudGVjIENvcnBvcmF0aW9uCi0JCQkJTm8uIDI1NSwgSmVuLUhvIFJvYWQgU2VjLiAyLCAzMzU0NywKLQkJCQlUYWNoaSBUYW95dWFuIDMzNTQ3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC04RC00RSAgIChoZXgpCQlDSlNDIE5JSSBTVFQKLTAwOEQ0RSAgICAgKGJhc2UgMTYpCQlDSlNDIE5JSSBTVFQKLQkJCQlOLkxlbmluZ3JhZHNrYXlhIHN0ciwgMTAKLQkJCQlTbW9sZW5zayAgMjE0MDEyCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLThELURBICAgKGhleCkJCUxpbmsgT25lIENvLiwgTHRkLgotMDA4RERBICAgICAoYmFzZSAxNikJCUxpbmsgT25lIENvLiwgTHRkLgotCQkJCTYwMUYgICBDaHVuZ2p1ayB0b3dlciA1NDYtOSAKLQkJCQlCdWNoaW9uIEd5ZW9uZ2dpLWRvICA0MjAtODY0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLThFLUYyICAgKGhleCkJCU5FVEdFQVIgSU5DLiwKLTAwOEVGMiAgICAgKGJhc2UgMTYpCQlORVRHRUFSIElOQy4sCi0JCQkJMzUwIEVBU1QgUExVTUVSSUEgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQUxJRk9STklBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0wMCAgIChoZXgpCQlESUFNT05EIE1VTFRJTUVESUEKLTAwOTAwMCAgICAgKGJhc2UgMTYpCQlESUFNT05EIE1VTFRJTUVESUEKLQkJCQkzMTIgU0UgU1RPTkVNSUxMIERSSVZFCi0JCQkJU1VJVEUgIzE1MAotCQkJCVZBTkNPVVZFUiBXQSA5ODY4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMDEgICAoaGV4KQkJTklTSElNVSBFTEVDVFJPTklDUyBJTkRVU1RSSUVTIENPLiwgTFRELgotMDA5MDAxICAgICAoYmFzZSAxNikJCU5JU0hJTVUgRUxFQ1RST05JQ1MgSU5EVVNUUklFUyBDTy4sIExURC4KLQkJCQk3MDAgVEFURU5PIE1JVEFHQVdBLUNITwotCQkJCUtBTlpBS0ktR1VOIFNBR0EgUFJFRi4gIAotCQkJCUpBUEFOCi0KLTAwLTkwLTAyICAgKGhleCkJCUFMTEdPTiBBQgotMDA5MDAyICAgICAoYmFzZSAxNikJCUFMTEdPTiBBQgotCQkJCUdBUkRBVE9SR0VUIDEKLQkJCQk0MTIgNTAgR09URUJPUkcgCi0JCQkJU1dFREVOCi0KLTAwLTkwLTAzICAgKGhleCkJCUFQTElPCi0wMDkwMDMgICAgIChiYXNlIDE2KQkJQVBMSU8KLQkJCQkxOCBBdmVudWUgRHUgOCBNYWkgMTk0NQotCQkJCTk1MjAwIFNBUkNFTExFUwotCQkJCUZSQU5DRQotCi0wMC05MC0wNCAgIChoZXgpCQkzQ09NIEVVUk9QRSBMVEQuCi0wMDkwMDQgICAgIChiYXNlIDE2KQkJM0NPTSBFVVJPUEUgTFRELgotCQkJCTNDT00gQ0VOVFJFLCBCT1VOREFSWSBXQVkKLQkJCQlIRU1FTCBIRU1QU1RFQUQKLQkJCQlIRVJUUy4gIEhQMiA3WVUgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLTA1ICAgKGhleCkJCVBST1RFQ0ggU1lTVEVNUyBDTy4sIExURC4KLTAwOTAwNSAgICAgKGJhc2UgMTYpCQlQUk9URUNIIFNZU1RFTVMgQ08uLCBMVEQuCi0JCQkJNUYsIE5PLiAzNCwgTEFORSA4MCwgU0VDLiAzCi0JCQkJTkFOS0FORyBST0FECi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTA2ICAgKGhleCkJCUhBTUFNQVRTVSBQSE9UT05JQ1MgSy5LLgotMDA5MDA2ICAgICAoYmFzZSAxNikJCUhBTUFNQVRTVSBQSE9UT05JQ1MgSy5LLgotCQkJCTgxMiBKT0tPLUNITwotCQkJCUhBTUFNQVRTVSAgNDMxLTMxOTYKLQkJCQlKQVBBTgotCi0wMC05MC0wNyAgIChoZXgpCQlET01FWCBURUNITk9MT0dZIENPUlAuCi0wMDkwMDcgICAgIChiYXNlIDE2KQkJRE9NRVggVEVDSE5PTE9HWSBDT1JQLgotCQkJCU5PLiAyLCBURUNITk9MT0dZIFJELiAxCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQkgSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC0wOCAgIChoZXgpCQlIYW5BIFN5c3RlbXMgSW5jLgotMDA5MDA4ICAgICAoYmFzZSAxNikJCUhhbkEgU3lzdGVtcyBJbmMuCi0JCQkJRUFITyBCL0QgNzQwLTEKLQkJCQlZRU9LIFNBTS1ET05HLCBLQU5HTkFNLUtVCi0JCQkJU0VPVUwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC05MC0wOSAgIChoZXgpCQlpIENvbnRyb2xzLCBJbmMuCi0wMDkwMDkgICAgIChiYXNlIDE2KQkJaSBDb250cm9scywgSW5jLgotCQkJCTJuZCBGbCwgSSdQYXJrIDMwMiwgMTEgSmVvbmdqYS1Eb25nLAotCQkJCUJ1bmRhbmctR1UsIFNlb25nbmFtLAotCQkJCUd5ZW9uZ2dpLURvIDQ2My04NTkgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTkwLTBBICAgKGhleCkJCVBST1RPTiBFTEVDVFJPTklDIElORFVTVFJJQUwgQ08uLCBMVEQuCi0wMDkwMEEgICAgIChiYXNlIDE2KQkJUFJPVE9OIEVMRUNUUk9OSUMgSU5EVVNUUklBTCBDTy4sIExURC4KLQkJCQkKLQkJCQk0RiwgNDUsIFNFQ1RJT04gMSwgU0FOLU1JTiBSRAotCQkJCVBhbmNoaWFvLCBUYWlwZWkgQ291bnR5ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTBCICAgKGhleCkJCUxBTk5FUiBFTEVDVFJPTklDUywgSU5DLgotMDA5MDBCICAgICAoYmFzZSAxNikJCUxBTk5FUiBFTEVDVFJPTklDUywgSU5DLgotCQkJCThGLTQsIE5PLiA3NywgU0VDLiAxCi0JCQkJSFNJTiBUQUkgV1UgUkQuLCBIU0lDSElICi0JCQkJVEFJUEVJIEhTSUVOIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtMEMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MDBDICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0wRCAgIChoZXgpCQlPdmVybGFuZCBTdG9yYWdlIEluYy4KLTAwOTAwRCAgICAgKGJhc2UgMTYpCQlPdmVybGFuZCBTdG9yYWdlIEluYy4KLQkJCQk0ODIwIE92ZXJsYW5kIEF2ZW51ZQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMEUgICAoaGV4KQkJSEFORExJTksgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMDkwMEUgICAgIChiYXNlIDE2KQkJSEFORExJTksgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNUYsIDI0LTIsIEluZHVzdHJ5IEUuIFJvYWQgSVYsCi0JCQkJU2NpZW5jZS1CYXNlZCBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHNpbmNodSAzMDA3NyAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC0wRiAgIChoZXgpCQlLQVdBU0FLSSBIRUFWWSBJTkRVU1RSSUVTLCBMVEQKLTAwOTAwRiAgICAgKGJhc2UgMTYpCQlLQVdBU0FLSSBIRUFWWSBJTkRVU1RSSUVTLCBMVEQKLQkJCQlFTEVDLiAmIENPTlRST0wgVEVDSCBDRU5URVIKLQkJCQkxLTEgS0FXQVNBS0ktQ0hPIEFLQVNISSA2NzMtODY2NgotCQkJCUpBUEFOCi0KLTAwLTkwLTEwICAgKGhleCkJCVNJTVVMQVRJT04gTEFCT1JBVE9SSUVTLCBJTkMuCi0wMDkwMTAgICAgIChiYXNlIDE2KQkJU0lNVUxBVElPTiBMQUJPUkFUT1JJRVMsIElOQy4KLQkJCQkxMDA3OCBUWUxFUiBQTEFDRSAjQQotCQkJCUlKQU1TVklMTEUgTUQgMjE3NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTExICAgKGhleCkJCVdBVlRyYWNlLCBJbmMuCi0wMDkwMTEgICAgIChiYXNlIDE2KQkJV0FWVHJhY2UsIEluYy4KLQkJCQkxNTU1IDEzMk5EIEFWRS4gTkUKLQkJCQlCRUxMRVZVRSBXQSA5ODAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMTIgICAoaGV4KQkJR0xPQkVTUEFOIFNFTUlDT05EVUNUT1IsIElOQy4KLTAwOTAxMiAgICAgKGJhc2UgMTYpCQlHTE9CRVNQQU4gU0VNSUNPTkRVQ1RPUiwgSU5DLgotCQkJCTEwMCBTQ0hVTFogRFJJVkUKLQkJCQlSRUQgQkFOSyBOSiAwNzcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMTMgICAoaGV4KQkJU0FNU0FOIENPUlAuCi0wMDkwMTMgICAgIChiYXNlIDE2KQkJU0FNU0FOIENPUlAuCi0JCQkJRUxFQ1RST05JQ1MgJiBDT01NIERJVklTSU9OCi0JCQkJU0FNU0FOIEJMREcuLCA1MDYtNywgQU1TQS1ET05HCi0JCQkJS2FuZ2RvbmctR3UgU2VvdWwgMTM0LTA1MCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtOTAtMTQgICAoaGV4KQkJUk9UT1JLIElOU1RSVU1FTlRTLCBMVEQuCi0wMDkwMTQgICAgIChiYXNlIDE2KQkJUk9UT1JLIElOU1RSVU1FTlRTLCBMVEQuCi0JCQkJQ0hBVUwgRU5EIExBTkUKLQkJCQlMVVRPTiBCRURGT1JEU0hJUkUKLQkJCQlMVTQgOEVaIEVuZ2xhbmQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtMTUgICAoaGV4KQkJQ0VOVElHUkFNIENPTU1VTklDQVRJT05TIENPUlAuCi0wMDkwMTUgICAgIChiYXNlIDE2KQkJQ0VOVElHUkFNIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJOTEgRUFTVCBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMTYgICAoaGV4KQkJWkFDCi0wMDkwMTYgICAgIChiYXNlIDE2KQkJWkFDCi0JCQkJU3T8dmVzdHIuIDkKLQkJCQlELTMxMTQxIEhpbGRlc2hlaW0gIAotCQkJCUdFUk1BTlkKLQotMDAtOTAtMTcgICAoaGV4KQkJWnlwY29tLCBJbmMKLTAwOTAxNyAgICAgKGJhc2UgMTYpCQlaeXBjb20sIEluYwotCQkJCTI4NDAwIEtvaG91dGVrIFdheQotCQkJCVN1aXRlIDE3MAotCQkJCVVuaW9uIENpdHkgQ0EgOTQ1ODctMTIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMTggICAoaGV4KQkJSVRPIEVMRUNUUklDIElORFVTVFJZIENPLCBMVEQuCi0wMDkwMTggICAgIChiYXNlIDE2KQkJSVRPIEVMRUNUUklDIElORFVTVFJZIENPLCBMVEQuCi0JCQkJNC0yNi0xMiBNRUlFS0kgTkFLQU1VUkEtS1UKLQkJCQlOQUdPWUEtQ0lUWSBBSUNISSA0NTAtMDAwMiAgCi0JCQkJSkFQQU4KLQotMDAtOTAtMTkgICAoaGV4KQkJSEVSTUVTIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDA5MDE5ICAgICAoYmFzZSAxNikJCUhFUk1FUyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQkzLTItMTIgWVVTSElNQSwgQlVOS1lPLUtVCi0JCQkJVE9LWU8sIDExMy0wMDM0ICAKLQkJCQlKQVBBTgotCi0wMC05MC0xQSAgIChoZXgpCQlVTklTUEhFUkUgU09MVVRJT05TCi0wMDkwMUEgICAgIChiYXNlIDE2KQkJVU5JU1BIRVJFIFNPTFVUSU9OUwotCQkJCTUgQ0FSTElTTEUgUk9BRAotCQkJCVdFU1RGT1JEIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0xQiAgIChoZXgpCQlESUdJVEFMIENPTlRST0xTCi0wMDkwMUIgICAgIChiYXNlIDE2KQkJRElHSVRBTCBDT05UUk9MUwotCQkJCTMwNSBQSU9ORUVSIEJMVkQuCi0JCQkJU1BSSU5HQk9STyBPSCA0NTA2Ni0xMTAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0xQyAgIChoZXgpCQltcHMgU29mdHdhcmUgR21iaAotMDA5MDFDICAgICAoYmFzZSAxNikJCW1wcyBTb2Z0d2FyZSBHbWJoCi0JCQkJTFVEV0lHU1RSIDM2Ci0JCQkJODU1NTEgS0lSQ0hIRUlNICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTkwLTFEICAgKGhleCkJCVBFQyAoTlopIExURC4KLTAwOTAxRCAgICAgKGJhc2UgMTYpCQlQRUMgKE5aKSBMVEQuCi0JCQkJMiBTVEFUSU9OIFJPQUQKLQkJCQlQLk8uIEJPWCAzMDgKLQkJCQlNQVJUT04gIAotCQkJCU5FVyBaRUFMQU5ECi0KLTAwLTkwLTFFICAgKGhleCkJCVNlbGVzdGEgSW5nZWduZXJpYSBTLnAuQS4KLTAwOTAxRSAgICAgKGJhc2UgMTYpCQlTZWxlc3RhIEluZ2VnbmVyaWEgUy5wLkEuCi0JCQkJdmlhIGRpIEZyYW5jaWEsIDI4Ci0JCQkJR2Vub3ZhICAxNjE0OQotCQkJCUlUQUxZCi0KLTAwLTkwLTFGICAgKGhleCkJCUFEVEVDIFBST0RVQ1RJT05TLCBJTkMuCi0wMDkwMUYgICAgIChiYXNlIDE2KQkJQURURUMgUFJPRFVDVElPTlMsIElOQy4KLQkJCQk0MDggUlVTU0VMTCBTVFJFRVQKLQkJCQlOQVNIVklMTEUgVE4gMzcyMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTIwICAgKGhleCkJCVBISUxJUFMgQU5BTFlUSUNBTCBYLVJBWSBCLlYuCi0wMDkwMjAgICAgIChiYXNlIDE2KQkJUEhJTElQUyBBTkFMWVRJQ0FMIFgtUkFZIEIuVi4KLQkJCQlMRUxZV0VHIDEKLQkJCQk3NjAyIEVBIEFMTUVMTyAgCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtOTAtMjEgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MDIxICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLiAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMjIgICAoaGV4KQkJSVZFWAotMDA5MDIyICAgICAoYmFzZSAxNikJCUlWRVgKLQkJCQk0Mjk1IElOVEVSTkFUSU9OQUwgQkxWRC4KLQkJCQlTVUlURQotCQkJCU5PUkNST1NTIEdBIDMwMDkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0yMyAgIChoZXgpCQlaSUxPRyBJTkMuCi0wMDkwMjMgICAgIChiYXNlIDE2KQkJWklMT0cgSU5DLgotCQkJCTkxMCBFYXN0IEhhbWlsdG9uIEF2ZS4KLQkJCQlDYW1wYmVsbCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMjQgICAoaGV4KQkJUElQRUxJTktTLCBJTkMuCi0wMDkwMjQgICAgIChiYXNlIDE2KQkJUElQRUxJTktTLCBJTkMuCi0JCQkJMjcxMCBXQUxTSCBBVkUuLCBTVEUgIzMwMAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0yNSAgIChoZXgpCQlCQUUgU3lzdGVtcyBBdXN0cmFsaWEgKEVsZWN0cm9uaWMgU3lzdGVtcykgUHR5IEx0ZAotMDA5MDI1ICAgICAoYmFzZSAxNikJCUJBRSBTeXN0ZW1zIEF1c3RyYWxpYSAoRWxlY3Ryb25pYyBTeXN0ZW1zKSBQdHkgTHRkCi0JCQkJMyBTZWNvbmQgQXZlCi0JCQkJTWF3c29uIExha2VzIFNvdXRoIEF1c3RyYWxpYSA1MDk1Ci0JCQkJQVVTVFJBTElBCi0KLTAwLTkwLTI2ICAgKGhleCkJCUFEVkFOQ0VEIFNXSVRDSElORyBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDA5MDI2ICAgICAoYmFzZSAxNikJCUFEVkFOQ0VEIFNXSVRDSElORyBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTgzMzAgQk9PTkUgQk9VTEVWQVJELS01VEggRkwuCi0JCQkJVklFTk5BIFZBIDIyMTgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0yNyAgIChoZXgpCQlJTlRFTCBDT1JQT1JBVElPTgotMDA5MDI3ICAgICAoYmFzZSAxNikJCUlOVEVMIENPUlBPUkFUSU9OCi0JCQkJSEYxLTA2Ci0JCQkJNTIwMCBOLkUuIEVMQU0gWU9VTkcgUEFSS1dBWQotCQkJCUhJTExTQk9STyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMjggICAoaGV4KQkJTklQUE9OIFNJR05BTCBDTy4sIExURC4KLTAwOTAyOCAgICAgKGJhc2UgMTYpCQlOSVBQT04gU0lHTkFMIENPLiwgTFRELgotCQkJCTExIEhJUkFJREUtS09HSU8tREFOQ0hJCi0JCQkJVUlTVU5PTUlZQSBUT0NISUdJIDMyMS04NjUxICAKLQkJCQlKQVBBTgotCi0wMC05MC0yOSAgIChoZXgpCQlDUllQVE8gQUcKLTAwOTAyOSAgICAgKGJhc2UgMTYpCQlDUllQVE8gQUcKLQkJCQlQLk8uIEJPWAotCQkJCUNILTYzMDEgWnVnICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC05MC0yQSAgIChoZXgpCQlDT01NVU5JQ0FUSU9OIERFVklDRVMsIElOQy4KLTAwOTAyQSAgICAgKGJhc2UgMTYpCQlDT01NVU5JQ0FUSU9OIERFVklDRVMsIElOQy4KLQkJCQk4NSBGdWx0b24gU3RyZWV0Ci0JCQkJQm9vbnRvbiBOSiAwNzAwNS0xOTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0yQiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwMkIgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCVNKQS0yCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTJDICAgKGhleCkJCURBVEEgJiBDT05UUk9MIEVRVUlQTUVOVCBMVEQuCi0wMDkwMkMgICAgIChiYXNlIDE2KQkJREFUQSAmIENPTlRST0wgRVFVSVBNRU5UIExURC4KLQkJCQlDT1VOVFkgRkFSTSwgV0VORE9WRVIgUkQuCi0JCQkJU1RPS0UgTUFOREVWSUxMRQotCQkJCUJVQ0tTLiBIUDIyIFNUQSAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtMkQgICAoaGV4KQkJREFUQSBFTEVDVFJPTklDUyAoQVVTVC4pIFBUWSwgTFRELgotMDA5MDJEICAgICAoYmFzZSAxNikJCURBVEEgRUxFQ1RST05JQ1MgKEFVU1QuKSBQVFksIExURC4KLQkJCQk3IFNFSVNNSUMgQ09VUlQKLQkJCQlST1dWSUxMRQotCQkJCVZJQ1RPUklBIDMxNzggIAotCQkJCUFVU1RSQUxJQQotCi0wMC05MC0yRSAgIChoZXgpCQlOQU1DTyBMSU1JVEVECi0wMDkwMkUgICAgIChiYXNlIDE2KQkJTkFNQ08gTElNSVRFRAotCQkJCTEtMS0zMiBTSElOLVVSQVNISU1BLUNITwotCQkJCUtBTkFHQVdBLUtVLCBZT0tPSEFNQQotCQkJCUtBTkFHQVdBIDIyMS0wMDMxICAKLQkJCQlKQVBBTgotCi0wMC05MC0yRiAgIChoZXgpCQlORVRDT1JFIFNZU1RFTVMsIElOQy4KLTAwOTAyRiAgICAgKGJhc2UgMTYpCQlORVRDT1JFIFNZU1RFTVMsIElOQy4KLQkJCQkxODcgQkFMTEFSRFZBTEUgU1RSRUVUCi0JCQkJV0lMTUlOR1RPTiBNQSAwMTg4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMzAgICAoaGV4KQkJSE9ORVlXRUxMLURBVElORwotMDA5MDMwICAgICAoYmFzZSAxNikJCUhPTkVZV0VMTC1EQVRJTkcKLQkJCQlWSUEgVElOVE9SRVRUTywgMTUKLQkJCQkyMTAxMiBDQVNTQU5PIE1BR05BR08gKFZBKSAgCi0JCQkJSVRBTFkKLQotMDAtOTAtMzEgICAoaGV4KQkJTVlTVElDT00sIExURC4KLTAwOTAzMSAgICAgKGJhc2UgMTYpCQlNWVNUSUNPTSwgTFRELgotCQkJCVAuTy4gODM2NAotCQkJCU5BVEFOSUEgNDI1MDQgIAotCQkJCUlTUkFFTAotCi0wMC05MC0zMiAgIChoZXgpCQlQRUxDT01CRSBHUk9VUCBMVEQuCi0wMDkwMzIgICAgIChiYXNlIDE2KQkJUEVMQ09NQkUgR1JPVVAgTFRELgotCQkJCU1BSU4gUk9BRAotCQkJCURPVkVSQ09VUlQsIEhBUldJQ0gKLQkJCQlFU1NFWCBDMDEyIDRMUCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC05MC0zMyAgIChoZXgpCQlJTk5PVkFQSE9ORSBBRwotMDA5MDMzICAgICAoYmFzZSAxNikJCUlOTk9WQVBIT05FIEFHCi0JCQkJQm9lYmxpbmdlciBTdHIuIDc2Ci0JCQkJU0lOREVMRklOR0VOICBENzEwNjUKLQkJCQlHRVJNQU5ZCi0KLTAwLTkwLTM0ICAgKGhleCkJCUlNQUdJQywgSU5DLgotMDA5MDM0ICAgICAoYmFzZSAxNikJCUlNQUdJQywgSU5DLgotCQkJCTIzNSBXZXN0IFJvYWQgIzcKLQkJCQlQb3J0c21vdXRoIE5IIDAzODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0zNSAgIChoZXgpCQlBTFBIQSBURUxFQ09NLCBJTkMuCi0wMDkwMzUgICAgIChiYXNlIDE2KQkJQUxQSEEgVEVMRUNPTSwgSU5DLgotCQkJCTJGLCBOTy4yLCBMSSBIU0lOIFJPQUQKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU4tQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTM2ICAgKGhleCkJCWVucywgaW5jLgotMDA5MDM2ICAgICAoYmFzZSAxNikJCWVucywgaW5jLgotCQkJCVAuTy4gQk9YIDE5MjA3Ci0JCQkJUkFMRUlHSCBOQyAyNzYxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtMzcgICAoaGV4KQkJQUNVQ09NTSwgSU5DLgotMDA5MDM3ICAgICAoYmFzZSAxNikJCUFDVUNPTU0sIElOQy4KLQkJCQk0NjMzIE9MRCBJUk9OU0lERVMgLSBTVEUgIzMxMAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0zOCAgIChoZXgpCQlGT1VOVEFJTiBURUNITk9MT0dJRVMsIElOQy4KLTAwOTAzOCAgICAgKGJhc2UgMTYpCQlGT1VOVEFJTiBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk1MCBSQU5ET0xQSCBST0FECi0JCQkJU09NRVJTRVQgTkogMDg4NzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTM5ICAgKGhleCkJCVNIQVNUQSBORVRXT1JLUwotMDA5MDM5ICAgICAoYmFzZSAxNikJCVNIQVNUQSBORVRXT1JLUwotCQkJCTI0OSBIVU1CT0xEVCBDT1VSVAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OS0xMzAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC0zQSAgIChoZXgpCQlOSUhPTiBNRURJQSBUT09MIElOQy4KLTAwOTAzQSAgICAgKGJhc2UgMTYpCQlOSUhPTiBNRURJQSBUT09MIElOQy4KLQkJCQkxODc1IE9ZQU1BLUNITwotCQkJCVlPS0tBSUNISS1DSVRZCi0JCQkJTUlFIDUxMi0xMTAyICAKLQkJCQlKQVBBTgotCi0wMC05MC0zQiAgIChoZXgpCQlUcmlFTVMgUmVzZWFyY2ggTGFiLCBJbmMuCi0wMDkwM0IgICAgIChiYXNlIDE2KQkJVHJpRU1TIFJlc2VhcmNoIExhYiwgSW5jLgotCQkJCTEyNzUgTi4gVFVTVElOIEFWRU5VRQotCQkJCUFOQUhFSU0gQ0EgOTI4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTNDICAgKGhleCkJCUFUTEFOVElDIE5FVFdPUksgU1lTVEVNUwotMDA5MDNDICAgICAoYmFzZSAxNikJCUFUTEFOVElDIE5FVFdPUksgU1lTVEVNUwotCQkJCUlNTUVVQkxFICJLZW5uZWR5IgotCQkJCVpJVEVSIEFWRU5VRSBKRiBLRU5ORURZCi0JCQkJMzM3MDAgTUVSSUdOQUMgCi0JCQkJRlJBTkNFCi0KLTAwLTkwLTNEICAgKGhleCkJCUJJT1BBQyBTWVNURU1TLCBJTkMuCi0wMDkwM0QgICAgIChiYXNlIDE2KQkJQklPUEFDIFNZU1RFTVMsIElOQy4KLQkJCQk0MiBBRVJPIENBTUlOTwotCQkJCVNBTlRBIEJBUkJBUkEgQ0EgOTMxMTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTNFICAgKGhleCkJCU4uVi4gUEhJTElQUyBJTkRVU1RSSUFMIEFDVElWSVRJRVMKLTAwOTAzRSAgICAgKGJhc2UgMTYpCQlOLlYuIFBISUxJUFMgSU5EVVNUUklBTCBBQ1RJVklUSUVTCi0JCQkJCi0JCQkJSU5URVJMRVVWRU5MQUFOIDc0LTc2Ci0JCQkJQi0zMDAxIExFVVZFTiAgCi0JCQkJQkVMR0lVTQotCi0wMC05MC0zRiAgIChoZXgpCQlBWlRFQyBSQURJT01FRElBCi0wMDkwM0YgICAgIChiYXNlIDE2KQkJQVpURUMgUkFESU9NRURJQQotCQkJCTMxLCBSVUUgRFUgQ0hFTUlOREVGRVIKLQkJCQk2NzIwMCBTVFJBU0JPVVJHICAKLQkJCQlGUkFOQ0UKLQotMDAtOTAtNDAgICAoaGV4KQkJU2llbWVucyBOZXR3b3JrIENvbnZlcmdlbmNlIExMQwotMDA5MDQwICAgICAoYmFzZSAxNikJCVNpZW1lbnMgTmV0d29yayBDb252ZXJnZW5jZSBMTEMKLQkJCQlUZW4gVGVjaG5vbG9neSBQYXJrIERyaXZlCi0JCQkJV2VzdGZvcmQgTUEgMDE4ODYtMzE0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNDEgICAoaGV4KQkJQVBQTElFRCBESUdJVEFMIEFDQ0VTUwotMDA5MDQxICAgICAoYmFzZSAxNikJCUFQUExJRUQgRElHSVRBTCBBQ0NFU1MKLQkJCQk5ODU1IFNDUkFOVE9OIFJPQUQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTQyICAgKGhleCkJCUVDQ1MsIEluYy4KLTAwOTA0MiAgICAgKGJhc2UgMTYpCQlFQ0NTLCBJbmMuCi0JCQkJT05FIFNIRUlMQSBEUklWRQotCQkJCVRJTlRPTiBGQUxMUyBOSiAwNzcyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNDMgICAoaGV4KQkJVGF0dGlsZSBTUkwgCi0wMDkwNDMgICAgIChiYXNlIDE2KQkJVGF0dGlsZSBTUkwgCi0JCQkJMS0xMy0xMCBTSElST0dBTkUgIENIVU8tS1UKLQkJCQlGVUtVT0tBLUNJVFkgIAotCQkJCUpBUEFOCi0KLTAwLTkwLTQ0ICAgKGhleCkJCUFTU1VSRUQgRElHSVRBTCwgSU5DLgotMDA5MDQ0ICAgICAoYmFzZSAxNikJCUFTU1VSRUQgRElHSVRBTCwgSU5DLgotCQkJCTktMTEgR09MRFNNSVRIIFNULgotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNDUgICAoaGV4KQkJTWFyY29uaSBDb21tdW5pY2F0aW9ucwotMDA5MDQ1ICAgICAoYmFzZSAxNikJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMKLQkJCQkxMDAwIEZvcmUgRHJpdmUKLQkJCQlXYXJyZW5kYWxlIFBBIDE1MDg2LTc1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTQ2ICAgKGhleCkJCURFWERZTkUsIExURC4KLTAwOTA0NiAgICAgKGJhc2UgMTYpCQlERVhEWU5FLCBMVEQuCi0JCQkJMTUgTUFSS0VUIFBMLgotCQkJCUNJUkVOQ0VTVEVSCi0JCQkJR0xPQ0VTVEVSU0hJUkUgR0w3IDJQQiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtNDcgICAoaGV4KQkJR0lHQSBGQVNUIEUuIExURC4KLTAwOTA0NyAgICAgKGJhc2UgMTYpCQlHSUdBIEZBU1QgRS4gTFRELgotCQkJCTE0RiwgTk8uMTEyLCBTRUMuIDEKLQkJCQlIU0lOLVRBSSBXVSBSRC4KLQkJCQlIc2ktQ2hpaCBUYWlwZWkgSHNpZW4gCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC00OCAgIChoZXgpCQlaRUFMIENPUlBPUkFUSU9OCi0wMDkwNDggICAgIChiYXNlIDE2KQkJWkVBTCBDT1JQT1JBVElPTgotCQkJCTMwMSwgSElSQUlLRQotCQkJCU5BR0FLVVRFLUNITywgQUlDSEktUFJFRi4gNDgwLTExNTUgIAotCQkJCUpBUEFOCi0KLTAwLTkwLTQ5ICAgKGhleCkJCUVOVFJJRElBIENPUlBPUkFUSU9OCi0wMDkwNDkgICAgIChiYXNlIDE2KQkJRU5UUklESUEgQ09SUE9SQVRJT04KLQkJCQkxMDEgUEFSSyBDRU5URVIgUExBWkEKLQkJCQlTVUlURSAjNTAwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTMtMjIxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNEEgICAoaGV4KQkJQ09OQ1VSIFNZU1RFTSBURUNITk9MT0dJRVMKLTAwOTA0QSAgICAgKGJhc2UgMTYpCQlDT05DVVIgU1lTVEVNIFRFQ0hOT0xPR0lFUwotCQkJCTI1MjUgV0FMTElOR1dPT0QgRFIuLVNURS4gIzgwNAotCQkJCUFVU1RJTiBUWCA3ODc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNEIgICAoaGV4KQkJR2VtVGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDkwNEIgICAgIChiYXNlIDE2KQkJR2VtVGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDEgSmVuIEFpIFJvYWQsCi0JCQkJSHNpbmNodSBJbmR1c3RyaWFsIFBhcmssCi0JCQkJSHVrb3UsIEhzaW5jaHUsIFRhaXdhbiAzMDM1MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtNEMgICAoaGV4KQkJRVBJR1JBTSwgSU5DLgotMDA5MDRDICAgICAoYmFzZSAxNikJCUVQSUdSQU0sIElOQy4KLQkJCQk4NzAgV0VTVCBNQVVERSBBVkUuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC00RCAgIChoZXgpCQlTUEVDIFMuQS4KLTAwOTA0RCAgICAgKGJhc2UgMTYpCQlTUEVDIFMuQS4KLQkJCQlDQVNQIDE3MiAzLUIKLQkJCQkwODAxMyBCQVJDRUxPTkEgIAotCQkJCVNQQUlOCi0KLTAwLTkwLTRFICAgKGhleCkJCURFTEVNIEJWCi0wMDkwNEUgICAgIChiYXNlIDE2KQkJREVMRU0gQlYKLQkJCQlMVUNIVEhBVkVOIFdFRyA0MgotCQkJCTU2NTcgRUIgRUlOREhPVkVOICAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC05MC00RiAgIChoZXgpCQlBQkIgUE9XRVIgVCZEIENPTVBBTlksIElOQy4KLTAwOTA0RiAgICAgKGJhc2UgMTYpCQlBQkIgUE9XRVIgVCZEIENPTVBBTlksIElOQy4KLQkJCQk3MDM2IFNOT1dEUklGVCBST0FECi0JCQkJQUxMRU5UT1dOIFBBIDE4MTA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC01MCAgIChoZXgpCQlURUxFU1RFIE9ZCi0wMDkwNTAgICAgIChiYXNlIDE2KQkJVEVMRVNURSBPWQotCQkJCVNFUE9OS0FUVSAxCi0JCQkJTElUVE9JTkVOICBGSU4tMjA2NjAKLQkJCQlGSU5MQU5ECi0KLTAwLTkwLTUxICAgKGhleCkJCVVMVElNQVRFIFRFQ0hOT0xPR1kgQ09SUC4KLTAwOTA1MSAgICAgKGJhc2UgMTYpCQlVTFRJTUFURSBURUNITk9MT0dZIENPUlAuCi0JCQkJMTAwIFJBV1NPTiBST0FECi0JCQkJVklDVE9SIE5ZIDE0NTY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC01MiAgIChoZXgpCQlTRUxDT00gRUxFVFRST05JQ0EgUy5SLkwuCi0wMDkwNTIgICAgIChiYXNlIDE2KQkJU0VMQ09NIEVMRVRUUk9OSUNBIFMuUi5MLgotCQkJCVZJQSBHUkFOREksIDUKLQkJCQk0MDAxMyBDQVNURUxNQUdHSU9SRSBCTyAgCi0JCQkJSVRBTFkKLQotMDAtOTAtNTMgICAoaGV4KQkJREFFV09PIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMDA5MDUzICAgICAoYmFzZSAxNikJCURBRVdPTyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQlESVQgUkVTRUFSQ0ggQ0VOVEVSCi0JCQkJREFFV09PIENFTlRFUiA1NDEgTkFNREFFTVVOTk8gNS1HQQotCQkJCUNIVU5HLUdVIFNFT1VMIDEwMC03MTQgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLTkwLTU0ICAgKGhleCkJCUlOTk9WQVRJVkUgU0VNSUNPTkRVQ1RPUlMsIElOQwotMDA5MDU0ICAgICAoYmFzZSAxNikJCUlOTk9WQVRJVkUgU0VNSUNPTkRVQ1RPUlMsIElOQwotCQkJCTI1NzAgVy4gRUwgQ0FNSU5PIFJFQUwKLQkJCQlTVUlURSAjMjA1Ci0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNTUgICAoaGV4KQkJUEFSS0VSIEhBTk5JRklOIENPUlBPUkFUSU9OIENPTVBVTU9UT1IgRElWSVNJT04KLTAwOTA1NSAgICAgKGJhc2UgMTYpCQlQQVJLRVIgSEFOTklGSU4gQ09SUE9SQVRJT04gQ09NUFVNT1RPUiBESVZJU0lPTgotCQkJCTU1MDAgQlVTSU5FU1MgUEFSSyBEUklWRQotCQkJCVJPSE5FUlQgUEFSSyBDQSA5NDkyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNTYgICAoaGV4KQkJVEVMRVNUUkVBTSwgSU5DLgotMDA5MDU2ICAgICAoYmFzZSAxNikJCVRFTEVTVFJFQU0sIElOQy4KLQkJCQk4NDggR09MRCBGTEFUIFJELiwgU1VJVEUgMQotCQkJCU5FVkFEQSBDSVRZIENBIDk1OTU5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC01NyAgIChoZXgpCQlBQU5ldGNvbSwgSW5jLgotMDA5MDU3ICAgICAoYmFzZSAxNikJCUFBTmV0Y29tLCBJbmMuCi0JCQkJNDk0OSBMSUJFUlRZIExBTkUgLSBTVEUuICMyMDAKLQkJCQlBTExFTlRPV04gUEEgMTgxMDYtOTAxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNTggICAoaGV4KQkJVWx0cmEgRWxlY3Ryb25pY3MgTHRkLiwgQ29tbWFuZCBhbmQgQ29udHJvbCBTeXN0ZW1zCi0wMDkwNTggICAgIChiYXNlIDE2KQkJVWx0cmEgRWxlY3Ryb25pY3MgTHRkLiwgQ29tbWFuZCBhbmQgQ29udHJvbCBTeXN0ZW1zCi0JCQkJS05BVkVTIEJFRUNIIEJVU0lORVNTIENFTlRSRQotCQkJCUxPVURXQVRFUiwgSElHSCBXWUNPTUJFCi0JCQkJQlVDS0lOR0hBTVNISVJFIEhQMTAgOVVUIEVuZ2xhbmQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtNTkgICAoaGV4KQkJVEVMRUNPTSBERVZJQ0UgSy5LLgotMDA5MDU5ICAgICAoYmFzZSAxNikJCVRFTEVDT00gREVWSUNFIEsuSy4KLQkJCQlTQU5NSVlBTkFHQSBCTERHLiAzRiwgMS01LTEyCi0JCQkJTU9UT0FLQVNBS0EsIE1JTkFUTy1LVQotCQkJCVRPS1lPIDEwNyAKLQkJCQlKQVBBTgotCi0wMC05MC01QSAgIChoZXgpCQlERUFSQk9STiBHUk9VUCwgSU5DLgotMDA5MDVBICAgICAoYmFzZSAxNikJCURFQVJCT1JOIEdST1VQLCBJTkMuCi0JCQkJMjcwMDcgSElMTFMgVEVDSCBDVC4KLQkJCQlGQVJNSU5HVE9OIEhJTExTIE1JIDQ4MzMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC01QiAgIChoZXgpCQlSQVlNT05EIEFORCBMQUUgRU5HSU5FRVJJTkcKLTAwOTA1QiAgICAgKGJhc2UgMTYpCQlSQVlNT05EIEFORCBMQUUgRU5HSU5FRVJJTkcKLQkJCQkyMDggQ09NTUVSQ0UgRFIuLCAgVU5JVCAjM0MKLQkJCQlGT1JUIENPTExJTlMgQ08gODA1MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTVDICAgKGhleCkJCUVETUkKLTAwOTA1QyAgICAgKGJhc2UgMTYpCQlFRE1JCi0JCQkJNjI2IE9MRCBHWU1QSUUgUk9BRAotCQkJCU5BUkFOR0JBIFFMRCA0NTA0IAotCQkJCUFVU1RSQUxJQQotCi0wMC05MC01RCAgIChoZXgpCQlORVRDT00gU0lDSEVSSEVJVFNURUNITklLIEdtYkgKLTAwOTA1RCAgICAgKGJhc2UgMTYpCQlORVRDT00gU0lDSEVSSEVJVFNURUNITklLIEdtYkgKLQkJCQlCT1BQU1RSQVNTRSAzOAotCQkJCTU1MTE4IE1BSU5aCi0JCQkJR0VSTUFOWQotCi0wMC05MC01RSAgIChoZXgpCQlSQVVMQU5ELUJPUkcgQ09SUE9SQVRJT04KLTAwOTA1RSAgICAgKGJhc2UgMTYpCQlSQVVMQU5ELUJPUkcgQ09SUE9SQVRJT04KLQkJCQkzNDUwIFcuIE9BS1RPTiBTVC4KLQkJCQlTS09LSUUgSUwgNjAwNzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTVGICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTA1RiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJU0pBLTIKLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNjAgICAoaGV4KQkJU1lTVEVNIENSRUFURSBDT1JQLgotMDA5MDYwICAgICAoYmFzZSAxNikJCVNZU1RFTSBDUkVBVEUgQ09SUC4KLQkJCQkzLTEzLTYgWU9TSElLQVdBIEJMRC4KLQkJCQlLSW1zaGkgU1VNSURBLUtVCi0JCQkJVE9LWU8gIAotCQkJCUpBUEFOCi0KLTAwLTkwLTYxICAgKGhleCkJCVBBQ0lGSUMgUkVTRUFSQ0ggJiBFTkdJTkVFUklORyBDT1JQT1JBVElPTgotMDA5MDYxICAgICAoYmFzZSAxNikJCVBBQ0lGSUMgUkVTRUFSQ0ggJiBFTkdJTkVFUklORyBDT1JQT1JBVElPTgotCQkJCTIwNzAgTEFTIFBBTE1BUyBEUklWRQotCQkJCUNBUkxTQkFEIENBIDkyMDA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC02MiAgIChoZXgpCQlJQ1AgVk9SVEVYIENPTVBVVEVSU1lTVEVNRSBHbWJICi0wMDkwNjIgICAgIChiYXNlIDE2KQkJSUNQIFZPUlRFWCBDT01QVVRFUlNZU1RFTUUgR21iSAotCQkJCUZBTFRFUlNUUkFTU0UgNTEtNTMKLQkJCQlEIDc0MjIzIEZMRUlOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTkwLTYzICAgKGhleCkJCUNPSEVSRU5UIENPTU1VTklDQVRJT05TIFNZU1RFTVMgQ09SUE9SQVRJT04KLTAwOTA2MyAgICAgKGJhc2UgMTYpCQlDT0hFUkVOVCBDT01NVU5JQ0FUSU9OUyBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJNDUwODUgVU5JVkVSU0lUWSBEUklWRQotCQkJCUFTSEJVUk4gVkEgMjAxNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTY0ICAgKGhleCkJCVRob21zb24gSW5jLgotMDA5MDY0ICAgICAoYmFzZSAxNikJCVRob21zb24gSW5jLgotCQkJCTEwMSBXZXN0IDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MC0xMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC02NSAgIChoZXgpCQlGSU5JU0FSIENPUlBPUkFUSU9OCi0wMDkwNjUgICAgIChiYXNlIDE2KQkJRklOSVNBUiBDT1JQT1JBVElPTgotCQkJCTEzODkgTW9mZmV0dCBQYXJrIERyCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC02NiAgIChoZXgpCQlUcm9pa2EgTmV0d29ya3MsIEluYy4KLTAwOTA2NiAgICAgKGJhc2UgMTYpCQlUcm9pa2EgTmV0d29ya3MsIEluYy4KLQkJCQkyODI5IFRvd25zZ2F0ZSBSb2FkLAotCQkJCVN1aXRlIDIwMAotCQkJCVdlc3RsYWtlIFZpbGxhZ2UgQ0EgOTEzNjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTY3ICAgKGhleCkJCVdhbGtBYm91dCBDb21wdXRlcnMsIEluYy4KLTAwOTA2NyAgICAgKGJhc2UgMTYpCQlXYWxrQWJvdXQgQ29tcHV0ZXJzLCBJbmMuCi0JCQkJMjY1NSBOLiBPQ0VBTiBEUklWRS0tU1RFLiAjNTEwCi0JCQkJU0lOR0VSIElTTEFORCBGTCAzMzQwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNjggICAoaGV4KQkJRFZUIENPUlAuCi0wMDkwNjggICAgIChiYXNlIDE2KQkJRFZUIENPUlAuCi0JCQkJMTY3MCBPQUtCUk9PSyBEUi4gLSBTVEUuICMzMzAKLQkJCQlOT1JDUk9TUyBHQSAzMDA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNjkgICAoaGV4KQkJSlVOSVBFUiBORVRXT1JLUywgSU5DLgotMDA5MDY5ICAgICAoYmFzZSAxNikJCUpVTklQRVIgTkVUV09SS1MsIElOQy4KLQkJCQkxMTk0IE4uIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OS0xMjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC02QSAgIChoZXgpCQlUVVJOU1RPTkUgU1lTVEVNUywgSU5DLgotMDA5MDZBICAgICAoYmFzZSAxNikJCVRVUk5TVE9ORSBTWVNURU1TLCBJTkMuCi0JCQkJMjc0IEZlcmd1c29uIERyaXZlCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNkIgICAoaGV4KQkJQVBQTElFRCBSRVNPVVJDRVMsIElOQy4KLTAwOTA2QiAgICAgKGJhc2UgMTYpCQlBUFBMSUVEIFJFU09VUkNFUywgSU5DLgotCQkJCTk4MjEgV0lETUVSIFJPQUQKLQkJCQlMRU5FWEEgS1MgNjYyMTUtMTIzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNkMgICAoaGV4KQkJU2FydG9yaXVzIEhhbWJ1cmcgR21iSAotMDA5MDZDICAgICAoYmFzZSAxNikJCVNhcnRvcml1cyBIYW1idXJnIEdtYkgKLQkJCQlNZWllbmRvcmZlcnN0ci4gMjA1Ci0JCQkJSGFtYnVyZyAgRC0yMjE0NQotCQkJCUdFUk1BTlkKLQotMDAtOTAtNkQgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MDZEICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLiAtICBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTZFICAgKGhleCkJCVBSQVhPTiwgSU5DLgotMDA5MDZFICAgICAoYmFzZSAxNikJCVBSQVhPTiwgSU5DLgotCQkJCTE3MDAgREVMTCBBVkVOVUUKLQkJCQlDQU1QQkVMTCBDQSA5NTAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNkYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MDZGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLiAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtNzAgICAoaGV4KQkJTkVPIE5FVFdPUktTLCBJTkMuCi0wMDkwNzAgICAgIChiYXNlIDE2KQkJTkVPIE5FVFdPUktTLCBJTkMuCi0JCQkJMTAzMDAgQlJFTiBST0FEIEVBU1QKLQkJCQlNSU5ORVRPTktBIE1OIDU1MzQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC03MSAgIChoZXgpCQlBcHBsaWVkIElubm92YXRpb24gSW5jLgotMDA5MDcxICAgICAoYmFzZSAxNikJCUFwcGxpZWQgSW5ub3ZhdGlvbiBJbmMuCi0JCQkJNTgwMCBJbm5vdmF0aW9uIERyaXZlCi0JCQkJRHVibGluIE9IIDQzMDE2LTMyNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTcyICAgKGhleCkJCVNJTVJBRCBBUwotMDA5MDcyICAgICAoYmFzZSAxNikJCVNJTVJBRCBBUwotCQkJCVAuTy4gQk9YIDExMQotCQkJCTMxOTEgSE9SVEVOIAotCQkJCU5PUldBWQotCi0wMC05MC03MyAgIChoZXgpCQlHQUlPIFRFQ0hOT0xPR1kKLTAwOTA3MyAgICAgKGJhc2UgMTYpCQlHQUlPIFRFQ0hOT0xPR1kKLQkJCQlPQUstWU9LT0hBTUEgQkxERy4KLQkJCQkyLTE1LTEwIEtJVEEtU0FJV0FJLAotCQkJCU5JU0hJLUtVIFlPS09IQU1BLUNJVFkgS2FuYWdhd2EgCi0JCQkJSkFQQU4KLQotMDAtOTAtNzQgICAoaGV4KQkJQVJHT04gTkVUV09SS1MsIElOQy4KLTAwOTA3NCAgICAgKGJhc2UgMTYpCQlBUkdPTiBORVRXT1JLUywgSU5DLgotCQkJCTI1IFBPUlRFUiBST0FECi0JCQkJTElUVExFVE9OIE1BIDAxNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC03NSAgIChoZXgpCQlORUMgRE8gQlJBU0lMIFMuQS4KLTAwOTA3NSAgICAgKGJhc2UgMTYpCQlORUMgRE8gQlJBU0lMIFMuQS4KLQkJCQlST0RPVklBIFBSRVNJREVOVEUgRFVUUkEsIEtNIDIxOAotCQkJCUNVTUJJQ0EtR1VBUlVMSE9TCi0JCQkJU0FPIFBBVUxPLVNQIENFUCAtIDA3MjEwLTkwMiAKLQkJCQlCUkFaSUwKLQotMDAtOTAtNzYgICAoaGV4KQkJRk1UIEFJUkNSQUZUIEdBVEUgU1VQUE9SVCBTWVNURU1TIEFCCi0wMDkwNzYgICAgIChiYXNlIDE2KQkJRk1UIEFJUkNSQUZUIEdBVEUgU1VQUE9SVCBTWVNURU1TIEFCCi0JCQkJCi0JCQkJREFMQVNMSU5HQU4gOAotCQkJCVNFLTIzMSAzMiBUUkVMTEVCT1JHICAKLQkJCQlTV0VERU4KLQotMDAtOTAtNzcgICAoaGV4KQkJQURWQU5DRUQgRklCUkUgQ09NTVVOSUNBVElPTlMKLTAwOTA3NyAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBGSUJSRSBDT01NVU5JQ0FUSU9OUwotCQkJCVBPIEJPWCAjNzUxMjM5Ci0JCQkJMSBXSUxMT1dCUk9PSyBDVAotCQkJCVBFVEFMVU1BIENBIDk0OTc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC03OCAgIChoZXgpCQlNRVIgVEVMRU1BTkFHRU1FTlQgU09MVVRJT05TLCBMVEQuCi0wMDkwNzggICAgIChiYXNlIDE2KQkJTUVSIFRFTEVNQU5BR0VNRU5UIFNPTFVUSU9OUywgTFRELgotCQkJCTUgSEFUU09SRUYgU1RSLgotCQkJCUlORC4gQVJFQQotCQkJCUhPTE9OICAKLQkJCQlJU1JBRUwKLQotMDAtOTAtNzkgICAoaGV4KQkJQ2xlYXJPbmUsIEluYy4KLTAwOTA3OSAgICAgKGJhc2UgMTYpCQlDbGVhck9uZSwgSW5jLgotCQkJCTI5OSBXQVNISU5HVE9OIFNUUkVFVAotCQkJCVdPQlVSTiBNQSAwMTgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtN0EgICAoaGV4KQkJUG9seWNvbSwgSW5jLgotMDA5MDdBICAgICAoYmFzZSAxNikJCVBvbHljb20sIEluYy4KLQkJCQk1NzU1IENFTlRSQUwgQVZFTlVFCi0JCQkJQk9VTERFUiBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtN0IgICAoaGV4KQkJRS1URUNILCBJTkMuCi0wMDkwN0IgICAgIChiYXNlIDE2KQkJRS1URUNILCBJTkMuCi0JCQkJMzAsIFImRCBST0FEIDIKLQkJCQlTQ0lFTkNFIFBBUksKLQkJCQlIU0lOQ0hVICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTdDICAgKGhleCkJCURJR0lUQUxDQVNULCBJTkMuCi0wMDkwN0MgICAgIChiYXNlIDE2KQkJRElHSVRBTENBU1QsIElOQy4KLQkJCQk1MDMsIElMS1dBTkcgQkxERy4sIDE2NTYtMgotCQkJCVNFT0NITy1ET05HCi0JCQkJU0VPQ0hPLUtVICBTRU9VTCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtOTAtN0QgICAoaGV4KQkJTGFrZSBDb21tdW5pY2F0aW9ucwotMDA5MDdEICAgICAoYmFzZSAxNikJCUxha2UgQ29tbXVuaWNhdGlvbnMKLQkJCQlCZWVjaCBIb3VzZSwgR3JlZW5oaWxscyBSb2FkCi0JCQkJRHVibGluIDI0Ci0JCQkJSVJFTEFORAotCi0wMC05MC03RSAgIChoZXgpCQlWRVRST05JWCBDT1JQLgotMDA5MDdFICAgICAoYmFzZSAxNikJCVZFVFJPTklYIENPUlAuCi0JCQkJMjAzMCBBTEFNRURFIFBBRFJFIFNFUlJBCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtN0YgICAoaGV4KQkJV2F0Y2hHdWFyZCBUZWNobm9sb2dpZXMsIEluYy4KLTAwOTA3RiAgICAgKGJhc2UgMTYpCQlXYXRjaEd1YXJkIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTUwNSBGaWZ0aCBBdmUgU291dGgKLQkJCQlTdWl0ZSA1MDAKLQkJCQlTZWF0dGxlIFdBIDk4MTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC04MCAgIChoZXgpCQlOT1QgTElNSVRFRCwgSU5DLgotMDA5MDgwICAgICAoYmFzZSAxNikJCU5PVCBMSU1JVEVELCBJTkMuCi0JCQkJNTAwIEFMTEVSVE9OIFNUUkVFVCwgU1RFICMxMDIKLQkJCQlSRURXT09EIENJVFkgQ0EgOTQwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTgxICAgKGhleCkJCUFMT0hBIE5FVFdPUktTLCBJTkMuCi0wMDkwODEgICAgIChiYXNlIDE2KQkJQUxPSEEgTkVUV09SS1MsIElOQy4KLQkJCQkxMDAxQSBPJ1JFSUxMWSBBVkVOVUUKLQkJCQlQLk8uIEJPWCAyOTQ3MgotCQkJCVNBTiBGUkFOQ0lTQ08gQ0EgOTQxMjktMDQ3MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtODIgICAoaGV4KQkJRk9SQ0UgSU5TVElUVVRFCi0wMDkwODIgICAgIChiYXNlIDE2KQkJRk9SQ0UgSU5TVElUVVRFCi0JCQkJUEFSSyBBTExFIDM0NQotCQkJCURLLTI2MDUgQlJPRU5EQlkgIAotCQkJCURFTk1BUksKLQotMDAtOTAtODMgICAoaGV4KQkJVFVSQk8gQ09NTVVOSUNBVElPTiwgSU5DLgotMDA5MDgzICAgICAoYmFzZSAxNikJCVRVUkJPIENPTU1VTklDQVRJT04sIElOQy4KLQkJCQk0Ri0yLCBOTy4gMTcxLCBTVU5HLVRFSCBST0FECi0JCQkJVEFJUEVJICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTg0ICAgKGhleCkJCUFURUNIIFNZU1RFTQotMDA5MDg0ICAgICAoYmFzZSAxNikJCUFURUNIIFNZU1RFTQotCQkJCTRGIERBRUJPT05HIEJMREcuIDE0NTEtNzgKLQkJCQlTRU9DSE8tRE9ORyBTRU9DSE8tS1UKLQkJCQkgU0VPVUwgIDEzNy0wNzAgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC05MC04NSAgIChoZXgpCQlHT0xERU4gRU5URVJQUklTRVMsIElOQy4KLTAwOTA4NSAgICAgKGJhc2UgMTYpCQlHT0xERU4gRU5URVJQUklTRVMsIElOQy4KLQkJCQk0NDUwIFdFU1QgRUFVIEdBTExJRSBCTFZELgotCQkJCTI1MCBQRVJJTUVURVIgQ0VOVEVSCi0JCQkJTUVMQk9VUk5FIEZMIDMyOTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC04NiAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMDkwODYgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFIuIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC04NyAgIChoZXgpCQlJVElTCi0wMDkwODcgICAgIChiYXNlIDE2KQkJSVRJUwotCQkJCUNFTlRSRSBFU1BBQ0UgUEVSRk9STUFOQ0UKLQkJCQlBTFBIQVNJUy1CQVRJTUVOVCBDMQotCQkJCTM1NzY5IFNBSU5ULUdSRUdPSVJFIENFREVYICAKLQkJCQlGUkFOQ0UKLQotMDAtOTAtODggICAoaGV4KQkJQkFYQUxMIFNFQ1VSSVRZIExURC4KLTAwOTA4OCAgICAgKGJhc2UgMTYpCQlCQVhBTEwgU0VDVVJJVFkgTFRELgotCQkJCVVOSVQgMSBDQVNUTEVISUxMCi0JCQkJSE9SU0VGSUVMRCBXQVksIEJSRURCVVJZIFBBUksgSU5ELiBFc3RhdAotCQkJCVNUT0NLUE9SVCBHcmVhdCBCcml0YWluIFNLNiAyU1YgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtODkgICAoaGV4KQkJU09GVENPTSBNSUNST1NZU1RFTVMsIElOQy4KLTAwOTA4OSAgICAgKGJhc2UgMTYpCQlTT0ZUQ09NIE1JQ1JPU1lTVEVNUywgSU5DLgotCQkJCTQ3NTA5IFNFQUJSSURHRSBEUklWRQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLThBICAgKGhleCkJCUJBWUxZIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMDkwOEEgICAgIChiYXNlIDE2KQkJQkFZTFkgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMDUgR1JFRU4gQ09VUlQKLQkJCQlBSkFYIE9udGFyaW8gIEwxUyA2VzkgCi0JCQkJQ0FOQURBCi0KLTAwLTkwLThCICAgKGhleCkJCVRhdHRpbGUgU1JMIAotMDA5MDhCICAgICAoYmFzZSAxNikJCVRhdHRpbGUgU1JMIAotCQkJCTI2MDAgRmVybmJyb29rIExhbmUKLQkJCQlTdWl0ZSAxMzAKLQkJCQlQbHltb3V0aCBNTiA1NTQ0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOEMgICAoaGV4KQkJRVRSRU5EIEVMRUNUUk9OSUNTLCBJTkMuCi0wMDkwOEMgICAgIChiYXNlIDE2KQkJRVRSRU5EIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJMkYsIDIyIElORFVTVFJZIEUuIDlUSCBST0FECi0JCQkJSFNJTkNIVSBTQ0lFTkNFIFBBUksKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLThEICAgKGhleCkJCVZJQ0tFUlMgRUxFQ1RST05JQ1MgU1lTVEVNUwotMDA5MDhEICAgICAoYmFzZSAxNikJCVZJQ0tFUlMgRUxFQ1RST05JQ1MgU1lTVEVNUwotCQkJCTExNTEgVy4gTUFTT04tTU9SUk9XIFJELgotCQkJCUxFQkFOT04gT0ggNDUwMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLThFICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcyBCcm9hZGJhbmQgQWNjZXNzCi0wMDkwOEUgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzIEJyb2FkYmFuZCBBY2Nlc3MKLQkJCQkzOTY2MCBFdXJla2EgRHJpdmUKLQkJCQlOZXdhcmsgQ0EgOTQ1NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLThGICAgKGhleCkJCUFVRElPIENPREVTIExURC4KLTAwOTA4RiAgICAgKGJhc2UgMTYpCQlBVURJTyBDT0RFUyBMVEQuCi0JCQkJM0EgTkVUQU5ZQUhVIFNUUkVFVAotCQkJCU9SIFlFSFVEQSA2MDI1NiAgCi0JCQkJSVNSQUVMCi0KLTAwLTkwLTkwICAgKGhleCkJCUktQlVTCi0wMDkwOTAgICAgIChiYXNlIDE2KQkJSS1CVVMKLQkJCQk5MTc0IFNLWSBQQVJLIENPVVJUCi0JCQkJU0FOIERJRUdPIENBIDkyMTIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC05MSAgIChoZXgpCQlEaWdpdGFsU2NhcGUsIEluYy4KLTAwOTA5MSAgICAgKGJhc2UgMTYpCQlEaWdpdGFsU2NhcGUsIEluYy4KLQkJCQk2IE1PUkdBTiAgLSBTVEUuIzEwMAotCQkJCUlSVklORSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOTIgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MDkyICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJTS9TIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOTMgICAoaGV4KQkJTkFOQU8gQ09SUE9SQVRJT04KLTAwOTA5MyAgICAgKGJhc2UgMTYpCQlOQU5BTyBDT1JQT1JBVElPTgotCQkJCTE1MyBTSElNT0tBU0hJV0FOTywgTUFUVE8KLQkJCQlJU0hJS0FXQSA5MjQtODU2NiAgCi0JCQkJSkFQQU4KLQotMDAtOTAtOTQgICAoaGV4KQkJT1NQUkVZIFRFQ0hOT0xPR0lFUywgSU5DLgotMDA5MDk0ICAgICAoYmFzZSAxNikJCU9TUFJFWSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk2MDAgQUlSUE9SVCBCTFZELiAtIFNURS4gIzkwMAotCQkJCU1PUlJJU1ZJTExFIE5DIDI3NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC05NSAgIChoZXgpCQlVTklWRVJTQUwgQVZJT05JQ1MKLTAwOTA5NSAgICAgKGJhc2UgMTYpCQlVTklWRVJTQUwgQVZJT05JQ1MKLQkJCQkxMTM1MSBXSUxMT1dTIFJPQUQgTkUKLQkJCQlSRURNT05EIFdBIDk4MDUyLTI1NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTk2ICAgKGhleCkJCUFTS0VZIENPTVBVVEVSIENPUlAuCi0wMDkwOTYgICAgIChiYXNlIDE2KQkJQVNLRVkgQ09NUFVURVIgQ09SUC4KLQkJCQkyRiwgTk8uIDIsIExBTkUgNDk3Ci0JCQkJQ0hVTkctQ0hFTkcgUkQuLCBIU0lOLVRJRU4KLQkJCQlUQUlQRUkgIDIzMTM2ICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLTk3ICAgKGhleCkJCVN5Y2Ftb3JlIE5ldHdvcmtzCi0wMDkwOTcgICAgIChiYXNlIDE2KQkJU3ljYW1vcmUgTmV0d29ya3MKLQkJCQkyMjAgTWlsbCBSZAotCQkJCUNoZWxtc2ZvcmQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLTk4ICAgKGhleCkJCVNCQyBERVNJR05TLCBJTkMuCi0wMDkwOTggICAgIChiYXNlIDE2KQkJU0JDIERFU0lHTlMsIElOQy4KLQkJCQkzMDc3LUggTEVFTUFOIEZFUlJZIFJPQUQKLQkJCQlIVU5UU1ZJTExFIEFMIDM1ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC05OSAgIChoZXgpCQlBTExJRUQgVEVMRVNJUywgSy5LLgotMDA5MDk5ICAgICAoYmFzZSAxNikJCUFMTElFRCBURUxFU0lTLCBLLksuCi0JCQkJTk8uIDIgIFRPQyBCVUlMRElORywgNy0yMS0xMU5pc2hpLUdvdGFuZAotCQkJCVNoaW5hZ2F3YS1LdSBUb2t5byAxNDEgCi0JCQkJSkFQQU4KLQotMDAtOTAtOUEgICAoaGV4KQkJT05FIFdPUkxEIFNZU1RFTVMsIElOQy4KLTAwOTA5QSAgICAgKGJhc2UgMTYpCQlPTkUgV09STEQgU1lTVEVNUywgSU5DLgotCQkJCTExNDQgRUFTVCBBUlFVRVMgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC05QiAgIChoZXgpCQlJTUFKRQotMDA5MDlCICAgICAoYmFzZSAxNikJCUlNQUpFCi0JCQkJR8O2dGF2ZXJrc2dhdGFuIDZBCi0JCQkJR290aGVuYnVyZyAgNDE3IDU1Ci0JCQkJU1dFREVOCi0KLTAwLTkwLTlDICAgKGhleCkJCU1vdG9yb2xhLCBJbmMuCi0wMDkwOUMgICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYy4KLQkJCQkyNDUwIFdhbHNoIEF2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC05RCAgIChoZXgpCQlOb3ZhVGVjaCBQcm9jZXNzIFNvbHV0aW9ucywgTExDCi0wMDkwOUQgICAgIChiYXNlIDE2KQkJTm92YVRlY2ggUHJvY2VzcyBTb2x1dGlvbnMsIExMQwotCQkJCTExNTAwIENyb25yaWRnZSBEcml2ZQotCQkJCVN1aXRlIDExMAotCQkJCU93aW5ncyBNaWxscyBNRCAyMTExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOUUgICAoaGV4KQkJQ3JpdGljYWwgSU8sIExMQwotMDA5MDlFICAgICAoYmFzZSAxNikJCUNyaXRpY2FsIElPLCBMTEMKLQkJCQk0ODUgRS4gMTd0aCBTdHJlZXQKLQkJCQlTdWl0ZSAyMDEwCi0JCQkJQ29zdGEgTWVzYSBDQSA5MjYyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtOUYgICAoaGV4KQkJRElHSS1EQVRBIENPUlBPUkFUSU9OCi0wMDkwOUYgICAgIChiYXNlIDE2KQkJRElHSS1EQVRBIENPUlBPUkFUSU9OCi0JCQkJODkyMC1EIFJvdXRlIDEwOAotCQkJCUNvbHVtYmlhIE1EIDIxMDQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1BMCAgIChoZXgpCQk4WDggSU5DLgotMDA5MEEwICAgICAoYmFzZSAxNikJCThYOCBJTkMuCi0JCQkJMjQ0NSBNSVNTSU9OIENPTExFR0UgQkxWRC4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQTEgICAoaGV4KQkJRmx5aW5nIFBpZyBTeXN0ZW1zL0hpZ2ggRW5kIFN5c3RlbXMgSW5jLgotMDA5MEExICAgICAoYmFzZSAxNikJCUZseWluZyBQaWcgU3lzdGVtcy9IaWdoIEVuZCBTeXN0ZW1zIEluYy4KLQkJCQkyMTA1IEdyYWN5IEZhcm1zIExhbmUKLQkJCQlBdXN0aW4gVFggNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUEyICAgKGhleCkJCUNZQkVSVEFOIFRFQ0hOT0xPR1ksIElOQy4KLTAwOTBBMiAgICAgKGJhc2UgMTYpCQlDWUJFUlRBTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJQkxERy41MywgMTk1LTU2IFNFQy4gNCwKLQkJCQlDSFVORyBIU0lORyBST0FELAotCQkJCUNIVVRVTkcgSFNJTkNIVSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLUEzICAgKGhleCkJCUNvcmVjZXNzIEluYy4KLTAwOTBBMyAgICAgKGJhc2UgMTYpCQlDb3JlY2VzcyBJbmMuCi0JCQkJMTM1LTcyNiwgS2VvcHl1bmcgQi1Ub3duIDFGLCAyMDMsIE5vbmh5dQotCQkJCUthbmduYW0tZ3UsCi0JCQkJU2VvdWwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC05MC1BNCAgIChoZXgpCQlBTFRJR0EgTkVUV09SS1MKLTAwOTBBNCAgICAgKGJhc2UgMTYpCQlBTFRJR0EgTkVUV09SS1MKLQkJCQkxMjQgR1JPVkUgU1RSRUVUCi0JCQkJRlJBTktMSU4gTUEgMDIwMzgtMzIwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQTUgICAoaGV4KQkJU1BFQ1RSQSBMT0dJQwotMDA5MEE1ICAgICAoYmFzZSAxNikJCVNQRUNUUkEgTE9HSUMKLQkJCQkxNzAwIE4uIDU1VEggU1RSRUVUCi0JCQkJQk9VTERFUiBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQTYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MEE2ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLiAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQTcgICAoaGV4KQkJQ0xJRU5URUMgQ09SUE9SQVRJT04KLTAwOTBBNyAgICAgKGJhc2UgMTYpCQlDTElFTlRFQyBDT1JQT1JBVElPTgotCQkJCTgxNzUgUy4gVklSR0lOSUEgU1QuCi0JCQkJU1VJVEUgIzg1MC0yNDkKLQkJCQlSRU5PIE5WIDg5NTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1BOCAgIChoZXgpCQlOaW5lVGlsZXMgTmV0d29ya3MsIEx0ZC4KLTAwOTBBOCAgICAgKGJhc2UgMTYpCQlOaW5lVGlsZXMgTmV0d29ya3MsIEx0ZC4KLQkJCQk5IFN0YXRpb24gUm9hZAotCQkJCVdhdGVyYmVhY2ggQ2FtYnJpZGdlIENCNSA5SFQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC05MC1BOSAgIChoZXgpCQlXRVNURVJOIERJR0lUQUwKLTAwOTBBOSAgICAgKGJhc2UgMTYpCQlXRVNURVJOIERJR0lUQUwKLQkJCQkxNTk5IE5PUlRIIEJST0FEV0FZCi0JCQkJUk9DSEVTVEVSIE1OIDU1OTA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1BQSAgIChoZXgpCQlJTkRJR08gQUNUSVZFIFZJU0lPTiBTWVNURU1TIExJTUlURUQKLTAwOTBBQSAgICAgKGJhc2UgMTYpCQlJTkRJR08gQUNUSVZFIFZJU0lPTiBTWVNURU1TIExJTUlURUQKLQkJCQlUSEUgRURJTkJVUkdIIFRFQ0hOT1BPTEUKLQkJCQlCQVNIIExPQU4KLQkJCQlFZGluYnVyZ2ggRUgyNiBPUEogIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLTkwLUFCICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwOTBBQiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRSAgIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQUMgICAoaGV4KQkJT1BUSVZJU0lPTiwgSU5DLgotMDA5MEFDICAgICAoYmFzZSAxNikJCU9QVElWSVNJT04sIElOQy4KLQkJCQkzNDUwIEhJTExWSUVXIEFWRU5VRQotCQkJCVBBTE8gQUxUTyBDQSA5NDMwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQUQgICAoaGV4KQkJQVNQRUNUIEVMRUNUUk9OSUNTLCBJTkMuCi0wMDkwQUQgICAgIChiYXNlIDE2KQkJQVNQRUNUIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJMTI3NDAgRUFSSEFSVCBBVkUuCi0JCQkJQVVCVVJOIENBIDk1NjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1BRSAgIChoZXgpCQlJVEFMVEVMIFMucC5BLgotMDA5MEFFICAgICAoYmFzZSAxNikJCUlUQUxURUwgUy5wLkEuCi0JCQkJTE9DQUxJVEEnIEJPU0NIRVRUTwotCQkJCTY3MTAwIEwnQVFVSUxBICAKLQkJCQlJVEFMWQotCi0wMC05MC1BRiAgIChoZXgpCQlKLiBNT1JJVEEgTUZHLiBDT1JQLgotMDA5MEFGICAgICAoYmFzZSAxNikJCUouIE1PUklUQSBNRkcuIENPUlAuCi0JCQkJNjgwIEhJR0FTSElIQU1BIE1JTkFNSS1DSE8KLQkJCQlGVVNISU1JLUtVLCBLWU9UTyA2MTItODIxMyAKLQkJCQlKQVBBTgotCi0wMC05MC1CMCAgIChoZXgpCQlWQURFTQotMDA5MEIwICAgICAoYmFzZSAxNikJCVZBREVNCi0JCQkJMTk2MCBaQU5LRVIgUkQKLQkJCQlTQU4gSk9TRSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQjEgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MEIxICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSLiAtIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQjIgICAoaGV4KQkJQVZJQ0kgU1lTVEVNUyBJTkMuCi0wMDkwQjIgICAgIChiYXNlIDE2KQkJQVZJQ0kgU1lTVEVNUyBJTkMuCi0JCQkJMTIgRUxJWkFCRVRIIERSSVZFCi0JCQkJQ0hFTE1TRk9SRCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQjMgICAoaGV4KQkJQUdSQU5BVCBTWVNURU1TCi0wMDkwQjMgICAgIChiYXNlIDE2KQkJQUdSQU5BVCBTWVNURU1TCi0JCQkJMTM0NSBNQUlOIFNUUkVFVAotCQkJCVdBTFRIQU0gTUEgMDIxNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUI0ICAgKGhleCkJCVdJTExPV0JST09LIFRFQ0hOT0xPR0lFUwotMDA5MEI0ICAgICAoYmFzZSAxNikJCVdJTExPV0JST09LIFRFQ0hOT0xPR0lFUwotCQkJCTcxMjAgSEFZVkVOSFVSU1QgQVZFLi1TVEUuIzQwMQotCQkJCVZBTiBOVVlTIENBIDkxNDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1CNSAgIChoZXgpCQlOSUtPTiBDT1JQT1JBVElPTgotMDA5MEI1ICAgICAoYmFzZSAxNikJCU5JS09OIENPUlBPUkFUSU9OCi0JCQkJRWxlY3Ryb25pYyBJbWFnaW5nIERpdmlzaW9uLCBEZXNpZ25pbmcgRAotCQkJCTEtNi0zLCBOSVNISS1PSEksIFNISU5BR0FXQS1LVQotCQkJCVRPS1lPIDE0MC04NjAxICAKLQkJCQlKQVBBTgotCi0wMC05MC1CNiAgIChoZXgpCQlGSUJFWCBTWVNURU1TCi0wMDkwQjYgICAgIChiYXNlIDE2KQkJRklCRVggU1lTVEVNUwotCQkJCTUzNTAgT0xEIFJFRFdPT0QgSElHSFdBWQotCQkJCVBFVEFMVU1BIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1CNyAgIChoZXgpCQlESUdJVEFMIExJR0hUV0FWRSwgSU5DLgotMDA5MEI3ICAgICAoYmFzZSAxNikJCURJR0lUQUwgTElHSFRXQVZFLCBJTkMuCi0JCQkJNjAxIENMRVZFTEFORCBTVFJFRVQtIDVUSCBGTC4KLQkJCQlDTEVBUldBVEVSIEZMIDMzNzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1COCAgIChoZXgpCQlST0hERSAmIFNDSFdBUlogR01CSCAmIENPLiBLRwotMDA5MEI4ICAgICAoYmFzZSAxNikJCVJPSERFICYgU0NIV0FSWiBHTUJIICYgQ08uIEtHCi0JCQkJUE9TVEZBQ0g6IDgwIDE0IDY5L0FCVC46IDNDSwotCQkJCUQtODE2MTQgTVVOQ0hFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC05MC1COSAgIChoZXgpCQlCRVJBTiBJTlNUUlVNRU5UUyBMVEQuCi0wMDkwQjkgICAgIChiYXNlIDE2KQkJQkVSQU4gSU5TVFJVTUVOVFMgTFRELgotCQkJCUhBVENITU9PUiBJTkRVU1RSSUFMIEVTVEFURQotCQkJCVRPUlJJTkdUT04KLQkJCQlOIERFVk9OIEVYMzggN0hQICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC05MC1CQSAgIChoZXgpCQlWQUxJRCBORVRXT1JLUywgSU5DLgotMDA5MEJBICAgICAoYmFzZSAxNikJCVZBTElEIE5FVFdPUktTLCBJTkMuCi0JCQkJNiBDUk9NV0VMTCAjMTAyCi0JCQkJSVJWSU5FIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1CQiAgIChoZXgpCQlUQUlORVQgQ09NTVVOSUNBVElPTiBTWVNURU0gQ29ycC4KLTAwOTBCQiAgICAgKGJhc2UgMTYpCQlUQUlORVQgQ09NTVVOSUNBVElPTiBTWVNURU0gQ29ycC4KLQkJCQkzIEZMLCBOTy4gNiwgQUxMRVkgMjMsIExBTkUgOTEgU0VDLiAxCi0JCQkJTmVpLUh1IFJvYWQKLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtOTAtQkMgICAoaGV4KQkJVEVMRU1BTk4gQ08uLCBMVEQuCi0wMDkwQkMgICAgIChiYXNlIDE2KQkJVEVMRU1BTk4gQ08uLCBMVEQuCi0JCQkJNkYgRE9OR1NJTiBCTERHLgotCQkJCTU0MywgRE9HT0stRE9ORywgS0FOR05BTS1LVQotCQkJCVNFT1VMLCAxMzUtMjcwICAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtOTAtQkQgICAoaGV4KQkJT01OSUEgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwOTBCRCAgICAgKGJhc2UgMTYpCQlPTU5JQSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTEwMCBOSUNLRVJTT04gUk9BRAotCQkJCU1BUkxCT1JPVUdIIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1CRSAgIChoZXgpCQlJQkMvSU5URUdSQVRFRCBCVVNJTkVTUyBDT01QVVRFUlMKLTAwOTBCRSAgICAgKGJhc2UgMTYpCQlJQkMvSU5URUdSQVRFRCBCVVNJTkVTUyBDT01QVVRFUlMKLQkJCQkyNjg1IEMgUEFSSyBDRU5URVIgRFJJVkUKLQkJCQlTSU1JIFZBTExFWSBDQSA5MzA2NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQkYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MEJGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFICAgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1DMCAgIChoZXgpCQlLLkouIExBVyBFTkdJTkVFUlMsIElOQy4KLTAwOTBDMCAgICAgKGJhc2UgMTYpCQlLLkouIExBVyBFTkdJTkVFUlMsIElOQy4KLQkJCQk0MjMwMCBXLiBOSU5FIE1JTEUgUk9BRAotCQkJCU5PVkkgTUkgNDgzNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUMxICAgKGhleCkJCVBlY28gSUksIEluYy4KLTAwOTBDMSAgICAgKGJhc2UgMTYpCQlQZWNvIElJLCBJbmMuCi0JCQkJNzA2MCBIdW50bGV5IFJvYWQKLQkJCQlDb2x1bWJ1cyBPSCA0MzIyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQzIgICAoaGV4KQkJSksgbWljcm9zeXN0ZW1zLCBJbmMuCi0wMDkwQzIgICAgIChiYXNlIDE2KQkJSksgbWljcm9zeXN0ZW1zLCBJbmMuCi0JCQkJMTI3NSBZVUJBIEFWRU5VRQotCQkJCVNBTiBQQUJMTyBDQSA5NDgwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQzMgICAoaGV4KQkJVE9QSUMgU0VNSUNPTkRVQ1RPUiBDT1JQLgotMDA5MEMzICAgICAoYmFzZSAxNikJCVRPUElDIFNFTUlDT05EVUNUT1IgQ09SUC4KLQkJCQkxMUYtMSwgTk8uIDIsIFdVLUxJTiBSRC4KLQkJCQlIU0lOLUNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1DNCAgIChoZXgpCQlKQVZFTElOIFNZU1RFTVMsIElOQy4KLTAwOTBDNCAgICAgKGJhc2UgMTYpCQlKQVZFTElOIFNZU1RFTVMsIElOQy4KLQkJCQkxODgxIExBTkdMRVkgQVZFLgotCQkJCUlSVklORSBDQSA5MjYxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQzUgICAoaGV4KQkJSU5URVJORVQgTUFHSUMsIElOQy4KLTAwOTBDNSAgICAgKGJhc2UgMTYpCQlJTlRFUk5FVCBNQUdJQywgSU5DLgotCQkJCTY0NTAgTFVTSyBCTFZELi1TVEUuICNFLTIwMQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtQzYgICAoaGV4KQkJT1BUSU0gU1lTVEVNUywgSU5DLgotMDA5MEM2ICAgICAoYmFzZSAxNikJCU9QVElNIFNZU1RFTVMsIElOQy4KLQkJCQk4MjAxIEdSRUVOU0JPUk8gRFIuLVNURS4gIzEwMDAKLQkJCQlNQ0xFQU4gVkEgMjIxMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUM3ICAgKGhleCkJCUlDT00gSU5DLgotMDA5MEM3ICAgICAoYmFzZSAxNikJCUlDT00gSU5DLgotCQkJCTYtOS0xNiBLQU1JSElHQVNISQotCQkJCUhJUkFOTy1LVSwgT1NBS0EgIAotCQkJCUpBUEFOCi0KLTAwLTkwLUM4ICAgKGhleCkJCVdBVkVSSURFUiBDT01NVU5JQ0FUSU9OUyAoQ0FOQURBKSBJTkMuCi0wMDkwQzggICAgIChiYXNlIDE2KQkJV0FWRVJJREVSIENPTU1VTklDQVRJT05TIChDQU5BREEpIElOQy4KLQkJCQkKLQkJCQlCcml0aXNoIENvbHVtYmlhIFYxRSA0UjkgCi0JCQkJQ0FOQURBCi0KLTAwLTkwLUM5ICAgKGhleCkJCURQQUMgVGVjaG5vbG9naWVzCi0wMDkwQzkgICAgIChiYXNlIDE2KQkJRFBBQyBUZWNobm9sb2dpZXMKLQkJCQk3MzIxIExpbmNvbG4gV2F5Ci0JCQkJR2FyZGVuIEdyb3ZlIENBIDkyODQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1DQSAgIChoZXgpCQlBQ0NPUkQgVklERU8gVEVMRUNPTU1VTklDQVRJT05TLCBMVEQuCi0wMDkwQ0EgICAgIChiYXNlIDE2KQkJQUNDT1JEIFZJREVPIFRFTEVDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCTEwLCBNQVJUSU4gR0VITCBTVFIsIFBPIEJPWCAzNTY0Ci0JCQkJUGV0YWNoLVRpa3ZhIDQ5MTMwICAKLQkJCQlJU1JBRUwKLQotMDAtOTAtQ0IgICAoaGV4KQkJV2lyZWxlc3MgT25MaW5lLCBJbmMuCi0wMDkwQ0IgICAgIChiYXNlIDE2KQkJV2lyZWxlc3MgT25MaW5lLCBJbmMuCi0JCQkJNDQxMCBFTCBDQU1JTk8gUkVBTCwgIFNURSAjMTAxCi0JCQkJTE9TIEFMVE9TIENBIDk0MDIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1DQyAgIChoZXgpCQlQbGFuZXggQ29tbXVuaWNhdGlvbnMKLTAwOTBDQyAgICAgKGJhc2UgMTYpCQlQbGFuZXggQ29tbXVuaWNhdGlvbnMKLQkJCQkyRiBGRU5JU1NBWSBFYmlzdSBCbGRnCi0JCQkJMy0xNi0zIEhpZ2FzaGksCi0JCQkJU2hpYnV5YS1rdSwgVG9reW8gMTUwLTAwMTEKLQkJCQlKQVBBTgotCi0wMC05MC1DRCAgIChoZXgpCQlFTlQtRU1QUkVTQSBOQUNJT05BTCBERSBURUxFQ09NTVVOSUNBQ09FUywgUy5BLgotMDA5MENEICAgICAoYmFzZSAxNikJCUVOVC1FTVBSRVNBIE5BQ0lPTkFMIERFIFRFTEVDT01NVU5JQ0FDT0VTLCBTLkEuCi0JCQkJUi4gRU5HIEZSRURFUklDTyBVTFJJQ0ggLSAgQVBBUlRBRE8gMzA4MQotCQkJCUd1YXJkZWlyYXMgLSA0NDcwIE1vcmVpcmEgTWFpYSAgCi0JCQkJUE9SVFVHQUwKLQotMDAtOTAtQ0UgICAoaGV4KQkJVEVUUkEgR21iSAotMDA5MENFICAgICAoYmFzZSAxNikJCVRFVFJBIEdtYkgKLQkJCQlHRVdFUkJFUEFSSyAiQW1XYWxkIiA0Ci0JCQkJRC05ODY5MyBJTE1FTkFVICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTkwLUNGICAgKGhleCkJCU5PUlRFTAotMDA5MENGICAgICAoYmFzZSAxNikJCU5PUlRFTAotCQkJCTI1MCBTSURORVkgU1RSRUVUCi0JCQkJQmVsbGV2aWxsZSBPbnRhcmlvIEs4TiA1QjcgCi0JCQkJQ0FOQURBCi0KLTAwLTkwLUQwICAgKGhleCkJCVRob21zb24gVGVsZWNvbSBCZWxnaXVtCi0wMDkwRDAgICAgIChiYXNlIDE2KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3Ci0JCQkJQi0yNjUwIEVERUdFTSAgCi0JCQkJQkVMR0lVTQotCi0wMC05MC1EMSAgIChoZXgpCQlMRUlDSFUgRU5URVJQUklTRSBDTy4sIExURC4KLTAwOTBEMSAgICAgKGJhc2UgMTYpCQlMRUlDSFUgRU5URVJQUklTRSBDTy4sIExURC4KLQkJCQk4RiwgTk8uIDIwMywgUEEtVEVIIFJPQUQsIFNFQy4yCi0JCQkJVEFJUEVJIENJVFkKLQkJCQlUQUlXQU4gCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1EMiAgIChoZXgpCQlBUlRFTCBWSURFTyBTWVNURU1TCi0wMDkwRDIgICAgIChiYXNlIDE2KQkJQVJURUwgVklERU8gU1lTVEVNUwotCQkJCTIzNyBDRURBUiBISUxMIFNULgotCQkJCU1BUkxCT1JPIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1EMyAgIChoZXgpCQlHSUVTRUNLRSAmIERFVlJJRU5UIEdtYkgKLTAwOTBEMyAgICAgKGJhc2UgMTYpCQlHSUVTRUNLRSAmIERFVlJJRU5UIEdtYkgKLQkJCQlQUklOWlJFR0VOVEVOU1RSQVNTRSAxNTkKLQkJCQlELTgxNjc3ICBNVU5DSEVOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLTkwLUQ0ICAgKGhleCkJCUJpbmRWaWV3IERldmVsb3BtZW50IENvcnAuCi0wMDkwRDQgICAgIChiYXNlIDE2KQkJQmluZFZpZXcgRGV2ZWxvcG1lbnQgQ29ycC4KLQkJCQkzMzU1IFdFU1QgQUxBQkFNQSAjMTIwMAotCQkJCUhPVVNUT04gVFggNzcwOTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUQ1ICAgKGhleCkJCUVVUEhPTklYLCBJTkMuCi0wMDkwRDUgICAgIChiYXNlIDE2KQkJRVVQSE9OSVgsIElOQy4KLQkJCQkyMjAgUE9SVEFHRSBBVkUuCi0JCQkJUEFMTyBBTFRPIENBIDk0MzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1ENiAgIChoZXgpCQlDUllTVEFMIEdST1VQCi0wMDkwRDYgICAgIChiYXNlIDE2KQkJQ1JZU1RBTCBHUk9VUAotCQkJCTg1MCBLQUNFTkEgUkQuCi0JCQkJSElBV0FUSEEgSUEgNTIyMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUQ3ICAgKGhleCkJCU5ldEJvb3N0IENvcnAuCi0wMDkwRDcgICAgIChiYXNlIDE2KQkJTmV0Qm9vc3QgQ29ycC4KLQkJCQkzOTAgQ0FNQlJJREdFIEFWRU5VRQotCQkJCVBBTE8gQUxUTyBDQSA5NDMwNi0xNTA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1EOCAgIChoZXgpCQlXSElURUNST1NTIFNZU1RFTVMKLTAwOTBEOCAgICAgKGJhc2UgMTYpCQlXSElURUNST1NTIFNZU1RFTVMKLQkJCQkzQSBXQVRFUlNJREUgUEFSSywgQ09PS0hBTSBSRAotCQkJCUJSQUNLTkVMTAotCQkJCUJFUktTSElSRSBSRzEyIDFSQiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtOTAtRDkgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MEQ5ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJTS9TLyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLURBICAgKGhleCkJCURZTkFSQywgSU5DLgotMDA5MERBICAgICAoYmFzZSAxNikJCURZTkFSQywgSU5DLgotCQkJCTE4ODcgTEFORElOR1MgRFJJVkUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1EQiAgIChoZXgpCQlORVhUIExFVkVMIENPTU1VTklDQVRJT05TCi0wMDkwREIgICAgIChiYXNlIDE2KQkJTkVYVCBMRVZFTCBDT01NVU5JQ0FUSU9OUwotCQkJCTYwODUgU1RBVEUgRkFSTSBEUklWRQotCQkJCVJPSE5FUlQgUEFSSyBDQSA5NDkyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtREMgICAoaGV4KQkJVEVDTyBJTkZPUk1BVElPTiBTWVNURU1TCi0wMDkwREMgICAgIChiYXNlIDE2KQkJVEVDTyBJTkZPUk1BVElPTiBTWVNURU1TCi0JCQkJQ08uLCBMVEQuCi0JCQkJMjg0MSBKVU5DVElPTiBBVkUuLCBTVEUuICMxMTYKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtREQgICAoaGV4KQkJVEhFIE1JSEFSVSBDT01NVU5JQ0FUSU9OUyBDTy4sIExURC4KLTAwOTBERCAgICAgKGJhc2UgMTYpCQlUSEUgTUlIQVJVIENPTU1VTklDQVRJT05TIENPLiwgTFRELgotCQkJCQotCQkJCTEyODUsIElXQVNFLCBLQU1BS1VSQS1DSVRZCi0JCQkJS0FOQUdBV0EgIAotCQkJCUpBUEFOCi0KLTAwLTkwLURFICAgKGhleCkJCUNBUkRLRVkgU1lTVEVNUywgSU5DLgotMDA5MERFICAgICAoYmFzZSAxNikJCUNBUkRLRVkgU1lTVEVNUywgSU5DLgotCQkJCTE3NTcgVEFQTyBDQU5ZT04gUk9BRAotCQkJCVNJTUkgVkFMTEVZIENBIDkzMDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1ERiAgIChoZXgpCQlNSVRTVUJJU0hJIENIRU1JQ0FMIEFNRVJJQ0EsIElOQy4KLTAwOTBERiAgICAgKGJhc2UgMTYpCQlNSVRTVUJJU0hJIENIRU1JQ0FMIEFNRVJJQ0EsIElOQy4KLQkJCQk0NDUgSU5ESU8gV0FZCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1FMCAgIChoZXgpCQlTWVNUUkFOIENPUlAuCi0wMDkwRTAgICAgIChiYXNlIDE2KQkJU1lTVFJBTiBDT1JQLgotCQkJCTQxMjYgTElOREVOIEFWRU5VRQotCQkJCURBWVRPTiBPSCA0NTQzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRTEgICAoaGV4KQkJVEVMRU5BIFMuUC5BLgotMDA5MEUxICAgICAoYmFzZSAxNikJCVRFTEVOQSBTLlAuQS4KLQkJCQlWSUEgU0FWT05BLCAxNDYKLQkJCQkyMDE0NCBNSUxBTk8gIAotCQkJCUlUQUxZCi0KLTAwLTkwLUUyICAgKGhleCkJCURJU1RSSUJVVEVEIFBST0NFU1NJTkcgVEVDSE5PTE9HWQotMDA5MEUyICAgICAoYmFzZSAxNikJCURJU1RSSUJVVEVEIFBST0NFU1NJTkcgVEVDSE5PTE9HWQotCQkJCTE0MCBDQU5EQUNFIERSSVZFCi0JCQkJT1JMQU5ETyBGTCAzMjc1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRTMgICAoaGV4KQkJQVZFWCBFTEVDVFJPTklDUyBJTkMuCi0wMDkwRTMgICAgIChiYXNlIDE2KQkJQVZFWCBFTEVDVFJPTklDUyBJTkMuCi0JCQkJNDgwNyBCUkFERk9SRCBEUklWRQotCQkJCUhVTlRTVklMTEUgQUwgMzU4MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUU0ICAgKGhleCkJCU5FQyBBTUVSSUNBLCBJTkMuCi0wMDkwRTQgICAgIChiYXNlIDE2KQkJTkVDIEFNRVJJQ0EsIElOQy4KLQkJCQkzMTAwIE4uRS4gU0hVVEUgUk9BRAotCQkJCUhJTExTQk9STyBPUiA5NzEyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRTUgICAoaGV4KQkJVEVLTkVNQSwgSU5DLgotMDA5MEU1ICAgICAoYmFzZSAxNikJCVRFS05FTUEsIElOQy4KLQkJCQkyNjU2IEUuIEJBWVNIT1JFIFJPQUQKLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUU2ICAgKGhleCkJCUFMaSBDb3Jwb3JhdGlvbgotMDA5MEU2ICAgICAoYmFzZSAxNikJCUFMaSBDb3Jwb3JhdGlvbgotCQkJCTZGLCAyNDYgTmVpSHUgUm9hZCwgU2VjLiAxCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLUU3ICAgKGhleCkJCUhPUlNDSCBFTEVLVFJPTklLIEFHCi0wMDkwRTcgICAgIChiYXNlIDE2KQkJSE9SU0NIIEVMRUtUUk9OSUsgQUcKLQkJCQlIQUFHRVJTVFJBU1NFCi0JCQkJUE9TVEZBQ0gKLQkJCQlDSC05NDczIEdBTVMgIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLTkwLUU4ICAgKGhleCkJCU1PWEEgVEVDSE5PTE9HSUVTIENPUlAuLCBMVEQuCi0wMDkwRTggICAgIChiYXNlIDE2KQkJTU9YQSBURUNITk9MT0dJRVMgQ09SUC4sIExURC4KLQkJCQk3RiwgTk8uIDIsIEFMWTYsIExOIDIzNQotCQkJCVBBTy1DSElBTyBSRCwKLQkJCQlTSElFTkctVElFTiBDSVRZIFRBSVBFSSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLTkwLUU5ICAgKGhleCkJCUpBTlogQ09NUFVURVIgQUcKLTAwOTBFOSAgICAgKGJhc2UgMTYpCQlKQU5aIENPTVBVVEVSIEFHCi0JCQkJSW0gRMO2cmVuZXIgRmVsZCA4Ci0JCQkJRC0zMzEwMCBQYWRlcmJvcm4gCi0JCQkJR0VSTUFOWQotCi0wMC05MC1FQSAgIChoZXgpCQlBTFBIQSBURUNITk9MT0dJRVMsIElOQy4KLTAwOTBFQSAgICAgKGJhc2UgMTYpCQlBTFBIQSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkzNzY3IEFMUEhBIFdBWQotCQkJCUJFTExJTkdIQU0gV0EgOTgyMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUVCICAgKGhleCkJCVNFTlRSWSBURUxFQ09NIFNZU1RFTVMKLTAwOTBFQiAgICAgKGJhc2UgMTYpCQlTRU5UUlkgVEVMRUNPTSBTWVNURU1TCi0JCQkJODY2NCBDT01NRVJDRSBDT1VSVAotCQkJCUJVUk5BQlkgQkMgVjVBIDRONyAKLQkJCQlDQU5BREEKLQotMDAtOTAtRUMgICAoaGV4KQkJUFlSRVNDT00KLTAwOTBFQyAgICAgKGJhc2UgMTYpCQlQWVJFU0NPTQotCQkJCTMgQUxMRUUgRFUgTU9VTElOCi0JCQkJNjY2ODAgQ0FOT0hFUyAgCi0JCQkJRlJBTkNFCi0KLTAwLTkwLUVEICAgKGhleCkJCUNFTlRSQUwgU1lTVEVNIFJFU0VBUkNIIENPLiwgTFRELgotMDA5MEVEICAgICAoYmFzZSAxNikJCUNFTlRSQUwgU1lTVEVNIFJFU0VBUkNIIENPLiwgTFRELgotCQkJCTQtMTMtMiBISVlPU0hJQ0hPCi0JCQkJS09LVUJVTkpJLUNJVFkgVE9LWU8gMTg1MDAwMzIgCi0JCQkJSkFQQU4KLQotMDAtOTAtRUUgICAoaGV4KQkJUEVSU09OQUwgQ09NTVVOSUNBVElPTlMgVEVDSE5PTE9HSUVTCi0wMDkwRUUgICAgIChiYXNlIDE2KQkJUEVSU09OQUwgQ09NTVVOSUNBVElPTlMgVEVDSE5PTE9HSUVTCi0JCQkJNTAgU1RJTEVTIFJPQUQKLQkJCQlTQUxFTSBOSCAwMzA3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRUYgICAoaGV4KQkJSU5URUdSSVgsIElOQy4KLTAwOTBFRiAgICAgKGJhc2UgMTYpCQlJTlRFR1JJWCwgSU5DLgotCQkJCTIwMDEgQ09SUE9SQVRFIENFTlRFUiBEUklWRQotCQkJCU5FV0JVUlkgUEFSSyBDQSA5MTMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRjAgICAoaGV4KQkJSGFybW9uaWMgVmlkZW8gU3lzdGVtcyBMdGQuCi0wMDkwRjAgICAgIChiYXNlIDE2KQkJSGFybW9uaWMgVmlkZW8gU3lzdGVtcyBMdGQuCi0JCQkJMTkgQUxPTiBIQVRBVk9SIFNUUkVFVAotCQkJCVpvbmUgMywgUE8gQm94IDM2MDAKLQkJCQlDQUVTQVJFQSAgSW5kdXN0cmlhbCBQYXJrICAzODkwMAotCQkJCUlTUkFFTAotCi0wMC05MC1GMSAgIChoZXgpCQlET1QgSElMTCBTWVNURU1TIENPUlBPUkFUSU9OCi0wMDkwRjEgICAgIChiYXNlIDE2KQkJRE9UIEhJTEwgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTYzMDUgRWwgQ2FtaW5vIFJlYWwKLQkJCQlDYXJsc2JhZCBDQSA5MjAwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRjIgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDA5MEYyICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFIC0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1GMyAgIChoZXgpCQlBU1BFQ1QgQ09NTVVOSUNBVElPTlMKLTAwOTBGMyAgICAgKGJhc2UgMTYpCQlBU1BFQ1QgQ09NTVVOSUNBVElPTlMKLQkJCQkxMzEwIFJpZGRlciBQYXJrIERyaXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEtMjMxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRjQgICAoaGV4KQkJTElHSFROSU5HIElOU1RSVU1FTlRBVElPTgotMDA5MEY0ICAgICAoYmFzZSAxNikJCUxJR0hUTklORyBJTlNUUlVNRU5UQVRJT04KLQkJCQlCT1ZFUkVTU0VTIDUwCi0JCQkJMTAxMCBMQVVTQU5ORSAgCi0JCQkJU1dJVFpFUkxBTkQKLQotMDAtOTAtRjUgICAoaGV4KQkJQ0xFVk8gQ08uCi0wMDkwRjUgICAgIChiYXNlIDE2KQkJQ0xFVk8gQ08uCi0JCQkJMzUsIFdVLUdPTiA2VEggUk9BRAotCQkJCVdVLUtVIElORFVTVFJJQUwgUEFSSwotCQkJCVRBSVBFSSBIU0lFTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1GNiAgIChoZXgpCQlFU0NBTEFURSBORVRXT1JLUywgSU5DLgotMDA5MEY2ICAgICAoYmFzZSAxNikJCUVTQ0FMQVRFIE5FVFdPUktTLCBJTkMuCi0JCQkJNiBIVUdIRVMKLQkJCQlJUlZJTkUgQ0EgOTI2MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkwLUY3ICAgKGhleCkJCU5CQVNFIENPTU1VTklDQVRJT05TIExURC4KLTAwOTBGNyAgICAgKGJhc2UgMTYpCQlOQkFTRSBDT01NVU5JQ0FUSU9OUyBMVEQuCi0JCQkJSU5EVVNUUklBTCBQQVJLCi0JCQkJWU9RTkVBTSBJTElUIFAuTy4gQk9YIDExNAotCQkJCUlTUkFFTAotCi0wMC05MC1GOCAgIChoZXgpCQlNRURJQVRSSVggVEVMRUNPTQotMDA5MEY4ICAgICAoYmFzZSAxNikJCU1FRElBVFJJWCBURUxFQ09NCi0JCQkJNDIyOSBHQVJMT0NLCi0JCQkJU0hFUkJST09LRQotCQkJCVFVRUJFQyBKMUwgMkM4ICAKLQkJCQlDQU5BREEKLQotMDAtOTAtRjkgICAoaGV4KQkJTEVJVENICi0wMDkwRjkgICAgIChiYXNlIDE2KQkJTEVJVENICi0JCQkJMTAgRFlBUyBST0FECi0JCQkJRE9OIE1JTExTCi0JCQkJT05UQVJJTyBNM0IgMVY1ICAKLQkJCQlDQU5BREEKLQotMDAtOTAtRkEgICAoaGV4KQkJRU1VTEVYIENvcnAKLTAwOTBGQSAgICAgKGJhc2UgMTYpCQlFTVVMRVggQ29ycAotCQkJCTMzMzMgU3VzYW4gU3RyZWV0Ci0JCQkJQ29zdGEgTWVzYSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtOTAtRkIgICAoaGV4KQkJUE9SVFdFTEwsIElOQy4KLTAwOTBGQiAgICAgKGJhc2UgMTYpCQlQT1JUV0VMTCwgSU5DLgotCQkJCTdGLTQsIE5PLiAxNjAsIFNFQy4gNgotCQkJCU1JTkctQ0hVQU5HIEUuIFJELgotCQkJCVRBSVBFSSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05MC1GQyAgIChoZXgpCQlORVRXT1JLIENPTVBVVElORyBERVZJQ0VTCi0wMDkwRkMgICAgIChiYXNlIDE2KQkJTkVUV09SSyBDT01QVVRJTkcgREVWSUNFUwotCQkJCTMwMSBSQVZFTkRBTEUgRFJJVkUKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1GRCAgIChoZXgpCQlDb3BwZXJDb20sIEluYy4KLTAwOTBGRCAgICAgKGJhc2UgMTYpCQlDb3BwZXJDb20sIEluYy4KLQkJCQkzMjU1LTEgU0NPVFQgQkxWRC4sLS1TVEUuIzEwMwotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MC1GRSAgIChoZXgpCQlFTEVDT00gQ08uLCBMVEQuICAoTEFORUVEIERJVi4pCi0wMDkwRkUgICAgIChiYXNlIDE2KQkJRUxFQ09NIENPLiwgTFRELiAgKExBTkVFRCBESVYuKQotCQkJCVNVTUlUT01PIEZVRE9TQU4KLQkJCQlISUdBU0hJIElLRUJVS1VSTyBCTERHLiA2RiwgMy0xMy0yIEhJR0FTCi0JCQkJVE9TSElNQS1LVSBUT0tZTyAxNzAtMDAxMyAKLQkJCQlKQVBBTgotCi0wMC05MC1GRiAgIChoZXgpCQlURUxMVVMgVEVDSE5PTE9HWSBJTkMuCi0wMDkwRkYgICAgIChiYXNlIDE2KQkJVEVMTFVTIFRFQ0hOT0xPR1kgSU5DLgotCQkJCTQwOTkwIEVOQ1lDTE9QRURJQSBDSVIuCi0JCQkJRlJFTU9OVCBDQSA5NDUzOC0yNDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05MS1ENiAgIChoZXgpCQlDcnlzdGFsIEdyb3VwLCBJbmMuCi0wMDkxRDYgICAgIChiYXNlIDE2KQkJQ3J5c3RhbCBHcm91cCwgSW5jLgotCQkJCTg1MCBLYWNlbmEgUmQuCi0JCQkJSGlhd2F0aGEgSUEgNTIyMzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkxLUZBICAgKGhleCkJCVN5bmFwc2UgUHJvZHVjdCBEZXZlbG9wbWVudAotMDA5MUZBICAgICAoYmFzZSAxNikJCVN5bmFwc2UgUHJvZHVjdCBEZXZlbG9wbWVudAotCQkJCTE1MTEgNnRoIEF2ZQotCQkJCVN1aXRlIDQwMAotCQkJCVNlYXR0bGUgV0EgOTgxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLTkzLTYzICAgKGhleCkJCVVuaS1MaW5rIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0wMDkzNjMgICAgIChiYXNlIDE2KQkJVW5pLUxpbmsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk3LTUsIE5vLjY2LCBTZWMuMiwgTmFuLUthbiBSZC4sIEx1LUNodSBIc2lhbmcsCi0JCQkJVGFveXVhbiAgMzM4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC05Ny1GRiAgIChoZXgpCQlIZWltYW5uIFNlbnNvciBHbWJICi0wMDk3RkYgICAgIChiYXNlIDE2KQkJSGVpbWFubiBTZW5zb3IgR21iSAotCQkJCUdyZW56c3RyYXNzZSAyMgotCQkJCURyZXNkZW4gU2FjaHNlbiAwMTEwOQotCQkJCUdFUk1BTlkKLQotMDAtOUMtMDIgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTAwOUMwMiAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC05RC04RSAgIChoZXgpCQlDQVJESUFDIFJFQ09SREVSUywgSU5DLgotMDA5RDhFICAgICAoYmFzZSAxNikJCUNBUkRJQUMgUkVDT1JERVJTLCBJTkMuCi0JCQkJMzQgU0NBUkJPUk8gUk9BRAotCQkJCUxPTkRPTiAgTjQgNEwgVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtMDAgICAoaGV4KQkJQ0VOVElMTElPTiBORVRXT1JLUywgSU5DLgotMDBBMDAwICAgICAoYmFzZSAxNikJCUNFTlRJTExJT04gTkVUV09SS1MsIElOQy4KLQkJCQkzNTkgUkFWRU5EQUxFIERSSVZFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMDEgICAoaGV4KQkJRFJTIFNpZ25hbCBTb2x1dGlvbnMKLTAwQTAwMSAgICAgKGJhc2UgMTYpCQlEUlMgU2lnbmFsIFNvbHV0aW9ucwotCQkJCTcwMCBRdWluY2UgT3JjaGFyZCBSb2FkCi0JCQkJR2FpdGhlcnNidXJnIE1EIDIwODc4LTE3OTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTAyICAgKGhleCkJCUxFRURTICYgTk9SVEhSVVAgQVVTVFJBTElBIFBUWSBMVEQKLTAwQTAwMiAgICAgKGJhc2UgMTYpCQlMRUVEUyAmIE5PUlRIUlVQIEFVU1RSQUxJQSBQVFkgTFRECi0JCQkJUE8gQk9YIDQwMDkKLQkJCQlFSUdIVCBNSUxFIFBMQUlOUyAgUUxEIDQxMTMgIAotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC0wMyAgIChoZXgpCQlTaWVtZW5zIFN3aXR6ZXJsYW5kIEx0ZC4sIEkgQiBUIEhWUAotMDBBMDAzICAgICAoYmFzZSAxNikJCVNpZW1lbnMgU3dpdHplcmxhbmQgTHRkLiwgSSBCIFQgSFZQCi0JCQkJQnVpbGRpbmcgVGVjaG5vbG9naWVzIERpdmlzaW9uLCBJbnRlcm5hdGlvbmFsIEhlYWRxdWFydGVycwotCQkJCUkgQlQgSFZQIFNZUyBSRCBFVSBHdWJlbHN0cmFzc2UgMjIKLQkJCQladWcgIDYzMDEKLQkJCQlTV0lUWkVSTEFORAotCi0wMC1BMC0wNCAgIChoZXgpCQlORVRQT1dFUiwgSU5DLgotMDBBMDA0ICAgICAoYmFzZSAxNikJCU5FVFBPV0VSLCBJTkMuCi0JCQkJNTQ1IE9BS01FQUQgUEFSS1dBWQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMDUgICAoaGV4KQkJREFOSUVMIElOU1RSVU1FTlRTLCBMVEQuCi0wMEEwMDUgICAgIChiYXNlIDE2KQkJREFOSUVMIElOU1RSVU1FTlRTLCBMVEQuCi0JCQkJVFJPTExTVFJBU1NFIDMzCi0JCQkJQ0gtODQwMCBXSU5URVJUSFVSICAKLQkJCQlTV0lUWkVSTEFORAotCi0wMC1BMC0wNiAgIChoZXgpCQlJTUFHRSBEQVRBIFBST0NFU1NJTkcgU1lTVEVNIEdST1VQCi0wMEEwMDYgICAgIChiYXNlIDE2KQkJSU1BR0UgREFUQSBQUk9DRVNTSU5HIFNZU1RFTSBHUk9VUAotCQkJCVNISU5UT1lPRlVUQSAyLTEKLQkJCQlLQVNISVdBLUNJVFksIENISUJBIDI3NyAgCi0JCQkJSkFQQU4KLQotMDAtQTAtMDcgICAoaGV4KQkJQVBFWFggVEVDSE5PTE9HWSwgSU5DLgotMDBBMDA3ICAgICAoYmFzZSAxNikJCUFQRVhYIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk1MDYgUy4gMTFUSAotCQkJCVBPIEJPWCA5MjkxCi0JCQkJQk9JU0UgSUQgODM3MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTA4ICAgKGhleCkJCU5FVENPUlAKLTAwQTAwOCAgICAgKGJhc2UgMTYpCQlORVRDT1JQCi0JCQkJOCBQTEFDRSBPRiBDT01NRVJDRS0tU1RFICMyMDAKLQkJCQlCUk9TU0FSRCwgUVVFQkVDCi0JCQkJQ0FOQURBIEo0VyAzSDIKLQkJCQlDQU5BREEKLQotMDAtQTAtMDkgICAoaGV4KQkJV0hJVEVUUkVFIE5FVFdPUksKLTAwQTAwOSAgICAgKGJhc2UgMTYpCQlXSElURVRSRUUgTkVUV09SSwotCQkJCVRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTMyMDAgQVNIIFNUUkVFVAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMEEgICAoaGV4KQkJQWlyc3BhbgotMDBBMDBBICAgICAoYmFzZSAxNikJCUFpcnNwYW4KLQkJCQlVbml0cm9uaWNzIEJ1aWxkaW5nLCBBcmF2YSBTdHJlZXQsIEFpcnBvcnQgQ2l0eQotCQkJCVBPQiAxOTkKLQkJCQk3MDEwMAotCQkJCUlTUkFFTAotCi0wMC1BMC0wQiAgIChoZXgpCQlDT01QVVRFWCBDTy4sIExURC4KLTAwQTAwQiAgICAgKGJhc2UgMTYpCQlDT01QVVRFWCBDTy4sIExURC4KLQkJCQk0MzItMTMgR09KWU9CQVNISS1ISUdBU0hJIDQtQ0hZT01FCi0JCQkJIEhJR0FTSElZQU1BS1UsIEtZT1RPLUNJVFkgNjA1ICAKLQkJCQlKQVBBTgotCi0wMC1BMC0wQyAgIChoZXgpCQlLSU5HTUFYIFRFQ0hOT0xPR1ksIElOQy4KLTAwQTAwQyAgICAgKGJhc2UgMTYpCQlLSU5HTUFYIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkyRkwuLCBOTy4gNCwgTEFORSA5MDIsIFNFQy4yCi0JCQkJS1VBTkcgRlUgUkQuLCBIU0lOLUNIVSBDSVRZCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1BMC0wRCAgIChoZXgpCQlUSEUgUEFOREEgUFJPSkVDVAotMDBBMDBEICAgICAoYmFzZSAxNikJCVRIRSBQQU5EQSBQUk9KRUNUCi0JCQkJNTIwMSBDT05HUkVTUyBBVkUuIC0gQy0xMDAKLQkJCQlCT0NBIFJBVE9OIEZMIDMzNDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0wRSAgIChoZXgpCQlWSVNVQUwgTkVUV09SS1MsIElOQy4KLTAwQTAwRSAgICAgKGJhc2UgMTYpCQlWSVNVQUwgTkVUV09SS1MsIElOQy4KLQkJCQkyMDkyIEdBSVRIRVIgUk9BRC0gU1RFICMyMjAKLQkJCQlST0NLVklMTEUgTUQgMjA4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTBGICAgKGhleCkJCUJyb2FkYmFuZCBUZWNobm9sb2dpZXMKLTAwQTAwRiAgICAgKGJhc2UgMTYpCQlCcm9hZGJhbmQgVGVjaG5vbG9naWVzCi0JCQkJUC5PLiBCb3ggMTM3MzcKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrLCBOQyAyNzcwOS0zNzM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0xMCAgIChoZXgpCQlTWVNMT0dJQyBEQVRFTlRFQ0hOSUsgQUcKLTAwQTAxMCAgICAgKGJhc2UgMTYpCQlTWVNMT0dJQyBEQVRFTlRFQ0hOSUsgQUcKLQkJCQlCcnVnZ2Vyc3RyYXNzZSA2OQotCQkJCUNILTU0MDAgQmFkZW4gIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLUEwLTExICAgKGhleCkJCU1VVE9IIElORFVTVFJJRVMgTFRELgotMDBBMDExICAgICAoYmFzZSAxNikJCU1VVE9IIElORFVTVFJJRVMgTFRELgotCQkJCTI1MyBLQU5BR0FXQS1LRU4sCi0JCQkJQ0hJR0FTQUtJLVNISSBTSElNT01BQ0hJWUEgMS0zLTEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUEwLTEyICAgKGhleCkJCVRlbGNvIFN5c3RlbXMsIEluYy4gCi0wMEEwMTIgICAgIChiYXNlIDE2KQkJVGVsY28gU3lzdGVtcywgSW5jLiAKLQkJCQkxNSBCZXJrc2hpcmUgUm9hZAotCQkJCU1hbnNmaWVsZCwgTUEgMDIwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTEzICAgKGhleCkJCVRFTFRSRU5EIExURC4KLTAwQTAxMyAgICAgKGJhc2UgMTYpCQlURUxUUkVORCBMVEQuCi0JCQkJUklOR1dBWSBIT1VTRSwgQkVMTCBST0FECi0JCQkJREFORVNISUxMLAotCQkJCUJBU0lOR1NUT0tFIEhBTVBTSElSRSBSRzI0IDhGICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC0xNCAgIChoZXgpCQlDU0lSCi0wMEEwMTQgICAgIChiYXNlIDE2KQkJQ1NJUgotCQkJCVAuTy4gQk9YIDM5NQotCQkJCVBSRVRPUklBIDAwMDEKLQkJCQlTT1VUSCBBRlJJQ0EKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMDAtQTAtMTUgICAoaGV4KQkJV1lMRQotMDBBMDE1ICAgICAoYmFzZSAxNikJCVdZTEUKLQkJCQkzMDAwIEJPV0VSUyBBVkVOVUUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMTYgICAoaGV4KQkJTUlDUk9QT0xJUyBDT1JQLgotMDBBMDE2ICAgICAoYmFzZSAxNikJCU1JQ1JPUE9MSVMgQ09SUC4KLQkJCQkyMTIxMSBOT1JESE9GRiBTVFJFRVQKLQkJCQlDSEFUU1dPUlRIIENBIDkxMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0xNyAgIChoZXgpCQlKIEIgTSBDT1JQT1JBVElPTgotMDBBMDE3ICAgICAoYmFzZSAxNikJCUogQiBNIENPUlBPUkFUSU9OCi0JCQkJMTAtMSwgQVJBTU9UT1NISU4gTUFDSEkKLQkJCQlISUdBU0hJIE9TQUtBCi0JCQkJNTc3Ci0JCQkJSkFQQU4KLQotMDAtQTAtMTggICAoaGV4KQkJQ1JFQVRJVkUgQ09OVFJPTExFUlMsIElOQy4KLTAwQTAxOCAgICAgKGJhc2UgMTYpCQlDUkVBVElWRSBDT05UUk9MTEVSUywgSU5DLgotCQkJCTEyOCBLRU5EUklDSyBMQU5FCi0JCQkJUElDQVlVTkUgTVMgMzk0NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTE5ICAgKGhleCkJCU5FQlVMQSBDT05TVUxUQU5UUywgSU5DLgotMDBBMDE5ICAgICAoYmFzZSAxNikJCU5FQlVMQSBDT05TVUxUQU5UUywgSU5DLgotCQkJCTE0NDkgRFVOQ0FOIERSSVZFCi0JCQkJREVMVEEsIEJDIFY0TCAxUjUgIAotCQkJCUNBTkFEQQotCi0wMC1BMC0xQSAgIChoZXgpCQlCSU5BUiBFTEVLVFJPTklLIEFCCi0wMEEwMUEgICAgIChiYXNlIDE2KQkJQklOQVIgRUxFS1RST05JSyBBQgotCQkJCU1BR05FVFVBR0VOIDE4Ci0JCQkJUy00NjEzOCBUUk9MTEhBVFRBTgotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC1BMC0xQiAgIChoZXgpCQlQUkVNSVNZUyBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBBMDFCICAgICAoYmFzZSAxNikJCVBSRU1JU1lTIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNDg2NjQgTUlMTU9OVCBEUklWRQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTFDICAgKGhleCkJCU5BU0NFTlQgTkVUV09SS1MgQ09SUE9SQVRJT04KLTAwQTAxQyAgICAgKGJhc2UgMTYpCQlOQVNDRU5UIE5FVFdPUktTIENPUlBPUkFUSU9OCi0JCQkJMjc3IE1BSU4gU1RSRUVULCAgM1JEIEZMUi4KLQkJCQlNQVJMQk9STyBNQSAwMTc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMUQgICAoaGV4KQkJU0lYTkVUCi0wMEEwMUQgICAgIChiYXNlIDE2KQkJU0lYTkVUCi0JCQkJUC5PLiBCT1ggNzY3Ci0JCQkJQ0xJRlRPTiBQQVJLIE5ZIDEyMDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0xRSAgIChoZXgpCQlFU1QgQ09SUE9SQVRJT04KLTAwQTAxRSAgICAgKGJhc2UgMTYpCQlFU1QgQ09SUE9SQVRJT04KLQkJCQkxMjAgUk9ZQUxMIFNUUkVFVAotCQkJCUNBTlRPTiBNQSAwMjAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMUYgICAoaGV4KQkJVFJJQ09SRCBTWVNURU1TLCBJTkMuCi0wMEEwMUYgICAgIChiYXNlIDE2KQkJVFJJQ09SRCBTWVNURU1TLCBJTkMuCi0JCQkJMjgwMCBOT1JUSFdFU1QgQk9VTEVWQVJECi0JCQkJUExZTU9VVEggTU4gNTU0NDEtMjYyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMjAgICAoaGV4KQkJQ0lUSUNPUlAvVFRJCi0wMEEwMjAgICAgIChiYXNlIDE2KQkJQ0lUSUNPUlAvVFRJCi0JCQkJMzEwMCBPQ0VBTiBQQVJLIEJMVkQuCi0JCQkJU0FOVEEgTU9OSUNBIENBIDkwNDA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0yMSAgIChoZXgpCQlHZW5lcmFsIER5bmFtaWNzCi0wMEEwMjEgICAgIChiYXNlIDE2KQkJR2VuZXJhbCBEeW5hbWljcwotCQkJCUNvbW11bmljYXRpb24gU3lzdGVtcwotCQkJCTc3QSBTdHJlZXQKLQkJCQlOZWVkaGFtIEhlaWdodHMgTUEgMDI0OTQtMjg5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMjIgICAoaGV4KQkJQ0VOVFJFIEZPUiBERVZFTE9QTUVOVCBPRiBBRFZBTkNFRCBDT01QVVRJTkcKLTAwQTAyMiAgICAgKGJhc2UgMTYpCQlDRU5UUkUgRk9SIERFVkVMT1BNRU5UIE9GIEFEVkFOQ0VEIENPTVBVVElORwotCQkJCVVOSVZFUlNJVFkgT0YgUE9PTkEgQ0FNUFVTCi0JCQkJR0FORVNIIEtISU5ELCBQdW5lIC0gNDExIDAwOCAgCi0JCQkJSU5ESUEKLQotMDAtQTAtMjMgICAoaGV4KQkJQVBQTElFRCBDUkVBVElWRSBURUNITk9MT0dZLCBJTkMuCi0wMEEwMjMgICAgIChiYXNlIDE2KQkJQVBQTElFRCBDUkVBVElWRSBURUNITk9MT0dZLCBJTkMuCi0JCQkJMjYyNiBMT01CQVJEWSBMQU5FLS1TVEUuIzEwNwotCQkJCURBTExBUyBUWCA3NTIyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMjQgICAoaGV4KQkJM0NPTSBDT1JQT1JBVElPTgotMDBBMDI0ICAgICAoYmFzZSAxNikJCTNDT00gQ09SUE9SQVRJT04KLQkJCQk1NDAwIEJBWUZST05UIFBMQVpBCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTI1ICAgKGhleCkJCVJFRENPTSBMQUJTIElOQy4KLTAwQTAyNSAgICAgKGJhc2UgMTYpCQlSRURDT00gTEFCUyBJTkMuCi0JCQkJT05FIFJFRENPTSBDRU5URVIKLQkJCQlWSUNUT1IgTlkgMTQ1NjQtMDk5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMjYgICAoaGV4KQkJVEVMREFULCBTLkEuCi0wMEEwMjYgICAgIChiYXNlIDE2KQkJVEVMREFULCBTLkEuCi0JCQkJUEFSUVVFIFRFQ05PTE9HSUNPIE1BRFJJRAotCQkJCTI4NzYwIFRBQ1MgQ0FOIFRPUyAoTUFEUklEKSAgCi0JCQkJU1BBSU4KLQotMDAtQTAtMjcgICAoaGV4KQkJRklSRVBPV0VSIFNZU1RFTVMsIElOQy4KLTAwQTAyNyAgICAgKGJhc2UgMTYpCQlGSVJFUE9XRVIgU1lTVEVNUywgSU5DLgotCQkJCTE5MCBJTkRFUEVOREVOQ0UgRFJJVkUKLQkJCQlNRU5MTyBQQVJLIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0yOCAgIChoZXgpCQlDT05ORVIgUEVSSVBIRVJBTFMKLTAwQTAyOCAgICAgKGJhc2UgMTYpCQlDT05ORVIgUEVSSVBIRVJBTFMKLQkJCQkzMDYxIFpBTktFUiBST0FECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMjEyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMjkgICAoaGV4KQkJQ09VTFRFUiBDT1JQT1JBVElPTgotMDBBMDI5ICAgICAoYmFzZSAxNikJCUNPVUxURVIgQ09SUE9SQVRJT04KLQkJCQkxMTgwMCBTLlcuIDE0N1RIIEFWRS4KLQkJCQlNSUFNSSBGTCAzMzE5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMkEgICAoaGV4KQkJVFJBTkNFTEwgU1lTVEVNUwotMDBBMDJBICAgICAoYmFzZSAxNikJCVRSQU5DRUxMIFNZU1RFTVMKLQkJCQkzMTgwIERFIExBIENSVVogQkxWRC4tU1RFIzIwMAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0LTI0MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTJCICAgKGhleCkJCVRSQU5TSVRJT05TIFJFU0VBUkNIIENPUlAuCi0wMEEwMkIgICAgIChiYXNlIDE2KQkJVFJBTlNJVElPTlMgUkVTRUFSQ0ggQ09SUC4KLQkJCQlTSEVMVEVSIFJPQ0sgTEFORQotCQkJCURBTkJVUlkgQ1QgMDY4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTJDICAgKGhleCkJCWludGVyV0FWRSBDb21tdW5pY2F0aW9ucwotMDBBMDJDICAgICAoYmFzZSAxNikJCWludGVyV0FWRSBDb21tdW5pY2F0aW9ucwotCQkJCTY1NiBCQUlSIElTTEFORCBCTFZELi1TVEUuIzEwOAotCQkJCVJFRFdPT0QgQ0lUWSBDQSA5NDA2My0yNzA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0yRCAgIChoZXgpCQkxMzk0IFRyYWRlIEFzc29jaWF0aW9uCi0wMEEwMkQgICAgIChiYXNlIDE2KQkJMTM5NCBUcmFkZSBBc3NvY2lhdGlvbgotCQkJCTM5MjUgV0VTVCBCUkFLRVIgTEFORQotCQkJCUFVU1RJTiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMkUgICAoaGV4KQkJQlJBTkQgQ09NTVVOSUNBVElPTlMsIExURC4KLTAwQTAyRSAgICAgKGJhc2UgMTYpCQlCUkFORCBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCUVOVEVSUFJJU0UgSE9VU0UsIENISVZFUlMgV0FZLAotCQkJCUhJU1RPTiwgQ0FNQlJJREdFIENCNCA0WlIgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLTJGICAgKGhleCkJCVBJUkVMTEkgQ0FWSQotMDBBMDJGICAgICAoYmFzZSAxNikJCVBJUkVMTEkgQ0FWSQotCQkJCVZJQUxFIFNBUkNBIDIyMgotCQkJCTIwMTI2IE1JTEFOICAKLQkJCQlJVEFMWQotCi0wMC1BMC0zMCAgIChoZXgpCQlDQVBUT1IgTlYvU0EKLTAwQTAzMCAgICAgKGJhc2UgMTYpCQlDQVBUT1IgTlYvU0EKLQkJCQlERSBIRU5FIDEzCi0JCQkJQi0xNzgwIFdFTU1FTAotCQkJCUJFTEdJVU0KLQotMDAtQTAtMzEgICAoaGV4KQkJSEFaRUxUSU5FIENPUlBPUkFUSU9OLCBNUyAxLTE3Ci0wMEEwMzEgICAgIChiYXNlIDE2KQkJSEFaRUxUSU5FIENPUlBPUkFUSU9OLCBNUyAxLTE3Ci0JCQkJNDUwIEUuIFBVTEFTS0kgUk9BRAotCQkJCUdSRUVOTEFXTiBOWSAxMTc0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMzIgICAoaGV4KQkJR0VTIFNJTkdBUE9SRSBQVEUuIExURC4KLTAwQTAzMiAgICAgKGJhc2UgMTYpCQlHRVMgU0lOR0FQT1JFIFBURS4gTFRELgotCQkJCTE0IFNVTkdFSSBLQURVVCBBVkVOVUUKLQkJCQlTSU5HQVBPUkUgMjU3MgotCQkJCVNJTkdBUE9SRQotCi0wMC1BMC0zMyAgIChoZXgpCQlpbWMgTWVCc3lzdGVtZSBHbWJICi0wMEEwMzMgICAgIChiYXNlIDE2KQkJaW1jIE1lQnN5c3RlbWUgR21iSAotCQkJCVZPTFRBU1RSQVNTRSA1Ci0JCQkJRC0xMzM1NSBCRVJMSU4gIAotCQkJCUdFUk1BTlkKLQotMDAtQTAtMzQgICAoaGV4KQkJQVhFTAotMDBBMDM0ICAgICAoYmFzZSAxNikJCUFYRUwKLQkJCQkxNiwgQVZFTlVFIERVIFFVRUJFQwotCQkJCVouQS4gQ09VUlRBQk9FVUYgOTE5NjIgTEVTIFVMSVMKLQkJCQlGUkFOQ0UKLQotMDAtQTAtMzUgICAoaGV4KQkJQ1lMSU5LIENPUlBPUkFUSU9OCi0wMEEwMzUgICAgIChiYXNlIDE2KQkJQ1lMSU5LIENPUlBPUkFUSU9OCi0JCQkJMzEzMSBKQVkgU1RSRUVUCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTM2ICAgKGhleCkJCUFQUExJRUQgTkVUV09SSyBURUNITk9MT0dZCi0wMEEwMzYgICAgIChiYXNlIDE2KQkJQVBQTElFRCBORVRXT1JLIFRFQ0hOT0xPR1kKLQkJCQkzMTkgTElUVExFVE9OIFJPQUQtLVNURSAjMTAxCi0JCQkJV0VTVEZPUkQgTUEgMDE4ODYtNDEzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtMzcgICAoaGV4KQkJTWluZHJheSBEUyBVU0EsIEluYy4KLTAwQTAzNyAgICAgKGJhc2UgMTYpCQlNaW5kcmF5IERTIFVTQSwgSW5jLgotCQkJCTgwMCBNYWNhcnRodXIgQmx2ZC4KLQkJCQlNYWh3YWggTkogMDc0MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTM4ICAgKGhleCkJCUVNQUlMIEVMRUNUUk9OSUNTCi0wMEEwMzggICAgIChiYXNlIDE2KQkJRU1BSUwgRUxFQ1RST05JQ1MKLQkJCQlQLk8uIEJPWCAxNTQKLQkJCQlNT09ST09MQkFSSywgMzEzOCAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLUEwLTM5ICAgKGhleCkJCVJPU1MgVEVDSE5PTE9HWSwgSU5DLgotMDBBMDM5ICAgICAoYmFzZSAxNikJCVJPU1MgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTUzMTYgSFdZIDI5MCBXRVNUIC0gU1RFLiAjNTAwCi0JCQkJQVVTVElOIFRYIDc4NzM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0zQSAgIChoZXgpCQlLVUJPVEVLIENPUlBPUkFUSU9OCi0wMEEwM0EgICAgIChiYXNlIDE2KQkJS1VCT1RFSyBDT1JQT1JBVElPTgotCQkJCTU2IE5JU0hJQUtFVEEtQ0hPLCBISUdBU0hJS1VKTwotCQkJCU1JTkFNSS1LVSwgS1lPVE8gNjAxCi0JCQkJSkFQQU4KLQotMDAtQTAtM0IgICAoaGV4KQkJVE9TSElOIEVMRUNUUklDIENPLiwgTFRELgotMDBBMDNCICAgICAoYmFzZSAxNikJCVRPU0hJTiBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQkzRkwuIFJJVkVSLVNUT05FIDNSRC4gQkxHLjIzNAotCQkJCU1JWk9OT0tVQ0hJLCBUQUtBVFNVLUtWLCBLQVdBU0FLSS1TSEksCi0JCQkJMjEzIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQTAtM0MgICAoaGV4KQkJRUcmRyBOVUNMRUFSIElOU1RSVU1FTlRTCi0wMEEwM0MgICAgIChiYXNlIDE2KQkJRUcmRyBOVUNMRUFSIElOU1RSVU1FTlRTCi0JCQkJMTAwIE1JRExBTkQgUk9BRAotCQkJCU9BSyBSSURHRSBUTiAzNzgzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtM0QgICAoaGV4KQkJT1BUTy0yMgotMDBBMDNEICAgICAoYmFzZSAxNikJCU9QVE8tMjIKLQkJCQk0MzA0NCBCVVNJTkVTUyBQQVJLIERSLgotCQkJCVRFTUVDVUxBIENBIDkyNTkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC0zRSAgIChoZXgpCQlBVE0gRk9SVU0KLTAwQTAzRSAgICAgKGJhc2UgMTYpCQlBVE0gRk9SVU0KLQkJCQlXT1JMRFdJREUgSEVBRFFVQVJURVJTCi0JCQkJMzAzIFZJTlRBR0UgUEFSSyBEUklWRQotCQkJCUZPU1RFUiBDSVRZIENBIDk0NDA0LTExMzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTNGICAgKGhleCkJCUNPTVBVVEVSIFNPQ0lFVFkgTUlDUk9QUk9DRVNTT1IgJiBNSUNST1BST0NFU1NPUiBTVEFOREFSRFMgQwotMDBBMDNGICAgICAoYmFzZSAxNikJCUNPTVBVVEVSIFNPQ0lFVFkgTUlDUk9QUk9DRVNTT1IgJiBNSUNST1BST0NFU1NPUiBTVEFOREFSRFMgQwotCQkJCSUgQVBQTEUgQ09NUFVURVIsIElOQy4KLQkJCQkgMSBJTkZJTklURSBMT09QLAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNDAgICAoaGV4KQkJQVBQTEUgQ09NUFVURVIKLTAwQTA0MCAgICAgKGJhc2UgMTYpCQlBUFBMRSBDT01QVVRFUgotCQkJCTIwNjUwIFZBTExFWSBHUkVFTiBEUklWRQotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNDEgICAoaGV4KQkJSU5GSUNPTgotMDBBMDQxICAgICAoYmFzZSAxNikJCUlORklDT04KLQkJCQkyIFRlY2hub2xvZ3kgUGxhY2UKLQkJCQlFLiBTeXJhY3VzZSBOWSAxMzA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNDIgICAoaGV4KQkJU1BVUiBQUk9EVUNUUyBDT1JQLgotMDBBMDQyICAgICAoYmFzZSAxNikJCVNQVVIgUFJPRFVDVFMgQ09SUC4KLQkJCQk5Mjg4IFcuIEVNRVJBTEQgU1RSRUVUCi0JCQkJQk9JU0UgSUQgODM3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTQzICAgKGhleCkJCUFNRVJJQ0FOIFRFQ0hOT0xPR1kgTEFCUywgSU5DLgotMDBBMDQzICAgICAoYmFzZSAxNikJCUFNRVJJQ0FOIFRFQ0hOT0xPR1kgTEFCUywgSU5DLgotCQkJCTExNSBXRVNUIDNSRCBTVFJFRVQKLQkJCQlMT1dFUiBMRVZFTAotCQkJCVNURVZFTlNWSUxMRSBNVCA1OTg3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNDQgICAoaGV4KQkJTlRUIElUIENPLiwgTFRELgotMDBBMDQ0ICAgICAoYmFzZSAxNikJCU5UVCBJVCBDTy4sIExURC4KLQkJCQkKLQkJCQlLQU5OQUktV0lTRSBCTERHLiwgMi05LTEgRlVST1UtQ0hPLCBOQUtBCi0JCQkJMjMxIAotCQkJCUpBUEFOCi0KLTAwLUEwLTQ1ICAgKGhleCkJCVBIT0VOSVggQ09OVEFDVCBHTUJIICYgQ08uCi0wMEEwNDUgICAgIChiYXNlIDE2KQkJUEhPRU5JWCBDT05UQUNUIEdNQkggJiBDTy4KLQkJCQlQT1NURkFDSCAxMzQxCi0JCQkJRC0zMjgxOSBCTE9NQkVSRwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLTQ2ICAgKGhleCkJCVNDSVRFWCBDT1JQLiBMVEQuCi0wMEEwNDYgICAgIChiYXNlIDE2KQkJU0NJVEVYIENPUlAuIExURC4KLQkJCQlQLk8uQk9YIDMzMAotCQkJCUhFUlpMSUEgQiA0NjEwMwotCQkJCUlTUkFFTAotCi0wMC1BMC00NyAgIChoZXgpCQlJTlRFR1JBVEVEIEZJVE5FU1MgQ09SUC4KLTAwQTA0NyAgICAgKGJhc2UgMTYpCQlJTlRFR1JBVEVEIEZJVE5FU1MgQ09SUC4KLQkJCQkyNiA2VEggU1RSRUVUCi0JCQkJU1RBTUZPUkQgQ1QgMDY5MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTQ4ICAgKGhleCkJCVFVRVNURUNILCBMVEQuCi0wMEEwNDggICAgIChiYXNlIDE2KQkJUVVFU1RFQ0gsIExURC4KLQkJCQlFQVNUSEVBVEggQVZFTlVFCi0JCQkJV09LSU5HSEFNCi0JCQkJQkVSS1MsIFJHMTEgMlBQICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC00OSAgIChoZXgpCQlESUdJVEVDSCBJTkRVU1RSSUVTLCBJTkMuCi0wMEEwNDkgICAgIChiYXNlIDE2KQkJRElHSVRFQ0ggSU5EVVNUUklFUywgSU5DLgotCQkJCVBPIEJPWCAyMjY3Ci0JCQkJNTUgS0VOT1NJQSBBVkVOVUUKLQkJCQlEQU5CVVJZIENUIDA2ODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC00QSAgIChoZXgpCQlOSVNTSElOIEVMRUNUUklDIENPLiwgTFRELgotMDBBMDRBICAgICAoYmFzZSAxNikJCU5JU1NISU4gRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJNSwgTUVPVE9HT1NISSwgTVVUU1VTSEksCi0JCQkJU0hJS0FUU1UtQ1lPLCBOSVNISUtBU1VHQUksCi0JCQkJQUlDSEkgNDgxICAKLQkJCQlKQVBBTgotCi0wMC1BMC00QiAgIChoZXgpCQlURkwgTEFOIElOQy4KLTAwQTA0QiAgICAgKGJhc2UgMTYpCQlURkwgTEFOIElOQy4KLQkJCQk5RiwgTk8uIDQ5OSBDSFVORyBDSEVORyBST0FECi0JCQkJU0hJSC1MSU4gRElTVFJJQ1QsIFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1BMC00QyAgIChoZXgpCQlJTk5PVkFUSVZFIFNZU1RFTVMgJiBURUNITk9MT0dJRVMsIElOQy4KLTAwQTA0QyAgICAgKGJhc2UgMTYpCQlJTk5PVkFUSVZFIFNZU1RFTVMgJiBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk0ODUxMSBXQVJNIFNQUklOR1MgQkxWRC4KLQkJCQlTVUlURSAgIyAyMTFDCi0JCQkJRlJFTU9OVCBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNEQgICAoaGV4KQkJRURBIElOU1RSVU1FTlRTLCBJTkMuCi0wMEEwNEQgICAgIChiYXNlIDE2KQkJRURBIElOU1RSVU1FTlRTLCBJTkMuCi0JCQkJNCBUSE9STkNMSUZGRSBQQVJLIERSSVZFCi0JCQkJVE9ST05UTywgT05UQVJJTwotCQkJCU00SCAxSDEKLQkJCQlDQU5BREEKLQotMDAtQTAtNEUgICAoaGV4KQkJVk9FTEtFUiBURUNITk9MT0dJRVMsIElOQy4KLTAwQTA0RSAgICAgKGJhc2UgMTYpCQlWT0VMS0VSIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTIyIE5FVyBCT1NUT04gQ09VUlQKLQkJCQlEQU5WSUxMRSBDQSA5NDUyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNEYgICAoaGV4KQkJQU1FUklURUMgQ09SUC4KLTAwQTA0RiAgICAgKGJhc2UgMTYpCQlBTUVSSVRFQyBDT1JQLgotCQkJCTc2MCBBUlJPVyBHUkFORCBDSVJDTEUKLQkJCQlDT1ZJTkEgQ0EgOTE3MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTUwICAgKGhleCkJCUNZUFJFU1MgU0VNSUNPTkRVQ1RPUgotMDBBMDUwICAgICAoYmFzZSAxNikJCUNZUFJFU1MgU0VNSUNPTkRVQ1RPUgotCQkJCTM5MDEgTk9SVEggRklSU1QgU1RSRUVUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTUxICAgKGhleCkJCUFOR0lBIENPTU1VTklDQVRJT05TLiBJTkMuCi0wMEEwNTEgICAgIChiYXNlIDE2KQkJQU5HSUEgQ09NTVVOSUNBVElPTlMuIElOQy4KLQkJCQk0NDEgRUFTVCBCQVkgQkxWRC4KLQkJCQlQUk9WTyBVVEFIIDg0NjA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC01MiAgIChoZXgpCQlTVEFOSUxJVEUgRUxFQ1RST05JQ1MgUFRZLiBMVEQKLTAwQTA1MiAgICAgKGJhc2UgMTYpCQlTVEFOSUxJVEUgRUxFQ1RST05JQ1MgUFRZLiBMVEQKLQkJCQk0MjQsIExBTkUgQ09WRSBST0FECi0JCQkJTk9SVEggUllERSBOU1cgMjExMyAgCi0JCQkJQVVTVFJBTElBCi0KLTAwLUEwLTUzICAgKGhleCkJCUNPTVBBQ1QgREVWSUNFUywgSU5DLgotMDBBMDUzICAgICAoYmFzZSAxNikJCUNPTVBBQ1QgREVWSUNFUywgSU5DLgotCQkJCTE2Nzk1IExBUksgQVZFTlVFCi0JCQkJTE9TIEdBVE9TIENBIDk1MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC01NCAgIChoZXgpCQlQUklWQVRFCi0wMEEwNTQgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTAwLUEwLTU1ICAgKGhleCkJCURhdGEgRGV2aWNlIENvcnBvcmF0aW9uCi0wMEEwNTUgICAgIChiYXNlIDE2KQkJRGF0YSBEZXZpY2UgQ29ycG9yYXRpb24KLQkJCQkxMDUgV2lsYnVyIFBsYWNlCi0JCQkJQm9oZW1pYSBOWSAxMTcxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNTYgICAoaGV4KQkJTUlDUk9QUk9TUwotMDBBMDU2ICAgICAoYmFzZSAxNikJCU1JQ1JPUFJPU1MKLQkJCQkzMywgUlVFIEdBTlRPSVMKLQkJCQk1OTAwMCBMSUxMRSAgCi0JCQkJRlJBTkNFCi0KLTAwLUEwLTU3ICAgKGhleCkJCUxBTkNPTSBTeXN0ZW1zIEdtYkgKLTAwQTA1NyAgICAgKGJhc2UgMTYpCQlMQU5DT00gU3lzdGVtcyBHbWJICi0JCQkJQWRlbmF1ZXIgU3RyLjIwIC9CMgotCQkJCUQtNTIwNzAgQUFDSEVOCi0JCQkJV8O8cnNlbGVuICA1MjE0NgotCQkJCUdFUk1BTlkKLQotMDAtQTAtNTggICAoaGV4KQkJR0xPUlksIExURC4KLTAwQTA1OCAgICAgKGJhc2UgMTYpCQlHTE9SWSwgTFRELgotCQkJCTEtMy0xIFNISU1PVEVOTywgSElNRUpJCi0JCQkJSFlPR08gUFJFRi4gNjcwICAKLQkJCQlKQVBBTgotCi0wMC1BMC01OSAgIChoZXgpCQlIQU1JTFRPTiBIQUxMTUFSSwotMDBBMDU5ICAgICAoYmFzZSAxNikJCUhBTUlMVE9OIEhBTExNQVJLCi0JCQkJMjEwNSBMVU5EWSBBVkVOVUUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNUEgICAoaGV4KQkJS09GQVggSU1BR0UgUFJPRFVDVFMKLTAwQTA1QSAgICAgKGJhc2UgMTYpCQlLT0ZBWCBJTUFHRSBQUk9EVUNUUwotCQkJCTMgSkVOTkVSIFNUUkVFVAotCQkJCUlSVklORSBDQSA5MjcxOC0zODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC01QiAgIChoZXgpCQlNQVJRVUlQLCBJTkMuCi0wMEEwNUIgICAgIChiYXNlIDE2KQkJTUFSUVVJUCwgSU5DLgotCQkJCTEyNDUgRS4gV0FTSElOR1RPTiBBVkUuCi0JCQkJTUFESVNPTiBXSSA1MzcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNUMgICAoaGV4KQkJSU5WRU5UT1JZIENPTlZFUlNJT04sIElOQy4vCi0wMEEwNUMgICAgIChiYXNlIDE2KQkJSU5WRU5UT1JZIENPTlZFUlNJT04sIElOQy4vCi0JCQkJTkVLT1RFQ0ggRElWSVNJT04KLQkJCQkxMDIgVElERSBNSUxMIFJPQUQgLVNVSVRFICMgNgotCQkJCUhBTVBUT04gTkggMDM4NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTVEICAgKGhleCkJCUNTIENPTVBVVEVSIFNZU1RFTUUgR21iSAotMDBBMDVEICAgICAoYmFzZSAxNikJCUNTIENPTVBVVEVSIFNZU1RFTUUgR21iSAotCQkJCUlTQVJTVFJBU1NFIDMsCi0JCQkJODIwNjUgQkFJRVJCUlVOTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1BMC01RSAgIChoZXgpCQlNWVJJQUQgTE9HSUMgSU5DLgotMDBBMDVFICAgICAoYmFzZSAxNikJCU1ZUklBRCBMT0dJQyBJTkMuCi0JCQkJMTEwOSBTUFJJTkcgU1RSRUVUCi0JCQkJU0lMVkVSIFNQUklORyBNRCAyMDkxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNUYgICAoaGV4KQkJQlRHIEVsZWN0cm9uaWNzIERlc2lnbiBCVgotMDBBMDVGICAgICAoYmFzZSAxNikJCUJURyBFbGVjdHJvbmljcyBEZXNpZ24gQlYKLQkJCQlQLk8uIEJveCAxNTQzCi0JCQkJMzI2MAotCQkJCUJBIE91ZCBCZWlqZXJsYW5kICAKLQkJCQlORVRIRVJMQU5EUwotCi0wMC1BMC02MCAgIChoZXgpCQlBQ0VSIFBFUklQSEVSQUxTLCBJTkMuCi0wMEEwNjAgICAgIChiYXNlIDE2KQkJQUNFUiBQRVJJUEhFUkFMUywgSU5DLgotCQkJCTlGLCAxMzUgQ0hJQU4gS1VPIE4uIFJELiBTRUMgMgotCQkJCVRBSVBFSSwgIDEwNDc5Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1BMC02MSAgIChoZXgpCQlQVVJJVEFOIEJFTk5FVFQKLTAwQTA2MSAgICAgKGJhc2UgMTYpCQlQVVJJVEFOIEJFTk5FVFQKLQkJCQkyMjAwIEZBUkFEQVkgQVZFTlVFCi0JCQkJQ0FSTFNCQUQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTYyICAgKGhleCkJCUFFUyBQUk9EQVRBCi0wMEEwNjIgICAgIChiYXNlIDE2KQkJQUVTIFBST0RBVEEKLQkJCQkyNDkgQkFMQ0FUVEEgUk9BRAotCQkJCUJBTENBVFRBCi0JCQkJV0VTVEVSTiBBVVNUUkFMSUEgNjAyMQotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC02MyAgIChoZXgpCQlKUkwgU1lTVEVNUywgSU5DLgotMDBBMDYzICAgICAoYmFzZSAxNikJCUpSTCBTWVNURU1TLCBJTkMuCi0JCQkJODMwNSBIV1kgNzEgV0VTVAotCQkJCUFVU1RJTiBUWCA3ODczNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNjQgICAoaGV4KQkJS1ZCL0FOQUxFQ1QKLTAwQTA2NCAgICAgKGJhc2UgMTYpCQlLVkIvQU5BTEVDVAotCQkJCTk0MjAgSkVST05JTU8gUk9BRAotCQkJCUlSVklORSBDQSA5MjcxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNjUgICAoaGV4KQkJU3ltYW50ZWMgQ29ycG9yYXRpb24KLTAwQTA2NSAgICAgKGJhc2UgMTYpCQlTeW1hbnRlYyBDb3Jwb3JhdGlvbgotCQkJCTIwMzMwIFN0ZXZlbnMgQ3JlZWsgQmx2ZC4KLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTY2ICAgKGhleCkJCUlTQSBDTy4sIExURC4KLTAwQTA2NiAgICAgKGJhc2UgMTYpCQlJU0EgQ08uLCBMVEQuCi0JCQkJU0hJTkpVS1UgTEFNQkRBWCBCTERHLiA1Ri4sCi0JCQkJMi00LTEyIE9LVUJPLCBTSElOSlVLVS1LVSBUT0tZTwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQTAtNjcgICAoaGV4KQkJTkVUV09SSyBTRVJWSUNFUyBHUk9VUAotMDBBMDY3ICAgICAoYmFzZSAxNikJCU5FVFdPUksgU0VSVklDRVMgR1JPVVAKLQkJCQkzNDIxIENPTU1JU1NJT04gQ09VUlQtU1RFICMyMDIKLQkJCQlXT09EQlJJREdFIFZBIDIyMTkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC02OCAgIChoZXgpCQlCSFAgTElNSVRFRAotMDBBMDY4ICAgICAoYmFzZSAxNikJCUJIUCBMSU1JVEVECi0JCQkJR1BPIEJPWCA4NkEKLQkJCQlNRUxCT1VSTkUgMzAwMSBWSUNUT1JJQQotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC02OSAgIChoZXgpCQlTeW1tZXRyaWNvbSwgSW5jLgotMDBBMDY5ICAgICAoYmFzZSAxNikJCVN5bW1ldHJpY29tLCBJbmMuCi0JCQkJMzc1MCBXZXN0d2luZCBCbHZkLgotCQkJCVNhbnRhIFJvc2EgQ0EgOTU0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTZBICAgKGhleCkJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi0wMEEwNkEgICAgIChiYXNlIDE2KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMjcgSmV0cGxleCBDaXJjbGUKLQkJCQlNYWRpc29uIEFMIDM1NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC02QiAgIChoZXgpCQlETVMgRE9SU0NIIE1JS1JPU1lTVEVNIEdNQkgKLTAwQTA2QiAgICAgKGJhc2UgMTYpCQlETVMgRE9SU0NIIE1JS1JPU1lTVEVNIEdNQkgKLQkJCQlIT0xNTFVFQ0sgMTMtMTUKLQkJCQlELTI0OTcyIFNURUlOQkVSUUtJUkNIRQotCQkJCUdFUk1BTlkKLQotMDAtQTAtNkMgICAoaGV4KQkJU0hJTkRFTkdFTiBFTEVDVFJJQyBNRkcuIENPLiwgTFRELgotMDBBMDZDICAgICAoYmFzZSAxNikJCVNISU5ERU5HRU4gRUxFQ1RSSUMgTUZHLiBDTy4sIExURC4KLQkJCQkxMC0xMywgTUlOQU1JLUNITywgSEFOTk9VLUNJVFkKLQkJCQlTQUlUQU1BIDM1NyAgCi0JCQkJSk9SREFOCi0KLTAwLUEwLTZEICAgKGhleCkJCU1BTk5FU01BTk4gVEFMTFkgQ09SUE9SQVRJT04KLTAwQTA2RCAgICAgKGJhc2UgMTYpCQlNQU5ORVNNQU5OIFRBTExZIENPUlBPUkFUSU9OCi0JCQkJUC5PLiBCT1ggOTcwMTgKLQkJCQlLRU5UIFdBIDk4MDY0LTk3MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTZFICAgKGhleCkJCUFVU1RST04sIElOQy4KLTAwQTA2RSAgICAgKGJhc2UgMTYpCQlBVVNUUk9OLCBJTkMuCi0JCQkJUC5PLiBCT1ggMTQ3NjYKLQkJCQlBVVNUSU4gVFggNzg3NjEtNDc2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNkYgICAoaGV4KQkJVEhFIEFQUENPTiBHUk9VUCwgSU5DLgotMDBBMDZGICAgICAoYmFzZSAxNikJCVRIRSBBUFBDT04gR1JPVVAsIElOQy4KLQkJCQkyMyBSSUNITU9ORCBTVFJFRVQKLQkJCQlST0NIRVNURVIgTlkgMTQ2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTcwICAgKGhleCkJCUNPQVNUQ09NCi0wMEEwNzAgICAgIChiYXNlIDE2KQkJQ09BU1RDT00KLQkJCQkxMTUxIEhBUkJPUiBCQVkgUEFSS1dBWQotCQkJCUFMQU1FREEgQ0EgOTQ1MDItNjUxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNzEgICAoaGV4KQkJVklERU8gTE9UVEVSWSBURUNITk9MT0dJRVMsSU5DCi0wMEEwNzEgICAgIChiYXNlIDE2KQkJVklERU8gTE9UVEVSWSBURUNITk9MT0dJRVMsSU5DCi0JCQkJMjMxMSBTT1VUSCA3VEggQVZFTlVFCi0JCQkJQk9aRU1BTiBNVCA1OTcxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNzIgICAoaGV4KQkJT1ZBVElPTiBTWVNURU1TIExURC4KLTAwQTA3MiAgICAgKGJhc2UgMTYpCQlPVkFUSU9OIFNZU1RFTVMgTFRELgotCQkJCUdSRUFUIEhBU0VMRVkgVFJBRC4gRVNULgotCQkJCUdSRUFUIEhBU0VMRVksICBPWEZPUkRTSElSRSBPWDkgN1BGCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC03MyAgIChoZXgpCQlDT00yMSwgSU5DLgotMDBBMDczICAgICAoYmFzZSAxNikJCUNPTTIxLCBJTkMuCi0JCQkJMjExMyBMQU5ESU5HUyBEUklWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTc0ICAgKGhleCkJCVBFUkNFUFRJT04gVEVDSE5PTE9HWQotMDBBMDc0ICAgICAoYmFzZSAxNikJCVBFUkNFUFRJT04gVEVDSE5PTE9HWQotCQkJCTQwIFNIQVdNVVQgUk9BRAotCQkJCUNBTlRPTiBNQSAwMjAyMS0xNDA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03NSAgIChoZXgpCQlNSUNST04gVEVDSE5PTE9HWSwgSU5DLgotMDBBMDc1ICAgICAoYmFzZSAxNikJCU1JQ1JPTiBURUNITk9MT0dZLCBJTkMuCi0JCQkJODAwMCBTLiBGZWRlcmFsIFdheQotCQkJCVAuTy4gQm94IDYKLQkJCQlCb2lzZSBJRCA4MzcwNy0wMDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03NiAgIChoZXgpCQlDQVJEV0FSRSBMQUIsIElOQy4KLTAwQTA3NiAgICAgKGJhc2UgMTYpCQlDQVJEV0FSRSBMQUIsIElOQy4KLQkJCQkyODUgU09CUkFOVEUgV0FZLCBTVEUuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03NyAgIChoZXgpCQlGVUpJVFNVIE5FWElPTiwgSU5DLgotMDBBMDc3ICAgICAoYmFzZSAxNikJCUZVSklUU1UgTkVYSU9OLCBJTkMuCi0JCQkJMjg5IEdSRUFUIFJPQUQKLQkJCQlBQ1RPTiBNQSAwMTcyMC00NzM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03OCAgIChoZXgpCQlNYXJjb25pIENvbW11bmljYXRpb25zCi0wMEEwNzggICAgIChiYXNlIDE2KQkJTWFyY29uaSBDb21tdW5pY2F0aW9ucwotCQkJCTEwMDAgRm9yZSBEcml2ZQotCQkJCVdhcnJlbmRhbGUgUEEgMTUwODYtNzUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtNzkgICAoaGV4KQkJQUxQUyBFTEVDVFJJQyAoVVNBKSwgSU5DLgotMDBBMDc5ICAgICAoYmFzZSAxNikJCUFMUFMgRUxFQ1RSSUMgKFVTQSksIElOQy4KLQkJCQkzNTUzIE5PUlRIIDFTVCBTVFJFRVQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtN0EgICAoaGV4KQkJQURWQU5DRUQgUEVSSVBIRVJBTFMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEEwN0EgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgUEVSSVBIRVJBTFMgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJCi0JCQkJS09KSU1BIEJVSUxESU5HLCAxMDMxIEZVSklTQVdBCi0JCQkJRlVKSVNBV0EtU0hJLCBLQU5BR0FXQS1LRU4gMjUxICAKLQkJCQlKQVBBTgotCi0wMC1BMC03QiAgIChoZXgpCQlEQVdOIENPTVBVVEVSIElOQ09SUE9SQVRJT04KLTAwQTA3QiAgICAgKGJhc2UgMTYpCQlEQVdOIENPTVBVVEVSIElOQ09SUE9SQVRJT04KLQkJCQk2IEtFWFVFWVVBTiBTT1VUSCBST0FECi0JCQkJWkhPTkcgR1VBTiBDVU4gQkVJSklORyAxMDAwODAKLQkJCQlDSElOQQotCi0wMC1BMC03QyAgIChoZXgpCQlUT05ZQU5HIE5ZTE9OIENPLiwgTFRELgotMDBBMDdDICAgICAoYmFzZSAxNikJCVRPTllBTkcgTllMT04gQ08uLCBMVEQuCi0JCQkJRUxFQ1RST05JQyBSRVNFQVJDSCBMQUIKLQkJCQkxODMsIEhPR0UtRE9ORywgRE9OR0FOLUdVCi0JCQkJQU5ZQU5HLUNJVFksIEtZVU5HS0ktRE8gNDMwLTA4MCAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUEwLTdEICAgKGhleCkJCVNFRVEgVEVDSE5PTE9HWSwgSU5DLgotMDBBMDdEICAgICAoYmFzZSAxNikJCVNFRVEgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTQ3MTMxIEJBWVNJREUgUEFSS1dBWQotCQkJCUZSRU1PTlQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTdFICAgKGhleCkJCUFWSUQgVEVDSE5PTE9HWSwgSU5DLgotMDBBMDdFICAgICAoYmFzZSAxNikJCUFWSUQgVEVDSE5PTE9HWSwgSU5DLgotCQkJCU1FVFJPUE9MSVRBTiBURUNITk9MT0dZIFBBUksKLQkJCQlPTkUgUEFSSyBXRVNUCi0JCQkJVEVXS1NCVVJZIE1BIDAxODc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC03RiAgIChoZXgpCQlHU00tU1lOVEVMLCBMVEQuCi0wMEEwN0YgICAgIChiYXNlIDE2KQkJR1NNLVNZTlRFTCwgTFRELgotCQkJCVZJQ1RPUklBIFdPUktTLCBRVUVFTlMgTUlMTCBSRAotCQkJCUhVRERFUlNGSUVMRCBXRVNUIFlPUktTSElSRQotCQkJCUhEMSAzUEcgRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLTgwICAgKGhleCkJCVRhdHRpbGUgU1JMIAotMDBBMDgwICAgICAoYmFzZSAxNikJCVRhdHRpbGUgU1JMIAotCQkJCTQwMDAgRXhlY3V0aXZlIFBhcmt3YXkKLQkJCQlTdWl0ZSAyMDAKLQkJCQlTYW4gUmFtb24gQ0EgOTQ1ODMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTgxICAgKGhleCkJCUFMQ0FURUwgREFUQSBORVRXT1JLUwotMDBBMDgxICAgICAoYmFzZSAxNikJCUFMQ0FURUwgREFUQSBORVRXT1JLUwotCQkJCTEyNTAyIFNVTlJJU0UgVkFMTEVZIERSSVZFCi0JCQkJUkVTVE9OIFZBIDIyMDk2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC04MiAgIChoZXgpCQlOS1QgRUxFS1RST05JSyBBL1MKLTAwQTA4MiAgICAgKGJhc2UgMTYpCQlOS1QgRUxFS1RST05JSyBBL1MKLQkJCQlOS1QgQUxMRSA4NQotCQkJCURLLTI2MDUgQlJPTkRCWQotCQkJCURFTk1BUksKLQotMDAtQTAtODMgICAoaGV4KQkJQVNJTU1QSE9OWSBUVVJLRVkKLTAwQTA4MyAgICAgKGJhc2UgMTYpCQlBU0lNTVBIT05ZIFRVUktFWQotCQkJCUVMRUNUUk9OSUNTLCBMVEQuCi0JCQkJIzE2MC4yNjAgLSA2NjUxIEVMTUJSSURHRSBXQVkgUklDSE1PTkQgQgotCQkJCVY3QyA0TjEKLQkJCQlDQU5BREEKLQotMDAtQTAtODQgICAoaGV4KQkJRGF0YXBsZXggUHR5IEx0ZAotMDBBMDg0ICAgICAoYmFzZSAxNikJCURhdGFwbGV4IFB0eSBMdGQKLQkJCQlMZXZlbCAyLCA3MSBFcHBpbmcgUmQsCi0JCQkJTk9SVEggIFJZREUgTlNXIDIxMTMKLQkJCQlBVVNUUkFMSUEKLQotMDAtQTAtODUgICAoaGV4KQkJUFJJVkFURQotMDBBMDg1ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0wMC1BMC04NiAgIChoZXgpCQlBTUJFUiBXQVZFIFNZU1RFTVMsIElOQy4KLTAwQTA4NiAgICAgKGJhc2UgMTYpCQlBTUJFUiBXQVZFIFNZU1RFTVMsIElOQy4KLQkJCQk0MDMgTUFTU0FDSFVTRVRUUyBBVkVOVUUKLQkJCQlTVUlURSAjMjAyCi0JCQkJQUNUT04gTUEgMDE3MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTg3ICAgKGhleCkJCVphcmxpbmsgU2VtaWNvbmR1Y3RvciBMdGQuCi0wMEEwODcgICAgIChiYXNlIDE2KQkJWmFybGluayBTZW1pY29uZHVjdG9yIEx0ZC4KLQkJCQlDaGVuZXkgTWFub3IsIFN3aW5kb24KLQkJCQlXaWx0c2hpcmUgU04yIDJRVyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtODggICAoaGV4KQkJRVNTRU5USUFMIENPTU1VTklDQVRJT05TCi0wMEEwODggICAgIChiYXNlIDE2KQkJRVNTRU5USUFMIENPTU1VTklDQVRJT05TCi0JCQkJNDM3NCBBTEVYQU5ERVIgQkxWRC4gTkUtU1RFCi0JCQkJQUxCVVFVRVJRVUUgTk0gODcxMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTg5ICAgKGhleCkJCVhQT0lOVCBURUNITk9MT0dJRVMsIElOQy4KLTAwQTA4OSAgICAgKGJhc2UgMTYpCQlYUE9JTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJOTAyIENMSU5UIE1PT1JFIFJELi1TVEUjMTMyCi0JCQkJQk9DQSBSQVRPTiBGTCAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOEEgICAoaGV4KQkJQlJPT0tUUk9VVCBURUNITk9MT0dZLCBJTkMuCi0wMEEwOEEgICAgIChiYXNlIDE2KQkJQlJPT0tUUk9VVCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTQ0IEdPVUxEIFNUUkVFVC0gU1VJVEUgIzIwMAotCQkJCU5FRURIQU0gTUEgMDIxOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLThCICAgKGhleCkJCUFTVE9OIEVMRUNUUk9OSUMgREVTSUdOUyBMVEQuCi0wMEEwOEIgICAgIChiYXNlIDE2KQkJQVNUT04gRUxFQ1RST05JQyBERVNJR05TIExURC4KLQkJCQkxMjMvMTI3IERFRVBDVVQgQlJJREdFIFJPQUQKLQkJCQlERUVQQ1VULCAgQ0FNQkVSTEVZIFNVUlJFWSwgR1UxNiA2U0QKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtOEMgICAoaGV4KQkJTXVsdGlNZWRpYSBMQU5zLCBJbmMuCi0wMEEwOEMgICAgIChiYXNlIDE2KQkJTXVsdGlNZWRpYSBMQU5zLCBJbmMuCi0JCQkJNTYwMCBFWEVDVVRJVkUgQ0VOVEVSIERSSVZFCi0JCQkJU1VJVEUgIzMxMgotCQkJCUNIQVJMT1RURSBOQyAyODIxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOEQgICAoaGV4KQkJSkFDT01PIENPUlBPUkFUSU9OCi0wMEEwOEQgICAgIChiYXNlIDE2KQkJSkFDT01PIENPUlBPUkFUSU9OCi0JCQkJMjY5MDAgRS4gUElOSyBISUxMIFJPQUQKLQkJCQlJTkRFUEVOREVOQ0UgTU8gNjQwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLThFICAgKGhleCkJCUNoZWNrIFBvaW50IFNvZnR3YXJlIFRlY2hub2xvZ2llcwotMDBBMDhFICAgICAoYmFzZSAxNikJCUNoZWNrIFBvaW50IFNvZnR3YXJlIFRlY2hub2xvZ2llcwotCQkJCTgzMzMgUmlkZ2Vwb2ludCBEci4KLQkJCQlTdWl0ZSAxNTAKLQkJCQlJcnZpbmcgVFggNzUwNjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLThGICAgKGhleCkJCURFU0tORVQgU1lTVEVNUywgSU5DLgotMDBBMDhGICAgICAoYmFzZSAxNikJCURFU0tORVQgU1lTVEVNUywgSU5DLgotCQkJCTgwIEJVU0lORVNTIFBBUksgRFJJVkUKLQkJCQlBUk1PTksgTlkgMTA1MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTkwICAgKGhleCkJCVRpbWVTdGVwIENvcnBvcmF0aW9uCi0wMEEwOTAgICAgIChiYXNlIDE2KQkJVGltZVN0ZXAgQ29ycG9yYXRpb24KLQkJCQkzNTkgVEVSUlkgRk9YIERSSVZFCi0JCQkJS0FOQVRBLCBPTlRBUklPIEsySyAyRTcgIAotCQkJCUNBTkFEQQotCi0wMC1BMC05MSAgIChoZXgpCQlBUFBMSUNPTSBJTlRFUk5BVElPTkFMCi0wMEEwOTEgICAgIChiYXNlIDE2KQkJQVBQTElDT00gSU5URVJOQVRJT05BTAotCQkJCTQzLCBSVUUgTUFaQUdSQU4KLQkJCQk3NjMyMCBDQVVERUJFQy1MRVMtRUxCRVVGCi0JCQkJRlJBTkNFCi0KLTAwLUEwLTkyICAgKGhleCkJCUguIEJPTExNQU5OIE1BTlVGQUNUVVJFUlMsIExURAotMDBBMDkyICAgICAoYmFzZSAxNikJCUguIEJPTExNQU5OIE1BTlVGQUNUVVJFUlMsIExURAotCQkJCTI2IFZJQ1RPUklBIFdBWQotCQkJCUJVUkdFU1MgSElMTCBXLiBTVVNTRVggUkggMTUgOU5GCi0JCQkJRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC05MyAgIChoZXgpCQlCL0UgQUVST1NQQUNFLCBJbmMuCi0wMEEwOTMgICAgIChiYXNlIDE2KQkJQi9FIEFFUk9TUEFDRSwgSW5jLgotCQkJCTE3NDgxIFJFRCBISUxMCi0JCQkJSVJWSU5FIENBIDkyNzE0LTU2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTk0ICAgKGhleCkJCUNPTVNBVCBDT1JQT1JBVElPTgotMDBBMDk0ICAgICAoYmFzZSAxNikJCUNPTVNBVCBDT1JQT1JBVElPTgotCQkJCTIyMzAwIENPTVNBVCBEUklWRQotCQkJCUNMQVJLU0JVUkcgTUQgMjA4NzEtOTQ3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOTUgICAoaGV4KQkJQUNBQ0lBIE5FVFdPUktTLCBJTkMuCi0wMEEwOTUgICAgIChiYXNlIDE2KQkJQUNBQ0lBIE5FVFdPUktTLCBJTkMuCi0JCQkJODMxIFdPQlVSTiBTVFJFRVQKLQkJCQlXSUxNSU5HVE9OIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC05NiAgIChoZXgpCQlNSVRTVU1JIEVMRUNUUklDIENPLiwgTFRELgotMDBBMDk2ICAgICAoYmFzZSAxNikJCU1JVFNVTUkgRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJMi0xMS0yLCBUc3VydW1ha2kKLQkJCQlUYW1hLXNoaSBUb2t5byAyMDYtODU2NwotCQkJCUpBUEFOCi0KLTAwLUEwLTk3ICAgKGhleCkJCUpDIElORk9STUFUSU9OIFNZU1RFTVMKLTAwQTA5NyAgICAgKGJhc2UgMTYpCQlKQyBJTkZPUk1BVElPTiBTWVNURU1TCi0JCQkJNDQ4NyBURUNITk9MT0dZIERSSVZFCi0JCQkJRlJFTU9OVCBDQSA5NDUzOC02MzQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC05OCAgIChoZXgpCQlOZXRBcHAKLTAwQTA5OCAgICAgKGJhc2UgMTYpCQlOZXRBcHAKLQkJCQk0OTUgRWFzdCBKYXZhIERyaXZlCi0JCQkJU3Vubnl2YWxlLCBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOTkgICAoaGV4KQkJSy1ORVQgTFRELgotMDBBMDk5ICAgICAoYmFzZSAxNikJCUstTkVUIExURC4KLQkJCQlTQURETEVSUyBIT1VTRQotCQkJCTEwMCBSRUFESU5HIFJELgotCQkJCVlBVEVMRVksIFNVUlJFWSBHVTE3IDdSWCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtOUEgICAoaGV4KQkJTklIT04gS09IREVOIEFNRVJJQ0EKLTAwQTA5QSAgICAgKGJhc2UgMTYpCQlOSUhPTiBLT0hERU4gQU1FUklDQQotCQkJCTI0NDYgRFVQT05UIERSSVZFCi0JCQkJSVJWSU5FIENBIDkyNzE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC05QiAgIChoZXgpCQlRUFNYIENPTU1VTklDQVRJT05TLCBMVEQuCi0wMEEwOUIgICAgIChiYXNlIDE2KQkJUVBTWCBDT01NVU5JQ0FUSU9OUywgTFRELgotCQkJCTMzIFJJQ0hBUkRTT04gU1RSRUVUCi0JCQkJV0VTVCBQRVJUSCA2MDA1Ci0JCQkJQVVTVFJBTElBCi0KLTAwLUEwLTlDICAgKGhleCkJCVh5cGxleCwgSW5jLgotMDBBMDlDICAgICAoYmFzZSAxNikJCVh5cGxleCwgSW5jLgotCQkJCTI1IEZPU1RFUiBTVFJFRVQKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTlEICAgKGhleCkJCUpPSE5BVEhPTiBGUkVFTUFOIFRFQ0hOT0xPR0lFUwotMDBBMDlEICAgICAoYmFzZSAxNikJCUpPSE5BVEhPTiBGUkVFTUFOIFRFQ0hOT0xPR0lFUwotCQkJCVAuTy4gQk9YIDg4MDExNAotCQkJCVNBTiBGUkFOQ0lTQ08gQ0EgOTQxODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLTlFICAgKGhleCkJCUlDVFYKLTAwQTA5RSAgICAgKGJhc2UgMTYpCQlJQ1RWCi0JCQkJMTQ2MDAgV0lOQ0hFU1RFUiBCTFZELgotCQkJCUxPUyBHQVRPUyBDQSA5NTAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtOUYgICAoaGV4KQkJQ09NTVZJU0lPTiBDT1JQLgotMDBBMDlGICAgICAoYmFzZSAxNikJCUNPTU1WSVNJT04gQ09SUC4KLQkJCQk1MTAgTE9HVUUgQVZFLgotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUEwICAgKGhleCkJCUNPTVBBQ1QgREFUQSwgTFRELgotMDBBMEEwICAgICAoYmFzZSAxNikJCUNPTVBBQ1QgREFUQSwgTFRELgotCQkJCTU4IERJVFRPTiBXQUxLCi0JCQkJQ0FNQlJJREdFIENCNSA4UUUgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLUExICAgKGhleCkJCUVQSUMgREFUQSBJTkMuCi0wMEEwQTEgICAgIChiYXNlIDE2KQkJRVBJQyBEQVRBIElOQy4KLQkJCQk3MjgwIFJJVkVSIFJPQUQKLQkJCQlSSUNITU9ORCwgIEIuQy4KLQkJCQlDQU5BREEgVjZYIDFYNQotCQkJCUNBTkFEQQotCi0wMC1BMC1BMiAgIChoZXgpCQlESUdJQ09NIFMuUC5BLgotMDBBMEEyICAgICAoYmFzZSAxNikJCURJR0lDT00gUy5QLkEuCi0JCQkJVklBIFZPTFRBIDM5Ci0JCQkJMjEwMTAgQ0FSREFOTyBBTCBDQU1QTyAoVkEpCi0JCQkJSVRBTFkKLQotMDAtQTAtQTMgICAoaGV4KQkJUkVMSUFCTEUgUE9XRVIgTUVURVJTCi0wMEEwQTMgICAgIChiYXNlIDE2KQkJUkVMSUFCTEUgUE9XRVIgTUVURVJTCi0JCQkJNDAwIEJMT1NTT00gSElMTCBST0FECi0JCQkJTE9TIEdBVE9TIENBIDk1MDMyLTQ1MTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUE0ICAgKGhleCkJCU1JQ1JPUyBTWVNURU1TLCBJTkMuCi0wMEEwQTQgICAgIChiYXNlIDE2KQkJTUlDUk9TIFNZU1RFTVMsIElOQy4KLQkJCQkxMjAwMCBCQUxUSU1PUkUgQVZFTlVFCi0JCQkJQkVMVFNWSUxMRSBNRCAyMDcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQTUgICAoaGV4KQkJVEVLTk9SIE1JQ1JPU1lTVEVNRSwgSU5DLgotMDBBMEE1ICAgICAoYmFzZSAxNikJCVRFS05PUiBNSUNST1NZU1RFTUUsIElOQy4KLQkJCQk2MTYgQ1VSRSBCT0lWSU4KLQkJCQlCT0lTQlJJQU5EIFFVRUJFQwotCQkJCUo3RyAyQTcKLQkJCQlDQU5BREEKLQotMDAtQTAtQTYgICAoaGV4KQkJTS5JLiBTWVNURU1TLCBLLksuCi0wMEEwQTYgICAgIChiYXNlIDE2KQkJTS5JLiBTWVNURU1TLCBLLksuCi0JCQkJMi03LTEyLTMwOCBTYXRzdWtpZ2Fva2EKLQkJCQlJa2VkYS1TaGkgT3Nha2EgNTYzLTAwMjkKLQkJCQlKQVBBTgotCi0wMC1BMC1BNyAgIChoZXgpCQlWT1JBWCBDT1JQT1JBVElPTgotMDBBMEE3ICAgICAoYmFzZSAxNikJCVZPUkFYIENPUlBPUkFUSU9OCi0JCQkJMTAzMSBFQVNUIERVQU5FIEFWRU5VRSwgU1RFIEgKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUE4ICAgKGhleCkJCVJFTkVYIENPUlBPUkFUSU9OCi0wMEEwQTggICAgIChiYXNlIDE2KQkJUkVORVggQ09SUE9SQVRJT04KLQkJCQkyNzUwIEtJTExBUk5FWSBEUklWRQotCQkJCVdPT0RCUklER0UgVkEgMjIxOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUE5ICAgKGhleCkJCU5BVlRFTCBDT01NVU5JQ0FUSU9OUyBJTkMuCi0wMEEwQTkgICAgIChiYXNlIDE2KQkJTkFWVEVMIENPTU1VTklDQVRJT05TIElOQy4KLQkJCQk1NSBSRU5GUkVXIERSSVZFCi0JCQkJTUFSS0hBTSwgT05UQVJJTyBMM1IgOEgzICAKLQkJCQlDQU5BREEKLQotMDAtQTAtQUEgICAoaGV4KQkJU1BBQ0VMQUJTIE1FRElDQUwKLTAwQTBBQSAgICAgKGJhc2UgMTYpCQlTUEFDRUxBQlMgTUVESUNBTAotCQkJCTUxNTAgMjIwIEF2ZSBTRQotCQkJCUlzc2FxdWFoIFdBIDk4MDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1BQiAgIChoZXgpCQlORVRDUyBJTkZPUk1BVElPTlNURUNITklLIEdNQkgKLTAwQTBBQiAgICAgKGJhc2UgMTYpCQlORVRDUyBJTkZPUk1BVElPTlNURUNITklLIEdNQkgKLQkJCQlLQVRIQVJJTkVOU1RSQVNTRSAxNy0xOAotCQkJCUQtMTA3MTEgQkVSTElOLAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLUFDICAgKGhleCkJCUdJTEFUIFNBVEVMTElURSBORVRXT1JLUywgTFRELgotMDBBMEFDICAgICAoYmFzZSAxNikJCUdJTEFUIFNBVEVMTElURSBORVRXT1JLUywgTFRELgotCQkJCTI0QSBIQUJBUlpFTCBTVFJFRVQKLQkJCQlURUwgQVZJViAgNjk3MTAKLQkJCQlJU1JBRUwKLQotMDAtQTAtQUQgICAoaGV4KQkJTUFSQ09OSSBTUEEKLTAwQTBBRCAgICAgKGJhc2UgMTYpCQlNQVJDT05JIFNQQQotCQkJCVZJQSBORUdST05FLCAxQQotCQkJCTE2MTUzIEdFTk9WQSBDT1JOSUdMSUFOTyAgCi0JCQkJSVRBTFkKLQotMDAtQTAtQUUgICAoaGV4KQkJTlVDT00gU1lTVEVNUywgSU5DLgotMDBBMEFFICAgICAoYmFzZSAxNikJCU5VQ09NIFNZU1RFTVMsIElOQy4KLQkJCQk5Ri02LCBOTyA0LCBMQU5FCi0JCQkJNjA5IENIVU5HIEhTSU4gUk9BRCwgU0VDLiA1LCBTQU4gQ0hVTkcgQwotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1BMC1BRiAgIChoZXgpCQlXTVMgSU5EVVNUUklFUwotMDBBMEFGICAgICAoYmFzZSAxNikJCVdNUyBJTkRVU1RSSUVTCi0JCQkJMzQwMSBOLiBDQUxJRk9STklBCi0JCQkJQ0hJQ0FHTyBJTCA2MDYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjAgICAoaGV4KQkJSS1PIERBVEEgREVWSUNFLCBJTkMuCi0wMEEwQjAgICAgIChiYXNlIDE2KQkJSS1PIERBVEEgREVWSUNFLCBJTkMuCi0JCQkJMjQtMSwgU0FLVVJBREEtTUFDSEkKLQkJCQlLQU5BWkFXQSwgSVNISUtBV0EgOTIwICAKLQkJCQlKQVBBTgotCi0wMC1BMC1CMSAgIChoZXgpCQlGSVJTVCBWSVJUVUFMIENPUlBPUkFUSU9OCi0wMEEwQjEgICAgIChiYXNlIDE2KQkJRklSU1QgVklSVFVBTCBDT1JQT1JBVElPTgotCQkJCTMzOTMgT0NUQVZJVVMgRFIuLVNURS4jIDEwMgotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1CMiAgIChoZXgpCQlTSElNQSBTRUlLSQotMDBBMEIyICAgICAoYmFzZSAxNikJCVNISU1BIFNFSUtJCi0JCQkJODUsIFNBS0FUQSBXQUtBWUFNQS1DSVRZCi0JCQkJV0FLQVlBTUEgNjQxCi0JCQkJSkFQQU4KLQotMDAtQTAtQjMgICAoaGV4KQkJWllLUk9OSVgKLTAwQTBCMyAgICAgKGJhc2UgMTYpCQlaWUtST05JWAotCQkJCTcyNDggU09VVEggVFVDU09OIFdBWQotCQkJCUVOR0xFV09PRCBDTyA4MDExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjQgICAoaGV4KQkJVEVYQVMgTUlDUk9TWVNURU1TLCBJTkMuCi0wMEEwQjQgICAgIChiYXNlIDE2KQkJVEVYQVMgTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJNTk1OSBDT1JQT1JBVEUgRFJJVkUKLQkJCQlIT1VTVE9OIFRYIDc3MDM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1CNSAgIChoZXgpCQkzSCBURUNITk9MT0dZCi0wMEEwQjUgICAgIChiYXNlIDE2KQkJM0ggVEVDSE5PTE9HWQotCQkJCTMzNzUgU0NPVFQgQkxWRC4gIzMzNgotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1CNiAgIChoZXgpCQlTQU5SSVRaIEFVVE9NQVRJT04gQ08uLCBMVEQuCi0wMEEwQjYgICAgIChiYXNlIDE2KQkJU0FOUklUWiBBVVRPTUFUSU9OIENPLiwgTFRELgotCQkJCTQtMjEgTUlOQU1JIE5BUlVTRQotCQkJCU1BQ0hJREEgQ0lUWSBUT0tZTyAgMTk0Ci0JCQkJSkFQQU4KLQotMDAtQTAtQjcgICAoaGV4KQkJQ09SREFOVCwgSU5DLgotMDBBMEI3ICAgICAoYmFzZSAxNikJCUNPUkRBTlQsIElOQy4KLQkJCQkxMTQwMCBDT01NRVJDRSBQQVJLIERSLgotCQkJCVJFU1RPTiBWQSAyMjA5MS0xNTA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1COCAgIChoZXgpCQlTWU1CSU9TIExPR0lDIElOQy4KLTAwQTBCOCAgICAgKGJhc2UgMTYpCQlTWU1CSU9TIExPR0lDIElOQy4KLQkJCQkyMDAxIERhbmZpZWxkIEN0LgotCQkJCUZvcnQgQ29sbGlucyBDTyA4MDUyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQjkgICAoaGV4KQkJRUFHTEUgVEVDSE5PTE9HWSwgSU5DLgotMDBBMEI5ICAgICAoYmFzZSAxNikJCUVBR0xFIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk2ODAwIE9SQU5HRVRIT1JQRSBBVkUuLCBVTklUIEEKLQkJCQlCVUVOQSBQQVJLIENBIDkwNjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1CQSAgIChoZXgpCQlQQVRUT04gRUxFQ1RST05JQ1MgQ08uCi0wMEEwQkEgICAgIChiYXNlIDE2KQkJUEFUVE9OIEVMRUNUUk9OSUNTIENPLgotCQkJCTc2MjIgUklDS0VOQkFDS0VSIERSSVZFCi0JCQkJR0FJVEhFUlNCVVJHIE1EIDIwODc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1CQiAgIChoZXgpCQlISUxBTiBHTUJICi0wMEEwQkIgICAgIChiYXNlIDE2KQkJSElMQU4gR01CSAotCQkJCUhBSUQtVU5ELU5FVS1TVFJBU1NFIDcKLQkJCQlELTc2MTMxIEtBUkxTUlVIRQotCQkJCUdFUk1BTlkKLQotMDAtQTAtQkMgICAoaGV4KQkJVklBU0FULCBJTkNPUlBPUkFURUQKLTAwQTBCQyAgICAgKGJhc2UgMTYpCQlWSUFTQVQsIElOQ09SUE9SQVRFRAotCQkJCTYxNTUgRWwgQ2FtaW5vIFJlYWwKLQkJCQlDYXJsc2JhZCBDYSA5MjAwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQkQgICAoaGV4KQkJSS1URUNIIENPUlAuCi0wMEEwQkQgICAgIChiYXNlIDE2KQkJSS1URUNIIENPUlAuCi0JCQkJMTAyMDAgVkFMTEVZIFZJRVcgUk9BRAotCQkJCUVERU4gUFJBSVJJRSBNTiA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQkUgICAoaGV4KQkJSU5URUdSQVRFRCBDSVJDVUlUIFNZU1RFTVMsIElOQy4gQ09NTVVOSUNBVElPTlMgR1JPVVAKLTAwQTBCRSAgICAgKGJhc2UgMTYpCQlJTlRFR1JBVEVEIENJUkNVSVQgU1lTVEVNUywgSU5DLiBDT01NVU5JQ0FUSU9OUyBHUk9VUAotCQkJCTEyNzEgUEFSS01PT1IgQVZFTlVFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjYtMzQ0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQkYgICAoaGV4KQkJV0lSRUxFU1MgREFUQSBHUk9VUCBNT1RPUk9MQQotMDBBMEJGICAgICAoYmFzZSAxNikJCVdJUkVMRVNTIERBVEEgR1JPVVAgTU9UT1JPTEEKLQkJCQkxMjAxIEUuIFdJTEVZIFJPQUQKLQkJCQlTQ0hBVU1CVVJHIElMIDYwMTczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1DMCAgIChoZXgpCQlESUdJVEFMIExJTksgQ09SUC4KLTAwQTBDMCAgICAgKGJhc2UgMTYpCQlESUdJVEFMIExJTksgQ09SUC4KLQkJCQkyMTcgSFVNQk9MRFQgQ09VUlQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUMxICAgKGhleCkJCU9SVElWVVMgTUVESUNBTCBBQgotMDBBMEMxICAgICAoYmFzZSAxNikJCU9SVElWVVMgTUVESUNBTCBBQgotCQkJCUJPWCA1MTMKLQkJCQlTLTE4MzI1IFRBQlkKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtQTAtQzIgICAoaGV4KQkJUi5BLiBTWVNURU1TIENPLiwgTFRELgotMDBBMEMyICAgICAoYmFzZSAxNikJCVIuQS4gU1lTVEVNUyBDTy4sIExURC4KLQkJCQkxODUwLTMgSElST09LQU5PTVVSQQotCQkJCVNISU9KSVJJLVNISSwgTkFHQU1PIDM5OS0wNwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQTAtQzMgICAoaGV4KQkJVU5JQ09NUFVURVIgR01CSAotMDBBMEMzICAgICAoYmFzZSAxNikJCVVOSUNPTVBVVEVSIEdNQkgKLQkJCQlMSU1CVVJHRVIgU1RSQVNTRSA0OAotCQkJCUQtNjE0NzYgS1JPTkJFUkcgSS5ULlMuCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQTAtQzQgICAoaGV4KQkJQ1JJU1RJRSBFTEVDVFJPTklDUyBMVEQuCi0wMEEwQzQgICAgIChiYXNlIDE2KQkJQ1JJU1RJRSBFTEVDVFJPTklDUyBMVEQuCi0JCQkJQk9ORCdTIE1JTEwKLQkJCQlTVE9ORUhPVVNFCi0JCQkJR0xPVUNFU1RFUlNISVJFIEdMMTAgM1JHICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC1DNSAgIChoZXgpCQlaWVhFTCBDT01NVU5JQ0FUSU9OCi0wMEEwQzUgICAgIChiYXNlIDE2KQkJWllYRUwgQ09NTVVOSUNBVElPTgotCQkJCTJORCBGTFIuLCAgNTggUEFSSyBBVkVOVUUgSUkKLQkJCQlTQ0lFTkNFIEJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCUhTSU5DSFUgMzAwNzcgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQTAtQzYgICAoaGV4KQkJUVVBTENPTU0gSU5DT1JQT1JBVEVECi0wMEEwQzYgICAgIChiYXNlIDE2KQkJUVVBTENPTU0gSU5DT1JQT1JBVEVECi0JCQkJIDU3NzUgTW9yZWhvdXNlIERyCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1DNyAgIChoZXgpCQlUQURJUkFOIFRFTEVDT01NVU5JQ0FUSU9OUwotMDBBMEM3ICAgICAoYmFzZSAxNikJCVRBRElSQU4gVEVMRUNPTU1VTklDQVRJT05TCi0JCQkJUC5PLiBCT1ggNTAwCi0JCQkJUEVUQUgtVElLVkEgNDkxMDQgIAotCQkJCUlTUkFFTAotCi0wMC1BMC1DOCAgIChoZXgpCQlBRFRSQU4gSU5DLgotMDBBMEM4ICAgICAoYmFzZSAxNikJCUFEVFJBTiBJTkMuCi0JCQkJOTAxIEVYUExPUkVSIEJMVkQuCi0JCQkJSFVOVFNWSUxMRSBBTCAzNTgwNi0yODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1DOSAgIChoZXgpCQlJTlRFTCBDT1JQT1JBVElPTiAtIEhGMS0wNgotMDBBMEM5ICAgICAoYmFzZSAxNikJCUlOVEVMIENPUlBPUkFUSU9OIC0gSEYxLTA2Ci0JCQkJNTIwMCBORSBFTEFNIFlPVU5HIFBBUktXQVkKLQkJCQlISUxMU0JPUk8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUNBICAgKGhleCkJCUZVSklUU1UgREVOU08gTFRELgotMDBBMENBICAgICAoYmFzZSAxNikJCUZVSklUU1UgREVOU08gTFRELgotCQkJCTMwNTUgT1JDSEFSRCBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1DQiAgIChoZXgpCQlBUksgVEVMRUNPTU1VTklDQVRJT05TLCBJTkMuCi0wMEEwQ0IgICAgIChiYXNlIDE2KQkJQVJLIFRFTEVDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTEyNCBDQVJNRU4gTEFORS0tU1VJVEUKLQkJCQlTQU5UQSBNQVJJQSBDQSA5MzQ1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQ0MgICAoaGV4KQkJTElURS1PTiBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBBMENDICAgICAoYmFzZSAxNikJCUxJVEUtT04gQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk3MjAgUy4gSElMTFZJRVcgRFJJVkUKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtQ0QgICAoaGV4KQkJRFIuIEpPSEFOTkVTIEhFSURFTkhBSU4gR21iSAotMDBBMENEICAgICAoYmFzZSAxNikJCURSLiBKT0hBTk5FUyBIRUlERU5IQUlOIEdtYkgKLQkJCQlEUi4tSk9IQU5ORVMtSEVJREVOSEFJTiBTVFIuCi0JCQkJODMzMDEgVFJBVU5SRVVUICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUEwLUNFICAgKGhleCkJCUVjZXNzYQotMDBBMENFICAgICAoYmFzZSAxNikJCUVjZXNzYQotCQkJCTI4MDAgQ2FtcHVzIERyaXZlIAotCQkJCVN1aXRlIDE0MAotCQkJCVBseW1vdXRoIE1OIDU1NDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1DRiAgIChoZXgpCQlTT1RBUywgSU5DLgotMDBBMENGICAgICAoYmFzZSAxNikJCVNPVEFTLCBJTkMuCi0JCQkJMiBSRVNFQVJDSCBQTEFDRSwgU1RFLgotCQkJCVJPQ0tWSUxMRSBNRCAyMDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRDAgICAoaGV4KQkJVEVOIFggVEVDSE5PTE9HWSwgSU5DLgotMDBBMEQwICAgICAoYmFzZSAxNikJCVRFTiBYIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkxMzA5MSBQT05EIFNQUklOR1MgUk9BRCwgU3VpdGUgQi0yMDAKLQkJCQlBVVNUSU4gVFggNzg3MjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUQxICAgKGhleCkJCUlOVkVOVEVDIENPUlBPUkFUSU9OCi0wMEEwRDEgICAgIChiYXNlIDE2KQkJSU5WRU5URUMgQ09SUE9SQVRJT04KLQkJCQlJTlZFTlRFQyBCVUlMRElORwotCQkJCTY2IEhPVS1LQU5HIFNUUkVFVCBTSEktTElOIERJU1RSSUNULCBUQUkKLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQTAtRDIgICAoaGV4KQkJQUxMSUVEIFRFTEVTSVMgSU5URVJOQVRJT05BTCBDT1JQT1JBVElPTgotMDBBMEQyICAgICAoYmFzZSAxNikJCUFMTElFRCBURUxFU0lTIElOVEVSTkFUSU9OQUwgQ09SUE9SQVRJT04KLQkJCQk5NTAgS0lGRVIgUk9BRAotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRDMgICAoaGV4KQkJSU5TVEVNIENPTVBVVEVSIFNZU1RFTVMsIExURC4KLTAwQTBEMyAgICAgKGJhc2UgMTYpCQlJTlNURU0gQ09NUFVURVIgU1lTVEVNUywgTFRELgotCQkJCVdBTFRPTiBJTkRVU1RSSUFMIEVTVEFURQotCQkJCVNUT05FLCBTVEFGRk9SRFNISVJFIFNUMTUgT0xUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtRDQgICAoaGV4KQkJUkFESU9MQU4sICBJTkMuCi0wMEEwRDQgICAgIChiYXNlIDE2KQkJUkFESU9MQU4sICBJTkMuCi0JCQkJNDU0IERFR1VJR05FIERSSVZFIC0gU1RFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1ENSAgIChoZXgpCQlTSUVSUkEgV0lSRUxFU1MgSU5DLgotMDBBMEQ1ICAgICAoYmFzZSAxNikJCVNJRVJSQSBXSVJFTEVTUyBJTkMuCi0JCQkJMTM4MTEgV2lyZWxlc3MgV2F5Ci0JCQkJUklDSE1PTkQgQi5DLiBWNlYgM0E0Ci0JCQkJQ0FOQURBCi0KLTAwLUEwLUQ2ICAgKGhleCkJCVNCRSwgSU5DLgotMDBBMEQ2ICAgICAoYmFzZSAxNikJCVNCRSwgSU5DLgotCQkJCTIzMDUgQ2FtaW5vIFJhbW9uCi0JCQkJU0FOIFJBTU9OIENBIDk0NTgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1ENyAgIChoZXgpCQlLQVNURU4gQ0hBU0UgQVBQTElFRCBSRVNFQVJDSAotMDBBMEQ3ICAgICAoYmFzZSAxNikJCUtBU1RFTiBDSEFTRSBBUFBMSUVEIFJFU0VBUkNICi0JCQkJNTEwMCBPUkJJVE9SIERSSVZFCi0JCQkJTUlTU0lTU0FVR0EsIE9OVEFSSU8KLQkJCQlMNFcgNFo0Ci0JCQkJQ0FOQURBCi0KLTAwLUEwLUQ4ICAgKGhleCkJCVNQRUNUUkEgLSBURUsKLTAwQTBEOCAgICAgKGJhc2UgMTYpCQlTUEVDVFJBIC0gVEVLCi0JCQkJT1VUR0FORyBMQU5FCi0JCQkJUElDS0VSSU5HIE5PUlRIIFlPUktTSElSRQotCQkJCUVOR0xBTkQgWTAxOCBGSkEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC1EOSAgIChoZXgpCQlDT05WRVggQ09NUFVURVIgQ09SUE9SQVRJT04KLTAwQTBEOSAgICAgKGJhc2UgMTYpCQlDT05WRVggQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQkzMDAwIFdBVEVSVklFVyBQQVJLV0FZCi0JCQkJUC5PLiBCT1ggODMzODUxCi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4My0zODUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1EQSAgIChoZXgpCQlJTlRFR1JBVEVEIFNZU1RFTVMgVGVjaG5vbG9neSwgSW5jLgotMDBBMERBICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgU1lTVEVNUyBUZWNobm9sb2d5LCBJbmMuCi0JCQkJNDYwMSBQUkVTSURFTlRTIERSSVZFCi0JCQkJU1VJVEUgIzIxMAotCQkJCUxBTkhBTSBNRCAyMDcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtREIgICAoaGV4KQkJRklTSEVSICYgUEFZS0VMIFBST0RVQ1RJT04KLTAwQTBEQiAgICAgKGJhc2UgMTYpCQlGSVNIRVIgJiBQQVlLRUwgUFJPRFVDVElPTgotCQkJCU1BQ0hJTkVSWSBMSU1JVEVECi0JCQkJUC5PLiBCT1ggNTgtMjIzLCBHUkVFTk1PVU5UIEFVQ0tMQU5ECi0JCQkJTkVXIFpFQUxBTkQKLQotMDAtQTAtREMgICAoaGV4KQkJTy5OLiBFTEVDVFJPTklDIENPLiwgTFRELgotMDBBMERDICAgICAoYmFzZSAxNikJCU8uTi4gRUxFQ1RST05JQyBDTy4sIExURC4KLQkJCQkzLTIwLTI3LCBUQVJVTUkKLQkJCQlTVUlUQSwgT1NBS0EgNTY0ICAKLQkJCQlKQVBBTgotCi0wMC1BMC1ERCAgIChoZXgpCQlBWk9OSVggQ09SUE9SQVRJT04KLTAwQTBERCAgICAgKGJhc2UgMTYpCQlBWk9OSVggQ09SUE9SQVRJT04KLQkJCQk5MDAgTUlERExFU0VYIFRVUk5QSUtFCi0JCQkJQkxERy4KLQkJCQlCSUxMRVJJQ0EgTUEgMDE4MjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLURFICAgKGhleCkJCVlBTUFIQSBDT1JQT1JBVElPTgotMDBBMERFICAgICAoYmFzZSAxNikJCVlBTUFIQSBDT1JQT1JBVElPTgotCQkJCUVMRUNUUk9OSUMgREVWSUNFUyBESVZJU0lPTgotCQkJCTIwMyBNQVRTVU5PS0lKSU1BIFRPWU9PS0EtTVVSQSBJV0FUQS1HVU4KLQkJCQk0MzgtMDEKLQkJCQlKQVBBTgotCi0wMC1BMC1ERiAgIChoZXgpCQlTVFMgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEEwREYgICAgIChiYXNlIDE2KQkJU1RTIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTEzNzY1IFNULiBDSEFSTEVTIFJPQ0sgUkQuCi0JCQkJU1VJVEUgIzEwOAotCQkJCUJSSURHRVRPTiBNTyA2MzA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRTAgICAoaGV4KQkJVEVOTllTT04gVEVDSE5PTE9HSUVTIFBUWSBMVEQKLTAwQTBFMCAgICAgKGJhc2UgMTYpCQlURU5OWVNPTiBURUNITk9MT0dJRVMgUFRZIExURAotCQkJCTE0IEJVU0lORVNTIFBBUksgRFJJVkUKLQkJCQlOT1RUSU5HIEhJTEwKLQkJCQlWSUNUT1JJQSAtIDMxNjggIAotCQkJCUFVU1RSQUxJQQotCi0wMC1BMC1FMSAgIChoZXgpCQlXRVNUUE9SVCBSRVNFQVJDSCBBU1NPQ0lBVEVTLCBJTkMuCi0wMEEwRTEgICAgIChiYXNlIDE2KQkJV0VTVFBPUlQgUkVTRUFSQ0ggQVNTT0NJQVRFUywgSU5DLgotCQkJCTYxMDIgQVJMSU5HVE9OCi0JCQkJUkFZVE9XTiBNTyA2NDEzMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRTIgICAoaGV4KQkJS2Vpc29rdWdpa2VuIENvcnBvcmF0aW9uCi0wMEEwRTIgICAgIChiYXNlIDE2KQkJS2Vpc29rdWdpa2VuIENvcnBvcmF0aW9uCi0JCQkJMjAyMS01IEhvdXNoYWt1amkKLQkJCQlUYWthbmV6YXdhLW1hY2hpCi0JCQkJU2hpb3lhLWd1biBUb2NoaWdpIDMyOS0xMjMzCi0JCQkJSkFQQU4KLQotMDAtQTAtRTMgICAoaGV4KQkJWEtMIFNZU1RFTVMgQ09SUC4KLTAwQTBFMyAgICAgKGJhc2UgMTYpCQlYS0wgU1lTVEVNUyBDT1JQLgotCQkJCTg0MjAgMTU0VEggQVZFLiBORQotCQkJCVJFRE1PTkQgV0EgOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUU0ICAgKGhleCkJCU9QVElRVUVTVAotMDBBMEU0ICAgICAoYmFzZSAxNikJCU9QVElRVUVTVAotCQkJCTIwNDkwIEJVU0lORVNTIFBBUktXQVkKLQkJCQlXQUxOVVQgQ0EgOTE3ODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUU1ICAgKGhleCkJCU5IQyBDT01NVU5JQ0FUSU9OUwotMDBBMEU1ICAgICAoYmFzZSAxNikJCU5IQyBDT01NVU5JQ0FUSU9OUwotCQkJCTU0NTAgQ09URSBERSBMSUVTU0UKLQkJCQlNT05UUkVBTCwgUVVFQkVDIEg0UCAxQTUKLQkJCQlDQU5BREEKLQotMDAtQTAtRTYgICAoaGV4KQkJRElBTE9HSUMgQ09SUE9SQVRJT04KLTAwQTBFNiAgICAgKGJhc2UgMTYpCQlESUFMT0dJQyBDT1JQT1JBVElPTgotCQkJCTE1MTUgUk9VVEUgMTAKLQkJCQlQQVJTSVBQQU5ZIE5KIDA3MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1FNyAgIChoZXgpCQlDRU5UUkFMIERBVEEgQ09SUE9SQVRJT04KLTAwQTBFNyAgICAgKGJhc2UgMTYpCQlDRU5UUkFMIERBVEEgQ09SUE9SQVRJT04KLQkJCQkxNjAyIE5FV1RPTiBEUklWRQotCQkJCUNIQU1QQUlHTiBJTCA2MTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRTggICAoaGV4KQkJUkVVVEVSUyBIT0xESU5HUyBQTEMKLTAwQTBFOCAgICAgKGJhc2UgMTYpCQlSRVVURVJTIEhPTERJTkdTIFBMQwotCQkJCTg1LCBGTEVFVCBTVFJFRVQKLQkJCQlMT05ET04gIEVDNFAgNEFKCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUEwLUU5ICAgKGhleCkJCUVMRUNUUk9OSUMgUkVUQUlMSU5HIFNZU1RFTVMgSU5URVJOQVRJT05BTAotMDBBMEU5ICAgICAoYmFzZSAxNikJCUVMRUNUUk9OSUMgUkVUQUlMSU5HIFNZU1RFTVMgSU5URVJOQVRJT05BTAotCQkJCTM3MiBEQU5CVVJZIFJPQUQKLQkJCQlXSUxUT04gQ1QgMDY4OTctMjUyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRUEgICAoaGV4KQkJRVRIRVJDT00gQ09SUC4KLTAwQTBFQSAgICAgKGJhc2UgMTYpCQlFVEhFUkNPTSBDT1JQLgotCQkJCTQ1OTkwIEhPVENIS0lTUyBTVC4KLQkJCQlGUkVFTU9OVCBDQSA5NDUzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRUIgICAoaGV4KQkJRW5jb3JlIE5ldHdvcmtzLCBJbmMuCi0wMEEwRUIgICAgIChiYXNlIDE2KQkJRW5jb3JlIE5ldHdvcmtzLCBJbmMuCi0JCQkJMzgwMCBDb25jb3JkZSBQYXJrd2F5LAotCQkJCVN1aXRlIDE1MDAKLQkJCQlDaGFudGlsbHksIFZBIDIwMTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1FQyAgIChoZXgpCQlUUkFOU01JVFRPTiBMVEQuCi0wMEEwRUMgICAgIChiYXNlIDE2KQkJVFJBTlNNSVRUT04gTFRELgotCQkJCVNNSVNCWSBST0FECi0JCQkJQVNIQlkgREUgTEEgWk9VQ0gKLQkJCQlMRUlDRVNURVJTSElSRSBMRTY1IDJVRyAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQTAtRUQgICAoaGV4KQkJQnJvb2tzIEF1dG9tYXRpb24sIEluYy4KLTAwQTBFRCAgICAgKGJhc2UgMTYpCQlCcm9va3MgQXV0b21hdGlvbiwgSW5jLgotCQkJCTE1IEVsaXphYmV0aCBEcml2ZQotCQkJCUNoZWxtc2ZvcmQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUVFICAgKGhleCkJCU5BU0hPQkEgTkVUV09SS1MKLTAwQTBFRSAgICAgKGJhc2UgMTYpCQlOQVNIT0JBIE5FVFdPUktTCi0JCQkJOS0xMSBHT0xEU01JVEggU1QuCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1FRiAgIChoZXgpCQlMVUNJREFUQSBMVEQuCi0wMEEwRUYgICAgIChiYXNlIDE2KQkJTFVDSURBVEEgTFRELgotCQkJCUxVQ0lEQVRBIEhPVVNFCi0JCQkJU0VMV1lOIENMT1NFLAotCQkJCUdSRUFUIFNIRUxGT1JEIENBTUJSSURHRSAgQ0IyIDVIQSAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1BMC1GMCAgIChoZXgpCQlUT1JPTlRPIE1JQ1JPRUxFQ1RST05JQ1MgSU5DLgotMDBBMEYwICAgICAoYmFzZSAxNikJCVRPUk9OVE8gTUlDUk9FTEVDVFJPTklDUyBJTkMuCi0JCQkJNTE0OSBCUkFEQ08gQk9VTEVWQVJECi0JCQkJTUlTU0lTU0FVR0EsIE9OVEFSSU8KLQkJCQlMNFcgMkE2Ci0JCQkJQ0FOQURBCi0KLTAwLUEwLUYxICAgKGhleCkJCU1USQotMDBBMEYxICAgICAoYmFzZSAxNikJCU1USQotCQkJCTQ5MDUgRS4gTEEgUEFMTUEgQVZFTlVFCi0JCQkJQU5BSEVJTSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRjIgICAoaGV4KQkJSU5GT1RFSyBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBBMEYyICAgICAoYmFzZSAxNikJCUlORk9URUsgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxMTEgQU5aQSBCTFZELiwgIzIwMwotCQkJCUJVUkxJTkdBTUUgQ0EgOTQwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUYzICAgKGhleCkJCVNUQVVCTEkKLTAwQTBGMyAgICAgKGJhc2UgMTYpCQlTVEFVQkxJCi0JCQkJMTgzIFJVRSBERVMgVVNJTkVTCi0JCQkJQlAgNzAgRjc0MjEwIEZBVkVSR0VTCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLUEwLUY0ICAgKGhleCkJCUdFCi0wMEEwRjQgICAgIChiYXNlIDE2KQkJR0UKLQkJCQlXLTY1NwotCQkJCTMwMDAgTi4gR1JBTkRWSUVXIEJMVkQuCi0JCQkJV0FVS0VTSEEgV0kgNTMxODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUY1ICAgKGhleCkJCVJBREdVQVJEIExURC4KLTAwQTBGNSAgICAgKGJhc2UgMTYpCQlSQURHVUFSRCBMVEQuCi0JCQkJOCBIQU5FQ0hPU0hFVCBTVFJFRVQKLQkJCQlURUwtQVZJViAgNjk3MTAgIAotCQkJCUlTUkFFTAotCi0wMC1BMC1GNiAgIChoZXgpCQlBdXRvR2FzIFN5c3RlbXMgSW5jLgotMDBBMEY2ICAgICAoYmFzZSAxNikJCUF1dG9HYXMgU3lzdGVtcyBJbmMuCi0JCQkJUC5PLiBCT1ggNjk1NwotCQkJCUFCSU9MRU5FIFRYIDc5NjA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMC1GNyAgIChoZXgpCQlWLkkgQ09NUFVURVIgQ09SUC4KLTAwQTBGNyAgICAgKGJhc2UgMTYpCQlWLkkgQ09NUFVURVIgQ09SUC4KLQkJCQk1MzEgRU5DSU5JVEFTIEJMVkQtLSMxMTQKLQkJCQlFTkNJTklUQVMgQ0EgOTIwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUY4ICAgKGhleCkJCVNZTUJPTCBURUNITk9MT0dJRVMsIElOQy4KLTAwQTBGOCAgICAgKGJhc2UgMTYpCQlTWU1CT0wgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMTEwMSBTT1VUSCBXSU5DSEVTVEVSIEJMVkQuCi0JCQkJU1VJVEUgICMgQi0xMTAKLQkJCQlTQU4gSk9TRSBDQSA5NTEyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRjkgICAoaGV4KQkJQklOVEVDIENPTU1VTklDQVRJT05TIEdNQkgKLTAwQTBGOSAgICAgKGJhc2UgMTYpCQlCSU5URUMgQ09NTVVOSUNBVElPTlMgR01CSAotCQkJCVNVRURXRVNUUEFSSyA5NAotCQkJCTkwNDQ5IE5VRVJOQkVSRyAgCi0JCQkJR0VSTUFOWQotCi0wMC1BMC1GQSAgIChoZXgpCQlNYXJjb25pIENvbW11bmljYXRpb24gR21iSAotMDBBMEZBICAgICAoYmFzZSAxNikJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbiBHbWJICi0JCQkJR2VyYmVyc3RyYXNzZSAzMwotCQkJCUQtNzE1MjIgQmFjbmtuYW5nCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQTAtRkIgICAoaGV4KQkJVE9SQVkgRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi0wMEEwRkIgICAgIChiYXNlIDE2KQkJVE9SQVkgRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi0JCQkJMS00NSwgT0UgMS1DSE9NRSwgT1RTVSBDSVRZCi0JCQkJU0hJR0EsCi0JCQkJNTIwLTIxIEpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQTAtRkMgICAoaGV4KQkJSU1BR0UgU0NJRU5DRVMsIElOQy4KLTAwQTBGQyAgICAgKGJhc2UgMTYpCQlJTUFHRSBTQ0lFTkNFUywgSU5DLgotCQkJCTc1MDAgSU5OT1ZBVElPTiBXQVkKLQkJCQlNQVNPTiBPSCA0NTA0MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQTAtRkQgICAoaGV4KQkJU0NJVEVYIERJR0lUQUwgUFJJTlRJTkcsIElOQy4KLTAwQTBGRCAgICAgKGJhc2UgMTYpCQlTQ0lURVggRElHSVRBTCBQUklOVElORywgSU5DLgotCQkJCTMxMDAgUkVTRUFSQ0ggQkxWRC4KLQkJCQlEQVlUT04gT0ggNDU0MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUZFICAgKGhleCkJCUJPU1RPTiBURUNITk9MT0dZLCBJTkMuCi0wMEEwRkUgICAgIChiYXNlIDE2KQkJQk9TVE9OIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkxMDAgUVVBTk5BUE9XSVRUIFBBUktXQVkKLQkJCQlXQUtFRklFTEQgTUEgMDE4ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUEwLUZGICAgKGhleCkJCVRFTExBQlMgT1BFUkFUSU9OUywgSU5DLgotMDBBMEZGICAgICAoYmFzZSAxNikJCVRFTExBQlMgT1BFUkFUSU9OUywgSU5DLgotCQkJCTEwMDAgUkVNSU5HVE9OIEJMVkQuCi0JCQkJQk9MSU5HQlJPT0sgIElMICA2MDQ0MAotCQkJCTYwNDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BMS1ERSAgIChoZXgpCQlTaGVuWmhlbiBTaGlIdWEgVGVjaG5vbG9neSBDTy4sTFRECi0wMEExREUgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gU2hpSHVhIFRlY2hub2xvZ3kgQ08uLExURAotCQkJCVJvb201MDUsNS9GIFRzaW5nWWkgQnVpbGRpbmcsTGFuZ1NoYW4gMmVkIFJvYWQsSGlnaC1UZWNoIEluZHVzdHJpYWwgUGFyaywKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDUyCi0JCQkJQ0hJTkEKLQotMDAtQTItREEgICAoaGV4KQkJSU5BVCBHbWJICi0wMEEyREEgICAgIChiYXNlIDE2KQkJSU5BVCBHbWJICi0JCQkJT3N0ZW5kc3RyLiA1MEEKLQkJCQlOdXJlbWJlcmcgQmF2YXJpYSA5MDQ4MgotCQkJCUdFUk1BTlkKLQotMDAtQUEtMDAgICAoaGV4KQkJSU5URUwgQ09SUE9SQVRJT04KLTAwQUEwMCAgICAgKGJhc2UgMTYpCQlJTlRFTCBDT1JQT1JBVElPTgotCQkJCTUyMDAgTkUgRUxBTSBZT1VORyBQQVJLV0FZCi0JCQkJSElMTFNCT1JPIE9SIDk3MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BQS0wMSAgIChoZXgpCQlJTlRFTCBDT1JQT1JBVElPTgotMDBBQTAxICAgICAoYmFzZSAxNikJCUlOVEVMIENPUlBPUkFUSU9OCi0JCQkJCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BQS0wMiAgIChoZXgpCQlJTlRFTCBDT1JQT1JBVElPTgotMDBBQTAyICAgICAoYmFzZSAxNikJCUlOVEVMIENPUlBPUkFUSU9OCi0JCQkJCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1BQS0zQyAgIChoZXgpCQlPTElWRVRUSSBURUxFQ09NIFNQQSAoT0xURUNPKQotMDBBQTNDICAgICAoYmFzZSAxNikJCU9MSVZFVFRJIFRFTEVDT00gU1BBIChPTFRFQ08pCi0JCQkJMTAwNjIgTUlMTEVSIEFWRS4tU1RFLiMyMDQKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUFBLTcwICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIAotMDBBQTcwICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIAotCQkJCTYwLTM5LCBLYXNhbi1kb25nLCBHdW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUIwLTA5ICAgKGhleCkJCUdyYXNzIFZhbGxleSBHcm91cAotMDBCMDA5ICAgICAoYmFzZSAxNikJCUdyYXNzIFZhbGxleSBHcm91cAotCQkJCVAuTy4gQm94IDU5OTAwMAotCQkJCU5ldmFkYSBDaXR5IENBIDk1OTU5LTc5MDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTE3ICAgKGhleCkJCUluZm9HZWFyIFRlY2hub2xvZ3kgQ29ycC4KLTAwQjAxNyAgICAgKGJhc2UgMTYpCQlJbmZvR2VhciBUZWNobm9sb2d5IENvcnAuCi0JCQkJMjA1NSBXb29kc2lkZSBSb2FkCi0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDYxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC0xOSAgIChoZXgpCQlVVEMgQ0NTCi0wMEIwMTkgICAgIChiYXNlIDE2KQkJVVRDIENDUwotCQkJCTc5MSBDb21tZXJjZSBCbHZkCi0JCQkJU3VpdGUgMTAwCi0JCQkJQm9jYSBSYXRvbiBGTCAzMzQ5NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtMUMgICAoaGV4KQkJV2VzdHBvcnQgVGVjaG5vbG9naWVzCi0wMEIwMUMgICAgIChiYXNlIDE2KQkJV2VzdHBvcnQgVGVjaG5vbG9naWVzCi0JCQkJMTUgQ2FwZWxsYSBDb3VydCwgVW5pdCAxMTYKLQkJCQlOZXBlYW4gT250YXJpbyAKLQkJCQlDQU5BREEKLQotMDAtQjAtMUUgICAoaGV4KQkJUmFudGljIExhYnMsIEluYy4KLTAwQjAxRSAgICAgKGJhc2UgMTYpCQlSYW50aWMgTGFicywgSW5jLgotCQkJCTcwMiBCcmF6b3MsICBTdWl0ZSAjNTAwCi0JCQkJQXVzdGluIFRYIDc4NzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC0yQSAgIChoZXgpCQlPUlNZUyBHbWJICi0wMEIwMkEgICAgIChiYXNlIDE2KQkJT1JTWVMgR21iSAotCQkJCUFtIFN0YWR0Z3JhYmVuIDI1Ci0JCQkJRC04ODY3NyBNYXJrZG9yZiAgCi0JCQkJR0VSTUFOWQotCi0wMC1CMC0yRCAgIChoZXgpCQlWaWFHYXRlIFRlY2hub2xvZ2llcywgSW5jLgotMDBCMDJEICAgICAoYmFzZSAxNikJCVZpYUdhdGUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNzQ1IFJvdXRlIDIwMi8yMDYKLQkJCQlTdWl0ZSA1Ci0JCQkJQnJpZGdld2F0ZXIgTkogMDg4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTMzICAgKGhleCkJCU9BTyAiSXpoZXZza2l5IHJhZGlvemF2b2QiCi0wMEIwMzMgICAgIChiYXNlIDE2KQkJT0FPICJJemhldnNraXkgcmFkaW96YXZvZCIKLQkJCQkxOSBCYXppc25heWEgc3RyZWV0Ci0JCQkJSXpoZXZzayBVZG11cnQgUmVwdWJsaWMgNDI2MDM0Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTAwLUIwLTNCICAgKGhleCkJCUhpUSBOZXR3b3JrcwotMDBCMDNCICAgICAoYmFzZSAxNikJCUhpUSBOZXR3b3JrcwotCQkJCTI0NzUgQXVndXN0aW5lIERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTQ4ICAgKGhleCkJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMgSW5jLgotMDBCMDQ4ICAgICAoYmFzZSAxNikJCU1hcmNvbmkgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTg2MTYgRnJlZXBvcnQgUGFya3dheQotCQkJCU1TIEEyCi0JCQkJSXJ2aW5nIFRYIDc1MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC00QSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwNEEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTUyICAgKGhleCkJCUF0aGVyb3MgQ29tbXVuaWNhdGlvbnMKLTAwQjA1MiAgICAgKGJhc2UgMTYpCQlBdGhlcm9zIENvbW11bmljYXRpb25zCi0JCQkJNTk1NSBULkcuIExlZSBCbHZkLCBTdGUuIDYwMAotCQkJCU9jYWxhIEZMIDMyODIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC02NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwNjQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTY5ICAgKGhleCkJCUhvbmV3ZWxsIE95Ci0wMEIwNjkgICAgIChiYXNlIDE2KQkJSG9uZXdlbGwgT3kKLQkJCQlQLk8uIEJveCAxNjgsIEZJTi03ODIwMQotCQkJCVZhcmthdXMKLQkJCQlGSU5MQU5ECi0KLTAwLUIwLTZEICAgKGhleCkJCUpvbmVzIEZ1dHVyZXggSW5jLgotMDBCMDZEICAgICAoYmFzZSAxNikJCUpvbmVzIEZ1dHVyZXggSW5jLgotCQkJCTM3MTUgQXRoZXJ0b24gUm9hZAotCQkJCVJvY2tsaW4gQ0EgOTU3NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTgwICAgKGhleCkJCU1hbm5lc21hbm4gSXB1bHN5cyBCLlYuCi0wMEIwODAgICAgIChiYXNlIDE2KQkJTWFubmVzbWFubiBJcHVsc3lzIEIuVi4KLQkJCQlCb3JkZXdpamtsYWFuIDE4Ci0JCQkJMjU5MSBYUiBUaGUgSGFndWUgIAotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLUIwLTg2ICAgKGhleCkJCUxvY1NvZnQgTGltaXRlZAotMDBCMDg2ICAgICAoYmFzZSAxNikJCUxvY1NvZnQgTGltaXRlZAotCQkJCTcgQnJpZ2h0IFN0cmVldAotCQkJCUNsaXRoZXJvZSBMYW5jYXNoaXJlIEJCNyAxTlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1CMC04RSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwOEUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtU0pBLTIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtOTEgICAoaGV4KQkJVHJhbnNtZXRhIENvcnAuCi0wMEIwOTEgICAgIChiYXNlIDE2KQkJVHJhbnNtZXRhIENvcnAuCi0JCQkJMzk0MCBGcmVlZG9tIENpcmNsZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC05NCAgIChoZXgpCQlBbGFyaXMsIEluYy4KLTAwQjA5NCAgICAgKGJhc2UgMTYpCQlBbGFyaXMsIEluYy4KLQkJCQk0NzMzOCBGcmVtb250IEJvdWxldmFyZAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLTlBICAgKGhleCkJCU1vcnJvdyBUZWNobm9sb2dpZXMgQ29ycC4KLTAwQjA5QSAgICAgKGJhc2UgMTYpCQlNb3Jyb3cgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJMjMwMCBUYWxsIFBpbmVzIERyaXZlCi0JCQkJTGFyZ28gRkwgMzM3NzEtNTM0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtOUQgICAoaGV4KQkJUG9pbnQgR3JleSBSZXNlYXJjaCBJbmMuCi0wMEIwOUQgICAgIChiYXNlIDE2KQkJUG9pbnQgR3JleSBSZXNlYXJjaCBJbmMuCi0JCQkJMzA1LTE4NDcgV2VzdCBCcm9hZHdheQotCQkJCVZhbmNvdXZlciBCcml0aXNoIENvbHVtYmlhIFY2SiAxWTYgCi0JCQkJQ0FOQURBCi0KLTAwLUIwLUFDICAgKGhleCkJCVNJQUUtTWljcm9lbGV0dHJvbmljYSBTLnAuQS4KLTAwQjBBQyAgICAgKGJhc2UgMTYpCQlTSUFFLU1pY3JvZWxldHRyb25pY2EgUy5wLkEuCi0JCQkJVmlhIE1pY2hlbGFuZ2VsbyBCdW9uYXJyb3RpLCAyMQotCQkJCTIwMDkzIENvbG9nbm8gTS4gKE1sKSAgCi0JCQkJSVRBTFkKLQotMDAtQjAtQUUgICAoaGV4KQkJU3ltbWV0cmljb20KLTAwQjBBRSAgICAgKGJhc2UgMTYpCQlTeW1tZXRyaWNvbQotCQkJCTIzMDAgT3JjaGFyZCBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLUIzICAgKGhleCkJCVhzdHJlYW1pcyBQTEMKLTAwQjBCMyAgICAgKGJhc2UgMTYpCQlYc3RyZWFtaXMgUExDCi0JCQkJTWFnZGFsZW4gQ2VudHJlCi0JCQkJT3hmb3JkIFNjaWVuY2UgUGFyawotCQkJCU94Zm9yZCAwWDQgNEdBICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1CMC1DMiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zLCBJbmMuCi0wMEIwQzIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcywgSW5jLgotCQkJCTE3MCBXZXN0IFRhc21hbiBEcml2ZSAtIFNKQS0yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLUM3ICAgKGhleCkJCVRlbGxhYnMgT3BlcmF0aW9ucywgSW5jLgotMDBCMEM3ICAgICAoYmFzZSAxNikJCVRlbGxhYnMgT3BlcmF0aW9ucywgSW5jLgotCQkJCU9uZSBUZWxsYWJzIENlbnRlcgotCQkJCTE0MTUgV2VzdCBEaWVobCBSb2FkCi0JCQkJTmFwZXJ2aWxsZSBJTCA2MDU2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjAtQ0UgICAoaGV4KQkJVEVDSE5PTE9HWSBSRVNDVUUKLTAwQjBDRSAgICAgKGJhc2UgMTYpCQlURUNITk9MT0dZIFJFU0NVRQotCQkJCTQ2IEF2ZW51ZSBkZXMgU3BlcmVzIEx1bWllcmUKLQkJCQk3ODE5IFRyb3BwZXMgIAotCQkJCUZSQU5DRQotCi0wMC1CMC1EMCAgIChoZXgpCQlEZWxsIENvbXB1dGVyIENvcnAuCi0wMEIwRDAgICAgIChiYXNlIDE2KQkJRGVsbCBDb21wdXRlciBDb3JwLgotCQkJCU9uZSBEZWxsIFdheQotCQkJCVJvdW5kIFJvY2sgVFggNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLURCICAgKGhleCkJCU5leHRjZWxsLCBJbmMuCi0wMEIwREIgICAgIChiYXNlIDE2KQkJTmV4dGNlbGwsIEluYy4KLQkJCQk2NTEgRWFzdCAxOHRoIFN0cmVldAotCQkJCVBsYW5vIFRYIDc1MDc0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC1ERiAgIChoZXgpCQlSRUxEQVRBIEluYwotMDBCMERGICAgICAoYmFzZSAxNikJCVJFTERBVEEgSW5jCi0JCQkJMTcxOSBSb3V0ZSAxMCAgLSAgU3VpdGUgIzIwOQotCQkJCVBhcnNpcHBhbnkgTkogMDcwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUIwLUU3ICAgKGhleCkJCUJyaXRpc2ggRmVkZXJhbCBMdGQuCi0wMEIwRTcgICAgIChiYXNlIDE2KQkJQnJpdGlzaCBGZWRlcmFsIEx0ZC4KLQkJCQlDYXN0bGUgTWlsbCBXb3JrcwotCQkJCUR1ZGxleSBEWTEgNERBIEVuZ2xhbmQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQjAtRUMgICAoaGV4KQkJRUFDRU0KLTAwQjBFQyAgICAgKGJhc2UgMTYpCQlFQUNFTQotCQkJCUF2ZW51ZSBMb3Vpc2UgMTQwLCBCdGUgNgotCQkJCUItMTA1MCBCUlVTU0VMUyAgCi0JCQkJQkVMR0lVTQotCi0wMC1CMC1FRSAgIChoZXgpCQlBamlsZSBTeXN0ZW1zLCBJbmMuCi0wMEIwRUUgICAgIChiYXNlIDE2KQkJQWppbGUgU3lzdGVtcywgSW5jLgotCQkJCTIwNCBDb2xsaW5zIFJkIE5FCi0JCQkJU3VpdGUgMTAwCi0JCQkJQ2VkYXIgUmFwaWRzIElBIDUyNDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC1GMCAgIChoZXgpCQlDQUxZIE5FVFdPUktTCi0wMEIwRjAgICAgIChiYXNlIDE2KQkJQ0FMWSBORVRXT1JLUwotCQkJCTI5NSBTYW50YSBBbm5hIENvdXJ0Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CMC1GNSAgIChoZXgpCQlOZXRXb3J0aCBUZWNobm9sb2dpZXMsIEluYy4KLTAwQjBGNSAgICAgKGJhc2UgMTYpCQlOZXRXb3J0aCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMDAwIEdlcm1hbnRvd24gUGlrZQotCQkJCWxkZy4gSi0xCi0JCQkJUGx5bW91dGggTWV0dGluZyBQQSAxOTQ2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQjMtMzggICAoaGV4KQkJS29udHJvbiBEZXNpZ24gTWFudWZhY3R1cmluZyBTZXJ2aWNlcyAoTSkgU2RuLiBCaGQKLTAwQjMzOCAgICAgKGJhc2UgMTYpCQlLb250cm9uIERlc2lnbiBNYW51ZmFjdHVyaW5nIFNlcnZpY2VzIChNKSBTZG4uIEJoZAotCQkJCVBsb3QgNTU0LCBMb3JvbmcgUGVydXNhaGFhbiA0Ci0JCQkJUHJhaSBGcmVlIFRyYWRlIFpvbmUKLQkJCQlQcmFpIFBlbmFuZyAxMzYwMAotCQkJCU1BTEFZU0lBCi0KLTAwLUIzLTQyICAgKGhleCkJCU1hY3JvU0FOIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTAwQjM0MiAgICAgKGJhc2UgMTYpCQlNYWNyb1NBTiBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJUm9vbSAxMDIsIE5vLjIgQnVpbGRpbmcKLQkJCQkzMDEgQmluIFhpbmcgUm9hZCxCaW5qaWFuZyBEaXN0cmljdAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDA1MgotCQkJCUNISU5BCi0KLTAwLUI1LUQ2ICAgKGhleCkJCU9tbmliaXQgSW5jLgotMDBCNUQ2ICAgICAoYmFzZSAxNikJCU9tbmliaXQgSW5jLgotCQkJCTItNy05LCBTb3RvLUthbmRhCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDEtMDAyMQotCQkJCUpBUEFOCi0KLTAwLUI5LUY2ICAgKGhleCkJCVNoZW56aGVuIFN1cGVyIFJpY2ggRWxlY3Ryb25pY3MgQ28uLEx0ZAotMDBCOUY2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFN1cGVyIFJpY2ggRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCVJNLjEwMixTaGliaWRhIEJ1aWxkaW5nLE5vLjU1LFpoZW5odWEgUm9hZCxTaGVuemhlbiBGdXRpYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzMQotCQkJCUNISU5BCi0KLTAwLUJBLUMwICAgKGhleCkJCUJpb21ldHJpYyBBY2Nlc3MgQ29tcGFueQotMDBCQUMwICAgICAoYmFzZSAxNikJCUJpb21ldHJpYyBBY2Nlc3MgQ29tcGFueQotCQkJCTI1NTUgTm9ydGggSUggMzUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CQi0wMSAgIChoZXgpCQlPQ1RPVEhPUlBFIENPUlAuCi0wMEJCMDEgICAgIChiYXNlIDE2KQkJT0NUT1RIT1JQRSBDT1JQLgotCQkJCTI4NSBXRVNUIEdSRUVOIFNUUkVFVAotCQkJCVBBU0FERU5BIENBIDkxMTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CQi04RSAgIChoZXgpCQlITUUgQ28uLCBMdGQuCi0wMEJCOEUgICAgIChiYXNlIDE2KQkJSE1FIENvLiwgTHRkLgotCQkJCU5vLjIwMCAsIExpYW8gQmVpIFN0ci4sU2FuIE1pbiBEaXN0LiwKLQkJCQlLYW9oc2l1bmcgIDgwNwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQkItRjAgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBCQkYwICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUJELTI3ICAgKGhleCkJCUV4YXIgQ29ycC4KLTAwQkQyNyAgICAgKGJhc2UgMTYpCQlFeGFyIENvcnAuCi0JCQkJNDg3MjAgS2F0byBSZC4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1CRC0zQSAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotMDBCRDNBICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTcwCi0JCQkJRklOTEFORAotCi0wMC1CRi0xNSAgIChoZXgpCQlHZW5ldGVjIEluYy4KLTAwQkYxNSAgICAgKGJhc2UgMTYpCQlHZW5ldGVjIEluYy4KLQkJCQkyMjgwIGJvdWwuIEFsZnJlZC1Ob2JlbAotCQkJCVN1aXRlIDQwMAotCQkJCVN0LC4gTGF1cmVudCBRdWViZWMgSDRTIDJBNAotCQkJCUNBTkFEQQotCi0wMC1DMC0wMCAgIChoZXgpCQlMQU5PUFRJQ1MsIExURC4KLTAwQzAwMCAgICAgKGJhc2UgMTYpCQlMQU5PUFRJQ1MsIExURC4KLQkJCQlQLk8uIEJPWCAxODQKLQkJCQlNSUdEQUwgSEEtRU1FSwotCQkJCUlTUkFFTCBJU1JBRUwgMTA1NTEKLQkJCQlJU1JBRUwKLQotMDAtQzAtMDEgICAoaGV4KQkJRElBVEVLIFBBVElFTlQgTUFOQUdNRU5UCi0wMEMwMDEgICAgIChiYXNlIDE2KQkJRElBVEVLIFBBVElFTlQgTUFOQUdNRU5UCi0JCQkJU1lTVEVNUywgSU5DLgotCQkJCTU3MjAgT0JFUkxJTiBEUklWRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMS0xNzIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0wMiAgIChoZXgpCQlTRVJDT01NIENPUlBPUkFUSU9OCi0wMEMwMDIgICAgIChiYXNlIDE2KQkJU0VSQ09NTSBDT1JQT1JBVElPTgotCQkJCTNGLE5PLjgxLFlVLVlJSCBST0FELENIVS1OQU4gQ0hFTgotCQkJCU1JQU8tTElIIEhTVUFOIDM1MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtMDMgICAoaGV4KQkJR0xPQkFMTkVUIENPTU1VTklDQVRJT05TCi0wMEMwMDMgICAgIChiYXNlIDE2KQkJR0xPQkFMTkVUIENPTU1VTklDQVRJT05TCi0JCQkJOTEyLCBQTEFDRSBUUkFOUyBDQU5BREEKLQkJCQlMT05HVUVVSUwsIFFDCi0JCQkJQ0FOQURBIEo0RyAyTTEKLQkJCQlDQU5BREEKLQotMDAtQzAtMDQgICAoaGV4KQkJSkFQQU4gQlVTSU5FU1MgQ09NUFVURVIgQ08uTFRECi0wMEMwMDQgICAgIChiYXNlIDE2KQkJSkFQQU4gQlVTSU5FU1MgQ09NUFVURVIgQ08uTFRECi0JCQkJMTM2OCBGVVRPTy1DSE8sIEtPSE9LVS1LVQotCQkJCVlPS09IQU1BLUNJVFkKLQkJCQkyMjIgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC0wNSAgIChoZXgpCQlMSVZJTkdTVE9OIEVOVEVSUFJJU0VTLCBJTkMuCi0wMEMwMDUgICAgIChiYXNlIDE2KQkJTElWSU5HU1RPTiBFTlRFUlBSSVNFUywgSU5DLgotCQkJCTY5MjAgS09MTCBDRU5URVIgUEFSS1dBWSAjMjIwCi0JCQkJUExFQVNBTlRPTiBDQSA5NDU2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMDYgICAoaGV4KQkJTklQUE9OIEFWSU9OSUNTIENPLiwgTFRELgotMDBDMDA2ICAgICAoYmFzZSAxNikJCU5JUFBPTiBBVklPTklDUyBDTy4sIExURC4KLQkJCQlJTkRVU1RSSUFMIFNZU1RFTSBESVZJU0lPTgotCQkJCTI4LTIsIEhPTkdPSCAyLUNIT01FLCBTRVlBLUtVIFlPS09IQU1BCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC0wNyAgIChoZXgpCQlQSU5OQUNMRSBEQVRBIFNZU1RFTVMsIElOQy4KLTAwQzAwNyAgICAgKGJhc2UgMTYpCQlQSU5OQUNMRSBEQVRBIFNZU1RFTVMsIElOQy4KLQkJCQkxMzUwIFdFU1QgRklGVEggQVZFTlVFCi0JCQkJQ09MVU1CVVMgT0ggNDMyMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTA4ICAgKGhleCkJCVNFQ08gU1JMCi0wMEMwMDggICAgIChiYXNlIDE2KQkJU0VDTyBTUkwKLQkJCQlWSUEgQ0FMQU1BTkRSRUkgOTEKLQkJCQk1MjEwMCBBUkVaWk8KLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLUMwLTA5ICAgKGhleCkJCUtUIFRFQ0hOT0xPR1kgKFMpIFBURSBMVEQKLTAwQzAwOSAgICAgKGJhc2UgMTYpCQlLVCBURUNITk9MT0dZIChTKSBQVEUgTFRECi0JCQkJS1QgQlVJTERJTkcKLQkJCQkxMDBFIFBBU0lSIFBBTkpBTkcgUk9BRAotCQkJCVNJTkdBUE9SRSAwNTExCi0JCQkJU0lOR0FQT1JFCi0KLTAwLUMwLTBBICAgKGhleCkJCU1JQ1JPIENSQUZUCi0wMEMwMEEgICAgIChiYXNlIDE2KQkJTUlDUk8gQ1JBRlQKLQkJCQkyLTQtMyBOSVNISUZVUlVNQVRTVQotCQkJCU9LQVlBTUEgQ0lUWSBPS0FZQU1BIFBSRUYuIDcwMAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtMEIgICAoaGV4KQkJTk9SQ09OVFJPTCBBLlMuCi0wMEMwMEIgICAgIChiYXNlIDE2KQkJTk9SQ09OVFJPTCBBLlMuCi0JCQkJUC5PLiBCT1ggMTAyNAotCQkJCU4tMzE5NCBIT1JURU4KLQkJCQlOT1JXQVkKLQkJCQlOT1JXQVkKLQotMDAtQzAtMEMgICAoaGV4KQkJUkVMSUEgVEVDSE5PTEdJRVMKLTAwQzAwQyAgICAgKGJhc2UgMTYpCQlSRUxJQSBURUNITk9MR0lFUwotCQkJCTFGLiwgTk8uIDI0LCBJTkRVU1RSWSBFLiA5VEgKLQkJCQlSRC4sIFNDSUVOQ0UtQkFTRUQgSU5EVVNUUklBTCBQQVJLIEhTSU4tCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLTBEICAgKGhleCkJCUFEVkFOQ0VEIExPR0lDIFJFU0VBUkNILCBJTkMuCi0wMEMwMEQgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgTE9HSUMgUkVTRUFSQ0gsIElOQy4KLQkJCQk5NDAxIEpFUk9OSU1PCi0JCQkJSVJWSU5FIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0wRSAgIChoZXgpCQlQU0lURUNILCBJTkMuCi0wMEMwMEUgICAgIChiYXNlIDE2KQkJUFNJVEVDSCwgSU5DLgotCQkJCTE4MzY4IEJBTkRJTElFUiBDSVJDTEUKLQkJCQlGT1VOVEFJTiBWQUxMRVkgQ0EgOTI3MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTBGICAgKGhleCkJCVFVQU5UVU0gU09GVFdBUkUgU1lTVEVNUyBMVEQuCi0wMEMwMEYgICAgIChiYXNlIDE2KQkJUVVBTlRVTSBTT0ZUV0FSRSBTWVNURU1TIExURC4KLQkJCQkxNzUgVEVSUkVOQ0UgTUFUVEhFV1MgQ1JFU0NFTlQKLQkJCQlLQU5BVEEsIE9OVEFSSU8gQ0FOQURBCi0JCQkJSzJMIDNUNQotCQkJCUNBTkFEQQotCi0wMC1DMC0xMCAgIChoZXgpCQlISVJBS0FXQSBIRVdURUNIIENPUlAuCi0wMEMwMTAgICAgIChiYXNlIDE2KQkJSElSQUtBV0EgSEVXVEVDSCBDT1JQLgotCQkJCTdGLCBCTERHLkIsIE9NT1JJIEJFTExQT1JUCi0JCQkJNi0yNi0yLCBNSU5BTUktT0ksU0hJTkFHQVdBLUtVIFRPS1lPIDE0MAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtMTEgICAoaGV4KQkJSU5URVJBQ1RJVkUgQ09NUFVUSU5HIERFVklDRVMKLTAwQzAxMSAgICAgKGJhc2UgMTYpCQlJTlRFUkFDVElWRSBDT01QVVRJTkcgREVWSUNFUwotCQkJCTE3MzUgVEVDSE5PTE9HWSBEUklWRS1TVEUgIzcyMAotCQkJCVNBTiBKT1NFIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0xMiAgIChoZXgpCQlORVRTUEFOIENPUlBPUkFUSU9OCi0wMEMwMTIgICAgIChiYXNlIDE2KQkJTkVUU1BBTiBDT1JQT1JBVElPTgotCQkJCTE0MTEgRS4gQ0FNUEJFTEwgUkQKLQkJCQlTVUlURSAjMTAwMAotCQkJCVJJQ0hBUkRTT04gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTEzICAgKGhleCkJCU5FVFJJWAotMDBDMDEzICAgICAoYmFzZSAxNikJCU5FVFJJWAotCQkJCTEzNTk1IERVTExFUyBURUNITk9MT0dZIERSSVZFCi0JCQkJSEVSTkRPTiBWQSAyMjA3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMTQgICAoaGV4KQkJVEVMRU1BVElDUyBDQUxBQkFTQVMgSU5UJ0wsSU5DCi0wMEMwMTQgICAgIChiYXNlIDE2KQkJVEVMRU1BVElDUyBDQUxBQkFTQVMgSU5UJ0wsSU5DCi0JCQkJMjY2MzAgQUdPVVJBIFJPQUQKLQkJCQlDQUxBQkFTQVMgQ0EgOTEzMDItMTk4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMTUgICAoaGV4KQkJTkVXIE1FRElBIENPUlBPUkFUSU9OCi0wMEMwMTUgICAgIChiYXNlIDE2KQkJTkVXIE1FRElBIENPUlBPUkFUSU9OCi0JCQkJMTUzNzUgQkFSUkFOQ0EgUEFSS1dBWQotCQkJCUJVSUxESU5HCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0xNiAgIChoZXgpCQlFTEVDVFJPTklDIFRIRUFUUkUgQ09OVFJPTFMKLTAwQzAxNiAgICAgKGJhc2UgMTYpCQlFTEVDVFJPTklDIFRIRUFUUkUgQ09OVFJPTFMKLQkJCQkzMDMwIExBVVJBIExBTkUKLQkJCQlNSURETEVUT04gV0kgNTM1NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTE3ICAgKGhleCkJCUZsdWtlIENvcnBvcmF0aW9uCi0wMEMwMTcgICAgIChiYXNlIDE2KQkJRmx1a2UgQ29ycG9yYXRpb24KLQkJCQk2OTIwIFNlYXdheSBCbHZkLgotCQkJCUV2ZXJldHQgV0EgOTgyMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTE4ICAgKGhleCkJCUxBTkFSVCBDT1JQT1JBVElPTgotMDBDMDE4ICAgICAoYmFzZSAxNikJCUxBTkFSVCBDT1JQT1JBVElPTgotCQkJCTE0NSBST1NFTUFSWSBTVFJFRVQKLQkJCQlORUVESEFNIE1BIDAyMTk0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0xOSAgIChoZXgpCQlMRUFQIFRFQ0hOT0xPR1ksIElOQy4KLTAwQzAxOSAgICAgKGJhc2UgMTYpCQlMRUFQIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQkyMAotCQkJCUJVUkxJTkdUT04gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTFBICAgKGhleCkJCUNPUk9NRVRSSUNTIE1FRElDQUwgU1lTVEVNUwotMDBDMDFBICAgICAoYmFzZSAxNikJCUNPUk9NRVRSSUNTIE1FRElDQUwgU1lTVEVNUwotCQkJCTYxIEJBUk5FUyBQQVJLIFJPQUQgTk9SVEgKLQkJCQlXQUxMSU5HRk9SRCBDVCAwNjQ5Mi0wMzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0xQiAgIChoZXgpCQlTT0NLRVQgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQzAxQiAgICAgKGJhc2UgMTYpCQlTT0NLRVQgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkyODIzIFdISVBQTEUgUkQuCi0JCQkJVU5JT04gQ0lUWSBDQSA5NDU4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMUMgICAoaGV4KQkJSU5URVJMSU5LIENPTU1VTklDQVRJT05TIExURC4KLTAwQzAxQyAgICAgKGJhc2UgMTYpCQlJTlRFUkxJTksgQ09NTVVOSUNBVElPTlMgTFRELgotCQkJCUJSVU5FTCBST0FELAotCQkJCUdPUlNFIExBTkUgSU5EVVNUUklBTCBFU1RBVEUgQ0xBQ1RPTi1PTi0KLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtMUQgICAoaGV4KQkJR1JBTkQgSlVOQ1RJT04gTkVUV09SS1MsIElOQy4KLTAwQzAxRCAgICAgKGJhc2UgMTYpCQlHUkFORCBKVU5DVElPTiBORVRXT1JLUywgSU5DLgotCQkJCTMxMDEgV0hJUFBMRSBSRC4sICMyNwotCQkJCVVOSU9OIENJVFkgQ0EgOTQ1ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTFFICAgKGhleCkJCUxBIEZSQU5DQUlTRSBERVMgSkVVWAotMDBDMDFFICAgICAoYmFzZSAxNikJCUxBIEZSQU5DQUlTRSBERVMgSkVVWAotCQkJCUNFTlRSRSBERSBST1VTU1kvRFRJCi0JCQkJNzcyMzAgUk9VU1NZLUxFLVZJRVVYCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLUMwLTFGICAgKGhleCkJCVMuRS5SLkMuRS5MLgotMDBDMDFGICAgICAoYmFzZSAxNikJCVMuRS5SLkMuRS5MLgotCQkJCUIuUC4gNDM5Ci0JCQkJNDQ0NzQgQ0FSUVVFRk9VIENFREVYCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLUMwLTIwICAgKGhleCkJCUFSQ08gRUxFQ1RST05JQywgQ09OVFJPTCBMVEQuCi0wMEMwMjAgICAgIChiYXNlIDE2KQkJQVJDTyBFTEVDVFJPTklDLCBDT05UUk9MIExURC4KLQkJCQkyNzUwIE5PUlRIIDI5VEggQVZFLi1TVEUuIzMxNgotCQkJCUhPTExZV09PRCBGTCAzMzAyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMjEgICAoaGV4KQkJTkVURVhQUkVTUwotMDBDMDIxICAgICAoYmFzZSAxNikJCU5FVEVYUFJFU1MKLQkJCQk5ODkgRUFTVCBISUxMU0RBTEUgQkxWRC4KLQkJCQlTVUlURSAjMjkwCi0JCQkJRk9TVEVSIENJVFkgQ0EgOTQ0MDQtMjExMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMjIgICAoaGV4KQkJTEFTRVJNQVNURVIgVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEMwMjIgICAgIChiYXNlIDE2KQkJTEFTRVJNQVNURVIgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJNzE1NiBTSEFEWSBPQUsgUk9BRAotCQkJCUVERU4gUFJBSVJJRSBNTiA1NTM0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMjMgICAoaGV4KQkJVFVUQU5LSEFNT04gRUxFQ1RST05JQ1MKLTAwQzAyMyAgICAgKGJhc2UgMTYpCQlUVVRBTktIQU1PTiBFTEVDVFJPTklDUwotCQkJCTI0NDYgRVNUQU5EIFdBWQotCQkJCVBMRUFTQU5UIEhJTEwgQ0EgOTQ1MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTI0ICAgKGhleCkJCUVERU4gU0lTVEVNQVMgREUgQ09NUFVUQUNBTyBTQQotMDBDMDI0ICAgICAoYmFzZSAxNikJCUVERU4gU0lTVEVNQVMgREUgQ09NUFVUQUNBTyBTQQotCQkJCVJVQSBETyBPVVZJRE9SIDEyMSA1IEFOREFSCi0JCQkJUklPIERFIEpBTkVJUk8KLQkJCQlCUkFaSUwKLQkJCQlCUkFaSUwKLQotMDAtQzAtMjUgICAoaGV4KQkJREFUQVBST0RVQ1RTIENPUlBPUkFUSU9OCi0wMEMwMjUgICAgIChiYXNlIDE2KQkJREFUQVBST0RVQ1RTIENPUlBPUkFUSU9OCi0JCQkJNjIxOSBERVNPVE8gQVZFTlVFCi0JCQkJV09PRExBTkQgSElMTFMgQ0EgOTEzNjUtMDc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMjYgICAoaGV4KQkJTEFOUyBURUNITk9MT0dZIENPLiwgTFRELgotMDBDMDI2ICAgICAoYmFzZSAxNikJCUxBTlMgVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQkxNTMgTUlOVFNVIFJELiAyRiwgVEFPWVVBTiwKLQkJCQlUQUlXQU4gUi4gTy4gQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLTI3ICAgKGhleCkJCUNJUEhFUiBTWVNURU1TLCBJTkMuCi0wMEMwMjcgICAgIChiYXNlIDE2KQkJQ0lQSEVSIFNZU1RFTVMsIElOQy4KLQkJCQkxODAwIE5XIDE2OXRoIFBsYWNlCi0JCQkJU3VpdGUgQi0xMDAKLQkJCQlCZWF2ZXJ0b24gT1IgOTcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTI4ICAgKGhleCkJCUpBU0NPIENPUlBPUkFUSU9OCi0wMEMwMjggICAgIChiYXNlIDE2KQkJSkFTQ08gQ09SUE9SQVRJT04KLQkJCQkyOTY3LTUgSVNISUtBV0EtQ0hPLAotCQkJCUhBQ0hJT0pJLVNISSBUT0tZTyAxOTIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTI5ICAgKGhleCkJCU5leGFucyBEZXV0c2NobGFuZCBHbWJIIC0gQU5TCi0wMEMwMjkgICAgIChiYXNlIDE2KQkJTmV4YW5zIERldXRzY2hsYW5kIEdtYkggLSBBTlMKLQkJCQlCb25uZW5icm9pY2hlciBTdHIuIDEwMAotCQkJCTQxMjM4IE1vZW5jaGVuZ2xhZGJhY2gKLQkJCQlHRVJNQU5ZCi0KLTAwLUMwLTJBICAgKGhleCkJCU9IS1VSQSBFTEVDVFJJQyBDTy4sIExURC4KLTAwQzAyQSAgICAgKGJhc2UgMTYpCQlPSEtVUkEgRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJMi05MC0yMCBTSElSQUtPIFdBS08gQ0lUWQotCQkJCVNBSVRBTUEgUFJFRi4KLQkJCQkzNTEtMDEgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC0yQiAgIChoZXgpCQlHRVJMT0ZGIEdFU0VMTFNDSEFGVCBGVVIKLTAwQzAyQiAgICAgKGJhc2UgMTYpCQlHRVJMT0ZGIEdFU0VMTFNDSEFGVCBGVVIKLQkJCQlFTEVLUk9OSVNDSEUgU1lTVEVNRU5UV0lDS0xVTkcKLQkJCQlGQVNBTkVOV0VHIDI1IFctMjAwMCBIQU1CVVJHIDczCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQzAtMkMgICAoaGV4KQkJQ0VOVFJVTSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBDMDJDICAgICAoYmFzZSAxNikJCUNFTlRSVU0gQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkyODgwIFpBTktFUiBST0FELVNURSAjMTA4Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTJEICAgKGhleCkJCUZVSkkgUEhPVE8gRklMTSBDTy4sIExURC4KLTAwQzAyRCAgICAgKGJhc2UgMTYpCQlGVUpJIFBIT1RPIEZJTE0gQ08uLCBMVEQuCi0JCQkJNzk4IE1JWUFOT0RBSSBLQUlTRUktTUFDSEkKLQkJCQlBU0hJR0FSQS1LQU1JLUdVTiBLQU5BR0FXQQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtMkUgICAoaGV4KQkJTkVUV0laCi0wMEMwMkUgICAgIChiYXNlIDE2KQkJTkVUV0laCi0JCQkJMjYgR09MT01CIFNUUkVFVAotCQkJCUhBSUZBICAzMzM5MQotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC1DMC0yRiAgIChoZXgpCQlPS1VNQSBDT1JQT1JBVElPTgotMDBDMDJGICAgICAoYmFzZSAxNikJCU9LVU1BIENPUlBPUkFUSU9OCi0JCQkJT0dVQ0hJLUNITywgTklXQS1HVU4KLQkJCQlBSUNISSA0ODAtMDEKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTMwICAgKGhleCkJCUlOVEVHUkFURUQgRU5HSU5FRVJJTkcgQi4gVi4KLTAwQzAzMCAgICAgKGJhc2UgMTYpCQlJTlRFR1JBVEVEIEVOR0lORUVSSU5HIEIuIFYuCi0JCQkJRUxMRVJNQU5TVFJBQVQgMTUKLQkJCQkxMDk5IEJXIEFNU1RFUkRBTQotCQkJCVRIRSBORVRIRVJMQU5EUwotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLUMwLTMxICAgKGhleCkJCURFU0lHTiBSRVNFQVJDSCBTWVNURU1TLCBJTkMuCi0wMEMwMzEgICAgIChiYXNlIDE2KQkJREVTSUdOIFJFU0VBUkNIIFNZU1RFTVMsIElOQy4KLQkJCQk5MjUgRS4gRVhFQ1VUSVZFIFBBUksgRFIuCi0JCQkJU1VJVEUKLQkJCQlTQUxUIExBS0UgQ0lUWSBVVCA4NDExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMzIgICAoaGV4KQkJSS1DVUJFRCBMSU1JVEVECi0wMEMwMzIgICAgIChiYXNlIDE2KQkJSS1DVUJFRCBMSU1JVEVECi0JCQkJVU5JVCBKMSwgVEhFIFBPQURET0NLUwotCQkJCTM0NyBDSEVSUlkgSElOVE9OIFJPQUQgQ0FNQlJJREdFCi0JCQkJQ0IxIDRESCBDQjEgNERIIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC0zMyAgIChoZXgpCQlURUxFQklUIENPTU1VTklDQVRJT05TIEFQUwotMDBDMDMzICAgICAoYmFzZSAxNikJCVRFTEVCSVQgQ09NTVVOSUNBVElPTlMgQVBTCi0JCQkJU0tBTkRFUkJPUkdWRUogMjM0Ci0JCQkJREstODI2MCBWSUJZCi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDAtQzAtMzQgICAoaGV4KQkJVFJBTlNBQ1RJT04gTkVUV09SSwotMDBDMDM0ICAgICAoYmFzZSAxNikJCVRSQU5TQUNUSU9OIE5FVFdPUksKLQkJCQlTRVJWSUNFUywgSU5DLgotCQkJCU9NTklMSU5LIENPTU1VTklDQVRJT05TIERJVi4gMzEwMSBURUNITk8KLQkJCQlMQU5TSU5HIE1JIDQ4OTEwLTgzNTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTM1ICAgKGhleCkJCVFVSU5UQVIgQ09NUEFOWQotMDBDMDM1ICAgICAoYmFzZSAxNikJCVFVSU5UQVIgQ09NUEFOWQotCQkJCTM3MCBBTUFQT0xBIEFWRS4sIFNURS4jMTA2Ci0JCQkJVE9SUkFOQ0UgQ0EgOTA1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTM2ICAgKGhleCkJCVJBWVRFQ0ggRUxFQ1RST05JQyBDT1JQLgotMDBDMDM2ICAgICAoYmFzZSAxNikJCVJBWVRFQ0ggRUxFQ1RST05JQyBDT1JQLgotCQkJCTJGLCBOTy42LCBMQU5FIDQ5NwotCQkJCUNIVU5HIENIRU5HIFJELCBIU0lOIFRJRU4gQ0lUWSBUQUlQRUkgSFMKLQkJCQlUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1DMC0zNyAgIChoZXgpCQlEWU5BVEVNCi0wMEMwMzcgICAgIChiYXNlIDE2KQkJRFlOQVRFTQotCQkJCTE1Nzk1IFJPQ0tGSUVMRCBCTFZELgotCQkJCVNVSVRFCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC0zOCAgIChoZXgpCQlSQVNURVIgSU1BR0UgUFJPQ0VTU0lORyBTWVNURU0KLTAwQzAzOCAgICAgKGJhc2UgMTYpCQlSQVNURVIgSU1BR0UgUFJPQ0VTU0lORyBTWVNURU0KLQkJCQk0NjY1IE5BVVRJTFVTIENPVVJUIFNPVVRICi0JCQkJQk9VTERFUiBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtMzkgICAoaGV4KQkJVGVyaWRpYW4gU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlvbgotMDBDMDM5ICAgICAoYmFzZSAxNikJCVRlcmlkaWFuIFNlbWljb25kdWN0b3IgQ29ycG9yYXRpb24KLQkJCQk2NDQwIE9hayBDYW55b24KLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTNBICAgKGhleCkJCU1FTi1NSUtSTyBFTEVLVFJPTklLIEdNQkgKLTAwQzAzQSAgICAgKGJhc2UgMTYpCQlNRU4tTUlLUk8gRUxFS1RST05JSyBHTUJICi0JCQkJV0lFU0VOVEFMU1RSQVNTRSA0MAotCQkJCVctODUwMCBOVUVSTkJFUkcgOTAKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1DMC0zQiAgIChoZXgpCQlNVUxUSUFDQ0VTUyBDT01QVVRJTkcgQ09SUC4KLTAwQzAzQiAgICAgKGJhc2UgMTYpCQlNVUxUSUFDQ0VTUyBDT01QVVRJTkcgQ09SUC4KLQkJCQk1MzUwIEhPTExJU1RFUiBBVkUuLCBTVEUuCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtM0MgICAoaGV4KQkJVE9XRVIgVEVDSCBTLlIuTC4KLTAwQzAzQyAgICAgKGJhc2UgMTYpCQlUT1dFUiBURUNIIFMuUi5MLgotCQkJCVZJQSBSSURPTEZJIDYsOAotCQkJCTU2MTI0IFBJU0EKLQkJCQlJVEFMWQotCQkJCUlUQUxZCi0KLTAwLUMwLTNEICAgKGhleCkJCVdJRVNFTUFOTiAmIFRIRUlTIEdNQkgKLTAwQzAzRCAgICAgKGJhc2UgMTYpCQlXSUVTRU1BTk4gJiBUSEVJUyBHTUJICi0JCQkJV0lUVEVORVIgU1RSLiAzMTIKLQkJCQk1NjAwIFdVUFBFUlRBTCAyCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQzAtM0UgICAoaGV4KQkJRkEuIEdFQlIuIEhFTExFUiBHTUJICi0wMEMwM0UgICAgIChiYXNlIDE2KQkJRkEuIEdFQlIuIEhFTExFUiBHTUJICi0JCQkJUC5PLiBCT1ggMTQyOCwgREVQLiBFRTcKLQkJCQk3NDQwIE5VUlRJTkdFTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUMwLTNGICAgKGhleCkJCVNUT1JFUyBBVVRPTUFURUQgU1lTVEVNUywgSU5DLgotMDBDMDNGICAgICAoYmFzZSAxNikJCVNUT1JFUyBBVVRPTUFURUQgU1lTVEVNUywgSU5DLgotCQkJCTEzNjAgQURBTVMgUk9BRAotCQkJCUJFTlNBTEVNIFBBIDE5MDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00MCAgIChoZXgpCQlFQ0NJCi0wMEMwNDAgICAgIChiYXNlIDE2KQkJRUNDSQotCQkJCTE1MDcwLUIgQVZFTlVFIE9GIFNDSUVOQ0UKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTQxICAgKGhleCkJCURJR0lUQUwgVFJBTlNNSVNTSU9OIFNZU1RFTVMKLTAwQzA0MSAgICAgKGJhc2UgMTYpCQlESUdJVEFMIFRSQU5TTUlTU0lPTiBTWVNURU1TCi0JCQkJNDgzMCBSSVZFUiBHUkVFTiBQQVJLV0FZCi0JCQkJRFVMVVRIIEdBIDMwMTM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00MiAgIChoZXgpCQlEQVRBTFVYIENPUlAuCi0wMEMwNDIgICAgIChiYXNlIDE2KQkJREFUQUxVWCBDT1JQLgotCQkJCTI4MzYgQ0VTU05BIERSSVZFCi0JCQkJV0lOQ0hFU1RFUiBWQSAyMjYwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNDMgICAoaGV4KQkJU1RSQVRBQ09NCi0wMEMwNDMgICAgIChiYXNlIDE2KQkJU1RSQVRBQ09NCi0JCQkJMTQwMCBQQVJLTU9PUiBBVkVOVUUKLQkJCQlTQU4gSk9TRSBDQSA5NTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNDQgICAoaGV4KQkJRU1DT00gQ09SUE9SQVRJT04KLTAwQzA0NCAgICAgKGJhc2UgMTYpCQlFTUNPTSBDT1JQT1JBVElPTgotCQkJCTg0MCBBVkVOVUUKLQkJCQlQTEFOTyBUWCA3NTA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNDUgICAoaGV4KQkJSVNPTEFUSU9OIFNZU1RFTVMsIExURC4KLTAwQzA0NSAgICAgKGJhc2UgMTYpCQlJU09MQVRJT04gU1lTVEVNUywgTFRELgotCQkJCTI2IFNJWCBQT0lOVCBST0FECi0JCQkJVE9ST05UTywgT05UQVJJTwotCQkJCUNBTkFEQSBNOFogMlc5Ci0JCQkJQ0FOQURBCi0KLTAwLUMwLTQ2ICAgKGhleCkJCUJsdWUgQ2hpcCBUZWNobm9sb2d5IEx0ZAotMDBDMDQ2ICAgICAoYmFzZSAxNikJCUJsdWUgQ2hpcCBUZWNobm9sb2d5IEx0ZAotCQkJCUNob3dsZXkgT2FrIExhbmUKLQkJCQlUYXR0ZW5oYWxsCi0JCQkJQ2hlc3RlciBDaGVzaGlyZSBDSDMgOUVYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtNDcgICAoaGV4KQkJVU5JTUlDUk8gU1lTVEVNUywgSU5DLgotMDBDMDQ3ICAgICAoYmFzZSAxNikJCVVOSU1JQ1JPIFNZU1RFTVMsIElOQy4KLQkJCQk0NDM4MiBTLiBHUklNTUVSIEJMVkQuCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNDggICAoaGV4KQkJQkFZIFRFQ0hOSUNBTCBBU1NPQ0lBVEVTCi0wMEMwNDggICAgIChiYXNlIDE2KQkJQkFZIFRFQ0hOSUNBTCBBU1NPQ0lBVEVTCi0JCQkJMjAwIE4uIFNFQ09ORCBTVFJFRVQKLQkJCQlQLk8uIEJPWCAzODcKLQkJCQlCQVkgU1QuIExPVUlTIE1TIDM5NTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC00OSAgIChoZXgpCQlVLlMuIFJPQk9USUNTLCBJTkMuCi0wMEMwNDkgICAgIChiYXNlIDE2KQkJVS5TLiBST0JPVElDUywgSU5DLgotCQkJCTgxMDAgTk9SVEggTUNDT1JNSUNLIEJMVkQuCi0JCQkJU0tPS0lFIElMIDYwMDc2LTI5OTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTRBICAgKGhleCkJCUdST1VQIDIwMDAgQUcKLTAwQzA0QSAgICAgKGJhc2UgMTYpCQlHUk9VUCAyMDAwIEFHCi0JCQkJUC5PLiBCT1ggMzMxCi0JCQkJVEFOTkFHRVJURU5TVFIuIDkgQ0gtODYzNSBEVVJOVEVOCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC1DMC00QiAgIChoZXgpCQlDUkVBVElWRSBNSUNST1NZU1RFTVMKLTAwQzA0QiAgICAgKGJhc2UgMTYpCQlDUkVBVElWRSBNSUNST1NZU1RFTVMKLQkJCQk5LCBBVkVOVUUgRFUgQ0FOQURBCi0JCQkJUEFSQyBISUdIVEVDIDYgWi5BLiBERSBDT1VSVEFCT0VVRgotCQkJCTkxOTY2IExFUyBVTElTLS0tRlJBTkMKLQkJCQlGUkFOQ0UKLQotMDAtQzAtNEMgICAoaGV4KQkJREVQQVJUTUVOVCBPRiBGT1JFSUdOIEFGRkFJUlMKLTAwQzA0QyAgICAgKGJhc2UgMTYpCQlERVBBUlRNRU5UIE9GIEZPUkVJR04gQUZGQUlSUwotCQkJCSYgVFJBREUKLQkJCQlBRE1JTklTVFJBVElWRSBCVUlMRElORyBQQVJLRVMgUExBQ0UsICBQCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLUMwLTREICAgKGhleCkJCU1JVEVDLCBJTkMuCi0wMEMwNEQgICAgIChiYXNlIDE2KQkJTUlURUMsIElOQy4KLQkJCQlCUi1LQU1FSURPIDEgQlVJTERJTkcKLQkJCQlaLTMzLTEsIEtBTUVJRE8sIEtPVVRPVS1LVSBUT0tZTywgMTM2Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC00RSAgIChoZXgpCQlDT01UUk9MIENPUlBPUkFUSU9OCi0wMEMwNEUgICAgIChiYXNlIDE2KQkJQ09NVFJPTCBDT1JQT1JBVElPTgotCQkJCTI2NzUgUEFUVE9OIFJPQUQKLQkJCQlTVC4gUEFVTCBNTiA1NTExMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNEYgICAoaGV4KQkJREVMTCBDT01QVVRFUiBDT1JQT1JBVElPTgotMDBDMDRGICAgICAoYmFzZSAxNikJCURFTEwgQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQkxODA3IFdFU1QgQlJBS0VSIExBTkUtQkxERy4KLQkJCQlBVVNUSU4gVFggNzg3NTgtMzYxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNTAgICAoaGV4KQkJVE9ZTyBERU5LSSBTRUlaTyBLLksuCi0wMEMwNTAgICAgIChiYXNlIDE2KQkJVE9ZTyBERU5LSSBTRUlaTyBLLksuCi0JCQkJNC02LTMyIEhJR0FTSElLQVNISVdBR0FZQQotCQkJCUVCSU5BU0hJCi0JCQkJS0FOQUdBV0EgSkFQQU4gMjQzLTA0Ci0JCQkJSkFQQU4KLQotMDAtQzAtNTEgICAoaGV4KQkJQURWQU5DRUQgSU5URUdSQVRJT04gUkVTRUFSQ0gKLTAwQzA1MSAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBJTlRFR1JBVElPTiBSRVNFQVJDSAotCQkJCTIxODggREVMIEZSQU5DTyBTVFJFRVQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNTIgICAoaGV4KQkJQlVSUi1CUk9XTgotMDBDMDUyICAgICAoYmFzZSAxNikJCUJVUlItQlJPV04KLQkJCQlQLk8uIEJPWCAxMTQwMAotCQkJCVRVQ1NPTiBBWiA4NTczNC0xNDAwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01MyAgIChoZXgpCQlBc3BlY3QgU29mdHdhcmUgSW5jLgotMDBDMDUzICAgICAoYmFzZSAxNikJCUFzcGVjdCBTb2Z0d2FyZSBJbmMuCi0JCQkJNiBUZWNobm9sb2d5IFBhcmsgRHJpdmUKLQkJCQlXZXN0Zm9yZCBNQSAwMTg4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNTQgICAoaGV4KQkJTkVUV09SSyBQRVJJUEhFUkFMUywgTFRELgotMDBDMDU0ICAgICAoYmFzZSAxNikJCU5FVFdPUksgUEVSSVBIRVJBTFMsIExURC4KLQkJCQk0VEggRkxPT1IsIDE3IEJPV0FURVIgUkQuCi0JCQkJV0VTVE1JTlNURVIgSU5EVVNUUklBTCBFU1RBVEUgTE9ORE9OIFNFCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLTU1ICAgKGhleCkJCU1PRFVMQVIgQ09NUFVUSU5HIFRFQ0hOT0xPR0lFUwotMDBDMDU1ICAgICAoYmFzZSAxNikJCU1PRFVMQVIgQ09NUFVUSU5HIFRFQ0hOT0xPR0lFUwotCQkJCTIzNTIgTUFJTiBTVFJFRVQKLQkJCQlDT05DT1JEIE1BIDAxNzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01NiAgIChoZXgpCQlTT01FTEVDCi0wMEMwNTYgICAgIChiYXNlIDE2KQkJU09NRUxFQwotCQkJCUJQIDcwMTAgLSA5NTA1MAotCQkJCUNFUkdZIFBPTlRPSVNFIENFREVYCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTAwLUMwLTU3ICAgKGhleCkJCU1ZQ08gRUxFQ1RST05JQ1MKLTAwQzA1NyAgICAgKGJhc2UgMTYpCQlNWUNPIEVMRUNUUk9OSUNTCi0JCQkJTVVTU0VST05HUkFORCAxRwotCQkJCVMtNzU2IFVQUFNBTEEKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtQzAtNTggICAoaGV4KQkJREFUQUVYUEVSVCBDT1JQLgotMDBDMDU4ICAgICAoYmFzZSAxNikJCURBVEFFWFBFUlQgQ09SUC4KLQkJCQkxMTU2IFNPTk9QUkEgQ09VUlROLUtBTkcgUkQuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01OSAgIChoZXgpCQlERU5TTyBDT1JQT1JBVElPTgotMDBDMDU5ICAgICAoYmFzZSAxNikJCURFTlNPIENPUlBPUkFUSU9OCi0JCQkJMS0xLCBTaG93YS1jaG8sCi0JCQkJS2FyaXlhLXNoaSwgQWljaGkgNDQ4LTg2NjEKLQkJCQlKQVBBTgotCi0wMC1DMC01QSAgIChoZXgpCQlTRU1BUEhPUkUgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwQzA1QSAgICAgKGJhc2UgMTYpCQlTRU1BUEhPUkUgQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQkyMTcgSFVNQk9MRFQgQ09VUlQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODktMTMwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNUIgICAoaGV4KQkJTkVUV09SS1MgTk9SVEhXRVNULCBJTkMuCi0wMEMwNUIgICAgIChiYXNlIDE2KQkJTkVUV09SS1MgTk9SVEhXRVNULCBJTkMuCi0JCQkJUC5PLiBCT1ggMTE4OAotCQkJCUlTU0FRVUFIIFdBIDk4MDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC01QyAgIChoZXgpCQlFTE9ORVggUExDCi0wMEMwNUMgICAgIChiYXNlIDE2KQkJRUxPTkVYIFBMQwotCQkJCTIgQVBTTEVZIFdBWQotCQkJCUxPTkRPTiwgTlcyIDdIRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtNUQgICAoaGV4KQkJTCZOIFRFQ0hOT0xPR0lFUwotMDBDMDVEICAgICAoYmFzZSAxNikJCUwmTiBURUNITk9MT0dJRVMKLQkJCQkyODk5IEFHT1VSQSBST0FEICMxOTYKLQkJCQlXRVNUTEFLRSBWSUxMQUdFIENBIDkxMzYxLTMyMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTVFICAgKGhleCkJCVZBUkktTElURSwgSU5DLgotMDBDMDVFICAgICAoYmFzZSAxNikJCVZBUkktTElURSwgSU5DLgotCQkJCTIwMSBSRUdBTCBST1cKLQkJCQlEQUxMQVMgVFggNzUyNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTVGICAgKGhleCkJCUZJTkUtUEFMIENPTVBBTlkgTElNSVRFRAotMDBDMDVGICAgICAoYmFzZSAxNikJCUZJTkUtUEFMIENPTVBBTlkgTElNSVRFRAotCQkJCVJNLiA5LCAxMUYsIEtJTkdTRk9SRCBJTkQuIENUUgotCQkJCTEzLCBXQU5HIEhPSSBST0FEIEtPV0xPT04gQkFZLCBLTE4KLQkJCQlIT05HIEtPTkcKLQkJCQlIT05HIEtPTkcKLQotMDAtQzAtNjAgICAoaGV4KQkJSUQgU0NBTkRJTkFWSUEgQVMKLTAwQzA2MCAgICAgKGJhc2UgMTYpCQlJRCBTQ0FORElOQVZJQSBBUwotCQkJCVAuTy4gQk9YIDQyMjcKLQkJCQlOLTUwMjggQkVSR0VOCi0JCQkJTk9SV0FZCi0JCQkJTk9SV0FZCi0KLTAwLUMwLTYxICAgKGhleCkJCVNPTEVDVEVLIENPUlBPUkFUSU9OCi0wMEMwNjEgICAgIChiYXNlIDE2KQkJU09MRUNURUsgQ09SUE9SQVRJT04KLQkJCQk2MzcwIE5BTkNZIFJJREdFIERSLi1TVEUuIzEwOQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNjIgICAoaGV4KQkJSU1QVUxTRSBURUNITk9MT0dZCi0wMEMwNjIgICAgIChiYXNlIDE2KQkJSU1QVUxTRSBURUNITk9MT0dZCi0JCQkJMjEwIERBSExPTkVHQSBTVC4jMjA0Ci0JCQkJQ1VNTUlORyBHQSAzMDEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNjMgICAoaGV4KQkJTU9STklORyBTVEFSIFRFQ0hOT0xPR0lFUywgSU5DCi0wMEMwNjMgICAgIChiYXNlIDE2KQkJTU9STklORyBTVEFSIFRFQ0hOT0xPR0lFUywgSU5DCi0JCQkJMTc2MCBaT0xMSU5HRVIgUk9BRAotCQkJCUNPTFVNQlVTIE9IIDQzMjIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02NCAgIChoZXgpCQlHRU5FUkFMIERBVEFDT01NIElORC4gSU5DLgotMDBDMDY0ICAgICAoYmFzZSAxNikJCUdFTkVSQUwgREFUQUNPTU0gSU5ELiBJTkMuCi0JCQkJUEFSSyBST0FEIEVYVEVOU0lPTgotCQkJCVAuTy4gQk9YIDEyOTkKLQkJCQlNSURETEVCVVJZIENUIDA2NzYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02NSAgIChoZXgpCQlTQ09QRSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBDMDY1ICAgICAoYmFzZSAxNikJCVNDT1BFIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTAwIE9USVMgU1RSRUVUCi0JCQkJTk9SVEhCT1JPIE1BIDAxNTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02NiAgIChoZXgpCQlET0NVUE9JTlQsIElOQy4KLTAwQzA2NiAgICAgKGJhc2UgMTYpCQlET0NVUE9JTlQsIElOQy4KLQkJCQkyNzAxIEJBWVZJRVcgRFJJVkUKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02NyAgIChoZXgpCQlVTklURUQgQkFSQ09ERSBJTkRVU1RSSUVTCi0wMEMwNjcgICAgIChiYXNlIDE2KQkJVU5JVEVEIEJBUkNPREUgSU5EVVNUUklFUwotCQkJCTEyMjQwIElORElBTiBDUkVFSyBDT1VSVAotCQkJCUJFTFRTVklMTEUgTUQgMjA3MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTY4ICAgKGhleCkJCUhNRSBDbGVhci1Db20gTFRELgotMDBDMDY4ICAgICAoYmFzZSAxNikJCUhNRSBDbGVhci1Db20gTFRELgotCQkJCTc0MDAgQmVhY2ggRHJpdmUKLQkJCQlXYXRlcmJlYWNoCi0JCQkJQ2FtYnJpZGdlc2hpcmUgIENCMjUgOVRQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtNjkgICAoaGV4KQkJQXh4Y2VsZXJhIEJyb2FkYmFuZCBXaXJlbGVzcwotMDBDMDY5ICAgICAoYmFzZSAxNikJCUF4eGNlbGVyYSBCcm9hZGJhbmQgV2lyZWxlc3MKLQkJCQkxMTEgQ2FzdGlsaWFuIERyaXZlCi0JCQkJU2FudGEgQmFyYmFyYSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNkEgICAoaGV4KQkJWkFITkVSLUVMRUtUUklLIEdNQkggJiBDTy4gS0cKLTAwQzA2QSAgICAgKGJhc2UgMTYpCQlaQUhORVItRUxFS1RSSUsgR01CSCAmIENPLiBLRwotCQkJCVAuTy4gQk9YIDE4NDYKLQkJCQlUSFVFUklOR0VSIFNUUkFTU0UgMTIgRFctODY0MCBLUk9OQUNILUdVCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQzAtNkIgICAoaGV4KQkJT1NJIFBMVVMgQ09SUE9SQVRJT04KLTAwQzA2QiAgICAgKGJhc2UgMTYpCQlPU0kgUExVUyBDT1JQT1JBVElPTgotCQkJCTItMS0yMyBOQUtBTUVHVVJPCi0JCQkJTUVHVVJPLUtVLCBUT0tZTyAgMTUzCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC02QyAgIChoZXgpCQlTVkVDIENPTVBVVEVSIENPUlAuCi0wMEMwNkMgICAgIChiYXNlIDE2KQkJU1ZFQyBDT01QVVRFUiBDT1JQLgotCQkJCTNGLCA1MzEtMSBDSFVORyBDSEVORyBSRC4KLQkJCQlIU0lOLVRJRU4gQ0lUWSwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLTZEICAgKGhleCkJCUJPQ0EgUkVTRUFSQ0gsIElOQy4KLTAwQzA2RCAgICAgKGJhc2UgMTYpCQlCT0NBIFJFU0VBUkNILCBJTkMuCi0JCQkJNjQwMSBDT05HUkVTUyBBVkVOVUUKLQkJCQlCT0NBIFJBVE9OIEZMIDMzNDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC02RSAgIChoZXgpCQlIQUZUIFRFQ0hOT0xPR1ksIElOQy4KLTAwQzA2RSAgICAgKGJhc2UgMTYpCQlIQUZUIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQlEQUlOSS1ET0hPIEJMREcuCi0JCQkJMy1DSE9NRSAyNC03IE5JTk9NSVlBIFRTVUtVQkEgSUJBUkFHSQotCQkJCTMwNSBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTZGICAgKGhleCkJCUtPTUFUU1UgTFRELgotMDBDMDZGICAgICAoYmFzZSAxNikJCUtPTUFUU1UgTFRELgotCQkJCTI1OTcgU0hJTk9NSVlBIEhJUkFUU1VLQS1TSEkKLQkJCQlLQU5BR0FXQSAyNTQKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLTcwICAgKGhleCkJCVNFQ1RSQSBTRUNVUkUtVFJBTlNNSVNTSU9OIEFCCi0wMEMwNzAgICAgIChiYXNlIDE2KQkJU0VDVFJBIFNFQ1VSRS1UUkFOU01JU1NJT04gQUIKLQkJCQlURUtOSUtSSU5HRU4gMgotCQkJCVMtNTgzIDMwIExJTktPUElORwotCQkJCVNXRURFTgotCQkJCVNXRURFTgotCi0wMC1DMC03MSAgIChoZXgpCQlBUkVBTkVYIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEMwNzEgICAgIChiYXNlIDE2KQkJQVJFQU5FWCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTMzMzMgT0NUQVZJVVMgRFJJVkUgVU5JVCBDCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTcyICAgKGhleCkJCUtOWCBMVEQuCi0wMEMwNzIgICAgIChiYXNlIDE2KQkJS05YIExURC4KLQkJCQlIT0xMSU5HV09PRCBIT1VTRQotCQkJCVdFU1QgQ0hFVklOIFJPQUQgT1RMRVksIFcuIFlPUktTSElSRQotCQkJCUxTMjEgM0hBIFVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtNzMgICAoaGV4KQkJWEVESUEgQ09SUE9SQVRJT04KLTAwQzA3MyAgICAgKGJhc2UgMTYpCQlYRURJQSBDT1JQT1JBVElPTgotCQkJCTMwMSBCQUxMQVJEVkFMRSBTVFJFRVQKLQkJCQlXSUxNSU5HVE9OIE1BIDAxODg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC03NCAgIChoZXgpCQlUT1lPREEgQVVUT01BVElDIExPT00KLTAwQzA3NCAgICAgKGJhc2UgMTYpCQlUT1lPREEgQVVUT01BVElDIExPT00KLQkJCQlXT1JLUywgTFRELgotCQkJCTItMSwgVE9ZT0RBLUNITywgS0FSSVlBLVNISSBBSUNISS1LRU4KLQkJCQk0NDggSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC03NSAgIChoZXgpCQlYQU5URSBDT1JQT1JBVElPTgotMDBDMDc1ICAgICAoYmFzZSAxNikJCVhBTlRFIENPUlBPUkFUSU9OCi0JCQkJMjU1OSBFTU9HRU5FIFNUUkVFVAotCQkJCU1PQklMRSBBTCAzNjYwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNzYgICAoaGV4KQkJSS1EQVRBIElOVEVSTkFUSU9OQUwgQS1TCi0wMEMwNzYgICAgIChiYXNlIDE2KQkJSS1EQVRBIElOVEVSTkFUSU9OQUwgQS1TCi0JCQkJMzUtNDMgVkFEU1RSVVBWRUoKLQkJCQlESy0yODgwIEJBR1NWQUVSRAotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLUMwLTc3ICAgKGhleCkJCURBRVdPTyBURUxFQ09NIExURC4KLTAwQzA3NyAgICAgKGJhc2UgMTYpCQlEQUVXT08gVEVMRUNPTSBMVEQuCi0JCQkJUFJPRFVDVFMgREVTSUdOIERFUFQuIDEKLQkJCQlQUk9EVUNUUyBERVNJR04gQ0VOVEVSIFNPQ0hPLiBQLk8uIEJPWCAxCi0JCQkJU0VPVUwgU0VPVUwgS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtQzAtNzggICAoaGV4KQkJQ09NUFVURVIgU1lTVEVNUyBFTkdJTkVFUklORwotMDBDMDc4ICAgICAoYmFzZSAxNikJCUNPTVBVVEVSIFNZU1RFTVMgRU5HSU5FRVJJTkcKLQkJCQk0Njc5MSBGUkVNT05UIEJMVkQuCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtNzkgICAoaGV4KQkJRk9OU1lTIENPLixMVEQuCi0wMEMwNzkgICAgIChiYXNlIDE2KQkJRk9OU1lTIENPLixMVEQuCi0JCQkJMjA5LTUsIFlBTkdKQUUsIFNFT0NITwotCQkJCVNFT1VMICBBMzcxMzAKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1DMC03QSAgIChoZXgpCQlQUklWQSBCLlYuCi0wMEMwN0EgICAgIChiYXNlIDE2KQkJUFJJVkEgQi5WLgotCQkJCVAuTy4gQk9YIDE4Ci0JCQkJMjY3OCAgWkcgREUgTElFUiAoWi1IKQotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLUMwLTdCICAgKGhleCkJCUFTQ0VORCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBDMDdCICAgICAoYmFzZSAxNikJCUFTQ0VORCBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTE3MDEgSEFSQk9SIEJBWSBQQVJLV0FZCi0JCQkJQUxBTUVEQSBDQSA5NDUwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtN0MgICAoaGV4KQkJSElHSFRFQ0ggSU5GT1JNQVRJT04KLTAwQzA3QyAgICAgKGJhc2UgMTYpCQlISUdIVEVDSCBJTkZPUk1BVElPTgotCQkJCVNZU1RFTSBMVEQuCi0JCQkJVU5JVCA3LCAyL0YsIFBPIExVTkcgQ0VOVFJFIDExIFdBTkcgQ0hJVQotCQkJCUhPTkcgS09ORwotCQkJCUhPTkcgS09ORwotCi0wMC1DMC03RCAgIChoZXgpCQlSSVNDIERFVkVMT1BNRU5UUyBMVEQuCi0wMEMwN0QgICAgIChiYXNlIDE2KQkJUklTQyBERVZFTE9QTUVOVFMgTFRELgotCQkJCTExNyBIQVRGSUVMRCBST0FECi0JCQkJU1QuIEFMQkFOUywgSEVSVFMgQUwxNEo1Ci0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLTdFICAgKGhleCkJCUtVQk9UQSBDT1JQT1JBVElPTiBFTEVDVFJPTklDCi0wMEMwN0UgICAgIChiYXNlIDE2KQkJS1VCT1RBIENPUlBPUkFUSU9OIEVMRUNUUk9OSUMKLQkJCQlERVZJQ0UgREVQVC4KLQkJCQkyLTM1LCBKSU5NVS1DSE8sIFlBTy1DSVRZIE9TQUtBIFBSRUYuCi0JCQkJSkFQQU4gIzU4MQotCQkJCUpBUEFOCi0KLTAwLUMwLTdGICAgKGhleCkJCU5VUE9OIENPTVBVVElORyBDT1JQLgotMDBDMDdGICAgICAoYmFzZSAxNikJCU5VUE9OIENPTVBVVElORyBDT1JQLgotCQkJCTEzOTEgV0FSTkVSIEFWRS4sIC1TVUlURQotCQkJCVRVU1RJTiBDQSA5MjY4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtODAgICAoaGV4KQkJTkVUU1RBUiwgSU5DLgotMDBDMDgwICAgICAoYmFzZSAxNikJCU5FVFNUQVIsIElOQy4KLQkJCQlDRURBUiBCVVNJTkVTUyBDRU5URVIKLQkJCQkxODAxIEUuIDc5VEggU1RSRUVUCi0JCQkJTUlOTkVBUE9MSVMgTU4gNTU0MjUtMTIzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtODEgICAoaGV4KQkJTUVUUk9EQVRBIExURC4KLTAwQzA4MSAgICAgKGJhc2UgMTYpCQlNRVRST0RBVEEgTFRELgotCQkJCUJMRU5IRUlNIEhPVVNFCi0JCQkJQ1JBQlRSRUUgT0ZGSUNFIFZJTExBR0UgRVZFUlNMRVkgV0FZLCBFRwotCQkJCVRXMjAgOFJZIFRXMjAgOFJZIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC04MiAgIChoZXgpCQlNT09SRSBQUk9EVUNUUyBDTy4KLTAwQzA4MiAgICAgKGJhc2UgMTYpCQlNT09SRSBQUk9EVUNUUyBDTy4KLQkJCQlTVU1ORVlUT1dOIFBJS0UKLQkJCQlTUFJJTkcgSE9VU0UgUEEgMTk0NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTgzICAgKGhleCkJCVRSQUNFIE1PVU5UQUlOIFBST0RVQ1RTLCBJTkMuCi0wMEMwODMgICAgIChiYXNlIDE2KQkJVFJBQ0UgTU9VTlRBSU4gUFJPRFVDVFMsIElOQy4KLQkJCQkxMDQwIEVBU1QgQlJPS0FXIFJPQUQKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtODQgICAoaGV4KQkJREFUQSBMSU5LIENPUlAuIExURC4KLTAwQzA4NCAgICAgKGJhc2UgMTYpCQlEQVRBIExJTksgQ09SUC4gTFRELgotCQkJCTMtMTUtMyBNSURPUklDSE8KLQkJCQlUT0tPUk9aQVdBLUNJVFkgU0FJVEFNQSAgMzU5Ci0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC04NSAgIChoZXgpCQlFTEVDVFJPTklDUyBGT1IgSU1BR0lORywgSU5DLgotMDBDMDg1ICAgICAoYmFzZSAxNikJCUVMRUNUUk9OSUNTIEZPUiBJTUFHSU5HLCBJTkMuCi0JCQkJMjg1NSBDQU1QVVMgRFJJVkUKLQkJCQlTQU4gTUFURU8gQ0EgOTQ0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTg2ICAgKGhleCkJCVRIRSBMWU5LIENPUlBPUkFUSU9OCi0wMEMwODYgICAgIChiYXNlIDE2KQkJVEhFIExZTksgQ09SUE9SQVRJT04KLQkJCQkxMDEgUVVFRU5TIERSSVZFCi0JCQkJS0lORyBPRiBQUlVTU0lBIFBBIDE5NDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04NyAgIChoZXgpCQlVVU5FVCBURUNITk9MT0dJRVMsIElOQy4KLTAwQzA4NyAgICAgKGJhc2UgMTYpCQlVVU5FVCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkzMTEwIEZBSVJWSUVXIFBBUksgRFIuICM1NzAKLQkJCQlGQUxMUyBDSFVSQ0ggVkEgMjIwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTg4ICAgKGhleCkJCUVLRiBFTEVLVFJPTklLIEdNQkgKLTAwQzA4OCAgICAgKGJhc2UgMTYpCQlFS0YgRUxFS1RST05JSyBHTUJICi0JCQkJUEhJTElQUC1SRUlTLVNUUi4gNAotCQkJCTQ3MDAgSEFNTQotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUMwLTg5ICAgKGhleCkJCVRFTElORFVTIERJU1RSSUJVVElPTgotMDBDMDg5ICAgICAoYmFzZSAxNikJCVRFTElORFVTIERJU1RSSUJVVElPTgotCQkJCUdFTERFTkFBS1NFQkFBTiAzMzUKLQkJCQkzMDAxIEhFVkVSTEVFCi0JCQkJQkVMR0lVTQotCQkJCUJFTEdJVU0KLQotMDAtQzAtOEEgICAoaGV4KQkJTGF1dGVyYmFjaCBHbWJICi0wMEMwOEEgICAgIChiYXNlIDE2KQkJTGF1dGVyYmFjaCBHbWJICi0JCQkJQWx0bGF1ZnN0ci4gNDAsCi0JCQkJSPZoZW5raXJjaGVuLVNpZWdlcnRzYnJ1bm4sIDg1NjM1Ci0JCQkJR0VSTUFOWQotCi0wMC1DMC04QiAgIChoZXgpCQlSSVNRIE1PRFVMQVIgU1lTVEVNUywgSU5DLgotMDBDMDhCICAgICAoYmFzZSAxNikJCVJJU1EgTU9EVUxBUiBTWVNURU1TLCBJTkMuCi0JCQkJMzk4OTkgQkFMRU5USU5FIERSSVZFLVNURSAjMzc1Ci0JCQkJTkVXQVJLIENBIDk0NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04QyAgIChoZXgpCQlQRVJGT1JNQU5DRSBURUNITk9MT0dJRVMsIElOQy4KLTAwQzA4QyAgICAgKGJhc2UgMTYpCQlQRVJGT1JNQU5DRSBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkzMTUgU0NJRU5DRSBQQVJLV0FZCi0JCQkJUk9DSEVTVEVSIE5ZIDE0NjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04RCAgIChoZXgpCQlUUk9OSVggUFJPRFVDVCBERVZFTE9QTUVOVAotMDBDMDhEICAgICAoYmFzZSAxNikJCVRST05JWCBQUk9EVUNUIERFVkVMT1BNRU5UCi0JCQkJNDkwOCBFLiBNQ0RPV0VMTCBSRC4gU1RFLiMxMDAKLQkJCQlQSE9FTklYIEFaIDg1MDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04RSAgIChoZXgpCQlORVRXT1JLIElORk9STUFUSU9OIFRFQ0hOT0xPR1kKLTAwQzA4RSAgICAgKGJhc2UgMTYpCQlORVRXT1JLIElORk9STUFUSU9OIFRFQ0hOT0xPR1kKLQkJCQkxMDQzMCBTLiBERSBBTlpBIEJMVkQuCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC04RiAgIChoZXgpCQlQYW5hc29uaWMgRWxlY3RyaWMgV29ya3MgQ28uLCBMdGQuCi0wMEMwOEYgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIEVsZWN0cmljIFdvcmtzIENvLiwgTHRkLgotCQkJCVRzdS1GYWN0b3J5Ci0JCQkJMTY2OCBGdWppa2F0YSBUc3Utc2hpCi0JCQkJTWllLWtlbiA1MTQtODU1NSAKLQkJCQlKQVBBTgotCi0wMC1DMC05MCAgIChoZXgpCQlQUkFJTSBTLlIuTC4KLTAwQzA5MCAgICAgKGJhc2UgMTYpCQlQUkFJTSBTLlIuTC4KLQkJCQlWSUEgTUFDQ0FOSSwgMTY5Ci0JCQkJMzgxMDAgVFJFTlRPIChUTikKLQkJCQlJVEFMWQotCi0wMC1DMC05MSAgIChoZXgpCQlKQUJJTCBDSVJDVUlULCBJTkMuCi0wMEMwOTEgICAgIChiYXNlIDE2KQkJSkFCSUwgQ0lSQ1VJVCwgSU5DLgotCQkJCTMyMjc1IE1BTExZIFJPQUQKLQkJCQlNQURJU09OIEhFSUdIVFMgTUkgNDgwNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTkyICAgKGhleCkJCU1FTk5FTiBNRURJQ0FMIElOQy4KLTAwQzA5MiAgICAgKGJhc2UgMTYpCQlNRU5ORU4gTUVESUNBTCBJTkMuCi0JCQkJMTAxMjMgTUFJTiBTVFJFRVQKLQkJCQlDTEFSRU5DRSBOWSAxNDAzMS0yMDk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC05MyAgIChoZXgpCQlBTFRBIFJFU0VBUkNIIENPUlAuCi0wMEMwOTMgICAgIChiYXNlIDE2KQkJQUxUQSBSRVNFQVJDSCBDT1JQLgotCQkJCTYxNCBTT1VUSCBGRURFUkFMIEhJR0hXQVkKLQkJCQlERUVSRklFTEQgQkVBQ0ggRkwgMzM0NDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTk0ICAgKGhleCkJCVZNWCBJTkMuCi0wMEMwOTQgICAgIChiYXNlIDE2KQkJVk1YIElOQy4KLQkJCQkyMTE1IE8nTkVMIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTk1ICAgKGhleCkJCVpOWVgKLTAwQzA5NSAgICAgKGJhc2UgMTYpCQlaTllYCi0JCQkJNDg0MjEgTWlsbW9udCBEcml2ZQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTk2ICAgKGhleCkJCVRBTVVSQSBDT1JQT1JBVElPTgotMDBDMDk2ICAgICAoYmFzZSAxNikJCVRBTVVSQSBDT1JQT1JBVElPTgotCQkJCUNPTU1VTklDQVRJT04gU1lTVEVNUyBESVYuCi0JCQkJMTktNDMgSElHQVNISSBPSVpVTUkgMSBDSE9NRSBORVJJTUEtS1UsCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC05NyAgIChoZXgpCQlBUkNISVBFTCBTQQotMDBDMDk3ICAgICAoYmFzZSAxNikJCUFSQ0hJUEVMIFNBCi0JCQkJMSBSVUUgRFUgQlVMTE9aCi0JCQkJRiA3NDk0MCBBTk5FQ1ktTEUtVklFVVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtQzAtOTggICAoaGV4KQkJQ0hVTlRFWCBFTEVDVFJPTklDIENPLiwgTFRELgotMDBDMDk4ICAgICAoYmFzZSAxNikJCUNIVU5URVggRUxFQ1RST05JQyBDTy4sIExURC4KLQkJCQk2Ri4sIE5PLjIsIEFMTEVZIDYsIExBTkUgMjM1Ci0JCQkJUEFPIENISUFPIFJELiwgSFNJTiBUSUVOLCBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtOTkgICAoaGV4KQkJWU9TSElLSSBJTkRVU1RSSUFMIENPLixMVEQuCi0wMEMwOTkgICAgIChiYXNlIDE2KQkJWU9TSElLSSBJTkRVU1RSSUFMIENPLixMVEQuCi0JCQkJMS0zOCBNQVRTVUdBU0FLSSAyLUNIT01FCi0JCQkJWU9ORVpBV0EgWUFNQUdBVEEKLQkJCQk5OTIgSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC05QSAgIChoZXgpCQlQSE9UT05JQ1MgQ09SUE9SQVRJT04KLTAwQzA5QSAgICAgKGJhc2UgMTYpCQlQSE9UT05JQ1MgQ09SUE9SQVRJT04KLQkJCQkyOTQwIE5PUlRIIEZJUlNUIFNUUkVFVAotCQkJCVNBTiBKT1NFIENBIDk1MTIzLTIwMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLTlCICAgKGhleCkJCVJFTElBTkNFIENPTU0vVEVDLCBSLVRFQwotMDBDMDlCICAgICAoYmFzZSAxNikJCVJFTElBTkNFIENPTU0vVEVDLCBSLVRFQwotCQkJCVNZU1RFTVMgSU5DLgotCQkJCTIxMDAgUkVMSUFOQ0UgUEFSS1dBWSwgIE1TIDIyCi0JCQkJQkVERk9SRCBUWCA3NjAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtOUMgICAoaGV4KQkJSElPS0kgRS5FLiBDT1JQT1JBVElPTgotMDBDMDlDICAgICAoYmFzZSAxNikJCUhJT0tJIEUuRS4gQ09SUE9SQVRJT04KLQkJCQk4MSBLb2l6dW1pLCBVZWRhLCBOYWdhbm8KLQkJCQlDaGl5b2RhLWt1Ci0JCQkJVG9reW8gIDM4Ni0xMTkyCi0JCQkJSkFQQU4KLQotMDAtQzAtOUQgICAoaGV4KQkJRElTVFJJQlVURUQgU1lTVEVNUyBJTlQnTCwgSU5DCi0wMEMwOUQgICAgIChiYXNlIDE2KQkJRElTVFJJQlVURUQgU1lTVEVNUyBJTlQnTCwgSU5DCi0JCQkJNTMxIFdFU1QgUk9PU0VWTEVUIFJELCBTVEUgIzIKLQkJCQlXSEVBVE9OIElMIDYwMTg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC05RSAgIChoZXgpCQlDQUNIRSBDT01QVVRFUlMsIElOQy4KLTAwQzA5RSAgICAgKGJhc2UgMTYpCQlDQUNIRSBDT01QVVRFUlMsIElOQy4KLQkJCQk0NjYwMCBMQU5ESU5HIFBBUktXQVkKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC05RiAgIChoZXgpCQlRVUFOVEEgQ09NUFVURVIsIElOQy4KLTAwQzA5RiAgICAgKGJhc2UgMTYpCQlRVUFOVEEgQ09NUFVURVIsIElOQy4KLQkJCQk3Ri4sIDExNiwgSE9VLUtBTkcgU1QuLAotCQkJCVNISUgtTElOIERJU1QuIFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1DMC1BMCAgIChoZXgpCQlBRFZBTkNFIE1JQ1JPIFJFU0VBUkNILCBJTkMuCi0wMEMwQTAgICAgIChiYXNlIDE2KQkJQURWQU5DRSBNSUNSTyBSRVNFQVJDSCwgSU5DLgotCQkJCTIwNDUgQ09SUE9SQVRFIENPVVJUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUExICAgKGhleCkJCVRPS1lPIERFTlNISSBTRUtFSSBDTy4KLTAwQzBBMSAgICAgKGJhc2UgMTYpCQlUT0tZTyBERU5TSEkgU0VLRUkgQ08uCi0JCQkJMjU1LTEgUkVOS09KSSwgVEFNQS1TSEkKLQkJCQlUT0tZTwotCQkJCUpBUEFOIDIwNgotCQkJCUpBUEFOCi0KLTAwLUMwLUEyICAgKGhleCkJCUlOVEVSTUVESVVNIEEvUwotMDBDMEEyICAgICAoYmFzZSAxNikJCUlOVEVSTUVESVVNIEEvUwotCQkJCU9ESU5TVkVKIDE5Ci0JCQkJREstMjYwMCBHTE9TVFJVUAotCQkJCURFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLUMwLUEzICAgKGhleCkJCURVQUwgRU5URVJQUklTRVMgQ09SUE9SQVRJT04KLTAwQzBBMyAgICAgKGJhc2UgMTYpCQlEVUFMIEVOVEVSUFJJU0VTIENPUlBPUkFUSU9OCi0JCQkJOVRIIEZMT09SIDQ4IE5BTi1LQU5HIFJPQUQKLQkJCQlTRUMuMywgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLUE0ICAgKGhleCkJCVVOSUdSQUYgT1kKLTAwQzBBNCAgICAgKGJhc2UgMTYpCQlVTklHUkFGIE9ZCi0JCQkJUlVVS0lOVElFIDE4Ci0JCQkJMDIzMjAgRVNQMDAKLQkJCQlGSU5MQU5ECi0JCQkJRklOTEFORAotCi0wMC1DMC1BNSAgIChoZXgpCQlESUNLRU5TIERBVEEgU1lTVEVNUwotMDBDMEE1ICAgICAoYmFzZSAxNikJCURJQ0tFTlMgREFUQSBTWVNURU1TCi0JCQkJMTE3NSBOT1JUSE1FQURPVyBQS1dZLVNURSAjMTUwCi0JCQkJUk9TV0VMTCBHQSAzMDA3NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQTYgICAoaGV4KQkJRVhJQ09NIEFVU1RSQUxJQSBQVFkuIExURAotMDBDMEE2ICAgICAoYmFzZSAxNikJCUVYSUNPTSBBVVNUUkFMSUEgUFRZLiBMVEQKLQkJCQk0NC00NiBNQU5EQVJJTiBTVFJFRVQKLQkJCQlWSUxMQVdPT0QgTlNXIDIxNjMKLQkJCQlBVVNUUkFMSUEKLQkJCQlBVVNUUkFMSUEKLQotMDAtQzAtQTcgICAoaGV4KQkJU0VFTCBMVEQuCi0wMEMwQTcgICAgIChiYXNlIDE2KQkJU0VFTCBMVEQuCi0JCQkJMyBZT1VORyBTUVVBUkUKLQkJCQlMSVZJTkdTVE9OICBFSDU0ICA5QkoKLQkJCQlTQ09UTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLUE4ICAgKGhleCkJCUdWQyBDT1JQT1JBVElPTgotMDBDMEE4ICAgICAoYmFzZSAxNikJCUdWQyBDT1JQT1JBVElPTgotCQkJCTE5NjEgQ09OQ09VUlNFIERSSVZFLVNURQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1BOSAgIChoZXgpCQlCQVJST04gTUNDQU5OIExURC4KLTAwQzBBOSAgICAgKGJhc2UgMTYpCQlCQVJST04gTUNDQU5OIExURC4KLQkJCQlCRU1BQyBIT1VTRQotCQkJCUZJRlRIIEFWRU5VRSwgTEVUQ0hXT1JUSCBIRVJUUy4sIFNHNiAySEYKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLUFBICAgKGhleCkJCVNJTElDT04gVkFMTEVZIENPTVBVVEVSCi0wMEMwQUEgICAgIChiYXNlIDE2KQkJU0lMSUNPTiBWQUxMRVkgQ09NUFVURVIKLQkJCQk0NDEgTi4gV0hJU01BTiBSRC4sIEJMREcuIzEzCi0JCQkJTVQuIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUFCICAgKGhleCkJCVRlbGNvIFN5c3RlbXMsIEluYy4KLTAwQzBBQiAgICAgKGJhc2UgMTYpCQlUZWxjbyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTUgQmVya3NoaXJlIFJvYWQKLQkJCQlNYW5zZmllbGQsIE1BIDAyMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1BQyAgIChoZXgpCQlHQU1CSVQgQ09NUFVURVIgQ09NTVVOSUNBVElPTlMKLTAwQzBBQyAgICAgKGJhc2UgMTYpCQlHQU1CSVQgQ09NUFVURVIgQ09NTVVOSUNBVElPTlMKLQkJCQlTT0xUQU0gSU5EVVNUUklBTCBQQVJLCi0JCQkJUC5PLiBCT1ggMTA3IFlPS05FQU0gMjA2OTIKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtQzAtQUQgICAoaGV4KQkJTUFSQkVOIENPTU1VTklDQVRJT04gU1lTVEVNUwotMDBDMEFEICAgICAoYmFzZSAxNikJCU1BUkJFTiBDT01NVU5JQ0FUSU9OIFNZU1RFTVMKLQkJCQkxIFJVRSBEVSBCT0lTIENIQUxBTkQKLQkJCQlMSVNTRVMgOTEwMjkgRVZSWSBDRURFWAotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC1DMC1BRSAgIChoZXgpCQlUT1dFUkNPTSBDTy4gSU5DLiBEQkEgUEMgSE9VU0UKLTAwQzBBRSAgICAgKGJhc2UgMTYpCQlUT1dFUkNPTSBDTy4gSU5DLiBEQkEgUEMgSE9VU0UKLQkJCQk4NDEgRS4gQVJURVNJQSBCTFZELgotCQkJCUNBUlNPTiBDQSA5MDc0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQUYgICAoaGV4KQkJVEVLTE9HSVggSU5DLgotMDBDMEFGICAgICAoYmFzZSAxNikJCVRFS0xPR0lYIElOQy4KLQkJCQkyMTAwIE1FQURPV1ZBTEUgQk9VTEVWQVJECi0JCQkJTUlTU0lTU0FVR0EsIE9OVEFSSU8sCi0JCQkJQ0FOQURBIEw1TiA3SjkKLQkJCQlDQU5BREEKLQotMDAtQzAtQjAgICAoaGV4KQkJR0NDIFRFQ0hOT0xPR0lFUyxJTkMuCi0wMEMwQjAgICAgIChiYXNlIDE2KQkJR0NDIFRFQ0hOT0xPR0lFUyxJTkMuCi0JCQkJNTgwIFdJTlRFUiBTVFJFRVQKLQkJCQlXQUxUSEFNIE1BIDAyMTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1CMSAgIChoZXgpCQlHRU5JVVMgTkVUIENPLgotMDBDMEIxICAgICAoYmFzZSAxNikJCUdFTklVUyBORVQgQ08uCi0JCQkJNEYsIEhBTlNPTyBCL0QgMjEwLTUKLQkJCQlZQU5HSkFFLURPTkcsIFNFT0NITy1HVSBTRU9VTAotCQkJCVNPVVRIIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUMwLUIyICAgKGhleCkJCU5PUkFORCBDT1JQT1JBVElPTgotMDBDMEIyICAgICAoYmFzZSAxNikJCU5PUkFORCBDT1JQT1JBVElPTgotCQkJCTU1MCAyTkQgU1RSRUVUIFNFCi0JCQkJQ0VEQVIgUkFQSURTIElBIDUyNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1CMyAgIChoZXgpCQlDT01TVEFUIERBVEFDT01NIENPUlBPUkFUSU9OCi0wMEMwQjMgICAgIChiYXNlIDE2KQkJQ09NU1RBVCBEQVRBQ09NTSBDT1JQT1JBVElPTgotCQkJCTE3MjAgU1BFQ1RSVU0gRFJJVkUKLQkJCQlMQVdSRU5DRVZJTExFIEdBIDMwMjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1CNCAgIChoZXgpCQlNWVNPTiBURUNITk9MT0dZLCBJTkMuCi0wMEMwQjQgICAgIChiYXNlIDE2KQkJTVlTT04gVEVDSE5PTE9HWSwgSU5DLgotCQkJCTJGLCBOTy4gMywgSU5EVVNUUlkgRS4gUkQuSVYKLQkJCQlTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSyBIU0lOQ0hVLCAoCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1DMC1CNSAgIChoZXgpCQlDT1JQT1JBVEUgTkVUV09SSyBTWVNURU1TLElOQy4KLTAwQzBCNSAgICAgKGJhc2UgMTYpCQlDT1JQT1JBVEUgTkVUV09SSyBTWVNURU1TLElOQy4KLQkJCQk1NzExIFNJWCBGT1JLUyBST0FELS1TVEUgIzMwNgotCQkJCVJBTEVJR0ggTkMgMjc2MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUI2ICAgKGhleCkJCU92ZXJsYW5kIFN0b3JhZ2UsIEluYy4KLTAwQzBCNiAgICAgKGJhc2UgMTYpCQlPdmVybGFuZCBTdG9yYWdlLCBJbmMuCi0JCQkJNDgyMCBPdmVybGFuZCBBdmVudWUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUI3ICAgKGhleCkJCUFNRVJJQ0FOIFBPV0VSIENPTlZFUlNJT04gQ09SUAotMDBDMEI3ICAgICAoYmFzZSAxNikJCUFNRVJJQ0FOIFBPV0VSIENPTlZFUlNJT04gQ09SUAotCQkJCTI2NyBCT1NUT04gUk9BRCAjMgotCQkJCU5PUlRIIEJJTExFUklDQSBNQSAwMTg2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQjggICAoaGV4KQkJRlJBU0VSJ1MgSElMTCBMVEQuCi0wMEMwQjggICAgIChiYXNlIDE2KQkJRlJBU0VSJ1MgSElMTCBMVEQuCi0JCQkJMjc1MDIgVy4gR0lMTCBST0FECi0JCQkJUC5PLiBCT1ggMTg5Ci0JCQkJTU9SUklTVE9XTiBBWiA4NTM0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQjkgICAoaGV4KQkJRlVOSyBTT0ZUV0FSRSwgSU5DLgotMDBDMEI5ICAgICAoYmFzZSAxNikJCUZVTksgU09GVFdBUkUsIElOQy4KLQkJCQkyMjIgVEhJUkQgU1RSRUVUCi0JCQkJQ0FNQlJJREdFIE1BIDAyMTQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1CQSAgIChoZXgpCQlORVRWQU5UQUdFCi0wMEMwQkEgICAgIChiYXNlIDE2KQkJTkVUVkFOVEFHRQotCQkJCTIwMSBDT05USU5FTlRBTCBCTFZELi1TVEUuIzIwMQotCQkJCUVMIFNFQ1VORE8gQ0EgOTAyNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUJCICAgKGhleCkJCUZPUlZBTCBDUkVBVElWRSwgSU5DLgotMDBDMEJCICAgICAoYmFzZSAxNikJCUZPUlZBTCBDUkVBVElWRSwgSU5DLgotCQkJCTMtMjctMTIgSE9OR08KLQkJCQlCVU5LWU8tS1UgVE9LWU8gIDExMwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtQkMgICAoaGV4KQkJVEVMRUNPTSBBVVNUUkFMSUEvQ1NTQwotMDBDMEJDICAgICAoYmFzZSAxNikJCVRFTEVDT00gQVVTVFJBTElBL0NTU0MKLQkJCQlMT0NLRUQgQkFHIDg4MTIKLQkJCQlTT1VUSENPQVNUIE1BSUwgQ0VOVFJFIDI1MjEgTi5TLlcuCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLUMwLUJEICAgKGhleCkJCUlORVggVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEMwQkQgICAgIChiYXNlIDE2KQkJSU5FWCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkzMzUwIFNDT1RUIEJMVkQuCi0JCQkJQkxERy4jMjkKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQkUgICAoaGV4KQkJQUxDQVRFTCAtIFNFTAotMDBDMEJFICAgICAoYmFzZSAxNikJCUFMQ0FURUwgLSBTRUwKLQkJCQlMT1JFTlogU1RSLgotCQkJCTcwMDAgU1RVVFRHQVJUIDQwCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQzAtQkYgICAoaGV4KQkJVEVDSE5PTE9HWSBDT05DRVBUUywgTFRELgotMDBDMEJGICAgICAoYmFzZSAxNikJCVRFQ0hOT0xPR1kgQ09OQ0VQVFMsIExURC4KLQkJCQlHUkFOR0UgRVNUQVRFCi0JCQkJQ1dNQlJBTiwgR1dFTlQsIE5QNDQgM1hSCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC1DMCAgIChoZXgpCQlTSE9SRSBNSUNST1NZU1RFTVMsIElOQy4KLTAwQzBDMCAgICAgKGJhc2UgMTYpCQlTSE9SRSBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQkyMyBQT0NBSE9OVEFTIEFWRU5VRQotCQkJCU9DRUFOUE9SVCBOSiAwNzc1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQzEgICAoaGV4KQkJUVVBRC9HUkFQSElDUywgSU5DLgotMDBDMEMxICAgICAoYmFzZSAxNikJCVFVQUQvR1JBUEhJQ1MsIElOQy4KLQkJCQlONjMgVzIzMDc1IEhXWSA3NAotCQkJCVNVU1NFWCBXSSA1MzA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQzIgICAoaGV4KQkJSU5GSU5JVEUgTkVUV09SS1MgTFRELgotMDBDMEMyICAgICAoYmFzZSAxNikJCUlORklOSVRFIE5FVFdPUktTIExURC4KLQkJCQkxOSBCUk9PS1NJREUgUk9BRCwgT1hIRVkKLQkJCQlXQVRGT1JELCBIRVJUUyAgV0QxIDRCVyBFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC1DMyAgIChoZXgpCQlBQ1VTT04gQ09NUFVURUQgU09OT0dSQVBIWQotMDBDMEMzICAgICAoYmFzZSAxNikJCUFDVVNPTiBDT01QVVRFRCBTT05PR1JBUEhZCi0JCQkJMTIyMCBDSEFSTEVTVE9OIFJPQUQKLQkJCQlQLk8uIEJPWCA3MzkzCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDAzOS03MzkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1DNCAgIChoZXgpCQlDT01QVVRFUiBPUEVSQVRJT05BTAotMDBDMEM0ICAgICAoYmFzZSAxNikJCUNPTVBVVEVSIE9QRVJBVElPTkFMCi0JCQkJUkVRVUlSRU1FTlQgQU5BTFlTVFMgTFRECi0JCQkJQ09SQUwgSE9VU0UsIDI3NEEgSElHSCBTVFJFRVQgQUxERVJTSE9ULAotCQkJCUdVMTIgNExaIEdVMTIgNExaIEVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1DMC1DNSAgIChoZXgpCQlTSUQgSU5GT1JNQVRJQ0EKLTAwQzBDNSAgICAgKGJhc2UgMTYpCQlTSUQgSU5GT1JNQVRJQ0EKLQkJCQlSVUEgRFIuIEdFUkFMRE8gQ0FNUE9TIE1PUkVJUkEKLQkJCQkyNDAgLSA1IEFOREFSIENFUCAwNDU3MS0wMjAgU0FPIFBBVUxPIC0KLQkJCQlCUkFaSUwKLQkJCQlCUkFaSUwKLQotMDAtQzAtQzYgICAoaGV4KQkJUEVSU09OQUwgTUVESUEgQ09SUC4KLTAwQzBDNiAgICAgKGJhc2UgMTYpCQlQRVJTT05BTCBNRURJQSBDT1JQLgotCQkJCTEtNy03IE1ZIEJMREcuIEhJUkFUU1VLQQotCQkJCVNISU5BR0FXQSwgIFRPS1lPIDE0MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtQzAtQzcgICAoaGV4KQkJU1BBUktUUlVNIE1JQ1JPU1lTVEVNUywgSU5DLgotMDBDMEM3ICAgICAoYmFzZSAxNikJCVNQQVJLVFJVTSBNSUNST1NZU1RFTVMsIElOQy4KLQkJCQkyODYwIFpBTktFUiBST0FELCAgU1RFLiMyMTAKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQzggICAoaGV4KQkJTUlDUk8gQllURSBQVFkuIExURC4KLTAwQzBDOCAgICAgKGJhc2UgMTYpCQlNSUNSTyBCWVRFIFBUWS4gTFRELgotCQkJCTE5NyBTSEVSQk9VUk5FIFJELgotCQkJCU1PTlRNT1JFTkNZIE1FTEJPVVJORSBWSUMKLQkJCQlBVVNUUkFMSUEgMzA5NAotCQkJCUFVU1RSQUxJQQotCi0wMC1DMC1DOSAgIChoZXgpCQlFTFNBRyBCQUlMRVkgUFJPQ0VTUwotMDBDMEM5ICAgICAoYmFzZSAxNikJCUVMU0FHIEJBSUxFWSBQUk9DRVNTCi0JCQkJQVVUT01BVElPTgotCQkJCTI5ODAxIEVVQ0xJRCBBVkVOVUUgTVMtM1MxCi0JCQkJV0lDS0xJRkZFIE9IIDQ0MDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1DQSAgIChoZXgpCQlBTEZBLCBJTkMuCi0wMEMwQ0EgICAgIChiYXNlIDE2KQkJQUxGQSwgSU5DLgotCQkJCTExLTEsIElORFVTVFJZIEVBU1QgUk9BRCBJVgotCQkJCVNDSUVOQ0UgQkFTRUQgSU5EVVNUUklBTCBQQVJLIEhTSU5DSFUKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUMwLUNCICAgKGhleCkJCUNPTlRST0wgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDBDMENCICAgICAoYmFzZSAxNikJCUNPTlRST0wgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCTI1IFNPVVRIIFNUUkVFVAotCQkJCUhPUEtJTlRPTiBNQSAwMTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQ0MgICAoaGV4KQkJVEVMRVNDSUVOQ0VTIENPIFNZU1RFTVMsIElOQy4KLTAwQzBDQyAgICAgKGJhc2UgMTYpCQlURUxFU0NJRU5DRVMgQ08gU1lTVEVNUywgSU5DLgotCQkJCTM1MSBORVcgQUxCQU5ZIFJELgotCQkJCU1PT1JFU1RPV04gTkogMDgwNTctMTE3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtQ0QgICAoaGV4KQkJQ09NRUxUQSwgUy5BLgotMDBDMENEICAgICAoYmFzZSAxNikJCUNPTUVMVEEsIFMuQS4KLQkJCQlBVkRBLiBQQVJDIFRFQ05PTE9HSUMsIDQKLQkJCQkwODI5MCBDRVJEQU5ZT0xBIERFTCBWQUxMRVMgQkFSQ0VMT05BCi0JCQkJU1BBSU4KLQkJCQlTUEFJTgotCi0wMC1DMC1DRSAgIChoZXgpCQlDRUkgU1lTVEVNUyAmIEVOR0lORUVSSU5HIFBURQotMDBDMENFICAgICAoYmFzZSAxNikJCUNFSSBTWVNURU1TICYgRU5HSU5FRVJJTkcgUFRFCi0JCQkJQkxLIDczICMwMi0xOCBBWUVSIFJBSkFIIENSRVNDCi0JCQkJQVlFUiBSQUpBSCBJTkRVU1RSSUFMIEVTVEFURQotCQkJCVNJTkdBUE9SRSAwNTEzCi0JCQkJU0lOR0FQT1JFCi0KLTAwLUMwLUNGICAgKGhleCkJCUlNQVRSQU4gVk9JTUEgT1kKLTAwQzBDRiAgICAgKGJhc2UgMTYpCQlJTUFUUkFOIFZPSU1BIE9ZCi0JCQkJSVZPCi0JCQkJUC5PLiBCT1ggMzQwIDAyMTUxIEVTUE9PCi0JCQkJRklOTEFORAotCQkJCUZJTkxBTkQKLQotMDAtQzAtRDAgICAoaGV4KQkJUkFUT0MgU1lTVEVNIElOQy4KLTAwQzBEMCAgICAgKGJhc2UgMTYpCQlSQVRPQyBTWVNURU0gSU5DLgotCQkJCUFTQUhJIE5BTUJBIEJMREcuCi0JCQkJMS02LTE0IFNISUtJVFNVIEhJR0FTSEkgTkFOSVdBS1UgT1NBS0EgQwotCQkJCTU1NiBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLUQxICAgKGhleCkJCUNPTVRSRUUgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotMDBDMEQxICAgICAoYmFzZSAxNikJCUNPTVRSRUUgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgotCQkJCTVGLTcsIE5PLiAxLCBGVS1IU0lORyBOT1JUSCBSRAotCQkJCVRBSVBFSQotCQkJCVRBSVdBTiBSLk8uQy4KLQkJCQlDSElOQQotCi0wMC1DMC1EMiAgIChoZXgpCQlTWU5URUxMRUNULCBJTkMuCi0wMEMwRDIgICAgIChiYXNlIDE2KQkJU1lOVEVMTEVDVCwgSU5DLgotCQkJCTE1ODEwIE4uIDI4VEggQVZFTlVFCi0JCQkJUEhPRU5JWCBBWiA4NTAyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRDMgICAoaGV4KQkJT0xZTVBVUyBJTUFHRSBTWVNURU1TLCBJTkMuCi0wMEMwRDMgICAgIChiYXNlIDE2KQkJT0xZTVBVUyBJTUFHRSBTWVNURU1TLCBJTkMuCi0JCQkJMTUyNzEgQkFSUkFOQ0EgUEFSS1dBWQotCQkJCUlSVklORSBDQSA5MjcxOC0yMjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1ENCAgIChoZXgpCQlBWE9OIE5FVFdPUktTLCBJTkMuCi0wMEMwRDQgICAgIChiYXNlIDE2KQkJQVhPTiBORVRXT1JLUywgSU5DLgotCQkJCTEwNCBTUFJVQ0UgU1RSRUVUCi0JCQkJV0FURVJUT1dOIE1BIDAyMTcyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1ENSAgIChoZXgpCQlXZXJiZWFnZW50dXIgSsO8cmdlbiBTaWViZXJ0Ci0wMEMwRDUgICAgIChiYXNlIDE2KQkJV2VyYmVhZ2VudHVyIErDvHJnZW4gU2llYmVydAotCQkJCUltIEtsb3N0ZXJnYXJ0ZW4gOAotCQkJCUQtNTAzMjEgQnLDvGhsICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUMwLUQ2ICAgKGhleCkJCUoxIFNZU1RFTVMsIElOQy4KLTAwQzBENiAgICAgKGJhc2UgMTYpCQlKMSBTWVNURU1TLCBJTkMuCi0JCQkJMyBEVU5XT09EWSBQQVJLLVNURS4jMTAzCi0JCQkJQVRMQU5UQSBHQSAzMDMzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRDcgICAoaGV4KQkJVEFJV0FOIFRSQURJTkcgQ0VOVEVSIERCQQotMDBDMEQ3ICAgICAoYmFzZSAxNikJCVRBSVdBTiBUUkFESU5HIENFTlRFUiBEQkEKLQkJCQlUVEMgQ09NUFVURVIgUFJPRFVDVFMKLQkJCQkzMjQ0IE4uIFNLWVdBWSBDSVJDTEUgIzEwMgotCQkJCUlSVklORyBUWCA3NTAzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRDggICAoaGV4KQkJVU5JVkVSU0FMIERBVEEgU1lTVEVNUwotMDBDMEQ4ICAgICAoYmFzZSAxNikJCVVOSVZFUlNBTCBEQVRBIFNZU1RFTVMKLQkJCQk1MDAwIEJSQURGT1JEIERSSVZFCi0JCQkJSFVOVFNWSUxMRSBBTCAzNTgwNS0xOTkzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1EOSAgIChoZXgpCQlRVUlOVEUgTkVUV09SSyBDT05GSURFTlRJQUxJVFkKLTAwQzBEOSAgICAgKGJhc2UgMTYpCQlRVUlOVEUgTkVUV09SSyBDT05GSURFTlRJQUxJVFkKLQkJCQlFUVVJUE1FTlQgSU5DLgotCQkJCTIwNyAtIDEyMSBESU1EQVMgU1RSRUVUIEVBU1QgQkVMTEVWSUxMRSwKLQkJCQlDQU5BREEgSzhOIDFDMwotCQkJCUNBTkFEQQotCi0wMC1DMC1EQSAgIChoZXgpCQlOSUNFIFNZU1RFTVMgTFRELgotMDBDMERBICAgICAoYmFzZSAxNikJCU5JQ0UgU1lTVEVNUyBMVEQuCi0JCQkJMyBURVZVT1QgSEEnQVJFVFogU1QKLQkJCQlURUwgQVZJViAgNjk1NDYKLQkJCQlJU1JBRUwKLQkJCQlJU1JBRUwKLQotMDAtQzAtREIgICAoaGV4KQkJSVBDIENPUlBPUkFUSU9OIChQVEUpIExURC4KLTAwQzBEQiAgICAgKGJhc2UgMTYpCQlJUEMgQ09SUE9SQVRJT04gKFBURSkgTFRELgotCQkJCTEyMiBFVU5PUyBBVkUuLCA3ICMwNS0xMAotCQkJCVNJTkdBUE9SRSAxNDQwCi0JCQkJU0lOR0FQT1JFCi0KLTAwLUMwLURDICAgKGhleCkJCUVPUyBURUNITk9MT0dJRVMsIElOQy4KLTAwQzBEQyAgICAgKGJhc2UgMTYpCQlFT1MgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMzk0NSBGUkVFRE9NIENJUkNMRSwgU1RFLiM3NzAKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtREQgICAoaGV4KQkJUUxvZ2ljIENvcnBvcmF0aW9uCi0wMEMwREQgICAgIChiYXNlIDE2KQkJUUxvZ2ljIENvcnBvcmF0aW9uCi0JCQkJNjMyMSBCdXJ5IERyLgotCQkJCUVkZW4gUHJhcmllIE1OIDU1MzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1ERSAgIChoZXgpCQlaQ09NTSwgSU5DLgotMDBDMERFICAgICAoYmFzZSAxNikJCVpDT01NLCBJTkMuCi0JCQkJMTA1MCBDIEVBU1QgRFVBTkUgQVZFTlVFCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1ERiAgIChoZXgpCQlLWUUgU3lzdGVtcyBDb3JwLgotMDBDMERGICAgICAoYmFzZSAxNikJCUtZRSBTeXN0ZW1zIENvcnAuCi0JCQkJTm8uIDQ5MiBTZWMgNSwgQ2h1bmcgSHNpbiBSb2FkCi0JCQkJVGFpcGVpIEhzaWVuIDI0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtQzAtRTAgICAoaGV4KQkJRFNDIENPTU1VTklDQVRJT04gQ09SUC4KLTAwQzBFMCAgICAgKGJhc2UgMTYpCQlEU0MgQ09NTVVOSUNBVElPTiBDT1JQLgotCQkJCTEwMDAgQ09JVCBST0FELCAgTVMjQURWUCAzCi0JCQkJUExBTk8gVFggNzUwNzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUUxICAgKGhleCkJCVNPTklDIFNPTFVUSU9OUwotMDBDMEUxICAgICAoYmFzZSAxNikJCVNPTklDIFNPTFVUSU9OUwotCQkJCTE4OTEgRS4gRlJBTkNJU0NPIEJMVkQuCi0JCQkJU0FOIFJBRkFFTCBDQSA5NDkwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRTIgICAoaGV4KQkJQ0FMQ09NUCwgSU5DLgotMDBDMEUyICAgICAoYmFzZSAxNikJCUNBTENPTVAsIElOQy4KLQkJCQkyNDExIFcuIExBUEFMTUEgQVZFTlVFCi0JCQkJUC5PLiBCT1ggMzI1MCwgTVMyMgotCQkJCUFOQUhFSU0gQ0EgOTI4MDMtMzI1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRTMgICAoaGV4KQkJT1NJVEVDSCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBDMEUzICAgICAoYmFzZSAxNikJCU9TSVRFQ0ggQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk2NzkgU09VVEhHQVRFIERSSVZFCi0JCQkJR1VFTFBILCBPTlRBUklPCi0JCQkJQ0FOQURBIE4xRyA0UzIKLQkJCQlDQU5BREEKLQotMDAtQzAtRTQgICAoaGV4KQkJU0lFTUVOUyBCVUlMRElORwotMDBDMEU0ICAgICAoYmFzZSAxNikJCVNJRU1FTlMgQlVJTERJTkcKLQkJCQlURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMDAwIERFRVJGSUVMRCBQQVJLV0FZCi0JCQkJQlVGRkFMTyBHUk9WRSBJTCA2MDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRTUgICAoaGV4KQkJR0VTUEFDLCBTLkEuCi0wMEMwRTUgICAgIChiYXNlIDE2KQkJR0VTUEFDLCBTLkEuCi0JCQkJQ0hFTUlOIERFUyBBVUxYIDE4Ci0JCQkJQ0gtMTIyOCBHRU5FVkEKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLUMwLUU2ICAgKGhleCkJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi0wMEMwRTYgICAgIChiYXNlIDE2KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMjcgSmV0cGxleCBDaXJjbGUKLQkJCQlNYWRpc29uIEFMIDM1NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1FNyAgIChoZXgpCQlGSUJFUkRBVEEgQUIKLTAwQzBFNyAgICAgKGJhc2UgMTYpCQlGSUJFUkRBVEEgQUIKLQkJCQlQLk8uIEJPWCAyMDA5NQotCQkJCVMtMTYxMDIgQlJPTU1BCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLUMwLUU4ICAgKGhleCkJCVBMRVhDT00sIElOQy4KLTAwQzBFOCAgICAgKGJhc2UgMTYpCQlQTEVYQ09NLCBJTkMuCi0JCQkJNjUgTU9SRUxBTkQgUk9BREVOVVlFCi0JCQkJU0lNSSBWQUxMRVkgQ0EgOTMwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUU5ICAgKGhleCkJCU9BSyBTT0xVVElPTlMsIExURC4KLTAwQzBFOSAgICAgKGJhc2UgMTYpCQlPQUsgU09MVVRJT05TLCBMVEQuCi0JCQkJQlJPQURXQVkgSE9VU0UKLQkJCQkxNDktMTUxIFNUIE5FT1RTIFJELCBIQVJEV0lDSyBDQU1CUklER0UKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQzAtRUEgICAoaGV4KQkJQVJSQVkgVEVDSE5PTE9HWSBMVEQuCi0wMEMwRUEgICAgIChiYXNlIDE2KQkJQVJSQVkgVEVDSE5PTE9HWSBMVEQuCi0JCQkJMTQ1IEZSSU1MRVkgUk9BRAotCQkJCUNBTUJFUkxFWSwgU1VSUkVZCi0JCQkJRU5HTEFORCBHVTE1IDJQUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUMwLUVCICAgKGhleCkJCVNFSCBDT01QVVRFUlRFQ0hOSUsgR01CSAotMDBDMEVCICAgICAoYmFzZSAxNikJCVNFSCBDT01QVVRFUlRFQ0hOSUsgR01CSAotCQkJCVN1ZWRyaW5nIDExCi0JCQkJUC5PLiBCT1ggMTQwODI5IEQtMzM2MjggQmllbGVmZWxkCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtQzAtRUMgICAoaGV4KQkJREFVUEhJTiBURUNITk9MT0dZCi0wMEMwRUMgICAgIChiYXNlIDE2KQkJREFVUEhJTiBURUNITk9MT0dZCi0JCQkJNDUwIEVJU0VOSE9XRVIgTEFORSBOT1JUSAotCQkJCUxPTUJBUkQgSUwgNjAxNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUVEICAgKGhleCkJCVVTIEFSTVkgRUxFQ1RST05JQwotMDBDMEVEICAgICAoYmFzZSAxNikJCVVTIEFSTVkgRUxFQ1RST05JQwotCQkJCVBST1ZJTkcgR1JPVU5ECi0JCQkJMTgzOCBQQVNFTyBTQU4gTFVJUwotCQkJCVNJRVJSQSBWSVNUQSBBWiA4NTYzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRUUgICAoaGV4KQkJS1lPQ0VSQSBDT1JQT1JBVElPTgotMDBDMEVFICAgICAoYmFzZSAxNikJCUtZT0NFUkEgQ09SUE9SQVRJT04KLQkJCQkyLTE0LTkgVEFNQUdBV0FEQUkKLQkJCQlTRVRBR0FZQS1LVSwgVE9LWU8KLQkJCQkxNTggSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1DMC1FRiAgIChoZXgpCQlBQklUIENPUlBPUkFUSU9OCi0wMEMwRUYgICAgIChiYXNlIDE2KQkJQUJJVCBDT1JQT1JBVElPTgotCQkJCTI5LTExIEhJUkFPS0EtQ0hPCi0JCQkJSEFDSElPVUpJLVNISSBUT0tZTwotCQkJCTE5MiBKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUMwLUYwICAgKGhleCkJCUtJTkdTVE9OIFRFQ0hOT0xPR1kgQ09SUC4KLTAwQzBGMCAgICAgKGJhc2UgMTYpCQlLSU5HU1RPTiBURUNITk9MT0dZIENPUlAuCi0JCQkJMTc2MDAgTkVXSE9QRSBTVFJFRVQKLQkJCQlGT1VOVEFJTiBWQUxMRVkgQ0EgOTI3MDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUMwLUYxICAgKGhleCkJCVNISU5LTyBFTEVDVFJJQyBDTy4sIExURC4KLTAwQzBGMSAgICAgKGJhc2UgMTYpCQlTSElOS08gRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJQ09NUFVURVIgU1lTVEVNIERJVklTSU9OCi0JCQkJMTUwIE1PVE9ZQVNISUtJLCBTQU5ZQS1DSE8gVE9ZT0hBU0hJLVNISQotCQkJCUpBUEFOIDQ0MS0zMQotCQkJCUpBUEFOCi0KLTAwLUMwLUYyICAgKGhleCkJCVRSQU5TSVRJT04gTkVUV09SS1MKLTAwQzBGMiAgICAgKGJhc2UgMTYpCQlUUkFOU0lUSU9OIE5FVFdPUktTCi0JCQkJNjQ3NSBDSVRZIFdFU1QgUEFSS1dBWQotCQkJCU1JTk5FQVBPTElTIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GMyAgIChoZXgpCQlORVRXT1JLIENPTU1VTklDQVRJT05TIENPUlAuCi0wMEMwRjMgICAgIChiYXNlIDE2KQkJTkVUV09SSyBDT01NVU5JQ0FUSU9OUyBDT1JQLgotCQkJCTU1MDEgR1JFRU4gVkFMTEVZIERSSVZFCi0JCQkJQkxPT01JTkdUT04gTU4gNTU0MzctMTA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRjQgICAoaGV4KQkJSU5URVJMSU5LIFNZU1RFTSBDTy4sIExURC4KLTAwQzBGNCAgICAgKGJhc2UgMTYpCQlJTlRFUkxJTksgU1lTVEVNIENPLiwgTFRELgotCQkJCUlOVEVSTElOSyBCL0QsIDQ3Ni0yMAotCQkJCVNFT0dZTy1ET05HLCBNQVBPLUtVIFNFT1VMCi0JCQkJS09SRUEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtQzAtRjUgICAoaGV4KQkJTUVUQUNPTVAsIElOQy4KLTAwQzBGNSAgICAgKGJhc2UgMTYpCQlNRVRBQ09NUCwgSU5DLgotCQkJCTEwOTg5IFZJQSBGUk9OVEVSQQotCQkJCVNBTiBESUVHTyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRjYgICAoaGV4KQkJQ0VMQU4gVEVDSE5PTE9HWSBJTkMuCi0wMEMwRjYgICAgIChiYXNlIDE2KQkJQ0VMQU4gVEVDSE5PTE9HWSBJTkMuCi0JCQkJTk8uIDEwMSwgTUlOLUhTSUFORyBTVC4KLQkJCQlIU0lOLUNIVSBDSVRZCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlDSElOQQotCi0wMC1DMC1GNyAgIChoZXgpCQlFTkdBR0UgQ09NTVVOSUNBVElPTiwgSU5DLgotMDBDMEY3ICAgICAoYmFzZSAxNikJCUVOR0FHRSBDT01NVU5JQ0FUSU9OLCBJTkMuCi0JCQkJOTA1MyBTT1FVRUwgRFJJVkUKLQkJCQlBUFRPUyBDQSA5NTAwMy00MDM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GOCAgIChoZXgpCQlBQk9VVCBDT01QVVRJTkcgSU5DLgotMDBDMEY4ICAgICAoYmFzZSAxNikJCUFCT1VUIENPTVBVVElORyBJTkMuCi0JCQkJUC5PLiBCT1ggMTcyCi0JCQkJQkVMTU9OVCBNQSAwMjE3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRjkgICAoaGV4KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0wMEMwRjkgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0JCQkJMjkwMCBTLiBEaWFibG8gV2F5IFN1aXRlIDE5MAotCQkJCVRlbXBlIEFaIDg1MjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GQSAgIChoZXgpCQlDQU5BUlkgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwQzBGQSAgICAgKGJhc2UgMTYpCQlDQU5BUlkgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQkxODUxIFpBTktFUiBST0FECi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTItNDIxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzAtRkIgICAoaGV4KQkJQURWQU5DRUQgVEVDSE5PTE9HWSBMQUJTCi0wMEMwRkIgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgVEVDSE5PTE9HWSBMQUJTCi0JCQkJMjIxMDAgQk9USEVMTCBISUdIV0FZIFMuRS4KLQkJCQlQLk8uIEJPWCAzMDAzCi0JCQkJQk9USEVMTCBXQSA5ODA0MS0zMDAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GQyAgIChoZXgpCQlFTEFTVElDIFJFQUxJVFksIElOQy4KLTAwQzBGQyAgICAgKGJhc2UgMTYpCQlFTEFTVElDIFJFQUxJVFksIElOQy4KLQkJCQk5MjUgU1RFV0FSVCBTVFJFRVQKLQkJCQlNQURJU09OIFdJIDUzNzEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GRCAgIChoZXgpCQlQUk9TVU0KLTAwQzBGRCAgICAgKGJhc2UgMTYpCQlQUk9TVU0KLQkJCQkxMiBSVUUgU0FESS1DQVJOT1QKLQkJCQk5NDM3MCAgTk9JU0VBVQotCQkJCUZSQU5DRQotCQkJCUZSQU5DRQotCi0wMC1DMC1GRSAgIChoZXgpCQlBUFRFQyBDT01QVVRFUiBTWVNURU1TLCBJTkMuCi0wMEMwRkUgICAgIChiYXNlIDE2KQkJQVBURUMgQ09NUFVURVIgU1lTVEVNUywgSU5DLgotCQkJCVAuTy4gQk9YIDY3NTAKLQkJCQlQT1JUTEFORCBPUiA5NzIyOC02NzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1DMC1GRiAgIChoZXgpCQlET1QgSElMTCBTWVNURU1TIENPUlBPUkFUSU9OCi0wMEMwRkYgICAgIChiYXNlIDE2KQkJRE9UIEhJTEwgU1lTVEVNUyBDT1JQT1JBVElPTgotCQkJCTYzMDUgRWwgQ2FtaW5vIFJlYWwKLQkJCQlDYXJsc2JhZCBDQSA5MjAwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtQzYtMTAgICAoaGV4KQkJQXBwbGUsIEluYy4KLTAwQzYxMCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUNCLUJEICAgKGhleCkJCUNhbWJyaWRnZSBCcm9hZGJhbmQgTmV0d29ya3MgTHRkLgotMDBDQkJEICAgICAoYmFzZSAxNikJCUNhbWJyaWRnZSBCcm9hZGJhbmQgTmV0d29ya3MgTHRkLgotCQkJCVNlbHd5biBIb3VzZSBDYW1icmlkZ2UgQnVzaW5lc3MgUGFyawotCQkJCUNhbWJyaWRnZSBCdXNpbmVzcyBQYXJrCi0JCQkJQ2FtYnJpZGdlICBDQjQgMFdaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtQ0QtOTAgICAoaGV4KQkJTUFTIEVsZWt0cm9uaWsgQUcKLTAwQ0Q5MCAgICAgKGJhc2UgMTYpCQlNQVMgRWxla3Ryb25payBBRwotCQkJCVBvbGxob3JuYm9nZW4gMTkKLQkJCQlIYW1idXJnICAyMTEwNwotCQkJCUdFUk1BTlkKLQotMDAtQ0YtMUMgICAoaGV4KQkJQ09NTVVOSUNBVElPTiBNQUNISU5FUlkgQ09SUC4KLTAwQ0YxQyAgICAgKGJhc2UgMTYpCQlDT01NVU5JQ0FUSU9OIE1BQ0hJTkVSWSBDT1JQLgotCQkJCTEyMjYgQU5BQ0FQQQotCQkJCVNBTlRBIEJBUkJBUkEgQ0EgOTMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTAwICAgKGhleCkJCUZFUlJBTiBTQ0lFTlRJRklDLCBJTkMuCi0wMEQwMDAgICAgIChiYXNlIDE2KQkJRkVSUkFOIFNDSUVOVElGSUMsIElOQy4KLQkJCQkxMTU1OCBTT1JSRU5UTyBWQUxMRVkgUk9BRAotCQkJCVNVSVRFICAjMQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMDEgICAoaGV4KQkJVlNUIFRFQ0hOT0xPR0lFUywgSU5DLgotMDBEMDAxICAgICAoYmFzZSAxNikJCVZTVCBURUNITk9MT0dJRVMsIElOQy4KLQkJCQkxMjUgTkFHT0cgUEFSSwotCQkJCUFDVE9OIE1BIDAxNzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0wMiAgIChoZXgpCQlESVRFQ0ggQ09SUE9SQVRJT04KLTAwRDAwMiAgICAgKGJhc2UgMTYpCQlESVRFQ0ggQ09SUE9SQVRJT04KLQkJCQk4MjUgRUFTVCBNSURETEVGSUVMRCBSRAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTAzICAgKGhleCkJCUNPTURBIEVOVEVSUFJJU0VTIENPUlAuCi0wMEQwMDMgICAgIChiYXNlIDE2KQkJQ09NREEgRU5URVJQUklTRVMgQ09SUC4KLQkJCQkyRiwgTk8uIDUwMS0xOCwgQ0hVTkdDSEVOIFJPQUQKLQkJCQlIU0lOVElFTiwgVEFJUEVJCi0JCQkJVEFJV0FOIFRBSVdBTiBST0MKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTA0ICAgKGhleCkJCVBFTlRBQ09NIExURC4KLTAwRDAwNCAgICAgKGJhc2UgMTYpCQlQRU5UQUNPTSBMVEQuCi0JCQkJOCBIQVNBRE5BT1QgU1RSRUVUCi0JCQkJUC5PLiBCT1ggMTIxMDkgSEVSWkxJQSA0NjczMwotCQkJCUlTUkFFTAotCQkJCUlTUkFFTAotCi0wMC1EMC0wNSAgIChoZXgpCQlaSFMgWkVJVE1BTkFHRU1FTlRTWVNURU1FCi0wMEQwMDUgICAgIChiYXNlIDE2KQkJWkhTIFpFSVRNQU5BR0VNRU5UU1lTVEVNRQotCQkJCUhBUkQtVU5EIFNPRlRXQVJFIEdNQkgKLQkJCQlLUkVVWkJFUkdFUiBSSU5HIDU2IDY1MjA1IFdJRVNCQURFTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLTA2ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDAwNiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTA3ICAgKGhleCkJCU1JQyBBU1NPQ0lBVEVTLCBJTkMuCi0wMEQwMDcgICAgIChiYXNlIDE2KQkJTUlDIEFTU09DSUFURVMsIElOQy4KLQkJCQkxNTEwLTEsIEtBSURPS0kKLQkJCQlUQU1BLCBUT0tZTwotCQkJCUpBUEFOIEpBUEFOIDIwNi0wMDEyCi0JCQkJSkFQQU4KLQotMDAtRDAtMDggICAoaGV4KQkJTUFDVEVMTCBDT1JQT1JBVElPTgotMDBEMDA4ICAgICAoYmFzZSAxNikJCU1BQ1RFTEwgQ09SUE9SQVRJT04KLQkJCQk3MDAwIENBTUVST04gUk9BRAotCQkJCUFVU1RJTiBUWCA3ODc1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMDkgICAoaGV4KQkJSFNJTkcgVEVDSC4gRU5URVJQUklTRSBDTy4gTFRECi0wMEQwMDkgICAgIChiYXNlIDE2KQkJSFNJTkcgVEVDSC4gRU5URVJQUklTRSBDTy4gTFRECi0JCQkJTk8uMiwgTEFORSAxMjgsIFNFQy4gMgotCQkJCUNIVU5HIFNIQU4gTi4gUkQuIFRBSVBFSQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC0wQSAgIChoZXgpCQlMQU5BQ0NFU1MgVEVMRUNPTSBTLkEuCi0wMEQwMEEgICAgIChiYXNlIDE2KQkJTEFOQUNDRVNTIFRFTEVDT00gUy5BLgotCQkJCUdSQU4gVklBIDgtMTAgIDQgIDEKLQkJCQkwODkwMi0gTCdIT1NQSVRBTEVUIERFIExMT0JSRUdBVAotCQkJCVNQQUlOCi0JCQkJU1BBSU4KLQotMDAtRDAtMEIgICAoaGV4KQkJUkhLIFRFQ0hOT0xPR1ksIElOQy4KLTAwRDAwQiAgICAgKGJhc2UgMTYpCQlSSEsgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTEwNTAgRUFTVCBNQVBMRSBST0FECi0JCQkJVFJPWSBNSSA0ODA4MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMEMgICAoaGV4KQkJU05JSkRFUiBNSUNSTyBTWVNURU1TCi0wMEQwMEMgICAgIChiYXNlIDE2KQkJU05JSkRFUiBNSUNSTyBTWVNURU1TCi0JCQkJUC5PLiBCT1ggMzAwCi0JCQkJTkwtNTc1MCBBSCBERVVSTkUKLQkJCQlUSEUgTkVUSEVSTEFORFMKLQkJCQlORVRIRVJMQU5EUwotCi0wMC1EMC0wRCAgIChoZXgpCQlNSUNST01FUklUSUNTIElOU1RSVU1FTlQKLTAwRDAwRCAgICAgKGJhc2UgMTYpCQlNSUNST01FUklUSUNTIElOU1RSVU1FTlQKLQkJCQlDT1JQT1JBVElPTgotCQkJCU9ORSBNSUNST01FRVJJVElDUyBEUklWRQotCQkJCU5PUkNST1NTIEdBIDMwMDkzLTE4NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTBFICAgKGhleCkJCVBMVVJJUywgSU5DLgotMDBEMDBFICAgICAoYmFzZSAxNikJCVBMVVJJUywgSU5DLgotCQkJCTEwNDU1IEJBTkRMRVkgRFJJVkUKLQkJCQlDVVBFUlRJTk8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTBGICAgKGhleCkJCVNQRUVDSCBERVNJR04gR01CSAotMDBEMDBGICAgICAoYmFzZSAxNikJCVNQRUVDSCBERVNJR04gR01CSAotCQkJCUlORFVTVFJJRVNUUi4gMQotCQkJCUQtODIxMTAgR0VSTUVSSU5HCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtMTAgICAoaGV4KQkJQ09OVkVSR0VOVCBORVRXT1JLUywgSU5DLgotMDBEMDEwICAgICAoYmFzZSAxNikJCUNPTlZFUkdFTlQgTkVUV09SS1MsIElOQy4KLQkJCQkyIEhJR0hXT09EIERSSVZFCi0JCQkJVEVXS1NCVVJZIE1BIDAxODc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0xMSAgIChoZXgpCQlQUklTTSBWSURFTywgSU5DLgotMDBEMDExICAgICAoYmFzZSAxNikJCVBSSVNNIFZJREVPLCBJTkMuCi0JCQkJMTU4NTEgREFMTEFTIFBBUktXQVktU1RFLiMxMDYwCi0JCQkJQURESVNPTiBUWCA3NTAwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMTIgICAoaGV4KQkJR0FURVdPUktTIENPUlAuCi0wMEQwMTIgICAgIChiYXNlIDE2KQkJR0FURVdPUktTIENPUlAuCi0JCQkJNzYzMSBNT1JSTyBST0FECi0JCQkJQVRBU0NBREVSTyBDQSA5MzQyMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMTMgICAoaGV4KQkJUFJJTUVYIEFFUk9TUEFDRSBDT01QQU5ZCi0wMEQwMTMgICAgIChiYXNlIDE2KQkJUFJJTUVYIEFFUk9TUEFDRSBDT01QQU5ZCi0JCQkJUC5PLiBCT1ggOTcwMDkKLQkJCQkxMTQ0MSBXSUxMT1dTIFJPQUQgTkUKLQkJCQlSRURNT05EIFdBIDk4MDczLTk3MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTE0ICAgKGhleCkJCVJPT1QsIElOQy4KLTAwRDAxNCAgICAgKGJhc2UgMTYpCQlST09ULCBJTkMuCi0JCQkJOEYgVE9DMiBCbGRnLCA3LTIxLTExIE5pc2hpLUdvdGFuZGEKLQkJCQlTaGluYWdhd2Eta3UKLQkJCQlUb2t5byAxNDEtMDAzMQotCQkJCUpBUEFOCi0KLTAwLUQwLTE1ICAgKGhleCkJCVVOSVZFWCBNSUNST1RFQ0hOT0xPR1kgQ09SUC4KLTAwRDAxNSAgICAgKGJhc2UgMTYpCQlVTklWRVggTUlDUk9URUNITk9MT0dZIENPUlAuCi0JCQkJMiwgVFpFLUNISUFORyAzUkQgUk9BRAotCQkJCUNIVU5HLUxJIElORFVTVFJJQUwgUEFSSywgQ0hVTkctTEkKLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTE2ICAgKGhleCkJCVNDTSBNSUNST1NZU1RFTVMsIElOQy4KLTAwRDAxNiAgICAgKGJhc2UgMTYpCQlTQ00gTUlDUk9TWVNURU1TLCBJTkMuCi0JCQkJMTYwIEtOT1dMRVMgRFJJVkUKLQkJCQlMT1MgR0FUT1MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTE3ICAgKGhleCkJCVNZTlRFQ0ggSU5GT1JNQVRJT04gQ08uLCBMVEQuCi0wMEQwMTcgICAgIChiYXNlIDE2KQkJU1lOVEVDSCBJTkZPUk1BVElPTiBDTy4sIExURC4KLQkJCQk4RiwgMjEwLCBUQS1UVU5HIFJELiwgU0VDLiAzCi0JCQkJSFNJLUNISUgsIFRBSVBFSSBIU0lFTgotCQkJCVRBSVdBTiBUQUlXQU4gUk9DCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC0xOCAgIChoZXgpCQlRV0VTLiBDT00sIElOQy4KLTAwRDAxOCAgICAgKGJhc2UgMTYpCQlRV0VTLiBDT00sIElOQy4KLQkJCQkxNDc0MiBORVdQT1JUIEFWRS4gLSBTVEUuICMyMDMKLQkJCQlUVVNUSU4gQ0EgOTI3ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTE5ICAgKGhleCkJCURBSU5JUFBPTiBTQ1JFRU4gQ09SUE9SQVRFCi0wMEQwMTkgICAgIChiYXNlIDE2KQkJREFJTklQUE9OIFNDUkVFTiBDT1JQT1JBVEUKLQkJCQlSRVBSRVNFTlRBVElWRVMgT0YgQU1FUklDQSxJTkMKLQkJCQkxNzk0MiBDT1dBTiBBVkVOVUUKLQkJCQlJUlZJTkUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTFBICAgKGhleCkJCVVSTUVUICBUTEMgUy5QLkEuCi0wMEQwMUEgICAgIChiYXNlIDE2KQkJVVJNRVQgIFRMQyBTLlAuQS4KLQkJCQlWSUEgREkgQ0FTVEVMIFJPTUFOTyAxNjcKLQkJCQkwMDEyOCAtIFJPTUEKLQkJCQlJVEFMWQotCi0wMC1EMC0xQiAgIChoZXgpCQlNSU1BS0kgRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi0wMEQwMUIgICAgIChiYXNlIDE2KQkJTUlNQUtJIEVOR0lORUVSSU5HIENPLiwgTFRELgotCQkJCTUtOS00MSBLSVRBIFNISU5BR0FXQQotCQkJCVNISU5BR0FXQS1LVSBUT0tZTyAxNDEtMDAwMQotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtRDAtMUMgICAoaGV4KQkJU0JTIFRFQ0hOT0xPR0lFUywKLTAwRDAxQyAgICAgKGJhc2UgMTYpCQlTQlMgVEVDSE5PTE9HSUVTLAotCQkJCUNPTk5FQ1RJVklUWSBQUk9EVUNUUwotCQkJCTEyODQgQ09SUE9SQVRFIENFTlRFUiBEUklWRQotCQkJCVNULiBQQVVMIE1OIDU1MTIxLTEyNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTFEICAgKGhleCkJCUZVUlVOTyBFTEVDVFJJQyBDTy4sIExURC4KLTAwRDAxRCAgICAgKGJhc2UgMTYpCQlGVVJVTk8gRUxFQ1RSSUMgQ08uLCBMVEQuCi0JCQkJTk8uIDktNTIsIEFTSElIQVJBLUNITwotCQkJCU5JU0hJTk9NSVlBLUNJVFkKLQkJCQk2NjItODU4MCAKLQkJCQlKQVBBTgotCi0wMC1EMC0xRSAgIChoZXgpCQlQSU5HVEVMIENPUlAuCi0wMEQwMUUgICAgIChiYXNlIDE2KQkJUElOR1RFTCBDT1JQLgotCQkJCTc3MyBXSU5URVIgU1RSRUVUCi0JCQkJTi4gQU5ET1ZFUiBNQSAwMTg0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMUYgICAoaGV4KQkJQ1RBTSBQVFkuIExURC4KLTAwRDAxRiAgICAgKGJhc2UgMTYpCQlDVEFNIFBUWS4gTFRELgotCQkJCTM5OSBISUdIIFNUUkVFVAotCQkJCUFTSEJVUlRPTiAzMTQ3IFZJQ1RPUklBCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLUQwLTIwICAgKGhleCkJCUFJTSBTWVNURU0sIElOQy4KLTAwRDAyMCAgICAgKGJhc2UgMTYpCQlBSU0gU1lTVEVNLCBJTkMuCi0JCQkJNFRIIEZMT09SIENIVU5HV09PIEIvRCAyMTktMQotCQkJCVBPWUVFLURPTkcsIEdBTkdOQU0tS1UgU0VPTCwgMTM1LTIwMAotCQkJCUtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLTIxICAgKGhleCkJCVJFR0VOVCBFTEVDVFJPTklDUyBDT1JQLgotMDBEMDIxICAgICAoYmFzZSAxNikJCVJFR0VOVCBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTIwMCBDRU5URU5OSUFMIEFWRS4tU1RFLiAjMjAxCi0JCQkJUElTQ0FUQVdBWSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMjIgICAoaGV4KQkJSU5DUkVESUJMRSBURUNITk9MT0dJRVMsIElOQy4KLTAwRDAyMiAgICAgKGJhc2UgMTYpCQlJTkNSRURJQkxFIFRFQ0hOT0xPR0lFUywgSU5DLgotCQkJCTE2MDAgSElDS1MgUk9BRAotCQkJCVJPTExJTkcgTUVBRE9XUyBJTCA2MDAwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMjMgICAoaGV4KQkJSU5GT1JUUkVORCBURUNITk9MT0dZLCBJTkMuCi0wMEQwMjMgICAgIChiYXNlIDE2KQkJSU5GT1JUUkVORCBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTBGLCBOTy4gMzMgU0FOLU1JTiBSRC4KLQkJCQlTRUMuIDIgUEFOQ0hJQU8gQ0lUWSBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLTI0ICAgKGhleCkJCUNvZ25leCBDb3Jwb3JhdGlvbgotMDBEMDI0ICAgICAoYmFzZSAxNikJCUNvZ25leCBDb3Jwb3JhdGlvbgotCQkJCU1vZHVsYXIgVmlzaW9uIFN5c3RlbXMgRGl2aXNpb24KLQkJCQlJbi1TaWdodCBQcm9kdWN0cyBHcm91cCAxNTg2NSBTVyA3NHRoIEF2Ci0JCQkJUG9ydGxhbmQgT1IgOTcyMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTI1ICAgKGhleCkJCVhST1NTVEVDSCwgSU5DLgotMDBEMDI1ICAgICAoYmFzZSAxNikJCVhST1NTVEVDSCwgSU5DLgotCQkJCUhBQkRPTkcgQi9EIDVGIDIxMC0yCi0JCQkJWUFOR0pBRS1ET05HLCBTRU9DSE8tS1UgU0VPVUwKLQkJCQlLT1JFQQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC0yNiAgIChoZXgpCQlISVJTQ0hNQU5OIEFVU1RSSUEgR01CSAotMDBEMDI2ICAgICAoYmFzZSAxNikJCUhJUlNDSE1BTk4gQVVTVFJJQSBHTUJICi0JCQkJT0JFUkVSIFBBU1BFTFNXRUcgNiAtIDgKLQkJCQk2ODMwIFJBTktXRUlMLUJSRURFUklTCi0JCQkJQVVTVFJJQQotCQkJCUFVU1RSSUEKLQotMDAtRDAtMjcgICAoaGV4KQkJQVBQTElFRCBBVVRPTUFUSU9OLCBJTkMuCi0wMEQwMjcgICAgIChiYXNlIDE2KQkJQVBQTElFRCBBVVRPTUFUSU9OLCBJTkMuCi0JCQkJUC5PLiBCT1ggOTk5OQotCQkJCUJBUlRMRVNWSUxMRSBPSyA3NDAwNS05OTk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0yOCAgIChoZXgpCQlPTU5FT04gVklERU8gTkVUV09SS1MKLTAwRDAyOCAgICAgKGJhc2UgMTYpCQlPTU5FT04gVklERU8gTkVUV09SS1MKLQkJCQk5NjUgU3Rld2FydCBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4Ni0zOTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0yOSAgIChoZXgpCQlXQUtFRkVSTiBGT09EIENPUlBPUkFUSU9OCi0wMEQwMjkgICAgIChiYXNlIDE2KQkJV0FLRUZFUk4gRk9PRCBDT1JQT1JBVElPTgotCQkJCTIzMCBSQVJJVEFOIENFTlRFUiBQQVJLV0FZCi0JCQkJRURJU09OIE5KIDA4ODM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0yQSAgIChoZXgpCQlWb3hlbnQgU3lzdGVtcyBMdGQuCi0wMEQwMkEgICAgIChiYXNlIDE2KQkJVm94ZW50IFN5c3RlbXMgTHRkLgotCQkJCVVuaXQgMiwgUm93YW4gSG91c2UKLQkJCQlTaGVsZG9uIEJ1c2luZXNzIFBhcmsKLQkJCQlDaGlwcGVuaGFtIFdpbHRzaGlyZSBTTjE0IDBTUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTJCICAgKGhleCkJCUpFVENFTEwsIElOQy4KLTAwRDAyQiAgICAgKGJhc2UgMTYpCQlKRVRDRUxMLCBJTkMuCi0JCQkJMTczIENPTlNUSVRVVElPTiBEUklWRQotCQkJCU1FTkxPIFBBUksgQ0EgOTQwMjUtMTEwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMkMgICAoaGV4KQkJQ0FNUEJFTEwgU0NJRU5USUZJQywgSU5DLgotMDBEMDJDICAgICAoYmFzZSAxNikJCUNBTVBCRUxMIFNDSUVOVElGSUMsIElOQy4KLQkJCQk4MTUgVy4gMTgwMCBOLgotCQkJCUxPR0FOIFVUIDg0MzIxLTE3ODQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTJEICAgKGhleCkJCUFERU1DTwotMDBEMDJEICAgICAoYmFzZSAxNikJCUFERU1DTwotCQkJCTE2NSBFSUxFRU4gV0FZCi0JCQkJU1lPU1NFVCBOWSAxMTc5MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMkUgICAoaGV4KQkJQ09NTVVOSUNBVElPTiBBVVRPTUFUSU9OIENPUlAuCi0wMEQwMkUgICAgIChiYXNlIDE2KQkJQ09NTVVOSUNBVElPTiBBVVRPTUFUSU9OIENPUlAuCi0JCQkJMTE4MCBNQ0RFUk1PVFQgRFJJVkUKLQkJCQlXRVNUIENIRVNURVIgUEEgMTkzODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTJGICAgKGhleCkJCVZMU0kgVEVDSE5PTE9HWSBJTkMuCi0wMEQwMkYgICAgIChiYXNlIDE2KQkJVkxTSSBURUNITk9MT0dZIElOQy4KLQkJCQk4Mzc1IFMuIFJJVkVSIFBBUktXQVkKLQkJCQlURU1QRSBBWiA4NTI4NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMzAgICAoaGV4KQkJU2FmZXRyYW4gU3lzdGVtcyBDb3JwCi0wMEQwMzAgICAgIChiYXNlIDE2KQkJU2FmZXRyYW4gU3lzdGVtcyBDb3JwCi0JCQkJMTA2NTUgN3RoIFN0cmVldAotCQkJCVJhbmNobyBDdWNhbW9uZ2EgQ0EgOTE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTMxICAgKGhleCkJCUlORFVTVFJJQUwgTE9HSUMgQ09SUE9SQVRJT04KLTAwRDAzMSAgICAgKGJhc2UgMTYpCQlJTkRVU1RSSUFMIExPR0lDIENPUlBPUkFUSU9OCi0JCQkJMTUgUElFRE1PTlQgQ0VOVEVSLVNURSAjNzAwCi0JCQkJQVRMQU5UQSBHQSAzMDMwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMzIgICAoaGV4KQkJWUFOTyBFTEVDVFJJQyBDTy4sIExURC4KLTAwRDAzMiAgICAgKGJhc2UgMTYpCQlZQU5PIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTctMy0xIElCVUtJREFJSElHQVNISU1BQ0hJCi0JCQkJTklTSEktS1UsIEtPQkUsIDY1MS0yMjQyCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC0zMyAgIChoZXgpCQlEQUxJQU4gREFYSUFOIE5FVFdPUksKLTAwRDAzMyAgICAgKGJhc2UgMTYpCQlEQUxJQU4gREFYSUFOIE5FVFdPUksKLQkJCQlTWVNURU0gQ08uLCBMVEQuCi0JCQkJOTggU0hFTkdMSSBSRCBYSUdBTkcgRElTVFJJQ1QgREFMSUFOLCBQLgotCQkJCUNISU5BCi0JCQkJQ0hJTkEKLQotMDAtRDAtMzQgICAoaGV4KQkJT1JNRUMgU1lTVEVNUyBDT1JQLgotMDBEMDM0ICAgICAoYmFzZSAxNikJCU9STUVDIFNZU1RFTVMgQ09SUC4KLQkJCQkxOSBMSU5ERU4gUEFSSwotCQkJCVJPQ0hFU1RFUiBOWSAxNDYyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtMzUgICAoaGV4KQkJQkVIQVZJT1IgVEVDSC4gQ09NUFVURVIgQ09SUC4KLTAwRDAzNSAgICAgKGJhc2UgMTYpCQlCRUhBVklPUiBURUNILiBDT01QVVRFUiBDT1JQLgotCQkJCTIwRi1CLCBOby45OCwgU2VjLiAxLAotCQkJCVNpbnRhaSA1dGggUmQuCi0JCQkJU2lqaGloIENpdHkgVGFpcGVpIENvdW50eSAyMjEwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtMzYgICAoaGV4KQkJVEVDSE5PTE9HWSBBVExBTlRBIENPUlAuCi0wMEQwMzYgICAgIChiYXNlIDE2KQkJVEVDSE5PTE9HWSBBVExBTlRBIENPUlAuCi0JCQkJMTQxIFcuIFdJRVVDQSBSRC4gTi5FLgotCQkJCVNVSVRFICMzMDAKLQkJCQlBVExBTlRBIEdBIDMwMzQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC0zNyAgIChoZXgpCQlQYWNlIEZyYW5jZQotMDBEMDM3ICAgICAoYmFzZSAxNikJCVBhY2UgRnJhbmNlCi0JCQkJMzMgcnVlIGRlIFZlcmR1bgotCQkJCTkyMTUwIFN1cmVzbmVzIAotCQkJCUZSQU5DRQotCi0wMC1EMC0zOCAgIChoZXgpCQlGSVZFTUVSRSwgTFRELgotMDBEMDM4ICAgICAoYmFzZSAxNikJCUZJVkVNRVJFLCBMVEQuCi0JCQkJVU5JVCAxLUhFUk9OIElORFVTVFJJQUwgRVNUQVRFCi0JCQkJQkFTSU5HU1RPS0UgUk9BRCBTUEVOQ0VSUyBXT09ELCAgUkVBRElORwotCQkJCVJHNyAxUEogRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTM5ICAgKGhleCkJCVVUSUxJQ09NLCBJTkMuCi0wMEQwMzkgICAgIChiYXNlIDE2KQkJVVRJTElDT00sIElOQy4KLQkJCQkzMjMgTE9WRSBQTEFDRQotCQkJCVNBTlRBIEJBUkJBUkEgQ0EgOTMxMTItMzI4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtM0EgICAoaGV4KQkJWk9ORVdPUlgsIElOQy4KLTAwRDAzQSAgICAgKGJhc2UgMTYpCQlaT05FV09SWCwgSU5DLgotCQkJCTQwOTI1IENPVU5UWSBDRU5URVIgRFJJVkUKLQkJCQlTVUlURSAjMjAwCi0JCQkJVEVNRUNVTEEgQ0EgOTI1OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTNCICAgKGhleCkJCVZJU0lPTiBQUk9EVUNUUyBQVFkuIExURC4KLTAwRDAzQiAgICAgKGJhc2UgMTYpCQlWSVNJT04gUFJPRFVDVFMgUFRZLiBMVEQuCi0JCQkJU0VDT05EIEFWRU5VRSwgVEVDSE5PTE9HWSBQQVJLCi0JCQkJTUFXU09OIExBS0VTCi0JCQkJQVVTVFJBTElBIDUwOTUKLQkJCQlBVVNUUkFMSUEKLQotMDAtRDAtM0MgICAoaGV4KQkJVmllbywgSW5jLgotMDBEMDNDICAgICAoYmFzZSAxNikJCVZpZW8sIEluYy4KLQkJCQkxMjQxNiBIeW1lYWRvdyBEcml2ZSwKLQkJCQlTdWl0ZSAyMDAKLQkJCQlBdXN0aW4gVFggNzg3NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTNEICAgKGhleCkJCUdBTElMRU8gVEVDSE5PTE9HWSwgTFRELgotMDBEMDNEICAgICAoYmFzZSAxNikJCUdBTElMRU8gVEVDSE5PTE9HWSwgTFRELgotCQkJCU1PU0hBViBNQU5PRgotCQkJCUQuTi4gTUlTR0FWIDIwMTg0Ci0JCQkJSVNSQUVMCi0KLTAwLUQwLTNFICAgKGhleCkJCVJPQ0tFVENISVBTLCBJTkMuCi0wMEQwM0UgICAgIChiYXNlIDE2KQkJUk9DS0VUQ0hJUFMsIElOQy4KLQkJCQk3OTAxIFhFUlhFUyBBVkUuIFMuCi0JCQkJTUlOTkVBUE9MSVMgTU4gNTU0MzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTNGICAgKGhleCkJCUFNRVJJQ0FOIENPTU1VTklDQVRJT04KLTAwRDAzRiAgICAgKGJhc2UgMTYpCQlBTUVSSUNBTiBDT01NVU5JQ0FUSU9OCi0JCQkJVEVDSE5PTElHSUVTIElOVEVSTkFUSU9OQUwgSU5DCi0JCQkJMzIwIFBST0ZFU1NJT05BTCBDRU5URVIgRFIuIFNVSVRFICMxMDAKLQkJCQlST0hORVJUIFBBUksgQ0EgOTQ5MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTQwICAgKGhleCkJCVNZU01BVEUgQ08uLCBMVEQuCi0wMEQwNDAgICAgIChiYXNlIDE2KQkJU1lTTUFURSBDTy4sIExURC4KLQkJCQkxMDkxIFdPTFBZT05HLURPTkcKLQkJCQlTRU8tR1UsIERFQUpDT04gMzAyLTI4MAotCQkJCVNPVVRIIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLTQxICAgKGhleCkJCUFNSUdPIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMEQwNDEgICAgIChiYXNlIDE2KQkJQU1JR08gVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQk0Ri0xQiwgTk8uMTIsIExBTkUgNjA5LCBTRUMuNSwKLQkJCQlDSFVORyBIU0lOIFJPQUQsIFNBTiBDSFVORyBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4gVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtNDIgICAoaGV4KQkJTUFITE8gR01CSCAmIENPLiBVRwotMDBEMDQyICAgICAoYmFzZSAxNikJCU1BSExPIEdNQkggJiBDTy4gVUcKLQkJCQlET05BVVNUUkFTU0UgMTIKLQkJCQlELTkzMzQyIFNBQUwvRE9OQVUKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC00MyAgIChoZXgpCQlaT05BTCBSRVRBSUwgREFUQSBTWVNURU1TCi0wMEQwNDMgICAgIChiYXNlIDE2KQkJWk9OQUwgUkVUQUlMIERBVEEgU1lTVEVNUwotCQkJCTI0IEZPUlRIIFNUUkVFVAotCQkJCUVESU5CVVJHSAotCQkJCVNDT1RMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRDAtNDQgICAoaGV4KQkJQUxJRElBTiBORVRXT1JLUywgSU5DLgotMDBEMDQ0ICAgICAoYmFzZSAxNikJCUFMSURJQU4gTkVUV09SS1MsIElOQy4KLQkJCQkxMzMwIFcuIE1JRERMRUZJRUxEIFJPQUQKLQkJCQlNT1VOVEFJTiBWSUVXIENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC00NSAgIChoZXgpCQlLVkFTRVIgQUIKLTAwRDA0NSAgICAgKGJhc2UgMTYpCQlLVkFTRVIgQUIKLQkJCQlCT1ggNDA3NgotCQkJCTUxMSAwNCBLSU5OQUhVTFQKLQkJCQlTV0VERU4KLQkJCQlTV0VERU4KLQotMDAtRDAtNDYgICAoaGV4KQkJRE9MQlkgTEFCT1JBVE9SSUVTLCBJTkMuCi0wMEQwNDYgICAgIChiYXNlIDE2KQkJRE9MQlkgTEFCT1JBVE9SSUVTLCBJTkMuCi0JCQkJMTAwIFBvdHJlcm8gQXZlbnVlCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwMy00OTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC00NyAgIChoZXgpCQlYTiBURUNITk9MT0dJRVMKLTAwRDA0NyAgICAgKGJhc2UgMTYpCQlYTiBURUNITk9MT0dJRVMKLQkJCQlQLk8uIEJPWCAzNTAKLQkJCQlDSEVORVkgV0EgOTkwMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTQ4ICAgKGhleCkJCUVDVE9OLCBJTkMuCi0wMEQwNDggICAgIChiYXNlIDE2KQkJRUNUT04sIElOQy4KLQkJCQk1MTY4IENBTVBVUyBEUklWRQotCQkJCVBMWU1PVVRIIE1FRVRJTkcgUEEgMTk0NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTQ5ICAgKGhleCkJCUlNUFJFU1NURUsgQ08uLCBMVEQuCi0wMEQwNDkgICAgIChiYXNlIDE2KQkJSU1QUkVTU1RFSyBDTy4sIExURC4KLQkJCQk2RiwgU1BFQ0lBTFRZIENPTlNUUlVDVElPTiBDVFIKLQkJCQkxMjkwLCBTVU5TQU4tRE9ORyxTTy1HVQotCQkJCTMwMi0xMjAgS09SRUEgKFJFUC4pCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLTRBICAgKGhleCkJCVBSRVNFTkNFIFRFQ0hOT0xPR1kgR01CSAotMDBEMDRBICAgICAoYmFzZSAxNikJCVBSRVNFTkNFIFRFQ0hOT0xPR1kgR01CSAotCQkJCSsgQ08uIEtHCi0JCQkJU0VOREVOSE9SU1RFUiBTVFIuIDMyIEQtNDgzMTcgRFJFTlNURUlORgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLTRCICAgKGhleCkJCUxBIENJRSBHUk9VUCBTLkEuCi0wMEQwNEIgICAgIChiYXNlIDE2KQkJTEEgQ0lFIEdST1VQIFMuQS4KLQkJCQkxNyBSVUUgQU1QRVJFCi0JCQkJOTEzNDkgTUFTU1kgQ0VERVgKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtRDAtNEMgICAoaGV4KQkJRVVST1RFTCBURUxFQ09NIExURC4KLTAwRDA0QyAgICAgKGJhc2UgMTYpCQlFVVJPVEVMIFRFTEVDT00gTFRELgotCQkJCUNBTklTVEVSIEhPVVNFCi0JCQkJSkVXUlkgU1RSRUVUIFdJTkNIRVNURVIgQjAyMyA4U0EKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTREICAgKGhleCkJCURJViBPRiBSRVNFQVJDSCAmIFNUQVRJU1RJQ1MKLTAwRDA0RCAgICAgKGJhc2UgMTYpCQlESVYgT0YgUkVTRUFSQ0ggJiBTVEFUSVNUSUNTCi0JCQkJQk9HIE9GIFRIRSBGRURFUkFMIFJFU0VSVkUgU1lTCi0JCQkJTUFJTCBTVE9QIDk2IDIwVEggJgotCQkJCVdBU0hJTkdUT04gREMgMjA1NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTRFICAgKGhleCkJCUxPR0lCQUcKLTAwRDA0RSAgICAgKGJhc2UgMTYpCQlMT0dJQkFHCi0JCQkJMiwgUnVlIGRlIGxhIE1hbmRpbmnDqHJlCi0JCQkJNzIzMDAgU0FCTEUvU0FSVEhFCi0JCQkJRlJBTkNFCi0KLTAwLUQwLTRGICAgKGhleCkJCUJJVFJPTklDUywgSU5DLgotMDBEMDRGICAgICAoYmFzZSAxNikJCUJJVFJPTklDUywgSU5DLgotCQkJCVAuTy4gQk9YIDIyMjkwCi0JCQkJTEVISUdIIFZBTExFWSBQQSAxODAwMi0yMjkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC01MCAgIChoZXgpCQlJU0tSQVRFTAotMDBEMDUwICAgICAoYmFzZSAxNikJCUlTS1JBVEVMCi0JCQkJTEpVQkxKQU5TS0EgQy4gMjRBCi0JCQkJNDAwMCBLUkFOSgotCQkJCVNMT1ZFTklBCi0JCQkJU0xPVkVOSUEKLQotMDAtRDAtNTEgICAoaGV4KQkJTzIgTUlDUk8sIElOQy4KLTAwRDA1MSAgICAgKGJhc2UgMTYpCQlPMiBNSUNSTywgSU5DLgotCQkJCTI5MDEgVEFTTUFOIERSSVZFLCBTVEUuIzIwNQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC01MiAgIChoZXgpCQlBU0NFTkQgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRDA1MiAgICAgKGJhc2UgMTYpCQlBU0NFTkQgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQlPTkUgQVNDRU5EIFBMQVpBCi0JCQkJMTcwMSBIQVJCT1IgQkFZIFBBUktXQVkKLQkJCQlBTEFNRURBIENBIDk0NTAyLTMwMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTUzICAgKGhleCkJCUNPTk5FQ1RFRCBTWVNURU1TCi0wMEQwNTMgICAgIChiYXNlIDE2KQkJQ09OTkVDVEVEIFNZU1RFTVMKLQkJCQkxMjYgVy4gRklHVUVST0EgU1RSRUVUCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNTQgICAoaGV4KQkJU0FTIElOU1RJVFVURSBJTkMuCi0wMEQwNTQgICAgIChiYXNlIDE2KQkJU0FTIElOU1RJVFVURSBJTkMuCi0JCQkJU0FTIENBTVBVUyBEUklWRSwgUjQKLQkJCQlDQVJZIE5DIDI3NTExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC01NSAgIChoZXgpCQlLQVRIUkVJTi1XRVJLRSBLRwotMDBEMDU1ICAgICAoYmFzZSAxNikJCUtBVEhSRUlOLVdFUktFIEtHCi0JCQkJQU5UT04tS0FUSFJFSU4tU1RSQVNTIDEtMwotCQkJCUQtODMwMDQgUk9TRU5IRUlNCi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtNTYgICAoaGV4KQkJU09NQVQgQ09SUE9SQVRJT04KLTAwRDA1NiAgICAgKGJhc2UgMTYpCQlTT01BVCBDT1JQT1JBVElPTgotCQkJCTcwMiBLSUxMQVJORVkgU1RSRUVUCi0JCQkJVVJCQU5BIElMIDYxODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC01NyAgIChoZXgpCQlVTFRSQUssIElOQy4KLTAwRDA1NyAgICAgKGJhc2UgMTYpCQlVTFRSQUssIElOQy4KLQkJCQkxMzAxIFdBVEVSUyBSSURHRSBEUklWRQotCQkJCUxFV0lTVklMTEUgVFggNzUwNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTU4ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDA1OCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTU5ICAgKGhleCkJCUFNQklUIE1JQ1JPU1lTVEVNUyBDT1JQLgotMDBEMDU5ICAgICAoYmFzZSAxNikJCUFNQklUIE1JQ1JPU1lTVEVNUyBDT1JQLgotCQkJCTVGLTEsIDUgSFNJTi1BTiBST0FECi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTkNIVQotCQkJCVRBSVdBTiBUQUlXQU4gUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC01QSAgIChoZXgpCQlTWU1CSU9OSUNTLCBMVEQuCi0wMEQwNUEgICAgIChiYXNlIDE2KQkJU1lNQklPTklDUywgTFRELgotCQkJCVNULiBKT0hOJ1MgSU5OT1ZBVElPTiBQQVJLCi0JCQkJQ0FNQlJJREdFICBDQjQgMFdTCi0JCQkJRU5HTEFORAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUQwLTVCICAgKGhleCkJCUFDUk9MT09QIE1PVElPTiBDT05UUk9MCi0wMEQwNUIgICAgIChiYXNlIDE2KQkJQUNST0xPT1AgTU9USU9OIENPTlRST0wKLQkJCQlTWVNURU1TCi0JCQkJMzY1MCBDSEVTVE5VVCBTVC4gTi4KLQkJCQlDSEFTS0EgTU4gNTUzMTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTVDICAgKGhleCkJCVRFQ0hOT1RSRU5EIFNZU1RFTVRFQ0hOSUsgR01CSAotMDBEMDVDICAgICAoYmFzZSAxNikJCVRFQ0hOT1RSRU5EIFNZU1RFTVRFQ0hOSUsgR01CSAotCQkJCVdJTEhFTE0tV09MRkYtU1RSQVNTRSA2Ci0JCQkJR0VSLTk5MDk5IEVSRlVSVAotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLTVEICAgKGhleCkJCUlOVEVMTElXT1JYWCwgSU5DLgotMDBEMDVEICAgICAoYmFzZSAxNikJCUlOVEVMTElXT1JYWCwgSU5DLgotCQkJCTE4MTkgTUFJTiBTVFJFRVQsICBTVEUgIzExMDEKLQkJCQlTQVJBU09UQSBGTCAzNDIzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNUUgICAoaGV4KQkJU1RSQVRBQkVBTSBURUNITk9MT0dZLCBJTkMuCi0wMEQwNUUgICAgIChiYXNlIDE2KQkJU1RSQVRBQkVBTSBURUNITk9MT0dZLCBJTkMuCi0JCQkJMTk0MyBMQU5ESU5HUyBEUklWRQotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTVGICAgKGhleCkJCVZBTENPTSwgSU5DLgotMDBEMDVGICAgICAoYmFzZSAxNikJCVZBTENPTSwgSU5DLgotCQkJCTExMTEgSU5EVVNUUlkgQVZFTlVFCi0JCQkJUk9BTk9LRSBWQSAyNDAxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNjAgICAoaGV4KQkJUGFuYXNvbmljIEV1cm9wZSBMdGQuCi0wMEQwNjAgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIEV1cm9wZSBMdGQuCi0JCQkJTEFCT1JBVE9SSUVTIEdNQkgKLQkJCQlNT05aQVNUUi4gNEMgRC02MzIyNSBMQU5HRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC02MSAgIChoZXgpCQlUUkVNT04gRU5URVJQUklTRVMgQ08uLCBMVEQuCi0wMEQwNjEgICAgIChiYXNlIDE2KQkJVFJFTU9OIEVOVEVSUFJJU0VTIENPLiwgTFRELgotCQkJCTE1RiwgTk8uIDExNiwgU0VDLiAxCi0JCQkJSFNJTi1UQUkgNVRIIFJPQUQgSFNJQ0hJSCwgVEFJUEVJIENPVU5UWQotCQkJCVRBSVdBTiBUQUlXQU4gUk9DCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC02MiAgIChoZXgpCQlESUdJR1JBTQotMDBEMDYyICAgICAoYmFzZSAxNikJCURJR0lHUkFNCi0JCQkJUEFSQyBERSBQUkUgTUlMTElFVAotCQkJCTM4MzMwIE1PTlRCT05OT1QKLQkJCQlGUkFOQ0UKLQkJCQlGUkFOQ0UKLQotMDAtRDAtNjMgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMDYzICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNjQgICAoaGV4KQkJTVVMVElURUwKLTAwRDA2NCAgICAgKGJhc2UgMTYpCQlNVUxUSVRFTAotCQkJCTI5MDUgUlVFIERFIENFTExFUwotCQkJCVFVRUJFQyBDSVRZLCBRVUVCRUMgUFJPVklOQ0UKLQkJCQlDQU5BREEgQ0FOQURBIEcyQy0xVzcKLQkJCQlDQU5BREEKLQotMDAtRDAtNjUgICAoaGV4KQkJVE9LTyBFTEVDVFJJQwotMDBEMDY1ICAgICAoYmFzZSAxNikJCVRPS08gRUxFQ1RSSUMKLQkJCQk0MDA4IEtVUk9IQU1BLCBIQVNVREEtU0hJCi0JCQkJU0FJVEFNQSAzNDktMDE5MgotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtRDAtNjYgICAoaGV4KQkJV0lOVFJJU1MgRU5HSU5FRVJJTkcgQ09SUC4KLTAwRDA2NiAgICAgKGJhc2UgMTYpCQlXSU5UUklTUyBFTkdJTkVFUklORyBDT1JQLgotCQkJCTYzNDQgRkVSUklTIFNRVUFSRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNjcgICAoaGV4KQkJQ0FNUElPIENPTU1VTklDQVRJT05TCi0wMEQwNjcgICAgIChiYXNlIDE2KQkJQ0FNUElPIENPTU1VTklDQVRJT05TCi0JCQkJMjAzMyBHQVRFV0FZIFBMLCBTVUlURSAjNjAwCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTY4ICAgKGhleCkJCUlXSUxMIENPUlBPUkFUSU9OCi0wMEQwNjggICAgIChiYXNlIDE2KQkJSVdJTEwgQ09SUE9SQVRJT04KLQkJCQlOTy4xMCwgV1UtQ0hVQU4gMyBSRCwKLQkJCQlIU0lOLUNIVUFOIENJVFkgVEFJUEVJCi0JCQkJVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC02OSAgIChoZXgpCQlURUNITk9MT0dJQyBTWVNURU1TCi0wMEQwNjkgICAgIChiYXNlIDE2KQkJVEVDSE5PTE9HSUMgU1lTVEVNUwotCQkJCTE2NjEwIEUuIExBU0VSIERSSVZFLVNURS4gIzEwCi0JCQkJRk9VTlRBSU4gSElMTFMgQVogODUyNjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTZBICAgKGhleCkJCUxJTktVUCBTWVNURU1TIENPUlBPUkFUSU9OCi0wMEQwNkEgICAgIChiYXNlIDE2KQkJTElOS1VQIFNZU1RFTVMgQ09SUE9SQVRJT04KLQkJCQkxMTkwIENPTEVNQU4gQVZFLi0gU1RFICMyQwotCQkJCVNBTiBKT1NFIENBIDk1MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC02QiAgIChoZXgpCQlTUiBURUxFQ09NIElOQy4KLTAwRDA2QiAgICAgKGJhc2UgMTYpCQlTUiBURUxFQ09NIElOQy4KLQkJCQk4MTUwIFRyYW5zIENhbmFkYSBIaWdod2F5Ci0JCQkJTW9udHJlYWwKLQkJCQlRdWViZWMgIEg0UyAxTTUKLQkJCQlDQU5BREEKLQotMDAtRDAtNkMgICAoaGV4KQkJU0hBUkVXQVZFLCBJTkMuCi0wMEQwNkMgICAgIChiYXNlIDE2KQkJU0hBUkVXQVZFLCBJTkMuCi0JCQkJNTE3NSBISUxMU0RBTEUgQ0lSQ0xFCi0JCQkJRUwgRE9SQURPIEhJTExTIENBIDk1NzYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC02RCAgIChoZXgpCQlBQ1JJU09OLCBJTkMuCi0wMEQwNkQgICAgIChiYXNlIDE2KQkJQUNSSVNPTiwgSU5DLgotCQkJCTIwIEVNUElSRSBCTFZELgotCQkJCU1PT05BQ0hJRSBOSiAwNzA3NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNkUgICAoaGV4KQkJVFJFTkRWSUVXIFJFQ09SREVSUyBMVEQuCi0wMEQwNkUgICAgIChiYXNlIDE2KQkJVFJFTkRWSUVXIFJFQ09SREVSUyBMVEQuCi0JCQkJNCBBSVJGSUVMRCBXQVkKLQkJCQlDSFJJU1RDSFVSQ0ggRE9SU0VUIEJIMjMgM1RTCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC02RiAgIChoZXgpCQlLTUMgQ09OVFJPTFMKLTAwRDA2RiAgICAgKGJhc2UgMTYpCQlLTUMgQ09OVFJPTFMKLQkJCQlQLk8uIEJPWCA0OTcKLQkJCQkxOTQ3NiBORVcgUEFSSVMgSU5EVVNUUklBTCBEUi4KLQkJCQlORVcgUEFSSVMgSU4gNDY1NTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTcwICAgKGhleCkJCUxPTkcgV0VMTCBFTEVDVFJPTklDUyBDT1JQLgotMDBEMDcwICAgICAoYmFzZSAxNikJCUxPTkcgV0VMTCBFTEVDVFJPTklDUyBDT1JQLgotCQkJCTRGLCBOTy4gNTktMSwgVFNBTyBESSBXRUkKLQkJCQlTSEVOR0tFTkcgSFNJQU5HLCBUQUlQRUkgSFNJRU4KLQkJCQlUQUlXQU4gMjIyIFRBSVdBTiAyMjIgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC03MSAgIChoZXgpCQlFQ0hFTE9OIENPUlAuCi0wMEQwNzEgICAgIChiYXNlIDE2KQkJRUNIRUxPTiBDT1JQLgotCQkJCTU1MCBNZXJpZGlhbiBBdmVudWUKLQkJCQlTYW4gSm9zZSBDQSA5NTEyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNzIgICAoaGV4KQkJQlJPQURMT0dJQwotMDBEMDcyICAgICAoYmFzZSAxNikJCUJST0FETE9HSUMKLQkJCQk0NjMgUy4gTUlMUElUQVMgQkxWRC4KLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNzMgICAoaGV4KQkJQUNOIEFEVkFOQ0VEIENPTU1VTklDQVRJT05TCi0wMEQwNzMgICAgIChiYXNlIDE2KQkJQUNOIEFEVkFOQ0VEIENPTU1VTklDQVRJT05TCi0JCQkJTkVUV09SS1MgU0EKLQkJCQlSVUUgRFUgUFVJVFMtR09ERVQgQkEgQ0gtMjAwMCBORVVDSEFURUwKLQkJCQlTV0lUWkVSTEFORAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLUQwLTc0ICAgKGhleCkJCVRBUVVBIFNZU1RFTVMsIElOQy4KLTAwRDA3NCAgICAgKGJhc2UgMTYpCQlUQVFVQSBTWVNURU1TLCBJTkMuCi0JCQkJMTYwMCBGQUxNT1VUSCBSRC4gLSBTVEUKLQkJCQlDRU5URVJWSUxMRSBNQSAwMjYzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNzUgICAoaGV4KQkJQUxBUklTIE1FRElDQUwgU1lTVEVNUywgSU5DLgotMDBEMDc1ICAgICAoYmFzZSAxNikJCUFMQVJJUyBNRURJQ0FMIFNZU1RFTVMsIElOQy4KLQkJCQlQLk8uIEJPWCA4NTMzNQotCQkJCTEwMjIxIFdBVEVSSURHRSBDSVJDTEUKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEtMjczMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtNzYgICAoaGV4KQkJIEJhbmsgb2YgQW1lcmljYQotMDBEMDc2ICAgICAoYmFzZSAxNikJCSBCYW5rIG9mIEFtZXJpY2EKLQkJCQkxMTAwIE1lcnJpbGwgRHJpdmUKLQkJCQlQZW5uaW5ndG9uIE5KIDA4NTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC03NyAgIChoZXgpCQlMVUNFTlQgVEVDSE5PTE9HSUVTCi0wMEQwNzcgICAgIChiYXNlIDE2KQkJTFVDRU5UIFRFQ0hOT0xPR0lFUwotCQkJCUNMSUVOVCBBQ0NFU1MgQlVTSU5FU1MgVU5JVAotCQkJCTEwMSBDUkFXRk9SRFMgQ09STkVSIFJPQUQgUk9PTSAjMUUtNDM3QUwKLQkJCQlIT0xNREVMIE5KIDA3NzMzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC03OCAgIChoZXgpCQlFbHRleCBvZiBTd2VkZW4gQUIKLTAwRDA3OCAgICAgKGJhc2UgMTYpCQlFbHRleCBvZiBTd2VkZW4gQUIKLQkJCQlCb3ggMjQKLQkJCQkyODMgMjEgT1NCWSAgCi0JCQkJU1dFREVOCi0KLTAwLUQwLTc5ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDA3OSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTdBICAgKGhleCkJCUFNQVFVRVNUIENPTVBVVEVSIENPUlAuCi0wMEQwN0EgICAgIChiYXNlIDE2KQkJQU1BUVVFU1QgQ09NUFVURVIgQ09SUC4KLQkJCQk4L0YsIDc5IEhTSU4tVEFJCi0JCQkJNVRIIFJPQUQsIFNFQy4gMSBIUzEtQ0hJSCwgVEFJUEVJCi0JCQkJVEFJV0FOIFIuTy5DLgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtN0IgICAoaGV4KQkJQ09NQ0FNIElOVEVSTkFUSU9OQUwgSU5DCi0wMEQwN0IgICAgIChiYXNlIDE2KQkJQ09NQ0FNIElOVEVSTkFUSU9OQUwgSU5DCi0JCQkJMTE0MCBNY0Rlcm1vdHQgRHJpdmUgU3VpdGUgMjAwCi0JCQkJV0VTVCBDSEVTVEVSIFBBIDE5MzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC03QyAgIChoZXgpCQlLT1lPIEVMRUNUUk9OSUNTIElOQy4gQ08uLExURC4KLTAwRDA3QyAgICAgKGJhc2UgMTYpCQlLT1lPIEVMRUNUUk9OSUNTIElOQy4gQ08uLExURC4KLQkJCQkxLTE3MSBURU5KSU4tQ0hPIEtPREFJUkEKLQkJCQlUT0tZTyAgMTg3LTAwMDQKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUQwLTdEICAgKGhleCkJCUNPU0lORSBDT01NVU5JQ0FUSU9OUwotMDBEMDdEICAgICAoYmFzZSAxNikJCUNPU0lORSBDT01NVU5JQ0FUSU9OUwotCQkJCTEyMDAgQlJJREdFIFBBUktXQVkKLQkJCQlSRURXT09EIENJVFkgQ0EgOTQwNjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTdFICAgKGhleCkJCUtFWUNPUlAgTFRELgotMDBEMDdFICAgICAoYmFzZSAxNikJCUtFWUNPUlAgTFRELgotCQkJCVAuTy4gQk9YIDE5OQotCQkJCUNIQVRTV09PRCBOU1cgMjA1NwotCQkJCUFVU1RSQUxJQQotCQkJCUFVU1RSQUxJQQotCi0wMC1EMC03RiAgIChoZXgpCQlTVFJBVEVHWSAmIFRFQ0hOT0xPR1ksIExJTUlURUQKLTAwRDA3RiAgICAgKGJhc2UgMTYpCQlTVFJBVEVHWSAmIFRFQ0hOT0xPR1ksIExJTUlURUQKLQkJCQlTdWl0ZSA0LjIsIENsaWZ0b24gSGVpZ2h0cwotCQkJCVRyaWFuZ2xlIFdlc3QKLQkJCQlCcmlzdG9sIEJTOCAxRUoKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC04MCAgIChoZXgpCQlFWEFCWVRFIENPUlBPUkFUSU9OCi0wMEQwODAgICAgIChiYXNlIDE2KQkJRVhBQllURSBDT1JQT1JBVElPTgotCQkJCTE2ODUgMzhUSCBTVFJFRVQKLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04MSAgIChoZXgpCQlSVEQgRW1iZWRkZWQgVGVjaG5vbG9naWVzLCBJbmMuCi0wMEQwODEgICAgIChiYXNlIDE2KQkJUlREIEVtYmVkZGVkIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTEwMyBJbm5vdmF0aW9uIEJsdmQuCi0JCQkJU3RhdGUgQ29sbGVnZSBQQSAxNjgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtODIgICAoaGV4KQkJSU9XQVZFIElOQy4KLTAwRDA4MiAgICAgKGJhc2UgMTYpCQlJT1dBVkUgSU5DLgotCQkJCTEwMTAgV0lTQ09OU0lOIEFWRU5VRQotCQkJCVdBU0hJTkdUT04gREMgMjAwMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTgzICAgKGhleCkJCUlOVkVSVEVYLCBJTkMuCi0wMEQwODMgICAgIChiYXNlIDE2KQkJSU5WRVJURVgsIElOQy4KLQkJCQkxMDEyIE1PUlNFIEFWRU5VRS0gU1RFLiM5Ci0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04NCAgIChoZXgpCQlORVhDT01NIFNZU1RFTVMsIElOQy4KLTAwRDA4NCAgICAgKGJhc2UgMTYpCQlORVhDT01NIFNZU1RFTVMsIElOQy4KLQkJCQlTVUlUICNOQUwtOTAzLAotCQkJCVNVTkdOQU0gVEVDSE5PLVBBUksgMTQ4IFlBVEFQLURPTkcsIEJVTkQKLQkJCQlTVU5HTkFNLUNJVFkgU1VOR05BTS1DSVRZIEtZVU5HR0ktRE8sSwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC04NSAgIChoZXgpCQlPVElTIEVMRVZBVE9SIENPTVBBTlkKLTAwRDA4NSAgICAgKGJhc2UgMTYpCQlPVElTIEVMRVZBVE9SIENPTVBBTlkKLQkJCQk1IEZBUk0gU1BSSU5HUyBSRC4KLQkJCQlGQVJNSU5HVE9OIENUIDA2MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04NiAgIChoZXgpCQlGT1ZFT04sIElOQy4KLTAwRDA4NiAgICAgKGJhc2UgMTYpCQlGT1ZFT04sIElOQy4KLQkJCQkyODIwIFNhbiBUb21hcyBFeHByZXNzd2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTg3ICAgKGhleCkJCU1JQ1JPRklSU1QgSU5DLgotMDBEMDg3ICAgICAoYmFzZSAxNikJCU1JQ1JPRklSU1QgSU5DLgotCQkJCTExIEVBU1QgT0FLIFNUUkVFVAotCQkJCU9BS0xBTkQgTkogMDc0MzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTg4ICAgKGhleCkJCU1vdG9yb2xhLCBJbmMuCi0wMEQwODggICAgIChiYXNlIDE2KQkJTW90b3JvbGEsIEluYy4KLQkJCQkyNDUwIFdhbHNoIEF2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04OSAgIChoZXgpCQlEWU5BQ09MT1IsIElOQy4KLTAwRDA4OSAgICAgKGJhc2UgMTYpCQlEWU5BQ09MT1IsIElOQy4KLQkJCQlOby4xMTYsIFpob3V6aSBTdC4sIE5laWh1IERpc3QuCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtOEEgICAoaGV4KQkJUEhPVFJPTiBVU0EKLTAwRDA4QSAgICAgKGJhc2UgMTYpCQlQSE9UUk9OIFVTQQotCQkJCTExMDEgUy4gV0lOQ0hFU1RFUiBCTFZELgotCQkJCVNVSVRFICNELTE0NAotCQkJCVNBTiBKT1NFIENBIDk1MTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04QiAgIChoZXgpCQlBRFZBIE9wdGljYWwgTmV0d29ya2luZyBMdGQKLTAwRDA4QiAgICAgKGJhc2UgMTYpCQlBRFZBIE9wdGljYWwgTmV0d29ya2luZyBMdGQKLQkJCQlDTElGVE9OIFRFQ0hOT0xPR1kgQ0VOVFJFCi0JCQkJQ0xJRlRPTiBNT09SCi0JCQkJWU9SSyBOT1JUSCBZT1JLU0hJUkUgWU8zMCA0R1UKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC04QyAgIChoZXgpCQlHRU5PQSBURUNITk9MT0dZLCBJTkMuCi0wMEQwOEMgICAgIChiYXNlIDE2KQkJR0VOT0EgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTU0MDEgVEVDSCBDSVJDTEUKLQkJCQlNT09SUEFSSyBDQSA5MzAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOEQgICAoaGV4KQkJUEhPRU5JWCBHUk9VUCwgSU5DLgotMDBEMDhEICAgICAoYmFzZSAxNikJCVBIT0VOSVggR1JPVVAsIElOQy4KLQkJCQkxMjMgTUFSQ1VTIEJMVkQuCi0JCQkJSEFVUFBBVUdFIE5ZIDExNzg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC04RSAgIChoZXgpCQlOVklTSU9OIElOQy4KLTAwRDA4RSAgICAgKGJhc2UgMTYpCQlOVklTSU9OIElOQy4KLQkJCQkxMjUgQ1JPV04gUE9JTlQgQ09VUlQKLQkJCQlHUkFTUyBWQUxMRVkgQ0EgOTU5NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLThGICAgKGhleCkJCUFSREVOVCBURUNITk9MT0dJRVMsIElOQy4KLTAwRDA4RiAgICAgKGJhc2UgMTYpCQlBUkRFTlQgVEVDSE5PTE9HSUVTLCBJTkMuCi0JCQkJMjUwIE4uIFdPTEZFIFJPQUQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTkwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDA5MCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTkxICAgKGhleCkJCVNNQVJUU0FOIFNZU1RFTVMsIElOQy4KLTAwRDA5MSAgICAgKGJhc2UgMTYpCQlTTUFSVFNBTiBTWVNURU1TLCBJTkMuCi0JCQkJNDY1NSBPTEQgSVJPTlNJREVTIERSLiAjNDgwCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTkyICAgKGhleCkJCUdMRU5BWVJFIFdFU1RFUk4gTVVMVElQTEVYCi0wMEQwOTIgICAgIChiYXNlIDE2KQkJR0xFTkFZUkUgV0VTVEVSTiBNVUxUSVBMRVgKLQkJCQkxMTk2IEJPUlJFR0FTIEFWRU5VRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOTMgICAoaGV4KQkJVFEgLSBDT01QT05FTlRTIEdNQkgKLTAwRDA5MyAgICAgKGJhc2UgMTYpCQlUUSAtIENPTVBPTkVOVFMgR01CSAotCQkJCUdVVCBERUxMSU5HIC0gTVVITFNUUiAyCi0JCQkJRC04MjIyOSBTRUVGRUxECi0JCQkJR0VSTUFOWQotCQkJCUdFUk1BTlkKLQotMDAtRDAtOTQgICAoaGV4KQkJVElNRUxJTkUgVklTVEEsIElOQy4KLTAwRDA5NCAgICAgKGJhc2UgMTYpCQlUSU1FTElORSBWSVNUQSwgSU5DLgotCQkJCTE3NTUtQiBMQSBDT1NUQSBNRUFET1dTIERSSVZFCi0JCQkJU0FOIE1BUkNPUyBDQSA5MjA2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOTUgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQsIEVudGVycHJpc2UgQnVzaW5lc3MgR3JvdXAKLTAwRDA5NSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudCwgRW50ZXJwcmlzZSBCdXNpbmVzcyBHcm91cAotCQkJCTI2ODAxIFdlc3QgQWdvdXJhIFJvYWQKLQkJCQlDQUxBQkFTQVMgQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTk2ICAgKGhleCkJCTNDT00gRVVST1BFIExURC4KLTAwRDA5NiAgICAgKGJhc2UgMTYpCQkzQ09NIEVVUk9QRSBMVEQuCi0JCQkJQk9VTkRBUlkgV0FZCi0JCQkJSEVNRUwgSEVNUFNURUFEIEhFUlRTLiBIUDIgN1lVCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC05NyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEQwOTcgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCU0vUyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC05OCAgIChoZXgpCQlQaG90b24gRHluYW1pY3MgQ2FuYWRhIEluYy4KLTAwRDA5OCAgICAgKGJhc2UgMTYpCQlQaG90b24gRHluYW1pY3MgQ2FuYWRhIEluYy4KLQkJCQkyMjEgV2hpdGVoYWxsIERyaXZlCi0JCQkJTWFya2hhbSwgT250YXJpbwotCQkJCUwzUiA5VDEKLQkJCQlDQU5BREEKLQotMDAtRDAtOTkgICAoaGV4KQkJRUxDQVJEIE9ZCi0wMEQwOTkgICAgIChiYXNlIDE2KQkJRUxDQVJEIE9ZCi0JCQkJUC5PLiBCT1ggMTIwL0JFQ0tFUklOVElDIDM4Ci0JCQkJNTEyMDEgS0FOR0FTTklFTUkKLQkJCQlGSU5MQU5ECi0JCQkJRklOTEFORAotCi0wMC1EMC05QSAgIChoZXgpCQlGSUxBTkVUIENPUlBPUkFUSU9OCi0wMEQwOUEgICAgIChiYXNlIDE2KQkJRklMQU5FVCBDT1JQT1JBVElPTgotCQkJCTkzMSBCZW5lY2lhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtOUIgICAoaGV4KQkJU1BFQ1RFTCBMVEQuCi0wMEQwOUIgICAgIChiYXNlIDE2KQkJU1BFQ1RFTCBMVEQuCi0JCQkJMjEgU1RJTExPUkdBTiBJTkRVU1RSSUFMIFBBUksKLQkJCQlTVElMTE9SR0FOLCBDTy4gRFVCTElOCi0JCQkJSVJFTEFORAotCQkJCUlSRUxBTkQKLQotMDAtRDAtOUMgICAoaGV4KQkJS0FQQURJQSBDT01NVU5JQ0FUSU9OUwotMDBEMDlDICAgICAoYmFzZSAxNikJCUtBUEFESUEgQ09NTVVOSUNBVElPTlMKLQkJCQkzOTI1IFdFU1QgQlJPS0VSIExBTkUKLQkJCQlBVVNUSU4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLTlEICAgKGhleCkJCVZFUklTIElORFVTVFJJRVMKLTAwRDA5RCAgICAgKGJhc2UgMTYpCQlWRVJJUyBJTkRVU1RSSUVTCi0JCQkJMTA4MzEgU1cgQ0FTQ0FERQotCQkJCVBPUlRMQU5EIE9SIDk3MjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC05RSAgIChoZXgpCQkyV0lSRSwgSU5DLgotMDBEMDlFICAgICAoYmFzZSAxNikJCTJXSVJFLCBJTkMuCi0JCQkJNjk0IFRBU01BTiBEUklWRQotCQkJCU1JTFBJVEFTIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC05RiAgIChoZXgpCQlOT1ZURUsgVEVTVCBTWVNURU1TCi0wMEQwOUYgICAgIChiYXNlIDE2KQkJTk9WVEVLIFRFU1QgU1lTVEVNUwotCQkJCTIxNzAgUEFSQUdPTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BMCAgIChoZXgpCQlNSVBTIERFTk1BUksKLTAwRDBBMCAgICAgKGJhc2UgMTYpCQlNSVBTIERFTk1BUksKLQkJCQlMQVVUUlVQVkFORyAyQgotCQkJCTI3NTAgQkFMTEVSVVAKLQkJCQlESyAtIERFTk1BUksKLQkJCQlERU5NQVJLCi0KLTAwLUQwLUExICAgKGhleCkJCU9TS0FSIFZJRVJMSU5HIEdNQkggKyBDTy4gS0cKLTAwRDBBMSAgICAgKGJhc2UgMTYpCQlPU0tBUiBWSUVSTElORyBHTUJIICsgQ08uIEtHCi0JCQkJUFJFVFpGRUxERVIgU1RSLiAyMQotCQkJCTkxMzIwIEVCRVJNQU5OU1RBRFQKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC1BMiAgIChoZXgpCQlJTlRFR1JBVEVEIERFVklDRQotMDBEMEEyICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgREVWSUNFCi0JCQkJVEVDSE5PTE9HWSwgSU5DLgotCQkJCTI5NzUgU1RFTkRFUiBXQVkgIE0vUyAwLTMxOAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BMyAgIChoZXgpCQlWT0NBTCBEQVRBLCBJTkMuCi0wMEQwQTMgICAgIChiYXNlIDE2KQkJVk9DQUwgREFUQSwgSU5DLgotCQkJCTE3MDEgTiBHUkVFTlZJTExFICMzMDQKLQkJCQlSSUNIQVJEU09OIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BNCAgIChoZXgpCQlBTEFOVFJPIENPTU1VTklDQVRJT05TCi0wMEQwQTQgICAgIChiYXNlIDE2KQkJQUxBTlRSTyBDT01NVU5JQ0FUSU9OUwotCQkJCTE0MSBTVE9OWSBDSVJDTEUsICBTVEUuICMyMTAKLQkJCQlTQU5UQVJPU0EgQ0EgOTU0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUE1ICAgKGhleCkJCUFNRVJJQ0FOIEFSSVVNCi0wMEQwQTUgICAgIChiYXNlIDE2KQkJQU1FUklDQU4gQVJJVU0KLQkJCQkxNDI4MSBDSEFNQkVSUyBST0FECi0JCQkJVFVTVElOIENBIDkyNzgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BNiAgIChoZXgpCQlMQU5CSVJEIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMEQwQTYgICAgIChiYXNlIDE2KQkJTEFOQklSRCBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCVJPT00gQS0yMTEsIFMuQi5JLgotCQkJCTY0Ny0yNiwgREVVTkdDSE9OLURPTkcsIEtBTkdTRU8tR1UsICBTRU8KLQkJCQlLT1JFQSAxNTctMDMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLUE3ICAgKGhleCkJCVRPS1lPIFNPS0tJIEtFTktZVUpPIENPLiwgTFRELgotMDBEMEE3ICAgICAoYmFzZSAxNikJCVRPS1lPIFNPS0tJIEtFTktZVUpPIENPLiwgTFRELgotCQkJCTgtMiwgTUlOQU1JLU9ISSA2LUNIT01FCi0JCQkJU0hJTkFHQVdBLUtVIFRPS1lPCi0JCQkJSkFQQU4gMTQwLTg1NjAKLQkJCQlKQVBBTgotCi0wMC1EMC1BOCAgIChoZXgpCQlORVRXT1JLIEVOR0lORVMsIElOQy4KLTAwRDBBOCAgICAgKGJhc2UgMTYpCQlORVRXT1JLIEVOR0lORVMsIElOQy4KLQkJCQk2MSBQTEVBU0FOVCBTVFJFRVQKLQkJCQlSQU5ET0xQSCBNQSAwMjM2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQTkgICAoaGV4KQkJU0hJTkFOTyBLRU5TSEkgQ08uLCBMVEQuCi0wMEQwQTkgICAgIChiYXNlIDE2KQkJU0hJTkFOTyBLRU5TSEkgQ08uLCBMVEQuCi0JCQkJRUxFQ1RST05JQyBFUVVJUE1FTlQgRElWSVNJT04KLQkJCQk2LTE1LTI2LCBDSFVPLCBVRURBLVNISSBOQUdBTk8tS0VOLCAzODYtCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC1BQSAgIChoZXgpCQlDSEFTRSBDT01NVU5JQ0FUSU9OUwotMDBEMEFBICAgICAoYmFzZSAxNikJCUNIQVNFIENPTU1VTklDQVRJT05TCi0JCQkJU1QuIExFT05BUkRTIFJPQUQKLQkJCQlFQVNUIFNIRUVOIExPTkRPTiBTVzE2IDdMWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRDAtQUIgICAoaGV4KQkJREVMVEFLQUJFTCBURUxFQ09NIENWCi0wMEQwQUIgICAgIChiYXNlIDE2KQkJREVMVEFLQUJFTCBURUxFQ09NIENWCi0JCQkJSEFOWkVXRUcgMTQKLQkJCQkyODAzIE1DIEdPVURBCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtRDAtQUMgICAoaGV4KQkJR1JBWVNPTiBXSVJFTEVTUwotMDBEMEFDICAgICAoYmFzZSAxNikJCUdSQVlTT04gV0lSRUxFU1MKLQkJCQkxNDAgVklTVEEgQ0VOVFJFIERSSVZFCi0JCQkJRk9SRVNUIFZBIDI0NTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BRCAgIChoZXgpCQlUTCBJTkRVU1RSSUVTCi0wMEQwQUQgICAgIChiYXNlIDE2KQkJVEwgSU5EVVNUUklFUwotCQkJCTI1NDEgVFJBQ1kgUk9BRAotCQkJCU5PUlRIV09PRCBPSCA0MzYxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQUUgICAoaGV4KQkJT1JFU0lTIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEQwQUUgICAgIChiYXNlIDE2KQkJT1JFU0lTIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTQ2NzAgTlcgR1JFRU5CUklFUiBQS1dZCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1BRiAgIChoZXgpCQlDVVRMRVItSEFNTUVSLCBJTkMuCi0wMEQwQUYgICAgIChiYXNlIDE2KQkJQ1VUTEVSLUhBTU1FUiwgSU5DLgotCQkJCVBNUCBDRU5URVIKLQkJCQkyNDAgVklTVEEgUEFSSyBEUklWRQotCQkJCVBJVFRTQlVSR0ggUEEgMTUyMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUIwICAgKGhleCkJCUJJVFNXSVRDSCBMVEQuCi0wMEQwQjAgICAgIChiYXNlIDE2KQkJQklUU1dJVENIIExURC4KLQkJCQkzIE1FQURPVyBDT1VSVCwgQU1PUyBST0FECi0JCQkJTUVBRE9XSEFMTCwgU0hFRkZJRUxEIFM5IDFCWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRDAtQjEgICAoaGV4KQkJT01FR0EgRUxFQ1RST05JQ1MgU0EKLTAwRDBCMSAgICAgKGJhc2UgMTYpCQlPTUVHQSBFTEVDVFJPTklDUyBTQQotCQkJCVJPVVRFIERFIFNPTEVVUkUgNjgKLQkJCQlDSC0yNTAwIEJJRU5ORSA0Ci0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wMC1EMC1CMiAgIChoZXgpCQlYSU9URUNIIENPUlBPUkFUSU9OCi0wMEQwQjIgICAgIChiYXNlIDE2KQkJWElPVEVDSCBDT1JQT1JBVElPTgotCQkJCTY0NTUgRkxZSU5HIENMT1VEIERSSVZFCi0JCQkJRURFTiBQUkFJUklFIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1CMyAgIChoZXgpCQlEUlMgRkxJR0hUIFNBRkVUWSBBTkQKLTAwRDBCMyAgICAgKGJhc2UgMTYpCQlEUlMgRkxJR0hUIFNBRkVUWSBBTkQKLQkJCQlDT01NVU5JQ0FUSU9OUwotCQkJCTQwIENPTkNPVVJTRSBHQVRFIE5FUEVBTgotCQkJCUNBTkFEQSBLMkUgOEE2Ci0JCQkJQ0FOQURBCi0KLTAwLUQwLUI0ICAgKGhleCkJCUtBVFNVSklNQSBDTy4sIExURC4KLTAwRDBCNCAgICAgKGJhc2UgMTYpCQlLQVRTVUpJTUEgQ08uLCBMVEQuCi0JCQkJMS02LTEtLCBTSElSQVRPUkkKLQkJCQlLQVRTVVNISUtBLUtVIFRPS1lPIDEyNS0wMDYzCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC1CNSAgIChoZXgpCQlJUHJpY290IGZvcm1lcmx5IERvdENvbQotMDBEMEI1ICAgICAoYmFzZSAxNikJCUlQcmljb3QgZm9ybWVybHkgRG90Q29tCi0JCQkJMTAtMTIsIGF2ZW51ZSBkZSBWZXJkdW4KLQkJCQlMYS1HYXJlbm5lLUNvbG9tYmVzICBGLTkyMjUwCi0JCQkJRlJBTkNFCi0KLTAwLUQwLUI2ICAgKGhleCkJCUNSRVNDRU5UIE5FVFdPUktTLCBJTkMuCi0wMEQwQjYgICAgIChiYXNlIDE2KQkJQ1JFU0NFTlQgTkVUV09SS1MsIElOQy4KLQkJCQkyMDEgUklWRVJORUNLIFJPQUQKLQkJCQlDSEVMTVNGT1JEIE1BIDAxODQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1CNyAgIChoZXgpCQlJTlRFTCBDT1JQT1JBVElPTgotMDBEMEI3ICAgICAoYmFzZSAxNikJCUlOVEVMIENPUlBPUkFUSU9OCi0JCQkJNTIwMCBORSBFTEFNIFlPVU5HIFBBUktXQVkKLQkJCQlIRjEtMDgKLQkJCQlISUxMU0JPUk8gT1IgOTcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUI4ICAgKGhleCkJCUlvbWVnYSBDb3Jwb3JhdGlvbgotMDBEMEI4ICAgICAoYmFzZSAxNikJCUlvbWVnYSBDb3Jwb3JhdGlvbgotCQkJCQotCQkJCUNBTkFEQQotCi0wMC1EMC1COSAgIChoZXgpCQlNSUNST1RFSyBJTlRFUk5BVElPTkFMLCBJTkMuCi0wMEQwQjkgICAgIChiYXNlIDE2KQkJTUlDUk9URUsgSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCU5PLiA2IElORFVTVFJZIEVBU1QgUk9BRCAzCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTkNIVQotCQkJCVRBSVdBTiAzMDA3NyBUQUlXQU4gMzAwNzcgUi5PLkMuCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC1CQSAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEQwQkEgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRS0gU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQkIgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMEJCICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUgIFNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUJDICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDBCQyAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFLVNKQS0yCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUJEICAgKGhleCkJCVNpbGljb24gSW1hZ2UgR21iSAotMDBEMEJEICAgICAoYmFzZSAxNikJCVNpbGljb24gSW1hZ2UgR21iSAotCQkJCUdhcmJzZW5lciBMYW5kc3RyLiAxMAotCQkJCUQtMzA0MTkgSGFubm92ZXIKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLUJFICAgKGhleCkJCUVNVVRFQyBJTkMuCi0wMEQwQkUgICAgIChiYXNlIDE2KQkJRU1VVEVDIElOQy4KLQkJCQlQLk8uIEJPWCAzMDM1Ci0JCQkJRVZFUkVUVCBXQSA5ODIwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQkYgICAoaGV4KQkJUElWT1RBTCBURUNITk9MT0dJRVMKLTAwRDBCRiAgICAgKGJhc2UgMTYpCQlQSVZPVEFMIFRFQ0hOT0xPR0lFUwotCQkJCTcwIFMuIExBS0UgQVZFTlVFIC0gU1RFLiAjOTAwCi0JCQkJUEFTQURFTkEgQ0EgOTExMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUMwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDBDMCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSLiAgU0pBLTIKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtQzEgICAoaGV4KQkJSEFSTU9OSUMgREFUQSBTWVNURU1TLCBMVEQuCi0wMEQwQzEgICAgIChiYXNlIDE2KQkJSEFSTU9OSUMgREFUQSBTWVNURU1TLCBMVEQuCi0JCQkJMTAgQkVJVCBTSEFNQUkgU1RSRUVUCi0JCQkJVEVMLUFWSVYKLQkJCQlJU1JBRUwgNjcwMTgKLQkJCQlJU1JBRUwKLQotMDAtRDAtQzIgICAoaGV4KQkJQkFMVEhBWkFSIFRFQ0hOT0xPR1kgQUIKLTAwRDBDMiAgICAgKGJhc2UgMTYpCQlCQUxUSEFaQVIgVEVDSE5PTE9HWSBBQgotCQkJCUFOS0RBTU1TR0FUQU4gMjQKLQkJCQlTLTE3MTQzIFNPTE5BCi0JCQkJU1dFREVOCi0JCQkJU1dFREVOCi0KLTAwLUQwLUMzICAgKGhleCkJCVZJVklEIFRFQ0hOT0xPR1kgUFRFLCBMVEQuCi0wMEQwQzMgICAgIChiYXNlIDE2KQkJVklWSUQgVEVDSE5PTE9HWSBQVEUsIExURC4KLQkJCQkxMDAzIEJVS0lUIE1FUkFIIENFTlRSQUwKLQkJCQkjMDMtMDksIFMxNTk4MzYKLQkJCQlTSU5HQVBPUkUKLQkJCQlTSU5HQVBPUkUKLQotMDAtRDAtQzQgICAoaGV4KQkJVEVSQVRFQ0ggQ09SUE9SQVRJT04KLTAwRDBDNCAgICAgKGJhc2UgMTYpCQlURVJBVEVDSCBDT1JQT1JBVElPTgotCQkJCTIyMyBNSURETEVTRVggVFJQSy4KLQkJCQlCVVJMSU5HVE9OIE1BIDAxODAzLTMzMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUM1ICAgKGhleCkJCUNPTVBVVEFUSU9OQUwgU1lTVEVNUywgSU5DLgotMDBEMEM1ICAgICAoYmFzZSAxNikJCUNPTVBVVEFUSU9OQUwgU1lTVEVNUywgSU5DLgotCQkJCTgzNSBJTk5PVkFUSU9OIERSSVZFCi0JCQkJS05PWFZJTExFIFROIDM3OTMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1DNiAgIChoZXgpCQlUSE9NQVMgJiBCRVRUUyBDT1JQLgotMDBEMEM2ICAgICAoYmFzZSAxNikJCVRIT01BUyAmIEJFVFRTIENPUlAuCi0JCQkJVGhvbWFzICYgQmV0dHMgQXVzdC4gUHR5LiBMdGQuCi0JCQkJMjNhIE55cmFuZyBTdHJlZXQKLQkJCQlMaWRjb21iZSBOZXcgU291dGggV2FsZXMgOTI2MTgKLQkJCQlBVVNUUkFMSUEKLQotMDAtRDAtQzcgICAoaGV4KQkJUEFUSFdBWSwgSU5DLgotMDBEMEM3ICAgICAoYmFzZSAxNikJCVBBVEhXQVksIElOQy4KLQkJCQk3NzcgQkVUQSBEUklWRQotCQkJCU1BWUZJRUxEIFZJTExBR0UgT0ggNDQxNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUM4ICAgKGhleCkJCVByZXZhcyBBL1MKLTAwRDBDOCAgICAgKGJhc2UgMTYpCQlQcmV2YXMgQS9TCi0JCQkJRnJlZGVyaWtza2FqIDYKLQkJCQlESy0yNDUwIEvDuGJlbmhhdm4gU1YgCi0JCQkJREVOTUFSSwotCi0wMC1EMC1DOSAgIChoZXgpCQlBRFZBTlRFQ0ggQ08uLCBMVEQuCi0wMEQwQzkgICAgIChiYXNlIDE2KQkJQURWQU5URUNIIENPLiwgTFRELgotCQkJCUZMLiA0LCBOTy4gIDEwOC0zCi0JCQkJTUlORy1DSFVBTiBST0FEIFNISU5HLVRJRU4gQ0lUWQotCQkJCVRBSVBFSSBUQUlQRUkgVEFJV0FOCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1EMC1DQSAgIChoZXgpCQlJbnRyaW5zeWMgU29mdHdhcmUgSW50ZXJuYXRpb25hbCBJbmMuCi0wMEQwQ0EgICAgIChiYXNlIDE2KQkJSW50cmluc3ljIFNvZnR3YXJlIEludGVybmF0aW9uYWwgSW5jLgotCQkJCTcwMCBXZXN0IFBlbmRlciBTdHJlZXQKLQkJCQkxMHRoIGZsb29yCi0JCQkJVmFuY291dmVyIEIuQy4gVjZDIDFHOAotCQkJCUNBTkFEQQotCi0wMC1EMC1DQiAgIChoZXgpCQlEQVNBTiBDTy4sIExURC4KLTAwRDBDQiAgICAgKGJhc2UgMTYpCQlEQVNBTiBDTy4sIExURC4KLQkJCQk2RiwgS09TTU8gVE9XRVIKLQkJCQkxMDAyLCBEQUVDSEktRE9ORywgS0FOR05BTS1LVSBTRU9VTAotCQkJCUtPUkVBIChaSVAgMTM1LTI4MCkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtRDAtQ0MgICAoaGV4KQkJVEVDSE5PTE9HSUVTIExZUkUgSU5DLgotMDBEMENDICAgICAoYmFzZSAxNikJCVRFQ0hOT0xPR0lFUyBMWVJFIElOQy4KLQkJCQkxMjAwIFNULUpFQU4tQkFQVElTVEUsCi0JCQkJU1VJVEUgIzEyMCBRVUVCRUMsIFFVRUJFQwotCQkJCUNBTkFEQSBHMkUgNUU4Ci0JCQkJQ0FOQURBCi0KLTAwLUQwLUNEICAgKGhleCkJCUFUQU4gVEVDSE5PTE9HWSBJTkMuCi0wMEQwQ0QgICAgIChiYXNlIDE2KQkJQVRBTiBURUNITk9MT0dZIElOQy4KLQkJCQkjNSwgQUxMRVkgMTgsIExBTkUgODEsCi0JCQkJQ0hJRU4gS0FORywgMk5EIFJPQUQgSElOQ0hVCi0JCQkJVEFJV0FOIFRBSVdBTiBSLk8uQy4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLUNFICAgKGhleCkJCUFTWVNUIEVMRUNUUk9OSUMKLTAwRDBDRSAgICAgKGJhc2UgMTYpCQlBU1lTVCBFTEVDVFJPTklDCi0JCQkJQlJPRElTQ0UgNywgMTBDIFRSWklOCi0JCQkJMTIzNiBUUlpJTgotCQkJCVNMT1ZFTklBCi0JCQkJU0xPVkVOSUEKLQotMDAtRDAtQ0YgICAoaGV4KQkJTU9SRVRPTiBCQVkKLTAwRDBDRiAgICAgKGJhc2UgMTYpCQlNT1JFVE9OIEJBWQotCQkJCTEyLzk3IEpJSkFXUyBTVFJFRVQKLQkJCQlTVU1ORVIgUEFSSy4gNDA3NCBRTEQuCi0JCQkJQVVTVFJBTElBCi0JCQkJQVVTVFJBTElBCi0KLTAwLUQwLUQwICAgKGhleCkJCVpIT05HWElORyBURUxFQ09NIExURC4KLTAwRDBEMCAgICAgKGJhc2UgMTYpCQlaSE9OR1hJTkcgVEVMRUNPTSBMVEQuCi0JCQkJOC05RiBCVUlMRElORyA1NCwzMDEjCi0JCQkJWkhPTkcgU0hBTiBET05HTFUsIE5BTkpJTkcgUFJDLCBQQz0yMTAwMAotCQkJCUNISU5BCi0JCQkJQ0hJTkEKLQotMDAtRDAtRDEgICAoaGV4KQkJU3ljYW1vcmUgTmV0d29ya3MKLTAwRDBEMSAgICAgKGJhc2UgMTYpCQlTeWNhbW9yZSBOZXR3b3JrcwotCQkJCTIyMCBNaWxsIFJkCi0JCQkJQ2hlbG1zZm9yZCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRDIgICAoaGV4KQkJRVBJTE9HIENPUlBPUkFUSU9OCi0wMEQwRDIgICAgIChiYXNlIDE2KQkJRVBJTE9HIENPUlBPUkFUSU9OCi0JCQkJNTAwIENPUlBPUkFURSBDSVJDTEUgLSBTVEUuCi0JCQkJR09MREVOIENPIDgwNDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1EMyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEQwRDMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXRVNUIFRBU01BTiBEUklWRQotCQkJCU0vUyBTSkEtMgotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1ENCAgIChoZXgpCQlWLUJJVFMsIElOQy4KLTAwRDBENCAgICAgKGJhc2UgMTYpCQlWLUJJVFMsIElOQy4KLQkJCQkyMTUwIFRSQURFIFpPTkUgQkxWRC4KLQkJCQlTVUlURSAjMTA1Ci0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUQ1ICAgKGhleCkJCUdSVU5ESUcgQUcKLTAwRDBENSAgICAgKGJhc2UgMTYpCQlHUlVORElHIEFHCi0JCQkJS1VSR0FSVEVOU0dUUkVFVCAzNwotCQkJCUQtOTA3NjIgRlVFUlRIL0JBWUVSTgotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLUQ2ICAgKGhleCkJCUFFVEhSQSBURUxFQ09NVU5JQ0FaSU9OSQotMDBEMEQ2ICAgICAoYmFzZSAxNikJCUFFVEhSQSBURUxFQ09NVU5JQ0FaSU9OSQotCQkJCVZJQSBNQVRURU8gUklDQ0ksIDEwCi0JCQkJNjAwMjAgQU5DT05BCi0JCQkJSVRBTFkKLQkJCQlJVEFMWQotCi0wMC1EMC1ENyAgIChoZXgpCQlCMkMyLCBJTkMuCi0wMEQwRDcgICAgIChiYXNlIDE2KQkJQjJDMiwgSU5DLgotCQkJCTIwMjAgQ0hBTExFTkdFUiBEUklWRS0KLQkJCQlTVUlURSAjMTAxCi0JCQkJQUxBTUVEQSBDQSA5NDUwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRDggICAoaGV4KQkJM0NvbSBDb3Jwb3JhdGlvbgotMDBEMEQ4ICAgICAoYmFzZSAxNikJCTNDb20gQ29ycG9yYXRpb24KLQkJCQkyMTMzIExFR0hPUk4gU1RSRUVUCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRDkgICAoaGV4KQkJREVESUNBVEVEIE1JQ1JPQ09NUFVURVJTCi0wMEQwRDkgICAgIChiYXNlIDE2KQkJREVESUNBVEVEIE1JQ1JPQ09NUFVURVJTCi0JCQkJR1JPVVAsIExURC4KLQkJCQkxMSBPQUsgU1RSRUVULCBQRU5ETEVCVVJZIFNXSU5UT04sIE1BTkNICi0JCQkJTTI3NEZMIFVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRDAtREEgICAoaGV4KQkJVEFJQ09NIERBVEEgU1lTVEVNUyBDTy4sIExURC4KLTAwRDBEQSAgICAgKGJhc2UgMTYpCQlUQUlDT00gREFUQSBTWVNURU1TIENPLiwgTFRELgotCQkJCTQ1LCBXVS1LVU5HIDUgUk9BRAotCQkJCVdVLUtVIElORC4gUEFWSyBUQUlQRUktSFNJRU4KLQkJCQlUQUlXQU4KLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUQwLURCICAgKGhleCkJCU1DUVVBWSBJTlRFUk5BVElPTkFMCi0wMEQwREIgICAgIChiYXNlIDE2KQkJTUNRVUFZIElOVEVSTkFUSU9OQUwKLQkJCQkxMzYwMCBJTkRVU1RSSUFMIFBBUksgQkxWRC4KLQkJCQlNSU5ORUFQT0xJUyBNTiA1NTQ0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtREMgICAoaGV4KQkJTU9EVUxBUiBNSU5JTkcgU1lTVEVNUywgSU5DLgotMDBEMERDICAgICAoYmFzZSAxNikJCU1PRFVMQVIgTUlOSU5HIFNZU1RFTVMsIElOQy4KLQkJCQkzMjg5IEUuIEhFTUlTUEhFUkUgTE9PUAotCQkJCVRVQ1NPTiBBWiA4NTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtREQgICAoaGV4KQkJU1VOUklTRSBURUxFQ09NLCBJTkMuCi0wMEQwREQgICAgIChiYXNlIDE2KQkJU1VOUklTRSBURUxFQ09NLCBJTkMuCi0JCQkJMjIgR1JFQVQgT0FLUyBCTFZELgotCQkJCVNBTiBKT1NFIENBIDk1MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1ERSAgIChoZXgpCQlQSElMSVBTIE1VTFRJTUVESUEgTkVUV09SSwotMDBEMERFICAgICAoYmFzZSAxNikJCVBISUxJUFMgTVVMVElNRURJQSBORVRXT1JLCi0JCQkJU1lTVEVNUyBHTUJICi0JCQkJRklDSFRFU1RSQVNTRSAxQSBELTAyNjAxIEJBVVRaRU4KLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wMC1EMC1ERiAgIChoZXgpCQlLVVpVTUkgRUxFQ1RST05JQ1MsIElOQy4KLTAwRDBERiAgICAgKGJhc2UgMTYpCQlLVVpVTUkgRUxFQ1RST05JQ1MsIElOQy4KLQkJCQkyOC02IElJSklNQS1DSFlPLCBTQUtBRS1LVQotCQkJCVlPS09IQU1BLVNISSBLQU5BR0FXQSwgMjQ0LTA4NDIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUQwLUUwICAgKGhleCkJCURPT0lOIEVMRUNUUk9OSUNTIENPLgotMDBEMEUwICAgICAoYmFzZSAxNikJCURPT0lOIEVMRUNUUk9OSUNTIENPLgotCQkJCURPT0lOIEJMREcuIDE2LTYsIFNPT05BRS1ET05HCi0JCQkJQlVOREFORy1HVSwgU1VOR05BTS1TSSBLWVVOR0dJLURPCi0JCQkJS09SRUEgNDYzLTAyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC1FMSAgIChoZXgpCQlBVklPTklURUsgSVNSQUVMIElOQy4KLTAwRDBFMSAgICAgKGJhc2UgMTYpCQlBVklPTklURUsgSVNSQUVMIElOQy4KLQkJCQkxIEVUR0FSIFNUUkVFVAotCQkJCVRJUkFUICBDQVJNRUwgIDM5MTIwCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLUQwLUUyICAgKGhleCkJCU1SVCBNSUNSTywgSU5DLgotMDBEMEUyICAgICAoYmFzZSAxNikJCU1SVCBNSUNSTywgSU5DLgotCQkJCTE0MDAwIFMuIE1JTElUQVJZIFRSQUlMCi0JCQkJREVMUkFZIEJFQUNIIEZMIDMzNDg0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1FMyAgIChoZXgpCQlFTEUtQ0hFTSBFTkdJTkVFUklORyBDTy4sIExURC4KLTAwRDBFMyAgICAgKGJhc2UgMTYpCQlFTEUtQ0hFTSBFTkdJTkVFUklORyBDTy4sIExURC4KLQkJCQlXSU5EU1RPTkUgT0ZGSUNFCi0JCQkJMS04MDMsIDI3NS0yIFlBTkdKVUUtRE9ORywgU0VPQ0hPLUtVCi0JCQkJU0VPVUwgMTM3LTEzMCBTRU9VTCAxMzctMTMwIEtPUkVBCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUQwLUU0ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRDBFNCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFdFU1QgVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUU1ICAgKGhleCkJCVNPTElEVU0gU1lTVEVNUyBDT1JQLgotMDBEMEU1ICAgICAoYmFzZSAxNikJCVNPTElEVU0gU1lTVEVNUyBDT1JQLgotCQkJCTk0MCBCRUxGQVNUIFJPQUQgMVMuMjE3Ci0JCQkJT1RUQVdBLCBPTlRBUklPIEsxRyA0QTIKLQkJCQlDQU5BREEKLQkJCQlDQU5BREEKLQotMDAtRDAtRTYgICAoaGV4KQkJSUJPTkQgSU5DLgotMDBEMEU2ICAgICAoYmFzZSAxNikJCUlCT05EIElOQy4KLQkJCQkzMTYwLCBERSBMQSBDUlVaIEJMVkQuCi0JCQkJU1VJVEUgIzEwMQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1EMC1FNyAgIChoZXgpCQlWQ09OIFRFTEVDT01NVU5JQ0FUSU9OIExURC4KLTAwRDBFNyAgICAgKGJhc2UgMTYpCQlWQ09OIFRFTEVDT01NVU5JQ0FUSU9OIExURC4KLQkJCQkyMiBNQVNLSVQgU1RSRUVUCi0JCQkJSEVSWkxJWUEgIDQ2NzMzCi0JCQkJSVNSQUVMCi0JCQkJSVNSQUVMCi0KLTAwLUQwLUU4ICAgKGhleCkJCU1BQyBTWVNURU0gQ08uLCBMVEQuCi0wMEQwRTggICAgIChiYXNlIDE2KQkJTUFDIFNZU1RFTSBDTy4sIExURC4KLQkJCQlSJkQgSU5TVElUVVRFCi0JCQkJTUFDIFNZU1RFTSBDTy4sIExURC4gMjE5LTIgQU5BTkc3LURPTkcsCi0JCQkJS1lVTkdLSS1ETyBLT1JFQSwgNDMwLTAxNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMC1FOSAgIChoZXgpCQlBZHZhbnRhZ2UgQ2VudHVyeSBUZWxlY29tbXVuaWNhdGlvbiBDb3JwLgotMDBEMEU5ICAgICAoYmFzZSAxNikJCUFkdmFudGFnZSBDZW50dXJ5IFRlbGVjb21tdW5pY2F0aW9uIENvcnAuCi0JCQkJNEYsIDQxLCBUdW5naHNpbiBSZC4KLQkJCQlUYWlwZWkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtRUEgICAoaGV4KQkJTkVYVE9ORSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBEMEVBICAgICAoYmFzZSAxNikJCU5FWFRPTkUgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQk5NzAwIEdSRUFUIFNFTkVDQSBIR0hXWQotCQkJCVJPQ0tWSUxMRSBNRCAyMDg1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRUIgICAoaGV4KQkJTElHSFRFUkEgTkVUV09SS1MsIElOQy4KLTAwRDBFQiAgICAgKGJhc2UgMTYpCQlMSUdIVEVSQSBORVRXT1JLUywgSU5DLgotCQkJCTEwMjAxIEJVQkIgUk9BRAotCQkJCUNVUEVSVElOTyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRUMgICAoaGV4KQkJTkFLQVlPIFRFTEVDT01NVU5JQ0FUSU9OUywgSU5DCi0wMEQwRUMgICAgIChiYXNlIDE2KQkJTkFLQVlPIFRFTEVDT01NVU5JQ0FUSU9OUywgSU5DCi0JCQkJMS0zLTIgU09VSllBLU1BQ0hJCi0JCQkJTUFFQkFTSEktU0hJIEdVTk1BLCAzNzEtMDg1MwotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDAtRDAtRUQgICAoaGV4KQkJWElPWAotMDBEMEVEICAgICAoYmFzZSAxNikJCVhJT1gKLQkJCQkxNTAgRE9XIFNUUkVFVAotCQkJCU1BTkNIRVNURVIgTkggMDMxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUVFICAgKGhleCkJCURJQ1RBUEhPTkUgQ09SUE9SQVRJT04KLTAwRDBFRSAgICAgKGJhc2UgMTYpCQlESUNUQVBIT05FIENPUlBPUkFUSU9OCi0JCQkJMzE5MSBCUk9BREJSSURHRSBBVkUuCi0JCQkJU1RSQVRGT1JEIENUIDA2NjE0LTI1NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUVGICAgKGhleCkJCUlHVAotMDBEMEVGICAgICAoYmFzZSAxNikJCUlHVAotCQkJCTkyOTUgUFJPVE9UWVBFIERSSVZFCi0JCQkJUkVOTyBOViA4OTUxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRjAgICAoaGV4KQkJQ09OVklTSU9OIFRFQ0hOT0xPR1kgR01CSAotMDBEMEYwICAgICAoYmFzZSAxNikJCUNPTlZJU0lPTiBURUNITk9MT0dZIEdNQkgKLQkJCQlSRUJFTlJJTkcgMzMKLQkJCQlELTM4MTA2IEJSQVVOU0NIV0VJRwotCQkJCUdFUk1BTlkKLQkJCQlHRVJNQU5ZCi0KLTAwLUQwLUYxICAgKGhleCkJCVNFR0EgRU5URVJQUklTRVMsIExURC4KLTAwRDBGMSAgICAgKGJhc2UgMTYpCQlTRUdBIEVOVEVSUFJJU0VTLCBMVEQuCi0JCQkJMTItMTQgSElHQVNISUtPVUpJWUEgMi1DSE9NRQotCQkJCU9IVEEtS1UgVE9LWU8gMTQ0LTg1MzIKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTAwLUQwLUYyICAgKGhleCkJCU1PTlRFUkVZIE5FVFdPUktTCi0wMEQwRjIgICAgIChiYXNlIDE2KQkJTU9OVEVSRVkgTkVUV09SS1MKLQkJCQkxOTA5IE4uIEdMRU5WSUxMRSBEUklWRQotCQkJCVJJQ0hBUkRTT04gVFggNzUwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUYzICAgKGhleCkJCVNPTEFSSSBESSBVRElORSBTUEEKLTAwRDBGMyAgICAgKGJhc2UgMTYpCQlTT0xBUkkgREkgVURJTkUgU1BBCi0JCQkJVklBIEdJTk8gUElFUkkgMjkKLQkJCQkzMzEwMCBVRElORQotCQkJCUlUQUxZCi0JCQkJSVRBTFkKLQotMDAtRDAtRjQgICAoaGV4KQkJQ0FSSU5USElBTiBURUNIIElOU1RJVFVURQotMDBEMEY0ICAgICAoYmFzZSAxNikJCUNBUklOVEhJQU4gVEVDSCBJTlNUSVRVVEUKLQkJCQlSSUNIQVJELVdBR05FUiBTVFIuIDE5Ci0JCQkJOTUwMCBWSUxMQUNICi0JCQkJQVVTVFJJQQotCQkJCUFVU1RSSUEKLQotMDAtRDAtRjUgICAoaGV4KQkJT1JBTkdFIE1JQ1JPLCBJTkMuCi0wMEQwRjUgICAgIChiYXNlIDE2KQkJT1JBTkdFIE1JQ1JPLCBJTkMuCi0JCQkJMTQwMCBOLiBMQUtFVklFVyBBVkUuCi0JCQkJQU5BSEVJTSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRjYgICAoaGV4KQkJQWxjYXRlbCBDYW5hZGEKLTAwRDBGNiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIENhbmFkYQotCQkJCTYwMCBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhLCBPbnRhcmlvCi0JCQkJSzJLIDJFNgotCQkJCUNBTkFEQQotCi0wMC1EMC1GNyAgIChoZXgpCQlORVhUIE5FVFMgQ09SUE9SQVRJT04KLTAwRDBGNyAgICAgKGJhc2UgMTYpCQlORVhUIE5FVFMgQ09SUE9SQVRJT04KLQkJCQlNSVRBIEtPS1VTQUkgQkxERy4gMTdGCi0JCQkJMS00LTI4IE1JVEEgTUlOQVRPLUtVIFRPS1lPIDEwOC0wMDczCi0JCQkJSkFQQU4KLQkJCQlKQVBBTgotCi0wMC1EMC1GOCAgIChoZXgpCQlGVUpJQU4gU1RBUiBURVJNSU5BTAotMDBEMEY4ICAgICAoYmFzZSAxNikJCUZVSklBTiBTVEFSIFRFUk1JTkFMCi0JCQkJREVWSUNFIENPLiwgTFRELgotCQkJCUZVRVIgSU5EVVNUUklBTCBaT05FIFNUQVIgU0NJRU5DRSAmIFRFQ0gKLQkJCQlGVVpIT1UgRlVKSUFOLCBDSElOQSAzNTAwMDIKLQkJCQlDSElOQQotCi0wMC1EMC1GOSAgIChoZXgpCQlBQ1VURSBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDBEMEY5ICAgICAoYmFzZSAxNikJCUFDVVRFIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJTk8uIDEsIENSRUFUSU9OIFJPQUQgSUlJCi0JCQkJU0NJRU5DRSBCQVNFRCBJTkRVU1RSSUFMIFBBUksgSFNJTkNIVSAzMAotCQkJCVRBSVdBTgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRDAtRkEgICAoaGV4KQkJVGhhbGVzIGUtU2VjdXJpdHkgTHRkLgotMDBEMEZBICAgICAoYmFzZSAxNikJCVRoYWxlcyBlLVNlY3VyaXR5IEx0ZC4KLQkJCQlNZWFkb3cgVmlldyBIb3VzZSwgQ3JlbmRvbiBJbmR1c3RyaWFsIEVzdGF0ZQotCQkJCUxvbmcgQ3JlbmRvbgotCQkJCUF5bGVzYnVyeSBCdWNraW5naGFtc2hpcmUgSFAxOCA5RVEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1EMC1GQiAgIChoZXgpCQlURUsgTUlDUk9TWVNURU1TLCBJTkNPUlBPUkFURUQKLTAwRDBGQiAgICAgKGJhc2UgMTYpCQlURUsgTUlDUk9TWVNURU1TLCBJTkNPUlBPUkFURUQKLQkJCQlPTkUgTk9SVEggQVZFTlVFCi0JCQkJQlVSTElOR1RPTiBNQSAwMTgwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRkMgICAoaGV4KQkJR1JBTklURSBNSUNST1NZU1RFTVMKLTAwRDBGQyAgICAgKGJhc2UgMTYpCQlHUkFOSVRFIE1JQ1JPU1lTVEVNUwotCQkJCTEwMjAyIE4uIEVOVEVSUFJJU0UgRFJJVkUKLQkJCQlNRVFVT04gV0kgNTMwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQwLUZEICAgKGhleCkJCU9QVElNQSBURUxFLkNPTSwgSU5DLgotMDBEMEZEICAgICAoYmFzZSAxNikJCU9QVElNQSBURUxFLkNPTSwgSU5DLgotCQkJCTIwMC05MCBBbGxzdGF0ZSBQYXJrd2F5Ci0JCQkJTWFya2hhbSBPTiBMM1IgNkgzCi0JCQkJQ0FOQURBCi0KLTAwLUQwLUZFICAgKGhleCkJCUFTVFJBTCBQT0lOVAotMDBEMEZFICAgICAoYmFzZSAxNikJCUFTVFJBTCBQT0lOVAotCQkJCUNPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMjcgSU5EVVNUUklBTCBBVkUuLC1TVEUuICMzCi0JCQkJQ0hFTE1TRk9SRCBNQSAwMTgyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDAtRkYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBEMEZGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgV0VTVCBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRDEtMUMgICAoaGV4KQkJQUNFVEVMCi0wMEQxMUMgICAgIChiYXNlIDE2KQkJQUNFVEVMCi0JCQkJIzEwMDYsIFdvcmxkIE1lcmRpYW4gMi1jaGEsIDQyNi01LAotCQkJCUdhc2FuLWRvbmcsIEdldW1jaGVvbi1ndSwKLQkJCQlTZW91bCAgMTUzLTc1OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1EMy04RCAgIChoZXgpCQlIb3RlbCBUZWNobm9sb2d5IE5leHQgR2VuZXJhdGlvbgotMDBEMzhEICAgICAoYmFzZSAxNikJCUhvdGVsIFRlY2hub2xvZ3kgTmV4dCBHZW5lcmF0aW9uCi0JCQkJNjUwIEUuIEFsZ29ucXVpbiBSb2FkCi0JCQkJU3RlIDIwNwotCQkJCVNjaGF1bWJ1cmcgSUwgNjAxNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUQ2LTMyICAgKGhleCkJCUdFIEVuZXJneQotMDBENjMyICAgICAoYmFzZSAxNikJCUdFIEVuZXJneQotCQkJCUxpc3N1ZSBJbmR1c3RyaWFsIEVzdGF0ZSBFYXN0Ci0JCQkJTGlzc3VlIFJvYWQKLQkJCQlMaXNidXJuIENvIEFudHJpbSBCVDI4IDJSRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLURCLTQ1ICAgKGhleCkJCVRIQU1XQVkgQ08uLExURC4KLTAwREI0NSAgICAgKGJhc2UgMTYpCQlUSEFNV0FZIENPLixMVEQuCi0JCQkJMy05LTIKLQkJCQlJbWFpenVtaQotCQkJCUZ1amkgU2hpenVva2EgNDE3LTAwMDEKLQkJCQlKQVBBTgotCi0wMC1EQi1ERiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTAwREJERiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTAwLURELTAwICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwMCAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wMSAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMDEgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMDIgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDAyICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTAzICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwMyAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wNCAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMDQgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMDUgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDA1ICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTA2ICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwNiAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wNyAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMDcgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMDggICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDA4ICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTA5ICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwOSAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wQSAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMEEgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMEIgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDBCICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTBDICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwQyAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERC0wRCAgIChoZXgpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0wMEREMEQgICAgIChiYXNlIDE2KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotCQkJCTM5MDAgRlJFRURPTSBDSVJDTEUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtREQtMEUgICAoaGV4KQkJVU5HRVJNQU5OLUJBU1MgSU5DLgotMDBERDBFICAgICAoYmFzZSAxNikJCVVOR0VSTUFOTi1CQVNTIElOQy4KLQkJCQkzOTAwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLURELTBGICAgKGhleCkJCVVOR0VSTUFOTi1CQVNTIElOQy4KLTAwREQwRiAgICAgKGJhc2UgMTYpCQlVTkdFUk1BTk4tQkFTUyBJTkMuCi0JCQkJMzkwMCBGUkVFRE9NIENJUkNMRQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1ERS1GQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wMERFRkIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMDAgICAoaGV4KQkJRnVqaXRzdSBMaW1pdGVkCi0wMEUwMDAgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBMaW1pdGVkCi0JCQkJTXVzYXNoaS1rb3N1Z2kgVG93ZXIgUGxhY2UgQmxkZy4sCi0JCQkJS29zdWdpLWNobyAxLWNob21lLE5ha2FoYXJhLWt1Ci0JCQkJS0FXQVNBS0kgMjExLTg4IEthbmFnYXdhIAotCQkJCUpBUEFOCi0KLTAwLUUwLTAxICAgKGhleCkJCVNUUkFORCBMSUdIVElORyBMSU1JVEVECi0wMEUwMDEgICAgIChiYXNlIDE2KQkJU1RSQU5EIExJR0hUSU5HIExJTUlURUQKLQkJCQlHUkFOVCBXQVkKLQkJCQlJU0xFV09SVEgKLQkJCQlNSURETEVTRVggRW5nbGFuZCBUVzcgNVFEIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUUwLTAyICAgKGhleCkJCUNST1NTUk9BRFMgU1lTVEVNUywgSU5DLgotMDBFMDAyICAgICAoYmFzZSAxNikJCUNST1NTUk9BRFMgU1lTVEVNUywgSU5DLgotCQkJCTkzOTAgUkVTRUFSQ0ggQkxWRC4KLQkJCQlTVUlURSAyLTMwMAotCQkJCUFVU1RJTiBUWCA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMDMgICAoaGV4KQkJTk9LSUEgV0lSRUxFU1MgQlVTSU5FU1MgQ09NTVVOCi0wMEUwMDMgICAgIChiYXNlIDE2KQkJTk9LSUEgV0lSRUxFU1MgQlVTSU5FU1MgQ09NTVVOCi0JCQkJQUNDRVNTIFBPSU5UIFBST0RVQ1RTIEdST1VQCi0JCQkJVU5JVCA2LCBDQU1CUklER0UgQlVTIFBBUksgTUlMVE9OIFJELCBDQQotCQkJCUNCNCAwV1MgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUUwLTA0ICAgKGhleCkJCVBNQy1TSUVSUkEsIElOQy4KLTAwRTAwNCAgICAgKGJhc2UgMTYpCQlQTUMtU0lFUlJBLCBJTkMuCi0JCQkJMTA1LTg1NTUgQkFYVEVSIFBMQUNFCi0JCQkJQlVSTkFCWSwgQkMgVjVBIDRWNyAgCi0JCQkJQ0FOQURBCi0KLTAwLUUwLTA1ICAgKGhleCkJCVRFQ0hOSUNBTCBDT1JQLgotMDBFMDA1ICAgICAoYmFzZSAxNikJCVRFQ0hOSUNBTCBDT1JQLgotCQkJCTIyLTYgTUlOQU1JIFNFTkdFTkNITwotCQkJCU5JU0hJS1UgWU9LT0hBTUEgQ0lUWQotCQkJCUtBTkFHQVdBICAKLQkJCQlKQVBBTgotCi0wMC1FMC0wNiAgIChoZXgpCQlTSUxJQ09OIElOVEVHUkFURUQgU1lTLiBDT1JQLgotMDBFMDA2ICAgICAoYmFzZSAxNikJCVNJTElDT04gSU5URUdSQVRFRCBTWVMuIENPUlAuCi0JCQkJMTYsIENSRUFUSU9OIFJELiBJCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOIENIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1FMC0wNyAgIChoZXgpCQlBdmF5YSBFQ1MgTHRkCi0wMEUwMDcgICAgIChiYXNlIDE2KQkJQXZheWEgRUNTIEx0ZAotCQkJCVVuaXQgMSBTdGVybGluZyBDb3VydCwgTXVuZGVsbHMKLQkJCQlXZWx3eW4gR2FyZGVuIENpdHkgSGVydCBBTDcgMUxaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtMDggICAoaGV4KQkJQU1BWklORyBDT05UUk9MUyEgSU5DLgotMDBFMDA4ICAgICAoYmFzZSAxNikJCUFNQVpJTkcgQ09OVFJPTFMhIElOQy4KLQkJCQkxNjE1IFdZQVRUIERSSVZFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTA5ICAgKGhleCkJCU1BUkFUSE9OIFRFQ0hOT0xPR0lFUyBDT1JQLgotMDBFMDA5ICAgICAoYmFzZSAxNikJCU1BUkFUSE9OIFRFQ0hOT0xPR0lFUyBDT1JQLgotCQkJCTEzMDAgTUFTU0FDSFVTRVRUUyBBVkVOVUUKLQkJCQlCT1hCT1JPVUdIIE1BIDAxNzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0wQSAgIChoZXgpCQlESUJBLCBJTkMuCi0wMEUwMEEgICAgIChiYXNlIDE2KQkJRElCQSwgSU5DLgotCQkJCTMzNTUgRURJU09OIFdBWQotCQkJCU1FTkxPIFBBUksgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTBCICAgKGhleCkJCVJPT0ZUT1AgQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwRTAwQiAgICAgKGJhc2UgMTYpCQlST09GVE9QIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJNDY4IFBBQ08gRFJJVkUKLQkJCQlMT1MgQUxUT1MgQ0EgOTQwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTBDICAgKGhleCkJCU1PVE9ST0xBCi0wMEUwMEMgICAgIChiYXNlIDE2KQkJTU9UT1JPTEEKLQkJCQk1NDAxIE4uIEJFQUNIIFNULiAgUzI0MwotCQkJCUZULiBXT1JUSCBUWCA3NjEzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMEQgICAoaGV4KQkJUkFESUFOVCBTWVNURU1TCi0wMEUwMEQgICAgIChiYXNlIDE2KQkJUkFESUFOVCBTWVNURU1TCi0JCQkJMTAwMCBBTERFUk1BTiBEUi4KLQkJCQlBTFBIQVJFVFRBIEdBIDMwMjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0wRSAgIChoZXgpCQlBVkFMT04gSU1BR0lORyBTWVNURU1TLCBJTkMuCi0wMEUwMEUgICAgIChiYXNlIDE2KQkJQVZBTE9OIElNQUdJTkcgU1lTVEVNUywgSU5DLgotCQkJCTMxMzMgSU5ESUFOIFJPQUQKLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0wRiAgIChoZXgpCQlTSEFOR0hBSSBCQVVEIERBVEEKLTAwRTAwRiAgICAgKGJhc2UgMTYpCQlTSEFOR0hBSSBCQVVEIERBVEEKLQkJCQlDT01NVU5JQ0FUSU9OIERFVkVMT1BNRU5UIENPUlAKLQkJCQkzRiwgR09MRCBMVUNLIEJVSUxESU5HIDI1MDcgUFVET05HIFJPQUQKLQkJCQlTSEFOR0hBSSAgCi0JCQkJQ0hJTkEKLQotMDAtRTAtMTAgICAoaGV4KQkJSEVTUyBTQi1BVVRPTUFURU5CQVUgR21iSAotMDBFMDEwICAgICAoYmFzZSAxNikJCUhFU1MgU0ItQVVUT01BVEVOQkFVIEdtYkgKLQkJCQlISU5ERU5CVVJHU1RSQVNTRSAyNy0yOQotCQkJCUQtNzExMDYgTUFHU1RBRFQgIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtMTEgICAoaGV4KQkJVW5pZGVuIENvcnBvcmF0aW9uCi0wMEUwMTEgICAgIChiYXNlIDE2KQkJVW5pZGVuIENvcnBvcmF0aW9uCi0JCQkJMi0xMi03IEhhdGNob2JvcmksCi0JCQkJQ2h1by1rdSBUb2t5byAxMDQtODUxMgotCQkJCUpBUEFOCi0KLTAwLUUwLTEyICAgKGhleCkJCVBMVVRPIFRFQ0hOT0xPR0lFUyBJTlRFUk5BVElPTkFMIElOQy4KLTAwRTAxMiAgICAgKGJhc2UgMTYpCQlQTFVUTyBURUNITk9MT0dJRVMgSU5URVJOQVRJT05BTCBJTkMuCi0JCQkJMjUxMSA1NVRIIFNUUkVFVAotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTEzICAgKGhleCkJCUVBU1RFUk4gRUxFQ1RST05JQyBDTy4sIExURC4KLTAwRTAxMyAgICAgKGJhc2UgMTYpCQlFQVNURVJOIEVMRUNUUk9OSUMgQ08uLCBMVEQuCi0JCQkJTk8uIDQsIFNISU4tTE9ORyBST0FELAotCQkJCUtXRUktU0hBTiBJTkRVU1RSSUFMIEFSRUEKLQkJCQlUQU8tWVVBTiAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1FMC0xNCAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwMTQgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0xNSAgIChoZXgpCQlIRUlXQSBDT1JQT1JBVElPTgotMDBFMDE1ICAgICAoYmFzZSAxNikJCUhFSVdBIENPUlBPUkFUSU9OCi0JCQkJMi0zMDE0LTgsIEhJUk9TQVdBLUNITwotCQkJCUtJUllVLVNISQotCQkJCUdVTk1BIFBSRUYuIDM3NiAgCi0JCQkJSkFQQU4KLQotMDAtRTAtMTYgICAoaGV4KQkJUkFQSUQgQ0lUWSBDT01NVU5JQ0FUSU9OUwotMDBFMDE2ICAgICAoYmFzZSAxNikJCVJBUElEIENJVFkgQ09NTVVOSUNBVElPTlMKLQkJCQk1NTUgQ0xZREUgQVZFLgotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTE3ICAgKGhleCkJCUVYWEFDVCBHbWJICi0wMEUwMTcgICAgIChiYXNlIDE2KQkJRVhYQUNUIEdtYkgKLQkJCQlSSEVJTlNUUkFTRSA3Ci0JCQkJRC00MTgzNiBIVUNLRUxIT1ZFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC0xOCAgIChoZXgpCQlBU1VTVEVLIENPTVBVVEVSIElOQy4KLTAwRTAxOCAgICAgKGJhc2UgMTYpCQlBU1VTVEVLIENPTVBVVEVSIElOQy4KLQkJCQkxNTAgTEktVEUgUkQuCi0JCQkJUEVJVE9VLCBUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtMTkgICAoaGV4KQkJSU5HLiBHSU9SREFOTyBFTEVUVFJPTklDQQotMDBFMDE5ICAgICAoYmFzZSAxNikJCUlORy4gR0lPUkRBTk8gRUxFVFRST05JQ0EKLQkJCQlWSUEgUElFVFJPIENPU1NBICAxMTUvMTIKLQkJCQkxMDE0Ni1UT1JJTk8gIAotCQkJCUlUQUxZCi0KLTAwLUUwLTFBICAgKGhleCkJCUNPTVRFQyBTWVNURU1TLiBDTy4sIExURC4KLTAwRTAxQSAgICAgKGJhc2UgMTYpCQlDT01URUMgU1lTVEVNUy4gQ08uLCBMVEQuCi0JCQkJNDA0LTkgQ0hPVU5HQ0hFTi1ET05HCi0JCQkJQlVQWU9VTkctS1UsIElOQ0hPTiAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTAwLUUwLTFCICAgKGhleCkJCVNQSEVSRSBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBFMDFCICAgICAoYmFzZSAxNikJCVNQSEVSRSBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTIgRU5FUkdZIERSSVZFCi0JCQkJTEFLRSBCTFVGRiBJTCA2MDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMUMgICAoaGV4KQkJQ3JhZGxlcG9pbnQsIEluYwotMDBFMDFDICAgICAoYmFzZSAxNikJCUNyYWRsZXBvaW50LCBJbmMKLQkJCQkxMTk5IFNob3JlbGluZSBMYW5lCi0JCQkJU3VpdGUgMzAxCi0JCQkJQm9pc2UgSUQgODM3MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTFEICAgKGhleCkJCVdlYlRWIE5FVFdPUktTLCBJTkMuCi0wMEUwMUQgICAgIChiYXNlIDE2KQkJV2ViVFYgTkVUV09SS1MsIElOQy4KLQkJCQkzMDUgTFlUVE9OIEFWRS4KLQkJCQlQQUxPIEFMVE8gQ0EgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTFFICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTAxRSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTFGICAgKGhleCkJCUFWSURJQSBTeXN0ZW1zLCBJbmMuCi0wMEUwMUYgICAgIChiYXNlIDE2KQkJQVZJRElBIFN5c3RlbXMsIEluYy4KLQkJCQkxMzUgTk9SVEggUExBSU5TIElORFVTVFJJQUwgUkQKLQkJCQlXQUxMSU5HRk9SRCBDVCAwNjQ5MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMjAgICAoaGV4KQkJVEVDTk9NRU4gT1kKLTAwRTAyMCAgICAgKGJhc2UgMTYpCQlURUNOT01FTiBPWQotCQkJCVAuTy4gQk9YIDkzCi0JCQkJRklOLTAyMjcxIEVTUE9PICAKLQkJCQlGSU5MQU5ECi0KLTAwLUUwLTIxICAgKGhleCkJCUZSRUVHQVRFIENPUlAuCi0wMEUwMjEgICAgIChiYXNlIDE2KQkJRlJFRUdBVEUgQ09SUC4KLQkJCQk3MTAgTEFLRVdBWSAgU1RFLiMyMzAKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTIyICAgKGhleCkJCUFuYWxvZyBEZXZpY2VzIEluYy4KLTAwRTAyMiAgICAgKGJhc2UgMTYpCQlBbmFsb2cgRGV2aWNlcyBJbmMuCi0JCQkJNzc3IEJheSBTdHJlZXQKLQkJCQlTdWl0ZSAyMzAzCi0JCQkJVG9yb250byBPbnRhcmlvIE01RyAyQzgKLQkJCQlDQU5BREEKLQotMDAtRTAtMjMgICAoaGV4KQkJVEVMUkFECi0wMEUwMjMgICAgIChiYXNlIDE2KQkJVEVMUkFECi0JCQkJUC5PLiBCT1ggNTAKLQkJCQlMT0QgNzExMDAgIAotCQkJCUlTUkFFTAotCi0wMC1FMC0yNCAgIChoZXgpCQlHQURaT09YIE5FVFdPUktTCi0wMEUwMjQgICAgIChiYXNlIDE2KQkJR0FEWk9PWCBORVRXT1JLUwotCQkJCTU4NTAgSEVMTFlFUiBBVkVOVUUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMjUgICAoaGV4KQkJZGl0IENvLiwgTHRkLgotMDBFMDI1ICAgICAoYmFzZSAxNikJCWRpdCBDby4sIEx0ZC4KLQkJCQlQcmVtaWVyIFRveW9jaG8gQnVpbGRpbmcKLQkJCQkyMy0yMSBUb3lvIDMtY2hvbWUsCi0JCQkJS290by1rdSBUb2t5byAxMzUtMDA1NgotCQkJCUpBUEFOCi0KLTAwLUUwLTI2ICAgKGhleCkJCVJlZGxha2UgTUFTRCBMTEMKLTAwRTAyNiAgICAgKGJhc2UgMTYpCQlSZWRsYWtlIE1BU0QgTExDCi0JCQkJMzQ0MCBFLiBQcml0YW5uaWEgRHIuCi0JCQkJU3VpdGUgMTI0Ci0JCQkJVHVzY29uIEFaIDg1NzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0yNyAgIChoZXgpCQlEVVgsIElOQy4KLTAwRTAyNyAgICAgKGJhc2UgMTYpCQlEVVgsIElOQy4KLQkJCQk1LTE4LTE5LCBOSVNISUtBTUFUQSwgT1RBLUtVCi0JCQkJVE9LWU8tVE8sIDE0NCAgCi0JCQkJSkFQQU4KLQotMDAtRTAtMjggICAoaGV4KQkJQVBUSVggQ09SUE9SQVRJT04KLTAwRTAyOCAgICAgKGJhc2UgMTYpCQlBUFRJWCBDT1JQT1JBVElPTgotCQkJCTI4ODAgTi4gRklSU1QgU1RSRUVUCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTI5ICAgKGhleCkJCVNUQU5EQVJEIE1JQ1JPU1lTVEVNUyBDT1JQLgotMDBFMDI5ICAgICAoYmFzZSAxNikJCVNUQU5EQVJEIE1JQ1JPU1lTVEVNUyBDT1JQLgotCQkJCTYgSFVHSEVTCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0yQSAgIChoZXgpCQlUQU5EQkVSRyBURUxFVklTSU9OIEFTCi0wMEUwMkEgICAgIChiYXNlIDE2KQkJVEFOREJFUkcgVEVMRVZJU0lPTiBBUwotCQkJCVBISUxJUCBQRURFUlNFTlMgViAyMAotCQkJCU4tMTMyNCBMWVNBS0VSICAKLQkJCQlOT1JXQVkKLQotMDAtRTAtMkIgICAoaGV4KQkJRVhUUkVNRSBORVRXT1JLUwotMDBFMDJCICAgICAoYmFzZSAxNikJCUVYVFJFTUUgTkVUV09SS1MKLQkJCQkxMDQ2MCBCQU5ETEVZIERSSVZFCi0JCQkJQ1VQRVJJTlQwIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0yQyAgIChoZXgpCQlBU1QgQ09NUFVURVIKLTAwRTAyQyAgICAgKGJhc2UgMTYpCQlBU1QgQ09NUFVURVIKLQkJCQkxNjIxNSBBTFRPTiBQQVJLV0FZCi0JCQkJSVJWSU5FIENBIDkyNzE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0yRCAgIChoZXgpCQlJbm5vTWVkaWFMb2dpYywgSW5jLgotMDBFMDJEICAgICAoYmFzZSAxNikJCUlubm9NZWRpYUxvZ2ljLCBJbmMuCi0JCQkJMzY1MyBDSEVNSU4gQ0hBTUJMWQotCQkJCUxPTkdVRVVJTCwgUVVFQkVDIEo0TCBKNEwgIElOOQotCQkJCUNBTkFEQQotCi0wMC1FMC0yRSAgIChoZXgpCQlTUEMgRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04KLTAwRTAyRSAgICAgKGJhc2UgMTYpCQlTUEMgRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04KLQkJCQkyLTEtMyBTSElCQVNBS0ksIENIT0ZVLVNISQotCQkJCVRPS1lPLCAxODIgIAotCQkJCUpBUEFOCi0KLTAwLUUwLTJGICAgKGhleCkJCU1DTlMgSE9MRElOR1MsIEwuUC4KLTAwRTAyRiAgICAgKGJhc2UgMTYpCQlNQ05TIEhPTERJTkdTLCBMLlAuCi0JCQkJVENJLCBJTkMuLVRFQ0hOT0xPR1kgVkVOVFVSRVMKLQkJCQlQLk8uIEJPWCA1NjMwCi0JCQkJREVOVkVSIENPIDgwMjE3LTU2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTMwICAgKGhleCkJCU1FTElUQSBJTlRFUk5BVElPTkFMIENPUlAuCi0wMEUwMzAgICAgIChiYXNlIDE2KQkJTUVMSVRBIElOVEVSTkFUSU9OQUwgQ09SUC4KLQkJCQk1MDUxIFBFQUNIVFJFRSBDT1JORVJTIENJUkNMRQotCQkJCU5PUkNST1NTIEdBIDMwMDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0zMSAgIChoZXgpCQlIQUdJV0FSQSBFTEVDVFJJQyBDTy4sIExURC4KLTAwRTAzMSAgICAgKGJhc2UgMTYpCQlIQUdJV0FSQSBFTEVDVFJJQyBDTy4sIExURC4KLQkJCQk3LCBTSElNT0tPRlVLQURBLCBBU0FEQS1DSE8KLQkJCQlOSVNTSElOLVNISSwgQUlDSEkgIDQ3MC0wMSAgCi0JCQkJSkFQQU4KLQotMDAtRTAtMzIgICAoaGV4KQkJTUlTWVMgRklOQU5DSUFMIFNZU1RFTVMsIExURC4KLTAwRTAzMiAgICAgKGJhc2UgMTYpCQlNSVNZUyBGSU5BTkNJQUwgU1lTVEVNUywgTFRELgotCQkJCUJVQ0tIT0xUIERSSVZFLAotCQkJCVdBUk5ET04sIFdPUkNFU1RFUiBXUjQ5U1IgIAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAwLUUwLTMzICAgKGhleCkJCUUuRS5QLkQuIEdtYkgKLTAwRTAzMyAgICAgKGJhc2UgMTYpCQlFLkUuUC5ELiBHbWJICi0JCQkJUk9FTUVSLVNUUkFTU0UgNAotCQkJCTg1MjI5IE1BUktUIElOREVSU0RPUkYgIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtMzQgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBFMDM0ICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtMzUgICAoaGV4KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0wMEUwMzUgICAgIChiYXNlIDE2KQkJRW1lcnNvbiBOZXR3b3JrIFBvd2VyCi0JCQkJMjkwMCBTLiBEaWFibG8gV2F5Ci0JCQkJVGVtcGUgQVogODUyODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTM2ICAgKGhleCkJCVBJT05FRVIgQ09SUE9SQVRJT04KLTAwRTAzNiAgICAgKGJhc2UgMTYpCQlQSU9ORUVSIENPUlBPUkFUSU9OCi0JCQkJMjYxMCBIYW5hem9ubyA0LUNob21lCi0JCQkJVG9rb3JvemF3YS1TaGkKLQkJCQlTYWl0YW1hIFByZWZlY3R1cmUsIDM1OS04ICAKLQkJCQlKQVBBTgotCi0wMC1FMC0zNyAgIChoZXgpCQlDRU5UVVJZIENPUlBPUkFUSU9OCi0wMEUwMzcgICAgIChiYXNlIDE2KQkJQ0VOVFVSWSBDT1JQT1JBVElPTgotCQkJCTItMjgtNSwgVGFpdG8KLQkJCQlUQUlUTy1LVSwgVE9LWU8gMTAxCi0JCQkJSkFQQU4KLQotMDAtRTAtMzggICAoaGV4KQkJUFJPWElNQSBDT1JQT1JBVElPTgotMDBFMDM4ICAgICAoYmFzZSAxNikJCVBST1hJTUEgQ09SUE9SQVRJT04KLQkJCQk5NDQwIENBUlJPTEwgUEFSSyBEUklWRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMS0yMjk4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0zOSAgIChoZXgpCQlQQVJBRFlORSBDT1JQLgotMDBFMDM5ICAgICAoYmFzZSAxNikJCVBBUkFEWU5FIENPUlAuCi0JCQkJODU0NSAxMjZUSCBBVkVOVUUgTk9SVEgKLQkJCQlMQVJHTyBGTCAzMzc3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtM0EgICAoaGV4KQkJQ0FCTEVUUk9OIFNZU1RFTVMsIElOQy4KLTAwRTAzQSAgICAgKGJhc2UgMTYpCQlDQUJMRVRST04gU1lTVEVNUywgSU5DLgotCQkJCTM1IElORFVTVFJJQUwgV0FZIC0gQkxERy4gIzM2Ci0JCQkJUk9DSEVTVEVSIE5IIDAzODY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0zQiAgIChoZXgpCQlQUk9NSU5FVCBDT1JQT1JBVElPTgotMDBFMDNCICAgICAoYmFzZSAxNikJCVBST01JTkVUIENPUlBPUkFUSU9OCi0JCQkJMTEwIFRVUk5QSUtFIFJELiAtIFNURS4gIzIwOAotCQkJCVdFU1RCT1JPVUdIIE1BIDAxNTgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0zQyAgIChoZXgpCQlBZHZhblN5cwotMDBFMDNDICAgICAoYmFzZSAxNikJCUFkdmFuU3lzCi0JCQkJMTE1MCBSSU5HV09PRCBDT1VSVAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC0zRCAgIChoZXgpCQlGT0NPTiBFTEVDVFJPTklDIFNZU1RFTVMgQS9TCi0wMEUwM0QgICAgIChiYXNlIDE2KQkJRk9DT04gRUxFQ1RST05JQyBTWVNURU1TIEEvUwotCQkJCURBTVZBTkcsIFBPIEJPWCAyNjkKLQkJCQlESy02NDAwIFNPTkRFUkJPUkcgIAotCQkJCURFTk1BUksKLQotMDAtRTAtM0UgICAoaGV4KQkJQUxGQVRFQ0gsIElOQy4KLTAwRTAzRSAgICAgKGJhc2UgMTYpCQlBTEZBVEVDSCwgSU5DLgotCQkJCVNISU4tT1NBS0EgRUlUTyBCTERHLgotCQkJCTQtMTUtMTggTklTSElOQUtBSklNQSwgWU9ET0dBV0EtS1UsCi0JCQkJT1NBS0EgIAotCQkJCUpBUEFOCi0KLTAwLUUwLTNGICAgKGhleCkJCUpBVE9OIENPUlBPUkFUSU9OCi0wMEUwM0YgICAgIChiYXNlIDE2KQkJSkFUT04gQ09SUE9SQVRJT04KLQkJCQk1NTYgU09VVEggTUlMUElUQVMgQkxWRC4KLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNDAgICAoaGV4KQkJRGVza1N0YXRpb24gVGVjaG5vbG9neSwgSW5jLgotMDBFMDQwICAgICAoYmFzZSAxNikJCURlc2tTdGF0aW9uIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxNTcyOSBDT0xMRUdFIEJMVkQuCi0JCQkJTEVORVhBIEtTIDY2MjE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC00MSAgIChoZXgpCQlDU1BJCi0wMEUwNDEgICAgIChiYXNlIDE2KQkJQ1NQSQotCQkJCTQzIE1hbm5pbmcgUmQuCi0JCQkJQmlsbGVyaWNhIE1BIDAxODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC00MiAgIChoZXgpCQlQYWNvbSBTeXN0ZW1zIEx0ZC4KLTAwRTA0MiAgICAgKGJhc2UgMTYpCQlQYWNvbSBTeXN0ZW1zIEx0ZC4KLQkJCQlVTklUIDIyIDM4LzQ2IFNPVVRIIFNULgotCQkJCVJZREFMTUVSRSAyMTE2IE5TVyAKLQkJCQlBVVNUUkFMSUEKLQotMDAtRTAtNDMgICAoaGV4KQkJVml0YWxDb20KLTAwRTA0MyAgICAgKGJhc2UgMTYpCQlWaXRhbENvbQotCQkJCTE1MjIyIERFTCBBTU8gQVZFLgotCQkJCVRVU1RJTiBDQSA5Mjc4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNDQgICAoaGV4KQkJTFNJQ1MgQ09SUE9SQVRJT04KLTAwRTA0NCAgICAgKGJhc2UgMTYpCQlMU0lDUyBDT1JQT1JBVElPTgotCQkJCTMtOC0zIE5JTk9NSVlBLCBUU0tVS1VCQS1TSEkKLQkJCQlJQkFSQUdJLUtFTiwgMzA1ICAKLQkJCQlKQVBBTgotCi0wMC1FMC00NSAgIChoZXgpCQlUT1VDSFdBVkUsIElOQy4KLTAwRTA0NSAgICAgKGJhc2UgMTYpCQlUT1VDSFdBVkUsIElOQy4KLQkJCQk5OTQgU0FOIEFOVE9OSU8gUkQuCi0JCQkJUEFMTyBBTFRPIENBIDk0MzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC00NiAgIChoZXgpCQlCRU5UTFkgTkVWQURBIENPUlAuCi0wMEUwNDYgICAgIChiYXNlIDE2KQkJQkVOVExZIE5FVkFEQSBDT1JQLgotCQkJCVBPIEJPWCAxNTcKLQkJCQlNSU5ERU4gTlYgODk0MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTQ3ICAgKGhleCkJCUluRm9jdXMgQ29ycG9yYXRpb24KLTAwRTA0NyAgICAgKGJhc2UgMTYpCQlJbkZvY3VzIENvcnBvcmF0aW9uCi0JCQkJMjc1MDAgU1cgUGFya3dheSBBdmVudWUKLQkJCQlXaWxzb252aWxsZSBPUiA5NzA3MC04MjM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC00OCAgIChoZXgpCQlTREwgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRTA0OCAgICAgKGJhc2UgMTYpCQlTREwgQ09NTVVOSUNBVElPTlMsIElOQy4KLQkJCQlQLk8uIEJPWCAxMzAzCi0JCQkJRUFTVE9OIE1BIDAyMzM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC00OSAgIChoZXgpCQlNSUNST1dJIEVMRUNUUk9OSUMgR21iSAotMDBFMDQ5ICAgICAoYmFzZSAxNikJCU1JQ1JPV0kgRUxFQ1RST05JQyBHbWJICi0JCQkJWlVTQU1TVFJBU1NFIDgKLQkJCQlEIDg2MTY1IEFVR1NCVVJHICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLTRBICAgKGhleCkJCUVOSEFOQ0VEIE1FU1NBR0lORyBTWVNURU1TLCBJTkMKLTAwRTA0QSAgICAgKGJhc2UgMTYpCQlFTkhBTkNFRCBNRVNTQUdJTkcgU1lTVEVNUywgSU5DCi0JCQkJMjUwIFdFU1QgU09VVEhMQUtFIEJMVkQuCi0JCQkJU09VVEhMQUtFIFRYIDc2MDkyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC00QiAgIChoZXgpCQlKVU1QIElORFVTVFJJRUxMRSBDT01QVVRFUlRFQ0hOSUsgR21iSAotMDBFMDRCICAgICAoYmFzZSAxNikJCUpVTVAgSU5EVVNUUklFTExFIENPTVBVVEVSVEVDSE5JSyBHbWJICi0JCQkJCi0JCQkJVkVJTENIRU5HQVNTRSA3Ci0JCQkJRDk0NDY5IERFR0dFTkRPUkYgIAotCQkJCUdFUk1BTlkKLQotMDAtRTAtNEMgICAoaGV4KQkJUkVBTFRFSyBTRU1JQ09ORFVDVE9SIENPUlAuCi0wMEUwNEMgICAgIChiYXNlIDE2KQkJUkVBTFRFSyBTRU1JQ09ORFVDVE9SIENPUlAuCi0JCQkJMUYsIE5PLiAxMSwgSU5EVVNUUlkgRS4gUkQuIElYCi0JCQkJU0NJRU5DRS1CQVNFRCBJTkRVU1RSSUFMIFBBUksKLQkJCQlIU0lOQ0hVIDMwMCAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1FMC00RCAgIChoZXgpCQlJTlRFUk5FVCBJTklUSUFUSVZFIEpBUEFOLCBJTkMKLTAwRTA0RCAgICAgKGJhc2UgMTYpCQlJTlRFUk5FVCBJTklUSUFUSVZFIEpBUEFOLCBJTkMKLQkJCQkxLTQsIFNBTkJBTi1DSE8sIENISVlPREEtS1UKLQkJCQlUT0tZTyAxMDIgCi0JCQkJSkFQQU4KLQotMDAtRTAtNEUgICAoaGV4KQkJU0FOWU8gREVOS0kgQ08uLCBMVEQuCi0wMEUwNEUgICAgIChiYXNlIDE2KQkJU0FOWU8gREVOS0kgQ08uLCBMVEQuCi0JCQkJODEyLTMsIFNoaW1vbm9nb3UsIFVlZGEtU2hpCi0JCQkJTmFnYW5vICAzODYtMTIxMQotCQkJCUpBUEFOCi0KLTAwLUUwLTRGICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTA0RiAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTUwICAgKGhleCkJCUVYRUNVVE9ORSBJTkZPUk1BVElPTiBTWVNURU1TLCBJTkMuCi0wMEUwNTAgICAgIChiYXNlIDE2KQkJRVhFQ1VUT05FIElORk9STUFUSU9OIFNZU1RFTVMsIElOQy4KLQkJCQk0NzggV0hFRUxFUlMgRkFSTVMgUk9BRAotCQkJCU1JTEZPUkQgQ1QgMDY0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTUxICAgKGhleCkJCVRBTFggQ09SUE9SQVRJT04KLTAwRTA1MSAgICAgKGJhc2UgMTYpCQlUQUxYIENPUlBPUkFUSU9OCi0JCQkJMTg1MCBCT1JNQU4gQ09VUlQKLQkJCQlTVC4gTE9VSVMgTU8gNjMxNDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTUyICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0wMEUwNTIgICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMKLQkJCQkxNzQ1IFRlY2hub2xvZ3kgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNTMgICAoaGV4KQkJQ0VMTFBPUlQgTEFCUywgSU5DLgotMDBFMDUzICAgICAoYmFzZSAxNikJCUNFTExQT1JUIExBQlMsIElOQy4KLQkJCQk4ODUgQVJBUEFIT0UgQVZFLiwKLQkJCQlCT1VMREVSIENPIDgwMzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC01NCAgIChoZXgpCQlLT0RBSSBISVRFQyBDTy4sIExURC4KLTAwRTA1NCAgICAgKGJhc2UgMTYpCQlLT0RBSSBISVRFQyBDTy4sIExURC4KLQkJCQkyLTQ1IE9OVU1BIEhBTllVIENJVFkKLQkJCQlTQUlUQU1BLjM0OCAgCi0JCQkJSkFQQU4KLQotMDAtRTAtNTUgICAoaGV4KQkJSU5HRU5JRVJJQSBFTEVDVFJPTklDQSBDT01FUkNJQUwgSU5FTENPTSBTLkEuCi0wMEUwNTUgICAgIChiYXNlIDE2KQkJSU5HRU5JRVJJQSBFTEVDVFJPTklDQSBDT01FUkNJQUwgSU5FTENPTSBTLkEuCi0JCQkJQ0wuIFBJUVVFUiBOTy4zCi0JCQkJMjgwMzMgTUFEUklEICAKLQkJCQlTUEFJTgotCi0wMC1FMC01NiAgIChoZXgpCQlIT0xPTlRFQ0ggQ09SUE9SQVRJT04KLTAwRTA1NiAgICAgKGJhc2UgMTYpCQlIT0xPTlRFQ0ggQ09SUE9SQVRJT04KLQkJCQkyMDM5IFNBTUFSSVRBTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC01NyAgIChoZXgpCQlIQU4gTUlDUk9URUxFQ09NLiBDTy4sIExURC4KLTAwRTA1NyAgICAgKGJhc2UgMTYpCQlIQU4gTUlDUk9URUxFQ09NLiBDTy4sIExURC4KLQkJCQlGQVNISU9OIEJELiwgM1JEIEZSLAotCQkJCTExOTQsIERPT05TQU4gMgotCQkJCURPTkcgU0VPLUdVLCBUQUVKT04gS09SRUEgMzAyLTE3MyAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDAtRTAtNTggICAoaGV4KQkJUEhBU0UgT05FIERFTk1BUksgQS9TCi0wMEUwNTggICAgIChiYXNlIDE2KQkJUEhBU0UgT05FIERFTk1BUksgQS9TCi0JCQkJUk9TS0lMREVWRUogMzkKLQkJCQlESy0yMDAwIEZSRURFUklLU0JFUkcgIAotCQkJCURFTk1BUksKLQotMDAtRTAtNTkgICAoaGV4KQkJQ09OVFJPTExFRCBFTlZJUk9OTUVOVFMsIExURC4KLTAwRTA1OSAgICAgKGJhc2UgMTYpCQlDT05UUk9MTEVEIEVOVklST05NRU5UUywgTFRELgotCQkJCTU5MCBCRVJSWSBTVFJFRVQKLQkJCQlXSU5ORVBFRyBSM0ggT1I5ICAKLQkJCQlDQU5BREEKLQotMDAtRTAtNUEgICAoaGV4KQkJR0FMRUEgTkVUV09SSyBTRUNVUklUWQotMDBFMDVBICAgICAoYmFzZSAxNikJCUdBTEVBIE5FVFdPUksgU0VDVVJJVFkKLQkJCQkyIFBMQUNFIGR1IENPTU1FUkNFIC0gU1RFICMzMjAKLQkJCQlCUk9TU0FSRCwgUVVFQkVDIEo0VyAyVDggIAotCQkJCUNBTkFEQQotCi0wMC1FMC01QiAgIChoZXgpCQlXRVNUIEVORCBTWVNURU1TIENPUlAuCi0wMEUwNUIgICAgIChiYXNlIDE2KQkJV0VTVCBFTkQgU1lTVEVNUyBDT1JQLgotCQkJCTM5IFdJTk5FUidTIENJUkNMRSBEUi4sCi0JCQkJQVJOUFJJT1IsIE9OVEFSSU8gICAgSzdTIDNHOSAgCi0JCQkJQ0FOQURBCi0KLTAwLUUwLTVDICAgKGhleCkJCU1BVFNVU0hJVEEgS09UT0JVS0kgRUxFQ1RST05JQ1MgSU5EVVNUUklFUywgTFRELgotMDBFMDVDICAgICAoYmFzZSAxNikJCU1BVFNVU0hJVEEgS09UT0JVS0kgRUxFQ1RST05JQ1MgSU5EVVNUUklFUywgTFRELgotCQkJCTI0NywgRlVLVVRBS0UgU0FJSk8KLQkJCQlFSElNRSwgNzkzICAKLQkJCQlKQVBBTgotCi0wMC1FMC01RCAgIChoZXgpCQlVTklURUMgQ08uLCBMVEQuCi0wMEUwNUQgICAgIChiYXNlIDE2KQkJVU5JVEVDIENPLiwgTFRELgotCQkJCUtJU09HQVdBLUNITyAgSUNISU5PVE9SSSAyNAotCQkJCUhBR1VSSS1HVU4gQUlDSEkgNDkzICAKLQkJCQlKQVBBTgotCi0wMC1FMC01RSAgIChoZXgpCQlKQVBBTiBBVklBVElPTiBFTEVDVFJPTklDUyBJTkRVU1RSWSwgTFRELgotMDBFMDVFICAgICAoYmFzZSAxNikJCUpBUEFOIEFWSUFUSU9OIEVMRUNUUk9OSUNTIElORFVTVFJZLCBMVEQuCi0JCQkJCi0JCQkJMy0xLTEgTVVTQVNISU5PIEFLSVNISU1BLVNISQotCQkJCVRPS1lPIDE5NiBKQVBBTiAKLQkJCQlKQVBBTgotCi0wMC1FMC01RiAgIChoZXgpCQllLU5ldCwgSW5jLgotMDBFMDVGICAgICAoYmFzZSAxNikJCWUtTmV0LCBJbmMuCi0JCQkJMTIzMjUgSFlNRUFET1cgRFJJVkUKLQkJCQlTVUlURSAjMi0yMDAKLQkJCQlBVVNUSU4gVFggNzg3NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTYwICAgKGhleCkJCVNIRVJXT09ECi0wMEUwNjAgICAgIChiYXNlIDE2KQkJU0hFUldPT0QKLQkJCQkyMTA1NiBGT1JCRVMgU1RSRUVUCi0JCQkJSEFZV0FSRCBDQSA5NDU0NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNjEgICAoaGV4KQkJRWRnZVBvaW50IE5ldHdvcmtzLCBJbmMuCi0wMEUwNjEgICAgIChiYXNlIDE2KQkJRWRnZVBvaW50IE5ldHdvcmtzLCBJbmMuCi0JCQkJMjIzOCBNQVJUSU4gQVZFTlVFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTYyICAgKGhleCkJCUhPU1QgRU5HSU5FRVJJTkcKLTAwRTA2MiAgICAgKGJhc2UgMTYpCQlIT1NUIEVOR0lORUVSSU5HCi0JCQkJMjAwIEVBU1QgTUFJTiBTVFJFRVQgLVNURS4jNzAwCi0JCQkJSk9ITlNPTiBDSVRZIFROIDM3NjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02MyAgIChoZXgpCQlDQUJMRVRST04gLSBZQUdPIFNZU1RFTVMsIElOQy4KLTAwRTA2MyAgICAgKGJhc2UgMTYpCQlDQUJMRVRST04gLSBZQUdPIFNZU1RFTVMsIElOQy4KLQkJCQkzNSBJTkRVU1RSSUFMIFdBWQotCQkJCVAuTy4gQk9YIDUwMDUKLQkJCQlST0NIRVNURVIgTkggMDM4NjYtNTAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNjQgICAoaGV4KQkJU0FNU1VORyBFTEVDVFJPTklDUwotMDBFMDY0ICAgICAoYmFzZSAxNikJCVNBTVNVTkcgRUxFQ1RST05JQ1MKLQkJCQk5OSBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNjUgICAoaGV4KQkJT1BUSUNBTCBBQ0NFU1MgSU5URVJOQVRJT05BTAotMDBFMDY1ICAgICAoYmFzZSAxNikJCU9QVElDQUwgQUNDRVNTIElOVEVSTkFUSU9OQUwKLQkJCQk1MDAgV0VTVCBDVU1NSU5HUyBQTC4gIzM0MDAKLQkJCQlXT0JVUk4gTUEgMDE4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTY2ICAgKGhleCkJCVByb01heCBTeXN0ZW1zLCBJbmMuCi0wMEUwNjYgICAgIChiYXNlIDE2KQkJUHJvTWF4IFN5c3RlbXMsIEluYy4KLQkJCQkxNiBURUNITk9MT0dZIERSSVZFLS1CTERHLiMxMDYKLQkJCQlJUlZJTkUgQ0EgOTI2NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTY3ICAgKGhleCkJCWVhYyBBVVRPTUFUSU9OLUNPTlNVTFRJTkcgR21iSAotMDBFMDY3ICAgICAoYmFzZSAxNikJCWVhYyBBVVRPTUFUSU9OLUNPTlNVTFRJTkcgR21iSAotCQkJCUhFUk1TRE9SRkVSIERBTU0gMjIyCi0JCQkJNzM0NjcgQkVSTElOICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLTY4ICAgKGhleCkJCU1FUlJJTUFDIFNZU1RFTVMgSU5DLgotMDBFMDY4ICAgICAoYmFzZSAxNikJCU1FUlJJTUFDIFNZU1RFTVMgSU5DLgotCQkJCTIxNDQgTUMgQ09ZIFJPQUQKLQkJCQlDQVJST0xMVE9OIFRYIDc1MDA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02OSAgIChoZXgpCQlKQVlDT1IKLTAwRTA2OSAgICAgKGJhc2UgMTYpCQlKQVlDT1IKLQkJCQk5Nzc1IFRPV05FIENFTlRSRSBEUklWRQotCQkJCVNBTiBESUVHTyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNkEgICAoaGV4KQkJS0FQU0NIIEFHCi0wMEUwNkEgICAgIChiYXNlIDE2KQkJS0FQU0NIIEFHCi0JCQkJV0FHRU5TRUlMR0FTU0UgMQotCQkJCTExMjAtVklFTk5BICAKLQkJCQlBVVNUUklBCi0KLTAwLUUwLTZCICAgKGhleCkJCVcmRyBTUEVDSUFMIFBST0RVQ1RTCi0wMEUwNkIgICAgIChiYXNlIDE2KQkJVyZHIFNQRUNJQUwgUFJPRFVDVFMKLQkJCQlTQ0VJTkNFIFBBUksgRUlOREhPVklOIDUwNDkKLQkJCQk1NjkyIEVCIFNPTgotCQkJCU5FVEhFUkxBTkRTCi0KLTAwLUUwLTZDICAgKGhleCkJCUFFUCBTeXN0ZW1zIEludGVybmF0aW9uYWwgTHRkCi0wMEUwNkMgICAgIChiYXNlIDE2KQkJQUVQIFN5c3RlbXMgSW50ZXJuYXRpb25hbCBMdGQKLQkJCQlGb2N1cyAzMSwgV2VzdCBXaW5nCi0JCQkJQ2xldmVsYW5kIFJvYWQKLQkJCQlIZW1lbCBIZW1zdGVhZCBIZXJ0cyBFbmdsYW5kIEhQMiA3QlcKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC02RCAgIChoZXgpCQlDT01QVVdBUkUgQ09SUE9SQVRJT04KLTAwRTA2RCAgICAgKGJhc2UgMTYpCQlDT01QVVdBUkUgQ09SUE9SQVRJT04KLQkJCQlPbmUgQ2FtcHVzIE1hcnRpdXMKLQkJCQlEZXRyb2l0IE1JIDQ4MjI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC02RSAgIChoZXgpCQlGQVIgU1lTVEVNUyBTLnAuQS4KLTAwRTA2RSAgICAgKGJhc2UgMTYpCQlGQVIgU1lTVEVNUyBTLnAuQS4KLQkJCQlWSUEgRi4gWkVOSSA4Ci0JCQkJMzg2OCBST1ZFUkVUTyAoVE4pICAKLQkJCQlJVEFMWQotCi0wMC1FMC02RiAgIChoZXgpCQlNb3Rvcm9sYSwgSW5jLgotMDBFMDZGICAgICAoYmFzZSAxNikJCU1vdG9yb2xhLCBJbmMuCi0JCQkJMjQ1MCBXYWxzaCBBdmUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNzAgICAoaGV4KQkJREggVEVDSE5PTE9HWQotMDBFMDcwICAgICAoYmFzZSAxNikJCURIIFRFQ0hOT0xPR1kKLQkJCQkzMDAzIFJPTExJRSBHQVRFUyBEUklWRQotCQkJCVBBU08gUk9CTEVTIENBIDkzNDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03MSAgIChoZXgpCQlFUElTIE1JQ1JPQ09NUFVURVIKLTAwRTA3MSAgICAgKGJhc2UgMTYpCQlFUElTIE1JQ1JPQ09NUFVURVIKLQkJCQk3MjQ1OCBBTEJTVEFEVAotCQkJCUxBVVRMSU5HRVIgU1RSQVNTRSAxNDcKLQkJCQk3MjQ1OCBBTEJTVEFEVCAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC03MiAgIChoZXgpCQlMWU5LCi0wMEUwNzIgICAgIChiYXNlIDE2KQkJTFlOSwotCQkJCVJBQklOIEJVSUxESU5HCi0JCQkJVEVSQURJT04gSU5EVVNUUklBTCBQQVJLCi0JCQkJRC5OLiBNSVNHQVYgMjAxICAKLQkJCQlJU1JBRUwKLQotMDAtRTAtNzMgICAoaGV4KQkJTkFUSU9OQUwgQU1VU0VNRU5UIE5FVFdPUkssIElOQy4KLTAwRTA3MyAgICAgKGJhc2UgMTYpCQlOQVRJT05BTCBBTVVTRU1FTlQgTkVUV09SSywgSU5DLgotCQkJCTQwMSBOLiBNSUNISUdBTiBBVkVOVUUKLQkJCQlDSElDQUdPIElMIDYwNjExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03NCAgIChoZXgpCQlUSUVSTkFOIENPTU1VTklDQVRJT05TLCBJTkMuCi0wMEUwNzQgICAgIChiYXNlIDE2KQkJVElFUk5BTiBDT01NVU5JQ0FUSU9OUywgSU5DLgotCQkJCTExMDI1IFJPU0VMTEUgU1QuCi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03NSAgIChoZXgpCQlWZXJpbGluayBDb3Jwb3JhdGlvbgotMDBFMDc1ICAgICAoYmFzZSAxNikJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi0JCQkJMTI3IEpldHBsZXggQ2lyY2xlCi0JCQkJTWFkaXNvbiBBTCAzNTc1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtNzYgICAoaGV4KQkJREVWRUxPUE1FTlQgQ09OQ0VQVFMsIElOQy4KLTAwRTA3NiAgICAgKGJhc2UgMTYpCQlERVZFTE9QTUVOVCBDT05DRVBUUywgSU5DLgotCQkJCTEwMDAgTi4gQlJPQUQgU1RSRUVUCi0JCQkJTEFOU0RBTEUgUEEgMTk0NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTc3ICAgKGhleCkJCVdFQkdFQVIsIElOQy4KLTAwRTA3NyAgICAgKGJhc2UgMTYpCQlXRUJHRUFSLCBJTkMuCi0JCQkJMTI2MyBPQUtNRUFEIFBLV1kKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTc4ICAgKGhleCkJCUJFUktFTEVZIE5FVFdPUktTCi0wMEUwNzggICAgIChiYXNlIDE2KQkJQkVSS0VMRVkgTkVUV09SS1MKLQkJCQk2ODMgUklWRVIgT0FLUyBQQVJLV0FZCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTc5ICAgKGhleCkJCUEuVC5OLlIuCi0wMEUwNzkgICAgIChiYXNlIDE2KQkJQS5ULk4uUi4KLQkJCQlCUCA5NjYKLQkJCQk5MTk3NiBDT1VSVEFCT0VVRiAgCi0JCQkJRlJBTkNFCi0KLTAwLUUwLTdBICAgKGhleCkJCU1JS1JPRElEQUtUIEFCCi0wMEUwN0EgICAgIChiYXNlIDE2KQkJTUlLUk9ESURBS1QgQUIKLQkJCQlTa2lmZmVydsOkZ2VuIDQ4Ci0JCQkJTFVORCAgU0UyMjQ3OAotCQkJCVNXRURFTgotCi0wMC1FMC03QiAgIChoZXgpCQlCQVkgTkVUV09SS1MKLTAwRTA3QiAgICAgKGJhc2UgMTYpCQlCQVkgTkVUV09SS1MKLQkJCQkxMjUgTkFHT0cgUEFSSwotCQkJCUFDVE9OIE1BIDAxNzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03QyAgIChoZXgpCQlNRVRUTEVSLVRPTEVETywgSU5DLgotMDBFMDdDICAgICAoYmFzZSAxNikJCU1FVFRMRVItVE9MRURPLCBJTkMuCi0JCQkJMTE1MCBERUFSQk9STiBEUklWRQotCQkJCVdPUlRISU5HVE9OIE9IIDQzMDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03RCAgIChoZXgpCQlORVRST05JWCwgSU5DLgotMDBFMDdEICAgICAoYmFzZSAxNikJCU5FVFJPTklYLCBJTkMuCi0JCQkJMzQwIFRIT1IgUExBQ0UKLQkJCQlCUkVBIENBIDkyODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC03RSAgIChoZXgpCQlXQUxUIERJU05FWSBJTUFHSU5FRVJJTkcKLTAwRTA3RSAgICAgKGJhc2UgMTYpCQlXQUxUIERJU05FWSBJTUFHSU5FRVJJTkcKLQkJCQkxNDAxIEZMT1dFUiBTVC4KLQkJCQlHTEVOREFMRSBDQSA5MTIyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtN0YgICAoaGV4KQkJTE9HSVNUSVNURU0gcy5yLmwuCi0wMEUwN0YgICAgIChiYXNlIDE2KQkJTE9HSVNUSVNURU0gcy5yLmwuCi0JCQkJVklBIFBBTkNJQVRJQ0hJIDk0LzE4Ci0JCQkJNTAxMjcgRklSRU5aRSAgCi0JCQkJSVRBTFkKLQotMDAtRTAtODAgICAoaGV4KQkJQ09OVFJPTCBSRVNPVVJDRVMgQ09SUE9SQVRJT04KLTAwRTA4MCAgICAgKGJhc2UgMTYpCQlDT05UUk9MIFJFU09VUkNFUyBDT1JQT1JBVElPTgotCQkJCTE2LTAwIFBPTExJVFQgRFJJVkUKLQkJCQlGQUlSIExBV04gTkogMDc0MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTgxICAgKGhleCkJCVRZQU4gQ09NUFVURVIgQ09SUC4KLTAwRTA4MSAgICAgKGJhc2UgMTYpCQlUWUFOIENPTVBVVEVSIENPUlAuCi0JCQkJMzI4OCBMQVVSRVZJRVcgQ1QKLQkJCQlGUkVNT05UIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC04MiAgIChoZXgpCQlBTkVSTUEKLTAwRTA4MiAgICAgKGJhc2UgMTYpCQlBTkVSTUEKLQkJCQlTQ0hBQVBTRFJJRVMgMjUKLQkJCQkyMjYwIFdFU1RFUkxPICAKLQkJCQlCRUxHSVVNCi0KLTAwLUUwLTgzICAgKGhleCkJCUpBVE8gVEVDSE5PTE9HSUVTLCBJTkMuCi0wMEUwODMgICAgIChiYXNlIDE2KQkJSkFUTyBURUNITk9MT0dJRVMsIElOQy4KLQkJCQk1MDUgRUFTVCBIVU5UTEFORCBEUi4gU1RFICM1NTAKLQkJCQlBVVNUSU4gVFggNzg3NTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTg0ICAgKGhleCkJCUNPTVBVTElURSBSJkQKLTAwRTA4NCAgICAgKGJhc2UgMTYpCQlDT01QVUxJVEUgUiZECi0JCQkJMyBIQVJPU0hFVCBTVFIuIE5FVyBJTkQuIFpPTkUKLQkJCQlSQU1BVC1IQVNIQVJPTiA0NzI3OSAgCi0JCQkJSVNSQUVMCi0KLTAwLUUwLTg1ICAgKGhleCkJCUdMT0JBTCBNQUlOVEVDSCwgSU5DLgotMDBFMDg1ICAgICAoYmFzZSAxNikJCUdMT0JBTCBNQUlOVEVDSCwgSU5DLgotCQkJCTY0NjggQ0lUWSBXRVNUIFBBUktXQVkKLQkJCQlFREVOIFBSQUlSSUUgTU4gNTUzNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTg2ICAgKGhleCkJCUNZQkVYIENPTVBVVEVSIFBST0RVQ1RTCi0wMEUwODYgICAgIChiYXNlIDE2KQkJQ1lCRVggQ09NUFVURVIgUFJPRFVDVFMKLQkJCQk0OTEyIFJFU0VBUkNIIERSSVZFCi0JCQkJSFVOVFNWSUxMRSBBTCAzNTgwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtODcgICAoaGV4KQkJTGVDcm95IC0gTmV0d29ya2luZyBQcm9kdWN0aW9ucyBEaXZpc2lvbgotMDBFMDg3ICAgICAoYmFzZSAxNikJCUxlQ3JveSAtIE5ldHdvcmtpbmcgUHJvZHVjdGlvbnMgRGl2aXNpb24KLQkJCQkyNSBCVVJMSU5HVE9OIE1BTEwgUk9BRAotCQkJCUJVUkxJTkdUT04gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTg4ICAgKGhleCkJCUxUWCBDT1JQT1JBVElPTgotMDBFMDg4ICAgICAoYmFzZSAxNikJCUxUWCBDT1JQT1JBVElPTgotCQkJCTE0NSBVTklWRVJTSVRZIEFWRU5VRQotCQkJCVdFU1RXT09EIE1BIDAyMDkwLTIzMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTg5ICAgKGhleCkJCUlPTiBOZXR3b3JrcywgSW5jLgotMDBFMDg5ICAgICAoYmFzZSAxNikJCUlPTiBOZXR3b3JrcywgSW5jLgotCQkJCTE1NTEgU291dGggV2FzaGluZ3RvbiBBdmUuCi0JCQkJUGlzY2F0YXdheSBOSiAwODg1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOEEgICAoaGV4KQkJR0VDIEFWRVJZLCBMVEQuCi0wMEUwOEEgICAgIChiYXNlIDE2KQkJR0VDIEFWRVJZLCBMVEQuCi0JCQkJRk9VTkRSWSBMQU5FCi0JCQkJU01FVEhXSUNLLCBXQVJMRVkKLQkJCQlXRVNUIE1JRExBTkRTLCBCNjYgMkxQIEVuZ2xhbmQgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtOEIgICAoaGV4KQkJUUxvZ2ljIENvcnAuCi0wMEUwOEIgICAgIChiYXNlIDE2KQkJUUxvZ2ljIENvcnAuCi0JCQkJMjY2MDAgTGFndW5hIEhpbGxzIERyLgotCQkJCUFsaXNvIFZpZWpvIENBIDkyNjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC04QyAgIChoZXgpCQlORU9QQVJBRElHTSBMQUJTLCBJTkMuCi0wMEUwOEMgICAgIChiYXNlIDE2KQkJTkVPUEFSQURJR00gTEFCUywgSU5DLgotCQkJCTE3MzUgTi4gRklSU1QgU1QuLCAgU1RFICMxMDgKLQkJCQlTQU4gSk9TRSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOEQgICAoaGV4KQkJUFJFU1NVUkUgU1lTVEVNUywgSU5DLgotMDBFMDhEICAgICAoYmFzZSAxNikJCVBSRVNTVVJFIFNZU1RFTVMsIElOQy4KLQkJCQkzNCBSRVNFQVJDSCBEUklWRQotCQkJCUhBTVBUT04gVkEgMjM2NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLThFICAgKGhleCkJCVVUU1RBUkNPTQotMDBFMDhFICAgICAoYmFzZSAxNikJCVVUU1RBUkNPTQotCQkJCTMzIFdPT0QgQVZFLiBTT1VUSAotCQkJCUlTRUxJTiBOSiAwODgzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOEYgICAoaGV4KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotMDBFMDhGICAgICAoYmFzZSAxNikJCUNJU0NPIFNZU1RFTVMsIElOQy4KLQkJCQkxNzAgVy4gVEFTTUFOIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQtMTcwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOTAgICAoaGV4KQkJQkVDS01BTiBMQUIuIEFVVE9NQVRJT04gRElWLgotMDBFMDkwICAgICAoYmFzZSAxNikJCUJFQ0tNQU4gTEFCLiBBVVRPTUFUSU9OIERJVi4KLQkJCQk5MCBCT1JPTElORSBST0FECi0JCQkJQUxMRU5EQUxFIE5KIDA3NDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC05MSAgIChoZXgpCQlMRyBFTEVDVFJPTklDUywgSU5DLgotMDBFMDkxICAgICAoYmFzZSAxNikJCUxHIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJMTYsIFdPT01ZRU9OLURPTkcsCi0JCQkJU0VPQ0hPLUdVLCBTRU9VTCwgMTM3LTE0MCwgIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wMC1FMC05MiAgIChoZXgpCQlBRE1URUsgSU5DT1JQT1JBVEVECi0wMEUwOTIgICAgIChiYXNlIDE2KQkJQURNVEVLIElOQ09SUE9SQVRFRAotCQkJCTE5NjIgWkFOS0VSIFJPQUQKLQkJCQlTQU4gSk9TRSBDQSA5NTExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOTMgICAoaGV4KQkJQUNLRklOIE5FVFdPUktTCi0wMEUwOTMgICAgIChiYXNlIDE2KQkJQUNLRklOIE5FVFdPUktTCi0JCQkJNTc1IE4uIFBBU1RPUklBIEFWRS4KLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTk0ICAgKGhleCkJCU9TQUkgU1JMCi0wMEUwOTQgICAgIChiYXNlIDE2KQkJT1NBSSBTUkwKLQkJCQlWSUEgVE9SSU5PCi0JCQkJNjAzLUlWUkVBIChUTykgIAotCQkJCUlUQUxZCi0KLTAwLUUwLTk1ICAgKGhleCkJCUFEVkFOQ0VELVZJU0lPTiBURUNITk9MR0lFUyBDT1JQLgotMDBFMDk1ICAgICAoYmFzZSAxNikJCUFEVkFOQ0VELVZJU0lPTiBURUNITk9MR0lFUyBDT1JQLgotCQkJCThGLTEsIDg3IFNFQ1RJT04gMywgQ0hVTkcgWUFORyBSRCwKLQkJCQlUdSBDaGVuZyBUYWlwZWkgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1FMC05NiAgIChoZXgpCQlTSElNQURaVSBDT1JQT1JBVElPTgotMDBFMDk2ICAgICAoYmFzZSAxNikJCVNISU1BRFpVIENPUlBPUkFUSU9OCi0JCQkJMSwgTklTSElOT0tZTy1LVVdBQkFSQUNITwotCQkJCU5BS0FHWU8tS1UsIEtZT1RPIDYwNCAgCi0JCQkJSkFQQU4KLQotMDAtRTAtOTcgICAoaGV4KQkJQ0FSUklFUiBBQ0NFU1MgQ09SUE9SQVRJT04KLTAwRTA5NyAgICAgKGJhc2UgMTYpCQlDQVJSSUVSIEFDQ0VTUyBDT1JQT1JBVElPTgotCQkJCTUzOTUgUEVBUkwgUEFSS1dBWQotCQkJCUJPVUxERVIgQ08gODAzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTk4ICAgKGhleCkJCUFib0NvbSBTeXN0ZW1zLCBJbmMuCi0wMEUwOTggICAgIChiYXNlIDE2KQkJQWJvQ29tIFN5c3RlbXMsIEluYy4KLQkJCQkxMkYtMywgTk8uIDMzMywgU0VDLiAxCi0JCQkJR1VBTi1GVSBST0FECi0JCQkJSFNJTi1DSFUgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtOTkgICAoaGV4KQkJU0FNU09OIEFHCi0wMEUwOTkgICAgIChiYXNlIDE2KQkJU0FNU09OIEFHCi0JCQkJV0VJU01VTExFUlNUUi4gMwotCQkJCUQtNjAzMTQgRlJBTktGVVJUICAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLTlBICAgKGhleCkJCVBvc2l0cm9uIEluYy4KLTAwRTA5QSAgICAgKGJhc2UgMTYpCQlQb3NpdHJvbiBJbmMuCi0JCQkJNTEwMSBCdWNoYW4gU3RyZWV0Ci0JCQkJU3VpdGUgMjIwCi0JCQkJTW9udHJlYWwsIFF1ZWJlYyBINFAgMlI5Ci0JCQkJQ0FOQURBCi0KLTAwLUUwLTlCICAgKGhleCkJCUVOR0FHRSBORVRXT1JLUywgSU5DLgotMDBFMDlCICAgICAoYmFzZSAxNikJCUVOR0FHRSBORVRXT1JLUywgSU5DLgotCQkJCTMxNiBOLiBNSUxXQVVLRUUgU1QuLCBTVEUuIzIxNAotCQkJCU1JTFdBVUtFRSBXSSA1MzIwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOUMgICAoaGV4KQkJTUlJCi0wMEUwOUMgICAgIChiYXNlIDE2KQkJTUlJCi0JCQkJTEUgcGFyYyBkdSBNT1VMSU4KLQkJCQkyLCBncmFuZGUgcnVlIFByb2xvbmdlZQotCQkJCUY5NTY1MCBQVUlTRVVYLVBPVE9JU0UgIAotCQkJCUZSQU5DRQotCi0wMC1FMC05RCAgIChoZXgpCQlTQVJOT0ZGIENPUlBPUkFUSU9OCi0wMEUwOUQgICAgIChiYXNlIDE2KQkJU0FSTk9GRiBDT1JQT1JBVElPTgotCQkJCUNOIDUzMDAKLQkJCQlQUklOQ0VUT04gTkogMDg1NDMtNTMwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtOUUgICAoaGV4KQkJUVVBTlRVTSBDT1JQT1JBVElPTgotMDBFMDlFICAgICAoYmFzZSAxNikJCVFVQU5UVU0gQ09SUE9SQVRJT04KLQkJCQk1MDAgTWNDYXJ0aHkgQm91bGV2YXJkCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLTlGICAgKGhleCkJCVBJWEVMIFZJU0lPTgotMDBFMDlGICAgICAoYmFzZSAxNikJCVBJWEVMIFZJU0lPTgotCQkJCTQzIE5BR09HIFBBUksKLQkJCQlBQ1RPTiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQTAgICAoaGV4KQkJV0lMVFJPTiBDTy4KLTAwRTBBMCAgICAgKGJhc2UgMTYpCQlXSUxUUk9OIENPLgotCQkJCTQ5MCBKQVJWSVMgRFJJVkUKLQkJCQlNT1JHQU4gSElMTCBDQSA5NTAzNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQTEgICAoaGV4KQkJSElNQSBQQVVMIEhJTERFQlJBTkRUIEdtYkggQ28uIEtHCi0wMEUwQTEgICAgIChiYXNlIDE2KQkJSElNQSBQQVVMIEhJTERFQlJBTkRUIEdtYkggQ28uIEtHCi0JCQkJCi0JCQkJUE9TVEJPWCAxMjYxCi0JCQkJRC02ODc3NyBCUlVFSEwgTkVBUiBNQU5OSEVJTSAKLQkJCQlHRVJNQU5ZCi0KLTAwLUUwLUEyICAgKGhleCkJCU1JQ1JPU0xBVEUgSU5DLgotMDBFMEEyICAgICAoYmFzZSAxNikJCU1JQ1JPU0xBVEUgSU5DLgotCQkJCTk2MjUgSUdOQUNFIC0gU1RFLiBECi0JCQkJQlJPU1NBUkQgIFFDIEo0WSAyUDMgIAotCQkJCUNBTkFEQQotCi0wMC1FMC1BMyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwQTMgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1BNCAgIChoZXgpCQlFU0FPVEUgUy5wLkEuCi0wMEUwQTQgICAgIChiYXNlIDE2KQkJRVNBT1RFIFMucC5BLgotCQkJCXZpYSBkaSBDQUNJT0xMRSwgMTUKLQkJCQk1MDEyNyBGTE9SRU5DRSAgCi0JCQkJSVRBTFkKLQotMDAtRTAtQTUgICAoaGV4KQkJQ29tQ29yZSBTZW1pY29uZHVjdG9yLCBJbmMuCi0wMEUwQTUgICAgIChiYXNlIDE2KQkJQ29tQ29yZSBTZW1pY29uZHVjdG9yLCBJbmMuCi0JCQkJNDUwNSBMQVMgVklSR0VORVMsIFN1aXRlIDIwMgotCQkJCUNBTEFCQVNBUyBDQSA5MTMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQTYgICAoaGV4KQkJVEVMT0dZIE5FVFdPUktTLCBJTkMuCi0wMEUwQTYgICAgIChiYXNlIDE2KQkJVEVMT0dZIE5FVFdPUktTLCBJTkMuCi0JCQkJMjAyNTAgQ0VOVFVSWSBCTFZELgotCQkJCUdFUk1BTlRPV04gTUQgMjA4NzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUE3ICAgKGhleCkJCUlQQyBJTkZPUk1BVElPTiBTWVNURU1TLCBJTkMuCi0wMEUwQTcgICAgIChiYXNlIDE2KQkJSVBDIElORk9STUFUSU9OIFNZU1RFTVMsIElOQy4KLQkJCQlNRVRSTyBDRU5URVIKLQkJCQlPTkUgU1RBVElPTiBQTEFDRQotCQkJCVNUQU1GT1JEIENUIDA2OTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1BOCAgIChoZXgpCQlTQVQgR21iSCAmIENvLgotMDBFMEE4ICAgICAoYmFzZSAxNikJCVNBVCBHbWJIICYgQ28uCi0JCQkJUlVUSE5FUkdBU1NFIDEKLQkJCQlWSUVOTkEgQS0xMjEwICAKLQkJCQlBVVNUUklBCi0KLTAwLUUwLUE5ICAgKGhleCkJCUZVTkFJIEVMRUNUUklDIENPLiwgTFRELgotMDBFMEE5ICAgICAoYmFzZSAxNikJCUZVTkFJIEVMRUNUUklDIENPLiwgTFRELgotCQkJCTctMSwgTkFLQUdBSVRPIDctQ0hPTUUsIERBSVRPCi0JCQkJT1NBS0EgIDU3NCAgCi0JCQkJSkFQQU4KLQotMDAtRTAtQUEgICAoaGV4KQkJRUxFQ1RST1NPTklDIExURC4KLTAwRTBBQSAgICAgKGJhc2UgMTYpCQlFTEVDVFJPU09OSUMgTFRELgotCQkJCUhBV0xFWSBNSUxMLCBIQVdMRVkgUkQuCi0JCQkJREFSVEZPUkQsIEtFTlQgREEyIDdTWSAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtQUIgICAoaGV4KQkJRElNQVQgUy5BLgotMDBFMEFCICAgICAoYmFzZSAxNikJCURJTUFUIFMuQS4KLQkJCQlDL0JJU0NBSUEgMzgzIDMKLQkJCQkwODAyMyAgQkFSQ0VMT05BICAKLQkJCQlTUEFJTgotCi0wMC1FMC1BQyAgIChoZXgpCQlNSURTQ08sIElOQy4KLTAwRTBBQyAgICAgKGJhc2UgMTYpCQlNSURTQ08sIElOQy4KLQkJCQk3MTAgUk9VVEUgNDYgRUFTVAotCQkJCUZBSVJGSUVMRCBOSiAwNzAwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQUQgICAoaGV4KQkJRUVTIFRFQ0hOT0xPR1ksIExURC4KLTAwRTBBRCAgICAgKGJhc2UgMTYpCQlFRVMgVEVDSE5PTE9HWSwgTFRELgotCQkJCTI1IEVBU1RXQVlTCi0JCQkJV0lUSEFNLCBFU1NFWCwgQ004IDNBTCAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtQUUgICAoaGV4KQkJWEFRVEkgQ09SUE9SQVRJT04KLTAwRTBBRSAgICAgKGJhc2UgMTYpCQlYQVFUSSBDT1JQT1JBVElPTgotCQkJCSAxNjMwIE9BS0xBTkQgUkQuICNBLTIxNAotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1BRiAgIChoZXgpCQlHRU5FUkFMIERZTkFNSUNTIElORk9STUFUSU9OIFNZU1RFTVMKLTAwRTBBRiAgICAgKGJhc2UgMTYpCQlHRU5FUkFMIERZTkFNSUNTIElORk9STUFUSU9OIFNZU1RFTVMKLQkJCQlDT01QVVRJTkcgREVWSUNFUywgTFRELgotCQkJCSAzMTkwIEZBSVJWSUVXIFBBCi0JCQkJRkFMTFMgQ0hVUkNIIFZBIDIyMDQyLTQ1MjMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUIwICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTBCMCAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUIxICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50LCBFbnRlcnByaXNlIEJ1c2luZXNzIEdyb3VwCi0wMEUwQjEgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQsIEVudGVycHJpc2UgQnVzaW5lc3MgR3JvdXAKLQkJCQkyNjgwMSBXZXN0IEFnb3VyYSBSb2FkCi0JCQkJQ2FsYWJhc2FzIENBIDkxMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CMiAgIChoZXgpCQlURUxNQVggQ09NTVVOSUNBVElPTlMgQ09SUC4KLTAwRTBCMiAgICAgKGJhc2UgMTYpCQlURUxNQVggQ09NTVVOSUNBVElPTlMgQ09SUC4KLQkJCQk0NjUxNSBMQU5ESU5HIFBBUktXQVkKLQkJCQlGUkVNT05UIENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CMyAgIChoZXgpCQlFdGhlcldBTiBTeXN0ZW1zLCBJbmMuCi0wMEUwQjMgICAgIChiYXNlIDE2KQkJRXRoZXJXQU4gU3lzdGVtcywgSW5jLgotCQkJCTE0IEhVR0hFUywgIFNURS5CLTEwNQotCQkJCUlSVklORSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQjQgICAoaGV4KQkJVEVDSE5PIFNDT1BFIENPLiwgTFRELgotMDBFMEI0ICAgICAoYmFzZSAxNikJCVRFQ0hOTyBTQ09QRSBDTy4sIExURC4KLQkJCQkxMy02LTcgS0lTSElNQVRJIFVSQVdBU0kKLQkJCQlTQUlUQU1BIDMzNiAgCi0JCQkJSkFQQU4KLQotMDAtRTAtQjUgICAoaGV4KQkJQVJERU5UIENPTU1VTklDQVRJT05TIENPUlAuCi0wMEUwQjUgICAgIChiYXNlIDE2KQkJQVJERU5UIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJMzgwMSBaQU5LRVIgUk9BRCwgIFN1aXRlIEEKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQjYgICAoaGV4KQkJRW50cmFkYSBOZXR3b3JrcwotMDBFMEI2ICAgICAoYmFzZSAxNikJCUVudHJhZGEgTmV0d29ya3MKLQkJCQk5MDIwIEpVTkNUSU9OIERSSVZFCi0JCQkJQU5OQVBPTElTIEpVTkNUSU9OIE1EIDIwNzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CNyAgIChoZXgpCQlQSSBHUk9VUCwgTFRELgotMDBFMEI3ICAgICAoYmFzZSAxNikJCVBJIEdST1VQLCBMVEQuCi0JCQkJTUlMVE9OIEhBTEwsIENIVVJDSCBMQU5FCi0JCQkJTUlMVE9OLCBDQU1CUklER0UgQ0JBIDZBQiAgCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDAtRTAtQjggICAoaGV4KQkJR0FURVdBWSAyMDAwCi0wMEUwQjggICAgIChiYXNlIDE2KQkJR0FURVdBWSAyMDAwCi0JCQkJNjEwIEdBVEVXQVkgRFJJVkUKLQkJCQlOLiBTSU9VWCBDSVRZIFNEIDU3MDQ5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1COSAgIChoZXgpCQlCWUFTIFNZU1RFTVMKLTAwRTBCOSAgICAgKGJhc2UgMTYpCQlCWUFTIFNZU1RFTVMKLQkJCQkyMjUwIE1PTlJPRSBTVFJFRVQsICAjMzcxCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUJBICAgKGhleCkJCUJFUkdIT0YgQVVUT01BVElPTlNURUNITklLIEdtYkgKLTAwRTBCQSAgICAgKGJhc2UgMTYpCQlCRVJHSE9GIEFVVE9NQVRJT05TVEVDSE5JSyBHbWJICi0JCQkJSEFSUkVUIFNUUkFTU0UgMQotCQkJCUQgNzI4MDAgRU5JTkdFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC1CQiAgIChoZXgpCQlOQlggQ09SUE9SQVRJT04KLTAwRTBCQiAgICAgKGJhc2UgMTYpCQlOQlggQ09SUE9SQVRJT04KLQkJCQkxMDAgQlJJQ0tTVE9ORSBTUVVBUkUKLQkJCQlBTkRPVkVSIE1BIDAxODEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CQyAgIChoZXgpCQlTWU1PTiBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBFMEJDICAgICAoYmFzZSAxNikJCVNZTU9OIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTA3MDEgQ09SUE9SQVRFIERSLi1TVEUuICMyOTAKLQkJCQlTVEFGRk9SRCBUWCA3NzQ3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQkQgICAoaGV4KQkJSU5URVJGQUNFIFNZU1RFTVMsIElOQy4KLTAwRTBCRCAgICAgKGJhc2UgMTYpCQlJTlRFUkZBQ0UgU1lTVEVNUywgSU5DLgotCQkJCTU4NTUgSU5URVJGQUNFIERSSVZFCi0JCQkJQU5OIEFSQk9SIE1JIDQ4MTAzLTk1MTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUJFICAgKGhleCkJCUdFTlJPQ08gSU5URVJOQVRJT05BTCwgSU5DLgotMDBFMEJFICAgICAoYmFzZSAxNikJCUdFTlJPQ08gSU5URVJOQVRJT05BTCwgSU5DLgotCQkJCTI1NSBFTkRFUlMgQ09VUlQKLQkJCQlTTElOR0VSIFdJIDUzMDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1CRiAgIChoZXgpCQlUT1JSRU5UIE5FVFdPUktJTkcgVEVDSE5PTE9HSUVTIENPUlAuCi0wMEUwQkYgICAgIChiYXNlIDE2KQkJVE9SUkVOVCBORVRXT1JLSU5HIFRFQ0hOT0xPR0lFUyBDT1JQLgotCQkJCTgxODEgUFJPRkVTU0lPTkFMIFBMQUNFCi0JCQkJU1VJVEUgIzE2MAotCQkJCUxBTkRPVkVSIE1EIDIwNzg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1DMCAgIChoZXgpCQlTRUlXQSBFTEVDVFJJQyBNRkcuIENPLiwgTFRELgotMDBFMEMwICAgICAoYmFzZSAxNikJCVNFSVdBIEVMRUNUUklDIE1GRy4gQ08uLCBMVEQuCi0JCQkJODYgVEFSQURBIFNISU4tSUtFLAotCQkJCUpPWU8sCi0JCQkJS1lPVE8gUFJFRkVDVFVSRSAgCi0JCQkJSkFQQU4KLQotMDAtRTAtQzEgICAoaGV4KQkJTUVNT1JFWCBURUxFWCBKQVBBTiwgTFRELgotMDBFMEMxICAgICAoYmFzZSAxNikJCU1FTU9SRVggVEVMRVggSkFQQU4sIExURC4KLQkJCQlZQUVTVUdVQ0hJIEtBSUtBTiwgMS03LTIwCi0JCQkJWUFFU1UsIENIVU8tS1UKLQkJCQlUT0tZTyAxMDMgIAotCQkJCUpBUEFOCi0KLTAwLUUwLUMyICAgKGhleCkJCU5FQ1NZIFMucC5BLgotMDBFMEMyICAgICAoYmFzZSAxNikJCU5FQ1NZIFMucC5BLgotCQkJCVZJQSBMSVNCT05BIDI4Ci0JCQkJMzUwMjAgUEFET1ZBICAKLQkJCQlJVEFMWQotCi0wMC1FMC1DMyAgIChoZXgpCQlTQUtBSSBTWVNURU0gREVWRUxPUE1FTlQgQ09SUC4KLTAwRTBDMyAgICAgKGJhc2UgMTYpCQlTQUtBSSBTWVNURU0gREVWRUxPUE1FTlQgQ09SUC4KLQkJCQlQT1JUVVMgQ0VOVEVSIEJMRC4sIDQtNDUtMQotCQkJCUVCSVNVSklNQS1DSE8sICBTQUtBSS1DSVRZCi0JCQkJT1NBS0EtRlUsIDU5MCAgCi0JCQkJSkFQQU4KLQotMDAtRTAtQzQgICAoaGV4KQkJSE9STkVSIEVMRUNUUklDLCBJTkMuCi0wMEUwQzQgICAgIChiYXNlIDE2KQkJSE9STkVSIEVMRUNUUklDLCBJTkMuCi0JCQkJMTUyMSBFLiBXQVNISU5HVE9OIFNULgotCQkJCUlORElBTkFQT0xJUyBJTiA0NjIwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQzUgICAoaGV4KQkJQkNPTSBFTEVDVFJPTklDUyBJTkMuCi0wMEUwQzUgICAgIChiYXNlIDE2KQkJQkNPTSBFTEVDVFJPTklDUyBJTkMuCi0JCQkJOCBGTCwgTk8uIDY0LCBBTiBITyBST0FELCBTRUMuIDIKLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtQzYgICAoaGV4KQkJTElOSzJJVCwgTC5MLkMuCi0wMEUwQzYgICAgIChiYXNlIDE2KQkJTElOSzJJVCwgTC5MLkMuCi0JCQkJNDI1NiBCRUNLIEFWRU5VRQotCQkJCVNUVURJTyBDSVRZIENBIDkxNjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1DNyAgIChoZXgpCQlFVVJPVEVDSCBTUkwKLTAwRTBDNyAgICAgKGJhc2UgMTYpCQlFVVJPVEVDSCBTUkwKLQkJCQlWSUEgSkFDT1BPIExJTlVTU0lPIDEKLQkJCQkzMzAzMCBBTUFST08gKFVEKSAgCi0JCQkJSVRBTFkKLQotMDAtRTAtQzggICAoaGV4KQkJVklSVFVBTCBBQ0NFU1MsIExURC4KLTAwRTBDOCAgICAgKGJhc2UgMTYpCQlWSVJUVUFMIEFDQ0VTUywgTFRELgotCQkJCVdPT0RTSURFIEhPVVNFLCBXSU5LRklFTEQsCi0JCQkJV0lORFNPUiwgQkVSS1NISVJFIFNMNCAyRFggRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC1DOSAgIChoZXgpCQlBdXRvbWF0ZWRMb2dpYyBDb3Jwb3JhdGlvbgotMDBFMEM5ICAgICAoYmFzZSAxNikJCUF1dG9tYXRlZExvZ2ljIENvcnBvcmF0aW9uCi0JCQkJMTE1MCBST0JFUlRTIEJPVUxFVkFSRAotCQkJCUtFTk5FU0FXIEdBIDMwMTQ0LTM2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUNBICAgKGhleCkJCUJFU1QgREFUQSBQUk9EVUNUUwotMDBFMENBICAgICAoYmFzZSAxNikJCUJFU1QgREFUQSBQUk9EVUNUUwotCQkJCTIxODAwIE5PUkRIT0ZGIFNUUkVFVAotCQkJCUNIQVRTV09SVEggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUNCICAgKGhleCkJCVJFU09OLCBJTkMuCi0wMEUwQ0IgICAgIChiYXNlIDE2KQkJUkVTT04sIElOQy4KLQkJCQkzMDAgTE9QRVogUk9BRAotCQkJCUdPTEVUQSBDQSA5MzExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQ0MgICAoaGV4KQkJSEVSTyBTWVNURU1TLCBMVEQuCi0wMEUwQ0MgICAgIChiYXNlIDE2KQkJSEVSTyBTWVNURU1TLCBMVEQuCi0JCQkJVEhFIEJBUk5FUywgQ09PTUJFTEFORFMgTEFORSwKLQkJCQlBRERMRVNUT05FLCBXRVlCUklER0UKLQkJCQlTVVJSRVkgS1QxNSAxSFkgRW5nbGFuZCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC1DRCAgIChoZXgpCQlTRU5TSVMgQ09SUE9SQVRJT04KLTAwRTBDRCAgICAgKGJhc2UgMTYpCQlTRU5TSVMgQ09SUE9SQVRJT04KLQkJCQk1NzkzIFdJREVXQVRFUlMgUEFSS1dBWQotCQkJCURFV0lUVCBOWSAxMzIxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtQ0UgICAoaGV4KQkJQVJOCi0wMEUwQ0UgICAgIChiYXNlIDE2KQkJQVJOCi0JCQkJNTEsIFJVRSBHQVNUT04gTEFVUklBVQotCQkJCUYtOTM1MTIgTU9OVFJFVUlMIENFREVYICAKLQkJCQlGUkFOQ0UKLQotMDAtRTAtQ0YgICAoaGV4KQkJSU5URUdSQVRFRCBERVZJQ0UgVEVDSE5PTE9HWSwgSU5DLgotMDBFMENGICAgICAoYmFzZSAxNikJCUlOVEVHUkFURUQgREVWSUNFIFRFQ0hOT0xPR1ksIElOQy4KLQkJCQk2MDI0IFNpbHZlciBDcmVlayBWYWxsZXkgUm9hZAotCQkJCVNhbiBKb3NlIENBIDk1MTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1EMCAgIChoZXgpCQlORVRTUEVFRCwgSU5DLgotMDBFMEQwICAgICAoYmFzZSAxNikJCU5FVFNQRUVELCBJTkMuCi0JCQkJMTIzMDMgVEVDSE5PTE9HWSBCTFZELgotCQkJCUFVU1RJTiBUWCA3ODcyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRDEgICAoaGV4KQkJVEVMU0lTIExJTUlURUQKLTAwRTBEMSAgICAgKGJhc2UgMTYpCQlURUxTSVMgTElNSVRFRAotCQkJCTE2IEJBUk5FUyBXQUxMQUNFIFJPQUQKLQkJCQlGQVJFSEFNLCBIQU1QU0hJUkUgUE8xNSA1VFQgRU5HTEFORCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC1EMiAgIChoZXgpCQlWRVJTQU5FVCBDT01NVU5JQ0FUSU9OUywgSU5DLgotMDBFMEQyICAgICAoYmFzZSAxNikJCVZFUlNBTkVUIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJNjI4IE4uIERJQU1PTkQgQkFSIEJMVkQuCi0JCQkJRElBTU9ORCBCQVIgQ0EgOTE3NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUQzICAgKGhleCkJCURBVEVOVEVDSE5JSyBHbWJICi0wMEUwRDMgICAgIChiYXNlIDE2KQkJREFURU5URUNITklLIEdtYkgKLQkJCQlUSEVSRVNJQU5VTUdBU1NFIDExCi0JCQkJQS0xMDQwIFdJRU4gIAotCQkJCUFVU1RSSUEKLQotMDAtRTAtRDQgICAoaGV4KQkJRVhDRUxMRU5UIENPTVBVVEVSCi0wMEUwRDQgICAgIChiYXNlIDE2KQkJRVhDRUxMRU5UIENPTVBVVEVSCi0JCQkJNTUxLCBNLksuTi4gUk9BRAotCQkJCUFMQU5EVVIsIENIRU5OQUkgNjAwMDE2ICAKLQkJCQlJTkRJQQotCi0wMC1FMC1ENSAgIChoZXgpCQlFbXVsZXggQ29ycG9yYXRpb24KLTAwRTBENSAgICAgKGJhc2UgMTYpCQlFbXVsZXggQ29ycG9yYXRpb24KLQkJCQkzMzMzIFN1c2FuIFN0cmVldAotCQkJCUNvc3RhIE1lc2EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUQ2ICAgKGhleCkJCUNPTVBVVEVSICYgQ09NTVVOSUNBVElPTiBSRVNFQVJDSCBMQUIuCi0wMEUwRDYgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgJiBDT01NVU5JQ0FUSU9OIFJFU0VBUkNIIExBQi4KLQkJCQkKLQkJCQkxOTUgU0VDLjQsIENIVU5HIEhTSU5HIFJECi0JCQkJQ0hVVFVORywgSFNJTkNIVSAgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wMC1FMC1ENyAgIChoZXgpCQlTVU5TSElORSBFTEVDVFJPTklDUywgSU5DLgotMDBFMEQ3ICAgICAoYmFzZSAxNikJCVNVTlNISU5FIEVMRUNUUk9OSUNTLCBJTkMuCi0JCQkJNDY1NjAgRlJFTU9OVCBCTFZELiAtU1RFLiAjMTEzCi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRDggICAoaGV4KQkJTEFOQml0IENvbXB1dGVyLCBJbmMuCi0wMEUwRDggICAgIChiYXNlIDE2KQkJTEFOQml0IENvbXB1dGVyLCBJbmMuCi0JCQkJMTJGLCA1NTIgQ0hVTkcgSFNJQU8gRS4sIFJELgotCQkJCVNFQy4gNSwgVEFJUEVJIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtRDkgICAoaGV4KQkJVEFaTU8gQ08uLCBMVEQuCi0wMEUwRDkgICAgIChiYXNlIDE2KQkJVEFaTU8gQ08uLCBMVEQuCi0JCQkJNjE4NiBLSU5PS08sIElCQVJBLVNISQotCQkJCU9LQVlBTUEgNzE1ICAKLQkJCQlKQVBBTgotCi0wMC1FMC1EQSAgIChoZXgpCQlBbGNhdGVsIE5vcnRoIEFtZXJpY2EgRVNECi0wMEUwREEgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBOb3J0aCBBbWVyaWNhIEVTRAotCQkJCTI2ODAxIFdlc3QgQWdvdXJhIFJvYWQKLQkJCQlDYWxhYmFzYXMgQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLURCICAgKGhleCkJCVZpYVZpZGVvIENvbW11bmljYXRpb25zLCBJbmMuCi0wMEUwREIgICAgIChiYXNlIDE2KQkJVmlhVmlkZW8gQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk4OTAwIFNIT0FMIENSRUVLIEJMVkQuCi0JCQkJQkxERy4gIzMwMAotCQkJCUFVU1RJTiBUWCA3ODc1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtREMgICAoaGV4KQkJTkVYV0FSRSBDT1JQLgotMDBFMERDICAgICAoYmFzZSAxNikJCU5FWFdBUkUgQ09SUC4KLQkJCQk4MjUgU1RFV0FSVCBEUi4sICBTVEUgIzQKLQkJCQlTVU5OWVZBTEUgQ0EgOTQwODYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUREICAgKGhleCkJCVpFTklUSCBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotMDBFMEREICAgICAoYmFzZSAxNikJCVpFTklUSCBFTEVDVFJPTklDUyBDT1JQT1JBVElPTgotCQkJCTEwMDAgTUlMV0FVS0VFIEFWRU5VRQotCQkJCUdMRU5WSUVXIElMIDYwMDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1ERSAgIChoZXgpCQlEQVRBWCBOVgotMDBFMERFICAgICAoYmFzZSAxNikJCURBVEFYIE5WCi0JCQkJUklOR0xBQU4gNTEKLQkJCQlCLTI2MDAgQkVSQ0hFTSAgCi0JCQkJQkVMR0lVTQotCi0wMC1FMC1ERiAgIChoZXgpCQlLRVlNSUxFIEdtYkgKLTAwRTBERiAgICAgKGJhc2UgMTYpCQlLRVlNSUxFIEdtYkgKLQkJCQlXb2hsZW5iZXJnc3RyLiAzCi0JCQkJMzAxNzkgSGFubm92ZXIgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC1FMCAgIChoZXgpCQlTSSBFTEVDVFJPTklDUywgTFRELgotMDBFMEUwICAgICAoYmFzZSAxNikJCVNJIEVMRUNUUk9OSUNTLCBMVEQuCi0JCQkJMjgtMTYsIFNISU1PTUFSVUtPIDItQ0hPTUUsCi0JCQkJVE9LWU8gMTQ2ICAKLQkJCQlKQVBBTgotCi0wMC1FMC1FMSAgIChoZXgpCQlHMiBORVRXT1JLUywgSU5DLgotMDBFMEUxICAgICAoYmFzZSAxNikJCUcyIE5FVFdPUktTLCBJTkMuCi0JCQkJMTQyIFNPLiBTQU5UQSBDUlVaIEFWRS4KLQkJCQlMT1MgR0FUT1MgQ0EgOTUwMzAtNjcwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRTIgICAoaGV4KQkJSU5OT1ZBIENPUlAuCi0wMEUwRTIgICAgIChiYXNlIDE2KQkJSU5OT1ZBIENPUlAuCi0JCQkJMzMyNSBTT1VUSCAxMTZUSCBTVFJFRVQKLQkJCQlTRUFUVExFIFdBIDk4MTY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1FMyAgIChoZXgpCQlTSy1FTEVLVFJPTklLIEdtYkgKLTAwRTBFMyAgICAgKGJhc2UgMTYpCQlTSy1FTEVLVFJPTklLIEdtYkgKLQkJCQlIRU1NRUxSQVRIRVJXRUcgMjAxCi0JCQkJNTEzNzcgTEVWRVJLVVNFTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC1FNCAgIChoZXgpCQlGQU5VQyBST0JPVElDUyBOT1JUSCBBTUVSSUNBLCBJbmMuCi0wMEUwRTQgICAgIChiYXNlIDE2KQkJRkFOVUMgUk9CT1RJQ1MgTk9SVEggQU1FUklDQSwgSW5jLgotCQkJCTM5MDAgVy4gSEFNTElOIFJELgotCQkJCVJPQ0hFU1RFUiBISUxMUyBNSSA0ODMwOS0zMjUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1FNSAgIChoZXgpCQlDSU5DTyBORVRXT1JLUywgSU5DLgotMDBFMEU1ICAgICAoYmFzZSAxNikJCUNJTkNPIE5FVFdPUktTLCBJTkMuCi0JCQkJNjYwMSBLT0xMIENFTlRFUiBQQVJLIFdBWQotCQkJCVNVSVRFICMxNDAKLQkJCQlQTEVBU0FOVE9OIENBIDk0NTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1FNiAgIChoZXgpCQlJTkNBQSBEQVRBQ09NIEIuVi4KLTAwRTBFNiAgICAgKGJhc2UgMTYpCQlJTkNBQSBEQVRBQ09NIEIuVi4KLQkJCQlQLk8uIEJPWCAyMTEKLQkJCQk3MzAwIEFFIEFQRUxET09STiAgCi0JCQkJTkVUSEVSTEFORFMKLQotMDAtRTAtRTcgICAoaGV4KQkJUkFZVEhFT04gRS1TWVNURU1TLCBJTkMuCi0wMEUwRTcgICAgIChiYXNlIDE2KQkJUkFZVEhFT04gRS1TWVNURU1TLCBJTkMuCi0JCQkJMTMwMSBFLiBDT0xMSU5TCi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRTggICAoaGV4KQkJR1JFVEFDT0RFUiBEYXRhIFN5c3RlbXMgQUcKLTAwRTBFOCAgICAgKGJhc2UgMTYpCQlHUkVUQUNPREVSIERhdGEgU3lzdGVtcyBBRwotCQkJCUFMVEhBUkRTVFJBU1NFICAxNTAKLQkJCQlDSC04MTA1IFJFR0VOU0RPUkYgIAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLUUwLUU5ICAgKGhleCkJCURBVEEgTEFCUywgSU5DLgotMDBFMEU5ICAgICAoYmFzZSAxNikJCURBVEEgTEFCUywgSU5DLgotCQkJCTQ0NCBOT1JUSCBGUkVERVJJQ0sgQVZFLgotCQkJCVNVSVRFICMyNDAKLQkJCQlHQUlUSEVSU0JVUkcgTUQgMjA4NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUVBICAgKGhleCkJCUlOTk9WQVQgQ09NTVVOSUNBVElPTlMsIElOQy4KLTAwRTBFQSAgICAgKGJhc2UgMTYpCQlJTk5PVkFUIENPTU1VTklDQVRJT05TLCBJTkMuCi0JCQkJMTI1NyBOLiBQTEFOTyBST0FECi0JCQkJUklDSEFSRFNPTiBUWCA3NTA4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRUIgICAoaGV4KQkJRElHSUNPTSBTWVNURU1TLCBJTkNPUlBPUkFURUQKLTAwRTBFQiAgICAgKGJhc2UgMTYpCQlESUdJQ09NIFNZU1RFTVMsIElOQ09SUE9SQVRFRAotCQkJCTE4OCBUT1BBWiBTVFJFRVQKLQkJCQlNSUxQSVRBUyBDQSA5NTAzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRUMgICAoaGV4KQkJQ0VMRVNUSUNBIElOQy4KLTAwRTBFQyAgICAgKGJhc2UgMTYpCQlDRUxFU1RJQ0EgSU5DLgotCQkJCTg0NCBET04gTUlMTFMgUk9BRAotCQkJCU5PUlRIIFlPUksgIE9OVEFSSU8gTTNDIDFWNyAgCi0JCQkJQ0FOQURBCi0KLTAwLUUwLUVEICAgKGhleCkJCVNJTElDT00sIExURC4KLTAwRTBFRCAgICAgKGJhc2UgMTYpCQlTSUxJQ09NLCBMVEQuCi0JCQkJOCBIQU5BR0VSIFNULgotCQkJCVAuTy4gQk9YIDIxNjQKLQkJCQlLRkFSLVNBVkEgNDQwMDAgIAotCQkJCUlTUkFFTAotCi0wMC1FMC1FRSAgIChoZXgpCQlNQVJFTCBIRgotMDBFMEVFICAgICAoYmFzZSAxNikJCU1BUkVMIEhGCi0JCQkJQXVzdHVyaHJhdW4gOQotCQkJCUdhcmRhYmFlciAgMjEwCi0JCQkJSUNFTEFORAotCi0wMC1FMC1FRiAgIChoZXgpCQlESU9ORVgKLTAwRTBFRiAgICAgKGJhc2UgMTYpCQlESU9ORVgKLQkJCQlQTyBCT1ggMzYwMwotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OC0zNjAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1GMCAgIChoZXgpCQlBQkxFUiBURUNITk9MT0dZLCBJTkMuCi0wMEUwRjAgICAgIChiYXNlIDE2KQkJQUJMRVIgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTRGLCBOTy4gNTQgIFNFQy4gNAotCQkJCU1JTi1TSEVORyBFLiBSRC4KLQkJCQlUQUlQRUkgIAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDAtRTAtRjEgICAoaGV4KQkJVEhBVCBDT1JQT1JBVElPTgotMDBFMEYxICAgICAoYmFzZSAxNikJCVRIQVQgQ09SUE9SQVRJT04KLQkJCQk3MzQgRk9SRVNUIFNUUkVFVAotCQkJCU1BUkxCT1JPVUdIIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1GMiAgIChoZXgpCQlBUkxPVFRPIENPTU5FVCwgSU5DLgotMDBFMEYyICAgICAoYmFzZSAxNikJCUFSTE9UVE8gQ09NTkVULCBJTkMuCi0JCQkJN0YtNCw1NSxUVU5HLUtVQU5HIFJPQUQKLQkJCQlIU0lOLUNIVSwgMzAwICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLUYzICAgKGhleCkJCVdlYlNwcmludCBDb21tdW5pY2F0aW9ucywgSW5jLgotMDBFMEYzICAgICAoYmFzZSAxNikJCVdlYlNwcmludCBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTMwMjYgU0NPVFQgQkxWRC4KLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTAtRjQgICAoaGV4KQkJSU5TSURFIFRlY2hub2xvZ3kgQS9TCi0wMEUwRjQgICAgIChiYXNlIDE2KQkJSU5TSURFIFRlY2hub2xvZ3kgQS9TCi0JCQkJVkVOTElHSEVEU1ZFSiA2Ci0JCQkJREstMjk3MCBIT0VSU0hPTE0gIAotCQkJCURFTk1BUksKLQotMDAtRTAtRjUgICAoaGV4KQkJVEVMRVMgQUcKLTAwRTBGNSAgICAgKGJhc2UgMTYpCQlURUxFUyBBRwotCQkJCURPVkVTVFIuIDItNAotCQkJCTEwNTg3IEJFUkxJTiAgCi0JCQkJR0VSTUFOWQotCi0wMC1FMC1GNiAgIChoZXgpCQlERUNJU0lPTiBFVVJPUEUKLTAwRTBGNiAgICAgKGJhc2UgMTYpCQlERUNJU0lPTiBFVVJPUEUKLQkJCQkzLCBydWUgZGUgTGF0dHJlIGRlIFRhc3NpZ255Ci0JCQkJODUxNzAgU0FJTlQgREVOSVMgTEEgQ0hFVkFTU0UgIAotCQkJCUZSQU5DRQotCi0wMC1FMC1GNyAgIChoZXgpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0wMEUwRjcgICAgIChiYXNlIDE2KQkJQ0lTQ08gU1lTVEVNUywgSU5DLgotCQkJCTE3MCBXLiBUQVNNQU4gRFJJVkUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzNC0xNzA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1GOCAgIChoZXgpCQlESUNOQSBDT05UUk9MIEFCCi0wMEUwRjggICAgIChiYXNlIDE2KQkJRElDTkEgQ09OVFJPTCBBQgotCQkJCVNURU5ZWEVHQVRBTiAyMSBDCi0JCQkJMjEzIDc2IE1BTE1PRSAgCi0JCQkJU1dFREVOCi0KLTAwLUUwLUY5ICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTBGOSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUZBICAgKGhleCkJCVRSTCBURUNITk9MT0dZLCBMVEQuCi0wMEUwRkEgICAgIChiYXNlIDE2KQkJVFJMIFRFQ0hOT0xPR1ksIExURC4KLQkJCQlTSEFOTk9OIFdBWSwgQVNIQ0hVUkNILAotCQkJCVRFV0tFU0JVUlksIEdMT1MuIEdMMjAgOE5EICAKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMC1FMC1GQiAgIChoZXgpCQlMRUlHSFRST05JWCwgSU5DLgotMDBFMEZCICAgICAoYmFzZSAxNikJCUxFSUdIVFJPTklYLCBJTkMuCi0JCQkJMjMzMCBKQVJDTyBEUi4KLQkJCQlIT0xUIE1JIDQ4ODQyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1FMC1GQyAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotMDBFMEZDICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJS0VGQSBST0FELCBTQ0lFTkNFLUJBU0VEIElORFVTVFJJQUwgUEFSSwotCQkJCU5BTlNIQU4gRElTVFJJQ1QsCi0JCQkJU0hFTlpIRU4gNTE4MDU3ICAKLQkJCQlDSElOQQotCi0wMC1FMC1GRCAgIChoZXgpCQlBLVRSRU5EIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0wMEUwRkQgICAgIChiYXNlIDE2KQkJQS1UUkVORCBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTEwRiwgTk8uIDc1LCBIU0lOIFRBSSBXVSBSRC4sCi0JCQkJU0VDLiAxLCBIU0kgQ0hJSCwKLQkJCQlUQUlQRUkgSFNJRU4gMjIxICAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTAwLUUwLUZFICAgKGhleCkJCUNJU0NPIFNZU1RFTVMsIElOQy4KLTAwRTBGRSAgICAgKGJhc2UgMTYpCQlDSVNDTyBTWVNURU1TLCBJTkMuCi0JCQkJMTcwIFcuIFRBU01BTiBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0LTE3MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUwLUZGICAgKGhleCkJCVNFQ1VSSVRZIERZTkFNSUNTIFRFQ0hOT0xPR0lFUywgSW5jLgotMDBFMEZGICAgICAoYmFzZSAxNikJCVNFQ1VSSVRZIERZTkFNSUNTIFRFQ0hOT0xPR0lFUywgSW5jLgotCQkJCTIwIENST1NCWSBEUklWRQotCQkJCUJFREZPUkQgTUEgMDE3MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAwLUUxLTc1ICAgKGhleCkJCUFLLVN5c3RlbXMgTHRkCi0wMEUxNzUgICAgIChiYXNlIDE2KQkJQUstU3lzdGVtcyBMdGQKLQkJCQlvZmYgNjIsIDI3LzI5IFBhdmxvdnNrYXlhIHN0ci4KLQkJCQlNb3Njb3cgIDExNTA5MwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0wMC1FNi1EMyAgIChoZXgpCQlOSVhET1JGIENPTVBVVEVSIENPUlAuCi0wMEU2RDMgICAgIChiYXNlIDE2KQkJTklYRE9SRiBDT01QVVRFUiBDT1JQLgotCQkJCTI1MjAgTUlTU0lPTiBDT0xMRUdFIFJPQUQKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRTgtQUIgICAoaGV4KQkJTWVnZ2l0dCBUcmFpbmluZyBTeXN0ZW1zLCBJbmMuCi0wMEU4QUIgICAgIChiYXNlIDE2KQkJTWVnZ2l0dCBUcmFpbmluZyBTeXN0ZW1zLCBJbmMuCi0JCQkJMjk2IEJyb2dkb24gUmQKLQkJCQlTdXdhbmVlIEdBIDMwMDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMC1GMC01MSAgIChoZXgpCQlLV0IgR21iaAotMDBGMDUxICAgICAoYmFzZSAxNikJCUtXQiBHbWJoCi0JCQkJSW5kdXN0cmllc3RyYd9lIDIzNQotCQkJCVN0LiBNYXJnYXJldGhlbiBTdHlyaWEgODMyMQotCQkJCUFVU1RSSUEKLQotMDAtRjQtQjkgICAoaGV4KQkJQXBwbGUsIEluYy4KLTAwRjRCOSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgaW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDAtRjgtNjAgICAoaGV4KQkJUFQuIFBhbmdndW5nIEVsZWN0cmljIENpdHJhYnVhbmEKLTAwRjg2MCAgICAgKGJhc2UgMTYpCQlQVC4gUGFuZ2d1bmcgRWxlY3RyaWMgQ2l0cmFidWFuYQotCQkJCUpsLiBSYXlhIFdhcnUgbm8uIDEKLQkJCQlTaWRvYXJqbyBKYXdhIFRpbXVyIDYxMjU2Ci0JCQkJSU5ET05FU0lBCi0KLTAwLUZBLTNCICAgKGhleCkJCUNMT09TIEVMRUNUUk9OSUMgR01CSAotMDBGQTNCICAgICAoYmFzZSAxNikJCUNMT09TIEVMRUNUUk9OSUMgR01CSAotCQkJCUphbWJlIGR1Y29tbXVuIDgKLQkJCQlMRSBMT0NMRSAgMjQwMAotCQkJCVNXSVRaRVJMQU5ECi0KLTAwLUZDLTU4ICAgKGhleCkJCVdlYlNpbGljb24gTHRkLgotMDBGQzU4ICAgICAoYmFzZSAxNikJCVdlYlNpbGljb24gTHRkLgotCQkJCTI1LCBIYWJhcnplbCBTdC4sCi0JCQkJVGVsLUF2aXYgIDY5NzEwCi0JCQkJSVNSQUVMCi0KLTAwLUZDLTcwICAgKGhleCkJCUludHJlcGlkIENvbnRyb2wgU3lzdGVtcywgSW5jLgotMDBGQzcwICAgICAoYmFzZSAxNikJCUludHJlcGlkIENvbnRyb2wgU3lzdGVtcywgSW5jLgotCQkJCTMxNjAxIFJlc2VhcmNoIFBhcmsgRHIuCi0JCQkJTWFkaXNvbiBIZWlnaHRzIE1JIDQ4MDcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi0wNy0wMSAgIChoZXgpCQlSQUNBTC1EQVRBQ09NCi0wMjA3MDEgICAgIChiYXNlIDE2KQkJUkFDQUwtREFUQUNPTQotCQkJCUxBTiBJTlRFUk5FVFdPUktJTkcgRElWSVNJT04KLQkJCQkxNTUgU1dBTlNPTiBST0FECi0JCQkJQk9YQk9ST1VHSCBNQSAwMTcxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDItMUMtN0MgICAoaGV4KQkJUEVSUSBTWVNURU1TIENPUlBPUkFUSU9OCi0wMjFDN0MgICAgIChiYXNlIDE2KQkJUEVSUSBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJMjYwMCBMSUJFUlRZIEFWRU5VRQotCQkJCVAuTy4gQk9YIDI2MDAKLQkJCQlQSVRUU0JVUkdIIFBBIDE1MjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi02MC04NiAgIChoZXgpCQlMT0dJQyBSRVBMQUNFTUVOVCBURUNILiBMVEQuCi0wMjYwODYgICAgIChiYXNlIDE2KQkJTE9HSUMgUkVQTEFDRU1FTlQgVEVDSC4gTFRELgotCQkJCTE0IEFSS1dSSUdIVCBST0FECi0JCQkJUkVBRElORyBCRVJLUyBSRzJPTFMKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAyLTYwLThDICAgKGhleCkJCTNDT00gQ09SUE9SQVRJT04KLTAyNjA4QyAgICAgKGJhc2UgMTYpCQkzQ09NIENPUlBPUkFUSU9OCi0JCQkJMjA4MSBOLiBTSE9STElORSBCTFZELgotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTAyLTcwLTAxICAgKGhleCkJCVJBQ0FMLURBVEFDT00KLTAyNzAwMSAgICAgKGJhc2UgMTYpCQlSQUNBTC1EQVRBQ09NCi0JCQkJTEFOIElOVEVSTkVUV09SS0lORyBESVZJU0lPTgotCQkJCTE1NSBTV0FOU09OIFJPQUQKLQkJCQlCT1hCT1JPVUdIIE1BIDAxNzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi03MC1CMCAgIChoZXgpCQlNL0EtQ09NIElOQy4gQ09NUEFOSUVTCi0wMjcwQjAgICAgIChiYXNlIDE2KQkJTS9BLUNPTSBJTkMuIENPTVBBTklFUwotCQkJCTExNzE3IEVYUExPUkFUSU9OIExBTkUKLQkJCQlHRVJNQU5UT1dOIE1EIDIwNzY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi03MC1CMyAgIChoZXgpCQlEQVRBIFJFQ0FMTCBMVEQKLTAyNzBCMyAgICAgKGJhc2UgMTYpCQlEQVRBIFJFQ0FMTCBMVEQKLQkJCQlTT05ERVMgUExBQ0UKLQkJCQlET1JLSU5HIFNVUlJFWSBSSDQgM0VGCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wMi05RC04RSAgIChoZXgpCQlDQVJESUFDIFJFQ09SREVSUyBJTkMuCi0wMjlEOEUgICAgIChiYXNlIDE2KQkJQ0FSRElBQyBSRUNPUkRFUlMgSU5DLgotCQkJCTM0IFNDQVJCT1JPIFJECi0JCQkJTE9ORE9OIE40IDRMIFUKLQkJCQlVTklURUQgS0lOR0RPTQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTAyLUFBLTNDICAgKGhleCkJCU9MSVZFVFRJIFRFTEVDT01NIFNQQSAoT0xURUNPKQotMDJBQTNDICAgICAoYmFzZSAxNikJCU9MSVZFVFRJIFRFTEVDT01NIFNQQSAoT0xURUNPKQotCQkJCTIwMzAwIFNURVZFTlMgIENSRUVLIEJMVkQuCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi1CQi0wMSAgIChoZXgpCQlPQ1RPVEhPUlBFIENPUlAuCi0wMkJCMDEgICAgIChiYXNlIDE2KQkJT0NUT1RIT1JQRSBDT1JQLgotCQkJCTI4NSBXRVNUIEdSRUVOIFNUUkVFVAotCQkJCVBBU0FERU5BIENBIDkxMTA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi1DMC04QyAgIChoZXgpCQkzQ09NIENPUlBPUkFUSU9OCi0wMkMwOEMgICAgIChiYXNlIDE2KQkJM0NPTSBDT1JQT1JBVElPTgotCQkJCTU0MDAgQkFZRlJPTlQgUExBWkEKLQkJCQlQLk8uIEJPWCA1ODE0NQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wMi1DRi0xQyAgIChoZXgpCQlDT01NVU5JQ0FUSU9OIE1BQ0hJTkVSWSBDT1JQLgotMDJDRjFDICAgICAoYmFzZSAxNikJCUNPTU1VTklDQVRJT04gTUFDSElORVJZIENPUlAuCi0JCQkJMTIyNiBBTkFDQVBBCi0JCQkJU0FOVEEgQkFSQkFSQSBDQSA5MzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDItRTYtRDMgICAoaGV4KQkJTklYRE9SRiBDT01QVVRFUiBDT1JQT1JBVElPTgotMDJFNkQzICAgICAoYmFzZSAxNikJCU5JWERPUkYgQ09NUFVURVIgQ09SUE9SQVRJT04KLQkJCQlOSVhET1JGIFRFQ0hOT0xPR1kgQ0VOVEVSCi0JCQkJMjUyMCBNSVNTSU9OIENPTExFR0UgQkxWRAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC0wQS04MyAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudAotMDQwQTgzICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50Ci0JCQkJVmlhIFRyZW50bywgMzAKLQkJCQlWaW1lbnJjYXRlIE1CIDIwNTkKLQkJCQlJVEFMWQotCi0wNC0wQS1FMCAgIChoZXgpCQlYTUlUIEFHIENPTVBVVEVSIE5FVFdPUktTCi0wNDBBRTAgICAgIChiYXNlIDE2KQkJWE1JVCBBRyBDT01QVVRFUiBORVRXT1JLUwotCQkJCTExIEFWRU5VRSBERSBCQVVNRVRURVMKLQkJCQkxMDIwIFJFTkFOUwotCQkJCVNXSVRaRVJMQU5ECi0JCQkJU1dJVFpFUkxBTkQKLQotMDQtMEMtQ0UgICAoaGV4KQkJQXBwbGUsIEluYy4KLTA0MENDRSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgaW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtMEUtQzIgICAoaGV4KQkJVmlld1NvbmljIE1vYmlsZSBDaGluYSBMaW1pdGVkCi0wNDBFQzIgICAgIChiYXNlIDE2KQkJVmlld1NvbmljIE1vYmlsZSBDaGluYSBMaW1pdGVkCi0JCQkJUm9vbSA2MDEsIFRoZSBHYXRlIFRvd2VyIEIsIE5vLjE5LCBaaG9uZ2d1YW5jdW4gU3RyZWV0LCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgwCi0JCQkJQ0hJTkEKLQotMDQtMTgtMEYgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0wNDE4MEYgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTA0LTE4LUI2ICAgKGhleCkJCVBSSVZBVEUKLTA0MThCNiAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMDQtMUQtMTAgICAoaGV4KQkJRHJlYW0gV2FyZSBJbmMuCi0wNDFEMTAgICAgIChiYXNlIDE2KQkJRHJlYW0gV2FyZSBJbmMuCi0JCQkJNS0yMy03IE1hc3VnYXRhLCBUYW1hLWt1LAotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxNC0wMDMyCi0JCQkJSkFQQU4KLQotMDQtMUUtNjQgICAoaGV4KQkJQXBwbGUsIEluYwotMDQxRTY0ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LTIwLTlBICAgKGhleCkJCVBhbmFzb25pYyBBVkMgTmV0d29ya3MgQ29tcGFueQotMDQyMDlBICAgICAoYmFzZSAxNikJCVBhbmFzb25pYyBBVkMgTmV0d29ya3MgQ29tcGFueQotCQkJCTEtMTUgTWF0c3VvLWNobwotCQkJCUthZG9tYSBDaXR5IE9zYWthIDU3MS04NTA0Ci0JCQkJSkFQQU4KLQotMDQtMjItMzQgICAoaGV4KQkJV2lyZWxlc3MgU3RhbmRhcmQgRXh0ZW5zaW9ucwotMDQyMjM0ICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIFN0YW5kYXJkIEV4dGVuc2lvbnMKLQkJCQkxMzIyIENyb3NzbWFuIGF2ZW51ZQotCQkJCVN1bm55dmFsZSBDYWxpZm9ybmlhIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC0yNi0wNSAgIChoZXgpCQlHRlIgR2VzZWxsc2NoYWZ0IGb8ciBSZWdlbHVuZ3N0ZWNobmlrIHVuZCBFbmVyZ2llZWluc3BhcnVuZyBtYkgKLTA0MjYwNSAgICAgKGJhc2UgMTYpCQlHRlIgR2VzZWxsc2NoYWZ0IGb8ciBSZWdlbHVuZ3N0ZWNobmlrIHVuZCBFbmVyZ2llZWluc3BhcnVuZyBtYkgKLQkJCQlLYXBlbGxlbndlZyA0MgotCQkJCVZlcmwgIDMzNDE1Ci0JCQkJR0VSTUFOWQotCi0wNC0yQi1CQiAgIChoZXgpCQlQaWNvQ0VMQSwgSW5jLgotMDQyQkJCICAgICAoYmFzZSAxNikJCVBpY29DRUxBLCBJbmMuCi0JCQkJMy04LTMzLCBNb21vY2hpaGFtYQotCQkJCVNhd2FyYS1rdQotCQkJCUZ1a3Vva2EtY2l0eSBGdWt1b2thIDgxNC0wMDAxCi0JCQkJSkFQQU4KLQotMDQtMkYtNTYgICAoaGV4KQkJQVRPQ1MgKFNoZW56aGVuKSBMVEQKLTA0MkY1NiAgICAgKGJhc2UgMTYpCQlBVE9DUyAoU2hlbnpoZW4pIExURAotCQkJCTQvRi4sIEJ1aWxkaW5nIDEwLCBUb25nZnV5dSBJbmR1c3RyeSBab25lLCAKLQkJCQlTaGVuemhlbiAgCi0JCQkJQ0hJTkEKLQotMDQtMzItRjQgICAoaGV4KQkJUGFydHJvbgotMDQzMkY0ICAgICAoYmFzZSAxNikJCVBhcnRyb24KLQkJCQkyMi02LCBTZW9rd29vLWRvbmcKLQkJCQlId2FzZW9uZy1zaSBHeWVvbmdnaS1kbyA0NDUtMTcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTA0LTM2LTA0ICAgKGhleCkJCUd5ZXlvdW5nIEkmVAotMDQzNjA0ICAgICAoYmFzZSAxNikJCUd5ZXlvdW5nIEkmVAotCQkJCTZGLCBXb29zdW5nIEJsZGcuIDEwMDAtMSwgRGFlY2hpLWRvbmcKLQkJCQlHYW5nbmFtLWd1LAotCQkJCVNlb3VsIDEzNS01MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDQtNDYtNjUgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0wNDQ2NjUgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0JCQkJMS0xMC0xLCBIaWdhc2hpa290YXJpCi0JCQkJTmFnYW9rYWt5by1zaGkgS3lvdG8gNjE3LTg1NTUKLQkJCQlKQVBBTgotCi0wNC00Ri1BQSAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLTA0NEZBQSAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC01NC01MyAgIChoZXgpCQlBcHBsZSwgSW5jLgotMDQ1NDUzICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBjQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtNTUtQ0EgICAoaGV4KQkJQnJpVmlldyAoWGlhbWVuKSBDb3JwLgotMDQ1NUNBICAgICAoYmFzZSAxNikJCUJyaVZpZXcgKFhpYW1lbikgQ29ycC4KLQkJCQlOTy4xOTk4IFdlc3Qgb2YgRmFuZ3NoYW4gUm9hZCxYaWFuZyBBbiBCcmFuY2gsVG9yY2ggSGktdGVjaCBsbmR1c3RyaWFsIERldmVsb3BtZW50IFpvbmUsCi0JCQkJWGlhbWVuIGNpdHkgRnVqaWFuIFByb3ZpbmNlIDM2MTEwMgotCQkJCUNISU5BCi0KLTA0LTVBLTk1ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0wNDVBOTUgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSAgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLTA0LTVDLTA2ICAgKGhleCkJCVptb2RvIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTA0NUMwNiAgICAgKGJhc2UgMTYpCQlabW9kbyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMTQwMSBJbnRlcnN0YXRlIERyCi0JCQkJQ2hhbXBhaWduIElMIDYxODIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC01RC01NiAgIChoZXgpCQljYW10cm9uIGluZHVzdHJpYWwgaW5jLgotMDQ1RDU2ICAgICAoYmFzZSAxNikJCWNhbXRyb24gaW5kdXN0cmlhbCBpbmMuCi0JCQkJNUYsIEt1ZW0tQWggQi9ELCAzMS0zLCBLYXJhay1kb25nLCBTb25ncGEtZ3UKLQkJCQlTZW91bCAgMTM4LTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wNC02Mi1ENyAgIChoZXgpCQlBTFNUT00gSFlEUk8gRlJBTkNFCi0wNDYyRDcgICAgIChiYXNlIDE2KQkJQUxTVE9NIEhZRFJPIEZSQU5DRQotCQkJCTgyIEF2ZW51ZSBMZW9uIEJsdW0KLQkJCQlHUkVOT0JMRSAgMzgwNDEKLQkJCQlGUkFOQ0UKLQotMDQtNjMtRTAgICAoaGV4KQkJTm9tZSBPeQotMDQ2M0UwICAgICAoYmFzZSAxNikJCU5vbWUgT3kKLQkJCQlMdW5raW50aWUgOQotCQkJCU91bHVuc2FsbyBPdWx1biBs5ORuaSA5MDQ2MAotCQkJCUZJTkxBTkQKLQotMDQtNkQtNDIgICAoaGV4KQkJQnJ5c3RvbiBMdGQuCi0wNDZENDIgICAgIChiYXNlIDE2KQkJQnJ5c3RvbiBMdGQuCi0JCQkJUC5PLiBCb3ggMjE3MAotCQkJCTY3NyBOZWFsIERyaXZlCi0JCQkJUGV0ZXJib3JvdWdoIE9udGFyaW8gSzlKICA3WTQKLQkJCQlDQU5BREEKLQotMDQtNzAtQkMgICAoaGV4KQkJR2xvYmFsc3RhciBJbmMuCi0wNDcwQkMgICAgIChiYXNlIDE2KQkJR2xvYmFsc3RhciBJbmMuCi0JCQkJNDYxIFMgTWlscGl0YXMgQmx2ZAotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC03NC1BMSAgIChoZXgpCQlBbGlnZXJhIEVxdWlwYW1lbnRvcyBEaWdpdGFpcyBMdGRhCi0wNDc0QTEgICAgIChiYXNlIDE2KQkJQWxpZ2VyYSBFcXVpcGFtZW50b3MgRGlnaXRhaXMgTHRkYQotCQkJCUF2LiBQYXJhIDMzMCAvIDMwMgotCQkJCVBvcnRvIEFsZWdyZSBSUyA5MDI0MC01OTAKLQkJCQlCUkFaSUwKLQotMDQtNzUtRjUgICAoaGV4KQkJQ1NTVAotMDQ3NUY1ICAgICAoYmFzZSAxNikJCUNTU1QKLQkJCQlCdWlsZGluZyA2LCBDU1NUIGluZHVzdHJpYWwgcGFyaywgVG9uZyBmdXl1IEluZHVzdHJpYWwgem9uZQotCQkJCUd1YW5nbWluIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwNwotCQkJCUNISU5BCi0KLTA0LTc2LTZFICAgKGhleCkJCUFMUFMgQ28sLiBMdGQuCi0wNDc2NkUgICAgIChiYXNlIDE2KQkJQUxQUyBDbywuIEx0ZC4KLQkJCQk2LTMtMzYgRnVydWthd2FuYWthemF0bywKLQkJCQlPc2FraSBNaXlhZ2ktcHJlZiA5ODktNjE4MQotCQkJCUpBUEFOCi0KLTA0LTdELTdCICAgKGhleCkJCVF1YW50YSBDb21wdXRlciBJbmMuCi0wNDdEN0IgICAgIChiYXNlIDE2KQkJUXVhbnRhIENvbXB1dGVyIEluYy4KLQkJCQkyMTEsIFdlbiBId2EgMm5kIFJkLiwgS3VlaSBTaGFuLCBUYW8gWXVhbiwgCi0JCQkJVGFpcGVpICAzMzM3NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDQtODEtQUUgICAoaGV4KQkJQ2xhY2sgQ29ycG9yYXRpb24KLTA0ODFBRSAgICAgKGJhc2UgMTYpCQlDbGFjayBDb3Jwb3JhdGlvbgotCQkJCTQ0NjIgRHVyYWZvcm0gTGFuZQotCQkJCVdpbmRzb3IgV0kgNTM1OTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LTg4LThDICAgKGhleCkJCUVpZmVsd2VyayBCdXRsZXIgU3lzdGVtZSBHbWJICi0wNDg4OEMgICAgIChiYXNlIDE2KQkJRWlmZWx3ZXJrIEJ1dGxlciBTeXN0ZW1lIEdtYkgKLQkJCQlFaWZlbHdlcmtzdHJhc3NlIDEKLQkJCQlNYWxiZXJnd2VpY2ggIDU0NjU1Ci0JCQkJR0VSTUFOWQotCi0wNC04QS0xNSAgIChoZXgpCQlBdmF5YSwgSW5jCi0wNDhBMTUgICAgIChiYXNlIDE2KQkJQXZheWEsIEluYwotCQkJCTIxMSBNb3VudCBBaXJ5IFJvYWQgCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMC0yMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC04Qi00MiAgIChoZXgpCQlTa3NwcnVjZSBUZWNobm9sb2d5IExpbWl0ZWQKLTA0OEI0MiAgICAgKGJhc2UgMTYpCQlTa3NwcnVjZSBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlIYWlkaWFuLCBBbm5pbmd6aHVhbmcgd2VzdCByb2FkICM5Ci0JCQkJYnVpbGRpbmcgMjksIEppbmd0YWlmdWRpIHBsYXphCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMDQtOTQtQTEgICAoaGV4KQkJQ0FUQ0ggVEhFIFdJTkQgSU5DCi0wNDk0QTEgICAgIChiYXNlIDE2KQkJQ0FUQ0ggVEhFIFdJTkQgSU5DCi0JCQkJMTA3ODEgSkFNRVMgUEFZTkUgQ09VUlQKLQkJCQlNQU5BU1NBUyBWQSAyMDExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtOTgtRjMgICAoaGV4KQkJQUxQUyBFbGVjdHJpYyBDbywuIEx0ZC4KLTA0OThGMyAgICAgKGJhc2UgMTYpCQlBTFBTIEVsZWN0cmljIENvLC4gTHRkLgotCQkJCTYtMSBOSVNISURBCi0JCQkJS0FLVURBIE1JWUFHSSBQUkVGIDk4NzYtODUwMQotCQkJCUpBUEFOCi0KLTA0LTlDLTYyICAgKGhleCkJCUJNVCBNZWRpY2FsIFRlY2hub2xvZ3kgcy5yLm8uCi0wNDlDNjIgICAgIChiYXNlIDE2KQkJQk1UIE1lZGljYWwgVGVjaG5vbG9neSBzLnIuby4KLQkJCQlDZWpsIDUwCi0JCQkJQnJubyAgNjU2NjAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0wNC05Ri04MSAgIChoZXgpCQlTaW1lbmEsIExMQwotMDQ5RjgxICAgICAoYmFzZSAxNikJCVNpbWVuYSwgTExDCi0JCQkJNDYwMzAgTWFuZWtpbiBQbGF6YQotCQkJCXN1aXRlIDE1MAotCQkJCVN0ZXJsaW5nIFZpcmdpbmlhIDIwMTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC1BMy1GMyAgIChoZXgpCQlFbWljb24KLTA0QTNGMyAgICAgKGJhc2UgMTYpCQlFbWljb24KLQkJCQlzaGVsa292c2tvZSBzaG9zc2UsIDc3Ci0JCQkJTW9zY293ICAxMDcyNDEKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotMDQtQTgtMkEgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTA0QTgyQSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1ICA5MDIzMAotCQkJCUZJTkxBTkQKLQotMDQtQjMtQjYgICAoaGV4KQkJU2VhbWFwIChVSykgTHRkCi0wNEIzQjYgICAgIChiYXNlIDE2KQkJU2VhbWFwIChVSykgTHRkCi0JCQkJVW5pdCAzNCwgVGhlIE1hbHRpbmdzCi0JCQkJQ2hhcmx0b24gRXN0YXRlCi0JCQkJU2hlcHRvbiBNYWxsZXQgU29tZXJzZXQgQkE0IDVRRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTA0LUI0LTY2ICAgKGhleCkJCUJTUCBDby4sIEx0ZC4KLTA0QjQ2NiAgICAgKGJhc2UgMTYpCQlCU1AgQ28uLCBMdGQuCi0JCQkJMTYyLTEwCi0JCQkJR29uZ2RhbiBEb25nCi0JCQkJR3VtaSBHeWV1bmdzYW5nYnVrIERvIDczMC05MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDQtQzAtNUIgICAoaGV4KQkJVGlnbyBFbmVyZ3kKLTA0QzA1QiAgICAgKGJhc2UgMTYpCQlUaWdvIEVuZXJneQotCQkJCTE3MCBLbm93bGVzIERyCi0JCQkJTG9zIEdhdG9zIENBIDk1MDMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC1DMC02RiAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0wNEMwNkYgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTA0LUMxLUI5ICAgKGhleCkJCUZpYmVyaG9tZSBUZWxlY29tbXVuaWNhdGlvbiBUZWNoLkNvLixMdGQuCi0wNEMxQjkgICAgIChiYXNlIDE2KQkJRmliZXJob21lIFRlbGVjb21tdW5pY2F0aW9uIFRlY2guQ28uLEx0ZC4KLQkJCQlOby41IERvbmdYaW4gUm9hZAotCQkJCUhvbmdzYW4gRGlzdHJpY3QKLQkJCQlXdWhhbiBDaXR5IEh1YmVpIFByb3ZpbmNlIDQzMDA3NAotCQkJCUNISU5BCi0KLTA0LUM1LUE0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTA0QzVBNCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LUM4LTgwICAgKGhleCkJCVNhbXRlYyBJbmMKLTA0Qzg4MCAgICAgKGJhc2UgMTYpCQlTYW10ZWMgSW5jCi0JCQkJNTIwIFBhcmsgRWFzdCBCbHZkCi0JCQkJTmV3IEFsYmFueSBJTiA0NzE1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtQ0UtMTQgICAoaGV4KQkJV2lsb2NpdHkgTFRELgotMDRDRTE0ICAgICAoYmFzZSAxNikJCVdpbG9jaXR5IExURC4KLQkJCQkyMSBCYXJla2V0IFN0LgotCQkJCU5vcnRoIEluZHVzdHJpYWwgUGFyawotCQkJCUNhZXNhcmVhIElzcmFlbCAzODkwMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtRDctODMgICAoaGV4KQkJWSZIIEUmQyBDby4sTFRELgotMDRENzgzICAgICAoYmFzZSAxNikJCVkmSCBFJkMgQ28uLExURC4KLQkJCQkxNTAxIERhZXJ1bmcgVGVjaG5vdG93biAyMjQtNQotCQkJCUd3YW55YW5nLWRvbmcsIERvbmdhbi1rdQotCQkJCUFueWFuZy1jaXR5IEd5ZW9uZ2dpLWRvIDQzMS0wNjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDQtREQtNEMgICAoaGV4KQkJSVBCbGF6ZQotMDRERDRDICAgICAoYmFzZSAxNikJCUlQQmxhemUKLQkJCQlPbGR2ZWplbiA0Ci0JCQkJRnJlZGVuc2JvcmcgREsgMzQ4MAotCQkJCURFTk1BUksKLQotMDQtRTAtQzQgICAoaGV4KQkJVFJJVU1QSC1BRExFUiBBRwotMDRFMEM0ICAgICAoYmFzZSAxNikJCVRSSVVNUEgtQURMRVIgQUcKLQkJCQlIVU5ESU5HU1RSQUJFIDExQgotCQkJCTg1MDAgTlVSTkJVUkcgODAKLQkJCQlHRVJNQU5ZCi0JCQkJR0VSTUFOWQotCi0wNC1FMS1DOCAgIChoZXgpCQlJTVMgU29sdef1ZXMgZW0gRW5lcmdpYSBMdGRhLgotMDRFMUM4ICAgICAoYmFzZSAxNikJCUlNUyBTb2x15/VlcyBlbSBFbmVyZ2lhIEx0ZGEuCi0JCQkJQXYuIEJlcm5hcmRpbm8gU2lsdmVpcmEgUGFzdG9yaXphLCA3MjAKLQkJCQlQb3J0byBBbGVncmUgUlMgOTExNjAtMzEwCi0JCQkJQlJBWklMCi0KLTA0LUUyLUY4ICAgKGhleCkJCUFFUCBzcmwKLTA0RTJGOCAgICAgKGJhc2UgMTYpCQlBRVAgc3JsCi0JCQkJVmlhIGRlaSBDb2xsaSwgMjQwCi0JCQkJU2lnbmEgRmlyZW56ZSA1MDA1OAotCQkJCUlUQUxZCi0KLTA0LUU0LTUxICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi0wNEU0NTEgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA0LUU1LTQ4ICAgKGhleCkJCUNvaGRhIFdpcmVsZXNzIFB0eSBMdGQKLTA0RTU0OCAgICAgKGJhc2UgMTYpCQlDb2hkYSBXaXJlbGVzcyBQdHkgTHRkCi0JCQkJU3VpdGUgNSAvIDgzIEZ1bGxhcnRvbiBSb2FkCi0JCQkJS2VudCBUb3duIFNvdXRoIEF1c3RyYWxpYSA1MDY3Ci0JCQkJQVVTVFJBTElBCi0KLTA0LUU2LTYyICAgKGhleCkJCUFjcm9uYW1lIEluYy4KLTA0RTY2MiAgICAgKGJhc2UgMTYpCQlBY3JvbmFtZSBJbmMuCi0JCQkJNDgyMiBTdGVybGluZyBEcml2ZQotCQkJCUJvdWxkZXIgQ08gODAzMDEtMjM1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtRUUtOTEgICAoaGV4KQkJeC1mYWJyaWMgR21iSAotMDRFRTkxICAgICAoYmFzZSAxNikJCXgtZmFicmljIEdtYkgKLQkJCQlOYWNob2RzdHIuIDcKLQkJCQlCZXJsaW4gIDEwNzc5Ci0JCQkJR0VSTUFOWQotCi0wNC1GMC0yMSAgIChoZXgpCQlDb21wZXggU3lzdGVtcyBQdGUgTHRkCi0wNEYwMjEgICAgIChiYXNlIDE2KQkJQ29tcGV4IFN5c3RlbXMgUHRlIEx0ZAotCQkJCTEzNSBKb28gU2VuZyBSb2FkLCAKLQkJCQkjMDgtMDEgUE0gSW5kdXN0cmlhbCBCdWlsZGluZwotCQkJCTM2ODM2MwotCQkJCVNJTkdBUE9SRQotCi0wNC1GMS03RCAgIChoZXgpCQlUYXJhbmEgV2lyZWxlc3MKLTA0RjE3RCAgICAgKGJhc2UgMTYpCQlUYXJhbmEgV2lyZWxlc3MKLQkJCQkyMTA1IE1hcnRpbiBMdXRoZXIgS2luZyBKciBXYXkKLQkJCQlTdWl0ZSAyMDAKLQkJCQlCZXJrZWxleSBDQSA5NDcwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDQtRjQtQkMgICAoaGV4KQkJWGVuYSBOZXR3b3JrcwotMDRGNEJDICAgICAoYmFzZSAxNikJCVhlbmEgTmV0d29ya3MKLQkJCQlHcmFhYnJvZWRyZXRvcnYgNiwgMy4gc2FsCi0JCQkJS++/vWJlbmhhdm4gRGFubWFyayAxMTU0Ci0JCQkJREVOTUFSSwotCi0wNC1GRS03RiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0wNEZFN0YgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wNC1GRi01MSAgIChoZXgpCQlOT1ZBTUVESUEgSU5OT1ZJU0lPTiBTUC4gWiBPLk8uCi0wNEZGNTEgICAgIChiYXNlIDE2KQkJTk9WQU1FRElBIElOTk9WSVNJT04gU1AuIFogTy5PLgotCQkJCVdPRE5BIDcgCi0JCQkJS0FMSVNaIFdJRUxLT1BPTFNLQSA2Mi04MDAKLQkJCQlQT0xBTkQKLQotMDgtMDAtMDEgICAoaGV4KQkJQ09NUFVURVJWSVNJT04gQ09SUE9SQVRJT04KLTA4MDAwMSAgICAgKGJhc2UgMTYpCQlDT01QVVRFUlZJU0lPTiBDT1JQT1JBVElPTgotCQkJCTE0IENST1NCWSBEUklWRSBNUyA1LTEKLQkJCQlCRURGT1JEIE1BIDAxNzMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wMiAgIChoZXgpCQlCUklER0UgQ09NTVVOSUNBVElPTlMgSU5DLgotMDgwMDAyICAgICAoYmFzZSAxNikJCUJSSURHRSBDT01NVU5JQ0FUSU9OUyBJTkMuCi0JCQkJMjA4MSBTVElFUkxJTkcgUk9BRAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTAzICAgKGhleCkJCUFEVkFOQ0VEIENPTVBVVEVSIENPTU0uCi0wODAwMDMgICAgIChiYXNlIDE2KQkJQURWQU5DRUQgQ09NUFVURVIgQ09NTS4KLQkJCQk3MjAgU0FOVEEgQkFSQkFSQSBTVC4KLQkJCQlTQU5UQSBCQVJCQVJBIENBIDkzMTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wNCAgIChoZXgpCQlDUk9NRU1DTyBJTkNPUlBPUkFURUQKLTA4MDAwNCAgICAgKGJhc2UgMTYpCQlDUk9NRU1DTyBJTkNPUlBPUkFURUQKLQkJCQkyODAgQkVSTkFSRE8gQVZFTlVFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMDUgICAoaGV4KQkJU1lNQk9MSUNTIElOQy4KLTA4MDAwNSAgICAgKGJhc2UgMTYpCQlTWU1CT0xJQ1MgSU5DLgotCQkJCTI1NyBWQVNTQVIgU1RSRUVUCi0JCQkJQ0FNQlJJREdFIE1BIDAyMTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wNiAgIChoZXgpCQlTSUVNRU5TIEFHCi0wODAwMDYgICAgIChiYXNlIDE2KQkJU0lFTUVOUyBBRwotCQkJCVNpZW1lbnMgSVQgU29sdXRpb25zIGFuZCBTZXJ2aWNlcywgU0lTIEdPIFFNIE8KLQkJCQlTaWVtZW5zc3RyYXNzZSAyLTQKLQkJCQlQT0IgMjM1MyBGdWVydGggOTA3MTMKLQkJCQlHRVJNQU5ZCi0KLTA4LTAwLTA3ICAgKGhleCkJCUFQUExFIENPTVBVVEVSIElOQy4KLTA4MDAwNyAgICAgKGJhc2UgMTYpCQlBUFBMRSBDT01QVVRFUiBJTkMuCi0JCQkJMjA2NTAgVkFMTEVZIEdSRUVOIERSSVZFCi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wOCAgIChoZXgpCQlCT0xUIEJFUkFORUsgQU5EIE5FV01BTiBJTkMuCi0wODAwMDggICAgIChiYXNlIDE2KQkJQk9MVCBCRVJBTkVLIEFORCBORVdNQU4gSU5DLgotCQkJCTcwIEZBV0NFVFQgU1RSRUVUCi0JCQkJQ0FNQlJJREdFIE1BIDAyMTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wOSAgIChoZXgpCQlIRVdMRVRUIFBBQ0tBUkQKLTA4MDAwOSAgICAgKGJhc2UgMTYpCQlIRVdMRVRUIFBBQ0tBUkQKLQkJCQlFTlRFUlBSSVNFIFNZU1RFTVMgVEVDSC5DRU5URVIKLQkJCQkxMTAwMCBXT0xGRSBST0FECi0JCQkJQ1VQRVJUSU5PIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wQSAgIChoZXgpCQlORVNUQVIgU1lTVEVNUyBJTkNPUlBPUkFURUQKLTA4MDAwQSAgICAgKGJhc2UgMTYpCQlORVNUQVIgU1lTVEVNUyBJTkNPUlBPUkFURUQKLQkJCQkyNTg1IEVBU1QgQkFZU0hPUkUgUk9BRAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMEIgICAoaGV4KQkJVU5JU1lTIENPUlBPUkFUSU9OCi0wODAwMEIgICAgIChiYXNlIDE2KQkJVU5JU1lTIENPUlBPUkFUSU9OCi0JCQkJVE9XTlNISVAgTElORSBST0FECi0JCQkJQkxVRSBCRUxMIFBBIDE5NDI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wQyAgIChoZXgpCQlNSUtMWU4gREVWRUxPUE1FTlQgQ08uCi0wODAwMEMgICAgIChiYXNlIDE2KQkJTUlLTFlOIERFVkVMT1BNRU5UIENPLgotCQkJCTM2MTMgQU5ET1ZFUiBESVZFCi0JCQkJQkVERk9SRCBUWCA3NjAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMEQgICAoaGV4KQkJSU5URVJOQVRJT05BTCBDT01QVVRFUlMgTFRELgotMDgwMDBEICAgICAoYmFzZSAxNikJCUlOVEVSTkFUSU9OQUwgQ09NUFVURVJTIExURC4KLQkJCQlXRU5MT0NLIFdBWQotCQkJCVdFU1QgR09SVE9OIE1BTkNIRVNURVIsICBNMTIgIDVEUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtMEUgICAoaGV4KQkJTkNSIENPUlBPUkFUSU9OCi0wODAwMEUgICAgIChiYXNlIDE2KQkJTkNSIENPUlBPUkFUSU9OCi0JCQkJV09STEQgSEVBRFFVQVJURVJTCi0JCQkJREFZVE9OIE9IIDQ1NDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0wRiAgIChoZXgpCQlNSVRFTCBDT1JQT1JBVElPTgotMDgwMDBGICAgICAoYmFzZSAxNikJCU1JVEVMIENPUlBPUkFUSU9OCi0JCQkJMzUwIExFR0dFVCBEUklWRQotCQkJCVAuTy4gQk9YIDEzMDg5IEtBTkFUQSBPTlRBUklPCi0JCQkJQ0FOQURBIEsySyAxWDMKLQkJCQlDQU5BREEKLQotMDgtMDAtMTEgICAoaGV4KQkJVEVLVFJPTklYIElOQy4KLTA4MDAxMSAgICAgKGJhc2UgMTYpCQlURUtUUk9OSVggSU5DLgotCQkJCVRFQ0hOSUNBTCBTVEFOREFSRFMKLQkJCQkxMzk3NSBTVyBLQVJMIEJSQVVOIERSSVZFIFBPIEJPWCA1MDAsICBNCi0JCQkJQkVBVkVSVE9OIE9SIDk3MDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0xMiAgIChoZXgpCQlCRUxMIEFUTEFOVElDIElOVEVHUkFURUQgU1lTVC4KLTA4MDAxMiAgICAgKGJhc2UgMTYpCQlCRUxMIEFUTEFOVElDIElOVEVHUkFURUQgU1lTVC4KLQkJCQk0MCBUQUxMIFBJTkUgRFJJVkUKLQkJCQlTVURCVVJZIE1BIDAxNzc2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0xMyAgIChoZXgpCQlFWFhPTgotMDgwMDEzICAgICAoYmFzZSAxNikJCUVYWE9OCi0JCQkJCi0KLTA4LTAwLTE0ICAgKGhleCkJCUVYQ0VMQU4KLTA4MDAxNCAgICAgKGJhc2UgMTYpCQlFWENFTEFOCi0JCQkJMTU5OSBGTElDS0lOR0VSIEFWRU5VRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0xNSAgIChoZXgpCQlTVEMgQlVTSU5FU1MgU1lTVEVNUwotMDgwMDE1ICAgICAoYmFzZSAxNikJCVNUQyBCVVNJTkVTUyBTWVNURU1TCi0JCQkJSE9MQlJPT0sgSE9VU0UKLQkJCQlDT0NLRk9TVEVSUyBST0FEIENPQ0tGT1NURVJTIEhFUlRTIEVONCBPCi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC0xNiAgIChoZXgpCQlCQVJSSVNURVIgSU5GTyBTWVMgQ09SUAotMDgwMDE2ICAgICAoYmFzZSAxNikJCUJBUlJJU1RFUiBJTkZPIFNZUyBDT1JQCi0JCQkJT05FIFRFQ0hOT0xPR1kgQ0VOVEVSCi0JCQkJNDUgT0FLIFNUUkVFVAotCQkJCUJVRkZBTE8gTlkgMTQyMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTE3ICAgKGhleCkJCU5BVElPTkFMIFNFTUlDT05EVUNUT1IKLTA4MDAxNyAgICAgKGJhc2UgMTYpCQlOQVRJT05BTCBTRU1JQ09ORFVDVE9SCi0JCQkJMjkwMCBTRU1JQ09ORFVDVE9SIERSSVZFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTE4ICAgKGhleCkJCVBJUkVMTEkgRk9DT00gTkVUV09SS1MKLTA4MDAxOCAgICAgKGJhc2UgMTYpCQlQSVJFTExJIEZPQ09NIE5FVFdPUktTCi0JCQkJREVOVE9OIERSSVZFCi0JCQkJTk9SVEhXSUNIIENIRVNISVJFICAgICAgQ1c5IDdMVQotCQkJCUVOR0xBTkQKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC0xOSAgIChoZXgpCQlHRU5FUkFMIEVMRUNUUklDIENPUlBPUkFUSU9OCi0wODAwMTkgICAgIChiYXNlIDE2KQkJR0VORVJBTCBFTEVDVFJJQyBDT1JQT1JBVElPTgotCQkJCTEyODUgQk9TVE9OIEFWRU5VRQotCQkJCUJSSURHRVBPUlQgQ1QgMDY2MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTFBICAgKGhleCkJCVRJQVJBLyAxME5FVAotMDgwMDFBICAgICAoYmFzZSAxNikJCVRJQVJBLyAxME5FVAotCQkJCTc3NzcgV0FTSElOR1RPTiBWSUxMQUdFIERSSVZFCi0JCQkJU1VJVEUgMjAwCi0JCQkJREFZVE9OIE9ISU8gNDU0NTktMzk1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMUIgICAoaGV4KQkJRU1DIENvcnBvcmF0aW9uCi0wODAwMUIgICAgIChiYXNlIDE2KQkJRU1DIENvcnBvcmF0aW9uCi0JCQkJMTc2IFNvdXRoIFN0cmVldAotCQkJCUhvcGtpbnRvbiBNQSAwMTc0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMUMgICAoaGV4KQkJS0RELUtPS1VTQUkgREVCTlNJTiBERU5XQSBDTy4KLTA4MDAxQyAgICAgKGJhc2UgMTYpCQlLREQtS09LVVNBSSBERUJOU0lOIERFTldBIENPLgotCQkJCUZVSkkgWEVST1ggQ08uLCBMVEQuIFRFTEVHUkFQSAotCQkJCU5PLiAzLTUsIEFLQVNBS0EgMy1DSE9NRSBNSU5BVE8tS1UsIFRPS1kKLQkJCQkxMDcgSkFQQU4KLQkJCQlKQVBBTgotCi0wOC0wMC0xRCAgIChoZXgpCQlBQkxFIENPTU1VTklDQVRJT05TIElOQy4KLTA4MDAxRCAgICAgKGJhc2UgMTYpCQlBQkxFIENPTU1VTklDQVRJT05TIElOQy4KLQkJCQkxNzg5MSBDQVJUV1JJR0hUIFJPQUQKLQkJCQlJUlZJTkUgQ0EgOTI3MTQtNjIxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMUUgICAoaGV4KQkJQVBPTExPIENPTVBVVEVSIElOQy4KLTA4MDAxRSAgICAgKGJhc2UgMTYpCQlBUE9MTE8gQ09NUFVURVIgSU5DLgotCQkJCTE1IEVMSVpBQkVUSCBEUklWRQotCQkJCUNIRUxNU0ZPUkQgTUEgMDE4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTFGICAgKGhleCkJCVNIQVJQIENPUlBPUkFUSU9OCi0wODAwMUYgICAgIChiYXNlIDE2KQkJU0hBUlAgQ09SUE9SQVRJT04KLQkJCQlFTkdJTkVFUklORyBERVBBUlRNRU5UIDYKLQkJCQk0OTIgTUlOT1NITy1DSE8gWUFNQVRPS09PUklZTUEtU0hJLAotCQkJCU5BUkEgNjM5LTExIEpBUEFOCi0JCQkJSkFQQU4KLQotMDgtMDAtMjAgICAoaGV4KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0wODAwMjAgICAgIChiYXNlIDE2KQkJT3JhY2xlIENvcnBvcmF0aW9uCi0JCQkJMTcgTmV0d29yayBDaXJjbGUKLQkJCQlCdWlsZGluZyAxNywgVU1QSzE3LTEzMQotCQkJCU1lbmxvIFBhcmsgQ0EgOTUwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTIxICAgKGhleCkJCTNNIENPTVBBTlkKLTA4MDAyMSAgICAgKGJhc2UgMTYpCQkzTSBDT01QQU5ZCi0JCQkJVGVsZWNvbSBEaXZpc2lvbgotCQkJCTY4MDEgUml2ZXIgUGxhY2UgQm91bGV2YXJkCi0JCQkJQXVzdGluIFRYIDc4NzI2LTkwMDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTIyICAgKGhleCkJCU5CSSBJTkMuCi0wODAwMjIgICAgIChiYXNlIDE2KQkJTkJJIElOQy4KLQkJCQkzNDUwIE1JVENIRUxMIExBTkUKLQkJCQlQLk8uIEJPWCA5MDAxCi0JCQkJQk9VTERFUiBDTyA4MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMjMgICAoaGV4KQkJUGFuYXNvbmljIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotMDgwMDIzICAgICAoYmFzZSAxNikJCVBhbmFzb25pYyBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLQkJCQk0LTEtNjIgTWlub3NoaW1hIEhha2F0YSBGdWt1b2thCi0JCQkJODEyLTg1MzEKLQkJCQlKQVBBTgotCi0wOC0wMC0yNCAgIChoZXgpCQkxME5FVCBDT01NVU5JQ0FUSU9OUy9EQ0EKLTA4MDAyNCAgICAgKGJhc2UgMTYpCQkxME5FVCBDT01NVU5JQ0FUSU9OUy9EQ0EKLQkJCQk3Nzc3IFdBU0hJTkdUT04gVklMTEFHRSBEUi4KLQkJCQlTVUlURSAyMDAKLQkJCQlEQVlUT04gT0ggNDU0NTktMzk1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMjUgICAoaGV4KQkJQ09OVFJPTCBEQVRBCi0wODAwMjUgICAgIChiYXNlIDE2KQkJQ09OVFJPTCBEQVRBCi0JCQkJNDIwMSBMRVhJTkdUT04gQVZFIE5PUlRICi0JCQkJQVJERU4gSElMTFMgTU4gNTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTI2ICAgKGhleCkJCU5PUlNLIERBVEEgQS5TLgotMDgwMDI2ICAgICAoYmFzZSAxNikJCU5PUlNLIERBVEEgQS5TLgotCQkJCVAuTy4gQk9YIDI1IEJPR0VSVUQKLQkJCQlPU0xPIDYKLQkJCQlOT1JXQVkKLQkJCQlOT1JXQVkKLQotMDgtMDAtMjcgICAoaGV4KQkJQ0FETVVTIENPTVBVVEVSIFNZU1RFTVMKLTA4MDAyNyAgICAgKGJhc2UgMTYpCQlDQURNVVMgQ09NUFVURVIgU1lTVEVNUwotCQkJCTYwMCBTVUZGT0xLIFNUCi0JCQkJTE9XRUxMIE1BIDA4MTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0yOCAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMDgwMDI4ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJTS9TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTI5ICAgKGhleCkJCU1FR0FURUsgQ09SUE9SQVRJT04KLTA4MDAyOSAgICAgKGJhc2UgMTYpCQlNRUdBVEVLIENPUlBPUkFUSU9OCi0JCQkJOTY0NSBTQ1JBTlRPTiBST0FECi0JCQkJU0FOIERJRUdPIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0yQSAgIChoZXgpCQlNT1NBSUMgVEVDSE5PTE9HSUVTIElOQy4KLTA4MDAyQSAgICAgKGJhc2UgMTYpCQlNT1NBSUMgVEVDSE5PTE9HSUVTIElOQy4KLQkJCQk0NyBNQU5OSU5HIFJPQUQKLQkJCQlCSUxMRVJJQ0EgTUEgMDE4MjEtMzk3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMkIgICAoaGV4KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLTA4MDAyQiAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotCQkJCUxLRyAxLTIvQTE5Ci0JCQkJNTUwIEtJTkcgU1RSRUVUCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwLTEyODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTJDICAgKGhleCkJCUJSSVRUT04gTEVFIElOQy4KLTA4MDAyQyAgICAgKGJhc2UgMTYpCQlCUklUVE9OIExFRSBJTkMuCi0JCQkJMTQ2MDAgV0lOQ0hFU1RFUiBCTFZECi0JCQkJTE9TIEdBVE9TIENBIDk1MDMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0yRCAgIChoZXgpCQlMQU4tVEVDIElOQy4KLTA4MDAyRCAgICAgKGJhc2UgMTYpCQlMQU4tVEVDIElOQy4KLQkJCQkyMTMxIFVOSVZFUlNJVFkgQVZFTlVFCi0JCQkJQkVSS0VMRVkgQ0EgOTQ3MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTJFICAgKGhleCkJCU1FVEFQSE9SIENPTVBVVEVSIFNZU1RFTVMKLTA4MDAyRSAgICAgKGJhc2UgMTYpCQlNRVRBUEhPUiBDT01QVVRFUiBTWVNURU1TCi0JCQkJMjUwMCBHQVJDSUEgQVZFTlVFCi0JCQkJTU9VTlRBSU4gVklFVyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMkYgICAoaGV4KQkJUFJJTUUgQ09NUFVURVIgSU5DLgotMDgwMDJGICAgICAoYmFzZSAxNikJCVBSSU1FIENPTVBVVEVSIElOQy4KLQkJCQkxMDAgQ1JPU0JZIERSSVZFCi0JCQkJQkVERk9SRCBNQSAwMTczMC0xNDAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0zMCAgIChoZXgpCQlORVRXT1JLIFJFU0VBUkNIIENPUlBPUkFUSU9OCi0wODAwMzAgICAgIChiYXNlIDE2KQkJTkVUV09SSyBSRVNFQVJDSCBDT1JQT1JBVElPTgotCQkJCTIzODAgTi4gUk9TRSBBVkVOVUUKLQkJCQlPWE5BUkQgQ0EgOTMwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTMwICAgKGhleCkJCUNFUk4KLTA4MDAzMCAgICAgKGJhc2UgMTYpCQlDRVJOCi0JCQkJQ0gtMTIxMSBHRU5FVkUgMjMKLQkJCQlTVUlTU0UvU1dJVFoKLQkJCQlTV0lUWkVSTEFORAotCi0wOC0wMC0zMCAgIChoZXgpCQlST1lBTCBNRUxCT1VSTkUgSU5TVCBPRiBURUNICi0wODAwMzAgICAgIChiYXNlIDE2KQkJUk9ZQUwgTUVMQk9VUk5FIElOU1QgT0YgVEVDSAotCQkJCUdQTyBCT1ggMjQ3NlYKLQkJCQlNRUxCT1VSTkUgVklDIDMwMDEKLQkJCQlBVVNUUkFMSUEKLQotMDgtMDAtMzEgICAoaGV4KQkJTElUVExFIE1BQ0hJTkVTIElOQy4KLTA4MDAzMSAgICAgKGJhc2UgMTYpCQlMSVRUTEUgTUFDSElORVMgSU5DLgotCQkJCTQxNDEgSlVUTEFORCBEUklWRQotCQkJCVNBTiBESUVHTyBDQSA5MjExNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMzIgICAoaGV4KQkJVElHQU4gSU5DT1JQT1JBVEVECi0wODAwMzIgICAgIChiYXNlIDE2KQkJVElHQU4gSU5DT1JQT1JBVEVECi0JCQkJNDAyMCBGQUJJQU4gV0FZCi0JCQkJU1VJVEUgRAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMzMgICAoaGV4KQkJQkFVU0NIICYgTE9NQgotMDgwMDMzICAgICAoYmFzZSAxNikJCUJBVVNDSCAmIExPTUIKLQkJCQlJTlRFUkFDVElWRSBHUkFQSElDUyBESVZJU0lPTgotCQkJCVAuTy4gQk9YIDE0NTQ3Ci0JCQkJQVVTSVROIFRYIDc4NjcxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0zNCAgIChoZXgpCQlGSUxFTkVUIENPUlBPUkFUSU9OCi0wODAwMzQgICAgIChiYXNlIDE2KQkJRklMRU5FVCBDT1JQT1JBVElPTgotCQkJCTE1NzUgQ09SUE9SQVRFIERSSVZFCi0JCQkJQ09TVEEgTUVTQSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMzUgICAoaGV4KQkJTUlDUk9GSVZFIENPUlBPUkFUSU9OCi0wODAwMzUgICAgIChiYXNlIDE2KQkJTUlDUk9GSVZFIENPUlBPUkFUSU9OCi0JCQkJMzU2MCBIWUxBTkQgQVZFTlVFCi0JCQkJUC5PLiBCT1ggNTAxMQotCQkJCUNPU1RBIE1FU0EgQ0EgOTI2MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTM2ICAgKGhleCkJCUlOVEVSR1JBUEggQ09SUE9SQVRJT04KLTA4MDAzNiAgICAgKGJhc2UgMTYpCQlJTlRFUkdSQVBIIENPUlBPUkFUSU9OCi0JCQkJT05FIE1BRElTT04gSU5EVVNUUklBTCBQQVJLCi0JCQkJSFVOVFNWSUxMRSBBTCAzNTgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtMzcgICAoaGV4KQkJRlVKSS1YRVJPWCBDTy4gTFRELgotMDgwMDM3ICAgICAoYmFzZSAxNikJCUZVSkktWEVST1ggQ08uIExURC4KLQkJCQlBRFZBTkNFRCBURUNIICYgRU5HJ0cgQ0VOVEVSCi0JCQkJOS01MCBDSFVPIDItQ0hPTUUsIEVCSU5BLVNISSBLQU5BR0FXQSAyNAotCQkJCUpBUEFOCi0JCQkJSkFQQU4KLQotMDgtMDAtMzggICAoaGV4KQkJQlVMTCBTLkEuUy4KLTA4MDAzOCAgICAgKGJhc2UgMTYpCQlCVUxMIFMuQS5TLgotCQkJCXJ1ZSBKZWFuIEphdXJlcyBCLlAuNjgKLQkJCQlMZXMgQ2xheWVzIHNvdXMgQm9pcyAgNzg0MzAKLQkJCQlGUkFOQ0UKLQotMDgtMDAtMzkgICAoaGV4KQkJU1BJREVSIFNZU1RFTVMgTElNSVRFRAotMDgwMDM5ICAgICAoYmFzZSAxNikJCVNQSURFUiBTWVNURU1TIExJTUlURUQKLQkJCQlTUElERVIgUEFSSwotCQkJCVNUQU5XRUxMIFNUUkVFVCBFRElOQlVSR0ggRUg2IDVORwotCQkJCVNDT1RMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtM0EgICAoaGV4KQkJT1JDQVRFQ0ggSU5DLgotMDgwMDNBICAgICAoYmFzZSAxNikJCU9SQ0FURUNIIElOQy4KLQkJCQkyNjgwIFFVRUVOU1ZJRVcgRFJJVkUKLQkJCQlPVFRBV0EgT05UQVJJTwotCQkJCUNBTkFEQSBLMkIgOEg2Ci0JCQkJQ0FOQURBCi0KLTA4LTAwLTNCICAgKGhleCkJCVRPUlVTIFNZU1RFTVMgTElNSVRFRAotMDgwMDNCICAgICAoYmFzZSAxNikJCVRPUlVTIFNZU1RFTVMgTElNSVRFRAotCQkJCVNDSUVOQ0UgUEFSSwotCQkJCU1JTFRPTiBST0FEIENBTUJSSURHRSBDQjQgNEJICi0JCQkJVU5JVEVEIEtJTkdET00KLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC0zQyAgIChoZXgpCQlTQ0hMVU1CRVJHRVIgV0VMTCBTRVJWSUNFUwotMDgwMDNDICAgICAoYmFzZSAxNikJCVNDSExVTUJFUkdFUiBXRUxMIFNFUlZJQ0VTCi0JCQkJQVVTVElOIEVOR0lORUVSSU5HIFNFUlZJQ0VTCi0JCQkJUC5PLiBCT1ggMjAwMDE1Ci0JCQkJQVVTVElOIFRYIDc4NzIwLTAwMTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTNEICAgKGhleCkJCUNBRE5FVElYIENPUlBPUkFUSU9OUwotMDgwMDNEICAgICAoYmFzZSAxNikJCUNBRE5FVElYIENPUlBPUkFUSU9OUwotCQkJCTU3OTcgQ0VOVFJBTCBBVkVOVUUKLQkJCQlCT1VMREVSIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC0zRSAgIChoZXgpCQlDT0RFWCBDT1JQT1JBVElPTgotMDgwMDNFICAgICAoYmFzZSAxNikJCUNPREVYIENPUlBPUkFUSU9OCi0JCQkJNTAgRUFTVCBDT01NRVJDRSBEUklWRQotCQkJCVNVSVRFICBNMQotCQkJCVNDSEFVTUJVUkcgSUwgNjAxNzMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTNGICAgKGhleCkJCUZSRUQgS09TQ0hBUkEgRU5URVJQUklTRVMKLTA4MDAzRiAgICAgKGJhc2UgMTYpCQlGUkVEIEtPU0NIQVJBIEVOVEVSUFJJU0VTCi0JCQkJCi0KLTA4LTAwLTQwICAgKGhleCkJCUZFUlJBTlRJIENPTVBVVEVSIFNZUy4gTElNSVRFRAotMDgwMDQwICAgICAoYmFzZSAxNikJCUZFUlJBTlRJIENPTVBVVEVSIFNZUy4gTElNSVRFRAotCQkJCVdZVEhFTlNIQVdFIERJVklTSU9OCi0JCQkJV0VTVEVSTiBST0FEIEJSQUNLTkVMTCBSRzEyIDFSQQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtNDEgICAoaGV4KQkJUkFDQUwtTUlMR08gSU5GT1JNQVRJT04gU1lTLi4KLTA4MDA0MSAgICAgKGJhc2UgMTYpCQlSQUNBTC1NSUxHTyBJTkZPUk1BVElPTiBTWVMuLgotCQkJCTQwMCBFTUJBU1NZIFJPVwotCQkJCVNVSVRFIDMwMAotCQkJCUFUTEFOVEEgR0EgMzAzMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTQyICAgKGhleCkJCUpBUEFOIE1BQ05JQ1MgQ09SUC4KLTA4MDA0MiAgICAgKGJhc2UgMTYpCQlKQVBBTiBNQUNOSUNTIENPUlAuCi0JCQkJCi0JCQkJSkFQQU4KLQotMDgtMDAtNDMgICAoaGV4KQkJUElYRUwgQ09NUFVURVIgSU5DLgotMDgwMDQzICAgICAoYmFzZSAxNikJCVBJWEVMIENPTVBVVEVSIElOQy4KLQkJCQkyNjAgRk9SREhBTSBST0FECi0JCQkJV0lMTUlOR1RPTiBNQSAwMTg4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNDQgICAoaGV4KQkJREFWSUQgU1lTVEVNUyBJTkMuCi0wODAwNDQgICAgIChiYXNlIDE2KQkJREFWSUQgU1lTVEVNUyBJTkMuCi0JCQkJNjE1IFRBU01BTiBEUklWRQotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNDUgICAoaGV4KQkJQ09OQ1VSUkVOVCBDT01QVVRFUiBDT1JQLgotMDgwMDQ1ICAgICAoYmFzZSAxNikJCUNPTkNVUlJFTlQgQ09NUFVURVIgQ09SUC4KLQkJCQkyIENSRVNDRU5UIFBMQUNFCi0JCQkJT0NFQU5QT1JUIE5KIDA3NzU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00NiAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0wODAwNDYgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMsIDUtMS0yIEtpdGFzaGluYWdhd2EKLQkJCQlTaGluYWdhd2Eta3UKLQkJCQlUb2t5byAgMTQxLTAwMDEKLQkJCQlKQVBBTgotCi0wOC0wMC00NyAgIChoZXgpCQlTRVFVRU5UIENPTVBVVEVSIFNZU1RFTVMgSU5DLgotMDgwMDQ3ICAgICAoYmFzZSAxNikJCVNFUVVFTlQgQ09NUFVURVIgU1lTVEVNUyBJTkMuCi0JCQkJMTU0NTAgUy5XLiBLT0xMIFBBUktXQVkgICAuCi0JCQkJTUFJTFNUT1AgQ09MMi04MzEKLQkJCQlCRUFWRVJUT04gT1IgOTcwMDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTQ4ICAgKGhleCkJCUVVUk9USEVSTSBHQVVHSU5HIFNZU1RFTVMKLTA4MDA0OCAgICAgKGJhc2UgMTYpCQlFVVJPVEhFUk0gR0FVR0lORyBTWVNURU1TCi0JCQkJOTAwIE1JRERMRVNFWCBUVVJOUElLRSwgQkRHLiA2Ci0JCQkJQklMTEVSSUNBIE1BIDAxODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00OSAgIChoZXgpCQlVTklWQVRJT04KLTA4MDA0OSAgICAgKGJhc2UgMTYpCQlVTklWQVRJT04KLQkJCQkxMDM3IE5PUlRIIEZBSVIgT0FLUyBBVkUuCi0JCQkJU1VOTllWQUxFIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00QSAgIChoZXgpCQlCQU5ZQU4gU1lTVEVNUyBJTkMuCi0wODAwNEEgICAgIChiYXNlIDE2KQkJQkFOWUFOIFNZU1RFTVMgSU5DLgotCQkJCTEzNSBGTEFOREVSUyBST0FECi0JCQkJV0VTVEJPUk8gTUEgMDE1ODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTRCICAgKGhleCkJCVBMQU5OSU5HIFJFU0VBUkNIIENPUlAuCi0wODAwNEIgICAgIChiYXNlIDE2KQkJUExBTk5JTkcgUkVTRUFSQ0ggQ09SUC4KLQkJCQkxREhTIFNZU1RFTVMKLQkJCQkxNTA4IEtFTk5FRFkgRFJJVkUtU1RFIzIxNQotCQkJCUJFTExFVlVFIE5FIDY4LS01Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00QyAgIChoZXgpCQlIWURSQSBDT01QVVRFUiBTWVNURU1TIElOQy4KLTA4MDA0QyAgICAgKGJhc2UgMTYpCQlIWURSQSBDT01QVVRFUiBTWVNURU1TIElOQy4KLQkJCQkxMiBNRVJDRVIgUk9BRAotCQkJCU5BVElDSyBNQSAwMTc2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNEQgICAoaGV4KQkJQ09SVlVTIFNZU1RFTVMgSU5DLgotMDgwMDREICAgICAoYmFzZSAxNikJCUNPUlZVUyBTWVNURU1TIElOQy4KLQkJCQkyMTAwIENPUlZVUyBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTI0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC00RSAgIChoZXgpCQkzQ09NIEVVUk9QRSBMVEQuCi0wODAwNEUgICAgIChiYXNlIDE2KQkJM0NPTSBFVVJPUEUgTFRELgotCQkJCTNDT00gQ0VOVFJFCi0JCQkJQk9VTkRBUlkgV0FZLCBIRU1FTCBIRU1QU1RFQUQgSEVSVEZPUlNISQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtNEYgICAoaGV4KQkJQ1lHTkVUIFNZU1RFTVMKLTA4MDA0RiAgICAgKGJhc2UgMTYpCQlDWUdORVQgU1lTVEVNUwotCQkJCTI1NjAgSlVOQ1RJT04gQVZFTlVFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTUwICAgKGhleCkJCURBSVNZIFNZU1RFTVMgQ09SUC4KLTA4MDA1MCAgICAgKGJhc2UgMTYpCQlEQUlTWSBTWVNURU1TIENPUlAuCi0JCQkJMTM5IEtJRkVSIENPVVJUCi0JCQkJU1VOTllWQUxFIENBIDk0MDg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01MSAgIChoZXgpCQlFWFBFUkRBVEEKLTA4MDA1MSAgICAgKGJhc2UgMTYpCQlFWFBFUkRBVEEKLQkJCQk4OCwgUlVFIEJSSUxMQVQgU0FWQVJJTgotCQkJCTc1MDEzIFBBUklTCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTA4LTAwLTUyICAgKGhleCkJCUlOU1lTVEVDCi0wODAwNTIgICAgIChiYXNlIDE2KQkJSU5TWVNURUMKLQkJCQk0NTAgTEFLRU1PTlQgQVZFTlVFCi0JCQkJV0lOVEVSIFBBUksgRkwgMzI3OTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTUzICAgKGhleCkJCU1JRERMRSBFQVNUIFRFQ0guIFVOSVZFUlNJVFkKLTA4MDA1MyAgICAgKGJhc2UgMTYpCQlNSURETEUgRUFTVCBURUNILiBVTklWRVJTSVRZCi0JCQkJREVQQVJUTUVOVCBPRgotCQkJCUNPTVBVVEVSIEVOR0lORUVSSU5HCi0JCQkJQU5LQVJBIFRVUktFWQotCQkJCVRVUktFWQotCi0wOC0wMC01NSAgIChoZXgpCQlTVEFORk9SRCBURUxFQ09NTS4gSU5DLgotMDgwMDU1ICAgICAoYmFzZSAxNikJCVNUQU5GT1JEIFRFTEVDT01NLiBJTkMuCi0JCQkJMTIyMSBDUk9TU01BTgotCQkJCVNVTk5ZVkFMRSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNTYgICAoaGV4KQkJU1RBTkZPUkQgTElORUFSIEFDQ0VMLiBDRU5URVIKLTA4MDA1NiAgICAgKGJhc2UgMTYpCQlTVEFORk9SRCBMSU5FQVIgQUNDRUwuIENFTlRFUgotCQkJCTI1NzUgU0FOREhJTEwgUk9BRAotCQkJCU1FTkxPIFBBUksgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTU3ICAgKGhleCkJCUVWQU5TICYgU1VUSEVSTEFORAotMDgwMDU3ICAgICAoYmFzZSAxNikJCUVWQU5TICYgU1VUSEVSTEFORAotCQkJCVAuTy4gQk9YIDg3MDAKLQkJCQk1ODAgQVJBUEVFTiBEUklWRQotCQkJCVNBTFQgTEFLRSBDSVRZIFVUIDg0MTA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01OCAgIChoZXgpCQlTWVNURU1TIENPTkNFUFRTCi0wODAwNTggICAgIChiYXNlIDE2KQkJU1lTVEVNUyBDT05DRVBUUwotCQkJCTUyMCBUSElSRCBTVFJFRVQKLQkJCQlTQU4gRlJBTkNJU0NPIENBIDk0MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01OSAgIChoZXgpCQlBL1MgTVlDUk9OCi0wODAwNTkgICAgIChiYXNlIDE2KQkJQS9TIE1ZQ1JPTgotCQkJCVBPIEJPWCA2MTk5Ci0JCQkJTi0wNjAyIE9TTE8gNgotCQkJCU5PUldBWQotCQkJCU5PUldBWQotCi0wOC0wMC01QSAgIChoZXgpCQlJQk0gQ29ycAotMDgwMDVBICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUm9hZAotCQkJCVAuTy4gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01QiAgIChoZXgpCQlWVEEgVEVDSE5PTE9HSUVTIElOQy4KLTA4MDA1QiAgICAgKGJhc2UgMTYpCQlWVEEgVEVDSE5PTE9HSUVTIElOQy4KLQkJCQkyMDQwIFNIRVJNQU4gU1RSRUVUCi0JCQkJSE9MTFlXT09EIEZMIDMzMDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01QyAgIChoZXgpCQlGT1VSIFBIQVNFIFNZU1RFTVMKLTA4MDA1QyAgICAgKGJhc2UgMTYpCQlGT1VSIFBIQVNFIFNZU1RFTVMKLQkJCQkyMDAxIExPR0lDIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMjQtMzQ1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNUQgICAoaGV4KQkJR09VTEQgSU5DLgotMDgwMDVEICAgICAoYmFzZSAxNikJCUdPVUxEIElOQy4KLQkJCQk2OTAxIFdFU1QgU1VOUklTRSBCTFZELgotCQkJCVAuTy4gQk9YIDkxNDgKLQkJCQlGVC4gTEFVREVSREFMRSBGTCAzMzMxMC05MTQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC01RSAgIChoZXgpCQlDT1VOVEVSUE9JTlQgQ09NUFVURVIgSU5DLgotMDgwMDVFICAgICAoYmFzZSAxNikJCUNPVU5URVJQT0lOVCBDT01QVVRFUiBJTkMuCi0JCQkJMjEyNyBSSU5HV09PRCBBVkVOVUUKLQkJCQlTQU4gSk9TRSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNUYgICAoaGV4KQkJU0FCRVIgVEVDSE5PTE9HWSBDT1JQLgotMDgwMDVGICAgICAoYmFzZSAxNikJCVNBQkVSIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkyMzgxIEJFUklORyBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTMxLTExMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTYwICAgKGhleCkJCUlORFVTVFJJQUwgTkVUV09SS0lORyBJTkMuCi0wODAwNjAgICAgIChiYXNlIDE2KQkJSU5EVVNUUklBTCBORVRXT1JLSU5HIElOQy4KLQkJCQkzOTkwIEZSRUVET00gQ0lSQ0xFCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTYxICAgKGhleCkJCUpBUk9HQVRFIExURC4KLTA4MDA2MSAgICAgKGJhc2UgMTYpCQlKQVJPR0FURSBMVEQuCi0JCQkJMTk3LTIxMyBMWUhBTSBST0FECi0JCQkJQlJJU1RPTiBMT05ET04gU1cyIDVQWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtNjIgICAoaGV4KQkJR0VORVJBTCBEWU5BTUlDUwotMDgwMDYyICAgICAoYmFzZSAxNikJCUdFTkVSQUwgRFlOQU1JQ1MKLQkJCQlGT1JUIFdPUlRIIERJVklTSU9OCi0JCQkJUC5PLiBCT1ggNzQ4Ci0JCQkJRlQuIFdPUlRIIFRYIDc2MTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC02MyAgIChoZXgpCQlQTEVTU0VZCi0wODAwNjMgICAgIChiYXNlIDE2KQkJUExFU1NFWQotCQkJCVBMRVNTRVkgLSBVSyBMSU1JVEVECi0JCQkJMTY3LTU1IDE0OFRIIEFWRU5VRQotCQkJCUpBTUFJQ0EgTlkgMTE0MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTY0ICAgKGhleCkJCUFVVE9QSE9OIEFHCi0wODAwNjQgICAgIChiYXNlIDE2KQkJQVVUT1BIT04gQUcKLQkJCQlBQlQuIFRaTSAzMDcKLQkJCQlaSUVHRUxNQVRUU1RSQVNTRSAxLTE1IDQ1MDMgU09MT1RIVVJOCi0JCQkJU1dJVFpFUkxBTkQKLQkJCQlTV0lUWkVSTEFORAotCi0wOC0wMC02NSAgIChoZXgpCQlHRU5SQUQgSU5DLgotMDgwMDY1ICAgICAoYmFzZSAxNikJCUdFTlJBRCBJTkMuCi0JCQkJMzAwIEJBS0VSIEFWRU5VRQotCQkJCU1BSUwgU1RPUCAyNgotCQkJCUNPTkNPUkQgTUEgMDE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTY2ICAgKGhleCkJCUFHRkEgQ09SUE9SQVRJT04KLTA4MDA2NiAgICAgKGJhc2UgMTYpCQlBR0ZBIENPUlBPUkFUSU9OCi0JCQkJMjAwIEJBTExBUkRWQUxFIFNUUkVFVAotCQkJCVdJTE1JTkdUT04gTUEgMDE4ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTY3ICAgKGhleCkJCUNPTURFU0lHTgotMDgwMDY3ICAgICAoYmFzZSAxNikJCUNPTURFU0lHTgotCQkJCTc1MSBTT1VUSCBLRUxMT0cgQVZFTlVFCi0JCQkJR09MRVRBIENBIDkzMTE3LTM4ODAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTY4ICAgKGhleCkJCVJJREdFIENPTVBVVEVSUwotMDgwMDY4ICAgICAoYmFzZSAxNikJCVJJREdFIENPTVBVVEVSUwotCQkJCTI0NTEgTUlTU0lPTiBDT0xMRUdFIEJMVkQuCi0JCQkJU0FOVEEgQ0xBUkEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTY5ICAgKGhleCkJCVNJTElDT04gR1JBUEhJQ1MgSU5DLgotMDgwMDY5ICAgICAoYmFzZSAxNikJCVNJTElDT04gR1JBUEhJQ1MgSU5DLgotCQkJCTIwMTEgTi4gU0hPUkVMSU5FIEJMVkQuCi0JCQkJUC5PLiBCT1ggNzMxMSBDQSA5NDA0MwotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwMzktNzMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNkEgICAoaGV4KQkJQVRUIEJFTEwgTEFCT1JBVE9SSUVTCi0wODAwNkEgICAgIChiYXNlIDE2KQkJQVRUIEJFTEwgTEFCT1JBVE9SSUVTCi0JCQkJMTEwMCBFQVNUIFdBUlJFTlZJTExFIFJPQUQKLQkJCQlOQVBFUlZJTExFIElMIDYwNTY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC02QiAgIChoZXgpCQlBQ0NFTCBURUNITk9MT0dJRVMgSU5DLgotMDgwMDZCICAgICAoYmFzZSAxNikJCUFDQ0VMIFRFQ0hOT0xPR0lFUyBJTkMuCi0JCQkJNzM1OCBUUkFERSBTVFJFRVQKLQkJCQlTQU4gRElFR08gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTZDICAgKGhleCkJCVNVTlRFSyBURUNITk9MT0dZIElOVCdMCi0wODAwNkMgICAgIChiYXNlIDE2KQkJU1VOVEVLIFRFQ0hOT0xPR1kgSU5UJ0wKLQkJCQk1ODYgTk8uIEZJUlNUIFNUUkVFVAotCQkJCVNBTiBKT1NFIENBIDk1MTEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC02RCAgIChoZXgpCQlXSElURUNIQVBFTCBDT01QVVRFUiBXT1JLUwotMDgwMDZEICAgICAoYmFzZSAxNikJCVdISVRFQ0hBUEVMIENPTVBVVEVSIFdPUktTCi0JCQkJNzUgV0hJVEVDSEFQRUwgUk9BRAotCQkJCUxPTkRPTiBFMSAxRFUKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wOC0wMC02RSAgIChoZXgpCQlNQVNTQ09NUAotMDgwMDZFICAgICAoYmFzZSAxNikJCU1BU1NDT01QCi0JCQkJT05FIFRFQ0hOT0xPR1kgUEFSSwotCQkJCVdFU1RGT1JEIE1BIDAxODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC02RiAgIChoZXgpCQlQSElMSVBTIEFQRUxET09STiBCLlYuCi0wODAwNkYgICAgIChiYXNlIDE2KQkJUEhJTElQUyBBUEVMRE9PUk4gQi5WLgotCQkJCVAuTy4gQk9YIDEwNQotCQkJCTczMDAgQUMgQVBFTERPT1JOCi0JCQkJVEhFIE5FVEhFUkxBTkRTCi0JCQkJTkVUSEVSTEFORFMKLQotMDgtMDAtNzAgICAoaGV4KQkJTUlUU1VCSVNISSBFTEVDVFJJQyBDT1JQLgotMDgwMDcwICAgICAoYmFzZSAxNikJCU1JVFNVQklTSEkgRUxFQ1RSSUMgQ09SUC4KLQkJCQkzMjUgS0FNSU1BQ0hJWUEKLQkJCQlLQU1BS1VSQSBDSVRZIEtBTkFHV0EgUFJFRkVDVFVSRSAyNDcKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTA4LTAwLTcxICAgKGhleCkJCU1BVFJBIChEU0lFKQotMDgwMDcxICAgICAoYmFzZSAxNikJCU1BVFJBIChEU0lFKQotCQkJCVBBUkMgRCdBRkZBSVJFUyAtIEIuUC4gMjYyCi0JCQkJMjcxMDAgVkFMIERFIFJFVUlMCi0JCQkJRlJBTkNFCi0JCQkJRlJBTkNFCi0KLTA4LTAwLTcyICAgKGhleCkJCVhFUk9YIENPUlAgVU5JViBHUkFOVCBQUk9HUkFNCi0wODAwNzIgICAgIChiYXNlIDE2KQkJWEVST1ggQ09SUCBVTklWIEdSQU5UIFBST0dSQU0KLQkJCQlaRVJPWCBTWVNURU1TIElOU1RJVFVURQotCQkJCU0vUyAxMDUgNTBDIDgwMCBQSElMTElQUyBST0FECi0JCQkJV0VCU1RFUiBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNzMgICAoaGV4KQkJVEVDTUFSIElOQy4KLTA4MDA3MyAgICAgKGJhc2UgMTYpCQlURUNNQVIgSU5DLgotCQkJCTYyMjUgQ09DSFJBTiBST0FECi0JCQkJU09MT04gT0ggNDQxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTc0ICAgKGhleCkJCUNBU0lPIENPTVBVVEVSIENPLiBMVEQuCi0wODAwNzQgICAgIChiYXNlIDE2KQkJQ0FTSU8gQ09NUFVURVIgQ08uIExURC4KLQkJCQkzLTItMSBTQUtBRS1DSE8KLQkJCQlIQU1VUkFNQUNISSwgTklTSElUTUFHVU4gVE9LWU8KLQkJCQkxOTAtMTEgSkFQQU4KLQkJCQlKQVBBTgotCi0wOC0wMC03NSAgIChoZXgpCQlEQU5TSyBEQVRBIEVMRUNUUk9OSUsKLTA4MDA3NSAgICAgKGJhc2UgMTYpCQlEQU5TSyBEQVRBIEVMRUNUUk9OSUsKLQkJCQlIRVJMRVYgSE9WRURHQURFIDE5OQotCQkJCURLIDI3MzAgSEVSTEVWCi0JCQkJREVOTUFSSwotCQkJCURFTk1BUksKLQotMDgtMDAtNzYgICAoaGV4KQkJUEMgTEFOIFRFQ0hOT0xPR0lFUwotMDgwMDc2ICAgICAoYmFzZSAxNikJCVBDIExBTiBURUNITk9MT0dJRVMKLQkJCQk1NzgwIExJTkNPTE4gRFJJVkUgU1VJVEUgMTA2Ci0JCQkJTUlOTkVBUE9MSVMgTU4gNTU0MzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTc3ICAgKGhleCkJCVRTTCBDT01NVU5JQ0FUSU9OUyBMVEQuCi0wODAwNzcgICAgIChiYXNlIDE2KQkJVFNMIENPTU1VTklDQVRJT05TIExURC4KLQkJCQlUSEUgTEFORFNCVVJZIEVTVEFURQotCQkJCUxPV0VSIEdVSUxERk9SRCBST0FEIEtOQVBISUwgV09LSU5HIFNVUlIKLQkJCQlFTkdMQU5ECi0JCQkJVU5JVEVEIEtJTkdET00KLQotMDgtMDAtNzggICAoaGV4KQkJQUNDRUxMIENPUlBPUkFUSU9OCi0wODAwNzggICAgIChiYXNlIDE2KQkJQUNDRUxMIENPUlBPUkFUSU9OCi0JCQkJNTAgU0FHSU5BVyBEUklWRQotCQkJCVJPQ0hFU1RFUiBOWSAxNDYyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtNzkgICAoaGV4KQkJVEhFIERST0lEIFdPUktTCi0wODAwNzkgICAgIChiYXNlIDE2KQkJVEhFIERST0lEIFdPUktTCi0JCQkJUC5PLiBCT1ggQ1MgODE4MAotCQkJCVNBTiBSQUZBRUwgQ0EgOTQ5MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTdBICAgKGhleCkJCUlOREFUQQotMDgwMDdBICAgICAoYmFzZSAxNikJCUlOREFUQQotCQkJCUdKRVJEUlVNUyBWRUkgMTIgQwotCQkJCU4tMDQ4NiBPU0xPIDQKLQkJCQlOT1JXQVkKLQkJCQlOT1JXQVkKLQotMDgtMDAtN0IgICAoaGV4KQkJU0FOWU8gRUxFQ1RSSUMgQ08uIExURC4KLTA4MDA3QiAgICAgKGJhc2UgMTYpCQlTQU5ZTyBFTEVDVFJJQyBDTy4gTFRELgotCQkJCTEtMTgtMTMgSEFTSElSSURBTkkKLQkJCQlISVJBS0FUQS1TSEkKLQkJCQlPU0FLQSA1NzMgSkFQQU4KLQkJCQlKQVBBTgotCi0wOC0wMC03QyAgIChoZXgpCQlWSVRBTElOSyBDT01NVU5JQ0FUSU9OUyBDT1JQLgotMDgwMDdDICAgICAoYmFzZSAxNikJCVZJVEFMSU5LIENPTU1VTklDQVRJT05TIENPUlAuCi0JCQkJNDg3NjEgS0FUTyBST0FECi0JCQkJRlJFTU9OVCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtN0UgICAoaGV4KQkJQU1BTEdBTUFURUQgV0lSRUxFU1MoQVVTKSBMVEQKLTA4MDA3RSAgICAgKGJhc2UgMTYpCQlBTUFMR0FNQVRFRCBXSVJFTEVTUyhBVVMpIExURAotCQkJCU5PUlRIIFJZREUgRElWSVNJT04KLQkJCQlQLk8uIEJPWCA5NiBOT1JUSCBSWURFIE5TVwotCQkJCUFVU1RSQUxJQSAyMTEzCi0JCQkJQVVTVFJBTElBCi0KLTA4LTAwLTdGICAgKGhleCkJCUNBUk5FR0lFLU1FTExPTiBVTklWRVJTSVRZCi0wODAwN0YgICAgIChiYXNlIDE2KQkJQ0FSTkVHSUUtTUVMTE9OIFVOSVZFUlNJVFkKLQkJCQlJTkZPUk1BVElPTiBURUNITk9MT0dZCi0JCQkJU0NIRU5MRVkgUEFSSwotCQkJCVBJVFRTQlVSR0UgUEEgMTUyMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTgwICAgKGhleCkJCUFFUyBEQVRBIElOQy4KLTA4MDA4MCAgICAgKGJhc2UgMTYpCQlBRVMgREFUQSBJTkMuCi0JCQkJMTkwMCBNSU5ORVNPVEEgQ09VUlQKLQkJCQlNSVNTSVNBVUdBIE9OVEFSSU8KLQkJCQlDQU5BREEgTDVOIEw1TiAzQzkKLQkJCQlDQU5BREEKLQotMDgtMDAtODEgICAoaGV4KQkJLEFTVEVDSCBJTkMuCi0wODAwODEgICAgIChiYXNlIDE2KQkJLEFTVEVDSCBJTkMuCi0JCQkJNjcwIE5PUlRIIENPTU1FUkNJQUwgU1RSRUVUCi0JCQkJTUFOQ0hFU1RFUiBOSCAwMzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtODIgICAoaGV4KQkJVkVSSVRBUyBTT0ZUV0FSRQotMDgwMDgyICAgICAoYmFzZSAxNikJCVZFUklUQVMgU09GVFdBUkUKLQkJCQk0ODAwIEdSRUFUIEFNRVJJQ0EgUEFSS1dBWQotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04MyAgIChoZXgpCQlTZWlrbyBJbnN0cnVtZW50cyBJbmMuCi0wODAwODMgICAgIChiYXNlIDE2KQkJU2Vpa28gSW5zdHJ1bWVudHMgSW5jLgotCQkJCTgsIE5ha2FzZSAxLWNob21lIE1paGFtYS1rdQotCQkJCUNoaWJhLXNoaSBDaGliYSAyNjEtODUwNwotCQkJCUpBUEFOCi0KLTA4LTAwLTg0ICAgKGhleCkJCVRPTUVOIEVMRUNUUk9OSUNTIENPUlAuCi0wODAwODQgICAgIChiYXNlIDE2KQkJVE9NRU4gRUxFQ1RST05JQ1MgQ09SUC4KLQkJCQkxLTEgVUNISVNBSVdBSS1DSE8gMkNIT01FCi0JCQkJQ0hJWU9EQS1LVSBUT0tZTyAxMDAKLQkJCQlKQVBBTgotCQkJCUpBUEFOCi0KLTA4LTAwLTg1ICAgKGhleCkJCUVMWFNJCi0wODAwODUgICAgIChiYXNlIDE2KQkJRUxYU0kKLQkJCQkyMzM0IExVTkRZIFBMQUNFCi0JCQkJU0FOIEpPU0UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTg2ICAgKGhleCkJCUtPTklDQSBNSU5PTFRBIEhPTERJTkdTLCBJTkMuCi0wODAwODYgICAgIChiYXNlIDE2KQkJS09OSUNBIE1JTk9MVEEgSE9MRElOR1MsIElOQy4KLQkJCQkxLTYtMSwgTWFydW5vdWNoaSwKLQkJCQlDaGl5b2RhLWt1Ci0JCQkJVG9reW8gIDEwMC0wMDA1Ci0JCQkJSkFQQU4KLQotMDgtMDAtODcgICAoaGV4KQkJWFlQTEVYCi0wODAwODcgICAgIChiYXNlIDE2KQkJWFlQTEVYCi0JCQkJMjk1IEZPU1RFUiBTVFJFRVQKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLTg4ICAgKGhleCkJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotMDgwMDg4ICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jLgotCQkJCTE3NDUgVGVjaG5vbG9neSBEci4KLQkJCQlTYW4gSm9zZSBDQSA5NTExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtODkgICAoaGV4KQkJS0lORVRJQ1MKLTA4MDA4OSAgICAgKGJhc2UgMTYpCQlLSU5FVElDUwotCQkJCTMxODIgT0xEIFRVTk5FTCBST0FECi0JCQkJU1VJVEUgSAotCQkJCUxBRkFZRVRURSBDQSA5NDU0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtOEEgICAoaGV4KQkJUGVyZlRlY2gsIEluYy4KLTA4MDA4QSAgICAgKGJhc2UgMTYpCQlQZXJmVGVjaCwgSW5jLgotCQkJCTYxMyBOVyBMb29wIDQxMAotCQkJCVN1aXRlIDUyMAotCQkJCVNBTiBBTlRPTklPIFRYIDc4MjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04QiAgIChoZXgpCQlQWVJBTUlEIFRFQ0hOT0xPR1kgQ09SUC4KLTA4MDA4QiAgICAgKGJhc2UgMTYpCQlQWVJBTUlEIFRFQ0hOT0xPR1kgQ09SUC4KLQkJCQkxMjk1IENIQVJMRVNUT04gUk9BRAotCQkJCU1PVU5UQUlOIFZJRVcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTAwLThDICAgKGhleCkJCU5FVFdPUksgUkVTRUFSQ0ggQ09SUE9SQVRJT04KLTA4MDA4QyAgICAgKGJhc2UgMTYpCQlORVRXT1JLIFJFU0VBUkNIIENPUlBPUkFUSU9OCi0JCQkJMjM4MCBOLiBST1NFIEFWRU5VRQotCQkJCU9YTkFSRCBDQSA5MzAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDAtOEQgICAoaGV4KQkJWFlWSVNJT04gSU5DLgotMDgwMDhEICAgICAoYmFzZSAxNikJCVhZVklTSU9OIElOQy4KLQkJCQkxMDEgRURHRVdBVEVSIERSSVZFCi0JCQkJV0FLRUZJRUxEIE1BIDAxODgwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04RSAgIChoZXgpCQlUQU5ERU0gQ09NUFVURVJTCi0wODAwOEUgICAgIChiYXNlIDE2KQkJVEFOREVNIENPTVBVVEVSUwotCQkJCTE0MzIxIFRBTkRFTSBCTFZELgotCQkJCUFVU1RJTiBUWCA3ODcyOC02NjEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC04RiAgIChoZXgpCQlDSElQQ09NIENPUlBPUkFUSU9OCi0wODAwOEYgICAgIChiYXNlIDE2KQkJQ0hJUENPTSBDT1JQT1JBVElPTgotCQkJCVNPVVRIQk9ST1VHSCBPRkZJQ0UKLQkJCQkxMTggVFVSTlBJS0UgUk9BRAotCQkJCVNPVVRIQk9ST1VHSCBNQSAwMTc3Mi0xODg2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wMC05MCAgIChoZXgpCQlTT05PTUEgU1lTVEVNUwotMDgwMDkwICAgICAoYmFzZSAxNikJCVNPTk9NQSBTWVNURU1TCi0JCQkJNDY0MCBBRE1JUkFMVFkgV0FZLCAgU1RFLiAjNjAwCi0JCQkJTUFSSU5BIERFTCBSRVkgQ0EgOTAyOTItNjY5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMDgtRUEgICAoaGV4KQkJQU1TQwotMDgwOEVBICAgICAoYmFzZSAxNikJCUFNU0MKLQkJCQkxNTc3NSBXIFNjaGFlZmVyIENvdXJ0Ci0JCQkJTmV3IEJlcmxpbiBXSSA1MzE1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtMEMtQzkgICAoaGV4KQkJTWlzc2lvbiBUZWNobm9sb2d5IEdyb3VwLCBkYmEgTWFnbWEKLTA4MENDOSAgICAgKGJhc2UgMTYpCQlNaXNzaW9uIFRlY2hub2xvZ3kgR3JvdXAsIGRiYSBNYWdtYQotCQkJCTk5MTggVmlhIFBhc2FyCi0JCQkJU2FuIERpZWdvIENBIDkyMTI2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0wRC04NCAgIChoZXgpCQlHRUNPLCBJbmMuCi0wODBEODQgICAgIChiYXNlIDE2KQkJR0VDTywgSW5jLgotCQkJCTE3NTQgTi4gNDh0aCBTdC4KLQkJCQlNZXNhIEFaIDg1MjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0xMS05NiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTA4MTE5NiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTA4LTE0LTQzICAgKGhleCkJCVVOSUJSQUlOIFMuQS4KLTA4MTQ0MyAgICAgKGJhc2UgMTYpCQlVTklCUkFJTiBTLkEuCi0JCQkJODQsIEVUSE5JS0lTIEFOVElTVEFTRU9TCi0JCQkJMTUyMzEgQVRIRU5TCi0JCQkJR1JFRUNFCi0JCQkJR1JFRUNFCi0KLTA4LTE2LTUxICAgKGhleCkJCVNoZW56aGVuIFNlYSBTdGFyIFRlY2hub2xvZ3kgQ28uLEx0ZAotMDgxNjUxICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFNlYSBTdGFyIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCVNlYXN0YXIgaW5kdXN0cmlhbCBQYXJrLCBCYW9Mb25nICA2dGggQXZlCi0JCQkJQmFvTG9uZyBpbmR1c3RyaWFsIENpdHksIExvbmdHYW5nICBEaXN0cmljdCwgU2hlbnpoZW4gR3VhbmdEb25nIFAuUi5DCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODExNgotCQkJCUNISU5BCi0KLTA4LTE3LTM1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTA4MTczNSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTE3LUY0ICAgKGhleCkJCUlCTSBDb3JwCi0wODE3RjQgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkyMDUxIE1pc3Npb24gQ29sbGVnZSBCbHZkCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTE4LTFBICAgKGhleCkJCXp0ZSBjb3Jwb3JhdGlvbgotMDgxODFBICAgICAoYmFzZSAxNikJCXp0ZSBjb3Jwb3JhdGlvbgotCQkJCTEyL0YuLFpURSBSJkQgQnVpbGRpbmcsa2VqaSBuYW4gUm9hZCAKLQkJCQlTaGVuemhlbiBndWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMDgtMTgtNEMgICAoaGV4KQkJQS4gUy4gVGhvbWFzLCBJbmMuCi0wODE4NEMgICAgIChiYXNlIDE2KQkJQS4gUy4gVGhvbWFzLCBJbmMuCi0JCQkJMzU1IFByb3ZpZGVuY2UgSHd5Ci0JCQkJV2VzdHdvb2QgTUEgMDIwOTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTE5LUE2ICAgKGhleCkJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotMDgxOUE2ICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCUIxLTcsSHVhd2VpIEluZHVzdHJpYWwgQmFzZSxCYW50aWFuLExvbmdnYW5nCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTA4LTFGLUYzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTA4MUZGMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LTI1LTIyICAgKGhleCkJCUFEVkFOU0VFCi0wODI1MjIgICAgIChiYXNlIDE2KQkJQURWQU5TRUUKLQkJCQk5IFJ1ZSBBbGZyZWQgS2FzdGxlcgotCQkJCUNTMzA3NTAKLQkJCQlOQU5URVMgIDQ0MzA3Ci0JCQkJRlJBTkNFCi0KLTA4LTJBLUQwICAgKGhleCkJCVNSRCBJbm5vdmF0aW9ucyBJbmMuCi0wODJBRDAgICAgIChiYXNlIDE2KQkJU1JEIElubm92YXRpb25zIEluYy4KLQkJCQkxMTUyNSBWYWxsZXkgUmlkZ2UgRHIuIE5XCi0JCQkJQ2FsZ2FyeSBBQiBUM0IgNVQ0Ci0JCQkJQ0FOQURBCi0KLTA4LTJFLTVGICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMDgyRTVGICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC0zNy05QyAgIChoZXgpCQlUb3BheiBDby4gTFRELgotMDgzNzlDICAgICAoYmFzZSAxNikJCVRvcGF6IENvLiBMVEQuCi0JCQkJQjMwNS0yMiwgQWNyb3Rvd2VyLCAxNTkxIEd3YW55YW5nLWRvbmcKLQkJCQlEb25nYW4tZ3UKLQkJCQlBbnlhbmctc2kgR3llb25nZ2ktRG8gNDMxLTA2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wOC0zOC1BNSAgIChoZXgpCQlGdW5rd2VyayBwbGV0dGFjIGVsZWN0cm9uaWMgR21iSAotMDgzOEE1ICAgICAoYmFzZSAxNikJCUZ1bmt3ZXJrIHBsZXR0YWMgZWxlY3Ryb25pYyBHbWJICi0JCQkJV3VlcnpidXJnZXIgU3RyLiAxNTAKLQkJCQlGdWVydGggQmF2YXJpYSA5MDc2NgotCQkJCUdFUk1BTlkKLQotMDgtM0UtOEUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLkx0ZAotMDgzRThFICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby5MdGQKLQkJCQk2NixDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFBST1ZJTkNFIE9GIENISU5BCi0KLTA4LTRFLTFDICAgKGhleCkJCUgyQSBTeXN0ZW1zLCBMTEMKLTA4NEUxQyAgICAgKGJhc2UgMTYpCQlIMkEgU3lzdGVtcywgTExDCi0JCQkJNzU0NSBJcnZpbmUgQ2VudGVyIERyaXZlCi0JCQkJU3VpdGUgMjAwCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC00RS1CRiAgIChoZXgpCQlCcm9hZCBOZXQgTXV4IENvcnBvcmF0aW9uCi0wODRFQkYgICAgIChiYXNlIDE2KQkJQnJvYWQgTmV0IE11eCBDb3Jwb3JhdGlvbgotCQkJCTQtMS04IEtvdW5hbiBNaW5hdG8ta3UKLQkJCQlUb2t5byAgMTA4LTAwNzUKLQkJCQlKQVBBTgotCi0wOC01MS0yRSAgIChoZXgpCQlPcmlvbiBEaWFnbm9zdGljYSBPeQotMDg1MTJFICAgICAoYmFzZSAxNikJCU9yaW9uIERpYWdub3N0aWNhIE95Ci0JCQkJS29pdnUtTWFua2thYW4gdGllIDYKLQkJCQlFc3BvbyAgMDIxMDAKLQkJCQlGSU5MQU5ECi0KLTA4LTVCLTBFICAgKGhleCkJCUZvcnRpbmV0LCBJbmMuCi0wODVCMEUgICAgIChiYXNlIDE2KQkJRm9ydGluZXQsIEluYy4KLQkJCQkxMDkwIEtpZmVyIFJvYWQKLQkJCQlTdW5ueXZhbGUgQ2FsaWZvcm5pYSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtNzUtNzIgICAoaGV4KQkJT2JlbHV4IE95Ci0wODc1NzIgICAgIChiYXNlIDE2KQkJT2JlbHV4IE95Ci0JCQkJS3V0b21vdGllIDYgQgotCQkJCUhlbHNpbmtpICAwMDM4MAotCQkJCUZJTkxBTkQKLQotMDgtNzYtMTggICAoaGV4KQkJVmlFIFRlY2hub2xvZ2llcyBTZG4uIEJoZC4KLTA4NzYxOCAgICAgKGJhc2UgMTYpCQlWaUUgVGVjaG5vbG9naWVzIFNkbi4gQmhkLgotCQkJCW5vLiA4NS1BLCBMaW50YW5nIEJheWFuIExlcGFzIDExLAotCQkJCVBoYXNlIDQKLQkJCQlCYXlhbiBMZXBhcyBQZW5hbmcgMTE5MDAKLQkJCQlNQUxBWVNJQQotCi0wOC03Ni05NSAgIChoZXgpCQlBdXRvIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0wODc2OTUgICAgIChiYXNlIDE2KQkJQXV0byBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0Rmxvb3IsICMyMzUgSGFuc2hpbiBJVCBUb3dlciwgCi0JCQkJR3Vyby1kb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi03NjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMDgtNzYtRkYgICAoaGV4KQkJVGhvbXNvbiBUZWxlY29tIEJlbGdpdW0KLTA4NzZGRiAgICAgKGJhc2UgMTYpCQlUaG9tc29uIFRlbGVjb20gQmVsZ2l1bQotCQkJCVByaW5zIEJvdWRld2lqbmxhYW4gNDcKLQkJCQlFZGVnZW0gICAyNjUwCi0JCQkJQkVMR0lVTQotCi0wOC04Ni0zQiAgIChoZXgpCQlCZWxraW4gSW50ZXJuYXRpb25hbCwgSW5jLgotMDg4NjNCICAgICAoYmFzZSAxNikJCUJlbGtpbiBJbnRlcm5hdGlvbmFsLCBJbmMuCi0JCQkJMTIwNDUgRWFzdCBXYXRlcmZyb250IERyaXZlCi0JCQkJUGxheWEgVmlzdGEgQ0EgOTAwOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LThELUM4ICAgKGhleCkJCVJ5b3dhIEVsZWN0cm9uaWNzIENvLixMdGQKLTA4OERDOCAgICAgKGJhc2UgMTYpCQlSeW93YSBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJMTQ4My0xIFRha2FoYXJhLW1hY2hpCi0JCQkJWWFtYWdhdGEtc2hpIFlhbWFnYXRhLXByZWYuIDk5MDAwMDIKLQkJCQlKQVBBTgotCi0wOC04Ri0yQyAgIChoZXgpCQlIaWxscyBTb3VuZCBWaXNpb24gJiBMaWdodGluZwotMDg4RjJDICAgICAoYmFzZSAxNikJCUhpbGxzIFNvdW5kIFZpc2lvbiAmIExpZ2h0aW5nCi0JCQkJMSBDbHlkZSBTdHJlZXQKLQkJCQlTaWx2ZXJ3YXRlciBOZXcgU291dGggV2FsZXMgMjEyOAotCQkJCUFVU1RSQUxJQQotCi0wOC05RS0wMSAgIChoZXgpCQlRVUFOVEEgQ09NUFVURVIgSU5DLgotMDg5RTAxICAgICAoYmFzZSAxNikJCVFVQU5UQSBDT01QVVRFUiBJTkMuCi0JCQkJTm8uMjExLCBXZW4gSHdhIDJuZCBSZC4sIEt1ZWkgU2hhbiBIc2lhbmcsVGFvIFl1YW4gU2hpZW4sIFRhaXdhbiwgUi4gTy4gQy4KLQkJCQlUYW95dWFuIFRhaXdhbiAzMzM3NwotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotMDgtOUYtOTcgICAoaGV4KQkJTEVST1kgQVVUT01BVElPTgotMDg5Rjk3ICAgICAoYmFzZSAxNikJCUxFUk9ZIEFVVE9NQVRJT04KLQkJCQkzNSwgQm91bGV2YXJkIGR1IExpYnJlIEVjaGFuZ2UKLQkJCQlTYWludCBPcmVucyBkZSBHYW1ldmlsbGUgIDMxNjUwCi0JCQkJRlJBTkNFCi0KLTA4LUExLTJCICAgKGhleCkJCVNoZW5aaGVuIEVaTCBUZWNobm9sb2d5IENvLiwgTHRkCi0wOEExMkIgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gRVpMIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlSTTIxQiwgQnVpbGRpbmcgMiwgQ2hpbmEgUGhvZW5peCBCdWlsZGluZywKLQkJCQlOby4gMjAwOCBPZiBTaGVubmFuIEF2ZW51ZSwgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAyNgotCQkJCUNISU5BCi0KLTA4LUE5LTVBICAgKGhleCkJCUF6dXJld2F2ZQotMDhBOTVBICAgICAoYmFzZSAxNikJCUF6dXJld2F2ZQotCQkJCThGLiwgTm8uIDk0LCBCYW96aG9uZyBSZC4sIFhpbmRpYW4gCi0JCQkJTmV3IFRhaXBlaSBDaXR5ICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTA4LUFDLUE1ICAgKGhleCkJCUJlbnUgVmlkZW8sIEluYy4KLTA4QUNBNSAgICAgKGJhc2UgMTYpCQlCZW51IFZpZGVvLCBJbmMuCi0JCQkJMzAwIENvbmNvcmQgUmQuLCBTdWl0ZSAjMTEwCi0JCQkJQmlsbGVyaWNhIE1BIDAxODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wOC1CNC1DRiAgIChoZXgpCQlBYmljb20gSW50ZXJuYXRpb25hbAotMDhCNENGICAgICAoYmFzZSAxNikJCUFiaWNvbSBJbnRlcm5hdGlvbmFsCi0JCQkJVGhlIE9sZCBHcmFtbWFyIFNjaG9vbAotCQkJCVBob2VuaXggQmFuawotCQkJCU1hcmtldCBEcmF5dG9uIFNocm9wc2hpcmUgVEY5IDFKUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTA4LUI3LUVDICAgKGhleCkJCVdpcmVsZXNzIFNlaXNtaWMKLTA4QjdFQyAgICAgKGJhc2UgMTYpCQlXaXJlbGVzcyBTZWlzbWljCi0JCQkJMTMxMDAgU1cgRnJlZXdheQotCQkJCVN1aXRlIDE1MAotCQkJCVN1Z2FyIExhbmQgVFggNzc0NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LUJCLUNDICAgKGhleCkJCUFLLU5PUkQgRURWIFZFUlRSSUVCU0dFUy4gbWJICi0wOEJCQ0MgICAgIChiYXNlIDE2KQkJQUstTk9SRCBFRFYgVkVSVFJJRUJTR0VTLiBtYkgKLQkJCQlGUklFRFJJQ0hTVFJBU1NFIDEwCi0JCQkJMjU0MzYgVE9STkVTQ0ggIAotCQkJCUdFUk1BTlkKLQotMDgtQkUtMDkgICAoaGV4KQkJQXN0cm9sIEVsZWN0cm9uaWMgQUcKLTA4QkUwOSAgICAgKGJhc2UgMTYpCQlBc3Ryb2wgRWxlY3Ryb25pYyBBRwotCQkJCVZvcmRlcmkgQu+/vWRlIDMKLQkJCQlHZXdlcmJlaGF1cyBDYXNvcmEKLQkJCQlPYmVycm9ocmRvcmYgQUcgNTQ1MgotCQkJCVNXSVRaRVJMQU5ECi0KLTA4LUQwLTlGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTA4RDA5RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LUQyLTlBICAgKGhleCkJCVByb2Zvcm1hdGlxdWUKLTA4RDI5QSAgICAgKGJhc2UgMTYpCQlQcm9mb3JtYXRpcXVlCi0JCQkJMTAgYmlzIHJ1ZSBMdWNpZW4gVm9pbGluCi0JCQkJUHV0ZWF1eCAgOTI4MDAKLQkJCQlGUkFOQ0UKLQotMDgtRDQtMEMgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wOEQ0MEMgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wOC1ENS1DMCAgIChoZXgpCQlTZWVycyBUZWNobm9sb2d5IENvLiwgTHRkCi0wOEQ1QzAgICAgIChiYXNlIDE2KQkJU2VlcnMgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTEyMTAgVGVjaGNlbnRlciwgU0tuVGVjaG5vcGFyaywgMTkwLTEKLQkJCQlTYW5nZGFld29uZC1kb25nLCBKdW5nd29uLWd1Ci0JCQkJU2VvbmduYW0tc2kgR3llb25nZ2ktZG8gNDYyLTcyMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wOC1FNi03MiAgIChoZXgpCQlKRUJTRUUgRUxFQ1RST05JQ1MgQ08uLExURC4KLTA4RTY3MiAgICAgKGJhc2UgMTYpCQlKRUJTRUUgRUxFQ1RST05JQ1MgQ08uLExURC4KLQkJCQkyNC0zLCBTSU4gTEUgUk9BRCwgCi0JCQkJVEFJTkFOICA3MDI2OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMDgtRUEtNDQgICAoaGV4KQkJQWVyb2hpdmUgTmV0d29ya3MsIEluYy4KLTA4RUE0NCAgICAgKGJhc2UgMTYpCQlBZXJvaGl2ZSBOZXR3b3JrcywgSW5jLgotCQkJCTMzMCBHaWJyYWx0YXIgRHJpdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTA4LUVELUI5ICAgKGhleCkJCSBIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotMDhFREI5ICAgICAoYmFzZSAxNikJCSBIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJIFNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi0wOC1GMi1GNCAgIChoZXgpCQlOZXQgT25lIFBhcnRuZXJzIENvLixMdGQuCi0wOEYyRjQgICAgIChiYXNlIDE2KQkJTmV0IE9uZSBQYXJ0bmVycyBDby4sTHRkLgotCQkJCTItOCBIaWdhc2hpIFNoaW5hZ2F3YSAyLWNob21lLAotCQkJCVNoaW5hZ2F3YS1rdSwKLQkJCQlUb2t5byAgMTQwMDAwMgotCQkJCUpBUEFOCi0KLTA4LUY2LUY4ICAgKGhleCkJCUdFVCBFbmdpbmVlcmluZwotMDhGNkY4ICAgICAoYmFzZSAxNikJCUdFVCBFbmdpbmVlcmluZwotCQkJCTkzNTAgQm9uZCBBdmUKLQkJCQlFbCBDYWpvbiBDQSA5MjAyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMDgtRkEtRTAgICAoaGV4KQkJRm9oaG4gQXVkaW8gQUcKLTA4RkFFMCAgICAgKGJhc2UgMTYpCQlGb2hobiBBdWRpbyBBRwotCQkJCUhvaGVzIEdlc3RhZGUgMy03Ci0JCQkJTnVlcnRpbmdlbiBCVyA3MjYyMgotCQkJCUdFUk1BTlkKLQotMDgtRkMtNTIgICAoaGV4KQkJT3BlblhTIEJWCi0wOEZDNTIgICAgIChiYXNlIDE2KQkJT3BlblhTIEJWCi0JCQkJS29haWJvc2sgMwotCQkJCVRlcndpc3BlbCBGcmllc2xhbmQgODQwN0VECi0JCQkJTkVUSEVSTEFORFMKLQotMEMtMTMtMEIgICAoaGV4KQkJVW5pcW90ZXEgTHRkLgotMEMxMzBCICAgICAoYmFzZSAxNikJCVVuaXFvdGVxIEx0ZC4KLQkJCQlMZW1taW5rYWlzZW5rYXR1IDE0LTE4IEEKLQkJCQlUdXJrdSAgMjA1MjAgCi0JCQkJRklOTEFORAotCi0wQy0xNS1DNSAgIChoZXgpCQlTRFRFQyBDby4sIEx0ZC4KLTBDMTVDNSAgICAgKGJhc2UgMTYpCQlTRFRFQyBDby4sIEx0ZC4KLQkJCQkxNjcsIENodXJ5ZS0yRG9uZywgU2FzYW5nLUd1LAotCQkJCUJ1c2FuICAgNjE3LTcxNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wQy0xNy1GMSAgIChoZXgpCQlURUxFQ1NZUwotMEMxN0YxICAgICAoYmFzZSAxNikJCVRFTEVDU1lTCi0JCQkJMzEgY2hlbWluIGR1IGZpZWYgYXV4IHByZXRyZXMKLQkJCQlMJ09SQlJJRSAgODUyMDAKLQkJCQlGUkFOQ0UKLQotMEMtMUQtQzIgICAoaGV4KQkJU2VBSCBOZXR3b3JrcwotMEMxREMyICAgICAoYmFzZSAxNikJCVNlQUggTmV0d29ya3MKLQkJCQk5RiwgSVQgVmVudHVyZSBUb3dlciBFYXN0IFdpbmcgNzggR2FyYWstRG9uZywKLQkJCQlTZW91bCBTb25ncGEtZ3UgMTM4LTk1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wQy0yNy01NSAgIChoZXgpCQlWYWx1YWJsZSBUZWNob2xvZ2llcyBMaW1pdGVkCi0wQzI3NTUgICAgIChiYXNlIDE2KQkJVmFsdWFibGUgVGVjaG9sb2dpZXMgTGltaXRlZAotCQkJCTYwMiwgQ2VudHJlIFBvaW50LCBKLkIuTmFnYXIsCi0JCQkJQW5kaGVyaS1LdXJsYSBSb2FkLCBBbmRoZXJpIChFKQotCQkJCU11bWJhaSBNYWhhcmFzaHRyYSA0MDAwNTkKLQkJCQlJTkRJQQotCi0wQy0yQS02OSAgIChoZXgpCQllbGVjdHJpYyBpbXAsIGluY29ycG9yYXRlZAotMEMyQTY5ICAgICAoYmFzZSAxNikJCWVsZWN0cmljIGltcCwgaW5jb3Jwb3JhdGVkCi0JCQkJMTA5OCBXIEV2ZWx5biBBdmUsIFN0ZSAxMTgKLQkJCQlTdW5ueXZhbGUgQ2FsaWZvcm5pYSA5NDA4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMEMtMzctREMgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotMEMzN0RDICAgICAoYmFzZSAxNikJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTBDLTM5LTU2ICAgKGhleCkJCU9ic2VydmF0b3IgaW5zdHJ1bWVudHMKLTBDMzk1NiAgICAgKGJhc2UgMTYpCQlPYnNlcnZhdG9yIGluc3RydW1lbnRzCi0JCQkJUmlldGRla2tlcnN0cmFhdCA2Ci0JCQkJUmlkZGVya2VyayBadWlkIEhvbGxhbmQgMjk4NCBCTQotCQkJCU5FVEhFUkxBTkRTCi0KLTBDLTNDLTY1ICAgKGhleCkJCURvbWUgSW1hZ2luZyBJbmMKLTBDM0M2NSAgICAgKGJhc2UgMTYpCQlEb21lIEltYWdpbmcgSW5jCi0JCQkJNDAwIEZpZnRoIEF2IAotCQkJCVN1aXRlIDUwMAotCQkJCVdhbHRoYW0gTUEgMDI0NTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTBDLTQ2LTlEICAgKGhleCkJCU1TIFNlZGNvCi0wQzQ2OUQgICAgIChiYXNlIDE2KQkJTVMgU2VkY28KLQkJCQk4NzAxIENhc3RsZSBQYXJrIERyaXZlCi0JCQkJSW5kaWFuYXBvbGlzICA0NjI1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMEMtNEMtMzkgICAoaGV4KQkJTWl0cmFzdGFyIFRlY2hub2xvZ3kgCi0wQzRDMzkgICAgIChiYXNlIDE2KQkJTWl0cmFzdGFyIFRlY2hub2xvZ3kgCi0JCQkJNEYgTm8uNiBJbm5vdmF0aW9uIFJvYWQgSUkKLQkJCQlTY2llbmNlIFBhcmsKLQkJCQlIc2luLUNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0wQy01MS1GNyAgIChoZXgpCQlDSEFVVklOIEFSTk9VWAotMEM1MUY3ICAgICAoYmFzZSAxNikJCUNIQVVWSU4gQVJOT1VYCi0JCQkJTEEgUVVFVUUgREVWRUUKLQkJCQlSRVVYICAxNDEzMAotCQkJCUZSQU5DRQotCi0wQy01Ni01QyAgIChoZXgpCQlIeUJyb2FkIFZpc2lvbiAoSG9uZyBLb25nKSBUZWNobm9sb2d5IENvIEx0ZAotMEM1NjVDICAgICAoYmFzZSAxNikJCUh5QnJvYWQgVmlzaW9uIChIb25nIEtvbmcpIFRlY2hub2xvZ3kgQ28gTHRkCi0JCQkJVW5pdCAxODA4IDE4L0YgVG93ZXIgMyBFbnRlcnByaXNlIFNxdWFyZQotCQkJCTkgU2hldW5nIFl1ZXQgUm9hZAotCQkJCUtvd2xvb24gQmF5ICAKLQkJCQlIT05HIEtPTkcKLQotMEMtNTctRUIgICAoaGV4KQkJTXVlbGxlciBTeXN0ZW1zCi0wQzU3RUIgICAgIChiYXNlIDE2KQkJTXVlbGxlciBTeXN0ZW1zCi0JCQkJNDggTGVvbmEgRHJpdmUsIFN1aXRlIEMKLQkJCQlNaWRkbGVib3JvIE1BIDAyMzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy01QS0xOSAgIChoZXgpCQlBeHRpb24gU2RuIEJoZAotMEM1QTE5ICAgICAoYmFzZSAxNikJCUF4dGlvbiBTZG4gQmhkCi0JCQkJQTEzLTA3LCBTdWJhbmcgQXZlbnVlIFNlcnZpY2VkIFN1aXRlcwotCQkJCVBlcnNpYXJhbiBLZW1hanVhbiBTUzE2Ci0JCQkJU3ViYW5nIEpheWEgU2VsYW5nb3IgNDc1MDAKLQkJCQlNQUxBWVNJQQotCi0wQy02MC03NiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0wQzYwNzYgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMEMtNkUtNEYgICAoaGV4KQkJUHJpbWVWT0xUIENvLiwgTHRkLgotMEM2RTRGICAgICAoYmFzZSAxNikJCVByaW1lVk9MVCBDby4sIEx0ZC4KLQkJCQkyRi0zLCBOby4gOSwgTGFuZSAzLCBKaWh1IFJkLCBOZWlodQotCQkJCVRhaXBlaSAgMTE0OTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTBDLTcxLTVEICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMEM3MTVEICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wQy03NC1DMiAgIChoZXgpCQlBcHBsZSwgSW5jLgotMEM3NEMyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy03NS0yMyAgIChoZXgpCQlCRUlKSU5HIEdFSFVBIENBVFYgTkVUV09SSyBDTy4sTFRECi0wQzc1MjMgICAgIChiYXNlIDE2KQkJQkVJSklORyBHRUhVQSBDQVRWIE5FVFdPUksgQ08uLExURAotCQkJCU5vLjM1LE4uSHVheXVhbiBSRC4sSGFpZGlhbiBEaXN0cmljdAotCQkJCUJFSUpJTkcgIDEwMDA4MwotCQkJCUNISU5BCi0KLTBDLTc3LTFBICAgKGhleCkJCUFwcGxlLCBJbmMuCi0wQzc3MUEgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIGluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTBDLTdELTdDICAgKGhleCkJCUtleGlhbmcgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDbywgTHRkLgotMEM3RDdDICAgICAoYmFzZSAxNikJCUtleGlhbmcgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDbywgTHRkLgotCQkJCVJvb20gMTUwMiwgTG9uZ3hpIEhvdGVsIE5vLjM3ODggSmlhbmduYW4gQXZlbnVlLiAKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwNTMKLQkJCQlDSElOQQotCi0wQy04MS0xMiAgIChoZXgpCQlQUklWQVRFCi0wQzgxMTIgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTBDLTgyLTMwICAgKGhleCkJCVNIRU5aSEVOIE1BR05VUyBURUNITk9MT0dJRVMgQ08uLExURAotMEM4MjMwICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIE1BR05VUyBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCWMtNTA0LFNreXdvcnRoIEJ1aWxkaW5nLE5vLjggUm9hZCxIaWdoLXRlY2ggc291dGgsTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMEMtODItNkEgICAoaGV4KQkJV3VoYW4gSHVhZ29uZyBHZW51aW5lIE9wdGljcyBUZWNobm9sb2d5IENvLiwgTHRkCi0wQzgyNkEgICAgIChiYXNlIDE2KQkJV3VoYW4gSHVhZ29uZyBHZW51aW5lIE9wdGljcyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJU2NpZW5jZSAmIFRlY2hub2xvZ3kgUmVnaW9uIG9mIEhVU1QsIERvbmdodSBIaWdoLVRlY2ggWm9uZSAKLQkJCQlXdWhhbiBIdWJlaSA0MzAyMjMKLQkJCQlDSElOQQotCi0wQy04NC0xMSAgIChoZXgpCQlBLk8uIFNtaXRoIFdhdGVyIFByb2R1Y3RzCi0wQzg0MTEgICAgIChiYXNlIDE2KQkJQS5PLiBTbWl0aCBXYXRlciBQcm9kdWN0cwotCQkJCTI1NTg5IEh3eSAxCi0JCQkJTWNCZWUgU0MgMjkxMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTBDLTg1LTI1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTBDODUyNSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy04Qi1GRCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTBDOEJGRCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTBDLThELTk4ICAgKGhleCkJCVRPUCBFSUdIVCBJTkQgQ09SUAotMEM4RDk4ICAgICAoYmFzZSAxNikJCVRPUCBFSUdIVCBJTkQgQ09SUAotCQkJCThGLixObzc5LTEgWmhvdXppIFN0LiwgTmVpaHUgRGlzdHJpY3QsIFRhaXBlaSBDaXR5ICAoTmVpaHUgVGVjaG5vbG9neSBQYXJrKQotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTBDLTkyLTRFICAgKGhleCkJCVJpY2UgTGFrZSBXZWlnaGluZyBTeXN0ZW1zCi0wQzkyNEUgICAgIChiYXNlIDE2KQkJUmljZSBMYWtlIFdlaWdoaW5nIFN5c3RlbXMKLQkJCQkyMzAgV2VzdCBDb2xlbWFuIFN0Ci0JCQkJUmljZSBMYWtlIFdJIDU0ODY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy05RC01NiAgIChoZXgpCQlDb25zb3J0IENvbnRyb2xzIEx0ZAotMEM5RDU2ICAgICAoYmFzZSAxNikJCUNvbnNvcnQgQ29udHJvbHMgTHRkCi0JCQkJMTMgQ2FtcGlvbiBUZXJyYWNlCi0JCQkJTGVhbWluZ3RvbiBTcGEgIENWMzIgNFNVCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMEMtOUUtOTEgICAoaGV4KQkJU2Fua29zaGEgQ29ycG9yYXRpb24KLTBDOUU5MSAgICAgKGJhc2UgMTYpCQlTYW5rb3NoYSBDb3Jwb3JhdGlvbgotCQkJCTEtMTIsIE1peWFzaGltbwotCQkJCTEtQ2hvbWUsIENodW8ta3UKLQkJCQlTYWdhbWloYXJhLXNoaSBLYW5hZ2F3YS1rZW4gMjUyLTAyMTIKLQkJCQlKQVBBTgotCi0wQy1BMS0zOCAgIChoZXgpCQlCbGlucSBXaXJlbGVzcyBJbmMuCi0wQ0ExMzggICAgIChiYXNlIDE2KQkJQmxpbnEgV2lyZWxlc3MgSW5jLgotCQkJCTQwMCBNQVJDSCBSRCBVTklUIDI0MAotCQkJCUtBTkFUQSBPTiBLMkszSDQKLQkJCQlDQU5BREEKLQotMEMtQTItRjQgICAoaGV4KQkJQ2hhbWVsZW9uIFRlY2hub2xvZ3kgKFVLKSBMaW1pdGVkCi0wQ0EyRjQgICAgIChiYXNlIDE2KQkJQ2hhbWVsZW9uIFRlY2hub2xvZ3kgKFVLKSBMaW1pdGVkCi0JCQkJV2ludGVycyBCYXJuLCBIYWdncyBGYXJtIEJ1c2luZXNzIFBhcmsKLQkJCQlIYWdncyBSb2FkLCBGb2xsaWZvb3QKLQkJCQlIYXJyb2dhdGUgTm9ydGggWW9ya3NoaXJlIEhHMyAxRVEKLQkJCQlVTklURUQgS0lOR0RPTQotCi0wQy1BNC0wMiAgIChoZXgpCQlBbGNhdGVsIEx1Y2VudCBJUEQKLTBDQTQwMiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIEx1Y2VudCBJUEQKLQkJCQk2MDAgTWFyY2ggRHJpdmUKLQkJCQlLYW5hdGEgT250YXJpbyBrMmsyZTYKLQkJCQlDQU5BREEKLQotMEMtQTQtMkEgICAoaGV4KQkJT0IgVGVsZWNvbSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTBDQTQyQSAgICAgKGJhc2UgMTYpCQlPQiBUZWxlY29tIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTE3L0YsIEppYW5nb25nIEJ1aWxkaW5nCi0JCQkJTm8uMjAgV2Vuc2FuIFJvYWQKLQkJCQlIYW5nemhvdSBaaGVKaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi0wQy1BRi01QSAgIChoZXgpCQlHRU5VUyBQT1dFUiBJTkZSQVNUUlVDVFVSRVMgTElNSVRFRAotMENBRjVBICAgICAoYmFzZSAxNikJCUdFTlVTIFBPV0VSIElORlJBU1RSVUNUVVJFUyBMSU1JVEVECi0JCQkJU1BMLTMgUklJQ08gSU5EVVNUUklBTCBBUkVBCi0JCQkJU0lUQVBVUkEKLQkJCQlKQUlQVVIgUkFKQVNUSEFOIDMwMjAyMgotCQkJCUlORElBCi0KLTBDLUI0LUVGICAgKGhleCkJCURpZ2llbmNlIENvLixMdGQuCi0wQ0I0RUYgICAgIChiYXNlIDE2KQkJRGlnaWVuY2UgQ28uLEx0ZC4KLQkJCQkyMDQgQnVpbGRpbmcgZm9yIEdyb3d0aCwgR3VtaSBFbGVjdHJvbmljcyZJbmZvcm1hdGlvbiBUZWNobm9sb2d5IFJlc2VhcmNoIEluc3RpdHV0ZSwgMTcgQ2hlb21kYW5naWVvcC0xcm8sIAotCQkJCVNhbmRvbmctbXllb24sIEd1bWktc2ksIAotCQkJCUd1bWkgR3llb25nYnVrIAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0wQy1CRi0xNSAgIChoZXgpCQlHZW5ldGVjCi0wQ0JGMTUgICAgIChiYXNlIDE2KQkJR2VuZXRlYwotCQkJCTIyODAgYm91bCBBbGZyZWQtTm9iZWwKLQkJCQlTdWl0ZSA0MDAKLQkJCQlTdC4gTGF1cmVudCBRdWViZWMgSDRTIDJBNAotCQkJCUNBTkFEQQotCi0wQy1DMC1DMCAgIChoZXgpCQlNQUdORVRJIE1BUkVMTEkgU0lTVEVNQVMgRUxFQ1RST05JQ09TIE1FWElDTwotMENDMEMwICAgICAoYmFzZSAxNikJCU1BR05FVEkgTUFSRUxMSSBTSVNURU1BUyBFTEVDVFJPTklDT1MgTUVYSUNPCi0JCQkJQVYuIElORFVTVFJJQSAyMC8yMQotCQkJCUVMIFRSRUJPTAotCQkJCVRFUE9UWk9UTEFOIE1FWElDTyA1NDYwMAotCQkJCU1FWElDTwotCi0wQy1DMy1BNyAgIChoZXgpCQlNZXJpdGVjCi0wQ0MzQTcgICAgIChiYXNlIDE2KQkJTWVyaXRlYwotCQkJCVAuTy4gQm94IDgwMDMKLQkJCQlQYWluZXN2aWxsZSBPaGlvIDQ0MDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy1DNi1BQyAgIChoZXgpCQlEQUdTCi0wQ0M2QUMgICAgIChiYXNlIDE2KQkJREFHUwotCQkJCUFjZSBIaWdoIGVuZCBUb3dlciA3dGggMTgwMgotCQkJCVNlb3VsIEdldW1jaGVvbi1ndSAxNTMtODAyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTBDLUM5LUM2ICAgKGhleCkJCVNhbXdpbiBIb25nIEtvbmcgTGltaXRlZAotMENDOUM2ICAgICAoYmFzZSAxNikJCVNhbXdpbiBIb25nIEtvbmcgTGltaXRlZAotCQkJCVJtIDkwMS05MDIsIDkvRiwgRnV0dXJhIFBsYXphLAotCQkJCTExMS0xMTMgSG93IE1pbmcgU3RyZWV0LCBLd3VuIFRvbmcKLQkJCQlIb25nIEtvbmcgIAotCQkJCUNISU5BCi0KLTBDLUNELUQzICAgKGhleCkJCUVBU1RSSVZFUiBURUNITk9MT0dZIENPLiwgTFRELgotMENDREQzICAgICAoYmFzZSAxNikJCUVBU1RSSVZFUiBURUNITk9MT0dZIENPLiwgTFRELgotCQkJCTMwIEpJTk5JVSBYSU5DVU4KLQkJCQlHVUFOQ0hFTkcgRElTVFJJQ1QKLQkJCQlET05HR1VBTiBHVUFOR0RPTkcgNTIzMDEwCi0JCQkJQ0hJTkEKLQotMEMtRDItOTIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi0wQ0QyOTIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi0wQy1EMi1CNSAgIChoZXgpCQlCaW5hdG9uZSBUZWxlY29tbXVuaWNhdGlvbiBQdnQuIEx0ZAotMENEMkI1ICAgICAoYmFzZSAxNikJCUJpbmF0b25lIFRlbGVjb21tdW5pY2F0aW9uIFB2dC4gTHRkCi0JCQkJQTM2LCBHL0YsIFNlY3RvciA0Ci0JCQkJTm9pZGEKLQkJCQlVdHRhciBQcmFkZXNoIDIwMTMwMQotCQkJCUlORElBCi0KLTBDLUQ1LTAyICAgKGhleCkJCVdlc3RlbGwKLTBDRDUwMiAgICAgKGJhc2UgMTYpCQlXZXN0ZWxsCi0JCQkJNzUwIE4uIENvbW1vbnMgZHIuCi0JCQkJQXVyb3JhIElMIDYwNTA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy1ENi05NiAgIChoZXgpCQlBbWltb24gTHRkCi0wQ0Q2OTYgICAgIChiYXNlIDE2KQkJQW1pbW9uIEx0ZAotCQkJCTIgTWFza2l0IHN0Ci0JCQkJUE8gQm94IDEyNjE4Ci0JCQkJSGVyemxpYSAgNDY3MzMKLQkJCQlJU1JBRUwKLQotMEMtRDctQzIgICAoaGV4KQkJQXhpdW0gVGVjaG5vbG9naWVzLCBJbmMuCi0wQ0Q3QzIgICAgIChiYXNlIDE2KQkJQXhpdW0gVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNjYyNSBOLiBDYWxsZSBFdmEgTWlyYW5kYQotCQkJCVN0ZSBCCi0JCQkJSXJ3aW5kYWxlIENBIDkxNzAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy1ERC1FRiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotMENEREVGICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi0wQy1ERi1BNCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTBDREZBNCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMEMtRTUtRDMgICAoaGV4KQkJREggZWxlY3Ryb25pY3MgR21iSAotMENFNUQzICAgICAoYmFzZSAxNikJCURIIGVsZWN0cm9uaWNzIEdtYkgKLQkJCQlBbSBBbmdlciA4Ci0JCQkJQmVyZ2VuICA4MzM0NgotCQkJCUdFUk1BTlkKLQotMEMtRTctMDkgICAoaGV4KQkJRm94IENyeXB0byBCLlYuCi0wQ0U3MDkgICAgIChiYXNlIDE2KQkJRm94IENyeXB0byBCLlYuCi0JCQkJUC5PLiBib3ggNjM4Ci0JCQkJRGVsZnQgWkggMjYwMCBBUAotCQkJCU5FVEhFUkxBTkRTCi0KLTBDLUU4LTJGICAgKGhleCkJCUJvbmZpZ2xpb2xpIFZlY3Ryb24gR21iSAotMENFODJGICAgICAoYmFzZSAxNikJCUJvbmZpZ2xpb2xpIFZlY3Ryb24gR21iSAotCQkJCUV1cm9wYXJrIEZpY2h0ZW5oYWluIEI2Ci0JCQkJS3JlZmVsZCBOUlcgNDc4MDcKLQkJCQlHRVJNQU5ZCi0KLTBDLUU5LTM2ICAgKGhleCkJCUVMSU1PUyBzcmwKLTBDRTkzNiAgICAgKGJhc2UgMTYpCQlFTElNT1Mgc3JsCi0JCQkJdmlhIEdhbHZhbmkgNS9DCi0JCQkJVFJJRVNURSAgMzQxMzMKLQkJCQlJVEFMWQotCi0wQy1FRS1FNiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0wQ0VFRTYgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMEMtRUYtN0MgICAoaGV4KQkJQW5hQ29tIEluYwotMENFRjdDICAgICAoYmFzZSAxNikJCUFuYUNvbSBJbmMKLQkJCQkxOTk2IEx1bmR5IEF2ZQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0wQy1GMC1CNCAgIChoZXgpCQlHbG9iYWxzYXQgSW50ZXJuYXRpb25hbCBUZWNobm9sb2d5IEx0ZAotMENGMEI0ICAgICAoYmFzZSAxNikJCUdsb2JhbHNhdCBJbnRlcm5hdGlvbmFsIFRlY2hub2xvZ3kgTHRkCi0JCQkJMTd0aCBmbG9vcixDaGluYSBZb3VzZSBCdWlsZGluZyxOby42MDEzIFNoZW5uYW4gQXZlbnVlLEZ1dGlhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotMEMtRjMtRUUgICAoaGV4KQkJRU0gTWljcm9lbGVjdHJvbmljCi0wQ0YzRUUgICAgIChiYXNlIDE2KQkJRU0gTWljcm9lbGVjdHJvbmljCi0JCQkJUnVlIGRlcyBTb3JzIDMKLQkJCQlNYXJpbi1FcGFnaW5lciBOZXVjaHRlbCAyMDc0Ci0JCQkJU1dJVFpFUkxBTkQKLQotMEMtRkMtODMgICAoaGV4KQkJQWlyb2hhIFRlY2hub2xvZ3kgQ29ycC4sCi0wQ0ZDODMgICAgIChiYXNlIDE2KQkJQWlyb2hhIFRlY2hub2xvZ3kgQ29ycC4sCi0JCQkJNUYsIE5vLjYtNSwgRHVzaGluZyBSb2FkICwgSHNpbmNodSBTY2llbmNlIFBhcmsKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTEwLTAwLTAwICAgKGhleCkJCVBSSVZBVEUKLTEwMDAwMCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMTAtMDAtNUEgICAoaGV4KQkJSUJNIENvcnAKLTEwMDA1QSAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJvYWQKLQkJCQlQLk8uIEJPWCAxMjE5NQotCQkJCVJlc2VhcmNoIFRyaWFuZ2xlIFBhcmsgTkMgMjc3MDktMjE5NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtMDAtRTggICAoaGV4KQkJTkFUSU9OQUwgU0VNSUNPTkRVQ1RPUgotMTAwMEU4ICAgICAoYmFzZSAxNikJCU5BVElPTkFMIFNFTUlDT05EVUNUT1IKLQkJCQkyOTAwIFNFTUlDT05EVUNUT1IgRFJJVkUKLQkJCQlTQU5UQSBDTEFSQSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtMDAtRkQgICAoaGV4KQkJTGFvblBlb3BsZQotMTAwMEZEICAgICAoYmFzZSAxNikJCUxhb25QZW9wbGUKLQkJCQk0MDItMywgQnVuZGFuZyBUZWNobm8gUGFyayBCLCAxNDgKLQkJCQlZYXRhcC1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJU3VuZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTEwLTA5LTBDICAgKGhleCkJCUphbm9tZSBTZXdpbmcgTWFjaGluZSBDby4sIEx0ZC4KLTEwMDkwQyAgICAgKGJhc2UgMTYpCQlKYW5vbWUgU2V3aW5nIE1hY2hpbmUgQ28uLCBMdGQuCi0JCQkJMTQ2MyBIYXphbWEtTWFjaGkKLQkJCQlIYWNoaW9qaS1TaGkgVG9reW8gMTkzLTA5NDEKLQkJCQlKQVBBTgotCi0xMC0wQi1BOSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTEwMEJBOSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTEwLTBDLTI0ICAgKGhleCkJCXBvbWRldmljZXMsIExMQwotMTAwQzI0ICAgICAoYmFzZSAxNikJCXBvbWRldmljZXMsIExMQwotCQkJCTE3OCBDb2x2YXJkIFBhcmsgRHIKLQkJCQlEdXJoYW0gTkMgMjc3MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTBELTJGICAgKGhleCkJCU9ubGluZSBTZWN1cml0eSBQdHkuIEx0ZC4KLTEwMEQyRiAgICAgKGJhc2UgMTYpCQlPbmxpbmUgU2VjdXJpdHkgUHR5LiBMdGQuCi0JCQkJNS8yMS0yNSBSZWRsYW5kIERyaXZlCi0JCQkJTWl0Y2hhbSBWSUMgMzEzMgotCQkJCUFVU1RSQUxJQQotCi0xMC0wRC0zMiAgIChoZXgpCQlFbWJlZGlhbiwgSW5jLgotMTAwRDMyICAgICAoYmFzZSAxNikJCUVtYmVkaWFuLCBJbmMuCi0JCQkJMTBGLiwgOTUsIE5hbmppbmcgRS4gUmQuIFNlYy4gNCwgCi0JCQkJVGFpcGVpICAxMDU4MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMTAtMEUtMkIgICAoaGV4KQkJTkVDIENBU0lPIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMTAwRTJCICAgICAoYmFzZSAxNikJCU5FQyBDQVNJTyBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLQkJCQkxNzUzLFNoaW1vbnVtYWJlCi0JCQkJTmFrYWhhcmEta3UKLQkJCQlLYXdhc2FraS1zaGkgS2FuYWdhd2EgMjExLTg2NjYKLQkJCQlKQVBBTgotCi0xMC0xMC1CNiAgIChoZXgpCQlNY0NhaW4gSW5jCi0xMDEwQjYgICAgIChiYXNlIDE2KQkJTWNDYWluIEluYwotCQkJCTIzNjUgT2FrIFJpZGdlIFdheQotCQkJCVZpc3RhIENBIDkyMDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMC0xMi0xMiAgIChoZXgpCQlWaXZvIEludGVybmF0aW9uYWwgQ29ycG9yYXRpb24gUHR5IEx0ZAotMTAxMjEyICAgICAoYmFzZSAxNikJCVZpdm8gSW50ZXJuYXRpb25hbCBDb3Jwb3JhdGlvbiBQdHkgTHRkCi0JCQkJOS0xMyBCaWJieSBTdHJlZXQsIAotCQkJCU5TVyBDaGlzd2ljayAyMDQ2Ci0JCQkJQVVTVFJBTElBCi0KLTEwLTEzLUVFICAgKGhleCkJCUp1c3RlYyBJbnRlcm5hdGlvbmFsIFRlY2hub2xvZ3kgSU5DLgotMTAxM0VFICAgICAoYmFzZSAxNikJCUp1c3RlYyBJbnRlcm5hdGlvbmFsIFRlY2hub2xvZ3kgSU5DLgotCQkJCTdGLTIgTm8gMTEzIFppaHlvdSBSb2FkCi0JCQkJSHNpbmNodSBDaXR5ICAzMDA0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMTAtMTgtOUUgICAoaGV4KQkJRWxtbyBNb3Rpb24gQ29udHJvbAotMTAxODlFICAgICAoYmFzZSAxNikJCUVsbW8gTW90aW9uIENvbnRyb2wKLQkJCQk2NCBHaXNpbiBTdC4KLQkJCQlQZXRhY2ggVGlrdmEgIDQ5MTAzCi0JCQkJSVNSQUVMCi0KLTEwLTFCLTU0ICAgKGhleCkJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotMTAxQjU0ICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCUQxLTRBNTJSLEh1YXdlaSBJbmR1c3RyaWFsIEJhc2UsIEJhbnRpYW4gTG9uZ2dhbmcsIAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi0xMC0xRC1DMCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTEwMURDMCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTAtMUYtNzQgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkgCi0xMDFGNzQgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkgCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTJELTk2ICAgKGhleCkJCUxvb3hjaWUgSW5jLgotMTAyRDk2ICAgICAoYmFzZSAxNikJCUxvb3hjaWUgSW5jLgotCQkJCTExOTYgQm9ycmVnYXMgQXZlLgotCQkJCVN1aXRlIDIwMAotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtMkUtQUYgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTEwMkVBRiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCBNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMC0zNy0xMSAgIChoZXgpCQlTaW1saW5rIEFTCi0xMDM3MTEgICAgIChiYXNlIDE2KQkJU2ltbGluayBBUwotCQkJCU90dG8gTmllbHNlbnMgVmVnIDEyCi0JCQkJVHJvbmRoZWltICBOLTcwMDQKLQkJCQlOT1JXQVkKLQotMTAtNDAtRjMgICAoaGV4KQkJQXBwbGUsIEluYy4KLTEwNDBGMyAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgaW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtNDMtNjkgICAoaGV4KQkJU291bmRtYXggRWxlY3Ryb25pYyBMaW1pdGVkIAotMTA0MzY5ICAgICAoYmFzZSAxNikJCVNvdW5kbWF4IEVsZWN0cm9uaWMgTGltaXRlZCAKLQkJCQlSb29tIzE1MDUsIE9yaWVudGFsIHBsYXphLCAjMTA3MiBKaWFuU2hlIFJvYWQKLQkJCQlTSEVOWkhFTiAgR3Vhbmdkb25nIDUxODAwMQotCQkJCUNISU5BCi0KLTEwLTQ0LTVBICAgKGhleCkJCVNoYWFueGkgSGl0ZWNoIEVsZWN0cm9uaWMgQ28uLCBMVEQKLTEwNDQ1QSAgICAgKGJhc2UgMTYpCQlTaGFhbnhpIEhpdGVjaCBFbGVjdHJvbmljIENvLiwgTFRECi0JCQkJMzUgVHVhbmppZW5hbiBSb2RlLAotCQkJCVhpYW4gU2hhYW54aSA3MTAwNzUKLQkJCQlDSElOQQotCi0xMC00NS1CRSAgIChoZXgpCQlOb3JwaG9uaWMgQVMKLTEwNDVCRSAgICAgKGJhc2UgMTYpCQlOb3JwaG9uaWMgQVMKLQkJCQlGYWJyaWtrZ2F0ZW4gMTAKLQkJCQlCZXJnZW4gIDUwNTkKLQkJCQlOT1JXQVkKLQotMTAtNDUtRjggICAoaGV4KQkJTE5ULUF1dG9tYXRpb24gR21iSAotMTA0NUY4ICAgICAoYmFzZSAxNikJCUxOVC1BdXRvbWF0aW9uIEdtYkgKLQkJCQlIYW5zLVBhdWwtS2F5c3Nlci1TdHJhw4PFuGUgMQotCQkJCUxldXRlbmJhY2gtTmVsbG1lcnNiYWNoIEJXIEQtNzEzOTcKLQkJCQlHRVJNQU5ZCi0KLTEwLTQ3LTgwICAgKGhleCkJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotMTA0NzgwICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCUQxLEh1YXdlaSBJbmR1c3RyaWFsIEJhc2UsQmFudGlhbixMb25nZ2FuZyxTaGVuemhlbgotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi0xMC01Ni1DQSAgIChoZXgpCQlQZXBsaW5rIEludGVybmF0aW9uYWwgTHRkLgotMTA1NkNBICAgICAoYmFzZSAxNikJCVBlcGxpbmsgSW50ZXJuYXRpb25hbCBMdGQuCi0JCQkJMTcvRiwgUGFyayBCdWlsZGluZywKLQkJCQk0NzYgQ2FzdGxlIFBlYWsgUm9hZCwKLQkJCQlDaGV1bmcgU2hhIFdhbiAgCi0JCQkJSE9ORyBLT05HCi0KLTEwLTYyLUM5ICAgKGhleCkJCUFkYXRpcyBHbWJIICYgQ28uIEtHCi0xMDYyQzkgICAgIChiYXNlIDE2KQkJQWRhdGlzIEdtYkggJiBDby4gS0cKLQkJCQlGb3JjaGhlaW1lciBTdHIuIDYKLQkJCQlO/HJuYmVyZyBCYXZhcmlhIDkwNDI1Ci0JCQkJR0VSTUFOWQotCi0xMC02NC1FMiAgIChoZXgpCQlBREZ3ZWIuY29tIHMuci5sLgotMTA2NEUyICAgICAoYmFzZSAxNikJCUFERndlYi5jb20gcy5yLmwuCi0JCQkJU3RyYWRhIE51b3ZhLCAxNwotCQkJCS4KLQkJCQlNYXJlbm8gZGkgUGlhdmUgVHJldmlzbyAzMTAxMAotCQkJCUlUQUxZCi0KLTEwLTY1LUEzICAgKGhleCkJCVBhbmFtYXggSW5jLgotMTA2NUEzICAgICAoYmFzZSAxNikJCVBhbmFtYXggSW5jLgotCQkJCTE2OTAgQ29ycG9yYXRlIENpcmNsZQotCQkJCVBldGFsdW1hIENBIDk0OTU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMC02Ri0zRiAgIChoZXgpCQlCdWZmYWxvIEluYy4KLTEwNkYzRiAgICAgKGJhc2UgMTYpCQlCdWZmYWxvIEluYy4KLQkJCQlBS0FNT05ET1JJIEJsZGcuLDMwLTIwCi0JCQkJT2hzdSAzLWNob21lLE5ha2Eta3UKLQkJCQlOYWdveWEgQWljaGkgNDYwLTgzMTUKLQkJCQlKQVBBTgotCi0xMC03MS1GOSAgIChoZXgpCQlDbG91ZCBUZWxlY29tcHV0ZXJzLCBMTEMKLTEwNzFGOSAgICAgKGJhc2UgMTYpCQlDbG91ZCBUZWxlY29tcHV0ZXJzLCBMTEMKLQkJCQkxMDMyIEVsd2VsbCBDb3VydAotCQkJCVN1aXRlIDIyMgotCQkJCVBhbG8gQWx0byBDQSA5NDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMTAtNzYtOEEgICAoaGV4KQkJRW9DZWxsCi0xMDc2OEEgICAgIChiYXNlIDE2KQkJRW9DZWxsCi0JCQkJMTQ5IEJlYWNvbnNmaWVsZCBTdHJlZXQKLQkJCQlTaWx2ZXJ3YXRlciBOU1cgMjEyOAotCQkJCUFVU1RSQUxJQQotCi0xMC03OC1EMiAgIChoZXgpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTSBDTy4sIExURC4KLTEwNzhEMiAgICAgKGJhc2UgMTYpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTSBDTy4sIExURC4KLQkJCQlOTy4gMjM5LCBTZWMuIDIsIFRpIERpbmcgQmx2ZC4KLQkJCQlUYWlwZWkgIDExNDkzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0xMC04My1EMiAgIChoZXgpCQlNaWNyb3NldmVuIFN5c3RlbXMsIExMQwotMTA4M0QyICAgICAoYmFzZSAxNikJCU1pY3Jvc2V2ZW4gU3lzdGVtcywgTExDCi0JCQkJNDA0IFNvdXRoIExlbW9uIEF2ZS4sICM5Ci0JCQkJV2FsbnV0IENhbGlmb3JuaWEgOTE3ODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTg4LTBGICAgKGhleCkJCURBUlVNQSBURUxFQ09NVU5JQ0HDg+KAocOD4oCiRVMgRSBJTkZPUk3Dg8KBVElDQSBTL0EKLTEwODgwRiAgICAgKGJhc2UgMTYpCQlEQVJVTUEgVEVMRUNPTVVOSUNBw4PigKHDg+KAokVTIEUgSU5GT1JNw4PCgVRJQ0EgUy9BCi0JCQkJQVZFTklEQSBJTkRFUEVOREVOQ0lBLCAzNTAwLCBMT1RFQU1FTlRPIElORFVTVFJJQUwKLQkJCQlUQVVCQVTDg+KAsCBTw4PGkk8gUEFVTE8gMTIwMzItMDAwCi0JCQkJQlJBWklMCi0KLTEwLThDLUNGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTEwOENDRiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTkzLUU5ICAgKGhleCkJCUFwcGxlLCBJbmMuCi0xMDkzRTkgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTlBLUREICAgKGhleCkJCUFwcGxlLCBJbmMuCi0xMDlBREQgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLTlGLUE5ICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jCi0xMDlGQTkgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMKLQkJCQk3NjAgTm9ydGggTWFyeSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLUExLTNCICAgKGhleCkJCUZVSklLVVJBIFJVQkJFUiBMVEQuCi0xMEExM0IgICAgIChiYXNlIDE2KQkJRlVKSUtVUkEgUlVCQkVSIExURC4KLQkJCQkxLTg0MCxNaWhhc2hpLE9taXlhCi0JCQkJU2FpdGFtYSAgIDMzMC0wODU2Ci0JCQkJSkFQQU4KLQotMTAtQTktMzIgICAoaGV4KQkJQmVpamluZyBDeWJlciBDbG91ZCBUZWNobm9sb2d5IENvLiAsTHRkLgotMTBBOTMyICAgICAoYmFzZSAxNikJCUJlaWppbmcgQ3liZXIgQ2xvdWQgVGVjaG5vbG9neSBDby4gLEx0ZC4KLQkJCQkyL0YsIFRvd2VyIEIsIEppbmdtZW5nIEhpZ2gtdGVjaCBCdWlsZGluZy4gTm8uIDUgU2hhbmdkaSBFYXN0IFJvYWQsIEhhaWRpYW4gRGlzdHJpY3QuCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotMTAtQjctRjYgICAoaGV4KQkJUGxhc3RvZm9ybSBJbmR1c3RyaWVzIEx0ZC4KLTEwQjdGNiAgICAgKGJhc2UgMTYpCQlQbGFzdG9mb3JtIEluZHVzdHJpZXMgTHRkLgotCQkJCVVuaXRzIDE1MDZBIC0gMTUxMiwgTWl0YSBDZW50cmUsCi0JCQkJNTUyLTU2NiBDYXN0bGUgUGVhayBSb2FkCi0JCQkJS3dhaSBDaHVuZyAgCi0JCQkJSE9ORyBLT05HCi0KLTEwLUJBLUE1ICAgKGhleCkJCUdBTkEgSSZDIENPLiwgTFRECi0xMEJBQTUgICAgIChiYXNlIDE2KQkJR0FOQSBJJkMgQ08uLCBMVEQKLQkJCQkxNTQtMTcga3lvdW5nZG9uZyBCL0QgM0Yga2FyYWstZG9uZyBzb25ncGEtZ3UKLQkJCQlTZW91bCBLb3JlYSAxMzgtMTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTEwLUJELTE4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTEwQkQxOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMC1CRi00OCAgIChoZXgpCQlBU1VTVEVLIENPTVBVVEVSIElOQy4KLTEwQkY0OCAgICAgKGJhc2UgMTYpCQlBU1VTVEVLIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMSS1URSBSRC4sUEVJVE9VCi0JCQkJVEFJUEVJIFRBSVdBTiAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTEwLUMyLUJBICAgKGhleCkJCVVUVCBDby4sIEx0ZC4KLTEwQzJCQSAgICAgKGJhc2UgMTYpCQlVVFQgQ28uLCBMdGQuCi0JCQkJNEYsIEh5dW4gQmxkZwotCQkJCTY1OC0yMiwgWWVva3NhbSAxLWRvbmcsIEdhbmduYW0tZ3UKLQkJCQlTZW91bCBLb3JlYSAxMzUtOTEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTEwLUM1LTg2ICAgKGhleCkJCUJJTyBTT1VORCBMQUIgQ08uLCBMVEQuCi0xMEM1ODYgICAgIChiYXNlIDE2KQkJQklPIFNPVU5EIExBQiBDTy4sIExURC4KLQkJCQlTdWl0ZSAzMTEsIDMxMiBTS24gVGVjaG5vIFBhcmsgCi0JCQkJQml6IENlbnRlciAxOTAtMSBTYW5nZGFld29uLWRvbmcsIEp1bmd3b24tZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbywgNDYyLTcyMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0xMC1DNi0xRiAgIChoZXgpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0xMEM2MUYgICAgIChiYXNlIDE2KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMTAtQzYtRkMgICAoaGV4KQkJR2FybWluIEludGVybmF0aW9uYWwKLTEwQzZGQyAgICAgKGJhc2UgMTYpCQlHYXJtaW4gSW50ZXJuYXRpb25hbAotCQkJCTEyMDAgRWFzdCAxNTFzdCBTdHJlZXQKLQkJCQlPbGF0aGUgIEtTIDY2MDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMC1DNy0zRiAgIChoZXgpCQlNaWRhcyBLbGFyayBUZWtuaWsgTHRkCi0xMEM3M0YgICAgIChiYXNlIDE2KQkJTWlkYXMgS2xhcmsgVGVrbmlrIEx0ZAotCQkJCUtsYXJrIFRla25payBCdWlsZGluZwotCQkJCVdhbHRlciBOYXNoIFJvYWQKLQkJCQlLaWRkZXJtaW5zdGVyIFdvcmNlc3RlcnNoaXJlIERZMTEgN0hKCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMTAtQ0EtODEgICAoaGV4KQkJUFJFQ0lBCi0xMENBODEgICAgIChiYXNlIDE2KQkJUFJFQ0lBCi0JCQkJTGUgcnVpc3NvbCBWRVlSQVMKLQkJCQlCUCAxMDYKLQkJCQlQUklWQVMgIDA3MDAxCi0JCQkJRlJBTkNFCi0KLTEwLUNDLURCICAgKGhleCkJCUFYSU1VTSBQUk9EVUlUUyBFTEVDVFJPTklRVUVTCi0xMENDREIgICAgIChiYXNlIDE2KQkJQVhJTVVNIFBST0RVSVRTIEVMRUNUUk9OSVFVRVMKLQkJCQlaSSBERUxUQSBJTkRVU1RSSUUKLQkJCQlCUCA3MSBMQSBWQUxFTlRJTkUKLQkJCQlNQVJTRUlMTEUgQ0VERVggMTEgIDEzMzY4Ci0JCQkJRlJBTkNFCi0KLTEwLUQxLURDICAgKGhleCkJCUlOU1RBUiBEZXV0c2NobGFuZCBHbWJICi0xMEQxREMgICAgIChiYXNlIDE2KQkJSU5TVEFSIERldXRzY2hsYW5kIEdtYkgKLQkJCQlBdWYgZGVyIEhvc3RlcnQgMTcKLQkJCQlIdWVuc3RldHRlbiBCZWNodGhlaW0gSGVzc2VuIDY1NTEwCi0JCQkJR0VSTUFOWQotCi0xMC1FMi1ENSAgIChoZXgpCQlRaSBIYXJkd2FyZSBJbmMuCi0xMEUyRDUgICAgIChiYXNlIDE2KQkJUWkgSGFyZHdhcmUgSW5jLgotCQkJCTU1NSA0VEggU1RSRUVUICM0MDMKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMC1FMy1DNyAgIChoZXgpCQlTZW9od2EgVGVsZWNvbQotMTBFM0M3ICAgICAoYmFzZSAxNikJCVNlb2h3YSBUZWxlY29tCi0JCQkJNjc4IFNlb2h3YSBCbGRnCi0JCQkJR2FzYW4tRG9uZywgR3VtY2hlb24tR3UgU2VvdWwgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0xMC1FNC1BRiAgIChoZXgpCQlBUFIsIExMQwotMTBFNEFGICAgICAoYmFzZSAxNikJCUFQUiwgTExDCi0JCQkJNDgwMCBVUyBIV1kgMjgwIFdlc3QKLQkJCQlPcGVsaWthIEFMIDM2ODAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMC1FNi1BRSAgIChoZXgpCQlTb3VyY2UgVGVjaG5vbG9naWVzLCBMTEMKLTEwRTZBRSAgICAgKGJhc2UgMTYpCQlTb3VyY2UgVGVjaG5vbG9naWVzLCBMTEMKLQkJCQkyOTEwIFdoaXRlaGFsbCBQYXJrIERyaXZlCi0JCQkJQ2hhcmxvdHRlIE5DIDI4MjczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xMC1FOC1FRSAgIChoZXgpCQlQaGFzZVNwYWNlCi0xMEU4RUUgICAgIChiYXNlIDE2KQkJUGhhc2VTcGFjZQotCQkJCTE5MzMgRGF2aXMgU3QgU3VpdGUgMzEyCi0JCQkJU2FuIExlYW5kcm8gQ0EgOTQ1NzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLUVFLUQ5ICAgKGhleCkJCUNhbm9nYSBQZXJraW5zIENvcnBvcmF0aW9uCi0xMEVFRDkgICAgIChiYXNlIDE2KQkJQ2Fub2dhIFBlcmtpbnMgQ29ycG9yYXRpb24KLQkJCQkyMDYwMCBQcmFpcmllIFN0cmVldAotCQkJCUNoYXRzd29ydGggQ0EgOTEzMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTEwLUY5LTZGICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzCi0xMEY5NkYgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MKLQkJCQk2MC0zOSAsIEthc2FuLWRvbmcsIEd1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTAtRjktRUUgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTEwRjlFRSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1IE91IDkwMjMwCi0JCQkJRklOTEFORAotCi0xMC1GQy01NCAgIChoZXgpCQlTaGFueSBFbGVjdHJvbmljIENvLiwgTHRkLiAKLTEwRkM1NCAgICAgKGJhc2UgMTYpCQlTaGFueSBFbGVjdHJvbmljIENvLiwgTHRkLiAKLQkJCQk0RiwgTm8uIDkyLCBTZWN0aW9uIDEsIE5laS1IdSBSb2FkCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTExLTAwLUFBICAgKGhleCkJCVBSSVZBVEUKLTExMDBBQSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMTQtMDctMDggICAoaGV4KQkJUFJJVkFURQotMTQwNzA4ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi0xNC0wNy1FMCAgIChoZXgpCQlBYnJhbnRpeCBBRwotMTQwN0UwICAgICAoYmFzZSAxNikJCUFicmFudGl4IEFHCi0JCQkJRm9lcnJsaWJ1Y2tzdHJhc3NlIDY2Ci0JCQkJWnVlcmljaCBaSCA4MDA1Ci0JCQkJU1dJVFpFUkxBTkQKLQotMTQtMTQtNEIgICAoaGV4KQkJRlVKSUFOIFNUQVItTkVUIENPTU1VTklDQVRJT04gQ08uLExURAotMTQxNDRCICAgICAoYmFzZSAxNikJCUZVSklBTiBTVEFSLU5FVCBDT01NVU5JQ0FUSU9OIENPLixMVEQKLQkJCQkxOS0yMiMgQnVpbGRpbmcsU3Rhci1uZXQgU2NpZW5jZSBQbGF6YSxKdXl1YW56aG91LCAKLQkJCQk2MTggSmluc2hhbiBSb2FkCi0JCQkJRlVaSE9VIEZVSklBTiAzNTAwMDIKLQkJCQlDSElOQQotCi0xNC0xQS01MSAgIChoZXgpCQlUcmVldGVjaCBTaXN0ZW1hcyBEaWdpdGFpcwotMTQxQTUxICAgICAoYmFzZSAxNikJCVRyZWV0ZWNoIFNpc3RlbWFzIERpZ2l0YWlzCi0JCQkJUHJhY2EgQ2xhdWRpbm8gQWx2ZXMsIDE0MQotCQkJCUF0aWJhaWEgU2FvIFBhdWxvIDEyOTQwLTgwMAotCQkJCUJSQVpJTAotCi0xNC0xQi1CRCAgIChoZXgpCQlWb2xleCBJbmMuCi0xNDFCQkQgICAgIChiYXNlIDE2KQkJVm9sZXggSW5jLgotCQkJCTkxNSBUYXRlIEJsdmQuIFNFCi0JCQkJU3VpdGUgMTMwCi0JCQkJSGlja29yeSBOQyAyODYwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMTQtMkQtRjUgICAoaGV4KQkJQW1waGl0ZWNoCi0xNDJERjUgICAgIChiYXNlIDE2KQkJQW1waGl0ZWNoCi0JCQkJMSwgcnVlIFJvYmVydCAmYW1wOyBTb25pYSBERUxBVU5BWQotCQkJCVBhcmlzICA3NTAxMQotCQkJCUZSQU5DRQotCi0xNC0zMC03QSAgIChoZXgpCQlBdmVybWV0cmljcwotMTQzMDdBICAgICAoYmFzZSAxNikJCUF2ZXJtZXRyaWNzCi0JCQkJMjk3MyBHbGVuZGFsZSBCbHZkLgotCQkJCUxvcyBBbmdlbGVzIENBIDkwMDM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xNC0zNS1CMyAgIChoZXgpCQlGdXR1cmUgRGVzaWducywgSW5jLgotMTQzNUIzICAgICAoYmFzZSAxNikJCUZ1dHVyZSBEZXNpZ25zLCBJbmMuCi0JCQkJMjcwMiBUcmlhbmEgQmx2ZAotCQkJCUh1bnRzdmlsbGUgQUwgMzU4MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE0LTM2LTA1ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0xNDM2MDUgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSBPdSA5MDIzMAotCQkJCUZJTkxBTkQKLQotMTQtMzctM0IgICAoaGV4KQkJUFJPQ09NIFN5c3RlbXMKLTE0MzczQiAgICAgKGJhc2UgMTYpCQlQUk9DT00gU3lzdGVtcwotCQkJCSMxMDAxLCBLcmFueiBUZWNobm8sIDU0NDItMQotCQkJCVNhbmdkYWV3b24tZG9uZywgSnVuZ3dvbi1ndQotCQkJCVNlb25nbmFtLXNpIEd5dW5nZ2ktZG8gNDYyLTcyOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0xNC0zQS1FQSAgIChoZXgpCQlEeW5hcG93ZXIgQ29tcGFueSBMTEMKLTE0M0FFQSAgICAgKGJhc2UgMTYpCQlEeW5hcG93ZXIgQ29tcGFueSBMTEMKLQkJCQk4NSBNZWFkb3dsYW5kIERyaXZlCi0JCQkJU291dGggQnVybGluZ3RvbiBWVCAwNTQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMTQtM0UtNjAgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTE0M0U2MCAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTYwMCBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDJFNgotCQkJCUNBTkFEQQotCi0xNC00OS03OCAgIChoZXgpCQlEaWdpdGFsIENvbnRyb2wgSW5jb3Jwb3JhdGVkCi0xNDQ5NzggICAgIChiYXNlIDE2KQkJRGlnaXRhbCBDb250cm9sIEluY29ycG9yYXRlZAotCQkJCTE5NjI1IDYybmQgQXZlIFMKLQkJCQlTdWl0ZSBCMTAzCi0JCQkJS2VudCBXQSA5ODAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMTQtNEMtMUEgICAoaGV4KQkJTWF4IENvbW11bmljYXRpb24gR21iSAotMTQ0QzFBICAgICAoYmFzZSAxNikJCU1heCBDb21tdW5pY2F0aW9uIEdtYkgKLQkJCQlTaWVtZW5zc3RyYXNzZSA0NwotCQkJCVJlbGxpbmdlbiAgMjU0NjIKLQkJCQlHRVJNQU5ZCi0KLTE0LTU0LTEyICAgKGhleCkJCUVudGlzIENvLiwgTHRkLgotMTQ1NDEyICAgICAoYmFzZSAxNikJCUVudGlzIENvLiwgTHRkLgotCQkJCTItMjAtNiwgSGFuYW9rYSBCbGRnLCA2RgotCQkJCU5paG9uYmFzaGkgSGFtYWNobywgQ2h1by1rdQotCQkJCVRva3lvICAxMDMwMDA3Ci0JCQkJSkFQQU4KLQotMTQtNUEtMDUgICAoaGV4KQkJQXBwbGUsIEluYy4KLTE0NUEwNSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTQtNjMtMDggICAoaGV4KQkJSkFCSUwgQ0lSQ1VJVCAoU0hBTkdIQUkpIExURC4KLTE0NjMwOCAgICAgKGJhc2UgMTYpCQlKQUJJTCBDSVJDVUlUIChTSEFOR0hBSSkgTFRELgotCQkJCUZMNS1VTklUIEEyIE5PLiAxNTI4IEdVTUVJIFJPQUQKLQkJCQlTSEFOR0hBSSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotMTQtNkEtMEIgICAoaGV4KQkJQ3lwcmVzcyBFbGVjdHJvbmljcyBMaW1pdGVkCi0xNDZBMEIgICAgIChiYXNlIDE2KQkJQ3lwcmVzcyBFbGVjdHJvbmljcyBMaW1pdGVkCi0JCQkJMTEvRi4sIEJsb2NrIEcsIEVhc3QgU3VuIEluZHVzdHJpYWwgQ2VudHJlLCAxNiBTaGluZyBZaXAgU3RyZWV0LAotCQkJCUt3dW4gVG9uZywgS293bG9vbgotCQkJCUhvbmcgS29uZyBuaWwgbmlsCi0JCQkJSE9ORyBLT05HCi0KLTE0LTZFLTBBICAgKGhleCkJCVBSSVZBVEUKLTE0NkUwQSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMTQtNzMtNzMgICAoaGV4KQkJVFVCSVRBSyBVRUtBRQotMTQ3MzczICAgICAoYmFzZSAxNikJCVRVQklUQUsgVUVLQUUKLQkJCQlBTklCQUwgU1QuCi0JCQkJR0VCWkUKLQkJCQlLT0NBRUxJICA0MTQ3MAotCQkJCVRVUktFWQotCi0xNC03NC0xMSAgIChoZXgpCQlSSU0KLTE0NzQxMSAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMTQtN0QtQjMgICAoaGV4KQkJSk9BIFRFTEVDT00uQ08uLExURAotMTQ3REIzICAgICAoYmFzZSAxNikJCUpPQSBURUxFQ09NLkNPLixMVEQKLQkJCQkxMDA3LFNpY294IHRvd2VyLDUxMy0xNCxTYW5nZGFld29uLWRvbmcsSnVuZ3dvbi1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2Mi04MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTQtN0QtQzUgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0xNDdEQzUgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0JCQkJMS0xMC0xLEhpZ2FzaGlrb3RhcmkKLQkJCQlOYWdhb2tha3lvLXNoaSBLeW90byA2MTctODU1NQotCQkJCUpBUEFOCi0KLTE0LTgyLTVCICAgKGhleCkJCUhlZmVpIFJhZGlvIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZAotMTQ4MjVCICAgICAoYmFzZSAxNikJCUhlZmVpIFJhZGlvIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCU5vLjEwOCwgWWluWGluZyBSb2FkLCBIaWdoLXRlY2ggRGV2ZWxvcG1lbnQgWm9uZSwgSGVmZWksIEFuaHVpIFByb3ZpbmNlLCBDaGluYQotCQkJCUhlZmVpIEFuaHVpIFByb3ZpbmNlIDIzMDA4OAotCQkJCUNISU5BCi0KLTE0LThBLTcwICAgKGhleCkJCUFEUyBHbWJICi0xNDhBNzAgICAgIChiYXNlIDE2KQkJQURTIEdtYkgKLQkJCQlJbSBSb2hud2VpaGVyIDM5Ci0JCQkJTG9obWFyIEdlcm1hbnkgRC01Mzc5NwotCQkJCUdFUk1BTlkKLQotMTQtOEYtQzYgICAoaGV4KQkJQXBwbGUsIEluYy4KLTE0OEZDNiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBjYSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTQtOTAtOTAgICAoaGV4KQkJS29uZ1RvcCBpbmR1c3RyaWFsKHNoZW4gemhlbilDTy4sTFRECi0xNDkwOTAgICAgIChiYXNlIDE2KQkJS29uZ1RvcCBpbmR1c3RyaWFsKHNoZW4gemhlbilDTy4sTFRECi0JCQkJeGlud3V5dWFuLGd1c2h1LFhpeGlhbmcsQmFvYW4sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTE0LTlGLUU4ICAgKGhleCkJCUxlbm92byBNb2JpbGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLTE0OUZFOCAgICAgKGJhc2UgMTYpCQlMZW5vdm8gTW9iaWxlIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBMdGQuCi0JCQkJTm8uOTk5LFFpc2hhbiBOb3J0aCAybmQgUm9hZCxJbmZvcm1hdGlvbiZPcHRvZWxlY3Ryb25pY3MgUGFyayxUb3JjaCBIaS10ZWNoIEluZHVzdHJ5IERldmVsb3BtZW50IFpvbmUKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLTE0LUE2LTJDICAgKGhleCkJCVMuTS4gRGV6YWMgUy5BLgotMTRBNjJDICAgICAoYmFzZSAxNikJCVMuTS4gRGV6YWMgUy5BLgotCQkJCVZpYWwgU2FudCBqb3JkaSBTL04KLQkJCQlQb2wuIEluZC4gQ2FuIE1pdGphbnMKLQkJCQlWaWxhZGVjYXZhbGxzIEJhcmNlbG9uYSAwODIzMgotCQkJCVNQQUlOCi0KLTE0LUE4LTZCICAgKGhleCkJCVNoZW5aaGVuIFRlbGFjb20gU2NpZW5jZSZUZWNobm9sb2d5IENvLiwgTHRkCi0xNEE4NkIgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gVGVsYWNvbSBTY2llbmNlJlRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlCMTcwMS8xNzA1IFBhdmlsaW9uLCBIdWEgUWlhbmcgQmVpIFJENDAwMiwgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTE0LUE5LUUzICAgKGhleCkJCU1TVCBDT1JQT1JBVElPTgotMTRBOUUzICAgICAoYmFzZSAxNikJCU1TVCBDT1JQT1JBVElPTgotCQkJCTR0aCBGbG9vciBMYXdmb3JkIEhvdXNlCi0JCQkJQWxiZXJ0IFBsYWNlCi0JCQkJTG9uZG9uIEVuZ2xhbmQgTjMgMSBSTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTE0LUIxLUM4ICAgKGhleCkJCUluZmluaVdpbmcsIEluYy4KLTE0QjFDOCAgICAgKGJhc2UgMTYpCQlJbmZpbmlXaW5nLCBJbmMuCi0JCQkJMTk5MjUgU3RldmVucyBDcmVlayBCbHZkCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xNC1CNy0zRCAgIChoZXgpCQlBUkNIRUFOIFRlY2hub2xvZ2llcwotMTRCNzNEICAgICAoYmFzZSAxNikJCUFSQ0hFQU4gVGVjaG5vbG9naWVzCi0JCQkJMjAgUGxhY2UgUHJheCBQYXJpcwotCQkJCU1PTlRBVUJBTiAgODIwMDAKLQkJCQlGUkFOQ0UKLQotMTQtQzItMUQgICAoaGV4KQkJU2FidGVjaCBJbmR1c3RyaWVzCi0xNEMyMUQgICAgIChiYXNlIDE2KQkJU2FidGVjaCBJbmR1c3RyaWVzCi0JCQkJMjMyMzEgTGEgUGFsbWEgQXZlCi0JCQkJWW9yYmEgTGluZGEgQ2EgOTI4ODctNDc4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTQtQ0YtOEQgICAoaGV4KQkJT0hTVU5HIEVMRUNUUk9OSUNTIENPLiwgTFRELgotMTRDRjhEICAgICAoYmFzZSAxNikJCU9IU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLQkJCQkxODEKLQkJCQlHT05HREFOLURPTkcKLQkJCQlHVU1JIEtZVU5HQlVLIDczMC0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTQtRDQtRkUgICAoaGV4KQkJUGFjZSBwbGMKLTE0RDRGRSAgICAgKGJhc2UgMTYpCQlQYWNlIHBsYwotCQkJCVZpY3RvcmlhIFJvYWQKLQkJCQlTYWx0YWlyZSBXZXN0IFlvcmtzaGlyZSBCRDE4IDNMRiwgRW5nbGFuZAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTE0LUQ2LTREICAgKGhleCkJCUQtTGluayBJbnRlcm5hdGlvbmFsCi0xNEQ2NEQgICAgIChiYXNlIDE2KQkJRC1MaW5rIEludGVybmF0aW9uYWwKLQkJCQkxIElOVEVSTkFUSU9OQUwgQlVTSU5FU1MgUEFSSwotCQkJCSMwMy0xMiwgVEhFIFNZTkVSR1kgCi0JCQkJNjA5OTE3Ci0JCQkJU0lOR0FQT1JFCi0KLTE0LUQ3LTZFICAgKGhleCkJCUNPTkNIIEVMRUNUUk9OSUMgQ28uLEx0ZAotMTRENzZFICAgICAoYmFzZSAxNikJCUNPTkNIIEVMRUNUUk9OSUMgQ28uLEx0ZAotCQkJCU5vLjMgS2VqaSAxc3QgTG9hZC4KLQkJCQlUYWluYW4gIDcwOTU1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0xNC1EQS1FOSAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLTE0REFFOSAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91LAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0xNC1FNC1FQyAgIChoZXgpCQltTG9naWMgTExDCi0xNEU0RUMgICAgIChiYXNlIDE2KQkJbUxvZ2ljIExMQwotCQkJCTg0NDAgV2FybmVyIERyaXZlCi0JCQkJU3VpdGUgQjIKLQkJCQlDdWx2ZXIgQ2l0eSBDQSA5MDIzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMTQtRTYtRTQgICAoaGV4KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0xNEU2RTQgICAgIChiYXNlIDE2KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJQnVpbGRpbmcgMjQgKGZsb29ycyAxLDMsNCw1KSBhbmQgMjggKGZsb29yczEtNCkgIENlbnRyYWwgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBQYXJrLFNoZW5uYW4gUmQsIE5hbnNoYW4sCi0JCQkJU2hlbnpoZW4sIEd1YW5nZG9uZyBQcm92aW5jZSwgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMTQtRUItMzMgICAoaGV4KQkJQlNNZWRpYXNvZnQgQ28uLCBMdGQuCi0xNEVCMzMgICAgIChiYXNlIDE2KQkJQlNNZWRpYXNvZnQgQ28uLCBMdGQuCi0JCQkJIzYwMywgR2FyZGVuIEJsZGcuLCAxNC0xMywgWW9pZG8tRG9uZywgWW91bmdkZXVuZ3BvLUd1Ci0JCQkJU2VvdWwgIDE1MC04NzEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTQtRUUtOUQgICAoaGV4KQkJQWlyTmF2IFN5c3RlbXMgTExDCi0xNEVFOUQgICAgIChiYXNlIDE2KQkJQWlyTmF2IFN5c3RlbXMgTExDCi0JCQkJNDY2MCBMYSBKb2xsYSBWaWxsYWdlIERyLiAtIFN1aXRlIDUwMAotCQkJCVNhbiBEaWVnbyBDYWxpZm9ybmlhIENBIDkyMTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xNC1GMC1DNSAgIChoZXgpCQlYdHJlbWlvIEx0ZC4KLTE0RjBDNSAgICAgKGJhc2UgMTYpCQlYdHJlbWlvIEx0ZC4KLQkJCQlQT0IgNTI0NgotCQkJCUhlcnplbHlpYSAgNDYxNTIKLQkJCQlJU1JBRUwKLQotMTQtRkUtQUYgICAoaGV4KQkJU0FHSVRUQVIgTElNSVRFRAotMTRGRUFGICAgICAoYmFzZSAxNikJCVNBR0lUVEFSIExJTUlURUQKLQkJCQkyLTEwMiwgQkxEMzQsIEJBSVdBTkdNT0xJWVVBTgotCQkJCVhJQkVJV0FORywgSEFJRElBTgotCQkJCUJFSUpJTkcgIDEwMDA5NAotCQkJCUNISU5BCi0KLTE0LUZFLUI1ICAgKGhleCkJCURlbGwgSW5jCi0xNEZFQjUgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TOlJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTAxLUUzICAgKGhleCkJCUVsZWt0cm9iaXQgV2lyZWxlc3MgQ29tbXVuaWNhdGlvbnMgTHRkCi0xODAxRTMgICAgIChiYXNlIDE2KQkJRWxla3Ryb2JpdCBXaXJlbGVzcyBDb21tdW5pY2F0aW9ucyBMdGQKLQkJCQlUdXRraWphbnRpZSA4Ci0JCQkJT3VsdSAgOTA1NzAKLQkJCQlGSU5MQU5ECi0KLTE4LTAzLTczICAgKGhleCkJCURlbGwgSW5jCi0xODAzNzMgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TOlJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTAzLUZBICAgKGhleCkJCUlCVCBJbnRlcmZhY2VzCi0xODAzRkEgICAgIChiYXNlIDE2KQkJSUJUIEludGVyZmFjZXMKLQkJCQlJbSBUYXViaGF1cyAxOQotCQkJCVJvZWRlcm1hcmsgSGVzc2VuIDYzMzIyCi0JCQkJR0VSTUFOWQotCi0xOC0wNi03NSAgIChoZXgpCQlESUxBWCBJbnRlbGNvbSBHbWJICi0xODA2NzUgICAgIChiYXNlIDE2KQkJRElMQVggSW50ZWxjb20gR21iSAotCQkJCUFsdC1Nb2FiaXQgOTZiCi0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotMTgtMEItNTIgICAoaGV4KQkJTmFub3Ryb24gVGVjaG5vbG9naWVzIEdtYkgKLTE4MEI1MiAgICAgKGJhc2UgMTYpCQlOYW5vdHJvbiBUZWNobm9sb2dpZXMgR21iSAotCQkJCUFsdC1Nb2FiaXQgNjAKLQkJCQlCZXJsaW4gIDEwNTU1Ci0JCQkJR0VSTUFOWQotCi0xOC0wQy03NyAgIChoZXgpCQlXZXN0aW5naG91c2UgRWxlY3RyaWMgQ29tcGFueSwgTExDCi0xODBDNzcgICAgIChiYXNlIDE2KQkJV2VzdGluZ2hvdXNlIEVsZWN0cmljIENvbXBhbnksIExMQwotCQkJCTEwMDAgV2VzdGluZ2hvdXNlIERyaXZlCi0JCQkJU3VpdGUgMTUyCi0JCQkJQ3JhbmJlcnJ5IFRvd25zaGlwIFBBIDE2MDY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xOC0xNC0yMCAgIChoZXgpCQlURUIgU0FTCi0xODE0MjAgICAgIChiYXNlIDE2KQkJVEVCIFNBUwotCQkJCVJEMjk0IC0gQ29ycGVhdQotCQkJCU1ldXJzYXVsdCBCdXJndW5keSAyMTE5MAotCQkJCUZSQU5DRQotCi0xOC0xNC01NiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotMTgxNDU2ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgT3UgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLTE4LTE3LTE0ICAgKGhleCkJCURBRVdPT0lTCi0xODE3MTQgICAgIChiYXNlIDE2KQkJREFFV09PSVMKLQkJCQk3RiBOYW1rd2FuZyBDZW50bGV4IEJsZGcuIDQ0MC00IENoZW9uZ2NoZW9uMi1kb25nIAotCQkJCUluY2hlb24gUHVweWVvbmctZ3UgODIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMTgtMTktM0YgICAoaGV4KQkJVGFtdHJvbiBPeQotMTgxOTNGICAgICAoYmFzZSAxNikJCVRhbXRyb24gT3kKLQkJCQlQLk8uQm94IDE1IChWZXN0b25rYXR1IDExKQotCQkJCVRhbXBlcmUgIDMzNTYxCi0JCQkJRklOTEFORAotCi0xOC0yMC0zMiAgIChoZXgpCQlBcHBsZSwgSW5jLgotMTgyMDMyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtMjgtNjEgICAoaGV4KQkJQWlyVGllcyBXaXJlbGVzcyBOZXR3b3JrcwotMTgyODYxICAgICAoYmFzZSAxNikJCUFpclRpZXMgV2lyZWxlc3MgTmV0d29ya3MKLQkJCQlH/GxiYWhhciBNYWguIEF2bmkgRGlsbGlnaWwgU29rLiBDZWxpayBJcyBNZXJrZXppIE5vOjUgTWVjaWRpeWVrb3kKLQkJCQlJU1RBTkJVTCAgMzQzOTQKLQkJCQlUVVJLRVkKLQotMTgtMkItMDUgICAoaGV4KQkJOEQgVGVjaG5vbG9naWVzCi0xODJCMDUgICAgIChiYXNlIDE2KQkJOEQgVGVjaG5vbG9naWVzCi0JCQkJNDE2LCBkZSBNYWlzb25uZXV2ZSBXZXN0Ci0JCQkJU3VpdGUgNDA2Ci0JCQkJTW9udHJlYWwsICBRdWViZWMgSDNBIDFMMgotCQkJCUNBTkFEQQotCi0xOC0yQy05MSAgIChoZXgpCQlDb25jZXB0IERldmVsb3BtZW50LCBJbmMuCi0xODJDOTEgICAgIChiYXNlIDE2KQkJQ29uY2VwdCBEZXZlbG9wbWVudCwgSW5jLgotCQkJCTE4ODEgTGFuZ2xleSBBdmVudWUKLQkJCQlJcnZpbmUgQ0EgOTI2MTQtNTYyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtMzMtOUQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMTgzMzlEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTM0LTUxICAgKGhleCkJCUFwcGxlLCBJbmMuCi0xODM0NTEgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIGluZmluaXRlIExvb3AKLQkJCQljdXBlcnRpbm8gY0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTM4LTI1ICAgKGhleCkJCVd1aGFuIExpbmdqaXUgSGlnaC10ZWNoIENvLixMdGQuCi0xODM4MjUgICAgIChiYXNlIDE2KQkJV3VoYW4gTGluZ2ppdSBIaWdoLXRlY2ggQ28uLEx0ZC4KLQkJCQlOby43MTgKLQkJCQlMdXl1IFJvYWQKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi0xOC0zOS0xOSAgIChoZXgpCQlVbmljb2kgU3lzdGVtcwotMTgzOTE5ICAgICAoYmFzZSAxNikJCVVuaWNvaSBTeXN0ZW1zCi0JCQkJNDEwIFBlYWNodHJlZSBQa3d5Ci0JCQkJQmxkZyA0MDAsIFN0ZSA0MjI2Ci0JCQkJQ3VtbWluZyBHQSAzMDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtM0ItRDIgICAoaGV4KQkJQllEIFByZWNpc2lvbiBNYW51ZmFjdHVyZSBDb21wYW55IEx0ZC4KLTE4M0JEMiAgICAgKGJhc2UgMTYpCQlCWUQgUHJlY2lzaW9uIE1hbnVmYWN0dXJlIENvbXBhbnkgTHRkLgotCQkJCU5vMzAwMCBMb25nRG9uZyBBdmVudWUsIFB1ZG9uZyBEaXN0cmljdAotCQkJCVNoYW5naGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi0xOC0zRC1BMiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTE4M0RBMiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTE4LTNGLTQ3ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMTgzRjQ3ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0xOC00Mi0xRCAgIChoZXgpCQlQUklWQVRFCi0xODQyMUQgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTE4LTQyLTJGICAgKGhleCkJCUFsY2F0ZWwgTHVjZW50Ci0xODQyMkYgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQKLQkJCQlWaWEgVHJlbnRvLCAzMAotCQkJCVZpbWVyY2F0ZSBNQiAyMDA1OQotCQkJCUlUQUxZCi0KLTE4LTQ2LTE3ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTE4NDYxNyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTE4LTRFLTk0ICAgKGhleCkJCU1FU1NPQSBURUNITk9MT0dJRVMgSU5DLgotMTg0RTk0ICAgICAoYmFzZSAxNikJCU1FU1NPQSBURUNITk9MT0dJRVMgSU5DLgotCQkJCTEzNjExIDEydGggU3QuLCBVbml0IEIKLQkJCQlDaGlubyBDQSA5MTcxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtNTktMzMgICAoaGV4KQkJQ2lzY28gU1BWVEcKLTE4NTkzMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlMYXdyZW5jZXZpbGxlIEdBICAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtNjYtRTMgICAoaGV4KQkJVmVyb3MgU3lzdGVtcywgSW5jLgotMTg2NkUzICAgICAoYmFzZSAxNikJCVZlcm9zIFN5c3RlbXMsIEluYy4KLQkJCQlQTyBCb3ggMTA1MzQKLQkJCQlDb2xsZWdlIFN0YXRpb24gVGV4YXMgNzc4NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LTY3LTUxICAgKGhleCkJCUtPTUVHIEluZHVzdHJpZWxsZSBNZXNzdGVjaG5payBHbWJICi0xODY3NTEgICAgIChiYXNlIDE2KQkJS09NRUcgSW5kdXN0cmllbGxlIE1lc3N0ZWNobmlrIEdtYkgKLQkJCQladW0gV2Fzc2Vyd2VyayAzCi0JCQkJVvZsa2xpbmdlbiAgNjYzMzMKLQkJCQlHRVJNQU5ZCi0KLTE4LTZELTk5ICAgKGhleCkJCUFkYW5pcyBJbmMuCi0xODZEOTkgICAgIChiYXNlIDE2KQkJQWRhbmlzIEluYy4KLQkJCQkjMTgwNiwgIFNhbWhvIGNlbnRlciBCIEJsZGcKLQkJCQkyNzUtNiwgWWFuZ2phZS1Eb25nLCBTZW9jaG8tS3UsIAotCQkJCVNFT1VMICAxMzctOTQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTE4LTdDLTgxICAgKGhleCkJCVZhbGVvIFZpc2lvbiBTeXN0ZW1zCi0xODdDODEgICAgIChiYXNlIDE2KQkJVmFsZW8gVmlzaW9uIFN5c3RlbXMKLQkJCQlEdW5tb3JlIFJvYWQKLQkJCQlUdWFtCi0JCQkJQ291bnR5IEdhbHdheSAgCi0JCQkJSVJFTEFORAotCi0xOC04MC1DRSAgIChoZXgpCQlCYXJiZXJyeSBTb2x1dGlvbnMgTHRkCi0xODgwQ0UgICAgIChiYXNlIDE2KQkJQmFyYmVycnkgU29sdXRpb25zIEx0ZAotCQkJCTIvMTMgTmF2aXRpIFBsYWNlCi0JCQkJQnJvd25zIEJheQotCQkJCUF1Y2tsYW5kICAwNjMwCi0JCQkJTkVXIFpFQUxBTkQKLQotMTgtODAtRjUgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQgU2hhbmdoYWkgQmVsbCBDby4sIEx0ZCAKLTE4ODBGNSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudCBTaGFuZ2hhaSBCZWxsIENvLiwgTHRkIAotCQkJCU5vLiAzODksIE5pbmdxaWFvIFJvYWQsIFB1ZG9uZyBKaW5xaWFvLAotCQkJCVNoYW5naGFpICAyMDEyMDYKLQkJCQlDSElOQQotCi0xOC04Ni1BQyAgIChoZXgpCQlOb2tpYSBEYW5tYXJrIEEvUwotMTg4NkFDICAgICAoYmFzZSAxNikJCU5va2lhIERhbm1hcmsgQS9TCi0JCQkJRnJlZGVyaWtza2FqCi0JCQkJQ29wZW5oYWdlbiBWICBESy0xNzkwCi0JCQkJREVOTUFSSwotCi0xOC04Ny05NiAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLTE4ODc5NiAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4gMjMsIFhpbmdodWEgUmQuLCAKLQkJCQlUYW95dWFuIENpdHkgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMTgtOEUtRDUgICAoaGV4KQkJUGhpbGlwcyBJbm5vdmF0aXZlIEFwcGxpY2F0aW9uIE5WIAotMTg4RUQ1ICAgICAoYmFzZSAxNikJCVBoaWxpcHMgSW5ub3ZhdGl2ZSBBcHBsaWNhdGlvbiBOViAKLQkJCQlQYXRob2VrZXdlZyAxMQotCQkJCUJydWdlcyBXZXN0IEZsYW5kZXJzIDgwMDAKLQkJCQlCRUxHSVVNCi0KLTE4LTkyLTJDICAgKGhleCkJCVZpcnR1YWwgSW5zdHJ1bWVudHMKLTE4OTIyQyAgICAgKGJhc2UgMTYpCQlWaXJ0dWFsIEluc3RydW1lbnRzCi0JCQkJMTAwIEVudGVycHJpc2UgV2F5Ci0JCQkJU3VpdGUgQy0zCi0JCQkJU2NvdHRzIFZhbGxleSBDQSA5NTA2NgotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtOTctRkYgICAoaGV4KQkJVGVjaEZhaXRoIFdpcmVsZXNzIFRlY2hub2xvZ3kgTGltaXRlZAotMTg5N0ZGICAgICAoYmFzZSAxNikJCVRlY2hGYWl0aCBXaXJlbGVzcyBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlCdWlsZGluZyBDLCBKaWEgTm8uNSwgUm9uZ2NoYW5nIEVhc3QgU3RyZWV0LCBCREEgRGlzdHJpY3QsIAotCQkJCUJlaWppbmcgIDEwMDE3NgotCQkJCUNISU5BCi0KLTE4LTlFLUZDICAgKGhleCkJCUFwcGxlIEluYwotMTg5RUZDICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUE5LTA1ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0xOEE5MDUgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtQUItRjUgICAoaGV4KQkJVWx0cmEgRWxlY3Ryb25pY3MgLSBFbGVjdHJpY3MKLTE4QUJGNSAgICAgKGJhc2UgMTYpCQlVbHRyYSBFbGVjdHJvbmljcyAtIEVsZWN0cmljcwotCQkJCUtpbmdzZGl0Y2ggTGFuZQotCQkJCUNoZWx0ZW5oYW0gR2xvdWNlc3RlcnNoaXJlIEdMNTEgOVBHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMTgtQUQtNEQgICAoaGV4KQkJUG9sb3N0YXIgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotMThBRDREICAgICAoYmFzZSAxNikJCVBvbG9zdGFyIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQkyRiwgTm8uMzUxLCBZYW5nZ3VhbmcgU3QuCi0JCQkJVGFpcGVpICAxMTQ5MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMTgtQUUtQkIgICAoaGV4KQkJU2llbWVucyBQcm9ncmFtbS0gdW5kIFN5c3RlbWVudHdpY2tsdW5nIEdtYkgmQ28uS0cKLTE4QUVCQiAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIFByb2dyYW1tLSB1bmQgU3lzdGVtZW50d2lja2x1bmcgR21iSCZDby5LRwotCQkJCUNvbW11bmljYXRpb25zLCBNZWRpYSBhbmQgVGVjaG5vbG9neQotCQkJCUhhcmJ1cmdlciBTY2hsb3Nzc3RyYXNzZSAxOAotCQkJCUhhbWJ1cmcgIEQtMjEwNzkKLQkJCQlHRVJNQU5ZCi0KLTE4LUFGLTlGICAgKGhleCkJCURJR0lUUk9OSUMgQXV0b21hdGlvbnNhbmxhZ2VuIEdtYkgKLTE4QUY5RiAgICAgKGJhc2UgMTYpCQlESUdJVFJPTklDIEF1dG9tYXRpb25zYW5sYWdlbiBHbWJICi0JCQkJQXVmIGRlciBMYW5nd2llcyAxCi0JCQkJV2FsbGJhY2ggSGVzc2VuIDY1NTEwCi0JCQkJR0VSTUFOWQotCi0xOC1CMi0wOSAgIChoZXgpCQlUb3JyZXkgUGluZXMgTG9naWMsIEluYwotMThCMjA5ICAgICAoYmFzZSAxNikJCVRvcnJleSBQaW5lcyBMb2dpYywgSW5jCi0JCQkJMTI2NTEgSGlnaCBCbHVmZiBEcml2ZSwgIzEwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtQjMtQkEgICAoaGV4KQkJTmV0bG9naWMgQUIKLTE4QjNCQSAgICAgKGJhc2UgMTYpCQlOZXRsb2dpYyBBQgotCQkJCURhdGF25GdlbiAxNEEKLQkJCQlBU0tJTSBW5HN0cmEgR/Z0YWxhbmQgNDM2MzIKLQkJCQlTV0VERU4KLQotMTgtQjQtMzAgICAoaGV4KQkJTmVzdCBMYWJzIEluYy4KLTE4QjQzMCAgICAgKGJhc2UgMTYpCQlOZXN0IExhYnMgSW5jLgotCQkJCTIzNSBBbG1hIAotCQkJCVBhbG8gQWx0byBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtQjUtOTEgICAoaGV4KQkJSS1TdG9ybQotMThCNTkxICAgICAoYmFzZSAxNikJCUktU3Rvcm0KLQkJCQlIb2d5ZS1kb25nLCBEb25nYW4tZ3UKLQkJCQkjMzAxLCBEYWVyaW0gUGxlemEsIDEwMjctMjAsMjEKLQkJCQlBbnlhbmctc2kgR3llb25nZ2ktZG8gNDMxLTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0xOC1CNy05RSAgIChoZXgpCQlJbnZveGlhCi0xOEI3OUUgICAgIChiYXNlIDE2KQkJSW52b3hpYQotCQkJCTg3IHJ1ZSBkdSBHb3V2ZXJuZXVyIEfpbmVyYWwgRWJvdekKLQkJCQlJc3N5LUxlcy1Nb3VsaW5lYXV4ICA5MjEzMAotCQkJCUZSQU5DRQotCi0xOC1DMC04NiAgIChoZXgpCQlCcm9hZGNvbSBDb3Jwb3JhdGlvbgotMThDMDg2ICAgICAoYmFzZSAxNikJCUJyb2FkY29tIENvcnBvcmF0aW9uCi0JCQkJNTMwMCBDYWxpZm9ybmlhIEF2ZW51ZQotCQkJCUlydmluZSBDQSA5MjYxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMTgtQzQtNTEgICAoaGV4KQkJVHVjc29uIEVtYmVkZGVkIFN5c3RlbXMKLTE4QzQ1MSAgICAgKGJhc2UgMTYpCQlUdWNzb24gRW1iZWRkZWQgU3lzdGVtcwotCQkJCTU2MjAgTm9ydGggS29sYiBSb2FkCi0JCQkJU3VpdGUgMTYwCi0JCQkJVHVjc29uIEFaIDg1NzUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xOC1EMC03MSAgIChoZXgpCQlEQVNBTiBTTUMsIEluYy4KLTE4RDA3MSAgICAgKGJhc2UgMTYpCQlEQVNBTiBTTUMsIEluYy4KLQkJCQkzMDksICBCdW5kYW5nIFRlY2hubyBQYXJrLCAxNTEsIFlhdGFwLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTE4LUQ2LTZBICAgKGhleCkJCUlubWFyc2F0Ci0xOEQ2NkEgICAgIChiYXNlIDE2KQkJSW5tYXJzYXQKLQkJCQk5OSBDaXR5IFJvYWQKLQkJCQlMb25kb24gIEVDMVkgMUFYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMTgtRTItODggICAoaGV4KQkJU1RUIENvbmRpZ2kKLTE4RTI4OCAgICAgKGJhc2UgMTYpCQlTVFQgQ29uZGlnaQotCQkJCUFnbmVzZnJpZHN2YWdlbiAxMTMgQQotCQkJCU1hbG1vIFNrYW5lIDIxMjM3Ci0JCQkJU1dFREVOCi0KLTE4LUUyLUMyICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTE4RTJDMiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTE4LUU3LUY0ICAgKGhleCkJCUFwcGxlLCBJbmMuCi0xOEU3RjQgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUU4LTBGICAgKGhleCkJCVZpa2luZyBFbGVjdHJvbmljcyBJbmMuCi0xOEU4MEYgICAgIChiYXNlIDE2KQkJVmlraW5nIEVsZWN0cm9uaWNzIEluYy4KLQkJCQkxNTMxIEluZHVzdHJpYWwgU3QKLQkJCQlIdWRzb24gV0kgNTQwMTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUVGLTYzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTE4RUY2MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTE4LUY0LTZBICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTE4RjQ2QSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMTgtRjYtNTAgICAoaGV4KQkJTXVsdGltZWRpYSBQYWNpZmljIExpbWl0ZWQKLTE4RjY1MCAgICAgKGJhc2UgMTYpCQlNdWx0aW1lZGlhIFBhY2lmaWMgTGltaXRlZAotCQkJCTEgTWF0aGVzb24gU3RyZWV0LCBTaGVsbCBUb3dlciAyOUYvMTIKLQkJCQlUaW1lIFNxdWFyZSwgQ2F1c2V3YXkgQmF5Ci0JCQkJMDAwMDAwCi0JCQkJSE9ORyBLT05HCi0KLTE4LUY4LTdBICAgKGhleCkJCWkzIEludGVybmF0aW9uYWwgSW5jLgotMThGODdBICAgICAoYmFzZSAxNikJCWkzIEludGVybmF0aW9uYWwgSW5jLgotCQkJCTc4MCBCaXJjaG1vdW50IFJvYWQKLQkJCQlVbml0IDE2Ci0JCQkJU2NhcmJvcm91Z2ggT250YXJpbyBNMUs1SDQKLQkJCQlDQU5BREEKLQotMTgtRkMtOUYgICAoaGV4KQkJQ2hhbmdoZSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTE4RkM5RiAgICAgKGJhc2UgMTYpCQlDaGFuZ2hlIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTZ0aCBGbG9vciwgQnVpbGRpbmcgQiwgRGFqaWFoYW8gU3F1YXJlLCBZdaGvYW4gMXN0IFJvYWQsIEJhb6GvYW4sIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDEKLQkJCQlDSElOQQotCi0xQy0wNi01NiAgIChoZXgpCQlJRFkgQ29ycG9yYXRpb24KLTFDMDY1NiAgICAgKGJhc2UgMTYpCQlJRFkgQ29ycG9yYXRpb24KLQkJCQlJREVNSVRTVSBLb3Jha3VlbiBCbGQgOUYKLQkJCQkxLTItMSBLb2lzaGlrYXdhCi0JCQkJQnVua3lvLWt1IFRva3lvIDExMi0wMDAyCi0JCQkJSkFQQU4KLQotMUMtMEItNTIgICAoaGV4KQkJRVBJQ09NIFMuQQotMUMwQjUyICAgICAoYmFzZSAxNikJCUVQSUNPTSBTLkEKLQkJCQlBdXRvdmlhIEFuZGFsdWNpYSBLbSAxMi43MDAKLQkJCQlQLkkgTG9zIEFuZ2VsZXMKLQkJCQlHZXRhZmUgTWFkcmlkIDI4OTA1Ci0JCQkJU1BBSU4KLQotMUMtMEYtQ0YgICAoaGV4KQkJU3lwcm8gT3B0aWNzIEdtYkgKLTFDMEZDRiAgICAgKGJhc2UgMTYpCQlTeXBybyBPcHRpY3MgR21iSAotCQkJCUNhcmwtWmVpc3MtUHJvbWVuYWRlIDEwCi0JCQkJSmVuYSBUaHVyaW5naWEgMDc3NDUKLQkJCQlHRVJNQU5ZCi0KLTFDLTEyLTlEICAgKGhleCkJCUlFRUUgUEVTIFBTUkMvU1VCICAgICAKLTFDMTI5RCAgICAgKGJhc2UgMTYpCQlJRUVFIFBFUyBQU1JDL1NVQiAgICAgCi0JCQkJIFdvcmtpbmcgR3JvdXAgSDcvU3ViIEM3IChJRUVFIFBDMzcuMjM4KQotCQkJCTQ0NSBIb2VzIExhbmUKLQkJCQlQaXNjYXRhd2F5IE5KIDA4ODU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xQy0xNC00OCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotMUMxNDQ4ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtMTctRDMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMUMxN0QzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtMTgtNEEgICAoaGV4KQkJU2hlblpoZW4gUmljaGVyTGluayBUZWNobm9sb2dpZXMgQ28uLExURAotMUMxODRBICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIFJpY2hlckxpbmsgVGVjaG5vbG9naWVzIENvLixMVEQKLQkJCQk3MDMsQnVpbGRpbmcgVzEtQSxIaWdoLVRlY2ggSW5kdXN0cmlhbCBQYXJrLEtlSmlOYW4gMXN0IFJvYWQsTmFuU2hhbiwKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotMUMtMTktREUgICAoaGV4KQkJZXlldmlzIEdtYkgKLTFDMTlERSAgICAgKGJhc2UgMTYpCQlleWV2aXMgR21iSAotCQkJCUh1bmRzc2NobGVlc3RyYXNzZSAyMwotCQkJCVJldXRsaW5nZW4gQlcgNzI3NjYKLQkJCQlHRVJNQU5ZCi0KLTFDLTFELTY3ICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTFDMUQ2NyAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotMUMtMzMtNEQgICAoaGV4KQkJSVRTIFRlbGVjb20KLTFDMzM0RCAgICAgKGJhc2UgMTYpCQlJVFMgVGVsZWNvbQotCQkJCTI5IEhhbWV0enVkYSBzdC4gCi0JCQkJQXp1ciBJc3JhZWwgNTgwMDAxCi0JCQkJSVNSQUVMCi0KLTFDLTM0LTc3ICAgKGhleCkJCUlubm92YXRpb24gV2lyZWxlc3MKLTFDMzQ3NyAgICAgKGJhc2UgMTYpCQlJbm5vdmF0aW9uIFdpcmVsZXNzCi0JCQkJMTE4NjkgVGVhbGUgU3RyZWV0Ci0JCQkJQ3VsdmVyIENpdHkgQ0EgOTAyMzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTFDLTM1LUYxICAgKGhleCkJCU5FVyBMaWZ0IE5ldWUgRWxla3Ryb25pc2NoZSBXZWdlIFN0ZXVlcnVuZ3NiYXUgR21iSAotMUMzNUYxICAgICAoYmFzZSAxNikJCU5FVyBMaWZ0IE5ldWUgRWxla3Ryb25pc2NoZSBXZWdlIFN0ZXVlcnVuZ3NiYXUgR21iSAotCQkJCUxvY2hoYW1lciBTY2hsYWcgOAotCQkJCUdyYWVmZWxmaW5nIEJhdmFyaWEgODIxNjYKLQkJCQlHRVJNQU5ZCi0KLTFDLTNBLTRGICAgKGhleCkJCUFjY3VTcGVjIEVsZWN0cm9uaWNzLCBMTEMKLTFDM0E0RiAgICAgKGJhc2UgMTYpCQlBY2N1U3BlYyBFbGVjdHJvbmljcywgTExDCi0JCQkJODE0MCBIYXd0aG9ybmUgRHJpdmUKLQkJCQlFcmllIFBlbm5zeWx2YW5pYSAxNjUwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtM0QtRTcgICAoaGV4KQkJU2lnbWEgS29raSBDby4sTHRkLgotMUMzREU3ICAgICAoYmFzZSAxNikJCVNpZ21hIEtva2kgQ28uLEx0ZC4KLQkJCQkxLTE5LTkgTWlkb3JpCi0JCQkJU3VtaWRhLWt1IFRva3lvIDEzMC0wMDIxCi0JCQkJSkFQQU4KLQotMUMtNDMtRUMgICAoaGV4KQkJSkFQQU4gQ0lSQ1VJVCBDTy4sTFRECi0xQzQzRUMgICAgIChiYXNlIDE2KQkJSkFQQU4gQ0lSQ1VJVCBDTy4sTFRECi0JCQkJTktGLUthd2FzYWtpLUJ1aWxkaW5nIDdGCi0JCQkJMS0yIEhpZ2FzaGlkYWNobyxLYXdhc2FraS1rdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMDAwMDUKLQkJCQlKQVBBTgotCi0xQy00NS05MyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotMUM0NTkzICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xQy00Qi1ENiAgIChoZXgpCQlBenVyZVdhdmUKLTFDNEJENiAgICAgKGJhc2UgMTYpCQlBenVyZVdhdmUKLQkJCQk4Ri4sIE5vLiA5NCwgQmFvc2hvbmcgUmQuCi0JCQkJWGluZGlhbiBDaXR5LCBUYWlwZWkgQ291bnR5ICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTFDLTUxLUI1ICAgKGhleCkJCVRlY2hheWEgTFRECi0xQzUxQjUgICAgIChiYXNlIDE2KQkJVGVjaGF5YSBMVEQKLQkJCQlQLk8uQiAxNTAwCi0JCQkJUGFyZGVzIEhhbm5hICAzNzAwCi0JCQkJSVNSQUVMCi0KLTFDLTVDLTU1ICAgKGhleCkJCVBSSU1BIENpbmVtYSwgSW5jCi0xQzVDNTUgICAgIChiYXNlIDE2KQkJUFJJTUEgQ2luZW1hLCBJbmMKLQkJCQkxOTAzIFdyaWdodCBQbGFjZSwgU3VpdGUgMzIwCi0JCQkJQ2FybHNiYWQgQ0EgOTIwMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTFDLTVGLUZGICAgKGhleCkJCUJlaWppbmcgRXJlbmViZW4gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkIFNoZW56aGVuIEJyYW5jaAotMUM1RkZGICAgICAoYmFzZSAxNikJCUJlaWppbmcgRXJlbmViZW4gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sTHRkIFNoZW56aGVuIEJyYW5jaAotCQkJCVJvb20gMTRBLCBCdWlsZGluZyBBLCBIb25nbG9uZyBDZW50cmFsIFBsYXphLCBOby4zMDAxLEhlcGluZyBSb2FkLCBMdW9odSBEaXN0cmljdCwgU2hlbnpoZW4gQ2l0eQotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDEKLQkJCQlDSElOQQotCi0xQy02Mi1COCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTFDNjJCOCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMUMtNjUtOUQgICAoaGV4KQkJTGl0ZW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTFDNjU5RCAgICAgKGJhc2UgMTYpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLDkwLENoaWVuIDEgUm9hZCxDaHVuZ0hvLFRhaXBlaSBIc2llbiwKLQkJCQlUYWlwZWkgIDIzNTg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0xQy02Ni02RCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uTHRkCi0xQzY2NkQgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLkx0ZAotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotMUMtNjktQTUgICAoaGV4KQkJUmVzZWFyY2ggSW4gTW90aW9uCi0xQzY5QTUgICAgIChiYXNlIDE2KQkJUmVzZWFyY2ggSW4gTW90aW9uCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgM1c4Ci0JCQkJQ0FOQURBCi0KLTFDLTZCLUNBICAgKGhleCkJCU1pdHN1bmFtaSBDby4sIEx0ZC4KLTFDNkJDQSAgICAgKGJhc2UgMTYpCQlNaXRzdW5hbWkgQ28uLCBMdGQuCi0JCQkJMi0zMC0xMSwgTmlzaGktZ290YW5kYSwgU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gIDE0MS0wMDMxCi0JCQkJSkFQQU4KLQotMUMtNkYtNjUgICAoaGV4KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLTFDNkY2NSAgICAgKGJhc2UgMTYpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCVBpbi1KZW4gQ2l0eSwKLQkJCQlQaW4tSmVuIFRhb3l1YW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0xQy03NS0wOCAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELiAKLTFDNzUwOCAgICAgKGJhc2UgMTYpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELiAKLQkJCQlOTy4gMjUsIFRIRSAzUkQgU3RyZWV0IEtVTlNIQU4gRVhQT1JUIFBST0NFU1NJTkcgWk9ORSAKLQkJCQlLVU5TSEFOIFNVWkhPVSAgMjE1MzAwIAotCQkJCUNISU5BCi0KLTFDLTdDLTExICAgKGhleCkJCUVJRCAKLTFDN0MxMSAgICAgKGJhc2UgMTYpCQlFSUQgCi0JCQkJUnVhIFF1aW50YSBkb3MgTWVkcm9uaGVpcm9zIAotCQkJCUNoYXJuZWNhIGRhIENhcGFyaWNhICAgMjgyMC00ODYKLQkJCQlQT1JUVUdBTAotCi0xQy03Qy00NSAgIChoZXgpCQlWaXRlayBJbmR1c3RyaWFsIFZpZGVvIFByb2R1Y3RzLCBJbmMuCi0xQzdDNDUgICAgIChiYXNlIDE2KQkJVml0ZWsgSW5kdXN0cmlhbCBWaWRlbyBQcm9kdWN0cywgSW5jLgotCQkJCTI4NDkyIENvbnN0ZWxsYXRpb24gUmQKLQkJCQlWYWxlbmNpYSBDQSA5MTM1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtN0UtRTUgICAoaGV4KQkJRC1MaW5rIEludGVybmF0aW9uYWwKLTFDN0VFNSAgICAgKGJhc2UgMTYpCQlELUxpbmsgSW50ZXJuYXRpb25hbAotCQkJCTEgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBQYXJrLCAjMDMtMTIsIFRoZSBTeW5lcmd5IAotCQkJCTYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi0xQy04My1CMCAgIChoZXgpCQlMaW5rZWQgSVAgR21iSAotMUM4M0IwICAgICAoYmFzZSAxNikJCUxpbmtlZCBJUCBHbWJICi0JCQkJS2lyY2hlbnN0cmFzc2UgOQotCQkJCUFuaWYgLyBOaWVkZXJhbG0gU0JHIDUwODEKLQkJCQlBVVNUUklBCi0KLTFDLTg0LTY0ICAgKGhleCkJCUZPUk1PU0EgV0lSRUxFU1MgQ09NTVVOSUNBVElPTiBDT1JQLgotMUM4NDY0ICAgICAoYmFzZSAxNikJCUZPUk1PU0EgV0lSRUxFU1MgQ09NTVVOSUNBVElPTiBDT1JQLgotCQkJCTExRi4sIE5vLjMtMiwgWXVhbnF1IFN0LiwgTmFuZ2FuZyBEaXN0LiwKLQkJCQlUYWlwZWkgQ2l0eSAxMTUKLQkJCQlUQUlXQU4sIFBST1ZJTkNFIE9GIENISU5BCi0KLTFDLThFLThFICAgKGhleCkJCURCIENvbW11bmljYXRpb24gJiBTeXN0ZW1zIENvLiwgbHRkLgotMUM4RThFICAgICAoYmFzZSAxNikJCURCIENvbW11bmljYXRpb24gJiBTeXN0ZW1zIENvLiwgbHRkLgotCQkJCTMtMyBZZW9uZ2Rlb2stZG9uZywgR2loZXVuZy1ndQotCQkJCVlvbmdpbi1zaSBHeWVvbmdnaS1kbyA0NDktOTA4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTFDLThGLThBICAgKGhleCkJCVBoYXNlIE1vdGlvbiBDb250cm9sIFNwQQotMUM4RjhBICAgICAoYmFzZSAxNikJCVBoYXNlIE1vdGlvbiBDb250cm9sIFNwQQotCQkJCXZpYSBBZGFtb2xpLCA0NjEKLQkJCQlHZW5vdmEgIElUMTYxNDEKLQkJCQlJVEFMWQotCi0xQy05NS01RCAgIChoZXgpCQlJLUxBWCBFTEVDVFJPTklDUyBJTkMuCi0xQzk1NUQgICAgIChiYXNlIDE2KQkJSS1MQVggRUxFQ1RST05JQ1MgSU5DLgotCQkJCTIyODMgQVJHRU5USUEgUkQuLSBVTklUICMgMTAKLQkJCQlNSVNTSVNTQVVHQSBPTi4gTDVOIDVaMgotCQkJCUNBTkFEQQotCi0xQy05Ny0zRCAgIChoZXgpCQlQUklDT00gRGVzaWduCi0xQzk3M0QgICAgIChiYXNlIDE2KQkJUFJJQ09NIERlc2lnbgotCQkJCTI3NTUgU2xvY3VtIFJkCi0JCQkJUGV5dG9uIENPIDgwODMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0xQy1BQS0wNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0xQ0FBMDcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xQy1BQi1BNyAgIChoZXgpCQlBcHBsZSwgSW5jLgotMUNBQkE3ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBpbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0xQy1BRi1GNyAgIChoZXgpCQlELUxJTksgSU5URVJOQVRJT05BTCBQVEUgTElNSVRFRAotMUNBRkY3ICAgICAoYmFzZSAxNikJCUQtTElOSyBJTlRFUk5BVElPTkFMIFBURSBMSU1JVEVECi0JCQkJMSBJTlRFUk5BVElPTkFMICBCVVNJTkVTUyAgUEFSSywKLQkJCQkgIzAzLTEyLCBUSEUgU1lORVJHWQotCQkJCTYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi0xQy1CMC05NCAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLTFDQjA5NCAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4gMjMsIFhpbmdodWEgUmQuLCBUYW95dWFuIENpdHkKLQkJCQlUYW95dWFuIENvdW50eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0xQy1CMS03RiAgIChoZXgpCQlORUMgQWNjZXNzVGVjaG5pY2EsIEx0ZC4KLTFDQjE3RiAgICAgKGJhc2UgMTYpCQlORUMgQWNjZXNzVGVjaG5pY2EsIEx0ZC4KLQkJCQk4MDAgU2hpbW9tYXRhCi0JCQkJS2FrZWdhd2EgU2hpenVva2EgNDM2LTg1MDEKLQkJCQlKQVBBTgotCi0xQy1CMi00MyAgIChoZXgpCQlUREMgQS9TCi0xQ0IyNDMgICAgIChiYXNlIDE2KQkJVERDIEEvUwotCQkJCVRlbGVo77+9amVuIDEKLQkJCQlPZGVuc2UgU++/vSAgNTIyMAotCQkJCURFTk1BUksKLQotMUMtQkItQTggICAoaGV4KQkJT0pTQyAiVWZpbXNraXkgWmF2b2QgIlByb21zdnlheiIKLTFDQkJBOCAgICAgKGJhc2UgMTYpCQlPSlNDICJVZmltc2tpeSBaYXZvZCAiUHJvbXN2eWF6IgotCQkJCTM5LCA1MCBsZXQgU1NTUgotCQkJCVVmYSBCYXNoa29ydG9zdGFuIDQ1MDA3MQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0xQy1CRC0wRSAgIChoZXgpCQlBbXBsaWZpZWQgRW5naW5lZXJpbmcgUHR5IEx0ZAotMUNCRDBFICAgICAoYmFzZSAxNikJCUFtcGxpZmllZCBFbmdpbmVlcmluZyBQdHkgTHRkCi0JCQkJNSBUdXJuZXIgQXZlbnVlCi0JCQkJQmVudGxleSBXQSA2MTAyCi0JCQkJQVVTVFJBTElBCi0KLTFDLUJELUI5ICAgKGhleCkJCUQtTElOSyBJTlRFUk5BVElPTkFMIFBURSBMSU1JVEVECi0xQ0JEQjkgICAgIChiYXNlIDE2KQkJRC1MSU5LIElOVEVSTkFUSU9OQUwgUFRFIExJTUlURUQKLQkJCQkxIElOVEVSTkFUSU9OQUwgIEJVU0lORVNTICBQQVJLLCAjMDMtMTIKLQkJCQlUSEUgU1lORVJHWSwgIDYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi0xQy1DMS1ERSAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotMUNDMURFICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTFDLUM2LTNDICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTFDQzYzQyAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuLCBOby45ICwgUGFyayBBdmVudWUgSUkKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyayAsCi0JCQkJSHNpbmNodSAgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMUMtRDQtMEMgICAoaGV4KQkJS3Jpd2FuIEluZHVzdHJpZS1FbGVrdHJvbmlrIEdtYkgKLTFDRDQwQyAgICAgKGJhc2UgMTYpCQlLcml3YW4gSW5kdXN0cmllLUVsZWt0cm9uaWsgR21iSAotCQkJCUFsbG1hbmQgMTEKLQkJCQlGb3JjaHRlbmJlcmcgQmFkZW4tV++/vXJ0ZW1iZXJnIEQtNzQ2NzAKLQkJCQlHRVJNQU5ZCi0KLTFDLURGLTBGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTFDREYwRiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTFDLUUxLTY1ICAgKGhleCkJCU1hcnNoYWwgQ29ycG9yYXRpb24KLTFDRTE2NSAgICAgKGJhc2UgMTYpCQlNYXJzaGFsIENvcnBvcmF0aW9uCi0JCQkJRmllbGQgVGhyZWUgU290b2thbmRhIEJsZGcuCi0JCQkJNS0zLTYsIFNvdG9rYW5kYSwgQ2hpeW9kYS1rdSBUb2t5byAxMDEtMDAyMQotCQkJCUpBUEFOCi0KLTFDLUUxLTkyICAgKGhleCkJCVFpc2RhIENvcnBvcmF0aW9uCi0xQ0UxOTIgICAgIChiYXNlIDE2KQkJUWlzZGEgQ29ycG9yYXRpb24KLQkJCQkxNTcgU2hhbi1ZaW5nIFJvYWQKLQkJCQlHdWVpc2hhbiBUYW95dWFuIDMzMwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMUMtRTItQ0MgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTFDRTJDQyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMUMtRjAtNjEgICAoaGV4KQkJU0NBUFMgR21iSAotMUNGMDYxICAgICAoYmFzZSAxNikJCVNDQVBTIEdtYkgKLQkJCQlCYWhuaG9mc3RyLiAxNwotCQkJCURlaXNlbmhvZmVuIEJhdmFyaWEgODIwNDEKLQkJCQlHRVJNQU5ZCi0KLTFDLUY0LUNBICAgKGhleCkJCUF2aXdlc3QKLTFDRjRDQSAgICAgKGJhc2UgMTYpCQlBdml3ZXN0Ci0JCQkJNiBydWUgZHUgUGF0aXMgVGF0ZWxpbgotCQkJCVJlbm5lcyAtLSAzNTcwMAotCQkJCUZSQU5DRQotCi0xQy1GNS1FNyAgIChoZXgpCQlUdXJ0bGUgSW5kdXN0cnkgQ28uLCBMdGQuCi0xQ0Y1RTcgICAgIChiYXNlIDE2KQkJVHVydGxlIEluZHVzdHJ5IENvLiwgTHRkLgotCQkJCTEtMTItNCBOaXNoaW5lbWluYW1pCi0JCQkJVHN1dGl1cmEgSWJhcmFraSAzMDAtMDg0MgotCQkJCUpBUEFOCi0KLTFDLUZFLUE3ICAgKGhleCkJCUlEZW50eXRlY2ggU29sdXRpbnMgTHRkLgotMUNGRUE3ICAgICAoYmFzZSAxNikJCUlEZW50eXRlY2ggU29sdXRpbnMgTHRkLgotCQkJCTE0IEhhZGF5YSBTdHJlZXQgCi0JCQkJUmFtYXQtIEhhc2hhcm9uICA0NzIyNgotCQkJCUlTUkFFTAotCi0yMC0wMS00RiAgIChoZXgpCQlMaW5lYSBSZXNlYXJjaCBMdGQKLTIwMDE0RiAgICAgKGJhc2UgMTYpCQlMaW5lYSBSZXNlYXJjaCBMdGQKLQkJCQkxIE1hcnF1aXMgQnVzaW5lc3MgQ2VudHJlCi0JCQkJUm95c3RvbiBSb2FkCi0JCQkJQmFsZG9jayBIZXJ0Zm9yZHNoaXJlIFNHNyA2WEwKLQkJCQlVTklURUQgS0lOR0RPTQotCi0yMC0wMi1BRiAgIChoZXgpCQlNdXJhdGEgTWFudWZhY3R1YXJpbmcgQ28uLEx0ZC4KLTIwMDJBRiAgICAgKGJhc2UgMTYpCQlNdXJhdGEgTWFudWZhY3R1YXJpbmcgQ28uLEx0ZC4KLQkJCQkxLTEwLTEgSGlnYXNoaWtvdGFyaQotCQkJCU5hZ2Fva2FreW8tc2hpIEt5b3RvIDYxNy04NTU1Ci0JCQkJSkFQQU4KLQotMjAtMDUtMDUgICAoaGV4KQkJUkFETUFYIENPTU1VTklDQVRJT04gUFJJVkFURSBMSU1JVEVECi0yMDA1MDUgICAgIChiYXNlIDE2KQkJUkFETUFYIENPTU1VTklDQVRJT04gUFJJVkFURSBMSU1JVEVECi0JCQkJRi0yNC8zNCwgSUlORCBGTE9PUiwgU0VDVE9SLTcKLQkJCQlST0hJTkksIAotCQkJCURFTEhJICAxMTAwODUKLQkJCQlJTkRJQQotCi0yMC0wNS1FOCAgIChoZXgpCQlPT08gIkluUHJvTWVkaWEiCi0yMDA1RTggICAgIChiYXNlIDE2KQkJT09PICJJblByb01lZGlhIgotCQkJCXByLjQ4MDYsIGQuNgotCQkJCVplbGVub2dyYWQgTW9zY293IDEyNDQ2NgotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0yMC0wQS01RSAgIChoZXgpCQlYaWFuZ3NoYW4gR2lhbnQgRWFnbGUgVGVjaG5vbG9neSBEZXZlbG9waW5nIGNvLixMVEQKLTIwMEE1RSAgICAgKGJhc2UgMTYpCQlYaWFuZ3NoYW4gR2lhbnQgRWFnbGUgVGVjaG5vbG9neSBEZXZlbG9waW5nIGNvLixMVEQKLQkJCQlKdWV4aSBSb2FkIG5vLjkgSnVleGkgc3RyZWV0IAotCQkJCVhpYW5nc2hhbiBDb3VudHkgWmhlamlhbmcgUHJvdmluY2UKLQkJCQlOaW5nYm8gWmhlamlhbmcgMzE1NzA4Ci0JCQkJQ0hJTkEKLQotMjAtMTAtN0EgICAoaGV4KQkJR2VtdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0yMDEwN0EgICAgIChiYXNlIDE2KQkJR2VtdGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJTm8uIDEgSmVuIEFpIFJvYWQgSHNpbmNodSBJbmR1c3RyaWFsIFBhcmsgSHVrb3UsCi0JCQkJTm8uIDE1LTEgWmhvbmdodWEgUm9hZCwgCi0JCQkJSHNpbmNodSAgMzAzNTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTIwLTEyLTU3ICAgKGhleCkJCU1vc3QgTHVja3kgVHJhZGluZyBMdGQKLTIwMTI1NyAgICAgKGJhc2UgMTYpCQlNb3N0IEx1Y2t5IFRyYWRpbmcgTHRkCi0JCQkJUm9vbTQwMyBOby41MDYgWmhvbmdzaGFuIFNvdXRoIDJuZCBSb2FkLFh1aHVpIERpc3RyaWN0IAotCQkJCVNoYW5naGFpICAyMDAwMzIKLQkJCQlDSElOQQotCi0yMC0xMy1FMCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTIwMTNFMCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMjAtMjEtQTUgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MgSW5jCi0yMDIxQTUgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MgSW5jCi0JCQkJNjAtMzksR2FzYW4tZG9uZyxHdW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTIwLTI1LTk4ICAgKGhleCkJCVRlbGV2aWV3Ci0yMDI1OTggICAgIChiYXNlIDE2KQkJVGVsZXZpZXcKLQkJCQkjNDAxIFNlaHdhLCAzNTUtMQotCQkJCVlhdGFwLCBCdW5kYW5nCi0JCQkJU3VuZ25hbSBHeWVvbmdnaSA0NjMtODI4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTIwLTJCLUMxICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTIwMkJDMSAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTEwMTA4Ci0JCQkJQ0hJTkEKLQotMjAtMkMtQjcgICAoaGV4KQkJS29uZyBZdWUgRWxlY3Ryb25pY3MgJiBJbmZvcm1hdGlvbiBJbmR1c3RyeSAoWGluaHVpKSBMdGQuCi0yMDJDQjcgICAgIChiYXNlIDE2KQkJS29uZyBZdWUgRWxlY3Ryb25pY3MgJiBJbmZvcm1hdGlvbiBJbmR1c3RyeSAoWGluaHVpKSBMdGQuCi0JCQkJS29uZyBZdWUgSW5kdXN0cmlhbCBQYXJrLCAxOCBLb25neXVlIFJvYWQsIEppbmd1emhvdQotCQkJCVhpbmh1aSBEaXN0cmljdCwgCi0JCQkJSmlhbmdtZW4gR3Vhbmdkb25nIDUyOTE0MQotCQkJCUNISU5BCi0KLTIwLTM3LTA2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTIwMzcwNiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yMC0zNy1CQyAgIChoZXgpCQlLdWlwZXJzIEVsZWN0cm9uaWMgRW5naW5lZXJpbmcgQlYKLTIwMzdCQyAgICAgKGJhc2UgMTYpCQlLdWlwZXJzIEVsZWN0cm9uaWMgRW5naW5lZXJpbmcgQlYKLQkJCQlIb3V0a29wZXJzc3RyYWF0IDYKLQkJCQlad2lqbmRyZWNodCBadWlkLUhvbGxhbmQgMzMzNCBLRAotCQkJCU5FVEhFUkxBTkRTCi0KLTIwLTQwLTA1ICAgKGhleCkJCWZlbm8gR21iSAotMjA0MDA1ICAgICAoYmFzZSAxNikJCWZlbm8gR21iSAotCQkJCUtvbHBpbmdyaW5nIDIyCi0JCQkJT2JlcmhhY2hpbmcgQmF2YXJpYSA4MjA0MQotCQkJCUdFUk1BTlkKLQotMjAtNDEtNUEgICAoaGV4KQkJU21hcnRlaCBkLm8uby4KLTIwNDE1QSAgICAgKGJhc2UgMTYpCQlTbWFydGVoIGQuby5vLgotCQkJCVRyZyB0aWdyb3ZjZXYgMQotCQkJCVRvbG1pbiAgNTIyMAotCQkJCVNMT1ZFTklBCi0KLTIwLTQ0LTNBICAgKGhleCkJCVNjaG5laWRlciBFbGVjdHJpYyBBc2lhIFBhY2lmaWMgTHRkCi0yMDQ0M0EgICAgIChiYXNlIDE2KQkJU2NobmVpZGVyIEVsZWN0cmljIEFzaWEgUGFjaWZpYyBMdGQKLQkJCQkxM0YgRWFzdCBXaW5nLCBXYXJ3aWNrIEhvdXNlLCBUYWlrb28gUGxhY2UKLQkJCQk5NzkgS2luZydzIFJvYWQKLQkJCQlRdWFycnkgQmF5ICAKLQkJCQlIT05HIEtPTkcKLQotMjAtNDYtQTEgICAoaGV4KQkJVkVDT1cgQ28uLCBMdGQKLTIwNDZBMSAgICAgKGJhc2UgMTYpCQlWRUNPVyBDby4sIEx0ZAotCQkJCTdGLiwgTm8uMTA1LCBaaG9uZ2NoZW5nIFJkLiwgVHVjaGVuZyBEaXN0LiwKLQkJCQlOZXcgVGFpcGVpIENpdHkgICAyMzY3NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMjAtNDYtRjkgICAoaGV4KQkJQWR2YW5jZWQgTmV0d29yayBEZXZpY2VzIChkYmE6QU5EKQotMjA0NkY5ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIE5ldHdvcmsgRGV2aWNlcyAoZGJhOkFORCkKLQkJCQkzODIwIFZlbnR1cmEgRHJpdmUKLQkJCQlBcmxpbmd0b24gSGVpZ2h0cyBJTCA2MDAwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMjAtNEEtQUEgICAoaGV4KQkJSGFuc2NhbiBTcGFpbiBTLkEuCi0yMDRBQUEgICAgIChiYXNlIDE2KQkJSGFuc2NhbiBTcGFpbiBTLkEuCi0JCQkJQXZkYS4gZGUgbGEgVmVnYSwgMQotCQkJCUFsY29iZW5kYXMgTWFkcmlkIDI4MTA4Ci0JCQkJU1BBSU4KLQotMjAtNEUtNkIgICAoaGV4KQkJQXh4YW5hKGlzcmFlbCkgbHRkCi0yMDRFNkIgICAgIChiYXNlIDE2KQkJQXh4YW5hKGlzcmFlbCkgbHRkCi0JCQkJSGFiYXJ6ZWwgMzgKLQkJCQlUZWwgYXZpdiAgNjk3MTAKLQkJCQlJU1JBRUwKLQotMjAtNEUtN0YgICAoaGV4KQkJTkVUR0VBUgotMjA0RTdGICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBTElGT1JOSUEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLTU5LUEwICAgKGhleCkJCVBhcmFnb24gVGVjaG5vbG9naWVzIEluYy4KLTIwNTlBMCAgICAgKGJhc2UgMTYpCQlQYXJhZ29uIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJNjggTm9ydGggNHRoIFJpbmcgUmQgV2VzdCwKLQkJCQlTdWl0ZSAxNUItSAotCQkJCUJlaWppbmcgIDEwMDA4MAotCQkJCUNISU5BCi0KLTIwLTVCLTJBICAgKGhleCkJCVBSSVZBVEUKLTIwNUIyQSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMjAtNUItNUUgICAoaGV4KQkJU2hlbnpoZW4gV29uaGUgVGVjaG5vbG9neSBDby4sIEx0ZAotMjA1QjVFICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFdvbmhlIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlTb3V0aCBCbG9jayAxMHRoIGZsb29yLCBZdWFueGluZyBCdWlsZGluZywgTm8uIDEKLQkJCQlTb25ncGluZ3NoYW4gUmQsIE5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTIwLTY0LTMyICAgKGhleCkJCVNBTVNVTkcgRUxFQ1RSTyBNRUNIQU5JQ1MgQ08uLExURC4KLTIwNjQzMiAgICAgKGJhc2UgMTYpCQlTQU1TVU5HIEVMRUNUUk8gTUVDSEFOSUNTIENPLixMVEQuCi0JCQkJMzE0LCBNYWV0YW4zLURvbmcsIFllb25ndG9uZy1HdQotCQkJCVN1d29uIEd5dW5nZ2ktRG8gNDQzLTc0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yMC02QS04QSAgIChoZXgpCQlXaXN0cm9uIEluZm9Db21tIE1hbnVmYWN0dXJpbmcoS3Vuc2hhbilDby4sTHRkLgotMjA2QThBICAgICAoYmFzZSAxNikJCVdpc3Ryb24gSW5mb0NvbW0gTWFudWZhY3R1cmluZyhLdW5zaGFuKUNvLixMdGQuCi0JCQkJMTY4IyBGaXJzdCBBdmVudWUsS3Vuc2hhbiBFeHBvcnQgUHJvY2Vzc2luZyBab25lCi0JCQkJS3Vuc2hhbiBKaWFuZ3N1IDIxNTMwMAotCQkJCUNISU5BCi0KLTIwLTZBLUZGICAgKGhleCkJCUF0bGFzIEVsZWt0cm9uaWsgVUsgTGltaXRlZAotMjA2QUZGICAgICAoYmFzZSAxNikJCUF0bGFzIEVsZWt0cm9uaWsgVUsgTGltaXRlZAotCQkJCUEyMiBCdWxpZGluZywgRG9yc2V0IEdyZWVuIFRlY2guIFBhcmsKLQkJCQlXaW5mcml0aCBOZXdidXJnaAotCQkJCURvcmNoZXN0ZXIgRG9yc2V0IERUMiA4WkIKLQkJCQlVTklURUQgS0lOR0RPTQotCi0yMC02Ri1FQyAgIChoZXgpCQlCcmFlbWFjIENBIExMQwotMjA2RkVDICAgICAoYmFzZSAxNikJCUJyYWVtYWMgQ0EgTExDCi0JCQkJNDMxMzQgT3Nnb29kIFJvYWQKLQkJCQlGcmVtb250IENBIDk0NTM5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yMC03Ni0wMCAgIChoZXgpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYyAKLTIwNzYwMCAgICAgKGJhc2UgMTYpCQlBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYyAKLQkJCQk3NjAgTm9ydGggTWFyeSBBdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLTdDLThGICAgKGhleCkJCVF1YW50YSBNaWNyb3N5c3RlbXMsSW5jLgotMjA3QzhGICAgICAoYmFzZSAxNikJCVF1YW50YSBNaWNyb3N5c3RlbXMsSW5jLgotCQkJCU5vLjUgTGFuZSA5MSxEb25nbWVpIFJkLgotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMjAtOUItQTUgICAoaGV4KQkJSklBWElORyBHTEVBRCBFbGVjdHJvbmljcyBDby4sTHRkCi0yMDlCQTUgICAgIChiYXNlIDE2KQkJSklBWElORyBHTEVBRCBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJTm8uNjYgWmhlbmd5dWFuIFJvYWQgaW4gVGFuZ2h1IEluZHVzdHJpYWwgR2FyZGVuIAotCQkJCUppYXhpbmcgRWNvbm9taWMgRGV2ZWxvcG1lbnQgWm9uZQotCQkJCUppYXhpbmcgWmhlamlhbmcgMzE0MDAzCi0JCQkJQ0hJTkEKLQotMjAtQTItRTcgICAoaGV4KQkJTGVlLURpY2tlbnMgTHRkCi0yMEEyRTcgICAgIChiYXNlIDE2KQkJTGVlLURpY2tlbnMgTHRkCi0JCQkJUnVzaHRvbiBSZAotCQkJCURlc2Jvcm91Z2gKLQkJCQlLZXR0ZXJpbmcgTm9ydGhhbXB0b25zaGlyZSBOTjE0IDJRVwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTIwLUFBLTI1ICAgKGhleCkJCUlQLU5FVCBMTEMKLTIwQUEyNSAgICAgKGJhc2UgMTYpCQlJUC1ORVQgTExDCi0JCQkJMTAyNTYgTi5XLiA0N3RoIFN0LgotCQkJCVN1bnJpc2UgRkwgMzMzNTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLUFBLTRCICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotMjBBQTRCICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotMjAtQjAtRjcgICAoaGV4KQkJRW5jbHVzdHJhIEdtYkgKLTIwQjBGNyAgICAgKGJhc2UgMTYpCQlFbmNsdXN0cmEgR21iSAotCQkJCVRlY2hub3BhcmtzdHJhc3NlIDEKLQkJCQladXJpY2ggWkggQ0gtODAwNQotCQkJCVNXSVRaRVJMQU5ECi0KLTIwLUIzLTk5ICAgKGhleCkJCUVudGVyYXN5cwotMjBCMzk5ICAgICAoYmFzZSAxNikJCUVudGVyYXN5cwotCQkJCTUwIE1pbnV0ZW1hbiBSZAotCQkJCUFuZG92ZXIgTUEgMDE4MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLUI3LUMwICAgKGhleCkJCU9taWNyb24gZWxlY3Ryb25pY3MgR21iSAotMjBCN0MwICAgICAoYmFzZSAxNikJCU9taWNyb24gZWxlY3Ryb25pY3MgR21iSAotCQkJCU9iZXJlcyBSaWVkIDEKLQkJCQlLbGF1cyAgNjgzMwotCQkJCUFVU1RSSUEKLQotMjAtQkItQzYgICAoaGV4KQkJSmFiaWwgQ2lyY3VpdCBIdW5nYXJ5IEx0ZC4KLTIwQkJDNiAgICAgKGJhc2UgMTYpCQlKYWJpbCBDaXJjdWl0IEh1bmdhcnkgTHRkLgotCQkJCUh1c3rhciBBbmRvciAxLgotCQkJCVRpc3ph+mp24XJvcyAgSC0zNTgwCi0JCQkJSFVOR0FSWQotCi0yMC1CRi1EQiAgIChoZXgpCQlEVkwKLTIwQkZEQiAgICAgKGJhc2UgMTYpCQlEVkwKLQkJCQkyMSBHcmFkaW5pbG9yIFN0cgotCQkJCUNoaXNpbmF1ICBNRDIwMDEKLQkJCQlNT0xET1ZBLCBSRVBVQkxJQyBPRgotCi0yMC1DMS1BRiAgIChoZXgpCQlpIFdpdCBEaWdpdGFsIENvLiwgTGltaXRlZAotMjBDMUFGICAgICAoYmFzZSAxNikJCWkgV2l0IERpZ2l0YWwgQ28uLCBMaW1pdGVkCi0JCQkJMzAzLEJ1aWRpbmcxLE5hbmhhaSBFY29vbCBJbm5vdmF0aW9uIFBhcmssCi0JCQkJTm8uNiBYaW5naHVhIFJvYWQsU2hla291Ci0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTIwLUM4LUIzICAgKGhleCkJCVNIRU5aSEVOIEJVTC1URUNIIENPLixMVEQuCi0yMEM4QjMgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gQlVMLVRFQ0ggQ08uLExURC4KLQkJCQlBcmVhIEMsNC9GLE5PLjU5LExvbmdqaW5nIDJuZCBSb2FkLAotCQkJCTNyZCBEaXN0cmljdCxCYW9hbiBEaXN0cmljdAotCQkJCVNIRU5aSEVOICBHdWFuZ0RvbmcgNTE4MTAxCi0JCQkJQ0hJTkEKLQotMjAtQ0YtMzAgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0yMENGMzAgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwgCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTIwLUQ1LUFCICAgKGhleCkJCUtvcmVhIEluZm9jb20gQ28uLEx0ZC4KLTIwRDVBQiAgICAgKGJhc2UgMTYpCQlLb3JlYSBJbmZvY29tIENvLixMdGQuCi0JCQkJNUYgV2ludGVrIEIvRCA1MTEKLQkJCQlQb2lsLWRvbmcKLQkJCQlVaXdhbmcgS3l1bmdnaS1EbyA0MzctODMwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTIwLUQ2LTA3ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0yMEQ2MDcgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotMjAtRDktMDYgICAoaGV4KQkJSW90YSwgSW5jLgotMjBEOTA2ICAgICAoYmFzZSAxNikJCUlvdGEsIEluYy4KLQkJCQkyMjEyIFF1ZWVuIEFubmUgQXZlLiBOLiwgIzM0OAotCQkJCVNlYXR0bGUgV0EgOTgxMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTIwLUU1LTY0ICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0yMEU1NjQgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yMC1FRS1DNiAgIChoZXgpCQlFbGVmaXJzdCBTY2llbmNlICYgVGVjaCBDbyAuLCBsdGQKLTIwRUVDNiAgICAgKGJhc2UgMTYpCQlFbGVmaXJzdCBTY2llbmNlICYgVGVjaCBDbyAuLCBsdGQKLQkJCQlGbG9vciA5LCBObyA3NyBaaWppbm1pbmdtZW4gQnVpbGRpbmcKLQkJCQlNdXh1eXVhbiBBdmVudWUKLQkJCQlOYW5qaW5nIEppYW5nc3UgMjEwMDA3Ci0JCQkJQ0hJTkEKLQotMjAtRjAtMDIgICAoaGV4KQkJTVREYXRhIERldmVsb3BtZW50cyBQdHkuIEx0ZC4KLTIwRjAwMiAgICAgKGJhc2UgMTYpCQlNVERhdGEgRGV2ZWxvcG1lbnRzIFB0eS4gTHRkLgotCQkJCTIwIE1pbGVzIFN0cmVldAotCQkJCU11bGdyYXZlIFZpY3RvcmlhIDMxNzAKLQkJCQlBVVNUUkFMSUEKLQotMjAtRjMtQTMgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotMjBGM0EzICAgICAoYmFzZSAxNikJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0yMC1GOC01RSAgIChoZXgpCQlEZWx0YSBFbGVjdHJvbmljcwotMjBGODVFICAgICAoYmFzZSAxNikJCURlbHRhIEVsZWN0cm9uaWNzCi0JCQkJMjUyIFNoYW5neWluZyBSb2FkCi0JCQkJR3Vpc2hhbiBJbmR1c3RyaWFsIFpvbmUKLQkJCQlUYW95dWFuIENvdW50eSBUYWl3YW4gMzMzNDEKLQkJCQlUQUlXQU4sIFBST1ZJTkNFIE9GIENISU5BCi0KLTIwLUZBLUJCICAgKGhleCkJCUNhbWJyaWRnZSBFeGVjdXRpdmUgTGltaXRlZAotMjBGQUJCICAgICAoYmFzZSAxNikJCUNhbWJyaWRnZSBFeGVjdXRpdmUgTGltaXRlZAotCQkJCVN0IEpvaG4ncyBJbm5vdmF0aW9uIENlbnRyZQotCQkJCUNvd2xleSBSb2FkCi0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCNDBXUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTIwLUZELUYxICAgKGhleCkJCTNDT00gRVVST1BFIExURAotMjBGREYxICAgICAoYmFzZSAxNikJCTNDT00gRVVST1BFIExURAotCQkJCVBlb3BsZWJ1aWxkaW5nIDIKLQkJCQlNYXlsYW5kcyBBdmVudWUKLQkJCQlIZW1lbCBIZW1wc3RlYWQgSGVydGZvcmRzaGlyZSBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMjAtRkUtQ0QgICAoaGV4KQkJU3lzdGVtIEluIEZyb250aWVyIEluYy4KLTIwRkVDRCAgICAgKGJhc2UgMTYpCQlTeXN0ZW0gSW4gRnJvbnRpZXIgSW5jLgotCQkJCTRGIFNoaW5zdXp1aGFydSBCbGRnLiAyLTgtMyBBa2Vib25vY3lvCi0JCQkJVGFjaGlrYXdhLXNoaSBUb2t5byAxOTAtMDAxMgotCQkJCUpBUEFOCi0KLTIwLUZFLURCICAgKGhleCkJCU0yTSBTb2x1dGlvbiBTLkEuUy4KLTIwRkVEQiAgICAgKGJhc2UgMTYpCQlNMk0gU29sdXRpb24gUy5BLlMuCi0JCQkJQ2VudHJlIGQnQWZmYWlyZXMgUmVndXMgQmF0LkQKLQkJCQk0NSBBbGxlZSBkZXMgT3JtZXMKLQkJCQlNb3VnaW5zICAgMDYyNTQgCi0JCQkJRlJBTkNFCi0KLTI0LTA5LTE3ICAgKGhleCkJCURldmxpbiBFbGVjdHJvbmljcyBMaW1pdGVkCi0yNDA5MTcgICAgIChiYXNlIDE2KQkJRGV2bGluIEVsZWN0cm9uaWNzIExpbWl0ZWQKLQkJCQlVbml0IEQxCi0JCQkJR3JhZnRvbiBXYXkKLQkJCQlCYXNpbmdzdG9rZSBIYW1wc2hpcmUgUkcyMjZIWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTI0LTBCLTJBICAgKGhleCkJCVZpZXR0ZWwgR3JvdXAKLTI0MEIyQSAgICAgKGJhc2UgMTYpCQlWaWV0dGVsIEdyb3VwCi0JCQkJQ2VudGVyIGZvciBSZXNlYXJjaCBhbmQgRGV2ZWxvcG1lbnQKLQkJCQkwMSBHaWFuZyBWYW4gTWluaCwgQmEgRGluaAotCQkJCUhhbm9pICAxMTExCi0JCQkJVklFVE5BTQotCi0yNC0wQi1CMSAgIChoZXgpCQlLT1NUQUwgSW5kdXN0cmllIEVsZWt0cmlrIEdtYkggCi0yNDBCQjEgICAgIChiYXNlIDE2KQkJS09TVEFMIEluZHVzdHJpZSBFbGVrdHJpayBHbWJIIAotCQkJCUdld2VyYmVyaW5nIDIwCi0JCQkJU2NoYWxrc211ZWhsZSBOb3J0aCBSaGluZS1XZXN0cGhhbGlhIDU4NTc5Ci0JCQkJR0VSTUFOWQotCi0yNC0xMC02NCAgIChoZXgpCQlTaGVuemhlbiBFY3Npbm8gVGVjbmljYWwgQ28uIEx0ZAotMjQxMDY0ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEVjc2lubyBUZWNuaWNhbCBDby4gTHRkCi0JCQkJN0YgR3VveGluIGJ1aWxkIENoYW5nWGluIFJvYWQuIE5hbidzaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTI0LTExLTI1ICAgKGhleCkJCUh1dGVrIENvLiwgTHRkLgotMjQxMTI1ICAgICAoYmFzZSAxNikJCUh1dGVrIENvLiwgTHRkLgotCQkJCUUtNDAyIEJ1bmRhbmcgVGVjaG5vcGFyayAKLQkJCQkxNTEgWWF0YXAtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLWNpdHkgR3llb25nZ2ktZG8gNDYzLTc2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yNC0xQS04QyAgIChoZXgpCQlTcXVhcmVoZWFkIFRlY2hub2xvZ3kgQVMKLTI0MUE4QyAgICAgKGJhc2UgMTYpCQlTcXVhcmVoZWFkIFRlY2hub2xvZ3kgQVMKLQkJCQlQTyBCb3ggMTMgTnlkYWxlbgotCQkJCU9zbG8gIE5PLTA0MTAKLQkJCQlOT1JXQVkKLQotMjQtMUItMTMgICAoaGV4KQkJU2hhbmdoYWkgTnV0c2hlbGwgRWxlY3Ryb25pYyBDby4sIEx0ZC4KLTI0MUIxMyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBOdXRzaGVsbCBFbGVjdHJvbmljIENvLiwgTHRkLgotCQkJCTM2NSBHdW9zaG91amluZyBSRC4sWmhhbmdqaWFuZyBIaS1UZWNoIFBhcmssIFB1ZG9uZyBEaXN0cmljdAotCQkJCXNoYW5naGFpIHNoYW5naGFpIDIwMTIwMwotCQkJCUNISU5BCi0KLTI0LTFGLTJDICAgKGhleCkJCUNhbHN5cywgSW5jLgotMjQxRjJDICAgICAoYmFzZSAxNikJCUNhbHN5cywgSW5jLgotCQkJCTI3MDAgQXVndXN0aW5lIGRyaXZlLCBTdGUxNDUKLQkJCQlTYW50YSBDbGFyYSBDYWxpZm9ybmlhIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC0yMS1BQiAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucwotMjQyMUFCICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTI0LTM3LTRDICAgKGhleCkJCUNpc2NvIFNQVlRHCi0yNDM3NEMgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTGF3cmVuY2V2aWxsZSAgR0EgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LTM3LUVGICAgKGhleCkJCUVNQyBFbGVjdHJvbmljIE1lZGlhIENvbW11bmljYXRpb24gU0EKLTI0MzdFRiAgICAgKGJhc2UgMTYpCQlFTUMgRWxlY3Ryb25pYyBNZWRpYSBDb21tdW5pY2F0aW9uIFNBCi0JCQkJVmlhIENhbnRvbmFsZSA0Ci0JCQkJUy4gQW50b25pbm8gVGljaW5vIDY1OTIKLQkJCQlTV0lUWkVSTEFORAotCi0yNC0zQy0yMCAgIChoZXgpCQlEeW5hbW9kZSBHcm91cAotMjQzQzIwICAgICAoYmFzZSAxNikJCUR5bmFtb2RlIEdyb3VwCi0JCQkJSGVhZCBPZmZpY2UsIDEzMmEgU3QgQWxiYW5zIFJvYWQKLQkJCQlXYXRmb3JkIEhlcnRzIFdEMjQgNEFFCi0JCQkJVU5JVEVEIEtJTkdET00KLQotMjQtNDUtOTcgICAoaGV4KQkJR0VNVUUgR2Vici4gTXVlbGxlciBBcHBhcmF0ZWJhdQotMjQ0NTk3ICAgICAoYmFzZSAxNikJCUdFTVVFIEdlYnIuIE11ZWxsZXIgQXBwYXJhdGViYXUKLQkJCQlGcml0ei1NdWVsbGVyLVN0cmFzc2UgNi04Ci0JCQkJSW5nZWxmaW5nZW4gQ3JpZXNiYWNoICA3NDY1MwotCQkJCUdFUk1BTlkKLQotMjQtNDctMEUgICAoaGV4KQkJUGVudHJvbmljQUIKLTI0NDcwRSAgICAgKGJhc2UgMTYpCQlQZW50cm9uaWNBQgotCQkJCUJlcmdzbGlkZW4gMQotCQkJCUdVTk5FQk8gIDU5MDkzCi0JCQkJU1dFREVOCi0KLTI0LTQ5LTdCICAgKGhleCkJCUlubm92YXRpdmUgQ29udmVyZ2VkIERldmljZXMgSW5jCi0yNDQ5N0IgICAgIChiYXNlIDE2KQkJSW5ub3ZhdGl2ZSBDb252ZXJnZWQgRGV2aWNlcyBJbmMKLQkJCQk0MjQgOHRoIEF2ZW51ZSBOb3J0aAotCQkJCVNlYXR0bGUgV0EgOTgxMDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LTVGLURGICAgKGhleCkJCUtZT0NFUkEgQ29ycG9yYXRpb24KLTI0NUZERiAgICAgKGJhc2UgMTYpCQlLWU9DRVJBIENvcnBvcmF0aW9uCi0JCQkJMi0xLTEsS2FnYWhhcmEsCi0JCQkJVHN1enVraS1rdQotCQkJCVlva29oYW1hLXNoaSBLYW5hZ2F3YSAyMjQtODUwMgotCQkJCUpBUEFOCi0KLTI0LTY1LTExICAgKGhleCkJCUFWTSBHbWJICi0yNDY1MTEgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotMjQtNzYtN0QgICAoaGV4KQkJQ2lzY28gU1BWVEcKLTI0NzY3RCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC03Ny0wMyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTI0NzcwMyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTI0LTgyLThBICAgKGhleCkJCVByb3dhdmUgVGVjaG5vbG9naWVzIEx0ZC4KLTI0ODI4QSAgICAgKGJhc2UgMTYpCQlQcm93YXZlIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJMkYsTm8uODc5LTE2LFpob25namlhbmcgUm9hZAotCQkJCVNoYW5naGFpICAyMDAzMzMKLQkJCQlDSElOQQotCi0yNC04Ni1GNCAgIChoZXgpCQlDdGVrLCBJbmMuCi0yNDg2RjQgICAgIChiYXNlIDE2KQkJQ3RlaywgSW5jLgotCQkJCTM0IE1pcmFsZXN0ZSBQbGF6YQotCQkJCVJhbmNobyBQYWxvcyBWZXJkZXMgQ2FsaWZvcm5pYSA5MDI3NQotCQkJCVVOSVRFRCBTVEFURVMKLQotMjQtODctMDcgICAoaGV4KQkJU0VuZXJneSBDb3Jwb3JhdGlvbgotMjQ4NzA3ICAgICAoYmFzZSAxNikJCVNFbmVyZ3kgQ29ycG9yYXRpb24KLQkJCQlLb2l6dW1pIEJsZGcuIDNGLCAxLTM4LTE4Ci0JCQkJTmFrYWdhd2EtY3l1byBUc3V6dWtpLWt1Ci0JCQkJWW9rb2hhbWEgY2l0eSBLYW5hZ2F3YSBQcmVmLiAyMjQtMDAwMwotCQkJCUpBUEFOCi0KLTI0LTk0LTQyICAgKGhleCkJCU9QRU4gUk9BRCBTT0xVVElPTlMgLCBJTkMuCi0yNDk0NDIgICAgIChiYXNlIDE2KQkJT1BFTiBST0FEIFNPTFVUSU9OUyAsIElOQy4KLQkJCQk4OC0xMyBTSFVJTEkgIFJPQUQKLQkJCQlIU0lOQ0hVICAzMDA1OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMjQtQTQtMkMgICAoaGV4KQkJS09VS0FBTSBhLnMuCi0yNEE0MkMgICAgIChiYXNlIDE2KQkJS09VS0FBTSBhLnMuCi0JCQkJVSB2aW5ueWNoIHNrbGVwdSA3Ci0JCQkJUHJhZ3VlICAxOTAgMDAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi0yNC1BNC0zQyAgIChoZXgpCQlVYmlxdWl0aSBOZXR3b3JrcywgSU5DCi0yNEE0M0MgICAgIChiYXNlIDE2KQkJVWJpcXVpdGkgTmV0d29ya3MsIElOQwotCQkJCTkxIEUuIFRhc21hbiBEci4KLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC1BOS0zNyAgIChoZXgpCQlQVVJFIFN0b3JhZ2UKLTI0QTkzNyAgICAgKGJhc2UgMTYpCQlQVVJFIFN0b3JhZ2UKLQkJCQk2NTAgQ2FzdHJvIFN0cmVldAotCQkJCTIyMAotCQkJCU10LiBWaWV3IENBIDk0MDQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC1BQi04MSAgIChoZXgpCQlBcHBsZSwgSW5jLgotMjRBQjgxICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC1BRi00QSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudC1JUEQKLTI0QUY0QSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudC1JUEQKLQkJCQk3NzcgTWlkZGxlZmllbGQgUmQuCi0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMjQtQUYtNTQgICAoaGV4KQkJTkVYR0VOIE1lZGlhdGVjaCBJbmMuCi0yNEFGNTQgICAgIChiYXNlIDE2KQkJTkVYR0VOIE1lZGlhdGVjaCBJbmMuCi0JCQkJOEYgTm8uIDE1MCwgSmlhbnlpIFJkLiwgCi0JCQkJQ2h1bmcgSG8gVGFpcGVpIEhzaWVuIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMjQtQjYtNTcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMjRCNjU3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUI2LUI4ICAgKGhleCkJCUZSSUVNIFNQQQotMjRCNkI4ICAgICAoYmFzZSAxNikJCUZSSUVNIFNQQQotCQkJCVZpYSBFZGlzb24gMQotCQkJCVNlZ3JhdGUgTWlsYW5vIDIwMDkwCi0JCQkJSVRBTFkKLQotMjQtQjYtRkQgICAoaGV4KQkJRGVsbCBJbmMKLTI0QjZGRCAgICAgKGJhc2UgMTYpCQlEZWxsIEluYwotCQkJCU9uZSBEZWxsIFdheSwgTVM6UlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMjQtQjgtOEMgICAoaGV4KQkJQ3JlbnVzIENvLixMdGQuCi0yNEI4OEMgICAgIChiYXNlIDE2KQkJQ3JlbnVzIENvLixMdGQuCi0JCQkJTWFyaW8gVG93ZXIgODE0LCAyMjItMTIKLQkJCQlHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yNC1COC1EMiAgIChoZXgpCQlPcHpvb24gVGVjaG5vbG9neSBDby4sTHRkLgotMjRCOEQyICAgICAoYmFzZSAxNikJCU9wem9vbiBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJMTF0aCBmbG9vciwgVG93ZXIgQqOsWWludGFpIENlbnRlciAyIEppYW5ndW9tZW53YWkgU3QsLgotCQkJCUJlaWppbmcgQXNpYSAxMDAwMjIKLQkJCQlDSElOQQotCi0yNC1CQS0zMCAgIChoZXgpCQlUZWNobmljYWwgQ29uc3VtZXIgUHJvZHVjdHMsIEluYy4KLTI0QkEzMCAgICAgKGJhc2UgMTYpCQlUZWNobmljYWwgQ29uc3VtZXIgUHJvZHVjdHMsIEluYy4KLQkJCQkzMjUgQ2FtcHVzIERyaXZlCi0JCQkJQXVyb3JhIE9IIDQ0MjAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC1CQi1DMSAgIChoZXgpCQlBYnNvbHV0ZSBBbmFseXNpcwotMjRCQkMxICAgICAoYmFzZSAxNikJCUFic29sdXRlIEFuYWx5c2lzCi0JCQkJMjM5MyBUZWxsZXIgUm9hZCBTdGUgIzEwOQotCQkJCU5ld2J1cnkgUGFyayBDYWxpZm9ybmlhIDkxMzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yNC1CQy04MiAgIChoZXgpCQlEYWxpIFdpcmVsZXNzLCBJbmMuCi0yNEJDODIgICAgIChiYXNlIDE2KQkJRGFsaSBXaXJlbGVzcywgSW5jLgotCQkJCTEyNSBVbml2ZXJzaXR5IEF2ZW51ZSwgU3VpdGUgODgKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUJFLTA1ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotMjRCRTA1ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUgVwotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUJGLTc0ICAgKGhleCkJCVBSSVZBVEUKLTI0QkY3NCAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMjQtQzAtQjMgICAoaGV4KQkJUlNGCi0yNEMwQjMgICAgIChiYXNlIDE2KQkJUlNGCi0JCQkJNDUgQXYgTWFyY2VsIERhc3NhdWx0Ci0JCQkJVG91bG91c2UgR2Fyb25uZSwgSGF1dGUgKDMxKSAzMTUwMAotCQkJCUZSQU5DRQotCi0yNC1DOC02RSAgIChoZXgpCQlDaGFuZXkgSW5zdHJ1bWVudCBDby4KLTI0Qzg2RSAgICAgKGJhc2UgMTYpCQlDaGFuZXkgSW5zdHJ1bWVudCBDby4KLQkJCQk5NjUgV2VsbHMgU3RyZWV0Ci0JCQkJTGFrZSBHZW5ldmEgV0kgNTMxNDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUM5LURFICAgKGhleCkJCUdlbm9yYXkKLTI0QzlERSAgICAgKGJhc2UgMTYpCQlHZW5vcmF5Ci0JCQkJIzgxMiBCeXVja3NhbiBUZWNobm9waWEgNDM0LTYgU2FuZ2RhZXdvbiAxLURvbmcKLQkJCQlKdW5nd29uLUd1Ci0JCQkJU2VvbmduYW0tQ2l0eSBHeWVvbmdnaS1EbyA0NjItNzE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTI0LUNCLUU3ICAgKGhleCkJCU1ZSywgSW5jLgotMjRDQkU3ICAgICAoYmFzZSAxNikJCU1ZSywgSW5jLgotCQkJCTQtNjAtMzAtMTA4LCBLYW1vaSwgCi0JCQkJTWlkb3JpLWt1Ci0JCQkJWW9rb2hhbWEgS2FuYWdhd2EgMjI2LTAwMDMKLQkJCQlKQVBBTgotCi0yNC1DRi0yMSAgIChoZXgpCQlTaGVuemhlbiBTdGF0ZSBNaWNybyBUZWNobm9sb2d5IENvLiwgTHRkCi0yNENGMjEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU3RhdGUgTWljcm8gVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCVNTTUVDIEJ1aWxkaW5nMi9GLCBHYW8gWGluIE5hbiBGaXJzdCBBdmVudWUsIEhpLVRlY2ggUGFyayBTb3V0aCwgTmFuc2hhbgotCQkJCVNoZW56aGVuIENpdHkgR3Vhbmdkb25nIFByb3ZpbmNlIDUxODA1NwotCQkJCUNISU5BCi0KLTI0LUQyLUNDICAgKGhleCkJCVNtYXJ0RHJpdmUgU3lzdGVtcyBJbmMuCi0yNEQyQ0MgICAgIChiYXNlIDE2KQkJU21hcnREcml2ZSBTeXN0ZW1zIEluYy4KLQkJCQk5Mjc2IFNjcmFudG9uIFJvYWQKLQkJCQlTdWl0ZSA1MDAKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LURBLUI2ICAgKGhleCkJCVNpc3RlbWFzIGRlIEdlc3Rp824gRW5lcmfpdGljYSBTLkEuIGRlIEMuVi4KLTI0REFCNiAgICAgKGJhc2UgMTYpCQlTaXN0ZW1hcyBkZSBHZXN0afNuIEVuZXJn6XRpY2EgUy5BLiBkZSBDLlYuCi0JCQkJQ2FsemFkYSBkZSBsb3MgRnJlc25vcyA3MC1BCi0JCQkJQ2l1ZGFkIEdyYW5qYQotCQkJCVphcG9wYW4gSmFsaXNvYyA0NTAxMAotCQkJCU1FWElDTwotCi0yNC1EQi1BQyAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0yNERCQUMgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxMDEwOAotCQkJCUNISU5BCi0KLTI0LURCLUFEICAgKGhleCkJCVNob3BwZXJUcmFrIFJDVCBDb3Jwb3JhdGlvbgotMjREQkFEICAgICAoYmFzZSAxNikJCVNob3BwZXJUcmFrIFJDVCBDb3Jwb3JhdGlvbgotCQkJCTIwMCBXLiBNb25yb2UgU3RyZWV0Ci0JCQkJU3VpdGUgMTEwMAotCQkJCUNoaWNhZ28gSUwgNjA2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI0LUU2LUJBICAgKGhleCkJCUpTQyBaYXZvZCBpbS4gS296aXRza3kKLTI0RTZCQSAgICAgKGJhc2UgMTYpCQlKU0MgWmF2b2QgaW0uIEtveml0c2t5Ci0JCQkJQmxkLiA3MCwgNXRoIGxpbmUsIFYuTywgCi0JCQkJU3QuLVBldGVyc2J1cmcgIDE5OTA0OAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi0yNC1FQy05OSAgIChoZXgpCQlBc2tleSBDb21wdXRlciBDb3JwCi0yNEVDOTkgICAgIChiYXNlIDE2KQkJQXNrZXkgQ29tcHV0ZXIgQ29ycAotCQkJCTEwRixOTy4xMTksQ0hJRU5LQU5HIFJELENIVU5HLUhPLAotCQkJCVRBSVBFSSAyMzU4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMjQtRjAtRkYgICAoaGV4KQkJR0hUIENvLiwgTHRkLgotMjRGMEZGICAgICAoYmFzZSAxNikJCUdIVCBDby4sIEx0ZC4KLQkJCQkjMTYgTmFueXVueWkgTHUsIEd1YW5nemhvdSBTY2llbmNlIENpdHkKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTI4LTA0LUUwICAgKGhleCkJCUZFUk1BWCBFTEVDVFJPTklDQSBTLkEuVS4KLTI4MDRFMCAgICAgKGJhc2UgMTYpCQlGRVJNQVggRUxFQ1RST05JQ0EgUy5BLlUuCi0JCQkJVHJlcyBDcnVjZXMgMTMzCi0JCQkJVmFsZW5jaWEgIDQ2MDE3Ci0JCQkJU1BBSU4KLQotMjgtMDYtMUUgICAoaGV4KQkJTklOR0JPIEdMT0JBTCBVU0VGVUwgRUxFQ1RSSUMgQ08uLExURAotMjgwNjFFICAgICAoYmFzZSAxNikJCU5JTkdCTyBHTE9CQUwgVVNFRlVMIEVMRUNUUklDIENPLixMVEQKLQkJCQlOby44OCxLZWNodWFuZyBTb3V0aCBSb2FkLAotCQkJCVdhbmdjaHVuIEluZHVzdHJ5IFpvbmUKLQkJCQlOaW5nYm8gWmhlamlhbmcgMzE1MDAwCi0JCQkJQ0hJTkEKLQotMjgtMDYtOEQgICAoaGV4KQkJSVRMLCBMTEMKLTI4MDY4RCAgICAgKGJhc2UgMTYpCQlJVEwsIExMQwotCQkJCVAuTy4gQm94IDQxODc1Ci0JCQkJTmFzaHZpbGxlIFROIDM3MjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC0wQy1COCAgIChoZXgpCQlNaWtyb3NheSBZYXppbGltIHZlIEVsZWt0cm9uaWsgQS5TLgotMjgwQ0I4ICAgICAoYmFzZSAxNikJCU1pa3Jvc2F5IFlhemlsaW0gdmUgRWxla3Ryb25payBBLlMuCi0JCQkJQ2V2aXpsaSBNYWguIFRhbnNlbCBDYWQuIAotCQkJCW5vOjE4IE1hbHRlcGUKLQkJCQlJc3RhbmJ1bCAgMzQ4NDYKLQkJCQlUVVJLRVkKLQotMjgtMEQtRkMgICAoaGV4KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4KLTI4MERGQyAgICAgKGJhc2UgMTYpCQlTb255IENvbXB1dGVyIEVudGVydGFpbm1lbnQgSW5jLgotCQkJCTEtNy0xIEtvbmFuCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwOC0wMDc1Ci0JCQkJSkFQQU4KLQotMjgtMTAtN0IgICAoaGV4KQkJRC1MaW5rIEludGVybmF0aW9uYWwKLTI4MTA3QiAgICAgKGJhc2UgMTYpCQlELUxpbmsgSW50ZXJuYXRpb25hbAotCQkJCTEgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBQYXJrLCAjMDMtMTIsIFRoZSBTeW5lcmd5IAotCQkJCTYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi0yOC0xNC03MSAgIChoZXgpCQlMYW50aXMgY28uLCBMVEQuCi0yODE0NzEgICAgIChiYXNlIDE2KQkJTGFudGlzIGNvLiwgTFRELgotCQkJCWJ1c2FuIGlubm9iaXogY2VudGVyIDQwMQotCQkJCWJ1ay1rdSwgbWFuZGVvayAzLWRvbmcKLQkJCQlidXNhbiAgNjE2LTgyOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yOC0xNi0yRSAgIChoZXgpCQkyV2lyZQotMjgxNjJFICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMjgtMTctQ0UgICAoaGV4KQkJT21uaXNlbnNlIEx0ZAotMjgxN0NFICAgICAoYmFzZSAxNikJCU9tbmlzZW5zZSBMdGQKLQkJCQkzcmQgRmxvb3IgU3QgQW5kcmV3JiMzOTtzIEhvdXNlCi0JCQkJNTkgU3QgQW5kcmV3cyBTdHJlZXQKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0IyIDNCWgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTI4LTE4LUZEICAgKGhleCkJCUFkaXR5YSBJbmZvdGVjaCBMdGQuCi0yODE4RkQgICAgIChiYXNlIDE2KQkJQWRpdHlhIEluZm90ZWNoIEx0ZC4KLQkJCQlLaGVta2EgU3F1YXJlLCBBLTEyLCBTZWN0b3ItNCygIAotCQkJCU5vaWRhIFV0dGFyIFByYWRlc2ggMjAxMzAxIAotCQkJCUlORElBCi0KLTI4LTI2LUE2ICAgKGhleCkJCVBCUiBlbGVjdHJvbmljcyBHbWJICi0yODI2QTYgICAgIChiYXNlIDE2KQkJUEJSIGVsZWN0cm9uaWNzIEdtYkgKLQkJCQlCZXJsaW5lciBTdHJhc3NlIDUKLQkJCQlTYW5kaGF1c2VuIEJhZGVuIFd1ZXJ0ZW1tYmVyZyA2OTIwNwotCQkJCUdFUk1BTlkKLQotMjgtMzQtMTAgICAoaGV4KQkJRW5pZ21hIERpYWdub3N0aWNzIExpbWl0ZWQKLTI4MzQxMCAgICAgKGJhc2UgMTYpCQlFbmlnbWEgRGlhZ25vc3RpY3MgTGltaXRlZAotCQkJCU1pbHRvbiBQYXJrIElubm92YXRpb24gQ2VudHJlCi0JCQkJOTkgTWlsdG9uIFBhcmsKLQkJCQlBYmluZ2RvbiAgT1gxNCA0UlkKLQkJCQlVTklURUQgS0lOR0RPTQotCi0yOC0zNy0zNyAgIChoZXgpCQlBcHBsZSwgSW5jLgotMjgzNzM3ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC0zOC1DRiAgIChoZXgpCQlHZW4yd2F2ZQotMjgzOENGICAgICAoYmFzZSAxNikJCUdlbjJ3YXZlCi0JCQkJR3VtaS1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJIzcwNywgUG9pbnQgdG93biBCL0QsIDE4Ny00Ci0JCQkJU2VvbmduYW0tc2kgR3llb25nZ2ktZG8gNDYzLTc0MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yOC0zOS1FNyAgIChoZXgpCQlQcmVjZW5vIFRlY2hub2xvZ3kgUHRlLkx0ZC4KLTI4MzlFNyAgICAgKGJhc2UgMTYpCQlQcmVjZW5vIFRlY2hub2xvZ3kgUHRlLkx0ZC4KLQkJCQkxMUYsIE5vLjIwNy0yLCBTZWMuIDMsIEJlaXhpbiBSZC4sIFhpbmRpYW4gRGlzdC4KLQkJCQlOZXcgVGFpcGVpIENpdHkgIDIzMTQzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0yOC0zQy1FNCAgIChoZXgpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0yODNDRTQgICAgIChiYXNlIDE2KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTI4LTQwLTFBICAgKGhleCkJCUM4IE1lZGlTZW5zb3JzLCBJbmMuCi0yODQwMUEgICAgIChiYXNlIDE2KQkJQzggTWVkaVNlbnNvcnMsIEluYy4KLQkJCQk3MjcgVW5pdmVyc2l0eSBBdmUKLQkJCQlMb3MgR2F0b3MgQ0EgOTUwMzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LTQxLTIxICAgKGhleCkJCU9wdGlTZW5zZSBOZXR3b3JrLCBMTEMKLTI4NDEyMSAgICAgKGJhc2UgMTYpCQlPcHRpU2Vuc2UgTmV0d29yaywgTExDCi0JCQkJMTMwOCAxMHRoIFN0cmVldAotCQkJCUJyaWRnZXBvcnQgVFggNzY0MjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LTQ4LTQ2ICAgKGhleCkJCUdyaWRDZW50cmljIEluYy4KLTI4NDg0NiAgICAgKGJhc2UgMTYpCQlHcmlkQ2VudHJpYyBJbmMuCi0JCQkJMzUwIEJsb29yIFN0LiBFCi0JCQkJVG9yb250byBPbnRhcmlvIE00VyAwQTEKLQkJCQlDQU5BREEKLQotMjgtNEMtNTMgICAoaGV4KQkJSW50dW5lIE5ldHdvcmtzCi0yODRDNTMgICAgIChiYXNlIDE2KQkJSW50dW5lIE5ldHdvcmtzCi0JCQkJOUIgQmVja2V0dCBXYXkKLQkJCQlQYXJrd2VzdCBCdXNpbmVzcyBQYXJrCi0JCQkJRHVibGluICAgMTIKLQkJCQlJUkVMQU5ECi0KLTI4LTUxLTMyICAgKGhleCkJCVNoZW56aGVuIFByYXlmbHkgVGVjaG5vbG9neSBDby4sTHRkCi0yODUxMzIgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gUHJheWZseSBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkxNkYgQiBJbnRlcm5hdGlvbmFsIENoYW1iZXIgb2YgQ29tbWVyY2UgQnVpbGRpbmcKLQkJCQlOTy4xMzggRnVodWEgMVJEIEZ1dGlhbiBBcmVhIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyBQcm92aW5jZSAgNTE4MDQ4Ci0JCQkJQ0hJTkEKLQotMjgtNUYtREIgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotMjg1RkRCICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi0yOC02MC00NiAgIChoZXgpCQlMYW50ZWNoIENvbW11bmljYXRpb25zIEdsb2JhbCwgSW5jLgotMjg2MDQ2ICAgICAoYmFzZSAxNikJCUxhbnRlY2ggQ29tbXVuaWNhdGlvbnMgR2xvYmFsLCBJbmMuCi0JCQkJN0YsIE5vLiA0NSwgTGFuZSAxODgsIFJ1aWd1YW5nIFJkLiwgTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgQ2l0eSAgMTE0OTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTI4LTYwLTk0ICAgKGhleCkJCUNBUEVMRUMKLTI4NjA5NCAgICAgKGJhc2UgMTYpCQlDQVBFTEVDCi0JCQkJMTEzMCBydWUgZGVzIE1hcmVscwotCQkJCU1vbnRwZWxsaWVyIEjvv71yYXVsdCAzNDAwMAotCQkJCUZSQU5DRQotCi0yOC02QS1COCAgIChoZXgpCQlBcHBsZSwgSW5jLgotMjg2QUI4ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIGNhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC02QS1CQSAgIChoZXgpCQlBcHBsZSwgSW5jLgotMjg2QUJBICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMjgtNkUtRDQgICAoaGV4KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0yODZFRDQgICAgIChiYXNlIDE2KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0JCQkJQjEtNyxIdWF3ZWkgSW5kdXN0cmlhbCBCYXNlLEJhbnRpYW4sTG9uZ2dhbmcKLQkJCQlTaGVuWmhlbiBndWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotMjgtNzEtODQgICAoaGV4KQkJU3BpcmUgUGF5bWVudHMKLTI4NzE4NCAgICAgKGJhc2UgMTYpCQlTcGlyZSBQYXltZW50cwotCQkJCVVuaXRzIDMgJiA2IE1pbGZvcmQgVHJhZGluZyBFc3RhdGUKLQkJCQlCbGFrZXkgUm9hZAotCQkJCVNhbGlzYnVyeSBXaWx0c2hpcmUgU1AxIDJVRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTI4LTcyLUM1ICAgKGhleCkJCVNtYXJ0bWF0aWMgQ29ycAotMjg3MkM1ICAgICAoYmFzZSAxNikJCVNtYXJ0bWF0aWMgQ29ycAotCQkJCTEwMDEgQnJva2VuIFNvdW5kIFBrd3kgTlcgU3VpdGUgRAotCQkJCUJvY2EgUmF0b24gRmxvcmlkYSAzMzQ4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotMjgtNzItRjAgICAoaGV4KQkJQVRIRU5BCi0yODcyRjAgICAgIChiYXNlIDE2KQkJQVRIRU5BCi0JCQkJNDIgUlVFIE1PTkdFCi0JCQkJUEFSSVMgIDc1MDA1Ci0JCQkJRlJBTkNFCi0KLTI4LTg1LTJEICAgKGhleCkJCVRvdWNoIE5ldHdvcmtzCi0yODg1MkQgICAgIChiYXNlIDE2KQkJVG91Y2ggTmV0d29ya3MKLQkJCQkyNTE1IDE1Mm5kIEF2ZSBORQotCQkJCVJlZG1vbmQgV2FzaGluZ3RvbiA5ODA1MgotCQkJCVVOSVRFRCBTVEFURVMKLQotMjgtODktMTUgICAoaGV4KQkJQ2FzaEd1YXJkIFN2ZXJpZ2UgQUIKLTI4ODkxNSAgICAgKGJhc2UgMTYpCQlDYXNoR3VhcmQgU3ZlcmlnZSBBQgotCQkJCUZpbmxhbmRzZ2F0YW4gMTYKLQkJCQlLaXN0YSAgMTY0NzQKLQkJCQlTV0VERU4KLQotMjgtOTItNEEgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi0yODkyNEEgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZSBXCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMjgtOTMtRkUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMjg5M0ZFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMjgtOTQtMEYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMjg5NDBGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LTk4LTdCICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMjg5ODdCICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yOC1BNS03NCAgIChoZXgpCQlNaWxsZXIgRWxlY3RyaWMgTWZnLiBDby4KLTI4QTU3NCAgICAgKGJhc2UgMTYpCQlNaWxsZXIgRWxlY3RyaWMgTWZnLiBDby4KLQkJCQkxNjM1IFcuIFNwZW5jZXIgU3RyZWV0Ci0JCQkJUC5PLiBCb3ggMTA3OQotCQkJCUFwcGxldG9uIFdJIDU0OTEyLTEwNzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LUFGLTBBICAgKGhleCkJCVNpcml1cyBYTSBSYWRpbyBJbmMKLTI4QUYwQSAgICAgKGJhc2UgMTYpCQlTaXJpdXMgWE0gUmFkaW8gSW5jCi0JCQkJMTIyMSBBdmVudWUgb2YgdGhlIEFtZXJpY2FzCi0JCQkJMzZ0aCBGbG9vcgotCQkJCU5ldyBZb3JrIE5ZIDEwMDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1CMC1DQyAgIChoZXgpCQlYZW55YSBkLm8uby4KLTI4QjBDQyAgICAgKGJhc2UgMTYpCQlYZW55YSBkLm8uby4KLQkJCQlDZWxvdnNrYSBjZXN0YSAxNzIKLQkJCQlManVibGphbmEgIDEwMDAKLQkJCQlTTE9WRU5JQQotCi0yOC1CQS0xOCAgIChoZXgpCQlOZXh0TmF2LCBMTEMKLTI4QkExOCAgICAgKGJhc2UgMTYpCQlOZXh0TmF2LCBMTEMKLQkJCQk0ODQgT2FrbWVhZCBQYXJrd2F5Ci0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1CRS05QiAgIChoZXgpCQlUZWNobmljb2xvciBVU0EgSW5jLgotMjhCRTlCICAgICAoYmFzZSAxNikJCVRlY2huaWNvbG9yIFVTQSBJbmMuCi0JCQkJMTAxIFdlc3QgMTAzcmQgU3RyZWV0Ci0JCQkJSW5kaWFuYXBvbGlzIElOIDQ2MjkwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1DMC1EQSAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi0yOEMwREEgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LUM3LTE4ICAgKGhleCkJCUFsdGllcnJlCi0yOEM3MTggICAgIChiYXNlIDE2KQkJQWx0aWVycmUKLQkJCQkxOTgwIENvbmNvdXJzZSBEcml2ZQotCQkJCVNhbiBKb3NlIFVuaXRlZCBTdGF0ZXMgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LUM5LTE0ICAgKGhleCkJCVRhaW1hZyBDb3Jwb3JhdGlvbgotMjhDOTE0ICAgICAoYmFzZSAxNikJCVRhaW1hZyBDb3Jwb3JhdGlvbgotCQkJCU5PLiAxLCBXZXN0IDJuZCBTdC4gTi5FLlAuWiAKLQkJCQlLYW9oc2l1bmcgIDgxMQotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotMjgtQ0MtRkYgICAoaGV4KQkJQ29ycG9yYWNpb24gRW1wcmVzYXJpYWwgQWx0cmEgU0wKLTI4Q0NGRiAgICAgKGJhc2UgMTYpCQlDb3Jwb3JhY2lvbiBFbXByZXNhcmlhbCBBbHRyYSBTTAotCQkJCU1hcmllIEN1cmllIDIxCi0JCQkJTWFsYWdhICAyOTU5MAotCQkJCVNQQUlOCi0KLTI4LUNELTFDICAgKGhleCkJCUVzcG90ZWwgT3kKLTI4Q0QxQyAgICAgKGJhc2UgMTYpCQlFc3BvdGVsIE95Ci0JCQkJS2FwcGVsaXRpZSA2Ci0JCQkJRXNwb28gRXNwb28gRkktMDIyMDAKLQkJCQlGSU5MQU5ECi0KLTI4LUNELTRDICAgKGhleCkJCUluZGl2aWR1YWwgQ29tcHV0ZXJzIEdtYkgKLTI4Q0Q0QyAgICAgKGJhc2UgMTYpCQlJbmRpdmlkdWFsIENvbXB1dGVycyBHbWJICi0JCQkJSW0gWmVtbWVyIDYKLQkJCQlXb2ZmZWxzYmFjaCBOUlcgNTIxNTIKLQkJCQlHRVJNQU5ZCi0KLTI4LUNGLURBICAgKGhleCkJCUFwcGxlLCBJbmMuCi0yOENGREEgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIGluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LUQxLUFGICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0yOEQxQUYgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSBPdSA5MDIzMAotCQkJCUZJTkxBTkQKLQotMjgtRDUtNzYgICAoaGV4KQkJUHJlbWllciBXaXJlbGVzcywgSW5jLgotMjhENTc2ICAgICAoYmFzZSAxNikJCVByZW1pZXIgV2lyZWxlc3MsIEluYy4KLQkJCQk0MjIyIEUuIExhIFBhbG1hIEF2ZS4KLQkJCQlBbmFoZWltIENBIDkyODA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yOC1EOS05NyAgIChoZXgpCQlZdWR1YW4gTW9iaWxlIENvLiwgTHRkLgotMjhEOTk3ICAgICAoYmFzZSAxNikJCVl1ZHVhbiBNb2JpbGUgQ28uLCBMdGQuCi0JCQkJUm9vbSA0MDEgTm8gODQgTGFuZSA4ODcgWnVjaG9uZ3poaSBSZC4KLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotMjgtRTAtMkMgICAoaGV4KQkJQXBwbGUsIEluYy4KLTI4RTAyQyAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMjgtRTItOTcgICAoaGV4KQkJU2hhbmdoYWkgSW5mb1RNIE1pY3JvZWxlY3Ryb25pY3MgQ28uLEx0ZC4KLTI4RTI5NyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBJbmZvVE0gTWljcm9lbGVjdHJvbmljcyBDby4sTHRkLgotCQkJCWJ1aWxkaW5nIDExLE5PLjExNSxsYW5lIDU3MixCaUJvIFJvYWQsCi0JCQkJUHVEb25nIE5ldyBEaXN0cmljdAotCQkJCVNoYW5nSGFpICAyMDEyMDMKLQkJCQlDSElOQQotCi0yOC1FNi0wOCAgIChoZXgpCQlUb2toZWltCi0yOEU2MDggICAgIChiYXNlIDE2KQkJVG9raGVpbQotCQkJCUluZHVzdHJpZXdlZyA1Ci0JCQkJQmxhZGVsIE5CciA1NTMxIEFECi0JCQkJTkVUSEVSTEFORFMKLQotMjgtRTctOTQgICAoaGV4KQkJTWljcm90aW1lIENvbXB1dGVyIEluYy4KLTI4RTc5NCAgICAgKGJhc2UgMTYpCQlNaWNyb3RpbWUgQ29tcHV0ZXIgSW5jLgotCQkJCTRGLCBOby4gMjIyLCBTZWMuIDQsIENoZW5nLVRlaCBSZC4sIAotCQkJCVRhaXBlaSAgMTExNjcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTI4LUU3LUNGICAgKGhleCkJCUFwcGxlLCBJbmMuCi0yOEU3Q0YgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LUVELTU4ICAgKGhleCkJCUpBRyBKYWtvYiBBRwotMjhFRDU4ICAgICAoYmFzZSAxNikJCUpBRyBKYWtvYiBBRwotCQkJCUluZHVzdHJpZXN0cmFzc2UgMjAKLQkJCQlCUlVFR0cgQkUgMjU1NQotCQkJCVNXSVRaRVJMQU5ECi0KLTI4LUVFLTJDICAgKGhleCkJCUZyb250bGluZSBUZXN0IEVxdWlwbWVudAotMjhFRTJDICAgICAoYmFzZSAxNikJCUZyb250bGluZSBUZXN0IEVxdWlwbWVudAotCQkJCVBPIEJveCA3NTA3Ci0JCQkJQ2hhcmxvdHRlc3ZpbGxlIFZpcmdpbmlhIDIyOTA2LTc1MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTI4LUVGLTAxICAgKGhleCkJCVBSSVZBVEUKLTI4RUYwMSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotMjgtRjMtNTggICAoaGV4KQkJMkMgLSBUcmlmb25vdiAmIENvCi0yOEYzNTggICAgIChiYXNlIDE2KQkJMkMgLSBUcmlmb25vdiAmIENvCi0JCQkJMTMzLCBUc2FyaWdyYWRza28gU2hvc2UgQmx2ZCwgQklaIElaT1QsIAotCQkJCUJ1aWxkLiAzLCBGbG9vciAzCi0JCQkJU29maWEgIDE3ODQKLQkJCQlCVUxHQVJJQQotCi0yOC1GNi0wNiAgIChoZXgpCQlTeWVzIHNybAotMjhGNjA2ICAgICAoYmFzZSAxNikJCVN5ZXMgc3JsCi0JCQkJVmlhIFphbmVsbGEgMjEKLQkJCQlMaXNzb25lIChNQikgTW9uemEgQnJpYW56YSAyMDg1MQotCQkJCUlUQUxZCi0KLTI4LUZCLUQzICAgKGhleCkJCVNoYW5naGFpIFJhZ2VuVGVrIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sTHRkLgotMjhGQkQzICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFJhZ2VuVGVrIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTR0aCBGbG9vcixOby4xMTEgRVNoYW4gUm9hZCBQdURvbmcgRGlzdHJpY3QgCi0JCQkJU2hhbmdoYWkgIDIwMDEyNwotCQkJCUNISU5BCi0KLTJDLTAwLTJDICAgKGhleCkJCVVOT1dIWQotMkMwMDJDICAgICAoYmFzZSAxNikJCVVOT1dIWQotCQkJCTExLCBydWUgVHJvbmNoZXQKLQkJCQlQYXJpcyAgNzUwMDgKLQkJCQlGUkFOQ0UKLQotMkMtMDAtMzMgICAoaGV4KQkJRUNvbnRyb2xzLCBMTEMKLTJDMDAzMyAgICAgKGJhc2UgMTYpCQlFQ29udHJvbHMsIExMQwotCQkJCTM1MjMgQ3Jvc3Nwb2ludAotCQkJCVNhbiBBbnRvbmlvIFRYIDc4MjE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy0wMC1GNyAgIChoZXgpCQlYT1MKLTJDMDBGNyAgICAgKGJhc2UgMTYpCQlYT1MKLQkJCQkxNSBUZWNoIFZhbGxleSBEcml2ZQotCQkJCVN1aXRlIDEKLQkJCQlFYXN0IEdyZWVuYnVzaCBOWSAxMjA2MQotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtMDYtMjMgICAoaGV4KQkJV2luIExlYWRlciBJbmMuCi0yQzA2MjMgICAgIChiYXNlIDE2KQkJV2luIExlYWRlciBJbmMuCi0JCQkJTGV2ZWwgMyAsQWxleGFuZGVyIEhvdXNlLAotCQkJCTM1ICBDeWJlcmNpdHkKLQkJCQlFYmVuZSAgCi0JCQkJTUFVUklUSVVTCi0KLTJDLTEwLUMxICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotMkMxMEMxICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTJDLTE5LTg0ICAgKGhleCkJCUlETiBUZWxlY29tLCBJbmMuCi0yQzE5ODQgICAgIChiYXNlIDE2KQkJSUROIFRlbGVjb20sIEluYy4KLQkJCQkyNjY5IEdyZWF0IEFyYm9yIFdheQotCQkJCVVuaW9uIENpdHkgQ0EgOTQ1ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLTFFLUVBICAgKGhleCkJCUFFUk9ERVYKLTJDMUVFQSAgICAgKGJhc2UgMTYpCQlBRVJPREVWCi0JCQkJTm8uNTksMTk4NSBMYW5lLENodW5zaGVuIFJvYWQsCi0JCQkJU2hhbmdoYWkgIDIwMDIzNwotCQkJCUNISU5BCi0KLTJDLTIxLTcyICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLTJDMjE3MiAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OSAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLTI3LUQ3ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0yQzI3RDcgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJTWFpbGNvZGUgNi4zLjA0OQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLTJELTQ4ICAgKGhleCkJCWJjdCBlbGVjdHJvbmljIEdlc21iSAotMkMyRDQ4ICAgICAoYmFzZSAxNikJCWJjdCBlbGVjdHJvbmljIEdlc21iSAotCQkJCVNhYWxhY2hzdHJhc3NlIDg4Ci0JCQkJU2FsemJ1cmcgIDUwMjAKLQkJCQlBVVNUUklBCi0KLTJDLTMwLTY4ICAgKGhleCkJCVBhbnRlY2ggQ28uLEx0ZAotMkMzMDY4ICAgICAoYmFzZSAxNikJCVBhbnRlY2ggQ28uLEx0ZAotCQkJCTExMC0xIE9uZ2plb25nLVJpLCBUb25namluLUV1cAotCQkJCUdpbXBvLVNpIEd5b3VuZ2dpLURvIDQxNS04NjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMkMtMzQtMjcgICAoaGV4KQkJRVJDTyAmYW1wOyBHRU5FUgotMkMzNDI3ICAgICAoYmFzZSAxNikJCUVSQ08gJmFtcDsgR0VORVIKLQkJCQlaSSBkZSBTQUlOVCBMQU1CRVJUIERFUyBMRVZFRVMKLQkJCQlCUCAzMDE2MwotCQkJCVNBVU1VUiAgNDk0MTIKLQkJCQlGUkFOQ0UKLQotMkMtMzYtQTAgICAoaGV4KQkJQ2FwaXNjbyBMaW1pdGVkCi0yQzM2QTAgICAgIChiYXNlIDE2KQkJQ2FwaXNjbyBMaW1pdGVkCi0JCQkJUE8gQm94IDkzOAotCQkJCVdoYW5nYXBhcmFvYQotCQkJCUF1Y2tsYW5kICAwOTQzCi0JCQkJTkVXIFpFQUxBTkQKLQotMkMtMzYtRjggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotMkMzNkY4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLTNBLTI4ICAgKGhleCkJCUZhZ29yIEVsZWN0cvNuaWNhCi0yQzNBMjggICAgIChiYXNlIDE2KQkJRmFnb3IgRWxlY3Ry825pY2EKLQkJCQlCLiBTYW4gQW5kcmVzLCBzL24gCi0JCQkJTW9uZHJhZ/NuIEd1aXB1emNvYSAyMDUwMAotCQkJCVNQQUlOCi0KLTJDLTNGLTM4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTJDM0YzOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy0zRi0zRSAgIChoZXgpCQlBbGdlLVRpbWluZyBHbWJICi0yQzNGM0UgICAgIChiYXNlIDE2KQkJQWxnZS1UaW1pbmcgR21iSAotCQkJCVJvdGtyZXV6c3RyYXNzZSAzOQotCQkJCUx1c3RlbmF1ICA2ODkwCi0JCQkJQVVTVFJJQQotCi0yQy00MS0zOCAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueSAKLTJDNDEzOCAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueSAKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJTWFpbGNvZGUgNi4zLjA0OQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLTQ0LTAxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMkM0NDAxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0yQy01NC0yRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0yQzU0MkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtNjctRkIgICAoaGV4KQkJU2hlblpoZW4gWmhlbmdqaWxpIEVsZWN0cm9uaWNzIENvLiwgTFRECi0yQzY3RkIgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gWmhlbmdqaWxpIEVsZWN0cm9uaWNzIENvLiwgTFRECi0JCQkJVGhlIExvbmdodWEgVG93biBTaGVuemhlbiBDaXR5IFN0cmVldHMgaHVhbmluZyB0aHJlZSBob3VzZSBTY2llbmNlIFBhcmsgUm9hZCBDaGlheWkgU291cmNlIGZpZnRoIGZsb29yCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTJDLTZCLUY1ICAgKGhleCkJCUp1bmlwZXIgbmV0d29ya3MKLTJDNkJGNSAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIG5ldHdvcmtzCi0JCQkJMTE5NCBOLiBNYXRoaWxkYSBhdmUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLTc1LTBGICAgKGhleCkJCVNoYW5naGFpIERvbmd6aG91LUxhd3RvbiBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTJDNzUwRiAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBEb25nemhvdS1MYXd0b24gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJTk8uMTg4LEZlbmd5ZVJvYWQsQmFvc2hhbkRpc3RyaWN0Ci0JCQkJc2hhbmdoYWkgIDIwMDk0OQotCQkJCUNISU5BCi0KLTJDLTc2LThBICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0yQzc2OEEgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtN0EtRkUgICAoaGV4KQkJSUVFJkUgIkJsYWNrIiBvcHMKLTJDN0FGRSAgICAgKGJhc2UgMTYpCQlJRUUmRSAiQmxhY2siIG9wcwotCQkJCTEwMCBKZXJpYyBBdmVudWUKLQkJCQlDaGFybG90dGUgTkMgMjgyNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLTdFLUNGICAgKGhleCkJCU9uem8gTHRkCi0yQzdFQ0YgICAgIChiYXNlIDE2KQkJT256byBMdGQKLQkJCQk2IEdyZWF0IE5ld3BvcnQgU3RyZWV0Ci0JCQkJTG9uZG9uICBXQzJIIDdKQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTJDLTgwLTY1ICAgKGhleCkJCUhBUlRJTkcgSW5jLiBvZiBOb3J0aCBBbWVyaWNhCi0yQzgwNjUgICAgIChiYXNlIDE2KQkJSEFSVElORyBJbmMuIG9mIE5vcnRoIEFtZXJpY2EKLQkJCQkxMzcwIEJvd2VzIFJvYWQKLQkJCQlFbGdpbiBJbGxpbm9pcyA2MDEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotMkMtODEtNTggICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkCi0yQzgxNTggICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotMkMtOEItRjIgICAoaGV4KQkJSGl0YWNoaSBNZXRhbHMgQW1lcmljYSBMdGQKLTJDOEJGMiAgICAgKGJhc2UgMTYpCQlIaXRhY2hpIE1ldGFscyBBbWVyaWNhIEx0ZAotCQkJCTE5MjAgWmFua2VyIFJvYWQKLQkJCQlTYW4gSm9zZSAgQ0EgOTUxMTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLTkxLTI3ICAgKGhleCkJCUVpbnRlY2hubyBDb3Jwb3JhdGlvbgotMkM5MTI3ICAgICAoYmFzZSAxNikJCUVpbnRlY2hubyBDb3Jwb3JhdGlvbgotCQkJCTMzNTktMSwga2FrbywgSW5hbWktY2hvCi0JCQkJa2Frby1ndW4gaHlvZ28gNjc1LTExMDUKLQkJCQlKQVBBTgotCi0yQy05Ny0xNyAgIChoZXgpCQlJLkMuWS4gQi5WLgotMkM5NzE3ICAgICAoYmFzZSAxNikJCUkuQy5ZLiBCLlYuCi0JCQkJSG91dHNhYWNobW9sZSAzNQotCQkJCUxlbW1lciBGcmllc2xhbmQgODUzMSBXQwotCQkJCU5FVEhFUkxBTkRTCi0KLTJDLTlFLTVGICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0yQzlFNUYgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy05RS1GQyAgIChoZXgpCQlDQU5PTiBJTkMuCi0yQzlFRkMgICAgIChiYXNlIDE2KQkJQ0FOT04gSU5DLgotCQkJCTMwLTIgU2hpbW9tYXJ1a28gMy1jaG9tZSwKLQkJCQlPaHRhLWt1IFRva3lvIDE0OC04NTAxCi0JCQkJSkFQQU4KLQotMkMtQTEtNTcgICAoaGV4KQkJQUNST01BVEUsIElOQy4KLTJDQTE1NyAgICAgKGJhc2UgMTYpCQlBQ1JPTUFURSwgSU5DLgotCQkJCSM5MTEsIEUmQyAgVmVudHVyZSBEcmVhbSBUb3dlciBJSQotCQkJCTE5Ny0xMCwgR3Vyby1kb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi03MTkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMkMtQTctODAgICAoaGV4KQkJVHJ1ZSBUZWNobm9sb2dpZXMgSW5jLgotMkNBNzgwICAgICAoYmFzZSAxNikJCVRydWUgVGVjaG5vbG9naWVzIEluYy4KLQkJCQlSNDc2LCBBbmdlbENpdHkgMXN0LAotCQkJCTE2MSwgR3VlbWdvaywgQnVuZGFuZwotCQkJCVNlb25nbmFtLCBLeXVuZ2tpIDQ2My04NjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMkMtQTgtMzUgICAoaGV4KQkJUklNCi0yQ0E4MzUgICAgIChiYXNlIDE2KQkJUklNCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgM1c4Ci0JCQkJQ0FOQURBCi0KLTJDLUIwLTVEICAgKGhleCkJCU5FVEdFQVIKLTJDQjA1RCAgICAgKGJhc2UgMTYpCQlORVRHRUFSCi0JCQkJMzUwIEVBU1QgUExVTUVSSUEgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQUxJRk9STklBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy1CMC1ERiAgIChoZXgpCQlTb2xpdG9uIFRlY2hub2xvZ2llcyBQdnQgTHRkCi0yQ0IwREYgICAgIChiYXNlIDE2KQkJU29saXRvbiBUZWNobm9sb2dpZXMgUHZ0IEx0ZAotCQkJCSMgNjgzLCAxNXRoIENyb3NzIAotCQkJCUogUCBOYWdhciAybmQgUGhhc2UKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MCAwNzgKLQkJCQlJTkRJQQotCi0yQy1CNi05RCAgIChoZXgpCQlSRUQgRGlnaXRhbCBDaW5lbWEKLTJDQjY5RCAgICAgKGJhc2UgMTYpCQlSRUQgRGlnaXRhbCBDaW5lbWEKLQkJCQkyMDI5MSBWYWxlbmNpYSBDaXJjbGUKLQkJCQlMYWtlIEZvcmVzdCBDYWxpZm9ybmlhIDkyNjMwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy1CRS05NyAgIChoZXgpCQlJbmdlbmlldXJidWVybyBCaWNrZWxlIHVuZCBCdWVobGVyIEdtYkgKLTJDQkU5NyAgICAgKGJhc2UgMTYpCQlJbmdlbmlldXJidWVybyBCaWNrZWxlIHVuZCBCdWVobGVyIEdtYkgKLQkJCQlTdC5Qb2VsdGVuZXIgU3RyLiA3MAotCQkJCVN0dXR0Z2FydCBCVyA3MDQ2OQotCQkJCUdFUk1BTlkKLQotMkMtQzItNjAgICAoaGV4KQkJUmF2ZWxsbyBTeXN0ZW1zCi0yQ0MyNjAgICAgIChiYXNlIDE2KQkJUmF2ZWxsbyBTeXN0ZW1zCi0JCQkJSGF0aWRoYXIgMwotCQkJCVJhYW5hbmEgIDQzNjY1Ci0JCQkJSVNSQUVMCi0KLTJDLUNELTI3ICAgKGhleCkJCVByZWNvciBJbmMKLTJDQ0QyNyAgICAgKGJhc2UgMTYpCQlQcmVjb3IgSW5jCi0JCQkJMjAwMzEgMTQybmQgQXZlbnVlIE5FCi0JCQkJV29vZGludmlsbGUgV0EgOTgwNzIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLUNELTQzICAgKGhleCkJCVN1bW1pdCBUZWNobm9sb2d5IEdyb3VwCi0yQ0NENDMgICAgIChiYXNlIDE2KQkJU3VtbWl0IFRlY2hub2xvZ3kgR3JvdXAKLQkJCQkxNDUgQmVsbW9udCBEcml2ZQotCQkJCVNvbWVyc2V0IE5KIDA4ODczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy1EMS1EQSAgIChoZXgpCQlTYW5qb2xlLCBJbmMuCi0yQ0QxREEgICAgIChiYXNlIDE2KQkJU2Fuam9sZSwgSW5jLgotCQkJCTI4MDAgV29vZGxhd24gRHJpdmUsICMyNzEKLQkJCQlIb25vbHVsdSBIYXdhaWkgOTY4MjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTJDLUQyLUU3ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi0yQ0QyRTcgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotMkMtRDQtNDQgICAoaGV4KQkJRnVqaXRzdSBMaW1pdGVkCi0yQ0Q0NDQgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBMaW1pdGVkCi0JCQkJTXVzYXNoaS1rb3N1Z2kgVG93ZXIgUGxhY2UgQmxkZy4sCi0JCQkJNDAzLCBLb3N1Z2ktY2hvIDEtY2hvbWUsIE5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjExLTAwNjMKLQkJCQlKQVBBTgotCi0yQy1ERC0wQyAgIChoZXgpCQlEaXNjb3Zlcmd5IEdtYkgKLTJDREQwQyAgICAgKGJhc2UgMTYpCQlEaXNjb3Zlcmd5IEdtYkgKLQkJCQlQYXNjYWxzdHIuIDE1Ci0JCQkJQWFjaGVuIE5SVyA1MjA3NgotCQkJCUdFUk1BTlkKLQotMkMtRTQtMTIgICAoaGV4KQkJU0FHRU1DT00gU0FTCi0yQ0U0MTIgICAgIChiYXNlIDE2KQkJU0FHRU1DT00gU0FTCi0JCQkJMjUwIFJPVVRFIERFIEwnRU1QRVJFVVIKLQkJCQlSVUVJTCBNQUxNQUlTT04gQ0VERVggSURGIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLTJDLUVFLTI2ICAgKGhleCkJCVBldHJvbGV1bSBHZW8tU2VydmljZXMKLTJDRUUyNiAgICAgKGJhc2UgMTYpCQlQZXRyb2xldW0gR2VvLVNlcnZpY2VzCi0JCQkJMTI1NTUgSGFycmlzIEJyYW5jaCBQa3d5Ci0JCQkJU3VpdGUgMTA4Ci0JCQkJQXVzdGluIFRYIDc4NjUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0yQy1GNC1DNSAgIChoZXgpCQlBdmF5YSBJbmMKLTJDRjRDNSAgICAgKGJhc2UgMTYpCQlBdmF5YSBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMC0yMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zMC0wQi05QyAgIChoZXgpCQlEZWx0YSBNb2JpbGUgU3lzdGVtcywgSW5jLgotMzAwQjlDICAgICAoYmFzZSAxNikJCURlbHRhIE1vYmlsZSBTeXN0ZW1zLCBJbmMuCi0JCQkJNzAwIFJlbWluZ3RvbiBSb2FkCi0JCQkJMm5kIEZsb29yCi0JCQkJU2NoYXVtYnVyZyBJbGxpbm9pcyA2MDE3MwotCQkJCVVOSVRFRCBTVEFURVMKLQotMzAtMEUtRDUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLkx0ZAotMzAwRUQ1ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby5MdGQKLQkJCQk2NixDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFBST1ZJTkNFIE9GIENISU5BCi0KLTMwLTE0LTJEICAgKGhleCkJCVBpY2lvcmdyb3MgR21iSAotMzAxNDJEICAgICAoYmFzZSAxNikJCVBpY2lvcmdyb3MgR21iSAotCQkJCUNsYXVkaWFzdHJhc3NlIDUKLQkJCQlDb2xvZ25lIE5SVyA1MTE0OQotCQkJCUdFUk1BTlkKLQotMzAtMTQtNEEgICAoaGV4KQkJV2lzdHJvbiBOZXdlYiBDb3JwLgotMzAxNDRBICAgICAoYmFzZSAxNikJCVdpc3Ryb24gTmV3ZWIgQ29ycC4KLQkJCQkyMCBQYXJrIEF2ZW51ZSBJSSxIc2luY2h1IFNjaWVuY2UgUGFyawotCQkJCUhzaW5jaHUgIDMwOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMzAtMTYtOEQgICAoaGV4KQkJUHJvTG9uCi0zMDE2OEQgICAgIChiYXNlIDE2KQkJUHJvTG9uCi0JCQkJMTk4OSBNaWNoZWxpbgotCQkJCUxhdmFsIFF1ZWJlYyBIN0w1QjcKLQkJCQlDQU5BREEKLQotMzAtMTctQzggICAoaGV4KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLTMwMTdDOCAgICAgKGJhc2UgMTYpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotCQkJCU55YSBWYXR0ZW50b3JuZXQKLQkJCQlMdW5kIFNFIDIyMSA4OAotCQkJCVNXRURFTgotCi0zMC0xOC1DRiAgIChoZXgpCQlERU9TIGNvbnRyb2wgc3lzdGVtcyBHbWJICi0zMDE4Q0YgICAgIChiYXNlIDE2KQkJREVPUyBjb250cm9sIHN5c3RlbXMgR21iSAotCQkJCUJpcmtlbmFsbGVlIDExMwotCQkJCVJoZWluZSBOUlcgNDg0MzIKLQkJCQlHRVJNQU5ZCi0KLTMwLTFBLTI4ICAgKGhleCkJCU1ha28gTmV0d29ya3MgTHRkCi0zMDFBMjggICAgIChiYXNlIDE2KQkJTWFrbyBOZXR3b3JrcyBMdGQKLQkJCQkxLzYyIFBhdWwgTWF0dGhld3MgUmQKLQkJCQlBbGJhbnkKLQkJCQlBdWNrbGFuZCAgMDYzMgotCQkJCU5FVyBaRUFMQU5ECi0KLTMwLTJELUU4ICAgKGhleCkJCUpEQSwgTExDIChKREEgU3lzdGVtcykKLTMwMkRFOCAgICAgKGJhc2UgMTYpCQlKREEsIExMQyAoSkRBIFN5c3RlbXMpCi0JCQkJNDA4MCBQaWtlIExhbmUKLQkJCQlDb25jb3JkIENBIDk0NTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zMC0zMi1ENCAgIChoZXgpCQlIYW5pbHN0bSBDby4sIEx0ZC4KLTMwMzJENCAgICAgKGJhc2UgMTYpCQlIYW5pbHN0bSBDby4sIEx0ZC4KLQkJCQkxMzgtNiwgU2FuZ2RhZXdvbi1kb25nIEp1bmd3b24tZ3UKLQkJCQk3MDksIEpvb25nYW5nIEluZHVzcGlhIDV0aAotCQkJCVNlb25nbmFtIEt5b25nZ2ktZG8gNDYyLTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zMC0zNy1BNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0zMDM3QTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zMC0zOC01NSAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotMzAzODU1ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgT3UgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLTMwLTM5LTI2ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0zMDM5MjYgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlT77+9bHZlZ2F0YW4gNTEKLQkJCQktCi0JCQkJTHVuZCAtIDIyMTg4Ci0JCQkJU1dFREVOCi0KLTMwLTM5LTU1ICAgKGhleCkJCVNoZW56aGVuIEppbmhlbmdqaWEgRWxlY3Ryb25pYyBDby4sIEx0ZC4KLTMwMzk1NSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBKaW5oZW5namlhIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0JCQkJNC02IEZsb29ycywgRmFjdG9yeSBCdWlsZGluZywgSmlqaWEgSW5kdXN0cmlhbCBQYXJrLAotCQkJCVhpYWxpbGFuZyBBcmVhLCBOYW53YW4gU3RyZWV0LCBMb25nZ2FuZyBBcmVhLgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMTIKLQkJCQlDSElOQQotCi0zMC0zOS1GMiAgIChoZXgpCQlBREIgQnJvYWRiYW5kIEl0YWxpYQotMzAzOUYyICAgICAoYmFzZSAxNikJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi0JCQkJVklBTEUgU0FSQ0EgMjIyIAotCQkJCU1JTEFOTyAgIDIwMTI2IAotCQkJCUlUQUxZCi0KLTMwLTQxLTc0ICAgKGhleCkJCUFMVEVDIExBTlNJTkcgTExDCi0zMDQxNzQgICAgIChiYXNlIDE2KQkJQUxURUMgTEFOU0lORyBMTEMKLQkJCQk1MzUgUk9VVEVTIDYgJiAyMDkKLQkJCQlNSUxGT1JEIFBBIDE4MzM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zMC00Ni05QSAgIChoZXgpCQlORVRHRUFSCi0zMDQ2OUEgICAgIChiYXNlIDE2KQkJTkVUR0VBUgotCQkJCTM1MCBFQVNUIFBMVU1FUklBIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0FMSUZPUk5JQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMzAtNDktM0IgICAoaGV4KQkJTmFuamluZyBaLUNvbSBXaXJlbGVzcyBDby4sTHRkCi0zMDQ5M0IgICAgIChiYXNlIDE2KQkJTmFuamluZyBaLUNvbSBXaXJlbGVzcyBDby4sTHRkCi0JCQkJWi1Db20gQnVpbGRpbmcsTk8uMzAgSmlhbmdzdSBTb2Z0d2FyZSBQYXJrLE5PLjY5OS0yMiBYdWFud3UgQXZlbnVlLAotCQkJCU5hbmppbmcgSmlhbmdzdSAyMTAwNDIKLQkJCQlDSElOQQotCi0zMC00Qy03RSAgIChoZXgpCQlQYW5hc29uaWMgRWxlY3RyaWMgV29ya3MgQXV0b21hdGlvbiBDb250cm9scyBUZWNobm8gQ28uLEx0ZC4KLTMwNEM3RSAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgRWxlY3RyaWMgV29ya3MgQXV0b21hdGlvbiBDb250cm9scyBUZWNobm8gQ28uLEx0ZC4KLQkJCQkyLTktMTggQ2hpZG9yaQotCQkJCU9vdGEta3UgVG9reW8gMTQ2LTg1NDAKLQkJCQlKQVBBTgotCi0zMC00RS1DMyAgIChoZXgpCQlUaWFuamluIFRlY2h1YSBUZWNobm9sb2d5IENvLiwgTHRkLgotMzA0RUMzICAgICAoYmFzZSAxNikJCVRpYW5qaW4gVGVjaHVhIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMTItMS0xNDAxIFRpYW5saW55dWFuIEZ1bGljaGVuZyBHdWxvdXhpIFJvYWQsTmFua2FpIERpc3RyaWN0IAotCQkJCVRpYW5qaW4gIDMwMDEwMQotCQkJCUNISU5BCi0KLTMwLTUyLTVBICAgKGhleCkJCU5TVCBDby4sIExURAotMzA1MjVBICAgICAoYmFzZSAxNikJCU5TVCBDby4sIExURAotCQkJCVJNMzAxLERhZXJ5dW5nIFRlY2hubyBUb3duIDIsIDU2OS0yMQotCQkJCUdhc2FuLWRvbmcsIEdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtNzcxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTMwLTU1LUVEICAgKGhleCkJCVRyZXggTmV0d29yayBMTEMKLTMwNTVFRCAgICAgKGJhc2UgMTYpCQlUcmV4IE5ldHdvcmsgTExDCi0JCQkJUm9vbSA1MDUsIFRvd2VyIEIgTm9uZ2tlIEJ1aWxkaW5nLCAKLQkJCQlOby4xMSBTaHVndWFuZyBIdWF5dWFuIE1pZGRsZSBTdHJlZXQsSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA5NwotCQkJCUNISU5BCi0KLTMwLTU3LUFDICAgKGhleCkJCUlSTEFCIExURC4KLTMwNTdBQyAgICAgKGJhc2UgMTYpCQlJUkxBQiBMVEQuCi0JCQkJM3JkIEZsb29yLCAyQSBCaXVsZGluZywgSHVpaGFvIEluZHVzdHJpYWwgUGFyawotCQkJCUhlc2h1aWtvdSxHb25nbWluZwotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgNTE4MTA2Ci0JCQkJQ0hJTkEKLQotMzAtNjEtMTggICAoaGV4KQkJUGFyYWRvbSBJbmMuCi0zMDYxMTggICAgIChiYXNlIDE2KQkJUGFyYWRvbSBJbmMuCi0JCQkJOEYsIE4wLiAxNzgsIFNlYy0yLCBHb25nZGFvd3UgUmQuCi0JCQkJSHNpbmNodSBDaXR5ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTMwLTY4LThDICAgKGhleCkJCVJlYWNoIFRlY2hub2xvZ3kgSW5jLgotMzA2ODhDICAgICAoYmFzZSAxNikJCVJlYWNoIFRlY2hub2xvZ3kgSW5jLgotCQkJCTQ1NzUgQ3VzaGluZyBQYXJrd2F5Ci0JCQkJRnJlbW9udCBDYWxpZm9ybmlhIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zMC02OS00QiAgIChoZXgpCQlSSU0KLTMwNjk0QiAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMzAtNkMtQkUgICAoaGV4KQkJU2t5bW90aW9uIFRlY2hub2xvZ3kgKEhLKSBMaW1pdGVkCi0zMDZDQkUgICAgIChiYXNlIDE2KQkJU2t5bW90aW9uIFRlY2hub2xvZ3kgKEhLKSBMaW1pdGVkCi0JCQkJVW5pdCAyNjAzLCAyNi9GLCBNZXRyb3BvbGUgU3F1YXJlLAotCQkJCSMyIE9uIFlpdSBTdHJlZXQsIFNoYXRpbiwgTi5ULiwKLQkJCQk4NTIKLQkJCQlIT05HIEtPTkcKLQotMzAtNkUtNUMgICAoaGV4KQkJVmFsaWR1cyBUZWNobm9sb2dpZXMKLTMwNkU1QyAgICAgKGJhc2UgMTYpCQlWYWxpZHVzIFRlY2hub2xvZ2llcwotCQkJCTQyMCBOb3J0aCBNYWluIFN0cmVldAotCQkJCUVhc3QgUGVvcmlhIElsbGlub2lzIDYxNjExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zMC03MS1CMiAgIChoZXgpCQlIYW5nemhvdSBQcmV2YWlsIE9wdG9lbGVjdHJvbmljIEVxdWlwbWVudCBDby4sTFRELgotMzA3MUIyICAgICAoYmFzZSAxNikJCUhhbmd6aG91IFByZXZhaWwgT3B0b2VsZWN0cm9uaWMgRXF1aXBtZW50IENvLixMVEQuCi0JCQkJSW5kdXN0cmlhbCBEZXZlbG9wbWVudCBBcmVhLCBHdWFsaSBUb3duLAotCQkJCSBYaWFvc2hhbiAKLQkJCQlIYW5nemhvdSBDaXR5IFpoZSBKaWFuZyAzMTEyNDEKLQkJCQlDSElOQQotCi0zMC03Qy0zMCAgIChoZXgpCQlSSU0KLTMwN0MzMCAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotMzAtN0UtQ0IgICAoaGV4KQkJU0ZSCi0zMDdFQ0IgICAgIChiYXNlIDE2KQkJU0ZSCi0JCQkJNDAvNDIgUXVhaSBkdSBwb2ludCBkdSBqb3VyCi0JCQkJQm91bG9uZ25lIEJpbGxhbmNvdXJ0IEhhdXRzIGRlIFNlaW5lIDkyNjU5Ci0JCQkJRlJBTkNFCi0KLTMwLTg1LUE5ICAgKGhleCkJCUFzdXN0ZWsgQ29tcHV0ZXIgSW5jCi0zMDg1QTkgICAgIChiYXNlIDE2KQkJQXN1c3RlayBDb21wdXRlciBJbmMKLQkJCQkxNSxMaS1UZSBSZC4sIFBlaXRvdQotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBQUk9WSU5DRSBPRiBDSElOQQotCi0zMC04Ny0zMCAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0zMDg3MzAgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxMDEwOAotCQkJCUNISU5BCi0KLTMwLThDLUZCICAgKGhleCkJCURyb3BjYW0KLTMwOENGQiAgICAgKGJhc2UgMTYpCQlEcm9wY2FtCi0JCQkJNjI1IE1hcmtldCBTdHJlZXQKLQkJCQlTdWl0ZSAxMDEwCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotMzAtQUUtRjYgICAoaGV4KQkJUmFkaW8gTW9iaWxlIEFjY2VzcwotMzBBRUY2ICAgICAoYmFzZSAxNikJCVJhZGlvIE1vYmlsZSBBY2Nlc3MKLQkJCQkxIEVsbSBTcQotCQkJCUFuZG92ZXIgTUEgMDE4NzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTMwLUIyLTE2ICAgKGhleCkJCUh5dGVjIEdlcmFldGViYXUgR21iSAotMzBCMjE2ICAgICAoYmFzZSAxNikJCUh5dGVjIEdlcmFldGViYXUgR21iSAotCQkJCUNvY2hlbWVyIFN0ci4gMTItMTQKLQkJCQlNYW5uaGVpbSBCVyA2ODMwOQotCQkJCUdFUk1BTlkKLQotMzAtQjMtQTIgICAoaGV4KQkJU2hlbnpoZW4gSGVndWFuZyBNZWFzdXJlbWVudCAmIENvbnRyb2wgVGVjaG5vbG9neSBDby4sTHRkCi0zMEIzQTIgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gSGVndWFuZyBNZWFzdXJlbWVudCAmIENvbnRyb2wgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJMy9GLCBUb3dlciBBLCBYaWFuZ25pYW4gUGxhemEsIDYwNjAgUWlhb3hpYW5nIFJvYWQsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTMKLQkJCQlDSElOQQotCi0zMC1ERS04NiAgIChoZXgpCQlDZWRhYyBTb2Z0d2FyZSBTLnIubC4KLTMwREU4NiAgICAgKGJhc2UgMTYpCQlDZWRhYyBTb2Z0d2FyZSBTLnIubC4KLQkJCQlWaWEgVG9zY2FuYSwgMwotCQkJCUNhc3RpZ2xpb25lIGRlaSBQZXBvbGkgQm9sb2duYSA0MDAzNQotCQkJCUlUQUxZCi0KLTMwLUU0LThFICAgKGhleCkJCVZvZGFmb25lIFVLCi0zMEU0OEUgICAgIChiYXNlIDE2KQkJVm9kYWZvbmUgVUsKLQkJCQlWb2RhZm9uZSBIb3VzZSAKLQkJCQlUaGUgQ29ubmVjdGlvbiAKLQkJCQlOZXdidXJ5ICBCZXJrc2hpcmUgIFJHMTQyRk4KLQkJCQlVTklURUQgS0lOR0RPTQotCi0zMC1FNC1EQiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi0zMEU0REIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotMzAtRUItMjUgICAoaGV4KQkJSU5URUsgRElHSVRBTAotMzBFQjI1ICAgICAoYmFzZSAxNikJCUlOVEVLIERJR0lUQUwKLQkJCQk4MDEsIDh0aCBGbC4sIEFueWFuZyBLLWNlbnRlciBidWlsZGluZywgMTU5MS05Ci0JCQkJR3dhbnlhbmctZG9uZywgRG9uZ2FuLWd1Ci0JCQkJQW55YW5nICA0MzEtMDYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTMwLUVGLUQxICAgKGhleCkJCUFsc3RvbSBTdHJvbmd3aXNoIChTaGVuemhlbikgQ28uLCBMdGQuCi0zMEVGRDEgICAgIChiYXNlIDE2KQkJQWxzdG9tIFN0cm9uZ3dpc2ggKFNoZW56aGVuKSBDby4sIEx0ZC4KLQkJCQk1RixCdWlsZGluZyBOby42LCBLZWppIE1pZGRsZSAyIFJvYWQgSGlnaC1UZWNoIEluZHVzdHJpYWwgUGFyaywgCi0JCQkJU2hlbiBaaGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0zMC1GOS1FRCAgIChoZXgpCQlTb255IENvcnBvcmF0aW9uCi0zMEY5RUQgICAgIChiYXNlIDE2KQkJU29ueSBDb3Jwb3JhdGlvbgotCQkJCUdvdGVueWFtYSBUZWMuCi0JCQkJNS0xLTEyIEtpdGFzaGluYWdhd2EgU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gIDE0MS0wMDAxCi0JCQkJSkFQQU4KLQotMzQtMDctRkIgICAoaGV4KQkJRXJpY3Nzb24gQUIKLTM0MDdGQiAgICAgKGJhc2UgMTYpCQlFcmljc3NvbiBBQgotCQkJCVRvcnNoYW1uc2dhdGFuIDM2Ci0JCQkJU3RvY2tob2xtIFNFLTE2NCA4MAotCQkJCVNXRURFTgotCi0zNC0wOC0wNCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTM0MDgwNCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFNpbmh1IDNyZCBSZC4sIE5laWh1IERpc3RyaWN0LCAKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMzQtMTUtOUUgICAoaGV4KQkJQXBwbGUsIEluYwotMzQxNTlFICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM0LTIxLTA5ICAgKGhleCkJCUplbnNlbiBTY2FuZGluYXZpYSBBUwotMzQyMTA5ICAgICAoYmFzZSAxNikJCUplbnNlbiBTY2FuZGluYXZpYSBBUwotCQkJCUJhbGRlciBBbGzpIDMKLQkJCQlKZXNzaGVpbSAgMjA1MAotCQkJCU5PUldBWQotCi0zNC0yNS01RCAgIChoZXgpCQlTaGVuemhlbiBMb2FkY29tIFRlY2hub2xvZ3kgQ28uLEx0ZAotMzQyNTVEICAgICAoYmFzZSAxNikJCVNoZW56aGVuIExvYWRjb20gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJWXVlaGFpIEJ1aWxkaW5nIEEtMTNDRCxOYW5oYWkgUm9hZCxOYW5zaGFuIEFyZWEKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU0Ci0JCQkJQ0hJTkEKLQotMzQtMjktRUEgICAoaGV4KQkJTUNEIEVMRUNUUk9OSUNTIFNQLiBaIE8uTy4KLTM0MjlFQSAgICAgKGJhc2UgMTYpCQlNQ0QgRUxFQ1RST05JQ1MgU1AuIFogTy5PLgotCQkJCUxlbGV3ZWxhIDI2Ci0JCQkJWnl3aWVjIFNsYXNraWUgMzQtMzAwCi0JCQkJUE9MQU5ECi0KLTM0LTJGLTZFICAgKGhleCkJCUFueXdpcmUgY29ycG9yYXRpb24KLTM0MkY2RSAgICAgKGJhc2UgMTYpCQlBbnl3aXJlIGNvcnBvcmF0aW9uCi0JCQkJOC0xIFNoaW1vLWluZGVuIElub3VjaGkKLQkJCQlOYWdhb2tha3lvIEt5b3RvIHByZWYuIDYxNy0wODEzCi0JCQkJSkFQQU4KLQotMzQtNDAtQjUgICAoaGV4KQkJSUJNCi0zNDQwQjUgICAgIChiYXNlIDE2KQkJSUJNCi0JCQkJMzAzOSBFIENvcm53YWxsaXMgUmQKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zNC00Qi0zRCAgIChoZXgpCQlGaWJlcmhvbWUgVGVsZWNvbW11bmljYXRpb24gVGVjaC5Dby4sTHRkLgotMzQ0QjNEICAgICAoYmFzZSAxNikJCUZpYmVyaG9tZSBUZWxlY29tbXVuaWNhdGlvbiBUZWNoLkNvLixMdGQuCi0JCQkJTm8uNSBEb25nWGluIFJvYWQKLQkJCQlIb25nc2FuIERpc3RyaWN0Ci0JCQkJV3VoYW4gQ2l0eSBIdWJlaSBQcm92aW5jZSA0MzAwNzQKLQkJCQlDSElOQQotCi0zNC00Qi01MCAgIChoZXgpCQlaVEUgQ29ycG9yYXRpb24KLTM0NEI1MCAgICAgKGJhc2UgMTYpCQlaVEUgQ29ycG9yYXRpb24KLQkJCQkxMi9GLFpURSBSJkQgQnVsaWRpbmcsS2VqaW5hbiBSb2FkLFNoZW56aGVuLFAuUi5DaGluYQotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0zNC00Ri02OSAgIChoZXgpCQlFS0lOT1BTIFNBUwotMzQ0RjY5ICAgICAoYmFzZSAxNikJCUVLSU5PUFMgU0FTCi0JCQkJMywgUnVlIEJsYWlzZSBQYXNjYWwKLQkJCQlMQU5OSU9OIEZSQU5DRSAyMjMwMAotCQkJCUZSQU5DRQotCi0zNC01MS1DOSAgIChoZXgpCQlBcHBsZSwgSW5jLgotMzQ1MUM5ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zNC01Qi0xMSAgIChoZXgpCQlFVkkgSEVBVCBBQgotMzQ1QjExICAgICAoYmFzZSAxNikJCUVWSSBIRUFUIEFCCi0JCQkJQm94IDU1Ci0JCQkJS3VuZ3NhZW5nZW4gIDE5NiAyMgotCQkJCVNXRURFTgotCi0zNC02OC00QSAgIChoZXgpCQlUZXJhd29ya3MgQ28uLCBMdGQuCi0zNDY4NEEgICAgIChiYXNlIDE2KQkJVGVyYXdvcmtzIENvLiwgTHRkLgotCQkJCVJvb20gTm8uIDIwMSAsIDUxNS0zMCAsIE1vay1Eb25nCi0JCQkJWWFuZ2NoZW9uLUd1Ci0JCQkJU2VvdWwgIDE1OC04MDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzQtNkUtOEEgICAoaGV4KQkJRWNvc2Vuc2UKLTM0NkU4QSAgICAgKGJhc2UgMTYpCQlFY29zZW5zZQotCQkJCTE0MTQgS29sb24gc2NpZW5jZSB2YWxsZXQtSUkuLCAjODExCi0JCQkJR3VybzMtZG9uZwotCQkJCVNlb3VsIEd1cm8tZ3UgMTUyLTg3OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zNC02Ri05MiAgIChoZXgpCQlXaGl0ZSBSb2RnZXJzIERpdmlzaW9uCi0zNDZGOTIgICAgIChiYXNlIDE2KQkJV2hpdGUgUm9kZ2VycyBEaXZpc2lvbgotCQkJCTgxMDAgV2VzdCBGbG9yaXNzYW50Ci0JCQkJUC5PLiBCb3ggMzY5MjEKLQkJCQlTdC4gTG91aXMgTU8gNjMxMzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM0LTc2LUM1ICAgKGhleCkJCUktTyBEQVRBIERFVklDRSwgSU5DLgotMzQ3NkM1ICAgICAoYmFzZSAxNikJCUktTyBEQVRBIERFVklDRSwgSU5DLgotCQkJCTMtMTAsIFNBS1VSQURBLU1BQ0hJCi0JCQkJS0FOQVpBV0EgSVNISUtBV0EgOTIwLTg1MTIKLQkJCQlKQVBBTgotCi0zNC03OC03NyAgIChoZXgpCQlPLU5FVCBDb21tdW5pY2F0aW9ucyhTaGVuemhlbikgTGltaXRlZAotMzQ3ODc3ICAgICAoYmFzZSAxNikJCU8tTkVUIENvbW11bmljYXRpb25zKFNoZW56aGVuKSBMaW1pdGVkCi0JCQkJIzEwLTEgU291dGgsTWFxdWVsaW5nIEluZHVzdHJpYWwgUGFyayxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTM0LTdFLTM5ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi0zNDdFMzkgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTM0LTgxLTM3ICAgKGhleCkJCVVOSUNBUkQgU0EKLTM0ODEzNyAgICAgKGJhc2UgMTYpCQlVTklDQVJEIFNBCi0JCQkJVUwuV0FET1dJQ0tBIDEyCi0JCQkJS1JBS09XIHdvai4gbWFsb3BvbHNraWUgMzAtNDE1Ci0JCQkJUE9MQU5ECi0KLTM0LTgyLURFICAgKGhleCkJCUtheW8gVGVjaG5vbG9neSwgSW5jLgotMzQ4MkRFICAgICAoYmFzZSAxNikJCUtheW8gVGVjaG5vbG9neSwgSW5jLgotCQkJCTMyMDEgU3llbmUgUmQKLQkJCQlNYWRpc29uIFdJIDUzNzEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zNC04My0wMiAgIChoZXgpCQlpRm9yY29tIENvLiwgTHRkCi0zNDgzMDIgICAgIChiYXNlIDE2KQkJaUZvcmNvbSBDby4sIEx0ZAotCQkJCTEzMjYKLQkJCQlUc3VrdWljaG8tTmFrYW5vCi0JCQkJU2FnYW1paGFyYSBLYW5hZ2F3YSAyMjAtMDIwNwotCQkJCUpBUEFOCi0KLTM0LTg2LTJBICAgKGhleCkJCUhlaW56IExhY2ttYW5uIEdtYkggJiBDbyBLRwotMzQ4NjJBICAgICAoYmFzZSAxNikJCUhlaW56IExhY2ttYW5uIEdtYkggJiBDbyBLRwotCQkJCUhhcmtvcnRzdHJhc3NlIDE1Ci0JCQkJTfxuc3RlciBOUlcgNDgxNjMKLQkJCQlHRVJNQU5ZCi0KLTM0LTk3LUZCICAgKGhleCkJCUFEVkFOQ0VEIFJGIFRFQ0hOT0xPR0lFUyBJTkMKLTM0OTdGQiAgICAgKGJhc2UgMTYpCQlBRFZBTkNFRCBSRiBURUNITk9MT0dJRVMgSU5DCi0JCQkJMzExNiBXIFZhbm93ZW4gU3QKLQkJCQlCdXJiYW5rIENhbGlmb3JuaWEgOTE1MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM0LTk5LTZGICAgKGhleCkJCVZQSSBFbmdpbmVlcmluZwotMzQ5OTZGICAgICAoYmFzZSAxNikJCVZQSSBFbmdpbmVlcmluZwotCQkJCTExODE0IFMuIEVsZWN0aW9uIFJkLiwgU3VpdGUgMjAwCi0JCQkJRHJhcGVyIFVUIDg0MDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zNC05OS1ENyAgIChoZXgpCQlVbml2ZXJzYWwgRmxvdyBNb25pdG9ycywgSW5jLgotMzQ5OUQ3ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBGbG93IE1vbml0b3JzLCBJbmMuCi0JCQkJMTc1NSBFLiBOaW5lIE1pbGUgUmQuCi0JCQkJSGF6ZWwgUGFyayBNSSA0ODAzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotMzQtOUEtMEQgICAoaGV4KQkJWkJEIERpc3BsYXlzIEx0ZAotMzQ5QTBEICAgICAoYmFzZSAxNikJCVpCRCBEaXNwbGF5cyBMdGQKLQkJCQlPcmNoYXJkIExlYQotCQkJCVdpbmtmaWVsZCBMYW5lCi0JCQkJV2luZHNvciBCZXJrc2hpcmUgU0w0IDRSVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTM0LUExLTgzICAgKGhleCkJCUFXYXJlLCBJbmMKLTM0QTE4MyAgICAgKGJhc2UgMTYpCQlBV2FyZSwgSW5jCi0JCQkJNjE0IE1hc3NhY2h1c2V0dHMgQXZlLiAKLQkJCQlDYW1icmlkZ2UgTUEgMDIxMzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM0LUE1LTVEICAgKGhleCkJCVRFQ0hOT1NPRlQgSU5URVJOQVRJT05BTCBTUkwKLTM0QTU1RCAgICAgKGJhc2UgMTYpCQlURUNITk9TT0ZUIElOVEVSTkFUSU9OQUwgU1JMCi0JCQkJUk82NjQwOTA0Ci0JCQkJU3RyLiBQYWR1cmV0dSA1MAotCQkJCUJ1Y3VyZXN0aSAtIFNlY3RvciA2IDA2MTk5MgotCQkJCVJPTUFOSUEKLQotMzQtQTctMDkgICAoaGV4KQkJVHJldmlsIHNybAotMzRBNzA5ICAgICAoYmFzZSAxNikJCVRyZXZpbCBzcmwKLQkJCQlWaWEgQ29wZXJuaWNvIDEKLQkJCQlQb3p6byBkJiMzOTtBZGRhIE1JIDIwMDYwCi0JCQkJSVRBTFkKLQotMzQtQTctQkEgICAoaGV4KQkJRmlzY2hlciBJbnRlcm5hdGlvbmFsIFN5c3RlbXMgQ29ycG9yYXRpb24KLTM0QTdCQSAgICAgKGJhc2UgMTYpCQlGaXNjaGVyIEludGVybmF0aW9uYWwgU3lzdGVtcyBDb3Jwb3JhdGlvbgotCQkJCTU4MDEgUGVsaWNhbiBCYXkgQm91bGV2YXJkICMzMDAKLQkJCQlOYXBsZXMgRmxvcmlkYSAzNDEwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotMzQtQUEtOTkgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTM0QUE5OSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTYwMCBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDJFNgotCQkJCUNBTkFEQQotCi0zNC1BQS1FRSAgIChoZXgpCQlNaWtyb3Zpc2F0b3MgU2VydmlzYXMgVUFCCi0zNEFBRUUgICAgIChiYXNlIDE2KQkJTWlrcm92aXNhdG9zIFNlcnZpc2FzIFVBQgotCQkJCVNhdmFub3JpdSBwci4gMTI1Ci0JCQkJS2F1bmFzICBMVDQ0MTQ2Ci0JCQkJTElUSFVBTklBCi0KLTM0LUI1LTcxICAgKGhleCkJCVBMRFMKLTM0QjU3MSAgICAgKGJhc2UgMTYpCQlQTERTCi0JCQkJU2NoYW56ZW5mZWxkc3RyYXNzZSAyCi0JCQkJV2V0emxhciBIZXNzZW4gMzU1NzgKLQkJCQlHRVJNQU5ZCi0KLTM0LUJBLTUxICAgKGhleCkJCVNlLUt1cmUgQ29udHJvbHMsIEluYy4KLTM0QkE1MSAgICAgKGJhc2UgMTYpCQlTZS1LdXJlIENvbnRyb2xzLCBJbmMuCi0JCQkJMzcxNCBSdW5nZSBTdHJlZXQKLQkJCQlGcmFua2xpbiBQYXJrIElMIDYwMTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zNC1CQS05QSAgIChoZXgpCQlBc2lhdGVsY28gVGVjaG5vbG9naWVzIENvLgotMzRCQTlBICAgICAoYmFzZSAxNikJCUFzaWF0ZWxjbyBUZWNobm9sb2dpZXMgQ28uCi0JCQkJMzAxLCM4IEJ1aWxkaW5nLCMyODkgQmlzaGVuZyBSb2FkCi0JCQkJWmhhbmdqaWFuZyBIaS1UZWNoIFBhcmssUHVkb25nCi0JCQkJU2hhbmdoYWkgIDIwMTIwNAotCQkJCUNISU5BCi0KLTM0LUJCLTFGICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbgotMzRCQjFGICAgICAoYmFzZSAxNikJCVJlc2VhcmNoIEluIE1vdGlvbgotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi0zNC1CQy1BNiAgIChoZXgpCQlCZWlqaW5nIERpbmcgUWluZyBUZWNobm9sb2d5LCBMdGQuCi0zNEJDQTYgICAgIChiYXNlIDE2KQkJQmVpamluZyBEaW5nIFFpbmcgVGVjaG5vbG9neSwgTHRkLgotCQkJCTIxOCBIYW4gVGFpIEh1YSBPZmZpY2UgQnVpbGRpbmcsIDEzIEh1YW4gWXVhbiBMdSwKLQkJCQlIYWlkaWFuIERpc3RyaWN0IEJlaWppbmcgMTAwMDgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zNC1CRC1GOSAgIChoZXgpCQlTaGFuZ2hhaSBXREsgSW5kdXN0cmlhbCBDby4sTHRkLgotMzRCREY5ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFdESyBJbmR1c3RyaWFsIENvLixMdGQuCi0JCQkJTm8uMjEwMCxTb25nemhlbiBSb2FkLFNvbmdqaWFuZyBEaXN0cmljdAotCQkJCVNoYW5naGFpICAyMDE2MDYKLQkJCQlDSElOQQotCi0zNC1DMy1BQyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0zNEMzQUMgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCTk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTM0LUM2LTlBICAgKGhleCkJCUVuZWNzeXMgTHRkCi0zNEM2OUEgICAgIChiYXNlIDE2KQkJRW5lY3N5cyBMdGQKLQkJCQlIYXJzdG9uIE1pbGwKLQkJCQlSb3lzdG9uIFJvYWQKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0IyMiA3R0cKLQkJCQlVTklURUQgS0lOR0RPTQotCi0zNC1DNy0zMSAgIChoZXgpCQlBTFBTIEVsZWN0cmljIENvLC4gTHRkLgotMzRDNzMxICAgICAoYmFzZSAxNikJCUFMUFMgRWxlY3RyaWMgQ28sLiBMdGQuCi0JCQkJNi0zLTM2IEZ1cnVrYXdhbmFrYXphdG8sCi0JCQkJT3Nha2kgTWl5YWdpLXByZWYgOTg5LTYxODEKLQkJCQlKQVBBTgotCi0zNC1DRS05NCAgIChoZXgpCQlQYXJzZWMgKFB0eSkgTHRkCi0zNENFOTQgICAgIChiYXNlIDE2KQkJUGFyc2VjIChQdHkpIEx0ZAotCQkJCUJ1aWxkaW5nIDgtMTAgTWFuaGF0dGFuIE9mZmljZSBQYXJrCi0JCQkJMTYgUGlldGVyIFN0cmVldCwgSGlnaHZlbGQgVGVjaG5vcGFyawotCQkJCUNlbnR1cmlvbiBHYXV0ZW5nIDAxNTcKLQkJCQlTT1VUSCBBRlJJQ0EKLQotMzQtRDAtOUIgICAoaGV4KQkJTW9iaWxNQVggVGVjaG5vbG9neSBJbmMuCi0zNEQwOUIgICAgIChiYXNlIDE2KQkJTW9iaWxNQVggVGVjaG5vbG9neSBJbmMuCi0JCQkJMkYtNSwgTm8uMjgsIFRhaS1ZdWFuIFN0LgotCQkJCUNodXBlaSBDaXR5LCBIc2luY2h1IENvdW50cnkgIDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotMzQtRDItQzQgICAoaGV4KQkJUkVOQSBHbWJIIFByaW50IFN5c3RlbWUKLTM0RDJDNCAgICAgKGJhc2UgMTYpCQlSRU5BIEdtYkggUHJpbnQgU3lzdGVtZQotCQkJCUhpZW5sb2hlc3RyYXNzZSAyNAotCQkJCU90dGVyZmluZyBCYXZhcmlhIDgzNjI0Ci0JCQkJR0VSTUFOWQotCi0zNC1ERi0yQSAgIChoZXgpCQlGdWppa29uIEluZHVzdHJpYWwgQ28uLExpbWl0ZWQKLTM0REYyQSAgICAgKGJhc2UgMTYpCQlGdWppa29uIEluZHVzdHJpYWwgQ28uLExpbWl0ZWQKLQkJCQkxNi9GLiwgVG93ZXIgMSwgR3JhbmQgQ2VudHJhbCBQbGF6YSwxMzggU2hhdGluIFJ1cmFsIAotCQkJCUNvbW1pdHRlZSBSb2FkLFNoYXRpbiwgTi5ULiwgCi0JCQkJNTIzOTMwCi0JCQkJSE9ORyBLT05HCi0KLTM0LUUwLUQ3ICAgKGhleCkJCURPTkdHVUFOIFFJU0hFTkcgRUxFQ1RST05JQ1MgSU5EVVNUUklBTCBDTy4sIExURAotMzRFMEQ3ICAgICAoYmFzZSAxNikJCURPTkdHVUFOIFFJU0hFTkcgRUxFQ1RST05JQ1MgSU5EVVNUUklBTCBDTy4sIExURAotCQkJCVhJTkpJIElORFVTVFJJQUwgWk9ORSwgTUFDSE9ORyBUT1dOCi0JCQkJRE9OR0dVQU4gR1VBTkdET05HIDUyMzEyMwotCQkJCUNISU5BCi0KLTM0LUVGLTQ0ICAgKGhleCkJCTJXaXJlCi0zNEVGNDQgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGt3eQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zNC1FRi04QiAgIChoZXgpCQlOVFQgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTM0RUY4QiAgICAgKGJhc2UgMTYpCQlOVFQgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQlOVFQgSGliaXlhIEJsZGcuIDdGCi0JCQkJMS02LFVjaGlzYWl3YWktY2hvIDEtY2hvbWUKLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMC04MDE5Ci0JCQkJSkFQQU4KLQotMzQtRjMtOUIgICAoaGV4KQkJV2l6TEFOIEx0ZC4KLTM0RjM5QiAgICAgKGJhc2UgMTYpCQlXaXpMQU4gTHRkLgotCQkJCVAuTy5Cb3ggNzk0OAotCQkJCUhhaWZhICAzMTA3OAotCQkJCUlTUkFFTAotCi0zNC1GOS02OCAgIChoZXgpCQlBVEVLIFByb2R1Y3RzLCBMTEMKLTM0Rjk2OCAgICAgKGJhc2UgMTYpCQlBVEVLIFByb2R1Y3RzLCBMTEMKLQkJCQkyMTAgTkUgMTB0aCBBdmVudWUKLQkJCQlCcmFpbmVyZCBNTiA1NjQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotMzQtRkMtNkYgICAoaGV4KQkJQUxDRUEKLTM0RkM2RiAgICAgKGJhc2UgMTYpCQlBTENFQQotCQkJCTMsIHJ1ZSBKb2x5IGRlIEJhbW1ldmlsbGUKLQkJCQlaQUMgZGUgbGEgRm9udGFpbmUgZGUgSm91dmVuY2UKLQkJCQlNYXJjb3Vzc2lzICA5MTQ2MAotCQkJCUZSQU5DRQotCi0zOC0wMS05NyAgIChoZXgpCQlUb3NoaWJhIFNhbXN1bmcgU3RvcmFnZSBUZWNobm9sZ295IEtvcmVhIENvcnBvcmF0aW9uCi0zODAxOTcgICAgIChiYXNlIDE2KQkJVG9zaGliYSBTYW1zdW5nIFN0b3JhZ2UgVGVjaG5vbGdveSBLb3JlYSBDb3Jwb3JhdGlvbgotCQkJCTE0IEZsb29yLCBCbGRnLiBOby4gMTAyLCBEaWdpdGFsIEVtcGlyZTIsIDQ4NiwgU2luLWRvbmcsIFllb25ndG9uZy1ndSwgU3V3b24tc2ksIAotCQkJCVN1LXdvbiBHeWVvbmdnaSA0NDMtNzM0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTM4LTBBLTBBICAgKGhleCkJCVNreS1DaXR5IENvbW11bmljYXRpb24gYW5kIEVsZWN0cm9uaWNzIExpbWl0ZWQgQ29tcGFueQotMzgwQTBBICAgICAoYmFzZSAxNikJCVNreS1DaXR5IENvbW11bmljYXRpb24gYW5kIEVsZWN0cm9uaWNzIExpbWl0ZWQgQ29tcGFueQotCQkJCTExMDksIEJ1aWxkaW5nIEEsIEtlZmEgSW5kdXN0cmlhbCBwYXJrLCBIdWFuZ3VhbiBzb3V0aCByb2FkLCBHdWFubGFuLCAKLQkJCQlCYW9hbiwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODExMAotCQkJCUNISU5BCi0KLTM4LTBBLTk0ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZCAKLTM4MEE5NCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQgCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTM4LTBELUQ0ICAgKGhleCkJCVByaW1heCBFbGVjdHJvbmljcyBMVEQuCi0zODBERDQgICAgIChiYXNlIDE2KQkJUHJpbWF4IEVsZWN0cm9uaWNzIExURC4KLQkJCQk4RixOby4gNjY5LCBSdWV5IEt1YW5nIFJvYWQsIE5laWh1Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTM4LTE2LUQxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotMzgxNkQxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zOC0yMi05RCAgIChoZXgpCQlBREIgQnJvYWRiYW5kIEl0YWxpYQotMzgyMjlEICAgICAoYmFzZSAxNikJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi0JCQkJVklBTEUgU0FSQ0EgMjIyIAotCQkJCSAgTUlMQU5PICAgMjAxMjYKLQkJCQlJVEFMWQotCi0zOC0yMi1ENiAgIChoZXgpCQlIM0MgVGVjaG5vbG9naWVzIENvLiwgTGltaXRlZAotMzgyMkQ2ICAgICAoYmFzZSAxNikJCUgzQyBUZWNobm9sb2dpZXMgQ28uLCBMaW1pdGVkCi0JCQkJMzEwIExpdWhlIFJvYWQsIFpoaWppYW5nIFNjaWVuY2UgUGFyawotCQkJCUhhbmd6aG91IFpoZWppYW5nLCAgMzEwMDUzCi0JCQkJQ0hJTkEKLQotMzgtMjYtQ0QgICAoaGV4KQkJQU5EVEVLICAKLTM4MjZDRCAgICAgKGJhc2UgMTYpCQlBTkRURUsgIAotCQkJCUFtIFNvZWxkbmVybW9vcyAxNwotCQkJCUhhbGxiZXJnbW9vcyBCYXZhcmlhIDUzOTkKLQkJCQlHRVJNQU5ZCi0KLTM4LTI4LUVBICAgKGhleCkJCUZ1amlhbiBOZXRjb20gVGVjaG5vbG9neSBDby4sIExURAotMzgyOEVBICAgICAoYmFzZSAxNikJCUZ1amlhbiBOZXRjb20gVGVjaG5vbG9neSBDby4sIExURAotCQkJCU5ldGNvbSBUZWNobm9sb2d5IEJ1aWxkaW5nLCBCIFpvbmU6VG9uZ3BhbiBTb2Z0d2FyZSBQYXJrLCAKLQkJCQlGdXpob3UgRnVqaWFuIDM1MDAwMwotCQkJCUNISU5BCi0KLTM4LTMxLUFDICAgKGhleCkJCVdFRwotMzgzMUFDICAgICAoYmFzZSAxNikJCVdFRwotCQkJCUF2LiBQcmVmLiBXYWxkZW1hciBHcnViYmEsIDMwMDAKLQkJCQlKYXJhZ3XhIGRvIFN1bCBTYW50YSBDYXRhcmluYSA4OTI1Ni05MDAKLQkJCQlCUkFaSUwKLQotMzgtM0YtMTAgICAoaGV4KQkJREJMIFRlY2hub2xvZ3kgTHRkLgotMzgzRjEwICAgICAoYmFzZSAxNikJCURCTCBUZWNobm9sb2d5IEx0ZC4KLQkJCQlVbml0IDQyLCAxOC9GLiwgQmxvY2sgRCwgV2FoIExvayBJbmR1c3RyaWFsIENlbnRlcgotCQkJCTMxIC0gMzUgU2hhbiBNZWkgU3RyZWV0LCBGb3RhbiwgU2hhdGluCi0JCQkJSE9ORyBLT05HCi0KLTM4LTQ1LThDICAgKGhleCkJCU15Q2xvdWQgVGVjaG5vbG9neSBjb3Jwb3JhdGlvbgotMzg0NThDICAgICAoYmFzZSAxNikJCU15Q2xvdWQgVGVjaG5vbG9neSBjb3Jwb3JhdGlvbgotCQkJCVJvb20gNzA177+977+9QnVpbGRpbmcgRiwgSmlhaHVhIEJ1aWxkaW5n77+977+9Ci0JCQkJIzksIFNoYW5nZGkgM3JkIFN0cmVldO+/ve+/vUhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0zOC00Ni0wOCAgIChoZXgpCQlaVEUgQ29ycG9yYXRpb24KLTM4NDYwOCAgICAgKGJhc2UgMTYpCQlaVEUgQ29ycG9yYXRpb24KLQkJCQkxMi9GLFpURSBSJkQgQnVsaWRpbmcsS2VqaW5hbiBSb2FkLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0zOC01Mi0xQSAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudCA3NzA1Ci0zODUyMUEgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQgNzcwNQotCQkJCTYwMCBNYXJjaCBSZC4KLQkJCQlPdHRhd2EgT25hdHJpbyBLMEEgMVQwCi0JCQkJQ0FOQURBCi0KLTM4LTU4LTBDICAgKGhleCkJCVBhbmFjY2VzcyBTeXN0ZW1zIEdtYkgKLTM4NTgwQyAgICAgKGJhc2UgMTYpCQlQYW5hY2Nlc3MgU3lzdGVtcyBHbWJICi0JCQkJR3V0ZW5iZXJnc3RyYd9lIDgKLQkJCQlJc21hbmluZyBCWSA4NTczNwotCQkJCUdFUk1BTlkKLQotMzgtNTktRjkgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotMzg1OUY5ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi0zOC01Ri1DMyAgIChoZXgpCQlZdSBKZW9uZyBTeXN0ZW0sIENvLkx0ZAotMzg1RkMzICAgICAoYmFzZSAxNikJCVl1IEplb25nIFN5c3RlbSwgQ28uTHRkCi0JCQkJIzUwMywgRG9uZyBpbCBCL0QsIDgyNiwgR3Vyby0zZG9uZywgCi0JCQkJR3Vyby1HdSwgCi0JCQkJU2VvdWwgIDE1Mi04NzkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzgtNjAtNzcgICAoaGV4KQkJUEVHQVRST04gQ09SUE9SQVRJT04gCi0zODYwNzcgICAgIChiYXNlIDE2KQkJUEVHQVRST04gQ09SUE9SQVRJT04gCi0JCQkJTm8uIDc2LCBMaWdvbmcgU3QuLCBCZWl0b3UsIAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0zOC02My1GNiAgIChoZXgpCQkzTk9EIE1VTFRJTUVESUEoU0hFTlpIRU4pQ08uLExURAotMzg2M0Y2ICAgICAoYmFzZSAxNikJCTNOT0QgTVVMVElNRURJQShTSEVOWkhFTilDTy4sTFRECi0JCQkJRjYsQnVpbGRpbmcxMSxTaGVuemhlbiBTb2Z0d2FyZSBQYXJrCi0JCQkJTm8uMiBLZWppemhvbmcgUm9hZCxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTM4LTZCLUJCICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0zODZCQkIgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM4LTZFLTIxICAgKGhleCkJCVdhc2lvbiBHcm91cCBMdGQuCi0zODZFMjEgICAgIChiYXNlIDE2KQkJV2FzaW9uIEdyb3VwIEx0ZC4KLQkJCQlOby40NjggV2VzdCBUb25nemlwbyBSb2FkIEhpZ2gtVGVjaCBJbmR1c3RyaWFsIERldmVsb3BtZW50IFpvbmUKLQkJCQlDaGFuZ3NoYSBDaXR5IEh1bmFuIFByb3ZpbmNlLCA0MTAyMDUgCi0JCQkJQ0hJTkEKLQotMzgtNzItQzAgICAoaGV4KQkJQ09NVFJFTkQKLTM4NzJDMCAgICAgKGJhc2UgMTYpCQlDT01UUkVORAotCQkJCTNGLTEsMTAgTGFuZSA2MDksIENodW5nIEhzaW4gUm9hZCwgU2VjdGlvbiA1Ci0JCQkJU2FuIENodW5nIENpdHksIAotCQkJCVRhaXBlaSBIc2llbiAgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi0zOC04My00NSAgIChoZXgpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLTM4ODM0NSAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLQkJCQlCdWlsZGluZyAyNCAoZmxvb3JzIDEsMyw0LDUpIGFuZCAyOCAoZmxvb3JzMS00KSAgQ2VudHJhbCBTY2llbmNlIGFuZCBUZWNobm9sb2d5IFBhcmssU2hlbm5hbiBSZCwgTmFuc2hhbiwgCi0JCQkJU2hlbnpoZW4sIEd1YW5nZG9uZyBQcm92aW5jZSA1MTgwNTcKLQkJCQlDSElOQQotCi0zOC04QS1CNyAgIChoZXgpCQlQYW5hc29uaWMgVGVsZWNvbSBDby4sTHRkCi0zODhBQjcgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIFRlbGVjb20gQ28uLEx0ZAotCQkJCTNGIERhaXdhIFNoaWJhdXJhIEJsZGcKLQkJCQkxLTEyLTMgU2hpYmF1cmEgTWluYXRvLWt1Ci0JCQkJVG9reW8gIDEwNS0wMDIzCi0JCQkJSkFQQU4KLQotMzgtOTEtRkIgICAoaGV4KQkJWGVub3ggSG9sZGluZyBCVgotMzg5MUZCICAgICAoYmFzZSAxNikJCVhlbm94IEhvbGRpbmcgQlYKLQkJCQlMaW5nZWRpamsgODAKLQkJCQlUcmljaHQgR2VsZGVybGFuZCA0MTk2IEhDCi0JCQkJTkVUSEVSTEFORFMKLQotMzgtOTUtOTIgICAoaGV4KQkJQmVpamluZyBUZW5keXJvbiBDb3Jwb3JhdGlvbgotMzg5NTkyICAgICAoYmFzZSAxNikJCUJlaWppbmcgVGVuZHlyb24gQ29ycG9yYXRpb24KLQkJCQkxODEwLFRvd2VyIEIsSmluLW1hLEJ1aWxkaW5nLDE3IEVhc3QgUWluZyBIdWEgUm9hZCAKLQkJCQlIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDgzCi0JCQkJQ0hJTkEKLQotMzgtOUYtODMgICAoaGV4KQkJT1ROIFN5c3RlbXMgTi5WLgotMzg5RjgzICAgICAoYmFzZSAxNikJCU9UTiBTeXN0ZW1zIE4uVi4KLQkJCQlJbmR1c3RyaWVsYWFuIDE3YgotCQkJCUhlcmVudGFscyBPbGVuIDIyNTAKLQkJCQlCRUxHSVVNCi0KLTM4LUE4LTUxICAgKGhleCkJCVF1aWNrc2V0IEludGVybmF0aW9uYWwgSW5jCi0zOEE4NTEgICAgIChiYXNlIDE2KQkJUXVpY2tzZXQgSW50ZXJuYXRpb25hbCBJbmMKLQkJCQkzNjUwIFdvb2RoZWFkIERyaXZlCi0JCQkJTm9ydGhicm9vayBJTCAgNjAwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM4LUE5LTVGICAgKGhleCkJCUFjdGlmaW8gSW5jCi0zOEE5NUYgICAgIChiYXNlIDE2KQkJQWN0aWZpbyBJbmMKLQkJCQkyMjUgV3ltYW4gU3RyZWV0Ci0JCQkJU3VpdGUgMzAKLQkJCQlXYWx0aGFtIE1BIDAyNDUxCi0JCQkJSU5ESUEKLQotMzgtQjEtMkQgICAoaGV4KQkJU29ub3Ryb25pYyBOYWdlbCBHbWJICi0zOEIxMkQgICAgIChiYXNlIDE2KQkJU29ub3Ryb25pYyBOYWdlbCBHbWJICi0JCQkJQmVja2VyLUdvZXJpbmctU3RyLiAxNy0yNQotCQkJCUthcmxzYmFkICA3NjMwNwotCQkJCUdFUk1BTlkKLQotMzgtQkItMjMgICAoaGV4KQkJT3pWaXNpb24gQW1lcmljYSBMTEMKLTM4QkIyMyAgICAgKGJhc2UgMTYpCQlPelZpc2lvbiBBbWVyaWNhIExMQwotCQkJCTQwMCBXZXN0IEN1bW1pbmdzIFBhcmsKLQkJCQlXb2J1cm4gTUEgMDE4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTM4LUJGLTMzICAgKGhleCkJCU5FQyBDQVNJTyBNb2JpbGUgQ29tbXVuaWNhdGlvbnMKLTM4QkYzMyAgICAgKGJhc2UgMTYpCQlORUMgQ0FTSU8gTW9iaWxlIENvbW11bmljYXRpb25zCi0JCQkJMTc1MyxTaGltb251bWFiZQotCQkJCU5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2ktc2hpIEthbmFnYXdhIDIxMS04NjY2Ci0JCQkJSkFQQU4KLQotMzgtQzctQkEgICAoaGV4KQkJQ1MgU2VydmljZXMgQ28uLEx0ZC4KLTM4QzdCQSAgICAgKGJhc2UgMTYpCQlDUyBTZXJ2aWNlcyBDby4sTHRkLgotCQkJCUltb24gQkxERyA5NSBFZG9tYWNoaQotCQkJCUNodW9oLWt1Ci0JCQkJS29iZSBIeW9nbyA2NTAwMDMzCi0JCQkJSkFQQU4KLQotMzgtQzgtNUMgICAoaGV4KQkJQ2lzY28gU1BWVEcKLTM4Qzg1QyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlNUyA0LlQuNjA3Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDAxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotMzgtRDEtMzUgICAoaGV4KQkJRWFzeUlPIENvcnBvcmF0aW9uIFNkbi4gQmhkLgotMzhEMTM1ICAgICAoYmFzZSAxNikJCUVhc3lJTyBDb3Jwb3JhdGlvbiBTZG4uIEJoZC4KLQkJCQlOby4gMzItMiAmYW1wOyAzMi0zLCBKYWxhbiBQdXRlcmkgMi80Ci0JCQkJQmFuZGFyIFB1dGVyaQotCQkJCVB1Y2hvbmcgU2VsYW5nb3IgNDcxMDAKLQkJCQlNQUxBWVNJQQotCi0zOC1ERS02MCAgIChoZXgpCQlNb2hsZW5ob2ZmIEdtYkgKLTM4REU2MCAgICAgKGJhc2UgMTYpCQlNb2hsZW5ob2ZmIEdtYkgKLQkJCQlNdXNldW1zdHJh32UgNTRhIAotCQkJCVNhbHpnaXR0ZXIgTmllZGVyc2FjaHNlbiAzODIyOQotCQkJCUdFUk1BTlkKLQotMzgtRTAtOEUgICAoaGV4KQkJTWl0c3ViaXNoaSBFbGVjdHJpYyBDby4KLTM4RTA4RSAgICAgKGJhc2UgMTYpCQlNaXRzdWJpc2hpIEVsZWN0cmljIENvLgotCQkJCTItNy0zIE1hcnVub3VjaGkgQ2hpeW9kYS1rdQotCQkJCVRva3lvICAxMDAtODMxMAotCQkJCUpBUEFOCi0KLTM4LUU3LUQ4ICAgKGhleCkJCUhUQyBDb3Jwb3JhdGlvbgotMzhFN0Q4ICAgICAoYmFzZSAxNikJCUhUQyBDb3Jwb3JhdGlvbgotCQkJCU5vLjIzIFhpbmdodWEgUm9hZAotCQkJCVRhb3l1YW4gQ2l0eQotCQkJCVRhb3l1YW4gQ291bnR5ICAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTM4LUU4LURGICAgKGhleCkJCWIgZ21iaCBtZWRpZW4gKyBkYXRlbmJhbmtlbgotMzhFOERGICAgICAoYmFzZSAxNikJCWIgZ21iaCBtZWRpZW4gKyBkYXRlbmJhbmtlbgotCQkJCUt1cmZ1ZXJzdGVuc3RyYXNzZSAyMgotCQkJCUx1ZHdpZ3NidXJnIEJXIDcxNjM2Ci0JCQkJR0VSTUFOWQotCi0zOC1FOS04QyAgIChoZXgpCQlSZWNvIFMucC5BLgotMzhFOThDICAgICAoYmFzZSAxNikJCVJlY28gUy5wLkEuCi0JCQkJdmlhIGRlbGwmIzM5O0luZHVzdHJpYSwgOAotCQkJCU1vbnRhbm8gTHVjaW5vIENPIDIyMDcwCi0JCQkJSVRBTFkKLQotMzgtRUMtRTQgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotMzhFQ0U0ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotMzgtRUUtOUQgICAoaGV4KQkJQW5lZG8gTHRkLgotMzhFRTlEICAgICAoYmFzZSAxNikJCUFuZWRvIEx0ZC4KLQkJCQlIdWVsc21leWVyc3RyLiAzNQotCQkJCUV5ZGVsc3RlZHQgIDQ5NDA2Ci0JCQkJR0VSTUFOWQotCi0zOC1GOC1CNyAgIChoZXgpCQlWMkNPTSBQQVJUSUNJUEFDT0VTIFMuQS4KLTM4RjhCNyAgICAgKGJhc2UgMTYpCQlWMkNPTSBQQVJUSUNJUEFDT0VTIFMuQS4KLQkJCQlSdWEgQ3VuaGEgR2FnbywgNzAwCi0JCQkJQ29uanVudG8gMTMxCi0JCQkJU++/vW8gUGF1bG8gIDA1NDIxMDAxCi0JCQkJQlJBWklMCi0KLTM4LUZFLUM1ICAgKGhleCkJCUVsbGlwcyBCLlYuCi0zOEZFQzUgICAgIChiYXNlIDE2KQkJRWxsaXBzIEIuVi4KLQkJCQlVcmtob3ZlbnNld2VnIDExCi0JCQkJRWluZGhvdmVuIE5vb3JkLUJyYWJhbnQgNTY0MSBLQQotCQkJCU5FVEhFUkxBTkRTCi0KLTNDLTAyLUIxICAgKGhleCkJCUNyZWF0aW9uIFRlY2hub2xvZ2llcyBMUAotM0MwMkIxICAgICAoYmFzZSAxNikJCUNyZWF0aW9uIFRlY2hub2xvZ2llcyBMUAotCQkJCTM5MzkgTm9ydGggRnJhc2VyIFdheQotCQkJCUJ1cm5hYnkgQkMgVjVKIDVKMgotCQkJCUNBTkFEQQotCi0zQy0wNC1CRiAgIChoZXgpCQlQUkFWSVMgU1lTVEVNUyBDby5MdGQuLCAKLTNDMDRCRiAgICAgKGJhc2UgMTYpCQlQUkFWSVMgU1lTVEVNUyBDby5MdGQuLCAKLQkJCQk0RiwgNUYgSmFleW9vbiBCbGQsIDc1LTMgWWFuZ2phZS1Eb25nLCAKLQkJCQlTZW91bCBTZW9jaG8tR3UgMTM3LTg4OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zQy0wNS1BQiAgIChoZXgpCQlQcm9kdWN0IENyZWF0aW9uIFN0dWRpbwotM0MwNUFCICAgICAoYmFzZSAxNikJCVByb2R1Y3QgQ3JlYXRpb24gU3R1ZGlvCi0JCQkJNDI1IFdlc3RsYWtlIEF2ZSBOCi0JCQkJU2VhdHRsZSBXQSA5ODEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtMDctNTQgICAoaGV4KQkJQXBwbGUsIEluYy4KLTNDMDc1NCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtMDktNkQgICAoaGV4KQkJUG93ZXJob3VzZSBEeW5hbWljcwotM0MwOTZEICAgICAoYmFzZSAxNikJCVBvd2VyaG91c2UgRHluYW1pY3MKLQkJCQkxIEJyaWRnZSBTdHJlZXQKLQkJCQlOZXd0b24gTUEgMDI0NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTBGLUMxICAgKGhleCkJCUtCQyBOZXR3b3JrcwotM0MwRkMxICAgICAoYmFzZSAxNikJCUtCQyBOZXR3b3JrcwotCQkJCTI1NjkxIEF0bGFudGljIE9jZWFuIERyCi0JCQkJU3VpdGUgQjMKLQkJCQlMYWtlIEZvcmVzdCBDQSA5MjYzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtMTAtNkYgICAoaGV4KQkJQUxCQUhJVEggVEVDSE5PTE9HSUVTIAotM0MxMDZGICAgICAoYmFzZSAxNikJCUFMQkFISVRIIFRFQ0hOT0xPR0lFUyAKLQkJCQkxNjUsIEtpbmcgQWJkdWxsYWggU2Vjb25kIFN0cmVldAotCQkJCUFtbWFuICAxMTk1MwotCQkJCUpPUkRBTgotCi0zQy0xOS0xNSAgIChoZXgpCQlHRkkgQ2hyb25vIFRpbWUKLTNDMTkxNSAgICAgKGJhc2UgMTYpCQlHRkkgQ2hyb25vIFRpbWUKLQkJCQkxMjEgcnVlIGRlcyBHdWlsbGVlcwotCQkJCUNIQVVSQVkgIDc5MTg1Ci0JCQkJRlJBTkNFCi0KLTNDLTE5LTdEICAgKGhleCkJCUVyaWNzc29uIEFCCi0zQzE5N0QgICAgIChiYXNlIDE2KQkJRXJpY3Nzb24gQUIKLQkJCQlUb3JzaGFtbnNnYXRhbiAzNgotCQkJCVN0b2NraG9sbSBTdG9ja2hvbG0gU0UtMTY0IDgwCi0JCQkJU1dFREVOCi0KLTNDLTFBLTc5ICAgKGhleCkJCUh1YXl1YW4gVGVjaG5vbG9neSBDTy4sTFRECi0zQzFBNzkgICAgIChiYXNlIDE2KQkJSHVheXVhbiBUZWNobm9sb2d5IENPLixMVEQKLQkJCQlSMzA4IEJsb2NrIEppbmdtZW5nIEhpZ2gtVGVjaCBCdWlsZGluZyxOTy41LTEgU2hhbmdkaSBFYXN0IFJvYWQsCi0JCQkJSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi0zQy0xQy1CRSAgIChoZXgpCQlKQURBSyBMTEMKLTNDMUNCRSAgICAgKGJhc2UgMTYpCQlKQURBSyBMTEMKLQkJCQk3Mjc5IFdpbGxpYW0gQmFycnkgQmx2ZAotCQkJCU5vcnRoIFN5cmFjdXNlIE5ZIDEzMjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy0yNi1ENSAgIChoZXgpCQlTb3RlcmEgV2lyZWxlc3MKLTNDMjZENSAgICAgKGJhc2UgMTYpCQlTb3RlcmEgV2lyZWxlc3MKLQkJCQk5NDQ0IFdhcGxlcyBTdHJlZXQKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTI3LTYzICAgKGhleCkJCVNMRSBxdWFsaXR5IGVuZ2luZWVyaW5nIEdtYkggJmFtcDsgQ28uIEtHCi0zQzI3NjMgICAgIChiYXNlIDE2KQkJU0xFIHF1YWxpdHkgZW5naW5lZXJpbmcgR21iSCAmYW1wOyBDby4gS0cKLQkJCQlKb3NlZi1CdWNoaW5nZXItU3RyLiA5Ci0JCQkJR3JhZmVuYXUgQmF2YXJpYSA5NDQ4MQotCQkJCUdFUk1BTlkKLQotM0MtMkQtQjcgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTNDMkRCNyAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZCwgTVM4NzIzCi0JCQkJRGFsbGFzIFRleGFzIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy0yRi0zQSAgIChoZXgpCQlTRk9SWkFUTyBDb3JwLgotM0MyRjNBICAgICAoYmFzZSAxNikJCVNGT1JaQVRPIENvcnAuCi0JCQkJODYzCi0JCQkJQVJBSQotCQkJCUhJTk8tU0hJIFRPS1lPIDE5MS0wMDIyCi0JCQkJSkFQQU4KLQotM0MtMzYtM0QgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTNDMzYzRCAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1ICA5MDIzMAotCQkJCUZJTkxBTkQKLQotM0MtMzgtODggICAoaGV4KQkJQ29ubmVjdFF1ZXN0LCBsbGMKLTNDMzg4OCAgICAgKGJhc2UgMTYpCQlDb25uZWN0UXVlc3QsIGxsYwotCQkJCVAuTy4gQm94IDQyNQotCQkJCVdlc3QgU2ltc2J1cnkgQ29ubmVjdGljdXQgMDYwOTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTM5LUMzICAgKGhleCkJCUpXIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotM0MzOUMzICAgICAoYmFzZSAxNikJCUpXIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCTNBMTcsIE5vLiA1IEhzaW4teWkgUmQuLCBTZWMuIDUKLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotM0MtM0EtNzMgICAoaGV4KQkJQXZheWEsIEluYwotM0MzQTczICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkIAotCQkJCUJhc2tpbmcgUmlkZ2UgTkogMDc5MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTQzLThFICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0zQzQzOEUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2MDAgTm9ydGggVVMgSGlnaHdheSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtNEEtOTIgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTNDNEE5MiAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy00Qy02OSAgIChoZXgpCQlJbmZpbml0eSBTeXN0ZW0gUy5MLgotM0M0QzY5ICAgICAoYmFzZSAxNikJCUluZmluaXR5IFN5c3RlbSBTLkwuCi0JCQkJQ3J0cmEuIE4tSUksIEttIDQ4LDUgUG9sLiBJbmQuIENhYmFuaWxsYXMgZGVsIENhbXBvLCBQYXJjLiAxMkIKLQkJCQlHdWFkYWxhamFyYSAgMTkxNzEKLQkJCQlTUEFJTgotCi0zQy00RS00NyAgIChoZXgpCQlFdHJvbmljIEEvUwotM0M0RTQ3ICAgICAoYmFzZSAxNikJCUV0cm9uaWMgQS9TCi0JCQkJUu+/vWRlbGVkc3ZlaiA5NQotCQkJCVN2ZW5kYm9yZyBTb3V0aCBEZW5tYXJrIDU3MDAKLQkJCQlERU5NQVJLCi0KLTNDLTVBLTM3ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTNDNUEzNyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTNDLTVGLTAxICAgKGhleCkJCVN5bmVyY2hpcCBDby4sIEx0ZC4KLTNDNUYwMSAgICAgKGJhc2UgMTYpCQlTeW5lcmNoaXAgQ28uLCBMdGQuCi0JCQkJYy9vIFN5bmVyY2hpcCBVU0EgQ29ycC4KLQkJCQk4ODAgRS4gQXJxdWVzIEF2ZS4KLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTNDLTYyLTAwICAgKGhleCkJCVNhbXN1bmcgZWxlY3Ryb25pY3MgQ08uLCBMVEQKLTNDNjIwMCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIGVsZWN0cm9uaWNzIENPLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIFllb25ndG9uZy1ndSwKLQkJCQlTdXdvbi1DaXR5IEd5ZW9uZ2dpLWRvIDQ0My03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotM0MtNjItNzggICAoaGV4KQkJU0hFTlpIRU4gSkVUTkVUIFRFQ0hOT0xPR1kgQ08uLExURC4KLTNDNjI3OCAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBKRVRORVQgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCVJvb20gNDAzLDR0aCBmbG9vcixRaW5naHVhIEluZm9ybWF0aW9uIEJ1aWxkaW5nLEtleXVhbiBSb2FkLE5vcnRoIERpc3RyaWN0IG9mIFRlY2gtUGFyayxOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTNDLTY3LTJDICAgKGhleCkJCVNjaW92aWQgSW5jLgotM0M2NzJDICAgICAoYmFzZSAxNikJCVNjaW92aWQgSW5jLgotCQkJCTM4NyBTIFNpbHZlcmJyb29rIERyCi0JCQkJQW5haGVpbSBDQSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtNkEtN0QgICAoaGV4KQkJTmlpZ2F0YSBQb3dlciBTeXN0ZW1zIENvLiwgTHRkLgotM0M2QTdEICAgICAoYmFzZSAxNikJCU5paWdhdGEgUG93ZXIgU3lzdGVtcyBDby4sIEx0ZC4KLQkJCQk3LTI2LFRhdHN1bWkgMy1DaG9tZQotCQkJCUtvdG8ta3UgVE9LWU8gMTM1LTAwNTMKLQkJCQlKQVBBTgotCi0zQy02Ri00NSAgIChoZXgpCQlGaWJlcnBybyBJbmMuCi0zQzZGNDUgICAgIChiYXNlIDE2KQkJRmliZXJwcm8gSW5jLgotCQkJCTU5LTQgSmFuZy1kb25nLCBZdXNvbmctZ3UKLQkJCQlEZWFqb24gMzA1LTM0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi0zQy03MC01OSAgIChoZXgpCQlNYWtlckJvdCBJbmR1c3RyaWVzCi0zQzcwNTkgICAgIChiYXNlIDE2KQkJTWFrZXJCb3QgSW5kdXN0cmllcwotCQkJCTg3IDNyZCBBdmVudWUKLQkJCQlCcm9va2x5biBOWSAxMTIxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtNzQtMzcgICAoaGV4KQkJUklNCi0zQzc0MzcgICAgIChiYXNlIDE2KQkJUklNCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgM1c4Ci0JCQkJQ0FOQURBCi0KLTNDLTc1LTRBICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0zQzc1NEEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy03RC1CMSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotM0M3REIxICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy04MS1EOCAgIChoZXgpCQlTQUdFTUNPTSBTQVMKLTNDODFEOCAgICAgKGJhc2UgMTYpCQlTQUdFTUNPTSBTQVMKLQkJCQkyNTAgUk9VVEUgREUgTCYjMzk7RU1QRVJFVVIKLQkJCQlSVUVJTCBNQUxNQUlTT04gQ0VERVggSURGIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLTNDLThCLUZFICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTNDOEJGRSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTNDLTkxLTU3ICAgKGhleCkJCUhhbmd6aG91IFl1bG9uZyBDb25tdW5pY2F0aW9uIENvLixMdGQKLTNDOTE1NyAgICAgKGJhc2UgMTYpCQlIYW5nemhvdSBZdWxvbmcgQ29ubXVuaWNhdGlvbiBDby4sTHRkCi0JCQkJNUYgQnVpbGRpbmcgMixOby41NixMaXVoZSBSb2FkLFhpaHUgRGlzdHJpY3QKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMjMKLQkJCQlDSElOQQotCi0zQy05MS03NCAgIChoZXgpCQlBTE9ORyBDT01NVU5JQ0FUSU9OIFRFQ0hOT0xPR1kKLTNDOTE3NCAgICAgKGJhc2UgMTYpCQlBTE9ORyBDT01NVU5JQ0FUSU9OIFRFQ0hOT0xPR1kKLQkJCQk2QSxCMSBCdWlkaW5nLCBEaWdpdGFsIFRlY2ggWm9uZSwgCi0JCQkJSGlnaC1UZWNoIFBhcmsoU291dGgpLCBOYW5zaGFuIERpc3RyaWN0LCAKLQkJCQlTaGVuemhlbiBHdWFuZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0zQy05Ny0wRSAgIChoZXgpCQlXaXN0cm9uIEluZm9Db21tKEt1bnNoYW4pQ28uLEx0ZC4KLTNDOTcwRSAgICAgKGJhc2UgMTYpCQlXaXN0cm9uIEluZm9Db21tKEt1bnNoYW4pQ28uLEx0ZC4KLQkJCQkxNjgjIEZpcnN0IEF2ZW5jZSwgCi0JCQkJS3Vuc2hhbiBFeHBvcnQgUHJvY2Vzc2luZyBab25lCi0JCQkJS3Vuc2hhbiBKaWFuZ1N1IDIxNTMwMAotCQkJCUNISU5BCi0KLTNDLTk4LUJGICAgKGhleCkJCVF1ZXN0IENvbnRyb2xzLCBJbmMuCi0zQzk4QkYgICAgIChiYXNlIDE2KQkJUXVlc3QgQ29udHJvbHMsIEluYy4KLQkJCQkyMDggOXRoIFN0cmVldCBEci4gV2VzdAotCQkJCVBhbG1ldHRvIEZMIDM0MjIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy05OS1GNyAgIChoZXgpCQlMYW5zZW50ZWNobm9sb2d5IEFCCi0zQzk5RjcgICAgIChiYXNlIDE2KQkJTGFuc2VudGVjaG5vbG9neSBBQgotCQkJCVL2cmt1bGxzduRnZW4gNAotCQkJCUhhbG1zdGFkICAzMDI0MQotCQkJCVNXRURFTgotCi0zQy05Ri04MSAgIChoZXgpCQlTaGVuemhlbiBDQVRJQyBCaXQgQ29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSBDby4sTHRkCi0zQzlGODEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQ0FUSUMgQml0IENvbW11bmljYXRpb25zIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCWluICBOYW5zaGFuIERpc3RyaWN0LFNoZW56aGVuIFNvZnR3YXJlIHBhcmsgUm9hZCAxMCBpbiBSb29tIDIwMgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi0zQy1BMy0xNSAgIChoZXgpCQlCbGVzcyBJbmZvcm1hdGlvbiAmIENvbW11bmljYXRpb25zIENvLiwgTHRkCi0zQ0EzMTUgICAgIChiYXNlIDE2KQkJQmxlc3MgSW5mb3JtYXRpb24gJiBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZAotCQkJCSM2NC0xLCBXb25oeW9ybyAzLWdhLCBZb25nc2FuLWd1LAotCQkJCVNlb3VsICAxNDAtODQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTNDLUE3LTJCICAgKGhleCkJCU1SViBDb21tdW5pY2F0aW9ucyAoTmV0d29ya3MpIExURAotM0NBNzJCICAgICAoYmFzZSAxNikJCU1SViBDb21tdW5pY2F0aW9ucyAoTmV0d29ya3MpIExURAotCQkJCVAuTyBCb3ggNjE0Ci0JCQkJWW9rbmVhbSAgIDIwNjkyCi0JCQkJSVNSQUVMCi0KLTNDLUE5LUY0ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotM0NBOUY0ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotM0MtQjEtNUIgICAoaGV4KQkJQXZheWEsIEluYwotM0NCMTVCICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMC0yMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy1CMS03RiAgIChoZXgpCQlXYXR0d2F0Y2hlcnMgUHR5IExkCi0zQ0IxN0YgICAgIChiYXNlIDE2KQkJV2F0dHdhdGNoZXJzIFB0eSBMZAotCQkJCTIyIFdvb2RidXJ5IFJkIFN0LiBJdmVzCi0JCQkJU3lkbmV5IE5TVyAyMDc1Ci0JCQkJQVVTVFJBTElBCi0KLTNDLUI4LTdBICAgKGhleCkJCVBSSVZBVEUKLTNDQjg3QSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotM0MtQjktQTYgICAoaGV4KQkJQmVsZGVuIERldXRzY2hsYW5kIEdtYkgKLTNDQjlBNiAgICAgKGJhc2UgMTYpCQlCZWxkZW4gRGV1dHNjaGxhbmQgR21iSAotCQkJCVN0dXR0Z2FydGVyIFN0cmHfZSA0NS01MQotCQkJCU5lY2thcnRlbnpsaW5nZW4gIDcyNjU0Ci0JCQkJR0VSTUFOWQotCi0zQy1CRC1EOCAgIChoZXgpCQlMRyBFTEVDVFJPTklDUyBJTkMKLTNDQkREOCAgICAgKGJhc2UgMTYpCQlMRyBFTEVDVFJPTklDUyBJTkMKLQkJCQkxOS0xLCBDSEVPTkdITy1SSSwgSklOV0ktTVlFT04KLQkJCQlQWUVPTkdUQUVLIEdZRU9OR0dJLURPIDQ1MS03MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotM0MtQzAtQzYgICAoaGV4KQkJZCZhbXA7YiBhdWRpb3RlY2huaWsgR21iSAotM0NDMEM2ICAgICAoYmFzZSAxNikJCWQmYW1wO2IgYXVkaW90ZWNobmlrIEdtYkgKLQkJCQlFdWdlbiBBZG9sZmYgU3RyIDEzNAotCQkJCUJhY2tuYW5nIEJhZGVuIFd1ZXJ0dGVtYmVyZyA3MTUyMgotCQkJCUdFUk1BTlkKLQotM0MtQzEtRjYgICAoaGV4KQkJTWVsYW5nZSBTeXN0ZW1zIFB2dC4gTHRkLgotM0NDMUY2ICAgICAoYmFzZSAxNikJCU1lbGFuZ2UgU3lzdGVtcyBQdnQuIEx0ZC4KLQkJCQk0LzEsIDd0aCBDcm9zcywgS3VtYXJhcGFyayBXZXN0Ci0JCQkJQmFuZ2Fsb3JlIEthcm5hdGFrYSA1NjAwMjAKLQkJCQlJTkRJQQotCi0zQy1DOS05RSAgIChoZXgpCQlIdWl5YW5nIFRlY2hub2xvZ3kgQ28uLCBMdGQKLTNDQzk5RSAgICAgKGJhc2UgMTYpCQlIdWl5YW5nIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQkyMkQgNyBCbG9jayBaaG9uZ2h1aU5ld2NpdHkKLQkJCQlYaWFvYmlhbiBBdmVudWUgQ2hhbmdhbiBUb3duCi0JCQkJRG9uZ2d1YW4gR3Vhbmdkb25nIDUyMzg0OQotCQkJCUNISU5BCi0KLTNDLUNFLTczICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTNDQ0U3MyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy1EMC1GOCAgIChoZXgpCQlBcHBsZSwgSW5jLgotM0NEMEY4ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtRDEtNkUgICAoaGV4KQkJVGVsZXBvd2VyIENvbW11bmljYXRpb24gQ28uLCBMdGQKLTNDRDE2RSAgICAgKGJhc2UgMTYpCQlUZWxlcG93ZXIgQ29tbXVuaWNhdGlvbiBDby4sIEx0ZAotCQkJCTUvRixab25naGUgQnVpbGRpbmcsIEhhbnRpYW4gVGVjaG5vbG9neSBUb3duLEd1aXBpbmcgUkQsTmFuaGFpIERpc3RyaWN0LEYKLQkJCQlGb3NoYW4gQ2l0eSBHdWFuZ2RvbmcgNTI4MjUxCi0JCQkJQ0hJTkEKLQotM0MtRDktMkIgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTNDRDkyQiAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlNYWlsY29kZSA2LjMuMDQ5Ci0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtREYtMUUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotM0NERjFFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotM0MtRTUtQTYgICAoaGV4KQkJSGFuZ3pob3UgSDNDIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLTNDRTVBNiAgICAgKGJhc2UgMTYpCQlIYW5nemhvdSBIM0MgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCU9yaWVudGFsIEVsZWN0cm9uaWMgQmxkLiwgTk8uMixDaHVhbmd5ZSBSb2FkCi0JCQkJU2hhbmcgRGkgSW5mb3JtYXRpb24gSW5kdXN0cnkgQmFzZSwgSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTNDLUU1LUI0ICAgKGhleCkJCUtJREFTRU4gSU5EVVNUUklBIEUgQ09NRVJDSU8gREUgQU5URU5BUyBMVERBCi0zQ0U1QjQgICAgIChiYXNlIDE2KQkJS0lEQVNFTiBJTkRVU1RSSUEgRSBDT01FUkNJTyBERSBBTlRFTkFTIExUREEKLQkJCQlBViBTSU5DTEVSIFNBTUJBVFRJLCAxOTQ1Ci0JCQkJSkFSRElNIEJFUlRJT0dBCi0JCQkJTUFSSU5HQSBQQVJBTkEgODcwNTUtMDIwCi0JCQkJQlJBWklMCi0KLTNDLUU2LTI0ICAgKGhleCkJCUxHIERpc3BsYXkgCi0zQ0U2MjQgICAgIChiYXNlIDE2KQkJTEcgRGlzcGxheSAKLQkJCQk5dGgsIEZsLiwgTEcgVSsgYnVpbGRpbmcsIDY1LTIyOCwgSGFuZ2FuZ3JvLCAzLWdhLCBZb25nc2FuLWd1Ci0JCQkJU2VvdWwgIDE0MC03MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotM0MtRUEtNEYgICAoaGV4KQkJMldpcmUKLTNDRUE0RiAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQYXJrd2F5Ci0JCQkJU2FuIEpvc2UgIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi0zQy1FQS1GQiAgIChoZXgpCQlOU0UgQUcKLTNDRUFGQiAgICAgKGJhc2UgMTYpCQlOU0UgQUcKLQkJCQlCcmVtZ2FydGVyc3RyYXNzZSA1NAotCQkJCVdvaGxlbiBBRyA1NjEwCi0JCQkJU1dJVFpFUkxBTkQKLQotM0MtRjMtOTIgICAoaGV4KQkJVmlydHVhbHRlay4gQ28uIEx0ZAotM0NGMzkyICAgICAoYmFzZSAxNikJCVZpcnR1YWx0ZWsuIENvLiBMdGQKLQkJCQkxMkYsIFNoaW5oYW5EbSBCbGRnLiwgCi0JCQkJMjUsIE1hcG8tZGFlcm8sIE1hcG8tZ3UKLQkJCQlTZW91bCAxMjEtNzA4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTNDLUY1LTJDICAgKGhleCkJCURTUEVDSUFMSVNUUyBHbWJICi0zQ0Y1MkMgICAgIChiYXNlIDE2KQkJRFNQRUNJQUxJU1RTIEdtYkgKLQkJCQlLYWlzZXJpbi1BdWd1c3RhLUFsbGVlIDEwLTExCi0JCQkJQmVybGluICAxMDU1MwotCQkJCUdFUk1BTlkKLQotM0MtRjctMkEgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTNDRjcyQSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU3MAotCQkJCUZJTkxBTkQKLQotNDAtMDEtQzYgICAoaGV4KQkJM0NPTSBFVVJPUEUgTFRECi00MDAxQzYgICAgIChiYXNlIDE2KQkJM0NPTSBFVVJPUEUgTFRECi0JCQkJUGVvcGxlYnVpbGRpbmcgMgotCQkJCU1heWxhbmRzIEF2ZW51ZQotCQkJCUhlbWVsIEhlbXBzdGVhZCBIZXJ0cyBIUDIgNE5XCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDAtMDQtMEMgICAoaGV4KQkJQSZUCi00MDA0MEMgICAgIChiYXNlIDE2KQkJQSZUCi0JCQkJIzQxMSwgV2lsbCBUb3duLCA0MDItMwotCQkJCVNhbmctRG9uZywgV29ubWktR3UsIAotCQkJCUJ1Y2hlb24tU2kgR3llb25nZ2ktRG8gNDIwLTgxNAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00MC0wRS02NyAgIChoZXgpCQlUcmVtb2wgTHRkLgotNDAwRTY3ICAgICAoYmFzZSAxNikJCVRyZW1vbCBMdGQuCi0JCQkJNiBUb2xlZG8gc3RyLgotCQkJCVZlbGlrbyBUdXJub3ZvICA1MDAwCi0JCQkJQlVMR0FSSUEKLQotNDAtMTItRTQgICAoaGV4KQkJQ29tcGFzcy1FT1MKLTQwMTJFNCAgICAgKGJhc2UgMTYpCQlDb21wYXNzLUVPUwotCQkJCTcgR2lib3JlaSBJc3JhZWwKLQkJCQlOYXRhbnlhICA0MjUwNAotCQkJCUlTUkFFTAotCi00MC0xMy1EOSAgIChoZXgpCQlHbG9iYWwgRVMKLTQwMTNEOSAgICAgKGJhc2UgMTYpCQlHbG9iYWwgRVMKLQkJCQlTaW5pbeRlbnRpZSA4IGIKLQkJCQlFc3BvbyAgMDI2MzEKLQkJCQlGSU5MQU5ECi0KLTQwLTE1LTk3ICAgKGhleCkJCVByb3RlY3QgQW1lcmljYSwgSW5jLgotNDAxNTk3ICAgICAoYmFzZSAxNikJCVByb3RlY3QgQW1lcmljYSwgSW5jLgotCQkJCTUxMDAgTiBJSC0zNQotCQkJCVN1aXRlIEIKLQkJCQlSb3VuZCBSb2NrIFRYIDc4NjgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC0xNi05RiAgIChoZXgpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLTQwMTY5RiAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLQkJCQkxLTZGLCBCdWlsZGluZyAyLCBQaW5nc2hhbmRheXVhbiBJbmR1c3RyaWFsLCBTb3V0aCBab25lLAotCQkJCVRhb3l1YW4gU3RyZWV0LCBOYW5zaGFuIERpc3RyaWN0LCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotNDAtMTYtRkEgICAoaGV4KQkJRUtNIE1ldGVyaW5nCi00MDE2RkEgICAgIChiYXNlIDE2KQkJRUtNIE1ldGVyaW5nCi0JCQkJMzYzIEJlcmtlbGV5IFdheQotCQkJCVNhbnRhIENydXogQ0EgOTUwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLTE4LUIxICAgKGhleCkJCUFlcm9oaXZlIE5ldHdvcmtzIEluYy4KLTQwMThCMSAgICAgKGJhc2UgMTYpCQlBZXJvaGl2ZSBOZXR3b3JrcyBJbmMuCi0JCQkJMzMwIEdpYnJhbHRhciBEcml2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtMTgtRDcgICAoaGV4KQkJV3lsZSBUZWxlbWV0cnkgYW5kIERhdGEgU3lzdGVtcwotNDAxOEQ3ICAgICAoYmFzZSAxNikJCVd5bGUgVGVsZW1ldHJ5IGFuZCBEYXRhIFN5c3RlbXMKLQkJCQk0NDQxNyBQZWNhbiBDVAotCQkJCUNhbGlmb3JuaWEgTUQgMjA2MTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLTFELTU5ICAgKGhleCkJCUJpb21ldHJpYyBBc3NvY2lhdGVzLCBMUAotNDAxRDU5ICAgICAoYmFzZSAxNikJCUJpb21ldHJpYyBBc3NvY2lhdGVzLCBMUAotCQkJCTk0NzUgRGVlcmVjbyBSZC4KLQkJCQlTdWl0ZSAzMDQKLQkJCQlUaW1vbml1bSBNRCAyMTA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtMjItRUQgICAoaGV4KQkJRGlnaXRhbCBQcm9qZWN0aW9uIEx0ZAotNDAyMkVEICAgICAoYmFzZSAxNikJCURpZ2l0YWwgUHJvamVjdGlvbiBMdGQKLQkJCQlHcmVlbnNpZGUgV2F5Ci0JCQkJTWlkZGxldG9uCi0JCQkJTWFuY2hlc3RlciBMYW5jcyBNMjQgMVhYCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDAtMjUtQzIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi00MDI1QzIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi00MC0yQi1BMSAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotNDAyQkExICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTQwLTJDLUY0ICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotNDAyQ0Y0ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTGFuZSAzNTEsIFRhaXBpbmcgUmQuIFNlYy4gMSwgVHNhbyBUdWVuLCAKLQkJCQlOYW4tVG91IEhzaWVuLCAgNTQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi00MC0zMC0wNCAgIChoZXgpCQlBcHBsZSwgSW5jLgotNDAzMDA0ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC0zMy02QyAgIChoZXgpCQlHb2RyZWogJiBCb3ljZSBNZmcuIGNvLiBsdGQKLTQwMzM2QyAgICAgKGJhc2UgMTYpCQlHb2RyZWogJiBCb3ljZSBNZmcuIGNvLiBsdGQKLQkJCQlQU1MgVEVDSCBDRUxMLCAyTkQgRkxPT1IsIFBMQU5UIDE3LCBTRUNVUklUWSBTT0xVVElPTlMgRElWSVNJT04KLQkJCQlHT0RSRUogJiBCT1lDRSBNRkcuIENPLiBMVEQsIFZJS0hST0xJIChFQVNUKQotCQkJCU1VTUJBSSBNQUhBUkFTSFRSQSA0MDAwNzkKLQkJCQlJTkRJQQotCi00MC0zNy1BRCAgIChoZXgpCQlNYWNybyBJbWFnZSBUZWNobm9sb2d5LCBJbmMuCi00MDM3QUQgICAgIChiYXNlIDE2KQkJTWFjcm8gSW1hZ2UgVGVjaG5vbG9neSwgSW5jLgotCQkJCUVhc3QgQmxkZy4sIDZ0aCBGbG9vciwgSVQgVmVudHVyZSBUb3dlciwKLQkJCQk3OCBHYXJha2Jvbi1Eb25nLCBTb25ncGEtR3UsCi0JCQkJU2VvdWwgIDEzOC05NTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDAtM0MtRkMgICAoaGV4KQkJQXBwbGUsIEluYy4KLTQwM0NGQyAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgaW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtNDAtMjIgICAoaGV4KQkJWklWCi00MDQwMjIgICAgIChiYXNlIDE2KQkJWklWCi0JCQkJUGFycXVlIFRlY25vbPNnaWNvLCAyMTAKLQkJCQlaQU1VRElPIFZJWkNBWUEgNDgxNzAKLQkJCQlTUEFJTgotCi00MC00MC02QiAgIChoZXgpCQlJY29tZXJhCi00MDQwNkIgICAgIChiYXNlIDE2KQkJSWNvbWVyYQotCQkJCVZpa2luZ3NnYXRhbiAzCi0JCQkJR/Z0ZWJvcmcgIDQxMTA0Ci0JCQkJU1dFREVOCi0KLTQwLTRBLTAzICAgKGhleCkJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi00MDRBMDMgICAgIChiYXNlIDE2KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLQkJCQlOby42IElubm92YXRpb24gUm9hZCBJSQotCQkJCVNjaWVuY2UgUGFyawotCQkJCUhzaW4tQ2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQwLTRELThFICAgKGhleCkJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLTQwNEQ4RSAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotNDAtNTAtRTAgICAoaGV4KQkJTWlsdG9uIFNlY3VyaXR5IEdyb3VwIExMQwotNDA1MEUwICAgICAoYmFzZSAxNikJCU1pbHRvbiBTZWN1cml0eSBHcm91cCBMTEMKLQkJCQkxMTEgTm9ydGggSGFyYm9yIEJsdmQKLQkJCQlTdWl0ZSBECi0JCQkJRnVsbGVydG9uIENBIDkyODMyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC01Mi0wRCAgIChoZXgpCQlQaWNvIFRlY2hub2xvZ3kKLTQwNTIwRCAgICAgKGJhc2UgMTYpCQlQaWNvIFRlY2hub2xvZ3kKLQkJCQlKYW1lcyBIb3VzZSwgTWFybGJvcm91Z2ggUm9hZAotCQkJCUNvbG13b3J0aCBCdXNpbmVzcyBQYXJrCi0JCQkJU3QgTmVvdHMgQ2FtYnJpZGdlc2hpcmUgIFBFMTkgOFlQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDAtNTUtMzkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNDA1NTM5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtNUEtOUIgICAoaGV4KQkJQU5PVk8KLTQwNUE5QiAgICAgKGJhc2UgMTYpCQlBTk9WTwotCQkJCVpJIGRlIEJyYWNoZXV4IAotCQkJCTE2LCBSdWUgSm9zZXBoIEN1Z25vdAotCQkJCUJFQVVWQUlTICA2MDAwMAotCQkJCUZSQU5DRQotCi00MC01Ri1CRSAgIChoZXgpCQlSSU0KLTQwNUZCRSAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCAzVzgKLQkJCQlDQU5BREEKLQotNDAtNUYtQzIgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTQwNUZDMiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtNjAtNUEgICAoaGV4KQkJSGF3a2V5ZSBUZWNoIENvLiBMdGQKLTQwNjA1QSAgICAgKGJhc2UgMTYpCQlIYXdrZXllIFRlY2ggQ28uIEx0ZAotCQkJCTJGLCBOby4gNzU4IENodW5nIENoZW5nIFJvYWQsIENodW5nIEhlCi0JCQkJTmV3IFRhaXBlaSAgMjM1NTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQwLTYxLTg2ICAgKGhleCkJCU1JQ1JPLVNUQVIgSU5UJ0wgQ08uLExURAotNDA2MTg2ICAgICAoYmFzZSAxNikJCU1JQ1JPLVNUQVIgSU5UJ0wgQ08uLExURAotCQkJCU5vLjY5LExpLURlIFN0Ci0JCQkJSnVuZy1IbyBDaXR5IFRhaXBlaSBIc2llbiAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQwLTYxLThFICAgKGhleCkJCVN0ZWxsYS1HcmVlbiBDbwotNDA2MThFICAgICAoYmFzZSAxNikJCVN0ZWxsYS1HcmVlbiBDbwotCQkJCTEtNS0xNiBFZG9ib3JpLCBOaXNoaS1rdQotCQkJCU9zYWthICA1NTAtMDAwMgotCQkJCUpBUEFOCi0KLTQwLTY2LTdBICAgKGhleCkJCW1lZGlvbGEgLSBjb25uZWN0ZWQgbGl2aW5nIEFHCi00MDY2N0EgICAgIChiYXNlIDE2KQkJbWVkaW9sYSAtIGNvbm5lY3RlZCBsaXZpbmcgQUcKLQkJCQlOb2JlbHJpbmcgMjYKLQkJCQlGcmFua2Z1cnQgYW0gTWFpbiBIZXNzZW4gNjA1OTgKLQkJCQlHRVJNQU5ZCi0KLTQwLTZBLUFCICAgKGhleCkJCVJJTQotNDA2QUFCICAgICAoYmFzZSAxNikJCVJJTQotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDVSOQotCQkJCUNBTkFEQQotCi00MC02Qy04RiAgIChoZXgpCQlBcHBsZSwgSW5jLgotNDA2QzhGICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC03MC00QSAgIChoZXgpCQlQb3dlciBJZGVhIFRlY2hub2xvZ3kgTGltaXRlZAotNDA3MDRBICAgICAoYmFzZSAxNikJCVBvd2VyIElkZWEgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJMTQwMUEsIE1pbnRhaSBCdWlsZGluZywgV2VuWGluIDUgUm9hZCwgU2hlblpoZW4sIFBSQwotCQkJCUd1YW5nIERvbmcgU2hlbiBaaGVuIDUxODA1NAotCQkJCUNISU5BCi0KLTQwLTcwLTc0ICAgKGhleCkJCUxpZmUgVGVjaG5vbG9neSAoQ2hpbmEpIENvLiwgTHRkCi00MDcwNzQgICAgIChiYXNlIDE2KQkJTGlmZSBUZWNobm9sb2d5IChDaGluYSkgQ28uLCBMdGQKLQkJCQlOby4xLCAyRiwgTmFuc2hhbiBEaWdpdGFsIEN1bHR1cmUgSW5kdXN0cmlhbCBiYXNlIChFYXN0IFRvd2VyICBQb2RpdW0pIDEwMTI4IFNoZW5uYW4gQmx2ZCwgTmFuc2hhbiBEaXN0LgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi00MC03Qi0xQiAgIChoZXgpCQlNZXR0bGUgTmV0d29ya3MgSW5jLgotNDA3QjFCICAgICAoYmFzZSAxNikJCU1ldHRsZSBOZXR3b3JrcyBJbmMuCi0JCQkJMTExIE4uIE1hcmtldCBTdCBTVEUgMzAwCi0JCQkJU2FuIEpvc2UgIENBIDk1MTEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC04My1ERSAgIChoZXgpCQlNb3Rvcm9sYQotNDA4M0RFICAgICAoYmFzZSAxNikJCU1vdG9yb2xhCi0JCQkJT25lIE1vdG9yb2xhIFBsYXphCi0JCQkJSG9sdHN2aWxsZSBOWSAxMTc0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtODQtOTMgICAoaGV4KQkJQ2xhdmlzdGVyIEFCCi00MDg0OTMgICAgIChiYXNlIDE2KQkJQ2xhdmlzdGVyIEFCCi0JCQkJU2pvZ2F0YW4gNkoKLQkJCQlPcm5za29sZHN2aWsgIDg5MTYwCi0JCQkJU1dFREVOCi0KLTQwLTg4LUUwICAgKGhleCkJCUJlaWppbmcgRXJlbmViZW4gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBMaW1pdGVkIFNoZW56aGVuIEJyYW5jaAotNDA4OEUwICAgICAoYmFzZSAxNikJCUJlaWppbmcgRXJlbmViZW4gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBMaW1pdGVkIFNoZW56aGVuIEJyYW5jaAotCQkJCVJvb20gMTRBLCBCdWlsZGluZyBBLCBIb25nbG9uZyBDZW50cmFsIFBsYXphLCBOby4zMDAxLEhlcGluZyBSb2FkLCBMdW9odSBEaXN0cmljdCwgU2hlbnpoZW4gQ2l0eQotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDEKLQkJCQlDSElOQQotCi00MC04QS05QSAgIChoZXgpCQlUSVRFTkcgQ08uLCBMdGQuCi00MDhBOUEgICAgIChiYXNlIDE2KQkJVElURU5HIENPLiwgTHRkLgotCQkJCTdGbC4gU2hpbmRvIEIvRCAxMCBHYXJhay1kb25nCi0JCQkJU29uZ3BhLWd1Ci0JCQkJU2VvdWwgIDEzOC0xNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDAtOEItMDcgICAoaGV4KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi00MDhCMDcgICAgIChiYXNlIDE2KQkJQWN0aW9udGVjIEVsZWN0cm9uaWNzLCBJbmMgCi0JCQkJNzYwIE5vcnRoIE1hcnkgQXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC04Qi1GNiAgIChoZXgpCQlTaGVuemhlbiBUQ0wgTmV3IFRlY2hub2xvZ3kgQ287IEx0ZC4KLTQwOEJGNiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBUQ0wgTmV3IFRlY2hub2xvZ3kgQ287IEx0ZC4KLQkJCQlUQ0wgQnVpbGRpbmcsICM1IENlbnRyYWwgTmFuaGFpIFJvYWQsIE5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4sIEd1YW5nZG9uZywgIDUxODA2NwotCQkJCUNISU5BCi0KLTQwLTk1LTU4ICAgKGhleCkJCUFpc2lubyBDb3Jwb3JhdGlvbgotNDA5NTU4ICAgICAoYmFzZSAxNikJCUFpc2lubyBDb3Jwb3JhdGlvbgotCQkJCU5vLjE4QSwgWGluZ3NoaWtvdSBSb2FkLAotCQkJCUhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAxOTUKLQkJCQlDSElOQQotCi00MC05Ny1EMSAgIChoZXgpCQlCSyBFbGVjdHJvbmljcyBjYwotNDA5N0QxICAgICAoYmFzZSAxNikJCUJLIEVsZWN0cm9uaWNzIGNjCi0JCQkJMTUwIFN3YWFyZGxlbGllIEF2ZQotCQkJCVRoZSBXaWxsb3dzCi0JCQkJUHJldG9yaWEgR2F1dGVuZyAwMTg0Ci0JCQkJU09VVEggQUZSSUNBCi0KLTQwLTk4LTRDICAgKGhleCkJCUNhc2Fjb20gU29sdXRpb25zIEFHCi00MDk4NEMgICAgIChiYXNlIDE2KQkJQ2FzYWNvbSBTb2x1dGlvbnMgQUcKLQkJCQlCYWRlbmVyc3RhcnNzZSA1NTEKLQkJCQladWVyaWNoICA4MDQ2Ci0JCQkJU1dJVFpFUkxBTkQKLQotNDAtOTgtNEUgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTQwOTg0RSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtOTgtN0IgICAoaGV4KQkJQWlzaW5vIENvcnBvcmF0aW9uCi00MDk4N0IgICAgIChiYXNlIDE2KQkJQWlzaW5vIENvcnBvcmF0aW9uCi0JCQkJTm8uMTggQSxYaW5nc2hpa291IFJvYWQsSGFpZGlhbiBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAxOTUKLQkJCQlDSElOQQotCi00MC05Ri1DNyAgIChoZXgpCQlCQUVLQ0hVTiBFTkMgQ28uLCBMdGQuCi00MDlGQzcgICAgIChiYXNlIDE2KQkJQkFFS0NIVU4gRU5DIENvLiwgTHRkLgotCQkJCTJGLCAzMi02LCBCZW9tYmFrLWRvbmcKLQkJCQlTb3NhLWd1Ci0JCQkJQnVjaGVvbi1zaSBHeWVvbmdnaS1kbyA0MjItODA0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQwLUE2LUE0ICAgKGhleCkJCVBhc3NpdlN5c3RlbXMgTHRkCi00MEE2QTQgICAgIChiYXNlIDE2KQkJUGFzc2l2U3lzdGVtcyBMdGQKLQkJCQlNZWR3YXkgSG91c2UKLQkJCQlOZXdidXJ5IEJ1c2luZXNzIFBhcmsKLQkJCQlOZXdidXJ5IEJlcmtzIFJHMTQgMlBaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNDAtQTYtRDkgICAoaGV4KQkJQXBwbGUsIEluYy4KLTQwQTZEOSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtQUMtOEQgICAoaGV4KQkJRGF0YSBNYW5hZ2VtZW50LCBJbmMuCi00MEFDOEQgICAgIChiYXNlIDE2KQkJRGF0YSBNYW5hZ2VtZW50LCBJbmMuCi0JCQkJMzMyMiBMb29wIDMwNgotCQkJCVNhbiBBbmdlbG8gVGV4YXMgNzY5MDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLUIyLUM4ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotNDBCMkM4ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCUNBUlJFVEVSQSBCQVNFIEFFUkVBICMgNTg1MAotCQkJCVphcG9wYW4gSmFsaXNjbyA0NDEzMAotCQkJCU1FWElDTwotCi00MC1CMy1GQyAgIChoZXgpCQlMb2dpdGFsIENvLiBMaW1pdGVkIAotNDBCM0ZDICAgICAoYmFzZSAxNikJCUxvZ2l0YWwgQ28uIExpbWl0ZWQgCi0JCQkJUm0gOTAxLTkwMiwgOS9GLCBOYXRoYW4gQ2VudHJlLCAKLQkJCQk1ODBHLUsgTmF0aGFuIFJvYWQsIE1vbmdrb2ssIAotCQkJCUtvd2xvb24gIAotCQkJCUhPTkcgS09ORwotCi00MC1CNy1GMyAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotNDBCN0YzICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtQkEtNjEgICAoaGV4KQkJQXJpbWEgQ29tbXVuaWNhdGlvbnMgQ29ycC4KLTQwQkE2MSAgICAgKGJhc2UgMTYpCQlBcmltYSBDb21tdW5pY2F0aW9ucyBDb3JwLgotCQkJCTZGLiwgTm8uODY2LCBKaG9uZ2poZW5nIFJkLiwgSmhvbmdoZSBEaXN0LgotCQkJCU5ldyBUYWlwZWkgQ2l0eSAgMjM1ODYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQwLUJDLThCICAgKGhleCkJCWl0ZWxpbyBHbWJICi00MEJDOEIgICAgIChiYXNlIDE2KQkJaXRlbGlvIEdtYkgKLQkJCQlGcmFuei1MYXJjaGVyLVN0cmHfZSA0Ci0JCQkJS2llZmVyc2ZlbGRlbiBCYXZhcmlhIDgzMDg4Ci0JCQkJR0VSTUFOWQotCi00MC1CRi0xNyAgIChoZXgpCQlEaWdpc3RhciBUZWxlY29tLiBTQQotNDBCRjE3ICAgICAoYmFzZSAxNikJCURpZ2lzdGFyIFRlbGVjb20uIFNBCi0JCQkJQXYuIFRoZW9kb21pcm8gUG9ydG8gZGEgRm9uc2VjYSwgMzEwMQotCQkJCUJ1aWxkaW5nIDIKLQkJCQlTYW8gTGVvcG9sZG8gUlMgOTMwMjA4MAotCQkJCUJSQVpJTAotCi00MC1DMi00NSAgIChoZXgpCQlTaGVuemhlbiBIZXhpY29tIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi00MEMyNDUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gSGV4aWNvbSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTE1MTAgV2VzdCBCdWlsZGluZyxOYW5zaGFuIFNvZnR3YXJlIFBhcmssIE5hbnNoYW4gRGlzdC4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDUzCi0JCQkJQ0hJTkEKLQotNDAtQzctQzkgICAoaGV4KQkJTmF2aWl0IEluYy4KLTQwQzdDOSAgICAgKGJhc2UgMTYpCQlOYXZpaXQgSW5jLgotCQkJCTMwNThBIFNjb3R0IEJsdmQuCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLUNELTNBICAgKGhleCkJCVozIFRlY2hub2xvZ3kKLTQwQ0QzQSAgICAgKGJhc2UgMTYpCQlaMyBUZWNobm9sb2d5Ci0JCQkJMjcyMCBIYXJyaXNvbiBTdAotCQkJCUV2YW5zdG9uIElMIDYwMjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00MC1EMy0yRCAgIChoZXgpCQlBcHBsZSwgSW5jCi00MEQzMkQgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDAtRDQtMEUgICAoaGV4KQkJQmlvZGF0YSBMdGQKLTQwRDQwRSAgICAgKGJhc2UgMTYpCQlCaW9kYXRhIEx0ZAotCQkJCTEwIFN0b2NrcyBTdHJlZXQKLQkJCQlNYW5jaGVzdGVyICBNOCA4UUcKLQkJCQlVTklURUQgS0lOR0RPTQotCi00MC1ENS01OSAgIChoZXgpCQlNSUNSTyBTLkUuUi5JLgotNDBENTU5ICAgICAoYmFzZSAxNikJCU1JQ1JPIFMuRS5SLkkuCi0JCQkJMjQsIHJ1ZSBIZW5yaSBGQVJNQU4KLQkJCQlaQSBUcmVtYmxheSBDaGFybGVzIGRlIEdhdWxsZQotCQkJCVRSRU1CTEFZIEVOIEZSQU5DRSBJbGUgZGUgRnJhbmNlIDkzMjkwCi0JCQkJRlJBTkNFCi0KLTQwLUU3LTkzICAgKGhleCkJCVNoZW56aGVuIFNpdml0b24gVGVjaG5vbG9neSBDby4sTHRkCi00MEU3OTMgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gU2l2aXRvbiBUZWNobm9sb2d5IENvLixMdGQKLQkJCQk0RixCbG9jazYsQ29vbHBhZCBCdXNpbmVzcyBDZW50cmUsTm9ydGggb2YgS2V5dWFuIFJvYWQsSGktdGVjaG5vbG9neSBab25lLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotNDAtRUMtRjggICAoaGV4KQkJU2llbWVucyBBRwotNDBFQ0Y4ICAgICAoYmFzZSAxNikJCVNpZW1lbnMgQUcKLQkJCQlJIElTIE1TIEVETQotCQkJCU11bmljaCBHZXJtYW55IDg1NjMwCi0JCQkJR0VSTUFOWQotCi00MC1FRi00QyAgIChoZXgpCQlGaWhvbmVzdCBjb21tdW5pY2F0aW9uIGNvLixMdGQKLTQwRUY0QyAgICAgKGJhc2UgMTYpCQlGaWhvbmVzdCBjb21tdW5pY2F0aW9uIGNvLixMdGQKLQkJCQlSb29tOTAyLFBhcmsgcm9hZCxaaGl4aW5nIGJ1c2luZXNzLWJ1aWxkaW5nCi0JCQkJQ2hhbmdwaW5nIHRvd24KLQkJCQlEb25nZ3VhbiBHdWFuZ2RvbmcgNTIzNTYwCi0JCQkJQ0hJTkEKLQotNDAtRjEtNEMgICAoaGV4KQkJSVNFIEV1cm9wZSBTUFJMCi00MEYxNEMgICAgIChiYXNlIDE2KQkJSVNFIEV1cm9wZSBTUFJMCi0JCQkJNDIgYSBydWUgRmFpZGVyCi0JCQkJQnJ1c3NlbHMgIDEwNTAKLQkJCQlCRUxHSVVNCi0KLTQwLUY0LTA3ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotNDBGNDA3ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLTQwLUY0LUVDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTQwRjRFQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQwLUY1LTJFICAgKGhleCkJCUxlaWNhIE1pY3Jvc3lzdGVtcyAoU2Nod2VpeikgQUcKLTQwRjUyRSAgICAgKGJhc2UgMTYpCQlMZWljYSBNaWNyb3N5c3RlbXMgKFNjaHdlaXopIEFHCi0JCQkJTWF4IFNjaG1pZGhlaW55LVN0cmFzc2UgMjAxCi0JCQkJSGVlcmJydWdnIFNHIDk0MzUKLQkJCQlTV0lUWkVSTEFORAotCi00MC1GQy04OSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotNDBGQzg5ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE5vcnRoIFVTIEhpZ2h3YXkgNDUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTBDLUZEICAgKGhleCkJCU5ldE1hbiBDby4sIEx0ZC4KLTQ0MENGRCAgICAgKGJhc2UgMTYpCQlOZXRNYW4gQ28uLCBMdGQuCi0JCQkJUm0gNDA2LCBESVAsIDIxMzksIERhZW15ZW9uZy1kb25nLAotCQkJCU5hbS1ndSwKLQkJCQlEYWVndSAgNzA1LTcwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00NC0xMy0xOSAgIChoZXgpCQlXS0sgVEVDSE5PTE9HWSBMVEQuCi00NDEzMTkgICAgIChiYXNlIDE2KQkJV0tLIFRFQ0hOT0xPR1kgTFRELgotCQkJCTIzL0YuLCBPbmUgS293bG9vbiwgTm8uMSwgV2FuZyBZdWVuIFN0cmVldCwgCi0JCQkJS293bG9vbiBCYXksIAotCQkJCTg1MgotCQkJCUhPTkcgS09ORwotCi00NC0xRS1BMSAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotNDQxRUExICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTIzLUFBICAgKGhleCkJCUZhcm1hZ2UgQ28uLCBMdGQuCi00NDIzQUEgICAgIChiYXNlIDE2KQkJRmFybWFnZSBDby4sIEx0ZC4KLQkJCQkxNjYtOCBLYW5hemF3YSBUb3ViZXRzdQotCQkJCUlzaGlrYXJpLWd1biBIb2trYWlkbwotCQkJCUhva2thaWRvIDA2MS0wMjEyCi0JCQkJSkFQQU4KLQotNDQtMjUtQkIgICAoaGV4KQkJQmFtYm9vIEVudGVydGFpbm1lbnQgQ29ycG9yYXRpb24KLTQ0MjVCQiAgICAgKGJhc2UgMTYpCQlCYW1ib28gRW50ZXJ0YWlubWVudCBDb3Jwb3JhdGlvbgotCQkJCTE3OSBTb3V0aCBTdHJlZXQKLQkJCQk2dGggRmxvb3IKLQkJCQlCb3N0b24gTUEgMDIxMTEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTJBLTYwICAgKGhleCkJCUFwcGxlLCBJbmMuCi00NDJBNjAgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTJCLTAzICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTQ0MkIwMyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC0zMi0yQSAgIChoZXgpCQlBdmF5YSBJbmMKLTQ0MzIyQSAgICAgKGJhc2UgMTYpCQlBdmF5YSBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkIAotCQkJCUJhc2tpbmcgUmlkZ2UgTkogMDc5MjAtMjMxMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtMzQtOEYgICAoaGV4KQkJTVhUIElORFVTVFJJQUwgTFREQQotNDQzNDhGICAgICAoYmFzZSAxNikJCU1YVCBJTkRVU1RSSUFMIExUREEKLQkJCQlST0RPVklBIEJSIDM4MSwgS00gNDkwLCBKQVJESU0gREFTIEFMVEVST1NBUwotCQkJCUJFVElNIE1JTkFTIEdFUkFJUyAzMjY3MDc5MAotCQkJCUJSQVpJTAotCi00NC0zNy0xOSAgIChoZXgpCQkyIFNhdmUgRW5lcmd5IEx0ZAotNDQzNzE5ICAgICAoYmFzZSAxNikJCTIgU2F2ZSBFbmVyZ3kgTHRkCi0JCQkJVGhlIEFubmV4ZSwgRmllbGQgSG91c2UgQmFybgotCQkJCUNoaW5laGFtIExhbmUKLQkJCQlTaGVyYm9ybmUgU3QgSm9obiBIYW1wc2hpcmUgUkcyNCA5TFIKLQkJCQlVTklURUQgS0lOR0RPTQotCi00NC0zNy02RiAgIChoZXgpCQlZb3VuZyBFbGVjdHJpYyBTaWduIENvCi00NDM3NkYgICAgIChiYXNlIDE2KQkJWW91bmcgRWxlY3RyaWMgU2lnbiBDbwotCQkJCTE2NTEgTiAxMDAwIFcKLQkJCQlMb2dhbiBVVCA4NDMyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtMzctRTYgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLkx0ZAotNDQzN0U2ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby5MdGQKLQkJCQk2NixDaHVuZyBTaGFuIFJkLlR1LUNoZW5nCi0JCQkJVGFpcGVpIEhzaWVuICAyMzYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ0LTM4LTM5ICAgKGhleCkJCUN1bXVsdXMgTmV0d29ya3MsIGluYwotNDQzODM5ICAgICAoYmFzZSAxNikJCUN1bXVsdXMgTmV0d29ya3MsIGluYwotCQkJCTY1MCBDYXN0cm8gU3RyZWV0LCBzdWl0ZSAxMjAtMjQ1Ci0JCQkJTW91bnRhaW4gVmlldyBDQSA5NDA0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtM0QtMjEgICAoaGV4KQkJTnV2b2x0Ci00NDNEMjEgICAgIChiYXNlIDE2KQkJTnV2b2x0Ci0JCQkJODA4NyBCb3VsLiBkZSBsYSBSaXZlIFN1ZAotCQkJCUxldmlzIFF1ZWJlYyBHNlYgOUc5Ci0JCQkJQ0FOQURBCi0KLTQ0LTNFLUIyICAgKGhleCkJCURFT1RST04gQ28uLCBMVEQuCi00NDNFQjIgICAgIChiYXNlIDE2KQkJREVPVFJPTiBDby4sIExURC4KLQkJCQk1MDYsIERhaW4gQmxkZwotCQkJCTc0Mi0zIENob2ppLWRvbmcKLQkJCQlBbnNhbiBLeW9uZ2dpLWRvIDQyNS04NTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDQtNEUtMUEgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi00NDRFMUEgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LTRGLTVFICAgKGhleCkJCVBhbiBTdHVkaW9zIENvLixMdGQuCi00NDRGNUUgICAgIChiYXNlIDE2KQkJUGFuIFN0dWRpb3MgQ28uLEx0ZC4KLQkJCQkxRi4sIE5PLjQwMiwgU0VDLiAyLCBKSE9OR1lBTkcgTi4gUkQuLCBCRUlUT1UgRElTVFJJQ1QsCi0JCQkJVEFJUEVJIENJVFkgICAxMTI1OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDQtNTEtREIgICAoaGV4KQkJUmF5dGhlb24gQkJOIFRlY2hub2xvZ2llcwotNDQ1MURCICAgICAoYmFzZSAxNikJCVJheXRoZW9uIEJCTiBUZWNobm9sb2dpZXMKLQkJCQkxMCBNb3VsdG9uIFN0cmVldAotCQkJCUNhbWJyaWRnZSBNQSAwMjEzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtNTQtQzAgICAoaGV4KQkJVGhvbXBzb24gQWVyb3NwYWNlCi00NDU0QzAgICAgIChiYXNlIDE2KQkJVGhvbXBzb24gQWVyb3NwYWNlCi0JCQkJMTggVGVjaG5vbG9neQotCQkJCVN1aXRlIDEyMQotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtNTYtOEQgICAoaGV4KQkJUE5DIFRlY2hub2xvZ2llcyAgQ28uLCBMdGQuCi00NDU2OEQgICAgIChiYXNlIDE2KQkJUE5DIFRlY2hub2xvZ2llcyAgQ28uLCBMdGQuCi0JCQkJIzQwMSBBbnlhbmcgTWVnYXZhbGx5LCA3OTkgS3dhbnlhbmctRG9uZwotCQkJCURvbmdhbi1ndQotCQkJCUFueWFuZyBHeWVvbmdnaS1EbyA0MzEtNzY3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LTU2LUI3ICAgKGhleCkJCVNwYXduIExhYnMsIEluYwotNDQ1NkI3ICAgICAoYmFzZSAxNikJCVNwYXduIExhYnMsIEluYwotCQkJCTIyMDkgR3JhbmdlciBMYW5lCi0JCQkJQXVzdGluIFRYIDc4NjEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC01OC0yOSAgIChoZXgpCQlDaXNjbyBTUFZURwotNDQ1ODI5ICAgICAoYmFzZSAxNikJCUNpc2NvIFNQVlRHCi0JCQkJNTAzMCBTdWdhcmxvYWYgUGt3eQotCQkJCU1TIDQuVC40MjEKLQkJCQlMYXdyZW5jZXZpbGxlIEdlb3JnaWEgMzAwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTU5LTlGICAgKGhleCkJCUNyaXRpY2FyZSBTeXN0ZW1zLCBJbmMKLTQ0NTk5RiAgICAgKGJhc2UgMTYpCQlDcml0aWNhcmUgU3lzdGVtcywgSW5jCi0JCQkJMjA5MjUgQ3Jvc3Nyb2FkcyBDaXJjbGUKLQkJCQlXYXVrYXNoYSBXSSA1MzE4NgotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtNUUtRjMgICAoaGV4KQkJVG9uYWxpdGUgSG9sZGluZyBCLlYuCi00NDVFRjMgICAgIChiYXNlIDE2KQkJVG9uYWxpdGUgSG9sZGluZyBCLlYuCi0JCQkJTmlldXcgQW1zdGVyZGFtc2VzdHJhYXQgNDAKLQkJCQlFbW1lbiBEcmVudGhlIDc4MTQgVkEKLQkJCQlORVRIRVJMQU5EUwotCi00NC01Ri03QSAgIChoZXgpCQlTaGlobGluIEVsZWN0cmljICYgRW5naW5lZXJpbmcgQ29ycC4KLTQ0NUY3QSAgICAgKGJhc2UgMTYpCQlTaGlobGluIEVsZWN0cmljICYgRW5naW5lZXJpbmcgQ29ycC4KLQkJCQkxNkYgIE5PLjg4LCAgU0VDLCAgNiwgIENIVU5HICBTSEFOICBOLiAgUkQuLCBUQUlQRUkgIAotCQkJCU5vLiAyMzQsIENodW5nTHVuLAotCQkJCUhzaW5DaHUgSHNpbkZ1biBTaGlhbmcgMzA0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi00NC02MS0zMiAgIChoZXgpCQllY29iZWUgaW5jCi00NDYxMzIgICAgIChiYXNlIDE2KQkJZWNvYmVlIGluYwotCQkJCTMzMyBBZGVsYWlkZSBTdCBXIDZ0aCBGbG9vcgotCQkJCVRvcm9udG8gT250YXJpbyBNNVYxUjUKLQkJCQlDQU5BREEKLQotNDQtNjgtQUIgICAoaGV4KQkJSlVJTiBDT01QQU5ZLCBMSU1JVEVECi00NDY4QUIgICAgIChiYXNlIDE2KQkJSlVJTiBDT01QQU5ZLCBMSU1JVEVECi0JCQkJMkZMLCAxMDc1LTEsIFdvbnB5ZW9uZy1Eb25nCi0JCQkJR3VtaSBDaXR5IEd5ZW9uZ3NhbmdidWstRG8gNzMwLTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00NC02Qy0yNCAgIChoZXgpCQlSZWFsbGluIEVsZWN0cm9uaWMgQ28uLEx0ZAotNDQ2QzI0ICAgICAoYmFzZSAxNikJCVJlYWxsaW4gRWxlY3Ryb25pYyBDby4sTHRkCi0JCQkJMi9GLCBCdWlsZGluZyAzLCBOby4yMDIgWmhlbmd6aG9uZyBSZCwgWGlIdSBpbmR1c3RyeSBQYXJrCi0JCQkJSGFuZyBaaG91IFpoZSBKaWFuZyAzMTAwMzAKLQkJCQlDSElOQQotCi00NC02RC01NyAgIChoZXgpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotNDQ2RDU3ICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsOTAsQ2hpZW4gMSBSb2FkLENodW5nSG8KLQkJCQlUYWlwZWkgVGFpV2FuIDIzNTg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi00NC03Qy03RiAgIChoZXgpCQlJbm5vbGlnaHQgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotNDQ3QzdGICAgICAoYmFzZSAxNikJCUlubm9saWdodCBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJMyBSZXN1bHRzIFdheQotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtN0QtQTUgICAoaGV4KQkJVlRJT04gSU5GT1JNQVRJT04gVEVDSE5PTE9HWSAoRlVKSUFOKSBDTy4sTFRECi00NDdEQTUgICAgIChiYXNlIDE2KQkJVlRJT04gSU5GT1JNQVRJT04gVEVDSE5PTE9HWSAoRlVKSUFOKSBDTy4sTFRECi0JCQkJUm9vbSA1MDIsIFdpbmcgQSwgV29ybGQgVHJhZGUgQ2VudGVyCi0JCQkJTm8uMzYgRWFzdCBOb3J0aCBUaGlyZCBSaW5nIFJvYWQsRG9uZ2NoZW5nIERpc3RyaWN0LAotCQkJCSBCZWlqaW5nLCAgIAotCQkJCUNISU5BCi0KLTQ0LTdFLTk1ICAgKGhleCkJCUFscGhhIGFuZCBPbWVnYSwgSW5jCi00NDdFOTUgICAgIChiYXNlIDE2KQkJQWxwaGEgYW5kIE9tZWdhLCBJbmMKLQkJCQk0NzM1IE1vbnR2aWV3IEJsdmQKLQkJCQlEZW52ZXIgQ08gODAyMDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LTgzLTEyICAgKGhleCkJCVN0YXItTmV0Ci00NDgzMTIgICAgIChiYXNlIDE2KQkJU3Rhci1OZXQKLQkJCQlFZ296IDY0IAotCQkJCUtpcnlhdCBCeWFsaWsgSXNyYWVsIDI3MDAwCi0JCQkJSVNSQUVMCi0KLTQ0LTg1LTAwICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi00NDg1MDAgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTQ0LTg3LUZDICAgKGhleCkJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotNDQ4N0ZDICAgICAoYmFzZSAxNikJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNIENPLiwgTFRELgotCQkJCU5PLiAyMzksIFNlYy4gMiwgVGkgRGluZyBCbHZkLgotCQkJCVRhaXBlaSAgMTE0OTMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ0LThDLTUyICAgKGhleCkJCUtUSVMgQ08uLCBMdGQKLTQ0OEM1MiAgICAgKGJhc2UgMTYpCQlLVElTIENPLiwgTHRkCi0JCQkJMTIwOGhvLTEwM2RvbmcKLQkJCQkzNi0xLCBCdWNoZW9uIFRlY2hub3BhcmszLiBTYW1qdW5nLURvbmcKLQkJCQlPanVuZy1HdSwgQnVjaGVvbi1zaSBHeWVvbmdnaS1kbyA0MjEtODA4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LThFLTEyICAgKGhleCkJCURUIFJlc2VhcmNoLCBJbmMuCi00NDhFMTIgICAgIChiYXNlIDE2KQkJRFQgUmVzZWFyY2gsIEluYy4KLQkJCQkyMDAwIENvbmNvdXJzZSBEcml2ZSAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNDQtOEUtODEgICAoaGV4KQkJVklHCi00NDhFODEgICAgIChiYXNlIDE2KQkJVklHCi0JCQkJNzA1IEhhbnNoaW4gSVQgVG93ZXIsIDYwLTE4LCBLYXNhbi1kb25nLCBHZXVtY2hlb24tZ3UKLQkJCQlTZW91bCAgS1NYWDAwMjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDQtOTEtREIgICAoaGV4KQkJU2hhbmdoYWkgSHVhcWluIFRlbGVjb20gVGVjaG5vbG9neSBDby4sTHRkCi00NDkxREIgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgSHVhcWluIFRlbGVjb20gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJTm8uMSBCdWlsZGluZywzOTkgS2V5dWFuIFJvYWQsIFpoYW5namlhbiBIaS1UZWNoIFBhcmssIFB1ZG9uZyBOZXcgQXJlYSwgCi0JCQkJU2hhbmdoYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLTQ0LTlDLUI1ICAgKGhleCkJCUFsY29tcCwgSW5jCi00NDlDQjUgICAgIChiYXNlIDE2KQkJQWxjb21wLCBJbmMKLQkJCQkxMTUzNyBXYWxudXQgTGFuZQotCQkJCUZvcnQgQXRraW5zb24gV0kgNTM1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LUE0LTJEICAgKGhleCkJCVRDVCBNb2JpbGUgTGltaXRlZAotNDRBNDJEICAgICAoYmFzZSAxNikJCVRDVCBNb2JpbGUgTGltaXRlZAotCQkJCTQvRiwgU291dGggQnVpbGRpbmcsTm8uMjk2NiwgSmlua2UgUm9hZCwgWmhhbmdqaWFuZyBIaWdoLVRlY2ggUGFyaywgUHVkb25nCi0JCQkJU2hhbmdoYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLTQ0LUE2LTg5ICAgKGhleCkJCVBST01BWCBFTEVDVFJPTklDQSBTQQotNDRBNjg5ICAgICAoYmFzZSAxNikJCVBST01BWCBFTEVDVFJPTklDQSBTQQotCQkJCUZSQU5DRVNDIE1PUkFHQVMgNzEtNzUKLQkJCQlIT1NQSVRBTEVUIERFIExMT0JSRUdBVCBCQVJDRUxPTkEgMDg5MDcKLQkJCQlTUEFJTgotCi00NC1BNy1DRiAgIChoZXgpCQlNdXJhdGEgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLTQ0QTdDRiAgICAgKGJhc2UgMTYpCQlNdXJhdGEgTWFudWZhY3R1cmluZyBDby4sIEx0ZC4KLQkJCQkxMC0xLCBIaWdhc2hpa290YXJpIDEKLQkJCQlOYWdhb2tha3lvLXNoaSBLeW90byA2MTctODU1NQotCQkJCUpBUEFOCi0KLTQ0LUE4LUMyICAgKGhleCkJCVNFV09PIFRFQ0ggQ08uLCBMVEQKLTQ0QThDMiAgICAgKGJhc2UgMTYpCQlTRVdPTyBURUNIIENPLiwgTFRECi0JCQkJNjg5LTIwIEdFVU1KVU5HLURPTkcgCi0JCQkJR1VOUE8tU0kgS1lVTkdHSS1ETyA0MzUtODYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ0LUFBLTI3ICAgKGhleCkJCXVkd29ya3MgQ28uLCBMdGQuCi00NEFBMjcgICAgIChiYXNlIDE2KQkJdWR3b3JrcyBDby4sIEx0ZC4KLQkJCQkjODEwLCBCeXVrc2FuM2NoYSBEaWdpdGFsIFZhbGxleSwgMjEyLTEzLCBHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTc3NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00NC1BQS1FOCAgIChoZXgpCQlOYW5vdGVjIEVsZWN0cm9uaWMgR21iSCAmIENvLiBLRwotNDRBQUU4ICAgICAoYmFzZSAxNikJCU5hbm90ZWMgRWxlY3Ryb25pYyBHbWJIICYgQ28uIEtHCi0JCQkJR2V3ZXJiZXN0cmFzc2UgMTEKLQkJCQlMYW5kc2hhbSBCYXZhcmlhIDg1NjUyCi0JCQkJR0VSTUFOWQotCi00NC1CMy04MiAgIChoZXgpCQlLdWFuZy1jaGkgSW5zdGl0dXRlIG9mIEFkdmFuY2VkIFRlY2hub2xvZ3kKLTQ0QjM4MiAgICAgKGJhc2UgMTYpCQlLdWFuZy1jaGkgSW5zdGl0dXRlIG9mIEFkdmFuY2VkIFRlY2hub2xvZ3kKLQkJCQlTb2Z0d2FyZSBidWlsZGluZywgR2FveGluZ3pob25nIDFzdCBSb2FkLAotCQkJCUhpZ2gtVGVjaCBwYXJrLCBOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTQ0LUMxLTVDICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi00NEMxNUMgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LUMyLTMzICAgKGhleCkJCUd1YW5nemhvdSBDb21ldCBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLkx0ZAotNDRDMjMzICAgICAoYmFzZSAxNikJCUd1YW5nemhvdSBDb21ldCBUZWNobm9sb2d5IERldmVsb3BtZW50IENvLkx0ZAotCQkJCVJtIDMwNCxGTCAzLEJsb2NrIEcsU2NpZW5jZSBhbmQgIFRlY2hub2xvZ3kgSW5ub3ZhdGlvbiBCYXNlLAotCQkJCU5vLjgwLExhbnl1ZSBSb2FkLFNjaWVuY2UgUGFyaywKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIDUxMDY2MwotCQkJCUNISU5BCi0KLTQ0LUM5LUEyICAgKGhleCkJCUdyZWVud2FsZCBJbmR1c3RyaWVzCi00NEM5QTIgICAgIChiYXNlIDE2KQkJR3JlZW53YWxkIEluZHVzdHJpZXMKLQkJCQkyMTIgTWlkZGxlc2V4IEF2ZW51ZQotCQkJCUNoZXN0ZXIgQ1QgMDY0MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LUQxLTVFICAgKGhleCkJCVNoYW5naGFpIEtpbmd0byBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IEx0ZAotNDREMTVFICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEtpbmd0byBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IEx0ZAotCQkJCU5vLjczOCBHdWFuZ2ppIFJELjNGIHNoYW5naGFpLmNoaW5hCi0JCQkJc2hhbmdoYWkgMjAwNDM0Ci0JCQkJQ0hJTkEKLQotNDQtRDItQ0EgICAoaGV4KQkJQW52aWEgVFYgT3kKLTQ0RDJDQSAgICAgKGJhc2UgMTYpCQlBbnZpYSBUViBPeQotCQkJCVBPIEJveCAyOQotCQkJCVNFSU5BSk9LSSAgRklONjAxMDEKLQkJCQlGSU5MQU5ECi0KLTQ0LUQzLUNBICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTQ0RDNDQSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC1ENi0zRCAgIChoZXgpCQlUYWxhcmkgTmV0d29ya3MKLTQ0RDYzRCAgICAgKGJhc2UgMTYpCQlUYWxhcmkgTmV0d29ya3MKLQkJCQkzMjAwIEdsZW4gUm95YWwgUmQuCi0JCQkJU3VpdGUgMTAwCi0JCQkJUmFsZWlnaCAgTkMgMjc2MTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LUQ4LTMyICAgKGhleCkJCUF6dXJld2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLTQ0RDgzMiAgICAgKGJhc2UgMTYpCQlBenVyZXdhdmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJOEYuLCBCYW96aG9uZyBSZC4KLQkJCQlYaW5kaWFuIENpdHkgVGFpcGVpIENvdW50eSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ0LUQ4LTg0ICAgKGhleCkJCUFwcGxlLCBJbmMuCi00NEQ4ODQgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIGluZmluaXRlIExvb3AKLQkJCQljdXBlcnRpbm8gY0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ0LURDLTkxICAgKGhleCkJCVBMQU5FWCBDT01NVU5JQ0FUSU9OUyBJTkMuCi00NERDOTEgICAgIChiYXNlIDE2KQkJUExBTkVYIENPTU1VTklDQVRJT05TIElOQy4KLQkJCQkyRiBGLU5JU1NBWSBFYmlzdSBCbGRnIDMtMTYtMyBIaWdhc2hpLAotCQkJCVNoaWJ1eWEta3UgVG9reW8gMTUwLTAwMTEKLQkJCQlKQVBBTgotCi00NC1EQy1DQiAgIChoZXgpCQlTRU1JTkRJQSBTWVNURU1TIFBWVCBMVEQKLTQ0RENDQiAgICAgKGJhc2UgMTYpCQlTRU1JTkRJQSBTWVNURU1TIFBWVCBMVEQKLQkJCQkxMDA2LzEzLCBTeSBOby40OS8xJjMsIDd0aCBNaWxlLCBBLk0gSW5kbCBFc3RhdGUsCi0JCQkJR2FydmViaGF2aXBhbHlhLEhvc3VyIFJvYWQsIAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwMDY4Ci0JCQkJSU5ESUEKLQotNDQtRTAtOEUgICAoaGV4KQkJQ2lzY28gU1BWVEcKLTQ0RTA4RSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBhcmt3YXkKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC1FNC05QSAgIChoZXgpCQlPTU5JVFJPTklDUyBQVFkgTFRECi00NEU0OUEgICAgIChiYXNlIDE2KQkJT01OSVRST05JQ1MgUFRZIExURAotCQkJCTI3IFNBUklDSCBDUlQKLQkJCQlPU0JPUk5FIFBBUksgV0EgNjAxNwotCQkJCUFVU1RSQUxJQQotCi00NC1FNC1EOSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi00NEU0RDkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00NC1FOC1BNSAgIChoZXgpCQlNeXJla2EgVGVjaG5vbG9naWVzIFNkbi4gQmhkLgotNDRFOEE1ICAgICAoYmFzZSAxNikJCU15cmVrYSBUZWNobm9sb2dpZXMgU2RuLiBCaGQuCi0JCQkJMi0xMywgSkFMQU4gTUFZQU5HIFBBU0lSIDEsCi0JCQkJS09NUExFS1MgTUFZQU5HIE1BTEwKLQkJCQlCYXlhbiBCYXJ1IFBlbmFuZyAxMTk1MAotCQkJCU1BTEFZU0lBCi0KLTQ0LUVELTU3ICAgKGhleCkJCUxvbmdpY29ybiwgaW5jLgotNDRFRDU3ICAgICAoYmFzZSAxNikJCUxvbmdpY29ybiwgaW5jLgotCQkJCVJtMTAwMS0yLCAxMEYsIEJ5dWtzYW4gRGlnaXRhbCBWYWxsZXkxCi0JCQkJMjEyLTE2LCBHdXJvLTNEb25nLCBHdXJvLUd1Ci0JCQkJU2VvdWwgIDE1Mi03NzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDQtRjQtNTkgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotNDRGNDU5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNDgtMDItMkEgICAoaGV4KQkJQi1MaW5rIEVsZWN0cm9uaWMgTGltaXRlZAotNDgwMjJBICAgICAoYmFzZSAxNikJCUItTGluayBFbGVjdHJvbmljIExpbWl0ZWQKLQkJCQlOTyAyNjgsRnVRaWFuIFJkLCBKdVRhbmcgQ29tbXVuaXR5LEd1YW5MYW4gdG93biBCYW9BbiBkaXN0cmljdCxTaGVuWmhlbiwgNTE4MTEwLENoaW5hCi0JCQkJU2hlbiBaaGVuIEd1YW5nIERvbmcgNTE4MTEwCi0JCQkJQ0hJTkEKLQotNDgtMTItNDkgICAoaGV4KQkJTHV4Y29tIFRlY2hub2xvZ2llcyBJbmMuCi00ODEyNDkgICAgIChiYXNlIDE2KQkJTHV4Y29tIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMTAyIFdhbGdyZWVuIFJvYWQKLQkJCQlPdHRhd2EgT250YXJpbyBLMEEgMUwwCi0JCQkJQ0FOQURBCi0KLTQ4LTEzLUYzICAgKGhleCkJCUJCSyBFbGVjdHJvbmljcyBDb3JwLiwgTHRkLgotNDgxM0YzICAgICAoYmFzZSAxNikJCUJCSyBFbGVjdHJvbmljcyBDb3JwLiwgTHRkLgotCQkJCUJCSyBSb2FkLFd1c2hhLENoYW5noa9hbiAKLQkJCQlEb25nZ3VhbiBHdWFuZ2RvbmcgNTIzODYwCi0JCQkJQ0hJTkEKLQotNDgtMTctNEMgICAoaGV4KQkJTWljcm9Qb3dlciB0ZWNobm9sb2dpZXMKLTQ4MTc0QyAgICAgKGJhc2UgMTYpCQlNaWNyb1Bvd2VyIHRlY2hub2xvZ2llcwotCQkJCTQyMjUgRXhlY3V0aXZlIFNxLgotCQkJCVN1aXRlIDQzMAotCQkJCUxhIEpvbGxhIENhbGlmb3JuaWEgOTIwMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ4LTFCLUQyICAgKGhleCkJCUludHJvbiBTY2llbnRpZmljIGNvLiwgbHRkLgotNDgxQkQyICAgICAoYmFzZSAxNikJCUludHJvbiBTY2llbnRpZmljIGNvLiwgbHRkLgotCQkJCTZGLiwgTk8uIDEzNixTZWMgMixLZWVsdW5nIFJkLiwgRGEtYW4gZGlzdHJpY3QKLQkJCQlUYWlwZWkgIDEwNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDgtMjgtMkYgICAoaGV4KQkJWlRFIENvcnBvcmF0aW9uCi00ODI4MkYgICAgIChiYXNlIDE2KQkJWlRFIENvcnBvcmF0aW9uCi0JCQkJMTIvRi4sUiZEIGJ1aWxkaW5nLGtlamluYW4gUm9hZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi00OC0yQy1FQSAgIChoZXgpCQlNb3Rvcm9sYSBJbmMgQnVzaW5lc3MgTGlnaHQgUmFkaW9zCi00ODJDRUEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgSW5jIEJ1c2luZXNzIExpZ2h0IFJhZGlvcwotCQkJCTgwMDAgVyBTdW5yaXNlIEJvdWxldmFyZAotCQkJCVBsYW50YXRpb24gRmxvcmlkYSAzMzMyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDgtMzMtREQgICAoaGV4KQkJWkVOTklPIEFWQU5DRSBZIFRFQ05PTE9HSUEsIFMuTC4KLTQ4MzNERCAgICAgKGJhc2UgMTYpCQlaRU5OSU8gQVZBTkNFIFkgVEVDTk9MT0dJQSwgUy5MLgotCQkJCVJJTyBKQVJBTUEgMTMyIE5BVkUgUDguMTEKLQkJCQlUT0xFRE8gIDQ1MDA3Ci0JCQkJU1BBSU4KLQotNDgtMzQtM0QgICAoaGV4KQkJSUVQIEdtYkgKLTQ4MzQzRCAgICAgKGJhc2UgMTYpCQlJRVAgR21iSAotCQkJCUFtIFBmZXJkZW1hcmt0IDljCi0JCQkJTGFuZ2VuaGFnZW4gTmllZGVyc2FjaHNlbiAzMDg1MwotCQkJCUdFUk1BTlkKLQotNDgtNDQtODcgICAoaGV4KQkJQ2lzY28gU1BWVEcKLTQ4NDQ4NyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlNUyA0LlQuNjA3Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDgtNDQtRjcgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIExURAotNDg0NEY3ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLQkJCQk0MTYsIE1hZXRhbiAzLWRvbmcsIFllb25ndG9uZy1ndQotCQkJCVN1d29uIEd5ZW9uZ2dpLWRvIDQ0Mzc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi00OC00Ni1GMSAgIChoZXgpCQlVcm9zIE95Ci00ODQ2RjEgICAgIChiYXNlIDE2KQkJVXJvcyBPeQotCQkJCVR1dGtpamFudGllIDQKLQkJCQlPVUxVICA5MDU5MAotCQkJCUZJTkxBTkQKLQotNDgtNUItMzkgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi00ODVCMzkgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwgCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTQ4LTVELTYwICAgKGhleCkJCUF6dXJld2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLTQ4NUQ2MCAgICAgKGJhc2UgMTYpCQlBenVyZXdhdmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJOEYgLiwgTm8uOTQsIEJhb3pob25nIFJkLiAKLQkJCQlYaW5kaWFuIENpdHkgVGFpcGVpIENvdW50eSAyMzEgCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi00OC02MC1CQyAgIChoZXgpCQlBcHBsZSwgSW5jLgotNDg2MEJDICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBpbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00OC02MS1BMyAgIChoZXgpCQlDb25jZXJuICJBeGlvbiIgSlNDCi00ODYxQTMgICAgIChiYXNlIDE2KQkJQ29uY2VybiAiQXhpb24iIEpTQwotCQkJCTkwLCBNLiBHb3Jrb2dvIFN0LgotCQkJCUl6aGV2c2sgVWRtdXJ0IFJlcHVibGljIDQyNjAwMAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi00OC02Qi05MSAgIChoZXgpCQlGbGVldHdvb2QgR3JvdXAgSW5jLgotNDg2QjkxICAgICAoYmFzZSAxNikJCUZsZWV0d29vZCBHcm91cCBJbmMuCi0JCQkJMTE4MzIgSmFtZXMgU3QKLQkJCQlQTyBCb3ggMTI1OQotCQkJCUhvbGxhbmQgTWljaGlnYW4gNDk0MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTQ4LTZGLUQyICAgKGhleCkJCVN0b3JTaW1wbGUgSW5jCi00ODZGRDIgICAgIChiYXNlIDE2KQkJU3RvclNpbXBsZSBJbmMKLQkJCQkyMzUwIE1pc3Npb24gQ29sbGVnZSBCbHZkCi0JCQkJU3VpdGUgIzQ3MAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00OC03MS0xOSAgIChoZXgpCQlTR0IgR1JPVVAgTFRELgotNDg3MTE5ICAgICAoYmFzZSAxNikJCVNHQiBHUk9VUCBMVEQuCi0JCQkJMTNGLE5vLjE5MixTZWMuMixDaHVuZyBIc2luIFJkLixIc2luIFRpZW4gQ2l0eQotCQkJCVRhaXBlaSAgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNDgtOEUtNDIgICAoaGV4KQkJRElHQUxPRyBHbWJICi00ODhFNDIgICAgIChiYXNlIDE2KQkJRElHQUxPRyBHbWJICi0JCQkJV2F0dHN0ci4gMTEtMTMKLQkJCQlCZXJsaW4gIEQtMTMzNTUKLQkJCQlHRVJNQU5ZCi0KLTQ4LTkxLTUzICAgKGhleCkJCVdlaW5tYW5uIEdlcu+/vXRlIGbvv71yIE1lZGl6aW4gR21iSCArIENvLiBLRwotNDg5MTUzICAgICAoYmFzZSAxNikJCVdlaW5tYW5uIEdlcu+/vXRlIGbvv71yIE1lZGl6aW4gR21iSCArIENvLiBLRwotCQkJCUtyb25zYWFsc3dlZyA0MAotCQkJCUhhbWJ1cmcgIEQtMjI1MjUKLQkJCQlHRVJNQU5ZCi0KLTQ4LTkxLUY2ICAgKGhleCkJCVNoZW56aGVuIFJlYWNoIHNvZnR3YXJlIHRlY2hub2xvZ3kgQ08uLExURAotNDg5MUY2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFJlYWNoIHNvZnR3YXJlIHRlY2hub2xvZ3kgQ08uLExURAotCQkJCTYvRixCbG9jayBCLCBLaW5nZGVlIFNvZnR3YXJlIHBhcmssIzIsS2VqaSAxMnRoIFNvdXRoIFJvYWQsSGktdGVjaCBJbmR1c3RyaWFsIFBhcmssTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi00OC05Qi1FMiAgIChoZXgpCQlTQ0kgSW5ub3ZhdGlvbnMgTHRkCi00ODlCRTIgICAgIChiYXNlIDE2KQkJU0NJIElubm92YXRpb25zIEx0ZAotCQkJCTE2QyBIdXJzdCBFbmQKLQkJCQlGb2xseSBMYW5lCi0JCQkJTmV3cG9ydCBQYWduZWxsIEJ1Y2tpbmdoYW1zaGlyZSBNSzE2IDlIUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTQ4LUEyLTJEICAgKGhleCkJCVNoZW56aGVuIEh1YXh1Y2hhbmcgVGVsZWNvbSBUZWNobm9sb2d5IENvLixMdGQKLTQ4QTIyRCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBIdWF4dWNoYW5nIFRlbGVjb20gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJUm9vbSA1MDEgQmxvY2sgQiwgQ3liZXIgVGltZSBQbGF6YQotCQkJCVRpYW4mIzM5O2FuLCBGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotNDgtQTYtRDIgICAoaGV4KQkJR0pzdW4gT3B0aWNhbCBTY2llbmNlIGFuZCBUZWNoIENvLixMdGQuCi00OEE2RDIgICAgIChiYXNlIDE2KQkJR0pzdW4gT3B0aWNhbCBTY2llbmNlIGFuZCBUZWNoIENvLixMdGQuCi0JCQkJRmlyc3QgZmxvb3IgTmF0aW9uYWwgSW5mb3JtYXRpb24gSW5kdXN0cnkgUGFyayBELTA4Ci0JCQkJQ2hhb3lhbmcgUm9hZCxRaXhpbmcgRGlzdHJpY3QKLQkJCQlHdWlsaW4gR3Vhbmd4aSA1NDEwMDQKLQkJCQlDSElOQQotCi00OC1BQS01RCAgIChoZXgpCQlTdG9yZSBFbGVjdHJvbmljIFN5c3RlbXMKLTQ4QUE1RCAgICAgKGJhc2UgMTYpCQlTdG9yZSBFbGVjdHJvbmljIFN5c3RlbXMKLQkJCQkzOSBydWUgZGUgbW9udGlnbnkKLQkJCQlBcmdlbnRldWlsICA5NTEwMAotCQkJCUZSQU5DRQotCi00OC1DMS1BQyAgIChoZXgpCQlQTEFOVFJPTklDUywgSU5DLgotNDhDMUFDICAgICAoYmFzZSAxNikJCVBMQU5UUk9OSUNTLCBJTkMuCi0JCQkJMzQ1IEVOQ0lOQUwgU1RSRUVUCi0JCQkJU0FOVEEgQ1JVWiBDQSA5NTA2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDgtQzgtNjIgICAoaGV4KQkJU2ltbyBXaXJlbGVzcyxJbmMuCi00OEM4NjIgICAgIChiYXNlIDE2KQkJU2ltbyBXaXJlbGVzcyxJbmMuCi0JCQkJMzI2IyxCdWlsZGluZyA0LFpob25neGluZyBJbmR1c3RyaWFsIFBhcmssQ2h1YW5neWUKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU0Ci0JCQkJQ0hJTkEKLQotNDgtQzgtQjYgICAoaGV4KQkJU3lzVGVjIEdtYkgKLTQ4QzhCNiAgICAgKGJhc2UgMTYpCQlTeXNUZWMgR21iSAotCQkJCUx1ZHdpZy1FcmhhcmQtU3RyYXNzZSA2Ci0JCQkJQmVyZ2hlaW0tR2xlc3NlbiBOUlcgNTAxMjkKLQkJCQlHRVJNQU5ZCi0KLTQ4LUNCLTZFICAgKGhleCkJCUNlbGxvIEVsZWN0cm9uaWNzIChVSykgTHRkCi00OENCNkUgICAgIChiYXNlIDE2KQkJQ2VsbG8gRWxlY3Ryb25pY3MgKFVLKSBMdGQKLQkJCQlDbGlmZiBMb2RnZQotCQkJCUhhcm1ieSBSb2FkCi0JCQkJTGV5YnVybiBOb3J0aCBZb3Jrc2hpcmUgREw4IDVOUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTQ4LUQ1LTRDICAgKGhleCkJCUplZGEgTmV0d29ya3MKLTQ4RDU0QyAgICAgKGJhc2UgMTYpCQlKZWRhIE5ldHdvcmtzCi0JCQkJMjYxOCBTYW4gTWlndWVsIERyaXZlCi0JCQkJU3VpdGUgIyA0MDgKLQkJCQlOZXdwb3J0IEJlYWNoIENhLiA5MjY2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNDgtRDctRkYgICAoaGV4KQkJQkxBTktPTSBBbnRlbm5lbnRlY2huaWsgR21iSAotNDhEN0ZGICAgICAoYmFzZSAxNikJCUJMQU5LT00gQW50ZW5uZW50ZWNobmlrIEdtYkgKLQkJCQlIZXJtYW5uLVBldGVyc2lsZ2UgU3RyLiAxCi0JCQkJQmFkIEJsYW5rZW5idXJnIFRIIDA3NDIyCi0JCQkJR0VSTUFOWQotCi00OC1EOC1GRSAgIChoZXgpCQlDbGFySUR5IFNvbHV0aW9ucywgSW5jLgotNDhEOEZFICAgICAoYmFzZSAxNikJCUNsYXJJRHkgU29sdXRpb25zLCBJbmMuCi0JCQkJN0YsIE5vLjksIFBhcmtBdmVudWUgSUkgUmQuLCBIc2luY2h1IFNjaWVuY2UgUGFyaywgCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi00OC1EQy1GQiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotNDhEQ0ZCICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi00OC1ERi0xQyAgIChoZXgpCQlXdWhhbiBORUMgRmlicmUgT3B0aWMgQ29tbXVuaWNhdGlvbnMgaW5kdXN0cnkgQ28uIEx0ZAotNDhERjFDICAgICAoYmFzZSAxNikJCVd1aGFuIE5FQyBGaWJyZSBPcHRpYyBDb21tdW5pY2F0aW9ucyBpbmR1c3RyeSBDby4gTHRkCi0JCQkJM3JkIFJvYWQgR3VhbnNoYW4sCi0JCQkJV3VoYW4gSHViZWkgNDMwMDc0Ci0JCQkJQ0hJTkEKLQotNDgtRTEtQUYgICAoaGV4KQkJVml0eQotNDhFMUFGICAgICAoYmFzZSAxNikJCVZpdHkKLQkJCQkxODAgcnVlIFBpZXJyZSBMYW5kYWlzCi0JCQkJQ2F1ZGFuIDU2IDU2ODUwCi0JCQkJRlJBTkNFCi0KLTQ4LUVBLTYzICAgKGhleCkJCVpoZWppYW5nIFVuaXZpZXcgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotNDhFQTYzICAgICAoYmFzZSAxNikJCVpoZWppYW5nIFVuaXZpZXcgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCUVhc3Rjb20gQnVpbGRpbmcgQyxFYXN0Y29tIEF2ZW51ZQotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDA1MwotCQkJCUNISU5BCi0KLTQ4LUVCLTMwICAgKGhleCkJCSBFVEVSTkEgVEVDSE5PTE9HWSwgSU5DLgotNDhFQjMwICAgICAoYmFzZSAxNikJCSBFVEVSTkEgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTM5MzkgdmVzZWxpY2ggYXZlCi0JCQkJMzE3Ci0JCQkJbG9zIGFuZ2VsZXMgY2FsaWZvcm5pYSA5MDAzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotNDgtRUQtODAgICAoaGV4KQkJZGFlc3VuZyBlbHRlYwotNDhFRDgwICAgICAoYmFzZSAxNikJCWRhZXN1bmcgZWx0ZWMKLQkJCQkjNTA5IFNKIFRlY2hub3ZpbGxlLCA2MC0xOSwgR2FzYW4tZG9uZwotCQkJCUdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtNzY5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTQ4LUYzLTE3ICAgKGhleCkJCVBSSVZBVEUKLTQ4RjMxNyAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotNDgtRjQtN0QgICAoaGV4KQkJVGVjaFZpc2lvbiBIb2xkaW5nICBJbnRlcm5hdGlvbiBMaW1pdGVkCi00OEY0N0QgICAgIChiYXNlIDE2KQkJVGVjaFZpc2lvbiBIb2xkaW5nICBJbnRlcm5hdGlvbiBMaW1pdGVkCi0JCQkJT2Zmc2hvcmUgSW5jb3Jwb3JhdGlvbnMgQ2VudHJlCi0JCQkJUC5PLiBCb3ggOTU3Ci0JCQkJUm9hZCBUb3duIFRvcnRvbGEgVkcxMTEwCi0JCQkJVklSR0lOIElTTEFORFMsIEJSSVRJU0gKLQotNDgtRjctRjEgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTQ4RjdGMSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTYwMCBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDJFNgotCQkJCUNBTkFEQQotCi00OC1GOC1FMSAgIChoZXgpCQlBbGNhdGVsIEx1Y2VudCBXVAotNDhGOEUxICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTHVjZW50IFdUCi0JCQkJNjAwIE1hcmNoIERyaXZlCi0JCQkJT3R0YXdhIE9udGFyaW8gazJrIDJlNgotCQkJCUNBTkFEQQotCi00OC1GQy1COCAgIChoZXgpCQlXb29kc3RyZWFtIENvcnBvcmF0aW9uCi00OEZDQjggICAgIChiYXNlIDE2KQkJV29vZHN0cmVhbSBDb3Jwb3JhdGlvbgotCQkJCTY5IE4uIExvY3VzdCBTdHJlZXQKLQkJCQlMaXRpdHogUEEgMTc1NDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTRDLTAyLTJFICAgKGhleCkJCUNNUiBLT1JFQSBDTy4sIExURAotNEMwMjJFICAgICAoYmFzZSAxNikJCUNNUiBLT1JFQSBDTy4sIExURAotCQkJCTZGLCBKLVRvd2VyLCAyNC01IEJhbmdpLWRvbmcsIFNvbmdwYS1HdQotCQkJCVNlb3VsICAxMzgtMDUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTRDLTAyLTg5ICAgKGhleCkJCUxFWCBDT01QVVRFQ0ggQ08uLCBMVEQKLTRDMDI4OSAgICAgKGJhc2UgMTYpCQlMRVggQ09NUFVURUNIIENPLiwgTFRECi0JCQkJM0YsIE5vLjc3LCBMSSBERSBTdC4gQ2h1bmcgSG8gRGlzdC4sIAotCQkJCU5ldyBUYWlwZWkgQ2l0eSAgMjM1NTYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTRDLTA2LThBICAgKGhleCkJCUJhc2xlciBFbGVjdHJpYyBDb21wYW55Ci00QzA2OEEgICAgIChiYXNlIDE2KQkJQmFzbGVyIEVsZWN0cmljIENvbXBhbnkKLQkJCQkxMjU3MCBTdGF0ZSBSb3V0ZSAxNDMKLQkJCQlIaWdobGFuZCBJTCA2MjI0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotNEMtMDctQzkgICAoaGV4KQkJQ09NUFVURVIgT0ZGSUNFIENvLixMdGQuCi00QzA3QzkgICAgIChiYXNlIDE2KQkJQ09NUFVURVIgT0ZGSUNFIENvLixMdGQuCi0JCQkJMTM2OC0xMCBNdXJhbWF0c3UtY2hvCi0JCQkJSXNlLXNoaSBNaWUta2VuIDUxNS0wNTA3Ci0JCQkJSkFQQU4KLQotNEMtMEItM0EgICAoaGV4KQkJVENUIE1vYmlsZSBMaW1pdGVkCi00QzBCM0EgICAgIChiYXNlIDE2KQkJVENUIE1vYmlsZSBMaW1pdGVkCi0JCQkJNUYsIEMtVG93ZXIsIE5vLjIzMiwgTGlhbmdqaW5nIFJvYWQsIAotCQkJCVpoYW5namlhbmcgSGlnaC10ZWNoIFBhcmssIFB1ZG9uZywKLQkJCQlTaGFuZ2hhaSAyMDEyMDMKLQkJCQlDSElOQQotCi00Qy0wRi02RSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotNEMwRjZFICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMyAKLQkJCQlDSElOQQotCi00Qy0wRi1DNyAgIChoZXgpCQlFYXJkYSBFbGVjdHJvbmljcyBDby4sTHRkIAotNEMwRkM3ICAgICAoYmFzZSAxNikJCUVhcmRhIEVsZWN0cm9uaWNzIENvLixMdGQgCi0JCQkJNS9GLEJsb2NrIDIgRWFzdCBhcmVhLEhhb3NoZW5nIEluZHVzdHJpYWwgUGFyaywKLQkJCQk4IERlbmd5dW4gQXYuLCBOYW5jdW4gVG93biwgUGFueXUgRGlzdHJpY3QsCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTE0MDAKLQkJCQlDSElOQQotCi00Qy0xNC04MCAgIChoZXgpCQlOT1JFR09OIFNZU1RFTVMsIElOQwotNEMxNDgwICAgICAoYmFzZSAxNikJCU5PUkVHT04gU1lTVEVNUywgSU5DCi0JCQkJMTAwIE4uIE1BSU4gU1QuICBTVUlURSAyMjAwCi0JCQkJV0lOU1RPTiAtIFNBTEVNIE5DIDI3MTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00Qy0xNy1FQiAgIChoZXgpCQlTQUdFTUNPTQotNEMxN0VCICAgICAoYmFzZSAxNikJCVNBR0VNQ09NCi0JCQkJMjUwIHJvdXRlIGRlIGwnRW1wZXJldXIKLQkJCQlSVUVJTCBNQUxNQUlTT04gIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLTRDLTFBLTNBICAgKGhleCkJCVBSSU1BIFJlc2VhcmNoIEFuZCBQcm9kdWN0aW9uIEVudGVycHJpc2UgTHRkLgotNEMxQTNBICAgICAoYmFzZSAxNikJCVBSSU1BIFJlc2VhcmNoIEFuZCBQcm9kdWN0aW9uIEVudGVycHJpc2UgTHRkLgotCQkJCTYzLCBTdm9ib2R5IHN0LgotCQkJCU5pemhueSBOb3Znb3JvZCAgNjAzMDAzCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTRDLTFGLUNDICAgKGhleCkJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotNEMxRkNDICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCUIxLTcsSHVhd2VpIEluZHVzdHJpYWwgQmFzZSxCYW50aWFuLExvbmdnYW5nCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTRDLTJDLTgwICAgKGhleCkJCUJlaWppbmcgU2t5d2F5IFRlY2hub2xvZ2llcyBDby4sTHRkIAotNEMyQzgwICAgICAoYmFzZSAxNikJCUJlaWppbmcgU2t5d2F5IFRlY2hub2xvZ2llcyBDby4sTHRkIAotCQkJCU5vLjUgSmlhbmd0YWkgUm9hZCwgCi0JCQkJQ2hhb3lhbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwMTUKLQkJCQlDSElOQQotCi00Qy0yRi05RCAgIChoZXgpCQlJQ00gQ29udHJvbHMKLTRDMkY5RCAgICAgKGJhc2UgMTYpCQlJQ00gQ29udHJvbHMKLQkJCQk3MzEzIFdpbGxpYW0gQmFycnkgQmx2ZAotCQkJCU5vcnRoIFN5cmFjdXNlIE5ZIDEzMjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi00Qy0zMC04OSAgIChoZXgpCQlUaGFsZXMgVHJhbnNwb3J0YXRpb24gU3lzdGVtcyBHbWJICi00QzMwODkgICAgIChiYXNlIDE2KQkJVGhhbGVzIFRyYW5zcG9ydGF0aW9uIFN5c3RlbXMgR21iSAotCQkJCUJpZXJ3ZWcgMgotCQkJCUFybnN0YWR0IFRodXJpbmdpYSA5OTMxMAotCQkJCUdFUk1BTlkKLQotNEMtMzItMkQgICAoaGV4KQkJVEVMRURBVEEgTkVUV09SS1MKLTRDMzIyRCAgICAgKGJhc2UgMTYpCQlURUxFREFUQSBORVRXT1JLUwotCQkJCTEwIEhhc2FkbmFvdCBTdHJlZXQKLQkJCQlIRVJaTElZQSAgNDYxMjAKLQkJCQlJU1JBRUwKLQotNEMtMzItRDkgICAoaGV4KQkJTSBSdXR0eSBIb2xkaW5ncyBQdHkuIEx0ZC4KLTRDMzJEOSAgICAgKGJhc2UgMTYpCQlNIFJ1dHR5IEhvbGRpbmdzIFB0eS4gTHRkLgotCQkJCVVuaXQgMSwgNCBCZWF1bW9udCBSb2FkCi0JCQkJTW91bnQgS3VyaW5nLUdhaSBOZXcgU291dGggV2FsZXMgMjA4MAotCQkJCUFVU1RSQUxJQQotCi00Qy0zOS0xMCAgIChoZXgpCQlOZXd0ZWsgRWxlY3Ryb25pY3MgY28uLCBMdGQuCi00QzM5MTAgICAgIChiYXNlIDE2KQkJTmV3dGVrIEVsZWN0cm9uaWNzIGNvLiwgTHRkLgotCQkJCUJ5dWNrc2FuLVN1bnlvdW5nIFRlY2hub3BpYSAxMDA0LAotCQkJCU9qZW9uLURvbmcsCi0JCQkJVWl3YW5nLUNpdHkgS3l1bmdnaS1EbyA0MzctODIxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTRDLTNCLTc0ICAgKGhleCkJCVZPR1RFQyhILksuKSBDby4sIEx0ZAotNEMzQjc0ICAgICAoYmFzZSAxNikJCVZPR1RFQyhILksuKSBDby4sIEx0ZAotCQkJCUZsYXQgMDEsIDIvRiwgT24gTmluZyBCdWlsZGluZywKLQkJCQk0MjUtNDMxIEtpbmcncyBSb2FkLE5vcnRoIFBvaW50Ci0JCQkJSG9uZyBLb25nICA5OTkwNzcKLQkJCQlDSElOQQotCi00Qy00Qi02OCAgIChoZXgpCQlNb2JpbGUgRGV2aWNlLCBJbmMuIAotNEM0QjY4ICAgICAoYmFzZSAxNikJCU1vYmlsZSBEZXZpY2UsIEluYy4gCi0JCQkJIDhGLTEsIE5vLiAxNDUsIFNpYW5qaGVuZyA5dGggUmQuLCAKLQkJCQlKaHViZWkgQ2l0eSwgIEhzaW5jaHUgQ291bnR5ICAzMDI1MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNEMtNTQtMjcgICAoaGV4KQkJTGluZXBybyBTcC4geiBvLm8uCi00QzU0MjcgICAgIChiYXNlIDE2KQkJTGluZXBybyBTcC4geiBvLm8uCi0JCQkJdWwuIE1pZWR6aWFuYSAxMQotCQkJCVdhcnN6YXdhIG1hem93aWVja2llIDAwLTgzNQotCQkJCVBPTEFORAotCi00Qy01NC05OSAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi00QzU0OTkgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxMDEwOAotCQkJCUNISU5BCi0KLTRDLTU1LTg1ICAgKGhleCkJCUhhbWlsdG9uIFN5c3RlbXMKLTRDNTU4NSAgICAgKGJhc2UgMTYpCQlIYW1pbHRvbiBTeXN0ZW1zCi0JCQkJMzE0MyBQcm9kdWN0aW9uIERyaXZlCi0JCQkJRmFpcmZpZWxkIE9IIDQ1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00Qy01RC1DRCAgIChoZXgpCQlPeSBGaW5uaXNoIEVsZWN0cmljIFZlaGljbGUgVGVjaG5vbG9naWVzIEx0ZAotNEM1RENEICAgICAoYmFzZSAxNikJCU95IEZpbm5pc2ggRWxlY3RyaWMgVmVoaWNsZSBUZWNobm9sb2dpZXMgTHRkCi0JCQkJTWFqYXZhbnRpZSAxMAotCQkJCVRVVVNVTEEgIEZJLTA0MzIwCi0JCQkJRklOTEFORAotCi00Qy01Ri1EMiAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudAotNEM1RkQyICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50Ci0JCQkJNzc3IEVhc3QgTWlkZGxlZmllbGQgUm9hZAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTRDLTYwLUQ1ICAgKGhleCkJCWFpclBvaW50ZSBvZiBOZXcgSGFtcHNoaXJlCi00QzYwRDUgICAgIChiYXNlIDE2KQkJYWlyUG9pbnRlIG9mIE5ldyBIYW1wc2hpcmUKLQkJCQkzNUUgSW5kdXN0cmlhbCBXYXkKLQkJCQlSb2NoZXN0ZXIgTkggMDM4NjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTRDLTYwLURFICAgKGhleCkJCU5FVEdFQVIKLTRDNjBERSAgICAgKGJhc2UgMTYpCQlORVRHRUFSCi0JCQkJMzUwIEVhc3QgUGx1bWVyaWEgRHJpdmUKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi00Qy02My1FQiAgIChoZXgpCQlBcHBsaWNhdGlvbiBTb2x1dGlvbnMgKEVsZWN0cm9uaWNzIGFuZCBWaXNpb24pIEx0ZAotNEM2M0VCICAgICAoYmFzZSAxNikJCUFwcGxpY2F0aW9uIFNvbHV0aW9ucyAoRWxlY3Ryb25pY3MgYW5kIFZpc2lvbikgTHRkCi0JCQkJVGhlIFJpdmVyc2lkZSBDZW50cmUKLQkJCQlSYWlsd2F5IExhbmUKLQkJCQlMZXdlcyBFYXN0IFN1c3NleCBCTjcgMkFRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNEMtNjQtRDkgICAoaGV4KQkJR3Vhbmdkb25nIExlYXdpbiBHcm91cCBDby4sIEx0ZAotNEM2NEQ5ICAgICAoYmFzZSAxNikJCUd1YW5nZG9uZyBMZWF3aW4gR3JvdXAgQ28uLCBMdGQKLQkJCQkxMC9GLCBEb21haW4gQmxkZyxOby44IEtlamkgUm9hZChFKSxIaVRlY2ggRGV2ZWxvcG1lbnQgRGlzdHJpY3QsCi0JCQkJU2hhbnRvdSBHdWFuZ2RvbmcgNTE1MDQxCi0JCQkJQ0hJTkEKLQotNEMtNzItQjkgICAoaGV4KQkJUGVnYXRyb24gQ29ycG9yYXRpb24KLTRDNzJCOSAgICAgKGJhc2UgMTYpCQlQZWdhdHJvbiBDb3Jwb3JhdGlvbgotCQkJCU5vLiA3NiwgTGlnb25nIFN0LiwgQmVpdG91Ci0JCQkJVGFpcGVpIFRhaXdhbiAxMTIKLQkJCQlUQUlXQU4sIFBST1ZJTkNFIE9GIENISU5BCi0KLTRDLTczLTY3ICAgKGhleCkJCUdlbml1cyBCeXRlcyBTb2Z0d2FyZSBTb2x1dGlvbnMgR21iSAotNEM3MzY3ICAgICAoYmFzZSAxNikJCUdlbml1cyBCeXRlcyBTb2Z0d2FyZSBTb2x1dGlvbnMgR21iSAotCQkJCU1lcmlhbnN0ci4gMzAKLQkJCQlCb2NodW0gTlJXIDQ0ODAxCi0JCQkJR0VSTUFOWQotCi00Qy03My1BNSAgIChoZXgpCQlLT1ZFCi00QzczQTUgICAgIChiYXNlIDE2KQkJS09WRQotCQkJCTE0IE4uIFBlb3JpYSBTdHJlZXQKLQkJCQlTdWl0ZSAySAotCQkJCUNoaWNhZ28gSUwgNjA2MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTRDLTc3LTRGICAgKGhleCkJCUVtYmVkZGVkIFdpcmVsZXNzIExhYnMgCi00Qzc3NEYgICAgIChiYXNlIDE2KQkJRW1iZWRkZWQgV2lyZWxlc3MgTGFicyAKLQkJCQk3MDIgTGV2ZWwgNyBVcHRvd24gMiBOby4yIAotCQkJCUphbGFuIFNTMjEvMzcgRGFtYW5zYXJhIFVwdG93bgotCQkJCVBldGFsaW5nIEpheWEgU2VsYW5nb3IgNDc0MDAKLQkJCQlNQUxBWVNJQQotCi00Qy03OC05NyAgIChoZXgpCQlBcnJvd2hlYWQgQWxhcm0gUHJvZHVjdHMgTHRkCi00Qzc4OTcgICAgIChiYXNlIDE2KQkJQXJyb3doZWFkIEFsYXJtIFByb2R1Y3RzIEx0ZAotCQkJCTM0NEIgUm9zZWRhbGUgUm9hZAotCQkJCUFsYmFueQotCQkJCUF1Y2tsYW5kIEF1Y2tsYW5kIDA3NTEKLQkJCQlORVcgWkVBTEFORAotCi00Qy04MC05MyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTRDODA5MyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTRDLThCLTU1ICAgKGhleCkJCUdydXBvIERpZ2ljb24KLTRDOEI1NSAgICAgKGJhc2UgMTYpCQlHcnVwbyBEaWdpY29uCi0JCQkJUnVhIE5pc3NpbiBDYXN0aWVsLCA2NDAKLQkJCQlHcmF2YXRh7SBSaW8gR3JhbmRlIGRvIFN1bCA5NDA0NTQyMAotCQkJCUJSQVpJTAotCi00Qy05OC1FRiAgIChoZXgpCQlaZW8KLTRDOThFRiAgICAgKGJhc2UgMTYpCQlaZW8KLQkJCQkzMjAgTmV2YWRhIFN0Ci0JCQkJNHRoIEZsb29yCi0JCQkJTmV3dG9uICBNQSAwMjQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNEMtOUUtODAgICAoaGV4KQkJS1lPS0tPIEVMRUNUUklDIENvLiwgTHRkLgotNEM5RTgwICAgICAoYmFzZSAxNikJCUtZT0tLTyBFTEVDVFJJQyBDby4sIEx0ZC4KLQkJCQk1LTctMjAsIE1vdG9tYWNoaS1kb3JpLCBDaHVvLUt1Ci0JCQkJS29iZSBIeW9nbyA2NTAwMDIyCi0JCQkJSkFQQU4KLQotNEMtOUUtRTQgICAoaGV4KQkJSGFueWFuZyBOYXZpY29tIENvLixMdGQuCi00QzlFRTQgICAgIChiYXNlIDE2KQkJSGFueWFuZyBOYXZpY29tIENvLixMdGQuCi0JCQkJNzEzLCBHd2FucHllb25nLWRvbmcsIFl1c3VuZy1ndQotCQkJCURhZWplb24gIDMwNS01MDkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNEMtQTctNEIgICAoaGV4KQkJQWxjYXRlbCBMdWNlbnQKLTRDQTc0QiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIEx1Y2VudAotCQkJCVZpYSB0cmVudG8sIDMwCi0JCQkJVmltZXJjYXRlIE1CIDIwMDU5Ci0JCQkJSVRBTFkKLQotNEMtQUEtMTYgICAoaGV4KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcyAoU2hhbmdoYWkpIEluYy4KLTRDQUExNiAgICAgKGJhc2UgMTYpCQlBenVyZVdhdmUgVGVjaG5vbG9naWVzIChTaGFuZ2hhaSkgSW5jLgotCQkJCU5vLjggTGFuZSA2NiwgQ2hlbmJhbyBSb2FkLCBNYWx1IFRvd24gSmlhZGluZyBEaXN0cmljdAotCQkJCVNoYW5naGFpICAyMDE4MDEKLQkJCQlDSElOQQotCi00Qy1BQy0wQSAgIChoZXgpCQlaVEUgQ29ycG9yYXRpb24KLTRDQUMwQSAgICAgKGJhc2UgMTYpCQlaVEUgQ29ycG9yYXRpb24KLQkJCQkxMi9GLFpURSBSJkQgQnVpbGRpbmcsS2VqaW5hbiBSb2FkLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi00Qy1CMS02QyAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQgCi00Q0IxNkMgICAgIChiYXNlIDE2KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFREIAotCQkJCUh1YVdlaSBJbmR1c3RyaWFsIEJhc2WjrEJhblRpYW4sTG9uZ0dhbmcKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotNEMtQjEtOTkgICAoaGV4KQkJQXBwbGUsIEluYy4KLTRDQjE5OSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgaW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTRDLUI0LUVBICAgKGhleCkJCUhSRCAoUykgUFRFLiwgTFRELgotNENCNEVBICAgICAoYmFzZSAxNikJCUhSRCAoUykgUFRFLiwgTFRELgotCQkJCUxvdCA3LCBCbG9jayA5LCBQaGFzZSAxLCBDYXZpdGUgRWNvLVpvbmUsCi0JCQkJUm9zYXJpbyBDYXZpdGUgNDEwNgotCQkJCVBISUxJUFBJTkVTCi0KLTRDLUI5LUM4ICAgKGhleCkJCUNPTkVUIENPLiwgTFRELgotNENCOUM4ICAgICAoYmFzZSAxNikJCUNPTkVUIENPLiwgTFRELgotCQkJCTItOCxISUdBU0hJSklNQS1DSE8KLQkJCQlJQ0hJTk9NSVlBIEFJQ0hJIDQ5MS0wMDc0Ci0JCQkJSkFQQU4KLQotNEMtQkEtQTMgICAoaGV4KQkJQmlzb24gRWxlY3Ryb25pY3MgSW5jLgotNENCQUEzICAgICAoYmFzZSAxNikJCUJpc29uIEVsZWN0cm9uaWNzIEluYy4KLQkJCQkzRi4sIE5vLjI4LCBMYW5lIDU4MywgUnVlaWd1YW5nIFJkLiwgTmVpaHUgRGlzdHJpY3QKLQkJCQlUYWlwZWkgQ2l0eSAgMTE0OTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTRDLUM0LTUyICAgKGhleCkJCVNoYW5nIEhhaSBUeWQuIEVsZWN0b24gVGVjaG5vbG9neSBMdGQuCi00Q0M0NTIgICAgIChiYXNlIDE2KQkJU2hhbmcgSGFpIFR5ZC4gRWxlY3RvbiBUZWNobm9sb2d5IEx0ZC4KLQkJCQlSb29tIE5vLjUsTjAuMzk2LEd1aUxpbiBSb2FkLCAKLQkJCQlYdSBIdWkgRGlzdHJpY3QKLQkJCQlTaGFuZyBIYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTRDLUM2LTAyICAgKGhleCkJCVJhZGlvcywgSW5jLgotNENDNjAyICAgICAoYmFzZSAxNikJCVJhZGlvcywgSW5jLgotCQkJCTE0MDggQ2VudGVyIEF2ZW51ZQotCQkJCU9vc3RidXJnIFdpc2NvbnNpbiA1MzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNEMtQzktNEYgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTRDQzk0RiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTYwMCBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDJFNgotCQkJCUNBTkFEQQotCi00Qy1FNi03NiAgIChoZXgpCQlCdWZmYWxvIEluYy4KLTRDRTY3NiAgICAgKGJhc2UgMTYpCQlCdWZmYWxvIEluYy4KLQkJCQkxNSwgU2hpYmF0YSBIb25kb3JpIDQtY2hvbWUKLQkJCQlNaW5hbWkta3UsIE5hZ295YSBBaWNoaSA0NTctODUyMAotCQkJCUpBUEFOCi0KLTRDLUVCLTQyICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotNENFQjQyICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotNEMtRUQtREUgICAoaGV4KQkJQXNrZXkgQ29tcHV0ZXIgQ29ycAotNENFRERFICAgICAoYmFzZSAxNikJCUFza2V5IENvbXB1dGVyIENvcnAKLQkJCQkxMGYsbm8uMTE5LGNoaWVua2FuZyByZCxjaHVuZy1obywKLQkJCQlUQUlQRUkgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTRDLUY3LTM3ICAgKGhleCkJCVNhbUppIEVsZWN0cm9uaWNzIENvLiwgTHRkCi00Q0Y3MzcgICAgIChiYXNlIDE2KQkJU2FtSmkgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLQkJCQk0NTktMjEsIEdhc2FuLWRvbmcsIEd1bWNodW4ta3UKLQkJCQlTZW91bCAgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi01MC0wMC04QyAgIChoZXgpCQlIb25nIEtvbmcgVGVsZWNvbW11bmljYXRpb25zIChIS1QpIExpbWl0ZWQKLTUwMDA4QyAgICAgKGJhc2UgMTYpCQlIb25nIEtvbmcgVGVsZWNvbW11bmljYXRpb25zIChIS1QpIExpbWl0ZWQKLQkJCQk0MS9GLCBQQ0NXIFRvd2VyLCBUYWlrb28gUGxhY2UsCi0JCQkJUXVhcnJ5IEJheSwgCi0JCQkJSE9ORyBLT05HCi0KLTUwLTA1LTNEICAgKGhleCkJCUN5V2VlIEdyb3VwIEx0ZAotNTAwNTNEICAgICAoYmFzZSAxNikJCUN5V2VlIEdyb3VwIEx0ZAotCQkJCTNGLCBOby4yOCwgTGFuZTEyOAotCQkJCUppbmcgWWUgMXN0IFJvYWQKLQkJCQlUYWlwZWkgIDEwNDYyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi01MC0wQi0zMiAgIChoZXgpCQlGb3hkYSBUZWNobm9sb2d5IEluZHVzdHJpYWwoU2hlblpoZW4pQ28uLExURAotNTAwQjMyICAgICAoYmFzZSAxNikJCUZveGRhIFRlY2hub2xvZ3kgSW5kdXN0cmlhbChTaGVuWmhlbilDby4sTFRECi0JCQkJRyBGLEJsb2NrMSxGb3hkYSBJbmR1c3RyaWFsIFBhcmssIExhbnpodSBSZCwgU2hlbnpoZW4gR3JhbmQgSW5kdXN0cmlhbCBab25lLCBMb25nZ2FuZyBEaXN0cmljdCxTaGVuemhlbiw1MTgxMjIsUFIgQ2hpbmEKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTIyCi0JCQkJQ0hJTkEKLQotNTAtMEUtNkQgICAoaGV4KQkJVHJhZmZpY0Nhc3QgSW50ZXJuYXRpb25hbAotNTAwRTZEICAgICAoYmFzZSAxNikJCVRyYWZmaWNDYXN0IEludGVybmF0aW9uYWwKLQkJCQkyODAxIENvaG8gU3RyZWV0Ci0JCQkJU3VpdGUgMTAwCi0JCQkJTWFkaXNvbiBXSSA1MzcxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNTAtMjItNjcgICAoaGV4KQkJUGl4ZUxJTksKLTUwMjI2NyAgICAgKGJhc2UgMTYpCQlQaXhlTElOSwotCQkJCTMwMzAgQ29ucm95IFJvYWQKLQkJCQlPdHRhd2EgT250YXJpbyBLMUcgNkMyCi0JCQkJQ0FOQURBCi0KLTUwLTI1LTJCICAgKGhleCkJCU5ldGhyYSBJbWFnaW5nIEluY29ycG9yYXRlZAotNTAyNTJCICAgICAoYmFzZSAxNikJCU5ldGhyYSBJbWFnaW5nIEluY29ycG9yYXRlZAotCQkJCTI4NTUgQm93ZXJzIEF2ZQotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC0yNi05MCAgIChoZXgpCQlGdWppdHN1IExpbWl0ZWQKLTUwMjY5MCAgICAgKGJhc2UgMTYpCQlGdWppdHN1IExpbWl0ZWQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiwKLQkJCQk0MDMsIEtvc3VnaS1jaG8gMS1jaG9tZSwgTmFrYWhhcmEta3UKLQkJCQlLYXdhc2FraSBLYW5hZ2F3YSAyMTEtMDA2MwotCQkJCUpBUEFOCi0KLTUwLTJBLTdFICAgKGhleCkJCVNtYXJ0IGVsZWN0cm9uaWMgR21iSAotNTAyQTdFICAgICAoYmFzZSAxNikJCVNtYXJ0IGVsZWN0cm9uaWMgR21iSAotCQkJCUluZHVzdHJpZSBTdHIuIDI5Ci0JCQkJU3QuIEdlb3JnZW4gIDc4MTEyCi0JCQkJR0VSTUFOWQotCi01MC0yQS04QiAgIChoZXgpCQlUZWxla29tIFJlc2VhcmNoIGFuZCBEZXZlbG9wbWVudCBTZG4gQmhkCi01MDJBOEIgICAgIChiYXNlIDE2KQkJVGVsZWtvbSBSZXNlYXJjaCBhbmQgRGV2ZWxvcG1lbnQgU2RuIEJoZAotCQkJCVRNUk5EIElubm92YXRpb24gQ2VudHJlCi0JCQkJTGluZ2thcmFuIFRla25va3JhdCBUaW11cgotCQkJCUN5YmVyamF5YSBTZWxhbmdvciA2MzAwMAotCQkJCU1BTEFZU0lBCi0KLTUwLTJELTFEICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi01MDJEMUQgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSBPdSA5MDIzMAotCQkJCUZJTkxBTkQKLQotNTAtMkQtQTIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi01MDJEQTIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi01MC0yRC1GNCAgIChoZXgpCQlQaHl0ZWMgTWVzc3RlY2huaWsgR21iSAotNTAyREY0ICAgICAoYmFzZSAxNikJCVBoeXRlYyBNZXNzdGVjaG5payBHbWJICi0JCQkJUm9iZXJ0LUtvY2gtU3RyYcODxbhlIDM5IAotCQkJCU1haW56IFJoZWlubGFuZC1QZmFseiA1NTEyOQotCQkJCUdFUk1BTlkKLQotNTAtMkUtQ0UgICAoaGV4KQkJQXNhaGkgRWxlY3Ryb25pY3MgQ28uLEx0ZAotNTAyRUNFICAgICAoYmFzZSAxNikJCUFzYWhpIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkyOS0yNSBLYXJpeWFkbwotCQkJCUthd2FzYWtpLXNoaSwgTmFrYWhhcmEta3UKLQkJCQlLYW5hZ2F3YS1rZW4gMjExLTAwMjIKLQkJCQlKQVBBTgotCi01MC0zRC1FNSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi01MDNERTUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC00OC1FQiAgIChoZXgpCQlCRUlKSU5HIEhBSUhFSklOU0hFTkcgTkVUV09SSyBURUNITk9MT0dZIENPLiBMVEQuCi01MDQ4RUIgICAgIChiYXNlIDE2KQkJQkVJSklORyBIQUlIRUpJTlNIRU5HIE5FVFdPUksgVEVDSE5PTE9HWSBDTy4gTFRELgotCQkJCVJNIDcwMSBVbml0IDIgSHVpcm9uZyBCbGRnLiBOby4xMDYgTGlhbmh1YWNoaSBFYXN0IFJELiBYdWFud3UgRGlzdC4gQmVpamluZwotCQkJCUJFSUpJTkcgQ0hJTkEgMTAwMDU1Ci0JCQkJQ0hJTkEKLQotNTAtNEEtNUUgICAoaGV4KQkJTWFzaW1vIENvcnBvcmF0aW9uCi01MDRBNUUgICAgIChiYXNlIDE2KQkJTWFzaW1vIENvcnBvcmF0aW9uCi0JCQkJNDAgUGFya2VyCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTUwLTU2LTYzICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi01MDU2NjMgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTUwLTU3LUE4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTUwNTdBOCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC02MC0yOCAgIChoZXgpCQlYaXJydXMgSW5jLgotNTA2MDI4ICAgICAoYmFzZSAxNikJCVhpcnJ1cyBJbmMuCi0JCQkJMjEwMSBDT1JQT1JBVEUgQ0VOVEVSIERSCi0JCQkJVGhvdXNhbmQgT2FrcyBDQUxJRk9STklBIDkxMzIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC02My0xMyAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotNTA2MzEzICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMwotCQkJCUNISU5BCi0KLTUwLTY0LTQxICAgKGhleCkJCUdyZWVubGVlCi01MDY0NDEgICAgIChiYXNlIDE2KQkJR3JlZW5sZWUKLQkJCQkyMTkgUyBNYWluIFN0IAotCQkJCURhbGxhcyBUWCA3NjEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTAtNjctRjAgICAoaGV4KQkJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLTUwNjdGMCAgICAgKGJhc2UgMTYpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotCQkJCU5vLjYgSW5ub3ZhdGlvbiBSb2FkIElJLAotCQkJCVNjaWVuY2UgUGFyaywKLQkJCQlIc2luLUNodSwgICAyMjA5OTUwNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNTAtNkYtOUEgICAoaGV4KQkJV2ktRmkgQWxsaWFuY2UKLTUwNkY5QSAgICAgKGJhc2UgMTYpCQlXaS1GaSBBbGxpYW5jZQotCQkJCTM5MjUgVy4gQnJha2VyIExhbmUKLQkJCQlBdXN0aW4gVFggNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTUwLTcwLUU1ICAgKGhleCkJCUhlIFNoYW4gV29ybGQgRmFpciBFbGVjdHJvbmljcyBUZWNobm9sb2d5IExpbWl0ZWQKLTUwNzBFNSAgICAgKGJhc2UgMTYpCQlIZSBTaGFuIFdvcmxkIEZhaXIgRWxlY3Ryb25pY3MgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJTmV3IE1hdGVyaWFsIEJhc2UsIEdvbmdoZSBUb3duCi0JCQkJSGVzaGFuIENpdHkKLQkJCQlKaWFuZ21lbiBHdWFuZ2RvbmcgNTI5NzI4Ci0JCQkJQ0hJTkEKLQotNTAtNzYtQTYgICAoaGV4KQkJRWNpbCBJbmZvcm1hdGljYSBJbmQuIENvbS4gTHRkYQotNTA3NkE2ICAgICAoYmFzZSAxNikJCUVjaWwgSW5mb3JtYXRpY2EgSW5kLiBDb20uIEx0ZGEKLQkJCQlBdi4gQXJhZ3VhY2VtYSwgMzg4Ci0JCQkJQmFydWVyaSBTYW8gUGF1bG8gMDY0NjAtMDcwCi0JCQkJQlJBWklMCi0KLTUwLTc5LTVCICAgKGhleCkJCUludGVyZXhwb3J0IFRlbGVjb211bmljYWNpb25lcyBTLkEuCi01MDc5NUIgICAgIChiYXNlIDE2KQkJSW50ZXJleHBvcnQgVGVsZWNvbXVuaWNhY2lvbmVzIFMuQS4KLQkJCQlDZXJybyBDb2xvcmFkbyA1MjQwIHBpc28gMTQKLQkJCQlTYW50aWFnbyBSZWdpb24gTWV0cm9wb2xpdGFuYSA4MzIwMDAwCi0JCQkJQ0hJTEUKLQotNTAtN0QtMDIgICAoaGV4KQkJQklPRElUCi01MDdEMDIgICAgIChiYXNlIDE2KQkJQklPRElUCi0JCQkJQ2FsbGUgR3VzdGF2ZSBFaWZmZWwgMwotCQkJCVBhcnF1ZSBUZWNub2xvZ2ljbwotCQkJCVBhdGVybmEgVmFsZW5jaWEgNDY5ODAKLQkJCQlTUEFJTgotCi01MC04Ny1COCAgIChoZXgpCQlOdXZ5eW8gSW5jCi01MDg3QjggICAgIChiYXNlIDE2KQkJTnV2eXlvIEluYwotCQkJCTEgU215dGhlIFJkCi0JCQkJU3VpdGUgMQotCQkJCUNhcmxldG9uIFBsYWNlIE9udGFyaW8gSzdDNEo0Ci0JCQkJQ0FOQURBCi0KLTUwLThBLTQyICAgKGhleCkJCVVwdG1hdGUgVGVjaG5vbG9neSBDby4sIExURAotNTA4QTQyICAgICAoYmFzZSAxNikJCVVwdG1hdGUgVGVjaG5vbG9neSBDby4sIExURAotCQkJCTZGLiwgTm8uNSwgSmlhbiAxc3QgUmQuLFpob25naGUgRGlzdC4sIAotCQkJCU5ldyBUYWlwZWkgQ2l0eSAgMjM1NTgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTUwLThBLUNCICAgKGhleCkJCVNIRU5aSEVOIE1BWE1BREUgVEVDSE5PTE9HWSBDTy4sIExURC4KLTUwOEFDQiAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBNQVhNQURFIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJQnVpbGRpbmcgMyxOby41IEZ1cWlhbyBJbmR1c3RyaWFsIEVzdGF0ZSwKLQkJCQlRaWFvdG91LEZ1eW9uZyxCYW9hbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi01MC04Qy03NyAgIChoZXgpCQlESVJNRUlFUiBTY2hhbmt0ZWNobmlrIEdtYkggJkNvIEtHCi01MDhDNzcgICAgIChiYXNlIDE2KQkJRElSTUVJRVIgU2NoYW5rdGVjaG5payBHbWJIICZDbyBLRwotCQkJCUFsZm9ucy1Hb3BwZWwtU3RyYWJlIDUKLQkJCQk5MjUyNiBPYmVydmllY2h0YWNoICAKLQkJCQlHRVJNQU5ZCi0KLTUwLTkzLTRGICAgKGhleCkJCUdyYWR1YWwgVGVjbm9sb2dpYSBMdGRhLgotNTA5MzRGICAgICAoYmFzZSAxNikJCUdyYWR1YWwgVGVjbm9sb2dpYSBMdGRhLgotCQkJCVJvZC4gQWxraW5kYXIgTS4gSnVucXVlaXJhLCBLbSAzNCwyCi0JCQkJQ2FpeGEgUG9zdGFsIDEwOAotCQkJCUJyYWdhbudhIFBhdWxpc3RhIFPjbyBQYXVsbyAxMjkxNC05NzAKLQkJCQlCUkFaSUwKLQotNTAtOTctNzIgICAoaGV4KQkJV2VzdGluZ2hvdXNlIERpZ2l0YWwKLTUwOTc3MiAgICAgKGJhc2UgMTYpCQlXZXN0aW5naG91c2UgRGlnaXRhbAotCQkJCTUwMCBOLiBTdGF0ZSBDb2xsZWdlIEJsdmQuCi0JCQkJU3VpdGUgMTMwMAotCQkJCU9yYW5nZSBDQSA5Mjg2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTAtQTYtRTMgICAoaGV4KQkJRGF2aWQgQ2xhcmsgQ29tcGFueQotNTBBNkUzICAgICAoYmFzZSAxNikJCURhdmlkIENsYXJrIENvbXBhbnkKLQkJCQkzNjAgRnJhbmtsaW4gU3QuCi0JCQkJV29yY2VzdGVyIE1BIDAxNjE1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC1BNy0zMyAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLTUwQTczMyAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUKLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTUwLUFGLTczICAgKGhleCkJCVNoZW56aGVuIEJpdGxhbmQgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTUwQUY3MyAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBCaXRsYW5kIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMS00Riw0NCBCdWlsZGluZyxUYW5nbGFuZyBJbmR1c3RyaWFsIFBhcmsgYW5kIDEtNkYsIzcgQnVpbGRpbmcsWGlMaSBUb25nZnV5dSBJbmR1c3RyaWFsIFRvd24sTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTUKLQkJCQlDSElOQQotCi01MC1DNS04RCAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi01MEM1OEQgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkgCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC1DOS03MSAgIChoZXgpCQlHTiBOZXRjb20gQS9TCi01MEM5NzEgICAgIChiYXNlIDE2KQkJR04gTmV0Y29tIEEvUwotCQkJCUxhdXRydXBiamVyZyA3Ci0JCQkJUC5PLiBCb3ggOTkKLQkJCQlCYWxsZXJ1cCAgREstMjc1MAotCQkJCURFTk1BUksKLQotNTAtQ0MtRjggICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvIE1lY2hhbmljcwotNTBDQ0Y4ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3RybyBNZWNoYW5pY3MKLQkJCQlNZXRhbiBEb25nIDMxNCwgWW91bmd0b25nIEd1Ci0JCQkJU3V3b24gS3l1bmctZ2kgRG8uIDQ0My03NDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNTAtQ0UtNzUgICAoaGV4KQkJTWVhc3kgRWxlY3Ryb25pY3MgTHRkCi01MENFNzUgICAgIChiYXNlIDE2KQkJTWVhc3kgRWxlY3Ryb25pY3MgTHRkCi0JCQkJIzE1MDYsIEJsb2NrIEIsIEhhaSBTb25nIEJsZGcsIFRhaXJhbiA5dGggUm9hZAotCQkJCUNoZSBHb25nIE1pYW8sIEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgIDUxODA0MAotCQkJCUNISU5BCi0KLTUwLUQyLTc0ICAgKGhleCkJCVN0ZWZmZXMgQ29ycG9yYXRpb24KLTUwRDI3NCAgICAgKGJhc2UgMTYpCQlTdGVmZmVzIENvcnBvcmF0aW9uCi0JCQkJMzA1MCBIaWdod2F5IDIyIE5vcnRoCi0JCQkJRGlja2luc29uIE5EIDU4NjAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC1ENi1ENyAgIChoZXgpCQlUYWthaGF0YSBQcmVjaXNpb24KLTUwRDZENyAgICAgKGJhc2UgMTYpCQlUYWthaGF0YSBQcmVjaXNpb24KLQkJCQk0LTE3LTEgU3VuaXlvc2hpCi0JCQkJS29mdSBTaGkgWWFtYW5hc2hpIDQwMC0wODUxCi0JCQkJSkFQQU4KLQotNTAtRTUtNDkgICAoaGV4KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLTUwRTU0OSAgICAgKGJhc2UgMTYpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCU5vLjIxNSxOYW4tUGluZyBSb2FkLAotCQkJCVBpbi1KZW4gQ2l0eSwgIFRhb3l1YW4gMzI0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi01MC1FQS1ENiAgIChoZXgpCQlBcHBsZSwgSW5jLgotNTBFQUQ2ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBpbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01MC1FQi0xQSAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYwotNTBFQjFBICAgICAoYmFzZSAxNikJCUJyb2NhZGUgQ29tbXVuaWNhdGlvbnMgU3lzdGVtcywgSW5jCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTUwLUVELTk0ICAgKGhleCkJCUVnYXRlbCBTTAotNTBFRDk0ICAgICAoYmFzZSAxNikJCUVnYXRlbCBTTAotCQkJCVBhcnF1ZSBUZWNub2xvZ2ljbyBkZSBHYWxpY2lhCi0JCQkJRWRpZmljaW8gRWdhdGVsLCBhZHYuIE91cmVuc2UsIG7vv70gMQotCQkJCU91cmVuc2UgIDMyOTAxCi0JCQkJU1BBSU4KLQotNTAtRjAtMDMgICAoaGV4KQkJT3BlbiBTdGFjaywgSW5jLgotNTBGMDAzICAgICAoYmFzZSAxNikJCU9wZW4gU3RhY2ssIEluYy4KLQkJCQlBZHZhbmNlZCBSZXNlYXJjaCBDZW50ZXIgIzQxMQotCQkJCVlhLVRhcCA2OAotCQkJCUJ1bi1EYW5nLCBTZW9uZy1OYW0gR3l1bmctR2kgNDYzLTgxNgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi01MC1GNi0xQSAgIChoZXgpCQlLdW5zaGFuIEpBREUgVGVjaG5vbG9naWVzIGNvLiwgTHRkLgotNTBGNjFBICAgICAoYmFzZSAxNikJCUt1bnNoYW4gSkFERSBUZWNobm9sb2dpZXMgY28uLCBMdGQuCi0JCQkJMTJ0aCBGbG9vciwgU291dGhlcm4gQnVpbGRpbmcsIFB1ZG9uZyBTb2Z0d2FyZSBQYXJrLDgyOCBYdWV5dWFuIFJvYWQsIEJhY2hlbmcgVG93biAKLQkJCQlLdW5zaGFuIEppYW5nc3UgMjE1MzExCi0JCQkJQ0hJTkEKLQotNTAtRkEtQUIgICAoaGV4KQkJTC10ZWsgZC5vLm8uCi01MEZBQUIgICAgIChiYXNlIDE2KQkJTC10ZWsgZC5vLm8uCi0JCQkJT2JydG5hIGNlc3RhIDE4Ci0JCQkJU2VudGplcm5laiAgODMxMAotCQkJCVNMT1ZFTklBCi0KLTUwLUZDLTMwICAgKGhleCkJCVRyZWVob3VzZSBMYWJzCi01MEZDMzAgICAgIChiYXNlIDE2KQkJVHJlZWhvdXNlIExhYnMKLQkJCQk2MDEgR3JlYXQgT2FrcyBEci4KLQkJCQlTdGUuIEItMTAzCi0JCQkJUm91bmQgUm9jayBUWCA3ODY4MQotCQkJCVVOSVRFRCBTVEFURVMKLQotNTQtMDMtRjUgICAoaGV4KQkJRUJOIFRlY2hub2xvZ3kgQ29ycC4KLTU0MDNGNSAgICAgKGJhc2UgMTYpCQlFQk4gVGVjaG5vbG9neSBDb3JwLgotCQkJCTEwRiwgTm8uOTAsIFNlYy4gMSwgU2ludGFpIDV0aCBSZC4KLQkJCQlTaWpoaWggQ2l0eSBUYWlwZWkgQ291bnR5IDIyMTAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi01NC0wNC05NiAgIChoZXgpCQlHaWdhd2F2ZSBMVEQKLTU0MDQ5NiAgICAgKGJhc2UgMTYpCQlHaWdhd2F2ZSBMVEQKLQkJCQlHSUdBV0FWRSBURUNITklDQUwgQ0VOVFJFCi0JCQkJRWFybHMgQ29sbmUgQnVzaW5lc3MgUGFyawotCQkJCUNvbGNoZXN0ZXIgRVNTRVggQ082Mk5TCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNTQtMDQtQTYgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi01NDA0QTYgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLCBQZWl0b3UsIAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi01NC0wNS01RiAgIChoZXgpCQlBbGNhdGVsIEx1Y2VudAotNTQwNTVGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTHVjZW50Ci0JCQkJVmlhIFRyZW50bywgMzAKLQkJCQlWaW1lcmNhdGUgTUIgMjAwNTkKLQkJCQlJVEFMWQotCi01NC0xRC1GQiAgIChoZXgpCQlGcmVlc3R5bGUgRW5lcmd5IEx0ZAotNTQxREZCICAgICAoYmFzZSAxNikJCUZyZWVzdHlsZSBFbmVyZ3kgTHRkCi0JCQkJMTgtMjQgUmlja2V0dHMgUm9hZAotCQkJCU1vdW50IFdhdmVybGV5IFZpY3RvcmlhIDMxNDkKLQkJCQlBVVNUUkFMSUEKLQotNTQtMjAtMTggICAoaGV4KQkJVGVseSBMYWJzCi01NDIwMTggICAgIChiYXNlIDE2KQkJVGVseSBMYWJzCi0JCQkJNTQ1IE1pZGRsZWZpZWxkIFJvYWQKLQkJCQlTdWl0ZSAxNjUKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01NC0yQS05QyAgIChoZXgpCQlMU1kgRGVmZW5zZSwgTExDLgotNTQyQTlDICAgICAoYmFzZSAxNikJCUxTWSBEZWZlbnNlLCBMTEMuCi0JCQkJNDE3NSBXZXN0cG9ydCBSZC4KLQkJCQlTVEUgMjA0Ci0JCQkJTG91aXN2aWxsZSBLZW50dWNreSA0MDIwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotNTQtMzEtMzEgICAoaGV4KQkJUmFzdGVyIFZpc2lvbiBMdGQKLTU0MzEzMSAgICAgKGJhc2UgMTYpCQlSYXN0ZXIgVmlzaW9uIEx0ZAotCQkJCVVuaXQgMSwgQ3J1bmRhbGxzCi0JCQkJR2VkZ2VzIEhpbGwsIE1hdGZpZWxkCi0JCQkJVG9uYnJpZGdlICBLZW50IFROMTIgN0VBCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNTQtMzUtREYgICAoaGV4KQkJU3ltZW8gR21iSAotNTQzNURGICAgICAoYmFzZSAxNikJCVN5bWVvIEdtYkgKLQkJCQlQcm9mLi1NZXNzZXJzY2htaXR0LVN0ci4gMwotCQkJCU5ldWJpYmVyZyBCYXZhcmlhIDg1NTc5Ci0JCQkJR0VSTUFOWQotCi01NC0zOS02OCAgIChoZXgpCQlFZGdld2F0ZXIgTmV0d29ya3MgSW5jCi01NDM5NjggICAgIChiYXNlIDE2KQkJRWRnZXdhdGVyIE5ldHdvcmtzIEluYwotCQkJCTI4OTUgTm9ydGh3ZXN0ZXJuIFBhcmt3YXkKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotNTQtNDItNDkgICAoaGV4KQkJU29ueSBDb3Jwb3JhdGlvbgotNTQ0MjQ5ICAgICAoYmFzZSAxNikJCVNvbnkgQ29ycG9yYXRpb24KLQkJCQlHb3RlbnlhbWEgVGVjLgotCQkJCTUtMS0xMiBLaXRhc2hpbmFnYXdhIFNoaW5hZ2F3YS1rdQotCQkJCVRva3lvICAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLTU0LTQ2LTZCICAgKGhleCkJCVNoZW56aGVuIENaVElDIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBDby4sIEx0ZCAgCi01NDQ2NkIgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQ1pUSUMgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLiwgTHRkICAKLQkJCQlYaW5naGUgQnVpbGRpbmcsIFpob25neGluIFJvYWQsIFNoYWppbmcgVG93biwgQmFvYW4KLQkJCQlTSEVOWkhFTiBHVUFOR0RPTkcgNTE4MTA0Ci0JCQkJQ0hJTkEKLQotNTQtNEEtMDUgICAoaGV4KQkJd2VuZ2xvciBzZW5zb3JpYyBnbWJoCi01NDRBMDUgICAgIChiYXNlIDE2KQkJd2VuZ2xvciBzZW5zb3JpYyBnbWJoCi0JCQkJd2VuZ2xvciBTdHIuIDMKLQkJCQlUZXR0bmFuZyAgODgwNjkKLQkJCQlHRVJNQU5ZCi0KLTU0LTUzLUVEICAgKGhleCkJCVNvbnkgQ29ycG9yYXRpb24KLTU0NTNFRCAgICAgKGJhc2UgMTYpCQlTb255IENvcnBvcmF0aW9uCi0JCQkJR290ZW55YW1hIFRlYy4KLQkJCQk1LTEtMTIgS2l0YXNoaW5hZ2F3YSBTaGluYWdhd2Eta3UKLQkJCQlUb2t5byAgMTQxLTAwMDEKLQkJCQlKQVBBTgotCi01NC01RS1CRCAgIChoZXgpCQlOTCBUZWNobm9sb2dpZXMKLTU0NUVCRCAgICAgKGJhc2UgMTYpCQlOTCBUZWNobm9sb2dpZXMKLQkJCQkzMyBMYWlyZCBEcml2ZQotCQkJCVRvcm9udG8gT04gTTRHM1M4Ci0JCQkJQ0FOQURBCi0KLTU0LTVGLUE5ICAgKGhleCkJCVRlcmFjb20gTGltaXRlZAotNTQ1RkE5ICAgICAoYmFzZSAxNikJCVRlcmFjb20gTGltaXRlZAotCQkJCUItODQsIFNlY3RvciAtIDYwLAotCQkJCU5vaWRhIFV0dGFyIFByYWRlc2ggMjAxIDMwMQotCQkJCUlORElBCi0KLTU0LTc1LUQwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTU0NzVEMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU0LTdGLTU0ICAgKGhleCkJCUlOR0VOSUNPCi01NDdGNTQgICAgIChiYXNlIDE2KQkJSU5HRU5JQ08KLQkJCQkxIHJ1ZSBDbGF1ZGUgQ2hhcHBlLCBCUCAzNDYKLQkJCQlHdWlsaGVyYW5kLUdyYW5nZXMgRFJPTUUgMDc1MDMKLQkJCQlGUkFOQ0UKLQotNTQtN0YtRUUgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNTQ3RkVFICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTQtODQtN0IgICAoaGV4KQkJRGlnaXRhbCBEZXZpY2VzIEdtYkgKLTU0ODQ3QiAgICAgKGJhc2UgMTYpCQlEaWdpdGFsIERldmljZXMgR21iSAotCQkJCU1vZXdlc3RyIDQ1IEEKLQkJCQlNdWVuY2hlbiAgODE4MjcKLQkJCQlHRVJNQU5ZCi0KLTU0LTg5LTIyICAgKGhleCkJCVplbGZ5IEluYwotNTQ4OTIyICAgICAoYmFzZSAxNikJCVplbGZ5IEluYwotCQkJCTQ2NTUgT2xkIElyb25zaWRlcyBEciwgU3VpdGUjMjAwCi0JCQkJU2FudGEgQ2xhcmEgQ2EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU0LTg5LTk4ICAgKGhleCkJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotNTQ4OTk4ICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCUIxLTcsSHVhd2VpIEluZHVzdHJpYWwgQmFzZSxCYW50aWFuLExvbmdnYW5nCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTU0LTkyLUJFICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotNTQ5MkJFICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi01NC05NC03OCAgIChoZXgpCQlTaWx2ZXJzaG9yZSBUZWNobm9sb2d5IFBhcnRuZXJzCi01NDk0NzggICAgIChiYXNlIDE2KQkJU2lsdmVyc2hvcmUgVGVjaG5vbG9neSBQYXJ0bmVycwotCQkJCTgwMCBIaWdoIFN0cmVldAotCQkJCVN1aXRlIDEwMQotCQkJCVBhbG8gQWx0byBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNTQtOUEtMTYgICAoaGV4KQkJVXp1c2hpbyBFbGVjdHJpYyBDby4sTHRkLgotNTQ5QTE2ICAgICAoYmFzZSAxNikJCVV6dXNoaW8gRWxlY3RyaWMgQ28uLEx0ZC4KLQkJCQkxNTIwIEt1bwotCQkJCU9uaXNoaS1jaG8KLQkJCQlJbWFiYXJpLWNpdHkgRWhpbWUgcHJlZi4gNzk5MjI5NAotCQkJCUpBUEFOCi0KLTU0LTlCLTEyICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLTU0OUIxMiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTU0LTlELTg1ICAgKGhleCkJCUVuZXJBY2Nlc3MgaW5jCi01NDlEODUgICAgIChiYXNlIDE2KQkJRW5lckFjY2VzcyBpbmMKLQkJCQkzMTU0IExlIENvcmJ1c2llciBCbHZkCi0JCQkJTGF2YWwgUXVlYmVjIEg3TCA0UzgKLQkJCQlDQU5BREEKLQotNTQtQTUtMUIgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotNTRBNTFCICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi01NC1BOS1ENCAgIChoZXgpCQlNaW5pYmFyIFN5c3RlbXMKLTU0QTlENCAgICAgKGJhc2UgMTYpCQlNaW5pYmFyIFN5c3RlbXMKLQkJCQk3MzQwIFdlc3Rtb3JlIFJvYWQKLQkJCQlSb2NrdmlsbGUgTUQgMjA4NTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU0LUI2LTIwICAgKGhleCkJCVNVSERPTCBFJkMgQ28uTHRkLgotNTRCNjIwICAgICAoYmFzZSAxNikJCVNVSERPTCBFJkMgQ28uTHRkLgotCQkJCTkyMCwgSWxzYW4gVGVjaG5vVG93biAxMTQxLTEsIEJhZWtzZW9rLWRvbmcsIElsc2FuZG9uZy1ndQotCQkJCUdveWFuZy1zaSBHeXVuZ2dpLWRvIDQxMC03MjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNTQtQ0QtQTcgICAoaGV4KQkJRnVqaWFuIFNoZW56aG91IEVsZWN0cm9uaWMgQ28uLEx0ZAotNTRDREE3ICAgICAoYmFzZSAxNikJCUZ1amlhbiBTaGVuemhvdSBFbGVjdHJvbmljIENvLixMdGQKLQkJCQlRdWFuemhvdSBFY29ub21pY2FsJlRlY2hub2xvZ2ljYWwgRGV2ZWxvcG1lbnQgWm9uZSwKLQkJCQlRVUFOWkhPVSBGVUpJQU4gMzYyMDA1Ci0JCQkJQ0hJTkEKLQotNTQtRDAtRUQgICAoaGV4KQkJQVhJTSBDb21tdW5pY2F0aW9ucwotNTREMEVEICAgICAoYmFzZSAxNikJCUFYSU0gQ29tbXVuaWNhdGlvbnMKLQkJCQkxRi4sIE5vLiA1LCBBbHkuIDEyLCBMbi4gMTUsIFNlYy4gNiwgU2lueWkgUmQuLCBTaW55aSBEaXN0LiwKLQkJCQlUYWlwZWkgIDExMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNTQtRDEtQjAgICAoaGV4KQkJVW5pdmVyc2FsIExhc2VyIFN5c3RlbXMsIEluYwotNTREMUIwICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBMYXNlciBTeXN0ZW1zLCBJbmMKLQkJCQkxNjAwOCBOIDgxc3Qgc3RyZWV0Ci0JCQkJc2NvdHRzZGFsZSBheiA4NTI2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTQtRDQtNkYgICAoaGV4KQkJQ2lzY28gU1BWVEcKLTU0RDQ2RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01NC1FNi0zRiAgIChoZXgpCQlTaGVuWmhlbiBMaW5nS2VXZWlFciBUZWNobm9sb2d5IENvLiwgTHRkLgotNTRFNjNGICAgICAoYmFzZSAxNikJCVNoZW5aaGVuIExpbmdLZVdlaUVyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJUm9vbSA2MjUsIFlpSmluZyBCdWlsZGluZywgTWVpTGluIFJkLiwgRnVUaWFuIERpc3RyaWN0Ci0JCQkJU2hlblpoZW4gR3VhbmREb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTU0LUU2LUZDICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotNTRFNkZDICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCTEtNkYsIEJ1aWxkaW5nIDIsIFBpbmdzaGFuZGF5dWFuIEluZHVzdHJpYWwsIFNvdXRoIFpvbmUsCi0JCQkJVGFveXVhbiBTdHJlZXQsIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi01NC1GNS1CNiAgIChoZXgpCQlPUklFTlRBTCBQQUNJRklDIElOVEVSTkFUSU9OQUwgTElNSVRFRAotNTRGNUI2ICAgICAoYmFzZSAxNikJCU9SSUVOVEFMIFBBQ0lGSUMgSU5URVJOQVRJT05BTCBMSU1JVEVECi0JCQkJNSBBUkdVUyBQTEFDRQotCQkJCUhJTExDUkVTVAotCQkJCU5PUlRIIFNIT1JFIENJVFkgQVVDS0xBTkQgMDYyNwotCQkJCU5FVyBaRUFMQU5ECi0KLTU0LUZELUJGICAgKGhleCkJCVNjaGVpZHQgJiBCYWNobWFubiBHbWJICi01NEZEQkYgICAgIChiYXNlIDE2KQkJU2NoZWlkdCAmIEJhY2htYW5uIEdtYkgKLQkJCQlCcmVpdGUgU3RyYXNzZSAxMzIKLQkJCQlNb2VuY2hlbmdsYWRiYWNoIE5SVyA0MTIzOAotCQkJCUdFUk1BTlkKLQotNTgtMDUtNTYgICAoaGV4KQkJRWxldHRyb25pY2EgR0YgUy5yLkwuCi01ODA1NTYgICAgIChiYXNlIDE2KQkJRWxldHRyb25pY2EgR0YgUy5yLkwuCi0JCQkJVmlhIFZpdHRvcmksIDYzCi0JCQkJRkFFTlpBIFJBIDQ4MDE4Ci0JCQkJSVRBTFkKLQotNTgtMDgtRkEgICAoaGV4KQkJRmliZXIgT3B0aWMgJmFtcDsgdGVsZWNvbW11bmljYXRpb24gSU5DLgotNTgwOEZBICAgICAoYmFzZSAxNikJCUZpYmVyIE9wdGljICZhbXA7IHRlbGVjb21tdW5pY2F0aW9uIElOQy4KLQkJCQkxNjEtNCBLdW1qZW9uZy1Eb25nLCAKLQkJCQlLdW5wby1jaXR5IEd5ZW9uZ2dpLURvIDQzNS04MjQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNTgtMTItNDMgICAoaGV4KQkJQWNTaVAgVGVjaG5vbG9neSBDb3JwLgotNTgxMjQzICAgICAoYmFzZSAxNikJCUFjU2lQIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkzRi4sIE5vLjIyLCBEYWxpbiBSZC4sCi0JCQkJVGFveXVhbiBUYW95dWFuIENvdW50eSAzMzA2NwotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotNTgtMTYtMjYgICAoaGV4KQkJQXZheWEsIEluYwotNTgxNjI2ICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMC0yMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC0xNy0wQyAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotNTgxNzBDICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLTU4LTFELTkxICAgKGhleCkJCUFkdmFuY2VkIE1vYmlsZSBUZWxlY29tIGNvLixsdGQuCi01ODFEOTEgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgTW9iaWxlIFRlbGVjb20gY28uLGx0ZC4KLQkJCQkjNjA4LCBZYXRhcCBMZWFkZXJzIEJsZGcuIDM0Mi0xCi0JCQkJWWF0YXAtZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04MjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNTgtMUYtQUEgICAoaGV4KQkJQXBwbGUsIEluYy4KLTU4MUZBQSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtMUYtRUYgICAoaGV4KQkJVHV0dG5hZXIgTFRECi01ODFGRUYgICAgIChiYXNlIDE2KQkJVHV0dG5hZXIgTFRECi0JCQkJSGFyLVR1diBCCi0JCQkJQmVpdGggU2hlbWVzaCAgOTkwMDAKLQkJCQlJU1JBRUwKLQotNTgtMkUtRkUgICAoaGV4KQkJTGlnaHRpbmcgU2NpZW5jZSBHcm91cAotNTgyRUZFICAgICAoYmFzZSAxNikJCUxpZ2h0aW5nIFNjaWVuY2UgR3JvdXAKLQkJCQkxMjI3IFNvdXRoIFBhdHJpY2sgRHJpdmUKLQkJCQlTYXRlbGxpdGUgQmVhY2ggRkwgMzI5MzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LTJGLTQyICAgKGhleCkJCVVuaXZlcnNhbCBFbGVjdHJpYyBDb3Jwb3JhdGlvbgotNTgyRjQyICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBFbGVjdHJpYyBDb3Jwb3JhdGlvbgotCQkJCTE2OCBHZW9yZ2V0b3duIFJvYWQKLQkJCQlDYW5vbnNidXJnIFBBIDE1MzE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC0zNC0zQiAgIChoZXgpCQlHbG92YXN0IFRlY2hub2xvZ3kgTHRkLgotNTgzNDNCICAgICAoYmFzZSAxNikJCUdsb3Zhc3QgVGVjaG5vbG9neSBMdGQuCi0JCQkJNkYuLCBOby4yMywgSmlhbkthbmcgUmQuLCBTb25nU2hhbiBEaXN0LiwKLQkJCQlUYWlwZWkgIDEwNQotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotNTgtMzUtRDkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNTgzNUQ5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LTNDLUM2ICAgKGhleCkJCU9tbmVhbGl0eSBMdGQuCi01ODNDQzYgICAgIChiYXNlIDE2KQkJT21uZWFsaXR5IEx0ZC4KLQkJCQk3IEdyb3ZlIEhvdXNlLCBGaXJzZ3JvdmUgQ3Jlc2NlbnQKLQkJCQlXYXJsZXkKLQkJCQlCcmVudHdvb2QgRXNzZXggQ00xNCA1SlMKLQkJCQlVTklURUQgS0lOR0RPTQotCi01OC00Mi1FNCAgIChoZXgpCQlTaWdtYSBJbnRlcm5hdGlvbmFsIEdlbmVyYWwgTWVkaWNhbCBBcHBhcmF0dXMsIExMQy4KLTU4NDJFNCAgICAgKGJhc2UgMTYpCQlTaWdtYSBJbnRlcm5hdGlvbmFsIEdlbmVyYWwgTWVkaWNhbCBBcHBhcmF0dXMsIExMQy4KLQkJCQk3MTEgUGFyayBBdmVudWUKLQkJCQlNZWRpbmEgTlkgMTQxMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LTQ2LUUxICAgKGhleCkJCUJheHRlciBIZWFsdGhjYXJlCi01ODQ2RTEgICAgIChiYXNlIDE2KQkJQmF4dGVyIEhlYWx0aGNhcmUKLQkJCQkyNTIxMiBXLiBJbGxpbm9pcyBSb3V0ZSAxMjAKLQkJCQlSb3VuZCBMYWtlIElMIDYwMDczCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC00OC1DMCAgIChoZXgpCQlDT0ZMRUMKLTU4NDhDMCAgICAgKGJhc2UgMTYpCQlDT0ZMRUMKLQkJCQlQYXJjIGQnYWN0aXZpdO+/vXMgZHUgbW91bGluIGRlIE1hc3N5Ci0JCQkJNyBydWUgZHUgU2F1bGUgVHJhcHUKLQkJCQlNQVNTWSAgOTEzMDAKLQkJCQlGUkFOQ0UKLQotNTgtNDktQkEgICAoaGV4KQkJQ2hpdGFpIEVsZWN0cm9uaWMgQ29ycC4KLTU4NDlCQSAgICAgKGJhc2UgMTYpCQlDaGl0YWkgRWxlY3Ryb25pYyBDb3JwLgotCQkJCTVGLiwgTm8uIDEgTGFuZSAxMjMsIFBhby1DaHVuZyBSZC4sIEhzaW4tVGllbiBDaXR5IAotCQkJCVRhaWVwaSAgMjMxNDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTU4LTRDLTE5ICAgKGhleCkJCUNob25ncWluZyBHdW9ob25nIFRlY2hub2xvZ3kgRGV2ZWxvcG1lbnQgQ29tcGFueSBMaW1pdGVkCi01ODRDMTkgICAgIChiYXNlIDE2KQkJQ2hvbmdxaW5nIEd1b2hvbmcgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBDb21wYW55IExpbWl0ZWQKLQkJCQlSb25nemhpIEJ1aWxkaW5nLCBTY2llbmNlICYgVGVjaG5vbG9neSBWZW50dXJlIENlbnRlciwKLQkJCQlOby44IFl1bWEgUm9hZCwgTmFuJ2FuIERpc3RyaWN0LCAKLQkJCQlDaG9uZ3FpbmcgIDQwMTMzNgotCQkJCUNISU5BCi0KLTU4LTRDLUVFICAgKGhleCkJCURpZ2l0YWwgT25lIFRlY2hub2xvZ2llcywgTGltaXRlZAotNTg0Q0VFICAgICAoYmFzZSAxNikJCURpZ2l0YWwgT25lIFRlY2hub2xvZ2llcywgTGltaXRlZAotCQkJCU5vLjEgU2hhbmdkaSBYaW54aSBSb2FkCi0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTU4LTUwLTc2ICAgKGhleCkJCUxpbmVhciBFcXVpcGFtZW50b3MgRWxldHJvbmljb3MgU0EKLTU4NTA3NiAgICAgKGJhc2UgMTYpCQlMaW5lYXIgRXF1aXBhbWVudG9zIEVsZXRyb25pY29zIFNBCi0JCQkJUHJhY2EgTGluZWFyIDEwMAotCQkJCVNhbnRhIFJpdGEgZG8gU2FwdWNhaSBNRyAzNzU0MDAwMAotCQkJCUJSQVpJTAotCi01OC01MC1FNiAgIChoZXgpCQlCZXN0IEJ1eSBDb3Jwb3JhdGlvbgotNTg1MEU2ICAgICAoYmFzZSAxNikJCUJlc3QgQnV5IENvcnBvcmF0aW9uCi0JCQkJNzYwMSBQZW5uIEF2ZSBTb3V0aAotCQkJCUM3Ci0JCQkJUmljaGZpZWxkIE1OIDU1NDIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC01NS1DQSAgIChoZXgpCQlBcHBsZSwgSW5jLgotNTg1NUNBICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC01Ny0wRCAgIChoZXgpCQlEYW5mb3NzIFNvbGFyIEludmVydGVycwotNTg1NzBEICAgICAoYmFzZSAxNikJCURhbmZvc3MgU29sYXIgSW52ZXJ0ZXJzCi0JCQkJSnlsbGFuZHNnYWRlIDI4Ci0JCQkJU/huZGVyYm9yZyAgREstNjQwMAotCQkJCURFTk1BUksKLQotNTgtNjYtQkEgICAoaGV4KQkJSGFuZ3pob3UgSDNDIFRlY2hub2xvZ2llcyBDby4sIExpbWl0ZWQKLTU4NjZCQSAgICAgKGJhc2UgMTYpCQlIYW5nemhvdSBIM0MgVGVjaG5vbG9naWVzIENvLiwgTGltaXRlZAotCQkJCTMxMCBMaXVoZSBSb2FkLCBaaGlqaWFuZyBTY2llbmNlIFBhcmsKLQkJCQlIYW5nemhvdSBaaGVqaWFuZywgIDMxMDA1MwotCQkJCUNISU5BCi0KLTU4LTY3LTFBICAgKGhleCkJCUJBUk5FUyZOT0JMRS5DT00KLTU4NjcxQSAgICAgKGJhc2UgMTYpCQlCQVJORVMmTk9CTEUuQ09NCi0JCQkJNDAwIEhBTUlMVE9OIEFWRU5VRQotCQkJCVNVSVRFIDEzMAotCQkJCVBBTE8gQUxUTyBDQSA5NDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtNjctN0YgICAoaGV4KQkJQ2xhcmUgQ29udHJvbHMgSW5jLgotNTg2NzdGICAgICAoYmFzZSAxNikJCUNsYXJlIENvbnRyb2xzIEluYy4KLQkJCQk3NTE5IFBlbm5zeWx2YW5pYSBBdmUKLQkJCQlTdWl0ZSAxMDQKLQkJCQlTYXJhc290YSBGTCAzNDI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtNjktNkMgICAoaGV4KQkJRnVqaWFuIFJ1aWplaWUgTmV0d29ya3MgY28sIGx0ZAotNTg2OTZDICAgICAoYmFzZSAxNikJCUZ1amlhbiBSdWlqZWllIE5ldHdvcmtzIGNvLCBsdGQKLQkJCQkxOSMgQnVpbGRpbmcsU3Rhci1uZXQgU2NpZW5jZSBQbGF6YSxKdXl1YW56aG91LCA2MTggSmluc2hhbiBSb2FkIAotCQkJCUZ1emhvdSBGdWppYW4gMzUwMDAyCi0JCQkJQ0hJTkEKLQotNTgtNjktRjkgICAoaGV4KQkJRnVzaW9uIFRyYW5zYWN0aXZlIEx0ZC4KLTU4NjlGOSAgICAgKGJhc2UgMTYpCQlGdXNpb24gVHJhbnNhY3RpdmUgTHRkLgotCQkJCVBPIEJveCA2ODI4MQotCQkJCU5ld3RvbgotCQkJCUF1Y2tsYW5kICAxMTQ1Ci0JCQkJTkVXIFpFQUxBTkQKLQotNTgtNkQtOEYgICAoaGV4KQkJQ2lzY28tTGlua3N5cywgTExDCi01ODZEOEYgICAgIChiYXNlIDE2KQkJQ2lzY28tTGlua3N5cywgTExDCi0JCQkJMTIxIFRoZW9yeSBEcml2ZQotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC02RS1ENiAgIChoZXgpCQlQUklWQVRFCi01ODZFRDYgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLTU4LTc1LTIxICAgKGhleCkJCUNKU0MgUlRTb2Z0Ci01ODc1MjEgICAgIChiYXNlIDE2KQkJQ0pTQyBSVFNvZnQKLQkJCQlOaWtpdGluc2theWEgc3RyLiwgMwotCQkJCU1vc2NvdyAgMTA1MDM3Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTU4LTc2LTc1ICAgKGhleCkJCUJlaWppbmcgRUNITyBUZWNobm9sb2dpZXMgQ28uLEx0ZAotNTg3Njc1ICAgICAoYmFzZSAxNikJCUJlaWppbmcgRUNITyBUZWNobm9sb2dpZXMgQ28uLEx0ZAotCQkJCU5PMSBTdHJlZXQgNCBTaGFuZ2RpICAKLQkJCQlIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaUppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTU4LTdGLUM4ICAgKGhleCkJCVMyTQotNTg3RkM4ICAgICAoYmFzZSAxNikJCVMyTQotCQkJCTIgcnVlIGRlcyBjaGFtcHMKLQkJCQlTYWludCBNYXJjZWwgIDI3OTUwCi0JCQkJRlJBTkNFCi0KLTU4LThELTA5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTU4OEQwOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LTkxLUNGICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotNTg5MUNGICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotNTgtOTItMEQgICAoaGV4KQkJS2luZXRpYyBBdmlvbmljcyBMaW1pdGVkCi01ODkyMEQgICAgIChiYXNlIDE2KQkJS2luZXRpYyBBdmlvbmljcyBMaW1pdGVkCi0JCQkJRWxzdHJlZSBBZXJvZHJvbWUKLQkJCQlIZXJ0Zm9yZHNoaXJlICBXRDYgM0FXCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNTgtOTMtOTYgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi01ODkzOTYgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlCi0JCQkJU3VpdGUgMTAxCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC05NC02QiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTU4OTQ2QiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTU4LTk4LTM1ICAgKGhleCkJCVRlY2huaWNvbG9yCi01ODk4MzUgICAgIChiYXNlIDE2KQkJVGVjaG5pY29sb3IKLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3Ci0JCQkJRWRlZ2VtICAgQi0yNjUwCi0JCQkJQkVMR0lVTQotCi01OC1BNy02RiAgIChoZXgpCQlpRCBjb3Jwb3JhdGlvbgotNThBNzZGICAgICAoYmFzZSAxNikJCWlEIGNvcnBvcmF0aW9uCi0JCQkJZ29yeW9rYWt1IGJsZC4gMkYKLQkJCQk2LTEwIAotCQkJCWhha29kYXRlIGhva2thaWRvIDA0MC0wMDExCi0JCQkJSkFQQU4KLQotNTgtQjAtMzUgICAoaGV4KQkJQXBwbGUsIEluYwotNThCMDM1ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTU4LUIwLUQ0ICAgKGhleCkJCVp1bmlEYXRhIFN5c3RlbXMgSW5jLgotNThCMEQ0ICAgICAoYmFzZSAxNikJCVp1bmlEYXRhIFN5c3RlbXMgSW5jLgotCQkJCTRGLTcsICBOby42NSwgIEdhb3RpYSA3dGggUmQsICBaaHViZWkgQ2l0eQotCQkJCUhzaW5jaHUgIDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNTgtQjktRTEgICAoaGV4KQkJQ3J5c3RhbGZvbnR6IEFtZXJpY2EsIEluYy4KLTU4QjlFMSAgICAgKGJhc2UgMTYpCQlDcnlzdGFsZm9udHogQW1lcmljYSwgSW5jLgotCQkJCTEyNDEyIEUuIFNhbHRlc2UgQXZlLgotCQkJCVNwb2thbmUgVmFsbGV5IFdBIDk5MjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC1CQy0yNyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi01OEJDMjcgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01OC1CRC1BMyAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLTU4QkRBMyAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi01OC1CRi1FQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi01OEJGRUEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtQzMtOEIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotNThDMzhCICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNTgtQ0YtNEIgICAoaGV4KQkJTHVma2luIEluZHVzdHJpZXMKLTU4Q0Y0QiAgICAgKGJhc2UgMTYpCQlMdWZraW4gSW5kdXN0cmllcwotCQkJCTgxMSBXaWxsb3cgT2FrIERyaXZlCi0JCQkJTWlzc291cmkgQ2l0eSBUZXhhcyA3NzQ4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtRDAtOEYgICAoaGV4KQkJSUVFRSAxOTA0LjEgV29ya2luZyBHcm91cAotNThEMDhGICAgICAoYmFzZSAxNikJCUlFRUUgMTkwNC4xIFdvcmtpbmcgR3JvdXAKLQkJCQkxMzUxIFJlZHdvb2QgV2F5LCAKLQkJCQlQZXRhbHVtYSBDQSA5NDk1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtREItOEQgICAoaGV4KQkJRmFzdCBDby4sIEx0ZC4KLTU4REI4RCAgICAgKGJhc2UgMTYpCQlGYXN0IENvLiwgTHRkLgotCQkJCTItMTEtMSBJd2Ftb3RvY2hvCi0JCQkJN3RoIEZsLiwgSGVyYiBLYW5kYSBCbGRnLiwKLQkJCQlDaGl5b2RhLWt1IFRva3lvIDEwMS0wMDMyCi0JCQkJSkFQQU4KLQotNTgtRTQtNzYgICAoaGV4KQkJQ0VOVFJPTiBDT01NVU5JQ0FUSU9OUyBURUNITk9MT0dJRVMgRlVKSUFOIENPLixMVEQKLTU4RTQ3NiAgICAgKGJhc2UgMTYpCQlDRU5UUk9OIENPTU1VTklDQVRJT05TIFRFQ0hOT0xPR0lFUyBGVUpJQU4gQ08uLExURAotCQkJCTR0aCBGbG9vcixKaWFvZGFqaWVwdSBCdWlsZGluZyw3MiMgS2VqaWVybHUgUm9hZCwgCi0JCQkJWGknYW4gU2hhYW54aSBQcm92aW5jZSA3MTAxMDAKLQkJCQlDSElOQQotCi01OC1FNi0zNiAgIChoZXgpCQlFVlJzYWZlIFRlY2hub2xvZ2llcwotNThFNjM2ICAgICAoYmFzZSAxNikJCUVWUnNhZmUgVGVjaG5vbG9naWVzCi0JCQkJNTkgTm9ydGggVGVycmFjZSAKLQkJCQlIYWNrbmV5Ci0JCQkJQWRlbGFpZGUgU291dGggQXVzdHJhbGlhIDUwNjkKLQkJCQlBVVNUUkFMSUEKLQotNTgtRTctNDcgICAoaGV4KQkJRGVsdGFuZXQgQUcKLTU4RTc0NyAgICAgKGJhc2UgMTYpCQlEZWx0YW5ldCBBRwotCQkJCVJpZWRzdHJhc3NlIDgKLQkJCQlEaWV0aWtvbiBadXJpY2ggODk1MwotCQkJCVNXSVRaRVJMQU5ECi0KLTU4LUU4LTA4ICAgKGhleCkJCUFVVE9OSUNTIENPUlBPUkFUSU9OCi01OEU4MDggICAgIChiYXNlIDE2KQkJQVVUT05JQ1MgQ09SUE9SQVRJT04KLQkJCQk0MS01IFlPTkdEQU5HLURPTkcKLQkJCQlZQU5HU0FOLVNJIEtZRU9OR05BTSA2MjYtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTU4LUVFLUNFICAgKGhleCkJCUljb24gVGltZSBTeXN0ZW1zCi01OEVFQ0UgICAgIChiYXNlIDE2KQkJSWNvbiBUaW1lIFN5c3RlbXMKLQkJCQkxNTIwMSBOVyBHcmVlbmJyaWVyIFBhcmt3YXkKLQkJCQlTdWl0ZSBBMQotCQkJCUJlYXZlcnRvbiBPUiA5NzAwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotNTgtRjYtN0IgICAoaGV4KQkJWGlhIE1lbiBVbmlvbkNvcmUgVGVjaG5vbG9neSBMVEQuCi01OEY2N0IgICAgIChiYXNlIDE2KQkJWGlhIE1lbiBVbmlvbkNvcmUgVGVjaG5vbG9neSBMVEQuCi0JCQkJKDIyNCkyRiBDaHVhbmd5ZSBCdWlsZGluZyxYaWFtZW4gUGlvbmVlcmluZyBQYXJrIGZvciBPdmVyc2VhcyBDaGluZXNlIFNjaG9sYXJzCi0JCQkJWGlhIE1lbiBGdSBKaWFuIDM2MTAwOQotCQkJCUNISU5BCi0KLTU4LUY2LUJGICAgKGhleCkJCUt5b3RvIFVuaXZlcnNpdHkKLTU4RjZCRiAgICAgKGJhc2UgMTYpCQlLeW90byBVbml2ZXJzaXR5Ci0JCQkJWW9zaGlkYS1Ib21tYWNoaQotCQkJCVNha3lvLWt1Ci0JCQkJS3lvdG8gIDYwNjg1MDEKLQkJCQlKQVBBTgotCi01OC1GOS04RSAgIChoZXgpCQlTRUNVRE9TIEdtYkgKLTU4Rjk4RSAgICAgKGJhc2UgMTYpCQlTRUNVRE9TIEdtYkgKLQkJCQlSaGVudXMtUGxhdHogMgotCQkJCUhvbHp3aWNrZWRlIE5SVyA1OTQzOQotCQkJCUdFUk1BTlkKLQotNTgtRkQtMjAgICAoaGV4KQkJQnJhdmlkYSBTYWtlcmhldCBBQgotNThGRDIwICAgICAoYmFzZSAxNikJCUJyYXZpZGEgU2FrZXJoZXQgQUIKLQkJCQlNaWtyb2ZvbnZhZ2VuIDI4Ci0JCQkJU1RPQ0tIT0xNICAxMjYgODEKLQkJCQlTV0VERU4KLQotNUMtMDctNkYgICAoaGV4KQkJVGhvdWdodCBDcmVhdG9yCi01QzA3NkYgICAgIChiYXNlIDE2KQkJVGhvdWdodCBDcmVhdG9yCi0JCQkJTGFyZ28gZGEgUGly4m1pZGUsIE66IDMsIFNhbGEgRAotCQkJCU9laXJhcyBMaXNib2EgMjc5NS0xNTYgTGluZGEtYS1WZWxoYQotCQkJCVBPUlRVR0FMCi0KLTVDLTBBLTVCICAgKGhleCkJCVNBTVNVTkcgRUxFQ1RSTy1NRUNIQU5JQ1MgQ08uLCBMVEQuCi01QzBBNUIgICAgIChiYXNlIDE2KQkJU0FNU1VORyBFTEVDVFJPLU1FQ0hBTklDUyBDTy4sIExURC4KLQkJCQkzMTQsIE1hZXRhbjMtRG9uZywgWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24gR3l1bmdnaS1EbyA0NDMtNzQzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTVDLTBDLUJCICAgKGhleCkJCUNFTElaSU9OIEluYy4KLTVDMENCQiAgICAgKGJhc2UgMTYpCQlDRUxJWklPTiBJbmMuCi0JCQkJIzIwNiBMb3JkbGFuZCBFWiBUb3dlciwgR3VNaS1Eb25nIDE1MyBCdW5EYW5nLUd1Ci0JCQkJU2VvbmdOYW0tU2kgIEd5ZW9uZ0dpLURvIDQ2My04NzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNUMtMEUtOEIgICAoaGV4KQkJTW90b3JvbGEKLTVDMEU4QiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYQotCQkJCU9uZSBNb3Rvcm9sYSBQbGF6YQotCQkJCUhvbHRzdmlsbGUgTlkgMTE3NDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTVDLTE0LTM3ICAgKGhleCkJCVRoeXNzZW5rcnVwcCBBdWZ6dWdzd2Vya2UgR21iSAotNUMxNDM3ICAgICAoYmFzZSAxNikJCVRoeXNzZW5rcnVwcCBBdWZ6dWdzd2Vya2UgR21iSAotCQkJCUJlcm5oYWV1c2VyIFN0ci40NQotCQkJCU5ldWhhdXNlbiBhLmQuRiAgNzM3NjUKLQkJCQlHRVJNQU5ZCi0KLTVDLTE2LUM3ICAgKGhleCkJCUJpZyBTd2l0Y2ggTmV0d29ya3MKLTVDMTZDNyAgICAgKGJhc2UgMTYpCQlCaWcgU3dpdGNoIE5ldHdvcmtzCi0JCQkJODU1IEVMIENBTUlOTyBSRUFMCi0JCQkJU1RFIDI2MCBCTERHIDQKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTVDLTE3LTM3ICAgKGhleCkJCUktVmlldyBOb3csIExMQy4KLTVDMTczNyAgICAgKGJhc2UgMTYpCQlJLVZpZXcgTm93LCBMTEMuCi0JCQkJMTQyMSBFLiBTdW5zZXQKLQkJCQkjMgotCQkJCUxhcyBWZWdhcyBOViA4OTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtMTctRDMgICAoaGV4KQkJTEdFIAotNUMxN0QzICAgICAoYmFzZSAxNikJCUxHRSAKLQkJCQk2MC0zOSAsIEthc2FuIC1kb25nICwgR3VtY2hlb24tZ3UuCi0JCQkJU2VvdWwgICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTVDLTE4LUI1ICAgKGhleCkJCVRhbG9uIENvbW11bmljYXRpb25zCi01QzE4QjUgICAgIChiYXNlIDE2KQkJVGFsb24gQ29tbXVuaWNhdGlvbnMKLQkJCQkxMDYzNiBTY3JpcHBzIFN1bW1pdCBDdC4KLQkJCQlTdWl0ZSAyMDkKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTVDLTI2LTBBICAgKGhleCkJCURlbGwgSW5jLgotNUMyNjBBICAgICAoYmFzZSAxNikJCURlbGwgSW5jLgotCQkJCU9uZSBEZWxsIFdheSwgTVMgUlI1LTQ1Ci0JCQkJUm91bmQgUm9jayBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtMzMtOEUgICAoaGV4KQkJQWxwaGEgTmV0d29ya2MgSW5jLgotNUMzMzhFICAgICAoYmFzZSAxNikJCUFscGhhIE5ldHdvcmtjIEluYy4KLQkJCQlOby44IExpLXNoaW5nIFNldmVudGggUm9hZCxTY2llbmNlLWJhc2VkCi0JCQkJSHNpbmNodSAgMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi01Qy0zNS0zQiAgIChoZXgpCQlDb21wYWwgQnJvYWRiYW5kIE5ldHdvcmtzIEluYy4KLTVDMzUzQiAgICAgKGJhc2UgMTYpCQlDb21wYWwgQnJvYWRiYW5kIE5ldHdvcmtzIEluYy4KLQkJCQkyRi4tMiwgTm8uMzIgVGFpeXVhbiBTdC4KLQkJCQlaaHViZWkgQ2l0eSBIc2luY2h1IENvdW50eSAzMDI2NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNUMtMzUtREEgICAoaGV4KQkJVGhlcmUgQ29ycG9yYXRpb24gT3kKLTVDMzVEQSAgICAgKGJhc2UgMTYpCQlUaGVyZSBDb3Jwb3JhdGlvbiBPeQotCQkJCUVsaW3kZW5rYXR1IDUKLQkJCQlIZWxzaW5raSAgMDA1MTAKLQkJCQlGSU5MQU5ECi0KLTVDLTQwLTU4ICAgKGhleCkJCUplZmZlcnNvbiBBdWRpbyBWaWRlbyBTeXN0ZW1zLCBJbmMuCi01QzQwNTggICAgIChiYXNlIDE2KQkJSmVmZmVyc29uIEF1ZGlvIFZpZGVvIFN5c3RlbXMsIEluYy4KLQkJCQkxMzAyMCBNaWRkbGV0b3duIEluZHVzdHJpYWwgQmx2ZC4KLQkJCQlMb3Vpc3ZpbGxlIEtlbnR1Y2t5IDQwMjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy00Qy1BOSAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi01QzRDQTkgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxMDEwOAotCQkJCUNISU5BCi0KLTVDLTUwLTE1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTVDNTAxNSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy01Ni1FRCAgIChoZXgpCQkzcGxlcGxheSBFbGVjdHJvbmljcyBQcml2YXRlIExpbWl0ZWQKLTVDNTZFRCAgICAgKGJhc2UgMTYpCQkzcGxlcGxheSBFbGVjdHJvbmljcyBQcml2YXRlIExpbWl0ZWQKLQkJCQkxMTA2LCAxMXRoIEZsb29yCi0JCQkJQmFidSBLaGFuIEVzdGF0ZSwgQmFzaGVlcmJhZ2gKLQkJCQlIeWRlcmFiYWQgQW5kaHJhIFByYWRlc2ggNTAwMDAxCi0JCQkJSU5ESUEKLQotNUMtNTctQzggICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTVDNTdDOCAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU3MAotCQkJCUZJTkxBTkQKLQotNUMtNTktNDggICAoaGV4KQkJQXBwbGUsIEluYy4KLTVDNTk0OCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtNUUtQUIgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotNUM1RUFCICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtNjMtQkYgICAoaGV4KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi01QzYzQkYgICAgIChiYXNlIDE2KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJQnVpbGRpbmcgMjQgKGZsb29ycyAxLDMsNCw1KSBhbmQgMjggKGZsb29yczEtNCkKLQkJCQlDZW50cmFsIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgUGFyayxTaGVubmFuIFJkLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi01Qy02OS04NCAgIChoZXgpCQlOVVZJQ08KLTVDNjk4NCAgICAgKGJhc2UgMTYpCQlOVVZJQ08KLQkJCQk3Mi0zIFNpbmRhZSwgU2lsY2hvbgotCQkJCUd3YW5qdSBHeWVvbmdnaSA0NjQtODczCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTVDLTZBLTdEICAgKGhleCkJCUtFTlRLQVJUIEVHRSBFTEVLVFJPTklLIFNBTi4gVkUgVElDLiBMVEQuIFNUSS4gCi01QzZBN0QgICAgIChiYXNlIDE2KQkJS0VOVEtBUlQgRUdFIEVMRUtUUk9OSUsgU0FOLiBWRSBUSUMuIExURC4gU1RJLiAKLQkJCQkxMzcwIFNLLCBOTzo0Mi8zMDQsIAotCQkJCU1PTlRSTyBJWk1JUiAzNTIzMAotCQkJCVRVUktFWQotCi01Qy02Qi0zMiAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotNUM2QjMyICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy02RC0yMCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi01QzZEMjAgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCSBOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLTVDLTZGLTRGICAgKGhleCkJCVMuQS4gU0lTVEVMCi01QzZGNEYgICAgIChiYXNlIDE2KQkJUy5BLiBTSVNURUwKLQkJCQlDL1NPTFNPTkVTLCA4NwotCQkJCVBPTC4gSU5ELiBQTEEgREUgTEEgQlJVR1VFUkEKLQkJCQlDQVNURUxMQVIgREVMIFZBTExFUyBCQVJDRUxPTkEgMDgyMTEKLQkJCQlTUEFJTgotCi01Qy03Ny01NyAgIChoZXgpCQlIYWl2aXNpb24gTmV0d29yayBWaWRlbwotNUM3NzU3ICAgICAoYmFzZSAxNikJCUhhaXZpc2lvbiBOZXR3b3JrIFZpZGVvCi0JCQkJNDQ0NSBHYXJhbmQKLQkJCQlNb250cmVhbCBRQyBINFIgMkg5Ci0JCQkJQ0FOQURBCi0KLTVDLTg2LTRBICAgKGhleCkJCVNlY3JldCBMYWJzIExMQwotNUM4NjRBICAgICAoYmFzZSAxNikJCVNlY3JldCBMYWJzIExMQwotCQkJCTMxNSBCbGVlY2tlciBTdCAjMzA4Ci0JCQkJTmV3IFlvcmsgTlkgMTAwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTVDLTg3LTc4ICAgKGhleCkJCUN5YmVydGVsYnJpZGdlIGNvLixsdGQKLTVDODc3OCAgICAgKGJhc2UgMTYpCQlDeWJlcnRlbGJyaWRnZSBjby4sbHRkCi0JCQkJIzkwMSBBY2VoaWdoZW5kIHRvd2VyIDIKLQkJCQkyMjItMTQgR3Vyby1ndSBHdXJvLWRvbmcKLQkJCQlTZW91bCAgMTUyLTA1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi01Qy05NS1BRSAgIChoZXgpCQlBcHBsZSBJbmMKLTVDOTVBRSAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy05QS1EOCAgIChoZXgpCQlGdWppdHN1IExpbWl0ZWQKLTVDOUFEOCAgICAgKGJhc2UgMTYpCQlGdWppdHN1IExpbWl0ZWQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiwKLQkJCQk0MDMsIEtvc3VnaS1jaG8gMS1jaG9tZSxOYWthaGFyYS1rdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMS0wMDYzCi0JCQkJSkFQQU4KLQotNUMtQUMtNEMgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotNUNBQzRDICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLTVDLUI1LTI0ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi01Q0I1MjQgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlNb2JpbHbkZ2VuIDEwCi0JCQkJTHVuZCAgMjIxODEKLQkJCQlTV0VERU4KLQotNUMtQkQtOUUgICAoaGV4KQkJSE9OR0tPTkcgTUlSQUNMRSBFQUdMRSBURUNITk9MT0dZKEdST1VQKSBMSU1JVEVECi01Q0JEOUUgICAgIChiYXNlIDE2KQkJSE9OR0tPTkcgTUlSQUNMRSBFQUdMRSBURUNITk9MT0dZKEdST1VQKSBMSU1JVEVECi0JCQkJRkxBVCBSTSAyMTAzLCAgRUFTRVkgQ09NTUVSQ0lBTCBCTERHLDI1My0yNjEgSEVOTkVTU1kgUkQsICAKLQkJCQlXQU5DSEFJIDk5OTA3NwotCQkJCUhPTkcgS09ORwotCi01Qy1DMi0xMyAgIChoZXgpCQlGci4gU2F1dGVyIEFHCi01Q0MyMTMgICAgIChiYXNlIDE2KQkJRnIuIFNhdXRlciBBRwotCQkJCUltIFN1cmluYW0gNTUKLQkJCQlCYXNlbCBCUyBDSDQwMTYKLQkJCQlTV0lUWkVSTEFORAotCi01Qy1DNi1EMCAgIChoZXgpCQlTa3l3b3J0aCBEaWdpdGFsIHRlY2hub2xvZ3koc2hlbnpoZW4pY28ubHRkLgotNUNDNkQwICAgICAoYmFzZSAxNikJCVNreXdvcnRoIERpZ2l0YWwgdGVjaG5vbG9neShzaGVuemhlbiljby5sdGQuCi0JCQkJMTNGLEJsb2NrIEEsU2t5d29ydGggQnVpbGRpbmcsR2FveGluIEFWRS4xLlMsCi0JCQkJTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotNUMtQzktRDMgICAoaGV4KQkJUEFMTEFESVVNIEVORVJHWSBFTEVUUk9OSUNBIERBIEFNQVpPTklBIExUREEKLTVDQzlEMyAgICAgKGJhc2UgMTYpCQlQQUxMQURJVU0gRU5FUkdZIEVMRVRST05JQ0EgREEgQU1BWk9OSUEgTFREQQotCQkJCUFWRU5JREEgQlVSSVRJLCA0Mjg1Ci0JCQkJRElTVFJJVE8gSU5EVVNUUklBTAotCQkJCU1BTkFVUyBBTUFaT05BUyA2OTA3NS0wMDAKLQkJCQlCUkFaSUwKLQotNUMtQ0EtMzIgICAoaGV4KQkJVGhlYmVuIEFHCi01Q0NBMzIgICAgIChiYXNlIDE2KQkJVGhlYmVuIEFHCi0JCQkJSG9oZW5iZXJnc3RyYd9lIDMyCi0JCQkJSGFpZ2VybG9jaCBCYWRlbi1X/HJ0dGVtYmVyZyA3MjQwMQotCQkJCUdFUk1BTlkKLQotNUMtQ0UtQUQgICAoaGV4KQkJQ0RZTkUgQ29ycG9yYXRpb24KLTVDQ0VBRCAgICAgKGJhc2UgMTYpCQlDRFlORSBDb3Jwb3JhdGlvbgotCQkJCTUwNSBJbmRlcGVuZGVuY2UgUGt3eSBTdGUgMzAwCi0JCQkJQ2hlc2FwZWFrZSBWQSAyMzMyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtRDEtMzUgICAoaGV4KQkJWHRyZW1lIFBvd2VyIFN5c3RlbXMKLTVDRDEzNSAgICAgKGJhc2UgMTYpCQlYdHJlbWUgUG93ZXIgU3lzdGVtcwotCQkJCTI0NDAgS2lvd2EgQmx2ZC4gTi4gIzEwMgotCQkJCUxha2UgSGF2YXN1IENpdHkgQVogODY0MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTVDLUQ0LUFCICAgKGhleCkJCVpla3RvcgotNUNENEFCICAgICAoYmFzZSAxNikJCVpla3RvcgotCQkJCTEyNjc1IERhbmllbHNvbiBDdC4gU3RlIDQwMQotCQkJCVBvd2F5IENBIDkyMDY0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy1EOS05OCAgIChoZXgpCQlELUxpbmsgQ29ycG9yYXRpb24KLTVDRDk5OCAgICAgKGJhc2UgMTYpCQlELUxpbmsgQ29ycG9yYXRpb24KLQkJCQlOby4yODksIFNpbmh1IDNyZCBSZC4sIE5laWh1IERpc3RyaWN0LCAKLQkJCQlUYWlwZWkgQ2l0eSAgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNUMtREEtRDQgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi01Q0RBRDQgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQuCi0JCQkJMTAtMSwgSGlnYXNoaWtvdGFyaSAxLWNob21lCi0JCQkJTmFnYW9rYWt5by1zaGkgS3lvdG8gNjE3LTg1NTUKLQkJCQlKQVBBTgotCi01Qy1FMi0yMyAgIChoZXgpCQlEZWxwaGluIFRlY2hub2xvZ3kgQUcKLTVDRTIyMyAgICAgKGJhc2UgMTYpCQlEZWxwaGluIFRlY2hub2xvZ3kgQUcKLQkJCQlMdXN0aGVpZGUgODEKLQkJCQlCZXJnaXNjaC1HbGFkYmFjaCAgNTE0MjcKLQkJCQlHRVJNQU5ZCi0KLTVDLUUyLTg2ICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotNUNFMjg2ICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCUNBUlJFVEVSQSBCQVNFIEFFUkVBICMgNTg1MAotCQkJCVphcG9wYW4gSmFsaXNjbyA0NDEzMAotCQkJCU1FWElDTwotCi01Qy1FMi1GNCAgIChoZXgpCQlBY1NpUCBUZWNobm9sb2d5IENvcnAuCi01Q0UyRjQgICAgIChiYXNlIDE2KQkJQWNTaVAgVGVjaG5vbG9neSBDb3JwLgotCQkJCTNGLiwgTm8uMjIsIERhbGluIFJkLgotCQkJCVRhb3l1YW4gVGFveXVhbiBDb3VudHkgMzMwNjcKLQkJCQlUQUlXQU4sIFBST1ZJTkNFIE9GIENISU5BCi0KLTVDLUVCLTRFICAgKGhleCkJCVIuIFNUQUhMIEhNSSBTeXN0ZW1zIEdtYkgKLTVDRUI0RSAgICAgKGJhc2UgMTYpCQlSLiBTVEFITCBITUkgU3lzdGVtcyBHbWJICi0JCQkJSW0gR2V3ZXJiZWdlYmlldCBQZXNjaCAxNAotCQkJCUNvbG9nbmUgIDUwNzY3Ci0JCQkJR0VSTUFOWQotCi01Qy1FRS03OSAgIChoZXgpCQlHbG9iYWwgRGlnaXRlY2ggQ28gTFRECi01Q0VFNzkgICAgIChiYXNlIDE2KQkJR2xvYmFsIERpZ2l0ZWNoIENvIExURAotCQkJCTFGLiwgTm8uMjUsIEFseS41NiwgTG4uIDI0NSwgU2VjLiA0LCBCYWRlIFJkLiwKLQkJCQlUYWlwZWkgVGFpd2FuIDEwNQotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotNUMtRjItMDcgICAoaGV4KQkJU3BlY28gVGVjaG5vbG9naWVzCi01Q0YyMDcgICAgIChiYXNlIDE2KQkJU3BlY28gVGVjaG5vbG9naWVzCi0JCQkJMjAwIE5ldyBIaWdod2F5Ci0JCQkJQW1pdHl2aWxsZSBOZXcgWW9yayAxMTcwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNUMtRjMtRkMgICAoaGV4KQkJSUJNIENvcnAKLTVDRjNGQyAgICAgKGJhc2UgMTYpCQlJQk0gQ29ycAotCQkJCTMwMzkgRSBDb3Jud2FsbGlzIFJkCi0JCQkJUC5PLiBCT1ggMTIxOTUKLQkJCQlSZXNlYXJjaCBUcmlhbmdsZSBQYXJrIE5DIDI3NzA5LTIxOTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTVDLUY5LUREICAgKGhleCkJCURlbGwgSW5jCi01Q0Y5REQgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgZGVsbCBXYXkKLQkJCQlSb3VuZCBSb2NrIFRYIDc4NzgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi01Qy1GRi0zNSAgIChoZXgpCQlXaXN0cm9uIENvcnBvcmF0aW9uCi01Q0ZGMzUgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBDb3Jwb3JhdGlvbgotCQkJCTIxRiwgODgsIFNlYy4xLCBIc2luIFRhaSBXdSBSZC4sIEhzaWNoaWgsCi0JCQkJVGFpcGVpIEhzaWVuICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTYwLTExLTk5ICAgKGhleCkJCURhdGEtVGVzdGVyIEluYy4KLTYwMTE5OSAgICAgKGJhc2UgMTYpCQlEYXRhLVRlc3RlciBJbmMuCi0JCQkJNDUwIFN0LVBpZXJyZSwgc3VpdGUgMzAwCi0JCQkJTW9udHJlYWwgUXVlYmVjIEgyWSAyTTkKLQkJCQlDQU5BREEKLQotNjAtMTItODMgICAoaGV4KQkJU29sdWNpb25lcyBUZWNub2xvZ2ljYXMgcGFyYSBsYSBTYWx1ZCB5IGVsIEJpZW5lc3RhciBTQQotNjAxMjgzICAgICAoYmFzZSAxNikJCVNvbHVjaW9uZXMgVGVjbm9sb2dpY2FzIHBhcmEgbGEgU2FsdWQgeSBlbCBCaWVuZXN0YXIgU0EKLQkJCQlSZC4gQXVndXN0ZSB5IExvdWlzIEx1bWllcmUsIDIzIG5hdmUgMTMKLQkJCQlQYXJxdWUgVGVjbm9sb2dpY28gZGUgVmFsZW5jaWEKLQkJCQlQYXRlcm5hIFZhbGVuY2lhLSBDSUYgRVMgQSA5ODAwNTk3OCA0Njk4MAotCQkJCVNQQUlOCi0KLTYwLTE1LUM3ICAgKGhleCkJCUlkYVRlY2gKLTYwMTVDNyAgICAgKGJhc2UgMTYpCQlJZGFUZWNoCi0JCQkJNjMwNjUgTkUgMTh0aCBTdC4KLQkJCQlCZW5kIE9SIDk3NzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC0xOS0wQyAgIChoZXgpCQlSUkFNQUMKLTYwMTkwQyAgICAgKGJhc2UgMTYpCQlSUkFNQUMKLQkJCQkxNTQwMCBNZWRpbmEgUmQKLQkJCQlQbHltb3V0aCBNTiA1NTQ0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtMUQtMEYgICAoaGV4KQkJTWlkbml0ZSBTb2xhcgotNjAxRDBGICAgICAoYmFzZSAxNikJCU1pZG5pdGUgU29sYXIKLQkJCQkxNzcyMiA2N3RoIEF2ZSBORSAjQwotCQkJCUFybGluZ3RvbiBXQSA5ODIyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtMkEtNTQgICAoaGV4KQkJQ2FyZGlvVGVrIEIuVi4KLTYwMkE1NCAgICAgKGJhc2UgMTYpCQlDYXJkaW9UZWsgQi5WLgotCQkJCUFtZXJpa2FsYWFuIDcwCi0JCQkJTWFhc3RyaWNodCBBaXJwb3J0IExpbWJ1cmcgNjE5OUFFCi0JCQkJTkVUSEVSTEFORFMKLQotNjAtMkEtRDAgICAoaGV4KQkJQ2lzY28gU1BWVEcKLTYwMkFEMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTUFZURwotCQkJCTUwMzAgU3VnYXJsb2FmIFBrd3kKLQkJCQlMYXdyZW5jZXZpbGxlIEdBIDMwMDE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC0zMy00QiAgIChoZXgpCQlBcHBsZSwgSW5jLgotNjAzMzRCICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC0zNS01MyAgIChoZXgpCQlCdXdvbiBUZWNobm9sb2d5Ci02MDM1NTMgICAgIChiYXNlIDE2KQkJQnV3b24gVGVjaG5vbG9neQotCQkJCShDdW51aXRlY2hub3BhcmsgMTAyLTE1MDcpIDIwMC0xLENodW51aS1kb25nCi0JCQkJV29ubWktZ3UKLQkJCQlCdWNob24tc2kgR3llaW5nZ2ktZG8gNDIwLTg1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02MC0zNi1ERCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTYwMzZERCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTYwLTM4LTBFICAgKGhleCkJCUFscHMgRWxlY3RyaWMgQ28uLAotNjAzODBFICAgICAoYmFzZSAxNikJCUFscHMgRWxlY3RyaWMgQ28uLAotCQkJCTEtMi0xLCBPa2lub3VjaGkKLQkJCQlTb21hLWNpdHkgRnVrdXNoaW1hIDk3Ni04NTAxCi0JCQkJSkFQQU4KLQotNjAtMzktMUYgICAoaGV4KQkJQUJCIEx0ZAotNjAzOTFGICAgICAoYmFzZSAxNikJCUFCQiBMdGQKLQkJCQlEaXN0cmlidXRpb24gQXV0b21hdGlvbgotCQkJCU1hbmVqYQotCQkJCVZhZG9kYXJhIEd1amFyYXQgMzkwMDEzCi0JCQkJSU5ESUEKLQotNjAtM0YtQzUgICAoaGV4KQkJQ09YIENPLiwgTFRECi02MDNGQzUgICAgIChiYXNlIDE2KQkJQ09YIENPLiwgTFRECi0JCQkJOTA0SE8sIEFDRSBUV0lOIFRPV0VSIDEtQ0hBCi0JCQkJMjEyLTEgR1VSTy1ET05HLCBHVVJPLUdVCi0JCQkJU0VPVUwgIDE1Mi03NzkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjAtNDQtRjUgICAoaGV4KQkJRWFzeSBEaWdpdGFsIEx0ZC4KLTYwNDRGNSAgICAgKGJhc2UgMTYpCQlFYXN5IERpZ2l0YWwgTHRkLgotCQkJCVZpY3RvcmlhIEJ1aWxkaW5ncywgMSBIYWRkaW5ndG9uIFJvYWQKLQkJCQlEdWJsaW4gIDQKLQkJCQlJUkVMQU5ECi0KLTYwLTQ1LTVFICAgKGhleCkJCUxpcHRlbCBzLnIuby4KLTYwNDU1RSAgICAgKGJhc2UgMTYpCQlMaXB0ZWwgcy5yLm8uCi0JCQkJSHJhZG5hIDMzOAotCQkJCUxpcHRvdnNreSBIcmFkb2sgIDAzMzAxCi0JCQkJU0xPVkFLSUEKLQotNjAtNDUtQkQgICAoaGV4KQkJTWljcm9zb2Z0Ci02MDQ1QkQgICAgIChiYXNlIDE2KQkJTWljcm9zb2Z0Ci0JCQkJMSBNaWNyb3NvZnQgV2F5Ci0JCQkJU3R1ZGlvIC1CLzM5MzYKLQkJCQlSZWRtb25kICBXYXNoaW5ndG9uIDk4MDIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC01Mi1EMCAgIChoZXgpCQlGQUNUUyBFbmdpbmVlcmluZyAKLTYwNTJEMCAgICAgKGJhc2UgMTYpCQlGQUNUUyBFbmdpbmVlcmluZyAKLQkJCQk4MDQ5IFBob3RvbmljcyBEcml2ZQotCQkJCU5ldyBQb3J0IFJpY2hleSBGTCAzNDY1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtNTQtNjQgICAoaGV4KQkJRXllZHJvIEdyZWVuIFNvbHV0aW9ucyBJbmMuCi02MDU0NjQgICAgIChiYXNlIDE2KQkJRXllZHJvIEdyZWVuIFNvbHV0aW9ucyBJbmMuCi0JCQkJMSBZb25nZSBTdAotCQkJCVN1aXRlIDE4MDEKLQkJCQlUb3JvbnRvIE9udGFyaW8gTTVFIDFXNwotCQkJCUNBTkFEQQotCi02MC02My1GRCAgIChoZXgpCQlUcmFuc2NlbmQgQ29tbXVuaWNhdGlvbiBCZWlqaW5nIENvLixMdGQuCi02MDYzRkQgICAgIChiYXNlIDE2KQkJVHJhbnNjZW5kIENvbW11bmljYXRpb24gQmVpamluZyBDby4sTHRkLgotCQkJCUEtNixLZXNoaSBwbGF6YSwyOCMsSW5mb3JtYXRpb24gUm9hZAotCQkJCUhhaWRpYW4gRGlzdCwKLQkJCQlCZWlqaW5nICAxMDAwODUKLQkJCQlDSElOQQotCi02MC02Ny0yMCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTYwNjcyMCAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTYwLTZCLUJEICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLTYwNkJCRCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIFllb25ndG9uZy1ndQotCQkJCVN1d29uLXNpIEd5ZW9uZ2dpLWRvIDQ0Mzc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02MC02Qy02NiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTYwNkM2NiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTYwLTc2LTg4ICAgKGhleCkJCVZlbG9keW5lCi02MDc2ODggICAgIChiYXNlIDE2KQkJVmVsb2R5bmUKLQkJCQkzNDUgRGlnaXRhbCBEcml2ZQotCQkJCU1vcmdhbiBIaWxsIENBIDk1MDM3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC04My1CMiAgIChoZXgpCQlHa1dhcmUgZS5LLgotNjA4M0IyICAgICAoYmFzZSAxNikJCUdrV2FyZSBlLksuCi0JCQkJSHVtYm9sZHRzdHJhc3NlIDE3NwotCQkJCUVzc2VuIE5SVyA0NTE0OQotCQkJCUdFUk1BTlkKLQotNjAtODQtM0IgICAoaGV4KQkJU29sYWRpZ20sIEluYy4KLTYwODQzQiAgICAgKGJhc2UgMTYpCQlTb2xhZGlnbSwgSW5jLgotCQkJCTE5NS4gUyBNaWxwaXRhcyBCbHZkCi0JCQkJTWlscGl0YXMgQ0EgOTUwMzUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTg2LTQ1ICAgKGhleCkJCUF2ZXJ5IFdlaWdoLVRyb25peCwgTExDCi02MDg2NDUgICAgIChiYXNlIDE2KQkJQXZlcnkgV2VpZ2gtVHJvbml4LCBMTEMKLQkJCQkxMDAwIEFybXN0cm9uZyBEcml2ZQotCQkJCUZhaXJtb250IE1OIDU2MDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC04OS0zQyAgIChoZXgpCQlUaGVybW8gRmlzaGVyIFNjaWVudGlmaWMgUC5PLkEuCi02MDg5M0MgICAgIChiYXNlIDE2KQkJVGhlcm1vIEZpc2hlciBTY2llbnRpZmljIFAuTy5BLgotCQkJCTQ2IEpvbnNwaW4gUmQuCi0JCQkJV2lsbWluZ3RvbiBNQSAwMTg4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtODktQjEgICAoaGV4KQkJS2V5IERpZ2l0YWwgU3lzdGVtcwotNjA4OUIxICAgICAoYmFzZSAxNikJCUtleSBEaWdpdGFsIFN5c3RlbXMKLQkJCQk1MjEgRSAzcmQgU3RyZWV0Ci0JCQkJTW91bnQgVmVybm9uIE5ZIDEwNTUzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC04OS1CNyAgIChoZXgpCQlLQUVMIE3cSEVORElTTElLIEVMRUtUUk9OSUsgVElDQVJFVCBTQU5BWUkgTGltaXRlZCDeaXJrZXRpCi02MDg5QjcgICAgIChiYXNlIDE2KQkJS0FFTCBN3EhFTkRJU0xJSyBFTEVLVFJPTklLIFRJQ0FSRVQgU0FOQVlJIExpbWl0ZWQg3mlya2V0aQotCQkJCUF0YXT8cmsgTWFoLiA3OCBzb2thayAsTm86MTAsIEL8efxrYWxhbiBNZXZraWksCi0JCQkJVWx1Y2FrIC8gS2VtYWxwYXNhCi0JCQkJSXptaXIgQWVnZWFuIDM1MTc1Ci0JCQkJVFVSS0VZCi0KLTYwLThDLTJCICAgKGhleCkJCUhhbnNvbiBUZWNobm9sb2d5Ci02MDhDMkIgICAgIChiYXNlIDE2KQkJSGFuc29uIFRlY2hub2xvZ3kKLQkJCQlSb29tIDE1MDMsIFpoYW8gSmlhIEJhbmcgUm9hZAotCQkJCVNoYW5naGFpICAyMDAwMzAKLQkJCQlDSElOQQotCi02MC04RC0xNyAgIChoZXgpCQlTZW50cnVzIEdvdmVybm1lbnQgU3lzdGVtcyBEaXZpc2lvbiwgSW5jCi02MDhEMTcgICAgIChiYXNlIDE2KQkJU2VudHJ1cyBHb3Zlcm5tZW50IFN5c3RlbXMgRGl2aXNpb24sIEluYwotCQkJCTE0MSBDaGVzdGVyZmllbGQgSW5kdXN0cmlhbCBCbHZkCi0JCQkJQ2hlc3RlcmZpZWxkIE1PIDYzMDA1LTEyMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLTkwLTg0ICAgKGhleCkJCURTU0QgSW5jCi02MDkwODQgICAgIChiYXNlIDE2KQkJRFNTRCBJbmMKLQkJCQk0MDI1IEJvaGFubm9uIERyCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtOUEtQTQgICAoaGV4KQkJR1ZJIFNFQ1VSSVRZIElOQy4KLTYwOUFBNCAgICAgKGJhc2UgMTYpCQlHVkkgU0VDVVJJVFkgSU5DLgotCQkJCTI4MDEgVFJBREUgQ0VOVEVSIERSIFNURS4xMjAKLQkJCQlDQVJST0xMVE9OIFRYIDc1MDA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC05RS02NCAgIChoZXgpCQlWaXZvbmljIEdtYkgKLTYwOUU2NCAgICAgKGJhc2UgMTYpCQlWaXZvbmljIEdtYkgKLQkJCQlLdXJmdWVyc3QtRXBwc3RlaW4tUmluZyA0Ci0JCQkJU2FpbGF1ZiBCYXllcm4gNjM4NzcKLQkJCQlHRVJNQU5ZCi0KLTYwLTlGLTlEICAgKGhleCkJCUNsb3VkU3dpdGNoCi02MDlGOUQgICAgIChiYXNlIDE2KQkJQ2xvdWRTd2l0Y2gKLQkJCQkyMDAgV2hlZWxlciBSZAotCQkJCUJ1cmxpbmd0b24gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLUExLTBBICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotNjBBMTBBICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02MC1CMy1DNCAgIChoZXgpCQlFbGJlciBTcmwKLTYwQjNDNCAgICAgKGJhc2UgMTYpCQlFbGJlciBTcmwKLQkJCQl2aWEgUG9udGV2ZWNjaGlvIDQyIFcKLQkJCQlDYXJhc2NvIEdlIDE2MDQyCi0JCQkJSVRBTFkKLQotNjAtQjYtMDYgICAoaGV4KQkJUGhvcnVzCi02MEI2MDYgICAgIChiYXNlIDE2KQkJUGhvcnVzCi0JCQkJMTYyNTUgVmVudHVyYSBCb3VsZXZhcmQsIFN1aXRlIDMxMAotCQkJCUVuY2lubyBDQSA5MTQzNgotCQkJCVVOSVRFRCBTVEFURVMKLQotNjAtQjktMzMgICAoaGV4KQkJRGV1dHJvbiBFbGVjdHJvbmljcyBDb3JwLgotNjBCOTMzICAgICAoYmFzZSAxNikJCURldXRyb24gRWxlY3Ryb25pY3MgQ29ycC4KLQkJCQk4RiwgNjgsIFNlYy4gMywgTmFua2luZyBFLiBSZC4KLQkJCQlUYWlwZWkgVGFpd2FuIDEwNAotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotNjAtQjktODIgICAoaGV4KQkJUk8uVkUuUi4gTGFib3JhdG9yaWVzIFMucC5BLgotNjBCOTgyICAgICAoYmFzZSAxNikJCVJPLlZFLlIuIExhYm9yYXRvcmllcyBTLnAuQS4KLQkJCQlWaWEgUGFyaW5pLCAyCi0JCQkJU2lybWlvbmUgQnJlc2NpYSAyNTAxOQotCQkJCUlUQUxZCi0KLTYwLUM1LTQ3ICAgKGhleCkJCUFwcGxlLCBJbmMuCi02MEM1NDcgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLUM5LTgwICAgKGhleCkJCVRyeW11cwotNjBDOTgwICAgICAoYmFzZSAxNikJCVRyeW11cwotCQkJCUJ1Y2hlb24gVGVjaG5vIFBhcmsgMzAzLTkwMgotCQkJCU9qZW9uZy1ndSBTYW1qdW5nLWRvbmcKLQkJCQlCdWNoZW9uLXNpIDQyMS03NDEgR3l1bmdnaS1kbwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02MC1DQi1GQiAgIChoZXgpCQlBaXJTY2FwZSBJbmMuCi02MENCRkIgICAgIChiYXNlIDE2KQkJQWlyU2NhcGUgSW5jLgotCQkJCTYyNSBDaGFybGVzIFdheQotCQkJCU1lZGZvcmQgT1IgOTc1MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLUQwLUE5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotNjBEMEE5ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02MC1EMS1BQSAgIChoZXgpCQlWaXNoYWwgVGVsZWNvbW11bmljYXRpb25zIFB2dCBMdGQKLTYwRDFBQSAgICAgKGJhc2UgMTYpCQlWaXNoYWwgVGVsZWNvbW11bmljYXRpb25zIFB2dCBMdGQKLQkJCQkyNSBTaXRhcmFtIEJ1aWxkaW5nIERyIEQgTiBSb2FkCi0JCQkJRm9ydCBNdW1iYWkKLQkJCQlNdW1iYWkgTWFoYXJhc3RyYSA0MDAwMDEKLQkJCQlJTkRJQQotCi02MC1EMy0wQSAgIChoZXgpCQlRdWF0aXVzIExpbWl0ZWQKLTYwRDMwQSAgICAgKGJhc2UgMTYpCQlRdWF0aXVzIExpbWl0ZWQKLQkJCQlVbml0cyAwNS0wNywgMTYvRiwgR3JlZW5maWVsZCBUb3dlciwgQ29uY29yZGlhIFBsYXphLAotCQkJCTEgU2NpZW5jZSBNdXNldW0gUmQuLCBUU1QgRWFzdAotCQkJCUtvd2xvb24gIAotCQkJCUhPTkcgS09ORwotCi02MC1EOC0xOSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi02MEQ4MTkgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgIDIwMTYxMyAKLQkJCQlDSElOQQotCi02MC1EQS0yMyAgIChoZXgpCQlFc3RlY2ggQ28uLEx0ZAotNjBEQTIzICAgICAoYmFzZSAxNikJCUVzdGVjaCBDby4sTHRkCi0JCQkJIzcxNywxMzMtMSxTYW5nZGFld29uLURvbmcKLQkJCQlKdW5nd29uLUd1Ci0JCQkJU2VvbmduYW0tU2kgR3llb25nZ2ktRG8gNDYyLTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02MC1FOS01NiAgIChoZXgpCQlBeWxhIE5ldHdvcmtzLCBJbmMKLTYwRTk1NiAgICAgKGJhc2UgMTYpCQlBeWxhIE5ldHdvcmtzLCBJbmMKLQkJCQkyMTggTW9yZ2FuIExhbmUKLQkJCQlNZW5sbyBQYXJrIENBIDk0MDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC1FQi02OSAgIChoZXgpCQlRdWFudGEgY29tcHV0ZXIgSW5jLgotNjBFQjY5ICAgICAoYmFzZSAxNikJCVF1YW50YSBjb21wdXRlciBJbmMuCi0JCQkJMjExLCBXZW4gSHdhIDJuZCBSZC4sS3VlaSBTaGFuLCAKLQkJCQlUYW8gWXVhbiAgMzMzNzcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTYwLUYxLTNEICAgKGhleCkJCUpBQkxPQ09NIHMuci5vLgotNjBGMTNEICAgICAoYmFzZSAxNikJCUpBQkxPQ09NIHMuci5vLgotCQkJCVYgTml2YWNoIDEyCi0JCQkJSmFibG9uZWMgbmFkIE5pc291ICA0NjYgMDEKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi02MC1GMi04MSAgIChoZXgpCQlUUkFOV08gVEVDSE5PTE9HWSBDTy4sIExURC4KLTYwRjI4MSAgICAgKGJhc2UgMTYpCQlUUkFOV08gVEVDSE5PTE9HWSBDTy4sIExURC4KLQkJCQlOby4yMzYsIFNlYy4zLCBIdWFuYmVpIFJkLgotCQkJCUp1YmVpIENpdHkgSHNpbmNodSBDb3VudHkgMzAyNjUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTYwLUYzLURBICAgKGhleCkJCUxvZ2ljIFdheSBHbWJICi02MEYzREEgICAgIChiYXNlIDE2KQkJTG9naWMgV2F5IEdtYkgKLQkJCQlIYWdlbm93ZXIgU3RyLiA3MwotCQkJCVNjaHdlcmluIE1lY2tsZW5idXJnLVdlc3QgUG9tZXJhbmlhIDE5MDYxCi0JCQkJR0VSTUFOWQotCi02MC1GNS05QyAgIChoZXgpCQlDUlUtRGF0YXBvcnQKLTYwRjU5QyAgICAgKGJhc2UgMTYpCQlDUlUtRGF0YXBvcnQKLQkJCQkxMDAwIFNFIFRlY2ggQ2VudGVyIERyaXZlCi0JCQkJU3VpdGUgMTYwCi0JCQkJVmFuY291dmVyIFdBIDk4NjgzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02MC1GNi03MyAgIChoZXgpCQlURVJVTU8gQ09SUE9SQVRJT04KLTYwRjY3MyAgICAgKGJhc2UgMTYpCQlURVJVTU8gQ09SUE9SQVRJT04KLQkJCQkxNTAwLElub2t1Y2hpLE5ha2FpLW1hY2hpCi0JCQkJQXNoaWdhcmFrYW1pLWd1biBLYW5hZ2F3YSAyNTktMDE1MQotCQkJCUpBUEFOCi0KLTYwLUZBLUNEICAgKGhleCkJCUFwcGxlLCBJbmMuCi02MEZBQ0QgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTYwLUZCLTQyICAgKGhleCkJCUFwcGxlLCBJbmMKLTYwRkI0MiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC0wMC1GMSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi02NDAwRjEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC0wOS00QyAgIChoZXgpCQlCZWlqaW5nIFN1cGVyYmVlIFdpcmVsZXNzIFRlY2hub2xvZ3kgQ28uLEx0ZAotNjQwOTRDICAgICAoYmFzZSAxNikJCUJlaWppbmcgU3VwZXJiZWUgV2lyZWxlc3MgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJQjcsU2NpZW5jZS1UZWNoIEZvcnR1bmUgQ2VudGVyLAotCQkJCU5vLjgsWHVlcWluZ1JvYWQsSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDE5MgotCQkJCUNISU5BCi0KLTY0LTBFLTM2ICAgKGhleCkJCVRBWlRBRwotNjQwRTM2ICAgICAoYmFzZSAxNikJCVRBWlRBRwotCQkJCUNpY2VhIDEKLQkJCQlSdWUgZHUgQ291cnRpbAotCQkJCUJydXogIDM1MTcwCi0JCQkJRlJBTkNFCi0KLTY0LTBFLTk0ICAgKGhleCkJCVBsdXJpYnVzIE5ldHdvcmtzLCBJbmMuCi02NDBFOTQgICAgIChiYXNlIDE2KQkJUGx1cmlidXMgTmV0d29ya3MsIEluYy4KLQkJCQkxODA4IEVtYmFyY2FkZXJvIFJkIFN1aXRlIEIKLQkJCQlQYWxvIEFsdG8gQ0EgOTQzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTBGLTI4ICAgKGhleCkJCTJ3aXJlCi02NDBGMjggICAgIChiYXNlIDE2KQkJMndpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGFya3dheQotCQkJCVNhbiBKb3NlICBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtMTAtODQgICAoaGV4KQkJSEVYSVVNIFRlY2huaWNhbCBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLTY0MTA4NCAgICAgKGJhc2UgMTYpCQlIRVhJVU0gVGVjaG5pY2FsIERldmVsb3BtZW50IENvLiwgTHRkLgotCQkJCVZhY2kgdXQgNTFiCi0JCQkJQlVEQVBFU1QgIEgtMTEzNAotCQkJCUhVTkdBUlkKLQotNjQtMTYtOEQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNjQxNjhEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtMTYtRjAgICAoaGV4KQkJU2hlaHpoZW4gSHVhd2VpIENvbW11bmljYXRpb24gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotNjQxNkYwICAgICAoYmFzZSAxNikJCVNoZWh6aGVuIEh1YXdlaSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlCdWlsZGluZyAyLCBab25lIEIsSHVhd2VpIEluZHVzdHJpYWwgUGFyayxCYW50aWFuLCBMb25nZ2FuZyBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi02NC0xQS0yMiAgIChoZXgpCQlIZWxpb3NwZWN0cmEvV29vZGhpbGwgSW52ZXN0bWVudHMKLTY0MUEyMiAgICAgKGJhc2UgMTYpCQlIZWxpb3NwZWN0cmEvV29vZGhpbGwgSW52ZXN0bWVudHMKLQkJCQlBcm1i5WdhduRnZW4gMwotCQkJCUJvcuVzIE5vbmUgNTA2MzAKLQkJCQlTV0VERU4KLQotNjQtMUUtODEgICAoaGV4KQkJRG93c2xha2UgTWljcm9zeXN0ZW1zCi02NDFFODEgICAgIChiYXNlIDE2KQkJRG93c2xha2UgTWljcm9zeXN0ZW1zCi0JCQkJMjEgSGlnaCBTdHJlZXQsIFN1aXRlIDMwNgotCQkJCU5vcnRoIEFuZG92ZXIgTUEgMDE4NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTIwLTBDICAgKGhleCkJCUFwcGxlLCBJbmMuCi02NDIwMEMgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIGluZmluaXRlIExvb3AKLQkJCQljdXBlcnRpbm8gY0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTIyLTE2ICAgKGhleCkJCVNoYW5kb25nIFRhaXhpbiBFbGVjdHJvbmljIGNvLixMdGQKLTY0MjIxNiAgICAgKGJhc2UgMTYpCQlTaGFuZG9uZyBUYWl4aW4gRWxlY3Ryb25pYyBjby4sTHRkCi0JCQkJRkwuNixIYWljaGVuIEJ1aWxkaW5nCi0JCQkJV2VuaHVhKFdlc3QpIFJvYWQsTGl4aWEgRGlzdHJpY3QKLQkJCQlKaW5hbiBTaGFuZG9uZyAyNTAwMTAKLQkJCQlDSElOQQotCi02NC0yNC0wMCAgIChoZXgpCQlYb3Jjb20gTHRkLgotNjQyNDAwICAgICAoYmFzZSAxNikJCVhvcmNvbSBMdGQuCi0JCQkJVGVyYWR5b24gSW5kdXN0cmlhbCBQYXJrCi0JCQkJRC5OIE1pc2dhdiAgMjAxNzkKLQkJCQlJU1JBRUwKLQotNjQtMjctMzcgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLTY0MjczNyAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLTY0LTJELUI3ICAgKGhleCkJCVNFVU5HSUwgRUxFQ1RST05JQ1MKLTY0MkRCNyAgICAgKGJhc2UgMTYpCQlTRVVOR0lMIEVMRUNUUk9OSUNTCi0JCQkJIzE2LTgsIERvZGFuZy1kb25nCi0JCQkJV29ubWktZ3UKLQkJCQlCdWNob24gR3l1b25nZ2ktZG8gNDIwLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02NC0zMS01MCAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotNjQzMTUwICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTMxLTdFICAgKGhleCkJCURleGluIENvcnBvcmF0aW9uCi02NDMxN0UgICAgIChiYXNlIDE2KQkJRGV4aW4gQ29ycG9yYXRpb24KLQkJCQkxNEYtOCwgTm8uIDI1OCwgTGlhbiBDaGVuZyBSZC4KLQkJCQlDaHVuZyBIbyBDaXR5LCBUYWlwZWkgSHNpZW4gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjQtMzQtMDkgICAoaGV4KQkJQklUd2F2ZSBQdGUgTHRkCi02NDM0MDkgICAgIChiYXNlIDE2KQkJQklUd2F2ZSBQdGUgTHRkCi0JCQkJMiBTZXJhbmdvb24gTm9ydGggQXZlIDUKLQkJCQkjMDMtMDEKLQkJCQk1NTQ5MTEKLQkJCQlTSU5HQVBPUkUKLQotNjQtNDMtNDYgICAoaGV4KQkJR3VhbmdEb25nIFF1aWNrIE5ldHdvcmsgQ29tcHV0ZXIgQ08uLExURAotNjQ0MzQ2ICAgICAoYmFzZSAxNikJCUd1YW5nRG9uZyBRdWljayBOZXR3b3JrIENvbXB1dGVyIENPLixMVEQKLQkJCQkxMkYsTm8uODAgb2YgTWlkZGxlIFhpYW5MaWUgUm9hZCxZdWVYaXUgRGlzdHJpY3QKLQkJCQlHdWFuZ1pob3UgR3VhbmdEb25nIDUxMDA3MAotCQkJCUNISU5BCi0KLTY0LTRCLUMzICAgKGhleCkJCVNoYW5naGFpIFdPQVNpUyBUZWxlY29tbXVuaWNhdGlvbnMgTHRkLiwgQ28uCi02NDRCQzMgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgV09BU2lTIFRlbGVjb21tdW5pY2F0aW9ucyBMdGQuLCBDby4KLQkJCQkxNUYsIFNvZnR3YXJlIEJ1aWxkaW5nLAotCQkJCTQ2MSBIb25nY2FvIFJvYWQsIFh1aHVpIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMDIzMwotCQkJCUNISU5BCi0KLTY0LTRCLUYwICAgKGhleCkJCUNhbERpZ2l0LCBJbmMKLTY0NEJGMCAgICAgKGJhc2UgMTYpCQlDYWxEaWdpdCwgSW5jCi0JCQkJMTk0MSBNaXJhbG9tYSBBdmUgI0IKLQkJCQlQbGFjZW50aWEgQ0EgOTI4NzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTRELTcwICAgKGhleCkJCWRTUEFDRSBHbWJICi02NDRENzAgICAgIChiYXNlIDE2KQkJZFNQQUNFIEdtYkgKLQkJCQlSYXRoZW5hdXN0cmHfZSAyNgotCQkJCVBhZGVyYm9ybiAgMzMxMDIKLQkJCQlHRVJNQU5ZCi0KLTY0LTRGLTc0ICAgKGhleCkJCUxFTlVTIENvLiwgTHRkLgotNjQ0Rjc0ICAgICAoYmFzZSAxNikJCUxFTlVTIENvLiwgTHRkLgotCQkJCTE4LTUgR3dhY2hlb24tRG9uZwotCQkJCUd3YWNoZW9uIEd5ZW9uZ2dpLURvIDQyNy0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjQtNTEtN0UgICAoaGV4KQkJTE9ORyBCRU4gKERPTkdHVUFOKSBFTEVDVFJPTklDIFRFQ0hOT0xPR1kgQ08uLExURC4KLTY0NTE3RSAgICAgKGJhc2UgMTYpCQlMT05HIEJFTiAoRE9OR0dVQU4pIEVMRUNUUk9OSUMgVEVDSE5PTE9HWSBDTy4sTFRELgotCQkJCU5PLjE5LkppYW4gc2hlIFJvYWQsU2hpIG1hIFZpbGxhZ2UsVGFuZyB4aWEgIFRvd24sRG9uZyBndWFuLEd1YW5nIGRvbmcsQ2hpbmEKLQkJCQlEb25nIGd1YW4gR3VhbmcgZG9uZyA1MjM3MzEKLQkJCQlDSElOQQotCi02NC01Mi05OSAgIChoZXgpCQlDaGFtYmVybGFpbgotNjQ1Mjk5ICAgICAoYmFzZSAxNikJCUNoYW1iZXJsYWluCi0JCQkJODQ1IE4gTGFyY2ggQXZlCi0JCQkJRWxtaHVyc3QgSWxsaW5vaXMgNjAxMjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTU0LTIyICAgKGhleCkJCUVxdWlub3ggUGF5bWVudHMKLTY0NTQyMiAgICAgKGJhc2UgMTYpCQlFcXVpbm94IFBheW1lbnRzCi0JCQkJODg4OCBFLiBSYWludHJlZSBEci4sIFN1aXRlIDMwMAotCQkJCVNjb3R0c2RhbGUgQXJpem9uYSA4NTI2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtNTUtNjMgICAoaGV4KQkJSW50ZWxpZ2h0IEluYy4KLTY0NTU2MyAgICAgKGJhc2UgMTYpCQlJbnRlbGlnaHQgSW5jLgotCQkJCTM0NTAgUyBCcm9hZG1vbnQgRHJpdmUsIFN1aXRlIDEyNgotCQkJCVR1Y3NvbiBBWiA4NTcxMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtNTUtN0YgICAoaGV4KQkJTlNGT0NVUyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotNjQ1NTdGICAgICAoYmFzZSAxNikJCU5TRk9DVVMgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzL0YsRXRoZXIgQnVpbGRpbmcsIE5vLjQgQmVpd2EgUmQuLEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAwODkKLQkJCQlDSElOQQotCi02NC01RC1ENyAgIChoZXgpCQlTaGVuemhlbiBMaWZlc2Vuc2UgTWVkaWNhbCBFbGVjdHJvbmljcyBDby4sIEx0ZC4gICAgCi02NDVERDcgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gTGlmZXNlbnNlIE1lZGljYWwgRWxlY3Ryb25pY3MgQ28uLCBMdGQuICAgIAotCQkJCUNoaW5hIEFjYWRlbXkgb2YgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBEZXZlbG9wbWVudCwgUm9vbSAxOUEgCi0JCQkJSGlnaC10ZWNoLiBTb3V0aCBTdHJlZXQgTm8uIDEsIFNvdXRoIERpc3RyaWN0IG9mIEhpZ2gtdGVjaCBJbmR1c3RyaWFsIEFyZWEgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTY0LTVFLUJFICAgKGhleCkJCVlhaG9vISBKQVBBTgotNjQ1RUJFICAgICAoYmFzZSAxNikJCVlhaG9vISBKQVBBTgotCQkJCU1pZHRvd24gVG93ZXIKLQkJCQk5LTctMSBBa2FzYWthCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNy02MjExCi0JCQkJSkFQQU4KLQotNjQtNjUtQzAgICAoaGV4KQkJTnV2b24sIEluYwotNjQ2NUMwICAgICAoYmFzZSAxNikJCU51dm9uLCBJbmMKLQkJCQkzMTMwIEFscGluZSBSb2FkCi0JCQkJU3VpdGUgMjg4LTQ2NQotCQkJCVBvcnRvbGEgVmFsbGV5IENhbGlmb3JuaWEgOTQwMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTY3LTA3ICAgKGhleCkJCUJlaWppbmcgT21uaWZpYyBUZWNobm9sb2d5LCBMdGQuCi02NDY3MDcgICAgIChiYXNlIDE2KQkJQmVpamluZyBPbW5pZmljIFRlY2hub2xvZ3ksIEx0ZC4KLQkJCQlSbS4gNDAyLCBCdWlsZGluZyAxLCBTaHVpIE11IFFpbmcgSHVhIENvbW11bml0eQotCQkJCVpob25nIEd1YW4gQ3VuIEJlaSBFciBKaWUsIEhhaWRpYW4gRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAxOTAKLQkJCQlDSElOQQotCi02NC02OC0wQyAgIChoZXgpCQlDT01UUkVORAotNjQ2ODBDICAgICAoYmFzZSAxNikJCUNPTVRSRU5ECi0JCQkJM0YtMSwxMCBMYW5lIDYwOSwgQ2h1bmcgSHNpbiBSb2FkLCBTZWN0aW9uIDUKLQkJCQlTYW4gQ2h1bmcgQ2l0eQotCQkJCVRhaXBlaSBIc2llbiAgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02NC02OS1CQyAgIChoZXgpCQlIeXRlcmEgQ29tbXVuaWNhdGlvbnMgQ28gLixsdGQKLTY0NjlCQyAgICAgKGJhc2UgMTYpCQlIeXRlcmEgQ29tbXVuaWNhdGlvbnMgQ28gLixsdGQKLQkJCQlIWVQgVG93ZXIgLEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrIE5vcnRoLE5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTY0LTZFLTZDICAgKGhleCkJCVJhZGlvIERhdGFjb20gTExDCi02NDZFNkMgICAgIChiYXNlIDE2KQkJUmFkaW8gRGF0YWNvbSBMTEMKLQkJCQk5NjAxIE4gMzV0aCBTdAotCQkJCVBob2VuaXggQVogODUwMjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTcwLTAyICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotNjQ3MDAyICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCUJ1aWxkaW5nIDI0IChmbG9vcnMgMSwzLDQsNSkgYW5kIDI4IChmbG9vcnMxLTQpICBDZW50cmFsIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgUGFyayxTaGVubmFuIFJkLCBOYW5zaGFuLCAKLQkJCQlTaGVuemhlbiwgR3Vhbmdkb25nIFByb3ZpbmNlLCA1MTgwNTcKLQkJCQlDSElOQQotCi02NC03My1FMiAgIChoZXgpCQlBcmJpdGVyIFN5c3RlbXMsIEluYy4KLTY0NzNFMiAgICAgKGJhc2UgMTYpCQlBcmJpdGVyIFN5c3RlbXMsIEluYy4KLQkJCQkxMzI0IFZlbmRlbHMgQ2lyY2xlCi0JCQkJU3VpdGUgMTIxCi0JCQkJUGFzbyBSb2JsZXMgQ2FsaWZvcm5pYSA5MzQ0NgotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtNzYtNTcgICAoaGV4KQkJSW5ub3ZhdGl2ZSBTZWN1cml0eSBEZXNpZ25zCi02NDc2NTcgICAgIChiYXNlIDE2KQkJSW5ub3ZhdGl2ZSBTZWN1cml0eSBEZXNpZ25zCi0JCQkJMTggVGVjaG5vbG9neSBEcml2ZQotCQkJCVN1aXRlICMxMzQKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTdCLUQ0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi02NDdCRDQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LTdDLTM0ICAgKGhleCkJCVViZWUgSW50ZXJhY3RpdmUgQ29ycC4KLTY0N0MzNCAgICAgKGJhc2UgMTYpCQlVYmVlIEludGVyYWN0aXZlIENvcnAuCi0JCQkJMTBGLTEsIE5vLiA1LCBUYWl5dWFuIDFzdCBTdAotCQkJCUpodWJlaSBDaXR5IEhzaW5jaHUgQ291bnR5IDMwMgotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotNjQtN0QtODEgICAoaGV4KQkJWU9LT1RBIElORFVTVFJJQUwgQ08sLkxURAotNjQ3RDgxICAgICAoYmFzZSAxNikJCVlPS09UQSBJTkRVU1RSSUFMIENPLC5MVEQKLQkJCQk1LTU1IE5JU0hJSVdBVEEKLQkJCQkzLUNIT01FCi0JCQkJSElHQVNISSBPU0FLQS1DSVRZIE9TQUtBIDU3OC0wOTQ3Ci0JCQkJSkFQQU4KLQotNjQtN0YtREEgICAoaGV4KQkJVEVLVEVMSUMgQ29tbXVuaWNhdGlvbnMgSW5jLgotNjQ3RkRBICAgICAoYmFzZSAxNikJCVRFS1RFTElDIENvbW11bmljYXRpb25zIEluYy4KLQkJCQk3NjU3IDEwdGggU3RyZWV0IE5FCi0JCQkJQ2FsZ2FyeSBBbGJlcnRhIFQyRSA4WDIKLQkJCQlDQU5BREEKLQotNjQtODAtOEIgICAoaGV4KQkJVkcgQ29udHJvbHMsIEluYy4KLTY0ODA4QiAgICAgKGJhc2UgMTYpCQlWRyBDb250cm9scywgSW5jLgotCQkJCTExIEJ1dHRlcm51dCBEcml2ZQotCQkJCVZlcm5vbiBOSiAwNzQ2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtODAtOTkgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTY0ODA5OSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotNjQtODEtMjUgICAoaGV4KQkJQWxwaGF0cm9uIE1hcmluZSBCVgotNjQ4MTI1ICAgICAoYmFzZSAxNikJCUFscGhhdHJvbiBNYXJpbmUgQlYKLQkJCQlTY2hhYXJkaWprIDIzCi0JCQkJUm90dGVyZGFtIFp1aWQtSG9sbGFuZCAzMDYzTkgKLQkJCQlORVRIRVJMQU5EUwotCi02NC04Ny04OCAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi02NDg3ODggICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkgCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC04Ny1ENyAgIChoZXgpCQlBREIgQnJvYWRiYW5kIEl0YWxpYQotNjQ4N0Q3ICAgICAoYmFzZSAxNikJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi0JCQkJVklBTEUgU0FSQ0EgMjIyCi0JCQkJTUlMQU5PICAyMDEyNiAKLQkJCQlJVEFMWQotCi02NC05OS01RCAgIChoZXgpCQlMR0UgCi02NDk5NUQgICAgIChiYXNlIDE2KQkJTEdFIAotCQkJCTYwLTM5ICwgS2FzYW4gLWRvbmcgLCBHdW1jaGVvbi1ndS4KLQkJCQlTZW91bCAgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjQtOUItMjQgICAoaGV4KQkJViBUZWNobm9sb2d5IENvLiwgTHRkLgotNjQ5QjI0ICAgICAoYmFzZSAxNikJCVYgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlZQlAgRWFzdCBUb3dlciA1RiwKLQkJCQkxMzQgR29kby1jaG8sIEhvZ29nYXlhLWt1LAotCQkJCVlva29oYW1hIGNpdHkgS2FuYWdhd2EgMjQwLTAwMDUKLQkJCQlKQVBBTgotCi02NC05Qy04RSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotNjQ5QzhFICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC05RS1GMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi02NDlFRjMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtOUYtRjcgICAoaGV4KQkJS29uZSBPWWoKLTY0OUZGNyAgICAgKGJhc2UgMTYpCQlLb25lIE9ZagotCQkJCU15bGx5a2F0dSAzCi0JCQkJSHl2aW5rYWEgSHl2aW5rYWEgMDU4MzAKLQkJCQlGSU5MQU5ECi0KLTY0LUEwLUU3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTY0QTBFNyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC1BMi0zMiAgIChoZXgpCQlPT08gU2FtbGlnaHQKLTY0QTIzMiAgICAgKGJhc2UgMTYpCQlPT08gU2FtbGlnaHQKLQkJCQk0NEEsIER1Ym5pbnNrYXlhIHN0ci4sIAotCQkJCU1vc2NvdyAgMTI3NTkxCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTY0LUE3LTY5ICAgKGhleCkJCUhUQyBDb3Jwb3JhdGlvbgotNjRBNzY5ICAgICAoYmFzZSAxNikJCUhUQyBDb3Jwb3JhdGlvbgotCQkJCU5vLiAyMywgWGluZ2h1YSBSZCwgCi0JCQkJVGFveXVhbiBDb3VudHkgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjQtQTgtMzcgICAoaGV4KQkJSnVuaSBLb3JlYSBDby4sIEx0ZAotNjRBODM3ICAgICAoYmFzZSAxNikJCUp1bmkgS29yZWEgQ28uLCBMdGQKLQkJCQlFNjAzIEJ1bmRhbmcgVGVjaG5vLVBhcmsgMTUxCi0JCQkJWWF0YXAsIEJ1bmRhbmcKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaSA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTY0LUFFLTBDICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTY0QUUwQyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC1BRS04OCAgIChoZXgpCQlQb2x5dGVjIEdtYkgKLTY0QUU4OCAgICAgKGJhc2UgMTYpCQlQb2x5dGVjIEdtYkgKLQkJCQlQb2x5dGVjIFBsYXR6IDEtNwotCQkJCVdhbGRicm9ubiBCVyA3NjMzNwotCQkJCUdFUk1BTlkKLQotNjQtQjYtNEEgICAoaGV4KQkJVmlWT3RlY2gsIEluYy4KLTY0QjY0QSAgICAgKGJhc2UgMTYpCQlWaVZPdGVjaCwgSW5jLgotCQkJCTQ1MSBFbCBDYW1pbm8gUmVhbAotCQkJCVNhbnRhIENsYXJhIENBIDk1MDUwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02NC1COS1FOCAgIChoZXgpCQlBcHBsZSwgSW5jCi02NEI5RTggICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtQkMtMTEgICAoaGV4KQkJQ29tYmlRIEFCCi02NEJDMTEgICAgIChiYXNlIDE2KQkJQ29tYmlRIEFCCi0JCQkJU2NpZW5jZSBQYXJrCi0JCQkJR2p1dGVyaWdhdGFuIDkKLQkJCQlKb25rb3BpbmcgIDU1MyAxOAotCQkJCVNXRURFTgotCi02NC1DNS1BQSAgIChoZXgpCQlTb3V0aCBBZnJpY2FuIEJyb2FkY2FzdGluZyBDb3Jwb3JhdGlvbgotNjRDNUFBICAgICAoYmFzZSAxNikJCVNvdXRoIEFmcmljYW4gQnJvYWRjYXN0aW5nIENvcnBvcmF0aW9uCi0JCQkJNzcgVHdpY2tlbmhhbSBBdmVudWUKLQkJCQlDb3JuZXIgSGVubGV5IFJvYWQKLQkJCQlBdWNrbGFuZCBQYXJrIEdhdXRlbmcgMjAwNgotCQkJCVNPVVRIIEFGUklDQQotCi02NC1DNi1BRiAgIChoZXgpCQlBWEVSUkEgTmV0d29ya3MgTHRkCi02NEM2QUYgICAgIChiYXNlIDE2KQkJQVhFUlJBIE5ldHdvcmtzIEx0ZAotCQkJCTI0ICBSYW91bCBXYWxsZW5iZXJnIFN0LiAsIAotCQkJCVRlbC1Bdml2ICAgSVNSQUVMIDY5NzE5Ci0JCQkJSVNSQUVMCi0KLTY0LUQwLTJEICAgKGhleCkJCU5leHQgR2VuZXJhdGlvbiBJbnRlZ3JhdGlvbiAoTkdJKQotNjREMDJEICAgICAoYmFzZSAxNikJCU5leHQgR2VuZXJhdGlvbiBJbnRlZ3JhdGlvbiAoTkdJKQotCQkJCTEzNyBydWUgZGUgVmVyc2FpbGxlcwotCQkJCUxlIENoZXNuYXkgIDc4MTUwCi0JCQkJRlJBTkNFCi0KLTY0LUQxLUEzICAgKGhleCkJCVNpdGVjb20gRXVyb3BlIEJWCi02NEQxQTMgICAgIChiYXNlIDE2KQkJU2l0ZWNvbSBFdXJvcGUgQlYKLQkJCQlMaW5hdGViYWFuIDEwMQotCQkJCVJvdHRlcmRhbSBadWlkLUhvbGxhbmQgMzA0NSBBSAotCQkJCU5FVEhFUkxBTkRTCi0KLTY0LUQyLTQxICAgKGhleCkJCUtlaXRoICYgS29lcCBHbWJICi02NEQyNDEgICAgIChiYXNlIDE2KQkJS2VpdGggJiBLb2VwIEdtYkgKLQkJCQlVZWxsZW5kYWhsZXIgU3RyLiAxOTkKLQkJCQlXdXBwZXJ0YWwgTlJXIDQyMTA5Ci0JCQkJR0VSTUFOWQotCi02NC1ENC1EQSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTY0RDREQSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTY0LUQ5LTEyICAgKGhleCkJCVNvbGlkaWNhLCBJbmMuCi02NEQ5MTIgICAgIChiYXNlIDE2KQkJU29saWRpY2EsIEluYy4KLQkJCQk1ODQwIEludGVyZmFjZSBEcml2ZQotCQkJCVN1aXRlIDIwMAotCQkJCUFubiBBcmJvciBNaWNoaWdhbiA0ODEwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtRDktODkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNjREOTg5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY0LURCLTE4ICAgKGhleCkJCU9wZW5QYXR0ZXJuCi02NERCMTggICAgIChiYXNlIDE2KQkJT3BlblBhdHRlcm4KLQkJCQkxMDkvMTExIHJ1ZSBkZXMgQ/R0ZXMKLQkJCQlNYWlzb25zIExhZmZpdHRlIFl2ZWxpbmVzIDc4NjAwCi0JCQkJRlJBTkNFCi0KLTY0LURDLTAxICAgKGhleCkJCVN0YXRpYyBTeXN0ZW1zIEdyb3VwIFBMQwotNjREQzAxICAgICAoYmFzZSAxNikJCVN0YXRpYyBTeXN0ZW1zIEdyb3VwIFBMQwotCQkJCUhlYXRobWlsbCBSb2FkCi0JCQkJV29tYm91cm5lCi0JCQkJV29sdmVyaGFtcHRvbiBXZXN0IE1pZGxhbmRzIFdWNSA4QU4KLQkJCQlVTklURUQgS0lOR0RPTQotCi02NC1ERS0xQyAgIChoZXgpCQlLaW5nbmV0aWMgUHRlIEx0ZAotNjRERTFDICAgICAoYmFzZSAxNikJCUtpbmduZXRpYyBQdGUgTHRkCi0JCQkJNDcgS2FraSBCdWtpdCBQbGFjZQotCQkJCSMwMi0wMCBFdW5vcyBUZWNocGFyawotCQkJCTQxNjIyNQotCQkJCVNJTkdBUE9SRQotCi02NC1FMS02MSAgIChoZXgpCQlERVAgQ29ycC4KLTY0RTE2MSAgICAgKGJhc2UgMTYpCQlERVAgQ29ycC4KLQkJCQlOaXNoaS1zaGluanVrdSA2LTEyLTcKLQkJCQlTdG9yayBTaGluanVrdSAxRiBBLTExCi0JCQkJU2hpbmp1a3UgVG9reW8gMTYwLTAwMjMKLQkJCQlKQVBBTgotCi02NC1FNi04MiAgIChoZXgpCQlBcHBsZSwgSW5jLgotNjRFNjgyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBpbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtRTgtNEYgICAoaGV4KQkJU2VyaWFsd2F5IENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4gTHRkCi02NEU4NEYgICAgIChiYXNlIDE2KQkJU2VyaWFsd2F5IENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4gTHRkCi0JCQkJUm9vbSAzMTUsIDcwNiBQYWludGluZyBSb29tLCAKLQkJCQk4NSMgSmlhbmNhaWNoZW5nIFdlc3QgUm9hZCwgSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA5NgotCQkJCUNISU5BCi0KLTY0LUU4LUU2ICAgKGhleCkJCWdsb2JhbCBtb2lzdHVyZSBtYW5hZ2VtZW50IHN5c3RlbQotNjRFOEU2ICAgICAoYmFzZSAxNikJCWdsb2JhbCBtb2lzdHVyZSBtYW5hZ2VtZW50IHN5c3RlbQotCQkJCTExMTMyIGJyb2FkIHJpdmVyIHJvYWQKLQkJCQlzdWl0ZSBhCi0JCQkJaXJtbyBzYyAyOTA2MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtRUQtNTcgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTY0RUQ1NyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOLiBVUyA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjQtRUQtNjIgICAoaGV4KQkJV09PUkkgU1lTVEVNUyBDby4sIEx0ZAotNjRFRDYyICAgICAoYmFzZSAxNikJCVdPT1JJIFNZU1RFTVMgQ28uLCBMdGQKLQkJCQkxMDFIbyAjNDItOSwgSmVvbmdqYS1kb25nLCBQdW5kYW5nLWd1Ci0JCQkJU3VuZ25hbS1zaSBLeXVuZ2dpLWRvIDQ2My04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjQtRjItNDIgICAoaGV4KQkJR2VyZGVzIEFrdGllbmdlc2VsbHNjaGFmdAotNjRGMjQyICAgICAoYmFzZSAxNikJCUdlcmRlcyBBa3RpZW5nZXNlbGxzY2hhZnQKLQkJCQlCZXJnZXJ3aWVzZW5zdHIuIDkKLQkJCQlNZWNrZW5oZWltIE5SVyA1MzM0MAotCQkJCUdFUk1BTlkKLQotNjQtRjktNzAgICAoaGV4KQkJS2VuYWRlIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgQ28uLExURC4KLTY0Rjk3MCAgICAgKGJhc2UgMTYpCQlLZW5hZGUgRWxlY3Ryb25pY3MgVGVjaG5vbG9neSBDby4sTFRELgotCQkJCUYvRyByb29tLDExL0YsSGFuZ2R1IGJ1aWxkaW5nLEh1YWZ1IFJkLCBGdXRpYW4gZGlzdHJpY3QsCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTY0LUY5LTg3ICAgKGhleCkJCUF2dmFzaSBJbmMuCi02NEY5ODcgICAgIChiYXNlIDE2KQkJQXZ2YXNpIEluYy4KLQkJCQkxMDMgUmFuZGFsbCBEci4KLQkJCQlXYXRlcmxvbyBPTiBOMlYgMUM1Ci0JCQkJQ0FOQURBCi0KLTY0LUZDLThDICAgKGhleCkJCVpvbmFyIFN5c3RlbXMKLTY0RkM4QyAgICAgKGJhc2UgMTYpCQlab25hciBTeXN0ZW1zCi0JCQkJMTgyMDAgQ2FzY2FkZSBBdmUgU291dGgKLQkJCQlTZWF0dGxlIFdBIDk4MTE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC0wNS1DQSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotNjgwNUNBICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi02OC0wOS0yNyAgIChoZXgpCQlBcHBsZSwgSW5jLgotNjgwOTI3ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC0xMi0yRCAgIChoZXgpCQlTcGVjaWFsIEluc3RydW1lbnQgRGV2ZWxvcG1lbnQgQ28uLCBMdGQuCi02ODEyMkQgICAgIChiYXNlIDE2KQkJU3BlY2lhbCBJbnN0cnVtZW50IERldmVsb3BtZW50IENvLiwgTHRkLgotCQkJCTZGLTEsIE5vLiAxMjMsIExhbmUgMjM1Ci0JCQkJQmFvIENoaWFvIFJvYWQKLQkJCQlIc2luIFRpZW4gVGFpcGVpIEhzaWVuIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNjgtMTYtMDUgICAoaGV4KQkJU3lzdGVtcyBBbmQgRWxlY3Ryb25pYyBEZXZlbG9wbWVudCBGWkNPCi02ODE2MDUgICAgIChiYXNlIDE2KQkJU3lzdGVtcyBBbmQgRWxlY3Ryb25pYyBEZXZlbG9wbWVudCBGWkNPCi0JCQkJUm91bmRhYm91dCBuby4gOAotCQkJCUZhY3RvcnkgdW5pdCBuby4gRkItMDYKLQkJCQlKZWJlbCBBbGkgZnJlZSBab25lIER1YmFpIFAuTy5Cb3ggNjExMjkKLQkJCQlVTklURUQgQVJBQiBFTUlSQVRFUwotCi02OC0xQS1CMiAgIChoZXgpCQl6dGUgY29ycG9yYXRpb24KLTY4MUFCMiAgICAgKGJhc2UgMTYpCQl6dGUgY29ycG9yYXRpb24KLQkJCQkxMi9GLix6dGUgUiZEIEJ1aWxkaW5nLEtlamluYW4gUm9hZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi02OC0xRi1EOCAgIChoZXgpCQlBZHZhbmNlZCBUZWxlbWV0cnkKLTY4MUZEOCAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBUZWxlbWV0cnkKLQkJCQkxMDY3MCBUcmVlbmEgU3RyZWV0Ci0JCQkJU3VpdGUgMTA2Ci0JCQkJU2FuIERpZWdvIENBIDkyMTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC0yMy00QiAgIChoZXgpCQlOaWhvbiBEZW5neW8gS291c2FrdQotNjgyMzRCICAgICAoYmFzZSAxNikJCU5paG9uIERlbmd5byBLb3VzYWt1Ci0JCQkJc2hpbm1hY2hpIDIxLTEKLQkJCQltYXRvYmEKLQkJCQlrYXdhZ29lLXNoaSBzYWl0YW1hIDM1MC0xMTA3Ci0JCQkJSkFQQU4KLQotNjgtNDMtNTIgICAoaGV4KQkJQmh1dSBMaW1pdGVkCi02ODQzNTIgICAgIChiYXNlIDE2KQkJQmh1dSBMaW1pdGVkCi0JCQkJT2ZmaWNlIDEsIDQ2NSBNdCBFZGVuIFJvYWQKLQkJCQlNdCBFZGVuCi0JCQkJQXVja2xhbmQgIDEwMjMKLQkJCQlORVcgWkVBTEFORAotCi02OC00Qi04OCAgIChoZXgpCQlHYWx0cm9uaWNzIFRlbGVtZXRyeSBJbmMuCi02ODRCODggICAgIChiYXNlIDE2KQkJR2FsdHJvbmljcyBUZWxlbWV0cnkgSW5jLgotCQkJCTMxIEx1cGkgQ3QKLQkJCQlTdWl0ZSAxNTAKLQkJCQlQYWxtIENvYXN0IEZsb3JpZGEgMzIxMzcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY4LTU0LUY1ICAgKGhleCkJCWVuTGlnaHRlZCBJbmMKLTY4NTRGNSAgICAgKGJhc2UgMTYpCQllbkxpZ2h0ZWQgSW5jCi0JCQkJMTQ1MSBHcmFudCBSZAotCQkJCVN1aXRlIDIwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY4LTU5LTdGICAgKGhleCkJCUFsY2F0ZWwgTHVjZW50Ci02ODU5N0YgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQKLQkJCQlWaWEgVHJlbnRvLCAzMAotCQkJCVZpbWVyY2F0ZSBNQiAyMDA1OQotCQkJCUlUQUxZCi0KLTY4LTVCLTM2ICAgKGhleCkJCVBPV0VSVEVDSCBJTkRVU1RSSUFMIENPLiwgTFRELgotNjg1QjM2ICAgICAoYmFzZSAxNikJCVBPV0VSVEVDSCBJTkRVU1RSSUFMIENPLiwgTFRELgotCQkJCTEwRiwgTm8uIDQwNywgQ2h1bmcgU2hhbiBSZC4sIFNlYyAyLAotCQkJCUNodW5nIEhvIFRhaXBlaSBDb3VudHkgMjM1NTgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTY4LTVELTQzICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotNjg1RDQzICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotNjgtNUUtNkIgICAoaGV4KQkJUG93ZXJSYXkgQ28uLCBMdGQuCi02ODVFNkIgICAgIChiYXNlIDE2KQkJUG93ZXJSYXkgQ28uLCBMdGQuCi0JCQkJN0YtMSwgTm8gMTkwLCBTZWMgMiwgQ2h1bmcgSHNpbmcgUm9hZCwgU2luZGlhbiBEaXN0cmljdAotCQkJCU5ldyBUYWlwZWkgQ2l0eSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02OC02My01OSAgIChoZXgpCQlBZHZhbmNlZCBEaWdpdGFsIEJyb2FkY2FzdCBTQQotNjg2MzU5ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIERpZ2l0YWwgQnJvYWRjYXN0IFNBCi0JCQkJQXZlbnVlIGRlIFRvdXJuYXkgNwotCQkJCVByZWdueS1DaGFtYmVzeSAgMTI5MgotCQkJCVNXSVRaRVJMQU5ECi0KLTY4LTZFLTIzICAgKGhleCkJCVdpMyBJbmMuCi02ODZFMjMgICAgIChiYXNlIDE2KQkJV2kzIEluYy4KLQkJCQk3NjIwIE9tbml0ZWNoIFBsYWNlCi0JCQkJU3VpdGUgIzQKLQkJCQlWaWN0b3IgTlkgMTQ1NjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY4LTcyLTUxICAgKGhleCkJCVViaXF1aXRpIE5ldHdvcmtzCi02ODcyNTEgICAgIChiYXNlIDE2KQkJVWJpcXVpdGkgTmV0d29ya3MKLQkJCQk5MSBFLiBUYXNtYW4gRHIuCi0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtNzgtNEMgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi02ODc4NEMgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLTY4LTc5LTI0ICAgKGhleCkJCUVMUy1HbWJIICYgQ28uIEtHCi02ODc5MjQgICAgIChiYXNlIDE2KQkJRUxTLUdtYkggJiBDby4gS0cKLQkJCQlEYW1tc3RyYXNzZSAyMQotCQkJCVdlcnRoZXIgTlJXIDMzODI0Ci0JCQkJR0VSTUFOWQotCi02OC03OS1FRCAgIChoZXgpCQlTSEFSUCBDb3Jwb3JhdGlvbgotNjg3OUVEICAgICAoYmFzZSAxNikJCVNIQVJQIENvcnBvcmF0aW9uCi0JCQkJMjItMjIsTmFnYWlrZS1DaG8KLQkJCQlBYmVuby1LdQotCQkJCU9zYWthLUNpdHkgT3Nha2EtUHJlZmVjdHVyZSA1NDUtODUyMgotCQkJCUpBUEFOCi0KLTY4LTdGLTc0ICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotNjg3Rjc0ICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtODQtNzAgICAoaGV4KQkJZVNTeXMgQ28uLEx0ZAotNjg4NDcwICAgICAoYmFzZSAxNikJCWVTU3lzIENvLixMdGQKLQkJCQlEYWVydW5nIFBvc3QgVG93ZXIgNSAxNUYsIDYwLTMKLQkJCQlHYXNhbi1kb25nCi0JCQkJU2VvdWwgR2V1bWNoZW9uLWd1IDE1My03MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNjgtODUtNDAgICAoaGV4KQkJSUdJIE1vYmlsZSwgSW5jLgotNjg4NTQwICAgICAoYmFzZSAxNikJCUlHSSBNb2JpbGUsIEluYy4KLQkJCQk0RiBLeW9uZ25hbSBCbGRnLiwKLQkJCQk4MzAtNDggWW9rc2FtLWRvbmcsIEthbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02OC04Ny02QiAgIChoZXgpCQlJTlEgTW9iaWxlIExpbWl0ZWQKLTY4ODc2QiAgICAgKGJhc2UgMTYpCQlJTlEgTW9iaWxlIExpbWl0ZWQKLQkJCQk2IEhlc3RlciBSb2FkCi0JCQkJQmF0dGVyc2VhIExvbmRvbiBTVzExIDRBTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTY4LTkyLTM0ICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotNjg5MjM0ICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZS4KLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY4LTk3LTRCICAgKGhleCkJCVNoZW56aGVuIENvc3RhciBFbGVjdHJvbmljcyBDby4gTHRkLgotNjg5NzRCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIENvc3RhciBFbGVjdHJvbmljcyBDby4gTHRkLgotCQkJCU5vLjk0IEZ1eXVhbiAxc3QgUm9hZCxZdXl1YW4gSW5kdXN0cmlhbCBQYXJrLAotCQkJCUhlcGluZyBWaWxsYWdlLEZ1eW9uZyBUb3duLCBCYW9BbiBEaXN0cmljdAotCQkJCVNoZW56aGVuICBHdWFuZ2RvbmcgNTE4MTAzCi0JCQkJQ0hJTkEKLQotNjgtOUMtNUUgICAoaGV4KQkJQWNTaVAgVGVjaG5vbG9neSBDb3JwLgotNjg5QzVFICAgICAoYmFzZSAxNikJCUFjU2lQIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkzRi4sIE5vLjIyLCBEYWxpbiBSZC4KLQkJCQlUYW95dWFuIFRhb3l1YW4gQ291bnR5IDMzMDY3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02OC1BMS1CNyAgIChoZXgpCQlIb25naGFvIE1pbmdjaHVhbiBUZWNobm9sb2d5IChCZWlqaW5nKSBDTy4sTHRkLgotNjhBMUI3ICAgICAoYmFzZSAxNikJCUhvbmdoYW8gTWluZ2NodWFuIFRlY2hub2xvZ3kgKEJlaWppbmcpIENPLixMdGQuCi0JCQkJRmxvb3IgOCxUb3dlciBBLCBXYW5saXUgWWljaGVuZyBCdWlsZGluZwotCQkJCU5vLjExLCBDaGFuZ2NodW4gUWlhbyBSb2FkLCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg5Ci0JCQkJQ0hJTkEKLQotNjgtQTMtQzQgICAoaGV4KQkJTGl0ZW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTY4QTNDNCAgICAgKGJhc2UgMTYpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLDkwLENoaWVuIDEgUm9hZCxDaHVuZ0hvLAotCQkJCVRhaVBlaSAgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTY4LUE4LTZEICAgKGhleCkJCUFwcGxlLCBJbmMuCi02OEE4NkQgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQljdXBlcnRpbm8gIGNBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC1BQS1EMiAgIChoZXgpCQlEQVRFQ1MgTFRELiwKLTY4QUFEMiAgICAgKGJhc2UgMTYpCQlEQVRFQ1MgTFRELiwKLQkJCQlCVUwuIFRTQVJJR1JBRFNLTyBTSE9TU0UgMTE1QQotCQkJCVNPRklBICAxNzg0Ci0JCQkJQlVMR0FSSUEKLQotNjgtQjQtM0EgICAoaGV4KQkJV2F0ZXJGdXJuYWNlIEludGVybmF0aW9uYWwsIEluYy4KLTY4QjQzQSAgICAgKGJhc2UgMTYpCQlXYXRlckZ1cm5hY2UgSW50ZXJuYXRpb25hbCwgSW5jLgotCQkJCTkwMDAgQ29uc2VydmF0aW9uIFdheQotCQkJCUZvcnQgV2F5bmUgSU4gNDY4MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTY4LUI1LTk5ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci02OEI1OTkgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtQjYtRkMgICAoaGV4KQkJSGl0cm9uIFRlY2hub2xvZ2llcy4gSW5jCi02OEI2RkMgICAgIChiYXNlIDE2KQkJSGl0cm9uIFRlY2hub2xvZ2llcy4gSW5jCi0JCQkJTm8uIDEtOCwgTGlzaW5nIDFzdCBSZC4gSHNpbmNodSBTY2llbmNlIFBhcmssIEhzaW5jaHUsIDMwMCwgVGFpd2FuLCBSLk8uQyAKLQkJCQlIc2luLWNodSAgMzAwCi0JCQkJVEFJV0FOLCBQUk9WSU5DRSBPRiBDSElOQQotCi02OC1CQy0wQyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi02OEJDMEMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtQkQtQUIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotNjhCREFCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtQ0EtMDAgICAoaGV4KQkJT2N0b3B1cyBTeXN0ZW1zIExpbWl0ZWQKLTY4Q0EwMCAgICAgKGJhc2UgMTYpCQlPY3RvcHVzIFN5c3RlbXMgTGltaXRlZAotCQkJCTM2L0YsIDE0OCBFbGVjdHJpYyBSb2FkCi0JCQkJTm9ydGggUG9pbnQKLQkJCQlIT05HIEtPTkcKLQotNjgtQ0MtOUMgICAoaGV4KQkJTWluZSBTaXRlIFRlY2hub2xvZ2llcwotNjhDQzlDICAgICAoYmFzZSAxNikJCU1pbmUgU2l0ZSBUZWNobm9sb2dpZXMKLQkJCQkyNS0yNyBXaGl0aW5nIFN0cmVldAotCQkJCUFydGFybW9uIE5TVyAyMDY0Ci0JCQkJQVVTVFJBTElBCi0KLTY4LUNELTBGICAgKGhleCkJCVUgVGVrIENvbXBhbnkgTGltaXRlZAotNjhDRDBGICAgICAoYmFzZSAxNikJCVUgVGVrIENvbXBhbnkgTGltaXRlZAotCQkJCUZMNSwgQkxERzEyLCAzUkQgRElTVFJJQ1QsIFRBTkdUT1UgSU5EVVNUUklBTCBQQVJLCi0JCQkJU0hJWUFOLCBCQU9BTgotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgwMTgKLQkJCQlDSElOQQotCi02OC1DRS00RSAgIChoZXgpCQlMLTMgQ29tbXVuaWNhdGlvbnMgSW5mcmFyZWQgUHJvZHVjdHMKLTY4Q0U0RSAgICAgKGJhc2UgMTYpCQlMLTMgQ29tbXVuaWNhdGlvbnMgSW5mcmFyZWQgUHJvZHVjdHMKLQkJCQkzNDE0IEhlcnJtYW5uIERyaXZlCi0JCQkJR2FybGFuZCBUWCA3NTA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtRDEtRkQgICAoaGV4KQkJU2hlbnpoZW4gVHJpbWF4IFRlY2hub2xvZ3kgQ28uLEx0ZAotNjhEMUZEICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFRyaW1heCBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlSb29tIDEwMTYsIDEwRiwgTWF4IFNtYXJ0IENvbW1lcmNpYWwgQ2VudGVyLAotCQkJCU5vLjIxIEJhbyBYaW5nIFJvYWQsIEJhbydhbiBEaXN0cmljdCwgU2hlbnpoZW4sIFBSQwotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMzMKLQkJCQlDSElOQQotCi02OC1EOS0yNSAgIChoZXgpCQlQcm9TeXMgRGV2ZWxvcG1lbnQgU2VydmljZXMKLTY4RDkyNSAgICAgKGJhc2UgMTYpCQlQcm9TeXMgRGV2ZWxvcG1lbnQgU2VydmljZXMKLQkJCQlNaWxsIEhvdXNlCi0JCQkJNDQtNDYgTWlsbCBHcmVlbiBSb2FkCi0JCQkJTWl0Y2hhbSBTdXJyZXkgQ1I0IDRIWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTY4LURCLTk2ICAgKGhleCkJCU9QV0lMTCBUZWNobm9sb2dpZXMgQ08gLixMVEQKLTY4REI5NiAgICAgKGJhc2UgMTYpCQlPUFdJTEwgVGVjaG5vbG9naWVzIENPIC4sTFRECi0JCQkJUm9vbSA0MTUsRGlnaXRhbCBNZWRpYSBCdWlsZGluZyxOTy43IFNoYW5nZGkgSW5mb3JtYXRpb24gUm9hZCxIYWlEaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLTY4LURDLUU4ICAgKGhleCkJCVBhY2tldFN0b3JtIENvbW11bmljYXRpb25zCi02OERDRTggICAgIChiYXNlIDE2KQkJUGFja2V0U3Rvcm0gQ29tbXVuaWNhdGlvbnMKLQkJCQkyMCBNZXJpZGlhbiBSZAotCQkJCUVhdG9udG93biBOSiAwNzcyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNjgtRTQtMUYgICAoaGV4KQkJVW5nbGF1YmUgSWRlbnRlY2ggR21iSAotNjhFNDFGICAgICAoYmFzZSAxNikJCVVuZ2xhdWJlIElkZW50ZWNoIEdtYkgKLQkJCQlBbiBkZXIgTW9vc2FjaCAzYQotCQkJCU1hc3NlbmhhdXNlbiBCYXllcm4gODUzNzYKLQkJCQlHRVJNQU5ZCi0KLTY4LUVCLUFFICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotNjhFQkFFICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02OC1FQi1DNSAgIChoZXgpCQlBbmdzdHJlbSBUZWxlY29tCi02OEVCQzUgICAgIChiYXNlIDE2KQkJQW5nc3RyZW0gVGVsZWNvbQotCQkJCVl1emhuYXlhIHByb216b25hLCBwYXNzYWdlIDQ4MDYsIDQsIGJ1aWxkIDMgCi0JCQkJWmVsZW5vZ3JhZCBNb3Njb3cgMTI0NDYwCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLTY4LUVELTQzICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbgotNjhFRDQzICAgICAoYmFzZSAxNikJCVJlc2VhcmNoIEluIE1vdGlvbgotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi02OC1FRi1CRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi02OEVGQkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02OC1GMS0yNSAgIChoZXgpCQlEYXRhIENvbnRyb2xzIEluYy4KLTY4RjEyNSAgICAgKGJhc2UgMTYpCQlEYXRhIENvbnRyb2xzIEluYy4KLQkJCQkzLTE3LTQgVWVubwotCQkJCVRhaXRvLWt1IFRva3lvIDExMDAwMDUKLQkJCQlKQVBBTgotCi02OC1GOC05NSAgIChoZXgpCQlSZWRmbG93IExpbWl0ZWQKLTY4Rjg5NSAgICAgKGJhc2UgMTYpCQlSZWRmbG93IExpbWl0ZWQKLQkJCQkxLzI3IENvdW5paGFuIFJkIAotCQkJCVNldmVudGVlbiBNaWxlIFJvY2tzCi0JCQkJQnJpc2JhbmUgUXVlZW5zbGFuZCA0MDczCi0JCQkJQVVTVFJBTElBCi0KLTZDLTA0LTYwICAgKGhleCkJCVJCSCBBY2Nlc3MgVGVjaG5vbG9naWVzIEluYy4KLTZDMDQ2MCAgICAgKGJhc2UgMTYpCQlSQkggQWNjZXNzIFRlY2hub2xvZ2llcyBJbmMuCi0JCQkJMiBBdXRvbWF0aWMgUm9hZAotCQkJCVVuaXQgMTA4Ci0JCQkJQnJhbXB0b24gT250YXJpbyBMNlMgNks4Ci0JCQkJQ0FOQURBCi0KLTZDLTBFLTBEICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi02QzBFMEQgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotNkMtMEYtNkEgICAoaGV4KQkJSkRDIFRlY2ggQ28uLCBMdGQuCi02QzBGNkEgICAgIChiYXNlIDE2KQkJSkRDIFRlY2ggQ28uLCBMdGQuCi0JCQkJMzcwLTEyIERhZW15dW5nLXJpIERhZWdvdC1teXVuCi0JCQkJS2ltcG8tc2kgS3l1bmdnaS1kbyA0MTAtODUzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTZDLTE4LTExICAgKGhleCkJCURlY2F0dXIgRWxlY3Ryb25pY3MKLTZDMTgxMSAgICAgKGJhc2UgMTYpCQlEZWNhdHVyIEVsZWN0cm9uaWNzCi0JCQkJNzE1IEJyaWdodCBTdHJlZXQKLQkJCQlEZWNhdHVyIElMIDYyNTIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02Qy0yMi1BQiAgIChoZXgpCQlBaW5zd29ydGggR2FtZSBUZWNobm9sb2d5Ci02QzIyQUIgICAgIChiYXNlIDE2KQkJQWluc3dvcnRoIEdhbWUgVGVjaG5vbG9neQotCQkJCTEwIEhvbGtlciBTdHJlZXQgCi0JCQkJTmV3aW5ndG9uIE5ldyBTb3V0aCBXYWxlcyAyMTI3Ci0JCQkJQVVTVFJBTElBCi0KLTZDLTIzLUI5ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi02QzIzQjkgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjEgODgKLQkJCQlTV0VERU4KLQotNkMtMkUtMzMgICAoaGV4KQkJQWNjZWxpbmsgVGVjaG5vbG9naWVzIENvLixMdGQuCi02QzJFMzMgICAgIChiYXNlIDE2KQkJQWNjZWxpbmsgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJODggWW91a2V5dWFuIFJvYWQsCi0JCQkJV3VoYW4gSHViZWkgNDMwMDc0Ci0JCQkJQ0hJTkEKLQotNkMtMkUtODUgICAoaGV4KQkJU0FHRU1DT00KLTZDMkU4NSAgICAgKGJhc2UgMTYpCQlTQUdFTUNPTQotCQkJCTI1MCByb3V0ZSBkZSBsJ0VtcGVyZXVyCi0JCQkJUlVFSUwgTUFMTUFJU09OICA5Mjg0OAotCQkJCUZSQU5DRQotCi02Qy0zMi1ERSAgIChoZXgpCQlJbmRpZW9uIFRlY2hub2xvZ2llcyBQdnQuIEx0ZC4KLTZDMzJERSAgICAgKGJhc2UgMTYpCQlJbmRpZW9uIFRlY2hub2xvZ2llcyBQdnQuIEx0ZC4KLQkJCQk2MDEsIEFscGhhIDIsIEdpZ2FzcGFjZSBJVCBQYXJrCi0JCQkJVmltYW4gTmFnYXIKLQkJCQlQdW5lICBNYWhhcmFzdHJhIDQxMTAxNAotCQkJCUlORElBCi0KLTZDLTMzLUE5ICAgKGhleCkJCU1hZ2ljamFjayBMUAotNkMzM0E5ICAgICAoYmFzZSAxNikJCU1hZ2ljamFjayBMUAotCQkJCTU3MDAgR2VvcmdpYSBBdmVudWUKLQkJCQlXZXN0IFBhbG0gQmVhY2ggRkwgMzM0MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTZDLTM5LTFEICAgKGhleCkJCUJlaWppbmcgWmhvbmdIdWFIdW4gTmV0d29yayBJbmZvcm1hdGlvbiBjZW50ZXIKLTZDMzkxRCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFpob25nSHVhSHVuIE5ldHdvcmsgSW5mb3JtYXRpb24gY2VudGVyCi0JCQkJNkYgQmVpQW8gTWFuc2lvbixIdWlYaW4gRWFzdCBTdHJlZXQgQTIsCi0JCQkJQ2hhb3lhbmcgRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDI5Ci0JCQkJQ0hJTkEKLQotNkMtM0EtODQgICAoaGV4KQkJU2hlbnpoZW4gQWVyby1TdGFydGVjaC4gQ28uTHRkCi02QzNBODQgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQWVyby1TdGFydGVjaC4gQ28uTHRkCi0JCQkJRjMtNCwgQnVpbGRpbmczLFpob25neXVudGFpIEluZHVzdHJpYWwgUGFyay5TaGl5YW4gVG93bi4sCi0JCQkJQmFvJ2FuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEwOAotCQkJCUNISU5BCi0KLTZDLTNFLTlDICAgKGhleCkJCUtFIEtuZXN0ZWwgRWxla3Ryb25payBHbWJICi02QzNFOUMgICAgIChiYXNlIDE2KQkJS0UgS25lc3RlbCBFbGVrdHJvbmlrIEdtYkgKLQkJCQlPc3RlcndhbGRlciBTdHIuIDEyCi0JCQkJSG9wZmVyYmFjaCBCYXZhcmlhIDg3NDk2Ci0JCQkJR0VSTUFOWQotCi02Qy01MC00RCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi02QzUwNEQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02Qy01Qy1ERSAgIChoZXgpCQlTdW5SZXBvcnRzLCBJbmMuCi02QzVDREUgICAgIChiYXNlIDE2KQkJU3VuUmVwb3J0cywgSW5jLgotCQkJCTE0MDYgQ2VkYXJ3b29kIERyLgotCQkJCVNhbiBNYXRlbyBDQSA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtNUQtNjMgICAoaGV4KQkJU2hlblpoZW4gUmFwb28gVGVjaG5vbG9neSBDby4sIEx0ZC4KLTZDNUQ2MyAgICAgKGJhc2UgMTYpCQlTaGVuWmhlbiBSYXBvbyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCUJsb2NrIEExLEIxLEIyLDFzdCBzZWNvbmQgc3RhZ2UsIDFzdCBJbmR1c3RyaWFsIFBhcmssIDNyZCBJbmR1c3RyaWFsIFpvbmUgLEZlbmdodWFuZyBGdXlvbmcsIEJhb0FuIAotCQkJCVNoZW5aaGVuICA1MTgxMDMKLQkJCQlDSElOQQotCi02Qy01RS03QSAgIChoZXgpCQlVYmlxdWl0b3VzIEludGVybmV0IFRlbGVjb20gQ28uLCBMdGQKLTZDNUU3QSAgICAgKGJhc2UgMTYpCQlVYmlxdWl0b3VzIEludGVybmV0IFRlbGVjb20gQ28uLCBMdGQKLQkJCQkjNTEyLCA1dGggRmxvb3IsIEtvbG9uIERpZ2l0YWwgVmFsbGV5LEd1cm8gMyhzYW0pLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTc3NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02Qy02Mi02RCAgIChoZXgpCQlNaWNyby1TdGFyIElOVCdMIENPLiwgTFRECi02QzYyNkQgICAgIChiYXNlIDE2KQkJTWljcm8tU3RhciBJTlQnTCBDTy4sIExURAotCQkJCU5vLjY5LCBMaWRlIFN0LiwgSmhvbmdoZSBDaXR5Ci0JCQkJVGFpcGVpIENvbnV0eSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi02Qy02Ri0xOCAgIChoZXgpCQlTdGVyZW90YXhpcywgSW5jLgotNkM2RjE4ICAgICAoYmFzZSAxNikJCVN0ZXJlb3RheGlzLCBJbmMuCi0JCQkJNDMyMCBGb3Jlc3QgUGFyayBBdmUKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTdC4gTG91aXMgTU8gNjMxMDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTZDLTcwLTM5ICAgKGhleCkJCU5vdmFyIEdtYkggCi02QzcwMzkgICAgIChiYXNlIDE2KQkJTm92YXIgR21iSCAKLQkJCQlKb2hhbm5lcy1NYXV0aGUtU3RyLiAxNAotCQkJCUFsYnN0YWR0IEJhZGVuLVd1cnR0ZW1iZXJnICA3MjQ1OAotCQkJCUdFUk1BTlkKLQotNkMtODEtRkUgICAoaGV4KQkJTWl0c3ViYSBDb3Jwb3JhdGlvbgotNkM4MUZFICAgICAoYmFzZSAxNikJCU1pdHN1YmEgQ29ycG9yYXRpb24KLQkJCQkxLTI2ODEKLQkJCQlIaXJvc2F3YS1jaG8KLQkJCQlLaXJ5dSBHdW5tYSAzNzYtODU1NQotCQkJCUpBUEFOCi0KLTZDLTgzLTM2ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotNkM4MzM2ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02Qy04Qy1EQiAgIChoZXgpCQlPdHVzIFRlY2hub2xvZ2llcyBMdGQKLTZDOENEQiAgICAgKGJhc2UgMTYpCQlPdHVzIFRlY2hub2xvZ2llcyBMdGQKLQkJCQkyNiBCcmFpZCBSb2FkCi0JCQkJRWRpbmJ1cmdoIE1vcm5pbmdzaWRlIEVIMTAgNkFECi0JCQkJVU5JVEVEIEtJTkdET00KLQotNkMtOEQtNjUgICAoaGV4KQkJV2lyZWxlc3MgR2x1ZSBOZXR3b3JrcywgSW5jLgotNkM4RDY1ICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIEdsdWUgTmV0d29ya3MsIEluYy4KLQkJCQkxNjAxIE4uIE1haW4gU3RyZWV0LCBTdWl0ZSAyMDIKLQkJCQlXYWxudXQgQ3JlZWsgQ0EgOTQ1OTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTZDLTkyLUJGICAgKGhleCkJCUluc3B1ciBFbGVjdHJvbmljIEluZm9ybWF0aW9uIEluZHVzdHJ5IENvLixMdGQuCi02QzkyQkYgICAgIChiYXNlIDE2KQkJSW5zcHVyIEVsZWN0cm9uaWMgSW5mb3JtYXRpb24gSW5kdXN0cnkgQ28uLEx0ZC4KLQkJCQlObyAyMjQgU2hhbmRhIFJvYWQKLQkJCQlKaW5hbiBTaGFuZG9uZyAyNTAwMTMKLQkJCQlDSElOQQotCi02Qy05Qi0wMiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotNkM5QjAyICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgT3UgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLTZDLTlDLUU5ICAgKGhleCkJCU5pbWJsZSBTdG9yYWdlCi02QzlDRTkgICAgIChiYXNlIDE2KQkJTmltYmxlIFN0b3JhZ2UKLQkJCQkyNjQ1IFphbmtlciBSb2FkCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTZDLTlDLUVEICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLTZDOUNFRCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi02Qy1BNi04MiAgIChoZXgpCQlFREFNIGluZm9ybWF0aW9uICYgY29tbXVuaWNhdGlvbnMKLTZDQTY4MiAgICAgKGJhc2UgMTYpCQlFREFNIGluZm9ybWF0aW9uICYgY29tbXVuaWNhdGlvbnMKLQkJCQk2MDEsIEhhbmxpbSBWZXR1cmUgdG93biwgNjg5LTYKLQkJCQlHZXVtamVvbmctZG9uZwotCQkJCUd1bnBvIEd5ZW5nZ2ktRG8gNDM1LTg2MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02Qy1BNy04MCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotNkNBNzgwICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi02Qy1BOS0wNiAgIChoZXgpCQlUZWxlZmllbGQgTHRkCi02Q0E5MDYgICAgIChiYXNlIDE2KQkJVGVsZWZpZWxkIEx0ZAotCQkJCUZsYXQgRCwyL0YuLCBWYWxpYW50IEluZHVzdHJpYWwgQ2VudHJlLDItMTIgQXUgUHVpIFdhbiBTdHJlZXQsIAotCQkJCUZvIFRhbiwgTi5ULgotCQkJCUhvbmdrb25nICA4NTIKLQkJCQlDSElOQQotCi02Qy1BOS02RiAgIChoZXgpCQlUcmFuc1BhY2tldCBBUwotNkNBOTZGICAgICAoYmFzZSAxNikJCVRyYW5zUGFja2V0IEFTCi0JCQkJRHJhbW1lbnN2ZWllbiAxMzQKLQkJCQlCdWlsZGluZyA0Ci0JCQkJT3NsbyAgMDI3NwotCQkJCU5PUldBWQotCi02Qy1BQi00RCAgIChoZXgpCQlEaWdpdGFsIFBheW1lbnQgVGVjaG5vbG9naWVzCi02Q0FCNEQgICAgIChiYXNlIDE2KQkJRGlnaXRhbCBQYXltZW50IFRlY2hub2xvZ2llcwotCQkJCTQxMDUgR3JhbmR2aWV3IEh3eQotCQkJCUJ1cm5hYnkgQkMgVjVDIDZCNAotCQkJCUNBTkFEQQotCi02Qy1BQy02MCAgIChoZXgpCQlWZW5ldGV4IENvcnAKLTZDQUM2MCAgICAgKGJhc2UgMTYpCQlWZW5ldGV4IENvcnAKLQkJCQk4LTMtOSxTaGluLW1hY2hpCi0JCQkJT21lLXNoaSwgVG9reW8gMTk4LTAwMjQKLQkJCQlKQVBBTgotCi02Qy1BRC0zRiAgIChoZXgpCQlIdWJiZWxsIEJ1aWxkaW5nIEF1dG9tYXRpb24sIEluYy4KLTZDQUQzRiAgICAgKGJhc2UgMTYpCQlIdWJiZWxsIEJ1aWxkaW5nIEF1dG9tYXRpb24sIEluYy4KLQkJCQk5NjAxIERlc3NhdSBSZAotCQkJCUJsZGcgMSBTdWl0ZSAxMDAKLQkJCQlBdXN0aW4gVGV4YXMgNzg3NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTZDLUFFLThCICAgKGhleCkJCUlCTSBDb3Jwb3JhdGlvbgotNkNBRThCICAgICAoYmFzZSAxNikJCUlCTSBDb3Jwb3JhdGlvbgotCQkJCTQ0MDAgTm9ydGggRmlyc3QgU3RyZWV0Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTZDLUJFLUU5ICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50LUlQRAotNkNCRUU5ICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50LUlQRAotCQkJCTc3NyBNaWRkbGVmaWVsZCBSZC4KLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi02Qy1DMS1EMiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotNkNDMUQyICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtQzItNkIgICAoaGV4KQkJQXBwbGUsIEluYy4KLTZDQzI2QiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgaW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtRDYtOEEgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MgSW5jCi02Q0Q2OEEgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MgSW5jCi0JCQkJNjAtMzksR2FzYW4tZG9uZyxHdW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtMDIzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTZDLURDLTZBICAgKGhleCkJCVByb21ldGhlYW4gTGltaXRlZAotNkNEQzZBICAgICAoYmFzZSAxNikJCVByb21ldGhlYW4gTGltaXRlZAotCQkJCUFjdGl2bGFiCi0JCQkJUGhpbGlwcyBSb2FkCi0JCQkJQmxhY2tidXJuIExhbmNhc2hpcmUgQkIxIDVTTgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTZDLUUwLUIwICAgKGhleCkJCVNPVU5ENAotNkNFMEIwICAgICAoYmFzZSAxNikJCVNPVU5ENAotCQkJCTExIHF1YWkgSm9zZXBoIEdpbGxldAotCQkJCUxZT04gIDY5MDA0Ci0JCQkJRlJBTkNFCi0KLTZDLUU5LTA3ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi02Q0U5MDcgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSBPdSA5MDIzMAotCQkJCUZJTkxBTkQKLQotNkMtRTktODMgICAoaGV4KQkJR2FzdHJvbiBDby4sIExURC4KLTZDRTk4MyAgICAgKGJhc2UgMTYpCQlHYXN0cm9uIENvLiwgTFRELgotCQkJCSM3NS0xMCwgUGFsZ29rMi1kb25nLCBTYW5nbm9rLWd1LCAKLQkJCQlBbnNhbi1jaXR5IEt5dW5nZ2ktZG8gNDI2LTE5MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi02Qy1GMC00OSAgIChoZXgpCQlHSUdBLUJZVEUgVEVDSE5PTE9HWSBDTy4sTFRELgotNkNGMDQ5ICAgICAoYmFzZSAxNikJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi0JCQkJTm8uMjE1LE5hbi1QaW5nIFJvYWQsCi0JCQkJUGluLUplbiBUYW95dWFuIDMyNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNkMtRjMtN0YgICAoaGV4KQkJQXJ1YmEgTmV0d29ya3MKLTZDRjM3RiAgICAgKGJhc2UgMTYpCQlBcnViYSBOZXR3b3JrcwotCQkJCTEzNDQgQ3Jvc3NtYW4gQXZlLgotCQkJCVN1bm55dmFsZSBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotNkMtRkQtQjkgICAoaGV4KQkJUHJvd2FyZSBUZWNobm9sb2dpZXMgQ28gTHRkLgotNkNGREI5ICAgICAoYmFzZSAxNikJCVByb3dhcmUgVGVjaG5vbG9naWVzIENvIEx0ZC4KLQkJCQkybmQgRjEgRWFzdCBXaW5nLFNvdXRoIFNlY3Rpb24sRmFjdG9yeSBCdWlsZGluZyAyNCxTY2llbmNlJlRlY2hub2xvZ3kgUGFyawotCQkJCVNoZW5uYW4gUmQsTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi02Qy1GRi1CRSAgIChoZXgpCQlNUEIgQ29tbXVuaWNhdGlvbnMgSW5jLgotNkNGRkJFICAgICAoYmFzZSAxNikJCU1QQiBDb21tdW5pY2F0aW9ucyBJbmMuCi0JCQkJMTQ3IEh5bXVzIEJsdmQKLQkJCQlQb2ludGUtQ2xhaXJlIFF1ZWJlYyBIOVIgMUU5Ci0JCQkJQ0FOQURBCi0KLTcwLTAyLTU4ICAgKGhleCkJCTAxREItTUVUUkFWSUIKLTcwMDI1OCAgICAgKGJhc2UgMTYpCQkwMURCLU1FVFJBVklCCi0JCQkJMjAwIENIRU1JTiBERVMgT1JNRUFVWAotCQkJCUxJTU9ORVNUIENFREVYIFJIT05FIDY5NTc4Ci0JCQkJRlJBTkNFCi0KLTcwLTA1LTE0ICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzCi03MDA1MTQgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MKLQkJCQk2MC0zOSAsIEthc2FuLWRvbmcsIEd1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNzAtMEItQzAgICAoaGV4KQkJRGV3YXYgVGVjaG5vbG9neSBDb21wYW55Ci03MDBCQzAgICAgIChiYXNlIDE2KQkJRGV3YXYgVGVjaG5vbG9neSBDb21wYW55Ci0JCQkJUm9vbSAxNDA4LCBSZWFsIEVzdGF0ZSBNYW5zaW9uCi0JCQkJMjAxIE5hbnF1YW4gUm9hZCBOb3J0aAotCQkJCVNoYW5naGFpIDIwMDEyMAotCQkJCUNISU5BCi0KLTcwLTE0LTA0ICAgKGhleCkJCUxpbWl0ZWQgTGlhYmlsaXR5IENvbXBhbnkgIlJlc2VhcmNoIENlbnRlciAiQnJlc2xlciIKLTcwMTQwNCAgICAgKGJhc2UgMTYpCQlMaW1pdGVkIExpYWJpbGl0eSBDb21wYW55ICJSZXNlYXJjaCBDZW50ZXIgIkJyZXNsZXIiCi0JCQkJSS5ZYWtvdmxldmEgU3QuLCAxCi0JCQkJQ2hlYm9rc2FyeSBDaHV2YXNoIFJlcHVibGljICA0MjgwMDMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotNzAtMUEtMDQgICAoaGV4KQkJTGl0ZW9uIFRlY2ggQ29ycC4KLTcwMUEwNCAgICAgKGJhc2UgMTYpCQlMaXRlb24gVGVjaCBDb3JwLgotCQkJCTRGIDkwIENoaWVuIDEgUmQuQ2h1bmdIbwotCQkJCVRhaXBlaSAgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTcwLTFBLUVEICAgKGhleCkJCUFEVkFTIENPLiwgTFRELgotNzAxQUVEICAgICAoYmFzZSAxNikJCUFEVkFTIENPLiwgTFRELgotCQkJCTMtOC04IFNoaW4teW9rb2hhbWEsIEtvaG9rdS1rdQotCQkJCU5pc3NvdSAxNkJsZGcuIDZGCi0JCQkJWW9rb2hhbWEtc2hpIEthbmFnYXdhLWtlbiAyMjItMDAzMwotCQkJCUpBUEFOCi0KLTcwLTJCLTFEICAgKGhleCkJCUUtRG9tdXMgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi03MDJCMUQgICAgIChiYXNlIDE2KQkJRS1Eb211cyBJbnRlcm5hdGlvbmFsIExpbWl0ZWQKLQkJCQkxc3QgRmxvb3IKLQkJCQk1IEJvdXJsZXQgQ2xvc2UKLQkJCQlMb25kb24gIFcxVyA3QkwKLQkJCQlVTklURUQgS0lOR0RPTQotCi03MC0yRi00QiAgIChoZXgpCQlQb2x5VmlzaW9uIEluYy4KLTcwMkY0QiAgICAgKGJhc2UgMTYpCQlQb2x5VmlzaW9uIEluYy4KLQkJCQkzOTcwIEpvaG5zIENyZWVrIEN0LgotCQkJCVN1aXRlIDMyNQotCQkJCVN1d2FuZWUgR2VvcmdpYSAzMDAyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtMkYtOTcgICAoaGV4KQkJQWF2YSBNb2JpbGUgT3kKLTcwMkY5NyAgICAgKGJhc2UgMTYpCQlBYXZhIE1vYmlsZSBPeQotCQkJCU5haGthdGVodGFhbmthdHUgMgotCQkJCU91bHUgIDkwMTAwCi0JCQkJRklOTEFORAotCi03MC0zMC0xOCAgIChoZXgpCQlBdmF5YSwgSW5jCi03MDMwMTggICAgIChiYXNlIDE2KQkJQXZheWEsIEluYwotCQkJCTIxMSBNb3VudCBBaXJ5IFJvYWQKLQkJCQlCYXNraW5nIFJpZGdlIE5KIDA3OTIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC0zMS04NyAgIChoZXgpCQlBQ1ggR21iSAotNzAzMTg3ICAgICAoYmFzZSAxNikJCUFDWCBHbWJICi0JCQkJxHXfZXJlIFp3aWNrYXVlciBTdHIuIDgKLQkJCQlad2lja2F1ICAwODA2NAotCQkJCUdFUk1BTlkKLQotNzAtMzItRDUgICAoaGV4KQkJQXRoZW5hIFdpcmVsZXNzIENvbW11bmljYXRpb25zIEluYwotNzAzMkQ1ICAgICAoYmFzZSAxNikJCUF0aGVuYSBXaXJlbGVzcyBDb21tdW5pY2F0aW9ucyBJbmMKLQkJCQkxMjQyNSBXIEJlbGwgUmQKLQkJCQlTdWl0ZSAxMTAKLQkJCQlTdXJwcmlzZSBBWiA4NTM3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtMzgtRUUgICAoaGV4KQkJQXZheWEgSW5jCi03MDM4RUUgICAgIChiYXNlIDE2KQkJQXZheWEgSW5jCi0JCQkJMjExIE10LiBBaXJ5IFJvYWQKLQkJCQlCYXNraW5nIFJpZGdlIE5KIDA3OTIwLTIzMTEgCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC0zQS1EOCAgIChoZXgpCQlTaGVuemhlbiBBZm91bmRyeSBFbGVjdHJvbmljIENvLiwgTHRkCi03MDNBRDggICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gQWZvdW5kcnkgRWxlY3Ryb25pYyBDby4sIEx0ZAotCQkJCTIwMSwgQSBCdWlsZGluZywgQm9sZSBJbmR1c3RyaWFsIFpvbmUsIEJhbnRpYW4sIExvbmdnYW5nIERpc3RyaWN0Ci0JCQkJTm8jIDkwNiwgMiBCdWlsZGluZywgWGluY2hlbmcgUGxhemEsIEZ1aHVhbiBSRC0zLCBGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiAgR3Vhbmdkb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTcwLTNDLTM5ICAgKGhleCkJCVNFQVdJTkcgS2Z0Ci03MDNDMzkgICAgIChiYXNlIDE2KQkJU0VBV0lORyBLZnQKLQkJCQlCdWRhaSDDunQgMTM5LgotCQkJCVN6w6lrZXNmZWjDqXJ2w6FyIEZlasOpciA4MDAwCi0JCQkJSFVOR0FSWQotCi03MC00MS1CNyAgIChoZXgpCQlFZHdhcmRzIExpZmVzY2llbmNlcyBMTEMKLTcwNDFCNyAgICAgKGJhc2UgMTYpCQlFZHdhcmRzIExpZmVzY2llbmNlcyBMTEMKLQkJCQlPbmUgRWR3YXJkcyBXYXkKLQkJCQlJcnZpbmUgQ0EgOTI2MTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLTQ2LTQyICAgKGhleCkJCUNIWU5HIEhPTkcgRUxFQ1RST05JQyBDTy4sIExURC4KLTcwNDY0MiAgICAgKGJhc2UgMTYpCQlDSFlORyBIT05HIEVMRUNUUk9OSUMgQ08uLCBMVEQuCi0JCQkJTm8uODAsIExhbmUgMjU4LCBTZWMuIDMsIEhhbnNpIFcuIFJkLiwKLQkJCQlCZWl0dW4gRGlzdHJpY3QsCi0JCQkJVGFpY2h1bmcgIDQwNjQ3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03MC00QS1BRSAgIChoZXgpCQlYc3RyZWFtIEZsb3cgKFB0eSkgTHRkCi03MDRBQUUgICAgIChiYXNlIDE2KQkJWHN0cmVhbSBGbG93IChQdHkpIEx0ZAotCQkJCVJvb20gMTIzLCBCdWlsZGluZyAxNiwgQ1NJUiBjYW1wdXMKLQkJCQlNZWlyaW5nIE5hdWRlIHJvYWQKLQkJCQlQcmV0b3JpYSBHYXV0ZW5nIDAxODQKLQkJCQlTT1VUSCBBRlJJQ0EKLQotNzAtNTYtODEgICAoaGV4KQkJQXBwbGUgSW5jCi03MDU2ODEgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtNTgtMTIgICAoaGV4KQkJUGFuYXNvbmljIEFWQyBOZXR3b3JrcyBDb21wYW55Ci03MDU4MTIgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIEFWQyBOZXR3b3JrcyBDb21wYW55Ci0JCQkJMS0xNSBNYXRzdW8tY2hvCi0JCQkJS2Fkb21hIE9zYWthIDU3MS04NTA0Ci0JCQkJSkFQQU4KLQotNzAtNUEtQjYgICAoaGV4KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURC4gCi03MDVBQjYgICAgIChiYXNlIDE2KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURC4gCi0JCQkJTk8uIDI1LCBUSEUgM1JEIFN0cmVldCBLVU5TSEFOIEVYUE9SVCBQUk9DRVNTSU5HIFpPTkUgCi0JCQkJS1VOU0hBTiBTVVpIT1UgMjE1MzAwIAotCQkJCUNISU5BCi0KLTcwLTVDLUFEICAgKGhleCkJCUtvbmFtaSBHYW1pbmcgSW5jCi03MDVDQUQgICAgIChiYXNlIDE2KQkJS29uYW1pIEdhbWluZyBJbmMKLQkJCQk1ODUgVHJhZGUgQ2VudGVyIERyaXZlCi0JCQkJTGFzIFZlZ2FzIE5ldmFkYSA4OTExOQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtNUUtQUEgICAoaGV4KQkJQWN0aW9uIFRhcmdldCwgSW5jLgotNzA1RUFBICAgICAoYmFzZSAxNikJCUFjdGlvbiBUYXJnZXQsIEluYy4KLQkJCQlQTyBCb3ggNjM2Ci0JCQkJUHJvdm8gVVQgODQ2MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLTY0LTE3ICAgKGhleCkJCU9SQklTIFRFQ05PTE9HSUEgRUxFQ1RSSUNBIFMuQS4KLTcwNjQxNyAgICAgKGJhc2UgMTYpCQlPUkJJUyBURUNOT0xPR0lBIEVMRUNUUklDQSBTLkEuCi0JCQkJTGVyaWRhLCA2MQotCQkJCU1hZHJpZCBNYWRyaWQgRTI4MDIwCi0JCQkJU1BBSU4KLQotNzAtNjUtODIgICAoaGV4KQkJU3V6aG91IEhhbm1pbmcgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotNzA2NTgyICAgICAoYmFzZSAxNikJCVN1emhvdSBIYW5taW5nIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlTdWl0ZSA0MDcsIE5vLiAxNjYsIFJlbiBBaSBSb2FkCi0JCQkJU3V6aG91IEluZHVzdHJpYWwgUGFyawotCQkJCVN1emhvdSBKaWFuZ3N1IDIxNTEyMwotCQkJCUNISU5BCi0KLTcwLTZGLTgxICAgKGhleCkJCVBSSVZBVEUKLTcwNkY4MSAgICAgKGJhc2UgMTYpCQkgCi0JCQkJIAotNzAtNzAtNEMgICAoaGV4KQkJUHVycGxlIENvbW11bmljYXRpb25zLCBJbmMKLTcwNzA0QyAgICAgKGJhc2UgMTYpCQlQdXJwbGUgQ29tbXVuaWNhdGlvbnMsIEluYwotCQkJCTU5NSBNZW5sbwotCQkJCVJvY2tsaW4gQ0EgOTU3NjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLTcxLUJDICAgKGhleCkJCVBFR0FUUk9OIENPUlBPUkFUSU9OCi03MDcxQkMgICAgIChiYXNlIDE2KQkJUEVHQVRST04gQ09SUE9SQVRJT04KLQkJCQlOby4gNzYsIExpZ29uZyBTdC4sIEJlaXRvdSwgCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTcwLTcyLUNGICAgKGhleCkJCUVkZ2VDb3JlIE5ldHdvcmtzCi03MDcyQ0YgICAgIChiYXNlIDE2KQkJRWRnZUNvcmUgTmV0d29ya3MKLQkJCQkyMCBNYXNvbgotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtNzMtQ0IgICAoaGV4KQkJQXBwbGUsIEluYy4KLTcwNzNDQiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtNzYtRjAgICAoaGV4KQkJTGV2ZWxPbmUgQ29tbXVuaWNhdGlvbnMgKEluZGlhKSBQcml2YXRlIExpbWl0ZWQKLTcwNzZGMCAgICAgKGJhc2UgMTYpCQlMZXZlbE9uZSBDb21tdW5pY2F0aW9ucyAoSW5kaWEpIFByaXZhdGUgTGltaXRlZAotCQkJCTJGLCBMYW5lIDEsIDQ1IEJoYXJhdCBOYWdhcgotCQkJCU5ldyBGcmllbmRzIENvbG9ueQotCQkJCU5ldyBEZWxoaSBERUxISSAxMTAwMjUKLQkJCQlJTkRJQQotCi03MC03Qi1FOCAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLTcwN0JFOCAgICAgKGJhc2UgMTYpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLQkJCQlIdWFXZWkgSW5kdXN0cmlhbCBCYXNlLEJhblRpYW4sTG9uZ0dhbmcKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotNzAtN0UtNDMgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTcwN0U0MyAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLTdFLURFICAgKGhleCkJCU5BU1RFQyBMVEQuCi03MDdFREUgICAgIChiYXNlIDE2KQkJTkFTVEVDIExURC4KLQkJCQkxMTEtRCwgS3Jhc25vcmVjaGVuc2theWEgc3RyLgotCQkJCUtoYWJhcm92c2sgIDY4MDAwNgotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi03MC04MS0wNSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi03MDgxMDUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtODItOEUgICAoaGV4KQkJT2xldW1UZWNoIENvcnBvcmF0aW9uCi03MDgyOEUgICAgIChiYXNlIDE2KQkJT2xldW1UZWNoIENvcnBvcmF0aW9uCi0JCQkJMjMgSHViYmxlCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC04Qi03OCAgIChoZXgpCQljaXR5Z3JvdyB0ZWNobm9sb2d5IGNvLiwgbHRkCi03MDhCNzggICAgIChiYXNlIDE2KQkJY2l0eWdyb3cgdGVjaG5vbG9neSBjby4sIGx0ZAotCQkJCXJtMTQwNCwgYmxrIEEsICw1IC0gMjEgUGFrIFRpbiBQYXIgU3RyZWV0Ci0JCQkJSGktVGVjaCBJbmR1c3RyaWFsIENlbnRyZSwKLQkJCQlUc3VlbiBXYW4gIAotCQkJCUhPTkcgS09ORwotCi03MC05Ny01NiAgIChoZXgpCQlIYXBweWVsZWN0cm9uaWNzIENvLixMdGQKLTcwOTc1NiAgICAgKGJhc2UgMTYpCQlIYXBweWVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjQS04MDUsIEJ1bmRhbmcgVGVjaG5vcGFyaywKLQkJCQkxNTAgWWF0YXAtRG9uZywgQnVuZGFuZy1HdQotCQkJCVNlb25nbmFtLVNpICA0NjMtODE2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTcwLTlBLTBCICAgKGhleCkJCUl0YWxpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKLTcwOUEwQiAgICAgKGJhc2UgMTYpCQlJdGFsaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5Ci0JCQkJVmlhIE1vcmVnbyAzMAotCQkJCUdlbm92YSBHRSAxNjE2MwotCQkJCUlUQUxZCi0KLTcwLTlCLUE1ICAgKGhleCkJCVNoZW56aGVuIFkmRCBFbGVjdHJvbmljcyBDby4sTFRELgotNzA5QkE1ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFkmRCBFbGVjdHJvbmljcyBDby4sTFRELgotCQkJCUQgem9uZTNGLFNoZW56aGVuIEFjYWRlbXkgb2YgQWVyb3NwYWNlIFRlY2hub2xvZ3ksSGktVGVjaCBQYXJrLHNvdXRoIDEwdGggUm9hZCxOYW5zaGFuCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTcwLTlFLTg2ICAgKGhleCkJCVg2RCBMaW1pdGVkCi03MDlFODYgICAgIChiYXNlIDE2KQkJWDZEIExpbWl0ZWQKLQkJCQkxOTksIEFyY2guIE1ha2FyaW91IElJSQotCQkJCU5lb2NsZW91cyBIb3VzZQotCQkJCUxpbWFzc29sICAzMDMwCi0JCQkJQ1lQUlVTCi0KLTcwLUExLTkxICAgKGhleCkJCVRyZW5kc2V0dGVyIE1lZGljYWwsIExMQwotNzBBMTkxICAgICAoYmFzZSAxNikJCVRyZW5kc2V0dGVyIE1lZGljYWwsIExMQwotCQkJCTIwMzAgQXJkbW9yZSBCTFZECi0JCQkJU1RFIDM4MAotCQkJCVBpdHRzYnVyZ2ggUEEgMTUyMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLUE0LTFDICAgKGhleCkJCUFkdmFuY2VkIFdpcmVsZXNzIER5bmFtaWNzIFMuTC4KLTcwQTQxQyAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBXaXJlbGVzcyBEeW5hbWljcyBTLkwuCi0JCQkJQ2VudHJvIGRlIEVtcHJlc2FzIFVQTSBvZmljaW5hIDMKLQkJCQlDYW1wdXMgVVBNIE1vbnRlZ2FuY2VkbwotCQkJCVBvenVlbG8gZGUgQWxhcmNvbiBNYWRyaWQgMjgyMjMKLQkJCQlTUEFJTgotCi03MC1BNi02QSAgIChoZXgpCQlQcm94IER5bmFtaWNzIEFTCi03MEE2NkEgICAgIChiYXNlIDE2KQkJUHJveCBEeW5hbWljcyBBUwotCQkJCVNtZWRzdmluZ2VuIDQKLQkJCQlIdmFsc3RhZCBBa2Vyc2h1cyAxMzk1Ci0JCQkJTk9SV0FZCi0KLTcwLUFBLUIyICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbgotNzBBQUIyICAgICAoYmFzZSAxNikJCVJlc2VhcmNoIEluIE1vdGlvbgotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi03MC1CMC0zNSAgIChoZXgpCQlTaGVuemhlbiBab3dlZSBUZWNobm9sb2d5IENvLiwgTHRkCi03MEIwMzUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gWm93ZWUgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCUJsb2NrIDUsIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgSW5kdXN0cmlhbCAKLQkJCQlQYXJrIG9mIFByaXZhdGVseSBPd25lZCBFbnRlcnByaXNlcywgUGluZ3NoYW4sIFhpbGksIE5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU1Ci0JCQkJQ0hJTkEKLQotNzAtQjAtOEMgICAoaGV4KQkJU2hlbm91IENvbW11bmljYXRpb24gRXF1aXBtZW50IENvLixMdGQKLTcwQjA4QyAgICAgKGJhc2UgMTYpCQlTaGVub3UgQ29tbXVuaWNhdGlvbiBFcXVpcG1lbnQgQ28uLEx0ZAotCQkJCU5vLjExOCBNaWRkbGUgSnVndWFuZyBSb2FkLCBIaWdoICZhbXA7IE5ldyBJbmR1c3RyaWFsIFpvbmUKLQkJCQlXZW56aG91IFpoZWppYW5nIDMyNTAyOQotCQkJCUNISU5BCi0KLTcwLUIyLTY1ICAgKGhleCkJCUhpbHRyb24gcy5yLmwuCi03MEIyNjUgICAgIChiYXNlIDE2KQkJSGlsdHJvbiBzLnIubC4KLQkJCQlTdHJhZGEgUHJvdmluY2lhbGUgZGkgQ2FzZXJ0YSwgMjE4Ci0JCQkJTmFwbGVzICA4MDE0NAotCQkJCUlUQUxZCi0KLTcwLUI1LTk5ICAgKGhleCkJCUVtYmVkZGVkIFRlY2hub2xvZ2llcyBzLnIuby4KLTcwQjU5OSAgICAgKGJhc2UgMTYpCQlFbWJlZGRlZCBUZWNobm9sb2dpZXMgcy5yLm8uCi0JCQkJRG91YnJhdmljZSAxMzQKLQkJCQlUdXJub3YgIDUxMTAxCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotNzAtQjktMjEgICAoaGV4KQkJRmliZXJIb21lIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBDTy4sTFRECi03MEI5MjEgICAgIChiYXNlIDE2KQkJRmliZXJIb21lIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBDTy4sTFRECi0JCQkJTm8uNSBEb25neGluIFJvYWQsSG9uZ3NoYW4gRGlzdHJpY3QKLQkJCQlXdWhhbiBIdWJlaSA0MzAwNzQKLQkJCQlDSElOQQotCi03MC1DQS05QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi03MENBOUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtQ0QtNjAgICAoaGV4KQkJQXBwbGUsIEluYy4KLTcwQ0Q2MCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTQ1ODgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLUQ0LUYyICAgKGhleCkJCVJJTQotNzBENEYyICAgICAoYmFzZSAxNikJCVJJTQotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi03MC1ENS03RSAgIChoZXgpCQlTY2FsYXIgQ29ycG9yYXRpb24KLTcwRDU3RSAgICAgKGJhc2UgMTYpCQlTY2FsYXIgQ29ycG9yYXRpb24KLQkJCQkxRiBTYW4tRWkgQmxkZwotCQkJCTEtMjItMgotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2MC0wMDIzCi0JCQkJSkFQQU4KLQotNzAtRDUtRTcgICAoaGV4KQkJV2VsbGNvcmUgQ29ycG9yYXRpb24KLTcwRDVFNyAgICAgKGJhc2UgMTYpCQlXZWxsY29yZSBDb3Jwb3JhdGlvbgotCQkJCTI4NzAgWmFua2VyIFJvYWQKLQkJCQlTdWl0ZSAxMzAKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtRDYtQjYgICAoaGV4KQkJTWV0cnVtIFRlY2hub2xvZ2llcwotNzBENkI2ICAgICAoYmFzZSAxNikJCU1ldHJ1bSBUZWNobm9sb2dpZXMKLQkJCQkzMTUgU291dGggVW5pdmVyc2l0eSBQYXJrcyBEcml2ZQotCQkJCVdhY28gVGV4YXMgNzY3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTcwLUQ4LTgwICAgKGhleCkJCVVwb3MgU3lzdGVtIHNwLiB6IG8uby4KLTcwRDg4MCAgICAgKGJhc2UgMTYpCQlVcG9zIFN5c3RlbSBzcC4geiBvLm8uCi0JCQkJU2llbmtpZXdpY3phIDEzCi0JCQkJS251cm93IFNsYXNraWUgNDQtMTkwCi0JCQkJUE9MQU5ECi0KLTcwLURELUExICAgKGhleCkJCVRlbGxhYnMKLTcwRERBMSAgICAgKGJhc2UgMTYpCQlUZWxsYWJzCi0JCQkJT25lIFRlbGxhYnMgQ2VudGVyCi0JCQkJMTQxNSBXZXN0IERpZWhsIFJvYWQKLQkJCQlOYXBlcnZpbGxlIElsbGlub2lzIDYwNTYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03MC1ERS1FMiAgIChoZXgpCQlBcHBsZSwgSW5jLgotNzBERUUyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBjQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzAtRTEtMzkgICAoaGV4KQkJM3ZpZXcgTHRkCi03MEUxMzkgICAgIChiYXNlIDE2KQkJM3ZpZXcgTHRkCi0JCQkJMTY4LTE3MiBPbGQgU3RyZWV0Ci0JCQkJTG9uZG9uICBFQzFWIDlCUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTcwLUU4LTQzICAgKGhleCkJCUJlaWppbmcgQyZXIE9wdGljYWwgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLixMdGQuCi03MEU4NDMgICAgIChiYXNlIDE2KQkJQmVpamluZyBDJlcgT3B0aWNhbCBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQkyL0YgWXVmYSBQbGF6YSwgTm8uMTkgWGlhb3lpbmcgQmVpbHUsIENoYW95YW5nIERpc3RyaWN0LCAKLQkJCQlCZWlqaW5nICAxMDAxMDEKLQkJCQlDSElOQQotCi03MC1FRS01MCAgIChoZXgpCQlOZXRhdG1vCi03MEVFNTAgICAgIChiYXNlIDE2KQkJTmV0YXRtbwotCQkJCTE3IHJvdXRlIGRlIGxhIHJlaW5lCi0JCQkJQm91bG9nbmUtQmlsbGFuY291cnQgIDkyMTAwCi0JCQkJRlJBTkNFCi0KLTcwLUYxLUExICAgKGhleCkJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi03MEYxQTEgICAgIChiYXNlIDE2KQkJTGl0ZW9uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk0Riw5MCxDaGllbiAxIFJvYWQsQ2h1bmdIbyxUYWlwZWkgSHNpZW4KLQkJCQlUYWlwZWkgIDIzNTg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03MC1GMy05NSAgIChoZXgpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLTcwRjM5NSAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgR2xvYmFsIFNjaWVudGlmaWMgSW5kdXN0cmlhbCBDby4sIEx0ZC4KLQkJCQkxNDEsIExBTkUgMzUxLCBTRUMuMSxUQUlQSU5HIFJELgotCQkJCVRTQU9UVUVOCi0JCQkJTkFOVE9VIDU0MjYxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03NC0wQS1CQyAgIChoZXgpCQlKU0pTIERlc2lnbnMgKEV1cm9wZSkgTGltaXRlZAotNzQwQUJDICAgICAoYmFzZSAxNikJCUpTSlMgRGVzaWducyAoRXVyb3BlKSBMaW1pdGVkCi0JCQkJRXpla2llbCBIb3VzZQotCQkJCUV6ZWtpZWwgTGFuZQotCQkJCVdpbGxlbmhhbGwgV2VzdCBNaWRsYW5kcyBXVjEyIDVRVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTc0LTE0LTg5ICAgKGhleCkJCVNSVCBXaXJlbGVzcwotNzQxNDg5ICAgICAoYmFzZSAxNikJCVNSVCBXaXJlbGVzcwotCQkJCTQxMDEgU1cgNDd0aCBBdmVudWUgIzEwMgotCQkJCURhdmllIEZsb3JpZGEgMzMzMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc0LTE1LUUyICAgKGhleCkJCVRyaS1TZW4gU3lzdGVtcyBDb3Jwb3JhdGlvbgotNzQxNUUyICAgICAoYmFzZSAxNikJCVRyaS1TZW4gU3lzdGVtcyBDb3Jwb3JhdGlvbgotCQkJCTE3NjI1IEVsIENhbWlubyBSZWFsIFN1aXRlIDIwMAotCQkJCUhvdXN0b24gVFggNzcwNTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc0LTJCLTBGICAgKGhleCkJCUluZmluaWRhdCBMdGQuCi03NDJCMEYgICAgIChiYXNlIDE2KQkJSW5maW5pZGF0IEx0ZC4KLQkJCQkxMSBHYWxnYWxlaSBIYXBsYWRhIFN0LiAKLQkJCQlQLk8uQiAxMjY5NgotCQkJCUhlcnpsaXlhIFBpdHVhY2ggQ2VudGVyIDQ2NzIyCi0JCQkJSVNSQUVMCi0KLTc0LTJGLTY4ICAgKGhleCkJCUF6dXJld2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLTc0MkY2OCAgICAgKGJhc2UgMTYpCQlBenVyZXdhdmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJOEYuLCBCYW96aG9uZyBSZC4KLQkJCQlYaW5kaWFuIENpdHkgVGFpcGVpIENvdW50eSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTc0LTMxLTcwICAgKGhleCkJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLTc0MzE3MCAgICAgKGJhc2UgMTYpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYuICwgTm8uIDkgLCBQYXJrIEF2ZW51ZSBJSSwKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyaywKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTc0LTMyLTU2ICAgKGhleCkJCU5ULXdhcmUgU3lzdGVtcHJnIEdtYkgKLTc0MzI1NiAgICAgKGJhc2UgMTYpCQlOVC13YXJlIFN5c3RlbXByZyBHbWJICi0JCQkJTmllZGVyc2FjaHNlbnN0cmFzc2UgNgotCQkJCUJhZCBJYnVyZyBORFMgNDkxODYKLQkJCQlHRVJNQU5ZCi0KLTc0LTM4LTg5ICAgKGhleCkJCUFOTkFYIEFuemVpZ2VzeXN0ZW1lIEdtYkgKLTc0Mzg4OSAgICAgKGJhc2UgMTYpCQlBTk5BWCBBbnplaWdlc3lzdGVtZSBHbWJICi0JCQkJV2V0dGVyc3RlaW5zdHJhc3NlIDE4Ci0JCQkJVGF1ZmtpcmNoZW4gQmF2YXJpYSA4MjAyNAotCQkJCUdFUk1BTlkKLQotNzQtNDQtMDEgICAoaGV4KQkJTkVUR0VBUgotNzQ0NDAxICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBTElGT1JOSUEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc0LTUzLTI3ICAgKGhleCkJCUNPTU1TRU4gQ08uLCBMSU1JVEVECi03NDUzMjcgICAgIChiYXNlIDE2KQkJQ09NTVNFTiBDTy4sIExJTUlURUQKLQkJCQkxMi9GLiwgU2FuIFRvaSBCdWlsZGluZywxMzkgQ29ubmF1Z2h0IFJvYWQgQ2VudHJhbCAKLQkJCQk5OTkwNzcKLQkJCQlIT05HIEtPTkcKLQotNzQtNTYtMTIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTc0NTYxMiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc0LTU3LTk4ICAgKGhleCkJCVRSVU1QRiBMYXNlciBHbWJIICsgQ28uIEtHCi03NDU3OTggICAgIChiYXNlIDE2KQkJVFJVTVBGIExhc2VyIEdtYkggKyBDby4gS0cKLQkJCQlBaWNoaGFsZGVyIFN0ci4gMzkKLQkJCQlTY2hyYW1iZXJnIEJXIDc4NzEzCi0JCQkJR0VSTUFOWQotCi03NC01RS0xQyAgIChoZXgpCQlQSU9ORUVSIENPUlBPUkFUSU9OCi03NDVFMUMgICAgIChiYXNlIDE2KQkJUElPTkVFUiBDT1JQT1JBVElPTgotCQkJCTEtMSBTaGluLW9ndXJhCi0JCQkJU2Fpd2FpLWt1Ci0JCQkJS2F3YXNha2ktc2hpIEthbmFnYXdhIFByZWZlY3R1cmUgMjEyMDAzMQotCQkJCUpBUEFOCi0KLTc0LTYzLURGICAgKGhleCkJCVZUUyBHbWJICi03NDYzREYgICAgIChiYXNlIDE2KQkJVlRTIEdtYkgKLQkJCQlBbSBL77+9bmlnaG9seiBPc3QgNAotCQkJCUVnbGhhdXNlbiBCYXZhcmlhIDg1NDExCi0JCQkJR0VSTUFOWQotCi03NC02NS1EMSAgIChoZXgpCQlBdGxpbmtzCi03NDY1RDEgICAgIChiYXNlIDE2KQkJQXRsaW5rcwotCQkJCTMwIEF2ZW51ZSBHZXJvZ2UgVgotCQkJCVBhcmlzICA3NTAwOAotCQkJCUZSQU5DRQotCi03NC02QS04OSAgIChoZXgpCQlSZXpvbHQgQ29ycG9yYXRpb24KLTc0NkE4OSAgICAgKGJhc2UgMTYpCQlSZXpvbHQgQ29ycG9yYXRpb24KLQkJCQkyODU1IEJvd2VycyBBdmVudWUKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1MQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtNkItODIgICAoaGV4KQkJTU9WRUsgCi03NDZCODIgICAgIChiYXNlIDE2KQkJTU9WRUsgCi0JCQkJNjUxNyBOYXZhaG8gVHJhaWwKLQkJCQlFZGluYSBNaW5uZXNvdGEgNTU0MzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc0LTcyLUYyICAgKGhleCkJCUNoaXBzaXAgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTc0NzJGMiAgICAgKGJhc2UgMTYpCQlDaGlwc2lwIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJOEYtMSwgTm8uMTg2LCBKaWFuLVlpIFJvYWQsIENodW5nSG8gQ2l0eSwKLQkJCQlUYWlwZWkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotNzQtNzgtMTggICAoaGV4KQkJU2VydmljZUFzc3VyZQotNzQ3ODE4ICAgICAoYmFzZSAxNikJCVNlcnZpY2VBc3N1cmUKLQkJCQlHcm91bmQgRmxvb3IsIEJsb2NrIFAsIENyeXN0YWwgUGFyayBPbmUKLQkJCQkyNDkgQmFzZGVuIEF2ZW51ZSwgTHl0dGVsdG9uCi0JCQkJQ2VudHVyaW9uIFRzaHdhbmUgMDE1NwotCQkJCVNPVVRIIEFGUklDQQotCi03NC03Qi03QSAgIChoZXgpCQlFVEggSW5jLgotNzQ3QjdBICAgICAoYmFzZSAxNikJCUVUSCBJbmMuCi0JCQkJIzIwMiBNYXppdW0gQkxHLCA1NDUtNiwgRGFuZ2p1bmctZG9uZywKLQkJCQlHdW5wby1zaSBHeWVvbmdnaS1kbyA0MzUtODMzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTc0LTdELUI2ICAgKGhleCkJCUFsaXdlaSBDb21tdW5pY2F0aW9ucywgSW5jCi03NDdEQjYgICAgIChiYXNlIDE2KQkJQWxpd2VpIENvbW11bmljYXRpb25zLCBJbmMKLQkJCQlLZWppIDYgUm9hZCAsIEhpLXRlY2ggSW5kdXN0cmlhbCBQYXJrICAKLQkJCQlOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTc0LTdFLTFBICAgKGhleCkJCVJlZCBFbWJlZGRlZCBEZXNpZ24gTGltaXRlZAotNzQ3RTFBICAgICAoYmFzZSAxNikJCVJlZCBFbWJlZGRlZCBEZXNpZ24gTGltaXRlZAotCQkJCVZlbG9jaXR5Ci0JCQkJQW5nZWwgV2F5Ci0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQ3IDFCWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTc0LTdFLTJEICAgKGhleCkJCUJlaWppbmcgVGhvbXNvbiBDSVRJQyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uIExURC4KLTc0N0UyRCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIFRob21zb24gQ0lUSUMgRGlnaXRhbCBUZWNobm9sb2d5IENvLiBMVEQuCi0JCQkJODMwMSwgTm8uOCBXb3Jrc2hvcCwgMyBZb25nY2hhbmdiZWkgUm9hZAotCQkJCUJlaWppbmcgRWNvbm9taWMmVGVjbm5vbG9naWNhbCBEZXZlbG9wbWVudCBBcmVhCi0JCQkJQmVpamluZyAgMTAwMTc2Ci0JCQkJQ0hJTkEKLQotNzQtOEUtRjggICAoaGV4KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi03NDhFRjggICAgIChiYXNlIDE2KQkJQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuCi0JCQkJMTc0NSBUZWNobm9sb2d5IERyCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc0LTkwLTUwICAgKGhleCkJCVJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KLTc0OTA1MCAgICAgKGJhc2UgMTYpCQlSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCi0JCQkJMTc1MywgU2hpbW9udW1hYmUsIE5ha2FoYXJhLUt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjExLTg2NjgKLQkJCQlKQVBBTgotCi03NC05MS0xQSAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLTc0OTExQSAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUuCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC05My1BNCAgIChoZXgpCQlaZWJyYSBUZWNobm9sb2dpZXMgQ29ycC4KLTc0OTNBNCAgICAgKGJhc2UgMTYpCQlaZWJyYSBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQkyMDMxNCBTZW5lY2EgTWVhZG93cyBQYXJrd2F5Ci0JCQkJR2VybWFudG93biBNYXJ5bGFuZCAyMTc3MQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtQTQtQTcgICAoaGV4KQkJUVJTIE11c2ljIFRlY2hub2xvZ2llcywgSW5jLgotNzRBNEE3ICAgICAoYmFzZSAxNikJCVFSUyBNdXNpYyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkyNjkgUXVha2VyIERyaXZlCi0JCQkJU2VuZWNhIFBBIDE2MzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC1BNy0yMiAgIChoZXgpCQlMRyBFbGVjdHJvbmljcwotNzRBNzIyICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzCi0JCQkJNjAzLTM5ICwgS2FzYW4tZG9uZywgR3VtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03NC1BRS03NiAgIChoZXgpCQlpTm92byBCcm9hZGJhbmQsIEluYy4KLTc0QUU3NiAgICAgKGJhc2UgMTYpCQlpTm92byBCcm9hZGJhbmQsIEluYy4KLQkJCQkzNDc1IENvcnBvcmF0ZSBXYXksIFN1aXRlIEMKLQkJCQlEdWx1dGggR2VvcmdpYSAzMDA5NgotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtQjAtMEMgICAoaGV4KQkJTmV0d29yayBWaWRlbyBUZWNobm9sb2dpZXMsIEluYwotNzRCMDBDICAgICAoYmFzZSAxNikJCU5ldHdvcmsgVmlkZW8gVGVjaG5vbG9naWVzLCBJbmMKLQkJCQk0MDA1IEJvaGFubm9uIERyaXZlCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtQjktRUIgICAoaGV4KQkJRnVqaWFuIEppblFpYW5NYW8gRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLixMdGQKLTc0QjlFQiAgICAgKGJhc2UgMTYpCQlGdWppYW4gSmluUWlhbk1hbyBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCVJvb20gNTA2IFlvbmdIZW5nIEJ1aWxkaW5nIE5PLjU4IEppYW5nQmluZyBSYW9kCi0JCQkJRnVaaG91IEZ1SmlhbiAzNTAwMDUKLQkJCQlDSElOQQotCi03NC1CRS0wOCAgIChoZXgpCQlBVEVLIFByb2R1Y3RzLCBMTEMKLTc0QkUwOCAgICAgKGJhc2UgMTYpCQlBVEVLIFByb2R1Y3RzLCBMTEMKLQkJCQkyMTAgTkUgMTB0aCBBdmVudWUKLQkJCQlCcmFpbmVyZCBNTiA1NjQwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtQ0QtMEMgICAoaGV4KQkJU21pdGggTXllcnMgQ29tbXVuaWNhdGlvbnMgTHRkLgotNzRDRDBDICAgICAoYmFzZSAxNikJCVNtaXRoIE15ZXJzIENvbW11bmljYXRpb25zIEx0ZC4KLQkJCQlUaGUgT21lZ2EgQ2VudHJlCi0JCQkJU3RyYXR0b24gQnVzaW5lc3MgUGFyawotCQkJCUJpZ2dsZXN3YWRlIEJFRFMgU0cxOCA4UUIKLQkJCQlVTklURUQgS0lOR0RPTQotCi03NC1DRS01NiAgIChoZXgpCQlQYWNrZXQgRm9yY2UgVGVjaG5vbG9neSBMaW1pdGVkIENvbXBhbnkKLTc0Q0U1NiAgICAgKGJhc2UgMTYpCQlQYWNrZXQgRm9yY2UgVGVjaG5vbG9neSBMaW1pdGVkIENvbXBhbnkKLQkJCQkgMkYuLCBOby4yNSwgU2VjLiAxLCBTaHVhbmdzaGkgUmQuLCBDZW50cmFsIERpc3QuLCAKLQkJCQlUYWljaHVuZyAgNDAwNDYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTc0LUQwLURDICAgKGhleCkJCUVSSUNTU09OIEFCCi03NEQwREMgICAgIChiYXNlIDE2KQkJRVJJQ1NTT04gQUIKLQkJCQlUb3JzaGFtbnNnYXRhbiAzNgotCQkJCVNUT0NLSE9MTSAgMTY0IDgzIAotCQkJCVNXRURFTgotCi03NC1ENi03NSAgIChoZXgpCQlXWU1BIFRlY25vbG9naWEKLTc0RDY3NSAgICAgKGJhc2UgMTYpCQlXWU1BIFRlY25vbG9naWEKLQkJCQlSdWEgQ2ztbWFjbyBCYXJib3NhLCAxNzEtMTc5Ci0JCQkJQ2FtYnVjaQotCQkJCVPjbyBQYXVsbyAgMDE1MjMtMDAwCi0JCQkJQlJBWklMCi0KLTc0LUQ4LTUwICAgKGhleCkJCUV2cmlza28gU3lzdGVtcwotNzREODUwICAgICAoYmFzZSAxNikJCUV2cmlza28gU3lzdGVtcwotCQkJCTIzMjIgQWxwaW5lIFJkLCBTdGUgMTAKLQkJCQlFYXUgQ2xhaXJlIFdJIDU0NzAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03NC1ERS0yQiAgIChoZXgpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotNzRERTJCICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsOTAsQ2hpZW4gMSBSb2FkLCBDaHVuZ0hvLiBUYWlwZWkgSHNpZW4gMjM1LFRhaXdhbgotCQkJCVRhaXBlaSAgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTc0LUUwLTZFICAgKGhleCkJCUVyZ29waG9uZSBHbWJICi03NEUwNkUgICAgIChiYXNlIDE2KQkJRXJnb3Bob25lIEdtYkgKLQkJCQlUZW1tbGVyc3RyYXNzZSA1Ci0JCQkJTWFyYnVyZyBIZXNzZW4gMzUwMzkKLQkJCQlHRVJNQU5ZCi0KLTc0LUUxLUI2ICAgKGhleCkJCUFwcGxlLCBJbmMuCi03NEUxQjYgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIGluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc0LUUyLUY1ICAgKGhleCkJCUFwcGxlIEluYwotNzRFMkY1ICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtRTUtMEIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi03NEU1MEIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi03NC1FNS0zNyAgIChoZXgpCQlSQURTUElOCi03NEU1MzcgICAgIChiYXNlIDE2KQkJUkFEU1BJTgotCQkJCVNvbmdwYS1ndSBHYXJhay1kb25nIDc4Ci0JCQkJSVQgVmVudHVyZSBUb3dlciBXZXN0IFdpbmcgMTJ0aCBGbC4KLQkJCQlTZW91bCAgMTM4LTk1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03NC1FNS00MyAgIChoZXgpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotNzRFNTQzICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsOTAsQ2hpZW4gMSBSb2FkLENodW5nSG8KLQkJCQlOZXcgVGFpcGVpIENpdHkgVGFpcGVpIDIzNTg1Ci0JCQkJVEFJV0FOLCBQUk9WSU5DRSBPRiBDSElOQQotCi03NC1FNy1DNiAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotNzRFN0M2ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtRUEtM0EgICAoaGV4KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLTc0RUEzQSAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCUJ1aWxkaW5nIDcsIFNlY29uZCBQYXJ0LCBIb25naHVhbGluZyBJbmR1c3RyaWFsIFpvbmUKLQkJCQlYaWxpLE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotNzQtRjAtNkQgICAoaGV4KQkJQXp1cmVXYXZlIFRlY2hub2xvZ2llcywgSW5jLgotNzRGMDZEICAgICAoYmFzZSAxNikJCUF6dXJlV2F2ZSBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk4Ri4sIEJhb3pob25nIFJkLiwgCi0JCQkJWGluZGlhbiBDaXR5LCBUYWlwZWkgQ291bnR5LiAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03NC1GMC03RCAgIChoZXgpCQlCbkNPTSBDby4sTHRkCi03NEYwN0QgICAgIChiYXNlIDE2KQkJQm5DT00gQ28uLEx0ZAotCQkJCVJvb20xMDA3LCBEYWVoeXVuIFRlY2hubyBXb3JsZCwgMTc0Ci0JCQkJT2plb24tZG9uZywgCi0JCQkJVWl3YW5nLXNpIEd5ZW9uZ2dpLWRvIDQzNy03NTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNzQtRjYtMTIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTc0RjYxMiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc0LUY3LTI2ICAgKGhleCkJCU5ldXJvbiBSb2JvdGljcwotNzRGNzI2ICAgICAoYmFzZSAxNikJCU5ldXJvbiBSb2JvdGljcwotCQkJCTkxIFBlYXJzb24gQXZlCi0JCQkJVW5pdCAyCi0JCQkJU29tZXJ2aWxsZSBNQSAwMjE0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzQtRkQtQTAgICAoaGV4KQkJQ29tcHVwYWwgKEdyb3VwKSBDb3Jwb3JhdGlvbiAKLTc0RkRBMCAgICAgKGJhc2UgMTYpCQlDb21wdXBhbCAoR3JvdXApIENvcnBvcmF0aW9uIAotCQkJCU5vLjE1NTUgSmlhc2hhbiBBdmVudWUKLQkJCQlKaWFzaGFuIFpoZWppYW5nIDMxNDExMwotCQkJCUNISU5BCi0KLTc0LUZGLTdEICAgKGhleCkJCVdyZW4gU291bmQgU3lzdGVtcywgTExDCi03NEZGN0QgICAgIChiYXNlIDE2KQkJV3JlbiBTb3VuZCBTeXN0ZW1zLCBMTEMKLQkJCQkxNjkgR2F0ZXNoZWFkIFdheQotCQkJCVBob2VuaXh2aWxsZSBQQSAxOTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtMDItOEYgICAoaGV4KQkJQWRhcHRpdmUgU3BlY3RydW0gYW5kIFNpZ25hbCBBbGlnbm1lbnQgKEFTU0lBKSwgSW5jLgotNzgwMjhGICAgICAoYmFzZSAxNikJCUFkYXB0aXZlIFNwZWN0cnVtIGFuZCBTaWduYWwgQWxpZ25tZW50IChBU1NJQSksIEluYy4KLQkJCQkzMzMgVHdpbiBEb2xwaGluIERyaXZlCi0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDY1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC0wNy0zOCAgIChoZXgpCQlaLlUuSy4gRWx6YWIgUy5BLgotNzgwNzM4ICAgICAoYmFzZSAxNikJCVouVS5LLiBFbHphYiBTLkEuCi0JCQkJdWwuIEtydWN6a293c2tpZWdvIDM5Ci0JCQkJWmFicnplICA0MS04MTMKLQkJCQlQT0xBTkQKLQotNzgtMTEtODUgICAoaGV4KQkJTkJTIFBheW1lbnQgU29sdXRpb25zIEluYy4KLTc4MTE4NSAgICAgKGJhc2UgMTYpCQlOQlMgUGF5bWVudCBTb2x1dGlvbnMgSW5jLgotCQkJCTcwMyBFdmFucyBBdmUKLQkJCQlTdWl0ZSA0MDAKLQkJCQlUb3JvbnRvIE9udGFyaW8gTTlDIDVFOQotCQkJCUNBTkFEQQotCi03OC0xMi1COCAgIChoZXgpCQlPUkFOVEVLIExJTUlURUQKLTc4MTJCOCAgICAgKGJhc2UgMTYpCQlPUkFOVEVLIExJTUlURUQKLQkJCQk1L0YsIEJ1aWxkaW5nIEUsIERha2FuIFRlY2ggUGFyaywgRGFrYW4gdmlsbGFnZSwgWGlsaSBUb3duLCBOYW5zaGFuIERpc3RyaWN0LCBTaGVuemhlbiwgQ2hpbmEKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotNzgtMTktMkUgICAoaGV4KQkJTkFTQ0VOVCBUZWNobm9sb2d5Ci03ODE5MkUgICAgIChiYXNlIDE2KQkJTkFTQ0VOVCBUZWNobm9sb2d5Ci0JCQkJMjc0NCBZb3JrbW9udCBSRAotCQkJCUNoYXJsb3R0ZSBOQyAyODIwOAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtMTktRjcgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotNzgxOUY3ICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtMUMtNUEgICAoaGV4KQkJU0hBUlAgQ29ycG9yYXRpb24KLTc4MUM1QSAgICAgKGJhc2UgMTYpCQlTSEFSUCBDb3Jwb3JhdGlvbgotCQkJCTIyLTIyLE5hZ2Fpa2UtQ2hvCi0JCQkJQWJlbm8tS3UKLQkJCQlPc2FrYS1DaXR5IE9zYWthLVByZWZlY3R1cmUgNTQ1LTg1MjIKLQkJCQlKQVBBTgotCi03OC0xRC1CQSAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLTc4MURCQSAgICAgKGJhc2UgMTYpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLQkJCQlIVUFXRUkgSW5kdXN0cmlhbCBCYXNlIEJhbnRpYW4sTG9uZ2dhbmcKLQkJCQlTaGVuemhlbiBndWFuZ2RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotNzgtMUQtRkQgICAoaGV4KQkJSmFiaWwgSW5jCi03ODFERkQgICAgIChiYXNlIDE2KQkJSmFiaWwgSW5jCi0JCQkJMTA1MDAgRHIuIE1hcnRpbiBMdXRoZXIgS2luZyBKci4gU3QuIE4uCi0JCQkJRG9jayBDCi0JCQkJU3QuIFBldGVyc2J1cmcgRmxvcmlkYSAzMzcxNgotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtMjItM0QgICAoaGV4KQkJQWZmaXJtZWQgTmV0d29ya3MKLTc4MjIzRCAgICAgKGJhc2UgMTYpCQlBZmZpcm1lZCBOZXR3b3JrcwotCQkJCTM1IE5hZ29nIFBhcmsKLQkJCQlBY3RvbiBNQSAwMTcyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtMjUtNDQgICAoaGV4KQkJT21uaW1hIExpbWl0ZWQKLTc4MjU0NCAgICAgKGJhc2UgMTYpCQlPbW5pbWEgTGltaXRlZAotCQkJCU94Zm9yZCBTY2llbmNlIFBhcmsKLQkJCQlKb2huIEVjY2xlcyBIb3VzZSwgUm9iZXJ0IFJvYmluc29uIEF2ZQotCQkJCU94Zm9yZCBPeGZvcmRzaGlyZSBPWDQgNEdQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotNzgtMjUtQUQgICAoaGV4KQkJU0FNU1VORyBFTEVDVFJPTklDUyBDTy4sIExURC4KLTc4MjVBRCAgICAgKGJhc2UgMTYpCQlTQU1TVU5HIEVMRUNUUk9OSUNTIENPLiwgTFRELgotCQkJCTQxNiwgTUFFVEFOLTNET05HLCBQQUxEQUwtR1UKLQkJCQlTVVdPTiBDSVRZIEtZVU5HS0ktRE8gNDQyLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03OC0yQi1DQiAgIChoZXgpCQlEZWxsIEluYwotNzgyQkNCICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUzpSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC0yRS1FRiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotNzgyRUVGICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi03OC0zMC1FMSAgIChoZXgpCQlVbHRyYUNsZW56LCBMTEMKLTc4MzBFMSAgICAgKGJhc2UgMTYpCQlVbHRyYUNsZW56LCBMTEMKLQkJCQkxNDQwIFcgSW5kaWFudG93biBSb2FkCi0JCQkJU3VpdGUgMzUwCi0JCQkJSnVwaXRlciBGTCAzMzQ1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtM0YtMTUgICAoaGV4KQkJRWFzeVNZTkMgTHRkLgotNzgzRjE1ICAgICAoYmFzZSAxNikJCUVhc3lTWU5DIEx0ZC4KLQkJCQlVbml0IDEsIDIgU2Vhd2FyZCBQbGFjZQotCQkJCUNlbnR1cmlvbiBCdXNpbmVzcyBQYXJrCi0JCQkJR2xhc2dvdyBTY290bGFuZCBHNDEgMUhICi0JCQkJVU5JVEVEIEtJTkdET00KLQotNzgtNDQtNzYgICAoaGV4KQkJWmlvbmNvbSB0ZWNobm9sb2d5IGNvLixsdGQKLTc4NDQ3NiAgICAgKGJhc2UgMTYpCQlaaW9uY29tIHRlY2hub2xvZ3kgY28uLGx0ZAotCQkJCUExJkEyIGJ1aWxkaW5nLGxhbnRpYW4gdGVjaG5vbG9neSBwYXJrLCB4aW55dSByb2FkLCB4aW5ncWlhbyBoZW5nZ2FuZyBibG9jaywgc2hhamluZyBzdHJlZXQsIEJhb2FuIERpc3RyaWN0Ci0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTc4LTQ1LUM0ICAgKGhleCkJCURlbGwgSW5jCi03ODQ1QzQgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXkKLQkJCQlNUzpSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRYIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC00Ny0xRCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLTc4NDcxRCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotNzgtNTEtMEMgICAoaGV4KQkJTGl2ZVUgTHRkLgotNzg1MTBDICAgICAoYmFzZSAxNikJCUxpdmVVIEx0ZC4KLQkJCQk1IEhhZ2F2aXNoIFN0LgotCQkJCUtmYXItU2FiYSAgNDQ2NDEKLQkJCQlJU1JBRUwKLQotNzgtNTItNjIgICAoaGV4KQkJU2hlbnpoZW4gSG9qeSBTb2Z0d2FyZSBDby4sIEx0ZC4KLTc4NTI2MiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBIb2p5IFNvZnR3YXJlIENvLiwgTHRkLgotCQkJCTNGLEVhc3Qgb2YgQnVpbGRpbmcyNSxLZXl1YW54aSxOdW1iZXIgNSxLZXpoaXhpIFJvYWQsIFNjaWVuY2UgJiBJbmR1c3RyeSBQYXJrICxOYW4gU2hhbiBEaXN0cmljdCAsU2hlbnpoZW4KLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTA4MDU3Ci0JCQkJQ0hJTkEKLQotNzgtNTctMTIgICAoaGV4KQkJTW9iaWxlIEludGVncmF0aW9uIFdvcmtncm91cAotNzg1NzEyICAgICAoYmFzZSAxNikJCU1vYmlsZSBJbnRlZ3JhdGlvbiBXb3JrZ3JvdXAKLQkJCQk0NTgwIEtsYWhhbmllIERSIFNFIFNURSAxMDYKLQkJCQlJc3NhcXVhaCBXQSA5ODAyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtNTktM0UgICAoaGV4KQkJUkFGSSBHbWJIICYgQ28uS0cKLTc4NTkzRSAgICAgKGJhc2UgMTYpCQlSQUZJIEdtYkggJiBDby5LRwotCQkJCVJhdmVuc2J1cmdlciBTdHIuIDEyOC0xMzQKLQkJCQlCZXJnIEJhZGVuIFd1cnR0ZW1iZXJnIDg4Mjc2Ci0JCQkJR0VSTUFOWQotCi03OC01Qy03MiAgIChoZXgpCQlIaW9zbyBUZWNobm9sb2d5IENvLiwgTHRkLgotNzg1QzcyICAgICAoYmFzZSAxNikJCUhpb3NvIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNnRoIEZsb29yLCAxMnRoIEJ1aWxkaW5nLCBXYW5ndGFuZyBJbmR1c3RyaWFsIFpvbmUsCi0JCQkJWGluZ2FvIFJvYWQsIFhpbGksIE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU1Ci0JCQkJQ0hJTkEKLQotNzgtNjEtN0MgICAoaGV4KQkJTUlUU1VNSSBFTEVDVFJJQyBDTy4sTFREIAotNzg2MTdDICAgICAoYmFzZSAxNikJCU1JVFNVTUkgRUxFQ1RSSUMgQ08uLExURCAKLQkJCQlUc3VydW1ha2kKLQkJCQkyLTExLTIKLQkJCQlUYW1hLXNoaSBUb2t5byAyMDYtODU2NwotCQkJCUpBUEFOCi0KLTc4LTY2LUFFICAgKGhleCkJCVpURUMgSW5zdHJ1bWVudHMsIEluYy4KLTc4NjZBRSAgICAgKGJhc2UgMTYpCQlaVEVDIEluc3RydW1lbnRzLCBJbmMuCi0JCQkJNzcxNSBUaWJ1cm9uIFN0LiBORQotCQkJCUFsYnVxdWVycXVlIE5NIDg3MTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC03Ri02MiAgIChoZXgpCQlHaUsgbWJICi03ODdGNjIgICAgIChiYXNlIDE2KQkJR2lLIG1iSAotCQkJCUdvZXRoZXN0ci4gNQotCQkJCUFhY2hlbiAgNTIwNjQKLQkJCQlHRVJNQU5ZCi0KLTc4LTgxLThGICAgKGhleCkJCVNlcnZlciBSYWNrcyBBdXN0cmFsaWEgUHR5IEx0ZAotNzg4MThGICAgICAoYmFzZSAxNikJCVNlcnZlciBSYWNrcyBBdXN0cmFsaWEgUHR5IEx0ZAotCQkJCTQgLSA2IEVuZHVyYW5jZSBBdmUKLQkJCQlRdWVhbmJleWFuIE5TVyAyNjIwCi0JCQkJQVVTVFJBTElBCi0KLTc4LTg0LTNDICAgKGhleCkJCVNvbnkgQ29ycG9yYXRpb24KLTc4ODQzQyAgICAgKGJhc2UgMTYpCQlTb255IENvcnBvcmF0aW9uCi0JCQkJNS0xLTEyIEtpdGFzaGluYWdhd2EgU2hpbmFnYXdhLWt1Ci0JCQkJVG9reW8gIDE0MS0wMDAxCi0JCQkJSkFQQU4KLQotNzgtODQtRUUgICAoaGV4KQkJSU5EUkEgRVNQQUNJTyBTLkEuCi03ODg0RUUgICAgIChiYXNlIDE2KQkJSU5EUkEgRVNQQUNJTyBTLkEuCi0JCQkJQy8gUk9DIEJPUk9OQVQsIDEzMwotCQkJCUJBUkNFTE9OQSAgMDgwMTgKLQkJCQlTUEFJTgotCi03OC04OS03MyAgIChoZXgpCQlDTUMKLTc4ODk3MyAgICAgKGJhc2UgMTYpCQlDTUMKLQkJCQlJbmR1c3RyaWVwYXJrIERlIEJydXdhYW4gMzdCCi0JCQkJT3VkZW5hYXJkZSBPb3N0LVZsYWFuZGVyZW4gOTcwMAotCQkJCUJFTEdJVU0KLQotNzgtOEMtNTQgICAoaGV4KQkJRW5rb20gVGVjaG5vbG9naWVzIEx0ZC4KLTc4OEM1NCAgICAgKGJhc2UgMTYpCQlFbmtvbSBUZWNobm9sb2dpZXMgTHRkLgotCQkJCUJhZGVuZXJzdHJhc3NlIDU1MQotCQkJCVr8cmljaCBaSCA4MDQ4Ci0JCQkJU1dJVFpFUkxBTkQKLQotNzgtOTItOUMgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi03ODkyOUMgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi03OC05OS04RiAgIChoZXgpCQlNRURJTElORSBJVEFMSUEgU1JMCi03ODk5OEYgICAgIChiYXNlIDE2KQkJTUVESUxJTkUgSVRBTElBIFNSTAotCQkJCVZJQSA4IE1BUlpPLCA0Ci0JCQkJQ09SVEUgVEVHR0UgUkVHR0lPIE5FTEwnRU1JTElBIDQyMDI1Ci0JCQkJSVRBTFkKLQotNzgtQTAtNTEgICAoaGV4KQkJaWlOZXQgTGFicyBQdHkgTHRkIAotNzhBMDUxICAgICAoYmFzZSAxNikJCWlpTmV0IExhYnMgUHR5IEx0ZCAKLQkJCQlMZXZlbCAxCi0JCQkJNTAyIEhheSBTdHJlZXQKLQkJCQlTdWJpYWNvIFdBIDYwMDgKLQkJCQlBVVNUUkFMSUEKLQotNzgtQTEtODMgICAoaGV4KQkJQWR2aWRpYQotNzhBMTgzICAgICAoYmFzZSAxNikJCUFkdmlkaWEKLQkJCQkzIFJpdmVyd2F5Ci0JCQkJU3VpdGUgNzAwCi0JCQkJSG91c3RvbiBUWCA3NzA1NgotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtQTItQTAgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi03OEEyQTAgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotNzgtQTMtRTQgICAoaGV4KQkJQXBwbGUsIEluYy4KLTc4QTNFNCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LUE1LUREICAgKGhleCkJCVNoZW56aGVuIFNtYXJ0ZXllIERpZ2l0YWwgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLTc4QTVERCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBTbWFydGV5ZSBEaWdpdGFsIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJIzYgTm9ydGhlbiBBcmVhIAotCQkJCVNoYW5neHVlIFMmYW1wO1QgSW5kdXN0cmlhbCBQYXJrCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTc4LUE2LTgzICAgKGhleCkJCVByZWNpZGF0YQotNzhBNjgzICAgICAoYmFzZSAxNikJCVByZWNpZGF0YQotCQkJCUNQIDY3MgotCQkJCU1hbGFkaWVyZSA3MQotCQkJCTIwMDIgTkUgMjAwMgotCQkJCVNXSVRaRVJMQU5ECi0KLTc4LUE2LUJEICAgKGhleCkJCURBRVlFT04gQ29udHJvbCZJbnN0cnVtZW50IENvLC5MdGQKLTc4QTZCRCAgICAgKGJhc2UgMTYpCQlEQUVZRU9OIENvbnRyb2wmSW5zdHJ1bWVudCBDbywuTHRkCi0JCQkJQUNFVEVDSE5PVE9XRVIgMi0xMDgsIDE5Ny03LCBHdXJvMy1Eb25nLCBHdXJvLUd1LCAKLQkJCQlTZW91bCAgMTUyLTc2NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03OC1BNy0xNCAgIChoZXgpCQlBbXBoZW5vbAotNzhBNzE0ICAgICAoYmFzZSAxNikJCUFtcGhlbm9sCi0JCQkJMjAgVmFsbGV5IFN0LgotCQkJCUVuZGljb3R0IE5ldyBZb3JrIDEzNzYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1BQy1DMCAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotNzhBQ0MwICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1CNi1DMSAgIChoZXgpCQlBT0JPIFRlbGVjb20gQ28uLEx0ZAotNzhCNkMxICAgICAoYmFzZSAxNikJCUFPQk8gVGVsZWNvbSBDby4sTHRkCi0JCQkJUm9vbTE1MDgsSmlhbmdvbmcgQnVpbGRpbmcKLQkJCQlOby4yMCBXZW5zYW4gUm9hZAotCQkJCUhhbmd6aG91IFpoZUppYW5nICAzMTAwMTIKLQkJCQlDSElOQQotCi03OC1COC0xQSAgIChoZXgpCQlJTlRFUiBTQUxFUyBBL1MKLTc4QjgxQSAgICAgKGJhc2UgMTYpCQlJTlRFUiBTQUxFUyBBL1MKLQkJCQlTdGF2bmVhZ2VydmVqIDIyCi0JCQkJRWdhYSBKdXRsYW5kIDgyNTAKLQkJCQlERU5NQVJLCi0KLTc4LUJBLUQwICAgKGhleCkJCVNoaW55Ym93IFRlY2hub2xvZ3kgQ28uIEx0ZC4KLTc4QkFEMCAgICAgKGJhc2UgMTYpCQlTaGlueWJvdyBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJOUZsLixOby42MyxKdSBHdWFuZyBSZC4sQ2h1bmcgSG8gRGlzdC4KLQkJCQlOZXcgVGFpcGVpICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTc4LUJFLUI2ICAgKGhleCkJCUVuaGFuY2VkIFZpc2lvbgotNzhCRUI2ICAgICAoYmFzZSAxNikJCUVuaGFuY2VkIFZpc2lvbgotCQkJCTU4ODIgTUFDSElORSBEUi4KLQkJCQlIdW50aW5ndG9uIEJlYWNoIENhbGlmb3JuaWEgOTI2NDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTc4LUJFLUJEICAgKGhleCkJCVNUVUxaIEdtYkgKLTc4QkVCRCAgICAgKGJhc2UgMTYpCQlTVFVMWiBHbWJICi0JCQkJSG9sc3RlaW5lciBDaGF1c3NlIDI4MwotCQkJCUhhbWJ1cmcgMjI0NTcKLQkJCQlHRVJNQU5ZCi0KLTc4LUM0LTBFICAgKGhleCkJCUgmRCBXaXJlbGVzcyAKLTc4QzQwRSAgICAgKGJhc2UgMTYpCQlIJkQgV2lyZWxlc3MgCi0JCQkJU2rDtnbDpGdlbiAxNwotCQkJCVNvbG5hICAxNjkgNTUgCi0JCQkJU1dFREVOCi0KLTc4LUM0LUFCICAgKGhleCkJCVNoZW56aGVuIFJ1bnNpbCBUZWNobm9sb2d5IENvLixMdGQKLTc4QzRBQiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBSdW5zaWwgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJNC9GLiwgWXVodWEgQnVpbGRpbmcgQSwgWWFuZ21lbiBJbmR1c3RyaWFsIFBhcmssIAotCQkJCURha2FuIDJuZCBWaWxsYWdlLCBYaWxpIFRvd24sIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgwNTUKLQkJCQlDSElOQQotCi03OC1DNS1FNSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotNzhDNUU1ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1DNi1CQiAgIChoZXgpCQlJbm5vdmFzaWMsIEluYy4KLTc4QzZCQiAgICAgKGJhc2UgMTYpCQlJbm5vdmFzaWMsIEluYy4KLQkJCQkzNzM3IFByaW5jZXRvbiBEci4gTkUsIFN1aXRlIDEzMAotCQkJCUFsYnVxdWVycXVlIE5NIDg0MTA3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1DQS0wNCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotNzhDQTA0ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi03OC1DQS0zOSAgIChoZXgpCQlBcHBsZSwgSW5jLgotNzhDQTM5ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1DRC04RSAgIChoZXgpCQlTTUMgTmV0d29ya3MgSW5jCi03OENEOEUgICAgIChiYXNlIDE2KQkJU01DIE5ldHdvcmtzIEluYwotCQkJCTIwIE1hc29uCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1EMC0wNCAgIChoZXgpCQlOZW91c3lzIFRlY2hub2xvZ3kgSW5jLgotNzhEMDA0ICAgICAoYmFzZSAxNikJCU5lb3VzeXMgVGVjaG5vbG9neSBJbmMuCi0JCQkJMTNGLi0xLCBOTy4xLCBCQU9TSEVORyBSRC4sIAotCQkJCVlPTkdIRSBDSVRZIFRBSVBFSSBDT1VOVFkgIDIzNDQ0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03OC1ENi1GMCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm8gTWVjaGFuaWNzCi03OEQ2RjAgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvIE1lY2hhbmljcwotCQkJCU1ldGFuIERvbmcgMzE0LCBZb3VuZ3RvbmcgR3UKLQkJCQlTdXdvbiBLeXVuZy1naSBEby4gNDQzLTc0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi03OC1ERC0wOCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotNzhERDA4ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotNzgtREQtRDYgICAoaGV4KQkJYy1zY2FwZQotNzhEREQ2ICAgICAoYmFzZSAxNikJCWMtc2NhcGUKLQkJCQl3ZXN0ZXJrYWRlIDIyCi0JCQkJR291ZGEgIDI4MDIgU0wKLQkJCQlORVRIRVJMQU5EUwotCi03OC1ERS1FNCAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotNzhERUU0ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1FMy1CNSAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotNzhFM0I1ICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03OC1FNC0wMCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotNzhFNDAwICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLTc4LUU3LUQxICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci03OEU3RDEgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotNzgtRUMtMjIgICAoaGV4KQkJU2hhbmdoYWkgUWlodWkgVGVsZWNvbSBUZWNobm9sb2d5IENvLiwgTFRECi03OEVDMjIgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgUWlodWkgVGVsZWNvbSBUZWNobm9sb2d5IENvLiwgTFRECi0JCQkJUm9vbSA1MDEsIE5vIDIgQm9ZdW4gUmQsIFB1RG9uZyBOZXcgQXJlYSwgCi0JCQkJU2hhbmdoYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLTc4LUVGLTRDICAgKGhleCkJCVVuZXRjb252ZXJnZW5jZSBDby4sIEx0ZC4KLTc4RUY0QyAgICAgKGJhc2UgMTYpCQlVbmV0Y29udmVyZ2VuY2UgQ28uLCBMdGQuCi0JCQkJMTAxLTUxMSwgRGlnaXRhbCBFbXBpcmUyLCA0ODYsIFNoaW4tZG9uZywgWW91bmd0b25nLWd1Ci0JCQkJU3V3b24gS3lvbmdnaS1kbyA0NDMtMzkwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTc4LUY3LUQwICAgKGhleCkJCVNpbHZlcmJyb29rIFJlc2VhcmNoCi03OEY3RDAgICAgIChiYXNlIDE2KQkJU2lsdmVyYnJvb2sgUmVzZWFyY2gKLQkJCQkzIE1vbnRhZ3VlIFN0cmVldAotCQkJCUJhbG1haW4gTmV3IFNvdXRoIFdhbGVzIDIwNDEKLQkJCQlBVVNUUkFMSUEKLQotNzgtRkUtM0QgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotNzhGRTNEICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtMDMtNEMgICAoaGV4KQkJU0FHRU1DT00KLTdDMDM0QyAgICAgKGJhc2UgMTYpCQlTQUdFTUNPTQotCQkJCTI1MCByb3V0ZSBkZSBsJ0VtcGVyZXVyCi0JCQkJUlVFSUwgTUFMTUFJU09OIElsZSBkZSBGcmFuY2UgOTI4NDgKLQkJCQlGUkFOQ0UKLQotN0MtMDUtMUUgICAoaGV4KQkJUkFGQUVMIExURC4KLTdDMDUxRSAgICAgKGJhc2UgMTYpCQlSQUZBRUwgTFRELgotCQkJCUdVU0ggU0VHRVYgUE9CIDIyNTAKLQkJCQlIQUlGQSAgMzEwMDgKLQkJCQlJU1JBRUwKLQotN0MtMDgtRDkgICAoaGV4KQkJU2hhbmdoYWkgRW5naW5lZXJpbmcgUmVzZWFyY2ggQ2VudGVyIGZvciBCcm9hZGJhbmQgVGVjaG5vbG9naWVzIGFuZCBBcHBsaWNhdGlvbnMKLTdDMDhEOSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBFbmdpbmVlcmluZyBSZXNlYXJjaCBDZW50ZXIgZm9yIEJyb2FkYmFuZCBUZWNobm9sb2dpZXMgYW5kIEFwcGxpY2F0aW9ucwotCQkJCTE1MCBIb25nZ3UgUm9hZAotCQkJCUNoYW5nbmluZyBEaXN0cmljdAotCQkJCVNoYW5naGFpICAyMDAzMzYKLQkJCQlDSElOQQotCi03Qy0xMS1CRSAgIChoZXgpCQlBcHBsZSwgSW5jLgotN0MxMUJFICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJY3VwZXJ0aW5vICBjQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtMTQtNzYgICAoaGV4KQkJRGFtYWxsIFRlY2hub2xvZ2llcyBTLkEuUy4gRGkgTHVkb3ZpYyBBbnNlbG1lIEdsYWdsYW5vbiAmIEMuCi03QzE0NzYgICAgIChiYXNlIDE2KQkJRGFtYWxsIFRlY2hub2xvZ2llcyBTLkEuUy4gRGkgTHVkb3ZpYyBBbnNlbG1lIEdsYWdsYW5vbiAmIEMuCi0JCQkJQ29yc28gZGVsbGEgUmVwdWJibGljYSA2NQotCQkJCUZhYnJpYW5vIEFuY29uYSA2MDA0NAotCQkJCUlUQUxZCi0KLTdDLTE2LTBEICAgKGhleCkJCVNhaWEtQnVyZ2VzcyBDb250cm9scyBBRwotN0MxNjBEICAgICAoYmFzZSAxNikJCVNhaWEtQnVyZ2VzcyBDb250cm9scyBBRwotCQkJCUJhaG5ob2ZzdHJhc3NlIDE4Ci0JCQkJTXVydGVuIEZSIDMyODAKLQkJCQlTV0lUWkVSTEFORAotCi03Qy0xRS01MiAgIChoZXgpCQlNaWNyb3NvZnQKLTdDMUU1MiAgICAgKGJhc2UgMTYpCQlNaWNyb3NvZnQKLQkJCQkxIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdhc2hpbmd0b24gOTgwNTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLTFFLUIzICAgKGhleCkJCTJOIFRFTEVLT01VTklLQUNFIGEucy4KLTdDMUVCMyAgICAgKGJhc2UgMTYpCQkyTiBURUxFS09NVU5JS0FDRSBhLnMuCi0JCQkJTW9kcmFuc2thIDYyMQotCQkJCVByYWd1ZSBDemVjaCBSZXB1YmxpYyAxNDMwMQotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTdDLTIwLTY0ICAgKGhleCkJCUFsY2F0ZWwgTHVjZW50IElQRAotN0MyMDY0ICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTHVjZW50IElQRAotCQkJCTYwMCBNYXJjaCBEcml2ZQotCQkJCUthbmF0YSBPbnRhcmlvIEsySzJFNgotCQkJCUNBTkFEQQotCi03Qy0yQy1GMyAgIChoZXgpCQlTZWN1cmUgRWxlY3RyYW5zIEx0ZAotN0MyQ0YzICAgICAoYmFzZSAxNikJCVNlY3VyZSBFbGVjdHJhbnMgTHRkCi0JCQkJVGhlIEVuZXJneSBJbm5vdmF0aW9uIENlbnRyZQotCQkJCUNhcGVuaHVyc3QKLQkJCQlDaGVzdGVyICBDSDEgNkVTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotN0MtMkUtMEQgICAoaGV4KQkJQmxhY2ttYWdpYyBEZXNpZ24KLTdDMkUwRCAgICAgKGJhc2UgMTYpCQlCbGFja21hZ2ljIERlc2lnbgotCQkJCTExIEdhdGV3YXkgQ291cnQKLQkJCQlQb3J0IE1lbGJvdXJuZQotCQkJCU1lbGJvdXJuZSBWaWN0b3JpYSAzMjA3Ci0JCQkJQVVTVFJBTElBCi0KLTdDLTJGLTgwICAgKGhleCkJCUdpZ2FzZXQgQ29tbXVuaWNhdGlvbnMgR21iSAotN0MyRjgwICAgICAoYmFzZSAxNikJCUdpZ2FzZXQgQ29tbXVuaWNhdGlvbnMgR21iSAotCQkJCVNDTSBQRSAyCi0JCQkJRnJhbmtlbnN0cmFzc2UgMgotCQkJCUJvY2hvbHQgIDQ2Mzk1Ci0JCQkJR0VSTUFOWQotCi03Qy0zMy02RSAgIChoZXgpCQlNRUcgRWxlY3Ryb25pY3MgSW5jLgotN0MzMzZFICAgICAoYmFzZSAxNikJCU1FRyBFbGVjdHJvbmljcyBJbmMuCi0JCQkJQm9nYXppY2kgVW5pdmVyc2l0ZXNpIEt1emV5IEthbXB1cwotCQkJCUJVTiBUZWtub3BhcmsgS2F0OjIgTm86MzA2IEJlYmVrLUJlc2lrdGFzCi0JCQkJSVNUQU5CVUwgIDM0MzQyCi0JCQkJVFVSS0VZCi0KLTdDLTM5LTIwICAgKGhleCkJCVNTT01BIFNFQ1VSSVRZCi03QzM5MjAgICAgIChiYXNlIDE2KQkJU1NPTUEgU0VDVVJJVFkKLQkJCQlVbml0IDcwMywgRGFlcnl1bmcgVGVjaG5vdG93biAxM3RoLCAKLQkJCQk2NjQsIEdhc2FuZG9uZywgCi0JCQkJR2V1bWNoZW9uZ3UgU2VvdWwgMTUzNzU0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTdDLTNCLUQ1ICAgKGhleCkJCUltYWdvIEdyb3VwCi03QzNCRDUgICAgIChiYXNlIDE2KQkJSW1hZ28gR3JvdXAKLQkJCQlSYW1vbiBNYXJ0aSBBbHNpbmEgMi00LTYKLQkJCQlCYWRhbG9uYSBCYXJjZWxvbmEgMDg5MTEKLQkJCQlTUEFJTgotCi03Qy0zRS05RCAgIChoZXgpCQlQQVRFQ0gKLTdDM0U5RCAgICAgKGJhc2UgMTYpCQlQQVRFQ0gKLQkJCQkjMjMtMTcuIFdvbmh5b1JvLTJHYQotCQkJCVlvbmdTYW4tR3UgU2VvdWwgMTQwMTEyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTdDLTRBLTgyICAgKGhleCkJCVBvcnRzbWl0aCBMTEMKLTdDNEE4MiAgICAgKGJhc2UgMTYpCQlQb3J0c21pdGggTExDCi0JCQkJODUwIEUuIEZyYW5rbGluIFJvYWQKLQkJCQlTdWl0ZSA0MDEKLQkJCQlNZXJpZGlhbiBJRCA4MzY0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtNEEtQTggICAoaGV4KQkJTWluZFRyZWUgV2lyZWxlc3MgUFZUIEx0ZAotN0M0QUE4ICAgICAoYmFzZSAxNikJCU1pbmRUcmVlIFdpcmVsZXNzIFBWVCBMdGQKLQkJCQlMR0YsIFBoYXNlIElJSSwgTWluZHRyZWUgV2VzdCBDYW1wdXMsIAotCQkJCUdsb2JhbCBWaWxsYWdlIENhbXB1cywgUlZDRSBQb3N0LCBNeWxhc2FuZHJhIFZpbGxhZ2UsIG9mZiBNeXNvcmUgUm9hZAotCQkJCUJhbmdhbG9yZSBLYXJuYXRha2EgNTYwIDA1OQotCQkJCUlORElBCi0KLTdDLTRCLTc4ICAgKGhleCkJCVJlZCBTdW4gU3ludGhlc2lzIFB0ZSBMdGQKLTdDNEI3OCAgICAgKGJhc2UgMTYpCQlSZWQgU3VuIFN5bnRoZXNpcyBQdGUgTHRkCi0JCQkJNjM5LCAjMTEtNTQ0Ci0JCQkJUGFzaXIgUmlzIERyaXZlICAxCi0JCQkJNTEwNTM5Ci0JCQkJU0lOR0FQT1JFCi0KLTdDLTRDLTU4ICAgKGhleCkJCVNjYWxlIENvbXB1dGluZywgSW5jLgotN0M0QzU4ICAgICAoYmFzZSAxNikJCVNjYWxlIENvbXB1dGluZywgSW5jLgotCQkJCTIxMjEgRWwgQ2FtaW5vIFJlYWwKLQkJCQlTdWl0ZSAxMDAKLQkJCQlTYW4gTWF0ZW8gVU5JVEVEIFNUQVRFUyA5NDQwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtNEMtQTUgICAoaGV4KQkJQlNreUIgTHRkCi03QzRDQTUgICAgIChiYXNlIDE2KQkJQlNreUIgTHRkCi0JCQkJMTMwIEtpbmdzIFJvYWQKLQkJCQlCcmVudHdvb2QgRXNzZXggQ00xNCA0RVEKLQkJCQlVTklURUQgS0lOR0RPTQotCi03Qy00Ri1CNSAgIChoZXgpCQlBcmNhZHlhbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi03QzRGQjUgICAgIChiYXNlIDE2KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTRGLiwgTk8uOSwgUGFyayBBdmVudWUgSUksCi0JCQkJSHNpbmNodSBTY2llbmNlIFBhcmssCi0JCQkJSHNpbmNodSAsICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTdDLTU1LUU3ICAgKGhleCkJCVlTSSwgSW5jLgotN0M1NUU3ICAgICAoYmFzZSAxNikJCVlTSSwgSW5jLgotCQkJCTE3MjUgQnJhbm51bSBMYW5lCi0JCQkJWWVsbG93IFNwcmluZ3MgT2hpbyA0NTM4NwotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtNjEtOTMgICAoaGV4KQkJSFRDIENvcnBvcmF0aW9uCi03QzYxOTMgICAgIChiYXNlIDE2KQkJSFRDIENvcnBvcmF0aW9uCi0JCQkJTm8uIDIzLCBYaW5naHVhIFJkLiwgCi0JCQkJVGFveXVhbiBDaXR5Ci0JCQkJVGFveXVhbiBDb3VudHkgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotN0MtNkEtREIgICAoaGV4KQkJU2FmZVRvbmUgVGVjaG5vbG9neSBDby4sTHRkCi03QzZBREIgICAgIChiYXNlIDE2KQkJU2FmZVRvbmUgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJUm9vbSAzMjMsWmh1b3VKaSBQbGF6YSxOby4xNiBBbkRlIFJvYWQsRWFzdCBEaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwMTEKLQkJCQlDSElOQQotCi03Qy02Qi0zMyAgIChoZXgpCQlUZW55dSBUZWNoIENvLiBMdGQuCi03QzZCMzMgICAgIChiYXNlIDE2KQkJVGVueXUgVGVjaCBDby4gTHRkLgotCQkJCTFGLiwgTm8uMTAsIExuLiAzNiwgR2FuemhlbiAybmQgU3QuCi0JCQkJRGFuc2h1aSBEaXN0Ci0JCQkJTmV3IFRhaXBlaSBDaXR5ICAgMjUxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi03Qy02Qi01MiAgIChoZXgpCQlUaWdhcm8gV2lyZWxlc3MKLTdDNkI1MiAgICAgKGJhc2UgMTYpCQlUaWdhcm8gV2lyZWxlc3MKLQkJCQlTaGVuIEEnYXJpIDcKLQkJCQlQTyA1MTkzCi0JCQkJRXZlbiBZZWh1ZGEgIDQwNTAwCi0JCQkJSVNSQUVMCi0KLTdDLTZDLTM5ICAgKGhleCkJCVBJWFNZUyBTUkwKLTdDNkMzOSAgICAgKGJhc2UgMTYpCQlQSVhTWVMgU1JMCi0JCQkJVklBIERFTExBIENST0NFIFJPU1NBLCAgNDIKLQkJCQlQQURPVkEgUEQgMzUxMjkKLQkJCQlJVEFMWQotCi03Qy02Qy04RiAgIChoZXgpCQlBTVMgTkVWRSBMVEQKLTdDNkM4RiAgICAgKGJhc2UgMTYpCQlBTVMgTkVWRSBMVEQKLQkJCQlCSUxMSU5HVE9OIFJPQUQKLQkJCQlCVVJOTEVZIExBTkNBU0hJUkUgQkIxMSA1VUIKLQkJCQlVTklURUQgS0lOR0RPTQotCi03Qy02RC02MiAgIChoZXgpCQlBcHBsZSwgSW5jCi03QzZENjIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtNkYtMDYgICAoaGV4KQkJQ2F0ZXJwaWxsYXIgVHJpbWJsZSBDb250cm9sIFRlY2hub2xvZ2llcwotN0M2RjA2ICAgICAoYmFzZSAxNikJCUNhdGVycGlsbGFyIFRyaW1ibGUgQ29udHJvbCBUZWNobm9sb2dpZXMKLQkJCQk1NDc1IEtlbGxlbmJ1cmdlciBSZC4KLQkJCQlEYXl0b24gT0ggNDU0MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLTc2LTczICAgKGhleCkJCUVOTUFTIEdtYkgKLTdDNzY3MyAgICAgKGJhc2UgMTYpCQlFTk1BUyBHbWJICi0JCQkJSG9semtvcHBlbHdlZyAyMwotCQkJCUtpZWwgU2NobGVzd2lnLUhvbHN0ZWluIDI0MjUxCi0JCQkJR0VSTUFOWQotCi03Qy03Qi1FNCAgIChoZXgpCQlaJiMzOTtTRURBSSBLRU5LWVVTSE8gQ09SUE9SQVRJT04KLTdDN0JFNCAgICAgKGJhc2UgMTYpCQlaJiMzOTtTRURBSSBLRU5LWVVTSE8gQ09SUE9SQVRJT04KLQkJCQlNZWlrYWkgc2Fubm9taXlhIDJuZCBCbGRnLiAxMXRoL2ZsLgotCQkJCTc2LTIgS3lvbWFjaGkgQ2h1by1rdQotCQkJCUtvYmUgSHlvZ28gNjUwLTAwMzQKLQkJCQlKQVBBTgotCi03Qy03RC00MSAgIChoZXgpCQlKaW5tdXl1IEVsZWN0cm9uaWNzIENvLiwgTHRkLgotN0M3RDQxICAgICAoYmFzZSAxNikJCUppbm11eXUgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJUm9vbSAxMzIsIEJ1aWxkaW5nIDE2LCBUaWFucWlhb3dhbgotCQkJCVhpbmh1YSBOb3J0aCBSb2FkLCBUb25nemhvdSBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMTEwMQotCQkJCUNISU5BCi0KLTdDLThFLUU0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi03QzhFRTQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLTk0LUIyICAgKGhleCkJCVBoaWxpcHMgSGVhbHRoY2FyZSBQQ0NJCi03Qzk0QjIgICAgIChiYXNlIDE2KQkJUGhpbGlwcyBIZWFsdGhjYXJlIFBDQ0kKLQkJCQkyMjcxIENvc21vcyBDdAotCQkJCUNhcmxzYmFkIENBIDkyMDExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy1BMi05QiAgIChoZXgpCQlELlNpZ25UIEdtYkggJmFtcDsgQ28uIEtHCi03Q0EyOUIgICAgIChiYXNlIDE2KQkJRC5TaWduVCBHbWJIICZhbXA7IENvLiBLRwotCQkJCU1hcmt0c3RyLiAxMAotCQkJCUtlcmtlbiAgNDc2NDcKLQkJCQlHRVJNQU5ZCi0KLTdDLUE2LTFEICAgKGhleCkJCU1ITCwgTExDCi03Q0E2MUQgICAgIChiYXNlIDE2KQkJTUhMLCBMTEMKLQkJCQkxMTQwIEVhc3QgQXJxdWVzIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtQUMtQjIgICAoaGV4KQkJQm9zY2ggU29mdHdhcmUgSW5ub3ZhdGlvbnMgR21iSAotN0NBQ0IyICAgICAoYmFzZSAxNikJCUJvc2NoIFNvZnR3YXJlIElubm92YXRpb25zIEdtYkgKLQkJCQlaaWVnZWxlaSA3Ci0JCQkJSW1tZW5zdGFhZCBCYWRlbld1ZXJ0ZW1iZXJnIDg4MDkwCi0JCQkJR0VSTUFOWQotCi03Qy1CMC0zRSAgIChoZXgpCQlPU1JBTSBBRwotN0NCMDNFICAgICAoYmFzZSAxNikJCU9TUkFNIEFHCi0JCQkJQmVybGluZXIgQWxsZWUgNjUKLQkJCQlBdWdzYnVyZyBCYXllcm4gODYxMzYKLQkJCQlHRVJNQU5ZCi0KLTdDLUIyLTFCICAgKGhleCkJCUNpc2NvIFNQVlRHCi03Q0IyMUIgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHZW9yZ2lhIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy1CNS00MiAgIChoZXgpCQlBQ0VTIFRlY2hub2xvZ3kKLTdDQjU0MiAgICAgKGJhc2UgMTYpCQlBQ0VTIFRlY2hub2xvZ3kKLQkJCQkjOTI4LCBIeXVuZGFpIFZlbnR1cmUgVmlsbGUKLQkJCQk3MTMgU3VzZW8tZG9uZywgS2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtNTM5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTdDLUJCLTZGICAgKGhleCkJCUNvc2NvIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotN0NCQjZGICAgICAoYmFzZSAxNikJCUNvc2NvIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCSMxMTAxLCBFTkMgRHJlYW0gdG93ZXIsIDMyNy0yNwotCQkJCUdhc2FuLWRvbmcsIEdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtNzkzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTdDLUJGLUIxICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi03Q0JGQjEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLQkJCQk2NDUwIFNlcXVlbmNlIERyaXZlCi0JCQkJU2FuIERpZWdvIENBIDkyMTIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy1DMy1BMSAgIChoZXgpCQlBcHBsZSwgSW5jLgotN0NDM0ExICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtQzUtMzcgICAoaGV4KQkJQXBwbGUsIEluYy4KLTdDQzUzNyAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtQzgtRDcgICAoaGV4KQkJRGFtYWxpc2sKLTdDQzhENyAgICAgKGJhc2UgMTYpCQlEYW1hbGlzawotCQkJCUNvcmlvbGlzIDIgCi0JCQkJQXZlbnVlIGRlIGwnRXVyb3BlCi0JCQkJRUNVSVNTRVMgIDcxMjEwCi0JCQkJRlJBTkNFCi0KLTdDLUNCLTBEICAgKGhleCkJCUFheGVvbiBUZWNobm9sb2dpZXMgSW5jLgotN0NDQjBEICAgICAoYmFzZSAxNikJCUFheGVvbiBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTQ0NSBDYXByaWNvcm4gU3QuCi0JCQkJQnJlYSBDYWxpZm9ybmlhIDkyODIxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy1DRi1DRiAgIChoZXgpCQlTaGFuZ2hhaSBTRUFSSSBJbnRlbGxpZ2VudCBTeXN0ZW0gQ28uLCBMdGQKLTdDQ0ZDRiAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBTRUFSSSBJbnRlbGxpZ2VudCBTeXN0ZW0gQ28uLCBMdGQKLQkJCQlOby41MDUgV3VuaW5nIFJvYWQsIFB1dHVvIERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMDA2MwotCQkJCUNISU5BCi0KLTdDLUQxLUMzICAgKGhleCkJCUFwcGxlIEluYwotN0NEMUMzICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCWN1cGVydGlubyAgY0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLUQ5LUZFICAgKGhleCkJCU5ldyBDb3Ntb3MgRWxlY3RyaWMgQ28uLCBMdGQuCi03Q0Q5RkUgICAgIChiYXNlIDE2KQkJTmV3IENvc21vcyBFbGVjdHJpYyBDby4sIEx0ZC4KLQkJCQkyLTUtNCBNaXRzdXlhbmFrYQotCQkJCVlvZG9nYXdhLWt1Ci0JCQkJT3Nha2EgT3Nha2EtZnUgNTMyLTAwMzYKLQkJCQlKQVBBTgotCi03Qy1EQS04NCAgIChoZXgpCQlEb25nbmlhbiBOZXR3b3JrcyBJbmMuCi03Q0RBODQgICAgIChiYXNlIDE2KQkJRG9uZ25pYW4gTmV0d29ya3MgSW5jLgotCQkJCTkwIFdlbnNhbiBSb2FkLCBCdWlsZGluZyA4LUEzMDMKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi03Qy1ERC0xMSAgIChoZXgpCQlDaG9uZ3FpbmcgTUFTIFNDSSZURUNILkNvLixMdGQKLTdDREQxMSAgICAgKGJhc2UgMTYpCQlDaG9uZ3FpbmcgTUFTIFNDSSZURUNILkNvLixMdGQKLQkJCQkgNnRoIEZsb29yLCBab25lIEMyLEhpLXRlY2ggVmVudHVyZSBQYXJrLCBOby4xMDUgRXJsYW5nIFZlbnR1cmUgUm9hZAotCQkJCUppdWxvbmdwbyBEaXN0cmljdCwKLQkJCQlDaG9uZ3FpbmcgQ2l0eSAgNDAwMDM5Ci0JCQkJQ0hJTkEKLQotN0MtREQtMjAgICAoaGV4KQkJSU9YT1MgVGVjaG5vbG9naWVzIFMuQS4KLTdDREQyMCAgICAgKGJhc2UgMTYpCQlJT1hPUyBUZWNobm9sb2dpZXMgUy5BLgotCQkJCTQgQ2hlbWluIGRlIEZvbnRlbmFpbGxlcwotCQkJCUdMQU5EIFZBVUQgQ0gtMTE5NgotCQkJCVNXSVRaRVJMQU5ECi0KLTdDLURELTkwICAgKGhleCkJCVNoZW56aGVuIE9nZW1yYXkgVGVjaG5vbG9neSBDby4sIEx0ZC4KLTdDREQ5MCAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBPZ2VtcmF5IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJMyBGbG9vciwgOSBCdWlsZGluZywgTWlueGluZyBJbmR1c3RyaWFsIFpvbmUsCi0JCQkJTWlua2FuZyBSb2FkLCBNaW56aGkgU3RyZWV0LCBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTMxCi0JCQkJQ0hJTkEKLQotN0MtRTAtNDQgICAoaGV4KQkJTkVPTiBJbmMKLTdDRTA0NCAgICAgKGJhc2UgMTYpCQlORU9OIEluYwotCQkJCTUzNDAgQWlycG9ydCBCb3VsZXZhcmQKLQkJCQlCb3VsZGVyIENPIDgwMzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi03Qy1FOS1EMyAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi03Q0U5RDMgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCSAgTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAyMDE2MTMKLQkJCQlDSElOQQotCi03Qy1FQi1FQSAgIChoZXgpCQlBU0NUCi03Q0VCRUEgICAgIChiYXNlIDE2KQkJQVNDVAotCQkJCTRGLiwgTm8uNiwgV3UtUXVhbiA4dGggUmQuIFd1LUd1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlOZXcgVGFpcGVpIENpdHkgIDI0OAotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotN0MtRUQtOEQgICAoaGV4KQkJTUlDUk9TT0ZUCi03Q0VEOEQgICAgIChiYXNlIDE2KQkJTUlDUk9TT0ZUCi0JCQkJT25lIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdBIDk4MDUyLTYzOTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTdDLUVGLTE4ICAgKGhleCkJCUNyZWF0aXZlIFByb2R1Y3QgRGVzaWduIFB0eS4gTHRkLgotN0NFRjE4ICAgICAoYmFzZSAxNikJCUNyZWF0aXZlIFByb2R1Y3QgRGVzaWduIFB0eS4gTHRkLgotCQkJCTgyIFZpY3RvcmlhIFN0cmVldAotCQkJCVNhbmRyaW5naGFtIFZpY3RvcmlhIDMxOTEKLQkJCQlBVVNUUkFMSUEKLQotN0MtRUYtOEEgICAoaGV4KQkJSW5ob24gSW50ZXJuYXRpb25hbCBMdGQuCi03Q0VGOEEgICAgIChiYXNlIDE2KQkJSW5ob24gSW50ZXJuYXRpb25hbCBMdGQuCi0JCQkJMkYsIE5vLjU1MiwgUnVpZ3VhbmcgUmQsIE5laWh1IERpc3QKLQkJCQlUYWlwZWkgVGFpd2FuIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotN0MtRjAtNUYgICAoaGV4KQkJQXBwbGUsIEluYy4KLTdDRjA1RiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotN0MtRjAtOTggICAoaGV4KQkJQmVlIEJlYW5zIFRlY2hub2xvZ2llcywgSW5jLgotN0NGMDk4ICAgICAoYmFzZSAxNikJCUJlZSBCZWFucyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQlUQ0kgQjUKLQkJCQkyLTYtMSBTZW5nZW4KLQkJCQlUc3VrdWJhIENpdHkgSWJhcmFraSAzMDUtMDA0NwotCQkJCUpBUEFOCi0KLTdDLUYwLUJBICAgKGhleCkJCUxpbmt3ZWxsIFRlbGVzeXN0ZW1zIFB2dCBMdGQKLTdDRjBCQSAgICAgKGJhc2UgMTYpCQlMaW5rd2VsbCBUZWxlc3lzdGVtcyBQdnQgTHRkCi0JCQkJMS0xMS0yNTIvMS9BLCBHb3dyYSBLbGFzc2ljCi0JCQkJQmVndW1wZXQKLQkJCQlIeWRlcmFiYWQgQW5kaHJhIFByYWRlc2ggNTAwMDE2Ci0JCQkJSU5ESUEKLQotN0MtRjQtMjkgICAoaGV4KQkJTlVVTyBJbmMuIAotN0NGNDI5ICAgICAoYmFzZSAxNikJCU5VVU8gSW5jLiAKLQkJCQlDIGJsb2NrLCAxOCBTaWh5dWFuIFN0LiBKaG9uZ2poZW5nIERpc3RyaWN0LCAKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotN0MtRkUtMjggICAoaGV4KQkJU2FsdXRyb24gSW5jLgotN0NGRTI4ICAgICAoYmFzZSAxNikJCVNhbHV0cm9uIEluYy4KLQkJCQk0MDk3OSBFbmN5Y2xvcGVkaWEgQ2lyY2xlCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtMDAtMEIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi04MDAwMEIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi04MC0wMC0xMCAgIChoZXgpCQlBVFQgQkVMTCBMQUJPUkFUT1JJRVMKLTgwMDAxMCAgICAgKGJhc2UgMTYpCQlBVFQgQkVMTCBMQUJPUkFUT1JJRVMKLQkJCQkxMTAwIEVBU1QgV0FSUkVOVklMTEUgUk9BRAotCQkJCU5BUEVSVklMTEUgSUwgNjA1NjYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLTBBLTA2ICAgKGhleCkJCUNPTVRFQyBjby4sbHRkCi04MDBBMDYgICAgIChiYXNlIDE2KQkJQ09NVEVDIGNvLixsdGQKLQkJCQk2MCBzaGltb2lzaGlkYSxhemFidS1jaG8sCi0JCQkJTWl5b3NoaS1zaGkgQWljaGkta2VuIDQ3MC0wMjA2Ci0JCQkJSkFQQU4KLQotODAtMTQtNDAgICAoaGV4KQkJU3VubGl0IFN5c3RlbSBUZWNobm9sb2d5IENvcnAKLTgwMTQ0MCAgICAgKGJhc2UgMTYpCQlTdW5saXQgU3lzdGVtIFRlY2hub2xvZ3kgQ29ycAotCQkJCThGLCBOby4xOSxMYW5lIDEyMCwgU2VjMSwgTmVpaHUgUmQuCi0JCQkJVGFwaWVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTgwLTE2LUI3ICAgKGhleCkJCUJydW5lbCBVbml2ZXJzaXR5Ci04MDE2QjcgICAgIChiYXNlIDE2KQkJQnJ1bmVsIFVuaXZlcnNpdHkKLQkJCQlTY2hvb2wgb2YgSVMsIENvbXB1dGluZyAmYW1wOyBNYXRocwotCQkJCUtpbmdzdG9uIExhbmUKLQkJCQlVeGJyaWRnZSBNaWRkbGVzZXggVUI4IDNQSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTgwLTE3LTdEICAgKGhleCkJCU5vcnRlbCBOZXR3b3JrcwotODAxNzdEICAgICAoYmFzZSAxNikJCU5vcnRlbCBOZXR3b3JrcwotCQkJCUNBUlJFVEVSQSBCQVNFIEFFUkVBICMgNTg1MAotCQkJCVphcG9wYW4gSmFsaXNjbyA0NDEzMAotCQkJCU1FWElDTwotCi04MC0xOC1BNyAgIChoZXgpCQlTYW1zdW5nIEVsZXRyb25pY3MgQ28uLCBMdGQKLTgwMThBNyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZXRyb25pY3MgQ28uLCBMdGQKLQkJCQk0MTYsIE1hZXRhbiAzZG9uZywgWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24gR3llb25nZ2ktRG8gNDQzNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTgwLTFGLTAyICAgKGhleCkJCUVkaW1heCBUZWNobm9sb2d5IENvLiBMdGQuCi04MDFGMDIgICAgIChiYXNlIDE2KQkJRWRpbWF4IFRlY2hub2xvZ3kgQ28uIEx0ZC4KLQkJCQlOby4gMywgV3UtQ2h1YW4gM3JkIFJvYWQsIFd1LUt1IEluZHVzdHJpYWwgUGFyaywKLQkJCQlUYWlwZWkgSHNpZW4gIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtMjAtQUYgICAoaGV4KQkJVHJhZGUgRklERVMsIGEucy4KLTgwMjBBRiAgICAgKGJhc2UgMTYpCQlUcmFkZSBGSURFUywgYS5zLgotCQkJCURvcm55Y2ggNTcKLQkJCQlCcm5vICA2MTcwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTgwLTIyLTc1ICAgKGhleCkJCUJlaWppbmcgQmVueSBXYXZlIFRlY2hub2xvZ3kgQ28gTHRkCi04MDIyNzUgICAgIChiYXNlIDE2KQkJQmVpamluZyBCZW55IFdhdmUgVGVjaG5vbG9neSBDbyBMdGQKLQkJCQlOby41NSwgSmlhY2h1YW5nIFJvYWQKLQkJCQlUYWlodSBUb3duCi0JCQkJVG9uZ3pob3UgRGlzdHJpY3QgQmVpamluZyAxMDExMTEKLQkJCQlDSElOQQotCi04MC0yQS1GQSAgIChoZXgpCQlHZXJtYW5lZXJzIEdtYkgKLTgwMkFGQSAgICAgKGJhc2UgMTYpCQlHZXJtYW5lZXJzIEdtYkgKLQkJCQlEci4tS3VydC1TY2h1bWFjaGVyLVJpbmcgMwotCQkJCVdldHRzdGV0dGVuIEJheWVybiA4NTEzOQotCQkJCUdFUk1BTlkKLQotODAtMkQtRTEgICAoaGV4KQkJU29sYXJicmlkZ2UgVGVjaG5vbG9naWVzCi04MDJERTEgICAgIChiYXNlIDE2KQkJU29sYXJicmlkZ2UgVGVjaG5vbG9naWVzCi0JCQkJOTIyOSBXYXRlcmZvcmQgQ2VudHJlIEJsdmQKLQkJCQlCdWlsZGluZyBDLCBTdWl0ZSAxMTAKLQkJCQlBdXN0aW4gVFggNzg3NTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLTJFLTE0ICAgKGhleCkJCWF6ZXRpIE5ldHdvcmtzIEFHCi04MDJFMTQgICAgIChiYXNlIDE2KQkJYXpldGkgTmV0d29ya3MgQUcKLQkJCQlBbSBCcmFtYnVzY2ggMWEKLQkJCQlMdWVuZW4gTlJXIDQ0NTM2Ci0JCQkJR0VSTUFOWQotCi04MC0zNC01NyAgIChoZXgpCQlPVCBTeXN0ZW1zIExpbWl0ZWQKLTgwMzQ1NyAgICAgKGJhc2UgMTYpCQlPVCBTeXN0ZW1zIExpbWl0ZWQKLQkJCQlVbml0IDEwMjMsIDEwL0YuLCBMYW5kbWFyayBOb3J0aCwKLQkJCQlTaGV1bmcgU2h1aSwgTi4gVC4gIAotCQkJCUhPTkcgS09ORwotCi04MC0zOC1GRCAgIChoZXgpCQlMZWFwRnJvZyBFbnRlcnByaXNlcywgSW5jLgotODAzOEZEICAgICAoYmFzZSAxNikJCUxlYXBGcm9nIEVudGVycHJpc2VzLCBJbmMuCi0JCQkJNjQwMSBIb2xpcyBTdHJlZXQKLQkJCQlFbWVyeXZpbGxlIENBIDk0NTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC0zOS1FNSAgIChoZXgpCQlQQVRMSVRFIENPUlBPUkFUSU9OCi04MDM5RTUgICAgIChiYXNlIDE2KQkJUEFUTElURSBDT1JQT1JBVElPTgotCQkJCTE5LTIKLQkJCQlURUNITk9QQVJLCi0JCQkJU0FOREEgSFlPVUdPS0VOIDY2OS0xMzM5Ci0JCQkJSkFQQU4KLQotODAtM0ItOUEgICAoaGV4KQkJZ2hlLWNlcyBlbGVjdHJvbmljIGFnCi04MDNCOUEgICAgIChiYXNlIDE2KQkJZ2hlLWNlcyBlbGVjdHJvbmljIGFnCi0JCQkJSG9lbWVsc3RyYXNzZSAxNwotCQkJCVdhbGQgWkggODYzNgotCQkJCVNXSVRaRVJMQU5ECi0KLTgwLTNGLTVEICAgKGhleCkJCVdpbnN0YXJzIFRlY2hub2xvZ3kgTHRkCi04MDNGNUQgICAgIChiYXNlIDE2KQkJV2luc3RhcnMgVGVjaG5vbG9neSBMdGQKLQkJCQlCbG9jazQsVGFpc29uZyBJbmR1c3RyaWFsIFBhcmssIERhTGFuZyBTdHJlZXQsIExvbmdIdWEgVG93biAsIEJhbydhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDkKLQkJCQlDSElOQQotCi04MC00Mi03QyAgIChoZXgpCQlBZG9sZiBUZWRzZW4gR21iSCAmIENvLiBLRwotODA0MjdDICAgICAoYmFzZSAxNikJCUFkb2xmIFRlZHNlbiBHbWJIICYgQ28uIEtHCi0JCQkJT3R0by1IYWhuLVN0ci4gMTMtMTUKLQkJCQlUcml0dGF1IFNjaGxlc3dpZy1Ib2xzdGVpbiBELTIyOTQ2Ci0JCQkJR0VSTUFOWQotCi04MC00Ny0zMSAgIChoZXgpCQlQYWNrZXQgRGVzaWduLCBJbmMuCi04MDQ3MzEgICAgIChiYXNlIDE2KQkJUGFja2V0IERlc2lnbiwgSW5jLgotCQkJCTI0NTUgQXVndXN0aW5lIERyaXZlCi0JCQkJU3VpdGUgMTAwCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLTQ5LTcxICAgKGhleCkJCUFwcGxlIEluYwotODA0OTcxICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLTRGLTU4ICAgKGhleCkJCVRoaW5rRWNvLCBJbmMuCi04MDRGNTggICAgIChiYXNlIDE2KQkJVGhpbmtFY28sIEluYy4KLQkJCQkzMDMgRmlmdGggQXZlbnVlCi0JCQkJMTgwMQotCQkJCU5ldyBZb3JrIE5ZIDEwMDE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC01MC0xQiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotODA1MDFCICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi04MC01OC1DNSAgIChoZXgpCQlOb3ZhVGVjIEtvbW11bmlrYXRpb25zdGVjaG5payBHbWJICi04MDU4QzUgICAgIChiYXNlIDE2KQkJTm92YVRlYyBLb21tdW5pa2F0aW9uc3RlY2huaWsgR21iSAotCQkJCVRlY2hub2xvZ2llcGFyayA5Ci0JCQkJNHRoIEZsb29yCi0JCQkJUGFkZXJib3JuIE5SVyAzMzEwMAotCQkJCUdFUk1BTlkKLQotODAtNjAtMDcgICAoaGV4KQkJUklNCi04MDYwMDcgICAgIChiYXNlIDE2KQkJUklNCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgNVI5Ci0JCQkJQ0FOQURBCi0KLTgwLTY0LTU5ICAgKGhleCkJCU5pbWJ1cyBJbmMuCi04MDY0NTkgICAgIChiYXNlIDE2KQkJTmltYnVzIEluYy4KLQkJCQkxMzU5IEd3YW5weWVvbmctZG9uZywgWXVzZW9uZy1ndQotCQkJCVN1aXRlIDYxOSBIYW5zaGluIFMgbWVjYQotCQkJCURhZWplb24gIDMwNS01MDkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotODAtNjUtRTkgICAoaGV4KQkJQmVuUSBDb3Jwb3JhdGlvbgotODA2NUU5ICAgICAoYmFzZSAxNikJCUJlblEgQ29ycG9yYXRpb24KLQkJCQkxNiBKaWh1IFJvYWQsIE5laWh1Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTgwLTY2LTI5ICAgKGhleCkJCVByZXNjb3BlIFRlY2hub2xvZ2llcyBDTy4sTFRELgotODA2NjI5ICAgICAoYmFzZSAxNikJCVByZXNjb3BlIFRlY2hub2xvZ2llcyBDTy4sTFRELgotCQkJCTEyRi0xLE5vLjE5MixTZWMgMixDaHVuZyBIc2luIFJvYWQKLQkJCQlIc2luIFRpZW4gQ2l0eSBUYWlwZWkgQ291bnR5IDIzMTQ2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04MC02Qy1CQyAgIChoZXgpCQlORVQgTmV3IEVsZWN0cm9uaWMgVGVjaG5vbG9neSBHbWJICi04MDZDQkMgICAgIChiYXNlIDE2KQkJTkVUIE5ldyBFbGVjdHJvbmljIFRlY2hub2xvZ3kgR21iSAotCQkJCUxlcmNoZW5iZXJnIDcKLQkJCQlGaW5uaW5nIEJhdmFyaWFuIDg2OTIzCi0JCQkJR0VSTUFOWQotCi04MC03MS0xRiAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi04MDcxMUYgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmUKLQkJCQlTdW5ueXZhbGUgIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC03Ni05MyAgIChoZXgpCQlOZXdhZyBTQQotODA3NjkzICAgICAoYmFzZSAxNikJCU5ld2FnIFNBCi0JCQkJV3lzcGlhbnNraWVnbyAzCi0JCQkJTm93eSBTYWN6IHdvai4gTWFsb3BvbHNraWUgMzMtMzAwCi0JCQkJUE9MQU5ECi0KLTgwLTdBLTdGICAgKGhleCkJCUFCQiBHZW53YXkgWGlhbWVuIEVsZWN0cmljYWwgRXF1aXBtZW50IENPLiwgTFRECi04MDdBN0YgICAgIChiYXNlIDE2KQkJQUJCIEdlbndheSBYaWFtZW4gRWxlY3RyaWNhbCBFcXVpcG1lbnQgQ08uLCBMVEQKLQkJCQk3RixOby4yMyBXYW5naGFpIFJvYWQsU29mdHdhcmUgUGFyayAyLCBMdmxpbmcgUm9hZCwgCi0JCQkJWGlhbWVuIEZ1amlhbiBQcm92aW5jZSAzNjEwMDgKLQkJCQlDSElOQQotCi04MC03RC0xQiAgIChoZXgpCQlOZW9zeXN0ZW0gQ28uIEx0ZC4KLTgwN0QxQiAgICAgKGJhc2UgMTYpCQlOZW9zeXN0ZW0gQ28uIEx0ZC4KLQkJCQk0LTE5LTEyIFRha2FvCi0JCQkJRGF6YWlmdS1zaGkgRnVrdW9rYSA4MTgtMDEyMgotCQkJCUpBUEFOCi0KLTgwLTdELUUzICAgKGhleCkJCUNob25ncWluZyBTaWNodWFuIEluc3RydW1lbnQgTWljcm9jaXJjdWl0IENvLkxURC4KLTgwN0RFMyAgICAgKGJhc2UgMTYpCQlDaG9uZ3FpbmcgU2ljaHVhbiBJbnN0cnVtZW50IE1pY3JvY2lyY3VpdCBDby5MVEQuCi0JCQkJSmluaHVhIFJvYWQgTm8uMzA5LCBCZWliZWksCi0JCQkJQ2hvbmdxaW5nICA0MDA3MDAKLQkJCQlDSElOQQotCi04MC04MS1BNSAgIChoZXgpCQlUT05HUUlORyBDT01NVU5JQ0FUSU9OIEVRVUlQTUVOVCAoU0hFTlpIRU4pIENvLixMdGQKLTgwODFBNSAgICAgKGJhc2UgMTYpCQlUT05HUUlORyBDT01NVU5JQ0FUSU9OIEVRVUlQTUVOVCAoU0hFTlpIRU4pIENvLixMdGQKLQkJCQlUb25ncWluZyBJbmR1c3RyeSBQYXJrLGppdXdlaSx4aXhpYW5nIFRvd24sQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEyNgotCQkJCUNISU5BCi0KLTgwLTg2LTk4ICAgKGhleCkJCU5ldHJvbmljcyBUZWNobm9sb2dpZXMgSW5jLgotODA4Njk4ICAgICAoYmFzZSAxNikJCU5ldHJvbmljcyBUZWNobm9sb2dpZXMgSW5jLgotCQkJCTYwMC0xNSBBbGxzdGF0ZSBQYXJrd2F5Ci0JCQkJTWFya2hhbSBPbnRhcmlvIEwzUiA1QjQKLQkJCQlDQU5BREEKLQotODAtOTEtMkEgICAoaGV4KQkJTGloIFJvbmcgZWxlY3Ryb25pYyBFbnRlcnByaXNlIENvLiwgTHRkLgotODA5MTJBICAgICAoYmFzZSAxNikJCUxpaCBSb25nIGVsZWN0cm9uaWMgRW50ZXJwcmlzZSBDby4sIEx0ZC4KLQkJCQkyRiwgTm8uIDIsIExhbmUgMzg3LCBIc2luIFNodSBSb2FkCi0JCQkJSHNpbiBDaHVhbmcgVGFpcGVpIDI0MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtOTEtQzAgICAoaGV4KQkJQWdpbGVNZXNoLCBJbmMuCi04MDkxQzAgICAgIChiYXNlIDE2KQkJQWdpbGVNZXNoLCBJbmMuCi0JCQkJMTY3MSBJbnRlcm5hdGlvbmFsIFBrd3kKLQkJCQlTdWl0ZSAxMTMKLQkJCQlSaWNoYXJkc29uIFRYIDc1MDgxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC05My05MyAgIChoZXgpCQlYYXB0IEdtYkgKLTgwOTM5MyAgICAgKGJhc2UgMTYpCQlYYXB0IEdtYkgKLQkJCQlOZWlkZW5idXJnZXIgU3RyLiAxMAotCQkJCUdlbHNlbmtpcmNoZW4gTlJXIDQ1ODk3Ci0JCQkJR0VSTUFOWQotCi04MC05NC02QyAgIChoZXgpCQlUT0tZTyBSQURBUiBDT1JQT1JBVElPTgotODA5NDZDICAgICAoYmFzZSAxNikJCVRPS1lPIFJBREFSIENPUlBPUkFUSU9OCi0JCQkJMTUtNyBOaXNoaWt1Ym8tY2hvCi0JCQkJSG9kb2dheWEta3UsIFlva29oYW1hLXNoaSBLYW5hZ2F3YSAyNDAtMDAyMgotCQkJCUpBUEFOCi0KLTgwLTk2LUIxICAgKGhleCkJCU1vdG9yb2xhIE1vYmlsaXR5Ci04MDk2QjEgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHkKLQkJCQk2MDAgTm9ydGggVS5TLiBIaWdod2F5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04MC05Ny0xQiAgIChoZXgpCQlBbHRlbmVyZ3kgUG93ZXIgU3lzdGVtLEluYy4KLTgwOTcxQiAgICAgKGJhc2UgMTYpCQlBbHRlbmVyZ3kgUG93ZXIgU3lzdGVtLEluYy4KLQkJCQlOby4xIFlhdGFpIFJvYWQsIAotCQkJCUppYXhpbmcgQ2l0eSwgICBaaGVqaWFuZyBQcm92aW5jZSwgMzE0MDUwCi0JCQkJQ0hJTkEKLQotODAtOUItMjAgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi04MDlCMjAgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi04MC1BMS1ENyAgIChoZXgpCQlTaGFuZ2hhaSBEYXJlR2xvYmFsIFRlY2hub2xvZ2llcyBDby4sTHRkIAotODBBMUQ3ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERhcmVHbG9iYWwgVGVjaG5vbG9naWVzIENvLixMdGQgCi0JCQkJMjJGLEluZm8gVGVjaCBCdWlsZGluZyxOby4xNTU1LEtvbmdqaWFuZyBSZC4KLQkJCQlTaGFuZ2hhaSAgMjAwMDkyCi0JCQkJQ0hJTkEKLQotODAtQjItODkgICAoaGV4KQkJRm9yd29ybGQgRWxlY3Ryb25pY3MgTHRkLgotODBCMjg5ICAgICAoYmFzZSAxNikJCUZvcndvcmxkIEVsZWN0cm9uaWNzIEx0ZC4KLQkJCQlOby4xNiBLZXl1YW4gMm5kIFJkLiwgU2l0dW4gRGlzdHJpY3QKLQkJCQlUYWljaHVuZyBDaXR5ICA4ODYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTgwLUIzLTJBICAgKGhleCkJCUFsc3RvbSBHcmlkCi04MEIzMkEgICAgIChiYXNlIDE2KQkJQWxzdG9tIEdyaWQKLQkJCQlTdCBMZW9uYXJkJ3MgQXZlCi0JCQkJU3RhZmZvcmQgIFN0YWZmb3Jkc2hpcmUgU1QxNyA0TFgKLQkJCQlVTklURUQgS0lOR0RPTQotCi04MC1CNi04NiAgIChoZXgpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi04MEI2ODYgICAgIChiYXNlIDE2KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotODAtQkEtQUMgICAoaGV4KQkJVGVsZUFkYXB0IEx0ZAotODBCQUFDICAgICAoYmFzZSAxNikJCVRlbGVBZGFwdCBMdGQKLQkJCQlBeGlzIDUKLQkJCQlSaG9kZXMgV2F5Ci0JCQkJV2F0Zm9yZCBIZXJ0Zm9yZHNoaXJlIFdEMjQ0WVcKLQkJCQlVTklURUQgS0lOR0RPTQotCi04MC1DMS02RSAgIChoZXgpCQlIZXdsZXR0IFBhY2thcmQKLTgwQzE2RSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0IFBhY2thcmQKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtQzYtM0YgICAoaGV4KQkJUmVtZWMgQnJvYWRiYW5kIFdpcmVsZXNzICwgTExDCi04MEM2M0YgICAgIChiYXNlIDE2KQkJUmVtZWMgQnJvYWRiYW5kIFdpcmVsZXNzICwgTExDCi0JCQkJMTcwMzQgQ2FtaW5vIFNhbiBCZXJuYXJkbwotCQkJCVNhbiBEaWVnbyBDQSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtQzYtQUIgICAoaGV4KQkJVGVjaG5pY29sb3IgVVNBIEluYy4KLTgwQzZBQiAgICAgKGJhc2UgMTYpCQlUZWNobmljb2xvciBVU0EgSW5jLgotCQkJCTEwMSBXZXN0IDEwM3JkIFN0cmVldAotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI5MAotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtQzYtQ0EgICAoaGV4KQkJRW5kaWFuIHMuci5sLgotODBDNkNBICAgICAoYmFzZSAxNikJCUVuZGlhbiBzLnIubC4KLQkJCQlQaWxsaG9mIDQ3Ci0JCQkJRnJhbmdhcnRvIEJvbHphbm8gMzkwMTAKLQkJCQlJVEFMWQotCi04MC1DOC02MiAgIChoZXgpCQlPcGVucGVhaywgSW5jCi04MEM4NjIgICAgIChiYXNlIDE2KQkJT3BlbnBlYWssIEluYwotCQkJCTE3NTAgQ2xpbnQgTW9vcmUgUmQKLQkJCQlCb2NhIFJhdG9uIEZsb3JpZGEgMzM0ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTgwLUNFLUIxICAgKGhleCkJCVRoZWlzc2VuIFRyYWluaW5nIFN5c3RlbXMgR21iSAotODBDRUIxICAgICAoYmFzZSAxNikJCVRoZWlzc2VuIFRyYWluaW5nIFN5c3RlbXMgR21iSAotCQkJCVNjaHVjaGFyZHN0cmFzc2UgMwotCQkJCUR1ZXNzZWxkb3JmIE5SVyA0MDU5NQotCQkJCUdFUk1BTlkKLQotODAtRDAtMTkgICAoaGV4KQkJRW1iZWQsIEluYwotODBEMDE5ICAgICAoYmFzZSAxNikJCUVtYmVkLCBJbmMKLQkJCQk0MTAgR3JlYXQgUm9hZAotCQkJCUxpdHRsZXRvbiBNQSAwMTQ2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotODAtRDEtOEIgICAoaGV4KQkJSGFuZ3pob3UgSSdjb252ZXJnZSBUZWNobm9sb2d5IENvLixMdGQKLTgwRDE4QiAgICAgKGJhc2UgMTYpCQlIYW5nemhvdSBJJ2NvbnZlcmdlIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCU5vLjYxOCBYaXhpIFJvYWQsCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDEyCi0JCQkJQ0hJTkEKLQotODAtREItMzEgICAoaGV4KQkJUG93ZXIgUXVvdGllbnQgSW50ZXJuYXRpb25hbCBDby4sIEx0ZC4KLTgwREIzMSAgICAgKGJhc2UgMTYpCQlQb3dlciBRdW90aWVudCBJbnRlcm5hdGlvbmFsIENvLiwgTHRkLgotCQkJCThGLiwgTm8uIDQ5LCBTZWMuIDQsIEpob25neWFuZyBSZC4sIFR1IENoZW5nIERpc3QuLAotCQkJCU5ldyBUYWlwZWkgQ2l0eSAgMjM2NzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTgwLUVFLTczICAgKGhleCkJCVNodXR0bGUgSW5jLgotODBFRTczICAgICAoYmFzZSAxNikJCVNodXR0bGUgSW5jLgotCQkJCU5vLiAzMCBMYW5lIDc2LCBSZWkgS3VhbmcgUmQKLQkJCQlUYWlwZWkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODAtRjUtOTMgICAoaGV4KQkJSVJDTyBTaXN0ZW1hcyBkZSBUZWxlY29tdW5pY2FjafNuIFMuQS4KLTgwRjU5MyAgICAgKGJhc2UgMTYpCQlJUkNPIFNpc3RlbWFzIGRlIFRlbGVjb211bmljYWNp824gUy5BLgotCQkJCVZpYSBTZXJnaWEgOTgKLQkJCQlNYXRhcvMgQmFyY2Vsb25hIDA4MzAyCi0JCQkJU1BBSU4KLQotODAtRjYtMkUgICAoaGV4KQkJSGFuZ3pob3UgSDNDIFRlY2hub2xvZ2llcyBDby4sIExpbWl0ZWQKLTgwRjYyRSAgICAgKGJhc2UgMTYpCQlIYW5nemhvdSBIM0MgVGVjaG5vbG9naWVzIENvLiwgTGltaXRlZAotCQkJCTMxMCBMaXVoZSBSb2FkLCBaaGlqaWFuZyBTY2llbmNlIFBhcmsKLQkJCQlIYW5nemhvdSBaaGVqaWFuZywgUC5SLkNoaW5hIDMxMDA1MwotCQkJCUNISU5BCi0KLTgwLUZCLTA2ICAgKGhleCkJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotODBGQjA2ICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCUIxLTcsSHVhd2VpIEluZHVzdHJpYWwgQmFzZSxCYW50aWFuLExvbmdnYW5nCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEyOQotCQkJCUNISU5BCi0KLTgwLUZGLUE4ICAgKGhleCkJCVVOSURJUwotODBGRkE4ICAgICAoYmFzZSAxNikJCVVOSURJUwotCQkJCTQgZmxvb3JzKDQwMSksIDE0NC00LCBHdW1pLWRvbmcKLQkJCQlCdW5kYW5nLWd1Ci0JCQkJU3VuZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtODEwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTg0LTAwLUQyICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi04NDAwRDIgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlOeWEgVmF0dGVudG9ybmV0Ci0JCQkJTHVuZCBTRSAyMjE4OAotCQkJCVNXRURFTgotCi04NC0xOC04OCAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi04NDE4ODggICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkgCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04NC0xQi01RSAgIChoZXgpCQlORVRHRUFSCi04NDFCNUUgICAgIChiYXNlIDE2KQkJTkVUR0VBUgotCQkJCTM1MCBFQVNUIFBMVU1FUklBIERSSVZFCi0JCQkJU0FOIEpPU0UgQ0FMSUZPUk5JQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotODQtMjEtNDEgICAoaGV4KQkJU2hlbnpoZW4gR2lud2F2ZSBUZWNobm9sb2dpZXMgTHRkLgotODQyMTQxICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEdpbndhdmUgVGVjaG5vbG9naWVzIEx0ZC4KLQkJCQk0L0YsUjItQSxIaWdoLVRlY2ggSW5kdXN0cmlhbCBQYXJrCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTg0LTI0LThEICAgKGhleCkJCU1vdG9yb2xhIFNvbHV0aW9ucyBJbmMKLTg0MjQ4RCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBTb2x1dGlvbnMgSW5jCi0JCQkJT25lIE1vdG9yb2xhIFBsYXphCi0JCQkJSG9sdHN2aWxsZSBOWSAxMTc0MgotCQkJCVVOSVRFRCBTVEFURVMKLQotODQtMjUtREIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi04NDI1REIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTg0LTI3LUNFICAgKGhleCkJCUNvcnBvcmF0aW9uIG9mIHRoZSBQcmVzaWRpbmcgQmlzaG9wIG9mIFRoZSBDaHVyY2ggb2YgSmVzdXMgQ2hyaXN0IG9mIExhdHRlci1kYXkgU2FpbnRzCi04NDI3Q0UgICAgIChiYXNlIDE2KQkJQ29ycG9yYXRpb24gb2YgdGhlIFByZXNpZGluZyBCaXNob3Agb2YgVGhlIENodXJjaCBvZiBKZXN1cyBDaHJpc3Qgb2YgTGF0dGVyLWRheSBTYWludHMKLQkJCQlBdWRpb3Zpc3VhbCBFbmdpbmVlcmluZyAtIDJMTAotCQkJCTUwIEVhc3QgTm9ydGggVGVtcGxlCi0JCQkJU2FsdCBMYWtlIENpdHkgVVQgODQxNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg0LTI5LTE0ICAgKGhleCkJCUVNUE9SSUEgVEVMRUNPTSBQcm9kdWt0aW9ucy0gdW5kIFZlcnRyaWVic2dlc21iSCAmIENvIEtHCi04NDI5MTQgICAgIChiYXNlIDE2KQkJRU1QT1JJQSBURUxFQ09NIFByb2R1a3Rpb25zLSB1bmQgVmVydHJpZWJzZ2VzbWJIICYgQ28gS0cKLQkJCQlJbmR1c3RyaWV6ZWlsZSAzNiwgCi0JCQkJTGlueiAgNDAyMAotCQkJCUFVU1RSSUEKLQotODQtMjktOTkgICAoaGV4KQkJQXBwbGUgSW5jCi04NDI5OTkgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotODQtMkItMkIgICAoaGV4KQkJRGVsbCBJbmMuCi04NDJCMkIgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMuCi0JCQkJT25lIERlbGwgV2F5LCBNUyBSUjUtNDUKLQkJCQlSb3VuZCBSb2NrICBUZXhhcyA3ODY4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotODQtMkItNTAgICAoaGV4KQkJSHVyaWEgQ28uLEx0ZC4KLTg0MkI1MCAgICAgKGJhc2UgMTYpCQlIdXJpYSBDby4sTHRkLgotCQkJCSMxOTAtMjggQ2h1bmdjaHVuLTJEb25nCi0JCQkJQnVweW91bmctR3UKLQkJCQlJbmNoZW9uICA0MDMtMDMyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTg0LTMwLUU1ICAgKGhleCkJCVNreUhhd2tlIFRlY2hub2xvZ2llcywgTExDCi04NDMwRTUgICAgIChiYXNlIDE2KQkJU2t5SGF3a2UgVGVjaG5vbG9naWVzLCBMTEMKLQkJCQkyNzQgQ29tbWVyY2UgUGFyayBEciwgU3RlIE0KLQkJCQlSaWRnZWxhbmQgTVMgMzkxNTcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg0LTM2LTExICAgKGhleCkJCWh5dW5nc2V1bCBwdWJsaXNoaW5nIG5ldHdvcmtzCi04NDM2MTEgICAgIChiYXNlIDE2KQkJaHl1bmdzZXVsIHB1Ymxpc2hpbmcgbmV0d29ya3MKLQkJCQk1MjYtNCwgcGFqdSBib29rY2l0eSwgbXVuYmFsLWxpLCBneW9oYS1ldXAKLQkJCQlwYWp1LXNpIEd5ZW9uZ2dpLWRvIDQxMy04MzIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotODQtM0EtNEIgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi04NDNBNEIgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi04NC0zRi00RSAgIChoZXgpCQlUcmktVGVjaCBNYW51ZmFjdHVyaW5nLCBJbmMuCi04NDNGNEUgICAgIChiYXNlIDE2KQkJVHJpLVRlY2ggTWFudWZhY3R1cmluZywgSW5jLgotCQkJCTMzMyBUdXJiaW5lIERyaXZlCi0JCQkJUmFwaWQgQ2l0eSBTRCA1NzcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotODQtNDgtMjMgICAoaGV4KQkJV09YVEVSIFRFQ0hOT0xPR1kgQ28uIEx0ZAotODQ0ODIzICAgICAoYmFzZSAxNikJCVdPWFRFUiBURUNITk9MT0dZIENvLiBMdGQKLQkJCQkyM0YgRG91c2hpeWFuZ2d1YW5nLCBDaGVnb25nbWlhbwotCQkJCUZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuICA1MTgwNDAKLQkJCQlDSElOQQotCi04NC00OS0xNSAgIChoZXgpCQl2QXJtb3VyIE5ldHdvcmtzLCBJbmMuCi04NDQ5MTUgICAgIChiYXNlIDE2KQkJdkFybW91ciBOZXR3b3JrcywgSW5jLgotCQkJCTQ2MzMgT0xEIElST05TSURFUyBEUgotCQkJCVN1aXRlIDMwOAotCQkJCVNBTlRBIENMQVJBIENBIDk1MDU0LTE4MDcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg0LTRCLUY1ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTg0NEJGNSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCSBTaGFuZ2hhaSAgMjAxNjEzIAotCQkJCUNISU5BCi0KLTg0LTU3LTg3ICAgKGhleCkJCURWUiBDJkMgQ28uLCBMdGQuCi04NDU3ODcgICAgIChiYXNlIDE2KQkJRFZSIEMmQyBDby4sIEx0ZC4KLQkJCQk3RiA3MjAgTmFta3dhbmcgQ2VudGxleCBCbGRnLCBDaGVvbmdjaGVvbi1kb25nLCBCdXB5ZW9uZy1ndQotCQkJCUluY2hlb24gIDQwMy0wMzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotODQtNUQtRDcgICAoaGV4KQkJU2hlbnpoZW4gTmV0Y29tIEVsZWN0cm9uaWNzIENvLixMdGQKLTg0NURENyAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBOZXRjb20gRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCTgvRiwxIEJ1aWxkaW5nLEZpbmFuY2UgQmFzZSxOby44LEtlZmEgUm9hZCxIaWdoLVRlY2ggUGFyawotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi04NC02QS1FRCAgIChoZXgpCQlXaXJlbGVzcyBUc3VrYW1vdG8uLGNvLkxURAotODQ2QUVEICAgICAoYmFzZSAxNikJCVdpcmVsZXNzIFRzdWthbW90by4sY28uTFRECi0JCQkJMTYtMjEgMWNob21lLElzb3lhbWEKLQkJCQlTdXp1a2EgTWllLXByZWYgNTEwMDI1NgotCQkJCUpBUEFOCi0KLTg0LTZFLUIxICAgKGhleCkJCVBhcmsgQXNzaXN0IExMQwotODQ2RUIxICAgICAoYmFzZSAxNikJCVBhcmsgQXNzaXN0IExMQwotCQkJCTExMSBXMjh0aCBTdHJlZXQKLQkJCQlTdWl0ZSAyQgotCQkJCU5ldyBZb3JrIE5ZIDEwMDAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04NC03NC0yQSAgIChoZXgpCQl6dGUgY29ycG9yYXRpb24KLTg0NzQyQSAgICAgKGJhc2UgMTYpCQl6dGUgY29ycG9yYXRpb24KLQkJCQkxMi9GLixSJkQgYnVpbGRpbmcsa2VqaW5hbiBSb2FkCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODA1NwotCQkJCVVOSVRFRCBTVEFURVMKLQotODQtN0UtNDAgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLTg0N0U0MCAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotODQtOEQtODQgICAoaGV4KQkJUmFqYW50IENvcnBvcmF0aW9uCi04NDhEODQgICAgIChiYXNlIDE2KQkJUmFqYW50IENvcnBvcmF0aW9uCi0JCQkJNDAwIEVhc3QgS2luZyBTdHJlZXQKLQkJCQlNYWx2ZXJuIFBBIDE5MzU1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04NC04Ri02OSAgIChoZXgpCQlEZWxsIEluYy4KLTg0OEY2OSAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TOlJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg0LTkwLTAwICAgKGhleCkJCUFybm9sZCAmYW1wOyBSaWNodGVyIENpbmUgVGVjaG5pawotODQ5MDAwICAgICAoYmFzZSAxNikJCUFybm9sZCAmYW1wOyBSaWNodGVyIENpbmUgVGVjaG5pawotCQkJCVR1ZXJrZW5zdHJhc3NlIDg5Ci0JCQkJTXVuaWNoIEJhdmFyaWEgODA3OTkKLQkJCQlHRVJNQU5ZCi0KLTg0LTk3LUI4ICAgKGhleCkJCU1lbWpldCBJbmMuCi04NDk3QjggICAgIChiYXNlIDE2KQkJTWVtamV0IEluYy4KLQkJCQkxNTkyMCBCZXJuYXJkbyBDZW50ZXIgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg0LUE2LUM4ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotODRBNkM4ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotODQtQTgtRTQgICAoaGV4KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotODRBOEU0ICAgICAoYmFzZSAxNikJCUh1YXdlaSBEZXZpY2UgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi04NC1BOS05MSAgIChoZXgpCQlDeWJlciBUcmFucyBKYXBhbiBDby4sTHRkLgotODRBOTkxICAgICAoYmFzZSAxNikJCUN5YmVyIFRyYW5zIEphcGFuIENvLixMdGQuCi0JCQkJNkYgQmx1ZWJlbGwgQmxkZwotCQkJCTItMTUtOSBOaXNoaS1Hb3RhbmFkYQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDEtMDAzMQotCQkJCUpBUEFOCi0KLTg0LUFGLTFGICAgKGhleCkJCUJlYXQgU3lzdGVtIFNlcnZpY2UgQ28sLiBMdGQuCi04NEFGMUYgICAgIChiYXNlIDE2KQkJQmVhdCBTeXN0ZW0gU2VydmljZSBDbywuIEx0ZC4KLQkJCQkxLTExLTEtMkYsIE5vZGF5YS1jaG8KLQkJCQlLaXRhLWt1Ci0JCQkJT2theWFtYS1jaXR5IE9rYXlhbWEgNzAwLTA4MTUKLQkJCQlKQVBBTgotCi04NC1DNy0yNyAgIChoZXgpCQlHbm9kYWwgTHRkCi04NEM3MjcgICAgIChiYXNlIDE2KQkJR25vZGFsIEx0ZAotCQkJCTE3OCAtIDE4MCBIb3R3ZWxsIFJvYWQKLQkJCQlCcmlzdG9sICBCUzggNFJQCi0JCQkJVU5JVEVEIEtJTkdET00KLQotODQtQzctQTkgICAoaGV4KQkJQzNQTyBTLkEuCi04NEM3QTkgICAgIChiYXNlIDE2KQkJQzNQTyBTLkEuCi0JCQkJQWxlamFuZHJvIEdvaWNvZWNoZWEgNiBMb2NhbCA5Ci0JCQkJU2FudCBKdXN0IERlc3Zlcm4gQmFyY2Vsb25hIEVTMDg5NjAKLQkJCQlTUEFJTgotCi04NC1DOS1CMiAgIChoZXgpCQlELUxpbmsgSW50ZXJuYXRpb25hbAotODRDOUIyICAgICAoYmFzZSAxNikJCUQtTGluayBJbnRlcm5hdGlvbmFsCi0JCQkJMSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIFBhcmssICMwMy0xMiwgVGhlIFN5bmVyZ3kgCi0JCQkJNjA5OTE3Ci0JCQkJU0lOR0FQT1JFCi0KLTg0LUQzLTJBICAgKGhleCkJCUlFRUUgUDE5MDUuMQotODREMzJBICAgICAoYmFzZSAxNikJCUlFRUUgUDE5MDUuMQotCQkJCTQ0NSBIb2VzIExhbmUKLQkJCQlQTyBCb3ggMTMzMQotCQkJCVBpc2NhdGF3YXkgTmV3IEplcnNleSAwODg1NS0xMzMxIAotCQkJCVVOSVRFRCBTVEFURVMKLQotODQtRDktQzggICAoaGV4KQkJVW5pcGF0dGVybiBDby4sCi04NEQ5QzggICAgIChiYXNlIDE2KQkJVW5pcGF0dGVybiBDby4sCi0JCQkJMTZGLiwgTm8uMzAuLCBCZWlwaW5nIEUuIFJkLiwgWmhvbmd6aGVuZyBEaXN0LiwKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODQtREItMkYgICAoaGV4KQkJU2llcnJhIFdpcmVsZXNzIEluYwotODREQjJGICAgICAoYmFzZSAxNikJCVNpZXJyYSBXaXJlbGVzcyBJbmMKLQkJCQkxMzgxIFdpcmVsZXNzIFdheQotCQkJCVJpY2htb25kIEJDIFY2ViAzQTQKLQkJCQlDQU5BREEKLQotODQtREUtM0QgICAoaGV4KQkJQ3J5c3RhbCBWaXNpb24gTHRkCi04NERFM0QgICAgIChiYXNlIDE2KQkJQ3J5c3RhbCBWaXNpb24gTHRkCi0JCQkJTGlvbiBUZWNobm9sb2d5IHBhcmsKLQkJCQlTdGF0aW9uIFJvYWQgZWFzdAotCQkJCVdoaXR0bGVzZm9yZC8gQ2FtYnJpZGdlIENhbWJzIENCMjIgNFdMCi0JCQkJVU5JVEVEIEtJTkdET00KLQotODQtRUEtOTkgICAoaGV4KQkJVmlld29ya3MKLTg0RUE5OSAgICAgKGJhc2UgMTYpCQlWaWV3b3JrcwotCQkJCTZGIFN1bnRlY2hjaXR5IDIsMzA3LTIgU2FuZ2RhZXdvbi1kb25nLCBKdW5nd29uLWd1Ci0JCQkJU2VvbmduYW0gIEd5ZW9uZ2dpIDQ2Mi04MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotODQtRjYtNEMgICAoaGV4KQkJQ3Jvc3MgUG9pbnQgQlYKLTg0RjY0QyAgICAgKGJhc2UgMTYpCQlDcm9zcyBQb2ludCBCVgotCQkJCVdhYW5kZXJ3ZWcgMTIKLQkJCQlFbW1lbiBEcmVudGhlIDc4MTIgSFoKLQkJCQlORVRIRVJMQU5EUwotCi04OC0xMC0zNiAgIChoZXgpCQlQYW5vZGljKFNoZW5aaGVuKSBFbGVjdHJvbmljcyBMaW10ZWQKLTg4MTAzNiAgICAgKGJhc2UgMTYpCQlQYW5vZGljKFNoZW5aaGVuKSBFbGVjdHJvbmljcyBMaW10ZWQKLQkJCQlGbG9vciAxMiwgR3JlbnRlY2ggQnVpbGRpbmcsIEtlamkuQy4gUm9hZCAKLQkJCQkzcmQgSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssIE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgIDUxODA1MgotCQkJCUNISU5BCi0KLTg4LTE4LUFFICAgKGhleCkJCVRhbXJvbiBDby4sIEx0ZAotODgxOEFFICAgICAoYmFzZSAxNikJCVRhbXJvbiBDby4sIEx0ZAotCQkJCTEzODUsSGFzdW51bWEsIE1pbnVtYS1rdQotCQkJCVNhaXRhbWEtc2hpIFNhaXRhbWEgMzM3LTg1NTYKLQkJCQlKQVBBTgotCi04OC0yMC0xMiAgIChoZXgpCQlMTUkgVGVjaG5vbG9naWVzCi04ODIwMTIgICAgIChiYXNlIDE2KQkJTE1JIFRlY2hub2xvZ2llcwotCQkJCTE2NzMgQ2xpdmVkZW4gQXZlbnVlCi0JCQkJRGVsdGEgQnJpdGlzaCBDb2x1bWJpYSBWM00gNlY1Ci0JCQkJQ0FOQURBCi0KLTg4LTIxLUUzICAgKGhleCkJCU5lYnVzZW5zLCBTLkwuCi04ODIxRTMgICAgIChiYXNlIDE2KQkJTmVidXNlbnMsIFMuTC4KLQkJCQlDLyBBZGFqYSBTL04sIEVkaWZpY2lvIE0yCi0JCQkJUGFycXVlIGNpZW50aWZpY28gZGUgbGEgVVNBTAotCQkJCVZpbGxhbWF5b3IgZGUgbGEgQXJtdfFhIFNhbGFtYW5jYSAzNzE4NQotCQkJCVNQQUlOCi0KLTg4LTIzLUZFICAgKGhleCkJCVRUVGVjaCBDb21wdXRlcnRlY2huaWsgQUcKLTg4MjNGRSAgICAgKGJhc2UgMTYpCQlUVFRlY2ggQ29tcHV0ZXJ0ZWNobmlrIEFHCi0JCQkJU2Nob2VuYnJ1bm5lcnN0cmFzc2UgNwotCQkJCVZpZW5uYSAgMTA0MAotCQkJCUFVU1RSSUEKLQotODgtMjUtMkMgICAoaGV4KQkJQXJjYWR5YW4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotODgyNTJDICAgICAoYmFzZSAxNikJCUFyY2FkeWFuIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk0Ri4sIE5PLjksIFBhcmsgQXZlbnVlIElJICwKLQkJCQlIc2luY2h1IFNjaWVuY2UgUGFyawotCQkJCUhzaW5jaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODgtMzAtOEEgICAoaGV4KQkJTXVyYXRhIE1hbnVmYWN0dWFyaW5nIENvLixMdGQuCi04ODMwOEEgICAgIChiYXNlIDE2KQkJTXVyYXRhIE1hbnVmYWN0dWFyaW5nIENvLixMdGQuCi0JCQkJMS0xMC0xIEhpZ2FzaGlrb3RhcmkKLQkJCQlOYWdhb2tha3lvLXNoaSBLeW90byA2MTctODU1NQotCQkJCUpBUEFOCi0KLTg4LTQxLUMxICAgKGhleCkJCU9SQklTQVQgREEgQU1BWk9OSUEgSU5EIEUgQUVST0wgU0EKLTg4NDFDMSAgICAgKGJhc2UgMTYpCQlPUkJJU0FUIERBIEFNQVpPTklBIElORCBFIEFFUk9MIFNBCi0JCQkJQVYgU0hJU0hJTUEgSElGVU1JLCAyOTExCi0JCQkJVVJCQU5PVkEKLQkJCQlTQU8gSk9TRSBET1MgQ0FNUE9TIFNBTyBQQVVMTyAxMjI0NC0wMDAKLQkJCQlCUkFaSUwKLQotODgtNDMtRTEgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotODg0M0UxICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotODgtNEItMzkgICAoaGV4KQkJU2llbWVucyBBRywgSGVhbHRoY2FyZSBTZWN0b3IKLTg4NEIzOSAgICAgKGJhc2UgMTYpCQlTaWVtZW5zIEFHLCBIZWFsdGhjYXJlIFNlY3RvcgotCQkJCUhlbmtlc3RyYXNzZSAxMjcKLQkJCQlFcmxhbmdlbiBCYXZhcmlhIDkxMDUyCi0JCQkJR0VSTUFOWQotCi04OC01My0yRSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLTg4NTMyRSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLTg4LTUzLUQ0ICAgKGhleCkJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLTg4NTNENCAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi04OC01Qy00RiAgIChoZXgpCQlBbGNhdGVsIEx1Y2VudAotODg1QzRGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwgTHVjZW50Ci0JCQkJVmlhIHRyZW50bywgMzAKLQkJCQlWaW1lcmNhdGUgTUIgMjAwNTkKLQkJCQlJVEFMWQotCi04OC02Qi03NiAgIChoZXgpCQlDSElOQSBIT1BFRlVMIEdST1VQIEhPUEVGVUwgRUxFQ1RSSUMgQ08uLExURAotODg2Qjc2ICAgICAoYmFzZSAxNikJCUNISU5BIEhPUEVGVUwgR1JPVVAgSE9QRUZVTCBFTEVDVFJJQyBDTy4sTFRECi0JCQkJU2h1bmRlIERpc3RyaWN0IG9mIEZvc2hhbiBDaXR5LCBHdWFuZ2RvbmcgUHJvdmluY2UsIEd1YW5neGkgUm9uZyBSb25nZ3VpIFRvd24gUm9hZCwgTm8uIDE0OAotCQkJCUNoYW5naG9uZyBhbmQgVGVjaG5vbG9neSBUZWNobm9sb2d5IEJ1aWxkaW5nIDIyIEZsb29yIEZ1aHVhIEJ1aWxkaW5nLEhpLVRlY2ggUGFyayxOYW5zaGFuIERpc3RyaXN0LHNoZW56aGVuIENpdHkgLAotCQkJCUZvc2hhbiBHdWFuZ0RvbmcgNTI4MzA1Ci0JCQkJQ0hJTkEKLQotODgtODYtQTAgICAoaGV4KQkJU2ltdG9uIFRlY2hub2xvZ2llcywgTHRkLgotODg4NkEwICAgICAoYmFzZSAxNikJCVNpbXRvbiBUZWNobm9sb2dpZXMsIEx0ZC4KLQkJCQkyIFRhaXNoYW4gUm9hZCwgQnVpbGRpbmcgQywgM3JkIEZsb29yCi0JCQkJV3V4aSwgIFByb3ZpbmNlIG9mIEppYW5nc3UsICAyMTQwMjgKLQkJCQlDSElOQQotCi04OC04Ny0xNyAgIChoZXgpCQlDQU5PTiBJTkMuCi04ODg3MTcgICAgIChiYXNlIDE2KQkJQ0FOT04gSU5DLgotCQkJCTMtMzAtMixTaGltb21hcnVrbyBPaHRhLUt1Ci0JCQkJVG9reW8gIDE0Ni04NTAxCi0JCQkJSkFQQU4KLQotODgtOEItNUQgICAoaGV4KQkJU3RvcmFnZSBBcHBsaWFuY2UgQ29ycG9yYXRpb24gCi04ODhCNUQgICAgIChiYXNlIDE2KQkJU3RvcmFnZSBBcHBsaWFuY2UgQ29ycG9yYXRpb24gCi0JCQkJMjkgU3UgWmhvdSBKaWUsIEhhaWRpYW4gRGlzdC4KLQkJCQlTdWl0ZSA2MDEtNjAzCi0JCQkJQmVpamluZyAgIDEwMDA4MAotCQkJCUNISU5BCi0KLTg4LThDLTE5ICAgKGhleCkJCUJyYWR5IENvcnAgQXNpYSBQYWNpZmljIEx0ZAotODg4QzE5ICAgICAoYmFzZSAxNikJCUJyYWR5IENvcnAgQXNpYSBQYWNpZmljIEx0ZAotCQkJCTEsIEtha2kgQnVraXQgQ3Jlc2NlbnQKLQkJCQk0MTYyMzYKLQkJCQlTSU5HQVBPUkUKLQotODgtOTEtREQgICAoaGV4KQkJUmFja3Rpdml0eQotODg5MUREICAgICAoYmFzZSAxNikJCVJhY2t0aXZpdHkKLQkJCQlIZXJ0c3Rva3dlZyA1Ci0JCQkJVGVybmF0IEZsYW5kZXJzIDE3NDEKLQkJCQlCRUxHSVVNCi0KLTg4LTk0LUY5ICAgKGhleCkJCUdlbWljb20gVGVjaG5vbG9neSwgSW5jLgotODg5NEY5ICAgICAoYmFzZSAxNikJCUdlbWljb20gVGVjaG5vbG9neSwgSW5jLgotCQkJCTE2RiwgQnVpbGRpbmcgQiwgTm8uIDk4LCBTZWMgMSwgSHNpbi1UYWktV3UgUmQuCi0JCQkJSHNpLUNoaWggY2l0eSBUYWlwZWkgMjIxMDIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTg4LTk1LUI5ICAgKGhleCkJCVVuaWZpZWQgUGFja2V0IFN5c3RlbXMgQ3JvcAotODg5NUI5ICAgICAoYmFzZSAxNikJCVVuaWZpZWQgUGFja2V0IFN5c3RlbXMgQ3JvcAotCQkJCTFGLiwgTm8zMixMYW5lIDE1LFNFQyA2LCBNaW5RdWFuIEUgUmQuLCAKLQkJCQlUYWlwZWkgTmVpaHUgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04OC05Ni03NiAgIChoZXgpCQlUVEMgTUFSQ09OSSBzLnIuby4KLTg4OTY3NiAgICAgKGJhc2UgMTYpCQlUVEMgTUFSQ09OSSBzLnIuby4KLQkJCQlU77+9ZWJvaG9zdGlja++/vSA5ODcvNQotCQkJCVByYWhhICAxMDAwMAotCQkJCUNaRUNIIFJFUFVCTElDCi0KLTg4LTk3LURGICAgKGhleCkJCUVudHJ5cGFzcyBDb3Jwb3JhdGlvbiBTZG4uIEJoZC4KLTg4OTdERiAgICAgKGJhc2UgMTYpCQlFbnRyeXBhc3MgQ29ycG9yYXRpb24gU2RuLiBCaGQuCi0JCQkJTm8uNDAsIEphbGFuIFRQUCAxLzEwLAotCQkJCVRhbWFuIEluZHVzdHJpIFB1Y2hvbmcsIEJhdHUgMTIsIEphbGFuIAotCQkJCVB1Y2hvbmcgU2VsYW5nb3IgRGFydWwgRWhzYW4gNDcxMDAKLQkJCQlNQUxBWVNJQQotCi04OC05OC0yMSAgIChoZXgpCQlURVJBT04KLTg4OTgyMSAgICAgKGJhc2UgMTYpCQlURVJBT04KLQkJCQkyRiBTZW9oYW4gQmxkZy4sIDE1NTItMTAsIFNlb2Noby1Eb25nLCBTZW9jaG8tR3UsCi0JCQkJU2VvdWwgIDEzNy0wNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotODgtOUYtRkEgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotODg5RkZBICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQkgTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotODgtQTUtQkQgICAoaGV4KQkJUVBDT00gSU5DLgotODhBNUJEICAgICAoYmFzZSAxNikJCVFQQ09NIElOQy4KLQkJCQk2MDMwIE5XIDk5IEFWRQotCQkJCVNVSVRFIDQwNAotCQkJCURPUkFMIEZMT1JJREEgMzMxNzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg4LUFDLUMxICAgKGhleCkJCUdlbmVyaXRvbiBDby4sIEx0ZC4gCi04OEFDQzEgICAgIChiYXNlIDE2KQkJR2VuZXJpdG9uIENvLiwgTHRkLiAKLQkJCQk4Ri0xLCBOby4gODEsIFNodWlsaSBSZC4sIAotCQkJCUhzaW5jaHUgQ2l0eSwgICAzMDA1OSAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTg4LUFFLTFEICAgKGhleCkJCUNPTVBBTCBJTkZPUk1BVElPTihLVU5TSEFOKUNPLixMVEQKLTg4QUUxRCAgICAgKGJhc2UgMTYpCQlDT01QQUwgSU5GT1JNQVRJT04oS1VOU0hBTilDTy4sTFRECi0JCQkJTk8uIDI1LCBUSEUgM1JEIFNUUkVFVCBLVU5TSEFOIEVYUE9SVCBQUk9DRVNTSU5HIFpPTkUKLQkJCQlLVU5TSEFOIFNVWkhPVSAyMTUzMDAKLQkJCQlDSElOQQotCi04OC1CMS02OCAgIChoZXgpCQlEZWx0YSBDb250cm9sIEdtYkgKLTg4QjE2OCAgICAgKGJhc2UgMTYpCQlEZWx0YSBDb250cm9sIEdtYkgKLQkJCQlSb25kb3JmZXIgSGF1cHRzdHIuIDMzCi0JCQkJQ29sb2duZSBOUlcgNTA5OTcgCi0JCQkJR0VSTUFOWQotCi04OC1CNi0yNyAgIChoZXgpCQlHZW1iaXJkIEV1cm9wZSBCVgotODhCNjI3ICAgICAoYmFzZSAxNikJCUdlbWJpcmQgRXVyb3BlIEJWCi0JCQkJV2l0dGV2cm91d2VuIDU2Ci0JCQkJQWxtZXJlIEZsZXZvbGFuZCAxMzU4Q0QKLQkJCQlORVRIRVJMQU5EUwotCi04OC1CQS03RiAgIChoZXgpCQlRZmllZG5ldCBDby4sIEx0ZC4KLTg4QkE3RiAgICAgKGJhc2UgMTYpCQlRZmllZG5ldCBDby4sIEx0ZC4KLQkJCQkjMjA0IEtKIEJsZGcuIERhZUNoaS1Eb25nCi0JCQkJR2FuZ05hbS1HdQotCQkJCVNlb3VsICAxMzUtODQ3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTg4LUJGLUQ1ICAgKGhleCkJCVNpbXBsZSBBdWRpbyBMdGQKLTg4QkZENSAgICAgKGJhc2UgMTYpCQlTaW1wbGUgQXVkaW8gTHRkCi0JCQkJQ2FydHNpZGUgSG91c2UKLQkJCQkxIENsYXJrc3RvbiBSb2FkCi0JCQkJR2xhc2dvdyAgRzQ0IDRFRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTg4LUMzLTZFICAgKGhleCkJCUJlaWppbmcgRXJlbmViZW4gbG5mb3JtYXRpb24gVGVjaG5vbG9neSBMaW1pdGVkCi04OEMzNkUgICAgIChiYXNlIDE2KQkJQmVpamluZyBFcmVuZWJlbiBsbmZvcm1hdGlvbiBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlSb29tIDE0RixCdWlsZGluZyBGLEhvbmdsb25nIENlbnRyYWwgUGxhemEsTk8sMzAwMSxIZXBpbmcgUm9hZCxMdW9IdSAKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTEwCi0JCQkJQ0hJTkEKLQotODgtQzYtNjMgICAoaGV4KQkJQXBwbGUsIEluYy4KLTg4QzY2MyAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotODgtREMtOTYgICAoaGV4KQkJU0VOQU8gTmV0d29ya3MsIEluYy4KLTg4REM5NiAgICAgKGJhc2UgMTYpCQlTRU5BTyBOZXR3b3JrcywgSW5jLgotCQkJCU5vLiA1MDAsIEZ1c2luZyAzcmQgUmQuLCBId2EtWWEgVGVjaG5vbG9neSBQYXJrCi0JCQkJS3VlaS1TaGFuIEhzaWFuZyBUYW9ZdWFuIENvdW50eSAzMzMKLQkJCQlUQUlXQU4sIFBST1ZJTkNFIE9GIENISU5BCi0KLTg4LURELTc5ICAgKGhleCkJCVZvbHRhaXJlCi04OERENzkgICAgIChiYXNlIDE2KQkJVm9sdGFpcmUKLQkJCQkxMywgWmFyY2hpbiBTdAotCQkJCVJhYW5hbmEgIDQzNjYyCi0JCQkJSVNSQUVMCi0KLTg4LUUwLUEwICAgKGhleCkJCVNoZW56aGVuIFZpc2lvblNUT1IgVGVjaG5vbG9naWVzIENvLiwgTHRkCi04OEUwQTAgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gVmlzaW9uU1RPUiBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQkxMi9GLCBFYXN0IFRvd2VyLE5hbnNoYW4gU29mdHdhcmUgUGFyawotCQkJCTEwMTI4IFNoZW5uYW4gQmx2ZAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi04OC1FMC1GMyAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi04OEUwRjMgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkgCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04OC1FNy0xMiAgIChoZXgpCQlXaGlybHBvb2wgQ29ycG9yYXRpb24KLTg4RTcxMiAgICAgKGJhc2UgMTYpCQlXaGlybHBvb2wgQ29ycG9yYXRpb24KLQkJCQk3NTAgTW9udGUgRHIuCi0JCQkJTWFpbCBTdG9wIDUyMTAKLQkJCQlCZW50b24gSGFyYm9yIE1pY2hpZ2FuIDQ5MDIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04OC1FNy1BNiAgIChoZXgpCQlpS25vd2xlZGdlIEludGVncmF0aW9uIENvcnAuCi04OEU3QTYgICAgIChiYXNlIDE2KQkJaUtub3dsZWRnZSBJbnRlZ3JhdGlvbiBDb3JwLgotCQkJCTEwRiBOby4yLCBTZWMuIDMsIFhpbnNoZW5nIFMuIFJkLiwKLQkJCQlEYWFuIERpc3QuCi0JCQkJVGFpcGVpICAxMDY2MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotODgtRUQtMUMgICAoaGV4KQkJQ3VkbyBDb21tdW5pY2F0aW9uIENvLiwgTHRkLgotODhFRDFDICAgICAoYmFzZSAxNikJCUN1ZG8gQ29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KLQkJCQkxMEYgQXJpcmFuZ1RWIDE0NjctODAsIFNlb2Noby0zZG9uZywgU2VvY2hvLWd1Ci0JCQkJU2VvdWwgIDEzNy04NjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotODgtRjAtNzcgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotODhGMDc3ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTg4LUY0LTg4ICAgKGhleCkJCWNlbGxvbiBjb21tdW5pY2F0aW9ucyB0ZWNobm9sb2d5KHNoZW56aGVuKUNvLixMdGQuCi04OEY0ODggICAgIChiYXNlIDE2KQkJY2VsbG9uIGNvbW11bmljYXRpb25zIHRlY2hub2xvZ3koc2hlbnpoZW4pQ28uLEx0ZC4KLQkJCQkxMy9GIEMgQnVpbGRpbmcsR2FveGluIFMuQXZlLixIaS1UZWNoIEluZHVzdHJpYWwgUGFyayxOYW5zaGFuLHNoZW56aGVuNTE4MDU3LFBSQwotCQkJCXNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi04OC1GRC0xNSAgIChoZXgpCQlMSU5FRVlFIENPLiwgTFRECi04OEZEMTUgICAgIChiYXNlIDE2KQkJTElORUVZRSBDTy4sIExURAotCQkJCTVGIE1hcnVmdWt1IEJsZGcuIDM5LTEgS2FyYWhhc2hpCi0JCQkJTmlzaGloaXJhZ2FraS1jaG8sIE1pbmFtaS1rdQotCQkJCUt5b3RvICA2MDEtODQ2OAotCQkJCUpBUEFOCi0KLThDLTBDLUEzICAgKGhleCkJCUFtcGVyCi04QzBDQTMgICAgIChiYXNlIDE2KQkJQW1wZXIKLQkJCQlNYXJjb25pIDMsIFBUTQotCQkJCVRyZXMgQ2FudG9zIE1hZHJpZCAyODc2MAotCQkJCVNQQUlOCi0KLThDLTExLUNCICAgKGhleCkJCUFCVVMgU2VjdXJpdHktQ2VudGVyIEdtYkggJiBDby4gS0cKLThDMTFDQiAgICAgKGJhc2UgMTYpCQlBQlVTIFNlY3VyaXR5LUNlbnRlciBHbWJIICYgQ28uIEtHCi0JCQkJTGlua2VyIEtyZXV0aHdlZyA1Ci0JCQkJQWZmaW5nIC8gTXVlaGxoYXVzZW4gQmF2YXJpYSA4NjQ0NAotCQkJCUdFUk1BTlkKLQotOEMtMUYtOTQgICAoaGV4KQkJUkYgU3VyZ2ljYWwgU3lzdGVtIEluYy4gCi04QzFGOTQgICAgIChiYXNlIDE2KQkJUkYgU3VyZ2ljYWwgU3lzdGVtIEluYy4gCi0JCQkJOTc0MCBBcHBhbG9vc2EgUm9hZCAKLQkJCQlTdWl0ZSAxNTAgCi0JCQkJU2FuIERpZWdvICBDQSA5MjEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotOEMtMjEtMEEgICAoaGV4KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi04QzIxMEEgICAgIChiYXNlIDE2KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJQnVpbGRpbmcgMjQgKGZsb29ycyAxLDMsNCw1KSBhbmQgMjggKGZsb29yczEtNCkgIENlbnRyYWwgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBQYXJrLFNoZW5uYW4gUmQsIE5hbnNoYW4KLQkJCQlzaGVuemhlbiBndWFuZ2RvbmcgUHJvdmluY2UgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotOEMtMjctMUQgICAoaGV4KQkJUXVhbnRIb3VzZQotOEMyNzFEICAgICAoYmFzZSAxNikJCVF1YW50SG91c2UKLQkJCQkxMy0xNSBSdWUgVGFpdGJvdXQKLQkJCQlQYXJpcyAgNzUwMDkKLQkJCQlGUkFOQ0UKLQotOEMtMjctOEEgICAoaGV4KQkJVm9jb2xsZWN0IEluYwotOEMyNzhBICAgICAoYmFzZSAxNikJCVZvY29sbGVjdCBJbmMKLQkJCQk3MDMgUm9kaSBSb2FkCi0JCQkJUGl0dHNidXJnaCBQYSAxNTIzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotOEMtNDQtMzUgICAoaGV4KQkJU2hhbmdoYWkgQnJvYWRNb2JpIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLThDNDQzNSAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBCcm9hZE1vYmkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVJtLiA5MDEsIEJsZC4gOSwgTm8uMTUxNSBHdW1laSBSZCwgWHVodWkgRGlzdHJpY3QKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotOEMtNEQtRUEgICAoaGV4KQkJQ2VyaW8gQ29ycG9yYXRpb24KLThDNERFQSAgICAgKGJhc2UgMTYpCQlDZXJpbyBDb3Jwb3JhdGlvbgotCQkJCTJGLiwgTm8uMTA1LCBNaW5jeXVhbiBSZC4sIFNpbmRpYW4gQ2l0eQotCQkJCVRhaXBlaSBDb3VudHkgIDIzMTQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04Qy01MS0wNSAgIChoZXgpCQlTaGVuemhlbiBpcmVhZHlnbyBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENPLixMVEQuCi04QzUxMDUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gaXJlYWR5Z28gSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDTy4sTFRELgotCQkJCVJvb20gMDIsMTFGLERFU0FZIEJ1aWxkaW5nLE5vLjEgSGktVGVjaCBTb3V0aCBSb2FkCi0JCQkJU2hlbnpoZW4gIDUxODA1NwotCQkJCUNISU5BCi0KLThDLTUzLUY3ICAgKGhleCkJCUEmRCBFTkdJTkVFUklORyBDTy4sIExURC4KLThDNTNGNyAgICAgKGJhc2UgMTYpCQlBJkQgRU5HSU5FRVJJTkcgQ08uLCBMVEQuCi0JCQkJMzM2LTYgRGFuZ3NhbmRvbmcgNi1nYSwgWWVvbmdkZXVuZ3BvLWd1Ci0JCQkJU2VvdWwgIDE1MC04MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOEMtNTQtMUQgICAoaGV4KQkJTEdFIAotOEM1NDFEICAgICAoYmFzZSAxNikJCUxHRSAKLQkJCQk2MC0zOSAsIEthc2FuIC1kb25nICwgR3VtY2hlb24tZ3UuCi0JCQkJU2VvdWwgICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLThDLTU2LUM1ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotOEM1NkM1ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLThDLTU3LUZEICAgKGhleCkJCUxWWCBXZXN0ZXJuCi04QzU3RkQgICAgIChiYXNlIDE2KQkJTFZYIFdlc3Rlcm4KLQkJCQk3MDAgNTR0aCBhdmUgTm9ydGgKLQkJCQlTdC4gQ2xvdWQgTU4gNTYzMDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLThDLTU4LTc3ICAgKGhleCkJCUFwcGxlLCBJbmMuCi04QzU4NzcgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLThDLTU5LThCICAgKGhleCkJCUMgVGVjaG5vbG9naWVzIEFCCi04QzU5OEIgICAgIChiYXNlIDE2KQkJQyBUZWNobm9sb2dpZXMgQUIKLQkJCQlUcmFrdG9ydsOkZ2VuIDExCi0JCQkJTHVuZCBTa8OlbmUgMjI2IDYwCi0JCQkJU1dFREVOCi0KLThDLTVDLUExICAgKGhleCkJCWQtYnJvYWQsSU5DCi04QzVDQTEgICAgIChiYXNlIDE2KQkJZC1icm9hZCxJTkMKLQkJCQkyLTEyLTMgU2hpbllva29oYW1hIEtvdWhva3UtS3UKLQkJCQlZb2tvaGFtYSBLYW5hZ2F3YSAyMjItMDAzMwotCQkJCUpBUEFOCi0KLThDLTVGLURGICAgKGhleCkJCUJlaWppbmcgUmFpbHdheSBTaWduYWwgRmFjdG9yeQotOEM1RkRGICAgICAoYmFzZSAxNikJCUJlaWppbmcgUmFpbHdheSBTaWduYWwgRmFjdG9yeQotCQkJCU5vLjIgU2ljdW4gWGlsdSBMYW5nZmEsSHVhbmdjdW4sCi0JCQkJRGF4aW5nIEFyZWEsCi0JCQkJQmVpaWpuZyAgMTAyNjEzCi0JCQkJQ0hJTkEKLQotOEMtNjAtNEYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotOEM2MDRGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLThDLTY0LTBCICAgKGhleCkJCUJleW9uZCBEZXZpY2VzIGQuby5vLgotOEM2NDBCICAgICAoYmFzZSAxNikJCUJleW9uZCBEZXZpY2VzIGQuby5vLgotCQkJCVRyemFza2EgY2VzdGEgNTE1Ci0JCQkJQnJlem92aWNhIHByaSBManVibGphbmkgIFNJLTEzNTEKLQkJCQlTTE9WRU5JQQotCi04Qy02NC0yMiAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotOEM2NDIyICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLThDLTY4LTc4ICAgKGhleCkJCU5vcnRlay1BUwotOEM2ODc4ICAgICAoYmFzZSAxNikJCU5vcnRlay1BUwotCQkJCVZhbmdrcm9rZW4gMgotCQkJCUFrcmVzaHVzIDEzNTEgUlVECi0JCQkJTk9SV0FZCi0KLThDLTZBLUU0ICAgKGhleCkJCVZpb2dlbSBMaW1pdGVkCi04QzZBRTQgICAgIChiYXNlIDE2KQkJVmlvZ2VtIExpbWl0ZWQKLQkJCQlQYWRkb2NrIEhvdXNlCi0JCQkJUmVjdG9yeSBMYW5lCi0JCQkJT3JsaW5nYnVyeSBOb3J0aGFtcHRvbnNoaXJlIE5OMTQxSkgKLQkJCQlVTklURUQgS0lOR0RPTQotCi04Qy03MC01QSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLThDNzA1QSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLThDLTcxLUY4ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotOEM3MUY4ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi04Qy03My02RSAgIChoZXgpCQlGdWppdHN1IExpbWl0ZWQKLThDNzM2RSAgICAgKGJhc2UgMTYpCQlGdWppdHN1IExpbWl0ZWQKLQkJCQlNdXNhc2hpLWtvc3VnaSBUb3dlciBQbGFjZSBCbGRnLiwKLQkJCQk0MDMsIEtvc3VnaS1jaG8gMS1jaG9tZSxOYWthaGFyYS1rdQotCQkJCUthd2FzYWtpIEthbmFnYXdhIDIxMS0wMDYzCi0JCQkJSkFQQU4KLQotOEMtNzctMTIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi04Qzc3MTIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLThDLTdCLTlEICAgKGhleCkJCUFwcGxlLCBJbmMuCi04QzdCOUQgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLThDLTdDLUI1ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLThDN0NCNSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMyAKLQkJCQlDSElOQQotCi04Qy03Qy1GRiAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLThDN0NGRiAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLQkJCQkxMzAgSG9sZ2VyIFdheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi04Qy03RS1CMyAgIChoZXgpCQlMeXRybywgSW5jLgotOEM3RUIzICAgICAoYmFzZSAxNikJCUx5dHJvLCBJbmMuCi0JCQkJMTMwMCAgVGVycmEgQmVsbGEgQXZlbnVlCi0JCQkJTW91bnRhaW4gVmlldyBDYWxpZm9ybmlhIDk0MDQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04Qy04Mi1BOCAgIChoZXgpCQlJbnNpZ21hIFRlY2hub2xvZ3kgQ28uLEx0ZAotOEM4MkE4ICAgICAoYmFzZSAxNikJCUluc2lnbWEgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJTm8uMjI2IFRpYW5tdXNoYW4gUm9hZCwgCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDAwCi0JCQkJQ0hJTkEKLQotOEMtODQtMDEgICAoaGV4KQkJUFJJVkFURQotOEM4NDAxICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi04Qy04OS1BNSAgIChoZXgpCQlNaWNyby1TdGFyIElOVCdMIENPLiwgTFRECi04Qzg5QTUgICAgIChiYXNlIDE2KQkJTWljcm8tU3RhciBJTlQnTCBDTy4sIExURAotCQkJCU5vLjY5LCBMaWRlIHN0LgotCQkJCUpob25naGUgQ2l0eQotCQkJCVRhaXBlaSBDb3VudHkgIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOEMtOEEtNkUgICAoaGV4KQkJRVNUVU4gQVVUT01BVElPTiBURUNITk9MT1kgQ08uLCBMVEQKLThDOEE2RSAgICAgKGJhc2UgMTYpCQlFU1RVTiBBVVRPTUFUSU9OIFRFQ0hOT0xPWSBDTy4sIExURAotCQkJCTE2LFNodWlnZSBSb2FkCi0JCQkJSmlhbmduaW5nIERldmVsb3BtZW50IFpvbmUKLQkJCQlOYW5qaW5nIEppYW5nc3UgMjExMTA2Ci0JCQkJQ0hJTkEKLQotOEMtOEUtNzYgICAoaGV4KQkJdGFza2l0IEdtYkgKLThDOEU3NiAgICAgKGJhc2UgMTYpCQl0YXNraXQgR21iSAotCQkJCUdyb98tQmVybGluZXIgRGFtbSAzNwotCQkJCUJlcmxpbiAgMTI0ODcKLQkJCQlHRVJNQU5ZCi0KLThDLTkwLUQzICAgKGhleCkJCUFsY2F0ZWwgTHVjZW50Ci04QzkwRDMgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQKLQkJCQk2MDAgTWFyY2ggRHJpdmUKLQkJCQlPdHRhd2EgT04gSzJLIDJFNgotCQkJCUNBTkFEQQotCi04Qy05Mi0zNiAgIChoZXgpCQlBdXMuTGlueCBUZWNobm9sb2d5IENvLiwgTHRkLgotOEM5MjM2ICAgICAoYmFzZSAxNikJCUF1cy5MaW54IFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJM0YsIE5vLiA3LCBMYW5lIDQ1LCBQYW8tSHNpbiBSZC4sCi0JCQkJSHNpbi1UZWluIFRhaXBlaSBjb3VudHJ5LCAgMjMxNDUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLThDLTk0LUNGICAgKGhleCkJCUVuY2VsbCBUZWNobm9sb2d5LCBJbmMuCi04Qzk0Q0YgICAgIChiYXNlIDE2KQkJRW5jZWxsIFRlY2hub2xvZ3ksIEluYy4KLQkJCQkxNDEyIFNhY2hlbSBQbGFjZSwgU3VpdGUgMjA0Ci0JCQkJQ2hhcmxvdHRlc3ZpbGxlIFZBIDIyOTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi04Qy1BMC00OCAgIChoZXgpCQlCZWlqaW5nIE5lVG9wQ2hpcCBUZWNobm9sb2d5IENvLixMVEQKLThDQTA0OCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIE5lVG9wQ2hpcCBUZWNobm9sb2d5IENvLixMVEQKLQkJCQkzMDksSW50ZXJncmF0aW9uIEJ1aWxkaW5nIE9seW1waWMgQ2VudGVyLCBOby4xIEFuIERpbmcgUm9hZCxDaGFvIFlhbmcgRGlzdHJpY3QsLCAKLQkJCQlCZWlqaW5nICAxMDAwMjkKLQkJCQlDSElOQQotCi04Qy1BOS04MiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLThDQTk4MiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLThDLUI2LTRGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLThDQjY0RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLThDLUI4LTJDICAgKGhleCkJCUlQaXRvbXkgQ29tbXVuaWNhdGlvbnMKLThDQjgyQyAgICAgKGJhc2UgMTYpCQlJUGl0b215IENvbW11bmljYXRpb25zCi0JCQkJMTk0MCBOb3J0aGdhdGUgQm91bGV2YXJkCi0JCQkJU3VpdGUgQi0xCi0JCQkJU2FyYXNvdGEgRmxvcmlkYSAzNDIzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotOEMtQjgtNjQgICAoaGV4KQkJQWNTaVAgVGVjaG5vbG9neSBDb3JwLgotOENCODY0ICAgICAoYmFzZSAxNikJCUFjU2lQIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkzRi4sIE5vLjIyLCBEYWxpbiBSZC4sIAotCQkJCVRhb3l1YW4gQ2l0eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04Qy1DMS0yMSAgIChoZXgpCQlQYW5hc29uaWMgQVZDIE5ldHdvcmtzIENvbXBhbnkKLThDQzEyMSAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgQVZDIE5ldHdvcmtzIENvbXBhbnkKLQkJCQkxLTE1IE1hdHN1by1jaG8KLQkJCQlLYWRvbWEgQ2l0eSBPc2FrYSA1NzEtODUwNAotCQkJCUpBUEFOCi0KLThDLUM3LUFBICAgKGhleCkJCVJhZGluZXQgQ29tbXVuaWNhdGlvbnMgSW5jLgotOENDN0FBICAgICAoYmFzZSAxNikJCVJhZGluZXQgQ29tbXVuaWNhdGlvbnMgSW5jLgotCQkJCTdGLTIsIE5vLjIyOSwgRnV4aW5nIDJuZCBSZCwgWmh1YmVpLCAzMDI3MQotCQkJCUhzaW5jaHUgVGFpd2FuIDMwMjcxCi0JCQkJVEFJV0FOLCBQUk9WSU5DRSBPRiBDSElOQQotCi04Qy1DOC1DRCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi04Q0M4Q0QgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIExURAotCQkJCTQxNiwgTWFldGFuIDMtZG9uZywgWWVvbmd0b25nLWd1Ci0JCQkJU3V3b24gR3llb25nZ2ktZG8gNDQzNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLThDLUNGLTVDICAgKGhleCkJCUJFRkVHQSBHbWJICi04Q0NGNUMgICAgIChiYXNlIDE2KQkJQkVGRUdBIEdtYkgKLQkJCQlSZWljaGVuYmFjaGVyIFN0ci4gMjIKLQkJCQlTY2h3YWJhY2ggQmF2YXJpYSA5MTEyNgotCQkJCUdFUk1BTlkKLQotOEMtRDEtN0IgICAoaGV4KQkJQ0cgTW9iaWxlCi04Q0QxN0IgICAgIChiYXNlIDE2KQkJQ0cgTW9iaWxlCi0JCQkJM0YgQ2FvaGVqaW5nIFNvZnR3YXJlIEJ1aWxkaW5nLCBOby40NjEgSG9uZ2NhbyBSZC4sWHVIdWkgRGlzdHJpY3QKLQkJCQlTaGFuZ2hhaSAgMjAwMjMzCi0JCQkJQ0hJTkEKLQotOEMtRDMtQTIgICAoaGV4KQkJVmlzU2ltIEFTCi04Q0QzQTIgICAgIChiYXNlIDE2KQkJVmlzU2ltIEFTCi0JCQkJVm9sbHZlaWVuIDUKLQkJCQlIb3J0ZW4gVmVzdGZvbGQgMzE4MwotCQkJCU5PUldBWQotCi04Qy1ENi0yOCAgIChoZXgpCQlJa29yIE1ldGVyaW5nCi04Q0Q2MjggICAgIChiYXNlIDE2KQkJSWtvciBNZXRlcmluZwotCQkJCUZyYW5jaXNjbyBHcmFuZG1vbnRhZ25lIDQKLQkJCQlTYW4gU2ViYXN0aWFuIEd1aXB1emNvYSAyMDAwOAotCQkJCVNQQUlOCi0KLThDLURCLTI1ICAgKGhleCkJCUVTRyBTb2x1dGlvbnMKLThDREIyNSAgICAgKGJhc2UgMTYpCQlFU0cgU29sdXRpb25zCi0JCQkJMjAgSHlwZXJpb24gQ291cnQKLQkJCQlLaW5nc3RvbiBPbnRhcmlvIEs3SyA3SzIKLQkJCQlDQU5BREEKLQotOEMtREQtOEQgICAoaGV4KQkJV2lmbHktQ2l0eSBTeXN0ZW0gSW5jLgotOENERDhEICAgICAoYmFzZSAxNikJCVdpZmx5LUNpdHkgU3lzdGVtIEluYy4KLQkJCQk0Ri4sLTEsTk8gMTA2LFJVRUlHVUFORyBSZC5OZWlodSBEaXN0cmljdCwKLQkJCQlUYWlwZWkgQ2l0eSAgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOEMtREUtNTIgICAoaGV4KQkJSVNTQyBUZWNobm9sb2dpZXMgQ29ycC4KLThDREU1MiAgICAgKGJhc2UgMTYpCQlJU1NDIFRlY2hub2xvZ2llcyBDb3JwLgotCQkJCTRGLCBOby44LCBEdXNpbmcgUmQuLAotCQkJCUhzaW5jaHUgU2NpZW5jZSBQYXJrLAotCQkJCUhzaW5jaHUgQ2l0eSAgIDMwMDc4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi04Qy1FNy00OCAgIChoZXgpCQlQUklWQVRFCi04Q0U3NDggICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLThDLUU3LUIzICAgKGhleCkJCVNvbmFyZHluZSBJbnRlcm5hdGlvbmFsIEx0ZAotOENFN0IzICAgICAoYmFzZSAxNikJCVNvbmFyZHluZSBJbnRlcm5hdGlvbmFsIEx0ZAotCQkJCUJsYWNrYnVzaGUgQnVzaW5lc3MgUGFyawotCQkJCVlhdGVsZXkgSGFtcHNoaXJlIEdVNDYgNkdECi0JCQkJVU5JVEVEIEtJTkdET00KLQotOEMtRjktQzkgICAoaGV4KQkJTUVTQURBIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLThDRjlDOSAgICAgKGJhc2UgMTYpCQlNRVNBREEgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCVRvbmdGbmcgSW5mb3JtYXRpb24gSGFyYm9yLE5vLjExIExhbmdTaGFuIFJvYWQsSEktdGVjaCBQYXJrLE5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLThDLUZBLUJBICAgKGhleCkJCUFwcGxlIEluYwotOENGQUJBICAgICAoYmFzZSAxNikJCUFwcGxlIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLTAwLTRFICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLTkwMDA0RSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJIE5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLTkwLTAxLTNCICAgKGhleCkJCVNBR0VNQ09NCi05MDAxM0IgICAgIChiYXNlIDE2KQkJU0FHRU1DT00KLQkJCQkyNTAgcm91dGUgZGUgbCdFbXBlcmV1cgotCQkJCVJVRUlMIE1BTE1BSVNPTiAgOTI4NDgKLQkJCQlGUkFOQ0UKLQotOTAtMDItQTkgICAoaGV4KQkJWkhFSklBTkcgREFIVUEgVEVDSE5PTE9HWSBDTy4sTFRECi05MDAyQTkgICAgIChiYXNlIDE2KQkJWkhFSklBTkcgREFIVUEgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJTk8uMTE5OSBCaW5BbiBSb2FkCi0JCQkJQmluamlhbmcgRGlzdHJpY3QKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwNTMKLQkJCQlDSElOQQotCi05MC0wMy1CNyAgIChoZXgpCQlQQVJST1QKLTkwMDNCNyAgICAgKGJhc2UgMTYpCQlQQVJST1QKLQkJCQkxNzQgcXVhaSBkZSBqZW1tYXBlcwotCQkJCVBBUklTICA3NTEwCi0JCQkJRlJBTkNFCi0KLTkwLTA5LTE3ICAgKGhleCkJCUZhci1zaWdodGVkIG1vYmlsZQotOTAwOTE3ICAgICAoYmFzZSAxNikJCUZhci1zaWdodGVkIG1vYmlsZQotCQkJCVRlY2hub2xvZ3kgUGFyayBEZXNheSBCdWlsZGluZyA2dGgtRmxvb3IKLQkJCQlOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIFByb3ZpbmNlICA1MTgwMDAKLQkJCQlDSElOQQotCi05MC0wQS0zQSAgIChoZXgpCQlQU0cgUGxhc3RpYyBTZXJ2aWNlIEdtYkgKLTkwMEEzQSAgICAgKGJhc2UgMTYpCQlQU0cgUGxhc3RpYyBTZXJ2aWNlIEdtYkgKLQkJCQlQaW5hZXIgU3RyLiAxMi0xNgotCQkJCU1hbm5oZWltIEJXIDY4MzA5Ci0JCQkJR0VSTUFOWQotCi05MC0wRC02NiAgIChoZXgpCQlEaWdpbW9yZSBFbGVjdHJvbmljcyBDby4sIEx0ZAotOTAwRDY2ICAgICAoYmFzZSAxNikJCURpZ2ltb3JlIEVsZWN0cm9uaWNzIENvLiwgTHRkCi0JCQkJMTAgRkwuLCBOby4gNjEsIFlhbi1QaW5nIFNvdXRoIFJvYWQKLQkJCQlUYWlwZWkgIDEwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTAtMTgtNUUgICAoaGV4KQkJQXBleCBUb29sIEdyb3VwIEdtYkggJiBDbyBPSEcKLTkwMTg1RSAgICAgKGJhc2UgMTYpCQlBcGV4IFRvb2wgR3JvdXAgR21iSCAmIENvIE9IRwotCQkJCUluZHVzdHJpZXN0cmFzc2UgMQotCQkJCVdlc3RoYXVzZW4gIDczNDYzCi0JCQkJR0VSTUFOWQotCi05MC0xOC1BRSAgIChoZXgpCQlTaGFuZ2hhaSBNZXJpZGlhbiBUZWNobm9sb2dpZXMsIENvLiBMdGQuCi05MDE4QUUgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgTWVyaWRpYW4gVGVjaG5vbG9naWVzLCBDby4gTHRkLgotCQkJCVN1aXRlIDZBIFRvbmdzaGVuZyBUb3dlcgotCQkJCSM0NTggRnVzaGFuIFJvYWQKLQkJCQlQdWRvbmcgc2hhbmdoYWkgMjAwMTIyCi0JCQkJQ0hJTkEKLQotOTAtMTktMDAgICAoaGV4KQkJU0NTIFNBCi05MDE5MDAgICAgIChiYXNlIDE2KQkJU0NTIFNBCi0JCQkJVmlhIFBpbmksIDMyCi0JCQkJQmlhc2NhICA2NzEwCi0JCQkJU1dJVFpFUkxBTkQKLQotOTAtMUItMEUgICAoaGV4KQkJRnVqaXRzdSBUZWNobm9sb2d5IFNvbHV0aW9ucyBHbWJICi05MDFCMEUgICAgIChiYXNlIDE2KQkJRnVqaXRzdSBUZWNobm9sb2d5IFNvbHV0aW9ucyBHbWJICi0JCQkJQnVlcmdlcm1laXN0ZXItVWxyaWNoLVN0cmFzc2UgMTAwCi0JCQkJQXVnc2J1cmcgQmF5ZXJuIDg2MTk5Ci0JCQkJR0VSTUFOWQotCi05MC0yMS01NSAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLTkwMjE1NSAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4yMyBYaW5naHVhIFJvYWQKLQkJCQlUYW95dWFuIENpdHkKLQkJCQlUYW95dWFuIENvdW50eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC0yNy1FNCAgIChoZXgpCQlBcHBsZSwgSW5jLgotOTAyN0U0ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENhbGlmb3JuaWEgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLTJCLTM0ICAgKGhleCkJCUdJR0EtQllURSBURUNITk9MT0dZIENPLixMVEQuCi05MDJCMzQgICAgIChiYXNlIDE2KQkJR0lHQS1CWVRFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQlQaW4tSmVuIENpdHksIAotCQkJCVBpbi1KZW4gVGFveXVhbiAzMjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTkwLTJFLTg3ICAgKGhleCkJCUxhYkphY2sKLTkwMkU4NyAgICAgKGJhc2UgMTYpCQlMYWJKYWNrCi0JCQkJMzIzMiBTIFZhbmNlIFN0IFNURSAxMDAKLQkJCQlMYWtld29vZCBDTyA4MDIyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtMzQtMkIgICAoaGV4KQkJR2F0ZWtlZXBlciBTeXN0ZW1zLCBJbmMuCi05MDM0MkIgICAgIChiYXNlIDE2KQkJR2F0ZWtlZXBlciBTeXN0ZW1zLCBJbmMuCi0JCQkJOCBTdHVkZWJha2VyCi0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC0zNC1GQyAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi05MDM0RkMgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotOTAtM0EtQTAgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLTkwM0FBMCAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTYwMCBNYXJjaCBSb2FkCi0JCQkJS2FuYXRhIE9udGFyaW8gSzJLIDJFNgotCQkJCUNBTkFEQQotCi05MC0zQy1BRSAgIChoZXgpCQlZdW5uYW4gS1NFQyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLTkwM0NBRSAgICAgKGJhc2UgMTYpCQlZdW5uYW4gS1NFQyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQkzRixOTy4xNzYgS2V5aSBST0FELEhpZ2ggYW5kIE5ldyBUZWNobm9sb2dpY2FsIEluZHVzdHJpYWwgRGV2ZWxvcG1lbnQgWm9uZQotCQkJCUt1bm1pbmcgWXVubmFuIDY1MDEwNgotCQkJCUNISU5BCi0KLTkwLTNELTVBICAgKGhleCkJCVNoZW56aGVuIFdpc2lvbiBUZWNobm9sb2d5IEhvbGRpbmcgTGltaXRlZAotOTAzRDVBICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFdpc2lvbiBUZWNobm9sb2d5IEhvbGRpbmcgTGltaXRlZAotCQkJCVJvb20gMjZBLCBKaW5ydW4gQnVpbGRpbmcsIE4wLjYwMTksIFNoZW5uYW4gUmQuLCBGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotOTAtM0QtNkIgICAoaGV4KQkJWmljb24gVGVjaG5vbG9neSBDb3JwLgotOTAzRDZCICAgICAoYmFzZSAxNikJCVppY29uIFRlY2hub2xvZ3kgQ29ycC4KLQkJCQkxNUYuLCBOby42ODgtMiwgWmhvbmd6aGVuZyBSZC4sIFpob25naGUgQ2l0eSwgVGFpcGVpIENvdW50eSAyMzUKLQkJCQlUYWlwZWkgIDIzNTg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05MC00Ny0xNiAgIChoZXgpCQlST1JaRSBDT1JQT1JBVElPTgotOTA0NzE2ICAgICAoYmFzZSAxNikJCVJPUlpFIENPUlBPUkFUSU9OCi0JCQkJMTU4OC0yIE1pY2hpbm91ZSwgS2FubmFiZS1jaG8KLQkJCQlGdWt1eWFtYSBIaXJvc2hpbWEgNzIwLTIxMDQKLQkJCQlKQVBBTgotCi05MC00Qy1FNSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi05MDRDRTUgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMKLQkJCQlDSElOQQotCi05MC01MC03QiAgIChoZXgpCQlBZHZhbmNlZCBQQU5NT0JJTCBTeXN0ZW1zIEdtYkggJiBDby4gS0cKLTkwNTA3QiAgICAgKGJhc2UgMTYpCQlBZHZhbmNlZCBQQU5NT0JJTCBTeXN0ZW1zIEdtYkggJiBDby4gS0cKLQkJCQlIYW5zZXN0cmHfZSA5MQotCQkJCUNvbG9nbmUgTlJXIDUxMTQ5Ci0JCQkJR0VSTUFOWQotCi05MC01MS0zRiAgIChoZXgpCQlFbGV0dHJvbmljYSBTYW50ZXJubwotOTA1MTNGICAgICAoYmFzZSAxNikJCUVsZXR0cm9uaWNhIFNhbnRlcm5vCi0JCQkJUy5TLiBTZWxpY2UsIDQ3Ci0JCQkJSW1vbGEgQm9sb2duYSA0MDAyNgotCQkJCUlUQUxZCi0KLTkwLTU0LTQ2ICAgKGhleCkJCVRFUyBFTEVDVFJPTklDIFNPTFVUSU9OUwotOTA1NDQ2ICAgICAoYmFzZSAxNikJCVRFUyBFTEVDVFJPTklDIFNPTFVUSU9OUwotCQkJCUltbWV1YmxlIE9keXNzZWUKLQkJCQlaQUMgZGUgQmxvc3NhYwotCQkJCUJSVVogIDM1MTcwCi0JCQkJRlJBTkNFCi0KLTkwLTU1LUFFICAgKGhleCkJCUVyaWNzc29uLCBFQUIvUldJL0sKLTkwNTVBRSAgICAgKGJhc2UgMTYpCQlFcmljc3NvbiwgRUFCL1JXSS9LCi0JCQkJU2tvbGfDpW5nZW4gMTcKLQkJCQlHw6R2bGUgIFNFLTgwMCAwNgotCQkJCVNXRURFTgotCi05MC01Ni04MiAgIChoZXgpCQlMZW5icm9vayBJbmR1c3RyaWVzIExpbWl0ZWQKLTkwNTY4MiAgICAgKGJhc2UgMTYpCQlMZW5icm9vayBJbmR1c3RyaWVzIExpbWl0ZWQKLQkJCQk2MzMgR3Jhbml0ZSBDb3VydAotCQkJCVBpY2tlcmluZyBPbnRhcmlvIEwxVyAzSzEKLQkJCQlDQU5BREEKLQotOTAtNUYtOEQgICAoaGV4KQkJbW9kYXMgR21iSAotOTA1RjhEICAgICAoYmFzZSAxNikJCW1vZGFzIEdtYkgKLQkJCQlCZWx6aWdlciBTdHIuIDY5LTcxCi0JCQkJQmVybGluICAxMDgyMwotCQkJCUdFUk1BTlkKLQotOTAtNjEtMEMgICAoaGV4KQkJRmlkYSBJbnRlcm5hdGlvbmFsIChTKSBQdGUgTHRkCi05MDYxMEMgICAgIChiYXNlIDE2KQkJRmlkYSBJbnRlcm5hdGlvbmFsIChTKSBQdGUgTHRkCi0JCQkJQmxrIDE2LCBLYWxsYW5nIFBsYWNlIAotCQkJCSMwNi0wMiwgCi0JCQkJMzM5MTU2Ci0JCQkJU0lOR0FQT1JFCi0KLTkwLTY3LUI1ICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50Ci05MDY3QjUgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQKLQkJCQk2MDAtNzAwIE1vdW50YWluIEF2ZS4KLQkJCQkzQS0yMzBDCi0JCQkJTXVycmF5IEhpaWxsIE5KIDA3OTc0LTA2MzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLTY3LUYzICAgKGhleCkJCUFsY2F0ZWwgTHVjZW50Ci05MDY3RjMgICAgIChiYXNlIDE2KQkJQWxjYXRlbCBMdWNlbnQKLQkJCQlWaWEgdHJlbnRvLCAzMAotCQkJCVZpbWVyY2F0ZSBNQiAyMDA1OQotCQkJCUlUQUxZCi0KLTkwLTZELUM4ICAgKGhleCkJCURMRyBBdXRvbWHDp8OjbyBJbmR1c3RyaWFsIEx0ZGEKLTkwNkRDOCAgICAgKGJhc2UgMTYpCQlETEcgQXV0b21hw6fDo28gSW5kdXN0cmlhbCBMdGRhCi0JCQkJUnVhIEpvc8OpIEJhdGlzdGEgU29hcmVzLCA1MwotCQkJCURpc3RyaXRvIEluZHVzdHJpYWwKLQkJCQlTZXJ0w6NvemluaG8gU8OjbyBQYXVsbyAxNDE3Ni0xMTkKLQkJCQlCUkFaSUwKLQotOTAtNkUtQkIgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotOTA2RUJCICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotOTAtNzAtMjUgICAoaGV4KQkJR2FyZWEgTWljcm9zeXMgQ28uLEx0ZC4KLTkwNzAyNSAgICAgKGJhc2UgMTYpCQlHYXJlYSBNaWNyb3N5cyBDby4sTHRkLgotCQkJCTR0aCBGbG9vciwgQnVpbGRpbmcgMiwgU29mdHdhcmUgUGFyawotCQkJCTIgS2VsaW5nIFJvYWQsIE5ldyBkaXN0cmljdCwgCi0JCQkJU3V6aG91IEppYW5nc3UgMjE1MTYzCi0JCQkJQ0hJTkEKLQotOTAtN0YtNjEgICAoaGV4KQkJQ2hpY29ueSBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLTkwN0Y2MSAgICAgKGJhc2UgMTYpCQlDaGljb255IEVsZWN0cm9uaWNzIENvLiwgTHRkLgotCQkJCU5vLjI1LCBXdS1Hb25nIDZ0aCBSZC4sIFd1IEt1IEluZHVzdHJpYWwgUGFyaywgCi0JCQkJVGFpcGVpIEhzaWVuLCAgIDI0OAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTAtODQtMEQgICAoaGV4KQkJQXBwbGUsIEluYwotOTA4NDBEICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLTg4LUEyICAgKGhleCkJCUlPTklDUyBURUNITk9MT0dZIE1FIExUREEKLTkwODhBMiAgICAgKGJhc2UgMTYpCQlJT05JQ1MgVEVDSE5PTE9HWSBNRSBMVERBCi0JCQkJUlVBIERFUC4gQU5UT05JTyBFRFUgVklFSVJBCi0JCQkJRkxPUklBTiBQT0xJUyBTQU5UQSBDQVRBUklOQSA4ODA0MDAwMAotCQkJCUJSQVpJTAotCi05MC04RC0xRCAgIChoZXgpCQlHSCBUZWNobm9sb2dpZXMKLTkwOEQxRCAgICAgKGJhc2UgMTYpCQlHSCBUZWNobm9sb2dpZXMKLQkJCQk1MDIyIEJpbmhlIFJvYWQsIEJsb2NrIEIsIFVuaXRlZCBQbGF6YQotCQkJCVNoZW56aGVuICA1MTgwMjYKLQkJCQlDSElOQQotCi05MC04Ri1DRiAgIChoZXgpCQlVTk8gU3lzdGVtIENvLiwgTHRkCi05MDhGQ0YgICAgIChiYXNlIDE2KQkJVU5PIFN5c3RlbSBDby4sIEx0ZAotCQkJCSM0MDIgS29sb24gU2NpZW5jZSBWYWxsZXkgpbAuLCAxODctMTAsIEd1cm8tZG9uZywgR3Vyby1ndQotCQkJCVNlb3VsICAxNTItODQ4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTkwLTkwLTNDICAgKGhleCkJCVRSSVNPTiBURUNITk9MT0dZIENPUlBPUkFUSU9OCi05MDkwM0MgICAgIChiYXNlIDE2KQkJVFJJU09OIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04KLQkJCQlOby4zLCBLdW5nLVllaCAxMnRoIFJkLiwgUGluZy1KZW4gSW5kdXN0cmlhbCBQYXJrLAotCQkJCVBpbmctSmVuIENpdHksICBUYW9ZdWFuIENvdW50eSAzMjQ1OQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTAtOTAtNjAgICAoaGV4KQkJUlNJIFZJREVPIFRFQ0hOT0xPR0lFUwotOTA5MDYwICAgICAoYmFzZSAxNikJCVJTSSBWSURFTyBURUNITk9MT0dJRVMKLQkJCQk1NiwgUnVlIEplYW4tR2lyYXVkb3V4IC0gQkFUIDYwCi0JCQkJUGFyYyBkJiMzOTthY3Rpdml06SBkZXMgRm9yZ2VzCi0JCQkJU1RSQVNCT1VSRyBCYXMtUmhpbiA2NzIwMAotCQkJCUZSQU5DRQotCi05MC05Mi1CNCAgIChoZXgpCQlEaWVobCBCR1QgRGVmZW5jZSBHbWJIICYgQ28uIEtHCi05MDkyQjQgICAgIChiYXNlIDE2KQkJRGllaGwgQkdUIERlZmVuY2UgR21iSCAmIENvLiBLRwotCQkJCUFsdGUgTnVzc2RvcmZlciBTdHJhc3NlIDEzCi0JCQkJRS1FRQotCQkJCVVlYmVybGluZ2VuICA4ODY2MgotCQkJCUdFUk1BTlkKLQotOTAtOTQtRTQgICAoaGV4KQkJRC1MaW5rIEludGVybmF0aW9uYWwKLTkwOTRFNCAgICAgKGJhc2UgMTYpCQlELUxpbmsgSW50ZXJuYXRpb25hbAotCQkJCTEgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBQYXJrLCAjMDMtMTIsIFRoZSBTeW5lcmd5IFNpbmdhcG9yZSA2MDk5MTcKLQkJCQlTaW5nYXBvcmUgU2luZ2Fwb3JlIDYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi05MC1BMi1EQSAgIChoZXgpCQlHSEVPIFNBCi05MEEyREEgICAgIChiYXNlIDE2KQkJR0hFTyBTQQotCQkJCVZpYSBTb2xkaW5pLCAyMgotCQkJCUNoaWFzc28gIENILTY4MzAKLQkJCQlTV0lUWkVSTEFORAotCi05MC1BNC1ERSAgIChoZXgpCQlXaXN0cm9uIE5ld2ViIENvcnAuCi05MEE0REUgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBOZXdlYiBDb3JwLgotCQkJCTIwIFBhcmsgQXZlbnVlIElJLCBIc2luY2h1IFNjaWVuY2UgUGFyaywgCi0JCQkJSHNpbmNodSAgIDMwOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTAtQTctODMgICAoaGV4KQkJSlNXIFBBQ0lGSUMgQ09SUE9SQVRJT04gCi05MEE3ODMgICAgIChiYXNlIDE2KQkJSlNXIFBBQ0lGSUMgQ09SUE9SQVRJT04gCi0JCQkJM0YtMywgTm8uNzAwLCBDaHVuZy1aaGVuZyBSZCwgWmhvbmdoZSBEaXN0cmljdAotCQkJCU5ldyBUYWlwZWkgQ2l0eSAgMjM1IAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTAtQTctQzEgICAoaGV4KQkJUGFrZWRnZSBEZXZpY2UgYW5kIFNvZnR3YXJlIEluYy4KLTkwQTdDMSAgICAgKGJhc2UgMTYpCQlQYWtlZGdlIERldmljZSBhbmQgU29mdHdhcmUgSW5jLgotCQkJCTEwMTEgRWR3YXJkcyBSb2FkCi0JCQkJQnVybGluZ2FtZSBDQSA5NDAxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtQUMtM0YgICAoaGV4KQkJQnJpZ2h0U2lnbiBMTEMKLTkwQUMzRiAgICAgKGJhc2UgMTYpCQlCcmlnaHRTaWduIExMQwotCQkJCTE2Nzk1IExhcmsgQXZlLgotCQkJCVN1aXRlIDIwMAotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtQjEtMzQgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLTkwQjEzNCAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUI4LUQwICAgKGhleCkJCUpveWVudCwgSW5jLgotOTBCOEQwICAgICAoYmFzZSAxNikJCUpveWVudCwgSW5jLgotCQkJCTM0NSBDYWxpZm9ybmlhIFN0cmVldCwKLQkJCQlTdWl0ZSAyMDAwCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwNAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtQjktN0QgICAoaGV4KQkJSm9obnNvbiBPdXRkb29ycyBNYXJpbmUgRWxlY3Ryb25pY3MgZC9iL2EgTWlubmtvdGEKLTkwQjk3RCAgICAgKGJhc2UgMTYpCQlKb2huc29uIE91dGRvb3JzIE1hcmluZSBFbGVjdHJvbmljcyBkL2IvYSBNaW5ua290YQotCQkJCTE1MzEgRSBNYWRpc29uIEF2ZQotCQkJCU1hbmthdG8gTU4gNTYwMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUMxLTE1ICAgKGhleCkJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi05MEMxMTUgICAgIChiYXNlIDE2KQkJU29ueSBFcmljc3NvbiBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQUIKLQkJCQlNb2JpbHbkZ2VuIDEwCi0JCQkJTHVuZCAgMjIxODEKLQkJCQlTV0VERU4KLQotOTAtQ0YtMTUgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTkwQ0YxNSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1ICA5MDIzMAotCQkJCUZJTkxBTkQKLQotOTAtQ0YtN0QgICAoaGV4KQkJUWluZ2RhbyBIaXNlbnNlIEVsZWN0cmljIENvLixMdGQuCi05MENGN0QgICAgIChiYXNlIDE2KQkJUWluZ2RhbyBIaXNlbnNlIEVsZWN0cmljIENvLixMdGQuCi0JCQkJMTEsSmlhbmd4aSBSb2FkLFFpbmdkYW8sQ2hpbmEKLQkJCQlRaW5nZGFvIFNoYW5kb25nIDI2NjA3MQotCQkJCUNISU5BCi0KLTkwLUQxLTFCICAgKGhleCkJCVBhbG9tYXIgTWVkaWNhbCBUZWNobm9sb2dpZXMKLTkwRDExQiAgICAgKGJhc2UgMTYpCQlQYWxvbWFyIE1lZGljYWwgVGVjaG5vbG9naWVzCi0JCQkJMTUgTmV0d29yayBEcml2ZQotCQkJCUJ1cmxpbmd0b24gTUEgMDE4MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTkwLUQ3LTRGICAgKGhleCkJCUJvb2tlZW4KLTkwRDc0RiAgICAgKGJhc2UgMTYpCQlCb29rZWVuCi0JCQkJMjcsIHJ1ZSBkZSBsYSBWaXN0dWxlCi0JCQkJUGFyaXMgIDc1MDEzCi0JCQkJRlJBTkNFCi0KLTkwLUQ3LUVCICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi05MEQ3RUIgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlNUyA4NzIzCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC1EOC01MiAgIChoZXgpCQlDb210ZWMgQ28uLCBMdGQuCi05MEQ4NTIgICAgIChiYXNlIDE2KQkJQ29tdGVjIENvLiwgTHRkLgotCQkJCSAzRi4sIE5vLjgxLCBKaWFua2FuZyBSZC4sCi0JCQkJWmhvbmdoZSBDaXR5IFRhaXBlaSBDb3VudHkgMjM1ODYKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTkwLUQ5LTJDICAgKGhleCkJCUhVRy1XSVRTQ0hJIEFHCi05MEQ5MkMgICAgIChiYXNlIDE2KQkJSFVHLVdJVFNDSEkgQUcKLQkJCQlBdXJpZWRzdHJhc3NlIDEwCi0JCQkJQm9lc2luZ2VuIEZyaWJvdXJnIDMxNzgKLQkJCQlTV0lUWkVSTEFORAotCi05MC1FMC1GMCAgIChoZXgpCQlJRUVFIFAxNzIyIAotOTBFMEYwICAgICAoYmFzZSAxNikJCUlFRUUgUDE3MjIgCi0JCQkJODc2MCBTYW5keSBQYXJrd2F5Ci0JCQkJU2FuZHkgVXRhaCA4NDA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtRTItQkEgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRpb24KLTkwRTJCQSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGlvbgotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotOTAtRTYtQkEgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi05MEU2QkEgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwgCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTkwLUVBLTYwICAgKGhleCkJCVNQSSBMYXNlcnMgTHRkIAotOTBFQTYwICAgICAoYmFzZSAxNikJCVNQSSBMYXNlcnMgTHRkIAotCQkJCTYgd2VsbGluZ3RvbiBQYXJrCi0JCQkJSGVkZ2UgRW5kCi0JCQkJU291dGhhbXB0b24gSGFtcHNoaXJlIFMwMzAyUVUKLQkJCQlVTklURUQgS0lOR0RPTQotCi05MC1GMi03OCAgIChoZXgpCQlSYWRpdXMgR2F0ZXdheQotOTBGMjc4ICAgICAoYmFzZSAxNikJCVJhZGl1cyBHYXRld2F5Ci0JCQkJNTIwIEUuIE1vbnRmb3JkIEF2ZQotCQkJCUFkYSBPSCA0NTgxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtRjQtQzEgICAoaGV4KQkJUmFuZCBNY05hbGx5Ci05MEY0QzEgICAgIChiYXNlIDE2KQkJUmFuZCBNY05hbGx5Ci0JCQkJOTg1NSBXb29kcyBEcml2ZQotCQkJCVNrb2tpZSBJTCA2MDA3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotOTAtRjYtNTIgICAoaGV4KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi05MEY2NTIgICAgIChiYXNlIDE2KQkJVFAtTElOSyBURUNITk9MT0dJRVMgQ08uLCBMVEQuCi0JCQkJQnVpbGRpbmcgMjQgKGZsb29ycyAxLDMsNCw1KSBhbmQgMjggKGZsb29yczEtNCkgIENlbnRyYWwgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBQYXJrLFNoZW5uYW4gUmQsIE5hbnNoYW4sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIFByb3ZpbmNlLCA1MTgwNTcKLQkJCQlDSElOQQotCi05MC1GNy0yRiAgIChoZXgpCQlQaGlsbGlwcyBNYWNoaW5lICYgV2VsZGluZyBDby4sIEluYy4gCi05MEY3MkYgICAgIChiYXNlIDE2KQkJUGhpbGxpcHMgTWFjaGluZSAmIFdlbGRpbmcgQ28uLCBJbmMuIAotCQkJCTE2MTI1IEUuIEdhbGUgQXZlLgotCQkJCUluZHVzdHJ5IENBIDkxNzQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC1GQi01QiAgIChoZXgpCQlBdmF5YSwgSW5jCi05MEZCNUIgICAgIChiYXNlIDE2KQkJQXZheWEsIEluYwotCQkJCTIxMSBNb3VudCBBaXJ5IFJvYWQgCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMC0yMzExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05MC1GQi1BNiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uTHRkCi05MEZCQTYgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLkNvLkx0ZAotCQkJCTY2LENodW5nIFNoYW4gUmQuVHUtQ2hlbmcKLQkJCQlUYWlwZWkgSHNpZW4gIDIzNgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTQtMDAtNzAgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTk0MDA3MCAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1ICA5MDIzMAotCQkJCUZJTkxBTkQKLQotOTQtMDEtNDkgICAoaGV4KQkJQXV0b0hvdEJveAotOTQwMTQ5ICAgICAoYmFzZSAxNikJCUF1dG9Ib3RCb3gKLQkJCQkxNDA5MCBTVyBGcnd5LCBTdGUuIDMwMAotCQkJCVN1Z2FyIExhbmQgVFggNzc0NzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LTBCLTJEICAgKGhleCkJCU5ldFZpZXcgVGVjaG5vbG9naWVzKFNoZW56aGVuKSBDby4sIEx0ZAotOTQwQjJEICAgICAoYmFzZSAxNikJCU5ldFZpZXcgVGVjaG5vbG9naWVzKFNoZW56aGVuKSBDby4sIEx0ZAotCQkJCVJNMjkwMixFYXN0IFRvd2VyLCBOYW5zaGFuIFNvZnR3YXJlIFBhcmsKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDUyCi0JCQkJQ0hJTkEKLQotOTQtMEMtNkQgICAoaGV4KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLTk0MEM2RCAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCUJ1aWxkaW5nIDcsIFNlY29uZCBQYXJ0LCBIb25naHVhbGluZyBJbmR1c3RyaWFsIFpvbmUKLQkJCQlYaWxpIHRvd24sIE5hbnNoYW4sCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLTk0LTExLURBICAgKGhleCkJCUlURiBGcm9zY2hsIEdtYkgKLTk0MTFEQSAgICAgKGJhc2UgMTYpCQlJVEYgRnJvc2NobCBHbWJICi0JCQkJSGF1c2VyYmFjaHN0ci4gNyAtIDEwCi0JCQkJIFdhbGRlcmJhY2ggQmF2YXJpYSA5MzE5NAotCQkJCUdFUk1BTlkKLQotOTQtMTYtNzMgICAoaGV4KQkJUG9pbnQgQ29yZSBTQVJMCi05NDE2NzMgICAgIChiYXNlIDE2KQkJUG9pbnQgQ29yZSBTQVJMCi0JCQkJMjkvMzEgUnVlIGR1IEJvaXMgR2Fsb24KLQkJCQlGT05URU5BWSBTT1VTIEJPSVMgSWxlIGRlIEZyYW5jZSA5NDEyMAotCQkJCUZSQU5DRQotCi05NC0xRC0xQyAgIChoZXgpCQlUTGFiIFdlc3QgU3lzdGVtcyBBQgotOTQxRDFDICAgICAoYmFzZSAxNikJCVRMYWIgV2VzdCBTeXN0ZW1zIEFCCi0JCQkJRWJiZSBMaWViZXJhdGhzZ2F0YW4gMjNCCi0JCQkJR290aGVuYnVyZyAgNDEyNjUKLQkJCQlTV0VERU4KLQotOTQtMjAtNTMgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTk0MjA1MyAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU5MAotCQkJCUZJTkxBTkQKLQotOTQtMjEtOTcgICAoaGV4KQkJU3RhbG1hcnQgVGVjaG5vbG9neSBMaW1pdGVkCi05NDIxOTcgICAgIChiYXNlIDE2KQkJU3RhbG1hcnQgVGVjaG5vbG9neSBMaW1pdGVkCi0JCQkJUm0xMTA2LTExMDdFLCBCdWlsZGluZyBGLCBYaWhhaW1pbmd6aHUsIE5vLjEsIFRhb3l1YW4gUm9hZAotCQkJCU5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdW5hZ2RvbmcgNTE4MDUyCi0JCQkJQ0hJTkEKLQotOTQtMjMtNkUgICAoaGV4KQkJU2hlbnpoZW4gSnVubGFuIEVsZWN0cm9uaWMgTHRkCi05NDIzNkUgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gSnVubGFuIEVsZWN0cm9uaWMgTHRkCi0JCQkJQmxvY2sgQyxOby4yIEluZHVzdHJpYWwgRGlzdHJpY3QsIEZ1eXVhbiwgVGFuZ3dlaSxGdXlvbmcsIEJhbydhbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi05NC0yRS0xNyAgIChoZXgpCQlTY2huZWlkZXIgRWxlY3RyaWMgQ2FuYWRhIEluYwotOTQyRTE3ICAgICAoYmFzZSAxNikJCVNjaG5laWRlciBFbGVjdHJpYyBDYW5hZGEgSW5jCi0JCQkJMTQwMCBpbmR1c3RyaWVsbGUgc3RyZWV0Ci0JCQkJTGEgUHJhaXJpZSBRdWViZWMgSjVSIDJFNQotCQkJCUNBTkFEQQotCi05NC0yRS02MyAgIChoZXgpCQlGaW5zw6ljdXIKLTk0MkU2MyAgICAgKGJhc2UgMTYpCQlGaW5zw6ljdXIKLQkJCQk1MiBydWUgUGF1bCBMZXNjb3AKLQkJCQlOYW50ZXJyZSAgOTIwMDAKLQkJCQlGUkFOQ0UKLQotOTQtMzEtOUIgICAoaGV4KQkJQWxwaGF0cm9uaWNzIEJWCi05NDMxOUIgICAgIChiYXNlIDE2KQkJQWxwaGF0cm9uaWNzIEJWCi0JCQkJV2F0ZXJnb29yd2VnIDcxCi0JCQkJTklKS0VSSyBHbGQgMzg2MSBNQQotCQkJCU5FVEhFUkxBTkRTCi0KLTk0LTMzLUREICAgKGhleCkJCVRhY28gRWxlY3Ryb25pYyBTb2x1dGlvbnMsIEluYy4KLTk0MzNERCAgICAgKGJhc2UgMTYpCQlUYWNvIEVsZWN0cm9uaWMgU29sdXRpb25zLCBJbmMuCi0JCQkJMTE2MCBDcmFuc3RvbiBTdHJlZXQKLQkJCQlDcmFuc3RvbiBSSSAwMjkyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTQtMzktRTUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLTk0MzlFNSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMgCi0JCQkJQ0hJTkEKLQotOTQtM0EtRjAgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLTk0M0FGMCAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1IE91IDkwMjMwCi0JCQkJRklOTEFORAotCi05NC00NC00NCAgIChoZXgpCQlMRyBJbm5vdGVrCi05NDQ0NDQgICAgIChiYXNlIDE2KQkJTEcgSW5ub3RlawotCQkJCUphbmdkdWstZG9uZywgR3dhbmdzYW4tZ3UKLQkJCQlHd2FuZy1qdSAgNTA2LTczMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05NC00NC01MiAgIChoZXgpCQlCZWxraW4gSW50ZXJuYXRpb25hbCwgSW5jLgotOTQ0NDUyICAgICAoYmFzZSAxNikJCUJlbGtpbiBJbnRlcm5hdGlvbmFsLCBJbmMuCi0JCQkJNTAxIFcuIFdhbG51dCBTdC4KLQkJCQlDb21wdG9uIENBIDkwMjIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05NC00Ni05NiAgIChoZXgpCQlCYXVkVGVjIENvcnBvcmF0aW9uCi05NDQ2OTYgICAgIChiYXNlIDE2KQkJQmF1ZFRlYyBDb3Jwb3JhdGlvbgotCQkJCTEyRiwgTm8uMTgxLCBTZWMuMS5UYXR1bmcgUmQuCi0JCQkJSHNpLWNoaWggVGFpcGVpIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTQtNEEtMDkgICAoaGV4KQkJQml0V2lzZSBDb250cm9scwotOTQ0QTA5ICAgICAoYmFzZSAxNikJCUJpdFdpc2UgQ29udHJvbHMKLQkJCQk5OCBJbnZlcm5lc3MgRHIgRWFzdAotCQkJCUVuZ2xld29vZCBDTyA4MDExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotOTQtNTEtMDMgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotOTQ1MTAzICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOTQtNTktMkQgICAoaGV4KQkJRUtFIEJ1aWxkaW5nIFRlY2hub2xvZ3kgU3lzdGVtcyBMdGQKLTk0NTkyRCAgICAgKGJhc2UgMTYpCQlFS0UgQnVpbGRpbmcgVGVjaG5vbG9neSBTeXN0ZW1zIEx0ZAotCQkJCVBpaXNwYW5wb3J0dGkgNwotCQkJCUVzcG9vIC0gMDIyNDAKLQkJCQlGSU5MQU5ECi0KLTk0LTVCLTdFICAgKGhleCkJCVRSSUxPQklUIExUREEuCi05NDVCN0UgICAgIChiYXNlIDE2KQkJVFJJTE9CSVQgTFREQS4KLQkJCQlSLiBBTFZBUkVOR0EgMTM3NwotCQkJCUJVVEFOVEEKLQkJCQlTQU8gUEFVTE8gIDA1NTA5MDAyCi0JCQkJQlJBWklMCi0KLTk0LTYxLTI0ICAgKGhleCkJCVBhc29uIFN5c3RlbXMKLTk0NjEyNCAgICAgKGJhc2UgMTYpCQlQYXNvbiBTeXN0ZW1zCi0JCQkJNjEzMCAtIDNyZCBTdHJlZXQgUy5FLgotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMkgxSzQKLQkJCQlDQU5BREEKLQotOTQtNjMtRDEgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi05NDYzRDEgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTk0LTcxLUFDICAgKGhleCkJCVRDVCBNb2JpbGUgTGltaXRlZAotOTQ3MUFDICAgICAoYmFzZSAxNikJCVRDVCBNb2JpbGUgTGltaXRlZAotCQkJCTVGLCBFIGJ1aWxkaW5nLCBOby4gMjMyLCBMaWFuZyBKaW5nIFJvYWQgWmhhbmdKaWFuZyBIaWdoLVRlY2ggUGFyaywgUHVkb25nIEFyZWEKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotOTQtODEtQTQgICAoaGV4KQkJQXp1cmF5IFRlY2hub2xvZ2llcwotOTQ4MUE0ICAgICAoYmFzZSAxNikJCUF6dXJheSBUZWNobm9sb2dpZXMKLQkJCQk3NDcwIFNXIEJyaWRnZXBvcnQgUmQKLQkJCQlEdXJoYW0gT1IgOTcyMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LTg1LTdBICAgKGhleCkJCUV2YW50YWdlIEluZHVzdHJpZXMgQ29ycAotOTQ4NTdBICAgICAoYmFzZSAxNikJCUV2YW50YWdlIEluZHVzdHJpZXMgQ29ycAotCQkJCTgxNSBCcmlkZ2UgU3QuIFcuCi0JCQkJV2F0ZXJsb28gT250YXJpbyBOMlYgMk03Ci0JCQkJQ0FOQURBCi0KLTk0LTg4LTU0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi05NDg4NTQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LThCLTAzICAgKGhleCkJCUVBR0VUIElubm92YXRpb24gYW5kIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi05NDhCMDMgICAgIChiYXNlIDE2KQkJRUFHRVQgSW5ub3ZhdGlvbiBhbmQgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkzL0YsIEJ1aWxkaW5nIDQsIExpYW5jaHVhbmcgVGVjaG5vbG9neSBQYXJrLEJ1amkgVG93biwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTEyCi0JCQkJQ0hJTkEKLQotOTQtOEQtNTAgICAoaGV4KQkJQmVhbWV4IE95IEFiCi05NDhENTAgICAgIChiYXNlIDE2KQkJQmVhbWV4IE95IEFiCi0JCQkJUmlzdGlzdW9ucmFpdHRpIDEwCi0JCQkJUGlldGFyc2FhcmkgIEZJLTY4NjAwCi0JCQkJRklOTEFORAotCi05NC04Ri1FRSAgIChoZXgpCQlIdWdoZXMgVGVsZW1hdGljcywgSW5jLgotOTQ4RkVFICAgICAoYmFzZSAxNikJCUh1Z2hlcyBUZWxlbWF0aWNzLCBJbmMuCi0JCQkJMjAwMiBTdW1taXQgQmx2ZAotCQkJCVN1aXRlIDE4MDAKLQkJCQlBdGxhbnRhIEdBIDMwMzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05NC05Qy01NSAgIChoZXgpCQlBbHRhIERhdGEgVGVjaG5vbG9naWVzCi05NDlDNTUgICAgIChiYXNlIDE2KQkJQWx0YSBEYXRhIFRlY2hub2xvZ2llcwotCQkJCTQ5MDEgUm9ja2F3YXkgQmx2ZCwgQnVpbGRpbmcgQQotCQkJCVJpbyBSYW5jaG8gTk0gODcxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LUE3LUJDICAgKGhleCkJCUJvZHlNZWRpYSwgSW5jLgotOTRBN0JDICAgICAoYmFzZSAxNikJCUJvZHlNZWRpYSwgSW5jLgotCQkJCTQyMCBGb3J0IER1cXVlc25lIEJsdmQKLQkJCQlHYXRld2F5IDEsIFN1aXRlIDE5MDAKLQkJCQlQaXR0c2J1cmdoIFBBIDE1MjIyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05NC1BQS1COCAgIChoZXgpCQlKb3ZpZXcoQmVpamluZykgVGVjaG5vbG9neSBDby4gTHRkLgotOTRBQUI4ICAgICAoYmFzZSAxNikJCUpvdmlldyhCZWlqaW5nKSBUZWNobm9sb2d5IENvLiBMdGQuCi0JCQkJUm9vbSAzMDIsIFNvdXRoIEJ1aWxkaW5nCi0JCQkJTm8uODAgWHVleXVhbm5hbmx1Ci0JCQkJQmVpamluZyAgMTAwMDgxCi0JCQkJQ0hJTkEKLQotOTQtQUUtNjEgICAoaGV4KQkJQWxjYXRlbCBMdWNlbnQKLTk0QUU2MSAgICAgKGJhc2UgMTYpCQlBbGNhdGVsIEx1Y2VudAotCQkJCVZpYSB0cmVudG8sIDMwCi0JCQkJVmltZXJjYXRlIE1CIDIwMDU5Ci0JCQkJSVRBTFkKLQotOTQtQkEtMzEgICAoaGV4KQkJVmlzaW9udGVjIGRhIEFtYXrDtG5pYSBMdGRhLgotOTRCQTMxICAgICAoYmFzZSAxNikJCVZpc2lvbnRlYyBkYSBBbWF6w7RuaWEgTHRkYS4KLQkJCQlSb2QuIEdlcmFsZG8gU2Nhdm9uZSwgMjMwMCAtIEdhbHBhbyAyNwotCQkJCUNhbGlmb3JuaWEgQ2VudGVyIC0gUHEuIENhbGlmb3JuaWEKLQkJCQlKYWNhcmXDrSBTUCAxMjMwNS00OTAKLQkJCQlCUkFaSUwKLQotOTQtQzQtRTkgICAoaGV4KQkJUG93ZXJMYXllciBNaWNyb3N5c3RlbXMgSG9uZ0tvbmcgTGltaXRlZAotOTRDNEU5ICAgICAoYmFzZSAxNikJCVBvd2VyTGF5ZXIgTWljcm9zeXN0ZW1zIEhvbmdLb25nIExpbWl0ZWQKLQkJCQkyMyBaaGljaHVuIFJkLExpYW5neml5aW56dW8gUm0xMDA5Ci0JCQkJSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA4MwotCQkJCUNISU5BCi0KLTk0LUM2LUVCICAgKGhleCkJCU5PVkEgZWxlY3Ryb25pY3MsIEluYy4KLTk0QzZFQiAgICAgKGJhc2UgMTYpCQlOT1ZBIGVsZWN0cm9uaWNzLCBJbmMuCi0JCQkJR3JhbmQgQXhlIEJsZGcuIDNGLgotCQkJCTEtNy0yMCwgVWVoYXJhLAotCQkJCVNoaWJ1eWEta3UgVG9reW8gMTUxLTAwNjQKLQkJCQlKQVBBTgotCi05NC1DNy1BRiAgIChoZXgpCQlSYXlsaW9zIFRlY2hub2xvZ3kKLTk0QzdBRiAgICAgKGJhc2UgMTYpCQlSYXlsaW9zIFRlY2hub2xvZ3kKLQkJCQkxMkYuLCBOby4xNiwgSmlhbiA4dGggUmQKLQkJCQlaaG9uZ2hlIENpdHkgVGFpcGVpIENvdW50eSAgMjM1MTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTk0LUNBLTBGICAgKGhleCkJCUhvbmV5d2VsbCBBbmFseXRpY3MKLTk0Q0EwRiAgICAgKGJhc2UgMTYpCQlIb25leXdlbGwgQW5hbHl0aWNzCi0JCQkJMjg0MCAybmQgQXZlIFNFCi0JCQkJQ2FsZ2FyeSBBbGJlcnRhIFQyQTdYOQotCQkJCUNBTkFEQQotCi05NC1DQy1COSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotOTRDQ0I5ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotOTQtQ0QtQUMgICAoaGV4KQkJQ3Jlb3dhdmUgT3kKLTk0Q0RBQyAgICAgKGJhc2UgMTYpCQlDcmVvd2F2ZSBPeQotCQkJCUxlbnRva2F0dSAyCi0JCQkJT3VsdW5zYWxvICBGSU4tOTA0NjAKLQkJCQlGSU5MQU5ECi0KLTk0LUQwLTE5ICAgKGhleCkJCUN5ZGxlIENvcnAuCi05NEQwMTkgICAgIChiYXNlIDE2KQkJQ3lkbGUgQ29ycC4KLQkJCQkxMjAzLCBLb2ZvbW9Ub3dlciwgMTYtMyAsIFN1bmFlLURvbmcsIEJ1bmRhbmctR3UKLQkJCQlTZW9uZ25hbS1DaXR5IEd5ZW9uZ2dpLURvIDQ2MzgyNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05NC1ENy0yMyAgIChoZXgpCQlTaGFuZ2hhaSBEYXJlR2xvYmFsIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotOTRENzIzICAgICAoYmFzZSAxNikJCVNoYW5naGFpIERhcmVHbG9iYWwgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJMjJGIEluZm8tVGVjaCBCdWlsZGluZwotCQkJCU5vLjE1NTUgS29uZ2ppYW5nIFJvYWQgCi0JCQkJU2hhbmdoYWkgIDIwMDA5MgotCQkJCUNISU5BCi0KLTk0LUQ5LTNDICAgKGhleCkJCUVORUxQUwotOTREOTNDICAgICAoYmFzZSAxNikJCUVORUxQUwotCQkJCUJ1bCBBcnNlbmlqYSBDYXJub2pldmljYSAxMTcKLQkJCQlCZWxncmFkZSAgMTEwNzAKLQkJCQlTRVJCSUEKLQotOTQtREItNDkgICAoaGV4KQkJU0lUQ09SUAotOTREQjQ5ICAgICAoYmFzZSAxNikJCVNJVENPUlAKLQkJCQk3IFJVRSBDQURFVAotCQkJCVBBUklTICA3NTAxNQotCQkJCUZSQU5DRQotCi05NC1EQi1DOSAgIChoZXgpCQlBenVyZXdhdmUKLTk0REJDOSAgICAgKGJhc2UgMTYpCQlBenVyZXdhdmUKLQkJCQk4RiBObzk0IEJhb3pob25nIFJkCi0JCQkJWGluZGlhbkRpc3RyaWN0LCBOZXcgVGFpcGVpIENpdHkgIDIzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOTQtREQtM0YgICAoaGV4KQkJQStWIExpbmsgVGVjaG5vbG9naWVzLCBDb3JwLgotOTRERDNGICAgICAoYmFzZSAxNikJCUErViBMaW5rIFRlY2hub2xvZ2llcywgQ29ycC4KLQkJCQk1Ri4sIE5vLjU1MCwgWGlhbnpoZW5nIDJuZCBSZC4KLQkJCQlaaHViZWkgQ2l0eSBIc2luY2h1IENvdW50cnkgMzAyNjgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTk0LURFLTBFICAgKGhleCkJCVNtYXJ0T3B0aWNzIEFTCi05NERFMEUgICAgIChiYXNlIDE2KQkJU21hcnRPcHRpY3MgQVMKLQkJCQlTdGFsZmphZXJhIDkKLQkJCQlPc2xvICBOLTA5NzUKLQkJCQlOT1JXQVkKLQotOTQtREYtNTggICAoaGV4KQkJSUogRWxlY3Ryb24gQ08uLEx0ZC4KLTk0REY1OCAgICAgKGJhc2UgMTYpCQlJSiBFbGVjdHJvbiBDTy4sTHRkLgotCQkJCTQwMSBBQ0UgSElHSEVORDgsIDM0NS00IEdBU0FOLURPTkcKLQkJCQlLRVVNQ0hFT04tR1UgCi0JCQkJU0VPVUwgIDE1My04MDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOTQtRTAtRDAgICAoaGV4KQkJSGVhbHRoU3RyZWFtIFRhaXdhbiBJbmMuCi05NEUwRDAgICAgIChiYXNlIDE2KQkJSGVhbHRoU3RyZWFtIFRhaXdhbiBJbmMuCi0JCQkJMTYtMywgWmljaGlhbmcgMXN0IFJvYWQKLQkJCQlKaG9uZ2xpLCBUYW95dWFuIGNvdW50eSAgMzIwNjMKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTk0LUUyLTI2ICAgKGhleCkJCUQuIE9SdGl6IENvbnN1bHRpbmcsIExMQwotOTRFMjI2ICAgICAoYmFzZSAxNikJCUQuIE9SdGl6IENvbnN1bHRpbmcsIExMQwotCQkJCTIyNjAxIE4uIDE3dGggQXZlbnVlIFN1aXRlIDI3MAotCQkJCVBob2VuaXggQVogODUwMjcKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk0LUU3LTExICAgKGhleCkJCVhpcmthIERhbWEgUGVyc2FkYSBQVAotOTRFNzExICAgICAoYmFzZSAxNikJCVhpcmthIERhbWEgUGVyc2FkYSBQVAotCQkJCUdkZyBDTQotCQkJCUpsbiBNYXRyYW1hbiBJIE5vIDkKLQkJCQlKYWthcnRhICAxMzE1MAotCQkJCUlORE9ORVNJQQotCi05NC1FOC00OCAgIChoZXgpCQlGWUxERSBNSUNSTyBMVEQKLTk0RTg0OCAgICAgKGJhc2UgMTYpCQlGWUxERSBNSUNSTyBMVEQKLQkJCQk4IEFWUk9FIENSRVNDRU5UCi0JCQkJQkxBQ0tQT09MIExBTkNBU0hJUkUgRlk0IDJEUAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTk0LUY2LTkyICAgKGhleCkJCUdlbWluaWNvIGNvLixMdGQuCi05NEY2OTIgICAgIChiYXNlIDE2KQkJR2VtaW5pY28gY28uLEx0ZC4KLQkJCQkjMTAyLTExMTIsIENodW51aS1UZWNobm9wYXJrLCAyMDAtMSwKLQkJCQlDaHVudWktZG9uZywgV29ubWktZ3UKLQkJCQlCdWNoZW9uLWNpdHkgS3l1bmdnaS1kbyA0MjAtODU3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTk0LUY3LTIwICAgKGhleCkJCVRpYW5qaW4gRGV2aXNlciBFbGVjdHJvbmljcyBJbnN0cnVtZW50IENvLiwgTHRkCi05NEY3MjAgICAgIChiYXNlIDE2KQkJVGlhbmppbiBEZXZpc2VyIEVsZWN0cm9uaWNzIEluc3RydW1lbnQgQ28uLCBMdGQKLQkJCQlOby40MCBZaWJpbiBSb2FkLE5hbmthaSBkaXN0cmljdCwKLQkJCQlUaWFuamluICAzMDAxMTMKLQkJCQlDSElOQQotCi05NC1GQS1FOCAgIChoZXgpCQlTaGVuemhlbiBFeWNvbSBUZWNobm9sb2d5IENvLiwgTHRkIAotOTRGQUU4ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEV5Y29tIFRlY2hub2xvZ3kgQ28uLCBMdGQgCi0JCQkJRVlBTkcgQnVpbGRpbmcsIE5vLiAzIG9mIFFpbWluIFJkLCBMYW5nc2hhbiAybmQgU3RyZWV0LCBOb3J0aCBBcmVhIG9mIEhpLVRlY2ggSW5kdXN0cmlhbCBab25lLCBOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3VhbmcgRG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi05NC1GRC0xRCAgIChoZXgpCQlXaGVyZVdoZW4gQ29ycAotOTRGRDFEICAgICAoYmFzZSAxNikJCVdoZXJlV2hlbiBDb3JwCi0JCQkJOTZBIEZseW5uIEF2ZW51ZQotCQkJCU1vdW50YWluIFZpZXcgQ2FsaWZvcm5pYSA5NDA0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotOTQtRkUtRjQgICAoaGV4KQkJU0FHRU1DT00KLTk0RkVGNCAgICAgKGJhc2UgMTYpCQlTQUdFTUNPTQotCQkJCTI1MCByb3V0ZSBkZSBsJ0VtcGVyZXVyCi0JCQkJUlVFSUwgTUFMTUFJU09OICA5Mjg0OAotCQkJCUZSQU5DRQotCi05OC0wMi04NCAgIChoZXgpCQlUaGVvYnJvbWEgU3lzdGVtcyBHbWJICi05ODAyODQgICAgIChiYXNlIDE2KQkJVGhlb2Jyb21hIFN5c3RlbXMgR21iSAotCQkJCUd1dGhlaWwtU2Nob2RlciBHYXNzZSAxNwotCQkJCVdpZW4gIDEyMzAKLQkJCQlBVVNUUklBCi0KLTk4LTAzLUEwICAgKGhleCkJCUFCQiBuLnYuIFBvd2VyIFF1YWxpdHkgUHJvZHVjdHMKLTk4MDNBMCAgICAgKGJhc2UgMTYpCQlBQkIgbi52LiBQb3dlciBRdWFsaXR5IFByb2R1Y3RzCi0JCQkJMTAgYWxs6WUgY2VudHJhbGUKLQkJCQlKdW1ldCAgNjA0MAotCQkJCUJFTEdJVU0KLQotOTgtMDMtRDggICAoaGV4KQkJQXBwbGUsIEluYy4KLTk4MDNEOCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtMEMtODIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvIE1lY2hhbmljcwotOTgwQzgyICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3RybyBNZWNoYW5pY3MKLQkJCQlNZXRhbiBEb25nIDMxNCwgWW91bmd0b25nIEd1Ci0JCQkJU3V3b24gS3l1bmctZ2kgRG8uIDQ0My03NDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOTgtMEUtRTQgICAoaGV4KQkJUFJJVkFURQotOTgwRUU0ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi05OC0yNi0yQSAgIChoZXgpCQlBcHBsaWVkIFJlc2VhcmNoIEFzc29jaWF0ZXMsIEluYwotOTgyNjJBICAgICAoYmFzZSAxNikJCUFwcGxpZWQgUmVzZWFyY2ggQXNzb2NpYXRlcywgSW5jCi0JCQkJNDMwMCBTYW4gTWF0ZW8gQm91bGV2YXJkIE5FCi0JCQkJU3VpdGUgYS0yMjAKLQkJCQlBbGJ1cXVlcnF1ZSBOTSA4NzExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtMjktM0YgICAoaGV4KQkJRnVqaWFuIFN0YXJ0IENvbXB1dGVyIEVxdWlwbWVudCBDby4sTHRkCi05ODI5M0YgICAgIChiYXNlIDE2KQkJRnVqaWFuIFN0YXJ0IENvbXB1dGVyIEVxdWlwbWVudCBDby4sTHRkCi0JCQkJTm8uNjggSG9uZ3NoYW5neXVhbiBSb2FkLCAgCi0JCQkJRnV6aG91IENpdHksICBGdWppYW4gUHJvdmluY2UsIDM1MDAwMgotCQkJCUNISU5BCi0KLTk4LTJDLUJFICAgKGhleCkJCTJXaXJlCi05ODJDQkUgICAgIChiYXNlIDE2KQkJMldpcmUKLQkJCQkxNzY0IEF1dG9tYXRpb24gUGt3eQotCQkJCVNhbiBKb3NlIENBIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC0yRC01NiAgIChoZXgpCQlSZXNvbHV0aW9uIEF1ZGlvCi05ODJENTYgICAgIChiYXNlIDE2KQkJUmVzb2x1dGlvbiBBdWRpbwotCQkJCTg4IEhvZmYgU3RyZWV0ICMxMDYKLQkJCQlTYW4gRnJhbmNpc2NvIENBIDk0MTEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC0zMC0wMCAgIChoZXgpCQlCZWlqaW5nIEtFTUFDT00gVGVjaG5vbG9naWVzIENvLiwgTHRkLgotOTgzMDAwICAgICAoYmFzZSAxNikJCUJlaWppbmcgS0VNQUNPTSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCi0JCQkJUm9vbSAyMDgsIEJ1aWxkaW5nIDYsIE5vLjUwLCBYaSBTYW4gSHVhbiBCZWkgUm9hZCAKLQkJCQlIYWlkaWFuIERpc3RyaWN0LCAKLQkJCQlCZWlqaW5nICAxMDAwNDQKLQkJCQlDSElOQQotCi05OC0zNS03MSAgIChoZXgpCQlTdWIxMCBTeXN0ZW1zIEx0ZAotOTgzNTcxICAgICAoYmFzZSAxNikJCVN1YjEwIFN5c3RlbXMgTHRkCi0JCQkJVGhlIE9sZCBRdWFycnkKLQkJCQlDYXRvbiBDcm9zcwotCQkJCUFzaGJ1cnRvbiBEZXZvbiBUUTEzIDdMSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTk4LTM1LUI4ICAgKGhleCkJCUFzc2VtYmxlZCBQcm9kdWN0cyBDb3Jwb3JhdGlvbgotOTgzNUI4ICAgICAoYmFzZSAxNikJCUFzc2VtYmxlZCBQcm9kdWN0cyBDb3Jwb3JhdGlvbgotCQkJCTExNSBFLiBMaW5kZW4KLQkJCQlSb2dlcnMgQXJrYW5zYXMgNzI3NTYKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk4LTQyLTQ2ICAgKGhleCkJCVNPTCBJTkRVU1RSWSBQVEUuLCBMVEQKLTk4NDI0NiAgICAgKGJhc2UgMTYpCQlTT0wgSU5EVVNUUlkgUFRFLiwgTFRECi0JCQkJIDEgTk9SVEggQlJJREdFIFJELiwKLQkJCQkgIzI0LTA1LCBISUdIIFNUUkVFVCBDRU5UUkUsCi0JCQkJMTc5MDk0Ci0JCQkJU0lOR0FQT1JFCi0KLTk4LTRBLTQ3ICAgKGhleCkJCUNIRyBIb3NwaXRhbCBCZWRzCi05ODRBNDcgICAgIChiYXNlIDE2KQkJQ0hHIEhvc3BpdGFsIEJlZHMKLQkJCQkxNTMgVG93ZXJsaW5lIFBsYWNlCi0JCQkJTG9uZG9uIE9OIE42RSAyVDMKLQkJCQlDQU5BREEKLQotOTgtNEItNEEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHkgSW5jLgotOTg0QjRBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5IEluYy4KLQkJCQk2MDAgTm9ydGggVVMgSGlnaHdheSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtNEItRTEgICAoaGV4KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLTk4NEJFMSAgICAgKGJhc2UgMTYpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC00RS05NyAgIChoZXgpCQlTdGFybGlnaHQgTWFya2V0aW5nIChILiBLLikgTHRkLgotOTg0RTk3ICAgICAoYmFzZSAxNikJCVN0YXJsaWdodCBNYXJrZXRpbmcgKEguIEsuKSBMdGQuCi0JCQkJNS9GLiwgU2hpbmcgRGFvIEluZHVzdHJpYWwgQnVpbGRpbmcsIAotCQkJCTIzMiBBYmVyZGVlbiBNYWluIFJvYWQKLQkJCQlIT05HIEtPTkcKLQotOTgtNTgtOEEgICAoaGV4KQkJU1lTR1JBVElPTiBMdGQuCi05ODU4OEEgICAgIChiYXNlIDE2KQkJU1lTR1JBVElPTiBMdGQuCi0JCQkJMTBGbC5OTy44NjgtMy5DaHVuZyBDaGVuZyBSZC4KLQkJCQlDaHVuZyBIbyBEaXN0cmljdCwKLQkJCQlOZXdUYWlwZWkgQ2l0eSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05OC01OS00NSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotOTg1OTQ1ICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC01RS0xQiAgIChoZXgpCQlDb252ZXJzRGlnaXRhbCBDby4sIEx0ZC4KLTk4NUUxQiAgICAgKGJhc2UgMTYpCQlDb252ZXJzRGlnaXRhbCBDby4sIEx0ZC4KLQkJCQk1MzA4IDV0aCBCbGRnLiwgRG9uZyBTZW91bCBVbml2LgotCQkJCUJva2plb25nLWRvbmcsIFN1amVvbmctZ3UKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaSA0NjE3MTQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOTgtNjAtMjIgICAoaGV4KQkJRU1XIENvLiwgTHRkLgotOTg2MDIyICAgICAoYmFzZSAxNikJCUVNVyBDby4sIEx0ZC4KLQkJCQk4MEItNEwsIDY4MC0zIEdvamFuLURvbmcKLQkJCQlOYW1kb25nLUd1Ci0JCQkJSW5jaGVvbiAgNDA1LTgxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05OC02Ni1FQSAgIChoZXgpCQlJbmR1c3RyaWFsIENvbnRyb2wgQ29tbXVuaWNhdGlvbnMsIEluYy4KLTk4NjZFQSAgICAgKGJhc2UgMTYpCQlJbmR1c3RyaWFsIENvbnRyb2wgQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQkxNjAwIEFzcGVuIENvbW1vbnMKLQkJCQlTdWl0ZSAyMTAKLQkJCQlNaWRkbGV0b24gV0kgNTM1NjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk4LTZELUM4ICAgKGhleCkJCVRPU0hJQkEgTUlUU1VCSVNISS1FTEVDVFJJQyBJTkRVU1RSSUFMIFNZU1RFTVMgQ09SUE9SQVRJT04KLTk4NkRDOCAgICAgKGJhc2UgMTYpCQlUT1NISUJBIE1JVFNVQklTSEktRUxFQ1RSSUMgSU5EVVNUUklBTCBTWVNURU1TIENPUlBPUkFUSU9OCi0JCQkJTUlUQSA0M01UIEJMREcuCi0JCQkJMTMtMTZNSVRBIDMtQ0hPTUUsTUlOQVRPLUtVCi0JCQkJVE9LWU8gSkFQQU4gMTA4LTAwNzMKLQkJCQlKQVBBTgotCi05OC03My1DNCAgIChoZXgpCQlTYWdlIEVsZWN0cm9uaWMgRW5naW5lZXJpbmcgTExDCi05ODczQzQgICAgIChiYXNlIDE2KQkJU2FnZSBFbGVjdHJvbmljIEVuZ2luZWVyaW5nIExMQwotCQkJCTIwMSBUZXJyeSBTdC4KLQkJCQlTdWl0ZSAxQQotCQkJCUxvbmdtb250IENPIDgwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC04Mi0xNyAgIChoZXgpCQlEaXNydXB0aXZlIEx0ZAotOTg4MjE3ICAgICAoYmFzZSAxNikJCURpc3J1cHRpdmUgTHRkCi0JCQkJV2luZHNvciBIb3VzZQotCQkJCVR1cm5waWtlIFJvYWQKLQkJCQlIaWdoIFd5Y29tYmUgQnVja2luZ2hhbXNoaXJlIEhQMTIgM05SCi0JCQkJVU5JVEVEIEtJTkdET00KLQotOTgtODktRUQgICAoaGV4KQkJQW5hZGVtIEluZm9ybWF0aW9uIEluYy4KLTk4ODlFRCAgICAgKGJhc2UgMTYpCQlBbmFkZW0gSW5mb3JtYXRpb24gSW5jLgotCQkJCTJuZCBGLCA3OSBaaG91emkgU3RyZWV0LCBOZWlodSBEaXN0cmljdCwgCi0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTk4LThCLTVEICAgKGhleCkJCVNBR0VNIENPTU1VTklDQVRJT04KLTk4OEI1RCAgICAgKGJhc2UgMTYpCQlTQUdFTSBDT01NVU5JQ0FUSU9OCi0JCQkJMjUwIHJvdXRlIGRlIGwnRW1wZXJldXIKLQkJCQlSdWVpbCBNYWxtYWlzb24gIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLTk4LThCLUFEICAgKGhleCkJCUNvcmludGVjaCBMdGQuCi05ODhCQUQgICAgIChiYXNlIDE2KQkJQ29yaW50ZWNoIEx0ZC4KLQkJCQlBc2hmb3JkIE1pbGwKLQkJCQlTdGF0aW9uIFJvYWQKLQkJCQlGb3JkaW5nYnJpZGdlIEhhbXBzaGlyZSBTUDYgMURaCi0JCQkJVU5JVEVEIEtJTkdET00KLQotOTgtOEUtMzQgICAoaGV4KQkJWkhFSklBTkcgQk9YU0FNIEVMRUNUUk9OSUMgQ08uLExURAotOTg4RTM0ICAgICAoYmFzZSAxNikJCVpIRUpJQU5HIEJPWFNBTSBFTEVDVFJPTklDIENPLixMVEQKLQkJCQlOby4yODgsTE9OR1RBTiBST0FELAotCQkJCUpJTkhVQSBDSVRZIFpIRUpJQU5HIFBST1ZJTkNFLCAzMjEwMTcKLQkJCQlDSElOQQotCi05OC04RS1ERCAgIChoZXgpCQlSYXljaGVtIEludGVybmF0aW9uYWwKLTk4OEVERCAgICAgKGJhc2UgMTYpCQlSYXljaGVtIEludGVybmF0aW9uYWwKLQkJCQlCYXkgMTA1LCAKLQkJCQlTaGFubm9uIEluZHVzdHJpYWwgRXN0YXRlLAotCQkJCVNoYW5ub24sIENvLiBDbGFyZSBFaXJlCi0JCQkJSVJFTEFORAotCi05OC05MC04MCAgIChoZXgpCQlMaW5rcG93ZXIgTmV0d29yayBTeXN0ZW0gSW5jIEx0ZC4KLTk4OTA4MCAgICAgKGJhc2UgMTYpCQlMaW5rcG93ZXIgTmV0d29yayBTeXN0ZW0gSW5jIEx0ZC4KLQkJCQlSb29tIDIwNSxOb3J0aGVhc3QgQi0xLCBFYXN0IEluZHVzdHJ5IFpvbmUKLQkJCQlPdmVyc2VhcyBDaGluZXNlIFRvd24sTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTMKLQkJCQlDSElOQQotCi05OC05NC00OSAgIChoZXgpCQlTa3l3b3J0aCBXaXJlbGVzcyBUZWNobm9sb2d5IEx0ZC4KLTk4OTQ0OSAgICAgKGJhc2UgMTYpCQlTa3l3b3J0aCBXaXJlbGVzcyBUZWNobm9sb2d5IEx0ZC4KLQkJCQlVbml0IEEgUm0uM0EwMSwgU2t5d29ydGggQmxkZy4sIEdhb3hpbiBBdmUuIDEuUy4sCi0JCQkJTmFuc2hhbiBEaXN0cmljdCBTaGVuemhlbiA1MTgwNTcKLQkJCQlDSElOQQotCi05OC1BNy1CMCAgIChoZXgpCQlNQ1NUIFpBTwotOThBN0IwICAgICAoYmFzZSAxNikJCU1DU1QgWkFPCi0JCQkJMzUvNTAsIE5pemhueWF5YSBLcmFzbm9zZWxza2F5YSBTdC4sCi0JCQkJTW9zY293ICAxMDU2NjYKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotOTgtQUEtRDcgICAoaGV4KQkJQkxVRSBXQVZFIE5FVFdPUktJTkcgQ08gTFRECi05OEFBRDcgICAgIChiYXNlIDE2KQkJQkxVRSBXQVZFIE5FVFdPUktJTkcgQ08gTFRECi0JCQkJTm8uIDIwLCBMYW5lIDY4LCBEYS1mZW5nIFJELCAKLQkJCQlORVcgVEFJUEVJIFRBSVBFSSAgMjMxMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLTk4LUJDLTU3ICAgKGhleCkJCVNWQSBURUNITk9MT0dJRVMgQ08uTFRECi05OEJDNTcgICAgIChiYXNlIDE2KQkJU1ZBIFRFQ0hOT0xPR0lFUyBDTy5MVEQKLQkJCQk1RiBOby4xOTIgVGluZ2xpbiBSb2FkLAotCQkJCVNIQU5HSEFJICAyMDAyMzMKLQkJCQlDSElOQQotCi05OC1CQy05OSAgIChoZXgpCQlFZGVsdGVjaCBDby4sTHRkLgotOThCQzk5ICAgICAoYmFzZSAxNikJCUVkZWx0ZWNoIENvLixMdGQuCi0JCQkJIzMwMiBKYW1hZSBCbGRnLCAxMDEwLTI4LCBTYWRhbmctZG9uZywgRG9uZ2phaz1ndQotCQkJCVNlb3VsICAxNTYtODI0Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTk4LUM4LTQ1ICAgKGhleCkJCVBhY2tldEFjY2VzcwotOThDODQ1ICAgICAoYmFzZSAxNikJCVBhY2tldEFjY2VzcwotCQkJCTYxMSBOb3J0aCBNYWluIFN0cmVldAotCQkJCUdvbGRmaWVsZCBJQSA1MDU0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotOTgtRDYtODYgICAoaGV4KQkJQ2h5aSBMZWUgaW5kdXN0cnkgQ28uLCBsdGQuCi05OEQ2ODYgICAgIChiYXNlIDE2KQkJQ2h5aSBMZWUgaW5kdXN0cnkgQ28uLCBsdGQuCi0JCQkJTm8uMjUsIFd1ZnUgUmQuLCBYaW55aW5nIERpc3QuCi0JCQkJVGFpbmFuIGNpdHkgIDczMDU0Ci0JCQkJVEFJV0FOLCBQUk9WSU5DRSBPRiBDSElOQQotCi05OC1ENi1CQiAgIChoZXgpCQlBcHBsZSwgSW5jLgotOThENkJCICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05OC1EOC04QyAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLTk4RDg4QyAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlDQVJSRVRFUkEgQkFTRSBBRVJFQSAjIDU4NTAKLQkJCQlaYXBvcGFuIEphbGlzY28gNDQxMzAKLQkJCQlNRVhJQ08KLQotOTgtREMtRDkgICAoaGV4KQkJVU5JVEVDIENvLiwgTHRkLgotOThEQ0Q5ICAgICAoYmFzZSAxNikJCVVOSVRFQyBDby4sIEx0ZC4KLQkJCQkxLTItMS1TaGlueW9rb2hhbWEKLQkJCQlLb2hva3Uta3UKLQkJCQlZb2tvaGFtYS1zaGkgS2FuYWdhd2EgMjIyLTAwMzMKLQkJCQlKQVBBTgotCi05OC1FMS02NSAgIChoZXgpCQlBY2N1dG9tZQotOThFMTY1ICAgICAoYmFzZSAxNikJCUFjY3V0b21lCi0JCQkJMzIyMiBQaG9lbml4dmlsbGUgUGlrZQotCQkJCU1hbHZlcm4gUEEgMTkzNTUKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk4LUU3LTlBICAgKGhleCkJCUZveGNvbm4oTmFuSmluZykgQ29tbXVuaWNhdGlvbiBDby4sTHRkLgotOThFNzlBICAgICAoYmFzZSAxNikJCUZveGNvbm4oTmFuSmluZykgQ29tbXVuaWNhdGlvbiBDby4sTHRkLgotCQkJCUEtMkZNaW5mYW5nIEJ1aWxkaW5nIE5vLjE4OSBHdWFuZ3pob3UgUmQgCi0JCQkJTmFuamluZyBKaWFuZyBzdSAyMTAwMjkKLQkJCQlDSElOQQotCi05OC1FQy02NSAgIChoZXgpCQlDb3Nlc3kgQXBTCi05OEVDNjUgICAgIChiYXNlIDE2KQkJQ29zZXN5IEFwUwotCQkJCVR5dHRlYmFlcnZlaiAyCi0JCQkJQW5zIEp5bGxhbmQgREstODY0MwotCQkJCURFTk1BUksKLQotOTgtRjUtMzcgICAoaGV4KQkJenRlIGNvcnBvcmF0aW9uCi05OEY1MzcgICAgIChiYXNlIDE2KQkJenRlIGNvcnBvcmF0aW9uCi0JCQkJMTIvRi4senRlIFImRCBidWlsZGluZyxrZWppbmFuIFJvYWQsCi0JCQkJc2hlbnpoZW4gZ3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTk4LUY4LURCICAgKGhleCkJCU1hcmluaSBJbXBpYW50aSBJbmR1c3RyaWFsaSBzLnIubC4KLTk4RjhEQiAgICAgKGJhc2UgMTYpCQlNYXJpbmkgSW1waWFudGkgSW5kdXN0cmlhbGkgcy5yLmwuCi0JCQkJVmlhIGRlbGxlIFByb3ZpbmNlLCA2QQotCQkJCShab25hIEFydGlnaWFuYWxlKQotCQkJCUNpc3Rlcm5hIGRpIExhdGluYSAgMDQwMTIKLQkJCQlJVEFMWQotCi05OC1GQy0xMSAgIChoZXgpCQlDaXNjby1MaW5rc3lzLCBMTEMKLTk4RkMxMSAgICAgKGJhc2UgMTYpCQlDaXNjby1MaW5rc3lzLCBMTEMKLQkJCQkxMzEgVGhlcm95IERyaXZlCi0JCQkJSXJ2aW5lIENhbGlmb3JuaWEgOTI2MTIKLQkJCQlVTklURUQgU1RBVEVTCi0KLTk4LUZFLTAzICAgKGhleCkJCUVyaWNzc29uIC0gTm9ydGggQW1lcmljYQotOThGRTAzICAgICAoYmFzZSAxNikJCUVyaWNzc29uIC0gTm9ydGggQW1lcmljYQotCQkJCTYzMDAgTGVnYWN5IERyaXZlCi0JCQkJUGxhbm8gVFggNzUwMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLTAxLTExICAgKGhleCkJCVNoZW56aGVuIE5ld2FiZWwgRWxlY3Ryb25pYyBDby4sIEx0ZC4KLTlDMDExMSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBOZXdhYmVsIEVsZWN0cm9uaWMgQ28uLCBMdGQuCi0JCQkJNUZsciwgU291dGggVG93ZXIgb2YgU2ljaHVhbiBCbGQuLAotCQkJCU5vLjIwMDEgSG9uZ2xpIFJkLiwgRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAyOAotCQkJCUNISU5BCi0KLTlDLTAyLTk4ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZCAKLTlDMDI5OCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQgCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTlDLTA2LTZFICAgKGhleCkJCUh5dGVyYSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbiBMaW1pdGVkCi05QzA2NkUgICAgIChiYXNlIDE2KQkJSHl0ZXJhIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uIExpbWl0ZWQKLQkJCQlIeXRlcmEgVG93ZXIsIEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrIE5vcnRoLCBOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTlDLTBELUFDICAgKGhleCkJCVR5bXBoYW55IEhLIExpbWl0ZWQKLTlDMERBQyAgICAgKGJhc2UgMTYpCQlUeW1waGFueSBISyBMaW1pdGVkCi0JCQkJUk0gMTMwNy04Ci0JCQkJRG9taW5pb24gQ2VudHJlCi0JCQkJNDMtNTksIFF1ZWVuJ3MgUm9hZCBFYXN0IFdhbmNoYWkgCi0JCQkJSE9ORyBLT05HCi0KLTlDLTE4LTc0ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi05QzE4NzQgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLTlDLTFGLUREICAgKGhleCkJCUFjY3VwaXggSW5jLgotOUMxRkREICAgICAoYmFzZSAxNikJCUFjY3VwaXggSW5jLgotCQkJCTNGIEdhZXlhbmcgQkxERywgNTQ4LTEsIAotCQkJCUFueWFuZyA4LURvbmcsIE1hbmFuLUd1LCAKLQkJCQlBbnlhbmcgS3llb25nZ2ktRG8gNDMwLTczMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05Qy0yMC03QiAgIChoZXgpCQlBcHBsZSBJbmMKLTlDMjA3QiAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy0yMi0wRSAgIChoZXgpCQlUQVNDQU4gU2VydmljZSBHbWJICi05QzIyMEUgICAgIChiYXNlIDE2KQkJVEFTQ0FOIFNlcnZpY2UgR21iSAotCQkJCU1heC1QbGFuY2stU3RyLiAzOAotCQkJCUNvbG9nbmUgTlJXIDUwODU4Ci0JCQkJR0VSTUFOWQotCi05Qy0yOC1CRiAgIChoZXgpCQlDb250aW5lbnRhbCBBdXRvbW90aXZlIEN6ZWNoIFJlcHVibGljIHMuci5vLgotOUMyOEJGICAgICAoYmFzZSAxNikJCUNvbnRpbmVudGFsIEF1dG9tb3RpdmUgQ3plY2ggUmVwdWJsaWMgcy5yLm8uCi0JCQkJUHL5bXlzbG924SAxODUxCi0JCQkJQnJhbmT9cyBuYWQgTGFiZW0gIDI1MCAwMSAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi05Qy0zMS1CNiAgIChoZXgpCQlLdWxpdGUgU2VtaWNvbmR1Y3RvciBQcm9kdWN0cyBJbmMKLTlDMzFCNiAgICAgKGJhc2UgMTYpCQlLdWxpdGUgU2VtaWNvbmR1Y3RvciBQcm9kdWN0cyBJbmMKLQkJCQkxIFdpbGxvdyBUcmVlIFJkCi0JCQkJTGVvbmlhIE5KIDA3NjA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy00MS03QyAgIChoZXgpCQlIYW1lICBUZWNobm9sb2d5IENvLiwgIExpbWl0ZWQgCi05QzQxN0MgICAgIChiYXNlIDE2KQkJSGFtZSAgVGVjaG5vbG9neSBDby4sICBMaW1pdGVkIAotCQkJCTVGLCBOby4gMTggSGlnaCBUZWNoIE1pZGRsZSBBdmVudWUgT25lLCBIaWdoIFRlY2ggSW5kdXN0cmlhbCBQYXJrLCBOYW5zaGFuIERpc3RyaWN0LCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotOUMtNDUtNjMgICAoaGV4KQkJRElNRVAgU2lzdGVtYXMKLTlDNDU2MyAgICAgKGJhc2UgMTYpCQlESU1FUCBTaXN0ZW1hcwotCQkJCUF2LiBNT2ZhcnJlaiwgODQwCi0JCQkJU2FvIFBhdWxvIFNQIDA1MzExMDAwCi0JCQkJQlJBWklMCi0KLTlDLTRBLTdCICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi05QzRBN0IgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotOUMtNEMtQUUgICAoaGV4KQkJTWVzYSBMYWJzCi05QzRDQUUgICAgIChiYXNlIDE2KQkJTWVzYSBMYWJzCi0JCQkJMTAgRXZlcmdyZWVuIERyCi0JCQkJQm96ZW1hbiBNVCA1OTcxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtNEUtMjAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotOUM0RTIwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtNEUtMzYgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi05QzRFMzYgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi05Qy00RS04RSAgIChoZXgpCQlBTFQgU3lzdGVtcyBMdGQKLTlDNEU4RSAgICAgKGJhc2UgMTYpCQlBTFQgU3lzdGVtcyBMdGQKLQkJCQlQb0JveCAxNwotCQkJCUhlbHNpbmtpICAwMDc2MQotCQkJCUZJTkxBTkQKLQotOUMtNTMtQ0QgICAoaGV4KQkJRU5HSUNBTSBzLnIubC4KLTlDNTNDRCAgICAgKGJhc2UgMTYpCQlFTkdJQ0FNIHMuci5sLgotCQkJCVZpYSBEZWkgUHJhdG9uaSBuLjE2Ci0JCQkJU2NhbmRpY2NpIEZJUkVOWkUgNTAwMTgKLQkJCQlJVEFMWQotCi05Qy01NC1DQSAgIChoZXgpCQlaaGVuZ3pob3UgVkNPTSBTY2llbmNlIGFuZCBUZWNobm9sb2d5IENvLixMdGQKLTlDNTRDQSAgICAgKGJhc2UgMTYpCQlaaGVuZ3pob3UgVkNPTSBTY2llbmNlIGFuZCBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlOYXRpb25hbCA4NjMgU29mdHdhcmUgUGFya++/ve+/vU5vLjYgQ3Vpemh1IFN0cmVldCwgSGktdGVjaCBJbmR1c3J5IERldmVsb3BpbmcgUGFyawotCQkJCVpoZW5nWmhvdSBDaXR5IEhlbmFuIFByb3ZpbmNlIDQ1MDAwMQotCQkJCUNISU5BCi0KLTlDLTU1LUI0ICAgKGhleCkJCUkuUy5FLiBTLnIubC4KLTlDNTVCNCAgICAgKGJhc2UgMTYpCQlJLlMuRS4gUy5yLmwuCi0JCQkJVmlhIGRlbGxhIENhbmFwaWdsaWEgNQotCQkJCU1pZ2xpYXJpbm8gUGlzYW5vIFBJU0EgNTYwMTAKLQkJCQlJVEFMWQotCi05Qy01Ny0xMSAgIChoZXgpCQlGZWl0aWFuIFh1bmRhKEJlaWppbmcpIEFlcm9uYXV0aWNhbCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotOUM1NzExICAgICAoYmFzZSAxNikJCUZlaXRpYW4gWHVuZGEoQmVpamluZykgQWVyb25hdXRpY2FsIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJQnVpbGRpbmcgQixIb3Jpem9uIEludGVybmF0aW9uYWwgVG93ZXIsTm8uNiBaaGljaHVuIFJkLEhhaWRpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDg4Ci0JCQkJQ0hJTkEKLQotOUMtNUItOTYgICAoaGV4KQkJTk1SIENvcnBvcmF0aW9uCi05QzVCOTYgICAgIChiYXNlIDE2KQkJTk1SIENvcnBvcmF0aW9uCi0JCQkJM0YgRXNwcml0IEJ1aWxkLiwxLTMtNiBOaXNoaS1OaXBwb3JpCi0JCQkJQXJha2F3YS1LdSBUb2t5byAxMTYtMDAxMwotCQkJCUpBUEFOCi0KLTlDLTVDLThEICAgKGhleCkJCUZJUkVNQVggSU5E2lNUUklBIEUgQ09NyVJDSU8gREUgUFJPRFVUT1MgRUxFVFLUTklDT1MgTFREQQotOUM1QzhEICAgICAoYmFzZSAxNikJCUZJUkVNQVggSU5E2lNUUklBIEUgQ09NyVJDSU8gREUgUFJPRFVUT1MgRUxFVFLUTklDT1MgTFREQQotCQkJCVI6IFZpY2VudGUgZGUgRmVsaWNlLCA1ODkgLSAgSmQuT3VybyBWZXJkZSAKLQkJCQlMaW1laXJhIFNhbyBQYXVsbyAxMzQ4Mi0wNzUKLQkJCQlCUkFaSUwKLQotOUMtNUQtOTUgICAoaGV4KQkJVlRDIEVsZWN0cm9uaWNzIENvcnAuCi05QzVEOTUgICAgIChiYXNlIDE2KQkJVlRDIEVsZWN0cm9uaWNzIENvcnAuCi0JCQkJNUYsTm8uMjEsU2VjLjYsWmhvbmd4aWFvIEUuUmQuLE5hbmdhbmcgRGlzdHJpY3QKLQkJCQlUYWlwZWkgIDExNTc1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi05Qy01RS03MyAgIChoZXgpCQlDYWxpYnJlIFVLIEx0ZAotOUM1RTczICAgICAoYmFzZSAxNikJCUNhbGlicmUgVUsgTHRkCi0JCQkJQ29ybndhbGwgSG91c2UKLQkJCQlDb3Jud2FsbCBUZXJyYWNlCi0JCQkJQnJhZGZvcmQgV2VzdCBZb3Jrc2hpcmUgQkQ4IDdKUwotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLTlDLTYxLTFEICAgKGhleCkJCU9tbmktSUQgVVNBLCBJbmMuCi05QzYxMUQgICAgIChiYXNlIDE2KQkJT21uaS1JRCBVU0EsIEluYy4KLQkJCQkxMjAwIFJpZGdld2F5IEF2ZQotCQkJCVJvY2hlc3RlciBOWSAxNDYxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtNjQtNUUgICAoaGV4KQkJSGFybWFuIENvbnN1bWVyIEdyb3VwCi05QzY0NUUgICAgIChiYXNlIDE2KQkJSGFybWFuIENvbnN1bWVyIEdyb3VwCi0JCQkJODUwMCBCYWxib2EgQmx2ZAotCQkJCU5vcnRocmlkZ2UgQ0EgOTEzMjkKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLTZBLUJFICAgKGhleCkJCVFFRVMgQXBTLgotOUM2QUJFICAgICAoYmFzZSAxNikJCVFFRVMgQXBTLgotCQkJCU5hdmVybGFuZCAzMSwgMi50dgotCQkJCUdsb3N0cnVwIEhvdmVkc3RhZGVuIDI2MDAKLQkJCQlERU5NQVJLCi0KLTlDLTc1LTE0ICAgKGhleCkJCVdpbGRpeCBzcmwKLTlDNzUxNCAgICAgKGJhc2UgMTYpCQlXaWxkaXggc3JsCi0JCQkJbG9jLiBMZSBCYXNzZSwgMwotCQkJCVRyZW50byBUTiAzODEwMAotCQkJCUlUQUxZCi0KLTlDLTc3LUFBICAgKGhleCkJCU5BREFTTlYKLTlDNzdBQSAgICAgKGJhc2UgMTYpCQlOQURBU05WCi0JCQkJMjIwMywgVC1kb25nLCBQb29uZ2xpbSBJLXdvbiBQbHVzCi0JCQkJU2VvaHllb24tZG9uZywgQnVuZGFuZy1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04NjIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotOUMtN0ItRDIgICAoaGV4KQkJTkVPTEFCIENvbnZlcmdlbmNlCi05QzdCRDIgICAgIChiYXNlIDE2KQkJTkVPTEFCIENvbnZlcmdlbmNlCi0JCQkJNEYgWXVqdW5nIGJsZGcuLAotCQkJCVNlb2Noby1kb25nLCBTZW9jaG8tZ3UKLQkJCQlTZW91bCAgMTM3LTA3MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi05Qy04MC03RCAgIChoZXgpCQlTWVNDQUJMRSBLb3JlYSBJbmMuCi05QzgwN0QgICAgIChiYXNlIDE2KQkJU1lTQ0FCTEUgS29yZWEgSW5jLgotCQkJCTJGIEtBTUEgQmxkZyAxNDYxLTE1IFNlY2hvLTNkb25nIFNlb2Noby1HdQotCQkJCVNlb3VsICAxMzctNzIwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLTlDLThCLUYxICAgKGhleCkJCVRoZSBXYXJlaG91c2UgTGltaXRlZAotOUM4QkYxICAgICAoYmFzZSAxNikJCVRoZSBXYXJlaG91c2UgTGltaXRlZAotCQkJCVN1aXRlIDYwMSwgQ2l0eSBQb2ludCwgMTYwMCBaaG9uZ2h1YSBSb2FkLCBIdWFuZ3B1IERpc3RyaWN0Ci0JCQkJU2hhbmdoYWkgIDIwMDAxMAotCQkJCUNISU5BCi0KLTlDLThFLTk5ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci05QzhFOTkgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtOEUtREMgICAoaGV4KQkJVGVyYWNvbSBMaW1pdGVkCi05QzhFREMgICAgIChiYXNlIDE2KQkJVGVyYWNvbSBMaW1pdGVkCi0JCQkJCi0JCQkJTm9pZGEgVXR0YXIgUHJhZGVzaCAyMDEzMDEKLQkJCQlJTkRJQQotCi05Qy05My00RSAgIChoZXgpCQlYZXJveCBDb3Jwb3JhdGlvbgotOUM5MzRFICAgICAoYmFzZSAxNikJCVhlcm94IENvcnBvcmF0aW9uCi0JCQkJTWFpbCBTdG9wIDAyMTQgLSA3RQotCQkJCTgwMCBQaGlsbGlwcyBSb2FkCi0JCQkJV2Vic3RlciBOWSAxNDU4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtOTUtRjggICAoaGV4KQkJU21hcnREb29yIFN5c3RlbXMsIExMQwotOUM5NUY4ICAgICAoYmFzZSAxNikJCVNtYXJ0RG9vciBTeXN0ZW1zLCBMTEMKLQkJCQk1NzExLUEgQ2VudGVyIExhbmUKLQkJCQlGYWxscyBDaHVyY2ggVmlyZ2luaWEgMjIwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLTlDLUExLTM0ICAgKGhleCkJCU5pa2UsIEluYy4KLTlDQTEzNCAgICAgKGJhc2UgMTYpCQlOaWtlLCBJbmMuCi0JCQkJMSBCb3dlcm1hbiBEcml2ZQotCQkJCUJlYXZlcnRvbiBPUiA5NzAwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtQTMtQkEgICAoaGV4KQkJU0FLVVJBIEludGVybmV0IEluYy4KLTlDQTNCQSAgICAgKGJhc2UgMTYpCQlTQUtVUkEgSW50ZXJuZXQgSW5jLgotCQkJCTctMjAtMSBOaXNoaS1zaGluanVrdQotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2MDAwMjMKLQkJCQlKQVBBTgotCi05Qy1BRC1FRiAgIChoZXgpCQlPYmloYWkgVGVjaG5vbG9neSwgSW5jLgotOUNBREVGICAgICAoYmFzZSAxNikJCU9iaWhhaSBUZWNobm9sb2d5LCBJbmMuCi0JCQkJMTk2MzggU3RldmVucyBDcmVlayBCbHZkCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy1BRi1DQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi05Q0FGQ0EgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi05Qy1CMC0wOCAgIChoZXgpCQlVYmlxdWl0b3VzIENvbXB1dGluZyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi05Q0IwMDggICAgIChiYXNlIDE2KQkJVWJpcXVpdG91cyBDb21wdXRpbmcgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotCQkJCTItMjAtMSBOaXNoaS1Hb3RhbmRhCi0JCQkJU2hpbmFnYXdhLWt1IFRva3lvIDE0MTAwMzEKLQkJCQlKQVBBTgotCi05Qy1CMi0wNiAgIChoZXgpCQlQUk9DRU5URUMKLTlDQjIwNiAgICAgKGJhc2UgMTYpCQlQUk9DRU5URUMKLQkJCQlUdXJmc2NoaXBwZXIgNDEKLQkJCQlXYXRlcmluZ2VuIFp1aWQgSG9sbGFuZCAyMjkySkMKLQkJCQlORVRIRVJMQU5EUwotCi05Qy1CNy0wRCAgIChoZXgpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotOUNCNzBEICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsOTAsQ2hpZW4gMSBSb2FkLCBDaHVuZ0hvLiAKLQkJCQlUYWlwZWkgSHNpZW4gICAyMzU4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOUMtQzAtNzcgICAoaGV4KQkJUHJpbnRDb3VudHMsIExMQwotOUNDMDc3ICAgICAoYmFzZSAxNikJCVByaW50Q291bnRzLCBMTEMKLQkJCQk1MTA5IFcgTGVtb24gU3QKLQkJCQlUYW1wYSBGTCAzMzYwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtQzAtRDIgICAoaGV4KQkJQ29uZHVjdGl4LVdhbXBmbGVyIEFHCi05Q0MwRDIgICAgIChiYXNlIDE2KQkJQ29uZHVjdGl4LVdhbXBmbGVyIEFHCi0JCQkJUmhlaW5zdHJhc3NlIDI3KzMzCi0JCQkJV2VpbCBhbSBSaGVpbiBCYWRlbi1X/HJ0dGVtYmVyZyBELTc5NTc2Ci0JCQkJR0VSTUFOWQotCi05Qy1DNy1BNiAgIChoZXgpCQlBVk0gR21iSAotOUNDN0E2ICAgICAoYmFzZSAxNikJCUFWTSBHbWJICi0JCQkJQWx0LU1vYWJpdCA5NQotCQkJCUJlcmxpbiAxMDU1OQotCQkJCUdFUk1BTlkKLQotOUMtQzctRDEgICAoaGV4KQkJU0hBUlAgQ29ycG9yYXRpb24KLTlDQzdEMSAgICAgKGJhc2UgMTYpCQlTSEFSUCBDb3Jwb3JhdGlvbgotCQkJCTIyLTIyLE5hZ2Fpa2UtQ2hvCi0JCQkJQWJlbm8tS3UKLQkJCQlPc2FrYS1DaXR5IE9zYWthLVByZWZlY3R1cmUgNTQ1LTg1MjIKLQkJCQlKQVBBTgotCi05Qy1DQS1EOSAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotOUNDQUQ5ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgT3UgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLTlDLUNELTgyICAgKGhleCkJCUNIRU5HIFVFSSBQUkVDSVNJT04gSU5EVVNUUlkgQ08uLExURAotOUNDRDgyICAgICAoYmFzZSAxNikJCUNIRU5HIFVFSSBQUkVDSVNJT04gSU5EVVNUUlkgQ08uLExURAotCQkJCU5vLjE4LCBDaHVuZyBTaGFuIFJkLiwgVHUtQ2hlbmcgSW5kdXN0cnkgUGFyayAKLQkJCQlUdSBDaGVuZyBDaXR5IFRhaXBlaSBIc2llbiAyMzY4MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotOUMtRDItNEIgICAoaGV4KQkJenRlIGNvcnBvcmF0aW9uCi05Q0QyNEIgICAgIChiYXNlIDE2KQkJenRlIGNvcnBvcmF0aW9uCi0JCQkJMTIvRi4sWnRlIFImRCBCdWlsZGluZyxLZWppbmFuIFJvYWQsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLTlDLURGLTAzICAgKGhleCkJCUhhcm1hbi9CZWNrZXIgQXV0b21vdGl2ZSBTeXN0ZW1zIEdtYkgKLTlDREYwMyAgICAgKGJhc2UgMTYpCQlIYXJtYW4vQmVja2VyIEF1dG9tb3RpdmUgU3lzdGVtcyBHbWJICi0JCQkJQmVja2VyLUf2cmluZy1TdHJh32UgMTYKLQkJCQlLYXJsc2JhZCBCYWRlbi1X/HJ0dGVtYmVyZyA3NjMwNwotCQkJCUdFUk1BTlkKLQotOUMtRTEtMEUgICAoaGV4KQkJTkNUZWNoIEx0ZAotOUNFMTBFICAgICAoYmFzZSAxNikJCU5DVGVjaCBMdGQKLQkJCQkyMC0yMiBCcmFpZCBSb2FkCi0JCQkJTW9ybmluZ3NpZGUKLQkJCQlFZGluYnVyZ2ggIEVIMTAgNkFECi0JCQkJVU5JVEVEIEtJTkdET00KLQotOUMtRUItRTggICAoaGV4KQkJQml6TGluayAoS3Vuc2hhbikgQ28uLEx0ZAotOUNFQkU4ICAgICAoYmFzZSAxNikJCUJpekxpbmsgKEt1bnNoYW4pIENvLixMdGQKLQkJCQlOby4xNjgsTmFuaGUgUm9hZCxFY29ub21pYyAmYW1wOyBUZWNobm9sb2dpY2FsIERldmVsb3BtZW50IFpvbmUsCi0JCQkJS3Vuc2hhbiBDaXR5IEppYW5nc3UgUHJvdmluY2UgMjE1MzAwCi0JCQkJQ0hJTkEKLQotOUMtRjYtMUEgICAoaGV4KQkJVVRDIEZpcmUgYW5kIFNlY3VyaXR5Ci05Q0Y2MUEgICAgIChiYXNlIDE2KQkJVVRDIEZpcmUgYW5kIFNlY3VyaXR5Ci0JCQkJMjk1NSBSZWQgSGlsbCBBdmUuCi0JCQkJQ29zdGEgTWVzYSBDQSA5MjYyNgotCQkJCVVOSVRFRCBTVEFURVMKLQotOUMtRjYtN0QgICAoaGV4KQkJUmljYXJkbyBQcmFndWUsIHMuci5vLgotOUNGNjdEICAgICAoYmFzZSAxNikJCVJpY2FyZG8gUHJhZ3VlLCBzLnIuby4KLQkJCQlUaGFtb3ZhIDEzCi0JCQkJUHJhaGEgOCAgMTg2IDAwCi0JCQkJQ1pFQ0ggUkVQVUJMSUMKLQotOUMtRjktMzggICAoaGV4KQkJQVJFVkEgTlAgR21iSAotOUNGOTM4ICAgICAoYmFzZSAxNikJCUFSRVZBIE5QIEdtYkgKLQkJCQlTZWxpZ2Vuc3RhZWR0ZXIgU3RyLiAxMDAKLQkJCQlEZXB0LiBQVENEVi1HCi0JCQkJS2FybHN0ZWluIEdlcm1hbnkgNjM3OTEKLQkJCQlHRVJNQU5ZCi0KLTlDLUZGLUJFICAgKGhleCkJCU9UU0wgSW5jLgotOUNGRkJFICAgICAoYmFzZSAxNikJCU9UU0wgSW5jLgotCQkJCUhBTlJPS1UgQmxkZy4gMkYsIDItMS0yCi0JCQkJS2FidWtpLUNobwotCQkJCVNoaW5qdWt1LWt1IFRva3lvIDE2MC0wMDIxCi0JCQkJSkFQQU4KLQotQTAtMDctOTggICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotQTAwNzk4ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUEwLTA3LUI2ICAgKGhleCkJCUFkdmFuY2VkIFRlY2huaWNhbCBTdXBwb3J0LCBJbmMuCi1BMDA3QjYgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgVGVjaG5pY2FsIFN1cHBvcnQsIEluYy4KLQkJCQkxMCBHcmFzc21lcmUgQXZlCi0JCQkJV2VzdCBIYXJ0Zm9yZCBDVCAwNjExMAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTAtMEItQkEgICAoaGV4KQkJU0FNU1VORyBFTEVDVFJPLU1FQ0hBTklDUwotQTAwQkJBICAgICAoYmFzZSAxNikJCVNBTVNVTkcgRUxFQ1RSTy1NRUNIQU5JQ1MKLQkJCQlTdXdvbi1TaSwgR3llb25nZ2lfRG8sIAotCQkJCVN1d29uICA0NDMtNzQzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUEwLTBDLUExICAgKGhleCkJCVNLVEIgIlNLaVQiCi1BMDBDQTEgICAgIChiYXNlIDE2KQkJU0tUQiAiU0tpVCIKLQkJCQkyMzkgQi4gU2Fkb3ZheWEgU3RyLgotCQkJCVNhcmF0b3YgcmVnaW9uIDQxMDAwNQotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1BMC0xMy0zQiAgIChoZXgpCQlDb3B5cmlnaHQgqSBIaVRpIERpZ2l0YWwsIEluYy4KLUEwMTMzQiAgICAgKGJhc2UgMTYpCQlDb3B5cmlnaHQgqSBIaVRpIERpZ2l0YWwsIEluYy4KLQkJCQk5Ri4sIE5vLjIyNSwgU2VjLiAzLCBCZWl4aW4gUmQuLCBYaW5kaWFuIERpc3QuLCAKLQkJCQlYaW5kaWFuIERpc3QuIE5ldyBUYWlwZWkgQ2l0eSAgMjMxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BMC0xNi01QyAgIChoZXgpCQlUYW5nb1RlYyBMdGQuCi1BMDE2NUMgICAgIChiYXNlIDE2KQkJVGFuZ29UZWMgTHRkLgotCQkJCU1hbGhhIFRlY2hub2xvZ3kgUGFyawotCQkJCUplcnVzYWxlbSAgOTY5NTEKLQkJCQlJU1JBRUwKLQotQTAtMTgtNTkgICAoaGV4KQkJU2hlbnpoZW4gWWlkYXNoaSBFbGVjdHJvbmljcyBDbyBMdGQKLUEwMTg1OSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBZaWRhc2hpIEVsZWN0cm9uaWNzIENvIEx0ZAotCQkJCUJ1aWxkaW5nIEExMCwgRnVrYW5nIEluZHVzdHJpYWwgWm9uZQotCQkJCUZ1bWluZyBWaWxsYWdlLEd1YW5sYW4gVG93biwgQmFvJ0FuCi0JCQkJU2hlbnpoZW4gIEd1YW5nZG9uZyAgNTE4MTEwCi0JCQkJQ0hJTkEKLQotQTAtMjEtQjcgICAoaGV4KQkJTkVUR0VBUgotQTAyMUI3ICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC0yMy0xQiAgIChoZXgpCQlUZWxlQ29tcCBSJmFtcDtEIENvcnAuCi1BMDIzMUIgICAgIChiYXNlIDE2KQkJVGVsZUNvbXAgUiZhbXA7RCBDb3JwLgotCQkJCTEwMiBTVyBPcmFuZ2UgQmxvc3NvbQotCQkJCUxha2UgQ2l0eSBGbG9yaWRhIDMyMDI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC0yRS1GMyAgIChoZXgpCQlVbml0ZWQgSW50ZWdyYXRlZCBTZXJ2aWNlcyBDby4sIExlZC4KLUEwMkVGMyAgICAgKGJhc2UgMTYpCQlVbml0ZWQgSW50ZWdyYXRlZCBTZXJ2aWNlcyBDby4sIExlZC4KLQkJCQk1RiBObyAzIExhbmUgNyBQYWNrYW8gUm9hZCBIc2ludGllbgotCQkJCVRhaXBlaSBIc2llbiAgMjMxNDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUEwLTM2LTlGICAgKGhleCkJCUludGVsIENvcnBvcmF0aW9uCi1BMDM2OUYgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRpb24KLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLUEwLTM2LUZBICAgKGhleCkJCUV0dHVzIFJlc2VhcmNoIExMQwotQTAzNkZBICAgICAoYmFzZSAxNikJCUV0dHVzIFJlc2VhcmNoIExMQwotCQkJCTEwNDMgTiBTaG9yZWxpbmUgQmx2ZAotCQkJCVN1aXRlIDEwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUEwLTNBLTc1ICAgKGhleCkJCVBTUyBCZWxnaXVtIE4uVi4KLUEwM0E3NSAgICAgKGJhc2UgMTYpCQlQU1MgQmVsZ2l1bSBOLlYuCi0JCQkJSG9vZ3ZlbGQgNTAKLQkJCQlEZW5kZXJtb25kZSAgOTIwMAotCQkJCUJFTEdJVU0KLQotQTAtNDAtMjUgICAoaGV4KQkJQWN0aW9uY2FibGUsIEluYy4KLUEwNDAyNSAgICAgKGJhc2UgMTYpCQlBY3Rpb25jYWJsZSwgSW5jLgotCQkJCTk5OCBXZXN0bHlubiBXYXkKLQkJCQlTdWl0ZSA0Ci0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC00MC00MSAgIChoZXgpCQlTQU1XT05GQSBDby4sTHRkLgotQTA0MDQxICAgICAoYmFzZSAxNikJCVNBTVdPTkZBIENvLixMdGQuCi0JCQkJNDcwLTUsIE1vb25oeXVuMi1Eb25nCi0JCQkJTmFtLUd1LCAKLQkJCQlCdXNhbiAgNjA4LTA0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BMC00MS1BNyAgIChoZXgpCQlOTCBNaW5pc3RyeSBvZiBEZWZlbnNlCi1BMDQxQTcgICAgIChiYXNlIDE2KQkJTkwgTWluaXN0cnkgb2YgRGVmZW5zZQotCQkJCVBPIEJveCAxMDAwMAotCQkJCU5vb3JkIEhvbGxhbmQgMTc4MCBDQSBEZW4gSGVsZGVyCi0JCQkJTkVUSEVSTEFORFMKLQotQTAtNDItM0YgICAoaGV4KQkJVHlhbiBDb21wdXRlciBDb3JwCi1BMDQyM0YgICAgIChiYXNlIDE2KQkJVHlhbiBDb21wdXRlciBDb3JwCi0JCQkJMzI4OCBMYXJ1cmVsdmlldyBDb3VydAotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUEwLTRDLUMxICAgKGhleCkJCUhlbGl4dGVjaCBDb3JwLgotQTA0Q0MxICAgICAoYmFzZSAxNikJCUhlbGl4dGVjaCBDb3JwLgotCQkJCTZGIExpb25zIGJsZGcuLCAxNjAtMiBHYW5nbmFtLWRhZXJvLAotCQkJCVNlb2Noby1ndQotCQkJCVNlb3VsICAxMzctODg4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUEwLTRFLTA0ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1BMDRFMDQgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLUEwLTU1LURFICAgKGhleCkJCVBhY2UgcGxjCi1BMDU1REUgICAgIChiYXNlIDE2KQkJUGFjZSBwbGMKLQkJCQlTYWx0cyBNaWxsCi0JCQkJVmljdG9yaWEgUm9hZAotCQkJCUJyYWRmb3JkIFdlc3QgWW9ya3NoaXJlIEJEMTggM0xGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQTAtNTktM0EgICAoaGV4KQkJVi5ELlMuIFZpZGVvIERpc3BsYXkgU3lzdGVtcyBzcmwKLUEwNTkzQSAgICAgKGJhc2UgMTYpCQlWLkQuUy4gVmlkZW8gRGlzcGxheSBTeXN0ZW1zIHNybAotCQkJCVZpYSBEZWwgUGFudGFubyA3MQotCQkJCVNDQU5ESUNDSSBGSSA1MDAxOAotCQkJCUlUQUxZCi0KLUEwLTVBLUE0ICAgKGhleCkJCUdyYW5kIFByb2R1Y3RzIE5ldmFkYSwgSW5jLgotQTA1QUE0ICAgICAoYmFzZSAxNikJCUdyYW5kIFByb2R1Y3RzIE5ldmFkYSwgSW5jLgotCQkJCTc1MSBQaWxvdCBSZC4KLQkJCQlMYXMgVmVnYXMgTmV2YWRhIDg5MTE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC01RC1DMSAgIChoZXgpCQlUTUNUIENvLiwgTFRELgotQTA1REMxICAgICAoYmFzZSAxNikJCVRNQ1QgQ28uLCBMVEQuCi0JCQkJNUYtNTYxLCAjMTktMTEgU2FuQ2hvbmcgUmQuCi0JCQkJTmFuR2FuZyBEaXN0cmljdC4KLQkJCQlUYWlwZWkgIDExNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQTAtNUQtRTcgICAoaGV4KQkJRElSRUNUViwgSW5jLgotQTA1REU3ICAgICAoYmFzZSAxNikJCURJUkVDVFYsIEluYy4KLQkJCQkyMjMwIEUuIEltcGVyaWFsIEh3eQotCQkJCUVsIFNlZ3VuZG8gQ0EgOTAyNDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUEwLTVFLTZCICAgKGhleCkJCU1FTFBFUiBDby4sIEx0ZC4KLUEwNUU2QiAgICAgKGJhc2UgMTYpCQlNRUxQRVIgQ28uLCBMdGQuCi0JCQkJMjA3LCAybmQgRkwuLFdvbmh5byBCbGRnLiwxMzY1LTIyCi0JCQkJU2VvY2hvLWRvbmcsIFNlb2Noby1ndQotCQkJCVNFT1VMICAxMzctODYzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUEwLTY5LTg2ICAgKGhleCkJCVdlbGxhdiBUZWNobm9sb2dpZXMgTHRkCi1BMDY5ODYgICAgIChiYXNlIDE2KQkJV2VsbGF2IFRlY2hub2xvZ2llcyBMdGQKLQkJCQkxNUYgRGVzYXkgQnVpbGRpbmcKLQkJCQlOby4xMiBZdW5zaGFuIFdlc3QgQXZlLgotCQkJCUh1aXpob3UgR3Vhbmdkb25nIDUxNjAwMwotCQkJCUNISU5BCi0KLUEwLTZBLTAwICAgKGhleCkJCVZlcmlsaW5rIENvcnBvcmF0aW9uCi1BMDZBMDAgICAgIChiYXNlIDE2KQkJVmVyaWxpbmsgQ29ycG9yYXRpb24KLQkJCQkxMjcgSmV0cGxleCBDaXJjbGUKLQkJCQlNYWRpc29uIEFMIDM1NzU4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC02Qy1FQyAgIChoZXgpCQlSSU0KLUEwNkNFQyAgICAgKGJhc2UgMTYpCQlSSU0KLQkJCQkyOTUgUGhpbGxpcCBTdHJlZXQKLQkJCQlXYXRlcmxvbyBPbnRhcmlvIE4yTCA1UjkKLQkJCQlDQU5BREEKLQotQTAtNkQtMDkgICAoaGV4KQkJSW50ZWxjYW4gVGVjaG5vc3lzdGVtcyBJbmMuCi1BMDZEMDkgICAgIChiYXNlIDE2KQkJSW50ZWxjYW4gVGVjaG5vc3lzdGVtcyBJbmMuCi0JCQkJNTQ5MCAgQm91bCBUaGltZW5zCi0JCQkJU3VpdGUgMjUwCi0JCQkJU2FpbnQtTGF1cmVudCBRdWViZWMgSDRSMks5Ci0JCQkJQ0FOQURBCi0KLUEwLTZFLTUwICAgKGhleCkJCU5hbm90ZWsgRWxla3Ryb25payBTaXN0ZW1sZXIgTHRkLiBTdGkuCi1BMDZFNTAgICAgIChiYXNlIDE2KQkJTmFub3RlayBFbGVrdHJvbmlrIFNpc3RlbWxlciBMdGQuIFN0aS4KLQkJCQlJdmVkaWsgT3JnYW5pemUgU2FuYXlpCi0JCQkJNTU5LiBTb2thaywgTm86NTYsIFllbmltYWhhbGxlCi0JCQkJQW5rYXJhICAwNjM3MAotCQkJCVRVUktFWQotCi1BMC03MS1BOSAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotQTA3MUE5ICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi1BMC03My0zMiAgIChoZXgpCQlDYXNobWFzdGVyIEludGVybmF0aW9uYWwgTGltaXRlZAotQTA3MzMyICAgICAoYmFzZSAxNikJCUNhc2htYXN0ZXIgSW50ZXJuYXRpb25hbCBMaW1pdGVkCi0JCQkJRmFpcnlraXJrIFJvYWQKLQkJCQlSb3N5dGggRmlmZSBLWTExIDJRUQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUEwLTc1LTkxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotQTA3NTkxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BMC03OC1CQSAgIChoZXgpCQlQYW50ZWNoIENvLiwgTHRkLgotQTA3OEJBICAgICAoYmFzZSAxNikJCVBhbnRlY2ggQ28uLCBMdGQuCi0JCQkJMTEwLTEgT25namVvbmctUmksIFRvbmdqaW4tRXVwCi0JCQkJR2ltcG8tU2kgR3lvdW5nZ2ktRG8gNDE1LTg2NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BMC04Mi1DNyAgIChoZXgpCQlQLlQuSSBDby4sTFRECi1BMDgyQzcgICAgIChiYXNlIDE2KQkJUC5ULkkgQ28uLExURAotCQkJCTEtNS0xLFRzdXJ1bWlkYW4KLQkJCQlLb3JpeWFtYS1zaGkgRnVrdXNoaW1hIDk2My04ODYxCi0JCQkJSkFQQU4KLQotQTAtODYtRUMgICAoaGV4KQkJU0FFSEFOIEhJVEVDIENvLiwgTHRkCi1BMDg2RUMgICAgIChiYXNlIDE2KQkJU0FFSEFOIEhJVEVDIENvLiwgTHRkCi0JCQkJMTYtMywgWW9uZ3N1LXJpLCBDaG93b2wtZXVwCi0JCQkJR3dhbmdqdS1zaSwgR3llb25nZ2ktZG8gIDQ2NC04NjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTAtODgtQjQgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi1BMDg4QjQgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi1BMC04Qy05QiAgIChoZXgpCQlYdHJlbWUgVGVjaG5vbG9naWVzIENvcnAKLUEwOEM5QiAgICAgKGJhc2UgMTYpCQlYdHJlbWUgVGVjaG5vbG9naWVzIENvcnAKLQkJCQkyMDAgNDYxNiBWYWxpYW50IERyIE5XCi0JCQkJQ2FsZ2FyeSBBQiBUM0EwWDkKLQkJCQlDQU5BREEKLQotQTAtOTAtREUgICAoaGV4KQkJVkVFRElNUyxMTEMKLUEwOTBERSAgICAgKGJhc2UgMTYpCQlWRUVESU1TLExMQwotCQkJCTQ5IE4uIEZlZGVyYWwgSGlnaHdheSAjMzk3Ci0JCQkJUG9tcGFubyBCZWFjaCBGbG9yaWRhIDMzMDYyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1BMC05OC0wNSAgIChoZXgpCQlPcGVuVm94IENvbW11bmljYXRpb24gQ28gTHRkCi1BMDk4MDUgICAgIChiYXNlIDE2KQkJT3BlblZveCBDb21tdW5pY2F0aW9uIENvIEx0ZAotCQkJCUYyLEJ1aWxkaW5nIE5vLjE0LFNoYW5nc2hhIFNjaWVuY2UgJgotCQkJCVRlY2hub2xvZ3kgUGFyayxOby45MjgzLEJpbmhlIFJvYWQKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDMxCi0JCQkJQ0hJTkEKLQotQTAtOTgtRUQgICAoaGV4KQkJU2hhbmRvbmcgSW50ZWxsaWdlbnQgT3B0aWNhbCBDb21tdW5pY2F0aW9uIERldmVsb3BtZW50IENvLiwgTHRkLgotQTA5OEVEICAgICAoYmFzZSAxNikJCVNoYW5kb25nIEludGVsbGlnZW50IE9wdGljYWwgQ29tbXVuaWNhdGlvbiBEZXZlbG9wbWVudCBDby4sIEx0ZC4KLQkJCQlOby4xNDkgWWluZ2N1aSBSb2FkLFRvcmNoIFRvd24sQWR2YW5jZWQgVGVjaG5pcXVlIERldmVsb3BtZW50IEFyZWEKLQkJCQlKaW5pbmcgU2hhbmRvbmcgMjcyMDIzCi0JCQkJQ0hJTkEKLQotQTAtOUEtNUEgICAoaGV4KQkJVGltZSBEb21haW4KLUEwOUE1QSAgICAgKGJhc2UgMTYpCQlUaW1lIERvbWFpbgotCQkJCTMzMCBXeW5uIERyaXZlCi0JCQkJU3VpdGUgMzAwCi0JCQkJSHVudHN2aWxsZSBBTCAzNTgwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotQTAtQTctNjMgICAoaGV4KQkJUG9seXRyb24gVmVydHJpZWIgR21iSAotQTBBNzYzICAgICAoYmFzZSAxNikJCVBvbHl0cm9uIFZlcnRyaWViIEdtYkgKLQkJCQlMYW5nd2llc2Vud2VnIDY0LTcxCi0JCQkJQmFkIFdpbGRiYWQgQmFkZW4tV3VlcnR0ZW1iZXJnIDc1MzIzCi0JCQkJR0VSTUFOWQotCi1BMC1BQS1GRCAgIChoZXgpCQlFcmFUaGluayBUZWNobm9sb2dpZXMgQ29ycC4KLUEwQUFGRCAgICAgKGJhc2UgMTYpCQlFcmFUaGluayBUZWNobm9sb2dpZXMgQ29ycC4KLQkJCQkyODkgQmlzaGVuZyBSb2FkIEJ1aWxkaW5nIDQsRmxvb3IgNCAKLQkJCQlTaGFuZ2hhaSAgMjAxMjA0Ci0JCQkJQ0hJTkEKLQotQTAtQjMtQ0MgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1BMEIzQ0MgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YSA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTAtQjUtREEgICAoaGV4KQkJSG9uZ0tvbmcgVEhURiBDby4sIEx0ZAotQTBCNURBICAgICAoYmFzZSAxNikJCUhvbmdLb25nIFRIVEYgQ28uLCBMdGQKLQkJCQkyRixTZWN0b3IgQyBvZiBUc2luZ2h1YSBVbml2ZXJzaXR5IEFjYWRlbXksIAotCQkJCUhpLVRlY2ggUGFyayhTb3V0aCksTmFuc2hhbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1BMC1CNi02MiAgIChoZXgpCQlBY3V0dmlzdGEgSW5ub3ZhdGlvbiBDby4sIEx0ZC4KLUEwQjY2MiAgICAgKGJhc2UgMTYpCQlBY3V0dmlzdGEgSW5ub3ZhdGlvbiBDby4sIEx0ZC4KLQkJCQkyRi0xLCBOby4gMjAgQWxsZXkgMSwgTGFuZSA3NjgsIFNlYy4gNAotCQkJCVBhLVRlaCBSZC4sIAotCQkJCVRhaXBlaSBDaXR5ICAxMTU3NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQTAtQjktRUQgICAoaGV4KQkJU2t5dGFwCi1BMEI5RUQgICAgIChiYXNlIDE2KQkJU2t5dGFwCi0JCQkJNzEwIDJuZCBBdmUgU3VpdGUgMTEzMAotCQkJCVNlYXR0bGUgV0EgOTgxMDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUEwLUJGLUE1ICAgKGhleCkJCUNPUkVTWVMKLUEwQkZBNSAgICAgKGJhc2UgMTYpCQlDT1JFU1lTCi0JCQkJMjY3LTEgTm9uaHl1bmRvbmcgR2FuZ25hbWd1Ci0JCQkJSksgQmxkLiwgIzMwMQotCQkJCVNlb3VsICAxMzUtODMzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUEwLUMzLURFICAgKGhleCkJCSBUcml0b24gRWxlY3Ryb25pYyBTeXN0ZW1zIEx0ZC4KLUEwQzNERSAgICAgKGJhc2UgMTYpCQkgVHJpdG9uIEVsZWN0cm9uaWMgU3lzdGVtcyBMdGQuCi0JCQkJNjIwMDYzLCBFa2F0ZXJpbmJ1cmcsIFAvTyBib3ggNTIyCi0JCQkJRWthdGVyaW5idXJnIFN2ZXJkbG92c2theWEgb2JsLiA2MjAwNjMKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotQTAtQ0YtNUIgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQTBDRjVCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUEwLURDLTA0ICAgKGhleCkJCUJlY2tlci1BbnRyaWViZSBHbWJICi1BMERDMDQgICAgIChiYXNlIDE2KQkJQmVja2VyLUFudHJpZWJlIEdtYkgKLQkJCQlGcmllZHJpY2gtRWJlcnQtU3QgcmHvv71lIDIgLSA0Ci0JCQkJMzU3NjQgU2lubiBIZXNzZW4gREU4MTExNzc5NzcKLQkJCQlHRVJNQU5ZCi0KLUEwLURELUU1ICAgKGhleCkJCVNIQVJQIENPUlBPUkFUSU9OCi1BMERERTUgICAgIChiYXNlIDE2KQkJU0hBUlAgQ09SUE9SQVRJT04KLQkJCQkyMi0yMixOYWdhaWtlLWNobywKLQkJCQlBYmVuby1LVSwKLQkJCQlPc2FrYSwgIDU0NS04NTIyLAotCQkJCUpBUEFOCi0KLUEwLURFLTA1ICAgKGhleCkJCUpTQyAiSXJiaXMtVCIKLUEwREUwNSAgICAgKGJhc2UgMTYpCQlKU0MgIklyYmlzLVQiCi0JCQkJNSwgTGl0ZXluYXlhIHN0cmVldAotCQkJCVR1bGEgIDMwMDAwMgotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1BMC1FMi0wMSAgIChoZXgpCQlBVlRyYWNlIEx0ZC4oQ2hpbmEpCi1BMEUyMDEgICAgIChiYXNlIDE2KQkJQVZUcmFjZSBMdGQuKENoaW5hKQotCQkJCVJNNzA0LCBEaXN0cmljdCBCMSwgT3JpZ2luYWxpdHkgQnVpbGRpbmcsIE5vLjE2MiBLZVh1ZSBBdmVudWUgU2NpZW5jZSBUb3duLEdVQU5HWkhPVSxDSElOQSAKLQkJCQlHVUFOR1pIT1UgR1VBTkdET05HIDUxMDYxMQotCQkJCUNISU5BCi0KLUEwLUUyLTk1ICAgKGhleCkJCURBVCBTeXN0ZW0gQ28uLEx0ZAotQTBFMjk1ICAgICAoYmFzZSAxNikJCURBVCBTeXN0ZW0gQ28uLEx0ZAotCQkJCUd1biBTYW4gRnJlZSBUcmFkZSBBcmVhIDUxMS0xICwKLQkJCQlPc2lrIGRvIGRvbmcgR3Vuc2FuIHNpIEplb24gQnVrIAotCQkJCTU3My01NDAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTAtRTktREIgICAoaGV4KQkJTmluZ2JvIEZyZWVXaW5ncyBUZWNobm9sb2dpZXMgQ28uLEx0ZAotQTBFOURCICAgICAoYmFzZSAxNikJCU5pbmdibyBGcmVlV2luZ3MgVGVjaG5vbG9naWVzIENvLixMdGQKLQkJCQlSb29tIDExMDctMTEwOCwgTm8gMjk4IFh1ZVNoaSBSb2FkIFlpbnpob3UgRGlzdHJpY3QgTmluZ2JvLCAKLQkJCQlOaW5nYm8gWmhlamlhbmcgMzE1MDAwCi0JCQkJQ0hJTkEKLQotQTAtRUYtODQgICAoaGV4KQkJWkhVSEFJIFNFSU5FIFRlY2hub2xvZ3kgQ08uLCBMVEQuCi1BMEVGODQgICAgIChiYXNlIDE2KQkJWkhVSEFJIFNFSU5FIFRlY2hub2xvZ3kgQ08uLCBMVEQuCi0JCQkJNnRoIGZsb29yLDR0aCBidWlsZGluZywgTk8uNjMsTWluZ3podWJlaSBSb2FkLCBYaWFuZ3pob3UgRGlzdHJpY3QsCi0JCQkJWmh1SGFpIEd1YW5nRG9uZyA1MTkwNzUKLQkJCQlDSElOQQotCi1BMC1GMi0xNyAgIChoZXgpCQlHRSBNZWRpY2FsIFN5c3RlbShDaGluYSkgQ28uLCBMdGQuIAotQTBGMjE3ICAgICAoYmFzZSAxNikJCUdFIE1lZGljYWwgU3lzdGVtKENoaW5hKSBDby4sIEx0ZC4gCi0JCQkJTm8uMTksIENoYW5nSmlhbmcgUm9hZCAKLQkJCQlXdXhpIEppYW5nc3UgMjE0MDI4IAotCQkJCUNISU5BCi0KLUEwLUYzLUMxICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotQTBGM0MxICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCUJ1aWxkaW5nIDI0IChmbG9vcnMgMSwzLDQsNSkgYW5kIDI4IChmbG9vcnMxLTQpICBTaGVubmFuIFJkLCAKLQkJCQlDZW50cmFsIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgUGFyawotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyBQcm92aW5jZSA1MTgwNTcKLQkJCQlDSElOQQotCi1BMC1GMy1FNCAgIChoZXgpCQlBbGNhdGVsIC1MdWNlbnQgSVBECi1BMEYzRTQgICAgIChiYXNlIDE2KQkJQWxjYXRlbCAtTHVjZW50IElQRAotCQkJCTYwMCBNYXJjaCBEcgotCQkJCUthbmF0YSBPbiBLMksgMkUxCi0JCQkJQ0FOQURBCi0KLUEwLUY0LTE5ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1BMEY0MTkgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSAgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLUEwLUY0LTUwICAgKGhleCkJCUhUQyBDb3Jwb3JhdGlvbgotQTBGNDUwICAgICAoYmFzZSAxNikJCUhUQyBDb3Jwb3JhdGlvbgotCQkJCU5vLiAyMywgWGluZ2h1YSBSZC4sIFRhb3l1YW4gQ2l0eQotCQkJCVRhb3l1YW4gQ291bnR5IFRhaXdhbiAzMzAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUE0LTAxLTMwICAgKGhleCkJCUFCSXN5c3RlbXMgQ28uLCBMVEQKLUE0MDEzMCAgICAgKGJhc2UgMTYpCQlBQklzeXN0ZW1zIENvLiwgTFRECi0JCQkJMzA4IEFDRSBUZWNobm8gVG93ZXI4IDE5MS03IEd1cm8tZG9uZwotCQkJCUd1cm8tZ3UKLQkJCQlTZW91bCAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTQtMEMtQzMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQTQwQ0MzICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtMTMtNEUgICAoaGV4KQkJTHV4dWwgCi1BNDEzNEUgICAgIChiYXNlIDE2KQkJTHV4dWwgCi0JCQkJMTQyMDMgTWludXRlbWFuIERyaXZlCi0JCQkJU3VpdGUgMjAxCi0JCQkJRHJhcGVyIFVUIDg0MDIwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC0xOC03NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1BNDE4NzUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtMUItQzAgICAoaGV4KQkJRmFzdGVjIEltYWdpbmcgQ29ycG9yYXRpb24KLUE0MUJDMCAgICAgKGJhc2UgMTYpCQlGYXN0ZWMgSW1hZ2luZyBDb3Jwb3JhdGlvbgotCQkJCTE3MTUwIFZpYSBEZWwgQ2FtcG8KLQkJCQlTdWl0ZSAzMDEKLQkJCQlTYW4gRGllZ28gQ2FsaWZvcm5pYSA5MjEyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtMjEtOEEgICAoaGV4KQkJTm9ydGVsIE5ldHdvcmtzCi1BNDIxOEEgICAgIChiYXNlIDE2KQkJTm9ydGVsIE5ldHdvcmtzCi0JCQkJQ0FSUkVURVJBIEJBU0UgQUVSRUEgIyA1ODUwCi0JCQkJWmFwb3BhbiBKYWxpc2NvIDQ0MTMwCi0JCQkJTUVYSUNPCi0KLUE0LTI0LUIzICAgKGhleCkJCUZsYXRGcm9nIExhYm9yYXRvcmllcyBBQgotQTQyNEIzICAgICAoYmFzZSAxNikJCUZsYXRGcm9nIExhYm9yYXRvcmllcyBBQgotCQkJCU1hZ2lzdHJhdHN25GdlbiAxMAotCQkJCUx1bmQgU2thbmUgMjI2NDMKLQkJCQlTV0VERU4KLQotQTQtMjktQjcgICAoaGV4KQkJYmx1ZXNreQotQTQyOUI3ICAgICAoYmFzZSAxNikJCWJsdWVza3kKLQkJCQlSbTE0MTAgVG93ZXIgQSxDaGVuZ2ppYW4gcGxhemEsTk8uMTggYmVpdGFpcGluZ3podWFuZyBSb2FkLEhhaWRpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDg4Ci0JCQkJQ0hJTkEKLQotQTQtMzMtRDEgICAoaGV4KQkJRmlicmxpbmsgQ29tbXVuaWNhdGlvbnMgQ28uLEx0ZC4KLUE0MzNEMSAgICAgKGJhc2UgMTYpCQlGaWJybGluayBDb21tdW5pY2F0aW9ucyBDby4sTHRkLgotCQkJCTI4RiBBZ2VzIFdlYWx0aCBXb3JsZCwgTm8uMSBIYW5nZmVuZyBSb2FkCi0JCQkJRmVuZ3RhaSBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDA3MAotCQkJCUNISU5BCi0KLUE0LTM4LUZDICAgKGhleCkJCVBsYXN0aWMgTG9naWMKLUE0MzhGQyAgICAgKGJhc2UgMTYpCQlQbGFzdGljIExvZ2ljCi0JCQkJNjUwIENhc3RybyBTdC4sIFN1aXRlIDUwMAotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LTQ2LUZBICAgKGhleCkJCUFtVFJBTiBWaWRlbyBDb3Jwb3JhdGlvbgotQTQ0NkZBICAgICAoYmFzZSAxNikJCUFtVFJBTiBWaWRlbyBDb3Jwb3JhdGlvbgotCQkJCTkgR29kZGFyZAotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtNEItMTUgICAoaGV4KQkJU3VuIEN1cGlkIFRlY2hub2xvZ3kgKEhLKSBMVEQKLUE0NEIxNSAgICAgKGJhc2UgMTYpCQlTdW4gQ3VwaWQgVGVjaG5vbG9neSAoSEspIExURAotCQkJCVJvb20gMTIwMS0zLCAxMi9GLiwgVG93ZXIgNgotCQkJCUNoaW5hIEhvbmcgS29uZyBDaXR5Ci0JCQkJVHNpbSBTaGEgVHN1aSAgCi0JCQkJSE9ORyBLT05HCi0KLUE0LTRDLTExICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUE0NEMxMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC01MC01NSAgIChoZXgpCQlidXN3YXJlLmRlCi1BNDUwNTUgICAgIChiYXNlIDE2KQkJYnVzd2FyZS5kZQotCQkJCUxvZXNzbml0emdydW5kc3RyYXNzZSAxMTVhCi0JCQkJTW9yaXR6YnVyZyBTYXhvbnkgMDE0NjgKLQkJCQlHRVJNQU5ZCi0KLUE0LTUyLTZGICAgKGhleCkJCUFEQiBCcm9hZGJhbmQgSXRhbGlhCi1BNDUyNkYgICAgIChiYXNlIDE2KQkJQURCIEJyb2FkYmFuZCBJdGFsaWEKLQkJCQlWSUFMRSBTQVJDQSAzMzYKLQkJCQlNSUxBTk8gIElUQUxZICAyMDEyNgotCQkJCUlUQUxZCi0KLUE0LTU2LTFCICAgKGhleCkJCU1DT1QgQ29ycG9yYXRpb24KLUE0NTYxQiAgICAgKGJhc2UgMTYpCQlNQ09UIENvcnBvcmF0aW9uCi0JCQkJWW9nb2hpZ2FzaGkgMS01LTEyCi0JCQkJTWF0c3V5YW1hIGNpdHkgRWhpbWUgcHJlZmVjdHVyZSA3OTAtMDA0NAotCQkJCUpBUEFOCi0KLUE0LTU2LTMwICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUE0NTYzMCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC01QS0xQyAgIChoZXgpCQlzbWFydC1lbGVjdHJvbmljIEdtYkgKLUE0NUExQyAgICAgKGJhc2UgMTYpCQlzbWFydC1lbGVjdHJvbmljIEdtYkgKLQkJCQlJbmR1c3RyaWVzdHJhc3NlIDI5Ci0JCQkJU3QuIEdlb3JnZW4gQmFkZW4tV3VlcnR0ZW1iZXJnIDc4MTIyCi0JCQkJR0VSTUFOWQotCi1BNC01Qy0yNyAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLUE0NUMyNyAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi1BNC02Ny0wNiAgIChoZXgpCQlBcHBsZSwgSW5jLgotQTQ2NzA2ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC03OS1FNCAgIChoZXgpCQlLTElORk8gQ29ycAotQTQ3OUU0ICAgICAoYmFzZSAxNikJCUtMSU5GTyBDb3JwCi0JCQkJMzAxIDkyMyB3b2xweXVuZy1kb25nCi0JCQkJc2VvIGd1Ci0JCQkJRGFlamVvbiAgMzAyLTg1MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BNC03QS1BNCAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotQTQ3QUE0ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtN0MtMTQgICAoaGV4KQkJQ2hhcmdlU3Rvcm0gQUIKLUE0N0MxNCAgICAgKGJhc2UgMTYpCQlDaGFyZ2VTdG9ybSBBQgotCQkJCUxheGhvbG1zdG9yZ2V0IDMKLQkJCQlOb3Jya++/vXBpbmcgIDYwMjIxCi0JCQkJU1dFREVOCi0KLUE0LTdDLTFGICAgKGhleCkJCUdsb2JhbCBNaWNyb3dhdmUgU3lzdGVtcyBJbmMuCi1BNDdDMUYgICAgIChiYXNlIDE2KQkJR2xvYmFsIE1pY3Jvd2F2ZSBTeXN0ZW1zIEluYy4KLQkJCQkxOTE2IFBhbG9tYXIgT2FrcyBXYXksIFN1aXRlIDEwMAotCQkJCUNhcmxzYmFkIENBIDkyMDA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC04NS02QiAgIChoZXgpCQlRIEVsZWN0cm9uaWNzIEx0ZAotQTQ4NTZCICAgICAoYmFzZSAxNikJCVEgRWxlY3Ryb25pY3MgTHRkCi0JCQkJQmVjayBIb3VzZSwgSGF3a3N3b3J0aCBSb2FkCi0JCQkJSG9yc2ZvcnRoCi0JCQkJTGVlZHMgV2VzdCBZb3Jrc2hpcmUgTFMxOCA0SlAKLQkJCQlVTklURUQgS0lOR0RPTQotCi1BNC05MC0wNSAgIChoZXgpCQlDSElOQSBHUkVBVFdBTEwgQ09NUFVURVIgU0hFTlpIRU4gQ08uLExURAotQTQ5MDA1ICAgICAoYmFzZSAxNikJCUNISU5BIEdSRUFUV0FMTCBDT01QVVRFUiBTSEVOWkhFTiBDTy4sTFRECi0JCQkJNDA5LDIjLEdyZWF0d2FsbCBCbGRnLE5vLjMgS2VmYSBSb2FkLFNjaWVuY2UgJiBJbmR1c3RyeSBQYXJrLE5hbnNoYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA3Ci0JCQkJQ0hJTkEKLQotQTQtOTMtNEMgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQTQ5MzRDICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LTk3LUJCICAgKGhleCkJCUhpdGFjaGkgSW5kdXN0cmlhbCBFcXVpcG1lbnQgU3lzdGVtcyBDby4sTHRkCi1BNDk3QkIgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBJbmR1c3RyaWFsIEVxdWlwbWVudCBTeXN0ZW1zIENvLixMdGQKLQkJCQkzLCBLYW5kYSBOZXJpYmVpLWNobwotCQkJCUFLUyBCdWlsZGluZwotCQkJCUNoaXlvZGEta3UgVG9reW8gMTAxLTAwMjIKLQkJCQlKQVBBTgotCi1BNC05OS00NyAgIChoZXgpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi1BNDk5NDcgICAgIChiYXNlIDE2KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCAKLQkJCQlUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUE0LTk5LTgxICAgKGhleCkJCUZ1SmlhbiBFbGl0ZSBQb3dlciBUZWNoIENPLixMVEQuCi1BNDk5ODEgICAgIChiYXNlIDE2KQkJRnVKaWFuIEVsaXRlIFBvd2VyIFRlY2ggQ08uLExURC4KLQkJCQk4dGggRmxvb3KjrDU2IEd1YW5SaSBSb2FkIAotCQkJCVNvZnR3YXJlIFNxdWFyZSAoUGhhc2UgVHdvKSwgU2ltaW5nIERpc3RyaWN0IAotCQkJCVhpYW1lbiBGdWppYW4gMzYxMDA5Ci0JCQkJQ0hJTkEKLQotQTQtOUItMTMgICAoaGV4KQkJQnVycm91Z2hzIFBheW1lbnQgU3lzdGVtcywgSW5jLgotQTQ5QjEzICAgICAoYmFzZSAxNikJCUJ1cnJvdWdocyBQYXltZW50IFN5c3RlbXMsIEluYy4KLQkJCQk0MTEwMCBQbHltb3V0aCBSb2FkCi0JCQkJUGx5bW91dGggTWljaGlnYW4gNDgxNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LUEyLTRBICAgKGhleCkJCUNpc2NvIFNQVlRHCi1BNEEyNEEgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQYXJrd2F5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtQTgtMEYgICAoaGV4KQkJU2hlbnpoZW4gQ29zaGlwIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotQTRBODBGICAgICAoYmFzZSAxNikJCVNoZW56aGVuIENvc2hpcCBFbGVjdHJvbmljcyBDby4sIEx0ZC4KLQkJCQlSYWluYm93IEJsZGcuLCBOb3J0aCwgSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1BNC1BRC0wMCAgIChoZXgpCQlSYWdzZGFsZSBUZWNobm9sb2d5Ci1BNEFEMDAgICAgIChiYXNlIDE2KQkJUmFnc2RhbGUgVGVjaG5vbG9neQotCQkJCTUwNSBFY2hvIExhbmUKLQkJCQlQTyBCb3ggMTIwNTA3Ci0JCQkJQmlnIEJlYXIgTGFrZSBDQSA5MjMxNQotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtQUQtQjggICAoaGV4KQkJVml0ZWMgR3JvdXAsIENhbWVyYSBEeW5hbWljcyBMdGQKLUE0QURCOCAgICAgKGJhc2UgMTYpCQlWaXRlYyBHcm91cCwgQ2FtZXJhIER5bmFtaWNzIEx0ZAotCQkJCVdpbGxpYW0gVmludGVuIEJ1aWxkaW5nCi0JCQkJV2VzdGVybiBXYXkKLQkJCQlCdXJ5IFN0IEVkbXVuZHMgU3VmZm9sayBJUDMzIDNUQgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUE0LUFFLTlBICAgKGhleCkJCU1hZXN0cm8gV2lyZWxlc3MgU29sdXRpb25zIGx0ZC4KLUE0QUU5QSAgICAgKGJhc2UgMTYpCQlNYWVzdHJvIFdpcmVsZXNzIFNvbHV0aW9ucyBsdGQuCi0JCQkJMzYvRgotCQkJCTExOCBDb25uYXVnaHQgUm9hZCBXZXN0Ci0JCQkJU2hldW5nIFdhbiAgCi0JCQkJSE9ORyBLT05HCi0KLUE0LUIxLTIxICAgKGhleCkJCUFyYW50aWEgMjAxMCBTLkwuCi1BNEIxMjEgICAgIChiYXNlIDE2KQkJQXJhbnRpYSAyMDEwIFMuTC4KLQkJCQlWb2x0YSBkbyBDYXN0cm8gcy9uCi0JCQkJU2FudGlhZ28gZGUgQ29tcG9zdGVsYSBBIENvcnXxYSAxNTcwNgotCQkJCVNQQUlOCi0KLUE0LUIxLTk3ICAgKGhleCkJCUFwcGxlLCBJbmMuCi1BNEIxOTcgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gY2EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE0LUIxLUU5ICAgKGhleCkJCVRlY2huaWNvbG9yCi1BNEIxRTkgICAgIChiYXNlIDE2KQkJVGVjaG5pY29sb3IKLQkJCQlQcmlucyBCb3VkZXdpam5sYWFuIDQ3Ci0JCQkJRWRlZ2VtIEJlbGdpdW0gIEItMjY1MAotCQkJCUJFTEdJVU0KLQotQTQtQjEtRUUgICAoaGV4KQkJSC4gWkFOREVSIEdtYkggJiBDby4gS0cKLUE0QjFFRSAgICAgKGJhc2UgMTYpCQlILiBaQU5ERVIgR21iSCAmIENvLiBLRwotCQkJCUFtIEd1dCBXb2xmIDE1Ci0JCQkJQWFjaGVuICA1MjA3MAotCQkJCUdFUk1BTlkKLQotQTQtQjItQTcgICAoaGV4KQkJQWRheHlzIFNvbHV0aW9ucyBBRwotQTRCMkE3ICAgICAoYmFzZSAxNikJCUFkYXh5cyBTb2x1dGlvbnMgQUcKLQkJCQlFaWNodGFsc3RyYXNzZSA1NQotCQkJCUhvbWJyZWNodGlrb24gQ0ggODYzNAotCQkJCVNXSVRaRVJMQU5ECi0KLUE0LUIzLTZBICAgKGhleCkJCUpTQyBTRE8gQ2hyb21hdGVjCi1BNEIzNkEgICAgIChiYXNlIDE2KQkJSlNDIFNETyBDaHJvbWF0ZWMKLQkJCQk5NCwgU3Ryb2l0ZWxleSBzdHJlZXQKLQkJCQlZb3Noa2FyLU9sYSBNYXJpIEVsIHJlcHVibGljIDQyNDAwMAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1BNC1COS04MCAgIChoZXgpCQlQYXJraW5nIEJPWFggSW5jLgotQTRCOTgwICAgICAoYmFzZSAxNikJCVBhcmtpbmcgQk9YWCBJbmMuCi0JCQkJMzgyIE5FIDE5MXN0IFN0LiAjOTM5ODQKLQkJCQlNaWFtaSBGTCAzMzE3OS0zODk5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC1CQS1EQiAgIChoZXgpCQlEZWxsIEluYy4KLUE0QkFEQiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC1CRS02MSAgIChoZXgpCQlFdXRyb1Zpc2lvbiBTeXN0ZW0sIEluYy4KLUE0QkU2MSAgICAgKGJhc2UgMTYpCQlFdXRyb1Zpc2lvbiBTeXN0ZW0sIEluYy4KLQkJCQlSbSA0MDMsQnVpbGRpbmczMyxOby42ODAgR3VpcGluZ1JkLFh1aHVpLAotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi1BNC1DMC1FMSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLUE0QzBFMSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi1BNC1DMi1BQiAgIChoZXgpCQlIYW5nemhvdSBMRUFELUlUIEluZm9ybWF0aW9uICYgVGVjaG5vbG9neSBDby4sTHRkCi1BNEMyQUIgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgTEVBRC1JVCBJbmZvcm1hdGlvbiAmIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCUYyIEJ1aWxkZXIgQixYaWRvbWVuIFJvYWQgTk8uMjIKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTIKLQkJCQlDSElOQQotCi1BNC1EMS04RiAgIChoZXgpCQlTaGVuemhlbiBTa3llZSBPcHRpY2FsIEZpYmVyIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBMdGQuIAotQTREMThGICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFNreWVlIE9wdGljYWwgRmliZXIgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEx0ZC4gCi0JCQkJTm8uNSBCbGRnLiBZaW1pbiBJbmR1c3RyaWFsIFBhcmssIE5vLjMxLCBNYWthbiBTb3V0aCBSb2FkLCBOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLUE0LUQxLUQxICAgKGhleCkJCUVDT3RhbGl0eSBOb3J0aCBBbWVyaWNhCi1BNEQxRDEgICAgIChiYXNlIDE2KQkJRUNPdGFsaXR5IE5vcnRoIEFtZXJpY2EKLQkJCQk0MzAgUyAybmQgQXZlbnVlCi0JCQkJUGhvZW5peCBBWiA4NTAwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtRDEtRDIgICAoaGV4KQkJQXBwbGUsIEluYy4KLUE0RDFEMiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTQtREEtM0YgICAoaGV4KQkJQmlvbmljcyBDb3JwLgotQTREQTNGICAgICAoYmFzZSAxNikJCUJpb25pY3MgQ29ycC4KLQkJCQkxNDA2IE1hc3RlcnMgVG93ZXIKLQkJCQk1NTMgRG93aGEtZG9uZyBNYXBvLWd1Ci0JCQkJU2VvdWwgIDEyMS03NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQTQtREItMkUgICAoaGV4KQkJS2luZ3NwYW4gRW52aXJvbm1lbnRhbCBMdGQKLUE0REIyRSAgICAgKGJhc2UgMTYpCQlLaW5nc3BhbiBFbnZpcm9ubWVudGFsIEx0ZAotCQkJCTE4MCBHaWxmb3JkIFJvYWQKLQkJCQlQb3J0YWRvd24gQXJtYWdoIEJUNjMgNUxGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQTQtREUtNTAgICAoaGV4KQkJVG90YWwgV2FsdGhlciBHbWJICi1BNERFNTAgICAgIChiYXNlIDE2KQkJVG90YWwgV2FsdGhlciBHbWJICi0JCQkJRnJhbmtmdXJ0ZXIgUmluZyAxNwotCQkJCU11bmljaCAgODA4MDcKLQkJCQlHRVJNQU5ZCi0KLUE0LUUzLTJFICAgKGhleCkJCVNpbGljb24gJmFtcDsgU29mdHdhcmUgU3lzdGVtcyBMdGQuCi1BNEUzMkUgICAgIChiYXNlIDE2KQkJU2lsaWNvbiAmYW1wOyBTb2Z0d2FyZSBTeXN0ZW1zIEx0ZC4KLQkJCQlTb3V0aCBDb3VudHkgQnVzaW5lc3MgUGFyawotCQkJCUxlb3BhcmRzdG93biBEdWJsaW4gMTgKLQkJCQlJUkVMQU5ECi0KLUE0LUUzLTkxICAgKGhleCkJCURFTlkgRk9OVEFJTkUKLUE0RTM5MSAgICAgKGJhc2UgMTYpCQlERU5ZIEZPTlRBSU5FCi0JCQkJUk9VVEUgREUgU0FJTlQgVkFMRVJZCi0JCQkJU0FJTlQgQkxJTU9OVCAgODA5NjAKLQkJCQlGUkFOQ0UKLQotQTQtRTctMzEgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUE0RTczMSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1ICA5MDIzMAotCQkJCUZJTkxBTkQKLQotQTQtRTctRTQgICAoaGV4KQkJQ29ubmV4IEdtYkgKLUE0RTdFNCAgICAgKGJhc2UgMTYpCQlDb25uZXggR21iSAotCQkJCUVsYmVzdHJhc3NlIDEyCi0JCQkJT2xkZW5idXJnICAyNjEzNQotCQkJCUdFUk1BTlkKLQotQTQtRUQtNEUgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi1BNEVENEUgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4gCi0JCQkJNjAwIE4uIFVTIDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BNC1FRS01NyAgIChoZXgpCQlTRUlLTyBFUFNPTiBDT1JQT1JBVElPTgotQTRFRTU3ICAgICAoYmFzZSAxNikJCVNFSUtPIEVQU09OIENPUlBPUkFUSU9OCi0JCQkJMy0zLTUgT1dBCi0JCQkJU1VXQS1TSEkgTkFHQU5PLUtFTiAzOTItODUwMgotCQkJCUpBUEFOCi0KLUE0LUVGLTUyICAgKGhleCkJCVRlbGV3YXZlIENvLiwgTHRkLgotQTRFRjUyICAgICAoYmFzZSAxNikJCVRlbGV3YXZlIENvLiwgTHRkLgotCQkJCUEtMjAzLCBTSyBUd2ludGVjaCBUb3dlcgotCQkJCUdhc2FuLWRvbmcsIEdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtNzczCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUE0LUY3LUQwICAgKGhleCkJCUxBTiBBY2Nlc3NvcmllcyBDby4sIEx0ZC4KLUE0RjdEMCAgICAgKGJhc2UgMTYpCQlMQU4gQWNjZXNzb3JpZXMgQ28uLCBMdGQuCi0JCQkJOEYtMSwgTm8uIDE1OSwgU2VjLiAxIEhzaW4gVGFpIFd1IFJvYWQsCi0JCQkJU2hpaCBDaGloIERpc3QuLAotCQkJCU5ldyBUYWlwZWkgQ2l0eSwgIDIyMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQTgtMTYtQjIgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MKLUE4MTZCMiAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcwotCQkJCTYwLTM5ICwgS2FzYW4tZG9uZywgR3VtY2hlb24tZ3UKLQkJCQlTZW91bCAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUE4LTE3LTU4ICAgKGhleCkJCUVsZWt0cm9uaWsgU3lzdGVtIGkgVW1l77+9IEFCCi1BODE3NTggICAgIChiYXNlIDE2KQkJRWxla3Ryb25payBTeXN0ZW0gaSBVbWXvv70gQUIKLQkJCQlCb3ggNzk3OAotCQkJCVR2aXN0ZXbvv71nZW4gNDcKLQkJCQlVbWXvv70gVu+/vXN0ZXJib3R0ZW4gOTA3IDE5Ci0JCQkJU1dFREVOCi0KLUE4LTFCLTE4ICAgKGhleCkJCVhUUyBDT1JQCi1BODFCMTggICAgIChiYXNlIDE2KQkJWFRTIENPUlAKLQkJCQkxMDEyNSBOVyAxMTZUSCBXQVksIFNVSVRFIDUKLQkJCQlNRURMRVkgRkxPUklEQSAzMzE3OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTgtMjAtNjYgICAoaGV4KQkJQXBwbGUgSW5jCi1BODIwNjYgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTgtMjYtRDkgICAoaGV4KQkJSFRDIENvcnBvcmF0aW9uCi1BODI2RDkgICAgIChiYXNlIDE2KQkJSFRDIENvcnBvcmF0aW9uCi0JCQkJTm8uIDIzLCBYaW5naHVhIFJkLCBUYW95dWFuIENpdHkKLQkJCQlUYW95dWFuIENvdW50eSAgMzMwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BOC0yQi1ENiAgIChoZXgpCQlTaGluYSBTeXN0ZW0gQ28uLCBMdGQKLUE4MkJENiAgICAgKGJhc2UgMTYpCQlTaGluYSBTeXN0ZW0gQ28uLCBMdGQKLQkJCQk2RkwtNjAxLCBUaGUtTyBWYWxsZXksIEFueWFuZyBJbnRlcm5hdGlvbmFsIERpc3RyaWJ1dGUgQ29tcGxleAotCQkJCUhvZ3llIDEtRG9uZyA1NTUtOSwgRG9uZ2FuLUd1Ci0JCQkJQW55YW5nLVNpIEd5ZW91bmdnaS1EbyA0MzEtNzYzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUE4LTM5LTQ0ICAgKGhleCkJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jIAotQTgzOTQ0ICAgICAoYmFzZSAxNikJCUFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jIAotCQkJCTc2MCBOb3J0aCBNYXJ5IEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotQTgtNDAtNDEgICAoaGV4KQkJRHJhZ2lubyBUZWNobm9sb2d5IENvLiwgTGltaXRlZAotQTg0MDQxICAgICAoYmFzZSAxNikJCURyYWdpbm8gVGVjaG5vbG9neSBDby4sIExpbWl0ZWQKLQkJCQkzMDMsIEJsb2NrIEIsIE5vIDg7IDM0OSwgSmlhbiYjMzk7QW4gMSBSb2FkLEJhbyYjMzk7QW4KLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MTAxCi0JCQkJQ0hJTkEKLQotQTgtNDktQTUgICAoaGV4KQkJTGlzYW50ZWNoIENvLiwgTHRkLgotQTg0OUE1ICAgICAoYmFzZSAxNikJCUxpc2FudGVjaCBDby4sIEx0ZC4KLQkJCQkxMTA4LCBTVFggVi1Ub3dlciAgR2FzYW4tZG9uZwotCQkJCUdldW1jaGVvbi1ndQotCQkJCVNlb3VsICAxNTMtODAzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUE4LTU1LTZBICAgKGhleCkJCVBvY2tldG5ldCBUZWNobm9sb2d5IEluYy4KLUE4NTU2QSAgICAgKGJhc2UgMTYpCQlQb2NrZXRuZXQgVGVjaG5vbG9neSBJbmMuCi0JCQkJU3VpdGUgQiwgN0YuLCBOby4gNTUwLCBSdWllIEt3YW5nIFJkLiwgTmVpaHUgRGlzdHJpY3QsCi0JCQkJVGFpcGVpICAxMTQyOQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQTgtNUItQjAgICAoaGV4KQkJU2hlbnpoZW4gRGVob28gVGVjaG5vbG9neSBDby4sTHRkCi1BODVCQjAgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gRGVob28gVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJNUMsVGlhbnpoYW4gQnVpbGRpbmcgVGlhbmFuIEN5YmVycGFyaywKLQkJCQlGdXRpYW4gZGlzdHJpY3QKLQkJCQlTaGVuWmhlbiBHdWFuZyBEb25nIDUxODA0MAotCQkJCUNISU5BCi0KLUE4LTVCLUYzICAgKGhleCkJCUF1ZGl2byBHbWJICi1BODVCRjMgICAgIChiYXNlIDE2KQkJQXVkaXZvIEdtYkgKLQkJCQlJcnJlbmxvaGVyIERhbW0gMTcKLQkJCQlTY2h3YXJ6ZW5mZWxkICA5MjUyMQotCQkJCUdFUk1BTlkKLQotQTgtNjItQTIgICAoaGV4KQkJSklXVU1FRElBIENPLiwgTFRELgotQTg2MkEyICAgICAoYmFzZSAxNikJCUpJV1VNRURJQSBDTy4sIExURC4KLQkJCQkjOTAyLCBEYWVydWcgVGVjaG5vIFRvd24gMTMndGgsIDY2NAotCQkJCUdhc2FuLWRvbmcKLQkJCQlHZXVtY2hlb24tZ3UgU2VvdWwgMTUzLTgwMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BOC02My1ERiAgIChoZXgpCQlESVNQTOKAmUFJUkUgQ09SUE9SQVRJT04KLUE4NjNERiAgICAgKGJhc2UgMTYpCQlESVNQTOKAmUFJUkUgQ09SUE9SQVRJT04KLQkJCQkxMzAwIFZhbGxleSBIb3VzZSBEciwgU3RlIDEwMAotCQkJCVJvaG5lcnQgUGFyayBDQSA5NDkyOAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTgtNjMtRjIgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLUE4NjNGMiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyMjAzIFMuVy5GcmVld2F5LCBNUzcyOAotCQkJCVN0YWZmb3JkIFRleGFzIDc3NDc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC02NS1CMiAgIChoZXgpCQlET05HR1VBTiBZSVNIQU5HIEVMRUNUUk9OSUMgVEVDSE5PTE9HWSBDTy4sIExJTUlURUQKLUE4NjVCMiAgICAgKGJhc2UgMTYpCQlET05HR1VBTiBZSVNIQU5HIEVMRUNUUk9OSUMgVEVDSE5PTE9HWSBDTy4sIExJTUlURUQKLQkJCQkzcmQgZmxvb3IsIEIjIEJ1aWxkaW5nICxIb3VkZWZ1IExvZ2lzdGljcyBQYXJrLFFpbmdzaHVpYW8sCi0JCQkJSmlhbnNoYXpob3UsV2FuamlhbmcgRGlzdHJpY3QKLQkJCQlEb25nZ3VhbiBHdWFuZ2RvbmcgNTIzMDYyCi0JCQkJQ0hJTkEKLQotQTgtNkEtNkYgICAoaGV4KQkJUklNCi1BODZBNkYgICAgIChiYXNlIDE2KQkJUklNCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgNVI5Ci0JCQkJQ0FOQURBCi0KLUE4LTcwLUE1ICAgKGhleCkJCVVuaUNvbW0gSW5jLgotQTg3MEE1ICAgICAoYmFzZSAxNikJCVVuaUNvbW0gSW5jLgotCQkJCTdGLTcsIE5vLiA3MTYsIENodW5nLUNoZW5nIFJvYWQsCi0JCQkJQ2h1bmctSG8gQ2l0eSBUYWlwZWkgSHNpZW4gMjM1MDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUE4LTc3LTZGICAgKGhleCkJCVpvbm9mZgotQTg3NzZGICAgICAoYmFzZSAxNikJCVpvbm9mZgotCQkJCTcwRSBTd2VkZXNmb3JkIFJkCi0JCQkJTWFsdmVybiBQQSAxOTM1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotQTgtN0ItMzkgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUE4N0IzOSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU3MAotCQkJCUZJTkxBTkQKLQotQTgtN0UtMzMgICAoaGV4KQkJTm9raWEgRGFubWFyayBBL1MKLUE4N0UzMyAgICAgKGJhc2UgMTYpCQlOb2tpYSBEYW5tYXJrIEEvUwotCQkJCUZyZWRlcmlrc2thagotCQkJCUNvcGVuaGFnZW4gViAgREstMTc5MAotCQkJCURFTk1BUksKLQotQTgtODctOTIgICAoaGV4KQkJQnJvYWRiYW5kIEFudGVubmEgVHJhY2tpbmcgU3lzdGVtcwotQTg4NzkyICAgICAoYmFzZSAxNikJCUJyb2FkYmFuZCBBbnRlbm5hIFRyYWNraW5nIFN5c3RlbXMKLQkJCQk4OTAyIFZpbmNlbm5lcyBDaXJjbGUsIFN1aXRlIEQtMgotCQkJCUluZGlhbmFwb2xpcyBJTiA0NjI2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQTgtODctRUQgICAoaGV4KQkJQVJDIFdpcmVsZXNzIExMQwotQTg4N0VEICAgICAoYmFzZSAxNikJCUFSQyBXaXJlbGVzcyBMTEMKLQkJCQk2MzMwIE4uIFdhc2hpbmd0b24gU3QuCi0JCQkJU1RFIDEzCi0JCQkJRGVudmVyIENPIDgwMjE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC04Qy1FRSAgIChoZXgpCQlNaWNyb01hZGUgR2Fsa2EgaSBEcm96ZHogc3Auai4KLUE4OENFRSAgICAgKGJhc2UgMTYpCQlNaWNyb01hZGUgR2Fsa2EgaSBEcm96ZHogc3Auai4KLQkJCQl1bC4gV2llbmlhd3NraWVnbyAxNgotCQkJCVBpbGEgV2llbGtvcG9sc2tpZSA2NC05MjAKLQkJCQlQT0xBTkQKLQotQTgtOTItMkMgICAoaGV4KQkJTEcgRWxlY3Ryb25pY3MKLUE4OTIyQyAgICAgKGJhc2UgMTYpCQlMRyBFbGVjdHJvbmljcwotCQkJCTYwLTM5ICwgS2FzYW4tZG9uZywgR3VtY2hlb24tZ3UKLQkJCQlTZW91bCAgMTUzLTgwMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BOC05My1FNiAgIChoZXgpCQlKSUFOR1hJIEpJTkdHQU5HU0hBTiBDS0lORyBDT01NVU5JQ0FUSU9OIFRFQ0hOT0xPR1kgQ08uLExURAotQTg5M0U2ICAgICAoYmFzZSAxNikJCUpJQU5HWEkgSklOR0dBTkdTSEFOIENLSU5HIENPTU1VTklDQVRJT04gVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJNUYsMzAxYnVpbGRpbmcsVGFpcmFuIEhpZ2gtdGVjaCBwYXJrLCBDaGVnb25nbWlhbyxGdXRpYW4gem9uZSwKLQkJCQlTSEVOWkhFTiBHVUFOR0RPTkcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotQTgtOTgtQzYgICAoaGV4KQkJU2hpbmJvIENvLiwgTHRkLgotQTg5OEM2ICAgICAoYmFzZSAxNikJCVNoaW5ibyBDby4sIEx0ZC4KLQkJCQkyMDMtMTQsIEFueWFuZyA3LURvbmcsIE1hbmFuLUd1Ci0JCQkJQW55YW5nLVNpIEt5dW5na2ktRG8gNDMwLTgxNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BOC05OS01QyAgIChoZXgpCQlhaXpvIGFnCi1BODk5NUMgICAgIChiYXNlIDE2KQkJYWl6byBhZwotCQkJCUJyYW5kc3RyYXNzZSAzMwotCQkJCVNjaGxpZXJlbiAgODk1MgotCQkJCVNXSVRaRVJMQU5ECi0KLUE4LTlCLTEwICAgKGhleCkJCWluTW90aW9uIEx0ZC4KLUE4OUIxMCAgICAgKGJhc2UgMTYpCQlpbk1vdGlvbiBMdGQuCi0JCQkJVW5pdCAyNzA5IEV4Y2hhbmdlIFRvd2VyIAotCQkJCTMzIFdhbmcgQ2h1aSBSb2FkILcgS293bG9vbiBCYXkgtyBLTE4KLQkJCQlLTE4KLQkJCQlIT05HIEtPTkcKLQotQTgtQjAtQUUgICAoaGV4KQkJTEVPTkkgCi1BOEIwQUUgICAgIChiYXNlIDE2KQkJTEVPTkkgCi0JCQkJMzk0NSBGcmVlZG9tIENpcmNsZQotCQkJCVN1aXRlIDU1MAotCQkJCVNhbnRhIENsYXJhIENhbGlmb3JuaWEgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE4LUIxLUQ0ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUE4QjFENCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUE4LUJELTFBICAgKGhleCkJCUhvbmV5IEJlZSAoSG9uZyBLb25nKSBMaW1pdGVkCi1BOEJEMUEgICAgIChiYXNlIDE2KQkJSG9uZXkgQmVlIChIb25nIEtvbmcpIExpbWl0ZWQKLQkJCQlGbGF0IEwsIDEyL0YuLCBQaGFzZSA0LCBLd3VuIFRvbmcgSW5kdXN0cmlhbCBDdHIuLAotCQkJCTQzNi00NDYgS3d1biBUb25nIFJvYWQsIEt3dW4gVG9uZwotCQkJCUhPTkcgS09ORwotCi1BOC1DMi0yMiAgIChoZXgpCQlUTS1SZXNlYXJjaCBJbmMuCi1BOEMyMjIgICAgIChiYXNlIDE2KQkJVE0tUmVzZWFyY2ggSW5jLgotCQkJCUhpeW9zaGkgSG9uY2hvIDEtMTUtNAotCQkJCUtvaG9rdS1rdQotCQkJCVlva29oYW1hIEthbmFnYXdhIDIyMy0wMDYyCi0JCQkJSkFQQU4KLQotQTgtQ0ItOTUgICAoaGV4KQkJRUFTVCBCRVNUIENPLiwgTFRELgotQThDQjk1ICAgICAoYmFzZSAxNikJCUVBU1QgQkVTVCBDTy4sIExURC4KLQkJCQk0RixOTy45OCxTSElORyBURUggUk9BRAotCQkJCVNBTiBDSFVORyBDSVRZICBUQUlQRUkgMjQxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BOC1DRS05MCAgIChoZXgpCQlDVkMKLUE4Q0U5MCAgICAgKGJhc2UgMTYpCQlDVkMKLQkJCQlOby4zNjEsUmVuaHVhIFJkLiwKLQkJCQlEYWxpIENpdHkgVGFpY2h1bmcgNDEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BOC1EMC1FNSAgIChoZXgpCQlKdW5pcGVyIE5ldHdvcmtzCi1BOEQwRTUgICAgIChiYXNlIDE2KQkJSnVuaXBlciBOZXR3b3JrcwotCQkJCTExOTQgTiBNYXRoaWxkYSBBdmVudWUKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODkgCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1BOC1EMy1DOCAgIChoZXgpCQlXYWNoZW5kb3JmZiBFbGVrdHJvbmlrICBHbWJIICZhbXA7IENvLiBLRwotQThEM0M4ICAgICAoYmFzZSAxNikJCVdhY2hlbmRvcmZmIEVsZWt0cm9uaWsgIEdtYkggJmFtcDsgQ28uIEtHCi0JCQkJSW5kdXN0cmllc3RyLiA3Ci0JCQkJR2Vpc2VuaGVpbSAgNjUzNjYKLQkJCQlHRVJNQU5ZCi0KLUE4LUUwLTE4ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1BOEUwMTggICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSAgOTAyMzAKLQkJCQlGSU5MQU5ECi0KLUE4LUUzLUVFICAgKGhleCkJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBJbmMuCi1BOEUzRUUgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4KLQkJCQkyLTYtMjEgTWluYW1pLUFveWFtYQotCQkJCU1pbmF0by1rdSBUb2t5byAxMDctMDA2MgotCQkJCUpBUEFOCi0KLUE4LUYyLTc0ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLUE4RjI3NCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUE4LUY0LTcwICAgKGhleCkJCUZ1amlhbiBOZXdsYW5kIENvbW11bmljYXRpb24gU2NpZW5jZSBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLUE4RjQ3MCAgICAgKGJhc2UgMTYpCQlGdWppYW4gTmV3bGFuZCBDb21tdW5pY2F0aW9uIFNjaWVuY2UgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJTmV3bGFuZCBTY2llbmNlICYgVGVjaG5vbG9neSBQYXJrIE5vLjEgUnVqaWFuZyBXZXN0IFJkLiwgTWF3ZWksIAotCQkJCUZ1emhvdSBGdWppYW4gMzUwMDE1Ci0JCQkJQ0hJTkEKLQotQTgtRjktNEIgICAoaGV4KQkJRWx0ZXggRW50ZXJwcmlzZSBMdGQuCi1BOEY5NEIgICAgIChiYXNlIDE2KQkJRWx0ZXggRW50ZXJwcmlzZSBMdGQuCi0JCQkJT2J5ZWRpbmVuaXlhIHN0LiwgOQotCQkJCU5vdm9zaWJpcnNrICA2MzAwMjAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotQTgtRkMtQjcgICAoaGV4KQkJQ29uc29saWRhdGVkIFJlc291cmNlIEltYWdpbmcKLUE4RkNCNyAgICAgKGJhc2UgMTYpCQlDb25zb2xpZGF0ZWQgUmVzb3VyY2UgSW1hZ2luZwotCQkJCTI5NDMgUyBXaWxzb24gQ1QgTlcKLQkJCQlHcmFuZCBSYXBpZHMgTUkgNDk1MzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFBLTAwLTAwICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi1BQTAwMDAgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQlMS0cgMS0yL0ExOQotCQkJCTU1MCBLSU5HIFNUUkVFVAotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MC0xMjg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQS0wMC0wMSAgIChoZXgpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotQUEwMDAxICAgICAoYmFzZSAxNikJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0JCQkJTEtHIDEtMi9BMTkKLQkJCQk1NTAgS0lORyBTVFJFRVQKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAtMTI4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUEtMDAtMDIgICAoaGV4KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLUFBMDAwMiAgICAgKGJhc2UgMTYpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotCQkJCUxLRyAxLTIvQTE5Ci0JCQkJNTUwIEtJTkcgU1RSRUVUCi0JCQkJTElUVExFVE9OIE1BIDAxNDYwLTEyODkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFBLTAwLTAzICAgKGhleCkJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi1BQTAwMDMgICAgIChiYXNlIDE2KQkJRElHSVRBTCBFUVVJUE1FTlQgQ09SUE9SQVRJT04KLQkJCQlMS0cgMS0yL0ExOQotCQkJCTU1MCBLSU5HIFNUUkVFVAotCQkJCUxJVFRMRVRPTiBNQSAwMTQ2MC0xMjg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQS0wMC0wNCAgIChoZXgpCQlESUdJVEFMIEVRVUlQTUVOVCBDT1JQT1JBVElPTgotQUEwMDA0ICAgICAoYmFzZSAxNikJCURJR0lUQUwgRVFVSVBNRU5UIENPUlBPUkFUSU9OCi0JCQkJTEtHIDEtMi9BMTkKLQkJCQk1NTAgS0lORyBTVFJFRVQKLQkJCQlMSVRUTEVUT04gTUEgMDE0NjAtMTI4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtMDEtNDIgICAoaGV4KQkJVXJpZWwgVGVjaG5vbG9naWVzIFNJQQotQUMwMTQyICAgICAoYmFzZSAxNikJCVVyaWVsIFRlY2hub2xvZ2llcyBTSUEKLQkJCQlEemVyYmVuZXMgaWVsYSAxNAotCQkJCVJpZ2EgIExWLTEwMDYKLQkJCQlMQVRWSUEKLQotQUMtMDItQ0YgICAoaGV4KQkJUlcgVGVjbm9sb2dpYSBJbmR1c3RyaWEgZSBDb21lcmNpbyBMdGRhCi1BQzAyQ0YgICAgIChiYXNlIDE2KQkJUlcgVGVjbm9sb2dpYSBJbmR1c3RyaWEgZSBDb21lcmNpbyBMdGRhCi0JCQkJQ2VudHJvIEVtcHJlc2FyaWFsIFBhdWxvIEZyZWRlcmljbyBkZSBUb2xlZG8sIDgwIEEKLQkJCQlCYWlycm8gQXJjbyBJcmlycwotCQkJCVNhbnRhIFJpdGEgZG8gU2FwdWNhaSBNaW5hcyBHZXJhaXMgIDM3NTQwMDAwCi0JCQkJQlJBWklMCi0KLUFDLTAyLUVGICAgKGhleCkJCUNvbXNpcwotQUMwMkVGICAgICAoYmFzZSAxNikJCUNvbXNpcwotCQkJCTMgcnVlIEJyb3Vzc2FpcwotCQkJCVBhcmlzICA3NTAxNAotCQkJCUZSQU5DRQotCi1BQy0wNi0xMyAgIChoZXgpCQlTZW5zZWxvZ2l4IEx0ZAotQUMwNjEzICAgICAoYmFzZSAxNikJCVNlbnNlbG9naXggTHRkCi0JCQkJNTYgQ2FybHRvbiBDb3VydCwgRm9yZCBXaWxsaWFtIE1vcmdhbgotCQkJCVN0LiBBc2FwaCBCdXNpbmVzcyBQYXJrCi0JCQkJU3QuIEFzYXBoIERlYmlnaHNoaXJlIExMMTcgMEpHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQUMtMEEtNjEgICAoaGV4KQkJTGFib3IgUy5yLkwuCi1BQzBBNjEgICAgIChiYXNlIDE2KQkJTGFib3IgUy5yLkwuCi0JCQkJVmlhIGRlbGxhIFNjcm9mYSAxMTcKLQkJCQlSb21lIDAwMTg2Ci0JCQkJSVRBTFkKLQotQUMtMEQtRkUgICAoaGV4KQkJRWtvbiBHbWJIIC0gbXlHRUtLTwotQUMwREZFICAgICAoYmFzZSAxNikJCUVrb24gR21iSCAtIG15R0VLS08KLQkJCQlSaWVuemZlbGRzdHJh32UgMzAKLQkJCQlCcnVuZWNrIFP8ZHRpcm9sIChCWikgMzkwMzEKLQkJCQlJVEFMWQotCi1BQy0xNC02MSAgIChoZXgpCQlBVEFXICBDby4sIEx0ZC4KLUFDMTQ2MSAgICAgKGJhc2UgMTYpCQlBVEFXICBDby4sIEx0ZC4KLQkJCQlEb25nYW4tZ3UgUHllb25nY2hvbi1kb25nIDEyNi0xCi0JCQkJRG9vc2FuIFZlbnR1cmUgRGlnbSM1MzEKLQkJCQlBbnlhbmctc2kgR3llb25nZ2ktZG8gNDMxLTc1NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1BQy0xNC1EMiAgIChoZXgpCQl3aS1kYXEsIGluYy4KLUFDMTREMiAgICAgKGJhc2UgMTYpCQl3aS1kYXEsIGluYy4KLQkJCQk4NTAgTlcgRmVkZXJhbCBId3kKLQkJCQlTdWl0ZSAxMjkKLQkJCQlTdHVhcnQgRmxvcmlkYSAzNDk5NAotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtMTYtMkQgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1BQzE2MkQgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFDLTE5LTlGICAgKGhleCkJCVNVTkdST1cgUE9XRVIgU1VQUExZIENPLixMVEQuCi1BQzE5OUYgICAgIChiYXNlIDE2KQkJU1VOR1JPVyBQT1dFUiBTVVBQTFkgQ08uLExURC4KLQkJCQlOTy4yIFRpYW5odSBSb2FkLCBOZXcgYW5kIEhpZ2ggVGVjaG5vbG9neSBJbmR1c3RyaWFsIERldmVsb3BtZW50IFpvbmUKLQkJCQlIZWZlaSBBbmh1aSAyMzAwODgKLQkJCQlDSElOQQotCi1BQy0yMC1BQSAgIChoZXgpCQlETUFURUsgQ28uLCBMdGQuCi1BQzIwQUEgICAgIChiYXNlIDE2KQkJRE1BVEVLIENvLiwgTHRkLgotCQkJCTZGLiwgTm8uMTU1LTEsIFNlYy4gMywgV2VueGluIFJkLiwgWGl0dW4gRGlzdC4sCi0JCQkJVGFpY2h1bmcgIDQwNzUzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1BQy0yRi1BOCAgIChoZXgpCQlIdW1hbm5peCBDby4sTHRkLgotQUMyRkE4ICAgICAoYmFzZSAxNikJCUh1bWFubml4IENvLixMdGQuCi0JCQkJIzQwMiwgOTgtNCwgU29uZ3BhLURvbmcsIFNvbmdwYS1HdQotCQkJCVNlb3VsICAxMzgtMTcwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUFDLTMxLTlEICAgKGhleCkJCVNoZW56aGVuIFRHLU5FVCBCb3RvbmUgVGVjaG5vbG9neSBDby4sTHRkLgotQUMzMTlEICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFRHLU5FVCBCb3RvbmUgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTJuZCBmbG9vcixCdWlsZGluZyBOby42LFBlbmd0ZW5nZGEgaW5kdXN0cmlhbCB6b25lLEh1YXJvbmcgcm9hZCxEYWxhbmcgU3RyZWV0IE9mZmljZSwKLQkJCQlMb25naHVhIFRvd24KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTA5Ci0JCQkJQ0hJTkEKLQotQUMtMzQtQ0IgICAoaGV4KQkJU2hhbmhhaSBHQkNPTSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uIEx0ZAotQUMzNENCICAgICAoYmFzZSAxNikJCVNoYW5oYWkgR0JDT00gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiBMdGQKLQkJCQlSb29tIDYwMiwgQnVpbGRpbmcgNiwgTm8uNTU1IERvbmdjaHVhbiBSb2FkCi0JCQkJU2hhbmdoYWkgICAyMDAyNDEKLQkJCQlDSElOQQotCi1BQy0zRC0wNSAgIChoZXgpCQlJbnN0b3Jlc2NyZWVuIEFpc2EKLUFDM0QwNSAgICAgKGJhc2UgMTYpCQlJbnN0b3Jlc2NyZWVuIEFpc2EKLQkJCQlSb29tIDIwNywgTm9ydGggQmxkZyxObyAyOAotCQkJCUxhbmUgNDExLCBTaGlsb25nIFJvYWQKLQkJCQlTaGFuZ2hhaSAgMjAwMjM3Ci0JCQkJQ0hJTkEKLQotQUMtM0QtNzUgICAoaGV4KQkJSEFOR1pIT1UgWkhJV0FZIFRFQ0hOT0xPR0lFUyBDTy4sTFRELgotQUMzRDc1ICAgICAoYmFzZSAxNikJCUhBTkdaSE9VIFpISVdBWSBURUNITk9MT0dJRVMgQ08uLExURC4KLQkJCQlGTE9PUjEyQixCVUlMRElORyBFLFBBUkFESVNFIFNPRlRXQVJFIFBBUkssTk8uMyBYSURPVU1FTiBST0FELAotCQkJCVdFU1RMQUtFIERJU1RSSUNULAotCQkJCUhBTkdaSE9VIFpIRUpJQU5HIDMxMDAxMgotCQkJCUNISU5BCi0KLUFDLTNGLUE0ICAgKGhleCkJCVRBSVlPIFlVREVOIENPLixMVEQKLUFDM0ZBNCAgICAgKGJhc2UgMTYpCQlUQUlZTyBZVURFTiBDTy4sTFRECi0JCQkJOC0xLCBTYWthZS1jaG8KLQkJCQlUYWthc2FraS1zaGkgR3VubWEgMzcwLTg1MjIKLQkJCQlKQVBBTgotCi1BQy00MC1FQSAgIChoZXgpCQlDJlQgU29sdXRpb24gSW5jLiAKLUFDNDBFQSAgICAgKGJhc2UgMTYpCQlDJlQgU29sdXRpb24gSW5jLiAKLQkJCQkxMkYtMSwgTm8uNzAwLCBaaG9uZ3poZW5nIFJkLiwgWmhvbmdoZSBEaXN0LgotCQkJCU5ldyBUYWlwZWkgQ2l0eSBUYWl3YW4gIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQUMtNDQtRjIgICAoaGV4KQkJUmV2b2xhYnMgSW5jCi1BQzQ0RjIgICAgIChiYXNlIDE2KQkJUmV2b2xhYnMgSW5jCi0JCQkJNjMgR3JlYXQgUmQKLQkJCQlNYXluYXJkIE1BIDAxNzU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy00Ny0yMyAgIChoZXgpCQlHZW5lbGVjCi1BQzQ3MjMgICAgIChiYXNlIDE2KQkJR2VuZWxlYwotCQkJCU9sdml0aWUgNQotCQkJCUlpc2FsbWkgIDc0MTAwCi0JCQkJRklOTEFORAotCi1BQy00QS1GRSAgIChoZXgpCQlIaXNlbnNlIEJyb2FkYmFuZCBNdWx0aW1lZGlhIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLUFDNEFGRSAgICAgKGJhc2UgMTYpCQlIaXNlbnNlIEJyb2FkYmFuZCBNdWx0aW1lZGlhIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLQkJCQlOby4xMSBKaWFuZ3hpIFJvYWQsU2hpbmFuIERpc3RyaWN0Ci0JCQkJUWluZ2RhbyBDaXR5IFNoYW5kb25nIFByb3ZpbmNlIDI2NjA3MQotCQkJCUNISU5BCi0KLUFDLTRCLUM4ICAgKGhleCkJCUp1bmlwZXIgTmV0d29ya3MKLUFDNEJDOCAgICAgKGJhc2UgMTYpCQlKdW5pcGVyIE5ldHdvcmtzCi0JCQkJMTE5NCBOIE1hdGhpbGRhIEF2ZW51ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4OSAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFDLTRGLUZDICAgKGhleCkJCVNWUy1WSVNURUsgR21iSAotQUM0RkZDICAgICAoYmFzZSAxNikJCVNWUy1WSVNURUsgR21iSAotCQkJCU11ZWhsYmFjaHN0ci4gMjAKLQkJCQlTZWVmZWxkIEJZIDgyMjI5Ci0JCQkJR0VSTUFOWQotCi1BQy01MS0zNSAgIChoZXgpCQlNUEkgVEVDSAotQUM1MTM1ICAgICAoYmFzZSAxNikJCU1QSSBURUNICi0JCQkJVmFkc3RydXB2ZWogMzUKLQkJCQlCYWdzduZyZCAgREstMjg4MAotCQkJCURFTk1BUksKLQotQUMtNTEtRUUgICAoaGV4KQkJQ2FtYnJpZGdlIENvbW11bmljYXRpb24gU3lzdGVtcyBMdGQKLUFDNTFFRSAgICAgKGJhc2UgMTYpCQlDYW1icmlkZ2UgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIEx0ZAotCQkJCVNoZXJhdG9uIEhvdXNlCi0JCQkJQ2FzdGxlIFBhcmsKLQkJCQlDYW1icmlkZ2UgQ2FtYnJpZGdlc2hpcmUgQ0IzIDBBWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUFDLTU0LUVDICAgKGhleCkJCUlFRUUgUDE4MjMgU3RhbmRhcmRzIFdvcmtpbmcgR3JvdXAKLUFDNTRFQyAgICAgKGJhc2UgMTYpCQlJRUVFIFAxODIzIFN0YW5kYXJkcyBXb3JraW5nIEdyb3VwCi0JCQkJNDQ1IEhvZXMgTGFuZQotCQkJCVBpc2NhdGF3YXkgTkogMDg4NTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFDLTU4LTNCICAgKGhleCkJCUh1bWFuIEFzc2VtYmxlciwgSW5jLgotQUM1ODNCICAgICAoYmFzZSAxNikJCUh1bWFuIEFzc2VtYmxlciwgSW5jLgotCQkJCTItMS0xMS02RgotCQkJCVNoaWJ1eWEKLQkJCQlTaGlidXlhLWt1IFRva3lvIDE1MC0wMDAyCi0JCQkJSkFQQU4KLQotQUMtNUUtOEMgICAoaGV4KQkJVXRpbGxpbmsKLUFDNUU4QyAgICAgKGJhc2UgMTYpCQlVdGlsbGluawotCQkJCTgxNyBXb29saW0gTGlvbnMgVmFsbGV5IDEsIDMxMS0zIFNhbmdkYWV3b24tZG9uZyBKdW5nd29uLWd1Ci0JCQkJU2VvbmduYW0tc2kgR3llb25nZ2ktZG8gNDYyMTYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUFDLTYxLTIzICAgKGhleCkJCURyaXZ2ZW4sIEluYy4KLUFDNjEyMyAgICAgKGJhc2UgMTYpCQlEcml2dmVuLCBJbmMuCi0JCQkJMTIwMDEgTmV0d29yayBCb3VsZXZhcmQKLQkJCQlCdWlsZGluZyBFLCBTdWl0ZSAxMTAKLQkJCQlTYW4gQW50b25pbyBUWCA3ODI0OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtNjctMDYgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi1BQzY3MDYgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtNkYtNEYgICAoaGV4KQkJRW5zcGVydCBJbmMKLUFDNkY0RiAgICAgKGJhc2UgMTYpCQlFbnNwZXJ0IEluYwotCQkJCTJGLiwgRGFlaHdhIEIvRCwgCi0JCQkJMTY5IFNhbXN1bmctZG9uZywgR2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUwOTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQUMtNkYtQkIgICAoaGV4KQkJVEFUVU5HIFRlY2hub2xvZ3kgSW5jLgotQUM2RkJCICAgICAoYmFzZSAxNikJCVRBVFVORyBUZWNobm9sb2d5IEluYy4KLQkJCQkyMiwgQ2h1bmdzaGFuIE4uIFJkLiwgM3JkIFNlYy4sCi0JCQkJVGFpcGVpICAxMDQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUFDLTZGLUQ5ICAgKGhleCkJCVZhbHVlcGx1cyBJbmMuCi1BQzZGRDkgICAgIChiYXNlIDE2KQkJVmFsdWVwbHVzIEluYy4KLQkJCQkjODAzLCBTaWNveCBUb3dlciwgNTEzLTE0IAotCQkJCVNhbmdkYWV3b24tZG9uZywgSnVuZ3dvbi1ndQotCQkJCVNlb25nbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2Mi04MDYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQUMtNzItODkgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi1BQzcyODkgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi1BQy03QS00MiAgIChoZXgpCQlpQ29ubmVjdGl2aXR5Ci1BQzdBNDIgICAgIChiYXNlIDE2KQkJaUNvbm5lY3Rpdml0eQotCQkJCSMyMSwgMTcyNSAzMHRoIEF2ZSBORQotCQkJCUNhbGdhcnkgQWxiZXJ0YSBUMkUgN1A2Ci0JCQkJQ0FOQURBCi0KLUFDLTgwLUQ2ICAgKGhleCkJCUhleGF0cm9uaWMgQUIKLUFDODBENiAgICAgKGJhc2UgMTYpCQlIZXhhdHJvbmljIEFCCi0JCQkJRXhwb3J0Z2F0YW4gNDdCCi0JCQkJR290aGVuYnVyZyAgNDIyNDYgCi0JCQkJU1dFREVOCi0KLUFDLTgxLTEyICAgKGhleCkJCUdlbXRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotQUM4MTEyICAgICAoYmFzZSAxNikJCUdlbXRlayBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCU5vLiAxIEplbiBBaSBSb2FkIEhzaW5jaHUgSW5kdXN0cmlhbCBQYXJrIEh1a291LCAKLQkJCQlOby4gMTUtMSBaaG9uZ2h1YSBSb2FkLCAKLQkJCQlIc2luY2h1ICAzMDM1MgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQUMtODEtRjMgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUFDODFGMyAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1IE91IDkwMjMwCi0JCQkJRklOTEFORAotCi1BQy04My0xNyAgIChoZXgpCQlTaGVuemhlbiBGdXJ0dW5ldGVsIENvbW11bmljYXRpb24gQ28uLCBMdGQKLUFDODMxNyAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBGdXJ0dW5ldGVsIENvbW11bmljYXRpb24gQ28uLCBMdGQKLQkJCQlGMTkgYnVpbGRpbmcgQSB6aG9uZ2tlIHBsYXphIE5hbiB5aSBzdHJlZXQgaGlnaC10ZWNoIHpvbmUsIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1BQy04My1GMCAgIChoZXgpCQlNYWdlbnRhIFZpZGVvIE5ldHdvcmtzCi1BQzgzRjAgICAgIChiYXNlIDE2KQkJTWFnZW50YSBWaWRlbyBOZXR3b3JrcwotCQkJCTIwMDUgRGUgTGEgQ3J1eiBCbHZkCi0JCQkJU3VpdGUgMTUwCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtODYtNzQgICAoaGV4KQkJT3BlbiBNZXNoLCBJbmMuCi1BQzg2NzQgICAgIChiYXNlIDE2KQkJT3BlbiBNZXNoLCBJbmMuCi0JCQkJNTgzNyBOVyBTa3lsaW5lIEJsdmQKLQkJCQlQb3J0bGFuZCBPUiA5NzIyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtODYtN0UgICAoaGV4KQkJQ3JlYXRlIE5ldyBUZWNobm9sb2d5IChISykgTGltaXRlZCBDb21wYW55Ci1BQzg2N0UgICAgIChiYXNlIDE2KQkJQ3JlYXRlIE5ldyBUZWNobm9sb2d5IChISykgTGltaXRlZCBDb21wYW55Ci0JCQkJUm0gQiAxMC9GIEppbkZlbmcgQnVpbGRpbmcsMTAwMSBTaGFuZ0J1IFNvdXRoIFJvYWQsRnVUaWFuIERpc3RyaWN0IAotCQkJCVNoZW4gWmhlbiBHdWFuZyBEb25nIDUxODAzMQotCQkJCUNISU5BCi0KLUFDLThBLUNEICAgKGhleCkJCVJPR0VSIEQuV2Vuc2tlciwgRy5XZW5za2VyIHNwLmouCi1BQzhBQ0QgICAgIChiYXNlIDE2KQkJUk9HRVIgRC5XZW5za2VyLCBHLldlbnNrZXIgc3Auai4KLQkJCQlHb3NjaXN6ZXdvIDU5Ci0JCQkJU3p0dW0gUG9tb3Jza2llIDgyLTQwMAotCQkJCVBPTEFORAotCi1BQy05My0yRiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotQUM5MzJGICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi1BQy05NC0wMyAgIChoZXgpCQlFbnZpc2lvbiBQZXJpcGhlcmFscyBJbmMKLUFDOTQwMyAgICAgKGJhc2UgMTYpCQlFbnZpc2lvbiBQZXJpcGhlcmFscyBJbmMKLQkJCQk0NzQ5MCBTZWFicmlkZ2UgRHIKLQkJCQlGcmVtb250IENhbGlmb3JuaWEgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFDLTlBLTk2ICAgKGhleCkJCUxhbnRpcSBEZXV0c2NobGFuZCBHbWJICi1BQzlBOTYgICAgIChiYXNlIDE2KQkJTGFudGlxIERldXRzY2hsYW5kIEdtYkgKLQkJCQlBbSBDYW1wZW9uIDMKLQkJCQlOZXViaWJlcmcgQmF2YXJpYSA4NTU3OQotCQkJCUdFUk1BTlkKLQotQUMtOUItODQgICAoaGV4KQkJU21hayBUZWNub2xvZ2lhIGUgQXV0b21hY2FvCi1BQzlCODQgICAgIChiYXNlIDE2KQkJU21hayBUZWNub2xvZ2lhIGUgQXV0b21hY2FvCi0JCQkJQXYuIFN0by4gQW50b25pbywgMjAxIC0gQmVsYSBWaXN0YQotCQkJCU9zYXNjbyBTYW8gUGF1bG8gQ0VQIDA2MDg2LTA3NQotCQkJCUJSQVpJTAotCi1BQy05Qy1FNCAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudCBTaGFuZ2hhaSBCZWxsIENvLiwgTHRkCi1BQzlDRTQgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQgU2hhbmdoYWkgQmVsbCBDby4sIEx0ZAotCQkJCU5vLiAzODksIE5pbmdxaWFvIFJvYWQsIFB1ZG9uZyBKaW5xaWFvLAotCQkJCVNoYW5naGFpICAyMDEyMDYKLQkJCQlDSElOQQotCi1BQy1BMC0xNiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1BQ0EwMTYgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1BQy1BQi04RCAgIChoZXgpCQlMeW5nc28gTWFyaW5lIEEvUwotQUNBQjhEICAgICAoYmFzZSAxNikJCUx5bmdzbyBNYXJpbmUgQS9TCi0JCQkJTHluZ3NvIEFsbGUgMgotCQkJCUhvcnNob2xtICBESy0yOTcwCi0JCQkJREVOTUFSSwotCi1BQy1CRS03NSAgIChoZXgpCQlVZmluZSBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLUFDQkU3NSAgICAgKGJhc2UgMTYpCQlVZmluZSBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLQkJCQk0NiwgR2V1bWdvay1kb25nLCBCdW5kYW5nLWd1Ci0JCQkJU2VvbmctbmFtLXNpIEd5ZW9uZ2dpLWRvIDQ2My04MDQKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQUMtQkUtQjYgICAoaGV4KQkJVmlzdWFsZWRnZSBUZWNobm9sb2d5IENvLiwgTHRkLgotQUNCRUI2ICAgICAoYmFzZSAxNikJCVZpc3VhbGVkZ2UgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkxM0ZMLi0xIE5vLiA3MTYsIFpob25nemhlbmcgUm9hZCwgWmhvbmdoZSBDaXR5LAotCQkJCVRhaXBlaSBDb3VudHksICAgMjM1MTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUFDLUMyLUVDICAgKGhleCkJCUNMVCBJTlQnTCBJTkQuIENPUlAuCi1BQ0MyRUMgICAgIChiYXNlIDE2KQkJQ0xUIElOVCdMIElORC4gQ09SUC4KLQkJCQkxMUYtMiwgTk8uMSwgWkhBTlFJQU4KLQkJCQlNSUFPTEkgIDM2MDQzCi0JCQkJVEFJV0FOLCBQUk9WSU5DRSBPRiBDSElOQQotCi1BQy1DOS0zNSAgIChoZXgpCQlOZXNzIENvcnBvcmF0aW9uCi1BQ0M5MzUgICAgIChiYXNlIDE2KQkJTmVzcyBDb3Jwb3JhdGlvbgotCQkJCTQvMTY3IFByb3NwZWN0IEhpZ2h3YXkKLQkJCQlTZXZlbiBIaWxscwotCQkJCVN5ZG5leSBOU1cgMjE0NwotCQkJCUFVU1RSQUxJQQotCi1BQy1DQS01NCAgIChoZXgpCQlUZWxsZHVzIFRlY2hub2xvZ2llcyBBQgotQUNDQTU0ICAgICAoYmFzZSAxNikJCVRlbGxkdXMgVGVjaG5vbG9naWVzIEFCCi0JCQkJU2tpZmZlcnbkZ2VuIDEwMgotCQkJCUx1bmQgIDIyNCA3OAotCQkJCVNXRURFTgotCi1BQy1DQS1CQSAgIChoZXgpCQlNaWRva3VyYSBDby4sIEx0ZC4gCi1BQ0NBQkEgICAgIChiYXNlIDE2KQkJTWlkb2t1cmEgQ28uLCBMdGQuIAotCQkJCTd0aCBGbG9vciBBemFidWRhaSBIaW5va2kgYnVpbGRpbmcKLQkJCQkgMy0xLTUgQXphYnVkYWkgTWluYXRvLWt1IAotCQkJCVRva3lvICAxMDYtMDA0MQotCQkJCUpBUEFOCi0KLUFDLUNCLTA5ICAgKGhleCkJCUhlZmNvbSBNZXRlcmluZyAoUHR5KSBMdGQKLUFDQ0IwOSAgICAgKGJhc2UgMTYpCQlIZWZjb20gTWV0ZXJpbmcgKFB0eSkgTHRkCi0JCQkJUE8gQm94IDEwNzcwCi0JCQkJQ2VudHVyaW9uIEdhdXRlbmcgMDA0NgotCQkJCVNPVVRIIEFGUklDQQotCi1BQy1DQy04RSAgIChoZXgpCQlBeGlzIENvbW11bmljYXRpb25zIEFCCi1BQ0NDOEUgICAgIChiYXNlIDE2KQkJQXhpcyBDb21tdW5pY2F0aW9ucyBBQgotCQkJCUVtZGFsYXbkZ2VuIDE0Ci0JCQkJTFVORCAgMjIzNjkKLQkJCQlTV0VERU4KLQotQUMtQ0UtOEYgICAoaGV4KQkJSFdBIFlBTyBURUNITk9MT0dJRVMgQ08uLCBMVEQKLUFDQ0U4RiAgICAgKGJhc2UgMTYpCQlIV0EgWUFPIFRFQ0hOT0xPR0lFUyBDTy4sIExURAotCQkJCU5PLiA2LCBMTi4gNDgsICBOQU5TSU5HIFJELiwKLQkJCQlZT05HS0FORyBDSVRZLCBUQUlOQU4gQ09VTlRZICA3MTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUFDLUNGLTIzICAgKGhleCkJCUhpLWZseWluZyBlbGVjdHJvbmljcyB0ZWNobm9sb2d5IENvLixMdGQKLUFDQ0YyMyAgICAgKGJhc2UgMTYpCQlIaS1mbHlpbmcgZWxlY3Ryb25pY3MgdGVjaG5vbG9neSBDby4sTHRkCi0JCQkJUm9vbSBCMTAxLDQ1NiBCaUJvIFJhb2QsUHVEb25nCi0JCQkJU2hhbmdoYWkgMjAxMjAwCi0JCQkJQ0hJTkEKLQotQUMtRDEtODAgICAoaGV4KQkJQ3JleGVuZG8gQnVzaW5lc3MgU29sdXRpb25zLCBJbmMuCi1BQ0QxODAgICAgIChiYXNlIDE2KQkJQ3JleGVuZG8gQnVzaW5lc3MgU29sdXRpb25zLCBJbmMuCi0JCQkJMTAyMDEgUy4gNXN0ICBTdC4KLQkJCQlTdWl0ZSBBLTI2NQotCQkJCVBob2VuaXggQVogODUwNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUFDLUQzLTY0ICAgKGhleCkJCUFCQiBTUEEsIEFCQiBTQUNFIERJVi4KLUFDRDM2NCAgICAgKGJhc2UgMTYpCQlBQkIgU1BBLCBBQkIgU0FDRSBESVYuCi0JCQkJVi5MRSBMLkxBTUEsIDMzCi0JCQkJU0VTVE8gUy5HSU9WQU5OSSBNSSAyMDA5OQotCQkJCUlUQUxZCi0KLUFDLUQ5LUQ2ICAgKGhleCkJCXRjaSBHbWJICi1BQ0Q5RDYgICAgIChiYXNlIDE2KQkJdGNpIEdtYkgKLQkJCQlMdWR3aWctUmlubi1TdHJh77+9ZSAxMC0xNAotCQkJCUhldWNoZWxoZWltIEhlc3NlbiAzNTQ1MgotCQkJCUdFUk1BTlkKLQotQUMtREUtNDggICAoaGV4KQkJUFJJVkFURQotQUNERTQ4ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi1BQy1FMy00OCAgIChoZXgpCQlNYWRnZVRlY2gsIEluYwotQUNFMzQ4ICAgICAoYmFzZSAxNikJCU1hZGdlVGVjaCwgSW5jCi0JCQkJODc5IE1hcGxlIFN0Ci0JCQkJQ29udG9vY29vayBOSCAwMzIyOQotCQkJCVVOSVRFRCBTVEFURVMKLQotQUMtRTgtN0IgICAoaGV4KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotQUNFODdCICAgICAoYmFzZSAxNikJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLQkJCQlCdWlsZGluZyAxNyxOYW5nYW5nIEluZHVzdHJpYWwgUGFyaywgVGFuZ3RvdSAzbmQgSW5kdXN0cmlhbCBFc3RhdGUsU2hpeWFuIEJhb2FuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUFDLUU5LUFBICAgKGhleCkJCUhheSBTeXN0ZW1zIEx0ZAotQUNFOUFBICAgICAoYmFzZSAxNikJCUhheSBTeXN0ZW1zIEx0ZAotCQkJCVdhdGVybWFyawotCQkJCUFsYmEgQ2FtcHVzCi0JCQkJTGl2aW5nc3RvbiBXZXN0IExvdGhpYW4gRUg1NCA3RUcKLQkJCQlVTklURUQgS0lOR0RPTQotCi1BQy1FQS02QSAgIChoZXgpCQlHRU5JWCBJTkZPQ09NTSBDTy4sIExURC4KLUFDRUE2QSAgICAgKGJhc2UgMTYpCQlHRU5JWCBJTkZPQ09NTSBDTy4sIExURC4KLQkJCQkyRiwgRGFlYm8gQmxkZy4gIzEwMDktMzQKLQkJCQlEb2tzYW4tRG9uZywgS2V1bWNoZW9uLUd1Ci0JCQkJU2VvdWwgIDE1My04MjkKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQUMtRUUtM0IgICAoaGV4KQkJNmhhcm1vbmljcyBJbmMKLUFDRUUzQiAgICAgKGJhc2UgMTYpCQk2aGFybW9uaWNzIEluYwotCQkJCTIxIENvbmNvdXJzZSBHYXRlIC0gU3VpdGUgMTAKLQkJCQlPdHRhd2EgT250YXJpbyBLMkUgN1M0Ci0JCQkJQ0FOQURBCi0KLUFDLUYwLUIyICAgKGhleCkJCUJlY2tlciBFbGVjdHJvbmljcyBUYWl3YW4gTHRkLgotQUNGMEIyICAgICAoYmFzZSAxNikJCUJlY2tlciBFbGVjdHJvbmljcyBUYWl3YW4gTHRkLgotCQkJCU5vLjMyLCBMYW5lIDMwLCBMb25nIFl1YW4gUmQuCi0JCQkJTG9uZy1UYW4gVGFveXVhbiAzMjU0NAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQUMtRjktN0UgICAoaGV4KQkJRUxFU1lTIElOQy4KLUFDRjk3RSAgICAgKGJhc2UgMTYpCQlFTEVTWVMgSU5DLgotCQkJCVN1aXQgNjIzLCA4MTItMSwgSHlvbXVuLWRvbmcKLQkJCQlVbHNhbiBCdWstZ3UgNjgzLTM2MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CMC0xQi03QyAgIChoZXgpCQlPbnRyb2wgQS5TLgotQjAxQjdDICAgICAoYmFzZSAxNikJCU9udHJvbCBBLlMuCi0JCQkJVHVyY2FuIENhZCBObzoxOSBZLkR1ZHVsbHUKLQkJCQlVbXJhbml5ZSBJc3RhbmJ1bCAzNDc3NQotCQkJCVRVUktFWQotCi1CMC0xQy05MSAgIChoZXgpCQlFbGltIENvCi1CMDFDOTEgICAgIChiYXNlIDE2KQkJRWxpbSBDbwotCQkJCTRGIEdhZ3UgUGxhemEgQi9EIDgxLTksIGplb25namEtZG9uZywgSmFuZ2FuLWd1LCAKLQkJCQlTdXdvbiBjaXR5IEd5ZW9uZ2dpLURvIDQ0MC0zMDAgCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUIwLTM4LTI5ICAgKGhleCkJCVNpbGljb253YXJlIFByZWNpc2lvbiBJbmR1c3RyaWVzIENvLiwgTHRkLgotQjAzODI5ICAgICAoYmFzZSAxNikJCVNpbGljb253YXJlIFByZWNpc2lvbiBJbmR1c3RyaWVzIENvLiwgTHRkLgotCQkJCU5vLiAxMjMsIFNlYy4zLCBEYSBGb25nIFJkLCBUYW50enUsIAotCQkJCVRhaWNodW5nICA0MjcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUIwLTQzLTVEICAgKGhleCkJCU51TEVEcywgSW5jLgotQjA0MzVEICAgICAoYmFzZSAxNikJCU51TEVEcywgSW5jLgotCQkJCTE0OTcgUG9pbnNldHRpYSBBdmUuCi0JCQkJU3VpdGUgMTUzCi0JCQkJVmlzdGEgQ0EgOTIwODEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUIwLTQ4LTdBICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotQjA0ODdBICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCTEtNkYsIEJ1aWxkaW5nIDIsIFBpbmdzaGFuZGF5dWFuIEluZHVzdHJpYWwsIFNvdXRoIFpvbmUsCi0JCQkJVGFveXVhbiBTdHJlZXQsIE5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi1CMC01MS04RSAgIChoZXgpCQlIb2xsIHRlY2hub2xvZ3kgQ08uTHRkLgotQjA1MThFICAgICAoYmFzZSAxNikJCUhvbGwgdGVjaG5vbG9neSBDTy5MdGQuCi0JCQkJRjIsQmxkIDI3LEFubGUgSW5kdXN0cmlhbCBQYXJrLE5hbnRvdSBHdWFua291IE5vLjIgUm9hZAotCQkJCU5hbnNoYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTIKLQkJCQlDSElOQQotCi1CMC01OC1DNCAgIChoZXgpCQlCcm9hZGNhc3QgTWljcm93YXZlIFNlcnZpY2VzLCBJbmMKLUIwNThDNCAgICAgKGJhc2UgMTYpCQlCcm9hZGNhc3QgTWljcm93YXZlIFNlcnZpY2VzLCBJbmMKLQkJCQkxMjM2NyBDcm9zdGh3YWl0ZSBDaXJjbGUKLQkJCQlQb3dheSBDQSA5MjA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtNUItMUYgICAoaGV4KQkJVEhFUk1PIEZJU0hFUiBTQ0lFTlRJRklDIFMuUC5BLgotQjA1QjFGICAgICAoYmFzZSAxNikJCVRIRVJNTyBGSVNIRVIgU0NJRU5USUZJQyBTLlAuQS4KLQkJCQlTVFJBREEgUklWT0xUQU5BIEtNIDYvNwotCQkJCVJPREFOTyBNSUxBTiAyMDA5MAotCQkJCUlUQUxZCi0KLUIwLTVDLUU1ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1CMDVDRTUgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlZcnR0aXBlbGxvbnRpZSA2Ci0JCQkJT3VsdSBPdSA5MDIzMAotCQkJCUZJTkxBTkQKLQotQjAtNjUtNjMgICAoaGV4KQkJU2hhbmdoYWkgUmFpbHdheSBDb21tdW5pY2F0aW9uIEZhY3RvcnkKLUIwNjU2MyAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBSYWlsd2F5IENvbW11bmljYXRpb24gRmFjdG9yeQotCQkJCU5vLjE3OSBXZXN0IEppYW5nY2hhbmcgcm9hZAotCQkJCVNoYW5naGFpICAyMDA0MzYKLQkJCQlDSElOQQotCi1CMC02NS1CRCAgIChoZXgpCQlBcHBsZSBJbmMKLUIwNjVCRCAgICAgKGJhc2UgMTYpCQlBcHBsZSBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CMC02Qy1CRiAgIChoZXgpCQkzYWxpdHkgRGlnaXRhbCBTeXN0ZW1zIEdtYkgKLUIwNkNCRiAgICAgKGJhc2UgMTYpCQkzYWxpdHkgRGlnaXRhbCBTeXN0ZW1zIEdtYkgKLQkJCQlHdXQgTWVyZ2VudGhhdSAxCi0JCQkJS2lzc2luZyBCYXllcm4gODY0MzgKLQkJCQlHRVJNQU5ZCi0KLUIwLTc1LTBDICAgKGhleCkJCVFBIENhZmUKLUIwNzUwQyAgICAgKGJhc2UgMTYpCQlRQSBDYWZlCi0JCQkJMzMgSmV3ZWxsIENvdXJ0Ci0JCQkJVW5pdCAxCi0JCQkJUG9ydHNtb3V0aCBOSCAwMzgwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtNzUtRDUgICAoaGV4KQkJWlRFIENvcnBvcmF0aW9uCi1CMDc1RDUgICAgIChiYXNlIDE2KQkJWlRFIENvcnBvcmF0aW9uCi0JCQkJMTIvRixaVEUgUiZEIEJ1aWxkaW5nLEtlamluYW4gUm9hZCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQjAtN0QtNjIgICAoaGV4KQkJRGlwbC4tSW5nLiBILiBIb3JzdG1hbm4gR21iSAotQjA3RDYyICAgICAoYmFzZSAxNikJCURpcGwuLUluZy4gSC4gSG9yc3RtYW5uIEdtYkgKLQkJCQlIdW1ib2xkdHN0ci4gMgotCQkJCUhlaWxpZ2VuaGF1cyAgNDI1NzkKLQkJCQlHRVJNQU5ZCi0KLUIwLTgxLUQ4ICAgKGhleCkJCUktc3lzIENvcnAKLUIwODFEOCAgICAgKGJhc2UgMTYpCQlJLXN5cyBDb3JwCi0JCQkJMjQ1NyBBdmlhdGlvbiBBdmUKLQkJCQlTdWl0ZSA5MDAKLQkJCQlOLiBDaGFybGVzdG9uICBTb3V0aCBDYXJvbGluYSAyOTQwNgotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtODktOTEgICAoaGV4KQkJTEdFIAotQjA4OTkxICAgICAoYmFzZSAxNikJCUxHRSAKLQkJCQk2MC0zOSAsIEthc2FuIC1kb25nICwgR3VtY2hlb24tZ3UuCi0JCQkJU2VvdWwgICAxNTMtODAxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUIwLThFLTFBICAgKGhleCkJCVVSYWRpbyBTeXN0ZW1zIENvLiwgTHRkCi1CMDhFMUEgICAgIChiYXNlIDE2KQkJVVJhZGlvIFN5c3RlbXMgQ28uLCBMdGQKLQkJCQlQaGFzZSBJSSBEMjAyLTIsIDEzNTUgSmluSmlIdSBCbHZkCi0JCQkJU3V6aG91IEluZHVzdHJpYWwgUGFyawotCQkJCVN1emhvdSBKaWFuZ3N1IDIxNTAyMQotCQkJCUNISU5BCi0KLUIwLTkwLTc0ICAgKGhleCkJCUZ1bGFuIEVsZWN0cm9uaWNzIExpbWl0ZWQKLUIwOTA3NCAgICAgKGJhc2UgMTYpCQlGdWxhbiBFbGVjdHJvbmljcyBMaW1pdGVkCi0JCQkJRmxhdCBCJkMsMy9GLEExIEJsb2NrLCBHYW94aW4gQ3liZXItVGVjaCBab25lLE5hbnNoYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQjAtOTEtMzQgICAoaGV4KQkJVGFsZW8KLUIwOTEzNCAgICAgKGJhc2UgMTYpCQlUYWxlbwotCQkJCTQxNDAgRHVibGluIEJsdmQKLQkJCQlTdWl0ZSA0MDAKLQkJCQlEdWJsaW4gQ2FsaWZvcm5pYSA5NDU2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtOTctM0EgICAoaGV4KQkJRS1GdWVsIENvcnBvcmF0aW9uCi1CMDk3M0EgICAgIChiYXNlIDE2KQkJRS1GdWVsIENvcnBvcmF0aW9uCi0JCQkJMTU0NjYgTG9zIEdhdG9zIEJsdmQuICMzNwotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtOTktMjggICAoaGV4KQkJRnVqaXRzdSBMaW1pdGVkCi1CMDk5MjggICAgIChiYXNlIDE2KQkJRnVqaXRzdSBMaW1pdGVkCi0JCQkJTXVzYXNoaS1rb3N1Z2kgVG93ZXIgUGxhY2UgQmxkZy4sCi0JCQkJNDAzLCBLb3N1Z2ktY2hvIDEtY2hvbWUsIE5ha2FoYXJhLWt1Ci0JCQkJS2F3YXNha2kgS2FuYWdhd2EgMjExLTAwNjMKLQkJCQlKQVBBTgotCi1CMC05QS1FMiAgIChoZXgpCQlTVEVNTUVSIElNQUdJTkcgR21iSAotQjA5QUUyICAgICAoYmFzZSAxNikJCVNURU1NRVIgSU1BR0lORyBHbWJICi0JCQkJR3V0ZW5iZXJnc3RyLiAxMQotCQkJCVB1Y2hoZWltIEJ5IDgyMTc4Ci0JCQkJR0VSTUFOWQotCi1CMC05Qi1ENCAgIChoZXgpCQlHTkggU29mdHdhcmUgSW5kaWEgUHJpdmF0ZSBMaW1pdGVkCi1CMDlCRDQgICAgIChiYXNlIDE2KQkJR05IIFNvZnR3YXJlIEluZGlhIFByaXZhdGUgTGltaXRlZAotCQkJCTkvMTQgU2VuZ2FuaSBBbW1hbiBLb2lsIFN0cmVldAotCQkJCU1hZHV2YW5rYXJhaSwgR3VpbmR5Ci0JCQkJQ2hlbm5haSBUYW1pbG5hZHUgNjAwMDMyCi0JCQkJSU5ESUEKLQotQjAtQTEtMEEgICAoaGV4KQkJUGl2b3RhbCBTeXN0ZW1zIENvcnBvcmF0aW9uCi1CMEExMEEgICAgIChiYXNlIDE2KQkJUGl2b3RhbCBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJNDY4MyAgQ2hhYm90IERyaXZlCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtQTctMkEgICAoaGV4KQkJRW5zZW1ibGUgRGVzaWducywgSW5jLgotQjBBNzJBICAgICAoYmFzZSAxNikJCUVuc2VtYmxlIERlc2lnbnMsIEluYy4KLQkJCQk4NzAgR29sZCBGbGF0IFJvYWQKLQkJCQlOZXZhZGEgQ2l0eSBDQSA5NTk1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtQTgtNkUgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotQjBBODZFICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtQUEtMzYgICAoaGV4KQkJR1VBTkdET05HIE9QUE8gTU9CSUxFIFRFTEVDT01NVU5JQ0FUSU9OUyBDT1JQLixMVEQuCi1CMEFBMzYgICAgIChiYXNlIDE2KQkJR1VBTkdET05HIE9QUE8gTU9CSUxFIFRFTEVDT01NVU5JQ0FUSU9OUyBDT1JQLixMVEQuCi0JCQkJTk8uMTggSEFJQklOIFJPQUQKLQkJCQlXVVNIQSxDSEFORydBTgotCQkJCURPTkdHVUFOIEdVQU5HRE9ORyA1MjM4NjAKLQkJCQlDSElOQQotCi1CMC1CMi1EQyAgIChoZXgpCQlaeXhlbCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotQjBCMkRDICAgICAoYmFzZSAxNikJCVp5eGVsIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJTm8uIDYsIElubm92YXRpb24gUm9hZCwgSUksCi0JCQkJIEhzaW5jaHUgU2NpZW5jZSBQYXJrLAotCQkJCUhzaW5jaHUgVGFpd2FuIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQjAtQjMtMkIgICAoaGV4KQkJU2xpY2FuIFNwLiB6IG8uby4KLUIwQjMyQiAgICAgKGJhc2UgMTYpCQlTbGljYW4gU3AuIHogby5vLgotCQkJCU0uIEtvbm9wbmlja2llaiAxOAotCQkJCUJ5ZGdvc3pjeiBLdWphd3Nrby1Qb21vcnNraWUgODUtMTI0Ci0JCQkJUE9MQU5ECi0KLUIwLUI4LUQ1ICAgKGhleCkJCU5hbmppbmcgTmVuZ3J1aSBBdXRvIEVxdWlwbWVudCBDTy4sTHRkCi1CMEI4RDUgICAgIChiYXNlIDE2KQkJTmFuamluZyBOZW5ncnVpIEF1dG8gRXF1aXBtZW50IENPLixMdGQKLQkJCQlOby4xMDggR2FuamlhYmlhbiBFYXN0IFlhb2h1YSBUb3duCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMDA0NgotCQkJCUNISU5BCi0KLUIwLUJELTZEICAgKGhleCkJCUVjaG9zdHJlYW1zIElubm92YXRpdmUgU29sdXRpb25zCi1CMEJENkQgICAgIChiYXNlIDE2KQkJRWNob3N0cmVhbXMgSW5ub3ZhdGl2ZSBTb2x1dGlvbnMKLQkJCQkxMTMwIENvaW5lciBDdC4KLQkJCQlDaXR5IG9mIEluZHVzdHJ5IENBIDkxNzQ4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CMC1CRC1BMSAgIChoZXgpCQlaQUtMQUQgRUxFS1RST05JQ1pOWSBTSU1TCi1CMEJEQTEgICAgIChiYXNlIDE2KQkJWkFLTEFEIEVMRUtUUk9OSUNaTlkgU0lNUwotCQkJCVBPRCBTS0FSUEEgNTFBCi0JCQkJQllER09TWkNaIEtVSkFXU0tPLVBPTU9SU0tJRSA4NS03OTYKLQkJCQlQT0xBTkQKLQotQjAtQkYtOTkgICAoaGV4KQkJV0laSVRET05HRE8KLUIwQkY5OSAgICAgKGJhc2UgMTYpCQlXSVpJVERPTkdETwotCQkJCTJGLCAyOTktMSwgMy1ET05HLCBTVU5HU1UgMi1HQQotCQkJCVNVTkdET05HLUtVCi0JCQkJU0VPVUwgIDEzMy04MzMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQjAtQzYtOUEgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotQjBDNjlBICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjAtQzgtM0YgICAoaGV4KQkJSmlhbmdzdSBDeW5yYXkgSU9UIENvLiwgTHRkLgotQjBDODNGICAgICAoYmFzZSAxNikJCUppYW5nc3UgQ3lucmF5IElPVCBDby4sIEx0ZC4KLQkJCQlCdWlsZGluZyBEMSwgMSBaaWRvbmcgcm9hZCwgUWl4aWEgZGlzdHJpY3QKLQkJCQlOYW5qaW5nIEppYW5nc3UgMjEwMDAwCi0JCQkJQ0hJTkEKLQotQjAtQzgtQUQgICAoaGV4KQkJUGVvcGxlIFBvd2VyIENvbXBhbnkKLUIwQzhBRCAgICAgKGJhc2UgMTYpCQlQZW9wbGUgUG93ZXIgQ29tcGFueQotCQkJCTYyMCBMb3dlbGwgQXZlCi0JCQkJUGFsbyBBbHRvIENBIDk0MzAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CMC1DRi00RCAgIChoZXgpCQlNSS1ab25lIFRlY2hub2xvZ3kgSXJlbGFuZAotQjBDRjREICAgICAoYmFzZSAxNikJCU1JLVpvbmUgVGVjaG5vbG9neSBJcmVsYW5kCi0JCQkJMm5kIGZsb29yLGJsb2NrIDEwIHVuaXQgMwotCQkJCUJsYW5jaGFyZHN0b3duIGNvcnBvcmF0ZSBwYXJrCi0JCQkJZHVibGluIEJsYW5jaGFyZHN0b3duIDE1Ci0JCQkJSVJFTEFORAotCi1CMC1EMC05QyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLUIwRDA5QyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQjAtRDItRjUgICAoaGV4KQkJVmVsbG8gU3lzdGVtcywgSW5jLgotQjBEMkY1ICAgICAoYmFzZSAxNikJCVZlbGxvIFN5c3RlbXMsIEluYy4KLQkJCQkxNTMwIE8nQnJpZW4gRHJpdmUKLQkJCQlNZW5sbyBQYXJrIENhbGlmb3JuaWEgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUIwLUUzLTlEICAgKGhleCkJCUNBVCBTWVNURU0gQ08uLExURC4KLUIwRTM5RCAgICAgKGJhc2UgMTYpCQlDQVQgU1lTVEVNIENPLixMVEQuCi0JCQkJMy0xNDctMjcgSGlnYXNpLXNpbm1hY2hpIEhpcm9oYXRhLWt1Ci0JCQkJSGltZWppIEh5b2dvIDY3MS0xMTIxCi0JCQkJSkFQQU4KLQotQjAtRTUtMEUgICAoaGV4KQkJTlJHIFNZU1RFTVMgSU5DCi1CMEU1MEUgICAgIChiYXNlIDE2KQkJTlJHIFNZU1RFTVMgSU5DCi0JCQkJUE8gQk9YIDA1MDkKLQkJCQlIaW5lc2J1cmcgVlQgMDU0NjEwNTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CMC1FNy01NCAgIChoZXgpCQkyV2lyZQotQjBFNzU0ICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDYWxpZm9ybmlhIDk1MTMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CMC1FOC05MiAgIChoZXgpCQlTRUlLTyBFUFNPTiBDT1JQT1JBVElPTgotQjBFODkyICAgICAoYmFzZSAxNikJCVNFSUtPIEVQU09OIENPUlBPUkFUSU9OCi0JCQkJMy0zLTUgT1dBCi0JCQkJU1VXQS1TSEkgTkFHQU5PLUtFTiAzOTItODUwMgotCQkJCUpBUEFOCi0KLUIwLUU5LTdFICAgKGhleCkJCUFkdmFuY2VkIE1pY3JvIFBlcmlwaGVyYWxzCi1CMEU5N0UgICAgIChiYXNlIDE2KQkJQWR2YW5jZWQgTWljcm8gUGVyaXBoZXJhbHMKLQkJCQlVbml0IDEgSGFycmllciBIb3VzZQotCQkJCVNlZGdld2F5IEJ1aXNuZXNzIFBhcmsKLQkJCQlXaXRjaGZvcmQgQ2FtYnJpZGdlc2hpcmUgQ0I2IDJIWQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUIwLUVDLTcxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotQjBFQzcxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CMC1GMS1CQyAgIChoZXgpCQlEaGVtYXggSW5nZW5pZXJvcyBMdGRhCi1CMEYxQkMgICAgIChiYXNlIDE2KQkJRGhlbWF4IEluZ2VuaWVyb3MgTHRkYQotCQkJCVNpZXRlIE9yaWVudGUgMTIzNAotCQkJCVZpbmEgZGVsIE1hciBSZWdpb24gZGUgVmFscGFyYWlzbyAyNTMwOTU0Ci0JCQkJQ0hJTEUKLQotQjQtMDEtNDIgICAoaGV4KQkJR0NJIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLixMVEQKLUI0MDE0MiAgICAgKGJhc2UgMTYpCQlHQ0kgU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLExURAotCQkJCU5vLjM4MSx4aW5nYW5nemhvbmcgcm9hZCAsCi0JCQkJR3VhbmdaaG91IEd1YW5nRG9uZyA1MTAzMTAKLQkJCQlDSElOQQotCi1CNC0wNC0xOCAgIChoZXgpCQlTbWFydGNoaXAgSW50ZWdyYXRlZCBJbmMuCi1CNDA0MTggICAgIChiYXNlIDE2KQkJU21hcnRjaGlwIEludGVncmF0ZWQgSW5jLgotCQkJCTlCLFNjaWVuY2UgUGxhemEsMTM1NSBKaW5KaUh1IEF2ZW51ZSxTdXpob3UgSW5kdXN0cmlhbCBQYXJrCi0JCQkJU3V6aG91IEppYW5nc3UgMjE1MDIxCi0JCQkJQ0hJTkEKLQotQjQtMDctRjkgICAoaGV4KQkJU0FNU1VORyBFTEVDVFJPLU1FQ0hBTklDUwotQjQwN0Y5ICAgICAoYmFzZSAxNikJCVNBTVNVTkcgRUxFQ1RSTy1NRUNIQU5JQ1MKLQkJCQlTdXdvbi1TaSwgR3llb25nZ2lfRG8sIEtvcmVhCi0JCQkJU3V3b24gR3llb25nZ2lfRG8gNDQzLTc0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CNC0wOC0zMiAgIChoZXgpCQlUQyBDb21tdW5pY2F0aW9ucwotQjQwODMyICAgICAoYmFzZSAxNikJCVRDIENvbW11bmljYXRpb25zCi0JCQkJMTc4ODEgQ2FydHdyaWdodCBSb2FkCi0JCQkJSXJ2aW5lIENBIDkyNjE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC0wQi03QSAgIChoZXgpCQlCcnVzYSBFbGVrdHJvbmlrIEFHCi1CNDBCN0EgICAgIChiYXNlIDE2KQkJQnJ1c2EgRWxla3Ryb25payBBRwotCQkJCU5ldWRvcmYgMTQKLQkJCQlTZW5ud2FsZCBTdC4gR2FsbGVuIDk0NjYKLQkJCQlTV0lUWkVSTEFORAotCi1CNC0wQy0yNSAgIChoZXgpCQlQYWxvIEFsdG8gTmV0d29ya3MKLUI0MEMyNSAgICAgKGJhc2UgMTYpCQlQYWxvIEFsdG8gTmV0d29ya3MKLQkJCQkzMzAwIE9sY290dCBTdHJlZXQKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtMEUtOTYgICAoaGV4KQkJSEVSQU4gCi1CNDBFOTYgICAgIChiYXNlIDE2KQkJSEVSQU4gCi0JCQkJTm8uODgsIEtlamkgM3JkIFJkLiwgR3Vpc2hhbiBUb3duc2hpcAotCQkJCVRhb3l1YW4gUi5PLkMgMzMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1CNC0wRS1EQyAgIChoZXgpCQlMRy1Fcmljc3NvbiBDby4sTHRkLgotQjQwRURDICAgICAoYmFzZSAxNikJCUxHLUVyaWNzc29uIENvLixMdGQuCi0JCQkJNTMzLEhvZ3llLTFkb25nLERvbmdhbi1ndQotCQkJCUxHIFImRCBDb21wbGV4LkxHLUVyaWNzc29uLAotCQkJCUFueWFuZy1zaGkgS3l1bmdraS1kbyA0MzEtNzQ5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI0LTE0LTg5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUI0MTQ4OSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LTFELUVGICAgKGhleCkJCUludGVybmV0IExhYm9yYXRvcmllcywgSW5jLgotQjQxREVGICAgICAoYmFzZSAxNikJCUludGVybmV0IExhYm9yYXRvcmllcywgSW5jLgotCQkJCVAuTy4gQm94IDc2OTcKLQkJCQlBdGxhbnRhIEdBIDMwMzU3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC0yMS0xRCAgIChoZXgpCQlCZWlqaW5nIEd1YW5nWGluIFRlY2hub2xvZ3kgQ28uLCBMdGQKLUI0MjExRCAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEd1YW5nWGluIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlSb29tIDMxMyxCIEJsZCxIb3Jpem9uIEludGVybmF0aW9uYWwgVG93ZXIsWmhpY2h1biBSb2FkLDYsSGFpZGlhbiBEaXN0cmljdCxCZWlqaW5nIENpdHksUC5SLkNoaW5hCi0JCQkJQmVpamluZyAgMTAwMDg2Ci0JCQkJQ0hJTkEKLQotQjQtMjEtOEEgICAoaGV4KQkJRG9nIEh1bnRlciBMTEMKLUI0MjE4QSAgICAgKGJhc2UgMTYpCQlEb2cgSHVudGVyIExMQwotCQkJCTggRmFuZXVpbCBIYWxsIFNRCi0JCQkJQm9zdG9uIE1BIDAyMTA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC0yOC1GMSAgIChoZXgpCQlFLVByaW1lIENvLiwgTHRkLgotQjQyOEYxICAgICAoYmFzZSAxNikJCUUtUHJpbWUgQ28uLCBMdGQuCi0JCQkJUm0xMjA3LCBLb2xvbiBTY2llbmNlIFZhbGxleSwgODExLAotCQkJCUt1cm8tRG9uZywgS3Vyby1LdQotCQkJCVNlb3VsICAxNTIwNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQjQtMkEtMzkgICAoaGV4KQkJT1JCSVQgTUVSUkVULCBzcG9sLiBzIHIuIG8uCi1CNDJBMzkgICAgIChiYXNlIDE2KQkJT1JCSVQgTUVSUkVULCBzcG9sLiBzIHIuIG8uCi0JCQkJVm9kbmFuc2thIDY3NS8zMAotCQkJCVByYWhhICAxOTggMDAKLQkJCQlDWkVDSCBSRVBVQkxJQwotCi1CNC0yQy1CRSAgIChoZXgpCQlEaXJlY3QgUGF5bWVudCBTb2x1dGlvbnMgTGltaXRlZAotQjQyQ0JFICAgICAoYmFzZSAxNikJCURpcmVjdCBQYXltZW50IFNvbHV0aW9ucyBMaW1pdGVkCi0JCQkJOTggQW56YWMgQXZlbnVlCi0JCQkJQXVja2xhbmQgIDEwMzUKLQkJCQlORVcgWkVBTEFORAotCi1CNC0zMS1COCAgIChoZXgpCQlBdml3ZXN0Ci1CNDMxQjggICAgIChiYXNlIDE2KQkJQXZpd2VzdAotCQkJCTYgcnVlIGR1IFBhdGlzIFRhdGVsaW4KLQkJCQlSZW5uZXMgIDM1NzAwCi0JCQkJRlJBTkNFCi0KLUI0LTM1LTY0ICAgKGhleCkJCUZ1amlhbiBUaWFuIENoZW5nIEVsZWN0cm9uIFNjaWVuY2UgJiBUZWNobmljYWwgRGV2ZWxvcG1lbnQgQ28uLEx0ZC4KLUI0MzU2NCAgICAgKGJhc2UgMTYpCQlGdWppYW4gVGlhbiBDaGVuZyBFbGVjdHJvbiBTY2llbmNlICYgVGVjaG5pY2FsIERldmVsb3BtZW50IENvLixMdGQuCi0JCQkJMTgwMSB1bml0LFRpYW4gYW4gQ3liZXIgVGltZXMgVG93ZXIgQSxGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotQjQtMzUtRjcgICAoaGV4KQkJWmhlamlhbmcgUGVhcm1haW4gRWxlY3Ryb25pY3MgQ28ubHRkLgotQjQzNUY3ICAgICAoYmFzZSAxNikJCVpoZWppYW5nIFBlYXJtYWluIEVsZWN0cm9uaWNzIENvLmx0ZC4KLQkJCQk0RiBZaXRhaSBNYW5zaW9uLCA3NiBHdWN1aSBSb2FkLAotCQkJCUhhbmd6aG91IFpoZWppYW5nIDMxMDAxMgotCQkJCUNISU5BCi0KLUI0LTM3LTQxICAgKGhleCkJCUNvbnNlcnQsIEluYy4KLUI0Mzc0MSAgICAgKGJhc2UgMTYpCQlDb25zZXJ0LCBJbmMuCi0JCQkJNDcwMCBGYWxscyBvZiBOZXVzZSBSZC4KLQkJCQlTdWl0ZSAzNDAKLQkJCQlSYWxlaWdoIE5DIDI3NjA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC0zOS1ENiAgIChoZXgpCQlQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi1CNDM5RDYgICAgIChiYXNlIDE2KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotCQkJCTgwMCBGb290aGlsbHMgQmx2ZC4KLQkJCQlSb3NldmlsbGUgQ2FsaWZvcm5pYSA5NTc0NwotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtM0QtQjIgICAoaGV4KQkJRGVncmVhbmUgSG9yaXpvbgotQjQzREIyICAgICAoYmFzZSAxNikJCURlZ3JlYW5lIEhvcml6b24KLQkJCQk3MzAgUnVlIGRlIGwmIzM5O0luaXRpYXRpdmUKLQkJCQlDdWVycyBWYXIgODMzOTAKLQkJCQlGUkFOQ0UKLQotQjQtNDEtN0EgICAoaGV4KQkJU2hlblpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sTHRkCi1CNDQxN0EgICAgIChiYXNlIDE2KQkJU2hlblpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sTHRkCi0JCQkJNEYsQmFpeWluZyBCdWlsZGluZywgTm8uMTAxOSxOYW5oYWkgUkQsU2hla291Ci0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA2NwotCQkJCUNISU5BCi0KLUI0LTRDLUMyICAgKGhleCkJCU5SIEVMRUNUUklDIENPLiwgTFRECi1CNDRDQzIgICAgIChiYXNlIDE2KQkJTlIgRUxFQ1RSSUMgQ08uLCBMVEQKLQkJCQk2OSxTdXl1YW4gQXZlbnVlCi0JCQkJSmlhbmduaW5nCi0JCQkJTmFuamluZyBKaWFuZ3N1IDIxMTEwMgotCQkJCUNISU5BCi0KLUI0LTUxLUY5ICAgKGhleCkJCU5CIFNvZnR3YXJlCi1CNDUxRjkgICAgIChiYXNlIDE2KQkJTkIgU29mdHdhcmUKLQkJCQlFaWNoaGFsZGUgMwotCQkJCVdlaXNzYWNoIGkuIFQuIEJhZGVuLVf8cnR0ZW1iZXJnIDcxNTU0Ci0JCQkJR0VSTUFOWQotCi1CNC01Mi01MyAgIChoZXgpCQlTZWFnYXRlIFRlY2hub2xvZ3kKLUI0NTI1MyAgICAgKGJhc2UgMTYpCQlTZWFnYXRlIFRlY2hub2xvZ3kKLQkJCQkxMjgwIERpc2MgRHJpdmUKLQkJCQlTaGFrb3BlZSBNTiA1NTM3OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtNTUtNzAgICAoaGV4KQkJQm9yZWEKLUI0NTU3MCAgICAgKGJhc2UgMTYpCQlCb3JlYQotCQkJCU1sYWthIDFiCi0JCQkJQmVndW5qZSAgU0ktNDI3NQotCQkJCVNMT1ZFTklBCi0KLUI0LTU4LTYxICAgKGhleCkJCUNSZW1vdGUsIExMQwotQjQ1ODYxICAgICAoYmFzZSAxNikJCUNSZW1vdGUsIExMQwotCQkJCTExOTUgTm9lbCBEcml2ZQotCQkJCU1FTkxPIFBBUksgQ0EgOTQwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LTVDLUE0ICAgKGhleCkJCVRoaW5nLXRhbGsgV2lyZWxlc3MgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ29ycG9yYXRpb24gTGltaXRlZAotQjQ1Q0E0ICAgICAoYmFzZSAxNikJCVRoaW5nLXRhbGsgV2lyZWxlc3MgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2dpZXMgQ29ycG9yYXRpb24gTGltaXRlZAotCQkJCTQ5OCBHdW8gU2hvdSBKaW5nIFJvYWQsIFN1aXRlIDEwNDAyCi0JCQkJU2hhbmdoYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLUI0LTYyLTM4ICAgKGhleCkJCUV4YWJsb3gKLUI0NjIzOCAgICAgKGJhc2UgMTYpCQlFeGFibG94Ci0JCQkJMzY1IFNhbiBBbnRvbmlvIFJvYWQKLQkJCQlNb3VudGFpbiBWaWV3IENBIDk0MDQwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC02Ny1FOSAgIChoZXgpCQlRaW5nZGFvIEdvZXJUZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLUI0NjdFOSAgICAgKGJhc2UgMTYpCQlRaW5nZGFvIEdvZXJUZWsgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQk1RiwgTm8uMyBCdWlsZGluZywgRm9ydHVuZSBDZW50ZXIKLQkJCQlOby4xOCwgUWlubGluZyBSb2FkLCBMYW9zaGFuIERpc3RyaWN0Ci0JCQkJUWluZ2RhbyBTaGFuZG9uZyAyNjYwNjEKLQkJCQlDSElOQQotCi1CNC03NC05RiAgIChoZXgpCQlhc2tleSBjb21wdXRlciBjb3JwCi1CNDc0OUYgICAgIChiYXNlIDE2KQkJYXNrZXkgY29tcHV0ZXIgY29ycAotCQkJCTExMEYsTk8uMTE5LENISUVOS0FORyBSRCxDSFVORy1ITywKLQkJCQlUQUlQRUkgMjM1ODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUI0LTgyLTU1ICAgKGhleCkJCVJlc2VhcmNoIFByb2R1Y3RzIENvcnBvcmF0aW9uCi1CNDgyNTUgICAgIChiYXNlIDE2KQkJUmVzZWFyY2ggUHJvZHVjdHMgQ29ycG9yYXRpb24KLQkJCQkxMDE1IEUuIFdhc2hpbmd0b24gQXZlCi0JCQkJTWFkaXNvbiBXSSA1MzcwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtODItQzUgICAoaGV4KQkJUmVsYXkyLCBJbmMuCi1CNDgyQzUgICAgIChiYXNlIDE2KQkJUmVsYXkyLCBJbmMuCi0JCQkJMTUyNSBNY0NhcnRoeSBCbHZkLiwgCi0JCQkJU3VpdGUgIzIwOQotCQkJCU1pbHBpdGFzIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC04Mi1GRSAgIChoZXgpCQlBc2tleSBDb21wdXRlciBDb3JwCi1CNDgyRkUgICAgIChiYXNlIDE2KQkJQXNrZXkgQ29tcHV0ZXIgQ29ycAotCQkJCTEwRixOTy4xMTksQ0hJRU5LQU5HIFJELENIVU5HLUhPLAotCQkJCVRBSVBFSSAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUI0LTg5LTEwICAgKGhleCkJCUNvc3RlciBULkUuIFMuUC5BLgotQjQ4OTEwICAgICAoYmFzZSAxNikJCUNvc3RlciBULkUuIFMuUC5BLgotCQkJCVZpYSBTYW4gR2lvdmFubmkgQmF0dGlzdGEgRGUgTGEgU2FsbGUgNC9hCi0JCQkJTWlsYW5vIE1JIDIwMTMyCi0JCQkJSVRBTFkKLQotQjQtOTQtNEUgICAoaGV4KQkJV2VUZWxlY29tIENvLiwgTHRkLgotQjQ5NDRFICAgICAoYmFzZSAxNikJCVdlVGVsZWNvbSBDby4sIEx0ZC4KLQkJCQlUaGUnTyBQbHVzICM5MTUKLQkJCQlTYW5ib24tZG9uZwotCQkJCUd1bnBvLXNpIEt5dW5nZ2ktZG8gNDM1LTgwNQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CNC05OS1CQSAgIChoZXgpCQlIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotQjQ5OUJBICAgICAoYmFzZSAxNikJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCU1haWxjb2RlIDYuMy4wNDkKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC05RS1FNiAgIChoZXgpCQlTSEVOWkhFTiBURUNITk9MT0dZIENPIExURAotQjQ5RUU2ICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIFRFQ0hOT0xPR1kgQ08gTFRECi0JCQkJTk8zNCBTSElMT05HIFJECi0JCQkJU0hJWUFORyBUT1dOCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDkxNzMyCi0JCQkJQ0hJTkEKLQotQjQtQTQtQjUgICAoaGV4KQkJWmVuIEV5ZSBDby4sTHRkCi1CNEE0QjUgICAgIChiYXNlIDE2KQkJWmVuIEV5ZSBDby4sTHRkCi0JCQkJIzQwMSwgMTU3LTUgQ2h1bnVpLWRvbmcKLQkJCQlXb25taS1ndQotCQkJCUJ1Y2hlb24tc2kgR3llb25nZ2ktZG8gNDIwLTg1OQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CNC1BNC1FMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1CNEE0RTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1BNS1BOSAgIChoZXgpCQlNT0RJIEdtYkgKLUI0QTVBOSAgICAgKGJhc2UgMTYpCQlNT0RJIEdtYkgKLQkJCQlLYXBlbGxlbndlZyAyMQotCQkJCVJFSUNIU0hPRi1TaW5zcGVydCAgNTE1ODAKLQkJCQlHRVJNQU5ZCi0KLUI0LUFBLTREICAgKGhleCkJCUVuc2VxdWVuY2UsIEluYy4KLUI0QUE0RCAgICAgKGJhc2UgMTYpCQlFbnNlcXVlbmNlLCBJbmMuCi0JCQkJMTExIFNXIDV0aCBBdmUgU3VpdGUgMTQwMAotCQkJCVBvcnRsYW5kIE9SIDk3MjA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1CMC0xNyAgIChoZXgpCQlBdmF5YSwgSW5jCi1CNEIwMTcgICAgIChiYXNlIDE2KQkJQXZheWEsIEluYwotCQkJCTIxMSBNb3VudCBBaXJ5IFJvYWQgCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMC0yMzExIAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtQjMtNjIgICAoaGV4KQkJWlRFIENvcnBvcmF0aW9uCi1CNEIzNjIgICAgIChiYXNlIDE2KQkJWlRFIENvcnBvcmF0aW9uCi0JCQkJMTIvRixaVEUgUiZEIEJ1aWxkaW5nLGtlamluYW4gUm9hZCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQjQtQjUtMkYgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1CNEI1MkYgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUI1LUFGICAgKGhleCkJCU1pbnN1bmcgRWxlY3Ryb25pY3MKLUI0QjVBRiAgICAgKGJhc2UgMTYpCQlNaW5zdW5nIEVsZWN0cm9uaWNzCi0JCQkJTWVnYS12YWxsZXkgIzYyMAotCQkJCURvbmdhbi1ndSBHd2FueWFuZy1kb25nLCA3OTkKLQkJCQlBbnlhbmctc2kgS3llb25nZ2ktZG8gNDMxLTc2NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CNC1CNi03NiAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLUI0QjY3NiAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLUI0LUI4LThEICAgKGhleCkJCVRodWggQ29tcGFueQotQjRCODhEICAgICAoYmFzZSAxNikJCVRodWggQ29tcGFueQotCQkJCTYwNSAgVGVycml0b3JpYWwgRHIKLQkJCQlTdWl0ZSBDCi0JCQkJQm9saW5nYnJvb2sgSUwgNjA0NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUM0LTRFICAgKGhleCkJCVZYTCBlVGVjaCBQdnQgTHRkCi1CNEM0NEUgICAgIChiYXNlIDE2KQkJVlhMIGVUZWNoIFB2dCBMdGQKLQkJCQkjOTEsIDExdGggTWFpbiwgQmVndXIgTWFpbiBSb2FkCi0JCQkJSG9uZ2FzYW5kcmEKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDA2OAotCQkJCUlORElBCi0KLUI0LUM3LTk5ICAgKGhleCkJCU1vdG9yb2xhIFNvbHV0aW9ucyBJbmMuCi1CNEM3OTkgICAgIChiYXNlIDE2KQkJTW90b3JvbGEgU29sdXRpb25zIEluYy4KLQkJCQkxIE1vdG9yb2xhIFBsYXphCi0JCQkJSG9sdHN2aWxsZSBOWSAxMTc0MQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtQzgtMTAgICAoaGV4KQkJVU1QSSBFbGV0dHJvbmljYQotQjRDODEwICAgICAoYmFzZSAxNikJCVVNUEkgRWxldHRyb25pY2EKLQkJCQlWaWEgUmVzcGlnaGksIDE1Ci0JCQkJQ2F0dG9saWNhICA0Nzg0MQotCQkJCUlUQUxZCi0KLUI0LUNGLURCICAgKGhleCkJCVNoZW56aGVuIEppdXpob3UgRWxlY3RyaWMgQ28uLExURAotQjRDRkRCICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEppdXpob3UgRWxlY3RyaWMgQ28uLExURAotCQkJCTZGLEppdXpob3UgRWxlY3RyaWMgQnVpbGRpbmcsU291dGhlcm4gTm8uMTJSRC4sSGktVGVjaCBJbmR1c3RyaWFsIFBhcmssTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQjQtRDgtQTkgICAoaGV4KQkJQmV0dGVyQm90cwotQjREOEE5ICAgICAoYmFzZSAxNikJCUJldHRlckJvdHMKLQkJCQkxNjAwIFdpbHNvbiBXYXkgU0UsIFN0ZS4gOQotCQkJCVNteXJuYSBHQSAzMDA4MgotCQkJCVVOSVRFRCBTVEFURVMKLQotQjQtRDgtREUgICAoaGV4KQkJaW90YSBDb21wdXRpbmcsIEluYy4KLUI0RDhERSAgICAgKGJhc2UgMTYpCQlpb3RhIENvbXB1dGluZywgSW5jLgotCQkJCTIyNzUgRWFzdCBCYXlzaG9yZSBSb2FkCi0JCQkJU3VpdGUgMTA4Ci0JCQkJUGFsbyBBbHRvIENBIDk0MzAzLTMyMjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUUwLUNEICAgKGhleCkJCUlPIFR1cmJpbmUsIEluYy4KLUI0RTBDRCAgICAgKGJhc2UgMTYpCQlJTyBUdXJiaW5lLCBJbmMuCi0JCQkJMzAzMSBUaXNjaCBXYXksIFN1aXRlIDQ1MAotCQkJCVNhbiBKb3NlIENBIDk1MTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1FMS1FQiAgIChoZXgpCQlQUklWQVRFCi1CNEUxRUIgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLUI0LUVELTE5ICAgKGhleCkJCVBpZSBEaWdpdGFsLCBJbmMuCi1CNEVEMTkgICAgIChiYXNlIDE2KQkJUGllIERpZ2l0YWwsIEluYy4KLQkJCQk1NzUgTWFya2V0IHN0LiwgOHRoIGZsb29yCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5NDEwNS0yODIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CNC1FRC01NCAgIChoZXgpCQlXb2hsZXIgVGVjaG5vbG9naWVzCi1CNEVENTQgICAgIChiYXNlIDE2KQkJV29obGVyIFRlY2hub2xvZ2llcwotCQkJCTMxMDU1IEh1bnR3b29kIEF2ZW51ZQotCQkJCUhheXdhcmQgQ0EgOTQ1NDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUVFLUQ0ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1CNEVFRDQgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI0LUYzLTIzICAgKGhleCkJCVBFVEFURUwgSU5DLgotQjRGMzIzICAgICAoYmFzZSAxNikJCVBFVEFURUwgSU5DLgotCQkJCSMzMjIgVEhFIE8gVklMTEUgNzIwLTI1LCBZRU9LU0FNLURPTkcKLQkJCQlHQU5HTkFNLUdVIFNFT1VMIDEzNTA4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CNC1GQy03NSAgIChoZXgpCQlTRU1BIEVsZWN0cm9uaWNzKEhLKSBDTy4sTFRECi1CNEZDNzUgICAgIChiYXNlIDE2KQkJU0VNQSBFbGVjdHJvbmljcyhISykgQ08uLExURAotCQkJCVhpYWxpbmdiZWkgSW5kdXN0cmlhbCBab25lICBMaWFvYnUsIAotCQkJCURvbmdndWFuIEd1YW5nZG9uZyA1MjM0MTEKLQkJCQlDSElOQQotCi1COC0wMy0wNSAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLUI4MDMwNSAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLUI4LTBCLTlEICAgKGhleCkJCVJPUEVYIEluZHVzdHJpZS1FbGVrdHJvbmlrIEdtYkgKLUI4MEI5RCAgICAgKGJhc2UgMTYpCQlST1BFWCBJbmR1c3RyaWUtRWxla3Ryb25payBHbWJICi0JCQkJR2Fuc2FlY2tlciAyMQotCQkJCUJpZXRpZ2hlaW0tQmlzc2luZ2VuIEJhZGVuIFd1ZXJ0dGVtYmVyZyA3NDMyMQotCQkJCUdFUk1BTlkKLQotQjgtMTQtMTMgICAoaGV4KQkJS2VlbiBIaWdoIEhvbGRpbmcoSEspIEx0ZC4KLUI4MTQxMyAgICAgKGJhc2UgMTYpCQlLZWVuIEhpZ2ggSG9sZGluZyhISykgTHRkLgotCQkJCTI1dGggRmxvb3IsIEluLWxvbmcgRGV2ZWxvcG1lbnQgQ2VudHJlLCBOby42MDI1IFNoZW5uYW4gQXZlCi0JCQkJRnV0aWFuIERpc3RyaWN0LCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgIDUxODA0MAotCQkJCUNISU5BCi0KLUI4LTE3LUMyICAgKGhleCkJCUFwcGxlLCBJbmMuCi1CODE3QzIgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQljdXBlcnRpbm8gIGNBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1COC0xOS05OSAgIChoZXgpCQlOZXN5cwotQjgxOTk5ICAgICAoYmFzZSAxNikJCU5lc3lzCi0JCQkJRW5lcmdldGljaGVza2F5YSwgMQotCQkJCU1vc2NvdyAgMTExMTE2Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLUI4LTIwLUU3ICAgKGhleCkJCUd1YW5nemhvdSBIb3Jpem9udGFsIEluZm9ybWF0aW9uICYgTmV0d29yayBJbnRlZ3JhdGlvbiBDby4gTHRkCi1CODIwRTcgICAgIChiYXNlIDE2KQkJR3Vhbmd6aG91IEhvcml6b250YWwgSW5mb3JtYXRpb24gJiBOZXR3b3JrIEludGVncmF0aW9uIENvLiBMdGQKLQkJCQlGbG9vciAxMKOsR29sZGVuIFN0YXIgQnVpbGRpbmejrFd1c2hhbiBIYW5qaW5nIFJvYWSjrFRpYW5oZSBEaXN0cmljdKOsR3Vhbmd6aG91IENpdHkKLQkJCQlHdWFuZ3pob3UgR3Vhbmdkb25nIFByb3ZpbmNlIDUxMDYzMAotCQkJCUNISU5BCi0KLUI4LTI2LUQ0ICAgKGhleCkJCUZ1cnVrYXdhIEluZHVzdHJpYWwgUy5BLiBQcm9kdXRvcyBFbOl0cmljb3MKLUI4MjZENCAgICAgKGJhc2UgMTYpCQlGdXJ1a2F3YSBJbmR1c3RyaWFsIFMuQS4gUHJvZHV0b3MgRWzpdHJpY29zCi0JCQkJUnVhIEhhc2RydWJhbCBCZWxsZWdhcmQsIDgyMAotCQkJCUJhaXJybzogQ2lkYWRlIEluZHVzdHJpYWwgZGUgQ3VyaXRpYmEKLQkJCQlQYXJhbmEgODE0NjAtMTIwCi0JCQkJQlJBWklMCi0KLUI4LTI3LUVCICAgKGhleCkJCVJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCi1CODI3RUIgICAgIChiYXNlIDE2KQkJUmFzcGJlcnJ5IFBpIEZvdW5kYXRpb24KLQkJCQlNaXRjaGVsbCBXb29kIEhvdXNlCi0JCQkJQ2FsZGVjb3RlIENhbWJyaWRnZXNoaXJlIENCMjMgN05VCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQjgtMjgtOEIgICAoaGV4KQkJUGFya2VyIEhhbm5pZmluCi1CODI4OEIgICAgIChiYXNlIDE2KQkJUGFya2VyIEhhbm5pZmluCi0JCQkJQ29uZGl0aW9uIE1vbml0b3JpbmcgQ2VudHJlCi0JCQkJQnJ1bmVsIFdheQotCQkJCVRoZXRmb3JkIE5vcmZvbGsgSVAyNCAxSFAKLQkJCQlVTklURUQgS0lOR0RPTQotCi1COC0yQS1EQyAgIChoZXgpCQlFRlIgRXVyb3DkaXNjaGUgRnVuay1SdW5kc3RldWVydW5nIEdtYkgKLUI4MkFEQyAgICAgKGJhc2UgMTYpCQlFRlIgRXVyb3DkaXNjaGUgRnVuay1SdW5kc3RldWVydW5nIEdtYkgKLQkJCQlOeW1waGVuYnVyZ2VyIFN0ci4gMjBiCi0JCQkJTXVuaWNoICA4MDMzNQotCQkJCUdFUk1BTlkKLQotQjgtMkMtQTAgICAoaGV4KQkJSG9uZXl3ZWxsIEhvbU1lZAotQjgyQ0EwICAgICAoYmFzZSAxNikJCUhvbmV5d2VsbCBIb21NZWQKLQkJCQkzNDAwIEludGVydGVjaCBEcml2ZQotCQkJCVN1aXRlIDIwMAotCQkJCUJyb29rZmllbGQgV0kgNTMwMjUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LTNBLTdCICAgKGhleCkJCVdvcmxkcGxheSAoQ2FuYWRhKSBJbmMuCi1CODNBN0IgICAgIChiYXNlIDE2KQkJV29ybGRwbGF5IChDYW5hZGEpIEluYy4KLQkJCQk4MDMtMjR0aCBBdmUgU0UsIFVuaXQgMjAwCi0JCQkJQ2FsZ2FyeSBBbGJlcnRhIFQyRyAxUDUKLQkJCQlDQU5BREEKLQotQjgtM0QtNEUgICAoaGV4KQkJU2hlbnpoZW4gQ3VsdHJhdmlldyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZCBTaGFuZ2hhaSBCcmFuY2gKLUI4M0Q0RSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBDdWx0cmF2aWV3IERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkIFNoYW5naGFpIEJyYW5jaAotCQkJCTIvRixCdWlsZGluZyM1LDE2OTBDYWlsdW4gUm9hZCxaaGFuZ2ppYW5nIEhpLXRlY2ggUGFyaywKLQkJCQlTaGFuZ2hhaSAgMjAxMjAzCi0JCQkJQ0hJTkEKLQotQjgtNDEtNUYgICAoaGV4KQkJQVNQIEFHCi1CODQxNUYgICAgIChiYXNlIDE2KQkJQVNQIEFHCi0JCQkJTWF4LSBQbGFuY2stU3RyLiAxNSBhLWMKLQkJCQlFcmtyYXRoIE5SVyA0MDY5OQotCQkJCUdFUk1BTlkKLQotQjgtNTUtMTAgICAoaGV4KQkJWmlvbmNvbSBFbGVjdHJvbmljcyAoU2hlbnpoZW4pIEx0ZC4KLUI4NTUxMCAgICAgKGJhc2UgMTYpCQlaaW9uY29tIEVsZWN0cm9uaWNzIChTaGVuemhlbikgTHRkLgotCQkJCUExJkEyIEJ1aWxkaW5nLExhbnRpYW4gVGVjaG5vbG9neSBQYXJrLCBYaW55dSBSb2FkLCBYaW5ncWlhbyBIZW5nZ2FuZyBCbG9jaywgU2hhamluZyBTdHJlZXQsCi0JCQkJQmFvYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotQjgtNjEtNkYgICAoaGV4KQkJQWNjdG9uIFdpcmVsZXNzIEJyb2FkYmFuZChBV0IpLCBDb3JwLgotQjg2MTZGICAgICAoYmFzZSAxNikJCUFjY3RvbiBXaXJlbGVzcyBCcm9hZGJhbmQoQVdCKSwgQ29ycC4KLQkJCQlOby4xIENyZWF0aW9uIFJkIElJSSwgU2NpZW5jZS1iYXNlZCBJbmR1c3RyaWFsIFBhcmsKLQkJCQlIc2luY2h1ICAzMDA3NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQjgtNjItMUYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQjg2MjFGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LTY0LTkxICAgKGhleCkJCUNLIFRlbGVjb20gTHRkCi1CODY0OTEgICAgIChiYXNlIDE2KQkJQ0sgVGVsZWNvbSBMdGQKLQkJCQlLZWppIEF2ZW51ZSxIZXl1YW4gSGktdGVjaCBEZXZlbG9wbWVudCBab25lCi0JCQkJSGV5dWFuICBHdWFuZ2RvbmcgUHJvdmluY2UgNTE3MDAwCi0JCQkJQ0hJTkEKLQotQjgtNjUtM0IgICAoaGV4KQkJQm9seW1pbiwgSW5jLgotQjg2NTNCICAgICAoYmFzZSAxNikJCUJvbHltaW4sIEluYy4KLQkJCQkxM0YtMSwgTm8uMjAsIFRhLUxvbmcgUmQuLCAKLQkJCQlUYWljaHVuZyAgNDAzMTAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUI4LTZCLTIzICAgKGhleCkJCVRvc2hpYmEKLUI4NkIyMyAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LFN1ZWhpcm8tQ2hvCi0JCQkJT21lIFRva3lvIDE5ODg3MTAKLQkJCQlKQVBBTgotCi1COC03MC1GNCAgIChoZXgpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELiAKLUI4NzBGNCAgICAgKGJhc2UgMTYpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRELiAKLQkJCQlOTy4gMjUsIFRIRSAzUkQgU3RyZWV0IEtVTlNIQU4gRVhQT1JUIFBST0NFU1NJTkcgWk9ORSAKLQkJCQlLVU5TSEFOIFNVWkhPVSAyMTUzMDAKLQkJCQlDSElOQQotCi1COC03NC0yNCAgIChoZXgpCQlWaWVzc21hbm4gRWxla3Ryb25payBHbWJICi1CODc0MjQgICAgIChiYXNlIDE2KQkJVmllc3NtYW5uIEVsZWt0cm9uaWsgR21iSAotCQkJCUJlZXR3aWVzZSAyCi0JCQkJQWxsZW5kb3JmIChFZGVyKSAgMzUxMDgKLQkJCQlHRVJNQU5ZCi0KLUI4LTc0LTQ3ICAgKGhleCkJCUNvbnZlcmdlbmNlIFRlY2hub2xvZ2llcwotQjg3NDQ3ICAgICAoYmFzZSAxNikJCUNvbnZlcmdlbmNlIFRlY2hub2xvZ2llcwotCQkJCTE2VzIxNSA4M3JkIFN0cmVldCBTdWl0ZSBECi0JCQkJQnVyciBSaWRnZSBJTCA2MDUyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotQjgtNzktN0UgICAoaGV4KQkJU2VjdXJlIE1ldGVycyAoVUspIExpbWl0ZWQKLUI4Nzk3RSAgICAgKGJhc2UgMTYpCQlTZWN1cmUgTWV0ZXJzIChVSykgTGltaXRlZAotCQkJCVNlY3VyZSBIb3VzZQotCQkJCU1vb3JzaWRlIFJvYWQKLQkJCQlXaW5jaGVzdGVyIEhhbXBzaGlyZSBTTzIzIDdSWAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUI4LTg3LTFFICAgKGhleCkJCUdvb2QgTWluZCBJbmR1c3RyaWVzIENvLiwgTHRkLgotQjg4NzFFICAgICAoYmFzZSAxNikJCUdvb2QgTWluZCBJbmR1c3RyaWVzIENvLiwgTHRkLgotCQkJCTIyLCBUYSBZZW91IDJuZCBTdCwgCi0JCQkJVGEgTGlhbyBEaXN0LiAKLQkJCQlLYW9oc2l1bmcgIDgzMQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQjgtODgtRTMgICAoaGV4KQkJQ09NUEFMIElORk9STUFUSU9OIChLVU5TSEFOKSBDTy4sIExURAotQjg4OEUzICAgICAoYmFzZSAxNikJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQKLQkJCQlOby4yNSwgVGhpcmQgQXZlbnVlLCBBIFpvbmUsIEt1bnNoYW4gQ29tcHJlaGVuc2l2ZSBGcmVlIFRyYWRlIFpvbmUsIEppYW5nc3UsIAotCQkJCUtVTlNIQU4gIFNVWkhPVSAyMTUzMDAKLQkJCQlDSElOQQotCi1COC04RC0xMiAgIChoZXgpCQlBcHBsZSwgSW5jLgotQjg4RDEyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBjQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjgtOEUtM0EgICAoaGV4KQkJSW5maW5pdGUgVGVjaG5vbG9naWVzIEpMVAotQjg4RTNBICAgICAoYmFzZSAxNikJCUluZmluaXRlIFRlY2hub2xvZ2llcyBKTFQKLQkJCQlPZmZpY2UgMzIwMywgTGV2ZWwgMzIKLQkJCQlMaXdhIEhlaWdodHMgVG93ZXIKLQkJCQlKdW1laXJhaCBMYWtlIFRvd2VycyBEdWJhaSAKLQkJCQlVTklURUQgQVJBQiBFTUlSQVRFUwotCi1COC04Ri0xNCAgIChoZXgpCQlBbmFseXRpY2EgR21iSAotQjg4RjE0ICAgICAoYmFzZSAxNikJCUFuYWx5dGljYSBHbWJICi0JCQkJVm9yaG9senN0ci4gMzYKLQkJCQlLYXJsc3J1aGUgQmFkZW4tV3VlcnR0ZW1iZXJnIDc2MTM3Ci0JCQkJR0VSTUFOWQotCi1COC05Mi0xRCAgIChoZXgpCQlCRyBUJmFtcDtBCi1CODkyMUQgICAgIChiYXNlIDE2KQkJQkcgVCZhbXA7QQotCQkJCTRGLCBMJmFtcDtDIFRvd2VyCi0JCQkJMTAyNi01MiBTYW5ib24tZG9uZwotCQkJCUd1bnBvLXNpIEd5ZW9uZ2dpLWRvIDQzNS04NDUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQjgtOTQtRDIgICAoaGV4KQkJUmV0YWlsIElubm92YXRpb24gSFRUIEFCCi1CODk0RDIgICAgIChiYXNlIDE2KQkJUmV0YWlsIElubm92YXRpb24gSFRUIEFCCi0JCQkJU2rDtsOkbmdzdsOkZ2VuIDIKLQkJCQlTb2xsZW50dW5hICBTLTE5MiA3MgotCQkJCVNXRURFTgotCi1COC05Ni03NCAgIChoZXgpCQlBbGxEU1AgR21iSCAmYW1wOyBDby4gS0cKLUI4OTY3NCAgICAgKGJhc2UgMTYpCQlBbGxEU1AgR21iSCAmYW1wOyBDby4gS0cKLQkJCQlTcGVuZ2xlcnN0cmFzc2UgNgotCQkJCUhhbW0gTlJXIDU5MDY3Ci0JCQkJR0VSTUFOWQotCi1COC05Ny01QSAgIChoZXgpCQlCSU9TVEFSIE1pY3JvdGVjaCBJbnQnbCBDb3JwLgotQjg5NzVBICAgICAoYmFzZSAxNikJCUJJT1NUQVIgTWljcm90ZWNoIEludCdsIENvcnAuCi0JCQkJMkZsLiAgTm8uIDEwOC0yLCBNaW4gQ2h1YW4gUm9hZCwgSHNpbiBUaWVuIERpc3QuLAotCQkJCSBOZXcgVGFpcGVpICAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUI4LTlBLUVEICAgKGhleCkJCU9jZWFuU2VydmVyIFRlY2hub2xvZ3ksIEluYwotQjg5QUVEICAgICAoYmFzZSAxNikJCU9jZWFuU2VydmVyIFRlY2hub2xvZ3ksIEluYwotCQkJCTE1MSBNYXJ0aW5lIFN0Ci0JCQkJRmFsbCBSaXZlciBNQSAwMjcyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotQjgtOUItQzkgICAoaGV4KQkJU01DIE5ldHdvcmtzIEluYwotQjg5QkM5ICAgICAoYmFzZSAxNikJCVNNQyBOZXR3b3JrcyBJbmMKLQkJCQkyMCBNYXNvbiAKLQkJCQlJcnZpbmUgQ0EgOTI2MTgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LUEzLTg2ICAgKGhleCkJCUQtTGluayBJbnRlcm5hdGlvbmFsCi1COEEzODYgICAgIChiYXNlIDE2KQkJRC1MaW5rIEludGVybmF0aW9uYWwKLQkJCQkxIEludGVybmF0aW9uYWwgQnVzaW5lc3MgUGFyaywgIzAzLTEyLCBUaGUgU3luZXJneSBTaW5nYXBvcmUgNjA5OTE3Ci0JCQkJNjA5OTE3Ci0JCQkJU0lOR0FQT1JFCi0KLUI4LUEzLUUwICAgKGhleCkJCUJlblJ1aSBUZWNobm9sb2d5IENvLixMdGQKLUI4QTNFMCAgICAgKGJhc2UgMTYpCQlCZW5SdWkgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJTm8uMzAycm9vbSBCdWlsZGluZzUwMyBUYWlSYW4gVGVjaG5vUGFyay5GdVRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotQjgtQTgtQUYgICAoaGV4KQkJTG9naWMgUy5wLkEuCi1COEE4QUYgICAgIChiYXNlIDE2KQkJTG9naWMgUy5wLkEuCi0JCQkJVmlhIEdhbGlsZWkgNQotCQkJCUNhc3NpbmEgZGUnIFBlY2NoaSBNSSAyMDA2MAotCQkJCUlUQUxZCi0KLUI4LUFDLTZGICAgKGhleCkJCURlbGwgSW5jCi1COEFDNkYgICAgIChiYXNlIDE2KQkJRGVsbCBJbmMKLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVFggNzg3NDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LUFGLTY3ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci1COEFGNjcgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjgtQjEtQzcgICAoaGV4KQkJQlQmQ09NIENPLixMVEQKLUI4QjFDNyAgICAgKGJhc2UgMTYpCQlCVCZDT00gQ08uLExURAotCQkJCSMxMTAzLCBFJkMgVmVudHVyZSBEcmVhbSBUb3dlciBJSQotCQkJCTE5Ny0xMCwgR3Vyby0zZG9uZywgR3Vyby1HdSwKLQkJCQlTZW91bCAgMTUyLTcxOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1COC1CNC0yRSAgIChoZXgpCQlHaW9uZWUgQ29tbXVuaWNhdGlvbiBFcXVpcG1lbnQgQ28sTHRkLlNoZW5aaGVuCi1COEI0MkUgICAgIChiYXNlIDE2KQkJR2lvbmVlIENvbW11bmljYXRpb24gRXF1aXBtZW50IENvLEx0ZC5TaGVuWmhlbgotCQkJCTIxL0YgVGltZXMgVGVjaG5vbG9neSBCdWlsZGluZywgNzAyOCBTaGVubmFuIFJvYWQsIEZ1dGlhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotQjgtQkEtNjggICAoaGV4KQkJWGknYW4gSml6aG9uZyBEaWdpdGFsIENvbW11bmljYXRpb24gQ28uLEx0ZAotQjhCQTY4ICAgICAoYmFzZSAxNikJCVhpJ2FuIEppemhvbmcgRGlnaXRhbCBDb21tdW5pY2F0aW9uIENvLixMdGQKLQkJCQkxMCBCbG9jayBOTy4xIEVudGVycHJpc2UgTmV3bHktdHlwZWQgSW5kdXN0cmlhbCBab25lIEhpZ2gtVGVjaCBab25lIFhpoa9hbixDaGluYQotCQkJCVhpJ2FuIFNoYWFuWGkgNzEwMTE5Ci0JCQkJQ0hJTkEKLQotQjgtQkEtNzIgICAoaGV4KQkJQ3lub3ZlCi1COEJBNzIgICAgIChiYXNlIDE2KQkJQ3lub3ZlCi0JCQkJMTAgY2l0ZSByb3VnZW1vbnQKLQkJCQlQYXJpcyAgNzUwMDkKLQkJCQlGUkFOQ0UKLQotQjgtQkItNkQgICAoaGV4KQkJRU5FUkVTIENvLixMdGQuCi1COEJCNkQgICAgIChiYXNlIDE2KQkJRU5FUkVTIENvLixMdGQuCi0JCQkJMTkwNyBUb2t5byBBcnQgQ2VudGVyCi0JCQkJMS00LTEgU2Vuanl1Ci0JCQkJQWRhaGNpLWt1IFRva3lvIDEyMC0wMDM0Ci0JCQkJSkFQQU4KLQotQjgtQkUtQkYgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQjhCRUJGICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQjgtQzctMTYgICAoaGV4KQkJRmliZXJob21lIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBDby4sTFRECi1COEM3MTYgICAgIChiYXNlIDE2KQkJRmliZXJob21lIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ2llcyBDby4sTFRECi0JCQkJTm8uNSBEb25neGluIFJvYWQKLQkJCQlIb25nc2hhbiBEaXN0cmljdAotCQkJCVd1aGFuIEh1YmVpIDQzMDA3NAotCQkJCUNISU5BCi0KLUI4LUM3LTVEICAgKGhleCkJCUFwcGxlLCBJbmMuCi1COEM3NUQgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LUNELUE3ICAgKGhleCkJCU1heGVsZXIgVGVjaG5vbG9naWVzIEx0ZC4KLUI4Q0RBNyAgICAgKGJhc2UgMTYpCQlNYXhlbGVyIFRlY2hub2xvZ2llcyBMdGQuCi0JCQkJMSBEb3duIFBsYWNlCi0JCQkJTG9uZG9uIFVLIFc2IDlKSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUI4LUQwLTZGICAgKGhleCkJCUdVQU5HWkhPVSBIS1VTVCBGT0sgWUlORyBUVU5HIFJFU0VBUkNIIElOU1RJVFVURQotQjhEMDZGICAgICAoYmFzZSAxNikJCUdVQU5HWkhPVSBIS1VTVCBGT0sgWUlORyBUVU5HIFJFU0VBUkNIIElOU1RJVFVURQotCQkJCVJtIDQwMywgTm9ydGggb2YgU29mdHdhcmUgQnVpbGRpbmcsTmFuc2hhIElUIFBhcmssCi0JCQkJTmFuc2hhIERpc3RyaWN0Ci0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyBQcml2aW5jZSA1MTE0NTgKLQkJCQlDSElOQQotCi1COC1ENC05RCAgIChoZXgpCQlNIFNldmVuIFN5c3RlbSBMdGQuCi1COEQ0OUQgICAgIChiYXNlIDE2KQkJTSBTZXZlbiBTeXN0ZW0gTHRkLgotCQkJCTI0RiwgVHJ1c3QgVG93ZXIgQmxkZywgMjc1LTcsIFlhbmdqYWUyLURvbmcsIFNlb2Noby1HdQotCQkJCVNlb3VsICAxMzctNzM5Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI4LUQ5LUNFICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLUI4RDlDRSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUI4LURBLUY3ICAgKGhleCkJCUFkdmFuY2VkIFBob3RvbmljcywgSW5jLgotQjhEQUY3ICAgICAoYmFzZSAxNikJCUFkdmFuY2VkIFBob3RvbmljcywgSW5jLgotCQkJCXRoZSBVbml2ZXJzaXR5IG9mIFRva3lvLCBDQ1I1MDcKLQkJCQlLb21hYmEgNC02LTEKLQkJCQlNZWd1cm8ta3UgVG9reW8gMTUzLTg5MDQKLQkJCQlKQVBBTgotCi1COC1FNS04OSAgIChoZXgpCQlQYXl0ZXIgQlYKLUI4RTU4OSAgICAgKGJhc2UgMTYpCQlQYXl0ZXIgQlYKLQkJCQlCZXVrZWxzZGlqayAxMDcKLQkJCQlSb3R0ZXJkYW0gWnVpZC1Ib2xsYW5kIDMwMjEgQUUKLQkJCQlORVRIRVJMQU5EUwotCi1COC1FNi0yNSAgIChoZXgpCQkyV2lyZQotQjhFNjI1ICAgICAoYmFzZSAxNikJCTJXaXJlCi0JCQkJMTc2NCBBdXRvbWF0aW9uIFBhcmt3YXkKLQkJCQlTYW4gSm9zZSBDQSA5NTEzMQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjgtRTctNzkgICAoaGV4KQkJOVNvbHV0aW9ucyBPeQotQjhFNzc5ICAgICAoYmFzZSAxNikJCTlTb2x1dGlvbnMgT3kKLQkJCQlUZWtub2xvZ2lhbnRpZSAyCi0JCQkJOTA1OTAKLQkJCQlPdWx1ICAKLQkJCQlGSU5MQU5ECi0KLUI4LUU5LTM3ICAgKGhleCkJCVNvbm9zLCBJbmMuCi1COEU5MzcgICAgIChiYXNlIDE2KQkJU29ub3MsIEluYy4KLQkJCQkyMjMgRWFzdCBEZSBMYSBHdWVycmEgU3RyZWV0Ci0JCQkJU2FudGEgQmFyYmFyYSBDQSA5MzEwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotQjgtRUUtNzkgICAoaGV4KQkJWVdpcmUgVGVjaG5vbG9naWVzLCBJbmMuCi1COEVFNzkgICAgIChiYXNlIDE2KQkJWVdpcmUgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMTM3MiBPdmVyZGFsZQotCQkJCU1vbnRyZWFsIFFDIEgzRyAxVjMKLQkJCQlDQU5BREEKLQotQjgtRjQtRDAgICAoaGV4KQkJSGVycm1hbm4gVWx0cmFzY2hhbGx0ZWNobmlrIEdtYkggJiBDby4gS2cKLUI4RjREMCAgICAgKGJhc2UgMTYpCQlIZXJybWFubiBVbHRyYXNjaGFsbHRlY2huaWsgR21iSCAmIENvLiBLZwotCQkJCURlc2Nvc3RyLiAzLTkKLQkJCQlLYXJsc2JhZCBCYWRlbi1XdWVydHRlbWJlcmcgNzYzMDcKLQkJCQlHRVJNQU5ZCi0KLUI4LUY1LUU3ICAgKGhleCkJCVdheVRvb2xzLCBMTEMKLUI4RjVFNyAgICAgKGJhc2UgMTYpCQlXYXlUb29scywgTExDCi0JCQkJNDAxIFdpbHNoaXJlIEJsdmQuCi0JCQkJTmludGggRmxvb3IKLQkJCQlTYW50YSBNb25pY2EgQ0EgOTA0MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUI4LUY2LUIxICAgKGhleCkJCUFwcGxlLCBJbmMuCi1COEY2QjEgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIGluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1COC1GNy0zMiAgIChoZXgpCQlBcnlha2EgTmV0d29ya3MgSW5jCi1COEY3MzIgICAgIChiYXNlIDE2KQkJQXJ5YWthIE5ldHdvcmtzIEluYwotCQkJCTY5MSBTLiBNaWxwaXRhcyBCbHZkLiwgCi0JCQkJU3VpdGUgMjA2Ci0JCQkJTWlscGl0YXMgIENBIDk1MDM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1COC1GOS0zNCAgIChoZXgpCQlTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQgotQjhGOTM0ICAgICAoYmFzZSAxNikJCVNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCi0JCQkJTnlhIFZhdHRlbnRvcm5ldAotCQkJCUx1bmQgU0UgMjIxIDg4Ci0JCQkJU1dFREVOCi0KLUI4LUZELTMyICAgKGhleCkJCVpoZWppYW5nIFJPSUNYIE1pY3JvZWxlY3Ryb25pY3MKLUI4RkQzMiAgICAgKGJhc2UgMTYpCQlaaGVqaWFuZyBST0lDWCBNaWNyb2VsZWN0cm9uaWNzCi0JCQkJMjIgRmxvb3IsIDE4ODggSmlhbmdodWkgUm9hZCwgQmluamlhbmcgRGlzdHJpY3QKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwNTEKLQkJCQlDSElOQQotCi1COC1GRi02MSAgIChoZXgpCQlBcHBsZSwgSW5jLgotQjhGRjYxICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1COC1GRi02RiAgIChoZXgpCQlTaGFuZ2hhaSBUeXByb3RlY2ggVGVjaG5vbG9neSBDby5MdGQKLUI4RkY2RiAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBUeXByb3RlY2ggVGVjaG5vbG9neSBDby5MdGQKLQkJCQlEZXNpZ24gQnVpbGRpbmcgOTAzLCBOTy42MywgCi0JCQkJQ2hpRmVuZyBSb2FkLFlhbmdQdSBEaXN0cmljdCwKLQkJCQlTaGFuZ2hhaSAgMjAwMDkyCi0JCQkJQ0hJTkEKLQotQjgtRkYtRkUgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLUI4RkZGRSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCU1TIDg3MjMKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUJDLTAyLTAwICAgKGhleCkJCVN0ZXdhcnQgQXVkaW8KLUJDMDIwMCAgICAgKGJhc2UgMTYpCQlTdGV3YXJ0IEF1ZGlvCi0JCQkJMTAwIFdlc3QgRWwgQ2FtaW5vIFJlYWwKLQkJCQlTdWl0ZSA3MgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUJDLTA1LTQzICAgKGhleCkJCUFWTSBHbWJICi1CQzA1NDMgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotQkMtMEQtQTUgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLUJDMERBNSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotQkMtMEYtMkIgICAoaGV4KQkJRk9SVFVORSBURUNIR1JPVVAgQ08uLExURAotQkMwRjJCICAgICAoYmFzZSAxNikJCUZPUlRVTkUgVEVDSEdST1VQIENPLixMVEQKLQkJCQk3LThGLE5vLjExOTggTm9ydGggUWluemhvdSBSb2FkLAotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi1CQy0xMi01RSAgIChoZXgpCQlCZWlqaW5nICBXaXNWaWRlbyAgSU5DLgotQkMxMjVFICAgICAoYmFzZSAxNikJCUJlaWppbmcgIFdpc1ZpZGVvICBJTkMuCi0JCQkJUk0gM0EwOCBUZWNobm9sb2d5JkZvcnR1bmUgQ2VudGVyIEEgYmxvY2sgTm8uOCBYdWUgUWluZyBSb2FkLEhhaWRpYW4gRGlzdHJpY3QgLCAKLQkJCQlCZWlqaW5nIDEwMDE5MgotCQkJCUNISU5BCi0KLUJDLTE0LTAxICAgKGhleCkJCUhpdHJvbiBUZWNobm9sb2dpZXMuIEluYwotQkMxNDAxICAgICAoYmFzZSAxNikJCUhpdHJvbiBUZWNobm9sb2dpZXMuIEluYwotCQkJCU5vLiAxLTgsIExpc2luZyAxc3QgUmQuIEhzaW5jaHUgU2NpZW5jZSBQYXJrLCBIc2luY2h1LCAzMDAKLQkJCQlIc2luLWNodSAgMzAwCi0JCQkJVEFJV0FOLCBQUk9WSU5DRSBPRiBDSElOQQotCi1CQy0xNS1BNiAgIChoZXgpCQlUYWl3YW4gSmFudGVrIEVsZWN0cm9uaWNzLEx0ZC4KLUJDMTVBNiAgICAgKGJhc2UgMTYpCQlUYWl3YW4gSmFudGVrIEVsZWN0cm9uaWNzLEx0ZC4KLQkJCQk2Ri0xLE5vLjEgV3UtQ2h1YW4gMVN0LiBSZCxXdS1LdSBJbmR1c3RyaWFsIFBhcmssCi0JCQkJU2luY2h3YW5nIENpdHkgVGFpcGVpIEhzaWVuIDI0ODkyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1CQy0yMC1CQSAgIChoZXgpCQlJbnNwdXIgKFNoYW5kb25nKSBFbGVjdHJvbmljIEluZm9ybWF0aW9uIENvLiwgTHRkCi1CQzIwQkEgICAgIChiYXNlIDE2KQkJSW5zcHVyIChTaGFuZG9uZykgRWxlY3Ryb25pYyBJbmZvcm1hdGlvbiBDby4sIEx0ZAotCQkJCU5vLjEwMzYgU2h1bnlhIFJkLgotCQkJCUppbmFuIFNoYW5kb25nIDI1MDEwMQotCQkJCUNISU5BCi0KLUJDLTI4LTQ2ICAgKGhleCkJCU5leHRCSVQgQ29tcHV0aW5nIFB2dC4gTHRkLgotQkMyODQ2ICAgICAoYmFzZSAxNikJCU5leHRCSVQgQ29tcHV0aW5nIFB2dC4gTHRkLgotCQkJCTMwLzIsIDJuZCBGbG9vciwgUi5LLiBQbGF6YSwKLQkJCQlDTUggUm9hZCwgSW5kaXJhbmFnYXIKLQkJCQlCYW5nYWxvcmUgS2FybmF0YWthIDU2MDAzOAotCQkJCUlORElBCi0KLUJDLTI4LUQ2ICAgKGhleCkJCVJvd2xleSBBc3NvY2lhdGVzIExpbWl0ZWQKLUJDMjhENiAgICAgKGJhc2UgMTYpCQlSb3dsZXkgQXNzb2NpYXRlcyBMaW1pdGVkCi0JCQkJU3VpdGUgNEIvNEMgRHJha2UgSG91c2UKLQkJCQlEcmFrZSBMYW5lCi0JCQkJRHVyc2xleSBHbG91Y2VzdGVyc2hpcmUgR0wxMSA0SEgKLQkJCQlVTklURUQgS0lOR0RPTQotCi1CQy0yQy01NSAgIChoZXgpCQlCZWFyIEZsYWcgRGVzaWduLCBJbmMuCi1CQzJDNTUgICAgIChiYXNlIDE2KQkJQmVhciBGbGFnIERlc2lnbiwgSW5jLgotCQkJCTEgVGhheWVyIFJvYWQKLQkJCQlTYW50YSBDcnV6IENBIDk1MDYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1CQy0zMC01QiAgIChoZXgpCQlEZWxsIEluYy4KLUJDMzA1QiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCBXYXksIE1TIFJSNS00NQotCQkJCVJvdW5kIFJvY2sgVGV4YXMgNzg2ODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUJDLTM1LUU1ICAgKGhleCkJCUh5ZHJvIFN5c3RlbXMgQ29tcGFueQotQkMzNUU1ICAgICAoYmFzZSAxNikJCUh5ZHJvIFN5c3RlbXMgQ29tcGFueQotCQkJCTM3OTggUm91bmQgQm90dG9tIFJvYWQKLQkJCQlDaW5jaW5uYXRpIE9oaW8gNDUyNDQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUJDLTM4LUQyICAgKGhleCkJCVBhbmRhY2hpcCBMaW1pdGVkCi1CQzM4RDIgICAgIChiYXNlIDE2KQkJUGFuZGFjaGlwIExpbWl0ZWQKLQkJCQlVbml0IDIxMCwgMi9GIChMYWtlc2lkZSAxKSwgQnVpbGRpbmcgMTUsIE5vLiA4IFNjaWVuY2UgUGFyayBXZXN0IEF2ZW51ZQotCQkJCUhvbmcgS29uZyBTY2llbmNlIFBhcmsgUGhhc2UgSUksIAotCQkJCVNoYXRpbiwgTi5ULiAgCi0JCQkJSE9ORyBLT05HCi0KLUJDLTNFLTEzICAgKGhleCkJCUFjY29yZGFuY2UgU3lzdGVtcyBJbmMuCi1CQzNFMTMgICAgIChiYXNlIDE2KQkJQWNjb3JkYW5jZSBTeXN0ZW1zIEluYy4KLQkJCQkyRiwgTm8uIDMxLCBTZWMuIDYsIEhzaW4gWWkgUm9hZAotCQkJCVRhaXBlaSAgMTEwODUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUJDLTQzLTc3ICAgKGhleCkJCUhhbmcgWmhvdSBIdWl0ZSBUZWNobm9sb2d5IENvLixsdGQuCi1CQzQzNzcgICAgIChiYXNlIDE2KQkJSGFuZyBaaG91IEh1aXRlIFRlY2hub2xvZ3kgQ28uLGx0ZC4KLQkJCQlSbTEzMzgsQmxvY2sgQaOsRnVMaSBUZWNobm9sb2d5IEJ1aWxkaW5nICxOby4zMjgsV2VuRXIgUmQKLQkJCQlIYW5nIFpob3UgWmhlIEppYW5nIDMxMDAxMgotCQkJCUNISU5BCi0KLUJDLTQ3LTYwICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotQkM0NzYwICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CQy00Qi03OSAgIChoZXgpCQlTZW5zaW5nVGVrCi1CQzRCNzkgICAgIChiYXNlIDE2KQkJU2Vuc2luZ1RlawotCQkJCTJGLCBOby42LTIsRHVzaW5nIFJkLixIc2luY2h1IFNjaWVuY2UgUGFyaywgCi0JCQkJSHNpbmNodSAgMzAwNzgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUJDLTRFLTNDICAgKGhleCkJCUNPUkUgU1RBRkYgQ08uLCBMVEQuCi1CQzRFM0MgICAgIChiYXNlIDE2KQkJQ09SRSBTVEFGRiBDTy4sIExURC4KLQkJCQlTaGluLW9zYWthIE9yaWVudGFsIEJsZGcuIDE0RiwgNy0xLTI2IE5pc2hpbmFrYWppbWEKLQkJCQlZb2RvZ2F3YS1rdSBPc2FrYSA1MzItMDAxMQotCQkJCUpBUEFOCi0KLUJDLTVGLUY0ICAgKGhleCkJCUFTUm9jayBJbmNvcnBvcmF0aW9uCi1CQzVGRjQgICAgIChiYXNlIDE2KQkJQVNSb2NrIEluY29ycG9yYXRpb24KLQkJCQkyRi4sTm8uMzcsIFNlYy4yLCBKaG9uZ3lhbmcgUy5SZC4sIEJlaXRvdSBEaXN0cmljLCAKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQkMtNjctODQgICAoaGV4KQkJRW52aXJvbmljcyBPeQotQkM2Nzg0ICAgICAoYmFzZSAxNikJCUVudmlyb25pY3MgT3kKLQkJCQlHcmFhbmludGllIDUKLQkJCQlNaWtrZWxpICA1MDE5MAotCQkJCUZJTkxBTkQKLQotQkMtNkEtMTYgICAoaGV4KQkJdGR2aW5lCi1CQzZBMTYgICAgIChiYXNlIDE2KQkJdGR2aW5lCi0JCQkJMzAxIE1haXNvbiBNYXJ1IEJ1aWxkaW5nIAotCQkJCTg2LTkgTm9uaGVvbi1kb25nIEdhbmduYW0tZ3UKLQkJCQlTZW91bCAgMTM1LTAxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CQy02RS03NiAgIChoZXgpCQlHcmVlbiBFbmVyZ3kgT3B0aW9ucyBMdGQKLUJDNkU3NiAgICAgKGJhc2UgMTYpCQlHcmVlbiBFbmVyZ3kgT3B0aW9ucyBMdGQKLQkJCQkzIFN0LiBNYXJ5JiMzOTtzIENvdXJ0LCBNYWluIFN0cmVldAotCQkJCUhhcmR3aWNrCi0JCQkJQ2FtYnJpZGdlIENhbWJyaWRnZXNoaXJlIENCMjMgN1FTCi0JCQkJVU5JVEVEIEtJTkdET00KLQotQkMtNzEtQzEgICAoaGV4KQkJWFRyaWxsaW9uLCBJbmMuCi1CQzcxQzEgICAgIChiYXNlIDE2KQkJWFRyaWxsaW9uLCBJbmMuCi0JCQkJMS0xMi0zLTRGIAotCQkJCUthbmRhIFN1ZGEtY2hvCi0JCQkJQ2hpeW9kYS1rdSBUb2t5byAxMDEtMDA0MQotCQkJCUpBUEFOCi0KLUJDLTc2LTRFICAgKGhleCkJCVJhY2tzcGFjZSBVUywgSW5jLgotQkM3NjRFICAgICAoYmFzZSAxNikJCVJhY2tzcGFjZSBVUywgSW5jLgotCQkJCTUwMDAgV2FsemVtIFJkLgotCQkJCVNhbiBBbnRvbmlvIFRYIDc4MjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CQy03Ni03MCAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi1CQzc2NzAgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxMDEwOAotCQkJCUNISU5BCi0KLUJDLTc3LTM3ICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotQkM3NzM3ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotQkMtNzctOUYgICAoaGV4KQkJU0JNIENvLiwgTHRkLgotQkM3NzlGICAgICAoYmFzZSAxNikJCVNCTSBDby4sIEx0ZC4KLQkJCQlIeXVud29vIEJsZGcgMjA2LCBBbnlhbmc3LURvbmcKLQkJCQlNYW5hbi1HdQotCQkJCUFueWFuZyBHeWVvbmdnaS1EbyA0MzAtODE3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUJDLTdELUQxICAgKGhleCkJCVJhZGlvIERhdGEgQ29tbXMKLUJDN0REMSAgICAgKGJhc2UgMTYpCQlSYWRpbyBEYXRhIENvbW1zCi0JCQkJNS8yMC0zMCBTdHViYnMgU3RyZWV0Ci0JCQkJU2lsdmVyd2F0ZXIgIE5ldyBTb3V0aCBXYWxlcyAoTlNXKSAyMTI4Ci0JCQkJQVVTVFJBTElBCi0KLUJDLTgxLTFGICAgKGhleCkJCUluZ2F0ZSBTeXN0ZW1zCi1CQzgxMUYgICAgIChiYXNlIDE2KQkJSW5nYXRlIFN5c3RlbXMKLQkJCQlSaXNzbmVsZWRlbiA0NQotCQkJCVN1bmRieWJlcmcgIDE3NDQ0Ci0JCQkJU1dFREVOCi0KLUJDLTgxLTk5ICAgKGhleCkJCUJBU0lDIENvLixMdGQuCi1CQzgxOTkgICAgIChiYXNlIDE2KQkJQkFTSUMgQ28uLEx0ZC4KLQkJCQlLZWllZnUtQnVpbGRpbmcgOUYKLQkJCQk0LTEzLTggU2hpYmEKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA4LTAwMTQKLQkJCQlKQVBBTgotCi1CQy04My1BNyAgIChoZXgpCQlTSEVOWkhFTiBDSFVBTkdXRUktUkdCIEVMRUNUUk9OSUNTIENPLixMVAotQkM4M0E3ICAgICAoYmFzZSAxNikJCVNIRU5aSEVOIENIVUFOR1dFSS1SR0IgRUxFQ1RST05JQ1MgQ08uLExUCi0JCQkJVW5pdCBBIDEzLTE2L0YsU2t5d29ydGggQmxkZy4sIEdhb3hpbiBBdmUuMS5TLixOYW5zaGFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3VhbmdEb25nICA1MTgwNTcKLQkJCQlDSElOQQotCi1CQy04NS0xRiAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi1CQzg1MUYgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1CQy04Qi01NSAgIChoZXgpCQlOUFAgRUxJS1MgQW1lcmljYSBJbmMuIERCQSBUJk0gQXRsYW50aWMKLUJDOEI1NSAgICAgKGJhc2UgMTYpCQlOUFAgRUxJS1MgQW1lcmljYSBJbmMuIERCQSBUJk0gQXRsYW50aWMKLQkJCQkxNzUgU1cgN3RoIFN0IFN1aXRlIDE4MTIKLQkJCQlNaWFtaSBGTCAzMzEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotQkMtOTktQkMgICAoaGV4KQkJRm9uU2VlIFRlY2hub2xvZ3kgSW5jLgotQkM5OUJDICAgICAoYmFzZSAxNikJCUZvblNlZSBUZWNobm9sb2d5IEluYy4KLQkJCQkxNEYtMiwgTm8uMzIsIEdhb3RpZSAybmQgUmQuLAotCQkJCVpodWJlaSBDaXR5IEhzaW5jaHUgQ291bnR5IDMwMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQkMtOUQtQTUgICAoaGV4KQkJREFTQ09NIEV1cm9wZSBHbWJICi1CQzlEQTUgICAgIChiYXNlIDE2KQkJREFTQ09NIEV1cm9wZSBHbWJICi0JCQkJSGV1d2VnIDMKLQkJCQlVbG0gQmFkZW4tV3VlcnR0ZW1iZXJnIDg5MDc5Ci0JCQkJR0VSTUFOWQotCi1CQy1BNC1FMSAgIChoZXgpCQlOYWJ0bwotQkNBNEUxICAgICAoYmFzZSAxNikJCU5hYnRvCi0JCQkJQWFib2dhZGUgMTUKLQkJCQlBYXJodXMgSnV0bGFuZCA4MjAwCi0JCQkJREVOTUFSSwotCi1CQy1BOS1ENiAgIChoZXgpCQlDeWJlci1SYWluLCBJbmMuCi1CQ0E5RDYgICAgIChiYXNlIDE2KQkJQ3liZXItUmFpbiwgSW5jLgotCQkJCTUyNzIgRXZhbndvb2QgQXZlbnVlCi0JCQkJT2FrIFBhcmsgQ2FsaWZvcm5pYSA5MTM3Ny00ODA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CQy1BRS1DNSAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLUJDQUVDNSAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91LAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1CQy1CMS04MSAgIChoZXgpCQlTSEFSUCBDT1JQT1JBVElPTgotQkNCMTgxICAgICAoYmFzZSAxNikJCVNIQVJQIENPUlBPUkFUSU9OCi0JCQkJMjItMjIsTmFnYWlrZS1jaG8sCi0JCQkJQWJlbm8tS1UsCi0JCQkJT3Nha2EsICA1NDUtODUyMgotCQkJCUpBUEFOCi0KLUJDLUIxLUYzICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLUJDQjFGMyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUJDLUI4LTUyICAgKGhleCkJCUN5YmVyYSwgSW5jLgotQkNCODUyICAgICAoYmFzZSAxNikJCUN5YmVyYSwgSW5jLgotCQkJCTkwMDkgQ2Fyb3RoZXJzIFBhcmt3YXkKLQkJCQlTdWl0ZSBDLTUKLQkJCQlGcmFua2xpbiBUTiAzNzA2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotQkMtQkItQzkgICAoaGV4KQkJS2VsbGVuZG9uayBFbGVrdHJvbmlrIEdtYkgKLUJDQkJDOSAgICAgKGJhc2UgMTYpCQlLZWxsZW5kb25rIEVsZWt0cm9uaWsgR21iSAotCQkJCVZvbi1IdWVuZWZlbGQtU3RyYXNzZSAzCi0JCQkJQ29sb2duZSBOUlcgNTA4MjkKLQkJCQlHRVJNQU5ZCi0KLUJDLUMxLTY4ICAgKGhleCkJCURJbkJveCBTdmVyaWdlIEFCCi1CQ0MxNjggICAgIChiYXNlIDE2KQkJREluQm94IFN2ZXJpZ2UgQUIKLQkJCQlTdXJicnVubnNnYXRhbiAxNAotCQkJCVN0b2NraG9sbSAgMTE0MjcKLQkJCQlTV0VERU4KLQotQkMtQzItM0EgICAoaGV4KQkJVGhvbXNvbiBWaWRlbyBOZXR3b3JrcwotQkNDMjNBICAgICAoYmFzZSAxNikJCVRob21zb24gVmlkZW8gTmV0d29ya3MKLQkJCQk2LCBydWUgZHUgQ2xvcyBDb3VydGVsCi0JCQkJQ2Vzc29uIFNldmlnbmUgIDM1NTEwCi0JCQkJRlJBTkNFCi0KLUJDLUM2LTFBICAgKGhleCkJCVNQRUNUUkEgRU1CRURERUQgU1lTVEVNUwotQkNDNjFBICAgICAoYmFzZSAxNikJCVNQRUNUUkEgRU1CRURERUQgU1lTVEVNUwotCQkJCUtoYXNyYSBOby4gMjQsIFZpbGxhZ2UgR2h1bW1hbiwxc3QgRmxvb3IsIENoYXdsYSBNYW5zaW9uLAotCQkJCUIvaC4gU2FudCBWaWhhciwgVW5jaGEgUGFyd2Fub28sU2VjdG9yLTEKLQkJCQlQQVJXQU5PTyBISU1BQ0hBTCBQUkFERVNIIDE3MzIyMAotCQkJCUlORElBCi0KLUJDLUM4LTEwICAgKGhleCkJCUNpc2NvIFNQVlRHCi1CQ0M4MTAgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotQkMtQ0QtNDUgICAoaGV4KQkJVk9JU01BUlQKLUJDQ0Q0NSAgICAgKGJhc2UgMTYpCQlWT0lTTUFSVAotCQkJCVZJQSBCRU5JR05PIENSRVNQSSAxMgotCQkJCU1JTEFOTyAgMjAxNTkKLQkJCQlJVEFMWQotCi1CQy1ENS1CNiAgIChoZXgpCQlkMmQgdGVjaG5vbG9naWVzCi1CQ0Q1QjYgICAgIChiYXNlIDE2KQkJZDJkIHRlY2hub2xvZ2llcwotCQkJCTEwNjExIHJvdW5kd29vZCBnbGVuIGN0Ci0JCQkJSmFja3NvbnZpbGxlIEZsIDMyMjU2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1CQy1EOS00MCAgIChoZXgpCQlBU1IgQ28sLkx0ZC4KLUJDRDk0MCAgICAgKGJhc2UgMTYpCQlBU1IgQ28sLkx0ZC4KLQkJCQkxLTMtMSBTb3Rva2FuZGEgQ2hpeW9kYS1rdQotCQkJCVRva3lvICAxMDEtMDAyMQotCQkJCUpBUEFOCi0KLUJDLUUwLTlEICAgKGhleCkJCUVvc2xpbmsKLUJDRTA5RCAgICAgKGJhc2UgMTYpCQlFb3NsaW5rCi0JCQkJIzYwMiwgOTAwLTEKLQkJCQlHd2FueWFuZy1Eb25nLCBEb25nYW4tR3UKLQkJCQlBbnlhbmctQ2l0eSBLeW9uZ2dpLURvIDQzMS0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQkMtRTUtOUYgICAoaGV4KQkJV0FURVJXT1JMRCBUZWNobm9sb2d5IENvLixMVEQKLUJDRTU5RiAgICAgKGJhc2UgMTYpCQlXQVRFUldPUkxEIFRlY2hub2xvZ3kgQ28uLExURAotCQkJCTYgRmxvb3IsQmxvY2sgQixEaWdpdGFsIEJ1aWxkaW5nLEdhcmRlbiBDaXR5LE5vLjEwNzksTmFuaGFpIFJvYWQsTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDY3Ci0JCQkJQ0hJTkEKLQotQkMtRUEtMkIgICAoaGV4KQkJQ2l0eUNvbSBHbWJICi1CQ0VBMkIgICAgIChiYXNlIDE2KQkJQ2l0eUNvbSBHbWJICi0JCQkJQW0gS3JvaXQgMjUKLQkJCQlBbWVyYW5nIEJhdmFyaWEgODMxMjMKLQkJCQlHRVJNQU5ZCi0KLUJDLUYyLUFGICAgKGhleCkJCWRldm9sbyBBRwotQkNGMkFGICAgICAoYmFzZSAxNikJCWRldm9sbyBBRwotCQkJCUNoYXJsb3R0ZW5idXJnZXIgQWxsZWUgNjAKLQkJCQlBYWNoZW4gIDUyMDY4Ci0JCQkJR0VSTUFOWQotCi1CQy1GNi04NSAgIChoZXgpCQlELUxpbmsgSW50ZXJuYXRpb25hbAotQkNGNjg1ICAgICAoYmFzZSAxNikJCUQtTGluayBJbnRlcm5hdGlvbmFsCi0JCQkJMSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIFBhcmssICMwMy0xMgotCQkJCSwgVGhlIFN5bmVyZ3kgCi0JCQkJU2luZ2Fwb3JlIDYwOTkxNwotCQkJCVNJTkdBUE9SRQotCi1CQy1GRS04QyAgIChoZXgpCQlBbHRyb25pYywgTExDCi1CQ0ZFOEMgICAgIChiYXNlIDE2KQkJQWx0cm9uaWMsIExMQwotCQkJCTcxMiBUcnVtYnVsbCBBdmUKLQkJCQlHaXJhcmQgT2hpbyA0NDQyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotQkMtRkYtQUMgICAoaGV4KQkJVE9QQ09OIENPUlBPUkFUSU9OCi1CQ0ZGQUMgICAgIChiYXNlIDE2KQkJVE9QQ09OIENPUlBPUkFUSU9OCi0JCQkJNzUtMSwgSGFzdW51bWEtY2hvCi0JCQkJSXRhYmFzaGkta3UgVE9LWU8gMTc0LTg1ODAKLQkJCQlKQVBBTgotCi1DMC0wRC03RSAgIChoZXgpCQlBZGRpdGVjaCwgSW5jLgotQzAwRDdFICAgICAoYmFzZSAxNikJCUFkZGl0ZWNoLCBJbmMuCi0JCQkJMTA5MjUgS2luZ2h1cnN0Ci0JCQkJU3VpdGUgNTAwCi0JCQkJSG91c3RvbiBUWCA3NzA5OQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtMTItNDIgICAoaGV4KQkJQWxwaGEgU2VjdXJpdHkgUHJvZHVjdHMKLUMwMTI0MiAgICAgKGJhc2UgMTYpCQlBbHBoYSBTZWN1cml0eSBQcm9kdWN0cwotCQkJCTEwNzE1IFNpa2VzIFBsYWNlLCBTdGUuIDIwMAotCQkJCUNoYXJsb3R0ZSBOQyAyODI3NwotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtMTQtM0QgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotQzAxNDNEICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lCi0JCQkJIFNoYW5naGFpICAgMjAxNjEzCi0JCQkJQ0hJTkEKLQotQzAtMTgtODUgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotQzAxODg1ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLUMwLTFFLTlCICAgKGhleCkJCVBpeGF2aSBBUwotQzAxRTlCICAgICAoYmFzZSAxNikJCVBpeGF2aSBBUwotCQkJCUR1c2F2aWt2ZWllbiAzOQotCQkJCVN0YXZhbmdlciAgNDAwMwotCQkJCU5PUldBWQotCi1DMC0yMi01MCAgIChoZXgpCQlQUklWQVRFCi1DMDIyNTAgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLUMwLTI1LTA2ICAgKGhleCkJCUFWTSBHbWJICi1DMDI1MDYgICAgIChiYXNlIDE2KQkJQVZNIEdtYkgKLQkJCQlBbHQtTW9hYml0IDk1Ci0JCQkJQmVybGluICAxMDU1OQotCQkJCUdFUk1BTlkKLQotQzAtMjctQjkgICAoaGV4KQkJQmVpamluZyBOYXRpb25hbCBSYWlsd2F5IFJlc2VhcmNoICYgRGVzaWduIEluc3RpdHV0ZSAgb2YgU2lnbmFsICYgQ29tbXVuaWNhdGlvbgotQzAyN0I5ICAgICAoYmFzZSAxNikJCUJlaWppbmcgTmF0aW9uYWwgUmFpbHdheSBSZXNlYXJjaCAmIERlc2lnbiBJbnN0aXR1dGUgIG9mIFNpZ25hbCAmIENvbW11bmljYXRpb24KLQkJCQlOby4xOCBCdWlsZGluZywgSHVheXVhbiBZaUxpLEZlbmd0YWkgRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDczCi0JCQkJQ0hJTkEKLQotQzAtMjktNzMgICAoaGV4KQkJQXVkeXNzZXkgTGFib3JhdG9yaWVzIEluYy4gCi1DMDI5NzMgICAgIChiYXNlIDE2KQkJQXVkeXNzZXkgTGFib3JhdG9yaWVzIEluYy4gCi0JCQkJMzUwIFMuIEZpZ3Vlcm9hIFN0LiwgU3VpdGUgMjMzCi0JCQkJTG9zIEFuZ2VsZXMgQ0EgOTAwNzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLTI5LUYzICAgKGhleCkJCVh5U3lzdGVtCi1DMDI5RjMgICAgIChiYXNlIDE2KQkJWHlTeXN0ZW0KLQkJCQkjMTMwNCBEYWVydW5nIFBvc3QgVG93ZXIgNQotCQkJCUdhc2FuRG9uZyA2MC0zLCBHdW1DaHVtLUd1Ci0JCQkJU2VvdWwgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQzAtMkItRkMgICAoaGV4KQkJaU5FUy4gYXBwbGllZCBpbmZvcm1hdGljcyBHbWJICi1DMDJCRkMgICAgIChiYXNlIDE2KQkJaU5FUy4gYXBwbGllZCBpbmZvcm1hdGljcyBHbWJICi0JCQkJT2htc3RyYXNzZSA5Ci0JCQkJTHVkd2lnc2J1cmcgIDcxNjQyCi0JCQkJR0VSTUFOWQotCi1DMC0yQy03QSAgIChoZXgpCQlTaGVuIFpoZW4gSG9ybiBhdWRpbyBDby4sIEx0ZC4gCi1DMDJDN0EgICAgIChiYXNlIDE2KQkJU2hlbiBaaGVuIEhvcm4gYXVkaW8gQ28uLCBMdGQuIAotCQkJCUJsb2NrMTcsVG9uZ2Z1eXUgbG5kLlpvbmUsRGFsYW5nLEJhb2FuIAotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgIDUxODEwOSAKLQkJCQlDSElOQQotCi1DMC0zNS1CRCAgIChoZXgpCQlWZWxvY3l0ZWNoIEFwcwotQzAzNUJEICAgICAoYmFzZSAxNikJCVZlbG9jeXRlY2ggQXBzCi0JCQkJQXV0b21hdGlrdmVqIDEsIDNyZCBmbG9vcgotCQkJCVNPRUJPUkcgIDI4NjAKLQkJCQlERU5NQVJLCi0KLUMwLTM4LUY5ICAgKGhleCkJCU5va2lhIERhbm1hcmsgQS9TCi1DMDM4RjkgICAgIChiYXNlIDE2KQkJTm9raWEgRGFubWFyayBBL1MKLQkJCQlGcmVkZXJpa3NrYWoKLQkJCQlDb3BlbmhhZ2VuIFYgIERLLTE3OTAKLQkJCQlERU5NQVJLCi0KLUMwLTNCLThGICAgKGhleCkJCU1pbmljb20gRGlnaXRhbCBTaWduYWdlCi1DMDNCOEYgICAgIChiYXNlIDE2KQkJTWluaWNvbSBEaWdpdGFsIFNpZ25hZ2UKLQkJCQkyNCBIZWJyb24gUm9hZAotCQkJCUplcnVzYWxlbSAgOTM1NDIKLQkJCQlJU1JBRUwKLQotQzAtM0YtMEUgICAoaGV4KQkJTkVUR0VBUgotQzAzRjBFICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBTElGT1JOSUEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLTQxLUY2ICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzIEluYwotQzA0MUY2ICAgICAoYmFzZSAxNikJCUxHIEVsZWN0cm9uaWNzIEluYwotCQkJCTE5LTEsQ2hlb25naG8tUmksSmlud2ktTXllb24KLQkJCQlQeWVvbmd0YWVrIEd5ZW9uZ2dpLURvIDQ1MS03MTMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQzAtNDktM0QgICAoaGV4KQkJTUFJVFJJU0UgVEVDSE5PTE9HSVFVRQotQzA0OTNEICAgICAoYmFzZSAxNikJCU1BSVRSSVNFIFRFQ0hOT0xPR0lRVUUKLQkJCQkyMjQgUlVFIERFIExBIFNBSU5URSBCQVVNRQotCQkJCVNBSU5UIE1BWElNSU4gTEEgU0FJTlRFIEJBVU1FIFZBUiA4MzQ3MAotCQkJCUZSQU5DRQotCi1DMC01OC1BNyAgIChoZXgpCQlQaWNvIFN5c3RlbXMgQ28uLCBMdGQuCi1DMDU4QTcgICAgIChiYXNlIDE2KQkJUGljbyBTeXN0ZW1zIENvLiwgTHRkLgotCQkJCTMzMi03IEtvdXlhCi0JCQkJTWF0c3VkbyBDaGliYSBwcmVmLiAyNzAtMDAxNwotCQkJCUpBUEFOCi0KLUMwLTVFLTc5ICAgKGhleCkJCVNIRU5aSEVOIEhVQVhVTiBBUksgVEVDSE5PTE9HSUVTIENPLixMVEQKLUMwNUU3OSAgICAgKGJhc2UgMTYpCQlTSEVOWkhFTiBIVUFYVU4gQVJLIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0JCQkJM0YsQzQgQnVpbGRpbmcsWWludGlhbiBJbmR1c3RyaWFsIFpvbmUsWGl4aWFuZyxCYW9hbiBEaXN0cmljdAotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgxMDIKLQkJCQlDSElOQQotCi1DMC02Mi02QiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1DMDYyNkIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC02Qy0wRiAgIChoZXgpCQlEb2JicyBTdGFuZm9yZAotQzA2QzBGICAgICAoYmFzZSAxNikJCURvYmJzIFN0YW5mb3JkCi0JCQkJMjcxNSBFbGVjdHJvbmljIExhbmUKLQkJCQlEYWxsYXMgVGV4YXMgNzUyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLTdFLTQwICAgKGhleCkJCVNIRU5aSEVOIFhESyBDT01NVU5JQ0FUSU9OIEVRVUlQTUVOVCBDTy4sTFRECi1DMDdFNDAgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gWERLIENPTU1VTklDQVRJT04gRVFVSVBNRU5UIENPLixMVEQKLQkJCQlYREsgQlVJTERJTkcsTk8uMSBJTkRVU1RSSUFMIEFSRUEsQkFOVElBTixMT05HR0FORyBESVNUUklDVAotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgxMjkKLQkJCQlDSElOQQotCi1DMC04MS03MCAgIChoZXgpCQlFZmZpZ2lzIEdlb1NvbHV0aW9ucwotQzA4MTcwICAgICAoYmFzZSAxNikJCUVmZmlnaXMgR2VvU29sdXRpb25zCi0JCQkJNDEwMSwgcnVlIE1vbHNvbgotCQkJCVN1aXRlIDQwMAotCQkJCU1vbnRyZWFsIFF1ZWJlYyBIMVkzTDEKLQkJCQlDQU5BREEKLQotQzAtODMtMEEgICAoaGV4KQkJMldpcmUKLUMwODMwQSAgICAgKGJhc2UgMTYpCQkyV2lyZQotCQkJCTE3NjQgQXV0b21hdGlvbiBQa3d5Ci0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLTg0LTdBICAgKGhleCkJCUFwcGxlLCBJbmMuCi1DMDg0N0EgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIGluZmluaXRlIExvb3AKLQkJCQljdXBlcnRpbm8gY0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLThBLURFICAgKGhleCkJCVJ1Y2t1cyBXaXJlbGVzcwotQzA4QURFICAgICAoYmFzZSAxNikJCVJ1Y2t1cyBXaXJlbGVzcwotCQkJCTg4MCBXZXN0IE1hdWRlIEF2ZQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtOEItNkYgICAoaGV4KQkJUyBJIFNpc3RlbWFzIEludGVsaWdlbnRlcyBFbGV0cm9uaWNvcyBMdGRhCi1DMDhCNkYgICAgIChiYXNlIDE2KQkJUyBJIFNpc3RlbWFzIEludGVsaWdlbnRlcyBFbGV0cm9uaWNvcyBMdGRhCi0JCQkJUnVhIEFtYWRldSBQaW90dG8gMTYxCi0JCQkJQ3VyaXRpYmEgUGFyYW7hIDgxMjgwMDIwCi0JCQkJQlJBWklMCi0KLUMwLTkxLTMyICAgKGhleCkJCVBhdHJpb3QgTWVtb3J5Ci1DMDkxMzIgICAgIChiYXNlIDE2KQkJUGF0cmlvdCBNZW1vcnkKLQkJCQk0NzAyNyBCZW5pY2lhCi0JCQkJRnJlbW9udCBDQSA5NDU1NQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtOTEtMzQgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotQzA5MTM0ICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkLgotCQkJCVJvc2V2aWxsZSBDYWxpZm9ybmlhIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC05Qy05MiAgIChoZXgpCQlDT0JZCi1DMDlDOTIgICAgIChiYXNlIDE2KQkJQ09CWQotCQkJCUNPQlkgRWxlY3Ryb25pY3MgU2hlblpoZW4gUiZEIENlbnRlciAKLQkJCQlCbG9jayAzLFRhb1hpYSAybmQgSW5kdXN0cmlhbCBab25lLExvbmdIdWEgVG93bixCYW9BbiBEaXN0cmljdCwKLQkJCQlTSEVOWkhFTiBHVUFOR0RPTkcgNTE4MTA5Ci0JCQkJQ0hJTkEKLQotQzAtOUYtNDIgICAoaGV4KQkJQXBwbGUgSW5jCi1DMDlGNDIgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtQTAtREUgICAoaGV4KQkJTXVsdGkgVG91Y2ggT3kKLUMwQTBERSAgICAgKGJhc2UgMTYpCQlNdWx0aSBUb3VjaCBPeQotCQkJCUhlbnJ5IEZvcmRpbiBrYXR1IDYKLQkJCQlIZWxzaW5raSAgMDAxNTAKLQkJCQlGSU5MQU5ECi0KLUMwLUEyLTZEICAgKGhleCkJCUFiYm90dCBQb2ludCBvZiBDYXJlCi1DMEEyNkQgICAgIChiYXNlIDE2KQkJQWJib3R0IFBvaW50IG9mIENhcmUKLQkJCQk0MDAgQ29sbGVnZSBSb2FkIEVhc3QKLQkJCQlQcmluY2V0b24gTkogMDg1NDAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUMwLUEzLTY0ICAgKGhleCkJCTNEIFN5c3RlbXMgQnVybGluZ3RvbgotQzBBMzY0ICAgICAoYmFzZSAxNikJCTNEIFN5c3RlbXMgQnVybGluZ3RvbgotCQkJCTMyIFNlY29uZCBBdmUKLQkJCQlCdXJsaW5ndG9uIE1BIDAxODAzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC1BQy01NCAgIChoZXgpCQlTQUdFTUNPTQotQzBBQzU0ICAgICAoYmFzZSAxNikJCVNBR0VNQ09NCi0JCQkJMjUwIFJURSBERSBMJ0VNUEVSRVVSCi0JCQkJUlVFSUwgTUFMTUFJU09OICA5Mjg0OAotCQkJCUZSQU5DRQotCi1DMC1CMy01NyAgIChoZXgpCQlZb3NoaWtpIEVsZWN0cm9uaWNzIEluZHVzdHJ5IEx0ZC4KLUMwQjM1NyAgICAgKGJhc2UgMTYpCQlZb3NoaWtpIEVsZWN0cm9uaWNzIEluZHVzdHJ5IEx0ZC4KLQkJCQlPb2ljeW95byBCdWlsZGluZyA3ZgotCQkJCTUtMTItMTAgSGlnYXNoaW9vaQotCQkJCVNoaW5hZ2F3YS1rdSBUb2t5byAxNDAtMDAxMQotCQkJCUpBUEFOCi0KLUMwLUJBLUU2ICAgKGhleCkJCUFwcGxpY2F0aW9uIFNvbHV0aW9ucyAoU2FmZXR5IGFuZCBTZWN1cml0eSkgTHRkCi1DMEJBRTYgICAgIChiYXNlIDE2KQkJQXBwbGljYXRpb24gU29sdXRpb25zIChTYWZldHkgYW5kIFNlY3VyaXR5KSBMdGQKLQkJCQlVbml0IDE3Ci0JCQkJQ2xpZmZlIEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJTGV3ZXMgRWFzdCBTdXNzZXggQk44IDZKTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUMwLUMxLUMwICAgKGhleCkJCUNpc2NvLUxpbmtzeXMsIExMQwotQzBDMUMwICAgICAoYmFzZSAxNikJCUNpc2NvLUxpbmtzeXMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsaWZvcm5pYSA5MjYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtQzUtMjAgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi1DMEM1MjAgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlLgotCQkJCVN1aXRlIDEwMQotCQkJCVN1bm55dmFsZSBDQSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtQzktNDYgICAoaGV4KQkJTUlUU1VZQSBMQUJPUkFUT1JJRVMgSU5DLgotQzBDOTQ2ICAgICAoYmFzZSAxNikJCU1JVFNVWUEgTEFCT1JBVE9SSUVTIElOQy4KLQkJCQk2LTMxLTE4LEtBTUlBU0FPCi0JCQkJQVNBTy1LVQotCQkJCUtBV0FTQUtJLUNJVFkgS0FOQUdBV0EgMjE1LTAwMjEKLQkJCQlKQVBBTgotCi1DMC1DQi0zOCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotQzBDQjM4ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMyAKLQkJCQlDSElOQQotCi1DMC1DRi1BMyAgIChoZXgpCQlDcmVhdGl2ZSBFbGVjdHJvbmljcyAmYW1wOyBTb2Z0d2FyZSwgSW5jLgotQzBDRkEzICAgICAoYmFzZSAxNikJCUNyZWF0aXZlIEVsZWN0cm9uaWNzICZhbXA7IFNvZnR3YXJlLCBJbmMuCi0JCQkJNjUwIFN1bmRvd24gUm9hZAotCQkJCVNvdXRoIEVsZ2luIElMIDYwMTc3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC1EMC00NCAgIChoZXgpCQlTQUdFTUNPTQotQzBEMDQ0ICAgICAoYmFzZSAxNikJCVNBR0VNQ09NCi0JCQkJMjUwLCBSb3V0ZSBkZSBsJ0VtcGVyZXVyCi0JCQkJUlVFSUwtTUFMTUFJU09OICA5MjUwMAotCQkJCUZSQU5DRQotCi1DMC1EOS02MiAgIChoZXgpCQlBc2tleSBDb21wdXRlciBDb3JwLgotQzBEOTYyICAgICAoYmFzZSAxNikJCUFza2V5IENvbXB1dGVyIENvcnAuCi0JCQkJMTBGLE5PLjExOSxKSUFOS0FORyBSRC4sWkhPTkdIRSBESVNUIFhJTkJFSSBDSVRZCi0JCQkJVEFJUEVJIDIzNTg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DMC1ERi03NyAgIChoZXgpCQlDb25yYWQgRWxlY3Ryb25pYyBTRQotQzBERjc3ICAgICAoYmFzZSAxNikJCUNvbnJhZCBFbGVjdHJvbmljIFNFCi0JCQkJS2xhdXMgQ29ucmFkIFN0ci4gMQotCQkJCUhpcnNjaGF1IEJhdmFyaWEgOTIyNDAKLQkJCQlHRVJNQU5ZCi0KLUMwLUU0LTIyICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1DMEU0MjIgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQsIE1TODcyMwotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotQzAtRTUtNEUgICAoaGV4KQkJREVOWCBDb21wdXRlciBTeXN0ZW1zIEdtYkgKLUMwRTU0RSAgICAgKGJhc2UgMTYpCQlERU5YIENvbXB1dGVyIFN5c3RlbXMgR21iSAotCQkJCUlubnNicnVja2VyIFN0ci4gODQKLQkJCQlHcm9lYmVuemVsbCAgODIxOTQKLQkJCQlHRVJNQU5ZCi0KLUMwLUVBLUU0ICAgKGhleCkJCVNvbmljd2FsbAotQzBFQUU0ICAgICAoYmFzZSAxNikJCVNvbmljd2FsbAotCQkJCTIwMDEgTG9naWMgRHJpdmUKLQkJCQlTYW4gSm9zZSBDQSA5NTEyNC0zNDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DMC1GOC1EQSAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi1DMEY4REEgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLUM0LTAxLTQyICAgKGhleCkJCU1heE1lZGlhIFRlY2hub2xvZ3kgTGltaXRlZAotQzQwMTQyICAgICAoYmFzZSAxNikJCU1heE1lZGlhIFRlY2hub2xvZ3kgTGltaXRlZAotCQkJCTVGLCBOby4gMTEzLCBKaWFuIDJuZCBSZC4gSmhvbmdoZSBEaXN0cmljdC4KLQkJCQlOZXcgVGFpcGVpIENpdHkgIDIzNTg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DNC0wMS03QyAgIChoZXgpCQlSdWNrdXMgV2lyZWxlc3MKLUM0MDE3QyAgICAgKGJhc2UgMTYpCQlSdWNrdXMgV2lyZWxlc3MKLQkJCQk4ODAgV2VzdCBNYXVkZSBBdmUKLQkJCQlTdWl0ZSAxMDEKLQkJCQlTdW5ueXZhbGUgQ0EgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTAxLUIxICAgKGhleCkJCVNlZWtUZWNoIElOQwotQzQwMUIxICAgICAoYmFzZSAxNikJCVNlZWtUZWNoIElOQwotCQkJCTM4NTUgUnVmZmluIFJvYWQKLQkJCQlTYW4gRGllZ28gQ2FsaWZvcm5pYSA5MjEyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtMEEtQ0IgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotQzQwQUNCICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTBGLTA5ICAgKGhleCkJCUhlcm1lcyBlbGVjdHJvbmljIEdtYkgKLUM0MEYwOSAgICAgKGJhc2UgMTYpCQlIZXJtZXMgZWxlY3Ryb25pYyBHbWJICi0JCQkJQW0gSGFuZHdlcmtlcnBhcmsgMQotCQkJCUVzc2VuIE5SVyA0NTMwOQotCQkJCUdFUk1BTlkKLQotQzQtMTAtOEEgICAoaGV4KQkJUnVja3VzIFdpcmVsZXNzCi1DNDEwOEEgICAgIChiYXNlIDE2KQkJUnVja3VzIFdpcmVsZXNzCi0JCQkJODgwIFdlc3QgTWF1ZGUgQXZlCi0JCQkJU3VpdGUgMTAxCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC0xNi1GQSAgIChoZXgpCQlQcnlzbSBJbmMKLUM0MTZGQSAgICAgKGJhc2UgMTYpCQlQcnlzbSBJbmMKLQkJCQkxODAgQmF5dGVjaCBEcml2ZQotCQkJCVN1aXRlIDExMAotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTE3LUZFICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLUM0MTdGRSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZSAKLQkJCQlTaGFuZ2hhaSAgIDIwMTYxMyAKLQkJCQlDSElOQQotCi1DNC0xOS04QiAgIChoZXgpCQlEb21pbmlvbiBWb3RpbmcgU3lzdGVtcyBDb3Jwb3JhdGlvbgotQzQxOThCICAgICAoYmFzZSAxNikJCURvbWluaW9uIFZvdGluZyBTeXN0ZW1zIENvcnBvcmF0aW9uCi0JCQkJMjE1IFNwYWRpbmEgQXZlbnVlCi0JCQkJU3VpdGUgMjAwCi0JCQkJVG9yb250byBPbnRhcmlvIE01VCAyQzcKLQkJCQlDQU5BREEKLQotQzQtMUUtQ0UgICAoaGV4KQkJSE1JIFNvdXJjZXMgTHRkLgotQzQxRUNFICAgICAoYmFzZSAxNikJCUhNSSBTb3VyY2VzIEx0ZC4KLQkJCQk1IEZsb29yLCBTdWl0ZSAyLCAyMzMgSHNpbiBZaSBSb2FkLCBTZWN0aW9uIDQKLQkJCQlUYWlwZWkgIDEwNjgxCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DNC0yMy03QSAgIChoZXgpCQlXaGl6TmV0cyBJbmMuCi1DNDIzN0EgICAgIChiYXNlIDE2KQkJV2hpek5ldHMgSW5jLgotCQkJCTgzMCBTdGV3YXJ0IERyaXZlCi0JCQkJU3Vubnl2YWxlIENhbGlmb3JuaWEgOTQwODUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTI0LTJFICAgKGhleCkJCUdhbHZhbmljIEFwcGxpZWQgU2NpZW5jZXMgSW5jCi1DNDI0MkUgICAgIChiYXNlIDE2KQkJR2FsdmFuaWMgQXBwbGllZCBTY2llbmNlcyBJbmMKLQkJCQk3MDAwIEZpc2hlciBSb2FkIFNFCi0JCQkJQ2FsZ2FyeSBBbGJlcnRhIFQySCAwVzMKLQkJCQlDQU5BREEKLQotQzQtMkMtMDMgICAoaGV4KQkJQXBwbGUsIEluYy4KLUM0MkMwMyAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDYWxpZm9ybmlhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC0zNi1EQSAgIChoZXgpCQlSdXN0ZWxldGVjaCBMdGQuCi1DNDM2REEgICAgIChiYXNlIDE2KQkJUnVzdGVsZXRlY2ggTHRkLgotCQkJCU9yZHpob25pa2lkemUgU3RyLiAxMSwgQmxkZy4gNDAsIE9mZi4gMTUgCi0JCQkJTW9zY293ICAxMTU0MTkKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotQzQtMzktM0EgICAoaGV4KQkJU01DIE5ldHdvcmtzIEluYwotQzQzOTNBICAgICAoYmFzZSAxNikJCVNNQyBOZXR3b3JrcyBJbmMKLQkJCQkyMCBNYXNvbgotCQkJCUlydmluZSBDQSA5MjYxOAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtM0EtOUYgICAoaGV4KQkJU2ljb25peCBJbmMuCi1DNDNBOUYgICAgIChiYXNlIDE2KQkJU2ljb25peCBJbmMuCi0JCQkJIzI4LCAyMzMzIDE4dGggQXZlIE5FCi0JCQkJQ2FsZ2FyeSBBbGJlcnRhIFQyRSA4VDYKLQkJCQlDQU5BREEKLQotQzQtM0MtM0MgICAoaGV4KQkJQ1lCRUxFQyBTQQotQzQzQzNDICAgICAoYmFzZSAxNikJCUNZQkVMRUMgU0EKLQkJCQlSdWUgZGVzIFV0dGlucyAyNwotCQkJCVl2ZXJkb24tbGVzLUJhaW5zICAxNDAxCi0JCQkJU1dJVFpFUkxBTkQKLQotQzQtM0QtQzcgICAoaGV4KQkJTkVUR0VBUgotQzQzREM3ICAgICAoYmFzZSAxNikJCU5FVEdFQVIKLQkJCQkzNTAgRUFTVCBQTFVNRVJJQSBEUklWRQotCQkJCVNBTiBKT1NFIENBTElGT1JOSUEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTQ2LTE5ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi1DNDQ2MTkgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLQkJCQlOTy4xOTI1LE5hbmxlIFJvYWQgLFNvbmdqaWFuZyBFeHBvcnQgUHJvY2Vzc2luZyBab25lIAotCQkJCVNoYW5naGFpICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLUM0LTRBLUQwICAgKGhleCkJCUZJUkVGTElFUyBSVExTCi1DNDRBRDAgICAgIChiYXNlIDE2KQkJRklSRUZMSUVTIFJUTFMKLQkJCQkzMSBSVUUgR1VTVEFWRSBFSUZGRUwKLQkJCQljL28gUEVUQUxFCi0JCQkJR1JFTk9CTEUgIDM4MDAwCi0JCQkJRlJBTkNFCi0KLUM0LTRCLTQ0ICAgKGhleCkJCU9tbmlwcmludCBJbmMuCi1DNDRCNDQgICAgIChiYXNlIDE2KQkJT21uaXByaW50IEluYy4KLQkJCQkxOTIzIEVhc3QgRGVlcmUgQXZlLgotCQkJCVNhbnRhIEFuYSBDQSA5MjcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtNTUtQTYgICAoaGV4KQkJQ2FkYWMgSG9sZGluZ3MgTHRkCi1DNDU1QTYgICAgIChiYXNlIDE2KQkJQ2FkYWMgSG9sZGluZ3MgTHRkCi0JCQkJMSBOZXcgU3RyZWV0Ci0JCQkJTHV0b24gQmVkZm9yZHNoaXJlIExVMSA1RFgKLQkJCQlVTklURUQgS0lOR0RPTQotCi1DNC01NS1DMiAgIChoZXgpCQlCYWNoLVNpbXBzb24KLUM0NTVDMiAgICAgKGJhc2UgMTYpCQlCYWNoLVNpbXBzb24KLQkJCQkxMDkgTWVnIERyaXZlIAotCQkJCUxvbmRvbiBPbnRhcmlvIE42RTNaNwotCQkJCUNBTkFEQQotCi1DNC01Ni0wMCAgIChoZXgpCQlHYWxsZW9uIEVtYmVkZGVkIENvbXB1dGluZwotQzQ1NjAwICAgICAoYmFzZSAxNikJCUdhbGxlb24gRW1iZWRkZWQgQ29tcHV0aW5nCi0JCQkJT3N0ZW5zam9ldmVpZW4gNDQKLQkJCQlPc2xvICBOLTA2NjcKLQkJCQlOT1JXQVkKLQotQzQtNTktNzYgICAoaGV4KQkJRnVnb28KLUM0NTk3NiAgICAgKGJhc2UgMTYpCQlGdWdvbwotCQkJCTEwMjQgMTR0aCBBdmUgU0UKLQkJCQlMZSBNYXJzIElBIDUxMDMxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC02MC00NCAgIChoZXgpCQlFdmVyZXggRWxlY3Ryb25pY3MgTGltaXRlZAotQzQ2MDQ0ICAgICAoYmFzZSAxNikJCUV2ZXJleCBFbGVjdHJvbmljcyBMaW1pdGVkCi0JCQkJVW5pdCAzLCBCbG9jayBBLCAxNi9GCi0JCQkJS2FpbGV5IEluZHVzdHJpYWwgQ2VudGVyCi0JCQkJSE9ORyBLT05HCi0KLUM0LTYzLTU0ICAgKGhleCkJCVUtUmFrdSwgSW5jLgotQzQ2MzU0ICAgICAoYmFzZSAxNikJCVUtUmFrdSwgSW5jLgotCQkJCTQwMS0xIERlYmEKLQkJCQlSaXR0by1zaGkgU2hpZ2EgNTIwLTMwNDEKLQkJCQlKQVBBTgotCi1DNC02NC0xMyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1DNDY0MTMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtNjctQjUgICAoaGV4KQkJTGlicmF0b25lIEEvUwotQzQ2N0I1ICAgICAoYmFzZSAxNikJCUxpYnJhdG9uZSBBL1MKLQkJCQlNaWxlcGFya2VuIDIwRQotCQkJCVNrb3ZsdW5kZSAgMjc0MAotCQkJCURFTk1BUksKLQotQzQtNkEtQjcgICAoaGV4KQkJWGlhb21pIFRlY2hub2xvZ3ksSW5jLgotQzQ2QUI3ICAgICAoYmFzZSAxNikJCVhpYW9taSBUZWNobm9sb2d5LEluYy4KLQkJCQlRdWFuc2hpdGlhbmRpIFRvd2VyIEEsOHRoIEZsb29yLGppYTUwLTEgV2FuZ2ppbmcgWGlsdSxDaGFveWFuZyBEaXN0cmljdCwgQmVpamluZywgQ2hpbmEgMTAwMTAyCi0JCQkJQmVpamluZyBCZWlqaW5nIDEwMDEwMgotCQkJCUNISU5BCi0KLUM0LTcxLTMwICAgKGhleCkJCUZvbiBUZWNobm9sb2d5IFMuTC4KLUM0NzEzMCAgICAgKGJhc2UgMTYpCQlGb24gVGVjaG5vbG9neSBTLkwuCi0JCQkJUXVpbnRhbmF2aWRlcyAxMwotCQkJCUVkaWZpY2lvIDIsIHBsYW50YSAxCi0JCQkJTWFkcmlkICAyODA1MAotCQkJCVNQQUlOCi0KLUM0LTcxLUZFICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUM0NzFGRSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTdCLTJGICAgKGhleCkJCUJlaWppbmcgSm9pbkhvcGUgSW1hZ2UgVGVjaG5vbG9neSBMdGQuCi1DNDdCMkYgICAgIChiYXNlIDE2KQkJQmVpamluZyBKb2luSG9wZSBJbWFnZSBUZWNobm9sb2d5IEx0ZC4KLQkJCQk2MjQgUm9vbSAuQXV0b21hdGlvbiBCdWlsZGluZy45NSMgWmhvbmcgR3VhbmN1biBFYXN0IFJvYWQuSGFpZGlhbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDE5MAotCQkJCUNISU5BCi0KLUM0LTdCLUEzICAgKGhleCkJCU5BVklTIEluYy4KLUM0N0JBMyAgICAgKGJhc2UgMTYpCQlOQVZJUyBJbmMuCi0JCQkJRG1pdHJvdnNrb2Ugc2hvc3NlIDE1NwotCQkJCU1vc2NvdyAgMTI3NDExCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLUM0LTdELTRGICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUM0N0Q0RiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LTgyLTNGICAgKGhleCkJCUZ1amlhbiBOZXdsYW5kIEF1dG8tSUQgVGVjaC4gQ28sLkx0ZC4KLUM0ODIzRiAgICAgKGJhc2UgMTYpCQlGdWppYW4gTmV3bGFuZCBBdXRvLUlEIFRlY2guIENvLC5MdGQuCi0JCQkJTmV3bGFuZCBTY2llbmNlICYgVGVjaG5vbG9neSBQYXJrLCBOby4xIFJ1amlhbmcgV2VzdCBSZC4sIE1hd2VpCi0JCQkJRnV6aG91IEZ1amlhbiAzNTAwMTUKLQkJCQlDSElOQQotCi1DNC04NS0wOCAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGlvbgotQzQ4NTA4ICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0aW9uCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAgCi0JCQkJTUFMQVlTSUEKLQotQzQtOTMtMDAgICAoaGV4KQkJOERldmljZXMKLUM0OTMwMCAgICAgKGJhc2UgMTYpCQk4RGV2aWNlcwotCQkJCUdlZGltaW5vIHN0LiA0NwotCQkJCUthdW5hcyBMVCA0NDI0MgotCQkJCUxJVEhVQU5JQQotCi1DNC05My0xMyAgIChoZXgpCQkxMDBmaW8gbmV0d29ya3MgdGVjaG5vbG9neSBsbGMKLUM0OTMxMyAgICAgKGJhc2UgMTYpCQkxMDBmaW8gbmV0d29ya3MgdGVjaG5vbG9neSBsbGMKLQkJCQkyNTM0IGNyZXNjZW50IHN0LiBhcHQgM0YKLQkJCQlBc3RvcmlhIE5ldyB5b3JrIDExMTAyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC05NS1BMiAgIChoZXgpCQlTSEVOWkhFTiBXRUlKSVUgSU5EVVNUUlkgQU5EIFRSQURFIERFVkVMT1BNRU5UIENPLiwgTFRECi1DNDk1QTIgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gV0VJSklVIElORFVTVFJZIEFORCBUUkFERSBERVZFTE9QTUVOVCBDTy4sIExURAotCQkJCVJPT00gMTcxMyxCQU9IVUEgQlVJTERJTkcsIEhVQVFJQU5HIE5PUlRIIFJPQUQsIEZVVElBTiBESVNUUklDVCwgCi0JCQkJU0hFTlpIRU4gR1VBTkdET05HIDUxODAzMQotCQkJCUNISU5BCi0KLUM0LTk4LTA1ICAgKGhleCkJCU1pbmlldW0gTmV0d29ya3MsIEluYwotQzQ5ODA1ICAgICAoYmFzZSAxNikJCU1pbmlldW0gTmV0d29ya3MsIEluYwotCQkJCTY0MDQgSW50ZXJuYXRpb25hbCBQYXJrd2F5Ci0JCQkJc3RlIDIwMjAKLQkJCQlQbGFubyBUZXhhcyA3NTA5MwotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtQUEtQTEgICAoaGV4KQkJU1VNTUlUIERFVkVMT1BNRU5ULCBzcG9sLnMgci5vLgotQzRBQUExICAgICAoYmFzZSAxNikJCVNVTU1JVCBERVZFTE9QTUVOVCwgc3BvbC5zIHIuby4KLQkJCQlLIFZvZG90ZWNpIDE5NwotCQkJCU9yZWNoIFByYWhhLXphcGFkIDI1MiAyNQotCQkJCUNaRUNIIFJFUFVCTElDCi0KLUM0LUI1LTEyICAgKGhleCkJCUdlbmVyYWwgRWxlY3RyaWMgRGlnaXRhbCBFbmVyZ3kKLUM0QjUxMiAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIEVsZWN0cmljIERpZ2l0YWwgRW5lcmd5Ci0JCQkJNDIwMCBXaWxkd29vZCBQa3d5Ci0JCQkJQXRsYW50YSBHQSAzMDMzOQotCQkJCVVOSVRFRCBTVEFURVMKLQotQzQtQkEtOTkgICAoaGV4KQkJSStNRSBBY3RpYSBJbmZvcm1hdGlrIHVuZCBNaWtyby1FbGVrdHJvbmlrIEdtYkgKLUM0QkE5OSAgICAgKGJhc2UgMTYpCQlJK01FIEFjdGlhIEluZm9ybWF0aWsgdW5kIE1pa3JvLUVsZWt0cm9uaWsgR21iSAotCQkJCURyZXNkZW5zdHJhc3NlIDE3LzE4Ci0JCQkJQnJhdW5zY2h3ZWlnIE5pZWRlcnNhY2hzZW4gMzg2OTAKLQkJCQlHRVJNQU5ZCi0KLUM0LUMxLTlGICAgKGhleCkJCU5hdGlvbmFsIE9pbHdlbGwgVmFyY28gSW5zdHJ1bWVudGF0aW9uLCBNb25pdG9yaW5nLCBhbmQgT3B0aW1pemF0aW9uIChOT1YgSU1PKQotQzRDMTlGICAgICAoYmFzZSAxNikJCU5hdGlvbmFsIE9pbHdlbGwgVmFyY28gSW5zdHJ1bWVudGF0aW9uLCBNb25pdG9yaW5nLCBhbmQgT3B0aW1pemF0aW9uIChOT1YgSU1PKQotCQkJCTEyMDAgQ3lwcmVzcyBDcmVlayBSZC4KLQkJCQlDZWRhciBQYXJrIFRYIDc4NjEzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC1DQS1EOSAgIChoZXgpCQlIYW5nemhvdSBIM0MgVGVjaG5vbG9naWVzIENvLiwgTGltaXRlZAotQzRDQUQ5ICAgICAoYmFzZSAxNikJCUhhbmd6aG91IEgzQyBUZWNobm9sb2dpZXMgQ28uLCBMaW1pdGVkCi0JCQkJMzEwIExpdWhlIFJvYWQsIFpoaWppYW5nIFNjaWVuY2UgUGFyawotCQkJCUhhbmd6aG91IFpoZWppYW5nLCAgMzEwMDUzCi0JCQkJQ0hJTkEKLQotQzQtQ0QtNDUgICAoaGV4KQkJQmVpamluZyBCb29tc2Vuc2UgVGVjaG5vbG9neSBDTy4sTFRELgotQzRDRDQ1ICAgICAoYmFzZSAxNikJCUJlaWppbmcgQm9vbXNlbnNlIFRlY2hub2xvZ3kgQ08uLExURC4KLQkJCQk4MDMgQnVpbGRpbmcgNCBJTlRFUldFU1QgQnVzaW5lc3MgQ2VudGVyLE5vLjkgU291dGggU2hvdXRpIFJvYWQgLEhhaWRpYW5EaXN0cmljdCwKLQkJCQlCZWlqaW5nICAxMDAwNDgKLQkJCQlDSElOQQotCi1DNC1ENC04OSAgIChoZXgpCQlKaWFuZ1N1IEpveXF1ZSBJbmZvcm1hdGlvbiBJbmR1c3RyeSBDby4sTHRkCi1DNEQ0ODkgICAgIChiYXNlIDE2KQkJSmlhbmdTdSBKb3lxdWUgSW5mb3JtYXRpb24gSW5kdXN0cnkgQ28uLEx0ZAotCQkJCTEwICBGbG9vciBZYUh1YSBCdWlsZGluZywgWGknYW5CZWkgUm9hZCwgCi0JCQkJWHV6aG91IEppYW5nU3UgMjIxMDA2Ci0JCQkJQ0hJTkEKLQotQzQtRDktODcgICAoaGV4KQkJSW50ZWwgQ29ycG9yYXRlCi1DNEQ5ODcgICAgIChiYXNlIDE2KQkJSW50ZWwgQ29ycG9yYXRlCi0JCQkJTG90IDgsIEphbGFuIEhpLVRlY2ggMi8zCi0JCQkJS3VsaW0gSGktVGVjaCBQYXJrCi0JCQkJS3VsaW0gS2VkYWggMDkwMDAKLQkJCQlNQUxBWVNJQQotCi1DNC1FMS03QyAgIChoZXgpCQlVMlMgY28uCi1DNEUxN0MgICAgIChiYXNlIDE2KQkJVTJTIGNvLgotCQkJCTEwNC03MDYsIFNLIFZlbnRpdW0gQnVpbGRpbmcsIDUyMiwgRGFuZ2plb25nLURvbmcKLQkJCQlHdW5wby1zaSBHZW9uZ2dpLWRvIDQzNS03NzYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQzQtRUUtQUUgICAoaGV4KQkJVlNTIE1vbml0b3JpbmcKLUM0RUVBRSAgICAgKGJhc2UgMTYpCQlWU1MgTW9uaXRvcmluZwotCQkJCTE4NTAgR2F0ZXdheSBEciwgU3VpdGUgNTAwCi0JCQkJU2FuIE1hdGVvIENBIDk0NDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC1FRS1GNSAgIChoZXgpCQlPY2xhcm8sIEluYy4KLUM0RUVGNSAgICAgKGJhc2UgMTYpCQlPY2xhcm8sIEluYy4KLQkJCQkzNDMgRGFuaWVsIFplbmtlciBEci4sIFN1aXRlIDEwMgotCQkJCUhvcnNlaGVhZHMgTlkgMTQ4NDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM0LUY0LTY0ICAgKGhleCkJCVNwaWNhIGludGVybmF0aW9uYWwKLUM0RjQ2NCAgICAgKGJhc2UgMTYpCQlTcGljYSBpbnRlcm5hdGlvbmFsCi0JCQkJUG90IGsgc2VqbWlzY3UgMzMKLQkJCQlManVibGphbmEgIDEwMDAKLQkJCQlTTE9WRU5JQQotCi1DNC1GNS03QyAgIChoZXgpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLUM0RjU3QyAgICAgKGJhc2UgMTYpCQlCcm9jYWRlIENvbW11bmljYXRpb25zIFN5c3RlbXMsIEluYy4KLQkJCQkxMzAgSG9sZ2VyIFdheQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DNC1GQy1FNCAgIChoZXgpCQlEaXNoVFYgTlogTHRkCi1DNEZDRTQgICAgIChiYXNlIDE2KQkJRGlzaFRWIE5aIEx0ZAotCQkJCTEwIFBlbm5leSBBdmUKLQkJCQlNdCBSb3NraWxsCi0JCQkJQXVja2xhbmQgIDEwNDEKLQkJCQlORVcgWkVBTEFORAotCi1DOC0wMi1BNiAgIChoZXgpCQlCZWlqaW5nIE5ld21pbmUgVGVjaG5vbG9neQotQzgwMkE2ICAgICAoYmFzZSAxNikJCUJlaWppbmcgTmV3bWluZSBUZWNobm9sb2d5Ci0JCQkJMTAgZmxvb3IsS2VzaGkgUGxhemEKLQkJCQlIYWlEaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotQzgtMDctMTggICAoaGV4KQkJVERTaQotQzgwNzE4ICAgICAoYmFzZSAxNikJCVREU2kKLQkJCQlVbml0IDEwIENvbmNlcHQgUGFyawotCQkJCUlubm92YXRpb24gQ2xvc2UKLQkJCQlQb29sZSBEb3JzZXQgQkgxMiA0UVQKLQkJCQlVTklURUQgS0lOR0RPTQotCi1DOC0wQS1BOSAgIChoZXgpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotQzgwQUE5ICAgICAoYmFzZSAxNikJCVF1YW50YSBDb21wdXRlciBJbmMuCi0JCQkJMjExLCBXZW4gSHdhIDJuZCBSZC4sCi0JCQkJVGFvIFl1YW4gS3VlaSBTaGFuIDMzMzc3Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DOC0wRS03NyAgIChoZXgpCQlMZSBTaGkgWmhpIFhpbiBFbGVjdHJvbmljIFRlY2hub2xvZ3kgKFRpYW5qaW4pICBDby4sTHRkIAotQzgwRTc3ICAgICAoYmFzZSAxNikJCUxlIFNoaSBaaGkgWGluIEVsZWN0cm9uaWMgVGVjaG5vbG9neSAoVGlhbmppbikgIENvLixMdGQgCi0JCQkJTm8uMjAxLTQyNywyRixUdGhlIEFuaW1hdGlvbiAgQnVpbGRpbmcgQjEgRGlzdHJpY3Tvv73vv71Oby4gMTI277+977+9VGlhbmppbiBlY28tY2l0eSBhbmltYXRpb24gUm9hZAotCQkJCVRpYW5qaW4gIDMwMDQ2NwotCQkJCUNISU5BCi0KLUM4LTFBLUZFICAgKGhleCkJCURMT0dJQyBHbWJICi1DODFBRkUgICAgIChiYXNlIDE2KQkJRExPR0lDIEdtYkgKLQkJCQlSYXRoYXVzc3RyYXNzZSAxNAotCQkJCVBvc3RmYWNoIDMyMQotCQkJCUJhYXIgIDYzNDEKLQkJCQlTV0lUWkVSTEFORAotCi1DOC0xRS04RSAgIChoZXgpCQlBRFYgU2VjdXJpdHkgKFMpIFB0ZSBMdGQKLUM4MUU4RSAgICAgKGJhc2UgMTYpCQlBRFYgU2VjdXJpdHkgKFMpIFB0ZSBMdGQKLQkJCQk1NiBEdW5sb3AgU3RyZWV0Ci0JCQkJMjA5Mzg2Ci0JCQkJU0lOR0FQT1JFCi0KLUM4LTIwLThFICAgKGhleCkJCVN0b3JhZ2VkYXRhCi1DODIwOEUgICAgIChiYXNlIDE2KQkJU3RvcmFnZWRhdGEKLQkJCQlSYW5kc3RhZCAyMjExNwotCQkJCUFsbWVyZSBGbGV2b2xhbmQgMTMxNkJXCi0JCQkJTkVUSEVSTEFORFMKLQotQzgtMjktMkEgICAoaGV4KQkJQmFydW4gRWxlY3Ryb25pY3MKLUM4MjkyQSAgICAgKGJhc2UgMTYpCQlCYXJ1biBFbGVjdHJvbmljcwotCQkJCTg2OSwgSmFuZ2ppLXJpLCBEb25ndGFuLW15ZW9uCi0JCQkJSHdhc2Vvbmctc2kgR3llb25nZ2ktZG8gNDQ1ODEyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUM4LTJBLTE0ICAgKGhleCkJCUFwcGxlLCBJbmMKLUM4MkExNCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC0yRS05NCAgIChoZXgpCQlIYWxmYSBFbnRlcnByaXNlIENvLiwgTHRkLgotQzgyRTk0ICAgICAoYmFzZSAxNikJCUhhbGZhIEVudGVycHJpc2UgQ28uLCBMdGQuCi0JCQkJNUYsIE5vLjEwMiwgTWluZyBDaHVhbiBSb2FkCi0JCQkJSHNpbiBUaWVuIFRhaXBlaSBDb3VudHkgMjMxNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM4LTMyLTMyICAgKGhleCkJCUh1bnRpbmcgSW5ub3ZhCi1DODMyMzIgICAgIChiYXNlIDE2KQkJSHVudGluZyBJbm5vdmEKLQkJCQk4MzgzIE4gU2FtIEhvdXN0b24gUGt3eSBXZXN0Ci0JCQkJSG91c3RvbiBUZXhhcyA3NzA2NAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzgtMzMtNEIgICAoaGV4KQkJQXBwbGUsIEluYy4KLUM4MzM0QiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgaW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM4LTM1LUI4ICAgKGhleCkJCUVyaWNzc29uLCBFQUIvUldJL0sKLUM4MzVCOCAgICAgKGJhc2UgMTYpCQlFcmljc3NvbiwgRUFCL1JXSS9LCi0JCQkJU2tvbGflbmdlbiAxNwotCQkJCUfkdmxlCi0JCQkJU0UtODAwIDA2Ci0JCQkJU1dFREVOCi0KLUM4LTNBLTM1ICAgKGhleCkJCVRlbmRhIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1DODNBMzUgICAgIChiYXNlIDE2KQkJVGVuZGEgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tIDYwMS02MDIsUi9EIEJ1aWxkaW5nIENvbXBsZXgsVHNpbmdodWEgSGlnaC1UZWNoIFBhcmssbmFuc2hhbiBkaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5kb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUM4LTNCLTQ1ICAgKGhleCkJCUpSSS1NYXhhbnQKLUM4M0I0NSAgICAgKGJhc2UgMTYpCQlKUkktTWF4YW50Ci0JCQkJMTE2IFF1YWkgZGUgYmV6b25zCi0JCQkJQXJnZW50ZXVpbCAgOTUxMDAKLQkJCQlGUkFOQ0UKLQotQzgtM0UtOTkgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLUM4M0U5OSAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotQzgtM0UtQTcgICAoaGV4KQkJS1VOQlVTIEdtYkgKLUM4M0VBNyAgICAgKGJhc2UgMTYpCQlLVU5CVVMgR21iSAotCQkJCUhlZXJ3ZWcgMTVBCi0JCQkJRGVua2VuZG9yZiBCVyBELTczNzcwCi0JCQkJR0VSTUFOWQotCi1DOC00NS0yOSAgIChoZXgpCQlJTUsgTmV0d29ya3MgQ28uLEx0ZAotQzg0NTI5ICAgICAoYmFzZSAxNikJCUlNSyBOZXR3b3JrcyBDby4sTHRkCi0JCQkJMjAxLUhvIGp1bmdyaWJqdW5qYSwgMTYtM2J1bmppLCAKLQkJCQlHdXVpLWRvbmcsIEd3YW5namluLWd1Ci0JCQkJU2VvdWwgIDE0My04MTYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQzgtNDUtNDQgICAoaGV4KQkJU2hhbmdoYWkgRW5sb2dpYyBFbGVjdHJpYyBUZWNobm9sb2d5IENvLiwgTHRkLgotQzg0NTQ0ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEVubG9naWMgRWxlY3RyaWMgVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tIDExMDQtMTEwNiwgQnVpbGRpbmcgQSwgTm8uIDM5MSBHdWlwaW5nIFJvYWQKLQkJCQlYdWh1aSBEaXN0cmljIFNoYW5naGFpIDIwMDIzMwotCQkJCUNISU5BCi0KLUM4LTQ4LUY1ICAgKGhleCkJCU1FRElTT04gWHJheSBDby4sIEx0ZAotQzg0OEY1ICAgICAoYmFzZSAxNikJCU1FRElTT04gWHJheSBDby4sIEx0ZAotCQkJCTNGIEJ1cmltIEIvRCA5OTkgRGFlY2hpLWRvbmcgCi0JCQkJR2FuZ25hbS1ndSAKLQkJCQlTZW91bCAgMTM1LTI4MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DOC00Qy03NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1DODRDNzUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC01Ni00NSAgIChoZXgpCQlJbnRlcm1hcyBGcmFuY2UKLUM4NTY0NSAgICAgKGJhc2UgMTYpCQlJbnRlcm1hcyBGcmFuY2UKLQkJCQlSdWUgZGUgbCYjMzk7aW5kdXN0cmllCi0JCQkJQmVhdXZhaXMgT2lzZSA2MDAwMAotCQkJCUZSQU5DRQotCi1DOC02MC0wMCAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLUM4NjAwMCAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sIFBlaXRvdSwgCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUM4LTY0LUM3ICAgKGhleCkJCXp0ZSBjb3Jwb3JhdGlvbgotQzg2NEM3ICAgICAoYmFzZSAxNikJCXp0ZSBjb3Jwb3JhdGlvbgotCQkJCTEyL0YuLHp0ZSBSJkQgYnVpbGRpbmcsa2VqaW5hbiBSb2FkLAotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1DOC02Qy0xRSAgIChoZXgpCQlEaXNwbGF5IFN5c3RlbXMgTHRkCi1DODZDMUUgICAgIChiYXNlIDE2KQkJRGlzcGxheSBTeXN0ZW1zIEx0ZAotCQkJCTE2LVBhcmtvdmFqYSBTdHJlZXQgMjYKLQkJCQlNb3Njb3cgIDEwNTQ4NAotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1DOC02Qy04NyAgIChoZXgpCQlaeXhlbCBDb21tdW5pY2F0aW9ucyBDb3JwCi1DODZDODcgICAgIChiYXNlIDE2KQkJWnl4ZWwgQ29tbXVuaWNhdGlvbnMgQ29ycAotCQkJCU5vLjYgSW5ub3ZhdGlvbiBSb2FkIElJCi0JCQkJU2NpZW5jZSBQYXJrCi0JCQkJSHNpbi1DaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQzgtNkMtQjYgICAoaGV4KQkJT3B0Y29tIENvLiwgTHRkLgotQzg2Q0I2ICAgICAoYmFzZSAxNikJCU9wdGNvbSBDby4sIEx0ZC4KLQkJCQk3OTItMyBUb21pZ2Fva2EKLQkJCQlJd2F0YSBTaGl6dW9rYSA0MzgtMDgwMwotCQkJCUpBUEFOCi0KLUM4LTcyLTQ4ICAgKGhleCkJCUFwbGljb20gT3kKLUM4NzI0OCAgICAgKGJhc2UgMTYpCQlBcGxpY29tIE95Ci0JCQkJUmF1dGF0aWVua2F0dSA1NgotCQkJCcOD4oCew4PCpG5la29za2kgTMODwqRuc2ktU3VvbWkgNDQxMDEKLQkJCQlGSU5MQU5ECi0KLUM4LTdCLTVCICAgKGhleCkJCXp0ZSBjb3Jwb3JhdGlvbgotQzg3QjVCICAgICAoYmFzZSAxNikJCXp0ZSBjb3Jwb3JhdGlvbgotCQkJCTEyL0YuLHp0ZSBSJkQgQnVpbGRpbmcsS2VqaW5hbiBSb2FkLAotCQkJCVNoZW56aGVuLCBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQzgtN0MtQkMgICAoaGV4KQkJVmFsaW5rIENvLiwgTHRkLiAKLUM4N0NCQyAgICAgKGJhc2UgMTYpCQlWYWxpbmsgQ28uLCBMdGQuIAotCQkJCTFGIERvbmd3b24gQmxkZy4gOTAsIERhbmdzYW4tRG9uZyAzLUdhIFlvdW5nZHVuZ3BvLUd1Ci0JCQkJU2VvdWwgIDE1MC04MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQzgtN0QtNzcgICAoaGV4KQkJU2hlbnpoZW4gS2luZ3RlY2ggQ29tbXVuaWNhdGlvbiBFcXVpcG1lbnQgQ28uLEx0ZAotQzg3RDc3ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEtpbmd0ZWNoIENvbW11bmljYXRpb24gRXF1aXBtZW50IENvLixMdGQKLQkJCQlGbG9vcjMuQnVpbGRpbmcgQSxOTy4zLFJvYWQgMSBvZiBzaGFuZ3h1ZSBEZW5neGlua2VuZyBJbmR1c3RyeSBQYXJrLEJhbnRpYW4gU3RyZWV0LAotCQkJCUxvbmdnYW5nIERpc3RyaWN0LAotCQkJCVNoZW56aGVuIENpdHkgR3Vhbmdkb25nIDUxODExMgotCQkJCUNISU5BCi0KLUM4LTdFLTc1ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotQzg3RTc1ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DOC04NC0zOSAgIChoZXgpCQlTdW5yaXNlIFRlY2hub2xvZ2llcwotQzg4NDM5ICAgICAoYmFzZSAxNikJCVN1bnJpc2UgVGVjaG5vbG9naWVzCi0JCQkJNTQgQ29tbWVyY2lhbCBTdHJlZXQKLQkJCQlSYXluaGFtIE1BIDAyNzY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC04NC00NyAgIChoZXgpCQlCZWF1dGlmdWwgRW50ZXJwcmlzZSBDby4sIEx0ZAotQzg4NDQ3ICAgICAoYmFzZSAxNikJCUJlYXV0aWZ1bCBFbnRlcnByaXNlIENvLiwgTHRkCi0JCQkJMjZ0aCBGbG9vciwgQmVhdXRpZnVsIEdyb3VwIFRvd2VyLCA3NyBDb25uYXVnaHQgUm9hZCBDZW50cmFsCi0JCQkJSE9ORyBLT05HCi0KLUM4LTg3LTNCICAgKGhleCkJCU5ldCBPcHRpY3MKLUM4ODczQiAgICAgKGJhc2UgMTYpCQlOZXQgT3B0aWNzCi0JCQkJNTMwMyBCZXRzeSBSb3NzIERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM4LThCLTQ3ICAgKGhleCkJCU9wdGljb3Mgcy5yLmwuCi1DODhCNDcgICAgIChiYXNlIDE2KQkJT3B0aWNvcyBzLnIubC4KLQkJCQl2aWEgVGVyemkgZGkgUy5BZ2F0YSAyCi0JCQkJQnJlbWJhdGUgZGkgU29wcmEgQmVyZ2FtbyAyNDAzMAotCQkJCUlUQUxZCi0KLUM4LTkwLTNFICAgKGhleCkJCVBha3RvbiBUZWNobm9sb2dpZXMKLUM4OTAzRSAgICAgKGJhc2UgMTYpCQlQYWt0b24gVGVjaG5vbG9naWVzCi0JCQkJMSBIZWxpdW0gU3QKLQkJCQlOYXJhbmdiYSBRTEQgNDUwNAotCQkJCUFVU1RSQUxJQQotCi1DOC05My04MyAgIChoZXgpCQlFbWJlZGRlZCBBdXRvbWF0aW9uLCBJbmMuCi1DODkzODMgICAgIChiYXNlIDE2KQkJRW1iZWRkZWQgQXV0b21hdGlvbiwgSW5jLgotCQkJCTE3MzQ1IEFiYmV5IERyaXZlCi0JCQkJU3VycmV5IEJDIFY0TiA0TTMKLQkJCQlDQU5BREEKLQotQzgtOTQtRDIgICAoaGV4KQkJSmlhbmdzdSBEYXRhbmcgIEVsZWN0cm9uaWMgUHJvZHVjdHMgQ28uLCBMdGQKLUM4OTREMiAgICAgKGJhc2UgMTYpCQlKaWFuZ3N1IERhdGFuZyAgRWxlY3Ryb25pYyBQcm9kdWN0cyBDby4sIEx0ZAotCQkJCU5PLjIwCi0JCQkJUHV6aHUgU291dGggUm9hZAotCQkJCU5hbmppbmcgSmlhbmdzdSAyMTE4MDAKLQkJCQlDSElOQQotCi1DOC05Ny05RiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotQzg5NzlGICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTcwCi0JCQkJRklOTEFORAotCi1DOC05Qy0xRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1DODlDMUQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC05Qy1EQyAgIChoZXgpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTSBDTy4sIExURC4KLUM4OUNEQyAgICAgKGJhc2UgMTYpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTSBDTy4sIExURC4KLQkJCQlOTy4gMjM5LCBTZWMuIDIsIFRpIERpbmcgQmx2ZC4KLQkJCQlUYWlwZWkgIDExNDkzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DOC05Ri00MiAgIChoZXgpCQlWRElJIElubm92YXRpb24gQUIKLUM4OUY0MiAgICAgKGJhc2UgMTYpCQlWRElJIElubm92YXRpb24gQUIKLQkJCQlOZWRyZSBIb2xs77+9bmRhcmVnYXRhbiA1Ci0JCQkJSGVsc2luZ2JvcmcgIDI1MjI1IAotCQkJCVNXRURFTgotCi1DOC1BMS1CNiAgIChoZXgpCQlTaGVuemhlbiBMb25nd2F5IFRlY2hub2xvZ2llcyBDby4sIEx0ZAotQzhBMUI2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIExvbmd3YXkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJU3VpdGUgNzA3LEluY3ViYXRpb24gQnVpbGRpbmcsIENoaW5hIEFjYWRlbXkgb2YgU2NpZW5jZSZUZWNoIERldmVsb3BtZW50LCBTb3V0aCBhcmVhIAotCQkJCUhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUM4LUExLUJBICAgKGhleCkJCU5ldWwgTHRkCi1DOEExQkEgICAgIChiYXNlIDE2KQkJTmV1bCBMdGQKLQkJCQlTdWl0ZSA0MiBJbm5vdmF0aW9uIENlbnRyZQotCQkJCVVuaXQgMjMgU2NpZW5jZSBQYXJrCi0JCQkJQ2FtYnJpZGdlIENhbWJzIENCNCAwRVkKLQkJCQlVTklURUQgS0lOR0RPTQotCi1DOC1BNi0yMCAgIChoZXgpCQlOZWJ1bGEsIEluYwotQzhBNjIwICAgICAoYmFzZSAxNikJCU5lYnVsYSwgSW5jCi0JCQkJNTQ4IE1hcmtldCBTdHJlZXQgIzg1NTEwCi0JCQkJU2FuIEZyYW5jaXNjbyBDQSA5ODE1OAotCQkJCVVOSVRFRCBTVEFURVMKLQotQzgtQTctMEEgICAoaGV4KQkJVmVyaXpvbiBCdXNpbmVzcwotQzhBNzBBICAgICAoYmFzZSAxNikJCVZlcml6b24gQnVzaW5lc3MKLQkJCQlPbmUgRGlnZXggUGxhemEKLQkJCQlCZWx0c3ZpbGxlIE1EIDIwNzA1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC1BNy0yOSAgIChoZXgpCQlTWVN0cm9uaWNzIENvLiwgTHRkLgotQzhBNzI5ICAgICAoYmFzZSAxNikJCVNZU3Ryb25pY3MgQ28uLCBMdGQuCi0JCQkJIzMwMS0xNDA0LCBCdWNodW4gVGVjaG5vLVBhcmsgSUkKLQkJCQkzNjUsIFNhbWplb25nLWRvbmcsIE9qZW9uZy1ndQotCQkJCUJ1Y2h1biBDaXR5IEt5dW5nIGdpLWRvIDQyMS03NDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQzgtQUEtMjEgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLUM4QUEyMSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTYwMCBOb3J0aCBVUyBIaWdod2F5IDQ1Ci0JCQkJTGliZXJ0eXZpbGxlIElMIDYwMDQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC1BQS1DQyAgIChoZXgpCQlQUklWQVRFCi1DOEFBQ0MgICAgIChiYXNlIDE2KQkJIAotCQkJCSAKLUM4LUFFLTlDICAgKGhleCkJCVNoYW5naGFpIFRZRCBFbGVjcm9uaWMgVGVjaG5vbG9neSBDby4gTHRkCi1DOEFFOUMgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgVFlEIEVsZWNyb25pYyBUZWNobm9sb2d5IENvLiBMdGQKLQkJCQkyMUYsIEJMS0IsIE5PLjM5MSBHdWlQaW5nIFJkLCAKLQkJCQlTaGFuZ2hhaSAyMDAyMzMKLQkJCQlDSElOQQotCi1DOC1BRi00MCAgIChoZXgpCQltYXJjbyBTeXN0ZW1hbmFseXNlIHVuZCBFbnR3aWNrbHVuZyBHbWJICi1DOEFGNDAgICAgIChiYXNlIDE2KQkJbWFyY28gU3lzdGVtYW5hbHlzZSB1bmQgRW50d2lja2x1bmcgR21iSAotCQkJCUhhbnMtQvZja2xlci1TdHIuIDIKLQkJCQlEYWNoYXUgQmF2YXJpYSA4NTIyMQotCQkJCUdFUk1BTlkKLQotQzgtQkItRDMgICAoaGV4KQkJRW1icmFuZQotQzhCQkQzICAgICAoYmFzZSAxNikJCUVtYnJhbmUKLQkJCQkyMzUwIE1pc3Npb24gQ29sbGVnZSBCbHZkLiwgU3RlIDcwMwotCQkJCVNhbnRhIENsYXJhIENBIDk1MDU0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC1CQy1DOCAgIChoZXgpCQlBcHBsZSwgSW5jLgotQzhCQ0M4ICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC1DMS0yNiAgIChoZXgpCQlaUE0gSW5kdXN0cmlhIGUgQ29tZXJjaW8gTHRkYQotQzhDMTI2ICAgICAoYmFzZSAxNikJCVpQTSBJbmR1c3RyaWEgZSBDb21lcmNpbyBMdGRhCi0JCQkJUnVhIEFyYWd1YWlhLCAxNzUKLQkJCQlDYW5vYXMgUlMgOTI0MTAtMDAwCi0JCQkJQlJBWklMCi0KLUM4LUMxLTNDICAgKGhleCkJCVJ1Z2dlZFRlayBIYW5nemhvdSBDby4sIEx0ZAotQzhDMTNDICAgICAoYmFzZSAxNikJCVJ1Z2dlZFRlayBIYW5nemhvdSBDby4sIEx0ZAotCQkJCVpoZWppYW5nIFVuaXZlcnNpdHkgTmF0aW9uYWwgU2NpZW5jZSBQYXJrCi0JCQkJNTI1IFhpeGkgUm9hcmQsIEJ1aWxkaW5nIEMgUm9vbSA0MDEKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwMTMKLQkJCQlDSElOQQotCi1DOC1DRC03MiAgIChoZXgpCQlTQUdFTUNPTQotQzhDRDcyICAgICAoYmFzZSAxNikJCVNBR0VNQ09NCi0JCQkJMjUwIHJvdXRlIGRlIGwnRW1wZXJldXIKLQkJCQlSVUVJTCBNQUxNQUlTT04gIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLUM4LUQxLTVFICAgKGhleCkJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLUM4RDE1RSAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQzgtRDEtRDEgICAoaGV4KQkJQUdBaVQgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotQzhEMUQxICAgICAoYmFzZSAxNikJCUFHQWlUIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk1RixOby4yNy04LCBTZWMuIDIsIFpob25nemhlbmcgRS4gUmQuLCBEYW5zaHVpIFRvd25zaGlwIAotCQkJCVRhaXBlaSBDb3VudHkgICAyNTE3MAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQzgtRDItQzEgICAoaGV4KQkJSmV0bHVuIChTaGVuemhlbikgQ29ycG9yYXRpb24KLUM4RDJDMSAgICAgKGJhc2UgMTYpCQlKZXRsdW4gKFNoZW56aGVuKSBDb3Jwb3JhdGlvbgotCQkJCTEwMDhBIFNreXdvcnRoIEJ1aWxkaW5nLCBHYW8teGluIFJkIFNvdXRoCi0JCQkJSGlnaC1UZWNoIFBhcmssIE5hblNoYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiAgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotQzgtRDUtRkUgICAoaGV4KQkJU2hlbnpoZW4gWm93ZWUgVGVjaG5vbG9neSBDby4sIEx0ZAotQzhENUZFICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFpvd2VlIFRlY2hub2xvZ3kgQ28uLCBMdGQKLQkJCQlCbG9jayA1LCBTY2llbmNlIGFuZCBUZWNobm9sb2d5IEluZHVzdHJpYWwgUGFyayBvZgotCQkJCVByaXZhdGVseSBPd25lZCBFbnRlcnByaXNlcywgUGluZ3NoYW4sIFhpbGksIE5hbnNoYW4gRGlzdHJpY3QgLAotCQkJCVNoZW56aGVuIEd1YW5nRG9uZyA1MTgwNTUKLQkJCQlDSElOQQotCi1DOC1ENy0xOSAgIChoZXgpCQlDaXNjbyBDb25zdW1lciBQcm9kdWN0cywgTExDCi1DOEQ3MTkgICAgIChiYXNlIDE2KQkJQ2lzY28gQ29uc3VtZXIgUHJvZHVjdHMsIExMQwotCQkJCTEyMSBUaGVvcnkgRHJpdmUKLQkJCQlJcnZpbmUgQ2FsZm9ybmlhIDkyNjEyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC1ERi03QyAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotQzhERjdDICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi1DOC1FRS0wOCAgIChoZXgpCQlUQU5HVE9QIFRFQ0hOT0xPR1kgQ08uLExURAotQzhFRTA4ICAgICAoYmFzZSAxNikJCVRBTkdUT1AgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJMUYsTk8uMTUzLExpZ29uIFN0LixCZWl0b3UgRGlzdHJpY3QKLQkJCQlUYWlwZWkgQ2l0eSAgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQzgtRUYtMkUgICAoaGV4KQkJQmVpamluZyBHZWZlaSBUZWNoLiBDby4sIEx0ZCAKLUM4RUYyRSAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEdlZmVpIFRlY2guIENvLiwgTHRkIAotCQkJCUEtNjAzIFBvd2VyIENyZWF0aXZlIFBsYXphLCBOTy4xIFNoYW5nZGkgRS4gUmQuLEhhaWRpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotQzgtRjQtMDYgICAoaGV4KQkJQXZheWEsIEluYwotQzhGNDA2ICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkxMzAwIFcuMTIwdGggQXZlCi0JCQkJV2VzdG1pbnN0ZXIgQ08gODAyMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUM4LUY3LTA0ICAgKGhleCkJCUJ1aWxkaW5nIEJsb2NrIFZpZGVvCi1DOEY3MDQgICAgIChiYXNlIDE2KQkJQnVpbGRpbmcgQmxvY2sgVmlkZW8KLQkJCQkxNyBBUGV4IFBhcmsKLQkJCQlIYWlsc2hhbSBFYXN0IFN1c3NleCBCTjI3IDJKVQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUM4LUY3LTMzICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotQzhGNzMzICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotQzgtRjktODEgICAoaGV4KQkJU2VuZWNhIHMuci5sLgotQzhGOTgxICAgICAoYmFzZSAxNikJCVNlbmVjYSBzLnIubC4KLQkJCQlWaWEgR2VybWFuaWEsIDM0Ci0JCQkJUEFET1ZBICAzNTEyNwotCQkJCUlUQUxZCi0KLUM4LUY5LUY5ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUM4RjlGOSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DOC1GRS0zMCAgIChoZXgpCQlCZWppbmcgREFZTyBNb2JpbGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLUM4RkUzMCAgICAgKGJhc2UgMTYpCQlCZWppbmcgREFZTyBNb2JpbGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLQkJCQlSb29tIDcxMiwgVUxPIFBhcmsgQnVpbGRpbmcgTm8uIDYwMUUKLQkJCQlCbG9jayBCLTExLTEgV2FuZ0ppbmcgQXJlYSwgIENoYW9ZYW5nIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMTAyCi0JCQkJQ0hJTkEKLQotQ0MtMDAtODAgICAoaGV4KQkJVFJVU1QgU1lTVEVNIENvLiwKLUNDMDA4MCAgICAgKGJhc2UgMTYpCQlUUlVTVCBTWVNURU0gQ28uLAotCQkJCTMtMTUtMS0xMDAxIHNoaW5zYWt1Ci0JCQkJdGFrYXRzdS1rdQotCQkJCUthd2FzYWtpLXNoaSBLYW5hZ2F3YSAyMTMtMDAxNAotCQkJCUpBUEFOCi0KLUNDLTA1LTFCICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotQ0MwNTFCICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DQy0wOC1FMCAgIChoZXgpCQlBcHBsZSwgSW5jLgotQ0MwOEUwICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy0wOS1DOCAgIChoZXgpCQlJTUFRTElRIExURAotQ0MwOUM4ICAgICAoYmFzZSAxNikJCUlNQVFMSVEgTFRECi0JCQkJT2J2b2RueSBDYW5hbCA5M0EKLQkJCQlTdC5QZXRlcnNidXJnICAxOTExMTkKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotQ0MtMEMtREEgICAoaGV4KQkJTWlsam92YWt0IEFTCi1DQzBDREEgICAgIChiYXNlIDE2KQkJTWlsam92YWt0IEFTCi0JCQkJR2FubmVzdGFkdmVpZW4gMgotCQkJCUJvcnJlIFZlc3Rmb2xkIDMxODQKLQkJCQlOT1JXQVkKLQotQ0MtMTQtQTYgICAoaGV4KQkJWWljaHVuIE15RW5lcmd5IERvbWFpbiwgSW5jCi1DQzE0QTYgICAgIChiYXNlIDE2KQkJWWljaHVuIE15RW5lcmd5IERvbWFpbiwgSW5jCi0JCQkJMzQ5Vy4gWXVhbnNoYW4gUmQsIFlpY2h1bgotCQkJCVlpY2h1biBKaWFuZ3hpIDMzNjAwMAotCQkJCUNISU5BCi0KLUNDLTE4LTdCICAgKGhleCkJCU1hbnphbml0YSBTeXN0ZW1zLCBJbmMuCi1DQzE4N0IgICAgIChiYXNlIDE2KQkJTWFuemFuaXRhIFN5c3RlbXMsIEluYy4KLQkJCQkxNDI2OSBEYW5pZWxzb24gU3RyZWV0Ci0JCQkJUG93YXkgQ0EgOTIwNjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLTFFLUZGICAgKGhleCkJCU1ldHJvbG9naWNhbCBHcm91cCBCVgotQ0MxRUZGICAgICAoYmFzZSAxNikJCU1ldHJvbG9naWNhbCBHcm91cCBCVgotCQkJCU1hcmluaWVyc3dlZyAxNTEKLQkJCQlSb3R0ZXJkYW0gWnVpZC1Ib2xsYW5kIDMwMTFOSwotCQkJCU5FVEhFUkxBTkRTCi0KLUNDLTIyLTE4ICAgKGhleCkJCUlubm9EaWdpdGFsIENvLiwgTHRkLgotQ0MyMjE4ICAgICAoYmFzZSAxNikJCUlubm9EaWdpdGFsIENvLiwgTHRkLgotCQkJCU5vLjMxMCAzRiBLb2ZvbW8gVG93ZXIKLQkJCQkxNi0zIFN1bmUtZG9uZywgQnVuZGFuZy1ndQotCQkJCVN1bmduYW0tY2l0eSBLeXVuZ2dpLWRvIDQ2My04MjUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQ0MtMzQtRDcgICAoaGV4KQkJR0VXSVNTIFMuUC5BLgotQ0MzNEQ3ICAgICAoYmFzZSAxNikJCUdFV0lTUyBTLlAuQS4KLQkJCQlWSUEgQUxFU1NBTkRSTyBWT0xUQSAxCi0JCQkJQ0VOQVRFIFNPVFRPICAyNDA2OQotCQkJCUlUQUxZCi0KLUNDLTQzLUUzICAgKGhleCkJCVRydW1wIHMuYS4KLUNDNDNFMyAgICAgKGJhc2UgMTYpCQlUcnVtcCBzLmEuCi0JCQkJcnVlIGRlIGxhIE1haXRyaXNlIDkKLQkJCQlOaXZlbGxlcyAgMTQwMAotCQkJCUJFTEdJVU0KLQotQ0MtNTAtMUMgICAoaGV4KQkJS1ZIIEluZHVzdHJpZXMsIEluYy4KLUNDNTAxQyAgICAgKGJhc2UgMTYpCQlLVkggSW5kdXN0cmllcywgSW5jLgotCQkJCTUwIEVudGVycHJpc2UgQ2VudGVyCi0JCQkJTWlkZGxldG93biBSSSAwMjg0Mi01Mjc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy01MC03NiAgIChoZXgpCQlPY29tIENvbW11bmljYXRpb25zLCBJbmMuCi1DQzUwNzYgICAgIChiYXNlIDE2KQkJT2NvbSBDb21tdW5pY2F0aW9ucywgSW5jLgotCQkJCTEzRi02LCBOby4gMSwgQmFvIFNoZW5nIFJkLiwgCi0JCQkJWW9uZyBIbyBDaXR5ICAyMzQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUNDLTUyLUFGICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotQ0M1MkFGICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTEFORSAzNTEsIFRBSVBJTkcgUkQuCi0JCQkJU0VDLjEsIFRTQU8gVFVFTgotCQkJCU5BTi1UT1UgNTQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DQy01NC01OSAgIChoZXgpCQlPblRpbWUgTmV0d29ya3MgQVMKLUNDNTQ1OSAgICAgKGJhc2UgMTYpCQlPblRpbWUgTmV0d29ya3MgQVMKLQkJCQlHbGFkc3ZlaSAyMAotCQkJCU9zbG8gIDA0ODkKLQkJCQlOT1JXQVkKLQotQ0MtNTUtQUQgICAoaGV4KQkJUklNCi1DQzU1QUQgICAgIChiYXNlIDE2KQkJUklNCi0JCQkJMjk1IFBoaWxsaXAgU3RyZWV0Ci0JCQkJV2F0ZXJsb28gT250YXJpbyBOMkwgM1c5Ci0JCQkJQ0FOQURBCi0KLUNDLTVDLTc1ICAgKGhleCkJCVdlaWdodGVjaCBDb20uIEltcC4gRXhwLiBFcXVpcC4gUGVzYWdlbSBMdGRhCi1DQzVDNzUgICAgIChiYXNlIDE2KQkJV2VpZ2h0ZWNoIENvbS4gSW1wLiBFeHAuIEVxdWlwLiBQZXNhZ2VtIEx0ZGEKLQkJCQlSb2RvdmlhIFZpcmftbGlvIFbhcnplYSwgMzExMCAtIFNhbGEgMDEKLQkJCQlDb3N0YSBOb3J0ZSBDZW50ZXIgLSBCYWlycm8gU2FjbyBHcmFuZGUKLQkJCQlGbG9yaWFu83BvbGlzIFNDIDg4MDMyLTAwMQotCQkJCUJSQVpJTAotCi1DQy01RC00RSAgIChoZXgpCQlaeVhFTCBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbgotQ0M1RDRFICAgICAoYmFzZSAxNikJCVp5WEVMIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJTm8uNiBJbm5vdmF0aW9uIFJvYWQgSUksIFNjaWVuY2UgUGFyaywgCi0JCQkJSHNpbiBDaHUgIDMwMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotQ0MtNjAtQkIgICAoaGV4KQkJRW1wb3dlciBSRiBTeXN0ZW1zCi1DQzYwQkIgICAgIChiYXNlIDE2KQkJRW1wb3dlciBSRiBTeXN0ZW1zCi0JCQkJMzE2IFcuIEZsb3JlbmNlIEF2ZQotCQkJCUluZ2xld29vZCBDQSA5MDMwMQotCQkJCVVOSVRFRCBTVEFURVMKLQotQ0MtNjktQjAgICAoaGV4KQkJR2xvYmFsIFRyYWZmaWMgVGVjaG5vbG9naWVzLCBMTEMKLUNDNjlCMCAgICAgKGJhc2UgMTYpCQlHbG9iYWwgVHJhZmZpYyBUZWNobm9sb2dpZXMsIExMQwotCQkJCTc4MDAgVGhpcmQgU3RyZWV0IE5vcnRoCi0JCQkJU3VpdGUgMTAwCi0JCQkJU3QuIFBhdWwgTWlubmVzb3RhIDU1MTI4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy02Qi05OCAgIChoZXgpCQlNaW5ldGVjIFdpcmVsZXNzIFRlY2hub2xvZ2llcwotQ0M2Qjk4ICAgICAoYmFzZSAxNikJCU1pbmV0ZWMgV2lyZWxlc3MgVGVjaG5vbG9naWVzCi0JCQkJMTAgS2VtYmxhIFdheQotCQkJCVdpbGxldHRvbiBXQSA2MTU1Ci0JCQkJQVVTVFJBTElBCi0KLUNDLTZCLUYxICAgKGhleCkJCVNvdW5kIE1hc2tpbmcgSW5jLgotQ0M2QkYxICAgICAoYmFzZSAxNikJCVNvdW5kIE1hc2tpbmcgSW5jLgotCQkJCTQ3IC0gMjMgLSBHbGFtaXMgRHJpdmUgU3cKLQkJCQlDYWxnYXJ5IEFsYmVydGEgVDNFIDZTMwotCQkJCUNBTkFEQQotCi1DQy02RC1BMCAgIChoZXgpCQlSb2t1LCBJbmMuCi1DQzZEQTAgICAgIChiYXNlIDE2KQkJUm9rdSwgSW5jLgotCQkJCTEyOTgwIFNhcmF0b2dhIEF2ZS4KLQkJCQlTdWl0ZSBECi0JCQkJU2FyYXRvZ2EgQ0EgOTUwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLTZELUVGICAgKGhleCkJCVRKSyBUaWV0b2xhaXRlIE95Ci1DQzZERUYgICAgIChiYXNlIDE2KQkJVEpLIFRpZXRvbGFpdGUgT3kKLQkJCQlQTCA0NDMKLQkJCQlWYWFzYSAgNjUxMDEKLQkJCQlGSU5MQU5ECi0KLUNDLTc2LTY5ICAgKGhleCkJCVNFRVRFQ0gKLUNDNzY2OSAgICAgKGJhc2UgMTYpCQlTRUVURUNICi0JCQkJMTktMTUsIFNlb2t1LWRvbmcKLQkJCQlId2FzdW5nLXNpIEd5ZW9uZ2dpLWRvIDQ0NS0xNzAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotQ0MtN0EtMzAgICAoaGV4KQkJQ01BWCBXaXJlbGVzcyBDby4sIEx0ZC4KLUNDN0EzMCAgICAgKGJhc2UgMTYpCQlDTUFYIFdpcmVsZXNzIENvLiwgTHRkLgotCQkJCUtUIEJvbmdkdWsgQi9EIDlGLCA2MjctMTUsIEJvbmdkdWstZG9uZwotCQkJCU5hbWd1IERhZWd1IDcwNTcxMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DQy03RC0zNyAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotQ0M3RDM3ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotQ0MtN0UtRTcgICAoaGV4KQkJUGFuYXNvbmljIEFWQyBOZXR3b3JrcyBDb21wYW55Ci1DQzdFRTcgICAgIChiYXNlIDE2KQkJUGFuYXNvbmljIEFWQyBOZXR3b3JrcyBDb21wYW55Ci0JCQkJMS0xNSBNYXRzdW8tY2hvCi0JCQkJS2Fkb21hIENpdHkgT3Nha2EgNTcxLTg1MDQKLQkJCQlKQVBBTgotCi1DQy04Qy1FMyAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotQ0M4Q0UzICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy05MC05MyAgIChoZXgpCQlIYW5zb25nIFRlaG5vbG9naWVzCi1DQzkwOTMgICAgIChiYXNlIDE2KQkJSGFuc29uZyBUZWhub2xvZ2llcwotCQkJCTggS2FuZ3Bpbmcgcm9hZCwgTmV3IGRldmVsb3BtZW50IHpvbmUKLQkJCQlKaWFuZ25pbmcKLQkJCQlOYW5qaW5nIEppYW5nc3UgMjEwMDA2Ci0JCQkJQ0hJTkEKLQotQ0MtOTEtMkIgICAoaGV4KQkJVEUgQ29ubmVjdGl2aXR5IFRvdWNoIFNvbHV0aW9ucwotQ0M5MTJCICAgICAoYmFzZSAxNikJCVRFIENvbm5lY3Rpdml0eSBUb3VjaCBTb2x1dGlvbnMKLQkJCQkyMjQ1IEJyaWdodG9uIEhlbnJpZXR0YSBUb3duIExpbmUgUm9hZAotCQkJCVJvY2hlc3RlciBOZXcgWW9yayAxNDYyMwotCQkJCVVOSVRFRCBTVEFURVMKLQotQ0MtOTQtNEEgICAoaGV4KQkJUGZlaWZmZXIgVmFjdXVtIEdtYkgKLUNDOTQ0QSAgICAgKGJhc2UgMTYpCQlQZmVpZmZlciBWYWN1dW0gR21iSAotCQkJCUJlcmxpbmVyIFN0ci4gNDMKLQkJCQlBc3NsYXIgSGVzc2VuIDM1NjE0Ci0JCQkJR0VSTUFOWQotCi1DQy05Ni1BMCAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi1DQzk2QTAgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODEyOQotCQkJCUNISU5BCi0KLUNDLTlFLTAwICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotQ0M5RTAwICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLUNDLUEzLTc0ICAgKGhleCkJCUd1YW5nZG9uZyBHdWFuZ2xpYW4gRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLkx0ZAotQ0NBMzc0ICAgICAoYmFzZSAxNikJCUd1YW5nZG9uZyBHdWFuZ2xpYW4gRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLkx0ZAotCQkJCUIzMzgsQmxvY2sxMyxOby4yMzIgV2FpaHVhbmRvbmdsdSBSb2FkLEhpZ2ggRWR1Y2F0aW9uIE1lZ2EgQ2VudGVyCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTAwMDYKLQkJCQlDSElOQQotCi1DQy1BRi03OCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi1DQ0FGNzggICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgIDIwMTYxMwotCQkJCUNISU5BCi0KLUNDLUIyLTU1ICAgKGhleCkJCUQtTGluayBJbnRlcm5hdGlvbmFsCi1DQ0IyNTUgICAgIChiYXNlIDE2KQkJRC1MaW5rIEludGVybmF0aW9uYWwKLQkJCQkxIEludGVybmF0aW9uYWwgQnVzaW5lc3MgUGFyaywgIzAzLTEyLCBUaGUgU3luZXJneSAKLQkJCQk2MDk5MTcKLQkJCQlTSU5HQVBPUkUKLQotQ0MtQjUtNUEgICAoaGV4KQkJRnJhdW5ob2ZlciBJVFdNCi1DQ0I1NUEgICAgIChiYXNlIDE2KQkJRnJhdW5ob2ZlciBJVFdNCi0JCQkJRnJhdW5ob2ZlcnBsYXR6IDEKLQkJCQlLYWlzZXJzbGF1dGVybiBSaGluZWxhbmQtUGFsYXRpbmFlIDY3NjYzCi0JCQkJR0VSTUFOWQotCi1DQy1COC04OCAgIChoZXgpCQlBbkIgU2VjdXJpdGUgcy5hLgotQ0NCODg4ICAgICAoYmFzZSAxNikJCUFuQiBTZWN1cml0ZSBzLmEuCi0JCQkJUnVlIGRlIEpvaWUsMzgtNDAKLQkJCQlMaWVnZSAgNDAwMAotCQkJCUJFTEdJVU0KLQotQ0MtQjgtRjEgICAoaGV4KQkJRUFHTEUgS0lOR0RPTSBURUNITk9MT0dJRVMgTElNSVRFRAotQ0NCOEYxICAgICAoYmFzZSAxNikJCUVBR0xFIEtJTkdET00gVEVDSE5PTE9HSUVTIExJTUlURUQKLQkJCQlGTEFULyBSTSBCIDI2L0YgVFdPIENISU5BQ0hFTSBQTEFaQSA2OCBDT05OQVVHSFQgUk9BRCBDRU5UUkFMIEhLCi0JCQkJSE9ORyBLT05HCi0KLUNDLUJFLTcxICAgKGhleCkJCU9wdGlMb2dpeCBCVgotQ0NCRTcxICAgICAoYmFzZSAxNikJCU9wdGlMb2dpeCBCVgotCQkJCUpvb3AgR2Vlc2lua3dlZyA5OTkKLQkJCQlBbXN0ZXJkYW0gTkggMTA5NkFaCi0JCQkJTkVUSEVSTEFORFMKLQotQ0MtQzEtMDQgICAoaGV4KQkJQXBwbGllZCBUZWNobmljYWwgU3lzdGVtcwotQ0NDMTA0ICAgICAoYmFzZSAxNikJCUFwcGxpZWQgVGVjaG5pY2FsIFN5c3RlbXMKLQkJCQlQLk8uIEJveCA1NzA1Ci0JCQkJU2hyZXZlcG9ydCBMQSA3MTEzNQotCQkJCVVOSVRFRCBTVEFURVMKLQotQ0MtQzUtMEEgICAoaGV4KQkJU0hFTlpIRU4gREFKSUFIQU8gVEVDSE5PTE9HWSBDTy4sTFRECi1DQ0M1MEEgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gREFKSUFIQU8gVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJM0YgQnVsaWRpbmcgMSwgMnRoIFBhcmsgVGFvSHVhWXVhbiBUZWNoLSBJbm5vdmF0aW9uLAotCQkJCVhpeGlhbmcgQmFvYW4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTAyCi0JCQkJQ0hJTkEKLQotQ0MtQzYtMkIgICAoaGV4KQkJVHJpLVN5c3RlbXMgQ29ycG9yYXRpb24KLUNDQzYyQiAgICAgKGJhc2UgMTYpCQlUcmktU3lzdGVtcyBDb3Jwb3JhdGlvbgotCQkJCTMtMjctOCBUUlMgQnVpbGRpbmcgM0YKLQkJCQlLb3lhc3VtYWNoaQotCQkJCUhhY2hpb2ppIFRva3lvIDE5Mi0wOTA0Ci0JCQkJSkFQQU4KLQotQ0MtQzgtRDcgICAoaGV4KQkJQ0lBUyBFbGV0dHJvbmljYSBzcmwKLUNDQzhENyAgICAgKGJhc2UgMTYpCQlDSUFTIEVsZXR0cm9uaWNhIHNybAotCQkJCVZpYSBHaW92YW5uaSBEdXJhbmRvIDM4Ci0JCQkJTWlsYW4gIDIwMTU4Ci0JCQkJSVRBTFkKLQotQ0MtQ0MtNEUgICAoaGV4KQkJU3VuIEZvdW50YWluaGVhZCBVU0EuIENvcnAgCi1DQ0NDNEUgICAgIChiYXNlIDE2KQkJU3VuIEZvdW50YWluaGVhZCBVU0EuIENvcnAgCi0JCQkJODAxIFMuIEdhcmZpbGVkIEFWRSAjIDIzNiAKLQkJCQlMb3MgQW5nZWxlcyAgQ2FsaWZvcm5pYSAgOTE4MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLUNDLTgxICAgKGhleCkJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotQ0NDQzgxICAgICAoYmFzZSAxNikJCUhVQVdFSSBURUNITk9MT0dJRVMgQ08uLExURAotCQkJCUQxLEh1YXdlaSBJbmR1c3RyaWFsIEJhc2UsQmFudGlhbixMb25nZ2FuZyxTaGVuemhlbgotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgxMjkKLQkJCQlDSElOQQotCi1DQy1DRC02NCAgIChoZXgpCQlTTS1FbGVjdHJvbmljIEdtYkgKLUNDQ0Q2NCAgICAgKGJhc2UgMTYpCQlTTS1FbGVjdHJvbmljIEdtYkgKLQkJCQlXYWxkd2VnIDIKLQkJCQlTdGFwZWxmZWxkIC8gQnJhYWsgIDIyMTQ1Ci0JCQkJR0VSTUFOWQotCi1DQy1DRS00MCAgIChoZXgpCQlKYW50ZXEgQ29ycAotQ0NDRTQwICAgICAoYmFzZSAxNikJCUphbnRlcSBDb3JwCi0JCQkJOTI3MiBKZXJvbmltbyBSb2FkCi0JCQkJU3VpdGUgMTI0Ci0JCQkJSXJ2aW5lIENBIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy1EOC0xMSAgIChoZXgpCQlBaWNvbm4gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotQ0NEODExICAgICAoYmFzZSAxNikJCUFpY29ubiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNUYsIE5PLiA5LCBBbGxleSAyLCBMYW5lIDM1LCBKaS1IdSBSZC4sIE5laS1IdSwgCi0JCQkJVGFpcGVpIENpdHkgIDExNDk0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DQy1EOS1FOSAgIChoZXgpCQlTQ1IgRW5naW5lZXJzIEx0ZC4KLUNDRDlFOSAgICAgKGJhc2UgMTYpCQlTQ1IgRW5naW5lZXJzIEx0ZC4KLQkJCQk2IEhhb21hbnV0IFN0LgotCQkJCU5ldGFueWEgIDQyNTA0Ci0JCQkJSVNSQUVMCi0KLUNDLUU3LURGICAgKGhleCkJCUFtZXJpY2FuIE1hZ25ldGljcywgSW5jLgotQ0NFN0RGICAgICAoYmFzZSAxNikJCUFtZXJpY2FuIE1hZ25ldGljcywgSW5jLgotCQkJCVBPIEJveCAyNTA5Ci0JCQkJT2FrIFJpZGdlIFROIDM3ODMxLTI1MDkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLUVBLTFDICAgKGhleCkJCURDT05XT1JLUyAgQ28uLCBMdGQKLUNDRUExQyAgICAgKGJhc2UgMTYpCQlEQ09OV09SS1MgIENvLiwgTHRkCi0JCQkJMTgyLTEzIERhZXJ1bmcgUG9zdCBUb3dlciAybmQgNUYKLQkJCQlHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTg0NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DQy1FRS1EOSAgIChoZXgpCQlEZXRvIE1lY2hhdHJvbmljIEdtYkgKLUNDRUVEOSAgICAgKGJhc2UgMTYpCQlEZXRvIE1lY2hhdHJvbmljIEdtYkgKLQkJCQlHZXdlcmJlcGFyayBT77+9ZCAxMQotCQkJCUt1ZnN0ZWluIFRpcm9sIDYzMzAKLQkJCQlBVVNUUklBCi0KLUNDLUVGLTQ4ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUNDRUY0OCAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1DQy1GMy1BNSAgIChoZXgpCQlDaGkgTWVpIENvbW11bmljYXRpb24gU3lzdGVtcywgSW5jCi1DQ0YzQTUgICAgIChiYXNlIDE2KQkJQ2hpIE1laSBDb21tdW5pY2F0aW9uIFN5c3RlbXMsIEluYwotCQkJCU5vLjQKLQkJCQlNaW5nc2hlbmcgU3RyZWV0Ci0JCQkJVHVjaGVuZyBDaXR5IFRhaXBlaSBDb3VudHkgIDIzNjc4Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1DQy1GNi03QSAgIChoZXgpCQlBeWVja2EgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zIExURAotQ0NGNjdBICAgICAoYmFzZSAxNikJCUF5ZWNrYSBDb21tdW5pY2F0aW9uIFN5c3RlbXMgTFRECi0JCQkJUE9CIDMwNTkKLQkJCQlIb2QgSGFzaGFyb24gIDQ1MTMwCi0JCQkJSVNSQUVMCi0KLUNDLUY4LTQxICAgKGhleCkJCUx1bWV3YXZlCi1DQ0Y4NDEgICAgIChiYXNlIDE2KQkJTHVtZXdhdmUKLQkJCQk0ODAzIEIgU3RyZWV0Ci0JCQkJU2FjcmFtZW50byBDQSA5NTgxOQotCQkJCVVOSVRFRCBTVEFURVMKLQotQ0MtRjgtRjAgICAoaGV4KQkJWGknYW4gSElTVSBNdWx0aW1lZGlhIFRlY2hub2xvZ3kgQ28uLEx0ZC4KLUNDRjhGMCAgICAgKGJhc2UgMTYpCQlYaSdhbiBISVNVIE11bHRpbWVkaWEgVGVjaG5vbG9neSBDby4sTHRkLgotCQkJCTMgRmxvb3IgLCBOTy4xIEJ1aWxkaW5nICwgTW9kZXJuIEJ1c2luZXNzIEVudGVycHJpc2UgQ2VudHJlIChFYXN0KSAsIE5PLjY5LCBKaW55ZSByb2FkICwgWGmhr2FuIAotCQkJCUhpZ2gtdGVjaCBpbmR1c3RyeSBEZXZlbG9wbWVudCBab25lCi0JCQkJWGknYW4gQ2l0eSBTaGFueGkgUHJvdmluY2UgNzEwMDc1Ci0JCQkJQ0hJTkEKLQotQ0MtRjktNTQgICAoaGV4KQkJQXZheWEsIEluYwotQ0NGOTU0ICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkIAotCQkJCUJhc2tpbmcgUmlkZ2UgTkogMDc5MjAtMjMxMSAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLUY5LUU4ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotQ0NGOUU4ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1DQy1GQy02RCAgIChoZXgpCQlSSVogVFJBTlNNSVRURVJTCi1DQ0ZDNkQgICAgIChiYXNlIDE2KQkJUklaIFRSQU5TTUlUVEVSUwotCQkJCUJPWklEQVJFVklDRVZBIDEzCi0JCQkJUC5PLkJPWCA2NTQKLQkJCQlaQUdSRUIgIDEwMDAwCi0JCQkJQ1JPQVRJQQotCi1DQy1GQy1CMSAgIChoZXgpCQlXaXJlbGVzcyBUZWNobm9sb2d5LCBJbmMuCi1DQ0ZDQjEgICAgIChiYXNlIDE2KQkJV2lyZWxlc3MgVGVjaG5vbG9neSwgSW5jLgotCQkJCTIwNjQgRWFzdG1hbiBBdmUuICMxMTMKLQkJCQlWZW50dXJhIENBIDkzMDAzLTc3ODcKLQkJCQlVTklURUQgU1RBVEVTCi0KLUNDLUZFLTNDICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLUNDRkUzQyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUQwLTA3LTkwICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1EMDA3OTAgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTEzLTFFICAgKGhleCkJCVN1bnJleCBUZWNobm9sb2d5IENvcnAKLUQwMTMxRSAgICAgKGJhc2UgMTYpCQlTdW5yZXggVGVjaG5vbG9neSBDb3JwCi0JCQkJTm8uIDE4OC0xLENodW5nIENoZW5nIFJvYWQuLFRhIFlhIFNoaWFuZwotCQkJCVRhaWNodW5nICA0MjgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUQwLTE1LTRBICAgKGhleCkJCXp0ZSBjb3Jwb3JhdGlvbgotRDAxNTRBICAgICAoYmFzZSAxNikJCXp0ZSBjb3Jwb3JhdGlvbgotCQkJCTEyL0YuLHp0ZSBSJkQgYnVpbGRpbmcsa2VqaW5hbiBSb2FkLAotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1EMC0xNy02QSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQgIAotRDAxNzZBICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZCAgCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUQwLTFBLUE3ICAgKGhleCkJCVVuaVByaW50Ci1EMDFBQTcgICAgIChiYXNlIDE2KQkJVW5pUHJpbnQKLQkJCQlVbml0IDMwOSwgMSBFdmEgUm9hZAotCQkJCVRvcm9udG8gT250YXJpbyBNOUMgNFo1Ci0JCQkJQ0FOQURBCi0KLUQwLTFDLUJCICAgKGhleCkJCUJlaWppbmcgQ3RpbWVzIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sIEx0ZC4KLUQwMUNCQiAgICAgKGJhc2UgMTYpCQlCZWlqaW5nIEN0aW1lcyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJN3RoIEZsb29yLCBKaW56aG91IEJ1aWxkaW5nLCBTdXpob3UgU3RyZWV0LCBOby43OSwgSGFpZGlhbiBEaXN0cmljdCwgCi0JCQkJQmVpamluZyAgMTAwMDg5Ci0JCQkJQ0hJTkEKLQotRDAtMjMtREIgICAoaGV4KQkJQXBwbGUsIEluYy4KLUQwMjNEQiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyAgQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTI3LTg4ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC5Dby5MdGQKLUQwMjc4OCAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuQ28uTHRkCi0JCQkJNjYsQ2h1bmcgU2hhbiBSZC5UdS1DaGVuZwotCQkJCVRhaXBlaSBIc2llbiAgMjM2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1EMC0zMS0xMCAgIChoZXgpCQlJbmdlbmljIFNlbWljb25kdWN0b3IgQ28uLEx0ZAotRDAzMTEwICAgICAoYmFzZSAxNikJCUluZ2VuaWMgU2VtaWNvbmR1Y3RvciBDby4sTHRkCi0JCQkJUm9vbSAxMDgsQnVpbGRpbmcgQSxJbmZvcm1hdGlvbiBDZW50ZXIgWmhvbmdndWFuY3VuIFNvZnR3YXJlIFBhcmsgOCBEb25nYmVpd2FuZyBXZXN0IFJvYWQsSGFpZGFpbiBEaXN0cmljdAotCQkJCUJlaWppbmcgIDEwMDE5MwotCQkJCUNISU5BCi0KLUQwLTM3LTYxICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1EMDM3NjEgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTU0LTJEICAgKGhleCkJCUNhbWJyaWRnZSBJbmR1c3RyaWVzKEdyb3VwKSBDby4sTHRkLgotRDA1NDJEICAgICAoYmFzZSAxNikJCUNhbWJyaWRnZSBJbmR1c3RyaWVzKEdyb3VwKSBDby4sTHRkLgotCQkJCTIyIEZsb29yLFFpbGFpIFRvd2VyOzg4OSBZaXNoYW4gUm9hZAotCQkJCVNoYW5naGFpICAyMDAyMzMKLQkJCQlDSElOQQotCi1EMC01Ny00QyAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1EMDU3NEMgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EMC01Ny04NSAgIChoZXgpCQlQYW50ZWNoIENvLiwgTHRkLgotRDA1Nzg1ICAgICAoYmFzZSAxNikJCVBhbnRlY2ggQ28uLCBMdGQuCi0JCQkJMTEwLTEgT25namVvbmctUmksIFRvbmdqaW4tRXVwCi0JCQkJR2ltcG8tU2kgR3lvdW5nZ2ktRG8gNDE1LTg2NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1EMC01OC03NSAgIChoZXgpCQlBY3RpdmUgQ29udHJvbCBUZWNobm9sb2d5IEluYy4KLUQwNTg3NSAgICAgKGJhc2UgMTYpCQlBY3RpdmUgQ29udHJvbCBUZWNobm9sb2d5IEluYy4KLQkJCQkxODAwIEFwcGxlYnkgTGluZQotCQkJCVVuaXQgNAotCQkJCUJ1cmxpbmd0b24gT250YXJpbyBMN0wgNkExCi0JCQkJQ0FOQURBCi0KLUQwLTU5LUMzICAgKGhleCkJCUNlcmFNaWNybyBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi1EMDU5QzMgICAgIChiYXNlIDE2KQkJQ2VyYU1pY3JvIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KLQkJCQk0RiwgTm8uIDE2LTEsIFNlYy4gNiwgTWluZ2N5dWFuIEVhc3QgUm9hZAotCQkJCU5laWh1IERpc3RyaWN0Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUQwLTVBLTBGICAgKGhleCkJCUktQlQgRElHSVRBTCBDTy4sTFRECi1EMDVBMEYgICAgIChiYXNlIDE2KQkJSS1CVCBESUdJVEFMIENPLixMVEQKLQkJCQkxN0YuLTgsIE5vLjg2NiwgWmhvbmd6aGVuZyBSZC4sIFpob25naGUgRGlzdAotCQkJCU5ldyBUYWlwZWkgICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUQwLTVGLUNFICAgKGhleCkJCUhpdGFjaGkgRGF0YSBTeXN0ZW1zCi1EMDVGQ0UgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBEYXRhIFN5c3RlbXMKLQkJCQk3NTAgQ2VudHJhbCBFeHByZXNzd2F5Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTY2LTdCICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLUQwNjY3QiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIFllb25ndG9uZy1ndQotCQkJCVN1d29uLXNpIEd5ZW9uZ2dpLWRvIDQ0Mzc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1EMC02Ny1FNSAgIChoZXgpCQlEZWxsIEluYwotRDA2N0U1ICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUzpSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EMC02OS05RSAgIChoZXgpCQlMVU1JTkVYIExpZ2h0aW5nIENvbnRyb2wgRXF1aXBtZW50Ci1EMDY5OUUgICAgIChiYXNlIDE2KQkJTFVNSU5FWCBMaWdodGluZyBDb250cm9sIEVxdWlwbWVudAotCQkJCUJlcmtlbmxhYW4gOEEKLQkJCQlIZWNodGVsLUVrc2VsIExpbWJ1cmcgMzk0MAotCQkJCUJFTEdJVU0KLQotRDAtNzUtQkUgICAoaGV4KQkJUmVubyBBJmFtcDtFCi1EMDc1QkUgICAgIChiYXNlIDE2KQkJUmVubyBBJmFtcDtFCi0JCQkJNDY1NSBBaXJjZW50ZXIgQ2lyY2xlCi0JCQkJUmVubyBOZXZhZGEgODk1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLTdELUU1ICAgKGhleCkJCUZvcndhcmQgUGF5IFN5c3RlbXMsIEluYy4KLUQwN0RFNSAgICAgKGJhc2UgMTYpCQlGb3J3YXJkIFBheSBTeXN0ZW1zLCBJbmMuCi0JCQkJOTUzMSBXZXN0IDc4dGggU3QuLCAjMjQ1Ci0JCQkJRWRlbiBQcmFpcmllIE1OIDU1MzQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EMC04OS05OSAgIChoZXgpCQlBUENPTiwgSW5jLgotRDA4OTk5ICAgICAoYmFzZSAxNikJCUFQQ09OLCBJbmMuCi0JCQkJOTI1NSBTVyBQaW9uZWVyIENvdXJ0Ci0JCQkJV2lsc29udmlsbGUgT1IgOTcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLThDLUI1ICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1EMDhDQjUgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlEYWxsYXMgVFggNzUyNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQwLThDLUZGICAgKGhleCkJCVVQV0lTIEFCCi1EMDhDRkYgICAgIChiYXNlIDE2KQkJVVBXSVMgQUIKLQkJCQlCb3ggMzAwMAotCQkJCVVwcHNhbGEgVXBwc2FsYSA3NTAwMwotCQkJCVNXRURFTgotCi1EMC05My1GOCAgIChoZXgpCQlTdG9uZXN0cmVldCBPbmUgTExDCi1EMDkzRjggICAgIChiYXNlIDE2KQkJU3RvbmVzdHJlZXQgT25lIExMQwotCQkJCTk5NjAgQ29ycG9yYXRlIENhbXB1cyBEcml2ZQotCQkJCVN1aXRlIDMzMDAKLQkJCQlMb3Vpc3ZpbGxlIEtZIDQwMjIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EMC05Qi0wNSAgIChoZXgpCQlFbXRyb25peAotRDA5QjA1ICAgICAoYmFzZSAxNikJCUVtdHJvbml4Ci0JCQkJNSMgR2FvcGVuZyBEYWRhbwotCQkJCVJvb20gNDA0IywgQnVpbGRpbmcgQgotCQkJCUNoZW5nZHUgIDYxMDA0MQotCQkJCUNISU5BCi0KLUQwLUEzLTExICAgKGhleCkJCU5ldWJlcmdlciBHZWLvv711ZGVhdXRvbWF0aW9uIEdtYkgKLUQwQTMxMSAgICAgKGJhc2UgMTYpCQlOZXViZXJnZXIgR2Vi77+9dWRlYXV0b21hdGlvbiBHbWJICi0JCQkJT2JlcmVyIEthaXNlcndlZyA2Ci0JCQkJUm90aGVuYnVyZyBvLmQuVC4gQmF5ZXJuIDkxNTQxCi0JCQkJR0VSTUFOWQotCi1EMC1BRS1FQyAgIChoZXgpCQlBbHBoYSBOZXR3b3JrcyBJbmMuCi1EMEFFRUMgICAgIChiYXNlIDE2KQkJQWxwaGEgTmV0d29ya3MgSW5jLgotCQkJCU5vLjggTGktc2hpbmcgU2V2ZW50aCBSb2FkLFNjaWVuY2UtYmFzZWQgSW5kdXN0cmlhbCBQYXJrCi0JCQkJSHNpbmNodSBUYWl3YW4gMzAwCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1EMC1BRi1CNiAgIChoZXgpCQlMaW5rdG9wIFRlY2hub2xvZ3kgQ28uLCBMVEQKLUQwQUZCNiAgICAgKGJhc2UgMTYpCQlMaW5rdG9wIFRlY2hub2xvZ3kgQ28uLCBMVEQKLQkJCQkyRiBHdWFuZ3llIEJ1bGlkaW5nLCBUb3JjaCBIaS1UZWNoLCAKLQkJCQlYaWFtZW4gRnVqaWFuIDM2MTAwNgotCQkJCUNISU5BCi0KLUQwLUIzLTNGICAgKGhleCkJCVNIRU5aSEVOIFRJTk5PIE1PQklMRSBURUNITk9MT0dZIENPLixMVEQuCi1EMEIzM0YgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gVElOTk8gTU9CSUxFIFRFQ0hOT0xPR1kgQ08uLExURC4KLQkJCQk0L0YuLEgtMyBCdWlsZGluZyxPQ1QgRWFzdGVybiBsbmR1c3RyaWFsIFBhcmsuIE5PLjEgWGlhbmdTaGFuIEVhc3QgUm9hZC4sCi0JCQkJTmFuIFNoYW4gRGlzdHJpY3QsCi0JCQkJR1VBTkdET05HIFNIRU5aSEVOIDUxODA1MwotCQkJCUNISU5BCi0KLUQwLUI1LTNEICAgKGhleCkJCVNFUFJPIFJPQk9USVFVRQotRDBCNTNEICAgICAoYmFzZSAxNikJCVNFUFJPIFJPQk9USVFVRQotCQkJCVpJIEFjdGktRXN0IExlcyBBam9uY3MKLQkJCQlCUDg0Ci0JCQkJTEEgUk9DSEUgU1VSIFlPTiAgRjg1MDAwCi0JCQkJRlJBTkNFCi0KLUQwLUJCLTgwICAgKGhleCkJCVNITCBUZWxlbWVkaWNpbmUgSW50ZXJuYXRpb25hbCBMdGQuCi1EMEJCODAgICAgIChiYXNlIDE2KQkJU0hMIFRlbGVtZWRpY2luZSBJbnRlcm5hdGlvbmFsIEx0ZC4KLQkJCQk5MCBZaWdhbCBBbG9uCi0JCQkJVGVsIEF2aXYgIDY3ODkxCi0JCQkJSVNSQUVMCi0KLUQwLUMxLUIxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotRDBDMUIxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1EMC1DMi04MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1EMEMyODIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtQ0YtNUUgICAoaGV4KQkJRW5lcmd5IE1pY3JvIEFTCi1EMENGNUUgICAgIChiYXNlIDE2KQkJRW5lcmd5IE1pY3JvIEFTCi0JCQkJU2FuZGFrZXJ2ZWllbiAxMTgKLQkJCQlPc2xvICBOLTA0ODQKLQkJCQlOT1JXQVkKLQotRDAtRDAtRkQgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRDBEMEZEICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtRDItMTIgICAoaGV4KQkJSzJORVQgQ28uLEx0ZC4KLUQwRDIxMiAgICAgKGJhc2UgMTYpCQlLMk5FVCBDby4sTHRkLgotCQkJCUsyTmV0IEJ1aWxkaW5nCi0JCQkJNTAzLTI1IFNoaW53b2wtZG9uZyBZYW5nY2hlb24tZ3UgCi0JCQkJU2VvdWwgMTU4LTA5MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1EMC1EMi04NiAgIChoZXgpCQlCZWNrbWFuIENvdWx0ZXIgQmlvbWVkaWNhbCBLLksuCi1EMEQyODYgICAgIChiYXNlIDE2KQkJQmVja21hbiBDb3VsdGVyIEJpb21lZGljYWwgSy5LLgotCQkJCTQ1NC0zMiBIaWdhc2hpbm8sCi0JCQkJTmFnYWl6dW1pLWNobywgU3VudG8tZ3VuLCBTaGl6dW9rYS1rZW4gNDExLTA5NDMKLQkJCQlKQVBBTgotCi1EMC1EMy1GQyAgIChoZXgpCQlNaW9zLCBMdGQuCi1EMEQzRkMgICAgIChiYXNlIDE2KQkJTWlvcywgTHRkLgotCQkJCTEzMDEgQmFuayBvZiBBbWVyaWNhIFRvd2VyCi0JCQkJMTIgSGFyY291dCBSb2FkCi0JCQkJQ2VudHJhbCAgLgotCQkJCUhPTkcgS09ORwotCi1EMC1EQi0zMiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRDBEQjMyICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi1EMC1ERi05QSAgIChoZXgpCQlMaXRlb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgotRDBERjlBICAgICAoYmFzZSAxNikJCUxpdGVvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uCi0JCQkJNEYsOTAsQ2hpZW4gMSBSb2FkLCBDaHVuZ0hvLiAKLQkJCQlUYWlwZWkgIDIzNTg1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1EMC1ERi1DNyAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLUQwREZDNyAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDAtRTMtNDcgICAoaGV4KQkJWW9nYQotRDBFMzQ3ICAgICAoYmFzZSAxNikJCVlvZ2EKLQkJCQlUYW1tc2FhcmUgdGVlIDQ3Ci0JCQkJVGFsbGlubiBIYXJqdW1hYSAxMTMxNgotCQkJCUVTVE9OSUEKLQotRDAtRTQtMEIgICAoaGV4KQkJV2VhcmFibGUgSW5jLgotRDBFNDBCICAgICAoYmFzZSAxNikJCVdlYXJhYmxlIEluYy4KLQkJCQkzODI1IENoYXJsZXMgRHIuCi0JCQkJTm9ydGhicm9vayBJTCA2MDA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtRTUtNEQgICAoaGV4KQkJUGFjZSBwbGMKLUQwRTU0RCAgICAgKGJhc2UgMTYpCQlQYWNlIHBsYwotCQkJCVZpY3RvcmlhIFJvYWQKLQkJCQlTYWx0YWlyZSwKLQkJCQlXZXN0IFlvcmtzaGlyZSBFbmdsYW5kIEJEMTggM0xGCi0JCQkJVU5JVEVEIEtJTkdET00KLQotRDAtRUItOUUgICAoaGV4KQkJU2Vvd29vIEluYy4KLUQwRUI5RSAgICAgKGJhc2UgMTYpCQlTZW93b28gSW5jLgotCQkJCUppblN1bmcgQi9EIDEtMiBHdW5qYS1kb25nLCBHd2FuZ2ppbi1ndSwgCi0JCQkJU2VvdWwgIDE0My04MzcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDAtRjAtREIgICAoaGV4KQkJRXJpY3Nzb24KLUQwRjBEQiAgICAgKGJhc2UgMTYpCQlFcmljc3NvbgotCQkJCTEwMCBIZWFkcXVhcnRlcnMgRHIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDAtRjctM0IgICAoaGV4KQkJSGVsbXV0IE1hdWVsbCBHbWJICi1EMEY3M0IgICAgIChiYXNlIDE2KQkJSGVsbXV0IE1hdWVsbCBHbWJICi0JCQkJQW0gUm9zZW5o77+9Z2VsIDEtNwotCQkJCVZlbGJlcnQgIDQyNTUzCi0JCQkJR0VSTUFOWQotCi1ENC0wMC0wRCAgIChoZXgpCQlQaG9lbml4IEJyb2FkYmFuZCBUZWNobm9sb2dpZXMsIExMQy4KLUQ0MDAwRCAgICAgKGJhc2UgMTYpCQlQaG9lbml4IEJyb2FkYmFuZCBUZWNobm9sb2dpZXMsIExMQy4KLQkJCQk1ODkgQmV0aGxlaGVtIFBpa2UKLQkJCQlTdWl0ZSAxMDAwCi0JCQkJTW9udGdvbWVyeXZpbGxlIFBBIDE4OTM2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC0wMi00QSAgIChoZXgpCQlEZWxwaGlhbiBTeXN0ZW1zIExMQwotRDQwMjRBICAgICAoYmFzZSAxNikJCURlbHBoaWFuIFN5c3RlbXMgTExDCi0JCQkJNzIwIERhcnRtb3V0aCBMYW5lCi0JCQkJQnVmZmFsbyBHcm92ZSBJTCA2MDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtMTEtRDYgICAoaGV4KQkJU2hvdFNwb3R0ZXIsIEluYy4KLUQ0MTFENiAgICAgKGJhc2UgMTYpCQlTaG90U3BvdHRlciwgSW5jLgotCQkJCTEwNjAgVGVycmEgQmVsbGEgQXZlLgotCQkJCU1vdW50YWluIFZpZXcgQ0EgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LTEyLTk2ICAgKGhleCkJCUFub2JpdCBUZWNobm9sb2dpZXMgTHRkLgotRDQxMjk2ICAgICAoYmFzZSAxNikJCUFub2JpdCBUZWNobm9sb2dpZXMgTHRkLgotCQkJCTggSGFzYWRuYW90IFN0LgotCQkJCVBPQiAxMjE0NwotCQkJCUhlcnplbGl5YSBQaXR1YWNoICAgNDY3MjgKLQkJCQlJU1JBRUwKLQotRDQtMTItQkIgICAoaGV4KQkJUXVhZHJhbnQgQ29tcG9uZW50cyBJbmMuIEx0ZAotRDQxMkJCICAgICAoYmFzZSAxNikJCVF1YWRyYW50IENvbXBvbmVudHMgSW5jLiBMdGQKLQkJCQlVbml0IDUsIDE3L0YsIE1ldHJvIExvZnQsCi0JCQkJMzggS3dhaSBIZWkgU3RyZWV0LAotCQkJCUt3YWkgQ2h1bmcsIE5ldyBUZXJyaXRvcnkgCi0JCQkJSE9ORyBLT05HCi0KLUQ0LTFDLTFDICAgKGhleCkJCVJDRiBTLlAuQS4KLUQ0MUMxQyAgICAgKGJhc2UgMTYpCQlSQ0YgUy5QLkEuCi0JCQkJVmlhIFJhZmZhZWxsbyBTYW56aW8gMTMKLQkJCQlSZWdnaW8gRW1pbGlhIEl0YWx5IDQyMTI0Ci0JCQkJSVRBTFkKLQotRDQtMUUtMzUgICAoaGV4KQkJVE9ITyBFbGVjdHJvbmljcyBJTkMuCi1ENDFFMzUgICAgIChiYXNlIDE2KQkJVE9ITyBFbGVjdHJvbmljcyBJTkMuCi0JCQkJMS0xMy0yMSBUYW5hc2hpb2RhLCBDaHVvLUt1Ci0JCQkJU2FnYW1paGFyYS1DaXR5IEthbmFnYXdhIDI1Mi0wMjQ1Ci0JCQkJSkFQQU4KLQotRDQtMUYtMEMgICAoaGV4KQkJVFZJIFZpc2lvbiBPeQotRDQxRjBDICAgICAoYmFzZSAxNikJCVRWSSBWaXNpb24gT3kKLQkJCQlBc2VudGFqYW5rYXR1IDMKLQkJCQlIZWxzaW5raSAgMDA4ODAKLQkJCQlGSU5MQU5ECi0KLUQ0LTIwLTZEICAgKGhleCkJCUhUQyBDb3Jwb3JhdGlvbgotRDQyMDZEICAgICAoYmFzZSAxNikJCUhUQyBDb3Jwb3JhdGlvbgotCQkJCU5vLiAyMywgWGluZ2h1YSBSZCwgCi0JCQkJVGFveXVhbiBDb3VudHkgVGFpd2FuIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDQtMjgtQjIgICAoaGV4KQkJaW9CcmlkZ2UsIEluYy4KLUQ0MjhCMiAgICAgKGJhc2UgMTYpCQlpb0JyaWRnZSwgSW5jLgotCQkJCTIyNSBDZWRhciBIaWxsIFN0cmVldAotCQkJCVN1aXRlIDIwMAotCQkJCU1hcmxib3JvdWdoIE1BIDAxNzUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC0yQy0zRCAgIChoZXgpCQlTa3kgTGlnaHQgRGlnaXRhbCBMaW1pdGVkCi1ENDJDM0QgICAgIChiYXNlIDE2KQkJU2t5IExpZ2h0IERpZ2l0YWwgTGltaXRlZAotCQkJCVJtLiAxMDA5IEt3b25nIFNhbmcgSG9uZyBDZW50cmUsIDE1MS0xNTMgSG9pIEJ1biBSb2FkLCBLd3VuIFRvbmcsIEtvd2xvb24sIAotCQkJCUhvbmcgS29uZyAgOTk5MDc3Ci0JCQkJQ0hJTkEKLQotRDQtM0EtRTkgICAoaGV4KQkJRE9OR0dVQU4gaXB0IElORFVTVFJJQUwgQ08uLCBMVEQKLUQ0M0FFOSAgICAgKGJhc2UgMTYpCQlET05HR1VBTiBpcHQgSU5EVVNUUklBTCBDTy4sIExURAotCQkJCU5vLjY2LTEuSXN0IE5ldyBBcmVhLCBOYW5zaGUgRGlzdC4sIENoaWdhbmcsSHVtZW4sCi0JCQkJRG9uZ2d1YW4gR3Vhbmdkb25nIDUyMzkwCi0JCQkJQ0hJTkEKLQotRDQtM0QtNjcgICAoaGV4KQkJQ2FybWEgSW5kdXN0cmllcyBJbmMuCi1ENDNENjcgICAgIChiYXNlIDE2KQkJQ2FybWEgSW5kdXN0cmllcyBJbmMuCi0JCQkJMTMyIFdhbHNoIFJvYWQKLQkJCQlMaW5kc2F5IE9udGFyaW8gSzlWIDRSMwotCQkJCUNBTkFEQQotCi1ENC0zRC03RSAgIChoZXgpCQlNaWNyby1TdGFyIEludCdsIENvLCBMdGQKLUQ0M0Q3RSAgICAgKGJhc2UgMTYpCQlNaWNyby1TdGFyIEludCdsIENvLCBMdGQKLQkJCQlOby42OSwgTGlkZSBTdC4sIEpob25naGUgQ2l0eQotCQkJCVRhaXBlaSBDb3VudHkgIDIzNQotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotRDQtNDMtQTggICAoaGV4KQkJQ2hhbmd6aG91IEhhb2ppZSBFbGVjdHJpYyBDby4sIEx0ZC4KLUQ0NDNBOCAgICAgKGJhc2UgMTYpCQlDaGFuZ3pob3UgSGFvamllIEVsZWN0cmljIENvLiwgTHRkLgotCQkJCU5vLiAxNTgsCi0JCQkJV2VzdCBIZWhhaSBSb2FkLCBOZXcgRGlzdHJpY3QsCi0JCQkJQ2hhbmd6aG91IEppYW5nc3UgMjEzMDIyCi0JCQkJQ0hJTkEKLQotRDQtNEItNUUgICAoaGV4KQkJVEFJWU8gWVVERU4gQ08uLCBMVEQuCi1ENDRCNUUgICAgIChiYXNlIDE2KQkJVEFJWU8gWVVERU4gQ08uLCBMVEQuCi0JCQkJOC0xLCBTYWthZS1jaG8KLQkJCQlUYWthc2FraS1zaGkgR3VubWEgMzcwLTg1MjIKLQkJCQlKQVBBTgotCi1ENC00Qy0yNCAgIChoZXgpCQlWdXBwYWxhbXJpdGhhIE1hZ25ldGljIENvbXBvbmVudHMgTFRECi1ENDRDMjQgICAgIChiYXNlIDE2KQkJVnVwcGFsYW1yaXRoYSBNYWduZXRpYyBDb21wb25lbnRzIExURAotCQkJCTNyZCBGbG9vciwgMzA3ICxNeSBIb21lIEFzaG9rYSBDaGFtYmVycyxTLlAgUm9hZCwgCi0JCQkJU2VjdW5kZXJhYmFkIEFuZGhyYVByYWRlc2ggNTAwMDAzCi0JCQkJSU5ESUEKLQotRDQtNEMtQTcgICAoaGV4KQkJSW5mb3JtdGVraG5pa2EgJiBDb21tdW5pY2F0aW9uLCBMTEMKLUQ0NENBNyAgICAgKGJhc2UgMTYpCQlJbmZvcm10ZWtobmlrYSAmIENvbW11bmljYXRpb24sIExMQwotCQkJCTEsIGJ1aWxkLiAyLzEsIFZlcmhuYXlhCi0JCQkJS3Jhc25vc2Vsc2theWEgU3QuCi0JCQkJTW9zY293ICAxMDcxNDAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotRDQtNEYtODAgICAoaGV4KQkJS2VtcGVyIERpZ2l0YWwgR21iSAotRDQ0RjgwICAgICAoYmFzZSAxNikJCUtlbXBlciBEaWdpdGFsIEdtYkgKLQkJCQlLb2VuaWdzd2FsbCAxNi0xOAotCQkJCVJlY2tsaW5naGF1c2VuIE5vcnRoLVJoaW5lLVdlc3RwaGFsaWEgNDU2NTcKLQkJCQlHRVJNQU5ZCi0KLUQ0LTUwLTdBICAgKGhleCkJCUNFSVZBIExvZ2ljLCBJbmMKLUQ0NTA3QSAgICAgKGJhc2UgMTYpCQlDRUlWQSBMb2dpYywgSW5jCi0JCQkJMjE0IEUgTWFnbm9saWEgQmx2ZAotCQkJCUJ1cmJhbmsgQ0EgOTE1MDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LTUyLTUxICAgKGhleCkJCUlCVCBJbmdlbmlldXJidXJlYXUgQnJvZW5uaW1hbm4gVGh1bgotRDQ1MjUxICAgICAoYmFzZSAxNikJCUlCVCBJbmdlbmlldXJidXJlYXUgQnJvZW5uaW1hbm4gVGh1bgotCQkJCUthc2VybmVuc3RyYXNzZSA1Ci0JCQkJVGh1biBCZXJuIDM2MDAKLQkJCQlTV0lUWkVSTEFORAotCi1ENC01Mi05NyAgIChoZXgpCQluU1RSRUFNUyBUZWNobm9sb2dpZXMsIEluYy4KLUQ0NTI5NyAgICAgKGJhc2UgMTYpCQluU1RSRUFNUyBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQkxMEYtMiwgTm8uIDMwMiwgUnVpZ3VhbmcgUmQuLCBOZWlodSBEaXN0cmljdCwKLQkJCQlUYWlwZWkgQ2l0eSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1ENC01My1BRiAgIChoZXgpCQlWSUdPIFN5c3RlbSBTLkEuCi1ENDUzQUYgICAgIChiYXNlIDE2KQkJVklHTyBTeXN0ZW0gUy5BLgotCQkJCTEyOS8xMzMgUG96bmFuc2thIHN0cgotCQkJCU96YXJvdyBNYXpvd2llY2tpIE1hem93aWVja2llIDA1LTg1MAotCQkJCVBPTEFORAotCi1ENC01QS1CMiAgIChoZXgpCQlHYWxsZW9uIFN5c3RlbXMKLUQ0NUFCMiAgICAgKGJhc2UgMTYpCQlHYWxsZW9uIFN5c3RlbXMKLQkJCQlVbml0IDksIEZvcnRudW0gQ2xvc2UKLQkJCQlLaXR0cyBHcmVlbgotCQkJCUJpcm1pbmdoYW0gV2VzdCBNaWRsYW5kcyBCMzMgMExHCi0JCQkJVU5JVEVEIEtJTkdET00KLQotRDQtNUQtNDIgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUQ0NUQ0MiAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1ICA5MDIzMAotCQkJCUZJTkxBTkQKLQotRDQtNjYtQTggICAoaGV4KQkJUmllZG8gTmV0d29ya3MgR21iSAotRDQ2NkE4ICAgICAoYmFzZSAxNikJCVJpZWRvIE5ldHdvcmtzIEdtYkgKLQkJCQlXYXJwZWxzdHJhc3NlIDEwCi0JCQkJRHVlZGluZ2VuIEZSIDMxODYKLQkJCQlTV0lUWkVSTEFORAotCi1ENC02Qy1CRiAgIChoZXgpCQlHb29kcmljaCBJU1IKLUQ0NkNCRiAgICAgKGJhc2UgMTYpCQlHb29kcmljaCBJU1IKLQkJCQk2NjAwIEd1bHRvbiBDcnQKLQkJCQlBbGJ1cXVlcnF1ZSBOTSA4NzEwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtNkMtREEgICAoaGV4KQkJQ1NNIEdtYkgKLUQ0NkNEQSAgICAgKGJhc2UgMTYpCQlDU00gR21iSAotCQkJCVJhaWZmZWlzZW5zdHIuIDM0Ci0JCQkJRmlsZGVyc3RhZHQgQmFkZW4tV/xydHRlbWJlcmcgNzA3OTQKLQkJCQlHRVJNQU5ZCi0KLUQ0LTZGLTQyICAgKGhleCkJCVdBWEVTUyBVU0EgSW5jCi1ENDZGNDIgICAgIChiYXNlIDE2KQkJV0FYRVNTIFVTQSBJbmMKLQkJCQkxNDAxIERvdmUgU3RyZWV0Ci0JCQkJU3VpdGUgMjIwCi0JCQkJTmV3cG9ydCBCZWFjaCBDQSA5MjY2MAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtNzktQzMgICAoaGV4KQkJQ2FtZXJvbmV0IEdtYkggJmFtcDsgQ28uIEtHCi1ENDc5QzMgICAgIChiYXNlIDE2KQkJQ2FtZXJvbmV0IEdtYkggJmFtcDsgQ28uIEtHCi0JCQkJRWxiZXJmZWxkZXIgU3RyYXNzZSA5NgotCQkJCVJlbXNjaGVpZCBOUlcgNDI4NTMKLQkJCQlHRVJNQU5ZCi0KLUQ0LTdCLTc1ICAgKGhleCkJCUhBUlRJTkcgRWxlY3Ryb25pY3MgR21iSCAmIENvLiBLRwotRDQ3Qjc1ICAgICAoYmFzZSAxNikJCUhBUlRJTkcgRWxlY3Ryb25pY3MgR21iSCAmIENvLiBLRwotCQkJCU1hcmllbndlcmRlcnN0ci4gMwotCQkJCUVzcGVsa2FtcCBOb3J0aCBSaGluZSBXZXN0cGhhbGlhIDMyMzM5Ci0JCQkJR0VSTUFOWQotCi1ENC04Mi0zRSAgIChoZXgpCQlBcmdvc3kgVGVjaG5vbG9naWVzLCBMdGQuCi1ENDgyM0UgICAgIChiYXNlIDE2KQkJQXJnb3N5IFRlY2hub2xvZ2llcywgTHRkLgotCQkJCTczLTIyMSBIYXlzdGFjayBSb2FkCi0JCQkJUGFsbSBEZXNlcnQgQ0EgOTIyNjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LTg1LTY0ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci1ENDg1NjQgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJTWFpbGNvZGUgNi4zLjA0OQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LTg3LUQ4ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLUQ0ODdEOCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUQ0LTg4LTkwICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotRDQ4ODkwICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1ENC04Qy1CNSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1ENDhDQjUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtOEYtQUEgICAoaGV4KQkJU29nZWNhbSBJbmR1c3RyaWFsLCBTLkEuCi1ENDhGQUEgICAgIChiYXNlIDE2KQkJU29nZWNhbSBJbmR1c3RyaWFsLCBTLkEuCi0JCQkJUm9zYWxpbmQgRnJhbmtsaW4sIDIyLTI0Ci0JCQkJUFRBIENhbXBhbmlsbGFzCi0JCQkJTWFsYWdhICAyOTU5MAotCQkJCVNQQUlOCi0KLUQ0LTkxLUFGICAgKGhleCkJCUVsZWN0cm9hY3VzdGljYSBHZW5lcmFsIEliZXJpY2EsIFMuQS4KLUQ0OTFBRiAgICAgKGJhc2UgMTYpCQlFbGVjdHJvYWN1c3RpY2EgR2VuZXJhbCBJYmVyaWNhLCBTLkEuCi0JCQkJQXZkYSBBbG1vemFyYSwgNzkKLQkJCQlaYXJhZ296YSAgNTAwMDMKLQkJCQlTUEFJTgotCi1ENC05NC01QSAgIChoZXgpCQlDT1NNTyBDTy4sIExURAotRDQ5NDVBICAgICAoYmFzZSAxNikJCUNPU01PIENPLiwgTFRECi0JCQkJMS0xMiwgSGlnYXNoaS1Hb3RhbmRhIDItY2hvbWUKLQkJCQlTaGluYWdhd2Eta3UgVG9reW8gMTQxLTAwMjIKLQkJCQlKQVBBTgotCi1ENC05NC1BMSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotRDQ5NEExICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC05Ni1ERiAgIChoZXgpCQlTVU5HSklOIEMmVCBDTy4sTFRECi1ENDk2REYgICAgIChiYXNlIDE2KQkJU1VOR0pJTiBDJlQgQ08uLExURAotCQkJCURhZXlhCi0JCQkJMzYyLTUKLQkJCQlTaGV1bmcgR3llb25nZ2kgNDI5LTgwOQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1ENC05QS0yMCAgIChoZXgpCQlBcHBsZSwgSW5jCi1ENDlBMjAgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYwotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtOUMtMjggICAoaGV4KQkJSmF5QmlyZCBHZWFyIExMQwotRDQ5QzI4ICAgICAoYmFzZSAxNikJCUpheUJpcmQgR2VhciBMTEMKLQkJCQkyODI1IEVhc3QgQ290dG9ud29vZCBQYXJrd2F5ICM1MDAKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtOUMtOEUgICAoaGV4KQkJVW5pdmVyc2l0eSBvZiBGVUtVSQotRDQ5QzhFICAgICAoYmFzZSAxNikJCVVuaXZlcnNpdHkgb2YgRlVLVUkKLQkJCQkzLTktMSBCdW5reW8KLQkJCQlGdWt1aSBDaXR5ICA5MTAtODUwNwotCQkJCUpBUEFOCi0KLUQ0LTlFLTZEICAgKGhleCkJCVd1aGFuIFpob25neXVhbiBIdWFkaWFuIFNjaWVuY2UgJiBUZWNobm9sb2d5IENvLiwKLUQ0OUU2RCAgICAgKGJhc2UgMTYpCQlXdWhhbiBaaG9uZ3l1YW4gSHVhZGlhbiBTY2llbmNlICYgVGVjaG5vbG9neSBDby4sCi0JCQkJTk8uNiwgNiBSb2FkLCBTY2kuICYgVGVjaC4gcmVnaW9uIG9mIEhVU1QsIEVhc3QgTGFrZSBEZXZlbG9wbWVudCBab25lLAotCQkJCVd1aGFuICBIdWJlaSA0MzAyMjMKLQkJCQlDSElOQQotCi1ENC1BMC0yQSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1ENEEwMkEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDQtQTQtMjUgICAoaGV4KQkJU01BWCBUZWNobm9sb2d5IENvLiwgTHRkLgotRDRBNDI1ICAgICAoYmFzZSAxNikJCVNNQVggVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQkyRi4sIE5vLiAzLCBXdXF1YW4gM3JkLCBXdWd1IERpc3QuCi0JCQkJTmV3IFRhaXBlaSBDaXR5ICAyNDgKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUQ0LUE5LTI4ICAgKGhleCkJCUdyZWVuV2F2ZSBSZWFsaXR5IEluYwotRDRBOTI4ICAgICAoYmFzZSAxNikJCUdyZWVuV2F2ZSBSZWFsaXR5IEluYwotCQkJCTM5IFBhcmtlcgotCQkJCUlydmluZSBDYWxpZm9ybmlhIDkyNjE4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC1BQS1GRiAgIChoZXgpCQlNSUNSTyBXT1JMRCAKLUQ0QUFGRiAgICAgKGJhc2UgMTYpCQlNSUNSTyBXT1JMRCAKLQkJCQkxOTM3MCBWQU4gTkVTUyBBVkUgCi0JCQkJVE9SUkFOQ0UgIENBIDkwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC1BRS01MiAgIChoZXgpCQlEZWxsIEluYwotRDRBRTUyICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUzpSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC1CRS1EOSAgIChoZXgpCQlEZWxsIEluYwotRDRCRUQ5ICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgV2F5LCBNUzpSUjUtNDUKLQkJCQlSb3VuZCBSb2NrIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC1DMS1GQyAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRDRDMUZDICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJWXJ0dGlwZWxsb250aWUgNgotCQkJCU91bHUgIDkwMjMwCi0JCQkJRklOTEFORAotCi1ENC1DNy02NiAgIChoZXgpCQlBY2VudGljIEdtYkgKLUQ0Qzc2NiAgICAgKGJhc2UgMTYpCQlBY2VudGljIEdtYkgKLQkJCQlWZW5sb2VyIFN0cmFzc2UgMTUxLTE1MwotCQkJCUNvbG9nbmUgIDUwNjcyCi0JCQkJR0VSTUFOWQotCi1ENC1DQS02RCAgIChoZXgpCQlSb3V0ZXJib2FyZC5jb20KLUQ0Q0E2RCAgICAgKGJhc2UgMTYpCQlSb3V0ZXJib2FyZC5jb20KLQkJCQlNaWtyb3Rpa2xzIFNJQQotCQkJCVBlcm5hdmFzIDQ2Ci0JCQkJUmlnYSAgTFYtMTAwOQotCQkJCUxBVFZJQQotCi1ENC1DQi1BRiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRDRDQkFGICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi1ENC1DRS1COCAgIChoZXgpCQlFbmF0ZWwgTFRECi1ENENFQjggICAgIChiYXNlIDE2KQkJRW5hdGVsIExURAotCQkJCTY2IFRyZWZmZXJzIFJvYWQKLQkJCQlDaHJpc3RjaHVyY2ggQ2FudGVyYnVyeSA4MDQyCi0JCQkJTkVXIFpFQUxBTkQKLQotRDQtRDEtODQgICAoaGV4KQkJQURCIEJyb2FkYmFuZCBJdGFsaWEKLUQ0RDE4NCAgICAgKGJhc2UgMTYpCQlBREIgQnJvYWRiYW5kIEl0YWxpYQotCQkJCXZpYSBTYXJjYSAzMzYKLQkJCQlNaWxhbm8gIDIwMTI2Ci0JCQkJSVRBTFkKLQotRDQtRDItNDkgICAoaGV4KQkJUG93ZXIgRXRoZXJuZXQKLUQ0RDI0OSAgICAgKGJhc2UgMTYpCQlQb3dlciBFdGhlcm5ldAotCQkJCTR0aCBGbG9vciwgSG9sYm9ybiBHYXRlCi0JCQkJMjYgU291dGhhbXB0b24gQnVpbGRpbmdzCi0JCQkJTG9uZG9uICBXQzJBIDFBSCAKLQkJCQlVTklURUQgS0lOR0RPTQotCi1ENC1ENy00OCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1ENEQ3NDggICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC1EOC05OCAgIChoZXgpCQlLb3JlYSBDTk8gVGVjaCBDby4sIEx0ZAotRDREODk4ICAgICAoYmFzZSAxNikJCUtvcmVhIENOTyBUZWNoIENvLiwgTHRkCi0JCQkJIzI0MC0xLFVpZ29rLVJpCi0JCQkJWWVvbmdzdW4tTXllb24KLQkJCQlNdW5neWVvbmctU2kgR3llb25nc2FuZ2J1ay1kbyA3NDUtODUzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUQ0LURGLTU3ICAgKGhleCkJCUFscGluaW9uIE1lZGljYWwgU3lzdGVtcwotRDRERjU3ICAgICAoYmFzZSAxNikJCUFscGluaW9uIE1lZGljYWwgU3lzdGVtcwotCQkJCTFGIFZlcmRpIFRvd2VyIDIyMi0yMiAKLQkJCQlHdXJvMy1Eb25nIEd1cm8tR3UgCi0JCQkJU2VvdWwgIDE4MS04NDgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDQtRTMtMkMgICAoaGV4KQkJUy4gU2llZGxlICYgU29obmUKLUQ0RTMyQyAgICAgKGJhc2UgMTYpCQlTLiBTaWVkbGUgJiBTb2huZQotCQkJCUJyZWdzdHJhc3NlIDEKLQkJCQlGdXJ0d2FuZ2VuICBELTc4MTIwCi0JCQkJR0VSTUFOWQotCi1ENC1FMy0zRiAgIChoZXgpCQlBbGNhdGVsLUx1Y2VudAotRDRFMzNGICAgICAoYmFzZSAxNikJCUFsY2F0ZWwtTHVjZW50Ci0JCQkJNjAwIE1hcmNoIFJvYWQKLQkJCQlLYW5hdGEgT250YXJpbyBLMksgMkU2Ci0JCQkJQ0FOQURBCi0KLUQ0LUU4LUIyICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLUQ0RThCMiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUQ0LUVDLTBDICAgKGhleCkJCUhhcmxleS1EYXZpZHNvbiBNb3RvciBDb21wYW55Ci1ENEVDMEMgICAgIChiYXNlIDE2KQkJSGFybGV5LURhdmlkc29uIE1vdG9yIENvbXBhbnkKLQkJCQkzNzAwIFcuIEp1bmVhdSBBdmVudWUKLQkJCQlNaWx3YXVrZWUgV2lzY29uc2luIDUzMjA4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1ENC1GMC0yNyAgIChoZXgpCQlOYXZldGFzIEVuZXJneSBNYW5hZ2VtZW50Ci1ENEYwMjcgICAgIChiYXNlIDE2KQkJTmF2ZXRhcyBFbmVyZ3kgTWFuYWdlbWVudAotCQkJCTE3QSBEZWJlbiBNaWxsIEJ1c2luZXNzIENlbnRyZQotCQkJCU9sZCBNYWx0aW5ncyBBcHByb2FjaAotCQkJCVdvb2RicmlkZ2UgU3VmZm9sayBJUDEyIDFCTAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUQ0LUYwLUI0ICAgKGhleCkJCU5hcGNvIFNlY3VyaXR5IFRlY2hub2xvZ2llcwotRDRGMEI0ICAgICAoYmFzZSAxNikJCU5hcGNvIFNlY3VyaXR5IFRlY2hub2xvZ2llcwotCQkJCTMzMyBCYXl2aWV3IEF2ZQotCQkJCUFtaXR5dmlsbGUgTlkgMTE3MDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ0LUYxLTQzICAgKGhleCkJCUlQUk9BRC4sSW5jCi1ENEYxNDMgICAgIChiYXNlIDE2KQkJSVBST0FELixJbmMKLQkJCQkjNTA1IEJ5dWtzYW4gZGlnaXRhbCB2YWxsZXkgNywgMTcwLTEzLAotCQkJCUd1cm8tMy1Eb25nLCBHdXJvLWd1Ci0JCQkJU2VvdWwgIDE1Mi04NDcKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRDQtRjYtM0YgICAoaGV4KQkJSUVBIFMuUi5MLgotRDRGNjNGICAgICAoYmFzZSAxNikJCUlFQSBTLlIuTC4KLQkJCQlFdmEgUGVyb24gNDQ2OAotCQkJCVJvc2FyaW8gU2FudGEgRmUgUzIwMDJMQlEgCi0JCQkJQVJHRU5USU5BCi0KLUQ4LTA1LTJFICAgKGhleCkJCVNreXZpaWEgQ29ycG9yYXRpb24KLUQ4MDUyRSAgICAgKGJhc2UgMTYpCQlTa3l2aWlhIENvcnBvcmF0aW9uCi0JCQkJTm8uIDEwLTEsIExpeGluZyAxc3QgUmQuLCBTY2llbmNlIFBhcmssCi0JCQkJSHNpbmNodSBDaXR5ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUQ4LTA2LUQxICAgKGhleCkJCUhvbmV5d2VsbCBGaXJlIFN5c3RlbSAoU2hhbmdoYWkpIENvLC4gTHRkLgotRDgwNkQxICAgICAoYmFzZSAxNikJCUhvbmV5d2VsbCBGaXJlIFN5c3RlbSAoU2hhbmdoYWkpIENvLC4gTHRkLgotCQkJCU5vLiA0MzAsIExpIEJpbmcgUm9hZCwgUHVkb25nCi0JCQkJU2hhbmdoYWkgU2hhbmdoYWkgMjAxMjAzCi0JCQkJQ0hJTkEKLQotRDgtMEQtRTMgICAoaGV4KQkJRlhJIFRFQ0hOT0xPR0lFUyBBUwotRDgwREUzICAgICAoYmFzZSAxNikJCUZYSSBURUNITk9MT0dJRVMgQVMKLQkJCQlQb3N0Ym9rcyA2MDkKLQkJCQlUUk9OREhFSU0gTm9yZ2UgNzQwNgotCQkJCU5PUldBWQotCi1EOC0xNi0wQSAgIChoZXgpCQlOaXBwb24gRWxlY3Ryby1TZW5zb3J5IERldmljZXMKLUQ4MTYwQSAgICAgKGJhc2UgMTYpCQlOaXBwb24gRWxlY3Ryby1TZW5zb3J5IERldmljZXMKLQkJCQlJdGFjaGlib3JpIDItNS0xMgotCQkJCU5pc2hpLWt1IE9zYWthIDU1MC0wMDEyCi0JCQkJSkFQQU4KLQotRDgtMUItRkUgICAoaGV4KQkJVFdJTkxJTlggQ09SUE9SQVRJT04KLUQ4MUJGRSAgICAgKGJhc2UgMTYpCQlUV0lOTElOWCBDT1JQT1JBVElPTgotCQkJCUVTUEFDRSBERVNDQVJURVMgQkFUIEIKLQkJCQk0MjUgUlVFIFJFTkUgREVTQ0FSVEVTCi0JCQkJQUlYIEVOIFBST1ZFTkNFIFBST1ZFTkNFIDEzODU3Ci0JCQkJRlJBTkNFCi0KLUQ4LTFDLTE0ICAgKGhleCkJCUNvbXBhY3RhIEludGVybmF0aW9uYWwsIEx0ZC4KLUQ4MUMxNCAgICAgKGJhc2UgMTYpCQlDb21wYWN0YSBJbnRlcm5hdGlvbmFsLCBMdGQuCi0JCQkJMzEzNDIgVmlhIExhcyBQYWxtYXMKLQkJCQlTYW4gSnVhbiBDYXBpc3RyYW5vIENBIDkyNjc1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC0yNC1CRCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1EODI0QkQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtMjYtQjkgICAoaGV4KQkJR3Vhbmdkb25nIENvYWdlbnQgRWxlY3Ryb25pY3MgUyAmVCBDby4sIEx0ZC4KLUQ4MjZCOSAgICAgKGJhc2UgMTYpCQlHdWFuZ2RvbmcgQ29hZ2VudCBFbGVjdHJvbmljcyBTICZUIENvLiwgTHRkLgotCQkJCVNlY3Rpb24gQyxYaSBOYW4gSW5kdXN0cmlhbCBab25lIFNhbnNodWkKLQkJCQlGb3NoYW4gR3Vhbmdkb25nIDUyODEzMwotCQkJCUNISU5BCi0KLUQ4LTI4LUM5ICAgKGhleCkJCUdlbmVyYWwgRWxlY3RyaWMgQ29uc3VtZXIgYW5kIEluZHVzdHJpYWwKLUQ4MjhDOSAgICAgKGJhc2UgMTYpCQlHZW5lcmFsIEVsZWN0cmljIENvbnN1bWVyIGFuZCBJbmR1c3RyaWFsCi0JCQkJQVAzNS0xNDA1Ci0JCQkJQXBwbGlhbmNlIFBhcmsKLQkJCQlMb3Vpc3ZpbGxlIEtZIDQwMjI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC0yOS04NiAgIChoZXgpCQlCZXN0IFdpc2ggVGVjaG5vbG9neSBMVEQKLUQ4Mjk4NiAgICAgKGJhc2UgMTYpCQlCZXN0IFdpc2ggVGVjaG5vbG9neSBMVEQKLQkJCQk3RSxIYWkgWWkgQnVzaW5lc3MgQnVpbGRpbmcsTm8uMzEwLFRpYW5zaGFuIFJELiwKLQkJCQlTaGFuZ2hhaSAgMjAwMzM2Ci0JCQkJQ0hJTkEKLQotRDgtMkEtN0UgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUQ4MkE3RSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCUVsZWt0cm9uaWlra2F0aWUgMTAKLQkJCQlPdWx1ICA5MDU5MAotCQkJCUZJTkxBTkQKLQotRDgtMzAtNjIgICAoaGV4KQkJQXBwbGUsIEluYwotRDgzMDYyICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ4LTMzLTdGICAgKGhleCkJCU9mZmljZSBGQS5jb20gQ28uLEx0ZC4KLUQ4MzM3RiAgICAgKGJhc2UgMTYpCQlPZmZpY2UgRkEuY29tIENvLixMdGQuCi0JCQkJMjkzLTIxCi0JCQkJTmFyYW5va2kKLQkJCQlPeWFtYS1zaGkgVG9jaGlnaSAzMjktMDIxNgotCQkJCUpBUEFOCi0KLUQ4LTQyLUFDICAgKGhleCkJCUZyZWVDb21tIERhdGEgQ29tbXVuaWNhdGlvbiBDby4sTHRkLgotRDg0MkFDICAgICAoYmFzZSAxNikJCUZyZWVDb21tIERhdGEgQ29tbXVuaWNhdGlvbiBDby4sTHRkLgotCQkJCUJ1aWxkaW5nIDkwLCBOby4gNDg1NSwgR3VhbmdmdWxpbiBSb2FkLCBTb25namlhbmcgRGlzdHJpY3QKLQkJCQlTaGFuZ2hhaSAgMjAxNjE2Ci0JCQkJQ0hJTkEKLQotRDgtNDYtMDYgICAoaGV4KQkJU2lsaWNvbiBWYWxsZXkgR2xvYmFsIE1hcmtldGluZwotRDg0NjA2ICAgICAoYmFzZSAxNikJCVNpbGljb24gVmFsbGV5IEdsb2JhbCBNYXJrZXRpbmcKLQkJCQk4MzAgU3Rld2FydCBEci4gIzIwMQotCQkJCVN1bm55dmFsZSBDYSA5NDA4NQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtNEItMkEgICAoaGV4KQkJQ29nbml0YXMgVGVjaG5vbG9naWVzLCBJbmMuCi1EODRCMkEgICAgIChiYXNlIDE2KQkJQ29nbml0YXMgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJNjQwNiBMYXVyZWwgQnVzaCBMbi4KLQkJCQlTdWdhciBMYW5kIFRleGFzIDc3NDc5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC01NC0zQSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotRDg1NDNBICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJRGFsbGFzIFRYIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC01RC00QyAgIChoZXgpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotRDg1RDRDICAgICAoYmFzZSAxNikJCVRQLUxJTksgVGVjaG5vbG9naWVzIENvLixMdGQuCi0JCQkJQnVpbGRpbmcgNywgU2Vjb25kIFBhcnQsIEhvbmdodWFsaW5nIEluZHVzdHJpYWwgWm9uZQotCQkJCVhpbGkgdG93biwgTmFuc2hhbiwgCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAwMAotCQkJCUNISU5BCi0KLUQ4LTVELTg0ICAgKGhleCkJCUNBeCBzb2Z0IEdtYkgKLUQ4NUQ4NCAgICAgKGJhc2UgMTYpCQlDQXggc29mdCBHbWJICi0JCQkJTm9ldHRpbmdlciBTdHJhc3NlIDMKLQkJCQlLYXJsc2JhZCBCVyA3NjMwNwotCQkJCUdFUk1BTlkKLQotRDgtNjctRDkgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRDg2N0Q5ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUQ4LTZCLUY3ICAgKGhleCkJCU5pbnRlbmRvIENvLiwgTHRkLgotRDg2QkY3ICAgICAoYmFzZSAxNikJCU5pbnRlbmRvIENvLiwgTHRkLgotCQkJCTExLTEgSE9LT1RBVEUtQ0hPCi0JCQkJS0FNSVRPQkEsIE1JTkFNSS1LVQotCQkJCUtZT1RPICA2MDEtODUwMQotCQkJCUpBUEFOCi0KLUQ4LTcxLTU3ICAgKGhleCkJCUxlbm92byBNb2JpbGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLUQ4NzE1NyAgICAgKGJhc2UgMTYpCQlMZW5vdm8gTW9iaWxlIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBMdGQuCi0JCQkJTm8uOTk5LFFpc2hhbiBOb3J0aCAybmQgUm9hZCxJbmZvcm1hdGlvbiZPcHRvZWxlY3Ryb25pY3MgUGFyayxUb3JjaCBIaS10ZWNoIEluZHVzdHJ5IERldmVsb3BtZW50IFpvbmUsCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi1EOC03NS0zMyAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRDg3NTMzICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgIDkwNTkwCi0JCQkJRklOTEFORAotCi1EOC03Ni0wQSAgIChoZXgpCQlFc2NvcnQsIEluYy4KLUQ4NzYwQSAgICAgKGJhc2UgMTYpCQlFc2NvcnQsIEluYy4KLQkJCQk1NDQwIFdlc3QgQ2hlc3RlciBSZC4KLQkJCQlXZXN0IENoZXN0ZXIgT2hpbyA0NTA2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtNzgtRTUgICAoaGV4KQkJS1VITiBTQQotRDg3OEU1ICAgICAoYmFzZSAxNikJCUtVSE4gU0EKLQkJCQk0LCBpbXBhc3NlIGRlcyBmYWJyaXF1ZXMKLQkJCQlTQVZFUk5FICA2NzcwMAotCQkJCUZSQU5DRQotCi1EOC03OS04OCAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLiwgTHRkLgotRDg3OTg4ICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLCBMdGQuCi0JCQkJTk8uMTY4IEZPWENPTk4gUk9BRAotCQkJCUhVQUlBTiBFQ09OT01JQyBERVZFTE9QTUVOVCBaT05FCi0JCQkJSFVBSUFOIEpJQU5HU1UgMjIzMDA1Ci0JCQkJQ0hJTkEKLQotRDgtOEEtM0IgICAoaGV4KQkJVU5JVC1FTQotRDg4QTNCICAgICAoYmFzZSAxNikJCVVOSVQtRU0KLQkJCQkxNjcgTWVyY2hhbnRzIFN0cmVldAotCQkJCVZhbGxldHRhICBWTFQgMTE3NAotCQkJCU1BTFRBCi0KLUQ4LTk1LTJGICAgKGhleCkJCVRleGFzIEluc3RydW1lbnRzCi1EODk1MkYgICAgIChiYXNlIDE2KQkJVGV4YXMgSW5zdHJ1bWVudHMKLQkJCQkxMjUwMCBUSSBCb3VsZXZhcmQKLQkJCQlNUyA4NzIzCi0JCQkJRGFsbGFzIFRleGFzIDc1MjQzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC05Ni04NSAgIChoZXgpCQlHb1BybwotRDg5Njg1ICAgICAoYmFzZSAxNikJCUdvUHJvCi0JCQkJMjQ1MCBDYWJyaWxsbyBId3kgU291dGgKLQkJCQlIYWxmIE1vb24gQmF5IENBIDk0MDE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC05Ny0zQiAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgRW1iZWRkZWQgUG93ZXIKLUQ4OTczQiAgICAgKGJhc2UgMTYpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgRW1iZWRkZWQgUG93ZXIKLQkJCQkxNi9GIEx1IFBsYXphIEJ1aWxkaW5nCi0JCQkJMiBXaW5nIFlpcCBTdHJlZXQKLQkJCQlLd3VuIFRvbmcgS293bG9vbiAwMDAwMAotCQkJCUhPTkcgS09ORwotCi1EOC05Ny02MCAgIChoZXgpCQlDMiBEZXZlbG9wbWVudCwgSW5jLgotRDg5NzYwICAgICAoYmFzZSAxNikJCUMyIERldmVsb3BtZW50LCBJbmMuCi0JCQkJMTYwNiBHb2xkZW4gQXNwZW4gRHIKLQkJCQlTdWl0ZSAxMDYKLQkJCQlBbWVzIElBIDUwMDEwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC05RC1COSAgIChoZXgpCQllTWVnYXRlY2ggSW50ZXJuYXRpb25hbCBDb3JwLgotRDg5REI5ICAgICAoYmFzZSAxNikJCWVNZWdhdGVjaCBJbnRlcm5hdGlvbmFsIENvcnAuCi0JCQkJUm9vbSA0MDMsIE5vLjI0IFd1Y3l1YW4gMm5kIFJkLiwKLQkJCQlTaW5qaHVhbmcgQ2l0eSwgVGFpcGVpIENvdW50eSwgIDIzOAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDgtOUUtM0YgICAoaGV4KQkJQXBwbGUsIEluYy4KLUQ4OUUzRiAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQTItNUUgICAoaGV4KQkJQXBwbGUsIEluYy4KLUQ4QTI1RSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDYWxpZm9ybmlhIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC1BRS05MCAgIChoZXgpCQlJdGliaWEgVGVjaG5vbG9naWVzCi1EOEFFOTAgICAgIChiYXNlIDE2KQkJSXRpYmlhIFRlY2hub2xvZ2llcwotCQkJCTUgQ2xhdXNlbiBDdAotCQkJCVdlc3QgV2luZHNvciBOSiAwODU1MAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQjEtMkEgICAoaGV4KQkJUGFuYXNvbmljIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBDby4sIEx0ZC4KLUQ4QjEyQSAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgTW9iaWxlIENvbW11bmljYXRpb25zIENvLiwgTHRkLgotCQkJCTYwMCBTYWVkby1jaG8gVHN1enVraS1rdQotCQkJCVlva29oYW1hIENpdHkgS2FuYWdhd2EgMjI0LTg1MzkKLQkJCQlKQVBBTgotCi1EOC1CMy03NyAgIChoZXgpCQlIVEMgQ29ycG9yYXRpb24KLUQ4QjM3NyAgICAgKGJhc2UgMTYpCQlIVEMgQ29ycG9yYXRpb24KLQkJCQlOby4gMjMsIFhpbmdodWEgUmQuLCAKLQkJCQlUYW95dWFuIENpdHkgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRDgtQjYtQzEgICAoaGV4KQkJTmV0d29ya0FjY291bnRhbnQsIEluYy4KLUQ4QjZDMSAgICAgKGJhc2UgMTYpCQlOZXR3b3JrQWNjb3VudGFudCwgSW5jLgotCQkJCTEyMTAxIFR1a3dpbGEgSW50ZXJuYXRpb25hbCBCbHZkLgotCQkJCVNlYXR0bGUgV2FzaGluZ3RvbiA5ODE2OAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQjgtRjYgICAoaGV4KQkJTmFudHdvcmtzCi1EOEI4RjYgICAgIChiYXNlIDE2KQkJTmFudHdvcmtzCi0JCQkJMTIyMzAgRWwgQ2FtaW5vIFJlYWwsIFN1aXRlIDQwMAotCQkJCVNhbiBEaWVnbyBDQSA5MjEzMAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQjktMEUgICAoaGV4KQkJVHJpcGxlIERvbWFpbiBWaXNpb24gQ28uLEx0ZC4KLUQ4QjkwRSAgICAgKGJhc2UgMTYpCQlUcmlwbGUgRG9tYWluIFZpc2lvbiBDby4sTHRkLgotCQkJCU5vLjksIEFseS4gMSwgTG4uIDU4NSwgU2VjLjMsIEZ1bGluIFJkLiwKLQkJCQlDeW9uZ2xpbiBUb3duc2hpcAotCQkJCUhzaW5jaHUgQ29udXR5ICAzMDcKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUQ4LUJGLTRDICAgKGhleCkJCVZpY3RvcnkgQ29uY2VwdCBFbGVjdHJvbmljcyBMaW1pdGVkCi1EOEJGNEMgICAgIChiYXNlIDE2KQkJVmljdG9yeSBDb25jZXB0IEVsZWN0cm9uaWNzIExpbWl0ZWQKLQkJCQk0L0YuLCBDQUMgVG93ZXIsCi0JCQkJMTY1IEhvaSBCdW4gUm9hZCwKLQkJCQlLd3VuIFRvbmcgS293bG9vbiBLTE4KLQkJCQlIT05HIEtPTkcKLQotRDgtQzAtNjggICAoaGV4KQkJTmV0Z2VuZXRlY2guY28uLGx0ZC4KLUQ4QzA2OCAgICAgKGJhc2UgMTYpCQlOZXRnZW5ldGVjaC5jby4sbHRkLgotCQkJCTcwNCwgSGFubGltIFZlbnR1cmUgVG93bi4sICM2ODktNiwgCi0JCQkJR2V1bWplb25nLSBkb25nLAotCQkJCUd1bnBvLXNpICA0MzUtODYyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUQ4LUMzLUZCICAgKGhleCkJCURFVFJBQ09NCi1EOEMzRkIgICAgIChiYXNlIDE2KQkJREVUUkFDT00KLQkJCQk0MSBBVkVOVUUgREUgTCdFVVJPUEUKLQkJCQlaT05FIEVVUk9DRU5UUkUgT1VFU1QgCi0JCQkJQ0FTVEVMTkFVIEQnRVNUUkVURUZPTkRTICAzMTYyMAotCQkJCUZSQU5DRQotCi1EOC1DNy1DOCAgIChoZXgpCQlBcnViYSBOZXR3b3JrcwotRDhDN0M4ICAgICAoYmFzZSAxNikJCUFydWJhIE5ldHdvcmtzCi0JCQkJMTM0NCBDcm9zc21hbiBBdmUuCi0JCQkJU3Vubnl2YWxlICBDQSA5NDA4OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtQzktOUQgICAoaGV4KQkJRUEgRElTUExBWSBMSU1JVEVECi1EOEM5OUQgICAgIChiYXNlIDE2KQkJRUEgRElTUExBWSBMSU1JVEVECi0JCQkJMjIvRiBERUxUQSBIT1VTRSAzIE9OIFlJVSBTVAotCQkJCVNIQVRJTiBOVCAgCi0JCQkJSE9ORyBLT05HCi0KLUQ4LUQzLTg1ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci1EOEQzODUgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJSG91c3RvbiBUZXhhcyA3NzA3MAotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtRDYtN0UgICAoaGV4KQkJR1NLIENOQyBFUVVJUE1FTlQgQ08uLExURAotRDhENjdFICAgICAoYmFzZSAxNikJCUdTSyBDTkMgRVFVSVBNRU5UIENPLixMVEQKLQkJCQlOTy43LDFzdCBTdHJlZXQsTHVvY2hvbmcgTm9ydGggUm9hZCxMdW9jaG9uZ3dlaQotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgIDUxMDE2NQotCQkJCUNISU5BCi0KLUQ4LURGLTBEICAgKGhleCkJCWJlcm9OZXQgR21iSAotRDhERjBEICAgICAoYmFzZSAxNikJCWJlcm9OZXQgR21iSAotCQkJCUZyaWVkcmljaHN0ci4gMjMxCi0JCQkJQmVybGluICAxMDk2OQotCQkJCUdFUk1BTlkKLQotRDgtRTMtQUUgICAoaGV4KQkJQ0lSVEVDIE1FRElDQUwgU1lTVEVNUwotRDhFM0FFICAgICAoYmFzZSAxNikJCUNJUlRFQyBNRURJQ0FMIFNZU1RFTVMKLQkJCQkxMDFCIENvb3BlciBDb3VydAotCQkJCUxvcyBHYXRvcyBDQSA5NTAzMgotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtRTctMkIgICAoaGV4KQkJT25QQVRIIFRlY2hub2xvZ2llcwotRDhFNzJCICAgICAoYmFzZSAxNikJCU9uUEFUSCBUZWNobm9sb2dpZXMKLQkJCQkyMDAwIExpbmNvbG4gRHJpdmUgRWFzdAotCQkJCU1hcmx0b24gTmV3IEplcnNleSAwODA1MwotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtRTctNDMgICAoaGV4KQkJV3VzaCwgSW5jCi1EOEU3NDMgICAgIChiYXNlIDE2KQkJV3VzaCwgSW5jCi0JCQkJMTdGLk5vIDI2OCwgTGlhbmNoZW5nIFJkLiwgWmhvbmdoZSBEaXN0cmljdAotCQkJCU5ldyAgVGFpcGVpIENpdHkgICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUQ4LUU5LTUyICAgKGhleCkJCUtFT1BTWVMKLUQ4RTk1MiAgICAgKGJhc2UgMTYpCQlLRU9QU1lTCi0JCQkJMjEgUlVFIExPVUlTIERFIEJST0dMSUUKLQkJCQlMQU5OSU9OIEJSSVRBTlkgMjIzMDAKLQkJCQlGUkFOQ0UKLQotRDgtRUItOTcgICAoaGV4KQkJVFJFTkRuZXQsIEluYy4KLUQ4RUI5NyAgICAgKGJhc2UgMTYpCQlUUkVORG5ldCwgSW5jLgotCQkJCTIwNjc1IE1hbmhhdHRhbiBQbGFjZQotCQkJCVRvcnJhbmNlIENBIDkwNTAxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EOC1GMC1GMiAgIChoZXgpCQlaZWVibyBJbmMKLUQ4RjBGMiAgICAgKGJhc2UgMTYpCQlaZWVibyBJbmMKLQkJCQk1NDA1IE1vcmVob3VzZSBEcml2ZQotCQkJCVN1aXRlICMzMDAKLQkJCQlTYW4gRGllZ28gQ2FsaWZvcm5pYSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRDgtRkUtOEYgICAoaGV4KQkJSURGb25lIENvLiwgTHRkLgotRDhGRThGICAgICAoYmFzZSAxNikJCUlERm9uZSBDby4sIEx0ZC4KLQkJCQk3RiBBY2UgdGVjaG5vIHRvd2VyIDV0aCBCL0QsIDE5Ny0yMgotCQkJCUd1cm8tZG9uZywgR3Vyby1ndSBTZW91bCAxNTItNzY2Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLURDLTAyLTY1ICAgKGhleCkJCU1lZGl0ZWNoIEtmdAotREMwMjY1ICAgICAoYmFzZSAxNikJCU1lZGl0ZWNoIEtmdAotCQkJCcODxZNsbMODwrVpIMODwrp0IDIwMC4KLQkJCQlCdWRhcGVzdCAgMTE5MQotCQkJCUhVTkdBUlkKLQotREMtMDUtRUQgICAoaGV4KQkJTmFidGVzY28gIENvcnBvcmF0aW9uCi1EQzA1RUQgICAgIChiYXNlIDE2KQkJTmFidGVzY28gIENvcnBvcmF0aW9uCi0JCQkJOS0xOCwgS2FpZ2FuIDEtY2hvbWUKLQkJCQlNaW5hdG8ta3UgVG9reW8gMTA1LTAwMjIKLQkJCQlKQVBBTgotCi1EQy0wNy1DMSAgIChoZXgpCQlIYW5nWmhvdSBRaVlhbmcgVGVjaG5vbG9neSBDby4sTHRkLgotREMwN0MxICAgICAoYmFzZSAxNikJCUhhbmdaaG91IFFpWWFuZyBUZWNobm9sb2d5IENvLixMdGQuCi0JCQkJRmxvb3IgNSwgQnVpbGRpbmcgMiwgUm9hZCBYaVl1YW5ZaSwgV2VzdExha2UgVGVjaG5vbG9neSBQYXJrLAotCQkJCVNhbkR1biwgWGlIdSBEaXN0cmlidXRlCi0JCQkJSGFuZ1pob3UgWmhlSmlhbmcgMzEwMDI4Ci0JCQkJQ0hJTkEKLQotREMtMEItMUEgICAoaGV4KQkJQURCIEJyb2FkYmFuZCBTcEEKLURDMEIxQSAgICAgKGJhc2UgMTYpCQlBREIgQnJvYWRiYW5kIFNwQQotCQkJCXZpYWxlIFNhcmNhIDMzNgotCQkJCU1pbGFubyBJdGFseSAyMDEyNgotCQkJCUlUQUxZCi0KLURDLTBFLUExICAgKGhleCkJCUNPTVBBTCBJTkZPUk1BVElPTiAoS1VOU0hBTikgQ08uLCBMVEQKLURDMEVBMSAgICAgKGJhc2UgMTYpCQlDT01QQUwgSU5GT1JNQVRJT04gKEtVTlNIQU4pIENPLiwgTFRECi0JCQkJTm8uMjUsIFRoaXJkIEF2ZW51ZSwgQSBab25lLCBLdW5zaGFuIENvbXByZWhlbnNpdmUgRnJlZSBUcmFkZSBab25lLCwgSmlhbmdzdSwgCi0JCQkJS1VOU0hBTiAgU1VaSE9VIDIxNTMwMAotCQkJCUNISU5BCi0KLURDLTE2LUEyICAgKGhleCkJCU1lZHRyb25pYyBEaWFiZXRlcwotREMxNkEyICAgICAoYmFzZSAxNikJCU1lZHRyb25pYyBEaWFiZXRlcwotCQkJCTE4MDAwIERldm9uc2hpcmUgU3QKLQkJCQlOb3J0aHJpZGdlIENBIDkxMzI1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EQy0xNy01QSAgIChoZXgpCQlIaXRhY2hpIEhpZ2gtVGVjaG5vbG9naWVzIENvcnBvcmF0aW9uCi1EQzE3NUEgICAgIChiYXNlIDE2KQkJSGl0YWNoaSBIaWdoLVRlY2hub2xvZ2llcyBDb3Jwb3JhdGlvbgotCQkJCTc5NCwgSGlnYXNoaXRveW9pLAotCQkJCUt1ZGFtYXRzdSBDaXR5LCBZYW1hZ3VjaGkgUHJlZi4sIDc0NC0wMDAyLAotCQkJCUpBUEFOCi0KLURDLTFELTlGICAgKGhleCkJCVUgJiBCIHRlY2gKLURDMUQ5RiAgICAgKGJhc2UgMTYpCQlVICYgQiB0ZWNoCi0JCQkJMkYsIERhZXlvdW5nIGJ1bGlkaW5nLCAxNDIzLTYsIEt3YW55YW5nLTFEb25nLAotCQkJCURvbmdBbi1HdSwKLQkJCQlBbnlhbmctU2kgR3llb25nZ2ktRG8gNDMxLTA2MQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1EQy0xRS1BMyAgIChoZXgpCQlBY2NlbnN1cyBMTEMKLURDMUVBMyAgICAgKGJhc2UgMTYpCQlBY2NlbnN1cyBMTEMKLQkJCQkyMDAgU291dGggV2Fja2VyIERyaXZlCi0JCQkJU3VpdGUgMzEwMAotCQkJCUNoaWNhZ28gSUwgNjA2MDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLURDLTIwLTA4ICAgKGhleCkJCUFTRCBFbGVjdHJvbmljcyBMdGQgCi1EQzIwMDggICAgIChiYXNlIDE2KQkJQVNEIEVsZWN0cm9uaWNzIEx0ZCAKLQkJCQlERURFIElORFVTVFJJQUwgUEFSSyxKSUFOJ0FOIFJPQUQsSElHSC1URUNICi0JCQkJSU5EVVNUUklBTCBQQVJLLEZVWU9ORyBUT1dOLEJBTydBTiBESVNUUklDVCwKLQkJCQlTaGVuemhlbiAgR3VhbmcgRG9uZyA1MTgxMDMKLQkJCQlDSElOQQotCi1EQy0yQi02MSAgIChoZXgpCQlBcHBsZSwgSW5jLgotREMyQjYxICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EQy0yQi02NiAgIChoZXgpCQlJbmZvYmxvY2sKLURDMkI2NiAgICAgKGJhc2UgMTYpCQlJbmZvYmxvY2sKLQkJCQlIZWdlbCAyMjkgLSAxMAotCQkJCUNoYXB1bHRlcGVjIE1vcmFsZXMKLQkJCQlNZXhpY28gQ2l0eSBEaXN0cml0byBGZWRlcmFsIDExNTcwCi0JCQkJTUVYSUNPCi0KLURDLTJDLTI2ICAgKGhleCkJCUl0b24gVGVjaG5vbG9neSBMaW1pdGVkCi1EQzJDMjYgICAgIChiYXNlIDE2KQkJSXRvbiBUZWNobm9sb2d5IExpbWl0ZWQKLQkJCQlSb29tIDEwRSwgSmluZ0ZlbmcgQnVpbGRpbmcsIAotCQkJCUJpbmhlIFJvYWQsIEZ1dGlhbiBEaXN0cmljdAotCQkJCVNoZW5aaGVuIEd1YW5nRG9uZyA1MTgwMzQKLQkJCQlDSElOQQotCi1EQy0yRS02QSAgIChoZXgpCQlIQ1QuIENvLiwgTHRkLgotREMyRTZBICAgICAoYmFzZSAxNikJCUhDVC4gQ28uLCBMdGQuCi0JCQkJMTA1LTEsIEphbmdhbS1yaSwgTWFqYW5nLW15ZW4KLQkJCQlJY2hlb24tc2kgR3llb25nZ2ktZG8gNDY3LTgxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1EQy0zMC05QyAgIChoZXgpCQlTQVkgU3lzdGVtcyBMaW1pdGVkCi1EQzMwOUMgICAgIChiYXNlIDE2KQkJU0FZIFN5c3RlbXMgTGltaXRlZAotCQkJCUxldmVsIDEsIDIzNi0yNTYgS2Fyb3JpIFJvYWQKLQkJCQlLYXJvcmkKLQkJCQlXZWxsaW5ndG9uICA2MTQ3Ci0JCQkJTkVXIFpFQUxBTkQKLQotREMtMzMtNTAgICAoaGV4KQkJVGVjaFNBVCBHbWJICi1EQzMzNTAgICAgIChiYXNlIDE2KQkJVGVjaFNBVCBHbWJICi0JCQkJR3J1YmVyIFN0ci4gNDZjCi0JCQkJUG9pbmcgQlkgODU1ODYKLQkJCQlHRVJNQU5ZCi0KLURDLTM3LUQyICAgKGhleCkJCUh1bmFuIEhLVCBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uLCBMdGQKLURDMzdEMiAgICAgKGJhc2UgMTYpCQlIdW5hbiBIS1QgRWxlY3Ryb25pYyBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJUm9vbSA0MjgsNEYsSHVuYW4gRW52aXJvbm1lbnRhbCBTY2llbmNlIGFuZCBUZWNobm9sb2d5IENvbW1pdHRlZSBCdWlsZGluZyxObyAxOCBTb3V0aCBvZiBXYW5qaWFsaSBSb2FkLFl1aHVhIERpc3RyaWN0LENoYW5nc2hhCi0JCQkJQ2hhbmdzaGEgSHVuYW4gNDEwMDA3Ci0JCQkJQ0hJTkEKLQotREMtM0MtMkUgICAoaGV4KQkJTWFudWZhY3R1cmluZyBTeXN0ZW0gSW5zaWdodHMsIEluYy4KLURDM0MyRSAgICAgKGJhc2UgMTYpCQlNYW51ZmFjdHVyaW5nIFN5c3RlbSBJbnNpZ2h0cywgSW5jLgotCQkJCTI1NTAgTmludGggU3QuCi0JCQkJU3VpdGUgMjA0QgotCQkJCUJlcmtlbHkgQ0EgOTQ3MTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLURDLTNDLTg0ICAgKGhleCkJCVRpY29tIEdlb21hdGljcywgSW5jLgotREMzQzg0ICAgICAoYmFzZSAxNikJCVRpY29tIEdlb21hdGljcywgSW5jLgotCQkJCTkxMzAgSm9sbHl2aWxsZSBSZC4gU3RlLiAzMDAKLQkJCQlBdXN0aW4gVGV4YXMgNzg3NTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLURDLTNFLTUxICAgKGhleCkJCVNvbGJlcmcgJiBBbmRlcnNlbiBBUwotREMzRTUxICAgICAoYmFzZSAxNikJCVNvbGJlcmcgJiBBbmRlcnNlbiBBUwotCQkJCUxpdGxl5XN2ZWllbiA2MQotCQkJCU4tNTEzMiBOeWJvcmcKLQkJCQlCZXJnZW4gIDUxMzIKLQkJCQlOT1JXQVkKLQotREMtNDktQzkgICAoaGV4KQkJQ0FTQ08gU0lHTkFMIExURAotREM0OUM5ICAgICAoYmFzZSAxNikJCUNBU0NPIFNJR05BTCBMVEQKLQkJCQlOby40ODkgWGl6YW5nIEJlaSBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDA3MQotCQkJCUNISU5BCi0KLURDLTRFLURFICAgKGhleCkJCVNISU5ZRUkgVEVDSE5PTE9HWSBDTy4sIExURC4KLURDNEVERSAgICAgKGJhc2UgMTYpCQlTSElOWUVJIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCi0JCQkJNi01LTIsIE1JTkFUT0pJTUEtTUlOQU1JTUFDSEksIENIVU8tS1UKLQkJCQlLT0JFIEhZT0dPIDY1MC0wMDQ3Ci0JCQkJSkFQQU4KLQotREMtNzEtNDQgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvIE1lY2hhbmljcwotREM3MTQ0ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3RybyBNZWNoYW5pY3MKLQkJCQkzMTQsIE1hZXRhbjMtRG9uZywgWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24gR3lldW5nZ2ktRG8gNDQzLTc0MwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1EQy03Qi05NCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1EQzdCOTQgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1EQy04NS1ERSAgIChoZXgpCQlBenVyZXdhdmUgVGVjaG5vbG9naWVzLiwgaW5jLgotREM4NURFICAgICAoYmFzZSAxNikJCUF6dXJld2F2ZSBUZWNobm9sb2dpZXMuLCBpbmMuCi0JCQkJOEYgLiwgTm8uOTQsIEJhb3pob25nIFJELCBTaW5kaWFuLCAKLQkJCQlOZXcgVGFpcGVpIENpdHkgIDIzMQotCQkJCVRBSVdBTiwgUFJPVklOQ0UgT0YgQ0hJTkEKLQotREMtOUItMUUgICAoaGV4KQkJSW50ZXJjb20sIEluYy4KLURDOUIxRSAgICAgKGJhc2UgMTYpCQlJbnRlcmNvbSwgSW5jLgotCQkJCVNvcmltYWNoaSBCbGRnLiwgMy01LCBUYWl0byAxLWNob21lLCAKLQkJCQlUYWl0by1rdSBUb2t5byAxMTAtODY1NAotCQkJCUpBUEFOCi0KLURDLTlDLTUyICAgKGhleCkJCVNhcHBoaXJlIFRlY2hub2xvZ3kgTGltaXRlZC4KLURDOUM1MiAgICAgKGJhc2UgMTYpCQlTYXBwaGlyZSBUZWNobm9sb2d5IExpbWl0ZWQuCi0JCQkJVW5pdCAxOTA5LTE5MTksIDE5L0YuLCBUb3dlciAyLCBHcmFuZCBDZW50cmFsIFBsYXphLAotCQkJCTEzOCBTaGF0aW4gUnVyYWwgQ29tbWl0dGVlIFJvYWQsIFNoYXRpbiwgTi5ULiwKLQkJCQlIT05HIEtPTkcKLQotREMtOUYtREIgICAoaGV4KQkJVWJpcXVpdGkgTmV0d29ya3MsIEluYy4KLURDOUZEQiAgICAgKGJhc2UgMTYpCQlVYmlxdWl0aSBOZXR3b3JrcywgSW5jLgotCQkJCTkxIEUgVGFzbWFuIERyaXZlCi0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotREMtQTYtQkQgICAoaGV4KQkJQmVpamluZyBMYW5ibyBUZWNobm9sb2d5IENvLiwgTHRkLgotRENBNkJEICAgICAoYmFzZSAxNikJCUJlaWppbmcgTGFuYm8gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tLjMwMS5CaWRnLjROTy44IFNoYW5nZGkgV2VzdCBSb2FkLCBIYWlkaWFuICBEaXN0cmljdCwKLQkJCQlCZWlqaW5nIENpdHkgIDEwMDA4NQotCQkJCUNISU5BCi0KLURDLUE3LUQ5ICAgKGhleCkJCUNvbXByZXNzb3IgQ29udHJvbHMgQ29ycAotRENBN0Q5ICAgICAoYmFzZSAxNikJCUNvbXByZXNzb3IgQ29udHJvbHMgQ29ycAotCQkJCTQ3MjUgMTIxc3QgU3RyZWV0Ci0JCQkJRGVzIE1vaW5lcyBJb3dhIDUwMzIzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EQy1BOC1DRiAgIChoZXgpCQlOZXcgU3BpbiBHb2xmLCBMTEMuCi1EQ0E4Q0YgICAgIChiYXNlIDE2KQkJTmV3IFNwaW4gR29sZiwgTExDLgotCQkJCTE2MzcgQnVyciBPYWsgRHJpdmUKLQkJCQlMaWJlcnR5dmlsbGUgSUwgNjAwNDgKLQkJCQlVTklURUQgU1RBVEVTCi0KLURDLUE5LTcxICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotRENBOTcxICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIDIvMwotCQkJCUt1bGltIEhpLVRlY2ggUGFyawotCQkJCUt1bGltIEtlZGFoIDA5MDAwCi0JCQkJTUFMQVlTSUEKLQotREMtQjQtQzQgICAoaGV4KQkJTWljcm9zb2Z0IFhDRwotRENCNEM0ICAgICAoYmFzZSAxNikJCU1pY3Jvc29mdCBYQ0cKLQkJCQkxIE1pY3Jvc29mdCBXYXkKLQkJCQlSZWRtb25kIFdBIDk4MDUyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1EQy1DMS0wMSAgIChoZXgpCQlTT0xpRCBUZWNobm9sb2dpZXMsIEluYy4KLURDQzEwMSAgICAgKGJhc2UgMTYpCQlTT0xpRCBUZWNobm9sb2dpZXMsIEluYy4KLQkJCQk5dGggRmxvb3IsIFNPTGlEIFNwYWNlLCBQYW5neW95ZW9rLXJvIDIyMAotCQkJCUJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtNDAwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLURDLUNCLUE4ICAgKGhleCkJCUV4cGxvcmEgVGVjaG5vbG9naWVzIEluYwotRENDQkE4ICAgICAoYmFzZSAxNikJCUV4cGxvcmEgVGVjaG5vbG9naWVzIEluYwotCQkJCTM2MCwgRnJhbnF1ZXQgU3RyZWV0Ci0JCQkJU3VpdGUgMjAKLQkJCQlRdWViZWMgIEcxUCA0TjMKLQkJCQlDQU5BREEKLQotREMtQ0UtNDEgICAoaGV4KQkJRkUgR0xPQkFMIEhPTkcgS09ORyBMSU1JVEVECi1EQ0NFNDEgICAgIChiYXNlIDE2KQkJRkUgR0xPQkFMIEhPTkcgS09ORyBMSU1JVEVECi0JCQkJRkxBVCAyMDQtMjA1IDIvRiBMQUZPUkQgQ0VOVFJFODM4IExBSSBDSEkgS09LIFJEIENIRVVORyBTSEEgV0FOIEtMCi0JCQkJU0hFTlpIRU4gIDUxODA1NwotCQkJCUNISU5BCi0KLURDLUNGLTk0ICAgKGhleCkJCUJlaWppbmcgUm9uZ2NoZW5nIEh1dG9uZyBUZWNobm9sb2d5IENvLiwgTHRkLgotRENDRjk0ICAgICAoYmFzZSAxNikJCUJlaWppbmcgUm9uZ2NoZW5nIEh1dG9uZyBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCVJvb20gNDAxQSxCdWlsZGluZyBOby40LFlhcmQgTm8uNSwKLQkJCQlZb25nZmVuZyBSb2FkLCBIYWlkaWFuIERpc3RyaWN0Ci0JCQkJQmVpamluZyAgMTAwMDI0Ci0JCQkJQ0hJTkEKLQotREMtRDAtRjcgICAoaGV4KQkJQmVudGVrIFN5c3RlbXMgTHRkLgotRENEMEY3ICAgICAoYmFzZSAxNikJCUJlbnRlayBTeXN0ZW1zIEx0ZC4KLQkJCQkzMTUgLSAzNzUwIDQ2dGggQXZlLiBTRQotCQkJCUNhbGdhcnkgQUIgVDJCIDBMMQotCQkJCUNBTkFEQQotCi1EQy1EMy0yMSAgIChoZXgpCQlIVU1BWCBjby4sdGxkCi1EQ0QzMjEgICAgIChiYXNlIDE2KQkJSFVNQVggY28uLHRsZAotCQkJCUhVTUFYIFZpbGxhZ2UsIDExLTQsIFN1bmFlLWRvbmcsIEJ1bmRhbmctZ3UKLQkJCQlTZW9uZ25hbS1zaSBHeWVvbmdnaS1kbyA0NjMtODI1Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLURDLUQ4LTdGICAgKGhleCkJCVNoZW56aGVuIEpvaW5DeWJlciBUZWxlY29tIEVxdWlwbWVudCBMdGQKLURDRDg3RiAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBKb2luQ3liZXIgVGVsZWNvbSBFcXVpcG1lbnQgTHRkCi0JCQkJMTlDREUsIEJsb2NrIEEsSmluRmVuZ0J1aWxkaW5nLHNoYW5nYnUgU291dGggUm9hZCxGdXRpYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODAzMQotCQkJCUNISU5BCi0KLURDLURFLUNBICAgKGhleCkJCUFreWxsb3IKLURDREVDQSAgICAgKGJhc2UgMTYpCQlBa3lsbG9yCi0JCQkJQnJpdGFubmlhIEhvdXNlLCAyMiwgMkYsIENhdG9yIFJvYWQKLQkJCQlCYW5kYXIgU2VyaSBCZWdhd2FuIEJTICA4ODExCi0JCQkJQlJVTkVJIERBUlVTU0FMQU0KLQotREMtRTItQUMgICAoaGV4KQkJTHVtZW5zIERpZ2l0YWwgT3B0aWNzIEluYy4KLURDRTJBQyAgICAgKGJhc2UgMTYpCQlMdW1lbnMgRGlnaXRhbCBPcHRpY3MgSW5jLgotCQkJCTVGLCBOby4zNSwgU2ludGFpIFJkLiwgSmh1YmVpIENpdHkKLQkJCQlKaHViZWkgIEhzaW5DaHUgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1EQy1FNy0xQyAgIChoZXgpCQlBVUcgRWxla3Ryb25payBHbWJICi1EQ0U3MUMgICAgIChiYXNlIDE2KQkJQVVHIEVsZWt0cm9uaWsgR21iSAotCQkJCUtsZWlud29lbGxtaXNzIDUzCi0JCQkJU3QuIE1hcnRpbiBhLiBXLiBTdHlyaWEgQS04NTgwCi0JCQkJQVVTVFJJQQotCi1EQy1GMC01RCAgIChoZXgpCQlMZXR0YSBUZWtub2xvamkKLURDRjA1RCAgICAgKGJhc2UgMTYpCQlMZXR0YSBUZWtub2xvamkKLQkJCQlUVUJJVEFLIFRla25vbG9qaSBHZWxpc3Rpcm1lIEJvbGdlc2kKLQkJCQlDIEJsb2sgTm86MjYgR0VCWkUKLQkJCQlLT0NBRUxJICA0MTQ1NQotCQkJCVRVUktFWQotCi1EQy1GOC01OCAgIChoZXgpCQlMb3JlbnQgTmV0d29ya3OjrCBJbmMuCi1EQ0Y4NTggICAgIChiYXNlIDE2KQkJTG9yZW50IE5ldHdvcmtzo6wgSW5jLgotCQkJCVRoaXJkIEZsb29yLCBUZWNobm9sb2d5IENvbXBsZXgsIEhBTyBTY2llbmNlIFBhcmsKLQkJCQkxNyBTaGVuaGFpIFJkLiwgTmFuaGFpIERpc3RyaWN0IAotCQkJCUZvc2hhbiBHdWFuZ2RvbmcgUHJvdmluY2UgNTI4MjAwCi0JCQkJQ0hJTkEKLQotREMtRkEtRDUgICAoaGV4KQkJU1RST05HIEdlcy5tLmIuSC4KLURDRkFENSAgICAgKGJhc2UgMTYpCQlTVFJPTkcgR2VzLm0uYi5ILgotCQkJCUZyYW56LUpvc2Vmcy1LYWkgMQotCQkJCVZpZW5uYSAgMTAxMAotCQkJCUFVU1RSSUEKLQotRTAtMDUtQzUgICAoaGV4KQkJVFAtTElOSyBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLUUwMDVDNSAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sTHRkLgotCQkJCUJ1aWxkaW5nIDcsIFNlY29uZCBQYXJ0LCBIb25naHVhbGluZyBJbmR1c3RyaWFsIFpvbmUKLQkJCQlYaWxpIHRvd24sIE5hbnNoYW4sIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMDAKLQkJCQlDSElOQQotCi1FMC0wNi1FNiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi1FMDA2RTYgICAgIChiYXNlIDE2KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLgotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsCi0JCQkJU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgMjAxNjEzCi0JCQkJQ0hJTkEKLQotRTAtMEItMjggICAoaGV4KQkJSW5vdm9uaWNzCi1FMDBCMjggICAgIChiYXNlIDE2KQkJSW5vdm9uaWNzCi0JCQkJMzE1IENUQyBCbHZkCi0JCQkJTG91aXN2aWxsZSBDTyA4MDAyNwotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtMEMtN0YgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi1FMDBDN0YgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotRTAtMTQtM0UgICAoaGV4KQkJTW9kb29zaXMgSW5jLgotRTAxNDNFICAgICAoYmFzZSAxNikJCU1vZG9vc2lzIEluYy4KLQkJCQkjMzAyLCBTYW1pbCBCbGRnLiwgNjU2LTI4MgotCQkJCVNlb25nc29vLWRvbmcgMSBnYSwgU2Vvbmdkb25nLWd1Ci0JCQkJU2VvdWwgIDEzMy0xMTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTAtMUMtNDEgICAoaGV4KQkJQWVyb2hpdmUgTmV0d29ya3MgSW5jLgotRTAxQzQxICAgICAoYmFzZSAxNikJCUFlcm9oaXZlIE5ldHdvcmtzIEluYy4KLQkJCQkzMzAgR2licmFsdGFyIERyaXZlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC0xQy1FRSAgIChoZXgpCQlCcmF2byBUZWNoLCBJbmMuCi1FMDFDRUUgICAgIChiYXNlIDE2KQkJQnJhdm8gVGVjaCwgSW5jLgotCQkJCTYxODUgUGh5bGxpcyBEci4gVW5pdCBELgotCQkJCUN5cHJlc3MgQ0EgOTA2MzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLTFFLTA3ICAgKGhleCkJCUFuaXRlIFRlbGVjb21zICBVUy4gSW5jCi1FMDFFMDcgICAgIChiYXNlIDE2KQkJQW5pdGUgVGVsZWNvbXMgIFVTLiBJbmMKLQkJCQkxMDYgVmlzdGEgQ2VudHJlIERyCi0JCQkJRm9yZXN0IFZBIDI0NTUxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC0xRi0wQSAgIChoZXgpCQlYc2xlbnQgRW5lcmd5IFRlY2hub2xvZ2llcy4gTExDCi1FMDFGMEEgICAgIChiYXNlIDE2KQkJWHNsZW50IEVuZXJneSBUZWNobm9sb2dpZXMuIExMQwotCQkJCTc0MjggUmVkd29vZCBCbHZkCi0JCQkJU3VpdGUgMTAyCi0JCQkJTm92YXRvIENBIDk0OTQ1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC0yNC03RiAgIChoZXgpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLUUwMjQ3RiAgICAgKGJhc2UgMTYpCQlIVUFXRUkgVEVDSE5PTE9HSUVTIENPLixMVEQKLQkJCQlIdWF3ZWkgaW5kdXN0cmlhbCBiYXNlLEJhbnRpYW4sTG9uZ2dhbmcKLQkJCQlTaGVuWmhlbiBHdWFuZ0RvbmcgNTE4MTI5Ci0JCQkJQ0hJTkEKLQotRTAtMjUtMzggICAoaGV4KQkJVGl0YW4gUGV0IFByb2R1Y3RzCi1FMDI1MzggICAgIChiYXNlIDE2KQkJVGl0YW4gUGV0IFByb2R1Y3RzCi0JCQkJNjUyMSBDcmVlZG1vb3IgUmQuIFN1aXRlIDEwMQotCQkJCVJhbGVpZ2ggTkMgMjc2MTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLTI2LTMwICAgKGhleCkJCUludHJpZ3VlIFRlY2hub2xvZ2llcywgSW5jLgotRTAyNjMwICAgICAoYmFzZSAxNikJCUludHJpZ3VlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTgwMCBPbGQgUG9uZCBSb2FkCi0JCQkJIzcwNQotCQkJCUJyaWRnZXZpbGxlIFBBIDE1MDE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC0yNi0zNiAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLUUwMjYzNiAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlDQVJSRVRFUkEgQkFTRSBBRVJFQSAjIDU4NTAKLQkJCQlaYXBvcGFuIEphbGlzY28gNDQxMzAKLQkJCQlNRVhJQ08KLQotRTAtMjctMUEgICAoaGV4KQkJVFRDIE5leHQtZ2VuZXJhdGlvbiBIb21lIE5ldHdvcmsgU3lzdGVtIFdHCi1FMDI3MUEgICAgIChiYXNlIDE2KQkJVFRDIE5leHQtZ2VuZXJhdGlvbiBIb21lIE5ldHdvcmsgU3lzdGVtIFdHCi0JCQkJMS0xLTEyIFNoaWJhIEtvdWVuCi0JCQkJTWluYXRvLWt1IFRva3lvIDEwNS0wMDExCi0JCQkJSkFQQU4KLQotRTAtMkEtODIgICAoaGV4KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi1FMDJBODIgICAgIChiYXNlIDE2KQkJVW5pdmVyc2FsIEdsb2JhbCBTY2llbnRpZmljIEluZHVzdHJpYWwgQ28uLCBMdGQuCi0JCQkJMTQxLCBMQU5FIDM1MSwgU0VDLjEsIFRBSVBJTkcgUkQuCi0JCQkJVFNBT1RVRU4KLQkJCQlOQU5UT1UgNTQyNjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLTMwLTA1ICAgKGhleCkJCUFsY2F0ZWwtTHVjZW50IFNoYW5naGFpIEJlbGwgQ28uLCBMdGQgCi1FMDMwMDUgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQgU2hhbmdoYWkgQmVsbCBDby4sIEx0ZCAKLQkJCQlQdWRvbmcgSmlucWlhbwotCQkJCVNoYW5naGFpICAyMDEyMDYKLQkJCQlDSElOQQotCi1FMC0zOS1ENyAgIChoZXgpCQlQbGV4eGksIEluYy4KLUUwMzlENyAgICAgKGJhc2UgMTYpCQlQbGV4eGksIEluYy4KLQkJCQkxMDAgSW5ub3ZhdGl2ZSBXYXkgU3VpdGUgMzMyMgotCQkJCVN1aXRlIDMzMjIKLQkJCQlOYXNodWEgTkggMDMwNjIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLTNDLTVCICAgKGhleCkJCVNIRU5aSEVOIEpJQVhJTkpJRSBFTEVDVFJPTiBDTy4sTFRECi1FMDNDNUIgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gSklBWElOSklFIEVMRUNUUk9OIENPLixMVEQKLQkJCQlTaGVuemhlbiBKaWF4aW5qaWUgU2VjdXJpdHkgSW5kdXN0cmlhbCBwYXJrLE5vIDYgWGluIEhlIFhpbiB4aW5nIEluZHVzdHJpYWwgUGFyaywgRnV5b25nIFRvd24sQmFvJ2FuIERpc3RyaWN0IAotCQkJCVNIRU5aSEVOIEdVQU5HRE9ORyA1MTgxMDMKLQkJCQlDSElOQQotCi1FMC0zRS03RCAgIChoZXgpCQlkYXRhLWNvbXBsZXggR21iSAotRTAzRTdEICAgICAoYmFzZSAxNikJCWRhdGEtY29tcGxleCBHbWJICi0JCQkJRPxzdGVybmdyYWJlbiA3Ci0JCQkJSGFsYmVyc3RhZHQgU2FjaHNlbi1BbmhhbHQgMzg4MjAKLQkJCQlHRVJNQU5ZCi0KLUUwLTQ2LTlBICAgKGhleCkJCU5FVEdFQVIKLUUwNDY5QSAgICAgKGJhc2UgMTYpCQlORVRHRUFSCi0JCQkJMzUwIEVBU1QgUExVTUVSSUEgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQUxJRk9STklBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC01OC05RSAgIChoZXgpCQlMYWVyZGFsIE1lZGljYWwKLUUwNTg5RSAgICAgKGJhc2UgMTYpCQlMYWVyZGFsIE1lZGljYWwKLQkJCQlUYW5rZSBTdmlsYW5kc2dhdGUgMzAKLQkJCQlTdGF2YW5nZXIgIDQwMDIKLQkJCQlOT1JXQVkKLQotRTAtNUItNzAgICAoaGV4KQkJSW5ub3ZpZCwgQ28uLCBMdGQuCi1FMDVCNzAgICAgIChiYXNlIDE2KQkJSW5ub3ZpZCwgQ28uLCBMdGQuCi0JCQkJNXRoIEZsb29yLCBCb2dhIEJ1aWxkaW5nLCA4MjEtMywgQmFuZ2JhZWRvbmcsIFNlb2Nob2d1Ci0JCQkJU2VvdWwgIDEzNy0wNjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTAtNUQtQTYgICAoaGV4KQkJRGV0bGVmIEZpbmsgRWxla3Ryb25payAmYW1wOyBTb2Z0d2FyZWVudHdpY2tsdW5nCi1FMDVEQTYgICAgIChiYXNlIDE2KQkJRGV0bGVmIEZpbmsgRWxla3Ryb25payAmYW1wOyBTb2Z0d2FyZWVudHdpY2tsdW5nCi0JCQkJQnLvv71obHN0cmHvv71lIDEzCi0JCQkJTe+/vXNzaW5nZW4gIDcyMTE2Ci0JCQkJR0VSTUFOWQotCi1FMC01Ri1COSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1FMDVGQjkgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC02MS1CMiAgIChoZXgpCQlIQU5HWkhPVSBaRU5PSU5URUwgVEVDSE5PTE9HWSBDTy4sIExURAotRTA2MUIyICAgICAoYmFzZSAxNikJCUhBTkdaSE9VIFpFTk9JTlRFTCBURUNITk9MT0dZIENPLiwgTFRECi0JCQkJUm9vbSA4MDYsIEYjLCBDYW1icmlkZ2UgQ29tYnJpZGdlLCBTaGVuaHVhIFJvYWQsRGlzdHJpY3QgWGlodSwgCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDMwCi0JCQkJQ0hJTkEKLQotRTAtNjItOTAgICAoaGV4KQkJSmluYW4gSm92aXNpb24gU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1FMDYyOTAgICAgIChiYXNlIDE2KQkJSmluYW4gSm92aXNpb24gU2NpZW5jZSAmIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJUm9vbSA0MDcsIFRvd2VyIEMsIEN5YmVyIFBvcnQgQnVpbGRpbmcsCi0JCQkJNDcgU2hhbmRhIFJkCi0JCQkJSmluYW4gU2hhbmRvbmcgMjUwMDEzCi0JCQkJQ0hJTkEKLQotRTAtNjQtQkIgICAoaGV4KQkJRGlnaVZpZXcgUy5yLmwuCi1FMDY0QkIgICAgIChiYXNlIDE2KQkJRGlnaVZpZXcgUy5yLmwuCi0JCQkJVmlhIFNlbmlnYWxsaWEgMTgvMgotCQkJCU1pbGFubyAgMjAxNjEKLQkJCQlJVEFMWQotCi1FMC02OS05NSAgIChoZXgpCQlQRUdBVFJPTiBDT1JQT1JBVElPTgotRTA2OTk1ICAgICAoYmFzZSAxNikJCVBFR0FUUk9OIENPUlBPUkFUSU9OCi0JCQkJTm8uIDc2LCBMaWdvbmcgU3QuLCBCZWl0b3UsIAotCQkJCVRhaXBlaSAgMTEyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FMC04Ny1CMSAgIChoZXgpCQlOYXRhLUluZm8gTHRkLgotRTA4N0IxICAgICAoYmFzZSAxNikJCU5hdGEtSW5mbyBMdGQuCi0JCQkJMjgsIFByb2tob3JvdmEgc3RyLgotCQkJCVlvc2hrYXItT2xhIFJlcHVibGljIE1hcmktRWwgNDI0MDA3Ci0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLUUwLThBLTdFICAgKGhleCkJCUV4cG9uZW50Ci1FMDhBN0UgICAgIChiYXNlIDE2KQkJRXhwb25lbnQKLQkJCQkxNDkgQ29tbW9ud2VhbHRoIERyaXZlCi0JCQkJTWVubG8gUGFyayBDQSA5NDAyNQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtOEYtRUMgICAoaGV4KQkJUkVQT1RFQyBDTy4sIExURC4KLUUwOEZFQyAgICAgKGJhc2UgMTYpCQlSRVBPVEVDIENPLiwgTFRELgotCQkJCTNGLCAyNTguIAotCQkJCUxJQU4gQ0hFTiBSRC4gCi0JCQkJQ0hVTkcgSE8gQ0lUWSwgVEFJUEVJIENPVU5UWSAgMjM1Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FMC05MS01MyAgIChoZXgpCQlYQVZpIFRlY2hub2xvZ2llcyBDb3JwLgotRTA5MTUzICAgICAoYmFzZSAxNikJCVhBVmkgVGVjaG5vbG9naWVzIENvcnAuCi0JCQkJOUYsIE5vLiAxMjksIEhzaW5nIFRlIFJkLCBTYW5jaHVuZyBDaXR5Ci0JCQkJVGFpcGVpICAyNDEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLTkxLUY1ICAgKGhleCkJCU5FVEdFQVIKLUUwOTFGNSAgICAgKGJhc2UgMTYpCQlORVRHRUFSCi0JCQkJMzUwIEVBU1QgUExVTUVSSUEgRFJJVkUKLQkJCQlTQU4gSk9TRSBDQUxJRk9STklBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC05NC02NyAgIChoZXgpCQlJbnRlbCBDb3Jwb3JhdGUKLUUwOTQ2NyAgICAgKGJhc2UgMTYpCQlJbnRlbCBDb3Jwb3JhdGUKLQkJCQlMb3QgOCwgSmFsYW4gSGktVGVjaCAyLzMKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLUUwLTk1LTc5ICAgKGhleCkJCU9SVEhPc29mdCBpbmMsIGQvYi9hIFppbW1lciBDQVMKLUUwOTU3OSAgICAgKGJhc2UgMTYpCQlPUlRIT3NvZnQgaW5jLCBkL2IvYSBaaW1tZXIgQ0FTCi0JCQkJNzUgUXVlZW4gU3RyZWV0LCBTdWl0ZSAzMzAwCi0JCQkJTW9udHJlYWwgUXVlYmVjIEgzQyAyTjYKLQkJCQlDQU5BREEKLQotRTAtOUQtQjggICAoaGV4KQkJUExBTkVYIENPTU1VTklDQVRJT05TIElOQy4KLUUwOURCOCAgICAgKGJhc2UgMTYpCQlQTEFORVggQ09NTVVOSUNBVElPTlMgSU5DLgotCQkJCVBsYW5leCBWb2x0YSBCbGRnLiwgMi0xMS05IEViaXN1LU5pc2hpLFNoaWJ1eWEta3UsCi0JCQkJVG9reW8gMTUwMDAyMQotCQkJCUpBUEFOCi0KLUUwLUExLUQ3ICAgKGhleCkJCVNGUgotRTBBMUQ3ICAgICAoYmFzZSAxNikJCVNGUgotCQkJCTQwLzQyIFF1YWkgZHUgcG9pbnQgZHUgam91cgotCQkJCUJvdWxvZ25lIEJpbGxhbmNvdXJ0IEhhdXRzIGRlIFNlaW5lIDkyNjU5Ci0JCQkJRlJBTkNFCi0KLUUwLUEzLTBGICAgKGhleCkJCVBldmNvCi1FMEEzMEYgICAgIChiYXNlIDE2KQkJUGV2Y28KLQkJCQkxNDAxIFRhbmdpZXIgRHJpdmUKLQkJCQlCYWx0aW1vcmUgTUQgMjEyMjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLUE2LTcwICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1FMEE2NzAgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSAgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLUUwLUFBLUIwICAgKGhleCkJCUdFTkVSQUwgVklTSU9OIEVMRUNUUk9OSUNTIENPLiBMVEQuCi1FMEFBQjAgICAgIChiYXNlIDE2KQkJR0VORVJBTCBWSVNJT04gRUxFQ1RST05JQ1MgQ08uIExURC4KLQkJCQlSb29tIDYwNSwgV2VzdCBCbG9jayAyMDMsIFRhaXJhbiBJbmR1c3RyaWFsIFpvbmUKLQkJCQlGdXRpYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDQwCi0JCQkJQ0hJTkEKLQotRTAtQUItRkUgICAoaGV4KQkJT3JiIE5ldHdvcmtzLCBJbmMuCi1FMEFCRkUgICAgIChiYXNlIDE2KQkJT3JiIE5ldHdvcmtzLCBJbmMuCi0JCQkJNDI4IDEzdGggU3RyZWV0Ci0JCQkJM3JkIEZsb29yCi0JCQkJT2FrbGFuZCBDQSA5NDYxMgotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtQUUtNUUgICAoaGV4KQkJQUxQUyBFbGVjdHJpYyBDbywuIEx0ZC4KLUUwQUU1RSAgICAgKGJhc2UgMTYpCQlBTFBTIEVsZWN0cmljIENvLC4gTHRkLgotCQkJCTYtMy0zNiBGdXJ1a2F3YW5ha2F6YXRvLAotCQkJCU9zYWtpIE1peWFnaS1wcmVmIDk4OS02MTgxCi0JCQkJSkFQQU4KLQotRTAtQjktQTUgICAoaGV4KQkJQXp1cmV3YXZlCi1FMEI5QTUgICAgIChiYXNlIDE2KQkJQXp1cmV3YXZlCi0JCQkJOEYuLCBCYW96aG9uZyBSZC4KLQkJCQlYaW5kaWFuIENpdHkgVGFpcGVpIENvdW50eSAyMzEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLUI5LUJBICAgKGhleCkJCUFwcGxlLCBJbmMuCi1FMEI5QkEgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLUJDLTQzICAgKGhleCkJCUMyIE1pY3Jvc3lzdGVtcywgSW5jLgotRTBCQzQzICAgICAoYmFzZSAxNikJCUMyIE1pY3Jvc3lzdGVtcywgSW5jLgotCQkJCTI4MzMgSnVuY3Rpb24gQXZlbnVlCi0JCQkJU3VpdGUgMTAxCi0JCQkJU2FuIEpvc2UgQ2FsaWZvcm5pYSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtQzItODYgICAoaGV4KQkJQWlzYWkgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiwgTHRkLgotRTBDMjg2ICAgICAoYmFzZSAxNikJCUFpc2FpIENvbW11bmljYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZC4KLQkJCQlSb29tIDI2MTAgQXNpYSBUcmFkZSBDZW50cmUsCi0JCQkJNzkgTGkgTXVrIFJvYWQsCi0JCQkJS3dhaSBDaHVuZyBOLlQuIDg1MgotCQkJCUhPTkcgS09ORwotCi1FMC1DOS0yMiAgIChoZXgpCQlKaXJlaCBFbmVyZ3kgVGVjaC4sIEx0ZC4KLUUwQzkyMiAgICAgKGJhc2UgMTYpCQlKaXJlaCBFbmVyZ3kgVGVjaC4sIEx0ZC4KLQkJCQkjNjA2IFNlb3VsIEZvcmVzdCBIYWxsYXNpZ21hdmFsbGV5LCAzMjUtMgotCQkJCVNlb25nc3UtZG9uZyAyKGkpLWdhLCAKLQkJCQlTZW91bCBTZW9uZ2RvbmctR3UgMTMzLTEyMAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FMC1DQS00RCAgIChoZXgpCQlTaGVuemhlbiBVbmlzdGFyIENvbW11bmljYXRpb24gQ28uLExURAotRTBDQTREICAgICAoYmFzZSAxNikJCVNoZW56aGVuIFVuaXN0YXIgQ29tbXVuaWNhdGlvbiBDby4sTFRECi0JCQkJOS9GLFFpbmdoYWkgQnVpbGRpbmcsNzA0MywgQmVyaHVhbiBSb2FkLCBGdXRpYW4gRGlzdHJpY3QsIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwMzQKLQkJCQlDSElOQQotCi1FMC1DQS05NCAgIChoZXgpCQlBc2tleSBDb21wdXRlcgotRTBDQTk0ICAgICAoYmFzZSAxNikJCUFza2V5IENvbXB1dGVyCi0JCQkJMTBGLE5PLjExOSxDSElFTktBTkcgUkQsQ0hVTkctSE8gQ0lUWSwgCi0JCQkJVEFJUEVJIENPVU5UWSAyMzU4NQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTAtQ0ItMUQgICAoaGV4KQkJUFJJVkFURQotRTBDQjFEICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi1FMC1DQi00RSAgIChoZXgpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLUUwQ0I0RSAgICAgKGJhc2UgMTYpCQlBU1VTVGVrIENPTVBVVEVSIElOQy4KLQkJCQkxNSxMaS1UZSBSZC4sUGVpdG91LCAKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTAtQ0YtMkQgICAoaGV4KQkJR2VtaW50ZWsgQ29ycG9yYXRpb24KLUUwQ0YyRCAgICAgKGJhc2UgMTYpCQlHZW1pbnRlayBDb3Jwb3JhdGlvbgotCQkJCTVGLTEsIE5vLjgsIEFsbGV5IDMwLCBMYW5lIDM1OCwgUnVlaWd1YW5nIFJkLgotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FMC1EMS0wQSAgIChoZXgpCQlLYXRvdWRlbmtpa291Z3lvdXN5byBjbyBsdGQKLUUwRDEwQSAgICAgKGJhc2UgMTYpCQlLYXRvdWRlbmtpa291Z3lvdXN5byBjbyBsdGQKLQkJCQlvdWppaG9udHlvdTEtNC0xMwotCQkJCWtpdGEta3UgdG9reW8tdG8gMTE0LTAwMjIKLQkJCQlKQVBBTgotCi1FMC1ENy1CQSAgIChoZXgpCQlUZXhhcyBJbnN0cnVtZW50cwotRTBEN0JBICAgICAoYmFzZSAxNikJCVRleGFzIEluc3RydW1lbnRzCi0JCQkJMTI1MDAgVEkgQm91bGV2YXJkCi0JCQkJTVMgODcyMwotCQkJCURhbGxhcyBUZXhhcyA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtREEtREMgICAoaGV4KQkJSlZDIEtFTldPT0QgQ29ycG9yYXRpb24KLUUwREFEQyAgICAgKGJhc2UgMTYpCQlKVkMgS0VOV09PRCBDb3Jwb3JhdGlvbgotCQkJCTMtMTIsIE1vcml5YWNobywgS2FuYWdhd2Eta3UKLQkJCQlZb2tvaGFtYS1zaGkgS2FuYWdhd2EgMjIxLTAwMjIKLQkJCQlKQVBBTgotCi1FMC1EQi01NSAgIChoZXgpCQlEZWxsIEluYwotRTBEQjU1ICAgICAoYmFzZSAxNikJCURlbGwgSW5jCi0JCQkJT25lIERlbGwgd2F5Ci0JCQkJTVM6IFJSNS00NQotCQkJCVJvdW5kIFJvY2sgIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1FMC1FNy01MSAgIChoZXgpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLUUwRTc1MSAgICAgKGJhc2UgMTYpCQlOaW50ZW5kbyBDby4sIEx0ZC4KLQkJCQkxMS0xIEhPS09UQVRFLUNITwotCQkJCUtBTUlUT0JBLCBNSU5BTUktS1UKLQkJCQlLWU9UTyAgNjAxLTg1MDEKLQkJCQlKQVBBTgotCi1FMC1FOC1FOCAgIChoZXgpCQlPbGl2ZSBUZWxlY29tbXVuaWNhdGlvbiBQdnQuIEx0ZAotRTBFOEU4ICAgICAoYmFzZSAxNikJCU9saXZlIFRlbGVjb21tdW5pY2F0aW9uIFB2dC4gTHRkCi0JCQkJODYyLCBVZHlvZyBWaWhhcgotCQkJCVBoYXNlIC0gVgotCQkJCUd1cmdhb24gSGFyeWFuYSAxMjIwMTYKLQkJCQlJTkRJQQotCi1FMC1FRC0xQSAgIChoZXgpCQl2YXN0cml2ZXIgVGVjaG5vbG9neSBDby4sIEx0ZAotRTBFRDFBICAgICAoYmFzZSAxNikJCXZhc3RyaXZlciBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJQS02QSBLZXNoaSBCdWlsZGluZyxOby4yOCxYaW54aSBSb2FkLEhhaWRpYW4sCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotRTAtRUUtMUIgICAoaGV4KQkJUGFuYXNvbmljIEF1dG9tb3RpdmUgU3lzdGVtcyBDb21wYW55IG9mIEFtZXJpY2EKLUUwRUUxQiAgICAgKGJhc2UgMTYpCQlQYW5hc29uaWMgQXV0b21vdGl2ZSBTeXN0ZW1zIENvbXBhbnkgb2YgQW1lcmljYQotCQkJCTc3NiBIaWdod2F5IDc0IFNvdXRoCi0JCQkJUGVhY2h0cmVlIENpdHkgR2VvcmdpYSAzMDI2OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTAtRUYtMjUgICAoaGV4KQkJTGludGVzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1FMEVGMjUgICAgIChiYXNlIDE2KQkJTGludGVzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJOUYtMS4sIE5vLjE1MCwgSmlhbiAxc3QgUmQuLCBaaG9uZ2hlIERpc3QuLCAKLQkJCQkgTmV3IFRhaXBlaSBDaXR5ICAgMjM1MTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUUwLUYyLTExICAgKGhleCkJCURpZ2l0YWx3YXR0Ci1FMEYyMTEgICAgIChiYXNlIDE2KQkJRGlnaXRhbHdhdHQKLQkJCQlWaWEgRGFudGUsIDE4Ci0JCQkJUmVuYXRlIEJyaWFuemEgTUIgMjAwNTUKLQkJCQlJVEFMWQotCi1FMC1GMy03OSAgIChoZXgpCQlWYWRkaW8KLUUwRjM3OSAgICAgKGJhc2UgMTYpCQlWYWRkaW8KLQkJCQk5NDMzIFNjaWVuY2UgQ2VudGVyIERyaXZlCi0JCQkJTmV3IEhvcGUgTU4gNTU0MjgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLUY4LTQ3ICAgKGhleCkJCUFwcGxlLCBJbmMuCi1FMEY4NDcgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUUwLUY5LUJFICAgKGhleCkJCUNsb3VkZW5hIENvcnAuCi1FMEY5QkUgICAgIChiYXNlIDE2KQkJQ2xvdWRlbmEgQ29ycC4KLQkJCQk2Ri4sIE5vLiA1LCBBbGxleSAyMiwgTGFuZSA1MTMKLQkJCQlSdWlndWFuZyBSb2FkCi0JCQkJVGFpcGVpIENpdHkgIDExNAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTQtMTEtNUIgICAoaGV4KQkJSGV3bGV0dCBQYWNrYXJkCi1FNDExNUIgICAgIChiYXNlIDE2KQkJSGV3bGV0dCBQYWNrYXJkCi0JCQkJMTE0NDUgQ29tcGFxIENlbnRlciBEcml2ZQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LTEyLTg5ICAgKGhleCkJCXRvcHN5c3RlbSBTeXN0ZW1oYXVzIEdtYkgKLUU0MTI4OSAgICAgKGJhc2UgMTYpCQl0b3BzeXN0ZW0gU3lzdGVtaGF1cyBHbWJICi0JCQkJTW9ubmV0c3RyYd9lIDI0Ci0JCQkJV/xyc2VsZW4gTlJXIDUyMTQ2Ci0JCQkJR0VSTUFOWQotCi1FNC0xQy00QiAgIChoZXgpCQlWMiBURUNITk9MT0dZLCBJTkMuCi1FNDFDNEIgICAgIChiYXNlIDE2KQkJVjIgVEVDSE5PTE9HWSwgSU5DLgotCQkJCTQ0NTAgRW50ZXJwcmlzZSBTdHJlZXQKLQkJCQlTdWl0ZSAxMDEKLQkJCQlGcmVtb250IENhbGlmb3JuaWEgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LTFGLTEzICAgKGhleCkJCUlCTSBDb3JwCi1FNDFGMTMgICAgIChiYXNlIDE2KQkJSUJNIENvcnAKLQkJCQkzMDM5IEUgQ29ybndhbGxpcyBSZAotCQkJCVAuTy4gQk9YIDEyMTk1Ci0JCQkJUmVzZWFyY2ggVHJpYW5nbGUgUGFyayBOQyAyNzcwOS0yMTk1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC0yNS1FOSAgIChoZXgpCQlDb2xvci1DaGlwCi1FNDI1RTkgICAgIChiYXNlIDE2KQkJQ29sb3ItQ2hpcAotCQkJCVRhdm9yIEJ1aWxkaW5nIDEKLQkJCQlQIE8gQm94IDE1OAotCQkJCU5ldyBJbmR1c3RyaWFsIFBhcmsgWW9rbmVhbSAyMDY5MgotCQkJCUlTUkFFTAotCi1FNC0yNy03MSAgIChoZXgpCQlTbWFydGxhYnMKLUU0Mjc3MSAgICAgKGJhc2UgMTYpCQlTbWFydGxhYnMKLQkJCQk3MiwgT2t0eWFicnNrYXlhIFN0cmVldAotCQkJCU1vc2NvdyAgMTI3NTIxCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLUU0LTJBLUQzICAgKGhleCkJCU1hZ25ldGkgTWFyZWxsaSBTLnAuQS4gUG93ZXJ0cmFpbgotRTQyQUQzICAgICAoYmFzZSAxNikJCU1hZ25ldGkgTWFyZWxsaSBTLnAuQS4gUG93ZXJ0cmFpbgotCQkJCVZpYSBkZWwgVGltYXZvIDMzCi0JCQkJQm9sb2duYSAgNDAxMjgKLQkJCQlJVEFMWQotCi1FNC0yQy01NiAgIChoZXgpCQlMaWxlZSBTeXN0ZW1zLCBMdGQuCi1FNDJDNTYgICAgIChiYXNlIDE2KQkJTGlsZWUgU3lzdGVtcywgTHRkLgotCQkJCTI5MDUgU3RlbmRlciBXYXksIFN1aXRlIDc4Ci0JCQkJU2FudGEgQ2xhcmEgQ0EgOTUwNTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LTJGLUY2ICAgKGhleCkJCVVuaWNvcmUgY29tbXVuaWNhdGlvbiBJbmMuCi1FNDJGRjYgICAgIChiYXNlIDE2KQkJVW5pY29yZSBjb21tdW5pY2F0aW9uIEluYy4KLQkJCQlSbS4zMTIgQnVpbGRpbmcgMiBJUklDTywgTm8uMTFTdC40LFNoYW5nZGksIEhhaWRpYW4gRGlzdHJpY3QsCi0JCQkJQmVpamluZyAgMTAwMDg1Ci0JCQkJQ0hJTkEKLQotRTQtMzUtOTMgICAoaGV4KQkJSGFuZ3pob3UgR29UbyB0ZWNobm9sb2d5IENvLkx0ZAotRTQzNTkzICAgICAoYmFzZSAxNikJCUhhbmd6aG91IEdvVG8gdGVjaG5vbG9neSBDby5MdGQKLQkJCQlSb29tMTMwMyxCb2VlIGJ1aWxkaW5nLDM3NjAgTmFuaHVhbiBSb2FkLCBCaW5qaWFuZywgCi0JCQkJSGFuZ3pob3UgWmhlamlhbmcgMzEwMDUzCi0JCQkJQ0hJTkEKLQotRTQtMzUtRkIgICAoaGV4KQkJU2FicmUgVGVjaG5vbG9neSAoSHVsbCkgTHRkCi1FNDM1RkIgICAgIChiYXNlIDE2KQkJU2FicmUgVGVjaG5vbG9neSAoSHVsbCkgTHRkCi0JCQkJM2EgTmV3bGFuZHMgU2NpZW5jZSBQYXJrCi0JCQkJSW5nbGVtaXJlIExhbmUKLQkJCQlIdWxsIEVhc3QgWW9ya3NoaXJlIEhVNiA3VFEKLQkJCQlVTklURUQgS0lOR0RPTQotCi1FNC0zNy1ENyAgIChoZXgpCQlIRU5SSSBERVBBRVBFIFMuQS5TLgotRTQzN0Q3ICAgICAoYmFzZSAxNikJCUhFTlJJIERFUEFFUEUgUy5BLlMuCi0JCQkJNzUvNzcgUlVFIERVIFBSRSBCUk9DSEVUCi0JCQkJU0FOTk9JUyAgOTUxMTIKLQkJCQlGUkFOQ0UKLQotRTQtNDEtRTYgICAoaGV4KQkJT3R0ZWMgVGVjaG5vbG9neSBHbWJICi1FNDQxRTYgICAgIChiYXNlIDE2KQkJT3R0ZWMgVGVjaG5vbG9neSBHbWJICi0JCQkJUGxhbmV0ZW5yaW5nIDEyCi0JCQkJUm9ubmVuYmVyZyBMb3dlciBTYXhvbnkgMzA5NTIKLQkJCQlHRVJNQU5ZCi0KLUU0LTQ2LUJEICAgKGhleCkJCUMmQyBURUNITklDIFRBSVdBTiBDTy4sIExURC4KLUU0NDZCRCAgICAgKGJhc2UgMTYpCQlDJkMgVEVDSE5JQyBUQUlXQU4gQ08uLCBMVEQuCi0JCQkJUk9PTTYgMTNGLCBOTy4yLEppYW4gOHRoIFJPQUQKLQkJCQlUYWlwZWkgQ2h1bmdobyBDaXR5LCAgMjM1MTEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUU0LTQ4LUM3ICAgKGhleCkJCUNpc2NvIFNQVlRHCi1FNDQ4QzcgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHZW9yZ2lhIDMwMDQ0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC00RS0xOCAgIChoZXgpCQlHYXJkYXNvZnQgVmlzaW9uTGltaXRlZAotRTQ0RTE4ICAgICAoYmFzZSAxNikJCUdhcmRhc29mdCBWaXNpb25MaW1pdGVkCi0JCQkJVW5pdHMgMSBhbmQgMiwgQ2FzdGxlIEFjcmVzCi0JCQkJRWxzd29ydGgKLQkJCQlDYW1icmlkZ2UgIENCMjMgNEpRCi0JCQkJVU5JVEVEIEtJTkdET00KLQotRTQtNEYtMjkgICAoaGV4KQkJTUEgTGlnaHRpbmcgVGVjaG5vbG9neSBHbWJICi1FNDRGMjkgICAgIChiYXNlIDE2KQkJTUEgTGlnaHRpbmcgVGVjaG5vbG9neSBHbWJICi0JCQkJRGFjaGRlY2tlcnN0ci4xNgotCQkJCVdhbGRi/HR0ZWxicnVubiBCYXZhcmlhIDk3Mjk3Ci0JCQkJR0VSTUFOWQotCi1FNC01NS1FQSAgIChoZXgpCQlEZWRpY2F0ZWQgQ29tcHV0aW5nCi1FNDU1RUEgICAgIChiYXNlIDE2KQkJRGVkaWNhdGVkIENvbXB1dGluZwotCQkJCU4yNiBXMjM4ODAgQ29tbWVyY2UgQ2lyY2xlCi0JCQkJV2F1a2VzaGEgV2lzY29uc2luIDUzMTg4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC02NC00OSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotRTQ2NDQ5ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTQtNjctQkEgICAoaGV4KQkJRGFuaXNoIEludGVycHJldGF0aW9uIFN5c3RlbXMgQS9TCi1FNDY3QkEgICAgIChiYXNlIDE2KQkJRGFuaXNoIEludGVycHJldGF0aW9uIFN5c3RlbXMgQS9TCi0JCQkJVmVzdHJlIFRlZ2xnYWRlIDEyCi0JCQkJQ29wZW5oYWdlbiBTViAyNDUwCi0JCQkJREVOTUFSSwotCi1FNC02Qy0yMSAgIChoZXgpCQltZXNzTWEgR21iSAotRTQ2QzIxICAgICAoYmFzZSAxNikJCW1lc3NNYSBHbWJICi0JCQkJQW0gU3RhZHRmZWxkIDgKLQkJCQlJeGxlYmVuIFNhY2hzZW4tQW5oYWx0IDM5MTY3Ci0JCQkJR0VSTUFOWQotCi1FNC03MS04NSAgIChoZXgpCQlTZWN1cmlmaSBMdGQKLUU0NzE4NSAgICAgKGJhc2UgMTYpCQlTZWN1cmlmaSBMdGQKLQkJCQkxNkYtMywgIzQ4MiBaaG9uZ3hpYW8gRSBSZCwgU2VjIDUKLQkJCQlUYWlwZWkgIDExMDgzCi0JCQkJVEFJV0FOLCBQUk9WSU5DRSBPRiBDSElOQQotCi1FNC03NS0xRSAgIChoZXgpCQlHZXRpbmdlIFN0ZXJpbGl6YXRpb24gQUIKLUU0NzUxRSAgICAgKGJhc2UgMTYpCQlHZXRpbmdlIFN0ZXJpbGl6YXRpb24gQUIKLQkJCQlCb3ggNjkKLQkJCQlHZXRpbmdlICAzMTA0NAotCQkJCVNXRURFTgotCi1FNC03Ny1ENCAgIChoZXgpCQlNaW5ycmF5IEluZHVzdHJ5IENvLixMdGQgCi1FNDc3RDQgICAgIChiYXNlIDE2KQkJTWlucnJheSBJbmR1c3RyeSBDby4sTHRkIAotCQkJCUM1LCBCdWlsZGluZyAyLCBaaG9uZ0hhaVhpbiAgLFNjaWVuY2UmVGVjaG5vbG9neSBQYXJrLCBHYW5saSBSZCwgTGlMYW5nIEJsdmQuLCBCdWppCi0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODExMgotCQkJCUNISU5BCi0KLUU0LTdDLUY5ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLUU0N0NGOSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIFllb25ndG9uZy1ndQotCQkJCVN1d29uLUNpdHksIAotCQkJCVN1d29uIEd5ZW9uZ2dpLWRvIDQ0Mzc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FNC04My05OSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotRTQ4Mzk5ICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjQ1MCBTZXF1ZW5jZSBEcml2ZQotCQkJCVNhbiBEaWVnbyBDQSA5MjEyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTQtOEEtRDUgICAoaGV4KQkJUkYgV0lORE9XIENPLiwgTFRELgotRTQ4QUQ1ICAgICAoYmFzZSAxNikJCVJGIFdJTkRPVyBDTy4sIExURC4KLQkJCQkxNEYsIERhZXJ1bmcgUG9zdHRvd2VyMwotCQkJCTE4Mi00LCBHdXJvLWRvbmcsIEd1cm8tZ3UKLQkJCQlTZW91bCAgMTUyLTc0NgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FNC05MC02OSAgIChoZXgpCQlSb2Nrd2VsbCBBdXRvbWF0aW9uCi1FNDkwNjkgICAgIChiYXNlIDE2KQkJUm9ja3dlbGwgQXV0b21hdGlvbgotCQkJCTEgQWxsZW4tQnJhZGxleSBEcml2ZQotCQkJCUNTLUMyMzkKLQkJCQlNYXlmaWVsZCBIZWlnaHRzIE9oaW8gNDQxMjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LTk3LUYwICAgKGhleCkJCVNoYW5naGFpIFZMQyBUZWNobm9sb2dpZXMgTHRkLiBDby4KLUU0OTdGMCAgICAgKGJhc2UgMTYpCQlTaGFuZ2hhaSBWTEMgVGVjaG5vbG9naWVzIEx0ZC4gQ28uCi0JCQkJUm9vbSA5MDEsIEItWm9uZSwgRWFzdCBCZWlqaW5nIFJvYWQKLQkJCQlIdWFuZ3B1IERpc3QuCi0JCQkJU2hhbmdoYWkgIDIwMDAwMQotCQkJCUNISU5BCi0KLUU0LUE1LUVGICAgKGhleCkJCVRST04gTElOSyBFTEVDVFJPTklDUyBDTy4sIExURC4KLUU0QTVFRiAgICAgKGJhc2UgMTYpCQlUUk9OIExJTksgRUxFQ1RST05JQ1MgQ08uLCBMVEQuCi0JCQkJRkxBVCBBLCAyMC9GLiwgQkxPQ0sgNCxPTiBOSU5HIEdBUkRFTiwKLQkJCQkxMCBTSEVVTkcgTklORyBST0FELFRTRVVORyBLV0FOIE8sCi0JCQkJS09XTE9PTiAgOTk5MDc3Ci0JCQkJSE9ORyBLT05HCi0KLUU0LUFCLTQ2ICAgKGhleCkJCVVBQiBTZWx0ZWthCi1FNEFCNDYgICAgIChiYXNlIDE2KQkJVUFCIFNlbHRla2EKLQkJCQlEcmF1Z3lzdOtzIGcuIDE5Ci0JCQkJS2F1bmFzICBMVC01MTIzMCAKLQkJCQlMSVRIVUFOSUEKLQotRTQtQUQtN0QgICAoaGV4KQkJU0NMIEVsZW1lbnRzCi1FNEFEN0QgICAgIChiYXNlIDE2KQkJU0NMIEVsZW1lbnRzCi0JCQkJNTgwMCBTdC1EZW5pcywgIzIyMgotCQkJCU1vbnRyZWFsIFF1ZWJlYyBIMlMzbDUKLQkJCQlDQU5BREEKLQotRTQtQUYtQTEgICAoaGV4KQkJSEVTLVNPCi1FNEFGQTEgICAgIChiYXNlIDE2KQkJSEVTLVNPCi0JCQkJQ2FzZSBwb3N0YWxlIDIxMzQKLQkJCQlSb3V0ZSBkdSBSYXd5bCA0NwotCQkJCVNpb24gIDE5NTAKLQkJCQlTV0lUWkVSTEFORAotCi1FNC1CMC0yMSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLUU0QjAyMSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTQtQzYtRTYgICAoaGV4KQkJTW9waGllLCBMTEMKLUU0QzZFNiAgICAgKGJhc2UgMTYpCQlNb3BoaWUsIExMQwotCQkJCTI4NTAgUmVkIEhpbGwgQXZlLgotCQkJCVN1aXRlIDEyOAotCQkJCVNhbnRhIEFuYSBDQSA5MjcwNQotCQkJCVVOSVRFRCBTVEFURVMKLQotRTQtQzgtMDYgICAoaGV4KQkJQ2VpZWMgRWxlY3RyaWMgVGVjaG5vbG9neSBJbmMuCi1FNEM4MDYgICAgIChiYXNlIDE2KQkJQ2VpZWMgRWxlY3RyaWMgVGVjaG5vbG9neSBJbmMuCi0JCQkJOC9GIFdlc3QgU2lkZSwgQnVpbGRpbmcgMjAxLCBUZXJyYSBJbmR1c3RyaWFsICYgVHJhZGVwYXJrLCBDaGUgR29uZyBNaWFvLAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNDAKLQkJCQlDSElOQQotCi1FNC1DRS04RiAgIChoZXgpCQlBcHBsZSwgSW5jLgotRTRDRThGICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTQtRDUtM0QgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLUU0RDUzRCAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMKLQkJCQlDSElOQQotCi1FNC1ENy0xRCAgIChoZXgpCQlPcmF5YSBUaGVyYXBldXRpY3MKLUU0RDcxRCAgICAgKGJhc2UgMTYpCQlPcmF5YSBUaGVyYXBldXRpY3MKLQkJCQk4MDAwIEphcnZpcyBBdmVudWUgIFN0ZS4gMjAwCi0JCQkJTmV3YXJrIENBIDk0NTYwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1FNC1ERC03OSAgIChoZXgpCQlFbi1WaXNpb24gQW1lcmljYSwgSW5jLgotRTRERDc5ICAgICAoYmFzZSAxNikJCUVuLVZpc2lvbiBBbWVyaWNhLCBJbmMuCi0JCQkJMTg0NSBIb3ZleSBBdmUKLQkJCQlOb3JtYWwgSUwgNjE3NjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU0LUUwLUM1ICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMVEQKLUU0RTBDNSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIFllb25ndG9uZy1ndQotCQkJCVN1d29uIEd5ZW9uZ2dpLWRvIDQ0Mzc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FNC1FQy0xMCAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRTRFQzEwICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCU91bHUgT3UgOTA1OTAKLQkJCQlGSU5MQU5ECi0KLUU0LUZBLTFEICAgKGhleCkJCVBBRCBQZXJpcGhlcmFsIEFkdmFuY2VkIERlc2lnbiBJbmMuCi1FNEZBMUQgICAgIChiYXNlIDE2KQkJUEFEIFBlcmlwaGVyYWwgQWR2YW5jZWQgRGVzaWduIEluYy4KLQkJCQkxNDAwIEhvY3F1YXJ0Ci0JCQkJU2FpbnQtQnJ1bm8gUUMgSjNWIDZFMQotCQkJCUNBTkFEQQotCi1FNC1GRi1ERCAgIChoZXgpCQlFTEVDVFJPTiBJTkRJQQotRTRGRkREICAgICAoYmFzZSAxNikJCUVMRUNUUk9OIElORElBCi0JCQkJVFlQRSBJSSwgTk8uOSwgRFIuIFYuUy5JLiBFU1RBVEUKLQkJCQlUSElSVVZBTk1JWVVSCi0JCQkJQ0hFTk5BSSBUQU1JTCBOQURVIDYwMCAwNDEKLQkJCQlJTkRJQQotCi1FOC0wMy05QSAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMVEQKLUU4MDM5QSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMVEQKLQkJCQk0MTYsIE1hZXRhbi0zRG9uZywgWWVvbmd0b25nLUd1Ci0JCQkJU3V3b24gR3llb25nZ2ktRG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FOC0wNC0wQiAgIChoZXgpCQlBcHBsZSwgSW5jLgotRTgwNDBCICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FOC0wNC02MiAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1FODA0NjIgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FOC0wNS02RCAgIChoZXgpCQlOb3J0ZWwgTmV0d29ya3MKLUU4MDU2RCAgICAgKGJhc2UgMTYpCQlOb3J0ZWwgTmV0d29ya3MKLQkJCQlDQVJSRVRFUkEgQkFTRSBBRVJFQSAjIDU4NTAKLQkJCQlaYXBvcGFuIEphbGlzY28gNDQxMzAKLQkJCQlNRVhJQ08KLQotRTgtMDYtODggICAoaGV4KQkJQXBwbGUsIEluYy4KLUU4MDY4OCAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCU9uZSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FOC0wQi0xMyAgIChoZXgpCQlBa2liIFN5c3RlbXMgVGFpd2FuLCBJTkMKLUU4MEIxMyAgICAgKGJhc2UgMTYpCQlBa2liIFN5c3RlbXMgVGFpd2FuLCBJTkMKLQkJCQlOby41ODItMSwgUnVpR3VhbmcgUmQKLQkJCQlOZWlIdQotCQkJCVRhaXBlaSAgMTE0Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FOC0wQy0zOCAgIChoZXgpCQlEQUVZT1VORyBJTkZPUk1BVElPTiBTWVNURU0gQ08uLCBMVEQKLUU4MEMzOCAgICAgKGJhc2UgMTYpCQlEQUVZT1VORyBJTkZPUk1BVElPTiBTWVNURU0gQ08uLCBMVEQKLQkJCQkjODI2IFRBTU5JUC1ET05HLCBZVVNFT05HLUdPLCAKLQkJCQlEQUVKT04gIDMwNS01MTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTgtMEMtNzUgICAoaGV4KQkJU3luY2JhaywgSW5jLgotRTgwQzc1ICAgICAoYmFzZSAxNikJCVN5bmNiYWssIEluYy4KLQkJCQk1IFJlc2VhcmNoIENlbnRlcgotCQkJCU1hcmlvbiBJQSA1MjMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtMTAtMkUgICAoaGV4KQkJUmVhbGx5IFNpbXBsZSBTb2Z0d2FyZSwgSW5jCi1FODEwMkUgICAgIChiYXNlIDE2KQkJUmVhbGx5IFNpbXBsZSBTb2Z0d2FyZSwgSW5jCi0JCQkJUC5PLiBCb3ggMTA4NgotCQkJCVRpYnVyb24gQ2FsaWZvcm5pYSA5NDkyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtMTEtMzIgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTFRECi1FODExMzIgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTFRECi0JCQkJNDE2LCBNYWV0YW5nLTNEb25nLCBZZW9uZ29uLUd1Ci0JCQkJU3V3b24gR3llb25nZ2ktRG8gNDQzLTc0MgotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FOC0xMy0yNCAgIChoZXgpCQlHdWFuZ1pob3UgQm9uc29uaW5mbyBTeXN0ZW0gQ08uLExURAotRTgxMzI0ICAgICAoYmFzZSAxNikJCUd1YW5nWmhvdSBCb25zb25pbmZvIFN5c3RlbSBDTy4sTFRECi0JCQkJNC9GLE5PLjEwMjkvMzEsR2FvUHUgUm9hZCxHYW9UYW5nIE5ldyBCdWlsZGluZyBEaXN0cmljdAotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwNjYzCi0JCQkJQ0hJTkEKLQotRTgtMjgtNzcgICAoaGV4KQkJVE1ZIENvLiwgTHRkLgotRTgyODc3ICAgICAoYmFzZSAxNikJCVRNWSBDby4sIEx0ZC4KLQkJCQlBdHRpYyBCbGRnLiAzRiwgMS0yLTEwIElzZS1jaG8sCi0JCQkJQXNoaWthZ2Etc2hpIFRvY2hpZ2kgMzI2LTAwNTMKLQkJCQlKQVBBTgotCi1FOC0yOC1ENSAgIChoZXgpCQlDb3RzIFRlY2hub2xvZ3kKLUU4MjhENSAgICAgKGJhc2UgMTYpCQlDb3RzIFRlY2hub2xvZ3kKLQkJCQlDLTcwMiwgQnVuZGFuZyBUZWNobm8gUGFyaywgMTQ1LAotCQkJCVlhdGFvcC1kb25nLCBCdW5kYW5nLWd1LAotCQkJCVN1bmduYW0tQ2l0eSBLeW91bmdnaS1kbyA0NjMtNzYwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUU4LTM5LTM1ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotRTgzOTM1ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1FOC0zOS1ERiAgIChoZXgpCQlBc2tleSBDb21wdXRlcgotRTgzOURGICAgICAoYmFzZSAxNikJCUFza2V5IENvbXB1dGVyCi0JCQkJMTBGLE5PLjExOSxDSElFTktBTkcgUkQsQ0hVTkctSE8sCi0JCQkJVEFJUEVJIDIzNQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTgtM0EtOTcgICAoaGV4KQkJT0NaIFRlY2hub2xvZ3kgR3JvdXAKLUU4M0E5NyAgICAgKGJhc2UgMTYpCQlPQ1ogVGVjaG5vbG9neSBHcm91cAotCQkJCTYzNzMgU2FuIElnbmFjaW8gQXZlCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMTkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU4LTNFLUI2ICAgKGhleCkJCVJJTQotRTgzRUI2ICAgICAoYmFzZSAxNikJCVJJTQotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDNXOAotCQkJCUNBTkFEQQotCi1FOC0zRS1GQiAgIChoZXgpCQlHRU9ERVNJQyBMVEQuCi1FODNFRkIgICAgIChiYXNlIDE2KQkJR0VPREVTSUMgTFRELgotCQkJCTE4LDEwVEggQ1JPU1MsIE1BWVVSQSBTVFJFRVQKLQkJCQlQQVBBTk5BIExBWU9VVCwgT1VURVIgUklORyBST0FECi0JCQkJQkFOR0FMT1JFIEtBUk5BVEFLQSA1NjAwOTQKLQkJCQlJTkRJQQotCi1FOC00MC00MCAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1FODQwNDAgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00vMgotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FOC00MC1GMiAgIChoZXgpCQlQRUdBVFJPTiBDT1JQT1JBVElPTiAKLUU4NDBGMiAgICAgKGJhc2UgMTYpCQlQRUdBVFJPTiBDT1JQT1JBVElPTiAKLQkJCQlOby4gNzYsIExpZ29uZyBTdC4sIEJlaXRvdSwgCi0JCQkJVGFpcGVpICAxMTIKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUU4LTQzLUI2ICAgKGhleCkJCVFOQVAgU3lzdGVtcywgSW5jLgotRTg0M0I2ICAgICAoYmFzZSAxNikJCVFOQVAgU3lzdGVtcywgSW5jLgotCQkJCTJGLiwgTm8uMjIsIFpob25neGluZyBSZC4sIFhpemhpIERpc3QuCi0JCQkJTmV3IFRhaXBlaSBDaXR5ICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUU4LTRFLTA2ICAgKGhleCkJCUVEVVAgSU5URVJOQVRJT05BTCAoSEspIENPLiwgTFRECi1FODRFMDYgICAgIChiYXNlIDE2KQkJRURVUCBJTlRFUk5BVElPTkFMIChISykgQ08uLCBMVEQKLQkJCQkyMEQgUm9vbSwgQmxvY2sgQiwgTW9kZXJuIFdpbmRvd3MgQnVpZGxpbmcsIEZ1VGlhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDI4Ci0JCQkJQ0hJTkEKLQotRTgtNEUtQ0UgICAoaGV4KQkJTmludGVuZG8gQ28uLCBMdGQuCi1FODRFQ0UgICAgIChiYXNlIDE2KQkJTmludGVuZG8gQ28uLCBMdGQuCi0JCQkJMTEtMSBIT0tPVEFURS1DSE8KLQkJCQlLQU1JVE9CQSwgTUlOQU1JLUtVCi0JCQkJS1lPVE8gIDYwMS04NTAxCi0JCQkJSkFQQU4KLQotRTgtNTQtODQgICAoaGV4KQkJTkVPIElORk9STUFUSU9OIFNZU1RFTVMgQ08uLCBMVEQuCi1FODU0ODQgICAgIChiYXNlIDE2KQkJTkVPIElORk9STUFUSU9OIFNZU1RFTVMgQ08uLCBMVEQuCi0JCQkJNjA5LCBKVU5HQU5HSU5EVVNQSUEsICM1MTctMTMsIFNBTkdEQUVXRU9OLURPTkcsIEpVTkdXRU9OLUdVCi0JCQkJU0VPTkdOQU0tQ0lUWSBHWUVPTkdHSS1ETyA0NjItNzEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUU4LTU2LUQ2ICAgKGhleCkJCU5DVGVjaCBMdGQKLUU4NTZENiAgICAgKGJhc2UgMTYpCQlOQ1RlY2ggTHRkCi0JCQkJMjAtMjIgQnJhaWQgUm9hZAotCQkJCU1vcm5pbmdzaWRlCi0JCQkJRWRpbmJ1cmdoICBFSDEwIDZBRAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUU4LTVCLTVCICAgKGhleCkJCUxHIEVMRUNUUk9OSUNTIElOQwotRTg1QjVCICAgICAoYmFzZSAxNikJCUxHIEVMRUNUUk9OSUNTIElOQwotCQkJCTE5LTEsIENIRU9OR0hPLVJJLCBKSU5XSS1NWUVPTgotCQkJCVBZRU9OR1RBRUsgR1lFT05HR0ktRE8gNDUxLTcxMwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FOC01RS01MyAgIChoZXgpCQlJbmZyYXRlYyBEYXRlbnRlY2huaWsgR21iSAotRTg1RTUzICAgICAoYmFzZSAxNikJCUluZnJhdGVjIERhdGVudGVjaG5payBHbWJICi0JCQkJR2V2ZW5lciBXZWcgMzgKLQkJCQlOZXVlbnJhZGUgTlJXIDU4NTc5Ci0JCQkJR0VSTUFOWQotCi1FOC02Qy1EQSAgIChoZXgpCQlTdXBlcmNvbXB1dGVycyBhbmQgTmV1cm9jb21wdXRlcnMgUmVzZWFyY2ggQ2VudGVyCi1FODZDREEgICAgIChiYXNlIDE2KQkJU3VwZXJjb21wdXRlcnMgYW5kIE5ldXJvY29tcHV0ZXJzIFJlc2VhcmNoIENlbnRlcgotCQkJCTIsIENoZWtob3Ygc3QKLQkJCQlUYWdhbnJvZyAgUm9zdG92LW9uLURvbiByZWdpb24gIDM0NzkyMiAKLQkJCQlSVVNTSUFOIEZFREVSQVRJT04KLQotRTgtNkQtNTIgICAoaGV4KQkJTW90b3JvbGEgTW9iaWxpdHksIEluYy4KLUU4NkQ1MiAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotCQkJCTY0NTAgU2VxdWVuY2UgRHJpdmUKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU4LTZELTZFICAgKGhleCkJCUNvbnRyb2wgJiBEaXNwbGF5IFN5c3RlbXMgTHRkIHQvYSBDRFNSYWlsCi1FODZENkUgICAgIChiYXNlIDE2KQkJQ29udHJvbCAmIERpc3BsYXkgU3lzdGVtcyBMdGQgdC9hIENEU1JhaWwKLQkJCQlVbml0IDEsIEZ1bGNydW0gNCwKLQkJCQlTb2xlbnQgV2F5Ci0JCQkJV2hpdGVsZXkgSGFtcHNoaXJlIFBPMTUgN0ZUCi0JCQkJVU5JVEVEIEtJTkdET00KLQotRTgtNzUtN0YgICAoaGV4KQkJRklSUyBUZWNobm9sb2dpZXMoU2hlbnpoZW4pIENvLiwgTHRkCi1FODc1N0YgICAgIChiYXNlIDE2KQkJRklSUyBUZWNobm9sb2dpZXMoU2hlbnpoZW4pIENvLiwgTHRkCi0JCQkJUm0gMTJBLCBBcmVhIEEsIEhvbmdzb25nIEJ1c2luZXNzIEJ1aWxkaW5nLCBUYWlyYW4gOXRoIFJkLCBDaGVnb25nbWlhbywgCi0JCQkJRnV0aWFuIERpc3RyaWN0Ci0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA0MAotCQkJCUNISU5BCi0KLUU4LTc4LUExICAgKGhleCkJCUJFT1ZJRVcgSU5URVJDT00gRE9PCi1FODc4QTEgICAgIChiYXNlIDE2KQkJQkVPVklFVyBJTlRFUkNPTSBET08KLQkJCQlCVUxFVkFSIE1JSEFKTEEgUFVQSU5BIDYKLQkJCQlCRUxHUkFERSAgMTEwNzAKLQkJCQlTRVJCSUEKLQotRTgtN0EtRjMgICAoaGV4KQkJUzUgVGVjaCBTLnIubC4KLUU4N0FGMyAgICAgKGJhc2UgMTYpCQlTNSBUZWNoIFMuci5sLgotCQkJCVZpYSBUb3J0b25hIDcyCi0JCQkJTWlsYW5vICAyMDE0NAotCQkJCUlUQUxZCi0KLUU4LThELUY1ICAgKGhleCkJCVpOWVggTmV0d29ya3MsIEluYy4KLUU4OERGNSAgICAgKGJhc2UgMTYpCQlaTllYIE5ldHdvcmtzLCBJbmMuCi0JCQkJNDg0MjEgTWlsbW9udCBEcml2ZQotCQkJCUZyZW1vbnQgQ0EgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU4LTk0LTRDICAgKGhleCkJCUNvZ2VudCBIZWFsdGhjYXJlIFN5c3RlbXMgTHRkCi1FODk0NEMgICAgIChiYXNlIDE2KQkJQ29nZW50IEhlYWx0aGNhcmUgU3lzdGVtcyBMdGQKLQkJCQkxNDNlIEFydGh1ciBSb2FkCi0JCQkJV2luZHNvcgotCQkJCUJlcmtzaGlyZSAgU0w0IDFTRQotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUU4LTk5LTVBICAgKGhleCkJCVBpaUdBQiwgUHJvY2Vzc2luZm9ybWF0aW9uIGkgR290ZWJvcmcgQUIKLUU4OTk1QSAgICAgKGJhc2UgMTYpCQlQaWlHQUIsIFByb2Nlc3NpbmZvcm1hdGlvbiBpIEdvdGVib3JnIEFCCi0JCQkJQW5kZXJzIENhcmxzc29ucyBnYXRhIDEKLQkJCQlHb3RoZW5idXJnICA0MTcgNTUKLQkJCQlTV0VERU4KLQotRTgtOTktQzQgICAoaGV4KQkJSFRDIENvcnBvcmF0aW9uCi1FODk5QzQgICAgIChiYXNlIDE2KQkJSFRDIENvcnBvcmF0aW9uCi0JCQkJTm8uIDIzLCBYaW5naHVhIFJkLiwgVGFveXVhbiBDaXR5Ci0JCQkJVGFveXVhbiBDb3VudHkgVGFpd2FuIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTgtOUEtOEYgICAoaGV4KQkJUXVhbnRhIENvbXB1dGVyIEluYy4KLUU4OUE4RiAgICAgKGJhc2UgMTYpCQlRdWFudGEgQ29tcHV0ZXIgSW5jLgotCQkJCTIxMSwgV2VuIEh3YSAybmQgUmQuLEt1ZWkgU2hhbiwgVGFvIFl1YW4gCi0JCQkJVEFJUEVJICAzMzM3NwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRTgtOUQtODcgICAoaGV4KQkJVG9zaGliYQotRTg5RDg3ICAgICAoYmFzZSAxNikJCVRvc2hpYmEKLQkJCQkyLTksU3VlaGlyby1DaG8KLQkJCQlPbWUgVG9reW8gMTk4ODcxMAotCQkJCUpBUEFOCi0KLUU4LUE0LUMxICAgKGhleCkJCURlZXAgU2VhIEVsZWN0cm9uaWNzIFBMQwotRThBNEMxICAgICAoYmFzZSAxNikJCURlZXAgU2VhIEVsZWN0cm9uaWNzIFBMQwotCQkJCUhpZ2hmaWVsZCBIb3VzZQotCQkJCUh1bm1hbmJ5IEluZHVzdHJpYWwgRXN0YXRlCi0JCQkJSHVubWFuYnkgTm9ydGggWW9ya3NoaXJlIFlPMTQgMFBICi0JCQkJVU5JVEVEIEtJTkdET00KLQotRTgtQjQtQUUgICAoaGV4KQkJU2hlbnpoZW4gQyZEIEVsZWN0cm9uaWNzIENvLixMdGQKLUU4QjRBRSAgICAgKGJhc2UgMTYpCQlTaGVuemhlbiBDJkQgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCUJ1aWxkaW5nIDIsIFhpYSBZb3UgU29uZyBNb3VudGFpbiBUb3AgSW5kdXN0cmlhbCBEaXN0cmljdCwgWW91IFNvbmcgVmlsbGFnZQotCQkJCUxvbmdodWEsIEJhbyBBbgotCQkJCVNoZW56aGVuIEd1YW5nIERvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotRTgtQjctNDggICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRThCNzQ4ICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNLzIKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRTgtQkEtNzAgICAoaGV4KQkJQ2lzY28gU3lzdGVtcwotRThCQTcwICAgICAoYmFzZSAxNikJCUNpc2NvIFN5c3RlbXMKLQkJCQk4MCBXZXN0IFRhc21hbiBEci4KLQkJCQlTSkNNMS0xCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU4LUJFLTgxICAgKGhleCkJCVNBR0VNQ09NCi1FOEJFODEgICAgIChiYXNlIDE2KQkJU0FHRU1DT00KLQkJCQkyNTAgcm91dGUgZGUgbCdFbXBlcmV1cgotCQkJCVJVRUlMIE1BTE1BSVNPTiBJbGUgZGUgRnJhbmNlIDkyODQ4Ci0JCQkJRlJBTkNFCi0KLUU4LUMyLTI5ICAgKGhleCkJCUgtRGlzcGxheXMgKE1TQykgQmhkCi1FOEMyMjkgICAgIChiYXNlIDE2KQkJSC1EaXNwbGF5cyAoTVNDKSBCaGQKLQkJCQlOby4gMzEgJiAzMiwgSmFsYW4gR2FuZ3NhIER1YQotCQkJCVBhc2lyIEd1ZGFuZwotCQkJCUpvaG9yIEJhaHJ1ICA4MTcwMAotCQkJCU1BTEFZU0lBCi0KLUU4LUMzLTIwICAgKGhleCkJCUF1c3RjbyBDb21tdW5pY2F0aW9uIFN5c3RlbXMgUHR5IEx0ZAotRThDMzIwICAgICAoYmFzZSAxNikJCUF1c3RjbyBDb21tdW5pY2F0aW9uIFN5c3RlbXMgUHR5IEx0ZAotCQkJCTQwIE8nTWFsbGV5IFN0cmVldAotCQkJCU9zYm9ybmUgUGFyayBXZXN0ZXJuIEF1c3RyYWxpYSA2MDE3Ci0JCQkJQVVTVFJBTElBCi0KLUU4LUNDLTMyICAgKGhleCkJCU1pY3JvbmV0ICBMVEQKLUU4Q0MzMiAgICAgKGJhc2UgMTYpCQlNaWNyb25ldCAgTFRECi0JCQkJSGFtZXR6dWRhIDI3Ci0JCQkJQXpvciAgNTgwMDEKLQkJCQlJU1JBRUwKLQotRTgtRDAtRkEgICAoaGV4KQkJTUtTIEluc3RydW1lbnRzIERldXRzY2hsYW5kIEdtYkgKLUU4RDBGQSAgICAgKGJhc2UgMTYpCQlNS1MgSW5zdHJ1bWVudHMgRGV1dHNjaGxhbmQgR21iSAotCQkJCVNjaGF0emJvZ2VuIDQzCi0JCQkJTXVuaWNoICA4MTgyOSAKLQkJCQlHRVJNQU5ZCi0KLUU4LUQ0LTgzICAgKGhleCkJCVVMVElNQVRFIEV1cm9wZSBUcmFuc3BvcnRhdGlvbiBFcXVpcG1lbnQgR21iSAotRThENDgzICAgICAoYmFzZSAxNikJCVVMVElNQVRFIEV1cm9wZSBUcmFuc3BvcnRhdGlvbiBFcXVpcG1lbnQgR21iSAotCQkJCUluZHVzdHJpZXN0ci4gMwotCQkJCTMzMDAgTmllZGVy77+9c3RlcnJlaWNoIDMzMDAKLQkJCQlBVVNUUklBCi0KLUU4LURBLTk2ICAgKGhleCkJCVpodWhhaSBUaWFucnVpIEVsZWN0cmljYWwgUG93ZXIgVGVjaC4gQ28uLCBMdGQuCi1FOERBOTYgICAgIChiYXNlIDE2KQkJWmh1aGFpIFRpYW5ydWkgRWxlY3RyaWNhbCBQb3dlciBUZWNoLiBDby4sIEx0ZC4KLQkJCQlNaW55aW5nIFRlY2hub2xvZ3kgWm9uZSwgMTAjIEtlamkgMSBSb2FkLCBHYW5nd2FuIE1haW4gUm9hZCwgVGFuZ2ppYQotCQkJCVpodWhhaSBHdWFuZ2RvbmcgNTE5MDg1Ci0JCQkJQ0hJTkEKLQotRTgtREEtQUEgICAoaGV4KQkJVmlkZW9Ib21lIFRlY2hub2xvZ3kgQ29ycC4KLUU4REFBQSAgICAgKGJhc2UgMTYpCQlWaWRlb0hvbWUgVGVjaG5vbG9neSBDb3JwLgotCQkJCTRGLTEsIE5vLiAxOTIsIERhIFR1bmcgUmQuLCBTZWMuIDMsIEhzaWNoaWgsCi0JCQkJVGFpcGVpIEhzaWVuICAyMjEKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUU4LURGLUYyICAgKGhleCkJCVBSRiBDby4sIEx0ZC4KLUU4REZGMiAgICAgKGJhc2UgMTYpCQlQUkYgQ28uLCBMdGQuCi0JCQkJIzUxMCwgTGVhZGVycyBCL0QsIFlhdG9wLWRvbmcKLQkJCQlCdW5kYW5nLWd1Ci0JCQkJU2VvbmduYW0tY2l0eSBHeWVvbmdnaS1kbyA0NjMtODI4Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUU4LUUwLThGICAgKGhleCkJCUdSQVZPVEVDSCBNQVJLSU5HIFNBUwotRThFMDhGICAgICAoYmFzZSAxNikJCUdSQVZPVEVDSCBNQVJLSU5HIFNBUwotCQkJCTU2IEFWRU5VRSBKRUFOIEpBVVJFUwotCQkJCUxBIENIQVBFTExFIFNBSU5UIExVQyBBVUJFIDEwNjAwCi0JCQkJRlJBTkNFCi0KLUU4LUUwLUI3ICAgKGhleCkJCVRvc2hpYmEKLUU4RTBCNyAgICAgKGJhc2UgMTYpCQlUb3NoaWJhCi0JCQkJMi05LFN1ZWhpcm8tQ2hvCi0JCQkJT21lIFRva3lvIDE5ODg3MTAKLQkJCQlKQVBBTgotCi1FOC1FMS1FMiAgIChoZXgpCQlFbmVyZ290ZXN0Ci1FOEUxRTIgICAgIChiYXNlIDE2KQkJRW5lcmdvdGVzdAotCQkJCUNob3J6b3dza2EgNDRCCi0JCQkJR2xpd2ljZSBTbGFzayA0NC0xMDAKLQkJCQlQT0xBTkQKLQotRTgtRTUtRDYgICAoaGV4KQkJU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sTHRkIAotRThFNUQ2ICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZCAKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRTgtRTctMzIgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQKLUU4RTczMiAgICAgKGJhc2UgMTYpCQlBbGNhdGVsLUx1Y2VudAotCQkJCTI2ODAxIFdlc3QgQWdvdXJhIFJvYWQKLQkJCQlDYWxhYmFzYXMgQ0EgOTEzMDEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUU4LUU3LTc2ICAgKGhleCkJCVNoZW56aGVuIEtvb3Rpb24gVGVjaG5vbG9neSBDby4sIEx0ZAotRThFNzc2ICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEtvb3Rpb24gVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTMvRiwgQnVpbGRpbmcgIzQsIFhpbkppYW5YaW5nIEluZHVzdHJpYWwgUGFyawotCQkJCVNvbmdiYWkgUm9hZCwgTmFuc2hhbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgUHJvdmluY2UgNTE4MTA4Ci0JCQkJQ0hJTkEKLQotRTgtRjEtQjAgICAoaGV4KQkJU0FHRU1DT00gU0FTCi1FOEYxQjAgICAgIChiYXNlIDE2KQkJU0FHRU1DT00gU0FTCi0JCQkJMjUwIFJPVVRFIERFIEwnRU1QRVJFVVIKLQkJCQlSVUVJTCBNQUxNQUlTT04gQ0VERVggSUxFIERFIEZSQU5DRSA5Mjg0OAotCQkJCUZSQU5DRQotCi1FOC1GOS0yOCAgIChoZXgpCQlSRlRFQ0ggU1JMCi1FOEY5MjggICAgIChiYXNlIDE2KQkJUkZURUNIIFNSTAotCQkJCVZJQSBWRU5FVE8sIDIyCi0JCQkJU0NISU8gVklDRU5aQSAzNjAxNQotCQkJCUlUQUxZCi0KLUVDLTBFLUQ2ICAgKGhleCkJCUlURUNIIElOU1RSVU1FTlRTIFNBUwotRUMwRUQ2ICAgICAoYmFzZSAxNikJCUlURUNIIElOU1RSVU1FTlRTIFNBUwotCQkJCTMgQXZlbnVlIGRlIGxhIE1hcmFubmUKLQkJCQlaSSBMYSBWYWxhbXBlCi0JCQkJQ2jvv710ZWF1bmV1Zi1MZXMtTWFydGlndWVzICAxMzIyMAotCQkJCUZSQU5DRQotCi1FQy0xMS0yMCAgIChoZXgpCQlGbG9EZXNpZ24gV2luZCBUdXJiaW5lIENvcnBvcmF0aW9uCi1FQzExMjAgICAgIChiYXNlIDE2KQkJRmxvRGVzaWduIFdpbmQgVHVyYmluZSBDb3Jwb3JhdGlvbgotCQkJCVBhcGlyZmFicmlra2VuIDI4Ci0JCQkJU2lsa2Vib3JnICA4NjAwCi0JCQkJREVOTUFSSwotCi1FQy0xNC1GNiAgIChoZXgpCQlCaW9Db250cm9sIEFTCi1FQzE0RjYgICAgIChiYXNlIDE2KQkJQmlvQ29udHJvbCBBUwotCQkJCUdyaW1zdGFkIEdhcmQgCi0JCQkJUmFra2VzdGFkICAgTi0xODkwCi0JCQkJTk9SV0FZCi0KLUVDLTE3LTJGICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotRUMxNzJGICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCUJ1aWxkaW5nIDI0IChmbG9vcnMgMSwzLDQsNSkgYW5kIDI4IChmbG9vcnMxLTQpICBDZW50cmFsIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgUGFyayxTaGVubmFuIFJkLCBOYW5zaGFuLCBTaGVuemhlbixDaGluYQotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyBQcm92aW5jZSA1MTgwNTcKLQkJCQlDSElOQQotCi1FQy0xQS01OSAgIChoZXgpCQlCZWxraW4gSW50ZXJuYXRpb25hbCBJbmMuCi1FQzFBNTkgICAgIChiYXNlIDE2KQkJQmVsa2luIEludGVybmF0aW9uYWwgSW5jLgotCQkJCTEyMDQ1IEVhc3QgV2F0ZXJmcm9udCBEcml2ZQotCQkJCVBsYXlhIFZpc3RhIENhLiAgOTAwOTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLTIzLTNEICAgKGhleCkJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLUVDMjMzRCAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdCwKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotRUMtMjMtNjggICAoaGV4KQkJSW50ZWxsaVZvaWNlIENvLixMdGQuCi1FQzIzNjggICAgIChiYXNlIDE2KQkJSW50ZWxsaVZvaWNlIENvLixMdGQuCi0JCQkJMy02IEtpb2ljaG8KLQkJCQlLaW9pY2hvIFBhcmsgQmxkLiAxRgotCQkJCUNoaXlvZGEgVG9reW8gMTAyLTAwOTQKLQkJCQlKQVBBTgotCi1FQy0zMC05MSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1FQzMwOTEgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQy1NLzEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtM0ItRjAgICAoaGV4KQkJTm92ZWxTYXQKLUVDM0JGMCAgICAgKGJhc2UgMTYpCQlOb3ZlbFNhdAotCQkJCUhhdGFhc2lhIDIxCi0JCQkJUmFhbmFuYSAgMjM5NgotCQkJCUlTUkFFTAotCi1FQy0zRi0wNSAgIChoZXgpCQlJbnN0aXR1dGUgNzA2LCBUaGUgU2Vjb25kIEFjYWRlbXkgQ2hpbmEgQWVyb3NwYWNlIFNjaWVuY2UgJiBJbmR1c3RyeSBDb3JwCi1FQzNGMDUgICAgIChiYXNlIDE2KQkJSW5zdGl0dXRlIDcwNiwgVGhlIFNlY29uZCBBY2FkZW15IENoaW5hIEFlcm9zcGFjZSBTY2llbmNlICYgSW5kdXN0cnkgQ29ycAotCQkJCVlvbmdEaW5nIFJvYWQgLEhhaURpYW4gRGlzdHJpY3QuQmVpSmluZyAsTm8uNTEKLQkJCQlCZWlKaW5nICAxMDA4NTQKLQkJCQlDSElOQQotCi1FQy00Mi1GMCAgIChoZXgpCQlBREwgRW1iZWRkZWQgU29sdXRpb25zLCBJbmMuCi1FQzQyRjAgICAgIChiYXNlIDE2KQkJQURMIEVtYmVkZGVkIFNvbHV0aW9ucywgSW5jLgotCQkJCTQ0MTEgTW9yZW5hIEJsdmQuCi0JCQkJU3VpdGUgMTAxCi0JCQkJU2FuIERpZWdvIENBIDkyMTE3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FQy00My1FNiAgIChoZXgpCQlBV0NFUiBMdGQuCi1FQzQzRTYgICAgIChiYXNlIDE2KQkJQVdDRVIgTHRkLgotCQkJCTEwMC00MTMgQnVjaGVvbiBUZWNobm9wYXJrCi0JCQkJMzY0IFNhbkplb25nLWRvbmcsIE9qZW9uZy1ndQotCQkJCUJ1Y2hlb24tY2l0eSBHeWVvbmdnaS1kbyA0MjEtNzQxCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUVDLTQ0LTc2ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUVDNDQ3NiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLTQ2LTQ0ICAgKGhleCkJCVRUSyBTQVMKLUVDNDY0NCAgICAgKGJhc2UgMTYpCQlUVEsgU0FTCi0JCQkJNCwgUnVlIGR1IENoZW1pbiBWZXJ0Ci0JCQkJQ2xpY2h5ICA5MjExMAotCQkJCUZSQU5DRQotCi1FQy00Ni03MCAgIChoZXgpCQlNZWluYmVyZyBGdW5rdWhyZW4gR21iSCAmYW1wOyBDby4gS0cKLUVDNDY3MCAgICAgKGJhc2UgMTYpCQlNZWluYmVyZyBGdW5rdWhyZW4gR21iSCAmYW1wOyBDby4gS0cKLQkJCQlMYW5nZSBXYW5kIDkKLQkJCQlCYWQgUHlybW9udCBORFMgMzE4MTIKLQkJCQlHRVJNQU5ZCi0KLUVDLTRDLTREICAgKGhleCkJCVpBTyBOUEsgUm9UZUsKLUVDNEM0RCAgICAgKGJhc2UgMTYpCQlaQU8gTlBLIFJvVGVLCi0JCQkJQmlsZC4gMTE5LTEsIFByb3NwZWt0IE1pcmEKLQkJCQlNb3Njb3cgTW9zY293IDEyOTIyMwotCQkJCVJVU1NJQU4gRkVERVJBVElPTgotCi1FQy01NC0yRSAgIChoZXgpCQlTaGFuZ2hhaSBYaU1laSBFbGVjdHJvbmljIFRlY2hub2xvZ3kgQ28uIEx0ZAotRUM1NDJFICAgICAoYmFzZSAxNikJCVNoYW5naGFpIFhpTWVpIEVsZWN0cm9uaWMgVGVjaG5vbG9neSBDby4gTHRkCi0JCQkJUm9vbSA1MDMsIE5vLjI2MjMsIEdvbmdIZVhpbiBSb2FkCi0JCQkJU2hhbmdoYWkgIDIwMDA3MgotCQkJCUNISU5BCi0KLUVDLTU1LUY5ICAgKGhleCkJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4KLUVDNTVGOSAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuCi0JCQkJTk8uMTkyNSxOYW5sZSBSb2FkICxTb25namlhbmcgRXhwb3J0IFByb2Nlc3NpbmcgWm9uZQotCQkJCVNoYW5naGFpICAyMDE2MTMKLQkJCQlDSElOQQotCi1FQy01Qy02OSAgIChoZXgpCQlNSVRTVUJJU0hJIEhFQVZZIElORFVTVFJJRVMgTUVDSEFUUk9OSUNTIFNZU1RFTVMsTFRELgotRUM1QzY5ICAgICAoYmFzZSAxNikJCU1JVFNVQklTSEkgSEVBVlkgSU5EVVNUUklFUyBNRUNIQVRST05JQ1MgU1lTVEVNUyxMVEQuCi0JCQkJMS0xNiw1LUNIT01FLEtPTUFUU1UtRE9SSSwKLQkJCQlLT0JFIEhZT0dPIDY1Mi0wODY1Ci0JCQkJSkFQQU4KLQotRUMtNjItNjQgICAoaGV4KQkJR2xvYmFsNDExIEludGVybmV0IFNlcnZpY2VzLCBMTEMKLUVDNjI2NCAgICAgKGJhc2UgMTYpCQlHbG9iYWw0MTEgSW50ZXJuZXQgU2VydmljZXMsIExMQwotCQkJCTEwNDAwIFcgT3ZlcmxhbmQgUmQgIzM3MQotCQkJCUJvaXNlIElkYWhvIDgzNzA5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FQy02My1FNSAgIChoZXgpCQllUEJvYXJkIERlc2lnbiBMTEMKLUVDNjNFNSAgICAgKGJhc2UgMTYpCQllUEJvYXJkIERlc2lnbiBMTEMKLQkJCQk0MDY1IEUuIExhIFBhbG1hIEF2ZS4KLQkJCQlTdWl0ZSMgQwotCQkJCUFuYWhlaW0gQ2FsaWZvcm5pYSA5MjgwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtNjYtRDEgICAoaGV4KQkJQiZhbXA7VyBHcm91cCBMVEQKLUVDNjZEMSAgICAgKGJhc2UgMTYpCQlCJmFtcDtXIEdyb3VwIExURAotCQkJCURhbGUgUm9hZAotCQkJCVdvcnRoaW5nIFN1c3NleCBCTjExIDJCSAotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUVDLTZDLTlGICAgKGhleCkJCUNoZW5nZHUgVm9sYW5zIFRlY2hub2xvZ3kgQ08uLExURAotRUM2QzlGICAgICAoYmFzZSAxNikJCUNoZW5nZHUgVm9sYW5zIFRlY2hub2xvZ3kgQ08uLExURAotCQkJCTJuZCBGbG9vciBCdWlsZGluZyA0QiBIaS1UZWNoIEluY3ViYXRpb24gUGFyayxOYW55YW4gWGlhbixUaWFuZnUgQXZlCi0JCQkJQ2hlbmdkdSBTaWNodWFuIDYxMDA0MQotCQkJCUNISU5BCi0KLUVDLTdDLTc0ICAgKGhleCkJCUp1c3RvbmUgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotRUM3Qzc0ICAgICAoYmFzZSAxNikJCUp1c3RvbmUgVGVjaG5vbG9naWVzIENvLiwgTHRkLgotCQkJCVRvbmdndWFuZyBCdWlsZGluZyBGMTksIDEyIyBTb3V0aCBBZ3JpY3VsdHVyZSBFeGhpYml0aW9uIENlbnRlciBSb2FkLCAKLQkJCQlDaGFveWFuZyBEaXN0cmljdCAKLQkJCQlCZWlqaW5nICAxMDAxMjUKLQkJCQlDSElOQQotCi1FQy03RC05RCAgIChoZXgpCQlNRUkKLUVDN0Q5RCAgICAgKGJhc2UgMTYpCQlNRUkKLQkJCQkxMzAxIFdpbHNvbiBEcml2ZQotCQkJCVdlc3QgQ2hlc3RlciBQQSAxOTM4MAotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtODMtNkMgICAoaGV4KQkJUk0gVGVjaCBDby4sIEx0ZC4KLUVDODM2QyAgICAgKGJhc2UgMTYpCQlSTSBUZWNoIENvLiwgTHRkLgotCQkJCUMtODAxLCBCdXB5ZW9uZyBXb29saW0gTGlvbnMgVmFsbGV5Ci0JCQkJQ2hlb25nY2hlb24gMi1kb25nLCBCdXB5ZW9uZy1ndQotCQkJCUluY2hlb24gQ2l0eSAgNDAzLTkxMQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1FQy04NS0yRiAgIChoZXgpCQlBcHBsZSwgSW5jLgotRUM4NTJGICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMuCi0JCQkJMSBpbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vIENBIDk1MDE0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1FQy04RS1BRCAgIChoZXgpCQlETFgKLUVDOEVBRCAgICAgKGJhc2UgMTYpCQlETFgKLQkJCQkjNDAxLCBTZW9pbCBCL0QsMTM1OS00NSBTZW9jaG8yLWRvbmcKLQkJCQlTZW9jaG8ta3UsIAotCQkJCVNlb3VsICAxMzctODYzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUVDLTkyLTMzICAgKGhleCkJCUVkZHlmaSBORFQgSW5jCi1FQzkyMzMgICAgIChiYXNlIDE2KQkJRWRkeWZpIE5EVCBJbmMKLQkJCQkzNjAsIEZyYW5xdWV0IHN0cmVldAotCQkJCVN1aXRlIDQwCi0JCQkJUXVlYmVjICBHMVAgNE4zCi0JCQkJQ0FOQURBCi0KLUVDLTkzLTI3ICAgKGhleCkJCU1FTU1FUlQgR21iSCArIENvLiBLRwotRUM5MzI3ICAgICAoYmFzZSAxNikJCU1FTU1FUlQgR21iSCArIENvLiBLRwotCQkJCUFldXNzZXJlIFJpdHRlcnNiYWNoZXIgU3RyYXNzZSAzOAotCQkJCVNjaHdhYmFjaCBCYXZhcmlhIDkxMTI2Ci0JCQkJR0VSTUFOWQotCi1FQy05Ni04MSAgIChoZXgpCQkyMjc2NDI3IE9udGFyaW8gSW5jCi1FQzk2ODEgICAgIChiYXNlIDE2KQkJMjI3NjQyNyBPbnRhcmlvIEluYwotCQkJCTMxLTEyNzUgTW9ybmluZ3NpZGUgQXZlCi0JCQkJVG9yb250byBPTiBNMUIzVzEKLQkJCQlDQU5BREEKLQotRUMtOTgtNkMgICAoaGV4KQkJTHVmZnQgTWVzcy0gdW5kIFJlZ2VsdGVjaG5payBHbWJICi1FQzk4NkMgICAgIChiYXNlIDE2KQkJTHVmZnQgTWVzcy0gdW5kIFJlZ2VsdGVjaG5payBHbWJICi0JCQkJR3V0ZW5iZXJnc3RyLiAyMAotCQkJCUZlbGxiYWNoIEJhZGVuLVd1ZXJ0dGVtYmVyZyA3MDczNgotCQkJCUdFUk1BTlkKLQotRUMtOTgtQzEgICAoaGV4KQkJQmVpamluZyBSaXNibyBOZXR3b3JrIFRlY2hub2xvZ3kgQ28uLEx0ZAotRUM5OEMxICAgICAoYmFzZSAxNikJCUJlaWppbmcgUmlzYm8gTmV0d29yayBUZWNobm9sb2d5IENvLixMdGQKLQkJCQkxL0YgWWlueWFuIEJ1aWxkaW5nIDJBLE5vLjIzIEFubmluZ3podWFuZ2RvbmdsdSBIYWlkaWFuIERpc3RyaWN0IAotCQkJCUJlaWppbmcgIDEwMDA4NQotCQkJCUNISU5BCi0KLUVDLTlBLTc0ICAgKGhleCkJCUhld2xldHQgUGFja2FyZAotRUM5QTc0ICAgICAoYmFzZSAxNikJCUhld2xldHQgUGFja2FyZAotCQkJCTExNDQ1IENvbXBhcSBDZW50ZXIgRHJpdmUKLQkJCQlIb3VzdG9uIFRleGFzIDc3MDcwCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1FQy05Qi01QiAgIChoZXgpCQlOb2tpYSBDb3Jwb3JhdGlvbgotRUM5QjVCICAgICAoYmFzZSAxNikJCU5va2lhIENvcnBvcmF0aW9uCi0JCQkJRWxla3Ryb25paWtrYXRpZSAxMAotCQkJCUtlbXBlbGUgIDkwNTcwCi0JCQkJRklOTEFORAotCi1FQy05RS1DRCAgIChoZXgpCQlFbWVyc29uIE5ldHdvcmsgUG93ZXIgYW5kIEVtYmVkZGVkIENvbXB1dGluZwotRUM5RUNEICAgICAoYmFzZSAxNikJCUVtZXJzb24gTmV0d29yayBQb3dlciBhbmQgRW1iZWRkZWQgQ29tcHV0aW5nCi0JCQkJMjkwMCBTLCBEaWFibG8gV2F5IFN1aXRlIDE5MAotCQkJCVRlbXBlIEFyaXpvbmEgODUyODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLUEyLTlCICAgKGhleCkJCUtlbXBwaSBPeQotRUNBMjlCICAgICAoYmFzZSAxNikJCUtlbXBwaSBPeQotCQkJCUtlbXBpbmthdHUgMQotCQkJCVAuTy4gQm94IDEzCi0JCQkJTGFodGkgTGFodGkgMTU1MDAKLQkJCQlGSU5MQU5ECi0KLUVDLUE4LTZCICAgKGhleCkJCUVMSVRFR1JPVVAgQ09NUFVURVIgU1lTVEVNUyBDTy4sIExURC4KLUVDQTg2QiAgICAgKGJhc2UgMTYpCQlFTElURUdST1VQIENPTVBVVEVSIFNZU1RFTVMgQ08uLCBMVEQuCi0JCQkJTk8uIDIzOSwgU2VjLiAyLCBUaSBEaW5nIEJsdmQuCi0JCQkJVGFpcGVpICAxMTQ5MwotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRUMtQjEtMDYgICAoaGV4KQkJQWN1cm8gTmV0d29ya3MsIEluYwotRUNCMTA2ICAgICAoYmFzZSAxNikJCUFjdXJvIE5ldHdvcmtzLCBJbmMKLQkJCQk0MjgwOCBDaHJpc3R5IFN0LiwgU3VpdGUgMTAwCi0JCQkJRnJlbW9udCBDQSA5NDUzOAotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtQkItQUUgICAoaGV4KQkJRGlnaXZvaWNlIFRlY25vbG9naWEgZW0gRWxldHJvbmljYSBMdGRhCi1FQ0JCQUUgICAgIChiYXNlIDE2KQkJRGlnaXZvaWNlIFRlY25vbG9naWEgZW0gRWxldHJvbmljYSBMdGRhCi0JCQkJQWxhbWVkYSBKdXJ1LCAxNTkgLSBUb3JyZW8KLQkJCQlCYXJ1ZXJpIFNhbyBQYXVsbyAwNjQ1NS0wMTAKLQkJCQlCUkFaSUwKLQotRUMtQkQtMDkgICAoaGV4KQkJRlVTSU9OIEVsZWN0cm9uaWNzIEx0ZAotRUNCRDA5ICAgICAoYmFzZSAxNikJCUZVU0lPTiBFbGVjdHJvbmljcyBMdGQKLQkJCQlQTyBCb3ggMTM3IC0gMTQyCi0JCQkJUGFybmVsbAotCQkJCUF1Y2tsYW5kICAxMTUxCi0JCQkJTkVXIFpFQUxBTkQKLQotRUMtQzMtOEEgICAoaGV4KQkJQWNjdWVuZXJneSAoQ0FOQURBKSBJbmMKLUVDQzM4QSAgICAgKGJhc2UgMTYpCQlBY2N1ZW5lcmd5IChDQU5BREEpIEluYwotCQkJCTIgTGFuc2luZyBTcXVhcmUsIFN1aXRlIDUwMwotCQkJCVRvcm9udG8gT250YXJpbyBNMkogNFA4Ci0JCQkJQ0FOQURBCi0KLUVDLUM4LTgyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUVDQzg4MiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLUNELTZEICAgKGhleCkJCUFsbGllZCBUZWxlc2lzLCBJbmMuCi1FQ0NENkQgICAgIChiYXNlIDE2KQkJQWxsaWVkIFRlbGVzaXMsIEluYy4KLQkJCQkzMjAwIE5vcnRoIEZpcnN0IFN0cmVldAotCQkJCVNhbiBKb3NlIENhbGlmb3JuaWEgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLUQwLTBFICAgKGhleCkJCU1pcmFlUmVjb2duaXRpb24gQ28uLCBMdGQuCi1FQ0QwMEUgICAgIChiYXNlIDE2KQkJTWlyYWVSZWNvZ25pdGlvbiBDby4sIEx0ZC4KLQkJCQlQcmltZUJhbmsgQmxkZy4gQW5uZXgtM0YsICMyNzgtMwotCQkJCU5vbmh5dW4tZG9uZywgR2FuZ25hbS1ndQotCQkJCVNlb3VsICAxMzUtODMzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUVDLUQxLTlBICAgKGhleCkJCVpodWhhaSBMaW1pbmcgSW5kdXN0cmllcyBDby4sIEx0ZAotRUNEMTlBICAgICAoYmFzZSAxNikJCVpodWhhaSBMaW1pbmcgSW5kdXN0cmllcyBDby4sIEx0ZAotCQkJCU5vLjYgWGlucWluZyBSZCxYaW5xaW5nIEhpLVRlY2ggSW5kdXN0cmlhbCBQYXJrCi0JCQkJRG91bWVuIERpc3RyaWN0Ci0JCQkJWmh1aGFpIEd1YW5nZG9uZyA1MTkxMDAKLQkJCQlDSElOQQotCi1FQy1ERS0zRCAgIChoZXgpCQlMYW1wcmV5IE5ldHdvcmtzLCBJbmMuCi1FQ0RFM0QgICAgIChiYXNlIDE2KQkJTGFtcHJleSBOZXR3b3JrcywgSW5jLgotCQkJCTU4IERvdmVyIFJvYWQKLQkJCQlEdXJoYW0gTkggMDM4MjQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLUUwLTlCICAgKGhleCkJCVNhbXN1bmcgZWxlY3Ryb25pY3MgQ08uLCBMVEQKLUVDRTA5QiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIGVsZWN0cm9uaWNzIENPLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIFllb25ndG9uZy1ndSwKLQkJCQlTdXdvbi1DaXR5IEd5ZW9uZ2dpLWRvIDQ0My03NDIKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRUMtRTUtNTUgICAoaGV4KQkJSGlyc2NobWFubiBBdXRvbWF0aW9uCi1FQ0U1NTUgICAgIChiYXNlIDE2KQkJSGlyc2NobWFubiBBdXRvbWF0aW9uCi0JCQkJU3R1dHRnYXJ0ZXIgU3RyYXNzZSA0NS01MQotCQkJCU5lY2thcnRlbnpsaW5nZW4gQmFkZW4tV/xydHRlbWJlcmcgNzI2NTQKLQkJCQlHRVJNQU5ZCi0KLUVDLUU3LTQ0ICAgKGhleCkJCU9tbnRlYyBtZmcuIGluYwotRUNFNzQ0ICAgICAoYmFzZSAxNikJCU9tbnRlYyBtZmcuIGluYwotCQkJCTE5OTMgUG9uZCBSb2FkLgotCQkJCVJvbmtvbmtvbWEgTlkgMTE3NzkKLQkJCQlVTklURUQgU1RBVEVTCi0KLUVDLUU5LTBCICAgKGhleCkJCVNJU1RFTUEgU09MVUNPRVMgRUxFVFJPTklDQVMgTFREQSAtIEVBU1lURUNICi1FQ0U5MEIgICAgIChiYXNlIDE2KQkJU0lTVEVNQSBTT0xVQ09FUyBFTEVUUk9OSUNBUyBMVERBIC0gRUFTWVRFQ0gKLQkJCQlSVUEgR1VFUlJBIERFIEFHVUlBUiwgMjIwCi0JCQkJU0FPIFBBVUxPIFNQIDA4Mjc1LTI2MAotCQkJCUJSQVpJTAotCi1FQy1FOS1GOCAgIChoZXgpCQlHdWFuZyBaaG91IFRSSS1TVU4gRWxlY3Ryb25pY3MgVGVjaG5vbG9neSAgQ28uLCBMdGQKLUVDRTlGOCAgICAgKGJhc2UgMTYpCQlHdWFuZyBaaG91IFRSSS1TVU4gRWxlY3Ryb25pY3MgVGVjaG5vbG9neSAgQ28uLCBMdGQKLQkJCQk5dGggZmxvb3IgR3Vhbmd6aG91IGluZm8gcG9ydCBidWlsZGluZyBCLCBLZXl1biBSb2FkLCBUaWFuaGUgRGlzdHJpY3QsIEd1YW5nemhvdSAsUFJDCi0JCQkJR3Vhbmd6aG91IEd1YW5nZG9uZyA1MTA2NjUKLQkJCQlDSElOQQotCi1FQy1FQS0wMyAgIChoZXgpCQlEQVJGT04gTElHSFRJTkcgQ09SUAotRUNFQTAzICAgICAoYmFzZSAxNikJCURBUkZPTiBMSUdIVElORyBDT1JQCi0JCQkJMTY3LCBTaGFueWluZyBSb2FkCi0JCQkJR3VlaXNoYW4gVGFveXVhbiAzMzM0MQotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRUMtRjAtMEUgICAoaGV4KQkJQWJvY29tCi1FQ0YwMEUgICAgIChiYXNlIDE2KQkJQWJvY29tCi0JCQkJMUYgLCBOby4gMjEsIFlhbmZhIDJuZCBSZC4sIFNCSVAKLQkJCQlIc2luY2h1IENpdHkgIDMwMCAgODg2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1FQy1GMi0zNiAgIChoZXgpCQlORU9NT05UQU5BIEVMRUNUUk9OSUNTCi1FQ0YyMzYgICAgIChiYXNlIDE2KQkJTkVPTU9OVEFOQSBFTEVDVFJPTklDUwotCQkJCU1sYWRvc3QtNCwgYmwuIDQ4MywgbWFnLiAxMwotCQkJCVNvZmlhICAxNzE1Ci0JCQkJQlVMR0FSSUEKLQotRUMtRkEtQUEgICAoaGV4KQkJVGhlIElNUyBDb21wYW55Ci1FQ0ZBQUEgICAgIChiYXNlIDE2KQkJVGhlIElNUyBDb21wYW55Ci0JCQkJMjkyOSBFLiBJbXBlcmlhbCBIaWdod2F5Ci0JCQkJU3VpdGUgMTcwCi0JCQkJQnJlYSBDQSA5MjgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRUMtRkUtN0UgICAoaGV4KQkJQmx1ZVJhZGlvcywgSW5jLgotRUNGRTdFICAgICAoYmFzZSAxNikJCUJsdWVSYWRpb3MsIEluYy4KLQkJCQk3MTczIFMuIEhhdmFuYSBTdHJlZXQsIFN1aXRlIDYwMAotCQkJCUVuZ2xld29vZCBDb2xvcmFkbyA4MDExMgotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtMDAtN0YgICAoaGV4KQkJSmFueiAtIENvbnRhZG9yZXMgZGUgRW5lcmdpYSwgU0EKLUYwMDA3RiAgICAgKGJhc2UgMTYpCQlKYW56IC0gQ29udGFkb3JlcyBkZSBFbmVyZ2lhLCBTQQotCQkJCUF2ZW5pZGEgSW5mYW50ZSBELiBIZW5yaXF1ZQotCQkJCTMyOAotCQkJCUxpc2JvbiAgMTgwMC0yMjMKLQkJCQlQT1JUVUdBTAotCi1GMC0wMi0yQiAgIChoZXgpCQlDaHJvbnRlbAotRjAwMjJCICAgICAoYmFzZSAxNikJCUNocm9udGVsCi0JCQkJMjIxMCBPVG9vbGUgQXZlLiwgU3VpdGUgMTAwCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUYwLTAyLTQ4ICAgKGhleCkJCVNtYXJ0ZUJ1aWxkaW5nCi1GMDAyNDggICAgIChiYXNlIDE2KQkJU21hcnRlQnVpbGRpbmcKLQkJCQkzMjY3IEJlZSBDYXZlIFJvYWQKLQkJCQkxMDctMTczCi0JCQkJQXVzdGluIFRYIDc4NzQ2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC0wNy04NiAgIChoZXgpCQlTaGFuZG9uZyBCaXR0ZWwgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLUYwMDc4NiAgICAgKGJhc2UgMTYpCQlTaGFuZG9uZyBCaXR0ZWwgRWxlY3Ryb25pY3MgQ28uLCBMdGQKLQkJCQlOby4xIFJpemhhbyBOb3J0aCBSb2FkCi0JCQkJUml6aGFvIFNoYW5kb25nIDI3NjgwMAotCQkJCUNISU5BCi0KLUYwLTA4LUYxICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotRjAwOEYxICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GMC0xMy1DMyAgIChoZXgpCQlTSEVOWkhFTiBGRU5EQSBURUNITk9MT0dZIENPLiwgTFRECi1GMDEzQzMgICAgIChiYXNlIDE2KQkJU0hFTlpIRU4gRkVOREEgVEVDSE5PTE9HWSBDTy4sIExURAotCQkJCUZlbmRhIEhpLVRlY2ggUGFyaywgWmhvdXNoaSBSb2FkLCBTaGl5YW4sIEJhb2FuCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODEwOAotCQkJCUNISU5BCi0KLUYwLTFDLTEzICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzCi1GMDFDMTMgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MKLQkJCQk2MC0zOSAsIEthc2FuLWRvbmcsIEd1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjAtMjQtMDggICAoaGV4KQkJVGFsYXJpcyAoU3dlZGVuKSBBQgotRjAyNDA4ICAgICAoYmFzZSAxNikJCVRhbGFyaXMgKFN3ZWRlbikgQUIKLQkJCQlUYWxqcyBTb2RyYSBJbmR1c3RyaW9tcmFkZQotCQkJCUZsZW4gIDY0Mjg0Ci0JCQkJU1dFREVOCi0KLUYwLTI1LTcyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUYwMjU3MiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUYwLTI2LTRDICAgKGhleCkJCURyLiBTaWdyaXN0IEFHCi1GMDI2NEMgICAgIChiYXNlIDE2KQkJRHIuIFNpZ3Jpc3QgQUcKLQkJCQlIb2Z1cmxpc3RyYXNzZSAxCi0JCQkJRW5uZXRi/HJnZW4gIDYzNzMKLQkJCQlTV0lUWkVSTEFORAotCi1GMC0yQS02MSAgIChoZXgpCQlXYWxkbyBOZXR3b3JrcywgSW5jLgotRjAyQTYxICAgICAoYmFzZSAxNikJCVdhbGRvIE5ldHdvcmtzLCBJbmMuCi0JCQkJNDUwNSBTcGljZXdvb2QgU3ByaW5ncyBSZAotCQkJCVN1aXRlIDMzMwotCQkJCUF1c3RpbiBUZXhhcyA3ODc1OQotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtMkYtRDggICAoaGV4KQkJQmkyLVZpc2lvbgotRjAyRkQ4ICAgICAoYmFzZSAxNikJCUJpMi1WaXNpb24KLQkJCQkxNi01MDQsIDIxLWJhbiwgU2hpbW9tYXJ1a28gNC1jaG9tZSwgT290YS1rdQotCQkJCVRva3lvICAxNDYtMDA5MgotCQkJCUpBUEFOCi0KLUYwLTNBLTU1ICAgKGhleCkJCU9tZWdhIEVsZWt0cm9uaWsgQVMKLUYwM0E1NSAgICAgKGJhc2UgMTYpCQlPbWVnYSBFbGVrdHJvbmlrIEFTCi0JCQkJRWdlIFNlcmJlc3QgQm9sZ2VzaQotCQkJCUl6bWlyICAzNTQxMAotCQkJCVRVUktFWQotCi1GMC00My0zNSAgIChoZXgpCQlEVk4oU2hhbmdoYWkpTHRkLgotRjA0MzM1ICAgICAoYmFzZSAxNikJCURWTihTaGFuZ2hhaSlMdGQuCi0JCQkJMTFGLEhlY2h1YW4gQnVpbGRpbmcsMjAxNiBZaXNoYW4gUmQsCi0JCQkJU2hhbmdoYWkgIDIwMTEwMwotCQkJCUNISU5BCi0KLUYwLTRBLTJCICAgKGhleCkJCVBZUkFNSUQgQ29tcHV0ZXIgR21iSAotRjA0QTJCICAgICAoYmFzZSAxNikJCVBZUkFNSUQgQ29tcHV0ZXIgR21iSAotCQkJCUJvZXR6aW5nZXIgU3RyYXNzZSA2MAotCQkJCUZyZWlidXJnIEJXIDc5MTExCi0JCQkJR0VSTUFOWQotCi1GMC00Qi02QSAgIChoZXgpCQlTY2llbnRpZmljIFByb2R1Y3Rpb24gQXNzb2NpYXRpb24gU2liZXJpYW4gQXJzZW5hbCwgTHRkLgotRjA0QjZBICAgICAoYmFzZSAxNikJCVNjaWVudGlmaWMgUHJvZHVjdGlvbiBBc3NvY2lhdGlvbiBTaWJlcmlhbiBBcnNlbmFsLCBMdGQuCi0JCQkJQmxkLjhBLCBHb3Jza2l5IE1pY3JvZGlzdHJpY3QKLQkJCQlOb3Zvc2liaXJzayAgNjMwMDczCi0JCQkJUlVTU0lBTiBGRURFUkFUSU9OCi0KLUYwLTRCLUYyICAgKGhleCkJCUpURUNIIENvbW11bmljYXRpb25zLCBJbmMuCi1GMDRCRjIgICAgIChiYXNlIDE2KQkJSlRFQ0ggQ29tbXVuaWNhdGlvbnMsIEluYy4KLQkJCQk2NDEzIENvbmdyZXNzIEF2ZS4KLQkJCQlCb2NhIFJhdG9uIEZMIDMzNDg3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC00RC1BMiAgIChoZXgpCQlEZWxsIEluYy4KLUYwNERBMiAgICAgKGJhc2UgMTYpCQlEZWxsIEluYy4KLQkJCQlPbmUgRGVsbCB3YXksIE1TIFJSNS00NQotCQkJCVJvdW5kIHJvY2sgIFRleGFzIDc4NjgyCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC01OC00OSAgIChoZXgpCQlDYXJlVmlldyBDb21tdW5pY2F0aW9ucwotRjA1ODQ5ICAgICAoYmFzZSAxNikJCUNhcmVWaWV3IENvbW11bmljYXRpb25zCi0JCQkJNDA1IFN0YXRlIEhXWSAxMjEgQllQCi0JCQkJU3VpdGUgQjI0MAotCQkJCUxld2lzdmlsbGUgIFRleGFzIDc1MDY3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC01RC04OSAgIChoZXgpCQlEeWNvbiBMaW1pdGVkCi1GMDVEODkgICAgIChiYXNlIDE2KQkJRHljb24gTGltaXRlZAotCQkJCVVuaXQgRAotCQkJCUN3bSBDeW5vbiBCdXNpbmVzcyBQYXJrCi0JCQkJTW91bnRhaW4gQXNoIFJob25kZGEgQ3lub24gVGFmZiBDRjQ1IDRFUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUYwLTYyLTBEICAgKGhleCkJCVNoZW56aGVuIEVncmVhdCBUZWNoIENvcnAuLEx0ZAotRjA2MjBEICAgICAoYmFzZSAxNikJCVNoZW56aGVuIEVncmVhdCBUZWNoIENvcnAuLEx0ZAotCQkJCTRGLDFCdWlsZGluZyxDaHVhbmd5ZSBJbmR1c3RyaWFsIHBhcmsKLQkJCQlTaGFzYW4sU2hhamluZywKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTA0Ci0JCQkJQ0hJTkEKLQotRjAtNjItODEgICAoaGV4KQkJUHJvQ3VydmUgTmV0d29ya2luZyBieSBIUAotRjA2MjgxICAgICAoYmFzZSAxNikJCVByb0N1cnZlIE5ldHdvcmtpbmcgYnkgSFAKLQkJCQk4MDAwIEZvb3RoaWxscyBCbHZkLgotCQkJCVJvc2V2aWxsZSBDYWxpZm9ybmlhIDk1NzQ3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GMC02NS1ERCAgIChoZXgpCQlQcmltYXggRWxlY3Ryb25pY3MgTHRkLgotRjA2NUREICAgICAoYmFzZSAxNikJCVByaW1heCBFbGVjdHJvbmljcyBMdGQuCi0JCQkJNjY5LCBSdWV5IEt1YW5nIFJvYWQsIE5laWh1Ci0JCQkJVGFpcGVpICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUYwLTY4LTUzICAgKGhleCkJCUludGVncmF0ZWQgQ29ycG9yYXRpb24KLUYwNjg1MyAgICAgKGJhc2UgMTYpCQlJbnRlZ3JhdGVkIENvcnBvcmF0aW9uCi0JCQkJMy9GLCBTaHVuIE9uIENvbW1lcmNpYWwgQmxkZy4sIAotCQkJCTExMi0xMTQgRGVzIFZvZXV4IFJvYWQsIEMuLAotCQkJCUNldG5yYWwsICAKLQkJCQlIT05HIEtPTkcKLQotRjAtNzctRDAgICAoaGV4KQkJWGNlbGxlbgotRjA3N0QwICAgICAoYmFzZSAxNikJCVhjZWxsZW4KLQkJCQkxNUYgS0lOUyBUb3dlciAyNS0xLEplb25namEtZG9uZyxCdW5nZGFuZy1ndSwKLQkJCQlTZW9uZ25hbSBHeWVvbmdnaSA0NjM4MTEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjAtN0ItQ0IgICAoaGV4KQkJSG9uIEhhaSBQcmVjaXNpb24gSW5kLiBDby4sTHRkLiAKLUYwN0JDQiAgICAgKGJhc2UgMTYpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotCQkJCU5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAgMjAxNjEzIAotCQkJCUNISU5BCi0KLUYwLTdELTY4ICAgKGhleCkJCUQtTGluayBDb3Jwb3JhdGlvbgotRjA3RDY4ICAgICAoYmFzZSAxNikJCUQtTGluayBDb3Jwb3JhdGlvbgotCQkJCU5vLjI4OSwgU2luaHUgM3JkIFJkLiwgTmVpaHUgRGlzdHJpY3QsIAotCQkJCVRhaXBlaSBDaXR5ICAxMTQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUYwLTgxLUFGICAgKGhleCkJCUlSWiBBVVRPTUFUSU9OIFRFQ0hOT0xPR0lFUyBMVEQKLUYwODFBRiAgICAgKGJhc2UgMTYpCQlJUlogQVVUT01BVElPTiBURUNITk9MT0dJRVMgTFRECi0JCQkJVW5pdCA5LTEwIDI3L0YgU2VhcG93ZXIgVG93ZXIKLQkJCQlDb25jb3JkaWEgUGxhemEgMSBTY2llbmNlIE11c2V1bSBSZCxUc2ltU2hhVHN1aQotCQkJCUtvd2xvb24gCi0JCQkJSE9ORyBLT05HCi0KLUYwLThCLUZFICAgKGhleCkJCUNPU1RFTC4sQ08uTFRECi1GMDhCRkUgICAgIChiYXNlIDE2KQkJQ09TVEVMLixDTy5MVEQKLQkJCQkyMjMtMzksIFNhbmdkYWV3b24tRG9uZywgSnVuZ3dvbi1HdQotCQkJCVNlb25nbmFtLXNpIEt5dW5nZ2ktRG8gNDYyLTgwNwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GMC05My0zQSAgIChoZXgpCQlOeHRDb25lY3QKLUYwOTMzQSAgICAgKGJhc2UgMTYpCQlOeHRDb25lY3QKLQkJCQlTY2hpbGxlcnN0cmFzc2UgNAotCQkJCUJhZCBLaXNzaW5nZW4gIDk3Njg4Ci0JCQkJR0VSTUFOWQotCi1GMC05Qy1CQiAgIChoZXgpCQlSYW9uVGhpbmsgSW5jLgotRjA5Q0JCICAgICAoYmFzZSAxNikJCVJhb25UaGluayBJbmMuCi0JCQkJOTE2LCBCeXVja3NhbiBEaWdpdGFsIFZhbGxleSAyLUNoYSwgNDgxLTEwLCBLYXNhbi1Eb25nLCBLdW1jaGVvbi1HdSwgCi0JCQkJU2VvdWwgIDE1My03ODMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjAtQTItMjUgICAoaGV4KQkJUFJJVkFURQotRjBBMjI1ICAgICAoYmFzZSAxNikJCSAKLQkJCQkgCi1GMC1BNy02NCAgIChoZXgpCQlHU1QgQ28uLCBMdGQuCi1GMEE3NjQgICAgIChiYXNlIDE2KQkJR1NUIENvLiwgTHRkLgotCQkJCSM5MTksIEdvc2Flay1kb25nLCBHd29uc2Vvbi1ndSwKLQkJCQlTdXdvbi1zaSBHeWVvbmdnaS1kbyA0NDEtODEzCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUYwLUFELTRFICAgKGhleCkJCUdsb2JhbHNjYWxlIFRlY2hub2xvZ2llcywgSW5jLgotRjBBRDRFICAgICAoYmFzZSAxNikJCUdsb2JhbHNjYWxlIFRlY2hub2xvZ2llcywgSW5jLgotCQkJCTVGLCBOby4gMiBCdWlsZGluZywgTWlueGluZyBJbmR1c3RyaWFsIFBhcmsKLQkJCQlNaW5rYW5nIFJkLiwgTWluemhpIFN0LiwgQmFvYW4gRGlzdC4KLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MTA5Ci0JCQkJQ0hJTkEKLQotRjAtQUUtNTEgICAoaGV4KQkJWGkzIENvcnAKLUYwQUU1MSAgICAgKGJhc2UgMTYpCQlYaTMgQ29ycAotCQkJCTI5OSBTLiBNYWluIFN0LgotCQkJCVN1aXRlIDEzMDAKLQkJCQlTYWx0IExha2UgQ2l0eSBVVCA4NDExMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtQjQtNzkgICAoaGV4KQkJQXBwbGUsIEluYy4KLUYwQjQ3OSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCUN1cGVydGlubyBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtQjYtRUIgICAoaGV4KQkJUG9zbGFiIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi1GMEI2RUIgICAgIChiYXNlIDE2KQkJUG9zbGFiIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJNUYtMSwgTm8uNDkwIEJhbm5hbiBSZC4KLQkJCQlUYWlwZWkgQ291bnR5Ci0JCQkJSmhvbmdoZSBDaXR5ICAyMzUKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUYwLUJDLUM4ICAgKGhleCkJCU1heElEIChQdHkpIEx0ZAotRjBCQ0M4ICAgICAoYmFzZSAxNikJCU1heElEIChQdHkpIEx0ZAotCQkJCTQzIEhvbWVzdGVhZCBSb2FkCi0JCQkJUml2b25pYQotCQkJCUpvaGFubmVzYnVyZyBHYXV0ZW5nIDIxMjgKLQkJCQlTT1VUSCBBRlJJQ0EKLQotRjAtQkQtRjEgICAoaGV4KQkJU2lwb2QgSW5jLgotRjBCREYxICAgICAoYmFzZSAxNikJCVNpcG9kIEluYy4KLQkJCQk0NjMzIE9sZCBJcm9uc2lkZXMgRHJpdmUsICM0MDAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtQkYtOTcgICAoaGV4KQkJU29ueSBDb3Jwb3JhdGlvbgotRjBCRjk3ICAgICAoYmFzZSAxNikJCVNvbnkgQ29ycG9yYXRpb24KLQkJCQlHb3RlbnlhbWEgVGVjLgotCQkJCTUtMS0xMiBLaXRhc2hpbmFnYXdhIFNoaW5hZ2F3YS1rdQotCQkJCVRva3lvICAxNDEtMDAwMQotCQkJCUpBUEFOCi0KLUYwLUMyLTRDICAgKGhleCkJCVpoZWppYW5nIEZlaVl1ZSBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLCBMdGQKLUYwQzI0QyAgICAgKGJhc2UgMTYpCQlaaGVqaWFuZyBGZWlZdWUgRGlnaXRhbCBUZWNobm9sb2d5IENvLiwgTHRkCi0JCQkJQmFvdGluZyBJbmR1c3RyaWFsIFBhcmssIDUzMSBKaWFvZ29uZyBSb2FkCi0JCQkJIEhhbmd6aG91IENpdHkgWmhlamlhbmcgUHJvdmluY2UgMzEwMDEyCi0JCQkJQ0hJTkEKLQotRjAtQzItN0MgICAoaGV4KQkJTWlhbnlhbmcgTmV0b3AgVGVsZWNvbSBFcXVpcG1lbnQgQ28uLEx0ZC4KLUYwQzI3QyAgICAgKGJhc2UgMTYpCQlNaWFueWFuZyBOZXRvcCBUZWxlY29tIEVxdWlwbWVudCBDby4sTHRkLgotCQkJCU5vLjExMSxFYXN0IHNlY3Rpb24gb2YgUHVtaW5nIFNvdXRoIFJvYWQsCi0JCQkJSGktdGVjaCB6b25lLAotCQkJCU1pYW55YW5nIENpdHkgU2ljaHVhbiBQcm92aW5jZSwgIDYyMTAwMAotCQkJCUNISU5BCi0KLUYwLUM4LThDICAgKGhleCkJCUxlZGRhclRlY2ggSW5jLgotRjBDODhDICAgICAoYmFzZSAxNikJCUxlZGRhclRlY2ggSW5jLgotCQkJCTI3NDAgRWluc3RlaW4gU3RyZWV0Ci0JCQkJUXVlYmVjIENpdHkgIEcxUCA0UzQKLQkJCQlDQU5BREEKLQotRjAtQ0ItQTEgICAoaGV4KQkJQXBwbGUsIEluYy4KLUYwQ0JBMSAgICAgKGJhc2UgMTYpCQlBcHBsZSwgSW5jLgotCQkJCTEgSW5maW5pdGUgTG9vcAotCQkJCWN1cGVydGlubyAgY0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUYwLUQxLTRGICAgKGhleCkJCUxJTkVBUiBMTEMKLUYwRDE0RiAgICAgKGJhc2UgMTYpCQlMSU5FQVIgTExDCi0JCQkJMTk1MCBDQU1JTk8gVklEQSBST0JMRSAjMTUwCi0JCQkJQ0FSTFNCQUQgQ0EgOTIwMDgtNjUxNwotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtRDctNjcgICAoaGV4KQkJQXhlbWEgUGFzc2FnZWtvbnRyb2xsIEFCCi1GMEQ3NjcgICAgIChiYXNlIDE2KQkJQXhlbWEgUGFzc2FnZWtvbnRyb2xsIEFCCi0JCQkJQm94IDkwIDIxNQotCQkJCVN0b2NraG9sbSAgMTIwIDIzIAotCQkJCVNXRURFTgotCi1GMC1EQS03QyAgIChoZXgpCQlSTEggSU5EVVNUUklFUyxJTkMuCi1GMERBN0MgICAgIChiYXNlIDE2KQkJUkxIIElORFVTVFJJRVMsSU5DLgotCQkJCTkzNiBOLiBNQUlOIFNULgotCQkJCU9SQU5HRSBDQSA5Mjg2NwotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtREItMzAgICAoaGV4KQkJWW90dGFieXRlCi1GMERCMzAgICAgIChiYXNlIDE2KQkJWW90dGFieXRlCi0JCQkJMTc1MCBTLiBUZWxlZ3JhcGggUm9hZAotCQkJCVN1aXRlIDIwMAotCQkJCUJsb29tZmllbGQgVHdwLiBNSSA0ODMwMgotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtREMtRTIgICAoaGV4KQkJQXBwbGUgSW5jCi1GMERDRTIgICAgIChiYXNlIDE2KQkJQXBwbGUgSW5jCi0JCQkJMSBJbmZpbml0ZSBMb29wCi0JCQkJQ3VwZXJ0aW5vICBDQSA5NTAxNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtREUtNzEgICAoaGV4KQkJU2hhbmdoYWkgRURPIFRlY2hub2xvZ2llcyBDby4sTHRkLgotRjBERTcxICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEVETyBUZWNobm9sb2dpZXMgQ28uLEx0ZC4KLQkJCQlVbml0IDEyMzAyLCBCdWlsZGluZyAxMiw0OTggR3Vvc2hvdWppbmcgUm9hZCwgUHVkb25nIE5ldyBBcmVhCi0JCQkJU2hhbmdoYWkgIDIwMTIwMwotCQkJCUNISU5BCi0KLUYwLURFLUI5ICAgKGhleCkJCVNoYW5nSGFpIFkmWSBFbGVjdHJvbmljcyBDby4sIEx0ZAotRjBERUI5ICAgICAoYmFzZSAxNikJCVNoYW5nSGFpIFkmWSBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCU5vLjMsIDU4OCBUaWFueGlvbmcgUm9hZCwgU2hhbmdoYWkgSW50ZXJuYXRpb25hbCBNZWRpY2FsIFpvbmUoU0lNWiksCi0JCQkJUHVEb25nIE5ldyBEaXN0cmljdCAKLQkJCQlTaGFuZ2hhaSAgMjAxMzE4Ci0JCQkJQ0hJTkEKLQotRjAtREUtRjEgICAoaGV4KQkJV2lzdHJvbiBJbmZvQ29tbSAoS3Vuc2hhbilDbwotRjBERUYxICAgICAoYmFzZSAxNikJCVdpc3Ryb24gSW5mb0NvbW0gKEt1bnNoYW4pQ28KLQkJCQkxNjhLdW5TaGFuLCAKLQkJCQlKaWFuZ1N1ICAyMTUzMDAKLQkJCQlDSElOQQotCi1GMC1FNS1DMyAgIChoZXgpCQlEcmFlZ2Vyd2VyayBBRyAmYW1wO2FtcDsgQ28uIEtHIGFBCi1GMEU1QzMgICAgIChiYXNlIDE2KQkJRHJhZWdlcndlcmsgQUcgJmFtcDthbXA7IENvLiBLRyBhQQotCQkJCU1vaXNsaW5nZXIgQWxsZWUgNTMtNTUKLQkJCQlMdWViZWNrIEdlcm1hbnkgMjM0NTIKLQkJCQlHRVJNQU5ZCi0KLUYwLUU3LTdFICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotRjBFNzdFICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GMC1FQy0zOSAgIChoZXgpCQlFc3NlYwotRjBFQzM5ICAgICAoYmFzZSAxNikJCUVzc2VjCi0JCQkJU2Nob2Vicm9la3N0cmFhdCA0OAotCQkJCVBhYWwgTGltYnVyZyAzNTgzCi0JCQkJQkVMR0lVTQotCi1GMC1FRC0xRSAgIChoZXgpCQlCaWxrb24gQmlsZ2lzYXlhciBLb250cm9sbHUgQ2loLiBJbS5MdGQuCi1GMEVEMUUgICAgIChiYXNlIDE2KQkJQmlsa29uIEJpbGdpc2F5YXIgS29udHJvbGx1IENpaC4gSW0uTHRkLgotCQkJCUdlcnNhbiBTYW5heWkgU2l0ZXNpIDY1OC5Tb2thayBObzoxNgotCQkJCVlFTklNQUhBTExFLSBCQVRJS0VOVAotCQkJCUFOS0FSQSAgMDYzNzAKLQkJCQlUVVJLRVkKLQotRjAtRUUtQkIgICAoaGV4KQkJVklQQVIgR21iSAotRjBFRUJCICAgICAoYmFzZSAxNikJCVZJUEFSIEdtYkgKLQkJCQlMaWNodGVuYmVyZ3N0cmFzc2UgOAotCQkJCUdhcmNoaW5nIGJlaSBNdWVuY2hlbiBCYXZhcmlhIDg1NzQ4Ci0JCQkJR0VSTUFOWQotCi1GMC1GMC0wMiAgIChoZXgpCQlIb24gSGFpIFByZWNpc2lvbiBJbmQuIENvLixMdGQuIAotRjBGMDAyICAgICAoYmFzZSAxNikJCUhvbiBIYWkgUHJlY2lzaW9uIEluZC4gQ28uLEx0ZC4gCi0JCQkJIE5PLjE5MjUsTmFubGUgUm9hZCAsU29uZ2ppYW5nIEV4cG9ydCBQcm9jZXNzaW5nIFpvbmUgCi0JCQkJU2hhbmdoYWkgICAyMDE2MTMKLQkJCQlDSElOQQotCi1GMC1GNy01NSAgIChoZXgpCQlDaXNjbyBTeXN0ZW1zCi1GMEY3NTUgICAgIChiYXNlIDE2KQkJQ2lzY28gU3lzdGVtcwotCQkJCTgwIFdlc3QgVGFzbWFuIERyLgotCQkJCVNKQ00xLTEKLQkJCQlTYW4gSm9zZSBDQSA5NTEzNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjAtRjctQjMgICAoaGV4KQkJUGhvcm0KLUYwRjdCMyAgICAgKGJhc2UgMTYpCQlQaG9ybQotCQkJCTIyMiBSZWdlbnQgU3RyZWV0Ci0JCQkJTG9uZG9uICBXMUIgNVRSCi0JCQkJVU5JVEVEIEtJTkdET00KLQotRjAtRjgtNDIgICAoaGV4KQkJS0VFQk9YLCBJbmMuCi1GMEY4NDIgICAgIChiYXNlIDE2KQkJS0VFQk9YLCBJbmMuCi0JCQkJMTAgUG9wcHkgVHJhaWwKLQkJCQlSb2xsaW5nIEhpbGxzIENhbGlmb3JuaWEgOTAyNzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUYwLUY5LUY3ICAgKGhleCkJCUlFUyBHbWJIICZhbXA7IENvLiBLRwotRjBGOUY3ICAgICAoYmFzZSAxNikJCUlFUyBHbWJIICZhbXA7IENvLiBLRwotCQkJCURhcm1jaGVyIEdydW5kIDIyCi0JCQkJTWVpbmVyemhhZ2VuICA1ODU0MAotCQkJCUdFUk1BTlkKLQotRjAtRkQtQTAgICAoaGV4KQkJQWN1cml4IE5ldHdvcmtzIExQCi1GMEZEQTAgICAgIChiYXNlIDE2KQkJQWN1cml4IE5ldHdvcmtzIExQCi0JCQkJUE8gQm94IDM4MzgKLQkJCQlTaG9ydGxhbmQgU3QKLQkJCQlBdWNrbGFuZCBBS0wgMTAyMQotCQkJCU5FVyBaRUFMQU5ECi0KLUY0LTAzLTIxICAgKGhleCkJCUJlTmVYdCBCLlYuCi1GNDAzMjEgICAgIChiYXNlIDE2KQkJQmVOZVh0IEIuVi4KLQkJCQlUZXIgR291d3N0cmFhdCAzCi0JCQkJQW1zdGVyZGFtIE5IIDEwOTNKWAotCQkJCU5FVEhFUkxBTkRTCi0KLUY0LTA0LTRDICAgKGhleCkJCVZhbGVuY2VUZWNoIExpbWl0ZWQKLUY0MDQ0QyAgICAgKGJhc2UgMTYpCQlWYWxlbmNlVGVjaCBMaW1pdGVkCi0JCQkJVW5pdCAxLCAyMC9GLiwgQVBFQyBQbGF6YQotCQkJCTQ5IEhvaSBZdWVuIFJvYWQsICBLd3VuIFRvbmcsIEtvd2xvb24KLQkJCQlIT05HIEtPTkcgIE5JTAotCQkJCUNISU5BCi0KLUY0LTBCLTkzICAgKGhleCkJCVJlc2VhcmNoIEluIE1vdGlvbgotRjQwQjkzICAgICAoYmFzZSAxNikJCVJlc2VhcmNoIEluIE1vdGlvbgotCQkJCTI5NSBQaGlsbGlwIFN0cmVldAotCQkJCVdhdGVybG9vIE9udGFyaW8gTjJMIDVSOQotCQkJCUNBTkFEQQotCi1GNC0xRi0wQiAgIChoZXgpCQlZQU1BQklTSEkgQ29ycG9yYXRpb24KLUY0MUYwQiAgICAgKGJhc2UgMTYpCQlZQU1BQklTSEkgQ29ycG9yYXRpb24KLQkJCQkzLTE0LTEyIEthbWlnb3UKLQkJCQlFYmluYS1jaXR5IEtBTkFHQVdBIDI0My0wNDM0Ci0JCQkJSkFQQU4KLQotRjQtMzYtRTEgICAoaGV4KQkJQWJpbGlzIFN5c3RlbXMgU0FSTAotRjQzNkUxICAgICAoYmFzZSAxNikJCUFiaWxpcyBTeXN0ZW1zIFNBUkwKLQkJCQkzLCBjaGVtaW4gUHLvv70gRmxldXJpCi0JCQkJUGxhbi1MZXMtT3VhdGVzIEdlbmV2YSAxMjI4Ci0JCQkJU1dJVFpFUkxBTkQKLQotRjQtMzgtMTQgICAoaGV4KQkJU2hhbmdoYWkgSG93ZWxsIEVsZWN0cm9uaWMgQ28uLEx0ZAotRjQzODE0ICAgICAoYmFzZSAxNikJCVNoYW5naGFpIEhvd2VsbCBFbGVjdHJvbmljIENvLixMdGQKLQkJCQk1LTUvRiwgQmxkZy4xLCBOby43ODggRmVuZ3poZW4gUmQuLCAKLQkJCQlTaGFuZ2hhaSAgIDIwMDQzNAotCQkJCUNISU5BCi0KLUY0LTNELTgwICAgKGhleCkJCUZBRyBJbmR1c3RyaWFsIFNlcnZpY2VzIEdtYkgKLUY0M0Q4MCAgICAgKGJhc2UgMTYpCQlGQUcgSW5kdXN0cmlhbCBTZXJ2aWNlcyBHbWJICi0JCQkJS2Fpc2Vyc3RyYXNzZSAxMDAKLQkJCQlIZXJ6b2dlbnJhdGggTlJXIDUyMTM0Ci0JCQkJR0VSTUFOWQotCi1GNC0zRS02MSAgIChoZXgpCQlTaGVuemhlbiBHb25namluIEVsZWN0cm9uaWNzIENvLiwgTHRkCi1GNDNFNjEgICAgIChiYXNlIDE2KQkJU2hlbnpoZW4gR29uZ2ppbiBFbGVjdHJvbmljcyBDby4sIEx0ZAotCQkJCTJGIEJhaXlpbmcgQnVpbGRpbmcKLQkJCQkxMDE5IyBOYWloYWkgUkQsIE5hbnNoYW4gU2VjdGlvbgotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNjcKLQkJCQlDSElOQQotCi1GNC0zRS05RCAgIChoZXgpCQlCZW51IE5ldHdvcmtzLCBJbmMuCi1GNDNFOUQgICAgIChiYXNlIDE2KQkJQmVudSBOZXR3b3JrcywgSW5jLgotCQkJCTMwMCBDb25jb3JkIFJkLiwgU3VpdGUgIzExMAotCQkJCUJpbGxlcmljYSBNQSAwMTgyMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtNDItMjcgICAoaGV4KQkJUyAmIFMgUmVzZWFyY2ggSW5jLgotRjQ0MjI3ICAgICAoYmFzZSAxNikJCVMgJiBTIFJlc2VhcmNoIEluYy4KLQkJCQk4OSBBY2Nlc3MgUmQgIzEwCi0JCQkJTm9yd29vZCBNQSAwMjA2MgotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtNDQtNTAgICAoaGV4KQkJQk5EIENvLiwgTHRkLgotRjQ0NDUwICAgICAoYmFzZSAxNikJCUJORCBDby4sIEx0ZC4KLQkJCQk1NzMtMTMgQm9raHllb24tZG9uZywgQnVrLWd1Ci0JCQkJSVQtY29udmVyZ2VuY2UgQkxERy4gMTBGCi0JCQkJRGFlZ3UgIDcwMi0wMjAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjQtNDUtRUQgICAoaGV4KQkJUG9ydGFibGUgSW5ub3ZhdGlvbiBUZWNobm9sb2d5IEx0ZC4KLUY0NDVFRCAgICAgKGJhc2UgMTYpCQlQb3J0YWJsZSBJbm5vdmF0aW9uIFRlY2hub2xvZ3kgTHRkLgotCQkJCTYwMS02MDIsIDYvRiBQYXJrIEJ1aWxkaW5nLAotCQkJCTQ3NiBDYXN0bGUgUGVhayBSb2FkLAotCQkJCUtvd2xvb24gIAotCQkJCUhPTkcgS09ORwotCi1GNC00OC00OCAgIChoZXgpCQlBbXNjcmVlbiBHcm91cCBMdGQKLUY0NDg0OCAgICAgKGJhc2UgMTYpCQlBbXNjcmVlbiBHcm91cCBMdGQKLQkJCQlQYXJhZ29uIEJ1c2luZXNzIFBhcmsKLQkJCQlDaG9ybGV5IE5ldyBSb2FkLCBIb3J3aWNoCi0JCQkJQm9sdG9uIExhbmNzIEJMNiA2SEcKLQkJCQlVTklURUQgS0lOR0RPTQotCi1GNC00RS1GRCAgIChoZXgpCQlBY3Rpb25zIFNlbWljb25kdWN0b3IgQ28uLEx0ZC4oQ2F5bWFuIElzbGFuZHMpCi1GNDRFRkQgICAgIChiYXNlIDE2KQkJQWN0aW9ucyBTZW1pY29uZHVjdG9yIENvLixMdGQuKENheW1hbiBJc2xhbmRzKQotCQkJCVBvIEJveCAzMDlHVCxVZ2xhbmQgSG91c2UsU291dGggQ2h1cmNoIFN0cmVldCwKLQkJCQlHZW9yZ2UgVG93biBHcmFuZCBDYXltYW4gCi0JCQkJQ0FZTUFOIElTTEFORFMKLQotRjQtNTAtRUIgICAoaGV4KQkJVGVsZWNoaXBzIEluYwotRjQ1MEVCICAgICAoYmFzZSAxNikJCVRlbGVjaGlwcyBJbmMKLQkJCQlLT1JBRCBCbGRnLDEwMDAtMTIsIERhZWNoaS1Eb25nLCBHYW5nbmFtLUd1LAotCQkJCVNlb3VsICAxMzUtMjgwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUY0LTU0LTMzICAgKGhleCkJCVJvY2t3ZWxsIEF1dG9tYXRpb24KLUY0NTQzMyAgICAgKGJhc2UgMTYpCQlSb2Nrd2VsbCBBdXRvbWF0aW9uCi0JCQkJMSBBbGxlbi1CcmFkbGV5IERyaXZlCi0JCQkJQ1MtQzIzOQotCQkJCU1heWZpZWxkIEhlaWdodHMgIE9oaW8KLQkJCQlVTklURUQgU1RBVEVTCi0KLUY0LTU1LTk1ICAgKGhleCkJCUhFTkdCQU8gQ29ycG9yYXRpb24gTFRELgotRjQ1NTk1ICAgICAoYmFzZSAxNikJCUhFTkdCQU8gQ29ycG9yYXRpb24gTFRELgotCQkJCTh0aCBGbG9vcixUb3dlciBCLFhpbnNoZW5nIE1hbnNpb24gTm8uNSBGaW5hbmNpYWwgU3RyZWV0LAotCQkJCVhpY2hlbmcgRGlzdHJpY3QKLQkJCQlCZWlqaW5nICAxMDAxNDAKLQkJCQlDSElOQQotCi1GNC01NS05QyAgIChoZXgpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi1GNDU1OUMgICAgIChiYXNlIDE2KQkJSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QKLQkJCQlTaGVuemhlbiBHdWFuZ0RvbmcgNTE4MDU3Ci0JCQkJQ0hJTkEKLQotRjQtNTUtRTAgICAoaGV4KQkJTmljZXdheSBDTkMgVGVjaG5vbG9neSBDby4sTHRkLkh1bmFuIFByb3ZpbmNlCi1GNDU1RTAgICAgIChiYXNlIDE2KQkJTmljZXdheSBDTkMgVGVjaG5vbG9neSBDby4sTHRkLkh1bmFuIFByb3ZpbmNlCi0JCQkJNS9GLElubm92YXRpb24tVW5kZXJ0YWtpbmcgQ2VudGVyLEh1YW5CYW8gSW5kdXN0cmlhbCBQYXJrLDE5OSMsWmhlbkh1YSBSb2FkLAotCQkJCUNoYW5nc2hhIEh1bmFuIDQxMDExNgotCQkJCUNISU5BCi0KLUY0LTVGLUQ0ICAgKGhleCkJCUNpc2NvIFNQVlRHCi1GNDVGRDQgICAgIChiYXNlIDE2KQkJQ2lzY28gU1BWVEcKLQkJCQk1MDMwIFN1Z2FybG9hZiBQa3d5Ci0JCQkJTGF3cmVuY2V2aWxsZSBHQSAzMDA0NAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtNUYtRjcgICAoaGV4KQkJRFEgVGVjaG5vbG9neSBJbmMuCi1GNDVGRjcgICAgIChiYXNlIDE2KQkJRFEgVGVjaG5vbG9neSBJbmMuCi0JCQkJNTExMSBKb2huc29uIERyaXZlCi0JCQkJUGxlYXNhbnRvbiBDQSA5NDU4OAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtNjAtMEQgICAoaGV4KQkJUGFub3B0aWMgVGVjaG5vbG9neSwgSW5jCi1GNDYwMEQgICAgIChiYXNlIDE2KQkJUGFub3B0aWMgVGVjaG5vbG9neSwgSW5jCi0JCQkJNTg3IFcgRWF1IEdhbGxpZSBCbHZkCi0JCQkJU3VpdGUgMTA0Ci0JCQkJTWVsYm91cm5lIEZMIDMyOTM1Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC02My00OSAgIChoZXgpCQlEaWZmb24gQ29ycG9yYXRpb24KLUY0NjM0OSAgICAgKGJhc2UgMTYpCQlEaWZmb24gQ29ycG9yYXRpb24KLQkJCQlEaWdpdGFsIFRvd2VyIEFzdG9uIDE1MDUKLQkJCQk1MDUtMTUgR2FzYW4sIEd1ZW1jaGVvbgotCQkJCVNlb3VsICAxNTM4MDMKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjQtNkQtMDQgICAoaGV4KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi1GNDZEMDQgICAgIChiYXNlIDE2KQkJQVNVU1RlayBDT01QVVRFUiBJTkMuCi0JCQkJMTUsTGktVGUgUmQuLFBlaXRvdSwKLQkJCQlUYWlwZWkgIDExMgotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRjQtNzMtQ0EgICAoaGV4KQkJQ29udmVyc2lvbiBTb3VuZCBJbmMuCi1GNDczQ0EgICAgIChiYXNlIDE2KQkJQ29udmVyc2lvbiBTb3VuZCBJbmMuCi0JCQkJOTYwIE4uIE5vcnRod2VzdCBId3kKLQkJCQlQYXJrIFJpZGdlIElMIDYwMDY4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC03Ni0yNiAgIChoZXgpCQlWaWx0ZWNobWVkYSBVQUIgCi1GNDc2MjYgICAgIChiYXNlIDE2KQkJVmlsdGVjaG1lZGEgVUFCIAotCQkJCUthbHZhcmlqdSAxMjUKLQkJCQlWaWxuaXVzICBMVC0wODIyMQotCQkJCUxJVEhVQU5JQQotCi1GNC03QS1DQyAgIChoZXgpCQlTb2xpZEZpcmUsIEluYy4KLUY0N0FDQyAgICAgKGJhc2UgMTYpCQlTb2xpZEZpcmUsIEluYy4KLQkJCQkxNjIwIFBlYXJsIFN0cmVldAotCQkJCVN1aXRlIDIwMAotCQkJCUJvdWxkZXIgQ29sb3JhZG8gODAzMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY0LTdGLTM1ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUY0N0YzNSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC04Ny03MSAgIChoZXgpCQlJbmZvYmxveAotRjQ4NzcxICAgICAoYmFzZSAxNikJCUluZm9ibG94Ci0JCQkJNDc1MCBQYXRyaWNrIEhlbnJ5IERyaXZlCi0JCQkJU2FudGEgQ2xhcmEgQ2FsaWZvcm5pYSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjQtOEUtMDkgICAoaGV4KQkJTm9raWEgQ29ycG9yYXRpb24KLUY0OEUwOSAgICAgKGJhc2UgMTYpCQlOb2tpYSBDb3Jwb3JhdGlvbgotCQkJCVlydHRpcGVsbG9udGllIDYKLQkJCQlPdWx1IE91IDkwMjMwCi0JCQkJRklOTEFORAotCi1GNC05MC1FQSAgIChoZXgpCQlEZWNpc28gQi5WLgotRjQ5MEVBICAgICAoYmFzZSAxNikJCURlY2lzbyBCLlYuCi0JCQkJQnVyZ2VtZWVzdGVyIE1panNsYWFuIDIKLQkJCQlNaWRkZWxoYXJuaXMgWnVpZCBIb2xsYW5kIDMyNDEgWEEKLQkJCQlORVRIRVJMQU5EUwotCi1GNC05NC02MSAgIChoZXgpCQlOZXhHZW4gU3RvcmFnZQotRjQ5NDYxICAgICAoYmFzZSAxNikJCU5leEdlbiBTdG9yYWdlCi0JCQkJNDAwIENlbnRlbm5pYWwgQmx2ZC4KLQkJCQlMb3Vpc3ZpbGxlIENPIDgwMDI3Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC05Ri01NCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi1GNDlGNTQgICAgIChiYXNlIDE2KQkJU2Ftc3VuZyBFbGVjdHJvbmljcwotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GNC1BNS0yQSAgIChoZXgpCQlIYXdhIFRlY2hub2xvZ2llcyBJbmMKLUY0QTUyQSAgICAgKGJhc2UgMTYpCQlIYXdhIFRlY2hub2xvZ2llcyBJbmMKLQkJCQkzMzYgSGF5ZXMgU3QKLQkJCQlTYW4gRnJhbmNpc2NvIENhbGlmb3JuaWEgOTQxMDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY0LUFDLUMxICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUY0QUNDMSAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDLU0vMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC1CMS02NCAgIChoZXgpCQlMaWdodG5pbmcgVGVsZWNvbW11bmljYXRpb25zIFRlY2hub2xvZ3kgQ28uIEx0ZAotRjRCMTY0ICAgICAoYmFzZSAxNikJCUxpZ2h0bmluZyBUZWxlY29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSBDby4gTHRkCi0JCQkJUm9vbSAxMzAyLCBUaWFuoa9hbiBIaS1UZWNoIFBsYXphIFRvd2VyIEEsIEZ1dGlhbiBEaXN0cmljdCwgCi0JCQkJU2hlblpoZW4gR3VhbmdEb25nIDUxODA0MAotCQkJCUNISU5BCi0KLUY0LUI1LTQ5ICAgKGhleCkJCVllYXN0YXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KLUY0QjU0OSAgICAgKGJhc2UgMTYpCQlZZWFzdGFyIFRlY2hub2xvZ3kgQ28uLCBMdGQuCi0JCQkJUm9vbTIwMiwgTm8uMjMgV2FuZ2hhaSBSb2FkLCAybmQgU29mdHdhcmUgUGFyaywgCi0JCQkJWGlhbWVuIEZ1amlhbiAzNjEwMDYKLQkJCQlDSElOQQotCi1GNC1DNy0xNCAgIChoZXgpCQlIdWF3ZWkgRGV2aWNlIENvLiwgTHRkCi1GNEM3MTQgICAgIChiYXNlIDE2KQkJSHVhd2VpIERldmljZSBDby4sIEx0ZAotCQkJCUJ1aWxkaW5nIDE3LE5hbmdhbmcgSW5kdXN0cmlhbCBQYXJrLCBUYW5ndG91IDNuZCBJbmR1c3RyaWFsIEVzdGF0ZSxTaGl5YW4gQmFvYW4gRGlzdHJpY3QsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxMDEwOAotCQkJCUNISU5BCi0KLUY0LUM3LTk1ICAgKGhleCkJCVdFWSBFbGVrdHJvbmlrIEFHCi1GNEM3OTUgICAgIChiYXNlIDE2KQkJV0VZIEVsZWt0cm9uaWsgQUcKLQkJCQlEb3Jmc3RyYXNzZSA1NwotCQkJCVVudGVyZW5nc3RyaW5nZW4gWnVyaWNoIDgxMDMKLQkJCQlTV0lUWkVSTEFORAotCi1GNC1DQS1FNSAgIChoZXgpCQlGUkVFQk9YIFNBCi1GNENBRTUgICAgIChiYXNlIDE2KQkJRlJFRUJPWCBTQQotCQkJCTggcnVlIGRlIGxhIFZpbGxlIGwnRXZlcXVlCi0JCQkJUEFSSVMgSWRGIDc1MDA4Ci0JCQkJRlJBTkNFCi0KLUY0LUNFLTQ2ICAgKGhleCkJCUhld2xldHQtUGFja2FyZCBDb21wYW55Ci1GNENFNDYgICAgIChiYXNlIDE2KQkJSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLQkJCQkxMTQ0NSBDb21wYXEgQ2VudGVyIERyaXZlCi0JCQkJTWFpbGNvZGUgNi4zLjA0OQotCQkJCUhvdXN0b24gVGV4YXMgNzcwNzAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY0LUQ5LUZCICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ08uLCBMVEQKLUY0RDlGQiAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENPLiwgTFRECi0JCQkJNDE2LCBNYWV0YW4tM2RvbmcsIFllb25ndG9uZy1ndSwKLQkJCQlTdXdvbi1DaXR5IEd5ZW9uZ2dpLWRvIDQ0My03NDIKLQkJCQlTdXdvbiBHeWVvbmdnaS1kbyA0NDMtNzQyCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUY0LURDLTREICAgKGhleCkJCUJlaWppbmcgQ0NEIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sIEx0ZAotRjREQzREICAgICAoYmFzZSAxNikJCUJlaWppbmcgQ0NEIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sIEx0ZAotCQkJCTEwNyBEb25nc2kgTm9ydGggU3RyZWV0LCBEb25nY2hlbmcgRGlzdHJpY3QsIAotCQkJCUJlaWppbmcgVGlhbiBIYWkgQ29tbWVyY2lhbCBCdWlsZGluZywgUm9vbSA4MDIsIEJsb2NrIEEKLQkJCQlCZWlqaW5nICAxMDAwMDcKLQkJCQlDSElOQQotCi1GNC1EQy1EQSAgIChoZXgpCQlaaHVoYWkgSmlhaGUgQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENvLiwgbGltaXRlZAotRjREQ0RBICAgICAoYmFzZSAxNikJCVpodWhhaSBKaWFoZSBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uLCBsaW1pdGVkCi0JCQkJNC9GLEVhc3QgT2YgQjUsU291cnRoIFNvZnR3YXJlIFBhcmssVGFuZ2ppYSwKLQkJCQlaaHVoYWkgR3Vhbmdkb25nIDUxOTA4NQotCQkJCUNISU5BCi0KLUY0LUUxLTQyICAgKGhleCkJCURlbHRhIEVsZWt0cm9uaWthIEJWCi1GNEUxNDIgICAgIChiYXNlIDE2KQkJRGVsdGEgRWxla3Ryb25pa2EgQlYKLQkJCQlWaXNzZXJzZGlqayA0Ci0JCQkJWmllcmlremVlICA0MzAxIE5ECi0JCQkJTkVUSEVSTEFORFMKLQotRjQtRTYtRDcgICAoaGV4KQkJU29sYXIgUG93ZXIgVGVjaG5vbG9naWVzLCBJbmMuCi1GNEU2RDcgICAgIChiYXNlIDE2KQkJU29sYXIgUG93ZXIgVGVjaG5vbG9naWVzLCBJbmMuCi0JCQkJMzAwNiBCZWUgQ2F2ZXMgUmQuCi0JCQkJU3VpdGUgQS0zMzAKLQkJCQlBdXN0aW4gVGV4YXMgNzg3NDYKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY0LUVBLTY3ICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUY0RUE2NyAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTTEtMQotCQkJCVNhbiBKb3NlIENBIDk1MTM0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GNC1FQy0zOCAgIChoZXgpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLUY0RUMzOCAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLQkJCQkxLTZGLCBCdWlsZGluZyAyLCBQaW5nc2hhbmRheXVhbiBJbmR1c3RyaWFsLCBTb3V0aCBab25lLAotCQkJCVRhb3l1YW4gU3RyZWV0LCBOYW5zaGFuIERpc3RyaWN0LCAKLQkJCQlTaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDAwCi0JCQkJQ0hJTkEKLQotRjQtRkMtMzIgICAoaGV4KQkJVGV4YXMgSW5zdHJ1bWVudHMKLUY0RkMzMiAgICAgKGJhc2UgMTYpCQlUZXhhcyBJbnN0cnVtZW50cwotCQkJCTEyNTAwIFRJIEJvdWxldmFyZAotCQkJCURhbGxhcyBUWCA3NTI0MwotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtMDMtMzIgICAoaGV4KQkJS2hvbXAKLUY4MDMzMiAgICAgKGJhc2UgMTYpCQlLaG9tcAotCQkJCVJ1YSBKb2UgQ29sbGHnbywgMTYzCi0JCQkJU3RhIE1vbmljYQotCQkJCUZsb3JpYW7zcG9saXMgU2FudGEgQ2F0YXJpbmEgODgwMzctMDEwCi0JCQkJQlJBWklMCi0KLUY4LTBDLUYzICAgKGhleCkJCUxHIEVsZWN0cm9uaWNzCi1GODBDRjMgICAgIChiYXNlIDE2KQkJTEcgRWxlY3Ryb25pY3MKLQkJCQk2MC0zOSAsIEthc2FuLWRvbmcsIEd1bWNoZW9uLWd1Ci0JCQkJU2VvdWwgIDE1My04MDEKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjgtMEYtNDEgICAoaGV4KQkJV2lzdHJvbiBJbmZvQ29tbShaaG9uZ1NoYW4pIENvcnBvcmF0aW9uCi1GODBGNDEgICAgIChiYXNlIDE2KQkJV2lzdHJvbiBJbmZvQ29tbShaaG9uZ1NoYW4pIENvcnBvcmF0aW9uCi0JCQkJVG9yY2ggSGlnaC10ZWNoIEluZHVzdHJpYWwgRGV2ZWxvcG1lbnQgWm9uZSwgCi0JCQkJWmhvbmdTaGFuIEd1YW5nZG9uZyA1Mjg0MzcKLQkJCQlDSElOQQotCi1GOC0wRi04NCAgIChoZXgpCQlOYXR1cmFsIFNlY3VyaXR5IFNBUwotRjgwRjg0ICAgICAoYmFzZSAxNikJCU5hdHVyYWwgU2VjdXJpdHkgU0FTCi0JCQkJMTY1IEF2ZW51ZSBkZSBCcmV0YWduZQotCQkJCUxpbGxlICA1OTAwMAotCQkJCUZSQU5DRQotCi1GOC0xMC0zNyAgIChoZXgpCQlBdG9waWEgU3lzdGVtcywgTFAKLUY4MTAzNyAgICAgKGJhc2UgMTYpCQlBdG9waWEgU3lzdGVtcywgTFAKLQkJCQk2ODEgTi4gUGxhbm8gUm9hZAotCQkJCVN1aXRlIDExOQotCQkJCVJpY2hhcmRzb24gVFggNzUwODIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LTFBLTY3ICAgKGhleCkJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotRjgxQTY3ICAgICAoYmFzZSAxNikJCVRQLUxJTksgVEVDSE5PTE9HSUVTIENPLiwgTFRELgotCQkJCUJ1aWxkaW5nIDI0IChmbG9vcnMgMSwzLDQsNSkgYW5kIDI4IChmbG9vcnMxLTQpICBDZW50cmFsIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgUGFyayxTaGVubmFuIFJkLCBOYW5zaGFuLCBTaGVuemhlbixDaGluYQotCQkJCXNoZW56aGVuIGd1YW5nZG9uZyBQcm92aW5jZSA1MTgwNTcKLQkJCQlDSElOQQotCi1GOC0xRC05MyAgIChoZXgpCQlMb25nZGh1YShCZWlqaW5nKSBDb250cm9scyBUZWNobm9sb2d5IENvLixMdGQKLUY4MUQ5MyAgICAgKGJhc2UgMTYpCQlMb25nZGh1YShCZWlqaW5nKSBDb250cm9scyBUZWNobm9sb2d5IENvLixMdGQKLQkJCQlSb29tIDEyMDMsTGl4aWFuZyBCdWlsZGluZywgTm8uMTExIFpoaWNodW4gUm9hZCxIYWlkaWFuIERpc3RyaWN0LAotCQkJCUJlaWppbmcgIDEwMDg2Ci0JCQkJQ0hJTkEKLQotRjgtMUUtREYgICAoaGV4KQkJQXBwbGUsIEluYwotRjgxRURGICAgICAoYmFzZSAxNikJCUFwcGxlLCBJbmMKLQkJCQkxIEluZmluaXRlIExvb3AKLQkJCQlDdXBlcnRpbm8gQ0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LTJGLTVCICAgKGhleCkJCWVHYXVnZSBTeXN0ZW1zIExMQwotRjgyRjVCICAgICAoYmFzZSAxNikJCWVHYXVnZSBTeXN0ZW1zIExMQwotCQkJCTE1MTAgMjh0aCBTdCwgU3VpdGUgMjA1Ci0JCQkJQm91bGRlciBDTyA4MDMwMwotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtMzAtOTQgICAoaGV4KQkJQWxjYXRlbC1MdWNlbnQgVGVsZWNvbSBMaW1pdGVkCi1GODMwOTQgICAgIChiYXNlIDE2KQkJQWxjYXRlbC1MdWNlbnQgVGVsZWNvbSBMaW1pdGVkCi0JCQkJVGhlIFF1YWRyYW50LCBTdG9uZWhpbGwgR3JlZW4gCi0JCQkJV2VzdGxlYQotCQkJCVNXSU5ET04gIFNONSA3REoKLQkJCQlVTklURUQgS0lOR0RPTQotCi1GOC0zMS0zRSAgIChoZXgpCQllbmRlYXZvdXIgR21iSAotRjgzMTNFICAgICAoYmFzZSAxNikJCWVuZGVhdm91ciBHbWJICi0JCQkJTWF4LVBsYW5jay1TdHIuIDA0Ci0JCQkJVnJlZGVuIE5SVyA0ODY5MQotCQkJCUdFUk1BTlkKLQotRjgtMzMtNzYgICAoaGV4KQkJR29vZCBNaW5kIElubm92YXRpb24gQ28uLCBMdGQuCi1GODMzNzYgICAgIChiYXNlIDE2KQkJR29vZCBNaW5kIElubm92YXRpb24gQ28uLCBMdGQuCi0JCQkJMjAsIExhbmUgMjAwLCBDaGVuZyBIdSBSZC4gCi0JCQkJTmlhbyBTb25nIERpc3RyaWN0LgotCQkJCUthb2hzaXVuZyAgODMzCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1GOC0zNS01MyAgIChoZXgpCQlNYWdlbnRhIFJlc2VhcmNoIEx0ZC4KLUY4MzU1MyAgICAgKGJhc2UgMTYpCQlNYWdlbnRhIFJlc2VhcmNoIEx0ZC4KLQkJCQkxMjggTGl0Y2hmaWVsZCBSb2FkCi0JCQkJTmV3IE1pbGZvcmQgQ1QgMDY3NzYKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LTNELUZGICAgKGhleCkJCUh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQKLUY4M0RGRiAgICAgKGJhc2UgMTYpCQlIdWF3ZWkgVGVjaG5vbG9naWVzIENvLiwgTHRkCi0JCQkJQnVpbGRpbmcgMTcsTmFuZ2FuZyBJbmR1c3RyaWFsIFBhcmssIFRhbmd0b3UgM25kIEluZHVzdHJpYWwgRXN0YXRlLFNoaXlhbiBCYW9hbiBEaXN0cmljdAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1GOC00Ni0yRCAgIChoZXgpCQlTWU5URUMgSW5jb3Jwb3JhdGlvbgotRjg0NjJEICAgICAoYmFzZSAxNikJCVNZTlRFQyBJbmNvcnBvcmF0aW9uCi0JCQkJM0YsIE5PLjEwNSwgU2hpbmctc2h5dWUgU3QuLCAKLQkJCQlIc2luY2h1ICAzMDAKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUY4LTQ3LTJEICAgKGhleCkJCVgyZ2VuIERpZ2l0YWwgQ29ycC4gTHRkCi1GODQ3MkQgICAgIChiYXNlIDE2KQkJWDJnZW4gRGlnaXRhbCBDb3JwLiBMdGQKLQkJCQkjIDg5LCBTaW5nbG9uZyBSZCAKLQkJCQlUYW95dWFuIEhzaWVuCi0JCQkJUGluLUpoZW4gQ2l0eSwgICAzMjQKLQkJCQlUQUlXQU4sIFJFUFVCTElDIE9GIENISU5BCi0KLUY4LTUwLTYzICAgKGhleCkJCVZlcmF0aG9uCi1GODUwNjMgICAgIChiYXNlIDE2KQkJVmVyYXRob24KLQkJCQkyMDAwMSBOIENyZWVrIFBrd3kKLQkJCQlCb3RoZWxsIFdBIDk4MDExCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC01Mi1ERiAgIChoZXgpCQlWTkwgRXVyb3BlIEFCCi1GODUyREYgICAgIChiYXNlIDE2KQkJVk5MIEV1cm9wZSBBQgotCQkJCUZpbmxhbmRzZ2F0YW4gMTAKLQkJCQlTRSAKLQkJCQlLaXN0YSAgMTY0IDc0Ci0JCQkJU1dFREVOCi0KLUY4LTY2LUYyICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUY4NjZGMiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LTY5LTcxICAgKGhleCkJCVNlaWJ1IEVsZWN0cmljIENvLiwKLUY4Njk3MSAgICAgKGJhc2UgMTYpCQlTZWlidSBFbGVjdHJpYyBDby4sCi0JCQkJMTQ1OC03Ci0JCQkJSGF6YW1hCi0JCQkJSGFjaGlvamkgVG9reW8gMTkzLTA5NDEKLQkJCQlKQVBBTgotCi1GOC02RS1DRiAgIChoZXgpCQlBcmN4IEluYwotRjg2RUNGICAgICAoYmFzZSAxNikJCUFyY3ggSW5jCi0JCQkJMTUxIEFtYmVyIFN0LCBVbml0IDEKLQkJCQlNYXJraGFtIE9OIEwzUiAzQjMKLQkJCQlDQU5BREEKLQotRjgtNzEtRkUgICAoaGV4KQkJVGhlIEdvbGRtYW4gU2FjaHMgR3JvdXAsIEluYy4KLUY4NzFGRSAgICAgKGJhc2UgMTYpCQlUaGUgR29sZG1hbiBTYWNocyBHcm91cCwgSW5jLgotCQkJCTg1IEJyb2FkIFN0cmVldAotCQkJCU5ldyBZb3JrIE5ldyBZb3JrIDEwMDA0Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC03Ni05QiAgIChoZXgpCQlOZW9waXMgQ28uLCBMdGQuCi1GODc2OUIgICAgIChiYXNlIDE2KQkJTmVvcGlzIENvLiwgTHRkLgotCQkJCSM0MDEgTmVvIGJkLiwgMTk2LTQ0IEFueWFuZzctRG9uZwotCQkJCU1hbmFuLUd1Ci0JCQkJQW55YW5nIEt5b25nZ2ktRG8gNDMwLTg1NwotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GOC03Qi03QSAgIChoZXgpCQlNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLgotRjg3QjdBICAgICAoYmFzZSAxNikJCU1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuCi0JCQkJNjAwIE4uIFVTIEhXWSA0NQotCQkJCUxpYmVydHl2aWxsZSBJTCA2MDA0OAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtN0ItOEMgICAoaGV4KQkJQW1wZWQgV2lyZWxlc3MKLUY4N0I4QyAgICAgKGJhc2UgMTYpCQlBbXBlZCBXaXJlbGVzcwotCQkJCTEzMDg5IFBleXRvbiBEci4gI0MzMDcKLQkJCQlDaGlubyBIaWxscyBDQSA5MTcwOQotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtODEtMUEgICAoaGV4KQkJT1ZFUktJWgotRjg4MTFBICAgICAoYmFzZSAxNikJCU9WRVJLSVoKLQkJCQlIRVJBIDIKLQkJCQlTaXRlIGQnQXJjaGFtcHMKLQkJCQlBcmNoYW1wcyAgNzQxNjAKLQkJCQlGUkFOQ0UKLQotRjgtOEMtMUMgICAoaGV4KQkJS0FJU0hVTiBFTEVDVFJPTklDIFRFQ0hOT0xPR1kgQ08uLCBMVEQuIEJFSUpJTkcKLUY4OEMxQyAgICAgKGJhc2UgMTYpCQlLQUlTSFVOIEVMRUNUUk9OSUMgVEVDSE5PTE9HWSBDTy4sIExURC4gQkVJSklORwotCQkJCU5PLjEgRkFSTSwgSEVOR1FJQU8gVklMTEFHRSBXRVNULCBNQUNISUtPVSBUT1dOLCAKLQkJCQlDSEFOR1BJTkcgRElTVFJJQ1QKLQkJCQlCRUlKSU5HICAxMDIyMDAKLQkJCQlDSElOQQotCi1GOC04RC1FRiAgIChoZXgpCQlUZW5lYnJhZXgKLUY4OERFRiAgICAgKGJhc2UgMTYpCQlUZW5lYnJhZXgKLQkJCQkyNyBEcnlkb2NrIEF2ZW51ZQotCQkJCUJvc3RvbiBNQSAwMjIxMAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtOEYtQ0EgICAoaGV4KQkJR29vZ2xlIEZpYmVyLCBJbmMKLUY4OEZDQSAgICAgKGJhc2UgMTYpCQlHb29nbGUgRmliZXIsIEluYwotCQkJCTE2MDAgQW1waGl0aGVhdHJlIFBhcmt3YXkKLQkJCQlNb3VudGFpbiBWaWV3IENhbGlmb3JuaWEgOTQwNDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LTkxLTJBICAgKGhleCkJCUdMUCBHZXJtYW4gTGlnaHQgUHJvZHVjdHMgR21iSAotRjg5MTJBICAgICAoYmFzZSAxNikJCUdMUCBHZXJtYW4gTGlnaHQgUHJvZHVjdHMgR21iSAotCQkJCUltIFN09mNrbeRkbGUgMTMKLQkJCQlLYXJsc2JhZCBCVyA3NjMwNwotCQkJCUdFUk1BTlkKLQotRjgtOTMtRjMgICAoaGV4KQkJVk9MQU5TCi1GODkzRjMgICAgIChiYXNlIDE2KQkJVk9MQU5TCi0JCQkJM0YgSUpVIEJEIDc3MC0xMyBZRU9LU0FNLURPTkcKLQkJCQlHQU5HTkFNLUdVCi0JCQkJU0VPVUwgIDEzNS05MjgKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjgtOTctQ0YgICAoaGV4KQkJIERBRVNISU4tSU5GT1JNQVRJT04gVEVDSE5PTE9HWSBDTy4sIExURC4gIAotRjg5N0NGICAgICAoYmFzZSAxNikJCSBEQUVTSElOLUlORk9STUFUSU9OIFRFQ0hOT0xPR1kgQ08uLCBMVEQuICAKLQkJCQk2RiwgQ2h1bmd3b24gQmxkZy4sIDgyOC01IFl1a3NhbS1Eb25nLEthbmduYW0tR3UsIAotCQkJCVNlb3VsICAxMzU5MzUKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRjgtOTktNTUgICAoaGV4KQkJRm9ydHJlc3MgVGVjaG5vbG9neSBJbmMKLUY4OTk1NSAgICAgKGJhc2UgMTYpCQlGb3J0cmVzcyBUZWNobm9sb2d5IEluYwotCQkJCTUxIEdyYW5kIE1hcnNoYWxsIERyaXZlCi0JCQkJU2NhcmJvcm91Z2ggT250YXJpbyBNMUIgNU42Ci0JCQkJQ0FOQURBCi0KLUY4LTlELTBEICAgKGhleCkJCUNvbnRyb2wgVGVjaG5vbG9neSBJbmMuCi1GODlEMEQgICAgIChiYXNlIDE2KQkJQ29udHJvbCBUZWNobm9sb2d5IEluYy4KLQkJCQk3NjA4IE5vcnRoIEh1ZHNvbiBBdmUKLQkJCQlPa2xhaG9tYSBDaXR5IE9LIDczMTE2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC1BMC0zRCAgIChoZXgpCQlEaW5zdGFyIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLUY4QTAzRCAgICAgKGJhc2UgMTYpCQlEaW5zdGFyIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KLQkJCQlGbG9vciA2LCBHdW94aW5nIEJ1aWxkaW5nCi0JCQkJQ2hhbmd4aW5nIFJvYWQsIE5hbnNoYW4gRGlzdHJpY3QKLQkJCQlzaGVuemhlbiBHdWFuZ2RvbmcgNTE4MDUyCi0JCQkJQ0hJTkEKLQotRjgtQTktREUgICAoaGV4KQkJUFVJU1NBTkNFIFBMVVMKLUY4QTlERSAgICAgKGJhc2UgMTYpCQlQVUlTU0FOQ0UgUExVUwotCQkJCTIyMiBJbXBhc3NlIExvdWlzIEzpcGluZQotCQkJCVouSS4gQWxiYXN1ZCAtIFNlY3RldXIgMwotCQkJCU1vbnRhdWJhbiAgODIwMDAKLQkJCQlGUkFOQ0UKLQotRjgtQUMtNkQgICAoaGV4KQkJRGVsdGVubmEgTHRkCi1GOEFDNkQgICAgIChiYXNlIDE2KQkJRGVsdGVubmEgTHRkCi0JCQkJRmlyc3QgRmxvb3IgVW5pdCAyCi0JCQkJQmVsbGluZ2VyIENsb3NlCi0JCQkJQ2hpcHBlbmhhbSBXaWx0c2hpcmUgU04xNSAxQk4KLQkJCQlVTklURUQgS0lOR0RPTQotCi1GOC1CNS05OSAgIChoZXgpCQlHdWFuZ3pob3UgQ0hOQVZTIERpZ2l0YWwgVGVjaG5vbG9neSBDby4sTHRkCi1GOEI1OTkgICAgIChiYXNlIDE2KQkJR3Vhbmd6aG91IENITkFWUyBEaWdpdGFsIFRlY2hub2xvZ3kgQ28uLEx0ZAotCQkJCUJ1bGlkaW5nIEMsIGluZHVzdHkgYmFzZSBvZiBkaWdpdGFsIGhvbWUgYXBwbGljYXRpb24gYW5kIGRlbW9uc3RyYXRpb24gLHpob25neWkgcm9hZCBHdWFuZ3pob3UgaGlnaGVyIGVkdWNhdGlvbiBtZWdhIGNlbnRlcgotCQkJCUd1YW5nemhvdSBHdWFuZ2RvbmcgNTEwMDA2Ci0JCQkJQ0hJTkEKLQotRjgtQzAtMDEgICAoaGV4KQkJSnVuaXBlciBOZXR3b3JrcwotRjhDMDAxICAgICAoYmFzZSAxNikJCUp1bmlwZXIgTmV0d29ya3MKLQkJCQkxMTk0IE4gTWF0aGlsZGEgQXZlbnVlCi0JCQkJU3Vubnl2YWxlIENBIDk0MDg5IAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtQzAtOTEgICAoaGV4KQkJSGlnaGdhdGVzIFRlY2hub2xvZ3kKLUY4QzA5MSAgICAgKGJhc2UgMTYpCQlIaWdoZ2F0ZXMgVGVjaG5vbG9neQotCQkJCTE0MTUgSGlnaGdhdGUgQXZlCi0JCQkJTG9zIEFuZ2VsZXMgQ0EgOTAwNDIKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LUM2LTc4ICAgKGhleCkJCUNhcmVmdXNpb24KLUY4QzY3OCAgICAgKGJhc2UgMTYpCQlDYXJlZnVzaW9uCi0JCQkJMTAwMjAgUGFjaWZpYyBNZXNhIEJsdmQKLQkJCQlTYW4gRGllZ28gQ0EgOTIxMjEKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LUQwLUFDICAgKGhleCkJCVNvbnkgQ29tcHV0ZXIgRW50ZXJ0YWlubWVudCBJbmMuCi1GOEQwQUMgICAgIChiYXNlIDE2KQkJU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEluYy4KLQkJCQkxLTctMSBLb25hbgotCQkJCU1pbmF0by1rdSBUb2t5byAxMDgtMDA3NQotCQkJCUpBUEFOCi0KLUY4LUQwLUJEICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotRjhEMEJEICAgICAoYmFzZSAxNikJCVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLEx0ZAotCQkJCSM5NC0xLCBJbXNvby1Eb25nCi0JCQkJR3VtaSBHeWVvbmdidWsgNzMwLTM1MAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GOC1EMS0xMSAgIChoZXgpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLUY4RDExMSAgICAgKGJhc2UgMTYpCQlUUC1MSU5LIFRFQ0hOT0xPR0lFUyBDTy4sIExURC4KLQkJCQlCdWlsZGluZyAyNCAoZmxvb3JzIDEsMyw0LDUpIGFuZCAyOCAoZmxvb3JzMS00KQotCQkJCUNlbnRyYWwgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSBQYXJrLFNoZW5uYW4gUmQsCi0JCQkJU2hlbnpoZW4gR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUY4LUQzLUE5ICAgKGhleCkJCUFYQU4gTmV0d29ya3MKLUY4RDNBOSAgICAgKGJhc2UgMTYpCQlBWEFOIE5ldHdvcmtzCi0JCQkJMkYgTXl1bmdqaW4tQmxkZyBEYWVjaGktRG9uZyBHYW5nbmFtLUd1IAotCQkJCVNlb3VsICAgMTM1LTg0NQotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GOC1ENC02MiAgIChoZXgpCQlQdW1hdHJvbml4IEVxdWlwYW1lbnRvcyBFbGV0cm9uaWNvcyBMdGRhLgotRjhENDYyICAgICAoYmFzZSAxNikJCVB1bWF0cm9uaXggRXF1aXBhbWVudG9zIEVsZXRyb25pY29zIEx0ZGEuCi0JCQkJUnVhIEJhcnRvbG9tZXUgTG91cmVuY28gZGUgR3VzbWFvIDIwMjEKLQkJCQlDdXJpdGliYSBQUiA4MTY1MDA1MAotCQkJCUJSQVpJTAotCi1GOC1ENy01NiAgIChoZXgpCQlTaW1tIFRyb25pYyBMaW1pdGVkIAotRjhENzU2ICAgICAoYmFzZSAxNikJCVNpbW0gVHJvbmljIExpbWl0ZWQgCi0JCQkJVW5pdCAzLCBXYXRlcnNpZGUKLQkJCQlDaGFybHRvbiBNZWFkIExhbmUKLQkJCQlIb2RkZXNkb24gSGVydGZvcmRzaGlyZSBFTjExIDBRUgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUY4LURBLUUyICAgKGhleCkJCUJldGEgTGFzZXJNaWtlCi1GOERBRTIgICAgIChiYXNlIDE2KQkJQmV0YSBMYXNlck1pa2UKLQkJCQk4MDAxIFRlY2hub2xvZ3kgQmx2ZAotCQkJCURheXRvbiBPSCA0NTQyNAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtREEtRjQgICAoaGV4KQkJVGFpc2hhbiBPbmxpbmUgVGVjaG5vbG9neSBDby4sIEx0ZC4KLUY4REFGNCAgICAgKGJhc2UgMTYpCQlUYWlzaGFuIE9ubGluZSBUZWNobm9sb2d5IENvLiwgTHRkLgotCQkJCTQvRiBGYW5nZGEgQnVpbGRpbmcsIFNvdXRoIEFyZWEsIEhpLXRlY2ggSW5kdXN0aWFsIFBhcmssIAotCQkJCVNoZW56aGVuIEd1YW5nZG9uZyA1MTgwNTcKLQkJCQlDSElOQQotCi1GOC1EQi00QyAgIChoZXgpCQlQTlkgVGVjaG5vbG9naWVzLCBJTkMuCi1GOERCNEMgICAgIChiYXNlIDE2KQkJUE5ZIFRlY2hub2xvZ2llcywgSU5DLgotCQkJCTEwMCBKZWZmZXJzb24gUm9hZAotCQkJCVBhcnNpcHBhbnkgTmV3IEplcnNleSAwNzA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotRjgtREItN0YgICAoaGV4KQkJSFRDIENvcnBvcmF0aW9uCi1GOERCN0YgICAgIChiYXNlIDE2KQkJSFRDIENvcnBvcmF0aW9uCi0JCQkJTm8uMjMgWGluZ2h1YSBSb2FkCi0JCQkJVGFveXVhbiBDaXR5Ci0JCQkJVGFveXVhbiBDb3VudHkgIDMzMAotCQkJCVRBSVdBTiwgUkVQVUJMSUMgT0YgQ0hJTkEKLQotRjgtREMtN0EgICAoaGV4KQkJVmFyaXNjaXRlIExURAotRjhEQzdBICAgICAoYmFzZSAxNikJCVZhcmlzY2l0ZSBMVEQKLQkJCQk2MCBNZWRpbmF0IEhheWVodWRpbSBzdC4KLQkJCQlIZXJ0emVsaWEgIDQ2NzIyCi0JCQkJSVNSQUVMCi0KLUY4LUU3LUI1ICAgKGhleCkJCXVUZWNoIEVuZ2VuaGFyaWEgZSBBdXRvbWHnYW8gTFREQQotRjhFN0I1ICAgICAoYmFzZSAxNikJCXVUZWNoIEVuZ2VuaGFyaWEgZSBBdXRvbWHnYW8gTFREQQotCQkJCVJ1YSBEci4gUGVyY3kgSm9hbyBkZSBCb3JiYSwgMjY4Ci0JCQkJRmxvcmlhbm9wb2xpcyBTYW50YSBDYXRhcmluYSA4ODAzNi0yMDAKLQkJCQlCUkFaSUwKLQotRjgtRTktNjggICAoaGV4KQkJRWdrZXIgS2Z0LgotRjhFOTY4ICAgICAoYmFzZSAxNikJCUVna2VyIEtmdC4KLQkJCQlTenVnbG8gdS4gNDkuCi0JCQkJQnVkYXBlc3QgIDExNDUKLQkJCQlIVU5HQVJZCi0KLUY4LUVBLTBBICAgKGhleCkJCURpcGwuLU1hdGguIE1pY2hhZWwgUmF1Y2gKLUY4RUEwQSAgICAgKGJhc2UgMTYpCQlEaXBsLi1NYXRoLiBNaWNoYWVsIFJhdWNoCi0JCQkJS2FwZWxsZW5zdHIuIDMxCi0JCQkJQnJldHRlbiBCYVf8IDc1MDE1Ci0JCQkJR0VSTUFOWQotCi1GOC1GMC0xNCAgIChoZXgpCQlSYWNrV2FyZSBJbmMuCi1GOEYwMTQgICAgIChiYXNlIDE2KQkJUmFja1dhcmUgSW5jLgotCQkJCTQ0MDUzIEZyZW1vbnQgQmx2ZC4KLQkJCQlGcmVtb250IENBIDk0NTM4Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GOC1GMi01QSAgIChoZXgpCQlHLUxhYiBHbWJICi1GOEYyNUEgICAgIChiYXNlIDE2KQkJRy1MYWIgR21iSAotCQkJCVNjaGlmZmJhdXN0cmFzc2UgMTAKLQkJCQladXJpY2ggQ0ggODAwNQotCQkJCVNXSVRaRVJMQU5ECi0KLUY4LUY3LUQzICAgKGhleCkJCUludGVybmF0aW9uYWwgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24KLUY4RjdEMyAgICAgKGJhc2UgMTYpCQlJbnRlcm5hdGlvbmFsIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uCi0JCQkJMTE4MDEgUGllcmNlIFN0LiAybmQgRkwKLQkJCQlSaXZlcnNpZGUgQ0EgOTI1MDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LUY3LUZGICAgKGhleCkJCVNZTi1URUNIIFNZU1RFTVMgSU5DCi1GOEY3RkYgICAgIChiYXNlIDE2KQkJU1lOLVRFQ0ggU1lTVEVNUyBJTkMKLQkJCQkxMDAgRk9VUiBQT0lOVFMgV0FZCi0JCQkJVEFMTEFIQVNTRUUgRkwgMzIzMDUKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LUZCLTJGICAgKGhleCkJCVNhbnR1ciBDb3Jwb3JhdGlvbgotRjhGQjJGICAgICAoYmFzZSAxNikJCVNhbnR1ciBDb3Jwb3JhdGlvbgotCQkJCTQwOTMxIEVuY3ljbG9wZWRpYSBDaXJjbGUKLQkJCQlGcmVtb250IENhbGlmb3JuaWEgOTQ1MzgKLQkJCQlVTklURUQgU1RBVEVTCi0KLUY4LUZFLTVDICAgKGhleCkJCVJlY2lwcm9jYWwgTGFicyBDb3JwCi1GOEZFNUMgICAgIChiYXNlIDE2KQkJUmVjaXByb2NhbCBMYWJzIENvcnAKLQkJCQkzIFMuIFBpbmNrbmV5IFN0LgotCQkJCVN1aXRlIDgxNQotCQkJCU1hZGlzb24gV0kgNTM3MDMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLTAwLTEyICAgKGhleCkJCVRvc2hpYmEgU2Ftc3VuZyBTdG9yYWdlIFRlY2hub2xnb3kgS29yZWEgQ29ycG9yYXRpb24gCi1GQzAwMTIgICAgIChiYXNlIDE2KQkJVG9zaGliYSBTYW1zdW5nIFN0b3JhZ2UgVGVjaG5vbGdveSBLb3JlYSBDb3Jwb3JhdGlvbiAKLQkJCQkxNCBGbG9vciwgQmxkZy4gTm8uIDEwMiwgRGlnaXRhbCBFbXBpcmUyLCA0ODYsIFNpbi1kb25nLCBZZW9uZ3RvbmctZ3UsIFN1d29uLXNpLCAKLQkJCQlTdS13b24gIEd5ZW9uZ2dpICA0NDMtNzM0IAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GQy0wMS1DRCAgIChoZXgpCQlGVU5EQUNJT04gVEVLTklLRVIKLUZDMDFDRCAgICAgKGJhc2UgMTYpCQlGVU5EQUNJT04gVEVLTklLRVIKLQkJCQlBdmVuaWRhIE90YW9sYSwgMjAKLQkJCQlFaWJhciBHaXB1emtvYSAyMDYwMAotCQkJCVNQQUlOCi0KLUZDLTA4LTc3ICAgKGhleCkJCVByZW50a2UgUm9taWNoIENvbXBhbnkKLUZDMDg3NyAgICAgKGJhc2UgMTYpCQlQcmVudGtlIFJvbWljaCBDb21wYW55Ci0JCQkJMTAyMiBIZXlsIFJkCi0JCQkJV29vc3RlciBPSCA0NDY5MQotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtMEEtODEgICAoaGV4KQkJTW90b3JvbGEgU29sdXRpb25zIEluYy4KLUZDMEE4MSAgICAgKGJhc2UgMTYpCQlNb3Rvcm9sYSBTb2x1dGlvbnMgSW5jLgotCQkJCTEgTW90b3JvbGEgUGxhemEKLQkJCQlIb2x0c3ZpbGxlIE5ZIDExNzQxCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GQy0wRi1FNiAgIChoZXgpCQlTb255IENvbXB1dGVyIEVudGVydGFpbm1lbnQgSW5jLiAKLUZDMEZFNiAgICAgKGJhc2UgMTYpCQlTb255IENvbXB1dGVyIEVudGVydGFpbm1lbnQgSW5jLiAKLQkJCQkxLTctMSBLb25hbgotCQkJCU1pbmF0by1rdSAgVG9reW8gMTA4LTAwNzUgCi0JCQkJSkFQQU4KLQotRkMtMTAtQkQgICAoaGV4KQkJQ29udHJvbCBTaXN0ZW1hdGl6YWRvIFMuQS4KLUZDMTBCRCAgICAgKGJhc2UgMTYpCQlDb250cm9sIFNpc3RlbWF0aXphZG8gUy5BLgotCQkJCUNyYSA0MyBOIDMxIDUyCi0JCQkJTWVkZWxsaW4gQW50aW9xdWlhIDEwMTAxCi0JCQkJQ09MT01CSUEKLQotRkMtMTctOTQgICAoaGV4KQkJSW50ZXJDcmVhdGl2ZSBDby4sIEx0ZAotRkMxNzk0ICAgICAoYmFzZSAxNikJCUludGVyQ3JlYXRpdmUgQ28uLCBMdGQKLQkJCQk4OTctNiwgSG9HeWUtRG9uZywgRG9uZ0FuLUd1LAotCQkJCUFuWWFuZy1TaSwgR3llb25nR2ktRG8sIDQzMS04MzYKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRkMtMUQtNTkgICAoaGV4KQkJSSBTbWFydCBDaXRpZXMgSEsgTHRkCi1GQzFENTkgICAgIChiYXNlIDE2KQkJSSBTbWFydCBDaXRpZXMgSEsgTHRkCi0JCQkJVW5pdCBHLDEwL0YsUGhhc2UgMixZaXAgRmF0IElORAotCQkJCUJMREcsNzMtNzVIT0kgWVVFTiBSb2FkCi0JCQkJNzMtNzUKLQkJCQlIT05HIEtPTkcKLQotRkMtMUYtQzAgICAoaGV4KQkJRVVSRUNBTQotRkMxRkMwICAgICAoYmFzZSAxNikJCUVVUkVDQU0KLQkJCQlCQVQgOSAtIE1pbmlwYXJjCi0JCQkJNiBBdmVudWUgZGVzIEFuZGVzCi0JCQkJTEVTIFVMSVMgIDkxOTQwCi0JCQkJRlJBTkNFCi0KLUZDLTI1LTNGICAgKGhleCkJCUFwcGxlLCBJbmMuCi1GQzI1M0YgICAgIChiYXNlIDE2KQkJQXBwbGUsIEluYy4KLQkJCQkxIGluZmluaXRlIExvb3AKLQkJCQljdXBlcnRpbm8gY0EgOTUwMTQKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLTJBLTU0ICAgKGhleCkJCWNvbm5lY3RlZCBkYXRhCi1GQzJBNTQgICAgIChiYXNlIDE2KQkJY29ubmVjdGVkIGRhdGEKLQkJCQkyOTA1IHN0ZW5kZXIgd2F5Ci0JCQkJc3VpdGUgMzYKLQkJCQlzYW50YSBjbGFyYSBjYSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtMkUtMkQgICAoaGV4KQkJTG9yb20gSW5kdXN0cmlhbCBDby5MVEQuCi1GQzJFMkQgICAgIChiYXNlIDE2KQkJTG9yb20gSW5kdXN0cmlhbCBDby5MVEQuCi0JCQkJRjEuMTMsUm0uMixOby43OCxTZWMuMixBbi1Ib1JkLgotCQkJCVRhaXBlaSAgMTA2Ci0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1GQy0yRi00MCAgIChoZXgpCQlDYWx4ZWRhLCBJbmMuCi1GQzJGNDAgICAgIChiYXNlIDE2KQkJQ2FseGVkYSwgSW5jLgotCQkJCTcwMDAgTm9ydGggTW9wYWMgRXhwcmVzc3dheQotCQkJCVN1aXRlIDI1MAotCQkJCUF1c3RpbiBUWCA3ODczMQotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtMzUtOTggICAoaGV4KQkJRmF2aXRlIEluYy4KLUZDMzU5OCAgICAgKGJhc2UgMTYpCQlGYXZpdGUgSW5jLgotCQkJCU5vLjE5LCBMYW5lIDc4LCBZYW5oZSBTdC4sCi0JCQkJSmh1YmVpIENpdHkgSHNpbmNodSBDb3VudHkgMzAyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1GQy00NC02MyAgIChoZXgpCQlVbml2ZXJzYWwgQXVkaW8KLUZDNDQ2MyAgICAgKGJhc2UgMTYpCQlVbml2ZXJzYWwgQXVkaW8KLQkJCQkxNzAwIEdyZWVuIEhpbGxzIFJvYWQKLQkJCQlTY290dHMgVmFsbGV5IENBIDk1MDY2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GQy00NS01RiAgIChoZXgpCQlKSUFOR1hJIFNIQU5TSFVJIE9QVE9FTEVDVFJPTklDIFRFQ0hOT0xPR1kgQ08uLExURAotRkM0NTVGICAgICAoYmFzZSAxNikJCUpJQU5HWEkgU0hBTlNIVUkgT1BUT0VMRUNUUk9OSUMgVEVDSE5PTE9HWSBDTy4sTFRECi0JCQkJTm8uMTAxMCxBbnBpbmcgUm9hZCxFY28tSW5kdXN0cmlhbCBQYXJrLEx1c2hhbiBEaXN0cmljdAotCQkJCUppdWppYW5nIEppYW5neGkgMzMyMDAwCi0JCQkJQ0hJTkEKLQotRkMtNDgtRUYgICAoaGV4KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi1GQzQ4RUYgICAgIChiYXNlIDE2KQkJSFVBV0VJIFRFQ0hOT0xPR0lFUyBDTy4sTFRECi0JCQkJRDEtNEE1MlIsSHVhd2VpIEluZHVzdHJpYWwgQmFzZSwgQmFudGlhbiBMb25nZ2FuZywgCi0JCQkJU2hlbnpoZW4gR3VhbmdEb25nIDUxODEyOQotCQkJCUNISU5BCi0KLUZDLTRELUQ0ICAgKGhleCkJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotRkM0REQ0ICAgICAoYmFzZSAxNikJCVVuaXZlcnNhbCBHbG9iYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgotCQkJCTE0MSwgTGFuZSAzNTEsIFRhaXBpbmcgUmQuIFNlYy4gMSwgVHNhbyBUdWVuLAotCQkJCU5hbi1Ub3UgSHNpZW4sICAgNTQyCi0JCQkJVEFJV0FOLCBSRVBVQkxJQyBPRiBDSElOQQotCi1GQy01MC05MCAgIChoZXgpCQlTSU1FWCBTcC4geiBvLm8uCi1GQzUwOTAgICAgIChiYXNlIDE2KQkJU0lNRVggU3AuIHogby5vLgotCQkJCXVsLiBXaWVsb3BvbGUgNwotCQkJCUdkYe+/vXNrIHBvbW9yc2tpZSA4MC01NTYKLQkJCQlQT0xBTkQKLQotRkMtNUItMjQgICAoaGV4KQkJV2VpYmVsIFNjaWVudGlmaWMgQS9TCi1GQzVCMjQgICAgIChiYXNlIDE2KQkJV2VpYmVsIFNjaWVudGlmaWMgQS9TCi0JCQkJU29sdmFuZyAzMAotCQkJCUFsbGVyb2VkICAzNDUwCi0JCQkJREVOTUFSSwotCi1GQy01Qi0yNiAgIChoZXgpCQlNaWtyb0JpdHMKLUZDNUIyNiAgICAgKGJhc2UgMTYpCQlNaWtyb0JpdHMKLQkJCQlKYWxhbiBQZXR1bmcgMzEgUGFwcmluZ2FuCi0JCQkJWW9neWFrYXJ0YSBESVkgNTUyODEKLQkJCQlJTkRPTkVTSUEKLQotRkMtNjEtOTggICAoaGV4KQkJTkVDIFBlcnNvbmFsIFByb2R1Y3RzLCBMdGQKLUZDNjE5OCAgICAgKGJhc2UgMTYpCQlORUMgUGVyc29uYWwgUHJvZHVjdHMsIEx0ZAotCQkJCTYtODAsIFNoaW1vaGFuYXphd2EgMi1jaG9tZSwKLQkJCQlZb25lemF3YS1zaGkgWWFtYWdhdGEgOTkyLTg1MjAKLQkJCQlKQVBBTgotCi1GQy02OC0zRSAgIChoZXgpCQlEaXJlY3RlZCBQZXJjZXB0aW9uLCBJbmMKLUZDNjgzRSAgICAgKGJhc2UgMTYpCQlEaXJlY3RlZCBQZXJjZXB0aW9uLCBJbmMKLQkJCQk4OTBDIENvd2FuIFJvYWQKLQkJCQlCdXJsaW5nYW1lIENhbGlmb3JuaWEgOTQwMTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLTZDLTMxICAgKGhleCkJCUxYaW5zdHJ1bWVudHMgR21iSAotRkM2QzMxICAgICAoYmFzZSAxNikJCUxYaW5zdHJ1bWVudHMgR21iSAotCQkJCUhlcnJlbmJlcmdlciBTdHIuIDEzMAotCQkJCUJvZWJsaW5nZW4gIDcxMDM0Ci0JCQkJR0VSTUFOWQotCi1GQy03NS0xNiAgIChoZXgpCQlELUxpbmsgSW50ZXJuYXRpb25hbAotRkM3NTE2ICAgICAoYmFzZSAxNikJCUQtTGluayBJbnRlcm5hdGlvbmFsCi0JCQkJMSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIFBhcmssICMwMy0xMiwgVGhlIFN5bmVyZ3kgCi0JCQkJNjA5OTE3Ci0JCQkJU0lOR0FQT1JFCi0KLUZDLTc1LUU2ICAgKGhleCkJCUhhbmRyZWFtbmV0Ci1GQzc1RTYgICAgIChiYXNlIDE2KQkJSGFuZHJlYW1uZXQKLQkJCQkjMTIwOSBNYXJpb1Rvd2VyLCAyMjItMTIsIEd1cm8tRG9uZywgR3Vyby1HdQotCQkJCVNlb3VsIEd1cm8tR3UgMTUyLTg0OAotCQkJCUtPUkVBLCBSRVBVQkxJQyBPRgotCi1GQy03Qy1FNyAgIChoZXgpCQlGQ0kgVVNBIExMQwotRkM3Q0U3ICAgICAoYmFzZSAxNikJCUZDSSBVU0EgTExDCi0JCQkJODI1IE9sZCBUcmFpbCBSb2FkCi0JCQkJRXR0ZXJzIFBBIDE3MzE5Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GQy04My0yOSAgIChoZXgpCQlUcmVpIHRlY2huaWNzCi1GQzgzMjkgICAgIChiYXNlIDE2KQkJVHJlaSB0ZWNobmljcwotCQkJCTgwMSBOb3J0aHBvaW50IFBrd3kKLQkJCQlTdGUgNTQKLQkJCQlXZXN0IFBhbG0gQmVhY2ggRmxvcmlkYSAzMzQwNwotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtODMtOTkgICAoaGV4KQkJQXZheWEsIEluYwotRkM4Mzk5ICAgICAoYmFzZSAxNikJCUF2YXlhLCBJbmMKLQkJCQkyMTEgTW91bnQgQWlyeSBSb2FkCi0JCQkJQmFza2luZyBSaWRnZSBOSiAwNzkyMAotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtOEUtN0UgICAoaGV4KQkJUGFjZSBwbGMKLUZDOEU3RSAgICAgKGJhc2UgMTYpCQlQYWNlIHBsYwotCQkJCVZpY3RvcmlhIFJvYWQsCi0JCQkJU2FsdGFpcmUKLQkJCQlXZXN0IFlvcmtzaGlyZSwgRW5nbGFuZCBCRDE4IDNMRgotCQkJCVVOSVRFRCBLSU5HRE9NCi0KLUZDLThGLUM0ICAgKGhleCkJCUludGVsbGlnZW50IFRlY2hub2xvZ3kgSW5jLgotRkM4RkM0ICAgICAoYmFzZSAxNikJCUludGVsbGlnZW50IFRlY2hub2xvZ3kgSW5jLgotCQkJCVl1YW5oZSAzIFN0cmVldCxUb25nc2hhIEluZHVzdHJpYWwgWm9uZSwKLQkJCQlEb25nY2hlbmcgQXJlYQotCQkJCURvbmdndWFuIEd1YW5nZG9uZyA1MjMxMjcKLQkJCQlDSElOQQotCi1GQy05NC02QyAgIChoZXgpCQlVQklWRUxPWAotRkM5NDZDICAgICAoYmFzZSAxNikJCVVCSVZFTE9YCi0JCQkJIzEzMDEgS09MT05HIERpZ2l0YWwgVmlsbGVudCAyMjItNyBHdXJvLWRvbmcgR3Vyby1ndQotCQkJCVNFT1VMICAxNTItNzc3Ci0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUZDLTk0LUUzICAgKGhleCkJCVRlY2huaWNvbG9yIFVTQSBJbmMuCi1GQzk0RTMgICAgIChiYXNlIDE2KQkJVGVjaG5pY29sb3IgVVNBIEluYy4KLQkJCQkxMDEgV2VzdCAxMDNyZCBTdHJlZXQKLQkJCQlJbmRpYW5hcG9saXMgSU4gNDYyOTAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLUExLTNFICAgKGhleCkJCVNhbXN1bmcgRWxlY3Ryb25pY3MKLUZDQTEzRSAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzCi0JCQkJIzk0LTEsIEltc29vLURvbmcKLQkJCQlHdW1pIEd5ZW9uZ2J1ayA3MzAtMzUwCi0JCQkJS09SRUEsIFJFUFVCTElDIE9GCi0KLUZDLUE4LTQxICAgKGhleCkJCUF2YXlhLCBJbmMKLUZDQTg0MSAgICAgKGJhc2UgMTYpCQlBdmF5YSwgSW5jCi0JCQkJMjExIE1vdW50IEFpcnkgUm9hZAotCQkJCUJhc2tpbmcgUmlkZ2UgTkogMDc5MjAKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLUFGLTZBICAgKGhleCkJCUNvbmVtdGVjaCBBQgotRkNBRjZBICAgICAoYmFzZSAxNikJCUNvbmVtdGVjaCBBQgotCQkJCVRvcnNoYW1uc2dhdGFuIDM1Ci0JCQkJS2lzdGEgIFNFLTE2NDQwCi0JCQkJU1dFREVOCi0KLUZDLUMyLTNEICAgKGhleCkJCUF0bWVsIENvcnBvcmF0aW9uCi1GQ0MyM0QgICAgIChiYXNlIDE2KQkJQXRtZWwgQ29ycG9yYXRpb24KLQkJCQkxMTUwIEUgQ2hleWVubmUgTXRuIEJsdmQKLQkJCQlDb2xvcmFkbyBTcHJpbmdzIENPIDgwOTA2Ci0JCQkJVU5JVEVEIFNUQVRFUwotCi1GQy1DNy0zNCAgIChoZXgpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLUZDQzczNCAgICAgKGJhc2UgMTYpCQlTYW1zdW5nIEVsZWN0cm9uaWNzIENvLixMdGQKLQkJCQkjOTQtMSwgSW1zb28tRG9uZwotCQkJCUd1bWkgR3llb25nYnVrIDczMC0zNTAKLQkJCQlLT1JFQSwgUkVQVUJMSUMgT0YKLQotRkMtQzgtOTcgICAoaGV4KQkJWlRFIENvcnBvcmF0aW9uCi1GQ0M4OTcgICAgIChiYXNlIDE2KQkJWlRFIENvcnBvcmF0aW9uCi0JCQkJMTIvRi4sUiZEIEJ1aWxkaW5nLEtlamluYW4gUm9hZCwKLQkJCQlTaGVuemhlbiwgR3Vhbmdkb25nIDUxODA1NwotCQkJCUNISU5BCi0KLUZDLUNDLUU0ICAgKGhleCkJCUFzY29uIEx0ZC4KLUZDQ0NFNCAgICAgKGJhc2UgMTYpCQlBc2NvbiBMdGQuCi0JCQkJMS0xNS0yNyBNaW5hdG8tbWFjaGkgCi0JCQkJRnVrdXlhbWEg4oCTc2hpIEhpcm9zaGltYS1rZW4gNzIxLTA5NjQKLQkJCQlKQVBBTgotCi1GQy1DRi02MiAgIChoZXgpCQlJQk0gQ29ycAotRkNDRjYyICAgICAoYmFzZSAxNikJCUlCTSBDb3JwCi0JCQkJMjA1MSBNaXNzaW9uIENvbGxlZ2UgQmx2ZCAKLQkJCQlTYW50YSBDbGFyYSBDQSA5NTA1NAotCQkJCVVOSVRFRCBTVEFURVMKLQotRkMtRDQtRjIgICAoaGV4KQkJVGhlIENvY2EgQ29sYSBDb21wYW55Ci1GQ0Q0RjIgICAgIChiYXNlIDE2KQkJVGhlIENvY2EgQ29sYSBDb21wYW55Ci0JCQkJT25lIENvY2EgQ29sYSBQbGF6YQotCQkJCUF0bGFudGEgR0EgMzAzMTMKLQkJCQlVTklURUQgU1RBVEVTCi0KLUZDLUQ0LUY2ICAgKGhleCkJCU1lc3NhbmEgQWlyLlJheSBDb25kaXRpb25pbmcgcy5yLmwuCi1GQ0Q0RjYgICAgIChiYXNlIDE2KQkJTWVzc2FuYSBBaXIuUmF5IENvbmRpdGlvbmluZyBzLnIubC4KLQkJCQlWaWEgVmVuZXppYSAxOAotCQkJCU9kZXJ6byBUViAzMTA0NgotCQkJCUlUQUxZCi0KLUZDLUUxLTkyICAgKGhleCkJCVNpY2h1YW4gSmlud2FuZ3RvbmcgRWxlY3Ryb25pYyBTY2llbmNlJlRlY2hub2xvZ3kgQ28sLkx0ZAotRkNFMTkyICAgICAoYmFzZSAxNikJCVNpY2h1YW4gSmlud2FuZ3RvbmcgRWxlY3Ryb25pYyBTY2llbmNlJlRlY2hub2xvZ3kgQ28sLkx0ZAotCQkJCU5vLjI4LFhpbmNodWFuZyBSZC4sV2VzdCBHYW94aW4gRGlzdHJpY3QKLQkJCQlDaGVuZ2R1IFNpY2h1YW4gNjExNzMxCi0JCQkJQ0hJTkEKLQotRkMtRTItM0YgICAoaGV4KQkJQ0xBWSBQQUtZIFNQQQotRkNFMjNGICAgICAoYmFzZSAxNikJCUNMQVkgUEFLWSBTUEEKLQkJCQlWaWEgUGFzdHJlbmdvIDMvYgotCQkJCVNlcmlhdGUgQmVyZ2FtbyAyNDA2OAotCQkJCUlUQUxZCi0KLUZDLUU1LTU3ICAgKGhleCkJCU5va2lhIENvcnBvcmF0aW9uCi1GQ0U1NTcgICAgIChiYXNlIDE2KQkJTm9raWEgQ29ycG9yYXRpb24KLQkJCQlFbGVrdHJvbmlpa2thdGllIDEwCi0JCQkJT3VsdSBPdSA5MDU5MAotCQkJCUZJTkxBTkQKLQotRkMtRTgtOTIgICAoaGV4KQkJSGFuZ3pob3UgTGFuY2FibGUgVGVjaG5vbG9neSBDby4sTHRkCi1GQ0U4OTIgICAgIChiYXNlIDE2KQkJSGFuZ3pob3UgTGFuY2FibGUgVGVjaG5vbG9neSBDby4sTHRkCi0JCQkJWm9uZSBBLEZsb29yIDE2LFpob25nY2FpIEJ1aWxkaW5nLDY4IyxUb25naGUgUm9hZCxCaW5qaWFuZyBEaXN0cmljdCwKLQkJCQlIYW5nemhvdSBaaGVqaWFuZyAzMTAwNTEKLQkJCQlDSElOQQotCi1GQy1FRC1COSAgIChoZXgpCQlBcnJheWVudAotRkNFREI5ICAgICAoYmFzZSAxNikJCUFycmF5ZW50Ci0JCQkJNTcwIEVsIENhbWlubyBSZWFsICMxNTAtNDE5Ci0JCQkJUmVkd29vZCBDaXR5IENBIDk0MDYzCi0JCQkJVU5JVEVEIFNUQVRFUwotCi1GQy1GMS1DRCAgIChoZXgpCQlPUFRFWC1GQSBDTy4sTFRELgotRkNGMUNEICAgICAoYmFzZSAxNikJCU9QVEVYLUZBIENPLixMVEQuCi0JCQkJOTEgQXdhdGEtY2hvCi0JCQkJQ2h1ZG9qaSBTaGltb2d5by1rdQotCQkJCUt5b3RvICA2MDAtODgxNQotCQkJCUpBUEFOCi0KLUZDLUY4LUFFICAgKGhleCkJCUludGVsIENvcnBvcmF0ZQotRkNGOEFFICAgICAoYmFzZSAxNikJCUludGVsIENvcnBvcmF0ZQotCQkJCUxvdCA4LCBKYWxhbiBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBIaS1UZWNoIFBhcmsKLQkJCQlLdWxpbSBLZWRhaCAwOTAwMAotCQkJCU1BTEFZU0lBCi0KLUZDLUZBLUY3ICAgKGhleCkJCVNoYW5naGFpIEJhdWQgRGF0YSBDb21tdW5pY2F0aW9uIENvLixMdGQuCi1GQ0ZBRjcgICAgIChiYXNlIDE2KQkJU2hhbmdoYWkgQmF1ZCBEYXRhIENvbW11bmljYXRpb24gQ28uLEx0ZC4KLQkJCQlOTy4xMjMgSlVMSSBSRAotCQkJCVBVRE9ORyBaSEFOR0pJQU5HIEhJR0gtVEVDSCBQQVJLCi0JCQkJU0hBTkdIQUkgIDIwMTIwMwotCQkJCUNISU5BCi0KLUZDLUZCLUZCICAgKGhleCkJCUNpc2NvIFN5c3RlbXMKLUZDRkJGQiAgICAgKGJhc2UgMTYpCQlDaXNjbyBTeXN0ZW1zCi0JCQkJODAgV2VzdCBUYXNtYW4gRHIuCi0JCQkJU0pDTS8yCi0JCQkJU2FuIEpvc2UgQ0EgOTUxMzQKLQkJCQlVTklURUQgU1RBVEVTCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy9fX2luaXRfXy5weSBiL2NsaS9jbGkvZGVzYy9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWFiMjc4My4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvX19pbml0X18ucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWFiMjc4My4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9hZGRyZXNzX3NwYWNlLnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvYWRkcmVzc19zcGFjZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWRmZTE3Zi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9hZGRyZXNzX3NwYWNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjM3ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDExLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBjb21tYW5kCi1pbXBvcnQgZm10Y252Ci0nJycKLWRlZiBhZGRyZXNzX3NwYWNlX29yaWdpbl9leHRlcm5hbCAoZGF0YSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIG9yaWdpbi1uYW1lIHdoZW4gdGhlIGFkZHJlc3Mgc3BhY2Ugd2Fzbid0IGNyZWF0ZWQgYnkgdGhlIGNsaSwKLSAgICByZXR1cm4gTm9uZSBvdGhlcndpc2UuCi0gICAgIiIiCi0gICAgcGsgPSBjb21tYW5kLm1pLnBrKCdhZGRyZXNzLXNwYWNlJykKLSAgICBpZiBub3QgcGsgaW4gZGF0YToKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYWRkcmVzc19zcGFjZSA9IGNvbW1hbmQuc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoJ2FkZHJlc3Mtc3BhY2UnLCBwaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW3BrXSkKLSAgICBpZiBsZW4oYWRkcmVzc19zcGFjZSkgPT0gMDoKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGxvY2FsID0gWydjbGknLCAncmVzdCddCi0gICAgaWYgJ29yaWdpbicgaW4gYWRkcmVzc19zcGFjZVswXSBhbmQgbm90IGFkZHJlc3Nfc3BhY2VbMF1bJ29yaWdpbiddIGluIGxvY2FsOgotICAgICAgICByZXR1cm4gYWRkcmVzc19zcGFjZVswXVsnb3JpZ2luJ10KLSAgICByZXR1cm4gTm9uZQotICAgIAotCi1kZWYgYWRkcmVzc19zcGFjZV93YXJuX2V4dGVybmFsX2NvbmZpZyAoZGF0YSk6Ci0gICAgIiIiCi0gICAgRnJvbSB0aGUgbmFtZWQgYWRkcmVzcy1zcGFjZSwgbG9vayB1cCB0aGUgZW50cnksIGlmIGl0IGV4aXN0cyBpbiB0aGUKLSAgICBkYXRhYmFzZSwgdmFsaWRhdGUgdGhlICdvcmlnaW4nIGlzIGVpdGhlciBudWxsLCBvciAnY2xpJywKLSAgICBvdGhlcndpc2UgcHJvdmlkZSBhIHdhcm5pbmcgYWJvdXQgdGhpcyBwYXJ0aWN1bGFyIGFkZHJlc3Mtc3BhY2UKLSAgICAoYWxvbmcgd2l0aCB0aGUgb3JpZ2luYXRvciBuYW1lKQotICAgICIiIgotICAgIGV4dGVybmFsX29yaWdpbiA9IGFkZHJlc3Nfc3BhY2Vfb3JpZ2luX2V4dGVybmFsKGRhdGEpCi0gICAgaWYgZXh0ZXJuYWxfb3JpZ2luOgotICAgICAgICBjb21tYW5kLnNkbnNoLndhcm5pbmcoCi0gICAgICAgICAgICAnYWRkcmVzcy1zcGFjZSAlcyBtYXkgbm90IGJlIGludGVuZGVkIGZvciBjbGkgdXBkYXRlLCAnCi0gICAgICAgICAgICAnb3JpZ2luL2NyZWF0b3IgIiVzIiAnICUgKGRhdGFbJ25hbWUnXSwgZXh0ZXJuYWxfb3JpZ2luKSkKLQotCi1jb21tYW5kLmFkZF9hY3Rpb24oJ2FkZHJlc3Mtc3BhY2Utd2Fybi1leHRlcm5hbC1jb25maWcnLAotICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nfc3BhY2Vfd2Fybl9leHRlcm5hbF9jb25maWcsCi0gICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J2RhdGEnIDogJyRkYXRhJyx9fSkKLQotCi1kZWYgYWRkcmVzc19zcGFjZV9jb25maXJtX2V4dGVybmFsX2RlbGV0ZSAoZGF0YSk6Ci0gICAgIiIiCi0gICAgRnJvbSB0aGUgbmFtZWQgYWRkcmVzcy1zcGFjZSwgbG9vayB1cCB0aGUgZW50cnksIGlmIGl0IGV4aXN0cyBpbiB0aGUKLSAgICBkYXRhYmFzZSwgdmFsaWRhdGUgdGhlICdvcmlnaW4nIGlzIGVpdGhlciBudWxsLCBvciAnY2xpJywKLSAgICBvdGhlcndpc2UgcHJvdmlkZSBhIHdhcm5pbmcgYWJvdXQgdGhpcyBwYXJ0aWN1bGFyIGFkZHJlc3Mtc3BhY2UKLSAgICAoYWxvbmcgd2l0aCB0aGUgb3JpZ2luYXRvciBuYW1lKQotICAgICIiIgotICAgIGV4dGVybmFsX29yaWdpbiA9IGFkZHJlc3Nfc3BhY2Vfb3JpZ2luX2V4dGVybmFsKGRhdGEpCi0gICAgaWYgZXh0ZXJuYWxfb3JpZ2luOgotICAgICAgICBjb25maXJtID0gY29tbWFuZC5hY3Rpb25fcmVnaXN0cnlbJ2NvbmZpcm0nXVswXSAjIFhYWCBhY2Nlc3Nvcj8KLSAgICAgICAgY29uZmlybSgnYWRkcmVzcy1zcGFjZSAlcyBtYXkgbm90IGJlIGludGVuZGVkIGZvciBjbGkgZGVsZXRlLCAnCi0gICAgICAgICAgICAgICAgJ29yaWdpbi9jcmVhdG9yICIlcyJcbkVudGVyIHkgb3IgeWVzIHRvIGNvbnRpbnVlIGRlbGV0ZTogJwotICAgICAgICAgICAgICAgICUgKGRhdGFbJ25hbWUnXSwgZXh0ZXJuYWxfb3JpZ2luKSkKLQotY29tbWFuZC5hZGRfYWN0aW9uKCdhZGRyZXNzLXNwYWNlLWNvbmZpcm0tZXh0ZXJuYWwtZGVsZXRlJywKLSAgICAgICAgICAgICAgICAgICBhZGRyZXNzX3NwYWNlX2NvbmZpcm1fZXh0ZXJuYWxfZGVsZXRlLAotICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyAgICAgIDogJyRkYXRhJyx9fSkKLScnJwotIiIiCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgYWRkcmVzcy1zcGFjZSBzdWJtb2RlIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMKLSMKLQotIwotIyBjb25mOiBbbm9dIGFkZHJlc3Mtc3BhY2UgPGFkZHJlc3Mtc3BhY2UtbmFtZT4KLSMKLUFERFJFU1NfU1BBQ0VfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlJywKLSAgICAnaGVscCcgICAgICAgICA6ICdFbnRlciBBZGRyZXNzLXNwYWNlIHN1Ym1vZGUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZyonLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1zdWJtb2RlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdhZGRyZXNzLXNwYWNlJywKLSAgICAnc3VibW9kZS1uYW1lJyA6ICdjb25maWctYWRkcmVzcy1zcGFjZScsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnRW50ZXIgYWRkcmVzcyBzcGFjZSBzdWJtb2RlJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlfGFkZHJlc3Mtc3BhY2UnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2FkZHJlc3Mtc3BhY2V8YWRkcmVzcy1zcGFjZS1leGFtcGxlJywKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ25hbWUnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgOiAnRW50ZXIgYW4gYWRkcmVzcy1zcGFjZSBuYW1lJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ2FkZHJlc3Mtc3BhY2V8aWRlbnRpZmllcicsCi0gICAgICAgICAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ3R5cGUtZG9jJyBdLAotICAgICAgICAgICAgJ2FjdGlvbicgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnYWRkcmVzcy1zcGFjZS13YXJuLWV4dGVybmFsLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdwdXNoLW1vZGUtc3RhY2snLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgJ25vLWFjdGlvbicgICAgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnYWRkcmVzcy1zcGFjZS1jb25maXJtLWV4dGVybmFsLWRlbGV0ZScsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdkZWxldGUtb2JqZWN0cycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICkKLSAgICAgICAgfQotICAgICksCi19Ci0KLSMKLSMgY29uZi9hZGRyZXNzLXNwYWNlIDxhcz4vYWN0aXZlIHtUcnVlIHwgRmFsc2V9Ci0jCi1BRERSRVNTX1NQQUNFX0FDVElWRV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgOiAnYWN0aXZlJywKLSAgICAnc2hvcnQtaGVscCcgIDogJ1NldCBhZGRyZXNzLXNwYWNlIGFjdGl2ZScsCi0gICAgJ21vZGUnICAgICAgICA6ICdjb25maWctYWRkcmVzcy1zcGFjZScsCi0gICAgJ2RvYycgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlfGFjdGl2ZScsCi0gICAgJ2RvYy1leGFtcGxlJyA6ICdhZGRyZXNzLXNwYWNlfGFjdGl2ZS1leGFtcGxlJywKLSAgICAnZG9jLWluY2x1ZGUnIDogWyAnZGVmYXVsdCcgXSwKLSAgICAnYXJncycgOiAoKSwKLSAgICAnYWN0aW9uJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnIDogJ3dyaXRlLWZpZWxkcycsCi0gICAgICAgICAgICAnZGF0YScgOiB7ICdhY3RpdmUnIDogVHJ1ZSB9LAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdtYXJrIHRoZSBhZGRyZXNzLXNwYWNlIGFzIGFjdGl2ZScsCi0gICAgICAgIH0KLSAgICApLAotICAgICduby1hY3Rpb24nIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgOiAnd3JpdGUtZmllbGRzJywKLSAgICAgICAgICAgICdkYXRhJyA6IHsgJ2FjdGl2ZScgOiBGYWxzZSB9LAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdtYXJrIHRoZSBhZGRyZXNzLXNwYWNlIGFzIGluYWN0aXZlJywKLSAgICAgICAgfQotICAgICkKLX0KLQotIwotIyBjb25mL2FkZHJlc3Mtc3BhY2UgPGFzPi9vcmlnaW4ge2NsaSB8IHJlc3QgfCAuLi4gfQotIwotQUREUkVTU19TUEFDRV9PUklHSU5fQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdvcmlnaW4nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0Rlc2NyaWJlIGFkZHJlc3Mtc3BhY2Ugb3JpZ2luJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctYWRkcmVzcy1zcGFjZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlfG9yaWdpbicsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnYWRkcmVzcy1zcGFjZXxvcmlnaW4tZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICA6ICdvcmlnaW4nLAotICAgICAgICAgICAgJ3R5cGUnICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdhY3Rpb24nIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ2FkZHJlc3Mtc3BhY2Utd2Fybi1leHRlcm5hbC1jb25maWcnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnd3JpdGUtZmllbGRzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICApLAotfQotCi0jCi0jIGNvbmYvYWRkcmVzcy1zcGFjZSA8YXM+L3ByaW9yaXR5IDxwcmk+Ci0jCi1BRERSRVNTX1NQQUNFX1BSSU9SSVRZX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAncHJpb3JpdHknLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1NldCBhZGRyZXNzLXNwYWNlIHByaW9yaXR5JywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctYWRkcmVzcy1zcGFjZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlfHByaW9yaXR5JywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdhZGRyZXNzLXNwYWNlfHByaW9yaXR5LWV4YW1wbGUnLAotICAgICdkb2MtaW5jbHVkZScgIDogWyAncmFuZ2UnLCAnZGVmYXVsdCcgXSwKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICdiYXNlLXR5cGUnIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ3JhbmdlJyAgICAgOiAoMCwgNjU1MzUpLAotICAgICAgICB9Ci0gICAgKQotfQotIiIiCi0KLWRlZiBhZGRyZXNzX3NwYWNlX2NoZWNrX3VuaXF1ZV92bGFuKGRhdGEpOgotICAgICIiIgotICAgIFBlZWsgdG8gc2VlIGlmIHRoZSB2bGFuIGlzIGluIHVzZSBieSBhbnkgb3RoZXIgYWRkcmVzcy1zcGFjZQotICAgICIiIgotICAgIHZsYW5fZmllbGQgPSAndmxhbi10YWctb24tZWdyZXNzJwotICAgIGluX3VzZSA9IGNvbW1hbmQuc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoJ2FkZHJlc3Mtc3BhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmxhbl9maWVsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihkYXRhW3ZsYW5fZmllbGRdKSkKLSAgICB2bGFuX2ZpZWxkID0gJ3ZsYW4tdGFnLW9uLWVncmVzcycKLSAgICBpZiBsZW4oaW5fdXNlKSA+IDA6Ci0gICAgICAgIGN1cnJlbnRfYXMgPSBjb21tYW5kLnNkbnNoLmdldF9jdXJyZW50X21vZGVfb2JqKCkKLSAgICAgICAgb3RoZXJfYXMgPSBbeFsnbmFtZSddIGZvciB4IGluIGluX3VzZSBpZiB4WyduYW1lJ10gIT0gY3VycmVudF9hc10KLSAgICAgICAgaWYgbGVuKG90aGVyX2FzKToKLSAgICAgICAgICAgIGNvbW1hbmQuc2Ruc2gud2FybmluZygKLSAgICAgICAgICAgICAgICAgICAgJ3ZsYW4gJXMgY3VycmVudGx5IGluIHVzZSBieSBvdGhlciBhZGRyZXNzLXNwYWNlczogJXMnICUKLSAgICAgICAgICAgICAgICAgICAgKGRhdGFbdmxhbl9maWVsZF0sICcsICcuam9pbihvdGhlcl9hcykpKQotCi0KLWNvbW1hbmQuYWRkX2FjdGlvbignYWRkcmVzcy1zcGFjZS1jaGVjay11bmlxdWUtdmxhbicsCi0gICAgICAgICAgICAgICAgICAgYWRkcmVzc19zcGFjZV9jaGVja191bmlxdWVfdmxhbiwKLSAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnZGF0YScgOiAnJGRhdGEnLH19KQotCi0iIiIKLSMKLSMgY29uZi9hZGRyZXNzLXNwYWNlIDxhcz4vdmxhbi10YWctb24tZWdyZXNzIDx0YWc+Ci0jCi1BRERSRVNTX1NQQUNFX1ZMQU5fVEFHX09OX0VHUkVTU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3ZsYW4tdGFnLW9uLWVncmVzcycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnRWdyZXNzIFZMQU4gdGFnJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctYWRkcmVzcy1zcGFjZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlfHZsYW4tdGFnLW9uLWVncmVzcycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnYWRkcmVzcy1zcGFjZXx2bGFuLXRhZy1vbi1lZ3Jlc3MtZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICd2bGFuLXRhZy1vbi1lZ3Jlc3MnLAotICAgICAgICAgICAgJ2Jhc2UtdHlwZScgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAncmFuZ2UnICAgICA6ICgxLCA0MDk2KSwKLSAgICAgICAgICAgICdhY3Rpb24nICAgIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ2FkZHJlc3Mtc3BhY2UtY2hlY2stdW5pcXVlLXZsYW4nLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnd3JpdGUtZmllbGRzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgfQotICAgICkKLX0KLQotIwotIyBjb25mL2FkZHJlc3Mtc3BhY2UgPGFzPi9kZXNjcmlwdGlvbiA8ZGVzY3I+Ci0jCi1BRERSRVNTX1NQQUNFX0RFU0NSSVBUSU9OX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnZGVzY3JpcHRpb24nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Byb3ZpZGUgZGVzY3JpcHRpb24gZm9yIHRoaXMgYWRkcmVzcy1zcGFjZScsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLWFkZHJlc3Mtc3BhY2UnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ2RvYycgICAgICAgICAgOiAnYWRkcmVzcy1zcGFjZXxkZXNjcmlwdGlvbicsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnYWRkcmVzcy1zcGFjZXxkZXNjcmlwdGlvbi1leGFtcGxlJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyA6ICdkZXNjcmlwdGlvbicsCi0gICAgICAgICAgICAndHlwZScgIDogJ3N0cmluZycsCi0gICAgICAgIH0KLSAgICApLAotfQotCi0jCi0jIGNvbmYvYWRkcmVzcy1zcGFjZSA8YXM+L2lkZW50aWZpZXItcnVsZSA8aXI+Ci0jCi1BRERSRVNTX1NQQUNFX0lERU5USUZJRVJfUlVMRV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ2lkZW50aWZpZXItcnVsZScsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2V0IGFuIGFkZHJlc3Mtc3BhY2UgaWRlbnRpZmllciBydWxlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctYWRkcmVzcy1zcGFjZSonLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1zdWJtb2RlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdhZGRyZXNzLXNwYWNlLWlkZW50aWZpZXItcnVsZScsCi0gICAgJ3BhcmVudC1maWVsZCcgOiAnYWRkcmVzcy1zcGFjZScsCi0gICAgJ3N1Ym1vZGUtbmFtZScgOiAnY29uZmlnLWFkZHJlc3Mtc3BhY2UtaWQtcnVsZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAnYWRkcmVzcy1zcGFjZXxpZGVudGlmaWVyLXJ1bGUnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2FkZHJlc3Mtc3BhY2V8aWRlbnRpZmllci1ydWxlLWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAncnVsZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgIDogJ0VudGVyIGFuIGFkZHJlc3Mtc3BhY2UgaWRlbnRpZmllciBydWxlIG5hbWUnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdkb2MtaW5jbHVkZScgIDogWyAndHlwZS1kb2MnIF0sCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlfGlkLXJ1bGUtaWRlbnRpZmllcicsCi0gICAgICAgICAgICAnc2NvcGVkJyAgICAgICA6IFRydWUsCi0gICAgICAgIH0KLSAgICApCi19Ci0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBhZGRyZXNzLXNwYWNlIGlkZW50aWZpZXIgcnVsZXMgc3VibW9kZQotIwotCi0jCi0jIGNvbmYvYWRkcmVzcy1zcGFjZSA8YXM+L2lkZW50aWZpZXItcnVsZSA8aXI+L2FjdGl2ZSB7VHJ1ZSB8IEZhbHNlfQotIwotQUREUkVTU19TUEFDRV9JRF9BQ1RJVkVfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdhY3RpdmUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1hZGRyZXNzLXNwYWNlLWlkLXJ1bGUnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1NldCBydWxlIHRvIEFjdGl2ZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlfGlkLWFjdGl2ZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnYWRkcmVzcy1zcGFjZXxpZC1hY3RpdmUtZXhhbXBsZScsCi0gICAgJ2RvYy1pbmNsdWRlJyAgOiBbICdkZWZhdWx0JyBdLAotICAgICdhcmdzJyAgICAgICAgIDogKCksCi0gICAgJ2FjdGlvbicgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyA6ICd3cml0ZS1maWVsZHMnLAotICAgICAgICAgICAgJ2RhdGEnIDogeyAnYWN0aXZlJyA6IFRydWUgfQotICAgICAgICB9Ci0gICAgKSwKLSAgICAnbm8tYWN0aW9uJyAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnIDogJ3dyaXRlLWZpZWxkcycsCi0gICAgICAgICAgICAnZGF0YScgOiB7ICdhY3RpdmUnIDogRmFsc2UgfQotICAgICAgICB9Ci0gICAgKQotfQotCi0jCi0jIGNvbmYvYWRkcmVzcy1zcGFjZSA8YXM+L2lkZW50aWZpZXItcnVsZSA8aXI+L2Rlc2NyaXB0aW9uIDxkZXNjcj4KLSMKLUFERFJFU1NfU1BBQ0VfSURfREVTQ1JJUFRJT05fQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdkZXNjcmlwdGlvbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnUHJvdmlkZSBkZXNjcmlwdGlvbiBmb3IgaWRlbnRpZmllciBydWxlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctYWRkcmVzcy1zcGFjZS1pZC1ydWxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdkb2MnICAgICAgICAgIDogJ2FkZHJlc3Mtc3BhY2V8aWQtZGVzY3JpcHRpb24nLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2FkZHJlc3Mtc3BhY2V8aWQtZGVzY3JpcHRpb24tZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgOiAnZGVzY3JpcHRpb24nLAotICAgICAgICAgICAgJ3R5cGUnICA6ICdzdHJpbmcnLAotICAgICAgICB9Ci0gICAgKSwKLX0KLQotIwotIyBjb25mL2FkZHJlc3Mtc3BhY2UgPGFzPi9pZGVudGlmaWVyLXJ1bGUgPGlyPi9wcmlvcml0eSA8cHJpPgotIwotQUREUkVTU19TUEFDRV9JRF9QUklPUklUWV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3ByaW9yaXR5JywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdEZXNjcmliZSBwcmlvcml0eSBmb3IgaWRlbnRpZmllciBydWxlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctYWRkcmVzcy1zcGFjZS1pZC1ydWxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdkb2MnICAgICAgICAgIDogJ2FkZHJlc3Mtc3BhY2V8aWQtcHJpb3JpdHknLAotICAgICdkb2MtaW5jbHVkZScgIDogWyAncmFuZ2UnLCAnZGVmYXVsdCcgXSwKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdhZGRyZXNzLXNwYWNlfGlkLXByaW9yaXR5LWV4YW1wbGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnIDogJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICd2YWx1ZScgOiAnaW50ZWdlcicsCi0gICAgICAgIH0KLSAgICApLAotfQotCi0jCi0jIGNvbmYvYWRkcmVzcy1zcGFjZSA8YXM+L2lkZW50aWZpZXItcnVsZSA8aXI+L3N3aXRjaCA8c3d0LWRwaWQ+Ci0jCi1BRERSRVNTX1NQQUNFX0lEX01BVENIX1NXSVRDSF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ21hdGNoJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdBc3NvY2lhdGUgc3dpdGNoIHdpdGggaWRlbnRpZmllciBydWxlJywKLSAgICAnYWxsLWhlbHAnICAgICA6ICdDb25maWd1cmUgYSBtYXRjaCBmb3IgdGhpcyBpZGVudGlmaWVyIHJ1bGUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1hZGRyZXNzLXNwYWNlLWlkLXJ1bGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ29iai10eXBlJyAgICAgOiAnYWRkcmVzcy1zcGFjZS1pZGVudGlmaWVyLXJ1bGUnLAotICAgICdkb2MtYWxsJyAgICAgIDogJ2FkZHJlc3Mtc3BhY2V8bWF0Y2gnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2FkZHJlc3Mtc3BhY2V8bWF0Y2gtc3dpdGNoLWV4YW1wbGUnLAotICAgICdkYXRhJyAgICAgICAgIDogeyAjIGZvciBubyBjb21tYW5kIHJlc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICdzd2l0Y2gnIDogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3BvcnRzJyAgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgICAgICAgOiAnc3dpdGNoJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ2FkZHJlc3Mtc3BhY2V8bWF0Y2gtc3dpdGNoJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIyBjb25zdHJ1Y3RlZCBhcyBhcmdzIHRvIGVuc3VyZSB0aGF0IHRoZSBwb3J0cyBpc24ndAotICAgICAgICAgICAgIyBjb21wbGV0ZWQgYWxvbmcgd2l0aCBzd3RpY2ggdmFsdWVzIGZvciAnbm8gbWF0Y2ggc3dpdGNoJwotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgJ2FyZ3MnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgJ3BhcmVudC1maWVsZCcgICAgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICAgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRlLWFsaWFzLWNob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgICAgOiAnc3dpdGNoIGRwaWQgb3Igc3dpdGNoIGFsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgICAgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICAgICA6ICdzd2l0Y2hlc3xkcGlkJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAncG9ydHMnLAotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnICAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgICAgIDogJ3N3aXRjaCBpbnRlcmZhY2UsIG9yIHJhbmdlLCBvciBsaXN0JywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgICAgOiAnY29tcGxldGUtaW50ZXJmYWNlLWxpc3QnLAotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgIDogJ2FkZHJlc3Mtc3BhY2V8bWF0Y2gtc3dpdGNoLXBvcnRzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICApLAotfQotCi0KLSMKLSMgY29uZi9hZGRyZXNzLXNwYWNlIDxhcz4vaWRlbnRpZmllci1ydWxlIDxpcj4vdGFnIDxuYW1lLXZhbC1wYWlyPgotIwotQUREUkVTU19TUEFDRV9JRF9NQVRDSF9UQUdfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdtYXRjaCcsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnQXNzb2NpYXRlIHRhZyB3aXRoIGlkZW50aWZpZXIgcnVsZScsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLWFkZHJlc3Mtc3BhY2UtaWQtcnVsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnZGF0YScgICAgICAgICA6IHsgIyBmb3Igbm8gY29tbWFuZCByZXNldAotICAgICAgICAgICAgICAgICAgICAgICAndGFnJyA6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICB9LAotICAgICdkb2MtZXhhbXBsZScgIDogJ2FkZHJlc3Mtc3BhY2V8bWF0Y2gtdGFnLWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgICAgICAgOiAndGFncycsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlfG1hdGNoLXRhZycsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ3RhZycsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICB9Ci0gICAgKQotfQotCi0jCi0jIGNvbmYvYWRkcmVzcy1zcGFjZSA8YXM+L2lkZW50aWZpZXItcnVsZSA8aXI+L3ZsYW5zIDx2bD4KLSMKLUFERFJFU1NfU1BBQ0VfSURfTUFUQ0hfVkxBTlNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdtYXRjaCcsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnQXNzb2NpYXRlIHZsYW5zIHdpdGggaWRlbnRpZmllciBydWxlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctYWRkcmVzcy1zcGFjZS1pZC1ydWxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdkYXRhJyAgICAgICAgIDogeyAjIGZvciBubyBjb21tYW5kIHJlc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICd2bGFucycgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdhZGRyZXNzLXNwYWNlfG1hdGNoLXZsYW4tZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgICAgICAgIDogJ3ZsYW5zJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ2FkZHJlc3Mtc3BhY2V8bWF0Y2gtdmxhbicsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ3ZsYW5zJywKLSAgICAgICAgICAgICd2YWx1ZScgICAgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAnaGVscC1uYW1lJyAgICAgICA6ICdWbGFuIG51bWJlciAoMS00MDk1KSBvciByYW5nZSwgb3IgbGlzdCcsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgIH0KLSAgICApLAotfQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgc2hvdyBhZGRyZXNzLXNwYWNlIGNvbW1hbmRzCi0jCi0KLSMKLSMgc2hvdyBhZGRyZXNzLXNwYWNlIDxjcj4KLSMKLUFERFJFU1NfU1BBQ0VfU0hPV19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdvYmotdHlwZScgICAgIDogJ2FkZHJlc3Mtc3BhY2UnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnYWxsLWhlbHAnICAgICA6ICdTaG93IGFkZHJlc3Mgc3BhY2UgaW5mb3JtYXRpb24nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgYWxsIGFkZHJlc3Mgc3BhY2VzJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlfHNob3cnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2FkZHJlc3Mtc3BhY2V8c2hvdy1leGFtcGxlJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ2FkZHJlc3Mtc3BhY2UnLAotICAgICksCi19Ci0KLSMKLSMgc2hvdyBhZGRyZXNzLXNwYWNlIDxhcz4gW2JyaWVmIHwgZGV0YWlsc10gPGNyPgotIwotQUREUkVTU19TUEFDRV9TSE9XX0lEX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ29iai10eXBlJyAgICAgOiAnYWRkcmVzcy1zcGFjZScsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgYSBzcGVjaWZpYyBhZGRyZXNzIHNwYWNlJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlfHNob3ctaWQnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2FkZHJlc3Mtc3BhY2V8c2hvdy1pZC1leGFtcGxlJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ2FkZHJlc3Mtc3BhY2UnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICA6ICJhZGRyZXNzLXNwYWNlLW5hbWUiLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICA6ICduYW1lJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICA6ICdhbGwnLAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICksCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgOiAnZGV0YWlsJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgOiAoJ2RldGFpbHMnLCAnYnJpZWYnKSwKLSAgICAgICAgICAgICdkb2MnICAgICAgOiAnZm9ybWF0fCsnLAotICAgICAgICB9Ci0gICAgKQotfQotCi0jCi0jIHNob3cgYWRkcmVzcy1zcGFjZSA8YXM+IFsgaWRlbnRpZmllci1ydWxlcyBdIC4uLgotIwotQUREUkVTU19TUEFDRV9TSE9XX0lEX0RFVEFJTFNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdhZGRyZXNzLXNwYWNlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB0aGUgY29uZmlndXJlZCBpZGVudGlmaWVyLXJ1bGVzIGZvciBhIHNwZWNpZmljIGFkZHJlc3Mgc3BhY2UnLAotICAgICdkb2MnICAgICAgICAgIDogJ2FkZHJlc3Mtc3BhY2V8c2hvdy1pZC1ydWxlcycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnYWRkcmVzcy1zcGFjZXxzaG93LWlkLXJ1bGVzLWV4YW1wbGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnYWRkcmVzcy1zcGFjZScsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICduYW1lJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgIDogImFkZHJlc3Mtc3BhY2UtbmFtZSIsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ25hbWUnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgOiAnYWxsJywKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAjIHNob3cgYWRkcmVzcy1zcGFjZSA8YXM+IHsgaWRlbnRpZmllci1ydWxlcyB9Ci0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgIDogJ2lkZW50aWZpZXItcnVsZXMnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgIDogJ2lkZW50aWZpZXItcnVsZXMnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnIDogJ2FkZHJlc3Mtc3BhY2UtaWRlbnRpZmllci1ydWxlJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKQotICAgICAgICB9Ci0gICAgKSwKLX0KLQotIwotIyBGT1JNQVRTCi0jICBwZXJoYXBzIHRoZXNlIG91Z2h0IGJlIG1vdmVkIG5leHQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBzaG93IGNvbW1hbmRzCi0jCi0KLUFERFJFU1NfU1BBQ0VfRk9STUFUID0gewotICAgICdhZGRyZXNzLXNwYWNlJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgICAgICAgICAgICA6IFsnSWR4JywgJ25hbWUnLCAnYWN0aXZlJywgJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bGFuLXRhZy1vbi1lZ3Jlc3MnXSwKLSAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlLWNvbmZpZycgIDogWydJZHgnLCAnbmFtZScsICdhY3RpdmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZsYW4tdGFnLW9uLWVncmVzcyddLAotICAgICAgICAgICAgJ2JyaWVmJyAgICAgICAgICAgICAgICAgOiBbJ0lkeCcsICduYW1lJywgJ3ZsYW4tdGFnLW9uLWVncmVzcyddLAotICAgICAgICAgICAgJ2RldGFpbHMnICAgICAgICAgICAgICAgOiBbJ0lkeCcsICduYW1lJywgJ2FjdGl2ZScsICdwcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJywgJ3ZsYW4tdGFnLW9uLWVncmVzcyddLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICduYW1lJyAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0FkZHJlc3MgU3BhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ2FjdGl2ZScgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICdwcmlvcml0eScgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAndmxhbi10YWctb24tZWdyZXNzJzogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdWbGFuIFRhZyBvbiBFZ3Jlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotCi1BRERSRVNTX1NQQUNFX0lERU5USUZJRVJfUlVMRV9GT1JNQVQgPSB7Ci0gICAgJ2FkZHJlc3Mtc3BhY2UtaWRlbnRpZmllci1ydWxlJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncyc6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgICAgICAgICAgICAgOiBbICdJZHgnLCAgICAnYWRkcmVzcy1zcGFjZScsICAncnVsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlJywgJ3ByaW9yaXR5JywgJ3N3aXRjaCcsICdwb3J0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFnJywgICAgJ3ZsYW5zJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnYWRkcmVzcy1zcGFjZS1jb25maWcnIDogWyAnSWR4JywgICAgJ3J1bGUnLCAgICAgJ2Rlc2NyaXB0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmUnLCAncHJpb3JpdHknLCAnc3dpdGNoJywgJ3BvcnRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YWcnLCAndmxhbnMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAncnVsZScgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdBZGRyZXNzIFNwYWNlIFJ1bGUgSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWRkcmVzcy1zcGFjZScgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQWRkcmVzcyBTcGFjZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FjdGl2ZScgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BvcnRzJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ByaW9yaXR5JyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3J1bGUnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RhZycgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ZsYW5zJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotIiIiCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9hZGRyZXNzX3NwYWNlX21vZGVsLnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvYWRkcmVzc19zcGFjZV9tb2RlbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOTEwNDZhYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9hZGRyZXNzX3NwYWNlX21vZGVsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBjb21tYW5kCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZW5hYmxlX2Nhc2NhZGVfZGVsZXRlKCdhZGRyZXNzLXNwYWNlJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZW5hYmxlX2Nhc2NhZGVfZGVsZXRlKCdhZGRyZXNzLXNwYWNlLWlkZW50aWZpZXItcnVsZScpCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCdhZGRyZXNzLXNwYWNlJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCdhZGRyZXNzLXNwYWNlLWlkZW50aWZpZXItcnVsZScpCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdhZGRyZXNzLXNwYWNlJywgJ2FjdGl2ZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnYWRkcmVzcy1zcGFjZScsICdkZXNjcmlwdGlvbicpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnYWRkcmVzcy1zcGFjZScsICdwcmlvcml0eScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnYWRkcmVzcy1zcGFjZScsICd2bGFuLXRhZy1vbi1lZ3Jlc3MnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2FkZHJlc3Mtc3BhY2UnLCAnb3JpZ2luJykKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2FkZHJlc3Mtc3BhY2UtaWRlbnRpZmllci1ydWxlJywgJ3J1bGUnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2FkZHJlc3Mtc3BhY2UtaWRlbnRpZmllci1ydWxlJywgJ2FjdGl2ZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnYWRkcmVzcy1zcGFjZS1pZGVudGlmaWVyLXJ1bGUnLCAncG9ydHMnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2FkZHJlc3Mtc3BhY2UtaWRlbnRpZmllci1ydWxlJywgJ21hYycpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnYWRkcmVzcy1zcGFjZS1pZGVudGlmaWVyLXJ1bGUnLCAncHJpb3JpdHknKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2FkZHJlc3Mtc3BhY2UtaWRlbnRpZmllci1ydWxlJywgJ3N3aXRjaCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnYWRkcmVzcy1zcGFjZS1pZGVudGlmaWVyLXJ1bGUnLCAndGFnJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdhZGRyZXNzLXNwYWNlLWlkZW50aWZpZXItcnVsZScsICd2bGFucycpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9hZGRyZXNzX3NwYWNlX3J1bl9jb25maWcucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9hZGRyZXNzX3NwYWNlX3J1bl9jb25maWcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM2OGJjMWIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvYWRkcmVzc19zcGFjZV9ydW5fY29uZmlnLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEyLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgIGFkZHJlc3Nfc3BhY2VfcnVuX2NvbmZpZy5weQotIwotIyBzaG93IHJ1bm5pbmcgYWRkcmVzcy1zcGFjZSBbYXNdCi0jCi0KLWltcG9ydCBydW5fY29uZmlnCi1pbXBvcnQgY29tbWFuZAotaW1wb3J0IGZtdGNudgotaW1wb3J0IHV0aWYKLWltcG9ydCBzeXMKLWZyb20gbWlkdyBpbXBvcnQgKgotCi1kZWYgYWRkcmVzc19zcGFjZV9ydW5uaW5nX2NvbmZpZ19pbmNsdWRlX2ZpZWxkKGNvbnRleHQsIGNvbmZpZywKLSAgICAgICAgYWRkcmVzc19zcGFjZSwgb2JqX3R5cGUsIGZpZWxkLCB2YWx1ZSwgaW5kZW50LCBwcmVmaXggPSAiIik6Ci0gICAgIiIiCi0gICAgSWRlbnRpZnkgZmllbGRzIG9mIG9ial90eXBlcyB3aG8ncyB2YWx1ZXMgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQKLSAgICB2YWx1ZXMsIHNpbmNlIHRoZXNlIG5lZWQgdG8gYmUgaW5jbHVkZWQgaW50byB0aGUgcnVubmluZy1jb25maWcKLSAgICAiIiIKLSAgICBpZiBjb250ZXh0Lm1pLm5vdF9kZWZhdWx0X3ZhbHVlKG9ial90eXBlLCBmaWVsZCwgdmFsdWUpOgotICAgICAgICBpZiBjb250ZXh0Lm1pLmlzX2ZpZWxkX3N0cmluZyhvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAgICAgY29uZmlnLmFwcGVuZCgnICcgKiAoaW5kZW50ICsgaW5kZW50KSArIHByZWZpeCArIGZpZWxkICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAlc1xuIiAlIHV0aWYucXVvdGVfc3RyaW5nKHZhbHVlKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJyAnICogKGluZGVudCArIGluZGVudCkgKyBwcmVmaXggKyBmaWVsZCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcgJXNcbicgJSB2YWx1ZSkKLQotIwotIyBhZGRyZXNzX3NwYWNlX3J1bm5pbmdfY29uZmlnX2RldGFpbHMKLSMKLSMgU2hvdyBhbiBhZGRyZXNzLXNwYWNlIGNvbmZpZ3VyYXRpb24gaW4gZGV0YWlsCi0jCi1kZWYgYWRkcmVzc19zcGFjZV9ydW5uaW5nX2NvbmZpZ19kZXRhaWxzIChjb250ZXh0LCBjb25maWcsIGFkZHJlc3Nfc3BhY2UpOgotICAgICIiIgotICAgIERpc3BsYXkgdGhlIGRldGFpbHMgZm9yIHRoZSBmaWVsZHMgb2YgYSBhZGRyZXNzX3NwYWNlIHdoaWNoIG1heSBoYXZlCi0gICAgbm9uLWRlZmF1bHQgdmFsdWVzLgotICAgICIiIgotCi0gICAgIwotICAgICMgJ2FjdGl2ZScgaXMgVHJ1ZSBieSBkZWZhdWx0LiBQcmVwZW5kICdubycgaW50byB0aGUgZ2VuZXJhdGVkIGNvbmZpZwotICAgICMgaWYgdGhpcyBpdGVtIGlzIG5vdCBhY3RpdmUuCi0gICAgIwotICAgIGlmIGFkZHJlc3Nfc3BhY2VbJ2FjdGl2ZSddICE9IFwKLSAgICAgICAgY29udGV4dC5taS5maWVsZF9kZWZhdWx0X3ZhbHVlKCdhZGRyZXNzLXNwYWNlJywgJ2FjdGl2ZScpOgotICAgICAgICBjb25maWcuYXBwZW5kKCcgIG5vIGFjdGl2ZVxuJykKLQotICAgICMKLSAgICAjIFNob3cgdGhlIHJlc3Qgb2YgdGhlIGZpZWxkcwotICAgICMKLSAgICBhZGRyZXNzX3NwYWNlX2ZpZWxkcyA9IFsnZGVzY3JpcHRpb24nLCAnb3JpZ2luJywgJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmxhbi10YWctb24tZWdyZXNzJ10KLQotICAgIGZvciBmaWVsZCBpbiBzb3J0ZWQoYWRkcmVzc19zcGFjZV9maWVsZHMpOgotICAgICAgICBhZGRyZXNzX3NwYWNlX3J1bm5pbmdfY29uZmlnX2luY2x1ZGVfZmllbGQoY29udGV4dCwgY29uZmlnLAotICAgICAgICAgICAgYWRkcmVzc19zcGFjZSwgJ2FkZHJlc3Mtc3BhY2UnLCBmaWVsZCwKLSAgICAgICAgICAgIGFkZHJlc3Nfc3BhY2UuZ2V0KGZpZWxkLCcnKSwgMSkKLQotIwotIyBhZGRyZXNzX3NwYWNlX3J1bm5pbmdfY29uZmlnX2lkX3J1bGUKLSMKLSMgR2VuZXJhdGUgaW5kZW50aWZpZXItcnVsZSB1bmRlciBhZGRyZXNzLXNwYWNlIGNvbmZpZ3VyYXRpb24KLSMgCi1kZWYgYWRkcmVzc19zcGFjZV9ydW5uaW5nX2NvbmZpZ19pZF9ydWxlIChjb250ZXh0LCBjb25maWcsIGFkZHJlc3Nfc3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX3NwYWNlX2lkX3J1bGVfZW50cmllcyk6Ci0KLSAgICAjCi0gICAgIyBJdGVyYXRlIHRocm91Z2ggZWFjaCBpZGVudGlmaWVyLXJ1bGUgYW5kIHNob3cgaXRzIGNvbnRlbnRzCi0gICAgIwotICAgIGZvciBydWxlIGluIGFkZHJlc3Nfc3BhY2VfaWRfcnVsZV9lbnRyaWVzOgotCi0gICAgICAgICMKLSAgICAgICAgIyBTaG93IHRoZSBydWxlIGhlYWRlciBsaW5lCi0gICAgICAgICMKLSAgICAgICAgY29uZmlnLmFwcGVuZCgnICBpZGVudGlmaWVyLXJ1bGUgJXNcbicgJSBydWxlWydydWxlJ10pCi0KLSAgICAgICAgIwotICAgICAgICAjIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGZpZWxkIGNvbmZpZ3VyYWJsZSBhbmQgZ2VuZXJhdGUgdGhlIGNvbmZpZwotICAgICAgICAjIGlmIHByZXNlbnQuCi0gICAgICAgICMKLSAgICAgICAgZm9yIGZpZWxkIGluIFsnZGVzY3JpcHRpb24nLCAnYWN0aXZlJywgJ3ByaW9yaXR5J106Ci0gICAgICAgICAgICBhZGRyZXNzX3NwYWNlX3J1bm5pbmdfY29uZmlnX2luY2x1ZGVfZmllbGQoY29udGV4dCwgY29uZmlnLAotICAgICAgICAgICAgICAgIGFkZHJlc3Nfc3BhY2UsICdhZGRyZXNzLXNwYWNlLWlkZW50aWZpZXItcnVsZScsIGZpZWxkLAotICAgICAgICAgICAgICAgIHJ1bGUuZ2V0KGZpZWxkLCAnJyksIDIpCi0KLSAgICAgICAgZm9yIGZpZWxkIGluIFsndmxhbnMnLCAndGFnJ106Ci0gICAgICAgICAgICBhZGRyZXNzX3NwYWNlX3J1bm5pbmdfY29uZmlnX2luY2x1ZGVfZmllbGQoY29udGV4dCwgY29uZmlnLAotICAgICAgICAgICAgICAgIGFkZHJlc3Nfc3BhY2UsICdhZGRyZXNzLXNwYWNlLWlkZW50aWZpZXItcnVsZScsIGZpZWxkLAotICAgICAgICAgICAgICAgIHJ1bGUuZ2V0KGZpZWxkLCAnJyksIDIsICJtYXRjaCAiKQotCi0gICAgICAgICMKLSAgICAgICAgIyBNYW5hZ2Ugc3dpdGNoIGFuZCBwb3J0cyBkaWZmZXJlbnRseSwgcGxhY2luZyBib3RoIG9uIHRoZQotICAgICAgICAjIHNhbWUgbGluZSB3aGVuIHBvcnRzIGV4aXN0LCBhbmQgcmVwbGFjaW5nIHRoZSBzd2l0Y2ggYWxpYXMKLSAgICAgICAgIyB3aGVuIGl0cyBhdmFpbGFibGUuCi0gICAgICAgIGlmICdzd2l0Y2gnIGluIHJ1bGU6Ci0gICAgICAgICAgICBkcGlkX29yX2FsaWFzID0gYWxpYXNfbG9va3VwX3dpdGhfZm9yZWlnbl9rZXkoJ3N3aXRjaC1hbGlhcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZVsnc3dpdGNoJ10pCi0gICAgICAgICAgICBpZiBkcGlkX29yX2FsaWFzID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgZHBpZF9vcl9hbGlhcyA9IHJ1bGVbJ3N3aXRjaCddICMgZHBpZAotICAgICAgICAgICAgaWYgJ3BvcnRzJyBpbiBydWxlOgotICAgICAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJyAgICBtYXRjaCBzd2l0Y2ggJXMgJXNcbicgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHBpZF9vcl9hbGlhcywgcnVsZVsncG9ydHMnXSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJyAgICBtYXRjaCBzd2l0Y2ggJXNcbicgJSBkcGlkX29yX2FsaWFzKQotCi0gICAgICAgICMKLSAgICAgICAgIyBUaGlzIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiBjb21wbGV0ZSwgcHJpbnQgdGhlIHRyYWlsZXIuCi0gICAgICAgICMKLQotCi0jCi0jIHJ1bm5pbmdfY29uZmlnX3NwZWNpZmljX2FkZHJlc3Nfc3BhY2UKLSMKLSMgU2hvdyBydW5uaW5nIGNvbmZpZ3VyYXRpb24gb2Ygb25lIHBhcnRpY3VsYXIgYWRkcmVzcy1zcGFjZQotIwotZGVmIHJ1bm5pbmdfY29uZmlnX3NwZWNpZmljX2FkZHJlc3Nfc3BhY2UgKGNvbnRleHQsIGNvbmZpZywgYWRkcmVzc19zcGFjZV9uYW1lKToKLSAgICAKLSAgICAjCi0gICAgIyBIYXZlIGEgdGVtcG9yYXJ5IGhvbGRlciB0byBzdG9yZSBnZW5lcmF0ZWQgY29uZmlndXJhdGlvbi4KLSAgICAjCi0gICAgdG1wX2NvbmZpZyA9IFsgXQotCi0gICAgIwotICAgICMgUmV0cmlldmUgdGhlIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgZGF0YSBzdG9yZS4gQ2F0Y2ggYWxsIHBvc3NpYmxlCi0gICAgIyBleGNlcHRpb25zIGFuZCByZXBvcnQgYmFjayBhcyBhcHByb3ByaWF0ZS4KLSAgICAjCi0gICAgdHJ5OgotICAgICAgICBhZGRyZXNzX3NwYWNlID0gY29udGV4dC5nZXRfb2JqZWN0X2Zyb21fc3RvcmUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3Mtc3BhY2UnLCBhZGRyZXNzX3NwYWNlX25hbWUpCi0gICAgZXhjZXB0OgotCi0gICAgICAgICMKLSAgICAgICAgIyBUaGlzIHBhcnRpY3VsYXIgYWRkcmVzcy1zcGFjZSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZQotICAgICAgICAjIGRhdGEgYmFzZS4gUmVwb3J0IGVycm9yIGJhY2suCi0gICAgICAgICMKLSAgICAgICAgcmV0dXJuICgnRXJyb3I6IG5vIGFkZHJlc3Mtc3BhY2UgbmFtZSAlcywgRXJyb3IgJXMnICUgIFwKLSAgICAgICAgICAgICAgIChhZGRyZXNzX3NwYWNlX25hbWUsIHN5cy5leGNfaW5mbygpWzBdKSkKLQotICAgICMKLSAgICAjIFNob3cgdGhlIGNvbmZpZ3VyZWQgc3ViIGl0ZW1zIHVuZGVyIHRoaXMgYWRkcmVzcy1zcGFjZS4KLSAgICAjCi0gICAgYWRkcmVzc19zcGFjZV9ydW5uaW5nX2NvbmZpZ19kZXRhaWxzKGNvbnRleHQsIHRtcF9jb25maWcsIGFkZHJlc3Nfc3BhY2UpCi0KLSAgICAjCi0gICAgIyBSZXRyaWV2ZSBhbGwgdGhlIGlkZW50aWZpZXIgcnVsZXMgY29uZmlndXJlZC4gVGhlcmUgbWF5IG5vdCBiZSBhbnkKLSAgICAjIHJ1bGUgcHJlc2VudC4gSGFuZGxlIGl0IGdyYWNlZnVsbHkuCi0gICAgIwotICAgIGFkZHJlc3Nfc3BhY2VfcnVsZXMgPSBOb25lCi0gICAgdHJ5OgotICAgICAgICBhZGRyZXNzX3NwYWNlX3J1bGVzID0gY29udGV4dC5nZXRfdGFibGVfZnJvbV9zdG9yZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkcmVzcy1zcGFjZS1pZGVudGlmaWVyLXJ1bGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX3NwYWNlX25hbWUsICJleGFjdCIpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgcGFzcwotCi0gICAgIwotICAgICMgU2hvdyBlYWNoIHJ1bGUgY29uZmlndXJlZCBpbiBkZXRhaWwKLSAgICAjCi0gICAgaWYgYWRkcmVzc19zcGFjZV9ydWxlczoKLSAgICAgICAgYWRkcmVzc19zcGFjZV9ydW5uaW5nX2NvbmZpZ19pZF9ydWxlKGNvbnRleHQsIHRtcF9jb25maWcsIGFkZHJlc3Nfc3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX3NwYWNlX3J1bGVzKQotCi0gICAgIwotICAgICMgRG9uJ3Qgc2hvd24gZW1wdHkgY29uZmlndXJhdGlvbiBmb3IgZGVmYXVsdCBhZGRyZXNzLXNwYWNlLgotICAgICMKLSAgICBpZiBsZW4odG1wX2NvbmZpZykgPiAwIG9yIGFkZHJlc3Nfc3BhY2VbJ25hbWUnXSAhPSAnZGVmYXVsdCc6Ci0gICAgICAgIGNvbmZpZy5hcHBlbmQoImFkZHJlc3Mtc3BhY2UgJXNcbiIgJSBhZGRyZXNzX3NwYWNlX25hbWUpCi0gICAgICAgIGNvbmZpZyArPSB0bXBfY29uZmlnCi0KLSMKLSMgcnVubmluZ19jb25maWdfYWRkcmVzc19zcGFjZQotIwotIyBTaG93IHJ1bm5pbmcgY29uZmlndXJhdGlvbiBmb3IgJ2FsbCcgYWRkcmVzcy1zcGFjZSBjb25maWd1cmVkCi0jCi1kZWYgcnVubmluZ19jb25maWdfYWRkcmVzc19zcGFjZSAoY29udGV4dCwgY29uZmlnLCB3b3Jkcyk6Ci0gICAgIiIiCi0gICAgQWRkIHRoZSBBZGRyZXNzIFNwYWNlIGNvbmZpZ3VyYXRpb24gZGV0aWxzCi0gICAgIiIiCi0KLSAgICAjCi0gICAgIyBDaGVjayBpZiB0aGlzIGlzIHJlcXVlc3QgZm9yIGEgc3BlY2lmaWMgYWRkcmVzcy1zcGFjZQotICAgICMKLSAgICBpZiBsZW4od29yZHMpID4gMDoKLSAgICAgICAgcmV0dXJuIHJ1bm5pbmdfY29uZmlnX3NwZWNpZmljX2FkZHJlc3Nfc3BhY2UoY29udGV4dCwgY29uZmlnLCB3b3Jkc1swXSkKLQotICAgICMKLSAgICAjIFJldHJpZXZlIGFsbCBhZGRyZXNzLXNwYWNlIGNvbmZpZ3VyYXRpb25zCi0gICAgIwotICAgIGFkZHJlc3Nfc3BhY2VfbGlzdCA9IE5vbmUKLSAgICB0cnk6Ci0gICAgICAgIGFkZHJlc3Nfc3BhY2VfbGlzdCA9IFwKLSAgICAgICAgICAgIGNvbnRleHQuZ2V0X3RhYmxlX2Zyb21fc3RvcmUoJ2FkZHJlc3Mtc3BhY2UnKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHBhc3MKLQotICAgICMKLSAgICAjIFJldHJpZXZlIGFsbCBhZGRyZXNzLXNwYWNlcycgaWRlbnRpZmllciBydWxlcwotICAgICMKLSAgICBhZGRyZXNzX3NwYWNlX3J1bGVzID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgYWRkcmVzc19zcGFjZV9ydWxlcyA9IFwKLSAgICAgICAgICAgIGNvbnRleHQuZ2V0X3RhYmxlX2Zyb21fc3RvcmUoJ2FkZHJlc3Mtc3BhY2UtaWRlbnRpZmllci1ydWxlJykKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICBwYXNzCi0KLSAgICAjCi0gICAgIyBXYWxrIGVhY2ggYWRkcmVzcy1zcGFjZSBmb3VuZCBhbmQgcHJpbnQgaXRzIGNvbnRlbnRzCi0gICAgIwotICAgIGlmIGFkZHJlc3Nfc3BhY2VfbGlzdDoKLSAgICAgICAgZm9yIGFkZHJlc3Nfc3BhY2UgaW4gYWRkcmVzc19zcGFjZV9saXN0OgotICAgICAgICAgICAgdG1wX2NvbmZpZyA9IFsgXQotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIE5vdyBwcmludCBpdHMgY29udGVudHMgaW4gZGV0YWlscwotICAgICAgICAgICAgIyAKLSAgICAgICAgICAgIGFkZHJlc3Nfc3BhY2VfcnVubmluZ19jb25maWdfZGV0YWlscyhjb250ZXh0LCB0bXBfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nfc3BhY2UpCi0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgSWYgdGhlcmUgaXMgYW55IGlkZW50aWZpZXItcnVsZSBjb25maWd1cmVkLCBzaG93IGVhY2ggb2YgdGhlbS4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIGlmIGFkZHJlc3Nfc3BhY2VfcnVsZXM6Ci0gICAgICAgICAgICAgICAgYWRkcmVzc19zcGFjZV9ydW5uaW5nX2NvbmZpZ19pZF9ydWxlKGNvbnRleHQsIHRtcF9jb25maWcsCi0gICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nfc3BhY2UsCi0gICAgICAgICAgICAgICAgICAgIFtydWxlIGZvciBydWxlIGluIGFkZHJlc3Nfc3BhY2VfcnVsZXMgXAotICAgICAgICAgICAgICAgICAgICBpZiBydWxlWydhZGRyZXNzLXNwYWNlJ10gPT0gYWRkcmVzc19zcGFjZVsnbmFtZSddXSkKLQotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIERvbid0IHNob3duIGVtcHR5IGNvbmZpZ3VyYXRpb24gZm9yIGRlZmF1bHQgYWRkcmVzcy1zcGFjZS4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIGlmIGxlbih0bXBfY29uZmlnKSA+IDAgb3IgYWRkcmVzc19zcGFjZVsnbmFtZSddICE9ICdkZWZhdWx0JzoKLSAgICAgICAgICAgICAgICBjb25maWcuYXBwZW5kKCIhXG5hZGRyZXNzLXNwYWNlICVzXG4iICUgYWRkcmVzc19zcGFjZVsnbmFtZSddKQotICAgICAgICAgICAgICAgIGNvbmZpZyArPSB0bXBfY29uZmlnCi0KLSMKLSMgYWRkcmVzc19zcGFjZV9ydW5uaW5nX2NvbmZpZ190dXBsZQotIwotIyBhZGRyZXNzLXNwYWNlIGNvbmZpZ3VyYXRpb24gdHVwbGUgdGhhdCB3ZSBpbnRlbmQgdG8gcHJvY2VzcyB3cnQKLSMgZ2VuZXJhdGluZyB0aGVpciBydW5uaW5nIGNvbmZpZ3VyYXRpb24KLSMKLWFkZHJlc3Nfc3BhY2VfcnVubmluZ19jb25maWdfdHVwbGUgPSAoCi0gICAgKAotICAgICAgICAjCi0gICAgICAgICMgc2hvdyBydW5uaW5nLWNvbmZpZ3VyYXRpb24gYWRkcmVzcy1zcGFjZQotICAgICAgICAjCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgICA6IEZhbHNlLAotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3J1bm5pbmctY29uZmlnJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdhZGRyZXNzLXNwYWNlJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdDb25maWd1cmF0aW9uIGZvciBhZGRyZXNzIHNwYWNlcycsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAncnVubmluZy1jb25maWd8c2hvdy1hZGRyZXNzLXNwYWNlJywKLSAgICAgICAgfSwKLQotICAgICAgICAjCi0gICAgICAgICMgc2hvdyBydW5uaW5nLWNvbmZpZ3VyYXRpb24gYWRkcmVzcy1zcGFjZSA8YWRkcmVzcy1zcGFjZT4KLSAgICAgICAgIwotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICd3b3JkJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2FkZHJlc3Mtc3BhY2V8bmFtZScsCi0gICAgICAgICAgICAncGFyZW50LWZpZWxkJyA6IE5vbmUsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgICA6ICdsZWdhY3ktY2xpJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgICAgIDogVHJ1ZSwKLSAgICAgICAgfQotICAgICksCi0pCi0KLSMKLSMgUmVnaXN0ZXIgd2l0aCBydW5fY29uZmlnIG1vZHVsZSwgb3VyIGNhbGxiYWNrIHRvIHByb2Nlc3MgcnVubmluZyBjb25maWdzIGZvcgotIyBhZGRyZXNzLXNwYWNlIGNvbmZpZ3VyYXRpb24gaXRlbXMKLSMKLXJ1bl9jb25maWcucmVnaXN0ZXJfcnVubmluZ19jb25maWcoJ2FkZHJlc3Mtc3BhY2UnLCA0MDAwLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nX2NvbmZpZ19hZGRyZXNzX3NwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX3NwYWNlX3J1bm5pbmdfY29uZmlnX3R1cGxlKQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9jb250cm9sbGVyX25vZGUucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9jb250cm9sbGVyX25vZGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDRjNzFjNWIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvY29udHJvbGxlcl9ub2RlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA3OCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGNvbW1hbmQKLWltcG9ydCBmbXRjbnYKLSIiIgotQ09OVFJPTExFUl9OT0RFX0ZPUk1BVCA9IHsKLSAgICAnY29udHJvbGxlci1ub2RlJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgICAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGEtcm9sZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFuZ2UtZGF0ZS10aW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZS1kZXNjcmlwdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXB0aW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIydkb21haW4tbG9va3Vwcy1lbmFibGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIydsb2dnaW5nLWVuYWJsZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnYnJpZWYnICAgOiAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lkeCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbGlhcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYS1yb2xlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZS1kYXRlLXRpbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhbmdlLWRlc2NyaXB0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXR1cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cHRpbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RldGFpbHMnIDogICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSWR4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhLXJvbGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhbmdlLWRhdGUtdGltZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFuZ2UtZGVzY3JpcHRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwdGltZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9tYWluLWxvb2t1cHMtZW5hYmxlZCcsICdkb21haW4tbmFtZS1zZXJ2ZXJzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvbWFpbi1uYW1lJywgJ2RlZmF1bHQtZ2F0ZXdheScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudHAtc2VydmVyJywgJ3RpbWUtem9uZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dnaW5nLWVuYWJsZWQnLCAnbG9nZ2luZy1zZXJ2ZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnd2l0aG91dC12bnMnIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSWR4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhLXJvbGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhbmdlLWRhdGUtdGltZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFuZ2UtZGVzY3JpcHRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXB0aW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvbWFpbi1sb29rdXBzLWVuYWJsZWQnLCAnZG9tYWluLW5hbWUtc2VydmVycycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb21haW4tbmFtZScsICdkZWZhdWx0LWdhdGV3YXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnRwLXNlcnZlcicsICd0aW1lLXpvbmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9nZ2luZy1lbmFibGVkJywgJ2xvZ2dpbmctc2VydmVyJywgJ2xvZ2dpbmctbGV2ZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdDb250cm9sbGVyIElEJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbWUnICAgICAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdAJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnRyb2xsZXJfbm9kZV9tZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnRyeS1mb3JtYXR0ZXInIDogZm10Y252LmNvbnRyb2xsZXJfbm9kZV9tZV9lbnRyeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkb21haW4tbG9va3Vwcy1lbmFibGVkJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0ROUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZXBsYWNlX2Jvb2xlYW5fd2l0aF9lbmFibGVfZGlzYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZG9tYWluLW5hbWUtc2VydmVycycgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdETlMgU2VydmVycycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X2RvbWFpbl9uYW1lX3NlcnZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnRyeS1mb3JtYXR0ZXInIDogZm10Y252LnByaW50X2FsbF9kb21haW5fbmFtZV9zZXJ2ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkb21haW4tbmFtZScgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGVmYXVsdC1nYXRld2F5JyAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ250cC1zZXJ2ZXInICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0aW1lLXpvbmUnICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbG9nZ2luZy1lbmFibGVkJyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0xvZ2dpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZXBsYWNlX2Jvb2xlYW5fd2l0aF9lbmFibGVfZGlzYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbG9nZ2luZy1zZXJ2ZXInICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2xvZ2dpbmctbGV2ZWwnICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdoYS1yb2xlJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnSEEgUm9sZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2NoYW5nZS1kYXRlLXRpbWUnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdIQSBMYXN0IENoYW5nZSBUaW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfdGltZV9zaW5jZV91dGNfdGltZXN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnY2hhbmdlLWRlc2NyaXB0aW9uJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0hBIENoYW5nZSBSZWFzb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd1cHRpbWUnICAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnVXB0aW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgICAgOiBmbXRjbnYucHJpbnRfdGltZXNpbmNlX21zZWNfc2luY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotICAgICAgICB9LAotfQotCi1jb250cm9sbGVyX25vZGVfc2hvd19hY3Rpb25zID0gKAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgICA6ICdxdWVyeS10YWJsZScsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgICdwcm9jJyAgICAgICAgIDogJ2pvaW4tdGFibGUnLAotICAgICAgICAnb2JqLXR5cGUnICAgICA6ICdjb250cm9sbGVyLWFsaWFzJywKLSAgICAgICAgJ2tleScgICAgICAgICAgOiAnY29udHJvbGxlcicsCi0gICAgICAgICdqb2luLWZpZWxkJyAgIDogJ2lkJywgIyBmaWVsZCBpbiBxdWVyaWVkIGl0ZW1zCi0gICAgfSwKLSAgICB7Ci0gICAgICAgICdwcm9jJyAgICAgICA6ICdqb2luLXJlc3QnLAotICAgICAgICAndXJsJyAgICAgICAgOiAnc3lzdGVtL2NvbnRyb2xsZXInLAotICAgICAgICAncmVzdC10eXBlJyAgOiAnZGljdC13aXRoLWlkJywKLSAgICAgICAgJ2tleScgICAgICAgIDogJ2lkJywKLSAgICAgICAgJ2pvaW4tZmllbGQnIDogJ2lkJywKLSAgICAgICAgJ2FkZC1maWVsZCcgIDogJ21lJywKLSAgICB9LAotICAgICMgbmVlZCBhIGRlc2NyaXB0aW9uIG1lY2hhbmlzbSB0byBqb2luIGhhLXJvbGUsIHdoaWNoCi0gICAgIyBuZWVkcyB0byBzZW5kIHVybHMgdG8gY29udHJvbGxlci1ub2RlIGludGVyZmFjZXMgCi0gICAgIyBpZTogdGhlIHJlc3QgYWN0aW9ucyBhbHdhdXMgdXNlIHRoZSBsb2NhbCBjb250cm9sbGVyCi0gICAgIyAodXB0aW1lIGhhcyB0aGUgc2FtZSBpc3N1ZSkKLSAgICB7Ci0gICAgICAgICdwcm9jJyAgICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgJ2Zvcm1hdCcgICAgIDogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgfSwKLSksCi0KLQotQ09OVFJPTExFUl9OT0RFX1NIT1dfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdjb250cm9sbGVyLW5vZGUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnYWxsLWhlbHAnICAgICA6ICdTaG93IGNvbnRyb2xsZXIgbm9kZSBpbmZvcm1hdGlvbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyBjb250cm9sbGVyIG5vZGVzIHN1bW1hcmllcycsCi0gICAgJ2RvYycgICAgICAgICAgOiAnY29udHJvbGxlcnxzaG93JywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgIDogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgICAgICAgICAnYWN0aW9uJyA6IGNvbnRyb2xsZXJfbm9kZV9zaG93X2FjdGlvbnMsCi0gICAgICAgICB9Ci0gICAgKSwKLX0KLUNPTlRST0xMRVJfTk9ERV9JTlRFUkZBQ0VfRk9STUFUID0gewotICAgICdjb250cm9sbGVyLWludGVyZmFjZScgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbJ0lkeCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRyb2xsZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtYmVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2lwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzY292ZXJlZC1pcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ25ldG1hc2snLAotICAgICAgICAgICAgICAgICAgICAgICAgICdtYWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJld2FsbCddCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICdjb250cm9sbGVyJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9jb250cm9sbGVyX25vZGVfd2l0aF9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbnVtYmVyJyAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2lmbmFtZScgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGxhbWJkYSBpLCBkYXRhOiAnJXMlcycgJSAoZGF0YVsndHlwZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnbnVtYmVyJ10pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2lwJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkaXNjb3ZlcmVkLWlwJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRm91bmQgSVAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdtb2RlJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0bWFzaycgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdmaXJld2FsbCcgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnRmlyZXdhbGwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotCi1DT05UUk9MTEVSX05PREVfU1VNTUFSWV9GT1JNQVQgPSB7Ci0gICAgICAgICdjb250cm9sbGVyLXN1bW1hcnknIDogewotICAgICAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAgICAgJ2RlZmF1bHQnIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgaW50ZXItc3dpdGNoIGxpbmtzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjIGhvc3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjIGF0dGFjaG1lbnQgcG9pbnRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjIElQIEFkZHJlc3NlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBWTlNlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBBY2Nlc3MgQ29udHJvbCBMaXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBWTlMgSW50ZXJmYWNlcyB3aXRoIEFDTCBhcHBsaWVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjIFZOUyBJbnRlcmZhY2VzJywKLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICAgICAnIyBBY2Nlc3MgQ29udHJvbCBMaXN0cycgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQWNjZXNzIENvbnRyb2wgTGlzdHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICcjIFZOUyBJbnRlcmZhY2VzJyAgICAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWTlMgSW50ZXJmYWNlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJyMgaG9zdHMnICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0hvc3RzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnIyBWTlNlcycgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVk5TZXN4JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnIyBhdHRhY2htZW50IHBvaW50cycgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQXR0YWNobWVudCBQb2ludHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICcjIGludGVyLXN3aXRjaCBsaW5rcycgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdMaW5rcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJyMgSVAgQWRkcmVzc2VzJyAgICAgICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0lwIEFkZHJlc3NlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJyMgVk5TIEludGVyZmFjZXMgd2l0aCBBQ0wgYXBwbGllZCcgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1ZOUyBJZiB3aXRoIEFjbCBBcHBsaWVkJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgIH0sCi19Ci0KLQotQ09UUk9MTEVSX05PREVfU1dJVENIRVNfRk9STUFUID0gewotICAgICdjb250cm9sbGVyLXN3aXRjaGVzJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgIDogWwotICAgICAgICAgICAgICAgICdJZHgnLCAnZHBpZCcsCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICdkcGlkJyA6IHsgJ3ByaW1hcnlfa2V5JyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnQ29ubmVjdGVkIFN3aXRjaGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfc3dpdGNoX2FuZF9hbGlhcyB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLX0KLQotCi1DT05UUk9MTEVSX05PREVfRklSRVdBTExfUlVMRV9GT1JNQVQgPSB7Ci0gICAgJ2ZpcmV3YWxsLXJ1bGUnIDogewotCi0gICAgICAgJ2ZpZWxkLW9yZGVyaW5ncyc6IHsKLSAgICAgICAgICdkZWZhdWx0JyA6IFsnSWR4JywKLSAgICAgICAgICAgICAgICAgICAgICAnY29udHJvbGxlcicsCi0gICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICdudW1iZXInLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMtaXAnLAotICAgICAgICAgICAgICAgICAgICAgICd2cnJwLWlwJywKLSAgICAgICAgICAgICAgICAgICAgICAncG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3Byb3RvJywKLSAgICAgICAgICAgICAgICAgICAgICAncnVsZSddCi0gICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotCi0gICAgICAgICAgICAnY29udHJvbGxlcicgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9jb250cm9sbGVyX25vZGVfd2l0aF9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaW50ZXJmYWNlJyAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BvcnQnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdwcm90bycgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncnVsZScgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0ZpcmV3YWxsIFJ1bGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgIH0sCi19Ci0KLQotZGVmIGNvbnRyb2xsZXJfY29tcGxldGlvbl9hZGRfbG9jYWxob3N0KGNvbXBsZXRpb25zLCBwcmVmaXgpOgotICAgIGlmIGNvbXBsZXRpb25zID09IE5vbmU6Ci0gICAgICAgIGNvbXBsZXRpb25zID0ge30KLSAgICBpZiBub3QgJ2xvY2FsaG9zdCAnIGluIGNvbXBsZXRpb25zIGFuZCAnbG9jYWxob3N0Jy5zdGFydHN3aXRoKHByZWZpeCkgOgotICAgICAgICBjb21wbGV0aW9uc1snbG9jYWxob3N0ICddID0gJ1NlbGVjdCBjdXJyZW50bHkgbG9nZ2VkIGluIGNvbnRyb2xsZXInCi0KLQotY29tbWFuZC5hZGRfY29tcGxldGlvbignY29udHJvbGxlci1hZGQtbG9jYWxob3N0JywgY29udHJvbGxlcl9jb21wbGV0aW9uX2FkZF9sb2NhbGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7ICdjb21wbGV0aW9ucycgOiAnJGNvbXBsZXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByZWZpeCcgICAgICA6ICckdGV4dCcsCi0gICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLUNPTlRST0xMRVJfTk9ERV9TSE9XX0lEX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ29iai10eXBlJyAgICAgOiAnY29udHJvbGxlci1ub2RlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyBjb250cm9sbGVyLW5vZGUgYXNzb2NpYXRlZCBkZXRhaWxzIGJ5IG5hbWUnLAotICAgICduby1zdXBwb3J0ZWQnIDogRmFsc2UsCi0gICAgJ2FjdGlvbicgICAgICAgOiBjb250cm9sbGVyX25vZGVfc2hvd19hY3Rpb25zLAotICAgICdkb2MnICAgICAgICAgIDogJ2NvbnRyb2xsZXJ8c2hvdy1kZXRhaWxzJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2lkJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRyb2xsZXItYWRkLWxvY2FsaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgICA6IGNvbnRyb2xsZXJfbm9kZV9zaG93X2FjdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ2NvbnRyb2xsZXJ8c2hvdy1pZCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgIDogJ2FsbCcsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Jlc2VydmVkfGFsbCcsCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKSwKLQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgIDogJ2ludGVyZmFjZXMnLAotICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICdjb250cm9sbGVyLWludGVyZmFjZScsCi0gICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTaG93IG5ldHdvcmsgaW50ZXJmYWNlIGluZm9ybWF0aW9uIGZvciBjb250cm9sbGVyIG5vZGUnLAotICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdjb250cm9sbGVyfHNob3ctaW50ZXJmYWNlcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgIDogJ2ZpcmV3YWxsJywKLSAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAnZmlyZXdhbGwtcnVsZScsCi0gICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTaG93IGZpcmV3YWxsIHJ1bGVzIGZvciBjb250cm9sbGVyIG5vZGUnLAotICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdjb250cm9sbGVyfHNob3ctZmlyZXdhbGwnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdzdW1tYXJ5JywKLSAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnZGlzcGxheS1yZXN0JywKLSAgICAgICAgICAgICAgICAgICAndXJsJyAgICAgICAgOiAnY29udHJvbGxlci9zdW1tYXJ5JywKLSAgICAgICAgICAgICAgICAgICAncmVzdC10eXBlJyAgOiAnZGljdCcsCi0gICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgICAgIDogJ2NvbnRyb2xsZXItc3VtbWFyeScsCi0gICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgYSBzdW1tYXJ5IG9mIGNvbmZpZ3VyYXRpb24gZm9yIGNvbnRyb2xsZXIgbm9kZScsCi0gICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2NvbnRyb2xsZXJ8c2hvdy1zdW1tYXJ5JywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnc3dpdGNoZXMnLAotICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdkaXNwbGF5LXJlc3QnLAotICAgICAgICAgICAgICAgICAgICd1cmwnICAgICAgICA6ICdjb250cm9sbGVyL3N0YXRzL3N3aXRjaGVzJywKLSAgICAgICAgICAgICAgICAgICAnZm9ybWF0JyAgICAgOiAnY29udHJvbGxlci1zd2l0Y2hlcycsCi0gICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgc3dpdGNoZXMgY29ubmVjdGVkIHRvIGNvbnRyb2xsZXIgbm9kZScsCi0gICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2NvbnRyb2xsZXJ8c2hvdy1zd2l0Y2hlcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgIDogJ2FsaWFzJywKLSAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ2NvbnRyb2xsZXItYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTaG93IHRoZSBhbGlhcyBmb3IgY29udHJvbGxlciBub2RlJywKLSAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnY29udHJvbGxlcnxzaG93LWFsaWFzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICdmaWVsZCcgICAgOiAnZGV0YWlsJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgIDogKCdkZXRhaWxzJywnYnJpZWYnKSwKLSAgICAgICAgICAgICdkb2MnICAgICAgOiAnY29udHJvbGxlcnxzaG93LWRldGFpbCcsCi0gICAgICAgIH0KLSAgICApLAotfQotCi1DT05UUk9MTEVSX05PREVfU0hPV19TVEFUU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdvYmotdHlwZScgICAgIDogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgc3RhdGlzdGljcyBmb3IgYSBnaXZlbiBjb250cm9sbGVyIG5vZGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Nob3ctc3RhdHMnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnY29udHJvbGxlci1ub2RlJywKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnaWQnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250cm9sbGVyLWFkZC1sb2NhbGhvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ2NvbnRyb2xsZXJ8aWQnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdpZCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgICA6ICdhbGwnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdyZXNlcnZlZHxhbGwnLAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICksCi0gICAgICAgfSwKLSAgICAgICB7Ci0gICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnc3RhdHMnLAotICAgICAgICAgICd0eXBlJyAgICAgIDogJ2VudW0nLAotICAgICAgICAgICd2YWx1ZXMnICAgIDogJ3N0YXRzJywKLSAgICAgICAgICAnb2JqLXR5cGUnICA6ICdjb250cm9sbGVyLXN0YXRzJywKLSAgICAgICAgICAnYWN0aW9uJyAgICA6ICdsZWdhY3ktY2xpJywKLSAgICAgICB9LAotICAgICksCi19Ci0KLUNPTlRST0xMRVJfTk9ERV9TSE9XX09CSkVDVF9TVEFUU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdvYmotdHlwZScgICAgIDogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgZGV0YWlsZWQgY29udHJvbGxlci1ub2RlIHJlbGF0ZWQgc3RhdGlzdGljcycsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICdjb250cm9sbGVyLW5vZGUnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdpZCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRyb2xsZXItYWRkLWxvY2FsaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnaWQnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgICAgOiAnYWxsJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAncmVzZXJ2ZWR8YWxsJywKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApLAotICAgICAgIH0sCi0gICAgICAgewotICAgICAgICAgICdmaWVsZCcgICAgIDogJ3N0YXRzJywKLSAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAndmFsdWVzJyAgICA6ICdzdGF0cycsCi0gICAgICAgICAgJ29iai10eXBlJyAgOiAnY29udHJvbGxlci1zdGF0cycsCi0gICAgICAgICAgJ2FjdGlvbicgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgfSwKLSAgICAgICB7Ci0gICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnc3RhdHMtdHlwZScsCi0gICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgJ3ZhbHVlcycgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NwdS11c2VyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzay1yb290JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWVtLXVzZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZW0tZnJlZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaS1jcHUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZS1jcHUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzd2FwLXVzZWQnLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzay1ib290JywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRkLWNwdScsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcHUtc3lzdGVtJywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NwdS1pZGxlJywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwYWNoZS1jcHUnLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3B1LW5pY2UnLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzay1sb2cnLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2RucGxhdGZvcm0tY3B1JwotICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAnZG9jJyAgICAgICA6ICdjb250cm9sbGVyfHNob3ctc3RhdHMtdHlwZScsCi0gICAgICAgfSwKLSAgICAgICB7Ci0gICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnc3RhcnQtdGltZScsCi0gICAgICAgICAgJ3RhZycgICAgICAgOiAnc3RhcnQtdGltZScsCi0gICAgICAgICAgJ3R5cGUnICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAnc2hvcnQtaGVscCcgICA6ICdTdGFydCB0aW1lIGZvciBkaXNwbGF5aW5nIHRoZSBzdGF0cycsCi0gICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICdkb2MnICAgICAgIDogJ2NvbnRyb2xsZXJ8c2hvdy1zdGF0cy1zdGFydC10aW1lJywKLSAgICAgICB9LAotICAgICAgIHsKLSAgICAgICAgICAnZmllbGQnICAgICA6ICdlbmQtdGltZScsCi0gICAgICAgICAgJ3RhZycgICAgICAgOiAnZW5kLXRpbWUnLAotICAgICAgICAgICd0eXBlJyAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnRW5kIHRpbWUgZm9yIGRpc3BsYXlpbmcgdGhlIHN0YXRzJywKLSAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgJ2RvYycgICAgICAgOiAnY29udHJvbGxlcnxzaG93LXN0YXRzLWVuZC10aW1lJywKLSAgICAgICB9LAotICAgICAgIHsKLSAgICAgICAgICAnZmllbGQnICAgICA6ICdkdXJhdGlvbicsCi0gICAgICAgICAgJ3RhZycgICAgICAgOiAnZHVyYXRpb24nLAotICAgICAgICAgICd0eXBlJyAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnRHVyYXRpb24gZnJvbSB0aGUgc3RhcnQgb3IgZW5kIGZvciBkaXNwbGF5aW5nIHRoZSBzdGF0cycsCi0gICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICdkb2MnICAgICAgIDogJ2NvbnRyb2xsZXJ8c2hvdy1zdGF0cy1kdXJhdGlvbicsCi0gICAgICAgfSwKLSAgICAgICB7Ci0gICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnc2FtcGxlLWludGVydmFsJywKLSAgICAgICAgICAndGFnJyAgICAgICA6ICdzYW1wbGUtaW50ZXJ2YWwnLAotICAgICAgICAgICd0eXBlJyAgICAgIDogJ2ludGVnZXInLAotICAgICAgICAgICdzaG9ydC1oZWxwJyAgIDogJ1NwYWNpbmcgYmV0d2VlbiBzYW1wbGluZyB3aW5kb3dzJywKLSAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgJ2RvYycgICAgICAgOiAnY29udHJvbGxlcnxzaG93LXN0YXRzLXNhbXBsZS1pbnRlcnZhbCcsCi0gICAgICAgfSwKLSAgICAgICB7Ci0gICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnc2FtcGxlLWNvdW50JywKLSAgICAgICAgICAndGFnJyAgICAgICA6ICdzYW1wbGUtY291bnQnLAotICAgICAgICAgICd0eXBlJyAgICAgIDogJ2ludGVnZXInLAotICAgICAgICAgICdzaG9ydC1oZWxwJyAgIDogJ051bWJlciBvZiBzYW1wbGVzIHRvIHNob3cnLAotICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAnZG9jJyAgICAgICA6ICdjb250cm9sbGVyfHNob3ctc3RhdHMtc2FtcGxlLWNvdW50JywKLSAgICAgICB9LAotICAgICAgIHsKLSAgICAgICAgICAnZmllbGQnICAgICA6ICdzYW1wbGUtd2luZG93JywKLSAgICAgICAgICAndGFnJyAgICAgICA6ICdzYW1wbGUtd2luZG93JywKLSAgICAgICAgICAndHlwZScgICAgICA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnTnVtYmVyIG9mIHJhdyBzYW1wbGUgdmFsdWVzIHRvIGF2ZXJhZ2UgYXJvdW5kIGVhY2ggZG93bi1zYW1wbGVkIGRhdGEgcG9pbnQnLAotICAgICAgICAgICdkb2MnICAgICAgIDogJ2NvbnRyb2xsZXJ8c2hvdy1zdGF0cy1zYW1wbGUtd2luZG93JywKLSAgICAgICB9LAotICAgICAgIHsKLSAgICAgICAgICAnZmllbGQnICAgICA6ICdkYXRhLWZvcm1hdCcsCi0gICAgICAgICAgJ3RhZycgICAgICAgOiAnZGF0YS1mb3JtYXQnLAotICAgICAgICAgICd0eXBlJyAgICAgIDogJ2VudW0nLAotICAgICAgICAgICd2YWx1ZXMnICAgIDogKCd2YWx1ZScsICdyYXRlJyksCi0gICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnV2hldGhlciB0byBkaXNwbGF5IGFzIGEgcmF3IHZhbHVlIG9yIHJhdGUnLAotICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAnZG9jJyAgICAgICA6ICdjb250cm9sbGVyfHNob3ctc3RhdHMtZGF0YS1mb3JtYXQnLAotICAgICAgIH0sCi0gICAgICAgewotICAgICAgICAgICdmaWVsZCcgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICd0YWcnICAgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICd0eXBlJyAgICAgIDogJ2VudW0nLAotICAgICAgICAgICd2YWx1ZXMnICAgIDogKCdsYXRlc3QtdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdncmFwaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3RhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnRGlzcGxheSB0aGUgbGF0ZXN0IHZhbHVlLCBhIGdyYXBoLCBvciBhIHRhYmxlJywKLSAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgJ2RvYycgICAgICAgOiAnY29udHJvbGxlcnxzaG93LXN0YXRzLWRpc3BsYXknLAotICAgICAgIH0sCi0gICApLAotfQotCi1DT05UUk9MTEVSX0lOVEVSRkFDRVNfU0hPV19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdvYmotdHlwZScgICAgIDogJ2NvbnRyb2xsZXItaW50ZXJmYWNlJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IGNvbnRyb2xsZXItbm9kZSBhc3NvY2lhdGVkIGludGVyZmFjZXMnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1jb250cm9sbGVyJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnc2NvcGVkJyAgICAgICA6IFRydWUsICMgZW50cmllcyBkaXNwbGF5ZWQgZmlsdGVyZWQgYnkgcHVzaGVkIG9iaiBpZAotICAgICdkb2MnICAgICAgICAgIDogJ2NvbnRyb2xsZXJ8c2hvdy1pbnRlcmZhY2VzJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ2ludGVyZmFjZXMnLAotICAgICAgICB7Ci0gICAgICAgICAgICdmaWVsZCcgICAgIDogJ3R5cGUnLAotICAgICAgICAgICAndGFnJyAgICAgICA6ICd0eXBlJywKLSAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICAnZG9jJyAgICAgICA6ICdjb250cm9sbGVyfHNob3ctaW50ZXJmYWNlcy10eXBlJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAnZmllbGQnICAgIDogJ251bWJlcicsCi0gICAgICAgICAgICd0YWcnICAgICAgOiAnbnVtYmVyJywKLSAgICAgICAgICAgJ3R5cGUnICAgICA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICdkb2MnICAgICAgIDogJ2NvbnRyb2xsZXJ8c2hvdy1pbnRlcmZhY2VzLW51bWJlcicsCi0gICAgICAgIH0sCi0gICAgKQotfQotCi0KLUNPTlRST0xMRVJfTk9ERV9TVUJNT0RFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgJ29iai10eXBlJyAgICAgICAgICAgIDogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2NvbmZpZyonLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdFbnRlciBjb25maWd1cmF0aW9uIHN1Ym1vZGUgZm9yIGNvbnRyb2xsZXItbm9kZXMnLAotICAgICduby1zdXBwb3J0ZWQnICAgICAgICA6IEZhbHNlLCAgICAgICAgICAjIGRvbid0IGFsbG93IHJlbW92YWwgb2YgY29udHJvbGxlci1ub2RlcwotICAgICMgJ2NyZWF0ZScgICAgICAgICAgICA6IEZhbHNlLCAgICAgICAgICMgZG9uJ3QgYWxsb3cgY3JlYXRpb24gb2YgbmV3IGNvbnRyb2xsZXItbm9kZXMKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnLXN1Ym1vZGUnLAotICAgICdwYXJlbnQtZmllbGQnICAgICAgICA6IE5vbmUsCi0gICAgJ2N1cnJlbnQtbW9kZS1vYmotaWQnIDogTm9uZSwKLSAgICAnc3VibW9kZS1uYW1lJyAgICAgICAgOiAnY29uZmlnLWNvbnRyb2xsZXInLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdjb250cm9sbGVyfGNvbnRyb2xsZXItbm9kZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2NvbnRyb2xsZXJ8Y29udHJvbGxlci1ub2RlLWV4YW1wbGUnLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6ICgKLSAgICAgICAgIHsKLSAgICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdpZCcsCi0gICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgICAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250cm9sbGVyLWFkZC1sb2NhbGhvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyAgICA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBGYWxzZSwKLSAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICdjb250cm9sbGVyfGNvbnRyb2xsZXItbm9kZS1uYW1lJywKLSAgICAgICAgIH0KLSAgICApCi19Ci0KLQotQ09OVFJPTExFUl9OT0RFX0FMSUFTX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnY29udHJvbGxlci1hbGlhcycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLWNvbnRyb2xsZXInLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0F0dGFjaCBhbGlhcyB0byBjb250cm9sbGVyJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdtYW5hZ2UtYWxpYXMnLAotICAgICdvYmotdHlwZScgICAgIDogJ2NvbnRyb2xsZXItYWxpYXMnLAotICAgICdzY29wZWQnICAgICAgIDogVHJ1ZSwKLSAgICAncmVzZXJ2ZWQnICAgICA6ICdsb2NhbGhvc3QnLAotICAgICdkb2MnICAgICAgICAgIDogJ2NvbnRyb2xsZXJ8YWxpYXMnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdhbGlhcycsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICAgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnY29udHJvbGxlcnxhbGlhcy1uYW1lJywKLSAgICAgICAgICAgICdhY3Rpb24nICAgICAgICAgIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgIDogJ2NyZWF0ZS1hbGlhcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyAgICA6ICdwcm9tcHQtdXBkYXRlJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICduby1hY3Rpb24nICAgICAgIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgIDogJ2RlbGV0ZS1hbGlhcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyAgICA6ICdwcm9tcHQtdXBkYXRlJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKQotICAgICAgICB9Ci0gICAgKQotfQotCi0KLUNPTlRST0xMRVJfTk9ERV9JTlRFUkZBQ0VfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgIDogJ2ludGVyZmFjZScsCi0gICAgJ25ldy1zdHlsZScgICA6IFRydWUsCi0gICAgJ21vZGUnICAgICAgICA6ICdjb25maWctY29udHJvbGxlcionLAotICAgICdzaG9ydC1oZWxwJyAgOiAnRW50ZXIgaW50ZXJmYWNlIHN1Ym1vZGUsIGNvbmZpZ3VyZSBjb250cm9sbGVyIGludGVyZmFjZScsCi0gICAgJ2NvbW1hbmQtdHlwZSc6ICdjb25maWctc3VibW9kZScsCi0gICAgJ3N1Ym1vZGUtbmFtZSc6ICdjb25maWctY29udHJvbGxlci1pZicsCi0gICAgJ29iai10eXBlJzogJ2NvbnRyb2xsZXItaW50ZXJmYWNlJywKLSAgICAncGFyZW50LWZpZWxkJzogJ2NvbnRyb2xsZXInLAotICAgICdkb2MnICAgICAgICAgOiAnY29udHJvbGxlcnxpbnRlcmZhY2UnLAotICAgICdhcmdzJzogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgIDogJ3R5cGUnLAotICAgICAgICAgICAgJ2hlbHAtbmFtZScgICA6ICdpbnRlcmZhY2UtdHlwZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgICA6ICgnRXRoZXJuZXQnLCksCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnIDogJ0VudGVyIHRoZSBpbnRlcmZhY2UgdHlwZSAoZS5nLiBFdGhlcm5ldCknLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICA6ICdjb250cm9sbGVyfGludGVyZmFjZS10eXBlJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICA6ICdudW1iZXInLAotICAgICAgICAgICAgJ2hlbHAtbmFtZScgICA6ICdpbnRlcmZhY2UtbnVtYmVyJywKLSAgICAgICAgICAgICdiYXNlLXR5cGUnICAgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAncmFuZ2UnICAgICAgIDogKDAsMTAwMDAwMCksCi0gICAgICAgICAgICAjJ2NvbXBsZXRpb24nIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnIDogJ0VudGVyIHRoZSBpbnRlcmZhY2UgbnVtYmVyLCBhIHNtYWxsIG5vbi1uZWdhdGl2ZSBudW1iZXIgKGUuZy4gMCBvciAxKScsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgIDogJ2NvbnRyb2xsZXJ8aW50ZXJmYWNlLW51bWJlcicsCi0gICAgICAgIH0KLSAgICApLAotICAgICduby1hY3Rpb24nOiAoJ2JlZ2luLWRlZmF1bHQtZ2F0ZXdheS1jaGVjaycsICdkZWxldGUtb2JqZWN0cycsICdlbmQtZGVmYXVsdC1nYXRld2F5LWNoZWNrJyksCi19Ci0KLUNPTlRST0xMRVJfTk9ERV9ET01BSU5fTkFNRV9TRVJWRVJfRk9STUFUID0gewotICAgICdjb250cm9sbGVyLWRvbWFpbi1uYW1lLXNlcnZlcicgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbJ0lkeCcsICdpZCcsICdjb250cm9sbGVyJywgJ3ByaW9yaXR5JywgJ2lwJ10KLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ2lwJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2NvbnRyb2xsZXInICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9jb250cm9sbGVyX25vZGVfd2l0aF9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi1DT05UUk9MTEVSX0lQX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgIDogJ2lwJywKLSAgICAnbW9kZScgICAgICAgOiAnY29uZmlnLWNvbnRyb2xsZXInLAotICAgICdzaG9ydC1oZWxwJyA6ICdBc3NvY2lhdGUgZG5zLCBkZWZhdWx0IGdhdGV3YXkgd2l0aCB0aGUgY29udHJvbGxlciBub2RlJywKLSAgICAnZG9jJyAgICAgICAgOiAnY29udHJvbGxlcnxpcCcsCi0gICAgJ2FyZ3MnICAgICAgIDogewotICAgICAgICAnY2hvaWNlcyc6ICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnY29tbWFuZC10eXBlJzogJ2NvbmZpZycsCi0gICAgICAgICAgICAgICAgJ29iai10eXBlJzogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgICAgICAgICAgICAgJ2RvYyc6ICdjb250cm9sbGVyfGlwLWRvbWFpbicsCi0gICAgICAgICAgICAgICAgJ2FyZ3MnOiAoCi0gICAgICAgICAgICAgICAgICAgICdkb21haW4nLAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnY2hvaWNlcyc6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2RvbWFpbi1sb29rdXBzLWVuYWJsZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICA6ICdsb29rdXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICA6ICdib29sZWFuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgOiAnY29udHJvbGxlcnxpcC1kb21haW4tbG9va3VwcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduby1hY3Rpb24nIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICA6ICd3cml0ZS1maWVsZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvbWFpbi1sb29rdXBzLWVuYWJsZWQnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJzogJ2RvbWFpbi1uYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhZyc6ICduYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnZG9tYWluLW5hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ludGF4LWhlbHAnOiAiRW50ZXIgdGhlIG5ldHdvcmsncyBkb21haW4gbmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0LWZvci1ubyc6ICd4eXouY29tJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYyc6ICdjb250cm9sbGVyfGlwLWRvbWFpbi1uYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdjb21tYW5kLXR5cGUnOiAnY29uZmlnLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgJ29iai10eXBlJzogJ2NvbnRyb2xsZXItZG9tYWluLW5hbWUtc2VydmVyJywKLSAgICAgICAgICAgICAgICAncGFyZW50LWZpZWxkJzogJ2NvbnRyb2xsZXInLAotICAgICAgICAgICAgICAgICdkb2MnOiAnY29udHJvbGxlcnxpcC1uYW1lLXNlcnZlcicsCi0gICAgICAgICAgICAgICAgJ2FyZ3MnOiAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0YWcnICAgICAgICAgICAgIDogJ25hbWUtc2VydmVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2lwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2lwLWFkZHJlc3Mtbm90LW1hc2snLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgICAgOiAnRW50ZXIgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGRvbWFpbiBuYW1lIHNlcnZlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICdjb250cm9sbGVyfGlwLW5hbWUtc2VydmVyLXZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJzogJ2RlZmF1bHQtZ2F0ZXdheScsCi0gICAgICAgICAgICAgICAgJ2NvbW1hbmQtdHlwZSc6ICdjb25maWctd2l0aC1kZWZhdWx0LWdhdGV3YXktY2hlY2snLAotICAgICAgICAgICAgICAgICdvYmotdHlwZSc6ICdjb250cm9sbGVyLW5vZGUnLAotICAgICAgICAgICAgICAgICdkb2MnOiAnY29udHJvbGxlcnxpcC1kZWZhdWx0LWdhdGV3YXknLAotICAgICAgICAgICAgICAgICdhcmdzJzogewotICAgICAgICAgICAgICAgICAgICAndGFnJzogJ2RlZmF1bHQtZ2F0ZXdheScsCi0gICAgICAgICAgICAgICAgICAgICdmaWVsZCc6ICdkZWZhdWx0LWdhdGV3YXknLAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdpcC1hZGRyZXNzLW5vdC1tYXNrJywKLSAgICAgICAgICAgICAgICAgICAgJ3N5bnRheC1oZWxwJzogJ0VudGVyIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSBkZWZhdWx0IGdhdGV3YXknLAotICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdC1mb3Itbm8nOiAnMTAuMTAuMTAuMTAnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJzogJ2NvbnRyb2xsZXJ8aXAtZGVmYXVsdC1nYXRld2F5LXZhbHVlJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAgICAgKSwKLSAgICB9LAotfQotCi1JTlRFUkZBQ0VfSVBfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdpcCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLWNvbnRyb2xsZXItaWYnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy13aXRoLWRlZmF1bHQtZ2F0ZXdheS1jaGVjaycsCi0gICAgJ29iai10eXBlJyAgICAgOiAnY29udHJvbGxlci1pbnRlcmZhY2UnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0Fzc29jaWF0ZSBpcCBhZGRyZXNzIHdpdGggaW50ZXJmYWNlJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdjb250cm9sbGVyfGlwJywKLSAgICAnYXJncycgICAgICAgICA6IHsKLSAgICAgICAgJ2Nob2ljZXMnICA6ICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGRzJzogKCdpcCcsICduZXRtYXNrJyksCi0gICAgICAgICAgICAgICAgJ2RvYyc6ICdjb250cm9sbGVyfGlwLWFkZHJlc3MnLAotICAgICAgICAgICAgICAgICdhcmdzJzogKAotICAgICAgICAgICAgICAgICAgICAnYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdjaG9pY2VzJzogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJzogJ2lwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdpcC1hZGRyZXNzLW5vdC1tYXNrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeW50YXgtaGVscCc6ICdFbnRlciBhbiBJUCBvciBDSURSIGFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQtZm9yLW5vJyA6ICcxMC4xMC4xMC4xMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJzogJ2NvbnRyb2xsZXJ8aXAtYWRkcmVzcy12YWx1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCc6ICduZXRtYXNrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ25ldG1hc2snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5bnRheC1oZWxwJzogJ0VudGVyIGEgbmV0bWFzaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdC1mb3Itbm8nIDogJzAuMC4wLjAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYyc6ICdjb250cm9sbGVyfGlwLWFkZHJlc3MtbmV0bWFzaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJzogJ2NpZHInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJzogJ2NpZHItYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2NpZHItcmFuZ2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJzogJ3NwbGl0LWNpZHItZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uLXRleHQnOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVzdC1pcCc6ICdpcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXN0LW1hc2snOiAnbWFzaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnOiAnY29udHJvbGxlcnxpcC1hZGRyZXNzLWNpZHInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnYXJncyc6IHsKLSAgICAgICAgICAgICAgICAgICAgJ3RhZyc6ICdtb2RlJywKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJzogJ21vZGUnLAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6ICgnZGhjcCcsICdzdGF0aWMnKSwKLSAgICAgICAgICAgICAgICAgICAgJ3N5bnRheC1oZWxwJzogJ0VudGVyIHRoZSBJUCBhZGRyZXNzIGNvbmZpZ3VyYXRpb24gbW9kZSwgZWl0aGVyICJkaGNwIiBvciAic3RhdGljIicsCi0gICAgICAgICAgICAgICAgICAgICdkZWZhdWx0LWZvci1ubyc6ICdzdGF0aWMnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJzogJ2NvbnRyb2xsZXJ8aXAtbW9kZScsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICksCi0gICAgIH0KLX0KLQotTlRQX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICA6ICdudHAnLAotICAgICdtb2RlJyAgICAgICAgOiAnY29uZmlnLWNvbnRyb2xsZXInLAotICAgICdzaG9ydC1oZWxwJyAgOiAnQ29uZmlndXJlIG50cCBmb3IgY29udHJvbGxlci1ub2RlJywKLSAgICAnY29tbWFuZC10eXBlJzogJ2NvbmZpZycsCi0gICAgJ29iai10eXBlJyAgICA6ICdjb250cm9sbGVyLW5vZGUnLAotICAgICdkb2MnICAgICAgICAgOiAnY29udHJvbGxlcnxudHAnLAotICAgICdkb2MtZXhhbXBsZScgOiAnY29udHJvbGxlcnxudHAtZXhhbXBsZScsCi0gICAgJ2FyZ3MnOiB7Ci0gICAgICAgICd0YWcnICAgICAgICAgOiAnc2VydmVyJywKLSAgICAgICAgJ2ZpZWxkJyAgICAgICA6ICdudHAtc2VydmVyJywKLSAgICAgICAgJ3R5cGUnICAgICAgICA6ICdpcC1hZGRyZXNzLW9yLWRvbWFpbi1uYW1lJywKLSAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdFbnRlciB0aGUgSVAgYWRkcmVzcyBvciBkb21haW4gbmFtZSBvZiB0aGUgTlRQIHNlcnZlcicsCi0gICAgICAgICdzaG9ydC1oZWxwJyAgOiAnQ29uZmlndXJlIHRoZSBOVFAgc2VydmVyIG5hbWUnLAotICAgICAgICAnZGVmYXVsdC1mb3Itbm8nOiAneHl6LmNvbScsCi0gICAgICAgICdjb21wbGV0aW9uJyA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAnZG9jJyAgICAgICAgOiAnY29udHJvbGxlcnxudHAtc2VydmVyJywKLSAgICB9Ci19Ci0KLUxPR0dJTkdfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgIDogJ2xvZ2dpbmcnLAotICAgICdzaG9ydC1oZWxwJyAgOiAnQ29uZmlndXJlIGxvZ2dpbmcgKHN5c2xvZykgZm9yIGNvbnRyb2xsZXItbm9kZScsCi0gICAgJ21vZGUnICAgICAgICA6ICdjb25maWctY29udHJvbGxlcicsCi0gICAgJ2NvbW1hbmQtdHlwZSc6ICdjb25maWcnLAotICAgICdvYmotdHlwZScgICAgOiAnY29udHJvbGxlci1ub2RlJywKLSAgICAnZG9jJyAgICAgICAgIDogJ2NvbnRyb2xsZXJ8bG9nZ2luZycsCi0gICAgJ2RvYy1leGFtcGxlJyA6ICdjb250cm9sbGVyfGxvZ2dpbmctZXhhbXBsZScsCi0gICAgJ2FyZ3MnOiB7Ci0gICAgICAgICdjaG9pY2VzJzogKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdsb2dnaW5nLWVuYWJsZWQnLAotICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdvbicsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2Jvb2xlYW4nLAotICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdFbmFibGUgcmVtb3RlIGxvZ2dpbmcnLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdjb250cm9sbGVyfGxvZ2dpbmctZW5hYmxlJywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgICAgICA6ICdzZXJ2ZXInLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICAgICA6ICdTZXQgdGhlIHJlbW90ZSBzeXNsb2cgc2VydmVyIG5hbWUnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICdjb250cm9sbGVyfGxvZ2dpbmctc2VydmVyJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnbG9nZ2luZy1zZXJ2ZXInLAotICAgICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICAgICA6ICdzZXJ2ZXItaXAtb3ItZG9tYWluJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnaXAtYWRkcmVzcy1vci1kb21haW4tbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICdzeW50YXgtaGVscCcgICAgIDogJ0VudGVyIHRoZSBJUCBhZGRyZXNzIG9yIGRvbWFpbiBuYW1lIG9mIHRoZSBzeXNsb2cgc2VydmVyJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgJ21hdGNoLWZvci1ubycgICAgOiAnbG9nZ2luZy1zZXJ2ZXInLAotICAgICAgICAgICAgICAgICAgICAnbm8tYWN0aW9uJyAgICAgICA6ICdyZXNldC1maWVsZHMnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnbG9nZ2luZy1sZXZlbCcsCi0gICAgICAgICAgICAgICAgICAgICd0YWcnICAgICAgICA6ICdsZXZlbCcsCi0gICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTZXQgdGhlIGxvZ2dpbmcgbGV2ZWwgZm9yIHJlbW90ZSBzeXNsb2cnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICgnZW1lcmcnLCAnYWxlcnQnLCAnY3JpdCcsICdlcnInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dhcm5pbmcnLCAnbm90aWNlJywgJ2luZm8nLCAnZGVidWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2NvbnRyb2xsZXJ8bG9nZ2luZy1sZXZlbCcsCi0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICksCi0gICAgICAgICkKLSAgICB9Ci19Ci0KLUZJUkVXQUxMX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnZmlyZXdhbGwnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0NvbmZpZ3VyZSBmaXJld2FsbCBydWxlIGZvciBjb250cm9sbGVyLW5vZGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1vYmplY3QnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1jb250cm9sbGVyLWlmJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdmaXJld2FsbC1ydWxlJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdjb250cm9sbGVyfGZpcmV3YWxsJywKLSAgICAncGFyZW50LWZpZWxkJyA6ICdpbnRlcmZhY2UnLAotICAgICdhcmdzJzogKAotICAgICAgICAjIFRoaXMgYXJnL3Rva2VuIGlzIHJlYWxseSBqdXN0IHN5bnRhY3RpYyBzdWdhciBmb3IgdGhlIGNvbW1hbmQuCi0gICAgICAgICMgVGhlcmUncyBubyAnZGVueScgdmFsdWUsIGJlY2F1c2UgdGhpbmdzIGFyZSBkZW5pZWQgYnkgZGVmYXVsdC4KLSAgICAgICAgIyBJbnN0ZWFkIHlvdSBqdXN0IHVzZSBhICdubycgY29tbWFuZCB0byBkZWxldGUgdGhlIGZpcmV3YWxsIHJ1bGUuCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdhbGxvdycsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnQWxsb3cgYSBnaXZlbiBzZXQgb2YgdHJhZmZpYycsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnY29udHJvbGxlcnxmaXJld2FsbC1hbGxvdycsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ3NyYy1pcCcsCi0gICAgICAgICAgICAndGFnJyAgICAgICAgICAgICA6ICdmcm9tJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2lwLWFkZHJlc3MnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgICAgOiBUcnVlLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgJ21hdGNoLWZvci1ubycgICAgOiBUcnVlLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnY29udHJvbGxlcnxmaXJld2FsbC1zcmMtaXAnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICd2cnJwLWlwJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgICAgIDogJ2xvY2FsLWlwJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2lwLWFkZHJlc3MnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgICAgOiBUcnVlLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgJ21hdGNoLWZvci1ubycgICAgOiBUcnVlLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnY29udHJvbGxlcnxmaXJld2FsbC1sb2NhbC1pcCcsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyAgICAgICAgIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3BvcnQnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdDb25maWd1cmUgcnVsZSBmb3IgYSBzcGVjaWZpYyBzZXJ2aWNlIHBvcnQnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnY29udHJvbGxlcnxmaXJld2FsbC1wb3J0JywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgIDogeyAncHJvdG8nIDogJ3RjcCcgfSwKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcGVuZmxvdycgOiA2NjMzLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3dlYicgICAgICA6IDgwLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3NzbCcgICAgICA6IDQ0MywKLSAgICAgICAgICAgICAgICAgICAgICAgICdzc2gnICAgICAgOiAyMgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAnbWF0Y2gtZm9yLW5vJyAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgIDogJ2NvbnRyb2xsZXJ8ZmlyZXdhbGwtKycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ3Byb3RvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnQ29uZmlndXJlIHJ1bGUgZm9yIHByb3RvY29sIChUQ1AsIFVEUCknLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgICAgOiAoJ3VkcCcsICd0Y3AnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ2NvbnRyb2xsZXJ8ZmlyZXdhbGwtKycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnbWF0Y2gtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAnY2hvaWNlcyc6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdwb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnQ29uZmlndXJlIHJ1bGUgZm9yIGEgc3BlY2lmaWMgc2VydmljZSBwb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYyc6ICdjb250cm9sbGVyfGZpcmV3YWxsLXBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJzogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wZW5mbG93JyA6IDY2MzMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2ViJyAgICAgIDogODAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3NsJyAgICAgIDogNDQzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NzaCcgICAgICA6IDIyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXRjaC1mb3Itbm8nICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnY29udHJvbGxlcnxmaXJld2FsbC0rJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAncG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlLXR5cGUnICAgICAgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZ2UnICAgICAgICAgICA6ICgwLCA2NTUzNSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uLXRleHQnIDogJzAtNjU1MzUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICdjb250cm9sbGVyfGZpcmV3YWxsLXBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF0Y2gtZm9yLW5vJyAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAncHJvdG8nLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnQ29uZmlndXJlIHJ1bGUgZm9yIHByb3RvY29sIChUQ1AsIFVEUCknLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgICA6ICd2cnJwJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAnY29udHJvbGxlcnxmaXJld2FsbC0rJywKLSAgICAgICAgICAgICAgICAgICAgJ21hdGNoLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICkKLX0KLQotTU9OVEhfTkFNRVMgPSAgKCdKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywKLSAgICAgICAgICAgICAgICAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0KLQotQ0xPQ0tfVElNRVpPTkVfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdjbG9jaycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLWNvbnRyb2xsZXInLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0NvbmZpZ3VyZSB0aW1lIHpvbmUnLAotICAgICdkb2MnICAgICAgICAgIDogJ2NvbnRyb2xsZXJ8Y2xvY2stdGltZXpvbmUnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2NvbnRyb2xsZXJ8Y2xvY2stdGltZXpvbmUtZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdjb250cm9sbGVyLW5vZGUnLAotICAgICdhcmdzJyAgICAgICAgIDogewotICAgICAgICAndGFnJyAgICAgICAgICAgIDogJ3RpbWV6b25lJywKLSAgICAgICAgJ2ZpZWxkJyAgICAgICAgICA6ICd0aW1lLXpvbmUnLAotICAgICAgICAndHlwZScgICAgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICdkZWZhdWx0LWZvci1ubycgOiAnVVRDJywKLSAgICAgICAgJ2NvbXBsZXRpb24nICAgICA6ICd0aW1lLXpvbmUtY29tcGxldGlvbicsCi0gICAgICAgICd2YWxpZGF0aW9uJyAgICAgOiAndGltZS16b25lLXZhbGlkYXRpb24nLAotICAgICAgICAnc3ludGF4LWhlbHAnICAgIDogJ0VudGVyIHRoZSB0aW1lIHpvbmUnLAotICAgICAgICAnc2hvcnQtaGVscCcgICAgIDogICdDb25maWd1cmUgdGhlIHRpbWUgem9uZScsCi0gICAgfQotfQotCi1DTE9DS19TRVRfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdjbG9jaycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLWNvbnRyb2xsZXInLAotICAgICduby1zdXBwb3J0ZWQnIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2V0IGNsb2NrJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdjb250cm9sbGVyfGNsb2NrLXNldCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnY29udHJvbGxlcnxjbG9jay1zZXQtZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAncmVhbHRpbWUnLAotICAgICdhY3Rpb24nICAgICAgIDogJ3NldC1jbG9jaycsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgICAgICAgOiAnc2V0JywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgOiAnU2V0IHRoZSBjdXJyZW50IHRpbWUgYW5kIGRhdGUnCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgOiAndGltZScsCi0gICAgICAgICAgICAnYmFzZS10eXBlJyAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAncGF0dGVybicgICAgIDogJ15bMC05XXsxLDJ9OlswLTldezEsMn06WzAtOV17Mn0kJywKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgOiAnRW50ZXIgdGhlIHRpbWUgKEhIOk1NOlNTKScKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICA6ICdkYXktb2YtbW9udGgnLAotICAgICAgICAgICAgJ2Jhc2UtdHlwZScgICA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICdyYW5nZScgICAgICAgOiAoMSwzMSksCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnIDogJ0VudGVyIHRoZSBkYXkgb2YgdGhlIG1vbnRoICgxLTMxKScKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICA6ICdtb250aCcsCi0gICAgICAgICAgICAndHlwZScgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgICA6IE1PTlRIX05BTUVTLAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdFbnRlciB0aGUgbW9udGggKGUuZy4gSmFudWFyeSwgTWFyY2gpJwotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgIDogJ3llYXInLAotICAgICAgICAgICAgJ2Jhc2UtdHlwZScgICA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICdyYW5nZScgICAgICAgOiAoMCwxMDAwMCksCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnIDogJ0VudGVyIHRoZSB5ZWFyJwotICAgICAgICB9LAotICAgICkKLX0KLSIiIgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvY29udHJvbGxlcl9ub2RlX21vZGVsLnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvY29udHJvbGxlcl9ub2RlX21vZGVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkMTk3Nzk0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2NvbnRyb2xsZXJfbm9kZV9tb2RlbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1pbXBvcnQgY29tbWFuZAotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2VuYWJsZV9jYXNjYWRlX2RlbGV0ZSgnY29udHJvbGxlci1ub2RlJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZW5hYmxlX2Nhc2NhZGVfZGVsZXRlKCdjb250cm9sbGVyLWludGVyZmFjZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2VuYWJsZV9jYXNjYWRlX2RlbGV0ZSgnY29udHJvbGxlci1kb21haW4tbmFtZS1zZXJ2ZXInKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9lbmFibGVfY2FzY2FkZV9kZWxldGUoJ2NvbnRyb2xsZXItYWxpYXMnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9lbmFibGVfY2FzY2FkZV9kZWxldGUoJ2ZpcmV3YWxsLXJ1bGUnKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgnY29udHJvbGxlci1ub2RlJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCdjb250cm9sbGVyLWludGVyZmFjZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgnY29udHJvbGxlci1kb21haW4tbmFtZS1zZXJ2ZXInKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX3N1Ym1vZGUoJ2NvbnRyb2xsZXItYWxpYXMnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX3N1Ym1vZGUoJ2ZpcmV3YWxsLXJ1bGUnKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnY29udHJvbGxlci1ub2RlJywgJ2RvbWFpbi1sb29rdXBzLWVuYWJsZWQnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2NvbnRyb2xsZXItbm9kZScsICdkb21haW4tbmFtZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnY29udHJvbGxlci1ub2RlJywgJ2RlZmF1bHQtZ2F0ZXdheScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnY29udHJvbGxlci1ub2RlJywgJ250cC1zZXJ2ZXInKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2NvbnRyb2xsZXItbm9kZScsICd0aW1lLXpvbmUnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2NvbnRyb2xsZXItbm9kZScsICdsb2dnaW5nLWVuYWJsZWQnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2NvbnRyb2xsZXItbm9kZScsICdsb2dnaW5nLXNlcnZlcicpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnY29udHJvbGxlci1ub2RlJywgJ2xvZ2dpbmctbGV2ZWwnKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnY29udHJvbGxlci1pbnRlcmZhY2UnLCAndHlwZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnY29udHJvbGxlci1pbnRlcmZhY2UnLCAnbnVtYmVyJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdjb250cm9sbGVyLWludGVyZmFjZScsICdpcCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnY29udHJvbGxlci1pbnRlcmZhY2UnLCAnbmV0bWFzaycpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnY29udHJvbGxlci1pbnRlcmZhY2UnLCAnbWFjJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdjb250cm9sbGVyLWludGVyZmFjZScsICdkaXNjb3ZlcmVkLWlwJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdjb250cm9sbGVyLWludGVyZmFjZScsICdtb2RlJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdjb250cm9sbGVyLWludGVyZmFjZScsICdzdGF0dXMnKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnY29udHJvbGxlci1kb21haW4tbmFtZS1zZXJ2ZXInLCAnaXAnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2NvbnRyb2xsZXItZG9tYWluLW5hbWUtc2VydmVyJywgJ3NlcXVlbmNlLW51bWJlcicpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnY29udHJvbGxlci1kb21haW4tbmFtZS1zZXJ2ZXInLCAnY29udHJvbGxlcicpCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdmaXJld2FsbC1ydWxlJywgJ2ludGVyZmFjZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnZmlyZXdhbGwtcnVsZScsICdwb3J0JykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdmaXJld2FsbC1ydWxlJywgJ3Byb3RvJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdmaXJld2FsbC1ydWxlJywgJ3J1bGUnKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvY29yZS5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2NvcmUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDBlMGYzYzEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvY29yZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2NzQgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBjb21tYW5kCi1pbXBvcnQgcnVuX2NvbmZpZwotCi0iIiIKLVNIT1dfUlVOTklOR19DT05GSUdfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB0aGUgY3VycmVudCBhY3RpdmUgY29uZmlndXJhdGlvbicsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBGYWxzZSwKLSAgICAnb2JqLXR5cGUnICAgICA6ICdydW5uaW5nLWNvbmZpZycsCi0gICAgJ2RvYycgICAgICAgICAgOiAncnVubmluZy1jb25maWd8c2hvdycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAncnVubmluZy1jb25maWd8c2hvdy1leGFtcGxlJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ3J1bm5pbmctY29uZmlnJywKLSAgICAgICAgcnVuX2NvbmZpZy5ydW5uaW5nX2NvbmZpZ19jb21tYW5kX2Nob2ljZXMsCi0gICAgKQotfQotCi1TSE9XX0NMT0NLX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZScsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnZGlzcGxheS1yZXN0JywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICd1cmwnICAgICAgICAgIDogJ3N5c3RlbS9jbG9jay9sb2NhbCcsCi0gICAgJ3Jlc3QtdHlwZScgICAgOiAnZGljdC13aXRoLXRpbWV8dHp8eWVhcnxtb250aHxkYXl8aG91cnxtaW51dGV8c2Vjb25kJywKLSAgICAnZm9ybWF0JyAgICAgICA6ICdzeXN0ZW0tY2xvY2snLAotICAgICdkb2MnICAgICAgICAgIDogJ2Nsb2NrfHNob3cnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2Nsb2NrfHNob3ctZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICdjbG9jaycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAnZmllbGQnICAgICAgOiAnZGV0YWlsJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICgnZGV0YWlscycpLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgbW9yZSBkYXRlL3RpbWUgaW5mb3JtYXRpb24nLAotICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2Nsb2NrfHNob3ctZm9ybWF0LWRldGFpbHMnLAotICAgICAgICB9LAotICAgICkKLX0KLQotU0hPV19DT05GSUdfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyBzYXZlZCBjb25maWdzIChleDogc3RhcnR1cC1jb25maWcsIGV0YyknLAotICAgICdhY3Rpb24nICAgICAgIDogJ2xlZ2FjeS1jbGknLAotICAgICdvYmotdHlwZScgICAgIDogJ2NvbmZpZycsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBGYWxzZSwKLSAgICAnZG9jJyAgICAgICAgICA6ICdjb25maWd8c2hvdycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnY29uZmlnfHNob3ctZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICdjb25maWcnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAnY2hvaWNlcycgICA6ICgKLSAgICAgICAgICAgICMgPGZpcnN0PiBbIDx2ZXJzaW9uPiBdCi0gICAgICAgICAgICAjIDxmaXJzdD4gZGlmZiA8c2Vjb25kPiBbIHZlcnNpb24gXQotICAgICAgICAgICAgICAgKCAjIDFuZCBjaG9pY2UgJ2RpZmYnIDxjb25maWc+IDxjb25maWc+IFsgdmVyc2lvbiBdCi0gICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2ZpcnN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2NvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyA6ICdjb21wbGV0ZS1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnY29uZmlnfHNob3ctZmlyc3QnLAotICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgOiAnZGlmZicsCi0gICAgICAgICAgICAgICAgICAgICAgICMgWFhYIGltcGxpZXMgY29uZmlnJ3MgYXJlbid0IGNhbGxlZCAnZGlmZicKLSAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdzZWNvbmQnLAotICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nIDogJ2NvbXBsZXRlLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdjb25maWd8c2hvdy1zZWNvbmQnLAotICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICd2ZXJzaW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgIDogJ2NvbmZpZ3xzaG93LXZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAoICMgMnN0IGNob2ljZSAgPG5hbWU+IFsgdmVyc2lvbiBdCi0gICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnICAgIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgOiAnY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICA6ICdjb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgIDogJ2NvbXBsZXRlLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICdzeW50YXgtaGVscCcgOiAnQ29uZmlnIGZpbGUgbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgOiAnY29uZmlnfHNob3ctc2luZ2xlJywKLSAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgOiAndmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICA6ICdjb25maWd8c2hvdy12ZXJzaW9uJywKLSAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgKQotICAgICAgICB9Ci0gICAgKQotfQotCi1TSE9XX0NPTkZJR19GSUxFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgYSBzcGVjaWZpYyBzYXZlZCBjb25maWcgZmlsZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAnY29uZmlnLWZpbGV8c2hvdycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnY29uZmlnLWZpbGV8c2hvdy1leGFtcGxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdjb25maWctZmlsZScsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBGYWxzZSwKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ2NvbmZpZy1maWxlJywKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICA6IFRydWUsCi0gICAgICAgICAgICAnZmllbGQnICAgICAgIDogJ2NvbmZpZycsCi0gICAgICAgICAgICAndHlwZScgICAgICAgIDogJ2NvbmZpZycsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgIDogJ2NvbXBsZXRlLWNvbmZpZycsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnIDogJ0NvbmZpZyBmaWxlIG5hbWUnLAotICAgICAgICB9Ci0gICAgKSwKLX0KLQotU0hPV19URUNIX1NVUFBPUlRfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB0ZWNoLXN1cHBvcnQsIGNvbGxlY3Qgb3V0cHV0IG9mIHZhcmlvdXMgY29tbWFuZHMnLAotICAgICdkb2MnICAgICAgICAgIDogJ3RlY2gtc3VwcG9ydHxzaG93JywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd0ZWNoLXN1cHBvcnR8c2hvdy1leGFtcGxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd0ZWNoLXN1cHBvcnQnLAotICAgICdhY3Rpb24nICAgICAgIDogJ2xlZ2FjeS1jbGknLAotICAgICduby1zdXBwb3J0ZWQnIDogRmFsc2UsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICAndGVjaC1zdXBwb3J0JywKLSAgICApLAotfQotCi1TSE9XX0ZMT1dfRU5UUllfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdmbG93LWVudHJ5JywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IGNvbmZpZ3VyZWQgc3RhdGljIGZsb3ctZW50cmllcycsCi0gICAgJ2RvYycgICAgICAgICAgOiAnZmxvdy1lbnRyeXxzaG93JywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdmbG93LWVudHJ5fHNob3ctZXhhbXBsZScsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnZmxvdy1lbnRyeScsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ25hbWUnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLAotICAgICAgICAgICAgJ2Jhc2UtdHlwZScgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAncmVzZXJ2ZWQnICAgICA6IFsgJ3N3aXRjaCcgXSwKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ3N3aXRjaCcsCi0gICAgICAgICAgICAndGFnJyAgICAgICAgICAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgICAgOiBUcnVlLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICAgICA6ICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgJ290aGVyJyAgICAgICAgICAgOiAnc3dpdGNoZXMnLAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgICAgOiAnc3dpdGNoIGRwaWQgb3IgYWxpYXMnLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgOiAnU2hvdyBmbG93IGVudHJpZXMgZm9yIGEgc3BlY2lmaWMgc3dpdGNoJwotICAgICAgICB9Ci0KLSAgICApCi19Ci0KLVNIT1dfRklSRVdBTExfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdmaXJld2FsbC1ydWxlJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IGZpcmV3YWxsIHJ1bGVzIGZvciBjb250cm9sbGVyIGludGVyZmFjZXMnLAotICAgICdkb2MnICAgICAgICAgIDogJ2ZpcmV3YWxsLXJ1bGV8c2hvdycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnZmlyZXdhbGwtcnVsZXxzaG93LWV4YW1wbGUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ2ZpcmV3YWxsLXJ1bGUnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAndGFnJyAgICAgICA6ICdjb250cm9sbGVyJywKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2NvbnRyb2xsZXInLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJzogJ1Nob3cgcnVsZXMgZnJvbSBhIHNwZWNpZmljIGNvbnRyb2xsZXInLAotICAgICAgICAgICAgJ2RvYycgICAgICAgOiAnZmlyZXdhbGwtcnVsZXxzaG93LWNvbnRyb2xsZXInLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAndGFnJyAgICAgICA6ICd0eXBlJywKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ3R5cGUnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJzogJ1Nob3cgcnVsZXMgd2l0aCBhIHNwZWNpZmljIHJ1bGUgdHlwZScsCi0gICAgICAgICAgICAnZG9jJyAgICAgICA6ICdmaXJld2FsbC1ydWxlfHNob3ctdHlwZScsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICd0YWcnICAgICAgIDogJ251bWJlcicsCi0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdudW1iZXInLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCc6ICdTaG93IHJ1bGVzIHdpdGggYSBzcGVjaWZpYyBydWxlIG51bWJlcicsCi0gICAgICAgICAgICAnZG9jJyAgICAgICA6ICdmaXJld2FsbC1ydWxlfHNob3ctbnVtYmVyJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICAgJ3RhZycgICAgICAgOiAncG9ydCcsCi0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdwb3J0JywKLSAgICAgICAgICAgICd0eXBlJyAgICAgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnOiAnU2hvdyBydWxlcyB3aXRoIGEgc3BlY2lmaWMgcG9ydCBudW1iZXInLAotICAgICAgICAgICAgJ2RvYycgICAgICAgOiAnZmlyZXdhbGwtcnVsZXxzaG93LXBvcnQnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAndGFnJyAgICAgICA6ICdwcm90bycsCi0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdwcm90bycsCi0gICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgIDogKCd0Y3AnLCAndWRwJywgJ3ZycnAnKSwKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJzogJ1Nob3cgcnVsZXMgd2l0aCBhIHNwZWNpZmljIElQIHByb3RvY29sJywKLSAgICAgICAgICAgICdkb2MnICAgICAgIDogJ2ZpcmV3YWxsLXJ1bGV8c2hvdy1wcm90bycsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAnZmllbGQnICAgICAgOiAnc3JjLWlwJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICA6ICdzcmMtaXAnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2lwLWFkZHJlc3MnLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgcnVsZXMgd2l0aCB0aGlzIHNyYy1pcCBjb25maWd1cmVkJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdmaXJld2FsbC1ydWxlfHNob3ctc3JjLWlwJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJyAgIDogVHJ1ZSwKLSAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICd2cnJwLWlwJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICA6ICdsb2NhbC1pcCcsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnU2hvdyBydWxlcyB3aXRoIHRoaXMgc3JjLWlwIGNvbmZpZ3VyZWQnLAotICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2ZpcmV3YWxsLXJ1bGV8c2hvdy1zcmMtaXAnLAotICAgICAgICB9LAotICAgICkKLX0KLQotU0hPV19USElTX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ29iai10eXBlJyAgICAgOiAndGhpcycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLSonLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgdGhlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgc3VibW9kZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAnc2hvdy10aGlzJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdzaG93LXRoaXMtZXhhbXBsZScsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBGYWxzZSwKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ3RoaXMnLAotICAgICkKLX0KLQotU0hPV19TV0lUQ0hfQ0xVU1RFUl9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdzd2l0Y2gtY2x1c3RlcicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyBncm91cHMgb2YgaW50ZXJjb25uZWN0ZWQgb3BlbmZsb3cgc3dpdGNoZXMnLAotICAgICdkb2MnICAgICAgICAgIDogJ3N3aXRjaC1jbHVzdGVyfHNob3cnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3N3aXRjaC1jbHVzdGVyfHNob3ctZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS1yZXN0JywKLSAgICAndXJsJyAgICAgICAgICA6ICdyZWFsdGltZXN0YXR1cy9uZXR3b3JrL2NsdXN0ZXIvJywKLSAgICAncmVzdC10eXBlJyAgICA6ICdkaWN0LW9mLWxpc3Qtb2YtY2x1c3Rlci1pZHxbc3dpdGNoZXNdJywKLSAgICAnZm9ybWF0JyAgICAgICA6ICdzd2l0Y2gtY2x1c3RlcicsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgOiAnc3dpdGNoLWNsdXN0ZXInLAotICAgICAgICB9Ci0gICAgKQotfQotCi1TSE9XX0VYVEVSTkFMX1BPUlRTX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdvYmotdHlwZScgICAgIDogJ2V4dGVybmFsLXBvcnRzJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IHN3aXRjaCBwb3J0cyBjb25uZWN0ZWQgdG8gZXh0ZXJuYWwgTDIgbmV0d29ya3MnLAotICAgICdkb2MnICAgICAgICAgIDogJ2V4dGVybmFsLXBvcnRzfHNob3cnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2V4dGVybmFsLXBvcnRzfHNob3ctZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS1yZXN0JywKLSAgICAndXJsJyAgICAgICAgICA6ICdyZWFsdGltZXN0YXR1cy9uZXR3b3JrL2V4dGVybmFscG9ydHMvJywKLSAgICAncmVzdC10eXBlJyAgICA6ICdkaWN0LW9mLWxpc3Qtb2YtaWR8W3BvcnRzXScsCi0gICAgJ2Zvcm1hdCcgICAgICAgOiAnZXh0ZXJuYWwtcG9ydHMnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nIDogJ2V4dGVybmFsLXBvcnRzJywKLSAgICAgICAgfQotICAgICkKLX0KLQotCi1TSE9XX1ZFUlNJT05fQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyBjdXJyZW50IGJ1aWxkIHZlcnNpb24gbnVtYmVyJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdjb3JlfHZlcnNpb24nLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2NvcmV8dmVyc2lvbi1leGFtcGxlJywKLSAgICAnYWN0aW9uJyAgICAgICA6ICdkaXNwbGF5LXJlc3QnLAotICAgICduby1zdXBwb3J0ZWQnIDogRmFsc2UsCi0gICAgJ3VybCcgICAgICAgICAgOiAnc3lzdGVtL3ZlcnNpb24nLAotICAgICdmb3JtYXQnICAgICAgIDogJ3ZlcnNpb24nLAotICAgICdkZXRhaWwnICAgICAgIDogJ2RldGFpbHMnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAndmVyc2lvbicsCi0gICAgKQotfQotCi0KLVNIT1dfTE9HR0lOR19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IHZhcmlvdXMgY29udHJvbGxlciBsb2dzJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdzaG93LWxvZ2dpbmcnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Nob3ctbG9nZ2luZy1leGFtcGxlJywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICdvYmotdHlwZScgICAgIDogJ2xvZ2dpbmcnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnbG9nZ2luZycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgICA6ICd0cnVlJywKLSAgICAgICAgICAgICdhcmdzJyAgICAgICA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0b2tlbicgOiAnY29udHJvbGxlcicsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnY29udHJvbGxlci1ub2RlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ2FsbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICdjb250cm9sbGVyLW5vZGV8aWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgIDogJ2xvZy1uYW1lJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyA6ICdjb21wbGV0ZS1sb2ctbmFtZXMnLAotICAgICAgICAgICAgJ2RvYycgICAgICA6ICdzaG93LWxvZ2dpbmctKycsCi0gICAgICAgICAgICAnYWN0aW9uJyAgIDogJ2R1bXAtbG9nJywKLSAgICAgICAgfSwKLSAgICApLAotfQotCi1TSE9XX0VWRU5UX0hJU1RPUllfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyByZWNlbnQgbmV0d29yayBvciBzeXN0ZW0gZXZlbnRzJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdldmVudC1oaXN0b3J5fHNob3cnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2V2ZW50LWhpc3Rvcnl8c2hvdy1leGFtcGxlJywKLSAgICAnYWN0aW9uJyAgICAgICA6ICdsZWdhY3ktY2xpJywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICdvYmotdHlwZScgICAgIDogJ2V2ZW50LWhpc3RvcnknLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnZXZlbnQtaGlzdG9yeScsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgOiAnZXZlbnQnLAotICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICMgJ2F0dGFjaG1lbnQtcG9pbnQnLCBub3QgY3VycmVudGx5IGF2YWlsYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwYWNrZXQtaW4nLCBub3QgY3VycmVudGx5IGF2YWlsYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAndG9wb2xvZ3ktbGluaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0b3BvbG9neS1zd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndG9wb2xvZ3ktY2x1c3RlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICdkb2MnICAgICAgOiAnc2hvdy1ldmVudC1oaXN0b3J5LSsnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdjb3VudCcsCi0gICAgICAgICAgICAndGFnJyAgICAgICA6ICdsYXN0JywKLSAgICAgICAgICAgICdiYXNlLXR5cGUnIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ3JhbmdlJyAgICAgOiAoMSwxMDAwMCksCi0gICAgICAgICAgICAnZG9jJyAgICAgICA6ICdzaG93LWV2ZW50LWhpc3RvcnktY291bnQnLAotICAgICAgICB9Ci0gICAgKSwKLX0KLQotU0hPV19GTE9XX0NBQ0hFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgdGhlIGNvbnRlbnRzIG9mIHRoZSBjb250cm9sbGVyIGZsb3cgY2FjaGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ2Zsb3ctY2FjaGV8c2hvdycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnZmxvdy1jYWNoZXxzaG93LWV4YW1wbGUnLAotICAgICdhY3Rpb24nICAgICAgIDogJ2Rpc3BsYXktcmVzdCcsCi0gICAgJ3VybCcgICAgICAgICAgOiAnZmxvdy1jYWNoZS92bnMvYWxsL2FsbCcsCi0gICAgJ3Jlc3QtdHlwZScgICAgOiAnZGljdC13aXRoLWZsb3dzJywKLSAgICAnZm9ybWF0JyAgICAgICA6ICdmbG93LWNhY2hlJywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICMnb2JqLXR5cGUnICAgICA6ICdmbG93LWNhY2hlJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ2Zsb3ctY2FjaGUnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgOiAnYXBwbGljYXRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3RhZycgICAgICA6ICdhcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnOiAnU2hvdyB0aGUgZW50cmllcyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBhcHBsaWNhdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICA6ICdmbG93LWNhY2hlfHNob3ctYXBwbGljYXRpb24nLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgIDogJ2luc3RhbmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0YWcnICAgICAgOiAnYXBwLWluc3RhbmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgOiAnZmxvdy1jYWNoZXxzaG93LWluc3RhbmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgOiAnZGlzcGxheS1yZXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICd1cmwnICAgICAgOiAnZmxvdy1jYWNoZS8lKGFwcGxpY2F0aW9uKXMvJShpbnN0YW5jZSlzL2FsbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAncmVzdC10eXBlJzogJ2RpY3Qtd2l0aC1mbG93cycsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2NvdW50ZXJzJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgIDogJ2NvdW50ZXJzJywKLSAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgOiAnZGlzcGxheS1yZXN0JywKLSAgICAgICAgICAgICAgICAgICAgJ3VybCcgICAgICAgOiAnZmxvdy1jYWNoZS92bnMvYWxsL2NvdW50ZXJzJywKLSAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgICAgOiAnZmxvdy1jYWNoZS1jb3VudGVycycsCi0gICAgICAgICAgICAgICAgICAgICdyZXN0LXR5cGUnIDogJ2RpY3Qtd2l0aC1jb3VudGVyc3xzdGF0dXMnLAotICAgICAgICAgICAgICAgICAgICAnZGV0YWlsJyAgICA6ICdkZXRhaWxzJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnOiAnU2hvdyB0aGUgY291bnRlcnMgZm9yIHRoZSBmbG93IGNhY2hlJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgOiAnZmxvdy1jYWNoZXxzaG93LWNvdW50ZXJzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKQotICAgICAgICB9Ci0gICAgKSwKLX0KLQotRkVBVFVSRV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ2ZlYXR1cmUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnRW5hYmxlIGZlYXR1cmVzIGZvciBjb250cm9sbGVyJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdmZWF0dXJlJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdmZWF0dXJlLWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ29iai10eXBlJyAgICAgOiAnZmVhdHVyZScsCi0gICAgJ2FyZ3MnOiB7Ci0gICAgICAgICdjaG9pY2VzJzogKAotICAgICAgICAgICAgeyAgIAotICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgICA6ICd2bnMnLAotICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgICAgICA6ICdFbmFibGUgdGhlIFZOUyBmZWF0dXJlJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICAgOiAnZmVhdHVyZS12bnMnLAotICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICAgICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgICA6ICd3cml0ZS1vYmplY3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIHByaW1hcnkga2V5ICgnaWQnKSBtdXN0IGJlIHByZXNlbnQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVhZCB0aGUgb2xkIHJvdyB2YWx1ZSwgYW5kIHVwZGF0ZSBpdGVtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGEgJ25ldycgcm93IGlzIHdyaXR0ZW4gd2l0aCBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHZhbHVlcwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgIDogJ2ZlYXR1cmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHZpcnQtZmVhdHVyZScgICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgICAgOiAnd2FpdC1mb3ItY29udHJvbGxlcicsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAnbm8tYWN0aW9uJyAgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgICAgOiAnd3JpdGUtb2JqZWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgIDogJ2ZlYXR1cmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHZpcnQtZmVhdHVyZScgOiBGYWxzZSAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgICA6ICd3YWl0LWZvci1jb250cm9sbGVyJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICB9LCAgICAgICAgICAgICAgCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgICA6ICdmbG93LXB1c2hlcicsCi0gICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgIDogJ0VuYWJsZSB0aGUgc3RhdGljIGZsb3cgcHVzaGVyIGZlYXR1cmUnLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgICA6ICdmZWF0dXJlLWZsb3ctcHVzaGVyJywKLSAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgICAgOiAnd3JpdGUtb2JqZWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2ZlYXR1cmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRpYy1mbG93LXB1c2hlci1mZWF0dXJlJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgICA6ICd3YWl0LWZvci1jb250cm9sbGVyJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgJ25vLWFjdGlvbicgICAgICAgIDogKAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgICAgIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICAgICAgICAgICA6ICdmZWF0dXJlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0aWMtZmxvdy1wdXNoZXItZmVhdHVyZScgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgICAgIDogJ3dhaXQtZm9yLWNvbnRyb2xsZXInLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIH0sICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgICA6ICdwZXJmb3JtYW5jZS1tb25pdG9yJywKLSAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICAgICAgOiAnRW5hYmxlIHRoZSBwZXJmb3JtYW5jZSBtb25pdG9yIGZlYXR1cmUnLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgICA6ICdmZWF0dXJlLXBlcmZvcm1hbmNlLW1vbml0b3InLAotICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICAgICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgICA6ICd3cml0ZS1vYmplY3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2ZlYXR1cmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BlcmZvcm1hbmNlLW1vbml0b3ItZmVhdHVyZScgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgICAgOiAnd2FpdC1mb3ItY29udHJvbGxlcicsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAnbm8tYWN0aW9uJyAgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgICAgOiAnd3JpdGUtb2JqZWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdmZWF0dXJlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwZXJmb3JtYW5jZS1tb25pdG9yLWZlYXR1cmUnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgICA6ICd3YWl0LWZvci1jb250cm9sbGVyJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICB9LCAgICAgICAKLSAgICAgICAgKSwgICAgICAgCi0gICAgfSwgICAgICAKLX0KLQotCi1TSE9XX0ZFQVRVUkVfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyBlbmFibGVkIGFuZCBkaXNhYmxlZCBmZWF0dXJlcycsCi0gICAgJ2RvYycgICAgICAgICAgOiAnc2hvdy1mZWF0dXJlJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdzaG93LWZlYXR1cmUtZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAnZmVhdHVyZScsCi0gICAgJ2RhdGEnICAgICAgICAgOiB7ICdpZCcgOiAnZmVhdHVyZScgfSwKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ2ZlYXR1cmUnLAotICAgICkKLX0KLQotCi1WRVJTSU9OX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ3ZlcnNpb24nLAotICAgICduby1zdXBwb3J0ZWQnICAgICAgICA6IEZhbHNlLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdNb3ZlIHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiBjb21tYW5kIHN5bnRheCcsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2NvcmV8dmVyc2lvbicsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2NvcmV8dmVyc2lvbi1leGFtcGxlJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnKicsCi0gICAgJ2FjdGlvbicgICAgICAgICAgICAgIDogJ3ZlcnNpb24nLAotICAgICdhcmdzJzogewotICAgICAgICAnZmllbGQnICAgICAgOiAndmVyc2lvbicsCi0gICAgICAgICd0eXBlJyAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAnY29tcGxldGlvbicgOiAnZGVzY3JpcHRpb24tdmVyc2lvbnMnCi0gICAgfQotfQotCi0iIiIKLUNMRUFSX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ2NsZWFydGVybScsCi0gICAgJ25vLXN1cHBvcnRlZCcgICAgICAgIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ0NsZWFycyBhbmQgcmVzZXRzIHRoZSB0ZXJtaW5hbCBzY3JlZW4nLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdjbGVhcnRlcm0nLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdjbGVhcnRlcm0tZXhhbXBsZScsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnYWN0aW9uJyAgICAgICAgICAgICAgOiAnY2xlYXJ0ZXJtJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiB7fQotfQotIiIiCi0KLUNPUFlfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnY29weScsCi0gICAgJ25vLXN1cHBvcnRlZCcgICAgICAgIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ0NvcHkgY29uZmlncyB0byBvdGhlciBjb25maWdzJywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnY29weXxjb3B5JywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAnY29weXxjb3B5LWV4YW1wbGUnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdlbmFibGUnLAotICAgICdhY3Rpb24nICAgICAgICAgICAgICA6ICdsZWdhY3ktY2xpJywKLSAgICAnb2JqLXR5cGUnICAgICAgICAgICAgOiAnY29weScsCi0gICAgJ2FyZ3MnOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgOiAnc291cmNlJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICA6ICdjb25maWcnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgIDogJ2NvbXBsZXRlLWNvbmZpZy1jb3B5JywKLSAgICAgICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICA6ICdzb3VyY2Ugc3BlY2lmaWVyJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICA6ICdjb3B5fGNvcHktc291cmNlJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJzogVHJ1ZSwKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgOiAnZGVzdCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICA6ICdjb21wbGV0ZS1jb25maWctY29weScsCi0gICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgOiAnZGVzdGluYXRpb24gc3BlY2lmaWVyJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICA6ICdjb3B5fGNvcHktZGVzdCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICkKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLQotV1JJVEVfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnd3JpdGUnLAotICAgICduby1zdXBwb3J0ZWQnICAgICAgICA6IEZhbHNlLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdXcml0ZSBjb25maWcgdG8gbWVtb3J5IG9yIHRlcm1pbmFsLCBvciBjbGVhcicsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2NvcmV8d3JpdGUnLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdjb3JlfHdyaXRlLWV4YW1wbGUnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdlbmFibGUnLAotICAgICdhY3Rpb24nICAgICAgICAgICAgICA6ICdsZWdhY3ktY2xpJywKLSAgICAnb2JqLXR5cGUnICAgICAgICAgICAgOiAnd3JpdGUnLAotICAgICdhcmdzJzogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgIDogJ3NvdXJjZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgICA6IHsndGVybWluYWwnIDogJ3J1bm5pbmctY29uZmlnJ30sCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgIDogJ1Nob3cgdGhlIGN1cnJlbnQgYWN0aXZlIGNvbmZpZ3VyYXRpb24nLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICA6ICdjb3JlfHdyaXRlLXRlcm1pbmFsJywKLSAgICAgICAgICAgICdhY3Rpb24nICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgICAgICAnb2JqLXR5cGUnICAgIDogJ2NvcHknLAotICAgICAgICAgICAgJ2RvYy1leGFtcGxlJyA6ICd3cml0ZS1zb3VyY2UtKycsCi0gICAgICAgIH0sCi0gICAgKSwKLX0KLQotV1JJVEVfRVJBU0VfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgIDogJ3dyaXRlJywKLSAgICAnbm8tc3VwcG9ydGVkJyAgIDogRmFsc2UsCi0gICAgJ21vZGUnICAgICAgICAgICA6ICdlbmFibGUnLAotICAgICdhcmdzJyAgICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdlcmFzZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICAgOiAoJ2VyYXNlJyksCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRXJhc2Ugc2V0dGluZ3MgYW5kIHJlc3RvcmUgdG8gZmFjdG9yeSBkZWZhdWx0cycsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnY29yZXxmYWN0b3J5LWRlZmF1bHQnLAotICAgICAgICB9Ci0gICAgKSwKLSAgICAnYWN0aW9uJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgOiAnZmFjdG9yeS1kZWZhdWx0JywKLSAgICAgICAgfSwKLSAgICApCi19Ci0iIiIKLUVOQUJMRV9TVUJNT0RFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ2VuYWJsZScsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnbm8tc3VwcG9ydGVkJyAgICAgICAgOiBGYWxzZSwKLSAgICAnaGVscCcgICAgICAgICAgICAgICAgOiAnRW50ZXIgZW5hYmxlIG1vZGUnLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdFbnRlciBlbmFibGUgbW9kZScsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2VuYWJsZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2VuYWJsZS1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnLXN1Ym1vZGUnLAotICAgICdvYmotdHlwZScgICAgICAgICAgICA6IE5vbmUsCi0gICAgJ3BhcmVudC1maWVsZCcgICAgICAgIDogTm9uZSwKLSAgICAnc3VibW9kZS1uYW1lJyAgICAgICAgOiAnZW5hYmxlJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiAoKSwKLX0KLQotQ09ORklHVVJFX1NVQk1PREVfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnY29uZmlndXJlJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnZW5hYmxlJywKLSAgICAnbm8tc3VwcG9ydGVkJyAgICAgICAgOiBGYWxzZSwKLSAgICAnaGVscCcgICAgICAgICAgICAgICAgOiAnRW50ZXIgY29uZmlndXJlIG1vZGUnLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdFbnRlciBjb25maWd1cmUgbW9kZScsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2NvbmZpZycsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2NvbmZpZy1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnLXN1Ym1vZGUnLAotICAgICdvYmotdHlwZScgICAgICAgICAgICA6IE5vbmUsCi0gICAgJ3BhcmVudC1maWVsZCcgICAgICAgIDogTm9uZSwKLSAgICAnc3VibW9kZS1uYW1lJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICd0b2tlbicgICAgICAgICAgIDogJ3Rlcm1pbmFsJywKLSAgICAgICAgJ29wdGlvbmFsJyAgICAgICAgOiAndHJ1ZScsCi0gICAgfSwKLX0KLSIiIgotREVCVUdfQ0xJX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ2RlYnVnJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiBbJ2xvZ2luJywgJ2VuYWJsZScsICdjb25maWcqJ10sCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ01hbmFnZSB2YXJpb3VzIGNsaSBkZWJ1Z2dpbmcgZmVhdHVyZXMnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdkZWJ1Z3xkZWJ1Zy1jbGknLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdkZWJ1Z3xkZWJ1Zy1jbGktZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgICAgICAgIDogewotICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgIDogJ2NsaScsCi0gICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogJ2NsaS1zZXQnLAotICAgICAgICAgICAgICAgICduby1hY3Rpb24nICA6ICdjbGktdW5zZXQnLAotICAgICAgICAgICAgICAgICd2YXJpYWJsZScgICA6ICdkZWJ1ZycsCi0gICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0Rpc3BsYXkgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBlcnJvcnMnLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdkZWJ1Z3xjbGknLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnY2xpLWJhY2t0cmFjZScsCi0gICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogJ2NsaS1zZXQnLAotICAgICAgICAgICAgICAgICduby1hY3Rpb24nICA6ICdjbGktdW5zZXQnLAotICAgICAgICAgICAgICAgICd2YXJpYWJsZScgICA6ICdjbGktYmFja3RyYWNlJywKLSAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRGlzcGxheSBiYWNrdHJhY2UgaW5mb3JtYXRpb24gb24gZXJyb3JzJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnZGVidWd8Y2xpLWJhY2t0cmFjZScsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdjbGktYmF0Y2gnLAotICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdjbGktc2V0JywKLSAgICAgICAgICAgICAgICAnbm8tYWN0aW9uJyAgOiAnY2xpLXVuc2V0JywKLSAgICAgICAgICAgICAgICAndmFyaWFibGUnICAgOiAnY2xpLWJhdGNoJywKLSAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRGlzYWJsZSBhbnkgcHJvbXB0cyB0byBhbGxvdyBzaW1wbGVyIGJhdGNoIHByb2Nlc3NpbmcnLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdkZWJ1Z3xjbGktYmF0Y2gnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnZGVzY3JpcHRpb24nLAotICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdjbGktc2V0JywKLSAgICAgICAgICAgICAgICAnbm8tYWN0aW9uJyAgOiAnY2xpLXVuc2V0JywKLSAgICAgICAgICAgICAgICAndmFyaWFibGUnICAgOiAnZGVzY3JpcHRpb24nLAotICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdEaXNwbGF5IHZlcmJvc2UgZGVidWcgaW5mb3JtYXRpb24gd2hpbGUgcHJvY2Vzc2luZyBjb21tYW5kcycsCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2RlYnVnfGRlc2NyaXB0aW9uJywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAncmVzdCcsCi0gICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdjbGktc2V0JywKLSAgICAgICAgICAgICAgICAgICAgJ25vLWFjdGlvbicgIDogJ2NsaS11bnNldCcsCi0gICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZScgICA6ICdyZXN0JywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0Rpc3BsYXkgVVJMcyBvZiBhbnkgaW5mb3JtYXRpb24gcmV0cmlldmVkIHZpYSBSRVNUJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2RlYnVnfHJlc3QnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnICAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2RldGFpbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgICAgICAgOiAoJ2RldGFpbHMnLCAnYnJpZWYnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICAgICA6ICdEaXNwbGF5IGJvdGggVVJMcyBhbmQgcmV0dXJuZWQgY29udGVudCBmb3IgUkVTVCByZXF1ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnZGVidWd8ZGVidWctY2xpLXJlc3QtZm9ybWF0JywKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAncmVjb3JkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFnJyAgICAgICAgICAgICA6ICdyZWNvcmQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgOiAncmVjb3JkIHJlc3QgYXBpIGFjdGl2aXRpeScsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdweXRob24nLAotICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdzaGVsbC1jb21tYW5kJywKLSAgICAgICAgICAgICAgICAnY29tbWFuZCcgICAgOiAncHl0aG9uJywKLSAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRW50ZXIgYSBweXRob24gc2hlbGwnLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdkZWJ1Z3xweXRob24nLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnYmFzaCcsCi0gICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogJ3NoZWxsLWNvbW1hbmQnLAotICAgICAgICAgICAgICAgICdjb21tYW5kJyAgICA6ICdiYXNoJywKLSAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRW50ZXIgYSBiYXNoIHNoZWxsJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnZGVidWd8YmFzaCcsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdjYXNzYW5kcmEtY2xpJywKLSAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnc2hlbGwtY29tbWFuZCcsCi0gICAgICAgICAgICAgICAgJ2NvbW1hbmQnICAgIDogJ2Nhc3NhbmRyYS1jbGknLAotICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdFbnRlciBhIGNhc3NhbmRyYSBzaGVsbCcsCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2RlYnVnfGFzc2FuZHJhLWNsaScsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICduZXRjb25maWcnLAotICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdzaGVsbC1jb21tYW5kJywKLSAgICAgICAgICAgICAgICAnY29tbWFuZCcgICAgOiAnbmV0Y29uZmlnJywKLSAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRW50ZXIgYSBuZXRjb25maWcgc2hlbGwnLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdkZWJ1Z3xuZXRjb25maWcnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICMgIHRjcGR1bXAgcmVxdWlyZXMgdGhhdCB0aGUgJ3RhaWwnIG9mIHRoZSBkZWJ1ZyBjb21tYW5kIGJlIHRjcGR1bXAgc3ludGF4LAotICAgICAgICAgICAgIyAgYnV0IHRoYXQgd291bGQgbWVhbiBkZXNjcmliaW5nIHRoZSBjb21wbGV0ZSB0Y3BkdW1wIHN5bnRheCBoZXJlLCBhbmQgcGFyc2luZyBpdAotICAgICAgICAgICAgIyB7Ci0gICAgICAgICAgICAgICAgIyAndG9rZW4nICAgOiAndGNwZHVtcCcsCi0gICAgICAgICAgICAgICAgIyAnYWN0aW9uJyAgOiAnc2hlbGwtY29tbWFuZCcsCi0gICAgICAgICAgICAgICAgIyAnY29tbWFuZCcgOiAnL29wdC9zZG5wbGF0Zm9ybS9zeXMvYmluL2JzY25ldGNvbmZpZycsCi0gICAgICAgICAgICAjIH0sCi0gICAgICAgICkKLSAgICB9Ci19Ci0KLQotSEFfQ09ORklHX0NMSV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdoYScsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ0NvbmZpZ3VyZSBoaWdoIGF2YWlsYWJpbGl0eScsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2hhfGhhLXZycnAnLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdoYXxoYS12cnJwLWV4YW1wbGUnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdjb25maWcqJywKLSAgICAnZmVhdHVyZScgICAgICAgICAgICAgOiAnaGEnLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2NsdXN0ZXItbnVtYmVyJywKLSAgICAgICAgICAgICAgICAndGFnJyAgICAgICAgICAgICA6ICdjbHVzdGVyLW51bWJlcicsCi0gICAgICAgICAgICAgICAgJ2Jhc2UtdHlwZScgICAgICAgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAgICAgJ3JhbmdlJyAgICAgICAgICAgOiAoMSwgMjU1KSwKLSAgICAgICAgICAgICAgICAnY29tcGxldGlvbi10ZXh0JyA6ICcxLTI1NScsCi0gICAgICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgICAgOiAiRW50ZXIgYSBzbWFsbCBpbnRlZ2VyICgxLTI1NSkgdG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGNvbnRyb2xsZXIgY2x1c3RlcnMiLAotICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgICAgIDogJ1NldCB0aGUgVlJSUCBjbHVzdGVyIG51bWJlcicsCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnaGF8aGEtY2x1c3Rlci1udW1iZXInLAotICAgICAgICAgICAgICAgICdvYmotdHlwZScgICAgICAgIDogJ2dsb2JhbC1jb25maWcnLAotICAgICAgICAgICAgICAgICdvYmotaWQnICAgICAgICAgIDogJ2dsb2JhbCcsCi0gICAgICAgICAgICAgICAgJ2RlZmF1bHQtZm9yLW5vJyAgOiAxLAotICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICAgICAgIDogJ3dyaXRlLWZpZWxkcy1leHBsaWNpdCcsCi0gICAgICAgICAgICAgICAgJ25vLWFjdGlvbicgICAgICAgOiAncmVzZXQtZmllbGRzLWV4cGxpY2l0JywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICkKLSAgICB9Ci19Ci0KLUhBX0NMSV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdoYScsCi0gICAgJ25vLXN1cHBvcnRlZCcgICAgICAgIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ1BlcmZvcm0gYWN0aW9ucyByZWxhdGVkIHRvIGhpZ2ggYXZhaWxhYmlsaXR5JywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnaGF8aGEtZmFpbG92ZXInLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdoYXxoYS1mYWlsb3Zlci1leGFtcGxlJywKLSAgICAnZmVhdHVyZScgICAgICAgICAgICAgOiAnaGEnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdlbmFibGUnLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICd0b2tlbicgICA6ICdmYWlsb3ZlcicsCi0gICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnOiAnVHJpZ2dlciBhIGZhaWx1cmUgb2YgdGhlIGN1cnJlbnQgbm9kZScsCi0gICAgICAgICAgICAgICAgJ3BhdGgnICAgIDogJ3N5c3RlbS9oYS9mYWlsYmFjaycsCi0gICAgICAgICAgICAgICAgJ2FjdGlvbicgIDogKAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgICA6ICdjb25maXJtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9tcHQnIDogJ0ZhbGxiYWNrIHdpbGwgY2hhbmdlIHRoZSBIQSBvcGVyYXRpbmcgbW9kZSwnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnRlciAieWVzIiAob3IgInkiKSB0byBjb250aW51ZTonLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAncmVzdC1wb3N0LWRhdGEnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyA6ICdwcm92aXNpb24nLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICA6ICdpcCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgIDogJ2lwLWFkZHJlc3Mtbm90LW1hc2snLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgICA6ICdjb25maXJtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvbXB0JyA6ICJDb25maXJtIHRvIGNvbnRpbnVlIGFkZGl0aW9uIG9mIG5ldyBpcCwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VudGVyICJ5ZXMiIChvciAieSIpIHRvIGNvbnRpbnVlOicsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdyZXN0LXBvc3QtZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhdGgnIDogJ3N5c3RlbS9oYS9wcm92aXNpb24nCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0b2tlbicgOiAnZGVjb21taXNzaW9uJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgICAgIDogJ2NvbnRyb2xsZXItZGVjb21taXNzaW9uJywKLSAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgICAgIDogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgICAgICA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICAgOiAnaWQnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgICA6ICdjb21wbGV0ZS1hbGlhcy1jaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyAgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgOiAnY29udHJvbGxlcnxjb250cm9sbGVyLW5vZGUtbmFtZScsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICksCi0gICAgICAgICkKLSAgICB9Ci19Ci0KLQotU0hPV19IQV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdzaG93JywKLSAgICAnbm8tc3VwcG9ydGVkJyAgICAgICAgOiBGYWxzZSwKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnU2hvdyBoaWdoIGF2YWlsYWJpbGl0eSBjb25maWd1cmF0aW9uJywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnaGF8c2hvdycsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2hhfHNob3ctZXhhbXBsZScsCi0gICAgJ2ZlYXR1cmUnICAgICAgICAgICAgIDogJ2hhJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnbG9naW4nLAotICAgICdvYmotdHlwZScgICAgICAgICAgICA6ICdnbG9iYWwtY29uZmlnJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2FjdGlvbicgICAgICAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgIH0sCi0gICAgICAgICMgYm9ycm93ZWQgZnJvbSBjb250cm9sbGVyLW5vZGUsIHdvdWxkIGJlIGJldHRlciB0bwotICAgICAgICAjIGhhdmUgdGhpcyBpbiBjb21tb24gY29kZQotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgICAgIDogJ3F1ZXJ5LXRhYmxlJywKLSAgICAgICAgICAgICdvYmotdHlwZScgOiAnY29udHJvbGxlci1ub2RlJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnICAgICAgICAgOiAnam9pbi10YWJsZScsCi0gICAgICAgICAgICAnb2JqLXR5cGUnICAgICA6ICdjb250cm9sbGVyLWFsaWFzJywKLSAgICAgICAgICAgICdrZXknICAgICAgICAgIDogJ2NvbnRyb2xsZXInLAotICAgICAgICAgICAgJ2pvaW4tZmllbGQnICAgOiAnaWQnLCAjIGZpZWxkIGluIHF1ZXJpZWQgaXRlbXMKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnICAgICAgIDogJ2pvaW4tcmVzdCcsCi0gICAgICAgICAgICAndXJsJyAgICAgICAgOiAnc3lzdGVtL2NvbnRyb2xsZXInLAotICAgICAgICAgICAgJ3Jlc3QtdHlwZScgIDogJ2RpY3Qtd2l0aC1pZCcsCi0gICAgICAgICAgICAna2V5JyAgICAgICAgOiAnaWQnLAotICAgICAgICAgICAgJ2pvaW4tZmllbGQnIDogJ2lkJywKLSAgICAgICAgICAgICdhZGQtZmllbGQnICA6ICdtZScsCi0gICAgICAgIH0sCi0gICAgICAgICMgbmVlZCBhIGRlc2NyaXB0aW9uIG1lY2hhbmlzbSB0byBqb2luIGhhLXJvbGUsIHdoaWNoCi0gICAgICAgICMgbmVlZHMgdG8gc2VuZCB1cmxzIHRvIGNvbnRyb2xsZXItbm9kZSBpbnRlcmZhY2VzCi0gICAgICAgICMgaWU6IHRoZSByZXN0IGFjdGlvbnMgYWx3YXVzIHVzZSB0aGUgbG9jYWwgY29udHJvbGxlcgotICAgICAgICAjICh1cHRpbWUgaGFzIHRoZSBzYW1lIGlzc3VlKQotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgICAgICAgOiAnZGlzcGxheScsCi0gICAgICAgICAgICAndGl0bGUnICAgICAgOiAnXG5Db250cm9sbGVyIE5vZGVzXG4nLAotICAgICAgICAgICAgJ2Zvcm1hdCcgICAgIDogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgICAgIH0KLSAgICApLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6ICgKLSAgICAgICAgJ2hhJywKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICA6IFRydWUsCi0gICAgICAgICAgICAnZmllbGQnICAgICAgIDogJ2RldGFpbCcsCi0gICAgICAgICAgICAndHlwZScgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgICA6ICdkZXRhaWxzJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICAgOiAnZm9ybWF0fGRldGFpbHMnLAotICAgICAgICB9LAotCi0gICAgKQotfQotCi1CT09UX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICA6ICdib290JywKLSAgICAnbm8tc3VwcG9ydGVkJyAgIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgICA6ICdDb25maWd1cmUgc3lzdGVtIGJvb3Qgb3B0aW9ucycsCi0gICAgJ2RvYycgICAgICAgICAgICA6ICdjb3JlfGJvb3QnLAotICAgICdkb2MtZXhhbXBsZScgICAgOiAnY29yZXxib290LWV4YW1wbGUnLAotICAgICdtb2RlJyAgICAgICAgICAgOiAnZW5hYmxlJywKLSAgICAnYXJncycgICAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgOiAnZmFjdG9yeS1kZWZhdWx0JywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICgnZmFjdG9yeS1kZWZhdWx0JyksCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRXJhc2Ugc2V0dGluZ3MgYW5kIHJlc3RvcmUgdG8gZmFjdG9yeSBkZWZhdWx0cycsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnY29yZXxmYWN0b3J5LWRlZmF1bHQnLAotICAgICAgICB9Ci0gICAgKSwKLSAgICAnYWN0aW9uJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgOiAnZmFjdG9yeS1kZWZhdWx0JywKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLVJFTE9BRF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgOiAncmVsb2FkJywKLSAgICAnbm8tc3VwcG9ydGVkJyAgIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgICA6ICdSZWxvYWQgYW5kIHJlYm9vdCcsCi0gICAgJ2RvYycgICAgICAgICAgICA6ICdjb3JlfHJlbG9hZCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgICA6ICdjb3JlfHJlbG9hZC1leGFtcGxlJywKLSAgICAnbW9kZScgICAgICAgICAgIDogJ2VuYWJsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgICA6ICgpLAotICAgICdvYmotdHlwZScgICAgICAgOiAncmVsb2FkJywKLSAgICAnYWN0aW9uJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgICA6ICdjb25maXJtJywKLSAgICAgICAgICAgICdwcm9tcHQnIDogJ0NvbmZpcm0gUmVsb2FkICh5ZXMgdG8gY29udGludWUpICcKLSAgICAgICAgfSwKLSAgICAgICAgIyBYWFggd2hhdCBhYm91dCBjaGVja2luZyB0byBzZWUgaWYgdGhlIHJ1bm5pbmctY29uZmlnCi0gICAgICAgICMgaGFzIGJlZW4gY29waWVkIHRvIHRoZSBzdGFydHVwIGNvbmZpZz8KLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnIDogJ3F1ZXJ5LXJlc3QnLAotICAgICAgICAgICAgJ3VybCcgIDogJ3N5c3RlbS9yZWxvYWQnCi0gICAgICAgIH0sCi0gICAgKQotfQotCi1VUEdSQURFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICA6ICd1cGdyYWRlJywKLSAgICAnbm8tc3VwcG9ydGVkJyAgIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgICA6ICdNYW5hZ2UgdGhlIGNvbnRyb2xsZXIgdXBncmFkZSBwcm9jZXNzJywKLSAgICAnZG9jJyAgICAgICAgICAgIDogJ2NvcmV8dXBncmFkZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgICA6ICdjb3JlfHVwZ3JhZGUtZXhhbXBsZScsCi0gICAgJ21vZGUnICAgICAgICAgICA6ICdlbmFibGUnLAotICAgICdhcmdzJyAgICAgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2ZvcmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAoJ2ZvcmNlJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0lnbm9yZSB2YWxpZGF0aW9uIGVycm9ycyBhbmQgdXBncmFkZSBhbnl3YXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdjb3JlfHVwZ3JhZGUtZm9yY2UnCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdkZXRhaWxzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAoJ2RldGFpbHMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRGlzcGxheSBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSB1cGdyYWRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnY29yZXx1cGdyYWRlLWRldGFpbHMnCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgKSwKLSAgICAnb2JqLXR5cGUnICAgICAgIDogJ3VwZ3JhZGUnLAotICAgICdhY3Rpb24nICAgICAgICAgOiAnY29udHJvbGxlci11cGdyYWRlJywKLX0KLQotVVBHUkFERV9BQk9SVF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgOiAndXBncmFkZScsCi0gICAgJ25vLXN1cHBvcnRlZCcgICA6IEZhbHNlLAotICAgICdzaG9ydC1oZWxwJyAgICAgOiAnTWFuYWdlIHRoZSBjb250cm9sbGVyIHVwZ3JhZGUgcHJvY2VzcycsCi0gICAgJ21vZGUnICAgICAgICAgICA6ICdlbmFibGUnLAotICAgICdkb2MtZXhhbXBsZScgICAgOiAnY29yZXx1cGdyYWRlLWFib3J0LWV4YW1wbGUnLAotICAgICdvYmotdHlwZScgICAgICAgOiAndXBncmFkZScsCi0gICAgJ2FyZ3MnICAgICAgICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2Fib3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnYWJvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdBYm9ydCBhbiB1cGdyYWRlIGFscmVhZHkgaW5zdGFsbGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnY29yZXx1cGdyYWRlLWFib3J0JwotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAnYWN0aW9uJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgICA6ICdjb25maXJtJywKLSAgICAgICAgICAgICdwcm9tcHQnIDogJ0NvbmZpcm0gdG8gYWJvcnQgYW4gdXBncmFkZSBhbHJlYWR5IGluc3RhbGxlZCdcCi0gICAgICAgICAgICAgICAgJyBvbnRvIHNlY29uZCBwYXJ0aXRpb25cbidcCi0gICAgICAgICAgICAgICAgJ2VudGVyICJ5ZXMiIChvciAieSIpIHRvIGNvbnRpbnVlOicsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyA6ICdyZXN0LXBvc3QtZGF0YScsCi0gICAgICAgICAgICAncGF0aCcgOiAnc3lzdGVtL3VwZ3JhZGUvYWJvcnQnCi0gICAgICAgIH0sCi0gICAgKQotfQotCi1ST0xMQkFDS19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgOiAncm9sbGJhY2snLAotICAgICduby1zdXBwb3J0ZWQnICAgOiBGYWxzZSwKLSAgICAnc2hvcnQtaGVscCcgICAgIDogJ3JvbGxiYWNrIGNsdXN0ZXIgdG8gc3BlY2lmaWVkIGNvbmZpZycsCi0gICAgJ21vZGUnICAgICAgICAgICA6ICdlbmFibGUnLAotICAgICdkb2MtZXhhbXBsZScgICAgOiAnY29yZXxyb2xsYmFjay1jb25maWctZXhhbXBsZScsCi0gICAgJ29iai10eXBlJyAgICAgICA6ICdyb2xsYmFjaycsCi0gICAgJ2FyZ3MnICAgICAgICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdzb3VyY2UgZGlyZWN0b3J5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogKCdpbWFnZXM6Ly8nLCAnc2F2ZWQtY29uZmlnczovLycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgIDogJ2ZpbGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdjb25maWcgZmlsZSBuYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICdhY3Rpb24nICAgICAgICAgOiAnY29udHJvbGxlci1jb25maWctcm9sbGJhY2snCi19Ci0KLQotY29tbWFuZC5hZGRfYWN0aW9uKCdpbXBsZW1lbnQtY29ubmVjdCcsIGNvbW1hbmQuc2Ruc2guaW1wbGVtZW50X2Nvbm5lY3QsCi0gICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyAgICAgIDogJyRkYXRhJyx9fSkKLQotCi1DT05ORUNUX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnY29ubmVjdCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICduby1zdXBwb3J0ZWQnIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnQ29ubmVjdCB0byBhIGNvbnRyb2xsZXJcJ3MgUkVTVCBBUEknLAotICAgICdkb2MnICAgICAgICAgIDogJ2Nvbm5lY3R8Y29ubmVjdCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnY29ubmVjdHxjb25uZWN0LWV4YW1wbGUnLAotICAgICdvYmotdHlwZScgICAgIDogJ2NvbnRyb2xsZXItbm9kZScsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnaW1wbGVtZW50LWNvbm5lY3QnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnY2hvaWNlcyc6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2NvbnRyb2xsZXItaWQnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdvYmotdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgICAgIDogJ2NvbXBsZXRlLWFsaWFzLWNob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uLXRleHQnIDogJ2NvbnRyb2xsZXIgaWQgb3IgYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICAgICA6ICdjb250cm9sbGVyLWlkJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnY29ubmVjdHxjb25uZWN0LWlkJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2lwLWFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICAgICA6ICdjb21wbGV0ZS1hbGlhcy1jaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbi10ZXh0JyA6ICdpcCBhZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgOiAnY29udHJvbGxlci1pZCcsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgIDogJ2Nvbm5lY3R8Y29ubmVjdC1pcCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICksCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgOiAncG9ydCcsCi0gICAgICAgICAgICAndGFnJyAgICAgIDogJ3BvcnQnLAotICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICdyYW5nZScgICAgOiAoMSw2NTUzNSksCi0gICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICdkb2MnICAgICAgOiAnY29ubmVjdHxjb25uZWN0LXBvcnQnCi0gICAgICAgIH0sCi0gICAgKQotfQotCi1jb21tYW5kLmFkZF9hY3Rpb24oJ2ltcGxlbWVudC1waW5nJywgY29tbWFuZC5zZG5zaC5pbXBsZW1lbnRfcGluZywKLSAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J2RhdGEnICAgICAgOiAnJGRhdGEnLH19KQotCi1QSU5HX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAncGluZycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICduby1zdXBwb3J0ZWQnIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAncGluZyBhIHN3aXRjaCBvciBpcCBhZGRyZXNzJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdwaW5nfHBpbmcnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Bpbmd8cGluZy1leGFtcGxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdzd2l0Y2hlcycsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnaW1wbGVtZW50LXBpbmcnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdjb3VudCcsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgICAgIDogJ2NvdW50JywKLSAgICAgICAgICAgICdvcHRpb25hbCcgICAgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICdjb21wbGV0aW9uLXRleHQnIDogJ3BpbmcgY291bnQnLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAncGluZ3xwaW5nLWNvdW50JwotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ3Jlc29sdmFibGUtaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAnY29tcGxldGlvbi10ZXh0JyA6ICdpcC1hZGRyZXNzIHBpbmcgdGFyZ2V0JywKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgICAgIDogJ3N3aXRjaGVzfGRwaWQnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgICAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgICAgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAndHlwZXN8cmVzb2x2YWJsZS1pcC1hZGRyZXNzJwotICAgICAgICB9LAotICAgICksCi19Ci0KLQotY29tbWFuZC5hZGRfYWN0aW9uKCdpbXBsZW1lbnQtdHJhY2Vyb3V0ZScsIGNvbW1hbmQuc2Ruc2guaW1wbGVtZW50X3RyYWNlcm91dGUsCi0gICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyAgICAgIDogJyRkYXRhJyx9fSkKLQotVFJBQ0VST1VURV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3RyYWNlcm91dGUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0RldGVybWluZSB0aGUgTDMgcGF0aCB0byBzb21lIGRlc3RpbmF0aW9uJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd0cmFjZXJvdXRlfHRyYWNlcm91dGUnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3RyYWNlcm91dGV8dHJhY2Vyb3V0ZS1leGFtcGxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdzd2l0Y2hlcycsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnaW1wbGVtZW50LXRyYWNlcm91dGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ3Jlc29sdmFibGUtaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAnY29tcGxldGlvbi10ZXh0JyA6ICdpcC1hZGRyZXNzIHBpbmcgdGFyZ2V0JywKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgICAgIDogJ3N3aXRjaGVzfGRwaWQnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgICAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgICAgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAndHlwZXN8cmVzb2x2YWJsZS1pcC1hZGRyZXNzJwotICAgICAgICB9LAotICAgICksCi19Ci0KLVNFVF9DTElfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzZXQnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ01hbmFnZSBDTEkgc2Vzc2lvbnMgc2V0dGluZ3MnLAotICAgICdkb2MnICAgICAgICAgIDogJ3NldHxzZXQnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3NldHxzZXQtZXhhbXBsZScsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnY2xpLXNldCcsCi0gICAgJ3ZhcmlhYmxlJyAgICAgOiAnc2V0JywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ2xlbmd0aCcsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2xlbmd0aCcsCi0gICAgICAgICAgICAgICAgICAgICdiYXNlLXR5cGUnIDogJ2ludGVnZXInLAotICAgICAgICAgICAgICAgICAgICAncmFuZ2UnICAgICA6ICgwLDUxMiksCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2xlbmd0aCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICA6ICd0ZXJtJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKQotICAgICAgICB9LAotICAgICksCi19Ci0jIiIiCi0jCi0jIEZPUk1BVFMgCi0jCi0KLWltcG9ydCBmbXRjbnYKLQotIiIiCi1HTE9CQUxfQ09ORklHX0ZPUk1BVCA9IHsKLSAgICAnZ2xvYmFsLWNvbmZpZycgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RldGFpbHMnICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsdXN0ZXItbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdjbHVzdGVyLW51bWJlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdoYS1lbmFibGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RlZmF1bHQnICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsdXN0ZXItbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdjbHVzdGVyLW51bWJlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdoYS1lbmFibGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICB9LAotCi0gICAgICAgICdmaWVsZHMnICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICdjbHVzdGVyLW5hbWUnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQ2x1c3RlciBOYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdjbHVzdGVyLW51bWJlcicgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQ2x1c3RlciBOdW1iZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2hhLWVuYWJsZWQnICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdIQSBFbmFibGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAgICB9LAotfQotCi0KLUZFQVRVUkVfRk9STUFUID0gewotICAgICdmZWF0dXJlJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV0dmlydC1mZWF0dXJlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRpYy1mbG93LXB1c2hlci1mZWF0dXJlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BlcmZvcm1hbmNlLW1vbml0b3ItZmVhdHVyZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLQotICAgICAgICAnZmllbGRzJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICduZXR2aXJ0LWZlYXR1cmUnICAgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVk5TIEZlYXR1cmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2VfYm9vbGVhbl93aXRoX2VuYWJsZV9kaXNhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3N0YXRpYy1mbG93LXB1c2hlci1mZWF0dXJlJyAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1N0YXRpYyBGbG93IFB1c2hlciBGZWF0dXJlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZXBsYWNlX2Jvb2xlYW5fd2l0aF9lbmFibGVfZGlzYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdwZXJmb3JtYW5jZS1tb25pdG9yLWZlYXR1cmUnIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQZXJmb3JtYW5jZSBNb25pdG9yaW5nIEZlYXR1cmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2VfYm9vbGVhbl93aXRoX2VuYWJsZV9kaXNhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICB9Ci0gICAgfSwKLX0KLQotTElOS19GT1JNQVQgPSB7Ci0gICAgJ2xpbmsnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsICdzcmMtc3dpdGNoJywgJ3NyYy1wb3J0JywgJ3NyYy1wb3J0LXN0YXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lkeCcsICdkc3Qtc3dpdGNoJywgJ2RzdC1wb3J0JywgJ2RzdC1wb3J0LXN0YXRlJywgJ2xpbmstdHlwZScgXQotICAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ3NyYy1wb3J0JyAgICAgICA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnRfc3JjX3N3aXRjaCB9LAotICAgICAgICAgICAgJ2RzdC1wb3J0JyAgICAgICA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnRfZHN0X3N3aXRjaCB9LAotICAgICAgICAgICAgJ3NyYy1zd2l0Y2gnICAgICA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcyB9LAotICAgICAgICAgICAgJ2RzdC1zd2l0Y2gnICAgICA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcyB9LAotICAgICAgICAgICAgJ3NyYy1wb3J0LXN0YXRlJyA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfc3RhdGUgfSwKLSAgICAgICAgICAgICdkc3QtcG9ydC1zdGF0ZScgOiB7ICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X3N0YXRlIH0sCi0gICAgICAgICAgICAnbGluay10eXBlJyAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdMaW5rIFR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLUNPTkZJR19GT1JNQVQgPSB7Ci0gICAgJ2NvbmZpZycgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWydJZHgnLCAnbmFtZScsICdsZW5ndGgnLCAndmVyc2lvbicsICd0aW1lc3RhbXAnIF0sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICduYW1lJyAgICAgOiB7ICdwcmltYXJ5X2tleSc6IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ZlcnNpb24nICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2xlbmd0aCcgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLX0KLQotCi1URVNUX1BLVElOX1JPVVRFX0ZPUk1BVCA9IHsKLSAgICAndGVzdC1wa3Rpbi1yb3V0ZScgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWydJZHgnLCAnY2x1c3RlcicsICdob3AnLCAnZHBpZCcsICdpblBvcnQnLCAnb3V0UG9ydCddLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnY2x1c3RlcicgOiB7J3ZlcmJvc2UtbmFtZScgOiAnQ2x1c3RlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfY2x1c3Rlcl9pZAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdob3AnICAgICA6IHsndmVyYm9zZS1uYW1lJyA6ICdIb3AnCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RwaWQnICAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ1N3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyAgICA6IGZtdGNudi5wcmludF9zd2l0Y2hfYW5kX2FsaWFzLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdpblBvcnQnIDogIHsndmVyYm9zZS1uYW1lJyA6ICdJbnB1dC1JbnRmJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyAgIDogZm10Y252LmRlY29kZV9vcGVuZmxvd19wb3J0X2RwaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ291dFBvcnQnOiAgeyd2ZXJib3NlLW5hbWUnOiAnT3V0cHV0LUludGYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInICAgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnRfZHBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotICAgICAgICB9LAotfQotCi0KLVBFUkZPUk1BTkNFX0RBVEFfRk9STUFUID0gewotICAgICdwZXJmb3JtYW5jZS1kYXRhJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbJ0JrdE5vJywgJ1N0YXJ0VGltZScsICdDb21wTmFtZScsICdQa3RzJywgJ0F2ZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ01pbicsICdNYXgnLCAnU3RkRGV2J10sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICdQa3RzJyAgICAgOiB7J3ZlcmJvc2UtbmFtZSc6ICdQa3RzKicKLSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ0NvbXBOYW1lJyA6IHsndmVyYm9zZS1uYW1lJyA6ICdDb21wb25lbnQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdTdGFydFRpbWUnOiB7J3ZlcmJvc2UtbmFtZScgOiAnU3RhcnQgVGltZScKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLQotRkxPV19DQUNIRV9DT1VOVEVSU19GT1JNQVQgPSB7Ci0gICAgJ2Zsb3ctY2FjaGUtY291bnRlcnMnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZXRhaWxzJyA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwbE5hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhGbG93cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZUNudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luYWN0aXZlQ250JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkQ250JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsQ250JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZhdGVkQ250JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVhY3RpdmF0ZWRDbmQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYWNoZUhpdENudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NDbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmbG93TW9kUmVtb3ZhbE1zZ0xvc3NDbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3RTdG9yZWRGdWxsQ250JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmNPYmpGcmVlZENudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vua25vd25PcGVyQ250JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmxvd0NhY2hlQWxtb3N0RnVsbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotCi0gICAgICAgIH0sCi0KLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnYXBwbE5hbWUnICAgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQXBwbGljYXRpb24gbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbWF4Rmxvd3MnICAgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnTWF4IGZsb3cgY2FjaGUgc2l6ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWN0aXZlQ250JyAgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQWN0aXZlIGVudHJpZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2luYWN0aXZlQ250JyAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0luYWN0aXZlIGVudHJpZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FkZENudCcgICAgICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0FkZCBvcGVyYXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkZWxDbnQnICAgICAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6J0RlbCBvcGVyYXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdhY3RpdmF0ZWRDbnQnICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdBY3RpdmF0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RlYWN0aXZhdGVkQ25kJyAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0RlYWN0aXZhdGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdjYWNoZUhpdENudCcgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdDYWNoZSBoaXRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdtaXNzQ250JyAgICAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdDYWNoZSBtaXNzZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2Zsb3dNb2RSZW1vdmFsTXNnTG9zc0NudCcgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0xvc3QgcmVtb3ZhbCBtZXNzYWdlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbm90U3RvcmVkRnVsbENudCcgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnTm90IHN0b3JlZDsgY2FjaGUgZnVsbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZmNPYmpGcmVlZENudCcgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRnJlZSBjb3VudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndW5rbm93bk9wZXJDbnQnICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVW5rbm93biBvcGVyYXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdmbG93Q2FjaGVBbG1vc3RGdWxsJyAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdDYWNoZSBuZWFyIGZ1bGwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICB9LAotICAgIH0sCi19Ci0KLQotRkxPV19DQUNIRV9GT1JNQVQgPSB7Ci0gICAgJ2Zsb3ctY2FjaGUnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JzogWydJZHgnLCAnQXBwbCcsICdBcHBJbnN0JywgJ1ZMQU4nLCAnUENQJywgJ1NyY01BQycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnRGVzdE1BQycsICdFdGhlclR5cGUnLCAnU3JjSVBBZGRyJywgJ0RzdElQQWRkcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnUHJvdG9jb2wnLCAnVE9TJywgJ1NyY1BvcnQnLCAnRHN0UG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnU291cmNlLVN3aXRjaCcsICdJbnB1dFBvcnQnLCAnV2lsZGNhcmRzJywgJ0FjdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnQ29va2llJywgJ1N0YXRlJywgJ1RpbWUnLCAnU0MnXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ1ZMQU4nICAgICAgICAgICA6IHsnZm9ybWF0dGVyJyA6IGZtdGNudi5jb252ZXJ0X3NpZ25lZF9zaG9ydF9mb3JfdmxhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnU291cmNlLVN3aXRjaCcgIDogeydmb3JtYXR0ZXInIDogZm10Y252LnByaW50X3N3aXRjaF9hbmRfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ0lucHV0UG9ydCcgICAgICA6IHsnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfb3BlbmZsb3dfcG9ydF9zb3VyY2Vfc3dpdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdTcmNNQUMnICAgICAgICAgOiB7J2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaG9zdF9hbmRfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ0Rlc3RNQUMnICAgICAgICA6IHsnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9ob3N0X2FuZF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnRXRoZXJUeXBlJyAgICAgIDogeydmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9ldGhlcl90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdQcm90b2NvbCcgICAgICAgOiB7J2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX25ldHdvcmtfcHJvdG9jb2wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ1NyY1BvcnQnICAgICAgICA6IHsnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfc3JjX3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ0RzdFBvcnQnICAgICAgICA6IHsnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfZHN0X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ0Nvb2tpZScgICAgICAgICA6IHsnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfZmxvd19jb29raWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ1RpbWUnICAgICAgICAgICA6IHsnZm9ybWF0dGVyJyA6IGZtdGNudi50aW1lc3RhbXBfdG9fbG9jYWxfdGltZXN0cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotCi1FVl9ISVNUX1RPUE9MT0dZX0ZPUk1BVCA9IHsKLSAgICAnZXYtaGlzdC10b3BvbG9neS1zd2l0Y2gnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsnSWR4JywgJ1RpbWUnLCAnU3dpdGNoJyAsICdJcEFkZHInLCAnUG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1N0YXRlJywgJ0FjdGlvbicsICdSZWFzb24nIF0sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICdUaW1lJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdUaW1lJwotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdTd2l0Y2gnICA6IHsndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInICAgIDogZm10Y252LnByaW50X3N3aXRjaF9hbmRfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnUG9ydCcgICAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnUG9ydCcKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnSXBBZGRyJyAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnSXBBZGRyLicKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnQWN0aW9uJyAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnQWN0aW9uJwotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdSZWFzb24nICA6IHsndmVyYm9zZS1uYW1lJyA6ICdSZWFzb24nCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ1N0YXRlJyAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ1N0YXRlJwotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotCi0KLUVWX0hJU1RfVE9QT0xPR1lfQ0xVU1RFUl9GT1JNQVQgPSB7Ci0gICAgJ2V2LWhpc3QtdG9wb2xvZ3ktY2x1c3RlcicgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWydJZHgnLCAnVGltZScsICdTd2l0Y2gnICwgJ09sZENsdXN0ZXJJZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ05ld0NsdXN0ZXJJZCcsICdTdGF0ZScsICdBY3Rpb24nLCAnUmVhc29uJyBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnVGltZScgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnVGltZScKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnU3dpdGNoJyAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnU3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyAgICA6IGZtdGNudi5wcmludF9zd2l0Y2hfYW5kX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ0FjdGlvbicgIDogeyd2ZXJib3NlLW5hbWUnIDogJ0FjdGlvbicKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnUmVhc29uJyAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnUmVhc29uJwotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdTdGF0ZScgICA6IHsndmVyYm9zZS1uYW1lJyA6ICdTdGF0ZScKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLQotRVZfSElTVF9UT1BPTE9HWV9MSU5LX0ZPUk1BVCA9IHsKLSAgICAnZXYtaGlzdC10b3BvbG9neS1saW5rJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbJ0lkeCcsICdUaW1lJywgJ1NvdXJjZS1Td2l0Y2gnICwgJ0Rlc3QtU3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU3JjUG9ydCcsICdEc3RQb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU3JjUG9ydFN0YXRlJywgJ0RzdFBvcnRTdGF0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1N0YXRlJywgJ0FjdGlvbicsICdSZWFzb24nIF0sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICdUaW1lJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnVGltZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnU291cmNlLVN3aXRjaCcgOiB7J3ZlcmJvc2UtbmFtZScgOiAnU291cmNlLVN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgICAgOiBmbXRjbnYucHJpbnRfc3dpdGNoX2FuZF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdEZXN0LVN3aXRjaCcgICA6IHsndmVyYm9zZS1uYW1lJyA6ICdEZXN0LVN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInICAgIDogZm10Y252LnByaW50X3N3aXRjaF9hbmRfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ1NyY1BvcnQnICAgICAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ1NyY1BvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9vcGVuZmxvd19wb3J0X3NvdXJjZV9zd2l0Y2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnRHN0UG9ydCcgICAgICAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnRHN0UG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnRfZGVzdF9zd2l0Y2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnU3JjUG9ydFN0YXRlJyAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnU3JjUHJ0U3QnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ0RzdFBvcnRTdGF0ZScgIDogeyd2ZXJib3NlLW5hbWUnIDogJ0RzdFBydFN0JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdBY3Rpb24nICAgICAgICA6IHsndmVyYm9zZS1uYW1lJyA6ICdBY3Rpb24nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ1JlYXNvbicgICAgICAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ1JlYXNvbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnU3RhdGUnICAgICAgICAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnU3RhdGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi0KLUVWX0hJU1RfQVRUQUNITUVOVF9QT0lOVF9GT1JNQVQgPSB7Ci0gICAgJ2V2LWhpc3QtYXR0YWNobWVudC1wb2ludCcgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWydJZHgnLCAnVGltZScsICdIb3N0JywgJ1N3aXRjaCcgLCAnUG9ydCcsICdWTEFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQWN0aW9uJywgJ1JlYXNvbicgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ1RpbWVfbnMnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdUaW1lJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ2Zvcm1hdHRlcicgICAgOiBmbXRjbnYudGltZXN0YW1wX25zX3RvX2xvY2FsX3RpbWVzdHIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnSG9zdCcgICAgICAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnSG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyAgICA6IGZtdGNudi5wcmludF9ob3N0X2FuZF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdTd2l0Y2gnICAgICA6IHsndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgICAgOiBmbXRjbnYucHJpbnRfc3dpdGNoX2FuZF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdQb3J0JyAgICAgICA6IHsndmVyYm9zZS1uYW1lJyA6ICdJRicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ1ZMQU4nICAgICAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ1ZMQU4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ0FjdGlvbicgICAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ0FjdGlvbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnUmVhc29uJyAgICAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnUmVhc29uJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotCi1FVl9ISVNUX1BBQ0tFVF9JTl9GT1JNQVQgPSB7Ci0gICAgJ2V2LWhpc3QtcGFja2V0LWluJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbJ0lkeCcsICdUaW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YUxheWVyU291cmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YUxheWVyRGVzdGluYXRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhTGF5ZXJUeXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YUxheWVyVmlydHVhbExhbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIydkYXRhTGF5ZXJWaXJ0dWFsTGFuUHJpb3JpdHlDb2RlUG9pbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdpbnB1dFN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2lucHV0UG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmtTb3VyY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrRGVzdGluYXRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICMnbmV0d29ya1NvdXJjZU1hc2tMZW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICMnbmV0d29ya0Rlc3RpbmF0aW9uTWFza0xlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmtQcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmtUeXBlT2ZTZXJ2aWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNwb3J0U291cmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNwb3J0RGVzdGluYXRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICMnQWN0aW9uJywgJ3JlYXNvbicKLSAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnVGltZScgICAgICAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1RpbWUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnZm9ybWF0dGVyJyAgIDogZm10Y252LnRpbWVzdGFtcF9uc190b19sb2NhbF90aW1lc3RyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3dpbGRjYXJkcycgICAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdXaWxkY2FyZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF9pbnRlZ2VyX3RvX2JpdG1hc2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGF0YUxheWVyU291cmNlJyAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBNQUMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9ob3N0X2FuZF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkYXRhTGF5ZXJEZXN0aW5hdGlvbicgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IE1BQycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X2hvc3RfYW5kX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFMYXllclR5cGUnICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdFdGggVHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9ldGhlcl90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFMYXllclZpcnR1YWxMYW4nICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWTEFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF9zaWduZWRfc2hvcnRfZm9yX3ZsYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGF0YUxheWVyVmlydHVhbExhblByaW9yaXR5Q29kZVBvaW50JyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVkxBTiBQQ1AnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2lucHV0U3dpdGNoJyAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgIDogZm10Y252LnByaW50X3N3aXRjaF9hbmRfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaW5wdXRQb3J0JyAgICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1BvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnRfaW5wdXRTd2l0Y2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya1NvdXJjZScgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBJUCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya0Rlc3RpbmF0aW9uJyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0RzdCBJUCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya1NvdXJjZU1hc2tMZW4nICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBJUCBCaXRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrRGVzdGluYXRpb25NYXNrTGVuJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IElQIEJpdHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ25ldHdvcmtQcm90b2NvbCcgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQcm90by4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfbmV0d29ya19wcm90b2NvbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrVHlwZU9mU2VydmljZScgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVE9TJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0cmFuc3BvcnRTb3VyY2UnICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnTndTUG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9zcmNfcG9ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0cmFuc3BvcnREZXN0aW5hdGlvbicgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnTndEUG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9kc3RfcG9ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdBY3Rpb24nICAgICAgICAgICAgICAgICAgICA6IHsndmVyYm9zZS1uYW1lJyA6ICdBY3Rpb24nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ1JlYXNvbicgICAgICAgICAgICAgICAgICAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ1JlYXNvbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0iIiIKLQotZGVmIHJlYWx0aW1lX2Zsb3dfdGltZW91dChpLCBkYXRhPU5vbmUpOgotICAgIHJldHVybiAoJyVzLyVzJyAlIAotICAgICAgICAgICAgKGZtdGNudi5jb252ZXJ0X3NpZ25lZF9zaG9ydF90b191bnNpZ25lZChkYXRhWydoYXJkVGltZW91dCddKSwKLSAgICAgICAgICAgIGZtdGNudi5jb252ZXJ0X3NpZ25lZF9zaG9ydF90b191bnNpZ25lZChkYXRhWydpZGxlVGltZW91dCddKSkpCi0KLVJFQUxUSU1FX0ZMT1dfRk9STUFUID0gewotICAgICdyZWFsdGltZV9mbG93JyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdJZHgnLCAnc3dpdGNoJywgJ2Nvb2tpZScsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbnMnLCAnZGF0YUxheWVyU291cmNlJywgJ2RhdGFMYXllckRlc3RpbmF0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zsb3ctYnJpZWYnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgJ3Njb3BlZCcgIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAnSWR4JywgJ2Nvb2tpZScsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbnMnLCAnZGF0YUxheWVyU291cmNlJywgJ2RhdGFMYXllckRlc3RpbmF0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zsb3ctYnJpZWYnLAotCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2JyaWVmJyAgIDogWyAnSWR4JywgJ3N3aXRjaCcsICdjb29raWUnLCAnZGF0YUxheWVyU291cmNlJywgJ2RhdGFMYXllckRlc3RpbmF0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmtTb3VyY2UnLCAnbmV0d29ya0Rlc3RpbmF0aW9uJywgJ25ldHdvcmtQcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc3BvcnRTb3VyY2UnLCAndHJhbnNwb3J0RGVzdGluYXRpb24nXSwKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsICdzd2l0Y2gnLCAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywgJ2R1cmF0aW9uU2Vjb25kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWUnLCAnaW5wdXRQb3J0JywgJ2RhdGFMYXllclNvdXJjZScsICdkYXRhTGF5ZXJEZXN0aW5hdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhTGF5ZXJUeXBlJywgJ25ldHdvcmtTb3VyY2UnLCAnbmV0d29ya0Rlc3RpbmF0aW9uJywgJ25ldHdvcmtQcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc3BvcnRTb3VyY2UnLCAndHJhbnNwb3J0RGVzdGluYXRpb24nXSwKLSAgICAgICAgICAgICdzY29wZWQnICA6IFsgJ0lkeCcsICdzd2l0Y2gnLCAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywgJ2R1cmF0aW9uU2Vjb25kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWUnLCAnaW5wdXRQb3J0JywgJ2RhdGFMYXllclNvdXJjZScsICdkYXRhTGF5ZXJEZXN0aW5hdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhTGF5ZXJUeXBlJywgJ25ldHdvcmtTb3VyY2UnLCAnbmV0d29ya0Rlc3RpbmF0aW9uJywgJ25ldHdvcmtQcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc3BvcnRTb3VyY2UnLCAndHJhbnNwb3J0RGVzdGluYXRpb24nXSwKLSAgICAgICAgICAgICdkZXRhaWxzJyA6IFsgJ0lkeCcsICdzd2l0Y2gnLCAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywgJ2R1cmF0aW9uU2Vjb25kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWUnLCAnaGFyZFRpbWVvdXQnLCAnaWRsZVRpbWVvdXQnLCAncHJpb3JpdHknLCAndGFibGVJZCcsICdpbnB1dFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YUxheWVyU291cmNlJywgJ2RhdGFMYXllckRlc3RpbmF0aW9uJywgJ2RhdGFMYXllclR5cGUnLCAnZGF0YUxheWVyVmlydHVhbExhbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhTGF5ZXJWaXJ0dWFsTGFuUHJpb3JpdHlDb2RlUG9pbnQnLCAnbmV0d29ya1NvdXJjZScsICduZXR3b3JrRGVzdGluYXRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29ya1Byb3RvY29sJywgJ3RyYW5zcG9ydFNvdXJjZScsICd0cmFuc3BvcnREZXN0aW5hdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrVHlwZU9mU2VydmljZScsICdhY3Rpb25zJ10sCi0gICAgICAgICAgICAndm5zX2Zsb3cnOiBbICdJZHgnLCAnZGF0YUxheWVyU291cmNlJywgJ2RhdGFMYXllckRlc3RpbmF0aW9uJywgJ2RhdGFMYXllclZpcnR1YWxMYW4nLCAnZGF0YUxheWVyVHlwZSddLAotICAgICAgICAgICAgJ3N1bW1hcnknIDogWyAnSWR4JywgJ3Zuc05hbWUnLCAndm5zRmxvd0NudCcsICdmbG93RW50cnlDbnQnXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAnc3dpdGNoJyAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1N3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2Vfc3dpdGNoX3dpdGhfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZmxvdy1icmllZicgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdNYXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZWFsdGltZV9mbG93X2JyaWVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdmbG93LXRpbWVvdXQnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0gvSScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IHJlYWx0aW1lX2Zsb3dfdGltZW91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYnl0ZUNvdW50JyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnOiAnQnl0ZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbWFyeV9rZXknOlRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncGFja2V0Q291bnQnICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1BhY2tldHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2Nvb2tpZScgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdBdXRob3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfZmxvd19jb29raWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2R1cmF0aW9uU2Vjb25kcycgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEdXIocyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2R1cmF0aW9uTmFub3NlY29uZHMnIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEdXIobnMpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdoYXJkVGltZW91dCcgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnSGFyZCBUaW1lb3V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF9zaWduZWRfc2hvcnRfdG9fdW5zaWduZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaWRsZVRpbWVvdXQnICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0lkbGUgVGltZW91dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfc2lnbmVkX3Nob3J0X3RvX3Vuc2lnbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2xlbmd0aCcgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdMZW5ndGgnCi0gICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdwcmlvcml0eScgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnUHJpb3JpdHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5jb252ZXJ0X3NpZ25lZF9zaG9ydF90b191bnNpZ25lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0YWJsZUlkJyAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVGFibGUnIH0sCi0gICAgICAgICAgICAnd2lsZGNhcmRzJyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1dpbGRjYXJkcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5jb252ZXJ0X2ludGVnZXJfdG9fYml0bWFzawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkYXRhTGF5ZXJTb3VyY2UnICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU3JjIE1BQycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2VfaG9zdF93aXRoX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFMYXllckRlc3RpbmF0aW9uJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IE1BQycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZXBsYWNlX2hvc3Rfd2l0aF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkYXRhTGF5ZXJUeXBlJyAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRXRoZXIgVHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9ldGhlcl90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFMYXllclZpcnR1YWxMYW4nIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWTEFOIElEJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF9zaWduZWRfc2hvcnRfdG9fdW5zaWduZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGF0YUxheWVyVmlydHVhbExhblByaW9yaXR5Q29kZVBvaW50JyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVkxBTiBQQ1AnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2lucHV0UG9ydCcgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdJbiBQb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9vcGVuZmxvd19wb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ25ldHdvcmtTb3VyY2UnICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTcmMgSVAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ25ldHdvcmtEZXN0aW5hdGlvbicgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0RzdCBJUCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya1NvdXJjZU1hc2tMZW4nIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTcmMgSVAgQml0cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya0Rlc3RpbmF0aW9uTWFza0xlbicgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0RzdCBJUCBCaXRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrUHJvdG9jb2wnICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnUHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX25ldHdvcmtfcHJvdG9jb2wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya1R5cGVPZlNlcnZpY2UnIDogeyAndmVyYm9zZS1uYW1lJyA6ICdUT1MgQml0cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHJhbnNwb3J0U291cmNlJyAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBQb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3NyY19wb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RyYW5zcG9ydERlc3RpbmF0aW9uJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX2RzdF9wb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FjdGlvbnMnICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdBY3Rpb25zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9hY3Rpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3Zuc05hbWUnICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWTlMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3Zuc0Zsb3dDbnQnICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdGbG93cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZmxvd0VudHJ5Q250JyAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0Zsb3ctRW50cmllcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLVJFQUxUSU1FX1RBQkxFX0lQX0ZMT1dfRk9STUFUID0gewotICAgICdyZWFsdGltZV90YWJsZV9pcF9mbG93JyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdJZHgnLCAgJ2Nvb2tpZScsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywncHJpb3JpdHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29ya0Rlc3RpbmF0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zsb3ctYnJpZWYnLCdhY3Rpb25zJwotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdzY29wZWQnICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lkeCcsICAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywgJ2R1cmF0aW9uU2Vjb25kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWUnLCdwcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrRGVzdGluYXRpb24nLCAnYWN0aW9ucycKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnYnJpZWYnICAgOiBbICdJZHgnLCAgJ2J5dGVDb3VudCcsICdwYWNrZXRDb3VudCcsICdkdXJhdGlvblNlY29uZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnY29va2llJywncHJpb3JpdHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29ya0Rlc3RpbmF0aW9uJywgJ2FjdGlvbnMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywgJ2R1cmF0aW9uU2Vjb25kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWUnLCdwcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrRGVzdGluYXRpb24nLCAnYWN0aW9ucycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdzY29wZWQnICA6IFsgJ0lkeCcsICdieXRlQ291bnQnLCAncGFja2V0Q291bnQnLCAnZHVyYXRpb25TZWNvbmRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nvb2tpZScsJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmtEZXN0aW5hdGlvbicsICdhY3Rpb25zJwotICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RldGFpbHMnIDogWyAnSWR4JywgJ2J5dGVDb3VudCcsICdwYWNrZXRDb3VudCcsICdkdXJhdGlvblNlY29uZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnY29va2llJywncHJpb3JpdHknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrRGVzdGluYXRpb24nLCAnYWN0aW9ucycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICMndm5zX2Zsb3cnOiBbICdJZHgnLCAnZGF0YUxheWVyU291cmNlJywgJ2RhdGFMYXllckRlc3RpbmF0aW9uJywgJ2RhdGFMYXllclZpcnR1YWxMYW4nLCAnZGF0YUxheWVyVHlwZSddLAotICAgICAgICAgICAgIydzdW1tYXJ5JyA6IFsgJ0lkeCcsICd2bnNOYW1lJywgJ3Zuc0Zsb3dDbnQnLCAnZmxvd0VudHJ5Q250J10sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJzogewotICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZXBsYWNlX3N3aXRjaF93aXRoX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2Zsb3ctYnJpZWYnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnTWF0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVhbHRpbWVfZmxvd19icmllZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZmxvdy10aW1lb3V0JyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdIL0knLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiByZWFsdGltZV9mbG93X3RpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2J5dGVDb3VudCcgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJzogJ0J5dGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzpUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BhY2tldENvdW50JyAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQYWNrZXRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdjb29raWUnICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQ29va2llJyMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfZmxvd19jb29raWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2R1cmF0aW9uU2Vjb25kcycgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEdXIocyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2R1cmF0aW9uTmFub3NlY29uZHMnIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEdXIobnMpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdoYXJkVGltZW91dCcgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnSGFyZCBUaW1lb3V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF9zaWduZWRfc2hvcnRfdG9fdW5zaWduZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaWRsZVRpbWVvdXQnICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0lkbGUgVGltZW91dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfc2lnbmVkX3Nob3J0X3RvX3Vuc2lnbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2xlbmd0aCcgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdMZW5ndGgnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ByaW9yaXR5JyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfc2lnbmVkX3Nob3J0X3RvX3Vuc2lnbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RhYmxlSWQnICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdUYWJsZScgfSwKLSAgICAgICAgICAgICd3aWxkY2FyZHMnICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnV2lsZGNhcmRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfaW50ZWdlcl90b19iaXRtYXNrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFMYXllclNvdXJjZScgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTcmMgTUFDJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9ob3N0X3dpdGhfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGF0YUxheWVyRGVzdGluYXRpb24nIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEc3QgTUFDJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2VfaG9zdF93aXRoX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFMYXllclR5cGUnICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdFdGhlciBUeXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX2V0aGVyX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGF0YUxheWVyVmlydHVhbExhbicgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1ZMQU4gSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5jb252ZXJ0X3NpZ25lZF9zaG9ydF90b191bnNpZ25lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkYXRhTGF5ZXJWaXJ0dWFsTGFuUHJpb3JpdHlDb2RlUG9pbnQnIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWTEFOIFBDUCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaW5wdXRQb3J0JyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0luIFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya1NvdXJjZScgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBJUCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya0Rlc3RpbmF0aW9uJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IElQJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrU291cmNlTWFza0xlbicgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBJUCBCaXRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrRGVzdGluYXRpb25NYXNrTGVuJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IElQIEJpdHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ25ldHdvcmtQcm90b2NvbCcgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfbmV0d29ya19wcm90b2NvbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrVHlwZU9mU2VydmljZScgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1RPUyBCaXRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0cmFuc3BvcnRTb3VyY2UnICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU3JjIFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfc3JjX3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHJhbnNwb3J0RGVzdGluYXRpb24nIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEc3QgUG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfZHN0X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWN0aW9ucycgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0luc3RydWN0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3Zuc05hbWUnICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWTlMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3Zuc0Zsb3dDbnQnICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdGbG93cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZmxvd0VudHJ5Q250JyAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0Zsb3ctRW50cmllcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLQotCi1SRUFMVElNRV9UQUJMRV9NUExTX0ZMT1dfRk9STUFUID0gewotICAgICdyZWFsdGltZV90YWJsZV9tcGxzX2Zsb3cnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lkeCcsICAgJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J5dGVDb3VudCcsICdwYWNrZXRDb3VudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdtcGxzTGFiZWwnLCdtcGxzQm9zJywnbXBsc1RjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zsb3ctYnJpZWYnLCAnYWN0aW9ucycKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnc2NvcGVkJyAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdJZHgnLCAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywgJ2R1cmF0aW9uU2Vjb25kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdtcGxzTGFiZWwnLCdtcGxzQm9zJywnbXBsc1RjJywnYWN0aW9ucycKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnYnJpZWYnICAgOiBbICdJZHgnLCAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywgJ2R1cmF0aW9uU2Vjb25kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpb3JpdHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbXBsc0xhYmVsJywnbXBsc0JvcycsJ21wbHNUYycsJ2FjdGlvbnMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAgJ2J5dGVDb3VudCcsICdwYWNrZXRDb3VudCcsICdkdXJhdGlvblNlY29uZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdtcGxzTGFiZWwnLCdtcGxzQm9zJywnbXBsc1RjJywnYWN0aW9ucycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdzY29wZWQnICA6IFsgJ0lkeCcsICAnYnl0ZUNvdW50JywgJ3BhY2tldENvdW50JywgJ2R1cmF0aW9uU2Vjb25kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpb3JpdHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21wbHNMYWJlbCcsJ21wbHNCb3MnLCdtcGxzVGMnLCdhY3Rpb25zJwotICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RldGFpbHMnIDogWyAnSWR4JywgJ2J5dGVDb3VudCcsICdwYWNrZXRDb3VudCcsICdkdXJhdGlvblNlY29uZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnbXBsc0xhYmVsJywnbXBsc0JvcycsJ21wbHNUYycsJ2FjdGlvbnMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAjJ3Zuc19mbG93JzogWyAnSWR4JywgJ2RhdGFMYXllclNvdXJjZScsICdkYXRhTGF5ZXJEZXN0aW5hdGlvbicsICdkYXRhTGF5ZXJWaXJ0dWFsTGFuJywgJ2RhdGFMYXllclR5cGUnXSwKLSAgICAgICAgICAgICMnc3VtbWFyeScgOiBbICdJZHgnLCAndm5zTmFtZScsICd2bnNGbG93Q250JywgJ2Zsb3dFbnRyeUNudCddLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICdzd2l0Y2gnICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdmbG93LWJyaWVmJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ01hdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlYWx0aW1lX2Zsb3dfYnJpZWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2Zsb3ctdGltZW91dCcgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnSC9JJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogcmVhbHRpbWVfZmxvd190aW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdieXRlQ291bnQnICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZSc6ICdCeXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmltYXJ5X2tleSc6VHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdwYWNrZXRDb3VudCcgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnUGFja2V0cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnY29va2llJyAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0Nvb2tpZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfZmxvd19jb29raWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2R1cmF0aW9uU2Vjb25kcycgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEdXIocyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2R1cmF0aW9uTmFub3NlY29uZHMnIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEdXIobnMpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdoYXJkVGltZW91dCcgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnSGFyZCBUaW1lb3V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF9zaWduZWRfc2hvcnRfdG9fdW5zaWduZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaWRsZVRpbWVvdXQnICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0lkbGUgVGltZW91dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfc2lnbmVkX3Nob3J0X3RvX3Vuc2lnbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2xlbmd0aCcgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdMZW5ndGgnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ByaW9yaXR5JyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfc2lnbmVkX3Nob3J0X3RvX3Vuc2lnbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RhYmxlSWQnICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdUYWJsZScgfSwKLSAgICAgICAgICAgICd3aWxkY2FyZHMnICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnV2lsZGNhcmRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfaW50ZWdlcl90b19iaXRtYXNrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFMYXllclNvdXJjZScgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTcmMgTUFDJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9ob3N0X3dpdGhfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGF0YUxheWVyRGVzdGluYXRpb24nIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEc3QgTUFDJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2VfaG9zdF93aXRoX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFMYXllclR5cGUnICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdFdGhlciBUeXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX2V0aGVyX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGF0YUxheWVyVmlydHVhbExhbicgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1ZMQU4gSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5jb252ZXJ0X3NpZ25lZF9zaG9ydF90b191bnNpZ25lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkYXRhTGF5ZXJWaXJ0dWFsTGFuUHJpb3JpdHlDb2RlUG9pbnQnIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWTEFOIFBDUCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaW5wdXRQb3J0JyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0luIFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya1NvdXJjZScgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBJUCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya0Rlc3RpbmF0aW9uJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IElQJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrU291cmNlTWFza0xlbicgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBJUCBCaXRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrRGVzdGluYXRpb25NYXNrTGVuJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IElQIEJpdHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ25ldHdvcmtQcm90b2NvbCcgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfbmV0d29ya19wcm90b2NvbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrVHlwZU9mU2VydmljZScgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1RPUyBCaXRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0cmFuc3BvcnRTb3VyY2UnICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU3JjIFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfc3JjX3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHJhbnNwb3J0RGVzdGluYXRpb24nIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEc3QgUG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfZHN0X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWN0aW9ucycgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0luc3RydWN0aW9ucycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndm5zTmFtZScgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1ZOUycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndm5zRmxvd0NudCcgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0Zsb3dzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdmbG93RW50cnlDbnQnICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRmxvdy1FbnRyaWVzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdtcGxzVGMnICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnTVBMUyBUQycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbXBsc0xhYmVsJyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ01QTFMgTGFiZWwnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ21wbHNCb3MnICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdNUExTIEJPUycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLQotCi0KLVJFQUxUSU1FX1RBQkxFX0FDTF9GTE9XX0ZPUk1BVCA9IHsKLSAgICAncmVhbHRpbWVfdGFibGVfYWNsX2Zsb3cnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsJ2J5dGVDb3VudCcsICdwYWNrZXRDb3VudCcsICdkdXJhdGlvblNlY29uZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnY29va2llJywncHJpb3JpdHknLCAnaW5wdXRQb3J0JywgJ2RhdGFMYXllclNvdXJjZScsICdkYXRhTGF5ZXJEZXN0aW5hdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhTGF5ZXJUeXBlJywgJ25ldHdvcmtTb3VyY2UnLCAnbmV0d29ya0Rlc3RpbmF0aW9uJywgJ25ldHdvcmtQcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc3BvcnRTb3VyY2UnLCAndHJhbnNwb3J0RGVzdGluYXRpb24nJ21wbHNMYWJlbCcsJ2FjdGlvbnMnXSwKLSAgICAgICAgICAgICdzY29wZWQnICA6IFsgJ0lkeCcsJ2J5dGVDb3VudCcsICdwYWNrZXRDb3VudCcsICdkdXJhdGlvblNlY29uZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnY29va2llJywncHJpb3JpdHknLCAnaW5wdXRQb3J0JywgJ2RhdGFMYXllclNvdXJjZScsICdkYXRhTGF5ZXJEZXN0aW5hdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhTGF5ZXJUeXBlJywgJ25ldHdvcmtTb3VyY2UnLCAnbmV0d29ya0Rlc3RpbmF0aW9uJywgJ25ldHdvcmtQcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc3BvcnRTb3VyY2UnLCAndHJhbnNwb3J0RGVzdGluYXRpb24nLCdhY3Rpb25zJ10sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJzogewotICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZXBsYWNlX3N3aXRjaF93aXRoX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2Zsb3ctYnJpZWYnICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnTWF0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVhbHRpbWVfZmxvd19icmllZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZmxvdy10aW1lb3V0JyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdIL0knLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiByZWFsdGltZV9mbG93X3RpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2J5dGVDb3VudCcgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJzogJ0J5dGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfa2V5JzpUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BhY2tldENvdW50JyAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQYWNrZXRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdjb29raWUnICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQ29va2llJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIydmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9mbG93X2Nvb2tpZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZHVyYXRpb25TZWNvbmRzJyAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0R1cihzKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZHVyYXRpb25OYW5vc2Vjb25kcycgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0R1cihucyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2hhcmRUaW1lb3V0JyAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdIYXJkIFRpbWVvdXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5jb252ZXJ0X3NpZ25lZF9zaG9ydF90b191bnNpZ25lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdpZGxlVGltZW91dCcgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnSWRsZSBUaW1lb3V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF9zaWduZWRfc2hvcnRfdG9fdW5zaWduZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbGVuZ3RoJyAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0xlbmd0aCcKLSAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ByaW9yaXR5JyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfc2lnbmVkX3Nob3J0X3RvX3Vuc2lnbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RhYmxlSWQnICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdUYWJsZScgfSwKLSAgICAgICAgICAgICd3aWxkY2FyZHMnICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnV2lsZGNhcmRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfaW50ZWdlcl90b19iaXRtYXNrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFMYXllclNvdXJjZScgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTcmMgTUFDJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9ob3N0X3dpdGhfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGF0YUxheWVyRGVzdGluYXRpb24nIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEc3QgTUFDJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2VfaG9zdF93aXRoX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFMYXllclR5cGUnICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdFdGhUeXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX2V0aGVyX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGF0YUxheWVyVmlydHVhbExhbicgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1ZMQU4gSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5jb252ZXJ0X3NpZ25lZF9zaG9ydF90b191bnNpZ25lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkYXRhTGF5ZXJWaXJ0dWFsTGFuUHJpb3JpdHlDb2RlUG9pbnQnIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWTEFOIFBDUCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaW5wdXRQb3J0JyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0luIFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya1NvdXJjZScgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBJUCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29ya0Rlc3RpbmF0aW9uJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IElQJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrU291cmNlTWFza0xlbicgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBJUCBCaXRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrRGVzdGluYXRpb25NYXNrTGVuJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IElQIEJpdHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ25ldHdvcmtQcm90b2NvbCcgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfbmV0d29ya19wcm90b2NvbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXR3b3JrVHlwZU9mU2VydmljZScgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1RPUyBCaXRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0cmFuc3BvcnRTb3VyY2UnICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU3JjIFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfc3JjX3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHJhbnNwb3J0RGVzdGluYXRpb24nIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEc3QgUG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfZHN0X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWN0aW9ucycgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0luc3RydWN0aW9ucycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndm5zTmFtZScgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1ZOUycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndm5zRmxvd0NudCcgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0Zsb3dzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdmbG93RW50cnlDbnQnICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRmxvdy1FbnRyaWVzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdtcGxzVGMnICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnTVBMUyBUQycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbXBsc0xhYmVsJyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ01QTFMgTEFCRUwnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ21wbHNCb3MnICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdNUExTIEJPUycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLQotUkVBTFRJTUVfQUdHUkVHQVRFX0ZPUk1BVCA9IHsKLSAgICAncmVhbHRpbWVfYWdncmVnYXRlJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAnc3dpdGNoJywgJ2Zsb3dDb3VudCcsICdieXRlQ291bnQnLCAncGFja2V0Q291bnQnIF0sCi0gICAgICAgICAgICAnc2NvcGVkJyAgOiBbICdJZHgnLCAnZmxvd0NvdW50JywgJ2J5dGVDb3VudCcsICdwYWNrZXRDb3VudCcgXSwKLSAgICAgICAgICAgICdicmllZicgICA6IFsgJ0lkeCcsICdzd2l0Y2gnLCAnZmxvd0NvdW50JywgJ2J5dGVDb3VudCcsICdwYWNrZXRDb3VudCcgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAnc3dpdGNoJyAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2Vfc3dpdGNoX3dpdGhfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2xlbmd0aCcgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZSc6ICdMZW5ndGgnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdmbG93Q291bnQnICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0Zsb3dzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYnl0ZUNvdW50JyAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdCeXRlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BhY2tldENvdW50JyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnUGFja2V0cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi0KLVJFQUxUSU1FX0RFU0NfRk9STUFUID0gewotICAgICdyZWFsdGltZV9kZXNjJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAnc3dpdGNoJywgJ3NlcmlhbE51bWJlcicsICdtYW51ZmFjdHVyZXJEZXNjcmlwdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdoYXJkd2FyZURlc2NyaXB0aW9uJywgJ2RhdGFwYXRoRGVzY3JpcHRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc29mdHdhcmVEZXNjcmlwdGlvbicgXSwKLSAgICAgICAgICAgICdzY29wZWQnICA6IFsgJ0lkeCcsICdzZXJpYWxOdW1iZXInLCAnbWFudWZhY3R1cmVyRGVzY3JpcHRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFyZHdhcmVEZXNjcmlwdGlvbicsICdkYXRhcGF0aERlc2NyaXB0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvZnR3YXJlRGVzY3JpcHRpb24nIF0sCi0gICAgICAgICAgICAnYnJpZWYnICAgOiBbICdJZHgnLCAnc3dpdGNoJywgJ3NlcmlhbE51bWJlcicsICdtYW51ZmFjdHVyZXJEZXNjcmlwdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdoYXJkd2FyZURlc2NyaXB0aW9uJywgJ2RhdGFwYXRoRGVzY3JpcHRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc29mdHdhcmVEZXNjcmlwdGlvbicgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAnc3dpdGNoJyAgICAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnc29mdHdhcmVEZXNjcmlwdGlvbicgICAgIDogeyAndmVyYm9zZS1uYW1lJzogJ1NXIFZlcnNpb24nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkYXRhcGF0aERlc2NyaXB0aW9uJyAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ01vZGVsJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaGFyZHdhcmVEZXNjcmlwdGlvbicgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdNYWtlJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbWFudWZhY3R1cmVyRGVzY3JpcHRpb24nIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWZW5kb3InCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzZXJpYWxOdW1iZXInICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NlcmlhbCAjJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLQotUkVBTFRJTUVfUE9SVF9GT1JNQVQgPSB7Ci0gICAgJ3JlYWx0aW1lX3BvcnQnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsICdzd2l0Y2gnLCAncG9ydE51bWJlcicsJ3BvcnRTdGF0dXMnLCAncmVjZWl2ZUJ5dGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2VpdmVQYWNrZXRzJywgJ3JlY2VpdmVFcnJvcnMnLCAncmVjZWl2ZURyb3BwZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAncmVjZWl2ZUNSQ0Vycm9ycycsICdyZWNlaXZlT3ZlcnJ1bkVycm9ycycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNlaXZlRnJhbWVFcnJvcnMnLCAndHJhbnNtaXRCeXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc21pdFBhY2tldHMnLCAndHJhbnNtaXRFcnJvcnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNtaXREcm9wcGVkJywgJ2NvbGxpc2lvbnMnIF0sCi0gICAgICAgICAgICAnZGV0YWlscycgOiBbICdJZHgnLCAnc3dpdGNoJywgJ3BvcnROdW1iZXInLCdwb3J0U3RhdHVzJywgJ3JlY2VpdmVCeXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNlaXZlUGFja2V0cycsICdyZWNlaXZlRXJyb3JzJywgJ3JlY2VpdmVEcm9wcGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2VpdmVDUkNFcnJvcnMnLCAncmVjZWl2ZU92ZXJydW5FcnJvcnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAncmVjZWl2ZUZyYW1lRXJyb3JzJywgJ3RyYW5zbWl0Qnl0ZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNtaXRQYWNrZXRzJywgJ3RyYW5zbWl0RXJyb3JzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zbWl0RHJvcHBlZCcsICdjb2xsaXNpb25zJyBdLAotICAgICAgICAgICAgJ3Njb3BlZCcgIDogWyAnSWR4JywgJ3BvcnROdW1iZXInLCdwb3J0U3RhdHVzJywgJ3JlY2VpdmVCeXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNlaXZlUGFja2V0cycsICdyZWNlaXZlRXJyb3JzJywgJ3JlY2VpdmVEcm9wcGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2VpdmVDUkNFcnJvcnMnLCAncmVjZWl2ZU92ZXJydW5FcnJvcnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAncmVjZWl2ZUZyYW1lRXJyb3JzJywgJ3RyYW5zbWl0Qnl0ZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNtaXRQYWNrZXRzJywgJ3RyYW5zbWl0RXJyb3JzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zbWl0RHJvcHBlZCcsICdjb2xsaXNpb25zJyBdLAotICAgICAgICAgICAgJ2JyaWVmJyA6ICBbICdJZHgnLCAnc3dpdGNoJywgJ3BvcnROdW1iZXInLCdwb3J0U3RhdHVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAncmVjZWl2ZUJ5dGVzJywgJ3JlY2VpdmVQYWNrZXRzJywgJ3JlY2VpdmVFcnJvcnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc21pdEJ5dGVzJywgJ3RyYW5zbWl0UGFja2V0cycsICd0cmFuc21pdEVycm9ycycsCi0gICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAnc3dpdGNoJyAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2Vfc3dpdGNoX3dpdGhfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3JlY2VpdmVCeXRlcycgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnUmN2IEJ5dGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3JlY2VpdmVQYWNrZXRzJyAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnUmN2IFBrdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdyZWNlaXZlRXJyb3JzJyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1JjdiBFcnJzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3JlY2VpdmVEcm9wcGVkJyAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnUmN2IERyb3BwZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfY291bnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncmVjZWl2ZUNSQ0Vycm9ycycgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdSY3YgQ1JDJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncmVjZWl2ZU92ZXJydW5FcnJvcnMnIDogeyAndmVyYm9zZS1uYW1lJyA6ICdSY3YgT3ZlcnJ1bnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdyZWNlaXZlRnJhbWVFcnJvcnMnICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1JjdiBGcmFtZSBFcnJzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RyYW5zbWl0Qnl0ZXMnICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnWG1pdCBCeXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0cmFuc21pdFBhY2tldHMnICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1htaXQgUGt0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0cmFuc21pdEVycm9ycycgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1htaXQgRXJycycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0cmFuc21pdERyb3BwZWQnICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1htaXQgRHJvcHBlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdjb2xsaXNpb25zJyAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0NvbGxpc2lvbnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfY291bnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncG9ydE51bWJlcicgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdPRiBQb3J0ICMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9vcGVuZmxvd19wb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdsZW5ndGgnICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0xlbmd0aCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BvcnRTdGF0dXMnICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU3RhdHVzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICB9LAotfQotCi0KLVJFQUxUSU1FX0dST1VQX0ZPUk1BVCA9IHsKLSAgICAncmVhbHRpbWVfZ3JvdXAnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsICdncm91cHR5cGUnLCdncm91cGlkJyAsICd0b3RhbHBrdGNudCcsICd0b3RhbGJ5dGVjbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYnVja2V0cGt0Y250JywgJ2J1Y2tldGJ5dGVjbnQnLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NldHNyY21hYycsICdzZXRkc3RtYWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAncHVzaE1wbHNsYWJlbCcsICdzZXRCb3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQ09QWV9UVExfT1VUJywnREVDX01QTFNfVFRMJywnb3V0cG9ydCcsJ2dvVG9Hcm91cCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ3Njb3BlZCcgOiBbICdJZHgnLCAnZ3JvdXB0eXBlJywnZ3JvdXBpZCcsJ3RvdGFscGt0Y250JywgJ3RvdGFsYnl0ZWNudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdidWNrZXRwa3RjbnQnLCAnYnVja2V0Ynl0ZWNudCcsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc2V0c3JjbWFjJywgJ3NldGRzdG1hYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdwdXNoTXBsc0xhYmVsJywnc2V0Qm9zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NPUFlfVFRMX09VVCcsJ0RFQ19NUExTX1RUTCcsJ291dHBvcnQnLCdnb1RvR3JvdXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICdncm91cGlkJyAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdHcm91cCBJZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdncm91cHR5cGUnICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0dyb3VwIFR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndG90YWxwa3RjbnQnICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1BrdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfY291bnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndG90YWxieXRlY250JyAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQnl0ZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdidWNrZXRwa3RjbnQnICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQnVja2V0IFBrdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfY291bnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYnVja2V0Ynl0ZWNudCcgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0J1Y2tldCBCeXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzZXRzcmNtYWMnICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU2V0IFNyYyBNYWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3NldGRzdG1hYycgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTZXQgRHN0IE1hYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncHVzaE1wbHNMYWJlbCcgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnUHVzaCBNcGxzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3NldEJvcycgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTZXQgQm9zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ291dHBvcnQnICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdPdXRwb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2dvVG9Hcm91cCcgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdHcm91cCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ0NPUFlfVFRMX09VVCcgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdDT1BZIFRUTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ0RFQ19NUExTX1RUTCcgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEZWMgTXBscyBUVEwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotCi1SRUFMVElNRV9UQUJMRV9GT1JNQVQgPSB7Ci0gICAgJ3JlYWx0aW1lX3RhYmxlJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAnc3dpdGNoJywgJ25hbWUnLCAndGFibGVJZCcsICd3aWxkY2FyZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4aW11bUVudHJpZXMnLCAnbG9va3VwQ291bnQnLCAnbWF0Y2hlZENvdW50JywgJ2FjdGl2ZUNvdW50JyBdLAotICAgICAgICAgICAgJ3Njb3BlZCcgIDogWyAnSWR4JywnbmFtZScsICd0YWJsZUlkJywgJ3dpbGRjYXJkcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhpbXVtRW50cmllcycsICdsb29rdXBDb3VudCcsICdtYXRjaGVkQ291bnQnLCAnYWN0aXZlQ291bnQnIF0sCi0gICAgICAgICAgICAnYnJpZWYnICAgOiBbICdJZHgnLCAnc3dpdGNoJywgJ25hbWUnLCAndGFibGVJZCcsICd3aWxkY2FyZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4aW11bUVudHJpZXMnLCAnbG9va3VwQ291bnQnLCAnbWF0Y2hlZENvdW50JywgJ2FjdGl2ZUNvdW50JyBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICdzd2l0Y2gnICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1N3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZXBsYWNlX3N3aXRjaF93aXRoX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd3aWxkY2FyZHMnICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnOiAnV2lsZGNhcmRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbWF0Y2hlZENvdW50JyAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICcjIE1hdGNoZWQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdtYXhpbXVtRW50cmllcycgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ01heGltdW0gRW50cmllcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ25hbWUnICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnTmFtZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FjdGl2ZUNvdW50JyAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnIyBBY3RpdmUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdsZW5ndGgnICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0xlbmd0aCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RhYmxlSWQnICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVGFibGUgSUQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdsb29rdXBDb3VudCcgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJyMgTG9va3VwcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi1TSE9XX1RVTk5FTF9GT1JNQVQgPSB7Ci0gICAgJ3Nob3dfdHVubmVsJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAndHVubmVsSWQnLCAncG9saWNpZXMnLCd0dW5uZWxQYXRoJywnbGFiZWxTdGFjaycsXSwKLSAgICAgICAgICAgICdkZXRhaWxzJyA6IFsgJ0lkeCcsICd0dW5uZWxJZCcsICdwb2xpY2llcycsJ3R1bm5lbFBhdGgnLCdsYWJlbFN0YWNrJywgJ2RwaWRHcm91cCcsXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAndHVubmVsSWQnICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0lkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RwaWRHcm91cCcgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHBpZChOb2RlIElkKS9Hcm91cCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdsYWJlbFN0YWNrJyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdMYWJlbCBTdGFjayBbT3V0ZXItLT5Jbm5lcl0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHVubmVsUGF0aCcgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVHVubmVsIFBhdGggW0hlYWQtLT5UYWlsXScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLVNIT1dfUE9MSUNZX0ZPUk1BVCA9IHsKLSAgICAnc2hvd19wb2xpY3knIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsICdwb2xpY3lJZCcsICdwb2xpY3lUeXBlJywncHJpb3JpdHknLCdkc3RNYWNBZGRyZXNzJywnc3JjTWFjQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZXRoZXJUeXBlJywnZHN0SXBBZGRyZXNzJyAsJ2lwUHJvdG9jb2xOdW1iZXInLCdzcmNJcEFkZHJlc3MnLCAnZHN0VGNwUG9ydE51bWJlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc3JjVGNwUG9ydE51bWJlcicsJ3R1bm5lbElkJwotICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZmllbGRzJzogewotICAgICAgICAgICAgICAgICAgICAgICAncG9saWN5SWQnICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdQb2xpY3kgSWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAncG9saWN5VHlwZScgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZSc6ICdQb2xpY3kgVHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICdkc3RNYWNBZGRyZXNzJyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJzogJ0RzdCBNYWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAnc3JjTWFjQWRkcmVzcycgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZSc6ICdTcmMgTWFjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2RzdElwQWRkcmVzcycgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZSc6ICdEc3QgSVAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAnc3JjSXBBZGRyZXNzJyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJzogJ1NyYyBJUCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICdkc3RUY3BQb3J0TnVtYmVyJyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJzogJ0RzdCBUY3BQb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3NyY1RjcFBvcnROdW1iZXInICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnOiAnU3JjIFRjcFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAnZXRoZXJUeXBlJyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJzogJ0V0aGVyIFR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgICAgICAgICdpcFByb3RvY29sTnVtYmVyJyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJzogJ0lQIFByb3RvY29sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3R1bm5lbElkJyAgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZSc6ICdUdW5uZWwgVXNlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLQotCi1SRUFMVElNRV9GRUFUVVJFU19GT1JNQVQgPSB7Ci0gICAgJ3JlYWx0aW1lX2ZlYXR1cmVzJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAnc3dpdGNoJywgJ3BvcnROdW1iZXInLCAnbmFtZScsICdoYXJkd2FyZUFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnJywgJ3N0YXRlJywgJ2N1cnJlbnRGZWF0dXJlcycsICdhZHZlcnRpc2VkRmVhdHVyZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VwcG9ydGVkRmVhdHVyZXMnLCAncGVlckZlYXR1cmVzJ10sCi0gICAgICAgICAgICAnc2NvcGVkJyAgOiBbICdJZHgnLCAncG9ydE51bWJlcicsICduYW1lJywgJ2hhcmR3YXJlQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcnLCAnc3RhdGUnLCAnY3VycmVudEZlYXR1cmVzJywgJ2FkdmVydGlzZWRGZWF0dXJlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzdXBwb3J0ZWRGZWF0dXJlcycsICdwZWVyRmVhdHVyZXMnXSwKLSAgICAgICAgICAgICdicmllZicgOiBbICdJZHgnLCAnc3dpdGNoJywgJ3BvcnROdW1iZXInLCAnbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW50RmVhdHVyZXMnLCAnYWR2ZXJ0aXNlZEZlYXR1cmVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRlZEZlYXR1cmVzJywgJ3BlZXJGZWF0dXJlcyddLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICdzd2l0Y2gnICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2Vfc3dpdGNoX3dpdGhfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdwb3J0TnVtYmVyJyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJzogJ09GIFBvcnQgIycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdoYXJkd2FyZUFkZHJlc3MnICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdIVyBNYWMgQWRkcmVzcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduYW1lJyAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdOYW1lJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2NvbmZpZycgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0NvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfY29uZmlnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnc3RhdGUnICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU3RhdGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X3VwX2Rvd24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzdHAtc3RhdGUnICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTVFAgU3RhdGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X3N0cF9zdGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2N1cnJlbnRGZWF0dXJlcycgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0N1cnJlbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2ZlYXR1cmVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWR2ZXJ0aXNlZEZlYXR1cmVzJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQWR2ZXJ0aXNlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfZmVhdHVyZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzdXBwb3J0ZWRGZWF0dXJlcycgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTdXBwb3J0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2ZlYXR1cmVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncGVlckZlYXR1cmVzJyAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnUGVlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfZmVhdHVyZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotCi1SRUFMVElNRV9RVUVVRV9GT1JNQVQgPSB7Ci0gICAgJ3JlYWx0aW1lX3F1ZXVlJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAnc3dpdGNoJywgJ3BvcnROdW1iZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAncXVldWVJZCcsICd0cmFuc21pdEJ5dGVzJywgJ3RyYW5zbWl0UGFja2V0cycsICd0cmFuc21pdEVycm9ycycsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ3Njb3BlZCcgIDogWyAnSWR4JywgJ3BvcnROdW1iZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAncXVldWVJZCcsICd0cmFuc21pdEJ5dGVzJywgJ3RyYW5zbWl0UGFja2V0cycsICd0cmFuc21pdEVycm9ycycsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2JyaWVmJyAgIDogWyAnSWR4JywgJ3N3aXRjaCcsICdwb3J0TnVtYmVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1ZXVlSWQnLCAndHJhbnNtaXRCeXRlcycsICd0cmFuc21pdFBhY2tldHMnLCAndHJhbnNtaXRFcnJvcnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLQotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICdzd2l0Y2gnICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2Vfc3dpdGNoX3dpdGhfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdwb3J0TnVtYmVyJyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJzogJ09GIFBvcnQgIycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdxdWV1ZUlkJyAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdRdWV1ZSBJRCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHJhbnNtaXRCeXRlcycgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnWG1pdCBCeXRlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0cmFuc21pdFBhY2tldHMnICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdYbWl0IFBrdHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHJhbnNtaXRFcnJvcnMnICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnWG1pdCBFcnJvcnMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgIH0KLSAgICB9LAotfQotCi0KLQotCi1ST1VURVJfRk9STUFUID0gewotICAgICdyb3V0ZXInICAgICA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbJ0lkeCcsJ2RwaWQnLCduYW1lJywgJ3JvdXRlcklQJywncm91dGVyTWFjJywnaXNFZGdlUm91dGVyJywnbm9kZVNJZCcKLSAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICdkcGlkJyAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdSb3V0ZXIgRFBJRCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZXByaW50X3N3aXRjaF9hbmRfYWxpYXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduYW1lJyAgICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1JvdXRlciBOYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3JvdXRlcklQJyAgICAgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnUm91dGVyIElQJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdyb3V0ZXJNYWMnICAgICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1JvdXRlciBNYWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIydmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2lzRWRnZVJvdXRlcicgICAgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRWRnZSBSb3V0ZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIydmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ25vZGVTSWQnICAgICAgICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ05vZGUgU0lkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotI2FkamFjZW5jeQotUk9VVEVSX0FESkFDRU5DWV9GT1JNQVQ9IHsKLSAgICAncm91dGVyX2FkamFjZW5jeScgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnSWR4JywgJ2FkamFjZW5jeVNpZCcsICdwb3J0cyddLAotICAgICAgICAgICAgJ3Njb3BlZCcgIDogWyAnSWR4JywgJ2FkamFjZW5jeVNpZCcsICdwb3J0cyddLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICdhZGphY2VuY3lTaWQnICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0FkamFjZW5jeSBTaWQocyknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgfSwKLQotICAgICAgICB9LAotfQotCi1ST1VURVJfUE9SVF9GT1JNQVQgPSB7Ci0gICAgJ3JvdXRlcl9wb3J0JyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAnbmFtZScsICdwb3J0Tm8nLCAnc3VibmV0SXAnLCdhZGphY2VuY3knXSwKLSAgICAgICAgICAgICdzY29wZWQnIDogWyAnSWR4JywgJ25hbWUnLCAncG9ydE5vJywgJ3N1Ym5ldElwJywnYWRqYWNlbmN5J10sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJzogewotICAgICAgICAgICAgJ2FkamFjZW5jeScgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQWRqYWNlbmN5IFNpZChzKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdwb3J0Tm8nICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1BvcnQgIycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzdWJuZXRJcCcgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU3VibmV0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICB9Ci19Ci0KLSIiIgotU1dJVENIX0NMVVNURVJfRk9STUFUID0gewotICAgICdzd2l0Y2gtY2x1c3RlcicgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnSWR4JywgJ2NsdXN0ZXItaWQnLCAnc3dpdGNoZXMnLCBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnY2x1c3Rlci1pZCcgOiB7ICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X2NsdXN0ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3N3aXRjaGVzJyAgIDogeyAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9zd2l0Y2hlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotQlJPQURDQVNUX0RPTUFJTl9GT1JNQVQgPSB7Ci0gICAgJ2V4dGVybmFsLXBvcnRzJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAncG9ydHMnLCBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAncG9ydHMnICAgOiB7ICd2ZXJib3NlLW5hbWUnOiAnU3dpdGNoIFBvcnRzJywKLQkJCSAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfc3dpdGNoX3BvcnRfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLVRFQ0hfU1VQUE9SVF9DT05GSUdfRk9STUFUID0gewotICAgICd0ZWNoLXN1cHBvcnQtY29uZmlnJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnY21kLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NtZCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLX0KLQotCi1WRVJTSU9OX0ZPUk1BVCA9IHsKLSAgICAndmVyc2lvbicgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RldGFpbHMnIDogWyAnY29udHJvbGxlcicgXQotICAgICAgICB9LAotCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ2NvbnRyb2xsZXInIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdDb250cm9sbGVyIHZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLX0KLQotCi1TWVNURU1fQ0xPQ0tfRk9STUFUID0gewotICAgICdzeXN0ZW0tY2xvY2snIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ3RpbWUnIF0sCi0gICAgICAgICAgICAnZGV0YWlscycgOiBbICd0aW1lJywgJ3R6JyBdCi0gICAgICAgIH0sCi0KLSAgICAgICAgJ2ZpZWxkcycgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAndGltZScgOiB7Ci0gICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3R6JyAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdUaW1lem9uZScKLSAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgIH0sCi0gICAgfSwKLX0KLSIiIgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvY29yZV9tb2RlbC5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2NvcmVfbW9kZWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA1ZDIyODguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvY29yZV9tb2RlbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1pbXBvcnQgY29tbWFuZAotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgndGVjaC1zdXBwb3J0LWNvbmZpZycpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgnaW1hZ2UtZHJvcC11c2VyJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCd2bGFuLWNvbmZpZycpCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCd0YWcnLCAnbmFtZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndGFnJywgJ25hbWVzcGFjZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndGFnJywgJ3ZhbHVlJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCd0YWcnLCAncGVyc2lzdCcpCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2Zsb3dfZW50cnkucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9mbG93X2VudHJ5LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxMzIxM2FiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2Zsb3dfZW50cnkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0OTMgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBmbXRjbnYKLQotIiIiCi1GTE9XX0VOVFJZX1NVQk1PREVfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICA6ICdmbG93LWVudHJ5JywKLSAgICAnbW9kZScgICAgICAgICAgICA6ICdjb25maWctc3dpdGNoKicsCi0gICAgJ2NvbW1hbmQtdHlwZScgICAgOiAnY29uZmlnLXN1Ym1vZGUnLAotICAgICdzaG9ydC1oZWxwJyAgICAgIDogJ0VudGVyIGZsb3ctZW50cnkgc3VibW9kZSwgY29uZmlndXJlIHNpbmdsZSBzdGF0aWMgZmxvdyBlbnRyeScsCi0gICAgJ2RvYycgICAgICAgICAgICAgOiAnZmxvdy1lbnRyeXxmbG93LWVudHJ5JywKLSAgICAnZG9jLWV4YW1wbGUnICAgICA6ICdmbG93LWVudHJ5fGZsb3ctZW50cnktZXhhbXBsZScsCi0gICAgJ29iai10eXBlJyAgICAgICAgOiAnZmxvdy1lbnRyeScsCi0gICAgJ3BhcmVudC1maWVsZCcgICAgOiAnc3dpdGNoJywKLSAgICAnc3VibW9kZS1uYW1lJyAgICA6ICdjb25maWctc3dpdGNoLWZsb3ctZW50cnknLAotICAgICdhcmdzJyA6IHsKLSAgICAgICAgJ2ZpZWxkJyAgICAgICA6ICduYW1lJywKLSAgICAgICAgJ3R5cGUnICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgJ2NvbXBsZXRpb24nICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAnc2NvcGVkJyAgICAgIDogVHJ1ZSwKLSAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdFbnRlciBuYW1lIGZvciBhIGZsb3ctZW50cnknLAotICAgIH0sCi19Ci0KLSMgb2JqX3R5cGUgZmxvdy1lbnRyeSBmaWVsZCBoYXJkLXRpbWVvdXQKLUZMT1dfRU5UUllfRURJVF9IQVJEX1RJTUVPVVRfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnaGFyZC10aW1lb3V0JywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXN3aXRjaC1mbG93LWVudHJ5JywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnU2V0IGhhcmQtdGltZW91dCBmb3IgdGhpcyBmbG93JywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnZmxvdy1lbnRyeXxoYXJkLXRpbWVvdXQnLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdmbG93LWVudHJ5fGhhcmQtdGltZW91dC1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiAoCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2hhcmQtdGltZW91dCcsCi0gICAgICAgICAgICAgJ2Jhc2UtdHlwZScgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgICdyYW5nZScgICAgICA6ICgwLCA2NTUzNSksCi0gICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2Zsb3ctZW50cnl8aGFyZC10aW1lb3V0LWZpZWxkJywKLSAgICAgICAgIH0KLSAgICApCi19Ci0KLQotIyBvYmpfdHlwZSBmbG93LWVudHJ5IGZpZWxkIGlkbGUtdGltZW91dAotRkxPV19FTlRSWV9FRElUX0lETEVfVElNRU9VVF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdpZGxlLXRpbWVvdXQnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdjb25maWctc3dpdGNoLWZsb3ctZW50cnknLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdTZXQgaWRsZS10aW1vdXQgZm9yIHRoaXMgZmxvdycsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2Zsb3ctZW50cnl8aWRsZS10aW1lb3V0JywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAnZmxvdy1lbnRyeXxpZGxlLXRpbWVvdXQtZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgICAgICAgIDogJ2NvbmZpZycsCi0gICAgJ2FyZ3MnICAgICAgICAgICAgICAgIDogKAotICAgICAgICAgewotICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdpZGxlLXRpbWVvdXQnLAotICAgICAgICAgICAgICdiYXNlLXR5cGUnICA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICAncmFuZ2UnICAgICAgOiAoMCwgNjU1MzUpLAotICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdmbG93LWVudHJ5fGlkbGUtdGltZW91dC1maWVsZCcsCi0gICAgICAgICB9Ci0gICAgKQotfQotCi0KLSMgb2JqX3R5cGUgZmxvdy1lbnRyeSBmaWVsZCBhY3Rpb25zCi1GTE9XX0VOVFJZX0VESVRfQUNUSU9OU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdhY3Rpb25zJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXN3aXRjaC1mbG93LWVudHJ5JywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnU2V0IGFjdGlvbnMgZm9yIHRoaXMgZmxvdycsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2Zsb3ctZW50cnl8YWN0aW9ucycsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2Zsb3ctZW50cnl8YWN0aW9ucy1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiAoCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2FjdGlvbnMnLAotICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgICdjb21wbGV0aW9uJyA6ICdjb21wbGV0ZS1zdGF0aWNmbG93LWFjdGlvbnMnLAotICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdmbG93LWVudHJ5fGFjdGlvbi1maWVsZCcsCi0gICAgICAgICB9Ci0gICAgKQotfQotCi0KLSMgb2JqX3R5cGUgZmxvdy1lbnRyeSBmaWVsZCBhY3RpdmUKLUZMT1dfRU5UUllfRURJVF9BQ1RJVkVfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnYWN0aXZlJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXN3aXRjaC1mbG93LWVudHJ5JywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnU2V0IGZsb3cgYWN0aXZlJywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnZmxvdy1lbnRyeXxhY3RpdmUnLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdmbG93LWVudHJ5fGFjdGl2ZS1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiAoCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgIyB0aGlzIHNob3VsZCBiZSBpbXByb3ZlZCwgYnV0IHRoaXMgaXMgdGhlIG9sZCBzeW50YXgKLSAgICAgICAgICAgICAnZmllbGQnICA6ICdhY3RpdmUnLAotICAgICAgICAgICAgICd0eXBlJyAgIDogJ2VudW0nLAotICAgICAgICAgICAgICd2YWx1ZXMnIDogKCdUcnVlJywgJ0ZhbHNlJyksCi0gICAgICAgICAgICAgJ2RvYycgICAgOiAnZmxvdy1lbnRyeXxhY3RpdmUtZmllbGQtKycsCi0gICAgICAgICAgICAgIyBYWFggcm90aCAtLSBkb2VzIG5vdCBzaG93IHVwIGluIHdpa2kKLSAgICAgICAgIH0KLSAgICApCi19Ci0KLQotIyBvYmpfdHlwZSBmbG93LWVudHJ5IGZpZWxkIHByaW9yaXR5Ci1GTE9XX0VOVFJZX0VESVRfUFJJT1JJVFlfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAncHJpb3JpdHknLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdjb25maWctc3dpdGNoLWZsb3ctZW50cnknLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdTZXQgcHJpb3JpdHkgb2YgdGhlIGZsb3cnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdmbG93LWVudHJ5fHByaW9yaXR5JywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAnZmxvdy1lbnRyeXxwcmlvcml0eS1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiAoCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICAnYmFzZS10eXBlJyAgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAgJ3JhbmdlJyAgICAgIDogKDAsIDY1NTM1KSwKLSAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnZmxvdy1lbnRyeXxwcmlvcml0eS1maWVsZCcsCi0gICAgICAgICB9Ci0gICAgKQotfQotCi0KLSMgb2JqX3R5cGUgZmxvdy1lbnRyeSBmaWVsZCBjb29raWUKLUZMT1dfRU5UUllfRURJVF9DT09LSUVfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnY29va2llJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXN3aXRjaC1mbG93LWVudHJ5JywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnQXNzb2NpYXRlIGNvb2tpZSBmb3IgZmxvdycsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2Zsb3ctZW50cnl8Y29va2llJywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAnZmxvdy1lbnRyeXxjb29raWUtZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgICAgICAgIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgOiAnY29va2llJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLX0KLQotCi0jIG9ial90eXBlIGZsb3ctZW50cnkgZmllbGQgd2lsZGNhcmRzCi1GTE9XX0VOVFJZX0VESVRfV0lMRENBUkRTX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ3dpbGRjYXJkcycsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2NvbmZpZy1zd2l0Y2gtZmxvdy1lbnRyeScsCi0gICAgJ2NvbW1hbmQtdHlwZScgICAgICAgIDogJ2NvbmZpZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ0NvbmZpZ3VyZSB3aWxkY2FyZHMgZm9yIGZsb3cnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdmbG93LWVudHJ5fHdpbGRjYXJkcycsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2Zsb3ctZW50cnl8d2lsZGNhcmRzLWV4YW1wbGUnLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6ICgKLSAgICAgICAgIHsKLSAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnd2lsZGNhcmRzJywKLSAgICAgICAgICAgICAnYmFzZS10eXBlJyAgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAgJ3JhbmdlJyAgICAgIDogKDAsIDIqKjMyLTEpLAotICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdmbG93LWVudHJ5fHdpbGRjYXJkcy1maWVsZCcsCi0gICAgICAgICB9Ci0gICAgKQotfQotCi0KLSMgb2JqX3R5cGUgZmxvdy1lbnRyeSBmaWVsZCBpbmdyZXNzLXBvcnQKLUZMT1dfRU5UUllfRURJVF9JTkdSRVNTX1BPUlRfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnaW5ncmVzcy1wb3J0JywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXN3aXRjaC1mbG93LWVudHJ5JywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnQ29uZmlndXJlIHdpbGRjYXJkcyBmb3IgZmxvdycsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2Zsb3ctZW50cnl8aW5ncmVzcy1wb3J0JywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAnZmxvdy1lbnRyeXxpbmdyZXNzLXBvcnQtZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgICAgICAgIDogKAotICAgICAgICAgewotICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdpbmdyZXNzLXBvcnQnLAotICAgICAgICAgICAgICdiYXNlLXR5cGUnICA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICAncmFuZ2UnICAgICAgOiAoMCwgMioqMTYtMSksICMgT0YgVjIgdXNlcyAyXjMyIGZvciBwb3J0cwotICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdmbG93LWVudHJ5fGluZ3Jlc3MtcG9ydC1maWVsZCcsCi0gICAgICAgICB9Ci0gICAgKQotfQotCi0KLSMgb2JqX3R5cGUgZmxvdy1lbnRyeSBmaWVsZCBzcmMtbWFjCi1GTE9XX0VOVFJZX0VESVRfU1JDX01BQ19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdzcmMtbWFjJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXN3aXRjaC1mbG93LWVudHJ5JywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnQ29uZmlndXJlIHNyYy1tYWMgbWF0Y2ggZm9yIGZsb3cnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdmbG93LWVudHJ5fHNyYy1tYWMnLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdmbG93LWVudHJ5fHNyYy1tYWMtZXhhbXBsZScsCi0gICAgJ29iai10eXBlJyAgICAgICAgICAgIDogJ2Zsb3ctZW50cnknLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6ICgKLSAgICAgICAgIHsKLSAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdzcmMtbWFjJywKLSAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdob3N0JywKLSAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1hbGlhcy1jaG9pY2UnLAotICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2hvc3R8bWFjJywKLSAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAnZmxvdy1lbnRyeXxzcmMtbWFjLWZpZWxkJywKLSAgICAgICAgIH0KLSAgICApCi19Ci0KLQotIyBvYmpfdHlwZSBmbG93LWVudHJ5IGZpZWxkIGRzdC1tYWMKLUZMT1dfRU5UUllfRURJVF9EU1RfTUFDX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ2RzdC1tYWMnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdjb25maWctc3dpdGNoLWZsb3ctZW50cnknLAotICAgICdjb21tYW5kLXR5cGUnICAgICAgICA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdDb25maWd1cmUgZHN0LW1hYyBtYXRjaCBmb3IgZmxvdycsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2Zsb3ctZW50cnl8ZHN0LW1hYycsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2Zsb3ctZW50cnl8ZHN0LW1hYy1leGFtcGxlJywKLSAgICAnb2JqLXR5cGUnICAgICAgICAgICAgOiAnZmxvdy1lbnRyeScsCi0gICAgJ2FyZ3MnICAgICAgICAgICAgICAgIDogKAotICAgICAgICAgewotICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2RzdC1tYWMnLAotICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2hvc3QnLAotICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWFsaWFzLWNob2ljZScsCi0gICAgICAgICAgICAgJ290aGVyJyAgICAgICAgOiAnaG9zdHxtYWMnLAotICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdmbG93LWVudHJ5fGRzdC1tYWMtZmllbGQnLAotICAgICAgICAgfQotICAgICkKLX0KLQotCi0jIG9ial90eXBlIGZsb3ctZW50cnkgZmllbGQgdmxhbi1pZAotRkxPV19FTlRSWV9FRElUX1ZMQU5fSURfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAndmxhbi1pZCcsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2NvbmZpZy1zd2l0Y2gtZmxvdy1lbnRyeScsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ0NvbmZpZ3VyZSB2bGFuLWlkIG1hdGNoIGZvciBmbG93JywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnZmxvdy1lbnRyeXx2bGFuLWlkJywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAnZmxvdy1lbnRyeXx2bGFuLWlkLWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnICAgICAgICA6ICdjb25maWcnLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6ICgKLSAgICAgICAgIHsKLSAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAndmxhbi1pZCcsCi0gICAgICAgICAgICAgJ2Jhc2UtdHlwZScgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgICdyYW5nZScgICAgICA6ICgwLCAyKioxMi0xKSwKLSAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnZmxvdy1lbnRyeXx2bGFuLWlkLWZpZWxkJywKLSAgICAgICAgIH0KLSAgICApCi19Ci0KLQotIyBvYmpfdHlwZSBmbG93LWVudHJ5IGZpZWxkIHZsYW4tcHJpb3JpdHkKLUZMT1dfRU5UUllfRURJVF9WTEFOX1BSSU9SSVRZX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ3ZsYW4tcHJpb3JpdHknLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdjb25maWctc3dpdGNoLWZsb3ctZW50cnknLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdDb25maWd1cmUgdmxhbi1wcmlvcml0eSBtYXRjaCBmb3IgZmxvdycsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2Zsb3ctZW50cnl8dmxhbi1wcmlvcml0eScsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2Zsb3ctZW50cnl8dmxhbi1wcmlvcml0eS1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiAoCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3ZsYW4tcHJpb3JpdHknLAotICAgICAgICAgICAgICdiYXNlLXR5cGUnICA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICAncmFuZ2UnICAgICAgOiAoMCw3KSwKLSAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnZmxvdy1lbnRyeXx2bGFuLXByaW9yaXR5LWZpZWxkJywKLSAgICAgICAgIH0KLSAgICApCi19Ci0KLQotIyBvYmpfdHlwZSBmbG93LWVudHJ5IGZpZWxkIGV0aGVyLXR5cGUKLUZMT1dfRU5UUllfRURJVF9FVEhFUl9UWVBFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ2V0aGVyLXR5cGUnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdjb25maWctc3dpdGNoLWZsb3ctZW50cnknLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdDb25maWd1cmUgZXRoZXItdHlwZSBtYXRjaCBmb3IgZmxvdycsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2Zsb3ctZW50cnl8ZXRoZXItdHlwZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2Zsb3ctZW50cnl8ZXRoZXItdHlwZS1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdldGhlci10eXBlJywKLSAgICAgICAgICAgICAgICAnYmFzZS10eXBlJyAgICAgICA6ICdoZXgtb3ItZGVjaW1hbC1pbnRlZ2VyJywKLSAgICAgICAgICAgICAgICAncmFuZ2UnICAgICAgICAgICA6ICgxNTM2LDY1NTM2KSwKLSAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyAgICA6ICdoZXgtdG8taW50ZWdlcicsCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnZmxvdy1lbnRyeXxldGhlci10eXBlLWZpZWxkJywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdldGhlci10eXBlJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgICAgICAgOiBmbXRjbnYuZXRoZXJfdHlwZV90b19udW1iZXJfZGljdCwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICksCi0gICAgfSwKLX0KLQotCi0jIG9ial90eXBlIGZsb3ctZW50cnkgZmllbGQgdG9zLWJpdHMKLUZMT1dfRU5UUllfRURJVF9UT1NfQklUU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICd0b3MtYml0cycsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2NvbmZpZy1zd2l0Y2gtZmxvdy1lbnRyeScsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ0NvbmZpZ3VyZSBldGhlci10eXBlIG1hdGNoIGZvciBmbG93JywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnZmxvdy1lbnRyeXx0b3MtYml0cycsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2Zsb3ctZW50cnl8dG9zLWJpdHMtZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgICAgICAgIDogJ2NvbmZpZycsCi0gICAgJ2FyZ3MnICAgICAgICAgICAgICAgIDogKAotICAgICAgICAgewotICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICd0b3MtYml0cycsCi0gICAgICAgICAgICAgJ2Jhc2UtdHlwZScgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgICdyYW5nZScgICAgICA6ICgwLDYzKSwKLSAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnZmxvdy1lbnRyeXx0b3MtYml0cy1maWVsZCcsCi0gICAgICAgICB9Ci0gICAgKQotfQotCi0KLSMgb2JqX3R5cGUgZmxvdy1lbnRyeSBmaWVsZCBwcm90b2NvbAotRkxPV19FTlRSWV9FRElUX1BST1RPQ09MX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ3Byb3RvY29sJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXN3aXRjaC1mbG93LWVudHJ5JywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnQ29uZmlndXJlIGV0aGVyLXR5cGUgbWF0Y2ggZm9yIGZsb3cnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdmbG93LWVudHJ5fHByb3RvY29sJywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAnZmxvdy1lbnRyeXxwcm90b2NvbC1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiAoCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3Byb3RvY29sJywKLSAgICAgICAgICAgICAnYmFzZS10eXBlJyAgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAgJ3JhbmdlJyAgICAgIDogKDAsMjU1KSwKLSAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnZmxvdy1lbnRyeXxwcm90b2NvbC1maWVsZCcsCi0gICAgICAgICB9Ci0gICAgKQotfQotCi0KLSMgb2JqX3R5cGUgZmxvdy1lbnRyeSBmaWVsZCBzcmMtaXAKLUZMT1dfRU5UUllfRURJVF9TUkNfSVBfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnc3JjLWlwJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXN3aXRjaC1mbG93LWVudHJ5JywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnQ29uZmlndXJlIHNyYy1pcCBtYXRjaCBmb3IgZmxvdycsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ2Zsb3ctZW50cnl8c3JjLWlwJywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAnZmxvdy1lbnRyeXxzcmMtaXAtZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgICAgICAgIDogJ2NvbmZpZycsCi0gICAgJ2FyZ3MnICAgICAgICAgICAgICAgIDogewotICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnc3JjLWlwJywKLSAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICAgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAnY29tcGxldGlvbi10ZXh0JyA6ICdzcmMtaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnZmxvdy1lbnRyeXxzcmMtaXAtZmllbGQnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdzcmMtaXAnLAotICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgICAgIDogJ2NpZHItcmFuZ2UnLAotICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2NpZHItcmFuZ2UnLAotICAgICAgICAgICAgICAgICdjb21wbGV0aW9uLXRleHQnIDogJ3NyYy1pcC1jaWRyLXJhbmdlJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICdmbG93LWVudHJ5fHNyYy1pcC1maWVsZCcsCi0gICAgICAgICAgICB9LAotICAgICAgICApCi0gICAgfSwKLX0KLQotCi0jIG9ial90eXBlIGZsb3ctZW50cnkgZmllbGQgZHN0LWlwCi1GTE9XX0VOVFJZX0VESVRfRFNUX0lQX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ2RzdC1pcCcsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2NvbmZpZy1zd2l0Y2gtZmxvdy1lbnRyeScsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ0NvbmZpZ3VyZSBkc3QtaXAgbWF0Y2ggZm9yIGZsb3cnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdmbG93LWVudHJ5fGRzdC1pcCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2Zsb3ctZW50cnl8ZHN0LWlwLWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnICAgICAgICA6ICdjb25maWcnLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2RzdC1pcCcsCi0gICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgICAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24tdGV4dCcgOiAnZHN0LWlwLWFkZHJlc3MnLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgIDogJ2Zsb3ctZW50cnl8ZHN0LWlwLWZpZWxkJywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnZHN0LWlwJywKLSAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICAgICA6ICdjaWRyLXJhbmdlJywKLSAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdjaWRyLXJhbmdlJywKLSAgICAgICAgICAgICAgICAnY29tcGxldGlvbi10ZXh0JyA6ICdkc3QtaXAtY2lkci1yYW5nZScsCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnZmxvdy1lbnRyeXxkc3QtaXAtZmllbGQnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgKQotICAgIH0sCi19Ci0KLQotIyBvYmpfdHlwZSBmbG93LWVudHJ5IGZpZWxkIHNyYy1wb3J0Ci1GTE9XX0VOVFJZX0VESVRfU1JDX1BPUlRfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnc3JjLXBvcnQnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdjb25maWctc3dpdGNoLWZsb3ctZW50cnknLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdDb25maWd1cmUgc3JjLXBvcnQgbWF0Y2ggZm9yIGZsb3cnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdmbG93LWVudHJ5fHNyYy1wb3J0JywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAnZmxvdy1lbnRyeXxzcmMtcG9ydC1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdzcmMtcG9ydCcsCi0gICAgICAgICAgICAgICAgJ2Jhc2UtdHlwZScgICAgOiAnaGV4LW9yLWRlY2ltYWwtaW50ZWdlcicsCi0gICAgICAgICAgICAgICAgJ3JhbmdlJyAgICAgICAgOiAoMCw2NTUzNSksCi0gICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnaGV4LXRvLWludGVnZXInLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ2Zsb3ctZW50cnl8c3JjLXBvcnQtZmllbGQnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgIDogJ3NyYy1wb3J0JywKLSAgICAgICAgICAgICAgICAndHlwZScgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgOiBmbXRjbnYudGNwX25hbWVfdG9fbnVtYmVyX2RpY3QsCi0gICAgICAgICAgICB9LAotICAgICAgICApCi0gICAgfQotfQotCi0KLSMgb2JqX3R5cGUgZmxvdy1lbnRyeSBmaWVsZCBkc3QtcG9ydAotRkxPV19FTlRSWV9FRElUX0RTVF9QT1JUX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ2RzdC1wb3J0JywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXN3aXRjaC1mbG93LWVudHJ5JywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnQ29uZmlndXJlIGRzdC1wb3J0IG1hdGNoIGZvciBmbG93JywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnZmxvdy1lbnRyeXxkc3QtcG9ydCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ2Zsb3ctZW50cnl8ZHN0LXBvcnQtZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgICAgICAgIDogJ2NvbmZpZycsCi0gICAgJ2FyZ3MnICAgICAgICAgICAgICAgIDogewotICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHN0LXBvcnQnLAotICAgICAgICAgICAgICAgICdiYXNlLXR5cGUnICAgIDogJ2hleC1vci1kZWNpbWFsLWludGVnZXInLAotICAgICAgICAgICAgICAgICdyYW5nZScgICAgICAgIDogKDAsNjU1MzUpLAotICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2hleC10by1pbnRlZ2VyJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdmbG93LWVudHJ5fGRzdC1wb3J0LWZpZWxkJywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdkc3QtcG9ydCcsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAndmFsdWVzJyAgIDogZm10Y252LnRjcF9uYW1lX3RvX251bWJlcl9kaWN0LAotICAgICAgICAgICAgfSwKLSAgICAgICAgKQotICAgIH0sCi19Ci0jCi0jIEZPUk1BVFMKLSMKLQotaW1wb3J0IGZtdGNudgotCi0KLUZMT1dfRU5UUllfRk9STUFUID0gewotICAgICdmbG93LWVudHJ5JyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkbGUtdGltZW91dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdoYXJkLXRpbWVvdXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnY29va2llJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpbGRjYXJkcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdpbmdyZXNzLXBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjLW1hYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkc3QtbWFjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V0aGVyLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndmxhbi1pZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd2bGFuLXByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy1pcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkc3QtaXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndG9zLWJpdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjLXBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnZHN0LXBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6ICB7Ci0gICAgICAgICAgICAnc3dpdGNoJyAgICAgICA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcyB9LAotICAgICAgICAgICAgJ2V0aGVyLXR5cGUnICAgOiB7ICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9ldGhlcl90eXBlIH0sCi0gICAgICAgICAgICAncHJvdG9jb2wnICAgICA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX25ldHdvcmtfcHJvdG9jb2wgfSwKLSAgICAgICAgICAgICdzcmMtcG9ydCcgICAgIDogeyAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfc3JjX3BvcnQgfSwKLSAgICAgICAgICAgICdkc3QtcG9ydCcgICAgIDogeyAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfZHN0X3BvcnQgfSwKLSAgICAgICAgICAgICdpbmdyZXNzLXBvcnQnIDogeyAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfb3BlbmZsb3dfcG9ydCB9LAotICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLX0KLSIiIgotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9mbG93X2VudHJ5X21vZGVsLnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvZmxvd19lbnRyeV9tb2RlbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODk3ZjBhMy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9mbG93X2VudHJ5X21vZGVsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBjb21tYW5kIAotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgnZmxvdy1lbnRyeScpCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZW5hYmxlX2Nhc2NhZGVfZGVsZXRlKCdmbG93LWVudHJ5JykKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2Zsb3ctZW50cnknLCAnaGFyZC10aW1lb3V0JykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdmbG93LWVudHJ5JywgJ2lkbGUtdGltZW91dCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnZmxvdy1lbnRyeScsICdhY3Rpb25zJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdmbG93LWVudHJ5JywgJ2FjdGl2ZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnZmxvdy1lbnRyeScsICdwcmlvcml0eScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnZmxvdy1lbnRyeScsICdjb29raWUnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2Zsb3ctZW50cnknLCAnd2lsZGNhcmRzJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdmbG93LWVudHJ5JywgJ2luZ3Jlc3MtcG9ydCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnZmxvdy1lbnRyeScsICdzcmMtbWFjJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdmbG93LWVudHJ5JywgJ2RzdC1tYWMnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2Zsb3ctZW50cnknLCAndmxhbi1pZCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnZmxvdy1lbnRyeScsICd2bGFuLXByaW9yaXR5JykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdmbG93LWVudHJ5JywgJ2V0aGVyLXR5cGUnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2Zsb3ctZW50cnknLCAndG9zLWJpdHMnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2Zsb3ctZW50cnknLCAncHJvdG9jb2wnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2Zsb3ctZW50cnknLCAnc3JjLWlwJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdmbG93LWVudHJ5JywgJ2RzdC1pcCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnZmxvdy1lbnRyeScsICdzcmMtcG9ydCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnZmxvdy1lbnRyeScsICdkc3QtcG9ydCcpCi0KLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvZm9yd2FyZGluZy5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2ZvcndhcmRpbmcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDUyYzU2NzMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvZm9yd2FyZGluZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0iIiIKLSMgQ0xJIGZvciBmb3J3YXJkaW5nIGNvbmZpZ3VyYXRpb24KLSMKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDcmVhdGUgbmV3IENMSSBjb21tYW5kIGZvciBmb3J3YXJkaW5nCi0jCi0KLUZPUldBUkRJTkdfQ09ORklHX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnZm9yd2FyZGluZycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdDb25maWd1cmUgZm9yd2FyZGluZyBzZXJ2aWNlIHByb3BlcnRpZXMnLAotICAgICdkb2MnICAgICAgICAgIDogJ2ZvcndhcmRpbmd8Zm9yd2FyZGluZycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnZm9yd2FyZGluZ3xmb3J3YXJkaW5nLWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1vYmplY3QnLAotICAgICdvYmotdHlwZScgICAgIDogJ2ZvcndhcmRpbmctY29uZmlnJywKLSAgICAnYXJncyc6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2FyZ3MnIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgICA6ICdhY2Nlc3MtcHJpb3JpdHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uLXRleHQnICA6ICdhY2Nlc3MtcHJpb3JpdHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgICAgICA6ICdTZXQgcHJvcHJpdHkgZm9yIGZsb3dzIGNyZWF0ZWQgYnkgdGhlIGZvcndhcmRpbmcgc2VydmljZSBvbiBhbiBhY2Nlc3Mgc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICAgOiAnZm9yd2FyZGluZ3xmb3J3YXJkaW5nLWFjY2Vzcy1wcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hdGNoLWZvci1ubycgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgIDogJ2FjY2Vzcy1wcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgIDogJ1NldCBwcm9wcml0eSBmb3IgZmxvd3MgY3JlYXRlZCBieSB0aGUgZm9yd2FyZGluZyBzZXJ2aWNlIG9uIGFuIGFjY2VzcyBzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgICA6ICdmb3J3YXJkaW5nfGZvcndhcmRpbmctYWNjZXNzLXByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICAgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmdlJyAgICAgICAgICAgIDogKDAsIDIqKjE1LTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uLXRleHQnICA6ICcwLTMyNzY3JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF0Y2gtZm9yLW5vJyAgICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgIDogJ2ZvcndhcmRpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWNjZXNzLXByaW9yaXR5JzogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2FyZ3MnIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgICA6ICdjb3JlLXByaW9yaXR5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbi10ZXh0JyAgOiAnY29yZS1wcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgIDogJ1NldCBwcm9wcml0eSBmb3IgZmxvd3MgY3JlYXRlZCBieSB0aGUgZm9yd2FyZGluZyBzZXJ2aWNlIG9uIGEgY29yZSBzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgICA6ICdmb3J3YXJkaW5nfGZvcndhcmRpbmctY29yZS1wcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hdGNoLWZvci1ubycgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgIDogJ2NvcmUtcHJpb3JpdHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgICAgICA6ICdTZXQgcHJvcHJpdHkgZm9yIGZsb3dzIGNyZWF0ZWQgYnkgdGhlIGZvcndhcmRpbmcgc2VydmljZSBvbiBhIGNvcmUgc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICAgOiAnZm9yd2FyZGluZ3xmb3J3YXJkaW5nLWNvcmUtcHJpb3JpdHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgICA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZ2UnICAgICAgICAgICAgOiAoMCwgMioqMTUtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24tdGV4dCcgIDogJzAtMzI3NjcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXRjaC1mb3Itbm8nICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgICAgICAgICAgICAgOiAnZm9yd2FyZGluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JlLXByaW9yaXR5JyAgOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICksCi19Ci0iIiIKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2ZvcndhcmRpbmdfbW9kZWwucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9mb3J3YXJkaW5nX21vZGVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhNjk0NmY0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2ZvcndhcmRpbmdfbW9kZWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jIENMSSBmb3IgZm9yd2FyZGluZyBjb25maWd1cmF0aW9uCi0jCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRGlzYWJsZSBkaXJlY3QgYWNjZXNzIHRvIGZvcndhcmRpbmctY29uZmlnLCB1c2UgdGhlIG5ldyBDTEkgaW5zdGVhZAotIwotCi1pbXBvcnQgY29tbWFuZAotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX3N1Ym1vZGUoJ2ZvcndhcmRpbmctY29uZmlnJykKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvZm9yd2FyZGluZ19ydW5fY29uZmlnLnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvZm9yd2FyZGluZ19ydW5fY29uZmlnLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0NzkwYmVmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2ZvcndhcmRpbmdfcnVuX2NvbmZpZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgQ0xJIGZvciBmb3J3YXJkaW5nIGNvbmZpZ3VyYXRpb24KLSMKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBVcGRhdGUgcnVubmluZyBjb25maWcKLSMKLQotaW1wb3J0IHJ1bl9jb25maWcKLWRlZiBydW5uaW5nX2NvbmZpZ19mb3J3YXJkaW5nKGNvbnRleHQsIGNvbmZpZywgd29yZHMpOgotICAgIHRfb2JqX3R5cGUgPSAnZm9yd2FyZGluZy1jb25maWcnCi0KLSAgICBmb3J3YXJkaW5nX3RhYmxlID0gY29udGV4dC5nZXRfdGFibGVfZnJvbV9zdG9yZSh0X29ial90eXBlKQotICAgIGlmIGxlbihmb3J3YXJkaW5nX3RhYmxlKSA+IDE6Ci0gICAgICAgIHByaW50ICdydW5uaW5nX2NvbmZpZ19mb3J3YXJkaW5nOiBtb3JlIHRoYW4gb25lIGZvcndhcmRpbmcgcmVjb3JkJwotICAgIGlmIGxlbihmb3J3YXJkaW5nX3RhYmxlKSA9PSAwOgotICAgICAgICByZXR1cm4KLQotICAgIGZvcndhcmRpbmdfY29uZmlnID0gZm9yd2FyZGluZ190YWJsZVswXQotICAgIG5ld2xpbmVfcHJpbnRlZCA9IEZhbHNlCi0gICAgaWYgcnVuX2NvbmZpZy5ub3RfZGVmYXVsdF92YWx1ZSgKLSAgICAgICAgICAgIHRfb2JqX3R5cGUsICdhY2Nlc3MtcHJpb3JpdHknLAotICAgICAgICAgICAgZm9yd2FyZGluZ19jb25maWcuZ2V0KCdhY2Nlc3MtcHJpb3JpdHknKSk6Ci0gICAgICAgIGlmIG5ld2xpbmVfcHJpbnRlZCBpcyBGYWxzZToKLSAgICAgICAgICAgIG5ld2xpbmVfcHJpbnRlZCA9IFRydWUKLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoIiFcbiIpCi0gICAgICAgIGNvbmZpZy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgJ2ZvcndhcmRpbmcgYWNjZXNzLXByaW9yaXR5ICVzXG4nICUKLSAgICAgICAgICAgICAgICBmb3J3YXJkaW5nX2NvbmZpZy5nZXQoJ2FjY2Vzcy1wcmlvcml0eScpKQotICAgIGlmIHJ1bl9jb25maWcubm90X2RlZmF1bHRfdmFsdWUoCi0gICAgICAgICAgICB0X29ial90eXBlLCAnY29yZS1wcmlvcml0eScsCi0gICAgICAgICAgICBmb3J3YXJkaW5nX2NvbmZpZy5nZXQoJ2NvcmUtcHJpb3JpdHknKSk6Ci0gICAgICAgIGlmIG5ld2xpbmVfcHJpbnRlZCBpcyBGYWxzZToKLSAgICAgICAgICAgIG5ld2xpbmVfcHJpbnRlZCA9IFRydWUKLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoIiFcbiIpCi0gICAgICAgIGNvbmZpZy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgJ2ZvcndhcmRpbmcgY29yZS1wcmlvcml0eSAlc1xuJyAlCi0gICAgICAgICAgICAgICAgZm9yd2FyZGluZ19jb25maWcuZ2V0KCdjb3JlLXByaW9yaXR5JykpCi0KLWZvcndhcmRpbmdfcnVubmluZ19jb25maWdfdHVwbGUgPSAoCi0gICAgKAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBGYWxzZSwKLSAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdydW5uaW5nLWNvbmZpZycsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnZm9yd2FyZGluZycsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRm9yd2FyZGluZyBDb25maWd1cmF0aW9uJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdydW5uaW5nLWNvbmZpZ3xmb3J3YXJkaW5nLXNob3cnLAotICAgICAgICB9LAotICAgICksCi0pCi1ydW5fY29uZmlnLnJlZ2lzdGVyX3J1bm5pbmdfY29uZmlnKCdmb3J3YXJkaW5nJywgMjIwMCwgIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfY29uZmlnX2ZvcndhcmRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRpbmdfcnVubmluZ19jb25maWdfdHVwbGUpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2hvc3QucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9ob3N0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiNjViYjRlLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2hvc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NTAgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0iIiIKLUhPU1RfU1VCTU9ERV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdob3N0JywKLSAgICAnb2JqLXR5cGUnICAgICAgICAgICAgOiAnaG9zdC1jb25maWcnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdjb25maWcqJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnLXN1Ym1vZGUnLAotICAgICdwYXJlbnQtZmllbGQnICAgICAgICA6IE5vbmUsCi0gICAgJ2N1cnJlbnQtbW9kZS1vYmotaWQnIDogTm9uZSwKLSAgICAnc3VibW9kZS1uYW1lJyAgICAgICAgOiAnY29uZmlnLWhvc3QnLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdIb3N0IHN1Ym1vZGUsIGNvbmZpZ3VyZSBob3N0IGRldGFpbHMnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdob3N0fGhvc3QnLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdob3N0fGhvc3QtZXhhbXBsZScsCi0gICAgJ2RhdGEnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkcmVzcy1zcGFjZScgOiAnZGVmYXVsdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bGFuJyAgICAgICAgICA6ICcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgJ2FyZ3MnICAgICAgICAgICAgICAgIDogKAotICAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnYWRkcmVzcy1zcGFjZScsCi0gICAgICAgICAgICAndGFnJyAgICAgICAgICAgICA6ICdhZGRyZXNzLXNwYWNlJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICAgICA6ICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgJ290aGVyJyAgICAgICAgICAgOiAnYWRkcmVzcy1zcGFjZScsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICdob3N0fGhvc3QtYWRkcmVzcy1zcGFjZScsCi0gICAgICAgICB9LAotICAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAndmxhbicsCi0gICAgICAgICAgICAndGFnJyAgICAgICAgICAgICA6ICd2bGFuJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ3JhbmdlJyAgICAgICAgICAgOiAoMCw0MDk1KSwKLSAgICAgICAgICAgICdvcHRpb25hbCcgICAgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogVHJ1ZSwKLSAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgIDogJ2hvc3R8aG9zdC12bGFuJywKLSAgICAgICAgIH0sCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICA6ICdtYWMnLAotICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgOiAnaG9zdCcsCi0gICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgICA6IFsgJ2NvbXBsZXRlLWFsaWFzLWNob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgJ290aGVyJyAgICAgICAgICA6ICdob3N0JywKLSAgICAgICAgICAgICAnc2NvcGVkJyAgICAgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyAgIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgIH0KLSAgICApCi19Ci0iIiIKLQotaG9zdF9zaG93X21hY19hY3Rpb24gPSAoCi0gICAgewotICAgICAgICAncHJvYycgICAgICAgOiAncXVlcnktdGFibGUnLAotICAgICAgICAnb2JqLXR5cGUnICAgOiAnaG9zdCcsCi0gICAgfSwKLSAgICB7ICAgIyBhZGQgYW55IGFzc29jaWF0ZWQgdGFncwotICAgICAgICAncHJvYycgICAgICAgOiAnam9pbi10YWJsZScsCi0gICAgICAgICdvYmotdHlwZScgICA6ICd0YWctbWFwcGluZycsCi0gICAgICAgICdrZXknICAgICAgICA6ICdtYWMnLAotICAgICAgICAna2V5LXZhbHVlJyAgOiAndGFnJywgIyBjYXVzZXMgbGlzdCBjcmVhdGlvbiBmb3IgbXVsdGlwbGUgbWF0Y2hlcwotICAgICAgICAnam9pbi1maWVsZCcgOiAnbWFjJywKLSAgICAgICAgJ2FkZC1maWVsZCcgIDogJ3RhZycsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgICdwcm9jJyAgICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgJ2Zvcm1hdCcgICAgIDogJ2hvc3QnLAotICAgIH0sCi0pCi0KLQotSE9TVF9TSE9XX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgaG9zdCBzdW1tYXJpZXMnLAotICAgICdkb2MnICAgICAgICAgIDogJ2hvc3R8c2hvdycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnaG9zdHxzaG93LWV4YW1wbGUnLAotICAgICduby1zdXBwb3J0ZWQnIDogRmFsc2UsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgOiAnaG9zdCcsCi0gICAgICAgICAgICAnYWN0aW9uJyA6IGhvc3Rfc2hvd19tYWNfYWN0aW9uLAotICAgICAgICAgfQotICAgICkKLX0KLQotSE9TVF9TSE9XX01BQ19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IGhvc3QgZGV0YWlscyBiYXNlZCBvbiBxdWVyeScsCi0gICAgJ2RvYycgICAgICAgICAgOiAnaG9zdHxzaG93LWhvc3QnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ2hvc3R8c2hvdy1ob3N0LWV4YW1wbGUnLAotICAgICduby1zdXBwb3J0ZWQnIDogRmFsc2UsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAnaG9zdCcsCi0gICAgJ2FjdGlvbicgICAgICAgOiBob3N0X3Nob3dfbWFjX2FjdGlvbiwKLSAgICAnYXJncycgOiAoCi0gICAgICAgICdob3N0JywKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnbWFjJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgdGhlIGhvc3RzIHdpdGggdGhlIGdpdmVuIE1BQyBvciBhbGlhcycsCi0gICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ2hvc3QgbWFjIG9yIGFsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdob3N0fHNob3ctaG9zdC1tYWMnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdhZGRyZXNzLXNwYWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB0aGUgaG9zdHMgd2l0aCB0aGUgZ2l2ZW4gSVB2NCBhZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgJ3RhZycgICAgICAgICAgOiAnYWRkcmVzcy1zcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICA6ICdhZGRyZXNzIHNwYWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAnaG9zdHxzaG93LWhvc3QtYWRkcmVzcy1zcGFjZScsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2lwdjQnLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IHRoZSBob3N0cyB3aXRoIHRoZSBnaXZlbiBJUHY0IGFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAndGFnJyAgICAgICAgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ2lwIGFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdob3N0fHNob3ctaG9zdC1pcHY0JywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgdGhlIGhvc3RzIGF0dGFjaGVkIHRvIHRoZSBnaXZlbiBzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAndGFnJyAgICAgICAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgOiAnc3dpdGNoIGRwaWQgb3IgYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAjJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdob3N0fHNob3ctaG9zdC1zd2l0Y2gnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2hvc3QnLAotICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJzogJ1Nob3cgYWxsIGhvc3RzJywKLSAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICA6ICdhbGwnLAotICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgIDogJ2hvc3R8c2hvdy1ob3N0LWFsbCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICkKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnYnknLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1NvcnQgZGlzcGxheWVkIGhvc3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdyZXNlcnZlZHxieScsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgOiAnbGFzdC1zZWVuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJzogJ1NvcnQgYnkgdGhlIGxhc3Qgc2VlbiB0aW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdzb3J0JyAgICAgOiAnLWxhc3Qtc2VlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICA6ICdob3N0fHNob3ctaG9zdC1ieS1sYXN0LXNlZW4nLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICApCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAnZmllbGQnICAgICAgOiAnZGV0YWlsJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdEaXNwbGF5IGVpdGhlciBkZXRhaWxlZCBvciBicmllZiBpbmZvcm1hdGlvbicsCi0gICAgICAgICAgICAndmFsdWVzJyAgICAgOiAoJ2RldGFpbHMnLCdicmllZicpLAotICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2Zvcm1hdHwrJywKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLQotSE9TVF9TSE9XX01BQ19JVEVNU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IHZhcmlvdXMgaG9zdCByZWxhdGVkIGRldGFpbHMgYnkgcXVlcnknLAotICAgICdkb2MnICAgICAgICAgIDogJ2hvc3R8c2hvdy1ob3N0LWl0ZW1zJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdob3N0fHNob3ctaG9zdC1pdGVtcy1leGFtcGxlJywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdvYmotdHlwZScgICAgIDogJ2hvc3QnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgJ2hvc3QnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdtYWMnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdob3N0JywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB0aGUgaG9zdHMgd2l0aCB0aGUgZ2l2ZW4gTUFDIG9yIGFsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgOiAnaG9zdCBtYWMgb3IgYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1hbGlhcy1jaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ2hvc3R8c2hvdy1ob3N0LW1hYycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2lwdjQnLAotICAgICAgICAgICAgICAgICAgICAndGFnJyAgICAgICAgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB0aGUgaG9zdHMgd2l0aCB0aGUgZ2l2ZW4gSVB2NCBhZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ2lwIGFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdob3N0fHNob3ctaG9zdC1pcHY0JywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgdGhlIGhvc3RzIGF0dGFjaGVkIHRvIHRoZSBnaXZlbiBzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAndGFnJyAgICAgICAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgOiAnc3dpdGNoIGRwaWQgb3IgYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAjJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdob3N0fHNob3ctaG9zdC1zd2l0Y2gnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2hvc3QnLAotICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJzogJ1Nob3cgYWxsIGhvc3RzJywKLSAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICA6ICdhbGwnLAotICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgIDogJ2hvc3R8c2hvdy1ob3N0LWFsbCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICkKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnYXR0YWNobWVudC1wb2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnYXR0YWNobWVudC1wb2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAnaG9zdC1hdHRhY2htZW50LXBvaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTaG93IGhvc3QgYXR0YWNobWVudCBwb2ludHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2hvc3R8c2hvdy1ob3N0LWl0ZW0tYXR0YWNobWVudC1wb2ludCcsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgIDogJ2J5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTb3J0IGRpc3BsYXllZCBob3N0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAncmVzZXJ2ZWR8YnknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnaG9zdC1sYXN0LXNlZW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc29ydCcgICAgICAgOiAnaG9zdCwtbGFzdC1zZWVuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ2hvc3QtYXR0YWNobWVudC1wb2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1NvcnQgYnkgdGhlIGxhc3Qgc2VlbiB0aW1lIGZvciB0aGUgaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdob3N0fHNob3ctaG9zdC1ieS1ob3N0LWxhc3Qtc2VlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdsYXN0LXNlZW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc29ydCcgICAgICAgOiAnLWxhc3Qtc2VlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICdob3N0LWF0dGFjaG1lbnQtcG9pbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTb3J0IGJ5IHRoZSBsYXN0IHNlZW4gdGltZSBmb3IgdGhlIGF0dGFjaG1lbnQgcG9pbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnaG9zdHxzaG93LWhvc3QtYnktbGFzdC1zZWVuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2RldGFpbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAoJ2RldGFpbHMnLCAnYnJpZWYnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRGlzcGxheSBlaXRoZXIgZGV0YWlsZWQgb3IgYnJpZWYgaW5mb3JtYXRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2Zvcm1hdHwrJywKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICduZXR3b3JrLWFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgIDogJ2lwLWFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnIDogJ2hvc3QtbmV0d29yay1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICA6ICdob3N0fHNob3ctaG9zdC1pdGVtLW5ldHdvcmstYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyd0b2tlbic6ICdieScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCc6ICdTb3J0IGRpc3BsYXllZCBob3N0cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdob3N0LWxhc3Qtc2VlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnQnICAgICAgIDogJ2hvc3QsLWxhc3Qtc2VlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1NvcnQgYnkgdGhlIGxhc3Qgc2VlbiB0aW1lIGZvciB0aGUgaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgIDogJ2hvc3QtbmV0d29yay1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgIDogJ2hvc3R8c2hvdy1ob3N0LWJ5LWhvc3QtbGFzdC1zZWVuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgIDogJ2xhc3Qtc2VlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnQnICAgICAgIDogJy1sYXN0LXNlZW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTb3J0IGJ5IHRoZSBsYXN0IHNlZW4gdGltZSBmb3IgdGhlIG5ldHdvcmsgYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ2hvc3QtbmV0d29yay1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2hvc3R8c2hvdy1ob3N0LWJ5LWxhc3Qtc2VlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdkZXRhaWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogKCdkZXRhaWxzJywgJ2JyaWVmJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0Rpc3BsYXkgZWl0aGVyIGRldGFpbGVkIG9yIGJyaWVmIGluZm9ybWF0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdmb3JtYXR8KycKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdhbGlhcycsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ2FsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ2hvc3QtYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdEaXNwbGF5IGhvc3QgYWxpYXMgbWFwcGluZ3MnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnaG9zdHxzaG93LWhvc3QtaXRlbS1hbGlhcycsCi0gICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICkKLX0KLQotIiIiCi1IT1NUX0hPU1RfQUxJQVNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdob3N0LWFsaWFzJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctaG9zdCcsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnQXR0YWNoIGFsaWFzIHRvIGhvc3QnLAotICAgICdkb2MnICAgICAgICAgIDogJ2hvc3R8aG9zdC1hbGlhcycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnaG9zdHxob3N0LWFsaWFzLWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ21hbmFnZS1hbGlhcycsCi0gICAgJ29iai10eXBlJyAgICAgOiAnaG9zdC1hbGlhcycsCi0gICAgJ3Njb3BlZCcgICAgICAgOiBUcnVlLAotICAgICdyZXNlcnZlZCcgICAgIDogWyAnc3dpdGNoJywgJ2lwLWFkZHJlc3MnIF0sIAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdpZCcsCi0gICAgICAgICAgICAnYmFzZS10eXBlJyAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogRmFsc2UsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICAgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICB9Ci0gICAgKQotfQotCi0KLUhPU1RfU0VDVVJJVFlfUE9MSUNZX0JJTkRfSVBfQUREUkVTU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3NlY3VyaXR5JywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctaG9zdCcsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnQ29uZmlndXJlIHNlY3VyaXR5IHBvbGljaWVzIGZvciBob3N0JywKLSAgICAnZG9jJyAgICAgICAgICA6ICdob3N0fHNlY3VyaXR5JywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdob3N0fHNlY3VyaXR5LWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1vYmplY3QnLAotICAgICdwYXJlbnQtZmllbGQnIDogJ2hvc3QnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nIDogJ3BvbGljeScsCi0gICAgICAgICAgICAnZG9jJyAgIDogJ2hvc3R8c2VjdXJpdHktcG9saWN5JywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyA6ICdiaW5kJywKLSAgICAgICAgICAgICdkb2MnICAgOiAnaG9zdHxzZWN1cml0eS1iaW5kJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICd0YWcnICAgICAgICAgICAgIDogJ2lwLWFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAnYmFzZS10eXBlJyAgICAgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgIyBjb3VsZCBwb3NzaWJseSBjb21wbGV0ZSBhbGwgaXAtYWRkcmVzc2VzCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgICAgIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICAgICAgIDogJ2hvc3Qtc2VjdXJpdHktaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICAgICAgIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgICduby1hY3Rpb24nICAgICAgIDogJ2RlbGV0ZS1vYmplY3RzJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgOiAncmVzdHJpY3QgaG9zdCBhY2Nlc3MgdG8gaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgIDogJ2hvc3R8c2VjdXJpdHktaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgIDogJ2F0dGFjaG1lbnQtcG9pbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgOiAncmVzdHJpY3QgaG9zdCBhY2Nlc3MgdG8gYXR0YWNobWVudCBwb2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICdob3N0fHNlY3VyaXR5LWF0dGFjaG1lbnQtcG9pbnQnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnY2hvaWNlcycgOiAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgICAgICA6ICdhbGwnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2RwaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgICAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1hbGlhcy1jaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICAgICAgIDogJ3N3aXRjaGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ290aGVyJyAgICAgICAgICAgOiAnc3dpdGNoZXN8ZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgICAgIDogJ3N3aXRjaCBkcGlkIG9yIGFsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgICAgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICAgICA6ICdpZGVudGlmeSBzd2l0Y2ggZm9yIGF0dGFjaG1lbnQgcG9pbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICdob3N0fHNlY3VyaXR5LWF0dGFjaG1lbnQtcG9pbnQtc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdpZi1uYW1lLXJlZ2V4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc3ludGF4LWhlbHAnICAgICA6ICdSZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2ggZm9yIGludGVyZmFjZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgICAgICAgOiAnd3JpdGUtb2JqZWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICduby1hY3Rpb24nICAgICAgIDogJ2RlbGV0ZS1vYmplY3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICAgICAgIDogJ2hvc3Qtc2VjdXJpdHktYXR0YWNobWVudC1wb2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICAgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgICAgIDogJ2ludGVyZmFjZXN8cG9ydE5hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgICAgICAgICAgOiAnc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgICAgIDogJ2lkZW50aWZ5IGludGVyZmFjZSBmb3IgYXR0YWNobWVudCBwb2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICdob3N0fHNlY3VyaXR5LWF0dGFjaG1lbnQtcG9pbnQtaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICApLAotfQotIiIiCi0KLSMKLSMgRk9STUFUUwotIwotCi1pbXBvcnQgZm10Y252Ci0KLQotSE9TVF9GT1JNQVQgPSB7Ci0gICAgJ2hvc3QnOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnSWR4JywgJ2lkJywgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAnaXBzJywgJ2F0dGFjaG1lbnQtcG9pbnRzJyBdLAotICAgICAgICAgICAgJ2RldGFpbHMnIDogWyAnSWR4JywgJ2lkJywgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAndmVuZG9yJywgJ2lwcycsICdhdHRhY2htZW50LXBvaW50cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdicmllZicgICA6IFsgJ0lkeCcsICdpZCcsICdpcHMnXSwKLSAgICAgICAgICAgIH0sCi0KLQotICAgICAgICAnZmllbGRzJzogewotICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnTUFDIEFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9ob3N0X2FuZF9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbWFjJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZSc6ICdNQUMgQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X2hvc3RfYW5kX2FsaWFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQWRkcmVzcyBTcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ZlbmRvcicgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5zYW5pdGl6ZV91bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd2bGFuJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZSc6ICdWTEFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF90b19zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2lwcycgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdJUCBBZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaXBfYWRkcmVzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW50cnktZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9hbGxfaXBfYWRkcmVzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdhdHRhY2htZW50LXBvaW50cycgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnU3dpdGNoL09GIFBvcnQgKFBoeXNpY2FsIFBvcnQpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaG9zdF9hdHRhY2htZW50X3BvaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW50cnktZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9hbGxfaG9zdF9hdHRhY2htZW50X3BvaW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndGFnJyAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X2hvc3RfdGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VudHJ5LWZvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfYWxsX2hvc3RfdGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGhjcC1jbGllbnQtbmFtZScgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0RIQ1AgQ2xpZW50IE5hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdsYXN0LXNlZW4nICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZSc6ICdMYXN0IFNlZW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF90aW1lX3NpbmNlX3V0YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLX0KLQotCi1IT1NUX0FUVEFDSE1FTlRfUE9JTlRfRk9STUFUID0gewotICAgICdob3N0LWF0dGFjaG1lbnQtcG9pbnQnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsICdtYWMnLCAndmxhbicsICdhZGRyZXNzLXNwYWNlJywgJ3N3aXRjaCcsICdpbmdyZXNzLXBvcnQnLCAnc3RhdHVzJywgXSwKLSAgICAgICAgICAgICdkZXRhaWxzJyA6IFsgJ0lkeCcsICdtYWMnLCAndmxhbicsICdhZGRyZXNzLXNwYWNlJywgJ3N3aXRjaCcsICdpbmdyZXNzLXBvcnQnLCAnc3RhdHVzJywgJ2xhc3Qtc2VlbiddLAotICAgICAgICAgICAgfSwKLQotICAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICdtYWMnICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnTUFDIEFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaG9zdF9hbmRfYWxpYXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndmxhbicgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZSc6ICdWTEFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF90b19zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQWRkcmVzcyBTcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2ggSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfc3dpdGNoX2FuZF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2luZ3Jlc3MtcG9ydCcgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJzogJ1BvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnc3RhdHVzJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJzogJ0Vycm9yIFN0YXR1cyAoaWYgYW55KScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdsYXN0LXNlZW4nICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnTGFzdCBTZWVuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi50aW1lc3RhbXBfdG9fbG9jYWxfdGltZXN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICB9LAotICAgICAgICAgfSwKLX0KLQotCi1IT1NUX05FVFdPUktfQUREUkVTU19GT1JNQVQgPSB7Ci0gICAgJ2hvc3QtbmV0d29yay1hZGRyZXNzJzogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsICdtYWMnLCAnYWRkcmVzcy1zcGFjZScsICd2bGFuJywgJ2lwLWFkZHJlc3MnLCAgXSwKLSAgICAgICAgICAgICdkZXRhaWxzJyA6IFsgJ0lkeCcsICdtYWMnLCAnYWRkcmVzcy1zcGFjZScsICd2bGFuJywgJ2lwLWFkZHJlc3MnLCAnbGFzdC1zZWVuJyAgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAnbWFjJyAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnTUFDIEFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd2bGFuJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZSc6ICdWTEFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWRkcmVzcy1zcGFjZScgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0FkZHJlc3MgU3BhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdpZCcgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaXAtYWRkcmVzcyc6ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnSVAgQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbGFzdC1zZWVuJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJzogJ0xhc3QgU2VlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYudGltZXN0YW1wX3RvX2xvY2FsX3RpbWVzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotICAgICAgICB9LAotfQotCi0KLUhPU1RfQUxJQVNfRk9STUFUID0gewotICAgICdob3N0LWFsaWFzJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgIDogWyAnSWR4JywgJ2lkJywgJ2FkZHJlc3Mtc3BhY2UnLCAndmxhbicsICdtYWMnIF0KLSAgICAgICAgICAgIH0sCi0gICAgICAgIH0sCi19Ci0KLSIiIgotSE9TVF9DT05GSUdfRk9STUFUID0gewotICAgICdob3N0LWNvbmZpZycgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnSWR4JywgJ21hYycsICd2bGFuJywgJ3ZlbmRvcicsICdpcHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYXR0YWNobWVudC1wb2ludHMnLCAndGFnJywgJ2xhc3Qtc2VlbicgXSwKLSAgICAgICAgICAgICdicmllZicgICA6IFsgJ0lkeCcsICdtYWMnLCAndmxhbicsICdpcHMnLCAnbGFzdC1zZWVuJ10sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICdtYWMnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJzogJ01BQyBBZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaG9zdF9hbmRfYWxpYXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ZlbmRvcicgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5zYW5pdGl6ZV91bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd2bGFuJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZSc6ICdWTEFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF90b19zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2lwcycgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdJUCBBZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaXBfYWRkcmVzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW50cnktZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9hbGxfaXBfYWRkcmVzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdhdHRhY2htZW50LXBvaW50cycgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnU3dpdGNoL09GIFBvcnQgKFBoeXNpY2FsIFBvcnQpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaG9zdF9hdHRhY2htZW50X3BvaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW50cnktZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9hbGxfaG9zdF9hdHRhY2htZW50X3BvaW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndGFnJyAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X2hvc3RfdGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VudHJ5LWZvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfYWxsX2hvc3RfdGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaG9zdC1hbGlhcycgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2xhc3Qtc2VlbicgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJzogJ0xhc3QgU2VlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X3RpbWVfc2luY2VfdXRjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAgICB9LAotfQotIiIiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvaG9zdF9tb2RlbC5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2hvc3RfbW9kZWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDM0ZjIwMTQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvaG9zdF9tb2RlbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1pbXBvcnQgY29tbWFuZAotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgnaG9zdC1zZWN1cml0eS1pcC1hZGRyZXNzJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCdob3N0LXNlY3VyaXR5LWF0dGFjaG1lbnQtcG9pbnQnKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgnaG9zdCcsICdsYXN0LXNlZW4nKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX3NldF9jYXNlKCdob3N0JywgJ21hYycsICdsb3dlcicpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX3NldF9jYXNlKCdob3N0LWNvbmZpZycsICdtYWMnLCAnbG93ZXInKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2VuYWJsZV9jYXNjYWRlX2RlbGV0ZSgnaG9zdC1jb25maWcnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9lbmFibGVfY2FzY2FkZV9kZWxldGUoJ2hvc3QtYWxpYXMnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9lbmFibGVfY2FzY2FkZV9kZWxldGUoJ2hvc3Qtc2VjdXJpdHktaXAtYWRkcmVzcycpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2VuYWJsZV9jYXNjYWRlX2RlbGV0ZSgnaG9zdC1zZWN1cml0eS1hdHRhY2htZW50LXBvaW50JykKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2hvc3QtY29uZmlnJywgJ3ZsYW4nKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ2hvc3QtY29uZmlnJywgJ2xhc3Qtc2VlbicpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9pbnRlcm5hbC5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2ludGVybmFsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1ZmU3YWQyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2ludGVybmFsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjY5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEwLDIwMTEsMjAxMiwyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotIiIiCi1pbXBvcnQgY29tbWFuZAotCi1JTlRFUk5BTF9TVUJNT0RFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ2ludGVybmFsJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnJywKLSAgICAnbm8tc3VwcG9ydGVkJyAgICAgICAgOiBGYWxzZSwKLSAgICAnaGVscCcgICAgICAgICAgICAgICAgOiAnRW50ZXIgSW50ZXJuYWwgQ0xJIGRlYnVnZ2luZyBtb2RlJywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnRW50ZXIgQ0xJIGludGVybmFsIGRlYnVnZ2luZyBtb2RlJywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnaW50ZXJuYWx8aW50ZXJuYWwnLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdpbnRlcm5hbHxpbnRlcm5hbC1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnY29uZmlnLXN1Ym1vZGUnLAotICAgICdvYmotdHlwZScgICAgICAgICAgICA6IE5vbmUsCi0gICAgJ2N1cnJlbnQtbW9kZS1vYmotaWQnIDogTm9uZSwKLSAgICAncGFyZW50LWZpZWxkJyAgICAgICAgOiBOb25lLAotICAgICdzdWJtb2RlLW5hbWUnICAgICAgICA6ICdjb25maWctaW50ZXJuYWwnLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6ICgpLAotfQotCi1JTlRFUk5BTF9TSE9XX0lOVEVSRkFDRVNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgOiAnY29uZmlnLWludGVybmFsJywKLSAgICAnbm8tc3VwcG9ydGVkJyAgICAgIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICA6ICdTaG93IHN5c3RlbSBpbnRlcmZhY2VzJywKLSAgICAnZG9jJyAgICAgICAgICAgICAgIDogJ2ludGVybmFsfHNob3ctaW50ZXJmYWNlcycsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICA6ICdpbnRlcm5hbHxzaG93LWludGVyZmFjZXMtZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICAnc3lzdGVtJywKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgOiAnaW50ZXJmYWNlcycsCi0gICAgICAgICAgICAnYWN0aW9uJyA6ICdkaXNwbGF5LXJlc3QnICwKLSAgICAgICAgICAgICd1cmwnICAgIDogJ3N5c3RlbS9pbnRlcmZhY2VzLycsCi0gICAgICAgICAgICAnZm9ybWF0JyA6ICdzeXN0ZW0taW50ZXJmYWNlcycsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgOiAnZGV0YWlsJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgIDogKCdkZXRhaWxzJywnYnJpZWYnKSwKLSAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgJ2RvYycgICAgICA6ICdmb3JtYXR8KycKLSAgICAgICAgfQotICAgICkKLX0KLURFQlVHX0lOVEVSTkFMX1RPUE9MT0dZX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnaW50ZXJuYWwnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1pbnRlcm5hbCcsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS1yZXN0JywKLSAgICAndXJsJyAgICAgICAgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcm5hbC1kZWJ1Z3MvdG9wb2xvZ3ktbWFuYWdlci8lKGRwaWQpcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWwtZGVidWdzL3RvcG9sb2d5LW1hbmFnZXIvJywKLSAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgJ2Zvcm1hdCcgICAgICAgOiAnc3dpdGNoJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdpbnRlcm5hbCB0b3BvbG9neSBkaXNwbGF5JywKLSAgICAnZG9jJyAgICAgICAgICA6ICdpbnRlcm5hbHxpbnRlcm5hbC10b3BvbG9neScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICd0b3BvbG9neScsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgOiAndHJ1ZScsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICkKLSAgICAgICAgfQotICAgICkKLX0KLQotREVCVUdfSU5URVJOQUxfQ0xVU1RFUl9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ2ludGVybmFsJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctaW50ZXJuYWwnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktcmVzdCcsCi0gICAgJ3VybCcgICAgICAgICAgOiAncmVhbHRpbWVzdGF0dXMvbmV0d29yay9jbHVzdGVyJywKLSAgICAnZm9ybWF0JyAgICAgICA6ICdzd2l0Y2gnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ2ludGVybmFsIHN3aXRjaCBjbHVzdGVyIGRpc3BsYXknLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnY2x1c3RlcicsCi0gICAgKQotfQotCi0KLVNIT1dfVk5TX0FDQ0VTU19MSVNUX0VOVFJZX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ29iai10eXBlJyAgICAgOiAndm5zLWFjY2Vzcy1saXN0LWVudHJ5JywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IHZucy1hY2Nlc3MtbGlzdC1lbnRyeSBkYiB0YWJsZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAnaW50ZXJuYWx8c2hvdy12bnMtYWNjZXNzLWxpc3QtZW50cnknLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1pbnRlcm5hbCcsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICd2bnMtYWNjZXNzLWxpc3QtZW50cnknLAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3ZucycsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgOiAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICdvdGhlcicgICAgICA6ICd2bnMtZGVmaW5pdGlvbicsCi0gICAgICAgICAgICAnaGVscC1uYW1lJyAgOiAiPHZucy1pZD4iLAotICAgICAgICAgICAgJ2RldGFpbCcgICAgIDogJ2RlZmF1bHQnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2FjbCcsCi0gICAgICAgICAgICAndGFnJyAgICAgICAgOiAnYWNsJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJyAgIDogVHJ1ZSwKLSAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdydWxlJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICA6ICdydWxlJywKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLSAgICAKLVNIT1dfUE9SVF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdvYmotdHlwZScgICAgIDogJ3BvcnQnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgcG9ydCBkYiB0YWJsZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAnaW50ZXJuYWx8c2hvdy1wb3J0JywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctaW50ZXJuYWwnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAncG9ydCcsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdpZCcsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ29iai10eXBlJywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgJ3BhcmVudC1pZCcgIDogTm9uZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICA6IFRydWUsCi0gICAgICAgICAgICAndGFnJyAgICAgICAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3N3aXRjaGVzJywKLSAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnbnVtYmVyJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgIDogJ3BvcnQnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2RldGFpbCcsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogKCdkZXRhaWxzJywgJ2JyaWVmJyksCi0gICAgICAgIH0KLSAgICApCi19Ci0KLQotU0hPV19WTlNfSU5URVJGQUNFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ29iai10eXBlJyAgICAgOiAndm5zLWludGVyZmFjZScsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB2bnMtaW50ZXJmYWNlIGRiIHRhYmxlJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdpbnRlcm5hbHxzaG93LXZucy1pbnRlcmZhY2UnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1pbnRlcm5hbCcsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICd2bnMtaW50ZXJmYWNlJywKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2lkJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICA6ICd2bnMnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgJ3BhcmVudC1pZCcgIDogJ3ZucycsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgJ3RhZycgICAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdudW1iZXInLAotICAgICAgICAgICAgJ3RhZycgICAgICAgOiAnbnVtYmVyJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ2hlbHAtbmFtZScgOiAnT0YgUG9ydCBOdW1iZXInLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICB9LAotICAgICkKLX0KLQotCi1TSE9XX1ZOU19JTlRFUkZBQ0VfUlVMRV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdvYmotdHlwZScgICAgIDogJ3Zucy1pbnRlcmZhY2UtcnVsZScsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB2bnMtaW50ZXJmYWNlLXJ1bGUgZGIgdGFibGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ2ludGVybmFsfHNob3ctdm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctaW50ZXJuYWwnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAndm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3ZucycsCi0gICAgICAgICAgICAndGFnJyAgICAgICAgOiAndm5zJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdwYXJlbnQtaWQnICA6ICd2bnMnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgOiAncnVsZScsCi0gICAgICAgICAgICAndGFnJyAgICAgIDogJ3J1bGUnLAotICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLQotSU5URVJOQUxfU0hPV19ERVZJQ0VfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgOiAnY29uZmlnLWludGVybmFsJywKLSAgICAnbm8tc3VwcG9ydGVkJyAgICAgIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICA6ICdTaG93IGNvbnRyb2xsZXIgZGV2aWNlcycsCi0gICAgJ2RvYycgICAgICAgICAgICAgICA6ICdpbnRlcm5hbHxzaG93LWNvbnRyb2xsZXItZGV2aWNlcycsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICAnY29udHJvbGxlcicsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgIDogJ2RldmljZXMnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICA6ICdkaXNwbGF5LXJlc3QnICwKLSAgICAgICAgICAgICAgICAgICAgJ3VybCcgICAgICAgOiAnZGV2aWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgICAgOiAnY29udHJvbGxlci1kZXZpY2VzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICA6ICd2bnMnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICA6ICdkaXNwbGF5LXJlc3QnICwKLSAgICAgICAgICAgICAgICAgICAgJ3VybCcgICAgICAgOiAndm5zJywKLSAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgICAgOiAnY29udHJvbGxlci12bnMnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICA6ICdpbnRlcmZhY2VzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICA6ICdkaXNwbGF5LXJlc3QnICwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCcgICAgICAgOiAndm5zL2ludGVyZmFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXQnICAgIDogJ2NvbnRyb2xsZXItdm5zLWludGVyZmFjZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICA6ICdkZXZpY2UtaW50ZXJmYWNlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgOiAnZGlzcGxheS1yZXN0JyAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cmwnICAgICAgIDogJ3Zucy9kZXZpY2UtaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgICAgOiAnY29udHJvbGxlci12bnMtZGV2aWNlLWludGVyZmFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgIDogJ2RldGFpbCcsCi0gICAgICAgICAgICAndHlwZScgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICA6ICgnZGV0YWlscycsJ2JyaWVmJyksCi0gICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgfQotICAgICkKLX0KLQotCi1kZWYgZGlzcGxheV9zY2hlbWEoZGF0YSk6Ci0gICAgcmV0dXJuIGNvbW1hbmQuc2Ruc2guc2RuZGIuc2NoZW1hX2RldGFpbChkYXRhWydwYXRoJ10pCi0KLWNvbW1hbmQuYWRkX2FjdGlvbignZGlzcGxheS1zY2hlbWEnLCAgZGlzcGxheV9zY2hlbWEsCi0gICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnIDogeyAnZGF0YScgOiAnJGRhdGEnIH0gfSApCi0KLUlOVEVSTkFMX1NIT1dfU0NIRU1BX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICAgICAgIDogJ2NvbmZpZy1pbnRlcm5hbCcsCi0gICAgJ2ZlYXR1cmUnICAgICAgICAgICA6ICdleHBlcmltZW50YWwnLAotICAgICduby1zdXBwb3J0ZWQnICAgICAgOiBGYWxzZSwKLSAgICAnc2hvcnQtaGVscCcgICAgICAgIDogJ1Nob3cgY29udHJvbGxlciBkZXZpY2VzJywKLSAgICAnYWN0aW9uJyAgICAgICAgICAgIDogJ2Rpc3BsYXktc2NoZW1hJywKLSAgICAnYXJncycgOiAoCi0gICAgICAgICdzY2hlbWEnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdwYXRoJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgIDogJ3N0cmluZycsCi0gICAgICAgIH0sCi0gICAgKSwKLX0KLQotCi1kZWYgbGludF9hY3Rpb24oZGF0YSk6Ci0gICAgd29yZHMgPSBbXQotICAgIGlmICdjb21tYW5kJyBpbiBkYXRhOgotICAgICAgICB3b3Jkcy5hcHBlbmQoZGF0YVsnY29tbWFuZCddKQotICAgIGNvbW1hbmQubGludF9jb21tYW5kKHdvcmRzKQotCi1jb21tYW5kLmFkZF9hY3Rpb24oJ2xpbnQtYWN0aW9uJywgIGxpbnRfYWN0aW9uLAotICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJyA6IHsgJ2RhdGEnIDogJyRkYXRhJyB9IH0gKQotCi1JTlRFUk5BTF9MSU5UX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnbGludCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLWludGVybmFsJywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICdhY3Rpb24nICAgICAgIDogJ2xpbnQtYWN0aW9uJywKLSAgICAnYXJncycgICAgICAgICA6IHsKLSAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICdmaWVsZCcgICAgOiAnY29tbWFuZCcsCi0gICAgICAgICd0eXBlJyAgICAgOiAnc3RyaW5nJywKLSAgICB9Ci19Ci0KLQotZGVmIHBlcm11dGVfYWN0aW9uKGRhdGEpOgotICAgIHdvcmRzID0gW10KLSAgICBpZiAnY29tbWFuZCcgaW4gZGF0YToKLSAgICAgICAgd29yZHMuYXBwZW5kKGRhdGFbJ2NvbW1hbmQnXSkKLSAgICByZXR1cm4gY29tbWFuZC5wZXJtdXRlX2NvbW1hbmQod29yZHMsIGRhdGEuZ2V0KCdxdWFsaWZ5JykpCi0KLWNvbW1hbmQuYWRkX2FjdGlvbigncGVybXV0ZS1hY3Rpb24nLCAgcGVybXV0ZV9hY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnIDogeyAnZGF0YScgOiAnJGRhdGEnIH0gfSApCi0KLQotSU5URVJOQUxfUEVSTVVURV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Blcm11dGUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1pbnRlcm5hbCcsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBGYWxzZSwKLSAgICAnYWN0aW9uJyAgICAgICA6ICdwZXJtdXRlLWFjdGlvbicsCi0gICAgJ2RhdGEnICAgICAgICAgOiB7ICdxdWFsaWZ5JyA6IEZhbHNlIH0sCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdjb21tYW5kJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLQotSU5URVJOQUxfUVVBTElGWV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3F1YWxpZnknLCAgIyBiZXJhdGUKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctaW50ZXJuYWwnLAotICAgICduby1zdXBwb3J0ZWQnIDogRmFsc2UsCi0gICAgJ2FjdGlvbicgICAgICAgOiAncGVybXV0ZS1hY3Rpb24nLAotICAgICdkYXRhJyAgICAgICAgIDogeyAncXVhbGlmeScgOiBUcnVlIH0sCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdjb21tYW5kJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLQotZGVmIGNsaWRvY19hY3Rpb24oZGF0YSk6Ci0gICAgd29yZHMgPSBbXQotICAgIGlmICdjb21tYW5kJyBpbiBkYXRhOgotICAgICAgICB3b3Jkcy5hcHBlbmQoZGF0YVsnY29tbWFuZCddKQotICAgIHJldHVybiBjb21tYW5kLmdldF9jbGlkb2Mod29yZHMpCi0KLWNvbW1hbmQuYWRkX2FjdGlvbignY2xpZG9jLWFjdGlvbicsICBjbGlkb2NfYWN0aW9uLAotICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJyA6IHsgJ2RhdGEnIDogJyRkYXRhJyB9LCB9ICkKLQotCi1JTlRFUk5BTF9DTElET0NfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdjbGlkb2MnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1pbnRlcm5hbCcsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBGYWxzZSwKLSAgICAnYWN0aW9uJyAgICAgICA6ICdjbGlkb2MtYWN0aW9uJywKLSAgICAnYXJncycgICAgICAgICA6IHsKLSAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICdmaWVsZCcgICAgOiAnY29tbWFuZCcsCi0gICAgICAgICd0eXBlJyAgICAgOiAnc3RyaW5nJywKLSAgICB9Ci19Ci0KLWRlZiBjbGl3aWtpX2FjdGlvbihkYXRhKToKLSAgICB3b3JkcyA9IFtdCi0gICAgaWYgJ2NvbW1hbmQnIGluIGRhdGE6Ci0gICAgICAgIHdvcmRzLmFwcGVuZChkYXRhWydjb21tYW5kJ10pCi0gICAgcmV0dXJuIGNvbW1hbmQuZ2V0X2NsaXdpa2kod29yZHMpCi0KLWNvbW1hbmQuYWRkX2FjdGlvbignY2xpd2lraS1hY3Rpb24nLCAgY2xpd2lraV9hY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnIDogeyAnZGF0YScgOiAnJGRhdGEnIH0sIH0gKQotSU5URVJOQUxfQ0xJV0lLSV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ2NsaXdpa2knLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1pbnRlcm5hbCcsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBGYWxzZSwKLSAgICAnYWN0aW9uJyAgICAgICA6ICdjbGl3aWtpLWFjdGlvbicsCi0gICAgJ2FyZ3MnICAgICAgICAgOiB7Ci0gICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAnZmllbGQnICAgIDogJ2NvbW1hbmQnLAotICAgICAgICAndHlwZScgICAgIDogJ3N0cmluZycsCi0gICAgfQotfQotCi1TSE9XX0NMSV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1pbnRlcm5hbCcsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyBDTEkgZGV0YWlscycsCi0gICAgJ2RvYycgICAgICAgICAgOiAnaW50ZXJuYWx8c2hvdy1jbGknLAotICAgICdhY3Rpb24nICAgICAgIDogJ2Rpc3BsYXktY2xpJywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnY2xpJywKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAnZmllbGQnICAgIDogJ2RldGFpbCcsCi0gICAgICAgICAgICAndHlwZScgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICA6ICgnZGV0YWlscycpLAotICAgICAgICB9LAotICAgICkKLX0KLQotCi0jCi0jIEZPUk1BVFMKLSMKLQotaW1wb3J0IGZtdGNudgotCi0KLVNZU1RFTV9JTlRFUkZBQ0VTX0ZPUk1BVCA9IHsKLSAgICAnc3lzdGVtLWludGVyZmFjZXMnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJzogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ25hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV0bWFzaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jyb2FkY2FzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAncGVlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RldGFpbHMnIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ldG1hc2snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdicm9hZGNhc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwZWVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnYnJpZWYnICAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lkeCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZHInLAotICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICduYW1lJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdJRiBOYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWRkcicgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnSVAgQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BlZXInICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduZXRtYXNrJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYnJvYWRjYXN0JyAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICB9Ci0gICAgfSwKLX0KLQotCi1QT1JUX0ZPUk1BVCA9IHsKLSAgICAncG9ydCcgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnSWR4JywgJ3N3aXRjaCcsICdudW1iZXInLCAnbmFtZScsICdoYXJkd2FyZS1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZycsICdzdGF0ZScsICdjdXJyZW50LWZlYXR1cmVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkdmVydGlzZWQtZmVhdHVyZXMnLCAnc3VwcG9ydGVkLWZlYXR1cmVzJywgJ3BlZXItZmVhdHVyZXMnIF0sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICdzd2l0Y2gnICAgICAgICAgICAgICA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdudW1iZXInICAgICAgICAgICAgICA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnY29uZmlnJyAgICAgICAgICAgICAgOiB7ICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvbmZpZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzdGF0ZScgICAgICAgICAgICAgICA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnY3VycmVudC1mZWF0dXJlcycgICAgOiB7ICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2ZlYXR1cmVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FkdmVydGlzZWQtZmVhdHVyZXMnIDogeyAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9mZWF0dXJlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzdXBwb3J0ZWQtZmVhdHVyZXMnICA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfZmVhdHVyZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncGVlci1mZWF0dXJlcycgICAgICAgOiB7ICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2ZlYXR1cmVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi0KLUNPTlRST0xMRVJfVk5TX0ZPUk1BVCA9IHsKLSAgICAnY29udHJvbGxlci12bnMnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdhcnBNYW5hZ2VyTW9kZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdicm9hZGNhc3RNb2RlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RoY3BNYW5hZ2VyTW9kZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkaGNwSXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnbmFtZScgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnTmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdhY3RpdmUnICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdBY3RpdmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncHJpb3JpdHknICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnUHJpb3JpdHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYXJwTWFuYWdlck1vZGUnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQXJwIE1vZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYnJvYWRjYXN0TW9kZScgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQnJvYWRjYXN0IE1vZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGhjcE1hbmFnZXJNb2RlJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnRGhjcCBNb2RkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RoY3BJcCcgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ2RoY3BJcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAgICB9LAotfQotCi0KLUNPTlRST0xMRVJfVk5TX0lOVEVSRkFDRVMgPSB7Ci0gICAgJ2NvbnRyb2xsZXItdm5zLWludGVyZmFjZXMnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgIH0sCi19Ci0KLQotQ09OVFJPTExFUl9WTlNfREVGSUNFX0lOVEVSRkFDRVMgPSB7Ci0gICAgICAgICdjb250cm9sbGVyLXZucy1kZXZpY2UtaW50ZXJmYWNlcycgOiB7Ci0gICAgICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWZhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICB9LAotICAgICAgICB9LAotfQotCi0KLUNPTlRST0xMRVJfREVWSUNFU19GT1JNQVQgPSB7Ci0gICAgJ2NvbnRyb2xsZXItZGV2aWNlcycgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnSWR4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdhdHRhY2htZW50LXBvaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lwdjQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndmxhbicsCi0gICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgIH0sCi0KLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnbWFjJyAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnTUFDIEFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuY29udmVydF90b19zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdpcHY0JyAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdJUCBBZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfdG9fc3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYXR0YWNobWVudC1wb2ludCcgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQXR0YWNobWVudCBQb2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5jb252ZXJ0X3RvX3N0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ZsYW4nICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1ZsYW5zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmNvbnZlcnRfdG9fc3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgIH0sCi0gICAgfSwKLX0KLQotREVWSUNFTUFOQUdFUl9ERVZJQ0VfRk9STUFUID0gewotICAgICdkZXZpY2VtYW5hZ2VyLWRldmljZScgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXR0YWNobWVudC1wb2ludHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrLWFkZHJlc3NlcycKLSAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgfSwKLQotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICdob3N0JyAgICAgICAgICAgICAgOiB7ICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X2hvc3RfYW5kX2FsaWFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYXR0YWNobWVudC1wb2ludHMnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQXR0YWNobWVudCBQb2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9kZXZpY2VtYW5hZ2VyX2F0dGFjaG1lbnRfcG9pbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmV0d29yay1hZGRyZXNzZXMnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnSVAgQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9kZXZpY2VtYW5hZ2VyX2lwX2FkZHJlc3NlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgIH0sCi0gICAgfSwKLX0KLQotCi1DTElfRk9STUFUID0gewotICAgICdjbGknICA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbCi0gICAgICAgICAgICAgICAgJ3ZlcnNpb24nLAotICAgICAgICAgICAgICAgICdkZWJ1ZycsCi0gICAgICAgICAgICAgICAgJ2Rlc2MnCi0gICAgICAgICAgICAgICAgJ2Zvcm1hdCcsCi0gICAgICAgICAgICAgICAgJ21vZGVzJywKLSAgICAgICAgICAgIF0KLSAgICAgICAgfSwKLQotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICd2ZXJzaW9uJyA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU3ludGF4IFZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkZWJ1ZycgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRGVidWcgTGV2ZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkZXNjJyAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRGVzYyBNb2R1bGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZm9ybWF0JyAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0Zvcm1hdCBNb2R1bGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbW9kZXMnICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1N1Ym1vZGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgIH0sCi0gICAgfSwKLX0KLQotQ0xJX01PREVTX0ZPUk1BVCA9IHsKLSAgICAnY2xpLW1vZGVzJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbICdJZHgnLCAnbW9kZScsICdjb21tYW5kJywgJ3N1Ym1vZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICB9Ci0gICAgfSwKLX0KLSIiIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2xpbmsucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9saW5rLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiZGRiMDkwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL2xpbmsucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLUxJTktfU0hPV19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdvYmotdHlwZScgICAgIDogJ2xpbmsnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgbGlua3MsIGNvbnRyb2xsZXIgbWFuYWdlZCBzd2l0Y2ggdG8gc3dpdGNoIGludGVyZmFjZXMnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Nob3ctbGluaycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnc2hvdy1saW5rLWV4YW1wbGUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXJlc3QnLAotICAgICd1cmwnICAgICAgICAgIDogJ2xpbmtzJywKLSAgICAnYWN0aW9uJyAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnIDogJ3F1ZXJ5LXJlc3QnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgICA6ICdkaXNwbGF5JywKLSAgICAgICAgICAgICdzb3J0JyAgIDogWyAnc3JjLXN3aXRjaCcsICdzcmMtcG9ydCcgXSwKLSAgICAgICAgICAgICdmb3JtYXQnIDogJ2xpbmtzJywKLSAgICAgICAgfSwKLSAgICApLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnbGluaycsCi0gICAgICAgICN7Ci0gICAgICAgICAgICAjJ2ZpZWxkJyAgICAgIDogJ2lkJywKLSAgICAgICAgICAgICMnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgIyd0eXBlJyAgICAgICA6ICdvYmotdHlwZScsCi0gICAgICAgICAgICAjJ2NvbXBsZXRpb24nIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICN9LAotICAgICAgICAjIFRoZXNlIHBhcmFtZXRlcnMgbWF5IGJlIHJlLWludHJvZHVjZWQgaWYgdGhlCi0gICAgICAgICMgdW5kZXJseWluZyByZXN0IGFwaSBwcm92aWRlcyBzb21lIHNlYXJjaCBwYXJhbWV0ZXJzCi0gICAgICAgICN7Ci0gICAgICAgICAgICAjJ2ZpZWxkJyAgICAgIDogJ3NyYy1zd2l0Y2gnLAotICAgICAgICAgICAgIyd0YWcnICAgICAgICA6ICdzcmMtc3dpdGNoJywKLSAgICAgICAgICAgICMnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgIyd0eXBlJyAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgIydjb21wbGV0aW9uJyA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAjfSwKLSAgICAgICAgI3sKLSAgICAgICAgICAgICMnZmllbGQnICAgICAgOiAnZHN0LXN3aXRjaCcsCi0gICAgICAgICAgICAjJ3RhZycgICAgICAgIDogJ2RzdC1zd2l0Y2gnLAotICAgICAgICAgICAgIydvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAjJ3R5cGUnICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAjJ2NvbXBsZXRpb24nIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICN9Ci0gICAgKQotfQotCi1pbXBvcnQgZm10Y252Ci0KLQotTElOS1NfRk9STUFUID0gewotICAgICdsaW5rcycgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnSWR4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy1zd2l0Y2gnLCAnc3JjLXBvcnQnLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RzdC1zd2l0Y2gnLCAnZHN0LXBvcnQnLCAndHlwZScgXQotICAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ3NyYy1zd2l0Y2gnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnU3JjIFN3aXRjaCBEUElEJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X3N3aXRjaF9hbmRfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3NyYy1wb3J0JyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnU3JjIFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfb3BlbmZsb3dfcG9ydF9zcmNfc3dpdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzcmMtcG9ydC1zdGF0ZScgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1NyYyBQb3J0IFN0YXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RzdC1zd2l0Y2gnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IFN3aXRjaCBEUElEJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X3N3aXRjaF9hbmRfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RzdC1wb3J0JyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnRHN0IFBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfb3BlbmZsb3dfcG9ydF9kc3Rfc3dpdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkc3QtcG9ydC1zdGF0ZScgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0RzdCBQb3J0IFN0YXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2xpbmstdHlwZScgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnTGluayBUeXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvcG9saWN5LnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvcG9saWN5LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWMwMjA5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3BvbGljeS5weQorKysgL2Rldi9udWxsCkBAIC0xLDMzOCArMCwwIEBACi1pbXBvcnQgY29tbWFuZAotaW1wb3J0IGpzb24KLWltcG9ydCBmbXRjbnYKLVBPTElDWV9DT05GSUdfRk9STUFUID0gewotICAgICdwb2xpY3ktY29uZmlnJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdwb2xpY3ktaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICB9LAotfQotCi1QT0xJQ1lfU1VCTU9ERV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICA6ICdwb2xpY3knLAotICAgICdzaG9ydC1oZWxwJyAgICA6ICdFbnRlciBwb2xpY3kgc3VibW9kZSwgY29uZmlndXJlIFNSIHBvbGljeSBkZXRhaWxzJywKLSAgICAnbW9kZScgICAgICAgICAgOiAnY29uZmlnJywKLSAgICAnY29tbWFuZC10eXBlJyAgOiAnY29uZmlnLXN1Ym1vZGUnLAotICAgICdvYmotdHlwZScgICAgICA6ICdwb2xpY3ktY29uZmlnJywKLSAgICAnc3VibW9kZS1uYW1lJyAgOiAnY29uZmlnLXBvbGljeScsCi0gICAgJ3BhcmVudC1maWVsZCcgIDogTm9uZSwKLSAgICAnZG9jJyAgICAgICAgICAgOiAncG9saWN5fHBvbGljeScsCi0gICAgJ2RvYy1leGFtcGxlJyAgIDogJ3BvbGljeXxwb2xpY3ktZXhhbXBsZScsCi0gICAgIydjb21wbGV0aW9uJyAgICA6ICdwb2xpY3ktaWQtY29tcGxldGlvbicsCi0gICAgJ2FyZ3MnIDogewotICAgICAgICAnYWN0aW9uJyAgICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdjcmVhdGUtcG9saWN5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3B1c2gtbW9kZS1zdGFjaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAnbm8tYWN0aW9uJyAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdyZW1vdmUtcG9saWN5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICdjaG9pY2VzJyAgICAgIDogKAotICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAncG9saWN5LWlkJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICdzeW50YXgtaGVscCcgIDogJ0VudGVyIGEgcG9saWN5IG5hbWUnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdwb2xpY3l8cG9saWN5JywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgICAgOiAncG9saWN5LXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgIDogJ1NldCB0eXBlIG9mIHBvbGljeScsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3BvbGljeXxwb2xpY3knLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdwb2xpY3ktdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICAgIDogKCd0dW5uZWwtZmxvdycsJ2xvYWRiYWxhbmNlZCcsJ2F2b2lkJywnZGVueScpLCAKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgOiAnRW50ZXIgYSBwb2xpY3kgdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3BvbGljeXxwb2xpY3knLAotICAgICAgICAgICAgICAgICAgICAjJ2RvYy1pbmNsdWRlJyAgOiBbICd0eXBlLWRvYycgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgKSwKLSAgICB9Ci19Ci0KLVNSQ19JUF9NQVRDSCA9IHsKLSAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdzcmNfaXAnLAotICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2NpZHItcmFuZ2UnLAotICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ3NyYy1jaWRyJywKLSAgICAgICAgICAgICAgICAjJ2RhdGEtaGFuZGxlcicgOiAnc3BsaXQtY2lkci1kYXRhLWludmVyc2UnLAotICAgICAgICAgICAgICAgICMnZGVzdC1pcCcgICAgICA6ICdzcmMtaXAnLAotICAgICAgICAgICAgICAgICMnZGVzdC1uZXRtYXNrJyA6ICdzcmMtaXAtbWFzaycsCi0gICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RzdF9pcCcgICAgICA6ICcwLjAuMC4wLzAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWNpZHItcmFuZ2UnLAotICAgICAgICAgICAgfQotICAgICAgICApLAotICAgICAgICAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ3Rva2VuJyAgOiAnYW55JywKLSAgICAgICAgICAgICAgICAnZGF0YScgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmNfaXAnICAgICAgOiAnMC4wLjAuMC8wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkc3RfaXAnICAgICAgOiAnMC4wLjAuMC8wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1pcC1hbnknLAotICAgICAgICAgICAgfQotICAgICAgICApLAotICAgICkKLX0KLQotU1JDX1BPUlRfTUFUQ0ggPSAoCi0gICAgewotICAgICAgICAnZmllbGQnICA6ICdzcmNfdHBfcG9ydF9vcCcsCi0gICAgICAgICd0eXBlJyAgIDogJ2VudW0nLAotICAgICAgICAndmFsdWVzJyA6ICgnZXEnLCAnbmVxJyksCi0gICAgICAgICdkb2MnICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtcG9ydC1vcC0rJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ3NyY190cF9wb3J0JywKLSAgICAgICAgICAgICAgICAnYmFzZS10eXBlJyAgICA6ICdoZXgtb3ItZGVjaW1hbC1pbnRlZ2VyJywKLSAgICAgICAgICAgICAgICAncmFuZ2UnICAgICAgICA6ICgwLDY1NTM1KSwKLSAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdoZXgtdG8taW50ZWdlcicsCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1wb3J0LWhleCcsCi0gICAgICAgICAgICAgICAgJ2RvYy1pbmNsdWRlJyAgOiBbICdyYW5nZScgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgIDogJ3NyY190cF9wb3J0JywKLSAgICAgICAgICAgICAgICAndHlwZScgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgJ3ZhbHVlcycgIDogZm10Y252LnRjcF9uYW1lX3RvX251bWJlcl9kaWN0LAotICAgICAgICAgICAgICAgICdwZXJtdXRlJyA6ICdza2lwJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1wb3J0LXR5cGUnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgKSwKLSAgICB9LAotKQotCi0KLURTVF9JUF9NQVRDSCA9IHsKLSAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdkc3RfaXAnLAotICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2NpZHItcmFuZ2UnLAotICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ2RzdC1jaWRyJywKLSAgICAgICAgICAgICAgICAjJ2RhdGEtaGFuZGxlcicgOiAnc3BsaXQtY2lkci1kYXRhLWludmVyc2UnLAotICAgICAgICAgICAgICAgICMnZGVzdC1pcCcgICAgICA6ICdkc3QtaXAnLAotICAgICAgICAgICAgICAgICMnZGVzdC1uZXRtYXNrJyA6ICdkc3QtaXAtbWFzaycsCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1jaWRyLXJhbmdlJywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICksCi0gICAgICAgICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAndG9rZW4nICA6ICdhbnknLAotICAgICAgICAgICAgICAgICdkYXRhJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RzdF9pcCcgICAgICA6ICcwLjAuMC4wLzAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnZG9jJyAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWlwLWFueScsCi0gICAgICAgICAgICB9Ci0gICAgICAgICksCi0gICAgKQotfQotCi0KLURTVF9QT1JUX01BVENIID0gKAotICAgIHsKLSAgICAgICAgJ2ZpZWxkJyA6ICdkc3RfdHBfcG9ydF9vcCcsCi0gICAgICAgICd0eXBlJyAgOiAnZW51bScsCi0gICAgICAgICd2YWx1ZXMnIDogKCdlcScsICduZXEnKSwKLSAgICAgICAgJ2RvYycgICAgICAgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1wb3J0LW9wKycsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdkc3RfdHBfcG9ydCcsCi0gICAgICAgICAgICAgICAgJ2Jhc2UtdHlwZScgICAgOiAnaGV4LW9yLWRlY2ltYWwtaW50ZWdlcicsCi0gICAgICAgICAgICAgICAgJ3JhbmdlJyAgICAgICAgOiAoMCw2NTUzNSksCi0gICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnaGV4LXRvLWludGVnZXInLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtcG9ydC1oZXgnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgOiAnZHN0X3RwX3BvcnQnLAotICAgICAgICAgICAgICAgICd0eXBlJyAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAndmFsdWVzJyAgOiBmbXRjbnYudGNwX25hbWVfdG9fbnVtYmVyX2RpY3QsCi0gICAgICAgICAgICAgICAgJ3Blcm11dGUnIDogJ3NraXAnCi0gICAgICAgICAgICB9LAotICAgICAgICApLAotICAgIH0KLSkKLQotUE9MSUNZX0ZMT1dfRU5UUllfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICA6ICdmbG93LWVudHJ5JywKLSAgICAnbW9kZScgICAgICAgICAgICA6ICdjb25maWctcG9saWN5JywKLSAgICAnY29tbWFuZC10eXBlJyAgICA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgICAgIDogJ0NvbmZpZ3VyZSBmbG93IGVudHJ5JywKLSAgICAnZG9jJyAgICAgICAgICAgICA6ICdmbG93LWVudHJ5fGZsb3ctZW50cnknLAotICAgICdkb2MtZXhhbXBsZScgICAgIDogJ2Zsb3ctZW50cnl8Zmxvdy1lbnRyeS1leGFtcGxlJywKLSAgICAncGFyZW50LWZpZWxkJyAgICA6ICdwb2xpY3knLAotICAgICdhcmdzJyA6IHsKLSAgICAgICAgJ2FjdGlvbicgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnY3JlYXRlLXBvbGljeScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgOiAncHJvdG9fdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgOiAoJ2lwJywndGNwJywndWRwJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1lbnRyeS10eXBlLSsnLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdwcm90b190eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFzZS10eXBlJyAgICA6ICdoZXgtb3ItZGVjaW1hbC1pbnRlZ2VyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZ2UnICAgICAgICA6ICgwLDI1NSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgOiAnaXAgcHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2hleC10by1pbnRlZ2VyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1lbnRyeS10eXBlLWlwLXByb3RvY29sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ3JhbmdlJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIyBDb21wbGV4aXR5IGFyaXNlcyBmcm9tIHRoZSBTUkNfSVAgbWF0Y2ggcGFydCAKLSAgICAgICAgICAgICAgICAjIGJlaW5nLCByZXF1aXJlZCwgd2hpbGUgdGhlIHBvcnQgbWF0Y2gKLSAgICAgICAgICAgICAgICAjIGlzIG9wdGlvbmFsLCBhcyBpcyB0aGUgRFNUX0lQIG1hdGNoLCBidXQgdGhlCi0gICAgICAgICAgICAgICAgIyBEU1RfUE9SVF9NQVRDSCBpcyBvbmx5IHBvc3NpYmxlIHRvIGRlc2NyaWJlIHdoZW4KLSAgICAgICAgICAgICAgICAjIHRoZSBEU1RfSVAgcGFydCBpcyBpbmNsdWRlZAotICAgICAgICAgICAgICAgIFNSQ19JUF9NQVRDSCwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICdhcmdzJyA6IFNSQ19QT1JUX01BVENILAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAnYXJncycgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICBEU1RfSVBfTUFUQ0gsCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmdzJyA6IERTVF9QT1JUX01BVENILAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgKSwKLSAgICB9LAotfQotUE9MSUNZX1RVTk5FTF9JRF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgIDogJ3R1bm5lbCcsCi0gICAgJ21vZGUnICAgICAgICAgICAgOiAnY29uZmlnLXBvbGljeScsCi0gICAgIydvYmotdHlwZScgICAgICAgIDogJ3BvbGljeS1jb25maWcnLAotICAgICdjb21tYW5kLXR5cGUnICAgIDogJ2NvbmZpZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgOiAnQ29uZmlndXJlIHR1bm5lbCBpZCcsCi0gICAgIydkb2MnICAgICAgICAgICAgIDogJ3BvbGljeXx0dW5uZWwnLAotICAgICMnZG9jLWV4YW1wbGUnICAgICA6ICdwb2xpY3l8cG9saWN5LXR1bm5lbC1leGFtcGxlJywKLSAgICAncGFyZW50LWZpZWxkJyAgICA6ICdwb2xpY3knLAotICAgICdhcmdzJyA6IHsKLSAgICAgICAgJ2FjdGlvbicgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnY3JlYXRlLXBvbGljeScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAnY29tcGxldGlvbicgICA6ICd0dW5uZWxpZC1jb21wbGV0aW9uJywKLSAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAndHVubmVsLWlkJywKLSAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICdzeW50YXgtaGVscCcgIDogJ0VudGVyIHR1bm5lbCBpZCcsCi0gICAgICAgICdkb2MnICAgICAgICAgIDogJ3BvbGljeXx0dW5uZWwtaWQnLAotICAgICAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ3R5cGUtZG9jJyBdLAotICAgIH0KLX0KLQotUE9MSUNZX1BSSU9SSVRZX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgOiAncHJpb3JpdHknLAotICAgICdtb2RlJyAgICAgICAgICAgIDogJ2NvbmZpZy1wb2xpY3knLAotICAgICdjb21tYW5kLXR5cGUnICAgIDogJ2NvbmZpZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgOiAnQ29uZmlndXJlIHBvbGljeSBwcmlvcml0eScsCi0gICAgJ2RvYycgICAgICAgICAgICAgOiAncG9saWN5fHByaW9yaXR5JywKLSAgICAnZG9jLWV4YW1wbGUnICAgICA6ICdwb2xpY3l8cG9saWN5LXByaW9yaXR5LWV4YW1wbGUnLAotICAgICdwYXJlbnQtZmllbGQnICAgIDogJ3BvbGljeScsCi0gICAgJ2FyZ3MnIDogewotICAgICAgICAnYWN0aW9uJyAgICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdjcmVhdGUtcG9saWN5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICdmaWVsZCcgICAgIDogJ3ByaW9yaXR5JywKLSAgICAgICAgJ2Jhc2UtdHlwZScgOiAnaW50ZWdlcicsCi0gICAgICAgICdyYW5nZScgICAgIDogKDAsIDY1NTM1KSwKLSAgICB9Ci19Ci0KLVNIT1dfUE9MSUNZX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ2NvbW1hbmQtdHlwZScgICAgICAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdhbGwtaGVscCcgICAgICAgICAgICA6ICdTaG93IHN3aXRjaCBpbmZvcm1hdGlvbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ1Nob3cgc3dpdGNoIHN1bW1hcnknLAotICAgICMnb2JqLXR5cGUnICAgICAgICAgICAgOiAnc3dpdGNoZXMnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdzd2l0Y2h8c2hvdycsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ3N3aXRjaHxzaG93LWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgOiAncG9saWN5JywKLSAgICAgICAgICAgICdmaWVsZCcgIDogJ3Nob3dwb2xpY3knLAotICAgICAgICAgICAgJ2FjdGlvbicgOiAnZGlzcGxheS1yZXN0JywKLSAgICAgICAgICAgICdzb3J0JyAgIDogIFsncG9saWN5SWQnLF0sCi0gICAgICAgICAgICAnZG9jJyAgICA6ICdzd2l0Y2h8c2hvdycsCi0gICAgICAgICAgICAndXJsJyAgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG93cG9saWN5JywKLSAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdmb3JtYXQnIDogJ3Nob3dfcG9saWN5JywKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLQotZGVmIHR1bm5lbF9pZF9jb21wbGV0aW9uKHByZWZpeCwgY29tcGxldGlvbnMpOgotICAgIHF1ZXJ5X3VybCA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzdC92MS9zaG93dHVubmVsIgotICAgIHJlc3VsdCA9IGNvbW1hbmQuc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdChxdWVyeV91cmwpCi0gICAgZW50cmllcyA9IGpzb24ubG9hZHMocmVzdWx0KQotICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICBpZiBlbnRyeVsndHVubmVsSWQnXS5zdGFydHN3aXRoKHByZWZpeCk6Ci0gICAgICAgICAgICBjb21wbGV0aW9uc1tlbnRyeVsndHVubmVsSWQnXSsnICddID0gZW50cnlbJ3R1bm5lbElkJ10KLSAgICByZXR1cm4KLQotY29tbWFuZC5hZGRfY29tcGxldGlvbigndHVubmVsLWlkLWNvbXBsZXRpb24nLCB0dW5uZWxfaWRfY29tcGxldGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7ICdwcmVmaXgnICAgICAgIDogJyR0ZXh0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9ucycgIDogJyRjb21wbGV0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLQotCi1kZWYgcG9saWN5X2lkX2NvbXBsZXRpb24ocHJlZml4LCBjb21wbGV0aW9ucyk6Ci0gICAgcXVlcnlfdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXN0L3YxL3Nob3dwb2xpY3kiCi0gICAgcmVzdWx0ID0gY29tbWFuZC5zZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHF1ZXJ5X3VybCkKLSAgICBlbnRyaWVzID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgIGlmIGVudHJ5Wydwb2xpY3lJZCddLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgIGNvbXBsZXRpb25zW2VudHJ5Wydwb2xpY3lJZCddKycgJ10gPSBlbnRyeVsncG9saWN5SWQnXQotICAgIHJldHVybgotCi1jb21tYW5kLmFkZF9jb21wbGV0aW9uKCdwb2xpY3ktaWQtY29tcGxldGlvbicsIHBvbGljeV9pZF9jb21wbGV0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsgJ3ByZWZpeCcgICAgICAgOiAnJHRleHQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb25zJyAgOiAnJGNvbXBsZXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3JvdXRlci5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3JvdXRlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAzODNjYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9yb3V0ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi1pbXBvcnQgZm10Y252Ci1TV0lUQ0hfUk9VVEVSX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ2NvbW1hbmQtdHlwZScgICAgICAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdhbGwtaGVscCcgICAgICAgICAgICA6ICdTaG93IHN3aXRjaCBpbmZvcm1hdGlvbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ1Nob3cgc3dpdGNoIHN1bW1hcnknLAotICAgICMnb2JqLXR5cGUnICAgICAgICAgICAgOiAnc3dpdGNoZXMnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICdzd2l0Y2h8c2hvdycsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ3N3aXRjaHxzaG93LWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgOiAncm91dGVyJywKLSAgICAgICAgICAgICdmaWVsZCcgIDogJ3JvdXRlcicsCi0gICAgICAgICAgICAnYWN0aW9uJyA6ICdkaXNwbGF5LXJlc3QnLAotICAgICAgICAgICAgJ3NvcnQnICAgOiBbJ2RwaWQnLF0sCi0gICAgICAgICAgICAnZG9jJyAgICA6ICdzd2l0Y2h8c2hvdycsCi0gICAgICAgICAgICAndXJsJyAgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdyb3V0ZXJzJywKLSAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdmb3JtYXQnIDogJ3JvdXRlcicsCi0gICAgICAgIH0sCi0gICAgKQotfQotCi0KLQotUk9VVEVSX1NIT1dfUkVBTFRJTUVfU1RBVFNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnU2hvdyByb3V0ZXIgc3RhdHMgdmlhIGRpcmVjdCBxdWVyeSB0byBzd2l0Y2gnLAotICAgICduby1zdXBwb3J0ZWQnICAgICAgICA6IEZhbHNlLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdTaG93IHJlYWx0aW1lIHN0YXRzIGZvciByb3V0ZXInLAotICAgICdwYXJlbnQtZmllbGQnICAgICAgICA6IE5vbmUsCi0gICAgJ29iai10eXBlJyAgICAgICAgICAgIDogJ3N3aXRjaGVzJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgICAgICAgIDogJ3JvdXRlcicsCi0gICAgICAgICAgICAnb2JqLXR5cGUnICAgICA6ICdzd2l0Y2hlcycsCi0gICAgICAgICAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgICAgICMgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS1yZXN0JywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWFsaWFzLWNob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2RwaWQnLAotICAgICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICA6ICdzd2l0Y2ggZHBpZCBvciBhbGlhcycsCi0gICAgICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgOiB7ICdkZXRhaWwnIDogJ3Njb3BlZCcgfSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgICAgOiAnYWxsJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAncmVzZXJ2ZWR8YWxsJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3JvdXRlcnJlYWx0aW1lc3RhdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3J0JywgJ2FkamFjZW5jeScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogJ2Rpc3BsYXktcmVzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc29ydCcgICAgICAgOiBbJ3BvcnRObyddLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCcgICAgICAgIDogJ3JvdXRlci8lKGRwaWQpcy8lKHJvdXRlcnJlYWx0aW1lc3RhdHMpcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAncmVzdC10eXBlJyAgOiAnZGljdC1vZi1saXN0LW9mLXN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0JyAgICAgOiAncm91dGVyXyUocm91dGVycmVhbHRpbWVzdGF0cylzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTaG93IHJlcXVlc3RlZCBpdGVtIGJ5IHF1ZXJ5aW5nIHJvdXRlci9zd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3N3aXRjaHxyZWFsdGltZS0rJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdkZXRhaWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICA6ICgnZGV0YWlscycsJ2JyaWVmJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgIDogJ2Zvcm1hdHwrJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgKQotICAgICAgICB9Ci0gICAgKQotfQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvc25tcC5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3NubXAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGFkOWIzMWUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvc25tcC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIxNCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIyAoYykgaW4gMjAxMiBieSBCaWcgU3dpdGNoIE5ldHdvcmtzIC0gQWxsIHJpZ2h0cyByZXNlcnZlZAotIwotIyBzbm1wLXNlcnZlciBjb21tYW5kcwotIwotCi1pbXBvcnQgY29tbWFuZAotZnJvbSBtaWR3IGltcG9ydCBsb2NhbF9pbnRlcmZhY2VzX2ZpcmV3YWxsX29wZW4KLQotZGVmIHNubXBfdmFsaWRhdGVfZmlyZXdhbGwoZGF0YSk6Ci0gICAgaW50ZnMgPSBsb2NhbF9pbnRlcmZhY2VzX2ZpcmV3YWxsX29wZW4oIFsgJ3VkcCcsICd0Y3AnIF0sIDE2MSkKLSAgICBpZiBsZW4oaW50ZnMpID09IDA6Ci0gICAgICAgICMgYnkgaXNzdWVpbmcgYSB3YXJuaW5nLCBydW5uaW5nLWNvbmZpZyBkb2Vzbid0IGRpc3BsYXkgdGhlCi0gICAgICAgICMgZXJyb3IgZHVyaW5nIHJlcGxheS4KLSAgICAgICAgY29tbWFuZC5zZG5zaC53YXJuaW5nKCdTTk1QIHNlcnZlciBwb3J0IG5vdCBvcGVuIG9uIGFueSBjb250cm9sbGVyLW5vZGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZS4gVXNlIGZpcmV3YWxsIHJ1bGUgY29uZmlndXJhdGlvbiB0byBvcGVuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTTk1QIFVEUCBwb3J0IDE2MScpCi0KLSAgICAKLQotY29tbWFuZC5hZGRfYWN0aW9uKCdzbm1wLXZhbGlkYXRlLWZpcmV3YWxsJywgc25tcF92YWxpZGF0ZV9maXJld2FsbCwKLSAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7ICdkYXRhJyAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLQotIiIiCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFNOTVAgY29tbWFuZCBkZXNjcmlwdGlvbnMgCi0jCi0jICBbbm9dIHNubXAtc2VydmVyIGVuYWJsZQotIyAgW25vXSBzbm1wLXNlcnZlciBjb21tdW5pdHkgPHN0cmluZz4KLSMgIFtub10gc25tcC1zZXJ2ZXIgbG9jYXRpb24gPHN0cmluZz4KLSMgIFtub10gc25tcC1zZXJ2ZXIgY29udGFjdCA8c3RyaW5nPgotIwotU05NUF9TRVJWRVJfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzbm1wLXNlcnZlcicsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnKicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU01OUCBjb25maWd1cmF0aW9uLCBlbmFibGUgc2VydmVyLCBjb25maWd1cmUgcGFyYW1ldGVycycsCi0gICAgJ2RvYycgICAgICAgICAgOiAnc25tcHxzbm1wLXNlcnZlcicsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnc25tcHxzbm1wLXNlcnZlci1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICd1cGRhdGUtY29uZmlnJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdzbm1wLXNlcnZlci1jb25maWcnLAotICAgICdkYXRhJyAgICAgICAgIDogeyAnaWQnIDogJ3NubXAnIH0sCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdlbmFibGUnLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnRW5hYmxlIFNOTVAnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnc25tcHxzbm1wLXNlcnZlci1lbmFibGUnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAndXBkYXRlLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgOiAnc25tcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VydmVyLWVuYWJsZScgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnc25tcC12YWxpZGF0ZS1maXJld2FsbCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgICduby1hY3Rpb24nICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3VwZGF0ZS1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgICAgICAgICAgICA6ICdzbm1wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlcnZlci1lbmFibGUnIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgIDogJ2NvbW11bml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICAgICA6ICdTZXQgY29tbXVuaXR5IHN0cmluZyBhbmQgYWNjZXNzIHByaXZzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgICAgICAgIDogeyAnY29tbXVuaXR5JyA6IE5vbmUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgIDogJ3NubXB8c25tcC1zZXJ2ZXItY29tbXVuaXR5JywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgICAgICAgOiAncm8nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgOiAnUmVhZC1vbmx5IGFjY2VzcyB3aXRoIHRoaXMgY29tbXVuaXR5IHN0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2NvbW11bml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgICAgOiAnVmFsdWUgZm9yIHRoZSBTTk1QIGNvbW11aXR5IHN0cmluZycsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgIDogJ2xvY2F0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgICAgIDogJ1RleHQgZm9yIG1pYiBvYmplY3Qgc3lzTG9jYXRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgICAgOiB7ICdsb2NhdGlvbicgOiBOb25lIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICdzbm1wfHNubXAtc2VydmVyLWxvY2F0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnbG9jYXRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdzeW50YXgtaGVscCcgICAgIDogJ1ZhbHVlIGZvciB0aGUgU05NUCBsb2NhdGlvbiBzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgICAgICA6ICdjb250YWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgICAgIDogJ1RleHQgZm9yIG1pYiBvYmplY3Qgc3lzQ29udGFjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICAgICAgICAgICA6IHsgJ2NvbnRhY3QnIDogTm9uZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAnc25tcHxzbm1wLXNlcnZlci1jb250YWN0JywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnY29udGFjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgICAgOiAnVmFsdWUgZm9yIHRoZSBTTk1QIGNvbnRhY3Qgc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICApCi19Ci0iIiIKLQotZGVmIHNubXBfZmlyZXdhbGxfaW50ZXJmYWNlcyhkYXRhKToKLSAgICAiIiIKLSAgICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgcm93IG9mIGRhdGEgaW4gdGhlIHF1ZXJ5LAotICAgIGFkZCB0byB0aGF0IGEgJ2ludGVyZmFjZXMnIGVudGl0eSwgd2hpY2ggbGlzdHMgdGhlIGludGVyZmFjZXMKLSAgICB3aGljaCBoYXZlIHRoZSBzbm1wIHBvcnQgb3BlbgotICAgICIiIgotICAgIGlmIG5vdCBoYXNhdHRyKGNvbW1hbmQsICdxdWVyeV9yZXN1bHQnKToKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgY29tbWFuZC5xdWVyeV9yZXN1bHQgPT0gTm9uZToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpbnRmcyA9IGxvY2FsX2ludGVyZmFjZXNfZmlyZXdhbGxfb3BlbiggWyAndWRwJywgJ3RjcCcgXSwgMTYxKQotCi0gICAgaW50ZnNfdGV4dCA9ICcsICcuam9pbihbeFsnZGlzY292ZXJlZC1pcCddIGlmIHhbJ2Rpc2NvdmVyZWQtaXAnXSAhPSAnJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeFsnaXAnXSBmb3IgeCBpbiBpbnRmc10pCi0KLSAgICBmb3IgcSBpbiBjb21tYW5kLnF1ZXJ5X3Jlc3VsdDoKLSAgICAgICAgcVsnaW50ZXJmYWNlcyddID0gaW50ZnNfdGV4dAotCi0KLWNvbW1hbmQuYWRkX2FjdGlvbignc25tcC1maXJld2FsbC1pbnRlcmZhY2VzJywgc25tcF9maXJld2FsbF9pbnRlcmZhY2VzLAotICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsgJ2RhdGEnICAgOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQotCi0iIiIKLVNOTVBfU0VSVkVSX1NIT1dfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyBjb25maWd1cmVkIHNubXAgZGV0YWlscycsCi0gICAgJ2RvYycgICAgICAgICAgOiAnc25tcHxzaG93JywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdzbm1wfHNob3ctZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAnc25tcC1zZXJ2ZXItY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IFNOTVAgY29uZmlndXJhdGlvbicsCi0gICAgJ2Zvcm1hdCcgICAgICAgOiAnc25tcC1jb25maWctc3VtbWFyeScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICAnc25tcCcsCi0gICAgKSwKLSAgICAnYWN0aW9uJyAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnIDogJ3F1ZXJ5LXRhYmxlJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnICA6ICdzbm1wLWZpcmV3YWxsLWludGVyZmFjZXMnCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICB9LAotICAgICksCi19Ci0KLWltcG9ydCBmbXRjbnYKLQotU05NUF9DT05GSUdfU1VNTUFSWV9GT1JNQVQgPSB7Ci0gICAgJ3NubXAtY29uZmlnLXN1bW1hcnknIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgICAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXJ2ZXItZW5hYmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW11bml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2NhdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250YWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ3NlcnZlci1lbmFibGUnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1NOTVAgc2VydmVyIHN0YXR1cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyAgICA6IGZtdGNudi5yZXBsYWNlX2Jvb2xlYW5fd2l0aF9lbmFibGVfZGlzYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2NvbW11bml0eScgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQ29tbXVuaXR5IHN0cmluZycgfSwKLSAgICAgICAgICAgICdsb2NhdGlvbicgICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1N5c3RlbSBsb2NhdGlvbicgfSwKLSAgICAgICAgICAgICdjb250YWN0JyAgICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1N5c3RlbSBjb250YWN0JyB9LAotICAgICAgICB9LAotICAgIH0KLX0KLSIiIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3NubXBfbW9kZWwucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9zbm1wX21vZGVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2MGE1YWE4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3NubXBfbW9kZWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGNvbW1hbmQKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX3N1Ym1vZGUoJ3NubXAtc2VydmVyLWNvbmZpZycpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9zbm1wX3J1bl9jb25maWcucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9zbm1wX3J1bl9jb25maWcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIzNmYyNDQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvc25tcF9ydW5fY29uZmlnLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgc25tcC4KLSMKLQotaW1wb3J0IHJ1bl9jb25maWcKLWltcG9ydCB1dGlmCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgY3JlYXRlX29ial90eXBlX2RpY3QoY29udGV4dCwgb2JqX3R5cGUsIGZpZWxkKToKLSAgICAiIiIKLSAgICBTaG91bGQgdGhlcmUgYmUgc29tZSBjb2xsZWN0aW9ucyBvZiBtaWRkZWxld2FyZSBmdW5jdGlvbnMgZm9yIHVzZSBieSBwYWNrYWdlcz8KLSAgICAiIiIKLSAgICBlbnRyaWVzID0gY29udGV4dC5nZXRfdGFibGVfZnJvbV9zdG9yZShvYmpfdHlwZSkKLSAgICByZXN1bHRfZGljdCA9IHt9Ci0gICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgIGlmIGVudHJ5W2ZpZWxkXSBpbiByZXN1bHRfZGljdDoKLSAgICAgICAgICAgIHJlc3VsdF9kaWN0W2VudHJ5W2ZpZWxkXV0uYXBwZW5kKGVudHJ5KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0X2RpY3RbZW50cnlbZmllbGRdXSA9IFtlbnRyeV0KLQotICAgIHJldHVybiByZXN1bHRfZGljdAotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBydW5uaW5nX2NvbmZpZ19zbm1wKGNvbnRleHQsIGNvbmZpZywgd29yZHMpOgotICAgIHNfb2JqX3R5cGUgID0gJ3NubXAtc2VydmVyLWNvbmZpZycKLQotICAgIHNubXBfY29uZmlnID0gY29udGV4dC5nZXRfdGFibGVfZnJvbV9zdG9yZShzX29ial90eXBlKQotICAgIGlmIGxlbihzbm1wX2NvbmZpZykgPiAxOgotICAgICAgICBwcmludCAncnVubmluZ19jb25maWdfc25tcDogbW9yZSB0aGFuIG9uZSBzbm1wIHJlY29yZCcKLSAgICBpZiBsZW4oc25tcF9jb25maWcpID09IDA6Ci0gICAgICAgIHJldHVybgotCi0gICAgc25tcF9jb25maWcgPSBzbm1wX2NvbmZpZ1swXQotCi0KLSAgICBzX2NvbmZpZyA9IFtdCi0gICAgaWYgcnVuX2NvbmZpZy5ub3RfZGVmYXVsdF92YWx1ZShzX29ial90eXBlLCAnY29tbXVuaXR5Jywgc25tcF9jb25maWcuZ2V0KCdjb21tdW5pdHknKSk6Ci0gICAgICAgIHNfY29uZmlnLmFwcGVuZCgnc25tcC1zZXJ2ZXIgY29tbXVuaXR5IHJvICVzXG4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgIHV0aWYucXVvdGVfc3RyaW5nKHNubXBfY29uZmlnWydjb21tdW5pdHknXSkpCi0KLSAgICBpZiBydW5fY29uZmlnLm5vdF9kZWZhdWx0X3ZhbHVlKHNfb2JqX3R5cGUsICdsb2NhdGlvbicsIHNubXBfY29uZmlnLmdldCgnbG9jYXRpb24nKSk6Ci0gICAgICAgIHNfY29uZmlnLmFwcGVuZCgnc25tcC1zZXJ2ZXIgbG9jYXRpb24gJXNcbicgJQotICAgICAgICAgICAgICAgICAgICAgICAgdXRpZi5xdW90ZV9zdHJpbmcoc25tcF9jb25maWdbJ2xvY2F0aW9uJ10pKQotCi0gICAgaWYgcnVuX2NvbmZpZy5ub3RfZGVmYXVsdF92YWx1ZShzX29ial90eXBlLCAnY29udGFjdCcsIHNubXBfY29uZmlnLmdldCgnY29udGFjdCcpKToKLSAgICAgICAgc19jb25maWcuYXBwZW5kKCdzbm1wLXNlcnZlciBjb250YWN0ICVzXG4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgIHV0aWYucXVvdGVfc3RyaW5nKHNubXBfY29uZmlnWydjb250YWN0J10pKQotICAgIGlmIHJ1bl9jb25maWcubm90X2RlZmF1bHRfdmFsdWUoc19vYmpfdHlwZSwgJ3NlcnZlci1lbmFibGUnLCBzbm1wX2NvbmZpZ1snc2VydmVyLWVuYWJsZSddKToKLSAgICAgICAgc19jb25maWcuYXBwZW5kKCdzbm1wLXNlcnZlciBlbmFibGVcbicpCi0KLSAgICBpZiBsZW4oc19jb25maWcpOiAgIAotICAgICAgICBjb25maWcuYXBwZW5kKCchXG4nKQotICAgICAgICBjb25maWcgKz0gc19jb25maWcKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXNubXBfcnVubmluZ19jb25maWdfdHVwbGUgPSAoCi0gICAgKAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBGYWxzZSwKLSAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdydW5uaW5nLWNvbmZpZycsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnc25tcCcsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnQ29uZmlndXJhdGlvbiBmb3IgU05NUCcsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAncnVubmluZy1jb25maWd8c2hvdy1zbm1wJywKLSAgICAgICAgfSwKLSAgICApLAotKQotCi1ydW5fY29uZmlnLnJlZ2lzdGVyX3J1bm5pbmdfY29uZmlnKCdzbm1wJywgMjMwMCwgIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfY29uZmlnX3NubXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfcnVubmluZ19jb25maWdfdHVwbGUpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9zbm1wX3RlY2hzdXBwb3J0LnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvc25tcF90ZWNoc3VwcG9ydC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggM2JlYzgxOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9zbm1wX3RlY2hzdXBwb3J0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotZnJvbSB0ZWNoX3N1cHBvcnQgaW1wb3J0IGFkZF90b19zaG93X3RlY2hfc3VwcG9ydAotCi0jIFNOTVAgY29tbWFuZHMgdG8gYmUgaW5jbHVkZWQgaW4gJ3Nob3cgdGVjaC1zdXBwb3J0JyBvdXRwdXQKLXNubXBfc2hvd190ZWNoX3N1cHBvcnRfY29tbWFuZHMgPSBbCi0gICAgIFsnY2xpJywgJ3Nob3cgc25tcCddLAotICAgICBbJ3NoZWxsJywgJ3BncmVwIHNubXBkJ10sCi0gICAgIFsnc2hlbGwnLCAnY2F0IC9ldGMvc25tcC9zbm1wZC5jb25mJ10sCi0gICAgIFsnc2hlbGwnLCAnY2F0IC9ldGMvZGVmYXVsdC9zbm1wZCddLAotXQotCi0jIGFkZCBjb21tYW5kcyB0byBjZW50cmFsIGNvbW1hbmQgdGFibGUgdXNlZCBmb3IgJ3Nob3cgdGVjaC1zdXBwb3J0JwotZm9yIGVudHJ5IGluIHNubXBfc2hvd190ZWNoX3N1cHBvcnRfY29tbWFuZHM6Ci0gICAgYWRkX3RvX3Nob3dfdGVjaF9zdXBwb3J0KHN0cihlbnRyeVswXSksIHN0cihlbnRyeVsxXSkpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9zd2l0Y2gucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9zd2l0Y2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGE3OGIxODQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvc3dpdGNoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTIxMyArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLWltcG9ydCBjb21tYW5kCi1pbXBvcnQganNvbgotaW1wb3J0IGZtdGNudgotCi0iIiIKLVNXSVRDSF9TVUJNT0RFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgIDogJ3N3aXRjaCcsCi0gICAgJ3Nob3J0LWhlbHAnICAgIDogJ0VudGVyIHN3aXRjaCBzdWJtb2RlLCBjb25maWd1cmUgc3dpdGNoIGRldGFpbHMnLAotICAgICdtb2RlJyAgICAgICAgICA6ICdjb25maWcqJywKLSAgICAnb2JqLXR5cGUnICAgICAgOiAnc3dpdGNoLWNvbmZpZycsCi0gICAgJ2NvbW1hbmQtdHlwZScgIDogJ2NvbmZpZy1zdWJtb2RlJywKLSAgICAncGFyZW50LWZpZWxkJyAgOiBOb25lLAotICAgICdzdWJtb2RlLW5hbWUnICA6ICdjb25maWctc3dpdGNoJywKLSAgICAnZG9jJyAgICAgICAgICAgOiAnc3dpdGNofHN3aXRjaCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgIDogJ3N3aXRjaHxzd2l0Y2gtZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2RwaWQnLAotICAgICAgICAgICAgJ290aGVyJyAgICAgICAgOiAnc3dpdGNoZXN8ZHBpZCcsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1hbGlhcy1jaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnICA6ICdDb25maWd1cmUgYSBuZXcgc3dpdGNoIHdpdGggZHBpZCcsCi0gICAgICAgIH0KLSAgICApCi19Ci0iIiIKLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHNob3cgc3dpdGNoCi0jCi0KLXNob3dfc3dpdGNoX3BpcGVsaW5lID0gKAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgICA6ICdxdWVyeS10YWJsZScsCi0gICAgICAgICdvYmotdHlwZScgOiAnc3dpdGNoZXMnLCAjIHN5bnRoZXRpYywgc3VwcG9ydGVkIGJ5IHJlc3RfdG9fbW9kZWwKLSAgICAgICAgJ2tleScgICAgICA6ICdkcGlkJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgICAgIDogJ2pvaW4tdGFibGUnLAotICAgICAgICAnb2JqLXR5cGUnICAgOiAnc3dpdGNoLWFsaWFzJywKLSAgICAgICAgJ2tleScgICAgICAgIDogJ3N3aXRjaCcsCi0gICAgICAgICdqb2luLWZpZWxkJyA6ICdAJywKLSAgICAgICAgJ2FkZC1maWVsZCcgIDogJ3N3aXRjaC1hbGlhc3xpZCcsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgICdwcm9jJyAgICAgICA6ICdqb2luLXJlc3QnLAotICAgICAgICAndXJsJyAgICAgICAgOiAndHVubmVsLW1hbmFnZXIvYWxsJywKLSAgICAgICAgJ3Jlc3QtdHlwZScgIDogJ2RpY3Qtb2YtZGljdC1vZi1zd2l0Y2gnLAotICAgICAgICAna2V5JyAgICAgICAgOiAnc3dpdGNoJywKLSAgICAgICAgJ2pvaW4tZmllbGQnIDogJ0AnLAotICAgIH0sCi0gICAgewotICAgICAgICAncHJvYycgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAnZm9ybWF0JyAgIDogJ3N3aXRjaCcsCi0gICAgfSwKLSkKLQotU1dJVENIX1NIT1dfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2FsbC1oZWxwJyAgICAgICAgICAgIDogJ1Nob3cgc3dpdGNoIGluZm9ybWF0aW9uJywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnU2hvdyBzd2l0Y2ggc3VtbWFyeScsCi0gICAgJ29iai10eXBlJyAgICAgICAgICAgIDogJ3N3aXRjaGVzJywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnc3dpdGNofHNob3cnLAotICAgICdkb2MtZXhhbXBsZScgICAgICAgICA6ICdzd2l0Y2h8c2hvdy1leGFtcGxlJywKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgIDogJ3N3aXRjaCcsCi0gICAgICAgICAgICAnYWN0aW9uJyA6IHNob3dfc3dpdGNoX3BpcGVsaW5lLAotICAgICAgICAgICAgJ2RvYycgICAgOiAnc3dpdGNofHNob3cnLAotICAgICAgICB9LAotICAgICkKLX0KLQotU1dJVENIX1NIT1dfV0lUSF9EUElEX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ1Nob3cgc3dpdGNoIGRldGFpbHMgdmlhIHF1ZXJ5JywKLSAgICAnbm8tc3VwcG9ydGVkJyAgICAgICAgOiBGYWxzZSwKLSAgICAncGFyZW50LWZpZWxkJyAgICAgICAgOiBOb25lLAotICAgICdvYmotdHlwZScgICAgICAgICAgICA6ICdzd2l0Y2hlcycsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICAgICAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgJ29iai10eXBlJyAgICAgOiAnc3dpdGNoZXMnLAotICAgICAgICAgICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAjICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktcmVzdCcsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgICA6IHNob3dfc3dpdGNoX3BpcGVsaW5lLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ3N3aXRjaCBkcGlkIG9yIGFsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgICA6ICdhbGwnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyA6ICdieScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgIDogJ3N3aXRjaHxzaG93LXN3aXRjaC1vcmRlcicsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnQnICAgICAgIDogJ2lwLWFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTb3J0IGJ5IGlwLWFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnY29ubmVjdC10aW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnQnICAgICAgIDogJy1jb25uZWN0ZWQtc2luY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTb3J0IGJ5IGNvbm5lY3QgdGltZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICApCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdkZXRhaWwnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogKCdkZXRhaWxzJywnYnJpZWYnKSwKLSAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnc3dpdGNofHNob3ctc3dpdGNoLWZvcm1hdC0rJywKLSAgICAgICAgfSwKLSAgICApCi19Ci1TV0lUQ0hfU0hPV19SRUFMVElNRV9TVEFUU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdTaG93IHN3aXRjaCBzdGF0cyB2aWEgZGlyZWN0IHF1ZXJ5IHRvIHN3aXRjaCcsCi0gICAgJ25vLXN1cHBvcnRlZCcgICAgICAgIDogRmFsc2UsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ1Nob3cgcmVhbHRpbWUgc3RhdHMgZm9yIHN3aXRjaCcsCi0gICAgJ3BhcmVudC1maWVsZCcgICAgICAgIDogTm9uZSwKLSAgICAnb2JqLXR5cGUnICAgICAgICAgICAgOiAnc3dpdGNoZXMnLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgICAgICAgOiAnc3dpdGNoJywKLSAgICAgICAgICAgICdvYmotdHlwZScgICAgIDogJ3N3aXRjaGVzJywKLSAgICAgICAgICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICAgICAgIyAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXJlc3QnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ3N3aXRjaCBkcGlkIG9yIGFsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAnZGF0YScgICAgICAgICA6IHsgJ2RldGFpbCcgOiAnc2NvcGVkJyB9LAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgICA6ICdhbGwnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICdyZXNlcnZlZHxhbGwnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAncmVhbHRpbWVzdGF0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAoJ2FnZ3JlZ2F0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXNjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVldWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogJ2Rpc3BsYXktcmVzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc29ydCcgICAgICAgOiBbJ2dyb3VwaWQnLF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAndXJsJyAgICAgICAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYWx0aW1lc3RhdHMvJShyZWFsdGltZXN0YXRzKXMvJShkcGlkKXMvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVhbHRpbWVzdGF0cy8lKHJlYWx0aW1lc3RhdHMpcy9hbGwvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAncmVzdC10eXBlJyAgOiAnZGljdC1vZi1saXN0LW9mLXN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0JyAgICAgOiAncmVhbHRpbWVfJShyZWFsdGltZXN0YXRzKXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgcmVxdWVzdGVkIGl0ZW0gYnkgcXVlcnlpbmcgc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdzd2l0Y2h8cmVhbHRpbWUtKycsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdyZWFsdGltZXN0YXRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdmZWF0dXJlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnZGlzcGxheS1yZXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICd1cmwnICAgICAgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYWx0aW1lc3RhdHMvJShyZWFsdGltZXN0YXRzKXMvJShkcGlkKXMvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYWx0aW1lc3RhdHMvJShyZWFsdGltZXN0YXRzKXMvYWxsLycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3QtdHlwZScgIDogJ2RpY3Qtb2YtZGljdC1vZi1zd2l0Y2h8cG9ydHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgICAgIDogJ3JlYWx0aW1lXyUocmVhbHRpbWVzdGF0cylzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdzd2l0Y2h8cmVhbHRpbWVfZmVhdHVyZXMnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgIDogJ2RldGFpbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgIDogKCdkZXRhaWxzJywnYnJpZWYnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgOiAnZm9ybWF0fCsnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAncmVhbHRpbWVzdGF0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAndGFibGUnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgIDogJ3RhYmxldHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogKCdpcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21wbHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdzb3J0JyAgICAgICA6IFsnbXBsc0xhYmVsJywncHJpb3JpdHknLF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnZGlzcGxheS1yZXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICd1cmwnICAgICAgICA6ICdyZWFsdGltZXN0YXRzLyUocmVhbHRpbWVzdGF0cylzLyUodGFibGV0eXBlKXMvZmxvdy8lKGRwaWQpcy8nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3QtdHlwZScgIDogJ2RpY3Qtb2YtbGlzdC1vZi1zd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgICAgIDogJ3JlYWx0aW1lXyUocmVhbHRpbWVzdGF0cylzXyUodGFibGV0eXBlKXNfZmxvdycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgIDogJ2Zvcm1hdHwrJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3JlYWx0aW1lc3RhdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ2dyb3VwJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdncm91cElkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICMnZGF0YScgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgJ2RwaWQnICAgICA6ICckZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgIyd0eXBlJyAgICAgOiAnZ3JvdXBJZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgOiAnZ3JvdXAtaWQtY29tcGxldGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAjJ3NvcnQnICAgICAgIDogWydtcGxzTGFiZWwnLCdwcmlvcml0eScsXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdkaXNwbGF5LXJlc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCcgICAgICAgIDogJ3JlYWx0aW1lc3RhdHMvJShyZWFsdGltZXN0YXRzKXMvJShncm91cElkKXMvJShkcGlkKXMvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdyZXN0LXR5cGUnICA6ICdkaWN0LW9mLWxpc3Qtb2Ytc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXQnICAgICA6ICdyZWFsdGltZV9ncm91cCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgIDogJ2Zvcm1hdHwrJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKQotICAgICAgICB9Ci0gICAgKQotfQotCi1TV0lUQ0hfU0hPV19TVEFUU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdTaG93IHN3aXRjaCBzdGF0cycsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ3Nob3cgc3RhdHMgZm9yIHNlbGVjdGVkIHN3aXRjaCcsCi0gICAgJ25vLXN1cHBvcnRlZCcgICAgICAgIDogRmFsc2UsCi0gICAgJ3BhcmVudC1maWVsZCcgICAgICAgIDogTm9uZSwKLSAgICAnb2JqLXR5cGUnICAgICAgICAgICAgOiAnc3dpdGNoZXMnLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgICAgICAgOiAnc3dpdGNoJywKLSAgICAgICAgICAgICMgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS1yZXN0JywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1hbGlhcy1jaG9pY2UnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAnaGVscC1uYW1lJyAgICA6ICdzd2l0Y2ggZHBpZCBvciBhbGlhcycsCi0gICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgICAgICAgIDogJ3N0YXRzJywKLSAgICAgICAgICAgICdhY3Rpb24nICAgICAgIDogJ2xlZ2FjeS1jbGknLAotICAgICAgICAgICAgJ29iai10eXBlJyAgICAgOiAnc3dpdGNoLXN0YXRzJywKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLVNXSVRDSF9TSE9XX1NUQVRTX09CSkVDVF9ERVRBSUxTX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ1Nob3cgc3RhdGlzdGljcyBmb3IgYSBnaXZlbiBzd2l0Y2gnLAotICAgICduby1zdXBwb3J0ZWQnICAgICAgICA6IEZhbHNlLAotICAgICdwYXJlbnQtZmllbGQnICAgICAgICA6IE5vbmUsCi0gICAgJ29iai10eXBlJyAgICAgICAgICAgIDogJ3N3aXRjaGVzJywKLSAgICAnYXJncycgICAgICAgICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgICAgICAgIDogJ3N3aXRjaCcsCi0gICAgICAgICAgICAjICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktcmVzdCcsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2RwaWQnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2RwaWQnLAotICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgOiAnc3dpdGNoIGRwaWQgb3IgYWxpYXMnLAotICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICAgICAgICA6ICdzdGF0cycsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgICA6ICdsZWdhY3ktY2xpJywKLSAgICAgICAgICAgICdvYmotdHlwZScgICAgIDogJ3N3aXRjaC1zdGF0cycsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ3N0YXRzLXR5cGUnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ09GQWN0aXZlRmxvdycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdPRkZsb3dNb2QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnT0ZQYWNrZXRJbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ3N0YXJ0LXRpbWUnLAotICAgICAgICAgICAgJ3RhZycgICAgICAgICAgOiAnc3RhcnQtdGltZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdkYXRlJywKLSAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2RhdGUtdG8taW50ZWdlcicsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgICA6ICdTdGFydCB0aW1lIGZvciBkaXNwbGF5aW5nIHRoZSBzdGF0cycsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICA6IFRydWUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2VuZC10aW1lJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgIDogJ2VuZC10aW1lJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2RhdGUnLAotICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnZGF0ZS10by1pbnRlZ2VyJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgIDogJ0VuZCB0aW1lIGZvciBkaXNwbGF5aW5nIHRoZSBzdGF0cycsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICA6IFRydWUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2R1cmF0aW9uJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgIDogJ2R1cmF0aW9uJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2R1cmF0aW9uJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgIDogJ0R1cmF0aW9uIGZyb20gdGhlIHN0YXJ0IG9yIGVuZCBmb3IgZGlzcGxheWluZyB0aGUgc3RhdHMnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdzYW1wbGUtaW50ZXJ2YWwnLAotICAgICAgICAgICAgJ3RhZycgICAgICAgICAgOiAnc2FtcGxlLWludGVydmFsJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnU3BhY2luZyBiZXR3ZWVuIHNhbXBsaW5nIHdpbmRvd3MnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdzYW1wbGUtY291bnQnLAotICAgICAgICAgICAgJ3RhZycgICAgICAgICAgOiAnc2FtcGxlLWNvdW50JywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnTnVtYmVyIG9mIHNhbXBsZXMgaW4gZWFjaCB3aW5kb3cnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdzYW1wbGUtd2luZG93JywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgIDogJ3NhbXBsZS13aW5kb3cnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgICA6ICdXaW5kb3cgbGVuZ3RoIGZvciBzYW1wbGluZycsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICA6IFRydWUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2RhdGEtZm9ybWF0JywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgIDogJ2RhdGEtZm9ybWF0JywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgICAgOiAoJ3ZhbHVlJywgJ3JhdGUnLCksCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgICA6ICdXaGV0aGVyIHRvIGRpc3BsYXkgYXMgYSByYXcgdmFsdWUgb3IgcmF0ZScsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICA6IFRydWUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgJ3RhZycgICAgICAgICAgOiAnZGlzcGxheScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgICAgIDogKCdsYXRlc3QtdmFsdWUnLCAnZ3JhcGgnLCAndGFibGUnKSwKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgIDogJ0Rpc3BsYXkgdGhlIGxhdGVzdCB2YWx1ZSwgYSBncmFwaCwgb3IgYSB0YWJsZScsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICA6IFRydWUsCi0gICAgICAgIH0sCi0gICAgKSwKLX0KLQotCi1zaG93X3N3aXRjaF9pbnRlcmZhY2VzX3BpcGVsaW5lID0gKAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgICA6ICdxdWVyeS10YWJsZScsCi0gICAgICAgICdvYmotdHlwZScgOiAnaW50ZXJmYWNlcycsCi0gICAgICAgICdrZXknICAgICAgOiAnaWQnLAotICAgIH0sCi0gICAgewotICAgICAgICAncHJvYycgICAgIDogJ3F1ZXJ5LXRhYmxlLWFwcGVuZCcsCi0gICAgICAgICdvYmotdHlwZScgOiAnc3dpdGNoLWludGVyZmFjZS1jb25maWcnLAotICAgICAgICAna2V5JyAgICAgIDogJ2lkJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgICAgIDogJ2pvaW4tcmVzdCcsCi0gICAgICAgICd1cmwnICAgICAgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGlzIHVzaW5nICdzd2l0Y2gnIGZyb20gcHJldmlvdXMgcmVzdWx0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub3QgZnJvbSB0aGUgZGF0YSBpdGVtcwotICAgICAgICAgICAgICAgICAgICAgICAgICAncmVhbHRpbWVzdGF0cy9wb3J0LyUoc3dpdGNoKXMvJywKLSAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgJ3Jlc3QtdHlwZScgIDogJ2RpY3Qtb2YtbGlzdC1vZi1zd2l0Y2h8cG9ydE51bWJlcicsCi0gICAgICAgICdrZXknICAgICAgICA6ICdzd2l0Y2h8cG9ydE51bWJlcicsCi0gICAgICAgICdqb2luLWZpZWxkJyA6ICdzd2l0Y2h8cG9ydE51bWJlcicKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgJ3NvcnQnICAgICA6IFsnc3dpdGNoJywgJ3BvcnROYW1lJ10sCi0gICAgICAgICdmb3JtYXQnICAgOiAnc3dpdGNoLWludGVyZmFjZXMnLAotICAgIH0sCi0pCi0KLVNXSVRDSF9TSE9XX1NXSVRDSF9EUElEX0lOVEVSRkFDRVNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnbm8tc3VwcG9ydGVkJyAgICAgICAgOiBGYWxzZSwKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnU2hvdyBpbnRlcmZhY2VzIGZvciBzZWxlY3RlZCBzd2l0Y2gnLAotICAgICdwYXJlbnQtZmllbGQnICAgICAgICA6IE5vbmUsCi0gICAgJ29iai10eXBlJyAgICAgICAgICAgIDogJ3N3aXRjaGVzJywKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgICAgICAgIDogJ3N3aXRjaCcsCi0gICAgICAgICAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWFsaWFzLWNob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2RwaWQnLAotICAgICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICA6ICdzd2l0Y2ggZHBpZCBvciBhbGlhcycsCi0gICAgICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgICA6ICdhbGwnLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IGludGVyZmFjZXMgZm9yIGFsbCBzd2l0Y2hlcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICksCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdpbnRlcmZhY2VzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdsZWdhY3ktY2xpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICdzd2l0Y2gtaW50ZXJmYWNlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiBzaG93X3N3aXRjaF9pbnRlcmZhY2VzX3BpcGVsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgaW50ZXJmYWNlcyBmb3Igc3dpdGNoZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3N3aXRjaHxzaG93LWludGVyZmFjZXMnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnc3RhdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogJ2Rpc3BsYXktcmVzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAndXJsJyAgICAgICAgOiAncmVhbHRpbWVzdGF0cy9wb3J0LyUoZHBpZClzLycsCi0gICAgICAgICAgICAgICAgICAgICAgICAncmVzdC10eXBlJyAgOiAnZGljdC1vZi1saXN0LW9mLXN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0JyAgICAgOiAncmVhbHRpbWVfcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAncmVzdC10eXBlJyAgOiAnZGljdC1vZi1saXN0LW9mLXN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgaW50ZXJmYWNlcyBzdGF0cyBmb3Igc3dpdGNoZXMnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ3N3aXRjaC1pbnRlcmZhY2UtYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTaG93IGludGVyZmFjZSBhbGlhc2VzIGZvciBzd2l0Y2hlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2NvcGVkJyAgICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3N3aXRjaHxzaG93LWludGVyZmFjZXMtYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAjewotICAgICAgICAgICAgICAgICMgICAgJ2ZpZWxkJyAgICAgIDogJ3ZucycsCi0gICAgICAgICAgICAgICAgIyAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgIyAgICAndmFsdWVzJyAgICAgOiAndm5zJywKLSAgICAgICAgICAgICAgICAjICAgICdhY3Rpb24nICAgICA6ICdsZWdhY3ktY2xpJywKLSAgICAgICAgICAgICAgICAjICAgICdvYmotdHlwZScgICA6ICdzd2l0Y2gtcG9ydHMtdm5zJwotICAgICAgICAgICAgICAgICN9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgOiAnYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICA6ICdzd2l0Y2gtYWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgOiAnc3dpdGNofHNob3ctc3dpdGNoLWFsaWFzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICdmaWVsZCcgICAgOiAnZGV0YWlsJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgIDogKCdkZXRhaWxzJywgJ2JyaWVmJywpLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgc3dpdGNoIG91dHB1dCBmb3JtYXQgbGV2ZWwnLAotICAgICAgICB9Ci0gICAgKQotfQotIiIiCi1TV0lUQ0hfU1VCTU9ERV9TSE9XX0lOVEVSRkFDRV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1zd2l0Y2gqJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdzd2l0Y2gtaW50ZXJmYWNlcycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyBpbnRlcmZhY2VzIGZvciBzd2l0Y2ggYXNzb2NpYXRlZCB3aXRoIGN1cnJlbnQgc3VibW9kZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICAgIDogJ2ludGVyZmFjZXMnLAotICAgICAgICAgICAgJ2FjdGlvbicgICA6ICdsZWdhY3ktY2xpJywKLSAgICAgICAgICAgICdzY29wZWQnICAgOiBUcnVlLAotICAgICAgICAgICAgJ2FjdGlvbicgICA6IHNob3dfc3dpdGNoX2ludGVyZmFjZXNfcGlwZWxpbmUsCi0gICAgICAgIH0sCi0gICAgKQotfQotCi0KLVNXSVRDSF9TSE9XX1RDUERVTVBfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnU2hvdyBzd2l0Y2ggdGNwZHVtcCB2aWEgY29udHJvbGxlcicsCi0gICAgJ25vLXN1cHBvcnRlZCcgICAgICAgIDogRmFsc2UsCi0gICAgJ3BhcmVudC1maWVsZCcgICAgICAgIDogTm9uZSwKLSAgICAnY3VycmVudC1tb2RlLW9iai1pZCcgOiBOb25lLAotICAgICdvYmotdHlwZScgICAgICAgICAgICA6ICdzd2l0Y2hlcycsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICAgICAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgJ29iai10eXBlJyAgICAgOiAnc3dpdGNoZXMnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgICAgIDogRmFsc2UsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1hbGlhcy1jaG9pY2UnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAnaGVscC1uYW1lJyAgICA6ICdzd2l0Y2ggZHBpZCBvciBhbGlhcycsCi0gICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICd0Y3BkdW1wJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgICA6IEZhbHNlLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ3RyYWNlJywKLSAgICAgICAgICAgICdvYmotdHlwZScgICA6ICdzd2l0Y2gtdGNwZHVtcCcsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ29uZWxpbmUnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICA6ICdvbmVsaW5lJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnc2luZ2xlX3Nlc3Npb24nLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICA6ICdzaW5nbGUtc2Vzc2lvbicsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2VjaG9fcmVwbHknLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICA6ICdlY2hvLXJlcGx5JywKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICdwZXJtdXRlJyAgIDogJ3NraXAnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdlY2hvX3JlcXVlc3QnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICA6ICdlY2hvLXJlcXVlc3QnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICAgJ3Blcm11dGUnICAgOiAnc2tpcCcsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2ZlYXR1cmVzX3JlcCcsCi0gICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgIDogJ2ZlYXR1cmVzLXJlcCcsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAncGVybXV0ZScgICA6ICdza2lwJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnZmxvd19tb2QnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICA6ICdmbG93LW1vZCcsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAncGVybXV0ZScgICA6ICdza2lwJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnZmxvd19yZW1vdmVkJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgOiAnZmxvdy1yZW1vdmVkJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICdwZXJtdXRlJyAgIDogJ3NraXAnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdnZXRfY29uZmlnX3JlcCcsCi0gICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgIDogJ2dldC1jb25maWctcmVwJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICdwZXJtdXRlJyAgIDogJ3NraXAnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdoZWxsbycsCi0gICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgIDogJ2hlbGxvJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICdwZXJtdXRlJyAgIDogJ3NraXAnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdwYWNrZXRfaW4nLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICA6ICdwYWNrZXQtaW4nLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICAgJ3Blcm11dGUnICAgOiAnc2tpcCcsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ3BhY2tldF9vdXQnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICA6ICdwYWNrZXQtb3V0JywKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICdwZXJtdXRlJyAgIDogJ3NraXAnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdwb3J0X3N0YXR1cycsCi0gICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgIDogJ3BvcnQtc3RhdHVzJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICdwZXJtdXRlJyAgIDogJ3NraXAnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdzZXRfY29uZmlnJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgOiAnc2V0LWNvbmZpZycsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAncGVybXV0ZScgICA6ICdza2lwJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnc3RhdHNfcmVwbHknLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICA6ICdzdGF0cy1yZXBseScsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAncGVybXV0ZScgICA6ICdza2lwJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnc3RhdHNfcmVxdWVzdCcsCi0gICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgIDogJ3N0YXRzLXJlcXVlc3QnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICAgJ3Blcm11dGUnICAgOiAnc2tpcCcsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2RldGFpbCcsCi0gICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgIDogJ2RldGFpbCcsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgIH0sCi0gICApCi19Ci0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFNXSVRDSF9UVU5ORUxfU0hPV19DT01NQU5EX0RFU0NSSVBUSU9OCi0jCi0KLXNob3dfdHVubmVsX3BpcGVsaW5lID0gKAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgICAgOiAncXVlcnktcmVzdCcsCi0gICAgICAgICd1cmwnICAgICAgIDogWyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHVubmVsLW1hbmFnZXIvJShkcGlkKXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0dW5uZWwtbWFuYWdlci9hbGwnLAotICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICdyZXN0LXR5cGUnIDogJ2RpY3Qtb2YtZGljdC1vZi1kcGlkJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgICAgIDogJ2pvaW4tdGFibGUnLAotICAgICAgICAnb2JqLXR5cGUnICAgOiAnaW50ZXJmYWNlcycsCi0gICAgICAgICdrZXknICAgICAgICA6ICdzd2l0Y2h8cG9ydE5hbWUnLAotICAgICAgICAnam9pbi1maWVsZCcgOiAnaGV4RHBpZHx0dW5uZWxFbmRQb2ludEludGZOYW1lJywKLSAgICAgICAgJ2FkZC1maWVsZCcgIDogJ3BvcnROdW1iZXJ8cG9ydE51bWJlcicsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgICdwcm9jJyAgICAgICA6ICdqb2luLXJlc3QnLAotICAgICAgICAndXJsJyAgICAgICAgOiAncmVhbHRpbWVzdGF0cy9wb3J0LyUoZHBpZClzLycsCi0gICAgICAgICdyZXN0LXR5cGUnICA6ICdkaWN0LW9mLWxpc3Qtb2Ytc3dpdGNofHBvcnROdW1iZXInLAotICAgICAgICAna2V5JyAgICAgICAgOiAnc3dpdGNofHBvcnROdW1iZXInLAotICAgICAgICAnam9pbi1maWVsZCcgOiAnaGV4RHBpZHxwb3J0TnVtYmVyJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgJ2Zvcm1hdCcgICA6ICd0dW5uZWwtcGlwZWxpbmUnLAotICAgIH0KLSkKLSIiIgotaW1wb3J0IGZtdGNudgotIiIiCi1UVU5ORUxfUElQRUxJTkVfRk9STUFUID0gewotICAgICd0dW5uZWwtcGlwZWxpbmUnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R1bm5lbENhcGFibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndHVubmVsRW5hYmxlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0dW5uZWxFbmRQb2ludEludGZOYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R1bm5lbElQQWRkcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0dW5uZWxTdGF0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNlaXZlUGFja2V0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNlaXZlQnl0ZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNtaXRQYWNrZXRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zbWl0Qnl0ZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICB9LAotCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ2RwaWQnICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnU3dpdGNoIERQSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmltYXJ5X2tleSc6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3R1bm5lbENhcGFibGUnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0NhcGFibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHVubmVsRW5hYmxlZCcgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0VuYWJsZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHVubmVsRW5kUG9pbnRJbnRmTmFtZScgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnSUYgTmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0dW5uZWxJUEFkZHInICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnSVAgQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0dW5uZWxTdGF0ZScgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnU3RhdGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncmVjZWl2ZVBhY2tldHMnICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1J4IFBrdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncmVjZWl2ZUJ5dGVzJyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1J4IEJ5dGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RyYW5zbWl0UGFja2V0cycgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdUeCBQa3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RyYW5zbWl0Qnl0ZXMnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdUeCBCeXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAgICB9LAotfQotCi0KLQotU1dJVENIX1RVTk5FTF9TSE9XX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdmZWF0dXJlJyAgICAgIDogJ3ZucycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB0dW5uZWxzIGZvciBhbGwgc3dpdGNoZXMnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktcmVzdCcsCi0gICAgJ3VybCcgICAgICAgICAgOiAndHVubmVsLW1hbmFnZXIvYWxsJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdzd2l0Y2gnLAotICAgICdhY3Rpb24nICAgICAgIDogc2hvd190dW5uZWxfcGlwZWxpbmUsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICd0dW5uZWwnLAotICAgICksCi19Ci0KLQotU1dJVENIX1RVTk5FTF9TSE9XX1dJVEhfRFBJRF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnZmVhdHVyZScgICAgICA6ICd2bnMnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgdHVubmVscyBmb3Igc2VsZWN0ZWQgc3dpdGNoZXMnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktcmVzdCcsCi0gICAgJ29iai10eXBlJyAgICAgOiAnc3dpdGNoJywKLSAgICAndXJsJyAgICAgICAgICA6ICd0dW5uZWwtbWFuYWdlci8lKGRwaWQpcycsCi0gICAgJ2Zvcm1hdCcgICAgICAgOiAndHVubmVsLWRldGFpbHMnLAotICAgICdhY3Rpb24nICAgICAgIDogc2hvd190dW5uZWxfcGlwZWxpbmUsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICd0dW5uZWwnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ2FsbCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICApLAotfQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgU1dJVENIX0NPUkVfU1dJVENIX1RFUk1JTkFUSU9OX0NPTU1BTkRfREVTQ1JJUFRJT04KLSMKLQotU1dJVENIX0NPUkVfU1dJVENIX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnY29yZS1zd2l0Y2gnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0VuYWJsZSBjb3JlLXN3aXRjaCBwcm9wZXJ0eSBmb3IgdGhpcyBzd2l0Y2gnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1zd2l0Y2gnLAotICAgICdwYXJlbnQtZmllbGQnIDogJ2RwaWQnLAotICAgICdvYmotdHlwZScgICAgIDogJ3N3aXRjaC1jb25maWcnLAotICAgICdkb2MnICAgICAgICAgIDogJ3N3aXRjaHxjb3JlLXN3aXRjaCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnc3dpdGNofGNvcmUtc3dpdGNoLWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgpLAotICAgICdhY3Rpb24nOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyA6ICd1cGRhdGUtY29uZmlnJywKLSAgICAgICAgICAgICdkYXRhJyA6IHsnY29yZS1zd2l0Y2gnIDogVHJ1ZX0KLSAgICAgICAgfSwKLSAgICApLAotICAgICduby1hY3Rpb24nOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyA6ICd1cGRhdGUtY29uZmlnJywKLSAgICAgICAgICAgICdkYXRhJyA6IHsnY29yZS1zd2l0Y2gnIDogRmFsc2V9LAotICAgICAgICB9Ci0gICAgKQotfQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgU1dJVENIX1RVTk5FTF9URVJNSU5BVElPTl9DT01NQU5EX0RFU0NSSVBUSU9OCi0jCi0KLVNXSVRDSF9UVU5ORUxfVEVSTUlOQVRJT05fQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICd0dW5uZWwnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0VuYWJsZS9EaXNhYmxlIHR1bm5lbCBjcmVhdGlvbiBmb3IgdGhpcyBzd2l0Y2gnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1zd2l0Y2gnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ3VwZGF0ZS1jb25maWcnLAotICAgICdwYXJlbnQtZmllbGQnIDogJ2RwaWQnLAotICAgICdvYmotdHlwZScgICAgIDogJ3N3aXRjaC1jb25maWcnLAotICAgICdkb2MnICAgICAgICAgIDogJ3N3aXRjaHx0dW5uZWwnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3N3aXRjaHx0dW5uZWwtZXhhbXBsZScsCi0gICAgJ2RhdGEnICAgICAgICAgOiB7ICd0dW5uZWwtdGVybWluYXRpb24nIDogJ2RlZmF1bHQnIH0sICMgZm9yIG5vIGNvbW1hbmQKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ3Rlcm1pbmF0aW9uJywKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAndHVubmVsLXRlcm1pbmF0aW9uJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgICAgICAgOiAoICJlbmFibGVkIiwgImRpc2FibGVkIiApLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICB9Ci0gICAgKQotfQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgU1dJVENIX0FMSUFTX0NPTU1BTkRfREVTQ1JJUFRJT04KLSMKLQotU1dJVENIX1NXSVRDSF9BTElBU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3N3aXRjaC1hbGlhcycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXN3aXRjaCcsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnQXR0YWNoIGFsaWFzIHRvIHN3aXRjaCcsCi0gICAgJ2RvYycgICAgICAgICAgOiAnc3dpdGNofGFsaWFzJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdzd2l0Y2h8YWxpYXMtZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnbWFuYWdlLWFsaWFzJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdzd2l0Y2gtYWxpYXMnLAotICAgICdzY29wZWQnICAgICAgIDogVHJ1ZSwKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnaWQnLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBGYWxzZSwKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgICAgIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgIH0KLSAgICApCi19Ci0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFNXSVRDSF9JTlRFUkZBQ0VfQ09NTUFORF9ERVNDUklQVElPTgotIyAgZW50ZXIgY29uZmlnLXN3aXRjaC1pZiBzdWJtb2RlCi0jCi0KLVNXSVRDSF9JTlRFUkZBQ0VfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXN3aXRjaConLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdFbnRlciBzd2l0Y2gtaWYgc3VibW9kZSwgY29uZmlndXJlIHN3aXRjaCBpbnRlcmZhY2UnLAotICAgICdjb21tYW5kLXR5cGUnICAgICAgICA6ICdjb25maWctc3VibW9kZScsCi0gICAgJ29iai10eXBlJyAgICAgICAgICAgIDogJ3N3aXRjaC1pbnRlcmZhY2UtY29uZmlnJywKLSAgICAncGFyZW50LWZpZWxkJyAgICAgICAgOiAnc3dpdGNoJywKLSAgICAnY3VycmVudC1tb2RlLW9iai1pZCcgOiAnc3dpdGNoJywKLSAgICAnc3VibW9kZS1uYW1lJyAgICAgICAgOiAnY29uZmlnLXN3aXRjaC1pZicsCi0gICAgJ3N5bnRheC1oZWxwJyAgICAgICAgIDogJ0VudGVyIGFuIGludGVyZmFjZSBuYW1lJywKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAnc3dpdGNofGludGVyZmFjZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ3N3aXRjaHxpbnRlcmZhY2UtZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICduYW1lJywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogWyAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2ludGVyZmFjZXN8cG9ydE5hbWUnLAotICAgICAgICAgICAgJ3Njb3BlZCcgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICd3YXJuLW1pc3NpbmctaW50ZXJmYWNlJywKLSAgICAgICAgfQotICAgICkKLX0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgU1dJVENIUE9SVF9DT01NQU5EX0RFU0NSSVBUSU9OCi0jICAnc3dpdGNocG9ydCBtb2RlIGV4dGVybmFsJwotIyAgJ25vIHN3aXRjaHBvcnQgbW9kZSBleHRlcm5hbCcKLSMKLQotU1dJVENIUE9SVF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3N3aXRjaHBvcnQnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0NvbmZpZ3VyZSBpbnRlcmZhY2UgYXMgY29ubmVjdGVkIHRvIGFuIGV4dGVybmFsIG5ldHdvcmsnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1zd2l0Y2gtaWYnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ29iai10eXBlJyAgICAgOiAnc3dpdGNoLWludGVyZmFjZS1jb25maWcnLAotICAgICdmaWVsZHMnICAgICAgIDogKCdicm9hZGNhc3QnLCAnbW9kZScsKSwKLSAgICAnYWN0aW9uJyAgICAgICA6ICd3cml0ZS1maWVsZHMnLAotICAgICduby1hY3Rpb24nICAgIDogJ3Jlc2V0LWZpZWxkcycsCi0gICAgJ2RvYycgICAgICAgICAgOiAnc3dpdGNofHN3aXRjaHBvcnQnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3N3aXRjaHxzd2l0Y2hwb3J0LWV4YW1wbGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnbW9kZScsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgOiAnbW9kZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgICA6ICdleHRlcm5hbCcsCi0gICAgICAgICAgICAnaGVscC1uYW1lJyAgIDogJ2ludGVyZmFjZSBjb25uZWN0cyB0byBleHRlcm5hbCBuZXR3b3JrJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgOiAnaW50ZXJmYWNlIGNvbm5lY3RzIHRvIGV4dGVybmFsIG5ldHdvcmsnLAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdleHRlcm5hbCcKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0KLQotU1dJVENIX0lOVEVSRkFDRV9JTlRFUkZBQ0VfQUxJQVNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdpbnRlcmZhY2UtYWxpYXMnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy1zd2l0Y2gtaWYnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0F0dGFjaCBhbGlhcyB0byBzd2l0Y2ggaW50ZXJmYWNlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdtYW5hZ2UtYWxpYXMnLAotICAgICdvYmotdHlwZScgICAgIDogJ3N3aXRjaC1pbnRlcmZhY2UtYWxpYXMnLAotICAgICdzY29wZWQnICAgICAgIDogVHJ1ZSwKLSAgICAnZG9jJyAgICAgICAgICA6ICdzd2l0Y2h8aW50ZXJmYWNlLWFsaWFzJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdzd2l0Y2h8aW50ZXJmYWNlLWFsaWFzLWV4YW1wbGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdpZCcsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IEZhbHNlLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgICAgIDogJ0FsaWFzIHN0cmluZycsCi0gICAgICAgIH0KLSAgICApCi19Ci0iIiIKLSMKLSMgRk9STUFUUwotIwotCi0KLVNXSVRDSF9GT1JNQVQgPSB7Ci0gICAgJ3N3aXRjaCcgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnSWR4JywgJ0AnLCAnc3dpdGNoLWFsaWFzJywgJ2Nvbm5lY3RlZC1zaW5jZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdpcC1hZGRyZXNzJywgJ3R5cGUnLCAnY29udHJvbGxlciddLAotICAgICAgICAgICAgJ2RldGFpbHMnIDogWyAnSWR4JywnQCcsICdzd2l0Y2gtYWxpYXMnLCAnY29ubmVjdGVkLXNpbmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lwLWFkZHJlc3MnLCAndHlwZScsICdjb250cm9sbGVyJ10sCi0gICAgICAgICAgICAnYnJpZWYnICAgOiBbICdJZHgnLCAnQCcsICdzd2l0Y2gtYWxpYXMnLCAnY29udHJvbGxlciddLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnQCcgICAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2ggRFBJRCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWN0aXZlJyAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdjb3JlLXN3aXRjaCcgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0NvcmUgU3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsaWRhdGUnICA6ICd2YWxpZGF0ZV9zd2l0Y2hfY29yZV9zd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2Nvbm5lY3RlZC1zaW5jZScgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQ29ubmVjdGVkIFNpbmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ2Zvcm1hdHRlcicgOiBmbXRjbnYudGltZXN0YW1wX3RvX2xvY2FsX3RpbWVzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnY2FwYWJpbGl0aWVzJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfc3dpdGNoX2NhcGFiaWxpdGllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdhY3Rpb25zJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9zd2l0Y2hfYWN0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdpcC1hZGRyZXNzJyAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0Nvbm5lY3RlZCBBdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnc29ja2V0LWFkZHJlc3MnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdidWZmZXJzJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2NvbnRyb2xsZXInICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQ29udHJvbGxlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndGFibGVzJyAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzd2l0Y2gtYWxpYXMnICAgICAgIDogewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQWxpYXMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHVubmVsQ2FwYWJsZScgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdUdW4gQ2FwYWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHVubmVsRW5hYmxlZCcgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICctRW5hYmxlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHVubmVsU3RhdGUnICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnLVN0YXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkcC1kZXNjJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2h3LWRlc2MnICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnc3ctZGVzYycgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzZXJpYWwtbnVtJyAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0iIiIKLVNXSVRDSF9DT05GSUdfRk9STUFUID0gewotICAgICdzd2l0Y2gtY29uZmlnJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdJZHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0dW5uZWwtdGVybWluYXRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnY29yZS1zd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICB9LAotfQotCi0KLVNXSVRDSF9BTElBU19GT1JNQVQgPSB7Ci0gICAgJ3N3aXRjaC1hbGlhcycgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnICAgICA6IFsgJ0lkeCcsICdpZCcsICdzd2l0Y2gnIF0sCi0gICAgICAgICAgICAnYnJpZWYnICAgICAgIDogWyAnSWR4JywgJ2lkJywgJ3N3aXRjaCcgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgIH0sCi19Ci0KLQotU1dJVENIX0lOVEVSRkFDRV9DT05GSUdfRk9STUFUID0gewotICAgICdzd2l0Y2gtaW50ZXJmYWNlLWNvbmZpZycgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogICAgIFsgJ0lkeCcsICdpZi1uYW1lJywgJ21vZGUnICBdCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICdicm9hZGNhc3QnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbmFtZScgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ21vZGUnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdTd2l0Y2hwb3J0IE1vZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgIH0sCi19Ci0KLQotU1dJVENIX0lOVEVSRkFDRV9BTElBU19GT1JNQVQgPSB7Ci0gICAgJ3N3aXRjaC1pbnRlcmZhY2UtYWxpYXMnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgICAgOiBbICdJZHgnLCAnaWQnLCAnc3dpdGNoJywgJ25hbWUnIF0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ2lkJyAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQWxpYXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotU1dJVENIX0lOVEVSRkFDRVNfRk9STUFUID0gewotICAgICdzd2l0Y2gtaW50ZXJmYWNlcycgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnSWR4JywgJ3N3aXRjaCcsICdwb3J0TmFtZScsICdzdGF0ZScsICdjb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAncmVjZWl2ZUJ5dGVzJywgJ3JlY2VpdmVQYWNrZXRzJywgJ3JlY2VpdmVFcnJvcnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNtaXRCeXRlcycsICd0cmFuc21pdFBhY2tldHMnLCAndHJhbnNtaXRFcnJvcnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kZScsICdicm9hZGNhc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdkZXRhaWxzJyA6IFsgJ0lkeCcsICdzd2l0Y2gnLCAncG9ydE5hbWUnLCAnaGFyZHdhcmVBZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZycsICdzdHAtc3RhdGUnLCAnc3RhdGUnLCAnY3VycmVudEZlYXR1cmVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkdmVydGlzZWRGZWF0dXJlcycsICdzdXBwb3J0ZWRGZWF0dXJlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdwZWVyLWZlYXR1cmVzJywgJ21vZGUnLCAnYnJvYWRjYXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnYnJpZWYnICAgOiBbICdJZHgnLCAnc3dpdGNoJywgJ3BvcnROYW1lJywgJ3N0YXRlJywgJ2NvbmZpZycgXSwKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgICAgICAgIDogeyAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZXBsYWNlX3N3aXRjaF93aXRoX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BvcnROYW1lJyAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdJRicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2hhcmR3YXJlQWRkcmVzcycgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdNQUMgQWRkcmVzcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnY29uZmlnJyAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvbmZpZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzdGF0ZScgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnTGluaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X3VwX2Rvd24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3N0cC1zdGF0ZScgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGxhbWJkYSBpLCBkYXRhIDogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10Y252LmRlY29kZV9wb3J0X3N0cF9zdGF0ZShkYXRhWydzdGF0ZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2N1cnJlbnRGZWF0dXJlcycgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdDdXJyIEZlYXR1cmVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfZmVhdHVyZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWR2ZXJ0aXNlZEZlYXR1cmVzJyAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0FkdiBGZWF0dXJlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2ZlYXR1cmVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3N1cHBvcnRlZEZlYXR1cmVzJyAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdTdXBwIEZlYXR1cmVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX3BvcnRfZmVhdHVyZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncGVlci1mZWF0dXJlcycgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1BlZXIgRmVhdHVyZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9mZWF0dXJlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdyZWNlaXZlQnl0ZXMnICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1JjdiBCeXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyfSwKLSAgICAgICAgICAgICdyZWNlaXZlUGFja2V0cycgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1JjdiBQa3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyfSwKLSAgICAgICAgICAgICdyZWNlaXZlRXJyb3JzJyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1JjdiBFcnJzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LmRlY29kZV9wb3J0X2NvdW50ZXJ9LAotICAgICAgICAgICAgJ3RyYW5zbWl0Qnl0ZXMnICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnWG1pdCBCeXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyfSwKLSAgICAgICAgICAgICd0cmFuc21pdFBhY2tldHMnICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1htaXQgUGt0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyfSwKLSAgICAgICAgICAgICd0cmFuc21pdEVycm9ycycgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1htaXQgRXJycycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfcG9ydF9jb3VudGVyfSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgIH0sCi19Ci0KLVRVTk5FTF9ERVRBSUxTX0ZPUk1BVCA9IHsKLSAgICAndHVubmVsLWRldGFpbHMnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsICdkcGlkJywgJ2xvY2FsVHVubmVsSVBBZGRyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICd0dW5uZWxQb3J0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgIH0sCi0KLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnZHBpZCcgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1N3aXRjaCBEUElEJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbWFyeV9rZXknOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnJlcGxhY2Vfc3dpdGNoX3dpdGhfYWxpYXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdsb2NhbFR1bm5lbElQQWRkcicgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdMb2NhbCB0dW5uZWwgSVAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHVubmVsUG9ydHMnIDogICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1JlbW90ZSB0dW5uZWwgSVAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgIH0sCi0gICAgfSwKLX0KLSIiIgotCi1kZWYgZ3JvdXBfaWRfY29tcGxldGlvbihwcmVmaXgsIGRhdGEsIGNvbXBsZXRpb25zKToKLSAgICBkcGlkID0gZGF0YS5nZXQoJ2RwaWQnKQotICAgICNwcmludCBkcGlkCi0gICAgcXVlcnlfdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXN0L3YxL3JlYWx0aW1lc3RhdHMvZ3JvdXAvJXMvIiAlKGRwaWQpCi0gICAgcmVzdWx0ID0gY29tbWFuZC5zZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHF1ZXJ5X3VybCkKLSAgICBlbnRyaWVzID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgZW50cmllcyA9IGVudHJpZXNbZHBpZF0KLSAgICAjcHJpbnQgInJlc3VsdCIsIGVudHJpZXMKLSAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgI3ByaW50IGVudHJ5Wydncm91cElkJ10KLSAgICAgICAgaWYgc3RyKGVudHJ5Wydncm91cElkJ10pLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgIGNvbXBsZXRpb25zW3N0cihlbnRyeVsnZ3JvdXBJZCddKSsnICddID0gZW50cnlbJ2dyb3VwSWQnXQotICAgIHJldHVybgotCi1jb21tYW5kLmFkZF9jb21wbGV0aW9uKCdncm91cC1pZC1jb21wbGV0aW9uJywgZ3JvdXBfaWRfY29tcGxldGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7ICdwcmVmaXgnICAgICAgIDogJyR0ZXh0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9ucycgIDogJyRjb21wbGV0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3N3aXRjaF9tb2RlbC5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3N3aXRjaF9tb2RlbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzQ3ODc0OC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC9zd2l0Y2hfbW9kZWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGNvbW1hbmQKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3N3aXRjaC1jb25maWcnLCAndHVubmVsLXRlcm1pbmF0aW9uJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdzd2l0Y2gtY29uZmlnJywgJ2NvcmUtc3dpdGNoJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCdzd2l0Y2gtY29uZmlnJywgJ2RwaWQnKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgnc3dpdGNoJykKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9zZXRfY2FzZSgnc3dpdGNoJywgICAgICAgICdkcGlkJywgJ2xvd2VyJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfc2V0X2Nhc2UoJ3N3aXRjaC1jb25maWcnLCAnZHBpZCcsICdsb3dlcicpCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfc2V0X2Nhc2UoJ3N3aXRjaC1pbnRlcmZhY2UtY29uZmlnJywgJ25hbWUnLCAnbG93ZXInKQotCi0KLQotIyByZXN0LXRvLW1vZGVsIG1vZGVsLWxpa2UgcmVzdWx0cyBmcm9tIHRoZSBzd2l0Y2hlcy9kZXZpY2VzIHJlc3QgYXBpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX3NldF9jYXNlKCdzd2l0Y2hlcycsICAgJ2lkJywgJ2xvd2VyJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfc2V0X2Nhc2UoJ3N3aXRjaGVzJywgICAnZHBpZCcsICdsb3dlcicpCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfc2V0X2Nhc2UoJ2ludGVyZmFjZXMnLCAnaWQnLCAnbG93ZXInKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9zZXRfY2FzZSgnaW50ZXJmYWNlcycsICduYW1lJywgJ2xvd2VyJykKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RhY2Fjcy5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RhY2Fjcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzFlZmNmMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90YWNhY3MucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOTEgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0iIiIKLVRBQ0FDU19TRVJWRVJfSE9TVF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3RhY2FjcycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnKicsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnVEFDQUNTIHRpbWVvdXQsIGlwIHNlcnZlciBhZGRyZXNzJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd0YWNhY3N8dGFjYWNzJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd0YWNhY3N8dGFjYWNzLWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1vYmplY3QnLAotICAgICdvYmotdHlwZScgICAgIDogJ3RhY2Fjcy1wbHVzLWhvc3QnLAotICAgICdwYXJlbnQtZmllbGQnIDogTm9uZSwKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgJ3NlcnZlcicsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgIDogJ3RpbWVvdXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgOiAndGFjYWNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWVvdXQnIDogMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgICAgICAgOiAndGFjYWNzLXBsdXMtY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICduby1hY3Rpb24nICAgICAgIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICAgICA6ICdjb25maWd1cmUgdGltZW91dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICd0YWNhY3N8dGFjYWNzLXRpbWVvdXQnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICd0aW1lb3V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJyA6ICd0YWNhY3MnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgICAgICA6ICd0YWNhY3MtcGx1cy1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgICAgICAgOiAnd3JpdGUtb2JqZWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgfSwgCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgIDogJ2tleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnIDogJ3RhY2FjcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2tleScgOiAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICduby1hY3Rpb24nICAgICAgIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgICAgICA6ICd0YWNhY3MtcGx1cy1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgOiAnc2V0IHNoYXJlZCBUQUNBQ1Mgc2VydmVyIGtleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICd0YWNhY3N8dGFjYWNzLWtleScsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2tleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgICAgOiB7ICdpZCcgOiAndGFjYWNzJyB9LAotICAgICAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgICAgICAgOiAndGFjYWNzLXBsdXMtY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICAgICAgIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2lwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0YWcnICAgICAgICAgICAgIDogJ2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnaXAtYWRkcmVzcy1ub3QtbWFzaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICAgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgOiAnc2V0IHNwZWNpZmljIFRBQ0FDUyBob3N0IHByb3BlcnRpZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAndGFjYWNzfHRhY2Fjcy1ob3N0JywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgICAgICAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyAgICAgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdhcmdzJyA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgICAgIDogJ2tleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduby1hY3Rpb24nICAgICAgIDogJ3Jlc2V0LWZpZWxkcy1leHBsaWNpdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgICAgICAgIDogeyAna2V5JyA6ICcnIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICAgICAgIDogJ3RhY2Fjcy1wbHVzLWhvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICAgICA6ICdzZXQgc2hhcmVkIFRBQ0FDUyBzZXJ2ZXIga2V5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAndGFjYWNzfHRhY2Fjcy1ob3N0LWtleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmdzJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2tleScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgICAgICAgOiAndGFjYWNzLXBsdXMtaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICApCi19Ci0KLVRBQ0FDU19BQUFfQVVUSE9SSVpBVElPTl9FWEVDX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnYWFhJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWcqJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdDb25maWd1cmUgYXV0aG9yaXphdGlvbiBwYXJhbWV0ZXJzJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdkb2MnICAgICAgICAgIDogJ2FhYXxhYWEtYXV0aG9yaXphdGlvbicsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnYWFhfGFhYS1hdXRob3JpemF0aW9uLWV4YW1wbGUnLAotICAgICdvYmotdHlwZScgICAgIDogJ3RhY2Fjcy1wbHVzLWNvbmZpZycsCi0gICAgJ25vLWFjdGlvbicgICAgOiAncmVzZXQtZmllbGRzLWV4cGxpY2l0JywKLSAgICAnZmllbGRzJyAgICAgICA6IFsgJ3RhY2Fjcy1wbHVzLWF1dGh6JywgJ2xvY2FsLWF1dGh6JyBdLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnYXV0aG9yaXphdGlvbicsCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdleGVjJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdDb25maWd1cmUgYXV0aG9yaXphdGlvbiBmb3Igc3RhcnRpbmcgYSBzaGVsbCcsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnYWFhfGFhYS1hdXRob3JpemF0aW9uLWV4ZWMnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICAgICAgOiAnZGVmYXVsdCcsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnQ29uZmlndXJlIGF1dGhvcml6YXRpb24gZm9yIHRoZSBkZWZhdWx0IGNoYW5uZWwnLAotICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2FhYXxhYWEtYXV0aG9yaXphdGlvbi1leGVjLXVzZS1kZWZhdWx0JywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgJ2Nob2ljZXMnICAgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnbG9jYWwnLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnVXNlIGxvY2FsIGRhdGFiYXNlIGZvciBhdXRob3JpemF0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2FhYXxhYWEtYXV0aG9yaXphdGlvbi1leGVjLXVzZS1sb2NhbCcsCi0gICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgIDogJ3RhY2FjcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsLWF1dGh6JyAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhY2Fjcy1wbHVzLWF1dGh6JyA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdncm91cCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnVXNlIGEgc2VydmVyLWdyb3VwJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgIDogJ3RhY2FjcysnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1VzZSBsaXN0IG9mIGFsbCBkZWZpbmVkIFRBQ0FDUysgaG9zdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2FhYXxhYWEtYXV0aG9yaXphdGlvbi1leGVjLXVzZS10YWNhY3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICA6ICd0YWNhY3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2NhbC1hdXRoeicgICAgICAgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFjYWNzLXBsdXMtYXV0aHonIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnbG9jYWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1VzZSBsb2NhbCBkYXRhYmFzZSBmb3IgYXV0aG9yaXphdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnYWFhfGFhYS1hdXRob3JpemF0aW9uLWV4ZWMtdXNlLWxvY2FsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgOiAnd3JpdGUtb2JqZWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgIDogJ3RhY2FjcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsLWF1dGh6JyAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhY2Fjcy1wbHVzLWF1dGh6JyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICApLAotfQotCi1UQUNBQ1NfQUFBX0FVVEhFTlRJQ0FUSU9OX0xPR0lOX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnYWFhJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWcqJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdDb25maWd1cmUgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycycsCi0gICAgJ2RvYycgICAgICAgICAgOiAnYWFhfGFhYS1hdXRoZW50aWNhdGlvbicsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnYWFhfGFhYS1hdXRoZW50aWNhdGlvbi1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICduby1hY3Rpb24nICAgIDogJ3Jlc2V0LWZpZWxkcy1leHBsaWNpdCcsCi0gICAgJ29iai10eXBlJyAgICAgOiAndGFjYWNzLXBsdXMtY29uZmlnJywKLSAgICAnZmllbGRzJyAgICAgICA6IFsgJ3RhY2Fjcy1wbHVzLWF1dGhuJywgJ2xvY2FsLWF1dGhuJyBdLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnYXV0aGVudGljYXRpb24nLAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICAgICAgOiAnbG9naW4nLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0NvbmZpZ3VyZSBhdXRoZW50aWNhdGlvbiBmb3Igc3RhcnRpbmcgYSBzaGVsbCcsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnYWFhfGFhYS1hdXRoZW50aWNhdGlvbi1sb2dpbicsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdkZWZhdWx0JywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdDb25maWd1cmUgYXV0aGVudGljYXRpb24gdmlhIHRoZSBkZWZhdWx0IGNoYW5uZWwnLAotICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2FhYXxhYWEtYXV0aGVudGljYXRpb24tbG9naW4tdXNlLWRlZmF1bHQnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAnY2hvaWNlcycgICAgICAgICA6ICgKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdsb2NhbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnVXNlIGxvY2FsIGRhdGFiYXNlIGZvciBhdXRoZW50aWNhdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnYWFhfGFhYS1hdXRoZW50aWNhdGlvbi1sb2dpbi11c2UtbG9jYWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgICAgICAgICAgICAgICAgOiAndGFjYWNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsLWF1dGhuJyAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YWNhY3MtcGx1cy1hdXRobicgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgICAnZ3JvdXAnLAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAndGFjYWNzKycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnVXNlIGxpc3Qgb2YgYWxsIGRlZmluZWQgVEFDQUNTKyBob3N0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnYWFhfGFhYS1hdXRoZW50aWNhdGlvbi1sb2dpbi11c2UtdGFjYWNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgICA6ICd3cml0ZS1vYmplY3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgIDogJ3RhY2FjcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2NhbC1hdXRobicgICAgICAgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhY2Fjcy1wbHVzLWF1dGhuJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgIDogJ2xvY2FsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnVXNlIGxvY2FsIGRhdGFiYXNlIGZvciBhdXRoZW50aWNhdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnYWFhfGFhYS1hdXRoZW50aWNhdGlvbi1sb2dpbi11c2UtbG9jYWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgICAgICAgICAgICAgICAgOiAndGFjYWNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsLWF1dGhuJyAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YWNhY3MtcGx1cy1hdXRobicgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICksCi0gICAgICAgIH0sCi0gICAgKSwKLX0KLQotVEFDQUNTX0FBQV9BQ0NPVU5USU5HX0VYRUNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdhYWEnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZyonLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0NvbmZpZ3VyZSBhY2NvdW50aW5nIHBhcmFtZXRlcnMnLAotICAgICdkb2MnICAgICAgICAgIDogJ2FhYXxhYWEtYWNjb3VudGluZycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnYWFhfGFhYS1hY2NvdW50aW5nLWV4YW1wbGUnLAotICAgICdhbGwtaGVscCcgICAgIDogJ0F1dGhlbnRpY2F0aW9uLCBBdXRob3JpemF0aW9uLCBhbmQgQWNjb3VudGluZycsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd0YWNhY3MtcGx1cy1jb25maWcnLAotICAgICduby1hY3Rpb24nICAgIDogJ3Jlc2V0LWZpZWxkcy1leHBsaWNpdCcsCi0gICAgJ2ZpZWxkcycgICAgICAgOiBbICd0YWNhY3MtcGx1cy1hY2N0JyBdLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnYWNjb3VudGluZycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdleGVjJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdDb25maWd1cmUgYWNjb3VudGluZyBmb3Igc3RhcnRpbmcgYSBzaGVsbCcsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnYWFhfGFhYS1hY2NvdW50aW5nLWV4ZWMnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICAgICAgOiAnZGVmYXVsdCcsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnQ29uZmlndXJlIGFjY291bnRpbmcgZm9yIHRoZSBkZWZhdWx0IGNoYW5uZWwnLAotICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2FhYXxhYWEtYXV0aG9yaXphdGlvbi1leGVjLXVzZS1kZWZhdWx0JywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgIDogJ25vbmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ05vIGFjY291bnRpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2FhYXxhYWEtYWNjb3VudGluZy1leGVjLXVzZS1ub25lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgICA6ICd3cml0ZS1vYmplY3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICA6ICd0YWNhY3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhY2Fjcy1wbHVzLWFjY3QnICA6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdzdGFydC1zdG9wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdSZWNvcmQgc3RhcnQgYW5kIHN0b3AnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2FhYXxhYWEtYWNjb3VudGluZy1leGVjLXVzZS1zdGFydC1zdG9wJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgIDogJ2dyb3VwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdVc2UgYSBzZXJ2ZXItZ3JvdXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2FhYXxhYWEtYWNjb3VudGluZy1leGVjLXVzZS1zZXJ2ZXItZ3JvdXAnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAndGFjYWNzKycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnVXNlIGxpc3Qgb2YgYWxsIGRlZmluZWQgVEFDQUNTKyBob3N0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnYWFhfGFhYS1hY2NvdW50aW5nLWV4ZWMtdXNlLXRhY2FjcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgOiAnd3JpdGUtb2JqZWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICA6ICd0YWNhY3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFjYWNzLXBsdXMtYWNjdCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICksCi0gICAgfQotCi1TSE9XX1RBQ0FDU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IFRBQ0FDUyBvcGVyYXRpb25hbCBzdGF0ZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndGFjYWNzfHNob3cnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3RhY2Fjc3xzaG93LWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdvYmotdHlwZScgICAgIDogJ3RhY2Fjcy1wbHVzLWNvbmZpZycsCi0gICAgJ3BhcmVudC1maWVsZCcgOiBOb25lLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAndGFjYWNzJywKLSAgICApLAotICAgICdhY3Rpb24nICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgICAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgICAgIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICAgICAgJ3RpdGxlJyAgICA6ICdcblRBQ0FDUyBTZXJ2ZXIgSG9zdHNcbicsCi0gICAgICAgICAgICAnc29ydCcgICAgIDogJ3RpbWVzdGFtcCcsCi0gICAgICAgICAgICAnb2JqLXR5cGUnIDogJ3RhY2Fjcy1wbHVzLWhvc3QnLAotICAgICAgICB9LAotICAgICksCi19Ci0KLVNIT1dfVEFDQUNTX1BMVVNfQ09ORklHX0ZPUk1BVCA9IHsKLSAgICAndGFjYWNzLXBsdXMtY29uZmlnJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgOiAgWyAnSWR4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhY2Fjcy1wbHVzLWF1dGhuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhY2Fjcy1wbHVzLWF1dGh6JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhY2Fjcy1wbHVzLWFjY3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYWwtYXV0aG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYWwtYXV0aHonLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZW91dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdrZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgfSwKLX0KLQotU0hPV19UQUNBQ1NfUExVU19IT1NUX0ZPUk1BVCA9IHsKLSAgICAndGFjYWNzLXBsdXMtaG9zdCcgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogIFsgJ0lkeCcsICdpcCcsICdrZXknLAotICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ0lkeCcgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICcjJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdpcCcgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnSXAgQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAna2V5JyA6IHsKLSAgICAgICAgICAgICAgICAgICAgfSwKLQotICAgICAgICB9Ci0gICAgfQotfQotIiIiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGFjYWNzX21vZGVsLnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGFjYWNzX21vZGVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjYzdjZGI2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RhY2Fjc19tb2RlbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1pbXBvcnQgY29tbWFuZAotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgndGFjYWNzLXBsdXMtY29uZmlnJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCd0YWNhY3MtcGx1cy1ob3N0JykKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3RhY2Fjcy1wbHVzLWNvbmZpZycsICd0YWNhY3MtcGx1cy1hdXRobicpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndGFjYWNzLXBsdXMtY29uZmlnJywgJ3RhY2Fjcy1wbHVzLWF1dGh6JykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCd0YWNhY3MtcGx1cy1jb25maWcnLCAndGFjYWNzLXBsdXMtYWNjdCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndGFjYWNzLXBsdXMtY29uZmlnJywgJ2xvY2FsLWF1dGhuJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCd0YWNhY3MtcGx1cy1jb25maWcnLCAnbG9jYWwtYXV0aHonKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3RhY2Fjcy1wbHVzLWNvbmZpZycsICd0aW1lb3V0JykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCd0YWNhY3MtcGx1cy1jb25maWcnLCAna2V5JykKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3RhY2Fjcy1wbHVzLWhvc3QnLCAnaXAnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3RhY2Fjcy1wbHVzLWhvc3QnLCAna2V5JykKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RhY2Fjc19ydW5fY29uZmlnLnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGFjYWNzX3J1bl9jb25maWcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDg4ZGQ2YTUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGFjYWNzX3J1bl9jb25maWcucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgdGFjYWNzLgotIwotCi1pbXBvcnQgcnVuX2NvbmZpZwotaW1wb3J0IHV0aWYKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBjcmVhdGVfb2JqX3R5cGVfZGljdChjb250ZXh0LCBvYmpfdHlwZSwgZmllbGQpOgotICAgICIiIgotICAgIFNob3VsZCB0aGVyZSBiZSBzb21lIGNvbGxlY3Rpb25zIG9mIG1pZGRlbGV3YXJlIGZ1bmN0aW9ucyBmb3IgdXNlIGJ5IHBhY2thZ2VzPwotICAgICIiIgotICAgIGVudHJpZXMgPSBjb250ZXh0LmdldF90YWJsZV9mcm9tX3N0b3JlKG9ial90eXBlKQotICAgIHJlc3VsdF9kaWN0ID0ge30KLSAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgaWYgZW50cnlbZmllbGRdIGluIHJlc3VsdF9kaWN0OgotICAgICAgICAgICAgcmVzdWx0X2RpY3RbZW50cnlbZmllbGRdXS5hcHBlbmQoZW50cnkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHRfZGljdFtlbnRyeVtmaWVsZF1dID0gW2VudHJ5XQotCi0gICAgcmV0dXJuIHJlc3VsdF9kaWN0Ci0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIHJ1bm5pbmdfY29uZmlnX3RhY2Fjcyhjb250ZXh0LCBjb25maWcsIHdvcmRzKToKLSAgICB0X29ial90eXBlICA9ICd0YWNhY3MtcGx1cy1jb25maWcnCi0gICAgdGhfb2JqX3R5cGUgPSAndGFjYWNzLXBsdXMtaG9zdCcKLQotICAgIHRhY2FjcyA9IGNvbnRleHQuZ2V0X3RhYmxlX2Zyb21fc3RvcmUodF9vYmpfdHlwZSkKLSAgICBpZiBsZW4odGFjYWNzKSA+IDE6Ci0gICAgICAgIHByaW50ICdydW5uaW5nX2NvbmZpZ190YWNhY3M6IG1vcmUgdGhhbiBvbmUgdGFjYWNzIHJlY29yZCcKLQotICAgIHRhY2Fjc19ob3N0ID0gY29udGV4dC5yZXN0X3F1ZXJ5X29iamVjdHModGhfb2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J29yZGVyYnknIDogJ3RpbWVzdGFtcCd9KQotCi0KLSAgICB0X2NvbmZpZyA9IFtdCi0KLSAgICBpZiB0YWNhY3M6Ci0gICAgICAgIHRhY2FjcyA9IHRhY2Fjc1swXQotCi0gICAgICAgIGlmIHJ1bl9jb25maWcubm90X2RlZmF1bHRfdmFsdWUodF9vYmpfdHlwZSwgJ3RhY2Fjcy1wbHVzLWF1dGhuJywgdGFjYWNzWyd0YWNhY3MtcGx1cy1hdXRobiddKSBhbmQgXAotICAgICAgICAgICBydW5fY29uZmlnLm5vdF9kZWZhdWx0X3ZhbHVlKHRfb2JqX3R5cGUsICdsb2NhbC1hdXRobicsIHRhY2Fjc1snbG9jYWwtYXV0aG4nXSk6Ci0gICAgICAgICAgICB0X2NvbmZpZy5hcHBlbmQoJ2FhYSBhdXRoZW50aWNhdGlvbiBsb2dpbiBkZWZhdWx0IGdyb3VwIHRhY2FjcytcbicpCi0gICAgICAgIGVsaWYgcnVuX2NvbmZpZy5ub3RfZGVmYXVsdF92YWx1ZSh0X29ial90eXBlLCAndGFjYWNzLXBsdXMtYXV0aG4nLCB0YWNhY3NbJ3RhY2Fjcy1wbHVzLWF1dGhuJ10pOgotICAgICAgICAgICAgdF9jb25maWcuYXBwZW5kKCdhYWEgYXV0aGVudGljYXRpb24gbG9naW4gZGVmYXVsdCBncm91cCB0YWNhY3MrIGxvY2FsXG4nKQotCi0gICAgICAgIGlmIHJ1bl9jb25maWcubm90X2RlZmF1bHRfdmFsdWUodF9vYmpfdHlwZSwgJ3RhY2Fjcy1wbHVzLWF1dGh6JywgdGFjYWNzWyd0YWNhY3MtcGx1cy1hdXRoeiddKSBhbmQgXAotICAgICAgICAgICBydW5fY29uZmlnLm5vdF9kZWZhdWx0X3ZhbHVlKHRfb2JqX3R5cGUsICdsb2NhbC1hdXRoeicsIHRhY2Fjc1snbG9jYWwtYXV0aHonXSk6Ci0gICAgICAgICAgICB0X2NvbmZpZy5hcHBlbmQoJ2FhYSBhdXRob3JpemF0aW9uIGV4ZWMgZGVmYXVsdCBncm91cCB0YWNhY3MrXG4nKQotICAgICAgICBlbGlmIHJ1bl9jb25maWcubm90X2RlZmF1bHRfdmFsdWUodF9vYmpfdHlwZSwgJ3RhY2Fjcy1wbHVzLWF1dGh6JywgdGFjYWNzWyd0YWNhY3MtcGx1cy1hdXRoeiddKToKLSAgICAgICAgICAgIHRfY29uZmlnLmFwcGVuZCgnYWFhIGF1dGhvcml6YXRpb24gZXhlYyBkZWZhdWx0IGdyb3VwIHRhY2FjcysgbG9jYWxcbicpCi0KLSAgICAgICAgaWYgcnVuX2NvbmZpZy5ub3RfZGVmYXVsdF92YWx1ZSh0X29ial90eXBlLCAndGFjYWNzLXBsdXMtYWNjdCcsIHRhY2Fjc1sndGFjYWNzLXBsdXMtYWNjdCddKToKLSAgICAgICAgICAgIHRfY29uZmlnLmFwcGVuZCgnYWFhIGFjY291bnRpbmcgZXhlYyBkZWZhdWx0IHN0YXJ0LXN0b3AgZ3JvdXAgdGFjYWNzK1xuJykKLQotICAgICAgICBpZiBydW5fY29uZmlnLm5vdF9kZWZhdWx0X3ZhbHVlKHRfb2JqX3R5cGUsICdrZXknLCB0YWNhY3NbJ2tleSddKToKLSAgICAgICAgICAgIHRfY29uZmlnLmFwcGVuZCgndGFjYWNzIHNlcnZlciBrZXkgJXNcbicgJSB0YWNhY3NbJ2tleSddKQotCi0gICAgICAgIGlmIHJ1bl9jb25maWcubm90X2RlZmF1bHRfdmFsdWUodF9vYmpfdHlwZSwgJ3RpbWVvdXQnLCB0YWNhY3NbJ3RpbWVvdXQnXSk6Ci0gICAgICAgICAgICB0X2NvbmZpZy5hcHBlbmQoJ3RhY2FjcyBzZXJ2ZXIgdGltZW91dCAlc1xuJyAlIHRhY2Fjc1sndGltZW91dCddKQotCi0gICAgZm9yIGggaW4gdGFjYWNzX2hvc3Q6Ci0gICAgICAgIGlmIHJ1bl9jb25maWcubm90X2RlZmF1bHRfdmFsdWUodGhfb2JqX3R5cGUsICdrZXknLCBoWydrZXknXSk6Ci0gICAgICAgICAgICBrZXkgPSAnIGtleSAlcycgJSAgdXRpZi5xdW90ZV9zdHJpbmcoaFsna2V5J10pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBrZXkgPSAnJwotCi0gICAgICAgIHRfY29uZmlnLmFwcGVuZCgndGFjYWNzIHNlcnZlciBob3N0ICVzJXNcbicgJSAoaFsnaXAnXSwga2V5KSkKLQotICAgIGlmIGxlbih0X2NvbmZpZyk6ICAgCi0gICAgICAgIGNvbmZpZy5hcHBlbmQoJyFcbicpCi0gICAgICAgIGNvbmZpZyArPSB0X2NvbmZpZwotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGFjYWNzX3J1bm5pbmdfY29uZmlnX3R1cGxlID0gKAotICAgICgKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJyA6IEZhbHNlLAotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdydW5uaW5nLWNvbmZpZycsCi0gICAgICAgICAgICAndHlwZScgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICA6ICd0YWNhY3MnLAotICAgICAgICAgICAgJ2RvYycgICAgICA6ICdydW5uaW5nLWNvbmZpZ3xzaG93LXRhY2FjcycsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCc6ICdDb25maWd1cmF0aW9uIGZvciBUQUNBQ1MgYXV0aGVudGljYXRpb24nCi0gICAgICAgIH0sCi0gICAgKSwKLSkKLQotcnVuX2NvbmZpZy5yZWdpc3Rlcl9ydW5uaW5nX2NvbmZpZygndGFjYWNzJywgMjAwMCwgIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfY29uZmlnX3RhY2FjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFjYWNzX3J1bm5pbmdfY29uZmlnX3R1cGxlKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGFjYWNzX3RlY2hzdXBwb3J0LnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGFjYWNzX3RlY2hzdXBwb3J0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyN2U1NDk4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RhY2Fjc190ZWNoc3VwcG9ydC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEyLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gdGVjaF9zdXBwb3J0IGltcG9ydCBhZGRfdG9fc2hvd190ZWNoX3N1cHBvcnQKLQotIyBTTk1QIGNvbW1hbmRzIHRvIGJlIGluY2x1ZGVkIGluICdzaG93IHRlY2gtc3VwcG9ydCcgb3V0cHV0Ci10YWNhY3Nfc2hvd190ZWNoX3N1cHBvcnRfY29tbWFuZHMgPSBbCi0gICAgWydjbGknLCAnc2hvdyB0YWNhY3MnXSwKLSAgICBbJ3NoZWxsJywgJ2NhdCAvZXRjL25zc3dpdGNoLmNvbmYnXSwKLSAgICBbJ3NoZWxsJywgJ2NhdCAvZXRjL3BhbS5kL3NzaGQnXSwKLV0KLQotIyBhZGQgY29tbWFuZHMgdG8gY2VudHJhbCBjb21tYW5kIHRhYmxlIHVzZWQgZm9yICdzaG93IHRlY2gtc3VwcG9ydCcKLWZvciBlbnRyeSBpbiB0YWNhY3Nfc2hvd190ZWNoX3N1cHBvcnRfY29tbWFuZHM6Ci0gICAgYWRkX3RvX3Nob3dfdGVjaF9zdXBwb3J0KHN0cihlbnRyeVswXSksIHN0cihlbnRyeVsxXSkpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90YWctbW9kZWwucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90YWctbW9kZWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDIzZWI0MzUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGFnLW1vZGVsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBjb21tYW5kCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZW5hYmxlX2Nhc2NhZGVfZGVsZXRlKCd0YWctbWFwcGluZycpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90YWcucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90YWcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDMwOWViOTcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGFnLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotIiIiCi0jCi0jCi0KLVRBR19TVUJNT0RFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgIDogJ3RhZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgIDogJ0VudGVyIHRhZywgY29uZmlndXJlIHN3aXRjaCBkZXRhaWxzJywKLSAgICAnZG9jJyAgICAgICAgICAgOiAndGFnfHRhZycsCi0gICAgJ2RvYy1leGFtcGxlJyAgIDogJ3RhZ3x0YWctZXhhbXBsZScsCi0gICAgJ21vZGUnICAgICAgICAgIDogJ2NvbmZpZyonLAotICAgICdvYmotdHlwZScgICAgICA6ICd0YWcnLAotICAgICdjb21tYW5kLXR5cGUnICA6ICdjb25maWctc3VibW9kZScsCi0gICAgJ3N1Ym1vZGUtbmFtZScgIDogJ2NvbmZpZy10YWcnLAotICAgICdkb2MnICAgICAgICAgICA6ICd0YWd8dGFnJywKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgICA6ICdpZCcsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICMnY29tcGxldGlvbicgICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgICA6ICdjb21wbGV0ZS10YWctbWFwcGluZycsCi0gICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyAgOiAnY29udmVydC10YWctdG8tcGFydHMnLAotICAgICAgICAgICAgJ25hbWVzcGFjZS1rZXknIDogJ25hbWVzcGFjZScsCi0gICAgICAgICAgICAnbmFtZS1rZXknICAgICAgOiAnbmFtZScsCi0gICAgICAgICAgICAndmFsdWUta2V5JyAgICAgOiAndmFsdWUnLAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgIDogJ0VudGVyIHRhZzogW25hbWVzcGFjZV0ubmFtZT12YWx1ZScsCi0gICAgICAgIH0KLSAgICApCi19Ci0KLVRBR19NQVRDSF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ21hdGNoJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctdGFnJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWctb2JqZWN0JywKLSAgICAncGFyZW50LWZpZWxkJyA6ICd0YWcnLAotICAgICdvYmotdHlwZScgICAgIDogJ3RhZy1tYXBwaW5nJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTZXQgdGhlIG1hdGNoIHJ1bGUgZm9yIHRoaXMgdGFnJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd0YWd8bWF0Y2gnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3RhZ3xtYXRjaC1leGFtcGxlJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnbWFjJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgICAgIDogJ21hYycsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdob3N0JywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgICAgIDogWyAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgICAgIDogJ2hvc3QnLAotICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgICAgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgICAgOiBUcnVlLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgOiAnTWF0Y2ggb24gTUFDIGFkZHJlc3MnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICd2bGFuJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgICAgIDogJ3ZsYW4nLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAncmFuZ2UnICAgICAgICAgICA6ICgwLDQwOTUpLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgICAgOiBUcnVlLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgICAgOiAnTWF0Y2ggb24gVkxBTiB0YWcnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAnYXJncycgICAgICAgICAgICA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2RwaWQnLAotICAgICAgICAgICAgICAgICAgICAndGFnJyAgICAgICAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnTWF0Y2ggb24gc3dpdGNoIERQSUQnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRlLWFsaWFzLWNob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ290aGVyJyAgICAgICAgOiAnc3dpdGNoZXMnLAotICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgICAgICAgICAgICAgICdzeW50YXgtaGVscCcgIDogJ0VudGVyIGEgc3dpdGNoIGRwaWQgb3IgYWxpYXMnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdpZm5hbWUnLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICAgICA6ICdNYXRjaCBvbiBzd2l0Y2ggaW50ZXJmYWNlIG5hbWUnLAotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnICAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgICAgIDogWyAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgICAgIDogJ3BvcnR8bmFtZScsCi0gICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICAgICAgIDogJ2RwaWQnLAotICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyAgICA6ICd3YXJuLW1pc3NpbmctaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICkKLSAgICAgICAgfSwKLSAgICApLAotfQotCi0KLVNIT1dfVEFHX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgY29uZmlndXJlZCB0YWdzJywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdvYmotdHlwZScgICAgIDogJ3RhZycsCi0gICAgJ2RvYycgICAgICAgICAgOiAndGFnfHNob3ctdGFnJywKLSAgICAnYXJncycgOiAoCi0gICAgICAgICd0YWcnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICduYW1lc3BhY2UnLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB0YWdzIGluIGEgZ2l2ZW4gbmFtZXNwYWNlJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgIDogJ25hbWVzcGFjZScsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICA6IFRydWUsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgJ3BhcmVudC1maWVsZCcgOiAndGFnJywKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3RhZycsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgICA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnbmFtZScsCi0gICAgICAgICAgICAndGFnJyAgICAgICAgICA6ICduYW1lJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgdGFncyB3aXRoIGEgZ2l2ZW4gbmFtZScsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICA6IFRydWUsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgJ3BhcmVudC1maWVsZCcgOiAndGFnJywKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3RhZycsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgICA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAndmFsdWUnLAotICAgICAgICAgICAgJ3RhZycgICAgICAgICAgOiAndmFsdWUnLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB0YWdzIHdpdGggYSBnaXZlbiB2YWx1ZScsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICA6IFRydWUsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgJ3BhcmVudC1maWVsZCcgOiAndGFnJywKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3RhZycsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgICA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgfSwKLSAgICApLAotfQotCi1UQUdfRk9STUFUID0gewotICAgICd0YWcnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgIDogWyAnSWR4JywgJ25hbWVzcGFjZScsICduYW1lJywgJ3ZhbHVlJywgJ3BlcnNpc3QnIF0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgICAgICduYW1lc3BhY2UnIDogIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnTmFtZXNwYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICduYW1lJyAgICAgIDogIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnTmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAndmFsdWUnICAgICA6ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJzogJ1ZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICB9LAotICAgIH0sCi19Ci0iIiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90YWdfbW9kZWwucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90YWdfbW9kZWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDIzZWI0MzUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGFnX21vZGVsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBjb21tYW5kCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZW5hYmxlX2Nhc2NhZGVfZGVsZXRlKCd0YWctbWFwcGluZycpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90YWdfcnVuX2NvbmZpZy5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RhZ19ydW5fY29uZmlnLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1ZWU3M2U0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RhZ19ydW5fY29uZmlnLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEyLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgc2hvdyBydW5uaW5nIHRhZyBbYXNdCi0jCi0KLWltcG9ydCBydW5fY29uZmlnCi1pbXBvcnQgdXRpZgotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBjcmVhdGVfb2JqX3R5cGVfZGljdChjb250ZXh0LCBvYmpfdHlwZSwgZmllbGQpOgotICAgICIiIgotICAgIFNob3VsZCB0aGVyZSBiZSBzb21lIGNvbGxlY3Rpb25zIG9mIG1pZGRlbGV3YXJlIGZ1bmN0aW9ucyBmb3IgdXNlIGJ5IHBhY2thZ2VzPwotICAgICIiIgotICAgIGVudHJpZXMgPSBjb250ZXh0LmdldF90YWJsZV9mcm9tX3N0b3JlKG9ial90eXBlKQotICAgIHJlc3VsdF9kaWN0ID0ge30KLSAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgaWYgZW50cnlbZmllbGRdIGluIHJlc3VsdF9kaWN0OgotICAgICAgICAgICAgcmVzdWx0X2RpY3RbZW50cnlbZmllbGRdXS5hcHBlbmQoZW50cnkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHRfZGljdFtlbnRyeVtmaWVsZF1dID0gW2VudHJ5XQotCi0gICAgcmV0dXJuIHJlc3VsdF9kaWN0Ci0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1kZWYgcnVubmluZ19jb25maWdfdGFnKGNvbnRleHQsIGNvbmZpZywgd29yZHMpOgotICAgICMgd2FpdGluZyBmb3IgbmV3IHRhZy1tYXBwaW5nIHRvIGFycml2ZSB0byByZXdyaXRlCi0gICAgdHJ5OgotICAgICAgICB0YWdfbWFwcGluZyA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhZy1tYXBwaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFnJykKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICB0YWdfbWFwcGluZyA9IHt9Ci0KLQotICAgIHRfY29uZmlnID0gW10KLQotICAgIGZvciB0YWcgaW4gY29udGV4dC5nZXRfdGFibGVfZnJvbV9zdG9yZSgndGFnJyk6Ci0gICAgICAgIHRhZ19uYW1lID0gJyVzLiVzPSVzJyAlICh0YWdbJ25hbWVzcGFjZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnWyduYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlmLnF1b3RlX3N0cmluZyh0YWdbJ3ZhbHVlJ10pKQotICAgICAgICBpZiBsZW4od29yZHMpID09IDEgYW5kIHRhZ19uYW1lICE9IHdvcmRzWzBdOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgdGFnLmdldCgncGVyc2lzdCcsIEZhbHNlKTogCi0gICAgICAgICAgICB0X2NvbmZpZy5hcHBlbmQoJ3RhZyAnICsgdGFnX25hbWUgKyAnXG4nKQotICAgICAgICAgICAgdG1zID0gdGFnX21hcHBpbmcuZ2V0KHRhZ1snaWQnXSwgW10pCi0gICAgICAgICAgICBmb3IgdG0gaW4gdG1zOgotICAgICAgICAgICAgICAgIG0gPSAnICBtYXRjaCcKLSAgICAgICAgICAgICAgICBpZiB0bS5nZXQoJ21hYycsICcnKSAhPSAnJzoKLSAgICAgICAgICAgICAgICAgICAgbSAgKz0gJyBtYWMgJXMnICUgdG1bJ21hYyddCi0gICAgICAgICAgICAgICAgaWYgdG0uZ2V0KCd2bGFuJywgJycpICE9ICcnOgotICAgICAgICAgICAgICAgICAgICBtICs9ICcgdmxhbiAlcycgJSB0bVsndmxhbiddCi0gICAgICAgICAgICAgICAgaWYgdG0uZ2V0KCdkcGlkJywgJycpICE9ICcnOgotICAgICAgICAgICAgICAgICAgICBtICs9ICcgc3dpdGNoICVzICVzJyAlICh0bVsnZHBpZCddLCB0bS5nZXQoJ2lmbmFtZScsICcnKSkKLSAgICAgICAgICAgICAgICB0X2NvbmZpZy5hcHBlbmQobSArICdcbicpCi0KLSAgICBpZiBsZW4odF9jb25maWcpOgotICAgICAgICBjb25maWcuYXBwZW5kKCchXG4nKQotICAgICAgICBjb25maWcgKz0gdF9jb25maWcKLQotCi10YWdfcnVubmluZ19jb25maWdfdHVwbGUgPSAoCi0gICAgKAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBGYWxzZSwKLSAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdydW5uaW5nLWNvbmZpZycsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICAgOiAndGFnJywKLSAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdDb25maWd1cmF0aW9uIGZvciBjb250cm9sbGVyIG9iamVjdCBtZXRhZGF0YScsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAncnVubmluZy1jb25maWd8c2hvdy10YWcnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgOiAnd29yZCcsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyA6ICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgJ290aGVyJyAgICAgIDogJ3RhZ3xpZCcsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICB9LAotICAgICksCi0pCi0KLSMKLSMgUmVnaXN0ZXIgd2l0aCBydW5fY29uZmlnIG1vZHVsZSwgb3VyIGNhbGxiYWNrIHRvIHByb2Nlc3MgcnVubmluZyBjb25maWdzIGZvcgotIyBhZGRyZXNzLXNwYWNlIGNvbmZpZ3VyYXRpb24gaXRlbXMKLSMKLXJ1bl9jb25maWcucmVnaXN0ZXJfcnVubmluZ19jb25maWcoJ3RhZycsIDQwMDAsIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfY29uZmlnX3RhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnX3J1bm5pbmdfY29uZmlnX3R1cGxlKQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90ZWNoX3N1cHBvcnRfcnVuX2NvbmZpZy5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RlY2hfc3VwcG9ydF9ydW5fY29uZmlnLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlZTA3ZTBjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RlY2hfc3VwcG9ydF9ydW5fY29uZmlnLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIyBzaG93IHJ1bm5pbmcgdGVjaF9zdXBwb3J0X2NvbmZpZyBbYXNdCi0jCi0KLWltcG9ydCBydW5fY29uZmlnCi1pbXBvcnQgdXRpZgotCi1kZWYgcnVubmluZ19jb25maWdfdGVjaF9zdXBwb3J0KGNvbnRleHQsIGNvbmZpZywgd29yZHMpOgotICAgICMgd2FpdGluZyBmb3IgbmV3IHRhZy1tYXBwaW5nIHRvIGFycml2ZSB0byByZXdyaXRlCi0gICAgdHJ5OgotICAgICAgICB0ZWNoX3N1cHBvcnRfZW50cmllcyA9IGNvbnRleHQuZ2V0X3RhYmxlX2Zyb21fc3RvcmUoJ3RlY2gtc3VwcG9ydC1jb25maWcnKQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgIHRlY2hfc3VwcG9ydF9lbnRyaWVzID0gW10KLSAgICB0X2NvbmZpZyA9IFtdCi0gICAgZm9yIHRzX2VudHJ5IGluIHRlY2hfc3VwcG9ydF9lbnRyaWVzOgotICAgICAgICB0X2NvbmZpZy5hcHBlbmQoInRlY2gtc3VwcG9ydC1jb25maWcgJXMgJyVzJ1xuIiAlICh0c19lbnRyeVsnY21kLXR5cGUnXSwgdXRpZi5xdW90ZV9zdHJpbmcodHNfZW50cnlbJ2NtZCddKSkpCi0gICAgaWYgbGVuKHRfY29uZmlnKSA+IDA6Ci0gICAgICAgIGNvbmZpZy5hcHBlbmQoJyFcbicpCi0gICAgICAgIGNvbmZpZyArPSB0X2NvbmZpZwotCi0KLXRhZ19ydW5uaW5nX2NvbmZpZ190dXBsZSA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgIDogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdydW5uaW5nLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ3RlY2gtc3VwcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdDb25maWd1cmF0aW9uIGZvciB0ZWNoIHN1cHBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAncnVubmluZy1jb25maWd8c2hvdy10ZWNoLXN1cHBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLQotIwotIyBSZWdpc3RlciB3aXRoIHJ1bl9jb25maWcgbW9kdWxlLCBvdXIgY2FsbGJhY2sgdG8gcHJvY2VzcyBydW5uaW5nIGNvbmZpZ3MgZm9yCi0jIGFkZHJlc3Mtc3BhY2UgY29uZmlndXJhdGlvbiBpdGVtcwotIwotcnVuX2NvbmZpZy5yZWdpc3Rlcl9ydW5uaW5nX2NvbmZpZygndGVjaC1zdXBwb3J0JywgMjAwMDAsIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfY29uZmlnX3RlY2hfc3VwcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnX3J1bm5pbmdfY29uZmlnX3R1cGxlKQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90ZWNoc3VwcG9ydC5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RlY2hzdXBwb3J0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3MTEwZjM2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RlY2hzdXBwb3J0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgKGMpIGluIDIwMTIgYnkgQmlnIFN3aXRjaCBOZXR3b3JrcyAtIEFsbCByaWdodHMgcmVzZXJ2ZWQKLSMKLSMgdGVjaC1zdXBwb3J0IGNvbW1hbmRzCi0jCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVEVDSF9TVVBQT1JUX0NPTU1BTkRfREVTQ1JJUFRJT04KLSMKLSMgIHRlY2gtc3VwcG9ydC1jb25maWcgdHlwZSBjb21tYW5kCi0jICBubyB0ZWNoLXN1cHBvcnQtY29uZmlnIHR5cGUgY29tbWFuZAotIwotIiIiCi1URUNIX1NVUFBPUlRfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICd0ZWNoLXN1cHBvcnQtY29uZmlnJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ01hbmFnZSBjb21tYW5kIG91dHB1dCBmb3Igc2hvdyB0ZWNoLXN1cHBvcnQnLAotICAgICdkb2MnICAgICAgICAgIDogJ3RlY2gtc3VwcG9ydHx0ZWNoLXN1cHBvcnQtY29uZmlnJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd0ZWNoLXN1cHBvcnR8dGVjaC1zdXBwb3J0LWNvbmZpZy1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWctb2JqZWN0JywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd0ZWNoLXN1cHBvcnQtY29uZmlnJywKLSAgICAnbmV3LXN0eWxlJyAgICA6IFRydWUsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgOiAnY21kLXR5cGUnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgICAgOiAoJ2NsaScsICdzaGVsbCcpLAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdFbnRlciBjb21tYW5kIHR5cGUgKGNsaSBvciBzaGVsbCknLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICA6ICd0ZWNoLXN1cHBvcnR8dGVjaC1zdXBwb3J0LWNvbmZpZy0rJywKLSAgICAgICAgfSwgICAgICAgICAgICAgIAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgIDogJ2NtZCcsCi0gICAgICAgICAgICAndHlwZScgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnIDogJ0VudGVyIGNvbW1hbmQgc3RyaW5nJwotICAgICAgICB9LAotICAgICkKLX0KLQotVEVDSF9TVVBQT1JUX0NPTkZfU0hPV19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IHRlY2gtc3VwcG9ydCBjb25maWd1cmF0aW9uJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd0ZWNoLXN1cHBvcnR8c2hvdy10ZWNoLXN1cHBvcnQtY29uZmlnJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd0ZWNoLXN1cHBvcnR8c2hvdy10ZWNoLXN1cHBvcnQtY29uZmlnLWV4YW1wbGUnLAotICAgICdvYmotdHlwZScgICAgIDogJ3RlY2gtc3VwcG9ydC1jb25maWcnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAndGVjaC1zdXBwb3J0LWNvbmZpZycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2NtZC10eXBlJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgICAgIDogKCdjbGknLCAnc2hlbGwnKSwKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgIDogJ0VudGVyIGNvbW1hbmQgdHlwZSAoY2xpIG9yIHNoZWxsKScsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgICA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgICdmaWVsZCcgICAgOiAnY21kJywKLSAgICAgICAgICAgICAndGFnJyAgICAgIDogJ2NtZCcsCi0gICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICB9LAotICAgICkKLX0KLSIiIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RlY2hzdXBwb3J0X21vZGVsLnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGVjaHN1cHBvcnRfbW9kZWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGQ0NDcxNzMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGVjaHN1cHBvcnRfbW9kZWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGNvbW1hbmQKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX3N1Ym1vZGUoJ3RlY2gtc3VwcG9ydC1jb25maWcnKQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90ZW5hbnQucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90ZW5hbnQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDg1N2M5MTcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdGVuYW50LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTQxICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jCi0jCi0KLWltcG9ydCBjb21tYW5kCi1kZWYgdGVuYW50X29yaWdpbl9leHRlcm5hbChkYXRhKToKLSAgICAjUmV0dXJuIG9yaWdpbi1uYW1lIHdoZW4gdGhlIHRlbmFudCB3YXNuJ3QgY3JlYXRlZCBieSB0aGUgY2xpLAotICAgICNyZXR1cm4gTm9uZSBvdGhlcndpc2UuCi0gICAgcGsgPSBjb21tYW5kLm1pLnBrKCd0ZW5hbnQnKQotICAgIGlmIG5vdCBwayBpbiBkYXRhOgotICAgICAgICByZXR1cm4gTm9uZTsKLQotICAgIHRlbmFudCA9IGNvbW1hbmQuc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoJ3RlbmFudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbcGtdKQotICAgIGlmIGxlbih0ZW5hbnQpID09IDA6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBsb2NhbCA9IFsnY2xpJywgJ3Jlc3QnXQotICAgIGlmICdvcmlnaW4nIGluIHRlbmFudFswXSBhbmQgbm90IHRlbmFudFswXVsnb3JpZ2luJ10gaW4gbG9jYWw6Ci0gICAgICAgIHJldHVybiB0ZW5hbnRbMF1bJ29yaWdpbiddCi0gICAgcmV0dXJuIE5vbmUKLQotZGVmIHRlbmFudF93YXJuX2V4dGVybmFsX2NvbmZpZyhkYXRhKToKLSAgICAiIiIKLSAgICBGcm9tIHRoZSBuYW1lZCB0ZW5hbnQsIGxvb2sgdXAgdGhlIGVudHJ5LCBpZiBpdCBleGlzdHMgaW4gdGhlCi0gICAgZGF0YWJhc2UsIHZhbGlkYXRlIHRoZSAnb3JpZ2luJyBpcyBlaXRoZXIgbnVsbCwgb3IgJ2NsaScsCi0gICAgb3RoZXJ3aXNlIHByb3ZpZGUgYSB3YXJuaW5nIGFib3V0IHRoaXMgcGFydGljdWxhciB0ZW5hbnQKLSAgICAoYWxvbmcgd2l0aCB0aGUgb3JpZ2luYXRvciBuYW1lKQotICAgICIiIgotICAgIGV4dGVybmFsX29yaWdpbiA9IHRlbmFudF9vcmlnaW5fZXh0ZXJuYWwoZGF0YSkKLSAgICBpZiBleHRlcm5hbF9vcmlnaW46Ci0gICAgICAgIGNvbW1hbmQuc2Ruc2gud2FybmluZygndGVuYW50ICVzIG1heSBub3QgYmUgaW50ZW5kZWQgZm9yIGNsaSB1cGRhdGUsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcmlnaW4vY3JlYXRvciAiJXMiICcgJSAoZGF0YVsnbmFtZSddLCBleHRlcm5hbF9vcmlnaW4pKQotCi1kZWYgdGVuYW50X3Nob3dfcHJlcHJvY2VzcyhvYmpfdHlwZSwgZGF0YSxzY29wZWQ9Tm9uZSk6Ci0gICAgZGF0YVsndGVuYW50J109J2RlZmF1bHQnCi0gICAgc2V0dGluZ3Njb3BlPVRydWUKLSAgICBpZiAnbmFtZScgaW4gZGF0YToKLSAgICAgICAgZGF0YVsndGVuYW50J109IGRhdGFbJ25hbWUnXQotICAgICAgICBkZWwgZGF0YVsnbmFtZSddCi0gICAgZWxzZToKLSAgICAgICAgY3VycmVudF9tb2RlPWNvbW1hbmQuc2Ruc2guY3VycmVudF9tb2RlKCkKLSAgICAgICAgaWYgbm90IGN1cnJlbnRfbW9kZS5zdGFydHN3aXRoKCdjb25maWctdGVuYW50Jyk6Ci0gICAgICAgICAgICBkYXRhWyd0ZW5hbnQnXT0nZGVmYXVsdCcKLSAgICAgICAgaWYgY3VycmVudF9tb2RlLnN0YXJ0c3dpdGgoJ2NvbmZpZy10ZW5hbnQnKToKLSAgICAgICAgICAgIHNldHRpbmdzY29wZT1GYWxzZQotICAgICAgICAgICAgZm9yIHggaW4gY29tbWFuZC5zZG5zaC5tb2RlX3N0YWNrOgotICAgICAgICAgICAgICAgIGlmIHhbJ21vZGVfbmFtZSddID09ICdjb25maWctdGVuYW50JzoKLSAgICAgICAgICAgICAgICAgICAgZGF0YVsndGVuYW50J10gPSB4WydvYmonXQotICAgIGlmIG9ial90eXBlPT0ndm5zLWRlZmluaXRpb24nIGFuZCBkYXRhWyd0ZW5hbnQnXT09J2RlZmF1bHQnIGFuZCBzY29wZWQ9PSdUcnVlJyBhbmQgc2V0dGluZ3Njb3BlOgotICAgICAgICBkYXRhWydzY29wZWQnXT1GYWxzZQotICAgIGlmICd2bnNuYW1lJyBpbiBkYXRhIGFuZCBkYXRhWyd2bnNuYW1lJ10hPSdhbGwnOgotICAgICAgICBpZiAob2JqX3R5cGUhPSd2bnMtZGVmaW5pdGlvbicpOgotICAgICAgICAgICAgZGF0YVsndm5zJ109ZGF0YVsndGVuYW50J10gKyd8JytkYXRhWyd2bnNuYW1lJ10KLSAgICBpZiAndm5zbmFtZScgaW4gZGF0YSBhbmQgZGF0YVsndm5zbmFtZSddPT0nYWxsJzoKLSAgICAgICAgZGF0YVsndm5zJ109J2FsbCcKLSAgICAgICAgZGVsIGRhdGFbJ3Zuc25hbWUnXQotICAgIGlmICd2bnMnIGluIGRhdGEgYW5kIGRhdGFbJ3ZucyddPT0nYWxsJzoKLSAgICAgICAgaWYgc2NvcGVkPT0nVHJ1ZSc6Ci0gICAgICAgICAgICBkYXRhWydzY29wZWQnXT1GYWxzZQotICAgICAgICBkZWwgZGF0YVsndGVuYW50J10KLSAgICBpZiAndnJuYW1lJyBpbiBkYXRhOgotICAgICAgICBpZiAob2JqX3R5cGUhPSd2aXJ0dWFscm91dGVyJyk6Ci0gICAgICAgICAgICBkYXRhWyd2aXJ0dWFsLXJvdXRlciddPWRhdGFbJ3RlbmFudCddICsnfCcrZGF0YVsndnJuYW1lJ10KLSAgICBpZiAndnJpbmFtZScgaW4gZGF0YToKLSAgICAgICAgaWYgKG9ial90eXBlIT0ndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnKToKLSAgICAgICAgICAgIGRhdGFbJ3ZpcnR1YWwtcm91dGVyLWludGVyZmFjZSddPWRhdGFbJ3RlbmFudCddICsnfCcrZGF0YVsndnJuYW1lJ10gKyd8JyArIGRhdGFbJ3ZyaW5hbWUnXQotICAgIGlmICd2cmd3bmFtZScgaW4gZGF0YToKLSAgICAgICAgaWYgKG9ial90eXBlIT0ndmlydHVhbHJvdXRlci1nd3Bvb2wnKToKLSAgICAgICAgICAgIGRhdGFbJ3ZpcnR1YWwtcm91dGVyLWd3cG9vbCddPWRhdGFbJ3RlbmFudCddICsnfCcrZGF0YVsndnJuYW1lJ10gKyd8JyArIGRhdGFbJ3ZyZ3duYW1lJ10KLQotIiIiCi1jb21tYW5kLmFkZF9hY3Rpb24oJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnLCB0ZW5hbnRfc2hvd19wcmVwcm9jZXNzLAotICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnb2JqX3R5cGUnOiAnJG9iai10eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgIDogJyRzY29wZWQnLH19KQotY29tbWFuZC5hZGRfYWN0aW9uKCd0ZW5hbnQtd2Fybi1leHRlcm5hbC1jb25maWcnLCB0ZW5hbnRfd2Fybl9leHRlcm5hbF9jb25maWcsCi0gICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyAgICAgIDogJyRkYXRhJyx9fSkKLQotZGVmIGNvbXBsZXRlX3RlbmFudF9wcmVwcm9jZXNzKGRhdGEpOgotICAgIGlmICduYW1lJyBpbiBkYXRhOgotICAgICAgICBkYXRhWyd0ZW5hbnQnXSA9ZGF0YVsnbmFtZSddCi0KLWNvbW1hbmQuYWRkX2NvbXBsZXRpb24oJ2NvbXBsZXRlLXRlbmFudC1wcmVwcm9jZXNzJywgY29tcGxldGVfdGVuYW50X3ByZXByb2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnZGF0YSc6ICckZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyB0ZW5hbnQgc3VibW9kZSBjb21tYW5kcwotIwotVEVOQU5UX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAndGVuYW50JywKLSAgICAnaGVscCcgICAgICAgICA6ICdFbnRlciB0ZW5hbnQgZGVmaW5pdGlvbiBzdWJtb2RlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWcqJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWctc3VibW9kZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAndGVuYW50JywKLSAgICAncGFyZW50LWZpZWxkJyA6IE5vbmUsCi0gICAgJ2N1cnJlbnQtbW9kZS1vYmotaWQnIDogTm9uZSwKLSAgICAnc3VibW9kZS1uYW1lJyA6ICdjb25maWctdGVuYW50JywKLSAgICAnZmVhdHVyZScgICAgICA6ICd2bnMnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0VudGVyIHRlbmFudCBkZWZpbml0aW9uIHN1Ym1vZGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x0ZW5hbnQnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3x0ZW5hbnQtZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICduYW1lJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgIDogJ0VudGVyIGEgdGVuYW50IG5hbWUnLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndGVuYW50fHRlbmFudC1pZCcsCi0gICAgICAgICAgICAnZG9jLWV4YW1wbGUnICA6ICd0ZW5hbnR8dGVuYW50LWlkLWV4YW1wbGUnLAotICAgICAgICAgICAgJ2RvYy1pbmNsdWRlJyAgOiBbICd0eXBlLWRvYycgXSwKLSAgICAgICAgICAgICdhY3Rpb24nICAgICAgIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3RlbmFudC13YXJuLWV4dGVybmFsLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdwdXNoLW1vZGUtc3RhY2snLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgJ25vLWFjdGlvbicgICAgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAndGVuYW50LXdhcm4tZXh0ZXJuYWwtY29uZmlnJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnZGVsZXRlLW9iamVjdHMnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApCi0gICAgICAgIH0KLSAgICApLAotfQotCi0KLXRlbmFudF9zaG93X2FjdGlvbiA9ICgKLSAgICB7Ci0gICAgICAgICdwcm9jJyAgOiAncXVlcnktdGFibGUnLAotICAgIH0sCi0gICAgewotICAgICAgICAncHJvYycgICAgICAgOiAnam9pbi10YWJsZScsCi0gICAgICAgICdvYmotdHlwZScgICA6ICd2aXJ0dWFscm91dGVyJywKLSAgICAgICAgJ2tleScgICAgICAgIDogJ3RlbmFudCcsCi0gICAgICAgICdqb2luLWZpZWxkJyA6ICduYW1lJywKLSAgICAgICAgJ2FkZC1maWVsZCcgIDogJ3ZpcnR1YWxyb3V0ZXJ8dnJuYW1lJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgOiAnZGlzcGxheScsCi0gICAgICAgICdmb3JtYXQnIDogJ3RlbmFudCcsCi0gICAgfSwKLSkKLQotVEVOQU5UX1NIT1dfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ2FsbC1oZWxwJyAgICAgOiAnU2hvdyB0ZW5hbnQgZGV0YWlscycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyBkZWZpbmVkIHRlbmFudHMnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdvYmotdHlwZScgICAgIDogJ3RlbmFudCcsCi0gICAgJ2FjdGlvbicgICAgICAgOiB0ZW5hbnRfc2hvd19hY3Rpb24sCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICd0ZW5hbnQnLAotICAgICkKLX0KLQotVEVOQU5UX1NIT1dfSURfSU5GT19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdvYmotdHlwZScgICAgIDogJ3RlbmFudCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdhY3Rpb24nICAgICAgIDogdGVuYW50X3Nob3dfYWN0aW9uLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgc3BlY2lmaWMgdGVuYW50LCBpZGVudGlmaWVkIGJ5IG5hbWUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xzaG93LXRlbmFudCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHNob3ctdGVuYW50LWV4YW1wbGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAndGVuYW50JywKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ25hbWUnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgOiAidGVuYW50LWlkIiwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICA6ICdhbGwnLAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICksCi0gICAgICAgIH0sCi0gICAgKQotfQotCi1URU5BTlRfU0hPV19JRF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdvYmotdHlwZScgICAgIDogJ3RlbmFudCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdhY3Rpb24nICAgICAgIDogdGVuYW50X3Nob3dfYWN0aW9uLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgc3BlY2lmaWMgdGVuYW50LCBpZGVudGlmaWVkIGJ5IG5hbWUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xzaG93LXRlbmFudCcsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICd0ZW5hbnQnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgOiAnbmFtZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdoZWxwLW5hbWUnICA6ICJ0ZW5hbnQtaWQiLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAnY2hvaWNlcycgICAgIDogKAotICAgICAgICAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICd2bnMtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICd2bnMnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAoeyAgICdwcm9jJyAgICAgOiAndGVuYW50LXNob3ctcHJlcHJvY2Vzcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAnZGlzcGxheS10YWJsZSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ3Zucy1kZWZpbml0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgVk5TIGJlbG9uZ2VkIHRvIHRoaXMgdGVuYW50JywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3Zuc3xzaG93LXRlbmFudC1pZC12bnMnLAotICAgICAgICAgICAgfSwgCi0gICAgICAgICAgICB7ICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAnYXJncycgICAgIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICd2bnNuYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICA6ICd0ZW5hbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0JyAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyA6IFsnY29tcGxldGUtdGVuYW50LXByZXByb2Nlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1mcm9tLWFub3RoZXInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICA6ICd2bnMtZGVmaW5pdGlvbnx2bnNuYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICA6ICJ2bnMtaWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICd2bnMtaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdpbnRlcmZhY2VzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICd2bnMtaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J3Byb2MnICAgOiAndGVuYW50LXNob3ctcHJlcHJvY2Vzcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsZWdhY3ktY2xpJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnU2hvdyBWTlMgYXNzb2NpYXRlZCBpbnRlcmZhY2VzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnbWFjLWFkZHJlc3MtdGFibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnbWFjLWFkZHJlc3MtdGFibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICdob3N0LXZucy1pbnRlcmZhY2Utdm5zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAoeydwcm9jJyAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZ2FjeS1jbGknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnU2hvdyBWTlMgYXNzb2NpYXRlZCBtYWMgYWRkcmVzc2VzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnaW50ZXJmYWNlLXJ1bGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ2ludGVyZmFjZS1ydWxlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICd0ZW5hbnQtc2hvdy1wcmVwcm9jZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ3Zucy1pbnRlcmZhY2UtcnVsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgVk5TIGNvbmZpZ3VyZWQgaW50ZXJmYWNlcy1ydWxlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3Zuc3xzaG93LWlkLWludGVyZmFjZS1ydWxlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2FjY2Vzcy1saXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdhY2Nlc3MtbGlzdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAndGVuYW50LXNob3ctcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXktdGFibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICd2bnMtYWNjZXNzLWxpc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXRhaWwnICAgICA6ICdhY2wtYnJpZWYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTaG93IFZOUyBjb25maWd1cmVkIGFjY2Vzcy1saXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3Zuc3xzaG93LWlkLWFjY2Vzcy1saXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3J1bm5pbmctY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ3J1bm5pbmctY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAoeydwcm9jJyAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZ2FjeS1jbGknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnU2hvdyBWTlMgcnVubmluZy1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdzd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICh7J3Byb2MnICAgOiAndGVuYW50LXNob3ctcHJlcHJvY2Vzcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGVnYWN5LWNsaScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICd2bnMtc3dpdGNoLXBvcnRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnU2hvdyBWTlMgYXNzb2NpYXRlZCBzd2l0Y2hlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ2Zsb3cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAndm5zLWZsb3cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAoeydwcm9jJyAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsZWdhY3ktY2xpJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTaG93IFZOUyBhc3NvY2lhdGVkIGZsb3dzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3Zuc3xzaG93LWlkLWZsb3cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnZGV0YWlsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAoJ2JyaWVmJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmdWxsLWRldGFpbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV0YWlscycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VtbWFyeScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdEZXRhaWwgbGV2ZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAnZm9ybWF0fCsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICApLCAgCi0gICAgICAgICgKLSAgICAgICAgewotICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAncm91dGVyJywKLSAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgJ3ZhbHVlcycgICAgICAgOiAncm91dGVyJywKLSAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xzaG93LXRlbmFudC1pZC1yb3V0ZXInLAotICAgICAgICAgfSwgCi0gICAgICAgIHsgICAnb3B0aW9uYWwnICAgOiAgVHJ1ZSwKLSAgICAgICAgICAgICdhcmdzJyAgICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3ZybmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAgICAgICAgICAnc2NvcGVkJyAgICAgOiAndGVuYW50JywKLSAgICAgICAgICAgICAgICAgICAgICdleHBsaWNpdCcgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgOiBbJ2NvbXBsZXRlLXRlbmFudC1wcmVwcm9jZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtZnJvbS1hbm90aGVyJ10sICAgICAKLSAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICA6ICd2aXJ0dWFscm91dGVyfHZybmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgOiAidmlydHVhbHJvdXRlci1pZCIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAnY2hvaWNlcycgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICA6ICdpcC1hZGRyZXNzLXBvb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAnaW50ZXJmYWNlLWFkZHJlc3MtcG9vbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICd2bnN8c2hvdy10ZW5hbnQtaWQtcm91dGVyLWlwcG9vbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAndGVuYW50LXNob3ctcHJlcHJvY2Vzcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdxdWVyeS10YWJsZSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXQnICAgOiAnaW50ZXJmYWNlLWFkZHJlc3MtcG9vbCd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICA6ICdyb3V0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyA6ICdyb3V0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICd2aXJ0dWFscm91dGVyLXJvdXRpbmdydWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3Zuc3xzaG93LXRlbmFudC1pZC1yb3V0ZXItcm91dGUnLAotICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAndGVuYW50LXNob3ctcHJlcHJvY2Vzcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdxdWVyeS10YWJsZScsfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXQnICAgOiAndmlydHVhbHJvdXRlci1yb3V0aW5ncnVsZSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAnaW50ZXJmYWNlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICA6ICdpbnRlcmZhY2VzJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgOiAndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICA6ICd2bnN8c2hvdy10ZW5hbnQtaWQtcm91dGVyLWludGVyZmFjZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAndGVuYW50LXNob3ctcHJlcHJvY2Vzcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdxdWVyeS10YWJsZSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXQnICAgOiAndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ2dhdGV3YXktcG9vbHMnLAotICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgOiAnZ2F0ZXdheS1wb29scycsCi0gICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgIDogJ3ZpcnR1YWxyb3V0ZXItZ3dwb29sJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgOiAndm5zfHNob3ctdGVuYW50LWlkLXJvdXRlci1nd3Bvb2xzJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAncXVlcnktdGFibGUnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAnZGlzcGxheScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0JyAgIDogJ3ZpcnR1YWxyb3V0ZXItZ3dwb29sJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgOiAnZ3ctYWRkcmVzcy1wb29sJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ2dhdGV3YXktYWRkcmVzcy1wb29sJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3Zuc3xzaG93LXRlbmFudC1pZC1yb3V0ZXItZ3dpcHBvb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAncXVlcnktdGFibGUnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAnZGlzcGxheScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0JyAgIDogJ2dhdGV3YXktYWRkcmVzcy1wb29sJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgKSwKLSAgICAgICAgIH0sICAgICAKLSAgICAgICAgICksCi0gICAgICAgICgKLSAgICAgICAgICB7ICdmaWVsZCcgICAgIDoncnVubmluZy1jb25maWcnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICA6ICdydW5uaW5nLWNvbmZpZycsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAoeydwcm9jJyAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZ2FjeS1jbGknKSwKLSAgICAgICAgIH0KLSAgICAgICAgICksCi0gICAgICAgICgKLSAgICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgOiAnZGV0YWlsJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgIDogKCdkZXRhaWxzJywgJ2JyaWVmJyksCi0gICAgICAgICAgICAnZG9jJyAgICAgIDogJ2Zvcm1hdHwrJywKLSAgICAgICAgfQotICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgIH0KLSAgICApCi19Ci0KLVRFTkFOVF9ERUZfREVTQ1JJUFRJT05fQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdkZXNjcmlwdGlvbicsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudCcsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdQcm92aWRlIGRlc2NyaXB0aW9uIGZvciBhIHRlbmFudCBpbnN0YW5jZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfHRlbmFudC1kZXNjcmlwdGlvbicsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHRlbmFudC1kZXNjcmlwdGlvbi1leGFtcGxlJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyA6ICdkZXNjcmlwdGlvbicsCi0gICAgICAgICAgICAndHlwZScgIDogJ3N0cmluZycsCi0gICAgICAgIH0KLSAgICApLAotfQotCi0KLVRFTkFOVF9ERUZfQUNUSVZFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICA6ICdhY3RpdmUnLAotICAgICdtb2RlJyAgICAgICAgOiAnY29uZmlnLXRlbmFudCcsCi0gICAgJ3Nob3J0LWhlbHAnICA6ICdTZXQgdGVuYW50IGFjdGl2ZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfHRlbmFudC1hY3RpdmUnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3x0ZW5hbnQtYWN0aXZlLWV4YW1wbGUnLAotICAgICdkb2MtaW5jbHVkZScgIDogWyAnZGVmYXVsdCcgXSwKLSAgICAnYXJncycgOiAoKSwKLSAgICAnYWN0aW9uJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnIDogJ3dyaXRlLWZpZWxkcycsCi0gICAgICAgICAgICAnZGF0YScgOiB7ICdhY3RpdmUnIDogVHJ1ZSB9LAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdtYXJrIHRoZSB0ZW5hbnQgYXMgYWN0aXZlJywKLSAgICAgICAgfQotICAgICksCi0gICAgJ25vLWFjdGlvbicgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyA6ICd3cml0ZS1maWVsZHMnLAotICAgICAgICAgICAgJ2RhdGEnIDogeyAnYWN0aXZlJyA6IEZhbHNlIH0sCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnIDogJ21hcmsgdGhlIHRlbmFudCBhcyBpbmFjdGl2ZScsCi0gICAgICAgIH0KLSAgICApCi19Ci0KLVRFTkFOVF9ERUZfT1JJR0lOX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnb3JpZ2luJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctdGVuYW50JywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0Rlc2NyaWJlIHRlbmFudCBvcmlnaW4nLAotICAgICdkb2MnICAgICAgICAgIDogJ3RlbmFudHxvcmlnaW4nLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3RlbmFudHxvcmlnaW4tZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICA6ICdvcmlnaW4nLAotICAgICAgICAgICAgJ3R5cGUnICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdhY3Rpb24nIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3RlbmFudC13YXJuLWV4dGVybmFsLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICd3cml0ZS1maWVsZHMnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICksCi19Ci0KLSMKLSMgRk9STUFUUwotVEVOQU5UX0ZPUk1BVCA9IHsKLSAgICAndGVuYW50JyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgIDogWyAnSWR4JywgJ25hbWUnLCAnYWN0aXZlJywgJ2Rlc2NyaXB0aW9uJywgJ3ZpcnR1YWxyb3V0ZXInXSwKLSAgICAgICAgICAgICdkZXRhaWxzJyAgICAgOiBbICdJZHgnLCAnbmFtZScsICdhY3RpdmUnLCAnZGVzY3JpcHRpb24nLCAndmlydHVhbHJvdXRlciddLAotICAgICAgICAgICAgJ2JyaWVmJyAgICAgICA6IFsgJ0lkeCcsICduYW1lJywgJ2FjdGl2ZSddLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICduYW1lJyAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1RlbmFudCBJRCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ2FjdGl2ZScgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ3ZpcnR1YWxyb3V0ZXInICAgOiB7J3ZlcmJvc2UtbmFtZScgOiAnUm91dGVyIElEJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0iIiIKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RlbmFudF9tb2RlbC5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RlbmFudF9tb2RlbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzVmNmEzMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90ZW5hbnRfbW9kZWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGNvbW1hbmQKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZW5hYmxlX2Nhc2NhZGVfZGVsZXRlKCd0ZW5hbnQnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9lbmFibGVfY2FzY2FkZV9kZWxldGUoJ3ZpcnR1YWxyb3V0ZXInKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV93ZWFrX3dpdGhfY2FzY2FkZV9kZWxldGUoJ3ZpcnR1YWxyb3V0ZXItaW50ZXJmYWNlJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfd2Vha193aXRoX2Nhc2NhZGVfZGVsZXRlKCd2aXJ0dWFscm91dGVyLXJvdXRpbmdydWxlJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZW5hYmxlX2Nhc2NhZGVfZGVsZXRlKCdpbnRlcmZhY2UtYWRkcmVzcy1wb29sJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfd2Vha193aXRoX2Nhc2NhZGVfZGVsZXRlKCd2aXJ0dWFscm91dGVyLWd3cG9vbCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2VuYWJsZV9jYXNjYWRlX2RlbGV0ZSgnZ2F0ZXdheS1hZGRyZXNzLXBvb2wnKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgndmlydHVhbHJvdXRlcicpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX3N1Ym1vZGUoJ3ZpcnR1YWxyb3V0ZXItZ3dwb29sJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCd2aXJ0dWFscm91dGVyLXJvdXRpbmdydWxlJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCdpbnRlcmZhY2UtYWRkcmVzcy1wb29sJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCdnYXRld2F5LWFkZHJlc3MtcG9vbCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgnc3RhdGljLWFycCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgndGVuYW50JykKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3RlbmFudCcsICdhY3RpdmUnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3RlbmFudCcsICdkZXNjcmlwdGlvbicpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndGVuYW50JywgJ29yaWdpbicpCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3Rlc3QucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjNGExY2JmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMzIgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBmbXRjbnYKLQotVEVTVF9QQUNLRVRfSU5fQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICd0ZXN0JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBGYWxzZSwKLSAgICAnb2JqLXR5cGUnICAgICA6ICd0ZXN0LWNvbW1hbmQnLCAgICMgZmFrZSBvYmotdHlwZSwgbGVnYWN5LWNsaSBkZXNjcmltaW5hdG9yCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnUGVyZm9ybSB2YXJpb3VzIHRlc3RzIG9uIHRoZSBuZXR3b3JrJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd0ZXN0fHRlc3QnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Rlc3R8dGVzdC1wYWNrZXQtaW4tZXhhbXBsZScsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgOiAndGVzdC10eXBlJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICAgICAgIDogJ3BhY2tldC1pbicsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgICAgIDogJ3Rlc3R8dGVzdC1wYWNrZXQtaW4nLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAjIHNyYy1ob3N0Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdzcmMtaG9zdCcsCi0gICAgICAgICAgICAndGFnJyAgICAgICAgICA6ICdzcmMtaG9zdCcsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdob3N0JywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICdob3N0fG1hYycsCi0gICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd0ZXN0fHRlc3QtcGFja2V0LWluLW1hYycsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICMgZHN0LWhvc3QKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2RzdC1ob3N0JywKLSAgICAgICAgICAgICd0YWcnICAgICAgICAgIDogJ2RzdC1ob3N0JywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2hvc3QnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2hvc3R8bWFjJywKLSAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Rlc3R8dGVzdC1wYWNrZXQtaW4tbWFjJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIyBzcmMtc3dpdGNoCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgJ2FyZ3MnICAgICAgIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnc3JjLXN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICd0YWcnICAgICAgICAgIDogJ3NyYy1zd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICAgICAgICAgJ290aGVyJyAgICAgICAgOiAnc3dpdGNoZXN8ZHBpZCcsICMgZmllbGQgaXNuJ3QgZHBpZAotICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Rlc3R8dGVzdC1wYWNrZXQtaW4tZHBpZCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ3NyYy1zd2l0Y2gtcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2ludGVyZmFjZXN8cG9ydE5hbWUnLAotICAgICAgICAgICAgICAgICAgICAnc2NvcGVkJyAgICAgICA6ICdzcmMtc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnY29udmVydC1pbnRlcmZhY2UtdG8tcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Rlc3R8dGVzdC1wYWNrZXQtaW4taWYnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICd2bGFuJywKLSAgICAgICAgICAgICd0YWcnICAgICAgIDogJ3ZsYW4nLAotICAgICAgICAgICAgJ2Jhc2UtdHlwZScgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAncmFuZ2UnICAgICA6ICgwLDQwOTUpLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICAgJ2RvYycgICAgICAgOiAndGVzdHx0ZXN0LXBhY2tldC1pbi12bGFuJywKLSAgICAgICAgfSwKLSAgICAgICAgIyBjdXJyZW50bHkgZXRoZXItdHlwZSBpc24ndCBpbXBsZW1lbnRlZAotICAgICAgICAjewotICAgICAgICAgICAgIydvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgIydjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICAjewotICAgICAgICAgICAgICAgICAgICAjJ2ZpZWxkJyAgICAgICAgIDogJ2V0aGVyLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAjJ3RhZycgICAgICAgICAgIDogJ2V0aGVyLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAjJ2Jhc2UtdHlwZScgICAgIDogJ2hleC1vci1kZWNpbWFsLWludGVnZXInLAotICAgICAgICAgICAgICAgICAgICAjJ3JhbmdlJyAgICAgICAgIDogKDE1MzYsNjU1MzYpLAotICAgICAgICAgICAgICAgICAgICAjJ2RhdGEtaGFuZGxlcicgIDogJ2hleC10by1pbnRlZ2VyJywKLSAgICAgICAgICAgICAgICAjfSwKLSAgICAgICAgICAgICAgICAjewotICAgICAgICAgICAgICAgICAgICAjJ2ZpZWxkJyAgICAgICAgIDogJ2V0aGVyLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAjJ3RhZycgICAgICAgICAgIDogJ2V0aGVyLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAjJ3R5cGUnICAgICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAjJ3ZhbHVlcycgICAgICAgIDogZm10Y252LmV0aGVyX3R5cGVfdG9fbnVtYmVyX2RpY3QsCi0gICAgICAgICAgICAgICAgI30sCi0gICAgICAgICAgICAjKSwKLSAgICAgICAgI30sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICd0YWcnICAgICAgIDogJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICdiYXNlLXR5cGUnIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ3JhbmdlJyAgICAgOiAoMCw3KSwKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICdkb2MnICAgICAgIDogJ3Rlc3R8dGVzdC1wYWNrZXQtaW4tcHJpb3JpdHknLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgIDogJ3NyYy1pcC1hZGRyZXNzJywKLSAgICAgICAgICAgICd0YWcnICAgICAgOiAnc3JjLWlwLWFkZHJlc3MnLAotICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdpcC1hZGRyZXNzLW5vdC1tYXNrJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgJ2RvYycgICAgICA6ICd0ZXN0fHRlc3QtcGFja2V0LWluLWlwJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdkc3QtaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAndGFnJyAgICAgIDogJ2RzdC1pcC1hZGRyZXNzJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnaXAtYWRkcmVzcy1ub3QtbWFzaycsCi0gICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICdkb2MnICAgICAgOiAndGVzdHx0ZXN0LXBhY2tldC1pbi1pcCcsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ3Byb3RvY29sJywKLSAgICAgICAgICAgICd0YWcnICAgICAgIDogJ3Byb3RvY29sJywKLSAgICAgICAgICAgICdiYXNlLXR5cGUnIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ3JhbmdlJyAgICAgOiAoMSwyNTUpLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICAgJ2RvYycgICAgICA6ICd0ZXN0fHRlc3QtcGFja2V0LWluLXByb3RvJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAndG9zJywKLSAgICAgICAgICAgICd0YWcnICAgICAgIDogJ3RvcycsCi0gICAgICAgICAgICAnYmFzZS10eXBlJyA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICdyYW5nZScgICAgIDogKDEsMjU1KSwKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICdkb2MnICAgICAgOiAndGVzdHx0ZXN0LXBhY2tldC1pbi10b3MnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdzcmMtcG9ydCcsCi0gICAgICAgICAgICAndGFnJyAgICAgICA6ICdzcmMtcG9ydCcsCi0gICAgICAgICAgICAnYmFzZS10eXBlJyA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICdyYW5nZScgICAgIDogKDAsNjU1MzUpLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICAgJ2RvYycgICAgICA6ICd0ZXN0fHRlc3QtcGFja2V0LWluLXBvcnQnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICA6ICdkc3QtcG9ydCcsCi0gICAgICAgICAgICAndGFnJyAgICAgICA6ICdkc3QtcG9ydCcsCi0gICAgICAgICAgICAnYmFzZS10eXBlJyA6ICdpbnRlZ2VyJywKLSAgICAgICAgICAgICdyYW5nZScgICAgIDogKDAsNjU1MzUpLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgOiBUcnVlLAotICAgICAgICAgICAgJ2RvYycgICAgICA6ICd0ZXN0fHRlc3QtcGFja2V0LWluLXBvcnQnLAotICAgICAgICB9LAotICAgICksCi19Ci0KLVRFU1RfUEFUSF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Rlc3QnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnbm8tc3VwcG9ydGVkJyA6IEZhbHNlLAotICAgICdvYmotdHlwZScgICAgIDogJ3Rlc3QtY29tbWFuZCcsICAgIyBmYWtlIG9iai10eXBlLCBsZWdhY3ktY2xpIGRlc2NyaW1pbmF0b3IKLSAgICAnc2hvcnQtaGVscCcgICA6ICdQZXJmb3JtIHZhcmlvdXMgdGVzdHMgb24gdGhlIG5ldHdvcmsnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Rlc3R8dGVzdCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndGVzdHx0ZXN0LXBhdGgtZXhhbXBsZScsCi0gICAgJ2FjdGlvbicgICAgICAgOiAoCi0gICAgICAgICMgY29sbGVjdCB0aGUgZW50cmllcwotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgIH0sCi0gICAgICAgICMgam9pbiB0aGUgaW50ZXJmYWNlIG5hbWVzLCBwb3NzaWJseSBhZGQgc3RhdHM/Ci0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyAgICAgICA6ICdqb2luLXRhYmxlJywKLSAgICAgICAgICAgICdvYmotdHlwZScgICA6ICdpbnRlcmZhY2VzJywKLSAgICAgICAgICAgICdrZXknICAgICAgICA6ICdzd2l0Y2h8cG9ydE51bWJlcicsCi0gICAgICAgICAgICAnam9pbi1maWVsZCcgOiAnc3dpdGNofHBvcnQnLAotICAgICAgICAgICAgJ2FkZC1maWVsZCcgIDogJ3BvcnROYW1lfHBvcnROYW1lJywKLSAgICAgICAgfSwKLSAgICAgICAgIyBhZGQgYmFzaWMgaW50ZXJmYWNlJ3Mgc3RhdHMKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnICAgICAgIDogJ2pvaW4tcmVzdCcsCi0gICAgICAgICAgICAndXJsJyAgICAgICAgOiAncmVhbHRpbWVzdGF0cy9wb3J0LyUoc3dpdGNoKXMvJywKLSAgICAgICAgICAgICdyZXN0LXR5cGUnICA6ICdkaWN0LW9mLWxpc3Qtb2Ytc3dpdGNofHBvcnROdW1iZXInLAotICAgICAgICAgICAgJ2tleScgICAgICAgIDogJ3N3aXRjaHxwb3J0TnVtYmVyJywKLSAgICAgICAgICAgICdqb2luLWZpZWxkJyA6ICdzd2l0Y2h8cG9ydCcKLSAgICAgICAgfSwKLSAgICAgICAgIyBkaXNwbGF5IHRoZSByZXN1bHQKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnICAgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgJ2Zvcm1hdCcgICAgIDogJ3Rlc3QtcGF0aCcsCi0gICAgICAgIH0KLSAgICApLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICd0ZXN0LXR5cGUnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICAgICA6ICdwYXRoJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Rlc3R8dGVzdC1wYXRoJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICMgc291cmNlIGRldmljZSAobmVlZCBhZGRyZXNzIHNwYWNlLCB2bGFuKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnc3JjLWhvc3QnLAotICAgICAgICAgICAgICAgICAgICAndGFnJyAgICAgICAgICA6ICdzcmMtaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICdob3N0fG1hYycsCi0gICAgICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndGVzdHx0ZXN0LXBhdGgtaG9zdCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAjIHNvdXJjZSBpcAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnc3JjLWlwJywKLSAgICAgICAgICAgICAgICAgICAgJ3RhZycgICAgICAgICAgOiAnc3JjLWlwJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2hvc3QtbmV0d29yay1hZGRyZXNzfGlwLWFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd0ZXN0fHRlc3QtcGF0aC1pcCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAjIHNvdXJjZSBhdHRhY2htZW50IHBvaW50Ci0gICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdzcmMtc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0YWcnICAgICAgICAgIDogJ3NyYy1zd2l0Y2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgJ290aGVyJyAgICAgICAgOiAnc3dpdGNoZXN8ZHBpZCcsICMgZmllbGQgaXNuJ3QgZHBpZAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndGVzdHx0ZXN0LXBhdGgtc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnc3JjLXN3aXRjaC1wb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgJ290aGVyJyAgICAgICAgOiAnaW50ZXJmYWNlc3xwb3J0TmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2NvcGVkJyAgICAgICA6ICdzcmMtc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2NvbnZlcnQtaW50ZXJmYWNlLXRvLXBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndGVzdHx0ZXN0LXBhdGgtaWYnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICApCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICAjIGRlc3QgbWFjIChuZWVkIGFkZHJlc3Mgc3BhY2UsIHZsYW4pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdkc3QtaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICd0YWcnICAgICAgICAgIDogJ2RzdC1ob3N0JywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2hvc3R8bWFjJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd0ZXN0fHRlc3QtcGF0aC1ob3N0JywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICMgZGVzdCBpcCAobmVlZCBhZGRyZXNzIHNwYWNlLCB2bGFuKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHN0LWlwJywKLSAgICAgICAgICAgICAgICAgICAgJ3RhZycgICAgICAgICAgOiAnZHN0LWlwJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2hvc3QtbmV0d29yay1hZGRyZXNzfGlwLWFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd0ZXN0fHRlc3QtcGF0aC1pcCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAjIGRlc3QgYXR0YWNobWVudCBwb2ludAotICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHN0LXN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAndGFnJyAgICAgICAgICA6ICdkc3Qtc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2RwaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3N3aXRjaGVzfGRwaWQnLCAjIGZpZWxkIGlzbid0IGRwaWQKLSAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Rlc3R8dGVzdC1wYXRoLXN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2RzdC1zd2l0Y2gtcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2ludGVyZmFjZXN8cG9ydE5hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgICAgICAgOiAnZHN0LXN3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdjb252ZXJ0LWludGVyZmFjZS10by1wb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Rlc3R8dGVzdC1wYXRoLWlmJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKQotICAgICAgICB9LAotICAgICksCi19Ci0KLVRFU1RfUEFUSF9GT1JNQVQgPSB7Ci0gICAgJ3Rlc3QtcGF0aCcgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWyAnSWR4JywgJ3N3aXRjaCcsICdwb3J0TmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNlaXZlQnl0ZXMnLCAncmVjZWl2ZVBhY2tldHMnLCAncmVjZWl2ZUVycm9ycycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc21pdEJ5dGVzJywgJ3RyYW5zbWl0UGFja2V0cycsICd0cmFuc21pdEVycm9ycycsCi0gICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnU3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZXBsYWNlX3N3aXRjaF93aXRoX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncG9ydE5hbWUnICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdJRicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncmVjZWl2ZUJ5dGVzJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdSeCBCeXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncmVjZWl2ZVBhY2tldHMnICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdSeCBQa3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdyZWNlaXZlRXJyb3JzJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1J4IEVycnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RyYW5zbWl0Qnl0ZXMnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnVHggQnl0ZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RyYW5zbWl0UGFja2V0cycgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnVHggUGt0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndHJhbnNtaXRFcnJvcnMnIDogIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdUeCBFcnJzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAgICB9LAotfQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdG9wb2xvZ3kucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90b3BvbG9neS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNGJiNTFhNC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90b3BvbG9neS5weQorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotIiIiCi0KLVRPUE9MT0dZX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAndG9wb2xvZ3knLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnRW5hYmxlIGZlYXR1cmVzIGZvciBjb250cm9sbGVyJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd0b3BvbG9neXx0b3BvbG9neScsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndG9wb2xvZ3l8dG9wb2xvZ3ktZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd0b3BvbG9neS1jb25maWcnLAotICAgICdhcmdzJzogewotICAgICAgICAnY2hvaWNlcyc6ICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgICAgICAgOiAnYXV0b3BvcnRmYXN0JywKLSAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgICAgICAgOiAnRW5hYmxlIHRoZSBhdXRvIFBvcnRGYXN0IGZlYXR1cmUnLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgICA6ICd0b3BvbG9neXx0b3BvbG9neS1hdXRvcG9ydGZhc3QnLAotICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICAgICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgICA6ICd3cml0ZS1vYmplY3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIHByaW1hcnkga2V5ICgnaWQnKSBtdXN0IGJlIHByZXNlbnQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVhZCB0aGUgb2xkIHJvdyB2YWx1ZSwgYW5kIHVwZGF0ZSBpdGVtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGEgJ25ldycgcm93IGlzIHdyaXR0ZW4gd2l0aCBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHZhbHVlcwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgOiAndG9wb2xvZ3knLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG9wb3J0ZmFzdCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAnbm8tYWN0aW9uJyAgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgICAgOiAnd3JpdGUtb2JqZWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICA6ICd0b3BvbG9neScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXV0b3BvcnRmYXN0JyA6IEZhbHNlICwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIH0sCi0gICAgICAgICkKLSAgICB9Ci19Ci0iIiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC90b3BvbG9neV9tb2RlbC5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RvcG9sb2d5X21vZGVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmMDZmMGM4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RvcG9sb2d5X21vZGVsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBjb21tYW5kCi0KLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCd0b3BvbG9neS1jb25maWcnKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdG9wb2xvZ3lfcnVuX2NvbmZpZy5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3RvcG9sb2d5X3J1bl9jb25maWcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDQzOGFkNmUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdG9wb2xvZ3lfcnVuX2NvbmZpZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jIHRvcG9sb2d5IGNvbmZpZy4KLSMKLQotaW1wb3J0IHJ1bl9jb25maWcKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgcnVubmluZ19jb25maWdfdG9wb2xvZ3koY29udGV4dCwgY29uZmlnLCB3b3Jkcyk6Ci0gICAgdF9vYmpfdHlwZSA9ICd0b3BvbG9neS1jb25maWcnCi0gICAgCi0gICAgdG9wb2xvZ3lfY29uZmlnID0gY29udGV4dC5nZXRfdGFibGVfZnJvbV9zdG9yZSh0X29ial90eXBlKQotICAgIGlmIGxlbih0b3BvbG9neV9jb25maWcpID4gMToKLSAgICAgICAgcHJpbnQgJ3J1bm5pbmdfY29uZmlnX3RvcG9sb2d5OiBtb3JlIHRoYW4gb25lIHRvcG9sb2d5IHJlY29yZCcKLSAgICBpZiBsZW4odG9wb2xvZ3lfY29uZmlnKSA9PSAwOgotICAgICAgICByZXR1cm4KLQotICAgIHRvcG9sb2d5X2NvbmZpZyA9IHRvcG9sb2d5X2NvbmZpZ1swXQotCi0gICAgaWYgcnVuX2NvbmZpZy5ub3RfZGVmYXVsdF92YWx1ZSh0X29ial90eXBlLCAnYXV0b3BvcnRmYXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wb2xvZ3lfY29uZmlnLmdldCgnYXV0b3BvcnRmYXN0JykpOgotICAgICAgICBjb25maWcuYXBwZW5kKCdcbm5vIHRvcG9sb2d5IGF1dG9wb3J0ZmFzdFxuJykKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10b3BvbG9neV9ydW5uaW5nX2NvbmZpZ190dXBsZSA9ICgKLSAgICAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgICA6IEZhbHNlLAotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3J1bm5pbmctY29uZmlnJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICd0b3BvbG9neScsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnVG9wb2xvZ3kgQ29uZmlndXJhdGlvbicsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAncnVubmluZy1jb25maWd8c2hvdy10b3BvbG9neScsCi0gICAgICAgIH0sCi0gICAgKSwKLSkKLQotcnVuX2NvbmZpZy5yZWdpc3Rlcl9ydW5uaW5nX2NvbmZpZygndG9wb2xvZ3knLCAyMTAwLCAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZ19jb25maWdfdG9wb2xvZ3ksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcG9sb2d5X3J1bm5pbmdfY29uZmlnX3R1cGxlKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdHVubmVsLnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdHVubmVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzliMDEyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3R1bm5lbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE5NiArMCwwIEBACi1pbXBvcnQgY29tbWFuZAotaW1wb3J0IGpzb24KLWltcG9ydCBmbXRjbnYKLQotCi1UVU5ORUxfU1VCTU9ERV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICA6ICd0dW5uZWwnLAotICAgICdzaG9ydC1oZWxwJyAgICA6ICdFbnRlciB0dW5uZWwgc3VibW9kZSwgY29uZmlndXJlIHR1bm5lbCBkZXRhaWxzJywKLSAgICAnbW9kZScgICAgICAgICAgOiAnY29uZmlnJywKLSAgICAncGFyZW50LWZpZWxkJyAgOiBOb25lLAotICAgICdjb21tYW5kLXR5cGUnICA6ICdjb25maWctc3VibW9kZScsCi0gICAgJ29iai10eXBlJyAgICAgIDogJ3R1bm5lbC1jb25maWcnLAotICAgICdzdWJtb2RlLW5hbWUnICA6ICdjb25maWctdHVubmVsJywKLSAgICAnZG9jJyAgICAgICAgICAgOiAndHVubmVsfHR1bm5lbCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgIDogJ3R1bm5lbHx0dW5uZWwtZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICd0dW5uZWwtaWQnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAjJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgIDogJ0VudGVyIGEgdHVubmVsIG5hbWUnLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndHVubmVsfHR1bm5lbCcsCi0gICAgICAgICAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ3R5cGUtZG9jJyBdLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAndHVubmVsLWlkLWNvbXBsZXRpb24nLAotICAgICAgICAgICAgJ2FjdGlvbicgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdjcmVhdGUtdHVubmVsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3B1c2gtbW9kZS1zdGFjaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgJ25vLWFjdGlvbic6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdyZW1vdmUtdHVubmVsJywKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApLAotICAgICAgICB9Ci0gICAgKQotfQotCi1UVU5ORUxfQ09ORklHX0ZPUk1BVCA9IHsKLSAgICAndHVubmVsLWNvbmZpZycgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAndHVubmVsLWlkJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgfSwKLX0KLQotCi1kZWYgdHVubmVsX25vZGVfbGFiZWxfY29tcGxldGlvbihwcmVmaXgsIGNvbXBsZXRpb25zKToKLSAgICAjcHJpbnQgInR1bm5lbF9ub2RlX2xhYmVsX2NvbXBsZXRpb246IixwcmVmaXgsY29tcGxldGlvbnMKLSAgICBxdWVyeV91cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc3QvdjEvc3dpdGNoZXMiCi0gICAgcmVzdWx0ID0gY29tbWFuZC5zZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHF1ZXJ5X3VybCkKLSAgICBlbnRyaWVzID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgIGlmIGVudHJ5WydzdHJpbmdBdHRyaWJ1dGVzJ11bJ25vZGVTaWQnXS5zdGFydHN3aXRoKHByZWZpeCk6Ci0gICAgICAgICAgICBjb21wbGV0aW9uc1tlbnRyeVsnc3RyaW5nQXR0cmlidXRlcyddWydub2RlU2lkJ10rJyAnXSA9IGVudHJ5WydzdHJpbmdBdHRyaWJ1dGVzJ11bJ25vZGVTaWQnXQotICAgIHJldHVybgotCi1jb21tYW5kLmFkZF9jb21wbGV0aW9uKCd0dW5uZWwtbm9kZS1sYWJlbC1jb21wbGV0aW9uJywgdHVubmVsX25vZGVfbGFiZWxfY29tcGxldGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7ICdwcmVmaXgnICAgICAgIDogJyR0ZXh0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9ucycgIDogJyRjb21wbGV0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLQotZGVmIHR1bm5lbF9hZGphY2VuY3lfbGFiZWxfY29tcGxldGlvbihwcmVmaXgsIGRhdGEsIGNvbXBsZXRpb25zKToKLSAgICAjcHJpbnQgInR1bm5lbF9hZGphY2VuY3lfbGFiZWxfY29tcGxldGlvbjoiLHByZWZpeCxkYXRhLGNvbXBsZXRpb25zCi0gICAgcXVlcnlfdXJsMSA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzdC92MS9zd2l0Y2hlcyIKLSAgICByZXN1bHQxID0gY29tbWFuZC5zZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHF1ZXJ5X3VybDEpCi0gICAgZW50cmllczEgPSBqc29uLmxvYWRzKHJlc3VsdDEpCi0gICAgbm9kZV9kcGlkID0gTm9uZQotICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzMToKLSAgICAgICAgaWYgKGludCAoZW50cnlbJ3N0cmluZ0F0dHJpYnV0ZXMnXVsnbm9kZVNpZCddKSA9PSBpbnQoZGF0YVsnbm9kZS1sYWJlbCddKSk6Ci0gICAgICAgICAgICBub2RlX2RwaWQgPSBlbnRyeVsnZHBpZCddCi0gICAgaWYgKG5vZGVfZHBpZCAhPSBOb25lKToKLSAgICAgICAgcXVlcnlfdXJsMiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzdC92MS9yb3V0ZXIvIitub2RlX2RwaWQrIi9hZGphY2VuY3kiCi0gICAgICAgIHJlc3VsdDIgPSBjb21tYW5kLnNkbnNoLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QocXVlcnlfdXJsMikKLSAgICAgICAgZW50cmllczIgPSBqc29uLmxvYWRzKHJlc3VsdDIpCi0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzMjoKLSAgICAgICAgICAgIGlmIHN0cihlbnRyeS5nZXQoImFkamFjZW5jeVNpZCIpKS5zdGFydHN3aXRoKHByZWZpeCk6Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbnNbc3RyKGVudHJ5LmdldCgiYWRqYWNlbmN5U2lkIikpKycgJ10gPSBlbnRyeS5nZXQoImFkamFjZW5jeVNpZCIpCi0gICAgcmV0dXJuCi0KLWNvbW1hbmQuYWRkX2NvbXBsZXRpb24oJ3R1bm5lbC1hZGphY2VuY3ktbGFiZWwtY29tcGxldGlvbicsIHR1bm5lbF9hZGphY2VuY3lfbGFiZWxfY29tcGxldGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7ICdwcmVmaXgnICAgICAgIDogJyR0ZXh0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJyAgICAgICAgIDogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9ucycgIDogJyRjb21wbGV0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSkKLQotVFVOTkVMX0FESkFDRU5DWV9JTkZPID0gKAotICAgIHsKLSAgICAgICAgJ3Rva2VuJyAgICAgICAgICAgICAgIDogJ2FkamFjZW5jeScsCi0gICAgICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdTZXQgYWRqYWNlbmN5IGxhYmVsIG9uIHRoaXMgbm9kZScsCi0gICAgICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICd0dW5uZWx8YWRqYWNlbmN5JywKLSAgICAgICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ3R1bm5lbHxhZGphY2VuY3knLAotICAgIH0sCi0gICAgewotICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2FkamFjZW5jeS1sYWJlbCcsCi0gICAgICAgICAndHlwZScgICAgICAgOiAnbGFiZWwnLAotICAgICAgICAgJ2NvbXBsZXRpb24nIDogJ3R1bm5lbC1hZGphY2VuY3ktbGFiZWwtY29tcGxldGlvbicsCi0gICAgICAgICAnaGVscC1uYW1lJyAgOiAnQWRqYWNlbmN5IGxhYmVsJywKLSAgICAgICAgICdkYXRhJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVfbGFiZWwnICAgICAgOiAnJG5vZGUtbGFiZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICdhY3Rpb24nICAgICAgIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ2NyZWF0ZS10dW5uZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgfQotKQotCi0jIG9ial90eXBlIGZsb3ctZW50cnkgZmllbGQgaGFyZC10aW1lb3V0Ci1UVU5ORUxfTk9ERV9FTlRSWV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdub2RlJywKLSAgICAnbW9kZScgICAgICAgICAgICAgICAgOiAnY29uZmlnLXR1bm5lbCcsCi0gICAgJ3Nob3J0LWhlbHAnICAgICAgICAgIDogJ1NldCBub2RlIGZvciB0aGlzIHR1bm5lbCcsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ3R1bm5lbHxub2RlJywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAndHVubmVsfG5vZGUnLAotICAgICdwYXJlbnQtZmllbGQnICAgICAgICA6ICd0dW5uZWwnLAotICAgICdjb21tYW5kLXR5cGUnICAgICAgICA6ICdjb25maWcnLAotICAgICdhcmdzJyAgICAgICAgICAgICAgICA6ICgKLSAgICAgICAgIHsKLSAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnbm9kZS1sYWJlbCcsCi0gICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAndHVubmVsLW5vZGUtbGFiZWwtY29tcGxldGlvbicsCi0gICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnbGFiZWwnLAotICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3N3aXRjaGVzfGxhYmVsJywKLSMgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ1NlZ21lbnQgbGFiZWwnLAotICAgICAgICAgICAgICdhY3Rpb24nICAgICAgIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnY3JlYXRlLXR1bm5lbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgfSwKLSAgICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgJ2FyZ3MnIDogVFVOTkVMX0FESkFDRU5DWV9JTkZPLAotICAgICAgICAgfSwKLSAgICApCi19Ci0KLVNXSVRDSF9UVU5ORUxfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnY29tbWFuZC10eXBlJyAgICAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2FsbC1oZWxwJyAgICAgICAgICAgIDogJ1Nob3cgc3dpdGNoIGluZm9ybWF0aW9uJywKLSAgICAnc2hvcnQtaGVscCcgICAgICAgICAgOiAnU2hvdyBzd2l0Y2ggc3VtbWFyeScsCi0gICAgIydvYmotdHlwZScgICAgICAgICAgICA6ICdzd2l0Y2hlcycsCi0gICAgJ2RvYycgICAgICAgICAgICAgICAgIDogJ3N3aXRjaHxzaG93JywKLSAgICAnZG9jLWV4YW1wbGUnICAgICAgICAgOiAnc3dpdGNofHNob3ctZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICA6ICd0dW5uZWwnLAotICAgICAgICAgICAgJ2ZpZWxkJyAgOiAnc2hvd3R1bm5lbCcsCi0gICAgICAgICAgICAnc29ydCcgICA6IFsndHVubmVsSWQnLF0sCi0gICAgICAgICAgICAnYWN0aW9uJyA6ICdkaXNwbGF5LXJlc3QnLAotICAgICAgICAgICAgJ2RvYycgICAgOiAnc3dpdGNofHNob3cnLAotICAgICAgICAgICAgJ3VybCcgICAgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2hvd3R1bm5lbCcsCi0gICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZm9ybWF0JyA6ICdzaG93X3R1bm5lbCcsCi0gICAgICAgIH0sCi0gICAgICAgICAgICAgIHsgCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBUcnVlLAotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3Nob3d0dW5uZWwnLAotICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICgnZGV0YWlscycsKSwKLSAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgOiAnc2hvd190dW5uZWwnLAotICAgICAgICAgICAgICAgICAnZGF0YScgICAgICAgICA6IHsgJ2RldGFpbCcgOiAnZGV0YWlscycgfSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICB9Ci0gICAgKQotfQotCi0KLWRlZiB0dW5uZWxfaWRfY29tcGxldGlvbihwcmVmaXgsIGNvbXBsZXRpb25zKToKLSAgICBxdWVyeV91cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc3QvdjEvc2hvd3R1bm5lbCIKLSAgICByZXN1bHQgPSBjb21tYW5kLnNkbnNoLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QocXVlcnlfdXJsKQotICAgIGVudHJpZXMgPSBqc29uLmxvYWRzKHJlc3VsdCkKLSAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgaWYgZW50cnlbJ3R1bm5lbElkJ10uc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgY29tcGxldGlvbnNbZW50cnlbJ3R1bm5lbElkJ10rJyAnXSA9IGVudHJ5Wyd0dW5uZWxJZCddCi0gICAgcmV0dXJuCi0KLWNvbW1hbmQuYWRkX2NvbXBsZXRpb24oJ3R1bm5lbC1pZC1jb21wbGV0aW9uJywgdHVubmVsX2lkX2NvbXBsZXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeyAncHJlZml4JyAgICAgICA6ICckdGV4dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbnMnICA6ICckY29tcGxldGlvbnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdHVubmVsT2xkLnB5IGIvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdHVubmVsT2xkLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwYTNmNWJhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3R1bm5lbE9sZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGZtdGNudgotIiIiCi1UVU5ORUxfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICAgOiAndHVubmVsLWxpbmsnLAotICAgICdmZWF0dXJlJyAgICAgIDogJ3ZucycsCi0gICAgJ21vZGUnICAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnY29tbWFuZC10eXBlJyAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2RvYycgICAgICAgICAgIDogJ3R1bm5lbC1saW5rfHZlcmlmeS1leGFtcGxlJywKLSAgICAnb2JqLXR5cGUnICAgICAgOiBOb25lLAotICAgICdhcmdzJyAgOiB7Ci0gICAgICAgICdjaG9pY2VzJzogKAotICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICAgICAgOiAndmVyaWZ5JywKLSAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyAgICA6ICdWZXJpZnkgc3RhdHVzIG9mIHR1bm5lbCBiZXR3ZWVuIHR3byBzd2l0Y2hlcycsCi0gICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgICAgOiAnZGlzcGxheS1yZXN0JywKLSAgICAgICAgICAgICAgICAgICAgICdmb3JtYXQnICAgICAgICA6ICd0dW5uZWwtZXZlbnQnLAotICAgICAgICAgICAgICAgICAgICAgJ3VybCcgICAgICAgICAgIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFsdGltZXN0YXR1cy9uZXR3b3JrL3R1bm5lbHZlcmlmeS8lKHNyYy1kcGlkKXMvJShkc3QtZHBpZClzLycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgIDogJ3NyYy1kcGlkJywKLSAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICA6ICdkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgICA6ICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgJ290aGVyJyAgICAgICAgIDogJ3N3aXRjaGVzfGRwaWQnLAotICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgICA6ICdzd2l0Y2ggZHBpZCBvciBhbGlhcycsCi0gICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICA6ICdkc3QtZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgOiAnZHBpZCcsCi0gICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICAgOiAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgICA6ICdzd2l0Y2hlc3xkcGlkJywKLSAgICAgICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInICA6ICdhbGlhcy10by12YWx1ZScsCi0gICAgICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICAgOiAnc3dpdGNoIGRwaWQgb3IgYWxpYXMnLAotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApLAotICAgICAgICApCi0gICAgfQotfQotCi1UVU5ORUxfTElOS19GQUlMVVJFU19TSE9XX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdmZWF0dXJlJyAgICAgIDogJ3ZucycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB0dW5uZWwgbGluayBmYWlsdXJlcycsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ3VybCcgICAgICAgICAgOiAncmVhbHRpbWVzdGF0dXMvbmV0d29yay90dW5uZWxzdGF0dXMvYWxsL2FsbCcsCi0gICAgJ29iai10eXBlJyAgICAgOiBOb25lLAotICAgICdmb3JtYXQnICAgICAgIDogJ3R1bm5lbC1ldmVudCcsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnZGlzcGxheS1yZXN0JywKLSAgICAnYXJncycgIDogKAotICAgICAgICAndHVubmVsLWxpbmstZmFpbHVyZXMnLAotICAgICksCi19Ci0KLVRVTk5FTF9FVkVOVF9GT1JNQVQgPSB7Ci0gICAgJ3R1bm5lbC1ldmVudCcgOiB7Ci0gICAgICAgICdzb3VyY2UnICAgICAgICA6ICdjb250cm9sbGVyJywKLSAgICAgICAgJ3VybCcgICAgICAgICAgIDogJ3R1bm5lbC1ldmVudCcsCi0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnOiB7Ci0gICAgICAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ0lkeCcsICdzcmMtZHBpZCcsICdkc3QtZHBpZCcsICdzdGF0dXMnLCAnbGFzdC12ZXJpZmllZCcgXSwKLSAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnSWR4JyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnIycsCi0gICAgICAgICAgICAgICAgICAgICAnZWRpdCcgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnkta2V5JzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnc3JjLWRwaWQnOnsKLSAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJzogJ1NyYyBEUElEJywKLSAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAndHlwZSc6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZHN0LWRwaWQnOiB7J2pzb25fc2VyaWFsaXplX3N0cmluZyc6IFRydWUsCi0gICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZSc6ICdEc3QgRFBJRCcsCi0gICAgICAgICAgICAgICAgJ3R5cGUnOiAnQ2hhckZpZWxkJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3N0YXR1cyc6IHsKLSAgICAgICAgICAgICAgICAnanNvbl9zZXJpYWxpemVfc3RyaW5nJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAndHlwZSc6ICdDaGFyRmllbGQnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbGFzdC12ZXJpZmllZCc6IHsKLSAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJzogJ0xhc3QgVmVyaWZpZWQnLAotICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X3RpbWVfc2luY2VfdXRjLAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLSIiIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3ZjZW50ZXIucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC92Y2VudGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmNzFlYWZkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3ZjZW50ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NDkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgKGMpIGluIDIwMTIgYnkgQmlnIFN3aXRjaCBOZXR3b3JrcyAtIEFsbCByaWdodHMgcmVzZXJ2ZWQKLSMKLSMgdkNlbnRlciBjb21tYW5kcwotIwotIiIiCi1pbXBvcnQgb3MKLVZDRU5URVJfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICd2Y2VudGVyJywKLSAgICAjJ25vLWhlbHAnICAgICAgOiAnUmVtb3ZlIHZjZW50ZXIgY29uZmlndXJhdGlvbicsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnKicsCi0gICAgJ2ZlYXR1cmUnICAgICAgOiAnZXhwZXJpbWVudGFsJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWctc3VibW9kZScsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnRW50ZXIgdmNlbnRlciBzdWJtb2RlLCBjb25maWd1cmUgdmNlbnRlciBkZXRhaWxzJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2Y2VudGVyfHZjZW50ZXInLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3ZjZW50ZXJ8dmNlbnRlci1leGFtcGxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2Y2VudGVyJywKLSAgICAncGFyZW50LWZpZWxkJyA6IE5vbmUsCi0gICAgJ2N1cnJlbnQtbW9kZS1vYmotaWQnIDogTm9uZSwKLSAgICAnc3VibW9kZS1uYW1lJyA6ICdjb25maWctdmNlbnRlcicsCi0gICAgIyAncGFyZW50LWlkJyAgICAgICAgICAgOiAndmNlbnRlci1uYW1lJywKLSAgICAnYXJncycgICAgIDogKAotICAgICAgICB7ICdmaWVsZCcgICAgICAgIDogJ3ZjZW50ZXItbmFtZScsCi0gICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAnc3ludGF4LWhlbHAnICA6ICdFbnRlciBhIHZjZW50ZXIgbmFtZScsCi0gICAgICAgIH0KLSAgICApLAotICAgICdhY3Rpb24nOiAncHVzaC1tb2RlLXN0YWNrJywKLSAgICAnbm8tYWN0aW9uJzogKAotICAgICAgICB7Ci0gICAgICAgICAgICdwcm9jJyAgIDogJ2NvbmZpcm0nLAotICAgICAgICAgICAncHJvbXB0JyA6ICJEZWxldGluZyBhIHZjZW50ZXIgd2lsbCBjYXVzZSB2Y2VudGVyIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIiBEVlMncyB0byBhbHNvIGJlIGRlbGV0ZWQsIGNvbnRpbnVlICh5IG9yIHllcyk/ICIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnIDogJ2RlbGV0ZS1vYmplY3RzJywKLSAgICAgICAgfQotICAgICkKLX0KLQotCi1TSE9XX1ZDRU5URVJfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ2ZlYXR1cmUnICAgICAgOiAnZXhwZXJpbWVudGFsJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IHZjZW50ZXIgY29uZmlndXJhdGlvbnMnLAotICAgICdkb2MnICAgICAgICAgIDogJ3ZjZW50ZXJ8c2hvdycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndmNlbnRlcnxzaG93LWV4YW1wbGUnLAotICAgICdvYmotdHlwZScgICAgIDogJ3ZjZW50ZXInLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICAndmNlbnRlcicsCi0gICAgKQotfQotCi0KLVNIT1dfVkNFTlRFUl9OQU1FX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdmZWF0dXJlJyAgICAgIDogJ2V4cGVyaW1lbnRhbCcsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2hvdyB2Y2VudGVyIGRlc2NyaXB0aW9uIGJ5IG5hbWUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3ZjZW50ZXJ8c2hvdy1uYW1lJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd2Y2VudGVyfHNob3ctbmFtZS1leGFtcGxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2Y2VudGVyJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnYXJncycgOiAoCi0gICAgICAgICd2Y2VudGVyJywKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgIDogJ3ZjZW50ZXItbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAndmNlbnRlci1uYW1lJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICAgIDogJ2FsbCcsCi0gICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICkKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnZHZzJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnZHZzJywKLSAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ2R2cycsCi0gICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1NlbGVjdCBkdnMgZm9yIGRpc3BsYXknLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAndmNlbnRlcnxzaG93LW5hbWUtZHZzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2R2cy1wb3J0LWdyb3VwJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnZHZzLXBvcnQtZ3JvdXAnLAotICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAnZHZzLXBvcnQtZ3JvdXAnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTZWxlY3QgZHZzLXBvcnQtZ3JvdXAgZm9yIGRpc3BsYXknLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAndmNlbnRlcnxzaG93LW5hbWUtZHZzLXBvcnQtZ3JvdXAnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnc3RhdHVzJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnc3RhdHVzJywKLSAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogJ2Rpc3BsYXktcmVzdCcsCi0gICAgICAgICAgICAgICAgICAgICd1cmwnICAgICAgICA6ICd2Y2VudGVyL3N0YXR1cy8lKHZjZW50ZXItbmFtZSlzLycsCi0gICAgICAgICAgICAgICAgICAgICdmb3JtYXQnICAgICA6ICd2Y2VudGVyLXN0YXR1cycsCi0gICAgICAgICAgICAgICAgICAgICdkZXRhaWwnICAgICA6ICdkZXRhaWxzJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0Rpc3BsYXkgdmNlbnRlciBhY3RpdmUgc3RhdGUnLAotICAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAndmNlbnRlcnxzaG93LXZjZW50ZXItc3RhdHVzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdkZXRhaWwnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgIDogJ2RldGFpbHMnLAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICkKLSAgICAgICAgfQotICAgICkKLX0KLQotCi1TSE9XX1ZDRU5URVJfTkFNRV9TVEFUVVNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6ICdsb2dpbicsCi0gICAgJ2ZlYXR1cmUnICAgICAgOiAnZXhwZXJpbWVudGFsJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IHZjZW50ZXIgb3BlcmF0aW9uYWwgc3RhdHVzIGJ5IG5hbWUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3ZjZW50ZXJ8c2hvdy12Y2VudGVyLWR2cy1zdGF0dXMnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3ZjZW50ZXJ8c2hvdy12Y2VudGVyLWR2cy1zdGF0dXMtZXhhbXBsZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAndmNlbnRlcicsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS1yZXN0JywKLSAgICAnYXJncycgOiAoCi0gICAgICAgICd2Y2VudGVyJywKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAndmNlbnRlci1uYW1lJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2R2cy1uYW1lJywKLSAgICAgICAgICAgICd0YWcnICAgICAgICA6ICdkdnMnLAotICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ2R2cycsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdzdGF0dXMnLAotICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgOiAnc3RhdHVzJywKLSAgICAgICAgICAgICd1cmwnICAgICAgOiAndmNlbnRlci9zdGF0dXMvJSh2Y2VudGVyLW5hbWUpcy8lKGR2cy1uYW1lKXMnLAotICAgICAgICAgICAgJ2Zvcm1hdCcgICA6ICd2Y2VudGVyLWR2cy1zdGF0dXMnLAotICAgICAgICAgICAgJ2RldGFpbCcgICA6ICdkZXRhaWxzJywKLSAgICAgICAgICAgICdhY3Rpb24nICAgOiAnZGlzcGxheS1yZXN0JywKLQotICAgICAgICB9LAotICAgICkKLX0KLQotVkNFTlRFUl9JUF9BRERSRVNTX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnaXAnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy12Y2VudGVyJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdBc3NvY2lhdGUgaXAgYWRkcmVzcyBmb3IgdmNlbnRlciBjb25uZWN0aW9uJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2Y2VudGVyfGlwJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd2Y2VudGVyfGlwLWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBUcnVlLAotICAgICdmaWVsZHMnICAgICAgIDogWyAnaXAnIF0sICMgZm9yIGZpZWxkIHJlc2V0Ci0gICAgJ2FyZ3MnICAgICAgICAgOiB7Ci0gICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAnYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdpcCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2lwLWFkZHJlc3Mtbm90LW1hc2snLAotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICdzeW50YXgtaGVscCcgICAgIDogJ0VudGVyIGFuIElQIEFkZHJlc3MnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICApCi0gICAgfQotfQotCi1WQ0VOVEVSX1BPUlRfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdwb3J0JywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdBc3NvY2lhdGUgaHR0cCBwb3J0IGZvciB2Y2VudGVyIGNvbm5lY3Rpb24nLAotICAgICdkb2MnICAgICAgICAgIDogJ3ZjZW50ZXJ8cG9ydCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndmNlbnRlcnxwb3J0LWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXZjZW50ZXInLAotICAgICduby1zdXBwb3J0ZWQnIDogRmFsc2UsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdwb3J0JywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgICAgOiAnRW50ZXIgYW4gaHR0cCBwb3J0IG51bWJlcicsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgIH0KLSAgICApCi19Ci0KLVZDRU5URVJfRFZTX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnZHZzJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctdmNlbnRlcionLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1zdWJtb2RlJywKLSAgICAncGFyZW50LWZpZWxkJyA6ICd2Y2VudGVyLW5hbWUnLAotICAgICdvYmotdHlwZScgICAgIDogJ2R2cycsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBUcnVlLAotICAgICdzdWJtb2RlLW5hbWUnIDogJ2NvbmZpZy12Y2VudGVyLWR2cycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnRW50ZXIgdmNlbnRlci1kdnMgc3VibW9kZSwgZGVzY3JpYmUgcG9ydCBncm91cHMnLAotICAgICdkb2MnICAgICAgICAgIDogJ3ZjZW50ZXJ8ZHZzJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd2Y2VudGVyfGR2cy1leGFtcGxlJywKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgOiAnZGF0YWNlbnRlcicsCi0gICAgICAgICAgICAndGFnJyAgICAgICAgIDogJ2RhdGFjZW50ZXItbmFtZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnIDogJ0VudGVyIHRoZSB2Y2VudGVyIGRhdGFjZW50ZXIgbmFtZScsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgOiAnZHZzLW5hbWUnLAotICAgICAgICAgICAgJ3RhZycgICAgICAgICA6ICdkdnMtbmFtZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnIDogJ0VudGVyIHRoZSB2Y2VudGVyIGR2cyBuYW1lJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICA6ICdzd2l0Y2gtY2xhc3MnLAotICAgICAgICAgICAgJ3RhZycgICAgICAgICA6ICdzd2l0Y2gtY2xhc3MnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICA6IFRydWUsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJzogVHJ1ZSwKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgOiAnRW50ZXIgdm13YXJlJywKLSAgICAgICAgfSwKLSAgICApLAotfQotCi1TSE9XX0RWU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdmZWF0dXJlJyAgICAgIDogJ2V4cGVyaW1lbnRhbCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgdmNlbnRlciBkdnMgZGV0YWlscycsCi0gICAgJ2RvYycgICAgICAgICAgOiAndmNlbnRlcnxzaG93LWR2cycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndmNlbnRlcnxzaG93LWR2cy1leGFtcGxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdkdnMnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnZHZzJywKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICd2Y2VudGVyJywKLSAgICAgICAgICAgICd0YWcnICAgICAgOiAndmNlbnRlcicsCi0gICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdkYXRhY2VudGVyJywKLSAgICAgICAgICAgICd0YWcnICAgICAgOiAnZGF0YWNlbnRlcicsCi0gICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdkdnMnLAotICAgICAgICAgICAgJ3RhZycgICAgICA6ICdkdnMnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAndHlwZScgICAgIDogJ3N0cmluZycsCi0gICAgICAgIH0sCi0gICAgKQotfQotCi1WQ0VOVEVSX1BPUlRHUk9VUF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3BvcnRncm91cCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXZjZW50ZXItZHZzJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdEZXNjcmliZSBkdnMgcG9ydGdyb3VwJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2Y2VudGVyfGR2cy1wb3J0Z3JvdXAnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3ZjZW50ZXJ8ZHZzLXBvcnRncm91cC1leGFtcGxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWctb2JqZWN0JywKLSAgICAncGFyZW50LWZpZWxkJyA6ICdkdnMtbmFtZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAnZHZzLXBvcnQtZ3JvdXAnLAotICAgICduby1zdXBwb3J0ZWQnIDogVHJ1ZSwKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ3BvcnRncm91cC1uYW1lJywKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgICAgIDogJ0VudGVyIHRoZSB2Y2VudGVyIHBvcnRncm91cCBuYW1lIGZvciB0aGUgYXNzb2NpYXRlZCBkdnMnLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlCi0gICAgICAgIH0KLSAgICApCi19Ci0KLQotU0hPV19EVlNfUE9SVF9HUk9VUF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdmZWF0dXJlJyAgICAgIDogJ2V4cGVyaW1lbnRhbCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgdmNlbnRlciBkdnMgcG9ydC1ncm91cCBkZXRhaWxzJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2Y2VudGVyfHNob3ctZHZzLXBvcnQtZ3JvdXAnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3ZjZW50ZXJ8c2hvdy1kdnMtcG9ydC1ncm91cC1leGFtcGxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdkdnMtcG9ydC1ncm91cCcsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ25vLXN1cHBvcnRlZCcgOiBUcnVlLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnZHZzLXBvcnQtZ3JvdXAnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgIDogJ3ZjZW50ZXInLAotICAgICAgICAgICAgJ3RhZycgICAgICA6ICd2Y2VudGVyJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdzdHJpbmcnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgIDogJ2RhdGFjZW50ZXInLAotICAgICAgICAgICAgJ3RhZycgICAgICA6ICdkYXRhY2VudGVyJywKLSAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdzdHJpbmcnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgIDogJ2R2cycsCi0gICAgICAgICAgICAndGFnJyAgICAgIDogJ2R2cycsCi0gICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICd0eXBlJyAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdwb3J0Z3JvdXAnLAotICAgICAgICAgICAgJ3RhZycgICAgICA6ICdwb3J0Z3JvdXAnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAndHlwZScgICAgIDogJ3N0cmluZycsCi0gICAgICAgIH0sCi0gICAgKQotfQotCi1WQ0VOVEVSX1VTRVJOQU1FX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAndXNlcm5hbWUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy12Y2VudGVyJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdDb25maWd1cmUgdmNlbnRlciB1c2VybmFtZSBmb3IgbG9naW4nLAotICAgICdkb2MnICAgICAgICAgIDogJ3ZjZW50ZXJ8dXNlcm5hbWUnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3ZjZW50ZXJ8dXNlcm5hbWUtZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnZmllbGRzJyAgICAgICA6IFsgJ3VzZXJuYW1lJyBdLCAjIGZvciBmaWVsZCByZXNldAotICAgICduby1zdXBwb3J0ZWQnIDogVHJ1ZSwKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ3VzZXJuYW1lJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnICAgICA6ICdFbnRlciB0aGUgdmNlbnRlciBsb2dpbiB1c2VybmFtZScsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgIH0KLSAgICApCi19Ci0KLVZDRU5URVJfUEFTU1dPUkRfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdwYXNzd29yZCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXZjZW50ZXInLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnQ29uZmlndXJlIHZjZW50ZXIgcGFzc3dvcmQgZm9yIGxvZ2luJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2Y2VudGVyfHBhc3N3b3JkJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd2Y2VudGVyfHBhc3N3b3JkLWV4YW1wbGUnLAotICAgICdmaWVsZHMnICAgICAgIDogWyAncGFzc3dvcmQnIF0sICMgZm9yIGZpZWxkIHJlc2V0Ci0gICAgJ25vLXN1cHBvcnRlZCcgOiBUcnVlLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAncGFzc3dvcmQnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgICAgIDogJ0VudGVyIHRoZSB2Y2VudGVyIGxvZ2luIHBhc3N3b3JkJywKLSAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogVHJ1ZSwKLSAgICAgICAgfQotICAgICkKLX0KLQotVkNFTlRFUl9DT05ORUNUX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnY29ubmVjdCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXZjZW50ZXInLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0VuYWJsZSB2Y2VudGVyIGNvbm5lY3QnLAotICAgICdkb2MnICAgICAgICAgIDogJ3ZjZW50ZXJ8Y29ubmVjdCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndmNlbnRlcnxjb25uZWN0LWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ3N5bnRheC1oZWxwJyAgOiAnRW50ZXIgdG8gYXR0ZW1wdCBhIHZjZW50ZXIgY29ubmVjdCcsCi0gICAgIyAnZGF0YScgOiB7J2Nvbm5lY3QnIDogVHJ1ZSB9LAotICAgICdhcmdzJyA6ICgpLAotICAgICdhY3Rpb24nOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyA6ICd3cml0ZS1maWVsZHMnLAotICAgICAgICAgICAgJ2RhdGEnIDogeydjb25uZWN0JyA6IFRydWV9Ci0gICAgICAgIH0sCi0gICAgKSwKLSAgICAnbm8tYWN0aW9uJzogKAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgOiAncmVzZXQtZmllbGRzJywKLSAgICAgICAgICAgICdmaWVsZHMnIDogWyAnY29ubmVjdCcgXQotICAgICAgICB9Ci0gICAgKQotfQotCi0KLSMKLSMgRk9STUFUUwotIwotCi1pbXBvcnQgZm10Y252Ci0KLQotVkNFTlRFUl9GT1JNQVQgPSB7Ci0gICAgJ3ZjZW50ZXInIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lkeCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd2Y2VudGVyLW5hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnaXAnLCAncG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd1c2VybmFtZScsICdwYXNzd29yZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdjb25uZWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ2lwJyAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncG9ydCcgICAgICAgICAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd1c2VybmFtZScgICAgICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3Bhc3N3b3JkJyAgICAgICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnY29ubmVjdCcgICAgICAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotCi1WQ0VOVEVSX1NUQVRVU19GT1JNQVQgPSB7Ci0gICAgJ3ZjZW50ZXItc3RhdHVzJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAgICAgJ2RlZmF1bHQnIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2Y2VudGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU3RhdHVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRHZzTGlzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAnZGV0YWlscycgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZjZW50ZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTdGF0dXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ2VudGVyRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEdnNMaXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9LAotCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ3ZjZW50ZXInICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1ZDZW50ZXInCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnU3RhdHVzJyAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnU3RhdHVzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ1ZDZW50ZXJFcnJvcicgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1ZDZW50ZXIgZXJyb3InCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnRHZzTGlzdCcgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRHZzZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgIH0sCi19Ci0KLQotVkNFTlRFUl9EVlNfU1RBVFVTX0ZPUk1BVCA9IHsKLSAgICAndmNlbnRlci1kdnMtc3RhdHVzJyAgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnICA6ICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSWR4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmNlbnRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGFDZW50ZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkdnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3J0Z3JvdXBzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0KLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAndmNlbnRlcicgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVkNlbnRlcicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdkdnMnICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdEdnMgTmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGF0YUNlbnRlcicgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnRGF0YSBDZW50ZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BvcnRncm91cHMnICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1BvcnQgR3JvdXBzIEFjdGl2ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgIH0KLSAgICB9LAotfQotCi1WQ0VOVEVSX0RWU19GT1JNQVQgPSB7Ci0gICAgJ2R2cycgOiB7Ci0gICAgICAgICdzaG93LXRoaXMnICAgICAgIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbICdkdnMnLCAnZGVmYXVsdCcgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAnZHZzLXBvcnQtZ3JvdXAnLCAnc2NvcGVkJyBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLQotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ3ZjZW50ZXItbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhY2VudGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2R2cy1uYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaC1jbGFzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICd2Y2VudGVyLW5hbWUnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RhdGFjZW50ZXInICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZHZzLW5hbWUnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzd2l0Y2gtY2xhc3MnIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi0KLVZDRU5URVJfRFZTX1BPUlRfR1JPVVBfRk9STUFUID0gewotICAgICdkdnMtcG9ydC1ncm91cCcgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgICAgICdkZWZhdWx0JyA6IFsgJ3ZjZW50ZXItbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YWNlbnRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHZzLW5hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcnRncm91cC1uYW1lJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgJ3Njb3BlZCcgIDogWyAncG9ydGdyb3VwLW5hbWUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ2R2cy1uYW1lJyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BvcnRncm91cC1uYW1lJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLQotICAgICAgICB9LAotfQotIiIiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdmlydHVhbHJvdXRlci5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3ZpcnR1YWxyb3V0ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE5NzIyZGIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdmlydHVhbHJvdXRlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMTcgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMKLSMKLQotaW1wb3J0IGNvbW1hbmQKLWltcG9ydCBmbXRjbnYKLWltcG9ydCBlcnJvcgotCi1kZWYgdmlydHVhbHJvdXRlcl9vcmlnaW5fZXh0ZXJuYWwoZGF0YSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIG9yaWdpbi1uYW1lIHdoZW4gdGhlIHZpcnR1YWxyb3V0ZXIgd2Fzbid0IGNyZWF0ZWQgYnkgdGhlIGNsaSwKLSAgICByZXR1cm4gTm9uZSBvdGhlcndpc2UuCi0gICAgIiIiCi0gICAgcGsgPSBjb21tYW5kLm1pLnBrKCd2aXJ0dWFscm91dGVyJykKLSAgICBpZiBub3QgcGsgaW4gZGF0YToKLSAgICAgICAgcmV0dXJuIE5vbmU7Ci0KLSAgICB2aXJ0dWFscm91dGVyID0gY29tbWFuZC5zZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZSgndmlydHVhbHJvdXRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbcGtdKQotICAgIGlmIGxlbih2aXJ0dWFscm91dGVyKSA9PSAwOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgbG9jYWwgPSBbJ2NsaScsICdyZXN0J10KLSAgICBpZiAnb3JpZ2luJyBpbiB2aXJ0dWFscm91dGVyWzBdIGFuZCBub3QgdmlydHVhbHJvdXRlclswXVsnb3JpZ2luJ10gaW4gbG9jYWw6Ci0gICAgICAgIHJldHVybiB2aXJ0dWFscm91dGVyWzBdWydvcmlnaW4nXQotICAgIHJldHVybiBOb25lCi0KLWRlZiB2aXJ0dWFscm91dGVyX3dhcm5fZXh0ZXJuYWxfY29uZmlnKGRhdGEpOgotICAgICIiIgotICAgIEZyb20gdGhlIG5hbWVkIHZpcnR1YWxyb3V0ZXIsIGxvb2sgdXAgdGhlIGVudHJ5LCBpZiBpdCBleGlzdHMgaW4gdGhlCi0gICAgZGF0YWJhc2UsIHZhbGlkYXRlIHRoZSAnb3JpZ2luJyBpcyBlaXRoZXIgbnVsbCwgb3IgJ2NsaScsCi0gICAgb3RoZXJ3aXNlIHByb3ZpZGUgYSB3YXJuaW5nIGFib3V0IHRoaXMgcGFydGljdWxhciB2aXJ0dWFscm91dGVyCi0gICAgKGFsb25nIHdpdGggdGhlIG9yaWdpbmF0b3IgbmFtZSkKLSAgICAiIiIKLSAgICBleHRlcm5hbF9vcmlnaW4gPSB2aXJ0dWFscm91dGVyX29yaWdpbl9leHRlcm5hbChkYXRhKQotICAgIGlmIGV4dGVybmFsX29yaWdpbjoKLSAgICAgICAgY29tbWFuZC5zZG5zaC53YXJuaW5nKCdyb3V0ZXIgJXMgbWF5IG5vdCBiZSBpbnRlbmRlZCBmb3IgY2xpIHVwZGF0ZSwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29yaWdpbi9jcmVhdG9yICIlcyIgJyAlIChkYXRhWydpZCddLCBleHRlcm5hbF9vcmlnaW4pKQotZGVmIHZlcmlmeV9yb3V0ZXJfaW50Zl9pcChkYXRhKToKLSAgICBpZiBkYXRhWydpcC1hZGRyZXNzJ109PScwLjAuMC4wJzoKLSAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoIjAuMC4wLjAgaXMgbm90IGEgdmFsaWQgcm91dGVyIGludGVyZmFjZSBpcCBhZGRyZXNzIikKLSAgICBpZiBkYXRhWydzdWJuZXQtbWFzayddPT0nMjU1LjI1NS4yNTUuMjU1JzoKLSAgICAgICAgcmFpc2UgZXJyb3IuQXJndW1lbnRWYWxpZGF0aW9uRXJyb3IoIjAuMC4wLjAgaXMgbm90IGEgdmFsaWQgcm91dGVyIGludGVyZmFjZSBpcCBzdWJuZXQgbWFzayIpCi0KLWRlZiB2ZXJpZnlfcm91dGVyX2d3X2lwKGRhdGEpOgotICAgIGlmIGRhdGFbJ2lwLWFkZHJlc3MnXT09JzAuMC4wLjAnOgotICAgICAgICByYWlzZSBlcnJvci5Bcmd1bWVudFZhbGlkYXRpb25FcnJvcigiMC4wLjAuMCBpcyBub3QgYSB2YWxpZCByb3V0ZXIgaW50ZXJmYWNlIGlwIGFkZHJlc3MiKQotCi1kZWYgdmlydHVhbHJvdXRlcl9wcmVwcm9jZXNzKGRhdGEpOgotICAgIGN1cnJlbnRfbW9kZT1jb21tYW5kLnNkbnNoLmN1cnJlbnRfbW9kZSgpCi0gICAgaWYgY3VycmVudF9tb2RlLnN0YXJ0c3dpdGgoJ2NvbmZpZy10ZW5hbnQnKToKLSAgICAgICAgZm9yIHggaW4gY29tbWFuZC5zZG5zaC5tb2RlX3N0YWNrOgotICAgICAgICAgICAgaWYgeFsnbW9kZV9uYW1lJ10gPT0gJ2NvbmZpZy10ZW5hbnQnOgotICAgICAgICAgICAgICAgIHRlbmFudCA9IHhbJ29iaiddCi0gICAgaWYgY3VycmVudF9tb2RlLnN0YXJ0c3dpdGgoJ2NvbmZpZy10ZW5hbnQtcm91dGVyJyk6Ci0gICAgICAgIGZvciB4IGluIGNvbW1hbmQuc2Ruc2gubW9kZV9zdGFjazoKLSAgICAgICAgICAgIGlmIHhbJ21vZGVfbmFtZSddID09ICdjb25maWctdGVuYW50LXJvdXRlcic6Ci0gICAgICAgICAgICAgICAgZGF0YVsndmlydHVhbC1yb3V0ZXInXSA9IHhbJ29iaiddCi0gICAgaWYgJ291dGdvaW5nLWludGYnIGluIGRhdGE6Ci0gICAgICAgIGN1cnJlbnRfb2JqPWNvbW1hbmQuc2Ruc2guZ2V0X2N1cnJlbnRfbW9kZV9vYmooKQotICAgICAgICBpZiBjdXJyZW50X21vZGUuc3RhcnRzd2l0aCgnY29uZmlnLXRlbmFudC1yb3V0ZXItaW50ZicpIG9yIGN1cnJlbnRfbW9kZS5zdGFydHN3aXRoKCdjb25maWctdGVuYW50LXJvdXRlci1ndycpOgotICAgICAgICAgICAgZm9yIHggaW4gY29tbWFuZC5zZG5zaC5tb2RlX3N0YWNrOgotICAgICAgICAgICAgICAgIGlmIHhbJ21vZGVfbmFtZSddID09ICdjb25maWctdGVuYW50LXJvdXRlcic6Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfb2JqID0geFsnb2JqJ10KLSAgICAgICAgZGF0YVsnb3V0Z29pbmctaW50ZiddPWN1cnJlbnRfb2JqKyd8JytkYXRhWydvdXRnb2luZy1pbnRmJ10KLSAgICBpZiAnZ2F0ZXdheS1wb29sJyBpbiBkYXRhOgotICAgICAgICBjdXJyZW50X29iaj1jb21tYW5kLnNkbnNoLmdldF9jdXJyZW50X21vZGVfb2JqKCkKLSAgICAgICAgaWYgY3VycmVudF9tb2RlLnN0YXJ0c3dpdGgoJ2NvbmZpZy10ZW5hbnQtcm91dGVyLWludGYnKSBvciBjdXJyZW50X21vZGUuc3RhcnRzd2l0aCgnY29uZmlnLXRlbmFudC1yb3V0ZXItZ3cnKToKLSAgICAgICAgICAgIGZvciB4IGluIGNvbW1hbmQuc2Ruc2gubW9kZV9zdGFjazoKLSAgICAgICAgICAgICAgICBpZiB4Wydtb2RlX25hbWUnXSA9PSAnY29uZmlnLXRlbmFudC1yb3V0ZXInOgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X29iaiA9IHhbJ29iaiddCi0gICAgICAgIGRhdGFbJ2dhdGV3YXktcG9vbCddPWN1cnJlbnRfb2JqKyd8JytkYXRhWydnYXRld2F5LXBvb2wnXQotICAgIGlmICdzcmMtdm5zJyBpbiBkYXRhOgotICAgICAgICBpZiBub3Qnc3JjLXRlbmFudCcgaW4gZGF0YToKLSAgICAgICAgICAgIGRhdGFbJ3NyYy10ZW5hbnQnXT10ZW5hbnQKLSAgICAgICAgZGF0YVsnc3JjLXZucyddPSBkYXRhWydzcmMtdGVuYW50J10gKyAnfCcgKyBkYXRhIFsnc3JjLXZucyddCi0gICAgaWYgJ2RzdC12bnMnIGluIGRhdGE6Ci0gICAgICAgIGlmIG5vdCAnZHN0LXRlbmFudCcgaW4gZGF0YToKLSAgICAgICAgICAgIGRhdGFbJ2RzdC10ZW5hbnQnXT10ZW5hbnQKLSAgICAgICAgZGF0YVsnZHN0LXZucyddPSBkYXRhWydkc3QtdGVuYW50J10gKyAnfCcgKyBkYXRhIFsnZHN0LXZucyddCi0gICAgaWYgJ3Zucy1jb25uZWN0ZWQnIGluIGRhdGE6Ci0gICAgICAgIGRhdGFbJ3Zucy1jb25uZWN0ZWQnXT10ZW5hbnQrJ3wnK2RhdGFbJ3Zucy1jb25uZWN0ZWQnXQotICAgIGlmICdyb3V0ZXItY29ubmVjdGVkLXRlbmFudCcgaW4gZGF0YToKLSAgICAgICAgaWYgdGVuYW50ICE9J3N5c3RlbScgYW5kIGRhdGFbJ3JvdXRlci1jb25uZWN0ZWQtdGVuYW50J10hPSdzeXN0ZW0nOgotICAgICAgICAgICAgY29tbWFuZC5zZG5zaC53YXJuaW5nKCdUZW5hbnQgcm91dGVyIGludGVyZmFjZSBjYW4gb25seSBjb25uZWN0ZWQgdG8gc3lzdGVtIHRlbmFudCByb3V0ZXJcbicpCi0gICAgICAgIGRhdGFbJ3JvdXRlci1jb25uZWN0ZWQnXT0gZGF0YVsncm91dGVyLWNvbm5lY3RlZC10ZW5hbnQnXSArJ3wnKyBkYXRhWydyb3V0ZXItY29ubmVjdGVkJ10KLSAgICAgICAgZGVsIGRhdGFbJ3JvdXRlci1jb25uZWN0ZWQtdGVuYW50J10KLQotY29tbWFuZC5hZGRfYWN0aW9uKCd2aXJ0dWFscm91dGVyLXdhcm4tZXh0ZXJuYWwtY29uZmlnJywgdmlydHVhbHJvdXRlcl93YXJuX2V4dGVybmFsX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J2RhdGEnICAgICAgOiAnJGRhdGEnLH19KQotY29tbWFuZC5hZGRfYWN0aW9uKCd2aXJ0dWFscm91dGVyLXByZXByb2Nlc3MnLCB2aXJ0dWFscm91dGVyX3ByZXByb2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyAgICAgIDogJyRkYXRhJyx9fSkKLWNvbW1hbmQuYWRkX2FjdGlvbigndmVyaWZ5LXJvdXRlci1pbnRmLWlwJywgdmVyaWZ5X3JvdXRlcl9pbnRmX2lwLAotICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnZGF0YScgICAgICA6ICckZGF0YScsfX0pCi1jb21tYW5kLmFkZF9hY3Rpb24oJ3ZlcmlmeS1yb3V0ZXItZ3ctaXAnLCB2ZXJpZnlfcm91dGVyX2d3X2lwLAotICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnZGF0YScgICAgICA6ICckZGF0YScsfX0pCi0KLQotZGVmIGNvbXBsZXRlX3ZpcnR1YWxyb3V0ZXJfcHJlcHJvY2VzcyhkYXRhKToKLSAgICBvYmpfaWQgPSBjb21tYW5kLnNkbnNoLmdldF9jdXJyZW50X21vZGVfb2JqKCkKLSAgICBpZiAnfCcgaW4gb2JqX2lkOgotICAgICAgICBwYXJ0cz1vYmpfaWQuc3BsaXQoJ3wnKQotICAgICAgICBkYXRhWyd0ZW5hbnQnXT1wYXJ0c1swXQotICAgICAgICBkYXRhWyd2aXJ0dWFsLXJvdXRlciddPXBhcnRzWzBdKyd8JyArIHBhcnRzWzFdCi0gICAgZWxzZToKLSAgICAgICAgZGF0YVsndGVuYW50J109b2JqX2lkCi0gICAgICAgIGlmICd2cm5hbWUnIGluIGRhdGE6Ci0gICAgICAgICAgICBkYXRhWyd2aXJ0dWFsLXJvdXRlciddPW9ial9pZCsnfCcrZGF0YVsndnJuYW1lJ10KLSAgICBpZiAncm91dGVyLWNvbm5lY3RlZC10ZW5hbnQnIGluIGRhdGE6Ci0gICAgICAgIGRhdGFbJ3RlbmFudCddID0gZGF0YVsncm91dGVyLWNvbm5lY3RlZC10ZW5hbnQnXQotICAgIGlmICdzcmMtdGVuYW50JyBpbiBkYXRhOgotICAgICAgICBkYXRhWyd0ZW5hbnQnXT1kYXRhWydzcmMtdGVuYW50J10KLSAgICBpZiAnZHN0LXRlbmFudCcgaW4gZGF0YToKLSAgICAgICAgZGF0YVsndGVuYW50J109ZGF0YVsnZHN0LXRlbmFudCddCi0KLWRlZiBjb21wbGV0ZV92aXJ0dWFscm91dGVyX3Bvc3Rwcm9jZXNzKGRhdGEsY29tcGxldGlvbnMpOgotICAgIG9ial9pZCA9IGNvbW1hbmQuc2Ruc2guZ2V0X2N1cnJlbnRfbW9kZV9vYmooKQotICAgIHBhcnRzPW9ial9pZC5zcGxpdCgnfCcpCi0gICAgdGVuYW50PXBhcnRzWzBdCi0gICAgaWYgdGVuYW50ICE9J3N5c3RlbSc6ICNub24tc3lzdGVtIHZpcnR1YWwgcm91dGVyIGNhbiBvbmx5IGNvbm5lY3RlZCB0byBzeXN0ZW0gdmlydHVhbCByb3V0ZXIKLSAgICAgICAgY29tcGxldGlvbnMuY2xlYXIoKQotICAgICAgICBjb21wbGV0aW9uc1snc3lzdGVtICddPSdUZW5hbnQgU2VsZWN0aW9uJwotICAgIGVsc2U6ICMgc3lzdGVtIHZpcnR1YWwgcm91dGVyIGNhbid0IGNvbm5lY3QgdG8gaXRzZWxmCi0gICAgICAgIGlmICdzeXN0ZW0gJyBpbiBjb21wbGV0aW9uczoKLSAgICAgICAgICAgIGRlbCBjb21wbGV0aW9uc1snc3lzdGVtICddCi0KLWNvbW1hbmQuYWRkX2NvbXBsZXRpb24oJ2NvbXBsZXRlLXZpcnR1YWxyb3V0ZXItcG9zdHByb2Nlc3MnLCBjb21wbGV0ZV92aXJ0dWFscm91dGVyX3Bvc3Rwcm9jZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J2RhdGEnOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb25zJyAgOiAnJGNvbXBsZXRpb25zJyx9fSkKLWNvbW1hbmQuYWRkX2NvbXBsZXRpb24oJ2NvbXBsZXRlLXZpcnR1YWxyb3V0ZXItcHJlcHJvY2VzcycsIGNvbXBsZXRlX3ZpcnR1YWxyb3V0ZXJfcHJlcHJvY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJzogJyRkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KQotCi1kZWYgdmlydHVhbHJvdXRlcl9jb25maXJtX2V4dGVybmFsX2RlbGV0ZShkYXRhKToKLSAgICAiIiIKLSAgICBGcm9tIHRoZSBuYW1lZCB2aXJ0dWFscm91dGVyLCBsb29rIHVwIHRoZSBlbnRyeSwgaWYgaXQgZXhpc3RzIGluIHRoZQotICAgIGRhdGFiYXNlLCB2YWxpZGF0ZSB0aGUgJ29yaWdpbicgaXMgZWl0aGVyIG51bGwsIG9yICdjbGknLAotICAgIG90aGVyd2lzZSBwcm92aWRlIGEgd2FybmluZyBhYm91dCB0aGlzIHBhcnRpY3VsYXIgdmlydHVhbHJvdXRlcgotICAgIChhbG9uZyB3aXRoIHRoZSBvcmlnaW5hdG9yIG5hbWUpCi0gICAgIiIiCi0gICAgZXh0ZXJuYWxfb3JpZ2luID0gdmlydHVhbHJvdXRlcl9vcmlnaW5fZXh0ZXJuYWwoZGF0YSkKLSAgICBpZiBleHRlcm5hbF9vcmlnaW46Ci0gICAgICAgIGNvbmZpcm0gPSBjb21tYW5kLmFjdGlvbl9yZWdpc3RyeVsnY29uZmlybSddWzBdICMgWFhYIGFjY2Vzc29yPwotICAgICAgICBjb25maXJtKCd2aXJ0dWFsIHJvdXRlciAlcyBtYXkgbm90IGJlIGludGVuZGVkIGZvciBjbGkgZGVsZXRlLCAnCi0gICAgICAgICAgICAgICAgJ29yaWdpbi9jcmVhdG9yICIlcyJcbkVudGVyIHkgb3IgeWVzIHRvIGNvbnRpbnVlIGRlbGV0ZTogJwotICAgICAgICAgICAgICAgICUgKGRhdGFbJ2lkJ10sIGV4dGVybmFsX29yaWdpbikpCi0KLWNvbW1hbmQuYWRkX2FjdGlvbigndmlydHVhbHJvdXRlci1jb25maXJtLWV4dGVybmFsLWRlbGV0ZScsIHZpcnR1YWxyb3V0ZXJfY29uZmlybV9leHRlcm5hbF9kZWxldGUsCi0gICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyAgICAgIDogJyRkYXRhJyx9fSkKLQotIiIiCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgcm91dGVyIHN1Ym1vZGUgY29tbWFuZHMKLSMKLVZST1VURVJfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdyb3V0ZXInLAotICAgICdoZWxwJyAgICAgICAgIDogJ0VudGVyIHZpcnR1YWwgcm91dGVyIGRlZmluaXRpb24gc3VibW9kZScsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudConLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1zdWJtb2RlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2aXJ0dWFscm91dGVyJywKLSAgICAnc3VibW9kZS1uYW1lJyA6ICdjb25maWctdGVuYW50LXJvdXRlcicsCi0gICAgJ2ZlYXR1cmUnICAgICAgOiAndm5zJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdFbnRlciB2aXJ0dWFsIHJvdXRlciBkZWZpbml0aW9uIHN1Ym1vZGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x0ZW5hbnQtdnJvdXRlcicsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHRlbmFudC12cm91dGVyLWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAndnJuYW1lJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdzY29wZWQnICAgICAgIDogIFRydWUsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnICA6ICdFbnRlciBhIHJvdXRlciBuYW1lJywKLSAgICAgICAgICAgICdhY3Rpb24nICAgICAgIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3ZpcnR1YWxyb3V0ZXItd2Fybi1leHRlcm5hbC1jb25maWcnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgeyAgICdwcm9jJyA6ICd0ZW5hbnQtc2hvdy1wcmVwcm9jZXNzJwotICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3B1c2gtbW9kZS1zdGFjaycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICAnbm8tYWN0aW9uJyAgICA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICd2aXJ0dWFscm91dGVyLWNvbmZpcm0tZXh0ZXJuYWwtZGVsZXRlJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsgICAncHJvYycgOiAndGVuYW50LXNob3ctcHJlcHJvY2VzcycKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ2RlbGV0ZS1vYmplY3RzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKQotICAgICAgICB9Ci0gICAgKSwKLX0KLQotdmlydHVhbHJvdXRlcl9zaG93X2FjdGlvbiA9ICgKLSAgICB7ICAgJ3Byb2MnICAgICA6ICd0ZW5hbnQtc2hvdy1wcmVwcm9jZXNzJ30sCi0gICAgewotICAgICAgICAncHJvYycgICAgIDogJ3F1ZXJ5LXRhYmxlJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgJ2Zvcm1hdCcgICA6ICd2aXJ0dWFscm91dGVyJywKLSAgICB9LAotKQotCi1WSVJUVUFMUk9VVEVSX1NIT1dfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2aXJ0dWFscm91dGVyJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctdGVuYW50KicsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2FjdGlvbicgICAgICAgOiAgdmlydHVhbHJvdXRlcl9zaG93X2FjdGlvbiwKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IHNwZWNpZmljIHZpcnR1YWwgcm91dGVyLCBpZGVudGlmaWVkIGJ5IG5hbWUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xzaG93LXRlbmFudC1pZC1yb3V0ZXInLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xzaG93LXRlbmFudC1pZC1yb3V0ZXItZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICdyb3V0ZXInLAotICAgICAgICAgICAgICAgICAgICApCi19Ci0KLVZJUlRVQUxST1VURVJfU0hPV19JRF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdvYmotdHlwZScgICAgIDogJ3ZpcnR1YWxyb3V0ZXInLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQqJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnYWN0aW9uJyAgICAgICA6ICB2aXJ0dWFscm91dGVyX3Nob3dfYWN0aW9uLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgc3BlY2lmaWMgdmlydHVhbCByb3V0ZXIsIGlkZW50aWZpZWQgYnkgbmFtZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfHNob3ctdGVuYW50LXZyb3V0ZXItaWQnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xzaG93LXRlbmFudC12cm91dGVyLWlkLWV4YW1wbGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAncm91dGVyJywKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3ZybmFtZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdoZWxwLW5hbWUnICA6ICJ2aXJ0dWFscm91dGVyLWlkIiwKLSAgICAgICAgICAgICdzY29wZWQnICAgICA6IFRydWUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgIDogVHJ1ZSwKLSAgICAgICAgICAgICdjaG9pY2VzJyAgIDogKAotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICd0b2tlbicgICAgIDogJ2lwLWFkZHJlc3MtcG9vbCcsCi0gICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAnaW50ZXJmYWNlLWFkZHJlc3MtcG9vbCcsCi0gICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAndm5zfHNob3ctdGVuYW50LWlkLXJvdXRlci1pcHBvb2wnLAotICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAndGVuYW50LXNob3ctcHJlcHJvY2Vzcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAncXVlcnktdGFibGUnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXQnICAgOiAnaW50ZXJmYWNlLWFkZHJlc3MtcG9vbCd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgJ2ZpZWxkJyAgOiAncm91dGUnLAotICAgICAgICAgICAgICAgJ3R5cGUnICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAndmFsdWVzJyA6ICdyb3V0ZScsCi0gICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAndmlydHVhbHJvdXRlci1yb3V0aW5ncnVsZScsCi0gICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAndm5zfHNob3ctdGVuYW50LWlkLXJvdXRlci1yb3V0ZScsCi0gICAgICAgICAgICAgICAnYWN0aW9uJyA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ3F1ZXJ5LXRhYmxlJyx9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgICAgOiAnZGlzcGxheScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgICA6ICd2aXJ0dWFscm91dGVyLXJvdXRpbmdydWxlJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnaW50ZXJmYWNlcycsCi0gICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdpbnRlcmZhY2VzJywKLSAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnLAotICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICd2bnN8c2hvdy10ZW5hbnQtaWQtcm91dGVyLWludGVyZmFjZXMnLAotICAgICAgICAgICAgICAgICAgICdhY3Rpb24nIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdxdWVyeS10YWJsZSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0JyAgIDogJ3ZpcnR1YWxyb3V0ZXItaW50ZXJmYWNlJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgJ2FyZ3MnIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAndnJpbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiBbJ2NvbXBsZXRlLXZpcnR1YWxyb3V0ZXItcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtZnJvbS1hbm90aGVyJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICd2aXJ0dWFscm91dGVyLWludGVyZmFjZXx2cmluYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICA6ICd2aXJ0dWFsLXJvdXRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwbGljaXQnICAgOiBUcnVlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICd0ZW5hbnQtc2hvdy1wcmVwcm9jZXNzJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAncXVlcnktdGFibGUnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgICA6ICd2aXJ0dWFscm91dGVyLWludGVyZmFjZSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydvcHRpb25hbCcgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rva2VuJyAgICAgOiAnaXAtYWRkcmVzcy1wb29sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAnaW50ZXJmYWNlLWFkZHJlc3MtcG9vbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdxdWVyeS10YWJsZSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0JyAgIDogJ2ludGVyZmFjZS1hZGRyZXNzLXBvb2wnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICAKLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgKSwgICAgICAgCi0gICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2dhdGV3YXktcG9vbHMnLAotICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnZ2F0ZXdheS1wb29scycsCi0gICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ3ZpcnR1YWxyb3V0ZXItZ3dwb29sJywKLSAgICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgOiAndm5zfHNob3ctdGVuYW50LWlkLXJvdXRlci1nd3Bvb2xzJywKLSAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICd0ZW5hbnQtc2hvdy1wcmVwcm9jZXNzJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICdwcm9jJyAgICAgOiAncXVlcnktdGFibGUnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdkaXNwbGF5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgICA6ICd2aXJ0dWFscm91dGVyLWd3cG9vbCd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICdhcmdzJyA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3ZyZ3duYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICd2aXJ0dWFscm91dGVyLWd3cG9vbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6IFsnY29tcGxldGUtdmlydHVhbHJvdXRlci1wcmVwcm9jZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1mcm9tLWFub3RoZXInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3ZpcnR1YWxyb3V0ZXItZ3dwb29sfHZyZ3duYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICA6ICd2aXJ0dWFsLXJvdXRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwbGljaXQnICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdxdWVyeS10YWJsZSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0JyAgIDogJ3ZpcnR1YWxyb3V0ZXItZ3dwb29sJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J29wdGlvbmFsJyAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgICA6ICdndy1hZGRyZXNzLXBvb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICdnYXRld2F5LWFkZHJlc3MtcG9vbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgJ3Byb2MnICAgICA6ICdxdWVyeS10YWJsZSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAncHJvYycgICAgIDogJ2Rpc3BsYXknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0JyAgIDogJ2dhdGV3YXktYWRkcmVzcy1wb29sJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKSwKLSAgICAgICAgIH0sCi0gICApCi19Ci0KLVZJUlRVQUxST1VURVJfREVGX0RFU0NSSVBUSU9OX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnZGVzY3JpcHRpb24nLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtcm91dGVyJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Byb3ZpZGUgZGVzY3JpcHRpb24gZm9yIGEgdmlydHVhbCByb3V0ZXIgaW5zdGFuY2UnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x0ZW5hbnQtcm91dGVyLWRlc2NyaXB0aW9uJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd2bnN8dGVuYW50LXJvdXRlci1kZXNjcmlwdGlvbi1leGFtcGxlJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyA6ICdkZXNjcmlwdGlvbicsCi0gICAgICAgICAgICAndHlwZScgIDogJ3N0cmluZycsCi0gICAgICAgIH0KLSAgICApLAotfQotCi0KLVZJUlRVQUxST1VURVJfREVGX09SSUdJTl9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ29yaWdpbicsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC1yb3V0ZXInLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnRGVzY3JpYmUgdmlydHVhbCByb3V0ZXIgb3JpZ2luJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2aXJ0dWFscm91dGVyfG9yaWdpbicsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndmlydHVhbHJvdXRlcnxvcmlnaW4tZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICA6ICdvcmlnaW4nLAotICAgICAgICAgICAgJ3R5cGUnICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdhY3Rpb24nIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3ZpcnR1YWxyb3V0ZXItd2Fybi1leHRlcm5hbC1jb25maWcnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnd3JpdGUtZmllbGRzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICApLAotfQotCi1WSVJUVUFMUk9VVEVSX0lOVEZfREVGX09SSUdJTl9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ29yaWdpbicsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC1yb3V0ZXItaW50ZicsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdEZXNjcmliZSB2aXJ0dWFsIHJvdXRlciBpbnRlcmZhY2Ugb3JpZ2luJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2aXJ0dWFscm91dGVyfG9yaWdpbicsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndmlydHVhbHJvdXRlcnxvcmlnaW4tZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICA6ICdvcmlnaW4nLAotICAgICAgICAgICAgJ3R5cGUnICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdhY3Rpb24nIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3ZpcnR1YWxyb3V0ZXItd2Fybi1leHRlcm5hbC1jb25maWcnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnd3JpdGUtZmllbGRzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICApLAotfQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgcm91dGVyIGludGVyZmFjZSBzdWJtb2RlIGNvbW1hbmRzCi0jCi1WUk9VVEVSX0lOVEVSRkFDRV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ2ludGVyZmFjZScsCi0gICAgJ2hlbHAnICAgICAgICAgOiAnRW50ZXIgdmlydHVhbCByb3V0ZXIgaW50ZXJmYWNlIGRlZmluaXRpb24gc3VibW9kZScsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC1yb3V0ZXIqJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWctc3VibW9kZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnLAotICAgICdzdWJtb2RlLW5hbWUnIDogJ2NvbmZpZy10ZW5hbnQtcm91dGVyLWludGYnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0VudGVyIHZpcnR1YWwgcm91dGVyIGludGVyZmFjZSBkZWZpbml0aW9uIHN1Ym1vZGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x0ZW5hbnQtcm91dGVyLWludGVyZmFjZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHRlbmFudC1yb3V0ZXItaW50ZXJmYWNlLWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAndnJpbmFtZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICdzY29wZWQnICAgICAgIDogJ3ZpcnR1YWwtcm91dGVyJywKLSAgICAgICAgICAgICdleHBsaWNpdCcgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogWyAnY29tcGxldGUtdmlydHVhbHJvdXRlci1wcmVwcm9jZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3ZpcnR1YWxyb3V0ZXItaW50ZXJmYWNlfHZyaW5hbWUnLAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgOiAnRW50ZXIgYSByb3V0ZXIgaW50ZXJmYWNlIG5hbWUnLAotICAgICAgICAgICAgJ2FjdGlvbicgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAndmlydHVhbHJvdXRlci1wcmVwcm9jZXNzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3B1c2gtbW9kZS1zdGFjaycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICAnbm8tYWN0aW9uJyAgICA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICd2aXJ0dWFscm91dGVyLXByZXByb2Nlc3MnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnZGVsZXRlLW9iamVjdHMnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgIDogJ3ZucycsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xpbnRlcmZhY2Utdm5zLWNvbm5lY3RlZCcsIAotICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDondm5zLWNvbm5lY3RlZCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6IFsnY29tcGxldGUtdmlydHVhbHJvdXRlci1wcmVwcm9jZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRlLWZyb20tYW5vdGhlciddLAotICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICd2bnMtZGVmaW5pdGlvbnx2bnNuYW1lJywKLSAgICAgICAgICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgOiAnRW50ZXIgYSBWTlMgdG8gY29ubmVjdCcsCi0gICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICAgIDogJ3RlbmFudCcsICAKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICdleHBsaWNpdCcgICAgIDogVHJ1ZSwgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0b2tlbicgICAgICAgIDogJ3RlbmFudCcsCi0gICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xpbnRlcmZhY2Utcm91dGVyLWNvbm5lY3RlZCcsIAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgeyAgICdmaWVsZCcgICAgICAgIDoncm91dGVyLWNvbm5lY3RlZC10ZW5hbnQnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiBbJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS12aXJ0dWFscm91dGVyLXBvc3Rwcm9jZXNzJ10sCi0gICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3RlbmFudHxuYW1lJywKLSAgICAgICAgICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyAgOiAnRW50ZXIgYSBUZW5hbnQgUm91dGVyIHRvIGNvbm5lY3QnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6J3JvdXRlci1jb25uZWN0ZWQnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgICAgICAgOiAndGVuYW50JywKLSAgICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0JyAgICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6IFsnY29tcGxldGUtdmlydHVhbHJvdXRlci1wcmVwcm9jZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRlLWZyb20tYW5vdGhlciddLAotICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICd2aXJ0dWFscm91dGVyfHZybmFtZScsCi0gICAgICAgICAgICAgICAgICAgICdzeW50YXgtaGVscCcgIDogJ0VudGVyIGEgVGVuYW50IFJvdXRlciB0byBjb25uZWN0JywKLSAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICApCi0gICAgICAgICksCi0gICAgICAgICB9LAotICAgICAgICAKLSAgICApLAotfQotCi1WUklfREVGX0FDVElWRV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgOiAnYWN0aXZlJywKLSAgICAnbW9kZScgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtcm91dGVyLWludGYnLAotICAgICdzaG9ydC1oZWxwJyAgOiAnU2V0IFZpcnR1YWwgUm91dGVyIEludGVyZmFjZSBhY3RpdmUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x0ZW5hbnQtcm91dGVyLWFjdGl2ZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHRlbmFudC1yb3V0ZXItYWN0aXZlLWV4YW1wbGUnLAotICAgICdkb2MtaW5jbHVkZScgIDogWyAnZGVmYXVsdCcgXSwKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2aXJ0dWFscm91dGVyLWludGVyZmFjZScsCi0gICAgJ2FyZ3MnIDogKCksCi0gICAgJ2FjdGlvbicgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyA6ICd3cml0ZS1maWVsZHMnLAotICAgICAgICAgICAgJ2RhdGEnIDogeyAnYWN0aXZlJyA6IFRydWUgfSwKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgOiAnbWFyayB0aGUgaW50ZXJmYWNlIGFzIGFjdGl2ZScsCi0gICAgICAgIH0KLSAgICApLAotICAgICduby1hY3Rpb24nIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgOiAnd3JpdGUtZmllbGRzJywKLSAgICAgICAgICAgICdkYXRhJyA6IHsgJ2FjdGl2ZScgOiBGYWxzZSB9LAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdtYXJrIHRoZSBpbnRlcmZhY2UgYXMgaW5hY3RpdmUnLAotICAgICAgICB9Ci0gICAgKQotfQotCi1WUklfREVGX0lQX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICA6ICdpcCcsCi0gICAgJ21vZGUnICAgICAgICA6ICdjb25maWctdGVuYW50LXJvdXRlci1pbnRmJywKLSAgICAnc2hvcnQtaGVscCcgIDogJ1NldCBWaXJ0dWFsIFJvdXRlciBJbnRlcmZhY2UgSVAgYWRkcmVzcycsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfHRlbmFudC1yb3V0ZXItaW50ZXJmYWNlaXAnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3x0ZW5hbnQtcm91dGVyLWludGVyZmFjZWlwLWV4YW1wbGUnLAotICAgICdkb2MtaW5jbHVkZScgIDogWyAnZGVmYXVsdCcgXSwKLSAgICAncGFyZW50LWZpZWxkJyA6ICd2aXJ0dWFsLXJvdXRlci1pbnRlcmZhY2UnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1vYmplY3QnLAotICAgICdvYmotdHlwZScgICAgIDogJ2ludGVyZmFjZS1hZGRyZXNzLXBvb2wnLAotICAgICdkYXRhJyAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgJ2lwLWFkZHJlc3MnICAgICAgIDogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdzdWJuZXQtbWFzaycgICAgICA6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICB9LAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgeyAnY2hvaWNlcyc6ICgKLSAgICAgICAgKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICA6ICdpcC1hZGRyZXNzLW5vdC1tYXNrJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtYW5kLW1hc2staXAnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdzdWJuZXQtbWFzaycsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnbmV0bWFzaycsCi0gICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnY29udmVydC1pbnZlcnNlLW5ldG1hc2snLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtYW5kLW1hc2stbWFzaycsCi0gICAgICAgICAgICB9LAotICAgICAgICApLAotICAgICAgICAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnY2lkci1yYW5nZScsCi0gICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgOiAnc3JjLWNpZHInLAotICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ3NwbGl0LWNpZHItZGF0YS1pbnZlcnNlJywKLSAgICAgICAgICAgICAgICAnZGVzdC1pcCcgICAgICA6ICdpcC1hZGRyZXNzJywKLSAgICAgICAgICAgICAgICAnZGVzdC1uZXRtYXNrJyA6ICdzdWJuZXQtbWFzaycsCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1jaWRyLXJhbmdlJywKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSwKLSAgICAgICAgICAgICAgKQotICAgICAgICAgfQotICAgICAgICApLAotICAgICdhY3Rpb24nIDogKCAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgICAgOiAndmVyaWZ5LXJvdXRlci1pbnRmLWlwJwotICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICksCi0gICAgJ25vLWFjdGlvbicgOiAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdkZWxldGUtb2JqZWN0cycsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICksCi19Ci0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBnYXRld2F5IHBvb2wgc3VibW9kZSBjb21tYW5kcwotIwotVlJPVVRFUl9HV1BPT0xfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdnYXRld2F5LXBvb2wnLAotICAgICdoZWxwJyAgICAgICAgIDogJ0VudGVyIHZpcnR1YWwgcm91dGVyIGdhdGV3YXkgcG9vbCBzdWJtb2RlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctdGVuYW50LXJvdXRlcionLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1zdWJtb2RlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2aXJ0dWFscm91dGVyLWd3cG9vbCcsCi0gICAgJ3N1Ym1vZGUtbmFtZScgOiAnY29uZmlnLXRlbmFudC1yb3V0ZXItZ3cnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0VudGVyIHZpcnR1YWwgcm91dGVyIGdhdGV3YXkgcG9vbCBkZWZpbml0aW9uIHN1Ym1vZGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x0ZW5hbnQtcm91dGVyLWd3cG9vbCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHRlbmFudC1yb3V0ZXItZ3dwb29sLWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAndnJnd25hbWUnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAnc2NvcGVkJyAgICAgICA6ICd2aXJ0dWFsLXJvdXRlcicsCi0gICAgICAgICAgICAnZXhwbGljaXQnICAgICA6IFRydWUsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICA6IFsgJ2NvbXBsZXRlLXZpcnR1YWxyb3V0ZXItcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICd2aXJ0dWFscm91dGVyLWd3cG9vbHx2cmd3bmFtZScsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnICA6ICdFbnRlciBhIHJvdXRlciBnYXRld2F5IHBvb2wgbmFtZScsCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgICA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICd2aXJ0dWFscm91dGVyLXByZXByb2Nlc3MnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAncHVzaC1tb2RlLXN0YWNrJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICduby1hY3Rpb24nICAgIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3ZpcnR1YWxyb3V0ZXItcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdkZWxldGUtb2JqZWN0cycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICkKLSAgICAgICAgfSwKLSAgICApLAotfQotCi1WUkdXX0RFRl9JUF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgOiAnaXAnLAotICAgICdtb2RlJyAgICAgICAgOiAnY29uZmlnLXRlbmFudC1yb3V0ZXItZ3cnLAotICAgICdzaG9ydC1oZWxwJyAgOiAnQWRkIElQIGFkZHJlc3MgdG8gdGhlIGdhdGV3YXkgcG9vbCcsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfHRlbmFudC1yb3V0ZXItZ3dpcCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHRlbmFudC1yb3V0ZXItZ3dpcC1leGFtcGxlJywKLSAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ2RlZmF1bHQnIF0sCi0gICAgJ3BhcmVudC1maWVsZCcgOiAndmlydHVhbC1yb3V0ZXItZ3dwb29sJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWctb2JqZWN0JywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdnYXRld2F5LWFkZHJlc3MtcG9vbCcsCi0gICAgJ2RhdGEnICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnaXAtYWRkcmVzcycgICAgICAgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgOiAnaXAtYWRkcmVzcycsCi0gICAgICAgICAgICAndHlwZScgIDogJ2lwLWFkZHJlc3Mtbm90LW1hc2snLAotICAgICAgICAgICAgJ2RvYycgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWlwLWFuZC1tYXNrLWlwJywKLSAgICAgICAgICAgICdhY3Rpb24nIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnICAgIDogJ3ZlcmlmeS1yb3V0ZXItZ3ctaXAnCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICd3cml0ZS1vYmplY3QnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgJ25vLWFjdGlvbicgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnZGVsZXRlLW9iamVjdHMnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICAgfSwKLSAgICApLAotfQotCi0KLVNUQVRJQ19BUlBfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgIDogJ2FycCcsCi0gICAgJ21vZGUnICAgICAgICA6ICdjb25maWcqJywKLSAgICAnc2hvcnQtaGVscCcgIDogJ1NldCBTdGF0aWMgQVJQJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdzdGF0aWMtYXJwJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICdzdGF0aWMtYXJwLWV4YW1wbGUnLAotICAgICdkb2MtaW5jbHVkZScgIDogWyAnZGVmYXVsdCcgXSwKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdvYmotdHlwZScgICAgIDogJ3N0YXRpYy1hcnAnLAotICAgICdkYXRhJyAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgJ2lwJyAgICAgICA6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnbWFjJyAgICAgIDogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICAKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnIDogJ2lwJywKLSAgICAgICAgICAgICAgICAndHlwZScgIDogJ2lwLWFkZHJlc3Mtbm90LW1hc2snLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdtYWMnLAotICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ21hYy1hZGRyZXNzJywKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgKSwKLSAgICAnYWN0aW9uJyA6ICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICksCi0gICAgJ25vLWFjdGlvbicgOiAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdkZWxldGUtb2JqZWN0cycsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICksCi19Ci10ZW5hbnRfc2hvd19hY3Rpb24gPSAoCi0gICAgewotICAgICAgICAncHJvYycgIDogJ3F1ZXJ5LXRhYmxlJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ3Byb2MnICAgOiAnZGlzcGxheScsCi0gICAgICAgICdmb3JtYXQnIDogJ3N0YXRpY2FycCcsCi0gICAgfSwKLSkKLQotU1RBVElDX0FSUF9TSE9XX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdhbGwtaGVscCcgICAgIDogJ1Nob3cgc3RhdGljIEFSUCBkZXRhaWxzJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IGFsbCBjb25maWd1cmVkIHN0YXRpYyBBUlBzJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICdzdGF0aWMtYXJwJywKLSAgICAnZG9jJyAgICAgICAgICA6ICdzaG93LWFycCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAnc2hvdy1hcnAtZXhhbXBsZScsCi0gICAgJ2FjdGlvbicgICAgICAgOiAgdGVuYW50X3Nob3dfYWN0aW9uLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnYXJwJywKLSAgICApCi19Ci0jCi0jIEZPUk1BVFMKLUFSUF9GT1JNQVQgPSB7Ci0gICAgJ3N0YXRpY2FycCcgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnICAgICA6IFsgJ0lkeCcsICdpcCcsICdtYWMnXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAnaXAnICAgICAgICAgICAgICA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ21hYycgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci1TUkNfSVBfTUFUQ0ggPSB7Ci0gICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyA6ICdzcmMtaXAnLAotICAgICAgICAgICAgICAgICd0eXBlJyAgOiAnaXAtYWRkcmVzcy1ub3QtbWFzaycsCi0gICAgICAgICAgICAgICAgJ2RvYycgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWlwLWFuZC1tYXNrLWlwJywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnc3JjLWlwLW1hc2snLAotICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ25ldG1hc2snLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtYW5kLW1hc2stbWFzaycsCi0gICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnY29udmVydC1pbnZlcnNlLW5ldG1hc2snLAotICAgICAgICAgICAgfSwKLSAgICAgICAgKSwKLSAgICAgICAgKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgICAgOiAnc3JjLWlwJywKLSAgICAgICAgICAgICAgICAndHlwZScgICAgIDogJ2lwLWFkZHJlc3Mtbm90LW1hc2snLAotICAgICAgICAgICAgICAgICdkYXRhJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy1pcC1tYXNrJyA6ICcwLjAuMC4wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtb25seScsCi0gICAgICAgICAgICB9LAotICAgICAgICApLAotICAgICAgICAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnc3JjLWlwJywKLSAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdjaWRyLXJhbmdlJywKLSAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICA6ICdzcmMtY2lkcicsCi0gICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnc3BsaXQtY2lkci1kYXRhLWludmVyc2UnLAotICAgICAgICAgICAgICAgICdkZXN0LWlwJyAgICAgIDogJ3NyYy1pcCcsCi0gICAgICAgICAgICAgICAgJ2Rlc3QtbmV0bWFzaycgOiAnc3JjLWlwLW1hc2snLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtY2lkci1yYW5nZScsCi0gICAgICAgICAgICB9Ci0gICAgICAgICksCi0gICAgICAgKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICd0b2tlbicgIDogJ2FueScsCi0gICAgICAgICAgICAgICAgJ2RhdGEnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjLWlwJyAgICAgIDogJzAuMC4wLjAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy1pcC1tYXNrJyA6ICcyNTUuMjU1LjI1NS4yNTUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnZG9jJyAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWlwLWFueScsCi0gICAgICAgICAgICB9Ci0gICAgICAgICksCi0gICAgKQotfQotCi1EU1RfSVBfTUFUQ0ggPSB7Ci0gICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyA6ICdkc3QtaXAnLAotICAgICAgICAgICAgICAgICd0eXBlJyAgOiAnaXAtYWRkcmVzcy1ub3QtbWFzaycsCi0gICAgICAgICAgICAgICAgJ2RvYycgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWlwLWFuZC1tYXNrLWlwJywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyA6ICdkc3QtaXAtbWFzaycsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICA6ICduZXRtYXNrJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtYW5kLW1hc2stbWFzaycsCi0gICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnY29udmVydC1pbnZlcnNlLW5ldG1hc2snLAotICAgICAgICAgICAgfSwKLSAgICAgICAgKSwKLSAgICAgICAgKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgICAgOiAnZHN0LWlwJywKLSAgICAgICAgICAgICAgICAndHlwZScgICAgIDogJ2lwLWFkZHJlc3Mtbm90LW1hc2snLAotICAgICAgICAgICAgICAgICdkYXRhJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkc3QtaXAtbWFzaycgOiAnMC4wLjAuMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWlwLW9ubHknLAotICAgICAgICAgICAgfSwKLSAgICAgICAgKSwKLSAgICAgICAgKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2RzdC1pcCcsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnY2lkci1yYW5nZScsCi0gICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgOiAnZHN0LWNpZHInLAotICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ3NwbGl0LWNpZHItZGF0YS1pbnZlcnNlJywKLSAgICAgICAgICAgICAgICAnZGVzdC1pcCcgICAgICA6ICdkc3QtaXAnLAotICAgICAgICAgICAgICAgICdkZXN0LW5ldG1hc2snIDogJ2RzdC1pcC1tYXNrJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWNpZHItcmFuZ2UnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgKSwKLSAgICAgICAgKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICd0b2tlbicgIDogJ2FueScsCi0gICAgICAgICAgICAgICAgJ2RhdGEnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHN0LWlwJyAgICAgIDogJzAuMC4wLjAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RzdC1pcC1tYXNrJyA6ICcyNTUuMjU1LjI1NS4yNTUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnZG9jJyAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWlwLWFueScsCi0gICAgICAgICAgICB9Ci0gICAgICAgICksCi0gICAgKQotfQotCi1ST1VUSU5HX1JVTEVfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdyb3V0ZScsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC1yb3V0ZXIqJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTZXQgUm91dGluZyBSdWxlJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dGVuYW50LXJvdXRlci1yb3V0ZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHRlbmFudC1yb3V0ZXItcm91dGUtZXhhbXBsZScsCi0gICAgJ2RvYy1pbmNsdWRlJyAgOiBbICdkZWZhdWx0JyBdLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1vYmplY3QnLAotICAgICdvYmotdHlwZScgICAgIDogJ3ZpcnR1YWxyb3V0ZXItcm91dGluZ3J1bGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgICAgIHsndG9rZW4nICAgICA6ICdmcm9tJwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAnY2hvaWNlcyc6ICgKLSAgICAgICAgICAgICAgICAoeyd0b2tlbicgICAgICAgIDogJ3RlbmFudCd9LAotICAgICAgICAgICAgICAgICB7J2ZpZWxkJyAgICAgICAgOiAnc3JjLXRlbmFudCcsCi0gICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICd0ZW5hbnR8bmFtZScsCi0gICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICA6ICdzb3VyY2UgdGVuYW50JwotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICB7J3Rva2VuJyAgICAgICAgOiAndm5zJywKLSAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICB7J2ZpZWxkJyAgICAgICAgOiAnc3JjLXZucycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiBbJ2NvbXBsZXRlLXZpcnR1YWxyb3V0ZXItcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRlLWZyb20tYW5vdGhlciddLAotICAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3Zucy1kZWZpbml0aW9ufHZuc25hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ3NvdXJjZSBWTlMnLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKHsndG9rZW4nICAgICAgICA6ICd2bnMnLAotICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICB7J2ZpZWxkJyAgICAgICAgOiAnc3JjLXZucycsCi0gICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICd2bnMtZGVmaW5pdGlvbnx2bnNuYW1lJywKLSAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ3NvdXJjZSBWTlMnLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICggIFNSQ19JUF9NQVRDSCwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgfSwgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgeyd0b2tlbicgICAgICAgIDogJ3RvJywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgJ2Nob2ljZXMnOiAoCi0gICAgICAgICAgICAgICAgKHsndG9rZW4nICAgICAgICA6ICd0ZW5hbnQnfSwKLSAgICAgICAgICAgICAgICAgeydmaWVsZCcgICAgICAgIDogJ2RzdC10ZW5hbnQnLAotICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgICAgICAgJ290aGVyJyAgICAgICAgOiAndGVuYW50fG5hbWUnLAotICAgICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgOiAnZGVzdGluYXRpb24gdGVuYW50JwotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICB7J3Rva2VuJyAgICAgICAgOiAndm5zJywKLSAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICB7J2ZpZWxkJyAgICAgICAgOiAnZHN0LXZucycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiBbJ2NvbXBsZXRlLXZpcnR1YWxyb3V0ZXItcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRlLWZyb20tYW5vdGhlciddLAotICAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ3Zucy1kZWZpbml0aW9ufHZuc25hbWUnLAotICAgICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ2Rlc3RpbmF0aW9uIFZOUycsCi0gICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKHsndG9rZW4nICAgICAgICA6ICd2bnMnLAotICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICB7J2ZpZWxkJyAgICAgICAgOiAnZHN0LXZucycsCi0gICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICd2bnMtZGVmaW5pdGlvbnx2bnNuYW1lJywKLSAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgIDogJ2Rlc3RpbmF0aW9uIFZOUycsCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKCAgRFNUX0lQX01BVENILAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogVHJ1ZSwKLSAgICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAnZmllbGQnICAgICA6ICduaC1pcCcsCi0gICAgICAgICAgICAgICAgICAndHlwZScgICAgICA6ICdpcC1hZGRyZXNzLW5vdC1tYXNrJywKLSAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnOiAnbmV4dCBob3AgaXAgYWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAnZG9jJyAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtb25seScsCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgeyd0b2tlbicgICAgICAgIDogJ2d3LXBvb2wnLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZ2F0ZXdheS1wb29sJywKLSAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgICAgICAgOiAndmlydHVhbC1yb3V0ZXInLAotICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0JyAgICAgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiBbJ2NvbXBsZXRlLXZpcnR1YWxyb3V0ZXItcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtZnJvbS1hbm90aGVyJ10sCi0gICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICd2aXJ0dWFscm91dGVyLWd3cG9vbHx2cmd3bmFtZScsCi0gICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICA6ICdnYXRld2F5IHBvb2wgbmFtZScsCi0gICAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8Z2F0ZXdheS1wb29sJywKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICB9LAotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnb3V0Z29pbmctaW50ZicsCi0gICAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgICAnc2NvcGVkJyAgICAgICA6ICd2aXJ0dWFsLXJvdXRlcicsCi0gICAgICAgICAgICAgICdleHBsaWNpdCcgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiBbJ2NvbXBsZXRlLXZpcnR1YWxyb3V0ZXItcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1mcm9tLWFub3RoZXInXSwKLSAgICAgICAgICAgICAgJ290aGVyJyAgICAgICAgOiAndmlydHVhbHJvdXRlci1pbnRlcmZhY2V8dnJpbmFtZScsCi0gICAgICAgICAgICAgICdvcHRpb25hbCcgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICA6ICdvdXRnb2luZyBpbnRlcmZhY2UnLAotICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8b3V0Z29pbmctaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsnZmllbGQnICAgICAgICAgOiAnYWN0aW9uJywKLSAgICAgICAgICAgICAndHlwZScgICAgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgJ3ZhbHVlcycgICAgICAgIDogKCdkZW55JywgJ3Blcm1pdCcpLAotICAgICAgICAgICAgIH0gICAgICAgICAKLSAgICAgICAgICAgICksIAotICAgICdhY3Rpb24nIDogKAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAndmlydHVhbHJvdXRlci1wcmVwcm9jZXNzJwotICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3dyaXRlLW9iamVjdCcsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICksCi0gICAgJ25vLWFjdGlvbicgOiAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICd2aXJ0dWFscm91dGVyLXByZXByb2Nlc3MnCi0gICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnZGVsZXRlLW9iamVjdHMnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICApLAotfQotCi0jIEZPUk1BVFMKLVZJUlRVQUxST1VURVJfRk9STUFUID0gewotICAgICd2aXJ0dWFscm91dGVyJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgIDogWyAnSWR4JywgJ3RlbmFudCcsICd2cm5hbWUnLCAnZGVzY3JpcHRpb24nXSwKLSAgICAgICAgICAgICdkZXRhaWxzJyAgICAgOiBbICdJZHgnLCAndGVuYW50JywgJ3ZybmFtZScsICdkZXNjcmlwdGlvbiddLAotICAgICAgICAgICAgJ2JyaWVmJyAgICAgICA6IFsgJ0lkeCcsICd0ZW5hbnQnLCAndnJuYW1lJ10sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgJ3RlbmFudCcgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdUZW5hbnQgSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICd2cm5hbWUnICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICdkZXNjcmlwdGlvbicgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICAgICAgICAgIAotICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci1WSVJUVUFMUk9VVEVSX0lOVEVSRkFDRV9GT1JNQVQgPSB7Ci0gICAgJ3ZpcnR1YWxyb3V0ZXItaW50ZXJmYWNlJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgIDogWyAnSWR4JywgJ3ZpcnR1YWwtcm91dGVyJywgJ3ZyaW5hbWUnLCAnYWN0aXZlJywgJ3Zucy1jb25uZWN0ZWQnLCdyb3V0ZXItY29ubmVjdGVkJ10sCi0gICAgICAgICAgICAnZGV0YWlscycgICAgIDogWyAnSWR4JywgJ3ZpcnR1YWwtcm91dGVyJywgJ3ZyaW5hbWUnLCAnYWN0aXZlJywgJ3Zucy1jb25uZWN0ZWQnLCdyb3V0ZXItY29ubmVjdGVkJ10sCi0gICAgICAgICAgICAnYnJpZWYnICAgICAgIDogWyAnSWR4JywgJ3ZpcnR1YWwtcm91dGVyJywgJ3ZyaW5hbWUnLCAnYWN0aXZlJ10sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgJ3ZpcnR1YWwtcm91dGVyJyAgICAgOiB7fSwKLSAgICAgICAgICAgJ3ZyaW5hbWUnICAgICAgICAgICAgOiB7fSwKLSAgICAgICAgICAgJ2FjdGl2ZScgICAgICAgICAgICAgOiB7fSwgICAKLSAgICAgICAgICAgICd2bnMtY29ubmVjdGVkJyAgICAgOiB7fSwKLSAgICAgICAgICAgICdyb3V0ZXItY29ubmVjdGVkJyAgOiB7fSwgICAgICAgCi0gICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLVZJUlRVQUxST1VURVJfR1dQT09MX0ZPUk1BVCA9IHsKLSAgICAndmlydHVhbHJvdXRlci1nd3Bvb2wnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgICAgOiBbICdJZHgnLCAndmlydHVhbC1yb3V0ZXInLCAndnJnd25hbWUnXSwKLSAgICAgICAgICAgICdkZXRhaWxzJyAgICAgOiBbICdJZHgnLCAndmlydHVhbC1yb3V0ZXInLCAndnJnd25hbWUnXSwKLSAgICAgICAgICAgICdicmllZicgICAgICAgOiBbICdJZHgnLCAndmlydHVhbC1yb3V0ZXInLCAndnJnd25hbWUnXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAndmlydHVhbC1yb3V0ZXInICAgICA6IHt9LAotICAgICAgICAgICAndnJnd25hbWUnICAgICAgICAgICA6IHt9LAotICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci1HQVRFV0FZX0FERFJFU1NfUE9PTF9GT1JNQVQgPSB7Ci0gICAgJ2dhdGV3YXktYWRkcmVzcy1wb29sJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgIDogWyAnSWR4JywgJ3ZpcnR1YWwtcm91dGVyLWd3cG9vbCcsICdpcC1hZGRyZXNzJ10sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgJ3ZpcnR1YWwtcm91dGVyLWd3cG9vbCcgICAgICAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ1ZpcnR1YWwgUm91dGVyIEdhdGV3YXkgUG9vbCcsfSwKLSAgICAgICAgICAgJ2lwLWFkZHJlc3MnICAgICAgICAgICAgICAgICAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ0lQIEFkZHJlc3MnLH0sCi0gICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLVZJUlRVQUxST1VURVJfUk9VVElOR1JVTEVfRk9STUFUID0gewotICAgICd2aXJ0dWFscm91dGVyLXJvdXRpbmdydWxlJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgIDogWyAnSWR4JywgJ3ZpcnR1YWwtcm91dGVyJywnYWN0aW9uJywnc3JjLXRlbmFudCcsJ3NyYy12bnMnLCdzcmMtaXAnLCdzcmMtaXAtbWFzaycsJ2RzdC10ZW5hbnQnLCdkc3Qtdm5zJywnZHN0LWlwJywnZHN0LWlwLW1hc2snLCduaC1pcCcsJ2dhdGV3YXktcG9vbCcsJ291dGdvaW5nLWludGYnXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAndmlydHVhbC1yb3V0ZXInICAgICAgIDoge30sCi0gICAgICAgICAgICdzcmMtdGVuYW50JyAgICAgICAgICAgOiB7fSwKLSAgICAgICAgICAgJ3NyYy12bnMnICAgICAgICAgICAgICA6IHt9LCAgIAotICAgICAgICAgICAnc3JjLWlwJyAgICAgICAgICAgICAgIDoge30sCi0gICAgICAgICAgICdzcmMtaXAtbWFzaycgICAgICAgICAgOiB7J2Zvcm1hdHRlcicgICAgOiBmbXRjbnYuY29udmVydF9pbnZlcnNlX25ldG1hc2tfaGFuZGxlcix9LAotICAgICAgICAgICAnZHN0LXRlbmFudCcgICAgICAgICAgIDoge30sICAKLSAgICAgICAgICAgJ2RzdC12bnMnICAgICAgICAgICAgICA6IHt9LCAgIAotICAgICAgICAgICAnZHN0LWlwJyAgICAgICAgICAgICAgIDoge30sCi0gICAgICAgICAgICdkc3QtaXAtbWFzaycgICAgICAgICAgOiB7J2Zvcm1hdHRlcicgICAgOiBmbXRjbnYuY29udmVydF9pbnZlcnNlX25ldG1hc2tfaGFuZGxlcix9LAotICAgICAgICAgICAnbmgtaXAnICAgICAgICAgICAgICAgIDoge30sICAKLSAgICAgICAgICAgJ2dhdGV3YXktcG9vbCcgICAgICAgICA6IHt9LAotICAgICAgICAgICAnb3V0Z29pbmctaW50ZicgICAgICAgIDoge30sICAKLSAgICAgICAgICAgJ2FjdGlvbicgICAgICAgICAgICAgICA6IHt9LCAgICAgCi0gICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLUlOVEVSRkFDRV9BRERSRVNTX1BPT0xfRk9STUFUID0gewotICAgICdpbnRlcmZhY2UtYWRkcmVzcy1wb29sJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgIDogWyAnSWR4JywgJ3ZpcnR1YWwtcm91dGVyLWludGVyZmFjZScsICdpcC1hZGRyZXNzJywgJ3N1Ym5ldC1tYXNrJ10sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgJ3ZpcnR1YWwtcm91dGVyLWludGVyZmFjZScgICAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ1ZpcnR1YWwgUm91dGVyIEludGVyZmFjZScsfSwKLSAgICAgICAgICAgJ2lwLWFkZHJlc3MnICAgICAgICAgICAgICAgICAgIDogeyd2ZXJib3NlLW5hbWUnIDogJ0lQIEFkZHJlc3MnLH0sCi0gICAgICAgICAgICdzdWJuZXQtbWFzaycgICAgICAgICAgICAgICAgICA6IHsnZm9ybWF0dGVyJyAgICA6IGZtdGNudi5jb252ZXJ0X2ludmVyc2VfbmV0bWFza19oYW5kbGVyLH0sCi0gICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLSIiIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3ZpcnR1YWxyb3V0ZXJfbW9kZWwucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC92aXJ0dWFscm91dGVyX21vZGVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhOTYyODc0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3ZpcnR1YWxyb3V0ZXJfbW9kZWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGNvbW1hbmQKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3ZpcnR1YWxyb3V0ZXInLCAnb3JpZ2luJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCd2aXJ0dWFscm91dGVyJywgJ3ZybmFtZScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndmlydHVhbHJvdXRlcicsICd0ZW5hbnQnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3ZpcnR1YWxyb3V0ZXInLCAnZGVzY3JpcHRpb24nKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3ZpcnR1YWxyb3V0ZXInLCAnYWN0aXZlJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9lZGl0KCd2aXJ0dWFscm91dGVyLWludGVyZmFjZScsICdhY3RpdmUnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3ZpcnR1YWxyb3V0ZXItaW50ZXJmYWNlJywgJ3ZyaW5hbWUnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3ZpcnR1YWxyb3V0ZXItaW50ZXJmYWNlJywgJ29yaWdpbicpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnLCAndm5zLWNvbm5lY3RlZCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnLCAncm91dGVyLWNvbm5lY3RlZCcpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnLCAndmlydHVhbC1yb3V0ZXInKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3ZpcnR1YWxyb3V0ZXItZ3dwb29sJywgJ3ZyZ3duYW1lJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC92bnMucHkgYi9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC92bnMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhlYTFmMTkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kZXNjL3ZlcnNpb24yMDAvdm5zLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTg5MiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGNvbW1hbmQKLWltcG9ydCBmbXRjbnYKLScnJwotZGVmIHZuc19vcmlnaW5fZXh0ZXJuYWwoZGF0YSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIG9yaWdpbi1uYW1lIHdoZW4gdGhlIHZucyB3YXNuJ3QgY3JlYXRlZCBieSB0aGUgY2xpLAotICAgIHJldHVybiBOb25lIG90aGVyd2lzZS4KLSAgICAiIiIKLSAgICBwayA9IGNvbW1hbmQubWkucGsoJ3Zucy1kZWZpbml0aW9uJykKLSAgICBpZiBub3QgcGsgaW4gZGF0YToKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdm5zID0gY29tbWFuZC5zZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZSgndm5zLWRlZmluaXRpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW3BrXSkKLSAgICBpZiBsZW4odm5zKSA9PSAwOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgbG9jYWwgPSBbJ2NsaScsICdyZXN0J10KLSAgICBpZiAnb3JpZ2luJyBpbiB2bnNbMF0gYW5kIG5vdCB2bnNbMF1bJ29yaWdpbiddIGluIGxvY2FsOgotICAgICAgICByZXR1cm4gdm5zWzBdWydvcmlnaW4nXQotICAgIHJldHVybiBOb25lCi0gICAgCi0KLWRlZiB2bnNfd2Fybl9leHRlcm5hbF9jb25maWcoZGF0YSk6Ci0gICAgIiIiCi0gICAgRnJvbSB0aGUgbmFtZWQgdm5zLCBsb29rIHVwIHRoZSBlbnRyeSwgaWYgaXQgZXhpc3RzIGluIHRoZQotICAgIGRhdGFiYXNlLCB2YWxpZGF0ZSB0aGUgJ29yaWdpbicgaXMgZWl0aGVyIG51bGwsIG9yICdjbGknLAotICAgIG90aGVyd2lzZSBwcm92aWRlIGEgd2FybmluZyBhYm91dCB0aGlzIHBhcnRpY3VsYXIgdm5zCi0gICAgKGFsb25nIHdpdGggdGhlIG9yaWdpbmF0b3IgbmFtZSkKLSAgICAiIiIKLSAgICBleHRlcm5hbF9vcmlnaW4gPSB2bnNfb3JpZ2luX2V4dGVybmFsKGRhdGEpCi0gICAgaWYgZXh0ZXJuYWxfb3JpZ2luOgotICAgICAgICBjb21tYW5kLnNkbnNoLndhcm5pbmcoJ3ZucyAlcyBtYXkgbm90IGJlIGludGVuZGVkIGZvciBjbGkgdXBkYXRlLCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3JpZ2luL2NyZWF0b3IgIiVzIiAnICUgKGRhdGFbJ2lkJ10sIGV4dGVybmFsX29yaWdpbikpCi0KLWNvbW1hbmQuYWRkX2FjdGlvbigndm5zLXdhcm4tZXh0ZXJuYWwtY29uZmlnJywgdm5zX3dhcm5fZXh0ZXJuYWxfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICB7J2t3YXJncyc6IHsnZGF0YScgICAgICA6ICckZGF0YScsfX0pCi0KLWRlZiBjb21wbGV0ZV90ZW5hbnRuYW1lX3ByZXByb2Nlc3MoZGF0YSk6Ci0gICAgZGF0YVsndGVuYW50J109J2RlZmF1bHQnCi0gICAgaWYgJ25hbWUnIGluIGRhdGE6Ci0gICAgICAgIGRhdGFbJ3RlbmFudCddPSBkYXRhWyduYW1lJ10KLSAgICAgICAgZGVsIGRhdGFbJ25hbWUnXQotICAgIGVsc2U6Ci0gICAgICAgIGN1cnJlbnRfbW9kZT1jb21tYW5kLnNkbnNoLmN1cnJlbnRfbW9kZSgpCi0gICAgICAgIGlmIG5vdCBjdXJyZW50X21vZGUuc3RhcnRzd2l0aCgnY29uZmlnLXRlbmFudCcpOgotICAgICAgICAgICAgZGF0YVsndGVuYW50J109J2RlZmF1bHQnCi0gICAgICAgIGlmIGN1cnJlbnRfbW9kZS5zdGFydHN3aXRoKCdjb25maWctdGVuYW50Jyk6Ci0gICAgICAgICAgICBmb3IgeCBpbiBjb21tYW5kLnNkbnNoLm1vZGVfc3RhY2s6Ci0gICAgICAgICAgICAgICAgaWYgeFsnbW9kZV9uYW1lJ10gPT0gJ2NvbmZpZy10ZW5hbnQnOgotICAgICAgICAgICAgICAgICAgICBkYXRhWyd0ZW5hbnQnXSA9IHhbJ29iaiddCi0KLQotY29tbWFuZC5hZGRfY29tcGxldGlvbignY29tcGxldGUtdGVuYW50bmFtZS1wcmVwcm9jZXNzJywgY29tcGxldGVfdGVuYW50bmFtZV9wcmVwcm9jZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgeydrd2FyZ3MnOiB7J2RhdGEnOiAnJGRhdGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pCi0KLWRlZiB2bnNfY29uZmlybV9leHRlcm5hbF9kZWxldGUoZGF0YSk6Ci0gICAgIiIiCi0gICAgRnJvbSB0aGUgbmFtZWQgdm5zLCBsb29rIHVwIHRoZSBlbnRyeSwgaWYgaXQgZXhpc3RzIGluIHRoZQotICAgIGRhdGFiYXNlLCB2YWxpZGF0ZSB0aGUgJ29yaWdpbicgaXMgZWl0aGVyIG51bGwsIG9yICdjbGknLAotICAgIG90aGVyd2lzZSBwcm92aWRlIGEgd2FybmluZyBhYm91dCB0aGlzIHBhcnRpY3VsYXIgdm5zCi0gICAgKGFsb25nIHdpdGggdGhlIG9yaWdpbmF0b3IgbmFtZSkKLSAgICAiIiIKLSAgICBleHRlcm5hbF9vcmlnaW4gPSB2bnNfb3JpZ2luX2V4dGVybmFsKGRhdGEpCi0gICAgaWYgZXh0ZXJuYWxfb3JpZ2luOgotICAgICAgICBjb25maXJtID0gY29tbWFuZC5hY3Rpb25fcmVnaXN0cnlbJ2NvbmZpcm0nXVswXSAjIFhYWCBhY2Nlc3Nvcj8KLSAgICAgICAgY29uZmlybSgndm5zICVzIG1heSBub3QgYmUgaW50ZW5kZWQgZm9yIGNsaSBkZWxldGUsICcKLSAgICAgICAgICAgICAgICAnb3JpZ2luL2NyZWF0b3IgIiVzIlxuRW50ZXIgeSBvciB5ZXMgdG8gY29udGludWUgZGVsZXRlOiAnCi0gICAgICAgICAgICAgICAgJSAoZGF0YVsnaWQnXSwgZXh0ZXJuYWxfb3JpZ2luKSkKLQotY29tbWFuZC5hZGRfYWN0aW9uKCd2bnMtY29uZmlybS1leHRlcm5hbC1kZWxldGUnLCB2bnNfY29uZmlybV9leHRlcm5hbF9kZWxldGUsCi0gICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyAgICAgIDogJyRkYXRhJyx9fSkKLQotY29tbWFuZC5hZGRfYWN0aW9uKCd2bnMtY29uZmlybS1leHRlcm5hbC1kZWxldGUnLCB2bnNfY29uZmlybV9leHRlcm5hbF9kZWxldGUsCi0gICAgICAgICAgICAgICAgICAgIHsna3dhcmdzJzogeydkYXRhJyAgICAgIDogJyRkYXRhJyx9fSkKLScnJwotIiIiCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgdm5zLWRlZmluaXRpb24gc3VibW9kZSBjb21tYW5kcwotIwotCi0jIG5vdGljZSB0aGUgc3VibW9kZSBpcyBjYWxsZWQgJ2NvbmZpZy1kZWYtdm5zJywgdGhpcyB3YXMKLSMgY2hhbmdlZCBmcm9tICdjb25maWctdm5zLWRlZicgc28gdGhhdCB0aGUgdm5zIHN1Ym1vZGUsCi0jIHdoaWNoIGlzIGNhbGxlZCAnY29uZmlnLXZucycsIHdvdWxkbid0IGJlIGEgc3RyaW5nLXByZWZpeAotIyBzdWJtb2RlIG9mIGNvbmZpZy12bnMuICBWYXJpb3VzIGNvbW1hbmQsIHN1Y2ggYXMgdGhlIAotIyB2bnMtc3VibW9kZSBhY2Nlc3MtbGlzdCBjb21tYW5kIHdlcmUgc2hvd2luZyB1cCBpbiB0aGUKLSMgdm5zLWRlZmluaXRpb24gc3VibW9kZSBkdWUgdG8gdGhpcyBwcmVmaXhpbmcuCi0KLVZOU19ERUZJTklUSU9OX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAndm5zLWRlZmluaXRpb24nLAotICAgICdoZWxwJyAgICAgICAgIDogJ0VudGVyIFZOUyBkZWZpbml0aW9uIHN1Ym1vZGUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZyonLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1zdWJtb2RlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2bnMtZGVmaW5pdGlvbicsCi0gICAgJ3N1Ym1vZGUtbmFtZScgOiAnY29uZmlnLXRlbmFudC1kZWYtdm5zJywKLSAgICAnZmVhdHVyZScgICAgICA6ICd2bnMnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0VudGVyIFZOUyBkZWZpbml0aW9uIHN1Ym1vZGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtZGVmaW5pdGlvbicsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHZucy1kZWZpbml0aW9uLWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAndm5zbmFtZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyA6IFsnY29tcGxldGUtdGVuYW50bmFtZS1wcmVwcm9jZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtb2JqZWN0LWZpZWxkJ10sCi0gICAgICAgICAgICAnb3RoZXInICAgICAgOiAndm5zLWRlZmluaXRpb258dm5zbmFtZScsCi0jICAgICAgICAgICAgJ3Njb3BlZCcgICAgIDogJ3RlbmFudCcsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnICA6ICdFbnRlciBhIHZucyBuYW1lJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtaWQnLAotICAgICAgICAgICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHZucy1pZC1leGFtcGxlJywKLSAgICAgICAgICAgICdkb2MtaW5jbHVkZScgIDogWyAndHlwZS1kb2MnIF0sCi0gICAgICAgICAgICAnYWN0aW9uJyAgICAgICA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICd2bnMtd2Fybi1leHRlcm5hbC1jb25maWcnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICdwcm9jJyAgOiAndGVuYW50LXNob3ctcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICdwdXNoLW1vZGUtc3RhY2snLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgJ25vLWFjdGlvbicgICAgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAndm5zLWNvbmZpcm0tZXh0ZXJuYWwtZGVsZXRlJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAncHJvYycgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAnZGVsZXRlLW9iamVjdHMnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApCi0gICAgICAgIH0KLSAgICApLAotfQotCi12bnNfc2hvd19hY3Rpb24gPSAoCi0gICAgewotICAgICAgICAncHJvYycgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnLAotICAgICB9LAotICAgIHsKLSAgICAgICAgJ3Byb2MnICA6ICdxdWVyeS10YWJsZScsCi0gICAgfSwKLSAgIHsKLSAgICAgICAgJ3Byb2MnICAgOiAnZGlzcGxheScsCi0gICAgICAgICdmb3JtYXQnIDogJ3Zucy1kZWZpbml0aW9uJywKLSAgICB9LAotKQotCi1WTlNfU0hPV19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnYWxsLWhlbHAnICAgICA6ICdTaG93IFZOUyBkZXRhaWxzJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IGFsbCBkZWZpbmVkIFZOU3MgYmVsb25nIHRvIGN1cnJlbnQgdGVuYW50JywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2bnMtZGVmaW5pdGlvbicsCi0gICAgJ2FjdGlvbicgICAgICAgOiB2bnNfc2hvd19hY3Rpb24sCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfHNob3cnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xzaG93LWV4YW1wbGUnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAndm5zJywKLSAgICApLAotfQotVk5TX1NIT1dfSURfQ09NTUFORF9ERVNDUklQVElPTiA9IHsgICAgICAgCi0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ29iai10eXBlJyAgICAgOiAndm5zLWRlZmluaXRpb24nLAotICAgICdtb2RlJyAgICAgICAgIDogJ2xvZ2luJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnYWN0aW9uJyAgICAgICA6IHZuc19zaG93X2FjdGlvbiwKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTaG93IHNwZWNpZmljIFZOUywgaWRlbnRpZmllZCBieSBuYW1lJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8c2hvdy1pZCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHNob3ctaWQtZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICd2bnMnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAndm5zbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdpZGVudGlmaWVyJywKLSMgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgOiBbJ2NvbXBsZXRlLXRlbmFudG5hbWUtcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtZnJvbS1hbm90aGVyJ10sCi0gICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICA6ICd2bnMtZGVmaW5pdGlvbnx2bnNuYW1lJywKLSAgICAgICAgICAgICAgICAgICAgJ3Njb3BlZCcgICAgIDogJ3RlbmFudCcsCi0gICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICA6ICJ2bnMtaWQiLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICA6ICd2bnNuYW1lJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgIDogJ2FsbCcsCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdkZXRhaWwnLAotICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAndHlwZScgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICA6ICgnZGV0YWlscycsICdicmllZicpLAotICAgICAgICAgICAgJ2RvYycgICAgICA6ICdmb3JtYXR8KycsCi0gICAgICAgIH0KLSAgICApCi19Ci0KLVZOU19TSE9XX0lEX0RFVEFJTFNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2bnMtZGVmaW5pdGlvbicsCi0gICAgJ21vZGUnICAgICAgICAgOiAnbG9naW4nLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2Rpc3BsYXktdGFibGUnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgVk5TIGFzc29jaWF0ZWQgZGV0YWlscyBiYXNlZCBvbiBuYW1lJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8c2hvdy1pZCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHNob3ctaWQtZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgICd2bnMnLAotICAgICAgICB7Ci0gICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAndm5zbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nIDogWydjb21wbGV0ZS10ZW5hbnRuYW1lLXByZXByb2Nlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRlLWZyb20tYW5vdGhlciddLAotICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgOiAndm5zLWRlZmluaXRpb258dm5zbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICdzY29wZWQnICAgICA6ICd0ZW5hbnQnLAotICAgICAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgOiAidm5zLWlkIiwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAndm5zbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICA6ICdhbGwnLAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICksCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICd2bnMtaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnaW50ZXJmYWNlcycsCi0gICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICd2bnMtaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogKHsncHJvYycgICA6ICd0ZW5hbnQtc2hvdy1wcmVwcm9jZXNzJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGVnYWN5LWNsaScpLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnU2hvdyBWTlMgYXNzb2NpYXRlZCBpbnRlcmZhY2VzJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ21hYy1hZGRyZXNzLXRhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnbWFjLWFkZHJlc3MtdGFibGUnLAotICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAnaG9zdC12bnMtaW50ZXJmYWNlLXZucycsCi0gICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICh7J3Byb2MnICAgOiAndGVuYW50LXNob3ctcHJlcHJvY2Vzcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZ2FjeS1jbGknKSwKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgVk5TIGFzc29jaWF0ZWQgbWFjIGFkZHJlc3NlcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdpbnRlcmZhY2UtcnVsZXMnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdpbnRlcmZhY2UtcnVsZXMnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAoeydwcm9jJyAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5LXRhYmxlJyksCi0gICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICd2bnMtaW50ZXJmYWNlLXJ1bGUnLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnU2hvdyBWTlMgY29uZmlndXJlZCBpbnRlcmZhY2VzLXJ1bGVzJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3Zuc3xzaG93LWlkLWludGVyZmFjZS1ydWxlcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdhY2Nlc3MtbGlzdHMnLAotICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdhY2Nlc3MtbGlzdHMnLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAoeydwcm9jJyAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5LXRhYmxlJyksCi0gICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICd2bnMtYWNjZXNzLWxpc3QtZW50cnknLAotICAgICAgICAgICAgICAgICAgICAnZGV0YWlsJyAgICAgOiAnYWNsLWJyaWVmJywKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ1Nob3cgVk5TIGNvbmZpZ3VyZWQgYWNjZXNzLWxpc3RzJywKLSAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3Zuc3xzaG93LWlkLWFjY2Vzcy1saXN0cycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdydW5uaW5nLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ3J1bm5pbmctY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbicgICAgIDogKHsncHJvYycgICA6ICd0ZW5hbnQtc2hvdy1wcmVwcm9jZXNzJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGVnYWN5LWNsaScpLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnU2hvdyBWTlMgcnVubmluZy1jb25maWcnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ3N3aXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICdhY3Rpb24nICAgICA6ICh7J3Byb2MnICAgOiAndGVuYW50LXNob3ctcHJlcHJvY2Vzcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZ2FjeS1jbGknKSwKLSAgICAgICAgICAgICAgICAgICAgJ29iai10eXBlJyAgIDogJ3Zucy1zd2l0Y2gtcG9ydHMnLAotICAgICAgICAgICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnU2hvdyBWTlMgYXNzb2NpYXRlZCBzd2l0Y2hlcycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdsZWdhY3ktY2xpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdmbG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvYmotdHlwZScgICA6ICd2bnMtZmxvdycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgOiAoeydwcm9jJyAgIDogJ3RlbmFudC1zaG93LXByZXByb2Nlc3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZ2FjeS1jbGknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdTaG93IFZOUyBhc3NvY2lhdGVkIGZsb3dzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICA6ICd2bnN8c2hvdy1pZC1mbG93JywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ2RldGFpbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyAgICAgOiAoJ2JyaWVmJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnVsbC1kZXRhaWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXRhaWxzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VtbWFyeScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydC1oZWxwJyA6ICdEZXRhaWwgbGV2ZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ2Zvcm1hdHwrJwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotICAgICAgICB9Ci0gICAgKSwKLX0KLQotSE9TVF9WTlNfSU5URVJGQUNFX1ZOU19GT1JNQVQgPSB7Ci0gICAgJ2hvc3Qtdm5zLWludGVyZmFjZS12bnMnIDogeyAjIHdpdGggdm5zIGtub3csIG5vIHZucyBjb2x1bW4KLSAgICAgICAgJ3NvdXJjZScgICAgICAgICAgOiAnb25seSBkaXNwbGF5JywKLQotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgICA6IFsgJ0lkeCcsICd0ZW5hbnQnLCAndm5zJywgJ2FkZHJlc3Mtc3BhY2UnLCAnaG9zdCcsICd2bGFuJywgJ2lwcycsICdhdHRhY2htZW50LXBvaW50cycsICdsYXN0LXNlZW4nIF0sCi0gICAgICAgICAgICAndm5zJyAgICAgICAgOiBbICdJZHgnLCAgICAgICAgJ2FkZHJlc3Mtc3BhY2UnLCAnaG9zdCcsICd2bGFuJywgJ2lwcycsICdhdHRhY2htZW50LXBvaW50cycsICdsYXN0LXNlZW4nIF0sCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgICdJZHgnICAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJyMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaG9zdCcgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdNQUMgQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9ob3N0X2FuZF9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FkZHJlc3Mtc3BhY2UnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdBZGRyZXNzIFNwYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ZsYW4nICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdWTEFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2lwcycgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnSVAgQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9pcF9hZGRyZXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW50cnlfZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9hbGxfaXBfYWRkcmVzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYXR0YWNobWVudC1wb2ludHMnIDogeyAndmVyYm9zZS1uYW1lJyA6ICdBdHRhY2htZW50IFBvaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X2hvc3RfYXR0YWNobWVudF9wb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnRyeV9mb3JtYXR0ZXInIDogZm10Y252LnByaW50X2FsbF9ob3N0X2F0dGFjaG1lbnRfcG9pbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbGFzdC1zZWVuJyAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdMYXN0IFNlZW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfdGltZV9zaW5jZV91dGMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RlbmFudCcgICAgICAgICAgICA6IHsndmVyYm9zZS1uYW1lJyA6ICdUZW5hbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLQotCi1WTlNfREVGX0RFU0NSSVBUSU9OX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnZGVzY3JpcHRpb24nLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtZGVmLXZucycsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdQcm92aWRlIGRlc2NyaXB0aW9uIGZvciBhIFZOUyBpbnN0YW5jZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfGRlc2NyaXB0aW9uJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd2bnN8ZGVzY3JpcHRpb24tZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgOiAnZGVzY3JpcHRpb24nLAotICAgICAgICAgICAgJ3R5cGUnICA6ICdzdHJpbmcnLAotICAgICAgICB9Ci0gICAgKSwKLX0KLQotCi1WTlNfREVGX0FDVElWRV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgOiAnYWN0aXZlJywKLSAgICAnbW9kZScgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtZGVmLXZucycsCi0gICAgJ3Nob3J0LWhlbHAnICA6ICdTZXQgdm5zIGFjdGl2ZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfGFjdGl2ZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfGFjdGl2ZS1leGFtcGxlJywKLSAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ2RlZmF1bHQnIF0sCi0gICAgJ2FyZ3MnIDogKCksCi0gICAgJ2FjdGlvbicgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyA6ICd3cml0ZS1maWVsZHMnLAotICAgICAgICAgICAgJ2RhdGEnIDogeyAnYWN0aXZlJyA6IFRydWUgfSwKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgOiAnbWFyayB0aGUgdm5zIGFzIGFjdGl2ZScsCi0gICAgICAgIH0KLSAgICApLAotICAgICduby1hY3Rpb24nIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgOiAnd3JpdGUtZmllbGRzJywKLSAgICAgICAgICAgICdkYXRhJyA6IHsgJ2FjdGl2ZScgOiBGYWxzZSB9LAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdtYXJrIHRoZSB2bnMgYXMgaW5hY3RpdmUnLAotICAgICAgICB9Ci0gICAgKQotfQotCi1WTlNfREVGX09SSUdJTl9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ29yaWdpbicsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC1kZWYtdm5zJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0Rlc2NyaWJlIHZucyBvcmlnaW4nLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xvcmlnaW4nLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xvcmlnaW4tZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICA6ICdvcmlnaW4nLAotICAgICAgICAgICAgJ3R5cGUnICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdhY3Rpb24nIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Byb2MnIDogJ3Zucy13YXJuLWV4dGVybmFsLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICd3cml0ZS1maWVsZHMnLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICksCi19Ci0KLVZOU19ERUZfVVNFX0FERFJFU1NfU1BBQ0VfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICd1c2UnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0Fzc29jaWF0ZSBhZGRyZXNzIHNwYWNlJywKLSAgICAnYWxsLWhlbHAnICAgICA6ICdBc3NvY2lhdGUgVk5TIHdpdGggb3RoZXIgb2JqZWN0cycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC1kZWYtdm5zJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdvYmotdHlwZScgICAgIDogJ3Zucy1kZWZpbml0aW9uJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dXNlLWFkZHJlc3Mtc3BhY2UnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3x1c2UtYWRkcmVzcy1zcGFjZS1leGFtcGxlJywKLSAgICAnZG9jLWluY2x1ZGUnICA6ICdkZWZhdWx0JywgCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICAnYWRkcmVzcy1zcGFjZScsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2FkZHJlc3Mtc3BhY2UnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICAgICA6IFsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgJ290aGVyJyAgICAgICAgICAgOiAnYWRkcmVzcy1zcGFjZScsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnICAgICA6ICdFbnRlciBhc3NvY2lhdGVkIGFkZHJlc3Mtc3BhY2UgbmFtZScsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IEZhbHNlLAotICAgICAgICAgICAgJ21hdGNoLWZvci1ubycgICAgOiAnYWRkcmVzcy1zcGFjZScsCi0gICAgICAgIH0KLSAgICApCi19Ci0KLVZOU19ERUZfQVJQX01PREVfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdhcnAtbW9kZScsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnQ29uZmlndXJlIGFycCBtb2RlJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8YXJwLW1vZGUnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xhcnAtbW9kZS1leGFtcGxlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctdGVuYW50LWRlZi12bnMnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ2RvYy1pbmNsdWRlJyAgOiBbICdkZWZhdWx0JyBdLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgOiAnYXJwLW1vZGUnLAotICAgICAgICAgICAgJ3R5cGUnICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyA6ICgnYWx3YXlzLWZsb29kJywgJ2Zsb29kLWlmLXVua25vd24nLCAnZHJvcC1pZi11bmtub3duJyksCi0gICAgICAgICAgICAnZG9jJyAgICA6ICd2bnN8YXJwLW1vZGUtdmFsdWUtKycsCi0gICAgICAgIH0KLSAgICApLAotfQotCi1WTlNfREVGX0JST0FEQ0FTVF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ2Jyb2FkY2FzdCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC1kZWYtdm5zJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0NvbmZpZ3VyZSBicm9hZGNhc3QgbW9kZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfGJyb2FkY2FzdCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfGJyb2FkY2FzdC1leGFtcGxlJywKLSAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ2RlZmF1bHQnIF0sCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICA6ICdicm9hZGNhc3QnLAotICAgICAgICAgICAgJ3R5cGUnICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyA6ICgnYWx3YXlzLWZsb29kJywgJ2ZvcndhcmQtdG8ta25vd24nLCAnZHJvcCcpLAotICAgICAgICAgICAgJ2RvYycgICAgOiAndm5zfGJyb2FkY2FzdC12YWx1ZS0rJywKLSAgICAgICAgfQotICAgICksCi19Ci0KLVZOU19ERUZfREhDUF9JUF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ2RoY3AtaXAnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtZGVmLXZucycsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdDb25maWd1cmUgZGhjcCBpcCBhZGRyZXNzJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8ZGhjcC1pcCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfGRoY3AtaXAtZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICA6ICdkaGNwLWlwJywKLSAgICAgICAgICAgICd0eXBlJyAgIDogJ2lwLWFkZHJlc3MnLAotICAgICAgICAgICAgJ3N5bnRheC1oZWxwJyA6ICdFbnRlciBhbiBJUCBBZGRyZXNzJywKLSAgICAgICAgfQotICAgICksCi19Ci0KLVZOU19ERUZfREhDUF9NT0RFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnZGhjcC1tb2RlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctdGVuYW50LWRlZi12bnMnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnU2V0IGRoY3AgbW9kZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfGRoY3AtbW9kZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfGRoY3AtbW9kZS1leGFtcGxlJywKLSAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ2RlZmF1bHQnIF0sCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICA6ICdkaGNwLW1vZGUnLAotICAgICAgICAgICAgJ3R5cGUnICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyA6ICgnYWx3YXlzLWZsb29kJywgJ2Zsb29kLWlmLXVua25vd24nLCAnc3RhdGljJyksCi0gICAgICAgICAgICAnZG9jJyAgICA6ICd2bnN8ZGhjcC12YWx1ZS0rJywKLSAgICAgICAgfQotICAgICksCi19Ci0KLVZOU19JTlRFUkZBQ0VfUlVMRV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ2ludGVyZmFjZS1ydWxlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctdGVuYW50LWRlZi12bnMqJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWctc3VibW9kZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAndm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAncGFyZW50LWZpZWxkJyA6ICd2bnMnLAotICAgICdzdWJtb2RlLW5hbWUnIDogJ2NvbmZpZy10ZW5hbnQtZGVmLXZucy1pZi1ydWxlJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdFbnRlciBpbnRlcmZhY2UtcnVsZSBzdWJtb2RlLCBjb25maWd1cmUgdm5zIGRldGFpbHMnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfGludGVyZmFjZS1ydWxlLWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAncnVsZScsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICdzeW50YXgtaGVscCcgIDogJ0VudGVyIGEgdm5zIGludGVyZmFjZSBydWxlIG5hbWUnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdzY29wZWQnICAgICAgIDogVHJ1ZSwKLSAgICAgICAgfQotICAgICkKLX0KLQotVk5TX1BSSU9SSVRZX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAncHJpb3JpdHknLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtZGVmLXZucycsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTZXQgdm5zIHByaW9yaXR5JywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8cHJpb3JpdHknLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xwcmlvcml0eS1leGFtcGxlJywKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgIDogJ3ByaW9yaXR5JywKLSAgICAgICAgICAgICdiYXNlLXR5cGUnIDogJ2ludGVnZXInLAotICAgICAgICAgICAgJ3JhbmdlJyAgICAgOiAoMCwgNjU1MzUpLAotICAgICAgICB9Ci0gICAgKQotfQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgdm5zLWRlZi1pZiBzdWJtb2RlIGNvbW1hbmRzCi0jICAodm5zIGRlZmluaXRpb24gaW50ZXJmYWNlIHJ1bGVzIHN1Ym1vZGUpCi0jCi0KLVZOU19ERUZfSUZfQUNUSVZFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnYWN0aXZlJywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctdGVuYW50LWRlZi12bnMtaWYtcnVsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTZXQgcnVsZSB0byBBY3RpdmUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZS1hY3RpdmUnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZS1hY3RpdmUtZXhhbXBsZScsCi0gICAgJ2RvYy1pbmxjdWRlJyAgOiBbICdkZWZhdWx0JyBdLAotICAgICdhcmdzJyAgICAgICAgIDogKCksCi0gICAgJ2FjdGlvbicgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyA6ICd3cml0ZS1maWVsZHMnLAotICAgICAgICAgICAgJ2RhdGEnIDogeyAnYWN0aXZlJyA6IFRydWUgfQotICAgICAgICB9Ci0gICAgKSwKLSAgICAnbm8tYWN0aW9uJyAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnIDogJ3dyaXRlLWZpZWxkcycsCi0gICAgICAgICAgICAnZGF0YScgOiB7ICdhY3RpdmUnIDogRmFsc2UgfQotICAgICAgICB9Ci0gICAgKQotfQotCi1WTlNfREVGX0lGX0FMTE9XX01VTFRJUExFX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnYWxsb3ctbXVsdGlwbGUnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtZGVmLXZucy1pZi1ydWxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0VuYWJsZSBtdWx0aXBsZSBpbnRlcmZhY2UgcnVsZSBtYXRjaGVzJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8aW50ZXJmYWNlLXJ1bGUtYWxsb3ctbXVsdGlwbGUnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZS1hbGxvdy1tdWx0aXBsZS1leGFtcGxlJywKLSAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ2RlZmF1bHQnIF0sCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoKSwKLSAgICAnYWN0aW9uJyAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnIDogJ3dyaXRlLWZpZWxkcycsCi0gICAgICAgICAgICAnZGF0YScgOiB7ICdhbGxvdy1tdWx0aXBsZScgOiBUcnVlIH0KLSAgICAgICAgfQotICAgICksCi0gICAgJ25vLWFjdGlvbicgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyAgIDogJ3Jlc2V0LWZpZWxkcycsCi0gICAgICAgICAgICAnZmllbGRzJyA6IFsgJ2FsbG93LW11bHRpcGxlJyBdCi0gICAgICAgIH0KLSAgICApCi19Ci0KLSMKLSMgWFhYIHZsYW4tdGFnLW9uLWVncmVzcyByZXF1aXJlZCBpbiBmdXR1cmUgcmVsZWFzZXMgd2hlbiBtdWx0aXBsZSB2bGFucwotIyB0YWdnaW5nIGFyZSBzdXBwb3J0ZWQgaW4gdm5zIGVncmVzcy4KLSMKLSNWTlNfREVGX0lGX1ZMQU5fVEFHX09OX0VHUkVTU19UTVBfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSMgICAgJ25hbWUnICAgICAgICAgOiAndmxhbi10YWctb24tZWdyZXNzJywKLSMgICAgJ3Nob3J0LWhlbHAnICAgOiAnRW5hYmxlIHZsYW4gdGFnZ2luZyBvbiBlZ3Jlc3MnLAotIyAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctZGVmLXZucy1pZi1ydWxlJywKLSMgICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSMgICAgJ2FyZ3MnICAgICAgICAgOiAoKSwKLSMgICAgJ2FjdGlvbicgICAgICAgOiAoCi0jICAgICAgICB7Ci0jICAgICAgICAgICAgJ3Byb2MnIDogJ3dyaXRlLWZpZWxkcycsCi0jICAgICAgICAgICAgJ2RhdGEnIDogeyAndmxhbi10YWctb24tZWdyZXNzJyA6IFRydWUgfQotIyAgICAgICAgfQotIyAgICApLAotIyAgICAnbm8tYWN0aW9uJyAgICA6ICgKLSMgICAgICAgIHsKLSMgICAgICAgICAgICAncHJvYycgICA6ICdyZXNldC1maWVsZHMnLAotIyAgICAgICAgICAgICdmaWVsZHMnIDogWyAndmxhbi10YWctb24tZWdyZXNzJyBdCi0jICAgICAgICB9Ci0jICAgICkKLSMgfQotCi1WTlNfREVGX0lGX0RFU0NSSVBUSU9OX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnZGVzY3JpcHRpb24nLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtZGVmLXZucy1pZi1ydWxlJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdQcm92aWRlIGRlc2NyaXB0aW9uIGZvciBpbnRlcmZhY2UgcnVsZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfGludGVyZmFjZS1ydWxlLWRlc2NyaXB0aW9uJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd2bnN8aW50ZXJmYWNlLXJ1bGUtZGVzY3JpcHRpb24tZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyA6ICdkZXNjcmlwdGlvbicsCi0gICAgICAgICAgICAndHlwZScgIDogJ3N0cmluZycsCi0gICAgICAgIH0KLSAgICApLAotfQotCi1WTlNfREVGX0lGX1BSSU9SSVRZX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAncHJpb3JpdHknLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtZGVmLXZucy1pZi1ydWxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0Rlc2NyaWJlIHByaW9yaXR5IGZvciBpbnRlcmZhY2UgcnVsZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfGludGVyZmFjZS1ydWxlLXByaW9yaXR5JywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd2bnN8aW50ZXJmYWNlLXJ1bGUtcHJpb3JpdHktZXhhbXBsZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgOiAncHJpb3JpdHknLAotICAgICAgICAgICAgJ3ZhbHVlJyA6ICdpbnRlZ2VyJywKLSAgICAgICAgfQotICAgICksCi19Ci0KLQotVk5TX0RFRl9JRl9NQVRDSF9NQUNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdtYXRjaCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC1kZWYtdm5zLWlmLXJ1bGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnQXNzb2NpYXRlIG1hYyAoaG9zdCkgd2l0aCBpbnRlcmZhY2UgcnVsZScsCi0gICAgJ2FsbC1oZWxwJyAgICAgOiAnQ29uZmlndXJlIGEgbWF0Y2ggZm9yIHRoaXMgaW50ZXJmYWNlIHJ1bGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZS1tYXRjaC1tYWMnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZS1tYXRjaC1tYWMtZXhhbXBsZScsCi0gICAgJ2RvYy1hbGwnICAgICAgOiAnYWRkcmVzcy1zcGFjZXxtYXRjaCcsCi0gICAgJ2RhdGEnICAgICAgICAgOiB7ICdtYWMnIDogTm9uZSB9LCAjIGZvciBubyBjb21tYW5kIHJlc2V0Ci0gICAgJ29iai10eXBlJyAgICAgOiAndm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgICAgICAgOiAnbWFjJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnbWFjJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2hvc3QnLAotICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgICAgOiAnaG9zdCBtYWMgb3IgYWxpYXMnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgICAgOiBbJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdzY29wZWQnICAgICAgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICdkYXRhLWhhbmRsZXInICAgIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgICAgIDogJ2hvc3QnLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAndm5zfGludGVyZmFjZS1ydWxlLW1hdGNoLW1hYy1maWVsZCcsCi0gICAgICAgIH0KLSAgICApLAotfQotCi0KLVZOU19ERUZfSUZfTUFUQ0hfSVBfU1VCTkVUX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnbWF0Y2gnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtZGVmLXZucy1pZi1ydWxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0Fzc29jaWF0ZSBpcC1zdWJuZXQgKGlwIG9yIGNpZHIgcmFuZ2UpIGZvciBpbnRlcmZhY2UgcnVsZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfGludGVyZmFjZS1ydWxlLW1hdGNoLWlwLXN1Ym5ldCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfGludGVyZmFjZS1ydWxlLW1hdGNoLWlwLXN1Ym5ldC1leGFtcGxlJywKLSAgICAnZGF0YScgICAgICAgICA6IHsgJ2lwLXN1Ym5ldCcgOiBOb25lIH0sICMgZm9yIG5vIGNvbW1hbmQgcmVzZXQKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgICAgICAgOiAnaXAtc3VibmV0JywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnaXAtc3VibmV0JywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ2NpZHItcmFuZ2UnLAotICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgICAgOiAnaXAgYWRkcmVzcyAoMTAuMTAuMTAuMTApLCBvciBjaWRyICgxMC4yMC4zMC4wLzI0KScsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgICAgICA6ICd2bnN8aW50ZXJmYWNlLXJ1bGUtbWF0Y2gtaXAtc3VibmV0LWZpZWxkJywKLSAgICAgICAgfQotICAgICksCi19Ci0KLQotVk5TX0RFRl9JRl9NQVRDSF9TV0lUQ0hfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdtYXRjaCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC1kZWYtdm5zLWlmLXJ1bGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ29iai10eXBlJyAgICAgOiAndm5zLWludGVyZmFjZS1ydWxlJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdBc3NvY2lhdGUgc3dpdGNoIHdpdGggaW50ZXJmYWNlIHJ1bGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZS1tYXRjaC1zd2l0Y2gnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZS1tYXRjaC1zd2l0Y2gtZXhhbXBsZScsCi0gICAgJ2RhdGEnICAgICAgICAgOiB7ICMgZm9yIG5vIGNvbW1hbmQgcmVzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAncG9ydHMnICA6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICB9LAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICAgICAgICA6ICdzd2l0Y2gnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAjIGNvbnN0cnVjdGVkIGFzIGFyZ3MgdG8gZW5zdXJlIHRoYXQgdGhlIHBvcnRzIGlzbid0Ci0gICAgICAgICAgICAjIGNvbXBsZXRlZCBhbG9uZyB3aXRoIHN3dGljaCB2YWx1ZXMgZm9yICdubyBtYXRjaCBzd2l0Y2gnIAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgJ2FyZ3MnIDogKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnc3dpdGNoJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgJ3BhcmVudC1maWVsZCcgICAgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbicgICAgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRlLWFsaWFzLWNob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgICAgOiAnc3dpdGNoIGRwaWQgb3Igc3dpdGNoIGFsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgICAgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICAgICA6ICdzd2l0Y2hlc3xkcGlkJywKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAncG9ydHMnLAotICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnICAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICdoZWxwLW5hbWUnICAgICAgIDogJ3N3aXRjaCBpbnRlcmZhY2UsIG9yIHJhbmdlLCBvciBsaXN0JywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgICAgOiAnY29tcGxldGUtaW50ZXJmYWNlLWxpc3QnLAotICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyAgICA6ICd3YXJuLW1pc3NpbmctaW50ZXJmYWNlJywKLSAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICApLAotICAgICAgICB9LAotICAgICksCi19Ci0KLQotVk5TX0RFRl9JRl9NQVRDSF9UQUdTX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnbWF0Y2gnLAotICAgICdtb2RlJyAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtZGVmLXZucy1pZi1ydWxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0Fzc29jaWF0ZSB0YWdzIHdpdGggaW50ZXJmYWNlIHJ1bGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZS1tYXRjaC10YWcnLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZS1tYXRjaC10YWctZXhhbXBsZScsCi0gICAgJ2RhdGEnICAgICAgICAgOiB7ICMgZm9yIG5vIGNvbW1hbmQgcmVzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgJ3RhZ3MnIDogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICAgICAgICA6ICd0YWdzJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAndGFncycsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICAgIDogJ3N0cmluZycsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgIH0KLSAgICApLAotfQotCi0jIFJlbW92ZSBtYXRjaCB2bGFuIGNvbW1hbmQgdGVtcG9yYXJpbHkgb24gZ3JlZ29yJ3MgcmVxdXJlcwotIyB0aGUgcnVubmluZyBjb25maWcgY2FuIHN0aWxsIGdlbmVyYXRlIHRoZXNlIGNvbW1hbmRzLCBidXQKLSMgdGhleSB3b24ndCBnZXQgcmVhZCBjb3JyZWN0bHkKLVZOU19ERUZfSUZfTUFUQ0hfVkxBTlNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdtYXRjaCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC1kZWYtdm5zLWlmLXJ1bGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ3Nob3J0LWhlbHAnICAgOiAnQXNzb2NpYXRlIHZsYW5zIHdpdGggaW50ZXJmYWNlIHJ1bGUnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3xpbnRlcmZhY2UtcnVsZS1tYXRjaC12bGFucycsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfGludGVyZmFjZS1ydWxlLW1hdGNoLXZsYW5zLWV4YW1wbGUnLAotICAgICdkYXRhJyAgICAgICAgIDogeyAjIGZvciBubyBjb21tYW5kIHJlc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICd2bGFucycgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAnYXJncycgICAgICAgICA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rva2VuJyAgICAgICAgOiAndmxhbnMnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICd2bGFucycsCi0gICAgICAgICAgICAndmFsdWUnICAgICAgICAgICA6ICdzdHJpbmcnLAotICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgICAgOiAnVmxhbiBudW1iZXIgKDAtNDA5Nikgb3IgcmFuZ2UsIG9yIGxpc3QnLAotICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICB9Ci0gICAgKSwgICAgCi19Ci0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyB2bnMgc3VibW9kZSBjb21tYW5kcwotIwotCi0KLVZOU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICd2bnMnLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdFbnRlciBWTlMgc3VibW9kZSwgbWFuYWdlIGFjY2VzcyBsaXN0cycsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2NvbmZpZyonLAotICAgICdmZWF0dXJlJyAgICAgICAgICAgICA6ICd2bnMnLAotICAgICduby1zdXBwb3J0ZWQnICAgICAgICA6IEZhbHNlLAotICAgICdjb21tYW5kLXR5cGUnICAgICAgICA6ICdjb25maWctc3VibW9kZScsCi0gICAgJ29iai10eXBlJyAgICAgICAgICAgIDogJ3Zucy1kZWZpbml0aW9uJywKLSAgICAnc3VibW9kZS1uYW1lJyAgICAgICAgOiAnY29uZmlnLXRlbmFudC12bnMnLAotICAgICdzeW50YXgtaGVscCcgICAgICAgICA6ICdFbnRlciBhIHZucyBuYW1lJywKLSAgICAnY3JlYXRlJyAgICAgICAgICAgICAgOiBGYWxzZSwKLSAgICAnZG9jJyAgICAgICAgICAgICAgICAgOiAndm5zfHZucycsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ3Zuc3x2bnMtZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICd2bnNuYW1lJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2lkZW50aWZpZXInLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiBbJ2NvbXBsZXRlLXRlbmFudG5hbWUtcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGUtZnJvbS1hbm90aGVyJ10sCi0gICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICd2bnMtZGVmaW5pdGlvbnx2bnNuYW1lJywKLSAgICAgICAgICAgICdzY29wZWQnICAgICAgIDogJ3RlbmFudCcsCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnICA6ICdFbnRlciBhIHZucyBuYW1lJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtaWQnLAotICAgICAgICAgICAgJ2RvYy1pbmNsdWRlJyAgOiBbICd0eXBlLWRvYycgXSwKLSAgICAgICAgICAgICdhY3Rpb24nICAgICAgIDogKCAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgOiAndGVuYW50LXNob3ctcHJlcHJvY2VzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgOiAncHVzaC1tb2RlLXN0YWNrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0KLSAgICAgICAgfQotICAgICkKLX0KLQotVk5TX0lOVEVSRkFDRV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgICAgICAgICA6ICdpbnRlcmZhY2UnLAotICAgICdzaG9ydC1oZWxwJyAgICAgICAgICA6ICdFbnRlciBWTlMtaWYgc3VibW9kZScsCi0gICAgJ21vZGUnICAgICAgICAgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtdm5zKicsCi0gICAgJ2NvbW1hbmQtdHlwZScgICAgICAgIDogJ2NvbmZpZy1zdWJtb2RlJywKLSAgICAnb2JqLXR5cGUnICAgICAgICAgICAgOiAndm5zLWludGVyZmFjZS1jb25maWcnLAotICAgICdwYXJlbnQtZmllbGQnICAgICAgICA6ICd2bnMnLAotICAgICdjdXJyZW50LW1vZGUtb2JqLWlkJyA6ICd2bnMtZGVmaW5pdGlvbicsCi0gICAgJ3N1Ym1vZGUtbmFtZScgICAgICAgIDogJ2NvbmZpZy10ZW5hbnQtdm5zLWlmJywKLSAgICAnc3ludGF4LWhlbHAnICAgICAgICAgOiAnRW50ZXIgYW4gaW50ZXJmYWNlIG5hbWUnLAotICAgICdkb2MnICAgICAgICAgICAgICAgICA6ICd2bnN8dm5zLWludGVyZmFjZScsCi0gICAgJ2RvYy1leGFtcGxlJyAgICAgICAgIDogJ3Zuc3x2bnMtaW50ZXJmYWNlLWV4YW1wbGUnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnaW50ZXJmYWNlJywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLW9iamVjdC1maWVsZCcsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dm5zLWludGVyZmFjZS1maWVsZCcsCi0gICAgICAgIH0KLSAgICApCi19Ci0KLVZOU19BQ0NFU1NfR1JPVVBfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdhY2Nlc3MtZ3JvdXAnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ0Fzc29jaWF0ZSBpbnRlcmZhY2Ugd2l0aCBhY2Nlc3MtbGlzdCcsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC12bnMtaWYnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ29iai10eXBlJyAgICAgOiAndm5zLWludGVyZmFjZS1hY2Nlc3MtbGlzdCcsCi0gICAgJ3BhcmVudC1maWVsZCcgOiAndm5zLWludGVyZmFjZScsCi0gICAgIyAnY3VycmVudC1tb2RlLW9iai1pZCcgOiAndm5zLWRlZmluaXRpb24nLAotICAgICdzdWJtb2RlLW5hbWUnIDogJ2NvbmZpZy10ZW5hbnQtdm5zLWlmJywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1ncm91cCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHZucy1hY2Nlc3MtZ3JvdXAtZXhhbXBsZScsCi0gICAgJ2FyZ3MnIDogKAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICd2bnMtYWNjZXNzLWxpc3QnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnc3RyaW5nJywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgICAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAnb3RoZXInICAgICAgICAgICA6ICd2bnMtYWNjZXNzLWxpc3R8bmFtZScsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IEZhbHNlLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdpbi1vdXQnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICAgICAgICA6ICgnaW4nLCAnb3V0JyksCi0gICAgICAgICAgICAnc3ludGF4LWhlbHAnICAgICA6ICdhcHBseSBhY2Nlc3MtbGlzdCBpbiB0aGlzIGRpcmVjdGlvbicsCi0gICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IEZhbHNlLAotICAgICAgICAgICAgJ2RvYycgICAgICAgICAgICAgOiAndm5zfHZucy1hY2Nlc3MtZ3JvdXAtZGlyZWN0aW9uLSsnLAotICAgICAgICB9Ci0gICAgKSwKLSAgICAnYWN0aW9uJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnICAgICAgOiAnY29udmVydC12bnMtYWNjZXNzLWxpc3QnLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAncHJvYycgICAgICA6ICd3cml0ZS1vYmplY3QnLAotICAgICAgICB9LAotICAgICksCi0gICAgJ25vLWFjdGlvbicgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdwcm9jJyAgICAgIDogJ2NvbnZlcnQtdm5zLWFjY2Vzcy1saXN0JywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ3Byb2MnICAgICAgOiAnZGVsZXRlLW9iamVjdHMnLAotICAgICAgICB9LAotICAgICkKLX0KLQotU0hPV19WTlNfQUNDRVNTX0dST1VQX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC12bnMtaWYqJywKLSAgICAnYWN0aW9uJyAgICAgICA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnY29tbWFuZC10eXBlJyA6ICdkaXNwbGF5LXRhYmxlJywKLSAgICAnc2NvcGVkJyAgICAgICA6IFRydWUsICMgZGlzcGxheWVkIGVudHJpZXMgZmlsdGVyZWQgYnkgcHVzaGVkIG9iaiBpZAotICAgICdvYmotdHlwZScgICAgIDogJ3Zucy1pbnRlcmZhY2UtYWNjZXNzLWxpc3QnLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ3Nob3cgYWNjZXNzLWdyb3VwIGRldGFpbHMnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnYWNjZXNzLWdyb3VwJywKLSAgICApCi19Ci0KLQotU0hPV19WTlNfQUNDRVNTX0xJU1RfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdzaG93JywKLSAgICAnbW9kZScgICAgICAgICA6IFsnY29uZmlnLXRlbmFudC12bnMtKiddLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgVk5TIGFjY2VzcyBsaXN0cycsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAndm5zLWFjY2Vzcy1saXN0JywKLSAgICAnc2NvcGVkJyAgICAgICA6IFRydWUsICMgZGlzcGxheWVkIGVudHJpZXMgZmlsdGVyZWQgYnkgcHVzaGVkIG9iaiBpZAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnYWNjZXNzLWxpc3QnLAotICAgICkKLX0KLQotU0hPV19WTlNfSU5URVJGQUNFU19DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ3Nob3cnLAotICAgICdtb2RlJyAgICAgICAgIDogWydjb25maWctdGVuYW50LXZucycsICdjb25maWctdGVuYW50LXZucy1pZiddLAotICAgICdzaG9ydC1oZWxwJyAgIDogJ1Nob3cgVk5TIGFzc29jaWF0ZWQgaW50ZXJmYWNlcycsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfHZucy1zaG93LWludGVyZmFjZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAndm5zLWludGVyZmFjZScsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoIAotICAgICAgICB7Ci0gICAgICAgICAgICAndG9rZW4nICA6ICdpbnRlcmZhY2VzJywKLSAgICAgICAgICAgICdzY29wZWQnIDogVHJ1ZSwKLSAgICAgICAgICAgICdhY3Rpb24nIDogICh7J3Byb2MnICAgOiAndGVuYW50LXNob3ctcHJlcHJvY2Vzcyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICdsZWdhY3ktY2xpJyksCi0gICAgICAgIH0KLSAgICApCi19Ci0KLVNIT1dfVk5TX0FDQ0VTU19MSVNUX0VOVFJZX0NPTU1BTkRfREVTQ1JJUFRJT04gPSB7Ci0gICAgJ25hbWUnICAgICAgICAgOiAnc2hvdycsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC12bnMqJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdzaG93IFZOUyBhY2Nlc3MgbGlzdCBydWxlcycsCi0gICAgJ2FjdGlvbicgICAgICAgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnZGlzcGxheS10YWJsZScsCi0gICAgJ29iai10eXBlJyAgICAgOiAndm5zLWFjY2Vzcy1saXN0LWVudHJ5JywKLSAgICAnZGV0YWlsJyAgICAgICA6ICdhY2wtYnJpZWYnLAotICAgICdhcmdzJyAgICAgICAgIDogKAotICAgICAgICAnYWNjZXNzLWxpc3QtZW50cnknLAotICAgICksCi19Ci0KLVZOU19BQ0NFU1NfTElTVF9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogJ2FjY2Vzcy1saXN0JywKLSAgICAnbW9kZScgICAgICAgICA6ICdjb25maWctdGVuYW50LXZucyonLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZy1zdWJtb2RlJywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2bnMtYWNjZXNzLWxpc3QnLAotICAgICdwYXJlbnQtZmllbGQnIDogJ3ZucycsCi0gICAgJ3N1Ym1vZGUtbmFtZScgOiAnY29uZmlnLXRlbmFudC12bnMtYWNsJywKLSAgICAnc3ludGF4LWhlbHAnICA6ICdFbnRlciBhbiBhY2Nlc3MgbGlzdCBuYW1lJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdFbnRlciB2bnMgYWNjZXNzLWxpc3Qgc3VibW9kZScsCi0gICAgJ2RvYycgICAgICAgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdCcsCi0gICAgJ2RvYy1leGFtcGxlJyAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1leGFtcGxlJywKLSAgICAnYXJncycgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ25hbWUnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtb2JqZWN0LWZpZWxkJywKLSAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtbmFtZScKLSAgICAgICAgfQotICAgICkKLX0KLQotCi1WTlNfQUNDRVNTX0xJU1RfREVTQ1JJUFRJT05fQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdkZXNjcmlwdGlvbicsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC12bnMtYWNsJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdQcm92aWRlIGEgZGVzY3JpcHRpb24gZm9yIGEgVk5TIGFjY2VzcyBsaXN0JywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWRlc2NyaXB0aW9uJywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWRlc2NyaXB0aW9uLWV4YW1wbGUnLAotICAgICdjb21tYW5kLXR5cGUnIDogJ2NvbmZpZycsCi0gICAgJ2FyZ3MnICAgICAgICAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgOiAnZGVzY3JpcHRpb24nLAotICAgICAgICAgICAgJ3R5cGUnICA6ICdzdHJpbmcnLAotICAgICAgICB9Ci0gICAgKSwKLX0KLQotCi1WTlNfQUNDRVNTX0xJU1RfUFJJT1JJVFlfQ09NTUFORF9ERVNDUklQVElPTiA9IHsKLSAgICAnbmFtZScgICAgICAgICA6ICdwcmlvcml0eScsCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC12bnMtYWNsJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdTZXQgVk5TIHByaW9yaXR5JywKLSAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LXByaW9yaXR5JywKLSAgICAnZG9jLWV4YW1wbGUnICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LXByaW9yaXR5LWV4YW1wbGUnLAotICAgICdkb2MtaW5jbHVkZScgIDogWyAnZGVmYXVsdCcsICdyYW5nZScgXSwKLSAgICAnY29tbWFuZC10eXBlJyA6ICdjb25maWcnLAotICAgICdhcmdzJyA6ICgKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgOiAncHJpb3JpdHknLAotICAgICAgICAgICAgJ2Jhc2UtdHlwZScgOiAnaW50ZWdlcicsCi0gICAgICAgICAgICAncmFuZ2UnICAgICA6ICgwLCA2NTUzNSksCi0gICAgICAgIH0KLSAgICApCi19Ci0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHZucyBhY2Nlc3MgbGlzdCBjb21tYW5kCi0jCi0KLVNSQ19JUF9NQVRDSCA9IHsKLSAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnIDogJ3NyYy1pcCcsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICA6ICdpcC1hZGRyZXNzLW5vdC1tYXNrJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtYW5kLW1hc2staXAnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICdzcmMtaXAtbWFzaycsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaW52ZXJzZS1uZXRtYXNrJywKLSAgICAgICAgICAgICAgICAnZGF0YScgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHN0LWlwJyAgICAgIDogJzAuMC4wLjAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkc3QtaXAtbWFzaycgOiAnMjU1LjI1NS4yNTUuMjU1JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1pcC1hbmQtbWFzay1tYXNrJywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICksCi0gICAgICAgICgKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgIDogJ3NyYy1pcCcsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgICA6ICdpcC1hZGRyZXNzLW5vdC1tYXNrJywKLSAgICAgICAgICAgICAgICAnZGF0YScgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMtaXAtbWFzaycgOiAnMC4wLjAuMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RzdC1pcCcgICAgICA6ICcwLjAuMC4wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHN0LWlwLW1hc2snIDogJzI1NS4yNTUuMjU1LjI1NScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWlwLW9ubHknLAotICAgICAgICAgICAgfSwKLSAgICAgICAgKSwKLSAgICAgICAgKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ3NyYy1pcCcsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnY2lkci1yYW5nZScsCi0gICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgOiAnc3JjLWNpZHInLAotICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ3NwbGl0LWNpZHItZGF0YS1pbnZlcnNlJywKLSAgICAgICAgICAgICAgICAnZGVzdC1pcCcgICAgICA6ICdzcmMtaXAnLAotICAgICAgICAgICAgICAgICdkZXN0LW5ldG1hc2snIDogJ3NyYy1pcC1tYXNrJywKLSAgICAgICAgICAgICAgICAnZGF0YScgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHN0LWlwJyAgICAgIDogJzAuMC4wLjAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkc3QtaXAtbWFzaycgOiAnMjU1LjI1NS4yNTUuMjU1JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1jaWRyLXJhbmdlJywKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSwKLSAgICAgICAgKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICd0b2tlbicgIDogJ2FueScsCi0gICAgICAgICAgICAgICAgJ2RhdGEnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjLWlwJyAgICAgIDogJzAuMC4wLjAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy1pcC1tYXNrJyA6ICcyNTUuMjU1LjI1NS4yNTUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RzdC1pcCcgICAgICA6ICcwLjAuMC4wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkc3QtaXAtbWFzaycgOiAnMjU1LjI1NS4yNTUuMjU1JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1pcC1hbnknLAotICAgICAgICAgICAgfQotICAgICAgICApLAotICAgICkKLX0KLQotCi1TUkNfUE9SVF9NQVRDSCA9ICgKLSAgICB7Ci0gICAgICAgICdmaWVsZCcgIDogJ3NyYy10cC1wb3J0LW9wJywKLSAgICAgICAgJ3R5cGUnICAgOiAnZW51bScsCi0gICAgICAgICd2YWx1ZXMnIDogKCdlcScsICduZXEnKSwKLSAgICAgICAgJ2RvYycgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1wb3J0LW9wLSsnLAotICAgIH0sCi0gICAgewotICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnc3JjLXRwLXBvcnQnLAotICAgICAgICAgICAgICAgICdiYXNlLXR5cGUnICAgIDogJ2hleC1vci1kZWNpbWFsLWludGVnZXInLAotICAgICAgICAgICAgICAgICdyYW5nZScgICAgICAgIDogKDAsNjU1MzUpLAotICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2hleC10by1pbnRlZ2VyJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LXBvcnQtaGV4JywKLSAgICAgICAgICAgICAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ3JhbmdlJyBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZmllbGQnICAgOiAnc3JjLXRwLXBvcnQnLAotICAgICAgICAgICAgICAgICd0eXBlJyAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAndmFsdWVzJyAgOiBmbXRjbnYudGNwX25hbWVfdG9fbnVtYmVyX2RpY3QsCi0gICAgICAgICAgICAgICAgJ3Blcm11dGUnIDogJ3NraXAnLAotICAgICAgICAgICAgICAgICdkb2MnICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LXBvcnQtdHlwZScsCi0gICAgICAgICAgICB9LAotICAgICAgICApLAotICAgIH0sCi0pCi0KLQotRFNUX0lQX01BVENIID0gewotICAgICdjaG9pY2VzJyA6ICgKLSAgICAgICAgKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgOiAnZHN0LWlwJywKLSAgICAgICAgICAgICAgICAndHlwZScgIDogJ2lwLWFkZHJlc3Mtbm90LW1hc2snLAotICAgICAgICAgICAgICAgICdkb2MnICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1pcC1hbmQtbWFzay1pcCcsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgOiAnZHN0LWlwLW1hc2snLAotICAgICAgICAgICAgICAgICd0eXBlJyAgOiAnaW52ZXJzZS1uZXRtYXNrJywKLSAgICAgICAgICAgICAgICAnZG9jJyAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtYW5kLW1hc2stbWFzaycsCi0gICAgICAgICAgICB9LAotICAgICAgICApLAotICAgICAgICAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICA6ICdkc3QtaXAnLAotICAgICAgICAgICAgICAgICd0eXBlJyAgICAgOiAnaXAtYWRkcmVzcy1ub3QtbWFzaycsCi0gICAgICAgICAgICAgICAgJ2RhdGEnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RzdC1pcC1tYXNrJyA6ICcwLjAuMC4wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAnZG9jJyAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtb25seScsCi0gICAgICAgICAgICB9LAotICAgICAgICApLAotICAgICAgICAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnZHN0LWlwJywKLSAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdjaWRyLXJhbmdlJywKLSAgICAgICAgICAgICAgICAnaGVscC1uYW1lJyAgICA6ICdkc3QtY2lkcicsCi0gICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnc3BsaXQtY2lkci1kYXRhLWludmVyc2UnLAotICAgICAgICAgICAgICAgICdkZXN0LWlwJyAgICAgIDogJ2RzdC1pcCcsCi0gICAgICAgICAgICAgICAgJ2Rlc3QtbmV0bWFzaycgOiAnZHN0LWlwLW1hc2snLAotICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtY2lkci1yYW5nZScsCi0gICAgICAgICAgICB9LAotICAgICAgICApLAotICAgICAgICAoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ3Rva2VuJyAgOiAnYW55JywKLSAgICAgICAgICAgICAgICAnZGF0YScgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkc3QtaXAnICAgICAgOiAnMC4wLjAuMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHN0LWlwLW1hc2snIDogJzI1NS4yNTUuMjU1LjI1NScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICdkb2MnICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtYW55JywKLSAgICAgICAgICAgIH0KLSAgICAgICAgKSwKLSAgICApCi19Ci0KLQotRFNUX1BPUlRfTUFUQ0ggPSAoCi0gICAgewotICAgICAgICAnZmllbGQnIDogJ2RzdC10cC1wb3J0LW9wJywKLSAgICAgICAgJ3R5cGUnICA6ICdlbnVtJywKLSAgICAgICAgJ3ZhbHVlcycgOiAoJ2VxJywgJ25lcScpLAotICAgICAgICAnZG9jJyAgICAgICAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LXBvcnQtb3ArJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ2RzdC10cC1wb3J0JywKLSAgICAgICAgICAgICAgICAnYmFzZS10eXBlJyAgICA6ICdoZXgtb3ItZGVjaW1hbC1pbnRlZ2VyJywKLSAgICAgICAgICAgICAgICAncmFuZ2UnICAgICAgICA6ICgwLDY1NTM1KSwKLSAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdoZXgtdG8taW50ZWdlcicsCi0gICAgICAgICAgICAgICAgJ2RvYycgICAgICAgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1wb3J0LWhleCcsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdmaWVsZCcgICA6ICdkc3QtdHAtcG9ydCcsCi0gICAgICAgICAgICAgICAgJ3R5cGUnICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICd2YWx1ZXMnICA6IGZtdGNudi50Y3BfbmFtZV90b19udW1iZXJfZGljdCwKLSAgICAgICAgICAgICAgICAncGVybXV0ZScgOiAnc2tpcCcKLSAgICAgICAgICAgIH0sCi0gICAgICAgICksCi0gICAgfQotKQotCi0KLSMgVW5mb3J0dW5hdGx5LCB0aGUgbW9kZWwgZGVmaW5lcyB0aGUgY29tcG91bmQga2V5IHVzaW5nIHRoZQotIyBydWxlIGZpZWxkIGFzIGEgY2hhcmFjdGVyIGZpZWxkLCBub3QgYW4gaW50ZWdlci4gCi0jIFNpbmNlICcwMCcgaXMgdGhlbiB0aGUgc2FtZSBydWxlIGFzICcwJywgdHdvIHJvd3MgY291bGQgYmUKLSMgY3JlYXRlZCBkZXNjcmliaW5nIHRoZSBzYW1lIGludGVnZXIgcnVsZS4gCi0jIEhlcmUgdGhlIGNoYXJhY3RlciBzdHJpbmcgaXMgbm9ybWFsaXplZC4gIAotIyAoVGhpcyBtYXkgYmUgdGhlIHJlc3VsdCBvZiBoYXZpbmcgYSByZXF1aXJlbWVudCB0aGF0IGFsbCBmaWVsZHMgdXNlZCB0bwotIyBjb25zdHJ1Y3QgY29tcG91bmQga2V5cyBtdXN0IGJlIGNoYXJhY3RlciBmaWVsZHMpCi0jCi0jIEFkZGl0aW9uYWxseSwgZm9yIHRjcCBhbmQgdWRwIG1hdGNoZXMsIHRoZSAqdHBfcG9ydF9vcCBuZWVkcwotIyB0byBiZSBzZXQuCi0jCi1kZWYgdm5zX25vcm1hbGl6ZV9ydWxlKGRhdGEpOgotICAgIGRhdGFbJ3J1bGUnXSA9IHN0cihpbnQoZGF0YVsncnVsZSddKSkKLQotICAgIGlmIGRhdGEuZ2V0KCd0eXBlJywgJycpIGluIFsndGNwJywgJ3VkcCddOgotICAgICAgICBpZiBub3QgJ3NyYy10cC1wb3J0LW9wJyBpbiBkYXRhIG9yIGRhdGFbJ3NyYy10cC1wb3J0LW9wJ10gPT0gTm9uZToKLSAgICAgICAgICAgZGF0YVsnc3JjLXRwLXBvcnQtb3AnXSA9ICdhbnknCi0gICAgICAgIGlmIG5vdCAnZHN0LXRwLXBvcnQtb3AnIGluIGRhdGEgb3IgZGF0YVsnZHN0LXRwLXBvcnQtb3AnXSA9PSBOb25lOgotICAgICAgICAgICBkYXRhWydkc3QtdHAtcG9ydC1vcCddID0gJ2FueScKLQotCi1jb21tYW5kLmFkZF9hY3Rpb24oJ3Zucy1ub3JtYWxpemUtcnVsZScsIHZuc19ub3JtYWxpemVfcnVsZSwKLSAgICAgICAgICAgICAgICAgICB7J2t3YXJncycgOiB7ICdkYXRhJyA6ICckZGF0YScgfX0pCi0jCi0KLVZOU19BQ0NFU1NfTElTVF9FTlRSWV9DT01NQU5EX0RFU0NSSVBUSU9OID0gewotICAgICduYW1lJyAgICAgICAgIDogeyAndHlwZScgICAgICAgOiAncGF0dGVybicsCi0gICAgICAgICAgICAgICAgICAgICAgICdwYXR0ZXJuJyAgICA6IHInXGQnLAotICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgOiAncnVsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICd0aXRsZScgICAgICA6ICc8YWNsIHJ1bGUgbnVtYmVyPicsCi0gICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyA6ICdjb21wbGV0ZS1vYmplY3QtZmllbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAnb2JqLXR5cGUnICAgOiAndm5zLWFjY2Vzcy1saXN0LWVudHJ5JywKLSAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgJ21vZGUnICAgICAgICAgOiAnY29uZmlnLXRlbmFudC12bnMtYWNsJywKLSAgICAnc2hvcnQtaGVscCcgICA6ICdEZWZpbmUgQUNMIGRldGFpbHMgZm9yIHRoaXMgYWNjZXNzLWxpc3QnLAotICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtZW50cnknLAotICAgICdkb2MtZXhhbXBsZScgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtZW50cnktZXhhbXBsZScsCi0gICAgJ2NvbW1hbmQtdHlwZScgOiAnY29uZmlnLW9iamVjdCcsCi0gICAgJ3BhcmVudC1maWVsZCcgOiAndm5zLWFjY2Vzcy1saXN0JywKLSAgICAnb2JqLXR5cGUnICAgICA6ICd2bnMtYWNjZXNzLWxpc3QtZW50cnknLAotICAgICdkYXRhJyAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgJ2V0aGVyLXR5cGUnICAgICA6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc3JjLWlwJyAgICAgICAgIDogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdzcmMtaXAtbWFzaycgICAgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RzdC1pcCcgICAgICAgICA6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZHN0LWlwLW1hc2snICAgIDogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdzcmMtdHAtcG9ydCcgICAgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy10cC1wb3J0LW9wJyA6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZHN0LXRwLXBvcnQnICAgIDogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdkc3QtdHAtcG9ydC1vcCcgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy1tYWMnICAgICAgICA6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZHN0LW1hYycgICAgICAgIDogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICd2bGFuJyAgICAgICAgICAgOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2ljbXAtdHlwZScgICAgICA6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICB9LAotICAgICdhcmdzJyAgOiAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgIDogJ2FjdGlvbicsCi0gICAgICAgICAgICAndHlwZScgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnIDogKCAncGVybWl0JywgJ2RlbnknICksCi0gICAgICAgICAgICAnZG9jJyAgICA6ICd2bnN8dm5zLWFjY2Vzcy1saXN0LWVudHJ5LWFjdGlvbi0rJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nob2ljZXMnIDogKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgOiAndHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyA6ICgnaXAnLCd0Y3AnLCd1ZHAnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvYycgICAgOiAndm5zfHZucy1hY2Nlc3MtbGlzdC1lbnRyeS10eXBlLSsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICd0eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UtdHlwZScgICAgOiAnaGV4LW9yLWRlY2ltYWwtaW50ZWdlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZScgICAgICAgIDogKDAsMjU1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAtbmFtZScgICAgOiAnaXAgcHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyA6ICdoZXgtdG8taW50ZWdlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWVudHJ5LXR5cGUtaXAtcHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jLWluY2x1ZGUnICA6IFsgJ3JhbmdlJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICMgQ29tcGxleGl0eSBhcmlzZXMgZnJvbSB0aGUgU1JDX0lQIG1hdGNoIHBhcnQgCi0gICAgICAgICAgICAgICAgICAgICMgYmVpbmcsIHJlcXVpcmVkLCB3aGlsZSB0aGUgcG9ydCBtYXRjaAotICAgICAgICAgICAgICAgICAgICAjIGlzIG9wdGlvbmFsLCBhcyBpcyB0aGUgRFNUX0lQIG1hdGNoLCBidXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICMgRFNUX1BPUlRfTUFUQ0ggaXMgb25seSBwb3NzaWJsZSB0byBkZXNjcmliZSB3aGVuCi0gICAgICAgICAgICAgICAgICAgICMgdGhlIERTVF9JUCBwYXJ0IGlzIGluY2x1ZGVkCi0gICAgICAgICAgICAgICAgICAgIFNSQ19JUF9NQVRDSCwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYXJncycgOiBTUkNfUE9SVF9NQVRDSCwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYXJncycgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRFNUX0lQX01BVENILAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyZ3MnIDogRFNUX1BPUlRfTUFUQ0gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgICMgT25seSBhbGxvdyB0aGUgaWNtcCB0eXBlIGZvciBpY21wIHN5bnRheAotICAgICAgICAgICAgICAgICAgICAjIHRoaXMgZnVydGhlciBpbmNyZWFzZXMgdGhlIHN5bnRheCBjb21wbGV4aXR5Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgIDogJ3R5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgOiAnZW51bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzJyA6ICdpY21wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtaXAtKycsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIFNSQ19JUF9NQVRDSCwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYXJncycgOiBTUkNfUE9SVF9NQVRDSAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdhcmdzJyA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEU1RfSVBfTUFUQ0gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsLWZvci1ubycgOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJncycgOiBEU1RfUE9SVF9NQVRDSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgICAgOiAnaWNtcC10eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCcgICAgICAgIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25hbC1mb3Itbm8nIDogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlLXR5cGUnICAgICAgIDogJ2hleC1vci1kZWNpbWFsLWludGVnZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmdlJyAgICAgICAgICAgOiAoMCwyNTUpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgICAgOiAnaGV4LXRvLWludGVnZXInLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICA6ICd0eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgOiAnbWFjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtbWFjJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2Nob2ljZXMnICAgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nIDogJ2FueScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgOiAnc3JjLW1hYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgOiAnaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogWyAnY29tcGxldGUtYWxpYXMtY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICdob3N0fG1hYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnY2hvaWNlcycgICA6ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgOiAnYW55JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpZWxkJyA6ICdkc3QtbWFjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICA6ICdob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiBbICdjb21wbGV0ZS1hbGlhcy1jaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2hvc3R8bWFjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtaGFuZGxlcicgOiAnYWxpYXMtdG8tdmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnY2hvaWNlcycgOiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICdldGhlci10eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UtdHlwZScgICAgICAgOiAnaGV4LW9yLWRlY2ltYWwtaW50ZWdlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZScgICAgICAgICAgIDogKDE1MzYsNjU1MzYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyAgICA6ICdoZXgtdG8taW50ZWdlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnICAgICAgICAgICAgIDogJ3Zuc3x2bnMtYWNjZXNzLWxpc3QtZXRoZXItdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgICAgICAgICAgIDogJ2V0aGVyLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcycgICAgICAgICAgOiBmbXRjbnYuZXRoZXJfdHlwZV90b19udW1iZXJfZGljdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Blcm11dGUnICAgICAgICAgOiAnc2tpcCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnICAgICAgICAgICA6ICd2bGFuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0YWcnICAgICAgICAgICAgIDogJ3ZsYW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UtdHlwZScgICAgICAgOiAnaGV4LW9yLWRlY2ltYWwtaW50ZWdlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAncmFuZ2UnICAgICAgICAgICA6ICgxLDQwOTYpLCAjIG5vIHplcm8/ICByZWFsbHk/Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1oYW5kbGVyJyAgICA6ICdoZXgtdG8taW50ZWdlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwnICAgICAgICA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uYWwtZm9yLW5vJyA6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICkKLSAgICAgICAgfQotICAgICksCi0gICAgJ2FjdGlvbicgOiAoCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyAgOiAndm5zLW5vcm1hbGl6ZS1ydWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZCcgOiAncnVsZScsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdwcm9jJyA6ICd3cml0ZS1vYmplY3QnLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICApLAotfQotCi1WTlNfREVGSU5JVElPTl9GT1JNQVQgPSB7Ci0gICAgJ3Zucy1kZWZpbml0aW9uJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgIDogWyAnSWR4JywgJ3RlbmFudCcsJ3Zuc25hbWUnLCAnYWN0aXZlJywgJ3ByaW9yaXR5JywgJ2FycC1tb2RlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaGNwLW1vZGUnLCAnZGhjcC1pcCcsICdicm9hZGNhc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3Mtc3BhY2UnIF0sCi0gICAgICAgICAgICAndm5zLWNvbmZpZycgIDogWyAnSWR4JywgJ3RlbmFudCcsJ3Zuc25hbWUnLCdhY3RpdmUnLCAncHJpb3JpdHknLCAnYXJwLW1vZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RoY3AtbW9kZScsICdkaGNwLWlwJywgJ2Jyb2FkY2FzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkcmVzcy1zcGFjZScsIF0sCi0gICAgICAgICAgICAnYnJpZWYnICAgICAgIDogWyAnSWR4JywgJ3RlbmFudCcsICd2bnNuYW1lJywgJ2FkZHJlc3Mtc3BhY2UnLCBdCi0gICAgICAgICAgICB9LAotICAgICAgICAnZmllbGRzJyA6IHsKLSAgICAgICAgICAgJ3Zuc25hbWUnICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVk5TIElEJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAnYWN0aXZlJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAnYWRkcmVzcy1zcGFjZScgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnQWRkcmVzcyBTcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ3ByaW9yaXR5JyAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ2FycC1tb2RlJyAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0FSUCBDb25maWcgTW9kZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ2RoY3AtbW9kZScgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0RIQ1AgQ29uZmlnIE1vZGUnICwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAnZGhjcC1pcCcgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnREhDUCBJcCcgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICdicm9hZGNhc3QnICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdCcm9hZGNhc3QgTW9kZScgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICdhZGRyZXNzLXNwYWNlJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnQWRkcmVzcyBTcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ3RlbmFudCcgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1RlbmFudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLQotVk5TX0lOVEVSRkFDRV9SVUxFX0ZPUk1BVCA9IHsKLSAgICAndm5zLWludGVyZmFjZS1ydWxlJyA6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncyc6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgICA6IFsgJ0lkeCcsICd0ZW5hbnQnLCAndm5zbmFtZScsICdydWxlJywgJ2Rlc2NyaXB0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbG93LW11bHRpcGxlJywgJ2FjdGl2ZScsICdwcmlvcml0eScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWMnLCAndmxhbnMnLCAnaXAtc3VibmV0JywgJ3N3aXRjaCcsICdwb3J0cycsICd0YWdzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICd2bnMtY29uZmlnJyA6IFsgJ0lkeCcsICdydWxlJywgJ2Rlc2NyaXB0aW9uJywgJ2FsbG93LW11bHRpcGxlJywgJ2FjdGl2ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmlvcml0eScsICdtYWMnLCAndmxhbnMnLCAnaXAtc3VibmV0JywgJ3N3aXRjaCcsICdwb3J0cycsICd0YWdzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAncnVsZScgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWTlMgUnVsZSBJRCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0ZW5hbnQnICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1RlbmFudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndm5zbmFtZScgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVk5TIElEJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbWFjJyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaG9zdF9hbmRfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RhZ3MnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FjdGl2ZScgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FsbG93LW11bHRpcGxlJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2lwLXN1Ym5ldCcgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3BvcnRzJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ByaW9yaXR5JyAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3J1bGUnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3RhZ3MnICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ZsYW5zJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi0KLVZOU19ESVNQTEFZX1ZOU19JTlRFUkZBQ0VfRk9STUFUID0gewotICAgICdkaXNwbGF5LXZucy1pbnRlcmZhY2UnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgICA6IFsnSWR4JywgJ3RlbmFudCcsICd2bnNuYW1lJywgJ2FkZHJlc3Mtc3BhY2UnLCAnaWQnLCAncnVsZScsICdtYWMnLCAndmxhbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lwcycsICdhdHRhY2htZW50LXBvaW50cycsICdsYXN0LXNlZW4nXSwKLSAgICAgICAgICAgICd2bnMtY29uZmlnJyA6IFsnSWR4JywgICAgICAgICdpZCcsICdydWxlJywgJ21hYycsICd2bGFuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lwcycsICdhdHRhY2htZW50LXBvaW50cycsICdsYXN0LXNlZW4nXQotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICd0ZW5hbnQnICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1RlbmFudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndm5zbmFtZScgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdWTlMgSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3J1bGUnICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FkZHJlc3Mtc3BhY2UnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdBZGRyZXNzIFNwYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ21hYycgICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnTUFDIEFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaG9zdF9hbmRfYWxpYXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd2bGFuJyAgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1ZMQU4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaXBzJyAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaXBfYWRkcmVzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VudHJ5LWZvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfYWxsX2lwX2FkZHJlc3NlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2F0dGFjaG1lbnQtcG9pbnRzJyA6IHsgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaG9zdF9hdHRhY2htZW50X3BvaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VudHJ5LWZvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfYWxsX2hvc3RfYXR0YWNobWVudF9wb2ludHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdsYXN0LXNlZW4nICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF90aW1lX3NpbmNlX3V0Y190aW1lc3RyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi0KLVZOU19JTlRFUkZBQ0VfRElTUExBWV9GT1JNQVQgPSB7Ci0gICAgJ3Zucy1pbnRlcmZhY2UtZGlzcGxheScgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnICAgIDogWydJZHgnLCAndGVuYW50JywgJ3Zuc25hbWUnLCAnYWRkcmVzcy1zcGFjZScsICdpZCcsICdydWxlJywgJ21hYycsICd2bGFuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXBzJywgJ2F0dGFjaG1lbnQtcG9pbnRzJywgJ2xhc3Qtc2VlbiddLAotICAgICAgICAgICAgJ3Zucy1jb25maWcnIDogWydJZHgnLCAgICAgICAgJ2lkJywgJ2FkZHJlc3Mtc3BhY2UnLCAncnVsZScsICdtYWMnLCAndmxhbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcHMnLCAnYXR0YWNobWVudC1wb2ludHMnLCAnbGFzdC1zZWVuJ10KLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnOiB7Ci0gICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndGVuYW50JyAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdUZW5hbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndm5zbmFtZScgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdWTlMgSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncnVsZScgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbWFjJyAgICAgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdNQUMgQWRkcmVzcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9ob3N0X2FuZF9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ZsYW4nICAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVkxBTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdpcHMnICAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9pcF9hZGRyZXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW50cnktZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9hbGxfaXBfYWRkcmVzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYXR0YWNobWVudC1wb2ludHMnIDogeyAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9ob3N0X2F0dGFjaG1lbnRfcG9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW50cnktZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9hbGxfaG9zdF9hdHRhY2htZW50X3BvaW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FkZHJlc3Mtc3BhY2UnICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdBZGRyZXNzIFNwYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2xhc3Qtc2VlbicgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X3RpbWVfc2luY2VfdXRjCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi0KLVZOU19JTlRFUkZBQ0VfTUFDU19GT1JNQVQgPSB7Ci0gICAgJ3Zucy1pbnRlcmZhY2UtbWFjcycgIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgICA6IFsgJ0lkeCcsICd0ZW5hbnQnLCAndm5zJywgJ2FkZHJlc3Mtc3BhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmV0aCcsICdtYWMnLCAndmxhbicsICdpcHMnLCAndGFncycsICdsYXN0LXNlZW4nXSwKLSAgICAgICAgICAgICdzY29wZWQnICAgICA6IFsgJ0lkeCcsICAgICAgICAnYWRkcmVzcy1zcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXRoJywgJ21hYycsICd2bGFuJywgJ2lwcycsICd0YWdzJywgJ2xhc3Qtc2VlbiddLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcyc6IHsKLSAgICAgICAgICAgICd2ZXRoJyAgICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdWaXJ0dWFsIEkvRicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0ZW5hbnQnICAgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdUZW5hbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndm5zbmFtZScgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJzogJ1ZOUyBJRCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ21hYycgICAgICAgICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ01BQyBBZGRyZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X2hvc3RfYW5kX2FsaWFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndmxhbicgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1ZMQU4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaXBzJyAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0lQIEFkZHJlc3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X2lwX2FkZHJlc3NlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW50cnktZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9hbGxfaXBfYWRkcmVzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndGFncycgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWRkcmVzcy1zcGFjZScgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0FkZHJlc3MgU3BhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbGFzdC1zZWVuJyAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnTGFzdCBTZWVuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X3RpbWVfc2luY2VfdXRjCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi0KLVZOU19JTlRFUkZBQ0VfUEhZU19GT1JNQVQgPSB7Ci0gICAgJ3Zucy1pbnRlcmZhY2UtcGh5cycgIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgICAgOiBbJ0lkeCcsICdpZCcsICdhZGRyZXNzLXNwYWNlJywgJ3N3aXRjaCcsICdsYXN0LXNlZW4nIF0sCi0gICAgICAgICAgICB9LAotCi0gICAgICAgICdmaWVsZHMnICAgICAgICAgIDogewotICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgIDogeyAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF92bnNfcGh5c2ljYWxfaW50ZXJmYWNlX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdQaHlzaWNhbCBJL0YnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzd2l0Y2gnICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgIDogZm10Y252LnByaW50X3N3aXRjaF9hbmRfYWxpYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWRkcmVzcy1zcGFjZScgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0FkZHJlc3MgU3BhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbGFzdC1zZWVuJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0xhc3QgU2VlbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZXInIDogZm10Y252LnByaW50X3RpbWVfc2luY2VfdXRjCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAotfQotCi0KLVZOU19WTlNfU1dJVENIX1BPUlRTX0ZPUk1BVCA9IHsKLSAgICAndm5zLXN3aXRjaC1wb3J0cycgICAgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnICAgICA6IFsgJ0lkeCcsICd0ZW5hbnQnLCd2bnMnLCAnc3dpdGNoJywgJ3BvcnQnLCAncmVhc29uJyBdLAotICAgICAgICAgICAgfSwKLQotICAgICAgICAnZmllbGRzJyAgICAgICAgICA6IHsKLSAgICAgICAgICAgICd0ZW5hbnQnICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1RlbmFudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd2bnNuYW1lJyAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1ZOUyBJRCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdzd2l0Y2gnICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5yZXBsYWNlX3N3aXRjaF93aXRoX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdwb3J0JyAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdPRiBQb3J0ICMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYuZGVjb2RlX29wZW5mbG93X3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3N3aXRjaC1wb3J0JyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1BoeSBJL0YnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdyZWFzb24nICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5wcmludF9ob3N0X2xpc3RfYW5kX2FsaWFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICB9LAotfQotCi0KLVZOU19TV0lUQ0hfUE9SVFNfVk5TX1BPUlRTX0ZPUk1BVCA9IHsKLSAgICAnc3dpdGNoLXBvcnRzLXZucycgICAgOiB7Ci0gICAgICAgICdmaWVsZC1vcmRlcmluZ3MnIDogewotICAgICAgICAgICAgJ2RlZmF1bHQnICAgICA6IFsgJ0lkeCcsICdzd2l0Y2gnLCAncG9ydCcsICd0ZW5hbnQnLCd2bnNuYW1lJywgJ3JlYXNvbicgXSwKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgJ2ZpZWxkcycgICAgICAgICAgOiB7Ci0gICAgICAgICAgICAndGVuYW50JyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdUZW5hbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndm5zbmFtZScgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdWTlMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfdm5zX2NvdW50X2RpY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnc3dpdGNoJyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncG9ydCcgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ09GIFBvcnQgIycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyJyA6IGZtdGNudi5kZWNvZGVfb3BlbmZsb3dfcG9ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncmVhc29uJyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYucHJpbnRfaG9zdF9saXN0X2FuZF9hbGlhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgfSwKLX0KLQotCi1WTlNfVk5TX0FDQ0VTU19MSVNUX0ZPUk1BVCA9IHsKLSAgICAndm5zLWFjY2Vzcy1saXN0JzogewotICAgICAgICAnc2hvdy10aGlzJyAgICAgICA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyd2bnMtYWNjZXNzLWxpc3QnLCAnZGVmYXVsdCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Zucy1hY2Nlc3MtbGlzdC1lbnRyeScsICdhY2wtYnJpZWYnXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0KLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgOiBbICd0ZW5hbnQnLCAndm5zJywgJ25hbWUnLCAncHJpb3JpdHknLCAnZGVzY3JpcHRpb24nIF0sCi0gICAgICAgICAgICAndm5zLWNvbmZpZycgOiBbICAgICAgICAnbmFtZScsICdwcmlvcml0eScsICdkZXNjcmlwdGlvbicgXQotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnbmFtZScgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi0KLVZOU19BQ0NFU1NfTElTVF9FTlRSWV9GT1JNQVQgPSB7Ci0gICAgJ3Zucy1hY2Nlc3MtbGlzdC1lbnRyeSc6IHsKLSAgICAgICAgJ2ZpZWxkLW9yZGVyaW5ncycgOiB7Ci0gICAgICAgICAgICAnZGVmYXVsdCcgICAgICAgICA6IFsgJ0lkeCcsICd2bnMnLCAndm5zLWFjY2Vzcy1saXN0JywgJ3J1bGUnLCAnYWN0aW9uJywgJ3R5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjLWlwJywgJ3NyYy1pcC1tYXNrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RzdC1pcCcsICdkc3QtaXAtbWFzaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy10cC1wb3J0LW9wJywgJ3NyYy10cC1wb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RzdC10cC1wb3J0LW9wJywgJ2RzdC10cC1wb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljbXAtdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMtbWFjJywgJ2RzdC1tYWMnLCAnZXRoZXItdHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bGFuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICd2bnMtY29uZmlnJyAgICAgICA6IFsnSWR4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndm5zLWFjY2Vzcy1saXN0JywgJ3J1bGUnLCAnYWN0aW9uJywgJ3R5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMtaXAnLCAnc3JjLWlwLW1hc2snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHN0LWlwJywgJ2RzdC1pcC1tYXNrJyAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMtdHAtcG9ydC1vcCcsICdzcmMtdHAtcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkc3QtdHAtcG9ydC1vcCcsICdkc3QtdHAtcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY21wLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjLW1hYycsICdkc3QtbWFjJywgJ2V0aGVyLXR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmxhbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnYWNsLWJyaWVmJyAgICAgICAgOiBbJ3Zucy1hY2Nlc3MtbGlzdCcsICdydWxlJywgJ2FjdGlvbicsICd0eXBlJywgJ2FjbC10ZXh0JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdzY29wZWQtYWNsLWJyaWVmJyA6IFsgJ3J1bGUnLCAnYWN0aW9uJywgJ3R5cGUnLCAnYWNsLXRleHQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIHZucy1hY2wtZW50cnkgZmllbGRzIGFyZSBhIGJpdCB1bmNvbW1vbi4gIHRoZSBhY3Rpb24gYW5kIHR5cGUKLSAgICAgICAgICAgICMgY2FuIG9ubHkgYmUgY29uZmlndXJlZCB2aWEgdGhlIGNyZWF0ZSBwb3J0aW9uIG9mIHRoZSBjb21tYW5kLAotICAgICAgICAgICAgIyB3aGlsZSBtYW55IG90aGVyIGZpZWxkcyByZXF1cmUgc3BlY2lmaWMgdmFsaWRhdGlvbiBzbyB0aGF0Ci0gICAgICAgICAgICAjIGFsdGVybmF0ZSB2YWx1ZXMgY2FuIGJlIHJlcGxhY2VkIGZvciBzb21lIGtleXdvcmRzCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIHRoZSB2YWx1ZXMgb2YgdGhlICd2YWxpZGF0ZScgZmllbGQgaXMgdGhlIG5hbWUgb2YgdGhlCi0gICAgICAgICAgICAjIGRlZiB0byBjYWxsIChpbiB0aGUgU0ROU2ggY2xhc3MpCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAndm5zLWFjY2Vzcy1saXN0JyAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ0FjbCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAncnVsZScgICAgICAgICAgICAgOiB7ICd2ZXJib3NlLW5hbWUnIDogJ1NlcScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2FjdGlvbicgICAgICAgICAgIDogeyAndmVyYm9zZS1uYW1lJyA6ICdBY3Rpb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgICAgICA6IHsgJ3ZlcmJvc2UtbmFtZScgOiAnVHlwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3NyYy1pcCcgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdTcmMtSXAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3NyYy1pcC1tYXNrJyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnU3JjLUlwLU1hc2snCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2RzdC1pcCcgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdEc3QtSXAnIH0sCi0gICAgICAgICAgICAnZHN0LWlwLW1hc2snICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0RzdC1JcC1NYXNrJyB9LAotICAgICAgICAgICAgJ3NyYy10cC1wb3J0LW9wJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdTcmMtUG9ydC1PcCcgfSwKLSAgICAgICAgICAgICdzcmMtdHAtcG9ydCcgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnU3JjLVBvcnQnIH0sCi0gICAgICAgICAgICAnZHN0LXRwLXBvcnQtb3AnICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0RzdC1Qb3J0LU9wJyB9LAotICAgICAgICAgICAgJ2RzdC10cC1wb3J0JyAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdEc3QtUG9ydCcgfSwKLSAgICAgICAgICAgICdpY21wLXR5cGUnICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZXRoZXItdHlwZScgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3ZucycgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdWTlMgSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LAotfQotCi0KLVZOU19JTlRFUkZBQ0VfQUNDRVNTX0xJU1RfRk9STUFUID0gewotICAgICd2bnMtaW50ZXJmYWNlLWFjY2Vzcy1saXN0JzogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgIDogWyAnSWR4JywgJ3Zuc25hbWUnLCAndm5zLWludGVyZmFjZScsICduYW1lJywgICdpbi1vdXQnIF0sCi0gICAgICAgICAgICAndm5zLWNvbmZpZyc6IFsgJ0lkeCcsICAgICAgICAndm5zLWludGVyZmFjZScsICduYW1lJywgICdpbi1vdXQnIF0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICdmaWVsZHMnIDogewotICAgICAgICAgICAgJ3Zuc25hbWUnICAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1ZOUyBJRCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAndm5zLWludGVyZmFjZS1uYW1lJyA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJyA6ICdWTlMgSW50ZXJmYWNlIElEJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICduYW1lJyAgICAgICAgICAgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ1ZOUyBBY2wgbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi19Ci0KLQotVk5TX0lOVEVSRkFDRV9GT1JNQVQgPSB7Ci0gICAgJ3Zucy1pbnRlcmZhY2UnIDogewotICAgICAgICAnZmllbGQtb3JkZXJpbmdzJyA6IHsKLSAgICAgICAgICAgICdkZWZhdWx0JyAgICA6IFsnSWR4JywgJ3ZucycsICdhZGRyZXNzLXNwYWNlJywgJ2ludGVyZmFjZScsICdydWxlJywgJ2xhc3Qtc2VlbicsIF0sCi0gICAgICAgICAgICAndm5zLWNvbmZpZycgOiBbJ0lkeCcsICdhZGRyZXNzLXNwYWNlJywgJ2ludGVyZmFjZScsICdydWxlJywgJ2xhc3Qtc2VlbicsIF0KLSAgICAgICAgfSwKLSAgICAgICAgJ2ZpZWxkcycgOiB7Ci0gICAgICAgICAgICAnaWQnICAgICAgICAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd2bnMnICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZS1uYW1lJzogJ1ZOUyBJRCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnaW50ZXJmYWNlJyAgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnVk5TIEludGVyZmFjZSBOYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3J1bGUnICAgICAgICA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnOiAnVk5TIFJ1bGUgSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnYWRkcmVzcy1zcGFjZScgICAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlLW5hbWUnIDogJ0FkZHJlc3MgU3BhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnbGFzdC1zZWVuJyAgIDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZSc6ICdMYXN0IFNlZW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiBmbXRjbnYudGltZXN0YW1wX3RvX2xvY2FsX3RpbWVzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLX0KLSIiIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3Zuc19tb2RlbC5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3Zuc19tb2RlbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggM2Y4ZjJmMy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC92bnNfbW9kZWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGNvbW1hbmQKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX3N1Ym1vZGUoJ3Zucy1pbnRlcmZhY2UtY29uZmlnJykKLWNvbW1hbmQubW9kZWxfb2JqX3R5cGVfZGlzYWJsZV9zdWJtb2RlKCd2bnMtYWNjZXNzLWxpc3QtZW50cnknKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfc3VibW9kZSgndm5zLWludGVyZmFjZS1ydWxlLW5ldHdvcmstc2VydmljZS1ub2RlLW1hcHBpbmcnKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndm5zLWRlZmluaXRpb24nLCAnZGVzY3JpcHRpb24nKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3Zucy1kZWZpbml0aW9uJywgJ29yaWdpbicpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndm5zLWRlZmluaXRpb24nLCAncHJpb3JpdHknKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3Zucy1kZWZpbml0aW9uJywgJ3Zuc25hbWUnKQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3Zucy1kZWZpbml0aW9uJywgJ3RlbmFudCcpCi0KLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9kaXNhYmxlX2VkaXQoJ3Zucy1hY2Nlc3MtbGlzdCcsICdwcmlvcml0eScpCi1jb21tYW5kLm1vZGVsX29ial90eXBlX2Rpc2FibGVfZWRpdCgndm5zLWFjY2Vzcy1saXN0JywgJ2Rlc2NyaXB0aW9uJykKLQotY29tbWFuZC5tb2RlbF9vYmpfdHlwZV9zZXRfc2hvd190aGlzKCd2bnMtYWNjZXNzLWxpc3QnLCBbCi0gICAgICAgICAgICAgICAgWyd2bnMtYWNjZXNzLWxpc3QnLCAndm5zLWFjY2Vzcy1saXN0JywgJ2RlZmF1bHQnIF0sCi0gICAgICAgICAgICAgICAgWyd2bnMtYWNjZXNzLWxpc3QtZW50cnknLCAndm5zLWFjY2Vzcy1saXN0LWVudHJ5JywgJ3Njb3BlZC1hY2wtYnJpZWYnIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBdKQotCi1jb21tYW5kLm1vZGVsX29ial90eXBlX3NldF90aXRsZSgndm5zLWFjY2Vzcy1saXN0LWVudHJ5JywgJ0FjY2VzcyBMaXN0IFJ1bGVzJykKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3Zuc190ZWNoc3VwcG9ydC5weSBiL2NsaS9jbGkvZGVzYy92ZXJzaW9uMjAwL3Zuc190ZWNoc3VwcG9ydC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzUwODZiNC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2Rlc2MvdmVyc2lvbjIwMC92bnNfdGVjaHN1cHBvcnQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1mcm9tIHRlY2hfc3VwcG9ydCBpbXBvcnQgYWRkX3RvX3Nob3dfdGVjaF9zdXBwb3J0Ci0KLSMgVk5TIGNvbW1hbmRzIHRvIGJlIGluY2x1ZGVkIGluICdzaG93IHRlY2gtc3VwcG9ydCcgb3V0cHV0Ci12bnNfc2hvd190ZWNoX3N1cHBvcnRfY29tbWFuZHMgPSBbCi0gICAgIFsnY2xpJywgJ3Nob3cgdm5zIGFsbCddLAotICAgICBbJ2NsaScsICdzaG93IHZucyBhbGwgaW50ZXJmYWNlcyddLAotICAgICBbJ2NsaScsICdzaG93IHZucyBhbGwgc3dpdGNoJ10sCi0gICAgIFsnY2xpJywgJ3Nob3cgdm5zIGFsbCBtYWMtYWRkcmVzcy10YWJsZSddLAotICAgICBbJ2NsaScsICdzaG93IHZucyBhbGwgZmxvdyddLAotXQotCi0jIGFkZCBjb21tYW5kcyB0byBjZW50cmFsIGNvbW1hbmQgdGFibGUgdXNlZCBmb3IgJ3Nob3cgdGVjaC1zdXBwb3J0JwotZm9yIGVudHJ5IGluIHZuc19zaG93X3RlY2hfc3VwcG9ydF9jb21tYW5kczoKLSAgICBhZGRfdG9fc2hvd190ZWNoX3N1cHBvcnQoc3RyKGVudHJ5WzBdKSwgc3RyKGVudHJ5WzFdKSwgJ3ZucycpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvYy5weSBiL2NsaS9jbGkvZG9jLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzYWUzN2IzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IG9zCi0KLSMKLSMgZG9jLCBpbnRlcmZhY2UgdG8gbWFuYWdlICdtYXJrZG93bicgdGV4dCBzZWdtZW50cyBiYXNlZCBvbiAKLSMgZG9jdW1lbnRhdGlvbiB0YWcncy4KLSMKLQotZG9jID0ge30KLQotZGVmIHJlZ2lzdGVyX2RvYyh0YWcsIHBhdGgpOgotICAgICIiIgotICAgIEl0cyBub3QgY2xlYXIgd2hldGhlciB0aGUgcmVnaXN0cmF0aW8gYXBpIG91Z2h0IHRvIG9ubHkgbmFtZQotICAgIHRoZSBhdmFpbGFibGUgdGFncywgb3Igd2hldGhlciB0aGUgYXBpIG91Z2h0IHRvIGFsc28gYXNzb2NpYXRlCi0gICAgdGV4dCwgYnV0IGl0IHNlZW1zIHRoYXQgaXQgd291bGQgYmUgd2lzZXIgdG8gbm90IGtlZXAgYWxsIHRoZQotICAgIGRvY3VtZW50YXRpb24gaW4gbWVtb3J5Ci0gICAgIiIiCi0KLSAgICBkb2NbdGFnXSA9IHBhdGgKLQotZGVmIGFkZF9kb2NfdGFncyhiYXNlLCB0YWdfcHJlZml4ID0gTm9uZSk6Ci0gICAgcGF0aCA9IGJhc2UKLSAgICBpZiB0YWdfcHJlZml4ID09IE5vbmU6Ci0gICAgICAgIHRhZ19wcmVmaXggPSBbXQotICAgIGVsaWYgdHlwZSh0YWdfcHJlZml4KSA9PSBzdHI6Ci0gICAgICAgIHRhZ19wcmVmaXggPSBbdGFnX3ByZWZpeF0KLQotICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgotICAgICAgICBmb3IgZWxlbSBpbiBvcy5saXN0ZGlyKHBhdGgpOgotICAgICAgICAgICAgdGhpc190YWdfcHJlZml4ID0gbGlzdCh0YWdfcHJlZml4KQotICAgICAgICAgICAgdGhpc190YWdfcHJlZml4LmFwcGVuZChlbGVtKQotICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKHBhdGgsIGVsZW0pCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZ1bGxfcGF0aCk6Ci0gICAgICAgICAgICAgICAgYWRkX2RvY190YWdzKGZ1bGxfcGF0aCwgdGhpc190YWdfcHJlZml4KQotICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2RvYygnfCcuam9pbih0aGlzX3RhZ19wcmVmaXgpLCBmdWxsX3BhdGgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50ICdhZGRfZG9jX3RhZ3M6IHVua25vd24gZmlsZSB0eXBlIGZvciAnLCBmdWxsX3BhdGgKLQotCi1kZWYgZ2V0X3RleHQoY29udGV4dCwgdGFnKToKLSAgICBwYXRoID0gZG9jLmdldCh0YWcpCi0gICAgaWYgcGF0aDoKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgY29udGV4dC5zZG5zaC5kZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICBwcmludCAnZG9jOiB0YWcgJXM6IG1pc3NpbmcgJyAlIHRhZwotICAgICAgICAgICAgCi0gICAgcmV0dXJuICcnCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hY2NvdW50aW5nIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYWNjb3VudGluZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjE3MDZmYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hY2NvdW50aW5nCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1Db25maWd1cmUgYWNjb3VudGluZyAobG9nZ2luZyBmb3IgdXNlciBDTEkgZXZlbnRzKS4KLUFjY291bnRpbmcgaXMgY29uZmlndXJlZCBmb3IgYSBzcGVjaWZpYyByb2xlLCB2aWEgYSBzcGVjaWZpYyBjaGFubmVsLAotZm9yIHNwZWNpZmljIGV2ZW50cywgdXNpbmcgb25lIG9yIG1vcmUgYWNjb3VudGluZyBzZXJ2aWNlcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWFjY291bnRpbmctZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWFjY291bnRpbmctZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODViMDcyMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hY2NvdW50aW5nLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1hYWEgYWNjb3VudGluZyBleGVjIGRlZmF1bHQgbm9uZQotICBUdXJuIG9mZiBhY2NvdW50aW5nIHNlcnZpY2VzIGZvciBTU0ggQ0xJIGFjY2Vzc2VzLgotICBUaGUgbmF0aXZlICgvdmFyL2xvZykgYWNjb3VudGluZyBjYW5ub3QgYmUgZGlzYWJsZWQuCi0KLW5vIGFhYSBhY2NvdW50aW5nIGV4ZWMgZGVmYXVsdAotICBSZXNldCB0aGUgYWNjb3VudGluZyBzZXJ2aWNlcyBmb3IgU1NIIENMSSBhY2Nlc3NlcyB0byBkZWZhdWx0cy4KLSAgVGhpcyBkaXNhYmxlcyBhbGwgYWNjb3VudGluZyBzZXJ2aWNlcywgd2l0aCB0aGUgZXhjZXB0aW9uCi0gIG9mIG5hdGl2ZSAoL3Zhci9sb2cpIGFjY291bnRpbmcsIHdoaWNoIGlzIGFsd2F5cyBlbmFibGVkLgotCi1hYWEgYWNjb3VudGluZyBleGVjIGRlZmF1bHQgc3RhcnQtc3RvcCBncm91cCB0YWNhY3MrCi0gIENvbmZpZ3VyZSB0aGUgY3VycmVudGx5LWRlZmluZWQgc2V0IG9mIFRBQ0FDUysgc2VydmVycwotICBhcyBhbiBhY2NvdW50aW5nIHNlcnZpY2UgZm9yIFNTSCBDTEkgbG9naW4gYW5kIGxvZ291dC4KLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYWNjb3VudGluZy1leGVjIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYWNjb3VudGluZy1leGVjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3OTA5NTM3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWFjY291bnRpbmctZXhlYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUNvbmZpZ3VyZSBhY2NvdW50aW5nIHNlcnZpY2VzIGZvciBleGVjIG1vZGUgKENMSSBhY2Nlc3MpLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYWNjb3VudGluZy1leGVjLXVzZS1kZWZhdWx0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYWNjb3VudGluZy1leGVjLXVzZS1kZWZhdWx0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmNTM2ZWQ3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWFjY291bnRpbmctZXhlYy11c2UtZGVmYXVsdAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ29uZmlndXJlIGFjY291bnRpbmcgc2VydmljZXMgd2hpbGUgY29ubmVjdGluZyB2aWEgdGhlIGRlZmF1bHQgY2hhbm5lbAotKGN1cnJlbnRseSBTU0gpLgotCi1SZXNldCB0aGUgYWNjb3VudGluZyBzZXJ2aWNlcyAoY3VycmVudGx5IHRvIG5hdGl2ZSAvdmFyL2xvZyBsb2dnaW5nKQotd2l0aCB0aGUgJ25vJyB2ZXJzaW9uIG9mIHRoaXMgY29tbWFuZC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWFjY291bnRpbmctZXhlYy11c2Utbm9uZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWFjY291bnRpbmctZXhlYy11c2Utbm9uZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzYyMGMxOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hY2NvdW50aW5nLWV4ZWMtdXNlLW5vbmUKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLURpc2FibGUgYWNjb3VudGluZyBzZXJ2aWNlcyBmb3IgdGhpcyByb2xlIGFuZCBjaGFubmVsLgotCi1Ob3RlIHRoYXQgbG9jYWwgKC92YXIvbG9nKSBhY2NvdW50aW5nIGlzIGFsd2F5cyBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYWNjb3VudGluZy1leGVjLXVzZS1zZXJ2ZXItZ3JvdXAgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hY2NvdW50aW5nLWV4ZWMtdXNlLXNlcnZlci1ncm91cApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMmIwY2U3OS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hY2NvdW50aW5nLWV4ZWMtdXNlLXNlcnZlci1ncm91cAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQ29uZmlndXJlIGFjY291bnRpbmcgc2VydmljZXMgdG8gdXNlIGEgc3BlY2lmaWMgZ3JvdXAgb2YgYWNjb3VudGluZwotc2VydmVycy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWFjY291bnRpbmctZXhlYy11c2Utc3RhcnQtc3RvcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWFjY291bnRpbmctZXhlYy11c2Utc3RhcnQtc3RvcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjM4NDJlZC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hY2NvdW50aW5nLWV4ZWMtdXNlLXN0YXJ0LXN0b3AKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUNvbmZpZ3VyZSBhY2NvdW50aW5nIHNlcnZpY2VzIHRvIHJlY29yZCAnc3RhcnQnIChsb2dpbikKLWFuZCAnc3RvcCcgKGxvZ291dCkgZXZlbnRzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYWNjb3VudGluZy1leGVjLXVzZS10YWNhY3MgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hY2NvdW50aW5nLWV4ZWMtdXNlLXRhY2FjcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzQyZTU2Ny4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hY2NvdW50aW5nLWV4ZWMtdXNlLXRhY2FjcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQ29uZmlndXJlIHRoZSBjdXJyZW50bHktZGVmaW5lZCBUQUNBQ1MrIHNlcnZlcnMgKHRoZSAndGFjYWNzKycgZ3JvdXApCi1hcyBhbiBhY2NvdW50aW5nIHNlcnZpY2UuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRoZW50aWNhdGlvbiBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhlbnRpY2F0aW9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ZGYxYjYyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhlbnRpY2F0aW9uCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1Db25maWd1cmUgYXV0aGVudGljYXRpb24gKHVzZXIgcGFzc3dvcmQgdmFsaWRhdGlvbikuICBVc2VycyBhcmUKLWF1dGhlbnRpY2F0ZWQgZm9yIGEgc3BlY2lmaWMgdGFzayBhbmQgdmlhIGEgc3BlY2lmaWMgY2hhbm5lbCwgdXNpbmcgb25lCi1vciBtb3JlIGF1dGhlbnRpY2F0aW9uIHNvdXJjZXMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRoZW50aWNhdGlvbi1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYXV0aGVudGljYXRpb24tZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZWRjYTI1ZC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRoZW50aWNhdGlvbi1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotYWFhIGF1dGhlbnRpY2F0aW9uIGxvZ2luIGRlZmF1bHQgZ3JvdXAgdGFjYWNzKwotICBVc2UgVEFDQUNTKyBmb3IgYXV0aGVudGljYXRpbmcgU1NIIENMSSBsb2dpbnMKLQotYWFhIGF1dGhlbnRpY2F0aW9uIGxvZ2luIGRlZmF1bHQgbG9jYWwKLSAgVXNlIGxvY2FsIFVOSVggL2V0Yy9wYXNzd2QgZm9yIGF1dGhlbnRpY2F0aW5nIFNTSCBDTEkgbG9naW5zLgotCi1hYWEgYXV0aGVudGljYXRpb24gbG9naW4gZGVmYXVsdCBncm91cCB0YWNhY3MrIGxvY2FsCi0gIFVzZSBib3RoIFRBQ0FDUysgYW5kIC9ldGMvcGFzc3dkIGZvciBsb2dpbi4KLQotbm8gYWFhIGF1dGhlbnRpY2F0aW9uIGxvZ2luIGRlZmF1bHQKLSAgUmVzZXQgYXV0aGVudGljYXRpb24gc291cmNlcyBmb3IgU1NIIENMSSBsb2dpbi4KLQotCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhlbnRpY2F0aW9uLWxvZ2luIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYXV0aGVudGljYXRpb24tbG9naW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDQ3ZDZiY2YuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYXV0aGVudGljYXRpb24tbG9naW4KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Db25maWd1cmUgYXV0aGVudGljYXRpb24gc291cmNlcyBmb3IgQ0xJIGxvZ2luLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYXV0aGVudGljYXRpb24tbG9naW4tdXNlLWRlZmF1bHQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRoZW50aWNhdGlvbi1sb2dpbi11c2UtZGVmYXVsdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODI0NTQ2YS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRoZW50aWNhdGlvbi1sb2dpbi11c2UtZGVmYXVsdAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQ29uZmlndXJlIGF1dGhlbnRpY2F0aW9uIHNvdXJjZXMgd2hpbGUgbG9nZ2luZyBpbnRvIHRoZSBDTEkKLXZpYSB0aGUgZGVmYXVsdCBjaGFubmVsIChjdXJyZW50bHkgU1NIKS4KLQotUmVzZXQgdGhlIGF1dGhlbnRpY2F0aW9uIHNvdXJjZXMgKGN1cnJlbnRseSB0byAnbG9jYWwnIG9ubHkpIHdpdGgKLXRoZSAnbm8nIHZlcnNpb24gb2YgdGhpcyBjb21tYW5kLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYXV0aGVudGljYXRpb24tbG9naW4tdXNlLWxvY2FsIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYXV0aGVudGljYXRpb24tbG9naW4tdXNlLWxvY2FsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0MzExMWNhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhlbnRpY2F0aW9uLWxvZ2luLXVzZS1sb2NhbAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQ29uZmlndXJlIHRoZSBsb2NhbCBwYXNzd29yZCBkYXRhYmFzZSAoVU5JWCAvZXRjL3Bhc3N3ZCkKLWFzIGFuIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhlbnRpY2F0aW9uLWxvZ2luLXVzZS10YWNhY3MgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRoZW50aWNhdGlvbi1sb2dpbi11c2UtdGFjYWNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ZTdlMmJjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhlbnRpY2F0aW9uLWxvZ2luLXVzZS10YWNhY3MKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVVzZSB0aGUgc2V0IG9mIGFsbCBkZWZpbmVkIFRBQ0FDUysgc2VydmVycyAodGhlICd0YWNhY3MrJyBncm91cCkKLWFzIGFuIGF1dGhlbnRpY2F0aW9uIHNvdXJjZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhvcml6YXRpb24gYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRob3JpemF0aW9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlYTRkZWNjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhvcml6YXRpb24KKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUNvbmZpZ3VyZSBhdXRob3JpemF0aW9uICh1c2VyIHByaXZpbGVnZXMpLiAgVXNlcnMgYXJlIGF1dGhvcml6ZWQgZm9yIGEgc3BlY2lmaWMgcm9sZQotYW5kIHZpYSBhIHNwZWNpZmljIGNoYW5uZWwsIHVzaW5nIG9uZSBvciBtb3JlIGF1dGhvcml6YXRpb24gc291cmNlcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhvcml6YXRpb24tZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhvcml6YXRpb24tZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjRkZmVkZC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRob3JpemF0aW9uLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1hYWEgYXV0aG9yaXphdGlvbiBleGVjIGRlZmF1bHQgZ3JvdXAgdGFjYWNzKwotICBVc2UgVEFDQUNTKyBmb3IgYXV0aG9yaXppbmcgQ0xJIGFjY2VzcwotCi1hYWEgYXV0aG9yaXphdGlvbiBleGVjIGRlZmF1bHQgbG9jYWwKLSAgVXNlIGxvY2FsIFVOSVggL2V0Yy9wYXNzd2QgZm9yIGF1dGhvcml6aW5nIENMSSBhY2Nlc3MKLQotYWFhIGF1dGhvcml6YXRpb24gZXhlYyBkZWZhdWx0IGdyb3VwIHRhY2FjcysgbG9jYWwKLSAgVXNlIGJvdGggVEFDQUNTKyBhbmQgL2V0Yy9wYXNzd2QgZm9yIENMSSBhdXRob3JpemF0aW9uCi0KLW5vIGFhYSBhdXRob3JpemF0aW9uIGV4ZWMgZGVmYXVsdAotICBSZXNldCBhdXRob3JpemF0aW9uIHNvdXJjZXMgZm9yIFNTSCBDTEkgYWNjZXNzLgotCi0KLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYXV0aG9yaXphdGlvbi1leGVjIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYXV0aG9yaXphdGlvbi1leGVjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkZDU4MzViLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhvcml6YXRpb24tZXhlYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUNvbmZpZ3VyZSBhdXRob3JpemF0aW9uIHNvdXJjZXMgZm9yIGV4ZWMgbW9kZSAoQ0xJIGFjY2VzcykuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRob3JpemF0aW9uLWV4ZWMtdXNlLWRlZmF1bHQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRob3JpemF0aW9uLWV4ZWMtdXNlLWRlZmF1bHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDlhMzkwNTEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYXV0aG9yaXphdGlvbi1leGVjLXVzZS1kZWZhdWx0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1Db25maWd1cmUgYXV0aG9yaXphdGlvbiBzb3VyY2VzIHdoaWxlIGNvbm5lY3RpbmcgdmlhIHRoZSBkZWZhdWx0IGNoYW5uZWwKLShjdXJyZW50bHkgU1NIKS4KLQotUmVzZXQgdGhlIGF1dGhvcml6YXRpb24gc291cmNlcyAoY3VycmVudGx5IHRvICdsb2NhbCcgb25seSkgd2l0aAotdGhlICdubycgdmVyc2lvbiBvZiB0aGlzIGNvbW1hbmQuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRob3JpemF0aW9uLWV4ZWMtdXNlLWxvY2FsIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FhYS9hYWEtYXV0aG9yaXphdGlvbi1leGVjLXVzZS1sb2NhbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOTU0MGExNC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRob3JpemF0aW9uLWV4ZWMtdXNlLWxvY2FsCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1Db25maWd1cmUgdGhlIGxvY2FsIHBhc3N3b3JkIGRhdGFiYXNlIChVTklYIC9ldGMvcGFzc3dkKQotYXMgYW4gYXV0aG9yaXphdGlvbiBtZWNoYW5pc20uCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWFhL2FhYS1hdXRob3JpemF0aW9uLWV4ZWMtdXNlLXRhY2FjcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhvcml6YXRpb24tZXhlYy11c2UtdGFjYWNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiYmRkYzZjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hYWEvYWFhLWF1dGhvcml6YXRpb24tZXhlYy11c2UtdGFjYWNzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1Vc2UgdGhlIHNldCBvZiBhbGwgZGVmaW5lZCBUQUNBQ1MrIHNlcnZlcnMgKHRoZSAndGFjYWNzKycgZ3JvdXApCi1hcyBhbiBhdXRob3JpemF0aW9uIHNvdXJjZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2FjdGl2ZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2FjdGl2ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYWJhNWFlYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9hY3RpdmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVNldCB0aGUgYWRkcmVzcy1zcGFjZSBhY3RpdmUuIElmIGFuIGFkZHJlc3Mtc3BhY2UgaXMgaW5hY3RpdmUgdGhlCi1jb250cm9sbGVyIHdpbGwgbm90IHVzZSBpdCBvciBpdHMgcnVsZXMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9hY3RpdmUtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2FjdGl2ZS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4OGIxYTQzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2FjdGl2ZS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1hY3RpdmUKLSAgV2l0aGluIGFuIGFkZHJlc3Mtc3BhY2UgY29uZmlnIHN1Yi1tb2RlLAotICBzZXQgdGhpcyBhZGRyZXNzLXNwYWNlIGFzIGFjdGl2ZQotCi1ubyBhY3RpdmUKLSAgRGVhY3RpdmF0ZSB0aGUgY3VycmVudGx5LWNvbmZpZ3VyZWQgYWRkcmVzcyBzcGFjZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvYWRkcmVzcy1zcGFjZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2FkZHJlc3Mtc3BhY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGY0ZTNmY2IuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvYWRkcmVzcy1zcGFjZQorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotU2V0IHVwIG9yIHRlYXIgZG93biBhZGRyZXNzIHNwYWNlIGRlZmluaXRpb25zLgotCi1TcGVjaWZ5aW5nIGFuIGFkZHJlc3Mgc3BhY2UgYnkgbmFtZSBlbnRlcnMgdGhlIGFkZHJlc3Mtc3BhY2UKLWNvbmZpZ3VyYXRpb24gc3ViLW1vZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9hZGRyZXNzLXNwYWNlLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9hZGRyZXNzLXNwYWNlLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDFlZTgxMWMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvYWRkcmVzcy1zcGFjZS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1hZGRyZXMtc3BhY2UgTVktQUREUkVTUwotICBEZWZpbmUgYSBuZXcgYWRkcmVzcyBzcGFjZSwgYW5kIGVudGVyIGl0cyBjb25maWd1cmF0aW9uIHN1Ym1vZGUKLQotbm8gYWRkcmVzcy1zcGFjZSBNWS1BRERSRVNTCi0gIERlbGV0ZSBhbiBhZGRyZXNzIHNwYWNlIGJ5IG5hbWUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2Rlc2NyaXB0aW9uIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvZGVzY3JpcHRpb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGYzZDg3YTcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvZGVzY3JpcHRpb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1BIHVzZXIgcHJvdmlkZWQgdGV4dHVhbCBkZXNjcmlwdGlvbiBmb3IgdGhpcyBhZGRyZXNzLXNwYWNlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvZGVzY3JpcHRpb24tZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2Rlc2NyaXB0aW9uLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGVhMmI1ZTguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvZGVzY3JpcHRpb24tZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotZGVzY3JpcHRpb24gIlRISVMgSVMgTVkgQUREUkVTUy1TUEFDRSIKLSAgQXNzb2NpYXRlIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiB3aXRoIHRoaXMgYWRkcmVzcy1zcGFjZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvaWQtYWN0aXZlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvaWQtYWN0aXZlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiMDFkY2Q4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2lkLWFjdGl2ZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUNvbmZpZ3VyZSB0aGlzIGFkZHJlc3Mgc3BhY2UgaWRlbnRpZmllciBydWxlIGFzICdhY3RpdmUnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvaWQtYWN0aXZlLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9pZC1hY3RpdmUtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjY4OGZkYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9pZC1hY3RpdmUtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotYWN0aXZlCi0gIENvbmZpZ3VyZSB0aGlzIGFkZHJlc3Mgc3BhY2UgaWRlbnRpZmllciBydWxlIGFzIGFjdGl2ZQotCi1ubyBhY3RpdmUKLSAgRGVhY3RpdmF0ZSB0aGlzIGFkZHJlc3Mgc3BhY2UgaWRlbnRpZmllciBydWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9pZC1kZXNjcmlwdGlvbiBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2lkLWRlc2NyaXB0aW9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzZjEwYmZhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2lkLWRlc2NyaXB0aW9uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQSB1c2VyIHByb3ZpZGVkIHRleHR1YWwgZGVzY3JpcHRpb24gZm9yIHRoaXMgaWRlbnRpZmllci1ydWxlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvaWQtZGVzY3JpcHRpb24tZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2lkLWRlc2NyaXB0aW9uLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGZkOTIzZGUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvaWQtZGVzY3JpcHRpb24tZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotZGVzY3JpcHRpb24gIlRoaXMgaXMgcnVsZTQyIgotICBQcm92aWRlIGEgZGVzY3JpcHRpb24gZm9yIHRoZSBjdXJyZW50bHktZGVmaW5lZCBhZGRyZXNzLXNwYWNlIGlkZW50aWZpZXIgcnVsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvaWQtcHJpb3JpdHkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9pZC1wcmlvcml0eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjM0ZTA3ZS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9pZC1wcmlvcml0eQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGhlIHByaXJvcml0eSBvZiB0aGlzIGlkZW50aWZpZXItcnVsZS4gSGlnaGVyIG51bWVyaWMgdmFsdWVzIHJlcHJlc2VudAotaGlnaGVyIHByaW9yaXR5LiBUaGUgaGlnaGVzdCBwcmlvcml0eSBpZGVudGlmaWVyLXJ1bGUgdGhhdCBtYXRjaGVzIGEKLWdpdmVuIHBhY2tldCB3aWxsIGJlIGNob29zZW4uIApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvaWQtcHJpb3JpdHktZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2lkLXByaW9yaXR5LWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDkxZGExZjYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvaWQtcHJpb3JpdHktZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcHJpb3JpdHkgMTAwCi0gIFNldCB0aGUgcHJpb3JpdHkgZm9yIHRoZSBjdXJyZW50bHktZGVmaW5lZCBhZGRyZXNzLXNwYWNlIGlkZW50aWZpZXIgcnVsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvaWRlbnRpZmllciBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2lkZW50aWZpZXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE2Mzc4OTYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvaWRlbnRpZmllcgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgYWRkcmVzcy1zcGFjZS4gIFRoZSBhZGRyZXNzLXNwYWNlIG5hbWUgImRlZmF1bHQiCi1yZXByZXNlbnRzIHRoZSBkZWZhdWx0IGFkZHJlc3Mgc3BhY2UgdGhhdCB3aWxsIGJlIHVzZWQgaWYgbm8gb3RoZXIKLWFkZHJlc3Mtc3BhY2UgbWF0Y2hlcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2lkZW50aWZpZXItcnVsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2lkZW50aWZpZXItcnVsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzZkNTE4MC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9pZGVudGlmaWVyLXJ1bGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVNldCBhbiBhZGRyZXNzLXNwYWNlIGlkZW50aWZpZXIgcnVsZSBhbmQgZW50ZXIgc3VibW9kZS4gRGV2aWNlcyBhcmUKLWFzc2lnbmVkIGludG8gYWRkcmVzcy1zcGFjZXMgYmFzZWQgb24gaWRlbnRpZmllci1ydWxlcy4gCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9pZGVudGlmaWVyLXJ1bGUtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2lkZW50aWZpZXItcnVsZS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiODEzMDMzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL2lkZW50aWZpZXItcnVsZS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1pZGVudGlmaWVyLXJ1bGUgcnVsZTQyCi0gIERlZmluZSBhIG5ldyBpZGVudGlmaWVyIHJ1bGUgZm9yIHRoaXMgYWRkcmVzcy1zcGFjZSBkZWZpbml0aW9uLAotICBhbmQgZW50ZXIgdGhlIGlkZW50aWZpZXItcnVsZSBzdWJtb2RlCi0KLW5vIGlkZW50aWZpZXItcnVsZSBydWxlNDIKLSAgRGVsZXRlIGFuIGlkZW50aWZpZXIgcnVsZSBhc3NvY2lhdGVkIHdpdGggdGhlCi0gIGN1cnJlbnRseS1kZWZpbmUgYWRkcmVzcy1zcGFjZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvbWF0Y2ggYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWU3MzcyMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQ29uZmlndXJlIGEgbWF0Y2ggZm9yIHRoaXMgaWRlbnRpZmllciBydWxlLiBJZiBtdWx0aXBsZSBtYXRjaGVzIGFyZQotY29uZmlndXJlZCB0aGV5IHdpbGwgYmUgbG9naWNhbGx5IEFORCdlZC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL21hdGNoLXN3aXRjaCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL21hdGNoLXN3aXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTgwNWNjMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaC1zd2l0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLUFzc29jaWF0ZSBhIHN3aXRjaCBvciBzZXQgb2Ygc3dpdGNoIGludGVyZmFjZXMgd2l0aCB0aGlzIGlkZW50aWZpZXIKLXJ1bGUuIERldmljZXMgcHJlc2VudCBvbiB0aGUgc3BlY2lmaWVkIHN3aXRjaC9pbnRlcmZhY2VzIHdpbGwgYmUKLW1hdGNoZWQuIApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvbWF0Y2gtc3dpdGNoLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaC1zd2l0Y2gtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWEzZDRiMS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaC1zd2l0Y2gtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLW1hdGNoIHN3aXRjaCAwMDowMDoxMToyMjozMzo0NDo1NTo2NgotICAgIE1hdGNoZXMgYWxsIGludGVyZmFjZXMgb24gdGhlIHN3aXRjaCB3aXRoIHRoaXMgRFBJRC4KLQotbWF0Y2ggc3dpdGNoIDAwOjAwOjExOjIyOjMzOjQ0OjU1OjY2IEV0aGVybmV0MQotICAgIE1hdGNoZXMgaW50ZXJmYWNlIEV0aGVybmV0MSBvbiB0aGUgc3BlY2lmaWVkIHN3aXRjaC4KLQotbWF0Y2ggc3dpdGNoIDAwOjAwOjExOjIyOjMzOjQ0OjU1OjY2IEV0aGVybmV0MSxFdGhlcm5ldDUtMTAscG9ydDIKLSAgICBNYXRjaGVzIGludGVyZmFjZXMgRXRoZXJuZXQxLCBFdGhlcm5ldDUsIEV0aGVybmV0NiwgLi4uIEV0aGVybmV0MTAsCi0JYW5kIHBvcnQyIG9uIHRoZSBzcGVjaWZpZWQgc3dpdGNoLgotCi1tYXRjaCBzd2l0Y2ggVG9SLTEtMSAKLSAgICBNYXRjaGVzIHRoZSBzd2l0Y2ggd2l0aCB0aGUgYWxpYXMgJ1RvUi0xLTEnCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaC1zd2l0Y2gtcG9ydHMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaC1zd2l0Y2gtcG9ydHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJiMjhhNDMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvbWF0Y2gtc3dpdGNoLXBvcnRzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotUmVzdHJpY3QgdGhlIG1hdGNoIHRvIGEgc3dpdGNoIGludGVyZmFjZSBvciBsaXN0L3JhbmdlIG9mIHN3aXRjaCBpbnRlcmZhY2VzCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaC10YWcgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaC10YWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU0MTdmN2UuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvbWF0Y2gtdGFnCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1Bc3NvY2lhdGUgYSB0YWcgb3IgbGlzdCBvZiB0YWdzIHdpdGggdGhpcyBpZGVudGlmaWVyLXJ1bGUuIElmIGEgbGlzdCBvZgotdGFncyBpcyBnaXZlbiAqYWxsKiB0YWdzIG5lZWQgdG8gbWF0Y2guCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaC10YWctZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL21hdGNoLXRhZy1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0M2I0Zjc3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL21hdGNoLXRhZy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1tYXRjaCB0YWdzIG9yZy5zZG5wbGF0Zm9ybS50ZW5hbnQ9Q3VzdG9tZXJBCi0gICAgTWF0Y2hlcyBkZXZpY2VzIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIHRhZy4KLQotbWF0Y2ggdGFncyBvcmcuc2RucGxhdGZvcm0udGVuYW50PUN1c3RvbWVyQSxjb20uZXhhbXBsZS50eXBlPXJvdXRlcgotICAgIE1hdGNoZXMgZGV2aWNlcyB0aGF0IG1hdGNoICphbGwqIG9mIHRoZSBnaXZlbiB0YWdzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvbWF0Y2gtdmxhbiBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL21hdGNoLXZsYW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE4MWQ0ZTkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvbWF0Y2gtdmxhbgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQXNzb2NpYXRlIFZMQU5zIHdpdGggaWRlbnRpZmllci1ydWxlLiBJbiB0aGlzIHNvZnR3YXJlIHZlcnNpb24gdGhlCi1zcGVjaWZpZWQgVkxBTiBtdXN0IGJlIGVxdWFsIHRvIHZhbHVlIHNwZWNpZmllZCBmb3IgJ3ZsYW4tdGFnLW9uLWVncmVzcycKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL21hdGNoLXZsYW4tZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL21hdGNoLXZsYW4tZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYThkNDI1Mi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9tYXRjaC12bGFuLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLW1hdGNoIHZsYW5zIDEwMDEKLSAgQXNzb2NpYXRlIG9uZSBvciBtb3JlIFZMQU4gSURzIHdpdGggdGhpcyBpZGVudGlmZXIgcnVsZQotCi1ubyBtYXRjaCB2bGFucyAxMDAxCi0gIFJlbW92ZSBhIFZMQU4gSUQgYXNzb2NpYXRpb24gZnJvbSB0aGlzIGlkZW50aWZpZXIgcnVsZQotCi1ubyBtYXRjaCB2bGFucwotICBSZW1vdmUgYWxsIFZMQU4gSUQgYXNzb2NpYXRpb25zIGZyb20gdGhpcyBpZGVudGlmaWVyIHJ1bGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL29yaWdpbiBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL29yaWdpbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODhhOGYzYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9vcmlnaW4KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1EZXNjcmliZSB0aGUgb3JpZ2luIG9mIGFuIGFkZHJlc3Mgc3BhY2UKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL29yaWdpbi1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2Uvb3JpZ2luLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDYzNzA3Y2MuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2Uvb3JpZ2luLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLW9yaWdpbiByZXN0Ci0gIE5vdGUgdGhhdCB0aGlzIGFkZHJlc3Mtc3BhY2Ugd2FzIGNvbmZpZ3VyZWQgdmlhIFJFU1QKLQotbm8gb3JpZ2luIHJlc3QKLSAgUmVtb3ZlIHRoZSBvcmlnaW4gbm90YXRpb24gZm9yIHRoaXMgYWRkcmVzcy1zcGFjZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvcHJpb3JpdHkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9wcmlvcml0eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjdmZTliYy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9wcmlvcml0eQorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGhlIHByaXJvcml0eSBvZiB0aGlzIGFkZHJlc3Mtc3BhY2UuIEhpZ2hlciBudW1lcmljIHZhbHVlcyByZXByZXNlbnQKLWhpZ2hlciBwcmlvcml0eS4gQWxsIGlkZW50aWZpZXItcnVsZXMgb2YgdGhlIGhpZ2hlc3QgcHJpb3JpdHkKLWFkZHJlc3Mtc3BhY2Ugd2lsbCBiZSBldmFsdWF0ZWQgYmVmb3JlIGFueSBydWxlcyBvZiBvdGhlcgotYWRkcmVzcy1zcGFjZXMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9wcmlvcml0eS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2UvcHJpb3JpdHktZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggY2FkN2RhNS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9wcmlvcml0eS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1wcmlvcml0eSAxMDAKLSAgU2V0IHRoZSBwcmlvcml0eSBvZiB0aGlzIGN1cnJlbnRseS1kZWZpbmVkIGFkZHJlc3Mtc3BhY2UKLQotbm8gcHJpb3JpdHkgMTAwCi0gIFJlbW92ZSB0aGUgcHJldmlvdXMgcHJpb3JpdHkgZGVjbGFyYXRpb24sCi0gIGFuZCByZXNldCB0aGlzIGFkZHJlc3Mtc3BhY2UncyBwcmlvcml0eSB0byB0aGUgZGVmYXVsdCB2YWx1ZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2Uvc2hvdy1pZCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL3Nob3ctaWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDk1ODE0ZDMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2Uvc2hvdy1pZAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGhpcyAnc2hvdyBhZGRyZXNzLXNwYWNlJyBjb21tYW5kIHZhcmlhdGlvbiBpcyB1c2VkIHRvIGlkZW50aWZ5IGEKLXNwZWNpZmljIGFkZHJlc3Mtc3BhY2UgKHRoZSAnYWxsJyB0b2tlbiBwcm92aWRlcyBkaXNwbGF5IGZvciBldmVyeQotYWRkcmVzcy1zcGFjZUopLCB0byBkZXNjcmliZSBwYXJ0aWN1bGFyIG9wZXJhdGlvbmFsIG9yIGNvbmZpZ3VyZWQKLWRldGFpbHMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9zaG93LWlkLXJ1bGVzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2Uvc2hvdy1pZC1ydWxlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjFlMDRmNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS9zaG93LWlkLXJ1bGVzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGUgJ2lkZW50aWZpZXItcnVsZXMnIGtleXdvcmQgcmVxdWVzdHMgdGhlIGRpc3BsYXkgb2YgdGhlIGNvbmZpZ3VyZWQKLWlkZW50aWZpZXItcnVsZXMgZm9yIHRoZSBuYW1lZCBhZGRlcnNzLXNwYWNlLiAgVGhlIGFkZHJlc3Mtc3BhY2UKLWlkZW50aWZpZXItcnVsZXMgZGVzY3JpYmUgdGhlIG1lbWJlcnNoaXAgcnVsZXMgYXNzb2NpYXRlZCB3aXRoIGFuCi1hZGRyZXNzLXNwYWNlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2Uvdmxhbi10YWctb24tZWdyZXNzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2Uvdmxhbi10YWctb24tZWdyZXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3NzFiOTAxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9hZGRyZXNzLXNwYWNlL3ZsYW4tdGFnLW9uLWVncmVzcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQXNzb2NpYXRlcyBhIFZMQU4gd2l0aCB0aGlzIGFkZHJlc3Mtc3BhY2UuIFRoaXMgVkxBTiBpcyB1c2VkIGZvcgotaW50ZXJuYWwgZGlzYW1iaWd1YXRpb24gYW5kIGZvciB0YWdnaW5nIHBhY2tldHMgdGhhdCBlZ3Jlc3MgdG8gb3RoZXIKLW5ldHdvcmtzIChhY2NvcmRpbmcgdG8gaWRlbnRpZmllci1ydWxlIGNvbmZpZ3VyYXRpb24pLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2FkZHJlc3Mtc3BhY2Uvdmxhbi10YWctb24tZWdyZXNzLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS92bGFuLXRhZy1vbi1lZ3Jlc3MtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzIyZWMwMy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvYWRkcmVzcy1zcGFjZS92bGFuLXRhZy1vbi1lZ3Jlc3MtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotdmxhbi10YWctb24tZWdyZXNzIDQyCi0gIEFzc29jaWF0ZSBhIFZMQU4gdGFnIHdpdGggdGhpcyBhZGRyZXNzLXNwYWNlLgotICBFYWNoIGFkZHJlc3Mtc3BhY2UgbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgVkxBTiwgZWxzZSB0aGlzIGFkZHJlc3Mtc3BhY2UKLSAgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSBjb250cm9sbGVyCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY2xvY2svc2hvdyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jbG9jay9zaG93CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YjVmZTQ5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jbG9jay9zaG93CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGUgc2hvdyBjbG9jayBjb21tYW5kIGRpc3BsYXlzIHRoZSBkYXRlIGFuZCB0aW1lCi1vZiB0aGUgY29ubmVjdGVkIGNvbnRyb2xsZXIuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY2xvY2svc2hvdy1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Nsb2NrL3Nob3ctZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjNhNGZlMS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY2xvY2svc2hvdy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1zaG93IGNsb2NrCi0gICAgICBUaW1lICAgICA6IDIxOjE2OjQ2IFVUQyBUaHUgU2VwIDIwIDIwMTIKLQotc2hvdyBjbG9jayBkZXRhaWxzCi0gICAgVGltZSAgICAgOiAyMToyMToxNCBVVEMgVGh1IFNlcCAyMCAyMDEyCi0gICAgVGltZXpvbmUgOiBVVEMKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jbG9jay9zaG93LWZvcm1hdC1kZXRhaWxzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Nsb2NrL3Nob3ctZm9ybWF0LWRldGFpbHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDJmMzhiNDcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Nsb2NrL3Nob3ctZm9ybWF0LWRldGFpbHMKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRocyBvcHRpb24gcmVxdWVzdHMgdGhlIHRpbWV6b25lCi10byBiZSBkaXNwbGF5ZWQgYWxvbmcgd2l0aCB0aGUgdGltZSBhbmQgZGF0ZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbmZpZy9zaG93LWNvbmZpZyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb25maWcvc2hvdy1jb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbmZpZy9zaG93LWNvbmZpZworKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29uZmlnL3Nob3ctZmlyc3QgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29uZmlnL3Nob3ctZmlyc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDRmMTUyNjguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbmZpZy9zaG93LWZpcnN0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1XaGVuIGEgcGFpciBvZiBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBzZWxlY3RlZCwgd2l0aAotdGhlICdkaWZmJyBrZXl3b3JkIHNlcGFyYXRpbmcgdGhlIHR3byBmaWxlcywgdGhpcwotcG9zaXRpb25hbCBwYXJhbW1ldGVyIGlkZW50aWZpZXMgdGhlIGZpcnN0IG9mIHRoZQotdHdvIGNvbmZpZyBmaWxlcyB0byBkaWZmLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbmZpZy9zaG93LXNlY29uZCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb25maWcvc2hvdy1zZWNvbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU0MjgwNmMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbmZpZy9zaG93LXNlY29uZAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNlY29uZCBjb25maWd1cmF0aW9uIGZpbGUgc2VsZWN0aW9uLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbmZpZy9zaG93LXNpbmdsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb25maWcvc2hvdy1zaW5nbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGQ4YzVmYjkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbmZpZy9zaG93LXNpbmdsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotV2hlbiBhIHNpbmdsZSBjb25maWcgZmlsZSBpcyBzZWxlY3RlZCwgdGhlIGNvbXBsZXRlCi1jb250ZW50cyBvZiB0aGUgZmlsZSBpcyBkaXNwbGF5ZWQKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb25uZWN0L2Nvbm5lY3QgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29ubmVjdC9jb25uZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkY2FjMDBkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb25uZWN0L2Nvbm5lY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UaGUgY29ubmVjdCBjb21tYW5kIGRpcmVjdHMgdGhlIENMSSB0byBpc3N1ZSBSRVNUIEFQSSByZXF1ZXN0cyB0byB0aGUKLXNlbGVjdGVkIGNvbnRyb2xsZXIuICBUaGUgQ0xJIHVzZXMgdGhlIGNvbnRyb2xsZXIncyBSRVNUIEFQSSB0bwotcGVyZm9ybSBhbGwgY29uZmlndXJhdGlvbiwgcmV0cmlldmUgYWxsIHRoZSBkYXRhIGZvciBzaG93IGNvbW1hbmRzLAotYW5kIGFsc28gdG8gZ2VuZXJhdGUgdGhlIHJ1bm5pbmcgY29uZmlnLiAgVGhlIENMSSBpcyBhbiBhcHBsaWNhdGlvbgotd2hpY2ggcHJlc2VudHMgdGhlIGNvbnRyb2xsZXIncyBSRVNUIEFQSSB0byB0aGUgdXNlciwgYW5kIGNhbiBhbHNvCi1wcm92aWRlIHNvbWUgbGltaXRlZCBhaWQgdG8gYW4gYXBwbGljYXRpb24gd3JpdGUgdHJ5aW5nIHRvIHVzZSB0aGUKLVJFU1QgQVBJLCBzaW5jZSB0aGUgcmVxdWVzdHMgaXNzdWVkIGJ5IHRoZSBDTEkgY2FuIGJlIHZpZXdlZCB3aXRoIHRoZQotJ2RlYnVnIHJlc3QnIGNvbW1hbmQgKHVzZSAnaGVscCBkZWJ1ZyByZXN0JyBmb3IgbW9yZSBkZXRhaWxzKQotCi1XaGVuIHRoZSBjb250cm9sbGVyIGlzIHJ1bm5pbmcgYXMgYSBIQSBzbGF2ZSwgbWFueSBjb21tYW5kcyB3aWxsIG5vdAotYmUgYXZhaWxhYmxlLiAgSWYgdGhlIG1hc3RlciBoYXMgY29uZmlndXJlZCBwb3J0IDgwIHRvIGJlIGF2YWlsYWJsZQotKGNvbnRyb2xsZXItbm9kZSBpbnRlcmZhY2Ugc3VibW9kZSdzIGZpcmV3YWxsIGNvbW1hbmQpLCB0aGVuIGJ5IHVzaW5nCi10aGUgY29ubmVjdCBjb21tYW5kIHRvIHVzZSB0aGUgbWFzdGVyJ3MgUkVTVCBBUEksIHNzaCBjYW4gYmUgYXZvaWRlZC4KLVRoaXMgd291bGQgcHJlc2VydmUgdGhlIGNvbW1hbmQgaGlzdG9yeSwgYWxsb3dpbmcgYW4gZWFzeSB3YXkgdG8KLXJlLWlzc3VlIGZhaWxlZCBjb21tYW5kcy4KLQotVGhlIFJFU1QgQVBJIGZvciB0aGUgY29udHJvbGxlciBpcyB0eXBpY2FsbHkgY29uZmlndXJlZCBhdCBwb3J0IDgwLgotCi1Db21wbGV0aW9uIGZvciB0aGUgY29tbWFuZCB3aWxsIGRpc3BsYXkgYWxsIHRoZSBjdXJyZW50bHkga25vd24KLWNvbnRyb2xsZXJzLiAgSWYgdGhlIGNvbm5lY3Qgc3VjY2VlZHMsIHRoZSBsaXN0IG9mIGtub3duIGNvbnRyb2xsZXJzCi13aWxsIHZlcnkgbGlrZWx5IGJlIGRpZmZlcmVudC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb25uZWN0L2Nvbm5lY3QtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb25uZWN0L2Nvbm5lY3QtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjE1MWI5ZC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29ubmVjdC9jb25uZWN0LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLWNvbm5lY3QgbG9jYWxob3N0Ci0gICAgQ29ubmVjdCB0byB0aGUgY3VycmVudCBjb250cm9sbGVyIChyZWFsbHkgYSBuby1vcCkKLQotY29ubmVjdCBjb250cm9sbGVyLW5vZGUtYgotICAgIENvbm5lY3QgdG8gdGhlIGNvbnRyb2xsZXIgaWRlbnRpZmllZCBieSBhbiBhbGlhcwotCi1jb25uZWN0IDE5Mi4xNjguMi4xMjkgcG9ydCA4MDAwCi0gICAgQ29ubmVjdCB0byB0aGUgaWRlbnRpZmllZCBpcCBhZGRyZXNzCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29ubmVjdC9jb25uZWN0LWlkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Nvbm5lY3QvY29ubmVjdC1pZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWYzNTgwNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29ubmVjdC9jb25uZWN0LWlkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGhlIGFsaWFzIG9yIFVVSUQgdG8gaWRlbnRmeSB0aGUgY29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Nvbm5lY3QvY29ubmVjdC1pcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb25uZWN0L2Nvbm5lY3QtaXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGVmMmRmNTkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Nvbm5lY3QvY29ubmVjdC1pcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUFuIGlwIGFkZHJlc3MgdG8gaWRlbnRpZnkgdGhlIGNvbnRyb2xsZXIncyBSRVNUIEFQSQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Nvbm5lY3QvY29ubmVjdC1wb3J0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Nvbm5lY3QvY29ubmVjdC1wb3J0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkZDVlM2I0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb25uZWN0L2Nvbm5lY3QtcG9ydAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUlkZW50aWZ5IHRoZSB0Y3AgcG9ydCBudW1iZXIgb2YgdGhlIFJFU1QgQVBJCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9hbGlhcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2FsaWFzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkOTg4ZDAzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2FsaWFzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQ29uZmlndXJlIGFuIGFsaWFzIGZvciB0aGUgY29udHJvbGxlciBub2RlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvYWxpYXMtbmFtZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2FsaWFzLW5hbWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDYwYWM4NjEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvYWxpYXMtbmFtZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGFsaWFzIGZvciB0aGUgY29udHJvbGxlciBub2RlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvY2xvY2stZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2Nsb2NrLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU5ZjhmZTcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvY2xvY2stZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotY2xvY2sgdGltZXpvbmUgQW1lcmljYS9Mb3NfQW5nZWxlcwotICBDb25maWd1cmUgYSBzcGVjaWZpYyB0aW1lem9uZSBmb3IgdGhpcyBjb250cm9sbGVyCi0KLW5vIGNsb2NrIHRpbWV6b25lCi0gIFJlbW92ZSBhbnkgdGltZXpvbmUgc2V0dGluZzsgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIFVUQy4KLQotY2xvY2sgc2V0IDE3OjMwOjAwIDEgSmFudWFyeSAxOTcwCi0gIFNldCB0aGUgY2xvY2sgbWFudWFsbHkKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2Nsb2NrLXNldCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2Nsb2NrLXNldApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggM2JkMTgzMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9jbG9jay1zZXQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1Db25maWd1cmUgdGhlIGNsb2NrIGZvciBhIGNvbnRyb2xsZXIgaW5zdGFuY2UuCi1XaXRoaW4gdGhlIGNvbnRyb2xsZXItbm9kZSBjb25maWd1cmF0aW9uIHN1Yi1tb2RlLCB0aGUgdXNlciBjYW4KLWNvbmZpZ3VyZSBzZXQgdGhlIGNsb2NrLgotCi1XaGVuIG9wZXJhdGluZyBpbiBIQSBtb2RlIHdpdGggbXVsdGlwbGUgY29udHJvbGxlcnMsIHNldHRpbmcgdGhlIGNsb2NrCi1vZiB0aGUgY29udHJvbGxlcnMgdG8gZGlmZmVyZW50IHZhbHVlcyB3aWxsIGhhdmUgYW4gZWZmZWN0IG9uIGRhdGFiYXNlCi1yZWNvbmNpbGlhdGlvbi4gICBTaW5jZSB0aW1lIHN0YW1wcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggb2YgdGhlCi1zaGFyZWQgaXRlbXMgYXJlIG1vcmUgdXAtdG8tZGF0ZSwgaWYgdGhlIHRpbWUgYmV0d2VlbiBjb250cm9sbGVycyBpcwotdmVyeSBza2V3ZWQsIHRoZSBhbnkgZGF0YWJhc2UgdXBkYXRlcyBhcHBsaWVkIG1heSBvciBtYXkgbm8gYmUgYXBsaWVkCi1jb3JyZWN0bHkuICAgSXQgaXMgYmV0dGVyIHRvIHRyeSB0byBkZWFsIHdpdGggdGltZSBza2V3IGluIHRoZSBtdWx0aXBsZQotY29udHJvbGxlciBlbnZpcm9tZW5tZW50IGJ5IHVzaW5nIG50cGRhdGUuCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2Nsb2NrLXNldC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvY2xvY2stc2V0LWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDM4YWIxNDIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvY2xvY2stc2V0LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWNsb2NrIHNldCAxNzozMDowMCAxIEphbnVhcnkgMTk3MAotICBTZXQgdGhlIGNsb2NrIG1hbnVhbGx5CmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9jbG9jay10aW1lem9uZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2Nsb2NrLXRpbWV6b25lCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwYTc4ODIyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2Nsb2NrLXRpbWV6b25lCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1Db25maWd1cmUgdGhlIHRpbWV6b25lIGZvciBhIGNvbnRyb2xsZXIgaW5zdGFuY2UncyBjbG9jay4KLVdpdGhpbiB0aGUgY29udHJvbGxlci1ub2RlIGNvbmZpZ3VyYXRpb24gc3ViLW1vZGUsIHRoZSB1c2VyIGNhbgotY29uZmlndXJlIHRoZSBsb2NhbCB0aW1lem9uZSBmb3IgdGhlIG5vZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9jbG9jay10aW1lem9uZS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvY2xvY2stdGltZXpvbmUtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjQyODExOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9jbG9jay10aW1lem9uZS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1jbG9jayB0aW1lem9uZSBBbWVyaWNhL0xvc19BbmdlbGVzCi0gIENvbmZpZ3VyZSBhIHNwZWNpZmljIHRpbWV6b25lIGZvciB0aGlzIGNvbnRyb2xsZXIKLQotbm8gY2xvY2sgdGltZXpvbmUKLSAgUmVtb3ZlIGFueSB0aW1lem9uZSBzZXR0aW5nOyB0aGUgZGVmYXVsdCBpcyB0byB1c2UgVVRDLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvY29udHJvbGxlci1ub2RlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvY29udHJvbGxlci1ub2RlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhODY2YTc2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2NvbnRyb2xsZXItbm9kZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUVudGVyIGEgc3VibW9kZSB0byBjb25maWd1cmUgdGhlIHNldHRpbmdzIGZvciB0aGUgY29udHJvbGxlciBub2RlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvY29udHJvbGxlci1ub2RlLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9jb250cm9sbGVyLW5vZGUtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjExOTc4YS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9jb250cm9sbGVyLW5vZGUtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotY29udHJvbGxlci1ub2RlIGxvY2FsaG9zdAotICBFbnRlciBjb25maWd1cmF0aW9uIHN1Yi1tb2RlIGZvciB0aGUgY3VycmVudCBjb250cm9sbGVyCi0KLWNvbnRyb2xsZXItbm9kZSAzOWRmOWEzMC0wY2U3LTQyM2ItOThiYS04NmQ1NDNhZWNmMDUKLSAgRW50ZXIgY29uZmlndXJhdGlvbiBzdWItbW9kZSBmb3IgYSBzcGVjaWZpYyAocG9zc2libHkgcmVtb3RlKSBjb250cm9sbGVyCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9jb250cm9sbGVyLW5vZGUtbmFtZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2NvbnRyb2xsZXItbm9kZS1uYW1lCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlM2ZmZmQxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2NvbnRyb2xsZXItbm9kZS1uYW1lCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU3BlY2lmeSB0aGUgbmFtZSBvZiBvbmUgb2YgdGhlIG5vZGVzIGluIHRoZSBjb250cm9sbGVyIGNsdXN0ZXIuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ZpcmV3YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhMmY2NWVlLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ZpcmV3YWxsCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1Db25maWd1cmUgYSBmaXJld2FsbCBydWxlIHRvIGFsbG93IHRyYWZmaWMgdG8gdGhlIHNwZWNpZmllZCBwb3J0IG51bWJlcgotYW5kIHByb3RvY29sICh0Y3AsIHVkcCwgb3IgdnJycCkgb2YgdGhlIGNvbnRyb2xsZXIgbm9kZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ZpcmV3YWxsLWFsbG93IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtYWxsb3cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDJlOWU5NmEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtYWxsb3cKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRoZSAnYWxsb3cnIGtleXdvcmQgY29uZmlndXJlcyBhIGZpcmV3YWxsIHJ1bGUgd2hpY2gKLWRlc2NyaWJlcyBhIG1hdGNoIGNvbmRpdGlvbiBmb3IgdHJhZmZpYy4gIFdoZW4gdGhlIGNvbmRpdGlvbgotaXMgc2F0aXNmaWVkLCB0aGUgdHJhZmZpYyBpcyBhbGxvd2VkLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtbG9jYWwtaXAgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1sb2NhbC1pcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODA5YjA5Zi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1sb2NhbC1pcAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQXNzb2NpYXRlIHRoZSBmaXJld2FsbCBydWxlIHdpdGggYSBzcGVjaWZpYyBkZXN0aW5hdGlvbiBpcCBhZGRyZXNzLgotVGhlIHJ1bGUgd2lsbCBhcHBseSBvbmx5IHRvIGlwIGZyYW1lcyBmb3IgdGhpcyBkZXN0aW5hdGlvbiBpcCBhZGRyZXNzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtb3BlbmZsb3cgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1vcGVuZmxvdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTgyYTIwMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1vcGVuZmxvdworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRoZSAnb3BlbmZsb3cnIGtleXdvcmQgaWRlbnRpZmllcyBwb3J0IDY2MzMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1wb3J0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtcG9ydApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNGNjMzg5Mi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1wb3J0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1TcGVjaWZ5IHRoZSBwb3J0IHRvIHdoaWNoIHRyYWZmaWMgaXMgYWxsb3dlZCBpbiB0aGUgZmlyZXdhbGwgcnVsZS4KLVRoZSBwb3J0IGNhbiBiZSBhbiBleHBsaWNpdCBwb3J0IG51bWJlciBvciBvbmUgb2YgdGhlIGZvbGxvd2luZwotbmFtZWQgcG9ydHM6ICdvcGVuZmxvdycgKHBvcnQgNjYzMyksICd3ZWInIChwb3J0IDgwKSwKLSdzc2wnIChwb3J0IDQ0Mykgb3IgJ3NzaCcgKHBvcnQgMjIpLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtcHJvdG9jb2wgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1wcm90b2NvbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZWU4ZGY0YS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1wcm90b2NvbAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU3BlY2lmeSB0aGUgaXAgcHJvdG9jb2wgZm9yIHRoZSBmaXJld2FsbCBydWxlLiBUaGUgdmFsdWUgY2FuIGJlCi1laXRoZXIgJ3VkcCcsICd0Y3AnLCBvciAndnJycCcuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1zcmMtaXAgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1zcmMtaXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA3M2NkMTEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtc3JjLWlwCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1Bc3NvY2lhdGUgdGhlIGZpcmV3YWxsIHJ1bGUgd2l0aCBhIHNwZWNpZmljIHNvdXJjZSBpcCBhZGRyZXNzLgotVGhlIHJ1bGUgd2lsbCBhcHBseSBvbmx5IHRvIGlwIGZyYW1lcyB3aXRoIHRoaXMgb3JpZ2luYXRpbmcgaXAgYWRkcmVzcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ZpcmV3YWxsLXNzaCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ZpcmV3YWxsLXNzaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjFiY2FjMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1zc2gKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1UaGUgJ3NzaCcga2V5d29yZCBpZGVudGlmaWVkIHBvcnQgMjIuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1zc2wgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC1zc2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDY3ODk2ZDQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtc3NsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGhlICdzc2wnIGtleXdvcmQgaWRlbnRpZmllcyBwb3J0IDQ0My4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ZpcmV3YWxsLXRjcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ZpcmV3YWxsLXRjcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGMwOWE4ZC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC10Y3AKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUJ5IHNlbGVjdGluZyB0aGUgJ3RjcCcga2V5d29yZCwgdGhlIG1hdGNoZWQgaXAgcHJvdG9jb2wgaXMgdGNwLiAgQSBwb3J0IG51bWJlcgotbXVzdCBiZSBpbmNsdWRlZCBmb3IgdGhpcyBzZWxlY3Rpb24uCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC11ZHAgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC11ZHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGUyNDkxNWQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtdWRwCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1CeSBzZWxlY3RpbmcgdGhlICd1ZHAnIGtleXdvcmQsIHRoZSBtYXRjaGVkIGlwIHByb3RvY29sIGlzIHVkcC4gIEEgcG9ydCBudW1iZXIKLW11c3QgYmUgaW5jbHVkZWQgZm9yIHRoaXMgc2VsZWN0aW9uLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtdnJycCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ZpcmV3YWxsLXZycnAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU4NTJmOTguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvZmlyZXdhbGwtdnJycAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRoZSAndnJycCcga2V5d29yZCBpZGVudGlmaWVzIHRoZSBydWxlIG1hdGNoIGZvciB0aGUgdnJycCBpcCBwcm90b2NvbC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ZpcmV3YWxsLXdlYiBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ZpcmV3YWxsLXdlYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMmU1OGFlZS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9maXJld2FsbC13ZWIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoZSAnd2ViJyBrZXl3b3JkIGlkZW50aWZpZXMgcG9ydCA4MC4gIFRoaXMgaXMgbm90IG9ubHkgdGhlIHR5cGljYWwgd2ViIGludGVyZmFjZSwKLWJ1dCBhbHNvIHRoZSBwb3J0IGZvciBSRVNUIEFQSSByZXF1ZXN0cy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDI0ODAzYzkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaWQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IHRoZSBpZCBvciBhbGlhcyBvZiB0aGUgY29udHJvbGxlciBub2RlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaW50ZXJmYWNlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaW50ZXJmYWNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4MTY4ZDhkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ludGVyZmFjZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUVudGVyIGEgc3VibW9kZSB0byBjb25maWd1cmUgYSBuZXR3b3JrIGludGVyZmFjZSBvZiB0aGUgY29udHJvbGxlciBub2RlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaW50ZXJmYWNlLW51bWJlciBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ludGVyZmFjZS1udW1iZXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDYwZTU5NmMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaW50ZXJmYWNlLW51bWJlcgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNwZWNpZnkgdGhlIG51bWJlciBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2UuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pbnRlcmZhY2UtdHlwZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ludGVyZmFjZS10eXBlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkZTNhYTg3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2ludGVyZmFjZS10eXBlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU3BlY2lmeSB0aGUgdHlwZSBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2UsIGUuZy4gRXRoZXJuZXQuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlNjZiMGIyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQ29uZmlndXJlIHRoZSBJUC1yZWxhdGVkIHNldHRpbmdzIG9mIHRoZSBjb250cm9sbGVyIG5vZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1hZGRyZXNzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaXAtYWRkcmVzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjMzMjdlYy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1hZGRyZXNzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1TcGVjaWZ5IHRoZSBJUCBhZGRyZXNzIGFzIGVpdGhlciBhbiBhZGRyZXNzIGFuZCBuZXRtYXNrIHBhaXIKLShlLmcuIDE5Mi4xNjguMS4xIDI1NS4yNTUuMjU1LjApIG9yIGEgQ0lEUiBhZGRyZXNzCi0oZS5nLiAxOTIuMTY4LjEuMS8yNCkuIFRoaXMgdmFsdWUgaXMgb25seSB1c2VkIGlmIHRoZSBpcCBtb2RlIGlzIHNldCB0byAnc3RhdGljJy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLWFkZHJlc3MtY2lkciBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLWFkZHJlc3MtY2lkcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjVjZGUxMy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1hZGRyZXNzLWNpZHIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVNwZWNpZnkgdGhlIHN0YXRpY2FsbHktY29uZmlndXJlZCBDSURSIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgbm9kZQotKGUuZy4gMTkyLjE2OC4xLjEvMjQpLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaXAtYWRkcmVzcy1uZXRtYXNrIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaXAtYWRkcmVzcy1uZXRtYXNrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzY2M2NTk2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLWFkZHJlc3MtbmV0bWFzaworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU3BlY2lmeSB0aGUgc3RhdGljYWxseS1jb25maWd1cmVkIElQIG5ldG1hc2sgb2YgdGhlIGNvbnRyb2xsZXIgbm9kZQotKGUuZy4gMjU1LjI1NS4yNTUuMCkuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1hZGRyZXNzLXZhbHVlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaXAtYWRkcmVzcy12YWx1ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjljYTk5Ni4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1hZGRyZXNzLXZhbHVlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1TcGVjaWZ5IHRoZSBzdGF0aWNhbGx5LWNvbmZpZ3VyZWQgSVAgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBub2RlCi0oZS5nLiAxOTIuMTY4LjEuMSkuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1kZWZhdWx0LWdhdGV3YXkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1kZWZhdWx0LWdhdGV3YXkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGNlOGU5MGMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaXAtZGVmYXVsdC1nYXRld2F5CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQ29uZmlndXJlIHRoZSBkZWZhdWx0IGdhdGV3YXkgZm9yIHRoZSBjb250cm9sbGVyLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaXAtZGVmYXVsdC1nYXRld2F5LXZhbHVlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaXAtZGVmYXVsdC1nYXRld2F5LXZhbHVlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0Y2QyYTc5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLWRlZmF1bHQtZ2F0ZXdheS12YWx1ZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNwZWNpZnkgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGRlZmF1bHQgZ2F0ZXdheS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLWRvbWFpbiBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLWRvbWFpbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWI0YzkzMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1kb21haW4KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Db25maWd1cmUgRE5TLXJlbGF0ZWQgc2V0dGluZ3MgZm9yIHRoZSBjb250cm9sbGVyIG5vZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1kb21haW4tbG9va3VwcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLWRvbWFpbi1sb29rdXBzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjZTg3MDRhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLWRvbWFpbi1sb29rdXBzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQ29uZmlndXJlIHdoZXRoZXIgb3Igbm90IEROUyBsb29rdXBzIGFyZSBlbmFibGVkIG9uIHRoZSBjb250cm9sbGVyIG5vZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1kb21haW4tbmFtZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLWRvbWFpbi1uYW1lCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjOTMzMjcwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLWRvbWFpbi1uYW1lCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU3BlY2lmeSB0aGUgZGVmYXVsdCBkb21haW4gbmFtZSBmb3IgdGhlIGNvbnRyb2xsZXIuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1tb2RlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaXAtbW9kZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDI5ZmJlNC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1tb2RlCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1TcGVjaWZ5IHRoZSBtb2RlIGZvciBjb25maWd1cmluZyB0aGUgSVAgYWRkcmVzcywgZWl0aGVyICdzdGF0aWMnIHRvCi1zcGVjaWZ5IGFuIGV4cGxpY2l0IElQIGFkZHJlc3Mgb3IgJ2RoY3AnIHRvIG9idGFpbiB0aGUgSVAgYWRkcmVzcwotZnJvbSBhIERIQ1Agc2VydmVyLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvaXAtbmFtZS1zZXJ2ZXIgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1uYW1lLXNlcnZlcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggN2RlMzljNS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1uYW1lLXNlcnZlcgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQ29uZmlndXJlIGEgRE5TIHNlcnZlciBmb3IgdGhlIGNvbnRyb2xsZXIuIFRoZSBwcmlvcml0eSBvZiB0aGUgRE5TCi1zZXJ2ZXJzIGlzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgZW50ZXJlZCwgaS5lLiB0aGUgZmlyc3Qgb25lCi1lbnRlcmVkIGlzIHRoZSBwcmltYXJ5IEROUyBzZXJ2ZXIuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9pcC1uYW1lLXNlcnZlci12YWx1ZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLW5hbWUtc2VydmVyLXZhbHVlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmNjhiYzlkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2lwLW5hbWUtc2VydmVyLXZhbHVlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU3BlY2lmeSB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgRE5TIHNlcnZlci4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2xvZ2dpbmcgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9sb2dnaW5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiZGY4NTZlLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2xvZ2dpbmcKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRoZSBjb250cm9sbGVyLW5vZGUgbG9nZ2luZyBjb21tYW5kIGFsbG93cyBjb25maWd1cmF0aW9uCi1vZiBvdXRnb2luZyBzeXNsb2cgbWVzc2FnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50Ci1jb250cm9sbGVyCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9sb2dnaW5nLWVuYWJsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2xvZ2dpbmctZW5hYmxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiNzc3OTNlLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2xvZ2dpbmctZW5hYmxlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVXNpbmcgdGhlICdvbicga2V5d29yZCBpbiB0aGlzIGNvbW1hbmQgZW5hYmxlcyBzeXNsb2cgbG9nZ2luZy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2xvZ2dpbmctZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2xvZ2dpbmctZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGRkMWVjNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9sb2dnaW5nLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1sb2dnaW5nIG9uCi0gIEVuYWJsZSBsb2dnaW5nCi0KLW5vIGxvZ2dpbmcgb24KLSAgRGlzYWJsZSBsb2dnaW5nCi0KLWxvZ2dpbmcgc2VydmVyIDEuMi4zLjQKLSAgU2VuZCBzeXNsb2cgcmVjb3JkcyB0byBhIHNwZWNpZmljIHNlcnZlciBvciBkb21haW4gbmFtZQotCi1sb2dnaW5nIHNlcnZlciAxLjIuMi40IGxldmVsIHdhcm5pbmcKLSAgU2VuZCBzeXNsb2cgbWVzc2FnZXMgYXQgYSBzcGVjaWZpYyBsZXZlbCAobnVtZXJpYyBvciBzeW1ib2xpYykKLQotbm8gbG9nZ2luZyBzZXJ2ZXIgMS4yLjMuNApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvbG9nZ2luZy1sZXZlbCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2xvZ2dpbmctbGV2ZWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGI1OWUxMWMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvbG9nZ2luZy1sZXZlbAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGhlIGxvZ2dpbmcgbGV2ZWwgYWxsb3dzIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN5c2xvZyBsb2dnaW5nIGxldmVsLgotVGhlIGtleXdvcmRzIHByb3ZpZGVkIGRpcmVjdGx5IG1hcCB0byB0aGUgc3lzbG9nIGxldmVscywgYWx0aG91Z2gKLXRoZSBjb21tYW5kIGtleXdvcmRzIGFyZSBhYmJyZXZpYXRlZCB2ZXJzaW9ucyBvZiB0aGUgdHlwaWNhbCBzeXNsb2cKLWxldmVscy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL2xvZ2dpbmctc2VydmVyIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvbG9nZ2luZy1zZXJ2ZXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU4NTc4OGIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvbG9nZ2luZy1zZXJ2ZXIKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1UaGUgJ3NlcnZlcicga2V5d29yZCBwcmVmaXhlcyB0aGUgaXAgYWRkcmVzcyBvZiB0aGUgc3lzbG9nIHNlcnZlci4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL250cCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL250cApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzdlMmYzNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9udHAKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Db25maWd1cmUgdGhlIE5UUCBzZXJ2ZXIgZm9yIHRoZSBjb250cm9sbGVyIG5vZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9udHAtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL250cC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyY2JmMWM4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL250cC1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1udHAgc2VydmVyIDEuMi4zLjQKLSAgU2V0IHRoZSBOVFAgc2VydmVyIGFkZHJlc3MKLQotbm8gbnRwIHNlcnZlcgotICBEaXNhYmxlIHRoZSBOVFAgc2VydmVyCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9udHAtc2VydmVyIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvbnRwLXNlcnZlcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggM2Y5MjA5Ni4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9udHAtc2VydmVyCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU3BlY2lmeSB0aGUgaG9zdCBuYW1lIG9yIGlwIGFkZHJlc3Mgb2YgdGhlIE5UUCBzZXJ2ZXIuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZGQxMTRmMS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1TaG93IGNvbnRyb2xsZXItbm9kZSBkaXNwbGF5cyBvcGVyYXRpb25hbCBkZXRhaWxzIGZvciAKLXRoZSBpZGVudGlmaWVkIGNvbnRyb2xsZXIgbm9kZXMuICBBbW9uZyB0aGUgaXRlbXMKLWRpc3BsYXllZCBhcmUgdGhlIGNvbnRyb2xsZXItYWxpYXMsIHRoZSBIQSByb2xlLAotYW5kIGFsc28gYSBjb2x1bW4gbGFiZWxlZCAnQCcgdG8gaWRlbnRpZnkgdGhlIGNvbnRyb2xsZXIKLWN1cnJlbnRseSBjb25uZWN0ZWQgdG8gdGhlIENMSQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1hbGlhcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctYWxpYXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGE1ZjIzZDYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1hbGlhcworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNob3cgdGhlIGFsaWFzIGZvciB0aGUgc3BlY2lmaWVkIGNvbnRyb2xsZXIgbm9kZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctZGV0YWlsIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1kZXRhaWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDY5MDI4YzAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1kZXRhaWwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IHRoZSBkZXRhaWwgbGV2ZWwgZm9yIHRoZSBzaG93IGNvbW1hbmQuIFZhbHVlIGlzIGVpdGhlciAnZGV0YWlsJyBvciAnYnJpZWYnLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1kZXRhaWxzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1kZXRhaWxzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5NWQ3OGI1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctZGV0YWlscworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU2hvdyBjb250cm9sbGVyIG5vZGUgYXNzb2NpYXRlZCBpbmZvcm1hdGlvbiwgZm9yIGV4YW1wbGUgCi10aGUgaW50ZXJmYWNlcyBvciBzd2l0Y2hlcyByZWxhdGVkIHRvIGEgY29udHJvbGxlci4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctZmlyZXdhbGwgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LWZpcmV3YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhMzZiOWM3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctZmlyZXdhbGwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TaG93IHRoZSBmaXJld2FsbCBydWxlcyBmb3IgdGhlIHNwZWNpZmllZCBjb250cm9sbGVyIG5vZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LWlkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1pZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjQ4MDNjOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LWlkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU3BlY2lmeSB0aGUgaWQgb3IgYWxpYXMgb2YgdGhlIGNvbnRyb2xsZXIgbm9kZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctaW50ZXJmYWNlcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctaW50ZXJmYWNlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTQ1Mzg1My4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LWludGVyZmFjZXMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1EaXNwbGF5IGFsbCB0aGUgaW50ZXJmYWNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBjb250cm9sbGVyLW5vZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LWludGVyZmFjZXMtbnVtYmVyIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1pbnRlcmZhY2VzLW51bWJlcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNGYzMDc1MC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LWludGVyZmFjZXMtbnVtYmVyCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU3BlY2lmeSB0aGUgbnVtYmVyIG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZSB0byBzaG93LgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1pbnRlcmZhY2VzLXR5cGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LWludGVyZmFjZXMtdHlwZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDNiYTY5OC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LWludGVyZmFjZXMtdHlwZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNwZWNpZnkgdGhlIHR5cGUgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIHRvIHNob3csIGUuZy4gRXRoZXJuZXQuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN0YXRzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1zdGF0cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjcyMjA4ZC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN0YXRzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU2hvdyBzdGF0aXN0aWNzIGZvciB0aGUgc3BlY2lmaWVkIGNvbnRyb2xsZXIgbm9kZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtZGF0YS1mb3JtYXQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN0YXRzLWRhdGEtZm9ybWF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0MTcxZDY2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtZGF0YS1mb3JtYXQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TaG93IGVpdGhlciB0aGUgYWN0dWFsIHZhbHVlIG9yIHRoZSByYXRlIG9mIGNoYW5nZSBvZiB0aGUgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgc3RhdHMgdHlwZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtZGlzcGxheSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtZGlzcGxheQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZmYzNTNmMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN0YXRzLWRpc3BsYXkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TaG93IHRoZSBzcGVjaWZpZWQgc3RhdHMgYXMgZWl0aGVyIHRoZSBsYXRlc3QgdmFsdWUsIGdyYXBoIG9yIHRhYmxlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1zdGF0cy1kdXJhdGlvbiBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtZHVyYXRpb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDVmY2VjMDAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1zdGF0cy1kdXJhdGlvbgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU3BlY2lmeSB0aGUgZHVyYXRpb24gZm9yIHdoaWNoIHRvIGRpc3BsYXkgc3RhdHMuIElmIHRoaXMgdmFsdWUgaXMgc3BlY2lmaWVkCi15b3Ugc2hvdWxkIHNwZWNpZnkgZWl0aGVyIHRoZSBzdGFydC10aW1lIG9yIGVuZC10aW1lIGJ1dCBub3QgYm90aC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtZW5kLXRpbWUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN0YXRzLWVuZC10aW1lCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkMTcxNzU3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtZW5kLXRpbWUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IHRoZSBlbmQgdGltZSBmb3IgZGlzcGxheWluZyB0aGUgY29udHJvbGxlciBzdGF0cy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtc2FtcGxlLWNvdW50IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1zdGF0cy1zYW1wbGUtY291bnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGNiYjE1MTkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1zdGF0cy1zYW1wbGUtY291bnQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IHRoZSBudW1iZXIgb2YgZGF0YSBwb2ludHMgdG8gc2hvdyBhY3Jvc3MgdGhlIHNwZWNpZmllZCB0aW1lIHJhbmdlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1zdGF0cy1zYW1wbGUtaW50ZXJ2YWwgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN0YXRzLXNhbXBsZS1pbnRlcnZhbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjkxYTYyYi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN0YXRzLXNhbXBsZS1pbnRlcnZhbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNwZWNpZnkgdGhlIGludGVydmFsIGJldHdlZW4gc2FtcGxlIHBvaW50cy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtc2FtcGxlLXdpbmRvdyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtc2FtcGxlLXdpbmRvdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzYyYzk1OC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN0YXRzLXNhbXBsZS13aW5kb3cKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVNwZWNpZnkgdGhlIHNhbXBsZSB3aW5kb3cgZm9yIHNob3dpbmcgdGhlIHN0YXRzLiBUaGUgc2FtcGxlIHdpbmRvdyBpcyB0aGUKLW51bWJlciBvZiByYXcgc3RhdCB2YWx1ZXMgdG8gYXZlcmFnZSBhcm91bmQgYSBkb3duLXNhbXBsZWQgZGF0YSBwb2ludC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtc3RhcnQtdGltZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtc3RhcnQtdGltZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODhiNDljYy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN0YXRzLXN0YXJ0LXRpbWUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IHRoZSBzdGFydCB0aW1lIGZvciBkaXNwbGF5aW5nIHRoZSBzdGF0cy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtdHlwZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3RhdHMtdHlwZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYWQyZDI2My4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN0YXRzLXR5cGUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IHRoZSB0eXBlIG9mIGNvbnRyb2xsZXIgc3RhdHMgdG8gc2hvdy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3VtbWFyeSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb250cm9sbGVyL3Nob3ctc3VtbWFyeQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjIyNGE2Ni4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN1bW1hcnkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TaG93IGEgc3VtbWFyeSBvZiB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBjb250cm9sbGVyIG5vZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29udHJvbGxlci9zaG93LXN3aXRjaGVzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1zd2l0Y2hlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDQyNjdkYTUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvbnRyb2xsZXIvc2hvdy1zd2l0Y2hlcworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNob3cgdGhlIHN3aXRjaGVzIGNvbm5lY3RlZCB0byB0aGUgc3BlY2lmaWVkIGNvbnRyb2xsZXIgbm9kZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3B5L2NvcHkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29weS9jb3B5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyMDMxYjgwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3B5L2NvcHkKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVRoZSBjb3B5IGNvbW1hbmQgd2l0aCBvbmUgcGFyYW1ldGVycyBjb3BpZXMgdGhlIGNvbnRlbnRzCi1vZiB0aGUgY29uZmlndXJhaW9uIGZpbGUgb3V0IGZvciBkaXNwbGF5LgotCi1UaGUgY29weSBjb21tYW5kIHdpdGggdHdvIHBhcmFtZXRlcnMgY29waWVzIHRoZSBjb250ZW50cwotb2YgdGhlIHJlcXVlc3RlZCBzb3VyY2UgaW50byB0aGUgZGVzc2luYXRpb24uCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29weS9jb3B5LWRlc3QgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29weS9jb3B5LWRlc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDlkYzJjYmMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcHkvY29weS1kZXN0CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotRGVzdGluYXRpb24gc3BlY2lmaWVyIGZvciB0aGUgY29weQotCi1UaGUga2V5d29yZCAncnVubmluZy1jb25maWcnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGNvbnRyb2xsZXIncwotY3VycmVudCBzdGF0ZSAodGhhdCBpcywgb3ZlcndyaXRlIHRoZSBydW5uaW5nIHN0YXRlKS4KLQotVGhlICdjb25maWc6Ly8nIFVSSSBzY2hlbWUgY2FuIGJlIHVzZWQgdG8gc2F2ZSBjb25maWcgZmlsZXMKLXRvIHRoZSBsb2NhbCBjb250cm9sbGVyJ3MgZGlzay4KLQotVGhlICdodHRwOi8vJyBhbmQgJ2Z0cDovLycgVVJJIHNjaGVtZXMgY2FuIGJlIHVzZWQgdG8gcmVmZXJlbmNlIHJlbW90ZQotcmVzb3VyY2VzLgotCi1JZiB0aGUgZGVzdGluYXRpb24gc3BlY2lmaWVyIGlzIG9taXR0ZWQsIHRoZSByZXNvdXJjZSByZWZlcmVuY2VkCi1ieSB0aGUgc291cmNlIHNwZWNpZmllciBpcyBzZW50IHRvIHRoZSBDbGkgY29uc29sZS4KLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcHkvY29weS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcHkvY29weS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiZGU1YzkwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3B5L2NvcHktZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIGNvcHkgcnVubmluZy1jb25maWcKLSAgIFZhcmlhdGlvbiBvZiB0aGUgJ3Nob3cgcnVubmluZy1jb25maWcnIGNvbW1hbmQKLQotIGNvcHkgcnVubmluZy1jb25maWcgY29uZmlnOi8veHl6Ci0gIENvcHkgdGhlIGN1cnJlbnQgcnVubmluZyBjb25maWcgaW50byB0aGUgY29uZmlndXJhdGlvbiAKLSAgdGFyZ2V0IG5hbWVkIGNvbmZpZzovL3h5egpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcHkvY29weS1zb3VyY2UgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29weS9jb3B5LXNvdXJjZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZGM5YmJkNS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29weS9jb3B5LXNvdXJjZQorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNvdXJjZSBzcGVjaWZpZXIgZm9yIHRoZSBjb3B5Ci0KLVRoZSBrZXl3b3JkICdydW5uaW5nLWNvbmZpZycgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgY29udHJvbGxlcidzCi1jdXJyZW50IHN0YXRlLgotCi1UaGUgJ2NvbmZpZzovLycgVVJJIHNjaGVtZSBjYW4gYmUgdXNlZCB0byByZWZlcmVuY2Ugc2F2ZWQgY29uZmlnIGZpbGVzCi1mcm9tIGEgcHJldmlvdXMgJ2NvcHknIGNvbW1hbmQuCi0KLVRoZSAnaHR0cDovLycgYW5kICdmdHA6Ly8nIFVSSSBzY2hlbWVzIGNhbiBiZSB1c2VkIHRvIHJlZmVyZW5jZSByZW1vdGUKLXJlc291cmNlcy4KLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvYm9vdCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL2Jvb3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA1OTIyZGEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvYm9vdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGhpcyBjb21tYW5kIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIHN5c3RlbSBib290IHBhcmFtZXRlcnMuICBBdCB0aGUKLW1vbWVudCwgeW91IGNhbiByZXN0b3JlIHRoZSBjb250cm9sbGVyIHRvIGl0cyBmYWN0b3J5IGRlZmF1bHQKLWNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlICdmYWN0b3J5LWRlZmF1bHQnIHBhcmFtZXRlci4gClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvYm9vdC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvYm9vdC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlY2Y5M2U1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL2Jvb3QtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVJlc2V0IGNvbnRyb2xsZXIgdG8gaXRzIGZhY3RvcnkgZGVmYXVsdCBzZXR0aW5ncy4KLSAgICBub2RlMShjb25maWcpIyBib290IGZhY3RvcnktZGVmYXVsdAotICAgIFJlLXNldHRpbmcgY29udHJvbGxlciB0byBmYWN0b3J5IGRlZmF1bHRzIC4uLgotICAgIFdhcm5pbmc6IFRoaXMgd2lsbCByZXNldCB5b3VyIGNvbnRyb2xsZXIgdG8gZmFjdG9yeS1kZWZhdWx0IHN0YXRlCi0gICAgICAgICAgICAgYW5kIHJlYm9vdCBpdC4gIFlvdSB3aWxsIGxvc2UgYWxsIG5vZGUvY29udHJvbGxlcgotICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBsb2dzCi0gICAgRG8geW91IHdhbnQgdG8gY29udGludWUgW25vXT8geWVzCi0gICAgUmVzZXR0aW5nIGNhc3NhbmRyYSBzdGF0ZSAuLi4KLSAgICBSZW1vdmluZyBleGlzdGluZyBsb2cgZmlsZXMgLi4uCi0gICAgcnN5c2xvZyBzdG9wL3dhaXRpbmcKLSAgICBSZXNldHRpbmcgc3lzdGVtIHN0YXRlIC4uLgotICAgIAotICAgIEN1cnJlbnQgZGVmYXVsdCB0aW1lIHpvbmU6ICdFdGMvVVRDJwotICAgIExvY2FsIHRpbWUgaXMgbm93OiAgICAgIFdlZCBPY3QgMjQgMDA6MDU6NDEgVVRDIDIwMTIuCi0gICAgVW5pdmVyc2FsIFRpbWUgaXMgbm93OiAgV2VkIE9jdCAyNCAwMDowNTo0MSBVVEMgMjAxMi4KLSAgICAKLSAgICBwYXNzd2Q6IHBhc3N3b3JkIGV4cGlyeSBpbmZvcm1hdGlvbiBjaGFuZ2VkLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvZmFjdG9yeS1kZWZhdWx0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvZmFjdG9yeS1kZWZhdWx0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3YTY3Y2NlLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL2ZhY3RvcnktZGVmYXVsdAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVJlc2V0IHRoZSBjb250cm9sbGVyIHRvIHRoZSBmYWN0b3J5IGRlZmF1bHQgY29uZmlndXJhdGlvbi4gIFRoaXMgd2lsbAotd2lwZSBvdXQgYWxsIGNvbmZpZ3VyYXRpb24gYW5kIGxvZ3MgZmlsZXMgYW5kIHJlc3RvcmUgdGhlIGNvbnRyb2xsZXIKLXRvIGl0cyBpbml0aWFsIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KLQotVGhpcyB3aWxsIHJlcXVpcmUgcmVib290aW5nIHRoZSBjb250cm9sbGVyIG5vZGUuICBXaGVuIHRoZSBjb250cm9sbGVyCi1maW5pc2hlcyByZWJvb3RpbmcsIHlvdSB3aWxsIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsICJmaXJzdCB0aW1lCi1zZXR1cCIgcHJvY2VzcywgaW5jbHVkaW5nIHJlY29uZmlndXJpbmcgdGhlIG5ldHdvcmsgaW50ZXJmYWNlCi1jb25maWd1cmF0aW9uLgotCi1Ob3RlIHRoYXQgaWYgeW91IGhhdmUgY3VzdG9taXplZCB0aGUgY29udHJvbGxlciBiYXNlIGltYWdlIHRocm91Z2gKLWRlYnVnIGZhY2lsaXRpZXMsIHRoZW4gc29tZSBjb25maWd1cmF0aW9uIG1heSBub3QgYmUgcmVzdG9yZWQgdGhyb3VnaAotdGhpcyBjb21tYW5kLiAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3Ugc3RhcnQKLXdpdGggYSBmcmVzaCBjb250cm9sbGVyIGltYWdlLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3JlbG9hZCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3JlbG9hZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTdiZGIyNS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS9yZWxvYWQKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1UaGlzIGNvbW1hbmQgd2lsbCByZXN0YXJ0IHRoaXMgY29udHJvbGxlciBub2RlLiAgSWYgeW91IGFyZSBydW5uaW5nIGFzCi1wYXJ0IG9mIGEgaGlnaCBhdmFpbGFiaWxpdHkgY2x1c3RlciwgdGhpcyB3aWxsIHRyaWdnZXIgYSBmYWlsb3ZlciB0bwotdGhlIHJlbWFpbmluZyBub2RlcywgYnV0IHlvdSBtYXkgd2lzaCB0byBtYW51YWxseSB0cmlnZ2VyIHRoaXMgZmlyc3QKLXVzaW5nIHRoZSAiaGEgZmFpbG92ZXIiIGNvbW1hbmQuCi0KLVJlYm9vdGluZyB0aGUgY29udHJvbGxlciB3aWxsIGFsbG93IHlvdSB0byBhY2Nlc3MgdGhlIGJvb3QgbWVudSBpZiB5b3UKLXdpc2ggdG8gcmV2ZXJ0IHRvIGFuIG9sZGVyIHZlcnNpb24gb2YgdGhlIGNvbnRyb2xsZXIgc29mdHdhcmUKLWZvbGxvd2luZyBhbiB1cGdyYWRlLiAgSWYgeW91IHdpc2ggdG8gZG8gdGhpcywgc2VsZWN0IHRoZSBhcHByb3ByaWF0ZQotaW1hZ2UgZnJvbSB0aGUgYm9vdCBsb2FkZXIgcHJvbXB0IGZyb20gdGhlIGNvbnRyb2xsZXIgY29uc29sZSB0bwotY2hvb3NlIGEgZGlmZmVyZW50IGltYWdlIHZlcnNpb24uCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS9yZWxvYWQtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3JlbG9hZC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4ZDU2NmY0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3JlbG9hZC1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1SZWJvb3QgdGhlIGNvbnRyb2xsZXIKLSAgICBub2RlMShjb25maWcpIyByZWxvYWQgCi0gICAgQ29uZmlybSBSZWxvYWQgKHllcyB0byBjb250aW51ZSkgeWVzCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS91cGdyYWRlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvdXBncmFkZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNWZkNjUyNC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS91cGdyYWRlCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotVXBncmFkZSB0aGUgY29udHJvbGxlciBmcm9tIGFuIHVwbG9hZGVkIGNvbnRyb2xsZXIgaW1hZ2UuIFRvIHBlcmZvcm0gCi11cGdyYWRlLCB5b3Ugd2lsbCBmaXJzdCBuZWVkIHRvIHVwbG9hZCBhbiB1cGdyYWRlIGltYWdlIHBhY2thZ2UgYnkgCi1zY3BpbmcgdGhlIGZpbGUgdXNpbmcgdGhlICJpbWFnZXMiIHVzZXIuIAotCi0JCi1VcGdyYWRlIGltYWdlIHBhY2thZ2UgaXMgYSBmaWxlIHdpdGggbmFtZSBvZiBmb3JtYXQgCi0idXBncmFkZS1ZWVlZLk1NLkRELlhYWFgucGtnIi4KLUZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRvIHByZXBhcmUgdXBncmFkZSBmb3IgY29udHJvbGxlciB3aXRoIElQIAotYWRkcmVzcyAxOTIuMTY4LjY3LjE0MToiCi0KLQkKLXNjcCAkcGF0aC91cGdyYWRlLTIwMTMuMDIuMTMuMDkyMS5wa2cgaW1hZ2VzQDE5Mi4xNjguNjcuMTQxOiIKLQotCQotQWZ0ZXIgeW91IHJ1biB0aGUgdXBncmFkZSwgdGhlIG5ldyBjb250cm9sbGVyIGltYWdlIHdpbGwgYmUgaW5zdGFsbGVkCi1vbiB0aGUgc2Vjb25kIGltYWdlIHBhcnRpdGlvbiwgYW5kIHdpbGwgYmUgY29uZmlndXJlZCBhcyB0aGUgZGVmYXVsdAotYm9vdCBpbWFnZS4gIFJ1bm5pbmcgdGhlICJyZWxvYWQiIGNvbW1hbmQgd2lsbCBib290IHRoZSBjdXJyZW50IG5vZGUJCi1JZiB5b3UgYXJlIHVwZ3JhZGluZyBhIGNsdXN0ZXIgd2l0aCBtdWx0aXBsZSBub2RlcywgYmVnaW4gYnkgdXBncmFkaW5nCi10aGUgc2xhdmUgbm9kZXMgZm9sbG93ZWQgYnkgdGhlIG1hc3RlciBub2RlLiAgWW91IGNhbiBmaW5kIG91dCB3aGljaAotc2xhdmUgaXMgdGhlIG1hc3RlciBieSBydW5uaW5nICJzaG93IGNvbnRyb2xsZXItbm9kZSBhbGwiLiAgWW91IHNob3VsZAotdXBncmFkZSBlYWNoIG5vZGUgYnkgcnVubmluZyB0aGUgdXBncmFkZSwgdGhlbiByZWxvYWRpbmcgdGhlCi1jb250cm9sbGVyIG5vZGUuCi0KLQkKLUZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSB0d28gbm9kZXMgaW4geW91ciBjbHVzdGVyLCBub2RlMSAodGhlIGN1cnJlbnQKLW1hc3RlcikgYW5kIG5vZGUyICh0aGUgY3VycmVudCBzbGF2ZSksIHlvdSBzaG91bGQ6CQotCi0KLSAgIyBVcGdyYWRlIG5vZGUyIHVzaW5nIHRoZSAidXBncmFkZSIgY29tbWFuZFxcCi0gICMgUmVib290IG5vZGUyIHVzaW5nIHRoZSAicmVsb2FkIiBjb21tYW5kXFwKLSAgIyBVcGdyYWRlIG5vZGUxIHVzaW5nIHRoZSAidXBncmFkZSIgY29tbWFuZFxcCi0gICMgUmVib290IG5vZGUxIHVzaW5nIHRoZSAicmVsb2FkIiBjb21tYW5kXFwKLQotCi1Ob3RlIHRoYXQgd2hlbiB5b3UgcmVib290IHRoZSBtYXN0ZXIgY29udHJvbGxlciBub2RlMSB0aGVyZSBtYXkgYmUgYQotYnJpZWYgZGlzcnVwdGlvbiBpbiB5b3VyIG5ldHdvcmsuCQotCi0KLVBsZWFzZSByZWZlciB0byB0aGUgc2VjdGlvbiBvbiB1cGdyYWRpbmcgaW4gdGhlIHVzZXIgZ3VpZGUgZm9yIG1vcmUKLWRldGFpbGVkIGluZm9ybWF0aW9uLCBpbmNsdWRpbmcgaW5mb3JtYXRpb24gb24gaG93IHRvIHJldmVydCBpZiB0aGUKLXVwZ3JhZGUgZmFpbHMuCQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvdXBncmFkZS1hYm9ydCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3VwZ3JhZGUtYWJvcnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDcxNDFlZGEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvdXBncmFkZS1hYm9ydAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotSWYgeW91J3ZlIGFscmVhZHkgcnVuIGFuIHVwZ3JhZGUgb3BlcmF0aW9uIG9uIHRoaXMgY29udHJvbGxlciBub2RlLAotYnV0IHdhbnQgdG8gYWJvcnQgdGhlIHVwZ3JhZGUgYmVmb3JlIHlvdSByZWJvb3QgaW50byB0aGUgbmV3Ci1wYXJ0aXRpb24sIHJ1biB0aGUgInVwZ3JhZGUgYWJvcnQiIGNvbW1hbmQgdG8gY29uZmlndXJlIHRoZSBjb250cm9sbGVyCi10byBib290IGJ5IGRlZmF1bHQgZnJvbSB0aGUgY3VycmVudC1hY3RpdmUgcGFydGl0aW9uIGFuZCBzZXQgdGhlCi1jb250cm9sbGVyIHN0YXR1cyBiYWNrIHRvICJSZWFkeS4iCi0KLVRoaXMgY2FuIGFsbG93IHlvdSB0byByZXN0YXJ0IGEgZmFpbGVkIHVwZ3JhZGUgcHJvY2VzcywgZm9yIGV4YW1wbGUKLWlmIGEgbm9kZSBmYWlsdXJlIG9jY3VycyB3aGlsZSBhdHRlbXB0aW5nIHRvIHVwZ3JhZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS91cGdyYWRlLWFib3J0LWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS91cGdyYWRlLWFib3J0LWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDY2OGNjZjEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvdXBncmFkZS1hYm9ydC1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi11cGdyYWRlIGFib3J0Ci0gIEFib3J0IGFuIGluLXByb2dyZXNzIG9yIHJlcXVlc3RlZCB1cGdyYWRlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS91cGdyYWRlLWRldGFpbHMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS91cGdyYWRlLWRldGFpbHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGRmOTIyNDEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvdXBncmFkZS1kZXRhaWxzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1UaGUgImRldGFpbHMiIG9wdGlvbiB3aWxsIGNhdXNlIHZlcmJvc2UgaW5mb3JtYXRpb24gdG8gYmUgcHJpbnRlZCBvdXQKLWR1cmluZyBlYWNoIHVwZ3JhZGUgc3RlcC4gIFRoaXMgbWF5IGJlIGhlbHBmdWwgaW4gZGlhZ25vc2luZyBmYWlsdXJlcwotZHVyaW5nIHRoZSB1cGdyYWRlIHByb2Nlc3MuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS91cGdyYWRlLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS91cGdyYWRlLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDllMzU3MjAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvdXBncmFkZS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVXBncmFkZSB0aGUgY29udHJvbGxlciBub2RlIHVzaW5nIGFuIHVwbG9hZGVkIHVwZ3JhZGUgcGFja2FnZQotICAgIG5vZGUxPiBlbmFibGUJCi0gICAgbm9kZTEjIHVwZ3JhZGUJCi0gICAgVXBncmFkZSBjb250cm9sbGVyIGZyb20gaW1hZ2UgJy9ob21lL2ltYWdlcy91cGdyYWRlLnBrZyc/CQotICAgICh5ZXMgdG8gY29udGludWUpIHllcwkKLSAgICBFeGVjdXRpbmcgdXBncmFkZS4uLgkKLSAgICAxIC0gVmVyaWZ5aW5nIHBhY2thZ2UgY2hlY2tzdW0KLSAgICAgIFN1Y2NlZWRlZAotICAgIDIgLSBWZXJpZnlpbmcgY29ubmVjdGl2aXR5IHRvIG90aGVyIG5vZGVzIHZpYSBwaW5nCi0gICAgICBTdWNjZWVkZWQKLSAgICAzIC0gQ2hlY2tpbmcgbWluaW11bSBzeXN0ZW0gcmVxdWlyZW1lbnRzCi0gICAgICBTdWNjZWVkZWQKLSAgICA0IC0gQ29weWluZyBjb25maWd1cmF0aW9uCi0gICAgICBTdWNjZWVkZWQKLSAgICA1IC0gQ3JlYXRpbmcgbmV3IGZpbGVzeXN0ZW0KLSAgICAgIFN1Y2NlZWRlZAotICAgIENvbnRyb2xsZXIgbm9kZSB1cGdyYWRlIGNvbXBsZXRlLgotICAgIFVwZ3JhZGUgd2lsbCBub3QgdGFrZSBlZmZlY3QgdW50aWwgc3lzdGVtIGlzIHJlYm9vdGVkLiBVc2UgJ3JlbG9hZCcgdG8KLSAgICByZWJvb3QgdGhpcyBjb250cm9sbGVyIG5vZGUuIFRvIHJldmVydCwgc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBpbWFnZSAKLSAgICBmcm9tIHRoZSBib290IG1lbnUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3VwZ3JhZGUtZm9yY2UgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS91cGdyYWRlLWZvcmNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlNDY4MWVhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3VwZ3JhZGUtZm9yY2UKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVRoZSAiZm9yY2UiIG9wdGlvbiB3aWxsIHJ1biB0aGUgdXBncmFkZSBidXQgd2lsbCBpZ25vcmUgYW55IHZhbGlkYXRpb24KLWVycm9ycy4gIFRoZXNlIGVycm9ycyBpbmNsdWRlIHZhbGlkYXRpbmcgdGhlIHBhY2thZ2UgY2hlY2tzdW0sIG1pbmltdW0KLXN5c3RlbSByZXF1aXJlbWVudHMsIGFuZCBjb25uZWN0aXZpdHkuICBOb3RlIHRoYXQgaWYgeW91IGNob29zZSB0aGlzCi1vcHRpb24sIHRoZXJlIGlzIGFuIGluY3JlYXNlZCBjaGFuY2UgdGhhdCB5b3VyIGNvbnRyb2xsZXIgdXBncmFkZSB3aWxsCi1iZSB1bnN1Y2Nlc3NmdWwuCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3ZlcnNpb24gYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS92ZXJzaW9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjZGE3M2MwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3ZlcnNpb24KKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVN3aXRjaCB0byBhIHNwZWNpZmljIHZlcnNpb24gb2YgY29tbWFuZCBzeW50YXguCi0KLVRoaXMgY29tbWFuZCBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZQotKHRoZXJlIGFyZSBjdXJyZW50bHkgbm8gYWx0ZXJuYXRlIHZlcnNpb25zKS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3ZlcnNpb24tZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3ZlcnNpb24tZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOTU3NjA5Mi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS92ZXJzaW9uLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXZlcnNpb24gWFlaCi0gIFN3aXRjaCB0byB2ZXJzaW9uIFhZWi4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3dyaXRlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvd3JpdGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGRlNjUwNjMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvd3JpdGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVdyaXRlIGNvbW1hbmQgYWxsb3dzIHlvdSB0byB2aWV3IHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gb3IgcmVzdG9yZQotdGhlIHN5c3RlbSB0byBpdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvd3JpdGUtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9jb3JlL3dyaXRlLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJjZWIzZjMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvd3JpdGUtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLURpc3BsYXkgdGhlIGN1cnJlbnQgcnVubmluZy1jb25maWc6Ci0gICAgbm9kZTEjIHdyaXRlIHRlcm1pbmFsIAotICAgICEKLSAgICAhIFNETk9TIDEuMCAtIGN1c3RvbSB2ZXJzaW9uCi0gICAgISBDdXJyZW50IFRpbWU6IDIwMTItMTAtMjMuMjA6Mzc6NTEKLSAgICAhCi0gICAgLi4uCi0KLVJlc2V0IHRvIGZhY3RvcnkgZGVmYXVsdHM6Ci0gICAgbm9kZTEjIHdyaXRlIGVyYXNlIAotICAgIFJlLXNldHRpbmcgY29udHJvbGxlciB0byBmYWN0b3J5IGRlZmF1bHRzIC4uLgotICAgIC4uLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2NvcmUvd3JpdGUtdGVybWluYWwgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS93cml0ZS10ZXJtaW5hbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmNkZTFlMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvY29yZS93cml0ZS10ZXJtaW5hbAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotRGlzcGxheSB0aGUgY3VycmVudCBhY3RpdmUgY29uZmlndXJhdGlvbiBvbiB0aGUgdGVybWluYWwuICBFcXVpdmFsZW50Ci10byAic2hvdyBydW5uaW5nLWNvbmZpZyIuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2RlYnVnL2Jhc2ggYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZGVidWcvYmFzaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzFhZDM4NS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZGVidWcvYmFzaAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRoZSBiYXNoIGNob2ljZXMgb3BlbnMgYSBuZXN0ZWQgYmFzaCBzaGVsbC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9kZWJ1Zy9jbGkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZGVidWcvY2xpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjYmM3ZGYxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9kZWJ1Zy9jbGkKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1jbGkgY2hvaWNlcyBmb3IgdGhlIGRlYnVnIGNvbW1hbmQgZW5hYmxlcyB2YXJpb3VzCi1kaWZmZXJlbnQgY2xpIGZlYXR1cmVzLiAgRmlyc3QgdGhlIGNsaSB3aWxsCi1wcm92aWRlIGRldGFpbHMgYWJvdXQgaW50ZXJuYWwgZmFpbHVyZXMsIHdoaWNoIGlzCi1pbnRlbmRlZCB0byBwcm92aWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gZm9yCi1zb21lIGZhaWx1cmUuICBGYWlsdXJlcyBtYXkgb2NjdXIgbm90IG9ubHkgaW4gdGhlCi1leGVjdXRpb24gb2YgY29tbWFuZHMsIGJ1dCB3aGlsZSBidWlsZGluZyB0aGUKLWNvbW1hbmQsIGZvciBleGFtcGxlIGR1cmluZyB0aGUgZ2VuZXJhdGlvbiBvZgotY29tcGxldGlvbiBjaG9pY2VzLiAgU2Vjb25kLCB0aGUgY2xpIG9wdGlvbiBhbHNvCi1lbmFibGVzIGRpcmVjdCBlZGl0aW5nIG9mIG1hbnkgb2YgdGhlIHVuZGVybHlpbmcKLW1vZGVscyAoZGF0YWJhc2UgdGFibGVzKSBleHBvcnRlZCBieSB0aGUgUkVTVCBBUEkuCi1UaGlzIGZlYXR1cmUgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIHdheSB0byB2aWV3Ci1vciBtb2RpZnkgdGhlIGludGVybmFsIGNvbnRlbnRzIG9mIHRoZSBkYXRhYmFzZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9kZWJ1Zy9jbGktYmFja3RyYWNlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2RlYnVnL2NsaS1iYWNrdHJhY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGZhZDI5YzMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2RlYnVnL2NsaS1iYWNrdHJhY2UKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVRoZSBjbGktYmFja3RyYWNlIGVuYWJsZXMgYWRkaXRpb25hbCBvdXRwdXQgZHVyaW5nCi1jbGkgZmFpbHVyZXMsIGRpc3BsYXlpbmcgYSBiYWNrdHJhY2UuICBUaGUKLWRpZmZlcmVuY2UgYmV0d2VlbiBjbGktYmFja3RyYWNlIGFuZCB0aGUgY2xpCi1jaG9pY2UgaXMgdGhhdCB0aGUgbW9kZWwgKGRhdGFiYXNlIHRhYmxlcykgZWRpdGluZwotZmVhdHVyZXMgYXJlIG5vdCBlbmFibGVkCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZGVidWcvY2xpLWJhdGNoIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2RlYnVnL2NsaS1iYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmNjNzYxYy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZGVidWcvY2xpLWJhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGUgYmF0Y2ggY2hvaWNlIGVuYWJsZXMgYmF0Y2ggbW9kZSB3aXRoaW4gdGhlCi1jbGkuICAgTm8gcHJvbXB0cyB3aWxsIGJlIHJlcXVlc3RlZCBmcm9tIHRoZSB1c2VyCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZGVidWcvZGVidWctY2xpIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2RlYnVnL2RlYnVnLWNsaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWJjNGY3YS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZGVidWcvZGVidWctY2xpCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1UaGUgZGVidWcgY29tbWFuZCBlbmFibGVzIGFuZCBkaXNhYmxlcyB2YXJpb3VzIHNldHRpbmdzIGludGVuZGVkIHRvIAotZGVzY3JpYmUgdGhlIGNsaSdzIG93biBiZWhhdmlvci4gICBJbiBhZGRpdGlvbiwgc29tZSBvZiB0aGUgY2hvaWNlcwotYWxsb3cgbmVzdGVkIGludm9jYXRpb24gb2YgdmFyaW91cyBvdGhlciB0b29scywgaW50ZW5kZWQgdG8gZGVidWcKLXZhcmlvdXMgcmVsYXRlZCBjb250cm9sbGVyIGNvbXBvbmVudHMsIGZvciBleGFtcGxlLCAnZGVidWcgY2Fzc2FuZHJhLWNsaScKLWlzIGludGVuZGVkIHRvIGVudGVyIHRoZSBjYXNzYW5kcmEgY2xpIHRvIHZpZXcgaW50ZXJuYWwgZGF0YWJhc2Ugc3RhdGUsCi1hbmQgJ2RlYnVnIGJhc2gnIGlzIGludGVuZGVkIHRvIGVudGVyIGEgYmFzaCBzdWJzaGVsbCB0byBnYWluIGFjY2VzcyB0bwotdGhlIGludGVybmFsIGVudmlyb25tZW50IG9mIHRoZSBjb250cm9sbGVyLiAgCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZGVidWcvZGVidWctY2xpLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZGVidWcvZGVidWctY2xpLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU1YTJjNmEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2RlYnVnL2RlYnVnLWNsaS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotZGVidWcgcmVzdAotICBFbmFibGUgcmVzdCBhcGkgb3V0cHV0Ci0KLWRlYnVnIHJlc3QgZGV0YWlsCi0gIEVuYWJsZSByZXN0IGFwaSBvdXRwdXQsIGFuZCBhbHNvIGRpc3BsYXkgcmVwbGllcyBmcm9tIHRoZSByZXN0IGFwaSBjYWxscwotCi1kZWJ1ZyBjbGkKLSAgRW5hYmxlIGRlYnVnZ2luZyBtb2RlIGZvciB0aGUgY2xpCi0KLWRlYnVnIGJhc2gKLSAgT3BlbiBhIGJhc2ggc3Vic2hlbGwKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9kZWJ1Zy9kZXNjcmlwdGlvbiBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9kZWJ1Zy9kZXNjcmlwdGlvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTI2MjIwMS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZGVidWcvZGVzY3JpcHRpb24KKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLVRoZSBkZXNjcmlwdGlvbiBjaG9pY2UgZW5hYmxlcyBhZGRpdGlvbmFsIG91dHB1dAotdG8gZGlzcGxheSB0aGUgaW50ZXJuYWwgZXhlY3V0aW9uIG9mIGNvbW1hbmQKLWRlc2NyaXB0aW9ucy4gIFRoZSBvcHRpb24gaXMgaW50ZW5kZWQgdG8gaGVscAotZGVidWcgdGhlIGNsaSdzIGNvbW1hbmQgZGVzY3JpcHRpb25zLiAgSXQgd2lsbCBub3QKLW9ubHkgZW5hYmxlIG91dHB1dCBmb3IgY29tbWFuZCBleGVjdXRpb24sIGJ1dCBhbHNvCi1lbmFibGUgb3V0cHV0IHdoaWxlIHBlcmZvcm1pbmcgY29tbWFuZCBjb21wbGV0aW9uCi1jaG9pY2VzIGZvciBjb21tYW5kcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9kZWJ1Zy9yZXN0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2RlYnVnL3Jlc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGUwMzE4OTYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2RlYnVnL3Jlc3QKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVRoZSByZXN0IGNob2ljZSBlbmFibGVzIHByaW50aW5nIG9mIGFkZGl0aW9uYWwKLW91dHB1dCB3aGVuIHRoZSBjbGkgaXNzdWVzIGFueSBSRVNUIEFQSSBjYWxscy4KLVRoZSBjb21tYW5kIGlzIHZhbHVhYmxlIHNpbmNlIGl0IGNhbiBwcm92aWRlIGFuCi1pbmRpY2F0aW9uIG9mIHdoYXQgb3BlcmF0aW9ucyBhcmUgYmVpbmcgcGVyZm9ybWVkCi1ieSB0aGUgY2xpIHRvIHBlcmZvcm0gdGhlIHJlcXVlc3RlZCBjb21tYW5kLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2V4dGVybmFsLXBvcnRzL3Nob3cgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZXh0ZXJuYWwtcG9ydHMvc2hvdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzEzYjdkMS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZXh0ZXJuYWwtcG9ydHMvc2hvdworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlIGV4dGVybmFsLXBvcnRzIGNvbW1hbmQgZGlzcGxheXMgdGhlIHNldCBvZiBzd2l0Y2ggcG9ydHMKLWNvbm5lY3RlZCB0byBleHRlcm5hbCBMMiBuZXR3b3Jrcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mZWF0dXJlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZlYXR1cmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDkxMjBiMDUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZlYXR1cmUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1FbmFibGUgYSBuYW1lZCBmZWF0dXJlIGZvciB0aGUgY29udHJvbGxlciBpbWFnZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mZWF0dXJlLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmVhdHVyZS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzZDNjOTIxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mZWF0dXJlLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWZlYXR1cmUgbmV0dmlydAotICBFbmFibGUgdGhlIG5ldHdvcmsgdmlydHVhbGl6YXRpb24gZmVhdHVyZQotCi1ubyBmZWF0dXJlIG5ldHZpcnQKLSAgRGlzYWJsZSB0aGUgbmV0d29yayB2aXJ0dWFsaXphdGlvbiBmZWF0dXJlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmVhdHVyZS1mbG93LXB1c2hlciBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mZWF0dXJlLWZsb3ctcHVzaGVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5MGViYzlmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mZWF0dXJlLWZsb3ctcHVzaGVyCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotRW5hYmxlIHRoZSBzdGF0aWMgZmxvdyBwdXNoZXIgZmVhdHVyZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mZWF0dXJlLW5ldHZpcnQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmVhdHVyZS1uZXR2aXJ0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwN2JjY2I3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mZWF0dXJlLW5ldHZpcnQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Db25maWd1cmUgdGhpcyBjb250cm9sbGVyIHdpdGggbmV0d29yayB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZlYXR1cmUtcGVyZm9ybWFuY2UtbW9uaXRvciBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mZWF0dXJlLXBlcmZvcm1hbmNlLW1vbml0b3IKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDQzMjJmOWYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZlYXR1cmUtcGVyZm9ybWFuY2UtbW9uaXRvcgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUNvbmZpZ3VyZSB0aGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBmZWF0dXJlIGZvciB0aGlzIGNvbnRyb2xsZXIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmlyZXdhbGwtcnVsZS9zaG93LWNvbnRyb2xsZXIgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmlyZXdhbGwtcnVsZS9zaG93LWNvbnRyb2xsZXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhiYWE4MjguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZpcmV3YWxsLXJ1bGUvc2hvdy1jb250cm9sbGVyCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotRmlsdGVyIHRoZSBzaG93IGNvbW1hbmQgb3V0cHV0IHRvIHRoZSBpbmRpY2F0ZWVkIGNvbnRyb2xsZXIuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmlyZXdhbGwtcnVsZS9zaG93LWxvY2FsLWlwIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZpcmV3YWxsLXJ1bGUvc2hvdy1sb2NhbC1pcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzk2YTM5Ny4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmlyZXdhbGwtcnVsZS9zaG93LWxvY2FsLWlwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU2VsZWN0IHRoZSBydWxlcyB3aGljaCBtYXRjaCB0aGlzIGxvY2FsIGlwIGFkZHJlc3MuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmlyZXdhbGwtcnVsZS9zaG93LW51bWJlciBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9maXJld2FsbC1ydWxlL3Nob3ctbnVtYmVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxNjZkNDJmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9maXJld2FsbC1ydWxlL3Nob3ctbnVtYmVyCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotRmlsdGVyIHRoZSBzaG93IGNvbW1hbmQgb3V0cHV0IGJ5IHRoZSBpbmRpY2F0ZWQgaW50ZXJmYWNlIG51bWJlci4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9maXJld2FsbC1ydWxlL3Nob3ctcG9ydCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9maXJld2FsbC1ydWxlL3Nob3ctcG9ydApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmMwMWUxMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmlyZXdhbGwtcnVsZS9zaG93LXBvcnQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1GaWx0ZXIgdGhlIHNob3cgY29tbWFuZCBvdXRwdXQgYnkgdGhlIGluZGljYXRlZCBmaWx0ZXJlZCBwb3J0LgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZpcmV3YWxsLXJ1bGUvc2hvdy1wcm90byBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9maXJld2FsbC1ydWxlL3Nob3ctcHJvdG8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM2YzcxODkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZpcmV3YWxsLXJ1bGUvc2hvdy1wcm90bworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUZpbHRlciB0aGUgc2hvdyBjb21tYW5kIG91dHB1dCBieSB0aGUgaW5kaWNhdGVkIHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZpcmV3YWxsLXJ1bGUvc2hvdy1zcmMtaXAgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmlyZXdhbGwtcnVsZS9zaG93LXNyYy1pcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjM5ZjkzZS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmlyZXdhbGwtcnVsZS9zaG93LXNyYy1pcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNlbGVjdCB0aGUgcnVsZXMgd2hpY2ggbWF0Y2ggdGhpcyBzb3VyY2UgaXAgYWRkcmVzcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9maXJld2FsbC1ydWxlL3Nob3ctdHlwZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9maXJld2FsbC1ydWxlL3Nob3ctdHlwZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmNmZmY5Ny4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmlyZXdhbGwtcnVsZS9zaG93LXR5cGUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1GaWx0ZXIgdGhlIHNob3cgY29tbWFuZCBvdXRwdXQgYnkgdGhlIGluZGljYXRlZCBpbnRlcmZhY2UgdHlwZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvYWN0aXZlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvYWN0aXZlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3OTE1MzY5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2FjdGl2ZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZmxvdyBlbnRyeQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2FjdGl2ZS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvYWN0aXZlLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGZkMDNhMGEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvYWN0aXZlLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWFjdGl2ZSBUcnVlCi0gIE1ha2UgYWN0aXZlCi0KLWFjdGl2ZSBGYWxzZQotICBNYWtlIGluYWN0aXZlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9hY3RpdmUtZmllbGQtRmFsc2UgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9hY3RpdmUtZmllbGQtRmFsc2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGZkNTVhY2UuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvYWN0aXZlLWZpZWxkLUZhbHNlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotTWFrZSB0aGlzIGZsb3cgZW50cnkgaW5hY3RpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9hY3RpdmUtZmllbGQtVHJ1ZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2FjdGl2ZS1maWVsZC1UcnVlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhYWQ1MjdhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2FjdGl2ZS1maWVsZC1UcnVlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotTWFrZSB0aGlzIGZsb3cgZW50cnkgYWN0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvY29va2llIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvY29va2llCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4NTZjMmRiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2Nvb2tpZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUFzc2lnbiBhIGNvb2tpZSB2YWx1ZSAoMzItYml0IGludGVnZXIpIHRvIHRoZSBmbG93IGVudHJ5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvY29va2llLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9jb29raWUtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNGU3MWIxNy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9jb29raWUtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotY29va2llIDQyCi0gIEFzc2lnbiBhIGNvb2tpZSB2YWx1ZSB0byB0aGlzIGVudHJ5CmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9kc3QtaXAgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9kc3QtaXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDBhMDEzZTAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZHN0LWlwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQXNzb2NpYXRlIGEgZGVzdGluYXRpb24gSVAgYWRkcmVzcyB3aXRoIHRoaXMgZmxvdyBlbnRyeQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1pcC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZHN0LWlwLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhiYTQ4NjIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZHN0LWlwLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWRzdC1pcCAxLjIuMy40Ci0gIEFzc29jaWF0ZSBhIHNwZWNpZmljIGhvc3QgYWRkcmVzcyB3aXRoIHRoaXMgZmxvdyBlbnRyeQotCi1kc3QtaXAgMS4yLjMuNC8yNAotICBBc3NvY2lhdGUgYSBkZXN0aW5hdGlvbiBhZGRyZXNzIHJhbmdlIHdpdGggdGhpcyBmbG93IGVudHJ5CmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9kc3QtaXAtZmllbGQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9kc3QtaXAtZmllbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDZmNzIwMzMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZHN0LWlwLWZpZWxkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotRW50ZXIgYW4gSVAgYWRkcmVzcyBvciBDSURSIGFkZHJlc3MgcmFuZ2UKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1tYWMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9kc3QtbWFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwZjAyYjZmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1tYWMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Bc3NvY2lhdGUgYSBkZXN0aW5hdGlvbiBNQUMgYWRkcmVzcyB3aXRoIHRoaXMgZmxvdyBlbnRyeQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1tYWMtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1tYWMtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzZiZDU3YS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9kc3QtbWFjLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWRzdC1tYWMgMDA6MDA6MDA6MDA6MDA6MDEKLSAgQXNzb2NpYXRlIGEgaG9zdCBieSBNQUMgYWRkcmVzcwotCi1kc3QtbWFjIG15LWNvbXB1dGVyCi0gIEFzc29jaWF0ZSBhIGhvc3QgYWxpYXMgd2l0aCB0aGlzIGZsb3cgZW50cnkKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1tYWMtZmllbGQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9kc3QtbWFjLWZpZWxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxMzcyN2I1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1tYWMtZmllbGQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1FbnRlciBhIE1BQyBhZGRyZXNzIG9yIGhvc3QgYWxpYXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9kc3QtcG9ydCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1wb3J0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmMzZhMmMxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1wb3J0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQXNzb2NpYXRlIGEgVENQIG9yIFVEUCBwb3J0IHdpdGggdGhpcyBmbG93IGVudHJ5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZHN0LXBvcnQtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1wb3J0LWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDEzMzFkYWQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZHN0LXBvcnQtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotZHN0LXBvcnQgODAKLSAgQXNzb2NpYXRlIGEgcG9ydCBieSBudW1iZXIKLQotZHN0LXBvcnQgaHR0cHMKLSAgQXNzb2NpYXRlIGEgcG9ydCBieSBzZXJ2aWNlIG5hbWUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2RzdC1wb3J0LWZpZWxkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZHN0LXBvcnQtZmllbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDBhOWExMTQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZHN0LXBvcnQtZmllbGQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1FbnRlciBhIFRDUCBvciBVRFAgcG9ydCBudW1iZXIsIG9yIHdlbGwta25vd24gc2VydmljZSBuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZXRoZXItdHlwZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2V0aGVyLXR5cGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDcwNmIxM2UuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZXRoZXItdHlwZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLU1hdGNoIGZsb3cgZW50cmllcyBieSBldGhlciB0eXBlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZXRoZXItdHlwZS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZXRoZXItdHlwZS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwODJkNzY4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2V0aGVyLXR5cGUtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotZXRoZXItdHlwZSAweDg4YTIKLSAgTWF0Y2ggQU9FIGZyYW1lcwotCi1ldGhlci10eXBlIGFycAotICBNYXRjaCBBUlAgZnJhbWVzCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9ldGhlci10eXBlLWZpZWxkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZXRoZXItdHlwZS1maWVsZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjc1MWJhYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9ldGhlci10eXBlLWZpZWxkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU3BlY2lmeSBhbiBldGhlciBieSBieSBudW1iZXIgb3IgYnkgYWxpYXMKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2Zsb3ctZW50cnkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9mbG93LWVudHJ5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkMGEzM2UyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2Zsb3ctZW50cnkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1EZWZpbmUgYSBmbG93LWVudHJ5IGFuZCBlbnRlciBpdHMgY29uZmlndXJhdGlvbiBzdWItbW9kZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZmxvdy1lbnRyeS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvZmxvdy1lbnRyeS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiNDQ0YmU2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2Zsb3ctZW50cnktZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotZmxvdy1lbnRyeSBleGFtcGxlLTEKLSAgRGVmaW5lIGEgbmV3IGZsb3cgZW50cnkKLQotbm8gZmxvdy1lbnRyeSBleGFtcGxlLTEKLSAgRGVsZXRlIGEgZmxvdyBlbnRyeSBieSBuYW1lCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9oYXJkLXRpbWVvdXQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9oYXJkLXRpbWVvdXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDY1OTNhZWMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvaGFyZC10aW1lb3V0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQXNzb2NpYXRlIGEgaGFyZCB0aW1lb3V0IHdpdGggdGhpcyBmbG93IGVudHJ5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvaGFyZC10aW1lb3V0LWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9oYXJkLXRpbWVvdXQtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDdhNGQzZi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9oYXJkLXRpbWVvdXQtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaGFyZC10aW1lb3V0IDMwCi0gIFRpbWUgb3V0IHRoaXMgZmxvdyBhZnRlciAzMHMKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2hhcmQtdGltZW91dC1maWVsZCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2hhcmQtdGltZW91dC1maWVsZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzExZjdjOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9oYXJkLXRpbWVvdXQtZmllbGQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IGEgdGltZW91dCBpbiBzZWNvbmRzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvaWRsZS10aW1lb3V0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvaWRsZS10aW1lb3V0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiNjdkYWQzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2lkbGUtdGltZW91dAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNldCBhbiBpZGxlIHRpbWVvdXQgZm9yIHRoaXMgZmxvdyBlbnRyeQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2lkbGUtdGltZW91dC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvaWRsZS10aW1lb3V0LWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDgzZDA5OGQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvaWRsZS10aW1lb3V0LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWlkbGUtdGltZW91dCAzMAotICBTZXQgdGhlIGlkbGUgdGltZW91dCBmb3IgMzAgc2Vjb25kcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2lkbGUtdGltZW91dC1maWVsZCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2lkbGUtdGltZW91dC1maWVsZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZmYwZGU2OS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9pZGxlLXRpbWVvdXQtZmllbGQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IGEgdGltZW91dCB2YWx1ZSBpbiBzZWNvbmRzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvaW5ncmVzcy1wb3J0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvaW5ncmVzcy1wb3J0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2MDBiMzViLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2luZ3Jlc3MtcG9ydAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUFzc29jaWF0ZSBhbiBPRiBpbmdyZXNzIHBvcnQgd2l0aCB0aGlzIGZsb3cgZW50cnkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9pbmdyZXNzLXBvcnQtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2luZ3Jlc3MtcG9ydC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5MmMyYzdhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L2luZ3Jlc3MtcG9ydC1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmdyZXNzLXBvcnQgMzIKLSAgQXNzaWNpYXRlIGFuIGluZ3Jlc3MgcG9ydCBieSBudW1iZXIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9pbmdyZXNzLXBvcnQtZmllbGQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9pbmdyZXNzLXBvcnQtZmllbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDRlNWNiMGEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvaW5ncmVzcy1wb3J0LWZpZWxkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU3BlY2lmeSBhbiBPRiBpbmdyZXNzIHBvcnQgKDE2LWJpdCBudW1iZXIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvcHJpb3JpdHkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9wcmlvcml0eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWVmMDMxYi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9wcmlvcml0eQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUFzc2lnbiBhIHByaW9yaXR5IHRvIHRoaXMgZmxvdyBlbnRyeQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ByaW9yaXR5LWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9wcmlvcml0eS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmYWYyOTgyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ByaW9yaXR5LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXByaW9yaXR5IDEwMDAKLSAgR2l2ZSB0aGlzIGZsb3cgZW50cnkgYSBmaXhlZCBwcmlvcml0eQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ByaW9yaXR5LWZpZWxkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvcHJpb3JpdHktZmllbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGVmMDNlMjEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvcHJpb3JpdHktZmllbGQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IHRoZSBwcmlvcml0eSBhcyBhIDE2LWJpdCBpbnRlZ2VyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvcHJvdG9jb2wgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9wcm90b2NvbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGFjNDU1NC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9wcm90b2NvbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUFzc29jaWF0ZSBhIHNwZWNpZmljIHByb3RvdHlwZSB0eXBlIHRvIHRoaXMgZmxvdyBlbnRyeQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3Byb3RvY29sLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9wcm90b2NvbC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwYTk3YjRiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3Byb3RvY29sLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXByb3RvdG9sIDE3Ci0gIEFzc29jaWF0ZSBUQ1AgcGFja2V0cyB3aXRoIHRoaXMgZmxvdyBlbnRyeQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3Byb3RvY29sLWZpZWxkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvcHJvdG9jb2wtZmllbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAyY2JjZWEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvcHJvdG9jb2wtZmllbGQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IGEgcHJvdG9jb2wgYnkgbnVtYmVyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvc3JjLWlwIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvc3JjLWlwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlOWU2MjdjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1pcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUFzc29jaWF0ZSBhIHNvdXJjZSBJUCBhZGRyZXNzIG9yIHJhbmdlIHdpdGggdGhpcyBmbG93IGVudHJ5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvc3JjLWlwLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9zcmMtaXAtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmY3ZDcxZi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9zcmMtaXAtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotc3JjLWlwIDEuMi4zLjQKLSAgTWF0Y2ggYSBzcGVjaWZpYyBhZGRyZXNzCi0KLXNyYy1pcCAxLjIuMy40LzIzCi0gIE1hdGNoIGFuIElQIGFkZHJlc3MgcmFuZ2UKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1pcC1maWVsZCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1pcC1maWVsZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjIyZGQwMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9zcmMtaXAtZmllbGQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IGFuIElQIGFkZHJlc3Mgb3IgYWRkcmVzcyByYW5nZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1tYWMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9zcmMtbWFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyYTQxMTliLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1tYWMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Bc3NvY2lhdGUgYSBzb3VyY2UgTUFDIGFkZHJlc3Mgd2l0aCB0aGlzIGZsb3cgZW50cnkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9zcmMtbWFjLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9zcmMtbWFjLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDExMmVlZmIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvc3JjLW1hYy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1zcmMtbWFjIDAwOjAwOjAwOjAwOjAwOjAyCi0gIFNwZWNpZnkgYSBob3N0IGJ5IE1BQyBhZGRyZXNzCi0KLXNyYy1tYWMgbXktc2VydmVyCi0gIFNwZWNpZnkgYSBob3N0IGJ5IGFsaWFzCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1tYWMtZmllbGQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9zcmMtbWFjLWZpZWxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyNGIzZTYyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1tYWMtZmllbGQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IGEgTUFDIGFkZHJlc3Mgb3IgaG9zdCBhbGlhcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1wb3J0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvc3JjLXBvcnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDVkMjA2MzcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvc3JjLXBvcnQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Bc3NvY2lhdGUgYSBzb3VyY2UgVENQIG9yIFVEUCBwb3J0IHdpdGggdGhpcyBmbG93IGVudHJ5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvc3JjLXBvcnQtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1wb3J0LWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDZjMTFmMzQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvc3JjLXBvcnQtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotc3JjLXBvcnQgMTE5Ci0gIEFzc29jaWF0ZSBhIHBvcnQgYnkgbnVtYmVyCi0KLXNyYy1wb3J0IGZ0cC1kYXRhCi0gIEFzc29jaWF0ZSBhIHBvcnQgYnkgc2VydmljZSBuYW1lCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS9zcmMtcG9ydC1maWVsZCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1wb3J0LWZpZWxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlNzc0NDkxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3NyYy1wb3J0LWZpZWxkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU3BlY2lmeSBhIFRDUCBvciBVRFAgcG9ydCBieSBudW1iZXIgb3Igc2VydmljZSBuYW1lCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS90b3MtYml0cyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3Rvcy1iaXRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5NjdhOWQ1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3Rvcy1iaXRzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQXNzb2NpYXRlIHBhY2tldHMgd2l0aCB0aGlzIGZsb3cgZW50cnkgYnkgVE9TIGJpdHMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS90b3MtYml0cy1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvdG9zLWJpdHMtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODRhNTYzYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS90b3MtYml0cy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi10b3MtYml0cyA2Ci0gIE1hdGNoIHNwZWNpZmljIFRPUyBiaXRzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvdG9zLWJpdHMtZmllbGQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS90b3MtYml0cy1maWVsZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTQ0Y2Y5Ny4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS90b3MtYml0cy1maWVsZAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNwZWNpZnkgVE9TIGJpdHMgYXMgYSBudW1lcmljIG1hc2sKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ZsYW4taWQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS92bGFuLWlkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkMGZjNTRhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ZsYW4taWQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1NYXRjaCBwYWNrZXRzIHRvIHRoaXMgZmxvdyBlbnRyeSB3aXRoIGEgc3BlY2lmaWMgVkxBTiBpZApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvdmxhbi1pZC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvdmxhbi1pZC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4ZGJkNTIzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ZsYW4taWQtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotdmxhbi1pZCAxMAotICBNYXRjaCBhIHNwZWNpZmljIFZMQU4gaWQKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ZsYW4taWQtZmllbGQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS92bGFuLWlkLWZpZWxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhNGExMTA2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ZsYW4taWQtZmllbGQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IGEgVkxBTiBpZCAoMTItYml0IGludGVnZXIpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS92bGFuLXByaW9yaXR5IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvdmxhbi1wcmlvcml0eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjc4Y2QzYi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS92bGFuLXByaW9yaXR5CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotTWF0Y2ggcGFja2V0cyB3aXRoIGEgc3BlY2lmaWMgVkxBTiBwcmlvcml0eSBmaWVsZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ZsYW4tcHJpb3JpdHktZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ZsYW4tcHJpb3JpdHktZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZGVhY2JlNC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS92bGFuLXByaW9yaXR5LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXZsYW4tcHJpb3JpdHkgNAotICBNYXRjaCBwYWNrZXRzIHdpdGggYnkgcHJpb3JpdHkgZmllbGQgKGluIHRoZSBWTEFOIGhlYWRlcikKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ZsYW4tcHJpb3JpdHktZmllbGQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS92bGFuLXByaW9yaXR5LWZpZWxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2YWQwYzAyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3ZsYW4tcHJpb3JpdHktZmllbGQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IGEgcHJpb3JpdHkgZmllbGQgYXMgYSAzLWJpdCBpbnRlZ2VyCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS93aWxkY2FyZHMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS93aWxkY2FyZHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAzZTAxZGUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvd2lsZGNhcmRzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQXNzb2NpYXRlIGEgd2lsZGNhcmQgdmFsdWUgd2l0aCB0aGlzIGZsb3cgZW50cnkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZmxvdy1lbnRyeS93aWxkY2FyZHMtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3dpbGRjYXJkcy1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3NWVkMGYyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3dpbGRjYXJkcy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi13aWxkY2FyZHMgMTAwMAotICBBc3NvY2lhdGUgYSB3aWxkY2FyZCB2YWx1ZSB3aXRoIHRoZSBjdXJyZW50bHktZGVmaW5lZCBmbG93IGVudHJ5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvd2lsZGNhcmRzLWZpZWxkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zsb3ctZW50cnkvd2lsZGNhcmRzLWZpZWxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1YjFhYzEyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mbG93LWVudHJ5L3dpbGRjYXJkcy1maWVsZAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNwZWNpZnkgYSB3aWxkY2FyZCB2YWx1ZSAoMzItYml0IGludGVnZXIpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZm9ybWF0L2JyaWVmIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zvcm1hdC9icmllZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzgxOTAxZi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZm9ybWF0L2JyaWVmCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGUgYnJpZWYga2V5d29yayByZXF1ZXN0cyBhIGxlc3MgdmVyYm9zZSB2ZXJzaW9uCi1vZiBvdXRwdXQgZm9yIHZhcmlvdXMgc2hvdyBjb21tYW5kcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mb3JtYXQvZGV0YWlscyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mb3JtYXQvZGV0YWlscwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWQwYmZjOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZm9ybWF0L2RldGFpbHMKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoZSBkZXRhaWxzIGtleXdvcmQgcmVxdWVzdHMgYSBtb3JlIHZlcmJvc2UgdmVyc2lvbgotb2YgdmFyaW91cyBzaG93IGNvbW1hbmRzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zvcm1hdC9mdWxsLWRldGFpbCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mb3JtYXQvZnVsbC1kZXRhaWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGE0ZDA0OWUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zvcm1hdC9mdWxsLWRldGFpbAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotRm9yIGEgZmV3IHNob3cgY29tbWFuZHMsIHRoZSAnZnVsbC1kZXRhaWwnIGlzIGEgcmVxdWVzdAotdG8gZGlzcGxheSBtb3JlIGluZm9ybWF0aW9uIHRoYW4gdGhlICdkZWZhaWxzJyBrZXl3b3JkLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zvcm1hdC9zdW1tYXJ5IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2Zvcm1hdC9zdW1tYXJ5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhYjE4Mzc3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mb3JtYXQvc3VtbWFyeQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUEgbW9yZSB0ZXJzZSBvdXRwdXQgZm9ybWF0LgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZvcndhcmRpbmcvZm9yd2FyZGluZyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mb3J3YXJkaW5nL2ZvcndhcmRpbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhNjE4OWQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZvcndhcmRpbmcvZm9yd2FyZGluZworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlIGZvcndhcmRpbmcgY29tbWFuZCBjb25maWd1cmVzIGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoCi10aGUgZm9yd2FyZGluZyBzZXJ2aWNlLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZvcndhcmRpbmcvZm9yd2FyZGluZy1hY2Nlc3MtcHJpb3JpdHkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZm9yd2FyZGluZy9mb3J3YXJkaW5nLWFjY2Vzcy1wcmlvcml0eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzRjOTJjMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZm9yd2FyZGluZy9mb3J3YXJkaW5nLWFjY2Vzcy1wcmlvcml0eQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyBhdHRyaWJ1dGUgc2V0cyB0aGUgcHJvcHJpdHkgZm9yIGZsb3dzIGNyZWF0ZWQgYnkKLXRoZSBmb3J3YXJkaW5nIHNlcnZpY2Ugb24gYW4gYWNjZXNzIHN3aXRjaApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZvcndhcmRpbmcvZm9yd2FyZGluZy1jb3JlLXByaW9yaXR5IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZvcndhcmRpbmcvZm9yd2FyZGluZy1jb3JlLXByaW9yaXR5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxODNlMzM0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mb3J3YXJkaW5nL2ZvcndhcmRpbmctY29yZS1wcmlvcml0eQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyBhdHRyaWJ1dGUgc2V0IHRoZSBwcm9wcml0eSBmb3IgZmxvd3MgY3JlYXRlZCBieQotdGhlIGZvcndhcmRpbmcgc2VydmljZSBvbiBhIGNvcmUgc3dpdGNoCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZm9yd2FyZGluZy9mb3J3YXJkaW5nLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZm9yd2FyZGluZy9mb3J3YXJkaW5nLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGQ0NDU2MjYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ZvcndhcmRpbmcvZm9yd2FyZGluZy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0gICAgZm9yd2FyZGluZyBjb3JlLXByaW9yaXR5IDEwMAotICAgICAgICBUbyBzZXQgcHJpb3JpdHkgZm9yIGZvcndhcmRpbmcgZmxvdy1tb2RzIG9uIGNvcmUgc3dpdGNoZXMgdG8gMTAwLCB1c2U6Ci0KLSAgICBmb3J3YXJkaW5nIGFjY2Vzcy1wcmlvcml0eSAxMDAKLSAgICAgICAgVG8gc2V0IHByaW9yaXR5IGZvciBmb3J3YXJkaW5nIGZsb3ctbW9kcyBvbiBhY2Nlc3Mgc3dpdGNoZXMgdG8gMTAwLCB1c2U6Ci0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mb3J3YXJkaW5nL2ZvcndhcmRpbmctc2hvdyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9mb3J3YXJkaW5nL2ZvcndhcmRpbmctc2hvdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggM2FhNGJhYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvZm9yd2FyZGluZy9mb3J3YXJkaW5nLXNob3cKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoaXMgY29tbWFuZCBzaG93cyB0aGUgcnVubmluZyBjb25maWd1cmF0aW9uIGZvcgotdGhlIGZvcndhcmRpbmcgc2VydmljZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hhL2hhLWZhaWxvdmVyIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hhL2hhLWZhaWxvdmVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxOGVlMzk0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9oYS9oYS1mYWlsb3ZlcgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotQ29uZmlndXJlcyBmYWlsb3ZlciBwYXJhbWV0ZXJzLCBvciB0cmlnZ2VycyBhIGZhaWxvdmVyIGV2ZW50LgotCi1UaGUgJ2ZhaWxvdmVyJyB0b2tlbiBkaXJlY3RzIHRoZSBjdXJyZW50IG5vZGUgdG8gZmFpbCBvdmVyIHRvCi1hIGNvbmZpZ3VyZWQgc2xhdmUgY29udHJvbGxlci4KLQotVGhlICdwcm92aXNpb24nIHRva2VuIGNvbmZpZ3VyZXMgYSBzbGF2ZSBjb250cm9sbGVyIGJ5IElQIGFkZHJlc3MgdGhhdAotd2lsbCBmdW5jdGlvbiBhcyBhIG1hc3RlciBjb250cm9sbGVyIGFmdGVyIGEgZmFpbG92ZXIgZXZlbnQuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaGEvaGEtZmFpbG92ZXItZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9oYS9oYS1mYWlsb3Zlci1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzZDZiNzNiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9oYS9oYS1mYWlsb3Zlci1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1oYSBmYWlsb3ZlcgotICBGYWlsIHRoaXMgY29udHJvbGxlciBub2RlLCBkZWZlciB0byBhIHNsYXZlIGNvbnRyb2xsZXIKLQotaGEgcHJvdmlzaW9uIDEuMi4zLjQKLSAgQ29uZmlndXJlIGEgbmV3IGNvbnRyb2xsZXIgbm9kZSB0byBmdW5jdGlvbiBhcyBhIHNsYXZlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaGEvaGEtdnJycCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9oYS9oYS12cnJwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwOTNmZTEyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9oYS9oYS12cnJwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQ29uZmlndXJlIHBhcmFtZXRlcnMgZm9yIHRoZSBWUlJQIHByb3RvY29sCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaGEvaGEtdnJycC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hhL2hhLXZycnAtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZGY2OWIzYi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaGEvaGEtdnJycC1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1oYSBjbHVzdGVyLW51bWJlciA0MgotICBTZXQgdGhlIGNsdXN0ZXIgbnVtYmVyIChWUlJQIHJvdXRlciBJRCkKLQotbm8gaGEgY2x1c3Rlci1udW1iZXIKLSAgUmVzZXQgdGhlIFZSUlAgcm91dGVyIElEIHRvIHRoZSBkZWZhdWx0ICgnMScpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9ob3N0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3QvaG9zdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmVlODMyYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9ob3N0CisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIGhvc3QgY29tbWFuZCBlbnRlcnMgYSBzdWJtb2RlIHdoaWNoCi1hbGxvd3MgY29uZmlndXJhdGlvbiBmb3IgdGhlIGlkZW50aWZpZWQgZGV2aWNlLiAgVGhlIGNvbW1hbmQncwotcGFyYW1ldGVycyBpZGVudGlmeSBhIHVuaXF1ZSBkZXZpY2UsIHdoaWNoIG1heSByZXF1aXJlCi10aGUgdXNlIG9mIHRoZSBvcHRpb25hbCBhZGRyZXNzLXNwYWNlIGFuZCB2bGFuIHBhcmFtZXRlcnMuCi0KLVRoZSBpZGVudGlmaWVkIGRldmljZSBkb2VzIG5vdAotY3VycmVudGx5IG5lZWQgdG8gYmUga25vd24gdG8gdGhlIGNvbnRyb2xsZXIsIHByb3ZpZGluZwotZm9yIHByZS1jb25maWd1cmFpb24gb2YgaG9zdHMuCi0KLVZhcmlvdXMgaG9zdCBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUgc3VibW9kZSBpbmNsdWRlcwotaG9zdC1hbGlhcywgYW5kIGhvc3Qgc2VjdXJpdHkgYXNzb2NpYXRpb25zLgotCi1JZiBjb21wbGV0aW9uIGlzIHJlcXVlc3RlZCBmb3IgdGhlIGhvc3RzLCB0aGUgcmVzdWx0aW5nIAotZW50cmllcyBzaG93biBhcmUgdGhlIGNvbGxlY3Rpb24gb2YgY3VycmVudGx5IGtub3duIGhvc3RzLAotYW5kIHRoZSBjb2xsZWN0aW9uIG9mIGNvbmZpZ3VyZWQgaG9zdHMuCi0KLVRoZSBtYWMgYWRkcmVzcyBpZGVudGlmeWluZyB0aGUgc3BlY2lmaWMgaG9zdCBpcwotY2FzZSBpbnNlbnNpdGl2ZS4KLQotVGhlICdubycgdmFyaWF0aW9uIG9mIHRoZSBob3N0IGNvbW1hbmQgd2lsbCByZW1vdmUgYWxsIGNvbmZpZ3VyZWQKLWRldGFpbHMgZm9yIHRoZSBpZGVudGlmaWVkIGRldmljZS4gIElmIGEgJ3Nob3cgaG9zdCcgaXMgaXNzdWVkCi1hZnRlcndhcmRzLCB0aGUgaG9zdCB3aWxsIHN0aWxsIGFwcGVhciBpZiB0aGUgY29udHJvbGxlciBoYXMgYW55Ci1vcGVyYXRpb25hbCBzdGF0ZSBhc3NvY2FpdGVkIHdpdGggdGhlIGhvc3QuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9ob3N0LWFkZHJlc3Mtc3BhY2UgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9ob3N0LWFkZHJlc3Mtc3BhY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM2Mjg2MDYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3QvaG9zdC1hZGRyZXNzLXNwYWNlCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1UaGUgb3B0aW9uYWwgYWRkcmVzcy1zcGFjZSBhc3NvY2lhdGlvbiBmb3IgaG9zdCBhbGxvd3MgdGhlCi1pZGVudGlmaWVkIG1hYyB0byBiZSBib3VuZCB0byBhIHNwZWNpZmljIGlzb2xhdGVkIGFkZHJlc3MKLXNwYWNlLiAKLQotV2hlbiB0aGlzIG9wdGlvbmFsIHBhcmFtZXRlciBpcyBub3QgaW5jbHVkZWQsIHRoZSBtYWMKLWlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWRkcmVzcy1zcGFjZSBuYW1lZCAnZGVmYXVsdCcuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9ob3N0LWFsaWFzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3QvaG9zdC1hbGlhcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNGU5ZGRhOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9ob3N0LWFsaWFzCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1UaGUgaG9zdC1hbGlhcyBjb21tYW5kIGFsbG93cyBhc3NvY2lhdGluZyBhIG1vcmUgaWRlbnRpZmlhYmxlCi1uYW1lIHdpdGggdGhlIGhvc3QgaWRlbnRpZmllZCBieSBlbnRlcmluZyB0aGUgaG9zdCBzdWJtb2RlLgotSG9zdCBhbGlhc2VzIG11c3Qgc3RhcnQgd2l0aCBhbiBhbHBoYWJldGljIGNoYXJhY3RlciwgYW5kCi1jYW4gY29udGludWUgd2l0aCBhbHBoYW51bWVyaWNzLCAnXycsIG9yICctJy4gIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhCi1ob3N0IGFsaWFzIGlzIDI1NSBjaGFyYWN0ZXJzLgotCi1PbmNlIGFuIGFsaWFzIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGhvc3QsIHZhcmlvdXMgc2hvdyBjb21tYW5kcwotd2lsbCBwcm92aWRlIHRoZSBhbGlhcyBhbG9uZyB3aXRoLCBvciBpbnN0ZWFkIG9mIHRoZSBtYWMKLWFkZHJlc3MgdG8gaWRlbnRpZnkgdGhlIGhvc3QuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9ob3N0LWFsaWFzLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9ob3N0LWFsaWFzLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhiYWU4ZGQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3QvaG9zdC1hbGlhcy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1ob3N0LWFsaWFzIG15LW1hYy1ib29rCi0gIEFzc29jaWF0ZSBhIGZyaWVuZGx5IG5hbWUgd2l0aCB0aGUgY3VycmVudCBob3N0IGRlZmluaXRpb24KLQotbm8gaG9zdC1hbGlhcyBteS1tYWMtYm9vawotICBSZW1vdmUgYSBob3N0bmFtZSBhc3NvY2lhdGlvbiBmcm9tIHRoaXMgaG9zdApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3QvaG9zdC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3QvaG9zdC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4Y2ZkODlmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L2hvc3QtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWhvc3QgMDA6MDA6MDA6MDA6MDA6MDEKLSAgRGVmaW5lIGEgaG9zdCB3aXRoIGEgc3BlY2lmaWMgTUFDLCBhbmQgZW50ZXIgaXRzIGNvbmZpZ3VyYXRpb24gc3ViLW1vZGUKLQotbm8gaG9zdCAwMDowMDowMDowMDowMDowMQotICBEZWxldGUgYSBkZWZpbml0aW9uIGZvciBhIHNwZWNpZmljIGhvc3QKLQotaG9zdCBhZGRyZXNzLXNwYWNlIGRlZmF1bHQgMDA6MDA6MDA6MDA6MDA6MDIKLSAgRGVmaW5lIGEgaG9zdCBhbmQgYmluZCBpdCB0byBhIHNwZWNpZmljIGFkZHJlc3Mgc3BhY2UKLQotaG9zdCB2bGFuIDQyIDAwOjAwOjAwOjAwOjAwOjAzCi0gIERlZmluZSBhIGhvc3QgYW5kIGJpbmQgaXQgdG8gYSBzcGVjaWZpYyBWTEFOLgotICBOb3RlIGhlcmUgdGhhdCBWTEFOIGFzc29jaWF0aW9ucyBhcmUgb25seSB2YWxpZCB3aXRoIHRoZSAnZGVmYXVsdCcgYWRkcmVzcyBzcGFjZS4KLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3QvaG9zdC12bGFuIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3QvaG9zdC12bGFuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlZjE3ZDNiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L2hvc3QtdmxhbgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotVGhlIG9wdGlvbmFsIHZsYW4gcGFyYW1ldGVyIGFsbG93cyB0aGUgaWRlbnRpZmllZCBtYWMKLWFkZHJlc3MgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgdmxhbi4KLQotV2hlbiB0aGlzIG9wdGlvbmFsIHBhcmFtZXRlciBpc24ndCBpbmNsdWRlZCwgbm8gdmxhbgotaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBtYWMuICAgCi0KLUN1cnJlbnRseSwgdGhlIHZsYW4gbWF5IG9ubHkgYmUgYXNzb2NpYXRlZCB3aXRoIGEgbWFjCi1mb3IgdGhlIGFzc29jaWF0ZWQgYWRkcmVzcy1zcGFjZSAnZGVmYXVsdCcuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zZWN1cml0eSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3NlY3VyaXR5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwZjg4MzU4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3NlY3VyaXR5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotVGhlIHNlY3VyaXR5IGNvbW1hbmQgd2l0aGluIHRoZSBob3N0IHN1Ym1vZGUgaXMgdXNlZCB0bwotYmluZCBpcCBhZGRyZXNzIGFuZCBhdHRhY2htZW50IHBvaW50cyBmb3IgdGhlIGhvc3RzCi1pZGVudGlmaWVkIGJ5IHRoZSBzdWJtb2RlLgotCi1XaGF0IGEgaG9zdCBpcyBwcmVzZW50ZWQgdG8gdGhlIGNvbnRyb2xsZXIsIHRoZSBhdHRhY2htZW50Ci1wb2ludCBvZiB0aGUgaG9zdCBpcyBhbHNvIGlkZW50aWZpZWQuICAgV2hlbiB0aGUgc2VjdXJpdHkKLWNvbW1hbmQgaXMgdXNlZCB0byBjb25zdHJhaW4gdGhlIGF0dGFjaG1lbnQgcG9pbnQsIHRoZQotY29udHJvbGxlciBjYW4gdXNlIHRoZSBjb25maWd1cmVkIGRldGFpbHMgdG8gY2hvb3NlIHdoZXRoZXIKLWl0IHdpbGwgYWxsb3cgdGhlIGhvc3QgdG8gam9pbiB0aGUgbmV0d29yay4KLQotV2hlbiBhbiBpcCBhZGRyZXNzIGlzIGJvdW5kIHRvIHRoZSBob3N0LCBubyBvdGhlciBob3N0Ci1tYXkgdXNlIHRoZSBpbmRpY2F0ZWQgaXAgYWRkcmVzcy4gICBUaGlzIGlzIGltcGxlbWVudGVkCi1ieSBzbm9vcGluZyBhcnAncyBhbmQgdGhlIGRoY3AgcHJvdG9jb2wuICBJdCBpcyBzdGlsbAotcG9zc2libGUgZm9yIHRoZSBob3N0IHRvIHNlbmQgZnJhbWVzIHdpdGggc3Bvb2ZlZAotc3JjIGlwIGFkZHJlc3MsIGJ1dCB0aGUgZGVzdGluYXRpb24gd2lsbCBub3QgYmUgYWJsZQotdG8gcmVwbHkgdG8gdGhlc2UgZnJhbWVzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2VjdXJpdHktYXR0YWNobWVudC1wb2ludCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3NlY3VyaXR5LWF0dGFjaG1lbnQtcG9pbnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGQzZTY3Y2IuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2VjdXJpdHktYXR0YWNobWVudC1wb2ludAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGhlIGF0dGFjaG1lbnQgcG9pbnQgcG9ydGlvbiBpcyBpbnRlbmRlZCB0bwotaWRlbnRpZnkgdGhlIHN3aXRjaCBvciBpbnRlcmZhY2UgbmFtZSwgb3RoZXJ3aXNlCi10aGUgaG9zdCBjYW5ub3QgdHJhbnNtaXQgb3IgcmVjZWl2ZSBuZXR3b3JrIHRyYWZmaWMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zZWN1cml0eS1hdHRhY2htZW50LXBvaW50LWludGVyZmFjZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3NlY3VyaXR5LWF0dGFjaG1lbnQtcG9pbnQtaW50ZXJmYWNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzYWExMzc5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3NlY3VyaXR5LWF0dGFjaG1lbnQtcG9pbnQtaW50ZXJmYWNlCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1UaGlzIGZpZWxkIGlzIGEgcmVndWxhciBleHByZXNzaW9uLCB3aGljaCBpcyB1c2VkIHRvCi1tYXRjaCBhZ2FpbnN0IGFuIGludGVyZmFjZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUKLXN3aXRjaC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3NlY3VyaXR5LWF0dGFjaG1lbnQtcG9pbnQtc3dpdGNoIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2VjdXJpdHktYXR0YWNobWVudC1wb2ludC1zd2l0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDIzYjg5NWEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2VjdXJpdHktYXR0YWNobWVudC1wb2ludC1zd2l0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRoZSBzd2l0Y2ggaXMgcGFydCBvZiB0aGUgYXR0YWNobWVudCBwb2ludCBkZXNjcmlwdGlvbi4KLVRoaXMgY2FuIGJlIGEgc3dpdGNoIGRwaWQsIG9yIGFuIGFsaWFzIGlkZW50aWZ5aW5nIGEKLXNpbmdsZSBzd2l0Y2guCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zZWN1cml0eS1iaW5kIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2VjdXJpdHktYmluZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjc3ZGYzMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zZWN1cml0eS1iaW5kCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1UaGUgYmluZCBrZXl3b3JrIG9mIHRoZSBzZWN1cml0eSBwb2xpY3kgY29tbWFuZCAKLWlzIHVzZWQgdG8gY29uZmlndXJlIHZhcmlvdXMgYXNzb2NpYXRpb25zIAotcmVzdHJpY3RpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBob3N0LgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2VjdXJpdHktZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3NlY3VyaXR5LWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU3ZGYyNTQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2VjdXJpdHktZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXNlY3VyaXR5IHBvbGljeSBiaW5kIGlwLWFkZHJlc3MgMTAuMTAuMTAuMQotICBXaGVuIHRoZSBob3N0IHNlbmRzIGFueSBpcCBmcmFtZXMsIHRoZSBzcmMgYWRkcmVzcwotICBvZiB0aGVzZSBmcmFtZXMgbXVzdCBiZSAxMC4xMC4xMC4xLiAgCi0KLW5vIHNlY3VyaXR5IHBvbGljeSBiaW5kIGlwLWFkZHJlc3MgMTAuMTAuMTAuMQotICBSZW1vdmUgYSBzb3VyY2UtYWRkcmVzcyBiaW5kaW5nIHJlcXVpcmVtZW50IGZvciB0aGlzIGhvc3QKLQotc2VjdXJpdHkgcG9saWN5IGJpbmQgYXR0YWNobWVudC1wb2ludCBudGdyLTczMjgtMwotICBUaGUgaG9zdCBpZGVudGlmaWVkIGJ5IHRoaXMgc3VibW9kZSBjYW4gb25seSBzZW5kCi0gIGFuZCByZWNlaXZlIHRyYWZmaWMgd2hlbiBpdCBhdHRhY2hlZCB0byB0aGlzIHN3aXRjaC4KLQotbm8gc2VjdXJpdHkgcG9saWN5IGJpbmQgYXR0YWNobWVudC1wb2ludCBudGdyLTczMjgtMwotICBSZW1vdmUgYW4gYXR0YWNobWVudCBwb2ludCByZXF1aXJlbWVudCBmb3IgdGhpcyBob3N0Ci0KLXNlY3VyaXR5IHBvbGljeSBiaW5kIGF0dGFjaG1lbnQtcG9pbnQgbnRnci03MzI4LTMgMTIKLSAgVGhlIGhvc3QgaWRlbnRpZmllZCBieSB0aGlzIHN1Ym1vZGUgY2FuIG9ubHkgc2VuZAotICBhbmQgcmVjZWl2ZSB0cmFmZmljIHdoZW4gaXQgYXR0YWNoZWQgdG8gdGhpcyBzd2l0Y2ggYW5kCi0gIGludGVyZmFjZSBuYW1lZCAnMTInCi0KLW5vIHNlY3VyaXR5IHBvbGljeSBiaW5kIGF0dGFjaG1lbnQtcG9pbnQgbnRnci03MzI4LTMgMTIKLSAgUmVtb3ZlIGFuIGF0dGFjaG1lbnQgcG9pbnQvaW50ZXJmYWNlIHJlcXVpcmVtZW50IGZvciB0aGlzIGhvc3QKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3NlY3VyaXR5LWlwLWFkZHJlc3MgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zZWN1cml0eS1pcC1hZGRyZXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiZDdlYmNkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3NlY3VyaXR5LWlwLWFkZHJlc3MKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoaXMgaWRlbnRpZmllcyBhbiBpcCBhZGRyZXNzLCBpdCB3aWxsIHByZXZlbnQgb3RoZXIgaG9zdCdzCi1mcm9tIHVzaW5nIGFueSBvdGhlciBpcCBhZGRyZXNzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2VjdXJpdHktcG9saWN5IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2VjdXJpdHktcG9saWN5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3ZjU5YmFlLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3NlY3VyaXR5LXBvbGljeQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlIHBvbGljeSBrZXl3b3JkIGlzIHVzZWQgdG8gY29uZmlndXJlIHNlY3VyaXR5Ci1wb2xpY2llcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBob3N0LgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDljODBiMGMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotVGhlICdzaG93IGhvc3QnIGNvbW1hbmQgZGlzcGxheXMgZGV0YWlscyBmb3IgaG9zdHMsCi1pbmNsdWRpbmcgdGhlIG1hYyBhZGRyZXNzLCB0aGUgYXNzb2NpYXRlZCBob3N0IGFsaWFzLAotdGhlIGFkZHJlc3Mgc3BhY2UsIGlwIGFkZHJlc3MsIGF0dGFjaG1lbnQgcG9pbnQsCi1jb25maWd1cmVkIHRhZ3MgYW5kIHRoZSBsYXN0IHRpbWUgdGhlIGhvc3Qgd2FzCi1zZXJ2aWNlZCBieSB0aGUgY29udHJvbGxlci4KLQotVGhlIHRhZyBjb2x1bW4gaGVyZSBvbmx5IGRpc3BsYXlzIGEgc3lub3BzaXMKLW9mIHRoZSBhc3NvY2lhdGVkIHRhZ3MuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zaG93LWhvc3QgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zaG93LWhvc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDZlYzhjMmEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdy1ob3N0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGlzIGNvbW1hbmQgdmFyaWF0aW9uIGFsbG93cyBmaWx0ZXJpbmcgYmFzZWQgb24KLXRoZSBwcm92aWRlZCBtYWMgYWRkcmVzcy4gIEluIGFkZGl0aW9uLCB0aGUgaG9zdHMKLWNhbiBiZSBzZWxlY3RlZCBlaXRoZXIgYnkgdGhlIHN3aXRjaCBvZiB0aGVpcgotYXR0YWNobWVudCBwb2ludCwgb3IgdGhlIGhvc3QncyBhc3NvY2lhdGVkIGlwIGFkZHJlc3MKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1hZGRyZXNzLXNwYWNlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdy1ob3N0LWFkZHJlc3Mtc3BhY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU0NGMwMjYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdy1ob3N0LWFkZHJlc3Mtc3BhY2UKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoaXMgcG9zaXRpb25hbCBwYXJhbWV0ZXIgYWxsb3dzIGZpbHRlcmluZyBvbiB0aGUKLWFkZHJlc3Mgc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBob3N0cy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1hbGwgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zaG93LWhvc3QtYWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkZjFmNDYyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1hbGwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRoZSAnYWxsJyBrZXl3b3JkIGlzIGEgcG9zaXRpb25hbCBwYXJhbWV0ZXIgcmVwbGFjZW1lbnQKLXdoaWNoIGFsbG93cyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgdG8gYmUgaW5jbHVkZWQuICAKLSdhbGwnIG1heSBub3QgYmUgdXNlZCBhcyBhIGhvc3QgYWxpYXMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zaG93LWhvc3QtYnktaG9zdC1sYXN0LXNlZW4gYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zaG93LWhvc3QtYnktaG9zdC1sYXN0LXNlZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGVhNjFlNWEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdy1ob3N0LWJ5LWhvc3QtbGFzdC1zZWVuCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotT3JkZXIgdGhlIG91dHB1dCBieSB0aGUgdGltZSB0aGUgaG9zdCB3YXMgbGFzdCBzZWVuIGJ5IHRoZSBjb250cm9sbGVyCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zaG93LWhvc3QtYnktbGFzdC1zZWVuIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdy1ob3N0LWJ5LWxhc3Qtc2VlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDZhY2RjNy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zaG93LWhvc3QtYnktbGFzdC1zZWVuCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotT3JkZXIgdGhlIG91dHB1dCBieSB0aGUgbGFzdCBzZWVuIHRpbWUgb2YgdGhlIGF0dGFjaG1lbnQgcG9pbnQKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1ieS1uZXR3b3JrLWFkZHJlc3MgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zaG93LWhvc3QtYnktbmV0d29yay1hZGRyZXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwYWViMTU3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1ieS1uZXR3b3JrLWFkZHJlc3MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1PcmRlciB0aGUgb3V0cHV0IGJ5IHRoZSBob3N0J3MgYXNzb2NpYXRlZCBpcCBhZGRyZXNzZXMKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1pcHY0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdy1ob3N0LWlwdjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDcyOWNiMjguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdy1ob3N0LWlwdjQKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLVRoZSAnaXAtYWRkcmVzcyA8aXAtYWRkcmVzcz4nIGtleXdvcmQgcGFpciBjYW4gYmUgdXNlZCB0byAKLXJlc3RyaWN0IHRoZSBob3N0J3MgZGlzcGxheWVkIGJ5IHRoZSBpcC1hZGRyZXNzIGFzc29jaWFpdGVkCi13aXRoIHRoZSBjdXJyZW50bHkga25vd24gaG9zdHMuCi0KLUlmIGNvbXBsZXRpb24gaXMgcmVxdWVzdGVkIGFmdGVyIHRoZSBpcC1hZGRyZXNzIGtleXdvcmQsIHRoZQotbGlzdCBvZiBpcC1hZGRyZXNzZXMgZGlzcGxheWVkIGFyZSB0aGUgaXAtYWRkcmVzc2VzIGN1cnJlbnRseQotYXNzb2NpYXRlZCB3aXRoIHRoZSBrbm93biBob3N0cy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1pdGVtcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1pdGVtcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZmUyOTYwZi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zaG93LWhvc3QtaXRlbXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1UaGlzICdzaG93IGhvc3QnIHZhcmlhbnQgYWxsb3dzIHRoZSBzZWxlY3Rpb24gb2YgCi1wYXJ0aWN1bGFyIHJlbGF0ZWQgaG9zdCBkZXRhaWxzLCBmb3IgZXhhbXBsZSB0aGUKLWF0dGFjaG1lbnQgcG9pbnQgb3IgdGhlIGlwIGFkZHJlc3MuICAKLQotVGhlIHZhcmlhbnQgZXhpc3RzIHRvIG1vcmUgY29tcGxldGVseSBsaXN0IHRoZQotaG9zdCdzIGFzc29jaWF0ZWQgYXR0cmlidXRlcy4gIEluIHRoZSBtb3JlIGJhc2ljCi12ZXJzaW9uIG9mIHRoZSBjb21tYW5kLCB0aGVzZSBjb2x1bW5zIG1heSBoYXZlCi1hYmJyZXZpYXRlZCBpbmZvcm1hdGlvbiAoZGlzcGxheWluZyBvbmx5IG9uZQotaXAgYWRkcmVzcywgZm9yIGV4YW1wbGUpLCB0byBwcm92aWRlIGEgbW9yZSAKLWNvbmNpc2UgZGlzcGxheS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1tYWMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaG9zdC9zaG93LWhvc3QtbWFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmOGZmNDhhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1tYWMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1UaGlzIHBvc2l0aW9uYWwgcGFyYW1ldGVyIGFsbG93cyBmaWx0ZXJpbmcgb24gdGhlIG1hYyBhZGRyZXNzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdy1ob3N0LXN3aXRjaCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ob3N0L3Nob3ctaG9zdC1zd2l0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGZmYWM1MzUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2hvc3Qvc2hvdy1ob3N0LXN3aXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotVGhlICdzd2l0Y2ggPGRwaWQ+JyBrZXl3b3JkIHBhaXIgY2FuIGJlIHVzZWQgdG8gcmVzdHJpY3QgdGhlCi1ob3N0cyBkaXNwbGF5ZWQgYnkgdGhlIGlkZW50aWZpZWQgPGRwaWQ+LiAgVGhlIGhvc3RzIGRpc3BsYXllZAotd2lsbCBhbGwgaGF2ZSBhdHRhY2hlbWVudCBwb2ludHMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0ZWQKLTxkcGlkPi4KLQotSWYgY29tcGxldGlvbiBpcyByZXF1ZXN0ZWQgYWZ0ZXIgdGhlICdzd2l0Y2gnIGtleXdvcmQsIHRoZQotbGlzdCBvZiBzd2l0Y2hlcyBkaXNwbGF5ZWQgYXJlIHRoZSBzd2l0Y2hlcyBhc3NvY2lhdGVkIHdpdGgKLXRoZSBhY3RpdmUgYXR0YWNobWVudCBwb2ludHMgb2YgdGhlIGtub3duIGhvc3RzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ludGVybmFsIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ludGVybmFsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlNjlkZTI5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9pbnRlcm5hbAorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaW50cm9kdWN0aW9uIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL2ludHJvZHVjdGlvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzNhNGMyYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvaW50cm9kdWN0aW9uCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotaDEuIENMSSBjb25jZXB0cwotaDIuIEFjY2VzcyBhbmQgbW9kZXMKLVRoZSBDTEkgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGNvbnNvbGUgd2luZG93IG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUgb3IgYnkgdXNpbmcgc3NoIHRvIGNvbm5lY3QgdG8gdGhlIHZpcnR1YWwgbWFjaGluZS4gTG9nZ2luZyBpbiBhcyB0aGUgYWRtaW4gdXNlciBnaXZlcyBhY2Nlc3MgdG8gdGhlIENMSS4KLQotVGhlIGFkbWluIHVzZXIgd2lsbCBiZSBsb2dnZWQgaW50byB0aGUgQ0xJIGluIGxvZ2luIG1vZGUuIFRoZSBwcm9tcHQgd2lsbCBoYXZlIGEgPiB0byBpbmRpY2F0ZSB0aGlzIG1vZGUuCi0KLUVudGVyIGVuYWJsZSBtb2RlIGJ5IHR5cGluZyB0aGUgZW5hYmxlIGNvbW1hbmQuIFRoZSBwcm9tcHQgd2lsbCBoYXZlIGEgIyB0byBpbmRpY2F0ZSB0aGlzIG1vZGUuCi0KLUVudGVyIGNvbmZpZyBtb2RlIGJ5IHR5cGluZyB0aGUgY29uZmlndXJlIGNvbW1hbmQuIFRoZSBwcm9tcHQgd2lsbCBoYXZlIGEgKGNvbmZpZykjIHRvIGluZGljYXRlIHRoaXMgbW9kZS4KLQotVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNvbmZpZyBzdWJtb2RlcyB3aGljaCB3aWxsIGJlIGluZGljYXRlZCBpbiB0aGUgcHJvbXB0IGFzIChjb25maWctPHN1Ym1vZGU+KSMsIGFuZCBlYWNoIHN1Ym1vZGUgYWxsb3dzIGNvbmZpZ3VyYXRpb24gb2YgYSBzcGVjaWZpYyB0eXBlIG9mIG9iamVjdCBpbiB0aGUgZGF0YWJhc2UuCi0KLVR5cGUgZXhpdCB0byByZXR1cm4gdG8gdGhlIHByZXZpb3VzIG1vZGUsIG9yIHR5cGUgZW5kIHRvIGV4aXQgYWxsIGNvbmZpZyBtb2RlcyBhbmQgcmV0dXJuIHRvIGVuYWJsZSBtb2RlLgotCi1oMi4gTmF2aWdhdGlvbiBhbmQgaGVscAotVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHdheXMgdXNlcnMgY2FuIG5hdmlnYXRlIHRoZSBDTEkgYW5kIHJlY2VpdmUgaGVscCBhdCBhbnkgdGltZS4KLQotRm9yIG5hdmlnYXRpb24sIHRoZSBDTEkgaW1wbGVtZW50cyBhIExpbnV4L3NoZWxsLXN0eWxlIG5hdmlnYXRpb24gLSBmb3IgZXhhbXBsZToKLQotKiBDdHJsLUIgLSBiYWNrIG9uZSBjaGFyYWN0ZXIKLSogQ3RybC1GIC0gZm9yd2FyZCBvbmUgY2hhcmFjdGVyCi0qIEN0cmwtQSAtIG1vdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lCi0qIEN0cmwtRSAtIG1vdmUgdG8gdGhlIGVuZCBvZiB0aGUgbGluZQotKiBDdHJsLVAgLSBkaXNwbGF5IHRoZSBwcmV2aW91cyBjb21tYW5kIC0gY2FuIGJlIHJlcGVhdGVkIHRvIGdvIHRocm91Z2ggaGlzdG9yeQotKiBDdHJsLVIgLSBzZWFyY2ggZm9yIHRleHQgYW1vbmcgcHJldmlvdXMgY29tbWFuZHMKLVJlZmVyIHRvIGh0dHA6Ly90aXN3d3cuY2FzZS5lZHUvcGhwL2NoZXQvcmVhZGxpbmUvcmVhZGxpbmUuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhbGwga2V5Ym9hcmQgc2hvcnRjdXRzIGFuZCBmYWNpbGl0aWVzLgotCi1IZWxwIGlzIGFsc28gYWNjZXNzaWJsZSBieSB0eXBpbmcgdGhlIGNvbW1hbmQgaGVscC4gVGhlIG91dHB1dCB3aWxsIHZhcnkgYmFzZWQgb24gdGhlIHNwZWNpZmljIG1vZGUgdGhlIHVzZXIgaXMgaW4uCi0KLUNvbW1hbmQgY29tcGxldGlvbiBhdCBhbnkgcG9pbnQgY2FuIGJlIHByZXNzaW5nIHRhYiBvbmNlIG9yIHR3aWNlLiBQcmVzc2luZyB0YWIgb25jZSB3aWxsIGNvbXBsZXRlIHRoZSB2YWx1ZSBpZiBwb3NzaWJsZSwgYW5kIHByZXNzaW5nIHRhYiB0d2ljZSB3aWxsIHNob3cgYWxsIHBvc3NpYmxlIGNvbXBsZXRpb25zLiBUeXBlIHRoZSA/IGNoYXJhY3RlciB0byBzaG93IGNvbXBsZXRpb25zIGF0IGFueSB0aW1lLgotCi1UaGUgQ0xJIHdpbGwgYWNjZXB0IHNob3J0ZW5lZCB2ZXJzaW9ucyBvZiBjb21tYW5kcyBhbmQgb3B0aW9ucyBzbyBsb25nIGFzIHRoZXJlIGlzIG5vIGFtYmlndWl0eSBpbiB0aGUgY29tbWFuZHMuIEZvciBleGFtcGxlLCBzaCBydW4gd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBzaG93IHJ1bm5pbmctY29uZmlnLgotCi1DTEkgY29udmVuaWVuY2VzOiBwaXBlcywgd2F0Y2hpbmcgY29tbWFuZHMsIGFuZCBvdGhlciB0cmlja3MKLVRoZSBvdXRwdXQgb2YgYW55IENMSSBjb21tYW5kIGNhbiBiZSBwaXBlZCB0byBjb21tb24gVW5peCBzaGVsbCB1dGlsaXRpZXMgc3VjaCBhcyBncmVwLCBhd2ssIHdjLCB0YWlsLCBtb3JlLCBvciBsZXNzLiBUaGlzIGNhbiBtYWtlIHNlYXJjaGluZyBmb3IgZGF0YSBvciBicm93c2luZyB0aHJvdWdoIG91dHB1dCBzaWduaWZpY2FudGx5IGVhc2llci4gRm9yIGV4YW1wbGUsIHRvIGZpbmQgYWxsIHRoZSBwb3J0cyBvZiBhIGdpdmVuIHN3aXRjaCwgdHlwZToKLXtub2Zvcm1hdH0KLTEwLjAuMi4xNT4gc2hvdyBwb3J0IHwgZ3JlcCA6MjQKLTAwOjBhOjAwOjI0OmE4OmM0OjY5OjAwIDUyICAgIDI4ICAgIDAwOjI0OmE4OmM0OjY5OmNjCi0wMDowYTowMDoyNDphODpjNDo2OTowMCA1NCAgICAzMCAgICAwMDoyNDphODpjNDo2OTpjYQotMDA6MGE6MDA6MjQ6YTg6YzQ6Njk6MDAgNTYgICAgMzIgICAgMDA6MjQ6YTg6YzQ6Njk6YzgKLTAwOjBhOjAwOjI0OmE4OmM0OjY5OjAwIDU3ICAgIDMzICAgIDAwOjI0OmE4OmM0OjY5OmM3Ci0wMDowYTowMDoyNDphODpjNDo2OTowMCA1OCAgICAzNCAgICAwMDoyNDphODpjNDo2OTpjNgotMTAuMC4yLjE1Pgote25vZm9ybWF0fQotVGhlIENMSSBwcm92aWRlcyBiZWdpbiwgaW5jbHVkZSwgYW5kIGV4Y2x1ZGUgYXMgcGlwZSBvcHRpb25zIHRoYXQgbWF5IGJlIGZhbWlsaWFyIHRvIGFkbWluaXN0cmF0b3JzIG9mIGV4aXN0aW5nIG5ldHdvcmsgZGV2aWNlcy4gYmVnaW4gaXMgdXNlZnVsIGZvciBzdGFydGluZyB0byB2aWV3IGxhcmdlIG91dHB1dCBhdCBhIHBhcnRpY3VsYXIgcG9pbnQuIEZvciBleGFtcGxlLCB0byBzZWUganVzdCB0aGUgbHNvZiBvdXRwdXQgb2Ygc2hvdyB0ZWNoLXN1cHBvcnQsIHR5cGU6Ci17bm9mb3JtYXR9Ci0xMC4wLjIuMTU+IHNob3cgdGVjaC1zdXBwb3J0IHwgYmVnaW4gbHNvZiB8bW9yZQotRXhlY3V0aW5nIG9zIGNvbW1hbmQ6IHN1ZG8gbHNvZgotQ09NTUFORCAgICBQSUQgICAgICAgVVNFUiAgIEZEICAgICAgVFlQRSAgICAgICAgICAgICBERVZJQ0UgU0laRS9PRkYgICAgICAgTk9ERSBOQU1FCi1pbml0ICAgICAgICAgMSAgICAgICByb290ICBjd2QgICAgICAgRElSICAgICAgICAgICAgICAgOCwxNiAgICAgNDA5NiAgICAgICAgICAyIC8KLWluaXQgICAgICAgICAxICAgICAgIHJvb3QgIHJ0ZCAgICAgICBESVIgICAgICAgICAgICAgICA4LDE2ICAgICA0MDk2ICAgICAgICAgIDIgLwotaW5pdCAgICAgICAgIDEgICAgICAgcm9vdCAgdHh0ICAgICAgIFJFRyAgICAgICAgICAgICAgIDgsMTYgICAxMjU2NDAgICAgICAgNDA4MSAvc2Jpbi9pbml0Ci1pbml0ICAgICAgICAgMSAgICAgICByb290ICBtZW0gICAgICAgUkVHICAgICAgICAgICAgICAgOCwxNiAgICA1MTcxMiAgICAgIDE5NzM4IC9saWIvbGlibnNzX2ZpbGVzLTIuMTIuMS5zbwotaW5pdCAgICAgICAgIDEgICAgICAgcm9vdCAgbWVtICAgICAgIFJFRyAgICAgICAgICAgICAgIDgsMTYgICAgNDM1NTIgICAgICAyNjY3OSAvbGliL2xpYm5zc19uaXMtMi4xMi4xLnNvCi1pbml0ICAgICAgICAgMSAgICAgICByb290ICBtZW0gICAgICAgUkVHICAgICAgICAgICAgICAgOCwxNiAgICA5NzI1NiAgICAgIDE5NTc5IC9saWIvbGlibnNsLTIuMTIuMS5zbwotLi4uCi17bm9mb3JtYXR9Ci1UaGUgQ0xJIGFsc28gYWxsb3dzIHVzZXJzIHRvIHJlcGVhdGVkbHkgaW52b2tlIGEgY29tbWFuZCBieSBwcmVwZW5kaW5nIHRoZSBjb21tYW5kIHdhdGNoLiBGb3IgZXhhbXBsZSwgd2F0Y2ggc2hvdyBzd2l0Y2ggPGRwaWQ+IGZsb3cgd2lsbCBhbGxvdyB0aGUgdXNlciB0byBtb25pdG9yIHRoZSBmbG93cyBvbiBhIHNwZWNpZmljIHN3aXRjaC4gVGhpcyBtYXkgYmUgZmFtaWxpYXIgdG8gVW5peCB1c2VycyB3aG8gdXNlIHRvcCBvciB0aGUgY29ycmVzcG9uZGluZyB3YXRjaCBjb21tYW5kIGluIFVuaXguCi0KLU11bHRpcGxlIENMSSBjb21tYW5kcyBjYW4gYmUgZW50ZXJlZCBpbnRvIHRoZSBDTEkgb24gYSBzaW5nbGUgbGluZSwgc2VwYXJhdGVkIGJ5IGEgc2VtaS1jb2xvbi4gRm9yIGV4YW1wbGUsIHRvIGdldCBhbGwgdGhlIHdheSBpbnRvIGEgY29uZmlndXJpbmcgYSBmbG93IGVudHJ5IG9uIGEgc3BlY2lmaWMgc3dpdGNoLCB0eXBlOgote25vZm9ybWF0fQotMTAuMC4yLjE1PiBlbmFibGU7IGNvbmY7IHN3aXRjaCAwMDowYTowMDoyNDphODpjNDo2OTowMDsgZmxvdy1lbnRyeSBmb28KLTEwLjAuMi4xNShjb25maWctZmxvdy1lbnRyeSkjCi17bm9mb3JtYXR9Ci1GaW5hbGx5LCB0aGUgQ0xJIGFsbG93cyByZWRpcmVjdGluZyB0aGUgb3V0cHV0IG9mIGEgY29tbWFuZCB0byBhIGxvY2FsIGZpbGUgb3IgdG8gdGhlIFVSTCBvZiBhbiBIVFRQIHNlcnZlciBvciBhbiBGVFAgc2VydmVyLiBUaGUgbG9jYWwgZmlsZSBpcyBzdG9yZWQgaW4gdGhlIGNvbnRyb2xsZXIgZGF0YWJhc2UgKGFzIGdlbmVyYWwgYWNjZXNzIHRvIHRoZSBsb2NhbCBmaWxlc3lzdGVtIGlzIG5vdCBnaXZlbikuIFRoaXMgaXMgY29udmVuaWVudCBmb3Igc3RvcmluZyBhd2F5IHNob3cgb3V0cHV0IG9yIHZlcnNpb25zIG9mIGNvbmZpZ3VyYXRpb25zLiBGb3IgZXhhbXBsZSwgdG8gc3RvcmUgdGhlIG91dHB1dCBvZiBzaG93IGhvc3QsIHR5cGU6Ci17bm9mb3JtYXR9Ci0xMC4wLjIuMTUjIHNob3cgaG9zdCA+IGNvbmZpZzovL2hvc3RvdXRwdXQKLXVzZXIgZGF0YSBjcmVhdGVkCi0xMC4wLjIuMTUjIHNob3cgY29uZmlnCi1OYW1lICAgICAgIExlbmd0aCBWZXJzaW9uIFRpbWVzdGFtcAotLS0tLS0tLS0tLXwtLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tCi1ob3N0b3V0cHV0IDE3NzUgICAxICAgICAgIDIwMTAtMTItMTUuMDg6Mjk6MzEKLQotMTAuMC4yLjE1IyBzaG93IGNvbmZpZyBob3N0b3V0cHV0IHwgaGVhZCAtMTAKLU1BQyBBZGRyZXNzICAgICAgIE5hbWUgU3dpdGNoIElEICAgICAgICAgICAgICAgSW5ncmVzcyBQb3J0IElQIEFkZHJlc3MgICAgIFZlbmRvcgotLS0tLS0tLS0tLS0tLS0tLS18LS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotMDA6MGM6Mjk6NmE6ODM6OGMgICAgICAwMDowYTowMDoyNDphODpjNDo2OTowMCAzOCAgICAgICAgICAgMTkyLjE2OC4xMC4yMDcgVk13YXJlLCBJbmMuCi0wMDoyMTpmNzpkZTplOTowMCAgICAgIDAwOjBjOjAwOjIxOmY3OmRlOmU5OjAwIGxvY2FsKDY1NTM0KSAxOTIuMTY4LjEyLjEwMiBQcm9DdXJ2ZSBOZXR3b3JraW5nIGJ5IEhQCi0wMDoyNTo5MDowODo5NDpkNSAgICAgIDAwOjBhOjAwOjIxOmY3OmRlOmU5OjAwIDIgICAgICAgICAgICAxMjguOC4xMDkuMTQ1ICBTdXBlciBNaWNybyBDb21wdXRlciwgSW5jLgotMDA6MzA6NDg6Zjk6Y2M6ZjcgICAgICAwMDowMDowMDozMDo0ODpmOTpjYzpmNyBsb2NhbCg2NTUzNCkgMTkyLjE2OC4yLjk5ICAgU3VwZXJtaWNybyBDb21wdXRlciwgSW5jLgotMDA6MzA6NDg6Zjk6Y2Q6MGIgICAgICAwMDowMDowMDozMDo0ODpmOTpjZDowYiBsb2NhbCg2NTUzNCkgMC4wLjAuMCAgICAgICAgU3VwZXJtaWNybyBDb21wdXRlciwgSW5jLgotMDA6MzA6NDg6Zjk6Y2Q6MGQgICAgICAwMDowMDowMDowMDowMDowMDowMDowMSAxNyAgICAgICAgICAgMTkyLjE2OC4xMS4yICAgU3VwZXJtaWNybyBDb21wdXRlciwgSW5jLgotMDA6NTA6OGQ6NjU6YmU6NGIgICAgICAwMDowMDowMDowMDowMDowMDowMDowMSAyMiAgICAgICAgICAgMTkyLjE2OC4xMS4xICAgQUJJVCBDT01QVVRFUiBDT1JQT1JBVElPTgotMTA6MDA6MDA6Njc6YWQ6MDcgICAgICAwMDowMDowMDozMDo0ODpmOTpjYzpmNyA0ICAgICAgICAgICAgMTkyLjE2OC4xMi4xMzIgdW5rbm93bgote25vZm9ybWF0fQotaDIuIENvbnZlbnRpb25zCi1UZXh0IGluIGNvdXJpZXIgZm9udCBpbmRpY2F0ZXMgZWl0aGVyIHRleHQgdGhhdCBzaG91bGQgYmUgdHlwZWQgaW4gYnkgdGhlIHVzZXIgb3Igb3V0cHV0IGZyb20gYSBjb21tYW5kLgotCi1UZXh0IGVuY2xvc2VkIGluIHBhcmVudGhlc2VzICggKSBpbmRpY2F0ZXMgYSBzZXQgb2YgcmVxdWlyZWQgYXJndW1lbnRzLiBUaGUgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGEgdmVydGljYWwgYmFyIHwuCi0KLVRleHQgZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzIFsgXSBpbmRpY2F0ZXMgb3B0aW9uYWwgYXJndW1lbnRzLiBUaGUgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGEgdmVydGljYWwgYmFyIHwuCi0KLVRleHQgZW5jbG9zZWQgaW4gYW5nbGUgYnJhY2tldHMgPCA+IGluZGljYXRlcyBhIHZhbHVlIHRoYXQgc2hvdWxkIGJlIGVudGVyZWQvc3Vic3RpdHV0ZWQgYnkgdGhlIHVzZXIuCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9waW5nL3BpbmcgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcGluZy9waW5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjNjgwODVjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9waW5nL3BpbmcKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRoZSBwaW5nIGNvbW1hbmQgc2VuZHMgSUNNUCBlY2hvIHJlcXVlc3RzIAotdmFsaWRhdGVzIGJhc2ljIG5ldHdvcmsgY29ubmVjdGl2aXR5IGJldHdlZW4gdGhlCi1DTEkgYW5kIHRoZSByZXF1ZXN0ZWQgdGFyZ2V0LgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3BpbmcvcGluZy1jb3VudCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9waW5nL3BpbmctY291bnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDI4YzU1ZjAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3BpbmcvcGluZy1jb3VudAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyBpbnRlZ2VyIGZpZWxkIGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiBwaW5nIHJlcXVlc3RzCi1zZW50IHRvIHRoZSB0YXJnZXQgYmVmb3JlIGV4aXRpbmcuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAnNScuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcGluZy9waW5nLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcGluZy9waW5nLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhkNTJiNmUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3BpbmcvcGluZy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1waW5nIDEuMi4zLjQKLSAgUGluZyBhIHNwZWNpZmljIGhvc3Qgd2l0aCBhIGRlZmF1bHQgcGFja2FnZSBjb3VudCAoNSkKLQotcGluZyAxMCAxLjIuMy40Ci0gIFBpbmcgYSBzcGVjaWZpYyBob3N0IHdpdGggYSBmaXhlZCBudW1iZXIgb2YgcGFja2V0cwpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Jlc2VydmVkL2FsbCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9yZXNlcnZlZC9hbGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDMzMTcyM2EuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Jlc2VydmVkL2FsbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotVGhlICdhbGwnIHRva2VuIGlzIHVzZWQgaW4gcGxhY2Ugb2YgYW4gaWRlbnRpZmllcidzCi12YWx1ZSB0byByZXF1ZXN0IGV2ZXJ5IGl0ZW0gYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21tYW5kLgotVGhlICdhbGwnIHRva2VuIGlzIHJlc2VydmVkLCBpZGVudGlmaWVycyBtYXkgbm90Ci11c2UgdGhlICdhbGwnIHRva2VuIGFzIHRoZWlyIG5hbWUsIG5vIHN3aXRjaC1hbGlhcyBvcgotaG9zdC1hbGlhcyBtYXkgYmUgY2FsbGVkICdhbGwnCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmYzBmYTM1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93CisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotVGhlICdzaG93IHJ1bm5pbmctY29uZmlnJyBjb21tYW5kIGRpc3BsYXlzIHRoZSBjb21wbGV0ZQotY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbnRyb2xsZXIuICAgV2hlbiB0aGUgY29udHJvbGxlcgotaXMgb3BlcmF0aW5nIHdpdGggSEEgZW5hYmxlZCwgJ3Nob3cgcnVubmluZy1jb25maWcnIGRpc3BsYXlzCi10aGUgY29uZmlndXJhaW9uIG9mIHRoZSBIQSBjbHVzdGVyLgotCi1UaGUgcnVubmluZy1jb25maWcgaXMgaW50ZW5kZWQgdG8gc2hvdyB0aGUgY29uZmlndXJhdGlvbgotbmVjZXNzYXJ5IHRvIHVwZGF0ZSBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiB0byB0aGUgY3VycmVudAotY29uZmlndXJhdGlvbi4gIFRoZSBydW5uaW5nLWNvbmZpZyB0aGVuIGRpc3BsYXlzIGRldmlhdGlvbnMKLWZyb20gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbjsgY29uZmlndXJhdGlvbiB3aGljZSBhcmlzZXMKLWZyb20gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aWxsIG5vdCBiZSBzaG93biBpbiB0aGUKLXJ1bm5pbmctY29uZmlnCi0KLVdoaWxlIG9wZXJhdGluZyB3aXRoIEhBIGVuYWJsZWQsIGEgcmVwbGF5IG9mIHRoZSBydW5uaW5nCi1jb25maWcgd2lsbCBub3QgY2F1c2UgYSBzbGF2ZSB0byBiZSAocmUpY29uZmlndXJlZCBpbnRvCi1IQS1lbmFibGVkIGlmIGl0IGlzIG5vdCBhbHJlYWR5IG9wZXJhdGluZyBhcyBIQS1lbmFibGVkLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3J1bm5pbmctY29uZmlnL3Nob3ctYWRkcmVzcy1zcGFjZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LWFkZHJlc3Mtc3BhY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIxN2MyMGYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3J1bm5pbmctY29uZmlnL3Nob3ctYWRkcmVzcy1zcGFjZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlICdhZGRyZXNzLXNwYWNlJyBrZXl3b3JkIGZpbHRlcnMgdGhlIHJ1bm5pbmctY29uZmlnIG91dHB1dAotdG8gb25seSBkaXNwbGF5IHRoZSBhZGRyZXNzLXNwYWNlIHJlbGF0ZWQgY29uZmlndXJhdGlvbi4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LWNvbnRyb2xsZXItbm9kZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LWNvbnRyb2xsZXItbm9kZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzMxMmZmYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy1jb250cm9sbGVyLW5vZGUKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRoZSAnY29udHJvbGxlci1ub2RlJyBrZXl3b3JkIGZpbHRlciB0aGUgcnVubmluZyBjb25maWcKLXRvIG9ubHkgZGlzcGxheSBjb250cm9sbGVyLW5vZGUgY29uZmlndXJhdGlvbi4gIFRoaXMgaW5jbHVkZXMKLWRlc2NyaXB0aW9ucyBmb3IgdGhlIGNvbnRyb2xsZXIgbm9kZSBpbnRlcmZhY2VzLCBhbmQgZmlyZXdhbGwgcnVsZXMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3J1bm5pbmctY29uZmlnL3Nob3ctZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzJiNWUxMy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotc2hvdyBydW5uaW5nLWNvbmZpZwotICAgIFNob3cgdGhlIGNvbXBsZXRlIHJ1bm5pbmctY29uZmlnCi0KLXNob3cgcnVubmluZy1jb25maWcgc3d0aWNoIDAwOjAwOjAwOjAwOjAwOjczOjI4OjAzIAotICAgIFNob3cgdGhlIHJ1bm5pbmcgY29maWcgZGV0YWlscyBmb3IgYSBwYXJ0aWN1bGFyIHN3aXRjaAotCi0gICAgIQotICAgIHN3aXRjaCAwMDowMDowMDowMDowMDo3MzoyODowMwotICAgICAgc3dpdGNoLWFsaWFzIG50Z3ItNzMyOC0zCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LWZlYXR1cmUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy1mZWF0dXJlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiMjRmYTM1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LWZlYXR1cmUKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRoZSAnZmVhdHVyZScga2V5d29yZCBmaWx0ZXJzIHRoZSBydW5uaW5nLWNvbmZpZyBvdXRwdXQKLXRvIGRpc3BsYXkgdGhlIGZlYXR1cmVzIGVuYWJsZWQgb3IgZGlzYWJsZWQgd2hpY2ggZGlmZmVyCi1mcm9tIHRoZSBkZWZhdWx0IGZlYXR1cmVzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3J1bm5pbmctY29uZmlnL3Nob3ctaG9zdCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LWhvc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE2MjUwNDguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3J1bm5pbmctY29uZmlnL3Nob3ctaG9zdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGhlICdob3N0JyBrZXl3b3JkIGZpbHRlcnMgdGhlIHJ1bm5pbmctY29uZmlnIG91dHB1dCB0byBvbmx5IGRpc3BsYXkKLXRoZSBob3N0IHJlbGF0ZWQgY29uZmlndXJhdGlvbi4gIFRoaXMgaW5jbHVkZXMgaG9zdCBhbGlhc2VzLCBhbmQKLWFueSBob3N0IHNlY3VyaXR5IGFzc29jaWF0aW9ucy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LW5ldHdvcmstc2VydmljZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LW5ldHdvcmstc2VydmljZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjgzYWViNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy1uZXR3b3JrLXNlcnZpY2UKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoZSAnbmV0d29yay1zZXJ2aWNlJyBrZXl3b3JkIGZpbHRlciB0aGUgcnVubmluZy1jb25maWcgb3V0cHV0Ci10byBvbmx5IGRpc3BsYXkgdGhlIG5ldHdvcmstc2VydmljZSByZWxhdGVkIGNvbmZpZ3VyYXRpb24uCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy1zbm1wIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3J1bm5pbmctY29uZmlnL3Nob3ctc25tcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZWE5MGZhZS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy1zbm1wCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGUgJ3NubXAnIGtleXdvcmQgZmlsdGVycyB0aGUgcnVubmluZy1jb25maWcgb3V0cHV0IHRvIG9ubHkKLWRpc3BsYXkgdGhlIHNubXAgY29uZmlndXJhdGlvbi4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LXN3aXRjaCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LXN3aXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGI2NmMxMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy1zd2l0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoZSAnc3dpdGNoJyBrZXl3b3JkIGZpbHRlcnMgdGhlIHJ1bm5pbmctY29uZmlnIG91dHB1dCB0bwotb25seSBkaXNwbGF5IHN3aXRjaCByZWxhdGVkIGNvbmZpZ3VyYXRpb24uCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy10YWcgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy10YWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGFjY2Y2YWYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3J1bm5pbmctY29uZmlnL3Nob3ctdGFnCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGUgJ3RhZycga2V5d29yZCBmaWx0ZXJzIHRoZSBydW5uaW5nLWNvbmZpZyB0byBvbmx5Ci1kaXNwbGF5IHRoZSB0YWcgc3VibW9kZSByZWxhdGVkIGNvbmZpZ3VyYXRpb24uICBVc2VzCi1vZiB0aGUgdGFnIHdpdGhpbiB2bnMsIGFkZHJlc3Mtc3BhY2UsIG9yIG90aGVyIHN1Ym1vZGVzCi1pcyBub3QgaW5jbHVkZWQuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy12Y2VudGVyIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3J1bm5pbmctY29uZmlnL3Nob3ctdmNlbnRlcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDQ5NGY2Yy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvcnVubmluZy1jb25maWcvc2hvdy12Y2VudGVyCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1UaGUgJ3ZjZW50ZXInIGtleXdvcmQgZmlsdGVycyB0aGUgcnVubmlnLWNvbmZpZyBvdXRwdXQgdG8KLW9ubHkgdmNlbnRlciByZWxhdGVkIGNvbmZpZ3VyYXRpb24sIGluY2x1ZGluZyB0aGUgZHZzCi1hbmQgZHZzLXBvcnQtZ3JvdXBzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3J1bm5pbmctY29uZmlnL3Nob3ctdm5zIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3J1bm5pbmctY29uZmlnL3Nob3ctdm5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiNzdiYWVhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9ydW5uaW5nLWNvbmZpZy9zaG93LXZucworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlICd2bnMnIGtleXdvcmQgZmlsdGVycyB0aGUgcnVubmluZy1jb25maWcgb3V0cHV0IHRvCi1vbmx5IGRpc3BsYXkgdGhlIHZucyBjb25maWd1cmF0aW9uLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3NldC9zZXQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc2V0L3NldApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTllOWEwMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc2V0L3NldAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNldCB0aGUgdGVybWluYWwgaGVpZ2h0IGZvciBwYWdpbmcgQ2xpIGNvbW1hbmQgb3V0cHV0LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zZXQvc2V0LWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc2V0L3NldC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3MjkwOTRkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zZXQvc2V0LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXNldCBsZW5ndGggNTAKLSAgU2V0IHRoZSB0ZXJtaW5hbCBsZW5ndGggdG8gNTAgbGluZXMuCi0KLXNldCBsZW5ndGggdGVybQotICBTZXQgdGhlIHRlcm1pbmFsIGxlbmd0aCB0byB0aGUgbmF0dXJhbCBzY3JlZW4gaGVpZ2h0LgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Nob3ctYXJwIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Nob3ctYXJwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxZmYxZTI0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zaG93LWFycAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRoZSAnc2hvdyBhcnAnIGNvbW1hbmQgc2hvd3MgdGhlIGNvbmZpZ3VyZWQgc3RhdGljIGFycCB0YWJsZS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc2hvdy1hcnAtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zaG93LWFycC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzZDRiZmRjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zaG93LWFycC1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1sb2NhbGhvc3QjIHNob3cgYXJwCi0KLSMgSXAgICAgICAgTWFjCi0KLS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0KLQotMSAxMC4wLjAuMSAxMToyMjozMzo0NDo1NTo2NgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Nob3ctY2xvY2sgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc2hvdy1jbG9jawpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjE3NTcyMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc2hvdy1jbG9jaworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRoZSAnc2hvdyBjbG9jaycgY29tbWFuZCBzaG93cyB0aGUgY2xvY2suCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc2hvdy1ldmVudC1oaXN0b3J5LWNvdW50IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Nob3ctZXZlbnQtaGlzdG9yeS1jb3VudApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDQyMmI2ZS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc2hvdy1ldmVudC1oaXN0b3J5LWNvdW50CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotTGltaXQgdGhlIG91dHB1dCB0byBpbmRpY2F0ZWQgbnVtYmVyIG9mIGxpbmVzCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc25tcC9zaG93IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3NubXAvc2hvdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzdjNjI0YS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc25tcC9zaG93CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1EaXNwbGF5IG9wZXJhdGlvbmFsIHBhcmFtZXRlcnMgb2YgdGhpcyBkZXZpY2UncyBTTk1QIHN1cHBvcnQuCi0KLVNob3cgdGhlIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIGZvciB0aGUgU05NUCBNSUJzLAotYW5kIHNob3cgdGhlIHN0YXR1cyBvZiB0aGUgbmV0d29yayBmaXJld2FsbAotKHdoaWNoIG1pZ2h0IGJlIGJsb2NraW5nIHNvbWUgU05NUCByZXF1ZXN0cykKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3Nob3ctZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3Nob3ctZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOTJkNTQ4My4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc25tcC9zaG93LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXNob3cgc25tcAotICBEaXNwbGF5IFNOTVAgb3BlcmF0aW9uYWwgc3RhdGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc25tcC9zbm1wLXNlcnZlciBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3NubXAtc2VydmVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwNzA2NmY0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3NubXAtc2VydmVyCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1Db25maWd1cmUgdGhpcyBkZXZpY2UgdG8gcmVzcG9uZCB0byBTTk1QIHF1ZXJpZXMuCi0KLUNvbmZpZ3VyZSBTTk1QIHByb3RvY29sIHBhcmFtZXRlcnMsIGFuZCBjb25maWd1cmUgaG93Ci1yZXNwb25zZXMgdG8gU05NUCBxdWVyaWVzIGFyZSBjb21wb3NlZC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3NubXAtc2VydmVyLWNvbW11bml0eSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3NubXAtc2VydmVyLWNvbW11bml0eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjg3MWQyYy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc25tcC9zbm1wLXNlcnZlci1jb21tdW5pdHkKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLUNvbmZpZ3VyZSB0aGUgY29tbXVuaXR5IHN0cmluZyBmb3Igc2ltcGxlIHJlYWQtb25seSBTTk1QIGNsaWVudCBhdXRoZW50aWNhdGlvbi4KLQotUmVzZXQgdGhlIGNvbW11bml0eSBzdHJpbmcgKGRlZmF1bHQgZW1wdHkpIHdpdGggdGhlICdubycgdmVyc2lvbiBvZiB0aGlzIGNvbW1hbmQuCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3NubXAtc2VydmVyLWNvbnRhY3QgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc25tcC9zbm1wLXNlcnZlci1jb250YWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmYTQ1ZDllLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3NubXAtc2VydmVyLWNvbnRhY3QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLUNvbmZpZ3VyZSB0aGUgYWRtaW5zdHJhdGl2ZSBjb250YWN0IHJlY29yZCAodGhlIFNOTVAgc3lzQ29udGFjdCBNSUIpIGZvciB0aGlzIGRldmljZS4KLQotUmVzZXQgdGhlIGNvbnRhY3QgaW5mb3JtYXRpb24gdG8gc3lzdGVtIGRlZmF1bHRzIHdpdGggdGhlICdubycgdmVyc2lvbiBvZiB0aGlzIGNvbW1hbmQuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc25tcC9zbm1wLXNlcnZlci1lbmFibGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc25tcC9zbm1wLXNlcnZlci1lbmFibGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGVmZjk0ZDAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3NubXAvc25tcC1zZXJ2ZXItZW5hYmxlCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1FbmFibGUgdGhpcyBkZXZpY2UgZm9yIHJlc3BvbmRpbmcgdG8gU05NUC4KLQotVXNlIHRoZSAnbm8nIHZlcnNpb24gb2YgdGhpcyBjb21tYW5kIHRvIGRpc2FibGUgU05NUCBmZWF0dXJlcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3NubXAtc2VydmVyLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc25tcC9zbm1wLXNlcnZlci1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhMjc3ZmU1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3NubXAtc2VydmVyLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1zbm1wLXNlcnZlciBlbmFibGUKLSAgRW5hYmxlIFNOTVAgc3VwcG9ydC4KLQotbm8gc25tcC1zZXJ2ZXIgZW5hYmxlCi0gIERpc2FibGUgU05NUCBzdXBwb3J0LgotCi1zbm1wLXNlcnZlciBjb21tdW5pdHkgcm8gTVktU05NUAotICBTZXQgdGhlIGNvbW11bml0eSBzdHJpbmcgKGZvciBhdXRoZW50aWNhdGluZyB0byB0aGlzIFNOTVAgc2VydmljZSkKLSAgdG8gIk1ZLVNOTVAiCi0KLW5vIHNubXAtc2VydmVyIGNvbW11bml0eQotICBSZXNldCB0aGUgY29tbXVuaXR5IHN0cmluZyB0byBkZWZhdWx0ICh0aGUgZW1wdHkgc3RyaW5nKQotCi1zbm1wLXNlcnZlciBsb2NhdGlvbiBzbm1wLmV4YW1wbGUuY29tCi0gIFNldCB0aGUgc2VydmVyIGxvY2F0aW9uIHJlcG9ydGVkIGR1cmluZyBTTk1QIHF1ZXJpZXMuCi0KLW5vIHNubXAtc2VydmVyIGxvY2F0aW9uCi0gIFJlc2V0IHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBzZXJ2ZXIgbG9jYXRpb24uCi0KLXNubXAtc2VydmVyIGNvbnRhY3QgYWRtaW5AZXhhbXBsZS5jb20KLSAgU2V0IHRoZSBhZG1pbmlzdHJhdGl2ZSBjb250YWN0IHJlcG9ydGVkIGR1cmluZyBTTk1QIHF1ZXJpZXMuCi0KLW5vIHNubXAtc2VydmVyIGNvbnRhY3QKLSAgUmVzZXQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGFkbWluaXN0cmF0aXZlIGNvbnRhY3Qgc2V0dGluZy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zbm1wL3NubXAtc2VydmVyLWxvY2F0aW9uIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3NubXAvc25tcC1zZXJ2ZXItbG9jYXRpb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDNhOTQyMjAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3NubXAvc25tcC1zZXJ2ZXItbG9jYXRpb24KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLUNvbmZpZ3VyZSB0aGlzIGRldmljZSdzIGxvY2F0aW9uIHZpYSB0aGUgc3lzTG9jYXRpb24gU05NUCBNSUIuCi0KLVJlc2V0IHRoZSBsb2NhdGlvbiB0byB0aGUgc3lzdGVtIGRlZmF1bHQgd2l0aCB0aGUgJ25vJyB2ZXJzaW9uIG9mIHRoaXMgY29tbWFuZC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zdGF0aWMtYXJwIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N0YXRpYy1hcnAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGVjNDFjMzUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N0YXRpYy1hcnAKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1UaGUgJ2FycCcgY29tbWFuZCBpcyB1c2VkIHRvIGNyZWF0ZSBzdGF0aWMgYXJwIDwtPiBpcCBhZGRyZXNzIGJpbmRpbmdzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zdGF0aWMtYXJwLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3RhdGljLWFycC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwZDg1YmE5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zdGF0aWMtYXJwLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWFycCAxMC4wLjAuMSAxMToyMjozMzo0NDo1NTo2NgotICBjcmVhdGUgYSBzdGF0aWMgYXJwIGVudHJ5Ci0KLW5vIGFycCAxMC4wLjAuMSAxMToyMjozMzo0NDo1NTo2NgotICByZW1vdmUgYSBzdGF0aWMgYXJwIGVudHJ5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC1jbHVzdGVyL3N3aXRjaC1jbHVzdGVyIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC1jbHVzdGVyL3N3aXRjaC1jbHVzdGVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhY2I5ZTkyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gtY2x1c3Rlci9zd2l0Y2gtY2x1c3RlcgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGhlIHN3aXRjaC1jbHVzdGVyIGNvbW1hbmQgZGlzcGxheXMgdGhlIGNsdXN0ZXJzIHdoaWNoCi1oYXZlIGJlZW4gY29uc3RydWN0ZWQgYnkgdGhlIGNvbnRyb2xsZXIsIGJhc2VkIG9uIHRoZQotZGlzY292ZXJlZCB0b3BvbG9neS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvYWxpYXMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL2FsaWFzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmM2RjOWEzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvYWxpYXMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Bc3NpZ24gYW4gYWxpYXMgdG8gdGhpcyBzd2l0Y2gKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvYWxpYXMtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvYWxpYXMtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGVlOTAwNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL2FsaWFzLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWFsaWFzIHN3aXRjaC0xCi0gIEF0dGFjaCBhIG5hbWUgdG8gdGhpcyBzd2l0Y2gKLQotbm8gYWxpYXMgc3dpdGNoLTEKLSAgUmVtb3ZlIGEgc3dpdGNoIGFsaWFzCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL2NvcmUtc3dpdGNoIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9jb3JlLXN3aXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzA0OWNmMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL2NvcmUtc3dpdGNoCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGhpcyBzd2l0Y2ggaXMgYSBjb3JlIHN3aXRjaC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL2NvcmUtc3dpdGNoLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL2NvcmUtc3dpdGNoLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDgxNGMxYmUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9jb3JlLXN3aXRjaC1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1jb3JlLXN3aXRjaAotICBDb25maWd1cmUgdGhlIGN1cnJlbnRseS1jb25maWd1cmVkIHN3aXRjaCBhcyBhIGNvcmUgc3dpdGNoCi0KLW5vIGNvcmUtc3dpdGNoCi0gIFJlbW92ZSB0aGUgY29yZS1zd2l0Y2ggcHJvcGVydHkKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvaW50ZXJmYWNlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9pbnRlcmZhY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDcwOGFkOTcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9pbnRlcmZhY2UKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IGEgc3dpdGNoIGludGVyZmFjZSBieSBuYW1lLCBhbmQgZW50ZXIgaXRzIGNvbmZpZ3VyYXRpb24gc3ViLW1vZGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL2ludGVyZmFjZS1hbGlhcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvaW50ZXJmYWNlLWFsaWFzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmNzc0NzgxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvaW50ZXJmYWNlLWFsaWFzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQ29uZmlndXJlIGFuIGFsaWFzIGZvciB0aGlzIHN3aXRjaCBpbnRlcmZhY2UuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9pbnRlcmZhY2UtYWxpYXMtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvaW50ZXJmYWNlLWFsaWFzLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDliYmNjNDIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9pbnRlcmZhY2UtYWxpYXMtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW50ZXJmYWNlLWFsaWFzIGRlZmludGYKLSAgQXNzaWduIGFuIGFsaWFzIHRvIHRoaXMgc3dpdGNoIGludGVyZmFjZQotCi1ubyBpbnRlcmZhY2UtYWxpYXMgZGVmaW50ZgotICBSZW1vdmUgYW4gYWxpYXMgZm9yIHRoaXMgc3dpdGNoIGludGVyZmFjZQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL2ludGVyZmFjZS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9pbnRlcmZhY2UtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDA1YWEwNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL2ludGVyZmFjZS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1pbnRlcmZhY2UgRXRoZXJuZXQxCi0gIENvbmZpZ3VyZSBhIHNwZWNpZmljIHBvcnQgb24gdGhpcyBzd2l0Y2gKLQotbm8gaW50ZXJmYWNlIEV0aGVybmV0MQotICBEZWxldGUgYSBzd2l0Y2ggaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvcmVhbHRpbWUtYWdncmVnYXRlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9yZWFsdGltZS1hZ2dyZWdhdGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIxOGFmMzMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9yZWFsdGltZS1hZ2dyZWdhdGUKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRoZSBhZ2dyZWdhdGUgb3B0aW9uIGRpc3BsYXlzIGFnZ3JlZ2F0ZWQgZmxvdyBzdGF0aXN0aWNzLgotSXQgaXMgYSByZXF1ZXN0IGZvciB0aGUgY29udHJvbGxlciB0byBhY3Rpdmx5Ci1xdWVyeSB0aGUgaW5kaWNhdGVkIHN3aXRjaCB0byBhY3F1aXJlIGFuZCBkaXNwbGF5Ci10aGUgcmVzdWx0cy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvcmVhbHRpbWUtZGVzYyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvcmVhbHRpbWUtZGVzYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGY1Nzg0YS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3JlYWx0aW1lLWRlc2MKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVRoZSBkZXNjIG9wdGlvbiBpcyBhIHJlcXVlc3QgZm9yIHRoZSBjb250cm9sbGVyIHRvCi1xdWVyeSB0aGUgaW5kaWNhdGVkIHN3aXRjaC4gIHRvIGFjcXVpcmUgdGhlIHN3aXRjaCBkZXNjcmlwdGlvbi4KLVRoZSByZXR1cm5lZCB2YWx1ZXMgaW5jbHVkZSB0aGUgc3dpdGNoIG1vZGVsIGFuZCB2ZXJzaW9uLAotdGhlIHN3aXRjaCB2ZW5kb3IsIHNlcmlhbCBudW1iZXIsIGFuZCBzb2Z0d2FyZSB2ZXJzaW9uCi1jdXJyZW50bHkgcnVubmluZy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvcmVhbHRpbWUtZmVhdHVyZXMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3JlYWx0aW1lLWZlYXR1cmVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkMTE1YTRmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvcmVhbHRpbWUtZmVhdHVyZXMKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRoZSBmZWF0dXJlcyBvcHRpb24gaXMgYSByZXF1ZXN0IGZvciB0aGUgY29udHJvbGxlciB0bwotcXVlcnkgdGhlIGluZGljYXRlZCBzd2l0Y2ggdG8gYWNxdWlyZSBkZXRhaWxzIGFib3V0IAotdGhlIGludGVyZmFjZXMgb2YgdGhlIHN3aXRjaC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvcmVhbHRpbWUtZmxvdyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvcmVhbHRpbWUtZmxvdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmRkOTFkMy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3JlYWx0aW1lLWZsb3cKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoZSBmbG93IHNlbGVjdGlvbiByZXF1ZXN0IHRoZSBjb250cm9sbGVyIHRvIHF1ZXJ5Ci10aGUgc2VsZWN0ZWQgc3dpdGNoIGZvciBhbGwgdGhlIGZsb3dzIGN1cnJlbnRseSBhY3RpdmUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3JlYWx0aW1lLXBvcnQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3JlYWx0aW1lLXBvcnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDY0NDVjNWMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9yZWFsdGltZS1wb3J0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGUgcG9ydCBvcHRpb24gaXMgYSByZXF1ZXN0IGZvciB0aGUgY29udHJvbGxlciB0bwotc2VuZCB0byB0aGUgaW5kaWNhdGVkIHN3aXRjaCwgdGhlIHJlcGx5IGlzIHRoZSBvcGVuZmxvdwotcHJvdG9jb2wgcG9ydCByZXBseSwgd2hpY2ggbGlzdHMgYWxsIHRoZSBpbnRlcmZhY2VzCi1hbmQgcHJvdmlkZXMgdHggYW5kIHJ4IHN0YXRpc3RpY3MuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3JlYWx0aW1lLXF1ZXVlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9yZWFsdGltZS1xdWV1ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOTUxYTNiOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3JlYWx0aW1lLXF1ZXVlCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGUgcXVldWUgb3B0aW9uIGlzIGEgcmVxdWVzdCBmb3IgdGhlIGNvbnRyb2xsZXIgdG8KLXF1ZXJ5IHRoZSBpbmRpY2F0ZWQgc3dpdGNoICB0byBhY3F1aXJlIHRoZSBzd2l0Y2ggcXVldWUgZGV0YWlscwotVGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIGFzc29jaWF0aW9uIGJldHdlZW4gdGhlIGludGVyZmFjZSBuYW1lcywKLXRoZSBxdWV1ZSBudW1iZXJzLCBhbmQgc29tZSBzdGF0aXRpY3MgZm9yIGVhY2ggb2YgdGhlIHF1ZXVlcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvcmVhbHRpbWUtdGFibGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3JlYWx0aW1lLXRhYmxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiYzFmNzk3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvcmVhbHRpbWUtdGFibGUKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRoZSB0YWJsZSBvcHRpb24gaXMgYSByZXF1ZXN0IGZvciB0aGUgY29udHJvbGxlciB0bwotcXVlcnkgdGhlIGluZGljYXRlZCBzd2l0Y2gsICBmb3IgdGhlIHN3aXRjaCdzIHRhYmxlCi1kZXRhaWxzLiAgVGhlIHJldHVybmVkIHZhbHVlcyB0aGUgbmFtZXMgb2YgdGhlIHRhYmxlcywKLXRoZSBzaXplIG9mIHRoZSB0YWJsZXMsIGFuZCBzb21lIHVzYWdlIHN0YXRpc3RpY3MKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc2hvdyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc2hvdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzUwZWIyNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3Nob3cKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoZSBzaG93IHN3aXRjaCBjb21tYW5kcyBkaXNwbGF5cyBvcGVyYXRpb25hbCBzdGF0ZSBmb3IKLXN3aXRjaGVzIGN1cnJlbnRseSBjb25uZWN0ZWQgdG8gdGhlIGNvbnRyb2xsZXIuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3Nob3ctaW50ZXJmYWNlcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc2hvdy1pbnRlcmZhY2VzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1NTM3NjcxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc2hvdy1pbnRlcmZhY2VzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGUgJ2ludGVyZmFjZXMnIGtleXdvcmQgbGlzdHMgdGhlIGludGVyZmFjZXMgb24gdGhlIHN3aXRjaC4KLVRoaXMgaW5mb3JtYXRpb24gaXMgcG9zZWQgYnkgdGhlIHN3aXRjaCB0byB0aGUgY29udHJvbGxlciB3aGVuCi10aGUgc3dpdGNoIGZpcnN0IGNvbm5lY3RzLCBhbmQgdGhlbiB1cGRhdGVkIGJ5IHRoZSBzd2l0Y2ggaWYKLW5ldyBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIG9yIGRlbGV0ZWQuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3Nob3ctaW50ZXJmYWNlcy1hbGlhcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc2hvdy1pbnRlcmZhY2VzLWFsaWFzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3YTEwYWExLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc2hvdy1pbnRlcmZhY2VzLWFsaWFzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1JbnRlcmZhY2VzIG1heSBoYXZlIGFsaWFzZXMgYXNzaWduZWQgdG8gdGhlbSwgdGhpcyBrZXl3b3JkCi1kaWVzcGxheXMgYW55IGFsaWFzZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzd2l0Y2gKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc2hvdy1zd2l0Y2gtYWxpYXMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3Nob3ctc3dpdGNoLWFsaWFzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzZWI3ZGNhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc2hvdy1zd2l0Y2gtYWxpYXMKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoaXMgc2VsZWN0aW9uIGRpc3BsYXlzIHRoZSBhbGlhcyBhc3NvY2lhdGVkIHdpdGggdGhlCi1yZXF1ZXN0ZWQgc3dpdGNoIChvciBhbGwgdGhlIHN3dGljaGVzIHdoZW4gYWxsIGlzIHNlbGVjdGVkKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9zaG93LXN3aXRjaC1mb3JtYXQtYnJpZWYgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3Nob3ctc3dpdGNoLWZvcm1hdC1icmllZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYWM1NDhlYy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3Nob3ctc3dpdGNoLWZvcm1hdC1icmllZgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlIGJyaWVmIGtleXdvcmQgcmVxdWVzdHMgYSBsZXNzIHZlcmJvc2UgdmVyc2lvbgotZm9yIHRoZSBvdXRwdXQgb2YgdmFyaW91cyBzaG93IGNvbW1hbmRzCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3Nob3ctc3dpdGNoLWZvcm1hdC1kZXRhaWxzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9zaG93LXN3aXRjaC1mb3JtYXQtZGV0YWlscwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYWUzMWMzYS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3Nob3ctc3dpdGNoLWZvcm1hdC1kZXRhaWxzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGUgZGV0YWlscyBrZXl3b3JkIHJlcXVlc3RzIGEgbW9yZSB2ZXJib3NlIHZlcnNpb24KLW9mIHRoZSBvdXRwdXQgZm9ybWF0LiAgCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3Nob3ctc3dpdGNoLW9yZGVyIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9zaG93LXN3aXRjaC1vcmRlcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTg5ZjNlOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3Nob3ctc3dpdGNoLW9yZGVyCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGUgJ2J5JyBrZXl3b3JkIGRlc2NyaWJlcyBhIHNvcnQtYnkgdG9rZW4sICBUaGUgc29ydAotc2VsZWN0aW9uIGlzIHRoZSBuZXh0IGtleXdvcmQKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc3dpdGNoIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9zd2l0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGY3YzE0ZDkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9zd2l0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLVRoZSBzd2l0Y2ggY29tbWFuZCBlbnRlcnMgdGhlIHN3aXRjaCBzdWJtb2RlIGZvciBhIHNpbmdsZQotaWRlbnRpZmllZCBzd2l0Y2guICAgV2l0aGluIHRoZSBzdWJtb2RlLCB2YXJpb3VzIGNvbmZpZ3VyYWlvbgotY2FuIGJlIHBlcmZvcm1lZCBvbiB0aGUgc3dpdGNoLCBpbmNsdWRpbmcgc2V0dGluZyB0aGUgc3dpdGNoLWFsaWFzLAotZW5hYmxlIG9yIGRpc2FibGluZyB0aGUgdHVubmVsIGZlYXR1cmVzLgotCi1UaGUgJ25vJyB2YXJpYXRpb24gb2YgdGhlIHN3aXRjaCBjb21tYW5kIHdpbGwgbm90IHJlbW92ZSBzd3RpY2gncwotY3VycmVudGx5IGNvbm5lY3RlZCB0byB0aGUgY29udHJvbGxlciwgaW5zdGVhZCBpdCB3aWxsIHJlbW92ZQotYW55IHVzZXIgY29uZmlndXJlZCBkZXRhaWxzIG9mIHRoZSBpZGVudGlmaWVkIHN3aXRjaC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc3dpdGNoLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3N3aXRjaC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhOGJmNzQzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc3dpdGNoLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXN3aXRjaCAwMDowMDowMDowMDowMDowMDowMDowMQotICBEZWZpbmUgYSBuZXcgc3dpdGNoLCBhbmQgZW50ZXIgdGhlIHN3aXRjaCBjb25maWd1cmF0aW9uIHN1Yi1tb2RlCi0KLW5vIHN3aXRjaCAwMDowMDowMDowMDowMDowMDowMDowMQotICBEZWxldGUgYSBzd2l0Y2ggZGVmaW5pdGlvbgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9zd2l0Y2hwb3J0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9zd2l0Y2hwb3J0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmMDZkZTdjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc3dpdGNocG9ydAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUNvbmZpZ3VyZSB0aGlzIGludGVyZmFjZSB0byBjb25uZWN0IHRvIGFuIGV4dGVybmFsIG5ldHdvcmsKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy9zd2l0Y2gvc3dpdGNocG9ydC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9zd2l0Y2hwb3J0LWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDcwZDBkOWUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC9zd2l0Y2hwb3J0LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXN3aXRjaHBvcnQgbW9kZSBleHRlcm5hbAotICBXaXRoaW4gYSBzd2l0Y2ggaW50ZXJmYWNlIGRlZmluaXRvbiwgY29uZmlndXJlIHRoaXMgaW50ZXJmYWNlIHRvIGJlCi0gIGNvbm5lY3RlZCB0byBhbiBleHRlcm5hbCBuZXR3b3JrCi0KLW5vIHN3aXRjaHBvcnQgbW9kZSBleHRlcm5hbAotICBSZW1vdmUgdGhlIGV4dGVybmFsIGNvbm5lY3Rpb24gYXR0cmlidXRlIGZvciB0aGlzIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC90dW5uZWwgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3R1bm5lbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjk4MTk1MS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3R1bm5lbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUNvbmZpZ3VyZSB0dW5uZWwgYXR0cmlidXRlcyBmb3IgdGhpcyBzd2l0Y2gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3R1bm5lbC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3N3aXRjaC90dW5uZWwtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMmIwNjRjZC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvc3dpdGNoL3R1bm5lbC1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi10dW5uZWwgdGVybWluYXRpb24gZW5hYmxlZAotICBFbmFibGUgdHVubmVsIHRlcm1pbmF0aW9uIGZvciB0aGlzIHN3aXRjaAotCi10dW5uZWwgdGVybWluYXRpb24gZGlzYWJsZWQKLSAgRGlzYWJsZSB0dW5uZWwgdGVybWluYXRpb24gZm9yIHRoaXMgc3dpdGNoCi0KLW5vIHR1bm5lbCB0ZXJtaW5hdGlvbgotICBEaXNhYmxlIHR1bm5lbCB0ZXJtaW5hdGlvbiBmb3IgdGhpcyBzd2l0Y2gKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWNhY3Mvc2hvdyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWNhY3Mvc2hvdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzg0ZTUyMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFjYWNzL3Nob3cKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVNob3cgVEFDQUNTKyBhYWEgb3BlcmF0aW9uYWwgc3RhdGUuCi0KLVByaW50IG91dCB0aGUgZ2xvYmFsIGFhYSBzb3VyY2VzIGFuZCBzZXJ2aWNlcywKLWFzIHdlbGwgYXMgYW55IGNvbmZpZ3VyZWQgVEFDQUNTKyBzZXJ2ZXJzIGFuZCBwYXJhbWV0ZXJzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhY2Fjcy9zaG93LWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFjYWNzL3Nob3ctZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjRlYWUxZS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFjYWNzL3Nob3ctZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotc2hvdyB0YWNhY3MKLSAgRGlzcGxheSB0aGUgVEFDQUNTKyBhYWEgb3BlcmF0aW9uYWwgc3RhdGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFjYWNzL3RhY2FjcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWNhY3MvdGFjYWNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5Yzg5MjY4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWNhY3MvdGFjYWNzCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1Db25maWd1cmUgc2VydmVyIGFuZCBwcm90b2NvbCBwYXJhbWV0ZXJzIGZvciBUQUNBQ1MrLgotU3BlY2lmeSByZW1vdGUgVEFDQUNTKyBzZXJ2ZXJzLCBhbG9uZyB3aXRoIHByb3RvY29sIHRpbWVvdXRzIAotYW5kIHNlY3VyaXR5IHNldHRpbmdzLgotCi1UQUNBQ1MrIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaGVyZSBpcyBlbmFibGVkIGJ5IGEgY29ycmVzcG9uZGluZwotJ2FhYScgY29tbWFuZCB0byBlbmFibGUgYXV0aGVudGljYXRpb24sIGF1dGhvcml6YXRpb24sIG9yIGFjY291bnRpbmcKLXZpYSB0aGUgVEFDQUNTKyBwcm90b2NvbC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWNhY3MvdGFjYWNzLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFjYWNzL3RhY2Fjcy1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlMzE4NjVjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWNhY3MvdGFjYWNzLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi10YWNhY3Mgc2VydmVyIHRpbWVvdXQgNTAKLSAgQ29uZmlndXJlIHRoZSBnbG9iYWwgVEFDQUNTKyBwcm90b2NvbCB0aW1lb3V0IHRvIDUwcy4KLQotbm8gdGFjYWNzIHNlcnZlciB0aW1lb3V0Ci0gIENvbmZpZ3VyZSB0aGUgZGVmYXVsdCBUQUNBQ1MrIHByb3RvdG9sIHRpbWVvdXQuCi0KLXRhY2FjcyBzZXJ2ZXIga2V5IFNFQ1JFVC1LRVkKLSAgQ29uZmlndXJlIHRoZSAocGxhaW50ZXh0KSBrZXkgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoCi0gIHRoZSBUQUNBQ1MrIHNlcnZlciwgaWYgbm8ga2V5IGlzIHNwZWNpZmllZCBmb3IgYSBnaXZlbiBzZXJ2ZXIuCi0KLW5vIHRhY2FjcyBzZXJ2ZXIga2V5Ci0gIFJlc2V0IHRoZSBnbG9iYWwgVEFDQUNTKyBzZXJ2ZXIga2V5LgotICBJZiBubyBrZXkgaXMgc3BlY2lmaWVkLCBhbiBlbXB0eSBrZXkgaXMgYXNzdW1lZC4KLQotdGFjYWNzIHNlcnZlciBob3N0IEFBLkJCLkNDLkRECi0gIEFkZCBhIFRBQ0FDUysgc2VydmVyIHdpdGggdGhlIHNwZWNpZmllZCBJUCBhZGRyZXNzLgotCi1ubyB0YWNhY3Mgc2VydmVyIGhvc3QgQUEuQkIuQ0MuREQKLSAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgVEFDQUNTKyBzZXJ2ZXIKLQotdGFjYWNzIHNlcnZlciBob3N0IEFBLkJCLkNDLkREIGtleSBTRUNSRVQtS0VZCi0gIFNwZWNpZnkgYW4gZW5jcnlwdGlvbiBrZXkgZm9yIHRoaXMgVEFDQUNTKyBzZXJ2ZXIuCi0KLW5vIHRhY2FjcyBzZXJ2ZXIgaG9zdCBBQS5CQi5DQy5ERCBrZXkKLSAgUmVtb3ZlIGFueSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc2VydmVyLAotICBhbmQgdXNlIHRoZSBnbG9iYWwgVEFDQUNTKyBrZXkgaW5zdGVhZC4KLQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFjYWNzL3RhY2Fjcy1ob3N0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhY2Fjcy90YWNhY3MtaG9zdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOTkyMjM4NS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFjYWNzL3RhY2Fjcy1ob3N0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQ29uZmlndXJlIFRBQ0FDUysgc2VydmVycyBieSBJUCBhZGRyZXNzIGZvciBhYWEgcm9sZXMuSG9zdHMgYXJlIG5vdCBhY3RpdmUgZm9yIGFhYSBydWxlcyB1bmxlc3MgdGhlIGFzc29jaWF0ZWQgJ2FhYScgY29tbWFuZCBpcyB1c2VkLiBEZWxldGUgdGhlIGhvc3Qgd2l0aCB0aGUgJ25vJyBmb3JtIG9mIHRoaXMgY29tbWFuZC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWNhY3MvdGFjYWNzLWhvc3Qta2V5IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhY2Fjcy90YWNhY3MtaG9zdC1rZXkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGY0NzU5MmUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhY2Fjcy90YWNhY3MtaG9zdC1rZXkKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVNwZWNpZnkgdGhlIFRBQ0FDUysgZW5jcnlwdGlvbiBrZXkgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoCi10aGlzIFRBQ0FDUysgc2VydmVyLiAgSWYgbm8ga2V5IGlzIHNwZWNpZmllZCwgdGhlIGdsb2JhbAota2V5IGlzIHVzZWQuCi0KLVJlc2V0IHRoZSBwZXItaG9zdCBrZXkgKGFuZCBmYWxsIGJhY2sgdG8gdGhlIGdsb2JhbCBrZXkpCi13aXRoIHRoZSAnbm8nIHZlcnNpb24gb2YgdGhpcyBjb21tYW5kLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhY2Fjcy90YWNhY3Mta2V5IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhY2Fjcy90YWNhY3Mta2V5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyZDJlMTcyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWNhY3MvdGFjYWNzLWtleQorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotQ29uZmlndXJlIHRoZSBkZWZhdWx0IFRBQ0FDUysgcHJvdG9jb2wga2V5IHVzZWQgdG8gc2VjdXJlCi10aGUgY29tbXVuaWNhdGlvbnMgY2hhbm5lbCB3aXRoIHRoZSBUQUNBQ1MrIHNlcnZlcihzKS4KLQotVGhlIGRlZmF1bHQga2V5IGlzIHVzZWQgaWYgdGhlcmUgaXMgbm8ga2V5IGRlZmluZWQKLWZvciBhbiBpbmRpdmlkdWFsIHNlcnZlci4KLQotVGhlIGRlZmF1bHQga2V5IGNhbiBiZSByZXNldCAodG8gYW4gZW1wdHkga2V5KQotd2l0aCB0aGUgJ25vJyBmb3JtIG9mIHRoaXMgY29tbWFuZC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWNhY3MvdGFjYWNzLXRpbWVvdXQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFjYWNzL3RhY2Fjcy10aW1lb3V0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzODYyZTlkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWNhY3MvdGFjYWNzLXRpbWVvdXQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLUNvbmZpZ3VyZSB0aGUgZ2xvYmFsIHRpbWVvdXQgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBUQUNBQ1MrIHNlcnZlcnMuCi1UaGUgdGltZW91dCBpcyBzcGVjaWZpZWQgaW4gc2Vjb25kcy4KLQotSWYgdGhlIHRpbWVvdXQgZXhwaXJlcyBiZWZvcmUgdGhlIFRBQ0FDUysgc2VydmVyIHJlc3BvbmRzLAotdGhlbiB0aGUgVEFDQUNTKyBhYWEgYWN0aW9uIGlzIGNvbnNpZGVyZWQgJ2ZhaWxlZCcsCi1hbmQgb3RoZXIgbWV0aG9kcyBjYW4gYmUgYXR0ZW1wdGVkLgotCi1UaGUgc2VydmVyIHRpbWVvdXQgaXMgcmVzZXQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IHVzaW5nIHRoZSAnbm8nIAotY29tbWFuZCBwcmVmaXguCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFnL21hdGNoIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhZy9tYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzk1Y2EwMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFnL21hdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1UaGUgbWF0Y2ggY29tbWFuZCBpcyB1c2VkIHRvIHRhZyBob3N0cy4gTUFDLWFkZHJlc3MsIFZMQU4sIHN3aXRjaCwgc3dpdGNoLXBvcnQgYXJlIHRoZSBmaWVsZHMgdGhhdCBjYW4gYmUgbWF0Y2hlZCB0byB0YWcgaG9zdHMuIFRoZXNlIGZpZWxkcyBjYW4gYmUgbWF0Y2hlZCBpbmRpdmlkdWFsbHkgb3IgaW4gY29uanVuY3Rpb24uIEZvciBpbnN0YW5jZSwgaWYgbWF0Y2ggaXMgc3BlY2lmaWVkIHRvIG1hdGNoIGEgTUFDLUFkZHJlc3MsIFZMQU4gYW5kIHN3aXRjaC1wb3J0LCB0aGVuIHRoZSBsb2dpY2FsIGhvc3QgdGhhdCBoYXMgdGhhdCBNQUMtQWRkcmVzcywgc2VuZGluZyBwYWNrZXRzIHRhZ2dlZCB3aXRoIHRoYXQgVkxBTiBhbmQgY29ubmVjdGVkIHRvIHRoYXQgc3dpdGNoLXBvcnQgaXMgdGFnZ2VkLiBXaGVyZWFzLCBpZiB0aGUgbWF0Y2ggaXMganVzdCBvbiBhIHN3aXRjaCwgdGhlbiBhbGwgdGhlIGhvc3RzIGNvbm5lY3RlZCB0byB0aGF0IHN3aXRjaCBhcmUgdGFnZ2VkLiBUYWctdmFsdWUgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBtdWx0aXBsZSBzdWNoIG1hdGNoIHN0YXRlbWVudHMsIHRodXMgdGFnZ2luZyBob3N0cyB0aGF0IG1hdGNoIGF0bGVhc3Qgb25lIG9mIHRoZSBtYXRjaCBzdGF0ZW1lbnRzLgotCi1UaGUgJ25vJyB2YXJpYXRpb24gb2YgdGhlIG1hdGNoIGNvbW1hbmQgd2lsbCByZW1vdmUgdGhlIG1hdGNoIHN0YXRlbWVudCBhbmQgdW50YWcgYWxsIHRoZSBob3N0cyB0aGF0IHdlcmUgdGFnZ2VkIGFzIGEgcmVzdWx0IG9mIG1hdGNoIG9uIHRoYXQgbWF0Y2ggc3RhdGVtZW50LgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhZy9tYXRjaC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhZy9tYXRjaC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZmMwNjQ3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWcvbWF0Y2gtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLWxvY2FsaG9zdChjb25maWcpIyB0YWcgdGVuYW50Lm5hbWU9Y29rZQotbG9jYWxob3N0KGNvbmZpZy10YWcpIwotbG9jYWxob3N0KGNvbmZpZy10YWcpIyBtYXRjaCBtYWMgMDA6MDA6MDA6MDA6MDA6MDEKLWxvY2FsaG9zdChjb25maWctdGFnKSMKLWxvY2FsaG9zdChjb25maWctdGFnKSMgbWF0Y2ggdmxhbiAyCi1sb2NhbGhvc3QoY29uZmlnLXRhZykjIG1hdGNoIHN3aXRjaCAwMDowMDowMDowMDowMDowMDowMDowMQotbG9jYWxob3N0KGNvbmZpZy10YWcpIyBtYXRjaCBzd2l0Y2ggMDA6MDA6MDA6MDA6MDA6MDA6MDA6MDEgZXRoMQotbG9jYWxob3N0KGNvbmZpZy10YWcpIyBtYXRjaCBtYWMgMDA6MDA6MDA6MDA6MDA6MDIgdmxhbiAzCi1sb2NhbGhvc3QoY29uZmlnLXRhZykjIG1hdGNoIG1hYyAwMDowMDowMDowMDowMDowMyBzd2l0Y2ggMDA6MDA6MDA6MDA6MDA6MDA6MDA6MDIKLWxvY2FsaG9zdChjb25maWctdGFnKSMgbWF0Y2ggbWFjIDAwOjAwOjAwOjAwOjAwOjAzIHN3aXRjaCAwMDowMDowMDowMDowMDowMDowMDowMiBldGgyCi1sb2NhbGhvc3QoY29uZmlnLXRhZykjIG1hdGNoIG1hYyAwMDowMDowMDowMDowMDowMyB2bGFuIDMgc3dpdGNoIDAwOjAwOjAwOjAwOjAwOjAwOjAwOjAyIGV0aDMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFnL3Nob3ctdGFnIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhZy9zaG93LXRhZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDY1NjhjYy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGFnL3Nob3ctdGFnCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGhlIHNob3cgdGFnIGNvbW1hbmQgbGlzdHMgYWxsIHRoZSB0YWdzIGNvbmZpZ3VyZWQuIEVhY2ggdGFnJ3MgbmFtZXNwYWNlLCBuYW1lIGFuZCB2YWx1ZSBhcmUgc2hvd24uIEFsc28gc2hvd24gaXMgd2hldGhlciB0aGlzIHRhZyBpcyBwZXJzaXN0ZWQgb3Igbm90LCBtZWFuaW5nLCB3aGV0aGVyIHRoaXMgdGFnIHdhcyBjcmVhdGVkIGludGVybmFsbHkgYnkgdGhlIGNvbnRyb2xsZXIgaXRzZWxmIG9yIHRoZSB1c2VyIGNyZWF0ZWQgdGhpcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWcvdGFnIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhZy90YWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU0NWY5ZTMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhZy90YWcKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRoZSB0YWcgY29tbWFuZCBlbnRlcnMgdGhlIHRhZyBzdWJtb2RlIGZvciBhIHNpbmdsZSB0YWctdmFsdWUuIFRoZSB0YWctdmFsdWUgaXMgY29tcG9zZWQgb2YgYSB0YWcgYW5kIHRoZSB2YWx1ZSBhc3NpZ25lZCB0byBpdCwgdGFnIGl0c2VsZiBpcyBjb21wb3NlZCBvZiBuYW1lc3BhY2UgdGhhdCB0aGUgdGFnIGJlbG9uZ3MgdG8gYW5kIHRoZSB0YWcncyBuYW1lIGl0c2VsZi4gVGhlIHN5bnRheCBvZiB0YWctdmFsdWUgLSA8bmFtZXNwYWNlPi48bmFtZT49PHZhbHVlPi4gRXhhbXBsZSBvZiB0YWctdmFsdWUgaXMgLSAidGVuYW50Lm5hbWU9Y29rZSIuICBXaXRoaW4gdGhlIHRhZyBzdWJtb2RlLCB0aGlzIHRhZy12YWx1ZSBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGhvc3RzIHRocm91Z2ggbWF0Y2ggY29tbWFuZC4KLQotVGhlICdubycgdmFyaWF0aW9uIG9mIHRoZSB0YWcgY29tbWFuZCB3aWxsIHJlbW92ZSB0aGUgdGFnLXZhbHVlIGFuZCB1bnRhZyB0aGUgaG9zdHMuIApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhZy90YWctZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90YWcvdGFnLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIwZWE2OWQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RhZy90YWctZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotdGFnIGV4YW1wbGUtY29tLnJvbGU9cHJpbWFyeQotICBEZWZpbmUgYSB0YWcgYXNzb2NpYXRpb24sIGFuZCBlbnRlciB0aGUgdGFnIGNvbmZpZ3VyYXRpb24gc3ViLW1vZGUKLQotbm8gdGFnIGV4YW1wbGUtY29tLnJvbGU9cHJpbWFyeQotICBSZW1vdmUgYSB0YWcgZGVmaW5pdGlvbgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RlY2gtc3VwcG9ydC9zaG93LXRlY2gtc3VwcG9ydC1jb25maWcgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVjaC1zdXBwb3J0L3Nob3ctdGVjaC1zdXBwb3J0LWNvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzJiYjk1NS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVjaC1zdXBwb3J0L3Nob3ctdGVjaC1zdXBwb3J0LWNvbmZpZworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRoaXMgY29tbWFuZHMgc2hvd3MgY3VzdG9taXplZCBjb21tYW5kcyBzaG93biBpbiAnc2hvdyB0ZWNoLXN1cHBvcnQnIG91dHB1dC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVjaC1zdXBwb3J0L3Nob3ctdGVjaC1zdXBwb3J0LWNvbmZpZy1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RlY2gtc3VwcG9ydC9zaG93LXRlY2gtc3VwcG9ydC1jb25maWctZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTJiZGU1OC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVjaC1zdXBwb3J0L3Nob3ctdGVjaC1zdXBwb3J0LWNvbmZpZy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1NZWlzLU1hY0Jvb2stUHJvLmxvY2FsKGNvbmZpZykjIHRlY2gtc3VwcG9ydC1jb25maWcgc2hlbGwgZGF0ZQotTWVpcy1NYWNCb29rLVByby5sb2NhbChjb25maWcpIyBzaG93IHRlY2gtc3VwcG9ydC1jb25maWcKLVR5cGUgb2YgY29tbWFuZCBDb21tYW5kIG5hbWUKLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0KLXNoZWxsICAgICAgICAgICBkYXRlCi1NZWlzLU1hY0Jvb2stUHJvLmxvY2FsKGNvbmZpZykjIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZWNoLXN1cHBvcnQvdGVjaC1zdXBwb3J0LWNvbmZpZyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZWNoLXN1cHBvcnQvdGVjaC1zdXBwb3J0LWNvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTY5YTJjMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVjaC1zdXBwb3J0L3RlY2gtc3VwcG9ydC1jb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1UaGlzIGNvbW1hbmQgc2V0cyBhIHNwZWNpZmljIHNoZWxsIG9yIGNsaSBjb21tYW5kIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBzaG93IHRlY2gtc3VwcG9ydCBvdXRwdXQuIEEgJ25vJyBwcmVwZW5kZWQgdG8gdGhpcyBjb21tYW5kIHdpbGwgZGVsZXRlIHRoZSBjbGkgY29tbWFuZCBmcm9tIHRoZSBzaG93IHRlY2gtc3VwcG9ydCBvdXRwdXQuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVjaC1zdXBwb3J0L3RlY2gtc3VwcG9ydC1jb25maWctY2xpIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RlY2gtc3VwcG9ydC90ZWNoLXN1cHBvcnQtY29uZmlnLWNsaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjZmNzcxMy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVjaC1zdXBwb3J0L3RlY2gtc3VwcG9ydC1jb25maWctY2xpCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1JbmNsdWRlIHRoZSBmb2xsb3dpbmcgYXMgYSBDbGkgY29tbWFuZCBpbiB0aGUgdGVjaC1zdXBwb3J0IG91dHB1dAotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVjaC1zdXBwb3J0L3RlY2gtc3VwcG9ydC1jb25maWctZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZWNoLXN1cHBvcnQvdGVjaC1zdXBwb3J0LWNvbmZpZy1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkYTFlNjFhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZWNoLXN1cHBvcnQvdGVjaC1zdXBwb3J0LWNvbmZpZy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1sb2NhbGhvc3QoY29uZmlnKSMgdGVjaC1zdXBwb3J0LWNvbmZpZyBzaGVsbCBkYXRlCi1sb2NhbGhvc3QoY29uZmlnKSMgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RlY2gtc3VwcG9ydC90ZWNoLXN1cHBvcnQtY29uZmlnLXNoZWxsIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RlY2gtc3VwcG9ydC90ZWNoLXN1cHBvcnQtY29uZmlnLXNoZWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlYWFlYTZmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZWNoLXN1cHBvcnQvdGVjaC1zdXBwb3J0LWNvbmZpZy1zaGVsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUluY2x1ZGluZyB0aGUgZm9sbG93aW5nIGFzIGEgc2hlbGwgY29tbWFuZCBpbiB0aGUgdGVjaC1zdXBwb3J0IG91dHB1dApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDY4YTdlM2UuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlIHRlc3QgY29tbWFuZCBwcm92aWRlcyB2YXJpb3VzIHRvb2xzIHRvCi1oZWxwIHBlcmZvcm0gcm9vdC1jYXVzZSBhbmFseXNpcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDVhNzAyMDUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4KKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVRoZSAncGFja2V0LWluJyB0ZXN0IHR5cGUgcHJvdmlkZXMgYSB0b29scyB0bwotZGV0ZXJtaW5lIHdoZXRoZXIgYSBzb3VyY2UgYW5kIGRlc3QgY2FuIHRyYW5zbWl0Ci1hIGZyYW1lLiAgIEEgZnJhbWUgaXMgaW5qZWN0ZWQgYXMgaWYgaXQgb3JpZ2luYXRlZAotZnJvbSB0aGUgaW5kaWNhdGVkIHBvcnQgb24gYSBzb3VyY2Ugc3dpdGNoLCBhbmQgCi1pcyBkaXJlY3RlZCB0byBhIGRlc3RpbmF0aW9uIHN3aXRjaCBhbmQgcG9ydC4gIFdoZW4KLWl0IGFycml2ZXMsIHRoZSBjb21tYW5kIGFubm91bmNlcyB0aGUgcGF0aCB0cmF2ZXJzZWQuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhY2tldC1pbi1kcGlkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4tZHBpZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjAxYTQ2MC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhY2tldC1pbi1kcGlkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGlzIHBhcmFtZXRlciBpZGVudGlmaWVzIGEgc3dpdGNoIGJ5IERQSUQsIGFzIHBhcnQgb2YgdGhlIGRlc2NyaXB0aW9uIG9mIAotdGhlIGF0dGFjaG1lbnQgcG9pbnQKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhY2tldC1pbi1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1NDBhZWVlLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi10ZXN0IHBhY2tldC1pbiBzcmMtaG9zdCAwMDowMDowMDowMDowMDowMSBkc3QtaG9zdCAwMDowMDowMDowMDowMDowMgotICBUZXN0IHBhY2tldCBpbmplY3Rpb24gYmV0d2VlbiB0d28gaG9zdHMKLQotdGVzdCBwYWNrZXQtaW4gc3JjLWhvc3QgMDA6MDA6MDA6MDA6MDA6MDEgZHN0LWhvc3QgMDA6MDA6MDA6MDA6MDA6MDIgc3JjLXN3aXRjaCAwMDowMDowMDowMDowMDowMDowMDowMCAzMgotICBSdW4gdGhlIHBhY2tldC1pbiB0ZXN0LCBzcGVjaWZ5aW5nIGEgc3BlY2lmaWMgc3dpdGNoIHBoeXNpY2FsIHBvcnQKLQotdGVzdCBwYWNrZXQtaW4gc3JjLWhvc3QgMDA6MDA6MDA6MDA6MDA6MDEgZHN0LWhvc3QgMDA6MDA6MDA6MDA6MDA6MDIgLi4uIHZsYW4gMTAwMQotICBSdW4gdGhlIHBhY2tldC1pbiB0ZXN0LCB0YWdnaW5nIHBhY2tldHMgd2l0aCBhIHNwZWNpZmljIFZMQU4KLQotdGVzdCBwYWNrZXQtaW4gc3JjLWhvc3QgMDA6MDA6MDA6MDA6MDA6MDEgZHN0LWhvc3QgMDA6MDA6MDA6MDA6MDA6MDIgLi4uIHByaW9yaXR5IDIKLSAgUnVuIHRoZSBwYWNrZXQtaW4gdGVzdCwgdGFnZ2luZyBwYWNrZXRzIHdpdGggYSBzcGVjaWZpYyBldGhlciBwcmlvcml0eQotCi10ZXN0IHBhY2tldC1pbiBzcmMtaG9zdCAwMDowMDowMDowMDowMDowMSBkc3QtaG9zdCAwMDowMDowMDowMDowMDowMiAuLi4gc3JjLWlwLWFkZHJlc3MgMS4yLjMuNAotICBSdW4gdGhlIHBhY2tldC1pbiB0ZXN0LCB0YWdnaW5nIHBhY2tldHMgd2l0aCBhIHNwZWNpZmljIHNvdXJjZSBJUCBhZGRyZXNzCi0KLXRlc3QgcGFja2V0LWluIHNyYy1ob3N0IDAwOjAwOjAwOjAwOjAwOjAxIGRzdC1ob3N0IDAwOjAwOjAwOjAwOjAwOjAyIC4uLiBkc3QtaXAtYWRkcmVzcyAxLjIuMy40Ci0gIFJ1biB0aGUgcGFja2V0LWluIHRlc3QsIHRhZ2dpbmcgcGFja2V0cyB3aXRoIGEgc3BlY2lmaWMgZGVzdGluYXRpb24gSVAgYWRkcmVzcwotCi10ZXN0IHBhY2tldC1pbiBzcmMtaG9zdCAwMDowMDowMDowMDowMDowMSBkc3QtaG9zdCAwMDowMDowMDowMDowMDowMiAuLi4gcHJvdG9jb2wgNgotICBSdW4gdGhlIHBhY2tldC1pbiB0ZXN0LCB0YWdnaW5nIHBhY2tldHMgd2l0aCBhIHNwZWNpZmljIElQIHByb3RvY29sIG51bWJlciAoVENQKQotCi10ZXN0IHBhY2tldC1pbiBzcmMtaG9zdCAwMDowMDowMDowMDowMDowMSBkc3QtaG9zdCAwMDowMDowMDowMDowMDowMiAuLi4gdG9zIDcKLSAgUnVuIHRoZSBwYWNrZXQtaW4gdGVzdCwgdGFnZ2luZyBwYWNrZXRzIHdpdGggYSBzcGVjaWZpYyBzZXQgb2YgVE9TIGJpdHMKLQotdGVzdCBwYWNrZXQtaW4gc3JjLWhvc3QgMDA6MDA6MDA6MDA6MDA6MDEgZHN0LWhvc3QgMDA6MDA6MDA6MDA6MDA6MDIgLi4uIHNyYy1wb3J0IDgwCi0gIFJ1biB0aGUgcGFja2V0LWluIHRlc3QsIHRhZ2dpbmcgcGFja2V0cyB3aXRoIGEgc3BlY2lmaWMgc291cmNlIHBvcnQgbnVtYmVyCi0KLXRlc3QgcGFja2V0LWluIHNyYy1ob3N0IDAwOjAwOjAwOjAwOjAwOjAxIGRzdC1ob3N0IDAwOjAwOjAwOjAwOjAwOjAyIC4uLiBkc3QtcG9ydCA0NDMKLSAgUnVuIHRoZSBwYWNrZXQtaW4gdGVzdCwgdGFnZ2luZyBwYWNrZXRzIHdpdGggYSBzcGVjaWZpYyBkZXN0aW5hdGlvbiBwb3J0IG51bWJlcgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4taWYgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhY2tldC1pbi1pZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTQ3MDZjYi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhY2tldC1pbi1pZgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyBwYXJhbWV0ZXIgaWRlbnRpZmllcyBhIHBoeXNpY2FsIHN3aXRjaCBwb3J0IG51bWJlciwgYXMgcGFydCBvZgotdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBhdHRhY2htZW50IHBvaW50CmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhY2tldC1pbi1pcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLWlwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3MDgxNzVhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLWlwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotSVAgYWRkcmVzcyBmb3IgaW5qZWN0ZWQgcGFja2V0cwpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4tbWFjIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4tbWFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlNmU2Yjk1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLW1hYworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyBwYXJhbWV0ZXIgaWRlbnRpZmllcyBhIGhvc3QsIHVzZWQgdG8gaWRlbnRpZnkgYW4gYXR0YWNobWVudCBwb2ludC4KLVRoZSBwYXJhbWV0ZXIncyB2YWx1ZSBpcyBhIG1hYyBhZGRyZXNzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4tcG9ydCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLXBvcnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDdjZDEwNzguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4tcG9ydAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVBvcnQgbnVtYmVyIGZvciBpbmplY3RlZCBwYWNrZXRzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4tcHJpb3JpdHkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhY2tldC1pbi1wcmlvcml0eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjMzYzBiNC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhY2tldC1pbi1wcmlvcml0eQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUV0aGVyIHByaW9yaXR5IGZvciBpbmplY3RlZCBwYWNrZXRzCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhY2tldC1pbi1wcm90byBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLXByb3RvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1N2M2OGZjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLXByb3RvCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotUHJvdG9jb2wgbnVtYmVyIGZvciBpbmplY3RlZCBwYWNrZXRzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4tdG9zIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYWNrZXQtaW4tdG9zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4MjI3MmRlLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLXRvcworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRPUyBmbGFncyBmb3IgaW5qZWN0ZWQgcGFja2V0cwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLXZsYW4gYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhY2tldC1pbi12bGFuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2Mzc4ZjM2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGFja2V0LWluLXZsYW4KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1WTEFOIElEIGZvciB0YWdnaW5nIHBhY2tldHMKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGF0aCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDIxMDIzOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVRoZSAndGVzdCBwYXRoJyBjb21tYW5kIHJlcXVlc3RzIHRoZSBjb250cm9sbGVyIHRvIGNvbXB1dGUKLXRoZSBwYXRoIGJldHdlZW4gaW50ZXJmYWNlcyBvbiBzd2l0Y2hlcywgcmV0dXJuLCBhbmQgZGlzcGxheQotdGhlIHJlc3VsdC4gIE5vIGF0dGVtcHQgaXQgbWFkZSB0byB2YWxpZGF0ZSB0aGUgY29ubmVjdGl2aXR5Ci1iZXR3ZWVuIHRoZSB0d28gZW5kcG9pbnRzLgotCi1UbyBjb21wdXRlIHRoZSBwYXRoLCBhbmQgc291cmNlIGFuZCBhIGRlc3RpbmF0aW9uIG5lZWRzIHRvCi1iZSBwcm92aWRlZC4gICBUaGVzZSBjYW4gYmUgZGVzY3JpYmVkIGluIGEgdmFyaWV0eSBvZiBkaWZmZXJlbnQKLWZvcm1zOiAgaG9zdHMgbWFjIGFkZHJlc3NlcywgIGlwIGFkZHJlc3Nlcywgb3Igc3dpdGNoIGFuZCBpbnRlcmZhY2UKLW5hbWVzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYXRoLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhdGgtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOTViYmU1YS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhdGgtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIG5vZGUxPiB0ZXN0IHBhdGggc3JjLWlwIDEwLjAuMC4xIGRzdC1pcCAxMC4wLjAuMwotICMgU3dpdGNoICAgICAgICAgICAgICAgICAgSUYgICAgICBSeCBCeXRlcyBSeCBQa3RzIFJ4IEVycnMgVHggQnl0ZXMgVHggUGt0cyBUeCBFcnJzCi0gLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0KLSAxIDAwOjAwOjAwOjAwOjAwOjAwOjAwOjA2IHM2LWV0aDEgODYwICAgICAgMTEgICAgICAwICAgICAgIDQ3NjIgICAgIDc0ICAgICAgMCAgICAgIAotIDIgMDA6MDA6MDA6MDA6MDA6MDA6MDA6MDYgczYtZXRoMyAyMjA4ICAgICAzNSAgICAgIDAgICAgICAgMjIwOCAgICAgMzUgICAgICAwICAgICAgCi0gMyAwMDowMDowMDowMDowMDowMDowMDowNSBzNS1ldGgxIDIyMDggICAgIDM1ICAgICAgMCAgICAgICAyMjA4ICAgICAzNSAgICAgIDAgICAgICAKLSA0IDAwOjAwOjAwOjAwOjAwOjAwOjAwOjA1IHM1LWV0aDIgMjIwOCAgICAgMzUgICAgICAwICAgICAgIDIzOTEgICAgIDM4ICAgICAgMCAgICAgIAotIDUgMDA6MDA6MDA6MDA6MDA6MDA6MDA6MDcgczctZXRoMyAyNDE5ICAgICAzOCAgICAgIDAgICAgICAgMjIwOCAgICAgMzUgICAgICAwICAgICAgCi0gNiAwMDowMDowMDowMDowMDowMDowMDowNyBzNy1ldGgxIDg2MCAgICAgIDExICAgICAgMCAgICAgICA0Njg0ICAgICA3MyAgICAgIDAKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGF0aC1ob3N0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYXRoLWhvc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDUyZTQ1ZGMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYXRoLWhvc3QKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoaXMgcGFyYW1ldGVyIGlkZW50aWZpZXMgdGhlIGhvc3QsIHVzZWQgdG8gaWRlbnRpZnkgYW4gYXR0YWNobWVudCBwb2ludC4KLVRoZSBwYXJhbWV0ZXIncyB2YWx1ZSBpcyBhIG1hYyBhZGRyZXNzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYXRoLWlmIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Rlc3QvdGVzdC1wYXRoLWlmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkNWIyZmU3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGF0aC1pZgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyBwYXJhbWV0ZXIgaWRlbnRpZmllcyBhIHNwZWNpZmljIHN3aXRjaCdzIGludGVyZmFjZSAocGh5c2ljYWwgcG9ydCksIHRvCi1jb21wbGV0ZSB0aGUgYXR0YWNobWVudCBwb2ludCBkZXNjcmlwdGlvbi4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGF0aC1pcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGF0aC1pcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDNiMmIxNS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhdGgtaXAKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1UaGlzIHBhcmFtZXRlciBpZGVudGllcyBhbiBpcCBhZGRyZXNzIHVzZWQgdG8gZGV0ZXJtaW5lIGFuIGF0dGFjaG1lbnQgcG9pbnQKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGF0aC1zd2l0Y2ggYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdGVzdC90ZXN0LXBhdGgtc3dpdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwNGQwODg3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90ZXN0L3Rlc3QtcGF0aC1zd2l0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoaXMgcGFyYW1ldGVyIGlkZW50aWZpZXMgYSBzd2l0Y2ggdmlhIERQSUQsIGFzIHBhcnQgb2YgdGhlIGRlc2NyaXB0aW9uIG9mIAotdGhlIGF0dGFjaG1lbnQgcG9pbnQKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90b3BvbG9neS90b3BvbG9neSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90b3BvbG9neS90b3BvbG9neQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggY2FhMzFjNC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdG9wb2xvZ3kvdG9wb2xvZ3kKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoZSB0b3BvbG9neSBjb21tYW5kIGNvbmZpZ3VyZXMgYXR0cmlidXRlcyBhc3NvY2lhdGVkIHdpdGgKLXRoZSB0b3Bsb2d5IG1hbmFnZW1lbnQgb2YgdGhlIGNvbnRyb2xsZXIuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdG9wb2xvZ3kvdG9wb2xvZ3ktZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90b3BvbG9neS90b3BvbG9neS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0YjNlYzhiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90b3BvbG9neS90b3BvbG9neS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0gICAgdG9wb2xvZ3kgYXV0b3BvcnRmYXN0Ci0gICAgICAgIEVuYWJsZSBhdXRvcG9ydGZhc3QgYW5kIHN1cHByZXNzIGxpbmsgZGlzY292ZXJ5IG9uIGZhc3QgcG9ydHMuCi0KLSAgICBubyB0b3BvbG9neSBhdXRvcG9ydGZhc3QKLSAgICAgICAgRG8gbm90IHN1cHByZXNzIGxpbmsgZGlzY292ZXJ5IG9uIGZhc3QgcG9ydHMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHJhY2Vyb3V0ZS90cmFjZXJvdXRlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RyYWNlcm91dGUvdHJhY2Vyb3V0ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWQ5ODEwOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHJhY2Vyb3V0ZS90cmFjZXJvdXRlCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1Db21wdXRlIHRoZSBMMyBwYXRoIGJldHdlZW4gdGhlIGxvY2FsIGhvc3QgYW5kIHRoZQotZGVzdGluYXRpb24gYnkgdXNpbmcgaW5jcmVhc2luZyBUVEwncywgYW5kIHJlcG9ydGluZwotYmFjayBJQ01QIHRpbWVkLW91dCBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RyYWNlcm91dGUvdHJhY2Vyb3V0ZS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3RyYWNlcm91dGUvdHJhY2Vyb3V0ZS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3N2ZlODdmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90cmFjZXJvdXRlL3RyYWNlcm91dGUtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotdHJhY2Vyb3V0ZSAxLjIuMy40Ci0gIENvbXB1dGUgdGhlIEwzIHBhdGggdGhlIGhvc3Qgd2l0aCBJUCBhZGRyZXNzIDEuMi4zLjQKLQotdHJhY2Vyb3V0ZSBleGFtcGxlLmNvbQotICBDb21wdXRlIHRoZSBMMyBwYXRoIHRoZSBob3N0IHdpdGggYSBzcGVjaWZpYyBob3N0bmFtZQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvY2lkci1yYW5nZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9jaWRyLXJhbmdlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyYmEyZWM4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9jaWRyLXJhbmdlCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1BIGNpZHItcmFuZ2UgaXMgYW4gaXAtYWRkcmVzcyBmb2xsb3dlZCBieSBhIHNsYXNoICcvJywKLXRoZSBmb2xsb3dlZCBieSBhIGRlY2ltYWwgbnVtYmVyIGluIHRoZSByYW5nZSBbMC4uMzFdCi1UaGUgY2lkci1yYW5nZSBpZGVudGlmZXMgYm90aCBhIHNpbmdsZSBpcCBhZGRyZXNzLCBhbmQKLWEgcmFuZ2Ugb2YgaXAtYWRkcmVzcywgdGhlIHRyYWlsaW5nIG51bWJlciBkZXNjcmliZXMKLWEgbmV0bWFzaywgdGhlIG51bWJlciBpbmRpY2F0ZXMgdGhlIGxlbmd0aCBvZiAxLWJpdHMKLXdpdGhpbiB0aGUgbWFzay4gIEV4YW1wbGVzOiAgMTkyLjE2OC4xLjEvMjUsIGFuZAotMTAuMC4wLjY1LzI0CmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvZG9tYWluLW5hbWUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvZG9tYWluLW5hbWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDliNWJjNzIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3R5cGVzL2RvbWFpbi1uYW1lCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1BIGRvbWFpbi1uYW1lIGlzIGEgY29sbGVjdGlvbiBvZiBkb3QgKC4pIHNlcGFyYXRlZCBzdHJpbmdzCi11c2VkIGFzIGEgbW9yZSBodW1hbiByZWFkYWJsZSByZXBsYWNlbWVudCBmb3IgIGFuIGlwLWFkZHJlc3MuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvZHBpZCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9kcGlkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjMWNlYjgwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9kcGlkCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1EcGlkJ3MgdW5pcXVlbHkgaWRlbnRpZnkgYSBzd2l0Y2gsIGEgZHBpZCBpcyBhbiBlaWdodAotaGV4IGJ5dGUgc3RyaW5nIHdoaWNoIHRoZSBzd2l0Y2ggYW5ub3VuY2VzIHRvIHRoZSBjb250cm9sbGVyLAotSW4gbW9zdCBzaXR1YXRpb25zIGEgc3dpdGNoLWFsaWFzIGNhbiBiZSB1c2VkIGFzIGEgcmVwbGFjZW1lbnQKLXRva2VuIGZvciB0aGUgZHBpZC4gICBTd2l0Y2gtYWxpYXMgYXJlIG1hbmFnZWQgaW4gdGhlIHN3aXRjaAotc3VibW9kZSB3aXRoaW4gY29uZmlnIHN1Ym1vZGUuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvaGV4LW9yLWRlY2ltYWwtaW50ZWdlciBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9oZXgtb3ItZGVjaW1hbC1pbnRlZ2VyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5MDJjYWM4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9oZXgtb3ItZGVjaW1hbC1pbnRlZ2VyCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1UaGlzIGlzIGFuIGludGVnZXIgdmFsdWUgd2hpY2ggY2FuIGJlIGV4cHJlc3NlZCBlaXRoZXIKLWluIGRlY2ltYWwgb3IgaGV4LiAgSGV4IHZhbHVlcyBtdXN0IGJlIHByZWZpeGVkIGJ5IDB4LgotRXhhbXBsZXM6IDEwLCAweGFiYywgMApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3R5cGVzL2hvc3QgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvaG9zdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmM0MDFkMy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvaG9zdAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotSG9zdHMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHVzZSBvZiBlaXRoZXIgYSBtYWMtYWRkcmVzcwotKHNpeCBoZXggYnl0ZXMgc2VwYXJhdGVkIGJ5IGNvbG9ucyksIG9yIGEgaG9zdCBhbGlhcy4KLUhvc3QgYWxpYXMgY2FuIGJlIGNyZWF0ZWQgaW4gdGhlIGhvc3Qgc3VibW9kZSB1bmRlciBjb25maWcsCi1idSB1c2luZyB0aGUgaG9zdC1hbGlhcyBjb21tYW5kLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3R5cGVzL2lkZW50aWZpZXIgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvaWRlbnRpZmllcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzRjZGIxNS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvaWRlbnRpZmllcgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQW4gSWRlbnRpZmllciBpcyBhIHN0cmluZ3Mgc3RhcnRpbmcgd2l0aCBhbiBhbHBoYWJldGljCi1jaGFyYWN0ZXIsIGZvbGxvd2VkIGJ5IGEgbnVtYmVyIG9mIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLAotYWxvbmcgd2l0aCAnXycgYW5kICctJy4gIEl0cyB1c2VkIHRvIG5hbWUgc29tZSBlbnRpdHkuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvaXAtYWRkcmVzcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9pcC1hZGRyZXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiZTFjMWMxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9pcC1hZGRyZXNzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1BbiBpcC1hZGRyZXNzIGlzIGZvdXIgZGVjaW1hbiBudW1iZXJzIHNlcGFyYXRlZCBieSBkb3RzICguKS4KLUVhY2ggb2YgdGhlIGRlY2ltYW4gbnVtYmVycyBjYW4gcmFuZ2UgYmV0d2VlbiAwLTI1NS4gIAotSXAtYWRkcmVzcyBhcmUgdXNlZCB0byBpZG5ldGlmeSBhbiBpcCBwcm90b2NvbCBzb3VyY2UKLW9yIGRlc3RpbmF0aW9uLiAgRXhhbXBsZXMgYXJlIDE5Mi4xNjguMi4xMjkgYW5kIDEwLjExLjEyLjEzCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvaXAtYWRkcmVzcy1vci1kb21haW4tbmFtZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9pcC1hZGRyZXNzLW9yLWRvbWFpbi1uYW1lCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4OTdmOTUxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9pcC1hZGRyZXNzLW9yLWRvbWFpbi1uYW1lCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1BbiBpcC1hZGRyZXNzIG9yIGEgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIG1heSBiZSB1c2VkIGhlcmUuCi1UaGUgaXAtYWRkcmVzcyBpcyBhIGRvdHRlZCBxdWFkLCB3aGlsZSB0aGUgZnVsbHkgcXVhbGlhaWZpZWQgZG9tYWluCi1uYW1lIGlzIGEgZG9tYWluIG5hbWUgd2hpY2ggd2lsbCByZXNvbHZlIHRvIGFuIGlwLWFkZHJlc3MKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9tYWMtYWRkcmVzcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9tYWMtYWRkcmVzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDczZWYzYi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvbWFjLWFkZHJlc3MKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLUEgbWFjLWFkZHJlc3MsIHNpeCBoZXggZGlnaXRzIHNlcGFyYXRlZCBieSBjb2xvbnMgJzonLCB1c2VkIHRvCi1pZGVudGlmeSBhIHVuaXF1ZSBlbnRpdHkgb24gYW4gZXRoZXJuZXQgbmV0d29yay4gICAKLUV4YW1wbGVzOiAwMDo1MDo1NjphZDpmZTpiYiwgMDA6MWI6YTk6M2Y6MmU6NmUgCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvbmV0bWFzayBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9uZXRtYXNrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwZDEwMmFjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy90eXBlcy9uZXRtYXNrCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1BIG5ldG1hc2ssIGFzc29jaWF0ZWQgd2l0aCBhbiBpcC1hZGRyZXNzLCB1c2VkIHRvIGlkZW50aWZ5Ci1hbiBpcCBhZGRyZXNzIHJhbmdlcy4gICBBbiBpcC1hZGRyZXNzIGlzIHdpdGhpbiB0aGUgcmFuZ2UKLWlmIHRoZSBpcC1hZGRyZXNzLCBiaW5hcnktYW5kLWVkIHdpdGggdGhlIG1hc2ssIG1hdGNoZXMgdGhlCi1hc3NvY2lhdGVkIGlwLWFkZHJlc3MgKHdoaWNoIGlzIGFsc28gYmluYXJ5LWFuZC1lZCB3aXRoIHRoZQotbWFzaykuICBOZXRtYXNrcyBtdXN0IGJlIGEgc2luZ2xlIGdyb3VwIG9mIDEtYml0cywgc3RhcnRpbmcKLXdpdGggYSAxLWJpdC4gICBFeGFtcGxlcyBhcmUgMjU1LjI1NS4yNTUuMCBhbmQgMjU1LjI1NS4yNTUuMTI4CmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvb2JqLXR5cGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvb2JqLXR5cGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDRiNTgwYzAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3R5cGVzL29iai10eXBlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQW4gZXhpc3Rpbmcgb2JqZWN0IGZvciB0aGUgYXNzb2NpYXRlZCBjb21tYW5kCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvcmVzb2x2YWJsZS1pcC1hZGRyZXNzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3R5cGVzL3Jlc29sdmFibGUtaXAtYWRkcmVzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjI5NjU5NC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvcmVzb2x2YWJsZS1pcC1hZGRyZXNzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1BIGRvdHRlZC1xdWF0IGlwIGFkZHJlc3MgKDE5Mi4xNjguMi4xMjkpLCBvciBhIGRvbWFpbiBuYW1lIAotKGxvY2FsaG9zdCwgZXhhbXBsZS5jb20pLCB3aGljaCBjYW4gYmUgcmVzb2x2ZWQgbWF5IGJlCi1pbmNsdWRlZCBoZXJlLiAgQWRkaXRpb25hbGx5LCBzd2l0Y2ggYWxpYXMgb3IgZHBpZHMgbWF5IGFsc28gYmUgaW5jbHVkZWQgCi1pZiB0aGV5J3JlIGN1cnJlbnRseSBhY3RpdmUgKGFuIGlwIGFkZHJlc3MgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzd2l0Y2gpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvc3RyaW5nIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3R5cGVzL3N0cmluZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmNhYmEyZi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdHlwZXMvc3RyaW5nCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1BIGNvbGxlY3Rpb24gb2YgY2hhcmFjdGVycyBjYW4gYmUgdXNlZCBoZXJlLCBpZiBhbnkKLXNwZWNpYWwgY2hhcmFjdGVycywgc3BhY2Ugb3IgcXVvdGVzIGFyZSBpbmNsdWRlZCwKLXRoZSBzdHJpbmcgbXVzdCB0aGUgZW5jbG9zZWQgaW4gZWl0aGVyIHNpbmdsZSAoJykgb3IKLWRvdWJsZSBxdW90ZXMgKCIpLiAgIFN0cmluZ3MgbGVuZ3RoJ3MgYXJlIGJvdW5kCi1kZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljIGl0ZW0uCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2FjdGl2ZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYWN0aXZlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxOGYyNzBhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYWN0aXZlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1TZXQgdGhlIFZOUyBhY3RpdmUuIElmIGEgVk5TIGlzIGluYWN0aXZlIHRoZSBjb250cm9sbGVyIHdpbGwgbm90IHVzZSBpdAotb3IgaXRzIHJ1bGVzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9hY3RpdmUtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYWN0aXZlLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGFlNWVkNGIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9hY3RpdmUtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotYWN0aXZlCi0gIEFjdGl2YXRlIHRoaXMgVk5TIGluc3RhbmNlCi0KLW5vIGFjdGl2ZQotICBEZWFjdGl2YXRlIHRoaXMgVk5TIGluc3RhbmNlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2Fwci1tb2RlLXZhbHVlLWRyb3AtaWYtdW5rbm93biBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYXByLW1vZGUtdmFsdWUtZHJvcC1pZi11bmtub3duCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjNzVlMzAxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYXByLW1vZGUtdmFsdWUtZHJvcC1pZi11bmtub3duCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotRHJvcCBBUlAgcGFja2V0cyBpZiB0aGUgZGVzdGluYXRpb24gaXMgdW5rbm93bi4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYXJwLW1vZGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2FycC1tb2RlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1NWVmYjY4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYXJwLW1vZGUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Db25maWd1cmUgdGhlIEFSUCBiZWhhdmlvciBmb3IgdGhpcyBWTlMgaW5zdGFuY2UuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9hcnAtbW9kZS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9hcnAtbW9kZS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwYThhYmZiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYXJwLW1vZGUtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotYXJwLW1vZGUgYWx3YXlzLWZsb29kCi0gIERvIG5vdCBtYW5hZ2UgQVJQIHBhY2tldHMsIGp1c3QgZmxvb2QgdGhlbSBvbiBhbGwgaW50ZXJmYWNlcwotCi1hcnAtbW9kZSBmbG9vZC1pZi11bmtub3duCi0gIE9ubHkgZmxvb2QgQVJQIHBhY2tldHMgZm9yIHVua25vd24gZGVzdGluYXRpb25zCi0KLWFycC1tb2RlIGRyb3AtaWYtdW5rbm93bgotICBEcm9wIEFSUCBwYWNrZXRzIGZyb20gdW5rbm93biBkZXN0aW5hdGlvbnMKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYXJwLW1vZGUtdmFsdWUtYWx3YXlzLWZsb29kIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9hcnAtbW9kZS12YWx1ZS1hbHdheXMtZmxvb2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJlZmEzNzQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9hcnAtbW9kZS12YWx1ZS1hbHdheXMtZmxvb2QKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUFsd2F5cyBmbG9vZCBBUlAgcGFja2V0cyBvbiBhbGwgc3dpdGNoIGludGVyZmFjZXMuIE5vIGFjdGl2ZSBtYW5hZ21lbnQKLW9mIEFSUCwgd2lsbCBsZWFrIHBhY2tldHMgYWNyb3NzIFZOUy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYXJwLW1vZGUtdmFsdWUtZHJvcC1pZi11bmtub3duIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9hcnAtbW9kZS12YWx1ZS1kcm9wLWlmLXVua25vd24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGYzMmVlYjAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9hcnAtbW9kZS12YWx1ZS1kcm9wLWlmLXVua25vd24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Ecm9wIEFSUCBwYWNrZXRzIGlmIHRoZSBob3N0IGlzIHVua25vd24KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYXJwLW1vZGUtdmFsdWUtZmxvb2QtaWYtdW5rbm93biBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYXJwLW1vZGUtdmFsdWUtZmxvb2QtaWYtdW5rbm93bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODI1NTU0MC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2FycC1tb2RlLXZhbHVlLWZsb29kLWlmLXVua25vd24KKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUZsb29kIEFSUCBwYWNrZXRzIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBNaWdodCBsZWFrIHBhY2tldHMKLWFjcm9zcyBWTlMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2Jyb2FkY2FzdCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYnJvYWRjYXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4MmRjMzk5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYnJvYWRjYXN0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQ29uZmlndXJlIGJyb2FkY2FzdCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIFZOUyBpbnN0YW5jZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYnJvYWRjYXN0LWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2Jyb2FkY2FzdC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1MWU0MDM2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYnJvYWRjYXN0LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLWJyb2FkY2FzdCBhbHdheXMtZmxvb2QKLSAgTWlzY2VsbGFuZWlvdXMgYnJvYWRjYXN0IHBhY2tldHMgYXJlIHNlbnQgb24gYWxsIGludGVyZmFjZXMKLQotYnJvYWRjYXN0IGZvcndhcmQtdG8ta25vd24KLSAgTWlzY2VsbGFuZW91cyBicm9hZGNhc3QgcGFja2V0cyBhcmUgZm9yd2FyZGVkIG9ubHkgdG8ga25vd24gaG9zdHMKLQotYnJvYWRjYXN0IGRyb3AKLSAgTWlzY2VsbGFuZW91cyBicm9hZGNhc3QgcGFja2V0cyBhcmUgZHJvcHBlZAotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2Jyb2FkY2FzdC12YWx1ZS1hbHdheXMtZmxvb2QgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2Jyb2FkY2FzdC12YWx1ZS1hbHdheXMtZmxvb2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDFmMjNjM2UuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9icm9hZGNhc3QtdmFsdWUtYWx3YXlzLWZsb29kCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1BbHdheXMgZmxvb2QgYWxsIG5vbi1BUlAsIG5vbi1ESENQIGJyb2FkY2FzdCBwYWNrZXRzIG9uIGFsbCBzd2l0Y2gKLWludGVyZmFjZXMuIFdpbGwgbGVhayBwYWNrZXRzIGFjcm9zcyBWTlMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2Jyb2FkY2FzdC12YWx1ZS1kcm9wIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9icm9hZGNhc3QtdmFsdWUtZHJvcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjM0YjM4ZS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2Jyb2FkY2FzdC12YWx1ZS1kcm9wCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotRHJvcCBhbGwgbm9uLUFSUCwgbm9uLURIQ1AgYnJvYWRjYXN0IHBhY2tldHMuIApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9icm9hZGNhc3QtdmFsdWUtZm9yd2FyZC10by1rbm93biBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvYnJvYWRjYXN0LXZhbHVlLWZvcndhcmQtdG8ta25vd24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDM4MjAzYjUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9icm9hZGNhc3QtdmFsdWUtZm9yd2FyZC10by1rbm93bgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotRm9yd2FyZCBhbGwgbm9uLUFSUCwgbm9uLURIQ1AgYnJvYWRjYXN0IHBhY2tldHMgdG8gYWxsIGtub3duIGhvc3RzIGluCi10aGlzIFZOUy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGVzY3JpcHRpb24gYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2Rlc2NyaXB0aW9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkYzExZTMxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGVzY3JpcHRpb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1XaXRoaW4gYSBWTlMgZGVmaW5pdGlvbiBzdWItbW9kZSwgZGVjbGFyZSBhIGZyaWVuZGx5IGRlc2NyaXB0b3IgZm9yIHRoZSBWTlMgaW5zdGFuY2UuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2Rlc2NyaXB0aW9uLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2Rlc2NyaXB0aW9uLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDJkZTE0YWEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9kZXNjcmlwdGlvbi1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1kZXNjcmlwdGlvbiAidGhpcyBpcyBteSBmaXJzdCBWTlMgaW5zdGFuY2UiCi0gIEFkZCBhIHRleHR1YWwgZGVzY3JpcHRpb24gdG8gYSBWTlMKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC1pcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC1pcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjYzZjcyMy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2RoY3AtaXAKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TcGVjaWZ5IHRoZSBJUCBhZGRyZXNzIG9mIHRoZSBsb2NhbCBESENQIHNlcnZlciBvciBsb2NhbCBESENQIHJlbGF5LiBVc2VkIGJ5IGRoY3AtbW9kZSAnc3RhdGljJy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC1pcC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9kaGNwLWlwLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU0Mjk3YTEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9kaGNwLWlwLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWRoY3AtaXAgMS4yLjMuNAotICBJbiBzdGF0aWMgREhDUCBtb2RlLCBjb25maWd1cmUgdGhlIGxvY2FsIERIQ1Agc2VydmVyIG9yIHJlbGF5IGFkZHJlc3MgCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2RoY3AtbW9kZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC1tb2RlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjN2Q4NWM1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC1tb2RlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQ29uZmlndXJlIFZOUyBoYW5kbGluZyBvZiBESENQIGJyb2FkY2FzdCBwYWNrZXRzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC1tb2RlLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2RoY3AtbW9kZS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlMGRjM2Q1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC1tb2RlLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLWRoY3AtbW9kZSBzdGF0aWMKLSAgVk5TIHdpbGwgZm9yd2FyZCBESENQIHRyYWZmaWMgdG8gYSBzaW5nbGUga25vd24gaG9zdAotCi1kaGNwLW1vZGUgZmxvb2QtaWYtdW5rbm93bgotICBGbG9vZCBESENQIHBhY2tldHMgaWYgdGhlIHNlcnZlciBpcyBub3Qga25vd24KLQotZGhjcC1tb2RlIGFsd2F5cy1mbG9vZAotICBEbyBub3QgbWFuYWdlIERIQ1AgdHJhZmZpY2UKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC12YWx1ZS1hbHdheXMtZmxvb2QgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2RoY3AtdmFsdWUtYWx3YXlzLWZsb29kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyNWMzYmU2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC12YWx1ZS1hbHdheXMtZmxvb2QKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1BbHdheXMgZmxvb2QgYWxsIERIQ1AgcGFja2V0cy4gV2lsbCBsZWFrIHBhY2tldHMgYWNyb3NzIFZOUy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC12YWx1ZS1mbG9vZC1pZi11bmtub3duIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9kaGNwLXZhbHVlLWZsb29kLWlmLXVua25vd24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGQ4ODdlYmMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9kaGNwLXZhbHVlLWZsb29kLWlmLXVua25vd24KKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUZsb29kIERIQ1AgcGFja2V0cyBpZiB0aGUgREhDUCBzZXJ2ZXIgbG9jYXRpb24gaXMgdW5rbm93bi4gREhDUCBzZXJ2ZXIKLWxvY2F0aW9uIHdpbGwgYmUgZGlzY292ZXJlZC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC12YWx1ZS1zdGF0aWMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2RoY3AtdmFsdWUtc3RhdGljCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyN2VlMTExLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvZGhjcC12YWx1ZS1zdGF0aWMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Gb3J3YXJkIERIQ1AgcGFja2V0cyB0byB0aGUgY29uZmlndXJlZCBsb2NhbCBESENQIHNlcnZlciBvciBsb2NhbCBESENQIHJlbGF5LgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9nYXRld2F5LXBvb2wgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2dhdGV3YXktcG9vbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDJjNWFhOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2dhdGV3YXktcG9vbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWdhdGV3YXkgcG9vbCBuYW1lCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1yb3V0ZXItY29ubmVjdGVkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2Utcm91dGVyLWNvbm5lY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWQ1OGExNC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1yb3V0ZXItY29ubmVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotdGhlICd0ZW5hbnQnIGtleXdvcmQgc3BlY2lmaWVzIHRoZSBuYW1lZCB2aXJ0dWFsIHJvdXRlciBpbnRlcmZhY2UgY29ubmVjdHMgdG8gYW5vdGhlciB0ZW5hbnQgdmlydHVhbCByb3V0ZXIuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhlM2ViY2IuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU2V0IGEgVk5TIGludGVyZmFjZSBydWxlIGFuZCBlbnRlciBzdWJtb2RlLiBEZXZpY2VzIGFyZQotYXNzaWduZWQgaW50byBWTlMgYmFzZWQgb24gaW50ZXJmYWNlLXJ1bGVzLiAKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtYWN0aXZlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1hY3RpdmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDdjN2Y1OTQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1hY3RpdmUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1NYXJrIHRoZSBydWxlIGFzIGFjdGl2ZS4gT25seSBhY3RpdmUgcnVsZXMgd2lsbCBiZSBtYXRjaGVkLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1hY3RpdmUtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtYWN0aXZlLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAzZjg5YzAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1hY3RpdmUtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotYWN0aXZlCi0gIE1hcmsgdGhpcyBpbnRlcmZhY2UgcnVsZSBhcyBhY3RpdmUKLQotbm8gYWN0aXZlCi0gIE1hcmsgdGhpcyBpbnRlcmZhY2UgcnVsZSBhcyBpbmFjdGl2ZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1hbGxvdy1tdWx0aXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtYWxsb3ctbXVsdGlwbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDMxNTU3YTkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1hbGxvdy1tdWx0aXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotSWYgYWxsb3ctbXVsdGlwbGUgaXMgc2V0IGRldmljZXMgbWF0Y2hpbmcgdGhpcyBydWxlIGFyZSBhbGxvd2VkIHRvIGJlIGluCi1tdWx0aXBsZSBWTlMgYXQgdGhlIHNhbWUgdGltZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtYWxsb3ctbXVsdGlwbGUtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtYWxsb3ctbXVsdGlwbGUtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmRjNGFiMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLWFsbG93LW11bHRpcGxlLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWFsbG93LW11bHRpcGxlCi0gIERldmljZXMgbWF0Y2hpbmcgdGhpcyBydWxlIGNhbiBiZSBpbiBtb3JlIHRoYW4gb25lIFZOUwotCi1ubyBhbGxvdy1tdWx0aXBsZQotICBEZXZpY2VzIG1hdGNoaW5nIHRoaXMgcnVsZSBjYW4gYmUgaW4gYSBzaW5nbGUgVk5TCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtZGVzY3JpcHRpb24gYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLWRlc2NyaXB0aW9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZTVjOWViLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtZGVzY3JpcHRpb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1BIHVzZXIgcHJvdmlkZWQgdGV4dHVhbCBkZXNjcmlwdGlvbiBmb3IgdGhpcyBpbnRlcmZhY2UtcnVsZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtZGVzY3JpcHRpb24tZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtZGVzY3JpcHRpb24tZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzhiYzMwOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLWRlc2NyaXB0aW9uLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWRlc2NyaXB0aW9uICJUaGlzIGlzIG15IGZpcnN0IFZOUyBpbnRlcmZhY2UgcnVsZSIKLSAgRGVzY3JpYmUgYSBWTlMgaW50ZXJmYWNlIHJ1bGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDFmZjI2Yi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWludGVyZmFjZS1ydWxlIG15LXJ1bGUtMQotICBEZWZpbmUgYSBuZXcgaW50ZXJmYWNlIHJ1bGUsIGFuZCBlbnRlciBpdHMgY29uZmlndXJhdGlvbiBzdWItbW9kZQotCi1ubyBpbnRlcmZhY2UtcnVsZSBteS1ydWxlLTEKLSAgRGVsZXRlIGFuIGludGVyZmFjZSBydWxlIGJ5IG5hbWUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtaXAtc3VibmV0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1tYXRjaC1pcC1zdWJuZXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM3NmQ4YzcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1tYXRjaC1pcC1zdWJuZXQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Bc3NvY2lhdGUgYW4gSVAgYWRkcmVzcyBvciBJUCBzdWJuZXQgd2l0aCBpbnRlcmZhY2UtcnVsZS4gCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLW1hdGNoLWlwLXN1Ym5ldC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1tYXRjaC1pcC1zdWJuZXQtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzI2NjExOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLW1hdGNoLWlwLXN1Ym5ldC1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1tYXRjaCBpcC1zdWJuZXQgMTAuMTAuMTAuMTAKLW1hdGNoIGlwLXN1Ym5ldCAxMC40Mi4xMC4wLzI0CmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLW1hdGNoLW1hYyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtbWFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0MTljNzFlLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtbWFjCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQXNzb2NpYXRlIE1BQyBhZGRyZXNzIChob3N0KSB3aXRoIGludGVyZmFjZS1ydWxlLiAKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtbWFjLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLW1hdGNoLW1hYy1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyNWQ2ZjU5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtbWFjLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLW1hdGNoIG1hYyAwMDowMDowMDowMDowMDowMQotICBNYXRjaCBhIHNwZWNpZmljIE1BQyBhZGRyZXNzCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLW1hdGNoLXN3aXRjaCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtc3dpdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxYTBmMDA5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtc3dpdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1Bc3NvY2lhdGUgYSBzd2l0Y2ggb3Igc2V0IG9mIHN3aXRjaCBpbnRlcmZhY2VzIHdpdGggdGhpcyBpbnRlcmZhY2UtcnVsZS4KLUhvc3RzIHByZXNlbnQgb24gdGhlIHNwZWNpZmllZCBzd2l0Y2gvaW50ZXJmYWNlcyB3aWxsIGJlIG1hdGNoZWQuIApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1tYXRjaC1zd2l0Y2gtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtc3dpdGNoLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE1NzZmMTMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1tYXRjaC1zd2l0Y2gtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotbWF0Y2ggc3dpdGNoIDAwOjAwOjExOjIyOjMzOjQ0OjU1OjY2Ci0gICAgTWF0Y2hlcyBhbGwgaW50ZXJmYWNlcyBvbiB0aGUgc3dpdGNoIHdpdGggdGhpcyBEUElELgotbWF0Y2ggc3dpdGNoIDAwOjAwOjExOjIyOjMzOjQ0OjU1OjY2IEV0aGVybmV0MQotICAgIE1hdGNoZXMgaW50ZXJmYWNlIEV0aGVybmV0MSBvbiB0aGUgc3BlY2lmaWVkIHN3aXRjaC4KLW1hdGNoIHN3aXRjaCAwMDowMDoxMToyMjozMzo0NDo1NTo2NiBFdGhlcm5ldDEsRXRoZXJuZXQ1LTEwLHBvcnQyCi0gICAgTWF0Y2hlcyBpbnRlcmZhY2VzIEV0aGVybmV0MSwgRXRoZXJuZXQ1LCBFdGhlcm5ldDYsIC4uLiBFdGhlcm5ldDEwLAotCWFuZCBwb3J0MiBvbiB0aGUgc3BlY2lmaWVkIHN3aXRjaC4KLW1hdGNoIHN3aXRjaCBUb1ItMS0xIAotICAgIE1hdGNoZXMgdGhlIHN3aXRjaCB3aXRoIHRoZSBhbGlhcyAnVG9SLTEtMScKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtdGFnIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1tYXRjaC10YWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA4ZTY0OTYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1tYXRjaC10YWcKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUFzc29jaWF0ZSBhIHRhZyBvciBsaXN0IG9mIHRhZ3Mgd2l0aCB0aGlzIGludGVyZmFjZS1ydWxlLiBJZiBhIGxpc3Qgb2YKLXRhZ3MgaXMgZ2l2ZW4gKmFsbCogdGFncyBuZWVkIHRvIG1hdGNoLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1tYXRjaC10YWctZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtdGFnLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDdlMzk3ZjguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1tYXRjaC10YWctZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotbWF0Y2ggdGFncyBvcmcuc2RucGxhdGZvcm0udGVuYW50PUN1c3RvbWVyQQotICAgIE1hdGNoZXMgZGV2aWNlcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiB0YWcuCi1tYXRjaCB0YWdzIG9yZy5zZG5wbGF0Zm9ybS50ZW5hbnQ9Q3VzdG9tZXJBLGNvbS5leGFtcGxlLnR5cGU9cm91dGVyCi0gICAgTWF0Y2hlcyBkZXZpY2VzIHRoYXQgbWF0Y2ggKmFsbCogb2YgdGhlIGdpdmVuIHRhZ3MuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLW1hdGNoLXZsYW5zIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1tYXRjaC12bGFucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggY2VhMjU0NC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLW1hdGNoLXZsYW5zCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQXNzb2NpYXRlIGEgdmxhbiAob3IgbGlzdCBvciByYW5nZSkgd2l0aCB0aGlzIGludGVyZmFjZSBydWxlLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtdmxhbnMtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtbWF0Y2gtdmxhbnMtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmNiYWNjZS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS1ydWxlLW1hdGNoLXZsYW5zLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLW1hdGNoIHZsYW5zIDQyCi0gIE1hdGNoIHBhY2tldHMgaW4gVkxBTiA0MgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1wcmlvcml0eSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtcHJpb3JpdHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDUwNWRmZmQuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1wcmlvcml0eQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGhlIHByaW9yaXR5IG9mIHRoaXMgaW50ZXJmYWNlLXJ1bGUuIEhpZ2hlciBudW1lcmljIHZhbHVlcyByZXByZXNlbnQKLWhpZ2hlciBwcmlvcml0eS4gVGhlIGhpZ2hlc3QgcHJpb3JpdHkgaW50ZXJmYWNlLXJ1bGUgdGhhdCBtYXRjaGVzIGEKLWdpdmVuIHBhY2tldCB3aWxsIGJlIGNob29zZW4uIApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1wcmlvcml0eS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9pbnRlcmZhY2UtcnVsZS1wcmlvcml0eS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhOGJlNWYwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXJ1bGUtcHJpb3JpdHktZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcHJpb3JpdHkgMTAwCi0gIEFzc2lnbiBhIHByaW9yaXR5IHRvIHRoaXMgaW50ZXJmYWNlIHJ1bGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXZucy1jb25uZWN0ZWQgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL2ludGVyZmFjZS12bnMtY29ubmVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1ODJhOWI0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvaW50ZXJmYWNlLXZucy1jb25uZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi10aGUgJ3Zucycga2V5d29yZCBzcGVjaWZpZXMgdGhlIG5hbWVkIHZpcnR1YWwgcm91dGVyIGludGVyZmFjZSBjb25uZWN0cyB0byBhIFZOUyB3aXRoaW4gdGhlIHNhbWUgdGVuYW50IHNjb3BlLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvbWF0Y2ggYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL21hdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiY2FiYzhjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvbWF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUNvbmZpZ3VyZSBhIG1hdGNoIGZvciB0aGlzIGludGVyZmFjZSBydWxlLiBJZiBtdWx0aXBsZSBtYXRjaGVzIGFyZQotY29uZmlndXJlZCB0aGV5IHdpbGwgYmUgbG9naWNhbGx5IEFORCdlZC4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvb3JpZ2luIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9vcmlnaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDQyODA3NDIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9vcmlnaW4KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1EZXNjcmliZSB0aGUgb3JpZ2luIG9mIHRoaXMgVk5TIGluc3RhbmNlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL29yaWdpbi1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9vcmlnaW4tZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNWEzNjhmNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL29yaWdpbi1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1vcmlnaW4gcmVzdAotICBOb3RlIHRoYXQgdGhpcyBWTlMgaW5zdGFuY2Ugd2FzIGNvbmZpZ3VyZWQgdmlhIFJFU1QKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvb3V0Z29pbmctaW50ZXJmYWNlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9vdXRnb2luZy1pbnRlcmZhY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDcxYmM1NDMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9vdXRnb2luZy1pbnRlcmZhY2UKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1vdXRnb2luZyBpbnRlcmZhY2UgbmFtZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvcHJpb3JpdHkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3ByaW9yaXR5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ZmUyNzliLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvcHJpb3JpdHkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Bc3NpZ24gYSBwcmlvcml0eSB0byB0aGlzIFZOUyBpbnN0YW5jZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvcHJpb3JpdHktZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvcHJpb3JpdHktZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjJhNTA1Yi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3ByaW9yaXR5LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXByaW9yaXR5IDEwMAotICBXaXRoaW4gYSB2bnMgZGVmaW5pdGlvbiwgYXNzaWduIGEgc3BlY2lmaWMgcHJpb3JpdHkgdG8gdGhpcyBpbnN0YW5jZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LWlkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LWlkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxNmViYzM5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy1pZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGhpcyAnc2hvdyB2bnMgPGlkPicgY29tbWFuZCB2YXJpYXRpb24gaXMgdXNlZCB0byBpZGVudGlmeSBhIHNwZWNpZmljIHZucyBvciBWTlNzIGRlZmluZWQgdW5kZXIgY3VycmVudCB0ZW5hbnQgbW9kZS4KLVRoaXMgJ3Nob3cgdm5zIGFsbCcgIGNvbW1hbmQgdmFyaWF0aW9uIGlzIHVzZWQgdG8gZGlzcGxheSBhbGwgVk5TcyBkZWZpbmVkIGFjcm9zcyBhbGwgdGVuYW50cy4KLUJlaW5nIGJhY2t3YXJkIGNvbXBhdGlibGUsICdzaG93IHZucycgY29tbWFuZCB1bmRlciBub24gY29uZmlnLXRlbmFudCBtb2RlIGlzIGFsc28gYWNjZXB0ZWQgYW5kIGRpc3BsYXlzIHRoZSBWTlNzIGZvciBkZWZhdWx0IHRlbmFudCBvbmx5LgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LWlkLWFjY2Vzcy1saXN0cyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy1pZC1hY2Nlc3MtbGlzdHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGYxZDUxM2MuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LWlkLWFjY2Vzcy1saXN0cworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotVGhlICdhY2Nlc3MtbGlzdCcga2V5d29yZCByZXF1ZXN0cyBkaXNwbGF5IG9mIHRoZSAKLWNvbmZpZ3VyZWQgYWNjZXNzLWxpc3RzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdm5zLgotVGhlIG91dHB1dCBpbmNsdWRlcyBub3Qgb25seSB0aGUgYWNjZXNzLWxpc3QsIGJ1dAotYSBicmllZiBkZXNjcmlwaW9uIG9mIHRoZSBhY2wgcnVsZXMgYXNzb2NpYXRlZCB3aXRoCi10aGUgYWNjZXNzLWxpc3QuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Nob3ctaWQtZmxvdyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy1pZC1mbG93CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlNWJhYTc2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy1pZC1mbG93CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1UaGUgJ2Zsb3cnIGtleXdvcmQgcmVxdWVzdHMgdGhlIGRpc3BsYXkgb2YgYWxsIG9wZW5mbG93Ci1mbG93LW1hdGNoIGVudHJpZXMgaW5zZXJ0ZWQgaW50byB2YXJpb3VzIHN3aXRjaGVzIHRvCi1pbXBsZW1lbnQgdGhlIHZucyBpc29sYXRpb24uCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Nob3ctaWQtaW50ZXJmYWNlLXJ1bGVzIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LWlkLWludGVyZmFjZS1ydWxlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMmM4YzZiOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Nob3ctaWQtaW50ZXJmYWNlLXJ1bGVzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGUgJ2ludGVyZmFjZS1ydWxlcycga2V5d29yZCByZXF1ZXN0cyB0aGUgZGlzcGxheSBvZgotdGhlIGNvbmZpZ3VyZWQgaW50ZXJmYWNlLXJ1bGVzIGZvciB0aGUgbmFtZWQgdm5zLiAgVGhlCi12bnMgaW50ZXJmYWNlLXJ1bGVzIGRlc2NyaWJlIHRoZSBtZW1iZXJzaGlwIHJ1bGVzIAotYXNzb2NpYXRlZCB3aXRoIGEgdm5zLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy10ZW5hbnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGRjZjYyOGYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyAnc2hvdyB0ZW5hbnQgPHRlbmFudC1uYW1lPicgY29tbWFuZCBpcyB1c2VkIHRvIGlkZW50aWZ5IGEgc3BlY2lmaWMgdGVuYW50LCB0byBkZXNjcmliZSBwYXJ0aWN1bGFyIGNvbmZpZ3VyZWQgZGV0YWlscy4KLSdzaG93IHRlbmFudCcgY29tbWFuZCBwcm92aWRlcyBkaXNwbGF5IGZvciBldmVyeSBkZWZpbmVkIHRlbmFudC4gClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudC1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmMmZhMWYzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy10ZW5hbnQtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLWxvY2FsaG9zdCMgc2hvdyB0ZW5hbnQgYWxsCi0KLQkjIFRlbmFudCBJRCBBY3RpdmUgRGVzY3JpcHRpb24gUm91dGVyIElECi0KLQktfC0tLS0tLS0tLXwtLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tCi0KLQkxIEEgICAgICAgICBUcnVlICAgICAgICAgICAgICAgdnJBCi0KLQkyIGRlZmF1bHQgICBUcnVlCi0KLQkzIHJlZCAgICAgICBUcnVlCi0KLQk0IHN5c3RlbSAgICBUcnVlICAgICAgICAgICAgICAgdnJzeXN0ZW0KLQotbG9jYWxob3N0IyBzaG93IHRlbmFudCBBCi0KLQkjIFRlbmFudCBJRCBBY3RpdmUgRGVzY3JpcHRpb24gUm91dGVyIElECi0KLQktfC0tLS0tLS0tLXwtLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tCi0KLTEgQSAgICAgICAgIFRydWUgICAgICAgICAgICAgICB2ckEKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy10ZW5hbnQtaWQtcm91dGVyIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudC1pZC1yb3V0ZXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDJjNzY0MDMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudC1pZC1yb3V0ZXIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoZSAncm91dGVyJyBrZXl3b3JkIHJlcXVlc3RzIHRoZSBkaXNwbGF5IG9mCi10aGUgY29uZmlndXJlZCB2aXJ0dWFsIHJvdXRlciBmb3IgdGhlIG5hbWVkIG9yIGN1cnJlbnQgdGVuYW50LiAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudC1pZC1yb3V0ZXItZ3dpcHBvb2wgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Nob3ctdGVuYW50LWlkLXJvdXRlci1nd2lwcG9vbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjRlODRhZi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Nob3ctdGVuYW50LWlkLXJvdXRlci1nd2lwcG9vbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGhlICdndy1hZGRyZXNzLXBvb2wnIGtleXdvcmQgcmVxdWVzdHMgdGhlIGRpc3BsYXkgb2YKLXRoZSBjb25maWd1cmVkIGdhdGV3YXkgaXAgYWRkcmVzc2VzIGZvciBhbGwgdGhlIGdhdGV3YXkgcG9vbHMgb2YgdGhlIG5hbWVkIHZpcnR1YWwgcm91dGVyLiAgCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy10ZW5hbnQtaWQtcm91dGVyLWd3cG9vbHMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Nob3ctdGVuYW50LWlkLXJvdXRlci1nd3Bvb2xzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxMDVlODdiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy10ZW5hbnQtaWQtcm91dGVyLWd3cG9vbHMKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoZSAnZ2F0ZXdheS1wb29scycga2V5d29yZCByZXF1ZXN0cyB0aGUgZGlzcGxheSBvZgotdGhlIGNvbmZpZ3VyZWQgbmV4dCBob3AgZ2F0ZXdheSBwb29scyBmb3IgdGhlIG5hbWVkIHZpcnR1YWwgcm91dGVyLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudC1pZC1yb3V0ZXItaW50ZXJmYWNlcyBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy10ZW5hbnQtaWQtcm91dGVyLWludGVyZmFjZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDI0YTViYWYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudC1pZC1yb3V0ZXItaW50ZXJmYWNlcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlICdpbnRlcmZhY2VzJyBrZXl3b3JkIHJlcXVlc3RzIHRoZSBkaXNwbGF5IG9mCi10aGUgY29uZmlndXJlZCBpbnRlcmZhY2VzIGZvciB0aGUgbmFtZWQgdmlydHVhbCByb3V0ZXIuIApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudC1pZC1yb3V0ZXItaXBwb29sIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudC1pZC1yb3V0ZXItaXBwb29sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMGE0NGFiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy10ZW5hbnQtaWQtcm91dGVyLWlwcG9vbAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlICdpcC1hZGRyZXNzLXBvb2wnIGtleXdvcmQgcmVxdWVzdHMgdGhlIGRpc3BsYXkgb2YKLXRoZSBjb25maWd1cmVkIGlwIGFkZHJlc3Mvc3VibmV0IGZvciBhbGwgdGhlIGludGVyZmFjZXMgb2YgdGhlIG5hbWVkIHZpcnR1YWwgcm91dGVyLiAgCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Nob3ctdGVuYW50LWlkLXJvdXRlci1yb3V0ZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy10ZW5hbnQtaWQtcm91dGVyLXJvdXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyN2YzZWYxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc2hvdy10ZW5hbnQtaWQtcm91dGVyLXJvdXRlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGUgJ3JvdXRlJyBrZXl3b3JkIHJlcXVlc3RzIHRoZSBkaXNwbGF5IG9mCi10aGUgY29uZmlndXJlZCByb3V0aW5nIHJ1bGUgZm9yIHRoZSBuYW1lZCB2aXJ0dWFsIHJvdXRlci4gClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy9zaG93LXRlbmFudC1pZC12bnMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Nob3ctdGVuYW50LWlkLXZucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTYyYzhmMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Nob3ctdGVuYW50LWlkLXZucworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlICd2bnMnIGtleXdvcmQgcmVxdWVzdHMgdGhlIGRpc3BsYXkgb2YKLXRoZSBjb25maWd1cmVkIHZuc3MgZm9yIHRoZSBuYW1lZCB0ZW5hbnQuICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3NyYy1pcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc3JjLWlwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3YjkwYjRiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvc3JjLWlwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQW4gSVAgYWRkcmVzcyBpbiBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGQ3NjcyZTYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1UaGlzIHN1Ym1vZGUgaXMgdXNlZCB0byBjcmVhdGUgYSBuYW1lZCB0ZW5hbnQuIFdpdGhpbiB0aGlzIHN1Ym1vZGUsIHByb3BlcnRpZXMgb2YKLXRoZSB0ZW5hbnQgY2FuIGJlIGNvbmZpZ3VyZWQuIFZOUyBhcmUgY29uZmlndXJlZCBhbmQgbWFuYWdlZCwgd2hpY2ggY29uZmlndXJlIHRoZSBtZW1iZXJzaGlwIG9mIGRldmljZXMuCi1WaXJ0dWFsIHJvdXRlciBpcyBjb25maWd1cmVkIGFuZCBtYW5hZ2VkLCB3aGljaCBkZWZpbmVzIHRoZSBjb25uZWN0aXZpdHkgd2l0aGluIGFuZCBhbW9uZyB0ZW5hbnRzLgotCi1UaGUgY29udHJvbGxlciBwcm92aWRlcyBhIHRlbmFudCBuYW1lZCAnZGVmYXVsdCcgdG8gY29sbGVjdCBkZXZpY2VzCi13aGljaCBhcmUgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgdGVuYW50LgotCi1UaGUgY29udHJvbGxlciBwcm92aWRlcyBhIHRlbmFudCBuYW1lZCAnc3lzdGVtJyB0byBob2xkIHN5c3RlbSB2aXJ0dWFsIHJvdXRlcgotd2hpY2ggaXMgdXNlZCB0byBkZWZpbmUgdGhlIGNvbm5lY3Rpdml0eSBhbW9uZyBhbGwgdGVuYW50cy4KLQotVGhlIGNvbnRyb2xsZXIgcHJvdmlkZXMgYSB0ZW5hbnQgbmFtZWQgJ2V4dGVybmFsJyB0byBob2xkIGNvbmZpZ3VyYXRpb24gZm9yIGV4dGVybmFsIG5ldHdvcmsgYWNjZXNzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtYWN0aXZlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtYWN0aXZlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3NzhkYmNjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LWFjdGl2ZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU2V0IHRoZSB0ZW5hbnQgYWN0aXZlLiBJZiBhIHRlbmFudCBpcyBpbmFjdGl2ZSB0aGUgY29udHJvbGxlciB3aWxsIG5vdCB1c2UgaXQKLW9yIGl0cyBydWxlcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LWFjdGl2ZS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtYWN0aXZlLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGQ5ZWZmMmIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtYWN0aXZlLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWFjdGl2ZQotICBBY3RpdmF0ZSB0aGlzIHRlbmFudCBpbnN0YW5jZQotCi1ubyBhY3RpdmUKLSAgRGVhY3RpdmF0ZSB0aGlzIHRlbmFudCBpbnN0YW5jZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtZGVzY3JpcHRpb24gYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1kZXNjcmlwdGlvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTJhOWExNS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1kZXNjcmlwdGlvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVdpdGhpbiBhIHRlbmFudCBkZWZpbml0aW9uIHN1Yi1tb2RlLCBkZWNsYXJlIGEgZnJpZW5kbHkgZGVzY3JpcHRvciBmb3IgdGhlIHRlbmFudCBpbnN0YW5jZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LWRlc2NyaXB0aW9uLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1kZXNjcmlwdGlvbi1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyZDk0NTE0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LWRlc2NyaXB0aW9uLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWRlc2NyaXB0aW9uICJ0aGlzIGlzIG15IGZpcnN0IHRlbmFudCBpbnN0YW5jZSIKLSAgQWRkIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiB0byBhIHRlbmFudApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhjOWRjZWMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotdGVuYW50IG15LWZpcnN0LXRlbmFudAotICBEZWZpbmUgYSBuZXcgdGVuYW50IGluc3RhbmNlIGJ5IG5hbWUsCi0gIGFuZCBlbnRlciB0aGUgdGVuYW50IHN1Yi1tb2RlCi0KLW5vIHRlbmFudCBteS1maXJzdC10ZW5hbnQKLSAgUmVtb3ZlIGEgbmFtZWQgdGVuYW50ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWFjdGl2ZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1hY3RpdmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDRmNThhZjMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWFjdGl2ZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU2V0IHRoZSB0ZW5hbnQgdmlydHVhbCByb3V0ZXIgYWN0aXZlLiBJZiBhIHRlbmFudCB2aXJ0dWFsIHJvdXRlciBpcyBpbmFjdGl2ZSB0aGUgY29udHJvbGxlciB3aWxsIG5vdCB1c2UgaXQKLW9yIGl0cyBydWxlcy4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1hY3RpdmUtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1hY3RpdmUtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzYyNmViNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItYWN0aXZlLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWxvY2FsaG9zdChjb25maWctdGVuYW50LXJvdXRlci1pbnRmKSMgYWN0aXZlCi0gIEFjdGl2YXRlIHRoaXMgaW50ZXJmYWNlIGluc3RhbmNlCi0KLWxvY2FsaG9zdChjb25maWctdGVuYW50LXJvdXRlci1pbnRmKSMgbm8gYWN0aXZlCi0gIERlYWN0aXZhdGUgdGhpcyBpbnRlcmZhY2UgaW5zdGFuY2UKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1kZXNjcmlwdGlvbiBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1kZXNjcmlwdGlvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODllYTIzNC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItZGVzY3JpcHRpb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1XaXRoaW4gYSB0ZW5hbnQgdmlydHVhbCByb3V0ZXIgZGVmaW5pdGlvbiBzdWItbW9kZSwgZGVjbGFyZSBhIGZyaWVuZGx5IGRlc2NyaXB0b3IgZm9yIHRoZSB2aXJ0dWFsIHJvdXRlciBpbnN0YW5jZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1kZXNjcmlwdGlvbi1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWRlc2NyaXB0aW9uLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJkOWY3NzkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWRlc2NyaXB0aW9uLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWxvY2FsaG9zdChjb25maWctdGVuYW50LXJvdXRlcikjIGRlc2NyaXB0aW9uICJ0aGlzIGlzIHRoZSB2aXJ0dWFsIHJvdXRlciBmb3IgdGVzdGluZyIKLSAgQWRkIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiB0byBhIHRlbmFudCB2aXJ0dWFsIHJvdXRlcgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1nd2lwIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWd3aXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDdkYjU1ZDcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWd3aXAKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1BZGQgYW4gSVAgYWRkcmVzcyB0byBhIGdhdGV3YXkgcG9vbApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWd3aXAtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1nd2lwLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDllNGY1ZGMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWd3aXAtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotbG9jYWxob3N0KGNvbmZpZy10ZW5hbnQtcm91dGVyLWd3KSMgaXAgIDEwLjAuMS4xLzI0Ci0KLWxvY2FsaG9zdChjb25maWctdGVuYW50LXJvdXRlci1ndykjIG5vIGlwICAxMC4wLjEuMS8yNApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWd3cG9vbCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1nd3Bvb2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDlmMDdkNmIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWd3cG9vbAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyBjb21tYW5kIGlzIHVzZWQgdG8gY3JlYXRlIGEgbmV3IG5leHQgaG9wIGdhdGV3YXkgcG9vbC4gQW55IElQIGFkZHJlc3Mgd2l0aGluIHRoaXMgZ2F0ZXdheSBwb29sIGNhbiBiZSB1c2VkIGFzIGEgbmV4dCBob3AgZm9yIGEgcm91dGluZyBydWxlIGNvbmZpZ3VyZWQgd2l0aCB0aGUgbmV4dCBob3AgYXMgdGhpcyBnYXRld2F5IHBvb2wuCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1nd3Bvb2wtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1nd3Bvb2wtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDMzMzdmOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItZ3dwb29sLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWxvY2FsaG9zdChjb25maWctdGVuYW50LXJvdXRlcikjIGdhdGV3YXktcG9vbCBwb29sMQotICBjcmVhdGUgYSBnYXRld2F5IHBvb2wgcG9vbDEKLQotbG9jYWxob3N0KGNvbmZpZy10ZW5hbnQtcm91dGVyKSMgbm8gZ2F0ZXdheS1wb29sIHBvb2wxCi0gIHJlbW92ZSB0aGUgZ2F0ZXdheSBwb29sIG5hbWVkIHBvb2wxCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItaW50ZXJmYWNlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWludGVyZmFjZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTM4YTJmOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItaW50ZXJmYWNlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGlzIGNvbW1hbmQgaXMgdXNlZCB0byBjcmVhdGUgYSBuZXcgdmlydHVhbCByb3V0ZXIgaW50ZXJmYWNlIGFuZCBjb25uZWN0IHRoZSBuYW1lZCBpbnRlcmZhY2UgdG8gYSBkZWZpbmVkIFZOUyBvciBhbm90aGVyIHZpcnR1YWwgcm91dGVyLgotCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItaW50ZXJmYWNlLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItaW50ZXJmYWNlLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDI1ZjU3ZGUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWludGVyZmFjZS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1sb2NhbGhvc3QoY29uZmlnLXRlbmFudC1yb3V0ZXIpIyBpbnRlcmZhY2UgaWYxIHZucyBBMQotICBjcmVhdGUgYSB2aXJ0dWFsIHJvdXRlciBpbnRlcmZhY2UgaWYxIGFuZCBjb25uZWN0IGl0IHRvIFZOUyBBMQotICAKLWxvY2FsaG9zdChjb25maWctdGVuYW50LXJvdXRlcikjIG5vIGludGVyZmFjZSBpZjEKLSAgcmVtb3ZlIHRoZSBuYW1lZCB2aXJ0dWFsIHJvdXRlciBpbnRlcmZhY2UgaWYxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWludGVyZmFjZWlwIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWludGVyZmFjZWlwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkNjRiOTAzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1pbnRlcmZhY2VpcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUFzc29jaWF0ZSBhbiBJUCBhZGRyZXNzIGFuZCBJUCBzdWJuZXQgd2l0aCBhbiB2aXJ0dWFsIHJvdXRlciBpbnRlcmZhY2UuIApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLWludGVyZmFjZWlwLWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItaW50ZXJmYWNlaXAtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTk1ZGVhNS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItaW50ZXJmYWNlaXAtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotbG9jYWxob3N0KGNvbmZpZy10ZW5hbnQtcm91dGVyLWludGYpIyBpcCAgMTAuMC4xLjEvMjQKLQotbG9jYWxob3N0KGNvbmZpZy10ZW5hbnQtcm91dGVyLWludGYpIyBubyBpcCAgMTAuMC4xLjEvMjQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItcm91dGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItcm91dGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDlmZjlmNmEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtcm91dGVyLXJvdXRlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGlzIGNvbW1hbmQgaXMgdXNlZCB0byBjcmVhdGUgYSBuZXcgcm91dGluZyBydWxlIGZvciBhIGdpdmVuIHRlbmFudCB2aXJ0dWFsIHJvdXRlci4gICAKLSAgCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC1yb3V0ZXItcm91dGUtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1yb3V0ZS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyNTlmZjg1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXJvdXRlci1yb3V0ZS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yb3V0ZSBmcm9tIHRlbmFudCBBIHRvIHRlbmFudCBCIHBlcm1pdAotICBjcmVhdGUgYSByb3V0aW5nIHJ1bGUgdG8gcGVybWl0IHBhY2tldHMgZnJvbSB0ZW5hbnQgQSB0byB0ZW5hbnQgQgotCi1ubyByb3V0ZSBmcm9tIHRlbmFudCBBIHRvIHRlbmFudCBCIHBlcm1pdAotICByZW1vdmUgdGhlIGNyZWF0ZWQgcm91dGluZyBydWxlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtdnJvdXRlciBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXZyb3V0ZXIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGI5M2ZkODIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy90ZW5hbnQtdnJvdXRlcgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyBzdWJtb2RlIGlzIHVzZWQgdG8gY3JlYXRlLCB0aGVuIGRlc2NyaWJlIHRoZSBjb25uZWN0aXZpdHkgYW5kIHJvdXRpbmcgcnVsZXMgZm9yIHRoZSBuYW1lZCB2aXJ0dWFsIHJvdXRlciBmb3IgYSBnaXZlbiB0ZW5hbnQuICAgCi1XaXRoaW4gdGhpcyBzdWJtb2RlLCBwcm9wZXJ0aWVzIG9mIHRoZSB2aXJ0dWFsIHJvdXRlciBjYW4gYmUgY29uZmlndXJlZC4gICAKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXZyb3V0ZXItZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdGVuYW50LXZyb3V0ZXItZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDkzMGRjNS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3RlbmFudC12cm91dGVyLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJvdXRlciBteS1maXJzdC1yb3V0ZXIKLSAgRGVmaW5lIGEgbmV3IHJvdXRlciBpbnN0YW5jZSBieSBuYW1lLAotICBhbmQgZW50ZXIgdGhlIHRlbmFudC1yb3V0ZXIgc3ViLW1vZGUKLQotbm8gcm91dGVyIG15LWZpcnN0LXJvdXRlcgotICBSZW1vdmUgYSBuYW1lZCByb3V0ZXIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3VzZS1hZGRyZXNzLXNwYWNlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy91c2UtYWRkcmVzcy1zcGFjZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWE5YjVhOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3VzZS1hZGRyZXNzLXNwYWNlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQXNzb2NpYXRlIHRoaXMgVk5TIHdpdGggdGhlIHNwZWNpZmllZCBhZGRyZXNzLXNwYWNlLiAKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdXNlLWFkZHJlc3Mtc3BhY2UtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdXNlLWFkZHJlc3Mtc3BhY2UtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzg0MTY5YS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3VzZS1hZGRyZXNzLXNwYWNlLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXVzZSBhZGRyZXNzLXNwYWNlIGFkZHJlc3Mtc3BhY2UtMQotICBDaGFuZ2UgdGhlIGFzc29jaWF0aW9uIG9mIHRoaXMgVk5TIGZyb20gJ2RlZmF1bHQnIHRvICdhZGRyZXNzLXNwYWNlLTEnLgotCi1ubyBhZGRyZXNzLXNwYWNlIGFkZHJlc3Mtc3BhY2UtMQotICBSZW1vdmUgdGhlIGFkZHJlc3Mgc3BhY2UgYXNzb2NpYXRpb24gZm9yIHRoaXMgVk5TLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3ZucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTkwZDhjZi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3ZucworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVRoaXMgY29tbWFuZCBpcyB1c2VkIHRvIGVudGVyIGEgc3VibW9kZSB0byBtYW5hZ2UgcHJvcGVydGllcwotYXNzb2NpYXRlZCB3aXRoIHRoZSB2aXJ0dWFsIHN3aXRjaC4gIFRoaXMgY3VycmVudGx5IGluY2x1ZGVzCi1hY2wgbWFuYWdtZW50LCBhbmQgYXNzb2NpYXRpb24gb2YgdGhlIGFjbHMgcnVsZXMgdG8gaW50ZXJmYWNlcy4KLQotVGhlIG5hbWVkIHZucy1pZCBtdXN0IGFscmVhZHkgZXhpc3QuICBTZWUgdGhlIHZucy1kZWZpbml0aW9uCi1jb21tYW5kIHRvIGNyZWF0ZSBuZXcgVk5Tcy4KLQotV2l0aGluZyB0aGlzIHN1Ym1vZGUsIHR3byBvdGhlciBzdWJtb2RlcyBjYW4gYmUgZW50ZXJlZC4gIFRoZQotYWNjZXNzLWxpc3Qgc3VibW9kZSBhc3NvY2lhdGVzIHNwZWNpZmljIGFjbCBydWxlcyB3aXRoIGFuIGFjY2VzcyBsaXN0LAotd2hpbGUgdGhlIGludGVyZmFjZSBzdWJtb2RlIGFsbG93cyBhc3NvY2lhdGlvbiBvZiBuYW1lZCBhY2Nlc3MgcnVsZXMKLXRvIHNwZWNpZmljIGludGVyZmFjZXMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtZ3JvdXAgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtZ3JvdXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAyOWJjMDkuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWdyb3VwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQXNzb2NpYXRlIGFuIGFjY2Vzcy1saXN0IGNvbmZpZ3VyYXRpb24gd2l0aCB0aGlzIGludGVyZmFjZSBydWxlLiAKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1ncm91cC1kaXJlY3Rpb24taW4gYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtZ3JvdXAtZGlyZWN0aW9uLWluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzMjk1NDcxLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1ncm91cC1kaXJlY3Rpb24taW4KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1BcHBseSBhbiBhY2Nlc3MtbGlzdCB0byBpbmNvbWluZyB0cmFmZmljIG9uIHRoaXMgVk5TIGludGVyZmFjZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1ncm91cC1kaXJlY3Rpb24tb3V0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWdyb3VwLWRpcmVjdGlvbi1vdXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDkzNTY3OWMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWdyb3VwLWRpcmVjdGlvbi1vdXQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1BcHBseSBhbiBhY2Nlc3MtbGlzdCB0byBvdXRnb2luZyB0cmFmZmljIG9uIHRoaXMgVk5TIGludGVyZmFjZS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1ncm91cC1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWdyb3VwLWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDY3N2Y1YTguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWdyb3VwLWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWFjY2Vzcy1ncm91cCBwYWlyLWJsb2NrZXIgaW4KLSAgQXNzb2NpYXRlIHRoZSAncGFpci1ibG9ja2VyJyBBQ0wgd2l0aCBpbnB1dCBwYWNrZXRzIHRvIHRoaXMgVk5TCi0KLW5vIGFjY2Vzcy1ncm91cCBwYWlyLWJsb2NrZXIgaW4KLSAgUmVtb3ZlIHRoZSBpbnB1dCBwYWNrZXQgQUNMIGZvciB0aGlzIFZOUyBpbnN0YW5jZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODUzZDMzYi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUVudGVyIHN1Ym1vZGUgdG8gY29uZmlndXJlIFZOUyBhY2Nlc3MtbGlzdC4gCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1jaWRyLXJhbmdlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtY2lkci1yYW5nZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDFkNzFkMi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1jaWRyLXJhbmdlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotSVAgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGggaW4gQ0lEUiBmb3JtYXQuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1kZXNjcmlwdGlvbiBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWRlc2NyaXB0aW9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3NjNlMTI3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWRlc2NyaXB0aW9uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQSB1c2VyIHByb3ZpZGVkIHRleHR1YWwgZGVzY3JpcHRpb24gZm9yIHRoaXMgYWNjZXNzLWxpc3QuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1kZXNjcmlwdGlvbi1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZGVzY3JpcHRpb24tZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDg0ZWVhMC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1kZXNjcmlwdGlvbi1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1kZXNjcmlwdGlvbiAiQWNjZXNzIGxpc3QgIzEiCi0gIEFzc29jaWF0ZSBhIHRleHQgZGVzY3JpcHRpb24gd2l0aCB0aGlzIGFjY2VzcyBsaXN0CmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1lbnRyeSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlMDMwYmRmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQWRkIGFuIGVudHJ5IHRvIHRoaXMgVk5TIGFjY2VzcyBsaXN0CmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1lbnRyeS1hY3Rpb24tZGVueSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5LWFjdGlvbi1kZW55CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzZDM2NmNhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5LWFjdGlvbi1kZW55CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotRGVueSB0cmFmZmljIG1hdGNoaW5nIHRoaXMgZW50cnkuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1lbnRyeS1hY3Rpb24tcGVybWl0IGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZW50cnktYWN0aW9uLXBlcm1pdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjQ2NjE1MS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1lbnRyeS1hY3Rpb24tcGVybWl0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotUGVybWl0IHRyYWZmaWMgbWF0Y2hpbmcgdGhpcyBlbnRyeS4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5LWV4YW1wbGUgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1lbnRyeS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxODg1ZGEyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5LWV4YW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0xMCBkZW55IGlwIDEwLjAuMC4xIDEwLjAuMC4yCi0gIEFkZCBhbiBBQ0wgcnVsZSB0byBkZW55IElQIHRyYWZmaWMgYmV0d2VlbiB0d28gaG9zdHMKLQotMTEgYWxsb3cgdGNwIDEwLjAuMC4zCi0gIEFkZCBhbiBBQ0wgcnVsZSB0byBhbGxvdyBUQ1AgdHJhZmZpYyBmcm9tIGEgc3BlY2lmaWMgaG9zdAotCi0xMiBkZW55IDUxCi0gIEFkZCBhbiBBQ0wgcnVsZSB0byBkZW55IEFIIHBhY2tldHMKLQotMTMgZGVueSB0Y3AgYW55IGVxIGh0dHAKLSAgQWRkIGFuIEFDTCBydWxlIHRvIGRlbnkgSFRUUCB0cmFmZmljCi0KLTE0IGRlbnkgdGNwIGFueSBlcSBodHRwCi0gIEFkZCBhbiBBQ0wgcnVsZSB0byBkZW55IEhUVFAgdHJhZmZpYwotCi0xNSBkZW55IG1hYyAwMDowMDowMDowMDowMDowMSBhbnkKLSAgQWRkIGFuIEFDTCBydWxlIHRvIGRlbnkgdHJhZmZpYyBiYXNlZCBvbiBzb3VyY2UgTUFDIGFkZHJlc3MKLQotMTYgZGVueSBtYWMgMDA6MDA6MDA6MDA6MDA6MDEgMDA6MDA6MDA6MDA6MDA6MDIKLSAgQWRkIGFuIEFDTCBydWxlIHRvIGRlbnkgdHJhZmZpYyBiZXR3ZWVuIE1BQyBhZGRyZXNzZXMKLQotMTYgZGVueSBtYWMgYW55IGFueSAweDA4NDIKLSAgQWRkIGFuIEFDTCBydWxlIHRvIGRlbnkgd2FrZS1vbi1MQU4gcGFja2V0cwotCi0xNyBkZW55IG1hYyBhbnkgYW55IHZsYW4gNDIKLSAgQWRkIGFuIEFDTCBydWxlIHRvIGRlbnkgcGFja2V0cyBmcm9tIGEgc3BlY2lmaWMgVkxBTgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZW50cnktdHlwZS1pcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5LXR5cGUtaXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDNlNTRiMzEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZW50cnktdHlwZS1pcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUFjY2VzcyBsaXN0IGVudHJ5IGZvciBJUCBwYWNrZXRzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZW50cnktdHlwZS1pcC1wcm90b2NvbCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5LXR5cGUtaXAtcHJvdG9jb2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDg3NjU3ODYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZW50cnktdHlwZS1pcC1wcm90b2NvbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUFuIElQIHByb3RvY29sIG51bWJlci4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5LXR5cGUtdGNwIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZW50cnktdHlwZS10Y3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDgwY2U4ZmIuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZW50cnktdHlwZS10Y3AKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1BY2Nlc3MgbGlzdCBlbnRyeSBmb3IgVENQIHBhY2tldHMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1lbnRyeS10eXBlLXVkcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5LXR5cGUtdWRwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiNzFiYWMwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWVudHJ5LXR5cGUtdWRwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQWNjZXNzIGxpc3QgZW50cnkgZm9yIFVEUCBwYWNrZXRzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZXRoZXItdHlwZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWV0aGVyLXR5cGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM3MDlkY2IuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZXRoZXItdHlwZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNwZWNpZnkgYW4gZXRoZXIgdHlwZSBieSBudW1iZXIgKGhleCBvciBkZWNpbWFsKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWV4YW1wbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGRiZmVmNDEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotYWNjZXNzLWxpc3QgYWNjZXNzLWxpc3QtMQotICBEZWZpbmUgYSBuZXcgYWNjZXNzIGxpc3QgZm9yIHRoaXMgVk5TLAotICBhbmQgZW50ZXIgaXRzIGNvbmZpZ3VyYXRpb24gc3ViLW1vZGUKLQotbm8gYWNjZXNzLWxpc3QgYWNjZXNzLWxpc3QtMQotICBSZW1vdmUgdGhlIGRlZmluaXRpb24gZm9yIHRoaXMgYWNjZXNzIGxpc3QKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWlwLWFuZC1tYXNrLWlwIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtaXAtYW5kLW1hc2staXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGVmMjYxMmYuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtaXAtYW5kLW1hc2staXAKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1JUCBhZGRyZXNzIGluIGRvdHRlZCBkZWNpbWFsIG5vdGF0aW9uLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtaXAtYW5kLW1hc2stbWFzayBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWlwLWFuZC1tYXNrLW1hc2sKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDNjYTkyM2QuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtaXAtYW5kLW1hc2stbWFzaworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUFuIGludmVyc2UgbmV0bWFzayBpbiBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWlwLWFueSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWlwLWFueQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTU5OGY2Zi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1pcC1hbnkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1SZXByZXNlbnRzIGFueSBJUCBhZGRyZXNzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtaXAtaWNtcCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWlwLWljbXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDZkNDlmODUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtaXAtaWNtcAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotRmlsdGVyIGJhc2VkIG9uIElDTVAgcGFja2V0IHR5cGVzCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWlwLW9ubHkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1pcC1vbmx5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlZjI2MTJmLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LWlwLW9ubHkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1JUCBhZGRyZXNzIGluIGRvdHRlZCBkZWNpbWFsIG5vdGF0aW9uLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtbWFjIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtbWFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwYzkyMmMwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LW1hYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUZpbHRlciBiYXNlZCBvbiBzb3VyY2UvZGVzdGlvbmF0aW9uIE1BQyBhZGRyZXNzZXMsIGV0aGVyIHR5cGVzIGFuZCBWTEFOIElEcwpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtbmFtZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LW5hbWUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDkwMDVhYjMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtbmFtZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRoZSBuYW1lIG9mIHRoZSBhY2Nlc3MgbGlzdApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtcG9ydC1oZXggYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1wb3J0LWhleApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjEyOTMxNi4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1wb3J0LWhleAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVBvcnQgbnVtYmVyIGluIGRlY2ltYWwgb3IgaGV4IGlmIHByZWZpeGVkIHdpdGggMHguCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1wb3J0LW9wLWVxIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtcG9ydC1vcC1lcQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTkxOTQ1NS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1wb3J0LW9wLWVxCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotUG9ydCBudW1iZXIgZXF1YWxzLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtcG9ydC1vcC1uZXEgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1wb3J0LW9wLW5lcQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmZhODI5Ni4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1wb3J0LW9wLW5lcQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVBvcnQgbnVtYmVyIGRvZXMgbm90IGVxdWFsLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtcG9ydC10eXBlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtcG9ydC10eXBlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5OWVmMTM5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWFjY2Vzcy1saXN0LXBvcnQtdHlwZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVNwZWNpZnkgYSBwb3J0IGJ5IHNlcnZpY2UgbmFtZQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtcHJpb3JpdHkgYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1wcmlvcml0eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTgxNjc3MC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1wcmlvcml0eQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVdpdGhpbiBhIFZOUyBhY2Nlc3MgbGlzdCBkZWZpbml0aW9uLCBzZXQgdGhlIHByaW9yaXR5CmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1wcmlvcml0eS1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtYWNjZXNzLWxpc3QtcHJpb3JpdHktZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDJmNjVhOC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1hY2Nlc3MtbGlzdC1wcmlvcml0eS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1wcmlvcml0eSAxMDAKLSAgU2V0IHRoZSBwcmlvcml0eSBvZiB0aGlzIEFDTCB0byAxMDAKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWRlZmluaXRpb24gYi9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1kZWZpbml0aW9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1YmZiOTk1Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWRlZmluaXRpb24KKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1UaGlzIHN1Ym1vZGUgaXMgdXNlZCB0byBjcmVhdGUsIHRoZW4gZGVzY3JpYmUgdGhlIG1lbWJlcnNoaXAgb2YKLWRldmljZXMgZm9yIHRoZSBuYW1lZCBWTlMuICAgV2l0aGluIHRoaXMgc3VibW9kZSwgcHJvcGVydGllcyBvZgotdGhlIFZOUyBjYW4gYmUgY29uZmlndXJlZC4gICBJbnRlcmZhY2UtcnVsZXMgYXJlIGNvbmZpZ3VyZWQgYW5kCi1tYW5hZ2VkLCB3aGljaCBjb25maWd1cmUgdGhlIG1lbWJlcnNoaXAgb2YgZGV2aWNlcy4KLQotVGhlIGNvbnRyb2xsZXIgcHJvdmlkZXMgYSBWTlMgbmFtZWQgJ2RlZmF1bHQnIHRvIGNvbGxlY3QgZGV2aWNlcwotd2hpY2ggYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IFZOUy4gICAKLQotUGFydCBvZiB0aGUgY29uZmlndXJhdGlvbiBhc3NvY2lhdGVkIHdpdGggYSBWTlMgaW5jbHVkZXMgdGhlCi1hc3NvY2lhdGlvbiBvZiBhIHBhcnRpY3VsYXIgYWRkcmVzcy1zcGFjZS4gICBXaGVuIG5vdCBzcGVmaWNpYWxseQotY29uZmlndXJlZCwgdGhlICdkZWZhdWx0JyBhZGRyZXNzLXNwYWNlIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUKLVZOUy4KLQotRWFjaCBhZGRyZXNzLXNwYWNlIGFsc28gaGFzIGFuIGFzc29jaWF0ZWQgZGVmYXVsdCBWTlMuICBJRiB0aGUKLWFkZHJlc3Mgc3BhY2UgaXMgY2FsbGVkICd5ZWxsb3cnLCB0aGVuIHRoZSBkZWZhdWx0IFZOUyBmb3IgdGhpcwotYWRkcmVzcyBzcGFjZSBpcyBjYWxsZWQgJ3llbGxvdy1kZWZhdWx0JwpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtZGVmaW5pdGlvbi1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtZGVmaW5pdGlvbi1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZjdkMTdkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWRlZmluaXRpb24tZXhhbXBsZQorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotdm5zLWRlZmluaXRpb24gbXktZmlyc3Qtdm5zCi0gIERlZmluZSBhIG5ldyBWTlMgaW5zdGFuY2UgYnkgbmFtZSwKLSAgYW5kIGVudGVyIHRoZSBWTlMgZGVmaW5pdGlvbiBzdWItbW9kZQotCi1ubyB2bnMtZGVmaW5pdGlvbiBteS1maXJzdC12bnMKLSAgUmVtb3ZlIGEgbmFtZWQgVk5TCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1leGFtcGxlIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtZXhhbXBsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjgyNGUwZC4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi12bnMgbXktdm5zLWRlZmluaXRpb24KLSAgRW50ZXIgVk5TIGRlZmluaXRpb24gc3ViLW1vZGUuCi0gIFRoZSBWTlMgbmFtZSBjb3JyZXNwb25kcyB0byBhIHByaW9yIHZucy1kZWZpbml0aW9uIGlkZW50aWZpZXIuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1pZCBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWlkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzN2UxZWQ2Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWlkCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBWTlMuIFRoZSBWTlMgbmFtZSAiZGVmYXVsdCIgcmVwcmVzZW50cyB0aGUKLWRlZmF1bHQgVk5TIGluIHRoZSBkZWZhdWx0IGFkZHJlc3Mgc3BhY2UuIEEgVk5TIG5hbWUgY29uZm9ybWluZyB0bwotIjxhZGRyZXNzLXNwYWNlLW5hbWU+LWRlZmF1bHQiIHJlcHJlc2VudHMgdGhlIGRlZmF1bHQgVk5TIGZvciB0aGUKLWFkZHJlc3Mtc3BhY2UgImFkZHJlc3Mtc3BhY2UtbmFtZSIKZGlmZiAtLWdpdCBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWludGVyZmFjZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWludGVyZmFjZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDY4YjBlOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1pbnRlcmZhY2UKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1FbnRlciBWTlMgaW50ZXJmYWNlIHN1Ym1vZGUsIG1hbmFnZSBhc3NvY2lhdGlvbiB0byBhY2Nlc3MgbGlzdHMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1pbnRlcmZhY2UtZXhhbXBsZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWludGVyZmFjZS1leGFtcGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4NDAyYjlhLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWludGVyZmFjZS1leGFtcGxlCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1pbnRlcmZhY2UgbWFpbi1pbnRlcmZhY2UKLSAgRW50ZXIgdGhlIFZOUyBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBzdWItbW9kZS4KLSAgVGhlIGludGVyZmFjZSBpcyBuYW1lZCBiYXNlZCBvbiBhIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlLXJ1bGUgc3BlY2lmaWVyLgpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtaW50ZXJmYWNlLWZpZWxkIGIvY2xpL2NsaS9kb2N1bWVudGF0aW9uL2VuX1VTL3Zucy92bnMtaW50ZXJmYWNlLWZpZWxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhMjAyMjZkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLWludGVyZmFjZS1maWVsZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhlIG5hbWUgb2YgdGhlIFZOUyBpbnRlcmZhY2UuIEludGVyZmFjZSBuYW1lcyBhcmUgZGVyaXZlZCBmcm9tCi1pbnRlcmZhY2UtcnVsZXMuCmRpZmYgLS1naXQgYS9jbGkvY2xpL2RvY3VtZW50YXRpb24vZW5fVVMvdm5zL3Zucy1zaG93LWludGVyZmFjZSBiL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLXNob3ctaW50ZXJmYWNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxYmU4ZTZiLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZG9jdW1lbnRhdGlvbi9lbl9VUy92bnMvdm5zLXNob3ctaW50ZXJmYWNlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1TaG93IFZOUyBpbnRlcmZhY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFZOUyBhbmQgaXRzIHN0YXRlIGFuZAotY29uZmlndXJhdGlvbi4KZGlmZiAtLWdpdCBhL2NsaS9jbGkvZXJyb3IucHkgYi9jbGkvY2xpL2Vycm9yLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzMjU4MDU3Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZXJyb3IucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWNsYXNzIENvbW1hbmRFcnJvcihFeGNlcHRpb24pOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZSBDTEkgY29tbWFuZCBtb2R1bGUKLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwga2luZCwgbWVzc2FnZSA9IE5vbmUpOgotICAgICAgICBpZiBraW5kOgotICAgICAgICAgICAgbWVzc2FnZSA9IGtpbmQgKyAnOiAnICsgbWVzc2FnZQotICAgICAgICBzdXBlcihDb21tYW5kRXJyb3IsIHNlbGYpLl9faW5pdF9fKG1lc3NhZ2UpCi0KLWNsYXNzIEFyZ3VtZW50VmFsaWRhdGlvbkVycm9yKENvbW1hbmRFcnJvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSwgZXhwZWN0ZWRfdG9rZW5zPU5vbmUpOgotICAgICAgICBraW5kID0gIkludmFsaWQgYXJndW1lbnQiCi0gICAgICAgIHN1cGVyKEFyZ3VtZW50VmFsaWRhdGlvbkVycm9yLCBzZWxmKS5fX2luaXRfXyhraW5kLCBtZXNzYWdlKQotICAgICAgICBzZWxmLmV4cGVjdGVkX3Rva2VucyA9IGV4cGVjdGVkX3Rva2VucwotCi0KLWNsYXNzIENvbW1hbmRTeW50YXhFcnJvcihDb21tYW5kRXJyb3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgI2tpbmQgPSAnRXJyb3InCi0gICAgICAgIGtpbmQgPSBOb25lCi0gICAgICAgIHN1cGVyKENvbW1hbmRTeW50YXhFcnJvcixzZWxmKS5fX2luaXRfXyhraW5kLCBtZXNzYWdlKQotCi0KLWNsYXNzIFJhbmdlU3ludGF4RXJyb3IoQ29tbWFuZEVycm9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIGtpbmQgPSAiVmFsdWUgb3V0c2lkZSBsZW5ndGgvcmFuZ2UiCi0gICAgICAgIHN1cGVyKFJhbmdlU3ludGF4RXJyb3Isc2VsZikuX19pbml0X18oa2luZCwgbWVzc2FnZSkKLQotCi1jbGFzcyBDb21tYW5kRGVzY3JpcHRpb25FcnJvcihDb21tYW5kRXJyb3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBjb21tYW5kID0gTm9uZSk6Ci0gICAgICAgIHNlbGYuY29tbWFuZCA9IE5vbmUKLSAgICAgICAga2luZCA9ICJCYWQgY29tbWFuZCBkZXNjcmlwdGlvbiIKLSAgICAgICAgaWYgY29tbWFuZDoKLSAgICAgICAgICAgIHNlbGYuY29tbWFuZCA9IGNvbW1hbmQKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gJzogJyArIGNvbW1hbmRbJ3NlbGYnXQotICAgICAgICBzdXBlcihDb21tYW5kRGVzY3JpcHRpb25FcnJvcixzZWxmKS5fX2luaXRfXyhraW5kLCBtZXNzYWdlKQotICAgIAotCi1jbGFzcyBDb21tYW5kQ29tcGxldGlvbkVycm9yKENvbW1hbmRFcnJvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICBraW5kID0gIkNvbW1hbmQgY29tcGxldGlvbiIKLSAgICAgICAgc3VwZXIoQ29tbWFuZENvbXBsZXRpb25FcnJvcixzZWxmKS5fX2luaXRfXyhraW5kLCBtZXNzYWdlKQotCi0KLWNsYXNzIENvbW1hbmRBbWJpZ3VvdXNFcnJvcihDb21tYW5kRXJyb3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlKToKLSAgICAgICAga2luZCA9ICJBbWJpZ3VvdXMgY29tbWFuZCIKLSAgICAgICAgc3VwZXIoQ29tbWFuZEFtYmlndW91c0Vycm9yLHNlbGYpLl9faW5pdF9fKGtpbmQsIG1lc3NhZ2UpCi0KLQotY2xhc3MgQ29tbWFuZE1pc3NpbmdFcnJvcihDb21tYW5kRXJyb3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlKToKLSAgICAgICAga2luZCA9ICJObyBzdWNoIGNvbW1hbmQiCi0gICAgICAgIHN1cGVyKENvbW1hbmRNaXNzaW5nRXJyb3Isc2VsZikuX19pbml0X18oa2luZCwgbWVzc2FnZSkKLQotCi1jbGFzcyBDb21tYW5kSW52b2NhdGlvbkVycm9yKENvbW1hbmRFcnJvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICBraW5kID0gIkludmFsaWQgY29tbWFuZCBpbnZvY2F0aW9uIgotICAgICAgICBzdXBlcihDb21tYW5kSW52b2NhdGlvbkVycm9yLHNlbGYpLl9faW5pdF9fKGtpbmQsIG1lc3NhZ2UpCi0KLQotY2xhc3MgQ29tbWFuZFNlbWFudGljRXJyb3IoQ29tbWFuZEVycm9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIGtpbmQgPSAiSW52YWxpZCBVc2UiCi0gICAgICAgIHN1cGVyKENvbW1hbmRTZW1hbnRpY0Vycm9yLHNlbGYpLl9faW5pdF9fKGtpbmQsIG1lc3NhZ2UpCi0KLQotY2xhc3MgQ29tbWFuZEludGVybmFsRXJyb3IoQ29tbWFuZEVycm9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIGtpbmQgPSAiSW50ZXJuYWwgKGJ1ZykiCi0gICAgICAgIHN1cGVyKENvbW1hbmRJbnRlcm5hbEVycm9yLHNlbGYpLl9faW5pdF9fKGtpbmQsIG1lc3NhZ2UpCi0KLQotY2xhc3MgQ29tbWFuZFJlc3RFcnJvcihDb21tYW5kRXJyb3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXN0X2luZm89Tm9uZSwgbWVzc2FnZT1Ob25lKToKLSAgICAgICAgcyA9ICdFcnJvcjogUkVTVCBBUEknCi0gICAgICAgIGlmIHJlc3RfaW5mbzoKLSAgICAgICAgICAgIGVycm9yX3R5cGUgPSByZXN0X2luZm8uZ2V0KCdlcnJvcl90eXBlJykKLSAgICAgICAgICAgIGlmIGVycm9yX3R5cGU6Ci0gICAgICAgICAgICAgICAgcyArPSAnOyB0eXBlID0gJyArIGVycm9yX3R5cGUKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gcmVzdF9pbmZvLmdldCgnZGVzY3JpcHRpb24nKQotICAgICAgICAgICAgaWYgZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgcyArPSAnOyAnICsgZGVzY3JpcHRpb24KLSAgICAgICAgaWYgbWVzc2FnZToKLSAgICAgICAgICAgIHMgKz0gJzogJyArIG1lc3NhZ2UKLSAgICAgICAgc3VwZXIoQ29tbWFuZFJlc3RFcnJvcixzZWxmKS5fX2luaXRfXygiUkVTVCIsIHMpCi0gICAgICAgIApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9leHRyYWN0X21vZGVsLnB5IGIvY2xpL2NsaS9leHRyYWN0X21vZGVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ODM4MzUyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZXh0cmFjdF9tb2RlbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotI2ltcG9ydCB0aW1lCi0KLWltcG9ydCBkYXRldGltZQotaW1wb3J0IGRqYW5nby5jb3JlLm1hbmFnZW1lbnQKLQotdHJ5OgotICAgIGltcG9ydCBzZXR0aW5ncyAjIEFzc3VtZWQgdG8gYmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGltcG9ydCBzeXMKLSAgICBzeXMuc3RkZXJyLndyaXRlKCJFcnJvcjogQ2FuJ3QgZmluZCB0aGUgZmlsZSAnc2V0dGluZ3MucHknIGluIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyAlci4gSXQgYXBwZWFycyB5b3UndmUgY3VzdG9taXplZCB0aGluZ3MuXG5Zb3UnbGwgaGF2ZSB0byBydW4gZGphbmdvLWFkbWluLnB5LCBwYXNzaW5nIGl0IHlvdXIgc2V0dGluZ3MgbW9kdWxlLlxuKElmIHRoZSBmaWxlIHNldHRpbmdzLnB5IGRvZXMgaW5kZWVkIGV4aXN0LCBpdCdzIGNhdXNpbmcgYW4gSW1wb3J0RXJyb3Igc29tZWhvdy4pXG4iICUgX19maWxlX18pCi0gICAgc3lzLmV4aXQoMSkKLQotZGphbmdvLmNvcmUubWFuYWdlbWVudC5zZXR1cF9lbnZpcm9uKHNldHRpbmdzKQotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi1mcm9tIGRqYW5nby5kYi5tb2RlbHMuZmllbGRzIGltcG9ydCBBdXRvRmllbGQsIEJvb2xlYW5GaWVsZCwgSW50ZWdlckZpZWxkCi1mcm9tIGRqYW5nby5kYi5tb2RlbHMuZmllbGRzLnJlbGF0ZWQgaW1wb3J0IEZvcmVpZ25LZXkKLQotaW1wb3J0IHNkbmNvbi5yZXN0LnZpZXdzCi0KLXByaW50ICIjIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gY29udHJvbGxlciBzb3VyY2UiCi1wcmludCAiIyB2aWEgdG9vbHMvZXh0cmFjdF9tb2RlbC5weSBkYXRlOiAgJXMiICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuY3RpbWUoKQotCi0jIHdlIGl0ZXJhdGUgb3ZlciByZXN0X25hbWVfZGljdCwgbGltaXRpbmcgQ0xJIGFjY2VzcyB0byB0aG9zZSBtb2RlbHMKLSMgYW5kIG1vZGVsIGZpZWxkcyBhY2Nlc3NpYmxlIHZpYSByZXN0Ci0KLXJlc3RfbWFwID0ge30KLWZvciAobW9kZWwsIG1vZGVsX2luZm8pIGluIHNkbmNvbi5yZXN0LnZpZXdzLnJlc3RfbW9kZWxfaW5mb19kaWN0Lml0ZW1zKCk6Ci0gICAgcmVzdF9tYXBbbW9kZWxdID0ge30KLSAgICBmb3IgKHJlc3RfZmllbGRfbmFtZSwgcmVzdF9maWVsZF9pbmZvKSBpbiBtb2RlbF9pbmZvLnJlc3RfbmFtZV9kaWN0Lml0ZW1zKCk6Ci0gICAgICAgIGRqYW5nb19maWVsZF9uYW1lID0gcmVzdF9maWVsZF9pbmZvLm5hbWUKLSAgICAgICAgcmVzdF9tYXBbbW9kZWxdW2RqYW5nb19maWVsZF9uYW1lXSA9IHJlc3RfZmllbGRfbmFtZQotCi1tb2RlbF9pbmZvX2RpY3QgPSB7fQotZm9yIChtb2RlbCwgbW9kZWxfaW5mbykgaW4gc2RuY29uLnJlc3Qudmlld3MucmVzdF9tb2RlbF9pbmZvX2RpY3QuaXRlbXMoKToKLSAgICBkamFuZ29fbW9kZWxfY2xhc3MgPSBtb2RlbF9pbmZvLm1vZGVsX2NsYXNzIAotICAgIGZpZWxkX2luZm9fZGljdCA9IHt9Ci0gICAgZm9yIChyZXN0X2ZpZWxkX25hbWUsIHJlc3RfZmllbGRfaW5mbykgaW4gbW9kZWxfaW5mby5yZXN0X25hbWVfZGljdC5pdGVtcygpOgotICAgICAgICBkamFuZ29fZmllbGRfbmFtZSA9IHJlc3RfZmllbGRfaW5mby5uYW1lCi0gICAgICAgIGRqYW5nb19maWVsZF9pbmZvID0gcmVzdF9maWVsZF9pbmZvLmRqYW5nb19maWVsZF9pbmZvCi0gICAgICAgICMgbm93IHRoYXQgd2UgaGF2ZSB0aGUgZGphbmdvIGluZm8gYW5kIG91ciBvd24gcmVzdCBpbmZvLCBjcmVhdGUgYSBmaWVsZCBpbmZvIHRvIGR1bXAKLSAgICAgICAganNvbl9zZXJpYWxpemVfc3RyaW5nID0gdHlwZShkamFuZ29fZmllbGRfaW5mbykgbm90IGluIChBdXRvRmllbGQsIEJvb2xlYW5GaWVsZCwgSW50ZWdlckZpZWxkKQotICAgICAgICBmaWVsZF9pbmZvID0ge30KLSAgICAgICAgZmllbGRfaW5mb1snanNvbl9zZXJpYWxpemVfc3RyaW5nJ10gPSBqc29uX3NlcmlhbGl6ZV9zdHJpbmcKLSAgICAgICAgaWYgZGphbmdvX2ZpZWxkX2luZm8udmVyYm9zZV9uYW1lICE9IGRqYW5nb19maWVsZF9uYW1lOgotICAgICAgICAgICAgIyBDaGVjayBpZiB0aGlzIGlzIGEgcHJveHkgY2xhc3MKLSAgICAgICAgICAgIGlmIHR5cGUoZGphbmdvX2ZpZWxkX2luZm8udmVyYm9zZV9uYW1lKSBpcyBzdHI6Ci0gICAgICAgICAgICAgICAgZmllbGRfaW5mb1sndmVyYm9zZS1uYW1lJ10gPSBkamFuZ29fZmllbGRfaW5mby52ZXJib3NlX25hbWUKLSAgICAgICAgaWYgZGphbmdvX2ZpZWxkX2luZm8ucHJpbWFyeV9rZXkgPT0gVHJ1ZToKLSAgICAgICAgICAgIGZpZWxkX2luZm9bJ3ByaW1hcnlfa2V5J10gPSBUcnVlCi0gICAgICAgIGlmIGRqYW5nb19maWVsZF9pbmZvLmhlbHBfdGV4dCAhPSAiIjoKLSAgICAgICAgICAgIGZpZWxkX2luZm9bJ2hlbHBfdGV4dCddID0gZGphbmdvX2ZpZWxkX2luZm8uaGVscF90ZXh0Ci0gICAgICAgIGZpZWxkX2luZm9bJ251bGwnXSA9IGRqYW5nb19maWVsZF9pbmZvLm51bGwKLSAgICAgICAgaWYgdHlwZShkamFuZ29fZmllbGRfaW5mby5kZWZhdWx0KSBpbiBbaW50LCBib29sLCBzdHJdOgotICAgICAgICAgICAgZmllbGRfaW5mb1snZGVmYXVsdCddID0gZGphbmdvX2ZpZWxkX2luZm8uZGVmYXVsdAotICAgICAgICBmaWVsZF9pbmZvWyd0eXBlJ10gPSBzdHIodHlwZShkamFuZ29fZmllbGRfaW5mbykpLnNwbGl0KCcuJylbLTFdLnJlcGxhY2UoIic+IiwgIiIpCi0gICAgICAgIGlmIGZpZWxkX2luZm9bJ3R5cGUnXSA9PSAnQXV0b0ZpZWxkJzoKLSAgICAgICAgICAgICMgUmUtbGFiZWwgdGhlIGNhc3NhbmRyYSBjb21wb3VuZCBrZXkgZm9yIGVhc2llciBjb25zdW1wdGlvbgotICAgICAgICAgICAgaWYgaGFzYXR0cihkamFuZ29fbW9kZWxfY2xhc3MsICdDYXNzYW5kcmFTZXR0aW5ncycpOgotICAgICAgICAgICAgICAgIGNhc3NhbmRyYV9zZXR0aW5ncyA9IGRqYW5nb19tb2RlbF9jbGFzcy5DYXNzYW5kcmFTZXR0aW5ncwotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoY2Fzc2FuZHJhX3NldHRpbmdzLCAnQ09NUE9VTkRfS0VZX0ZJRUxEUycpOgotICAgICAgICAgICAgICAgICAgICBjb21wb3VuZF9rZXlfZmllbGRzID0gY2Fzc2FuZHJhX3NldHRpbmdzLkNPTVBPVU5EX0tFWV9GSUVMRFMKLSAgICAgICAgICAgICAgICAgICAgcmVzdF9rZXlfZmllbGRzID0gW3Jlc3RfbWFwW21vZGVsXS5nZXQoeCwgeCkgZm9yIHggaW4gY29tcG91bmRfa2V5X2ZpZWxkc10KLSAgICAgICAgICAgICAgICAgICAgZmllbGRfaW5mb1snY29tcG91bmRfa2V5X2ZpZWxkcyddID0gcmVzdF9rZXlfZmllbGRzCi0gICAgICAgICAgICAgICAgICAgIGZpZWxkX2luZm9bJ3R5cGUnXSA9ICdjb21wb3VuZC1rZXknCi0gICAgICAgICAgICAgICAgICAgIGZpZWxkX2luZm9bJ2hlbHBfdGV4dCddID0gJyN8JXMnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd8Jy5qb2luKHJlc3Rfa2V5X2ZpZWxkcykKLSAgICAgICAgaWYgZmllbGRfaW5mb1sndHlwZSddID09ICdGb3JlaWduS2V5JzoKLSAgICAgICAgICAgIG90aGVyX29iamVjdCA9IGRqYW5nb19maWVsZF9pbmZvLnJlbC50by5SZXN0Lk5BTUUKLSAgICAgICAgICAgIGlmIGRqYW5nb19maWVsZF9pbmZvLnJlbC5maWVsZF9uYW1lIGluIHJlc3RfbWFwW290aGVyX29iamVjdF06Ci0gICAgICAgICAgICAgICAgZmllbGRfaW5mb1sncmVsX2ZpZWxkX25hbWUnXSA9IFwKLSAgICAgICAgICAgICAgICAgICAgcmVzdF9tYXBbb3RoZXJfb2JqZWN0XVtkamFuZ29fZmllbGRfaW5mby5yZWwuZmllbGRfbmFtZV0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmllbGRfaW5mb1sncmVsX2ZpZWxkX25hbWUnXSA9IGRqYW5nb19maWVsZF9pbmZvLnJlbC5maWVsZF9uYW1lCi0gICAgICAgICAgICBmaWVsZF9pbmZvWydyZWxfb2JqX3R5cGUnXSA9IGRqYW5nb19maWVsZF9pbmZvLnJlbC50by5SZXN0Lk5BTUUKLSAgICAgICAgaWYgZmllbGRfaW5mb1sndHlwZSddID09ICdDaGFyRmllbGQnOgotICAgICAgICAgICAgZmllbGRfaW5mb1snbWF4X2xlbmd0aCddID0gZGphbmdvX2ZpZWxkX2luZm8ubWF4X2xlbmd0aAotICAgICAgICAjaWYgZGphbmdvX2ZpZWxkX2luZm8udmFsaWRhdG9yczoKLSAgICAgICAgICAgICNmaWVsZF9pbmZvWyd2YWxpZGF0b3JzJ10gPSBkamFuZ29fZmllbGRfaW5mby52YWxpZGF0b3JzCi0gICAgICAgICNpZiBpc2luc3RhbmNlKHR5cGUsIGRqYW5nby5Qb3NpdGl2ZUludGVnZXJGaWVsZCk6Ci0gICAgICAgICAgICAjdHlwZV9uYW1lID0gJ1Bvc2l0aXZlSW50ZWdlckZpZWxkJwotICAgICAgICAgICAgI3ByaW50IHR5cGVfbmFtZQotCi0gICAgICAgIGZpZWxkX2luZm9fZGljdFtyZXN0X2ZpZWxkX25hbWVdID0gZmllbGRfaW5mbwotICAgIG1vZGVsX2luZm9fZGljdFttb2RlbF09eydmaWVsZHMnOmZpZWxkX2luZm9fZGljdCwgJ2hhc19yZXN0X21vZGVsJzogVHJ1ZX0KLQotaW1wb3J0IHBwcmludAotcHAgPSBwcHJpbnQuUHJldHR5UHJpbnRlcihpbmRlbnQ9MikKLXByaW50ICJtb2RlbF9pbmZvX2RpY3QgPSAiLHBwLnBwcmludChtb2RlbF9pbmZvX2RpY3QpCmRpZmYgLS1naXQgYS9jbGkvY2xpL2ZtdGNudi5weSBiL2NsaS9jbGkvZm10Y252LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODVkYmY0Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvZm10Y252LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMyNiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jICBzZG5zaCAtIFRoZSBDb250cm9sbGVyIFNoZWxsCi0KLWltcG9ydCB1cmxsaWIKLWltcG9ydCB1cmxsaWIyCi0KLWltcG9ydCBiYXNlNjQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCB0aW1lCi1pbXBvcnQgcmUKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEsIHR6aW5mbwotZnJvbSBjYWxlbmRhciBpbXBvcnQgdGltZWdtCi1mcm9tIHRpbWVzaW5jZSBpbXBvcnQgdGltZXNpbmNlLCB0aW1lc2luY2Vfc2VjCi1pbXBvcnQgZG9jdGVzdAotaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHV0aWYKLWltcG9ydCBjb21tYW5kCi1pbXBvcnQganNvbgotCi0KLSMgVGltZXpvbmUgY29uc3RhbnRzCi1jbGFzcyBVdGModHppbmZvKToKLSAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIHRpbWVkZWx0YSgwKQotICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gIlVUQyIKLSAgICBkZWYgZHN0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIHRpbWVkZWx0YSgwKQotVVRDID0gVXRjKCkKLQotCi1jbGFzcyBQc3QodHppbmZvKToKLSAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIHRpbWVkZWx0YSgwLDAsMCwwLDAsLTgpCi0gICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiAiUFNUIgotICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gdGltZWRlbHRhKDAsMCwwLDAsMCwtNykKLVBTVCA9IFBzdCgpCi0KLQotYWxpYXNfZGljdHMgPSB7fQotCi0KLWRlZiBnZXRfc3dpdGNoZXNfbmFtZXMob2JqZWN0LCBkYXRhID1Ob25lKToKLSAgICAiIiIKLSAgICByZXR1cm4gdGhlIHN3aXRjaGVzIG5hbWUgKGZvciBPTk9TKQotICAgICIiIgotICAgIHN3aXRjaGVzX2RwaWRfbmFtZSA9e30KLSAgICB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc3QvdjEvc3dpdGNoZXMiCi0gICAgcmVzdWx0ID0gdXJsbGliMi51cmxvcGVuKHVybCkucmVhZCgpCi0gICAgI3Jlc3VsdCA9IGNvbW1hbmQuc2Ruc2guc3RvcmUucmVzdF9zaW1wbGVfcmVxdWVzdChxdWVyeV91cmwpCi0gICAgZW50cmllcyA9IHJlc3VsdAotICAgIGVudHJpZXMgPSBqc29uLmxvYWRzKHJlc3VsdCkKLSAgICAjZXByaW50IGVudHJpZXMKLSAgICBmb3Igc3dpdGNoIGluIGVudHJpZXM6Ci0gICAgICAgICNwcmludCBzd2l0Y2gKLSAgICAgICAgc3dpdGNoZXNfZHBpZF9uYW1lW3N3aXRjaC5nZXQoImRwaWQiKV0gPSBzd2l0Y2guZ2V0KCJzdHJpbmdBdHRyaWJ1dGVzIikuZ2V0KCduYW1lJykKLSAgICAgICAgI3ByaW50IHN3aXRjaC5nZXQoImRwaWQiKQotICAgICAgICAjcHJpbnQgc3dpdGNoLmdldCgic3RyaW5nQXR0cmlidXRlcyIpLmdldCgnbmFtZScpCi0gICAgcmV0dXJuIHN3aXRjaGVzX2RwaWRfbmFtZQotCi0KLWRlZiB1cGRhdGVfYWxpYXNfZGljdChvYmpfdHlwZSwgZGljdCk6Ci0gICAgIiIiCi0gICAgVXBkYXRlIGFsaWFzIGRpY3Rpb25hcmllczogZm9yIHN3aXRjaCwgaG9zdCwgZXRjLgotICAgICIiIgotICAgIGdsb2JhbCBhbGlhc19kaWN0cwotICAgIGFsaWFzX2RpY3RzW29ial90eXBlXSA9IGRpY3QKLQotCi1kZWYgY29udmVydF9tYWNfaW5fYmFzZTY0X2J5dGVfYXJyYXlfdG9faGV4X3N0cmluZyhpLCBkYXRhPU5vbmUpOgotICAgICMgaG1tbSAtIHRhc3R5IHB5dGhvbgotICAgIGlmIGkgPT0gIioiIG9yIGkgPT0gIiI6IAotICAgICAgICByZXR1cm4gIioiCi0gICAgcmV0dXJuICI6Ii5qb2luKFsiJTAuMngiICUgeCBmb3IgeCBpbiBzdHJ1Y3QudW5wYWNrKCdCQkJCQkInLCBiYXNlNjQuYjY0ZGVjb2RlKGkpKV0pCi0KLQotZGVmIGNvbnZlcnRfbWFjX2luX2RlY2ltYWxfdG9faGV4X3N0cmluZyhpLCBkYXRhPU5vbmUpOgotICAgIGlmIGkgPT0gIioiIG9yIGkgPT0gIiI6Ci0gICAgICAgIHJldHVybiAiKiIKLSAgICBtYWMgPSBoZXgoaSkKLSAgICAjIHNvbWUgcHl0aG9uIGltcGxlbWVudGF0aW9ucyBhcHBlbmQgJ0wnIHRvIGhleCgpIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIGl0Ci0gICAgaWYgbWFjW2xlbihtYWMpLTFdID09ICdMJzoKLSAgICAgICAgbWFjID0gbWFjWzpsZW4obWFjKS0xXQotICAgIG1hYyA9ICgnMCcgKiAoMTQgLSBsZW4obWFjKSkgKyBtYWNbMjpdKQotICAgIHJldHVybiAnOicuam9pbihbbWFjW3g6eCsyXSBmb3IgeCBpbiB4cmFuZ2UoMCwgbGVuKG1hYyksIDIpXSkKLQotCi1kZWYgY29udmVydF9pcF9pbl9pbnRlZ2VyX3RvX2RvdHRlZF9kZWNpbWFsKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSA9PSAiKiIgb3IgaSA9PSAiIjogCi0gICAgICAgIHJldHVybiAiKiIKLSAgICByZXR1cm4gJy4nLmpvaW4ocmV2ZXJzZWQoWyAoc3RyKChpID4+ICg4KngpKSAmIDB4ZmYpKSBmb3IgeCBpbiByYW5nZSgwLDQpXSkpCi0KLQotZGVmIGNvbnZlcnRfaW50ZWdlcl90b19iaXRtYXNrKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSA9PSAiKiIgb3IgaSA9PSAiIjogCi0gICAgICAgIHJldHVybiAiKiIKLSAgICByZXR1cm4gYmluKGkpCi0KLQotZGVmIGNvbnZlcnRfbG9uZ190b19kcGlkKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSA9PSAiKiIgb3IgaSA9PSAiIjogCi0gICAgICAgIHJldHVybiAiKiIKLSAgICBpID0gaW50KGkpCi0gICAgcmV0dXJuICc6Jy5qb2luKHJldmVyc2VkKFsgIiUtLjJ4IiAlICgoaSA+PiAoOCp4KSkgJiAweGZmKSBmb3IgeCBpbiByYW5nZSgwLDgpXSkpCi0KLQotZGVmIGNvbnZlcnRfc2lnbmVkX3Nob3J0X3RvX3Vuc2lnbmVkKGksIGRhdGE9Tm9uZSk6Ci0gICAgdHJ5OgotICAgICAgICBpID0gaW50KGkpCi0gICAgZXhjZXB0OgotICAgICAgICByZXR1cm4gaQotCi0gICAgaWYgaSA8IDA6IAotICAgICAgICByZXR1cm4gaSArIDIqKjE2Ci0gICAgZWxzZTogCi0gICAgICAgIHJldHVybiBpCi0KLQotZGVmIGNvbnZlcnRfc2lnbmVkX3Nob3J0X2Zvcl92bGFuKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSA9PSAtMToKLSAgICAgICAgcmV0dXJuICItIgotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0X3NpZ25lZF9zaG9ydF90b191bnNpZ25lZChpLCBkYXRhKQotCi0KLWRlZiBjb252ZXJ0X3RvX3N0cmluZyhpLCBkYXRhPU5vbmUpOgotICAgIGlmIHR5cGUoaSkgPT0gbGlzdDoKLSAgICAgICAgcmV0dXJuICcsICcuam9pbihpKQotICAgIGVsaWYgdHlwZShpKSA9PSBkaWN0OgotICAgICAgICByZXR1cm4gJywgJy5qb2luKFsiJXM6JXMiICUgeCBmb3IgeCBpbiBpLmRpY3QoKV0pCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHN0cihpKQotCi0KLWRlZiBwcmludF9oZXgoaSwgZGF0YT1Ob25lKToKLSAgICBpZiBpID09ICIiIG9yIG5vdCBpbnQoaSk6IAotICAgICAgICByZXR1cm4gIiIKLSAgICBlbHNlOiAKLSAgICAgICAgcmV0dXJuIGhleChpKQotCi0KLWRlZiB0aW1lc3RhbXBfdG9fbG9jYWxfdGltZXN0cihpLCBkYXRhPU5vbmUpOgotICAgIGlmIGkgPT0gJyc6Ci0gICAgICAgIHJldHVybiAnJwotICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyAlWiIsIHRpbWUubG9jYWx0aW1lKGkvMTAwMCkpCi0KLQotZGVmIHV0Y190aW1lc3RyX3RvX3RpbWVzdGFtcChzKToKLSAgICByZXR1cm4gdGltZWdtKHRpbWUuc3RycHRpbWUocywgIiVZLSVtLSVkICVIOiVNOiVTLiVmIikpICogMTAwMAotCi0KLWRlZiBwcmludF9mcm9tX3V0Y190aW1lc3RyKHMsIGRhdGE9Tm9uZSk6Ci0gICAgIiIiQ29udmVydHMgZnJvbSBhIFVUQyB0aW1lIHN0cmluZyBsaWtlIDIwMTAtMTItMTIgMTU6Mjc6NDEuNjUwMDAwCi0gICAgdG8gdGltZSBzdHJpbmcgaW4gbG9jYWwgdGltZXpvbmUgbGlrZSAyMDExLTA2LTIzIDAyOjUxOjQxIFBEVAotCi0gICAgIyBEb2N0ZXN0IG9ubHkgdmFsaWQgaW4gUGFjaWZpYyBUaW1lIDstfAotICAgID4+PiBwcmludF9mcm9tX3V0Y190aW1lc3RyKCcyMDEwLTEyLTEyIDE1OjI3OjQxLjY1MDAwMCcpCi0gICAgJzIwMTAtMTItMTIgMDc6Mjc6NDEgUFNUJwotICAgID4+PiBwcmludF9mcm9tX3V0Y190aW1lc3RyKCcyMDEwLTA2LTEyIDE1OjI3OjQxLjY1MDAwMCcpCi0gICAgJzIwMTAtMDYtMTIgMDg6Mjc6NDEgUERUJwotICAgID4+PiBwcmludF9mcm9tX3V0Y190aW1lc3RyKCcnKQotICAgICcnCi0gICAgPj4+IHByaW50X2Zyb21fdXRjX3RpbWVzdHIoTm9uZSkKLSAgICAnJwotICAgID4+PiBwcmludF9mcm9tX3V0Y190aW1lc3RyKCdOb3QgYSB2YWxpZCB0aW1lc3RhbXAnKQotICAgICcnCi0gICAgIiIiCi0gICAgcmV0ID0gJycKLSAgICB0cnk6Ci0gICAgICAgIHJldCA9IHRpbWVzdGFtcF90b19sb2NhbF90aW1lc3RyKHV0Y190aW1lc3RyX3RvX3RpbWVzdGFtcChzKSkKLSAgICBleGNlcHQ6Ci0gICAgICAgIHBhc3MKLSAgICByZXR1cm4gcmV0Ci0KLQotZGVmIHByaW50X3RpbWVfc2luY2VfdXRjKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSA9PSBOb25lIG9yIGkgPT0gJyc6Ci0gICAgICAgIHJldHVybiAnJwotICAgIHJldHVybiB0aW1lc2luY2UoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgoaS8xMDAwKSkpCi0KLQotZGVmIHByaW50X3RpbWVfc2luY2VfdXRjX3RpbWVzdHIocywgZGF0YT1Ob25lLCBub3c9Tm9uZSk6Ci0gICAgIiIiQ29udmVydHMgZnJvbSBhIFVUQyB0aW1lIHN0cmluZyBsaWtlIDIwMTAtMTItMTIgMTU6Mjc6NDEuNjUwMDAKLSAgICB0byBodW1hbiByZWFkYWJlbCBzdHJpbmcgbGlrZSAnTGFzdCBzZWVuIDQgbWludXRlcyBhZ28nCi0KLSAgICA+Pj4gbm93ID0gZGF0ZXRpbWUoKih0aW1lLnN0cnB0aW1lKCcyMDEwLTEyLTEyIDE1OjI3OjQxLjY1MDAwMCcsICIlWS0lbS0lZCAlSDolTTolUy4lZiIpWzA6Nl0rKDAsIFBTVCkpKQotICAgID4+PiBwcmludF90aW1lX3NpbmNlX3V0Y190aW1lc3RyKCcyMDEwLTEyLTEyIDE1OjI3OjQxLjY1MDAwMCcsIG5vdz1ub3cpCi0gICAgJzggaG91cnMnCi0gICAgPj4+IHByaW50X3RpbWVfc2luY2VfdXRjX3RpbWVzdHIoJycpCi0gICAgJycKLSAgICA+Pj4gcHJpbnRfdGltZV9zaW5jZV91dGNfdGltZXN0cihOb25lKQotICAgICcnCi0gICAgPj4+IHByaW50X3RpbWVfc2luY2VfdXRjX3RpbWVzdHIoJ05vdCBhIHZhbGlkIHRpbWVzdGFtcCcpCi0gICAgJycKLSAgICAiIiIKLSAgICByZXQgPSAnJwotICAgIGlmIHMgPT0gJyc6Ci0gICAgICAgIHJldHVybiAnJwotICAgIHRyeToKLSAgICAgICAgZGF0ZV9vYmogPSBkYXRldGltZSgqKHRpbWUuc3RycHRpbWUocywgIiVZLSVtLSVkICVIOiVNOiVTLiVmIilbMDo2XSArICgwLCBVVEMpKSkKLSAgICAgICAgcmV0ID0gdGltZXNpbmNlKGRhdGVfb2JqLCBub3cpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGF0ZV9vYmogPSBkYXRldGltZSgqKHRpbWUuc3RycHRpbWUocywgIiVZLSVtLSVkICVIOiVNOiVTIilbMDo2XSArICgwLCBVVEMpKSkKLSAgICAgICAgICAgIHJldCA9IHRpbWVzaW5jZShkYXRlX29iaiwgbm93KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRhdGVfb2JqID0gZGF0ZXRpbWUoKih0aW1lLnN0cnB0aW1lKHMsICIlWS0lbS0lZFQlSDolTTolUy4lZloiKVswOjZdICsgKDAsIFVUQykpKQotICAgICAgICAgICAgICAgIHJldCA9IHRpbWVzaW5jZShkYXRlX29iaiwgbm93KQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICByZXQgPSAiPGZhaWw+IgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICByZXR1cm4gcmV0Ci0KLQotZGVmIHByaW50X3RpbWVzaW5jZV9tc2VjX3NpbmNlKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSA9PSAnJzoKLSAgICAgICAgcmV0dXJuIGkKLSAgICByZXR1cm4gdGltZXNpbmNlX3NlYyhpbnQoaSkvMTAwMCkKLQotZGVmIHByaW50X2VudW1fc3RyaW5nX2FuZF9pbnQodmFsdWVzLCBpLCBub3RfZm91bmRfdmFsID0gTm9uZSk6Ci0gICAgaWYgdmFsdWVzIGFuZCBpIGluIHZhbHVlczoKLSAgICAgICAgcmV0dXJuICIlcyglcykiICUgKHZhbHVlc1tpXSwgaSkKLSAgICBlbHNlOgotICAgICAgICBpZiBub3RfZm91bmRfdmFsOgotICAgICAgICAgICAgcmV0dXJuIG5vdF9mb3VuZF92YWwKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBpCi0KLQotZGVmIHByaW50X2VudW1fc3RyaW5nX2FuZF9oZXhfaW50KHZhbHVlcywgaSwgbm90X2ZvdW5kX3ZhbCA9IE5vbmUpOgotICAgIGlmIHZhbHVlcyBhbmQgaSBpbiB2YWx1ZXM6Ci0gICAgICAgIHJldHVybiAiJXMoJSN4KSIgJSAodmFsdWVzW2ldLCBpbnQoaSkpCi0gICAgZWxzZToKLSAgICAgICAgaWYgbm90X2ZvdW5kX3ZhbDoKLSAgICAgICAgICAgIHJldHVybiBub3RfZm91bmRfdmFsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gaQotCi0KLWRlZiBwcmludF9tYXNrX2VudW1fc3RyaW5nX2FuZF9pbnQodmFsdWVzLCBiaXRzKToKLSAgICBpZiBiaXRzID09ICIiOiAKLSAgICAgICAgcmV0dXJuIGJpdHMKLSAgICBiaXRzX2NvcHkgPSBiaXRzCi0gICAgZW51bXMgPSBbXQotICAgIGJpdF90ZXN0ID0gMQotICAgIHdoaWxlIGJpdHNfY29weToKLSAgICAgICAgaWYgYml0X3Rlc3QgJiBiaXRzX2NvcHk6Ci0gICAgICAgICAgICBpZiBiaXRfdGVzdCBpbiB2YWx1ZXM6Ci0gICAgICAgICAgICAgICAgZW51bXMuYXBwZW5kKHZhbHVlc1tiaXRfdGVzdF0pCi0gICAgICAgICAgICBiaXRzX2NvcHkgJj0gYml0c19jb3B5LTEKLSAgICAgICAgYml0X3Rlc3QgPDw9IDEKLSAgICBpZiBlbnVtczoKLSAgICAgICAgcmV0dXJuICIsIi5qb2luKGVudW1zKSArICIoJXMpIiAlIChoZXgoYml0cykgaWYgYml0cyA+IDkgZWxzZSBiaXRzKQotICAgIGVsc2U6Ci0gICAgICAgIGlmIGJpdHMgPiA5OgotICAgICAgICAgICAgcmV0dXJuIGhleChpbnQoYml0cykpCi0gICAgICAgIHJldHVybiAiMCIKLQotCi1kZWYgcHJpbnRfcGh5c2ljYWxfcG9ydChpLCBkYXRhPU5vbmUsIHN3aXRjaF9rZXk9Tm9uZSk6Ci0gICAgZ2xvYmFsIGFsaWFzX2RpY3RzCi0KLSAgICBpZiBub3QgZGF0YToKLSAgICAgICAgcmV0dXJuIHN0cihpKQotICAgIG5hbWVfZGljdCA9IGFsaWFzX2RpY3RzLmdldCgicG9ydE5hbWVzIikKLSAgICBpZiBub3QgbmFtZV9kaWN0OgotICAgICAgICByZXR1cm4gc3RyKGkpCi0gICAgaWYgc3dpdGNoX2tleToKLSAgICAgICAga2V5X3N0cmluZyA9IGRhdGFbc3dpdGNoX2tleV0gKyAnLicgKyAiJWQiICUgaQotICAgIGVsaWYgJ3N3aXRjaCcgaW4gZGF0YToKLSAgICAgICAga2V5X3N0cmluZyA9IGRhdGFbJ3N3aXRjaCddICsgJy4nICsgIiVkIiAlIGkKLSAgICBlbGlmICdTd2l0Y2gnIGluIGRhdGE6Ci0gICAgICAgIGtleV9zdHJpbmcgPSBkYXRhWydTd2l0Y2gnXSArICcuJyArICIlZCIgJSBpCi0gICAgIyByZXR1cm4gdGhlIHBoeXNpY2FsIG5hbWUgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgaQotICAgIHJldHVybiBzdHIobmFtZV9kaWN0LmdldChrZXlfc3RyaW5nLCBpKSkKLQotCi1kZWYgcHJpbnRfYnl0ZV91bml0KGksIGRhdGE9Tm9uZSwgc3VmZml4PU5vbmUpOgotICAgICIiIgotICAgIENvbnZlcnQgdGhlIHZhbHVlIG9mICdpJyBpbnRvIGEgYnl0ZSByYXRlIHZhbHVlLAotICAgIGZvciBleGFtcGxlICcxMCBHQicKLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIHZhbHVlID0gaW50KGkpCi0gICAgZXhjZXB0OgotICAgICAgICBpZiBpID09ICcnOgotICAgICAgICAgICAgcmV0dXJuICdVbmtub3duJwotICAgICAgICByZXR1cm4gaQotCi0gICAgY29udmVydGVyID0gKAotICAgICAgICAgICAgICAgICAgICAoMTAyNCAqIDEwMjggKiAxMDI0ICogMTAyNCAqIDEwMjQgLCAnIFBCJyksCi0gICAgICAgICAgICAgICAgICAgICgxMDI0ICogMTAyOCAqIDEwMjQgKiAxMDI0ICwgICAgICAgICcgVEInKSwKLSAgICAgICAgICAgICAgICAgICAgKDEwMjQgKiAxMDI4ICogMTAyNCAsICAgICAgICAgICAgICAgJyBHQicpLAotICAgICAgICAgICAgICAgICAgICAoMTAyOCAqIDEwMjQgLCAgICAgICAgICAgICAgICAgICAgICAnIE1CJyksCi0gICAgICAgICAgICAgICAgICAgICgxMDI0ICwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgS0InKSwKLSAgICAgICAgICAgICAgICApCi0gICAgaWYgc3VmZml4ID09IE5vbmU6Ci0gICAgICAgIHN1ZmZpeCA9ICcnCi0KLSAgICBmb3IgaWR4LCAoYm91bmRhcnksIG5hbWUpIGluIGVudW1lcmF0ZShjb252ZXJ0ZXIpOgotICAgICAgICB2YWx1ZSA9IGkgLyBib3VuZGFyeQotICAgICAgICBpZiB2YWx1ZToKLSAgICAgICAgICAgIHJldHVybiAnJXMlcyVzJyAlICh2YWx1ZSwgbmFtZSwgc3VmZml4KQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnJXMgQiVzJyAlIChpLCBzdWZmaXgpCi0KLWRlZiBwcmludF9ieXRlX3JhdGUoaSwgZGF0YT1Ob25lKToKLSAgICByZXR1cm4gcHJpbnRfYnl0ZV91bml0KGksIGRhdGEsICdwcycpCi0KLWRlZiBwcmludF9iaXRfdW5pdChpLCBkYXRhPU5vbmUsIHN1ZmZpeD1Ob25lKToKLSAgICAiIiIKLSAgICBDb252ZXJ0IHRoZSB2YWx1ZSBvZiAnaScgaW50byBhIGJpdCByYXRlIHZhbHVlLAotICAgIGZvciBleGFtcGxlICcxMCBHYicKLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIHZhbHVlID0gaW50KGkpCi0gICAgZXhjZXB0OgotICAgICAgICBpZiBpID09ICcnOgotICAgICAgICAgICAgcmV0dXJuICdVbmtub3duJwotICAgICAgICByZXR1cm4gaQotCi0gICAgY29udmVydGVyID0gKAotICAgICAgICAgICAgICAgICAgICAoMTAwMCAqIDEwMDAgKiAxMDAwICogMTAwMCAqIDEwMDAgLCAnIFBiJyksCi0gICAgICAgICAgICAgICAgICAgICgxMDAwICogMTAwMCAqIDEwMDAgKiAxMDAwICwgICAgICAgICcgVGInKSwKLSAgICAgICAgICAgICAgICAgICAgKDEwMDAgKiAxMDAwICogMTAwMCAsICAgICAgICAgICAgICAgJyBHYicpLAotICAgICAgICAgICAgICAgICAgICAoMTAwMCAqIDEwMDAgLCAgICAgICAgICAgICAgICAgICAgICAnIE1iJyksCi0gICAgICAgICAgICAgICAgICAgICgxMDAwICwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgS2InKSwKLSAgICAgICAgICAgICAgICApCi0gICAgaWYgc3VmZml4ID09IE5vbmU6Ci0gICAgICAgIHN1ZmZpeCA9ICcnCi0KLSAgICBmb3IgaWR4LCAoYm91bmRhcnksIG5hbWUpIGluIGVudW1lcmF0ZShjb252ZXJ0ZXIpOgotICAgICAgICB2YWx1ZSA9IGkgLyBib3VuZGFyeQotICAgICAgICBpZiB2YWx1ZToKLSAgICAgICAgICAgIHJldHVybiAnJXMlcyVzJyAlICh2YWx1ZSwgbmFtZSwgc3VmZml4KQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnJXMgYiVzJyAlIChpLCBzdWZmaXgpCi0KLWRlZiBwcmludF9iaXRfcmF0ZShpLCBkYXRhPU5vbmUpOgotICAgIHJldHVybiBwcmludF9iaXRfdW5pdChpLCBkYXRhLCAncHMnKQotCi0KLWRlZiBkZWNvZGVfb3BlbmZsb3dfcG9ydChpLCBkYXRhPU5vbmUsIHN3aXRjaF9rZXk9Tm9uZSk6Ci0gICAgaWYgaSA9PSAiKiIgb3IgaSA9PSAiIjogCi0gICAgICAgIHJldHVybiAiKiIKLSAgICAjIElmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHBvcnQgbmFtZSBpcyBhIHBsdXMgc2lnbiAoJysnKQotICAgICMgdGhpcyBpcyBpbnRlbmRlZCB0byBieXBhc3MgYW55IGxvb2t1cCAtLSBpdHMgYSB3YXkgdG8gaW5kaWNhdGUKLSAgICAjIHRoZSBmaWVsZCBpcyBhbHJlYWR5IGFuIG9wZW5mbG93IGludGVyZmFjZS4KLSAgICBpZiBpc2luc3RhbmNlKGksIHVuaWNvZGUpIGFuZCAgaVswXSA9PSAnKyc6Ci0gICAgICAgIHJldHVybiBpWzE6XQotICAgIGkgPSBjb252ZXJ0X3NpZ25lZF9zaG9ydF90b191bnNpZ25lZChpKQotICAgIGkgJj0gMHhmZmZmCi0gICAgdmFsdWVzID0geyAKLSAgICAgICAgMHhmZmY4IDogImlucHV0IiwKLSAgICAgICAgMHhmZmY5IDogInRhYmxlIiwKLSAgICAgICAgMHhmZmZhIDogIm5vcm1hbCIsCi0gICAgICAgIDB4ZmZmYiA6ICJmbG9vZCIsCi0gICAgICAgIDB4ZmZmYyA6ICJhbGwiLAotICAgICAgICAweGZmZmQgOiAiY29udHJvbGxlciIsCi0gICAgICAgIDB4ZmZmZSA6ICJsb2NhbCIsCi0gICAgICAgIDB4ZmZmZiA6ICJub25lIiwKLSAgICAgICAgfQotICAgIGlmIGkgPj0gMHhmZjAwOgotICAgICAgICBpZiBpIGluIHZhbHVlczoKLSAgICAgICAgICAgIHJldHVybiAiJXMgKCVzKSIgJSAoaSwgdmFsdWVzW2ldKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICIlcyIgJSB2YWx1ZXNbaV0KLSAgICBwaHlzX3BvcnQgPSBwcmludF9waHlzaWNhbF9wb3J0KGksIGRhdGEsIHN3aXRjaF9rZXkpCi0gICAgaWYgc3RyKGkpICE9IHBoeXNfcG9ydDoKLSAgICAgICAgcmV0dXJuIHN0cihpKSArICcgKCcgKyBwaHlzX3BvcnQgKyAnKScKLSAgICByZXR1cm4gc3RyKGkpCi0KLQotZGVmIGRlY29kZV9vcGVuZmxvd19wb3J0X3NyY19zd2l0Y2goaSwgZGF0YT1Ob25lKToKLSAgICByZXR1cm4gZGVjb2RlX29wZW5mbG93X3BvcnQoaSwgZGF0YSwgJ3NyYy1zd2l0Y2gnKQotCi0KLWRlZiBkZWNvZGVfb3BlbmZsb3dfcG9ydF9zb3VyY2Vfc3dpdGNoKGksIGRhdGE9Tm9uZSk6Ci0gICAgcmV0dXJuIGRlY29kZV9vcGVuZmxvd19wb3J0KGksIGRhdGEsICdTb3VyY2UtU3dpdGNoJykKLQotCi1kZWYgZGVjb2RlX29wZW5mbG93X3BvcnRfZHN0X3N3aXRjaChpLCBkYXRhPU5vbmUpOgotICAgIHJldHVybiBkZWNvZGVfb3BlbmZsb3dfcG9ydChpLCBkYXRhLCAnZHN0LXN3aXRjaCcpCi0KLQotZGVmIGRlY29kZV9vcGVuZmxvd19wb3J0X2Rlc3Rfc3dpdGNoKGksIGRhdGE9Tm9uZSk6Ci0gICAgcmV0dXJuIGRlY29kZV9vcGVuZmxvd19wb3J0KGksIGRhdGEsICdEZXN0LVN3aXRjaCcpCi0KLQotZGVmIGRlY29kZV9vcGVuZmxvd19wb3J0X2lucHV0U3dpdGNoKGksIGRhdGE9Tm9uZSk6Ci0gICAgcmV0dXJuIGRlY29kZV9vcGVuZmxvd19wb3J0KGksIGRhdGEsICdpbnB1dFN3aXRjaCcpCi0KLQotZGVmIGRlY29kZV9vcGVuZmxvd19wb3J0X2RwaWQoaSwgZGF0YT1Ob25lKToKLSAgICByZXR1cm4gZGVjb2RlX29wZW5mbG93X3BvcnQoaSwgZGF0YSwgJ2RwaWQnKQotCi0KLSMgd2VsbCBrbm93biBjb29raWUgaWQncyBtYW5hZ2VkIGRpcmVjdGx5LCBvdGhlcidzIGNhbiBiZSByZWdpc3RlcmVkCi1jb29raWVfYXBwX2lkcyA9IHsKLSAgICAxOiAibHN3aXRjaCIsCi0gICAgMjogIkZMOmZvcnciLAotICAgIDM6ICJUVU46Zm9ydyIsCi0gICAgNDogIlZUQTpmb3J3IiwKLSAgIDEwOiAic3RhdGljIiwKLX0KLQotZmxvd19jb29raWVfcmVnaXN0cnkgPSB7IH0KLQotZGVmIHJlZ2lzdGVyX2Zsb3dfY29va2llX2RlY29kZXIobmFtZSwgYXBwX2lkLCBlbmNvZGVyX3Byb2MsIGRlY29kZXJfcHJvYywgY29udmVyc2lvbl9kaWN0X25hbWUpOgotICAgICIiIgotICAgIFJlZ2lzdGVyIGEgZmxvdyBlbmNvZGluZy9kZWNvZGluZyBzdHJhdGVneQotICAgICIiIgotICAgICMgc2hvdWxkIGJlIHByb3ZpZGUgYSByZXR1cm4gY29kZT8KLQotICAgIGNvb2tpZV9hcHBfaWRzW2FwcF9pZF0gPSBuYW1lCi0gICAgZmxvd19jb29raWVfcmVnaXN0cnlbaW50KGFwcF9pZCldID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnICAgIDogbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmNvZGVyJyA6IGVuY29kZXJfcHJvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWNvZGVyJyA6IGRlY29kZXJfcHJvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjdnQnICAgICA6IGNvbnZlcnNpb25fZGljdF9uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi1kZWYgY2FsbG91dF9mbG93X2VuY29kZXJzKGNvbnRleHQpOgotICAgIGZvciAocmVnaXN0cmFudCwgcmVnaXN0cnkpIGluIGZsb3dfY29va2llX3JlZ2lzdHJ5Lml0ZW1zKCk6Ci0gICAgICAgIGRpY3RfbmFtZSA9IHJlZ2lzdHJ5WydjdnQnXQotICAgICAgICBhbGlhc19kaWN0c1tkaWN0X25hbWVdID0gcmVnaXN0cnlbJ2VuY29kZXInXShjb250ZXh0KQotCi0KLWRlZiBkZWNvZGVfZmxvd19jb29raWUoaSwgZGF0YT1Ob25lKToKLSAgICBjb29raWUgPSBpCi0gICAgbmV3X2Nvb2tpZSA9IE5vbmUKLQotICAgICMgMTIgYml0cyBhcHAgaWQgLSAyMCBiaXRzIGZsb3cgaGFzaCAtIDMyIGJpdHMgdXNlciBjb29raWUKLSAgICBhcHBfaWQgPSAoY29va2llID4+IDUyKSAmICgoMSA8PCAxMikgLSAxKQotCi0gICAgZmxvd19oYXNoID0gKGNvb2tpZSA+PiAzMikgJiAoKDEgPDwgMjApIC0gMSkKLSAgICBpZiBhcHBfaWQgaW4gY29va2llX2FwcF9pZHM6Ci0gICAgICAgIG5ld19jb29raWUgPSBjb29raWVfYXBwX2lkc1thcHBfaWRdCi0gICAgICAgIGlmIGNvb2tpZV9hcHBfaWRzW2FwcF9pZF0gPT0gInN0YXRpYyI6Ci0gICAgICAgICAgICBnbG9iYWwgYWxpYXNfZGljdHMKLSAgICAgICAgICAgIGZsb3dfbWFwID0gYWxpYXNfZGljdHMuZ2V0KCJzdGF0aWNmbG93IiwgW10pCi0gICAgICAgICAgICBpZiBmbG93X2hhc2ggaW4gZmxvd19tYXA6Ci0gICAgICAgICAgICAgICAgbmV3X2Nvb2tpZSArPSAiLSVzIiAlIGZsb3dfbWFwW2Zsb3dfaGFzaF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmV3X2Nvb2tpZSArPSAiLWZsb3dfaGFzaDogJXMiICUgZmxvd19oYXNoCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBmbG93X2hhc2ggIT0gMDoKLSAgICAgICAgICAgICAgICBuZXdfY29va2llICs9ICItZmxvd19oYXNoOiAlcyIgJSBmbG93X2hhc2gKLSAgICAgICAgdXNlcl9jb29raWUgPSAoY29va2llICYgKCgxIDw8IDMyKSAtIDEpKQotCi0gICAgICAgIGlmIHVzZXJfY29va2llOgotICAgICAgICAgICAgaWYgYXBwX2lkIGluIGZsb3dfY29va2llX3JlZ2lzdHJ5OgotICAgICAgICAgICAgICAgICMgQ2FsbCByZWdpc3RlcmVkIGZ1bmN0aW9uIHdpdGggdGhlIGNvbnZlcnNpb24gZGljdGlvbmFyeQotICAgICAgICAgICAgICAgICMgYW5kIHRoZSBjb29raWUKLSAgICAgICAgICAgICAgICBjb252ZXJzaW9uX2RpY3RfbmFtZSA9IGZsb3dfY29va2llX3JlZ2lzdHJ5W2FwcF9pZF1bJ2N2dCddCi0gICAgICAgICAgICAgICAgbmV3X2Nvb2tpZSA9IChmbG93X2Nvb2tpZV9yZWdpc3RyeVthcHBfaWRdWydkZWNvZGVyJ10pKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhc19kaWN0cy5nZXQoY29udmVyc2lvbl9kaWN0X25hbWUpLCBjb29raWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5ld19jb29raWUgKz0gIiwgY29va2llOiAlI3giICUgdXNlcl9jb29raWUKLSAgICBlbHNlOgotICAgICAgICAjIGlmIHRoZSBhcHBfaWQgaXNuJ3Qga25vd24sIGRpc3BsYXkgYWxsIDY0IGJpdHMgb2YgdGhlIGNvb2tpZQotICAgICAgICBuZXdfY29va2llID0gInVua25vd24gJXMsIGNvb2tpZSAlcyIgJSAoYXBwX2lkLCBjb29raWUpCi0KLSAgICBpZiBuZXdfY29va2llOgotICAgICAgICByZXR1cm4gbmV3X2Nvb2tpZQotCi0gICAgcmV0dXJuICclI3gnICUgY29va2llCi0KLQotZXRoZXJfdHlwZV90b19uYW1lX2RpY3QgPSB7Ci0gICAgMHgwODAwIDogImlwIiwKLSAgICAweDA4MDYgOiAiYXJwIiwKLSAgICAweDgwMzUgOiAicmFycCIsCi0gICAgMHg4MDlCIDogImFwcGxldGFsayIsCi0gICAgMHg4MDlCIDogImFwcGxldGFsay1hYXJwIiwKLSAgICAweDgxMDAgOiAiODAyLjFRIiwKLSAgICAweDgxMzcgOiAiaXB4IiwKLSAgICAweDgxMzggOiAibm92ZWxsIiwKLSAgICAweDg2ZGQgOiAiaXB2NiIsCi0gICAgMHg4ODQ3IDogIm1wbHMiLAotICAgIDB4ODg0OCA6ICJtcGxzLW1jIiwKLSAgICAweDg4Y2MgOiAibGxkcCIsCi19Ci0KLQotZXRoZXJfdHlwZV90b19udW1iZXJfZGljdCA9IGRpY3QoW1t2LCBuXSBmb3IgKG4sdikgaW4gZXRoZXJfdHlwZV90b19uYW1lX2RpY3QuaXRlbXMoKV0pCi0KLQotZGVmIGRlY29kZV9ldGhlcl90eXBlKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSA9PSAiKiIgb3IgaSA9PSAiIjogCi0gICAgICAgIHJldHVybiAiKiIKLSAgICBpZiB0eXBlKGkpICE9IGludCBhbmQgaS5zdGFydHN3aXRoKCIweCIpOgotICAgICAgICBpID0gaW50KGksIDE2KSAjIGkgaXMgaW4gaGV4Ci0gICAgaSA9IGNvbnZlcnRfc2lnbmVkX3Nob3J0X3RvX3Vuc2lnbmVkKGkpCi0KLSAgICB0cnk6Ci0gICAgICAgIGkgJj0gMHhmZmZmCi0gICAgZXhjZXB0OgotICAgICAgICByZXR1cm4gJypjdnQgJXMgJXMqJyAlIChpLCB0eXBlKGkpKQotCi0gICAgcmV0dXJuIHByaW50X2VudW1fc3RyaW5nX2FuZF9oZXhfaW50KGV0aGVyX3R5cGVfdG9fbmFtZV9kaWN0LCBpKQotCi0KLWRlZiBkZWNvZGVfbmV0d29ya19wcm90b2NvbChpLCBkYXRhPU5vbmUpOgotICAgIGlmIGkgPT0gIioiIG9yIGkgPT0gIiI6IAotICAgICAgICByZXR1cm4gIioiCi0gICAgZXRoZXJfdHlwZSA9ICJpcCIgIyBkZWZhdWx0Ci0gICAgaWYgZGF0YToKLSAgICAgICAgaWYgJ2V0aGVyLXR5cGUnIGluIGRhdGE6Ci0gICAgICAgICAgICBldGhlcl90eXBlID0gZGVjb2RlX2V0aGVyX3R5cGUoZGF0YVsnZXRoZXItdHlwZSddKQotICAgICAgICBlbGlmICdkYXRhTGF5ZXJUeXBlJyBpbiBkYXRhOgotICAgICAgICAgICAgZXRoZXJfdHlwZSA9IGRlY29kZV9ldGhlcl90eXBlKGRhdGFbJ2RhdGFMYXllclR5cGUnXSkKLSAgICAgICAgZXRoZXJfdHlwZSA9IHN0cihldGhlcl90eXBlKS5zcGxpdCgnKCcpWzBdCi0gICAgbmV0X3Byb3RvX2hhc2ggPSB7Ci0gICAgICAgICJpcCIgOiB7Ci0gICAgICAgICAgICAxICA6ICJpY21wIiwKLSAgICAgICAgICAgIDIgIDogImlnbXAiLAotICAgICAgICAgICAgMyAgOiAiZ2dwIiwKLSAgICAgICAgICAgIDQgIDogImlwLWluLWlwIiwKLSAgICAgICAgICAgIDYgIDogInRjcCIsCi0gICAgICAgICAgICAxNyA6ICJ1ZHAiLAotICAgICAgICAgICAgNTAgOiAiZXNwIiwKLSAgICAgICAgICAgIDUxIDogImFoIgotICAgICAgICAgICAgfSwKLSAgICAgICAgImFycCI6IHsKLSAgICAgICAgICAgIDEgIDogImFycC1yZXEiLAotICAgICAgICAgICAgMiAgOiAiYXJwLXJlcCIsCi0gICAgICAgICAgICAzICA6ICJyYXJwLXJlcSIsCi0gICAgICAgICAgICA0ICA6ICJyYXJwLXJlcCIsCi0gICAgICAgICAgICA1ICA6ICJkcmFycC1yZXEiLAotICAgICAgICAgICAgNiAgOiAiZHJhcnAtcmVwIiwKLSAgICAgICAgICAgIDcgIDogImRyYXJwLWVyciIsCi0gICAgICAgICAgICA4ICA6ICJpbmFycC1yZXEiLAotICAgICAgICAgICAgOSAgOiAiaW5hcnAtcmVwIiwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIHJldHVybiBwcmludF9lbnVtX3N0cmluZ19hbmRfaW50KG5ldF9wcm90b19oYXNoLmdldChldGhlcl90eXBlLCBOb25lKSwgaSkKLQotdGNwX2RlY29kZV9wb3J0X2RpY3QgPSB7Ci0gICAgMjIgICA6ICJzc2giLAotICAgIDUzICAgOiAiZG5zIiwKLSAgICA4MCAgIDogJ2h0dHAnLAotICAgIDQ0MyAgOiAnaHR0cHMnCi19Ci0KLXRjcF9uYW1lX3RvX251bWJlcl9kaWN0ID0gZGljdChbW3YsIG5dIGZvciAobix2KSBpbiB0Y3BfZGVjb2RlX3BvcnRfZGljdC5pdGVtcygpXSkKLQotIyBmaWxsIGluIHZhbHVlcyBpZiB3ZSB3YW50IQotZGVmIGRlY29kZV90Y3BfcG9ydChpKTogCi0gICAgcmV0dXJuIHByaW50X2VudW1fc3RyaW5nX2FuZF9pbnQodGNwX2RlY29kZV9wb3J0X2RpY3QsIGkpCi0KLQotdWRwX2RlY29kZV9wb3J0X2RpY3QgPSB7Ci0gICAgNTMgOiAiZG5zIiwKLX0KLQotdWRwX25hbWVfdG9fbnVtYmVyX2RpY3QgPSBkaWN0KFtbdiwgbl0gZm9yIChuLHYpIGluIHVkcF9kZWNvZGVfcG9ydF9kaWN0Lml0ZW1zKCldKQotCi1kZWYgZGVjb2RlX3VkcF9wb3J0KGkpOiAKLSAgICB2YWx1ZXMgPSB7IAotICAgICAgICB9Ci0gICAgcmV0dXJuIHByaW50X2VudW1fc3RyaW5nX2FuZF9pbnQodmFsdWVzLCBpKQotCi0KLWljbXBfdHlwZV9jb2RlX2hhc2ggPSB7Ci0gICAgMCA6IHsgIm5hbWUiICA6ICJlY2hvLXJlcCIgfSwKLSAgICAzIDogeyAibmFtZSIgIDogImRlc3QtdW5yZWFjaCIsCi0gICAgICAgICAgImNvZGVzIiA6IHsgMCA6ICJuZXQtdW5yZWFjaCIsCi0gICAgICAgICAgICAgICAgICAgICAgMSA6ICJob3N0LXVucmVhY2giLAotICAgICAgICAgICAgICAgICAgICAgIDIgOiAicHJvdG8tdW5yZWFjaCIsCi0gICAgICAgICAgICAgICAgICAgICAgMyA6ICJwb3J0LXVucmVhY2giLAotICAgICAgICAgICAgICAgICAgICAgIDQgOiAiZnJhZy1uZWVkZWQiLAotICAgICAgICAgICAgICAgICAgICAgIDUgOiAic3JjLXJ0LWZhaWwiLAotICAgICAgICAgICAgICAgICAgICAgIDYgOiAiZGVzdC1uZXQtdW5rIiwKLSAgICAgICAgICAgICAgICAgICAgICA3IDogImRlc3QtaG9zdC11bmsiLAotICAgICAgICAgICAgICAgICAgICAgIDggOiAic3JjLWhvc3QtaXNvbCIsCi0gICAgICAgICAgICAgICAgICAgICAgOSA6ICJwcm9oaWJpdC1kZXN0LW5ldCIsCi0gICAgICAgICAgICAgICAgICAgICAgMTAgOiAicHJvaGliaXQtZGVzdC1ob3N0IiwKLSAgICAgICAgICAgICAgICAgICAgICAxMSA6ICJkZXN0LW5ldC11bnJlYWNoLWZvci10b3MiLAotICAgICAgICAgICAgICAgICAgICAgIDEyIDogImRlc3QtaG9zdC11bnJlYWNoLWZvci10b3MiLAotICAgICAgICAgICAgICAgICAgICAgIDEzIDogInByb2hpYml0LWNvbW0iIH0gfSwKLSAgICA0IDogeyAibmFtZSIgIDogInNyYy1xdWVuY2giIH0sCi0gICAgNSA6IHsgIm5hbWUiICA6ICJyZWRpcmVjdCIsCi0gICAgICAgICAgImNvZGVzIiA6IHsgMCA6ICJyZWRpci1mb3ItbmV0IiwKLSAgICAgICAgICAgICAgICAgICAgICAxIDogInJlZGlyLWZvci1ob3N0IiwKLSAgICAgICAgICAgICAgICAgICAgICAyIDogInJlZGlyLWZvci1uZXQtZm9yLXRvcyIsCi0gICAgICAgICAgICAgICAgICAgICAgMyA6ICJyZWRpci1mb3ItaG9zdC1mb3ItdG9zIiB9IH0sCi0gICAgNiA6IHsgIm5hbWUiICA6ICJhbHQtYWRkci1mb3ItaG9zdCIgfSwKLSAgICA4IDogeyAibmFtZSIgIDogImVjaG8tcmVxIiB9LAotICAgIDkgOiB7ICJuYW1lIiAgOiAicm91dGVyLWFkdmVydCIgfSwKLSAgICAxMDogeyAibmFtZSIgIDogInJvdXRlci1zZWwiIH0sCi0gICAgMTE6IHsgIm5hbWUiICA6ICJ0aW1lLWV4Y2VlZGVkIiwKLSAgICAgICAgICAiY29kZXMiIDogeyAwIDogInR0bC1leGNlZWRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgMSA6ICJmcmFnLXJlYXNzZW1ibGUtZXhjZWVkZWQiIH0gfSwKLSAgICAxMjogeyAibmFtZSIgIDogInBhcmFtLXByb2JsZW0iLAotICAgICAgICAgICJjb2RlcyIgOiB7IDAgOiAicG9pbnRlci1lcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgMSA6ICJtaXNzaW5nLW9wdCIsCi0gICAgICAgICAgICAgICAgICAgICAgMiA6ICJiYWQtbGVuZ3RoIiB9IH0sCi0gICAgMTM6IHsgIm5hbWUiIDogInRpbWVzdGFtcC1yZXF1ZXN0IiB9LAotICAgIDE0OiB7ICJuYW1lIiA6ICJ0aW1lc3RhbXAtcmVwbHkiIH0sCi0gICAgMTU6IHsgIm5hbWUiIDogImluZm8tcmVxdWVzdCIgfSwKLSAgICAxNjogeyAibmFtZSIgOiAiaW5mby1yZXBseSIgfSwKLSAgICAxNzogeyAibmFtZSIgOiAiYWRkci1tYXNrLXJlcXVlc3QiIH0sCi0gICAgMTg6IHsgIm5hbWUiIDogImFkZHItbWFzay1yZXBseSIgfSwKLSAgICAzMDogeyAibmFtZSIgOiAidHJhY2Vyb3V0ZSIgfQotfQotICAgICAgICAgICAgICAgICAgICAgIAotCi1kZWYgZGVjb2RlX2ljbXBfdHlwZShpLCBkYXRhPU5vbmUpOgotICAgIGlmIGkgaW4gaWNtcF90eXBlX2NvZGVfaGFzaDoKLSAgICAgICAgcmV0dXJuICIlcyglcykiICUgKGljbXBfdHlwZV9jb2RlX2hhc2hbaV1bJ25hbWUnXSwgaSkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gaQotCi0KLWRlZiBkZWNvZGVfaWNtcF9jb2RlKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgZGF0YSBhbmQgJ3RyYW5zcG9ydFNvdXJjZScgaW4gZGF0YToKLSAgICAgICAgaWNtcF90eXBlID0gZGVjb2RlX2ljbXBfdHlwZShkYXRhWyd0cmFuc3BvcnRTb3VyY2UnXSwgZGF0YSkKLSAgICBlbGlmIGRhdGEgYW5kICdzcmMtcG9ydCcgaW4gZGF0YToKLSAgICAgICAgaWNtcF90eXBlID0gZGVjb2RlX2ljbXBfdHlwZShkYXRhWydzcmMtcG9ydCddLCBkYXRhKQotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHByaW50X2VudW1fc3RyaW5nX2FuZF9pbnQoaWNtcF90eXBlX2NvZGVfaGFzaFtpY21wX3R5cGVdWyJjb2RlcyJdLCBpLCAiLSIpCi0gICAgZXhjZXB0OgotICAgICAgICByZXR1cm4gIi0iCi0KLQotZGVmIGRlY29kZV9zcmNfcG9ydChpLCBkYXRhPU5vbmUpOgotICAgIGkgPSBjb252ZXJ0X3NpZ25lZF9zaG9ydF90b191bnNpZ25lZChpKQotICAgIGlmIGRhdGE6Ci0gICAgICAgIGlmICduZXR3b3JrUHJvdG9jb2wnIGluIGRhdGE6Ci0gICAgICAgICAgICBuZXRfcHJvdG8gPSBkZWNvZGVfbmV0d29ya19wcm90b2NvbChkYXRhWyduZXR3b3JrUHJvdG9jb2wnXSwgZGF0YSkKLSAgICAgICAgZWxpZiAncHJvdG9jb2wnIGluIGRhdGE6Ci0gICAgICAgICAgICBuZXRfcHJvdG8gPSBkZWNvZGVfbmV0d29ya19wcm90b2NvbChkYXRhWydwcm90b2NvbCddLCBkYXRhKQotICAgICAgICBlbGlmICdQcm90b2NvbCcgaW4gZGF0YToKLSAgICAgICAgICAgIG5ldF9wcm90byA9IGRlY29kZV9uZXR3b3JrX3Byb3RvY29sKGRhdGFbJ1Byb3RvY29sJ10sIGRhdGEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gaQotICAgICAgICBuZXRfcHJvdG8gPSBzdHIobmV0X3Byb3RvKS5zcGxpdCgnKCcpWzBdCi0gICAgICAgIGlmIG5ldF9wcm90byA9PSAiaWNtcCI6Ci0gICAgICAgICAgICByZXR1cm4gZGVjb2RlX2ljbXBfdHlwZShpKQotICAgICAgICBlbGlmIG5ldF9wcm90byA9PSAidGNwIjoKLSAgICAgICAgICAgIHJldHVybiBkZWNvZGVfdGNwX3BvcnQoaSkKLSAgICAgICAgZWxpZiBuZXRfcHJvdG8gPT0gInVkcCI6Ci0gICAgICAgICAgICByZXR1cm4gZGVjb2RlX3VkcF9wb3J0KGkpCi0gICAgcmV0dXJuIGkKLQotCi1kZWYgZGVjb2RlX2RzdF9wb3J0KGksIGRhdGE9Tm9uZSk6Ci0gICAgaSA9IGNvbnZlcnRfc2lnbmVkX3Nob3J0X3RvX3Vuc2lnbmVkKGkpCi0gICAgaWYgZGF0YToKLSAgICAgICAgaWYgJ25ldHdvcmtQcm90b2NvbCcgaW4gZGF0YToKLSAgICAgICAgICAgIG5ldF9wcm90byA9IGRlY29kZV9uZXR3b3JrX3Byb3RvY29sKGRhdGFbJ25ldHdvcmtQcm90b2NvbCddLCBkYXRhKQotICAgICAgICBlbGlmICdwcm90b2NvbCcgaW4gZGF0YToKLSAgICAgICAgICAgIG5ldF9wcm90byA9IGRlY29kZV9uZXR3b3JrX3Byb3RvY29sKGRhdGFbJ3Byb3RvY29sJ10sIGRhdGEpCi0gICAgICAgIGVsaWYgJ1Byb3RvY29sJyBpbiBkYXRhOgotICAgICAgICAgICAgbmV0X3Byb3RvID0gZGVjb2RlX25ldHdvcmtfcHJvdG9jb2woZGF0YVsnUHJvdG9jb2wnXSwgZGF0YSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAgIG5ldF9wcm90byA9IHN0cihuZXRfcHJvdG8pLnNwbGl0KCcoJylbMF0KLSAgICAgICAgaWYgbmV0X3Byb3RvID09ICJpY21wIjoKLSAgICAgICAgICAgIHJldHVybiBkZWNvZGVfaWNtcF9jb2RlKGksIGRhdGEpCi0gICAgICAgIGVsaWYgbmV0X3Byb3RvID09ICJ0Y3AiOgotICAgICAgICAgICAgcmV0dXJuIGRlY29kZV90Y3BfcG9ydChpKQotICAgICAgICBlbGlmIG5ldF9wcm90byA9PSAidWRwIjoKLSAgICAgICAgICAgIHJldHVybiBkZWNvZGVfdWRwX3BvcnQoaSkKLSAgICByZXR1cm4gaQotCi0KLWRlZiBkZWNvZGVfYWN0aW9ucyhhY3Rpb25fbGlzdCwgZGF0YT1Ob25lKToKLSAgICBUVExfREVDUkVNRU5UX1NVQlRZUEUgPSAxOAotICAgIFNFVF9UVU5ORUxfRFNUX1NVQlRZUEUgPSAyCi0gICAgTklDSVJBX1ZFTkRPUl9JRD04OTkyICAjMHgwMDAwMjMyMAotICAgIEJTTl9WRU5ET1JfSUQ9NjAzNTE0MyAgIzB4NWMxNmM3Ci0gICAgZGVjb2RlZF9hY3Rpb25zID0gW10KLSAgICBmb3IgYSBpbiBhY3Rpb25fbGlzdDoKLSAgICAgICAgZGVjb2RlZF9hY3Rpb24gPSBhWyd0eXBlJ10KLSAgICAgICAgaWYgZGVjb2RlZF9hY3Rpb24gPT0gIk9VVFBVVCI6Ci0gICAgICAgICAgICBwb3J0ID0gZGVjb2RlX29wZW5mbG93X3BvcnQoYVsncG9ydCddLCBkYXRhKQotICAgICAgICAgICAgZGVjb2RlZF9hY3Rpb24gPSAib3V0cHV0PSVzIiAlIChwb3J0LCkKLSAgICAgICAgZWxpZiBkZWNvZGVkX2FjdGlvbiA9PSAiT1BBUVVFX0VOUVVFVUUiOgotICAgICAgICAgICAgIyBMT09LISBOb3QgZGVjb2RlZCB0byBwaHlzaWNhbCBwb3J0IHNpbmNlIHRoZSBjb25maWd1cmF0aW9uIHBhcnQgb2YgQ0xJIGRvZXMgbm90IGRvIHRoZSB0cmFuc2xhdGlvbiBlaXRoZXIKLSAgICAgICAgICAgIGRlY29kZWRfYWN0aW9uID0gImVucXVldWU9JWQ6MHglMDJ4IiAlIChhWydwb3J0J10sIGFbJ3F1ZXVlSWQnXSkKLSAgICAgICAgZWxpZiBkZWNvZGVkX2FjdGlvbiA9PSAiU0VUX1ZMQU5fSUQiOgotICAgICAgICAgICAgZGVjb2RlZF9hY3Rpb24gPSAic2V0LXZsYW4taWQ9JWQiICUgYVsndmlydHVhbExhbklkZW50aWZpZXInXQotICAgICAgICBlbGlmIGRlY29kZWRfYWN0aW9uID09ICJTRVRfVkxBTl9QQ1AiOgotICAgICAgICAgICAgZGVjb2RlZF9hY3Rpb24gPSAic2V0LXZsYW4tcHJpb3JpdHk9MHglMDJ4IiAlIGFbJ3ZpcnR1YWxMYW5Qcmlvcml0eUNvZGVQb2ludCddCi0gICAgICAgIGVsaWYgZGVjb2RlZF9hY3Rpb24gPT0gIlNUUklQX1ZMQU4iOgotICAgICAgICAgICAgZGVjb2RlZF9hY3Rpb24gPSAic3RyaXAtdmxhbiIKLSAgICAgICAgZWxpZiBkZWNvZGVkX2FjdGlvbiA9PSAiU0VUX0RMX1NSQyI6Ci0gICAgICAgICAgICBkZWNvZGVkX2FjdGlvbiA9ICJzZXQtc3JjLW1hYz0lcyIgJSBhWydkYXRhTGF5ZXJBZGRyZXNzJ10KLSAgICAgICAgZWxpZiBkZWNvZGVkX2FjdGlvbiA9PSAiU0VUX0RMX0RTVCI6Ci0gICAgICAgICAgICBkZWNvZGVkX2FjdGlvbiA9ICJzZXQtZHN0LW1hYz0lcyIgJSBhWydkYXRhTGF5ZXJBZGRyZXNzJ10KLSAgICAgICAgZWxpZiBkZWNvZGVkX2FjdGlvbiA9PSAiU0VUX05XX1NSQyI6Ci0gICAgICAgICAgICBkZWNvZGVkX2FjdGlvbiA9ICJzZXQtc3JjLWlwPSVzIiAlIGRlY29kZV9pcGFkZHIoYVsnbmV0d29ya0FkZHJlc3MnXSkKLSAgICAgICAgZWxpZiBkZWNvZGVkX2FjdGlvbiA9PSAiU0VUX05XX0RTVCI6Ci0gICAgICAgICAgICBkZWNvZGVkX2FjdGlvbiA9ICJzZXQtZHN0LWlwPSVzIiAlIGRlY29kZV9pcGFkZHIoYVsnbmV0d29ya0FkZHJlc3MnXSkKLSAgICAgICAgZWxpZiBkZWNvZGVkX2FjdGlvbiA9PSAiU0VUX05XX1RPUyI6Ci0gICAgICAgICAgICBkZWNvZGVkX2FjdGlvbiA9ICJzZXQtdG9zLWJpdHM9MHglMDJ4IiAlIGFbJ25ldHdvcmtUeXBlT2ZTZXJ2aWNlJ10KLSAgICAgICAgZWxpZiBkZWNvZGVkX2FjdGlvbiA9PSAiU0VUX1RQX1NSQyI6Ci0gICAgICAgICAgICBkZWNvZGVkX2FjdGlvbiA9ICJzZXQtc3JjLXBvcnQ9JWQiICUgYVsndHJhbnNwb3J0UG9ydCddCi0gICAgICAgIGVsaWYgZGVjb2RlZF9hY3Rpb24gPT0gIlNFVF9UUF9EU1QiOgotICAgICAgICAgICAgZGVjb2RlZF9hY3Rpb24gPSAic2V0LWRzdC1wb3J0PSVkIiAlIGFbJ3RyYW5zcG9ydFBvcnQnXQotICAgICAgICBlbGlmIGRlY29kZWRfYWN0aW9uID09IlZFTkRPUiI6Ci0gICAgICAgICAgICBpZiAndmVuZG9yJyBpbiBhOgotICAgICAgICAgICAgICAgIGlmIGFbJ3ZlbmRvciddPT1OSUNJUkFfVkVORE9SX0lEOgotICAgICAgICAgICAgICAgICAgICBpZiAndmVuZG9yRGF0YScgaW4gYToKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlbmRvcmRhdGE9YVsndmVuZG9yRGF0YSddLmRlY29kZSgnYmFzZTY0Jywnc3RyaWN0JykKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlbmRvcmRhdGE9dmVuZG9yZGF0YS5lbmNvZGUoJ2hleCcpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiB2ZW5kb3JkYXRhLnN0YXJ0c3dpdGgoJzAwMTInKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkX2FjdGlvbj0ibmljaXJhX3ZlbmRvcjpkZWMgVFRMIgotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkX2FjdGlvbj0ibmljaXJhX3ZlbmRvcjp1bmtub3duIgotICAgICAgICAgICAgICAgIGlmIGFbJ3ZlbmRvciddPT1CU05fVkVORE9SX0lEOgotICAgICAgICAgICAgICAgICAgICBpZiAndmVuZG9yRGF0YScgaW4gYToKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlbmRvcmRhdGE9YVsndmVuZG9yRGF0YSddLmRlY29kZSgnYmFzZTY0Jywnc3RyaWN0JykKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlbmRvcmRhdGE9dmVuZG9yZGF0YS5lbmNvZGUoJ2hleCcpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiB2ZW5kb3JkYXRhLnN0YXJ0c3dpdGgoJzAwMDAwMDAxJyk6ICAjQlNOX0FDVElPTl9NSVJST1IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkX2FjdGlvbj0iYnNuX3ZlbmRvcjpNSVJST1IiCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHZlbmRvcmRhdGEuc3RhcnRzd2l0aCgnMDAwMDAwMDInKTogI1NFVF9UVU5ORUxfRFNUX1NVQlRZUEUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcD12ZW5kb3JkYXRhWzg6XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcj1bXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIFs2LDQsMiwwXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBpbnQ9IGlwW2k6aSsyXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcGludD0gc3RyKGludChpcGludCwxNikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkci5hcHBlbmQoaXBpbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBzdHI9Jy4nLmpvaW4oaXBhZGRyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRfYWN0aW9uPSJic25fdmVuZG9yOlRVTk5MOiIgKyBpcHN0cgotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkX2FjdGlvbj0iYnNuX3ZlbmRvcjp1bmtub3duIgotICAgICAgICBkZWNvZGVkX2FjdGlvbnMuYXBwZW5kKGRlY29kZWRfYWN0aW9uKQotICAgIGlmIGxlbihkZWNvZGVkX2FjdGlvbnMpID09IDA6Ci0gICAgICAgIHJldHVybiAiZHJvcCIKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gIiwiLmpvaW4oZGVjb2RlZF9hY3Rpb25zKQotCi0KLWRlZiBkZWNvZGVfcG9ydF9jb3VudGVyKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSA9PSAtMTogCi0gICAgICAgIHJldHVybiAibi9hIgotICAgIGVsc2U6IAotICAgICAgICByZXR1cm4gaQotCi0KLWRlZiBkZWNvZGVfbWFjYWRkcihhZGRyKToKLSAgICByZXQgPSAnaW52YWxpZC1tYWMtYWRkcicKLSAgICB0cnk6Ci0gICAgICAgIG1hY2J5dGVzID0gYmFzZTY0LmI2NGRlY29kZShhZGRyKQotICAgICAgICByZXQgPSAnOicuam9pbihbIiUwMngiICUgb3JkKGIpIGZvciBiIGluIG1hY2J5dGVzXSkKLSAgICBleGNlcHQ6Ci0gICAgICAgICMgaWdub3JlIGV4Y2VwdGlvbiwgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSBzZXQgdG8gaW52YWxpZAotICAgICAgICBwYXNzCi0gICAgcmV0dXJuIHJldAotCi0KLWRlZiBkZWNvZGVfaXBhZGRyKGFkZHIpOgotICAgIHJldCA9ICdpbnZhbGlkLWlwLWFkZHInCi0gICAgdHJ5OgotICAgICAgICBpcGJ5dGVzID0gWzAsIDAsIDAsIDBdCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgotICAgICAgICAgICAgaXBieXRlc1szLWldID0gYWRkciAmIDB4MDAwMDAwZmYKLSAgICAgICAgICAgIGFkZHIgPSBhZGRyPj44Ci0gICAgICAgIHJldCA9ICcuJy5qb2luKFsiJWQiICUgYiBmb3IgYiBpbiBpcGJ5dGVzXSkKLSAgICBleGNlcHQ6Ci0gICAgICAgICMgaWdub3JlIGV4Y2VwdGlvbiwgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSBzZXQgdG8gaW52YWxpZAotICAgICAgICBwYXNzCi0gICAgcmV0dXJuIHJldAotCi0KLWRlZiBkZWNvZGVfcG9ydF9jb25maWcoaSwgZGF0YT1Ob25lKToKLSAgICBpID0gYWJzKGkpCi0gICAgdmFsdWVzID0gewotICAgICAgICAxIDw8IDAgOiAicG9ydC1kb3duIiwKLSAgICAgICAgMSA8PCAxIDogIm5vLXN0cCIsCi0gICAgICAgIDEgPDwgMiA6ICJuby1yZWN2IiwKLSAgICAgICAgMSA8PCAzIDogIm5vLXJlY3Ytc3RwIiwKLSAgICAgICAgMSA8PCA0IDogIm5vLWZsb29kIiwKLSAgICAgICAgMSA8PCA1IDogIm5vLWZ3ZCIsCi0gICAgICAgIDEgPDwgNiA6ICJuby1wa3QtaW4iLAotICAgICAgICAxIDw8IDMxIDogIm1pcnJvciIsCi0gICAgICAgIH0KLSAgICBpZiBpID09IDAgb3IgaSA9PSAnJzoKLSAgICAgICAgcmV0dXJuICcnCi0gICAgcmV0dXJuIHByaW50X21hc2tfZW51bV9zdHJpbmdfYW5kX2ludCh2YWx1ZXMsIGkpCi0KLWRlZiBkZWNvZGVfcG9ydF9zdGF0ZShpLCBkYXRhPU5vbmUpOgotICAgIGlmIGkgPT0gJyc6Ci0gICAgICAgIHJldHVybiAnVW5rbm93bicKLQotICAgICMgVGhlIHR3byBiaXRzIGF0ICgzIDw8IDgpIGFyZSBhIG1hc2sgZm9yIHRoZSBTVFAgdmFsdWUKLSAgICAjIHdoaWNoIGFyZSBsaXN0ZWQgaW4gdGhlIGZvbGxvd2luZyBkaWN0aW9uYXJ5LiBOb3RlIHRoYXQgdGhlc2UKLSAgICAjIGFyZW4ndCBzaW1wbHkgYml0IG1hc2tzLCBzbyB3ZSBjYW4ndCB1c2UgcHJpbnRfbWFza19lbnVtX3N0cmluZ19hbmRfaW50Ci0gICAgIyBoZXJlLiBTbyBpbnN0ZWFkIHdlIHNwZWNpYWwgY2FzZSB0aGUgZm9ybWF0dGluZyBvZiB0aGlzIGZpZWxkLiBXZSBjb3VsZAotICAgICMgcHJvYmFibHkgZmFjdG9yIHNvbWUgb2YgdGhpcyBsb2dpYyBpbnRvIGEgdXRpbGl0eSBmdW5jdGlvbiwgYnV0Ci0gICAgIyB0aGlzIHdvcmtzIGZvciBub3cuCi0gICAgc3RwX3ZhbHVlcyA9IHsKLSAgICAgICAgMCA8PCA4IDogIjogc3RwLWxpc3RlbiIsCi0gICAgICAgIDEgPDwgOCA6ICI6IHN0cC1sZWFybi1uby1yZWxheSIsCi0gICAgICAgIDIgPDwgOCA6ICI6IHN0cC1mb3J3YXJkIiwKLSAgICAgICAgMyA8PCA4IDogIjogc3RwLWJsb2NrLWJyb2FkY2FzdCIsCi0gICAgICAgIH0KLSAgICB2YWx1ZSA9ICJsaW5rLWRvd24iIGlmIGkgPT0gMSBlbHNlICJsaW5rLXVwIiArIHN0cF92YWx1ZXMuZ2V0KGksICcnKQotICAgIHJldHVybiAiJXMoJXMpIiAlICh2YWx1ZSwgaGV4KGkpIGlmIGkgPiA5IGVsc2UgaSkKLSAKLQotZGVmIGRlY29kZV9wb3J0X3VwX2Rvd24oaSwgZGF0YT1Ob25lKToKLSAgICBpZiBpID09ICcnOgotICAgICAgICByZXR1cm4gJ1Vua25vd24nCi0gICAgcmV0dXJuICJkb3duIiBpZiBpID09IDEgZWxzZSAndXAnCi0KLQotZGVmIGRlY29kZV9wb3J0X3N0cF9zdGF0ZShpLCBkYXRhPU5vbmUpOgotICAgIGlmIGkgPT0gJyc6Ci0gICAgICAgIHJldHVybiAnJwotICAgIHN0cF92YWx1ZXMgPSB7Ci0gICAgICAgIDAgPDwgOCA6ICJsaXN0ZW4iLAotICAgICAgICAxIDw8IDggOiAibGVhcm4tbm8tcmVsYXkiLAotICAgICAgICAyIDw8IDggOiAiZm9yd2FyZCIsCi0gICAgICAgIDMgPDwgOCA6ICJibG9jay1icm9hZGNhc3QiLAotICAgICAgICB9Ci0gICAgdmFsdWUgPSAnJyBpZiBpID09IDEgZWxzZSBzdHBfdmFsdWVzLmdldChpKQotICAgIHJldHVybiAiJXMoJXMpIiAlICh2YWx1ZSwgaGV4KGkpIGlmIGkgPiA5IGVsc2UgaSkKLQotCi1kZWYgZGVjb2RlX3BvcnRfbGlua3JhdGUoaSwgZGF0YT1Ob25lKToKLSAgICB2YWx1ZXMgPSB7Ci0gICAgICAgIDEgPDwgMCA6ICIxMG1iLWhkIiwKLSAgICAgICAgMSA8PCAxIDogIjEwbWItZmQiLAotICAgICAgICAxIDw8IDIgOiAiMTAwbWItaGQiLAotICAgICAgICAxIDw8IDMgOiAiMTAwbWItZmQiLAotICAgICAgICAxIDw8IDQgOiAiMWdiLWhkIiwKLSAgICAgICAgMSA8PCA1IDogIjFnYi1mZCIsCi0gICAgICAgIDEgPDwgNiA6ICIxMGdiLWZkIiwKLSAgICAgICAgfQotICAgIGlmIHR5cGUoaSkgIT0gaW50OgotICAgICAgICByZXR1cm4gIlVua25vd24iCi0gICAgaWYgKGludChpKSAmIDB4N2YpID09IDA6Ci0gICAgICAgIHJldHVybiAiVW5rbm93biIKLSAgICByZXR1cm4gcHJpbnRfbWFza19lbnVtX3N0cmluZ19hbmRfaW50KHZhbHVlcywgaW50KGkpICYgMHg3ZikKLQotCi1kZWYgZGVjb2RlX3BvcnRfZmVhdHVyZXMoaSwgZGF0YT1Ob25lKToKLSAgICB2YWx1ZXMgPSB7Ci0gICAgICAgIDEgPDwgMCA6ICIxMG1iLWhkIiwKLSAgICAgICAgMSA8PCAxIDogIjEwbWItZmQiLAotICAgICAgICAxIDw8IDIgOiAiMTAwbWItaGQiLAotICAgICAgICAxIDw8IDMgOiAiMTAwbWItZmQiLAotICAgICAgICAxIDw8IDQgOiAiMWdiLWhkIiwKLSAgICAgICAgMSA8PCA1IDogIjFnYi1mZCIsCi0gICAgICAgIDEgPDwgNiA6ICIxMGdiLWZkIiwKLSAgICAgICAgMSA8PCA3IDogImNvcHBlciIsCi0gICAgICAgIDEgPDwgOCA6ICJmaWJlciIsCi0gICAgICAgIDEgPDwgOSA6ICJhdXRvbmVnIiwKLSAgICAgICAgMSA8PCAxMCA6ICJwYXVzZSIsCi0gICAgICAgIDEgPDwgMTEgOiAicGF1c2UtYXN5bSIsCi0gICAgICAgIH0KLSAgICByZXR1cm4gcHJpbnRfbWFza19lbnVtX3N0cmluZ19hbmRfaW50KHZhbHVlcywgaSkKLQotCi1kZWYgZGVjb2RlX3N3aXRjaF9jYXBhYmlsaXRpZXMoaSwgZGF0YT1Ob25lKToKLSAgICB2YWx1ZXMgPSB7Ci0gICAgICAgIDEgPDwgMCA6ICJmbG93IiwKLSAgICAgICAgMSA8PCAxIDogInRibCIsCi0gICAgICAgIDEgPDwgMiA6ICJwb3J0IiwKLSAgICAgICAgMSA8PCAzIDogInN0cCIsCi0gICAgICAgIDEgPDwgNSA6ICJpcC1yZWFzbSIsCi0gICAgICAgIDEgPDwgNiA6ICJxdWV1ZS1zdGF0cyIsCi0gICAgICAgIDEgPDwgNyA6ICJtYXRjaC1pcC1pbi1hcnAiLAotICAgICAgICB9Ci0gICAgcmV0dXJuIHByaW50X21hc2tfZW51bV9zdHJpbmdfYW5kX2ludCh2YWx1ZXMsIGkpCi0KLQotZGVmIGRlY29kZV9zd2l0Y2hfYWN0aW9ucyhpLCBkYXRhPU5vbmUpOgotICAgIHZhbHVlcyA9IHsKLSAgICAgICAgMSA8PCAwIDogIm91dHB1dCIsCi0gICAgICAgIDEgPDwgMSA6ICJ2bGFuLXZpZCIsCi0gICAgICAgIDEgPDwgMiA6ICJ2bGFuLXBjcCIsCi0gICAgICAgIDEgPDwgMyA6ICJzdHJpcC12bGFuIiwKLSAgICAgICAgMSA8PCA0IDogImRsLXNyYyIsCi0gICAgICAgIDEgPDwgNSA6ICJkbC1kc3QiLAotICAgICAgICAxIDw8IDYgOiAibnctc3JjIiwKLSAgICAgICAgMSA8PCA3IDogIm53LWRzdCIsCi0gICAgICAgIDEgPDwgOCA6ICJudy10b3MiLAotICAgICAgICAxIDw8IDkgOiAidHAtc3JjIiwKLSAgICAgICAgMSA8PCAxMCA6ICJ0cC1kc3QiLAotICAgICAgICAxIDw8IDExIDogImVucXVldWUiLAotICAgICAgICB9Ci0gICAgaWYgKGkgPT0gMCk6Ci0gICAgICAgIHJldHVybiAibWlycm9yIgotICAgIHJldHVybiBwcmludF9tYXNrX2VudW1fc3RyaW5nX2FuZF9pbnQodmFsdWVzLCBpKQotCi0KLXdpbGRjYXJkcyA9IHsKLSAgICAxIDw8IDAgOiAnaW4gcG9ydCcsCi0gICAgMSA8PCAxIDogJ3ZsYW4nLAotICAgIDEgPDwgMiA6ICdwcmknLAotICAgIDEgPDwgMyA6ICdldGgnLAotICAgIDEgPDwgNCA6ICd0b3MnLAotICAgIDEgPDwgNSA6ICdwcm90bycsCi0gICAgMSA8PCA2IDogJ3NyYycsCi0gICAgMSA8PCA3IDogJ2RzdCcsCi0gICAgMSA8PCA4IDogJ21wbHMnLAotICAgIDEgPDwgOSA6ICd0YycsCi19Ci0KLWRlZiByZWFsdGltZV9mbG93X2JyaWVmKGksIGRhdGE9Tm9uZSk6Ci0gICAgYnJpZWYgPSBbXQotICAgIHdpbGRjYXJkID0gZGF0YVsnd2lsZGNhcmRzJ10KLSAgICAjIHdpbGQgPSBwcmludF9tYXNrX2VudW1fc3RyaW5nX2FuZF9pbnQod2lsZGNhcmRzLCB3aWxkY2FyZCkKLSAgICB0cnk6Ci0gICAgICAgIGkgPSBpbnQod2lsZGNhcmQpCi0gICAgZXhjZXB0OgotICAgICAgICByZXR1cm4gJycKLQotICAgIGlmIG5vdCB3aWxkY2FyZCAmIDB4MToKLSAgICAgICAgYnJpZWYuYXBwZW5kKCdyeD0lcycgJSBkZWNvZGVfb3BlbmZsb3dfcG9ydChkYXRhWydpbnB1dFBvcnQnXSwgZGF0YSkpCi0gICAgaWYgKG5vdCB3aWxkY2FyZCAmIDB4MikgYW5kIChkYXRhWydkYXRhTGF5ZXJWaXJ0dWFsTGFuJ10gIT0gLTEpOgotICAgICAgICBicmllZi5hcHBlbmQoJ3ZsYW46JXMnICUgZGF0YVsnZGF0YUxheWVyVmlydHVhbExhbiddKQotICAgIGlmIChub3Qgd2lsZGNhcmQgJiAweDQpIGFuZCAoZGF0YVsnZGF0YUxheWVyVmlydHVhbExhblByaW9yaXR5Q29kZVBvaW50J10gIT0gJyonKToKLSAgICAgICAgYnJpZWYuYXBwZW5kKCdwcmk6JXMnICUgZGF0YVsnZGF0YUxheWVyVmlydHVhbExhblByaW9yaXR5Q29kZVBvaW50J10pCi0gICAgaWYgKG5vdCB3aWxkY2FyZCAmIDB4OCkgYW5kIChkYXRhWydkYXRhTGF5ZXJUeXBlJ10gIT0gJyonKSA6Ci0gICAgICAgIGJyaWVmLmFwcGVuZCgnZXRoOiVzJyAlIGRhdGFbJ2RhdGFMYXllclR5cGUnXSkKLSAgICBpZiBub3Qgd2lsZGNhcmQgJiAweDEwOgotICAgICAgICBicmllZi5hcHBlbmQoJ3RvczolcycgJSBkYXRhWyduZXR3b3JrVHlwZU9mU2VydmljZSddKQotICAgIGlmIG5vdCB3aWxkY2FyZCAmIDB4MjA6Ci0gICAgICAgIGJyaWVmLmFwcGVuZCgnaXA6JXMnICUgZGF0YVsnbmV0d29ya1Byb3RvY29sJ10pCi0gICAgaWYgZGF0YVsnbmV0d29ya1NvdXJjZU1hc2tMZW4nXToKLSAgICAgICAgYnJpZWYuYXBwZW5kKCdzcmM6JXMnICUgdXRpZi5pcF9hbmRfbmVnX21hc2soZGF0YVsnbmV0d29ya1NvdXJjZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWyduZXR3b3JrU291cmNlTWFza0xlbiddKSkKLSAgICBpZiBub3Qgd2lsZGNhcmQgJiAweDQwOgotICAgICAgICBicmllZi5hcHBlbmQoJ3Nwb3J0OiVzJyAlIGRhdGFbJ3RyYW5zcG9ydFNvdXJjZSddKQotICAgIGlmIGRhdGFbJ25ldHdvcmtTb3VyY2VNYXNrTGVuJ106Ci0gICAgICAgIGJyaWVmLmFwcGVuZCgnc3JjOiVzJyAlIHV0aWYuaXBfYW5kX25lZ19tYXNrKGRhdGFbJ25ldHdvcmtTb3VyY2UnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmV0d29ya1NvdXJjZU1hc2tMZW4nXSkpCi0gICAgaWYgbm90IHdpbGRjYXJkICYgMHg4MDoKLSAgICAgICAgYnJpZWYuYXBwZW5kKCdkcG9ydDolcycgJSBkYXRhWyd0cmFuc3BvcnREZXN0aW5hdGlvbiddKQotICAgICMgbXBscyBub3QgaW4gT0YxLjAKLSAgICAjaWYgbm90IHdpbGRjYXJkICYgMHgxMDA6Ci0gICAgICAgICNicmllZi5hcHBlbmQoJ21wbHM6ID8nKQotICAgICNpZiBub3Qgd2lsZGNhcmQgJiAweDIwMDoKLSAgICAgICAgI2JyaWVmLmFwcGVuZCgnbXBscy10YzogPycpCi0KLSAgICByZXR1cm4gJywgJy5qb2luKGJyaWVmKQotCi0KLWRlZiBmb3JtYXR0ZXJfdG9fYWxpYXNfdXBkYXRlKGZvcm1hdHRlciwgdXBkYXRlKToKLSAgICAiIiIKLSAgICBBc3NvY2lhdGUgdGhlIGl0ZW1zIHdoaWNoIG5lZWQgdXBkYXRpbmcgd2l0aCB0aGUgZm9ybWF0dGVyLgotICAgIHRoZSB1cGRhdGUgcGFyYW1ldGVyIGlzIGEgZGljdCwgYWxsb3dpbmcgbXVsdGlwbGUgdXBkYXRlcwotICAgIG92ZXIgc2V2ZXJhbCBkaXN0aW5jdCBmaWVsZHMKLQotICAgIFVwZGF0ZSB0aGlzIHByb2NlZHVyZSBhcyBuZXcgZGVjb2RpbmcgcHJvY2VkdXJlcyBhcmUKLSAgICBhZGRlZCB3aGljaCByZXF1aXJlIHNvbWUgYWxpYXMgdHJhbnNsYXRpb24gdG8gYmUgdXBkYXRlZAotCi0gICAgQHBhcmFtIGZvcm1hdHRlciBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgdG8gZm9ybWF0IGEgZmllbGQKLSAgICBAcGFyYW0gdXBkYXRlIGRpY3Rpb25yeSBwYXNzZWQgaW4sIHVwZGF0ZWQgd2l0aCBhbGlhcyB0eXBlcyB0byB1cGRhdGUKLSAgICAiIiIKLSAgICBuYW1lID0gZm9ybWF0dGVyLl9fbmFtZV9fCi0gICAgaWYgbmFtZSBpbiBbJ3ByaW50X2hvc3RfYW5kX2FsaWFzJywKLSAgICAgICAgICAgICAgICAncHJpbnRfYWxsX2hvc3RfYXR0YWNobWVudF9wb2ludHMnLAotICAgICAgICAgICAgICAgICdwcmludF9kZXZpY2VtYW5hZ2VyX2F0dGFjaG1lbnRfcG9pbnRzJywKLSAgICAgICAgICAgICAgICAncmVwbGFjZV9ob3N0X3dpdGhfYWxpYXMnLAotICAgICAgICAgICAgICAgIF06Ci0gICAgICAgIHVwZGF0ZVsnaG9zdCddID0gVHJ1ZQotICAgIGlmIG5hbWUgaW4gWydwcmludF9ob3N0X2F0dGFjaG1lbnRfcG9pbnQnLAotICAgICAgICAgICAgICAgICdwcmludF92bnNfcGh5c2ljYWxfaW50ZXJmYWNlX2lkJywKLSAgICAgICAgICAgICAgICAnZGVjb2RlX29wZW5mbG93X3BvcnQnLAotICAgICAgICAgICAgICAgICdkZWNvZGVfb3BlbmZsb3dfcG9ydF9zcmNfc3dpdGNoJywKLSAgICAgICAgICAgICAgICAnZGVjb2RlX29wZW5mbG93X3BvcnRfZHN0X3N3aXRjaCcsCi0gICAgICAgICAgICAgICAgJ2RlY29kZV9vcGVuZmxvd19wb3J0X3NvdXJjZV9zd2l0Y2gnLAotICAgICAgICAgICAgICAgICdkZWNvZGVfb3BlbmZsb3dfcG9ydF9pbnB1dFN3aXRjaCcsCi0gICAgICAgICAgICAgICAgJ2RlY29kZV9vcGVuZmxvd19wb3J0X2RwaWQnLAotICAgICAgICAgICAgICAgICdyZWFsdGltZV9mbG93X2JyaWVmJywKLSAgICAgICAgICAgICAgICBdOgotICAgICAgICB1cGRhdGVbJ3N3aXRjaCddID0gVHJ1ZSAjIHBvcnQgaW1wbGllcyBzd2l0Y2gKLSAgICAgICAgdXBkYXRlWydwb3J0J10gPSBUcnVlCi0gICAgaWYgbmFtZSBpbiBbJ3ByaW50X3N3aXRjaF9hbmRfYWxpYXMnLAotICAgICAgICAgICAgICAgICdwcmludF9zd2l0Y2hfYW5kX2FsaWFzX2RwaWRfYXNfbG9uZycsCi0gICAgICAgICAgICAgICAgJ3ByaW50X3N3aXRjaGVzJywKLSAgICAgICAgICAgICAgICAncmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcycsCi0gICAgICAgICAgICAgICAgXToKLSAgICAgICAgdXBkYXRlWydzd2l0Y2gnXSA9IFRydWUKLSAgICBpZiBuYW1lIGluIFsnZGVjb2RlX2Zsb3dfY29va2llJwotICAgICAgICAgICAgICAgIF06Ci0gICAgICAgIHVwZGF0ZVsnZmxvdyddID0gVHJ1ZQotICAgIGlmIG5hbWUgaW4gWydyZXBsYWNlX2NvbnRyb2xsZXJfbm9kZV93aXRoX2FsaWFzJywKLSAgICAgICAgICAgICAgIF06Ci0gICAgICAgIHVwZGF0ZVsnY29udHJvbGxlci1ub2RlJ10gPSBUcnVlCi0gICAgcmV0dXJuIHVwZGF0ZQotCi1kZWYgcHJpbnRfc3dpdGNoX3BvcnRfbGlzdChpLCBkYXRhPU5vbmUpOgotICAgIGlmIGkgPT0gTm9uZToKLSAgICAgICAgcmV0dXJuICcnCi0gICAgcmV0dXJuICcgJy5qb2luKFtyZXBsYWNlX3N3aXRjaF93aXRoX2FsaWFzKHhbJ3N3aXRjaCddKSArIFwKLSAgICAgICAgICAgICAgICAgICAgJy8nICsgZGVjb2RlX29wZW5mbG93X3BvcnQoeFsncG9ydCddKSBmb3IgeCBpbiBpXSkKLQotZGVmIHByaW50X3N3aXRjaF9wb3J0KGkpOgotICAgIGlmIGkgPT0gTm9uZToKLSAgICAgICAgcmV0dXJuICcnCi0gICAgcmV0dXJuIHJlcGxhY2Vfc3dpdGNoX3dpdGhfYWxpYXMoeFsnc3dpdGNoJ10pICsgXAotICAgICAgICAgICAgICAgICAgICAnLycgKyBkZWNvZGVfb3BlbmZsb3dfcG9ydCh4Wydwb3J0J10pCi0KLWRlZiBwcmludF9ob3N0X2F0dGFjaG1lbnRfcG9pbnQoaSwgZGF0YT1Ob25lKToKLSAgICBpZiBpID09IE5vbmU6Ci0gICAgICAgIHJldHVybiAiSW5hY3RpdmUiCi0gICAgaWYgbGVuKGkpID09IDE6Ci0gICAgICAgIGlmX25hbWUgPSBkZWNvZGVfb3BlbmZsb3dfcG9ydChpWzBdWydpbmdyZXNzLXBvcnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2F0dGFjaG1lbnQtcG9pbnRzJ11bMF0pCi0gICAgICAgIGRwaWQgPSAgc3RyKGlbMF1bJ3N3aXRjaCddKQotICAgICAgICAjcHJpbnQgcHJpbnRfc3dpdGNoX2FuZF9hbGlhcyhkcGlkLCBkYXRhKQotICAgICAgICByZXR1cm4gcHJpbnRfc3dpdGNoX2FuZF9hbGlhcyhpWzBdWydzd2l0Y2gnXSkgKyAnLycgKyBpZl9uYW1lCi0gICAgaWYgbGVuKGkpID09IDA6Ci0gICAgICAgIHJldHVybiAiIgotICAgIGZpcnN0ID0gaVswXQotICAgIGlmICdwcmltZScgaW4gZmlyc3Q6Ci0gICAgICAgIGlmX25hbWUgPSBkZWNvZGVfb3BlbmZsb3dfcG9ydChpWzBdWydpbmdyZXNzLXBvcnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnYXR0YWNobWVudC1wb2ludHMnXVswXSkKLSAgICAgICAgcmV0dXJuICIlcy8lcytbJXNdIiAlIChyZXBsYWNlX3N3aXRjaF93aXRoX2FsaWFzKGlbMF1bJ3N3aXRjaCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9uYW1lLCBzdHIobGVuKGkpLTEpKQotICAgIHJldHVybiAibXVsdGlwbGUgKCIgKyBzdHIobGVuKGkpKSArICIpIgotCi0KLWRlZiBwcmludF9hbGxfaG9zdF9hdHRhY2htZW50X3BvaW50cyhpLCBkYXRhPU5vbmUpOgotICAgIGlmIGkgPT0gTm9uZToKLSAgICAgICAgcmV0dXJuICcnCi0gICAgcmV0dXJuICcgJy5qb2luKFtyZXBsYWNlX3N3aXRjaF93aXRoX2FsaWFzKHhbJ3N3aXRjaCddKSArIFwKLSAgICAgICAgICAgICAgICAgICAgICcvJyArIGRlY29kZV9vcGVuZmxvd19wb3J0KHhbJ2luZ3Jlc3MtcG9ydCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnYXR0YWNobWVudC1wb2ludHMnXVswXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGldKQotCi0KLWRlZiBwcmludF9kZXZpY2VtYW5hZ2VyX2F0dGFjaG1lbnRfcG9pbnRzKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSA9PSBOb25lOgotICAgICAgICByZXR1cm4gJycKLSAgICByZXR1cm4gJyAnLmpvaW4oW3JlcGxhY2Vfc3dpdGNoX3dpdGhfYWxpYXMoeFsnc3dpdGNoJ10pICsgXAotICAgICAgICAgICAgICAgICAgICAgJy8nICsgZGVjb2RlX29wZW5mbG93X3BvcnQoeFsncG9ydCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnYXR0YWNobWVudC1wb2ludHMnXVswXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGldKQotCi0KLWRlZiBwcmludF9jbHVzdGVyX2lkKGksIGRhdGE9Tm9uZSk6Ci0gICAgcmV0dXJuIHN0cihpKQotCi0KLWRlZiBwcmludF9zd2l0Y2hlcyhpLCBkYXRhPU5vbmUpOgotICAgIHJldHVybiAnICcuam9pbihbcmVwbGFjZV9zd2l0Y2hfd2l0aF9hbGlhcyhkcGlkKSBmb3IgZHBpZCBpbiBpXSkKLQotCi1kZWYgcHJpbnRfc2luZ2xlX3RhZyh0YWcpOgotICAgIGZpZWxkcyA9IHRhZy5zcGxpdCgnfCcpCi0gICAgcmV0dXJuICIlcy4lcz0lcyIgJSAoZmllbGRzWzBdLGZpZWxkc1sxXSxmaWVsZHNbMl0pCi0KLWRlZiBwcmludF9ob3N0X3RhZ3MoaSwgZGF0YT1Ob25lKToKLSAgICBpZiBpID09IE5vbmUgb3IgbGVuKGkpID09IDA6Ci0gICAgICAgIHJldHVybiAiIgotICAgIHRhZyA9IGkKLSAgICBpZiB0eXBlKHRhZykgPT0gZGljdDoKLSAgICAgICAgdGFnID0gW2ldCi0gICAgICAgIAotICAgIGlmIGxlbih0YWcpID09IDE6Ci0gICAgICAgICMgJ3RhZycgaXMgYSBjb21wbGV0ZSByb3cgZnJvbSB0aGUgc3RvcmUsIHNwZWNpZmljYWxseSAndGFnLW1hcHBpbmcnCi0gICAgICAgICMgdGhlICd0YWcnIGtleSBob2xkcyBhIG5hbWUgd2hpY2ggbG9va3MgbGlrZTogPG5hbWVzcGFjZT58PG5hbWU+fDx2YWx1ZT4KLSAgICAgICAgIyB3aGljaCBpcyB0aGVuIHNwbGl0LCBhbmQgcmVjb21iaW5lZCBmb3IgZGlzcGxheQotICAgICAgICByZXR1cm4gcHJpbnRfc2luZ2xlX3RhZyh0YWdbMF1bJ3RhZyddKQotICAgIGlmIGxlbih0YWcpID09IDA6Ci0gICAgICAgIHJldHVybiAiIgotICAgIHJldHVybiAibXVsdGlwbGUgKCIgKyBzdHIobGVuKHRhZykpICsgIikiCi0KLQotZGVmIHByaW50X2FsbF9ob3N0X3RhZ3MoaSwgZGF0YT1Ob25lKToKLSAgICBpZiBpID09IE5vbmU6Ci0gICAgICAgIHJldHVybiAnJwotICAgIGlmIGkgPT0gZGljdDoKLSAgICAgICAgcmV0dXJuIHByaW50X3NpbmdsZV90YWcoaVsndGFnJ10pCi0gICAgcmV0dXJuICcgJy5qb2luKFtwcmludF9zaW5nbGVfdGFnKHhbJ3RhZyddKSBmb3IgeCBpbiBpXSkKLQotCi1kZWYgcHJpbnRfaXBfYWRkcmVzc2VzKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSAhPSBOb25lOgotICAgICAgICBpZiBsZW4oaSkgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBzdHIoaVswXVsnaXAtYWRkcmVzcyddKQotICAgICAgICBpZiBsZW4oaSkgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiAiIgotICAgICAgICAjIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBhZGRyZXNzZWQsIHNlZSBpZiBzb21lIG9mIHRoZSBhZGRyZXNzZXMKLSAgICAgICAgIyBhcmUgImxlc3MiIGltcG9ydGFudCB0aGFuIG90aGVycy4KLSAgICAgICAgbGVzc19pbnRlcmVzdGluZyA9IDAKLSAgICAgICAgbW9yZV9pbnRlcmVzdGluZyA9IE5vbmUKLSAgICAgICAgZm9yIGlwcyBpbiBpOgotICAgICAgICAgICAgaWYgaXBzWydpcC1hZGRyZXNzJ10gPT0gJzAuMC4wLjAnOgotICAgICAgICAgICAgICAgIGxlc3NfaW50ZXJlc3RpbmcgKz0gMQotICAgICAgICAgICAgZWxpZiByZS5tYXRjaChyJzE2OS4yNTQuKicsIGlwc1snaXAtYWRkcmVzcyddKToKLSAgICAgICAgICAgICAgICBsZXNzX2ludGVyZXN0aW5nICs9IDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbW9yZV9pbnRlcmVzdGluZyA9IGlwc1snaXAtYWRkcmVzcyddCi0KLSAgICAgICAgaWYgbGVuKGkpID09IGxlc3NfaW50ZXJlc3RpbmcgKyAxOgotICAgICAgICAgICAgcmV0dXJuICIlcysoJWQpIiAlIChtb3JlX2ludGVyZXN0aW5nLCBsZXNzX2ludGVyZXN0aW5nKQotICAgICAgICBzID0gc29ydGVkKGksIGtleT1sYW1iZGEgazoga1snbGFzdC1zZWVuJ10pCi0gICAgICAgIHJldHVybiAiJXMrKCVkKSIgJSAoc1stMV1bJ2lwLWFkZHJlc3MnXSwgbGVuKHMpIC0gMSkKLSAgICAgICAgIyByZXR1cm4gIm11bHRpcGxlICgiICsgc3RyKGxlbihpKSkgKyAiKSIgICAgCi0gICAgcmV0dXJuICJVbmtub3duIgotCi0KLWRlZiBwcmludF9hbGxfaXBfYWRkcmVzc2VzKGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgaSA9PSBOb25lOgotICAgICAgICByZXR1cm4gJycKLSAgICByZXR1cm4gJyAnLmpvaW4oW3hbJ2lwLWFkZHJlc3MnXSBmb3IgeCBpbiBpXSkKLQotCi1kZWYgcHJpbnRfZGV2aWNlbWFuYWdlcl9pcF9hZGRyZXNzZXMoaSwgZGF0YT1Ob25lKToKLSAgICBpZiBpID09IE5vbmU6Ci0gICAgICAgIHJldHVybiAnJwotICAgIHJldHVybiAnICcuam9pbihbeFsnaXAnXSBmb3IgeCBpbiBpXSkKLQotCi1kZWYgcHJpbnRfam9pbl9saXN0KGksIGRhdGE9Tm9uZSk6Ci0gICAgcmV0dXJuICcsICcuam9pbihpKQotCi0KLWRlZiByZXBsYWNlX3dpdGhfYWxpYXMob2JqZWN0X3R5cGUsIGksIGRhdGE9Tm9uZSk6Ci0gICAgIiIiCi0gICAgdXNlIHdoZW4gd2UgaGF2ZSBhbGlhc2VzIGZvciBvdGhlciBvYmplY3RzCi0gICAgIiIiCi0gICAgZ2xvYmFsIGFsaWFzX2RpY3RzCi0gICAgYWxpYXNfZGljdCA9IGFsaWFzX2RpY3RzLmdldChvYmplY3RfdHlwZSwge2kgOiBpfSkKLSAgICBpZiBub3QgYWxpYXNfZGljdDoKLSAgICAgICAgcmV0dXJuIGkKLSAgICByZXR1cm4gYWxpYXNfZGljdC5nZXQoaSwgaSkKLQotCi1kZWYgcHJpbnRfc3dpdGNoX2FuZF9hbGlhcyhpLCBkYXRhPU5vbmUpOgotICAgICIiIgotICAgICIiIgotICAgIGRwaWQgPSBzdHIoaSkKLSAgICBhbGlhcyA9IHJlcGxhY2Vfc3dpdGNoX3dpdGhfYWxpYXMoaSwgZGF0YSkKLSAgICBpZiBkcGlkID09IGFsaWFzOgotICAgICAgICBkcGlkX25hbWUgPSBnZXRfc3dpdGNoZXNfbmFtZXMob2JqZWN0LCBkYXRhKQotICAgICAgICBpZiBpIGluIGRwaWRfbmFtZToKLSAgICAgICAgICAgIGFsaWFzID0gIGRwaWRfbmFtZVtpXQotICAgICAgICAgICAgcmV0dXJuIGRwaWQgKyAnICgnICsgYWxpYXMgKyAnKScKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBkcGlkCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIGRwaWQgKyAnICgnICsgYWxpYXMgKyAnKScKLQotIAotZGVmIHByaW50X3N3aXRjaF9hbmRfYWxpYXNfZHBpZF9hc19sb25nKGksIGRhdGE9Tm9uZSk6Ci0gICAgZHBpZCA9IGNvbnZlcnRfbG9uZ190b19kcGlkKGkpCi0gICAgcmV0dXJuIHByaW50X3N3aXRjaF9hbmRfYWxpYXMoZHBpZCkKLQotCi1kZWYgcHJpbnRfc3dpdGNoX2ludGVyZmFjZV9hbmRfYWxpYXMoaSwgZGF0YT1Ob25lKToKLSAgICAiIiIKLSAgICAiIiIKLSAgICBzd2l0Y2hfaW50ZXJmYWNlID0gc3RyKGkpCi0gICAgcmV0dXJuIHN3aXRjaF9pbnRlcmZhY2UKLQotCi1kZWYgcHJpbnRfaG9zdF9hbmRfYWxpYXMoaSwgZGF0YT1Ob25lKToKLSAgICAjIFRoZSB2YWx1ZSBvZiAnaScgaGVyZSBvdWdodCB0byBiZSB0aGUgcHJpbWFyeSBrZXkKLSAgICAjIGZvciB0aGUgaG9zdCwgd2hpY2ggaXMgYSBjb21wb3VuZCBrZXkuICBUcnkgaGFyZCB0bwotICAgICMgbm90IGRlYWwgd2l0aCB0aGUgY29uc3RydWN0aW9uIG9mIHRoZSBrZXkuCi0gICAgbWFjID0gc3RyKGkpCi0gICAgIyBpZiB0aGUgaG9zdCBhZGRyZXNzIGlzIGVpZ2h0IGhleCB2YWx1ZXMsIGNob3Agb2ZmIHRoZSBwcmVmaXgKLSAgICAjIG5hc3R5IGhhY2sgdG8gZGVhbCB3aXRoIHRoZSB1c2Ugb2YgYSBpbnQ2NCB0byBob2xkIGEgaG9zdAotICAgIGlmIGxlbihtYWMpID09IDIzOgotICAgICAgICBtYWMgPSBtYWNbNjpdCi0gICAgICAgIGkgPSBtYWMKLSAgICBuYW1lID0gcmVwbGFjZV9ob3N0X3dpdGhfYWxpYXMobWFjLCBkYXRhKQotICAgIGlmIGRhdGEgPT0gTm9uZToKLSAgICAgICAgZGF0YSA9IHt9Ci0KLSAgICBtYWNfaW5fZGF0YSAgPSBkYXRhLmdldCgnbWFjJykKLSAgICBzdWZmaXggPSAnJwotICAgIGlmIG5hbWUgIT0gbWFjOgotICAgICAgICBzdWZmaXggPSAnICglcyknICUgbmFtZQotCi0gICAgaWYgbWFjX2luX2RhdGE6Ci0gICAgICAgIHJldHVybiBtYWNfaW5fZGF0YSArIHN1ZmZpeAotICAgIHJldHVybiBtYWMgKyBzdWZmaXgKLQotCi1kZWYgcHJpbnRfdmxhbl9hbmRfYWxpYXMoaSwgZGF0YT1Ob25lKToKLSAgICB2bGFuID0gaW50KGkpCi0gICAgIyBpZiB0aGUgaG9zdCBhZGRyZXNzIGlzIGVpZ2h0IGhleCB2YWx1ZXMsIGNob3Agb2ZmIHRoZSBwcmVmaXgKLSAgICAjIG5hc3R5IGhhY2sgdG8gZGVhbCB3aXRoIHRoZSB1c2Ugb2YgYSBpbnQ2NCB0byBob2xkIGEgaG9zdAotICAgIHJldHVybiB2bGFuCi0KLQotZGVmIHByaW50X2hvc3RfYW5kX2FsaWFzX21hY19hc19sb25nKGksIGRhdGE9Tm9uZSk6Ci0gICAgbWFjID0gY29udmVydF9tYWNfaW5fZGVjaW1hbF90b19oZXhfc3RyaW5nKGkpCi0gICAgcmV0dXJuIHByaW50X2hvc3RfYW5kX2FsaWFzKG1hYywgZGF0YSkKLQotZGVmIHByaW50X2hvc3RfYW5kX2FsaWFzX21hY19hc19sb25nX3N0cihpLCBkYXRhPU5vbmUpOgotICAgICMgaSBpcyBsb25nIGRlY2ltYWwgYXMgc3RyaW5nLCBlLmcuICIxMzQyIgotICAgIG1hY19kZWNpbWFsID0gaW50KGkpCi0gICAgbWFjID0gY29udmVydF9tYWNfaW5fZGVjaW1hbF90b19oZXhfc3RyaW5nKG1hY19kZWNpbWFsKQotICAgIHJldHVybiBwcmludF9ob3N0X2FuZF9hbGlhcyhtYWMsIGRhdGEpCi0KLQotIyBob3N0IGxpc3QgbWF5IGFsc28gY29udGFpbiBvdGhlciBpdGVtcyAoaWU6IG5vdCBtYWNzKQotZGVmIHByaW50X2hvc3RfbGlzdF9hbmRfYWxpYXMoaSwgZGF0YT1Ob25lKToKLSAgICAjIHVzZSBhdCBtb3N0IDYwIGNvbHVtbnMKLQotICAgIG1vcmUgPSAwCi0gICAgb3V0cHV0ID0gIiIKLSAgICBmb3IgaG9zdCBpbiBpOgotICAgICAgICBtYWMgPSBzdHIoaG9zdCkKLSAgICAgICAgbmFtZSA9IHJlcGxhY2VfaG9zdF93aXRoX2FsaWFzKGhvc3QsIGRhdGEpCi0gICAgICAgIGlmIG5hbWUgIT0gbWFjOgotICAgICAgICAgICAgbWFjICs9ICAnICgnICsgbmFtZSArICcpJwotICAgICAgICBpZiBsZW4ob3V0cHV0KSArIGxlbihtYWMpID4gNjA6Ci0gICAgICAgICAgICBtb3JlICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dHB1dCArPSBtYWMKLSAgICAgICAgICAgIG91dHB1dCArPSAnICcKLSAgICBpZiBtb3JlOgotICAgICAgICByZXR1cm4gIiVzKyglcykiICUgKG91dHB1dCwgbW9yZSkKLSAgICByZXR1cm4gb3V0cHV0Ci0KLQotZGVmIHJlcGxhY2Vfc3dpdGNoX3dpdGhfYWxpYXMoaSwgZGF0YT1Ob25lKToKLSAgICByZXR1cm4gcmVwbGFjZV93aXRoX2FsaWFzKCJzd2l0Y2gtY29uZmlnIiwgaSwgZGF0YSkKLQotZGVmIGNvbnZlcnRfaW52ZXJzZV9uZXRtYXNrX2hhbmRsZXIoaSwgZGF0YT1Ob25lKToKLSAgICBpZiBub3QgJy4nIGluIGk6Ci0gICAgICAgIHJldHVybiBpCi0gICAgc3BsaXRfYnl0ZXMgPSBpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gIiVzLiVzLiVzLiVzIiAlICgyNTUtaW50KHNwbGl0X2J5dGVzWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUtaW50KHNwbGl0X2J5dGVzWzFdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUtaW50KHNwbGl0X2J5dGVzWzJdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUtaW50KHNwbGl0X2J5dGVzWzNdKSkKLQotZGVmIHJlcGxhY2VfaG9zdF93aXRoX2FsaWFzKGksIGRhdGE9Tm9uZSk6Ci0gICAgcmV0dXJuIHJlcGxhY2Vfd2l0aF9hbGlhcygiaG9zdC1jb25maWciLCBpLCBkYXRhKQotCi0KLWRlZiByZXBsYWNlX2NvbnRyb2xsZXJfbm9kZV93aXRoX2FsaWFzKGksIGRhdGE9Tm9uZSk6Ci0gICAgcmV0dXJuIHJlcGxhY2Vfd2l0aF9hbGlhcygiY29udHJvbGxlci1ub2RlIiwgaSwgZGF0YSkKLQotCi1kZWYgcHJpbnRfdm5zX2NvdW50X2RpY3QoaSwgZGF0YT1Ob25lKToKLSAgICBvdXRwdXQgPSAiIgotICAgIG1vcmUgPSAwCi0gICAgZm9yIHZucyBpbiBpOgotICAgICAgICAjIHBvc3NpYmx5IHZuczpyZWZzIGluc3RlYWQ/Ci0gICAgICAgICNpdGVtID0gJyVzOiVzICcgJSAodm5zLCBpW3Zuc10pCi0gICAgICAgIGl0ZW0gPSAnJXMgJyAlIHZucwotICAgICAgICBpZiBsZW4ob3V0cHV0KSA+IDQwOgotICAgICAgICAgICAgbW9yZSArPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXRwdXQgKz0gaXRlbQotICAgIGlmIG1vcmU6Ci0gICAgICAgIHJldHVybiAiJXMgKyglcykiICUgKG91dHB1dCwgbW9yZSkKLSAgICByZXR1cm4gb3V0cHV0Ci0KLQotZGVmIHByaW50X3Zuc19waHlzaWNhbF9pbnRlcmZhY2VfaWQoaSwgZGF0YT1Ob25lKToKLSAgICByZXR1cm4gaS5zcGxpdCgnfCcpWzJdCi0KLQotZGVmIHByaW50X2RvbWFpbl9uYW1lX3NlcnZlcnMoaSwgZGF0YT1Ob25lKToKLSAgICBpZiBsZW4oaSkgPT0gMDoKLSAgICAgICAgcmV0dXJuICdOb25lJwotICAgIHJlc3VsdCA9IGlbMF0KLSAgICBpZiBsZW4oaSkgPiAxOgotICAgICAgICByZXN1bHQgKz0gJyArKCVkKScgJSAobGVuKGkpLTEpCi0gICAgcmV0dXJuIHJlc3VsdAotCi0KLWRlZiBwcmludF9hbGxfZG9tYWluX25hbWVfc2VydmVycyhpLCBkYXRhPU5vbmUpOgotICAgIGlmIGkgPT0gTm9uZToKLSAgICAgICAgcmV0dXJuICcnCi0gICAgcmV0dXJuICcsICcuam9pbihpKQotCi0KLWRlZiBwcmludF9jbG9ja19zdHJpbmcoaSwgZGF0YSA9IE5vbmUpOgotICAgIHByaW50IGksIGRhdGEKLQotCi1kZWYgcmVwbGFjZV9ib29sZWFuX3dpdGhfZW5hYmxlX2Rpc2FibGUoaSwgZGF0YT1Ob25lKToKLSAgICByZXR1cm4geyBUcnVlIDogJ2VuYWJsZWQnLCBGYWxzZSA6ICdkaXNhYmxlZCcgfSBbaV0KLQotCi1kZWYgc2FuaXRpemVfdW5pY29kZShpLCBkYXRhPU5vbmUpOgotICAgIHJldHVybiB1bmljb2RlKGksIGVycm9ycz0naWdub3JlJykKLQotCi1kZWYgY29udHJvbGxlcl9ub2RlX21lX2VudHJ5KGksIGRhdGE9Tm9uZSk6Ci0gICAgaWYgZGF0YS5nZXQoJ21lJywgJycpID09ICcnOgotICAgICAgICByZXR1cm4gJ05vdCBjdXJyZW50IGNvbnRyb2xsZXInCi0gICAgcmV0dXJuICdjdXJyZW50IGNvbnRyb2xsZXInCi0KLWRlZiBjb250cm9sbGVyX25vZGVfbWUoaSwgZGF0YT1Ob25lKToKLSAgICBpZiAnbWUnIGluIGRhdGE6Ci0gICAgICAgIHJldHVybiAnKicKLSAgICByZXR1cm4gJycKLQotCi1kZWYgcHJpbnRfaXB2NGFkZHIoaSwgZGF0YT1Ob25lKToKLSAgICBpcGFkZHIgPSBkYXRhWydpcCddCi0gICAgbWFzayA9IGRhdGFbJ21hc2tsZW4nXQotICAgIGlmIChpcGFkZHIgIT0gIioiKToKLSAgICAgICAgaXBhZGRyX2ludCA9IHJlZHVjZShsYW1iZGEgYSxiOiBhPDw4IHwgYiwgbWFwKGludCwgaXBhZGRyLnNwbGl0KCIuIikpKQotICAgICAgICBtYXNrID0gKDEgPDwgbWFzaykgLSAxCi0gICAgICAgIGlwYWRkcl9pbnQgPSBpcGFkZHJfaW50ICYgfm1hc2sKLSAgICAgICAgaXBhZGRyID0gIi4iLmpvaW4obWFwKGxhbWJkYSBuOiBzdHIoaXBhZGRyX2ludCA+Pm4gJiAweEZGKSwgWzI0LDE2LDgsMF0pKQotICAgIHJldHVybiBpcGFkZHIKLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9odHRwc193cmFwcGVyLnB5IGIvY2xpL2NsaS9odHRwc193cmFwcGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlZTI5MWRlLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvaHR0cHNfd3JhcHBlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDcgR29vZ2xlIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0jIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIiIiRXh0ZW5zaW9ucyB0byBhbGxvdyBIVFRQUyByZXF1ZXN0cyB3aXRoIFNTTCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uLiIiIgotCi0KLWltcG9ydCBodHRwbGliCi1pbXBvcnQgcmUKLWltcG9ydCBzb2NrZXQKLWltcG9ydCB1cmxsaWIyCi1pbXBvcnQgc3NsCi0KLQotY2xhc3MgSW52YWxpZENlcnRpZmljYXRlRXhjZXB0aW9uKGh0dHBsaWIuSFRUUEV4Y2VwdGlvbik6Ci0gICIiIlJhaXNlZCB3aGVuIGEgY2VydGlmaWNhdGUgaXMgcHJvdmlkZWQgd2l0aCBhbiBpbnZhbGlkIGhvc3RuYW1lLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBjZXJ0LCByZWFzb24pOgotICAgICIiIkNvbnN0cnVjdG9yLgotCi0gICAgQXJnczoKLSAgICAgIGhvc3Q6IFRoZSBob3N0bmFtZSB0aGUgY29ubmVjdGlvbiB3YXMgbWFkZSB0by4KLSAgICAgIGNlcnQ6IFRoZSBTU0wgY2VydGlmaWNhdGUgKGFzIGEgZGljdGlvbmFyeSkgdGhlIGhvc3QgcmV0dXJuZWQuCi0gICAgIiIiCi0gICAgaHR0cGxpYi5IVFRQRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYpCi0gICAgc2VsZi5ob3N0ID0gaG9zdAotICAgIHNlbGYuY2VydCA9IGNlcnQKLSAgICBzZWxmLnJlYXNvbiA9IHJlYXNvbgotCi0gIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgIHJldHVybiAoJ0hvc3QgJXMgcmV0dXJuZWQgYW4gaW52YWxpZCBjZXJ0aWZpY2F0ZSAoJXMpOiAlc1xuJwotICAgICAgICAgICAgJ1RvIGxlYXJuIG1vcmUsIHNlZSAnCi0gICAgICAgICAgICAnaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9hcHBlbmdpbmUva2IvZ2VuZXJhbC5odG1sI3JwY3NzbCcgJQotICAgICAgICAgICAgKHNlbGYuaG9zdCwgc2VsZi5yZWFzb24sIHNlbGYuY2VydCkpCi0KLWNsYXNzIENlcnRWYWxpZGF0aW5nSFRUUFNDb25uZWN0aW9uKGh0dHBsaWIuSFRUUENvbm5lY3Rpb24pOgotICAiIiJBbiBIVFRQQ29ubmVjdGlvbiB0aGF0IGNvbm5lY3RzIG92ZXIgU1NMIGFuZCB2YWxpZGF0ZXMgY2VydGlmaWNhdGVzLiIiIgotCi0gIGRlZmF1bHRfcG9ydCA9IGh0dHBsaWIuSFRUUFNfUE9SVAotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0PU5vbmUsIGtleV9maWxlPU5vbmUsIGNlcnRfZmlsZT1Ob25lLAotICAgICAgICAgICAgICAgY2FfY2VydHM9Tm9uZSwgc3RyaWN0PU5vbmUsICoqa3dhcmdzKToKLSAgICAiIiJDb25zdHJ1Y3Rvci4KLQotICAgIEFyZ3M6Ci0gICAgICBob3N0OiBUaGUgaG9zdG5hbWUuIENhbiBiZSBpbiAnaG9zdDpwb3J0JyBmb3JtLgotICAgICAgcG9ydDogVGhlIHBvcnQuIERlZmF1bHRzIHRvIDQ0My4KLSAgICAgIGtleV9maWxlOiBBIGZpbGUgY29udGFpbmluZyB0aGUgY2xpZW50J3MgcHJpdmF0ZSBrZXkKLSAgICAgIGNlcnRfZmlsZTogQSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsaWVudCdzIGNlcnRpZmljYXRlcwotICAgICAgY2FfY2VydHM6IEEgZmlsZSBjb250aWFuaW5nIGEgc2V0IG9mIGNvbmNhdGVuYXRlZCBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkKLSAgICAgICAgICBjZXJ0cyBmb3IgdmFsaWRhdGluZyB0aGUgc2VydmVyIGFnYWluc3QuCi0gICAgICBzdHJpY3Q6IFdoZW4gdHJ1ZSwgY2F1c2VzIEJhZFN0YXR1c0xpbmUgdG8gYmUgcmFpc2VkIGlmIHRoZSBzdGF0dXMgbGluZQotICAgICAgICAgIGNhbid0IGJlIHBhcnNlZCBhcyBhIHZhbGlkIEhUVFAvMS4wIG9yIDEuMSBzdGF0dXMgbGluZS4KLSAgICAiIiIKLSAgICBodHRwbGliLkhUVFBDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIHN0cmljdCwgKiprd2FyZ3MpCi0gICAgc2VsZi5rZXlfZmlsZSA9IGtleV9maWxlCi0gICAgc2VsZi5jZXJ0X2ZpbGUgPSBjZXJ0X2ZpbGUKLSAgICBzZWxmLmNhX2NlcnRzID0gY2FfY2VydHMKLSAgICBpZiBzZWxmLmNhX2NlcnRzOgotICAgICAgc2VsZi5jZXJ0X3JlcXMgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgIGVsc2U6Ci0gICAgICBzZWxmLmNlcnRfcmVxcyA9IHNzbC5DRVJUX05PTkUKLQotICBkZWYgX0dldFZhbGlkSG9zdHNGb3JDZXJ0KHNlbGYsIGNlcnQpOgotICAgICIiIlJldHVybnMgYSBsaXN0IG9mIHZhbGlkIGhvc3QgZ2xvYnMgZm9yIGFuIFNTTCBjZXJ0aWZpY2F0ZS4KLQotICAgIEFyZ3M6Ci0gICAgICBjZXJ0OiBBIGRpY3Rpb25hcnkgcmVwcmVzZW50aW5nIGFuIFNTTCBjZXJ0aWZpY2F0ZS4KLSAgICBSZXR1cm5zOgotICAgICAgbGlzdDogQSBsaXN0IG9mIHZhbGlkIGhvc3QgZ2xvYnMuCi0gICAgIiIiCi0gICAgaWYgJ3N1YmplY3RBbHROYW1lJyBpbiBjZXJ0OgotICAgICAgcmV0dXJuIFt4WzFdIGZvciB4IGluIGNlcnRbJ3N1YmplY3RBbHROYW1lJ10gaWYgeFswXS5sb3dlcigpID09ICdkbnMnXQotICAgIGVsc2U6Ci0gICAgICByZXR1cm4gW3hbMF1bMV0gZm9yIHggaW4gY2VydFsnc3ViamVjdCddCi0gICAgICAgICAgICAgIGlmIHhbMF1bMF0ubG93ZXIoKSA9PSAnY29tbW9ubmFtZSddCi0KLSAgZGVmIF9WYWxpZGF0ZUNlcnRpZmljYXRlSG9zdG5hbWUoc2VsZiwgY2VydCwgaG9zdG5hbWUpOgotICAgICIiIlZhbGlkYXRlcyB0aGF0IGEgZ2l2ZW4gaG9zdG5hbWUgaXMgdmFsaWQgZm9yIGFuIFNTTCBjZXJ0aWZpY2F0ZS4KLQotICAgIEFyZ3M6Ci0gICAgICBjZXJ0OiBBIGRpY3Rpb25hcnkgcmVwcmVzZW50aW5nIGFuIFNTTCBjZXJ0aWZpY2F0ZS4KLSAgICAgIGhvc3RuYW1lOiBUaGUgaG9zdG5hbWUgdG8gdGVzdC4KLSAgICBSZXR1cm5zOgotICAgICAgYm9vbDogV2hldGhlciBvciBub3QgdGhlIGhvc3RuYW1lIGlzIHZhbGlkIGZvciB0aGlzIGNlcnRpZmljYXRlLgotICAgICIiIgotICAgIGhvc3RzID0gc2VsZi5fR2V0VmFsaWRIb3N0c0ZvckNlcnQoY2VydCkKLSAgICBmb3IgaG9zdCBpbiBob3N0czoKLSAgICAgIGhvc3RfcmUgPSBob3N0LnJlcGxhY2UoJy4nLCAnXC4nKS5yZXBsYWNlKCcqJywgJ1teLl0qJykKLSAgICAgIGlmIHJlLnNlYXJjaCgnXiVzJCcgJSAoaG9zdF9yZSwpLCBob3N0bmFtZSwgcmUuSSk6Ci0gICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLSAgZGVmIGNvbm5lY3Qoc2VsZik6Ci0gICAgIkNvbm5lY3QgdG8gYSBob3N0IG9uIGEgZ2l2ZW4gKFNTTCkgcG9ydC4iCi0gICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICBzb2NrLmNvbm5lY3QoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSkKLSAgICBzZWxmLnNvY2sgPSBzc2wud3JhcF9zb2NrZXQoc29jaywga2V5ZmlsZT1zZWxmLmtleV9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1zZWxmLmNlcnRfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNlbGYuY2VydF9yZXFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1zZWxmLmNhX2NlcnRzKQotICAgIGlmIHNlbGYuY2VydF9yZXFzICYgc3NsLkNFUlRfUkVRVUlSRUQ6Ci0gICAgICBjZXJ0ID0gc2VsZi5zb2NrLmdldHBlZXJjZXJ0KCkKLSAgICAgIGhvc3RuYW1lID0gc2VsZi5ob3N0LnNwbGl0KCc6JywgMClbMF0KLSAgICAgIGlmIG5vdCBzZWxmLl9WYWxpZGF0ZUNlcnRpZmljYXRlSG9zdG5hbWUoY2VydCwgaG9zdG5hbWUpOgotICAgICAgICByYWlzZSBJbnZhbGlkQ2VydGlmaWNhdGVFeGNlcHRpb24oaG9zdG5hbWUsIGNlcnQsICdob3N0bmFtZSBtaXNtYXRjaCcpCi0KLQotY2xhc3MgQ2VydFZhbGlkYXRpbmdIVFRQU0hhbmRsZXIodXJsbGliMi5IVFRQU0hhbmRsZXIpOgotICAiIiJBbiBIVFRQSGFuZGxlciB0aGF0IHZhbGlkYXRlcyBTU0wgY2VydGlmaWNhdGVzLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgIiIiQ29uc3RydWN0b3IuIEFueSBrZXl3b3JkIGFyZ3MgYXJlIHBhc3NlZCB0byB0aGUgaHR0cGxpYiBoYW5kbGVyLiIiIgotICAgIHVybGxpYjIuQWJzdHJhY3RIVFRQSGFuZGxlci5fX2luaXRfXyhzZWxmKQotICAgIHNlbGYuX2Nvbm5lY3Rpb25fYXJncyA9IGt3YXJncwotCi0gIGRlZiBodHRwc19vcGVuKHNlbGYsIHJlcSk6Ci0gICAgZGVmIGh0dHBfY2xhc3Nfd3JhcHBlcihob3N0LCAqKmt3YXJncyk6Ci0gICAgICBmdWxsX2t3YXJncyA9IGRpY3Qoc2VsZi5fY29ubmVjdGlvbl9hcmdzKQotICAgICAgZnVsbF9rd2FyZ3MudXBkYXRlKGt3YXJncykKLSAgICAgIHJldHVybiBDZXJ0VmFsaWRhdGluZ0hUVFBTQ29ubmVjdGlvbihob3N0LCAqKmZ1bGxfa3dhcmdzKQotICAgIHRyeToKLSAgICAgIHJldHVybiBzZWxmLmRvX29wZW4oaHR0cF9jbGFzc193cmFwcGVyLCByZXEpCi0gICAgZXhjZXB0IHVybGxpYjIuVVJMRXJyb3IsIGU6Ci0gICAgICBpZiB0eXBlKGUucmVhc29uKSA9PSBzc2wuU1NMRXJyb3IgYW5kIGUucmVhc29uLmFyZ3NbMF0gPT0gMToKLSAgICAgICAgcmFpc2UgSW52YWxpZENlcnRpZmljYXRlRXhjZXB0aW9uKHJlcS5ob3N0LCAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVhc29uLmFyZ3NbMV0pCi0gICAgICByYWlzZQotCi0gIGh0dHBzX3JlcXVlc3QgPSB1cmxsaWIyLkFic3RyYWN0SFRUUEhhbmRsZXIuZG9fcmVxdWVzdF8KZGlmZiAtLWdpdCBhL2NsaS9jbGkvbWlkdy5weSBiL2NsaS9jbGkvbWlkdy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGY5NzNiYy4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL21pZHcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MjkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIyBUaGUgZGF0YWJhc2UvbW9kZWwgZGVzY3JpcHRpb25zIGV4aXN0IHRvIG1lZXQgcGFydGljdWxhcgotIyBuZWVkcywgZm9yIGV4YW1wbGUsIHN3aXRjaC1hbGlhcyBleGlzdCB0byBwcm92aWRlIGFuIAotIyBhbHRlcm5hdGUgbmFtZSBzcGFjZSBmcm9tIGRwaWQncywgdG8gYWxsb3cgZm9yIGEgbW9yZQotIyByZWFkYWJsZSBhbmQgaHVtYW4gdXNhYmxlIGZvcm0gb2YgdGhlIHNhbWUgZHBpZC4gIEFsaWFzZXMKLSMgd291bGQgdGhlbiBuYXR1cmFsbHkgbmVlZCBhIGFsaWFzLT5kcGlkIGNvbnZlcnNpb24sIGFuZAotIyBhdCB0aGUgc2FtZSB0aW1lLCBhIGRwaWQtPmFsaWFzIChhdCBsZWFzdCBmb3IgdGhlIGRpc3BsYXkKLSMgb2YgZHBpZCdzKS4KLSMKLSMgVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgcHJvdmlkZSB0aGVzZSB0eXBlIG9mIGFic3RyYWN0aW9ucywKLSMgdGFraW5nIHRoZSBvdXRwdXQgZnJvbSBtb2RlbCBsb29rdXAncyBpbiB0aGUgcmVzdCBhcGksIGFuZAotIyBzdXBwbHlpbmcgc29tZSBzZXJ2aWNlIHVzZWQgYnkgdGhlIGNsaS4KLSMKLQotaW1wb3J0IHJlc3RfdG9fbW9kZWwKLWltcG9ydCBmbXRjbnYKLWltcG9ydCBqc29uCi1pbXBvcnQgdXRpZgotCi1kZWYgaW5pdF9taWR3YXJlKGJzLCBtb2RpKToKLSAgICBnbG9iYWwgc2Ruc2gsIG1pCi0gICAgc2Ruc2ggPSBicwotICAgIG1pID0gbW9kaQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBjcmVhdGVfb2JqX3R5cGVfZGljdChvYmpfdHlwZSwgZmllbGQsIGtleSA9IE5vbmUsIHZhbHVlID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgZGljdGlvbmFyeSBmcm9tIGEgdGFibGUgc2VhcmNoLCB3aGVyZSB0aGUga2V5IGlzIG9uZSBvZiB0aGUKLSAgICBmaWVsZHMuICBUaGlzIGRvZXNuJ3QgbWFuYWdlIG11bHRpcGxlIGZpZWxkIG1hdGNoZXMuCi0KLSAgICBUeXBpY2FsbHksIHRoZSBmaWVsZCBzZWxlY3RlZCBpcyBhIGZvcmVpZ24ga2V5IGZvciB0aGUgb2JqX3R5cGUuCi0KLSAgICBGb3IgKCdob3N0LW5ldHdvcmstYWRkcmVzcycsICdob3N0JyksIHRoaXMgY3JlYXRlcyBhIGRpY3QKLSAgICBpbmRleGVkIGJ5IHRoZSBtYWMgYWRkcmVzcywgcmV0dXJuaW5nIHRoZSByb3cgaW4gdGhlIHRhYmxlIGFzc29jaWF0ZWQKLSAgICB3aXRoIHRoZSBtYWMgKHNpbmNlIHRoZSBwcmltYXJ5IGtleSBmb3IgJ2hvc3QnIGlzIGEgbWFjIGFkZHJlc3MpLgotCi0gICAgRm9yICgndGFnLW1hcHBpbmcnLCAnaG9zdCcpLCB0aGlzIGNyZWF0ZXMgYSBkaWN0IGluZGV4ZWQgYnkKLSAgICB0aGUgbWFjLCByZXR1cm5pbmcgdGhlIG1hdGNoaW5nIHJvdyBpbiB0aGUgdGFibGUuCi0KLSAgICBub3RlOiBUaGlzIGdldHMgdGhlIHdob2xlIHRhYmxlCi0gICAgIiIiCi0gICAgaWYgbm90IG1pLm9ial90eXBlX2hhc19maWVsZChvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICByZXR1cm4ge30KLQotICAgIGlmIG5vdCBtaS5vYmpfdHlwZV9oYXNfbW9kZWwob2JqX3R5cGUpOgotICAgICAgICBkYXRhID0ge30KLSAgICAgICAgaWYga2V5IGFuZCB2YWx1ZToKLSAgICAgICAgICAgIGRhdGFba2V5XSA9IHZhbHVlCi0gICAgICAgIHJvd3MgPSByZXN0X3RvX21vZGVsLmdldF9tb2RlbF9mcm9tX3VybChvYmpfdHlwZSwgZGF0YSkKLSAgICBlbGlmIG5vdCB0eXBlKGtleSkgaXMgZGljdDoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcm93cyA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKG9ial90eXBlLCBrZXksIHZhbHVlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgZXJyb3JzID0gc2Ruc2gucmVzdF9lcnJvcl90b19kaWN0KGUpCi0gICAgICAgICAgICBwcmludCBzZG5zaC5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgICAgICByb3dzID0gW10KLSAgICBlbHNlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByb3dzID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKG9ial90eXBlLCBrZXkpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvcnMgPSBzZG5zaC5yZXN0X2Vycm9yX3RvX2RpY3QoZSkKLSAgICAgICAgICAgIHByaW50IHNkbnNoLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9ycykKLSAgICAgICAgICAgIHJvd3MgPSBbXQotCi0gICAgc19kaWN0ID0ge30KLSAgICBmb3Igcm93IGluIHJvd3M6Ci0gICAgICAgIGlmIHJvd1tmaWVsZF0gaW4gc19kaWN0OgotICAgICAgICAgICAgc19kaWN0W3Jvd1tmaWVsZF1dLmFwcGVuZChyb3cpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzX2RpY3Rbcm93W2ZpZWxkXV0gPSBbcm93XQotCi0gICAgcmV0dXJuIHNfZGljdAotCi0KLSMKLSMgQUxJQVMKLSMKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgYWxpYXNfbG9va3VwKGFsaWFzX29ial90eXBlLCBhbGlhc19pZCk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgdGhlIGFsaWFzIHJlcGxhY2VtZW50IGJ5IGxvb2tpbmcgaXQgdXAgaW4gdGhlIHN0b3JlLgotICAgIFdoZW4gdGhlcmUgaXMgbm8gYWxpYXMgcmVwbGFjZW1lbnQsIHJldHVybiBOb25lLgotICAgICIiIgotICAgIGZpZWxkID0gbWkuYWxpYXNfb2JqX3R5cGVfZmllbGQoYWxpYXNfb2JqX3R5cGUpCi0gICAgaWYgbm90IGZpZWxkOgotICAgICAgICBwcmludCBzZG5zaC5lcnJvcl9tc2coIkVycm9yOiBubyBmaWVsZCBmb3IgYWxpYXMiKQotICAgICAgICByZXR1cm4gTm9uZQotICAgIHRyeToKLSAgICAgICAgYWxpYXNfa2V5ID0gbWkucGsoYWxpYXNfb2JqX3R5cGUpCi0gICAgICAgICMgdXNlIGFuIGV4YWN0IHNlYXJjaCBpbnN0ZWFkIG9mIGEgJ2dldF9vYmplY3QuLi4oKScgc2luY2UKLSAgICAgICAgIyBhIG1pc3MgZm9yIGFuIGV4YWN0IHNlYXJjaCBjYW4gbGVhZCB0byBhIDQwNCBlcnJvciwgd2hpY2gKLSAgICAgICAgIyBnZXRzIHJlY29yZGVkIGluIHRoZSBlcnJvciBsb2dzCi0gICAgICAgIGFsaWFzX3JvdyA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKGFsaWFzX29ial90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhc19rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWFzX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhhY3QiKQotICAgICAgICBpZiBsZW4oYWxpYXNfcm93KSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIGFsaWFzX3Jvd1swXVtmaWVsZF0KLSAgICAgICAgIyBvbmx5IGxlbihhbGlhc19yb3cpID09IDAgYXQgdGhpcyBwb2ludAotICAgIGV4Y2VwdDoKLSAgICAgICAgcGFzcwotICAgIHJldHVybiBOb25lCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIGNvbnZlcnRfYWxpYXNfdG9fb2JqZWN0X2tleShvYmpfdHlwZSwgbmFtZV9vcl9hbGlhcyk6Ci0gICAgIiIiCi0gICAgRm9yIGEgc3BlY2lmaWMgb2JqX3R5cGUgKHRhYmxlL21vZGVsKSB3aGljaCBtYXkgaGF2ZSBhbiBhbGlhcyAncm93JywKLSAgICByZXR1cm4gdGhlIGFsaWFzIHdoZW4gaXQgZXhpc3RzIGZvciB0aGlzIG5hbWVfb3JfYWxpYXMuCi0gICAgIiIiCi0gICAgaWYgb2JqX3R5cGUgaW4gbWkuYWxpYXNfb2JqX3R5cGVfeHJlZjoKLSAgICAgICAgaWYgbmFtZV9vcl9hbGlhcyBpbiBzZG5zaC5yZXNlcnZlZF93b3JkczoKLSAgICAgICAgICAgIHJldHVybiBuYW1lX29yX2FsaWFzCi0gICAgICAgIGZvciBhbGlhcyBpbiBtaS5hbGlhc19vYmpfdHlwZV94cmVmW29ial90eXBlXToKLSAgICAgICAgICAgIGFsaWFzX3ZhbHVlID0gYWxpYXNfbG9va3VwKGFsaWFzLCBuYW1lX29yX2FsaWFzKQotICAgICAgICAgICAgaWYgYWxpYXNfdmFsdWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsaWFzX3ZhbHVlCi0gICAgcmV0dXJuIG5hbWVfb3JfYWxpYXMKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgYWxpYXNfY2hvaWNlc19mb3JfYWxpYXNfb2JqX3R5cGUoZW50cmllcywgb2JqX3R5cGUsIHRleHQpOgotICAgICIiIgotICAgIFVzZWQgdG8gcmV0dXJuIGFsbCBjaG9pY2VzIG9mIGVudHJpZXMgZm9yIGFuIGFsaWFzLiAgUmVtb3ZlIGFueSBvcmlnaW5hbAotICAgIGl0ZW1zIHdoaWNoIGFwcGVhciBpbiB0aGUgZW50cmllcyBsaXN0IHBhc3NlZCBpbiAgcHJldmVudGluZyBkdXBsaWNhdGlvbgotICAgIG9mIGVudHJpZXMKLQotICAgIEFsc28gc2VlIGNwX2FsaWFzX2Nob2ljZXMoKSwgd2hpY2ggaXMgc2ltaWxhciwgYnV0IGluY2x1ZGVzCi0gICAgdGhlIGN1cnJlbnQgbW9kZS4KLSAgICAiIiIKLSAgICBpZiBvYmpfdHlwZSBpbiBtaS5hbGlhc19vYmpfdHlwZV94cmVmOgotICAgICAgICBmb3IgYWxpYXMgaW4gbWkuYWxpYXNfb2JqX3R5cGVfeHJlZltvYmpfdHlwZV06Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAga2V5ID0gbWkucGsoYWxpYXMpCi0gICAgICAgICAgICAgICAgYWxpYXNfZGljdCA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KGFsaWFzLCBrZXksIGtleSwgdGV4dCkKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyByZW1vdmUgdGhlIGFsaWFzIG5hbWUgaWYgdGhlIGRwaWQgaXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgIyBsaXN0IG9mIGVudHJpZXMuLi4gSW4gYWxsIGNhc2VzIHRoZSBhbGlhcyBpcyBhZGRlZCwKLSAgICAgICAgICAgICAgICAjIGVzcGVjaWFsbHkgc2luY2UgdGhlIGFsaWFzX2RpY3QgbWF5IG9ubHkgY29udGFpbiBzZWxlY3RlZAotICAgICAgICAgICAgICAgICMgZW50cmllcyBmcm9tIHRoZSAndGV4dCcgcXVlcnksIGFuZCBlbnRyaWVzIG1heSBhbHJlYWR5Ci0gICAgICAgICAgICAgICAgIyBleGNsdWRlIHRob3NlIGl0ZW1zLgotICAgICAgICAgICAgICAgIGFsaWFzX2ZpZWxkID0gbWkuYWxpYXNfb2JqX3R5cGVfZmllbGQoYWxpYXMpCi0gICAgICAgICAgICAgICAgaWYgbm90IGFsaWFzX2ZpZWxkOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGFsaWFzX2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGFsaWFzX2RpY3RbaXRlbV1bMF1bYWxpYXNfZmllbGRdIGluIGVudHJpZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLnJlbW92ZShhbGlhc19kaWN0W2l0ZW1dWzBdW2FsaWFzX2ZpZWxkXSkKLSAgICAgICAgICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoaXRlbSkKLQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgcmV0dXJuIGVudHJpZXMKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgYWxpYXNfbG9va3VwX3dpdGhfZm9yZWlnbl9rZXkoYWxpYXNfb2JqX3R5cGUsIGZvcmVpZ25fa2V5KToKLSAgICAiIiIKLSAgICBGaW5kIHRoZSBhbGlhcyBuYW1lIGZvciBzb21lIGFsaWFzIGJhc2VkIG9uIHRoZSBmb3JlaWduIGtleSdzCi0gICAgdmFsdWUgaXQncyBhc3NvY2lhZWQgd2l0aC4KLSAgICAiIiIKLSAgICBmb3JlaWduX2ZpZWxkID0gbWkuYWxpYXNfb2JqX3R5cGVfZmllbGQoYWxpYXNfb2JqX3R5cGUpCi0gICAgdHJ5OgotICAgICAgICByb3dzID0gc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoYWxpYXNfb2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlaWduX2ZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWlnbl9rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhhY3QiKQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgIGVycm9ycyA9IHNkbnNoLnJlc3RfZXJyb3JfdG9fZGljdChlKQotICAgICAgICBwcmludCBzZG5zaC5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgIHJvd3MgPSBbXQotICAgIGlmIGxlbihyb3dzKSA9PSAxOgotICAgICAgICByZXR1cm4gcm93c1swXVttaS5wayhhbGlhc19vYmpfdHlwZSldCi0gICAgcmV0dXJuIE5vbmUKLQotCi0jCi0jIEludGVyZmFjZSBiZXR3ZWVuIHRoZSBjbGkgYW5kIHRhYmxlIG91dHB1dCByZXF1aXJlcyBkaWN0aW9uYXJpZXMKLSMgd2hpY2ggbWFwIGJldHdlZW4gbG93IGl0ZW0gdHlwZSB2YWx1ZXMgKGZvciBleGFtcGxlLCBkcGlkJ3MpIGFuZAotIyBhbGlhcyBuYW1lcyBmb3IgdGhlIGl0ZW1zIChmb3IgZXhhbXBsZSwgc3dpdGNoIGFsaWFzZXMpLCB0byBiZQotIyB1cGRhdGVkIGJlZm9yZSBkaXNwbGF5LiAgIElmIGNhc3NhbmRyYSBjb3VsZCBwcm92aWRlIHNvbWUgdmVyc2lvbgotIyBudW1iZXIgKG9yIGhhc2ggb2YgdGhlIGNvbXBsZXRlIHRhYmxlKSwgdGhlIGxvb2t1cCBjb3VsZCBiZSBhdm9pZGVkCi0jIGJ5IHZhbGlhdGluZyB0aGF0IHRoZSBjdXJyZW50IHJlc3VsdCBpcyB1cC10by1kYXRlLgotIwotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiB1cGRhdGVfc2hvd19hbGlhcyhvYmpfdHlwZSk6Ci0gICAgIiIiCi0gICAgVXBkYXRlIGFsaWFzIGFzc29jaWF0aW9ucyBmb3IgdGhlIHByZXR0eSBwcmludGVyLCB1c2VkIGZvciB0aGUKLSAgICAnc2hvdycgb2YgdGFibGVzCi0gICAgIiIiCi0gICAgaWYgb2JqX3R5cGUgaW4gbWkuYWxpYXNfb2JqX3R5cGVfeHJlZjoKLSAgICAgICAgZm9yIGFsaWFzIGluIG1pLmFsaWFzX29ial90eXBlX3hyZWZbb2JqX3R5cGVdOgotICAgICAgICAgICAgZmllbGQgPSBtaS5hbGlhc19vYmpfdHlwZV9maWVsZChhbGlhcykKLSAgICAgICAgICAgIGlmIG5vdCBmaWVsZDoKLSAgICAgICAgICAgICAgICBwcmludCBzZG5zaC5lcnJvcl9tc2coInVwZGF0ZSBzaG93IGFsaWFzIGFsaWFzX29ial90eXBlX2ZpZWxkIikKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0YWJsZSA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKGFsaWFzKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICB0YWJsZSA9IFtdCi0KLSAgICAgICAgICAgIG5ld19kaWN0ID0ge30KLSAgICAgICAgICAgIGtleSA9IG1pLnBrKGFsaWFzKQotICAgICAgICAgICAgIyAoZm9yZWlnbl9vYmosIGZvcmVpZ25fZmllbGQpID0gXAotICAgICAgICAgICAgICAgICMgbWkuZm9yZWlnbl9rZXlfcmVmZXJlbmNlcyhhbGlhcywgZmllbGQpCi0gICAgICAgICAgICBmb3Igcm93IGluIHRhYmxlOgotICAgICAgICAgICAgICAgIG5ld19kaWN0W3Jvd1tmaWVsZF1dID0gcm93W2tleV0KLSAgICAgICAgICAgIGZtdGNudi51cGRhdGVfYWxpYXNfZGljdChvYmpfdHlwZSwgbmV3X2RpY3QpCi0gICAgcmV0dXJuCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIHVwZGF0ZV9zd2l0Y2hfYWxpYXNfY2FjaGUoKToKLSAgICAiIiIKLSAgICBVcGRhdGUgdGhlIGNsaU1vZGVJbmZvIHByZXR0eXByaW50aW5nIHN3aXRjaCB0YWJsZQotICAgICIiIgotICAgIHJldHVybiB1cGRhdGVfc2hvd19hbGlhcygnc3dpdGNoLWNvbmZpZycpCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIHVwZGF0ZV9zd2l0Y2hfcG9ydF9uYW1lX2NhY2hlKCk6Ci0gICAgIiIiCi0gICAgVXBkYXRlIHRoZSBjbGlNb2RlSW5mbyBwcmV0dHlwcmludGluZyBwb3J0TmFtZXMgdGFibGUKLSAgICAiIiIKLSAgICAjIHJldHVybiB1cGRhdGVfc2hvd19hbGlhcygncG9ydCcpCi0KLSAgICBlcnJvcnMgPSBOb25lCi0gICAgc3dpdGNoX3BvcnRfdG9fbmFtZV9kaWN0ID0ge30KLQotICAgIHRyeToKLSAgICAgICAgcG9ydHMgPSByZXN0X3RvX21vZGVsLmdldF9tb2RlbF9mcm9tX3VybCgnaW50ZXJmYWNlcycsIHt9KQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgIGVycm9ycyA9IHNkbnNoLnJlc3RfZXJyb3JfdG9fZGljdChlKQotCi0gICAgaWYgZXJyb3JzOgotICAgICAgICBwcmludCBzZG5zaC5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgIHJldHVybgotCi0gICAgZm9yIHBvcnQgaW4gcG9ydHM6Ci0gICAgICAgIGtleV9zdHJpbmcgPSBwb3J0Wydzd2l0Y2gnXSArICIuIiArICIlZCIgJSBwb3J0Wydwb3J0TnVtYmVyJ10KLSAgICAgICAgc3dpdGNoX3BvcnRfdG9fbmFtZV9kaWN0W2tleV9zdHJpbmddID0gcG9ydFsncG9ydE5hbWUnXQotICAgIGZtdGNudi51cGRhdGVfYWxpYXNfZGljdCgicG9ydE5hbWVzIiwgc3dpdGNoX3BvcnRfdG9fbmFtZV9kaWN0KQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiB1cGRhdGVfaG9zdF9hbGlhc19jYWNoZSgpOgotICAgICIiIgotICAgIFVwZGF0ZSB0aGUgY2xpTW9kZUluZm8gcHJldHR5cHJpbnRpbmcgaG9zdCB0YWJsZQotICAgICIiIgotICAgIHJldHVybiB1cGRhdGVfc2hvd19hbGlhcygnaG9zdC1jb25maWcnKQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgdXBkYXRlX2Zsb3dfY29va2llX2hhc2gKLQotZGVmIHVwZGF0ZV9mbG93X2Nvb2tpZV9oYXNoKCk6Ci0gICAgIiIiCi0gICAgVGhlIGZvcm1hdHRlciBrZWVwcyBhIG1hcCBmb3Igc3RhdGljIGZsb3cgZW50cmllcy4KLSAgICAiIiIKLSAgICAjIGl0ZXJhdGUgdGhyb3VnaCBhbGwgdGhlIHN0YXRpYyBmbG93cyBhbmQgZ2V0IHRoZWlyIGhhc2hlcyBvbmNlCi0gICAgZmxvd19tYXAgPSB7fQotICAgIHByaW1lID0gMjExCi0gICAgZm9yIHNmIGluIHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKCJmbG93LWVudHJ5Iik6Ci0gICAgICAgIGZsb3dfaGFzaCA9IDIzMTEKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHNmWyduYW1lJ10pKToKLSAgICAgICAgICAgIGZsb3dfaGFzaCA9IGZsb3dfaGFzaCAqIHByaW1lICsgb3JkKHNmWyduYW1lJ11baV0pCi0gICAgICAgIGZsb3dfaGFzaCA9IGZsb3dfaGFzaCAmICggKDEgPDwgMjApIC0gMSkKLSAgICAgICAgZmxvd19tYXBbZmxvd19oYXNoXSA9IHNmWyduYW1lJ10KLQotICAgIGZtdGNudi51cGRhdGVfYWxpYXNfZGljdCgic3RhdGljZmxvdyIsIGZsb3dfbWFwKQotCi0gICAgZm10Y252LmNhbGxvdXRfZmxvd19lbmNvZGVycyhzZG5zaCkKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0KLWRlZiB1cGRhdGVfY29udHJvbGxlcl9ub2RlX2FsaWFzX2NhY2hlKCk6Ci0gICAgcmV0dXJuIHVwZGF0ZV9zaG93X2FsaWFzKCdjb250cm9sbGVyLW5vZGUnKQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi1kZWYgb2JqX3R5cGVfc2hvd19hbGlhc191cGRhdGUob2JqX3R5cGUpOgotICAgICIiIgotICAgIFdoZW4gc29tZSBpdGVtIGlzIGFib3V0IHRvIGJlIGRpc3BsYXllZCwgcGFydGljdWxhciAnYWxpYXMnCi0gICAgaXRlbXMgZm9yIHRoZSBkaXNwbGF5IG1heSByZXF1aXJlIHVwZGF0aW5nLiAgaW5zdGVhZCBvZiBqdXN0Ci0gICAgdXBkYXRpbmcgZXZlcnl0aGluZyBhbGwgdGhlIHRpbWUsIHBlZWsgYXQgdGhlIGRpZmZlcmVudCBmb3JtYXR0aW5nCi0gICAgZnVuY3Rpb25zIGFuZCB1c2UgdGhvc2UgZnVuY3Rpb24gbmFtZXMgdG8gZGV0ZXJtaW5lIHdoYXQgbmVlZHMgdG8KLSAgICBiZSB1cGRhdGVkLgotCi0gICAgQWxzbyBzZWUgZm9ybWF0dGVyX3RvX3VwZGF0ZSBpbiBjbGltb2RlbGluZm8sIHNpbmNlIGl0IG1heQotICAgIG5lZWQgdG8gaW5jbHVkZSBuZXcgZm9ybWF0dGluZyBmdW5jdGlvbnMuCi0gICAgIiIiCi0gICAgdXBkYXRlID0ge30KLSAgICBzZG5zaC5wcC5mb3JtYXRfdG9fYWxpYXNfdXBkYXRlKG9ial90eXBlLCB1cGRhdGUpCi0KLSAgICAjIHNlbGVjdCBvYmplY3RzIGZyb20gJ3VwZGF0ZScgZGljdAotICAgIGlmICdob3N0JyBpbiB1cGRhdGU6Ci0gICAgICAgIHVwZGF0ZV9ob3N0X2FsaWFzX2NhY2hlKCkKLSAgICBpZiAnc3dpdGNoJyBpbiB1cGRhdGU6Ci0gICAgICAgIHVwZGF0ZV9zd2l0Y2hfYWxpYXNfY2FjaGUoKQotICAgIGlmICdwb3J0JyBpbiB1cGRhdGU6Ci0gICAgICAgIHVwZGF0ZV9zd2l0Y2hfcG9ydF9uYW1lX2NhY2hlKCkKLSAgICBpZiAnZmxvdycgaW4gdXBkYXRlOgotICAgICAgICB1cGRhdGVfZmxvd19jb29raWVfaGFzaCgpCi0gICAgaWYgJ2NvbnRyb2xsZXItbm9kZScgaW4gdXBkYXRlOgotICAgICAgICB1cGRhdGVfY29udHJvbGxlcl9ub2RlX2FsaWFzX2NhY2hlKCkKLQotCi0jCi0jIE9CSkVDVHMgbWlkZGxld2FyZS4KLSMKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBvYmplY3RzX3N0YXJ0aW5nX3dpdGgob2JqX3R5cGUsIHRleHQgPSAiIiwga2V5ID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIG1hdGNoaW5nIGtleXMgZnJvbSB0YWJsZS9tb2RlbAotICAgIGlkZW50aWZpZWQgYnkgdGhlICdvYmpfdHlwZScgcGFyYW1ldGVyCi0KLSAgICBJZiB0aGUgdGFibGUvbW9kZWwgaGFzIGEgJ2FsaWFzJyBmaWVsZCwgdGhlbiB0aGlzIGZpZWxkJ3MKLSAgICB2YWx1ZXMgYXJlIGFsc28gZXhhbWluZWQgZm9yIG1hdGNoZXMKLQotICAgIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiBhIHRhYmxlL21vZGVsIGluIHRoZSBzdG9yZSwKLSAgICB3aGlsZSB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgcHJlZml4IHRvIGZpbHRlciB0aGUgcmVzdWx0cy4KLSAgICBUaGUgZmlsdGVyIGlzIGFwcGxpZWQgdG8gdGhlIGtleSBvZiB0aGUgdGFibGUvbW9kZWwsIHdoaWNoCi0gICAgd2FzIHByZXZpb3VzbHkgcG9wdWxhdGVkLgotICAgICIiIgotCi0gICAgaWYga2V5OgotICAgICAgICBpZiBub3QgbWkub2JqX3R5cGVfaGFzX2ZpZWxkKG9ial90eXBlLCBrZXkpOgotICAgICAgICAgICAgc2Ruc2gud2FybmluZygib2JqZWN0c19zdGFydGluZ193aXRoOiAlcyBkb2Vzbid0IGhhdmUgZmllbGQgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG9ial90eXBlLCBrZXkpKQotICAgIGVsc2U6Ci0gICAgICAgIGtleSA9IG1pLnBrKG9ial90eXBlKQotICAgICAgICBpZiBrZXkgPT0gTm9uZToKLSAgICAgICAgICAgIHNkbnNoLndhcm5pbmcoIm9iamVjdHNfc3RhcnRpbmdfd2l0aDogJXMgZG9lc24ndCBoYXZlIHBrIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChvYmpfdHlwZSkpCi0gICAga2V5X2VudHJpZXMgPSBbXQotCi0gICAgIyBOZXh0LCBmaW5kIHRoZSBvYmplY3QKLSAgICAjICBEZWFsIHdpdGggYW55IGNoYW5nZXMgdG8gdGhlIGxvb2t1cCBuYW1lIGJhc2VkIG9uIHRoZSAnY29udGVuYXRpb24nCi0gICAgIyAgb2YgdGhlIGNvbmZpZyBtb2RlIG5hbWUgdG8gdGhlIG5hbWVkIGlkZW50aWZlci4KLSAgICAjCi0KLQotICAgIGNhc2UgPSBtaS5nZXRfb2JqX3R5cGVfZmllbGRfY2FzZV9zZW5zaXRpdmUob2JqX3R5cGUsIGtleSkKLSAgICBpZF92YWx1ZSA9IHV0aWYuY29udmVydF9jYXNlKGNhc2UsIHRleHQpCi0KLSAgICBpZiBtaS5vYmpfdHlwZV9oYXNfbW9kZWwob2JqX3R5cGUpOgotICAgICAgICAjIGZyb20gdGhlIGRhdGFiYXNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGVudHJpZXMgPSBzZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZShvYmpfdHlwZSwga2V5LCBpZF92YWx1ZSkKLSAgICAgICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGVycm9ycyA9IHNkbnNoLnJlc3RfZXJyb3JfdG9fZGljdChlKQotICAgICAgICBpZiBlcnJvcnM6Ci0gICAgICAgICAgICBwcmludCBzZG5zaC5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcnMpCi0gICAgICAgICAgICByZXR1cm4ga2V5X2VudHJpZXMKLSAgICBlbHNlOgotICAgICAgICBpZiBpZF92YWx1ZSA9PSAnJzoKLSAgICAgICAgICAgIGVudHJpZXMgPSByZXN0X3RvX21vZGVsLmdldF9tb2RlbF9mcm9tX3VybChvYmpfdHlwZSwge30pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBlbnRyaWVzID0gcmVzdF90b19tb2RlbC5nZXRfbW9kZWxfZnJvbV91cmwob2JqX3R5cGUsIHsga2V5ICsgIl9fc3RhcnRzd2l0aCIgOiBpZF92YWx1ZSB9KQotCi0gICAgaWYga2V5IGFuZCBlbnRyaWVzOgotICAgICAgICAjIEV4cGFuZCBhbnkga2V5IHZhbHVlcyB3aGljaCBhcmUgbGlzdHMgKGhvc3RzLCBmb3IgZXhhbXBsZSkKLSAgICAgICAgaXRlbXMgPSBbeFtrZXldIGZvciB4IGluIGVudHJpZXMgaWYgeC5nZXQoa2V5KV0KLSAgICAgICAgZW50cmllcyA9IFtdCi0gICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAgaWYgdHlwZShpdGVtKSA9PSBsaXN0OgotICAgICAgICAgICAgICAgIGVudHJpZXMgKz0gaXRlbQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbnRyaWVzLmFwcGVuZChpdGVtKQotICAgICAgICBrZXlfZW50cmllcyA9IFtzZG5zaC5xdW90ZV9pdGVtKG9ial90eXBlLCB4KQotICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBlbnRyaWVzIGlmIHguc3RhcnRzd2l0aChpZF92YWx1ZSldCi0gICAgIwotICAgICMgZm9yIHNvbWUgc3BlY2lmaWMgdGFibGVzIHdoaWNoIGhhdmUgaWQncyBjb25jYXRlbmF0ZWQgZnJvbSBtdWx0aXBsZSBvdGhlcgotICAgICMgY29tcG9uZW50cywgb25seSBwYXJ0IG9mIHRoZSBpZCBpcyBhdmFpbGFibGUgZm9yIGNvbXBsZXRpb24uCi0gICAgIwotICAgIGlmIG1pLmlzX2NvbXBvdW5kX2tleShvYmpfdHlwZSwga2V5KToKLSAgICAgICAgc2VwYXJhdG9yX2NoYXJhY3RlciA9IG1pLmNvbXBvdW5kX2tleV9zZXBhcmF0b3Iob2JqX3R5cGUsIGtleSkKLSAgICAgICAga2V5RGljdCA9IHt9Ci0gICAgICAgIGZvciBrZXkgaW4ga2V5X2VudHJpZXM6Ci0jICAgICAgICAgICAga2V5RGljdFtrZXkuc3BsaXQoc2VwYXJhdG9yX2NoYXJhY3RlcilbMF1dID0gJycKLSAgICAgICAgICAgIGtleURpY3Rba2V5XSA9ICcnCi0gICAgICAgIGtleV9lbnRyaWVzID0ga2V5RGljdC5rZXlzKCkKLQotICAgIGFsaWFzX29ial90eXBlID0gb2JqX3R5cGUKLSAgICBpZiBrZXkgIT0gbWkucGsoYWxpYXNfb2JqX3R5cGUpOgotICAgICAgICAjIGlmIHRoaXMgaXMgYSBmb3JnZWlnbiBrZXksIHVzZSB0aGUgb2JqX3R5cGUgb2YgdGhlIGZrLgotICAgICAgICBpZiBtaS5pc19mb3JlaWduX2tleShhbGlhc19vYmpfdHlwZSwga2V5KToKLSAgICAgICAgICAgIChhbGlhc19vYmpfdHlwZSwgZmtfbmFtZSkgPSBtaS5mb3JlaWduX2tleV9yZWZlcmVuY2VzKGFsaWFzX29ial90eXBlLCBrZXkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFhYWCBwb3NzaWJseSBvdGhlciBjaG9pY2VzIHRvIGRldGVybWluZSBhbGlhc19vYmpfdHlwZT8KLSAgICAgICAgICAgIGFsaWFzX29ial90eXBlID0gTm9uZQotCi0gICAgaWYgYWxpYXNfb2JqX3R5cGU6Ci0gICAgICAgIG9ial90eXBlX2NvbmZpZyA9IG1pLm9ial90eXBlX3JlbGF0ZWRfY29uZmlnX29ial90eXBlKGFsaWFzX29ial90eXBlKQotCi0gICAgICAgICMgYWxpYXNfY2hvaWNlc19mb3JfYWxpYXNfb2JqX3R5cGUoKSByZW1vdmVzIHN3aXRjaCBkcGlkJ3Mgd2hpY2gKLSAgICAgICAgIyBoYXZlIGFzc29jaWF0ZWQgYWxpYXMgbmFtZXMsCi0gICAgICAgIGtleV9lbnRyaWVzID0gYWxpYXNfY2hvaWNlc19mb3JfYWxpYXNfb2JqX3R5cGUoa2V5X2VudHJpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqX3R5cGVfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQpCi0KLSAgICByZXR1cm4ga2V5X2VudHJpZXMKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBsb2NhbF9pbnRlcmZhY2VzX2ZpcmV3YWxsX29wZW4ocHJvdG9zLCBwb3J0cywgY29udHJvbGxlcl9pZCA9IE5vbmUpOgotICAgICIiIgotICAgIFJldHVybiBhIGxpc3Qgb2YgaW50ZXJmYWNlcywgd2hpY2ggaGF2ZSB0aGUgcHJvdG8gYW5kIHBvcnQgY3VycmVudGx5IGVuYWJsZWQKLQotICAgIEBwYXJhbSBwcm90byBhIHN0cmluZywgb3IgbGlzdCBvZiBzdHJpbmdzLCBpZGVudGlmeWluZyB0aGUgcHJvdG9jb2wKLSAgICBAcGFyYW0gcG9ydCBhIHN0cmluZ3MsIG9yIGxpc3Qgb2Ygc3RyaW5ncyBvciBpbnRzCi0gICAgIiIiCi0KLSAgICAjIGZpcnN0IGNvbGxlY3QgYWxsIGFzc29jaWF0ZWQgcnVsZXMKLSAgICBpZiB0eXBlKHByb3RvcykgIT0gbGlzdDoKLSAgICAgICAgcHJvdG9zID0gW3Byb3Rvc10KLSAgICBpZiB0eXBlKHBvcnRzKSAhPSBsaXN0OgotICAgICAgICBwb3J0cyA9IFtwb3J0c10KLQotICAgIHJ1bGVzID0gW10KLSAgICBmb3IgcHJvdG8gaW4gcHJvdG9zOgotICAgICAgICBmb3IgcG9ydCBpbiBwb3J0czoKLSAgICAgICAgICAgIHF1ZXJ5X2RpY3QgPSB7ICdwcm90bycgOiBwcm90bywgJ3BvcnQnIDogcG9ydCB9Ci0gICAgICAgICAgICBydWxlcyArPSBzZG5zaC5yZXN0X3F1ZXJ5X29iamVjdHMoJ2ZpcmV3YWxsLXJ1bGUnLCBxdWVyeV9kaWN0KQotCi0gICAgIyBjcmVhdGUgYSBkaWN0aW9uYXJ5IGluZGV4ZWQgYnkgdGhlIGludGVyZmFjZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgcGsgJ2lkJwotICAgIHJ1bGVzX29mX2ludGVyZmFjZSA9IGRpY3QoW1t4WydpbnRlcmZhY2UnXSwgeF0gZm9yIHggaW4gcnVsZXNdKQotCi0gICAgaWYgY29udHJvbGxlcl9pZCA9PSBOb25lOgotICAgICAgICAjIHJlcXVlc3QgJ3RoaXMnIGNvbnRyb2xsZXIKLSAgICAgICAgY29udHJvbGxlcl91cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL2NvbnRyb2xsZXIiICUgc2Ruc2guY29udHJvbGxlcgotICAgICAgICByZXN1bHQgPSBzZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KGNvbnRyb2xsZXJfdXJsKQotICAgICAgICBzZG5zaC5jaGVja19yZXN0X3Jlc3VsdChyZXN1bHQpCi0gICAgICAgIGNvbnRyb2xsZXJfaWQgPSBqc29uLmxvYWRzKHJlc3VsdCkKLQotICAgIGlmIGNvbnRyb2xsZXJfaWQgIT0gJ2FsbCc6Ci0gICAgICAgIHF1ZXJ5X2RpY3QgPSB7ICdjb250cm9sbGVyJyA6IGNvbnRyb2xsZXJfaWRbJ2lkJ10gfQotCi0gICAgaWZzID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKCdjb250cm9sbGVyLWludGVyZmFjZScsIHF1ZXJ5X2RpY3QpCi0KLSAgICByZXR1cm4gW2lmbiBmb3IgaWZuIGluIGlmcyBpZiBpZm5bJ2lkJ10gaW4gcnVsZXNfb2ZfaW50ZXJmYWNlXQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotZGVmIGxvZ191cmwoaXBfYW5kX3BvcnQgPSBOb25lLCBsb2cgPSBOb25lKToKLSAgICAiIiIKLSAgICBSZXR1cm5zIHRoZSB1cmwgb2YgdGhlIGxvZydzIG9uIHRoZSBuYW1lZCBpcF9hbmRfcG9ydC4KLSAgICAiIiIKLSAgICBsb2dfcGF0aCA9ICdodHRwOi8vJXMvcmVzdC92MS9zeXN0ZW0vbG9nJyAlIGlwX2FuZF9wb3J0Ci0gICAgaWYgbG9nOgotICAgICAgICBsb2dfcGF0aCArPSAnLycgKyBsb2cKLSAgICByZXR1cm4gbG9nX3BhdGgKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotZGVmIGNvbnRyb2xsZXJfaXBfYW5kX3BvcnQoY29udHJvbGxlcik6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgbGlzdCBvZiBpcDpwb3J0IHZhbHVlcyBmb3IgbmFtZWQgY29udHJvbGxlcnMsCi0gICAgdG8gdXNlIHRvIGJ1aWxkIHVybHMgZm9yIFJFU1QgQVBJJ3MuICAgSWYgYSBjb250cm9sbGVyIG9mICdhbGwnCi0gICAgaXMgcGFzc2VkIGluLCB0aGVuIGFsbCB0aGUgY29udHJvbGxlcnMgYXIgZW51bWVyYXRlZC4KLQotICAgIElmIGJvdGggcG9ydCA4MCwgYW5kIDgwMDAgYXJlIG9wZW4sIHRoZW4gdHdvIGlwOnBvcnQgCi0gICAgcGFpcnMgd2lsbCBiZSByZXR1cm5lZCBmb3IgYSBjb250cm9sbGVyLiAgVGhpcyByZXR1cm5zCi0gICAgQUxMIHZhbHVlcyB3aGljaCBtYXRjaCwgIG5vdCBhIHNpbmdsZSBpcDpwb3J0IGZvciBlYWNoCi0gICAgY29udHJvbGxlci4KLSAgICAiIiIKLSAgICB1cmwgPSAnaHR0cDovLyVzL3Jlc3QvdjEvc3lzdGVtL2NvbnRyb2xsZXInICUgc2Ruc2guY29udHJvbGxlcgotICAgIHJlc3RfZGljdCA9IHNkbnNoLnJlc3Rfc2ltcGxlX3JlcXVlc3RfdG9fZGljdCh1cmwpCi0gICAgdGhpc19jb250cm9sbGVyID0gcmVzdF9kaWN0WydpZCddCi0KLSAgICBpcHNfODAgPSBbeCBmb3IgeCBpbiBsb2NhbF9pbnRlcmZhY2VzX2ZpcmV3YWxsX29wZW4oJ3RjcCcsIDgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyKQotICAgICAgICAgICBpZiAoeFsnaXAnXSAhPSAnJyBvciB4WydkaXNjb3ZlcmVkLWlwJ10gIT0gJycpXQotCi0gICAgaXBzXzgwMDAgPSBbeCBmb3IgeCBpbiBsb2NhbF9pbnRlcmZhY2VzX2ZpcmV3YWxsX29wZW4oJ3RjcCcsIDgwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcikKLSAgICAgICAgICAgaWYgKHhbJ2lwJ10gIT0gJycgb3IgeFsnZGlzY292ZXJlZC1pcCddICE9ICcnKV0KLQotICAgIHJldHVybiBbJyVzOjgwJyAlICcxMjcuMC4wLjEnIGlmIHhbJ2NvbnRyb2xsZXInXSA9PSB0aGlzX2NvbnRyb2xsZXIgZWxzZQotICAgICAgICAgICAgICAgIHhbJ2Rpc2NvdmVyZWQtaXAnXSBpZiB4WydkaXNjb3ZlcmVkLWlwJ10gIT0gJycgZWxzZSB4WydpcCddCi0gICAgICAgICAgICBmb3IgeCBpbiBpcHNfODBdICsgWyclczo4MDAwJyAlCi0gICAgICAgICAgICAgICAgJzEyNy4wLjAuMScgaWYgeFsnY29udHJvbGxlciddID09IHRoaXNfY29udHJvbGxlciBlbHNlCi0gICAgICAgICAgICAgICAgeFsnZGlzY292ZXJlZC1pcCddIGlmIHhbJ2Rpc2NvdmVyZWQtaXAnXSAhPSAnJyBlbHNlIHhbJ2lwJ10KLSAgICAgICAgICAgIGZvciB4IGluIGlwc184MDAwXQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9tb2RpLnB5IGIvY2xpL2NsaS9tb2RpLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0YmIxNTZkLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvbW9kaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyMTIgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTEsMjAxMiwyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1pbXBvcnQgc3lzCi0jIGZyb20gbWlkdyBpbXBvcnQgKgotCi0jCi0jIE1PRGVsIEluZm9ybWF0aW9uIChtb2RpKQotIwotCi1jbGFzcyBNb2RpKCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2Ruc2gsIGNsaV9tb2RlbF9pbmZvKToKLSAgICAgICAgc2VsZi5zZG5zaCA9IHNkbnNoCi0KLSAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3QgPSB7fQotICAgICAgICBzZWxmLm9ial90eXBlcyA9IFtdCi0gICAgICAgIHNlbGYub2JqX2tleXMgPSB7fQotCi0gICAgICAgICMgc2VsZi5jbGlfbW9kZWxfaW5mbyA9IENsaU1vZGVsSW5mbygpCi0gICAgICAgIHNlbGYuY2xpX21vZGVsX2luZm8gPSBjbGlfbW9kZWxfaW5mbwotCi0gICAgICAgIHNlbGYuaW5pdF9vYmpfdHlwZV9pbmZvX2RpY3QoY2xpX21vZGVsX2luZm8pCi0gICAgICAgIHNlbGYuaW5pdF9mb3JlaWduX2tleV94cmVmKCkKLSAgICAgICAgc2VsZi5pbml0X2FsaWFzX29ial90eXBlX3hyZWYoKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfbGluZSgpOgotICAgICAgICAjIHB5bGludDogZGlzYWJsZT1XMDIxMgotICAgICAgICBmID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjawotICAgICAgICByZXR1cm4gJ1slczolZF0nICUgKGYuZl9jb2RlLmNvX2ZpbGVuYW1lLCBmLmZfbGluZW5vKQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgaW5pdF9vYmpfdHlwZV9pbmZvX2RpY3Qoc2VsZiwgY2xpX21vZGVsX2luZm8pOgotICAgICAgICAiIiIKLSAgICAgICAgV2hlbiBvYmpfdHlwZV9pbmZvX2RpY3QgaXMgaW5kZXhlZCBieSB0aGUgdGFibGUvbW9kZWwgbmFtZSwKLSAgICAgICAgdGhlIHZhbHVlIGlzIGEgZGljdGlvbmFyeS4gIFRoYXQgZGljdGlvbmFyeSBoYXMgc2V2ZXJhbCBrZXlzOgotICAgICAgICAKLSAgICAgICAgLSAnY2FzY2FkZV9kZWxldGUnIFRydWUvRmFsc2UsIHNldCB0byB0cnVlIHdoZW4gZm9yZWlnbiBrZXkncyBpbiB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpfdHlwZSB3aWxsIGJlIHVzZWQgbyBpZGVudGlmeSByb3dzIHRvIGRlbGV0ZSBiYXNlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gcm93cyByZW1vdmVkIGZyb20gdGhlIHBhcmVudCB0YWJsZS4KLSAgICAgICAgLSAnZm9yY2VfZGVsZXRlJyBUcnVlL0ZhbHNlLCBzZXQgdG8gdHJ1ZSB3aGVuIGZvcmVpZ24ga2V5cyBpbiB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgb2JqX3R5cGUgYXJlIGFsbG93ZWQgdG8gYmUgbnVsbCwgYnV0IHdoZW4gdGhleSBhcmUgbm90LAotICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByb3dzIGlkZW50aWZpZWQgYnkgY2FzY2FkZV9kZWxldGUgbXVzdCBiZSBkZWxldGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiByb3dzIGFyZSByZW1vdmVkIGZyb20gdGhlIHBhcmVudCB0YWJsZQotICAgICAgICAtICdzb3VyY2UnIHNldCB0byAndXNlci1jb25maWcnIGZvciBvYmpfdHlwZXMgd2hpY2ggdXNlcidzIGNvbmZpZ3VyZQotICAgICAgICAgICAgICAgICAgIHNldCB0byAnZGVidWctb25seScgdG8gZW5hYmxlIHZpZXdpbmcgb2JqZWN0IG9ubHkgaW4gZGVidWcgbW9kZQotICAgICAgCi0gICAgICAgIFRoZSAnZmllbGRzJyBpbmRleGVkIHJlc3VsdCByZXR1cm5zIGEgZGljdGlvbmFyeSwgZWFjaCBvZiB3aGljaAotICAgICAgICBpcyBpbmRleGVkIGJ5IHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIHdpdGhpbiB0aGUgdGFibGUvbW9kZWwuIGZ1cnRoZXIKLSAgICAgICAgaW5kaWNpZXMgZGVzY3JpYmUgZGV0YWlscyBhYm91dCB0aGF0IGZpZWxkIHdpdGhpbiB0aGUgdGFibGU6Ci0gICAgICAgIAotICAgICAgICBTb21lIG9mIHRoZSBrZXkncyBhcmUgaW50ZW5kZWQgdG8gYmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkKLSAgICAgICAgdG8gZnVydGhlciBkZWNvcmF0ZSBkZXRhaWxzIGFib3V0IHRoZSBmaWVsZC4gIFRoZSBvYmplY3RpdmUgaXMKLSAgICAgICAgdG8gbW9kaWZ5IGNsaSBiZWhhdmlvciwgb3Igb3ZlcnJpZGUgdGhlIG1vZGVsIGRldGFpbHMuICBUaGVzZQotICAgICAgICB2YWx1ZXMsIHRobywgb3VnaHQgdG8gcmVhbGx5IGNvbWUgZnJvbSB0aGUgbW9kZWwgZGVzY3JpcHRpb24uCi0KLSAgICAgICAgLSAndmVyYm9zZS1uYW1lJyBpZGVudGZpZXMgYW4gYWRkaXRvbmFsIG5hbWUgZm9yIHRoZSBmaWVsZCwgaW50ZW5lZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgbW9yZSBkZXNjcmlwdGl2ZQotCi0gICAgICAgIC0gJ2hleCcgVHJ1ZS9GYWxzZSwgVHJ1ZSBmb3IgZmllbGRzIHdoZW4gYSBoZXggdmFsdWUgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICAgYmUgcmVwbGFjZWQgd2l0aCBhIGRlY2ltYWwgdmFsdWUKLSAgICAgICAgLSAnZWRpdCcgVHJ1ZS9GYWx1ZSwgIEZhbHNlIHdoZW4gYSBmaWVsZCBjYW5ub3QgYmUgZWRpdGVkIHdpdGhpbgotICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuZXN0ZWQgY29uZmlnIG1vZGUuCi0KLSAgICAgICAgLSAndmFsaWRhdGUnIGZ1bmN0aW9uIHRvIGNhbGwgdG8gdmFsaWRhdGUgdGhlIGZpZWxkIHZhbHVlCi0KLSAgICAgICAgVmFyaW91cyBrZXkncyB1c2UgJ18nIHZzIHRoZSB0eXBpY2FsICctJyBzaW5jZSB0aGV5J3JlIAotICAgICAgICBjdXJyZW50bHkgY29uc3RydWN0ZWQgdmlhIHRoZSBkamFuZ28gbW9kZWwgZGVzY3JpcHRpb24KLQotICAgICAgICAtICdwcmltYXJ5X2tleScgaWRlbnRpZmVzIHRoaXMgZmllbGQgYXMgdGhlIGtleSBmb3IgdGhlIHRhYmxlL21vZGVsLgotICAgICAgICAtICdoYXNfcmVzdF9tb2RlbCcgIFRydWUvRmFsc2UKLSAgICAgICAgLSAnanNvbl9zZXJpYWxpemVfc3RyaW5nJyAgVHJ1ZS9GYWxzZQotICAgICAgICAtICdoZWxwX3RleHQnICBTdHJpbmcgcHJvdmlkaW5nIG1vcmUgY2x1ZXMgYWJvdXQgdGhlIGludGVudCBvZiB0aGlzIGZpZWxkCi0gICAgICAgIC0gJ3R5cGUnIHZhcmlvdXMgdmFsdWVzLCBpbnRlbmRlZCB0byBiZSBwb3B1bGF0ZWQgYnkgdG9vbHMvZXh0cmFjdF9tb2RlbC5weQotICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93aW5nIGFjY2VzcyBvZiB0aGUgdHlwZSB0byB0aGUgY2xpLiAgdGhlIGFsbG93cyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGkgdG8gZmluZCBmb3JlaWduX2tleXMsIGFuZCBwb3NzaWJseSBkZXRlcm1pbmUKLSAgICAgICAgLSAnbWF4X2xlbmd0aCcgCi0gICAgICAgIAotICAgICAgICBPdGhlciBrZXkgZGVjb3JhdGlvbnM6ICBzb3J0aW5nCi0KLSAgICAgICAgVGhlICdmaWVsZF9vcmRlcmluZycgZGljdGlvbmFyeSBhc3NvY2lhdGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIHRhYmxlL21vZGVsCi0gICAgICAgIGlzIHVzZWQgdG8gb3JkZXIgdGhlIG91dHB1dC4KLSAgICAgICAgCi0gICAgICAgIEFsc28gcG9wdWxhdGVzIHRoZSBzZWxmLm9ial9rZXlzW10sIHdoaWNoIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIHRoZSB0YWJsZS9tb2RlbAotICAgICAgICBuYW1lIHRvIHRoZSBuYW1lIG9mIHRoZSBzdG9yYWdlIGtleSAodGFibGUvbW9kZWwncyBjb2x1bW4pIGZvciB0aGF0IHRhYmxlLgotCi0gICAgICAgIEBwYXJhbSBjbGlfbW9kZWxfaW5mbyBpbnN0YW50aWF0ZWQgY2xhc3MgQ2xpTW9kZWxJbmZvKCkKLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0ID0gc2VsZi5jbGlfbW9kZWxfaW5mby5nZXRfY29tcGxldGVfb2JqX3R5cGVfaW5mb19kaWN0KCkKLSAgICAgICAgc2VsZi5vYmpfdHlwZXMgPSBbayBmb3IgKGssIHYpIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0Lml0ZW1zKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2hhc19yZXN0X21vZGVsJyBpbiB2XQotICAgICAgICBmb3IgKGssIGQpIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBub3QgJ2ZpZWxkcycgaW4gZDoKLSAgICAgICAgICAgICAgICBwcmludCAnJXM6IE1pc3NpbmcgImZpZWxkcyInICUgawotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBjYW5kaWRhdGVfa2V5cyA9IFtmIGZvciBmIGluIGRbJ2ZpZWxkcyddLmtleXMoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZFsnZmllbGRzJ11bZl0uZ2V0KCdwcmltYXJ5X2tleScsIEZhbHNlKV0KLSAgICAgICAgICAgIGlmIGxlbihjYW5kaWRhdGVfa2V5cykgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYub2JqX2tleXNba10gPSBjYW5kaWRhdGVfa2V5c1swXQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBkZWYgaW5pdF9mb3JlaWduX2tleV94cmVmKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgV2FsayB0aHJvdWdoIHRoZSBvYmpfdHlwZV9pbmZvX2RpY3QsIGxvb2tpbmcgZm9yIGZvcmVpZ24ga2V5cy4KLSAgICAgICAgQnVpbGQgYSBjcm9zcyByZWZlcmVuY2VzLCBzbyB0aGF0IGEgPG9ial90eXBlLCBmaWVsZD4gY2FuIGJlCi0gICAgICAgIHVzZWQgdG8gaWRlbnRpZnkgYWxsIHRoZSBvYmpfdHlwZXMgd2hpY2ggcmVmZXJlbmNlIHRoYXQgZmllbGQuCi0gICAgICAKLSAgICAgICAgVG8gYWxsb3cgZm9yIGJvdGggPG9ial90eXBlLCBmaWVsZD4gdG8gYmUgdXNlZCB0byBpbmRleAotICAgICAgICBzZWxmLmZvcmVpZ25fa2V5X3hyZWYsIHR3byBsZXZlbHMgb2YgZGljdGlvbmFyaWVzIGFyZSBidWlsdC4KLSAgICAgICAgVGhlIGZpcnN0IG1hcHMgZnJvbSBvYmpfdHlwZSB0byBhIGRpY3Rpb25hcnkgb2YgZmllbGRzLCBhbmQKLSAgICAgICAgdGhlIGZpZWxkcyBkaWN0aW9uYXJ5IGhhcyB2YWx1ZXMgd2hpY2ggYXJlIGxpc3RzLiAgRWFjaCBvZiB0aGUKLSAgICAgICAgbGlzdHMgaGFzIHR3byBtZW1iZXJzOiB0aGUgPG9ial90eXBlLCBmaWVsZD4sIHdoaWNoIHdpbGwgYmUKLSAgICAgICAgYSBmb3JlaWduIGtleSB0byB0aGUgb3JpZ2luYWwgcGFpci4KLSAgICAgIAotICAgICAgICBUaGlzIGFsbG93cyBpZGVudGlmaWNhaW9uIG9mIGZpZWxkcyB3aGljaCBoYXZlIHNpbmdsZSBmb3JlaWduCi0gICAgICAgIGtleSB4cmVmJ3MsIHdoaWNoIGNhbiB0aGVuIGJlIHVzZWQgdG8gaWRlbnRpZnkgInN1Yi1tb2RlcyIKLSAgICAgICAgZm9yIHBhcnRpY3VsYXIgb2JqX3R5cGVzLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLmZvcmVpZ25fa2V5X3hyZWYgPSB7fQotICAgICAgICBmb3IgKG9ial90eXBlLCBvYmpfdHlwZV9kaWN0KSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdC5pdGVtcygpOgotICAgICAgICAgICAgaWYgbm90ICdmaWVsZHMnIGluIG9ial90eXBlX2RpY3Q6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJyVzOiBNaXNzaW5nICJmaWVsZHMiJyAlIG9ial90eXBlCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZvciAoZm4sIGZkKSBpbiBvYmpfdHlwZV9kaWN0WydmaWVsZHMnXS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGlmICd0eXBlJyBpbiBmZDoKLSAgICAgICAgICAgICAgICAgICAgaWYgZmRbJ3R5cGUnXSA9PSAnRm9yZWlnbktleSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWZfZm9yZWlnbl9vYmpfdHlwZSA9IGZkWydyZWxfb2JqX3R5cGUnXQotICAgICAgICAgICAgICAgICAgICAgICAgcmVmX2ZvcmVpZ25fZmllbGQgPSBmZFsncmVsX2ZpZWxkX25hbWUnXQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlZl9mb3JlaWduX29ial90eXBlIGluIHNlbGYuZm9yZWlnbl9rZXlfeHJlZjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcmVpZ25fa2V5X3hyZWZbcmVmX2ZvcmVpZ25fb2JqX3R5cGVdID0ge30KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZWZfZm9yZWlnbl9maWVsZCBpbiBzZWxmLmZvcmVpZ25fa2V5X3hyZWZbcmVmX2ZvcmVpZ25fb2JqX3R5cGVdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm9yZWlnbl9rZXlfeHJlZltyZWZfZm9yZWlnbl9vYmpfdHlwZV1bcmVmX2ZvcmVpZ25fZmllbGRdID0gW10KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm9yZWlnbl9rZXlfeHJlZltyZWZfZm9yZWlnbl9vYmpfdHlwZV1bcmVmX2ZvcmVpZ25fZmllbGRdLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb2JqX3R5cGUsIGZuXSkKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIGluaXRfYWxpYXNfb2JqX3R5cGVfeHJlZihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIEFsaWFzIG9iaiB0eXBlcyBoYXZlIGEgbm9uLWNvbXBvdW5kIHByaW1hcnkga2V5LCBhIGZvcmVpZ24ga2V5LCBhbmQKLSAgICAgICAgcG9zc2libHkgJ0RhdGVUaW1lRmllbGQnIGZpZWxkcywgYnV0IG5vIG90aGVyIGZpZWxkcy4gIFRoZXNlIGNhbgotICAgICAgICBiZSBpZGVudGlmaWVkIGJ5IHNjYW5uaW5nIHRoZSBkaWN0aW9uYXJ5LgotCi0gICAgICAgIFRoZSBhbGlhc19vYmpfdHlwZV94cmVmIGRpY3Rpb25hcnkgaXMgaW5kZXhlZCBieSB0aGUgb2JqX3R5cGUgcmVmZXJlbmNlZAotICAgICAgICBieSB0aGUgZm9yZWlnbiBrZXkgb2YgdGhlIG9yaWdpbmFsIG9ial90eXBlIChpdHMgYSBjcm9zcyByZWYpCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuYWxpYXNfb2JqX3R5cGVfeHJlZiA9IHt9Ci0gICAgICAgIHNlbGYuYWxpYXNfb2JqX3R5cGVzID0gW10KLSAgICAgICAgZm9yIChvYmpfdHlwZSwgb2JqX3R5cGVfZGljdCkgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3QuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBvYmpfdHlwZV9kaWN0OgotICAgICAgICAgICAgICAgIHByaW50ICclczogTWlzc2luZyAiZmllbGRzIicgJSBvYmpfdHlwZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmb3JlaWduX2tleV9vYmpfdHlwZSA9IE5vbmUKLSAgICAgICAgICAgIGZvcmVpZ25fa2V5X2NvdW50ID0gMAotICAgICAgICAgICAgb3RoZXJfdHlwZXMgPSBGYWxzZQotICAgICAgICAgICAgZm9yIChmbiwgZmQpIGluIG9ial90eXBlX2RpY3RbJ2ZpZWxkcyddLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgIyAnSWR4JyBmaWVsZCBpcyBvbmx5IGZvciBkaXNwbGF5IGNvdW50aW5nIG9mIHJvd3MKLSAgICAgICAgICAgICAgICBpZiBmbiAhPSAnSWR4JyBhbmQgJ3R5cGUnIGluIGZkOgotICAgICAgICAgICAgICAgICAgICBpZiBmZFsndHlwZSddID09ICdGb3JlaWduS2V5JzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVpZ25fa2V5X2NvdW50ICs9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVpZ25fa2V5X29ial90eXBlID0gZmRbJ3JlbF9vYmpfdHlwZSddCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgJ3ByaW1hcnlfa2V5JyBpbiBmZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNfY29tcG91bmRfa2V5KG9ial90eXBlLCBmbik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfdHlwZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZmRbJ3R5cGUnXSAhPSAnRGF0ZVRpbWVGaWVsZCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcl90eXBlcyA9IFRydWUKLSAgICAgICAgICAgIGlmIGZvcmVpZ25fa2V5X2NvdW50ID09IDEgYW5kIG90aGVyX3R5cGVzID09IEZhbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYWxpYXNfb2JqX3R5cGVzLmFwcGVuZChvYmpfdHlwZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgZm9yZWlnbl9rZXlfb2JqX3R5cGUgaW4gc2VsZi5hbGlhc19vYmpfdHlwZV94cmVmOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFsaWFzX29ial90eXBlX3hyZWZbZm9yZWlnbl9rZXlfb2JqX3R5cGVdID0gW10KLSAgICAgICAgICAgICAgICBzZWxmLmFsaWFzX29ial90eXBlX3hyZWZbZm9yZWlnbl9rZXlfb2JqX3R5cGVdLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgb2JqX3R5cGUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIGlmIHRoZSBwcmltYXJpeSBrZXkgaXMgYSBjb21wb3VuZCBrZXksIGFuZCB0aGUgZmlyc3QgaXRlbQotICAgICAgICAgICAgIyBpcyBhbHNvIGEgZm9yZWlnbiBrZXkgaGVyZSwgdGhlbiBhbGxvdyB0aGUgZmlyc3QgaXRlbSB0bwotICAgICAgICAgICAgIyBtYXRjaCB1cCB3aXRoIHRoZSBhbGlhcy4gIGN1cnJlbmx5LCBvbmx5IHVzZSB0aGUgZmlyc3QgaXRlbQotICAgICAgICAgICAgIyBzaW5jZSB0aGUgJ3N0YXJ0c3dpdGgnIGNhbiB1c2UgdXNlZCB0byBmaW5kIHRoZSBhc3NvY2FpdGVkCi0gICAgICAgICAgICAjIG1lbWJlcnMKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIGVsaWYgZm9yZWlnbl9rZXlfY291bnQgPj0gMToKLSAgICAgICAgICAgICAgICBrZXkgPSBzZWxmLm9ial9rZXlzW29ial90eXBlXQotICAgICAgICAgICAgICAgIGNvbXBvdW5kX2ZpZWxkcyA9IHNlbGYuY29tcG91bmRfa2V5X2ZpZWxkcyhvYmpfdHlwZSwga2V5KQotICAgICAgICAgICAgICAgIGlmIGNvbXBvdW5kX2ZpZWxkczoKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RfZmllbGQgPSBjb21wb3VuZF9maWVsZHNbMF0KLSAgICAgICAgICAgICAgICAgICAgaWYgZmlyc3RfZmllbGQgaW4gc2VsZi5vYmpfdHlwZV9mb3JlaWduX2tleXMob2JqX3R5cGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIG5hc3R5IC0tIGFzc3VtaW5nIHRoYXQgdGhlIGZvcmVpZ25fa2V5J3MgdGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbmFtZSB3aWxsIHRoZW4gaGF2ZSBhbiBhbGlhcyB0YWJsZSBhc3NvY2lhdGVkIHdpdGggaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFBlcmhhcHMgc29tZSBtb2RlbCBmaWVsZCBjYW4gaGVscCBkZXNjcmliZSB0aGVzZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBhc3NvY2lhdGlvbnMsIHNvbWV0aGluZyBsaWtlICdhbGxvdy1hbGlhczogPG9ial90eXBlPicKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpcnN0X2ZpZWxkID09ICd2bnMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAiJXMtYWxpYXMiICUgZmlyc3RfZmllbGQgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IGJ1aWxkIHJlZmVyZW5jZXMgdG8gdGFibGVzIHdoaWNoIGV4aXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgb2JqX3R5cGUgaW4gc2VsZi5hbGlhc19vYmpfdHlwZV94cmVmOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWxpYXNfb2JqX3R5cGVfeHJlZltvYmpfdHlwZV0gKz0gWyIlcy1hbGlhcyIgJSBmaXJzdF9maWVsZF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hbGlhc19vYmpfdHlwZV94cmVmW29ial90eXBlXSA9IFsiJXMtYWxpYXMiICUgZmlyc3RfZmllbGRdCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIHBrKHNlbGYsIG9ial90eXBlKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0aGUgcHJpbWFyeSBrZXkgbmFtZSBmb3IgdGhlIG9iamVjdAotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlIChpZTogJ2hvc3QnLCAnc3dpdGNoJykKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBSYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGUgbmFtZSBkb2Vzbid0IGV4aXN0PwotICAgICAgICByZXR1cm4gc2VsZi5vYmpfa2V5cy5nZXQob2JqX3R5cGUsIE5vbmUpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIG9ial90eXBlX2V4aXN0cyhzZWxmLCBvYmpfdHlwZSk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gVHJ1ZSBpZiB0aGVyZSdzIGRldGFpbHMgYWJvdXQgb2JqX3R5cGUgaW4gb2JqX3R5cGVzX2luZm9fZGljdAotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0LmtleXMoKQotICAgIAotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgb2JqX3R5cGVfaGFzX21vZGVsKHNlbGYsIG9ial90eXBlKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBUcnVlIGlmIHRoZSBvYmpfdHlwZSBpcyBzZXJ2aWNlZCB2aWEgdGhlIG1vZGVsIHJlc3QgYXBpCi0gICAgICAgIChpbiBvdGhlciB3b3JkcywgdGhlcmUncyBhIGRiIHRhYmxlIHdoaWNoIHN1cHBvcnRzIHRoaXMgbW9kZWwpCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZXMKLSAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIG9ial90eXBlX2hhc191cmwoc2VsZiwgb2JqX3R5cGUpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJucyBhIHVybCBzdWZmaXggZGVzY3JpYmluZyBhIHBhdGggd2hpY2ggcmV0dXJucyB0aGUKLSAgICAgICAgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpZSBvYmpfdHlwZQotICAgICAgICAiIiIKLSAgICAgICAgaWYgb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdLmdldCgndXJsJywgTm9uZSkKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGRlZiBpc19mb3JlaWduX2tleShzZWxmLCBvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIFRydWUgd2hlbiB0aGUgZmllbGQgd2l0aGluIHRoZSBvYmpfdHlwZSBpcyBhIGZvcmVpZ24ga2V5LgotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgIEBwYXJhbSBmaWVsZCBzdHJpbmcsIGZpZWxkIHdpdGhpbiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBub3QgJ2ZpZWxkcycgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgZmllbGRfaW5mbyA9IHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ10uZ2V0KGZpZWxkLCBbXSkKLSAgICAgICAgaWYgJ3R5cGUnIGluIGZpZWxkX2luZm86Ci0gICAgICAgICAgICBpZiBmaWVsZF9pbmZvWyd0eXBlJ10gPT0gJ0ZvcmVpZ25LZXknOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBkZWYgaXNfaW50ZWdlcl9maWVsZChzZWxmLCBvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIFRydWUgd2hlbiB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggdGhlIG9ial90eXBlJ3MgZmllbGQgaXMgYW4gaW50ZWdlcgotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgIEBwYXJhbSBmaWVsZCBzdHJpbmcsIGZpZWxkIHdpdGhpbiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBmaWVsZF9pbmZvID0gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdLmdldCgnZmllbGRzJywgW10pW2ZpZWxkXQotICAgICAgICBpZiAndHlwZScgaW4gZmllbGRfaW5mbzoKLSAgICAgICAgICAgIGlmIGZpZWxkX2luZm9bJ3R5cGUnXSA9PSAnSW50ZWdlckZpZWxkJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBpc19wcmltYXJ5X2tleShzZWxmLCBvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRydWUgd2hlbiB0aGUgb2JqX3R5cGUncyBmaWVsZCBpcyBhIHByaW1hcnkga2V5Ci0KLSAgICAgICAgQHBhcmFtIG9ial90eXBlIHN0cmluZywgbmFtZSBvZiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgQHBhcmFtIGZpZWxkIHN0cmluZywgZmllbGQgd2l0aGluIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICBpZiBub3Qgb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbm90ICdmaWVsZHMnIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGZpZWxkX2luZm8gPSBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV0uZ2V0KCdmaWVsZHMnLFtdKVtmaWVsZF0KLSAgICAgICAgaWYgJ3ByaW1hcnlfa2V5JyBpbiBmaWVsZF9pbmZvOgotICAgICAgICAgICAgcmV0dXJuIGZpZWxkX2luZm9bJ3ByaW1hcnlfa2V5J10gIyBzaG91bGQgYmUgdHJ1ZSBpZiBleGlzdHMKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGRlZiBpc19maWVsZF9lZGl0YWJsZShzZWxmLCBvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIFRydWUgaWYgdGhlIGZpZWxkIGlzIGVkaXRhYmxlLiAgRGVmYXVsdCBpcyBUcnVlLgotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgIEBwYXJhbSBmaWVsZCBzdHJpbmcsIGZpZWxkIHdpdGhpbiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBmaWVsZF9pbmZvID0gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdLmdldCgnZmllbGRzJyxbXSlbZmllbGRdCi0gICAgICAgIGlmICdlZGl0JyBpbiBmaWVsZF9pbmZvOgotICAgICAgICAgICAgcmV0dXJuIGZpZWxkX2luZm9bJ2VkaXQnXSAjIHNob3VsZCBiZSBGYWxzZSBpZiBleGlzdHMKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIGlzX2VkaXRhYmxlKHNlbGYsIG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqX3R5cGUvZmllbGQgaXMgYXZhaWxhYmxlIGZvciBlZGl0aW5nCi0gICAgICAgIEV4Y2x1ZGVzIGZvcmVpZ24ga2V5cywgYW5kIHByaW1hcnkga2V5cyAodW5sZXNzIGVkaXQ6IFRydWUKLSAgICAgICAgaXMgc3BlY2lmaWNhbGx5IGVuYWJsZWQgZm9yIHRoZSBmaWVsZCkKLQotICAgICAgICBAcGFyYW0gb2JqX3R5cGUgc3RyaW5nLCBuYW1lIG9mIHRoZSBvYmplY3QtdHlwZQotICAgICAgICBAcGFyYW0gZmllbGQgc3RyaW5nLCBmaWVsZCB3aXRoaW4gdGhlIG9iamVjdC10eXBlCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG5vdCBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBub3QgJ2ZpZWxkcycgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgbm90IGZpZWxkIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ106Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZmllbGRfaW5mbyA9IHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ11bZmllbGRdCi0gICAgICAgIGlmICdlZGl0JyBpbiBmaWVsZF9pbmZvIGFuZCBmaWVsZF9pbmZvWydlZGl0J10gPT0gVHJ1ZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlmIHNlbGYuaXNfZm9yZWlnbl9rZXkob2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLmlzX3ByaW1hcnlfa2V5KG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbm90IHNlbGYuaXNfZmllbGRfZWRpdGFibGUob2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBvYmpfdHlwZV9kaXNhYmxlX2VkaXQoc2VsZiwgb2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgIiIiCi0gICAgICAgIE1hcmsgYW4gb2JqX3R5cGUncyBmaWVsZCBhcyBub3QgYmVpbmcgZGlyZWN0bHkgZWRpdGFibGUuCi0gICAgICAgIFdoZW4gdGhlIGNvbW1hbmQgZGVzY3JpcHRpb25zIGFyZSB1c2VkIGZvciBhbGwgb2JqX3R5cGUncyBlZGl0LCB0aGUgbmVlZAotICAgICAgICBmb3IgJ2Rpc2FibGluZyBlZGl0JyBvdWdodCB0byBkaXNhcHBlYXIKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBub3QgJ2ZpZWxkcycgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdOgotICAgICAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXSA9IHt9Ci0gICAgICAgIGlmIG5vdCBmaWVsZCBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddOgotICAgICAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXVtmaWVsZF0gPSB7fQotICAgICAgICBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddW2ZpZWxkXVsnZWRpdCddID0gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgaXNfbWFya2VkX3NlYXJjaGFibGUoc2VsZiwgb2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0cnVlIGlmIGEgZmllbGQgaXMgc2VhcmNoYWJsZS4KLQotICAgICAgICBUaGlzIG91Z2h0IHRvIGJlIHRydWUgZm9yIGFueSBmaWVsZHMgd2hpY2ggaXMgcGFydCBvZiB0aGUKLSAgICAgICAgcHJpbWFyeSBrZXkgY29uc3RydWN0aW9uLgotCi0gICAgICAgIFRoaXMgcHJlZGljYXRlLCBob3dldmVyLCBpbiBpbnRlbmRlZCB0byBsb29rIGZvciBmaWVsZHMKLSAgICAgICAgd2hpY2ggYXJlIGlkZW50aWZpZWQgYnkgdGhlIG1vZGVsIGFzIGJlaW5nIHNlYXJjaGFibGUsCi0gICAgICAgIGV2ZW4gd2hlbiB0aGUgZmllbGQgZG9lc24ndCBhcHBlYXIgaW4gdGhlIHByaW1hcnkga2V5LgotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZQotICAgICAgICBAcGFyYW0gZmllbGQKLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbm90IGZpZWxkIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ106Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBrZXkgPSBzZWxmLnBrKG9ial90eXBlKQotICAgICAgICBpZiBzZWxmLmlzX2NvbXBvdW5kX2tleShvYmpfdHlwZSwga2V5KToKLSAgICAgICAgICAgIGlmIGZpZWxkIGluIHNlbGYuY29tcG91bmRfa2V5X2ZpZWxkcyhvYmpfdHlwZSwga2V5KToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgCi0gICAgICAgIGZpZWxkX2luZm8gPSBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddW2ZpZWxkXQotICAgICAgICBpZiAnc2VhcmNoYWJsZScgaW4gZmllbGRfaW5mbzoKLSAgICAgICAgICAgIHJldHVybiBmaWVsZF9pbmZvWydzZWFyY2hhYmxlJ10gPT0gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIGdldF9vYmpfdHlwZV9maWVsZF9jYXNlX3NlbnNpdGl2ZShzZWxmLCBvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRydWUgaWYgYSBmaWVsZCBpcyBjYXNlIHNlbnNpdGl2ZS4KLQotICAgICAgICBAcGFyYW0gb2JqX3R5cGUKLSAgICAgICAgQHBhcmFtIGZpZWxkCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG5vdCBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiBub3QgZmllbGQgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgZmllbGRfaW5mbyA9IHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ11bZmllbGRdCi0gICAgICAgIGlmICdjYXNlJyBpbiBmaWVsZF9pbmZvOgotICAgICAgICAgICAgcmV0dXJuIGZpZWxkX2luZm9bJ2Nhc2UnXQotICAgICAgICByZXR1cm4gTm9uZQotCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGRlZiBzZXRfb2JqX3R5cGVfZmllbGRfY2FzZV9zZW5zaXRpdmUoc2VsZiwgb2JqX3R5cGUsIGZpZWxkLCBjYXNlKToKLSAgICAgICAgIiIiCi0gICAgICAgIFNldCBjYXNlIHNlbnNpdGl2aXR5IGZvciBhIGZpZWxkIGluIGFuIG9ial90eXBlCi0KLSAgICAgICAgQHBhcmFtIG9ial90eXBlCi0gICAgICAgIEBwYXJhbSBmaWVsZAotICAgICAgICBAcGFyYW0gY2FzZSBlaXRoZXIgJ3VwcGVyJywgb3IgJ2xvd2VyJwotICAgICAgICAiIiIKLQotICAgICAgICBpZiBjYXNlIG5vdCBpbiBbJ3VwcGVyJywgJ2xvd2VyJ106Ci0gICAgICAgICAgICBwcmludCAnc2V0X2Nhc2Vfc2Vuc2l0aXZlOiBvYmpfdHlwZSAlcyBmaWVsZCAlcyBjYXNlICVzICcgXAotICAgICAgICAgICAgICAgICdjYXNlIG5vdCB1cHBlci9sb3dlcicgJSAob2JqX3R5cGUsIGZpZWxkLCBjYXNlKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdID0ge30KLSAgICAgICAgaWYgbm90ICdmaWVsZHMnIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXToKLSAgICAgICAgICAgIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ10gPSB7fQotICAgICAgICBpZiBub3QgZmllbGQgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXToKLSAgICAgICAgICAgIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ11bZmllbGRdID0ge30KLSAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXVtmaWVsZF1bJ2Nhc2UnXSA9IGNhc2UKLQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBkZWYgaXNfaGV4X2FsbG93ZWQoc2VsZiwgb2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmpfdHlwZS9maWVsZCBhbGxvd3MgaGV4IGluc3RlYWQgb2YgZGVjaW1hbAotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgIEBwYXJhbSBmaWVsZCBzdHJpbmcsIGZpZWxkIHdpdGhpbiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBmaWVsZF9pbmZvID0gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXVtmaWVsZF0KLSAgICAgICAgaWYgJ2hleCcgaW4gZmllbGRfaW5mbzoKLSAgICAgICAgICAgIHJldHVybiBmaWVsZF9pbmZvWydoZXgnXSAjIGxpa2VseSBGYWxzZSBpZiBleGlzdHMKLSAgICAgICAgaWYgc2VsZi5pc19pbnRlZ2VyX2ZpZWxkKG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgaXNfZmllbGRfYm9vbGVhbihzZWxmLCBvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRydWUgaWYgdGhlIG9ial90eXBlL2ZpZWxkIGlzIGEgYm9vbGVhbiB0eXBlCi0KLSAgICAgICAgQHBhcmFtIG9ial90eXBlIHN0cmluZywgbmFtZSBvZiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgQHBhcmFtIGZpZWxkIHN0cmluZywgZmllbGQgd2l0aGluIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICBpZiBub3Qgb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbm90ICdmaWVsZHMnIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGZpZWxkX2luZm8gPSBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddW2ZpZWxkXQotICAgICAgICBpZiAndHlwZScgaW4gZmllbGRfaW5mbzoKLSAgICAgICAgICAgIHJldHVybiBmaWVsZF9pbmZvWyd0eXBlJ10gPT0gJ0Jvb2xlYW5GaWVsZCcKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaXNfZmllbGRfc3RyaW5nCi0gICAgIyAgUmV0dXJuIHRydWUgaWYgdGhlIG9ial90eXBlL2ZpZWxkIGlzIGEgY2hhcmFjdGVyIChDaGFyVHlwZSkgdHlwZQotICAgICMKLSAgICBkZWYgaXNfZmllbGRfc3RyaW5nKHNlbGYsIG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICIiIgotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgIEBwYXJhbSBmaWVsZCBzdHJpbmcsIGZpZWxkIHdpdGhpbiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBmaWVsZF9pbmZvID0gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXVtmaWVsZF0KLSAgICAgICAgaWYgJ3R5cGUnIGluIGZpZWxkX2luZm86Ci0gICAgICAgICAgICByZXR1cm4gZmllbGRfaW5mb1sndHlwZSddID09ICdDaGFyRmllbGQnCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGlzX251bGxfYWxsb3dlZAotICAgICMgIFJldHVybiB0cnVlIGlmIHRoZSBvYmpfdHlwZS9maWVsZCBpcyBhbGxvd2VkIHRvIGJlIG51bGwuCi0gICAgIwotICAgIGRlZiBpc19udWxsX2FsbG93ZWQoc2VsZiwgb2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgIiIiCi0KLSAgICAgICAgQHBhcmFtIG9ial90eXBlIHN0cmluZywgbmFtZSBvZiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgQHBhcmFtIGZpZWxkIHN0cmluZywgZmllbGQgd2l0aGluIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICBpZiBub3Qgb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbm90ICdmaWVsZHMnIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGZpZWxkX2luZm8gPSBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddW2ZpZWxkXQotICAgICAgICBpZiAnbnVsbCcgaW4gZmllbGRfaW5mbzoKLSAgICAgICAgICAgIHJldHVybiBmaWVsZF9pbmZvWydudWxsJ10KLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGRlZiBvYmpfdHlwZV9maWVsZHMoc2VsZiwgb2JqX3R5cGUpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBmaWVsZCBuYW1lcyAoc3RyaW5ncykgZm9yIHRoZSBvYmpfdHlwZSwKLSAgICAgICAgaW5jbHVkZXMgYWxsIGZpZWxkcywgaW5jbHVkaW5nIHByaW1hcnkga2V5cyBhbmQgZm9yZWlnbiBrZXlzCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgaWYgbm90ICdmaWVsZHMnIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXToKLSAgICAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgICAgIHJldHVybiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddLmtleXMoKQotICAgICAgICByZXR1cm4gW10KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGRlZiBvYmpfdHlwZV9oYXNfZmllbGQoc2VsZiwgb2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmpfdHlwZSBoYXMgYSBmaWVsZCBuYW1lZCAnZmllbGQnCi0KLSAgICAgICAgQHBhcmFtIG9ial90eXBlIHN0cmluZywgbmFtZSBvZiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgQHBhcmFtIGZpZWxkIHN0cmluZywgZmllbGQgd2l0aGluIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICBpZiBub3Qgb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbm90ICdmaWVsZHMnIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgZmllbGRzX2luZm8gPSBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddCi0gICAgICAgICAgICBpZiBmaWVsZCBpbiBmaWVsZHNfaW5mbzoKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgb2JqX3R5cGVfY29uZmlnX2ZpZWxkcyhzZWxmLCBvYmpfdHlwZSk6Ci0gICAgICAgICIiIgotICAgICAgICBGb3IgYW4gb2JqX3R5cGUsIHJldHVybiBhIGxpc3Qgb2YgZmllbGRzIHdoaWNoIGFyZSBwb3NzaWJseSB1c2VyIGNvbmZpZ3VyYWJsZS4KLQotICAgICAgICBAcGFyYW0gb2JqX3R5cGUgc3RyaW5nLCBuYW1lIG9mIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICBpZiBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgICAgICBmaWVsZHNfaW5mbyA9IHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ10KLSAgICAgICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBmaWVsZHNfaW5mbyBpZiBzZWxmLmlzX2VkaXRhYmxlKG9ial90eXBlLCB4KV0KLSAgICAgICAgcmV0dXJuIFtdCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgb2JqX3R5cGVfc2hvd190aGlzKHNlbGYsIG9ial90eXBlKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBhIGxpc3Qgb2YgYWRkaXRpb24gdHlwZXMgdG8gZGlzcGxheSBmb3IgJ3Nob3cgdGhpcycKLQotICAgICAgICBAcGFyYW0gb2JqX3R5cGUgc3RyaW5nLCBuYW1lIG9mIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICBpZiBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIGlmICdzaG93LXRoaXMnIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ3Nob3ctdGhpcyddCi0gICAgICAgICAgICAgICAgaWYgdHlwZShyZXN1bHQpID09IHN0ciBvciB0eXBlKHJlc3VsdCkgPT0gJ3VuaWNvZGUnOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3Jlc3VsdF0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgIHJldHVybiBbXQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBkZWYgaXNfY2FzY2FkZV9kZWxldGVfZW5hYmxlZChzZWxmLCBvYmpfdHlwZSk6Ci0gICAgICAgICIiIgotICAgICAgICBDYXNjYWRlIGlzIGVuYWJsZWQgZm9yIGFuIG9ial90eXBlIGJ5IHNldHRpbmcgJ2Nhc2NhZGVfZW5hYmxlZCc6IFRydWUgZm9yCi0gICAgICAgIHRoZSBwcmltYXJ5IGtleSBvZiBhbiBvYmpfdHlwZS4KLQotICAgICAgICBAcGFyYW0gb2JqX3R5cGUgc3RyaW5nLCBuYW1lIG9mIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICBpZiBub3Qgb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiAnY2FzY2FkZV9kZWxldGUnIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2Nhc2NhZGVfZGVsZXRlJ10KLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgaXNfZm9yY2VfZGVsZXRlX2VuYWJsZWQoc2VsZiwgb2JqX3R5cGUpOgotICAgICAgICAiIiIKLSAgICAgICAgRm9yY2UgZGVsZXRlIGlzIGVuYWJsZWQgZm9yIGFuIG9ial90eXBlIGJ5IHNldHRpbmcgJ2ZvcmNlX2RlbGV0ZSc6IFRydWUKLSAgICAgICAgZm9yIHRoZSBwcmltYXJ5IGtleSBvZiBhbiBvYmpfdHlwZS4KLQotICAgICAgICBAcGFyYW0gb2JqX3R5cGUgc3RyaW5nLCBuYW1lIG9mIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICBpZiBub3Qgb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiAnZm9yY2VfZGVsZXRlJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmb3JjZV9kZWxldGUnXQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIGNhc2NhZGVfZGVsZXRlX3NldF9lbmFibGUoc2VsZiwgb2JqX3R5cGUpOgotICAgICAgICAiIiIKLSAgICAgICAgRW5hYmxlIGNhc2NhZGVfZGVsZXRlIGZvciBhbiBvYmpfdHlwZQotICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdID0ge30KLSAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydjYXNjYWRlX2RlbGV0ZSddID0gVHJ1ZQotCi0gICAgZGVmIGNhc2NhZGVfZGVsZXRlX2VuYWJsZV9mb3JjZShzZWxmLCBvYmpfdHlwZSk6Ci0gICAgICAgICIiIgotICAgICAgICBGb3JjZSBjYXNjYWRlX2RlbGV0ZSBmb3IgYW4gb2JqX3R5cGUKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXSA9IHt9Ci0gICAgICAgIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnY2FzY2FkZV9kZWxldGUnXSA9IFRydWUKLSAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmb3JjZV9kZWxldGUnXSA9IFRydWUKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIGhhc19kaXNwbGF5X2ZpZWxkKHNlbGYsIG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICIiIgotICAgICAgICBEZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFyIG9ial90eXBlIGhhcyBhIHBhcnRpY3VsYXIgZmllbGQgb24gdGhlCi0gICAgICAgIGRpc3BsYXkgKGllOiBkdXJpbmcgYSBzaG93IGNvbW1hbmQpLiAgVXNlcyB0aGUgJ2ZpZWxkX29yZGVyaW5ncycKLSAgICAgICAgb2YgdGhlIG9ial90eXBlX2luZm9fZGljdC4KLSAgICAgIAotICAgICAgICBDdXJyZW50bHkgdXNlZCB0byBkZXRlcmluZSB3aGV0aGVyIGFuIGFsaWFzIHRhYmxlIG5lZWRzIHRvIGJlCi0gICAgICAgIHJlLWNhY2hlZCBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIGRpc3BsYXkgb2Ygc29tZSBvYmpfdHlwZQotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0IGFuZCBcCi0gICAgICAgICAgJ2ZpZWxkX29yZGVyaW5ncycgaW4gb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdOgotICAgICAgICAgICAgb3JkZXIgPSBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkX29yZGVyaW5ncyddWydkZWZhdWx0J10KLSAgICAgICAgICAgIHJldHVybiBmaWVsZCBpbiBvcmRlcgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIGlzX29ial90eXBlX3NvdXJjZV9ub3RfdXNlcl9jb25maWcoc2VsZiwgb2JqX3R5cGUpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIFRydWUgaWYgdGhlIG9ial90eXBlIGlzIGludGVuZGVkIHRvIGJlIGNvbmZpZ3VyZWQsCi0gICAgICAgIHNvbWUgdGFibGVzIGFyZSBpbnRlbmRlZCB0byBiZSB3cml0dGVuIGJ5IHNkbnBsYXRmb3JtIGFzIGEgd2F5Ci0gICAgICAgIG9mIHByZXNlbnRpbmcgaW5mb3JtYXRpb247IGl0IG1ha2VzIG5vIHNlbnNlIGZvciB0aGUgY2xpCi0gICAgICAgIHRvIHByZXNlbnQgdGhlc2UgdGFibGVzIHRvIHRoZSB1c2VyIGFzIGNvbmZpZ3VyYWJsZS4KLSAgICAgIAotICAgICAgICBrZWVwIGluIG1pbmQgdGhhdCB0aGlzIHJldHVybnMgVHJ1ZSBvbmx5IGlmICdzb3VyY2UnIGV4aXN0cywKLSAgICAgICAgYW5kIHRoZSBzb3VyY2UgaXNuJ3QgZ2V0IHRvIHVzZXItY29uZmlnLiAgVGhpcyBtZWFucyB0aGF0Ci0gICAgICAgIGZvciBhIHRhYmxlIHRvIGJlIGV4Y2x1ZGVkLCAnc291cmNlJyBtdXN0IGJlIGFkZGVkLCBhbmQKLSAgICAgICAgaXQgbXVzdCBiZSBzZXQgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gJ3VzZXItY29uZmlnJwotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0IGFuZCBcCi0gICAgICAgICAgJ3NvdXJjZScgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdOgotICAgICAgICAgICAgaWYgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydzb3VyY2UnXSAhPSAndXNlci1jb25maWcnOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuc2Ruc2guZGVidWcgYW5kIFwKLSAgICAgICAgICAgICAgICAgIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnc291cmNlJ10gPT0gJ2RlYnVnLW9ubHknOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIGlzX29ial90eXBlX3NvdXJjZV9kZWJ1Z19vbmx5KHNlbGYsIG9ial90eXBlKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBUcnVlIGlmIHRoZSBvYmpfdHlwZSBpcyBtYXJrZWQgdG8gYmUgdmlld2VkIG9ubHkgaW4gZGVidWcgbW9kZQotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0IGFuZCBcCi0gICAgICAgICAgJ3NvdXJjZScgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdOgotICAgICAgICAgICAgaWYgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydzb3VyY2UnXSA9PSAnZGVidWctb25seSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIG9ial90eXBlX3NvdXJjZV9zZXRfZGVidWdfb25seShzZWxmLCBvYmpfdHlwZSk6Ci0gICAgICAgICIiIgotICAgICAgICBTZXQgdGhlIHNvdXJjZSBmb3IgdGhlIG9iai10eXBlCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydzb3VyY2UnXSA9ICdkZWJ1Zy1vbmx5JwotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBkZWYgY29tcG91bmRfa2V5X3RleHQoc2VsZiwgb2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBhIHRleHQgc3RyaW5nIHdoaWNoIGRlc2NyaWJlcyB0aGUgY29uc3RydWN0aW9uIG9mIGEgY29tcG91bmQga2V5LgotICAgICAgICBUaGUgZmlyc3QgY2hhcmFjdGVyIGlzIGEgJyMnIHdoZW4gdGhpcyByZXR1cm5lZCBmaWVsZCBkZXNjcmliZXMgYQotICAgICAgICBjb21wb3VuZCBrZXkuICBUaGUgc2Vjb25kIGNoYXJhY3RlciBpcyB0aGUgc2VwYXJhdG9yIGZvciB0aGUgZmllbGQKLSAgICAgICAgaXRzZWxmIChub3QgdGhlIHNlcGFyYXRvciBmb3IgdGhlIGZpZWxkcyBkZXNjcmliZWQgYnkgdGhpcyB0ZXh0Ci0gICAgICAgIGZpZWxkKS4gIFRoZSByZW1haW5kZXIgaXMgYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBmaWVsZHMgbmFtZXMgd2hpY2gKLSAgICAgICAgYXJlIHVzZWQgdG8gY29uc3RydWN0IHRoaXMgZmllbGQuCi0gICAgICAKLSAgICAgICAgQ3VycmVudGx5IGNvbXBvdW5kIGtleXMgYXJlIGlkZW50aWZpZWQgdGhyb3VnaCB0aGUgaGVscF90ZXh0LgotICAgICAgICBUaGUgaGVscCB0ZXh0IGlzbid0IGRpc3BsYXllZCB0byB0aGUgdXNlciBmb3IgcHJpbWFyeSBzaW5jZSB0aGUgdmFsdWUKLSAgICAgICAgb2YgdGhlIGtleSBmb3IgY29tcG91bmQga2V5J3MgbXVzdCBiZSBjb25zdHJ1Y3RlZCBieSB0aGUgY2xpLCBhbmQgdGhlbgotICAgICAgICB0aGUgdXNlciBkb2Vzbid0IGRpcmVjdGx5IG1vZGlmeSBvciBzZWFyY2ggdGhlIGNvbXBvdW5kIHZhbHVlLgotICAgICAgCi0gICAgICAgIFdoZW4gdGhlIGZpZWxkIGlzIGl0c2VsZiBhIGZvcmVpZ24ga2V5LCBhbmQgbm8gdGV4dCBzdHJpbmcgZXhpc3RzIHRvCi0gICAgICAgIGRlc2NyaWJlIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGNvbXBvdW5kIGtleSwgaXRzIHBvc3NpYmxlIHRoYXQgdGhlIGZvcmVpZ24KLSAgICAgICAga2V5J3MgdmFsdWUgaXMgaXRzZWxmIGEgY29tcG91bmQga2V5LiAgUGVlayBhdCB0aGUgb3JpZ2luYWwgZm9yZWlnbgotICAgICAgICBrZXkgdG8gc2VlIGlmIGl0IGhhcyBhIGZpZWxkIGlkZW50aWZ5aW5nIHRoZSBsYXlvdXQgb2YgdGhlIGNvbXBvdW5kIGtleS4KLQotICAgICAgICBAcGFyYW0gb2JqX3R5cGUgc3RyaW5nLCBuYW1lIG9mIHRoZSBvYmplY3QtdHlwZQotICAgICAgICBAcGFyYW0gZmllbGQgc3RyaW5nLCBmaWVsZCB3aXRoaW4gdGhlIG9iamVjdC10eXBlCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG5vdCBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiBub3QgZmllbGQgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgZmllbGRfaW5mbyA9IHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ11bZmllbGRdCi0gICAgICAgIGlmICdoZWxwX3RleHQnIGluIGZpZWxkX2luZm86Ci0gICAgICAgICAgICBpZiBmaWVsZF9pbmZvWydoZWxwX3RleHQnXVswXSA9PSAnIyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkX2luZm9bJ2hlbHBfdGV4dCddCi0gICAgICAgIGlmIHNlbGYuaXNfZm9yZWlnbl9rZXkob2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgICAgIChma19vYmpfdHlwZSwgZmtfbmFtZSkgPSBzZWxmLmZvcmVpZ25fa2V5X3JlZmVyZW5jZXMob2JqX3R5cGUsIGZpZWxkKQotICAgICAgICAgICAgZmllbGRfaW5mbyA9IHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W2ZrX29ial90eXBlXVsnZmllbGRzJ11bZmtfbmFtZV0KLSAgICAgICAgICAgIGlmIGZpZWxkX2luZm8uZ2V0KCdoZWxwX3RleHQnLCAnICcpWzBdID09ICcjJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmllbGRfaW5mb1snaGVscF90ZXh0J10KLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIGlzX2NvbXBvdW5kX2tleShzZWxmLCBvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRydWUgaWYgdGhlIG9ial90eXBlL2ZpZWxkIGlzIGEgY29tcG91bmQga2V5LAotICAgICAgCi0gICAgICAgIFRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGNvbXBvdW5kIGtleSdzIHRleHQgJyMnLCB0aGUKLSAgICAgICAgc2Vjb25kIGNoYXJhY3RlciBpZGVudGlmaWVzIHRoZSBzZXBhcmF0b3IgY2hhcmFjZXIgZm9yIHRoZQotICAgICAgICBmaWVsZHMgdmFsdWUuICBUaGUgZmllbGRzIGFyZSBzZXBhcmF0ZWQgYnkgJ3wnIHdpdGhpbiB0aGUgdGV4dC4KLQotICAgICAgICBAcGFyYW0gb2JqX3R5cGUgc3RyaW5nLCBuYW1lIG9mIHRoZSBvYmplY3QtdHlwZQotICAgICAgICBAcGFyYW0gZmllbGQgc3RyaW5nLCBmaWVsZCB3aXRoaW4gdGhlIG9iamVjdC10eXBlCi0gICAgICAgICIiIgotCi0gICAgICAgIHRleHQgPSBzZWxmLmNvbXBvdW5kX2tleV90ZXh0KG9ial90eXBlLCBmaWVsZCkKLSAgICAgICAgaWYgdGV4dDoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGlzX3ByaW1pdGl2ZV9jb21wb3VuZF9rZXkKLSAgICAjCi0gICAgZGVmIGlzX3ByaW1pdGl2ZV9jb21wb3VuZF9rZXkoc2VsZiwgb2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybnMgVHJ1ZSBmb3IgYSBwcmltaXRpdmUgY29tcG91bmQga2V5LgotCi0gICAgICAgIFByaW1pdGl2ZSBtZWFucyBjb21wb3VuZC1rZXlzIHdoaWNoIGRvbid0IHVzZSBDYXNzYW5kcmFTZXR0aW5nJ3MKLSAgICAgICAgQ09NUE9VTkRfS0VZX0ZJRUxEUywgcmF0aGVyIHRoZSBoZWxwIHRleHQgZGVzY3JpYmVzIHRoZSBmaWVsZHMgd2hpY2gKLSAgICAgICAgYXJlIGNvYmJsZWQgdG9nZXRoZXIgdG8gY3JlYXRlIGEgcHJpbWFyeSBrZXkuCi0KLSAgICAgICAgRm9yIHRoZSBjYXNzYW5kcmFTZXR0aW5nJ3MgQ09NUE9VTkRfS0VZX0ZJRUxEUywgc2VhcmNoZXMgZm9yIAotICAgICAgICByb3dzIGNhbiBiZSBkb25lIGJ5IHNldHRpbmcgdmFsdWVzIG9mIHRoZSBmaWVsZHMgb2YgdGhlCi0gICAgICAgIENPTVBPVU5EX0tFWV9GSUVMRFMsIGZvciBwcmltaXRpdmVfY29tcG91bmRfa2V5cywgCi0KLQotICAgICAgICBAcGFyYW0gb2JqX3R5cGUgc3RyaW5nLCBuYW1lIG9mIHRoZSBvYmplY3QtdHlwZQotICAgICAgICBAcGFyYW0gZmllbGQgc3RyaW5nLCBmaWVsZCB3aXRoaW4gdGhlIG9iamVjdC10eXBlCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuaXNfY29tcG91bmRfa2V5KG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICAgICBmaWVsZF9pbmZvID0gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXVtmaWVsZF0KLSAgICAgICAgICAgIGlmICd0eXBlJyBpbiBmaWVsZF9pbmZvOgotICAgICAgICAgICAgICAgIGlmIGZpZWxkX2luZm9bJ3R5cGUnXSAhPSAnY29tcG91bmQta2V5JzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY29tcG91bmRfa2V5X3NlcGFyYXRvcgotICAgICMKLSAgICBkZWYgY29tcG91bmRfa2V5X3NlcGFyYXRvcihzZWxmLCBvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRoZSBzaW5nbGUgY2hhcmFjdGVyIHdoaWNoIGlzIHVzZWQgdG8gc2VwYXJhdGUgdGhlIHZhbHVlcwotICAgICAgICBvZiB0aGUgZGlmZmVyZW50IGZpZWxkIHBhcnRzIGZvciBhIGZpZWxkIHdoaWNoIGlzIGEgY29tcG91bmQga2V5LgotCi0gICAgICAgIFJldHVybiBOb25lIHdoZW4gdGhlCi0KLSAgICAgICAgQHBhcmFtIG9ial90eXBlIHN0cmluZywgbmFtZSBvZiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgQHBhcmFtIGZpZWxkIHN0cmluZywgZmllbGQgd2l0aGluIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICB0ZXh0ID0gc2VsZi5jb21wb3VuZF9rZXlfdGV4dChvYmpfdHlwZSwgZmllbGQpCi0gICAgICAgIGlmIHRleHQ6Ci0gICAgICAgICAgICByZXR1cm4gdGV4dFsxXQotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNvbXBvdW5kX2tleV9maWVsZHMKLSAgICAjCi0gICAgZGVmIGNvbXBvdW5kX2tleV9maWVsZHMoc2VsZiwgb2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybidzIGEgbGlzdCBvZiBzdHJpbmdzLCB3aGVyZSBlYWNoIGlzIGludGVuZGVkIHRvIGJlIHRoZQotICAgICAgICBuYW1lIG9mIGEgZmllbGQgd2l0aGluIHRoZSBvYmpfdHlwICh0aGlzIGlzIG5vdCB2YWxpZGF0ZWQpCi0KLSAgICAgICAgQHBhcmFtIG9ial90eXBlIHN0cmluZywgbmFtZSBvZiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgQHBhcmFtIGZpZWxkIHN0cmluZywgZmllbGQgd2l0aGluIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICB0ZXh0ID0gc2VsZi5jb21wb3VuZF9rZXlfdGV4dChvYmpfdHlwZSwgZmllbGQpCi0gICAgICAgIGlmIHRleHQ6Ci0gICAgICAgICAgICByZXR1cm4gdGV4dFsyOl0uc3BsaXQoJ3wnKQotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBkZWYgZGVlcF9jb21wb3VuZF9rZXlfZmllbGRzKHNlbGYsIG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICIiIgotICAgICAgICBTaW1pbGFyIHRvIGNvbXBvdW5kX2tleV9maWVsZHMoKSwgYnV0IHdoZW4gYW55IGZpZWxkIGlzIGFsc28gYSBmb3JlaWduCi0gICAgICAgIGtleSwgdGhlIHJlZmVyZW5jZXMgb2JqX3R5cGUncyBmaWVsZCBpcyBjaGVja2VkLCBhbmQgaWYgdGhhdCBmaWVsZCBpcwotICAgICAgICBhbHNvIGEgY29tcG91bmQga2V5LCBpdCBpcyBhbHNvIGV4cGFuZGVkLgotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgIEBwYXJhbSBmaWVsZCBzdHJpbmcsIGZpZWxkIHdpdGhpbiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgZGVmIHJlY3Vyc2VfY29tcG91bmRfa2V5X2ZpZWxkcyhvYmpfdHlwZSwgZmllbGQsIHBhcnRzKToKLSAgICAgICAgICAgIGlmIHNlbGYuaXNfZm9yZWlnbl9rZXkob2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgICAgICAgICAoZmtfb3QsIGZrX2ZuKSA9IHNlbGYuZm9yZWlnbl9rZXlfcmVmZXJlbmNlcyhvYmpfdHlwZSwgZmllbGQpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5pc19jb21wb3VuZF9rZXkoZmtfb3QsIGZrX2ZuKToKLSAgICAgICAgICAgICAgICAgICAgcmVjdXJzZV9jb21wb3VuZF9rZXlfZmllbGRzKGZrX290LCBma19mbiwgcGFydHMpCi0gICAgICAgICAgICBlbGlmIHNlbGYuaXNfY29tcG91bmRfa2V5KG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICAgICAgICAgZm9yIGNmIGluIHNlbGYuY29tcG91bmRfa2V5X2ZpZWxkcyhvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5vYmpfdHlwZV9oYXNfZmllbGQob2JqX3R5cGUsIGNmKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXNfZm9yZWlnbl9rZXkob2JqX3R5cGUsIGNmKSk6Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIChma19vdCwgZmtfZm4pID0gc2VsZi5mb3JlaWduX2tleV9yZWZlcmVuY2VzKG9ial90eXBlLCBjZikKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNfY29tcG91bmRfa2V5KGZrX290LCBma19mbik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzZV9jb21wb3VuZF9rZXlfZmllbGRzKGZrX290LCBma19mbiwgcGFydHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChjZikKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChjZikKLSAgICAgICAgICAgIHJldHVybiBwYXJ0cwotICAgICAgICByZXR1cm4gcmVjdXJzZV9jb21wb3VuZF9rZXlfZmllbGRzKG9ial90eXBlLCBmaWVsZCwgW10pCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIHNwbGl0X2NvbXBvdW5kX2ludG9fZGljdChzZWxmLCBvYmpfdHlwZSwga2V5LCB0YXJnZXRfZGljdCwgaXNfcHJlZml4ID0gRmFsc2UpOgotICAgICAgICAiIiIKLSAgICAgICAgVG8gYmUgdXNlZCB0byBjb252ZXJ0IGEgY29tcG91bmQga2V5IGluIGEgcm93IGludGVuZGVkIGZvciBkaXNwbGF5LAotICAgICAgICBpbnRvIHNlcGFyYXRlIGNvbXBvbmVudCBuYW1lOnZhbHVlIHBhaXJzLgotCi0gICAgICAgIFRoZSBvcmlnaW5hbCBkaWN0IGlzIGZyb20gYSByb3cgb2YgYSB0YWJsZS4gdGhlICdrZXknIHBhcmFtZXRlcgotICAgICAgICBpZGVudGlmaWVzIGEgY29tcG91bmQga2V5IGluIHRoZSByb3csIHRoZSBwcm9jZWR1cmUgc3BsaXRzIHRoZQotICAgICAgICB2YWx1ZSBvZiB0aGF0IGtleS9maWVsZCwgYW5kIHVzZXMgdGhlIGNvbXBvdW5kX2tleV9maWVsZHMoKSB0bwotICAgICAgICBkZXRlcm1pbmUgd2hhdCBuYW1lcyBvdWdodCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkJ3MKLSAgICAgICAgdmFsdWVzLCBhbmQgYWRkJ3MgdGhlc2UgZmllbGRzIGludG8gdGhlIG9yaWdpbmFsIGRpY3QuCi0gICAgICAgICIiIgotICAgICAgICBkZWYgYWRkX3RvX2RpY3QoYSwgYik6Ci0gICAgICAgICAgICBpZiBhIGluIHRhcmdldF9kaWN0IGFuZCBhICE9IGtleToKLSAgICAgICAgICAgICAgICBpZiBzdHIodGFyZ2V0X2RpY3RbYV0pICE9IGI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNfZm9yZWlnbl9rZXkob2JqX3R5cGUsIGEpOgotICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2RpY3RbYV0gPSBiCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCBzZWxmLnNkbnNoLmVycm9yX21zZygiY29tcG91bmQgc3BsaXQgZGljdCBoYXMgZGlmZmVyZW50IHZhbHVlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgZm91bmQgJXMgZXhwZWN0ZWQgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhLCB0YXJnZXRfZGljdFthXSwgYikpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRhcmdldF9kaWN0W2FdID0gYgotCi0gICAgICAgIG5hbWVzID0gc2VsZi5kZWVwX2NvbXBvdW5kX2tleV9maWVsZHMob2JqX3R5cGUsIGtleSkKLSAgICAgICAgc2VwYXJhdG9yID0gc2VsZi5jb21wb3VuZF9rZXlfc2VwYXJhdG9yKG9ial90eXBlLCBrZXkpCi0gICAgICAgIHZhbHVlcyA9IHRhcmdldF9kaWN0W2tleV0uc3BsaXQoc2VwYXJhdG9yKQotCi0gICAgICAgIGlmIGxlbihuYW1lcykgIT0gbGVuKHZhbHVlcyk6Ci0gICAgICAgICAgICBpZiBub3QgaXNfcHJlZml4OgotICAgICAgICAgICAgICAgIHByaW50IHNlbGYuc2Ruc2guZXJyb3JfbXNnKCIlczogJXM6IGNvbXBvdW5kIGxlbmd0aCBtaXNtYXRjaDogJXMgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqX3R5cGUsIGtleSwgbmFtZXMsIHZhbHVlcykpCi0gICAgICAgICAgICBtaW5fbGVuID0gbGVuKG5hbWVzKQotICAgICAgICAgICAgaWYgbGVuKHZhbHVlcykgPCBtaW5fbGVuOgotICAgICAgICAgICAgICAgIG1pbl9sZW4gPSBsZW4odmFsdWVzKQotICAgICAgICAgICAgbWFwKGFkZF90b19kaWN0LCBuYW1lc1s6bWluX2xlbl0sIHZhbHVlc1s6bWluX2xlbl0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtYXAoYWRkX3RvX2RpY3QsIG5hbWVzLCB2YWx1ZXMpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGRlZiBmb3JlaWduX2tleV9yZWZlcmVuY2VzKHNlbGYsIG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICIiIgotICAgICAgICBGb3IgYSBmaWVsZCB3aGljaCBpcyBhIGZvcmVpZ24ga2V5LCByZXR1cm4gdGhlIHBhaXIgb2YKLSAgICAgICAgW29ial90eXBlLCBmaWVsZF0gZGVzY3JpYmluZyB3aGVyZSB0aGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcwotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgIEBwYXJhbSBmaWVsZCBzdHJpbmcsIGZpZWxkIHdpdGhpbiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiBub3QgZmllbGQgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgZmllbGRfaW5mbyA9IHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ11bZmllbGRdCi0gICAgICAgIGlmICd0eXBlJyBpbiBmaWVsZF9pbmZvOgotICAgICAgICAgICAgaWYgZmllbGRfaW5mb1sndHlwZSddID09ICdGb3JlaWduS2V5JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gW2ZpZWxkX2luZm9bJ3JlbF9vYmpfdHlwZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRfaW5mb1sncmVsX2ZpZWxkX25hbWUnXV0KLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGRlZiBvYmpfdHlwZV9mb3JlaWduX2tleXMoc2VsZiwgb2JqX3R5cGUpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBmb3JlaWduIGtleXMgZm9yIHRoaXMgb2JqX3R5cGUKLQotICAgICAgICBAcGFyYW0gZmllbGQgc3RyaW5nLCBmaWVsZCB3aXRoaW4gdGhlIG9iamVjdC10eXBlCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3Qgb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgcmV0dXJuIFt4IGZvciB4IGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ10KLSAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX2ZvcmVpZ25fa2V5KG9ial90eXBlLCB4KV0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIG9ial90eXBlX3Nob3dfdGl0bGUoc2VsZiwgb2JqX3R5cGUpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIGEgc3RyaW5nLCB0aGUgZGlzcGxheSB0aXRsZSBmb3IgdGhpcyB0YWJsZSwKLSAgICAgICAgbmV2ZXIgcmV0dXJuIE5vbmUsIG9ubHkgZGlzcGxheWFibGUgdmFsdWVzCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3Qgb2JqX3R5cGUgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Q6Ci0gICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgaWYgJ3RpdGxlJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWyd0aXRsZSddCi0gICAgICAgIHJldHVybiBvYmpfdHlwZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBvYmpfdHlwZV9zZXRfdGl0bGUoc2VsZiwgb2JqX3R5cGUsIHRpdGxlKToKLSAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdID0ge30KLSAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWyd0aXRsZSddID0gdGl0bGUKLSAgICAgICAgCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBkZWYgb2JqX3R5cGVfc2V0X3Nob3dfdGhpcyhzZWxmLCBvYmpfdHlwZSwgdGhpc19saXN0KToKLSAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdID0ge30KLSAgICAgICAgc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydzaG93LXRoaXMnXSA9IHRoaXNfbGlzdAotICAgICAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGRlZiBmaWVsZF9kZWZhdWx0X3ZhbHVlKHNlbGYsIG9ial90eXBlLCBmaWVsZCk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gbm9uIG51bGwgdmFsdWUgb2YgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBmaWVsZCBpZiBpdHMgY29uZmlndXJlZAotCi0gICAgICAgIEBwYXJhbSBvYmpfdHlwZSBzdHJpbmcsIG5hbWUgb2YgdGhlIG9iamVjdC10eXBlCi0gICAgICAgIEBwYXJhbSBmaWVsZCBzdHJpbmcsIGZpZWxkIHdpdGhpbiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlmIG5vdCBmaWVsZCBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBmaWVsZF9pbmZvID0gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXVtmaWVsZF0KLSAgICAgICAgaWYgJ2RlZmF1bHQnIGluIGZpZWxkX2luZm86Ci0gICAgICAgICAgICByZXR1cm4gZmllbGRfaW5mb1snZGVmYXVsdCddCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGRlZiBmaWVsZF9jdXJyZW50X29ial90eXBlX2RlZmF1bHRfdmFsdWUoc2VsZiwgZmllbGQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIG5vbiBudWxsIHZhbHVlIG9mIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgZmllbGQgaWYgaXRzIGNvbmZpZ3VyZWQKLQotICAgICAgICBAcGFyYW0gZmllbGQgc3RyaW5nLCBmaWVsZCB3aXRoaW4gdGhlIG9iamVjdC10eXBlCi0gICAgICAgICIiIgotICAgICAgICBjdXJyZW50X29ial90eXBlID0gc2VsZi5zZG5zaC5nZXRfY3VycmVudF9tb2RlX29ial90eXBlKCkKLQotICAgICAgICBpZiBjdXJyZW50X29ial90eXBlOgotICAgICAgICAgICAgaWYgc2VsZi5vYmpfdHlwZV9oYXNfZmllbGQoY3VycmVudF9vYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLmZpZWxkX2RlZmF1bHRfdmFsdWUoY3VycmVudF9vYmpfdHlwZSwgZmllbGQpCi0gICAgICAgICAgICAgICAgaWYgZGVmYXVsdCA9PSAnJzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBkZWYgZmllbGRfdmFsaWRhdGlvbihzZWxmLCBvYmpfdHlwZSwgZmllbGQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRoZSBmaWVsZCB2YWxpZGF0aW9uIGZ1bmN0aW9uCi0KLSAgICAgICAgQHBhcmFtIG9ial90eXBlIHN0cmluZywgbmFtZSBvZiB0aGUgb2JqZWN0LXR5cGUKLSAgICAgICAgQHBhcmFtIGZpZWxkIHN0cmluZywgZmllbGQgd2l0aGluIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLSAgICAgICAgaWYgJ3ZhbGlkYXRlJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ2ZpZWxkcyddW2ZpZWxkXToKLSAgICAgICAgICAgIHZhbGlkYXRlID0gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdWydmaWVsZHMnXVtmaWVsZF1bJ3ZhbGlkYXRlJ10KLSAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIHZhbGlkYXRlLCBOb25lKQotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBkZWYgb2JqX3R5cGVfcHJlcGFyZV9yb3dfdXBkYXRlKHNlbGYsIG9ial90eXBlKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0aGUgcm93IHVwZGF0ZSBmdW5jdGlvbiBpcyBvbmUgaXMgZGVzY3JpYmVkIGluIGNsaW1vZGVsaW5mbwotICAgICAgICBUaGVzZSBjYWxsb3V0cyBhcmUgaW50ZW5kZWQgdG8gZG8gZml4dXAgZm9yIHRoZSBwcmltYXJ5IGtleSdzCi0gICAgICAgIGluIGEgdGFibGUgd2hlcmUgdGhlIGZpZWxkIG1lbWJlcnMgYXJlIHVzZWQgdG8gYnVpbGQgdGhlIHByaW1hcnkga2V5Ci0KLSAgICAgICAgQHBhcmFtIGZpZWxkIHN0cmluZywgZmllbGQgd2l0aGluIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IG9ial90eXBlIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBpZiAndXBkYXRlJyBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV06Ci0gICAgICAgICAgICB1cGRhdGUgPSBzZWxmLm9ial90eXBlX2luZm9fZGljdFtvYmpfdHlwZV1bJ3VwZGF0ZSddCi0gICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCB1cGRhdGUsIE5vbmUpCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIG9ial90eXBlX3Nob3dfc29ydChzZWxmLCBvYmpfdHlwZSk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYSBzb3J0LXR5cGUgZm9yIHRoZSBvYmotdHlwZSBkdXJpbmcgc2hvdy4gIFRoZSB2YWx1ZSBpcyBleHRyYWN0ZWQKLSAgICAgICAgZnJvbSB0aGUgb2JqX3R5cGVfaW5mb19kaWN0LCBhbmQgY29uZmlndXJlZCBmb3IgdGhlIHByaW1hcnkga2V5IGZvciBhbgotICAgICAgICBvYmotdHlwZSwgZm9yIGV4YW1wbGUgdm5zLWFjY2Vzcy1saXN0LWVudHJ5J3MgJ2lkJyBmaWVsZCBzaG93cwotICAgICAgICAnc29ydCcgOiAnaW50ZWdlcicgdG8gZGVzY3JpYmUgdGhhdCB0aGUgdGFibGUncyBpdGVtcwotICAgICAgICBhcmUgc29ydGVkIGJ5IGludGVnZXIuCi0gICAgIAotICAgICAgICBDdXJyZW50bHkgdGhlIHNvcnQtYnkgZmllbGQgaXMgbm90IGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgY2Fzc2FuZHJhIG1vZGVsIGRlc2NyaXB0aW9uCi0KLSAgICAgICAgQHBhcmFtIGZpZWxkIHN0cmluZywgZmllbGQgd2l0aGluIHRoZSBvYmplY3QtdHlwZQotICAgICAgICAiIiIKLQotICAgICAgICBpZiBub3Qgb2JqX3R5cGUgaW4gc2VsZi5vYmpfa2V5czoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAga2V5ID0gc2VsZi5vYmpfa2V5c1tvYmpfdHlwZV0KLSAgICAgICAgaWYgJ3NvcnQnIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXS5nZXQoJ2ZpZWxkcycsIFtdKVtrZXldOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnZmllbGRzJ11ba2V5XVsnc29ydCddCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGRlZiBhbGlhc19vYmpfdHlwZV9maWVsZChzZWxmLCBhbGlhc19vYmpfdHlwZSk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYSBzaW5nbGUgZmllbGQgbmFtZSBmb3IgYW4gb2JqX3R5cGUsIHVzdWFsbHkgYSBmb3JlaWduIGtleQotICAgICAgICBpbiB0aGUgbW9kZWwsIHdoaWNoIGlzIHRoZSBmaWVsZCBhc3NvY2lhdGVkIHdpdGggYW4gYWxpYXMuCi0gICAgICAgICIiIgotICAgICAgICBmb3JlaWduX2tleXMgPSBzZWxmLm9ial90eXBlX2ZvcmVpZ25fa2V5cyhhbGlhc19vYmpfdHlwZSkKLSAgICAgICAgaWYgbGVuKGZvcmVpZ25fa2V5cykgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBmb3JlaWduX2tleXNbMF0KLSAgICAgICAgcmV0dXJuIE5vbmUKLQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBub3RfZGVmYXVsdF92YWx1ZShzZWxmLCBvYmpfdHlwZSwgZmllbGQsIHZhbHVlKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBUcnVlIHdoZW4gdGhlIHZhbHVlIHBhc3NlZCBpbiBpcyBub3QgdGhlIGRlZmF1bHQgdmFsdWUuCi0gICAgICAgICIiIgotICAgICAgICBkZWZhdWx0X3ZhbHVlID0gc2VsZi5maWVsZF9kZWZhdWx0X3ZhbHVlKG9ial90eXBlLCBmaWVsZCkKLSAgICAKLSAgICAgICAgaWYgKHNlbGYuaXNfbnVsbF9hbGxvd2VkKG9ial90eXBlLCBmaWVsZCkgYW5kIHZhbHVlICE9ICcnKSBvciBcCi0gICAgICAgICAgKG5vdCBzZWxmLmlzX251bGxfYWxsb3dlZChvYmpfdHlwZSwgZmllbGQpIGFuZCBkZWZhdWx0X3ZhbHVlICE9IE5vbmUKLSAgICAgICAgICBhbmQgKGRlZmF1bHRfdmFsdWUgIT0gdmFsdWUpKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBvYmpfdHlwZV9yZWxhdGVkX2NvbmZpZ19vYmpfdHlwZShzZWxmLCBvYmpfdHlwZSk6Ci0gICAgICAgICIiIgotICAgICAgICBJZiBhbiBvYmotdHlwZSBkb2Vzbid0IGhhdmUgYSByZXN0IG1vZGVsLCBmb3IgZXhhbXBsZSAtIGhvc3QsIHRoZSBvYmpfdHlwZQotICAgICAgICBtYXkgaGF2ZSBhIHJlbGF0ZWQgY29uZmlnLXRhYmxlIGluIHRoZSBkYXRhYmFzZSwgd2hlcmUgYWRkaXRpb25hbCBjb25maWd1cmVkCi0gICAgICAgIGRhdGEgZm9yIHRoZSBkaXNjb3ZlcmVkIGRhdGEgY2FuIGJlIGZvdW5kLiAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoYXQgdGFibGUsCi0gICAgICAgIGZvciBob3N0LCBpdHMgaG9zdC1jb25kaWcKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBvYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgaWYgc2VsZi5vYmpfdHlwZV9oYXNfbW9kZWwob2JqX3R5cGUpOgotICAgICAgICAgICAgcmV0dXJuIG9ial90eXBlCi0KLSAgICAgICAgaWYgJ2NvbmZpZy1vYmotdHlwZScgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3Rbb2JqX3R5cGVdOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0W29ial90eXBlXVsnY29uZmlnLW9iai10eXBlJ10KLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIG9ial90eXBlX2luX3VzZV9hc19yZWxhdGVkX2NvbmZpZ190eXBlKHNlbGYsIGNvbmZpZ19vYmpfdHlwZSk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gdGhlIG9ial90eXBlIGlzIGluIHVzZSBieSB0aGUgcGFzZWQgaW4gY29uZmlnX29ial90eXBlCi0gICAgICAgIG9yIE5vbmUgb3RoZXJ3aXNlLiAgICBJbnZlcnNlIG9mIG9ial90eXBlX3JlbGF0ZWRfY29uZmlnX29ial90eXBlCi0gICAgICAgICIiIgotICAgICAgICBpZiBjb25maWdfb2JqX3R5cGUgPT0gTm9uZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgaWYgbm90IGNvbmZpZ19vYmpfdHlwZSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgZm9yIChvdCwgb3YpIGluIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBvdi5nZXQoJ2NvbmZpZy1vYmotdHlwZScpID09IGNvbmZpZ19vYmpfdHlwZToKLSAgICAgICAgICAgICAgICByZXR1cm4gb3QKLSAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL2NsaS9jbGkvcHJldHR5cHJpbnQucHkgYi9jbGkvY2xpL3ByZXR0eXByaW50LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0N2YxMTliLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvcHJldHR5cHJpbnQucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MjkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTAsMjAxMSwyMDEyLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMKLSMgUFJFVFRZUFJJTlQKLSMKLSMgVGhpcyBtb2R1bGUgY29udGFpbnMgY2xhc3NlcyB0aGF0IGhlbHAgZm9ybWF0dGluZyB0ZXh0IGZvciB0aGUgQ0xJLAotIyBpbmNsdWRpbmcgdGFibGVzLCBpbmRpdmlkdWFsIHJlY29yZHMgZXRjLgotIyAKLSMgRm9ybWF0dGluZyBpbmZvcm1hdGlvbiBpcyBzdG9yZWQgaW4gdGFibGVfaW5mbywgYSBkaWN0IG9mIGRpY3RzLgotCi1pbXBvcnQgbW9kZWxfaW5mb19saXN0Ci1pbXBvcnQgb3MKLWltcG9ydCBhcnJheQotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgdXRpZgotaW1wb3J0IHJlCi1pbXBvcnQgZm10Y252Ci0KLWNsYXNzIFByZXR0eVByaW50ZXIoKToKLSAgICB0YWJsZV9pbmZvID0gTm9uZSAgICMgQW5ub3RhdGVkIHRhYmxlIGZvcm1hdC4gVGhpcyBpcyBhIGRpY3Qgb2YgZGljdHMuIFNldCBieSBjbGkuCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnMpOgotICAgICAgICBzZWxmLnNkbnNoID0gYnMKLSAgICAgICAgc2VsZi50YWJsZV9pbmZvID0ge30KLSAgICAgICAgc2VsZi5mb3JtYXRfdmVyc2lvbiA9IHt9Ci0gICAgICAgIHNlbGYuZm9ybWF0X2FkZGVkX21vZHVsZXMgPSB7fQotCi0gICAgICAgIHNlbGYuYWRkX2Zvcm1hdCgnTU9ERUwnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ21vZGVsX2luZm8nLAotICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfaW5mb19saXN0Lm1vZGVsX2luZm9fZGljdCkKLQotCi0gICAgZGVmIGFkZF9mb3JtYXQoc2VsZiwgbmFtZSwgb3JpZ2luLCBmb3JtYXRfZGljdCk6Ci0gICAgICAgICIiIgotICAgICAgICBBZGQgYSBmb3JtYXQgdG8gdGhlIHNhdmVkIGZvcm1hdHMsIGZyb20gdGhlIGRpY3Rpb25hcnkKLSAgICAgICAgd2l0aCAnbmFtZScuICAgVGhlICduYW1lJyBjYW4gaGVscCBpZGVudGlmeSB0aGUgc291cmNlCi0gICAgICAgIGZvciB0aGlzIGZvcm1hdCB3aGVuIGVycm9ycyBhcmlzZQotICAgICAgICAiIiIKLQotICAgICAgICAjIHZlcnkgaW50ZXJlc3RpbmcgaXRlbXMgaW4gYSBmb3JtYXQgYXJlIHRoZSBmaWVsZF9vcmRlcmluZ3MsCi0gICAgICAgICMgYW5kIHRoZSBmaWVsZHMgZGVzY3JpcHRpb24uICAgSXQgY291bGQgbWFrZSBzZW5zZSB0byBvbmx5Ci0gICAgICAgICMgYWxsb3cgc3BlY2lmaWMgaXRlbXMgZnJvbSB0aGUgZmllbGRzLCB0byBwcmV2ZW50IGZpZWxkLW91dHB1dAotICAgICAgICAjIGZvcm1hdHRpbmcgZnJvbSB1c2luZyB1bmlubnRlZGVkIGRhdGFiYXNlIGZpZWxkcy4KLSAgICAgICAgZm9yIChmb3JtYXRfbmFtZSwgZm9ybWF0KSBpbiBmb3JtYXRfZGljdC5pdGVtcygpOgotICAgICAgICAgICAgaWYgbm90IGZvcm1hdF9uYW1lIGluIHNlbGYudGFibGVfaW5mbzoKLSAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX2luZm9bZm9ybWF0X25hbWVdID0geyB9Ci0gICAgICAgICAgICAjIGNvbWJpbmUgZGV0YWlsczogdG9wIGxldmVsIGl0ZW1zCi0gICAgICAgICAgICBmb3IgKGl0ZW1fbmFtZSwgaXRlbV92YWx1ZSkgaW4gZm9ybWF0Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgaWYgaXRlbV9uYW1lID09ICdmaWVsZHMnOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXRlbV9uYW1lIGluIHNlbGYudGFibGVfaW5mb1tmb3JtYXRfbmFtZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX2luZm9bZm9ybWF0X25hbWVdW2l0ZW1fbmFtZV0gPSB7fQotICAgICAgICAgICAgICAgICAgICBmb3IgKHRlcm1fbmFtZSwgdGVybV92YWx1ZSkgaW4gaXRlbV92YWx1ZS5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHRlcm1fbmFtZSBpbiBzZWxmLnRhYmxlX2luZm9bZm9ybWF0X25hbWVdW2l0ZW1fbmFtZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZV9pbmZvW2Zvcm1hdF9uYW1lXVtpdGVtX25hbWVdW3Rlcm1fbmFtZV0gPSB7fQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZV9pbmZvW2Zvcm1hdF9uYW1lXVtpdGVtX25hbWVdW3Rlcm1fbmFtZV0udXBkYXRlKHRlcm1fdmFsdWUpCi0gICAgICAgICAgICAgICAgaWYgaXRlbV9uYW1lID09ICdmaWVsZC1vcmRlcmluZ3MnOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXRlbV9uYW1lIGluIHNlbGYudGFibGVfaW5mb1tmb3JtYXRfbmFtZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX2luZm9bZm9ybWF0X25hbWVdW2l0ZW1fbmFtZV0gPSB7fQotICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX2luZm9bZm9ybWF0X25hbWVdW2l0ZW1fbmFtZV0udXBkYXRlKGl0ZW1fdmFsdWUpCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIHNhdmUgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSBmb3IgdGhpcyBmb3JtYXQKLSAgICAgICAgICAgIGlmIG5vdCAnc2VsZicgaW4gc2VsZi50YWJsZV9pbmZvW2Zvcm1hdF9uYW1lXToKLSAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX2luZm9bZm9ybWF0X25hbWVdWydzZWxmJ10gPSBuYW1lCi0gICAgICAgICAgICBpZiBub3QgJ29yaWdpbicgaW4gc2VsZi50YWJsZV9pbmZvW2Zvcm1hdF9uYW1lXToKLSAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX2luZm9bZm9ybWF0X25hbWVdWydvcmlnaW4nXSA9IG9yaWdpbgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBBZGQgdGhlICdJZHgnIGZpZWxkIGlmIGl0J3Mgbm90IHRoZXJlLgotICAgICAgICAgICAgaWYgZm9ybWF0X25hbWUgaW4gc2VsZi50YWJsZV9pbmZvOgotICAgICAgICAgICAgICAgIGlmIG5vdCAnZmllbGRzJyBpbiBzZWxmLnRhYmxlX2luZm9bZm9ybWF0X25hbWVdOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX2luZm9bZm9ybWF0X25hbWVdWydmaWVsZHMnXSA9IHt9Ci0gICAgICAgICAgICAgICAgaWYgbm90ICdJZHgnIGluIHNlbGYudGFibGVfaW5mb1tmb3JtYXRfbmFtZV1bJ2ZpZWxkcyddOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX2luZm9bZm9ybWF0X25hbWVdWydmaWVsZHMnXVsnSWR4J10gPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UtbmFtZScgOiAnIycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ0NoYXJGaWVsZCcKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotCi0gICAgZGVmIGFkZF9tb2R1bGVfbmFtZShzZWxmLCB2ZXJzaW9uLCBtb2R1bGUpOgotICAgICAgICAiIiIKLSAgICAgICAgU2F2ZSBzb21lIHN0YXRlIGFib3V0IHRoZSB2ZXJzaW9uL21vZHVsZQotICAgICAgICAiIiIKLSAgICAgICAgaWYgdmVyc2lvbiBub3QgaW4gc2VsZi5mb3JtYXRfdmVyc2lvbjoKLSAgICAgICAgICAgIHNlbGYuZm9ybWF0X3ZlcnNpb25bdmVyc2lvbl0gPSBbbW9kdWxlXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mb3JtYXRfdmVyc2lvblt2ZXJzaW9uXS5hcHBlbmQobW9kdWxlKQotCi0KLSAgICBkZWYgYWRkX2Zvcm1hdHNfZnJvbV9tb2R1bGUoc2VsZiwgdmVyc2lvbiwgbW9kdWxlKToKLSAgICAgICAgc2VsZi5hZGRfbW9kdWxlX25hbWUodmVyc2lvbiwgbW9kdWxlKQotICAgICAgICBmb3IgbmFtZSBpbiBkaXIobW9kdWxlKToKLSAgICAgICAgICAgIGlmIHJlLm1hdGNoKHInLipfRk9STUFUJCcsIG5hbWUpOgotICAgICAgICAgICAgICAgIGlmIG1vZHVsZS5fX25hbWVfXyBub3QgaW4gc2VsZi5mb3JtYXRfYWRkZWRfbW9kdWxlczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mb3JtYXRfYWRkZWRfbW9kdWxlc1ttb2R1bGUuX19uYW1lX19dID0gW25hbWVdCi0gICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5mb3JtYXRfYWRkZWRfbW9kdWxlc1ttb2R1bGUuX19uYW1lX19dOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdF9hZGRlZF9tb2R1bGVzW21vZHVsZS5fX25hbWVfX10uYXBwZW5kKG5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hZGRfZm9ybWF0KG5hbWUsIG1vZHVsZS5fX25hbWVfXywgZ2V0YXR0cihtb2R1bGUsIG5hbWUpKQotCi0KLSAgICAjIFV0aWxpdHkgRnVuY3Rpb25zCi0gICAgZGVmIGdldF9maWVsZF9pbmZvKHNlbGYsIG9ial90eXBlX2luZm8sIGZpZWxkX25hbWUpOgotICAgICAgICByZXR1cm4gb2JqX3R5cGVfaW5mb1snZmllbGRzJ10uZ2V0KGZpZWxkX25hbWUsIE5vbmUpCi0KLQotICAgIGRlZiBmb3JtYXRfdG9fYWxpYXNfdXBkYXRlKHNlbGYsIGRpc3BsYXlfZm9ybWF0LCB1cGRhdGUpOgotICAgICAgICAiIiIKLSAgICAgICAgR2l2ZW4gYSBmb3JtYXQsIGZpbmQgYWxsIHRoZSBmb3JtYXR0ZXJzLCBhbmQgZm9yIGVhY2gKLSAgICAgICAgZm9ybWF0dGVyLCBkZXRlcm1pbmUgd2hpY2ggYWxpYXNlcyBuZWVkIHRvIGJlIHVwZGF0ZWQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBkaXNwbGF5X2Zvcm1hdCBub3QgaW4gc2VsZi50YWJsZV9pbmZvOgotICAgICAgICAgICAgIyB0aGlzIHdpbGwgZmFpbCBzb29uIGVub3VnaCB3aGVuIGZpbmFsIG91dHB1dCBpcyBhdHRlbXB0ZWQKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBmb3JtYXRfZGljdCA9IHNlbGYudGFibGVfaW5mb1tkaXNwbGF5X2Zvcm1hdF0KLSAgICAgICAgaWYgbm90ICdmaWVsZHMnIGluIGZvcm1hdF9kaWN0OgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZm9yIChmaWVsZF9uYW1lLCBmaWVsZF9kaWN0KSBpbiBmb3JtYXRfZGljdFsnZmllbGRzJ10uaXRlbXMoKToKLSAgICAgICAgICAgIGlmICdmb3JtYXR0ZXInIGluIGZpZWxkX2RpY3Q6Ci0gICAgICAgICAgICAgICAgZm10Y252LmZvcm1hdHRlcl90b19hbGlhc191cGRhdGUoZmllbGRfZGljdFsnZm9ybWF0dGVyJ10sIHVwZGF0ZSkKLSAgICAgICAgICAgIGVsaWYgJ2VudHJ5X2Zvcm1hdHRlcicgaW4gZmllbGRfZGljdDoKLSAgICAgICAgICAgICAgICBmbXRjbnYuZm9ybWF0dGVyX3RvX2FsaWFzX3VwZGF0ZShmaWVsZF9kaWN0WydlbnRyeS1mb3JtYXR0ZXInXSwgdXBkYXRlKQotICAgICAgICByZXR1cm4gdXBkYXRlCi0KLQotICAgIGRlZiBmb3JtYXRzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50YWJsZV9pbmZvLmtleXMoKQotCi0gICAgZGVmIGZvcm1hdF9kZXRhaWxzKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIGEgdGFibGUgb2YgZm9ybWF0cyBzdWl0YWJsZSBhcyBhIGZvcm1hdF90YWJsZSBwYXJhbWV0ZXIKLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBbIHsgJ2Zvcm1hdCcgICAgICA6IHgsCi0gICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBkaWN0JyA6IHNlbGYudGFibGVfaW5mb1t4XVsnc2VsZiddLAotICAgICAgICAgICAgICAgICAgICdvcmlnaW4nICAgICAgOiBzZWxmLnRhYmxlX2luZm9beF1bJ29yaWdpbiddIH0KLQotICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc2VsZi5mb3JtYXRzKCldCi0KLQotICAgIGRlZiBmb3JtYXRfYXNfaGVhZGVyKHNlbGYsIGZpZWxkKToKLSAgICAgICAgIyBMT09LISBjb3VsZCBwcm9iIGRvIHNvbWV0aGluZyBmYW5jeSB0byBoYW5kbGUgY2FtZWxDYXBTdHJpbmdzIG9yIHVuZGVyc2NvcmVfc3RyaW5ncwotICAgICAgICByZXR1cm4gZmllbGRbMF0uY2FwaXRhbGl6ZSgpICsgZmllbGRbMTpdCi0KLQotICAgIGRlZiBnZXRfaGVhZGVyX2Zvcl9maWVsZChzZWxmLCBvYmpfdHlwZV9pbmZvLCBmaWVsZF9uYW1lKToKLSAgICAgICAgZmllbGRfaW5mbyA9IHNlbGYuZ2V0X2ZpZWxkX2luZm8ob2JqX3R5cGVfaW5mbywgZmllbGRfbmFtZSkKLSAgICAgICAgaWYgbm90IGZpZWxkX2luZm86Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5mb3JtYXRfYXNfaGVhZGVyKGZpZWxkX25hbWUpCi0gICAgICAgIGRlZmF1bHRfaGVhZGVyID0gc2VsZi5mb3JtYXRfYXNfaGVhZGVyKGZpZWxkX25hbWUpCi0gICAgICAgIHJldHVybiBmaWVsZF9pbmZvLmdldCgndmVyYm9zZS1uYW1lJywgZGVmYXVsdF9oZWFkZXIpCi0KLQotICAgIGRlZiBmb3JtYXRfdGFibGUoc2VsZiwgZGF0YV9saXN0LCBkaXNwbGF5X2Zvcm1hdCA9IE5vbmUsIGZpZWxkX29yZGVyaW5nPSJkZWZhdWx0Iik6Ci0gICAgICAgICIiIgotICAgICAgICBUYWtlcyBpbiBsaXN0IG9mIGRpY3RzIGFuZCBnZW5lcmF0ZXMgbmljZSB0YWJsZSwgZS5nLgotCi0gICAgICAgIGlkIHNsaWNlX2lkIE1BQyBBZGRyZXNzICAgICAgIGlwICAgIFN3aXRjaCBJRCAgICAKLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgIDEgIDEgICAgICAgIDAwOjAwOjAwOjAwOjAxOjAzIDEwMDEzIDE1MDg2MTQwNzQwNAotICAgICAgICAyICAyICAgICAgICAwMDowMDowMDowMDowMTowMSAxMDAxMSAxNTA4NjE0MDc0MDQKLSAgICAgICAgMyAgMSAgICAgICAgMDA6MDA6MDA6MDA6MDI6MDMgMTAwMjMgMTUwODY2OTU1NTE0Ci0KLSAgICAgICAgQHBhcmFtIGRhdGFfbGlzdCAtIGEgbGlzdCBvZiBkaWN0cwotICAgICAgICBAcGFyYW0gZm9ybWF0IGRlc2NyaWJlcyB0aGUgZm9ybWF0IG9mIHRoZSBvdXRwdXQgdGFibGUgdG8gZGlzcGxheQotICAgICAgICBAcGFyYW0gZmllbGRfb3JkZXJpbmcgaXMgdGhlIGZpZWxkX29yZGVyaW5nIGlkZW50aWZpZXIgaW4gdGhlIG1vZGVsLAotICAgICAgICAgIHRoZXJlIGNhbiBiZSBtdWx0aXBsZSAoImRlZmF1bHQiLCAiYnJpZWYiLCAiZGV0YWlsZWQiKQotICAgICAgIAotICAgICAgICAiIiIKLQotICAgICAgICAjCi0gICAgICAgICMgZmlyc3QsIGRldGVybWluZSBhIGxpc3Qgb2YgZmllbGRzIHRvIGJlIHByaW50ZWQsIHRoZW4gdXNpbmcgdGhhdCBsaXN0LAotICAgICAgICAjIGRldGVybWluZSB0aGUgZmllbGRzIHdpZHRoIG9mIGVhY2ggZmllbGQsIGluY2x1ZGluZyBjYWxsaW5nIGFueSBmb3JtYXR0aW5nCi0gICAgICAgICMgZnVuY3Rpb24sIHRoZW4gZm9ybWF0IHRoZSByZXN1bHQKLSAgICAgICAgIwotICAgICAgICAjIGR1cmluZyB0aGUgZm9ybWF0IGNvbXB1dGF0aW9uLCByZXBsYWNlIHRoZSB2YWx1ZSB3aXRoIHRoZSAnZm9ybWF0dGVkIHZhbHVlJwotICAgICAgICAjIHRvIHByZXZlbnQgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgZm9ybWF0dGluZyBmdW5jaXRpb24KLSAgICAgICAgIwotICAgICAgICBpZiBub3QgZGF0YV9saXN0IG9yIG5vdCB0eXBlKGRhdGFfbGlzdCkgPT0gbGlzdDoKLSAgICAgICAgICAgIGlmIHR5cGUoZGF0YV9saXN0KSA9PSBkaWN0IGFuZCAiZXJyb3JfdHlwZSIgaW4gZGF0YV9saXN0OgotICAgICAgICAgICAgICAgIHJldHVybiBkYXRhX2xpc3QuZ2V0KCJkZXNjcmlwdGlvbiIsICJJbnRlcm5hbCBlcnJvciIpCi0gICAgICAgICAgICByZXR1cm4gIk5vbmUuIgotCi0gICAgICAgIGZvcm1hdF9pbmZvID0gc2VsZi50YWJsZV9pbmZvLmdldChkaXNwbGF5X2Zvcm1hdCwgTm9uZSkKLQotICAgICAgICBpZiBzZWxmLnNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgaWYgZm9ybWF0X2luZm8gPT0gTm9uZToKLSAgICAgICAgICAgICAgICBwcmludCAnZm9ybWF0X3RhYmxlOiBtaXNzaW5nIGZvcm1hdCAlcycgJSBkaXNwbGF5X2Zvcm1hdAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmb3JtYXRfZnJvbSA9IGZvcm1hdF9pbmZvLmdldCgnc2VsZicsICcnKQotICAgICAgICAgICAgICAgIHByaW50ICdmb3JtYXRfdGFibGU6ICVzICVzICVkIGVudHJpZXMnICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mb3JtYXQsIGZvcm1hdF9mcm9tLCBsZW4oZGF0YV9saXN0KSkKLQotICAgICAgICBmaWVsZF93aWR0aHMgPSB7fQotICAgICAgICBmaWVsZF9oZWFkZXJzID0ge30KLSAgICAgICAgZmllbGRzX3RvX3ByaW50ID0gW10KLQotICAgICAgICAjCi0gICAgICAgICMgZG8gdGhlICdmaWd1ciduIGZvciB3aGljaCBmaWVsZHMgd2lsbCBnZXQgcHJpbnRlZC4KLSAgICAgICAgIwotICAgICAgICAjIHRvIGRldGVybWluZSB0aGUgbGVuZ3RoLCBjYWxsIHRoZSBmb3JtYXR0aW5nIGZ1bmN0aW9uLCBhbmQgcmVwbGFjZSB0aGUKLSAgICAgICAgIyB2YWx1ZSBmb3IgdGhhdCBmaWVsZCB3aXRoIHRoZSB1cGRhdGVkIHZhbHVlOyB0aGVuICdjeXBoZXIgdGhlIGxlbmd0aC4KLSAgICAgICAgIwotICAgICAgICAjIG5vdGUgdGhhdCBmaWVsZF93aWR0aHMua2V5cygpIGFyZSBhbGwgdGhlIHBvc3NpYmxlIGZpZWxkcwotICAgICAgICAjIGNoZWNrIGlmIHRoZSBoZWFkZXJzIG1ha2VzIGFueSBmaWVsZCB3aWRlciBhbmQgc2V0IGZpZWxkc190b19wcmludAotICAgICAgICAjCi0gICAgICAgIGlmIGZvcm1hdF9pbmZvOgotICAgICAgICAgICAgaWYgJ2ZpZWxkLW9yZGVyaW5ncycgaW4gZm9ybWF0X2luZm86Ci0gICAgICAgICAgICAgICAgZmllbGRzX3RvX3ByaW50ID0gZm9ybWF0X2luZm9bJ2ZpZWxkLW9yZGVyaW5ncyddLmdldChmaWVsZF9vcmRlcmluZywgW10pCi0gICAgICAgICAgICBpZiBsZW4oZmllbGRzX3RvX3ByaW50KSA9PSAwOiAjIGVpdGhlciBubyBmaWVsZF9vcmRlcmluZ3Mgb3IgY291bGRuJ3QgZmluZCBzcGVjaWZpYwotICAgICAgICAgICAgICAgIGZpZWxkc190b19wcmludCA9IGZvcm1hdF9pbmZvWydmaWVsZHMnXS5rZXlzKCkKLSAgICAgICAgICAgIGZvciBmIGluIGZpZWxkc190b19wcmludDoKLSAgICAgICAgICAgICAgICBoZWFkZXIgPSBzZWxmLmdldF9oZWFkZXJfZm9yX2ZpZWxkKGZvcm1hdF9pbmZvLCBmKQotICAgICAgICAgICAgICAgIGZpZWxkX2hlYWRlcnNbZl0gPSBoZWFkZXIKLSAgICAgICAgICAgICAgICBmaWVsZF93aWR0aHNbZl0gPSBtYXgobGVuKGhlYWRlciksIGZpZWxkX3dpZHRocy5nZXQoZiwgMCkpCi0gICAgICAgICAgICAjIExPT0shIG5vdCBkb25lIG5vdy4uLiBhZGQgaW4gZXh0cmEgZmllbGRzIGRpc2NvdmVyZWQgaW4gZGF0YV9saXN0IGlmIGRlc2lyZWQKLSAgICAgICAgICAgICMgcmlnaHQgbm93LCBmaWVsZHNfdG9fcHJpbnQgaXMgYSBwcm9qZWN0aW9uIG9uIHRoZSBkYXRhCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGdldCBmaWVsZHNfdG9fcHJpbnQgZnJvbSB0aGUgZmllbGQgbmFtZXMgaW4gZGF0YV9saXN0LAotICAgICAgICAgICAgIyB3aGljaCBpcyAoaW50ZW5kZWQgdG8gYmUpIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMKLSAgICAgICAgICAgIGFsbF9maWVsZHMgPSB1dGlmLnVuaXF1ZV9saXN0X2Zyb21fbGlzdChzdW0oW3gua2V5cygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGRhdGFfbGlzdF0sIFtdKSkKLSAgICAgICAgICAgIGZpZWxkc190b19wcmludCA9IHNvcnRlZChhbGxfZmllbGRzKQotCi0gICAgICAgIGlmIHNlbGYuc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICBwcmludCAnZm9ybWF0X3RhYmxlOiBmaWVsZCBvcmRlciAiJXMiIGZpZWxkcyAlcycgJSBcCi0gICAgICAgICAgICAgICAgICAgKGZpZWxkX29yZGVyaW5nLCBmaWVsZHNfdG9fcHJpbnQpCi0KLSAgICAgICAgIwotICAgICAgICAjIGdlbmVyYXRlIGEgZmllbGRzX3RvX3ByaW50IG9yZGVyZWQgbGlzdCB3aXRoIGZpZWxkX3dpZHRocyBmb3IgZWFjaAotICAgICAgICAjIGJ5IGdvaW5nIHRocm91Z2ggYWxsIGRhdGEgYW5kIHRoZW4gdXNpbmcgZmllbGRfb3JkZXJpbmcgaWYgYXZhaWwuCi0gICAgICAgICMKLSAgICAgICAgcm93X2luZGV4ID0gMAotICAgICAgICBmb3Igcm93IGluIGRhdGFfbGlzdDoKLSAgICAgICAgICAgIHJvd19pbmRleCArPSAxCi0gICAgICAgICAgICBpZiBub3QgJ0lkeCcgaW4gcm93OgotICAgICAgICAgICAgICAgIHJvd1snSWR4J10gPSByb3dfaW5kZXgKLSAgICAgICAgICAgIGZvciBrZXkgaW4gZmllbGRzX3RvX3ByaW50OgotICAgICAgICAgICAgI2ZvciAoayx2KSBpbiByb3cuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBmb3JtYXRfaW5mbzoKLSAgICAgICAgICAgICAgICAgICAgIyBkb24ndCB3b3JyeSBhYm91dCBoZWFkZXIgaGVyZSAtIGRvIHRoYXQgc29vbiBiZWxvdwotICAgICAgICAgICAgICAgICAgICBpbmZvID0gc2VsZi5nZXRfZmllbGRfaW5mbyhmb3JtYXRfaW5mbywga2V5KQotICAgICAgICAgICAgICAgICAgICBpZiBpbmZvIGFuZCBpbmZvLmdldCgnZm9ybWF0dGVyJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByb3dba2V5XSA9IHN0cihpbmZvWydmb3JtYXR0ZXInXShyb3cuZ2V0KGtleSwgJycpLCByb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGxlbihyb3dba2V5XSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBsZW4oc3RyKHJvdy5nZXQoa2V5LCAnJykpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkX2hlYWRlcnNba2V5XSA9IHNlbGYuZm9ybWF0X2FzX2hlYWRlcihrZXkpCi0gICAgICAgICAgICAgICAgICAgIHcgPSBtYXgobGVuKHN0cihyb3dba2V5XSkpLCBsZW4oZmllbGRfaGVhZGVyc1trZXldKSkKLSAgICAgICAgICAgICAgICBmaWVsZF93aWR0aHNba2V5XSA9IG1heCh3LCBmaWVsZF93aWR0aHMuZ2V0KGtleSwgMCkpCi0KLSAgICAgICAgIwotICAgICAgICAjIGdlbmVyYXRlIHRoZSBmb3JtYXRfc3RyIGFuZCBoZWFkZXIgbGluZXMgYmFzZWQgb24gZmllbGRzX3RvX3ByaW50Ci0gICAgICAgICMKLSAgICAgICAgZm9ybWF0X3N0cl9wZXJfZmllbGQgPSBbXQotICAgICAgICBmb3IgZiBpbiBmaWVsZHNfdG9fcHJpbnQ6Ci0gICAgICAgICAgICBmb3JtYXRfc3RyX3Blcl9maWVsZC5hcHBlbmQoIiUlKCVzKS0lZHMiICUgKGYsIGZpZWxkX3dpZHRoc1tmXSkpCi0KLSAgICAgICAgcm93X2Zvcm1hdF9zdHIgPSAiICIuam9pbihmb3JtYXRfc3RyX3Blcl9maWVsZCkgKyAiXG4iCi0KLSAgICAgICAgIwotICAgICAgICAjIGZpbmFsbHkgcHJpbnQhIG9ubHkgY2F2ZWF0IGlzIHRvIGhhbmRsZSBzcGFyc2UgZGF0YSB3aXRoIGEgYmxhbmtfZGljdAotICAgICAgICAjIGxldCByZXN1bHQgYmUgYSBsaXN0LCBhbmQgYXBwZW5kIG5ldyBzdHJpbmdzIHRvIGdlbmVyYXRlIHRoZSBmaW5hbCByZXN1bHQsCi0gICAgICAgICMgKGZvciBiZXR0ZXIgcHl0aG9uIHBlcmZvcm1hbmNlKQotICAgICAgICAjCi0gICAgICAgIHJlc3VsdD0gW10KLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiICIuam9pbihmb3JtYXRfc3RyX3Blcl9maWVsZCkgJSBmaWVsZF9oZWFkZXJzICsgIlxuIikKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgifCIuam9pbihbIi0iKmZpZWxkX3dpZHRoc1tmXSBmb3IgZiBpbiBmaWVsZHNfdG9fcHJpbnRdKSArICJcbiIpICMgSSA8MyBweXRob24gdG9vCi0KLSAgICAgICAgYmxhbmtfZGljdCA9IGRpY3QoWyhmLCIiKSBmb3IgZiBpbiBmaWVsZHNfdG9fcHJpbnRdKQotICAgICAgICBmb3Igcm93IGluIGRhdGFfbGlzdDoKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocm93X2Zvcm1hdF9zdHIgJSBkaWN0KGJsYW5rX2RpY3QsICoqcm93KSkKLSAgICAgICAgCi0gICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKLQotCi0gICAgZGVmIGZvcm1hdF9lbnRyeShzZWxmLCBkYXRhLCBkaXNwbGF5X2Zvcm1hdD1Ob25lLCBmaWVsZF9vcmRlcmluZz0iZGVmYXVsdCIsIGRlYnVnPUZhbHNlKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRha2VzIGluIHBhcnNlZCBKU09OIG9iamVjdCwgZ2VuZXJhdGVzIG5pY2Ugc2luZ2xlIGVudHJ5IHByaW50b3V0LAotICAgICAgICBpbnRlbmRlZCBmb3IgJ2RldGFpbHMnIGRpc3BsYXkKLQotICAgICAgICBAcGFyYW0gZGF0YSBsaXN0IG9mIGRpY3Rpb25hcmllcywgdmFsdWVzIGZvciBvdXRwdXQKLSAgICAgICAgQHBhcmFtIGZvcm1hdCBuYW1lIG9mIGZvcm1hdCBkZXNjcmlwdGlvbiB0byB1c2UgZm9yIHByaW50aW5nCi0gICAgICAgIEBwYXJhbSBmaWVsZF9vcmRlcmluZyBsaXN0IG9mIGZpZWxkIHRvIHByaW50Ci0gICAgICAgIEBwYXJhbSBkZWJ1ZyBwcmludCB2YWx1ZXMgb2YgY29tcG91bmQga2V5cwotICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IGRhdGE6Ci0gICAgICAgICAgICByZXR1cm4gIk5vbmUuIgotICAgICAgICBlbGlmIHR5cGUoZGF0YSkgPT0gZGljdCBhbmQgImVycm9yX3R5cGUiIGluIGRhdGE6Ci0gICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoImRlc2NyaXB0aW9uIiwgIkludGVybmFsIGVycm9yIikKLSAgICAKLSAgICAgICAgZm9ybWF0X2luZm8gPSBzZWxmLnRhYmxlX2luZm8uZ2V0KGRpc3BsYXlfZm9ybWF0LCBOb25lKQotCi0gICAgICAgICMgUHJpbnQuIFByZXR0eSBwbGVhc2UuCi0gICAgICAgIGlmIGZvcm1hdF9pbmZvOgotICAgICAgICAgICAgZmllbGRzID0gZm9ybWF0X2luZm9bJ2ZpZWxkcyddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWVsZHMgPSBkaWN0KFtbeCwge31dIGZvciB4IGluIGRhdGEua2V5cygpXSkKLSAgICAgICAgICAgIGZvcm1hdF9pbmZvID0geyAnZmllbGRzJyA6IGZpZWxkcyB9Ci0gICAgICAgICAgICBpZiBzZWxmLnNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgIHByaW50ICJmb3JtYXRfZW50cnk6IE1pc3NpbmcgZm9ybWF0ICIsIGRpc3BsYXlfZm9ybWF0LCBmaWVsZHMKLQotICAgICAgICAjIEZpbmQgd2lkZXN0IGRhdGEgZmllbGQgbmFtZQotICAgICAgICBsYWJlbF93ID0gbGVuKCBtYXgoZGF0YSwga2V5PWxhbWJkYSB4Omxlbih4KSkgKQotICAgICAgICBpZiBmb3JtYXRfaW5mbzoKLSAgICAgICAgICAgIHZlcmJvc2VfbGVuID0gbWF4KFtsZW4oc2VsZi5nZXRfaGVhZGVyX2Zvcl9maWVsZChmb3JtYXRfaW5mbywgeCkpIGZvciB4IGluIGZpZWxkcy5rZXlzKCldKQotICAgICAgICAgICAgIyBUaGlzIGlzbid0IGV4YWN0bHkgcmlnaHQsIHRoZSB2ZXJib3NlIG5hbWVzIGZvciB0aGUgZmllbGRzIG91Z2h0IHRvIGJlIHJlcGxhY2VkIGZpcnN0Ci0gICAgICAgICAgICBsYWJlbF93ID0gbWF4KHZlcmJvc2VfbGVuLCBsYWJlbF93KQotICAgICAgICBsYWJlbF9zdHIgPSAiJSUtJWRzIDoiICUgbGFiZWxfdwotCi0gICAgICAgICMgVXNlIGZvcm1hdF9pbmZvIGZvciB0aGlzIHRhYmxlIHRvIG9yZGVyIGZpZWxkcyBpZiBwb3NzaWJsZQotICAgICAgICBmaWVsZHNfdG9fcHJpbnQgPSBOb25lCi0gICAgICAgIGlmIGZvcm1hdF9pbmZvOgotICAgICAgICAgICAgaWYgJ2ZpZWxkLW9yZGVyaW5ncycgaW4gZm9ybWF0X2luZm86Ci0gICAgICAgICAgICAgICAgZmllbGRzX3RvX3ByaW50ID0gZm9ybWF0X2luZm9bJ2ZpZWxkLW9yZGVyaW5ncyddLmdldChmaWVsZF9vcmRlcmluZywgW10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdFcnJvcjogaW50ZXJuYWw6ICVzIGZpZWxkIG9yZGVyaW5nICVzIG5vdCBwcmVzZW50IGZvciAlcycgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5X2Zvcm1hdCwgZmllbGRfb3JkZXJpbmcsIGZvcm1hdF9pbmZvKQotICAgICAgICAgICAgaWYgZmllbGRzX3RvX3ByaW50ID09IE5vbmUgb3IgbGVuKGZpZWxkc190b19wcmludCkgPT0gMDoKLSAgICAgICAgICAgICAgICAjIGVpdGhlciBubyBmaWVsZF9vcmRlcmluZ3Mgb3IgY291bGRuJ3QgZmluZCBzcGVjaWZpYwotICAgICAgICAgICAgICAgIGZpZWxkc190b19wcmludCA9IGZvcm1hdF9pbmZvWydmaWVsZHMnXS5rZXlzKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpZWxkc190b19wcmludCA9IHNvcnRlZChmaWVsZHMua2V5cygpKQotCi0gICAgICAgIHJlc3VsdCA9ICIiCi0gICAgICAgIHRtcF9tZXJnZWRfZGljdCA9IGRpY3QoWyhmLCIiKSBmb3IgZiBpbiBmaWVsZHNfdG9fcHJpbnRdLCAqKmRhdGEpCi0gICAgICAgIGJsYW5rX2RpY3QgPSBkaWN0KFsoZiwiIikgZm9yIGYgaW4gZmllbGRzX3RvX3ByaW50XSkKLQotICAgICAgICAjIGZpcnN0IHByaW50IHRoZSByZXF1ZXN0ZWQgZmllbGRzCi0gICAgICAgIGFsbF9maWVsZHNfaW5fY29ycmVjdF9vcmRlciA9IGxpc3QoZmllbGRzX3RvX3ByaW50KQotICAgICAgICAjIHRoZW4gdGhlIHJlbWFpbmluZyBmaWVsZHMKLSAgICAgICAgYWxsX2ZpZWxkc19pbl9jb3JyZWN0X29yZGVyLmV4dGVuZChbeCBmb3IgeCBpbiBmaWVsZHMua2V5cygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHggbm90IGluIGZpZWxkc190b19wcmludF0pCi0gICAgICAgICMgZ2l2ZSBhbGwgdGhlIGZvcm1hdHRlcidzIGEgc2hvdCwgc2F2ZSB0aGUgdXBkYXRlcwotICAgICAgICB1cGRhdGVkID0ge30KLSAgICAgICAgZm9yIGUgaW4gYWxsX2ZpZWxkc19pbl9jb3JyZWN0X29yZGVyOgotICAgICAgICAgICAgaWYgZm9ybWF0X2luZm86Ci0gICAgICAgICAgICAgICAgaW5mbyA9IHNlbGYuZ2V0X2ZpZWxkX2luZm8oZm9ybWF0X2luZm8sIGUpCi0gICAgICAgICAgICAgICAgaWYgbm90IGluZm86Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgJ2VudHJ5LWZvcm1hdHRlcicgaW4gaW5mbzoKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlZFtlXSA9IGluZm9bJ2VudHJ5LWZvcm1hdHRlciddKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX21lcmdlZF9kaWN0LmdldChlLCAnJyksIHRtcF9tZXJnZWRfZGljdCkKLSAgICAgICAgICAgICAgICBlbGlmICdmb3JtYXR0ZXInIGluIGluZm86Ci0gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRbZV0gPSBpbmZvWydmb3JtYXR0ZXInXSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcF9tZXJnZWRfZGljdC5nZXQoZSwgJycpLCB0bXBfbWVyZ2VkX2RpY3QpCi0KLSAgICAgICAgdG1wX21lcmdlZF9kaWN0LnVwZGF0ZSh1cGRhdGVkKQotCi0gICAgICAgIGRhdGEudXBkYXRlKHVwZGF0ZWQpCi0gICAgICAgIGFsbF9maWVsZHNfaW5fY29ycmVjdF9vcmRlciA9IGZpbHRlcihsYW1iZGEgeDogeCBpbiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsX2ZpZWxkc19pbl9jb3JyZWN0X29yZGVyKQotICAgICAgICBmb3IgZSBpbiBhbGxfZmllbGRzX2luX2NvcnJlY3Rfb3JkZXI6Ci0gICAgICAgICAgICBpZiBmb3JtYXRfaW5mbzoKLSAgICAgICAgICAgICAgICBpbmZvID0gc2VsZi5nZXRfZmllbGRfaW5mbyhmb3JtYXRfaW5mbywgZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgZGVidWcgYW5kIGluZm8gYW5kICdoZWxwX3RleHQnIGluIGluZm8gYW5kIGluZm9bJ2hlbHBfdGV4dCddWzBdID09ICcjJzoKLSAgICAgICAgICAgICAgICAgICAgIyBzZG5zaC5faXNfY29tcG91bmRfa2V5KCksIHBsZWFzZSBza2lwIGRpc3BsYXkgb2YgY29tcG91bmQga2V5Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICByZXN1bHQgKz0gKGxhYmVsX3N0ciAlIHNlbGYuZ2V0X2hlYWRlcl9mb3JfZmllbGQoZm9ybWF0X2luZm8sIGUpKyIgIisKLSAgICAgICAgICAgICAgICAgICAgICAgc3RyKHRtcF9tZXJnZWRfZGljdFtlXSkgKyAiXG4iKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiByZXN1bHRbOi0xXQotCi0gICAgZGVmIGdldF90ZXJtaW5hbF9zaXplKHNlbGYpOgotICAgICAgICBkZWYgaW9jdGxfR1dJTlNaKGZkKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbXBvcnQgZmNudGwsIHRlcm1pb3MsIHN0cnVjdCwgb3MKLSAgICAgICAgICAgICAgICBjciA9IHN0cnVjdC51bnBhY2soJ2hoJywgZmNudGwuaW9jdGwoZmQsIHRlcm1pb3MuVElPQ0dXSU5TWiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzEyMzQnKSkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgcmV0dXJuIGNyCi0gICAgICAgIGNyID0gaW9jdGxfR1dJTlNaKDApIG9yIGlvY3RsX0dXSU5TWigxKSBvciBpb2N0bF9HV0lOU1ooMikKLSAgICAgICAgaWYgbm90IGNyOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZkID0gb3Mub3Blbihvcy5jdGVybWlkKCksIG9zLk9fUkRPTkxZKQotICAgICAgICAgICAgICAgIGNyID0gaW9jdGxfR1dJTlNaKGZkKQotICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgaWYgbm90IGNyOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNyID0gKG9zLmVudmlyb25bJ0xJTkVTJ10sIG9zLmVudmlyb25bJ0NPTFVNTlMnXSkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBjciA9ICgyNCwgODApCi0KLSAgICAgICAgaWYgKGNyWzFdID09IDAgb3IgY3JbMF0gPT0gMCk6Ci0gICAgICAgICAgICByZXR1cm4gKDgwLCAyNCkKLQotICAgICAgICByZXR1cm4gaW50KGNyWzFdKSwgaW50KGNyWzBdKQotCi0gICAgZGVmIGZvcm1hdF90aW1lX3Nlcmllc19ncmFwaChzZWxmLCBkYXRhLCBvYmpfdHlwZT1Ob25lLCBmaWVsZF9vcmRlcmluZz0iZGVmYXVsdCIpOgotICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgIHJldHVybiAiTm9uZS4iCi0gICAgICAgIGVsaWYgdHlwZShkYXRhKSA9PSBkaWN0IGFuZCAiZXJyb3JfdHlwZSIgaW4gZGF0YToKLSAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgiZGVzY3JpcHRpb24iLCAiSW50ZXJuYWwgZXJyb3IiKQotCi0gICAgICAgIG9ial90eXBlX2luZm8gPSBzZWxmLnRhYmxlX2luZm8uZ2V0KG9ial90eXBlLCBOb25lKQotCi0gICAgICAgIGlmIHNlbGYuc2Ruc2guZGVzY3JpcHRpb246Ci0gICAgICAgICAgICBwcmludCAiZm9ybWF0X3RpbWVfc2VyaWVzX2dyYXBoIiwgb2JqX3R5cGUsIG9ial90eXBlX2luZm8KLSAgICAgICAgeXVuaXRzID0gTm9uZQotICAgICAgICB5bGFiZWwgPSAiVmFsdWUiCi0gICAgICAgIGlmIChvYmpfdHlwZV9pbmZvKToKLSAgICAgICAgICAgIHlsYWJlbCA9IG9ial90eXBlX2luZm9bJ2ZpZWxkcyddWyd2YWx1ZSddWyd2ZXJib3NlLW5hbWUnXQotICAgICAgICAgICAgaWYgJ3VuaXRzJyBpbiBvYmpfdHlwZV9pbmZvWydmaWVsZHMnXVsndmFsdWUnXToKLSAgICAgICAgICAgICAgICB5dW5pdHMgPSBvYmpfdHlwZV9pbmZvWydmaWVsZHMnXVsndmFsdWUnXVsndW5pdHMnXQotCi0KLSAgICAgICAgbWlueSA9IE5vbmUKLSAgICAgICAgbWF4eSA9IE5vbmUKLSAgICAgICAgbWlueCA9IE5vbmUKLSAgICAgICAgbWF4eCA9IE5vbmUKLQotICAgICAgICBmb3IgKHgseSkgaW4gZGF0YToKLSAgICAgICAgICAgIGlmIG1pbnkgPT0gTm9uZSBvciB5IDwgbWlueToKLSAgICAgICAgICAgICAgICBtaW55ID0geQotICAgICAgICAgICAgaWYgbWF4eSA9PSBOb25lIG9yIHkgPiBtYXh5OgotICAgICAgICAgICAgICAgIG1heHkgPSB5Ci0gICAgICAgICAgICBpZiBtaW54ID09IE5vbmUgb3IgeCA8IG1pbng6Ci0gICAgICAgICAgICAgICAgbWlueCA9IHgKLSAgICAgICAgICAgIGlmIG1heHggPT0gTm9uZSBvciB4ID4gbWF4eDoKLSAgICAgICAgICAgICAgICBtYXh4ID0geAotCi0gICAgICAgIGlmICh5dW5pdHMgPT0gJyUnKToKLSAgICAgICAgICAgIG1heHkgPSAxMDAKLQotICAgICAgICBpZiBpc2luc3RhbmNlKG1heHksIGZsb2F0KSBhbmQgbWF4eSA8IDEwLjA6Ci0gICAgICAgICAgICBheGlzeXcgPSBsZW4oJyUuNWYnICUgbWF4eSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGF4aXN5dyA9IGxlbignJXMnICUgbWF4eSkKLSAgICAgICAgCi0gICAgICAgICh0d2lkdGgsIHRoZWlnaHQpID0gc2VsZi5nZXRfdGVybWluYWxfc2l6ZSgpCi0KLSAgICAgICAgd2lkdGggPSB0d2lkdGgtYXhpc3l3Ci0gICAgICAgIGhlaWdodCA9IHRoZWlnaHQtNQotCi0gICAgICAgIHlidWNrZXQgPSBmbG9hdChtYXh5KS9oZWlnaHQ7Ci0KLSAgICAgICAgeGJ1Y2tldCA9IChtYXh4LW1pbngpL3dpZHRoOwotICAgICAgICBpZiAoeGJ1Y2tldCA9PSAwKToKLSAgICAgICAgICAgIG1pbnggPSBtYXh4IC0gMTgwMDAwMAotICAgICAgICAgICAgbWF4eCArPSAxODAwMDAwCi0gICAgICAgICAgICB4YnVja2V0ID0gbWF4eC93aWR0aDsKLQotICAgICAgICBncmFwaCA9IGFycmF5LmFycmF5KCdjJykKLSAgICAgICAgZ3JhcGguZnJvbXN0cmluZygnICcgKiAod2lkdGggKiBoZWlnaHQpKQotICAgICAgICBmb3IgKHgseSkgaW4gZGF0YToKLSAgICAgICAgICAgIGlmICh5YnVja2V0ID09IDApOgotICAgICAgICAgICAgICAgIHljID0gaGVpZ2h0Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHljID0gaW50KHJvdW5kKChtYXh5LXkpL3lidWNrZXQpKQotICAgICAgICAgICAgaWYgKHhidWNrZXQgPT0gMCk6Ci0gICAgICAgICAgICAgICAgeHkgPSB3aWR0aAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB4YyA9IGludChyb3VuZCgoeC1taW54KS94YnVja2V0KSkKLQotICAgICAgICAgICAgaWYgKHljIDwgMCk6Ci0gICAgICAgICAgICAgICAgeWMgPSAwCi0gICAgICAgICAgICBpZiAoeWMgPj0gaGVpZ2h0KToKLSAgICAgICAgICAgICAgICB5YyA9IGhlaWdodC0xCi0gICAgICAgICAgICBpZiAoeGMgPCAwKToKLSAgICAgICAgICAgICAgICB4YyA9IDAKLSAgICAgICAgICAgIGlmICh4YyA+PSB3aWR0aCk6Ci0gICAgICAgICAgICAgICAgeGMgPSB3aWR0aC0xCi0KLSAgICAgICAgICAgICNwcmludCAoeGMseWMsIHgsIHksIHljKndpZHRoICsgeGMpCi0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZSh5YyxoZWlnaHQpOgotICAgICAgICAgICAgICAgIGdyYXBoW2kqd2lkdGggKyB4Y10gPSAnIycKLQotICAgICAgICBiID0gJyVzXG4nICUgKHlsYWJlbCkKLQotICAgICAgICBpZiBpc2luc3RhbmNlKG1heHksIGZsb2F0KSBhbmQgbWF4eSA8IDEwLjA6Ci0gICAgICAgICAgICBmb3JtID0gJyUlJWQuNWZ8JSVzXG4nCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3JtID0gJyUlJWRzfCUlc1xuJwotCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDAsaGVpZ2h0LTEpOgotICAgICAgICAgICAgeWxhYmVsID0gbWF4eSAtIGkqeWJ1Y2tldAotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobWF4eSwgZmxvYXQpIG9yIG1heHkgPj0gMTAuMDoKLSAgICAgICAgICAgICAgICB5bGFiZWwgPSBpbnQocm91bmQoeWxhYmVsKSkKLSAgICAgICAgICAgIGIgKz0gKGZvcm0gJSBheGlzeXcpICUgXAotICAgICAgICAgICAgICAgICh5bGFiZWwsIAotICAgICAgICAgICAgICAgICAnJy5qb2luKGdyYXBoW2kqd2lkdGg6KGkrMSkqd2lkdGgtMV0pKQotICAgICAgICBiICs9IChmb3JtICUgYXhpc3l3KSAlIFwKLSAgICAgICAgICAgICgwLCAnJy5qb2luKGdyYXBoWyhoZWlnaHQtMSkqd2lkdGg6aGVpZ2h0KndpZHRoLTFdKS5yZXBsYWNlKCcgJywgJ18nKSkKLQotICAgICAgICBiICs9ICclcycgJSAoJyAnICogYXhpc3l3KQotICAgICAgICBkID0gJyAnICogYXhpc3l3Ci0KLSAgICAgICAgb2xkZGF0ZSA9IE5vbmUKLSAgICAgICAgaW50ZXJ2YWwgPSAobWF4eCAtIG1pbngpLyh3aWR0aC83LjApCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDAsIHdpZHRoLzcpOgotICAgICAgICAgICAgY3VydGltZXN0YW1wID0gbWlueCArIGludGVydmFsKmkKLSAgICAgICAgICAgCi0gICAgICAgICAgICBpZiBpID09IHdpZHRoLzctMToKLSAgICAgICAgICAgICAgICBkZiA9ICgnICcgKiAod2lkdGggJSA3KSkgKyAiICVtLyVkXiIKLSAgICAgICAgICAgICAgICB0ZiA9ICgnICcgKiAod2lkdGggJSA3KSkgKyAiICVIOiVNXiIKLSAgICAgICAgICAgICAgICBjdXJ0aW1lc3RhbXAgPSBtYXh4Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRmID0gIl4lbS8lZCAiCi0gICAgICAgICAgICAgICAgdGYgPSAiXiVIOiVNICIKLQotICAgICAgICAgICAgY3VydGltZSA9IGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoY3VydGltZXN0YW1wLzEwMDAuMCkKLSAgICAgICAgICAgIGRhdGUgPSBjdXJ0aW1lLnN0cmZ0aW1lKGRmKQotICAgICAgICAgICAgYiArPSBjdXJ0aW1lLnN0cmZ0aW1lKHRmKQotICAgICAgICAgICAgaWYgKGRhdGUgIT0gb2xkZGF0ZSk6Ci0gICAgICAgICAgICAgICAgb2xkZGF0ZSA9IGRhdGUKLSAgICAgICAgICAgICAgICBkICs9IGRhdGUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZCArPSAnICcgKiA3Ci0KLSAgICAgICAgYiArPSAnXG4lc1xuJyAlIGQKLSAgICAgICAgYiArPSAnJXMlc1RpbWUnICUgKCcgJyAqIGF4aXN5dywgJyAnICogKHdpZHRoLzItMikpCi0KLSAgICAgICAgcmV0dXJuIGIKZGlmZiAtLWdpdCBhL2NsaS9jbGkvcmVzdF90b19tb2RlbC5weSBiL2NsaS9jbGkvcmVzdF90b19tb2RlbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggN2VmMjVhOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL3Jlc3RfdG9fbW9kZWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NDkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgdXJsbGliCi1pbXBvcnQgZXJyb3IKLWltcG9ydCBqc29uCi1pbXBvcnQgbW9kaQotaW1wb3J0IHV0aWYKLWltcG9ydCB1cmxfY2FjaGUKLQotIwotIyBqc29uIGJhc2VkIG9uIG5vbiBtb2RlbCBiYXNlZCBxdWVyeQotIwotCi1kZWYgcmVzdF90b19tb2RlbF9pbml0KGJzLCBtb2RpKToKLSAgICBnbG9iYWwgc2Ruc2gsIG1pCi0KLSAgICBzZG5zaCA9IGJzCi0gICAgbWkgPSBtb2RpCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdCwgbWVzc2FnZSA9IE5vbmUpOgotICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBjb2xsZWN0aW9ucy5NYXBwaW5nKToKLSAgICAgICAgZXJyb3JfdHlwZSA9IHJlc3VsdC5nZXQoJ2Vycm9yX3R5cGUnKQotICAgICAgICBpZiBlcnJvcl90eXBlOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZFJlc3RFcnJvcihyZXN1bHQsIG1lc3NhZ2UpCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgZ2V0X21vZGVsX2Zyb21fdXJsKG9ial90eXBlLCBkYXRhKToKLSAgICAiIiIKLSAgICBJbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgY29udmVyc2lvbiB0b29sLCB0byBwcm92aWRlIGEgd2F5Ci0gICAgdG8gbW92ZSBtb2RlbCByZXF1ZXN0cyB0byBzcGVjaWZpYyB1cmwgcmVxdWVzdHMKLSAgICAiIiIKLQotICAgIG9ub3MgPSAxCi0gICAgc3RhcnRzd2l0aCA9ICdfX3N0YXJ0c3dpdGgnCi0gICAgZGF0YSA9IGRpY3QoZGF0YSkKLQotICAgIGlmIG1pLm9ial90eXBlX2hhc19tb2RlbChvYmpfdHlwZSk6Ci0gICAgICAgIHByaW50ICJNT0RFTF9VUkw6ICVzIG5vdCBzdXBwb3J0ZWQiICUgb2JqX3R5cGUKLSAgICAgICAgcmV0dXJuIFtdCi0gICAgIwotICAgICMgc2F2ZSBzb3J0IGZpZWxkCi0gICAgc29ydCA9IGRhdGEuZ2V0KCdvcmRlcmJ5JywgTm9uZSkKLSAgICBpZiBzb3J0OgotICAgICAgICBkZWwgZGF0YVsnb3JkZXJieSddCi0KLSAgICBvYmpfdHlwZV91cmwgPSBtaS5vYmpfdHlwZV9oYXNfdXJsKG9ial90eXBlKQotICAgIHVybCA9ICJodHRwOi8vJXMvcmVzdC92MS8iICUgc2Ruc2guY29udHJvbGxlciArIG9ial90eXBlX3VybAotCi0gICAgIyBmb3IgdGhlIGRldmljZXMgcXVlcnksIGJlIHNlbnNpdGl2ZSB0byB0aGUgdHlwZXMgb2YgcXVlcmllcwotICAgICMgc2luY2UgdGhlIGRldmljZXMgcXVlcnkgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAKLSAgICAjIGJldHdlZW4gdGhlIHZsYW49PScnIGZvciBhZGRyZXNzX3NwYWNlID09ICdkZWZhdWx0Jy4KLSAgICBpZiBvYmpfdHlwZV91cmwgPT0gJ2RldmljZSc6Ci0gICAgICAgIGlmICd2bGFuJyBpbiBkYXRhIGFuZCBkYXRhWyd2bGFuJ10gPT0gJyc6Ci0gICAgICAgICAgICBkZWwgZGF0YVsndmxhbiddCi0KLSAgICAjIGRhdGEgaXRlbXMgbmVlZCB0byBiZSBpbmNsdWRlZCBpbnRvIHRoZSBxdWVyeS4KLSAgICBpZiBkYXRhOgotICAgICAgICB1cmwgKz0gJz8nCi0gICAgICAgIHVybCArPSB1cmxsaWIudXJsZW5jb2RlKGRhdGEpCi0gICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgcHJpbnQgImdldF9tb2RlbF9mcm9tX3VybDogcmVxdWVzdCAiLCBvYmpfdHlwZSwgZGF0YSwgdXJsCi0gICAgIwotICAgICMgY2FjaGUgc21hbGwsIHNob3J0IHRpbWUgcmVzdWx0cwotICAgIGVudHJpZXMgPSB1cmxfY2FjaGUuZ2V0X2NhY2hlZF91cmwodXJsKQotICAgIGlmIGVudHJpZXMgIT0gTm9uZToKLSAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgIHByaW50ICdnZXRfbW9kZWxfZnJvbV91cmw6IHVzaW5nIGNhY2hlZCByZXN1bHQgZm9yICcsIHVybAotICAgIGVsc2U6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdCA9IHNkbnNoLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsKQotICAgICAgICAgICAgY2hlY2tfcmVzdF9yZXN1bHQocmVzdWx0KQotICAgICAgICAgICAgZW50cmllcyA9IGpzb24ubG9hZHMocmVzdWx0KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAiZ2V0X21vZGVsX2Zyb21fdXJsOiBmYWlsZWQgcmVxdWVzdCAlczogJyVzJyIgJSAodXJsLCBlKQotICAgICAgICAgICAgZW50cmllcyA9IFtdCi0gICAgICAgIAotICAgICAgICB1cmxfY2FjaGUuc2F2ZV91cmwodXJsLCBlbnRyaWVzKQotCi0gICAga2V5ID0gbWkucGsob2JqX3R5cGUpCi0KLSAgICAjIGNvbnZlcnQgc3BlY2lmaWMgdHlwZXMgWFhYIG5lZWQgYmV0dGVyIGdlbmVyaWMgbWVjaGFuaXNtCi0gICAgcmVzdWx0ID0gW10KLSAgICBpZiBvYmpfdHlwZSA9PSAnaG9zdC1hdHRhY2htZW50LXBvaW50JzoKLSAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgICAgICAjIGl0IGlzIHBvc3NpYmxlIGZvciBtdWx0aXBsZSBtYWMncyB0byBhcHBlYXIgaGVyZSAKLSAgICAgICAgICAgICMgYXMgbG9uZyBhcyBhIHNpbmdsZSBpcCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZS4KLSAgICAgICAgICAgIGlmIGxlbihlbnRyeVsnbWFjJ10pID4gMToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kSW50ZXJuYWxFcnJvcigiaG9zdCAoYXR0YWNobWVudCBwb2ludCk6ID4xIG1hYyIpCi0gICAgICAgICAgICBtYWMgPSBlbnRyeVsnbWFjJ11bMF0KLSAgICAgICAgICAgIGFwcyA9IGVudHJ5WydhdHRhY2htZW50UG9pbnQnXQotICAgICAgICAgICAgbGFzdHNlZW4gPSBlbnRyeVsnbGFzdFNlZW4nXQotICAgICAgICAgICAgZm9yIGFwIGluIGFwczoKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBhcC5nZXQoJ2Vycm9yU3RhdHVzJywgJycpCi0gICAgICAgICAgICAgICAgaWYgc3RhdHVzID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9ICcnCi0gICAgICAgICAgICAgICAgaWYgbGVuKGVudHJ5Wyd2bGFuJ10pID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeydpZCcgICAgICAgICAgIDogbWFjICsgJ3wnICsgYXBbJ3N3aXRjaERQSUQnXSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3wnICsgc3RyKGFwWydwb3J0J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFjJyAgICAgICAgICA6IG1hYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgOiBhcFsnc3dpdGNoRFBJRCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5ncmVzcy1wb3J0JyA6IGFwWydwb3J0J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnICAgICAgIDogc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGFzdC1zZWVuJyAgICA6IGxhc3RzZWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkcmVzcy1zcGFjZSc6IGVudHJ5WydlbnRpdHlDbGFzcyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZvciB2bGFuIGluIGVudHJ5Wyd2bGFuJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsnaWQnICAgICAgICAgICA6IG1hYyArICd8JyArIGFwWydzd2l0Y2hEUElEJ10gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfCcgKyBzdHIoYXBbJ3BvcnQnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFjJyAgICAgICAgICA6IG1hYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bGFuJyAgICAgICAgIDogdmxhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzd2l0Y2gnICAgICAgIDogYXBbJ3N3aXRjaERQSUQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmdyZXNzLXBvcnQnIDogYXBbJ3BvcnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnICAgICAgIDogc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3Qtc2VlbicgICAgOiBsYXN0c2VlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlJzogZW50cnlbJ2VudGl0eUNsYXNzJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgIGVsaWYgb2JqX3R5cGUgPT0gJ2hvc3QtbmV0d29yay1hZGRyZXNzJzoKLQotICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgICAgIGlmIGxlbihlbnRyeVsnbWFjJ10pID4gMToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kSW50ZXJuYWxFcnJvcigiaG9zdCAobmV0d29yay1hZGRyZXNzKTogPjEgbWFjIikKLSAgICAgICAgICAgIG1hYyA9IGVudHJ5WydtYWMnXVswXQotICAgICAgICAgICAgaXBzID0gZW50cnlbJ2lwdjQnXQotICAgICAgICAgICAgbGFzdHNlZW4gPSBlbnRyeVsnbGFzdFNlZW4nXQotICAgICAgICAgICAgZm9yIGlwIGluIGlwczoKLSAgICAgICAgICAgICAgICBpZiBsZW4oZW50cnlbJ3ZsYW4nXSkgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7J2lkJyAgICAgICAgICAgIDogbWFjICsgJ3wnICsgaXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWMnICAgICAgICAgICA6IG1hYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lwLWFkZHJlc3MnICAgIDogaXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlJyA6IGVudHJ5WydlbnRpdHlDbGFzcyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGFzdC1zZWVuJyAgICAgOiBsYXN0c2VlbiB9KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZvciB2bGFuIGluIGVudHJ5Wyd2bGFuJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsnaWQnICAgICAgICAgICAgOiBtYWMgKyAnfCcgKyBpcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWMnICAgICAgICAgICA6IG1hYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bGFuJyAgICAgICAgICA6IHZsYW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXAtYWRkcmVzcycgICAgOiBpcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlJyA6IGVudHJ5WydlbnRpdHlDbGFzcyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3Qtc2VlbicgICAgIDogbGFzdHNlZW4gfSkKLSAgICBlbGlmIG9ial90eXBlID09ICdob3N0JzoKLSAgICAgICAgIyBGb3IgaG9zdCBxdWVyaWVzLCB0aGUgZGV2aWNlIG1hbmFnZXIgcmV0dXJucyAnZGV2aWNlcycgd2hpY2gKLSAgICAgICAgIyBtYXRjaCBzcGVjaWZpYyBjcml0ZXJpYSwgZm9yIGV4YW1wbGUsIGlmIHlvdSBzYXkgaXB2NCA9PSAneHh4JywKLSAgICAgICAgIyB0aGUgZGV2aWNlIHdoaWNoIG1hdGNoZXMgdGhhdCBjcml0ZXJpcyBpcyByZXR1cm5lZC4gIEhvd2V2ZXIsCi0gICAgICAgICMgdGhlcmUgbWF5IGJlIG11bHRpcGxlIGlwIGFkZHJlc3NlcyBhc3NvY2lhdGVkLgotICAgICAgICAjCi0gICAgICAgICMgdGhpcyBtZWFucyB0aGF0IHR3byBkaWZmZXJlbnQgZ3JvdXBzIG9mIHZhbHVlcyBmb3IgdGhlc2UKLSAgICAgICAgIyBlbnRpdGllcyBhcmUgcmV0dXJuZWQuICBmaWVsZHMgbGlrZSAnaXB2NCcgaXMgdGhlIGNvbGxlY3Rpb24KLSAgICAgICAgIyBvZiBtYXRjaGluZyB2YWx1ZXMsIHdoaWxlICdpcHMnIGlzIHRoZSBjb21wbGVlIGxpc3QuCi0gICAgICAgICMgJ3N3aXRjaCcsICdwb3J0JyBhcmUgdGhlIG1hdGNoIHZhbHVlcywgd2hpbGUgJ2F0dGFjaG1lbnQtcG9pbnRzJwotICAgICAgICAjIGlzIHRoZSBjb21wbGV0ZSBsaXN0LgotICAgICAgICAjCi0KLSAgICAgICAgaXBfbWF0Y2ggPSBkYXRhLmdldCgnaXB2NCcpCi0gICAgICAgIGlwX3ByZWZpeCA9IGRhdGEuZ2V0KCdpcHY0X19zdGFydHN3aXRoJykKLQotICAgICAgICBkcGlkX21hdGNoID0gZGF0YS5nZXQoJ2RwaWQnKQotICAgICAgICBkcGlkX3ByZWZpeCA9IGRhdGEuZ2V0KCdkcGlkX19zdGFydHN3aXRoJykKLQotICAgICAgICBwb3J0X21hdGNoID0gZGF0YS5nZXQoJ3BvcnQnKQotICAgICAgICBwb3J0X3ByZWZpeCA9IGRhdGEuZ2V0KCdwb3J0X19zdGFydHN3aXRoJykKLQotICAgICAgICBhZGRyZXNzX3NwYWNlX21hdGNoID0gZGF0YS5nZXQoJ2FkZHJlc3Mtc3BhY2UnKQotICAgICAgICBhZGRyZXNzX3NwYWNlX3ByZWZpeCA9IGRhdGEuZ2V0KCdhZGRyZXNzLXNwYWNlX19zdGFydHN3aXRoJykKLQotICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgICAgIGlmIG9ub3M9PTA6Ci0gICAgICAgICAgICAgICAgaWYgbGVuKGVudHJ5WydtYWMnXSkgPiAxOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kSW50ZXJuYWxFcnJvcigiaG9zdDogPjEgbWFjIikKLSAgICAgICAgICAgICAgICBtYWMgPSBlbnRyeVsnbWFjJ11bMF0KLSAgICAgICAgICAgICAgICBsYXN0c2VlbiA9IGVudHJ5WydsYXN0U2VlbiddCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1hYyA9IGVudHJ5WydtYWMnXQotICAgICAgICAgICAgICAgIGxhc3RzZWVuID0gMAotCi0gICAgICAgICAgICBpcHMgPSBOb25lCi0gICAgICAgICAgICBpZiBub3QgaXBfbWF0Y2ggYW5kIG5vdCBpcF9wcmVmaXg6Ci0gICAgICAgICAgICAgICAgaXB2NCA9IGVudHJ5WydpcHY0J10KLSAgICAgICAgICAgIGVsaWYgaXBfbWF0Y2g6Ci0gICAgICAgICAgICAgICAgaXB2NCA9IFt4IGZvciB4IGluIGVudHJ5WydpcHY0J10gaWYgeCA9PSBpcF9tYXRjaF0KLSAgICAgICAgICAgIGVsaWYgaXBfcHJlZml4OgotICAgICAgICAgICAgICAgIGlwdjQgPSBbeCBmb3IgeCBpbiBlbnRyeVsnaXB2NCddIGlmIHguc3RhcnRzd2l0aChpcF9wcmVmaXgpXQotCi0gICAgICAgICAgICBpZiBsZW4oZW50cnlbJ2lwdjQnXSk6Ci0gICAgICAgICAgICAgICAgaXBzID0gW3snaXAtYWRkcmVzcycgOiBlbnRyeVsnaXB2NCddLCAnbGFzdC1zZWVuJyA6IGxhc3RzZWVufV0KLSAgICAgICAgICAgICAgICAgICAgCSAgICAjZm9yIHggaW4gZW50cnlbJ2lwdjQnXSBdCi0gICAgICAgICAgICBhcHMgPSBOb25lCi0gICAgICAgICAgICBzd2l0Y2ggPSBbXQotICAgICAgICAgICAgcG9ydCA9IFtdCi0KLSAgICAgICAgICAgICNkcGlkX21hdGNoID0gZW50cnkuZ2V0KCdkcGlkJykKLSAgICAgICAgICAgIGlmIG9ub3MgPT0gMDoKLSAgICAgICAgICAgICAgICBhdHRhY2hQb2ludCA9ICdhdHRhY2htZW50UG9pbnQnCi0gICAgICAgICAgICAgICAgYXR0YWNoRHBpZCA9ICdzd2l0Y2hEUElEJwotICAgICAgICAgICAgICAgIGF0dGFjaFBvcnQgPSAncG9ydCcKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXR0YWNoUG9pbnQgPSAnYXR0YWNobWVudFBvaW50cycKLSAgICAgICAgICAgICAgICBhdHRhY2hEcGlkID0gJ2RwaWQnCi0gICAgICAgICAgICAgICAgYXR0YWNoUG9ydCA9ICdwb3J0TnVtYmVyJwotCi0gICAgICAgICAgICBpZiBsZW4oZW50cnlbYXR0YWNoUG9pbnRdKToKLSAgICAgICAgICAgICAgICBhcHMgPSBbeydzd2l0Y2gnIDogeFthdHRhY2hEcGlkXSwgJ2luZ3Jlc3MtcG9ydCcgOiB4W2F0dGFjaFBvcnRdIH0KLSAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZW50cnlbYXR0YWNoUG9pbnRdXQotCi0gICAgICAgICAgICAgICAgaWYgbm90IGRwaWRfbWF0Y2ggYW5kIG5vdCBkcGlkX3ByZWZpeDoKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoID0gW3hbYXR0YWNoRHBpZF0gZm9yIHggaW4gZW50cnlbYXR0YWNoUG9pbnRdXQotICAgICAgICAgICAgICAgIGVsaWYgZHBpZF9tYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoID0gW3hbYXR0YWNoRHBpZF0gZm9yIHggaW4gZW50cnlbYXR0YWNoUG9pbnRdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4W2F0dGFjaERwaWRdID09IGRwaWRfbWF0Y2hdCi0gICAgICAgICAgICAgICAgZWxpZiBkcGlkX3ByZWZpeDoKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoID0gW3hbYXR0YWNoRHBpZF0gZm9yIHggaW4gZW50cnlbYXR0YWNoUG9pbnRdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4W2F0dGFjaERwaWRdLnN0YXJ0c3dpdGgoZHBpZF9wcmVmaXgpXQotCi0gICAgICAgICAgICAgICAgaWYgbm90IHBvcnRfbWF0Y2ggYW5kIG5vdCBwb3J0X3ByZWZpeDoKLSAgICAgICAgICAgICAgICAgICAgcG9ydCA9IFt4W2F0dGFjaFBvcnRdIGZvciB4IGluIGVudHJ5W2F0dGFjaFBvaW50XV0KLSAgICAgICAgICAgICAgICBlbGlmIHBvcnRfbWF0Y2g6Ci0gICAgICAgICAgICAgICAgICAgIHBvcnQgPSBbeFthdHRhY2hQb3J0XSBmb3IgeCBpbiBlbnRyeVthdHRhY2hQb2ludF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4W2F0dGFjaFBvcnRdID09IHBvcnRfbWF0Y2hdCi0gICAgICAgICAgICAgICAgZWxpZiBwb3J0X3ByZWZpeDoKLSAgICAgICAgICAgICAgICAgICAgcG9ydCA9IFt4W2F0dGFjaFBvcnRdIGZvciB4IGluIGVudHJ5W2F0dGFjaFBvaW50XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHhbYXR0YWNoUG9ydF0uc3RhcnRzd2l0aChwb3J0X3ByZWZpeCldCi0KLSAgICAgICAgICAgIGlmIG9ub3MgPT0gMDoKLSAgICAgICAgICAgICAgICBhZGRyZXNzX3NwYWNlID0gZW50cnlbJ2VudGl0eUNsYXNzJ10KLSAgICAgICAgICAgICAgICBkaGNwX2NsaWVudF9uYW1lID0gZW50cnkuZ2V0KCdkaGNwQ2xpZW50TmFtZScsICcnKQotICAgICAgICAgICAgICAgIGlmIGFkZHJlc3Nfc3BhY2VfbWF0Y2ggYW5kIGFkZHJlc3Nfc3BhY2UgIT0gYWRkcmVzc19zcGFjZV9tYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBhZGRyZXNzX3NwYWNlX3ByZWZpeCBhbmQgbm90IGFkZHJlc3Nfc3BhY2Uuc3RhcnRzd2l0aChhZGRyZXNzX3NwYWNlX3ByZWZpeCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGlmIG9ub3MgPT0gMToKLSAgICAgICAgICAgICAgICBpZCA9ICclcycgJSAobWFjKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeydpZCcgICAgICAgICAgICAgICAgOiBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWMnICAgICAgICAgICAgICAgOiBtYWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnaXBzJyAgICAgICAgICAgICAgIDogaXBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lwdjQnICAgICAgICAgICAgICA6IGlwdjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnYXR0YWNobWVudC1wb2ludHMnIDogYXBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RwaWQnICAgICAgICAgICAgICA6IHN3aXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3J0JyAgICAgICAgICAgICAgOiBwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3Qtc2VlbicgICAgICAgICA6IDB9KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBsZW4oZW50cnlbJ3ZsYW4nXSkgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgaWQgPSAnJXN8fCVzJyAlIChhZGRyZXNzX3NwYWNlLCBtYWMpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeydpZCcgICAgICAgICAgICAgICAgOiBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFjJyAgICAgICAgICAgICAgIDogbWFjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcHMnICAgICAgICAgICAgICAgOiBpcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lwdjQnICAgICAgICAgICAgICA6IGlwdjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0dGFjaG1lbnQtcG9pbnRzJyA6IGFwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHBpZCcgICAgICAgICAgICAgIDogc3dpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3J0JyAgICAgICAgICAgICAgOiBwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlJyAgICAgOiBhZGRyZXNzX3NwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaGNwLWNsaWVudC1uYW1lJyAgOiBkaGNwX2NsaWVudF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsYXN0LXNlZW4nICAgICAgICAgOiBsYXN0c2Vlbn0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZm9yIHZsYW4gaW4gZW50cnlbJ3ZsYW4nXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFkZHJlc3Nfc3BhY2UgIT0gJ2RlZmF1bHQnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gJyVzfHwlcycgJSAoYWRkcmVzc19zcGFjZSwgbWFjKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9ICclc3wlc3wlcycgJSAoYWRkcmVzc19zcGFjZSwgdmxhbiwgbWFjKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsnaWQnICAgICAgICAgICAgICAgIDogaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWMnICAgICAgICAgICAgICAgOiBtYWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bGFuJyAgICAgICAgICAgICAgOiB2bGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXBzJyAgICAgICAgICAgICAgIDogaXBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXB2NCcgICAgICAgICAgICAgIDogaXB2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0dGFjaG1lbnQtcG9pbnRzJyA6IGFwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RwaWQnICAgICAgICAgICAgICA6IHN3aXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcnQnICAgICAgICAgICAgICA6IHBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRyZXNzLXNwYWNlJyAgICAgOiBhZGRyZXNzX3NwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGhjcC1jbGllbnQtbmFtZScgIDogZGhjcF9jbGllbnRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3Qtc2VlbicgICAgICAgICA6IGxhc3RzZWVufSkKLQotICAgICAgICAjIEFsc28gbmVlZCB0byBhZGQgaG9zdENvbmZpZyBlbnRyaWVzLgotICAgICAgICBpZiBub3QgbWkub2JqX3R5cGVfaGFzX21vZGVsKCdob3N0LWNvbmZpZycpOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IuQ29tbWFuZEludGVybmFsRXJyb3IoImhvc3QtY29uZmlnOiBub3Qgc2VydmVkIHZpYSBtb2RlbCIpCi0gICAgICAgIGhvc3RfY29uZmlnID0gc2Ruc2gucmVzdF9xdWVyeV9vYmplY3RzKCdob3N0LWNvbmZpZycsIGRhdGEpCi0gICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICBwcmludCAiZ2V0X21vZGVsX2Zyb21fdXJsOiBhZGRpbmcgaG9zdC1jb25maWcgIiwgZGF0YSwgaG9zdF9jb25maWcKLSAgICAgICAga25vd25faWRzID0gW3hbJ2lkJ10gZm9yIHggaW4gcmVzdWx0XQotCi0gICAgICAgIGZvciBoYyBpbiBob3N0X2NvbmZpZzoKLSAgICAgICAgICAgIGlkID0gaGNbJ2lkJ10KLSAgICAgICAgICAgIGlmIGlkIG5vdCBpbiBrbm93bl9pZHM6Ci0gICAgICAgICAgICAgICAgIyBiZSBzZW5zaXRpdmUgdG8gc2VhcmNoIGZpZWxkczoKLSAgICAgICAgICAgICAgICBxdWVyeV9tYXRjaCA9IFRydWUKLSAgICAgICAgICAgICAgICBpZiBsZW4oZGF0YSk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoZCwgZHYpIGluIGRhdGEuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXIgb3BzIGFzaWRlIGZyb20gJz0nPwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZC5lbmRzd2l0aChzdGFydHN3aXRoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiA9IGRbOi1sZW4oc3RhcnRzd2l0aCldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZuIGluIGhjIG9yIG5vdCBoY1tmbl0uc3RhcnRzd2l0aChkdik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X21hdGNoID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgKG5vdCBkIGluIGhjKSBvciBkdiAhPSBoY1tkXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeV9tYXRjaCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiBxdWVyeV9tYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgaGNbJ2F0dGFjaG1lbnQtcG9pbnRzJ10gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGhjWydkcGlkJ10gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGhjWydpcHMnXSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgaGNbJ2xhc3Qtc2VlbiddID0gTm9uZQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGhjKQotCi0gICAgZWxpZiBvYmpfdHlwZSA9PSAndm5zLWludGVyZmFjZSc6Ci0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgdm5zID0gZW50cnlbJ3BhcmVudFZOUyddWyduYW1lJ10KLSAgICAgICAgICAgIHJ1bGUgPSBlbnRyeVsncGFyZW50UnVsZSddCi0gICAgICAgICAgICBydWxlX25hbWUgPSAnZGVmYXVsdCcKLSAgICAgICAgICAgIGlmIHJ1bGUgYW5kICduYW1lJyBpbiBydWxlOgotICAgICAgICAgICAgICAgIHJ1bGVfbmFtZSA9IHJ1bGVbJ25hbWUnXQotCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsga2V5ICAgICAgICAgICAgOiB2bnMgKyAnfCcgKyBlbnRyeVsnbmFtZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZucycgICAgICAgICAgIDogdm5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3Mtc3BhY2UnIDogZW50cnlbJ3BhcmVudFZOUyddWydhZGRyZXNzU3BhY2VOYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJmYWNlJyAgICAgOiBlbnRyeVsnbmFtZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bGUnICAgICAgICAgIDogcnVsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3Qtc2VlbicgICAgIDogZW50cnlbJ2xhc3RTZWVuJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0pCi0KLSAgICAgICAgIyBhbHNvIG5lZWQgdG8gYWRkIHZucy1pbnRlcmZhY2UtY29uZmlnCi0gICAgICAgIGlmIG5vdCBtaS5vYmpfdHlwZV9oYXNfbW9kZWwoJ3Zucy1pbnRlcmZhY2UtY29uZmlnJyk6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kSW50ZXJuYWxFcnJvcigidm5zLWludGVyZmFjZS1jb25maWc6IG5vdCBzZXJ2aWNlIHZpYSBtb2RlbCIpCi0gICAgICAgIHZuc19pbnRmX2NvbmZpZyA9IHNkbnNoLnJlc3RfcXVlcnlfb2JqZWN0cygndm5zLWludGVyZmFjZS1jb25maWcnLCBkYXRhKQotICAgICAgICBrbm93bl92bnNfaW50ZnMgPSBbeFtrZXldIGZvciB4IGluIHJlc3VsdF0KLSAgICAgICAgZm9yIHZuc19pbnRmIGluIHZuc19pbnRmX2NvbmZpZzoKLSAgICAgICAgICAgIGlmIG5vdCB2bnNfaW50ZltrZXldIGluIGtub3duX3Zuc19pbnRmczoKLSAgICAgICAgICAgICAgICB2bnNfaW50ZlsncnVsZSddID0gJ2RlZmF1bHQnCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh2bnNfaW50ZikKLQotICAgIGVsaWYgb2JqX3R5cGUgPT0gJ2hvc3Qtdm5zLWludGVyZmFjZSc6Ci0KLSAgICAgICAgIyBtYWMgbWF0Y2hpbmcgd29ya3MgZm9yIHRoZSByZXF1ZXN0Ci0KLSAgICAgICAgdm5zX21hdGNoID0gZGF0YS5nZXQoJ3ZucycpCi0gICAgICAgIHZuc19wcmVmaXggPSBkYXRhLmdldCgndm5zX19zdGFydHN3aXRoJykKLQotICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgICAgIGRldmljZSA9IGVudHJ5WydkZXZpY2UnXQotICAgICAgICAgICAgaWYgbGVuKGRldmljZVsnbWFjJ10pID4gMToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5Db21tYW5kSW50ZXJuYWxFcnJvcigiaG9zdCAodm5zLWludGVyZmFjZSk6ID4xIG1hYyIpCi0KLSAgICAgICAgICAgIGRldmljZV9sYXN0X3NlZW4gPSBkZXZpY2VbJ2xhc3RTZWVuJ10KLSAgICAgICAgICAgIGFkZHJlc3Nfc3BhY2UgPSBkZXZpY2VbJ2VudGl0eUNsYXNzJ10KLSAgICAgICAgICAgIG1hYyA9IGRldmljZVsnbWFjJ11bMF0gICAgICAgICAgIyBjdXJyZW50bHksIHNob3VsZCBvbmx5IGJlIG9uZQotCi0gICAgICAgICAgICBpcHMgPSBOb25lCi0gICAgICAgICAgICBpZiBsZW4oZGV2aWNlWydpcHY0J10pOgotICAgICAgICAgICAgICAgIGlwcyA9IFt7J2lwLWFkZHJlc3MnIDogeCwgJ2xhc3Qtc2VlbicgOiBkZXZpY2VfbGFzdF9zZWVufQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZGV2aWNlWydpcHY0J10gXQotCi0gICAgICAgICAgICB2bGFucyA9IGRldmljZS5nZXQoJ3ZsYW4nLCBbXSkgICAjIGN1cnJlbnRseSwgc2hvdWxkIG9ubHkgYmUgb25lCi0gICAgICAgICAgICBpZiBsZW4odmxhbnMpID09IDA6ICAgICAgICAgICAgICAjIGl0ZXJhdGUgb25jZSB3aGVuIGxpc3QgaXMgZW1wdHkKLSAgICAgICAgICAgICAgICB2bGFucyA9IFsgJycgXQotCi0gICAgICAgICAgICBhcHMgPSBOb25lCi0gICAgICAgICAgICBpZiBsZW4oZGV2aWNlWydhdHRhY2htZW50UG9pbnQnXSk6Ci0gICAgICAgICAgICAgICAgYXBzID0gW3snc3dpdGNoJyA6IHhbJ3N3aXRjaERQSUQnXSwgJ2luZ3Jlc3MtcG9ydCcgOiB4Wydwb3J0J10gfQotICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBkZXZpY2VbJ2F0dGFjaG1lbnRQb2ludCddXQotCi0gICAgICAgICAgICBmb3IgaWZhY2UgaW4gZW50cnkuZ2V0KCdpZmFjZScsIFtdKToKLSAgICAgICAgICAgICAgICB2bnMgPSBpZmFjZVsncGFyZW50Vk5TJ11bJ25hbWUnXQotICAgICAgICAgICAgICAgIGxhc3Rfc2VlbiA9IGlmYWNlWydsYXN0U2VlbiddCi0gICAgICAgICAgICAgICAgaWYgdm5zX21hdGNoIGFuZCB2bnNfbWF0Y2ggIT0gdm5zOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIHZuc19wcmVmaXggYW5kIG5vdCB2bnMuc3RhcnRzd2l0aCh2bnNfcHJlZml4KToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIGZvciB2bGFuIGluIHZsYW5zOiAjIHRoZXJlJ3Mgc3VwcG9zZWQgdG8gb25seSBiZSBhdCBtb3N0IG9uZSB2bGFuLgotICAgICAgICAgICAgICAgICAgICBpZiBhZGRyZXNzX3NwYWNlICE9ICdkZWZhdWx0JyBvciB0eXBlKHZsYW4pICE9IGludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgPSAnJXN8fCVzJyAlIChhZGRyZXNzX3NwYWNlLCBtYWMpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBob3N0ID0gJyVzfCVzfCVzJyAlIChhZGRyZXNzX3NwYWNlLCB2bGFuLCBtYWMpCi0KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7a2V5ICAgICAgICAgICAgIDogbWFjICsgJ3wnICsgdm5zICsgJ3wnICsgaWZhY2VbJ25hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hvc3QnICAgICAgICAgIDogaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hYycgICAgICAgICAgIDogbWFjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmxhbicgICAgICAgICAgOiB2bGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkcmVzcy1zcGFjZScgOiBhZGRyZXNzX3NwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXBzJyAgICAgICAgICAgOiBpcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdHRhY2htZW50LXBvaW50cycgOiBhcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bnMnICAgICAgICAgICAgICAgOiB2bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcmZhY2UnICAgICAgICAgOiB2bnMgKyAnfCcgKyBpZmFjZVsnbmFtZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGFzdC1zZWVuJyAgICAgICAgIDogZGV2aWNlX2xhc3Rfc2Vlbn0pCi0gICAgZWxpZiBvYmpfdHlwZSA9PSAnc3dpdGNoZXMnOgotICAgICAgICBzd2l0Y2hfbWF0Y2ggPSBkYXRhLmdldCgnZHBpZCcpCi0gICAgICAgIHN3aXRjaF9wcmVmaXggPSBkYXRhLmdldCgnZHBpZF9fc3RhcnRzd2l0aCcpCi0KLSAgICAgICAgIyB0aGlzIHN5bnRoZXRpYyBvYmpfdHlwZSdzIG5hbWUgaXMgJ3N3aXRjaGVzJyBpbiBhbiBhdHRlbXB0Ci0gICAgICAgICMgdG8gZGlzYWJpZ3V0YXRlIGl0IGZyb20gJ2NsYXNzIFN3aXRjaCcKLSAgICAgICAgI1RPRE86IE5lZWQgZmlndXJlIG91dCBhIGJldHRlciB3YXkgdG8gZ2V0IHVybCAoVGhyb3VnaCBzZG5jb24gZnJhbWV3b3JrKQotICAgICAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvbWFzdGVyc2hpcCIgJSBzZG5zaC5jb250cm9sbGVyCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdDIgPSBzZG5zaC5zdG9yZS5yZXN0X3NpbXBsZV9yZXF1ZXN0KHVybCkKLSAgICAgICAgICAgIGNoZWNrX3Jlc3RfcmVzdWx0KHJlc3VsdDIpCi0gICAgICAgICAgICBtYXN0ZXJzaGlwX2RhdGEgPSBqc29uLmxvYWRzKHJlc3VsdDIpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgIHByaW50ICJnZXRfbW9kZWxfZnJvbV91cmw6IGZhaWxlZCByZXF1ZXN0ICVzOiAnJXMnIiAlICh1cmwsIGUpCi0gICAgICAgICAgICBlbnRyaWVzID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgICAgICBkcGlkID0gZW50cnkuZ2V0KCdkcGlkJykKLSAgICAgICAgICAgIGlmKGRwaWQgaW4gbWFzdGVyc2hpcF9kYXRhLmtleXMoKSk6Ci0gICAgICAgICAgICAgICAgI0FzIHRoZXJlIGlzIG9ubHkgb25lIG1hc3RlciBmb3Igc3dpdGNoCi0gICAgICAgICAgICAgICAgY29udHJvbGxlciA9IG1hc3RlcnNoaXBfZGF0YVtkcGlkXVswXS5nZXQoJ2NvbnRyb2xsZXJJZCcpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBOb25lCi0gICAgICAgICAgICBpZiBzd2l0Y2hfbWF0Y2ggYW5kIHN3aXRjaF9tYXRjaCAhPSBlbnRyeVsnZHBpZCddOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBzd2l0Y2hfcHJlZml4IGFuZCBub3QgZW50cnlbJ2RwaWQnXS5zdGFydHN3aXRoKHN3aXRjaF9wcmVmaXgpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBvbm9zID09IDE6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgJ2RwaWQnICAgICAgICAgICAgICAgIDogZW50cnlbJ2RwaWQnXSwKLSAgICAgICAgICAgICAgICAgICAnc3dpdGNoLWFsaWFzJyAgICAgICAgOiBlbnRyeVsnc3RyaW5nQXR0cmlidXRlcyddWyduYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgJ2Nvbm5lY3RlZC1zaW5jZScgICAgIDogZW50cnlbJ3N0cmluZ0F0dHJpYnV0ZXMnXVsnQ29ubmVjdGVkU2luY2UnXSwKLSAgICAgICAgICAgICAgICAgICAnaXAtYWRkcmVzcycgICAgICAgICAgOiBlbnRyeVsnc3RyaW5nQXR0cmlidXRlcyddWydyZW1vdGVBZGRyZXNzJ10sCi0gICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgICAgICAgIDogZW50cnlbJ3N0cmluZ0F0dHJpYnV0ZXMnXVsndHlwZSddLAotICAgICAgICAgICAgICAgICAgICdjb250cm9sbGVyJyAgICAgICAgICA6IGNvbnRyb2xsZXIKLSAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhdHRycyA9IGVudHJ5WydhdHRyaWJ1dGVzJ10KLSAgICAgICAgICAgICAgICBhY3Rpb25zID0gZW50cnlbJ2FjdGlvbnMnXQotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyA9IGVudHJ5WydjYXBhYmlsaXRpZXMnXQotICAgICAgICAgICAgICAgIGluZXRfYWRkcmVzcyA9IGVudHJ5LmdldCgnaW5ldEFkZHJlc3MnKQotICAgICAgICAgICAgICAgIGlwX2FkZHJlc3MgPSAnJwotICAgICAgICAgICAgICAgIHRjcF9wb3J0ID0gJycKLSAgICAgICAgICAgICAgICBpZiBpbmV0X2FkZHJlc3M6Ci0gICAgICAgICAgICAgICAgICAgICMgQ3VycmVudCBKYXZhIHZhbHVlIGxvb2tzIGxpa2U6IC8xOTIuMTY4LjIuMTA0OjM4NDIwCi0gICAgICAgICAgICAgICAgICAgIGluZXRfcGFydHMgPSBpbmV0X2FkZHJlc3Muc3BsaXQoJzonKQotICAgICAgICAgICAgICAgICAgICBpcF9hZGRyZXNzID0gaW5ldF9wYXJ0c1swXVsxOl0KLSAgICAgICAgICAgICAgICAgICAgdGNwX3BvcnQgPSBpbmV0X3BhcnRzWzFdCi0gICAgCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgJ2RwaWQnICAgICAgICAgICAgICAgIDogZW50cnlbJ2RwaWQnXSwKLSAgICAgICAgICAgICAgICAgICAnY29ubmVjdGVkLXNpbmNlJyAgICAgOiBlbnRyeVsnY29ubmVjdGVkU2luY2UnXSwKLSAgICAgICAgICAgICAgICAgICAnaXAtYWRkcmVzcycgICAgICAgICAgOiBpcF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICd0Y3AtcG9ydCcgICAgICAgICAgICA6IHRjcF9wb3J0LAotICAgICAgICAgICAgICAgICAgICdhY3Rpb25zJyAgICAgICAgICAgICA6IGFjdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgJ2NhcGFiaWxpdGllcycgICAgICAgIDogY2FwYWJpbGl0aWVzLAotICAgICAgICAgICAgICAgICAgICdkcC1kZXNjJyAgICAgICAgICAgICA6IGF0dHJzLmdldCgnRGVzY3JpcHRpb25EYXRhJywgJycpLAotICAgICAgICAgICAgICAgICAgICdmYXN0LXdpbGRjYXJkcycgICAgICA6IGF0dHJzLmdldCgnRmFzdFdpbGRjYXJkcycsICcnKSwKLSAgICAgICAgICAgICAgICAgICAnc3VwcG9ydHMtbngtcm9sZScgICAgOiBhdHRycy5nZXQoJ3N1cHBvcnRzTnhSb2xlJywgJycpLAotICAgICAgICAgICAgICAgICAgICdzdXBwb3J0cy1vZnBwLWZsb29kJyA6IGF0dHJzLmdldCgnc3VwcG9ydHNPZnBwRmxvb2QnLCAnJyksCi0gICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRzLW9mcHAtdGFibGUnIDogYXR0cnMuZ2V0KCdzdXBwb3J0c09mcHBUYWJsZScsICcnKSwKLSAgICAgICAgICAgICAgICAgICAnY29yZS1zd2l0Y2gnICAgICAgICAgOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9KQotICAgICAgICAjIG5vdyBhZGQgc3dpdGNoLWNvbmZpZwotCi0gICAgICAgIHN3aXRjaF9jb25maWcgPSBzZG5zaC5yZXN0X3F1ZXJ5X29iamVjdHMoJ3N3aXRjaC1jb25maWcnLCBkYXRhKQotICAgICAgICBrbm93bl9kcGlkcyA9IGRpY3QoW1t4WydkcGlkJ10sIHhdIGZvciB4IGluIHJlc3VsdF0pCi0KLSAgICAgICAgaWYgb25vcyA9PSAwOgotICAgICAgICAgICAgZm9yIHN3IGluIHN3aXRjaF9jb25maWc6Ci0gICAgICAgICAgICAgICAgZHBpZCA9IHN3WydkcGlkJ10KLSAgICAgICAgICAgICAgICBpZiBub3QgZHBpZCBpbiBrbm93bl9kcGlkczoKLSAgICAgICAgICAgICAgICAgICAgIyBiZSBzZW5zaXRpdmUgdG8gc2VhcmNoIGZpZWxkczoKLSAgICAgICAgICAgICAgICAgICAgcXVlcnlfbWF0Y2ggPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihkYXRhKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZCwgZHYpIGluIGRhdGEuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG90aGVyIG9wcyBhc2lkZSBmcm9tICc9Jz8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkLmVuZHN3aXRoKHN0YXJ0c3dpdGgpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiA9IGRbOi1sZW4oc3RhcnRzd2l0aCldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBmbiBpbiBzdyBvciBub3Qgc3dbZm5dLnN0YXJ0c3dpdGgoZHYpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfbWF0Y2ggPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgKG5vdCBkIGluIHN3KSBvciBkdiAhPSBzd1tkXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfbWF0Y2ggPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgIAotICAgICAgICAgICAgICAgICAgICBpZiBxdWVyeV9tYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHN3WydpcC1hZGRyZXNzJ10gPSAnJwotICAgICAgICAgICAgICAgICAgICAgICAgc3dbJ3RjcC1wb3J0J10gPSAnJwotICAgICAgICAgICAgICAgICAgICAgICAgc3dbJ2Nvbm5lY3RlZC1zaW5jZSddID0gJycKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3cpCi0gICAgICAgICAgICAgICAgW2RwaWRdLnVwZGF0ZShzdykKLSAgICBlbGlmIG9ial90eXBlID09ICdpbnRlcmZhY2VzJzoKLQotICAgICAgICAjIFRoZXNlIGFyZSBjYWxsZWQgaW50ZXJmYWNlcyBiZWNhdXNlIHRoZSBwcmltYXJ5Ci0gICAgICAgICMga2V5IGlzIGNvbnN0cnVjdGVkIHdpdGggdGhlIGludGVyZmFjZSBuYW1lLCBub3QKLSAgICAgICAgIyB0aGUgcG9ydCBudW1iZXIuCi0KLSAgICAgICAgIyB0aGUgJ3N3aXRjaGVzJyBxdWVyeSB0byBzZG5wbGF0Zm9ybSBjdXJyZW50bHkKLSAgICAgICAgIyBkb2Vzbid0IHN1cHBvcnQgc2VhcmNoaW5nIGZvciB0aGUgaW50ZXJmYWNlCi0gICAgICAgICMgbmFtZXMuICBpdHMgZG9uZSBoZXJlIGluc3RlYWQKLQotICAgICAgICBzd2l0Y2hfbWF0Y2ggPSBkYXRhLmdldCgnZHBpZCcpCi0gICAgICAgIHN3aXRjaF9wcmVmaXggPSBkYXRhLmdldCgnZHBpZF9fc3RhcnRzd2l0aCcpCi0KLSAgICAgICAgbmFtZV9tYXRjaCA9IGRhdGEuZ2V0KCdwb3J0TmFtZScpCi0gICAgICAgIGlmIG5hbWVfbWF0Y2g6Ci0gICAgICAgICAgICBuYW1lX21hdGNoID0gbmFtZV9tYXRjaC5sb3dlcigpCi0gICAgICAgIG5hbWVfcHJlZml4ID0gZGF0YS5nZXQoJ3BvcnROYW1lX19zdGFydHN3aXRoJykKLSAgICAgICAgaWYgbmFtZV9wcmVmaXg6Ci0gICAgICAgICAgICBuYW1lX3ByZWZpeCA9IG5hbWVfcHJlZml4Lmxvd2VyKCkKLQotICAgICAgICAjIHRoaXMgc3ludGhldGljIG9ial90eXBlJ3MgbmFtZSBpcyAnc3dpdGNoZXMnIGluIGFuIGF0dGVtcHQKLSAgICAgICAgIyB0byBkaXNhYmlndXRhdGUgaXQgZnJvbSAnY2xhc3MgU3dpdGNoJwotICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgICAgIGRwaWQgPSBlbnRyeVsnZHBpZCddCi0KLSAgICAgICAgICAgIGlmIHN3aXRjaF9tYXRjaCBhbmQgc3dpdGNoX21hdGNoICE9IGRwaWQ6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHN3aXRjaF9wcmVmaXggYW5kIG5vdCBkcGlkLnN0YXJ0c3dpdGgoc3dpdGNoX3ByZWZpeCk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgZm9yIHAgaW4gZW50cnlbJ3BvcnRzJ106Ci0gICAgICAgICAgICAgICAgcG9ydE51bWJlciA9IHBbJ3BvcnROdW1iZXInXQotICAgICAgICAgICAgICAgIGlmIG9ub3MgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHBbJ25hbWUnXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwWydzdHJpbmdBdHRyaWJ1dGVzJ11bJ25hbWUnXQotCi0gICAgICAgICAgICAgICAgaWYgbmFtZV9tYXRjaCBhbmQgbmFtZS5sb3dlcigpICE9IG5hbWVfbWF0Y2g6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgbmFtZV9wcmVmaXggYW5kIG5vdCBuYW1lLmxvd2VyKCkuc3RhcnRzd2l0aChuYW1lX3ByZWZpeCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgb25vcyA9PSAwOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgICAgICAgICAgICAgICAgIDogJyVzfCVzJyAlIChkcGlkLG5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcnROdW1iZXInICAgICAgICAgOiBwb3J0TnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcgICAgICAgICAgICAgOiBkcGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcnROYW1lJyAgICAgICAgICAgOiBwWyduYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnJyAgICAgICAgICAgICA6IHBbJ2NvbmZpZyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRlJyAgICAgICAgICAgICAgOiBwWydzdGF0ZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkdmVydGlzZWRGZWF0dXJlcycgOiBwWydhZHZlcnRpc2VkRmVhdHVyZXMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW50RmVhdHVyZXMnICAgIDogcFsnY3VycmVudEZlYXR1cmVzJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFyZHdhcmVBZGRyZXNzJyAgICA6IHBbJ2hhcmR3YXJlQWRkcmVzcyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgICAgICA6ICclc3wlcycgJSAoZHBpZCxuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3J0TnVtYmVyJyAgICAgICAgIDogcG9ydE51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzd2l0Y2gnICAgICAgICAgICAgIDogZHBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3J0TmFtZScgICAgICAgICAgIDogbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcnICAgICAgICAgICAgIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0ZScgICAgICAgICAgICAgIDogcFsnc3RhdGUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZHZlcnRpc2VkRmVhdHVyZXMnIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW50RmVhdHVyZXMnICAgIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXJkd2FyZUFkZHJlc3MnICAgIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgIAotCi0gICAgIwotICAgICMgb3JkZXIgdGhlIHJlc3VsdAotICAgIGlmIHNvcnQ6Ci0gICAgICAgIGlmIHNvcnRbMF0gPT0gJy0nOgotICAgICAgICAgICAgc29ydCA9IHNvcnRbMTpdCi0gICAgICAgICAgICAjIGRlY3JlYXNpbmcKLSAgICAgICAgICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgcHJpbnQgImdldF9tb2RlbF9mcm9tX3VybDogb3JkZXIgZGVjcmVhc2luZyAiLCBzb3J0Ci0gICAgICAgICAgICByZXN1bHQgPSBzb3J0ZWQocmVzdWx0LCBrZXk9bGFtYmRhIGs6ay5nZXQoc29ydCwgJycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wPWxhbWJkYSB4LHkgOiBjbXAoeSx4KSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgaW5jcmVhc2luZwotICAgICAgICAgICAgaWYgc2Ruc2guZGVzY3JpcHRpb246ICAgIyBkZXNjcmlwdGlvbiBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBwcmludCAiZ2V0X21vZGVsX2Zyb21fdXJsOiBvcmRlciBpbmNyZWFzaW5nICIsIHNvcnQKLSAgICAgICAgICAgIHJlc3VsdCA9IHNvcnRlZChyZXN1bHQsIGtleT1sYW1iZGEgazprLmdldChzb3J0LCAnJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXA9bGFtYmRhIHgseSA6IGNtcCh4LHkpKQotICAgIGVsc2U6Ci0gICAgICAgICMgdXNlIHRhaWwtaW50ZWdlciBvbiB0aGUgZW50cmllcwotICAgICAgICBpZiBzZG5zaC5kZXNjcmlwdGlvbjogICAjIGRlc2NyaXB0aW9uIGRlYnVnZ2luZwotICAgICAgICAgICAgcHJpbnQgImdldF9tb2RlbF9mcm9tX3VybDogcGsgb3JkZXJpbmcgIiwga2V5Ci0gICAgICAgIGRlZiBzb3J0X2NtcCh4LHkpOgotICAgICAgICAgICAgZm9yIChpZHgsIHhfdikgaW4gZW51bWVyYXRlKHgpOgotICAgICAgICAgICAgICAgIGMgPSBjbXAodXRpZi50cnlfaW50KHhfdiksIHV0aWYudHJ5X2ludCh5W2lkeF0pKQotICAgICAgICAgICAgICAgIGlmIGMgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIHJlc3VsdCA9IHNvcnRlZChyZXN1bHQsIGtleT1sYW1iZGEgazprLmdldChrZXksICcnKS5zcGxpdCgnfCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXA9bGFtYmRhIHgseSA6IGNtcCh1dGlmLnRyeV9pbnQoeCksdXRpZi50cnlfaW50KHkpKSkKLQotICAgIGlmIHNkbnNoLmRlc2NyaXB0aW9uOiAgICMgZGVzY3JpcHRpb24gZGVidWdnaW5nCi0gICAgICAgIHByaW50ICJnZXRfbW9kZWxfZnJvbV91cmw6IHJlc3VsdCAiLCBvYmpfdHlwZSwgdXJsLCBsZW4ocmVzdWx0KQotCi0gICAgcmV0dXJuIHJlc3VsdAotCi0KLWRlZiB2YWxpZGF0ZV9zd2l0Y2goKToKLSAgICAiIiIKLSAgICBJZiAvcmVzdC92MS9zd2l0Y2hlcyBpcyBjYWNoZWQsIHBlcmZvcm0gc29tZSB2YWxpZGF0aW9ucyBvbiBpdC4KLQotICAgIC0tIHZlcmlmeSB0aGF0IHRoZSBhbm5vdW5jZWQgaW50ZXJmYWNlcyBuYW1lcyBhcmUgY2FzZSBpbnNlbnNpdGl2ZQotICAgIC0tIHZlcmlmeSB0aGUgbmFtZXMgb25seSBhcHBlYXIgb25jZQotICAgICIiIgotCi0gICAgZGVmIGR1cGxpY2F0ZV9wb3J0KGVudHJ5LCBuYW1lKToKLSAgICAgICAgZHBpZCA9IGVudHJ5WydkcGlkJ10KLQotICAgICAgICBwcmludCAnV2FybmluZzogc3dpdGNoICVzIGR1cGxpY2F0ZSBpbnRlcmZhY2UgbmFtZXM6ICVzJyAlIChkcGlkLCBuYW1lKQotICAgICAgICBpZiBzZG5zaC5kZWJ1Z19iYWNrdHJhY2U6Ci0gICAgICAgICAgICBmb3IgcG9ydCBpbiBlbnRyeVsncG9ydHMnXToKLSAgICAgICAgICAgICAgICBpZiBwb3J0WyduYW1lJ10gPT0gbmFtZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1NXVElDSCAlczolcyBQT1JUICVzJyAlICAoZW50cnksIG5hbWUsIHBvcnQpCi0KLSAgICBkZWYgbm90X2Nhc2Vfc2Vuc2l0aXZlKGVudHJ5LCBuYW1lKToKLSAgICAgICAgZHBpZCA9IGVudHJ5WydkcGlkJ10KLQotICAgICAgICBwb3J0cyA9IHt9Ci0gICAgICAgIGZvciBwb3J0IGluIGVudHJ5Wydwb3J0cyddOgotICAgICAgICAgICAgaWYgcG9ydFsnbmFtZSddLmxvd2VyKCkgPT0gbmFtZToKLSAgICAgICAgICAgICAgICBwb3J0c1twb3J0WyduYW1lJ11dID0gcG9ydAotICAgICAgICAgICAgCi0gICAgICAgIHByaW50ICdXYXJuaW5nOiBzd2l0Y2ggJXMgY2FzZSBpbnNlbnRpdmUgaW50ZXJmYWNlIG5hbWVzOiAlcycgJSBcCi0gICAgICAgICAgICAgICAoZHBpZCwgJyAtICcuam9pbihwb3J0cy5rZXlzKCkpKQotICAgICAgICBpZiBzZG5zaC5kZWJ1Z19iYWNrdHJhY2U6Ci0gICAgICAgICAgICBmb3IgcG9ydCBpbiBwb3J0czoKLSAgICAgICAgICAgICAgICBwcmludCAnU1dUSUNIICVzIFBPUlQgJXMnICUgKGRwaWQsIHBvcnQpCi0KLSAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvc3dpdGNoZXMiICUgc2Ruc2guY29udHJvbGxlcgotICAgIGVudHJpZXMgPSB1cmxfY2FjaGUuZ2V0X2NhY2hlZF91cmwodXJsKQotICAgIGlmIGVudHJpZXM6Ci0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgZHBpZCA9IGVudHJ5WydkcGlkJ10KLQotICAgICAgICAgICAgIyB2ZXJpZnkgdGhhdCB0aGUgcG9ydCBuYW1lcyBhcmUgdW5pcXVlIGV2ZW4gd2hlbiBjYXNlCi0gICAgICAgICAgICAjIHNlbnNpdGl2ZQotICAgICAgICAgICAgYWxsX25hbWVzID0gW3BbJ25hbWUnXSBmb3IgcCBpbiBlbnRyeVsncG9ydHMnXV0KLSAgICAgICAgICAgIG9uZV9jYXNlX25hbWVzID0gdXRpZi51bmlxdWVfbGlzdF9mcm9tX2xpc3QoW3gubG93ZXIoKSBmb3IgeCBpbiBhbGxfbmFtZXNdKQotICAgICAgICAgICAgaWYgbGVuKGFsbF9uYW1lcykgIT0gbGVuKG9uZV9jYXNlX25hbWVzKToKLSAgICAgICAgICAgICAgICAjIFNvbWV0aGluZyBpcyByb3R0ZW4sIGZpbmQgb3V0IHdoYXQuCi0gICAgICAgICAgICAgICAgZm9yIChpLCBwb3J0X25hbWUpIGluIGVudW1lcmF0ZShhbGxfbmFtZXMpOgotICAgICAgICAgICAgICAgICAgICAjIHVzZSBlbnVtZXJhdGUgdG8gZHJpdmUgdXBwZXItdHJpYW5nbGUgY29tcGFyaXNvbgotICAgICAgICAgICAgICAgICAgICBmb3Igb3RoZXJfbmFtZSBpbiBhbGxfbmFtZXNbaSsxOl06Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBwb3J0X25hbWUgPT0gb3RoZXJfbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVfcG9ydChlbnRyeSwgcG9ydF9uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBwb3J0X25hbWUubG93ZXIoKSA9PSBvdGhlcl9uYW1lLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90X2Nhc2Vfc2Vuc2l0aXZlKGVudHJ5LCBwb3J0X25hbWUpCi0gICAgICAgICAgICAgICAgICAgIAotCmRpZmYgLS1naXQgYS9jbGkvY2xpL3J1bl9jb25maWcucHkgYi9jbGkvY2xpL3J1bl9jb25maWcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGUzZmM4MGMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9ydW5fY29uZmlnLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA5NiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jICBzZG5zaCAtIFRoZSBDb250cm9sbGVyIFNoZWxsCi0KLSMKLSMgc2hvdyBydW5uaW5nLWNvbmZpZwotIyAgYW5kIGFzc29jaWF0ZWQKLSMKLQotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgcmUKLWltcG9ydCB1dGlmCi1pbXBvcnQgbW9kaQotCi1mcm9tIG1pZHcgaW1wb3J0ICoKLWZyb20gdm5zdyBpbXBvcnQgKgotCi0KLWRlZiBpbml0X3J1bm5pbmdfY29uZmlnKGJzLCBtb2RpKToKLSAgICBnbG9iYWwgc2Ruc2gsIG1pCi0gICAgc2Ruc2ggPSBicwotICAgIG1pID0gbW9kaQotCi0KLXJ1bm5pbmdfY29uZmlnX3JlZ2lzdHJ5ID0ge30KLQotcnVubmluZ19jb25maWdfY29tbWFuZF9jaG9pY2VzID0gewotICAgICdvcHRpb25hbCcgOiBUcnVlLAotICAgICdjaG9pY2VzJyAgOiAoCi0gICAgKQotfQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiByZWdpc3Rlcl9ydW5uaW5nX2NvbmZpZyhuYW1lLCBvcmRlciwgZmVhdHVyZSwgcnVubmluZ19jb25maWdfcHJvYywgY29tbWFuZF90dXBsZSA9IE5vbmUpOgotICAgICIiIgotICAgIFJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gbWFuYWdlIHRoZSBkaXNwbGF5IG9mIGNvbXBvbmVudCBydW5uaW5nIGNvbmZpZ3MKLQotICAgIEBmZWF0dXJlIGEgcHJlZGljYXRlIHRvIGNhbGwsIHJldHVybnMgVHJ1ZS9GYWxzZSB0byBlbmFibGUvZGlzYWJsZSB0aGlzIGVudHJ5Ci0gICAgIiIiCi0gICAgcnVubmluZ19jb25maWdfcmVnaXN0cnlbbmFtZV0gPSB7ICdvcmRlcicgICA6IG9yZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmVhdHVyZScgOiBmZWF0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvYycgICAgOiBydW5uaW5nX2NvbmZpZ19wcm9jIH0KLSAgICBpZiBjb21tYW5kX3R1cGxlOgotICAgICAgICBnbG9iYWwgcnVubmluZ19jb25maWdfY29tbWFuZF9jaG9pY2VzCi0gICAgICAgIHJ1bm5pbmdfY29uZmlnX2NvbW1hbmRfY2hvaWNlc1snY2hvaWNlcyddICs9IGNvbW1hbmRfdHVwbGUKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgcmVnaXN0cnlfaXRlbXNfZW5hYmxlZCgpOgotICAgICIiIgotICAgIFJldHVybiBhIGxpc3Qgb2YgYWN0aXZlIHJ1bm5pbmcgY29uZmlnIGVudHJpZXMsIHRoaXMgaXMgYSBzdWJzZXQgb2YKLSAgICB0aGUgcmVnaXN0ZXJlZCBpdGVtcywgb25seSBpdGVtcyB3aGljaCBhcmUgY3VycmVudGx5IGVuYWJsZWQgdmlhIGZlYXR1cmVzCi0gICAgIiIiCi0gICAgcmV0dXJuIFtuYW1lIGZvciBuYW1lIGluIHJ1bm5pbmdfY29uZmlnX3JlZ2lzdHJ5LmtleXMoKQotICAgICAgICAgICAgaWYgcnVubmluZ19jb25maWdfcmVnaXN0cnlbbmFtZV1bJ2ZlYXR1cmUnXSA9PSBOb25lIG9yCi0gICAgICAgICAgICAgICBydW5uaW5nX2NvbmZpZ19yZWdpc3RyeVtuYW1lXVsnZmVhdHVyZSddKHNkbnNoKSA9PSBUcnVlXQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIHBlcmZvcm1fcnVubmluZ19jb25maWcobmFtZSwgY29udGV4dCwgY29uZmlnLCB3b3Jkcyk6Ci0gICAgIiIiCi0gICAgQ2FsbG91dCB0byBhcHBlbmQgdG8gY29uZmlnCi0gICAgIiIiCi0gICAgaWYgbmFtZSBpbiBydW5uaW5nX2NvbmZpZ19yZWdpc3RyeToKLSAgICAgICAgcnVubmluZ19jb25maWdfcmVnaXN0cnlbbmFtZV1bJ3Byb2MnXShjb250ZXh0LCBjb25maWcsIHdvcmRzKQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBydW5uaW5nX2NvbmZpZ19pbmNsdWRlX2FsaWFzKGNvbmZpZywgaW5kZW50LCBvYmpfdHlwZSwga2V5KToKLSAgICAiIiIKLSAgICBHaXZlbiBhbiBvYmpfdHlwZSBhbmQgYW4gaWQsIGFkZCB0aGUgYWxpYXMgZm9yIHRoaXMgb2JqX3R5cGUKLSAgICB0byB0aGUgY29uZmlnLgotCi0gICAgVGhlIHRhYmxlIGxvb2t1cCBpcyBhIGJpdCBkaWZmaWN1bHQgdG8gdW5kZXJzdGFuZDsga2VlcCBpbgotICAgIG1pbmQsIGZvciBleGFtcGxlLCB0aGUgJ2hvc3QtYWxpYXMnIHRhYmxlIGhhcyBhIHByaW1hcnkKLSAgICBrZXkgY2FsbGVkIGlkLCBhbmQgYSBmb3JlaWduIGtleSBjYWxsZWQgJ2hvc3QnLgotCi0gICAgUmV0dXJuIEZhbHNlIGlmIG5vIGFsaWFzIGV4aXN0cywgYW5kIFRydWUgd2hlbiBvbmUgd2FzIGFkZGVkIHRvICdjb25maWcnCi0gICAgIiIiCi0gICAgaWYgb2JqX3R5cGUgaW4gbWkuYWxpYXNfb2JqX3R5cGVfeHJlZjoKLSAgICAgICAgZm9yIGFsaWFzIGluIG1pLmFsaWFzX29ial90eXBlX3hyZWZbb2JqX3R5cGVdOgotICAgICAgICAgICAgZmllbGQgPSBtaS5hbGlhc19vYmpfdHlwZV9maWVsZChhbGlhcykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByb3cgPSBzZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZShhbGlhcywgZmllbGQsIGtleSkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICByb3cgPSBbXQotCi0gICAgICAgICAgICBpZiBsZW4ocm93KSA+IDE6Ci0gICAgICAgICAgICAgICAgc2Ruc2gud2FybmluZygnJXMgJXM6IGFsaWFzIGNvdW50ID4gMScgJSAoYWxpYXMsIGtleSkpCi0gICAgICAgICAgICBlbGlmIGxlbihyb3cpID09IDE6Ci0gICAgICAgICAgICAgICAgY29uZmlnLmFwcGVuZCgiJXMlcyAlc1xuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJyAgJyAqIGluZGVudCwgYWxpYXMsIHJvd1swXVsnaWQnXSkpCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgbm90X2RlZmF1bHRfdmFsdWUob2JqX3R5cGUsIGZpZWxkLCB2YWx1ZSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIFRydWUgd2hlbiB0aGUgdmFsdWUgcGFzc2VkIGluIGlzIG5vdCB0aGUgZGVmYXVsdCB2YWx1ZS4KLSAgICAiIiIKLSAgICBkZWZhdWx0X3ZhbHVlID0gbWkuZmllbGRfZGVmYXVsdF92YWx1ZShvYmpfdHlwZSwgZmllbGQpCi0gICAgaWYgKG1pLmlzX251bGxfYWxsb3dlZChvYmpfdHlwZSwgZmllbGQpIGFuZCB2YWx1ZSAhPSBOb25lKSBvciBcCi0gICAgICAobm90IG1pLmlzX251bGxfYWxsb3dlZChvYmpfdHlwZSwgZmllbGQpIGFuZCBkZWZhdWx0X3ZhbHVlICE9IE5vbmUKLSAgICAgIGFuZCAoZGVmYXVsdF92YWx1ZSAhPSB2YWx1ZSkpOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIHJ1bm5pbmdfY29uZmlnX2luY2x1ZGVfZmllbGQoY29uZmlnLCBvYmpfdHlwZSwgZmllbGQsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBwcmVmaXggPSAiIik6Ci0gICAgIiIiCi0gICAgSWRlbnRpZnkgZmllbGRzIG9mIG9ial90eXBlcyB3aG8ncyB2YWx1ZXMgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQKLSAgICB2YWx1ZXMsIHNpbmNlIHRoZXNlIG5lZWQgdG8gYmUgaW5jbHVkZWQgaW50byB0aGUgcnVubmluZy1jb25maWcKLSAgICAiIiIKLSAgICBpZiBtaS5ub3RfZGVmYXVsdF92YWx1ZShvYmpfdHlwZSwgZmllbGQsIHZhbHVlKToKLSAgICAgICAgIwotICAgICAgICBpZiBtaS5pc19maWVsZF9zdHJpbmcob2JqX3R5cGUsIGZpZWxkKToKLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJyAnICogKGluZGVudCArIGluZGVudCkgKyBwcmVmaXggKyBmaWVsZCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIgJXNcbiIgJSB1dGlmLnF1b3RlX3N0cmluZyh2YWx1ZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb25maWcuYXBwZW5kKCcgJyAqIChpbmRlbnQgKyBpbmRlbnQpICsgcHJlZml4ICsgZmllbGQgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAnICVzXG4nICUgdmFsdWUpCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgcnVubmluZ19jb25maWdfdm5zX2FjbChjb25maWcsIHZuc19uYW1lLCBhY2wsIHZuc19hY2xfZW50cmllcyxpbmRlbnQ9MCk6Ci0gICAgIiIiCi0gICAgZmFjdG9yZWQgb3V0IGR1ZSB0byBleGNlc3NpdmUgaW5kZW50IGxldmVsIGluIGRvX3Nob3dfcnVubmluZ19jb25maWcKLSAgICBhbmQgdG8gYWxsb3cgcmUtdXNlIGluICdzaG93IHZucyA8bj4gcnVubmluZy1jb25maWcnCi0gICAgIiIiCi0gICAga2V5ID0gbWkucGsoJ3Zucy1hY2Nlc3MtbGlzdCcpCi0KLSAgICBjb25maWcuYXBwZW5kKCcgJyAqMippbmRlbnQgKyAnYWNjZXNzLWxpc3QgJXNcbicgJSBhY2xbJ25hbWUnXSkKLQotICAgICMKLSAgICB2bnNfYWNsX2ZpZWxkcyA9IFsncHJpb3JpdHknLCAnZGVzY3JpcHRpb24nXQotICAgIGZvciBmaWVsZCBpbiB2bnNfYWNsX2ZpZWxkczoKLSAgICAgICAgcnVubmluZ19jb25maWdfaW5jbHVkZV9maWVsZChjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zucy1hY2Nlc3MtbGlzdCcsIGZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjbC5nZXQoZmllbGQsICcnKSwgaW5kZW50KzEpCi0KLSAgICB2bnNfYWNsX2VudHJpZXMgPSBzb3J0ZWQodm5zX2FjbF9lbnRyaWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXA9bGFtYmRhIHgseTogaW50KHhbJ3J1bGUnXSkgLSBpbnQoeVsncnVsZSddKSkKLQotICAgIGZvciBhY2xfZW50cnkgaW4gdm5zX2FjbF9lbnRyaWVzOgotICAgICAgICBjb25maWcuYXBwZW5kKCcgJyAqMiooaW5kZW50KzEpICsgJyVzICVzICVzICVzXG4nICUgKAotICAgICAgICAgICAgICAgICAgICAgIGFjbF9lbnRyeVsncnVsZSddLAotICAgICAgICAgICAgICAgICAgICAgIGFjbF9lbnRyeVsnYWN0aW9uJ10sCi0gICAgICAgICAgICAgICAgICAgICAgYWNsX2VudHJ5Wyd0eXBlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgdm5zX2FjbF9lbnRyeV90b190ZXh0KGFjbF9lbnRyeSkpKQotCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgcnVubmluZ19jb25maWdfdm5zX2lmX3J1bGUoY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZuc19pZl9ydWxlX2VudHJpZXMsaW5kZW50PTApOgotICAgICIiIgotICAgIGZhY3RvcmVkIG91dCBkdWUgdG8gZXhjZXNzaXZlIGluZGVudCBsZXZlbCBpbiBkb19zaG93X3J1bm5pbmdfY29uZmlnCi0gICAgYW5kIHRvIGFsbG93IHJlLXVzZSBpbiAnc2hvdyB2bnMgPG4+IHJ1bm5pbmctY29uZmlnJwotCi0gICAgJ3Zuc19pZl9ydWxlX2VudHJpZXMnIGFyZSBhbGwgdGhlIGVudHJpZXMgdG8gY29uY2F0ZW5hdGUgdG8gdGhlIGNvbmZpCi0gICAgIiIiCi0gICAgZm9yIHJ1bGUgaW4gdm5zX2lmX3J1bGVfZW50cmllczoKLSAgICAgICAgY29uZmlnLmFwcGVuZCgnICcgKjIqaW5kZW50ICsnaW50ZXJmYWNlLXJ1bGUgJXNcbicgJSBydWxlWydydWxlJ10pCi0KLSAgICAgICAgIwotICAgICAgICAjIG1pLm9ial90eXBlX2NvbmZpZ19maWVsZHMoJ3Zucy1pbnRlcmZhY2UtcnVsZScpIGlzbid0IHVzZWQKLSAgICAgICAgIyBoZXJlIHNpbmNlIHN3aXRjaC9wb3J0IGlzIGNvbGxlY3RlZCB0b2dldGhlciAobWFuYWdlZCB0b2dldGhlcikKLSAgICAgICAgZm9yIGZpZWxkIGluIFsnZGVzY3JpcHRpb24nLCAnYWN0aXZlJywgJ3ByaW9yaXR5JywgXToKLSAgICAgICAgICAgIHJ1bm5pbmdfY29uZmlnX2luY2x1ZGVfZmllbGQoY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndm5zLWludGVyZmFjZS1ydWxlJywgZmllbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuZ2V0KGZpZWxkLCAnJyksIGluZGVudCsxLCkKLQotICAgICAgICBmb3IgZmllbGQgaW4gWyAnbWFjJywgJ2lwLXN1Ym5ldCcsICd2bGFucycsICd0YWdzJ106Ci0gICAgICAgICAgICBydW5uaW5nX2NvbmZpZ19pbmNsdWRlX2ZpZWxkKGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zucy1pbnRlcmZhY2UtcnVsZScsIGZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLmdldChmaWVsZCwgJycpLCBpbmRlbnQrMSwgJ21hdGNoICcpCi0gICAgICAgIGlmIHJ1bGUuZ2V0KCdhbGxvdy1tdWx0aXBsZScsIEZhbHNlKToKLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJyAnICogMiooaW5kZW50KzEpICsgJ2FsbG93LW11bHRpcGxlXG4nKTsKLSAgICAgICAgaWYgcnVsZS5nZXQoJ3ZsYW4tdGFnLW9uLWVncmVzcycsIEZhbHNlKToKLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJyAnICogMiooaW5kZW50KzEpICsgJ3ZsYW4tdGFnLW9uLWVncmVzc1xuJyk7Ci0KLSAgICAgICAgIwotICAgICAgICAjIE1hbmFnZSBzd2l0Y2ggYW5kIHBvcnRzIGRpZmZlcmVudGx5LCBwbGFjaW5nIGJvdGggb24gdGhlCi0gICAgICAgICMgc2FtZSBsaW5lIHdoZW4gcG9ydHMgZXhpc3QsIGFuZCByZXBsYWNpbmcgdGhlIHN3aXRjaCBhbGlhcwotICAgICAgICAjIHdoZW4gaXRzIGF2YWlsYWJsZS4KLSAgICAgICAgaWYgJ3N3aXRjaCcgaW4gcnVsZToKLSAgICAgICAgICAgIGRwaWRfb3JfYWxpYXMgPSBhbGlhc19sb29rdXBfd2l0aF9mb3JlaWduX2tleSgnc3dpdGNoLWFsaWFzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlWydzd2l0Y2gnXSkKLSAgICAgICAgICAgIGlmIGRwaWRfb3JfYWxpYXMgPT0gTm9uZToKLSAgICAgICAgICAgICAgICBkcGlkX29yX2FsaWFzID0gcnVsZVsnc3dpdGNoJ10gIyBkcGlkCi0gICAgICAgICAgICBpZiAncG9ydHMnIGluIHJ1bGU6Ci0gICAgICAgICAgICAgICAgY29uZmlnLmFwcGVuZCgnICcgKjIqKGluZGVudCsxKSArICdtYXRjaCBzd2l0Y2ggJXMgJXNcbicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHBpZF9vcl9hbGlhcywgcnVsZVsncG9ydHMnXSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJyAnICoyKihpbmRlbnQrMSkgKyAnbWF0Y2ggc3dpdGNoICVzXG4nICUgZHBpZF9vcl9hbGlhcykKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgcnVubmluZ19jb25maWdfYWN0aXZlX3Zuc19pbnRlcmZhY2VzKHZuc19uYW1lLCB2bnNfaW50ZXJmYWNlX2FjbCk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgbGlzdCBvZiBpbnRlcmZhY2VzIHdoaWNoIGhhdmUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBuZWVkaW5nCi0gICAgdG8gYmUgc2F2ZWQKLSAgICAiIiIKLSAgICBhY3RpdmUgPSB7fQotICAgIGtleSA9IG1pLnBrKCd2bnMtaW50ZXJmYWNlLWFjY2Vzcy1saXN0JykKLQotICAgIGZvciBpZl9hY2wgaW4gdm5zX2ludGVyZmFjZV9hY2w6Ci0gICAgICAgIGlkX2ZpZWxkcyA9IGlmX2FjbFtrZXldLnNwbGl0KCd8JykKLSAgICAgICAgdm5zX2lkPSBpZF9maWVsZHNbMF0gKyd8JyArIGlkX2ZpZWxkc1sxXQotICAgICAgICBpZiB2bnNfaWQgPT0gdm5zX25hbWU6Ci0gICAgICAgICAgICBhY3RpdmVbaWRfZmllbGRzWzJdXSA9IE5vbmUKLQotICAgIHJldHVybiBhY3RpdmUua2V5cygpCi0jCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLWRlZiBydW5uaW5nX2NvbmZpZ190ZW5hbnRfZGV0YWlscyhjb25maWcsIHRlbmFudCk6Ci0gICAgIiIiCi0gICAgRGlzcGxheSB0aGUgZGV0YWlscyBmb3IgdGhlIGZpZWxkcyBvZiBhIHRlbmFudCB3aGljaCBtYXkgaGF2ZQotICAgIG5vbi1kZWZhdWx0IHZhbHVlcy4KLSAgICAiIiIKLSAgICBpZiB0ZW5hbnRbJ2FjdGl2ZSddICE9IG1pLmZpZWxkX2RlZmF1bHRfdmFsdWUoJ3RlbmFudCcsICdhY3RpdmUnKToKLSAgICAgICAgY29uZmlnLmFwcGVuZCgnbm8gYWN0aXZlXG4nKQotICAgICMgbWkub2JqX3R5cGVfY29uZmlnX2ZpZWxkcygndm5zLWRlZmluaXRpb24nKSBvbmx5IHNob3dzIGZpZWxkcyB3aGljaCBhcmUKLSAgICAjIHVzZXIgZWRpdGFibGUsIHdoaWNoIGlzIG5vbmUsIHNpbmNlIG9ubHkgdGhlIGNvbW1hbmQgZGVzY3JpcHRpb25zIAotICAgICMgbW9kaWZ5IHRoZSBmaWVsZHMuICBYWFggZnVuYyB3aGljaCByZXR1cm5zIGZpZWxkcyB3aGljaCBjYW4gYmUgdXBkYXRlZAotICAgICMgdmlhIGNvbW1hbmQgZGVzY3JpcHRpb25zPwotICAgIHRlbmFudF9maWVsZHMgPSBbJ2Rlc2NyaXB0aW9uJywgJ29yaWdpbiddCi0KLSAgICBmb3IgZmllbGQgaW4gc29ydGVkKHRlbmFudF9maWVsZHMpOgotICAgICAgICBydW5uaW5nX2NvbmZpZ19pbmNsdWRlX2ZpZWxkKGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVuYW50JywgZmllbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVuYW50LmdldChmaWVsZCwnJyksIDEpCi0KLSMKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotZGVmIHJ1bm5pbmdfY29uZmlnX3RlbmFudF9yb3V0ZXJfZGV0YWlscyhjb25maWcsIHZyb3V0ZXIsaW5kZW50PTApOgotICAgICIiIgotICAgIERpc3BsYXkgdGhlIGRldGFpbHMgZm9yIHRoZSBmaWVsZHMgb2YgYSB2cm91dGVyIHdoaWNoIG1heSBoYXZlCi0gICAgbm9uLWRlZmF1bHQgdmFsdWVzLgotICAgICIiIgotICAgIHZyb3V0ZXJfZmllbGRzID0gWydkZXNjcmlwdGlvbicsICdvcmlnaW4nXQotCi0gICAgZm9yIGZpZWxkIGluIHNvcnRlZCh2cm91dGVyX2ZpZWxkcyk6Ci0gICAgICAgIHJ1bm5pbmdfY29uZmlnX2luY2x1ZGVfZmllbGQoY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXJ0dWFscm91dGVyJywgZmllbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnJvdXRlci5nZXQoZmllbGQsJycpLCBpbmRlbnQrMSkKLQotIwotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi1kZWYgcnVubmluZ19jb25maWdfcm91dGVyX2ludGVyZmFjZV9kZXRhaWxzKGNvbmZpZywgdnJfaW50ZXJmYWNlLCBpbmRlbnQ9MCk6Ci0gICAgIiIiCi0gICAgRGlzcGxheSB0aGUgZGV0YWlscyBmb3IgdGhlIGZpZWxkcyBvZiBhIHJvdXRlciBpbnRlcmZhY2Ugd2hpY2ggbWF5IGhhdmUKLSAgICBub24tZGVmYXVsdCB2YWx1ZXMuCi0gICAgIiIiCi0gICAgaWYgJ3Zucy1jb25uZWN0ZWQnIGluIHZyX2ludGVyZmFjZSBhbmQgdnJfaW50ZXJmYWNlWyd2bnMtY29ubmVjdGVkJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgIHZucz12cl9pbnRlcmZhY2VbJ3Zucy1jb25uZWN0ZWQnXS5zcGxpdCgnfCcpCi0gICAgICAgIHZuc19uYW1lPXZuc1sxXQotICAgICAgICBjb25maWcuYXBwZW5kKCcgJyAqMippbmRlbnQgKyAnaW50ZXJmYWNlICVzIHZucyAlcyBcbicgJSAodnJfaW50ZXJmYWNlWyd2cmluYW1lJ10sdm5zX25hbWUpKQotICAgIGVsaWYgJ3JvdXRlci1jb25uZWN0ZWQnIGluIHZyX2ludGVyZmFjZSBhbmQgdnJfaW50ZXJmYWNlWydyb3V0ZXItY29ubmVjdGVkJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByb3V0ZXI9dnJfaW50ZXJmYWNlWydyb3V0ZXItY29ubmVjdGVkJ10uc3BsaXQoJ3wnKQotICAgICAgICAgICAgdGVuYW50X25hbWU9cm91dGVyWzBdCi0gICAgICAgICAgICByb3V0ZXJfbmFtZT1yb3V0ZXJbMV0KLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJyAnICoyKmluZGVudCArJ2ludGVyZmFjZSAlcyB0ZW5hbnQgJXMgJXMgXG4nICUgKHZyX2ludGVyZmFjZVsndnJpbmFtZSddLHRlbmFudF9uYW1lLCByb3V0ZXJfbmFtZSkpCi0KLSAgICBpZiB2cl9pbnRlcmZhY2VbJ2FjdGl2ZSddICE9IG1pLmZpZWxkX2RlZmF1bHRfdmFsdWUoJ3ZpcnR1YWxyb3V0ZXItaW50ZXJmYWNlJywgJ2FjdGl2ZScpOgotICAgICAgICBjb25maWcuYXBwZW5kKCcgJyAqMiooaW5kZW50KzEpICsgJ25vIGFjdGl2ZVxuJykKLQotICAgIHZyaV9maWVsZHMgPSBbJ29yaWdpbiddCi0KLSAgICBmb3IgZmllbGQgaW4gc29ydGVkKHZyaV9maWVsZHMpOgotICAgICAgICBydW5uaW5nX2NvbmZpZ19pbmNsdWRlX2ZpZWxkKGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbHJvdXRlci1pbnRlcmZhY2UnLCBmaWVsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cl9pbnRlcmZhY2UuZ2V0KGZpZWxkLCcnKSwgaW5kZW50KzEpCi0gICAgdHJ5OgotICAgICAgICBpcF9hZGRyZXNzX3Bvb2wgPSBzZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZSgnaW50ZXJmYWNlLWFkZHJlc3MtcG9vbCcsJ3ZpcnR1YWwtcm91dGVyLWludGVyZmFjZScsIHZyX2ludGVyZmFjZVsnaWQnXSwgImV4YWN0IikKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICBpcF9hZGRyZXNzX3Bvb2wgPSB7fQotICAgICAgICBwYXNzCi0gICAgZm9yIGlwX2FkZHJlc3MgaW4gaXBfYWRkcmVzc19wb29sOgotICAgICAgICBjb25maWcuYXBwZW5kKCcgJyAqMiooaW5kZW50KzEpICsgJ2lwICVzXG4nICUgKHV0aWYuaXBfYW5kX25lZ19tYXNrKGlwX2FkZHJlc3NbJ2lwLWFkZHJlc3MnXSxpcF9hZGRyZXNzWydzdWJuZXQtbWFzayddKSkpCi0KLSMKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotZGVmIHJ1bm5pbmdfY29uZmlnX3JvdXRlcl9ydWxlX2RldGFpbHMoY29uZmlnLCB2cl9yb3V0ZSxpbmRlbnQ9MCk6Ci0gICAgIiIiCi0gICAgRGlzcGxheSB0aGUgZGV0YWlscyBmb3IgdGhlIGZpZWxkcyBvZiBhIHJvdXRlciBpbnRlcmZhY2Ugd2hpY2ggbWF5IGhhdmUKLSAgICBub24tZGVmYXVsdCB2YWx1ZXMuCi0gICAgIiIiCi0gICAgY29uZmlnX3N0cj0nICcgKiAyKmluZGVudAotICAgIGlmICdzcmMtdGVuYW50JyBpbiB2cl9yb3V0ZSBhbmQgdnJfcm91dGVbJ3NyYy10ZW5hbnQnXSBpcyBub3QgTm9uZToKLSAgICAgICAgY29uZmlnX3N0cis9KCdyb3V0ZSBmcm9tIHRlbmFudCAlcycgJSB2cl9yb3V0ZVsnc3JjLXRlbmFudCddKQotICAgICAgICBpZiAnc3JjLXZucycgaW4gdnJfcm91dGUgYW5kIHZyX3JvdXRlWydzcmMtdm5zJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB2bnM9dnJfcm91dGVbJ3NyYy12bnMnXS5zcGxpdCgnfCcpCi0gICAgICAgICAgICB2bnNfbmFtZT12bnNbMV0KLSAgICAgICAgICAgIGNvbmZpZ19zdHIrPSgnIHZucyAlcycgJSB2bnNfbmFtZSkKLSAgICBlbHNlOgotICAgICAgICBpZiAnc3JjLWlwJyBpbiB2cl9yb3V0ZSBhbmQgdnJfcm91dGVbJ3NyYy1pcCddIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY29uZmlnX3N0cis9KCdyb3V0ZSBmcm9tICVzJyAlICh1dGlmLmlwX2FuZF9uZWdfbWFzayh2cl9yb3V0ZVsnc3JjLWlwJ10sdnJfcm91dGVbJ3NyYy1pcC1tYXNrJ10pKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbmZpZ19zdHIrPSgncm91dGUgZnJvbSBhbnknKQotCi0gICAgY29uZmlnX3N0cis9KCcgdG8nKQotCi0gICAgaWYgJ2RzdC10ZW5hbnQnIGluIHZyX3JvdXRlIGFuZCB2cl9yb3V0ZVsnZHN0LXRlbmFudCddIGlzIG5vdCBOb25lOgotICAgICAgICBjb25maWdfc3RyKz0oJyB0ZW5hbnQgJXMnICUgdnJfcm91dGVbJ2RzdC10ZW5hbnQnXSkKLSAgICAgICAgaWYgJ2RzdC12bnMnIGluIHZyX3JvdXRlIGFuZCB2cl9yb3V0ZVsnZHN0LXZucyddIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdm5zPXZyX3JvdXRlWydkc3Qtdm5zJ10uc3BsaXQoJ3wnKQotICAgICAgICAgICAgdm5zX25hbWU9dm5zWzFdCi0gICAgICAgICAgICBjb25maWdfc3RyKz0oJyB2bnMgJXMnICUgdm5zX25hbWUpCi0gICAgZWxzZToKLSAgICAgICAgaWYgJ2RzdC1pcCcgaW4gdnJfcm91dGUgYW5kIHZyX3JvdXRlWydkc3QtaXAnXSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGNvbmZpZ19zdHIrPSgnICVzJyAlICh1dGlmLmlwX2FuZF9uZWdfbWFzayh2cl9yb3V0ZVsnZHN0LWlwJ10sdnJfcm91dGVbJ2RzdC1pcC1tYXNrJ10pKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbmZpZ19zdHIrPSgnIGFueScpCi0KLSAgICBpZiAnbmgtaXAnIGluIHZyX3JvdXRlIGFuZCB2cl9yb3V0ZVsnbmgtaXAnXSBpcyBub3QgTm9uZToKLSAgICAgICAgY29uZmlnX3N0cis9KCcgJXMnICUgdnJfcm91dGVbJ25oLWlwJ10pCi0gICAgaWYgJ2dhdGV3YXktcG9vbCcgaW4gdnJfcm91dGUgYW5kIHZyX3JvdXRlWydnYXRld2F5LXBvb2wnXSBpcyBub3QgTm9uZToKLSAgICAgICAgZ3dwb29sPSB2cl9yb3V0ZVsnZ2F0ZXdheS1wb29sJ10uc3BsaXQoJ3wnKQotICAgICAgICBnd3Bvb2xfbmFtZT1nd3Bvb2xbLTFdCi0gICAgICAgIGNvbmZpZ19zdHIrPSgnIGd3LXBvb2wgJXMnICUgZ3dwb29sX25hbWUpCi0gICAgaWYgJ291dGdvaW5nLWludGYnIGluIHZyX3JvdXRlIGFuZCB2cl9yb3V0ZVsnb3V0Z29pbmctaW50ZiddIGlzIG5vdCBOb25lOgotICAgICAgICBpbnRmPSB2cl9yb3V0ZVsnb3V0Z29pbmctaW50ZiddLnNwbGl0KCd8JykKLSAgICAgICAgaW50Zl9uYW1lPWludGZbLTFdCi0gICAgICAgIGNvbmZpZ19zdHIrPSgnICVzJyAlIGludGZfbmFtZSkKLQotICAgIGNvbmZpZ19zdHIrPSgnICVzXG4nICUgdnJfcm91dGVbJ2FjdGlvbiddKQotICAgIGNvbmZpZy5hcHBlbmQoY29uZmlnX3N0cikKLQotIwotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi1kZWYgcnVubmluZ19jb25maWdfcm91dGVyX2d3cG9vbF9kZXRhaWxzKGNvbmZpZywgdnJfZ3dwb29sLCBpbmRlbnQ9MCk6Ci0gICAgIiIiCi0gICAgRGlzcGxheSB0aGUgZGV0YWlscyBmb3IgdGhlIGZpZWxkcyBvZiBhIHJvdXRlciBnYXRld2F5IHBvb2wgd2hpY2ggbWF5IGhhdmUKLSAgICBub24tZGVmYXVsdCB2YWx1ZXMuCi0gICAgIiIiCi0gICAgY29uZmlnLmFwcGVuZCgnICcgKjIqaW5kZW50ICsgJ2dhdGV3YXktcG9vbCAlc1xuJyAlICh2cl9nd3Bvb2xbJ3ZyZ3duYW1lJ10pKQotCi0gICAgdHJ5OgotICAgICAgICBnd19hZGRyZXNzX3Bvb2wgPSBzZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZSgnZ2F0ZXdheS1hZGRyZXNzLXBvb2wnLCd2aXJ0dWFsLXJvdXRlci1nd3Bvb2wnLCB2cl9nd3Bvb2xbJ2lkJ10sICJleGFjdCIpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgZ3dfYWRkcmVzc19wb29sID0ge30KLSAgICAgICAgcGFzcwotICAgIGZvciBnd19hZGRyZXNzIGluIGd3X2FkZHJlc3NfcG9vbDoKLSAgICAgICAgY29uZmlnLmFwcGVuZCgnICcgKjIqKGluZGVudCsxKSArICdpcCAlc1xuJyAlIGd3X2FkZHJlc3NbJ2lwLWFkZHJlc3MnXSkKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLWRlZiBydW5uaW5nX2NvbmZpZ192bnNfZGV0YWlscyhjb25maWcsIHZucyxpbmRlbnQ9MCk6Ci0gICAgIiIiCi0gICAgRGlzcGxheSB0aGUgZGV0YWlscyBmb3IgdGhlIGZpZWxkcyBvZiBhIHZucyB3aGljaCBtYXkgaGF2ZQotICAgIG5vbi1kZWZhdWx0IHZhbHVlcy4KLSAgICAiIiIKLSAgICBpZiB2bnNbJ2FjdGl2ZSddICE9IG1pLmZpZWxkX2RlZmF1bHRfdmFsdWUoJ3Zucy1kZWZpbml0aW9uJywgJ2FjdGl2ZScpOgotICAgICAgICBjb25maWcuYXBwZW5kKCcgJyAqMippbmRlbnQgKyAnbm8gYWN0aXZlXG4nKQotICAgICMgbWkub2JqX3R5cGVfY29uZmlnX2ZpZWxkcygndm5zLWRlZmluaXRpb24nKSBvbmx5IHNob3dzIGZpZWxkcyB3aGljaCBhcmUKLSAgICAjIHVzZXIgZWRpdGFibGUsIHdoaWNoIGlzIG5vbmUsIHNpbmNlIG9ubHkgdGhlIGNvbW1hbmQgZGVzY3JpcHRpb25zIAotICAgICMgbW9kaWZ5IHRoZSBmaWVsZHMuICBYWFggZnVuYyB3aGljaCByZXR1cm5zIGZpZWxkcyB3aGljaCBjYW4gYmUgdXBkYXRlZAotICAgICMgdmlhIGNvbW1hbmQgZGVzY3JpcHRpb25zPwotICAgIHZuc19maWVsZHMgPSBbJ2Rlc2NyaXB0aW9uJywgJ3ByaW9yaXR5JywgJ29yaWdpbicsCi0gICAgICAgICAgICAgICAgICAnYXJwLW1vZGUnLCAnZGhjcC1tb2RlJywgJ2RoY3AtaXAnLCAnYnJvYWRjYXN0J10KLQotICAgIGZvciBmaWVsZCBpbiBzb3J0ZWQodm5zX2ZpZWxkcyk6Ci0gICAgICAgIHJ1bm5pbmdfY29uZmlnX2luY2x1ZGVfZmllbGQoY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bnMtZGVmaW5pdGlvbicsIGZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZucy5nZXQoZmllbGQsJycpLCBpbmRlbnQpCi0gICAgdm5zX3VzZV9maWVsZHMgPSBbJ2FkZHJlc3Mtc3BhY2UnXQotICAgIGZvciBmaWVsZCBpbiBzb3J0ZWQodm5zX3VzZV9maWVsZHMpOgotICAgICAgICBydW5uaW5nX2NvbmZpZ19pbmNsdWRlX2ZpZWxkKGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndm5zLWRlZmluaXRpb24nLCBmaWVsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bnMuZ2V0KGZpZWxkLCcnKSwgaW5kZW50LCAidXNlICIpCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgcnVubmluZ19jb25maWdfdm5zX2lmX2FuZF9hY2Nlc3NfZ3JvdXAoY29uZmlnLCB2bnNfbmFtZSwgaWZfbmFtZSwgdm5zX2ludGVyZmFjZV9hY2wsaW5kZW50PTApOgotICAgICIiIgotICAgIERlY29yYXRlIHRoZSBjb25maWcgd2l0aCBhY2Nlc3NfZ3JvdXAgZGV0YWlscwotICAgICIiIgotICAgIG9ial90eXBlID0gJ3Zucy1pbnRlcmZhY2UtYWNjZXNzLWxpc3QnCi0gICAga2V5ID0gbWkucGsob2JqX3R5cGUpCi0KLSAgICBmb3IgaWZfYWNsIGluIHZuc19pbnRlcmZhY2VfYWNsOgotICAgICAgICAjIGFkZCBjb21wb3VuZCBrZXkgZmllbGQgbmFtZXMgKCd2bnMnLCAnbmFtZScsIGV0YykgaW50byBpZl9hY2wKLSAgICAgICAgbWkuc3BsaXRfY29tcG91bmRfaW50b19kaWN0KG9ial90eXBlLCBrZXksIGlmX2FjbCkKLSAgICAgICAgdm5zX2lkPWlmX2FjbFsndGVuYW50J10gKyd8JyArIGlmX2FjbFsndm5zbmFtZSddCi0gICAgICAgIGlmIHZuc19pZCA9PSB2bnNfbmFtZSBhbmQgaWZfYWNsWydpbnRlcmZhY2UnXSA9PSBpZl9uYW1lOgotICAgICAgICAgICAgY29uZmlnLmFwcGVuZCgnICcqMippbmRlbnQgKyAiYWNjZXNzLWdyb3VwICVzICVzXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmX2FjbFsnbmFtZSddLCBpZl9hY2xbJ2luLW91dCddKSkKLQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIGZpcmV3YWxsX3J1bGUocnVsZSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgc3RyaW5nLCB0aGUgY29tbWFuZCB3aGljaCBlbmFibGVkIHRoaXMgcGFydGljdWxhciBmaXJld2FsbCBydWxlCi0gICAgIiIiCi0gICAgdGNwX3BvcnRzID0gezY2MzM6ICAib3BlbmZsb3ciLAotICAgICAgICAgICAgICAgICA4MDogICAgICJ3ZWIiLAotICAgICAgICAgICAgICAgICA0NDM6ICAgICJzc2wiLAotICAgICAgICAgICAgICAgICAyMjogICAgICJzc2gifQotCi0gICAgc3JjID0gJycKLSAgICBpZiAnc3JjLWlwJyBpbiBydWxlIGFuZCBydWxlWydzcmMtaXAnXSAhPSAnJzoKLSAgICAgICAgc3JjID0gJ2Zyb20gJXMgJyAlIHJ1bGVbJ3NyYy1pcCddCi0gICAgZHN0ID0gJycKLSAgICBpZiAndnJycC1pcCcgaW4gcnVsZSBhbmQgcnVsZVsndnJycC1pcCddICE9ICcnOgotICAgICAgICBkc3QgPSAgJ2xvY2FsLWlwICVzICcgJSBydWxlWyd2cnJwLWlwJ10KLQotICAgIGlmIHJ1bGVbJ3Byb3RvJ10gPT0gJ3RjcCcgYW5kIHJ1bGVbJ3BvcnQnXSBpbiB0Y3BfcG9ydHM6Ci0gICAgICAgIGFsbG93ID0gdGNwX3BvcnRzW3J1bGVbJ3BvcnQnXV0KLSAgICAgICAgcmV0dXJuICJmaXJld2FsbCBhbGxvdyAlcyVzJXMiICUgKHNyYywgZHN0LCBhbGxvdykKLSAgICBlbGlmIHJ1bGVbJ3Byb3RvJ10gPT0gJ3ZycnAnOgotICAgICAgICByZXR1cm4gImZpcmV3YWxsIGFsbG93ICVzJXN2cnJwIiAlIChzcmMsIGRzdCkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gKCJmaXJld2FsbCBhbGxvdyAlcyVzJXMgJXMiICUgCi0gICAgICAgICAgICAgICAgICAgICAoc3JjLCBkc3QsIHJ1bGVbJ3Byb3RvJ10sIHJ1bGVbJ3BvcnQnXSkpCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIHJ1bm5pbmdfY29uZmlnX2ZpcmV3YWxsX3J1bGUoY29uZmlnLCBydWxlKToKLSAgICAiIiIKLSAgICBSZXR1cm4gYSBzdHJpbmcsIHRoZSBjb21tYW5kIHdoaWNoIGVuYWJsZWQgdGhpcyBwYXJ0aWN1bGFyIGZpcmV3YWxsIHJ1bGUKLSAgICAiIiIKLSAgICBjb25maWcuYXBwZW5kKCIgICAgJXNcbiIgJSBmaXJld2FsbF9ydWxlKHJ1bGUpKQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBydW5uaW5nX2NvbmZpZ19mZWF0dXJlKGNvbnRleHQsIGNvbmZpZywgd29yZHMpOgotICAgICIiIgotICAgIERlY29yYXRlIGNvbmZpZyB3aXRoIHRoZSBmZWF0dXJlIGNvbW1hbmRzCi0gICAgIiIiCi0gICAgZmVhdHVyZSA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKCdmZWF0dXJlJykKLQotICAgIGlmIGxlbihmZWF0dXJlKSA9PSAwOgotICAgICAgICByZXR1cm4KLQotICAgIGZfY29uZmlnID0gW10KLQotICAgIGZvciBmaWVsZCBpbiBtaS5vYmpfdHlwZV9maWVsZHMoJ2ZlYXR1cmUnKToKLSAgICAgICAgaWYgZmllbGQgPT0gbWkucGsoJ2ZlYXR1cmUnKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIG1pLmlzX2ZvcmVpZ25fa2V5KCdmZWF0dXJlJywgZmllbGQpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZGVmYXVsdF92YWx1ZSA9IG1pLmZpZWxkX2RlZmF1bHRfdmFsdWUoJ2ZlYXR1cmUnLCBmaWVsZCkKLSAgICAgICAgbmFtZSA9IGZpZWxkLnJlcGxhY2UoJy1mZWF0dXJlJywnJykKLSAgICAgICAgaWYgbWkubm90X2RlZmF1bHRfdmFsdWUoJ2ZlYXR1cmUnLCBmaWVsZCwgZmVhdHVyZVswXVtmaWVsZF0pOgotICAgICAgICAgICAgaWYgZGVmYXVsdF92YWx1ZSA9PSBUcnVlOgotICAgICAgICAgICAgICAgIGZfY29uZmlnLmFwcGVuZCgnbm8gZmVhdHVyZSAlc1xuJyAlIG5hbWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZfY29uZmlnLmFwcGVuZCgnZmVhdHVyZSAlc1xuJyAlIG5hbWUpCi0KLSAgICBpZiBsZW4oZl9jb25maWcpID4gMDoKLSAgICAgICAgY29uZmlnLmFwcGVuZCgnISBmZWF0dXJlcyBlbmFibGVkL2Rpc2FibGVkXG4nKQotICAgICAgICBjb25maWcgKz0gZl9jb25maWcKLQotZmVhdHVyZV9ydW5uaW5nX2NvbmZpZ190dXBsZSA9ICgKLSgKLSAgICAgICB7Ci0gICAgICAgICAgICdvcHRpb25hbCcgICA6IEZhbHNlLAotICAgICAgICAgICAnZmllbGQnICAgICAgOiAncnVubmluZy1jb25maWcnLAotICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdmZWF0dXJlJywKLSAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0NvbmZpZ3VyYXRpb24gZm9yIGVuYWJsZWQvZGlzYWJsZWQgZmVhdHVyZXMnLAotICAgICAgICAgICAnZG9jJyAgICAgICAgOiAncnVubmluZy1jb25maWd8c2hvdy1mZWF0dXJlJywKLSAgICAgICB9LAotICAgICksCi0pCi0KLXJlZ2lzdGVyX3J1bm5pbmdfY29uZmlnKCdmZWF0dXJlJywgMTAwMCwgTm9uZSwgcnVubmluZ19jb25maWdfZmVhdHVyZSwgZmVhdHVyZV9ydW5uaW5nX2NvbmZpZ190dXBsZSkKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBydW5uaW5nX2NvbmZpZ19jb250cm9sbGVyX25vZGUoY29udGV4dCwgY29uZmlnLCB3b3Jkcyk6Ci0gICAgIiIiCi0gICAgRGVjb3JhdGUgY29uZmlnIHdpdGggY29udHJvbGxlci1ub2RlIGRldGFpbHMuCi0gICAgIiIiCi0gICAgIwotICAgIGNvbnRyb2xsZXJfbm9kZXMgPSBzZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZSgiY29udHJvbGxlci1ub2RlIikKLSAgICBjb250cm9sbGVyX2lmcyA9ICAgc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoImNvbnRyb2xsZXItaW50ZXJmYWNlIikKLSAgICBjb250cm9sbGVyX2Ruc2VzID0gc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoImNvbnRyb2xsZXItZG9tYWluLW5hbWUtc2VydmVyIikKLSAgICBmaXJld2FsbF9ydWxlcyA9ICAgc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoImZpcmV3YWxsLXJ1bGUiKQotCi0gICAgY29udHJvbGxlcl9hbGlhc19kaWN0ID0gY3JlYXRlX29ial90eXBlX2RpY3QoJ2NvbnRyb2xsZXItYWxpYXMnLCAnY29udHJvbGxlcicpCi0KLSAgICBrZXkgPSBtaS5waygnY29udHJvbGxlci1ub2RlJykKLSAgICBpZiBsZW4od29yZHMpID4gMDoKLSAgICAgICAgaWYgbm90IHdvcmRzWzBdIGluIFtjW2tleV0gZm9yIGMgaW4gY29udHJvbGxlcl9ub2Rlc106Ci0gICAgICAgICAgICByZXR1cm4gc2Ruc2guZXJyb3JfbXNnKCdObyBzdWNoIGNvbnRyb2xsZXIgIiVzIicgJSB3b3Jkc1swXSkKLQotICAgIGZvciBjIGluIGNvbnRyb2xsZXJfbm9kZXM6Ci0gICAgICAgIGlmIGxlbih3b3JkcykgPiAwIGFuZCBjW2tleV0gIT0gd29yZHNbMF06Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGNfY29uZmlnID0gW10KLQotICAgICAgICBpZiBjW2tleV0gaW4gY29udHJvbGxlcl9hbGlhc19kaWN0OgotICAgICAgICAgICAgY19jb25maWcuYXBwZW5kKCcgIGNvbnRyb2xsZXItYWxpYXMgJXNcbicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyX2FsaWFzX2RpY3RbY1trZXldXVswXVsnYWxpYXMnXSkKLQotICAgICAgICAjIG1pLm9ial90eXBlX2NvbmZpZ19maWVsZHMoKSBkb2Vzbid0IHdvcmssIHNpbmNlCi0gICAgICAgICMgdGhlc2UgZmllbGRzIGFyZW4ndCBkaXJlY3RseSBlZGl0YWJsZS4KLSAgICAgICAgZm9yIGZpZWxkIGluIFsnbnRwLXNlcnZlcicsCi0gICAgICAgICAgICAgICAgICAgICAgJ3RpbWUtem9uZScsCi0gICAgICAgICAgICAgICAgICAgICAgJ2RvbWFpbi1sb29rdXBzLWVuYWJsZWQnLAotICAgICAgICAgICAgICAgICAgICAgICdkb21haW4tbmFtZSddOgotICAgICAgICAgICAgZGVmYXVsdF92YWx1ZSA9IG1pLmZpZWxkX2RlZmF1bHRfdmFsdWUoJ2NvbnRyb2xsZXItbm9kZScsIGZpZWxkKQotICAgICAgICAgICAgaWYgZmllbGQgPT0gJ250cC1zZXJ2ZXInIGFuZCBjLmdldChmaWVsZCwgJycpICE9IGRlZmF1bHRfdmFsdWU6Ci0gICAgICAgICAgICAgICAgY19jb25maWcuYXBwZW5kKCcgIG50cCBzZXJ2ZXIgJXNcbicgJSBjLmdldChmaWVsZCwnJykpCi0gICAgICAgICAgICBlbGlmIGZpZWxkID09ICd0aW1lLXpvbmUnIGFuZCBjLmdldChmaWVsZCwgJycpICE9IGRlZmF1bHRfdmFsdWU6Ci0gICAgICAgICAgICAgICAgY19jb25maWcuYXBwZW5kKCcgIGNsb2NrIHRpbWV6b25lICVzXG4nICUgYy5nZXQoZmllbGQsICcnKSkKLSAgICAgICAgICAgIGVsaWYgZmllbGQgPT0gJ2RvbWFpbi1sb29rdXBzLWVuYWJsZWQnIGFuZCBjLmdldChmaWVsZCwgJycpICE9IGRlZmF1bHRfdmFsdWU6Ci0gICAgICAgICAgICAgICAgY19jb25maWcuYXBwZW5kKCcgIGlwIGRvbWFpbiBsb29rdXBcbicpCi0gICAgICAgICAgICBlbGlmIGZpZWxkID09ICdkb21haW4tbmFtZScgYW5kIGMuZ2V0KGZpZWxkLCAnJykgIT0gZGVmYXVsdF92YWx1ZToKLSAgICAgICAgICAgICAgICBjX2NvbmZpZy5hcHBlbmQoJyAgaXAgZG9tYWluIG5hbWUgJXNcbicgJSBjLmdldChmaWVsZCwgJycpKQotCi0gICAgICAgIGRuc19rZXkgPSBtaS5waygnY29udHJvbGxlci1kb21haW4tbmFtZS1zZXJ2ZXInKQotICAgICAgICByZWxhdGVkX2RucyA9IFt4IGZvciB4IGluIGNvbnRyb2xsZXJfZG5zZXMgaWYgeFtkbnNfa2V5XS5zdGFydHN3aXRoKGNba2V5XSldCi0gICAgICAgIGlmIHJlbGF0ZWRfZG5zOgotICAgICAgICAgICAgc29ydGVkX2RucyA9IHNvcnRlZChyZWxhdGVkX2Rucywga2V5PWxhbWJkYSB4OiB4Wyd0aW1lc3RhbXAnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcD1sYW1iZGEgeCx5OiBjbXAoaW50KHgpLCBpbnQoeSkpKQotICAgICAgICAgICAgZm9yIGRucyBpbiBzb3J0ZWRfZG5zOgotICAgICAgICAgICAgICAgIGNfY29uZmlnLmFwcGVuZCgnICBpcCBuYW1lLXNlcnZlciAlc1xuJyAlIGRuc1snaXAnXSkKLQotICAgICAgICBmb3IgZmllbGQgaW4gWydkZWZhdWx0LWdhdGV3YXknLAotICAgICAgICAgICAgICAgICAgICAgICdsb2dnaW5nLWVuYWJsZWQnXToKLSAgICAgICAgICAgIGRlZmF1bHRfdmFsdWUgPSBtaS5maWVsZF9kZWZhdWx0X3ZhbHVlKCdjb250cm9sbGVyLW5vZGUnLCBmaWVsZCkKLSAgICAgICAgICAgIGlmIGZpZWxkID09ICdsb2dnaW5nLWVuYWJsZWQnIGFuZCBjLmdldChmaWVsZCwgJycpICE9IGRlZmF1bHRfdmFsdWU6Ci0gICAgICAgICAgICAgICAgY19jb25maWcuYXBwZW5kKCcgIGxvZ2dpbmcgb25cbicpCi0gICAgICAgICAgICBlbGlmIGZpZWxkID09ICdkZWZhdWx0LWdhdGV3YXknIGFuZCBjLmdldChmaWVsZCwgJycpICE9IGRlZmF1bHRfdmFsdWU6Ci0gICAgICAgICAgICAgICAgY19jb25maWcuYXBwZW5kKCcgIGlwIGRlZmF1bHQtZ2F0ZXdheSAlc1xuJyAlIGMuZ2V0KGZpZWxkLCAnJykpCi0KLSAgICAgICAgZGVmYXVsdF9sb2dnaW5nX3NlcnZlciA9IG1pLmZpZWxkX2RlZmF1bHRfdmFsdWUoJ2NvbnRyb2xsZXItbm9kZScsICdsb2dnaW5nLXNlcnZlcicpCi0gICAgICAgIGRlZmF1bHRfbG9nZ2luZ19sZXZlbCA9IG1pLmZpZWxkX2RlZmF1bHRfdmFsdWUoJ2NvbnRyb2xsZXItbm9kZScsICdsb2dnaW5nLWxldmVsJykKLSAgICAgICAgbG9nZ2luZ19zZXJ2ZXIgPSBjLmdldCgnbG9nZ2luZy1zZXJ2ZXInLCAnJykKLSAgICAgICAgbG9nZ2luZ19sZXZlbCA9IGMuZ2V0KCdsb2dnaW5nLWxldmVsJywgJycpCi0gICAgICAgIGlmICgobG9nZ2luZ19zZXJ2ZXIgIT0gZGVmYXVsdF9sb2dnaW5nX3NlcnZlcikgb3IKLSAgICAgICAgICAgIChsb2dnaW5nX2xldmVsICE9IGRlZmF1bHRfbG9nZ2luZ19sZXZlbCkpOgotICAgICAgICAgICAgY19jb25maWcuYXBwZW5kKCcgIGxvZ2dpbmcgc2VydmVyICVzJyAlIGxvZ2dpbmdfc2VydmVyKQotICAgICAgICAgICAgaWYgbG9nZ2luZ19sZXZlbCAhPSBkZWZhdWx0X2xvZ2dpbmdfbGV2ZWw6Ci0gICAgICAgICAgICAgICAgY19jb25maWcuYXBwZW5kKCcgbGV2ZWwgJXMnICUgbG9nZ2luZ19sZXZlbCkKLSAgICAgICAgICAgIGNfY29uZmlnLmFwcGVuZCgnXG4nKQotCi0gICAgICAgIG9wZW5fcG9ydHMgPSBbMjIsIDY2MzNdCi0gICAgICAgIGNpZl9rZXkgPSBtaS5waygnY29udHJvbGxlci1pbnRlcmZhY2UnKQotICAgICAgICBmcl9rZXkgPSBtaS5waygnZmlyZXdhbGwtcnVsZScpCi0gICAgICAgIGZvciBjaWYgaW4gY29udHJvbGxlcl9pZnM6Ci0gICAgICAgICAgICBpZiBjaWZbY2lmX2tleV0uc3RhcnRzd2l0aChjW2tleV0pOgotICAgICAgICAgICAgICAgIGZpZWxkcyA9IGNpZltjaWZfa2V5XS5zcGxpdCgnfCcpCi0gICAgICAgICAgICAgICAgY2NvbmZpZyA9IFtdCi0gICAgICAgICAgICAgICAgaWYgbGVuKGZpZWxkcykgPiAyOgotICAgICAgICAgICAgICAgICAgICBpZl9uID0gaW50KGZpZWxkc1syXSkgIyBpbnRlcmZhY2UgbnVtYmVyIGlzIHRoZSAzcmQgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgaXBfbW9kZSA9ICdzdGF0aWMnCi0gICAgICAgICAgICAgICAgICAgIGlmICdtb2RlJyBpbiBjaWYgYW5kIGNpZlsnbW9kZSddICE9ICcnOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2lmWydtb2RlJ10gIT0gbWkuZmllbGRfZGVmYXVsdF92YWx1ZSgnY29udHJvbGxlci1pbnRlcmZhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kZScpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnRseSBubyBjaGVja3MgYXJlIG1hZGUgdG8gd2FybgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIHVzZXIgd2hlbiAnZGhjcCcgbW9kZSBoYXMgYmVlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VsZWN0ZWQsIGFuZCBpcC9uZXRtYXNrIGFyZSBzZXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NvbmZpZy5hcHBlbmQoJyAgICBpcCBtb2RlICVzXG4nICUgY2lmWydtb2RlJ10pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBfbW9kZSA9IGNpZlsnbW9kZSddCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGlwX21vZGUgPT0gJ3N0YXRpYycgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgJ2lwJyBpbiBjaWYgYW5kIGNpZlsnaXAnXSAhPSAnJyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAnbmV0bWFzaycgaW4gY2lmIGFuZCBjaWZbJ25ldG1hc2snXSAhPSAnJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjY29uZmlnLmFwcGVuZCgnICAgIGlwIGFkZHJlc3MgJXMgJXNcbicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2lmWydpcCddLCBjaWZbJ25ldG1hc2snXSkpCi0KLSAgICAgICAgICAgICAgICAgICAgcnVsZXNfZm9yX2NpZiA9IFtyIGZvciByIGluIGZpcmV3YWxsX3J1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgclsnaW50ZXJmYWNlJ10gPT0gY2lmW2NpZl9rZXldXQotICAgICAgICAgICAgICAgICAgICAjIGxvb2sgZm9yIGRlbGV0ZWQgZGVmYXVsdCBmaXJld2FsbCBydWxlcyBmb3IgZmlyc3QgaW50ZXJmYWNlCi0gICAgICAgICAgICAgICAgICAgIGlmIGlmX24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfcnVsZV9taXNzaW5nID0gbGlzdChvcGVuX3BvcnRzKQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJ1bGUgaW4gcnVsZXNfZm9yX2NpZjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBydWxlWydwcm90byddID09ICd0Y3AnIGFuZCBydWxlWydwb3J0J10gaW4gZGVmYXVsdF9ydWxlX21pc3Npbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfcnVsZV9taXNzaW5nID0gZmlsdGVyKGxhbWJkYSBwOiBwICE9IHJ1bGVbJ3BvcnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9ydWxlX21pc3NpbmcpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZHIgaW4gZGVmYXVsdF9ydWxlX21pc3Npbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NvbmZpZy5hcHBlbmQoJyAgICBubyBmaXJld2FsbCAlcyB0Y3BcbicgJSBkcikKLQotICAgICAgICAgICAgICAgICAgICBmb3IgcnVsZSBpbiBydWxlc19mb3JfY2lmOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBpZ25vcmUgZGVmYXVsdCBydWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaWZfbiA9PSAwIGFuZCBydWxlWydwcm90byddID09ICd0Y3AnIGFuZCBydWxlWydwb3J0J10gaW4gb3Blbl9wb3J0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZ19jb25maWdfZmlyZXdhbGxfcnVsZShjY29uZmlnLCBydWxlKQotICAgICAgICAgICAgICAgIGlmIGxlbihjY29uZmlnKSA+IDAgb3IgY2lmW2NpZl9rZXldICE9ICdsb2NhbGhvc3R8RXRoZXJuZXR8MCc6Ci0gICAgICAgICAgICAgICAgICAgICMgbWkub2JqX3R5cGVfY29uZmlnX2ZpZWxkcygpIGRvZXNuJ3Qgd29yaywgc2luY2UKLSAgICAgICAgICAgICAgICAgICAgIyB0aGVzZSBmaWVsZHMgYXJlbid0IGRpcmVjdGx5IGVkaXRhYmxlLgotICAgICAgICAgICAgICAgICAgICBjX2NvbmZpZy5hcHBlbmQoJyAgaW50ZXJmYWNlICVzICVzXG4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzWzFdLCBmaWVsZHNbMl0pKQotCi0gICAgICAgICAgICAgICAgICAgIGNfY29uZmlnICs9IGNjb25maWcKLSAgICAgICAgaWYgbGVuKGNfY29uZmlnKSAhPSAwIG9yIGNba2V5XSAhPSAnbG9jYWxob3N0JzoKLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJyFcbmNvbnRyb2xsZXItbm9kZSAlc1xuJyAlIGNba2V5XSkKLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJycuam9pbihjX2NvbmZpZykpCi0KLWNvbnRyb2xsZXJfbm9kZV9ydW5uaW5nX2NvbmZpZ190dXBsZSA9ICgKLSAgICgKLSAgICAgICB7Ci0gICAgICAgICAgICdvcHRpb25hbCcgOiBGYWxzZSwKLSAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3J1bm5pbmctY29uZmlnJywKLSAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnY29udHJvbGxlci1ub2RlJywKLSAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0NvbmZpZ3VyYXRpb24gZm9yIGNvbnRyb2xsZXIgbm9kZXMnLAotICAgICAgICAgICAnZG9jJyAgICAgICAgOiAncnVubmluZy1jb25maWd8c2hvdy1jb250cm9sbGVyLW5vZGUnLAotICAgICAgIH0sCi0gICAgICAgewotICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICd3b3JkJywKLSAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2NvbnRyb2xsZXItbm9kZXxpZCcsCi0gICAgICAgICAgICdwYXJlbnQtZmllbGQnIDogTm9uZSwKLSAgICAgICAgICAgJ2FjdGlvbicgICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgICAgICdvcHRpb25hbCcgICAgIDogVHJ1ZSwKLSAgICAgICB9Ci0gICAgKSwKLSkKLQotcmVnaXN0ZXJfcnVubmluZ19jb25maWcoJ2NvbnRyb2xsZXItbm9kZScsIDIwMDAsIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nX2NvbmZpZ19jb250cm9sbGVyX25vZGUsIGNvbnRyb2xsZXJfbm9kZV9ydW5uaW5nX2NvbmZpZ190dXBsZSkKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBydW5uaW5nX2NvbmZpZ19zd2l0Y2goY29udGV4dCwgY29uZmlnLCB3b3Jkcyk6Ci0gICAgIiIiCi0gICAgU3dpdGNoIHJ1bm5pbmctY29uZmlnCi0gICAgIiIiCi0KLSAgICBzd2l0Y2hlcyA9ICAgICAgICAgICAgICAgICBzZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZSgic3dpdGNoLWNvbmZpZyIpCi0gICAgZmxvd190YWJsZV9lbnRyaWVzID0gICAgICAgc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoJ2Zsb3ctZW50cnknKQotCi0gICAgc3dpdGNoX2ludGVyZmFjZV9jb25maWdzX2RpY3QgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgnc3dpdGNoLWludGVyZmFjZS1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcpCi0KLSAgICBzd2l0Y2hfaW50ZXJmYWNlX2FsaWFzX2RpY3QgPSBjcmVhdGVfb2JqX3R5cGVfZGljdCgnc3dpdGNoLWludGVyZmFjZS1hbGlhcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaC1pbnRlcmZhY2UnKQotICAgIGtleSA9IG1pLnBrKCdzd2l0Y2gtY29uZmlnJykKLSAgICBpZiBsZW4od29yZHMpID4gMDoKLSAgICAgICAgaWYgbm90IHdvcmRzWzBdIGluIFtzW2tleV0gZm9yIHMgaW4gc3dpdGNoZXNdOgotICAgICAgICAgICAgcmV0dXJuIHNkbnNoLmVycm9yX21zZygnTm8gc3VjaCBzd2l0Y2ggIiVzIicgJSB3b3Jkc1swXSkKLQotICAgIGZvciBzIGluIHN3aXRjaGVzOgotICAgICAgICAjCi0gICAgICAgICMKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA+IDAgYW5kIHNba2V5XSAhPSB3b3Jkc1swXToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgc3dfY29uZmlnID0gW10KLSAgICAgICAgc3dfY29uZmlnLmFwcGVuZCgnIVxuc3dpdGNoICVzXG4nICUgc1trZXldKQotICAgICAgICAjCi0gICAgICAgICMgYWRkIGFueSBhbGlhcyBmb3IgdGhpcyBpZCBpZiBpdCBleGlzdHMKLSAgICAgICAgcnVubmluZ19jb25maWdfaW5jbHVkZV9hbGlhcyhzd19jb25maWcsIDEsICdzd2l0Y2gtY29uZmlnJywgc1trZXldKQotCi0gICAgICAgIGlmIG1pLm5vdF9kZWZhdWx0X3ZhbHVlKCdzd2l0Y2gtY29uZmlnJywgJ2NvcmUtc3dpdGNoJywgcy5nZXQoJ2NvcmUtc3dpdGNoJywnJykpOgotICAgICAgICAgICAgc3dfY29uZmlnLmFwcGVuZCgiICBjb3JlLXN3aXRjaFxuIikgIyBkZWZhdWx0IGlzIG5vdCBlbmFibGVkCi0KLSAgICAgICAgaWYgbWkubm90X2RlZmF1bHRfdmFsdWUoJ3N3aXRjaC1jb25maWcnLCAndHVubmVsLXRlcm1pbmF0aW9uJywgcy5nZXQoJ3R1bm5lbC10ZXJtaW5hdGlvbicsJycpKToKLSAgICAgICAgICAgIHN3X2NvbmZpZy5hcHBlbmQoIiAgdHVubmVsIHRlcm1pbmF0aW9uICVzXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1sndHVubmVsLXRlcm1pbmF0aW9uJ10pCi0KLSAgICAgICAgIwotICAgICAgICAjIExvb2sgZm9yIG1hdGNoaW5nIHN3aXRjaCBpbnRlcmZhY2UgY29uZmlnJ3MKLSAgICAgICAgc2ljX2tleSA9IG1pLnBrKCdzd2l0Y2gtaW50ZXJmYWNlLWNvbmZpZycpCi0gICAgICAgIGZvciBzaWMgaW4gc3dpdGNoX2ludGVyZmFjZV9jb25maWdzX2RpY3QuZ2V0KHNba2V5XSwgW10pOgotICAgICAgICAgICAgZmllbGRzID0gc2ljW3NpY19rZXldLnNwbGl0KCd8JykKLSAgICAgICAgICAgIGlmIGxlbihmaWVsZHMpID4gMToKLSAgICAgICAgICAgICAgICBzaWNfY29uZmlnID0gW10KLSAgICAgICAgICAgICAgICAjIFhYWCBwZXJoYXBzIG1pLm9ial90eXBlX2NvbmZpZ19maWVsZHMoKSBoZXJlPwotICAgICAgICAgICAgICAgIHJ1bm5pbmdfY29uZmlnX2luY2x1ZGVfZmllbGQoc2ljX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzd2l0Y2gtaW50ZXJmYWNlLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWNbJ21vZGUnXSwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaHBvcnQgJykKLQotICAgICAgICAgICAgICAgIGlmIHNpY1tzaWNfa2V5XSBpbiBzd2l0Y2hfaW50ZXJmYWNlX2FsaWFzX2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgIHNpY19jb25maWcuYXBwZW5kKCcgICAgaW50ZXJmYWNlLWFsaWFzICVzXG4nICUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hfaW50ZXJmYWNlX2FsaWFzX2RpY3Rbc2ljW3NpY19rZXldXVswXVsnaWQnXSkKLQotICAgICAgICAgICAgICAgIGlmIGxlbihzaWNfY29uZmlnKSA+IDA6Ci0gICAgICAgICAgICAgICAgICAgIHN3X2NvbmZpZy5hcHBlbmQoJyAgaW50ZXJmYWNlICVzXG4nICUgZmllbGRzWzFdKQotICAgICAgICAgICAgICAgICAgICBzd19jb25maWcgKz0gc2ljX2NvbmZpZwotCi0gICAgICAgIGZvciBmdGUgaW4gZmxvd190YWJsZV9lbnRyaWVzOiAjCi0gICAgICAgICAgICAjIGhvdyB0byBoYW5kbGUgZGVmYXVsdHM/Ci0gICAgICAgICAgICBpZiBmdGVbJ3N3aXRjaCddID09IHNba2V5XToKLSAgICAgICAgICAgICAgICBzd19jb25maWcuYXBwZW5kKCcgIGZsb3ctZW50cnkgJXNcbicgJSBmdGVbJ25hbWUnXSkKLSAgICAgICAgICAgICAgICBmaWVsZHNfdG9fcHJpbnQgPSBtaS5jbGlfbW9kZWxfaW5mby5nZXRfZmllbGRzX3RvX3ByaW50KCdmbG93LWVudHJ5JykKLSAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWVsZHNfdG9fcHJpbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHYgPSBmdGUuZ2V0KGYsICIiKQotICAgICAgICAgICAgICAgICAgICBpZiB2ICE9ICIiIGFuZCBmICE9ICduYW1lJyBhbmQgZiAhPSAnc3dpdGNoJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkX2luZm8gPSBtaS5jbGlfbW9kZWxfaW5mby5nZXRfZmllbGRfaW5mbygnZmxvdy1lbnRyeScsIGYpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiB2ID09IGZpZWxkX2luZm8uZ2V0KCdkZWZhdWx0JywgTm9uZSkgYW5kIGYgIT0gJ2FjdGl2ZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAjIGxpdGVyYWxseSwgZG9uJ3QgcHJpbnQgdGhpcyBvbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dfY29uZmlnLmFwcGVuZCgnICAgICVzICVzXG4nICUgKGYsIHYpKQotICAgICAgICBjb25maWcgKz0gc3dfY29uZmlnCi0KLXN3aXRjaF9ydW5uaW5nX2NvbmZpZ190dXBsZSA9ICgKLSAgICAoCi0gICAgICAgewotICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBGYWxzZSwKLSAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3J1bm5pbmctY29uZmlnJywKLSAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnc3dpdGNoJywKLSAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0NvbmZpZ3VyYXRpb24gZm9yIHN3aXRjaGVzJywKLSAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3J1bm5pbmctY29uZmlnfHNob3ctc3dpdGNoJywKLSAgICAgICB9LAotICAgICAgIHsKLSAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnd29yZCcsCi0gICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2RwaWQnLAotICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICdzd2l0Y2h8ZHBpZCcsCi0gICAgICAgICAgICdwYXJlbnQtZmllbGQnIDogTm9uZSwKLSAgICAgICAgICAgJ2FjdGlvbicgICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLAotICAgICAgIH0KLSAgICApLAotKQotCi1yZWdpc3Rlcl9ydW5uaW5nX2NvbmZpZygnc3dpdGNoJywgMzAwMCwgTm9uZSwgcnVubmluZ19jb25maWdfc3dpdGNoLCBzd2l0Y2hfcnVubmluZ19jb25maWdfdHVwbGUpCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgcnVubmluZ19jb25maWdfaG9zdChjb250ZXh0LCBjb25maWcsIHdvcmRzKToKLSAgICAiIiIKLSAgICBBZGQgaG9zdCBkZXRhaWxzLCBpbmNsdWRpbmcgdGFncy4KLSAgICAiIiIKLQotICAgICMgV2hlbiB0aGVyZSBhcmUgbm8gdGFncywgYW5kIG5vIGhvc3QtYWxpYXNlcywgdGhlIGhvc3RzIGRvbid0IG5lZWQKLSAgICAjIHRvIGJlIHJlYWQuICBJZiBpdCB3ZXJlIHBvc3NpYmxlIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGVudHJpZXMKLSAgICAjIHdpdGhvdXQgcXVlcnlpbmcsIHRoZW4gaXQgd291bGQgbWFrZSBzZW5zZSB0byBjb25zaWRlciBlbnVtZXJhdGluZwotICAgICMgdGhlIGhvc3QtYWxpYXNlcyBhbmQgdGFncyBpZiB0aGV5IHdlcmUgc3Vic3RhbnRpYWxseSBzbWFsbGVyIHRoYW4KLSAgICAjIHRoZSBudW1iZXIgb2YgaG9zdHMuCi0gICAgIwotCi0gICAgaG9zdF9hbGlhc19kaWN0ID0gY3JlYXRlX29ial90eXBlX2RpY3QoImhvc3QtYWxpYXMiLCAnaG9zdCcpCi0gICAgaG9zdF9zZWN1cml0eV9pcCA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KCJob3N0LXNlY3VyaXR5LWlwLWFkZHJlc3MiLCAnaG9zdCcpCi0gICAgaG9zdF9zZWN1cml0eV9hcCA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KCJob3N0LXNlY3VyaXR5LWF0dGFjaG1lbnQtcG9pbnQiLCAnaG9zdCcpCi0gICAgc3dpdGNoX2NvbmZpZyA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KCdzd2l0Y2gtaW50ZXJmYWNlLWNvbmZpZycsICdpZCcpCi0KLSAgICAjIE5vdGljZSB0aGF0IG9ubHkgaG9zdHMgY29uZmlndXJlZCBhcmUgZW51bWVyYXRlZCBoZXJlLCBzaW5jZQotICAgICMgZGlzY292ZXJlZCBob3N0cyBjYW4ndCBoYXZlIGNvbmZpZ3VyYXRpb24uICAgQWxsIGNvbmZpZ3VyYXRpb24KLSAgICAjIGlzIGF0dGFjaGVkIHRvIGNvbmZpZ3VyZWQgaG9zdHMsIHdoaWNoIGFyZSBqb2luZWQgYWZ0ZXIgZGlzY292ZXJlZAotICAgICMgaG9zdHMgZm9yIHNob3cgY29tbWFuZHMuCi0gICAgaG9zdHMgPSBzZG5zaC5nZXRfdGFibGVfZnJvbV9zdG9yZSgiaG9zdC1jb25maWciKQotICAgIGtleSA9IG1pLnBrKCdob3N0LWNvbmZpZycpCi0KLSAgICBpZiBsZW4od29yZHMpID4gMDoKLSAgICAgICAgaWYgbm90IHdvcmRzWzBdIGluIFtoW2tleV0gZm9yIGggaW4gaG9zdHNdOgotICAgICAgICAgICAgcmV0dXJuIHNkbnNoLmVycm9yX21zZygnTm8gc3VjaCBob3N0ICIlcyInICUgd29yZHNbMF0pCi0KLSAgICBmb3IgaCBpbiBob3N0czoKLSAgICAgICAgaWYgbGVuKHdvcmRzKSA+IDAgYW5kIHdvcmRzWzBdICE9IGhba2V5XToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgIyBob3N0X2NvbmZpZyBob2xkcyAnY29uZmlnJyBvbmx5IGZvciBob3N0LgotICAgICAgICBob3N0X2NvbmZpZyA9IFtdCi0gICAgICAgIGFfcyA9ICcnCi0gICAgICAgIGlmIGguZ2V0KCdhZGRyZXNzLXNwYWNlJywnJykgIT0gJ2RlZmF1bHQnOgotICAgICAgICAgICAgYV9zID0gJ2FkZHJlc3Mtc3BhY2UgJXMgJyAlIGhbJ2FkZHJlc3Mtc3BhY2UnXQotICAgICAgICB2bGFuID0gJycKLSAgICAgICAgaWYgaC5nZXQoJ3ZsYW4nLCAnJykgIT0gJyc6Ci0gICAgICAgICAgICB2bGFuID0gJ3ZsYW4gJXMgJyAlIGhbJ3ZsYW4nXQotICAgICAgICBob3N0X2NvbmZpZy5hcHBlbmQoJyFcbmhvc3QgJXMlcyVzXG4nICUgKGFfcywgdmxhbiwgaFsnbWFjJ10pKQotICAgICAgICAjCi0gICAgICAgICMgYWRkIHRoZSBob3N0IGFsaWFzIGZvciB0aGlzIGlkIGlmIGl0IGV4aXN0cwotICAgICAgICBpZiBoW2tleV0gaW4gaG9zdF9hbGlhc19kaWN0OgotICAgICAgICAgICAgaG9zdF9jb25maWcuYXBwZW5kKCIgIGhvc3QtYWxpYXMgJXNcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RfYWxpYXNfZGljdFtoW2tleV1dWzBdWydpZCddKQotCi0gICAgICAgICMKLSAgICAgICAgIyBjaGVjayBmb3Igc2VjdXJpdHkgcG9saWNpZXMKLSAgICAgICAgaWYgaFtrZXldIGluIGhvc3Rfc2VjdXJpdHlfaXA6Ci0gICAgICAgICAgICBmb3IgaXAgaW4gaG9zdF9zZWN1cml0eV9pcFtoW2tleV1dOgotICAgICAgICAgICAgICAgIGhvc3RfY29uZmlnLmFwcGVuZCgiICBzZWN1cml0eSBwb2xpY3kgYmluZCBpcC1hZGRyZXNzICVzXG4iICUgaXBbJ2lwLWFkZHJlc3MnXSkKLQotICAgICAgICBpZiBoW2tleV0gaW4gaG9zdF9zZWN1cml0eV9hcDoKLSAgICAgICAgICAgIGZvciBhcCBpbiBob3N0X3NlY3VyaXR5X2FwW2hba2V5XV06Ci0gICAgICAgICAgICAgICAgaG9zdF9jb25maWcuYXBwZW5kKCIgIHNlY3VyaXR5IHBvbGljeSBiaW5kIGF0dGFjaG1lbnQtcG9pbnQgJXMgJXNcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwLmdldCgnZHBpZCcsICdhbGwnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWYucXVvdGVfc3RyaW5nKGFwWydpZi1uYW1lLXJlZ2V4J10pKSkKLQotICAgICAgICBjb25maWcgKz0gaG9zdF9jb25maWcKLQotCi1ob3N0X3J1bm5pbmdfY29uZmlnX3R1cGxlID0gKAotICAgICgKLSAgICAgICB7Ci0gICAgICAgICAgICdvcHRpb25hbCcgICA6IEZhbHNlLAotICAgICAgICAgICAnZmllbGQnICAgICAgOiAncnVubmluZy1jb25maWcnLAotICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICd2YWx1ZXMnICAgICA6ICdob3N0JywKLSAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0NvbmZpZ3VyYXRpb24gZm9yIGhvc3RzJywKLSAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3J1bm5pbmctY29uZmlnfHNob3ctaG9zdCcsCi0gICAgICAgfSwKLSAgICAgICB7Ci0gICAgICAgICAgICAnZmllbGQnICAgICAgICA6ICd3b3JkJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICAgIDogJ2hvc3QnLAotICAgICAgICAgICAgJ2NvbXBsZXRpb24nICAgOiAnY29tcGxldGUtZnJvbS1hbm90aGVyJywKLSAgICAgICAgICAgICdvdGhlcicgICAgICAgIDogJ2hvc3R8bWFjJywKLSAgICAgICAgICAgICdwYXJlbnQtZmllbGQnIDogTm9uZSwKLSAgICAgICAgICAgICdkYXRhLWhhbmRsZXInIDogJ2FsaWFzLXRvLXZhbHVlJywKLSAgICAgICAgICAgICdhY3Rpb24nICAgICAgIDogJ2xlZ2FjeS1jbGknLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLAotICAgICAgIH0KLSAgICApLAotKQotCi1yZWdpc3Rlcl9ydW5uaW5nX2NvbmZpZygnaG9zdCcsIDUwMDAsIE5vbmUsIHJ1bm5pbmdfY29uZmlnX2hvc3QsIGhvc3RfcnVubmluZ19jb25maWdfdHVwbGUpCi0KLWRlZiBydW5uaW5nX2NvbmZpZ192bnMoY29udGV4dCwgY29uZmlnLCB3b3Jkcyk6Ci0gICAgIiIiCi0gICAgQWRkIHRoZSBWTlMgY29uZmlndXJhdGlvbiBkZXRpbHMKLSAgICB0aGlzIGNvbW1hbmQgd2lsbCBvbmx5IGdlbmVyYXRlIHZucyB1bmRlciBkZWZhdWx0IHRlbmFudCAKLSAgICBvdGhlciB2bnNzIHdpbGwgYmUgZ2VuZXJhdGVkIHVuZGVyIHJ1bm5pbmdfY29uZmlnX3RlbmFudAotICAgICIiIgotICAgICNnZW5lcmF0ZSBzcGVjaWZpYyB2bnMgY29uZmlndXJhdGlvbiwgdXNlZCBpbiB0ZW5hbnQgY29uZmlnIGdlbmVyYXRpb24gdG9vCi0gICAgaWYgbGVuKHdvcmRzKSA+IDA6Ci0gICAgICAgICMgWFhYIHNob3VsZCB0aGUgdm5zLWRlZmluaWl0b24gYWxzbyBiZSBpbmNsdWRlZD8KLSAgICAgICAgc2Ruc2guc2hvd192bnNfZGVmaW5pdGlvbl9ydW5uaW5nX2NvbmZpZyhjb25maWcsIHdvcmRzWzBdKQotICAgICAgICBjb25maWcgKz0gc2Ruc2guc2hvd192bnNfcnVubmluZ19jb25maWcod29yZHNbMF0pCi0gICAgICAgIHJldHVybgotCi0gICAgI2dlbmVyYXRlIGFsbCBWTlNzIGZvciBkZWZhdWx0IHRlbmFudCwgdGhpcyBpcyB1c2VkIGJhY2t3YXJkIGNvbXBhdGlibGUgYXMgInNob3cgcnVubmluZy1jb25maWcgdm5zIgotICAgIHRyeToKLSAgICAgICAgdm5zX2RlZiA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKCd2bnMtZGVmaW5pdGlvbicpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgdm5zX2RlZiA9IFtdCi0KLSAgICB0cnk6Ci0gICAgICAgIHZuc19ydWxlcyA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KCd2bnMtaW50ZXJmYWNlLXJ1bGUnLCAndm5zJykKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICB2bnNfcnVsZXMgPSB7fQotCi0gICAgdHJ5OgotICAgICAgICB2bnNfYWNscyA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KCd2bnMtYWNjZXNzLWxpc3QnLCAndm5zJykKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICB2bnNfYWNscyA9IHt9Ci0KLSAgICB0cnk6Ci0gICAgICAgIHZuc19hY2xfZW50cmllcyA9IGNyZWF0ZV9vYmpfdHlwZV9kaWN0KCd2bnMtYWNjZXNzLWxpc3QtZW50cnknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndm5zLWFjY2Vzcy1saXN0JykKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICB2bnNfYWNsX2VudHJpZXMgPSB7fQotCi0gICAgdHJ5OgotICAgICAgICB2bnNfaW50ZXJmYWNlID0gY3JlYXRlX29ial90eXBlX2RpY3QoJ3Zucy1pbnRlcmZhY2UtY29uZmlnJywgJ3ZucycpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgdm5zX2ludGVyZmFjZSA9IHt9Ci0KLSAgICB0cnk6Ci0gICAgICAgIHZuc19pbnRlcmZhY2VfYWNsID0gY3JlYXRlX29ial90eXBlX2RpY3QoJ3Zucy1pbnRlcmZhY2UtYWNjZXNzLWxpc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2bnMtaW50ZXJmYWNlJykKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICB2bnNfaW50ZXJmYWNlX2FjbCA9IHt9Ci0gICAgICAgIAotICAgICMKLSAgICAjIHZucy1kZWZpbml0aW9uCi0gICAgZm9yIHZucyBpbiB2bnNfZGVmOgotICAgICAgICBpZiB2bnNbJ3RlbmFudCddPT0nZGVmYXVsdCc6Ci0gICAgICAgICAgICB2bnNfbmFtZSA9IHZuc1snaWQnXQotICAgICAgICAgICAgY29uZmlnLmFwcGVuZCgnIVxudm5zLWRlZmluaXRpb24gJXNcbicgJSB2bnNbJ3Zuc25hbWUnXSkKLSAgICAgICAgICAgIHJ1bm5pbmdfY29uZmlnX3Zuc19kZXRhaWxzKGNvbmZpZywgdm5zKQotICAgICAgICAgICAgaWYgdm5zX25hbWUgaW4gdm5zX3J1bGVzOgotICAgICAgICAgICAgICAgIHJ1bm5pbmdfY29uZmlnX3Zuc19pZl9ydWxlKGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZuc19ydWxlc1t2bnNfbmFtZV0saW5kZW50PTEpCi0gICAgIwotICAgICMgdm5zCi0gICAgYWNsX2tleSA9IG1pLnBrKCd2bnMtYWNjZXNzLWxpc3QnKQotICAgIGlmX2tleSA9IG1pLnBrKCd2bnMtaW50ZXJmYWNlLWNvbmZpZycpCi0KLSAgICBmb3Igdm5zIGluIHZuc19kZWY6Ci0gICAgICAgIGlmIHZuc1sndGVuYW50J10gPT0nZGVmYXVsdCc6Ci0gICAgICAgICAgICB2bnNfbmFtZSA9IHZuc1snaWQnXQotICAgICAgICAgICAgdm5zX2NvbmZpZyA9IFtdCi0gICAgCi0gICAgICAgICAgICBmb3IgYWNsIGluIHZuc19hY2xzLmdldCh2bnNfbmFtZSwgW10pOgotICAgICAgICAgICAgICAgIGFjbF9pZCA9IGFjbFthY2xfa2V5XSAgICAgICAjIGNvbXBvdW5kIHByaW1hcnkga2V5IHZhbHVlCi0gICAgICAgICAgICAgICAgcnVubmluZ19jb25maWdfdm5zX2FjbCh2bnNfY29uZmlnLCB2bnNfbmFtZSwgYWNsLCB2bnNfYWNsX2VudHJpZXNbYWNsX2lkXSxpbmRlbnQ9MSkKLSAgICAKLSAgICAgICAgICAgIGZvciB2bnNfaWYgaW4gdm5zX2ludGVyZmFjZS5nZXQodm5zX25hbWUsIFtdKToKLSAgICAgICAgICAgICAgICB2bnNfaWZfYWNsX2NvbmZpZyA9IFtdCi0gICAgICAgICAgICAgICAgdm5zX2lmX2lkID0gdm5zX2lmW2lmX2tleV0gICMgY29tcG91bmQgcHJpbWFyeSBrZXkgdmFsdWUKLSAgICAgICAgICAgICAgICBpZiB2bnNfaWZfaWQgaW4gdm5zX2ludGVyZmFjZV9hY2w6Ci0gICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfY29uZmlnX3Zuc19pZl9hbmRfYWNjZXNzX2dyb3VwKHZuc19pZl9hY2xfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bnNfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5zX2lmWydpbnRlcmZhY2UnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5zX2ludGVyZmFjZV9hY2xbdm5zX2lmX2lkXSxpbmRlbnQ9MSkKLSAgICAgICAgICAgICAgICBpZiB2bnNfaWZfYWNsX2NvbmZpZzoKLSAgICAgICAgICAgICAgICAgICAgdm5zX2NvbmZpZy5hcHBlbmQoIiAgaW50ZXJmYWNlICVzXG4iICUgdm5zX2lmWydpbnRlcmZhY2UnXSkKLSAgICAgICAgICAgICAgICAgICAgdm5zX2NvbmZpZyArPSB2bnNfaWZfYWNsX2NvbmZpZwotICAgIAotICAgICAgICAgICAgaWYgbGVuKHZuc19jb25maWcpID4gMDoKLSAgICAgICAgICAgICAgICBjb25maWcuYXBwZW5kKCchXG52bnMgJXNcbicgJSB2bnNbJ3Zuc25hbWUnXSkKLSAgICAgICAgICAgICAgICBjb25maWcgKz0gdm5zX2NvbmZpZwotICAgICAgICAgICAgICAgIHZuc19jb25maWcgPSBbXQotCi0KLWRlZiBpc192bnNfZW5hYmxlZChjb250ZXh0KToKLSAgICByZXR1cm4gY29udGV4dC5uZXR2aXJ0X2ZlYXR1cmVfZW5hYmxlZCgpCi0KLXZuc19ydW5uaW5nX2NvbmZpZ190dXBsZSA9ICgKLSAgICAoCi0gICAgICAgIHsKLSAgICAgICAgICAgICdvcHRpb25hbCcgICA6IEZhbHNlLAotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgIDogJ3J1bm5pbmctY29uZmlnJywKLSAgICAgICAgICAgICd0eXBlJyAgICAgICA6ICdlbnVtJywKLSAgICAgICAgICAgICd2YWx1ZXMnICAgICA6ICd2bnMnLAotICAgICAgICAgICAgJ3Nob3J0LWhlbHAnIDogJ0NvbmZpZ3VyYXRpb24gZm9yIG5ldHdvcmsgdmlydHVhbGl6YXRpb24nLAotICAgICAgICAgICAgJ2RvYycgICAgICAgIDogJ3J1bm5pbmctY29uZmlnfHNob3ctdm5zJywKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgJ2ZpZWxkJyAgICAgICAgOiAnd29yZCcsCi0gICAgICAgICAgICAndHlwZScgICAgICAgICA6ICdpZGVudGlmaWVyJywKLSAgICAgICAgICAgICdjb21wbGV0aW9uJyAgIDogJ2NvbXBsZXRlLWZyb20tYW5vdGhlcicsCi0gICAgICAgICAgICAnb3RoZXInICAgICAgICA6ICd2bnMtZGVmaW5pdGlvbnx2bnNuYW1lJywKLSAgICAgICAgICAgICdwYXJlbnQtZmllbGQnIDogTm9uZSwKLSAgICAgICAgICAgICdhY3Rpb24nICAgICAgIDogJ2xlZ2FjeS1jbGknLAotICAgICAgICAgICAgJ29wdGlvbmFsJyAgICAgOiBUcnVlLAotICAgICAgICB9Ci0gICAgKSwKLSkKLQotcmVnaXN0ZXJfcnVubmluZ19jb25maWcoJ3ZucycsIDcwMDAsIGlzX3Zuc19lbmFibGVkLCBydW5uaW5nX2NvbmZpZ192bnMsIHZuc19ydW5uaW5nX2NvbmZpZ190dXBsZSkKLQotI3RlbmFudCBydW5uaW5nIGNvbmZpZwotZGVmIHJ1bm5pbmdfY29uZmlnX3RlbmFudChjb250ZXh0LCBjb25maWcsIHdvcmRzKToKLQotICAgIGlmIGxlbih3b3JkcykgPiAwOgotICAgICAgICAjIFhYWCBzaG91bGQgdGhlIHZucy1kZWZpbmlpdG9uIGFsc28gYmUgaW5jbHVkZWQ/Ci0gICAgICAgIHNkbnNoLnNob3dfdGVuYW50X3J1bm5pbmdfY29uZmlnKGNvbmZpZywgd29yZHNbMF0pCi0gICAgICAgIHJldHVybgotCi0gICAgdHJ5OgotICAgICAgICB0ZW5hbnRzID0gc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoJ3RlbmFudCcpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgdGVuYW50cyA9IFtdCi0KLSAgICBmb3IgdGVuYW50IGluIHRlbmFudHM6Ci0gICAgICAgIHNkbnNoLnNob3dfdGVuYW50X3J1bm5pbmdfY29uZmlnKGNvbmZpZywgdGVuYW50WyduYW1lJ10pCi0KLQotdGVuYW50X3J1bm5pbmdfY29uZmlnX3R1cGxlID0gKAotICAgICgKLSAgICAgICAgewotICAgICAgICAgICAgJ29wdGlvbmFsJyAgIDogRmFsc2UsCi0gICAgICAgICAgICAnZmllbGQnICAgICAgOiAncnVubmluZy1jb25maWcnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogJ2VudW0nLAotICAgICAgICAgICAgJ3ZhbHVlcycgICAgIDogJ3RlbmFudCcsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnQ29uZmlndXJhdGlvbiBmb3IgVGVuYW50JywKLSAgICAgICAgICAgICdkb2MnICAgICAgICA6ICdydW5uaW5nLWNvbmZpZ3xzaG93LXRlbmFudCcsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICdmaWVsZCcgICAgICAgIDogJ3dvcmQnLAotICAgICAgICAgICAgJ3R5cGUnICAgICAgICAgOiAnaWRlbnRpZmllcicsCi0gICAgICAgICAgICAnY29tcGxldGlvbicgICA6ICdjb21wbGV0ZS1mcm9tLWFub3RoZXInLAotICAgICAgICAgICAgJ290aGVyJyAgICAgICAgOiAndGVuYW50fG5hbWUnLAotICAgICAgICAgICAgJ3BhcmVudC1maWVsZCcgOiBOb25lLAotICAgICAgICAgICAgJ2FjdGlvbicgICAgICAgOiAnbGVnYWN5LWNsaScsCi0gICAgICAgICAgICAnb3B0aW9uYWwnICAgICA6IFRydWUsCi0gICAgICAgIH0KLSAgICApLAotKQotCi1yZWdpc3Rlcl9ydW5uaW5nX2NvbmZpZygndGVuYW50JywgNzAwMCwgaXNfdm5zX2VuYWJsZWQsIHJ1bm5pbmdfY29uZmlnX3RlbmFudCwgdGVuYW50X3J1bm5pbmdfY29uZmlnX3R1cGxlKQotCi1kZWYgcnVubmluZ19jb25maWdfc3RhdGljX2FycChjb250ZXh0LCBjb25maWcsIHdvcmRzKToKLQotICAgIHRyeToKLSAgICAgICAgc3RhdGljQVJQcyA9IHNkbnNoLmdldF90YWJsZV9mcm9tX3N0b3JlKCdzdGF0aWMtYXJwJykKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICBzdGF0aWNBUlBzID0gW10KLSAgICBmaXJzdD1UcnVlCi0gICAgZm9yIGFycCBpbiBzdGF0aWNBUlBzOgotICAgICAgICBpZiBmaXJzdDoKLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJyFcbmFycCAlcyAlc1xuJyAlIChhcnBbJ2lwJ10sIGFycFsnbWFjJ10pKQotICAgICAgICAgICAgZmlyc3Q9RmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbmZpZy5hcHBlbmQoJ2FycCAlcyAlc1xuJyAlIChhcnBbJ2lwJ10sIGFycFsnbWFjJ10pKQotCi1zdGF0aWNBUlBfcnVubmluZ19jb25maWdfdHVwbGUgPSAoCi0gICAgKAotICAgICAgICB7Ci0gICAgICAgICAgICAnb3B0aW9uYWwnICAgOiBGYWxzZSwKLSAgICAgICAgICAgICdmaWVsZCcgICAgICA6ICdydW5uaW5nLWNvbmZpZycsCi0gICAgICAgICAgICAndHlwZScgICAgICAgOiAnZW51bScsCi0gICAgICAgICAgICAndmFsdWVzJyAgICAgOiAnc3RhdGljLWFycCcsCi0gICAgICAgICAgICAnc2hvcnQtaGVscCcgOiAnQ29uZmlndXJhdGlvbiBmb3Igc3RhdGljIEFSUCBlbnRyeScsCi0gICAgICAgICAgICAnZG9jJyAgICAgICAgOiAncnVubmluZy1jb25maWd8c2hvdy1zdGF0aWMtYXJwJywKLSAgICAgICAgfSwKLSAgICApLAotKQotCi1yZWdpc3Rlcl9ydW5uaW5nX2NvbmZpZygnc3RhdGljLWFycCcsIDYwMDAsIE5vbmUsIHJ1bm5pbmdfY29uZmlnX3N0YXRpY19hcnAsIHN0YXRpY0FSUF9ydW5uaW5nX2NvbmZpZ190dXBsZSkKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBpbXBsZW1lbnRfc2hvd19ydW5uaW5nX2NvbmZpZyh3b3Jkcyk6Ci0gICAgIiIiCi0gICAgTWFuYWdlciBmb3IgdGhlICdzaG93IHJ1bm5pbmctY29uZmlnJyBjb21tYW5kLCB3aGljaCBjYWxscyB0aGUKLSAgICBzcGVjaWZpYyBkZXRhaWwgZnVuY3Rpb25zIGZvciBhbnkgb2YgdGhlIHBhcmFtZXRlcnMuCi0gICAgIiIiCi0KLSAgICAjIExPT0shIGhhcmR3aXJlZCAtIG5lZWQgdG8gdXNlIHRoZSBvYmpfdHlwZV9pbmZvIGFuZCB0aGUgZmllbGRfbGlzdAotICAgICMgTE9PSyEgaG93IGFyZSB0aGVzZSBzb3J0ZWQ/Ci0gICAgY29uZmlnID0gW10KLSAgICBpZiBsZW4od29yZHMpID4gMDoKLSAgICAgICAgIyBwaWNrIHRoZSB3b3JkCi0gICAgICAgIGNob2ljZSA9IHV0aWYuZnVsbF93b3JkX2Zyb21fY2hvaWNlcyh3b3Jkc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5X2l0ZW1zX2VuYWJsZWQoKSkKLSAgICAgICAgaWYgc2Ruc2gubmV0dmlydF9mZWF0dXJlX2VuYWJsZWQoKSBhbmQgJ3Zucycuc3RhcnRzd2l0aCh3b3Jkc1swXSk6Ci0gICAgICAgICAgICBpZiBjaG9pY2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNkbnNoLmVycm9yX21zZygiJXMgYW5kICVzIGFtYmlndW91cyIgJSAoY2hvaWNlLCAndm5zJykpCi0gICAgICAgICAgICBjaG9pY2UgPSAndm5zJwotCi0gICAgICAgIGlmIGNob2ljZTogCi0gICAgICAgICAgICBwZXJmb3JtX3J1bm5pbmdfY29uZmlnKGNob2ljZSwgc2Ruc2gsIGNvbmZpZywgd29yZHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2Ruc2guZXJyb3JfbXNnKCJ1bmtub3duIHJ1bm5pbmctY29uZmlnIGl0ZW06ICVzIiAlIHdvcmRzWzBdKQotICAgICAgICAjIGNvbmZpZ1s6LTFdIHJlbW92ZXMgdGhlIGxhc3QgdHJhaWxpbmcgbmV3bGluZQotICAgICAgICByZXR1cm4gJycuam9pbihjb25maWcpWzotMV0KLSAgICBlbHNlOgotICAgICAgICAjIENyZWF0ZSB0aGUgb3JkZXIgYmFzZWQgb24gdGhlIHJlZ2lzdHJhdGlvbiB2YWx1ZQotICAgICAgICBydW5uaW5nX2NvbmZpZ19vcmRlciA9IHNvcnRlZChyZWdpc3RyeV9pdGVtc19lbmFibGVkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1sYW1iZGEgaXRlbTogcnVubmluZ19jb25maWdfcmVnaXN0cnlbaXRlbV1bJ29yZGVyJ10pCi0gICAgICAgIGV4Y2x1ZGVfbGlzdD1bJ3ZucyddCi0gICAgICAgIGZvciByYyBpbiBydW5uaW5nX2NvbmZpZ19vcmRlcjoKLSAgICAgICAgICAgIGlmIHJjIG5vdCBpbiBleGNsdWRlX2xpc3Q6Ci0gICAgICAgICAgICAgICAgcGVyZm9ybV9ydW5uaW5nX2NvbmZpZyhyYywgc2Ruc2gsIGNvbmZpZywgd29yZHMpCi0KLSAgICAgICAgcHJlZml4ID0gW10KLSAgICAgICAgaWYgbGVuKGNvbmZpZykgPiAwOgotICAgICAgICAgICAgZGF0ZV9zdHJpbmcgPSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZSgiJVktJW0tJWQuJUg6JU06JVMgJVoiKQotICAgICAgICAgICAgcHJlZml4LmFwcGVuZCgiIVxuISAiKQotICAgICAgICAgICAgcHJlZml4LmFwcGVuZChzZG5zaC5kb19zaG93X3ZlcnNpb24od29yZHMpKQotICAgICAgICAgICAgcHJlZml4LmFwcGVuZCgiXG4hIEN1cnJlbnQgVGltZTogIikKLSAgICAgICAgICAgIHByZWZpeC5hcHBlbmQoZGF0ZV9zdHJpbmcpCi0gICAgICAgICAgICBwcmVmaXguYXBwZW5kKCJcbiFcbiIpCi0gICAgICAgICAgICBwcmVmaXguYXBwZW5kKCJ2ZXJzaW9uIDEuMFxuIikgIyBuZWVkIGEgYmV0dGVyIGRldGVybWluYXRpb24gb2YgY29tbWFuZCBzeW50YXggdmVyc2lvbgotCi0gICAgICAgICMgY29uZmlnWzotMV0gcmVtb3ZlcyB0aGUgbGFzdCB0cmFpbGluZyBuZXdsaW5lCi0gICAgICAgIHJldHVybiAnJy5qb2luKHByZWZpeCkgICsgJycuam9pbihjb25maWcpWzotMV0KLQotCmRpZmYgLS1naXQgYS9jbGkvY2xpL3NkbmRiLnB5IGIvY2xpL2NsaS9zZG5kYi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWFmOWRjOS4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL3NkbmRiLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTc4ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jCi0jCi0KLWltcG9ydCBzdG9yZWNsaWVudAotaW1wb3J0IGpzb24KLWltcG9ydCB1dGlmCi0KLSMgVE9ETzoKLSMgZG9uJ3QgdXNlIHRoZSBweXRob24gdHlwZSBvZiB0aGUgc3RyaW5nLCB1c2UgdGhlIAotIyAgc2NoZW1hJ3MgdHlwZSBkZXNjcmlwdGlvbgotIwotIyBhc3NvY2lhdGUgdGhlIGNvbXBsZXggdHlwZSB3aXRoIHRoZSBzY2hlbWEgc28gdGhhdAotIyAgZHVyaW5nIGxlYWYgZ2VuZXJhdGlvbiwgdGhlIGNvbXBsZXggc2NoZW1hIHR5cGUKLSMgIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgdGhlIHZhbHVlCi0jCi0KLQotZGVmIHN0cmluZ190eXBlKHZhbHVlKToKLSAgICBpZiB0eXBlKHZhbHVlKSA9PSBzdHIgb3IgdHlwZSh2YWx1ZSkgPT0gdW5pY29kZToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotCi1kZWYgaW50ZWdlcl90eXBlKHZhbHVlKToKLSAgICBpZiB0eXBlKHZhbHVlKSA9PSBpbnQgb3IgdHlwZSh2YWx1ZSkgPT0gbG9uZzoKLSAgICAgICAgcmV0dXJuIFRydWUKLQotCi1kZWYgbnVtZXJpY190eXBlKHZhbHVlKToKLSAgICBpZiAoaW50ZWdlcl90eXBlKHZhbHVlKSBvciAKLSAgICAgIHR5cGUodmFsdWUpID09IGZsb2F0IG9yIHR5cGUodmFsdWUpID09IGNvbXBsZXgpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0KLWRlZiBhdG9taWNfdHlwZSh2YWx1ZSk6Ci0gICAgaWYgKHN0cmluZ190eXBlKHZhbHVlKSBvcgotICAgICBudW1lcmljX3R5cGUodmFsdWUpIG9yCi0gICAgIHR5cGUodmFsdWUpID09IGJvb2wpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0KLWRlZiBwYXRoX2FkZGVyKHByZWZpeCwgbmV4dGZpeCk6Ci0gICAgaWYgcHJlZml4ID09ICcnOgotICAgICAgICByZXR1cm4gbmV4dGZpeAotICAgIHJldHVybiAnJXMvJXMnICUgKHByZWZpeCwgbmV4dGZpeCkKLQotCi1jbGFzcyBTRE5EQigpOgotICAgIAotICAgICMgTm90ZXM6Ci0gICAgIwotICAgICMgVGhlIGl0ZW0gb3JkZXIgb2YgdGhlIGRpY3Rpb25hcnktbGlrZSBzdHJ1Y3R1cmVzIGluIHRoZSBzY2hlbWEKLSAgICAjIGlzIGFjdHVhbGx5IG5vdCBvcmRlci1lZC4gIFRoZSBjb2x1bW5zIG9mIHRoZXNlIGl0ZW1zLCB0aGVuCi0gICAgIyBjYW4ndCBiZSBkZXJpdmVkIGZyb20gdGhlIHNjaGVtYS4KLSAgICAjCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kaSwgc2Ruc2gsIHBwKToKLSAgICAgICAgc2VsZi5tb2RpID0gbW9kaQotICAgICAgICBzZWxmLnNkbnNoID0gc2Ruc2ggICAgICAgICAgICAgICMgYWNjZXNzIHRvIHJlc3QgYXB1LCBuZWVkcyBoZWxwCi0gICAgICAgIHNlbGYucHAgPSBwcCAgICAgICAgICAgICAgICAgICAgIyBhY2Nlc3MgdG8gZm9ybWF0cywgbmVlZHMgaGVscAotCi0gICAgICAgIHNlbGYua25vd25fdHlwZXMgPSBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lOVEVHRVInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTVFJJTkcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCT09MRUFOJywgICAgICMgVHJ1ZS9GYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCSU5BUlknLCAgICAgICMgYml0IGFycmF5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xFQUYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMRUFGX0xJU1QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMSVNUJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ09OVEFJTkVSJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUkVGRVJFTkNFJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLQotICAgICAgICBzZWxmLmtub3duX2RhdGFfc291cmNlcyA9IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZG5wbGF0Zm9ybS1tb2R1bGUtZGF0YS1zb3VyY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaC1kYXRhLXNvdXJjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29udHJvbGxlci1kYXRhLXNvdXJjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9wb2xvZ3ktZGF0YS1zb3VyY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgIHNlbGYuY29udHJvbGxlciA9ICdsb2NhbGhvc3QnCi0gICAgICAgIHNlbGYuc2RuZGJfcG9ydCA9IDgwODIKLSAgICAgICAgc2VsZi5zY2hlbWFfcmVxdWVzdCgpCi0gICAgICAgIHNlbGYuaW50NjRtYXggPSAyKio2MyAtIDEKLSAgICAgICAgc2VsZi5pbnQ2NG1pbiA9IC0yKio2MwotCi0KLSAgICBkZWYgbW0oc2VsZiwgdik6Ci0gICAgICAgICIiIgotICAgICAgICBRdWljayBjb252ZXJ0ZXIgZm9yIHRob3NlIHZhbHVlcyB3aGljaCBhcmUgc29tZQotICAgICAgICB2YXJpYXRpb24gb2YgaW50X21heCBmb3IgYSA2NCBiaXQgamF2YSBzaWduZWQgaW50ZWdlciwKLSAgICAgICAgYW5kIGludF9taW4gZm9yIGEgNjQgYml0IGphdmEgc2lnbmVkIGludGVnZXIKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHYgPT0gc2VsZi5pbnQ2NG1heDoKLSAgICAgICAgICAgIHJldHVybiAnJyAjICcyXjYzJwotICAgICAgICBpZiB2ID09IHNlbGYuaW50NjRtaW46Ci0gICAgICAgICAgICByZXR1cm4gJycgIyAnLTJeNjMnCi0gICAgICAgIHJldHVybiB2Ci0KLQotICAgICMgaXNvbGF0ZSByZWZlcmVuY2VzIHRvIG91dHNpZGUgZW50aXRpZXMsIGllOgotICAgICMgc2Ruc2ggYW5kIHBwIHJlZmVyZW5jZXMgbmVlZCB0byBiZSBjb2xsZWN0ZWQgaGVyZQotICAgICMgaW4gcHJlcGFyYXRpb24gZm9yIGJldHRlciB0aW1lcy4KLSAgICBkZWYgY29udHJvbGxlcihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc2Ruc2guY29udHJvbGxlcgotCi0KLSAgICBkZWYgc2NoZW1hX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuc2RuZGJfcG9ydCA9IDgwODIKLSAgICAgICAgdXJsID0gKCdodHRwOi8vJXM6JXMvYXBpL3YxL3NjaGVtYS9jb250cm9sbGVyJyAlCi0gICAgICAgICAgICAgICAgKHNlbGYuY29udHJvbGxlciwgc2VsZi5zZG5kYl9wb3J0KSkKLSAgICAgICAgc2VsZi5zY2hlbWEgPSB7fQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwcmludCB1cmwKLSAgICAgICAgICAgIHNlbGYuc2NoZW1hID0gc2VsZi5zZG5zaC5zdG9yZS5yZXN0X2pzb25fcmVxdWVzdCh1cmwpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBwcmludCAnQklHIFRST1VCTEUgSU4gU0ROREInLCBlCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcHJpbnQgc2VsZi5zY2hlbWEua2V5cygpCi0KLSAgICAgICAgIyBmb3IgdHlwZXM6IC9hcGkvdjEvbW9kdWxlL2NvbnRyb2xsZXIKLQotICAgICAgICBzZWxmLmNyYWNrX3R5cGUoc2VsZi5zY2hlbWEpCi0KLQotICAgIGRlZiBkYXRhX3Jlc3RfcmVxdWVzdChzZWxmLCBpdGVtKToKLSAgICAgICAgdXJsID0gKCdodHRwOi8vJXM6JXMvYXBpL3YxL2RhdGEvY29udHJvbGxlci8lcycgJQotICAgICAgICAgICAgICAgKHNlbGYuY29udHJvbGxlciwgc2VsZi5zZG5kYl9wb3J0LCBpdGVtKSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzdF9yZXN1bHQgPSBzZWxmLnNkbnNoLnN0b3JlLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcHJpbnQgJ1VSTCcsIHVybAotICAgICAgICAgICAgcHJpbnQgJ0V4Y2VwdGlvbjogJywgaXRlbSwgZQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgcmVzdWx0ID0ganNvbi5sb2FkcyhyZXN0X3Jlc3VsdCkKLSAgICAgICAgIyBwcmludCByZXN1bHQKLSAgICAgICAgIyBwcmludCBzZWxmLmZvcm1hdF90YWJsZShyZXN1bHQsIHJlc3RfaXRlbSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0KLSAgICBkZWYgY3JhY2tfZmllbGQoc2VsZiwgbW9kZWwsIGZpZWxkLCBmaWVsZF9kZXNjKToKLSAgICAgICAgcHJpbnQgbW9kZWwsIGZpZWxkCi0gICAgICAgIChuYW1lLCB0eXBlLCBiYXNlX3R5cGVfbmFtZSwgYmFzZV90eXBlZGVmLCBtb2R1bGUpID0gXAotICAgICAgICAgICAgKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpCi0gICAgICAgIChhdHRyaWJ1dGVzLCBjaGlsZF9ub2RlcywgZGF0YV9zb3VyY2VzLCBkZXNjcmlwdGlvbikgPSBcCi0gICAgICAgICAgICAoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkKLSAgICAgICAgKGtleV9ub2RlX25hbm1lcywgdmFsaWRhdG9yLCBkZWZhdWx0VmFsdWVTdHJpbmcpID0gKE5vbmUsIE5vbmUsIE5vbmUpCi0gICAgICAgIChsZWFmX3R5cGUsIGxlYWZfc2NoZW1hX25vZGUsIHR5cGVfc2NoZW1hX25vZGUpID0gKE5vbmUsIE5vbmUsIE5vbmUpCi0gICAgICAgIChsaXN0X3NjaGVtYV9ub2RlLCBtYW5kYXRvcnkpID0gKE5vbmUsIE5vbmUpCi0gICAgICAgICMgdGhyZWUgZmllbGRzIHNlZW0gdG8gaWRlbnRpZnkgdHlwZToKLSAgICAgICAgIyAnbm9kZVR5cGUnLCAnYmFzZVR5cGVOYW1lJywgJ2Jhc2VUeXBlZGVmJwotCi0gICAgICAgIGZvciAoYXR0ciwgYXR0cl92YWx1ZSkgaW4gZmllbGRfZGVzYy5pdGVtcygpOiAgIAotICAgICAgICAgICAgaWYgYXR0ciA9PSAnbmFtZSc6Ci0gICAgICAgICAgICAgICAgaWYgYXR0cl92YWx1ZSAhPSBmaWVsZDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5pbmc6IHNjaGVtYSAlcyAibmFtZSIgJXMgJyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvZXNuXCd0IG1hdGNoIGZpZWxkIG5hbWUgJXMnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbCwgYXR0cl92YWx1ZSwgZmllbGQpCi0gICAgICAgICAgICBlbGlmIGF0dHIgPT0gJ25vZGVUeXBlJzoKLSAgICAgICAgICAgICAgICB0eXBlID0gYXR0cl92YWx1ZQotICAgICAgICAgICAgICAgIGlmIHR5cGUgbm90IGluIHNlbGYua25vd25fdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdXYXJuaW5nOiBzY2hlbWE6ICVzOiVzIHVua25vd24gdHlwZSAlcycgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsLCBmaWVsZCwgdHlwZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmludCBtb2RlbCwgZmllbGQsIHR5cGUKLSAgICAgICAgICAgIGVsaWYgYXR0ciA9PSAnZGF0YVNvdXJjZXMnOgotICAgICAgICAgICAgICAgIGRhdGFfc291cmNlcyA9IGF0dHJfdmFsdWUKLSAgICAgICAgICAgICAgICBmb3Igc291cmNlIGluIGRhdGFfc291cmNlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlIG5vdCBpbiBzZWxmLmtub3duX2RhdGFfc291cmNlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdXYXJuaW5nOiBzY2hlbWE6ICVzOiVzIHVua25vd24gZGF0YSBzb3VyY2UgJXMnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWwsIGZpZWxkLCBzb3VyY2UpCi0KLSAgICAgICAgICAgIGVsaWYgYXR0ciA9PSAnbWFuZGF0b3J5JzoKLSAgICAgICAgICAgICAgICBtYW5kYXRvcnkgPSBhdHRyX3ZhbHVlCi0gICAgICAgICAgICBlbGlmIGF0dHIgPT0gJ2NoaWxkTm9kZXMnOgotICAgICAgICAgICAgICAgIGNoaWxkX25vZGVzID0gYXR0cl92YWx1ZQotICAgICAgICAgICAgZWxpZiBhdHRyID09ICdsZWFmVHlwZSc6Ci0gICAgICAgICAgICAgICAgbGVhZl90eXBlID0gYXR0cl92YWx1ZQotICAgICAgICAgICAgZWxpZiBhdHRyID09ICd0eXBlU2NoZW1hTm9kZSc6Ci0gICAgICAgICAgICAgICAgdHlwZV9zY2hlbWFfbm9kZSA9IGF0dHJfdmFsdWUKLSAgICAgICAgICAgIGVsaWYgYXR0ciA9PSAna2V5Tm9kZU5hbWVzJzoKLSAgICAgICAgICAgICAgICBrZXlfbm9kZV9uYW1lcyA9IGF0dHJfdmFsdWUKLSAgICAgICAgICAgIGVsaWYgYXR0ciA9PSAnbGlzdEVsZW1lbnRTY2hlbWFOb2RlJzoKLSAgICAgICAgICAgICAgICBsaXN0X3NjaGVtYV9ub2RlID0gYXR0cl92YWx1ZQotICAgICAgICAgICAgZWxpZiBhdHRyID09ICdsZWFmU2NoZW1hTm9kZSc6Ci0gICAgICAgICAgICAgICAgbGVhZl9zY2hlbWFfbm9kZSA9IGF0dHJfdmFsdWUKLSAgICAgICAgICAgIGVsaWYgYXR0ciA9PSAndmFsaWRhdG9yJzoKLSAgICAgICAgICAgICAgICB2YWxpZGF0b3IgPSBhdHRyX3ZhbHVlCi0gICAgICAgICAgICAgICAgcHJpbnQgbW9kZWwsIGZpZWxkLCAnVkFMSURBVE9SJywgdmFsaWRhdG9yCi0gICAgICAgICAgICBlbGlmIGF0dHIgPT0gJ2RlZmF1bHRWYWx1ZVN0cmluZyc6Ci0gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RyaW5nID0gYXR0cl92YWx1ZQotICAgICAgICAgICAgZWxpZiBhdHRyID09ICdiYXNlVHlwZU5hbWUnOgotICAgICAgICAgICAgICAgIGJhc2VfdHlwZV9uYW1lID0gYXR0cl92YWx1ZQotICAgICAgICAgICAgZWxpZiBhdHRyID09ICdiYXNlVHlwZWRlZic6Ci0gICAgICAgICAgICAgICAgYmFzZV90eXBlZGVmID0gYXR0cl92YWx1ZQotICAgICAgICAgICAgZWxpZiBhdHRyID09ICdhdHRyaWJ1dGVzJzoKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gYXR0cl92YWx1ZQotICAgICAgICAgICAgZWxpZiBhdHRyID09ICdkZXNjcmlwdGlvbic6Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBhdHRyX3ZhbHVlCi0gICAgICAgICAgICBlbGlmIGF0dHIgPT0gJ21vZHVsZSc6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gYXR0cl92YWx1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCAnV2FybmluZzogc2NoZW1hOiAlczolcyB1bmtub3duIGF0dHJpYnV0ZSAlcycgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAobW9kZWwsIGZpZWxkLCBhdHRyKQotICAgICAgICAgICAgICAgIHByaW50ICIgICAtLSIsIGF0dHIsIGF0dHJfdmFsdWUKLSAgICAgICAgCi0KLSAgICBkZWYgY3JhY2tfY29udGFpbmVyKHNlbGYsIGNvbnRhaW5lcik6Ci0gICAgICAgIGZvciAobW9kZWwsIG1vZGVsX2RldGFpbHMpIGluIGNvbnRhaW5lci5pdGVtcygpOgotICAgICAgICAgICAgcHJpbnQgJ01vZGVsJywgbW9kZWwsIG1vZGVsX2RldGFpbHMua2V5cygpCi0gICAgICAgICAgICB0eXBlICAgICAgICA9IG1vZGVsX2RldGFpbHNbJ25vZGVUeXBlJ10KLSAgICAgICAgICAgIG5hbWUgICAgICAgID0gbW9kZWxfZGV0YWlsc1snbmFtZSddCi0gICAgICAgICAgICBtb2R1bGUgICAgICA9IG1vZGVsX2RldGFpbHNbJ21vZHVsZSddCi0KLQotICAgICAgICAgICAgaWYgdHlwZSA9PSAnTElTVCc6Ci0gICAgICAgICAgICAgICAgY2hpbGRfbm9kZXMgPSBtb2RlbF9kZXRhaWxzWydsaXN0RWxlbWVudFNjaGVtYU5vZGUnXQotICAgICAgICAgICAgICAgIGNoaWxkX25vZGVzID0gY2hpbGRfbm9kZXNbJ2NoaWxkTm9kZXMnXQotICAgICAgICAgICAgICAgIHByaW50ICctLSAnLCBuYW1lLCB0eXBlLCBtb2R1bGUsIGNoaWxkX25vZGVzLmtleXMoKQotCi0gICAgICAgICAgICAgICAgZm9yIChmaWVsZCwgZmllbGRfdmFsdWUpIGluIGNoaWxkX25vZGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuY3JhY2tfZmllbGQobmFtZSwgZmllbGQsIGZpZWxkX3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICAjcHJpbnQgZmllbGQsIGZpZWxkX3ZhbHVlLml0ZW1zKCkKLSAgICAgICAgICAgIGVsaWYgdHlwZSA9PSAnQ09OVEFJTkVSJzoKLSAgICAgICAgICAgICAgICBjaGlsZF9ub2RlcyA9IG1vZGVsX2RldGFpbHNbJ2NoaWxkTm9kZXMnXQotCi0gICAgICAgICAgICAgICAgZm9yIChmaWVsZCwgZmllbGRfdmFsdWUpIGluIGNoaWxkX25vZGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuY3JhY2tfZmllbGQobmFtZSwgZmllbGQsIGZpZWxkX3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICAjcHJpbnQgZmllbGQsIGZpZWxkX3ZhbHVlLml0ZW1zKCkKLQotCi0gICAgZGVmIGNyYWNrX3R5cGUoc2VsZiwgaXRlbSk6Ci0gICAgICAgIHR5cGUgPSBpdGVtLmdldCgnbm9kZVR5cGUnKQotICAgICAgICBpZiB0eXBlID09IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiB0eXBlID09ICdDT05UQUlORVInOgotICAgICAgICAgICAgIyBSRVNUIEFQSSBlbnZlbG9wZS4KLSAgICAgICAgICAgIGNvbnRhaW5lciA9IGl0ZW0uZ2V0KCdjaGlsZE5vZGVzJykKLSAgICAgICAgICAgIGZvciAoZW52ZWxvcGVfbmFtZSwgZW52ZWxvcGVfdmFsdWUpIGluIGNvbnRhaW5lci5pdGVtcygpOgotICAgICAgICAgICAgICAgIGVudmVsb3BlX3R5cGUgPSBlbnZlbG9wZV92YWx1ZS5nZXQoJ25vZGVUeXBlJykKLSAgICAgICAgICAgICAgICBwcmludCAnRU5WRUxPUEUnLCBjb250YWluZXIua2V5cygpLCBlbnZlbG9wZV90eXBlCi0gICAgICAgICAgICAgICAgaWYgZW52ZWxvcGVfdHlwZSA9PSAnQ09OVEFJTkVSJzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmFja19jb250YWluZXIoZW52ZWxvcGVfdmFsdWVbJ2NoaWxkTm9kZXMnXSkKLQotCi0gICAgZGVmIHBvc3RfbGVhZl9ub2RlX3RvX3JvdyhzZWxmLCBwYXRoLCBzY2hlbWEsIHJlc3VsdHMsIHJvd19kaWN0LCBuYW1lID0gTm9uZSk6Ci0gICAgICAgIGxlYWZfdHlwZSA9IHNjaGVtYS5nZXQoJ2xlYWZUeXBlJykKLSAgICAgICAgaWYgbmFtZSA9PSBOb25lOgotICAgICAgICAgICAgbmFtZSA9IHNjaGVtYS5nZXQoJ25hbWUnKQotICAgICAgICBpZiBsZWFmX3R5cGUgPT0gJ0VOVU1FUkFUSU9OJzoKLSAgICAgICAgICAgIHR5cGVfbm9kZSA9IHNjaGVtYS5nZXQoJ3R5cGVTY2hlbWFOb2RlJykKLSAgICAgICAgICAgIHByaW50ICdMRUFGIEVOVU0nLCB0eXBlX25vZGUsIHR5cGVfbm9kZSAhPSBOb25lCi0gICAgICAgICAgICBlbnVtX3Jlc3VsdCA9IHJlc3VsdHMKLSAgICAgICAgICAgIGlmIHR5cGVfbm9kZToKLSAgICAgICAgICAgICAgICBpZiB0eXBlX25vZGUuZ2V0KCdsZWFmVHlwZScpOgotICAgICAgICAgICAgICAgICAgICBlbnVtX3ZhbHVlcyA9IHR5cGVfbm9kZS5nZXQoJ2VudW1lcmF0aW9uU3BlY2lmaWNhdGlvbnMnKQotICAgICAgICAgICAgICAgICAgICBpZiBlbnVtX3ZhbHVlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGVudW1fdmFsdWVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWVbJ3ZhbHVlJ10gPT0gZW51bV9yZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1fcmVzdWx0ID0gbmFtZQotICAgICAgICAgICAgcHJpbnQgcGF0aCwgJ0xFQUYgRU5VTSAlcyA8LSAlcyBmcm9tICVzJyAlIChuYW1lLCBlbnVtX3Jlc3VsdCwgcmVzdWx0cykKLSAgICAgICAgICAgIHJvd19kaWN0W25hbWVdID0gc3RyKGVudW1fcmVzdWx0KQotICAgICAgICBlbGlmIGxlYWZfdHlwZSA9PSAnVU5JT04nOgotICAgICAgICAgICAgcm93X2RpY3RbbmFtZV0gPSBzdHIocmVzdWx0cykKLSAgICAgICAgZWxpZiBhdG9taWNfdHlwZShyZXN1bHRzKToKLSAgICAgICAgICAgIHByaW50IHBhdGgsICdMRUFGICVzIDwtICVzJyAlIChuYW1lLCByZXN1bHRzKQotICAgICAgICAgICAgcm93X2RpY3RbbmFtZV0gPSBzdHIocmVzdWx0cykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50IHBhdGgsICdMRUFGIE1PUkUgREVUQUlMUycsIHNjaGVtYSwgdHlwZShyZXN1bHRzKSwgcmVzdWx0cwotCi0KLSAgICBkZWYgc2NoZW1hX3RvX3Jlc3VsdHMoc2VsZiwgcGF0aCwgc2NoZW1hLCByZXN1bHRzLCByb3dfZGljdCA9IE5vbmUsIGluZGljZXMgPSBOb25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdlbmVyYXRvciAoaXRlcmF0b3IpIGZvciBpdGVtcyBpbiB0aGUgcmVzdWx0cywgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgICAgICBzY2hlbWEgcGFzc2VkIGluLgotCi0gICAgICAgICdpbmRleCcgaXMgYSBsaXN0IG9mIGRpY3Rpb25hcnkgb2YgaXRlbXMgd2hpY2ggYXJlIGludGVuZGVkIHRvIGJlIGNvbHVtbnMgaW4gdGhlCi0gICAgICAgIHRhYmxlIHdoaWNoIG11c3QgYXBwZWFyIGZvciBldmVyeSBpbnRlcmlvciB0YWJsZS4KLSAgICAgICAgIiIiCi0gICAgICAgIG5vZGVfdHlwZSA9IHNjaGVtYS5nZXQoJ25vZGVUeXBlJykKLSAgICAgICAgbmFtZSA9IHNjaGVtYS5nZXQoJ25hbWUnKQotICAgICAgICBwcmludCBwYXRoLCBuYW1lLCAnVFlQRScsIG5vZGVfdHlwZQotCi0gICAgICAgIGlmIHJvd19kaWN0ID09IE5vbmU6Ci0gICAgICAgICAgICByb3dfZGljdCA9IGRpY3QoKQotICAgICAgICBpZiBpbmRpY2VzID09IE5vbmU6Ci0gICAgICAgICAgICBpbmRpY2VzID0gbGlzdCgpCi0KLSAgICAgICAgaWYgbm9kZV90eXBlIGluIFsnTEVBRiddOgotICAgICAgICAgICAgc2VsZi5wb3N0X2xlYWZfbm9kZV90b19yb3cocGF0aCwgc2NoZW1hLCByZXN1bHRzLCByb3dfZGljdCkKLSAgICAgICAgZWxpZiBub2RlX3R5cGUgPT0gJ0xJU1QnOgotICAgICAgICAgICAgcm93ID0ge30gaWYgcm93X2RpY3QgPT0gTm9uZSBlbHNlIGRpY3Qocm93X2RpY3QpCi0KLSAgICAgICAgICAgIGRhdWdodGVyID0gc2NoZW1hLmdldCgnbGlzdEVsZW1lbnRTY2hlbWFOb2RlJykKLSAgICAgICAgICAgIGluZGV4ID0gZGF1Z2h0ZXIuZ2V0KCdrZXlOb2RlTmFtZXMnKQotICAgICAgICAgICAgIyB2ZXJpZnkgaW5kZXggaW4gbGlzdF9maWVsZHMKLSAgICAgICAgICAgIGxpc3RfaXRlbXMgPSBkYXVnaHRlci5nZXQoJ2NoaWxkTm9kZXMnKQotICAgICAgICAgICAgcHJpbnQgcGF0aCwgJ0xJU1QnLCBuYW1lLCBpbmRleCwgbGlzdF9pdGVtcy5rZXlzKCkKLSAgICAgICAgICAgIHlpZWxkICgnTElTVC1CRUdJTicsIG5hbWUsIHBhdGgsIGluZGljZXMsIHJvdykKLSAgICAgICAgICAgICMgc3BhdGggPSAnJXMvJXMvJXMnICUgKHBhdGgsIG5hbWUsIGluZGV4X3ZhbHVlKQotICAgICAgICAgICAgIyBhZGRfZmllbGRzKGRlcHRoKzEsIGxpc3RfZmllbGRzKQotICAgICAgICAgICAgZm9yIChpbmRleF92YWx1ZSwgcmVzdWx0KSBpbiByZXN1bHRzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ1tdJywgJyVzOiVzJyAlIChpbmRleCwgaW5kZXhfdmFsdWUpCi0gICAgICAgICAgICAgICAgbmV3X3JvdyA9IGRpY3Qocm93KQotICAgICAgICAgICAgICAgIG5ld19yb3dbJ3wnLmpvaW4oaW5kZXgpXSA9IGluZGV4X3ZhbHVlCi0gICAgICAgICAgICAgICAgbmV3X2luZGljZXMgPSBsaXN0KGluZGljZXMpICsgW3tuYW1lIDogaW5kZXhfdmFsdWV9XQotICAgICAgICAgICAgICAgIHNwYXRoID0gJyVzLyVzJyAlIChwYXRoX2FkZGVyKHBhdGgsIG5hbWUpLCBpbmRleF92YWx1ZSkKLSAgICAgICAgICAgICAgICBmb3IgKGl0ZW1fbmFtZSwgaXRlbV92YWx1ZSkgaW4gbGlzdF9pdGVtcy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICBpZiBpdGVtX25hbWUgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5zY2hlbWFfdG9fcmVzdWx0cyhzcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV92YWx1ZSwgcmVzdWx0W2l0ZW1fbmFtZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yb3csIG5ld19pbmRpY2VzKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBpdGVtCi0gICAgICAgICAgICAgICAgcHJpbnQgJ0hFUkUnLCBuZXdfcm93Ci0gICAgICAgICAgICAgICAgeWllbGQgKCdMSVNULUlURU0nLCBuYW1lLCBwYXRoLCBpbmRpY2VzLCByb3csIG5ld19yb3cpCi0gICAgICAgICAgICB5aWVsZCAoJ0xJU1QtRU5EJywgbmFtZSwgcGF0aCwgaW5kaWNlcyArIFt7J3wnLmpvaW4oaW5kZXgpIDogTm9uZX1dLCByb3cpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxpZiBub2RlX3R5cGUgPT0gJ0xFQUZfTElTVCc6Ci0gICAgICAgICAgICAjcm93ID0ge30gaWYgcm93X2RpY3QgPT0gTm9uZSBlbHNlIGRpY3Qocm93X2RpY3QpCi0gICAgICAgICAgICByb3cgPSB7fQotICAgICAgICAgICAgIyB2ZXJpZnkgaW5kZXggaW4gbGlzdF9maWVsZHMKLSAgICAgICAgICAgIGRhdWdodGVyID0gc2NoZW1hLmdldCgnbGVhZlNjaGVtYU5vZGUnKQotICAgICAgICAgICAgbGFzdF9pbmRleCA9IGluZGljZXNbLTFdCi0gICAgICAgICAgICBpZiBsZW4obGFzdF9pbmRleC5rZXlzKCkpID09IDE6Ci0gICAgICAgICAgICAgICAgcGFyZW50X25hbWUgPSBsYXN0X2luZGV4W2xhc3RfaW5kZXgua2V5cygpWzBdXQotICAgICAgICAgICAgcHJpbnQgcGF0aCwgJ0xFQUYtTElTVCcsIHBhcmVudF9uYW1lLCBpbmRpY2VzLCBkYXVnaHRlci5rZXlzKCksIGxhc3RfaW5kZXgKLSAgICAgICAgICAgIHlpZWxkICgnTElTVC1CRUdJTicsIHBhcmVudF9uYW1lLCBwYXRoLCBpbmRpY2VzLCByb3cpCi0gICAgICAgICAgICAjIHNwYXRoID0gJyVzLyVzLyVzJyAlIChwYXRoLCBuYW1lLCBpbmRleF92YWx1ZSkKLSAgICAgICAgICAgICMgYWRkX2ZpZWxkcyhkZXB0aCsxLCBsaXN0X2ZpZWxkcykKLSAgICAgICAgICAgIG5ld19yb3cgPSBkaWN0KHJvdykKLSAgICAgICAgICAgIGl0ZW1fc2NoZW1hID0gZGF1Z2h0ZXIuZ2V0KCd0eXBlU2NoZW1hTm9kZScpCi0gICAgICAgICAgICBsZWFmX25vZGVfdHlwZSA9IGl0ZW1fc2NoZW1hLmdldCgnbm9kZVR5cGUnKQotICAgICAgICAgICAgaWYgbGVhZl9ub2RlX3R5cGUgIT0gJ1RZUEUnOgotICAgICAgICAgICAgICAgIHByaW50ICdMRUFGLUxJU1Qgd2l0aG91dCBpbnRlcmlvciBUWVBFIG5vZGU6ICVzJyAlIGxlYWZfbm9kZV90eXBlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxlYWZfdHlwZSA9IGl0ZW1fc2NoZW1hLmdldCgnbGVhZlR5cGUnKQotICAgICAgICAgICAgICAgIHByaW50ICdYWFgnLCByZXN1bHRzLCBuYW1lCi0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gcmVzdWx0czoKLSAgICAgICAgICAgICAgICAgICAgbmV3X2luZGljZXMgPSBsaXN0KGluZGljZXMpICsgW3tuYW1lIDogaXRlbX1dCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdF9sZWFmX25vZGVfdG9fcm93KHBhdGgsIGl0ZW1fc2NoZW1hLCBpdGVtLCByb3csIG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkICgnTElTVC1JVEVNJywgcGFyZW50X25hbWUsIHBhdGgsIG5ld19pbmRpY2VzLCByb3csIG5ld19yb3cpCi0KLSAgICAgICAgICAgIG5ld19pbmRpY2VzID0gbGlzdChpbmRpY2VzKSArIFt7bmFtZSA6IE5vbmV9XQotICAgICAgICAgICAgcHJpbnQgJ1hZWicsIG5hbWUsIG5ld19pbmRpY2VzCi0gICAgICAgICAgICB5aWVsZCAoJ0xJU1QtRU5EJywgcGFyZW50X25hbWUsIHBhdGgsIG5ld19pbmRpY2VzLCByb3cpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIAotICAgICAgICBlbGlmIG5vZGVfdHlwZSA9PSAnQ09OVEFJTkVSJzoKLSAgICAgICAgICAgICMgc2hvdWxkIGFic3RyYWN0IG5hbWUgdHlwZXMgYmUgYWRkZWQ/Ci0gICAgICAgICAgICBjaGlsZF9ub2RlcyA9IHNjaGVtYS5nZXQoJ2NoaWxkTm9kZXMnKQotICAgICAgICAgICAgcHJpbnQgcGF0aCwgJ0NPTlRBSU5FUicsIG5hbWUsIGNoaWxkX25vZGVzLmtleXMoKQotICAgICAgICAgICAgeWllbGQgKCdDT05UQUlORVItQkVHSU4nLCBuYW1lLCBwYXRoLCBpbmRpY2VzLCByb3dfZGljdCkKLSAgICAgICAgICAgIHNwYXRoID0gcGF0aF9hZGRlcihwYXRoLCBuYW1lKQotICAgICAgICAgICAgIyBhZGRfZmllbGRzKHNwYXRoLCBjaGlsZF9ub2RlcykKLSAgICAgICAgICAgIGJhc2VfZGljdCA9IGRpY3Qocm93X2RpY3QpCi0gICAgICAgICAgICBmb3IgKGNoaWxkX25hbWUsIGNoaWxkX3ZhbHVlKSBpbiBjaGlsZF9ub2Rlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHByaW50IHBhdGgsICdDT05UQUlORVIgUEFSVCcsIGNoaWxkX25hbWUsIGNoaWxkX25hbWUgaW4gcmVzdWx0cwotICAgICAgICAgICAgICAgIGlmIGNoaWxkX25hbWUgaW4gcmVzdWx0czoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5zY2hlbWFfdG9fcmVzdWx0cyhzcGF0aCwgY2hpbGRfdmFsdWUsIHJlc3VsdHNbY2hpbGRfbmFtZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93X2RpY3QsIGluZGljZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgaXRlbQotICAgICAgICAgICAgcHJpbnQgcGF0aCwgJ0NPTlRBSU5FUiBET05FJywgbmFtZSwgcm93X2RpY3QKLSAgICAgICAgICAgIHlpZWxkICgnQ09OVEFJTkVSLUVORCcsIG5hbWUsIHBhdGgsIGluZGljZXMsIGJhc2VfZGljdCwgcm93X2RpY3QpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCAnVFlQRSAlcyBORUVEUyBIRUxQJyAlIG5vZGVfdHlwZQotICAgICAgICAgICAgcHJpbnQgc2NoZW1hCi0gICAgICAgICAgICBwcmludCByZXN1bHRzCi0KLQotICAgIGRlZiBmb3JtYXRfdGFibGUoc2VsZiwgcmVzdWx0LCBuYW1lKToKLSAgICAgICAgIwotICAgICAgICAjIGZvcm1hdCBhIHRhYmxlOiBwYWludCBhIHRhYmxlIGFzIGlmIGdlbmVyYXRpbmcgc29tZQotICAgICAgICAjIHRhYmxlIG91dHB1dCBmb3JtYXQgZnJvbSBhIGhpZXJhcmNoaWFsIG9iamVjdC4KLSAgICAgICAgIyAKLSAgICAgICAgIyBjb2x1bW5zIGFyZSB0aGUgbmFtZXMgb2YgYW55IHBhdGggbWVtYmVycyBkb3duIHRvIHRoZQotICAgICAgICAjIG1vc3QgaW50ZXJpb3IgZW50cnkuCi0gICAgICAgICMgCi0gICAgICAgICMKLQotICAgICAgICBkZWYgYWRkX2ZpZWxkcyhkZXB0aCwgZmllbGRzKToKLSAgICAgICAgICAgIGZvciAoZmllbGRfbmFtZSwgZmllbGRfZGV0YWlscykgaW4gZmllbGRzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgIyBpZiB0aGUgY29sdW1uIGlzIGEgbGlzdCwgYWxsIHRoZSBlbnRyaWVzIHVuZGVybmVhdGggbmVlZCB0byBiZSBhZGRlZC4KLSAgICAgICAgICAgICAgICBub2RlX3R5cGUgPSBmaWVsZF9kZXRhaWxzLmdldCgnbm9kZVR5cGUnKQotICAgICAgICAgICAgICAgIHR5cGVfc2NoZW1hID0gZmllbGRfZGV0YWlscy5nZXQoJ3R5cGVTY2hlbWFOb2RlJykKLSAgICAgICAgICAgICAgICBwcmludCBkZXB0aCwgJ0ZJRUxEJywgZmllbGRfbmFtZSwgbm9kZV90eXBlLCB0eXBlX3NjaGVtYQotICAgICAgICAgICAgICAgIGlmIG5vZGVfdHlwZSBpbiBbJ0xFQUYnXToKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZpZWxkX25hbWUgaW4gY29sdW1uczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKGZpZWxkX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAnWFhYWCBJTiBUSEVSRScsIGZpZWxkX25hbWUKLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZV9zY2hlbWEgYW5kIGZpZWxkX25hbWUgbm90IGluIGNvbHVtbl90eXBlOgotICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uX3R5cGVbZmllbGRfbmFtZV0gPSB0eXBlX3NjaGVtYQotICAgICAgICAgICAgICAgIGVsaWYgbm9kZV90eXBlID09ICdMSVNUJzoKLSAgICAgICAgICAgICAgICAgICAgZGF1Z2h0ZXIgPSBmaWVsZF9kZXRhaWxzLmdldCgnbGlzdEVsZW1lbnRTY2hlbWFOb2RlJykKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBkYXVnaHRlci5nZXQoJ2tleU5vZGVOYW1lcycpCi0gICAgICAgICAgICAgICAgICAgICMgdmVyaWZ5IGluZGV4IGluIGxpc3RfZmllbGRzCi0gICAgICAgICAgICAgICAgICAgIGxpc3RfZmllbGRzID0gZGF1Z2h0ZXIuZ2V0KCdjaGlsZE5vZGVzJykKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgZGVwdGgsICdMSVNUJywgZmllbGRfbmFtZSwgaW5kZXgsIGxpc3RfZmllbGRzLmtleXMoKQotICAgICAgICAgICAgICAgICAgICBhZGRfZmllbGRzKGRlcHRoKzEsIGxpc3RfZmllbGRzKQotICAgICAgICAgICAgICAgIGVsaWYgbm9kZV90eXBlID09ICdDT05UQUlORVInOgotICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBhYnN0cmFjdCBuYW1lIHR5cGVzIGJlIGFkZGVkPwotICAgICAgICAgICAgICAgICAgICBuYW1lID0gZmllbGRfZGV0YWlscy5nZXQoJ25hbWUnKQotICAgICAgICAgICAgICAgICAgICBjaGlsZF9ub2RlcyA9IGZpZWxkX2RldGFpbHMuZ2V0KCdjaGlsZE5vZGVzJykKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgZGVwdGgsICdDT05UQUlORVInLCBmaWVsZF9uYW1lLCBjaGlsZF9ub2Rlcy5rZXlzKCkKLSAgICAgICAgICAgICAgICAgICAgYWRkX2ZpZWxkcyhkZXB0aCsxLCBjaGlsZF9ub2RlcykKLQotICAgICAgICBzY2hlbWEgPSBzZWxmLnNjaGVtYXMuZ2V0KG5hbWUpCi0gICAgICAgIGlmIHNjaGVtYSA9PSBOb25lOgotICAgICAgICAgICAgcHJpbnQgJ01pc3NpbmcgU2NoZW1hJywgbmFtZQotICAgICAgICAgICAgcHJpbnQgJ0tub3duOicsICcsJy5qb2luKHNlbGYuc2NoZW1hcy5rZXlzKCkpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcHJpbnQgc2NoZW1hLmtleXMoKQotICAgICAgICBkZXNjcmlwdGlvbiA9IHNjaGVtYS5nZXQoJ2Rlc2NyaXB0aW9uJykKLSAgICAgICAgZGF1Z2h0ZXIgPSBzY2hlbWEuZ2V0Ci0gICAgICAgIGlmIHNjaGVtYS5nZXQoJ25vZGVUeXBlJykgPT0gJ0xJU1QnOgotICAgICAgICAgICAgZGF1Z2h0ZXIgPSBzY2hlbWEuZ2V0KCdsaXN0RWxlbWVudFNjaGVtYU5vZGUnKQotICAgICAgICAgICAgaW5kZXggPSBkYXVnaHRlci5nZXQoJ2tleU5vZGVOYW1lcycpCi0gICAgICAgICAgICBmaWVsZHMgPSBkYXVnaHRlci5nZXQoJ2NoaWxkTm9kZXMnKQotICAgICAgICAgICAgY29sdW1ucyA9IFsnfCcuam9pbihpbmRleCldCi0gICAgICAgIGVsaWYgc2NoZW1hLmdldCgnbm9kZVR5cGUnKSA9PSAnQ09OVEFJTkVSJzoKLSAgICAgICAgICAgIGluZGV4ID0gc2NoZW1hLmdldCgna2V5Tm9kZU5hbWVzJykKLSAgICAgICAgICAgIGZpZWxkcyA9IHNjaGVtYS5nZXQoJ2NoaWxkTm9kZXMnKQotICAgICAgICAgICAgY29sdW1ucyA9IFtdICMgbm8gaW5kZXggZm9yIENPTlRBSU5FUgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQgJ1NjaGVtYSAlcywgTm9kZVR5cGUgJXMgbmVlZHMgcm9vdCcgJSAobmFtZSwgc2NoZW1hLmdldCgnbm9kZVR5cGUnKSkKLSAgICAgICAgcHJpbnQgbmFtZSwgc2NoZW1hLmdldCgnbm9kZVR5cGUnKQotICAgICAgICBpZiBkZXNjcmlwdGlvbjoKLSAgICAgICAgICAgIHByaW50ICdNb2RlbCAlcyAiJXMiLCBrZXk6ICVzLCBmaWVsZHM6ICVzJyAlIChuYW1lLCBkZXNjcmlwdGlvbiwgaW5kZXgsIGZpZWxkcy5rZXlzKCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCAnTW9kZWwgJXMsIGtleSAlcywgZmllbGRzICVzJyAlIChuYW1lLCBpbmRleCwgZmllbGRzLmtleXMoKSkKLSAgICAgICAgaWYgaW5kZXg6Ci0gICAgICAgICAgICAjIHZlcmlmeSB0aGUgdGhlIGluZGV4IGl0ZW1zIGFyZSAKLSAgICAgICAgICAgIGZvdW5kX2luZGV4ID0gW3ggZm9yIHggaW4gaW5kZXggaWYgeCBpbiBmaWVsZHNdCi0gICAgICAgICAgICBwcmludCAnVmVyaWZpZWQgaW5kZXgnLCBmb3VuZF9pbmRleAotICAgICAgICBjb2x1bW5fdHlwZSA9IHt9Ci0gICAgICAgIGFkZF9maWVsZHMoMSwgZmllbGRzKQotICAgICAgICBwcmludCBjb2x1bW5zCi0gICAgICAgIHByaW50ICdDT0xVTU4gVFlQRScsIGxlbihjb2x1bW5fdHlwZSkKLSAgICAgICAgZm9yIChjb2x1bW4sIHNjaGVtYV90eXBlKSBpbiBjb2x1bW5fdHlwZS5pdGVtcygpOgotICAgICAgICAgICAgcHJpbnQgJ0NPTFVNTiBUWVBFJywgY29sdW1uLCBzY2hlbWFfdHlwZQotCi0gICAgICAgICMgc2Vjb25kIHZlcnNlLCBzYW1lIGFzIHRoZSBmaXJzdC4KLSAgICAgICAgZGVmIHRhYmxlX21ha2VyKGRlcHRoLCBzY2hlbWEsIHJlc3VsdHMsIGFfcm93KToKLQotICAgICAgICAgICAgbm9kZV90eXBlID0gc2NoZW1hLmdldCgnbm9kZVR5cGUnKQotICAgICAgICAgICAgbmFtZSA9IHNjaGVtYS5nZXQoJ25hbWUnKQotICAgICAgICAgICAgcHJpbnQgZGVwdGgsIG5hbWUsICdUWVBFJywgbm9kZV90eXBlCi0KLSAgICAgICAgICAgIGlmIG5vZGVfdHlwZSBpbiBbJ0xFQUYnXToKLSAgICAgICAgICAgICAgICBsZWFmX3R5cGUgPSBzY2hlbWEuZ2V0KCdsZWFmVHlwZScpCi0gICAgICAgICAgICAgICAgaWYgbGVhZl90eXBlID09ICdFTlVNRVJBVElPTic6Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfbW9kZSA9IHNjaGVtYS5nZXQoJ3R5cGVTY2hlbWFOb2RlJykKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ0xFQUYgRU5VTScsIHR5cGVfbW9kZSAhPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGVudW1fcmVzdWx0ID0gcmVzdWx0cwotICAgICAgICAgICAgICAgICAgICBpZiB0eXBlX25vZGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlX25vZGUuZ2V0KCdsZWFmVHlwZScpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1fdmFsdWVzID0gdHlwZV9ub2RlLmdldCgnZW51bWVyYXRpb25TcGVjaWZpY2F0aW9ucycpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZW51bV92YWx1ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGVudW1fdmFsdWVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZVsndmFsdWUnXSA9PSBlbnVtX3Jlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtX3Jlc3VsdCA9IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgZGVwdGgsICdMRUFGIEVOVU0gJXMgPC0gJXMgZnJvbSAlcycgJSAobmFtZSwgZW51bV9yZXN1bHQsIHJlc3VsdHMpCi0gICAgICAgICAgICAgICAgICAgIGFfcm93W25hbWVdID0gc3RyKGVudW1fcmVzdWx0KQotICAgICAgICAgICAgICAgIGVsaWYgYXRvbWljX3R5cGUocmVzdWx0cyk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50IGRlcHRoLCAnTEVBRiAlcyA8LSAlcycgJSAobmFtZSwgcmVzdWx0cykKLSAgICAgICAgICAgICAgICAgICAgYV9yb3dbbmFtZV0gPSBzdHIocmVzdWx0cykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmludCBkZXB0aCwgJ0xFQUYgTU9SRSBERVRBSUxTJywgc2NoZW1hLCB0eXBlKHJlc3VsdHMpLCByZXN1bHRzCi0gICAgICAgICAgICBlbGlmIG5vZGVfdHlwZSA9PSAnTElTVCc6Ci0gICAgICAgICAgICAgICAgcm93ID0ge30gaWYgYV9yb3cgPT0gTm9uZSBlbHNlIGRpY3QoYV9yb3cpCi0KLSAgICAgICAgICAgICAgICBkYXVnaHRlciA9IHNjaGVtYS5nZXQoJ2xpc3RFbGVtZW50U2NoZW1hTm9kZScpCi0gICAgICAgICAgICAgICAgaW5kZXggPSBkYXVnaHRlci5nZXQoJ2tleU5vZGVOYW1lcycpCi0gICAgICAgICAgICAgICAgIyB2ZXJpZnkgaW5kZXggaW4gbGlzdF9maWVsZHMKLSAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zID0gZGF1Z2h0ZXIuZ2V0KCdjaGlsZE5vZGVzJykKLSAgICAgICAgICAgICAgICBwcmludCBkZXB0aCwgJ0xJU1QnLCBuYW1lLCBpbmRleCwgbGlzdF9pdGVtcy5rZXlzKCkKLSAgICAgICAgICAgICAgICAjIGFkZF9maWVsZHMoZGVwdGgrMSwgbGlzdF9maWVsZHMpCi0gICAgICAgICAgICAgICAgZm9yIChpbmRleF92YWx1ZSwgcmVzdWx0KSBpbiByZXN1bHRzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdbXScsICclczolcycgJSAoaW5kZXgsIGluZGV4X3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICByb3dbJ3wnLmpvaW4oaW5kZXgpXSA9IGluZGV4X3ZhbHVlCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaXRlbV9uYW1lLCBpdGVtX3ZhbHVlKSBpbiBsaXN0X2l0ZW1zLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtX25hbWUgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX21ha2VyKGRlcHRoKzEsIGl0ZW1fdmFsdWUsIHJlc3VsdFtpdGVtX25hbWVdLCByb3cpCi0gICAgICAgICAgICAgICAgICAgIHByaW50ICdBUk9XJywgcm93Ci0gICAgICAgICAgICAgICAgICAgIHRhYmxlLmFwcGVuZChkaWN0KHJvdykpCi0gICAgICAgICAgICBlbGlmIG5vZGVfdHlwZSA9PSAnQ09OVEFJTkVSJzoKLSAgICAgICAgICAgICAgICAjIHNob3VsZCBhYnN0cmFjdCBuYW1lIHR5cGVzIGJlIGFkZGVkPwotICAgICAgICAgICAgICAgIGNoaWxkX25vZGVzID0gc2NoZW1hLmdldCgnY2hpbGROb2RlcycpCi0gICAgICAgICAgICAgICAgcHJpbnQgZGVwdGgsICdDT05UQUlORVInLCBuYW1lLCBjaGlsZF9ub2Rlcy5rZXlzKCkKLSAgICAgICAgICAgICAgICAjIGFkZF9maWVsZHMoZGVwdGgrMSwgY2hpbGRfbm9kZXMpCi0gICAgICAgICAgICAgICAgZm9yIChjaGlsZF9uYW1lLCBjaGlsZF92YWx1ZSkgaW4gY2hpbGRfbm9kZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgZGVwdGgsICdDT05UQUlORVIgUEFSVCcsIGNoaWxkX25hbWUKLSAgICAgICAgICAgICAgICAgICAgaWYgY2hpbGRfbmFtZSBpbiByZXN1bHRzOgotICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfbWFrZXIoZGVwdGgrMSwgY2hpbGRfdmFsdWUsIHJlc3VsdHNbY2hpbGRfbmFtZV0sIGFfcm93KQotCi0gICAgICAgIHRhYmxlID0gW10KLSAgICAgICAgY29sc193aWR0aCA9IHt9Ci0KLSAgICAgICAgaWYgdHlwZShyZXN1bHQpID09IGxpc3QgYW5kIGxlbihyZXN1bHQpID09IDE6Ci0gICAgICAgICAgICBwcmludCAnUFJVTkUgTElTVCcKLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFswXQotICAgICAgICB0YWJsZV9tYWtlcigxLCBzY2hlbWEsIHJlc3VsdCwge30pCi0KLSAgICAgICAgcHJpbnQgJysrKysrKysrKysrKysnCi0gICAgICAgIHByaW50IHRhYmxlCi0gICAgICAgIHByaW50ICcrKysrKysrKysrKysrJwotCi0gICAgICAgIGZvciBjb2x1bW4gaW4gY29sdW1uczoKLSAgICAgICAgICAgIGNvbHNfd2lkdGhbY29sdW1uXSA9IGxlbihjb2x1bW4pCi0gICAgICAgIGZvciByb3cgaW4gdGFibGU6Ci0gICAgICAgICAgICBmb3IgKGl0ZW0sIHZhbHVlKSBpbiByb3cuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBjb2xzX3dpZHRoOgotICAgICAgICAgICAgICAgICAgICBjb2xzX3dpZHRoW2l0ZW1dID0gbGVuKHZhbHVlKQotICAgICAgICAgICAgICAgIGVsaWYgbGVuKHZhbHVlKSA+IGNvbHNfd2lkdGhbaXRlbV06Ci0gICAgICAgICAgICAgICAgICAgIGNvbHNfd2lkdGhbaXRlbV0gPSBsZW4odmFsdWUpCi0gICAgICAgIAotICAgICAgICBwcmludCAnQ09MVU1OUy0+JywgY29sdW1ucwotICAgICAgICBwcmludCAnQ09MU19XSURUSC0+JywgY29sc193aWR0aAotCi0gICAgICAgICMgY29sdW1uIGhlYWRlcgotICAgICAgICBsaW5lID0gJycKLSAgICAgICAgZm9yIGNvbHVtbiBpbiBjb2x1bW5zOgotICAgICAgICAgICAgaWYgY29sdW1uIGluIGNvbHNfd2lkdGg6Ci0gICAgICAgICAgICAgICAgbGluZSArPSAnJS0qcyAnICUgKGNvbHNfd2lkdGhbY29sdW1uXSwgY29sdW1uKQotICAgICAgICBwcmludCBsaW5lCi0gICAgICAgIHByaW50ICc9JyAqIGxlbihsaW5lKQotCi0gICAgICAgIGxpbmUgPSAnJwotICAgICAgICBmb3IgY29sdW1uIGluIGNvbHVtbnM6Ci0gICAgICAgICAgICB0eXBlX2luZm8gPSAnICcgKiBjb2xzX3dpZHRoW2NvbHVtbl0KLSAgICAgICAgICAgIGlmIGNvbHVtbiBpbiBjb2x1bW5fdHlwZToKLSAgICAgICAgICAgICAgICBjdCA9IGNvbHVtbl90eXBlW2NvbHVtbl0KLSAgICAgICAgICAgICAgICBwcmludCBjb2x1bW4sIGN0Ci0gICAgICAgICAgICAgICAgaWYgdHlwZShjdCkgPT0gc3RyIG9yIHR5cGUoY3QpID09IHVuaWNvZGU6Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfaW5mbyA9ICclKnMnICUgKGNvbHNfd2lkdGhbY29sdW1uXSwgY3QpCi0gICAgICAgICAgICAgICAgZWxpZiBjdC5nZXQoJ2xlYWZUeXBlJyk6Ci0gICAgICAgICAgICAgICAgICAgIGxlYWZfdHlwZSA9IGN0LmdldCgnbGVhZlR5cGUnKQotICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKGxlYWZfdHlwZSkgPT0gdW5pY29kZSBvciB0eXBlKGxlYWZfdHlwZSkgPT0gc3RyOgotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9pbmZvID0gJyUqcycgJSAoY29sc193aWR0aFtjb2x1bW5dLCBsZWFmX3R5cGUpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAnQ1QgTEVBRl9UWVBFJywgY3QKLSAgICAgICAgICAgICAgICBpZiBjdC5nZXQoJ25vZGVUeXBlJyk6Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVfdHlwZSA9IGN0LmdldCgnbm9kZVR5cGUnKQotICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKG5vZGVfdHlwZSkgPT0gc3RyIG9yIHR5cGUobm9kZV90eXBlKSA9PSB1bmljb2RlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm9kZV90eXBlICE9ICdMRUFGJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX2luZm8gPSAnJSpzJyAlIChjb2xzX3dpZHRoW2NvbHVtbl0sIG5vZGVfdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfaW5mbyA9ICclKnMnICUgKGNvbHNfd2lkdGhbY29sdW1uXSwgbm9kZV90eXBlWyduYW1lJ10pCi0gICAgICAgICAgICAgICAgaWYgY3QuZ2V0KCduYW1lJyk6Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfaW5mbyA9ICclKnMnICUgKGNvbHNfd2lkdGhbY29sdW1uXSwgY3RbJ25hbWUnXSkKLQotICAgICAgICAgICAgbGluZSArPSB0eXBlX2luZm8KLSAgICAgICAgcHJpbnQgbGluZQotCi0gICAgICAgIGxpbmUgPSAnJwotICAgICAgICBmb3IgY29sdW1uIGluIGNvbHVtbnM6Ci0gICAgICAgICAgICBpZiBjb2x1bW4gaW4gY29sc193aWR0aDoKLSAgICAgICAgICAgICAgICBsaW5lICs9ICclc3wnICUgKCctJyAqIGNvbHNfd2lkdGhbY29sdW1uXSwpCi0gICAgICAgIHByaW50IGxpbmUKLSAgICAgICAgZm9yIHJvdyBpbiB0YWJsZToKLSAgICAgICAgICAgIGxpbmUgPSAnJwotICAgICAgICAgICAgZm9yIGNvbHVtbiBpbiBjb2x1bW5zOgotICAgICAgICAgICAgICAgIGxpbmUgKz0gJyUqcyAnICUgKGNvbHNfd2lkdGhbY29sdW1uXSwgcm93LmdldChjb2x1bW4sICcnKSkKLSAgICAgICAgICAgIHByaW50IGxpbmUKLQotICAgICAgICByZXR1cm4gdGFibGUKLQotCi0gICAgZGVmIG5hbWVfaXNfY29tcG91bmRfa2V5KHNlbGYsIG5hbWUpOgotICAgICAgICBpZiBuYW1lLmZpbmQoJ3wnKSAhPSAtMToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLSAgICBkZWYgdGFibGVfYm9keV9zb3J0ZXIoc2VsZiwgdGFibGUsIHNvcnRfY29sdW1ucyk6Ci0gICAgICAgIGRlZiBzb3J0X2NtcCh4LHkpOgotICAgICAgICAgICAgZm9yIGYgaW4gc29ydF9jb2x1bW5zOgotICAgICAgICAgICAgICAgIGlmIGYgaW4geDoKLSAgICAgICAgICAgICAgICAgICAgYyA9IHV0aWYudHJhaWxpbmdfaW50ZWdlcl9jbXAoeC5nZXQoZiksIHkuZ2V0KGYpKQotICAgICAgICAgICAgICAgICAgICBpZiBjOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIHJldHVybiBzb3J0ZWQodGFibGUsIGNtcD1zb3J0X2NtcCkKLQotCi0gICAgZGVmIHRhYmxlX2NvbHVtbnNfd2lkdGgoc2VsZiwgdGFibGUsIGNvbHVtbnMpOgotICAgICAgICAiIiIKLSAgICAgICAgVGFibGUgaXMgYSBsaXN0IG9mIGRpY3Rpb25hcmllcy4KLQotICAgICAgICBDb2x1bW5zIGlzIGEgbGlzdCBvZiBjb2x1bW4gaGVhZGVyIG5hbWVzLgotICAgICAgICAiIiIKLSAgICAgICAgY29sc193aWR0aCA9IHt9Ci0gICAgICAgIGZvciBjb2x1bW4gaW4gY29sdW1uczoKLSAgICAgICAgICAgIGNvbHNfd2lkdGhbY29sdW1uXSA9IGxlbihjb2x1bW4pCi0gICAgICAgIGZvciByb3cgaW4gdGFibGU6Ci0gICAgICAgICAgICBmb3IgKGl0ZW0sIHZhbHVlKSBpbiByb3cuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBjb2xzX3dpZHRoOgotICAgICAgICAgICAgICAgICAgICBjb2xzX3dpZHRoW2l0ZW1dID0gbGVuKHZhbHVlKQotICAgICAgICAgICAgICAgIGVsaWYgbGVuKHZhbHVlKSA+IGNvbHNfd2lkdGhbaXRlbV06Ci0gICAgICAgICAgICAgICAgICAgIGNvbHNfd2lkdGhbaXRlbV0gPSBsZW4odmFsdWUpCi0gICAgICAgIHJldHVybiBjb2xzX3dpZHRoCi0KLQotICAgIGRlZiB0YWJsZV9oZWFkZXIoc2VsZiwgY29sc193aWR0aCwgdGl0bGUgPSBOb25lLCBjb2x1bW5zID0gTm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBQcmludCB0aGUgdGFibGUgaGVhZGVycy4KLSAgICAgICAgIiIiCi0gICAgICAgICMgY29sdW1uIGhlYWRlcgotICAgICAgICBsaW5lID0gJycKLSAgICAgICAgZm9yIGNvbHVtbiBpbiBjb2x1bW5zOgotICAgICAgICAgICAgaWYgc2VsZi5uYW1lX2lzX2NvbXBvdW5kX2tleShjb2x1bW4pOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBjb2x1bW4gaW4gY29sc193aWR0aDoKLSAgICAgICAgICAgICAgICBsaW5lICs9ICclLSpzICcgJSAoY29sc193aWR0aFtjb2x1bW5dLCBjb2x1bW4pCi0KLSAgICAgICAgIyB0YWJsZSB0aXRsZQotICAgICAgICBpZiB0aXRsZToKLSAgICAgICAgICAgIGxlbl9kYXNoX2xlZnQgPSAobGVuKGxpbmUpIC0gbGVuKHRpdGxlKSAtIDIpCi0gICAgICAgICAgICBoYWxmX2xlZnQgPSBsZW5fZGFzaF9sZWZ0IC8gMgotICAgICAgICAgICAgc2xvcCA9ICcnCi0gICAgICAgICAgICBpZiBsZW5fZGFzaF9sZWZ0ICYgMToKLSAgICAgICAgICAgICAgICBzbG9wID0gJyAnCi0gICAgICAgICAgICB5aWVsZCAgJz0nICogaGFsZl9sZWZ0ICsgJyAlcyVzICcgJSAodGl0bGUsIHNsb3ApICsgJz0nICogaGFsZl9sZWZ0Ci0KLSAgICAgICAgIyBmaW5hbGx5IHByaW50IHRoZSBjb2x1bW4gaGVhZGVyCi0gICAgICAgIGlmIGxpbmUgPT0gJyc6Ci0gICAgICAgICAgICB5aWVsZCAnLS1jb2xzIGVtcHR5LS0nCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB5aWVsZCBsaW5lCi0KLSAgICAgICAgbGluZSA9ICcnCi0gICAgICAgIGZvciBjb2x1bW4gaW4gY29sdW1uczoKLSAgICAgICAgICAgIGlmIHNlbGYubmFtZV9pc19jb21wb3VuZF9rZXkoY29sdW1uKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgY29sdW1uIGluIGNvbHNfd2lkdGg6Ci0gICAgICAgICAgICAgICAgbGluZSArPSAnJXN8JyAlICgnLScgKiBjb2xzX3dpZHRoW2NvbHVtbl0sKQotICAgICAgICB5aWVsZCBsaW5lCi0KLQotICAgIGRlZiBhbGxfY29sdW1uc19leGNlcHQoc2VsZiwgdGFibGUsIGV4Y2VwdF9jb2x1bW5zID0gTm9uZSk6Ci0gICAgICAgIGFsbF9jb2x1bW5zID0gW10KLSAgICAgICAgaWYgZXhjZXB0X2NvbHVtbnMgPT0gTm9uZToKLSAgICAgICAgICAgIGV4Y2VwdF9jb2x1bW5zID0gW10KLSAgICAgICAgIyBub3cgZW5zdXJlIGFsbCBjb2x1bW5zIGFyZSByZXByZXNlbnRlZAotICAgICAgICBmb3Igcm93IGluIHRhYmxlOgotICAgICAgICAgICAgZm9yIGZpZWxkIGluIHJvdy5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5uYW1lX2lzX2NvbXBvdW5kX2tleShmaWVsZCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgZmllbGQgbm90IGluIGV4Y2VwdF9jb2x1bW5zIGFuZCBmaWVsZCBub3QgaW4gYWxsX2NvbHVtbnM6Ci0gICAgICAgICAgICAgICAgICAgIGFsbF9jb2x1bW5zLmFwcGVuZChmaWVsZCkKLSAgICAgICAgcmV0dXJuIHNvcnRlZChhbGxfY29sdW1ucykKLQotICAgICAgICAKLSAgICBkZWYgdGFibGVfYm9keShzZWxmLCB0YWJsZSwgdGl0bGUgPSBOb25lLCBjb2x1bW5zID0gTm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGUgaW5wdXQgdGFibGUgaXMgYSBsaXN0IG9mIGRpY3Rpb25hcmllcy4gIEZyb20gdGhlCi0gICAgICAgIG5hbWU6dmFsdWUgcGFpcnMsIGJ1aWxkIGEgc2ltcGxlIG91dHB1dCBmb3JtYXR0ZXIuCi0KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgY29sdW1ucyA9PSBOb25lOgotICAgICAgICAgICAgY29sdW1ucyA9IFtdCi0gICAgICAgIGVsc2U6ICMgdXNlIHRoZSBjb2x1bW5zIHBhc3NlZCBpbiBhcyBhIGJhc2lzIGZvciBzb3J0aW5nCi0gICAgICAgICAgICB0YWJsZSA9IHNlbGYudGFibGVfYm9keV9zb3J0ZXIodGFibGUsIGNvbHVtbnMpCi0KLSAgICAgICAgIyBub3cgZW5zdXJlIGFsbCBjb2x1bW5zIGFyZSByZXByZXNlbnRlZAotICAgICAgICBjb2x1bW5zICs9IHNlbGYuYWxsX2NvbHVtbnNfZXhjZXB0KHRhYmxlLCBjb2x1bW5zKQotCi0gICAgICAgIGNvbHNfd2lkdGggPSBzZWxmLnRhYmxlX2NvbHVtbnNfd2lkdGgodGFibGUsIGNvbHVtbnMpCi0KLSAgICAgICAgIyB3YWl0aW5nIGZvciAneWllbGQgZnJvbScKLSAgICAgICAgIyB5aWVsZCBmcm9tIHRhYmxlX2hlYWRlcihjb2xzX3dpZHRoLCB0aXRsZSwgY29sdW1uCi0gICAgICAgIGZvciBpdGVtIGluIHNlbGYudGFibGVfaGVhZGVyKGNvbHNfd2lkdGgsIHRpdGxlLCBjb2x1bW5zKToKLSAgICAgICAgICAgIHlpZWxkIGl0ZW0KLQotICAgICAgICBmb3Igcm93IGluIHRhYmxlOgotICAgICAgICAgICAgbGluZSA9ICcnCi0gICAgICAgICAgICBmb3IgY29sdW1uIGluIGNvbHVtbnM6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHNlbGYubmFtZV9pc19jb21wb3VuZF9rZXkoY29sdW1uKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSArPSAnJS0qcyAnICUgKGNvbHNfd2lkdGhbY29sdW1uXSwgcm93LmdldChjb2x1bW4sICcnKSkKLSAgICAgICAgICAgIHlpZWxkIGxpbmUKLQotICAgICAgICByZXR1cm4KLQotCi0gICAgZGVmIHRhYmxlX3RpdGxlX2J1aWxkZXIoc2VsZiwgbmFtZSwgaW5kaWNlc19saXN0KToKLSAgICAgICAgIiIiCi0gICAgICAgIEJ1aWxkIGEgdGl0bGUsIGJhc2VkIG9uIHRoZSB0YWJsZSBuYW1lLCB0aGVuCi0gICAgICAgIGFkZGVkIHRvIHRoYXQgYXJlIGFueSBuYW1lOnZhbHVlIHBhcmlzIGluIHRoZQotICAgICAgICBpbmRpY2VzX2xpc3QsIGluIG9yZGVyLCB3aG9zZSB2YWx1ZSBpc24ndCBOb25lCi0gICAgICAgIChOb25lIGN1cnJlbnRseSBtZWFucyB0aGUgaW5kZXggaXMgZnJvbSB0aGUgbmFtZSBvZgotICAgICAgICBhICdDT05UQUlORVInLCB3aGljaCBkb2Vzbid0IHJlcXVpcmUgYW4gaW5kZXgpCi0gICAgICAgICIiIgotICAgICAgICB0aXRsZSA9IFtuYW1lXQotICAgICAgICBpZiBpbmRpY2VzX2xpc3Q6Ci0gICAgICAgICAgICBmb3IgaW5kZXhfZGljdCBpbiBpbmRpY2VzX2xpc3Q6Ci0gICAgICAgICAgICAgICAgIyBub3QgdXNpbmcgYSBjb21wcmVoZW5zaW9uIGhlcmUgdG8gCi0gICAgICAgICAgICAgICAgIyBrZWVwIHRoZSB0ZXh0IHdpZHRoIHNtYWxsLgotICAgICAgICAgICAgICAgIGZvciAobix2KSBpbiBpbmRleF9kaWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHYgIT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLmFwcGVuZCgnJXM6JXMnICUgKG4sdikpCi0gICAgICAgIHJldHVybiAnICcuam9pbih0aXRsZSkKLQotCi0gICAgZGVmIHRhYmxlX2luZGV4X2NvbHVtbnMoc2VsZiwgbmFtZSwgaW5kaWNlc19saXN0KToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoZSAnaW5kZXggY29sdW1ucycgYXJlIHRoZSBjb2x1bW5zIHdoaWNoIGhhdmUgYmVlbgotICAgICAgICB1c2VkIGFzICdrZXlOb2RlTmFtZXMnIGZvciBlYWNoIG9mIHRoZSAnTElTVCdzLiAgVGhlc2UKLSAgICAgICAgYXJlIGhhbmR5IHRvIG1vdmUgdG93YXJkcyB0aGUgJ2xlZnQnIHNpZGUgb2YgdGhlIHRhYmxlCi0gICAgICAgICIiIgotICAgICAgICBjb2x1bW5zID0gW10KLSAgICAgICAgaWYgaW5kaWNlc19saXN0OgotICAgICAgICAgICAgZm9yIGluZGV4X2RpY3QgaW4gaW5kaWNlc19saXN0OgotICAgICAgICAgICAgICAgIGNvbHVtbnMgKz0gaW5kZXhfZGljdC5rZXlzKCkKLSAgICAgICAgcmV0dXJuIGNvbHVtbnMKLQotCi0gICAgZGVmIHNjaGVtYV9vZl9wYXRoKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRoZSBjaGlsZCB0cmVlIGJhc2VkIG9uIGEgcmVxdWVzdGVkIHBhdGguCi0gICAgICAgICIiIgotICAgICAgICBpZiB0eXBlKHBhdGgpID09IHN0cjoKLSAgICAgICAgICAgIHBhdGggPSBwYXRoLnNwbGl0KCcvJykKLSAgICAgICAgCi0gICAgICAgIGN1cnIgPSBzZWxmLnNjaGVtYQotICAgICAgICBmb3IgZWxlbWVudCBpbiBwYXRoOgotICAgICAgICAgICAgbm9kZV90eXBlID0gY3Vyci5nZXQoJ25vZGVUeXBlJykKLSAgICAgICAgICAgIGlmIG5vZGVfdHlwZSA9PSAnQ09OVEFJTkVSJzoKLSAgICAgICAgICAgICAgICBjaGlsZF9ub2RlcyA9IGN1cnIuZ2V0KCdjaGlsZE5vZGVzJykKLSAgICAgICAgICAgICAgICBuZXh0ID0gY2hpbGRfbm9kZXMuZ2V0KGVsZW1lbnQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50ICdzY2hlbWFfb2ZfcGF0aDogbmVlZCBoZWxwIGZvciAnLCBub2RlX3R5cGUKLSAgICAgICAgICAgICAgICBwcmludCAnRklORCcsIG5vZGVfdHlwZSwgcGF0aCwgY3Vyci5rZXlzKCkKLSAgICAgICAgICAgICAgICBuZXh0ID0gTm9uZQotICAgICAgICAgICAgaWYgbmV4dCA9PSBOb25lOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBjdXJyID0gbmV4dAotICAgICAgICByZXR1cm4gY3VycgotCi0KLSAgICBkZWYgZGlzcGxheShzZWxmLCBwYXRoLCBzdHlsZSA9ICd0YWJsZScpOgotICAgICAgICBzY2hlbWEgPSBzZWxmLnNjaGVtYV9vZl9wYXRoKHBhdGgpCi0gICAgICAgIGlmIHNjaGVtYSA9PSBOb25lOgotICAgICAgICAgICAgcHJpbnQgJ1Vua25vd24gSXRlbScsIHBhdGgKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHJlc3VsdCA9IHNlbGYuZGF0YV9yZXN0X3JlcXVlc3QocGF0aCkKLSAgICAgICAgaWYgcmVzdWx0ID09IE5vbmU6Ci0gICAgICAgICAgICBwcmludCAnTm8gcmVzdWx0IGZvciAlcycgJSBwYXRoCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIHByaW50IHJlc3VsdAotICAgICAgICAjIHByaW50IHNlbGYuZm9ybWF0X3RhYmxlKHJlc3VsdCwgcmVzdF9pdGVtKQotCi0gICAgICAgIHByaW50ICdTQ0hFTUEtMi1SRVNVTFQnLCBwYXRoCi0gICAgICAgICNwcmludCAnU0NIRU1BLTItUkVTVUxUIFJFU1VMVCcsIHJlc3VsdAotCi0gICAgICAgIHRhYmxlc19uYW1lcyA9IFtdICAgIyB0YWJsZSBuYW1lcyBpbiBvcmRlci4KLSAgICAgICAgdGFibGVzID0ge30gICAgICAgICAjIGRpY3Rpb25hcnkgb2YgdGFibGVzLCBpbmRleGVkIGJ5IG5hbWUKLSAgICAgICAgdGl0bGVzID0ge30gICAgICAgICAjIGRpY3Rpb25hcnkgb2YgdGl0bGVzLCBpbmRleGVkIGJ5IG5hbWUKLSAgICAgICAgY29sdW1ucyA9IHt9ICAgICAgICAjIGRpY3Rpb25hcnkgb2YgY29sdW1ucywgaW5kZXhlZCBieSBuYW1lCi0KLSAgICAgICAgIyBBcHBseSB0aGUgcmVzdWx0IHRvIHRoZSBzY2hlbWEuCi0gICAgICAgICMgJ3NjaGVtYV90b19yZXN1bHRzJyBpcyBhbiBpdGVyYXRvciAoZ2VuZXJhdG9yKSwgd2hpY2gKLSAgICAgICAgIyByZXR1cm5zIHR1cGxlcy4KLSAgICAgICAgZm9yIHJvdyBpbiBzZWxmLnNjaGVtYV90b19yZXN1bHRzKCcnLCBzY2hlbWEsIHJlc3VsdCk6Ci0gICAgICAgICAgICBwcmludCAnXicsIHJvdwotICAgICAgICAgICAgIyByZXR1cm4gdHVwbGU6Ci0gICAgICAgICAgICAjIChhY3Rpb24sIG5hbWUsIHBhdGgsIGluZGljZXMsIHJvdywgbmV3X3JvdykKLSAgICAgICAgICAgICMgICAgMCAgICAgIDEgICAgIDIgICAgICAzICAgICAgIDQgICAgIDUKLSAgICAgICAgICAgIGFjdGlvbiA9IHJvd1swXQotICAgICAgICAgICAgbmFtZSA9IHJvd1sxXQotICAgICAgICAgICAgaWYgYWN0aW9uID09ICdMSVNULUJFR0lOJzoKLSAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiB0YWJsZXNfbmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgIHRhYmxlc19uYW1lcy5hcHBlbmQobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgdGFibGVzW25hbWVdID0gW10KLSAgICAgICAgICAgICAgICAjIGVuc3VyZSB0YWJsZSBpcyBlbXB0eQotICAgICAgICAgICAgICAgICMgaWYgbmFtZSBpbiB0YWJsZXM6Ci0gICAgICAgICAgICAgICAgICAgICMgdGFibGVzW25hbWVdID0gW10KLSAgICAgICAgICAgIGVsaWYgYWN0aW9uID09ICdMSVNULUlURU0nOgotICAgICAgICAgICAgICAgICMgYWRkIHRoZSBpdGVtcyB0byB0aGUgdGFibGUuCi0gICAgICAgICAgICAgICAgdGFibGVfcm93ID0gZGljdChyb3dbNV0pCi0gICAgICAgICAgICAgICAgZm9yIGluZGV4IGluIHJvd1szXToKLSAgICAgICAgICAgICAgICAgICAgdGFibGVfcm93LnVwZGF0ZShpbmRleCkgIyBpbmRpY2VzCi0gICAgICAgICAgICAgICAgaWYgbmFtZSBpbiB0YWJsZXM6Ci0gICAgICAgICAgICAgICAgICAgIHRhYmxlc1tuYW1lXS5hcHBlbmQodGFibGVfcm93KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRhYmxlc1tuYW1lXSA9IFt0YWJsZV9yb3ddCi0gICAgICAgICAgICBlbGlmIGFjdGlvbiA9PSAnTElTVC1FTkQnOgotICAgICAgICAgICAgICAgICMgZGlzcGxheSB0aGUgcmVzdWx0Ci0gICAgICAgICAgICAgICAgaWYgbmFtZSBpbiB0YWJsZXM6Ci0gICAgICAgICAgICAgICAgICAgIHRpdGxlc1tuYW1lXSA9IHNlbGYudGFibGVfdGl0bGVfYnVpbGRlcihuYW1lLCByb3dbM10pCi0gICAgICAgICAgICAgICAgICAgIGNvbHVtbnNbbmFtZV0gPSBzZWxmLnRhYmxlX2luZGV4X2NvbHVtbnMobmFtZSwgcm93WzNdKQotICAgICAgICAgICAgICAgICAgICBwcmludCAnSU5ERVgnLCBuYW1lLCByb3dbM10sIGNvbHVtbnNbbmFtZV0KLQotICAgICAgICAjIHZhbGlkYXRpb24gLS0KLSAgICAgICAgZm9yIHRhYmxlIGluIHRhYmxlc19uYW1lczoKLSAgICAgICAgICAgIGlmIG5vdCB0YWJsZSBpbiB0YWJsZXMua2V5cygpOgotICAgICAgICAgICAgICAgIHByaW50ICdMaXN0IG9mIHRhYmxlcyBkb2VzbicndCBtYXRjaCB0YWJsZXMga2V5cycKLSAgICAgICAgICAgICAgICBwcmludCB0YWJsZXNfbmFtZXMsIGxlbih0YWJsZXNfbmFtZXMpCi0gICAgICAgICAgICAgICAgcHJpbnQgdGFibGVzLmtleXMoKSwgbGVuKHRhYmxlcy5rZXlzKCkpCi0KLSAgICAgICAgc2VwYXJhdG9yID0gTm9uZQotICAgICAgICAjIHNlbGVjdCBzdHlsZS4KLSAgICAgICAgaWYgc3R5bGUgPT0gJ2xpc3QnOgotICAgICAgICAgICAgcHJlZml4ID0gJyAgICAnCi0gICAgICAgICAgICBmb3IgKHRhYmxlX25hbWUsIHRhYmxlX2RldGFpbHMpIGluIHRhYmxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIGNvbHMgPSA3OQotICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbnMgPSBjb2x1bW5zW3RhYmxlX25hbWVdCi0gICAgICAgICAgICAgICAgbGFzdF9jb2x1bW5zID0gc2VsZi5hbGxfY29sdW1uc19leGNlcHQodGFibGVfZGV0YWlscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9jb2x1bW5zKQotICAgICAgICAgICAgICAgIGlmIHNlcGFyYXRvciAhPSBOb25lOgotICAgICAgICAgICAgICAgICAgICBwcmludCBzZXBhcmF0b3IKLSAgICAgICAgICAgICAgICBmb3Igcm93IGluIHRhYmxlX2RldGFpbHM6Ci0gICAgICAgICAgICAgICAgICAgIHJvd19saW5lcyA9IDAKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IHRhYmxlX25hbWUgKyAnICcKLSAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW1fbmFtZSBpbiBmaXJzdF9jb2x1bW5zICsgbGFzdF9jb2x1bW5zOgotICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV92YWx1ZSA9IHJvdy5nZXQoaXRlbV9uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbV92YWx1ZSA9PSBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2l0ZW0gPSAnJXM6ICVzICcgJSAoaXRlbV9uYW1lLCBpdGVtX3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmUpICsgbGVuKG5leHRfaXRlbSkgPiBjb2xzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IGxpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gcHJlZml4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93X2xpbmVzICs9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gbmV4dF9pdGVtCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpbmUgIT0gcHJlZml4OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgbGluZQotICAgICAgICAgICAgICAgICAgICBpZiByb3dfbGluZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAnJwotICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9ICcnCi0KLSAgICAgICAgZWxpZiBzdHlsZSA9PSAndGFibGUnOgotICAgICAgICAgICAgIyBub3cgcHJpbnQgdGhlIHRhYmxlcy4KLSAgICAgICAgICAgIGZvciB0YWJsZV9uYW1lIGluIHRhYmxlc19uYW1lczoKLSAgICAgICAgICAgICAgICBpZiBzZXBhcmF0b3IgIT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgc2VwYXJhdG9yCi0gICAgICAgICAgICAgICAgaWYgbGVuKHRhYmxlX25hbWUpID4gMToKLSAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZXNbdGFibGVfbmFtZV0KLQotICAgICAgICAgICAgICAgIGlmIGxlbih0YWJsZXNbdGFibGVfbmFtZV0pID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxlbih0YWJsZV9uYW1lKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCB0YWJsZV9uYW1lLCAnTm9uZS4nCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAnTm9uZS4nCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0YWJsZV9uYW1lCi0gICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHNlbGYudGFibGVfYm9keSh0YWJsZXNbdGFibGVfbmFtZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNbdGFibGVfbmFtZV0pOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgaXRlbQotICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9ICcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCAnc2RuZGI6ZGlzcGxheSB1bmtub3duIHN0eWxlICVzJyAlIHN0eWxlCi0KLSAgICBkZWYgc2NoZW1hX2RldGFpbGVyX3ZhbGlkYXRvcnMoc2VsZiwgdHlwZV9zY2hlbWFfbm9kZSk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXN1bHQgaXMgYSBkaWN0aW9uYXJ5IG9mIHZhbGlkYXRvcl9uYW1lOi4uLgotCi0gICAgICAgIFRvIGRpc3BsYXkgdGhlc2UsIHVzZSBzb21ldGhuZyBsaWtlOgotICAgICAgICAnICcuam9pbihbJyVzOiVzJyAlIChuLHYpIGZvciAobix2KSBpbiB2X2RpY3RdCi0gICAgICAgICIiIgotICAgICAgICB2X2RpY3QgPSB7fQotCi0gICAgICAgIGZvciB2YWxpZGF0b3IgaW4gdHlwZV9zY2hlbWFfbm9kZS5nZXQoJ3R5cGVWYWxpZGF0b3InLCBbXSk6Ci0gICAgICAgICAgICBraW5kID0gdmFsaWRhdG9yLmdldCgndHlwZScpCi0gICAgICAgICAgICBpZiBraW5kID09ICdSQU5HRV9WQUxJREFUT1InOgotICAgICAgICAgICAgICAgIGtpbmQgPSAncmFuZ2UnCi0gICAgICAgICAgICBlbGlmIGtpbmQgPT0gJ0xFTkdUSF9WQUxJREFUT1InOgotICAgICAgICAgICAgICAgIGtpbmQgPSAnbGVuZ3RoJwotICAgICAgICAgICAgZWxpZiBraW5kID09ICdFTlVNRVJBVElPTl9WQUxJREFUT1InOgotICAgICAgICAgICAgICAgIGtpbmQgPSAnZW51bScKLSAgICAgICAgICAgIGVsaWYga2luZCA9PSAnUEFUVEVSTl9WQUxJREFUT1InOgotICAgICAgICAgICAgICAgIGtpbmQgPSAncGF0dGVybicKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ1ZhbGlkYXRvciBLaW5kIHVua25vd246Jywga2luZAotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGlmIG5vdCBraW5kIGluIHZfZGljdDoKLSAgICAgICAgICAgICAgICB2X2RpY3Rba2luZF0gPSBbXQotCi0gICAgICAgICAgICBpZiBraW5kID09ICdyYW5nZScgb3Iga2luZCA9PSAnbGVuZ3RoJzoKLSAgICAgICAgICAgICAgICBmb3IgcmFuZ2UgaW4gdmFsaWRhdG9yLmdldCgncmFuZ2VzJywgW10pOgotICAgICAgICAgICAgICAgICAgICB2X2RpY3Rba2luZF0uYXBwZW5kKCcoJXM6JXMpJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubW0ocmFuZ2VbJ3N0YXJ0J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1tKHJhbmdlWydlbmQnXSkpKQotICAgICAgICAgICAgZWxpZiBraW5kID09ICdwYXR0ZXJuJzoKLSAgICAgICAgICAgICAgICB2X2RpY3Rba2luZF0uYXBwZW5kKHZhbGlkYXRvci5nZXQoJ3BhdHRlcm4nKSkKLSAgICAgICAgICAgIGVsaWYga2luZCA9PSAnZW51bSc6Ci0gICAgICAgICAgICAgICAgbmFtZV9kaWN0ID0gdmFsaWRhdG9yLmdldCgnbmFtZXMnKQotICAgICAgICAgICAgICAgIHZfZGljdFtraW5kXS5hcHBlbmQoJywnLmpvaW4oWydbJXM6JXNdJyAlIChuLHYpIGZvciAobix2KSBpbiBuYW1lX2RpY3QuaXRlbXMoKV0pKQotICAgICAgICByZXR1cm4gdl9kaWN0Ci0gIAotCi0gICAgZGVmIHNjaGVtYV9kZXRhaWxlcihzZWxmLCBzY2hlbWEsIGRlcHRoID0gTm9uZSk6Ci0gICAgICAgIGlmIGRlcHRoID09IE5vbmU6Ci0gICAgICAgICAgICBkZXB0aCA9IDAKLSAgICAgICAgaW5kZW50ID0gJyAgJyAqIGRlcHRoCi0KLSAgICAgICAgbmFtZSA9IHNjaGVtYS5nZXQoJ25hbWUnKQotICAgICAgICBub2RlX3R5cGUgPSBzY2hlbWEuZ2V0KCdub2RlVHlwZScpCi0gICAgICAgIGlmIG5vZGVfdHlwZSA9PSAnTEVBRic6Ci0gICAgICAgICAgICBpZiBzZWxmLnNkbnNoLmRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgIHByaW50IGluZGVudCwgJ0xFQUYnLCBzY2hlbWEKLSAgICAgICAgICAgIGxlYWZfdHlwZSA9IHNjaGVtYS5nZXQoJ2xlYWZUeXBlJykKLSAgICAgICAgICAgIG1hbmRhdG9yeSA9IHNjaGVtYS5nZXQoJ21hbmRhdG9yeScpCi0gICAgICAgICAgICB0eXBlX3NjaGVtYV9ub2RlID0gc2NoZW1hLmdldCgndHlwZVNjaGVtYU5vZGUnLCB7fSkKLSAgICAgICAgICAgIHZfZGljdCA9IHNlbGYuc2NoZW1hX2RldGFpbGVyX3ZhbGlkYXRvcnModHlwZV9zY2hlbWFfbm9kZSkKLSAgICAgICAgICAgIHlpZWxkICgnJXMlcyBMRUFGIHR5cGU6ICVzIG1hbmRhdG9yeTogJXMgJXMnICUKLSAgICAgICAgICAgICAgICAgICAoaW5kZW50LCBuYW1lLCBsZWFmX3R5cGUsIG1hbmRhdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgJyAnLmpvaW4oWyIlczolcyIgJSAobiwnLCcuam9pbih2KSkgZm9yIChuLHYpIGluIHZfZGljdC5pdGVtcygpXSkpKQotCi0gICAgICAgICAgICBpZiBsZWFmX3R5cGUgPT0gJ1VOSU9OJzoKLSAgICAgICAgICAgICAgICBub2RlcyA9IHR5cGVfc2NoZW1hX25vZGUuZ2V0KCd0eXBlU2NoZW1hTm9kZXMnKQotICAgICAgICAgICAgICAgIGZvciBub2RlIGluIG5vZGVzOgotICAgICAgICAgICAgICAgICAgICB2X2RpY3QgPSBzZWxmLnNjaGVtYV9kZXRhaWxlcl92YWxpZGF0b3JzKG5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkICgnICAlcyVzIFRZUEUgJXMnICUgKGluZGVudCwgbm9kZS5nZXQoJ25hbWUnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcgJy5qb2luKFsiJXM6JXMiICUgKG4sJywnLmpvaW4odikpIGZvciAobix2KSBpbiB2X2RpY3QuaXRlbXMoKV0pKSkKLQotICAgICAgICBlbGlmIG5vZGVfdHlwZSA9PSAnTEVBRl9MSVNUJzoKLSAgICAgICAgICAgIGxlYWZfbm9kZSA9IHNjaGVtYS5nZXQoJ2xlYWZTY2hlbWFOb2RlJykKLSAgICAgICAgICAgIG1hbmRhdG9yeSA9IHNjaGVtYS5nZXQoJ21hbmRhdG9yeScpCi0gICAgICAgICAgICBiYXNlX3R5cGUgPSBsZWFmX25vZGUuZ2V0KCdsZWFmVHlwZScpCi0gICAgICAgICAgICB0eXBlX3NjaGVtYV9ub2RlID0gbGVhZl9ub2RlLmdldCgndHlwZVNjaGVtYU5vZGUnLCB7fSkKLSAgICAgICAgICAgIHZfZGljdCA9IHNlbGYuc2NoZW1hX2RldGFpbGVyX3ZhbGlkYXRvcnModHlwZV9zY2hlbWFfbm9kZSkKLQotICAgICAgICAgICAgeWllbGQgKCclcyVzOiBMRUFGLUxJU1QgbWFuZGF0b3J5ICVzIExJU1Qgb2YgJXMgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgKGluZGVudCwgbmFtZSwgbWFuZGF0b3J5LCBiYXNlX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAnICcuam9pbihbIiVzOiVzIiAlIChuLCcsJy5qb2luKHYpKSBmb3IgKG4sdikgaW4gdl9kaWN0Lml0ZW1zKCldKSkpCi0gICAgICAgIGVsaWYgbm9kZV90eXBlID09ICdMSVNUJzoKLSAgICAgICAgICAgIG5vZGUgPSBzY2hlbWEuZ2V0KCdsaXN0RWxlbWVudFNjaGVtYU5vZGUnKQotICAgICAgICAgICAgZWxlbWVudHNfa2V5ID0gJycKLSAgICAgICAgICAgIGlmIG5vZGU6Ci0gICAgICAgICAgICAgICAga2V5ID0gbm9kZS5nZXQoJ2tleU5vZGVOYW1lcycpCi0gICAgICAgICAgICAgICAgaWYga2V5OgotICAgICAgICAgICAgICAgICAgICBlbGVtZW50c19rZXkgPSAnIG9mICVzJyAlICcsICcuam9pbihrZXkpCi0KLSAgICAgICAgICAgIGNoaWxkX25vZGVzID0gbm9kZS5nZXQoJ2NoaWxkTm9kZXMnLCBbXSkKLSAgICAgICAgICAgIHlpZWxkICclcyVzOiBMSVNUICVzIElURU1TIDwlcz4nICUgKGluZGVudCwgbmFtZSwgZWxlbWVudHNfa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihjaGlsZF9ub2RlcykpCi0gICAgICAgICAgICBmb3IgKGNoaWxkLCB2YWx1ZSkgaW4gY2hpbGRfbm9kZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLnNjaGVtYV9kZXRhaWxlcih2YWx1ZSwgZGVwdGggKyAxKToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgaXRlbQotICAgICAgICBlbGlmIG5vZGVfdHlwZSA9PSAnQ09OVEFJTkVSJzoKLSAgICAgICAgICAgIGNoaWxkX25vZGVzID0gc2NoZW1hLmdldCgnY2hpbGROb2RlcycsIFtdKQotICAgICAgICAgICAgeWllbGQgJyVzJXM6IENPTlRBSU5FUiBJVEVNUyA8JXM+JyAlIChpbmRlbnQsIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihjaGlsZF9ub2Rlcy5rZXlzKCkpKQotICAgICAgICAgICAgZm9yIChjaGlsZCwgdmFsdWUpIGluIGNoaWxkX25vZGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5zY2hlbWFfZGV0YWlsZXIodmFsdWUsIGRlcHRoICsgMSk6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50ICd1bmtub3duIHR5cGUnLCBub2RlX3R5cGUKLQotCi0gICAgZGVmIHNjaGVtYV9kZXRhaWwoc2VsZiwgcGF0aCk6Ci0gICAgICAgIHByaW50ICdzY2hlbWFfZGV0YWlsOicsIHBhdGgKLSAgICAgICAgc2NoZW1hID0gc2VsZi5zY2hlbWFfb2ZfcGF0aChwYXRoKQotICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLnNjaGVtYV9kZXRhaWxlcihzY2hlbWEpOgotICAgICAgICAgICAgeWllbGQgaXRlbQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIApkaWZmIC0tZ2l0IGEvY2xpL2NsaS9zZXR1cC5weSBiL2NsaS9jbGkvc2V0dXAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDkyYjFkNjUuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9zZXR1cC5weQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDExLDIwMTIsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IHNldHVwdG9vbHMKLWltcG9ydCBvcwotCi0KLWRlZiBhbGxfZmlsZXNfaW5fc3ViZGlyKGRpciwgbW9kLCBmdWxsX2xpc3QpOgotICAgIGZvciBmIGluIG9zLmxpc3RkaXIoZGlyKToKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXIsIGYpCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6Ci0gICAgICAgICAgICBhbGxfZmlsZXNfaW5fc3ViZGlyKHBhdGgsICIlcy4lcyIgJSAoZGlyLCBmKSwgZnVsbF9saXN0KQotICAgICAgICBlbGlmIGYuZW5kc3dpdGgoJy5weScpIGFuZCBmICE9ICdfX2luaXRfXy5weSc6Ci0gICAgICAgICAgICBmdWxsX2xpc3QuYXBwZW5kKCIlcy4lcyIgJSAobW9kLCBmWzotM10pKQotICAgIHJldHVybiBmdWxsX2xpc3QKLQotCi1kZWYgYWxsX21vZHVsZXNfaW5fc3ViZGlyKGRpcik6Ci0gICAgbW9kID0gYWxsX2ZpbGVzX2luX3N1YmRpcihkaXIsICcnLCBbXSkKLSAgICByZXR1cm4gbW9kCi0KLQotZGVmIGFsbF9kb2NfaW5fc3ViZGlycyhkaXIsIGRvY19jb2xsZWN0KToKLSAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKGRpcik6Ci0gICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyLCBmKQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICAgICAgYWxsX2RvY19pbl9zdWJkaXJzKHBhdGgsIGRvY19jb2xsZWN0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZG9jX2NvbGxlY3QuYXBwZW5kKChkaXIsIFtwYXRoXSkpCi0gICAgcmV0dXJuIGRvY19jb2xsZWN0Ci0KLQotZGVmIGFsbF9kb2N1bWVudGF0aW9uKGRpcik6Ci0gICAgcmV0dXJuIGFsbF9kb2NfaW5fc3ViZGlycyhkaXIsIFtdKQotCi0KLXNldHVwdG9vbHMuc2V0dXAoCi0gICAgbmFtZT0iY2xpIiwKLSAgICB2ZXJzaW9uPSIwLjEuMCIsCi0gICAgemlwX3NhZmU9VHJ1ZSwKLSAgICBweV9tb2R1bGVzPVsiY2xpIiwgIm1vZGVsX2luZm9fbGlzdCIsICJwcmV0dHlwcmludCIsICJzdG9yZWNsaWVudCIsCi0gICAgICAgICAgICAgICAgImNsaW1vZGVsaW5mbyIsICJ2ZW5kb3IiLCAidHJhY2UiLCAidGltZXNpbmNlIiwgImNvbW1hbmQiLAotICAgICAgICAgICAgICAgICJjX2FjdGlvbnMiLCAiY19kYXRhX2hhbmRsZXJzIiwgICJjX2NvbXBsZXRpb25zIiwgImNfdmFsaWRhdGlvbnMiLAotICAgICAgICAgICAgICAgICJlcnJvciIsICJtb2RpIiwgInV0aWYiLCAibWlkdyIsICJ2bnN3IiwgImZtdGNudiIsCi0gICAgICAgICAgICAgICAgInJlc3RfdG9fbW9kZWwiLCAicnVuX2NvbmZpZyIsICJ0ZWNoX3N1cHBvcnQiLAotICAgICAgICAgICAgICAgICJ1cmxfY2FjaGUiLCAiZG9jIiwgInNkbmRiIiwKLSAgICAgICAgICAgICAgICBdICsgYWxsX21vZHVsZXNfaW5fc3ViZGlyKCdkZXNjJyksCi0gICAgZGF0YV9maWxlcz1bKCJkYXRhIiwgWyJkYXRhL291aS50eHQiXSldICsgYWxsX2RvY3VtZW50YXRpb24oImRvY3VtZW50YXRpb24iKSwKLSAgICBlbnRyeV9wb2ludHM9ZGljdChjb25zb2xlX3NjcmlwdHM9WyJjbGkgPSBjbGk6bWFpbiIsICJ0cmFjZSA9IHRyYWNlOm1haW4iXSksCi0gICAgKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS9zdG9yZWNsaWVudC5weSBiL2NsaS9jbGkvc3RvcmVjbGllbnQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU3ZmI1MGMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS9zdG9yZWNsaWVudC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM5MSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMCwyMDExLDIwMTIsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIwotIyAgbW9kdWxlOiBzdG9yZWNsaWVudC5weQotIwotIyBUaGlzIG1vZHVsZSBtYW5hZ2VzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgY29uc29sZSwgaS5lLiB0aGUgUkVTVCBpbnRlcmZhY2UKLSMgb2YgYSBCaWcgU3dpdGNoIENvbnRyb2xsZXIgbm9kZS4KLQotaW1wb3J0IHVybGxpYgotaW1wb3J0IHVybGxpYjIKLWltcG9ydCBmdHBsaWIKLWltcG9ydCBqc29uCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCB0aW1lCi1pbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdXJsX2NhY2hlCi0KLQotY2xhc3MgU3RyaW5nUmVhZGVyKCk6Ci0gICAgIyB1c2VkIGZvciBmdHAsIGFzIGEgcmVwbGFjZW1lbnQgZm9yIHJlYWQgZnJvbSBhbiBleGlzdGluZyBmaWxlCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKLSAgICAgICAgIiIiCi0gICAgICAgIFZhbHVlIGNhbiBiZSBhIHN0cmluZywgb3IgYSBnZW5lcmF0b3IuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKLSAgICAgICAgc2VsZi5vZmZzZXQgPSAwCi0gICAgICAgIGlmIHR5cGUodmFsdWUpID09IHN0ciBvciB0eXBlKHZhbHVlKSA9PSB1bmljb2RlOgotICAgICAgICAgICAgc2VsZi5sZW4gPSBsZW4odmFsdWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmxhc3QgPSBOb25lCi0KLSAgICBkZWYgcmVhZChzZWxmLCBzaXplID0gTm9uZSk6Ci0gICAgICAgIGlmIHNpemU6Ci0gICAgICAgICAgICBpZiBzaXplID4gc2VsZi5sZW4gLSBzZWxmLm9mZnNldDoKLSAgICAgICAgICAgICAgICBzaXplID0gc2VsZi5sZW4gLSBzZWxmLm9mZnNldAotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi52YWx1ZVtzZWxmLm9mZnNldDpzaXplXQotICAgICAgICAgICAgc2VsZi5vZmZzZXQgKz0gc2l6ZQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICAjIHN1cHBvcmluZyBnZW5lcmF0b3JzLgotICAgICAgICBpZiBzZWxmLmxhc3Q6ICAgIyB1c2UgcmVtYWluZGVyCi0gICAgICAgICAgICBpZiBzaXplID4gc2VsZi5sZW4gLSBzZWxmLm9mZnNldDoKLSAgICAgICAgICAgICAgICBzaXplID0gc2VsZi5sZW4gLSBzZWxmLm9mZnNldAotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5sYXN0W3NlbGYub2Zmc2V0OnNpemVdCi0gICAgICAgICAgICBzZWxmLm9mZnNldCArPSBzaXplCi0gICAgICAgICAgICBpZiBzZWxmLm9mZnNldCA9PSBzZWxmLmxlbjoKLSAgICAgICAgICAgICAgICBzZWxmLmxhc3QgPSBOb25lCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgIGl0ZW0gPSB2YWx1ZS5uZXh0KCkKLSAgICAgICAgbGVuX2l0ZW0gPSBsZW4oaXRlbSkKLSAgICAgICAgaWYgbGVuX2l0ZW0gPD0gc2l6ZToKLSAgICAgICAgICAgIHJldHVybiBpdGVtCi0gICAgICAgICMgc2V0IHVwIHJlbWFpbmRlcgotICAgICAgICByZXN1bHQgPSBpdGVtWzpzaXplXQotICAgICAgICBzZWxmLmxhc3QgPSBpdGVtW3NpemU6XQotICAgICAgICBzZWxmLm9mZnNldCA9IDAKLSAgICAgICAgc2VsZi5sZW4gPSBsZW4oc2VsZi5sYXN0KQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLQotY2xhc3MgU3RvcmVDbGllbnQoKToKLQotICAgIGNvbnRyb2xsZXIgPSBOb25lCi0gICAgZGlzcGxheV9yZXN0ID0gRmFsc2UKLSAgICBkaXNwbGF5X3Jlc3RfcmVwbHkgPSBGYWxzZQotICAgIAotICAgIHRhYmxlX3JlYWRfdXJsID0gImh0dHA6Ly8lcy9yZXN0L3YxL21vZGVsLyVzLyIKLSAgICBlbnRyeV9wb3N0X3VybCA9ICJodHRwOi8vJXMvcmVzdC92MS9tb2RlbC8lcy8iCi0gICAgdXNlcl9kYXRhX3VybCA9ICJodHRwOi8vJXMvcmVzdC92MS9kYXRhLyIKLQotICAgIGRlZiBzZXRfY29udHJvbGxlcihzZWxmLGNvbnRyb2xsZXIpOgotICAgICAgICBzZWxmLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyCi0KLSAgICBkZWYgZGlzcGxheV9tb2RlKHNlbGYsIG1vZGUpOgotICAgICAgICBzZWxmLmRpc3BsYXlfcmVzdCA9IG1vZGUKLQotICAgIGRlZiBkaXNwbGF5X3JlcGx5X21vZGUoc2VsZiwgbW9kZSk6Ci0gICAgICAgIHNlbGYuZGlzcGxheV9yZXN0X3JlcGx5ID0gbW9kZQotCi0gICAgZGVmIHJlc3Rfc2ltcGxlX3JlcXVlc3Qoc2VsZix1cmwsIHVzZV9jYWNoZSA9IE5vbmUsIHRpbWVvdXQgPSBOb25lKToKLSAgICAgICAgIyBpbmNsdWRlIGEgdHJpdmlhbCByZXRyeSBtZWNoYW5pc20gLi4uIG90aGVyIHNwZWNpZmljCi0gICAgICAgICMgIHVybGxpYjIgZXhjZXB0aW9uIHR5cGVzIG1heSBuZWVkIHRvIGJlIGluY2x1ZGVkCi0gICAgICAgIHJldHJ5X2NvdW50ID0gMAotICAgICAgICBpZiB1c2VfY2FjaGUgPT0gTm9uZSBvciB1c2VfY2FjaGU6Ci0gICAgICAgICAgICByZXN1bHQgPSB1cmxfY2FjaGUuZ2V0X2NhY2hlZF91cmwodXJsKQotICAgICAgICAgICAgaWYgcmVzdWx0ICE9IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICB3aGlsZSByZXRyeV9jb3VudCA+IDA6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHVybGxpYjIudXJsb3Blbih1cmwsIHRpbWVvdXQgPSB0aW1lb3V0KS5yZWFkKCkKLSAgICAgICAgICAgIGV4Y2VwdCB1cmxsaWIyLlVSTEVycm9yOgotICAgICAgICAgICAgICAgIHJldHJ5X2NvdW50IC09IDEKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0gICAgICAgICMgdHJ5IGFnYWluIHdpdGhvdXQgdGhlIHRyeS4uLgotICAgICAgICBpZiBzZWxmLmRpc3BsYXlfcmVzdDoKLSAgICAgICAgICAgIHByaW50ICJSRVNULVNJTVBMRToiLCAnR0VUJywgdXJsCi0gICAgICAgIHJlc3VsdCA9IHVybGxpYjIudXJsb3Blbih1cmwsIHRpbWVvdXQgPSB0aW1lb3V0KS5yZWFkKCkKLSAgICAgICAgaWYgc2VsZi5kaXNwbGF5X3Jlc3RfcmVwbHk6Ci0gICAgICAgICAgICBwcmludCAnUkVTVC1TSU1QTEU6ICVzIHJlcGx5ICIlcyInICUgKHVybCwgcmVzdWx0KQotICAgICAgICB1cmxfY2FjaGUuc2F2ZV91cmwodXJsLCByZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgCi0gICAgCi0gICAgZGVmIHJlc3RfanNvbl9yZXF1ZXN0KHNlbGYsIHVybCk6Ci0gICAgICAgIGVudHJpZXMgPSAgdXJsX2NhY2hlLmdldF9jYWNoZWRfdXJsKHVybCkKLSAgICAgICAgaWYgZW50cmllcyAhPSBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGVudHJpZXMKLQotICAgICAgICByZXN1bHQgPSBzZWxmLnJlc3Rfc2ltcGxlX3JlcXVlc3QodXJsKQotICAgICAgICAjIFhYWCBjaGVjayByZXN1bHQKLSAgICAgICAgZW50cmllcyA9IGpzb24ubG9hZHMocmVzdWx0KQotICAgICAgICB1cmxfY2FjaGUuc2F2ZV91cmwodXJsLCBlbnRyaWVzKQotCi0gICAgICAgIHJldHVybiBlbnRyaWVzCi0KLSAgICBkZWYgcmVzdF9wb3N0X3JlcXVlc3Qoc2VsZiwgdXJsLCBvYmosIHZlcmI9J1BVVCcpOgotICAgICAgICBwb3N0X2RhdGEgPSBqc29uLmR1bXBzKG9iaikKLSAgICAgICAgaWYgc2VsZi5kaXNwbGF5X3Jlc3Q6Ci0gICAgICAgICAgICBwcmludCAiUkVTVC1QT1NUOiIsIHZlcmIsIHVybCwgcG9zdF9kYXRhCi0gICAgICAgIHJlcXVlc3QgPSB1cmxsaWIyLlJlcXVlc3QodXJsLCBwb3N0X2RhdGEsIHsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbid9KQotICAgICAgICByZXF1ZXN0LmdldF9tZXRob2QgPSBsYW1iZGE6IHZlcmIKLSAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKLSAgICAgICAgcmVzdWx0ID0gcmVzcG9uc2UucmVhZCgpCi0gICAgICAgIGlmIHNlbGYuZGlzcGxheV9yZXN0X3JlcGx5OgotICAgICAgICAgICAgcHJpbnQgJ1JFU1QtUE9TVDogJXMgcmVwbHk6ICIlcyInICUgKHVybCwgcmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgCi0gICAgCi0gICAgZGVmIGdldF90YWJsZV9mcm9tX3N0b3JlKHNlbGYsIHRhYmxlX25hbWUsIGtleT1Ob25lLCB2YWw9Tm9uZSwgbWF0Y2g9Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmNvbnRyb2xsZXI6Ci0gICAgICAgICAgICBwcmludCAiTm8gY29udHJvbGxlciBzcGVjaWZpZWQuIFNldCB1c2luZyAnY29udHJvbGxlciA8c2VydmVyOnBvcnQ+Jy4iCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdXJsID0gc2VsZi50YWJsZV9yZWFkX3VybCAlIChzZWxmLmNvbnRyb2xsZXIsIHRhYmxlX25hbWUpCi0gICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAgICAgIG1hdGNoID0gInN0YXJ0c3dpdGgiCi0gICAgICAgIGlmIGtleSBhbmQgdmFsOgotICAgICAgICAgICAgdXJsID0gIiVzPyVzX18lcz0lcyIgJSAodXJsLCBrZXksIG1hdGNoLCB1cmxsaWIucXVvdGVfcGx1cyh2YWwpKQotICAgICAgICByZXN1bHQgPSB1cmxfY2FjaGUuZ2V0X2NhY2hlZF91cmwodXJsKQotICAgICAgICBpZiByZXN1bHQgIT0gTm9uZToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgZGF0YSA9IHNlbGYucmVzdF9zaW1wbGVfcmVxdWVzdCh1cmwpCi0gICAgICAgIGVudHJpZXMgPSBqc29uLmxvYWRzKGRhdGEpCi0gICAgICAgIHVybF9jYWNoZS5zYXZlX3VybCh1cmwsIGVudHJpZXMpCi0gICAgICAgIHJldHVybiBlbnRyaWVzCi0KLQotICAgIGRlZiBnZXRfb2JqZWN0X2Zyb21fc3RvcmUoc2VsZiwgdGFibGVfbmFtZSwgcGtfdmFsdWUpOgotICAgICAgICBpZiBub3Qgc2VsZi5jb250cm9sbGVyOgotICAgICAgICAgICAgcHJpbnQgIk5vIGNvbnRyb2xsZXIgc3BlY2lmaWVkLiBTZXQgdXNpbmcgJ2NvbnRyb2xsZXIgPHNlcnZlcjpwb3J0PicuIgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHVybCA9IHNlbGYudGFibGVfcmVhZF91cmwgJSAoc2VsZi5jb250cm9sbGVyLCB0YWJsZV9uYW1lKQotICAgICAgICB1cmwgKz0gKHBrX3ZhbHVlICsgJy8nKQotICAgICAgICByZXN1bHQgPSB1cmxfY2FjaGUuZ2V0X2NhY2hlZF91cmwodXJsKQotICAgICAgICBpZiByZXN1bHQgIT0gTm9uZToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgaWYgc2VsZi5kaXNwbGF5X3Jlc3Q6Ci0gICAgICAgICAgICBwcmludCAiUkVTVC1NT0RFTDoiLCB1cmwKLSAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4odXJsKQotICAgICAgICBpZiByZXNwb25zZS5jb2RlICE9IDIwMDoKLSAgICAgICAgICAgICMgTE9PSyEgU2hvdWxkIHByb2JhYmx5IHJhaXNlIGV4Y2VwdGlvbiBoZXJlIGluc3RlYWQuCi0gICAgICAgICAgICAjIEluIGdlbmVyYWwgd2UgbmVlZCB0byByZXRoaW5rIHRoZSBzdG9yZSBpbnRlcmZhY2UgYW5kIGhvdwotICAgICAgICAgICAgIyB3ZSBzaG91bGQgdXNlIGV4Y2VwdGlvbnMuCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBkYXRhID0gcmVzcG9uc2UucmVhZCgpCi0gICAgICAgIHJlc3VsdCA9IGpzb24ubG9hZHMoZGF0YSkKLSAgICAgICAgaWYgc2VsZi5kaXNwbGF5X3Jlc3RfcmVwbHk6Ci0gICAgICAgICAgICBwcmludCAnUkVTVC1NT0RFTDogJXMgcmVwbHk6ICIlcyInICUgKHVybCwgcmVzdWx0KQotICAgICAgICB1cmxfY2FjaGUuc2F2ZV91cmwodXJsLCByZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotCi0gICAgIyBvYmpfZGF0YSBtdXN0IGNvbnRhaW4gYSBrZXkvdmFsIGFuZCBhbnkgb3RoZXIgcmVxdWlyZWQgZGF0YQotICAgIGRlZiByZXN0X2NyZWF0ZV9vYmplY3Qoc2VsZiwgb2JqX3R5cGUsIG9ial9kYXRhKToKLSAgICAgICAgaWYgbm90IHNlbGYuY29udHJvbGxlcjoKLSAgICAgICAgICAgIHByaW50ICJObyBjb250cm9sbGVyIHNwZWNpZmllZC4gU2V0IHVzaW5nICdjb250cm9sbGVyIDxzZXJ2ZXI6cG9ydD4nLiIKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB1cmxfY2FjaGUuY2xlYXJfY2FjaGVkX3VybHMoKQotICAgICAgICB1cmwgPSBzZWxmLmVudHJ5X3Bvc3RfdXJsICUgKHNlbGYuY29udHJvbGxlciwgb2JqX3R5cGUpCi0gICAgICAgIGRhdGEgPSBzZWxmLnJlc3RfcG9zdF9yZXF1ZXN0KHVybCwgb2JqX2RhdGEpCi0gICAgICAgICMgTE9PSyEgc3VjY2Vzc2Z1bCBzdHVmZiBzaG91bGQgYmUgcmV0dXJuZWQgaW4ganNvbiB0b28uCi0gICAgICAgIGlmIGRhdGEgIT0gInNhdmVkIjoKLSAgICAgICAgICAgIHJlc3VsdCA9IGpzb24ubG9hZHMoZGF0YSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgdXJsX2NhY2hlLmNsZWFyX2NhY2hlZF91cmxzKCkKLQotICAgIGRlZiBmaW5kX29iamVjdF9mcm9tX3N0b3JlKHNlbGYsIG9ial90eXBlLCBrZXksIHZhbCk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmNvbnRyb2xsZXI6Ci0gICAgICAgICAgICBwcmludCAiTm8gY29udHJvbGxlciBzcGVjaWZpZWQuIFNldCB1c2luZyAnY29udHJvbGxlciA8c2VydmVyOnBvcnQ+Jy4iCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdXJsID0gc2VsZi50YWJsZV9yZWFkX3VybCAlIChzZWxmLmNvbnRyb2xsZXIsIG9ial90eXBlKQotICAgICAgICByZXN1bHQgPSB1cmxfY2FjaGUuZ2V0X2NhY2hlZF91cmwodXJsKQotICAgICAgICBpZiByZXN1bHQgIT0gTm9uZToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgZGF0YSA9IHNlbGYucmVzdF9zaW1wbGVfcmVxdWVzdCgiJXM/JXNfX2V4YWN0PSVzIiAlICh1cmwsIGtleSwgdXJsbGliLnF1b3RlX3BsdXModmFsKSkpCi0gICAgICAgIGVudHJpZXMgPSBqc29uLmxvYWRzKGRhdGEpCi0gICAgICAgIHVybF9jYWNoZS5zYXZlX3VybCh1cmwsIGVudHJpZXMpCi0gICAgICAgIHJldHVybiBlbnRyaWVzCi0KLSAgICBkZWYgcmVzdF9xdWVyeV9vYmplY3RzKHNlbGYsIG9ial90eXBlLCBxdWVyeV9wYXJhbXM9Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmNvbnRyb2xsZXI6Ci0gICAgICAgICAgICBwcmludCAiTm8gY29udHJvbGxlciBzcGVjaWZpZWQuIFNldCB1c2luZyAnY29udHJvbGxlciA8c2VydmVyOnBvcnQ+Jy4iCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdXJsID0gc2VsZi50YWJsZV9yZWFkX3VybCAlIChzZWxmLmNvbnRyb2xsZXIsIG9ial90eXBlKQotICAgICAgICBpZiBxdWVyeV9wYXJhbXM6Ci0gICAgICAgICAgICB1cmwgKz0gJz8nCi0gICAgICAgICAgICAjIENvbnZlcnQgYW55IGRhdGE6Tm9uZSBmaWVsZHMgdG8gPGlkPl9faXNudWxsPVRydWUKLSAgICAgICAgICAgIG5vbl9udWxsX3F1ZXJ5X3BhcmFtcyA9IGRpY3QoW1tuLHZdIGlmIHYgIT0gTm9uZSBlbHNlIFtuICsgJ19faXNudWxsJywgVHJ1ZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobix2KSBpbiBxdWVyeV9wYXJhbXMuaXRlbXMoKV0pCi0gICAgICAgICAgICB1cmwgKz0gdXJsbGliLnVybGVuY29kZShub25fbnVsbF9xdWVyeV9wYXJhbXMpCi0gICAgICAgIHJlc3VsdCA9IHVybF9jYWNoZS5nZXRfY2FjaGVkX3VybCh1cmwpCi0gICAgICAgIGlmIHJlc3VsdCAhPSBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICBkYXRhID0gc2VsZi5yZXN0X3NpbXBsZV9yZXF1ZXN0KHVybCkKLSAgICAgICAgZW50cmllcyA9IGpzb24ubG9hZHMoZGF0YSkKLSAgICAgICAgdXJsX2NhY2hlLnNhdmVfdXJsKHVybCwgZW50cmllcykKLSAgICAgICAgcmV0dXJuIGVudHJpZXMKLSAgICAgICAgCi0gICAgIwotICAgICMgZWl0aGVyIG11c3QgY29udGFpbiBhIGtleS92YWwgYW5kIGFueSBvdGhlciByZXF1aXJlZCBkYXRhCi0gICAgIyBvZiB0aGUga2V5IG11c3QgYmUgYSBkaWN0aW9uYXJ5IGlkZW50aWZ5aW5nIHRoZSBpdGVtIHRvIGRlbGV0ZS4KLSAgICBkZWYgcmVzdF9kZWxldGVfb2JqZWN0KHNlbGYsIG9ial90eXBlLCBrZXksIHZhbCA9IE5vbmUpOgotICAgICAgICBkaWN0XyA9IHt9Ci0gICAgICAgIHVybCA9IHNlbGYuZW50cnlfcG9zdF91cmwgJSAoc2VsZi5jb250cm9sbGVyLCBvYmpfdHlwZSkKLSAgICAgICAgaWYgdmFsID09IE5vbmU6Ci0gICAgICAgICAgICBpZiBub3QgdHlwZShrZXkpID09IHR5cGUoZGljdF8pOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBkaWN0XyA9IGtleQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXJsICs9ICI/JXNfX2V4YWN0PSVzIiAlIChrZXksIHVybGxpYi5xdW90ZV9wbHVzKHZhbCkpCi0KLSAgICAgICAgIyBMT09LISBJJ20gbm90IHN1cmUgdGhpcyB3b3JrcyB0aGUgd2F5IGl0IHNlZW1zIHRvIG1lIGl0J3MKLSAgICAgICAgIyBkZXNpZ25lZCB0byB3b3JrLiBJIHRoaW5rIHRoZSBpbnRlbnQgaXMgdGhhdCB5b3UgY2FuIHNwZWNpZnkKLSAgICAgICAgIyBxdWVyeSBwYXJhbWV0ZXJzIGluIHRoZSBrZXkgYXJndW1lbnQgd2hpY2ggY29udHJvbHMgd2hpY2gKLSAgICAgICAgIyBpbnN0YW5jZShzKSBzaG91bGQgYmUgZGVsZXRlZC4gQnV0IHdoZW4gSSB0cnkgaXQgaXQgc2VlbXMgdG8KLSAgICAgICAgIyBhbHdheXMgZGVsZXRlIGFsbCBpbnN0YW5jZXMsIHNvIGl0IHNlZW1zIGxpa2UgdGhlIHBhcmFtZXRlcnMKLSAgICAgICAgIyBkb24ndCBmaWx0ZXIgcHJvcGVybHkgd2hlbiBwYXNzZWQgdmlhIHRoZSBQT1NUIGRhdGEgYXMgb3Bwb3NlZAotICAgICAgICAjIHRvIGJlaW5nIHNwZWNpZmllZCBhcyBxdWVyeSBwYXJhbWV0ZXJzIGluIHRoZSBVUkwuIFRoZSBsYXR0ZXIKLSAgICAgICAgIyB3YXkgZG9lcyB3b3JrIC0tIHNlZSByZXN0X2RlbGV0ZV9vYmplY3RzIHRoYXQgZm9sbG93cyB0aGlzLgotICAgICAgICBkYXRhID0gc2VsZi5yZXN0X3Bvc3RfcmVxdWVzdCh1cmwsIGRpY3RfLCAnREVMRVRFJykKLSAgICAgICAgIyBMT09LISBzdWNjZXNzZnVsIHN0dWZmIHNob3VsZCBiZSByZXR1cm5lZCBpbiBqc29uIHRvby4KLSAgICAgICAgaWYgZGF0YSAhPSAiZGVsZXRlZCI6Ci0gICAgICAgICAgICBkaWN0XyA9IGpzb24ubG9hZHMoZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBkaWN0XwotICAgICAgICB1cmxfY2FjaGUuY2xlYXJfY2FjaGVkX3VybHMoKQotCi0gICAgZGVmIHJlc3RfZGVsZXRlX29iamVjdHMoc2VsZiwgb2JqX3R5cGUsIHF1ZXJ5X3BhcmFtcyk6Ci0gICAgICAgIHVybCA9IHNlbGYuZW50cnlfcG9zdF91cmwgJSAoc2VsZi5jb250cm9sbGVyLCBvYmpfdHlwZSkKLSAgICAgICAgaWYgcXVlcnlfcGFyYW1zOgotICAgICAgICAgICAgdXJsICs9ICc/JwotICAgICAgICAgICAgIyBDb252ZXJ0IGFueSBkYXRhOk5vbmUgZmllbGRzIHRvIDxpZD5fX2lzbnVsbD1UcnVlCi0gICAgICAgICAgICBub25fbnVsbF9xdWVyeV9wYXJhbXMgPSBkaWN0KFtbbix2XSBpZiB2ICE9IE5vbmUgZWxzZSBbbiArICdfX2lzbnVsbCcsIFRydWVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4sdikgaW4gcXVlcnlfcGFyYW1zLml0ZW1zKCldKQotICAgICAgICAgICAgdXJsICs9IHVybGxpYi51cmxlbmNvZGUobm9uX251bGxfcXVlcnlfcGFyYW1zKQotCi0gICAgICAgIGRhdGEgPSBzZWxmLnJlc3RfcG9zdF9yZXF1ZXN0KHVybCwge30sICdERUxFVEUnKQotICAgICAgICAjIExPT0shIHN1Y2Nlc3NmdWwgc3R1ZmYgc2hvdWxkIGJlIHJldHVybmVkIGluIGpzb24gdG9vLgotICAgICAgICBpZiBkYXRhICE9ICJkZWxldGVkIjoKLSAgICAgICAgICAgIHJlc3VsdCA9IGpzb24ubG9hZHMoZGF0YSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgdXJsX2NhY2hlLmNsZWFyX2NhY2hlZF91cmxzKCkKLSAgICAgICAgCi0gICAgZGVmIHJlc3RfdXBkYXRlX29iamVjdChzZWxmLCBvYmpfdHlwZSwgb2JqX2tleV9uYW1lLCBvYmpfa2V5X3ZhbCwgb2JqX2RhdGEpOgotICAgICAgICBpZiBub3Qgc2VsZi5jb250cm9sbGVyOgotICAgICAgICAgICAgcHJpbnQgIk5vIGNvbnRyb2xsZXIgc3BlY2lmaWVkLiBTZXQgdXNpbmcgJ2NvbnRyb2xsZXIgPHNlcnZlcjpwb3J0PicuIgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHVybCA9IHNlbGYuZW50cnlfcG9zdF91cmwgJSAoc2VsZi5jb250cm9sbGVyLCBvYmpfdHlwZSkKLSAgICAgICAgdXJsICs9ICI/JXM9JXMiICUgKG9ial9rZXlfbmFtZSwgdXJsbGliLnF1b3RlX3BsdXMob2JqX2tleV92YWwpKSAjIGFkZCBhIHF1ZXJ5IHN0cmluZwotICAgICAgICBkYXRhID0gc2VsZi5yZXN0X3Bvc3RfcmVxdWVzdCh1cmwsIG9ial9kYXRhKQotICAgICAgICAjIExPT0shIHN1Y2Nlc3NmdWwgc3R1ZmYgc2hvdWxkIGJlIHJldHVybmVkIGluIGpzb24gdG9vLgotICAgICAgICByZXN1bHQgPSBqc29uLmxvYWRzKGRhdGEpCi0gICAgICAgIGlmIHJlc3VsdC5nZXQoJ2Rlc2NyaXB0aW9uJywgJycpICE9ICJzYXZlZCI6Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgIHVybF9jYWNoZS5jbGVhcl9jYWNoZWRfdXJscygpCi0KLSAgICBkZWYgc2V0X3VzZXJfZGF0YV9maWxlKHNlbGYsIG5hbWUsIHRleHQpOgotICAgICAgICB1cmwgPSBzZWxmLnVzZXJfZGF0YV91cmwgJSAoc2VsZi5jb250cm9sbGVyKQotICAgICAgICB2ZXJzaW9uID0gMSAjIGRlZmF1bHQKLSAgICAgICAgIyBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBmb3IgYSBuYW1lCi0gICAgICAgIGV4aXN0aW5nX2RhdGEgPSBzZWxmLmdldF91c2VyX2RhdGFfdGFibGUobmFtZSwgImxhdGVzdCIpIAotICAgICAgICBpZiBsZW4oZXhpc3RpbmdfZGF0YSkgPiAwOiAjIHNob3VsZCBiZSBhdCBtb3N0IDEsIGJ1dCBqdXN0IGluIGNhc2UuLi4KLSAgICAgICAgICAgIHZlcnNpb24gPSBtYXgoW2ludChmWyd2ZXJzaW9uJ10pIGZvciBmIGluIGV4aXN0aW5nX2RhdGFdKSArIDEgIyBMT09LISByYWNlPwotICAgICAgICBsZW5ndGggPSBsZW4odGV4dCkKLSAgICAgICAgIyBMT09LISB3aGF0IHRvIGRvIGFib3V0IHRpbWUgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0hCi0gICAgICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdygpLnN0cmZ0aW1lKCIlWS0lbS0lZC4lSDolTTolUyIpCi0gICAgICAgIHVybCArPSAiJXMvdGltZXN0YW1wPSVzL3ZlcnNpb249JXMvbGVuZ3RoPSVzLyIgJSAobmFtZSwgdGltZXN0YW1wLCB2ZXJzaW9uLCBsZW5ndGgpCi0gICAgICAgIHJldHVybiBzZWxmLmNvcHlfdGV4dF90b191cmwodXJsLCB0ZXh0KQotCi0gICAgZGVmIGdldF91c2VyX2RhdGFfZmlsZShzZWxmLCBuYW1lKToKLSAgICAgICAgdXJsID0gc2VsZi51c2VyX2RhdGFfdXJsICUgKHNlbGYuY29udHJvbGxlcikKLSAgICAgICAgdXJsICs9IG5hbWUgKyAiLyIKLSAgICAgICAgcmV0dXJuIHNlbGYucmVzdF9zaW1wbGVfcmVxdWVzdCh1cmwpCi0KLSAgICBkZWYgZGVsZXRlX3VzZXJfZGF0YV9maWxlKHNlbGYsIG5hbWUpOgotICAgICAgICB1cmwgPSBzZWxmLnVzZXJfZGF0YV91cmwgJSAoc2VsZi5jb250cm9sbGVyKQotICAgICAgICB1cmwgKz0gbmFtZSArICIvIgotICAgICAgICBkYXRhID0gc2VsZi5yZXN0X3Bvc3RfcmVxdWVzdCh1cmwsIHt9LCAnREVMRVRFJykKLSAgICAgICAgaWYgZGF0YSAhPSAiZGVsZXRlZCI6Ci0gICAgICAgICAgICByZXN1bHQgPSBqc29uLmxvYWRzKGRhdGEpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgZ2V0X3VzZXJfZGF0YV90YWJsZShzZWxmLCBuYW1lPU5vbmUsIHNob3dfdmVyc2lvbj0ibGF0ZXN0Iik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmNvbnRyb2xsZXI6Ci0gICAgICAgICAgICBwcmludCAiTm8gY29udHJvbGxlciBzcGVjaWZpZWQuIFNldCB1c2luZyAnY29udHJvbGxlciA8c2VydmVyOnBvcnQ+Jy4iCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICB1cmwgPSBzZWxmLnVzZXJfZGF0YV91cmwgJSBzZWxmLmNvbnRyb2xsZXIKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIHVybCArPSAiP25hbWVfX3N0YXJ0c3dpdGg9JXMiICUgbmFtZQotICAgICAgICBkYXRhID0gc2VsZi5yZXN0X3NpbXBsZV9yZXF1ZXN0KHVybCkKLSAgICAgICAgbmV3X2RhdGEgPSBbXQotICAgICAgICBkYXRhID0ganNvbi5sb2FkcyhkYXRhKQotICAgICAgICBsYXRlc3RfdmVyc2lvbnMgPSB7fSAgIyBkaWN0IG9mIGxhdGVzdCB2ZXJzaW9uIHBlciBuYW1lCi0gICAgICAgIGZvciBkIGluIGRhdGE6ICAjIGxpc3Qgb2YgZGljdHMKLSAgICAgICAgICAgIGwgPSBkWyduYW1lJ10uc3BsaXQoJy8nKSAjIGV4OiBzdGFydHVwL3RpbWVzdGFtcD0yMDEwLTExLTAzLjA1OjUxOjI3L3ZlcnNpb249MS9sZW5ndGg9MjAzOAotICAgICAgICAgICAgbmQgPSBkaWN0KFtpdGVtLnNwbGl0KCc9JykgZm9yIGl0ZW0gaW4gbFsxOl1dKQotICAgICAgICAgICAgbmRbJ25hbWUnXSA9IGxbMF0KLSAgICAgICAgICAgIG5kWydmdWxsX25hbWUnXSA9IGRbJ25hbWUnXQotICAgICAgICAgICAgbmV3X2RhdGEuYXBwZW5kKG5kKQotICAgICAgICAgICAgaWYgbm90IG5kWyduYW1lJ10gaW4gbGF0ZXN0X3ZlcnNpb25zIG9yIGludChuZFsndmVyc2lvbiddKSA+IGludChsYXRlc3RfdmVyc2lvbnNbbmRbJ25hbWUnXV0pOgotICAgICAgICAgICAgICAgIGxhdGVzdF92ZXJzaW9uc1tuZFsnbmFtZSddXSA9IG5kWyd2ZXJzaW9uJ10gIyBpbml0aWFsaXplIGZpcnN0IHRpbWUKLQotICAgICAgICAjIHBydW5lIGlmIG5lZWRlZCB0byBhIG5hbWUgb3IgYSBwYXJ0aWN1bGFyIHZlcnNpb24KLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIG5ld19kYXRhID0gWyBuZCBmb3IgbmQgaW4gbmV3X2RhdGEgaWYgbmRbJ25hbWUnXS5zdGFydHN3aXRoKG5hbWUpIF0KLSAgICAgICAgaWYgc2hvd192ZXJzaW9uID09ICJsYXRlc3QiOgotICAgICAgICAgICAgbmV3X2RhdGEgPSBbIG5kIGZvciBuZCBpbiBuZXdfZGF0YSBpZiBub3QgaW50KG5kWyd2ZXJzaW9uJ10pIDwgaW50KGxhdGVzdF92ZXJzaW9uc1tuZFsnbmFtZSddXSkgXQotICAgICAgICBlbGlmIHNob3dfdmVyc2lvbiAhPSAiYWxsIjoKLSAgICAgICAgICAgIG5ld19kYXRhID0gWyBuZCBmb3IgbmQgaW4gbmV3X2RhdGEgaWYgbmRbJ3ZlcnNpb24nXSA9PSBzaG93X3ZlcnNpb24gXQotICAgICAgICByZXR1cm4gbmV3X2RhdGEKLQotCi0gICAgIyBMT09LISBsb29rcyBhIGxvdCBsaWtlIGEgcmVzdF9wb3N0X3JlcXVlc3QgZXhjZXB0IHdlIGRvbid0IGpzb25pZnkgYW5kIHdlIGhhbmRsZQotICAgICMgZXJyb3JzIGRpZmZlcmVudGx5Li4uIHJlZmFjdG9yPyAgU2FtZSB3aXRoIGdldF90ZXh0IGFuZCByZXN0X3NpbXBsZV9yZXF1ZXN0Ci0gICAgZGVmIGNvcHlfdGV4dF90b191cmwoc2VsZiwgdXJsLCBzcmNfdGV4dCwgbWVzc2FnZSA9IE5vbmUpOgotICAgICAgICBwb3N0X2RhdGEgPSBzcmNfdGV4dAotICAgICAgICBpZiB1cmwuc3RhcnRzd2l0aCgnZnRwOi8vJyk6Ci0gICAgICAgICAgICB1cmxfc3VmZml4ID0gdXJsWzY6XQotICAgICAgICAgICAgdXNlciA9ICdhbm9ueW1vdXMnCi0gICAgICAgICAgICBwYXNzd29yZCA9ICcnCi0gICAgICAgICAgICBpZiB1cmxfc3VmZml4LmZpbmQoJ0AnKSAhPSAtMToKLSAgICAgICAgICAgICAgICB1cmxfcGFydHMgPSB1cmxfc3VmZml4LnNwbGl0KCdAJykKLSAgICAgICAgICAgICAgICB1cmxfdXNlcl9hbmRfcGFzc3dvcmQgPSB1cmxfcGFydHNbMF0KLSAgICAgICAgICAgICAgICB1cmxfc3VmZml4ID0gdXJsX3BhcnRzWzFdCi0gICAgICAgICAgICAgICAgaWYgdXJsX3VzZXJfYW5kX3Bhc3N3b3JkLmZpbmQoJzonKSAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAgdXNlcl9hbmRfcGFzc3dvcmQgPSB1cmxfdXNlcl9hbmRfcGFzc3dvcmQuc3BsaXQoJzonKQotICAgICAgICAgICAgICAgICAgICB1c2VyID0gdXNlcl9hbmRfcGFzc3dvcmRbMF0KLSAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQgPSB1c2VyX2FuZF9wYXNzd29yZFsxXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHVzZXIgPSB1cmxfdXNlcl9hbmRfcGFzc3dvcmQKLQotICAgICAgICAgICAgaG9zdCA9IHVybF9zdWZmaXgKLSAgICAgICAgICAgIHBhdGggPSBOb25lCi0gICAgICAgICAgICBpZiB1cmxfc3VmZml4LmZpbmQoJy8nKToKLSAgICAgICAgICAgICAgICB1cmxfc3VmZml4X3BhcnRzID0gdXJsX3N1ZmZpeC5zcGxpdCgnLycpCi0gICAgICAgICAgICAgICAgaG9zdCA9IHVybF9zdWZmaXhfcGFydHNbMF0KLSAgICAgICAgICAgICAgICBwYXRoID0gdXJsX3N1ZmZpeF9wYXJ0c1sxXQotICAgICAgICAgICAgZnRwX3RhcmdldCA9IGZ0cGxpYi5GVFAoaG9zdCwgdXNlciwgcGFzc3dvcmQpCi0KLSAgICAgICAgICAgIGZ0cF90YXJnZXQuc3RvcmJpbmFyeSgnU1RPUiAlcycgJSBwYXRoLCBTdHJpbmdSZWFkZXIocG9zdF9kYXRhKSkKLSAgICAgICAgICAgICMgYXBwYXJlbnRseSwgc3RvcmJpbmFyeSBkb2Vzbid0IHByb3ZpZGUgYSByZXR1cm4gdmFsdWUKLSAgICAgICAgICAgIHJlc3VsdCA9IHsgInJlc3VsdCIgOiAic3VjY2VzcyIgfSAjIGRvbid0IGRpc3BsYXkgYW55IG90aGVyIGVycm9yIG1lc3NhZ2VzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXF1ZXN0ID0gdXJsbGliMi5SZXF1ZXN0KHVybCwgcG9zdF9kYXRhLCB7J0NvbnRlbnQtVHlwZSc6J3RleHQvcGxhaW4nfSkKLSAgICAgICAgICAgIHJlcXVlc3QuZ2V0X21ldGhvZCA9IGxhbWJkYTogJ1BVVCcKLSAgICAgICAgICAgIGlmIHNlbGYuZGlzcGxheV9yZXN0OgotICAgICAgICAgICAgICAgIHByaW50ICJSRVNULVRFWFQtVE86IiwgcmVxdWVzdAotICAgICAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3BvbnNlLnJlYWQoKQotICAgICAgICAgICAgaWYgc2VsZi5kaXNwbGF5X3Jlc3RfcmVwbHk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ1JFU1QtVEVYVC1UTzogJXMgcmVwbHkgIiVzIicgJSAocmVxdWVzdCwgcmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgZ2V0X3RleHRfZnJvbV91cmwoc2VsZiwgdXJsKToKLSAgICAgICAgaWYgc2VsZi5kaXNwbGF5X3Jlc3Q6Ci0gICAgICAgICAgICBwcmludCAiUkVTVC1URVhULUZST006IiwgdXJsCi0gICAgICAgIHJlc3VsdCA9IHVybGxpYjIudXJsb3Blbih1cmwpLnJlYWQoKQotICAgICAgICBpZiBzZWxmLmRpc3BsYXlfcmVzdF9yZXBseToKLSAgICAgICAgICAgIHByaW50ICdSRVNULVRFWFQtRlJPTTogJXMgcmVzdWx0OiIlcyInICUgKHVybCwgcmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0CmRpZmYgLS1naXQgYS9jbGkvY2xpL3RlY2hfc3VwcG9ydC5weSBiL2NsaS9jbGkvdGVjaF9zdXBwb3J0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YmIzOWY4Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvdGVjaF9zdXBwb3J0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMKLSMgIChjKSBpbiAyMDEyIGJ5IEJpZyBTd2l0Y2ggTmV0d29ya3MKLSMgIEFsbCByaWdodHMgcmVzZXJ2ZWQKLSMKLQotIwotIyBzaG93IHRlY2gtc3VwcG9ydAotIwotIyMgQ29tbWFuZCB0YWJsZSBmb3Igc2hvdyB0ZWNoLXN1cHBvcnQgY29tbWFuZAotdGVjaF9zdXBwb3J0X2NvbW1hbmRzID0gWwotICAgIFsnY2xpJywgJ3Nob3cgdmVyc2lvbicsIE5vbmVdLAotICAgIFsnY2xpJywgJ3Nob3cgY29udHJvbGxlci1ub2RlIGxvY2FsaG9zdCBzdW1tYXJ5JywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyBjbG9jaycsIE5vbmVdLAotICAgIFsnY2xpJywgJ3Nob3cgY29uZmlnJywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyBjb25maWctZmlsZScsIE5vbmVdLAotICAgIFsnY2xpJywgJ3Nob3cgY29udHJvbGxlci1ub2RlJywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyBjb250cm9sbGVyLW5vZGUgYWxsIGludGVyZmFjZXMnLCBOb25lXSwKLSAgICBbJ2NsaScsICdzaG93IGNvbnRyb2xsZXItbm9kZSBsb2NhbGhvc3Qgc3RhdHMnLCBOb25lXSwKLSAgICBbJ2NsaScsICdzaG93IHJ1bm5pbmctY29uZmlnJywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyBzd2l0Y2gnLCBOb25lXSwKLSAgICBbJ2NsaScsICdzaG93IHN3aXRjaC1jbHVzdGVyJywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyBsaW5rJywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyB0dW5uZWwgYWxsJywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyBob3N0JywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyBob3N0IGFsbCBhdHRhY2htZW50LXBvaW50JywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyBob3N0IGFsbCBpcC1hZGRyZXNzJywgTm9uZV0sCi0gICAgIyBbJ2NsaScsICdzaG93IGZsb3ctY2FjaGUnLCBOb25lXSwKLSAgICBbJ2NsaScsICdzaG93IGZsb3ctZW50cnknLCBOb25lXSwKLSAgICBbJ2NsaScsICdzaG93IG5ldHdvcmstc2VydmljZScsIE5vbmVdLAotICAgIFsnY2xpJywgJ3Nob3cgZXZlbnQtaGlzdG9yeSB0b3BvbG9neS1jbHVzdGVyJywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyBldmVudC1oaXN0b3J5IHRvcG9sb2d5LWxpbmsnLCBOb25lXSwKLSAgICBbJ2NsaScsICdzaG93IGV2ZW50LWhpc3RvcnkgdG9wb2xvZ3ktc3dpdGNoJywgTm9uZV0sCi0gICAgWydjbGknLCAnc2hvdyBsb2dnaW5nIGFsbCcsIE5vbmVdLAotICAgICMgWydjbGknLCAnc2hvdyBzeXN0ZW0gaW50ZXJuYWwgcGVyZm9ybWFuY2UtZGF0YSddLCB3YXNuJ3Qgd29ya2luZwotICAgIFsnY2xpJywgJ2hpc3RvcnkgMTAwJywgTm9uZV0sCi0gICAgWydzaGVsbCcsICAndXB0aW1lJywgTm9uZV0sCi0gICAgWydzaGVsbCcsICAncHMgLWVsZicsIE5vbmVdLAotICAgIFsnc2hlbGwnLCAgJ3BzdHJlZScsIE5vbmVdLAotICAgIFsnc2hlbGwnLCAgJ2NhdCAvcHJvYy9tZW1pbmZvJywgTm9uZV0sCi0gICAgWydzaGVsbCcsICAnZGYgLW0nLCBOb25lXSwKLSAgICBbJ3NoZWxsJywgICd0b3AgLW4gMSAtYicsIE5vbmVdLAotICAgIFsnc2hlbGwnLCAgJ2RtZXNnJywgTm9uZV0sCi0gICAgXQotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBhZGRfdG9fc2hvd190ZWNoX3N1cHBvcnQKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1kZWYgYWRkX3RvX3Nob3dfdGVjaF9zdXBwb3J0KHNoZWxsLCBjbWQsIGZlYXR1cmU9Tm9uZSk6Ci0gICAgdGVjaF9zdXBwb3J0X2NvbW1hbmRzLmFwcGVuZChbc2hlbGwsIGNtZCwgZmVhdHVyZV0pCi0KLWRlZiBwcmludF9zaG93X3RlY2goKToKLSAgICBmb3IgZW50cnkgaW4gdGVjaF9zdXBwb3J0X2NvbW1hbmRzOgotICAgICAgIHByaW50ICJTaGVsbCAlcyIlZW50cnlbMF0gKyAiLENtZCAlcyIlZW50cnlbMV0gKyAiLEZlYXR1cmUgJXMiJWVudHJ5WzJdCi0KLWRlZiBnZXRfc2hvd190ZWNoX2NtZF90YWJsZSgpOgotICAgIHJldHVybiB0ZWNoX3N1cHBvcnRfY29tbWFuZHMKZGlmZiAtLWdpdCBhL2NsaS9jbGkvdGltZXNpbmNlLnB5IGIvY2xpL2NsaS90aW1lc2luY2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwYTQxN2UuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS90aW1lc2luY2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMSwyMDEyLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBkYXRldGltZQotCi1kZWYgdW5nZXR0ZXh0KGEsYixjb3VudCk6Ci0gICAgaWYgY291bnQgPiAxOiAjIHBsdXJhbAotICAgICAgICByZXR1cm4gYgotICAgIHJldHVybiBhCi0KLWRlZiB1Z2V0dGV4dChhKToKLSAgICByZXR1cm4gYQotCi1kZWYgdGltZXNpbmNlX3NlYyhzaW5jZSk6Ci0gICAgY2h1bmtzID0gKAotICAgICAgKDYwICogNjAgKiAyNCAqIDM2NSwgbGFtYmRhIG46IHVuZ2V0dGV4dCgneWVhcicsICd5ZWFycycsIG4pKSwKLSAgICAgICg2MCAqIDYwICogMjQgKiAzMCwgbGFtYmRhIG46IHVuZ2V0dGV4dCgnbW9udGgnLCAnbW9udGhzJywgbikpLAotICAgICAgKDYwICogNjAgKiAyNCAqIDcsIGxhbWJkYSBuIDogdW5nZXR0ZXh0KCd3ZWVrJywgJ3dlZWtzJywgbikpLAotICAgICAgKDYwICogNjAgKiAyNCwgbGFtYmRhIG4gOiB1bmdldHRleHQoJ2RheScsICdkYXlzJywgbikpLAotICAgICAgKDYwICogNjAsIGxhbWJkYSBuOiB1bmdldHRleHQoJ2hvdXInLCAnaG91cnMnLCBuKSksCi0gICAgICAoNjAsIGxhbWJkYSBuOiB1bmdldHRleHQoJ21pbnV0ZScsICdtaW51dGVzJywgbikpCi0gICAgKQotICAgIGZvciBpLCAoc2Vjb25kcywgbmFtZSkgaW4gZW51bWVyYXRlKGNodW5rcyk6Ci0gICAgICAgIGNvdW50ID0gc2luY2UgLy8gc2Vjb25kcwotICAgICAgICBpZiBjb3VudCAhPSAwOgotICAgICAgICAgICAgYnJlYWsKLSAgICBzID0gdWdldHRleHQoJyUobnVtYmVyKWQgJSh0eXBlKXMnKSAlIHsnbnVtYmVyJzogY291bnQsICd0eXBlJzogbmFtZShjb3VudCl9Ci0gICAgaWYgaSArIDEgPCBsZW4oY2h1bmtzKToKLSAgICAgICAgIyBOb3cgZ2V0IHRoZSBzZWNvbmQgaXRlbQotICAgICAgICBzZWNvbmRzMiwgbmFtZTIgPSBjaHVua3NbaSArIDFdCi0gICAgICAgIGNvdW50MiA9IChzaW5jZSAtIChzZWNvbmRzICogY291bnQpKSAvLyBzZWNvbmRzMgotICAgICAgICBpZiBjb3VudDIgIT0gMDoKLSAgICAgICAgICAgIHMgKz0gdWdldHRleHQoJywgJShudW1iZXIpZCAlKHR5cGUpcycpICUgeydudW1iZXInOiBjb3VudDIsICd0eXBlJzogbmFtZTIoY291bnQyKX0KLSAgICByZXR1cm4gcwotICAgIAotZGVmIHRpbWVzaW5jZShkLCBub3c9Tm9uZSk6Ci0gICAgCi0gICAgIiIiCi0gICAgVGFrZXMgdHdvIGRhdGV0aW1lIG9iamVjdHMgYW5kIHJldHVybnMgdGhlIHRpbWUgYmV0d2VlbiBkIGFuZCBub3cKLSAgICBhcyBhIG5pY2VseSBmb3JtYXR0ZWQgc3RyaW5nLCBlLmcuICIxMCBtaW51dGVzIi4gIElmIGQgb2NjdXJzIGFmdGVyIG5vdywKLSAgICB0aGVuICIwIG1pbnV0ZXMiIGlzIHJldHVybmVkLgotCi0gICAgVW5pdHMgdXNlZCBhcmUgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBhbmQgbWludXRlcy4KLSAgICBTZWNvbmRzIGFuZCBtaWNyb3NlY29uZHMgYXJlIGlnbm9yZWQuICBVcCB0byB0d28gYWRqYWNlbnQgdW5pdHMgd2lsbCBiZQotICAgIGRpc3BsYXllZC4gIEZvciBleGFtcGxlLCAiMiB3ZWVrcywgMyBkYXlzIiBhbmQgIjEgeWVhciwgMyBtb250aHMiIGFyZQotICAgIHBvc3NpYmxlIG91dHB1dHMsIGJ1dCAiMiB3ZWVrcywgMyBob3VycyIgYW5kICIxIHllYXIsIDUgZGF5cyIgYXJlIG5vdC4KLQotICAgIEFkYXB0ZWQgZnJvbSBodHRwOi8vYmxvZy5uYXRiYXQuY28udWsvYXJjaGl2ZS8yMDAzL0p1bi8xNC90aW1lX3NpbmNlCi0gICAgIiIiCi0gICAgIyBDb252ZXJ0IGRhdGV0aW1lLmRhdGUgdG8gZGF0ZXRpbWUuZGF0ZXRpbWUgZm9yIGNvbXBhcmlzb24uCi0gICAgaWYgbm90IGlzaW5zdGFuY2UoZCwgZGF0ZXRpbWUuZGF0ZXRpbWUpOgotICAgICAgICBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoZC55ZWFyLCBkLm1vbnRoLCBkLmRheSkKLSAgICBpZiBub3cgYW5kIG5vdCBpc2luc3RhbmNlKG5vdywgZGF0ZXRpbWUuZGF0ZXRpbWUpOgotICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZShub3cueWVhciwgbm93Lm1vbnRoLCBub3cuZGF5KQotCi0gICAgaWYgbm90IG5vdzoKLSAgICAgICAgaWYgZC50emluZm86Ci0gICAgICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coZC50emluZm8pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQotCi0gICAgIyBpZ25vcmUgbWljcm9zZWNvbmQgcGFydCBvZiAnZCcgc2luY2Ugd2UgcmVtb3ZlZCBpdCBmcm9tICdub3cnCi0gICAgZGVsdGEgPSBub3cgLSAoZCAtIGRhdGV0aW1lLnRpbWVkZWx0YSgwLCAwLCBkLm1pY3Jvc2Vjb25kKSkKLSAgICBzaW5jZSA9IGRlbHRhLmRheXMgKiAyNCAqIDYwICogNjAgKyBkZWx0YS5zZWNvbmRzCi0gICAgaWYgc2luY2UgPCAwOgotICAgICAgICAjIGQgaXMgaW4gdGhlIGZ1dHVyZSBjb21wYXJlZCB0byBub3csIHN0b3AgcHJvY2Vzc2luZy4KLSAgICAgICAgcmV0dXJuICdmdXR1cmUnCi0gICAgaWYgc2luY2UgPT0gMDoKLSAgICAgICAgcmV0dXJuICcwIG1pbnV0ZScgIyBwb3NzYmlibHkgYSBiZXR0ZXIgc3RyaW5nIGhlcmU/Ci0gICAgcmV0dXJuIHRpbWVzaW5jZV9zZWMoc2luY2UpCmRpZmYgLS1naXQgYS9jbGkvY2xpL3Rvb2xzL2V4cHJfdG9fZGVzYy5weSBiL2NsaS9jbGkvdG9vbHMvZXhwcl90b19kZXNjLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ODY3ZDQ5Li4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvdG9vbHMvZXhwcl90b19kZXNjLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODAzICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIyBTaW1wbGUgY29tbWFuZCBkZXNjcmlwdGlvbiBidWlsZGVyLgotIwotCi1pbXBvcnQgb3MKLWltcG9ydCBjb3B5Ci1pbXBvcnQgZmlsZWlucHV0Ci1pbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgYXJncGFyc2UKLQotZGVmIHBhcnNlKCpsaW5lKToKLSAgICBpZiBhcmdzLnA6Ci0gICAgICAgIHByaW50IGxpbmUKLQotZGVmIGRlYnVnKCpsaW5lKToKLSAgICBpZiBhcmdzLmQ6Ci0gICAgICAgIHByaW50IGxpbmUKLQotZGVmIHZlcmJvc2UoKmxpbmUpOgotICAgIGlmIGFyZ3MudjoKLSAgICAgICAgcHJpbnQgbGluZQotCi1kZWYgZXJyb3IoKmxpbmUpOgotICAgIHByaW50IGxpbmUKLQotCi1hZGRfdG9rZW4gPSAoJ28nLCAnKycpCi1mcm9udF90b2tlbiA9ICgnbycsICdeJykKLWVuZF90b2tlbiA9ICgnbycsICckJykKLQotZGVmIHRva2VucyhsaW5lKToKLSAgICAiIiIKLSAgICBSZXR1cm5zIHRoZSB0b2tlbnppZWQgbGluZSwgd2l0aCBhIGVvbCB0b2tlbiBhdCB0aGUgZW5kCi0gICAgVGhlIHN0YXJ0LXRva2VuIG11c3QgYmUgcHJlZml4ZWQgYmVmb3JlIHBhcnNpbmcKLSAgICAiIiIKLSAgICB0b2tlbnMgPSBbXQotICAgIGkgPSAwCi0gICAgZW5kID0gbGVuKGxpbmUpCi0gICAgd2hpbGUgaSA8IGVuZDoKLSAgICAgICAgIyBicmVhawotICAgICAgICB3aGlsZSBsaW5lW2ldIGluICcgXHRcclxuJzoKLSAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAgICAgaWYgaSA9PSBlbmQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgaSA9PSBlbmQ6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBpZiBsaW5lW2ldIGluICdbXXt9PD4oKXwnOgotICAgICAgICAgICAgdG9rZW5zLmFwcGVuZCgoJ28nLCBsaW5lW2ldKSkgIyAnbycgPD0gY2hhciwgb3AKLSAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgIyBzcGFuLgotICAgICAgICB0b2tlbiA9ICcnCi0gICAgICAgIHJ1bl9pID0gaSAKLSAgICAgICAgd2hpbGUgbm90IGxpbmVbcnVuX2ldIGluICcgXHRbXXt9PD58XG4nOgotICAgICAgICAgICAgcnVuX2kgKz0gMQotICAgICAgICAgICAgaWYgcnVuX2kgPT0gZW5kOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHRva2Vucy5hcHBlbmQoKCd0JywgbGluZVtpOnJ1bl9pXSkpICMgJ3QnIDw9IHRva2VuCi0gICAgICAgIGkgPSBydW5faQotICAgICMKLSAgICB0b2tlbnMuYXBwZW5kKGVuZF90b2tlbikgIyAndCcgPD0gJyQnIGZvciBlb2wKLQotICAgIHJldHVybiB0b2tlbnMKLQotcHJpb3JpdHlfZGljdCA9IHsKLSAgICAgICAgICAgJ14nICA6IDAsICAgICAgICMgaGF0LCBmcm9udCBvZiBsaW5lCi0gICAgICAgICAgICckJyAgOiAxLCAgICAgICAjIG5ld2xpbmUsIGVuZCBvZiBsaW5lCi0gICAgICAgICAgICcpJyAgOiAyLAotICAgICAgICAgICAnKCcgIDogMywKLSAgICAgICAgICAgJ30nICA6IDQsCi0gICAgICAgICAgICd7JyAgOiA1LAotICAgICAgICAgICAnXScgIDogNiwKLSAgICAgICAgICAgJ1snICA6IDcsCi0gICAgICAgICAgICc+JyAgOiA4LAotICAgICAgICAgICAnPCcgIDogOSwKLSAgICAgICAgICAgJ3wnICA6IDEwLAotICAgICAgICAgICAnKycgIDogMTEsCi0gICAgICAgICAgIH0KLQotZGVmIHByaW9yaXR5KHRvayk6Ci0gICAgaWYgbm90IGlzX29wKHRvayk6Ci0gICAgICAgIHJldHVybiAtMSAjIGxvd2VyIHRoYW4gYW55IHdpdGggYSB2YWxpZCBwcmlvcml0eSwgZW5hYmxlcyBwdXNoCi0gICAgaWYgbm90IHRva1sxXSBpbiBwcmlvcml0eV9kaWN0OgotICAgICAgICByZXR1cm4gMTAwICMgaGlnaGVyIHRoYW4gYW55IHdpdGggYSB2YWxpZCBwcmlvcml0eSwgZW5hYmxlcyBwdXNoCi0gICAgcmV0dXJuIHByaW9yaXR5X2RpY3RbdG9rWzFdXQotCi1kZWYgaXNfb3AodG9rKToKLSAgICByZXR1cm4gdG9rWzBdID09ICdvJwotCi1kZWYgaXNfdG9rZW4odG9rKToKLSAgICByZXR1cm4gdG9rWzBdID09ICd0JwotCi1kZWYgaXNfZmllbGQodG9rKToKLSAgICByZXR1cm4gdG9rWzBdID09ICdmaWVsZCcKLQotZGVmIGlzX3RyZWUodG9rKToKLSAgICByZXR1cm4gdG9rWzBdID09ICd0cmVlJwotCi1kZWYgaXNfbGlzdCh0b2spOgotICAgIHJldHVybiB0eXBlKHRvaykgPT0gbGlzdAotCi1kZWYgb3Bfb2YodG9rKToKLSAgICByZXR1cm4gdG9rWzFdCi0KLWRlZiB0b2tlbl9vZih0b2spOgotICAgIHJldHVybiB0b2tbMV0KLQotZGVmIGZpZWxkX2xpc3Rfb2YodG9rKToKLSAgICByZXR1cm4gdG9rWzFdCi0KLWJhbGFuY2UgPSB7Ci0gICAgICAgICddJyAgOiAnWycsCi0gICAgICAgICd9JyAgOiAneycsCi0gICAgICAgICc+JyAgOiAnPCcsCi0gICAgICAgICcpJyAgOiAnKCcsCi0gICAgICAgICckJyAgOiAnXicsCi19Ci0KLWRlZiBwYXJ0bmVyKHRvayk6Ci0gICAgaWYgaXNfb3AodG9rKToKLSAgICAgICAgaWYgdG9rZW5fb2YodG9rKSBpbiBiYWxhbmNlOgotICAgICAgICAgICAgcmV0dXJuIGJhbGFuY2VbdG9rZW5fb2YodG9rKV0KLSAgICByZXR1cm4gTm9uZQotCi0KLXN0YWNrID0gW10KLQotZGVmIHByaW50X3N0YWNrKCk6Ci0gICAgZm9yIHMgaW4gc3RhY2s6Ci0gICAgICAgIHByaW50IHMKLQotZGVmIHB1c2goaXRlbSk6Ci0gICAgcGFyc2UoIlBVU0ggIiwgc3RhY2ssICJBREQgIiwgaXRlbSkKLSAgICBzdGFjay5hcHBlbmQoaXRlbSkKLQotZGVmIHBvcCgpOgotICAgIHBhcnNlKCAiUE9QIiwgc3RhY2sgKQotICAgIHAgPSBzdGFja1stMV0KLSAgICBkZWwgc3RhY2tbLTFdCi0gICAgcmV0dXJuIHAKLQotZGVmIHJlc2V0X3N0YWNrKCk6Ci0gICAgZ2xvYmFsIHN0YWNrCi0gICAgc3RhY2sgPSBbXQotCi1kZWYgcGVlayhpID0gMSk6Ci0gICAgdG9wID0gbGVuKHN0YWNrKQotICAgIGlmIHRvcCA8IGk6Ci0gICAgICAgIHJldHVybiAoJ28nLCdeJykgIyA8PSBmcm9udCBvZiBsaW5lCi0gICAgcmV0dXJuIHN0YWNrWy1pXQotCi1kZWYgaXNfaW5fb3JkZXIoY29sbGVjdCk6Ci0gICAgaWYgaXNfb3AoY29sbGVjdFsxXSkgYW5kIGNvbGxlY3RbMV1bMV0gPT0gJysnOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi1kZWYgaXNfZWl0aGVyKGNvbGxlY3QpOgotICAgIGlmIGlzX29wKGNvbGxlY3RbMV0pIGFuZCBjb2xsZWN0WzFdWzFdID09ICd8JzoKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4gRmFsc2UKLQotZGVmIGdhdGhlcl9maWVsZF9saXN0KGNvbGxlY3QsIGZpZWxkX2xpc3QpOgotICAgIGlmIHR5cGUoY29sbGVjdCkgPT0gbGlzdDoKLSAgICAgICAgZm9yIGYgaW4gY29sbGVjdDoKLSAgICAgICAgICAgIGdhdGhlcl9maWVsZF9saXN0KGYsIGZpZWxkX2xpc3QpCi0gICAgZWxpZiBpc190b2tlbihjb2xsZWN0KToKLSAgICAgICAgZmllbGRfbGlzdC5hcHBlbmQoY29sbGVjdCkKLSAgICBlbGlmIGlzX3RyZWUoY29sbGVjdCk6Ci0gICAgICAgIGdhdGhlcl9maWVsZF9saXN0KHRva2VuX29mKHRva2VuX29mKGNvbGxlY3QpKSwgZmllbGRfbGlzdCkKLSAgICBlbHNlOgotICAgICAgICBmaWVsZF9saXN0LmFwcGVuZChmaWVsZF9saXN0KQotCi1kZWYgZ2F0aGVyX2ZpZWxkKGNvbGxlY3QpOgotICAgIHBhcnNlKCAiR0FUSEVSIEZJRUxEICIsIGNvbGxlY3QpCi0gICAgZmllbGRfbGlzdCA9IFtdCi0gICAgaWYgaXNfdG9rZW4oY29sbGVjdCk6Ci0gICAgICAgIGZpZWxkX2xpc3QuYXBwZW5kKGNvbGxlY3QpCi0gICAgZWxpZiBpc190cmVlKGNvbGxlY3QpOgotICAgICAgICBnYXRoZXJfZmllbGRfbGlzdCh0b2tlbl9vZih0b2tlbl9vZihjb2xsZWN0KSksIGZpZWxkX2xpc3QpCi0gICAgZWxpZiB0eXBlKGNvbGxlY3QpID09IGxpc3Q6Ci0gICAgICAgIGdhdGhlcl9maWVsZF9saXN0KGNvbGxlY3QsIGZpZWxkX2xpc3QpCi0gICAgZWxzZToKLSAgICAgICAgZmllbGRfbGlzdC5hcHBlbmQoY29sbGVjdCkKLSAgICByZXR1cm4gKCdmaWVsZCcsIGZpZWxkX2xpc3QpCi0KLWRlZiB0cmVlX2J1aWxkZXIoY29sbGVjdCwgdG9rKToKLSAgICByZXN1bHQgPSBOb25lCi0gICAgb3AgPSBvcF9vZih0b2spCi0gICAgcGFyc2UoICJXSEFUICIsIGNvbGxlY3QsIHRvaykKLSAgICBpZiBvcCA9PSAnfSc6ICMgeyBzdHVmZiB9IC4uLiBzZWxlY3Qgb25lIGZyb20gdGhlIGFyZ3MKLSAgICAgICAgIyBYWFggZWFybHkgcmV0dXJuCi0gICAgICAgIGlmIGxlbihjb2xsZWN0KSA9PSAxOgotICAgICAgICAgICAgcmVzdWx0ID0gKCdDSE9JQ0UgQUxPTkUnLCBjb2xsZWN0KQotICAgICAgICBlbGlmIGlzX2VpdGhlcihjb2xsZWN0KToKLSAgICAgICAgICAgIHJlc3VsdCA9ICgiQ0hPSUNFIE9GIiwgW2MgZm9yIGMgaW4gY29sbGVjdCBpZiBub3QgaXNfb3AoYyldKQotICAgICAgICBlbGlmIGlzX2luX29yZGVyKGNvbGxlY3QpOgotICAgICAgICAgICAgcmVzdWx0ID0gKCJDSE9JQ0UgT1JERVIiLCBbYyBmb3IgYyBpbiBjb2xsZWN0IGlmIG5vdCBpc19vcChjKV0pCi0gICAgICAgIGVsaWYgaXNfdHJlZShjb2xsZWN0KToKLSAgICAgICAgICAgIHJlc3VsdCA9ICgnQ0hPSUNFIFRSRUUnLCBjb2xsZWN0KQotICAgICAgICBlbGlmIGlzX2ZpZWxkKGNvbGxlY3QpOgotICAgICAgICAgICAgcmV0dXJuIGdhdGhlcl9maWVsZChjb2xsZWN0KQotICAgICAgICBlbGlmIGlzX3Rva2VuKGNvbGxlY3QpOgotICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3QKLSAgICAgICAgZWxpZiBpc190b2tlbihjb2xsZWN0KToKLSAgICAgICAgICAgIHJldHVybiBjb2xsZWN0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQgPSAoIkNIT0lDRSBUUk9VQkxFIiwgb3AsIGNvbGxlY3QpCi0gICAgZWxpZiBvcCA9PSAnXSc6ICMgWyBzdHVmZiBdIC4uLiBzdHVmZiB3aGljaCBpcyBvcHRpb25hbAotICAgICAgICBpZiBsZW4oY29sbGVjdCkgPT0gMToKLSAgICAgICAgICAgIHJlc3VsdCA9ICgnT1BUSU9OIEFMT05FJywgY29sbGVjdCkKLSAgICAgICAgZWxpZiBpc19laXRoZXIoY29sbGVjdCk6Ci0gICAgICAgICAgICByZXN1bHQgPSAoIk9QVElPTiBPRiIsIFtjIGZvciBjIGluIGNvbGxlY3QgaWYgbm90IGlzX29wKGMpXSkKLSAgICAgICAgZWxpZiBpc19pbl9vcmRlcihjb2xsZWN0KToKLSAgICAgICAgICAgIHJlc3VsdCA9ICgiT1BUSU9OIE9SREVSIiwgW2MgZm9yIGMgaW4gY29sbGVjdCBpZiBub3QgaXNfb3AoYyldKQotICAgICAgICBlbGlmIGlzX3RyZWUoY29sbGVjdCk6Ci0gICAgICAgICAgICByZXN1bHQgPSAoJ09QVElPTiBUUkVFJywgY29sbGVjdCkKLSAgICAgICAgZWxpZiBpc19maWVsZChjb2xsZWN0KToKLSAgICAgICAgICAgIHJldHVybiAoJ3RyZWUnLCAoJ09QVElPTiBGSUVMRCcsIGNvbGxlY3QpKQotICAgICAgICBlbGlmIGlzX3Rva2VuKGNvbGxlY3QpOgotICAgICAgICAgICAgcmVzdWx0ID0gKCdPUFRJT04gVE9LRU4nLCBjb2xsZWN0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0ID0gKCJPUFRJT04gVFJPVUJMRSIsIG9wLCBjb2xsZWN0KQotICAgIGVsaWYgb3AgPT0gJyknOiAjICggc3R1ZmYgKSAuLi4gbm8gc2VtYW50aWMgbWVhbmluZywKLSAgICAgICAgIyBYWFggZWFybHkgcmV0dXJuCi0gICAgICAgIHJldHVybiBjb2xsZWN0Ci0gICAgZWxpZiBvcCA9PSAnPic6ICMgZGVzY3JpcHRpb24gb2YgYSBmaWVsZAotICAgICAgICBnYXRoZXIgPSBnYXRoZXJfZmllbGQoY29sbGVjdCkKLSAgICAgICAgcGFyc2UoIkdBVEhFUkVEOiAiLGdhdGhlcikKLSAgICAgICAgcmV0dXJuIGdhdGhlcgotICAgIGVsaWYgb3AgPT0gJ3wnOiAjIGVpdGhlciBvZgotICAgICAgICByZXN1bHQgPSAoJ0VJVEhFUicsIFtjIGZvciBjIGluIGNvbGxlY3QgaWYgbm90IGlzX29wKGMpXSkKLSAgICBlbGlmIG9wID09ICcrJzogIyBzdW0gb2YKLSAgICAgICAgcmVzdWx0ID0gKCdPUkRFUicsIFtjIGZvciBjIGluIGNvbGxlY3QgaWYgbm90IGlzX29wKGMpXSkKLSAgICBlbGlmIG9wID09ICckJzogIyBlb2wsIGNvbGxlY3QgdXAgYW55IHRyZWUncyBsZWZ0Ci0gICAgICAgICMgWFhYIHN5bnRheCBlcnJvcj8KLSAgICAgICAgcHJpbnQgIlNUQUNLICIKLSAgICAgICAgcHJpbnRfc3RhY2soKQotICAgICAgICBwcmludCAiVE9LICIsIHRvawotICAgICAgICBwcmludCAiQ09MTEVDVCIsIGNvbGxlY3QKLSAgICAgICAgZXhpdCgpCi0gICAgZWxzZToKLSAgICAgICAgcGFyc2UoJ3JldHVybiBjb2xsZWN0LCBsYXRlciB0b2snLCB0b2spCi0gICAgICAgIHJldHVybiBjb2xsZWN0Ci0gICAgcGFyc2UoICJCVUlMRCAiLCBvcCwgdHlwZShyZXN1bHQpKQotICAgIHJldHVybiAoJ3RyZWUnLCByZXN1bHQpCi0KLQotZGVmIHNpbmdsZV90b2tlbih0b2spOgotICAgICh3aGljaCwgdCkgPSB0b2sKLSAgICBwYXJzZSggIk5FWFQiLCB3aGljaCwgdCwgcGVlaygpKQotCi0gICAgaWYgaXNfdG9rZW4odG9rKSBhbmQgaXNfdG9rZW4ocGVlaygpKToKLSAgICAgICAgIyB0d28gdG9rZW5zIGluIGEgcm93LCBwcmV0ZW5kIHRoZSBvcCBpcyAnKycKLSAgICAgICAgcHVzaChhZGRfdG9rZW4pCi0KLSAgICAjIGlzIHRoaXMgYSA8dHJlZT48dHJlZT4gPwotICAgIGlmIGlzX3RyZWUocGVlaygpKSBhbmQgKGlzX3RyZWUocGVlaygyKSkgb3IgaXNfZmllbGQocGVlaygyKSkpOgotICAgICAgICAjIGNvbGxlY3QgdG9nZXRoZXIgYXMgbWFueSBhcyBwb3NzaWJsZQotICAgICAgICBjb2xsZWN0ID0gW3BvcCgpXQotICAgICAgICB3aGlsZSBpc190cmVlKHBlZWsoKSkgb3IgaXNfZmllbGQocGVlaygpKToKLSAgICAgICAgICAgIGNvbGxlY3QuaW5zZXJ0KDAsIHBvcCgpKQotICAgICAgICBwdXNoKHRyZWVfYnVpbGRlcihjb2xsZWN0LCBhZGRfdG9rZW4pKQotICAgICMgaXMgdGhpcyBhIDx0cmVlPjx0cmVlPiA/Ci0gICAgZWxpZiAobm90IGlzX29wKHBlZWsoKSkpIGFuZCAobm90IGlzX29wKHBlZWsoMikpKToKLSAgICAgICAgIyBjb2xsZWN0IHRvZ2V0aGVyIGFzIG1hbnkgYXMgcG9zc2libGUKLSAgICAgICAgY29sbGVjdCA9IFtwb3AoKV0KLSAgICAgICAgd2hpbGUgbm90IGlzX29wKHBlZWsoKSk6Ci0gICAgICAgICAgICBjb2xsZWN0Lmluc2VydCgwLCBwb3AoKSkKLSAgICAgICAgcHVzaCh0cmVlX2J1aWxkZXIoY29sbGVjdCwgYWRkX3Rva2VuKSkKLQotICAgIGlmIGlzX29wKHRvayk6Ci0gICAgICAgIGlmIG5vdCBpc19vcChwZWVrKDEpKTogIyBpdGVtIG9yIHRva2VuIG9yIGZpZWxkCi0gICAgICAgICAgICBwYXJzZSggJ1BSSU8gJywgdG9rLCBwcmlvcml0eSh0b2spLCBwZWVrKDIpLCBwcmlvcml0eShwZWVrKDIpKSkKLSAgICAgICAgICAgIHdoaWxlIHByaW9yaXR5KHRvaykgPCBwcmlvcml0eShwZWVrKDIpKToKLSAgICAgICAgICAgICAgICAjIGNvbGxlY3QgYXMgbWFueSBmcm9tIHRoZSBzYW1lIHByaW9yaXR5Ci0gICAgICAgICAgICAgICAgbGFzdCA9IHBvcCgpCi0gICAgICAgICAgICAgICAgcGFyc2UoICItLT4iLCBzdGFjaywgdG9rLCBsYXN0KQotICAgICAgICAgICAgICAgICMgdW5pYXJ5IG9wPwotICAgICAgICAgICAgICAgIGlmIGlzX29wKHBlZWsoKSkgYW5kIHBhcnRuZXIodG9rKSA9PSBvcF9vZihwZWVrKCkpOiAgCi0gICAgICAgICAgICAgICAgICAgIHBhcnNlKCAiVU5JQVJZICIpCi0gICAgICAgICAgICAgICAgICAgIHBvcCgpICMgPD0gcG9wIG1hdGNoaW5nIG9wCi0gICAgICAgICAgICAgICAgICAgIHB1c2godHJlZV9idWlsZGVyKGxhc3QsIHRvaykpICMgPD0gdG9rZW4gcG9wcGVkIG9mZgotICAgICAgICAgICAgICAgICAgICBwYXJzZSggIkxFQVZFIiwgc3RhY2ssIHRvaykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICMgZG9uJ3QgcHVzaCB0aGUgdW5pYXJ5IHJpZ2h0IG9wCi0KLSAgICAgICAgICAgICAgICBjb2xsZWN0ID0gbGFzdAotICAgICAgICAgICAgICAgIG9wID0gdG9rCi0gICAgICAgICAgICAgICAgaWYgaXNfb3AocGVlaygpKToKLSAgICAgICAgICAgICAgICAgICAgb3AgPSBwZWVrKCkKLSAgICAgICAgICAgICAgICAgICAgcGFyc2UoICJCSU5BUlkgIiwgb3ApCi0gICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgPSBbbGFzdF0KLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgaXNfb3AocGVlaygpKSBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgIG5vdCAocGFydG5lcih0b2spID09IG9wX29mKHBlZWsoKSkpIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHkob3ApID09IHByaW9yaXR5KHBlZWsoKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZSggIldIWSAiLCBvcF9vZihvcCksIHByaW9yaXR5KG9wKSwgb3Bfb2YocGVlaygpKSwgcHJpb3JpdHkocGVlaygpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QuaW5zZXJ0KDAsIHBvcCgpKSAjIDw9IG9wCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0Lmluc2VydCgwLCBwb3AoKSkgIyA8PSB0b2tlbgotICAgICAgICAgICAgICAgICAgICBpZiBsZW4oY29sbGVjdCkgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJOT1QgQklOQVJZIiwgdG9rLCBvcCwgcGVlawotICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgpCi0gICAgICAgICAgICAgICAgcGFyc2UoICI9PT4gIiwgY29sbGVjdCwgdG9rKQotICAgICAgICAgICAgICAgIHBhcnNlKCAiX18gICIsIHN0YWNrKQotICAgICAgICAgICAgICAgIHB1c2godHJlZV9idWlsZGVyKGNvbGxlY3QsIG9wKSkKLSAgICAgICAgICAgICAgICBwYXJzZSggIlNPIEZBUiAiLCBzdGFjaykKLSAgICAgICAgICAgICAgICBwYXJzZSggIk9QIEZBUiAiLCB0b2spCi0gICAgcHVzaCh0b2spCi0gICAgcGFyc2UoICJMQVNUIiwgc3RhY2ssIHRvaykKLSAKLQotIwotZGVmIHNpbmdsZV9saW5lKHRva2Vucyk6Ci0gICAgcmVzZXRfc3RhY2soKQotICAgIGZvciAod2hpY2gsIHQpIGluIHRva2VuczoKLSAgICAgICAgc2luZ2xlX3Rva2VuKCh3aGljaCwgdCkpCi0KLWRlZiBhbGxfdG9rZW5zKHRva2VuX2xpc3QpOgotICAgIGZvciB0b2tlbiBpbiB0b2tlbl9saXN0OgotICAgICAgICBwYXJzZSggIkFMTCBUT0tFTj8gIiwgdG9rZW4pCi0gICAgICAgIGlmIG5vdCBpc190b2tlbih0b2tlbik6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQotCi0KLWNsYXNzIHByaW50ZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvcm0sIGlzX29wdGlvbmFsLCBpbmRlbnQgPSAyKToKLSAgICAgICAgc2VsZi5mb3JtID0gZm9ybQotICAgICAgICBzZWxmLmlzX29wdGlvbmFsID0gaXNfb3B0aW9uYWwKLSAgICAgICAgc2VsZi5uZWVkX29wdGlvbmFsID0gRmFsc2UKLSAgICAgICAgc2VsZi5pbmRlbnQgPSBpbmRlbnQKLSAgICAKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJmb3JtICVzIG5lZWQgJXMgb3B0aW9uYWwgJXMgaW5kZW50ICVzIiAlICgKLSAgICAgICAgICAgIHNlbGYuZm9ybSwgc2VsZi5uZWVkX29wdGlvbmFsLCBzZWxmLmlzX29wdGlvbmFsLCBzZWxmLmluZGVudCkKLSAgICAKLSAgICBkZWYgaW5kZW50cyhzZWxmLCBleHRyYSA9IDApOgotICAgICAgICByZXR1cm4gIiAgICAiICogKHNlbGYuaW5kZW50ICsgZXh0cmEpCi0gICAgCi0gICAgZGVmIHRvX2RpY3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuZm9ybSA9ICdkaWN0JwotCi0gICAgZGVmIGlzX2RpY3Qoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuZm9ybSA9PSAnZGljdCc6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiB0b190dXBsZShzZWxmKToKLSAgICAgICAgc2VsZi5mb3JtID0gJ3R1cGxlJwotCi0gICAgZGVmIGlzX3R1cGxlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmZvcm0gPT0gJ3R1cGxlJzoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIG1vcmVfaW5kZW50KHNlbGYsIGluY3IgPSAxKToKLSAgICAgICAgc2VsZi5pbmRlbnQgKz0gaW5jcgotICAgIAotICAgIGRlZiBsZXNzX2luZGVudChzZWxmLCBkZWNyID0gMSk6Ci0gICAgICAgIHNlbGYuaW5kZW50IC09IGRlY3IKLSAgICAKLSAgICBkZWYgbmVzdChzZWxmLCBpbmNyID0gMSwgZm9ybSA9IE5vbmUsIGlzX29wdGlvbmFsID0gTm9uZSk6Ci0gICAgICAgIG5ldyA9IGNvcHkuZGVlcGNvcHkoc2VsZikKLSAgICAgICAgbmV3LmluZGVudCArPSAxCi0gICAgICAgIGlmIGZvcm06Ci0gICAgICAgICAgICBuZXcuZm9ybSA9IGZvcm0KLSAgICAgICAgaWYgaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICBuZXcuaXNfb3B0aW9uYWwgPSBpc19vcHRpb25hbAotICAgICAgICByZXR1cm4gbmV3Ci0KLWNsYXNzIGRlc2NyaXB0aW9uOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5kZXNjID0gW10KLSAgICAgICAgCi0gICAgZGVmIHJhd19vdXQoc2VsZiwgbGluZSk6Ci0gICAgICAgIHNlbGYuZGVzYy5hcHBlbmQobGluZSkKLQotICAgIGRlZiBvdXQoc2VsZiwgbGluZSwgcHJpbnRlcik6Ci0gICAgICAgIHNlbGYuZGVzYy5hcHBlbmQocHJpbnRlci5pbmRlbnRzKCkgKyBsaW5lKQotCi0gICAgZGVmIG91dF93aXRoX2luZGVudChzZWxmLCBsaW5lLCBwcmludGVyKToKLSAgICAgICAgc2VsZi5kZXNjLmFwcGVuZChwcmludGVyLmluZGVudHMoMSkgKyBsaW5lKQotCi0gICAgZGVmIHJlc3VsdChzZWxmKToKLSAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmRlc2MpCi0KLWRlc2MgPSBkZXNjcmlwdGlvbigpCi0KLWRlZiBzaW5nbGVfcmVjdXJzZSh0cmVlKToKLSAgICAiIiIKLSAgICBsb29rIGZvciBuZXN0ZWQgdHJlZXMgd2hvc2UgbGVhZiBvbmx5IGhhcyBhIHNpbmdsZSBlbGVtZW50Ci0gICAgIiIiCi0gICAgcmV0dXJuIEZhbHNlCi0KLWRlZiBtYWtlcl9pbl9vcmRlcihpbl9vcmRlciwgcHJpbnRlcik6Ci0gICAgZGVidWcoICJJTl9PUkRFUiAiLCBpc190cmVlKGluX29yZGVyKSwgaW5fb3JkZXIgKQotICAgIGlmIGlzX2xpc3QoaW5fb3JkZXIpOgotICAgICAgICB3YXNfZGljdCA9IEZhbHNlCi0gICAgICAgIGRlc2Mub3V0KCcjICVkIGl0ZW1zIGluIG9yZGVyJyAlIGxlbihpbl9vcmRlcikgLCBwcmludGVyKQotICAgICAgICBkZXNjLm91dCgnIyAlcyAnICUgcHJpbnRlciAsIHByaW50ZXIpCi0gICAgICAgIGlmIHByaW50ZXIuaXNfZGljdCgpOgotICAgICAgICAgICAgcHJpbnRlci50b190dXBsZSgpCi0gICAgICAgICAgICBkZXNjLm91dCgiKCIsIHByaW50ZXIpCi0gICAgICAgICAgICBwcmludGVyLm1vcmVfaW5kZW50KCkKLSAgICAgICAgICAgIHdhc19kaWN0ID0gVHJ1ZQotICAgICAgICBkb19vcHRpb25hbCA9IEZhbHNlCi0gICAgICAgIGlmIHByaW50ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICBpZiBub3Qgd2FzX2RpY3Q6Ci0gICAgICAgICAgICAgICAgZGVzYy5vdXQoIigiLCBwcmludGVyKQotICAgICAgICAgICAgICAgIHByaW50ZXIubW9yZV9pbmRlbnQoKQotICAgICAgICAgICAgZG9fb3B0aW9uYWwgPSBUcnVlCi0gICAgICAgICAgICBzYXZlX25lZWRfb3B0aW9uYWwgPSBwcmludGVyLm5lZWRfb3B0aW9uYWwKLSAgICAgICAgICAgIHByaW50ZXIubmVlZF9vcHRpb25hbCA9IFRydWUKLSAgICAgICAgICAgIHByaW50ZXIuaXNfb3B0aW9uYWwgPSBGYWxzZQotICAgICAgICAgICAgICAgIAotICAgICAgICBmb3IgKG4sIHRyZWUpIGluIGVudW1lcmF0ZShpbl9vcmRlciwgMSk6Ci0gICAgICAgICAgICBkZWJ1ZyggIklOX09SREVSIElURU0gIiwgbiwgaXNfdG9rZW4odHJlZSksIHRyZWUpCi0gICAgICAgICAgICBkZXNjLm91dCgnIyBpdGVtICVkICVzJyAlIChuLCBwcmludGVyKSAsIHByaW50ZXIpCi0gICAgICAgICAgICBtYWtlcl9pdGVtcyh0cmVlLCBwcmludGVyKQotCi0gICAgICAgIGlmIHdhc19kaWN0IG9yIGRvX29wdGlvbmFsOgotICAgICAgICAgICAgcHJpbnRlci5sZXNzX2luZGVudCgpCi0gICAgICAgICAgICBkZXNjLm91dCgiKSwiLCBwcmludGVyKQotICAgICAgICAgICAgaWYgd2FzX2RpY3Q6Ci0gICAgICAgICAgICAgICAgcHJpbnRlci50b19kaWN0KCkKLSAgICAgICAgICAgIGlmIGRvX29wdGlvbmFsOgotICAgICAgICAgICAgICAgIHByaW50ZXIuaXNfb3B0aW9uYWwgPSBUcnVlCi0gICAgICAgICAgICAgICAgcHJpbnRlci5uZWVkX29wdGlvbmFsID0gc2F2ZV9uZWVkX29wdGlvbmFsCi0KLSAgICBlbGlmIGlzX3RyZWUoaW5fb3JkZXIpOgotICAgICAgICB3YXNfZGljdCA9IEZhbHNlCi0gICAgICAgIGlmIHByaW50ZXIuaXNfZGljdCgpOgotICAgICAgICAgICAgZGVzYy5vdXQoIigiLCBwcmludGVyKSAjICkoCi0gICAgICAgICAgICBkZXNjLm91dCgiI2luX29yZGVyMiIsIHByaW50ZXIpCi0gICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfc3RhY2soKQotICAgICAgICAgICAgcHJpbnRlci50b190dXBsZSgpCi0gICAgICAgICAgICBwcmludGVyLm1vcmVfaW5kZW50KCkKLSAgICAgICAgICAgIHdhc19kaWN0ID0gVHJ1ZQotICAgICAgICBkZWJ1ZyggIklOX09SREVSIFRSRUUgIiwgdG9rZW5fb2YoaW5fb3JkZXIpICkKLSAgICAgICAgbWFrZXJfZG9fb3AodG9rZW5fb2YoaW5fb3JkZXIpLCBwcmludGVyKQotICAgICAgICBpZiB3YXNfZGljdDoKLSAgICAgICAgICAgIHByaW50ZXIubGVzc19pbmRlbnQoKQotICAgICAgICAgICAgZGVzYy5vdXQoIiksIiwgcHJpbnRlcikKLSAgICAgICAgICAgIHByaW50ZXIudG9fZGljdCgpCi0gICAgZWxpZiBpc190b2tlbihpbl9vcmRlcik6Ci0gICAgICAgIG1ha2VyX2l0ZW1zKGluX29yZGVyLCBwcmludGVyLm5lc3QoaW5jciA9IDEpKQotICAgIGVsaWYgaXNfZmllbGQoaW5fb3JkZXIpOgotICAgICAgICBtYWtlcl9maWVsZChmaWVsZF9saXN0X29mKGluX29yZGVyKSwgcHJpbnRlci5uZXN0KGluY3IgPSAxKSkKLSAgICBlbHNlOgotICAgICAgICBlcnJvciggIklOX09SREVSIFNUVUNLIiApCi0gICAgCi1kZWYgbWFrZXJfZmllbGQoZmllbGRfbGlzdCwgcHJpbnRlcik6Ci0gICAgd2FzX3R1cGxlID0gRmFsc2UKLSAgICBpZiBwcmludGVyLmlzX3R1cGxlOgotICAgICAgICB3YXNfdHVwbGUgPSBUcnVlCi0gICAgICAgIGRlc2Mub3V0KCJ7IiwgcHJpbnRlcikKLSAgICAgICAgcHJpbnRlci5tb3JlX2luZGVudCgpCi0gICAgICAgIHByaW50ZXIudG9fdHVwbGUoKQotCi0gICAgaWYgcHJpbnRlci5uZWVkX29wdGlvbmFsOgotICAgICAgICBkZXNjLm91dCgiJ29wdGlvbmFsJyA6ICVzLCIgJSBwcmludGVyLmlzX29wdGlvbmFsLCBwcmludGVyKQotCi0gICAgZm9yIGZpZWxkIGluIGZpZWxkX2xpc3Q6Ci0gICAgICAgICMgQWRkIG1vcmUgaXRlbXMgaGVyZSB0byBwcm92aWRlIG1vcmUgZmllbGQgZGVjb3JhdGlvbgotICAgICAgICBwcmludGVyLm1vcmVfaW5kZW50Ci0gICAgICAgIHZhbHVlID0gdG9rZW5fb2YoZmllbGQpCi0gICAgICAgIGlmIHZhbHVlLmZpbmQoJz0nKSA9PSAtMToKLSAgICAgICAgICAgIGRlc2Mub3V0KCInZmllbGQnIDogJyVzJywiICUgdmFsdWUsIHByaW50ZXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkZXNjLm91dCgiJyVzJyA6ICclcycsIiAlIHR1cGxlKHZhbHVlLnNwbGl0KCc9JykpLCBwcmludGVyKQotICAgICAgICBwcmludGVyLmxlc3NfaW5kZW50Ci0gICAgICAgIAotICAgIGlmIHdhc190dXBsZToKLSAgICAgICAgcHJpbnRlci5sZXNzX2luZGVudCgpCi0gICAgICAgIGRlc2Mub3V0KCAifSwiLCBwcmludGVyICkKLSAgICAgICAgcHJpbnRlci50b19kaWN0KCkKLQotZGVmIG1ha2VyX2Nob2ljZSh0cmVlX3R1cGxlLCBwcmludGVyKToKLSAgICBkZWJ1ZyggJ01BS0VSX0NIT0lDRScsIHRyZWVfdHVwbGUsIHByaW50ZXIuaW5kZW50ICkKLQotICAgIGlmIGlzX3RyZWUodHJlZV90dXBsZSk6Ci0gICAgICAgICMgWFhYIHNvbWUgdHJlZSdzIGNhbiBiZSBzcXVhc2hlZC4KLSAgICAgICAgZGVidWcoICJNQUtFUl9DSE9JQ0UgSVRFTSAiLCB0cmVlX3R1cGxlICkKLSAgICAgICAgbWFrZXJfZG9fb3AodG9rZW5fb2YodHJlZV90dXBsZSksIHByaW50ZXIpCi0gICAgICAgIHJldHVybgotCi0gICAgIyBjaG9pY2UgbmVlZHMgdG8gcHJpbnQgYSBkaWN0aW9uYXJ5LgotICAgIHdhc190dXBsZSA9IEZhbHNlCi0gICAgaWYgcHJpbnRlci5pc190dXBsZSgpOgotICAgICAgICBwcmludGVyLnRvX2RpY3QoKQotICAgICAgICB3YXNfdHVwbGUgPSBUcnVlCi0KLSAgICBkZXNjLm91dCgneycsIHByaW50ZXIpCi0gICAgcHJpbnRlci5tb3JlX2luZGVudCgpCi0KLSAgICBpZiBwcmludGVyLmlzX29wdGlvbmFsOgotICAgICAgICBkZXNjLm91dCgiJ29wdGlvbmFsJzogJXMsIiAlIHByaW50ZXIuaXNfb3B0aW9uYWwsICBwcmludGVyKQotICAgIGRlc2Mub3V0KCInY2hvaWNlcycgOiAoIiwgcHJpbnRlcikKLSAgICBkZXNjLm91dCgiICAgICMgbWFrZXJfY2hvaWNlIiwgcHJpbnRlcikKLQotICAgIGlmIGlzX2xpc3QodHJlZV90dXBsZSk6Ci0gICAgICAgIGRlYnVnKCAiQ0hPSUNFIExJU1QiLCBsZW4odHJlZV90dXBsZSksIHRyZWVfdHVwbGUgKQotICAgICAgICBwcmludGVyLm1vcmVfaW5kZW50KCkKLSAgICAgICAgZm9yIChuLCBpdGVtKSBpbiBlbnVtZXJhdGUodHJlZV90dXBsZSwgMSk6Ci0gICAgICAgICAgICBkZWJ1ZyggIkNIT0lDRSBMSXN0ICMlZCIgJSBuICkKLSAgICAgICAgICAgIGRlYnVnKCAiICAgICAgIElURU0gIiwgaXRlbSApCi0gICAgICAgICAgICBtYWtlcl9pdGVtcyhpdGVtLCBwcmludGVyKQotICAgICAgICBwcmludGVyLmxlc3NfaW5kZW50KCkKLSAgICBlbGlmIGlzX3RyZWUodHJlZV90dXBsZSk6Ci0gICAgICAgIGRlYnVnKCAiQ0hPSUNFIFRSRUUiICkKLSAgICAgICAgKHRyZWVfd2hpY2gsIHRyZWUpID0gdHJlZV90dXBsZVsxXQotICAgICAgICAjIHRyZWVfd2hpY2ggPT0gJ3RyZWUnCi0gICAgICAgIG1ha2VyX2RvX29wKHRva2VuX29mKHRyZWVfdHVwbGUpLCBwcmludGVyLm5lc3QoZm9ybSA9ICd0dXBsZScsIGluY3IgPSAxKSkKLSAgICBlbGlmIGlzX2ZpZWxkKHRyZWVfdHVwbGUpOgotICAgICAgICBkZWJ1ZyggIkNIT0lDRSBGSUVMRCIsIHRyZWVfdHVwbGVbMV0gKQotICAgICAgICBwcmludGVyLm1vcmVfaW5kZW50KCkKLSAgICAgICAgbWFrZXJfZmllbGQoZmllbGRfbGlzdF9vZih0cmVlX3R1cGxlKSwgcHJpbnRlcikKLSAgICAgICAgcHJpbnRlci5sZXNzX2luZGVudCgpCi0gICAgZWxzZToKLSAgICAgICAgZXJyb3IoICdNQUtFUl9DSE9JQ0UgQ09ORlVTRUQnICkKLQotICAgIGRlc2Mub3V0KCIpIiwgcHJpbnRlcikKLSAgICBwcmludGVyLmxlc3NfaW5kZW50KCkKLSAgICBkZXNjLm91dCgnfSwnLCBwcmludGVyKQotCi0gICAgaWYgd2FzX3R1cGxlOgotICAgICAgICBwcmludGVyLnRvX3R1cGxlKCkKLQotCi1kZWYgbWFrZXJfZG9fb3Aob3BfdHVwbGUsIHByaW50ZXIpOgotICAgIGRlYnVnKCAnT1A9PiAnLCBvcF90dXBsZSApCi0gICAgKG9wLCBvcGVyYW5kcykgPSBvcF90dXBsZQotICAgIGRlYnVnKCAnT1AgJywgb3BfdHVwbGUsIG9wLCBvcGVyYW5kcyApCi0gICAgaWYgb3AgPT0gJ09SREVSJzoKLSAgICAgICAgZGVidWcoICJPUCBJTl9PUkRFUiAiLCBvcGVyYW5kcyApCi0gICAgICAgIG1ha2VyX2luX29yZGVyKG9wZXJhbmRzLCBwcmludGVyKQotICAgIGVsaWYgb3AgPT0gJ0VJVEhFUic6Ci0gICAgICAgICMgWFhYIHdyb25nCi0gICAgICAgIG1ha2VyX2Nob2ljZShvcGVyYW5kcywgcHJpbnRlcikKLSAgICBlbGlmIG9wLnN0YXJ0c3dpdGgoJ0NIT0lDRScpOgotICAgICAgICBtYWtlcl9jaG9pY2Uob3BlcmFuZHMsIHByaW50ZXIpCi0gICAgZWxpZiBvcC5zdGFydHN3aXRoKCdPUFRJT04nKToKLSAgICAgICAgd2FzX29wdGlvbmFsID0gcHJpbnRlci5pc19vcHRpb25hbAotICAgICAgICBwcmludGVyLmlzX29wdGlvbmFsID0gVHJ1ZQotICAgICAgICBkZWJ1ZyggJ09QIE9QVElPTkFMJywgb3BlcmFuZHMgKQotICAgICAgICBtYWtlcl9pdGVtcyhvcGVyYW5kcywgcHJpbnRlcikKLSAgICAgICAgcHJpbnRlci5pc19vcHRpb25hbCA9IHdhc19vcHRpb25hbAotCi0KLWRlZiBtYWtlcl90cmVlcyh0cmVlcywgcHJpbnRlcik6Ci0gICAgKHRyZWVfd2hpY2gsIG9wKSA9IHRyZWVzCi0gICAgbWFrZXJfZG9fb3Aob3AsIHByaW50ZXIpCi0KLQotZGVmIG1ha2VyX2l0ZW1zKGl0ZW1zLCBwcmludGVyKToKLSAgICBkZWJ1ZyggIklURU1TLT4gIiwgdHlwZShpdGVtcyksIGl0ZW1zICkKLSAgICBpZiB0eXBlKGl0ZW1zKSA9PSBsaXN0OgotICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKLSAgICAgICAgICAgIGlmIGlzX3RyZWUoaXRlbSk6Ci0gICAgICAgICAgICAgICAgZGVidWcoICJUUkVFICIsIGl0ZW0gKQotICAgICAgICAgICAgICAgIG1ha2VyX2RvX29wKGl0ZW0sIHByaW50ZXIpCi0gICAgICAgICAgICBlbGlmIGlzX2ZpZWxkKGl0ZW0pOgotICAgICAgICAgICAgICAgIGRlc2Mub3V0KCJ7IiwgcHJpbnRlcikKLSAgICAgICAgICAgICAgICBtYWtlcl9maWVsZChmaWVsZF9saXN0X29mKGl0ZW0pLCBwcmludGVyKQotICAgICAgICAgICAgICAgIGlmIHByaW50ZXIubmVlZF9vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgZGVzYy5vdXQoIidvcHRpb25hbCcgOiAlcywiICUgcHJpbnRlci5pc19vcHRpb25hbCwgcHJpbnRlcikKLSAgICAgICAgICAgICAgICBkZXNjLm91dCggIn0sIiwgcHJpbnRlcikKLSAgICAgICAgICAgIGVsaWYgaXNfdG9rZW4oaXRlbSk6Ci0gICAgICAgICAgICAgICAgZGVzYy5vdXQoInsiLCBwcmludGVyKQotICAgICAgICAgICAgICAgIHByaW50ZXIubW9yZV9pbmRlbnQoKQotICAgICAgICAgICAgICAgIGRlc2Mub3V0KCIndG9rZW4nIDogJyVzJywiICUgdG9rZW5fb2YoaXRlbSksIHByaW50ZXIpCi0gICAgICAgICAgICAgICAgaWYgcHJpbnRlci5uZWVkX29wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICBkZXNjLm91dCgiJ29wdGlvbmFsJyA6ICVzLCIgJSBwcmludGVyLmlzX29wdGlvbmFsLCBwcmludGVyKQotICAgICAgICAgICAgICAgIHByaW50ZXIubGVzc19pbmRlbnQoKQotICAgICAgICAgICAgICAgIGRlc2Mub3V0KCJ9LCIsIHByaW50ZXIpCi0gICAgZWxpZiBpc190cmVlKGl0ZW1zKToKLSAgICAgICAgbWFrZXJfZG9fb3AodG9rZW5fb2YoaXRlbXMpLCBwcmludGVyKQotICAgIGVsaWYgaXNfZmllbGQoaXRlbXMpOgotICAgICAgICBtYWtlcl9maWVsZChmaWVsZF9saXN0X29mKGl0ZW1zKSwgcHJpbnRlcikKLSAgICBlbGlmIGlzX3Rva2VuKGl0ZW1zKToKLSAgICAgICAgZGVidWcoICdJVEVNUyBUT0tFTicsIGl0ZW1zICkKLSAgICAgICAgZGVzYy5vdXQoICJ7IiwgcHJpbnRlcikKLSAgICAgICAgcHJpbnRlci5tb3JlX2luZGVudCgpCi0gICAgICAgIGRlc2Mub3V0KCAiJ3Rva2VuJyA6ICclcycsIiAlIHRva2VuX29mKGl0ZW1zKSwgcHJpbnRlcikKLSAgICAgICAgaWYgcHJpbnRlci5uZWVkX29wdGlvbmFsOgotICAgICAgICAgICAgZGVzYy5vdXQoICInb3B0aW9uYWwnIDogJXMsIiAlIHByaW50ZXIuaXNfb3B0aW9uYWwsIHByaW50ZXIpCi0gICAgICAgIHByaW50ZXIubGVzc19pbmRlbnQoKQotICAgICAgICBkZXNjLm91dCggIn0sIiwgcHJpbnRlcikKLSAgICBlbHNlOgotICAgICAgICBlcnJvciggIklURU1TPiBTVFVDSyIsIGl0ZW1zICkKLSAgICAKLQotIwotZGVmIG1ha2VyX2FyZ3MoYXJncywgcHJpbnRlcik6Ci0gICAgZGVidWcoICJNQUtFUl9BUkdTICIsIGFyZ3MgKQotICAgIChwaWNrLCBpdGVtKSA9IGFyZ3MKLSAgICBpZiBwaWNrID09ICdFSVRIRVInOgotICAgICAgICBkZWJ1ZyggIk1BS0VSX0FSR1MgRUlUSEVSICIsIGl0ZW0gKQotICAgICAgICBpZiBsZW4oaXRlbSkgPj0gMToKLSAgICAgICAgICAgIGRlc2MucmF3X291dCggJyAgICBhcmdzIDogeycpCi0gICAgICAgICAgICBpZiBhbGxfdG9rZW5zKGl0ZW0pOgotICAgICAgICAgICAgICAgIGZvciBjaG9pY2UgaW4gaXRlbToKLSAgICAgICAgICAgICAgICAgICAgZGVzYy5yYXdfb3V0KCIgICAgICAgICAgICAnJXMnLCIgJSB0b2tlbl9vZihjaG9pY2UsIDMpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtYWtlcl90cmVlcyhpdGVtLCBwcmludGVyKQotICAgICAgICAgICAgZGVzYy5yYXdfb3V0KCAnICAgIH0sJyApCi0gICAgICAgIGVsc2U6ICAjIGV4YWN0bHkgb25lIGNob2ljZQotICAgICAgICAgICAgZGVzYy5yYXdfb3V0KCAnICAgIGFyZ3MgOiB7ICcgKQotICAgICAgICAgICAgaWYgYWxsX3Rva2VuKGl0ZW0pOgotICAgICAgICAgICAgICAgIGRlc2MucmF3X291dCgiICAgICAgICAgICAgJyVzJywiICUgdG9rZW5fb2YoaXRlbVswXSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50IG1ha2VyX3RyZWVzKGl0ZW0sIHByaW50ZXIpCi0gICAgICAgICAgICBkZXNjLnJhd19vdXQoICcgICAgfSwnICkKLSAgICBlbGlmIHBpY2suc3RhcnRzd2l0aCgnQ0hPSUNFJyk6Ci0gICAgICAgIGRlYnVnKCAiQ0hPSUNFIiwgbGVuKGl0ZW0pICkKLSAgICAgICAgaWYgbGVuKGl0ZW0pID09IDE6Ci0gICAgICAgICAgICBtYWtlcl9hcmdzKGl0ZW0pCi0gICAgICAgIGVsaWYgaXNfdHJlZShpdGVtKSBhbmQgdG9rZW5fb2YoaXRlbSlbMF0gPT0gJ0VJVEhFUic6Ci0gICAgICAgICAgICBtYWtlcl9jaG9pY2UodG9rZW5fb2YoaXRlbSksIHByaW50ZXIpCi0gICAgICAgIGVsaWYgaXNfZmllbGQoaXRlbSkgb3IgaXNfdG9rZW4oaXRlbSk6Ci0gICAgICAgICAgICBtYWtlcl9jaG9pY2UoaXRlbSwgcHJpbnRlcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGVycm9yKCAiQ0hPSUNFIEhFTFAgIiwgaXRlbSApCi0gICAgZWxpZiBwaWNrLnN0YXJ0c3dpdGgoJ09SREVSJyk6Ci0gICAgICAgICMgb3VnaHQgdG8gY2hvb3NlIHRoZSBmb3JtIG9mIHRoZSBwcmludGVyIGJhc2VkIG9uIGl0ZW0KLSAgICAgICAgZGVzYy5vdXQoIidhcmdzJyA6IHsiLCBwcmludGVyKQotICAgICAgICBwcmludGVyLmxlc3NfaW5kZW50KCkKLSAgICAgICAgbWFrZXJfaW5fb3JkZXIoaXRlbSwgcHJpbnRlcikKLSAgICAgICAgcHJpbnRlci5sZXNzX2luZGVudCgpCi0gICAgICAgIGRlc2Mub3V0KCd9JywgcHJpbnRlcikKLSAgICBlbGlmIHBpY2suc3RhcnRzd2l0aCgnT1BUSU9OJyk6Ci0gICAgICAgIHByaW50ZXIuaXNfb3B0aW9uYWwgPSBUcnVlCi0gICAgICAgIGRlc2MucmF3X291dCggJyAgICAgYXJncyA6IHsnKQotICAgICAgICBtYWtlcl90cmVlcyhpdGVtLCBwcmludGVyKQotICAgICAgICBkZXNjLnJhd19vdXQoICcgICAgfSwnKQotICAgIGVsc2U6Ci0gICAgICAgIGVycm9yKCAiTUFLRVJfUElDS0VSIEhFTFAgIiwgcGljayApCi0KLXNhdmVkX2lucHV0ID0gW10KLQotIwotZGVmIG1ha2VyKG5hbWVfdHVwbGUsIG5vX3N1cHBvcnRlZCwgcmVzdWx0LCBwcmludGVyKToKLQotICAgIG5hbWUgPSB0b2tlbl9vZihuYW1lX3R1cGxlKQotICAgIHZlcmJvc2UoICdOYW1lOiAlcyBubyAlcyBSZXN1bHQgJXMnICUgKG5hbWUsIG5vX3N1cHBvcnRlZCwgcmVzdWx0KSApCi0KLSAgICB0eXBlID0gJ2FkZC1jb21tYW5kLXR5cGUnCi0gICAgbW9kZSA9ICdsb2dpbicKLSAgICBuZXdfbW9kZSA9ICdjb25maWctQ0hBTkdFJwotICAgIG9ial90eXBlID0gTm9uZQotICAgICMKLSAgICAjIGNvbW1hbmQtbmFtZUBjb21tYW5kLXR5cGVAY29tbWFuZC1tb2RlQG9iai10eXBlQG5ld19tb2RlCi0gICAgIwotICAgIGlmIG5hbWUuZmluZCgnQCcpID49IDA6Ci0gICAgICAgIG5hbWVfcGFydHMgPSBuYW1lLnNwbGl0KCdAJykKLSAgICAgICAgbmFtZSA9IG5hbWVfcGFydHNbMF0KLSAgICAgICAgdHlwZSA9IG5hbWVfcGFydHNbMV0KLSAgICAgICAgaWYgbGVuKG5hbWVfcGFydHMpID4gMjoKLSAgICAgICAgICAgIG1vZGUgPSBuYW1lX3BhcnRzWzJdCi0gICAgICAgIGlmIGxlbihuYW1lX3BhcnRzKSA+IDM6Ci0gICAgICAgICAgICBvYmpfdHlwZSA9IG5hbWVfcGFydHNbM10KLSAgICAgICAgaWYgbGVuKG5hbWVfcGFydHMpID4gNDoKLSAgICAgICAgICAgIG5ld19tb2RlID0gbmFtZV9wYXJ0c1s0XQotICAgICAgICAjIG5hbWUtdmFsdWUgcGFpcnM/Ci0KLSAgICBkZWJ1ZyggIk5BTUUgIiwgKG5hbWUpICkKLSAgICBkZWJ1ZyggJ2NvbW1hbmQgbmFtZSAnLCAgbmFtZSApCi0gICAgZGVzYy5yYXdfb3V0KCAnJXNfJXNfQ09NTUFORF9ERVNDUklQVElPTiA9IHsnICUgCi0gICAgICAgICAgICAgICAgICAoYXJncy5uLnVwcGVyKCksIG5hbWUucmVwbGFjZSgiLSIsIl8iKS51cHBlcigpKSkKLSAgICBkZXNjLnJhd19vdXQoICIgICAgJ25hbWUnICAgICAgICAgIDogJyVzJywiICUgbmFtZSkKLSAgICBkZXNjLnJhd19vdXQoICIgICAgJ21vZGUnICAgICAgICAgIDogJyVzJywiICUgbW9kZSkKLSAgICBpZiBub19zdXBwb3J0ZWQgPT0gRmFsc2U6Ci0gICAgICAgIGRlc2MucmF3X291dCggIiAgICAnbm8tc3VwcG9ydGVkJyAgOiBGYWxzZSwiKQotICAgIGRlc2MucmF3X291dCggIiAgICAnY29tbWFuZC10eXBlJyAgOiAnJXMnLCIgJSB0eXBlKQotICAgIGlmIG9ial90eXBlOgotICAgICAgICBkZXNjLnJhd19vdXQoICIgICAgJ29iai10eXBlJyAgICAgIDogJyVzJywiICUgb2JqX3R5cGUpCi0gICAgaWYgdHlwZSA9PSAnY29uZmlnLXN1Ym1vZGUnOgotICAgICAgICBkZXNjLnJhd19vdXQoICIgICAgJ3N1Ym1vZGUtbmFtZScgIDogJyVzJywiICUgbmV3X21vZGUpCi0gICAgICAgIGRlc2MucmF3X291dCggIiAgICAncGFyZW50LWlkJyAgICAgOiBOb25lLCIpCi0gICAgZGVzYy5yYXdfb3V0KCAiICAgICdzaG9ydC1oZWxwJyAgICA6ICdhZGQtc2hvcnQtY29tbWFuZC1oZWxwJywiKQotICAgIGlmIGFyZ3MuZjoKLSAgICAgICAgZGVzYy5yYXdfb3V0KCAiICAgICdmZWF0dXJlJyAgICAgICA6ICclcycsIiAlIGFyZ3MuZikKLSAgICAjIGlmIHRoZSByZW1haW5pbmcgbGVuZ3RoIGlzIHR3bywgT1JERVIgc2hvdWxkIGJlIHBvcHBlZC4KLSAgICBkZXNjLnJhd19vdXQoICIgICAgJ2FyZ3MnIDogKCAiKQotICAgIG1ha2VyX2l0ZW1zKHJlc3VsdCwgcHJpbnRlcikKLSAgICBkZXNjLnJhd19vdXQoICIgICAgKSwiKQotICAgIGRlc2MucmF3X291dCggIn0iKQotICAgIHJldHVybgotCi0gICAgaWYgbGVuKG9yZGVyX2xpc3QpID09IDIgYW5kIGxlbihvcmRlcikgPT0gMToKLSAgICAgICAgYnVpbGRfY2hvaWNlID0gTm9uZQotICAgICAgICBpZiBpc190cmVlKG9yZGVyX2xpc3RbMV0pOgotICAgICAgICAgICAgZGVidWcoICJNQUtFUiBUUkVFLiIsIHRva2VuX29mKG9yZGVyX2xpc3RbMV0pICkKLSAgICAgICAgICAgIGlmIHRva2VuX29mKG9yZGVyX2xpc3RbMV0pWzBdLnN0YXJ0c3dpdGgoJ0NIT0lDRScpOgotICAgICAgICAgICAgICAgIGNob2ljZSA9IHRva2VuX29mKG9yZGVyX2xpc3RbMV0pCi0gICAgICAgICAgICAgICAgYnVpbGRfY2hvaWNlID0gb3JkZXJfbGlzdFsxXQotICAgICAgICBpZiBidWlsZF9jaG9pY2U6Ci0gICAgICAgICAgICBkZXNjLm91dCgiJ2FyZ3MnIDogeyIsIHByaW50ZXIpCi0gICAgICAgICAgICBwcmludGVyLm1vcmVfaW5kZW50KCkKLSAgICAgICAgICAgIG1ha2VyX2Nob2ljZShidWlsZF9jaG9pY2UsIHByaW50ZXIpCi0gICAgICAgICAgICBwcmludGVyLmxlc3NfaW5kZW50KCkKLSAgICAgICAgICAgIGRlc2Mub3V0KCAnfSwnLCBwcmludGVyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQgIlhYWCIsIG9yZGVyX2xpc3QKLSAgICAgICAgICAgIHByaW50ICJYWFgiLCBvcmRlcl9saXN0WzFdCi0gICAgICAgICAgICBkZXNjLm91dCgiJ2FyZ3MnIDogKCIsIHByaW50ZXIpCi0gICAgICAgICAgICBwcmludGVyLm1vcmVfaW5kZW50KCkKLSAgICAgICAgICAgIHByaW50ZXIudG9fdHVwbGUoKQotICAgICAgICAgICAgbWFrZXJfaW5fb3JkZXIob3JkZXJfbGlzdFsxXSwgcHJpbnRlcikKLSAgICAgICAgICAgIHByaW50ZXIubGVzc19pbmRlbnQoKQotICAgICAgICAgICAgZGVzYy5vdXQoICcpLCcsIHByaW50ZXIpCi0gICAgZWxpZiBsZW4ob3JkZXIpID4gMToKLSAgICAgICAgbWFrZXJfYXJncygob3JkZXJbMF0sIG9yZGVyWzE6XSksIHByaW50ZXIpCi0gICAgZWxzZToKLSAgICAgICAgZGVzYy5yYXdfb3V0KCd9JykKLQotCi1wYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdkZXNjX21ha2VyJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJ2ZpbGUnKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLXAnKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLWQnKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCBkZWZhdWx0ID0gIk5FVyIpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctZicpCi1hcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi1mb3IgbGluZSBpbiBmaWxlaW5wdXQuaW5wdXQoYXJncy5maWxlKToKLQotICAgIGxpbmVfdG9rZW5zID0gdG9rZW5zKGxpbmUpCi0gICAgaWYgbGVuKGxpbmVfdG9rZW5zKSA8IDI6ICMgd2h5IDI/IGV2ZW4gYmxhbmsgbGluZXMgZ2V0IGVvbAotICAgICAgICBzYXZlZF9pbnB1dC5hcHBlbmQoICIjIEAgJXMiICUgIGxpbmUpCi0gICAgICAgIGNvbnRpbnVlCi0gICAgIwotICAgICMgcmVtb3ZlICdbJyAnbm8nICddJyBpZiBpdHMgdGhlcmUsIGRvbid0IGZvcmdldCB0aGUgbGVhZGluZyAnXicKLSAgICBub19zdXBwb3J0ZWQgPSBGYWxzZQotCi0gICAgaWYgbGVuKGxpbmVfdG9rZW5zKSA+IDE6Ci0gICAgICAgIGlmIHRva2VuX29mKGxpbmVfdG9rZW5zWzBdKSA9PSAnIyc6Ci0gICAgICAgICAgICBzYXZlZF9pbnB1dC5hcHBlbmQoICIjIEAgJXMiICUgIGxpbmUpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbGlmIHRva2VuX29mKGxpbmVfdG9rZW5zWzBdKSA9PSAnWyc6Ci0gICAgICAgICAgICBpZiBsZW4obGluZV90b2tlbnMpID4gMjoKLSAgICAgICAgICAgICAgICBpZiB0b2tlbl9vZihsaW5lX3Rva2Vuc1sxXSkgPT0gJ25vJzoKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVfdG9rZW5zKSA+IDM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbl9vZihsaW5lX3Rva2Vuc1syXSkgPT0gJ10nOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lX3Rva2VucykgPiA0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub19zdXBwb3J0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBsaW5lX3Rva2Vuc1szXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZV90b2tlbnMgPSBsaW5lX3Rva2Vuc1s0Ol0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5pbmc6IG5hbWUgcmVxdWlyZWQgYWZ0ZXIgXFsgbm8gXCddJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAnV2FybmluZzogb25seSBcJ1xbIG5vIFxdXCcgYWxsb3dlZCBhcyBwcmVmaXgnCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdXYXJuaW5nOiBvbmx5IFwnXFsgbm8gXF1cJyBhbGxvd2VkIGFzIHByZWZpeCcKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5pbmc6IG9ubHkgc2luZ2xlIFxbIGluIGxpbmUnCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5hbWUgPSBsaW5lX3Rva2Vuc1swXQotICAgICAgICAgICAgcGFyc2VfdG9rZW5zID0gbGluZV90b2tlbnNbMTpdCi0KLSAgICBzYXZlZF9pbnB1dC5hcHBlbmQoICIjIEAgJXMiICUgIGxpbmUpCi0gICAgc2luZ2xlX2xpbmUoW2Zyb250X3Rva2VuXSArIHBhcnNlX3Rva2VucykKLQotICAgICMgc2hvdWxkIGxvb2sgbGlrZSBeIHRyZWUgJAotICAgIGlmIGxlbihzdGFjaykgPT0gMyBhbmQgbm90IGlzX29wKHN0YWNrWzFdKToKLSAgICAgICAgZGVidWcoICJPSy0tLS0tLS0tLS0tLS0tLS0tLSAgLT4gIiwgdG9rZW5fb2Yoc3RhY2tbMV0pICkKLSAgICAgICAgYV9wcmludGVyID0gcHJpbnRlcigndHVwbGUnLCBpc19vcHRpb25hbCA9IEZhbHNlKQotICAgICAgICBkZXNjLm91dCgnXG4jXG4jICVzI1xuJyAlIGxpbmUsIGFfcHJpbnRlcikKLSAgICAgICAgbWFrZXIobmFtZSwgbm9fc3VwcG9ydGVkLCBzdGFja1sxXSwgYV9wcmludGVyKQotICAgIGVsc2U6Ci0gICAgICAgICMKLSAgICAgICAgIyBDb3VsZCBwZWVrIGF0IHRoZSBzdGFjayB0byBnZXQgYW4gaWRlYSBvZiB0aGUgbmF0dXJlIG9mIHRoZSBzeW50YXggZXJyb3IKLSAgICAgICAgcHJpbnQgIlNZTlRBWCBFUlJPUiIsIG5hbWUsIHN0YWNrCi0KLSMKLSMKLQotcHJpbnQgIiMiCi1wcmludCAiIyBDb21tYW5kIHVzZWQgYXMgaW5wdXQgZm9yIHRoaXMgcnVuIGFyZSBsaXN0ZWQgYmVsb3csIgotcHJpbnQgIiMgRmlzaCB0aGUgY29tbWFuZCBvdXQgYnkgZWdyZXBpbmcgJ14jIEAnICIKLXByaW50ICIjIgotCi1wcmludCAnJy5qb2luKHNhdmVkX2lucHV0KQotcHJpbnQgZGVzYy5yZXN1bHQoKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS90b29scy9leHRyYWN0X21vZGVsLnB5IGIvY2xpL2NsaS90b29scy9leHRyYWN0X21vZGVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ODM4MzUyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvdG9vbHMvZXh0cmFjdF9tb2RlbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotI2ltcG9ydCB0aW1lCi0KLWltcG9ydCBkYXRldGltZQotaW1wb3J0IGRqYW5nby5jb3JlLm1hbmFnZW1lbnQKLQotdHJ5OgotICAgIGltcG9ydCBzZXR0aW5ncyAjIEFzc3VtZWQgdG8gYmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGltcG9ydCBzeXMKLSAgICBzeXMuc3RkZXJyLndyaXRlKCJFcnJvcjogQ2FuJ3QgZmluZCB0aGUgZmlsZSAnc2V0dGluZ3MucHknIGluIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyAlci4gSXQgYXBwZWFycyB5b3UndmUgY3VzdG9taXplZCB0aGluZ3MuXG5Zb3UnbGwgaGF2ZSB0byBydW4gZGphbmdvLWFkbWluLnB5LCBwYXNzaW5nIGl0IHlvdXIgc2V0dGluZ3MgbW9kdWxlLlxuKElmIHRoZSBmaWxlIHNldHRpbmdzLnB5IGRvZXMgaW5kZWVkIGV4aXN0LCBpdCdzIGNhdXNpbmcgYW4gSW1wb3J0RXJyb3Igc29tZWhvdy4pXG4iICUgX19maWxlX18pCi0gICAgc3lzLmV4aXQoMSkKLQotZGphbmdvLmNvcmUubWFuYWdlbWVudC5zZXR1cF9lbnZpcm9uKHNldHRpbmdzKQotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi1mcm9tIGRqYW5nby5kYi5tb2RlbHMuZmllbGRzIGltcG9ydCBBdXRvRmllbGQsIEJvb2xlYW5GaWVsZCwgSW50ZWdlckZpZWxkCi1mcm9tIGRqYW5nby5kYi5tb2RlbHMuZmllbGRzLnJlbGF0ZWQgaW1wb3J0IEZvcmVpZ25LZXkKLQotaW1wb3J0IHNkbmNvbi5yZXN0LnZpZXdzCi0KLXByaW50ICIjIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gY29udHJvbGxlciBzb3VyY2UiCi1wcmludCAiIyB2aWEgdG9vbHMvZXh0cmFjdF9tb2RlbC5weSBkYXRlOiAgJXMiICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuY3RpbWUoKQotCi0jIHdlIGl0ZXJhdGUgb3ZlciByZXN0X25hbWVfZGljdCwgbGltaXRpbmcgQ0xJIGFjY2VzcyB0byB0aG9zZSBtb2RlbHMKLSMgYW5kIG1vZGVsIGZpZWxkcyBhY2Nlc3NpYmxlIHZpYSByZXN0Ci0KLXJlc3RfbWFwID0ge30KLWZvciAobW9kZWwsIG1vZGVsX2luZm8pIGluIHNkbmNvbi5yZXN0LnZpZXdzLnJlc3RfbW9kZWxfaW5mb19kaWN0Lml0ZW1zKCk6Ci0gICAgcmVzdF9tYXBbbW9kZWxdID0ge30KLSAgICBmb3IgKHJlc3RfZmllbGRfbmFtZSwgcmVzdF9maWVsZF9pbmZvKSBpbiBtb2RlbF9pbmZvLnJlc3RfbmFtZV9kaWN0Lml0ZW1zKCk6Ci0gICAgICAgIGRqYW5nb19maWVsZF9uYW1lID0gcmVzdF9maWVsZF9pbmZvLm5hbWUKLSAgICAgICAgcmVzdF9tYXBbbW9kZWxdW2RqYW5nb19maWVsZF9uYW1lXSA9IHJlc3RfZmllbGRfbmFtZQotCi1tb2RlbF9pbmZvX2RpY3QgPSB7fQotZm9yIChtb2RlbCwgbW9kZWxfaW5mbykgaW4gc2RuY29uLnJlc3Qudmlld3MucmVzdF9tb2RlbF9pbmZvX2RpY3QuaXRlbXMoKToKLSAgICBkamFuZ29fbW9kZWxfY2xhc3MgPSBtb2RlbF9pbmZvLm1vZGVsX2NsYXNzIAotICAgIGZpZWxkX2luZm9fZGljdCA9IHt9Ci0gICAgZm9yIChyZXN0X2ZpZWxkX25hbWUsIHJlc3RfZmllbGRfaW5mbykgaW4gbW9kZWxfaW5mby5yZXN0X25hbWVfZGljdC5pdGVtcygpOgotICAgICAgICBkamFuZ29fZmllbGRfbmFtZSA9IHJlc3RfZmllbGRfaW5mby5uYW1lCi0gICAgICAgIGRqYW5nb19maWVsZF9pbmZvID0gcmVzdF9maWVsZF9pbmZvLmRqYW5nb19maWVsZF9pbmZvCi0gICAgICAgICMgbm93IHRoYXQgd2UgaGF2ZSB0aGUgZGphbmdvIGluZm8gYW5kIG91ciBvd24gcmVzdCBpbmZvLCBjcmVhdGUgYSBmaWVsZCBpbmZvIHRvIGR1bXAKLSAgICAgICAganNvbl9zZXJpYWxpemVfc3RyaW5nID0gdHlwZShkamFuZ29fZmllbGRfaW5mbykgbm90IGluIChBdXRvRmllbGQsIEJvb2xlYW5GaWVsZCwgSW50ZWdlckZpZWxkKQotICAgICAgICBmaWVsZF9pbmZvID0ge30KLSAgICAgICAgZmllbGRfaW5mb1snanNvbl9zZXJpYWxpemVfc3RyaW5nJ10gPSBqc29uX3NlcmlhbGl6ZV9zdHJpbmcKLSAgICAgICAgaWYgZGphbmdvX2ZpZWxkX2luZm8udmVyYm9zZV9uYW1lICE9IGRqYW5nb19maWVsZF9uYW1lOgotICAgICAgICAgICAgIyBDaGVjayBpZiB0aGlzIGlzIGEgcHJveHkgY2xhc3MKLSAgICAgICAgICAgIGlmIHR5cGUoZGphbmdvX2ZpZWxkX2luZm8udmVyYm9zZV9uYW1lKSBpcyBzdHI6Ci0gICAgICAgICAgICAgICAgZmllbGRfaW5mb1sndmVyYm9zZS1uYW1lJ10gPSBkamFuZ29fZmllbGRfaW5mby52ZXJib3NlX25hbWUKLSAgICAgICAgaWYgZGphbmdvX2ZpZWxkX2luZm8ucHJpbWFyeV9rZXkgPT0gVHJ1ZToKLSAgICAgICAgICAgIGZpZWxkX2luZm9bJ3ByaW1hcnlfa2V5J10gPSBUcnVlCi0gICAgICAgIGlmIGRqYW5nb19maWVsZF9pbmZvLmhlbHBfdGV4dCAhPSAiIjoKLSAgICAgICAgICAgIGZpZWxkX2luZm9bJ2hlbHBfdGV4dCddID0gZGphbmdvX2ZpZWxkX2luZm8uaGVscF90ZXh0Ci0gICAgICAgIGZpZWxkX2luZm9bJ251bGwnXSA9IGRqYW5nb19maWVsZF9pbmZvLm51bGwKLSAgICAgICAgaWYgdHlwZShkamFuZ29fZmllbGRfaW5mby5kZWZhdWx0KSBpbiBbaW50LCBib29sLCBzdHJdOgotICAgICAgICAgICAgZmllbGRfaW5mb1snZGVmYXVsdCddID0gZGphbmdvX2ZpZWxkX2luZm8uZGVmYXVsdAotICAgICAgICBmaWVsZF9pbmZvWyd0eXBlJ10gPSBzdHIodHlwZShkamFuZ29fZmllbGRfaW5mbykpLnNwbGl0KCcuJylbLTFdLnJlcGxhY2UoIic+IiwgIiIpCi0gICAgICAgIGlmIGZpZWxkX2luZm9bJ3R5cGUnXSA9PSAnQXV0b0ZpZWxkJzoKLSAgICAgICAgICAgICMgUmUtbGFiZWwgdGhlIGNhc3NhbmRyYSBjb21wb3VuZCBrZXkgZm9yIGVhc2llciBjb25zdW1wdGlvbgotICAgICAgICAgICAgaWYgaGFzYXR0cihkamFuZ29fbW9kZWxfY2xhc3MsICdDYXNzYW5kcmFTZXR0aW5ncycpOgotICAgICAgICAgICAgICAgIGNhc3NhbmRyYV9zZXR0aW5ncyA9IGRqYW5nb19tb2RlbF9jbGFzcy5DYXNzYW5kcmFTZXR0aW5ncwotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoY2Fzc2FuZHJhX3NldHRpbmdzLCAnQ09NUE9VTkRfS0VZX0ZJRUxEUycpOgotICAgICAgICAgICAgICAgICAgICBjb21wb3VuZF9rZXlfZmllbGRzID0gY2Fzc2FuZHJhX3NldHRpbmdzLkNPTVBPVU5EX0tFWV9GSUVMRFMKLSAgICAgICAgICAgICAgICAgICAgcmVzdF9rZXlfZmllbGRzID0gW3Jlc3RfbWFwW21vZGVsXS5nZXQoeCwgeCkgZm9yIHggaW4gY29tcG91bmRfa2V5X2ZpZWxkc10KLSAgICAgICAgICAgICAgICAgICAgZmllbGRfaW5mb1snY29tcG91bmRfa2V5X2ZpZWxkcyddID0gcmVzdF9rZXlfZmllbGRzCi0gICAgICAgICAgICAgICAgICAgIGZpZWxkX2luZm9bJ3R5cGUnXSA9ICdjb21wb3VuZC1rZXknCi0gICAgICAgICAgICAgICAgICAgIGZpZWxkX2luZm9bJ2hlbHBfdGV4dCddID0gJyN8JXMnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd8Jy5qb2luKHJlc3Rfa2V5X2ZpZWxkcykKLSAgICAgICAgaWYgZmllbGRfaW5mb1sndHlwZSddID09ICdGb3JlaWduS2V5JzoKLSAgICAgICAgICAgIG90aGVyX29iamVjdCA9IGRqYW5nb19maWVsZF9pbmZvLnJlbC50by5SZXN0Lk5BTUUKLSAgICAgICAgICAgIGlmIGRqYW5nb19maWVsZF9pbmZvLnJlbC5maWVsZF9uYW1lIGluIHJlc3RfbWFwW290aGVyX29iamVjdF06Ci0gICAgICAgICAgICAgICAgZmllbGRfaW5mb1sncmVsX2ZpZWxkX25hbWUnXSA9IFwKLSAgICAgICAgICAgICAgICAgICAgcmVzdF9tYXBbb3RoZXJfb2JqZWN0XVtkamFuZ29fZmllbGRfaW5mby5yZWwuZmllbGRfbmFtZV0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmllbGRfaW5mb1sncmVsX2ZpZWxkX25hbWUnXSA9IGRqYW5nb19maWVsZF9pbmZvLnJlbC5maWVsZF9uYW1lCi0gICAgICAgICAgICBmaWVsZF9pbmZvWydyZWxfb2JqX3R5cGUnXSA9IGRqYW5nb19maWVsZF9pbmZvLnJlbC50by5SZXN0Lk5BTUUKLSAgICAgICAgaWYgZmllbGRfaW5mb1sndHlwZSddID09ICdDaGFyRmllbGQnOgotICAgICAgICAgICAgZmllbGRfaW5mb1snbWF4X2xlbmd0aCddID0gZGphbmdvX2ZpZWxkX2luZm8ubWF4X2xlbmd0aAotICAgICAgICAjaWYgZGphbmdvX2ZpZWxkX2luZm8udmFsaWRhdG9yczoKLSAgICAgICAgICAgICNmaWVsZF9pbmZvWyd2YWxpZGF0b3JzJ10gPSBkamFuZ29fZmllbGRfaW5mby52YWxpZGF0b3JzCi0gICAgICAgICNpZiBpc2luc3RhbmNlKHR5cGUsIGRqYW5nby5Qb3NpdGl2ZUludGVnZXJGaWVsZCk6Ci0gICAgICAgICAgICAjdHlwZV9uYW1lID0gJ1Bvc2l0aXZlSW50ZWdlckZpZWxkJwotICAgICAgICAgICAgI3ByaW50IHR5cGVfbmFtZQotCi0gICAgICAgIGZpZWxkX2luZm9fZGljdFtyZXN0X2ZpZWxkX25hbWVdID0gZmllbGRfaW5mbwotICAgIG1vZGVsX2luZm9fZGljdFttb2RlbF09eydmaWVsZHMnOmZpZWxkX2luZm9fZGljdCwgJ2hhc19yZXN0X21vZGVsJzogVHJ1ZX0KLQotaW1wb3J0IHBwcmludAotcHAgPSBwcHJpbnQuUHJldHR5UHJpbnRlcihpbmRlbnQ9MikKLXByaW50ICJtb2RlbF9pbmZvX2RpY3QgPSAiLHBwLnBwcmludChtb2RlbF9pbmZvX2RpY3QpCmRpZmYgLS1naXQgYS9jbGkvY2xpL3Rvb2xzL3JlYnVpbGRfbW9kZWwuc2ggYi9jbGkvY2xpL3Rvb2xzL3JlYnVpbGRfbW9kZWwuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDI0ZTc2ODMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS90b29scy9yZWJ1aWxkX21vZGVsLnNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotIyEvYmluL3NoCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotaWYgWyAhIC1kICJ0b29scy8iIF07IHRoZW4KLSAgICAgICAgZWNobyAiWW91IG11c3QgZXhlY3V0ZSB0aGlzIHNjcmlwdCBmcm9tIC4vY2xpIgotICAgICAgICBleGl0IC0xCi1maQotY2QgLi4vc2RuY29uCi1ybSAtZiBleHRyYWN0X21vZGVsLnB5Ci1jcCAuLi9jbGkvdG9vbHMvZXh0cmFjdF9tb2RlbC5weSBleHRyYWN0X21vZGVsLnB5Ci1weXRob24gZXh0cmFjdF9tb2RlbC5weSA+IC4uL2NsaS9tb2RlbF9pbmZvX2xpc3QucHkKLWNkIC4uL2NsaQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS90b29scy92YWxpZGF0ZS5weSBiL2NsaS9jbGkvdG9vbHMvdmFsaWRhdGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU3MTAxMzAuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS90b29scy92YWxpZGF0ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDY2NCArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTAsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBvcywgYXRleGl0Ci1pbXBvcnQgc3lzLCB0cmFjZWJhY2sgICAgICAgICAgICAgICAgICAgIyB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLWZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgotZnJvbSB0eXBlcyBpbXBvcnQgU3RyaW5nVHlwZQotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQganNvbgotaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHJlCi1pbXBvcnQgdGltZQotaW1wb3J0IHVybGxpYjIKLWltcG9ydCBodHRwbGliICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByb3ZpZGVzIGVycm9yIHByb2Nlc3NpbmcgZm9yIGlzaW5zdGFuY2UKLWltcG9ydCBzb2NrZXQKLQotZnJvbSBwcmV0dHlwcmludCBpbXBvcnQgUHJldHR5UHJpbnRlcgotZnJvbSBzdG9yZWNsaWVudCBpbXBvcnQgU3RvcmVDbGllbnQKLWZyb20gY2xpbW9kZWxpbmZvIGltcG9ydCBDbGlNb2RlbEluZm8KLWZyb20gdmVuZG9yIGltcG9ydCBWZW5kb3JEQgotCi1jbGFzcyBQYXJhbUV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gcmVwcihzZWxmLnZhbHVlKQotCi1USU1FU1RBTVBfSEVMUCA9IFwKLSAgICAoJ0VudGVyIGFuIGludGVnZXIgdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggb3IgZm9ybWF0dGVkXG4nICsKLSAgICAgJ2FzIG9uZSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnMgaW4geW91ciBsb2NhbCB0aW1lem9uZTpcbicKLSAgICAgJyJZWVlZLU1NLUREIEhIOk1NOlNTIiAgICAgIFlZWVktTU0tRERUSEg6TU06U1NcbicgKyAKLSAgICAgJyJZWVlZLU1NLUREIEhIOk1NOlNTK1RUVCIgIFlZWVktTU0tRERUSEg6TU06U1MrVFRUXG4nICsKLSAgICAgJ1lZWVktTU0tREQgICAgICAgICAgICAgICAgIE1NLUREXG4nICsgCi0gICAgICdISDpNTSAgICAgICAgICAgICAgICAgICAgICBub3cnKQotCi0KLWNsYXNzIFZhbGlkYXRlKCk6Ci0KLSAgICAjIGluaXRpYWxpemUgaW4gaW5pdF9vYmpfdHlwZV9pbmZvCi0gICAgb2JqX3R5cGVfaW5mb19kaWN0ID0ge30gICAgICAgICAjIHNlZSBpbml0X29ial90eXBlX2luZm9fZGljdAotICAgIG9ial90eXBlcyA9IFtdIAotICAgIG9ial9rZXlzID0ge30KLSAgICAKLSAgICBrbm93bl9jb250cm9sbGVycyA9IFsiMTI3LjAuMC4xOjgwMDAiXQotICAgIGNvbnRyb2xsZXIgPSBOb25lCi0gICAgIyBMT09LISBtYW5hZ2UgdGhpcyBzZXBhcmF0ZWx5IHVudGlsIHdlIGNhbiBmb3Igc3VyZSB0YWxrIHRvIGV0aDAgYWRkciBpbnN0ZWFkIG9mIDEyNy4wLjAuMQotICAgIGNvbnRyb2xsZXJfZm9yX3Byb21wdCA9ICIxMjcuMC4wLjE6ODAwMCIKLSAgICBjbHVzdGVyID0gImRlZmF1bHQiCi0KLSAgICBydW4gPSBUcnVlCi0KLSAgICAjIENhY2hlZCBvcHRpb25zIGZvciBsYXN0IGNvbXBsZXRpb24KLSAgICBsYXN0X2xpbmUgPSBOb25lCi0gICAgbGFzdF9vcHRpb25zID0gTm9uZQotICAgIAotICAgICMgQXJlIHdlIHJ1bm5pbmcgaW4gYmF0Y2ggbW9kZSwgaS5lLiAiY2F0IGNvbW1hbmRzIHwgY2xpLnB5IgotICAgIGJhdGNoID0gRmFsc2UKLQotICAgICMgdXNlZCBmb3IgcGFyc2luZyBhcyBhbiBhcmcKLSAgICBsb2NhbF9uYW1lX3BhdHRlcm4gPSAibG9jYWxob3N0Oi8vKFtBLVphLXowLTlfOkBcLVwuXC9dKyQpIgotCi0gICAgIyBjb250YWluZWQgb2JqZWN0cwotICAgIHBwID0gTm9uZQotICAgIHN0b3JlID0gTm9uZQotICAgIG1vZGVsX2hhbmRsZXIgPSBOb25lCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW5pdF9vYmpfdHlwZV9pbmZvX2RpY3QKLSAgICAjCi0gICAgIyAgQnVpbGRzIHRoZSBpbml0X29ial90eXBlX2luZm9fZGljdCwgd2hpY2ggaXMgYSBkaWN0aW9uYXJ5IGluZGV4ZWQgYnkKLSAgICAjICB0aGUgY3VycmVudCBtb2RlLCB3aGljaCBhbHNvIHJlc3VsdHMgaW4gYSBkaWN0aW9uYXJ5LCB0aGVuIGluZGV4ZWQKLSAgICAjICBieSBhIGVpdGhlciBhICdmaWVsZCcgb3IgJ2ZpZWxkX29yZGVyaW5nJyBrZXkuCi0gICAgIwotICAgICMgIFdoZW4gaW5pdF9vYmpfdHlwZV9pbmZvX2RpY3QgaXMgaW5kZXhlZCBieSB0aGUgdGFibGUvbW9kZWwgbmFtZSwgdGhlCi0gICAgIyAgdmFsdWUgaXMgYSBkaWN0aW9uYXJ5LiAgVGhhdCBkaWN0aW9uYXJ5IGhhcyBzZXZlcmFsIGtleXM6Ci0gICAgIyAgLSAnZmllbGRzJwotICAgICMgIC0gJ2ZpZWxkX29yZGVyaW5ncycKLSAgICAjCi0gICAgIyAgVGhlICdmaWVsZHMnIGluZGV4ZWQgcmVzdWx0IHJldHVybnMgYSBkaWN0aW9uYXJ5LCBlYWNoIG9mIHdoaWNoCi0gICAgIyAgaXMgaW5kZXhlZCBieSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyB3aXRoaW4gdGhlIHRhYmxlL21vZGVsLiBmdXJ0aGVyCi0gICAgIyAgaW5kaWNpZXMgZGVzY3JpYmUgZGV0YWlscyBhYm91dCB0aGF0IGZpZWxkIHdpdGhpbiB0aGUgdGFibGU6Ci0gICAgIyAgLSAnZm9ybWF0dGVyJyBkZXNzY3JpYmVzIHRoZSBwcmV0dHlQcmludGVyIGZ1bmN0aW9uIGZvciB0aGF0IGZpZWxkCi0gICAgIyAgLSAncHJpbWFyeV9rZXknIGlkZW50aWZlcyB0aGlzIGZpZWxkIGFzIHRoZSBrZXkgZm9yIHRoZSB0YWJsZS9tb2RlbC4KLSAgICAjICAtICd2ZXJib3NlX25hbWUnIGlkZW50ZmllcyBhbiBhZGRpdG9uYWwgbmFtZSBmb3IgdGhlIGZpZWxkLCBpbnRlbmVkZWQKLSAgICAjICAgICAgICAgICAgICAgICAgIHRvIGJlIG1vcmUgZGVzY3JpcHRpdmUKLSAgICAjICAtICdoYXNfcmVzdF9tb2RlbCcgIFRydWUvRmFsc2UKLSAgICAjICAtICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnICBUcnVlL0ZhbHNlCi0gICAgIyAgLSAnaGVscF90ZXh0JyAgU3RyaW5nIHByb3ZpZGluZyBtb3JlIGNsdWVzIGFib3V0IHRoZSBpbnRlbnQgb2YgdGhpcyBmaWVsZAotICAgICMKLSAgICAjICBUaGUgJ2ZpZWxkX29yZGVyaW5nJyBkaWN0aW9uYXJ5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgdGFibGUvbW9kZWwKLSAgICAjICBpcyB1c2VkIHRvIG9yZGVyIHRoZSBvdXRwdXQuCi0gICAgIwotICAgICMgIEFsc28gcG9wdWxhdGVzIHRoZSBzZWxmLm9ial9rZXlzW10sIHdoaWNoIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIHRoZSB0YWJsZS9tb2RlbAotICAgICMgIG5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIHN0b3JhZ2Uga2V5ICh0YWJsZS9tb2RlbCdzIGNvbHVtbikgZm9yIHRoYXQgdGFibGUuCi0gICAgIwotICAgIGRlZiBpbml0X29ial90eXBlX2luZm9fZGljdChzZWxmKToKLSAgICAgICAgc2VsZi5jbGlfbW9kZWxfaW5mbyA9IENsaU1vZGVsSW5mbygpCi0gICAgICAgIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0ID0gc2VsZi5jbGlfbW9kZWxfaW5mby5nZXRfY29tcGxldGVfb2JqX3R5cGVfaW5mb19kaWN0KCkKLSAgICAgICAgc2VsZi5vYmpfdHlwZXMgPSBbayBmb3IgKGssdikgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3QuaXRlbXMoKQotICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnaGFzX3Jlc3RfbW9kZWwnIGluIHZdCi0gICAgICAgIGZvciAoayxkKSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdC5pdGVtcygpOgotICAgICAgICAgICAgY2FuZGlkYXRlX2tleXMgPSBbZiBmb3IgZiBpbiBkWydmaWVsZHMnXS5rZXlzKCkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkWydmaWVsZHMnXVtmXS5nZXQoJ3ByaW1hcnlfa2V5JywgRmFsc2UpXQotICAgICAgICAgICAgaWYgbGVuKGNhbmRpZGF0ZV9rZXlzKSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5vYmpfa2V5c1trXSA9IGNhbmRpZGF0ZV9rZXlzWzBdCi0KLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBtYWtlX3VuaXRfZm9ybWF0dGVyCi0gICAgIwotICAgIGRlZiBtYWtlX3VuaXRfZm9ybWF0dGVyKHNlbGYsIHVuaXRzKToKLSAgICAgICAgcmV0dXJuIGxhbWJkYSB4LHk6ICclcyAlcycgJSAoeCwgdW5pdHMpCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW5pdF9vYmpfdHlwZV9pbmZvX2RpY3QKLSAgICAjCi0gICAgIyAgQnVpbGRzIHRoZSBpbml0X29ial90eXBlX2luZm9fZGljdCwgd2hpY2ggaXMgYSBkaWN0aW9uYXJ5IGluZGV4ZWQgYnkKLSAgICAjICB0aGUgY3VycmVudCBtb2RlLCB3aGljaCBhbHNvIHJlc3VsdHMgaW4gYSBkaWN0aW9uYXJ5LCB0aGVuIGluZGV4ZWQKLSAgICAjICBieSBhIGVpdGhlciBhICdmaWVsZCcgb3IgJ2ZpZWxkX29yZGVyaW5nJyBrZXkuCi0gICAgIwotICAgICMgIFdoZW4gaW5pdF9vYmpfdHlwZV9pbmZvX2RpY3QgaXMgaW5kZXhlZCBieSB0aGUgdGFibGUvbW9kZWwgbmFtZSwgdGhlCi0gICAgIyAgdmFsdWUgaXMgYSBkaWN0aW9uYXJ5LiAgVGhhdCBkaWN0aW9uYXJ5IGhhcyBzZXZlcmFsIGtleXM6Ci0gICAgIyAgLSAnZmllbGRzJwotICAgICMgIC0gJ2ZpZWxkX29yZGVyaW5ncycKLSAgICAjCi0gICAgIyAgVGhlICdmaWVsZHMnIGluZGV4ZWQgcmVzdWx0IHJldHVybnMgYSBkaWN0aW9uYXJ5LCBlYWNoIG9mIHdoaWNoCi0gICAgIyAgaXMgaW5kZXhlZCBieSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyB3aXRoaW4gdGhlIHRhYmxlL21vZGVsLiBmdXJ0aGVyCi0gICAgIyAgaW5kaWNpZXMgZGVzY3JpYmUgZGV0YWlscyBhYm91dCB0aGF0IGZpZWxkIHdpdGhpbiB0aGUgdGFibGU6Ci0gICAgIyAgLSAnZm9ybWF0dGVyJyBkZXNzY3JpYmVzIHRoZSBwcmV0dHlQcmludGVyIGZ1bmN0aW9uIGZvciB0aGF0IGZpZWxkCi0gICAgIyAgLSAncHJpbWFyeV9rZXknIGlkZW50aWZlcyB0aGlzIGZpZWxkIGFzIHRoZSBrZXkgZm9yIHRoZSB0YWJsZS9tb2RlbC4KLSAgICAjICAtICd2ZXJib3NlX25hbWUnIGlkZW50ZmllcyBhbiBhZGRpdG9uYWwgbmFtZSBmb3IgdGhlIGZpZWxkLCBpbnRlbmVkZWQKLSAgICAjICAgICAgICAgICAgICAgICAgIHRvIGJlIG1vcmUgZGVzY3JpcHRpdmUKLSAgICAjICAtICdoYXNfcmVzdF9tb2RlbCcgIFRydWUvRmFsc2UKLSAgICAjICAtICdqc29uX3NlcmlhbGl6ZV9zdHJpbmcnICBUcnVlL0ZhbHNlCi0gICAgIyAgLSAnaGVscF90ZXh0JyAgU3RyaW5nIHByb3ZpZGluZyBtb3JlIGNsdWVzIGFib3V0IHRoZSBpbnRlbnQgb2YgdGhpcyBmaWVsZAotICAgICMKLSAgICAjICBUaGUgJ2ZpZWxkX29yZGVyaW5nJyBkaWN0aW9uYXJ5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgdGFibGUvbW9kZWwKLSAgICAjICBpcyB1c2VkIHRvIG9yZGVyIHRoZSBvdXRwdXQuCi0gICAgIwotICAgICMgIEFsc28gcG9wdWxhdGVzIHRoZSBzZWxmLm9ial9rZXlzW10sIHdoaWNoIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIHRoZSB0YWJsZS9tb2RlbAotICAgICMgIG5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIHN0b3JhZ2Uga2V5ICh0YWJsZS9tb2RlbCdzIGNvbHVtbikgZm9yIHRoYXQgdGFibGUuCi0gICAgIwotICAgIGRlZiBpbml0X29ial90eXBlX2luZm9fZGljdChzZWxmKToKLSAgICAgICAgc2VsZi5jbGlfbW9kZWxfaW5mbyA9IENsaU1vZGVsSW5mbygpCi0gICAgICAgIHNlbGYub2JqX3R5cGVfaW5mb19kaWN0ID0gc2VsZi5jbGlfbW9kZWxfaW5mby5nZXRfY29tcGxldGVfb2JqX3R5cGVfaW5mb19kaWN0KCkKLSAgICAgICAgc2VsZi5vYmpfdHlwZXMgPSBbayBmb3IgKGssdikgaW4gc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3QuaXRlbXMoKQotICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnaGFzX3Jlc3RfbW9kZWwnIGluIHZdCi0gICAgICAgIGZvciAoayxkKSBpbiBzZWxmLm9ial90eXBlX2luZm9fZGljdC5pdGVtcygpOgotICAgICAgICAgICAgY2FuZGlkYXRlX2tleXMgPSBbZiBmb3IgZiBpbiBkWydmaWVsZHMnXS5rZXlzKCkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkWydmaWVsZHMnXVtmXS5nZXQoJ3ByaW1hcnlfa2V5JywgRmFsc2UpXQotICAgICAgICAgICAgaWYgbGVuKGNhbmRpZGF0ZV9rZXlzKSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5vYmpfa2V5c1trXSA9IGNhbmRpZGF0ZV9rZXlzWzBdCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgaW5pdAotICAgICMKLSAgICBkZWYgaW5pdChzZWxmKToKLSAgICAgICAgCi0gICAgICAgIHNlbGYudmVuZG9yZGIgPSBWZW5kb3JEQigpCi0gICAgICAgIHNlbGYudmVuZG9yZGIuaW5pdCgpCi0gICAgICAgIAotICAgICAgICBwYXJzZXIgPSBPcHRpb25QYXJzZXIoKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWMiLCAiLS1jb250cm9sbGVyIiwgZGVzdD0iY29udHJvbGxlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InNldCBkZWZhdWx0IGNvbnRyb2xsZXIgdG8gQ09OVFJPTExFUiIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSJDT05UUk9MTEVSIiwgZGVmYXVsdD1zZWxmLmNvbnRyb2xsZXIpCi0gICAgICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLSAgICAgICAgc2VsZi5jb250cm9sbGVyID0gb3B0aW9ucy5jb250cm9sbGVyCi0gICAgICAgIGlmIG5vdCBzZWxmLmNvbnRyb2xsZXI6Ci0gICAgICAgICAgICBzZWxmLmNvbnRyb2xsZXIgPSAiMTI3LjAuMC4xOjgwMDAiCi0KLSAgICAgICAgaWYgbm90IHN5cy5zdGRpbi5pc2F0dHkoKToKLSAgICAgICAgICAgIHNlbGYuYmF0Y2ggPSBUcnVlCi0KLSAgICAgICAgc2VsZi5pbml0X29ial90eXBlX2luZm9fZGljdCgpCi0KLSAgICAgICAgc2VsZi5wcCA9IFByZXR0eVByaW50ZXIoc2VsZi5vYmpfdHlwZV9pbmZvX2RpY3QpCi0gICAgICAgIHNlbGYuc3RvcmUgPSBTdG9yZUNsaWVudCgpCi0gICAgICAgIHNlbGYuc3RvcmUuc2V0X2NvbnRyb2xsZXIoc2VsZi5jb250cm9sbGVyKQotCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgcGFyc2Vfb3B0aW9uYWxfcGFyYW1ldGVycwotICAgICMKLSAgICBkZWYgcGFyc2Vfb3B0aW9uYWxfcGFyYW1ldGVycyhzZWxmLCBwYXJhbXMsIHdvcmRzKToKLSAgICAgICAgcGFyc2VkID0ge30KLSAgICAgICAgaSA9IDAKLSAgICAgICAgd2hpbGUgaSA8IGxlbih3b3Jkcyk6Ci0gICAgICAgICAgICB3b3JkID0gd29yZHNbaV0KLSAgICAgICAgICAgIHBvc3NpYmxlID0gW3ggZm9yIHggaW4gcGFyYW1zIGlmIHguc3RhcnRzd2l0aCh3b3JkKV0KLSAgICAgICAgICAgIGlmIGxlbihwb3NzaWJsZSkgPT0gMDoKLSAgICAgICAgICAgICAgICByYWlzZSBQYXJhbUV4Y2VwdGlvbigndW5rbm93biBvcHRpb246ICVzJyAlIHdvcmQpCi0gICAgICAgICAgICBlbGlmIGxlbihwb3NzaWJsZSkgPiAxOgotICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtRXhjZXB0aW9uKCdhbWJpZ3VvdXMgb3B0aW9uOiAlc1xuJXMnICUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdvcmQsICJcbiIuam9pbihwb3NzaWJsZSkpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwYXJhbV9uYW1lID0gcG9zc2libGVbMF0KLSAgICAgICAgICAgICAgICBwYXJhbSA9IHBhcmFtc1twYXJhbV9uYW1lXQotICAgICAgICAgICAgICAgIGlmIChwYXJhbVsndHlwZSddID09ICdmbGFnJyk6Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlZFtwYXJhbV9uYW1lXSA9IFRydWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBpKzEgPCBsZW4od29yZHMpOgotICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgPSB3b3Jkc1tpKzFdCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1bJ3R5cGUnXSA9PSAnc3RyaW5nJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkW3BhcmFtX25hbWVdID0gYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgKHBhcmFtWyd0eXBlJ10gPT0gJ2ludCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkW3BhcmFtX25hbWVdID0gaW50KGFyZ3VtZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBQYXJhbUV4Y2VwdGlvbignb3B0aW9uICVzIHJlcXVpcmVzICcgKyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVnZXIgYXJndW1lbnQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgd29yZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgKHBhcmFtWyd0eXBlJ10gPT0gJ2VudW0nKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdfcG9zc2libGUgPSBbeCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcGFyYW1bJ3ZhbHVlcyddIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoYXJndW1lbnQpXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4oYXJnX3Bvc3NpYmxlKSA9PSAwKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUGFyYW1FeGNlcHRpb24oJ29wdGlvbiAlcyB2YWx1ZSBtdXN0IGJlIGluICglcyknICUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3b3JkLCIsICIuam9pbihwYXJhbVsndmFsdWVzJ10pKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIChsZW4oYXJnX3Bvc3NpYmxlKSA+IDEpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBQYXJhbUV4Y2VwdGlvbignYW1iaWd1b3VzIG9wdGlvbiAlcyB2YWx1ZTpcbiVzJyAlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod29yZCwgIlxuIi5qb2luKGFyZ19wb3NzaWJsZSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFtwYXJhbV9uYW1lXSA9IGFyZ19wb3NzaWJsZVswXQotICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBQYXJhbUV4Y2VwdGlvbignb3B0aW9uICVzIHJlcXVpcmVzIGFuIGFyZ3VtZW50JyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHdvcmQpCi0gICAgICAgICAgICBpICs9IDEKLSAgICAgICAgcmV0dXJuIHBhcnNlZAotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHJlc3RfZXJyb3JfdG9fZGljdAotICAgICMgICBUdXJuIGFuIGV4Y2VwdGlvbiBpbnRvIGFuIGVycm9yIGRpY3Rpb25hcnksIHdoaWNoIGNhbiBsYXRlciBiZSBwcmludGVkLgotICAgICMgICB1c2luZyByZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZSgpLiAgCi0gICAgIwotICAgIGRlZiByZXN0X2Vycm9yX3RvX2RpY3Qoc2VsZiwgZSwgZGV0YWlsPU5vbmUpOgotICAgICAgICBlcnJvcnMgPSBOb25lCi0gICAgICAgICMgdHJ5IHRvIGlkZW50aWZpZnkgdmFsaWRhdGlvbiByZXF1ZXN0cwotICAgICAgICBpZiBpc2luc3RhbmNlKGUsIGh0dHBsaWIuQmFkU3RhdHVzTGluZSk6Ci0gICAgICAgICAgICBlcnJvcnMgPSB7J2Nvbm5lY3Rpb25fZXJyb3InIDogJ1JFU1QgQVBJIHNlcnZlciAlczogJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXJ2ZXIgbm90IHJ1bm5pbmcnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRyb2xsZXJ9Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3JzCi0KLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGUsIHVybGxpYjIuSFRUUEVycm9yKToKLSAgICAgICAgICAgIGNvZGUgPSBlLmNvZGUKLSAgICAgICAgICAgIGVycm9yX3JldHVybmVkID0gZS5yZWFkbGluZSgpCi0KLSAgICAgICAgICAgIGlmIGNvZGUgPT0gNDA0OgotICAgICAgICAgICAgICAgIGlmIGRldGFpbDoKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0geydub3RfZm91bmRfZXJyb3InIDogJ05vdCBGb3VuZDogJXMnICUgZGV0YWlsfQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IHsnbm90X2ZvdW5kX2Vycm9yJyA6ICdOb3QgRm91bmQ6ICVzJyAlIGVycm9yX3JldHVybmVkfQotICAgICAgICAgICAgZWxpZiBjb2RlID09IDUwMCBvciBjb2RlID09IDQwMzoKLSAgICAgICAgICAgICAgICBlcnJvcnMgPSB7J2Nvbm5lY3Rpb25fZXJyb3InIDogJ1JFU1QgQVBJIHNlcnZlciAlcyB1bmFibGUgdG8gY29ubmVjdDogJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fzc2FuZHJhIHBvc3NpYmx5IG5vdCBydW5uaW5nJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRyb2xsZXJ9Ci0gICAgICAgICAgICBlbGlmIGNvZGUgPT0gNDAwOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0ganNvbi5sb2FkcyhlcnJvcl9yZXR1cm5lZCkKLSAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIGVycm9yIGNhbid0IGJlIGNvbnZlcnRlZCBpbnRvIGEgZGljdGlvbmFyeSwgdGhlbiBpbWJlZCB0aGUgY29tcGxldGUKLSAgICAgICAgICAgICAgICAgICAgIyBlcnJvcnMgYXMgdGhlIHZhbHVlIGZvciBhIHNwZWNpZmljIGVycm9yIGtleS4KLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0geydlcnJvcl9yZXN1bHRfZXJyb3InOiAiQ2FuJ3QgY29udmVydCByZXR1cm5lZCBlcnJvcjogJXMiICUgZXJyb3JfcmV0dXJuZWR9Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXJyb3JzID0geyd1bmtub3duX2Vycm9yJzogJ0h0dHBFcnJvciAlcycgJSBlcnJvcl9yZXR1cm5lZH0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGVycm9ycyA9IHsndW5rbm93bl9lcnJvcic6ICJOZWVkIGVycm9yIG1hbmFnbWVuZXQgZm9yIGVycm9yICVzIiAlIHR5cGUoZSl9Ci0KLSAgICAgICAgcmV0dXJuIGVycm9ycwotCi0gICAgIwotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIHJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlCi0gICAgIyAgIFR1cm4gYW4gcmVzdF9lcnJvcl9kaWN0IHJldHVybmVkIGZyb20gcmVzdF9lcnJvcl90b19kaWN0Ci0gICAgIyAgIGludG8gYW4gZXJyb3IgbWVzc2FnZSB3aGljaCBjYW4gZ2UgcHJpbnRlZC4gIENvZGUgYXNzdW1lcyBtdWx0aXBsZSBlcnJvcnMKLSAgICAjICAgd29uJ3Qgb2NjdXI7IGlmIGEgJ2ZpZWxkX2Vycm9yJyBleGlzdHMsIGZvciBleGFtcGxlLCBhICdtb2RlbF9lcnJvcicgd29uJ3QKLSAgICAjICAgYWxzbyBiZSBwb3N0ZWQgaW4gdGhlIGVycm9yCi0gICAgIwotICAgIGRlZiByZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShzZWxmLCByZXN0X2Vycm9yX2RpY3QpOgotICAgICAgICBlcnJvcl9tc2cgPSAiIgotICAgICAgICBpZiAnZmllbGRfZXJyb3JzJyBpbiByZXN0X2Vycm9yX2RpY3Q6Ci0gICAgICAgICAgICBmb3IgKGssdikgaW4gcmVzdF9lcnJvcl9kaWN0WydmaWVsZF9lcnJvcnMnXS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGVycm9yX21zZyArPSAiU3ludGF4IGVycm9yOiBmaWVsZCAlczogJXMiICUgKGssdikKLSAgICAgICAgICAgICMgdHJhY2ViYWNrLnByaW50X3N0YWNrKCksIHRvIGZpbmQgb3V0IHdoeSB0aGUgZXJyb3Igb2NjdXJlZAotICAgICAgICBlbGlmICdtb2RlbF9lcnJvcicgaW4gcmVzdF9lcnJvcl9kaWN0OgotICAgICAgICAgICAgZXJyb3JfbXNnICs9ICJFcnJvcjogJXMiICUgcmVzdF9lcnJvcl9kaWN0Wydtb2RlbF9lcnJvciddCi0gICAgICAgIGVsaWYgJ25vdF9mb3VuZF9lcnJvcicgaW4gcmVzdF9lcnJvcl9kaWN0OgotICAgICAgICAgICAgZXJyb3JfbXNnICs9ICJFcnJvcjogJXMiICUgcmVzdF9lcnJvcl9kaWN0Wydub3RfZm91bmRfZXJyb3InXQotICAgICAgICBlbGlmICdjb25uZWN0aW9uX2Vycm9yJyBpbiByZXN0X2Vycm9yX2RpY3Q6Ci0gICAgICAgICAgICBlcnJvcl9tc2cgKz0gcmVzdF9lcnJvcl9kaWN0Wydjb25uZWN0aW9uX2Vycm9yJ10KLSAgICAgICAgZWxpZiAnZXJyb3JfcmVzdWx0X2Vycm9yJyBpbiByZXN0X2Vycm9yX2RpY3Q6Ci0gICAgICAgICAgICBlcnJvcl9tc2cgKz0gcmVzdF9lcnJvcl9kaWN0WydlcnJvcl9yZXN1bHRfZXJyb3InXQotICAgICAgICBlbGlmICd1bmtub3duX2Vycm9yJyBpbiByZXN0X2Vycm9yX2RpY3Q6Ci0gICAgICAgICAgICBlcnJvcl9tc2cgKz0gcmVzdF9lcnJvcl9kaWN0Wyd1bmtub3duX2Vycm9yJ10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGVycm9yX21zZyA9ICJSRVNUIEFQSSBzZXJ2ZXIgb24gY29udHJvbGxlci1ub2RlICVzICIgJSBzZWxmLmNvbnRyb2xsZXIKLSAgICAgICAgICAgIGVycm9yX21zZyArPSAiaGFkICVzIGVycm9yOlxuIiAlIHJlc3RfZXJyb3JfZGljdFsnZXJyb3JfdHlwZSddCi0gICAgICAgICAgICBlcnJvcl9tc2cgKz0gcmVzdF9lcnJvcl9kaWN0WydkZXNjcmlwdGlvbiddCi0gICAgICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAKLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgbWV0aG9kX2Zyb21fbmFtZQotICAgICMKLSAgICBkZWYgbWV0aG9kX2Zyb21fbmFtZShzZWxmLCBuYW1lKToKLSAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCAidmFsaWRhdGVfIiArIG5hbWUucmVwbGFjZSgiLSIsIl8iKSwgTm9uZSkKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2YWxpZGF0ZV9wb3J0Ci0gICAgIwotICAgICMgLSB2YWxpZGF0ZSBwb3J0IGZvcmVpZ24ga2V5ICh0byBzd2l0Y2gpCi0gICAgIwotICAgIGRlZiB2YWxpZGF0ZV9wb3J0KHNlbGYpOgotICAgICAgICBlcnJvciA9IE5vbmUKLSAgICAgICAgcHJpbnQgInZhbGlkYXRlX3BvcnQiCi0KLSAgICAgICAgIyBjb2xsZWN0IGtub3duIHN3aXRjaGVzCi0gICAgICAgIHN3aXRjaF9pZHMgPSBOb25lCi0gICAgICAgIHN3aXRjaF9rZXkgPSBzZWxmLm9ial9rZXlzWyJzd2l0Y2giXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzd2l0Y2hfdGFibGUgPSBzZWxmLnN0b3JlLmdldF90YWJsZV9mcm9tX3N0b3JlKCJzd2l0Y2giKQotICAgICAgICAgICAgc3dpdGNoX2lkcyA9IFt4W3N3aXRjaF9rZXldIGZvciB4IGluIHN3aXRjaF90YWJsZV0KLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGVycm9yID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSkKLSAgICAgICAgICAgIHByaW50IHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3IpCi0gICAgICAgICAgICBwYXNzCi0gICAgICAgIAotICAgICAgICBpZiBlcnJvcjoKLSAgICAgICAgICAgIHByaW50ICJVbmFibGUgdG8gY29sbGVjdCBzd2l0Y2gsIG5vIHN3aXRjaCBkcGlkIHZhbGlkYXRpb24gZm9yIHBvcnQgdGFibGUiCi0gICAgICAgICAgICBlcnJvciA9IE5vbmUKLQotICAgICAgICAjIGNvbGxlY3Qga25vd24gcG9ydHMKLSAgICAgICAgcG9ydF90YWJsZSA9IE5vbmUKLSAgICAgICAgcG9ydF9rZXkgPSBzZWxmLm9ial9rZXlzWyJwb3J0Il0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcG9ydF90YWJsZSA9IHNlbGYuc3RvcmUuZ2V0X3RhYmxlX2Zyb21fc3RvcmUoInBvcnQiKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgZXJyb3IgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlKQotICAgICAgICAgICAgcHJpbnQgc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcikKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgCi0gICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgcHJpbnQgIlVuYWJsZSB0byBjb2xsZWN0IHBvcnRzIgotICAgICAgICAgICAgcmV0dXJuCi0gICAgCi0gICAgICAgIGZvciBwb3J0IGluIHBvcnRfdGFibGU6Ci0gICAgICAgICAgICBpZiBub3QgcG9ydF9rZXkgaW4gcG9ydDoKLSAgICAgICAgICAgICAgICBwcmludCAiTm8gcG9ydCBpZCBpbiByb3ciCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBvcnRfaWQgPSBwb3J0W3BvcnRfa2V5XQotICAgICAgICAgICAgICAgIGlmIG5vdCAnc3dpdGNoJyBpbiBwb3J0OgotICAgICAgICAgICAgICAgICAgICBwcmludCAncG9ydCAlcyBObyBzd2l0Y2ggaW4gcG9ydCAoZm9yZWlnbiBrZXkpJyAlIHBvcnRfaWQKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2YWxpZGF0ZV9zd2l0Y2gKLSAgICAjCi0gICAgIyAtIHZhbGlkYXRlIHN3aXRjaCBmb3JlaWduIGtleSAodG8gY29udHJvbGxlcikKLSAgICAjCi0gICAgZGVmIHZhbGlkYXRlX3N3aXRjaChzZWxmKToKLSAgICAgICAgcHJpbnQgInZhbGlkYXRlX3N3aXRjaCIKLSAgICAgICAgZXJyb3IgPSBOb25lCi0KLSAgICAgICAgIyBjb2xsZWN0IGtub3duIGNvbnRyb2xsZXJzCi0gICAgICAgIGNvbnRyb2xsZXJfaWRzID0gTm9uZQotICAgICAgICBjb250cm9sbGVyX2tleSA9IHNlbGYub2JqX2tleXNbImNvbnRyb2xsZXItbm9kZSJdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRyb2xsZXJfdGFibGUgPSBzZWxmLnN0b3JlLmdldF90YWJsZV9mcm9tX3N0b3JlKCJjb250cm9sbGVyLW5vZGUiKQotICAgICAgICAgICAgY29udHJvbGxlcl9pZHMgPSBbeFtjb250b2xsZXJfa2V5XSBmb3IgeCBpbiBjb250cm9sbGVyX3RhYmxlIGlmIGNvbnRyb2xsZXJfa2V5IGluIGNvbnRyb2xsZXJfdGFibGVdCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvciA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUpCi0gICAgICAgICAgICBwcmludCBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9yKQotICAgICAgICAgICAgcGFzcwotICAgICAgICAKLSAgICAgICAgaWYgZXJyb3I6Ci0gICAgICAgICAgICBwcmludCAiVW5hYmxlIHRvIGNvbGxlY3QgY29udHJvbGxlciwgbm8gY29udHJvbGxlciB2YWxpZGF0aW9uIGZvciBzd2l0Y2hlcyIKLSAgICAgICAgICAgIGVycm9yID0gTm9uZQotICAgICAgICBpZiBsZW4oY29udHJvbGxlcl9pZHMpID09IDA6Ci0gICAgICAgICAgICBwcmludCAiVW5hYmxlIHRvIGNvbGxlY3QgYW55IGNvbnRyb2xsZXIgaWRzIgotCi0gICAgICAgICMgY29sbGVjdCBrbm93biBwb3J0cwotICAgICAgICBzd2l0Y2hfdGFibGUgPSBOb25lCi0gICAgICAgIHN3aXRjaF9rZXkgPSBzZWxmLm9ial9rZXlzWyJzd2l0Y2giXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzd2l0Y2hfdGFibGUgPSBzZWxmLnN0b3JlLmdldF90YWJsZV9mcm9tX3N0b3JlKCJzd2l0Y2giKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgZXJyb3IgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlKQotICAgICAgICAgICAgcHJpbnQgc2VsZi5yZXN0X2Vycm9yX2RpY3RfdG9fbWVzc2FnZShlcnJvcikKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgCi0gICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgcHJpbnQgIlVuYWJsZSB0byBjb2xsZWN0IHN3aXRjaGVzIgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbGVuKHN3aXRjaF90YWJsZSkgPT0gMDoKLSAgICAgICAgICAgIHByaW50ICJzd2l0Y2ggdGFibGUgZW1wdHkiCi0gICAgCi0gICAgICAgIGZvciBzd2l0Y2ggaW4gc3dpdGNoX3RhYmxlOgotICAgICAgICAgICAgaWYgbm90IHN3aXRjaF9rZXkgaW4gc3dpdGNoOgotICAgICAgICAgICAgICAgIHByaW50ICJObyBzd2l0Y2ggaWQgaW4gcm93IgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzd2l0Y2hfaWQgPSBzd2l0Y2hbc3dpdGNoX2tleV0KLSAgICAgICAgICAgICAgICBpZiBub3QgJ3N3aXRjaCcgaW4gc3dpdGNoOgotICAgICAgICAgICAgICAgICAgICBwcmludCAnc3dpdGNoICVzIE5vIGNvbnRyb2xsZXIgZm9yZWlnbiBrZXknICUgc3dpdGNoX2lkCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlciA9IHN3aXRjaFsnY29udHJvbGxlciddCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb250cm9sbGVyIGluIGNvbnRyb2xsZXJfaWRzOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgInN3aXRjaCAlcyBtaXNzaW5nIGNvbnRyb2xsZXIgKGZvcmVpZ24ga2V5KSAlcyAiICUgKHN3aXRjaF9pZCwgY29udHJvbGxlcikKLQotICAgICMKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2YWxpZGF0ZV9ob3N0X3Zuc19pbnRlcmZhY2UKLSAgICAjCi0gICAgIyAtIHZhbGlkYXRlIGhvc3Qtdm5zLWludGVyZmFjZSBmb3JlaWdiIGtleSAodG8gdm5zLWludGVyZmFjZSkKLSAgICAjIC0gdmFsaWRhdGUgaG9zdC12bnMtaW50ZXJmYWNlIGZvcmVpZ2Iga2V5ICh0byBob3N0KQotICAgICMgLSBjcmFjayB0aGUgaWQgaW50byB0aHJlZSBmcmFnbWVudHMsIGFuZCB2YWxpZGF0ZSBlYWNoIG9mIHRoZQotICAgICMgICBmcmFnbWVudHMgcmVmZXJlbmNlcyB0aGUgZXhwZWN0ZWQgY29tcG9ub250IChpZTogbWF0Y2hlcyB0aGUgZm9yZWlnbiBrZXkpCi0gICAgIwotICAgIGRlZiB2YWxpZGF0ZV9ob3N0X3Zuc19pbnRlcmZhY2Uoc2VsZik6Ci0gICAgICAgIHByaW50ICJob3N0X3Zuc19pbnRlcmZhY2UiCi0KLSAgICAgICAgZXJyb3IgPSBOb25lCi0gICAgICAgICMgY29sbGVjdCBob3N0J3MKLSAgICAgICAgaG9zdF9pZHMgPSBOb25lCi0gICAgICAgIGhvc3Rfa2V5ID0gc2VsZi5vYmpfa2V5c1siaG9zdCJdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhvc3RfdGFibGUgPSBzZWxmLnN0b3JlLmdldF90YWJsZV9mcm9tX3N0b3JlKCJob3N0IikKLSAgICAgICAgICAgIGhvc3RfaWRzID0gW3hbaG9zdF9rZXldIGZvciB4IGluIGhvc3RfdGFibGVdCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvciA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUpCi0gICAgICAgICAgICBwcmludCBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9yKQotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgcHJpbnQgIlVuYWJsZSB0byBjb2xsZWN0IGhvc3RzLCBubyBob3N0LXZucy1pbnRlcmZhY2UgaG9zdCB2YWxpZGF0aW9uIgotICAgICAgICAgICAgZXJyb3IgPSBOb25lCi0gICAgICAgIAotICAgICAgICAjIGNvbGxlY3Qgdm5zLWludGVyZmFjZXMKLSAgICAgICAgdm5zX2ludGVyZmFjZV9pZHMgPSBOb25lCi0gICAgICAgIHZuc19pbnRlcmZhY2Vfa2V5ID0gc2VsZi5vYmpfa2V5c1sidm5zLWludGVyZmFjZSJdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHZuc19pbnRlcmZhY2VfdGFibGUgPSBzZWxmLnN0b3JlLmdldF90YWJsZV9mcm9tX3N0b3JlKCJ2bnMtaW50ZXJmYWNlIikKLSAgICAgICAgICAgIHZuc19pbnRlcmZhY2VfaWRzID0gW3hbdm5zX2ludGVyZmFjZV9rZXldIGZvciB4IGluIHZuc19pbnRlcmZhY2VfdGFibGVdCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvciA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUpCi0gICAgICAgICAgICBwcmludCBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9yKQotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgcHJpbnQgIlVuYWJsZSB0byBjb2xsZWN0IHZucy1pbnRlcmZhY2VzLCBubyBob3N0LXZucy1pbnRlcmZhY2UgdmFsaWRhdGlvbiBmb3Igdm5zLWludGVyZmFjZXMiCi0gICAgICAgICAgICBlcnJvciA9IE5vbmUKLQotICAgICAgICAjIGNvbGxlY3QgaG9zdC12bnMtaW50ZXJmYWNlCi0gICAgICAgIGhvc3Rfdm5zX2ludGVyZmFjZV9pZHMgPSBOb25lCi0gICAgICAgIGhvc3Rfdm5zX2ludGVyZmFjZV9rZXkgPSBzZWxmLm9ial9rZXlzWyJob3N0LXZucy1pbnRlcmZhY2UiXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBob3N0X3Zuc19pbnRlcmZhY2VfdGFibGUgPSBzZWxmLnN0b3JlLmdldF90YWJsZV9mcm9tX3N0b3JlKCJob3N0LXZucy1pbnRlcmZhY2UiKQotICAgICAgICAgICAgaG9zdF92bnNfaW50ZXJmYWNlX2lkcyA9IFt4W2hvc3Rfdm5zX2ludGVyZmFjZV9rZXldIGZvciB4IGluIGhvc3Rfdm5zX2ludGVyZmFjZV90YWJsZV0KLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGVycm9yID0gc2VsZi5yZXN0X2Vycm9yX3RvX2RpY3QoZSkKLSAgICAgICAgICAgIHByaW50IHNlbGYucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3IpCi0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgaWYgZXJyb3I6Ci0gICAgICAgICAgICBwcmludCAiVW5hYmxlIHRvIGNvbGxlY3QgaG9zdC12bnMtaW50ZXJmYWNlIgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbGVuKGhvc3Rfdm5zX2ludGVyZmFjZV90YWJsZSkgPT0gMDoKLSAgICAgICAgICAgIHByaW50ICJob3N0X3Zuc19pbnRlcmZhY2VfdGFibGUgZW1wdHkiCi0gICAgCi0gICAgICAgIGhvc3Rfdm5zX2ludGVyZmFjZV9pZCA9IHNlbGYub2JqX2tleXNbJ2hvc3Qtdm5zLWludGVyZmFjZSddCi0gICAgICAgIGZvciBob3N0X3Zuc19pbnRlcmZhY2UgaW4gaG9zdF92bnNfaW50ZXJmYWNlX3RhYmxlOgotICAgICAgICAgICAgaWYgbm90IGhvc3Rfdm5zX2ludGVyZmFjZV9pZCBpbiBob3N0X3Zuc19pbnRlcmZhY2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgImhvc3Rfdm5zX2ludGVyZmFjZSBubyBwcmltYXJ5IGtleSIKLSAgICAgICAgICAgIHRoaXNfaG9zdF92bnNfaW50ZXJmYWNlX2lkID0gaG9zdF92bnNfaW50ZXJmYWNlW2hvc3Rfdm5zX2ludGVyZmFjZV9pZF0KLSAgICAgICAgICAgIGlmIG5vdCAnaG9zdCcgaW4gaG9zdF92bnNfaW50ZXJmYWNlOgotICAgICAgICAgICAgICAgIHByaW50ICJob3N0X3Zuc19pbnRlcmZhY2UgJXMgbm8gaG9zdCBmb3JlaWduIGtleSIgJSB0aGlzX2hvc3Rfdm5zX2ludGVyZmFjZV9pZAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBob3N0X2ZvcmVpZ25fa2V5ID0gaG9zdF92bnNfaW50ZXJmYWNlWydob3N0J10KLSAgICAgICAgICAgICAgICBpZiBub3QgaG9zdF9mb3JlaWduX2tleSBpbiBob3N0X2lkczoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgImhvc3Rfdm5zX2ludGVyZmFjZSAlcyBmb3JlaWduIGtleSAlcyByZWZlcmVuY2VzIG1pc3NpbmcgaG9zdCIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAodGhpc19ob3N0X3Zuc19pbnRlcmZhY2VfaWQsIGhvc3RfZm9yZWlnbl9rZXkpCi0KLSAgICAgICAgICAgIGlmIG5vdCAnaW50ZXJmYWNlJyBpbiBob3N0X3Zuc19pbnRlcmZhY2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgImhvc3Rfdm5zX2ludGVyZmFjZSAlcyBubyB2bnMtaW50ZXJmYWNlIGZvcmVpZ24ga2V5ICVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzX2hvc3Rfdm5zX2ludGVyZmFjZV9pZCwgZm9yZWlnbl9rZXkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGludGVyZmFjZV9mb3JlaWduX2tleSA9IGhvc3Rfdm5zX2ludGVyZmFjZVsnaW50ZXJmYWNlJ10KLSAgICAgICAgICAgICAgICBpZiBub3QgaW50ZXJmYWNlX2ZvcmVpZ25fa2V5IGluIHZuc19pbnRlcmZhY2VfaWRzOgotICAgICAgICAgICAgICAgICAgICBwcmludCAiaG9zdF92bnNfaW50ZXJmYWNlICVzIGZvcmVpZ24ga2V5ICVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzX2hvc3Rfdm5zX2ludGVyZmFjZSwgaW50ZXJmYWNlX2ZvcmVpZ25fa2V5KQotCi0gICAgICAgICAgICBwYXJ0cyA9IHRoaXNfaG9zdF92bnNfaW50ZXJmYWNlX2lkLnNwbGl0KCJ8IikKLSAgICAgICAgICAgIGlmIGxlbihwYXJ0cykgIT0gMzoKLSAgICAgICAgICAgICAgICBwcmludCAiaG9zdF92bnNfaW50ZXJmYWNlX2lkICVkIG5lZWRzIHRvIGJlIHRocmVlIGZpZWxkcyBzcGxpdCBieSAnfCciCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIHBhcnRzWzBdICE9IGhvc3RfZm9yZWlnbl9rZXk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICJob3N0X3Zuc19pbnRlcmZhY2UgJXMgcmVsYXRlZCBob3N0IGZvcmVpZ24ga2V5ICVzIGlzbid0IHBhcnQgb2YgaWQiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXNfaG9zdF92bnNfaW50ZXJmYWNlLCBob3N0X2ZvcmVpZ25fa2V5KQotICAgICAgICAgICAgICAgICMgdGhlIGludGVyZmFjZV9mb3JlaWduX2tleSBzaG91bGQgaGF2ZSB0d28gcGFydHMuCi0gICAgICAgICAgICAgICAgaW50ZXJmYWNlX3BhcnRzID0gaW50ZXJmYWNlX2ZvcmVpZ25fa2V5LnNwbGl0KCd8JykKLSAgICAgICAgICAgICAgICBpZiBsZW4oaW50ZXJmYWNlX3BhcnRzKSAhPSAyOgotICAgICAgICAgICAgICAgICAgICBwcmludCAiaG9zdF92bnNfaW50ZXJmYWNlICVzIHJlbGF0ZWQgdm5zLWludGVyZmFjZSBmb3JlaWduIGtleSAlcyAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWRzIHRvIGJlIHR3byB3b3JkcyBzcGxpdCBieSAnfCciICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpc19ob3N0X3Zuc19pbnRlcmZhY2VfaWQsIGludGVyZmFjZV9mb3JlaWduX2tleSkKLSAgICAgICAgICAgICAgICBlbGlmIGludGVyZmFjZV9wYXJ0c1swXSAhPSBwYXJ0c1sxXToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgImhvc3Rfdm5zX2ludGVyZmFjZSAlcyByZWxhdGVkIHZuc19pbnRlcmZhY2UgZm9yZWlnbiBrZXkgJXMgIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJkb2Vzbid0IG1hdGNoIGhvc3QgaWQgcGFydCAlcyIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzX2hvc3Rfdm5zX2ludGVyZmFjZSwgaW50ZXJmYWNlX3BhcnRbMF0sIHBhcnRzWzFdKQotICAgICAgICAgICAgICAgIGVsaWYgaW50ZXJmYWNlX3BhcnRzWzFdICE9IHBhcnRzWzJdOgotICAgICAgICAgICAgICAgICAgICBwcmludCAiaG9zdF92bnNfaW50ZXJmYWNlICVzIHJlbGF0ZWQgdm5zX2ludGVyZmFjZSBmb3JlaWduIGtleSAlcyAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXNuJ3QgbWF0Y2ggaW50ZXJmYWNlIGxvbmcgbmFtZSBwYXJ0ICVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXNfaG9zdF92bnNfaW50ZXJmYWNlLCBpbnRlcmZhY2VfcGFydFsxXSwgcGFydHNbMl0pCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgdmFsaWRhdGVfdm5zX2ludGVyZmFjZQotICAgICMKLSAgICBkZWYgdmFsaWRhdGVfdm5zX2ludGVyZmFjZShzZWxmKToKLSAgICAgICAgcHJpbnQgInZucy1pbnRlcmZhY2UiCi0KLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyB2YWxpZGF0ZV92bnNfaW50ZXJmYWNlX3J1bGUKLSAgICAjCi0gICAgIyAtIGlkIGV4aXN0cywgCi0gICAgIyAtIGVhY2ggcm93IGhhcyBhIGZvcmVpZ24ga2V5Ci0gICAgIyAtIGVhY2ggZm9yZWlnbiBrZXkgZXhpc3RzCi0gICAgIyAtIHRoZSBpZCwgd2hpY2ggaXMgYSBjb25jYXRlbmF0aW9uIG9mIHZucyBuYW1lIGFuZCByb3cgaWQsIGhhcyB0aGUgY29ycmVjdCBmb3JlaWduIGtleQotICAgICMKLSAgICBkZWYgdmFsaWRhdGVfdm5zX2ludGVyZmFjZV9ydWxlKHNlbGYpOgotICAgICAgICBwcmludCAidm5zX2ludGVyZmFjZV9ydWxlIgotCi0gICAgICAgIGVycm9yID0gTm9uZQotICAgICAgICAjIGNvbGxlY3Qga25vd24gdm5zJ3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdm5zX3RhYmxlID0gc2VsZi5zdG9yZS5nZXRfdGFibGVfZnJvbV9zdG9yZSgidm5zLWRlZmluaXRpb24iKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgZXJyb3IgPSBzZWxmLnJlc3RfZXJyb3JfdG9fZGljdChlKQotICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiBlcnJvcjoKLSAgICAgICAgICAgIHByaW50ICJVbmFibGUgdG8gY29sbGVjdCB2bnMtZGVmaW5pdGlvbiIKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgY29sbGVjdCBrbm93biBzd2l0Y2hlcwotICAgICAgICBzd2l0Y2hfaWRzID0gTm9uZQotICAgICAgICBzd2l0Y2hfa2V5ID0gc2VsZi5vYmpfa2V5c1sic3dpdGNoIl0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3dpdGNoX3RhYmxlID0gc2VsZi5zdG9yZS5nZXRfdGFibGVfZnJvbV9zdG9yZSgic3dpdGNoIikKLSAgICAgICAgICAgIHN3aXRjaF9pZHMgPSBbeFtzd2l0Y2hfa2V5XSBmb3IgeCBpbiBzd2l0Y2hfdGFibGVdCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvciA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUpCi0gICAgICAgICAgICBwcmludCBzZWxmLnJlc3RfZXJyb3JfZGljdF90b19tZXNzYWdlKGVycm9yKQotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgcHJpbnQgIlVuYWJsZSB0byBjb2xsZWN0IHN3aXRjaCwgbm8gc3dpdGNoIGRwaWQgdmFsaWRhdGlvbiBmb3Igdm5zIHJ1bGVzIgotICAgICAgICAgICAgZXJyb3IgPSBOb25lCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdm5zX2ludGVyZmFjZV9ydWxlc190YWJsZSA9IHNlbGYuc3RvcmUuZ2V0X3RhYmxlX2Zyb21fc3RvcmUoInZucy1pbnRlcmZhY2UtcnVsZSIpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBlcnJvciA9IHNlbGYucmVzdF9lcnJvcl90b19kaWN0KGUpCi0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgcHJpbnQgIlVuYWJsZSB0byBjb2xsZWN0IHZucy1pbnRlcmZhY2UtcnVsZSIKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB2bnNfaWQgPSBzZWxmLm9ial9rZXlzWyJ2bnMtaW50ZXJmYWNlLXJ1bGUiXQotCi0gICAgICAgIGZvciBydWxlIGluIHZuc19pbnRlcmZhY2VfcnVsZXNfdGFibGU6Ci0gICAgICAgICAgICBpZiBub3Qgdm5zX2lkIGluIHJ1bGU6Ci0gICAgICAgICAgICAgICAgcHJpbnQgInJ1bGUgaGFzIG1pc3NpbmcgcnVsZSBpZCIKLSAgICAgICAgICAgIHJ1bGVfaWQgPSBydWxlW3Zuc19pZF0KLSAgICAgICAgICAgIHBhcnRzID0gcnVsZV9pZC5zcGxpdCgifCIpCi0gICAgICAgICAgICBpZiBsZW4ocGFydHMpIDwgMjoKLSAgICAgICAgICAgICAgICBwcmludCAicnVsZSAlcyBoYXMgaW52YWxpZCBpZCIgJSBydWxlX2lkCi0gICAgICAgICAgICB2bnNfcGFydCA9IHBhcnRzWzBdCi0gICAgICAgICAgICBpZiBub3QgJ3ZucycgaW4gcnVsZToKLSAgICAgICAgICAgICAgICBwcmludCAicnVsZSAlcyBoYXMgbWlzc2luZyB2bnMgZm9yZWlnbiBrZXkiICUgcnVsZV9pZAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBydWxlWyd2bnMnXSAhPSB2bnNfcGFydDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgInJ1bGUgJXMgaGFzIGluY29uc2lzdGVudCB2bnMgZm9yZWlnbiBrZXk6ICVzIiAlIChydWxlX2lkLCBydWxlWyd2bnMnXSkKLSAgICAgICAgICAgIGlmICdwb3J0cycgaW4gcnVsZSBhbmQgbm90ICdzd2l0Y2gnIGluIHJ1bGU6Ci0gICAgICAgICAgICAgICAgcHJpbnQgInJ1bGUgJXMgaGFzIGEgcG9ydHMgZmllbGQgcG9wdWxhdGVkIGJ1dCBubyBzd2l0Y2giICUgcnVsZV9pZAotICAgICAgICAgICAgZWxpZiAnc3dpdGNoJyBpbiBydWxlIGFuZCBub3QgJ3BvcnRzJyBpbiBydWxlOgotICAgICAgICAgICAgICAgIHByaW50ICJydWxlICVzIGhhcyBhIHN3aXRjaCBmaWVsZCBwb3B1bGF0ZWQgYnV0IG5vIHN3aXRjaCIgJSBydWxlX2lkCi0gICAgICAgICAgICBpZiAnc3dpdGNoJyBpbiBydWxlIGFuZCBub3QgcnVsZVsnc3dpdGNoJ10gaW4gc3dpdGNoX2lkczoKLSAgICAgICAgICAgICAgICBwcmludCAicnVsZSAlcyBoYXMgYW4gdW5rbm93biBzd2l0Y2ggZHBpZCAlcyIgJSAocnVsZV9pZCwgcnVsZVsnc3dpdGNoJ10pCi0gICAgICAgICAgICAgICAgCi0KLSAgICAjCi0gICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgdmFsaWRhdGUKLSAgICAjCi0gICAgZGVmIHZhbGlkYXRlKHNlbGYpOgotICAgICAgICBwcmludCAic3RvcmUgdmFsaWRhdGlvbiIKLQotICAgICAgICB0YWJsZXMgPSBzZWxmLm9ial90eXBlX2luZm9fZGljdC5rZXlzKCkKLSAgICAgICAgZm9yIHRhYmxlIGluIHRhYmxlczoKLSAgICAgICAgICAgIG1ldGhvZCA9IHNlbGYubWV0aG9kX2Zyb21fbmFtZSh0YWJsZSkKLSAgICAgICAgICAgIGlmIG1ldGhvZDoKLSAgICAgICAgICAgICAgICBtZXRob2QoKQotICAgICAgICAgICAgCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgSW5pdGlhbGl6YXRpb24gY3JhenluZXNzIHRvIG1ha2UgaXQgd29yayBhY3Jvc3MgcGxhdGZvcm1zLiBNYW55IHBsYXRmb3JtcyBkb24ndCBpbmNsdWRlCi0jIEdOVSByZWFkbGluZSAoZS5nLiBtYWMgb3MgeCkgYW5kIHdlIG5lZWQgdG8gY29tcGVuc2F0ZSBmb3IgdGhpcwotCi1pbXBvcnQgc3lzCi10cnk6Ci0gICAgaW1wb3J0IHJlYWRsaW5lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgcHlyZWFkbGluZSBhcyByZWFkbGluZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcHJpbnQgIkNhbid0IGZpbmQgYW55IHJlYWRsaW5lIGVxdWl2YWxlbnQgLSBhYm9ydGluZy4iCi1lbHNlOgotICAgIGltcG9ydCBybGNvbXBsZXRlcgotICAgIGlmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyk6Ci0gICAgICAgICMgbmVlZGVkIGZvciBNYWMsIHBsZWFzZSBmaXggQXBwbGUKLSAgICAgICAgcmVhZGxpbmUucGFyc2VfYW5kX2JpbmQgKCJiaW5kIF5JIHJsX2NvbXBsZXRlIikKLSAgICBlbHNlOgotICAgICAgICByZWFkbGluZS5wYXJzZV9hbmRfYmluZCgidGFiOiBjb21wbGV0ZSIpCi0gICAgICAgIHJlYWRsaW5lLnBhcnNlX2FuZF9iaW5kKCI/OiBwb3NzaWJsZS1jb21wbGV0aW9ucyIpCi0KLSAgCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFJ1biB0aGUgc2hlbGwKLSAKLWRlZiBtYWluKCk6Ci0gICAgIyBVbmNvbW1lbnQgdGhlIG5leHQgdHdvIGxpbmVzIHRvIGVuYWJsZSByZW1vdGUgZGVidWdnaW5nIHdpdGggUHlEZXYKLSAgICAjaW1wb3J0IHB5ZGV2ZAotICAgICNweWRldmQuc2V0dHJhY2UoKQotICAgIHZhbGlkYXRlID0gVmFsaWRhdGUoKQotICAgIHZhbGlkYXRlLmluaXQoKQotICAgIHZhbGlkYXRlLnZhbGlkYXRlKCkgICAgICAgICAgICAgIAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS90cmFjZS5weSBiL2NsaS9jbGkvdHJhY2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGE0NTZmODMuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS90cmFjZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMSwyMDEyIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLQotZnJvbSBzeXMgaW1wb3J0IHN0ZGVycgotZnJvbSByZSBpbXBvcnQgY29tcGlsZSwgbWF0Y2gsIHNlYXJjaAotZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAotZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRSwgU1RET1VUCi0KLWltcG9ydCBzb2NrZXQsIGZjbnRsLCBzdHJ1Y3QKLWRlZiBnZXRfaXBhZGRyKGlmbmFtZSk6Ci0gICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQotICAgIGlwYWRkciA9IGZjbnRsLmlvY3RsKHMuZmlsZW5vKCksIDB4ODkxNSwgc3RydWN0LnBhY2soJzI1NnMnLCBpZm5hbWVbOjE1XSkpICAjIFNJT0NHSUZBRERSCi0gICAgcmV0dXJuIHNvY2tldC5pbmV0X250b2EoaXBhZGRyWzIwOjI0XSkKLQotaW1wb3J0IHVybGxpYiwganNvbgotZGVmIGdldF9hbGlhc2VzKGNvbnRyb2xsZXI9J2xvY2FsaG9zdCcsIGNvbnRyb2xsZXJfcG9ydD02NjMzLCBpZm5hbWU9J2V0aDAnKToKLSAgICB1cmwgPSAiaHR0cDovLyVzL3Jlc3QvdjEvbW9kZWwvc3dpdGNoLyIgJSBjb250cm9sbGVyCi0gICAgYWxpYXNlcyA9IHtnZXRfaXBhZGRyKGlmbmFtZSkrJzolZCclY29udHJvbGxlcl9wb3J0OiAnY29udHJvbGxlcid9Ci0gICAgZm9yIHN3aXRjaCBpbiBqc29uLmxvYWRzKHVybGxpYi51cmxvcGVuKHVybCkucmVhZCgpKToKLSAgICAgICAgc29ja2V0YWRkciA9IHN3aXRjaC5nZXQoJ3NvY2tldC1hZGRyZXNzJykKLSAgICAgICAgaWYgc29ja2V0YWRkcjoKLSAgICAgICAgICAgIHNvY2tldGFkZHIgPSBzb2NrZXRhZGRyWzE6XQotICAgICAgICBhbGlhcyA9IHN3aXRjaC5nZXQoJ2FsaWFzJykKLSAgICAgICAgaWYgbm90IGFsaWFzOgotICAgICAgICAgICAgYWxpYXMgPSBzd2l0Y2guZ2V0KCdkcGlkJykKLSAgICAgICAgYWxpYXNlc1tzb2NrZXRhZGRyXSA9IGFsaWFzCi0gICAgcmV0dXJuIGFsaWFzZXMKLQotREVCVUc9RmFsc2UKLQotY2xhc3MgT3BlbkZsb3dUcmFjZXIob2JqZWN0KToKLSAgICAjIEZvcm1hdHMKLSAgICBTVU1NQVJZID0gInN1bW1hcnkiCi0gICAgREVUQUlMID0gImRldGFpbCIKLSAgICBPTkVMSU5FID0gIm9uZWxpbmUiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnX2ZpbHRlcnM9Tm9uZSwgdGNwZHVtcF9maWx0ZXI9JycsIGZtdD1TVU1NQVJZLCBhbGlhcz1GYWxzZSwgcHJpbnRlcj1Ob25lKToKLSAgICAgICAgc2VsZi5tc2dfZmlsdGVycyA9IG1zZ19maWx0ZXJzCi0gICAgICAgIHNlbGYudGNwZHVtcF9maWx0ZXIgPSB0Y3BkdW1wX2ZpbHRlcgotICAgICAgICBzZWxmLmRldGFpbCA9IChmbXQgIT0gc2VsZi5TVU1NQVJZKQotICAgICAgICBzZWxmLm9uZWxpbmUgPSAoZm10ID09IHNlbGYuT05FTElORSkKLSAgICAgICAgc2VsZi5wcmludGVyID0gc2VsZi5wcm4KLSAgICAgICAgaWYgcHJpbnRlcjoKLSAgICAgICAgICAgIHNlbGYucHJpbnRlciA9IHByaW50ZXIKLQotICAgICAgICBzZWxmLnBrdCA9IGRlZmF1bHRkaWN0KHN0cikKLSAgICAgICAgc2VsZi5yZWFkaW5nX2RldGFpbCA9IEZhbHNlCi0gICAgICAgIHNlbGYuYWxpYXMgPSBhbGlhcwotICAgICAgICBzZWxmLmFsaWFzZXMgPSBOb25lCi0gICAgICAgIGlmIHNlbGYuYWxpYXM6Ci0gICAgICAgICAgICBzZWxmLmFsaWFzZXMgPSBnZXRfYWxpYXNlcygpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBzZWxmLnRjcGR1bXBfdHJhY2Uoc2VsZi50Y3BkdW1wX29wZW4oKSkKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIGZpbHRlciBwYWNrZXRzCi0gICAgZGVmIGZpbHRlcihzZWxmKToKLSAgICAgICAgbXNnX3R5cGUgPSAgc2VsZi5wa3RbJ29mLW1zZyddCi0gICAgICAgIGlmIG5vdCBtc2dfdHlwZToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLm1zZ19maWx0ZXJzOgotICAgICAgICAgICAgcmV0dXJuIGFueShtYXAobGFtYmRhIHBhdHRlcm46IHNlYXJjaChwYXR0ZXJuLCBtc2dfdHlwZSksIHNlbGYubXNnX2ZpbHRlcnMpKQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBmb3JtYXQgcGFja2V0IG91dHB1dAotICAgIGRlZiBmbXQoc2VsZik6Ci0gICAgICAgIHBrdCA9IHNlbGYucGt0Ci0gICAgICAgIHNlcCA9ICdcbiAgICAnCi0gICAgICAgIGlmIHNlbGYub25lbGluZTogc2VwID0gJywgJwotCi0gICAgICAgIHNyYyA9ICclczolcycgJSAocGt0WydzcmMtaXAnXSwgcGt0WydzcmMtcG9ydCddKQotICAgICAgICBkc3QgPSAnJXM6JXMnICUgKHBrdFsnZHN0LWlwJ10sIHBrdFsnZHN0LXBvcnQnXSkKLSAgICAgICAgaWYgc2VsZi5hbGlhczoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmFsaWFzZXMuZ2V0KHNyYykgb3Igbm90IHNlbGYuYWxpYXNlcy5nZXQoZHN0KToKLSAgICAgICAgICAgICAgICBzZWxmLmFsaWFzZXMgPSBnZXRfYWxpYXNlcygpCi0gICAgICAgICAgICBzcmMgPSBzZWxmLmFsaWFzZXMuZ2V0KHNyYywgc3JjKQotICAgICAgICAgICAgZHN0ID0gc2VsZi5hbGlhc2VzLmdldChkc3QsIGRzdCkKLQotICAgICAgICByZXQgPSAnJS0xOHMgJS0xOHMgWyAlcyAtPiAlcyBdJyAlICgKLSAgICAgICAgICAgIHBrdFsndGltZXN0YW1wJ10sIHBrdFsnb2YtbXNnJ10sIHNyYywgZHN0KQotICAgICAgICBpZiBzZWxmLmRldGFpbCBhbmQgcGt0WydvZi1kYXRhJ106Ci0gICAgICAgICAgICBmb3IgZGF0YSBpbiBwa3RbJ29mLWRhdGEnXS5zcGxpdCgnLCcpOgotICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAgICAgICAgICByZXQgKz0gKHNlcCArIGRhdGEpCi0gICAgICAgIHJldHVybiByZXQKLQotICAgIGRlZiBwcm4oc2VsZiwgeCk6Ci0gICAgICAgIHByaW50IHgKLQotICAgIGRlZiB0Y3BkdW1wX29wZW4oc2VsZik6Ci0gICAgICAgIHRjcGR1bXBfY21kID0gJ3N1ZG8gL3Vzci9sb2NhbC9zYmluL3RjcGR1bXAgLWkgYW55IFwnJXNcJyAlcycKLSAgICAgICAgdGNwZHVtcF9hcmdzID0gJy1sIC1ubiAtdnYnCi0gICAgICAgIHNlbGYucHJvY2VzcyA9IFBvcGVuKHRjcGR1bXBfY21kICUgKHNlbGYudGNwZHVtcF9maWx0ZXIsIHRjcGR1bXBfYXJncyksCi0gICAgICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlLCBidWZzaXplPTEsIHN0ZG91dD1QSVBFLCBzdGRlcnI9U1RET1VUKQotICAgICAgICByZXR1cm4gc2VsZi5wcm9jZXNzLnN0ZG91dAotCi0gICAgZGVmIHRjcGR1bXBfdHJhY2Uoc2VsZiwgZmQpOgotICAgICAgICAjIHRjcGR1bXAgZGVjb2RlciBwYXR0ZXJucwotICAgICAgICBlbXB0eV9saW5lID0gY29tcGlsZSgnXiQnKQotICAgICAgICB0Y3BkdW1wX2xpbmUgPSBjb21waWxlKCdedGNwZHVtcC4qJCcpCi0gICAgICAgIGlwX2xpbmUgPSBjb21waWxlKCdeKFxkezJ9XDpcZHsyfTpcZHsyfVwuXGQrKSBJUCAuKiQnKQotICAgICAgICB0Y3BfbGluZSA9IGNvbXBpbGUoJ15ccyooXGQrXC5cZCtcLlxkK1wuXGQrKVwuKFxkKykgXD4gKFxkK1wuXGQrXC5cZCtcLlxkKylcLihcZCspXDouKmxlbmd0aCBcZCsoLiopJCcpCi0gICAgICAgIG9mX2hkciA9IGNvbXBpbGUoJ14oW14gXSopIFwoeGlkXD0oW15cKV0qKVwpXDooLiopJCcpCi0gICAgICAgIG9mX2xpbmUgPSBjb21waWxlKCdeKC4qaW5fcG9ydFw9LiopJCcpCi0gICAgICAgIGlmX2NvbnRfbGluZSA9IGNvbXBpbGUoJ15ccytjdXJyZW50XDonKQotICAgICAgICBpbmxpbmVfZXJyID0gY29tcGlsZSgnXlxzKlwoXCpcKlwqLiokJykKLSAgICAgICAgcGt0X2NvdW50ID0gY29tcGlsZSgnXlxkKyBwYWNrZXRzICcpCi0KLSAgICAgICAgIyBoZWxwZXIgZm4KLSAgICAgICAgZGVmIG9mX2RhdGEocGt0LCBkYXRhKToKLSAgICAgICAgICAgIGlmIHBrdFsnb2YtbXNnJ10gPT0gJ3BhY2tldF9vdXQnOgotICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoJyAnLCAnLCcpCi0gICAgICAgICAgICBwa3RbJ29mLWRhdGEnXSArPSAoJywnICsgZGF0YSkKLQotICAgICAgICAjIGRlY29kZSBwYWNrZXQgZGF0YQotICAgICAgICBsaW5lID0gZmQucmVhZGxpbmUoKQotICAgICAgICB3aGlsZSBsaW5lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBwa3QgPSBzZWxmLnBrdAotICAgICAgICAgICAgICAgIGlmIGVtcHR5X2xpbmUubWF0Y2gobGluZSk6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbGlmIHBrdF9jb3VudC5tYXRjaChsaW5lKToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQ+PnN0ZGVyciwgbGluZQotICAgICAgICAgICAgICAgIGVsaWYgdGNwZHVtcF9saW5lLm1hdGNoKGxpbmUpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxpZiBpcF9saW5lLm1hdGNoKGxpbmUpOgotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmZpbHRlcigpOiBzZWxmLnByaW50ZXIoc2VsZi5mbXQoKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wa3QgPSBkZWZhdWx0ZGljdChzdHIpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVhZGluZ19kZXRhaWwgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICBwa3QgPSBzZWxmLnBrdAotICAgICAgICAgICAgICAgICAgICBwa3RbJ3RpbWVzdGFtcCddID0gaXBfbGluZS5tYXRjaChsaW5lKS5ncm91cHMoKVswXQotICAgICAgICAgICAgICAgIGVsaWYgdGNwX2xpbmUubWF0Y2gobGluZSk6Ci0gICAgICAgICAgICAgICAgICAgIG0gPSAgdGNwX2xpbmUubWF0Y2gobGluZSkuZ3JvdXBzKCkKLSAgICAgICAgICAgICAgICAgICAgcGt0WydzcmMtaXAnXSA9IG1bMF0KLSAgICAgICAgICAgICAgICAgICAgcGt0WydzcmMtcG9ydCddID0gbVsxXQotICAgICAgICAgICAgICAgICAgICBwa3RbJ2RzdC1pcCddID0gbVsyXQotICAgICAgICAgICAgICAgICAgICBwa3RbJ2RzdC1wb3J0J10gPSBtWzNdCi0gICAgICAgICAgICAgICAgICAgIGlmIG9mX2hkci5tYXRjaChtWzRdKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVhZGluZ19kZXRhaWwgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBtID0gb2ZfaGRyLm1hdGNoKG1bNF0pLmdyb3VwcygpCi0gICAgICAgICAgICAgICAgICAgICAgICBwa3RbJ29mLW1zZyddID0gbVswXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBwa3RbJ29mLXhpZCddID0gbVsxXQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG1bMl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbmxpbmVfZXJyLm1hdGNoKG1bMl0pOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mX2RhdGEocGt0LCBkYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBERUJVRzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQ+PnN0ZGVyciwgJ0lubGluZSBFcnJvcicsIGRhdGEKLSAgICAgICAgICAgICAgICBlbGlmIG9mX2xpbmUubWF0Y2gobGluZSk6Ci0gICAgICAgICAgICAgICAgICAgIG9mX2RhdGEocGt0LCBvZl9saW5lLm1hdGNoKGxpbmUpLmdyb3VwcygpWzBdKQotICAgICAgICAgICAgICAgIGVsaWYgaWZfY29udF9saW5lLm1hdGNoKGxpbmUpOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCcsJywgJzsgJykKLSAgICAgICAgICAgICAgICAgICAgb2ZfZGF0YShwa3QsICc7ICcrbGluZSkKLSAgICAgICAgICAgICAgICBlbGlmIHNlbGYucmVhZGluZ19kZXRhaWw6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJywnLCAnOyAnKQotICAgICAgICAgICAgICAgICAgICBvZl9kYXRhKHBrdCwgbGluZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBERUJVRzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Pj5zdGRlcnIsICdVbmV4cGVjdGVkOiBMaW5lJywgbGluZQotICAgICAgICAgICAgICAgIGxpbmUgPSBmZC5yZWFkbGluZSgpCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgcHJpbnQKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnByb2Nlc3M6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzcy50ZXJtaW5hdGUoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3MgPSBOb25lCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotZGVmIG1haW4oKToKLSAgICB1c2FnZSA9ICJ1c2FnZTogJXByb2cgWy0tZGV0YWlsXSBbLS1vbmVsaW5lXSBbLS1maWx0ZXIgPHRjcGR1bXAtZmlsdGVyPl0gWzxtc2ctdHlwZT4gLi4uXSIKLSAgICBvcHRwYXJzZXIgPSBPcHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCi0gICAgb3B0cGFyc2VyLmFkZF9vcHRpb24oIi1mIiwgIi0tZmlsdGVyIiwgZGVzdD0idGNwZHVtcF9maWx0ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBkZWZhdWx0PScoKHRjcCkgYW5kIChwb3J0IDY2MzMpKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0idGNwZHVtcCBmaWx0ZXIgcnVsZSIsIG1ldGF2YXI9IkZJTFRFUiIpCi0gICAgb3B0cGFyc2VyLmFkZF9vcHRpb24oIi1kIiwgIi0tZGV0YWlsIiwgZGVzdD0iZGV0YWlsIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InByaW50IG1lc3NhZ2UgZGV0YWlsIikKLSAgICBvcHRwYXJzZXIuYWRkX29wdGlvbigiLW8iLCAiLS1vbmVsaW5lIiwgZGVzdD0ib25lbGluZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwcmludCBtZXNzYWdlIGRldGFpbCBvbiBvbmUgbGluZSIpCi0gICAgb3B0cGFyc2VyLmFkZF9vcHRpb24oIi1hIiwgIi0tYWxpYXMiLCBkZXN0PSJhbGlhcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJxdWVyeSBjb250cm9sbGVyIHRvIHJlc29sdmUgYWRkcmVzcyB0byBzd2l0Y2gtZHBpZC9hbGlhcyIpCi0gICAgKG9wdGlvbnMsIG1zZ19maWx0ZXJzKSA9IG9wdHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIHRyeToKLSAgICAgICAgcHJpbnQgJ1N0YXJ0aW5nIG9wZW5mbG93IHRyYWNlLCB1c2UgXkMgdG8gcXVpdCcKLSAgICAgICAgZm10ID0gT3BlbkZsb3dUcmFjZXIuU1VNTUFSWQotICAgICAgICBpZiBvcHRpb25zLmRldGFpbDogIGZtdCA9IE9wZW5GbG93VHJhY2VyLkRFVEFJTAotICAgICAgICBpZiBvcHRpb25zLm9uZWxpbmU6ICBmbXQgPSBPcGVuRmxvd1RyYWNlci5PTkVMSU5FCi0gICAgICAgIHRyYWNlciA9IE9wZW5GbG93VHJhY2VyKG1zZ19maWx0ZXJzLCBvcHRpb25zLnRjcGR1bXBfZmlsdGVyLCBmbXQ9Zm10LCBhbGlhcz1vcHRpb25zLmFsaWFzKQotICAgICAgICB0cmFjZXIucnVuKCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHBhc3MKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL2NsaS9jbGkvdXJsX2NhY2hlLnB5IGIvY2xpL2NsaS91cmxfY2FjaGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGFhNTViMjcuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS91cmxfY2FjaGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQganNvbgotaW1wb3J0IHV0aWYKLWltcG9ydCByZQotCi0jCi0jCi0jCi0KLWNhY2hlZF91cmxzID0ge30KLWNhY2hlZF91cmxzX2FnZSA9IHt9Ci1yZWNvcmRfdXJscyA9IE5vbmUKLQotCi1kZWYgY2xlYXJfY2FjaGVkX3VybHMoKToKLSAgICAiIiIKLSAgICBDYWxsZWQgd2hlbiBhbGwgdGhlIHVybCdzIG91Z2h0IHRvIGJlIGRpc2NhcmRlZC4KLQotICAgIFRoaXMgaXMgY3VycmVudGx5IGRvbmUgYXQgZXZlcnkgY29tbWFuZCBzdGFydCB0byByZWNsYWltIGFueSAKLSAgICBtZW1vcnkgcmVzb3VyY2VzLgotCi0gICAgQWxzbyBpc3N1ZWQgd2hlbiBhbnkgdXBkYXRlIG9yIGRlbGV0ZSBpcyBpc3N1ZWQgYWdhaW5zdCB0aGUKLSAgICBkYXRhYmFzZSwgc2luY2UgdGhhdCBtZWFucyBvbmUgb2Ygb3VyIHJlc3VsdHMgbWF5IGJlIGRpZmZlcmVudAotICAgIAotICAgICIiIgotICAgIGdsb2JhbCBjYWNoZWRfdXJscywgY2FjaGVkX3VybHNfYWdlCi0KLSAgICBjYWNoZWRfdXJscyA9IHt9Ci0gICAgY2FjaGVkX3VybHNfYWdlID0ge30KLQotCi1kZWYgcmVzZXRfdXJsKHVybCk6Ci0gICAgIiIiCi0gICAgUmVtb3ZlIGEgdXJsIGZyb20gdGhlIGNhY2hlCi0gICAgIiIiCi0gICAgaWYgdXJsIGluIGNhY2hlZF91cmxzOgotICAgICAgICBkZWwgY2FjaGVkX3VybHNbdXJsXQotICAgICAgICBkZWwgY2FjaGVkX3VybHNfYWdlW3VybF0KLQotCi1kZWYgZ2V0X2NhY2hlZF91cmwodXJsKToKLSAgICAiIiIKLSAgICBTaW1wbGUgY2FjaGUgdG8gbWFuYWdlIG11bHRpcGxlIHVybCByZXF1ZXN0cyBpc3N1ZWQgd2l0aGluIG9uZSBjb21tYW5kIGN5Y2xlCi0gICAgIiIiCi0gICAgaWYgdXJsIGluIGNhY2hlZF91cmxzOgotICAgICAgICAjIGFnZSBkb2Vzbid0IGdldCB1cGRhdGVkIHdoZW4gaXRzIHRvdWNoZWQKLSAgICAgICAgaWYgdXJsIGluIGNhY2hlZF91cmxzX2FnZSBhbmQgXAotICAgICAgICAgIGNhY2hlZF91cmxzX2FnZVt1cmxdICA8IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpOgotICAgICAgICAgICAgIyB0b28gb2xkCi0gICAgICAgICAgICByZXNldF91cmwodXJsKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXR1cm4gY2FjaGVkX3VybHNbdXJsXQotICAgIHJldHVybiBOb25lCi0KLQotZGVmIHJlY29yZChwYXRoKToKLSAgICBnbG9iYWwgcmVjb3JkX3VybHMKLSAgICBpZiBwYXRoID09IE5vbmU6Ci0gICAgICAgIGlmIHJlY29yZF91cmxzOgotICAgICAgICAgICAgcmVjb3JkX3VybHMuY2xvc2UoKQotICAgICAgICByZWNvcmRfdXJscyA9IE5vbmUKLSAgICAgICAgcmV0dXJuCi0gICAgIyBuZWVkIHRvIHZhbGlkYXRlIHBhdGgKLSAgICB0cnk6Ci0gICAgICAgIHJlY29yZF91cmxzID0gb3BlbihwYXRoLCAndycpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgcHJpbnQgJ0Vycm9yOiBjYW5cJ3Qgb3BlbiAlcycgJSBwYXRoCi0KLQotZGVmIHNhdmVfdXJsKHVybCwgZW50cmllcywgYWdlID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgU2F2ZSBhIHVybCBhbmQgdGhlIHJlc3BvbnNlIGluIHRoZSBjYWNoZSwgYXNzb2NpYXRlIGFuIGFnZSB3aXRoIHRoZQotICAgIGVudHJ5LCBjdXJyZW50bHkgdHdvIHNlY29uZHMuCi0gICAgIiIiCi0gICAgY2FjaGVkX3VybHNbdXJsXSA9IGVudHJpZXMKLSAgICBpZiByZWNvcmRfdXJsczoKLSAgICAgICAgaWYgdHlwZShlbnRyaWVzKSA9PSBzdHI6Ci0gICAgICAgICAgICByZWNvcmRfdXJscy53cml0ZSgnUkVTVCAlcyAlcyAlc1xuJyAlCi0gICAgICAgICAgICAgICAgKHVybCwgJ1NUUicsIGVudHJpZXMpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBhc3N1bWUgaXRzIGEgY29tcGxleCB0eXBlCi0gICAgICAgICAgICByZWNvcmRfdXJscy53cml0ZSgnUkVTVCAlcyAlcyAlc1xuJyAlCi0gICAgICAgICAgICAgICAgKHVybCwgJ0pTT04nLCBqc29uLmR1bXBzKGVudHJpZXMpKSkKLQotICAgICMgYWdlIG91dCB0aGUgdXJsIGluIHR3byBzZWNvbmRzCi0gICAgaWYgYWdlID09IE5vbmU6Ci0gICAgICAgIGFnZSA9IDIKLQotICAgIGNhY2hlZF91cmxzX2FnZVt1cmxdID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkgKyBkYXRldGltZS50aW1lZGVsdGEoMCwgYWdlKQotCi0KLWRlZiBjb21tYW5kX2ZpbmlzaGVkKHdvcmRzKToKLSAgICBpZiByZWNvcmRfdXJsczoKLSAgICAgICAgcmVjb3JkX3VybHMud3JpdGUoJ0NPTU1BTkQgIiVzIlxuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcgJy5qb2luKFt1dGlmLnF1b3RlX3N0cmluZyh4KSBmb3IgeCBpbiB3b3Jkc10pKQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS91dGlmLnB5IGIvY2xpL2NsaS91dGlmLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkNzg5NGJjLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvdXRpZi5weQorKysgL2Rldi9udWxsCkBAIC0xLDQxMCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMSwyMDEyLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMKLSMgVVRJbGl0eSBGdW5jdGlvbnMKLSMKLQotaW1wb3J0IHJlCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgaXNfcG93ZXJfb2ZfdHdvKG4pOgotICAgICIiIgotICAgIFJldHVybiB0cnVlIGlmIHRoZSBpbnRlZ2VyIHBhcmFtZXRlciBpcyBhIHBvd2VyIG9mIHR3bwotICAgICIiIgotICAgIGlmIChuICYgKG4gLSAxKSkgPT0gMDoKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4gRmFsc2UKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgdW5pcXVlX2xpc3RfZnJvbV9saXN0KGR1cF9saXN0KToKLSAgICAiIiIKLSAgICBSZXR1cm4gYSBuZXcgbGlzdCBmcm9tIHRoZSBvbGQsIHdoZXJlIHRoZSB0aGUgbmV3IGhhcyBubyByZXBlYXRlZCBpdGVtcy4KLSAgICAodGhlIGl0ZW1zIGFyZSBpbnRlbmRlZCB0byBiZSBzdHJpbmdzKQotICAgICIiIgotICAgIHJldHVybiBkaWN0KFtbeCwgTm9uZV0gZm9yIHggaW4gZHVwX2xpc3RdKS5rZXlzKCkKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgZnVsbF93b3JkX2Zyb21fY2hvaWNlcyh3b3JkLCBhbGxfY2hvaWNlcyk6Ci0gICAgIiIiCi0gICAgZ2l2ZW4gYSBzaW5nbGUgd29yZCwgd2hpY2ggY291bGQgYmUgYSBwcmVmaXggb2YgYSB3b3JkIGluCi0gICAgYSBsaXN0ICh3aGljaCBpcyB0aGUgc2Vjb25kIHBhcmFtZXRlciksIHJldHVybiBhIHNpbmdsZQotICAgIHdvcmQgd2hpY2ggbWF0Y2hlcyBvciBOb25lLCB3aGVuIG5vbiBvciBtb3JlIHRoYW4gb25lIG1hdGNoLgotICAgICIiIgotICAgIGNob2ljZXMgPSBbeCBmb3IgeCBpbiBhbGxfY2hvaWNlcyBpZiB4LnN0YXJ0c3dpdGgod29yZCldCi0gICAgaWYgbGVuKGNob2ljZXMpID09IDE6Ci0gICAgICAgIHJldHVybiBjaG9pY2VzWzBdCi0gICAgaWYgd29yZCBpbiBhbGxfY2hvaWNlczogICAgICAjIGFsc28gYWxsb3cgYW4gZXhhY3QgbWF0Y2gKLSAgICAgICAgcmV0dXJuIHdvcmQKLSAgICByZXR1cm4gTm9uZQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIHRyeV9pbnQoc3RyaW5nKToKLSAgICAiIiIKLSAgICBSZXR1cm4gYW4gaW50ZXJnZXIgaWYgcG9zc2libGUsIG90aGVyd2lzZSBhIHN0cmluZwotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgc3RyX2ludCA9IGludChzdHJpbmcpCi0gICAgICAgIHJldHVybiBzdHJfaW50Ci0gICAgZXhjZXB0OgotICAgICAgICBwYXNzCi0gICAgcmV0dXJuIHN0cmluZwotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBtYXNrX3RvX2NpZHIobWFzayk6Ci0gICAgIiIiCi0gICAgR2l2ZW4gYSBtYXNrIHVzZWQgaW4gQUMncywgZm9yIGVhbXBsZSAwLjAuMC4yNTUsIHJldHVybiB0aGUgY2lkciAvPG4+Ci0gICAgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoYXQgbWFzay4gIFRoZSBtYXNrIG11c3QgYmUgYSBwb3dlciBvZiB0d28gZm9yCi0gICAgdGhlIGNpZHIgdmFsdWUgdG8gYmUgZGlzcGxheWVkCi0gICAgIiIiCi0gICAgaWYgbm90IGlzX3Bvd2VyX29mX3R3byhtYXNrICsgMSk6Ci0gICAgICAgIHJldHVybiAwCi0gICAgbWFzayArPSAxCi0gICAgY2lkciA9IDMzCi0gICAgd2hpbGUgbWFzazoKLSAgICAgICAgY2lkciAtPSAxCi0gICAgICAgIG1hc2sgPj49IDEKLSAgICByZXR1cm4gY2lkcgotCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgaW5ldF9udG9hKG4pOgotICAgICIiIgotICAgIERlZmluYSBhIGxvY2FsIHZhcmlhbnQgd2hpY2ggZXhhY3RseSBtZWV0cyBsb2NhbCBuZWVkcwotICAgICIiIgotICAgIHJldHVybiAiJXMuJXMuJXMuJXMiICUgKCBcCi0gICAgICAgICAgICAobiAmIDB4ZmYwMDAwMDApID4+IDI0LCBcCi0gICAgICAgICAgICAobiAmIDB4MDBmZjAwMDApID4+IDE2LCBcCi0gICAgICAgICAgICAobiAmIDB4MDAwMGZmMDApID4+IDgsIFwKLSAgICAgICAgICAgIChuICYgMHgwMDAwMDBmZikgKQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBpbmV0X2F0b24oaXApOgotICAgICIiIgotICAgIFJldHVybiBhbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGlwIGFkZHJlc3MgcGFzc2VkIGluLgotICAgIEFzc3VtZXMgdGhlIGZpZWxkIGlzIGEgcXVhZC1pbnQKLSAgICAiIiIKLSAgICBmaWVsZHMgPSBpcC5zcGxpdCgnLicpCi0gICAgcmV0dXJuIChpbnQoZmllbGRzWzBdKSA8PCAyNCkgfCBcCi0gICAgICAgICAgIChpbnQoZmllbGRzWzFdKSA8PCAxNikgfCBcCi0gICAgICAgICAgIChpbnQoZmllbGRzWzJdKSA8PCA4KSB8IFwKLSAgICAgICAgICAgKGludChmaWVsZHNbM10pKQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBpcF9hbmRfbWFza19udG9hKGlwLCBtYXNrKToKLSAgICAiIiIKLSAgICBUaGUgdHdvIHZhbHVlcyBhcmUgZGlzcGxheWVkIGVpdGhlciBhcyAnYW55JyBvciBhcyBpbiBjaWRyIGZvcm1hdAotICAgIG9yIGFzIGEgaXAvbWFzayBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIHRoZSBtYXNrLgotICAgIChub3RlIHRoZSBsZWFkaW5nIHNwYWNlKQotICAgICIiIgotICAgIGlmIGlwID09ICcwLjAuMC4wJyBhbmQgbWFzayA9PSAnMjU1LjI1NS4yNTUuMjU1JzoKLSAgICAgICAgcmV0dXJuICdhbnkgJwotICAgIG5fbWFzayA9IGluZXRfYXRvbihtYXNrKQotICAgIGlmIGlzX3Bvd2VyX29mX3R3byhuX21hc2sgKyAxKToKLSAgICAgICAgcmV0dXJuICIlcy8lZCAiICUgKGlwLCBtYXNrX3RvX2NpZHIobl9tYXNrKSkKLSAgICByZXR1cm4gIiVzICVzICIgJSAoaXAsIG1hc2spCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgaXBfaW52ZXJ0X25ldG1hc2sodmFsdWUpOgotICAgIHNwbGl0X2J5dGVzID0gdmFsdWUuc3BsaXQoJy4nKQotICAgIHJldHVybiAiJXMuJXMuJXMuJXMiICUgKDI1NS1pbnQoc3BsaXRfYnl0ZXNbMF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NS1pbnQoc3BsaXRfYnl0ZXNbMV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NS1pbnQoc3BsaXRfYnl0ZXNbMl0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NS1pbnQoc3BsaXRfYnl0ZXNbM10pKQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBpcF9hbmRfbmVnX21hc2soaXAsIG1hc2spOgotICAgICIiIgotICAgIFRoZSB0d28gdmFsdWVzIGFyZSBkaXNwbGF5ZWQgZWl0aGVyIGFzICdhbnknIG9yIGFzIGluIGNpZHIgZm9ybWF0Ci0gICAgb3IgYXMgYSBpcC9tYXNrIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgdGhlIG1hc2suCi0gICAgKG5vdGUgdGhlIGxlYWRpbmcgc3BhY2UpLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBpcF9hbmRfbWFza19udG9hCi0gICAgc2luY2UgdGhlIG1hc2sgbmVlZCB0byBiZSBwcmludGVkIGFuIGFuIGludmVydGVkIG1hc2sgd2hlbiB0aGUKLSAgICBtYXNrIGlzIGRpc3BsYXllZAotICAgICIiIgotICAgIGlmIGlwID09ICcwLjAuMC4wJyBhbmQgbWFzayA9PSAnMjU1LjI1NS4yNTUuMjU1JzoKLSAgICAgICAgcmV0dXJuICdhbnkgJwotICAgIG5fbWFzayA9IGluZXRfYXRvbihtYXNrKQotICAgIGlmIGlzX3Bvd2VyX29mX3R3byhuX21hc2sgKyAxKToKLSAgICAgICAgY2lkciA9IG1hc2tfdG9fY2lkcihuX21hc2spCi0gICAgICAgIGlmIGNpZHI6Ci0gICAgICAgICAgICByZXR1cm4gIiVzLyVkICIgJSAoaXAsIG1hc2tfdG9fY2lkcihuX21hc2spKQotICAgICAgICByZXR1cm4gIiVzICIgJSBpcAotICAgIHJldHVybiAiJXMgJXMgIiAlIChpcCwgaXBfaW52ZXJ0X25ldG1hc2sobWFzaykpCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TSU5HTEVRVU9URV9SRSA9IHJlLmNvbXBpbGUociInIikKLURPVUJMRVFVT1RFX1JFID0gcmUuY29tcGlsZShyJyInKQotV0hJVEVTUEFDRV9SRSA9IHJlLmNvbXBpbGUociJccyIpCi0KLUNPTU1BTkRfRFBJRF9SRSA9IHJlLmNvbXBpbGUocideKChbQS1GYS1mXGRdKXsyfTo/KXs3fVtBLUZhLWZcZF17Mn0kJykKLUNPTU1BTkRfU0VQQVJBVE9SU19SRSA9IHJlLmNvbXBpbGUocidbPjt8XScpICMgWFhYIGJlbG9uZ3MgaW4gc29tZSBnbG9iYWwKLQotCi1kZWYgcXVvdGVfc3RyaW5nKHZhbHVlKToKLSAgICAiIiIKLSAgICBSZXR1cm4gYSBxdW90ZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZW4gdGhlcmUncyBpbWJlZGRlZAotICAgIHNwYWNlcy4gIFdvcnN0IGNhc2UgaXMgd2hlbiB0aGUgc3RyaW5nIGhhcyBib3RoIHNpbmdsZSBhbmQKLSAgICBkb3VibGUgcXVvdGVzLgotICAgICIiIgotCi0gICAgaWYgU0lOR0xFUVVPVEVfUkUuc2VhcmNoKHZhbHVlKToKLSAgICAgICAgaWYgRE9VQkxFUVVPVEVfUkUuc2VhcmNoKHZhbHVlKToKLSAgICAgICAgICAgIG5ld192YWx1ZSA9IFtdCi0gICAgICAgICAgICBmb3IgYyBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICBpZiBjID09ICciJzoKLSAgICAgICAgICAgICAgICAgICAgbmV3X3ZhbHVlLmFwcGVuZCgiXFwiKQotICAgICAgICAgICAgICAgIG5ld192YWx1ZS5hcHBlbmQoYykKLSAgICAgICAgICAgIHJldHVybiAnJy5qb2luKG5ld192YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAnIiVzIicgJSB2YWx1ZQotICAgIGVsaWYgKERPVUJMRVFVT1RFX1JFLnNlYXJjaCh2YWx1ZSkgb3IKLSAgICAgICAgICBXSElURVNQQUNFX1JFLnNlYXJjaCh2YWx1ZSkgb3IKLSAgICAgICAgICBDT01NQU5EX1NFUEFSQVRPUlNfUkUuc2VhcmNoKHZhbHVlKSk6Ci0gICAgICAgIHJldHVybiAiJyVzJyIgJSB2YWx1ZQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiB2YWx1ZQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIGFkZF9kZWxpbShzdHJpbmdzX2xpc3QsIGRlbGltKToKLSAgICAiIiIKLSAgICBBZGQgJ2RlbGltJyB0byBlYWNoIHN0cmluZyBlbnRyeSBpbiB0aGUgbGlzdCwgdHlwaWNhbGx5IHVzZWQgdG8gYWRkIGEgc3BhY2UKLSAgICB0byBjb21wbGV0aW9uIGNob2ljZXMgZm9yIGVudHJpZXMgd2hpY2ggYXJlbid0IHByZWZpeGVzLgotICAgIHdvcmQgbWVhbiBhIAotICAgIAotICAgICIiIgotICAgIHJldHVybiBbc3RyKHgpICsgZGVsaW0gZm9yIHggaW4gc3RyaW5nc19saXN0XQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIGNvbnZlcnRfY2FzZShjYXNlLCB2YWx1ZSk6Ci0gICAgIiIiCi0gICAgQ29udmVydCB2YWx1ZSB0byB0aGUgcmVxdWVzdGVkIGNhc2UKLSAgICAiIiIKLSAgICBpZiBjYXNlID09IE5vbmU6Ci0gICAgICAgIHJldHVybiB2YWx1ZQotICAgIGVsaWYgY2FzZSA9PSAnbG93ZXInOgotICAgICAgICByZXR1cm4gdmFsdWUubG93ZXIoKQotICAgIGVsaWYgY2FzZSA9PSAndXBwZXInOgotICAgICAgICByZXR1cm4gdmFsdWUudXBwZXIoKQotICAgIHJldHVybiB2YWx1ZQotCi0KLVRBSUxfSU5UX1JFID0gcmUuY29tcGlsZShyJ14oLipbXjAtOV0pKFxkKykkJykKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiB0cmFpbGluZ19pbnRlZ2VyX2NtcCh4LHkpOgotICAgICIiIgotICAgIHNvcnRlZCgpIGNvbXBhcmlzb24gZnVuY3Rpb24uCi0KLSAgICBVc2VkIHdoZW4gdGhlIHR3byBrZXlzIG1heSBwb3NzaWJseSBoYXZlIHRyYWlsaW5nIG51bWJlcnMsCi0gICAgaWYgdGhlc2UgYXJlIGNvbXBhcmVkIHVzaW5nIGEgdHlwaWNhbCBzb3J0LCB0aGVuIHRoZSB0cmFpbGluZwotICAgIG51bWJlcnMgd2lsbCBiZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHksIG5vdCBudW1lcmljYWxseS4gIFRoaXMKLSAgICBpcyBtb3N0IG9idmlvdXMgd2hlbiBpbnRlcmZhY2VzLCBmb3IgZXhhbXBsZSBFdGgxLCBFdGgxMCwgRXRoMgotICAgIGFyZSBzb3J0ZWQuICAgQWxwaGFiZXRpY2FsbHkgdGhlIG9yZGVyIGlzIGFzIGFscmVhZHkgc2hvd24sIGJ1dAotICAgIHRoZSBkZXNpcmVkIHNvcnQgb3JkZXIgaXMgRXRoMSwgRXRoMiwgRXRoMTAKLSAgICAiIiIKLQotICAgIGRlZiBsYXN0X2RpZ2l0KHZhbHVlKToKLSAgICAgICAgIyBvbmx5IGludGVyZXN0ZWQgaW4gc2VxdWVuY2VzIHRhaWxpbmcgYSBkaWdpdCwgd2hlcmUKLSAgICAgICAgIyB0aGUgZmlyc3QgY2hhcmN0ZXIgaXNuJ3QgYSBkaWdpdCwgdXNlZCB0byBzaWRlc3RlcCB0YWlsX2ludCByZQotICAgICAgICBpZiBsZW4odmFsdWUpID49IDI6Ci0gICAgICAgICAgICBsYXN0X2NoYXIgPSBvcmQodmFsdWVbLTFdKQotICAgICAgICAgICAgaWYgbGFzdF9jaGFyID49IG9yZCgnMCcpIGFuZCBsYXN0X2NoYXIgPD0gb3JkKCc5Jyk6Ci0gICAgICAgICAgICAgICAgZmlyc3RfY2hhciA9IG9yZCh2YWx1ZVswXSkKLSAgICAgICAgICAgICAgICBpZiBmaXJzdF9jaGFyIDwgb3JkKCcwJykgb3IgZmlyc3RfY2hhciA+IG9yZCgnOScpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGlmIHR5cGUoeCkgPT0gaW50IGFuZCB0eXBlKHkpID09IGludDoKLSAgICAgICAgcmV0dXJuIGNtcCh4LHkpCi0gICAgaWYgbGFzdF9kaWdpdCh4KSBhbmQgbGFzdF9kaWdpdCh5KToKLSAgICAgICAgeF9tID0gVEFJTF9JTlRfUkUubWF0Y2goeCkKLSAgICAgICAgeV9tID0gVEFJTF9JTlRfUkUubWF0Y2goeSkKLSAgICAgICAgYyA9IGNtcCh4X20uZ3JvdXAoMSksIHlfbS5ncm91cCgxKSkKLSAgICAgICAgaWYgYzoKLSAgICAgICAgICAgIHJldHVybiBjCi0gICAgICAgIGMgPSBjbXAoaW50KHhfbS5ncm91cCgyKSksIGludCh5X20uZ3JvdXAoMikpKQotICAgICAgICBpZiBjOgotICAgICAgICAgICAgcmV0dXJuIGMKLSAgICBlbHNlOgotICAgICAgICBjID0gY21wKHRyeV9pbnQoeCksIHRyeV9pbnQoeSkpCi0gICAgICAgIGlmIGMgIT0gMDoKLSAgICAgICAgICAgIHJldHVybiBjOwotCi0gICAgcmV0dXJuIDAKLQotQ09NUExFVElPTl9UQUlMX0lOVF9SRSA9IHJlLmNvbXBpbGUocideKFtBLVphLXowLTktXSpbXjAtOV0pKFxkKykgJCcpCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIGNvbXBsZXRpb25fdHJhaWxpbmdfaW50ZWdlcl9jbXAoeCx5KToKLSAgICAiIiIKLSAgICBzb3J0ZWQoKSBjb21wYXJpc29uIGZ1bmN0aW9uLgotCi0gICAgVGhpcyBpcyB1c2VkIGZvciBjb21wbGV0aW9uIHZhbHVlcyBzb3J0aW5nLgotCi0gICAgVGhpcyBmdW5jdGlvbiBkaWZmZXJzIGZyb20gdHJhaWxpbmdfaW50ZWdlcl9jbXAsIHNpbmNlIGZvciBjb21wbGV0aW9ucywKLSAgICB0aGUgbGFzdCBjaGFyYWN0ZXIgbWF5IGJlIGEgc3BhY2UgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc2VsZWN0aW9uIGlzCi0gICAgY29tcGxldGUuICBJZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaXMgYSBzcGFjZSwgdGhlIGNoYXJhY3RlciBhaGVhZAotICAgIG9mIGl0IGlzIHVzZWQgaW5zdGVhZC4KLSAgICAiIiIKLQotICAgIHhfdiA9IHgKLSAgICBpZiBpc2luc3RhbmNlKHhfdiwgdHVwbGUpOgotICAgICAgICB4X3YgPSB4X3ZbMF0KLSAgICBpZiB4Wy0xXSA9PSAnICc6Ci0gICAgICAgIHhfdiA9IHhbOi0xXQotCi0gICAgeV92ID0geQotICAgIGlmIGlzaW5zdGFuY2UoeV92LCB0dXBsZSk6Ci0gICAgICAgIHlfdiA9IHlfdlswXQotICAgIGlmIHlbLTFdID09ICcgJzoKLSAgICAgICAgeV92ID0geVs6LTFdCi0gICAgcmV0dXJuIHRyYWlsaW5nX2ludGVnZXJfY21wKHhfdiwgeV92KQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotQUJFUlJBTlRfUExVUkFMX01BUCA9IHsKLSAgICAnYXBwZW5kaXgnOiAnYXBwZW5kaWNlcycsCi0gICAgJ2JhcnJhY2tzJzogJ2JhcnJhY2tzJywKLSAgICAnY2FjdHVzJzogJ2NhY3RpJywKLSAgICAnY2hpbGQnOiAnY2hpbGRyZW4nLAotICAgICdjcml0ZXJpb24nOiAnY3JpdGVyaWEnLAotICAgICdkZWVyJzogJ2RlZXInLAotICAgICdlY2hvJzogJ2VjaG9lcycsCi0gICAgJ2VsZic6ICdlbHZlcycsCi0gICAgJ2VtYmFyZ28nOiAnZW1iYXJnb2VzJywKLSAgICAnZm9jdXMnOiAnZm9jaScsCi0gICAgJ2Z1bmd1cyc6ICdmdW5naScsCi0gICAgJ2dvb3NlJzogJ2dlZXNlJywKLSAgICAnaGVybyc6ICdoZXJvZXMnLAotICAgICdob29mJzogJ2hvb3ZlcycsCi0gICAgJ2luZGV4JzogJ2luZGljZXMnLAotICAgICdrbmlmZSc6ICdrbml2ZXMnLAotICAgICdsZWFmJzogJ2xlYXZlcycsCi0gICAgJ2xpZmUnOiAnbGl2ZXMnLAotICAgICdtYW4nOiAnbWVuJywKLSAgICAnbW91c2UnOiAnbWljZScsCi0gICAgJ251Y2xldXMnOiAnbnVjbGVpJywKLSAgICAncGVyc29uJzogJ3Blb3BsZScsCi0gICAgJ3BoZW5vbWVub24nOiAncGhlbm9tZW5hJywKLSAgICAncG90YXRvJzogJ3BvdGF0b2VzJywKLSAgICAnc2VsZic6ICdzZWx2ZXMnLAotICAgICdzeWxsYWJ1cyc6ICdzeWxsYWJpJywKLSAgICAndG9tYXRvJzogJ3RvbWF0b2VzJywKLSAgICAndG9ycGVkbyc6ICd0b3JwZWRvZXMnLAotICAgICd2ZXRvJzogJ3ZldG9lcycsCi0gICAgJ3dvbWFuJzogJ3dvbWVuJywKLSAgICB9Ci0KLVZPV0VMUyA9IHNldCgnYWVpb3UnKQotCi1kZWYgcGx1cmFsaXplKHNpbmd1bGFyKToKLSAgICAiIiJSZXR1cm4gcGx1cmFsIGZvcm0gb2YgZ2l2ZW4gbG93ZXJjYXNlIHNpbmd1bGFyIHdvcmQgKEVuZ2xpc2ggb25seSkuIEJhc2VkIG9uCi0gICAgQWN0aXZlU3RhdGUgcmVjaXBlIGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzQxMzE3Mi8KLSAgICAKLSAgICA+Pj4gcGx1cmFsaXplKCcnKQotICAgICcnCi0gICAgPj4+IHBsdXJhbGl6ZSgnZ29vc2UnKQotICAgICdnZWVzZScKLSAgICA+Pj4gcGx1cmFsaXplKCdkb2xseScpCi0gICAgJ2RvbGxpZXMnCi0gICAgPj4+IHBsdXJhbGl6ZSgnZ2VuaXVzJykKLSAgICAnZ2VuaWknCi0gICAgPj4+IHBsdXJhbGl6ZSgnam9uZXMnKQotICAgICdqb25lc2VzJwotICAgID4+PiBwbHVyYWxpemUoJ3Bhc3MnKQotICAgICdwYXNzZXMnCi0gICAgPj4+IHBsdXJhbGl6ZSgnemVybycpCi0gICAgJ3plcm9zJwotICAgID4+PiBwbHVyYWxpemUoJ2Nhc2lubycpCi0gICAgJ2Nhc2lub3MnCi0gICAgPj4+IHBsdXJhbGl6ZSgnaGVybycpCi0gICAgJ2hlcm9lcycKLSAgICA+Pj4gcGx1cmFsaXplKCdjaHVyY2gnKQotICAgICdjaHVyY2hlcycKLSAgICA+Pj4gcGx1cmFsaXplKCd4JykKLSAgICAneHMnCi0gICAgPj4+IHBsdXJhbGl6ZSgnY2FyJykKLSAgICAnY2FycycKLQotICAgICIiIgotICAgIGlmIG5vdCBzaW5ndWxhcjoKLSAgICAgICAgcmV0dXJuICcnCi0gICAgcGx1cmFsID0gQUJFUlJBTlRfUExVUkFMX01BUC5nZXQoc2luZ3VsYXIpCi0gICAgaWYgcGx1cmFsOgotICAgICAgICByZXR1cm4gcGx1cmFsCi0gICAgcm9vdCA9IHNpbmd1bGFyCi0gICAgdHJ5OgotICAgICAgICBpZiBzaW5ndWxhclstMV0gPT0gJ3knIGFuZCBzaW5ndWxhclstMl0gbm90IGluIFZPV0VMUzoKLSAgICAgICAgICAgIHJvb3QgPSBzaW5ndWxhcls6LTFdCi0gICAgICAgICAgICBzdWZmaXggPSAnaWVzJwotICAgICAgICBlbGlmIHNpbmd1bGFyWy0xXSA9PSAncyc6Ci0gICAgICAgICAgICBpZiBzaW5ndWxhclstMl0gaW4gVk9XRUxTOgotICAgICAgICAgICAgICAgIGlmIHNpbmd1bGFyWy0zOl0gPT0gJ2l1cyc6Ci0gICAgICAgICAgICAgICAgICAgIHJvb3QgPSBzaW5ndWxhcls6LTJdCi0gICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICdpJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJvb3QgPSBzaW5ndWxhcls6LTFdCi0gICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICdzZXMnCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICdlcycKLSAgICAgICAgZWxpZiBzaW5ndWxhclstMjpdIGluICgnY2gnLCAnc2gnKToKLSAgICAgICAgICAgIHN1ZmZpeCA9ICdlcycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1ZmZpeCA9ICdzJwotICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICBzdWZmaXggPSAncycKLSAgICBwbHVyYWwgPSByb290ICsgc3VmZml4Ci0gICAgcmV0dXJuIHBsdXJhbApkaWZmIC0tZ2l0IGEvY2xpL2NsaS92YWxpZGF0ZS9pbnB1dF9maWxlcy9saW50IGIvY2xpL2NsaS92YWxpZGF0ZS9pbnB1dF9maWxlcy9saW50CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4MjI5NTIwLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvdmFsaWRhdGUvaW5wdXRfZmlsZXMvbGludAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotZW5hYmxlCi1jb25maWcKLWludGVybmFsCi1saW50Ci1lbmQKLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS92YWxpZGF0ZS9pbnB1dF9maWxlcy9wZXJtdXRlIGIvY2xpL2NsaS92YWxpZGF0ZS9pbnB1dF9maWxlcy9wZXJtdXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyNzQ1YjgyLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvdmFsaWRhdGUvaW5wdXRfZmlsZXMvcGVybXV0ZQorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotZW5hYmxlCi1jb25maWcKLWludGVybmFsCi1wZXJtdXRlCi1lbmQKLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS92YWxpZGF0ZS9pbnB1dF9maWxlcy9xdWFsaWZ5IGIvY2xpL2NsaS92YWxpZGF0ZS9pbnB1dF9maWxlcy9xdWFsaWZ5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxZjRiNGMzLi4wMDAwMDAwCi0tLSBhL2NsaS9jbGkvdmFsaWRhdGUvaW5wdXRfZmlsZXMvcXVhbGlmeQorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotZW5hYmxlCi1jb25maWcKLWludGVybmFsCi1xdWFsaWZ5Ci1lbmQKLQpkaWZmIC0tZ2l0IGEvY2xpL2NsaS92YWxpZGF0ZS92YWxpZGF0b3IucHkgYi9jbGkvY2xpL3ZhbGlkYXRlL3ZhbGlkYXRvci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTNkNTU5Ny4uMDAwMDAwMAotLS0gYS9jbGkvY2xpL3ZhbGlkYXRlL3ZhbGlkYXRvci5weQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCByZQotCi1WQUxJREFURV9ESVIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCi1DTElfUEFUSCA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKFZBTElEQVRFX0RJUiwgIi4uL2NsaS5weSIpKQotSU5QVVRfRElSID0gb3MucGF0aC5qb2luKFZBTElEQVRFX0RJUiwgImlucHV0X2ZpbGVzIikKLU9VVFBVVF9ESVIgPSAiY2xpX3ZhbGlkYXRlIgotCi1kZWYgdmFsaWRhdG9yKGlucHV0X3BhdGgsIG91dHB1dF9wYXRoKToKLSAgICBwcmludCAiVmFsaWRhdG9yIHN0YXJ0ZWQuIgotICAgIHByaW50ICJJbnB1dCBwYXRoOiAlcyIgJSBpbnB1dF9wYXRoCi0gICAgcHJpbnQgIk91dHB1dCBwYXRoOiAlcyIgJSBvdXRwdXRfcGF0aAotICAgIHN1YnByb2Nlc3MuY2FsbCgicHl0aG9uICVzIDwgJXMgPiAlcyIgJSAoQ0xJX1BBVEgsIGlucHV0X3BhdGgsIG91dHB1dF9wYXRoKSwgc2hlbGw9VHJ1ZSkKLQotCi1kZWYgc2FuaXRpemUocGF0aCk6Ci0gICAgZmlsdGVycyA9IFtyIl5bXjw+IygpXSsoPiAuKikiLCByIl5bXjw+IygpXSsoIyAuKikiLCByIl5bXjw+IygpXSsoXChbXigpXStcKSMgLiopIiwKLSAgICAgICAgICAgICAgIHIiXk5lZWQgZXJyb3IiLCByIl5TRE5TaGVsbCIsIHIiXmRlZmF1bHQgY29udHJvbGxlcjoiLAotICAgICAgICAgICAgICAgciJeUEVSTVVURSIsIHIiXlNVQk1PREUiLCByIl5FeGl0aW5nIl0KLSAgICBwYXR0ZXJucyA9IFtyZS5jb21waWxlKGYpIGZvciBmIGluIGZpbHRlcnNdCi0gICAgdG1wX3BhdGggPSAiJXMudG1wIiAlIHBhdGgKLSAgICBmMSA9IG9wZW4ocGF0aCkKLSAgICBmMiA9IG9wZW4odG1wX3BhdGgsICJ3IikKLQotICAgIGRlZiBtYXRjaFJlZ2V4TGlzdChjb21waWxlZFJlZ2V4TGlzdCwgbGluZSk6Ci0gICAgICAgIGZvciBjciBpbiBjb21waWxlZFJlZ2V4TGlzdDoKLSAgICAgICAgICAgIGlmIGNyLnNlYXJjaChsaW5lKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGZvciBsaW5lIGluIGYxOgotICAgICAgICBpZiBtYXRjaFJlZ2V4TGlzdChwYXR0ZXJucywgbGluZSk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmMi53cml0ZShsaW5lKQotICAgIGYxLmNsb3NlKCkKLSAgICBmMi5jbG9zZSgpCi0gICAgb3MucmVtb3ZlKHBhdGgpCi0gICAgb3MucmVuYW1lKHRtcF9wYXRoLCBwYXRoKQotCi0KLWRlZiBtYWluKCk6Ci0gICAgc3VicHJvY2Vzcy5jYWxsKFsicm0iLCAiLXJmIiwgT1VUUFVUX0RJUl0pCi0gICAgc3VicHJvY2Vzcy5jYWxsKFsibWtkaXIiLCAiLXAiLCBPVVRQVVRfRElSXSkKLSAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKElOUFVUX0RJUik6Ci0gICAgICAgIGluX3BhdGggPSBvcy5wYXRoLmpvaW4oSU5QVVRfRElSLCBmKQotICAgICAgICBvdXRfcGF0aCA9IG9zLnBhdGguam9pbihPVVRQVVRfRElSLCAiJXNfb3V0cHV0IiAlIGYpCi0gICAgICAgIHZhbGlkYXRvcihpbl9wYXRoLCBvdXRfcGF0aCkKLSAgICAgICAgc2FuaXRpemUob3V0X3BhdGgpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgbWFpbigpCi0KZGlmZiAtLWdpdCBhL2NsaS9jbGkvdmVuZG9yLnB5IGIvY2xpL2NsaS92ZW5kb3IucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGNhNzhjMDEuLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS92ZW5kb3IucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTAsMjAxMSwyMDEyLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMKLQotIwotIyAgdmVuZG9yLnB5IC0gcGFyc2UgT1VJIGluZm9ybWF0aW9uIGFuZCBsb29rIHVwIHZlbmRvcnMKLQotaW1wb3J0IHJlCi1pbXBvcnQgb3MKLWZyb20gcGtnX3Jlc291cmNlcyBpbXBvcnQgcmVzb3VyY2Vfc3RyZWFtCi0KLWNsYXNzIFZlbmRvckRCKCk6Ci0gICAgCi0gICAgdmVuZG9ycyA9IHt9Ci0gICAgCi0gICAgZGVmIGluaXQoc2VsZik6Ci0gICAgICAgICAgICBmID0gcmVzb3VyY2Vfc3RyZWFtKF9fbmFtZV9fLCAnZGF0YS9vdWkudHh0JykKLSAgICAgICAgICAgIGlmIGYgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJkYXRhIiwgIm91aS50eHQiKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwKToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIldhcm5pbmc6IFZlbmRvciBPVUkgZmlsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCEiCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGYgPSBvcGVuKHApCi0KLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgbCA9IGYucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgIGlmIGxlbihsKSA9PTA6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrICMgRU9GCi0gICAgICAgICAgICAgICAgaWYgbC5jb3VudCgiKGJhc2UgMTYpIik6Ci0gICAgICAgICAgICAgICAgICAgIG91aSA9IGxbMDo2XQotICAgICAgICAgICAgICAgICAgICB2ZW5kb3IgPSBsWzIyOl0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGRfdmVuZG9yKG91aSx2ZW5kb3IpCi0gICAgICAgICAgICAgICAgCi0gICAgZGVmIGFkZF92ZW5kb3Ioc2VsZiwgb3VpLCB2ZW5kb3IpOgotICAgICAgICBvdWkgPSBvdWkuc3RyaXAoKQotICAgICAgICB2ZW5kb3IgPSB2ZW5kb3Iuc3RyaXAoKQotICAgICAgICBpZiBsZW4ob3VpKSA9PSA2IGFuZCBsZW4odmVuZG9yKSA+IDE6Ci0gICAgICAgICAgICBzZWxmLnZlbmRvcnNbb3VpXT12ZW5kb3IKLSAgICAgICAgCi0gICAgZGVmIGdldF92ZW5kb3Ioc2VsZiwgbWFjKToKLSAgICAgICAgaWYgbGVuKG1hYykgPCA2OgotICAgICAgICAgICAgcmV0dXJuICJ1bmtub3duIgotICAgICAgICBtYWMgPSBtYWMudXBwZXIoKSAgIyBUbyB1cHBlciBjYXNlCi0gICAgICAgIG1hYyA9IHJlLnN1YignOicsJycsbWFjKSAjIGZpbHRlciBhbnkgIjoiCi0gICAgICAgIG1hYyA9IG1hY1swOjZdCi0gICAgCi0gICAgICAgICMgU3RyaXAgYnJvYWRjYXN0IGFuZCBsb2NhbCBiaXQKLSAgICAgICAgYiA9IGhleChpbnQobWFjWzE6Ml0sMTYpICYgaW50KCcxMTAwJywyKSlbMjozXQotICAgICAgICBtYWMgPSBtYWNbMDoxXStiLnVwcGVyKCkrbWFjWzI6Nl0KLSAgICAgICAgCi0gICAgICAgIGlmIG1hYyBpbiBzZWxmLnZlbmRvcnM6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi52ZW5kb3JzW21hY10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiVW5rbm93biIKLSAgICAgICAgCi0jIFNob3cgYWxsIHJlY29yZHMKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBkYiA9IFZlbmRvckRCKCkKLSAgICBkYi5pbml0KCkKLSAgICBwcmludCBkYi52ZW5kb3JzCmRpZmYgLS1naXQgYS9jbGkvY2xpL3Zuc3cucHkgYi9jbGkvY2xpL3Zuc3cucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDMzYTA5NDguLjAwMDAwMDAKLS0tIGEvY2xpL2NsaS92bnN3LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjM5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEyLDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCByZQotaW1wb3J0IHV0aWYKLQotIwotIyBWTlNXIC0tIGFueSBmdW5jdGlvbnMgdXNlZCB0byBzdXBwb3J0IHZucwotIwotCi1kZWYgaW5pdF92bnN3KGJzLCBtb2RpKToKLSAgICBnbG9iYWwgc2Ruc2gsIG1pCi0gICAgc2Ruc2ggPSBicwotICAgIG1pID0gbW9kaQotCi0KLU1BQ19SRSA9IHJlLmNvbXBpbGUocideKChbQS1GYS1mXGRdKXsyfTo/KXs1fVtBLUZhLWZcZF17Mn0kJykKLURJR0lUU19SRSA9IHJlLmNvbXBpbGUocideXGQrJCcpCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgY3JlYXRlX2RlZmF1bHRfdm5zKCk6Ci0gICAgIiIiCi0gICAgSW4gc29tZSBzaXR1YXRpb25zLCBmb3IgZXhhbXBsZSwgd2hlbiBhIGJsYW5rIGNhc3NhbmRyYSBkYi9zdG9yZQotICAgIGlzIGhhdmluZyBhIHJ1bm5pbmctY29uZmlnIHB1c2hlZC4KLSAgICAiIiIKLSAgICAoZXJyb3IsIGNyZWF0ZWQpID0gc2Ruc2guZmluZF9vcl9jcmVhdGVfcm93KCd2bnMtZGVmaW5pdGlvbicsICdkZWZhdWx0JykKLSAgICBpZiBlcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICByZXR1cm4gVHJ1ZQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVmIGFzc29jaWF0ZV9mb3JlaWduX2tleV9mb3Jfdm5zX2ludGVyZmFjZShjcmVhdGVfZGljdCk6Ci0gICAgIiIiCi0gICAgQXNzb2NpYXRpb24gb2YgdGhlIGZvcmVpZ24ga2V5ICdydWxlJyBmb3Igdm5zLWludGVyZmFjZXMgcmVxdWlyZXMgc29tZQotICAgIHN1YnN0YW50aWFsIHdvcmssIGFsb25nIHdpdGggYWRkaXRpb25hbCB2YWxpZGF0aW9uCi0gICAgIiIiCi0KLSAgICAjIGRldGVybWluZSB0aGUgYmVzdCBjYW5kaWRhdGUgZm9yIHRoZSBjdXJyZW50IHJ1bGUKLSAgICBpZiBub3QgJ2ludGVyZmFjZScgaW4gY3JlYXRlX2RpY3Qgb3Igbm90ICd2bnMnIGluIGNyZWF0ZV9kaWN0OgotICAgICAgICByZXR1cm4gY3JlYXRlX2RpY3QKLSAgICBydWxlID0gTm9uZQotICAgIGl0ZW1zID0gY3JlYXRlX2RpY3RbJ2ludGVyZmFjZSddLnNwbGl0KCcvJykKLSAgICBtYWMgPSBOb25lCi0gICAgcG9ydCA9IE5vbmUKLSAgICBpZiBsZW4oaXRlbXMpID09IDE6Ci0gICAgICAgIGlmIGl0ZW1zWzBdLnN0YXJ0c3dpdGgoJ0V0aCcpOgotICAgICAgICAgICAgcnVsZSA9IGl0ZW1zWzBdWzM6XQotICAgICAgICBlbGlmIGl0ZW1zWzBdLnN0YXJ0c3dpdGgoJ1ZFdGgnKToKLSAgICAgICAgICAgIHJ1bGUgPSBpdGVtc1swXVs0Ol0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJ1bGUgPSBpdGVtc1swXQotICAgIGVsaWYgbGVuKGl0ZW1zKSA9PSAyIGFuZCBNQUNfUkUubWF0Y2goaXRlbXNbMV0pOgotICAgICAgICBtYWMgPSBpdGVtc1sxXQotICAgICAgICBpZiBpdGVtc1swXS5zdGFydHN3aXRoKCdWRXRoJyk6Ci0gICAgICAgICAgICBydWxlID0gaXRlbXNbMF1bNDpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBydWxlID0gaXRlbXNbMF0KLSAgICBlbGlmIGxlbihpdGVtcykgPT0gMiBhbmQgRElHSVRTX1JFLm1hdGNoKGl0ZW1zWzFdKToKLSAgICAgICAgcG9ydCA9IGl0ZW1zWzFdCi0gICAgICAgIGlmIGl0ZW1zWzBdLnN0YXJ0c3dpdGgoJ0V0aCcpOgotICAgICAgICAgICAgcnVsZSA9IGl0ZW1zWzBdWzM6XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcnVsZSA9IGl0ZW1zWzBdCi0gICAgZWxzZToKLSAgICAgICAgIyBBc3N1bWUgdGhpcyBpcyBzb21lIGFic3RyYWN0IHBvcnQgbmFtZQotICAgICAgICBwb3J0ID0gaXRlbXNbMV0KLSAgICAgICAgcnVsZSA9IGl0ZW1zWzBdCi0KLSAgICBpZiBub3QgcnVsZToKLSAgICAgICAgcmV0dXJuIGNyZWF0ZV9kaWN0Ci0KLSAgICBpZiBydWxlIGFuZCBydWxlID09ICdkZWZhdWx0JzoKLSAgICAgICAgaWYgbm90IGNyZWF0ZV9kZWZhdWx0X3ZucygpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAjIHRyeSB0byBsb29rIHVwIHRoZSBwYXJ0aWN1bGFyIHJ1bGUKLSAgICBydWxlX2lkID0gc2Ruc2gudW5pcXVlX2tleV9mcm9tX25vbl91bmlxdWUoW2NyZWF0ZV9kaWN0Wyd2bnMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZV0pCi0gICAgaWZfb2JqX3R5cGUgPSAndm5zLWludGVyZmFjZS1ydWxlJwotICAgIGlmX2tleSA9IG1pLnBrKGlmX29ial90eXBlKQotICAgIHRyeToKLSAgICAgICAgcm93ID0gc2Ruc2guZ2V0X3RhYmxlX2Zyb21fc3RvcmUoaWZfb2JqX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVfaWQpCi0gICAgICAgIGVycm9ycyA9IE5vbmUKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICBlcnJvcnMgPSBzZG5zaC5yZXN0X2Vycm9yX3RvX2RpY3QoZSkKLSAgICAgICAgcHJpbnQgc2Ruc2gucmVzdF9lcnJvcl9kaWN0X3RvX21lc3NhZ2UoZXJyb3JzKQotCi0gICAgaWYgZXJyb3JzOgotICAgICAgICByZXR1cm4gY3JlYXRlX2RpY3QKLQotICAgICMKLSAgICAjIHZhbGlkYXRlIHRoZSBydWxlIHJlZmVyZW5jZWQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQKLSAgICAjICdpZCcgY3JlYXRlZCBoZXJlLgotICAgICMKLSAgICBpZiBsZW4ocm93KSA9PSAwOgotICAgICAgICByZXR1cm4gY3JlYXRlX2RpY3QKLSAgICBpZl9ydWxlID0gcm93WzBdCi0KLSAgICAjCi0gICAgIyBQZXJmb3JtIHZhcmlvdXMgdmFsaWRhdGlvbnMgdG8gZW5zdXJlIHRoZSBjcmVhdGVkIGludGVyZmFjZQotICAgICMgd291bGQgbWFrZXMgc2Vuc2UgdG8gc2RucGxhdGZvcm0KLSAgICBydWxlX2lzX251bWJlciA9IEZhbHNlCi0gICAgaWYgRElHSVRTX1JFLm1hdGNoKGlmX3J1bGVbJ2lkJ10uc3BsaXQoJ3wnKVsxXSk6Ci0gICAgICAgIHJ1bGVfaXNfbnVtYmVyID0gVHJ1ZQotCi0gICAgaWYgbWFjIGFuZCAnbWFjJyBpbiBpZl9ydWxlIGFuZCBtYWMgIT0gaWZfcnVsZVsnbWFjJ106Ci0gICAgICAgIHNkbnNoLndhcm5pbmcoJ21hYyAlcyBkb2VzblwndCBtYXRjaCBtYWMgZm9yIGludGVyZmFjZSBydWxlICVzJyAlCi0gICAgICAgICAgICAobWFjLCBpZl9ydWxlWydtYWMnXSkpCi0gICAgICAgIHJldHVybiBjcmVhdGVfZGljdAotICAgICMKLSAgICAjIElmIHRoZSBydWxlIGlzIGEgbWFjIHJ1bGUsIGFuZCB0aGUgYXNzb2NpYXRlZCBydWxlIGlzIGEgbnVtYmVyLAotICAgICMgbWFrZSBzdXJlIHRoZSAnRXRoJyB2cyAnVkV0aCcgbGluZXMgdXAgd2l0aCB0aGUga2luZCBvZiBydWxlCi0gICAgIwotICAgIGlmICgnbWFjJyBvciAnaXAtc3VibmV0JyBpbiBpZl9ydWxlIG9yICd0YWdzJyBpbiBpZl9ydWxlKSBhbmQgcnVsZV9pc19udW1iZXI6Ci0gICAgICAgIGlmIG5vdCBpdGVtc1swXS5zdGFydHN3aXRoKCdWRXRoJyk6Ci0gICAgICAgICAgICBzZG5zaC53YXJuaW5nKCdpbnRlcmZhY2UgbmFtZSAlcyBvdWdodCB0byBzdGFydCB3aXRoIFZFdGgnICUKLSAgICAgICAgICAgICAgICBpdGVtc1swXSkKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVfZGljdAotICAgIGlmICgnc3dpdGNoJyBpbiBpZl9ydWxlIG9yICd2bGFucycgaW4gaWZfcnVsZSkgYW5kIHJ1bGVfaXNfbnVtYmVyOgotICAgICAgICBpZiBub3QgaXRlbXNbMF0uc3RhcnRzd2l0aCgnRXRoJyk6Ci0gICAgICAgICAgICBzZG5zaC53YXJuaW5nKCdpbnRlcmZhY2UgbmFtZSAlcyBtdXN0IG91Z2h0IHRvIHN0YXJ0IHdpdGggRXRoJyAlCi0gICAgICAgICAgICAgICAgaXRlbXNbMF0pCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlX2RpY3QKLSAgICAjCi0gICAgIwotICAgIGlmICgnc3dpdGNoJyBpbiBpZl9ydWxlIGFuZCAncG9ydHMnIGluIGlmX3J1bGUpIGFuZCBwb3J0OgotICAgICAgICBpZiBub3Qgc2Ruc2guc3dpdGNoX3BvcnRfbWF0Y2gocG9ydCwgaWZfcnVsZVsncG9ydHMnXSk6Ci0gICAgICAgICAgICBzZG5zaC53YXJuaW5nKCdwb3J0IG5hbWUgJXMgZG9lcyBub3QgbWF0Y2ggaW50ZXJmYWNlLXJ1bGUgcG9ydHMgJXMnICUKLSAgICAgICAgICAgICAgICAocG9ydCwgaWZfcnVsZVsncG9ydHMnXSkpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlX2RpY3QKLSAgICAjCi0gICAgIyBhc3NvY2lhdGUgdGhlIHJ1bGVfaWQgd2l0aCB0aGUgaW50ZXJmYWNlCi0gICAgY3JlYXRlX2RpY3RbJ3J1bGUnXSA9IHJ1bGVfaWQKLSAgICByZXR1cm4gY3JlYXRlX2RpY3QKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWRlZiBwb3J0X250b2Eob3AsIHBvcnQpOgotICAgICIiIgotICAgIFBhc3MgaW4gdGhlIG9wIGFuZCB0aGUgcG9ydCBudW1iZXIsIGFuZCByZXR1cm4gYSBzdHJpbmcgZm9yIHRoZSBwYWlyLAotICAgIEJvdGggcGFyYW1ldGVycyBhcmUgc3RyaW5ncy4gIChub3RlIHRoZSBsZWFkaW5nIHNwYWNlKQotICAgICIiIgotICAgIGlmIG5vdCBvcCBpbiBbJ2VxJywgJ25lcSddOgotICAgICAgICByZXR1cm4gJycKLSAgICByZXR1cm4gJyVzICVzICcgJSAob3AsIHBvcnQpCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgdm5zX2FjbF9lbnRyeV90b190ZXh0KGFjbCk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgc2hvcnQgc3RyaW5nIGZvciBhIHNwZWNpZmljIGFjbCBlbnRyeS4gIFVzZWQgZm9yIGJvdGggc2hvcnQgYWNsIGRpc3BsYXkKLSAgICBmb3JtYXRzICh2bnMtYWNjZXNzLWxpc3QtZW50cnkgd2l0aGluIGEgdm5zIHN1YmNvbmZpZyBtb2RlKSwgYW5kIGZvciBzaG93IHJ1bm5pbmcgY29uZmlnCi0gICAgIiIiCi0gICAgaWYgYWNsWyd0eXBlJ10gaW4gWyd0Y3AnLCAndWRwJ106Ci0gICAgICAgIGlmIG5vdCBhY2wuZ2V0KCdzcmMtaXAnKSBvciBub3QgYWNsLmdldCgnc3JjLWlwLW1hc2snKToKLSAgICAgICAgICAgIHJldHVybiAnW2Jyb2tlbiBzcmMgaXAgb3IgbWFzayAoYSkgXScKLSAgICAgICAgaWYgbm90IGFjbC5nZXQoJ2RzdC1pcCcpIG9yIG5vdCBhY2wuZ2V0KCdkc3QtaXAtbWFzaycpOgotICAgICAgICAgICAgcmV0dXJuICdbYnJva2VuIHNyYyBpcCBvciBtYXNrIChiKSBdJwotICAgICAgICByZXR1cm4gIiVzJXMlcyVzIiAlICh1dGlmLmlwX2FuZF9uZWdfbWFzayhhY2xbJ3NyYy1pcCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2xbJ3NyYy1pcC1tYXNrJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X250b2EoYWNsLmdldCgnc3JjLXRwLXBvcnQtb3AnLCAnJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2wuZ2V0KCdzcmMtdHAtcG9ydCcsICcnKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWYuaXBfYW5kX25lZ19tYXNrKGFjbFsnZHN0LWlwJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjbFsnZHN0LWlwLW1hc2snXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbnRvYShhY2wuZ2V0KCdkc3QtdHAtcG9ydC1vcCcsICcnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjbC5nZXQoJ2RzdC10cC1wb3J0JywgJycpKSkKLSAgICBlbGlmIGFjbFsndHlwZSddID09ICdpcCcgb3IgRElHSVRTX1JFLm1hdGNoKGFjbFsndHlwZSddKToKLSAgICAgICAgaWYgbm90IGFjbC5nZXQoJ3NyYy1pcCcpIG9yIG5vdCBhY2wuZ2V0KCdzcmMtaXAtbWFzaycpOgotICAgICAgICAgICAgcmV0dXJuICdbYnJva2VuIHNyYyBpcCBvciBtYXNrIChjKV0nCi0gICAgICAgIGlmIG5vdCBhY2wuZ2V0KCdkc3QtaXAnKSBvciBub3QgYWNsLmdldCgnZHN0LWlwLW1hc2snKToKLSAgICAgICAgICAgIHJldHVybiAnW2Jyb2tlbiBzcmMgaXAgb3IgbWFzayAoZCldJwotICAgICAgICByZXR1cm4gIiVzJXMiICUgKHV0aWYuaXBfYW5kX25lZ19tYXNrKGFjbFsnc3JjLWlwJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNsWydzcmMtaXAtbWFzayddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1dGlmLmlwX2FuZF9uZWdfbWFzayhhY2xbJ2RzdC1pcCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjbFsnZHN0LWlwLW1hc2snXSkpCi0gICAgZWxpZiBhY2xbJ3R5cGUnXSA9PSAnaWNtcCc6Ci0gICAgICAgIGlmIG5vdCBhY2wuZ2V0KCdzcmMtaXAnKSBvciBub3QgYWNsLmdldCgnc3JjLWlwLW1hc2snKToKLSAgICAgICAgICAgIHJldHVybiAnW2Jyb2tlbiBzcmMgaXAgb3IgbWFzayAoZSldJwotICAgICAgICBpZiBub3QgYWNsLmdldCgnZHN0LWlwJykgb3Igbm90IGFjbC5nZXQoJ2RzdC1pcC1tYXNrJyk6Ci0gICAgICAgICAgICByZXR1cm4gJ1ticm9rZW4gc3JjIGlwIG9yIG1hc2sgKGYpXScKLSAgICAgICAgcmV0dXJuICIlcyVzJXMiICUgKHV0aWYuaXBfYW5kX25lZ19tYXNrKGFjbFsnc3JjLWlwJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2xbJ3NyYy1pcC1tYXNrJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpZi5pcF9hbmRfbmVnX21hc2soYWNsWydkc3QtaXAnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjbFsnZHN0LWlwLW1hc2snXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNsLmdldCgnaWNtcC10eXBlJywgIiIpKQotICAgIGVsaWYgYWNsWyd0eXBlJ10gPT0gJ21hYyc6Ci0gICAgICAgIGlmICd2bGFuJyBpbiBhY2wgYW5kIGFjbFsndmxhbiddICE9IE5vbmUgYW5kIGFjbFsndmxhbiddICE9ICcnOgotICAgICAgICAgICAgaWYgJ2V0aGVyLXR5cGUnIGluIGFjbCBhbmRcCi0gICAgICAgICAgICAgICBhY2xbJ2V0aGVyLXR5cGUnXSAhPSBOb25lIGFuZCBhY2xbJ2V0aGVyLXR5cGUnXSAhPSAnJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gIiVzICVzICVzIHZsYW4gJXMiICUgKGFjbC5nZXQoJ3NyYy1tYWMnLCAnYW55JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2wuZ2V0KCdkc3QtbWFjJywgJ2FueScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNsLmdldCgnZXRoZXItdHlwZScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNsWyd2bGFuJ10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAiJXMgJXMgdmxhbiAlcyIgJSAoYWNsLmdldCgnc3JjLW1hYycsICdhbnknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjbC5nZXQoJ2RzdC1tYWMnLCAnYW55JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2xbJ3ZsYW4nXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiJXMgJXMgJXMiICUgKGFjbC5nZXQoJ3NyYy1tYWMnLCAnYW55JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2wuZ2V0KCdkc3QtbWFjJywgJ2FueScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNsLmdldCgnZXRoZXItdHlwZScsICcnKSkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJ1t1bnJlY29nbml6ZWQgYWNsIGZvcm1hdF0nCi0KLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgCi1kZWYgdm5zX2FjbF9lbnRyaWVzX3RvX2JyaWVmKGVudHJpZXMpOgotICAgIGZvciBhY2wgaW4gZW50cmllczoKLSAgICAgICAgYWNsWydhY2wtdGV4dCddID0gdm5zX2FjbF9lbnRyeV90b190ZXh0KGFjbCkKLQotCmRpZmYgLS1naXQgYS9jbGkvY29tbW9ucy9wYXJlbnQvcG9tLnhtbCBiL2NsaS9jb21tb25zL3BhcmVudC9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyNTU3NTc2Li4wMDAwMDAwCi0tLSBhL2NsaS9jb21tb25zL3BhcmVudC9wb20ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgotICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gIDxncm91cElkPm9yZy5vcGVuZGF5bGlnaHQubmV0dmlydHBsYXRmb3JtPC9ncm91cElkPgotICA8YXJ0aWZhY3RJZD5uZXR2aXJ0cGxhdGZvcm0tcGFyZW50PC9hcnRpZmFjdElkPgotICA8dmVyc2lvbj4wLjAuMS1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgPG5hbWU+TmV0IFZpcnQgUGxhdGZvcm0gUGFyZW50PC9uYW1lPgotICA8ZGVzY3JpcHRpb24+PC9kZXNjcmlwdGlvbj4KLQotICA8cGFja2FnaW5nPnBvbTwvcGFja2FnaW5nPgotICA8dXJsPmh0dHA6Ly93d3cub3BlbmRheWxpZ2h0Lm9yZzwvdXJsPgotICA8c2NtPgotICAgIDxjb25uZWN0aW9uPnNjbTpnaXQ6aHR0cHM6Ly9naXQub3BlbmRheWxpZ2h0Lm9yZy9nZXJyaXQvcC9uZXQtdmlydC1wbGF0Zm9ybS5naXQ8L2Nvbm5lY3Rpb24+Ci0gIDwvc2NtPgotICA8cHJvcGVydGllcz4KLSAgICA8bmV4dXNwcm94eT5odHRwOi8vbmV4dXMub3BlbmRheWxpZ2h0Lm9yZy9jb250ZW50PC9uZXh1c3Byb3h5PgotICAgIDxwcm9qZWN0LmJ1aWxkLnNvdXJjZUVuY29kaW5nPlVURi04PC9wcm9qZWN0LmJ1aWxkLnNvdXJjZUVuY29kaW5nPgotICA8L3Byb3BlcnRpZXM+Ci0KLSAgPG1vZHVsZXM+Ci0gICAgPG1vZHVsZT4uLi8uLi9kaXN0cmlidXRpb24vbmV0dmlydHBsYXRmb3JtPC9tb2R1bGU+Ci0gICAgPG1vZHVsZT4uLi8uLi9zZG5wbGF0Zm9ybTwvbW9kdWxlPgotICAgIDxtb2R1bGU+Li4vLi4vc3RhZ2luZy9hZGFwdG9ycy9hZGFwdG9yLmNvbnRyb2xsZXJzZXJ2aWNlPC9tb2R1bGU+Ci0gIDwvbW9kdWxlcz4KLQotICA8cmVwb3NpdG9yaWVzPgotICAgIDwhLS0gRUJSIHJlbGVhc2UgLS0+Ci0gICAgPCEtLSBodHRwOi8vcmVwb3NpdG9yeS5zcHJpbmdzb3VyY2UuY29tL21hdmVuL2J1bmRsZXMvcmVsZWFzZSAtLT4KLSAgICA8cmVwb3NpdG9yeT4KLSAgICAgIDxpZD5lYnItYnVuZGxlcy1yZWxlYXNlPC9pZD4KLSAgICAgIDxuYW1lPmVici1idW5kbGVzLXJlbGVhc2U8L25hbWU+Ci0gICAgICA8dXJsPiR7bmV4dXNwcm94eX0vcmVwb3NpdG9yaWVzL2Vici1idW5kbGVzLXJlbGVhc2UvPC91cmw+Ci0gICAgPC9yZXBvc2l0b3J5PgotICAgIDwhLS0gRUJSIGV4dGVybmFsIC0tPgotICAgIDwhLS0gaHR0cDovL3JlcG9zaXRvcnkuc3ByaW5nc291cmNlLmNvbS9tYXZlbi9idW5kbGVzL2V4dGVybmFsIC0tPgotICAgIDxyZXBvc2l0b3J5PgotICAgICAgPGlkPmVici1idW5kbGVzLWV4dGVybmFsPC9pZD4KLSAgICAgIDxuYW1lPmVici1idW5kbGVzLWV4dGVybmFsPC9uYW1lPgotICAgICAgPHVybD4ke25leHVzcHJveHl9L3JlcG9zaXRvcmllcy9lYnItYnVuZGxlcy1leHRlcm5hbC88L3VybD4KLSAgICA8L3JlcG9zaXRvcnk+Ci0gICAgPCEtLSBNYXZlbiByZXBvMiBtaXJyb3IgLS0+Ci0gICAgPCEtLSBodHRwOi8vcmVwbzIubWF2ZW4ub3JnL21hdmVuMiAtLT4KLSAgICA8cmVwb3NpdG9yeT4KLSAgICAgIDxpZD5jZW50cmFsMjwvaWQ+Ci0gICAgICA8bmFtZT5jZW50cmFsMjwvbmFtZT4KLSAgICAgIDx1cmw+JHtuZXh1c3Byb3h5fS9yZXBvc2l0b3JpZXMvY2VudHJhbDIvPC91cmw+Ci0gICAgPC9yZXBvc2l0b3J5PgotICAgIDwhLS0gTWF2ZW4gcmVwbzEgbWlycm9yIC0tPgotICAgIDwhLS0gaHR0cDovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIgLS0+Ci0gICAgPHJlcG9zaXRvcnk+Ci0gICAgICA8aWQ+Y2VudHJhbDwvaWQ+Ci0gICAgICA8bmFtZT5jZW50cmFsPC9uYW1lPgotICAgICAgPHVybD4ke25leHVzcHJveHl9L3JlcG9zaXRvcmllcy9jZW50cmFsLzwvdXJsPgotICAgIDwvcmVwb3NpdG9yeT4KLSAgICA8IS0tIFBheCBtaXJyb3IgLS0+Ci0gICAgPCEtLSBodHRwczovL29zcy5zb25hdHlwZS5vcmcvY29udGVudC9yZXBvc2l0b3JpZXMvb3BzNGotcmVsZWFzZXMgLS0+Ci0gICAgPHJlcG9zaXRvcnk+Ci0gICAgICA8aWQ+b3BzNGotcmVsZWFzZXM8L2lkPgotICAgICAgPG5hbWU+b3BzNGotcmVsZWFzZXM8L25hbWU+Ci0gICAgICA8dXJsPiR7bmV4dXNwcm94eX0vcmVwb3NpdG9yaWVzL29wczRqLXJlbGVhc2VzLzwvdXJsPgotICAgIDwvcmVwb3NpdG9yeT4KLSAgICA8IS0tIFRoaXJkIFBhY2thZ2VzIGhvc3RlZCBpbiBsb2NhbCBtYXZlbiBiZWNhdXNlIG5vdCBhdmFpbGFibGUgaW4gb3RoZXIKLSAgICAgIHBsYWNlcyAtLT4KLSAgICA8cmVwb3NpdG9yeT4KLSAgICAgIDxpZD50aGlyZHBhcnR5PC9pZD4KLSAgICAgIDxuYW1lPnRoaXJkcGFydHk8L25hbWU+Ci0gICAgICA8dXJsPiR7bmV4dXNwcm94eX0vcmVwb3NpdG9yaWVzL3RoaXJkcGFydHkvPC91cmw+Ci0gICAgPC9yZXBvc2l0b3J5PgotICAgIDwhLS0gSmJvc3MgbWlycm9yIC0tPgotICAgIDwhLS0gaHR0cHM6Ly9yZXBvc2l0b3J5Lmpib3NzLm9yZy9uZXh1cy9jb250ZW50L3JlcG9zaXRvcmllcy9yZWxlYXNlcyAtLT4KLSAgICA8cmVwb3NpdG9yeT4KLSAgICAgIDxpZD5qYm9zcy5yZWxlYXNlczwvaWQ+Ci0gICAgICA8bmFtZT5qYm9zcy5yZWxlYXNlczwvbmFtZT4KLSAgICAgIDx1cmw+JHtuZXh1c3Byb3h5fS9yZXBvc2l0b3JpZXMvamJvc3MucmVsZWFzZXMvPC91cmw+Ci0gICAgPC9yZXBvc2l0b3J5PgotICAgIDwhLS0gT3BlbkRheUxpZ2h0IFJlbGVhc2VkIGFydGlmYWN0IC0tPgotICAgIDxyZXBvc2l0b3J5PgotICAgICAgPGlkPm9wZW5kYXlsaWdodC1yZWxlYXNlPC9pZD4KLSAgICAgIDxuYW1lPm9wZW5kYXlsaWdodC1yZWxlYXNlPC9uYW1lPgotICAgICAgPHVybD4ke25leHVzcHJveHl9L3JlcG9zaXRvcmllcy9vcGVuZGF5bGlnaHQucmVsZWFzZS88L3VybD4KLSAgICA8L3JlcG9zaXRvcnk+Ci0gICAgPCEtLSBPcGVuRGF5TGlnaHQgU25hcHNob3QgYXJ0aWZhY3QgLS0+Ci0gICAgPHJlcG9zaXRvcnk+Ci0gICAgICA8aWQ+b3BlbmRheWxpZ2h0LXNuYXBzaG90PC9pZD4KLSAgICAgIDxuYW1lPm9wZW5kYXlsaWdodC1zbmFwc2hvdDwvbmFtZT4KLSAgICAgIDx1cmw+JHtuZXh1c3Byb3h5fS9yZXBvc2l0b3JpZXMvb3BlbmRheWxpZ2h0LnNuYXBzaG90LzwvdXJsPgotICAgIDwvcmVwb3NpdG9yeT4KLSAgICA8IS0tIE5lZWRlZCBmb3IgdGhlIG9yZy5yZXN0bGV0LiogZGVwZW5kZW5jaWVzLiAtLT4KLSAgICA8cmVwb3NpdG9yeT4KLSAgICAgIDxpZD5tYXZlbi1yZXN0bGV0PC9pZD4KLSAgICAgIDxuYW1lPlB1YmxpYyBvbmxpbmUgUmVzdGxldCByZXBvc2l0b3J5PC9uYW1lPgotICAgICAgPHVybD5odHRwOi8vbWF2ZW4ucmVzdGxldC5vcmc8L3VybD4KLSAgICAgIDxzbmFwc2hvdHM+Ci0gICAgICAgIDxlbmFibGVkPnRydWU8L2VuYWJsZWQ+Ci0gICAgICAgIDx1cGRhdGVQb2xpY3k+bmV2ZXI8L3VwZGF0ZVBvbGljeT4KLSAgICAgIDwvc25hcHNob3RzPgotICAgIDwvcmVwb3NpdG9yeT4KLSAgPC9yZXBvc2l0b3JpZXM+Ci0KLSAgPGRpc3RyaWJ1dGlvbk1hbmFnZW1lbnQ+Ci0gICAgPCEtLSBPcGVuRGF5TGlnaHQgUmVsZWFzZWQgYXJ0aWZhY3QgLS0+Ci0gICAgPHJlcG9zaXRvcnk+Ci0gICAgICA8aWQ+b3BlbmRheWxpZ2h0LXJlbGVhc2U8L2lkPgotICAgICAgPHVybD4ke25leHVzcHJveHl9L3JlcG9zaXRvcmllcy9vcGVuZGF5bGlnaHQucmVsZWFzZS88L3VybD4KLSAgICA8L3JlcG9zaXRvcnk+Ci0gICAgPCEtLSBPcGVuRGF5TGlnaHQgU25hcHNob3QgYXJ0aWZhY3QgLS0+Ci0gICAgPHNuYXBzaG90UmVwb3NpdG9yeT4KLSAgICAgIDxpZD5vcGVuZGF5bGlnaHQtc25hcHNob3Q8L2lkPgotICAgICAgPHVybD4ke25leHVzcHJveHl9L3JlcG9zaXRvcmllcy9vcGVuZGF5bGlnaHQuc25hcHNob3QvPC91cmw+Ci0gICAgPC9zbmFwc2hvdFJlcG9zaXRvcnk+Ci0gICAgPCEtLSBTaXRlIGRlcGxveW1lbnQgLS0+Ci0gIDwvZGlzdHJpYnV0aW9uTWFuYWdlbWVudD4KLQotICA8YnVpbGQ+Ci0gICAgPHBsdWdpbk1hbmFnZW1lbnQ+Ci0gICAgICA8cGx1Z2lucz4KLSAgICAgICAgPHBsdWdpbj4KLSAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmZlbGl4PC9ncm91cElkPgotICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWJ1bmRsZS1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgPHZlcnNpb24+Mi4zLjY8L3ZlcnNpb24+Ci0gICAgICAgICAgPGV4dGVuc2lvbnM+dHJ1ZTwvZXh0ZW5zaW9ucz4KLSAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgIDxtYW5pZmVzdExvY2F0aW9uPiR7cHJvamVjdC5iYXNlZGlyfS9NRVRBLUlORjwvbWFuaWZlc3RMb2NhdGlvbj4KLSAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+Ci0gICAgICAgIDwvcGx1Z2luPgotICAgICAgICA8cGx1Z2luPgotICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KLSAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hc3NlbWJseS1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgPHZlcnNpb24+Mi40PC92ZXJzaW9uPgotICAgICAgICA8L3BsdWdpbj4KLSAgICAgICAgPHBsdWdpbj4KLSAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+Ci0gICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tY29tcGlsZXItcGx1Z2luPC9hcnRpZmFjdElkPgotICAgICAgICAgIDx2ZXJzaW9uPjIuMy4yPC92ZXJzaW9uPgotICAgICAgICA8L3BsdWdpbj4KLSAgICAgICAgPHBsdWdpbj4KLSAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+Ci0gICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tZGVwZW5kZW5jeS1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgPHZlcnNpb24+Mi44PC92ZXJzaW9uPgotICAgICAgICA8L3BsdWdpbj4KLSAgICAgICAgPHBsdWdpbj4KLSAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+Ci0gICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tc3VyZWZpcmUtcGx1Z2luPC9hcnRpZmFjdElkPgotICAgICAgICAgIDx2ZXJzaW9uPjIuMTQuMTwvdmVyc2lvbj4KLSAgICAgICAgPC9wbHVnaW4+Ci0gICAgICA8L3BsdWdpbnM+Ci0gICAgPC9wbHVnaW5NYW5hZ2VtZW50PgotICA8L2J1aWxkPgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvY2xpL2RlcHMvZGphbmdvLW5vbnJlbC0yMDExMTAyNC1iZTQ4YzE1MmFiYzYuemlwIGIvY2xpL2RlcHMvZGphbmdvLW5vbnJlbC0yMDExMTAyNC1iZTQ4YzE1MmFiYzYuemlwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiOGM5MzkzLi4wMDAwMDAwCi0tLSBhL2NsaS9kZXBzL2RqYW5nby1ub25yZWwtMjAxMTEwMjQtYmU0OGMxNTJhYmM2LnppcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NsaS9kZXBzL2RqYW5nb3Rvb2xib3gtMjAxMTEwMjQtOTU3ZWE1ZjY4MDQwLnppcCBiL2NsaS9kZXBzL2RqYW5nb3Rvb2xib3gtMjAxMTEwMjQtOTU3ZWE1ZjY4MDQwLnppcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggY2E4NmIwNC4uMDAwMDAwMAotLS0gYS9jbGkvZGVwcy9kamFuZ290b29sYm94LTIwMTExMDI0LTk1N2VhNWY2ODA0MC56aXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jbGkvZGVwcy90aHJpZnQtMC43LjAudGFyLmd6IGIvY2xpL2RlcHMvdGhyaWZ0LTAuNy4wLnRhci5negpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzMzOTNiOS4uMDAwMDAwMAotLS0gYS9jbGkvZGVwcy90aHJpZnQtMC43LjAudGFyLmd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2xpL2Rpc3RyaWJ1dGlvbi9uZXR2aXJ0cGxhdGZvcm0vcG9tLnhtbCBiL2NsaS9kaXN0cmlidXRpb24vbmV0dmlydHBsYXRmb3JtL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDkzMDg3YWMuLjAwMDAwMDAKLS0tIGEvY2xpL2Rpc3RyaWJ1dGlvbi9uZXR2aXJ0cGxhdGZvcm0vcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiCi14bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgoteHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAKLWh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgotICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gIDxwYXJlbnQ+Ci0gICAgPGdyb3VwSWQ+b3JnLm9wZW5kYXlsaWdodC5uZXR2aXJ0cGxhdGZvcm08L2dyb3VwSWQ+Ci0gICAgPGFydGlmYWN0SWQ+bmV0dmlydHBsYXRmb3JtLXBhcmVudDwvYXJ0aWZhY3RJZD4KLSAgICA8dmVyc2lvbj4wLjAuMS1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgICA8cmVsYXRpdmVQYXRoPi4uLy4uL2NvbW1vbnMvcGFyZW50PC9yZWxhdGl2ZVBhdGg+Ci0gIDwvcGFyZW50PgotCi0gIDxhcnRpZmFjdElkPm5ldHZpcnRwbGF0Zm9ybS1kaXN0cmlidXRpb248L2FydGlmYWN0SWQ+Ci0gIDxwYWNrYWdpbmc+cG9tPC9wYWNrYWdpbmc+Ci0gIDxuYW1lPk5ldCBWaXJ0IFBsYXRmb3JtIERpc3RyaWJ1dGlvbjwvbmFtZT4KLQotICA8ZGVwZW5kZW5jaWVzPgotICAgIDxkZXBlbmRlbmN5PgotICAgICAgPGdyb3VwSWQ+b3JnLm9wZW5kYXlsaWdodC5jb250cm9sbGVyPC9ncm91cElkPgotICAgICAgPGFydGlmYWN0SWQ+ZGlzdHJpYnV0aW9uLm9wZW5kYXlsaWdodDwvYXJ0aWZhY3RJZD4KLSAgICAgIDx2ZXJzaW9uPjAuMS4wLVNOQVBTSE9UPC92ZXJzaW9uPgotICAgICAgPHR5cGU+emlwPC90eXBlPgotICAgICAgPGNsYXNzaWZpZXI+b3NnaXBhY2thZ2U8L2NsYXNzaWZpZXI+Ci0gICAgICA8IS0tIE1ha2Ugc3VyZSB0aGlzIGlzbid0IGluY2x1ZGVkIG9uIGFueSBjbGFzc3BhdGgtLT4KLSAgICAgIDxzY29wZT5wcm92aWRlZDwvc2NvcGU+Ci0gICAgPC9kZXBlbmRlbmN5PgotICAgIDxkZXBlbmRlbmN5PgotICAgICAgPGdyb3VwSWQ+b3JnLm9wZW5kYXlsaWdodC5uZXR2aXJ0cGxhdGZvcm08L2dyb3VwSWQ+Ci0gICAgICA8YXJ0aWZhY3RJZD5uZXR2aXJ0cGxhdGZvcm0tYWxsPC9hcnRpZmFjdElkPgotICAgICAgPHZlcnNpb24+MC4wLjEtU05BUFNIT1Q8L3ZlcnNpb24+Ci0gICAgPC9kZXBlbmRlbmN5PgotICAgIDxkZXBlbmRlbmN5PgotICAgICAgPGdyb3VwSWQ+b3JnLm9wZW5kYXlsaWdodC5uZXR2aXJ0cGxhdGZvcm0uYWRhcHRvcnM8L2dyb3VwSWQ+Ci0gICAgICA8YXJ0aWZhY3RJZD5jb250cm9sbGVyc2VydmljZTwvYXJ0aWZhY3RJZD4KLSAgICAgIDx2ZXJzaW9uPjAuMC4xLVNOQVBTSE9UPC92ZXJzaW9uPgotICAgIDwvZGVwZW5kZW5jeT4KLSAgPC9kZXBlbmRlbmNpZXM+Ci0KLSAgPGJ1aWxkPgotICAgIDxyZXNvdXJjZXM+Ci0gICAgICA8cmVzb3VyY2U+Ci0gICAgICAgIDxkaXJlY3Rvcnk+JHtiYXNlZGlyfS9zcmMvbWFpbi9yZXNvdXJjZXM8L2RpcmVjdG9yeT4KLSAgICAgIDwvcmVzb3VyY2U+Ci0gICAgICA8cmVzb3VyY2U+Ci0gICAgICAgIDxkaXJlY3Rvcnk+JHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vZ2VuZXJhdGVkLXJlc291cmNlczwvZGlyZWN0b3J5PgotICAgICAgICA8ZmlsdGVyaW5nPnRydWU8L2ZpbHRlcmluZz4KLSAgICAgIDwvcmVzb3VyY2U+Ci0gICAgPC9yZXNvdXJjZXM+Ci0gICAgPHBsdWdpbnM+Ci0gICAgICA8cGx1Z2luPgotICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+Ci0gICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWRlcGVuZGVuY3ktcGx1Z2luPC9hcnRpZmFjdElkPgotICAgICAgICA8ZXhlY3V0aW9ucz4KLSAgICAgICAgICA8ZXhlY3V0aW9uPgotICAgICAgICAgICAgPGlkPnVucGFjay1zaGFyZWQtcmVzb3VyY2VzPC9pZD4KLSAgICAgICAgICAgIDxnb2Fscz4KLSAgICAgICAgICAgICAgPGdvYWw+dW5wYWNrLWRlcGVuZGVuY2llczwvZ29hbD4KLSAgICAgICAgICAgIDwvZ29hbHM+Ci0gICAgICAgICAgICA8cGhhc2U+Z2VuZXJhdGUtcmVzb3VyY2VzPC9waGFzZT4KLSAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgotICAgICAgICAgICAgIDxvdXRwdXREaXJlY3Rvcnk+JHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vZ2VuZXJhdGVkLXJlc291cmNlczwvb3V0cHV0RGlyZWN0b3J5PgotICAgICAgICAgICAgIDxpbmNsdWRlQXJ0aWZhY0lkcz5kaXN0cmlidXRpb24ub3BlbmRheWxpZ2h0PC9pbmNsdWRlQXJ0aWZhY0lkcz4KLSAgICAgICAgICAgICA8aW5jbHVkZUdyb3VwSWRzPm9yZy5vcGVuZGF5bGlnaHQuY29udHJvbGxlcjwvaW5jbHVkZUdyb3VwSWRzPgotICAgICAgICAgICAgIDxleGNsdWRlVHJhbnNpdGl2ZT50cnVlPC9leGNsdWRlVHJhbnNpdGl2ZT4KLSAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KLSAgICAgICAgICA8L2V4ZWN1dGlvbj4KLSAgICAgICAgPC9leGVjdXRpb25zPgotICAgICAgPC9wbHVnaW4+Ci0gICAgICA8cGx1Z2luPgotICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hc3NlbWJseS1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gICAgICAgIDxleGVjdXRpb25zPgotICAgICAgICAgIDxleGVjdXRpb24+Ci0gICAgICAgICAgICA8aWQ+ZGlzdHJvLWFzc2VtYmx5PC9pZD4KLSAgICAgICAgICAgIDxwaGFzZT5wYWNrYWdlPC9waGFzZT4KLSAgICAgICAgICAgIDxnb2Fscz4KLSAgICAgICAgICAgICAgPGdvYWw+c2luZ2xlPC9nb2FsPgotICAgICAgICAgICAgPC9nb2Fscz4KLSAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgotICAgICAgICAgICAgICA8ZGVzY3JpcHRvcnM+Ci0gICAgICAgICAgICAgICAgPGRlc2NyaXB0b3I+c3JjL2Fzc2VtYmxlL2Jpbi54bWw8L2Rlc2NyaXB0b3I+Ci0gICAgICAgICAgICAgIDwvZGVzY3JpcHRvcnM+Ci0gICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+Ci0gICAgICAgICAgPC9leGVjdXRpb24+Ci0gICAgICAgIDwvZXhlY3V0aW9ucz4KLSAgICAgIDwvcGx1Z2luPgotICAgIDwvcGx1Z2lucz4KLSAgPC9idWlsZD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL2NsaS9kaXN0cmlidXRpb24vbmV0dmlydHBsYXRmb3JtL3NyYy9hc3NlbWJsZS9iaW4ueG1sIGIvY2xpL2Rpc3RyaWJ1dGlvbi9uZXR2aXJ0cGxhdGZvcm0vc3JjL2Fzc2VtYmxlL2Jpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDcxNjgxOTIuLjAwMDAwMDAKLS0tIGEvY2xpL2Rpc3RyaWJ1dGlvbi9uZXR2aXJ0cGxhdGZvcm0vc3JjL2Fzc2VtYmxlL2Jpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08YXNzZW1ibHkKLSAgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3BsdWdpbnMvbWF2ZW4tYXNzZW1ibHktcGx1Z2luL2Fzc2VtYmx5LzEuMS4wIgotICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3BsdWdpbnMvbWF2ZW4tYXNzZW1ibHktcGx1Z2luL2Fzc2VtYmx5LzEuMS4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3hzZC9hc3NlbWJseS0xLjEuMC54c2QiPgotICA8aWQ+b3NnaXBhY2thZ2U8L2lkPgotICA8Zm9ybWF0cz4KLSAgICA8Zm9ybWF0PmRpcjwvZm9ybWF0PgotICAgIDxmb3JtYXQ+emlwPC9mb3JtYXQ+Ci0gIDwvZm9ybWF0cz4KLSAgPGluY2x1ZGVCYXNlRGlyZWN0b3J5PmZhbHNlPC9pbmNsdWRlQmFzZURpcmVjdG9yeT4KLSAgPGZpbGVTZXRzPgotICAgIDxmaWxlU2V0PgotICAgICAgPGRpcmVjdG9yeT4ke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9nZW5lcmF0ZWQtcmVzb3VyY2VzPC9kaXJlY3Rvcnk+Ci0gICAgICA8b3V0cHV0RGlyZWN0b3J5Pi88L291dHB1dERpcmVjdG9yeT4KLSAgICA8L2ZpbGVTZXQ+Ci0gIDwvZmlsZVNldHM+Ci0gIDxkZXBlbmRlbmN5U2V0cz4KLSAgICA8ZGVwZW5kZW5jeVNldD4KLSAgICAgIDxvdXRwdXREaXJlY3Rvcnk+b3BlbmRheWxpZ2h0L3BsdWdpbnM8L291dHB1dERpcmVjdG9yeT4KLSAgICAgIDxvdXRwdXRGaWxlTmFtZU1hcHBpbmc+Ci0gICAgICAgICR7YXJ0aWZhY3QuZ3JvdXBJZH0uJHthcnRpZmFjdC5hcnRpZmFjdElkfS0ke2FydGlmYWN0LnZlcnNpb259JHtkYXNoQ2xhc3NpZmllcj99LiR7YXJ0aWZhY3QuZXh0ZW5zaW9ufQotICAgICAgPC9vdXRwdXRGaWxlTmFtZU1hcHBpbmc+Ci0gICAgICA8dW5wYWNrPmZhbHNlPC91bnBhY2s+Ci0gICAgICA8c2NvcGU+cnVudGltZTwvc2NvcGU+Ci0gICAgICA8dXNlVHJhbnNpdGl2ZURlcGVuZGVuY2llcz5mYWxzZTwvdXNlVHJhbnNpdGl2ZURlcGVuZGVuY2llcz4KLSAgICA8L2RlcGVuZGVuY3lTZXQ+Ci0gIDwvZGVwZW5kZW5jeVNldHM+Ci08L2Fzc2VtYmx5PgpkaWZmIC0tZ2l0IGEvY2xpL3NjcmlwdHMvaGEtaGVhbHRoLWNoZWNrLnNoIGIvY2xpL3NjcmlwdHMvaGEtaGVhbHRoLWNoZWNrLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2NWVhMTRlLi4wMDAwMDAwCi0tLSBhL2NsaS9zY3JpcHRzL2hhLWhlYWx0aC1jaGVjay5zaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLSMhL2Jpbi9iYXNoCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotIwotIyBUaGlzIHNjcmlwdCBpcyBpbnZva2VkIGFzIHBhcnQgb2YgVlJSUCB0cmFja19zY3JpcHQgZnVuY3Rpb24KLSMgVGhlIGdvYWwgaXMgdG8gZG8gYSBoZWFsdGggY2hlY2sgb2Ygc2RucGxhdGZvcm0gdGhyb3VnaCBhIHJlc3QgQVBJCi0jIGludm9jYXRpb24sIGFuZCBpZiBoZWFsdGggaXMgbm90IGdvb2QsIHRoZW4gcmV0dXJuIHdpdGggZXJyb3IgY29kZQotIwotaWYgWyAtZSAiL29wdC9zZG5wbGF0Zm9ybS9oZWFsdGgtY2hlY2stZXJyb3ItbWVzc2FnZSIgXQotdGhlbgotICBybSAtZiAvb3B0L3NkbnBsYXRmb3JtL2hlYWx0aC1jaGVjay1lcnJvci1tZXNzYWdlCi1maQotCi1GQUlMT1ZFUj0kMwotCi1pZiBbIC1lICIvb3B0L3NkbnBsYXRmb3JtL2ZvcmNlLW9uZS10aW1lLWhlYWx0aC1jaGVjay1mYWlsdXJlIiBdCi10aGVuCi0gIGxvZ2dlciAiJDA6IGZvcmNlLW9uZS10aW1lLWhlYWx0aC1jaGVjay1mYWlsdXJlIGZpbGUgZXhpc3RzIC0tIHJldHVybmluZyBlcnJvciBleGl0IGNvZGUiCi0gIHJtIC1mIC9vcHQvc2RucGxhdGZvcm0vZm9yY2Utb25lLXRpbWUtaGVhbHRoLWNoZWNrLWZhaWx1cmUKLSAgZWNobyAiVXNlciByZXF1ZXN0ZWQgZmFpbG92ZXIuIiA+IC9vcHQvc2RucGxhdGZvcm0vaGVhbHRoLWNoZWNrLWVycm9yLW1lc3NhZ2UKLSAgZXhpdCAxCi1maQotCi1pZiBbICIkRkFJTE9WRVIiIF0gOyB0aGVuCi0gICAgZXhpdCAwCi1maQotCi1pZiBbIC1lICIvdmFyL3J1bi9zZG5wbGF0Zm9ybS1oZWFsdGhjaGVjay1kaXNhYmxlZCIgXTsgdGhlbgotICAgT0xEPWBjYXQgL3Zhci9ydW4vc2RucGxhdGZvcm0taGVhbHRoY2hlY2stZGlzYWJsZWRgCi0gICBORVc9YGRhdGUgKyVzYAotICAgaWYgWyAkTkVXIC1ndCAkT0xEIF07IHRoZW4KLSAgICAgICAjIGlmIG5ldyB0aW1lc3RhbXAgaXMgZ3JlYXRlciwgcmVtb3ZlIHRoZSBmaWxlIGFuZCBkbyBoZWFsdGggY2hlY2sKLSAgICAgICBybSAtZiAvdmFyL3J1bi9zZG5wbGF0Zm9ybS1oZWFsdGhjaGVjay1kaXNhYmxlZCAKLSAgIGVsc2UKLSAgICAgICAjIHNraXAgdGhlIGhlYWx0aCBjaGVjayBhbmQgZXhpdAotICAgICAgIGV4aXQgMAotICAgZmkKLWZpCi0KLUNPVU5UPSQxCi1TVEVQPSQyCi1USU1FUj0wCi1zdGFydD0iJChkYXRlICslcyVOKSIKLXdoaWxlIFsgJFRJTUVSIC1sZSAkQ09VTlQgXSA7IGRvCi0gICAgY3VybCAtZiAtcyAiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3dtL2NvcmUvaGVhbHRoL2pzb24iCi0gICAgRVJST1I9JD8KLSAgICBpZiBbICRFUlJPUiAtZXEgMCBdOyB0aGVuCi0gICAgICAgIGJyZWFrCi0gICAgZmkKLSAgICBzbGVlcCAkU1RFUAotICAgIFRJTUVSPSQoKFNURVArVElNRVIpKQotZG9uZQotZHVyYXRpb249IiQoKCQoZGF0ZSArJXMlTiktc3RhcnQpKSIKLWR1cmF0aW9uPSIkKChkdXJhdGlvbi8xMDAwMDAwKSkiCi1sb2dnZXIgImhhLWhlYWx0aCBjaGVja2VyIHRvb2sgJGR1cmF0aW9uIG1pbGxpc2Vjb25kcyIKLWlmIFsgJEVSUk9SIC1uZSAwIF07IHRoZW4KLSAgbG9nZ2VyICIkMDogc2RucGxhdGZvcm0gaGVhbHRoIGNoZWNrIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJEVSUk9SIgotICBlY2hvICJDb250cm9sbGVyIGhlYWx0aCBjaGVjayBmYWlsZWQuIiA+IC9vcHQvc2RucGxhdGZvcm0vaGVhbHRoLWNoZWNrLWVycm9yLW1lc3NhZ2UKLSAgZXhpdCAxCi1maQotCi1leGl0IDAKZGlmZiAtLWdpdCBhL2NsaS9zY3JpcHRzL2hhLW5vdGlmeS1yb2xlLnNoIGIvY2xpL3NjcmlwdHMvaGEtbm90aWZ5LXJvbGUuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDI1ZTg2NzEuLjAwMDAwMDAKLS0tIGEvY2xpL3NjcmlwdHMvaGEtbm90aWZ5LXJvbGUuc2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0jIS9iaW4vYmFzaAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLSMgTWFwIHRoZSBrZWVwYWxpdmVkIHN0YXRlIG5hbWUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc2RucGxhdGZvcm0gcm9sZQotTkVXX1NUQVRFPSQzCi0KLWxvZ2dlciAibm90aWZ5X3JvbGUuc2g6IENhbGxlZCB3aXRoICckMScsICckMicsICckMyciCi0KLQotY2FzZSAiJE5FV19TVEFURSIgaW4KLSJNQVNURVIiKQotICBST0xFPU1BU1RFUgotICBNRVNTQUdFPSJNYXN0ZXIgcmUtZWxlY3Rpb24gb3IgZmFpbG92ZXIuIgotICA7OwotIkJBQ0tVUCIpCi0gIE1FU1NBR0U9IlN5c3RlbSBzdGFydCB1cCBvciAgbWFzdGVyIHJlLWVsZWN0aW9uLiIKLSAgUk9MRT1TTEFWRQotICA7OwotIkZBVUxUIikKLSAgTUVTU0FHRT0iTWFzdGVyIHJlLWVsZWN0aW9uIgotICBST0xFPVNMQVZFCi0gIDs7Ci0qKQotICBsb2dnZXIgIm5vdGlmeV9yb2xlLnNoOiBVbmV4cGVjdGVkIGtlZXBhbGl2ZWQgc3RhdGU6ICckTkVXX1NUQVRFJyIKLSAgZXhpdCAxCi0gIDs7Ci1lc2FjCi0KLWlmIFsgLWUgIi9vcHQvc2RucGxhdGZvcm0vaGVhbHRoLWNoZWNrLWVycm9yLW1lc3NhZ2UiIF0KLXRoZW4KLSAgTUVTU0FHRT0kKDwvb3B0L3NkbnBsYXRmb3JtL2hlYWx0aC1jaGVjay1lcnJvci1tZXNzYWdlKQotICAjZWNobyAkTUVTU0FHRQotICAjIE9ubHkgZXJyb3IgY29kZSBpcyB1c2VkIHNpbmNlIGVuY29kaW5nIGEgc3RyaW5nIGludG8ganNvbgotICAjIGlzIGVycm9yIHByb25lIHVudGlsIGEgYmV0dGVyIHdheSBmb3VuZCB0byBzZW5kIHRoZSByZXN0IGNhbGwvanNvbgotICAjIFRoZXJlIGFyZSAzIGNvbmRpdGlvbnMgdGhhdCBtYXkgdHJpZ2VyIGZhaWxvdmVyCi0gICMgMSkgdXNlciByZXF1ZXN0IGZhaWxvdmVyCi0gICMgMikgaGEtaGVhbHRoLWNoZWNrLnNoIGZhaWxlZCB3aXRoIG5vbi16ZXJvCi0gICMgMykga2VlcGFsaXZlZCBkZXRlY3RzIGZhaWx1cmUgYW5kIGluaXRpYXRlIGZhaWxpIG92ZXIKLSAgIyAgICBjdXJyZW50bHkga2VlcGFsaXZlZCBkb2VzIG5vdCBwb3N0IGRldGFpbGVkIGluZm9ybWF0aW9uCi0gICMgICAgZm9yIHRoaXMgZmFpbG92ZXIuIE1vcmUgaW52ZXN0aWdhdGlvbiBuZWVkcyB0byBiZSBkb25lLgotICBsb2dnZXIgImxhc3QgaGVhbHRoIGNoZWNrIHdpdGggZXJyb3IgJE1FU1NBR0UiCi0gIHJtIC1mIC9vcHQvc2RucGxhdGZvcm0vaGVhbHRoLWNoZWNrLWVycm9yLW1lc3NhZ2UKLWZpCi0KLWxvZ2dlciAibm90aWZ5X3JvbGUuc2g6IFVwZGF0aW5nIHJvbGUgZmlsZSB3aXRoICRST0xFIgotIyBVcGRhdGUgdGhlIGN1cnJlbnRfcm9sZSBmaWxlCi1lY2hvICJzZG5wbGF0Zm9ybS5yb2xlPSRST0xFIiA+IC9vcHQvc2RucGxhdGZvcm0vY3VycmVudF9yb2xlCi0KLWxvZ2dlciAibm90aWZ5X3JvbGUuc2g6IFVwZGF0aW5nIFNkbnBsYXRmb3JtIFJFU1Qgd2l0aCAkUk9MRSIKLSMgQ2FsbCB0aGUgc2RucGxhdGZvcm0gUkVTVCBBUEkgdG8gbm90aWZ5IGFib3V0IHRoZSBuZXcgcm9sZQotY3VybCAtWCBQT1NUIC1kICJ7XCJyb2xlXCI6XCIkUk9MRVwiLFwiY2hhbmdlLWRlc2NyaXB0aW9uXCI6XCIkTUVTU0FHRVwifSIgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC93bS9jb3JlL3JvbGUvanNvbiIKLQotZXhpdCAwCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL01BTklGRVNULmluIGIvY2xpL3NkbmNvbi9NQU5JRkVTVC5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDQ4MTcxYi4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL01BTklGRVNULmluCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1ncmFmdCAqL3RlbXBsYXRlcwotZ3JhZnQgKi9pbWcKLWdyYWZ0ICovc3RhdGljCi1ncmFmdCBhcHBzLyovdGVtcGxhdGVzCi1ncmFmdCBhcHBzLyovaW1nCi1ncmFmdCBhcHBzLyovc3RhdGljCi1nbG9iYWwtZXhjbHVkZSB0ZXN0cy5weQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9fX2luaXRfXy5weSBiL2NsaS9zZG5jb24vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGY2ZDdkODIuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IG9zCi0jIHRoaXMgbGluZSBtdXN0IGJlIGJlZm9yZSB0aGUgbmV4dCBpbXBvcnRzCi1pbXBvcnQgY29uc3RhbnRzCi1TRE5fUk9PVCA9IGNvbnN0YW50cy5TRE5fUk9PVAotZnJvbSBzZG5jb24uYXBwbG9hZGVyIGltcG9ydCBBcHBMb2FkZXIKLWZyb20gc2RuY29uLnVybHMgaW1wb3J0IHVybHBhdHRlcm5zCi1mcm9tIGRqYW5nby5jb25mLnVybHMuZGVmYXVsdHMgaW1wb3J0ICoKLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZQotaW1wb3J0IG9zLnBhdGgKLQotY29yZXVpX2luaXRlZCA9IEZhbHNlCi0KLVJPTEVfUEFUSCA9ICIlcy9jdXJyZW50X3JvbGUiICUgU0ROX1JPT1QKLVVQR1JBREVfUEFUSCA9ICIlcy91cGdyYWRpbmciICUgU0ROX1JPT1QKLUNBU1NBTkRSQV9TRU5USU5FTCA9ICIlcy9ydW4vc3RhcnRpbmciICVTRE5fUk9PVAotCi1TTEFWRV9ST19VUkxfV0hJVEVMSVNUID0gWyIvcmVzdC92MS9zeXN0ZW0iLAotICAgICAgICAgICAgICAgICAgICAgICAiL3Jlc3QvdjEvY29udHJvbGxlci9zdG9yYWdlL3RhYmxlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICIvcmVzdC92MS9tb2RlbC9jb250cm9sbGVyLW5vZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAiL3Jlc3QvdjEvbW9kZWwvY29udHJvbGxlci1hbGlhcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICIvcmVzdC92MS9tb2RlbC9zeW5jZC1jb25maWcvZGVmYXVsdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICIvcmVzdC92MS9tb2RlbC9mZWF0dXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIi9yZXN0L3YxL21vZGVsL3N0YXRkcm9wZC1wcm9ncmVzcy1pbmZvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIi9yZXN0L3YxL21vZGVsL3N0YXRkcm9wZC1jb25maWcvZGVmYXVsdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICIvcmVzdC92MS9tb2RlbC9maXJld2FsbC1ydWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIi9yZXN0L3YxL21vZGVsL2NvbnRyb2xsZXItZG9tYWluLW5hbWUtc2VydmVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIi9yZXN0L3YxL3N0YXRzL21ldGFkYXRhIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIi9yZXN0L3YxL3N5c3RlbS9oYS9jbHVzdGVybmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICIvcmVzdC92MS9zeXN0ZW0vaGEvcm9sZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICIvcmVzdC92MS9zeXN0ZW0vcmVsb2FkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgXQotCi1TTEFWRV9SV19VUkxfV0hJVEVMSVNUID0gWwotICAgICAgICAgICAgICAgICAgICAgICAgICIvcmVzdC92MS9zdGF0cy9kYXRhL2RlZmF1bHQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICMgTmVlZCB0byBtYWtlIGNvbnRyb2xsZXItaW50ZXJmYWNlIFJXIGJlY2F1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIyBkaXNjb3Zlcl9pcCBkYWVtb24gbW9uaXRvcnMgY2hhbmdlcyB0byB0aGUgbmV0d29yawotICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZXJmYWNlcyBhbmQgdXBkYXRlcyB0aGUgImRpc2NvdmVyZWRfaXAiIGFuZCAibWFjIgotICAgICAgICAgICAgICAgICAgICAgICAgICMgZmllbGRzIGluIHRoZSBjb250cm9sbGVyLWludGVyZmFjZSwgZXZlbiBvbiB0aGUgc2xhdmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogUmVhbGx5IHRob3NlIGZpZWxkcyBzaG91bGQgYmUgaW4gYSBkaWZmZXJlbnQgbW9kZWwgc28KLSAgICAgICAgICAgICAgICAgICAgICAgICAjIHdlIHdvdWxkbid0IGJlIG1peGluZyBjb25maWd1cmF0aW9uIGFuZCBkaXNjb3ZlcmVkIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IGl0J3MgdG9vIGxhdGUgaW4gdGhlIHJlbGVhc2UgY3ljbGUgdG8gbWFrZSB0aGF0IGNoYW5nZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAiL3Jlc3QvdjEvbW9kZWwvY29udHJvbGxlci1pbnRlcmZhY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICMgTmVlZHMgdG8gYmUgUlcsIHRvIGFsbG93IGNsdXN0ZXIgbnVtYmVyIHVwZGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICMgZXZlbiBpZiBhbGwgdGhlIGNvbnRyb2xsZXJzIGFyZSBzbGF2ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAiL3Jlc3QvdjEvbW9kZWwvZ2xvYmFsLWNvbmZpZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi9yZXN0L3YxL21vZGVsL2ZpcmV3YWxsLXJ1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICIvcmVzdC92MS9tb2RlbC9jb250cm9sbGVyLW5vZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICIvcmVzdC92MS9zeXN0ZW0vdXBncmFkZS9pbWFnZS1uYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiL3Jlc3QvdjEvc3lzdGVtL3VwZ3JhZGUvZXh0cmFjdC1pbWFnZS1tYW5pZmVzdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi9yZXN0L3YxL3N5c3RlbS91cGdyYWRlL2V4ZWN1dGUtdXBncmFkZS1zdGVwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiL3Jlc3QvdjEvc3lzdGVtL3VwZ3JhZGUvYWJvcnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICIvcmVzdC92MS9zeXN0ZW0vcm9sbGJhY2svY29uZmlnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiL3Jlc3QvdjEvc3lzdGVtL2hhL2RlY29tbWlzc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi9yZXN0L3YxL3N5c3RlbS9oYS9yb2xlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiL3Jlc3QvdjEvc3lzdGVtL3JlbG9hZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi9yZXN0L3YxL3N5c3RlbS9yZXNldGJzYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi9yZXN0L3YxL3N5c3RlbS91cGxvYWQtZGF0YSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgXQotCi1jbGFzcyBTRE5Db25BcHBMb2FkZXJNaWRkbGVXYXJlKG9iamVjdCk6Ci0gICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgZ2xvYmFsIGNvcmV1aV9pbml0ZWQsIHVybHBhdHRlcm5zCi0gICAgICAgIGlmIG5vdCBjb3JldWlfaW5pdGVkOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIEFwcExvYWRlci5yZWdpc3RlckFsbEFwcHMoKQotICAgICAgICAgICAgICAgIGNvcmV1aV9pbml0ZWQgPSBUcnVlCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHByaW50ICIqKioqIHBhbmljISBBcHBMb2FkZXIucmVnaXN0ZXJBbGxBcHBzKCkgdGhyZXcgdGhpcyBFeGNlcHRpb246IgotICAgICAgICAgICAgICAgIHByaW50IGUKLSAgICAgICAgICAgIGZvciBpbmRleCwgYXBwIGluIGVudW1lcmF0ZShBcHBMb2FkZXIuYXBwcyk6Ci0gICAgICAgICAgICAgICAgIyBSZWRpcmVjdCAvIHRvIHRoZSBmaXJzdCBhcHAgaW4gdGhlIGxpc3QKLSAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gMCk6Ci0gICAgICAgICAgICAgICAgICAgIHVybHBhdHRlcm5zICs9IHBhdHRlcm5zKCAnJywgKHInXiQnLCAnZGphbmdvLnZpZXdzLmdlbmVyaWMuc2ltcGxlLnJlZGlyZWN0X3RvJywgeyd1cmwnOiAnLycrYXBwLm5hbWV9KSwpCi0gICAgICAgICAgICAgICAgdXJscGF0dGVybnMgKz0gcGF0dGVybnMoICcnLCAocideJythcHAubmFtZSsnLz8kJywgJ3NkbmNvbi5jb3JldWkudmlld3Muc2hvd19hcHBsaWNhdGlvbl90YWJzJywgeydhcHAnOmFwcC5uYW1lfSkgKQotICAgICAgICAgICAgICAgIHVybHBhdHRlcm5zICs9IHBhdHRlcm5zKCAnJywgKHInXicrYXBwLm5hbWUrJy8nLCBpbmNsdWRlKGFwcC5uYW1lKycudXJscycpKSwgKQotICAgICAgICAgICAgICAgIGZvciB0IGluIGFwcC50YWJzOgotICAgICAgICAgICAgICAgICAgICB1cmxwYXR0ZXJucyArPSBwYXR0ZXJucyhhcHAubmFtZSsnLnZpZXdzJywgKHInXicrYXBwLm5hbWUrJy8nK3RbImlkIl0rJy8/JCcsIHRbInZpZXciXSkgKQotCi1jbGFzcyBIQVJlZGlyZWN0TWlkZGxlV2FyZShvYmplY3QpOgotICAgIGRlZiBwcm9jZXNzX3JlcXVlc3QgKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBwaW5mbyA9IHJlcXVlc3QucGF0aF9pbmZvCi0gICAgICAgIGlmIHBpbmZvWy0xXSA9PSAiLyIgOgotICAgICAgICAgICAgcGluZm8gPSBwaW5mb1s6LTFdCi0KLSAgICAgICAgaWYgcmVxdWVzdC5tZXRob2QgPT0gIkdFVCI6Ci0gICAgICAgICAgICBmb3IgbWF0Y2ggaW4gU0xBVkVfUk9fVVJMX1dISVRFTElTVDoKLSAgICAgICAgICAgICAgICBpZiBwaW5mby5zdGFydHN3aXRoKG1hdGNoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBmb3IgbWF0Y2ggaW4gU0xBVkVfUldfVVJMX1dISVRFTElTVDoKLSAgICAgICAgICAgIGlmIHBpbmZvLnN0YXJ0c3dpdGgobWF0Y2gpOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcm9sZSA9ICJNQVNURVIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggb3BlbihST0xFX1BBVEgsICJyIikgYXMgZjoKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoInNkbnBsYXRmb3JtLnJvbGUiKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSBsaW5lLnNwbGl0KCI9IilbMV0uc3RyaXAoKQotICAgICAgICBleGNlcHQgSU9FcnJvciwgZTogIyBGaXJzdGJvb3QgZG9lc24ndCBoYXZlIHRoZSBmaWxlCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiByb2xlID09ICJTTEFWRSIgYW5kIG9zLnBhdGguZXhpc3RzKFVQR1JBREVfUEFUSCkgPT0gRmFsc2U6Ci0gICAgICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHN0YXR1cyA9IDMwMykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2FwcGxvYWRlci5weSBiL2NsaS9zZG5jb24vYXBwbG9hZGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1ZDVkYjYxLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vYXBwbG9hZGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gZGphbmdvLmRiIGltcG9ydCBtb2RlbHMKLWZyb20gZGphbmdvLmNvbmYudXJscy5kZWZhdWx0cyBpbXBvcnQgKgotCi0jIFRoaXMgaXMgYSBjbGFzcyB0aGF0IGlzIHVzZWQgdG8ga2VlcCBhIGxpc3Qgb2YgYXBwcyBhbmQgdGhlaXIgdGFicyBpbiBtZW1vcnkKLWNsYXNzIEFwcExpc3RlcigpOgotICAgIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBsYWJlbCwgcHJpb3JpdHksIGRlc2NyaXB0aW9uPSIiKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLmxhYmVsID0gbGFiZWwKLSAgICAgICAgc2VsZi5wcmlvcml0eSA9IHByaW9yaXR5Ci0gICAgICAgIHNlbGYuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgotICAgICAgICBzZWxmLnRhYnMgPSBbXQotCi0gICAgZGVmIG9yZGVyVGFicyhzZWxmLCBhLCBiKToKLSAgICAgICAgcmV0dXJuIGNtcChpbnQoYVsicHJpb3JpdHkiXSksIGludChiWyJwcmlvcml0eSJdKSkKLSAgICAgICAgCi0gICAgZGVmIGFkZFRhYihzZWxmLCBpZCwgbGFiZWwsIHZpZXcsIHByaW9yaXR5PTEwMDApOgotICAgICAgICBmb3IgdCBpbiBzZWxmLnRhYnM6Ci0gICAgICAgICAgICBpZiB0WyJpZCJdID09IGlkOgotICAgICAgICAgICAgICAgIHNlbGYudGFicy5yZW1vdmUodCkKLSAgICAgICAgc2VsZi50YWJzLmFwcGVuZCggeyAnaWQnOmlkLCAnbGFiZWwnOmxhYmVsLCAicHJpb3JpdHkiOnByaW9yaXR5LCAidmlldyI6dmlldyB9ICkKLSAgICAgICAgc2VsZi50YWJzLnNvcnQoc2VsZi5vcmRlclRhYnMpCi0KLWNsYXNzIEFwcExvYWRlcigpOgotICAgIAotICAgICMgTGlzdCBvZiBhbGwgcmVnaXN0ZXJlZCBhcHBsaWNhdGlvbnMKLSAgICAjCi0gICAgIyBUaGlzIGlzIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMKLSAgICAjCi0gICAgCi0gICAgZmlyc3RJbml0ID0gVHJ1ZQotICAgIGFwcHMgPSBbXQotCi0gICAgQGNsYXNzbWV0aG9kICAgIAotICAgIGRlZiBvcmRlckFwcHMoY2xzLCBhLCBiKToKLSAgICAgICAgICAgIHJldHVybiBjbXAoaW50KGEucHJpb3JpdHkpLCBpbnQoYi5wcmlvcml0eSkpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgYWRkQXBwKGNscyxhcHApOgotICAgICAgICBmb3IgYSBpbiBjbHMuYXBwczoKLSAgICAgICAgICAgIGlmIGEubmFtZSA9PSBhcHAubmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgY2xzLmFwcHMuYXBwZW5kKGFwcCkKLSAgICAgICAgY2xzLmFwcHMuc29ydChjbHMub3JkZXJBcHBzKQotICAgICAgICAgICAgCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldEFwcHMoY2xzKToKLSAgICAgICAgcmV0dXJuIGNscy5hcHBzCi0KLSAgICBAY2xhc3NtZXRob2QgICAgCi0gICAgZGVmIGdldEFwcChjbHMsIG5hbWUpOgotICAgICAgICBmb3IgYSBpbiBjbHMuYXBwczoKLSAgICAgICAgICAgIGlmIGEubmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBhCi0gICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiByZWdpc3RlckFsbEFwcHMoY2xzKToKLSAgICAgICAgaWYgY2xzLmZpcnN0SW5pdDoKLSAgICAgICAgICAgIGZyb20gZGphbmdvLmNvbmYgaW1wb3J0IHNldHRpbmdzCi0gICAgICAgICAgICBpZiAic2RuY29uLmNvcmV1aSIgbm90IGluIHNldHRpbmdzLklOU1RBTExFRF9BUFBTOgotICAgICAgICAgICAgICAgIHByaW50ICIqKioqKiogcGFuaWMsIHNkbmNvbi5jb3JldWkgaXMgbWlzc2luZyEiCi0gICAgICAgICAgICBmb3IgYXBwIGluIHNldHRpbmdzLklOU1RBTExFRF9BUFBTOgotICAgICAgICAgICAgICAgIGlmIG5vdCBhcHAuc3RhcnRzd2l0aCgiZGphbmdvIik6Ci0gICAgICAgICAgICAgICAgICAgIGluaXRfZnVuYyA9IF9faW1wb3J0X18oIiVzLnZpZXdzIiAlIGFwcCwgZnJvbWxpc3Q9WyJic2NfYXBwX2luaXQiXSkKLSAgICAgICAgICAgICAgICAgICAgaWYgJ2JzY19hcHBfaW5pdCcgaW4gZGlyKGluaXRfZnVuYyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbml0X2Z1bmMuYnNjX2FwcF9pbml0KCkKLSAgICAgICAgICAgIGNscy5maXJzdEluaXQ9RmFsc2UKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vYXBwcy9jc3RhdHMvX19pbml0X18ucHkgYi9jbGkvc2RuY29uL2FwcHMvY3N0YXRzL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YWIyNzgzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vYXBwcy9jc3RhdHMvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9hcHBzL2NzdGF0cy9tb2RlbHMucHkgYi9jbGkvc2RuY29uL2FwcHMvY3N0YXRzL21vZGVscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjY0NGY3MS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2FwcHMvY3N0YXRzL21vZGVscy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi0KLSMgQ3JlYXRlIHlvdXIgbW9kZWxzIGhlcmUuCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2FwcHMvY3N0YXRzL3N0YXRpYy9jc3MvdGltZXNlbGVjdG9yLmNzcyBiL2NsaS9zZG5jb24vYXBwcy9jc3RhdHMvc3RhdGljL2Nzcy90aW1lc2VsZWN0b3IuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyMjNlZTRlLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vYXBwcy9jc3RhdHMvc3RhdGljL2Nzcy90aW1lc2VsZWN0b3IuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLSAgdWwuYnNudGltZWludGVydmFsIHsKLSAgICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICAgbWFyZ2luOiAycHg7Ci0gICAgIHBhZGRpbmc6IDBweDsKLSAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKLSAgICAgY2xlYXI6IGJvdGg7Ci0gIH0KLSAgdWwuYnNudGltZWludGVydmFsIGxpIHsKLSAgICAgZmxvYXQ6IGxlZnQ7Ci0gICAgIG1hcmdpbjogMDsKLSAgICAgcGFkZGluZzogMDsKLSAgICAgaGVpZ2h0OiAzMHB4OwotICAgICBkaXNwbGF5OiB0YWJsZTsKLSAgICAgYm9yZGVyLXNwYWNpbmc6IDBweDsKLSAgfQotICAuYnNudGltZWludGVydmFsIGRpdi5jZW50ZXIgewotICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwotICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwotICB9Ci0gIC5ic250aW1laW50ZXJ2YWwgYSB7Ci0gICAgIGRpc3BsYXk6IGJsb2NrOwotICB9Ci0gIGEuYnNuc2VsZWN0b3IgewotICAgICBjdXJzb3I6IHBvaW50ZXI7Ci0gICAgIG1hcmdpbjogMHB4OwotICAgICBwYWRkaW5nOiAzcHg7Ci0gICAgIGJvcmRlcjogc29saWQgMXB4ICMzMzMzMzM7Ci0gICAgIGJvcmRlci1yaWdodDogbm9uZTsKLSAgICAgY29sb3I6ICMyRTZFOUU7Ci0gICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci0KLSAgICAgYmFja2dyb3VuZC1jb2xvcjogI0VFRUVFRTsKLSAgICAgLyogRmlyZWZveCAzLjYrICovCi0gICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KDEwMCUgMTAwJSA5MGRlZywgI0NDQ0NDQywgI0VFRUVFRSk7Ci0gICAgIAotICAgICAvKiBTYWZhcmkgNS4xKywgQ2hyb21lIDEwKyAqLwotICAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjRUVFRUVFLCAjQ0NDQ0NDKTsKLSAgICAgCi0gICAgIC8qIE9wZXJhIDExLjEwKyAqLwotICAgICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQoI0NDQ0NDQywgI0VFRUVFRSk7Ci0KLSAgfQotICBhLmJzbnNlbGVjdG9yLmxlZnQgewotICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuNWVtOwotICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuNWVtOwotICB9Ci0gIGEuYnNuc2VsZWN0b3IucmlnaHQgewotICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjVlbTsKLSAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IC41ZW07Ci0gICAgIGJvcmRlci1yaWdodDogc29saWQgMXB4ICMzMzMzMzM7Ci0gIH0KLSAgYS5ic25zZWxlY3Rvcjpob3ZlciB7Ci0gICAgIGJhY2tncm91bmQtY29sb3I6ICNEREREREQ7Ci0KLSAgICAgLyogRmlyZWZveCAzLjYrICovCi0gICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KDEwMCUgMTAwJSA5MGRlZywgI0JCQkJCQiwgI0RERERERCk7Ci0gICAgIAotICAgICAvKiBTYWZhcmkgNS4xKywgQ2hyb21lIDEwKyAqLwotICAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjRERERERELCAjQkJCQkJCKTsKLSAgICAgCi0gICAgIC8qIE9wZXJhIDExLjEwKyAqLwotICAgICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQoI0JCQkJCQiwgI0RERERERCk7Ci0gIH0KLSAgYS5ic25zZWxlY3Rvci5zZWxlY3RlZCB7Ci0gICAgIGNvbG9yOiAjRUVFRUVFOwotICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkU2RTlFOwotCi0gICAgIC8qIEZpcmVmb3ggMy42KyAqLwotICAgICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCgxMDAlIDEwMCUgOTBkZWcsICMyRTZFOUUsICMzRDkyQzIpOwotICAgICAKLSAgICAgLyogU2FmYXJpIDUuMSssIENocm9tZSAxMCsgKi8KLSAgICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIzNEOTJDMiwgIzJFNkU5RSk7Ci0gICAgIAotICAgICAvKiBPcGVyYSAxMS4xMCsgKi8KLSAgICAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KCMyRTZFOUUsICMzRDkyQzIpOwotICB9Ci0gIC5ic25sYWJlbCB7Ci0gICAgIG1hcmdpbi1sZWZ0OiA1cHg7Ci0gICAgIG1hcmdpbi1yaWdodDogMnB4OwotICB9Ci0gIC5ic25sYWJlbC5kaXNhYmxlZCB7Ci0gICAgIGNvbG9yOiAjQkJCQkJCOwotICB9Ci0gIC5ic250aW1lcGlja2VyIHsKLSAgICAgd2lkdGg6IDEwZW07Ci0gIH0KLSAgLmJzbmNoZWNrYm94IHsKLSAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKLSAgICAgbWFyZ2luLWxlZnQ6IDVweDsKLSAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7Ci0gIH0KLSAgLmJzbmFycm93IHsKLSAgICAgY3Vyc29yOiBwb2ludGVyOwotICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKLSAgICAgcGFkZGluZy1yaWdodDogM3B4OwotICB9Ci0gIC5ic25hcnJvdyBkaXYgewotICAgICB3aWR0aDogMDsKLSAgICAgaGVpZ2h0OiAwOwotICB9Ci0gIC5ic25hcnJvdy5sZWZ0IGRpdiB7Ci0gICAgIGJvcmRlci10b3A6IDExcHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgIGJvcmRlci1ib3R0b206IDExcHggc29saWQgdHJhbnNwYXJlbnQ7IAotICAgICBib3JkZXItcmlnaHQ6MTBweCBzb2xpZCAjQ0NDQ0NDOwotICB9Ci0gIC5ic25hcnJvdy5sZWZ0OmhvdmVyIGRpdiB7Ci0gICAgIGJvcmRlci1yaWdodDoxMHB4IHNvbGlkICMyRTZFOUU7Ci0gIH0KLSAgLmJzbmFycm93LnJpZ2h0IGRpdiB7Ci0gICAgIGJvcmRlci10b3A6IDExcHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgIGJvcmRlci1ib3R0b206IDExcHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgIGJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkICNDQ0NDQ0M7Ci0gIH0KLSAgLmJzbmFycm93LnJpZ2h0OmhvdmVyIGRpdiB7Ci0gICAgIGJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkICMyRTZFOUU7Ci0gIH0KLSAgLmJzbmNoZWNrYm94IHsKLSAgICAgZGlzcGxheTogaW5saW5lOwotICB9Ci0gIC5jbGVhciB7Ci0gICAgIGNsZWFyOiBib3RoOwotICB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9hcHBzL2NzdGF0cy90ZXN0cy5weSBiL2NsaS9zZG5jb24vYXBwcy9jc3RhdHMvdGVzdHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDc5M2U2MTAuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9hcHBzL2NzdGF0cy90ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0iIiIKLVRoaXMgZmlsZSBkZW1vbnN0cmF0ZXMgdHdvIGRpZmZlcmVudCBzdHlsZXMgb2YgdGVzdHMgKG9uZSBkb2N0ZXN0IGFuZCBvbmUKLXVuaXR0ZXN0KS4gVGhlc2Ugd2lsbCBib3RoIHBhc3Mgd2hlbiB5b3UgcnVuICJtYW5hZ2UucHkgdGVzdCIuCi0KLVJlcGxhY2UgdGhlc2Ugd2l0aCBtb3JlIGFwcHJvcHJpYXRlIHRlc3RzIGZvciB5b3VyIGFwcGxpY2F0aW9uLgotIiIiCi0KLWZyb20gZGphbmdvLnRlc3QgaW1wb3J0IFRlc3RDYXNlCi0KLWNsYXNzIFNpbXBsZVRlc3QoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2Jhc2ljX2FkZGl0aW9uKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdHMgdGhhdCAxICsgMSBhbHdheXMgZXF1YWxzIDIuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmZhaWxVbmxlc3NFcXVhbCgxICsgMSwgMikKLQotX190ZXN0X18gPSB7ImRvY3Rlc3QiOiAiIiIKLUFub3RoZXIgd2F5IHRvIHRlc3QgdGhhdCAxICsgMSBpcyBlcXVhbCB0byAyLgotCi0+Pj4gMSArIDEgPT0gMgotVHJ1ZQotIiIifQotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2FwcHMvY3N0YXRzL3VybHMucHkgYi9jbGkvc2RuY29uL2FwcHMvY3N0YXRzL3VybHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE3NTg0MWYuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9hcHBzL2NzdGF0cy91cmxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gZGphbmdvLmNvbmYudXJscy5kZWZhdWx0cyBpbXBvcnQgKgotaW1wb3J0IG9zCi0KLSMgQWRkIHRoZSBVUkxzIHRoYXQgeW91IG5lZWQgaGVyZSBlLmcuOgotCi11cmxwYXR0ZXJucyA9IHBhdHRlcm5zKCcnLAotIyAgIChyJ150YWJfbXl0YWIvJywgJ3ZpZXdzLm15dGFiJyksCi0pCi0KLSMgVW5jb21tZW50IHRoaXMgaWYgeW91IGhhdmUgYnVuZGVsZWQgaW4gc3RhdGljIHJlc291cmNlcyAoZS5nLiBqYXZhc2NyaXB0KSBvciBpbWFnZXMKLSMgVGhleSB3aWxsIGJlIHNlcnZlZCBmcm9tOgotIyAgIGFwcC1uYW1lL3N0YXRpYwotIyAgIGFwcC1uYW1lL2ltZwotCi11cmxwYXR0ZXJucyArPSBwYXR0ZXJucygnJywKLSAgICAocidec3RhdGljLyg/UDxwYXRoPi4qKSQnLCAnZGphbmdvLnZpZXdzLnN0YXRpYy5zZXJ2ZScsIFwKLSAgICAgICAgeydkb2N1bWVudF9yb290Jzogb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksJ3N0YXRpYycpfSksCi0jICAgIChyJ15pbWcvKD9QPHBhdGg+LiopJCcsICdkamFuZ28udmlld3Muc3RhdGljLnNlcnZlJywgXAotIyAgICAgICAgeydkb2N1bWVudF9yb290Jzogb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksJ2ltZycpfSksCi0pCi0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vYXBwcy9jc3RhdHMvdmlld3MucHkgYi9jbGkvc2RuY29uL2FwcHMvY3N0YXRzL3ZpZXdzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlZWYzOGRkLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vYXBwcy9jc3RhdHMvdmlld3MucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIyAgVmlld3MgZm9yIHRoZSBhcHBsaWNhdGlvbgotIwotCi1mcm9tIGRqYW5nby5zaG9ydGN1dHMgaW1wb3J0IHJlbmRlcl90b19yZXNwb25zZQotZnJvbSBzZG5jb24uYXBwbG9hZGVyIGltcG9ydCBBcHBMb2FkZXIsIEFwcExpc3RlcgotZnJvbSBzZG5jb24uY29udHJvbGxlci5tb2RlbHMgaW1wb3J0IFN3aXRjaAotaW1wb3J0IG9zCi0KLWRlZiBic2NfYXBwX2luaXQoKTogIAotICAgICMgQnkgZGVmYXVsdCwgQXBwIE5hbWUgaXMgdGhlIHNhbWUgYXMgZGlyZWN0b3J5IG5hbWUuIENoYW5nZSBpZiBuZWVkZWQuCi0gICAgQVBQX05BTUUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLnNwbGl0KCIvIilbLTFdICAgCi0gICAgCi0gICAgIyBDcmVhdGUgdGhlIEFwcC4gUGFyYW1ldGVycyBhcmUgCi0gICAgIyAtIE5hbWU6IHRoZSBpZCwgbG93ZXJjYXNlIGxldHRlcnMgb25seQotICAgICMgLSBMYWJlbDogSHVtYW4gcmVhZGFibGUgZGlzY3JpcHRpb24gZm9yIHRoZSBtZW51IHRvIHRoZSBsZWZ0Ci0gICAgIyAtIFByaW9yaXR5OiBkZXRlcm1pbmVzIHJhbmtpbmcgdGhlIG1lbnUgdG8gdGhlIGxlZnQpLCBPbmUtbGluZSBkZXNjcmlwdGlvbgotICAgICMgLSBEZXNjcmlwdGlvbjogT25lIGxpbmUgZGVzY3JpcHRpb24gb2YgdGhlIGFwcAotICAgIGFwcCA9IEFwcExpc3RlcihBUFBfTkFNRSwgIkNvbnRyb2xsZXIgU3RhdHMiLCA1LCAiQ29udHJvbGxlciBTdGF0cyIpCi0KLSAgICAjIEFkZCBUYWJzLiBQYXJhbWV0ZXJzIGFyZToKLSAgICAjIC0gTmFtZTogdGhlIGlkLCBsb3dlcmNhc2UgbGV0dGVycyBvbmx5Ci0gICAgIyAtIExhYmVsOiBIdW1hbiByZWFkYWJsZSBkaXNjcmlwdGlvbiBmb3IgdGhlIG1lbnUgdG8gdGhlIGxlZnQKLSAgICAjIC0gVmlldzogbmFtZSBvZiB0aGUgcHl0aG9uIGZ1bmN0aW9uIHRoYXQgY29udGFpbnMgdGhlIGRqYW5nbyB2aWV3IChzZWUgYmVsb3cpCi0gICAgYXBwLmFkZFRhYigib3BlbmZsb3dfZ3JhcGhzIiwgIk9wZW5GbG93IEdyYXBocyIsIGZsb3dfZ3JhcGhzX3ZpZXcpCi0gICAgYXBwLmFkZFRhYigic3lzdGVtX2dyYXBocyIsICJTeXN0ZW0gR3JhcGhzIiwgc3lzdGVtX3N0YXRzX2dyYXBoX3ZpZXcpCi0gICAgQXBwTG9hZGVyLmFkZEFwcChhcHApCi0KLWRlZiBzeXN0ZW1fc3RhdHNfZ3JhcGhfdmlldyhyZXF1ZXN0KToKLSAgICByZXR1cm4gcmVuZGVyX3RvX3Jlc3BvbnNlKCdhcHBzL2NzdGF0cy90ZW1wbGF0ZXMvZ3JhcGhzLmh0bWwnLCB7fSApCi0KLWRlZiBmbG93X2dyYXBoc192aWV3KHJlcXVlc3QpOgotICAgIHJldHVybiByZW5kZXJfdG9fcmVzcG9uc2UoJ2FwcHMvY3N0YXRzL3RlbXBsYXRlcy9vcGVuZmxvd2dyYXBocy5odG1sJywge30gKQotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2FwcHMvZG9jcy9fX2luaXRfXy5weSBiL2NsaS9zZG5jb24vYXBwcy9kb2NzL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YWIyNzgzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vYXBwcy9kb2NzL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vYXBwcy9kb2NzL3N0YXRpYy9wZGYvdXNlci1ndWlkZS5wZGYgYi9jbGkvc2RuY29uL2FwcHMvZG9jcy9zdGF0aWMvcGRmL3VzZXItZ3VpZGUucGRmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhZjhiNTM3Li4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vYXBwcy9kb2NzL3N0YXRpYy9wZGYvdXNlci1ndWlkZS5wZGYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2FwcHMvZG9jcy91cmxzLnB5IGIvY2xpL3NkbmNvbi9hcHBzL2RvY3MvdXJscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjM0NWQ1Zi4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2FwcHMvZG9jcy91cmxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gZGphbmdvLmNvbmYudXJscy5kZWZhdWx0cyBpbXBvcnQgKgotaW1wb3J0IG9zCi0KLXVybHBhdHRlcm5zID0gcGF0dGVybnMoJ2RvY3Mudmlld3MnLAotICAgIChyJ151c2VyLWd1aWRlLz8kJywgJ3VzZXJfZ3VpZGUnKSwKLSkKLQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9hcHBzL2RvY3Mvdmlld3MucHkgYi9jbGkvc2RuY29uL2FwcHMvZG9jcy92aWV3cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjI3NjczNi4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2FwcHMvZG9jcy92aWV3cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jICBWaWV3cyBmb3IgdGhlIGFwcGxpY2F0aW9uCi0jCi0KLWltcG9ydCBvcwotZnJvbSBkamFuZ28uc2hvcnRjdXRzIGltcG9ydCByZW5kZXJfdG9fcmVzcG9uc2UKLWZyb20gc2RuY29uLmFwcGxvYWRlciBpbXBvcnQgQXBwTG9hZGVyLCBBcHBMaXN0ZXIKLWZyb20gc2RuY29uLmNsdXN0ZXJBZG1pbi51dGlscyBpbXBvcnQgaXNDbG91ZEJ1aWxkCi0KLWRvY3NfZW5hYmxlZCA9IEZhbHNlCi0KLWRlZiBic2NfYXBwX2luaXQoKTogIAotICAgIGlmIG5vdCBkb2NzX2VuYWJsZWQ6Ci0gICAgICAgIHJldHVybgotCi0gICAgQVBQX05BTUUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLnNwbGl0KCIvIilbLTFdICAgCi0gICAgYXBwID0gQXBwTGlzdGVyKEFQUF9OQU1FLCAiRG9jdW1lbnRhdGlvbiIsIDksICJVc2VyIEd1aWRlIikKLSAgICBhcHAuYWRkVGFiKCJkb2NzIiwgIlVzZXIgR3VpZGUiLCB1c2VyX2d1aWRlKQotICAgIEFwcExvYWRlci5hZGRBcHAoYXBwKQotCi1kZWYgdXNlcl9ndWlkZShyZXF1ZXN0KToKLSAgICB1cmwgPSAnL2RvY3Mvc3RhdGljL3BkZi91c2VyLWd1aWRlLnBkZicKLSAgICByZXR1cm4gcmVuZGVyX3RvX3Jlc3BvbnNlKCdhcHBzL2RvY3MvdGVtcGxhdGVzL3BkZl9kb2MuaHRtbCcsIHsndXJsJyA6IHVybH0pCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2FwcHMvbG9ncy9fX2luaXRfXy5weSBiL2NsaS9zZG5jb24vYXBwcy9sb2dzL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YWIyNzgzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vYXBwcy9sb2dzL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vYXBwcy9sb2dzL21vZGVscy5weSBiL2NsaS9zZG5jb24vYXBwcy9sb2dzL21vZGVscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjY0NGY3MS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2FwcHMvbG9ncy9tb2RlbHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1vZGVscwotCi0jIENyZWF0ZSB5b3VyIG1vZGVscyBoZXJlLgpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9hcHBzL2xvZ3MvdGVzdHMucHkgYi9jbGkvc2RuY29uL2FwcHMvbG9ncy90ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzkzZTYxMC4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2FwcHMvbG9ncy90ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0iIiIKLVRoaXMgZmlsZSBkZW1vbnN0cmF0ZXMgdHdvIGRpZmZlcmVudCBzdHlsZXMgb2YgdGVzdHMgKG9uZSBkb2N0ZXN0IGFuZCBvbmUKLXVuaXR0ZXN0KS4gVGhlc2Ugd2lsbCBib3RoIHBhc3Mgd2hlbiB5b3UgcnVuICJtYW5hZ2UucHkgdGVzdCIuCi0KLVJlcGxhY2UgdGhlc2Ugd2l0aCBtb3JlIGFwcHJvcHJpYXRlIHRlc3RzIGZvciB5b3VyIGFwcGxpY2F0aW9uLgotIiIiCi0KLWZyb20gZGphbmdvLnRlc3QgaW1wb3J0IFRlc3RDYXNlCi0KLWNsYXNzIFNpbXBsZVRlc3QoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2Jhc2ljX2FkZGl0aW9uKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdHMgdGhhdCAxICsgMSBhbHdheXMgZXF1YWxzIDIuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmZhaWxVbmxlc3NFcXVhbCgxICsgMSwgMikKLQotX190ZXN0X18gPSB7ImRvY3Rlc3QiOiAiIiIKLUFub3RoZXIgd2F5IHRvIHRlc3QgdGhhdCAxICsgMSBpcyBlcXVhbCB0byAyLgotCi0+Pj4gMSArIDEgPT0gMgotVHJ1ZQotIiIifQotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2FwcHMvbG9ncy91cmxzLnB5IGIvY2xpL3NkbmNvbi9hcHBzL2xvZ3MvdXJscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGJhMWY1Zi4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2FwcHMvbG9ncy91cmxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gZGphbmdvLmNvbmYudXJscy5kZWZhdWx0cyBpbXBvcnQgKgotaW1wb3J0IG9zCi0KLSMgQWRkIHRoZSBVUkxzIHRoYXQgeW91IG5lZWQgaGVyZSBlLmcuOgotCi11cmxwYXR0ZXJucyA9IHBhdHRlcm5zKCcnLAotIyAgIChyJ150YWJfbXl0YWIvJywgJ3ZpZXdzLm15dGFiJyksCi0pCi0KLSMgVW5jb21tZW50IHRoaXMgaWYgeW91IGhhdmUgYnVuZGVsZWQgaW4gc3RhdGljIHJlc291cmNlcyAoZS5nLiBqYXZhc2NyaXB0KSBvciBpbWFnZXMKLSMgVGhleSB3aWxsIGJlIHNlcnZlZCBmcm9tOgotIyAgIGFwcC1uYW1lL3N0YXRpYwotIyAgIGFwcC1uYW1lL2ltZwotCi11cmxwYXR0ZXJucyArPSBwYXR0ZXJucygnJywKLSAgICAocidec3RhdGljLyg/UDxwYXRoPi4qKSQnLCAnZGphbmdvLnZpZXdzLnN0YXRpYy5zZXJ2ZScsIFwKLSAgICAgICAgeydkb2N1bWVudF9yb290Jzogb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksJ3N0YXRpYycpfSksCi0jICAgIChyJ15pbWcvKD9QPHBhdGg+LiopJCcsICdkamFuZ28udmlld3Muc3RhdGljLnNlcnZlJywgXAotIyAgICAgICAgeydkb2N1bWVudF9yb290Jzogb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksJ2ltZycpfSksCi0pCi0KLXVybHBhdHRlcm5zICs9IHBhdHRlcm5zKCdsb2dzLnZpZXdzJywKLShyJ15yZXN0L3YxL2NvbnRyb2xsZXItbG9nLWRhdGEtYWxsLyg/UDxjbHVzdGVyPltBLVphLXowLTlfOi5cLV0rKS8oP1A8Y29udHJvbGxlcj5bQS1aYS16MC05X1wuXC1dKykvPyQnLCAnY29udHJvbGxlcl9sb2dfZGF0YV9hbGwnKSwKLShyJ15yZXN0L3YxL2NvbnRyb2xsZXItbG9nLWRhdGEtY29udHJvbGxlci8oP1A8Y2x1c3Rlcj5bQS1aYS16MC05XzouXC1dKykvKD9QPGNvbnRyb2xsZXI+W0EtWmEtejAtOV9cLlwtXSspLz8kJywgJ2NvbnRyb2xsZXJfbG9nX2RhdGFfY29udHJvbGxlcicpLAotKHInXnJlc3QvdjEvY29udHJvbGxlci1sb2ctZGF0YS1kYi8oP1A8Y2x1c3Rlcj5bQS1aYS16MC05XzouXC1dKykvKD9QPGNvbnRyb2xsZXI+W0EtWmEtejAtOV9cLlwtXSspLz8kJywgJ2NvbnRyb2xsZXJfbG9nX2RhdGFfZGInKSwKLShyJ15yZXN0L3YxL2NvbnRyb2xsZXItbG9nLWRhdGEtc2RuY29uLyg/UDxjbHVzdGVyPltBLVphLXowLTlfOi5cLV0rKS8oP1A8Y29udHJvbGxlcj5bQS1aYS16MC05X1wuXC1dKykvPyQnLCAnY29udHJvbGxlcl9sb2dfZGF0YV9zZG5jb24nKSwKLSkKLQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9hcHBzL2xvZ3Mvdmlld3MucHkgYi9jbGkvc2RuY29uL2FwcHMvbG9ncy92aWV3cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDAxOGY5MC4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2FwcHMvbG9ncy92aWV3cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIyAgVmlld3MgZm9yIHRoZSBhcHBsaWNhdGlvbgotIwotCi1mcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2UKLWZyb20gZGphbmdvLnNob3J0Y3V0cyBpbXBvcnQgcmVuZGVyX3RvX3Jlc3BvbnNlCi1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgc2ltcGxlanNvbgotZnJvbSBzZG5jb24ucmVzdC5qc29udmlldyBpbXBvcnQgSnNvblJlc3BvbnNlCi1mcm9tIHNkbmNvbi5hcHBsb2FkZXIgaW1wb3J0IEFwcExvYWRlciwgQXBwTGlzdGVyCi1mcm9tIHNkbmNvbi5zdGF0cy52aWV3cyBpbXBvcnQgaW5pdF9kYl9jb25uZWN0aW9uCi1mcm9tIHNkbmNvbi5zdGF0cy5kYXRhIGltcG9ydCBnZXRfbG9nX2V2ZW50X2RhdGEKLWltcG9ydCBvcwotaW1wb3J0IHRpbWUKLWltcG9ydCBzZG5jb24KLQotQ29tcG9uZW50WGxhdGlvbiA9IHsKLSAgICAnY2Fzc2FuZHJhJzogJ2RhdGFiYXNlJywKLSAgICAnc2RuY29uJzogJ3NkbmNvbicsCi0gICAgJ3NkbnBsYXRmb3JtJzogJ2NvbnRyb2xsZXInCi19Ci0KLWRlZiBsb2dfY29sbGVjdGlvbl9lbmFibGVkKGNvbmZpZ19maWxlPSIlcy9zdGF0ZC9zdGF0ZC5jb25mIiAlIHNkbmNvbi5TRE5fUk9PVCk6Ci0gICAgaW1wb3J0IGpzb24KLSAgICBlbmFibGVkID0gRmFsc2UKLSAgICB0cnk6Ci0gICAgICAgIHdpdGggb3Blbihjb25maWdfZmlsZSwgJ3InKSBhcyBmcDoKLSAgICAgICAgICAgIGNvbmYgPSBqc29uLmxvYWQoZnApCi0gICAgICAgICAgICBpZiBjb25mLmdldCgnaW5wdXQnKToKLSAgICAgICAgICAgICAgICBmb3IgaSBpbiBjb25mWydpbnB1dCddOgotICAgICAgICAgICAgICAgICAgICBpZiBpLmdldCgnbmFtZScpID09ICdMb2dDb2xsZWN0b3InIGFuZCBpLmdldCgnbW9kdWxlcycpOgotICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgIGV4Y2VwdDoKLSAgICAgICAgcGFzcwotICAgIHJldHVybiBlbmFibGVkCi0KLWRlZiBic2NfYXBwX2luaXQoKToKLSAgICAjIENoZWNrIGlmIGxvZ2dpbmcgaXMgZW5hYmxlZCwgZWxzZSBkbyBub3Qgc3RhcnQgdGhlIGFwcAotICAgIGlmIG5vdCBsb2dfY29sbGVjdGlvbl9lbmFibGVkKCk6Ci0gICAgICAgIHJldHVybgotCi0gICAgIyBCeSBkZWZhdWx0LCBBcHAgTmFtZSBpcyB0aGUgc2FtZSBhcyBkaXJlY3RvcnkgbmFtZS4gQ2hhbmdlIGlmIG5lZWRlZC4KLSAgICBBUFBfTkFNRSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykuc3BsaXQoIi8iKVstMV0gICAKLSAgICAKLSAgICAjIENyZWF0ZSB0aGUgQXBwLiBQYXJhbWV0ZXJzIGFyZSAKLSAgICAjIC0gTmFtZTogdGhlIGlkLCBsb3dlcmNhc2UgbGV0dGVycyBvbmx5Ci0gICAgIyAtIExhYmVsOiBIdW1hbiByZWFkYWJsZSBkaXNjcmlwdGlvbiBmb3IgdGhlIG1lbnUgdG8gdGhlIGxlZnQKLSAgICAjIC0gUHJpb3JpdHk6IGRldGVybWluZXMgcmFua2luZyB0aGUgbWVudSB0byB0aGUgbGVmdCksIE9uZS1saW5lIGRlc2NyaXB0aW9uCi0gICAgIyAtIERlc2NyaXB0aW9uOiBPbmUgbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgYXBwCi0gICAgYXBwID0gQXBwTGlzdGVyKEFQUF9OQU1FLCAiTG9ncyIsIDUsICJDb250cm9sbGVyIExvZ3MiKQotCi0gICAgIyBBZGQgVGFicy4gUGFyYW1ldGVycyBhcmU6Ci0gICAgIyAtIE5hbWU6IHRoZSBpZCwgbG93ZXJjYXNlIGxldHRlcnMgb25seQotICAgICMgLSBMYWJlbDogSHVtYW4gcmVhZGFibGUgZGlzY3JpcHRpb24gZm9yIHRoZSBtZW51IHRvIHRoZSBsZWZ0Ci0gICAgIyAtIFZpZXc6IG5hbWUgb2YgdGhlIHB5dGhvbiBmdW5jdGlvbiB0aGF0IGNvbnRhaW5zIHRoZSBkamFuZ28gdmlldyAoc2VlIGJlbG93KQotICAgIGFwcC5hZGRUYWIoImNvbnRyb2xsZXJsb2dzIiwgIkNvbnRyb2xsZXIgTG9ncyIsIGNvbnRyb2xsZXIpCi0gICAgYXBwLmFkZFRhYigiZGJsb2dzIiwgIkRhdGFiYXNlIExvZ3MiLCBkYikKLSAgICBhcHAuYWRkVGFiKCJzZG5jb25sb2dzIiwgIlNETkNvbiBMb2dzIiwgc2RuY29uKQotICAgIGFwcC5hZGRUYWIoImFsbGxvZ3MiLCAiQWxsIExvZ3MiLCBhbGwpCi0gICAgQXBwTG9hZGVyLmFkZEFwcChhcHApCi0KLSMgVmlld3MgLSBmdW5jdGlvbnMgdGhhdCBzZXJ2ZSB0aGUgSFRNTCB0aGF0IGdvZXMgaW50byBlYWNoIHRhYgotZGVmIGNvbnRyb2xsZXIocmVxdWVzdCk6Ci0gICAgcmV0dXJuIHJlbmRlcl90b19yZXNwb25zZSgnYXBwcy9sb2dzL3RlbXBsYXRlcy9sb2dzLmh0bWwnLCB7ICdzb3VyY2UnIDogJ2NvbnRyb2xsZXInIH0gKQotCi1kZWYgZGIocmVxdWVzdCk6Ci0gICAgcmV0dXJuIHJlbmRlcl90b19yZXNwb25zZSgnYXBwcy9sb2dzL3RlbXBsYXRlcy9sb2dzLmh0bWwnLCB7ICdzb3VyY2UnIDogJ2RiJyB9ICkKLQotZGVmIHNkbmNvbihyZXF1ZXN0KToKLSAgICByZXR1cm4gcmVuZGVyX3RvX3Jlc3BvbnNlKCdhcHBzL2xvZ3MvdGVtcGxhdGVzL2xvZ3MuaHRtbCcsIHsgJ3NvdXJjZScgOiAnc2RuY29uJyB9ICkKLQotZGVmIGFsbChyZXF1ZXN0KToKLSAgICByZXR1cm4gcmVuZGVyX3RvX3Jlc3BvbnNlKCdhcHBzL2xvZ3MvdGVtcGxhdGVzL2xvZ3MuaHRtbCcsIHsgJ3NvdXJjZScgOiAnYWxsJyB9ICkKLQotIyBWaWV3cyBkZWZpbmVkIGluIHVybHMucHkKLWRlZiBjb250cm9sbGVyX2xvZ19kYXRhX2FsbChyZXF1ZXN0LCBjbHVzdGVyLCBjb250cm9sbGVyKToKLSAgICBpbml0X2RiX2Nvbm5lY3Rpb24oKQotICAgIHRpbWVfbm93ID0gdGltZS50aW1lKCkqMTAwMCAjY29udmVyIHRvIG1zCi0gICAgIyB3ZSBvbmx5IGdldCBvbmUgZGF5IGZvciBub3csIHRoaXMgd2lsbCBiZSBmaXhlZCB3aGVuIHdlIG1vdmUgdG8gYW4gYWN0dWFsbHkgc2NhbGFibGUgc29sdXRpb24KLSAgICBkYXRhX2RpY3QgPSBnZXRfbG9nX2V2ZW50X2RhdGEoY2x1c3RlciwgY29udHJvbGxlciwgdGltZV9ub3cgLSA4NjQwMDAwMCwgdGltZV9ub3cpCi0gICAgYXJyID0gZ2V0X2FycmF5X2Zyb21fZGljdChkYXRhX2RpY3QsIFRydWUpCi0gICAgcmV0dXJuIGdlbmVyaWNfc2VydmVyX3NpZGVfZGF0YXRhYmxlKHJlcXVlc3QsIGFycikKLQotZGVmIGNvbnRyb2xsZXJfbG9nX2RhdGFfY29udHJvbGxlcihyZXF1ZXN0LCBjbHVzdGVyLCBjb250cm9sbGVyKToKLSAgICBpbml0X2RiX2Nvbm5lY3Rpb24oKQotICAgIHRpbWVfbm93ID0gdGltZS50aW1lKCkqMTAwMCAjY29udmVyIHRvIG1zCi0gICAgIyB3ZSBvbmx5IGdldCBvbmUgZGF5IGZvciBub3csIHRoaXMgd2lsbCBiZSBmaXhlZCB3aGVuIHdlIG1vdmUgdG8gYW4gYWN0dWFsbHkgc2NhbGFibGUgc29sdXRpb24KLSAgICBkYXRhX2RpY3QgPSBnZXRfbG9nX2V2ZW50X2RhdGEoY2x1c3RlciwgY29udHJvbGxlciwgdGltZV9ub3cgLSA4NjQwMDAwMCwgdGltZV9ub3cpCi0gICAgZmlsdGVyZWRfZGljdCA9IFtdCi0gICAgZm9yIGUgaW4gZGF0YV9kaWN0OgotICAgICAgICBpZiBlWydjb21wb25lbnQnXSA9PSAnc2RucGxhdGZvcm0nIG9yIGVbJ2NvbXBvbmVudCddID09ICdzZG5wbGF0Zm9ybS5yZXF1ZXN0JzoKLSAgICAgICAgICAgIGZpbHRlcmVkX2RpY3QuYXBwZW5kKGUpCi0gICAgYXJyID0gZ2V0X2FycmF5X2Zyb21fZGljdChmaWx0ZXJlZF9kaWN0LCBGYWxzZSkKLSAgICByZXR1cm4gZ2VuZXJpY19zZXJ2ZXJfc2lkZV9kYXRhdGFibGUocmVxdWVzdCwgYXJyKQotCi1kZWYgY29udHJvbGxlcl9sb2dfZGF0YV9kYihyZXF1ZXN0LCBjbHVzdGVyLCBjb250cm9sbGVyKToKLSAgICBpbml0X2RiX2Nvbm5lY3Rpb24oKQotICAgIHRpbWVfbm93ID0gdGltZS50aW1lKCkqMTAwMCAjY29udmVyIHRvIG1zCi0gICAgIyB3ZSBvbmx5IGdldCBvbmUgZGF5IGZvciBub3csIHRoaXMgd2lsbCBiZSBmaXhlZCB3aGVuIHdlIG1vdmUgdG8gYW4gYWN0dWFsbHkgc2NhbGFibGUgc29sdXRpb24KLSAgICBkYXRhX2RpY3QgPSBnZXRfbG9nX2V2ZW50X2RhdGEoY2x1c3RlciwgY29udHJvbGxlciwgdGltZV9ub3cgLSA4NjQwMDAwMCwgdGltZV9ub3cpCi0gICAgZmlsdGVyZWRfZGljdCA9IFtdCi0gICAgZm9yIGUgaW4gZGF0YV9kaWN0OgotICAgICAgICBpZiBlWydjb21wb25lbnQnXSA9PSAnY2Fzc2FuZHJhJzoKLSAgICAgICAgICAgIGZpbHRlcmVkX2RpY3QuYXBwZW5kKGUpCi0gICAgYXJyID0gZ2V0X2FycmF5X2Zyb21fZGljdChmaWx0ZXJlZF9kaWN0LCBGYWxzZSkKLSAgICByZXR1cm4gZ2VuZXJpY19zZXJ2ZXJfc2lkZV9kYXRhdGFibGUocmVxdWVzdCwgYXJyKQotCi1kZWYgY29udHJvbGxlcl9sb2dfZGF0YV9zZG5jb24ocmVxdWVzdCwgY2x1c3RlciwgY29udHJvbGxlcik6Ci0gICAgaW5pdF9kYl9jb25uZWN0aW9uKCkKLSAgICB0aW1lX25vdyA9IHRpbWUudGltZSgpKjEwMDAgI2NvbnZlciB0byBtcwotICAgICMgd2Ugb25seSBnZXQgb25lIGRheSBmb3Igbm93LCB0aGlzIHdpbGwgYmUgZml4ZWQgd2hlbiB3ZSBtb3ZlIHRvIGFuIGFjdHVhbGx5IHNjYWxhYmxlIHNvbHV0aW9uCi0gICAgZGF0YV9kaWN0ID0gZ2V0X2xvZ19ldmVudF9kYXRhKGNsdXN0ZXIsIGNvbnRyb2xsZXIsIHRpbWVfbm93IC0gODY0MDAwMDAsIHRpbWVfbm93KQotICAgIGZpbHRlcmVkX2RpY3QgPSBbXQotICAgIGZvciBlIGluIGRhdGFfZGljdDoKLSAgICAgICAgaWYgZVsnY29tcG9uZW50J10gPT0gJ3NkbmNvbic6Ci0gICAgICAgICAgICBmaWx0ZXJlZF9kaWN0LmFwcGVuZChlKQotICAgIGFyciA9IGdldF9hcnJheV9mcm9tX2RpY3QoZmlsdGVyZWRfZGljdCwgRmFsc2UpCi0gICAgcmV0dXJuIGdlbmVyaWNfc2VydmVyX3NpZGVfZGF0YXRhYmxlKHJlcXVlc3QsIGFycikKLQotCi0jIEhlbHBlciBmdW5jdGlvbnMKLWRlZiBnZW5lcmljX3NlcnZlcl9zaWRlX2RhdGF0YWJsZShyZXF1ZXN0LCBkYXRhX2FycmF5KTogCi0gICAgc3RhcnQgICA9IHJlcXVlc3QuR0VULmdldCgiaURpc3BsYXlTdGFydCIsMCkKLSAgICBsZW5ndGggID0gcmVxdWVzdC5HRVQuZ2V0KCJpRGlzcGxheUxlbmd0aCIsMTApCi0gICAgc2VhcmNoX3N0ciAgPSByZXF1ZXN0LkdFVC5nZXQoInNTZWFyY2giLE5vbmUpCi0gICAgCi0gICAgaWYgc2VhcmNoX3N0cjoKLSAgICAgICAgZGF0YV9hcnJheV9mID0gW10KLSAgICAgICAgZm9yIGQgaW4gZGF0YV9hcnJheToKLSAgICAgICAgICAgIGZvciBlIGluIGQ6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpZiBlLmZpbmQoc2VhcmNoX3N0cikgPiAtMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfYXJyYXlfZi5hcHBlbmQoZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGRhdGFfYXJyYXlfZiA9IGRhdGFfYXJyYXkKLQotICAgIGRhdGFfc3Vic2V0ID0gZGF0YV9hcnJheV9mW2ludChzdGFydCk6aW50KHN0YXJ0KStpbnQobGVuZ3RoKV0KLSAgICByZXNwb25zZV9kYXRhID0gJ3sgImFhRGF0YSI6JytzaW1wbGVqc29uLmR1bXBzKGRhdGFfc3Vic2V0KSArICcsICJpVG90YWxEaXNwbGF5UmVjb3JkcyI6ICcgKyBzdHIobGVuKGRhdGFfYXJyYXlfZikpICsgJywgImlUb3RhbFJlY29yZHMiOiAnICsgc3RyKGxlbihkYXRhX2FycmF5X2YpKSArJ30nCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZV9kYXRhLCAnYXBwbGljYXRpb24vanNvbicpCi0KLSMgVGFrZXMgYSBkaWN0aW9uYXJ5IHRoYXQgaW5jbHVkZXMgCi0jIHsgInRpbWVzdGFtcCI6IHVuaXhfdHMsICJsZXZlbCIgOiAic3RyaW5nIiwgIm1lc3NhZ2UiOiAibXNnIiB9Ci0jIGFuZCB0dXJucyBpdCBpbnRvIGEgMkQgYXJyYXkgdGhhdCBpbmNsdWRlcwotIyBbIFt1bml4X3RzLCBsZXZlbCwgbWVzc2FnZV0sIFtldGNdLCBbZXRjXSBdIAotZGVmIGdldF9hcnJheV9mcm9tX2RpY3QoZGljdCwgaW5jbHVkZUNvbXApOgotICAgIGFycmF5ID0gW10KLSAgICBmb3IgZWxlbWVudCBpbiByZXZlcnNlZChkaWN0KToKLSAgICAgICAgaWYgJ2NvbXBvbmVudCcgaW4gZWxlbWVudCBhbmQgZWxlbWVudFsnY29tcG9uZW50J10gPT0gJ3NkbnBsYXRmb3JtLnJlcXVlc3QnOgotICAgICAgICAgICAgZW50cnkgPSBwYXJzZV9zZG5wbGF0Zm9ybV9yZXF1ZXN0X2xvZ19lbnRyeShlbGVtZW50KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZW50cnkgPSBbXQotICAgICAgICAgICAgaWYgJ3RpbWVzdGFtcCcgaW4gZWxlbWVudDoKLSAgICAgICAgICAgICAgICBlbnRyeS5hcHBlbmQoZWxlbWVudFsndGltZXN0YW1wJ10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVudHJ5LmFwcGVuZCgnLScpCi0gICAgICAgICAgICBpZiAnbG9nLWxldmVsJyBpbiBlbGVtZW50OgotICAgICAgICAgICAgICAgIGVudHJ5LmFwcGVuZChlbGVtZW50Wydsb2ctbGV2ZWwnXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW50cnkuYXBwZW5kKCctJykKLSAgICAgICAgICAgIGlmICdtZXNzYWdlJyBpbiBlbGVtZW50OgotICAgICAgICAgICAgICAgIGVudHJ5LmFwcGVuZChlbGVtZW50WydtZXNzYWdlJ10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVudHJ5LmFwcGVuZCgnLScpCi0KLSAgICAgICAgaWYgaW5jbHVkZUNvbXA6Ci0gICAgICAgICAgICBpZiAnY29tcG9uZW50JyBpbiBlbGVtZW50OgotICAgICAgICAgICAgICAgIGVudHJ5Lmluc2VydCgxLCBDb21wb25lbnRYbGF0aW9uW2VsZW1lbnRbJ2NvbXBvbmVudCddXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW50cnkuYXBwZW5kKDEsICctJykKLQotICAgICAgICBhcnJheS5hcHBlbmQoZW50cnkpCi0gICAgcmV0dXJuIGFycmF5Ci0KLSMgUGFyc2VzIGEgU0ROUGxhdGZvcm0gcmVxdWVzdCBsb2cgZW50cnkgaW50byBhbiBhcnJheQotIyBGb3JtYXQgaXMgc2ltaWxhciB0bwotIyB7Ci0jICAgJ3BhY2thZ2UnOiAnUHl0aG9uLXVybGxpYi8yLjcnLCAKLSMgICAndGltZXN0YW1wJzogMTMwNjk2NzAxMTAwMEwsIAotIyAgICdjb21wb25lbnQnOiAnc2RucGxhdGZvcm0ucmVxdWVzdCcsIAotIyAgICdyZXF1ZXN0JzogJ0dFVCAvd20vY29yZS9jb3VudGVyLzAwOjAwOjAwOjAwOjAwOjczOjI4OjAyX09GUGFja2V0SW5fTDNfSVB2NC9qc29uIEhUVFAvMS4xJywgCi0jICAgJ3Jlc3BvbnNlTGVuJzogJzM3JywgCi0jICAgJ2NsaWVudCc6ICcxMjcuMC4wLjEnLCAKLSMgICAncmVzcG9uc2VDb2RlJzogJzIwMCcKLSMgfQotIyBPdXRwdXQgYXJyYXkgaXMgW3VuaXhfdHMsIGxldmVsLCBtZXNzYWdlXQotZGVmIHBhcnNlX3NkbnBsYXRmb3JtX3JlcXVlc3RfbG9nX2VudHJ5KGVsZW1lbnQpOgotICAgIGVudHJ5ID0gW10KLSAgICBpZiAndGltZXN0YW1wJyBpbiBlbGVtZW50OgotICAgICAgICBlbnRyeS5hcHBlbmQoZWxlbWVudFsndGltZXN0YW1wJ10pCi0gICAgZWxzZToKLSAgICAgICAgZW50cnkuYXBwZW5kKCctJykKLSAgICBpZiAncmVzcG9uc2VDb2RlJyBpbiBlbGVtZW50OgotICAgICAgICByYyA9IGVsZW1lbnRbJ3Jlc3BvbnNlQ29kZSddCi0gICAgICAgIGlmIHJjID09ICc0MDQnIG9yIHJjID09ICc1MDAnOgotICAgICAgICAgICAgZW50cnkuYXBwZW5kKCdFUlJPUicpCi0gICAgICAgIGVsaWYgcmMgPT0gJzIwMCc6Ci0gICAgICAgICAgICBlbnRyeS5hcHBlbmQoJ0lORk8nKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZW50cnkuYXBwZW5kKCctJykKLSAgICBlbHNlOgotICAgICAgICBlbnRyeS5hcHBlbmQoJy0nKQotICAgIG1zZyA9ICcnCi0gICAgaWYgJ3JlcXVlc3QnIGluIGVsZW1lbnQ6Ci0gICAgICAgIG1zZyArPSBlbGVtZW50WydyZXF1ZXN0J10KLSAgICBpZiAnY2xpZW50JyBpbiBlbGVtZW50OgotICAgICAgICBtc2cgKz0gJyBDTElFTlQgJyArIGVsZW1lbnRbJ2NsaWVudCddCi0gICAgaWYgJ3Jlc3BvbnNlQ29kZScgaW4gZWxlbWVudDoKLSAgICAgICAgbXNnICs9ICcgJyArIGVsZW1lbnRbJ3Jlc3BvbnNlQ29kZSddCi0gICAgaWYgJ3BhY2thZ2UnIGluIGVsZW1lbnQ6Ci0gICAgICAgIG1zZyArPSAnICcgKyBlbGVtZW50WydwYWNrYWdlJ10KLSAgICBlbnRyeS5hcHBlbmQobXNnKQotICAgIHJldHVybiBlbnRyeQotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi9fX2luaXRfXy5weSBiL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YWIyNzgzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL2FkbWluLnB5IGIvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vYWRtaW4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDJhNGE5OTMuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vYWRtaW4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotZnJvbSBzZG5jb24uY2x1c3RlckFkbWluLm1vZGVscyBpbXBvcnQgQ3VzdG9tZXIsIENsdXN0ZXIsIEN1c3RvbWVyVXNlcgotZnJvbSBkamFuZ28uY29udHJpYiBpbXBvcnQgYWRtaW4KLQotYWRtaW4uc2l0ZS5yZWdpc3RlcihDdXN0b21lcikKLWFkbWluLnNpdGUucmVnaXN0ZXIoQ2x1c3RlcikKLWFkbWluLnNpdGUucmVnaXN0ZXIoQ3VzdG9tZXJVc2VyKQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vbWlkZGxld2FyZS5weSBiL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL21pZGRsZXdhcmUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGY2NmIzNjcuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vbWlkZGxld2FyZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2OSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IHN5cywgcmUKLWZyb20gZGphbmdvLmNvbmYgaW1wb3J0IHNldHRpbmdzCi1mcm9tIGRqYW5nby5jb250cmliLmF1dGgudmlld3MgaW1wb3J0IGxvZ2luCi1mcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2VSZWRpcmVjdCwgSHR0cFJlc3BvbnNlCi1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgc2ltcGxlanNvbgotZnJvbSBkamFuZ28uY29udHJpYiBpbXBvcnQgYXV0aAotZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLm1vZGVscyBpbXBvcnQgVXNlciwgQW5vbnltb3VzVXNlcgotCi1mcm9tIC51dGlscyBpbXBvcnQgaXNDbG91ZEJ1aWxkCi1mcm9tIC5tb2RlbHMgaW1wb3J0IEN1c3RvbWVyVXNlciwgQ3VzdG9tZXIsIENsdXN0ZXIsIEF1dGhUb2tlbgotCi1pbXBvcnQgbG9nZ2luZwotZGVidWdMZXZlbCA9IGxvZ2dpbmcuSU5GTwotbG9nZmlsZSA9IE5vbmUKLQotIyBGb3IgdGVzdGluZywgdW5jb21tZW50IGFzIHJlcXVpcmVkCi0jZGVidWdMZXZlbCA9IGxvZ2dpbmcuREVCVUcKLSNsb2dmaWxlID0gJ21pZGRsZXdhcmUubG9nJwotCi1kZWYgaW5pdExvZ2dlcigpOgotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdtaWRkbGV3YXJlJykKLSAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXMgWyUobmFtZSlzXSAlKGxldmVsbmFtZSlzICUobWVzc2FnZSlzJykKLSAgICBsb2dnZXIuc2V0TGV2ZWwoZGVidWdMZXZlbCkKLQotICAgICMgQWRkIGEgZmlsZSBoYW5kbGVyCi0gICAgaWYgbG9nZmlsZToKLSAgICAgICAgZmlsZV9oYW5kbGVyID0gbG9nZ2luZy5GaWxlSGFuZGxlcihsb2dmaWxlKQotICAgICAgICBmaWxlX2hhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKLSAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoZmlsZV9oYW5kbGVyKQotCi0gICAgIyBBZGQgYSBjb25zb2xlIGhhbmRsZXIKLSAgICBjb25zb2xlX2hhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQotICAgIGNvbnNvbGVfaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQotICAgIGNvbnNvbGVfaGFuZGxlci5zZXRMZXZlbChkZWJ1Z0xldmVsKQotICAgIGxvZ2dlci5hZGRIYW5kbGVyKGNvbnNvbGVfaGFuZGxlcikKLSAgICByZXR1cm4gbG9nZ2VyCi0KLWxvZ2dlciA9IGluaXRMb2dnZXIoKQotCi1kZWYgaXNfbG9jYWxob3N0KHJlcXVlc3QpOgotICAgIHJldHVybiByZXF1ZXN0Lk1FVEFbJ1JFTU9URV9BRERSJ10gaW4gWycxMjcuMC4wLjEnLCAnMTI3LjAuMS4xJywgJ2xvY2FsaG9zdCddCi0KLWNsYXNzIFJlcXVpcmVBdXRoTWlkZGxld2FyZShvYmplY3QpOgotICAgICIiIlJlcXVpcmVBdXRoTWlkZGxld2FyZTogTWlkZGxld2FyZSB0byBlbmZvcmNlIGF1dGhlbnRpY2F0aW9uCi0KLSAgICBJZiBpdCBpcyBlbmFibGVkLCBldmVyeSBEamFuZ28tcG93ZXJlZCBwYWdlLCBleGNlcHQgTE9HSU5fVVJMIGFuZCB0aGUgbGlzdCBvZiBFWEVNUFRfVVJMUywKLSAgICB3aWxsIHJlcXVpcmUgYXV0aGVudGljYXRpb24KLQotICAgIFVuYXV0ZW50aWNhdGVkIHVzZXIgcmVxdWVzdHMgYXJlIHJlZGlyZWN0ZWQgdG8gdGhlIGxvZ2luIHBhZ2Ugc2V0IChMT0dJTl9VUkwgaW4gc2V0dGluZ3MpCi0gICAgVW5hdXRlbnRpY2F0ZWQgUkVTVCBjYWxscyB3aGljaCBhcmUgcmV0dXJuZWQgYSBKU09OIGVycm9yIGFzIGEgNDAzIGZvcmJpZGRlbiByZXNwb25zZQotICAgICIiIgotICAgIAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5lbmZvcmNlX2F1dGggPSBpc0Nsb3VkQnVpbGQoKSAjIEZvciBub3csIGVuZm9yY2UgYXV0aGVudGljYXRpb24gb25seSBpZiB3ZSBhcmUgYSBjbG91ZCBpbnN0YW5jZQotICAgICAgICBzZWxmLmxvZ2luX3VybCA9IGdldGF0dHIoc2V0dGluZ3MsICdMT0dJTl9VUkwnLCAnL2FjY291bnRzL2xvZ2luLycpCi0gICAgICAgIHNlbGYuZXhlbXB0X3VybHMgPSBbc2VsZi5sb2dpbl91cmxdCi0gICAgICAgIHNlbGYuZXhlbXB0X3VybHMgKz0gZ2V0YXR0cihzZXR0aW5ncywgJ0VYRU1QVF9VUkxTJywgW10gKQotICAgICAgICBzZWxmLnJlc3RfcHJlZml4ID0gZ2V0YXR0cihzZXR0aW5ncywgJ1JFU1RfUFJFRklYJywgJy9yZXN0LycpCi0gICAgICAgIGlmIHNlbGYuZW5mb3JjZV9hdXRoOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1JlcXVpcmVBdXRoTWlkZGxld2FyZTogRW5mb3JjaW5nIEF1dGhlbnRpY2F0aW9uJykKLSAgICAKLSAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBpZiBzZWxmLmVuZm9yY2VfYXV0aDoKLSAgICAgICAgICAgIGlmIGlzX2xvY2FsaG9zdChyZXF1ZXN0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgaWYgcmVxdWVzdC51c2VyLmlzX2Fub255bW91cygpOgotICAgICAgICAgICAgICAgIGZvciB1cmwgaW4gc2VsZi5leGVtcHRfdXJsczoKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVxdWVzdC5wYXRoLnN0YXJ0c3dpdGgodXJsKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVkaXJlY3QocmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBwcm9jZXNzX3Jlc3BvbnNlKHNlbGYsIHJlcXVlc3QsIHJlc3BvbnNlKToKLSAgICAgICAgaWYgcmVxdWVzdC5wYXRoLnN0YXJ0c3dpdGgoc2VsZi5sb2dpbl91cmwpOgotICAgICAgICAgICAgcmVzcG9uc2VbJ3gtYnNjLWF1dGgtc3RhdHVzJ10gPSAncmVxdWlyZWQnCi0gICAgICAgIHJldHVybiByZXNwb25zZSAgICAKLQotICAgIGRlZiByZWRpcmVjdChzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgaWYgc2VsZi5yZXN0X3ByZWZpeCBpbiByZXF1ZXN0LnBhdGg6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignUmVxdWlyZUF1dGhNaWRkbGV3YXJlOiBVbmF1dGhlbnRpY2F0ZWQgUkVTVCByZXF1ZXN0OiAlcywgJXMsICVzJyAlICgKLSAgICAgICAgICAgICAgICByZXF1ZXN0LnBhdGgsIHN0cihyZXF1ZXN0LnVzZXIpLCByZXF1ZXN0Lk1FVEFbJ1JFTU9URV9BRERSJ10pKQotICAgICAgICAgICAganNvbl9jb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24vanNvbicKLSAgICAgICAgICAgIGpzb25fZXJyb3JfcmVzcG9uc2UgPSB7J2Vycm9yX3R5cGUnOiAnYXV0aCcsICdkZXNjcmlwdGlvbic6ICdBdXRoZW50aWNhdGlvbiBlcnJvcid9Ci0gICAgICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHNpbXBsZWpzb24uZHVtcHMoanNvbl9lcnJvcl9yZXNwb25zZSksIGpzb25fY29udGVudF90eXBlLCA0MDMpCi0KLSAgICAgICAgbG9nZ2VyLmRlYnVnKCdSZXF1aXJlQXV0aE1pZGRsZXdhcmU6IFJlZGlyZWN0aW5nIHRvIGxvZ2luIHBhZ2U6ICVzLCAlcywgJXMnICUgKAotICAgICAgICAgICAgcmVxdWVzdC5wYXRoLCBzdHIocmVxdWVzdC51c2VyKSwgcmVxdWVzdC5NRVRBWydSRU1PVEVfQUREUiddKSkKLSAgICAgICAgcmV0dXJuIEh0dHBSZXNwb25zZVJlZGlyZWN0KCclcz9uZXh0PSVzJyAlIChzZWxmLmxvZ2luX3VybCwgcmVxdWVzdC5wYXRoKSkKLQotCi1jbGFzcyBDbHVzdGVyQXV0aGVudGljYXRlKG9iamVjdCk6Ci0gICAgIiIiQ2x1c3RlckF1dGhlbnRpY2F0ZTogTWlkZGxld2FyZSB0aGF0IGF1dGhlbnRpY2F0ZXMvc2V0cyBjcmVkZW50aWFscyBmb3IgdGhlIFJFU1QgcmVxdWVzdHMKLQotICAgIElmIHRoaXMgaXMgYSBSRVNUIHJlcXVlc3Q6Ci0gICAgICAgIElmIHJlcXVlc3QgaXMgZnJvbSBsb2NhbGhvc3QKLSAgICAgICAgICAgIGF1dGhvcml6ZSBpdCBhbmQgc2V0IHRoZSB1c2VyIGFzIGFkbWluCi0gICAgICAgIElmIGEgdGhlIHVzZXIgYWxyZWFkeSBoYXMgYW4gYXV0aGVudGljYXRlZCBzZXNzaW9uCi0gICAgICAgICAgICB2YWxpZGF0ZSB0aGF0IHRoaXMgdXNlciBpcyBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGUgcmVxdWVzdGVkIGNsdXN0ZXIKLSAgICAgICAgSWYgaXQgaXMgZnJvbSBhbiBhbm9ueW5vdXMgdXNlcjoKLSAgICAgICAgICAgIGV4dHJhY3QgYXV0aCB0b2tlbiBmcm9tIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMgYW5kCi0gICAgICAgICAgICB2ZXJpZnkgdGhhdCB0aGUgdG9rZW4gaXMgaW4gYXV0aG9yaXplZCBmb3IgdGhlIHJlcXVlc3RlZCBjbHVzdGVyCi0gICAgICAgICAgICAoZm9yIG5vdywganVzdCB2YWxpZGF0ZSB0aGF0IHRoZSB1c2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdG9rZW4KLSAgICAgICAgICAgICBpcyBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGUgcmVxdWVzdGVkIGNsdXN0ZXIuIEluIGZ1dHVyZSwgd2UgbWF5IGRvIG1vcmUpCi0gICAgIiIiCi0KLSAgICB0b2tlbl9wYXJhbV9uYW1lID0gJ2F1dGgtdG9rZW4nICAgICAjIE5hbWUgb2YgdGhlIGF1dGggdG9rZW4gcGFyYW1ldGVyIGluIHRoZSBxdWVyeSBzdHJpbmcKLSAgICBlbmZvcmNlX2F1dGggPSBpc0Nsb3VkQnVpbGQoKSAgICAgICAjIEZvciBub3csIGVuZm9yZSBhdXRoIG9ubHkgZm9yIHRoZSBjbG91ZCBpbnN0YW5jZQotICAgIGJ5cGFzc19sb2NhbGhvc3RfY2hlY2sgPSBGYWxzZSAgICAgICMgU2V0IHRvIHRydWUgdG8gZm9yY2UgYXV0aCB0b2tlbiBjaGVjayBldmVuIG9uIGxvY2FsaG9zdAotCi0gICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgbG9nZ2VyLmRlYnVnKCd1cmw6ICcgKyByZXF1ZXN0LnBhdGgpCi0gICAgICAgIGlmIG5vdCBzZWxmLmVuZm9yY2VfYXV0aDoKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnQ2x1c3RlckF1dGhlbnRpY2F0ZSBpZ25vcmVkOiBpcyBkaXNhYmxlZCcpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgaXNfbG9jYWxob3N0KHJlcXVlc3QpIGFuZCBub3Qgc2VsZi5ieXBhc3NfbG9jYWxob3N0X2NoZWNrOgotICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdDbHVzdGVyQXV0aGVudGljYXRlIGlnbm9yZWQ6IGlzIGxvY2FsIHJlcXVlc3QnKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNlbGYuZ2V0X3JlcV9jbHVzdGVyX25hbWUocmVxdWVzdCkgaXMgTm9uZToKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnQ2x1c3RlckF1dGhlbnRpY2F0ZSBpZ25vcmVkOiBubyBjbHVzdGVyIG5hbWUgaW4gcmVxdWVzdCcpOwotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBGaW5kIHVzZXIgYW5kIGF1dG9yaXplZCBjbHVzdGVycwotICAgICAgICBjbHVzdGVyX25hbWUgPSBzZWxmLmdldF9yZXFfY2x1c3Rlcl9uYW1lKHJlcXVlc3QpCi0gICAgICAgIGNsdXN0ZXIgPSBzZWxmLmdldF9jbHVzdGVyX2Zyb21fbmFtZShjbHVzdGVyX25hbWUpCi0gICAgICAgIHVzZXIgPSBBbm9ueW1vdXNVc2VyKCkKLSAgICAgICAgaWYgaGFzYXR0cihyZXF1ZXN0LCAnc2Vzc2lvbicpOgotICAgICAgICAgICAgdXNlciA9IGF1dGguZ2V0X3VzZXIocmVxdWVzdCkKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnVXNlciBmcm9tIHJlcXVlc3Q6ICcgKyBzdHIodXNlcikpCi0gICAgICAgIGlmIHVzZXIuaXNfYXV0aGVudGljYXRlZCgpOgotICAgICAgICAgICAgYWxsb3dlZF9jbHVzdGVycyA9IHNlbGYuZ2V0X2FsbG93ZWRfY2x1c3RlcnNfZm9yX3VzZXIodXNlcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRva2VuX3N0cmluZyA9IHNlbGYuZ2V0X3JlcV90b2tlbl9zdHJpbmcocmVxdWVzdCkKLSAgICAgICAgICAgIHVzZXIgPSBzZWxmLmdldF91c2VyX2Zvcl90b2tlbih0b2tlbl9zdHJpbmcpCi0gICAgICAgICAgICBhbGxvd2VkX2NsdXN0ZXJzID0gc2VsZi5nZXRfYWxsb3dlZF9jbHVzdGVyc19mb3JfdG9rZW4odG9rZW5fc3RyaW5nKQotICAgICAgICBsb2dnZXIuZGVidWcoJ0NoZWNraW5nIGF1dGhvcml6YXRpb24gZm9yIGNsdXN0ZXIgJyArIHN0cihjbHVzdGVyKSArCi0gICAgICAgICAgICAgICAgICAgICAnIGluIGNsdXN0ZXIgbGlzdCAnICsgc3RyKGFsbG93ZWRfY2x1c3RlcnMpICsKLSAgICAgICAgICAgICAgICAgICAgICcgZm9yICcgKyBzdHIodXNlcikpCi0KLSAgICAgICAgIyBEbyB2YWxpZGF0aW9uL3NldCB1c2VyIGZvciByZXF1ZXN0Ci0gICAgICAgIGlmIGhhc2F0dHIocmVxdWVzdCwgJ3VzZXInKToKLSAgICAgICAgICAgIHJlcXVlc3QudXNlciA9IEFub255bW91c1VzZXIoKQotICAgICAgICAgICAgcmVxdWVzdC5fY2FjaGVkX3VzZXIgPSBBbm9ueW1vdXNVc2VyKCkKLSAgICAgICAgaWYgY2x1c3RlciBhbmQgYWxsb3dlZF9jbHVzdGVyczoKLSAgICAgICAgICAgIGlmIGNsdXN0ZXIgaW4gYWxsb3dlZF9jbHVzdGVyczoKLSAgICAgICAgICAgICAgICByZXF1ZXN0LnVzZXIgPSB1c2VyCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5fY2FjaGVkX3VzZXIgPSB1c2VyCi0gICAgICAgIHJldHVybgotCi0gICAgZGVmIHZhbGlkYXRlX3Nlc3Npb24oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgZ2V0X3JlcV9jbHVzdGVyX25hbWUoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICMgRmluZCBsYXN0IGVudHJ5IGluIHBhdGgsIHJlbW92ZSBwYXJhbWV0ZXJzCi0gICAgICAgIHBhdGggPSByZXF1ZXN0LnBhdGgKLSAgICAgICAgY2x1c3Rlcl9uYW1lID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwYXRoY29tcHMgPSBwYXRoLnNwbGl0KCcvJykKLSAgICAgICAgICAgIGlmICdyZXN0JyBpbiAocGF0aGNvbXBzWzFdLHBhdGhjb21wc1syXSk6Ci0gICAgICAgICAgICAgICAgY2x1c3Rlcl9uYW1lX2lkeCA9IDUKLSAgICAgICAgICAgICAgICBpZiBwYXRoY29tcHNbY2x1c3Rlcl9uYW1lX2lkeF0uZmluZCgnOicpID4gLTE6Ci0gICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfbmFtZSA9IHBhdGhjb21wc1tjbHVzdGVyX25hbWVfaWR4XQotICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgSW5kZXhFcnJvcik6Ci0gICAgICAgICAgICBsb2dnZXIuZGVidWcoJ1R5cGUgZXJyb3IgcGFyc2luZyBwYXRoIGZvciBjdXN0b21lcjogJyArIHN0cihwYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBsb2dnZXIuZGVidWcoJ1Vua25vd24gZXJyb3IgcGFyc2luZyBwYXRoIGZvciBjdXN0b21lcjogJyArIHN0cihwYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBjbHVzdGVyX25hbWUKLQotICAgIGRlZiBnZXRfY2x1c3Rlcl9mcm9tX25hbWUoc2VsZiwgY2x1c3Rlcl9uYW1lKToKLSAgICAgICAgaWYgY2x1c3Rlcl9uYW1lOgotICAgICAgICAgICAgZm9yIGNsdXN0ZXIgaW4gQ2x1c3Rlci5vYmplY3RzLmFsbCgpOgotICAgICAgICAgICAgICAgIGlmIGNsdXN0ZXJfbmFtZSA9PSBjbHVzdGVyLmlkOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ01hcHBlZCByZXF1ZXN0IHRvIGNsdXN0ZXIgIiVzIicgJSBjbHVzdGVyX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjbHVzdGVyCi0gICAgICAgIGxvZ2dlci53YXJuKCdGYWlsZWQgdG8gbWFwIHJlcXVlc3QgdG8gY2x1c3RlcjogIiVzIicgJSBjbHVzdGVyX25hbWUpCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgZ2V0X3JlcV90b2tlbl9zdHJpbmcoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHRva2VuX3N0cmluZyA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdG9rZW5fc3RyaW5nID0gcmVxdWVzdC5SRVFVRVNUW3NlbGYudG9rZW5fcGFyYW1fbmFtZV0KLSAgICAgICAgICAgIHRva2VuX3N0cmluZyA9IHRva2VuX3N0cmluZy51cHBlcigpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnTm8gdG9rZW4gcGFyYW0gaW4gcmVxdWVzdCcpCi0gICAgICAgIHJldHVybiB0b2tlbl9zdHJpbmcKLQotICAgIGRlZiBnZXRfdG9rZW5fZnJvbV9uYW1lKHNlbGYsIHRva2VuX3N0cmluZyk6Ci0gICAgICAgIHRva2VuID0gTm9uZQotICAgICAgICBpZiB0b2tlbl9zdHJpbmc6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBBdXRoVG9rZW4ub2JqZWN0cy5nZXQoaWQ9dG9rZW5fc3RyaW5nKQotICAgICAgICAgICAgZXhjZXB0IEF1dGhUb2tlbi5Eb2VzTm90RXhpc3Q6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdUb2tlbiBub3QgZm91bmQgaW4gREI6ICcgKyBzdHIodG9rZW5fc3RyaW5nKSkKLSAgICAgICAgICAgICAgICB0b2tlbiA9IE5vbmUKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdBdXRoIFRva2VucyBub3QgY29uZmlndXJlZCBpbiBEQj8gLSAnICsgc3RyKHRva2VuX3N0cmluZykpCi0gICAgICAgICAgICAgICAgdG9rZW4gPSBOb25lCi0gICAgICAgIHJldHVybiB0b2tlbgotCi0gICAgZGVmIGdldF91c2VyX2Zvcl90b2tlbihzZWxmLCB0b2tlbl9zdHJpbmcpOgotICAgICAgICB1c2VyID0gQW5vbnltb3VzVXNlcigpCi0gICAgICAgIHRva2VuID0gc2VsZi5nZXRfdG9rZW5fZnJvbV9uYW1lKHRva2VuX3N0cmluZykKLSAgICAgICAgaWYgdG9rZW46Ci0gICAgICAgICAgICB1c2VyID0gdG9rZW4udXNlcgotICAgICAgICByZXR1cm4gdXNlcgotCi0gICAgZGVmIGdldF9hbGxvd2VkX2NsdXN0ZXJzX2Zvcl90b2tlbihzZWxmLCB0b2tlbl9zdHJpbmcpOgotICAgICAgICAiIiJHaXZlbiBhbiBhdXRoIHRva2VuLCBnZW5lcmF0ZSB0aGUgbGlzdCBvZiBjbHVzdGVycyBmb3Igd2hpY2ggaXQgZ2l2ZXMgY3JlZGVudGlhbHMKLQotICAgICAgICBJZiB0aGUgY2x1c3RlciBlbnRyeSBpbiB0aGUgdG9rZW4gb2JqZWN0IGlzIHByZXNlbnQsIHVzZSB0aGF0Ci0gICAgICAgIElmIHRoZSBjdXN0b21lciBlbnRyeSBpbiB0aGUgdG9rZW4gb2JqZWN0IGlzIHByZXNlbnQsIHJldHVybiBhbGwgY2x1c3RlcnMgZm9yIHRoZSBjdXN0b21lcgotICAgICAgICBJZiB0aGUgdXNlciBlbnRyeSBpbiB0aGUgdG9rZW4gb2JqZWN0IGlzIHByZXNlbnQsIHVzZSB0aGF0IHRvIGdldCBhIGxpc3Qgb2YgY2x1c3RlcnMuCi0KLSAgICAgICAgSW4gdGhlIGZ1dHVyZSwgREIgY2hhbmdlcyBtYXkgcHJvdmlkZSB2YXJ5aW5nIGdyYW51bGFyaXR5LgotICAgICAgICAiIiIKLQotICAgICAgICBsb2dnZXIuZGVidWcoJ0dvdCB0b2tlbjogJyArIHN0cih0b2tlbl9zdHJpbmcpKQotCi0gICAgICAgIGNsdXN0ZXJfbGlzdCA9IFtdCi0gICAgICAgIHRva2VuID0gc2VsZi5nZXRfdG9rZW5fZnJvbV9uYW1lKHRva2VuX3N0cmluZykKLSAgICAgICAgaWYgdG9rZW46Ci0gICAgICAgICAgICBpZiB0b2tlbi5jbHVzdGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygndG9rZW4gbWFwcGVkIHRvIGNsdXN0ZXIgJyArIHN0cih0b2tlbi5jbHVzdGVyKSkKLSAgICAgICAgICAgICAgICBjbHVzdGVyX2xpc3QgPSBbdG9rZW4uY2x1c3Rlcl0KLSAgICAgICAgICAgIGVsaWYgdG9rZW4uY3VzdG9tZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCd0b2tlbiBtYXBwZWQgdG8gY3VzdG9tZXIgJyArIHN0cih0b2tlbi5jdXN0b21lcikpCi0gICAgICAgICAgICAgICAgY2x1c3Rlcl9saXN0ID0gQ2x1c3Rlci5vYmplY3RzLmZpbHRlcihjdXN0b21lcj10b2tlbi5jdXN0b21lcikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCd0b2tlbiBtYXBwZWQgdG8gdXNlciAnICsgc3RyKHRva2VuLnVzZXIpKQotICAgICAgICAgICAgICAgIGNsdXN0ZXJfbGlzdCA9IHNlbGYuZ2V0X2FsbG93ZWRfY2x1c3RlcnNfZm9yX3VzZXIodG9rZW4udXNlcikKLQotICAgICAgICBsb2dnZXIuZGVidWcoJ1JldHVybmluZyBjbHVzdCBsaXN0ICcgKyBzdHIoY2x1c3Rlcl9saXN0KSkKLSAgICAgICAgcmV0dXJuIGNsdXN0ZXJfbGlzdAotCi0gICAgZGVmIGdldF9hbGxvd2VkX2NsdXN0ZXJzX2Zvcl91c2VyKHNlbGYsIHVzZXIpOgotICAgICAgICAiIiJHaXZlbiBhIHVzZXIsIGdlbmVyYXRlIHRoZSBsaXN0IG9mIGNsdXN0ZXJzIGZvciB3aGljaCBpdCBnaXZlcyBjcmVkZW50aWFscwotICAgICAgICBVc2UgdXNlciB0byBtYXAgdG8gYSBjdXN0b21lciAobGlzdCkgYW5kIGZyb20gdGhlcmUgdG8gYSBsaXN0IG9mIGNsdXN0ZXJzLgotICAgICAgICAiIiIKLQotICAgICAgICBsb2dnZXIuZGVidWcoJ0dvdCB1c2VyOiAnICsgc3RyKHVzZXIpKQotCi0gICAgICAgIGNsdXN0ZXJfbGlzdCA9IFtdCi0gICAgICAgIGlmIHVzZXI6Ci0gICAgICAgICAgICBmb3IgY3VzdF91c2VyIGluIEN1c3RvbWVyVXNlci5vYmplY3RzLmZpbHRlcih1c2VyPXVzZXIpOgotICAgICAgICAgICAgICAgICMgQ3VycmVudGx5IHRoZSBxdWVyeSBiZWxvdyBpc24ndCB3b3JraW5nLiAgQnJ1dGUgZm9yY2UgYWx0ZXJuYXRpdmUgZ2l2ZW4KLSAgICAgICAgICAgICAgICAjY2x1c3Rlcl9saXN0LmV4dGVuZChDbHVzdGVyLm9iamVjdHMuZmlsdGVyKGN1c3RvbWVyPWN1c3RfdXNlci5jdXN0b21lcikpCi0gICAgICAgICAgICAgICAgZm9yIGNsdXN0ZXIgaW4gQ2x1c3Rlci5vYmplY3RzLmFsbCgpOgotICAgICAgICAgICAgICAgICAgICBpZiBjbHVzdGVyLmN1c3RvbWVyID09IGN1c3RfdXNlci5jdXN0b21lcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfbGlzdC5hcHBlbmQoY2x1c3RlcikKLQotICAgICAgICBsb2dnZXIuZGVidWcoJ1JldHVybmluZyBjbHVzdGVyIGxpc3QgJyArIHN0cihjbHVzdGVyX2xpc3QpKQotICAgICAgICByZXR1cm4gY2x1c3Rlcl9saXN0CmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi9tb2RlbHMucHkgYi9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi9tb2RlbHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDkwOTBmYjYuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vbW9kZWxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1pbXBvcnQgZGF0ZXRpbWUKLWZyb20gZGphbmdvLmRiIGltcG9ydCBtb2RlbHMKLWZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5tb2RlbHMgaW1wb3J0IFVzZXIKLQotIyBDcmVhdGUgeW91ciBtb2RlbHMgaGVyZS4KLWNsYXNzIEN1c3RvbWVyTWFuYWdlcihtb2RlbHMuTWFuYWdlcik6Ci0KLSAgICBkZWYgY3JlYXRlX2N1c3RvbWVyKHNlbGYsIG5hbWUsIGVtYWlsKToKLSAgICAgICAgIiIiCi0gICAgICAgIENyZWF0ZXMgYW5kIHNhdmVzIGEgY3VzdG9tZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgZW1haWwKLSAgICAgICAgIiIiCi0gICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCi0KLSAgICAgICAgIyBOb3JtYWxpemUgdGhlIGFkZHJlc3MgYnkgbG93ZXJjYXNpbmcgdGhlIGRvbWFpbiBwYXJ0IG9mIHRoZSBlbWFpbCBhZGRyZXNzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGVtYWlsX25hbWUsIGRvbWFpbl9wYXJ0ID0gZW1haWwuc3RyaXAoKS5zcGxpdCgnQCcsIDEpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZW1haWwgPSAnQCcuam9pbihbZW1haWxfbmFtZSwgZG9tYWluX3BhcnQubG93ZXIoKV0pCi0KLSAgICAgICAgY3VzdG9tZXIgPSBzZWxmLm1vZGVsKGN1c3RvbWVybmFtZT1uYW1lLCBpc19hY3RpdmU9VHJ1ZSwgZGF0ZV9qb2luZWQ9bm93KQotICAgICAgICBjdXN0b21lci5zYXZlKHVzaW5nPXNlbGYuX2RiKQotICAgICAgICByZXR1cm4gY3VzdG9tZXIKLQotY2xhc3MgQ2x1c3Rlck1hbmFnZXIobW9kZWxzLk1hbmFnZXIpOgotCi0gICAgZGVmIGNyZWF0ZV9jbHVzdGVyKHNlbGYsIG5hbWUsIGN1c3RvbWVyKToKLSAgICAgICAgIiIiCi0gICAgICAgIENyZWF0ZXMgYW5kIHNhdmVzIGEgY2x1c3RlciB3aXRoIHRoZSBnaXZlbiBjbHVzdGVyIG5hbWUgYW5kIHRoZSBjdXN0b21lcgotICAgICAgICAiIiIKLSAgICAgICAgcHJpbnQgImNsdXN0ZXJNYW5hZ2VyIGNyZWF0ZV9jbHVzdGVyIgotICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQotCi0gICAgICAgIGlkID0gIjoiLmpvaW4oW2N1c3RvbWVyLmN1c3RvbWVybmFtZSwgbmFtZV0pCi0gICAgICAgIGNsdXN0ZXIgPSBzZWxmLm1vZGVsKGlkPWlkLCBjbHVzdGVybmFtZT1uYW1lLCBpc19hY3RpdmU9VHJ1ZSwgZGF0ZV9qb2luZWQ9bm93KQotICAgICAgICBjbHVzdGVyLnNhdmUodXNpbmc9c2VsZi5fZGIpCi0gICAgICAgIHJldHVybiBjbHVzdGVyCi0KLWNsYXNzIEN1c3RvbWVyVXNlck1hbmFnZXIobW9kZWxzLk1hbmFnZXIpOgotCi0gICAgZGVmIGNyZWF0ZV9jdXN0b21lclVzZXIoc2VsZiwgdXNlciwgY3VzdG9tZXIpOgotICAgICAgICAiIiIKLSAgICAgICAgQ3JlYXRlcyBhbmQgc2F2ZXMgYSBjdXN0b21lciB1c2VyIG1lbWJlcnNoaXAKLSAgICAgICAgIiIiCi0gICAgICAgIGlkID0gIjoiLmpvaW4oW2N1c3RvbWVyLmN1c3RvbWVybmFtZSwgdXNlci51c2VybmFtZV0pCi0gICAgICAgIGN1ID0gc2VsZi5tb2RlbChpZD1pZCwgdXNlcj11c2VyLCBjdXN0b21lcj1jdXN0b21lcikKLSAgICAgICAgY3Uuc2F2ZSh1c2luZz1zZWxmLl9kYikKLSAgICAgICAgcmV0dXJuIGN1Ci0KLWNsYXNzIEN1c3RvbWVyKG1vZGVscy5Nb2RlbCk6Ci0gICAgIiIiCi0gICAgQ3VzdG9tZXIgZGVmaW5lcyBhIGN1c3RvbWVyIGluIHRoZSBjbG91ZCBzZXJ2ZXIuCi0gICAgIiIiCi0gICAgY3VzdG9tZXJuYW1lID0gbW9kZWxzLkNoYXJGaWVsZCgnY3VzdG9tZXIgbmFtZScsIAotICAgICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleT1UcnVlLAotICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPTMwLCAKLSAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0PSIzMCBjaGFyYWN0ZXJzIG9yIGZld2VyLiBMZXR0ZXJzLCBudW1iZXJzIGFuZCBALy4vKy8tL18gY2hhcmFjdGVycyIpCi0gICAgZW1haWwgPSBtb2RlbHMuRW1haWxGaWVsZCgnZS1tYWlsIGFkZHJlc3MnLCBibGFuaz1UcnVlKQotICAgIGlzX2FjdGl2ZSA9IG1vZGVscy5Cb29sZWFuRmllbGQoJ2FjdGl2ZScsIAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsIAotICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ9IkRlc2lnbmF0ZXMgd2hldGhlciB0aGlzIEN1c3RvbWVyIHNob3VsZCBiZSB0cmVhdGVkIGFzIGFjdGl2ZS4gVW5zZWxlY3QgdGhpcyBpbnN0ZWFkIG9mIGRlbGV0aW5nIGFjY291bnRzLiIpCi0gICAgZGF0ZV9qb2luZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZCgnZGF0ZSBqb2luZWQnLCBkZWZhdWx0PWRhdGV0aW1lLmRhdGV0aW1lLm5vdykKLSAgICBvYmplY3RzID0gQ3VzdG9tZXJNYW5hZ2VyKCkKLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY3VzdG9tZXJuYW1lCi0KLWNsYXNzIENsdXN0ZXIobW9kZWxzLk1vZGVsKToKLSAgICAiIiIKLSAgICBDbHVzdGVyIGRlZmluZXMgYSBjbHVzdGVyIG9mIG5vZGVzIGluIHRoZSBjbG91ZCBzZXJ2ZXIuCi0gICAgIiIiCi0gICAgaWQgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgICAgICAgICAgdmVyYm9zZV9uYW1lPSdDbHVzdGVyIElEJywKLSAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPTc1LAotICAgICAgICAgICAgICAgIGhlbHBfdGV4dD0nVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjbHVzdGVyOyBmb3JtYXQgaXMgY3VzdG9tZXJuYW1lOmNsdXN0ZXJuYW1lJykKLSAgICBjbHVzdGVybmFtZSA9IG1vZGVscy5DaGFyRmllbGQoJ2NsdXN0ZXIgbmFtZScsIAotICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPTMwLCAKLSAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0PSJSZXF1aXJlZC4gMzAgY2hhcmFjdGVycyBvciBmZXdlci4gTGV0dGVycywgbnVtYmVycyBhbmQgQC8uLysvLS9fIGNoYXJhY3RlcnMiKQotICAgIGlzX2FjdGl2ZSA9IG1vZGVscy5Cb29sZWFuRmllbGQoJ2FjdGl2ZScsIAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsIAotICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ9IkRlc2lnbmF0ZXMgd2hldGhlciB0aGlzIGNsdXN0ZXIgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYWN0aXZlLiBVbnNlbGVjdCB0aGlzIGluc3RlYWQgb2YgZGVsZXRpbmcgdGhlIGNsdXN0ZXIuIikKLSAgICBkYXRlX2pvaW5lZCA9IG1vZGVscy5EYXRlVGltZUZpZWxkKCdkYXRlIGpvaW5lZCcsIAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRhdGV0aW1lLmRhdGV0aW1lLm5vdykKLQotICAgIGN1c3RvbWVyID0gbW9kZWxzLkZvcmVpZ25LZXkoQ3VzdG9tZXIsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKLQotICAgIG9iamVjdHMgPSBDbHVzdGVyTWFuYWdlcigpCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmlkCi0KLQotY2xhc3MgQ3VzdG9tZXJVc2VyKG1vZGVscy5Nb2RlbCk6Ci0gICAgIiIiCi0gICAgVGhpcyBpcyBhIHRlbXBvcmFyeSBtb2RlbCB0aGF0IGNhcHR1cmVzIHRoZSBsaXN0IG9mIHVzZXJzIGluIGEgZ2l2ZW4gY3VzdG9tZXIKLSAgICAiIiIKLSAgICBpZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgICAgICAgICAgcHJpbWFyeV9rZXk9VHJ1ZSwKLSAgICAgICAgICAgICAgICB2ZXJib3NlX25hbWU9J0N1c3RvbWVyIFVzZXInLAotICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9NzUsCi0gICAgICAgICAgICAgICAgaGVscF90ZXh0PSdVbmlxdWUgcmVsYXRpb25zaGlwIHRoYXQgc2hvd3MgdGhlIGN1c3RvbWVyIHdoaWNoIHRoZSB1c2VyIGJlbG9uZ3M7IFwKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0IGlzIGN1c3RvbWVybmFtZTp1c2VybmFtZScpCi0gICAgdXNlciA9IG1vZGVscy5Gb3JlaWduS2V5KFVzZXIsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKLSAgICBjdXN0b21lciA9IG1vZGVscy5Gb3JlaWduS2V5KEN1c3RvbWVyLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCi0KLSAgICBvYmplY3RzID0gQ3VzdG9tZXJVc2VyTWFuYWdlcigpCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmlkCi0KLQotY2xhc3MgQXV0aFRva2VuKG1vZGVscy5Nb2RlbCk6Ci0gICAgIiIiCi0gICAgU3RvcmUgdGhlIGF1dGhlbnRpY2F0aW9uIHRva2VuIGFzIGFuIGFzY2lpIHN0cmluZwotICAgIEFzc29jaWF0ZSB2YXJpb3VzIGNyZWRlbnRpYWwgb3B0aW9uczogdXNlciwgY2x1c3RlciwgY3VzdG9tZXIuICBBdCBsZWFzdAotICAgIG9uZSBvZiB0aGVzZSBtdXN0IGJlIHBvcHVsYXRlZCB0byBiZSBhIHZhbGlkIGVudHJ5LgotICAgICIiIgotICAgIGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgcHJpbWFyeV9rZXk9VHJ1ZSwKLSAgICAgICAgbWF4X2xlbmd0aCA9IDY0KQotCi0gICAgY2x1c3RlciA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBDbHVzdGVyLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0KLSAgICB1c2VyID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIFVzZXIsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIGN1c3RvbWVyID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIEN1c3RvbWVyLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0KLSAgICBleHBpcmF0aW9uX2RhdGUgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdFeHBpcmF0aW9uIERhdGUnLAotICAgICAgICBoZWxwX3RleHQ9J0RhdGUgd2hlbiB0aGUgYXV0aGVudGljYXRpb24gdG9rZW4gZXhwaXJlcycsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIGFubm90YXRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0Fubm90YXRpb24nLAotICAgICAgICBoZWxwX3RleHQ9J1RyYWNrIGNyZWF0aW9uIGluZm9ybWF0aW9uIHN1Y2ggYXMgdXNlcicsCi0gICAgICAgIG1heF9sZW5ndGg9NTEyLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzdHIoc2VsZi5pZCkKLQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vdGVzdHMucHkgYi9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi90ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzkzZTYxMC4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi90ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0iIiIKLVRoaXMgZmlsZSBkZW1vbnN0cmF0ZXMgdHdvIGRpZmZlcmVudCBzdHlsZXMgb2YgdGVzdHMgKG9uZSBkb2N0ZXN0IGFuZCBvbmUKLXVuaXR0ZXN0KS4gVGhlc2Ugd2lsbCBib3RoIHBhc3Mgd2hlbiB5b3UgcnVuICJtYW5hZ2UucHkgdGVzdCIuCi0KLVJlcGxhY2UgdGhlc2Ugd2l0aCBtb3JlIGFwcHJvcHJpYXRlIHRlc3RzIGZvciB5b3VyIGFwcGxpY2F0aW9uLgotIiIiCi0KLWZyb20gZGphbmdvLnRlc3QgaW1wb3J0IFRlc3RDYXNlCi0KLWNsYXNzIFNpbXBsZVRlc3QoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2Jhc2ljX2FkZGl0aW9uKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdHMgdGhhdCAxICsgMSBhbHdheXMgZXF1YWxzIDIuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmZhaWxVbmxlc3NFcXVhbCgxICsgMSwgMikKLQotX190ZXN0X18gPSB7ImRvY3Rlc3QiOiAiIiIKLUFub3RoZXIgd2F5IHRvIHRlc3QgdGhhdCAxICsgMSBpcyBlcXVhbCB0byAyLgotCi0+Pj4gMSArIDEgPT0gMgotVHJ1ZQotIiIifQotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi90ZXN0cy9fX2luaXRfXy5weSBiL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL3Rlc3RzL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjZGMzZDc2Li4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL3Rlc3RzL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSNmcm9tIGRqYW5nby5jb250cmliLmF1dGgudGVzdHMuYXV0aF9iYWNrZW5kcyBpbXBvcnQgQmFja2VuZFRlc3QsIFJvd2xldmVsQmFja2VuZFRlc3QsIEFub255bW91c1VzZXJCYWNrZW5kVGVzdCwgTm9Bbm9ueW1vdXNVc2VyQmFja2VuZFRlc3QKLQotZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLnRlc3RzLmJhc2ljIGltcG9ydCBCYXNpY1Rlc3RDYXNlCi1mcm9tIGRqYW5nby5jb250cmliLmF1dGgudGVzdHMuZGVjb3JhdG9ycyBpbXBvcnQgTG9naW5SZXF1aXJlZFRlc3RDYXNlCi0jZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLnRlc3RzLmZvcm1zIGltcG9ydCBVc2VyQ3JlYXRpb25Gb3JtVGVzdCwgQXV0aGVudGljYXRpb25Gb3JtVGVzdCwgU2V0UGFzc3dvcmRGb3JtVGVzdCwgUGFzc3dvcmRDaGFuZ2VGb3JtVGVzdCwgVXNlckNoYW5nZUZvcm1UZXN0LCBQYXNzd29yZFJlc2V0Rm9ybVRlc3QKLWZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC50ZXN0cy5yZW1vdGVfdXNlciBcCi0gICAgICAgIGltcG9ydCBSZW1vdGVVc2VyVGVzdCwgUmVtb3RlVXNlck5vQ3JlYXRlVGVzdCwgUmVtb3RlVXNlckN1c3RvbVRlc3QKLWZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC50ZXN0cy5tb2RlbHMgaW1wb3J0IFByb2ZpbGVUZXN0Q2FzZQotZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLnRlc3RzLnRva2VucyBpbXBvcnQgVG9rZW5HZW5lcmF0b3JUZXN0Ci0jZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLnRlc3RzLnZpZXdzIFwKLSMgICAgaW1wb3J0IFBhc3N3b3JkUmVzZXRUZXN0LCBDaGFuZ2VQYXNzd29yZFRlc3QsIExvZ2luVGVzdCwgTG9nb3V0VGVzdAotCi0KLWZyb20gc2RuY29uLmNsdXN0ZXJBZG1pbi50ZXN0cy5hdXRoX2JhY2tlbmRzIGltcG9ydCBCYWNrZW5kVGVzdCwgUm93bGV2ZWxCYWNrZW5kVGVzdCwgQW5vbnltb3VzVXNlckJhY2tlbmRUZXN0LCBOb0Fub255bW91c1VzZXJCYWNrZW5kVGVzdAotZnJvbSBzZG5jb24uY2x1c3RlckFkbWluLnRlc3RzLmZvcm1zIGltcG9ydCBVc2VyQ3JlYXRpb25Gb3JtVGVzdCwgQXV0aGVudGljYXRpb25Gb3JtVGVzdCwgU2V0UGFzc3dvcmRGb3JtVGVzdCwgUGFzc3dvcmRDaGFuZ2VGb3JtVGVzdCwgVXNlckNoYW5nZUZvcm1UZXN0LCBQYXNzd29yZFJlc2V0Rm9ybVRlc3QKLWZyb20gc2RuY29uLmNsdXN0ZXJBZG1pbi50ZXN0cy52aWV3cyBcCi0gICAgICAgIGltcG9ydCBQYXNzd29yZFJlc2V0VGVzdCwgQ2hhbmdlUGFzc3dvcmRUZXN0LCBMb2dpblRlc3QsIExvZ291dFRlc3QKLQotIyBUaGUgcGFzc3dvcmQgZm9yIHRoZSBmaXh0dXJlIGRhdGEgdXNlcnMgaXMgJ3Bhc3N3b3JkJwpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vdGVzdHMvYXV0aF9iYWNrZW5kcy5weSBiL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL3Rlc3RzL2F1dGhfYmFja2VuZHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGNlMjY4NTkuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vdGVzdHMvYXV0aF9iYWNrZW5kcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDI4MCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IHdhcm5pbmdzCi0KLWZyb20gZGphbmdvLmNvbmYgaW1wb3J0IHNldHRpbmdzCi1mcm9tIGRqYW5nby5jb250cmliLmF1dGgubW9kZWxzIGltcG9ydCBVc2VyLCBHcm91cCwgUGVybWlzc2lvbiwgQW5vbnltb3VzVXNlcgotZnJvbSBkamFuZ28uY29udHJpYi5jb250ZW50dHlwZXMubW9kZWxzIGltcG9ydCBDb250ZW50VHlwZQotZnJvbSBkamFuZ28udGVzdCBpbXBvcnQgVGVzdENhc2UKLWZyb20gZGphbmdvLnV0aWxzLnVuaXR0ZXN0IGltcG9ydCBza2lwSWYKLQotCi1jbGFzcyBCYWNrZW5kVGVzdChUZXN0Q2FzZSk6Ci0KLSAgICBiYWNrZW5kID0gJ2RqYW5nby5jb250cmliLmF1dGguYmFja2VuZHMuTW9kZWxCYWNrZW5kJwotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmN1cnJfYXV0aCA9IHNldHRpbmdzLkFVVEhFTlRJQ0FUSU9OX0JBQ0tFTkRTCi0gICAgICAgIHNldHRpbmdzLkFVVEhFTlRJQ0FUSU9OX0JBQ0tFTkRTID0gKHNlbGYuYmFja2VuZCwpCi0gICAgICAgIFVzZXIub2JqZWN0cy5jcmVhdGVfdXNlcigndGVzdCcsICd0ZXN0QGV4YW1wbGUuY29tJywgJ3Rlc3QnKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZXR0aW5ncy5BVVRIRU5USUNBVElPTl9CQUNLRU5EUyA9IHNlbGYuY3Vycl9hdXRoCi0KLSAgICBAc2tpcElmKFRydWUsICJEbyBub3Qgc3VwcG9ydCIpCi0gICAgZGVmIHRlc3RfaGFzX3Blcm0oc2VsZik6Ci0gICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuZ2V0KHVzZXJuYW1lPSd0ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLmhhc19wZXJtKCdhdXRoLnRlc3QnKSwgRmFsc2UpCi0gICAgICAgIHVzZXIuaXNfc3RhZmYgPSBUcnVlCi0gICAgICAgIHVzZXIuc2F2ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXNlci5oYXNfcGVybSgnYXV0aC50ZXN0JyksIEZhbHNlKQotICAgICAgICB1c2VyLmlzX3N1cGVydXNlciA9IFRydWUKLSAgICAgICAgdXNlci5zYXZlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLmhhc19wZXJtKCdhdXRoLnRlc3QnKSwgVHJ1ZSkKLSAgICAgICAgdXNlci5pc19zdGFmZiA9IEZhbHNlCi0gICAgICAgIHVzZXIuaXNfc3VwZXJ1c2VyID0gRmFsc2UKLSAgICAgICAgdXNlci5zYXZlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLmhhc19wZXJtKCdhdXRoLnRlc3QnKSwgRmFsc2UpCi0gICAgICAgIHVzZXIuaXNfc3RhZmYgPSBUcnVlCi0gICAgICAgIHVzZXIuaXNfc3VwZXJ1c2VyID0gVHJ1ZQotICAgICAgICB1c2VyLmlzX2FjdGl2ZSA9IEZhbHNlCi0gICAgICAgIHVzZXIuc2F2ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXNlci5oYXNfcGVybSgnYXV0aC50ZXN0JyksIEZhbHNlKQotCi0gICAgQHNraXBJZihUcnVlLCAiRG8gbm90IHN1cHBvcnQiKQotICAgIGRlZiB0ZXN0X2N1c3RvbV9wZXJtcyhzZWxmKToKLSAgICAgICAgdXNlciA9IFVzZXIub2JqZWN0cy5nZXQodXNlcm5hbWU9J3Rlc3QnKQotICAgICAgICBjb250ZW50X3R5cGU9Q29udGVudFR5cGUub2JqZWN0cy5nZXRfZm9yX21vZGVsKEdyb3VwKQotICAgICAgICBwZXJtID0gUGVybWlzc2lvbi5vYmplY3RzLmNyZWF0ZShuYW1lPSd0ZXN0JywgY29udGVudF90eXBlPWNvbnRlbnRfdHlwZSwgY29kZW5hbWU9J3Rlc3QnKQotICAgICAgICB1c2VyLnVzZXJfcGVybWlzc2lvbnMuYWRkKHBlcm0pCi0gICAgICAgIHVzZXIuc2F2ZSgpCi0KLSAgICAgICAgIyByZWxvYWRpbmcgdXNlciB0byBwdXJnZSB0aGUgX3Blcm1fY2FjaGUKLSAgICAgICAgdXNlciA9IFVzZXIub2JqZWN0cy5nZXQodXNlcm5hbWU9J3Rlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIuZ2V0X2FsbF9wZXJtaXNzaW9ucygpID09IHNldChbdSdhdXRoLnRlc3QnXSksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXNlci5nZXRfZ3JvdXBfcGVybWlzc2lvbnMoKSwgc2V0KFtdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLmhhc19tb2R1bGVfcGVybXMoJ0dyb3VwJyksIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIuaGFzX21vZHVsZV9wZXJtcygnYXV0aCcpLCBUcnVlKQotICAgICAgICBwZXJtID0gUGVybWlzc2lvbi5vYmplY3RzLmNyZWF0ZShuYW1lPSd0ZXN0MicsIGNvbnRlbnRfdHlwZT1jb250ZW50X3R5cGUsIGNvZGVuYW1lPSd0ZXN0MicpCi0gICAgICAgIHVzZXIudXNlcl9wZXJtaXNzaW9ucy5hZGQocGVybSkKLSAgICAgICAgdXNlci5zYXZlKCkKLSAgICAgICAgcGVybSA9IFBlcm1pc3Npb24ub2JqZWN0cy5jcmVhdGUobmFtZT0ndGVzdDMnLCBjb250ZW50X3R5cGU9Y29udGVudF90eXBlLCBjb2RlbmFtZT0ndGVzdDMnKQotICAgICAgICB1c2VyLnVzZXJfcGVybWlzc2lvbnMuYWRkKHBlcm0pCi0gICAgICAgIHVzZXIuc2F2ZSgpCi0gICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuZ2V0KHVzZXJuYW1lPSd0ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLmdldF9hbGxfcGVybWlzc2lvbnMoKSwgc2V0KFt1J2F1dGgudGVzdDInLCB1J2F1dGgudGVzdCcsIHUnYXV0aC50ZXN0MyddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLmhhc19wZXJtKCd0ZXN0JyksIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIuaGFzX3Blcm0oJ2F1dGgudGVzdCcpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIuaGFzX3Blcm1zKFsnYXV0aC50ZXN0MicsICdhdXRoLnRlc3QzJ10pLCBUcnVlKQotICAgICAgICBwZXJtID0gUGVybWlzc2lvbi5vYmplY3RzLmNyZWF0ZShuYW1lPSd0ZXN0X2dyb3VwJywgY29udGVudF90eXBlPWNvbnRlbnRfdHlwZSwgY29kZW5hbWU9J3Rlc3RfZ3JvdXAnKQotICAgICAgICBncm91cCA9IEdyb3VwLm9iamVjdHMuY3JlYXRlKG5hbWU9J3Rlc3RfZ3JvdXAnKQotICAgICAgICBncm91cC5wZXJtaXNzaW9ucy5hZGQocGVybSkKLSAgICAgICAgZ3JvdXAuc2F2ZSgpCi0gICAgICAgIHVzZXIuZ3JvdXBzLmFkZChncm91cCkKLSAgICAgICAgdXNlciA9IFVzZXIub2JqZWN0cy5nZXQodXNlcm5hbWU9J3Rlc3QnKQotICAgICAgICBleHAgPSBzZXQoW3UnYXV0aC50ZXN0MicsIHUnYXV0aC50ZXN0JywgdSdhdXRoLnRlc3QzJywgdSdhdXRoLnRlc3RfZ3JvdXAnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLmdldF9hbGxfcGVybWlzc2lvbnMoKSwgZXhwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIuZ2V0X2dyb3VwX3Blcm1pc3Npb25zKCksIHNldChbdSdhdXRoLnRlc3RfZ3JvdXAnXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXNlci5oYXNfcGVybXMoWydhdXRoLnRlc3QzJywgJ2F1dGgudGVzdF9ncm91cCddKSwgVHJ1ZSkKLQotICAgICAgICB1c2VyID0gQW5vbnltb3VzVXNlcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXNlci5oYXNfcGVybSgndGVzdCcpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLmhhc19wZXJtcyhbJ2F1dGgudGVzdDInLCAnYXV0aC50ZXN0MyddKSwgRmFsc2UpCi0KLSAgICBAc2tpcElmKFRydWUsICJEbyBub3Qgc3VwcG9ydCIpCi0gICAgZGVmIHRlc3RfaGFzX25vX29iamVjdF9wZXJtKHNlbGYpOgotICAgICAgICAiIiJSZWdyZXNzaW9udGVzdCBmb3IgIzEyNDYyIiIiCi0gICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuZ2V0KHVzZXJuYW1lPSd0ZXN0JykKLSAgICAgICAgY29udGVudF90eXBlPUNvbnRlbnRUeXBlLm9iamVjdHMuZ2V0X2Zvcl9tb2RlbChHcm91cCkKLSAgICAgICAgcGVybSA9IFBlcm1pc3Npb24ub2JqZWN0cy5jcmVhdGUobmFtZT0ndGVzdCcsIGNvbnRlbnRfdHlwZT1jb250ZW50X3R5cGUsIGNvZGVuYW1lPSd0ZXN0JykKLSAgICAgICAgdXNlci51c2VyX3Blcm1pc3Npb25zLmFkZChwZXJtKQotICAgICAgICB1c2VyLnNhdmUoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXNlci5oYXNfcGVybSgnYXV0aC50ZXN0JywgJ29iamVjdCcpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLmdldF9hbGxfcGVybWlzc2lvbnMoJ29iamVjdCcpLCBzZXQoW10pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIuaGFzX3Blcm0oJ2F1dGgudGVzdCcpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIuZ2V0X2FsbF9wZXJtaXNzaW9ucygpLCBzZXQoWydhdXRoLnRlc3QnXSkpCi0KLQotY2xhc3MgVGVzdE9iaihvYmplY3QpOgotICAgIHBhc3MKLQotCi1jbGFzcyBTaW1wbGVSb3dsZXZlbEJhY2tlbmQob2JqZWN0KToKLSAgICBzdXBwb3J0c19vYmplY3RfcGVybWlzc2lvbnMgPSBUcnVlCi0KLSAgICAjIFRoaXMgY2xhc3MgYWxzbyBzdXBwb3J0cyB0ZXN0cyBmb3IgYW5vbnltb3VzIHVzZXIgcGVybWlzc2lvbnMsCi0gICAgIyB2aWEgc3ViY2xhc3NlcyB3aGljaCBqdXN0IHNldCB0aGUgJ3N1cHBvcnRzX2Fub255bW91c191c2VyJyBhdHRyaWJ1dGUuCi0KLSAgICBkZWYgaGFzX3Blcm0oc2VsZiwgdXNlciwgcGVybSwgb2JqPU5vbmUpOgotICAgICAgICBpZiBub3Qgb2JqOgotICAgICAgICAgICAgcmV0dXJuICMgV2Ugb25seSBzdXBwb3J0IHJvdyBsZXZlbCBwZXJtcwotCi0gICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBUZXN0T2JqKToKLSAgICAgICAgICAgIGlmIHVzZXIudXNlcm5hbWUgPT0gJ3Rlc3QyJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgZWxpZiB1c2VyLmlzX2Fub255bW91cygpIGFuZCBwZXJtID09ICdhbm9uJzoKLSAgICAgICAgICAgICAgICAjIG5vdCByZWFjaGVkIGR1ZSB0byBzdXBwb3J0c19hbm9ueW1vdXNfdXNlciA9IEZhbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgaGFzX21vZHVsZV9wZXJtcyhzZWxmLCB1c2VyLCBhcHBfbGFiZWwpOgotICAgICAgICByZXR1cm4gYXBwX2xhYmVsID09ICJhcHAxIgotCi0gICAgZGVmIGdldF9hbGxfcGVybWlzc2lvbnMoc2VsZiwgdXNlciwgb2JqPU5vbmUpOgotICAgICAgICBpZiBub3Qgb2JqOgotICAgICAgICAgICAgcmV0dXJuIFtdICMgV2Ugb25seSBzdXBwb3J0IHJvdyBsZXZlbCBwZXJtcwotCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgVGVzdE9iaik6Ci0gICAgICAgICAgICByZXR1cm4gWydub25lJ10KLQotICAgICAgICBpZiB1c2VyLmlzX2Fub255bW91cygpOgotICAgICAgICAgICAgcmV0dXJuIFsnYW5vbiddCi0gICAgICAgIGlmIHVzZXIudXNlcm5hbWUgPT0gJ3Rlc3QyJzoKLSAgICAgICAgICAgIHJldHVybiBbJ3NpbXBsZScsICdhZHZhbmNlZCddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gWydzaW1wbGUnXQotCi0gICAgZGVmIGdldF9ncm91cF9wZXJtaXNzaW9ucyhzZWxmLCB1c2VyLCBvYmo9Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBvYmo6Ci0gICAgICAgICAgICByZXR1cm4gIyBXZSBvbmx5IHN1cHBvcnQgcm93IGxldmVsIHBlcm1zCi0KLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCBUZXN0T2JqKToKLSAgICAgICAgICAgIHJldHVybiBbJ25vbmUnXQotCi0gICAgICAgIGlmICd0ZXN0X2dyb3VwJyBpbiBbZ3JvdXAubmFtZSBmb3IgZ3JvdXAgaW4gdXNlci5ncm91cHMuYWxsKCldOgotICAgICAgICAgICAgcmV0dXJuIFsnZ3JvdXBfcGVybSddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gWydub25lJ10KLQotCi1jbGFzcyBSb3dsZXZlbEJhY2tlbmRUZXN0KFRlc3RDYXNlKToKLSAgICAiIiIKLSAgICBUZXN0cyBmb3IgYXV0aCBiYWNrZW5kIHRoYXQgc3VwcG9ydHMgb2JqZWN0IGxldmVsIHBlcm1pc3Npb25zCi0gICAgIiIiCi0gICAgYmFja2VuZCA9ICdkamFuZ28uY29udHJpYi5hdXRoLnRlc3RzLmF1dGhfYmFja2VuZHMuU2ltcGxlUm93bGV2ZWxCYWNrZW5kJwotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmN1cnJfYXV0aCA9IHNldHRpbmdzLkFVVEhFTlRJQ0FUSU9OX0JBQ0tFTkRTCi0gICAgICAgIHNldHRpbmdzLkFVVEhFTlRJQ0FUSU9OX0JBQ0tFTkRTID0gdHVwbGUoc2VsZi5jdXJyX2F1dGgpICsgKHNlbGYuYmFja2VuZCwpCi0gICAgICAgIHNlbGYudXNlcjEgPSBVc2VyLm9iamVjdHMuY3JlYXRlX3VzZXIoJ3Rlc3QnLCAndGVzdEBleGFtcGxlLmNvbScsICd0ZXN0JykKLSAgICAgICAgc2VsZi51c2VyMiA9IFVzZXIub2JqZWN0cy5jcmVhdGVfdXNlcigndGVzdDInLCAndGVzdDJAZXhhbXBsZS5jb20nLCAndGVzdCcpCi0gICAgICAgIHNlbGYudXNlcjMgPSBVc2VyLm9iamVjdHMuY3JlYXRlX3VzZXIoJ3Rlc3QzJywgJ3Rlc3QzQGV4YW1wbGUuY29tJywgJ3Rlc3QnKQotICAgICAgICBzZWxmLnNhdmVfd2FybmluZ3Nfc3RhdGUoKQotICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGU9J2RqYW5nby5jb250cmliLmF1dGgnKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZXR0aW5ncy5BVVRIRU5USUNBVElPTl9CQUNLRU5EUyA9IHNlbGYuY3Vycl9hdXRoCi0gICAgICAgIHNlbGYucmVzdG9yZV93YXJuaW5nc19zdGF0ZSgpCi0KLSAgICBAc2tpcElmKFRydWUsICJEbyBub3Qgc3VwcG9ydCIpCi0gICAgZGVmIHRlc3RfaGFzX3Blcm0oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51c2VyMS5oYXNfcGVybSgncGVybScsIFRlc3RPYmooKSksIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjIuaGFzX3Blcm0oJ3Blcm0nLCBUZXN0T2JqKCkpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjIuaGFzX3Blcm0oJ3Blcm0nKSwgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51c2VyMi5oYXNfcGVybXMoWydzaW1wbGUnLCAnYWR2YW5jZWQnXSwgVGVzdE9iaigpKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnVzZXIzLmhhc19wZXJtKCdwZXJtJywgVGVzdE9iaigpKSwgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51c2VyMy5oYXNfcGVybSgnYW5vbicsIFRlc3RPYmooKSksIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjMuaGFzX3Blcm1zKFsnc2ltcGxlJywgJ2FkdmFuY2VkJ10sIFRlc3RPYmooKSksIEZhbHNlKQotCi0gICAgQHNraXBJZihUcnVlLCAiRG8gbm90IHN1cHBvcnQiKQotICAgIGRlZiB0ZXN0X2dldF9hbGxfcGVybWlzc2lvbnMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51c2VyMS5nZXRfYWxsX3Blcm1pc3Npb25zKFRlc3RPYmooKSksIHNldChbJ3NpbXBsZSddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnVzZXIyLmdldF9hbGxfcGVybWlzc2lvbnMoVGVzdE9iaigpKSwgc2V0KFsnc2ltcGxlJywgJ2FkdmFuY2VkJ10pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjIuZ2V0X2FsbF9wZXJtaXNzaW9ucygpLCBzZXQoW10pKQotCi0gICAgQHNraXBJZihUcnVlLCAiRG8gbm90IHN1cHBvcnQiKQotICAgIGRlZiB0ZXN0X2dldF9ncm91cF9wZXJtaXNzaW9ucyhzZWxmKToKLSAgICAgICAgY29udGVudF90eXBlPUNvbnRlbnRUeXBlLm9iamVjdHMuZ2V0X2Zvcl9tb2RlbChHcm91cCkKLSAgICAgICAgZ3JvdXAgPSBHcm91cC5vYmplY3RzLmNyZWF0ZShuYW1lPSd0ZXN0X2dyb3VwJykKLSAgICAgICAgc2VsZi51c2VyMy5ncm91cHMuYWRkKGdyb3VwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjMuZ2V0X2dyb3VwX3Blcm1pc3Npb25zKFRlc3RPYmooKSksIHNldChbJ2dyb3VwX3Blcm0nXSkpCi0KLQotY2xhc3MgQW5vbnltb3VzVXNlckJhY2tlbmQoU2ltcGxlUm93bGV2ZWxCYWNrZW5kKToKLQotICAgIHN1cHBvcnRzX2Fub255bW91c191c2VyID0gVHJ1ZQotCi0KLWNsYXNzIE5vQW5vbnltb3VzVXNlckJhY2tlbmQoU2ltcGxlUm93bGV2ZWxCYWNrZW5kKToKLQotICAgIHN1cHBvcnRzX2Fub255bW91c191c2VyID0gRmFsc2UKLQotCi1jbGFzcyBBbm9ueW1vdXNVc2VyQmFja2VuZFRlc3QoVGVzdENhc2UpOgotICAgICIiIgotICAgIFRlc3RzIGZvciBBbm9ueW1vdXNVc2VyIGRlbGVnYXRpbmcgdG8gYmFja2VuZCBpZiBpdCBoYXMgJ3N1cHBvcnRzX2Fub255bW91c191c2VyJyA9IFRydWUKLSAgICAiIiIKLQotICAgIGJhY2tlbmQgPSAnZGphbmdvLmNvbnRyaWIuYXV0aC50ZXN0cy5hdXRoX2JhY2tlbmRzLkFub255bW91c1VzZXJCYWNrZW5kJwotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmN1cnJfYXV0aCA9IHNldHRpbmdzLkFVVEhFTlRJQ0FUSU9OX0JBQ0tFTkRTCi0gICAgICAgIHNldHRpbmdzLkFVVEhFTlRJQ0FUSU9OX0JBQ0tFTkRTID0gKHNlbGYuYmFja2VuZCwpCi0gICAgICAgIHNlbGYudXNlcjEgPSBBbm9ueW1vdXNVc2VyKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgc2V0dGluZ3MuQVVUSEVOVElDQVRJT05fQkFDS0VORFMgPSBzZWxmLmN1cnJfYXV0aAotCi0gICAgQHNraXBJZihUcnVlLCAiRG8gbm90IHN1cHBvcnQiKQotICAgIGRlZiB0ZXN0X2hhc19wZXJtKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjEuaGFzX3Blcm0oJ3Blcm0nLCBUZXN0T2JqKCkpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnVzZXIxLmhhc19wZXJtKCdhbm9uJywgVGVzdE9iaigpKSwgVHJ1ZSkKLQotICAgIEBza2lwSWYoVHJ1ZSwgIkRvIG5vdCBzdXBwb3J0IikKLSAgICBkZWYgdGVzdF9oYXNfcGVybXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51c2VyMS5oYXNfcGVybXMoWydhbm9uJ10sIFRlc3RPYmooKSksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51c2VyMS5oYXNfcGVybXMoWydhbm9uJywgJ3Blcm0nXSwgVGVzdE9iaigpKSwgRmFsc2UpCi0KLSAgICBkZWYgdGVzdF9oYXNfbW9kdWxlX3Blcm1zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjEuaGFzX21vZHVsZV9wZXJtcygiYXBwMSIpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjEuaGFzX21vZHVsZV9wZXJtcygiYXBwMiIpLCBGYWxzZSkKLQotICAgIEBza2lwSWYoVHJ1ZSwgIkRvIG5vdCBzdXBwb3J0IikKLSAgICBkZWYgdGVzdF9nZXRfYWxsX3Blcm1pc3Npb25zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjEuZ2V0X2FsbF9wZXJtaXNzaW9ucyhUZXN0T2JqKCkpLCBzZXQoWydhbm9uJ10pKQotCi0KLWNsYXNzIE5vQW5vbnltb3VzVXNlckJhY2tlbmRUZXN0KFRlc3RDYXNlKToKLSAgICAiIiIKLSAgICBUZXN0cyB0aGF0IEFub255bW91c1VzZXIgZG9lcyBub3QgZGVsZWdhdGUgdG8gYmFja2VuZCBpZiBpdCBoYXMgJ3N1cHBvcnRzX2Fub255bW91c191c2VyJyA9IEZhbHNlCi0gICAgIiIiCi0gICAgYmFja2VuZCA9ICdkamFuZ28uY29udHJpYi5hdXRoLnRlc3RzLmF1dGhfYmFja2VuZHMuTm9Bbm9ueW1vdXNVc2VyQmFja2VuZCcKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5jdXJyX2F1dGggPSBzZXR0aW5ncy5BVVRIRU5USUNBVElPTl9CQUNLRU5EUwotICAgICAgICBzZXR0aW5ncy5BVVRIRU5USUNBVElPTl9CQUNLRU5EUyA9IHR1cGxlKHNlbGYuY3Vycl9hdXRoKSArIChzZWxmLmJhY2tlbmQsKQotICAgICAgICBzZWxmLnVzZXIxID0gQW5vbnltb3VzVXNlcigpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHNldHRpbmdzLkFVVEhFTlRJQ0FUSU9OX0JBQ0tFTkRTID0gc2VsZi5jdXJyX2F1dGgKLQotICAgIEBza2lwSWYoVHJ1ZSwgIkRvIG5vdCBzdXBwb3J0IikKLSAgICBkZWYgdGVzdF9oYXNfcGVybShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnVzZXIxLmhhc19wZXJtKCdwZXJtJywgVGVzdE9iaigpKSwgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51c2VyMS5oYXNfcGVybSgnYW5vbicsIFRlc3RPYmooKSksIEZhbHNlKQotCi0gICAgZGVmIHRlc3RfaGFzX3Blcm1zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjEuaGFzX3Blcm1zKFsnYW5vbiddLCBUZXN0T2JqKCkpLCBGYWxzZSkKLQotICAgIGRlZiB0ZXN0X2hhc19tb2R1bGVfcGVybXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51c2VyMS5oYXNfbW9kdWxlX3Blcm1zKCJhcHAxIiksIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXNlcjEuaGFzX21vZHVsZV9wZXJtcygiYXBwMiIpLCBGYWxzZSkKLQotICAgIGRlZiB0ZXN0X2dldF9hbGxfcGVybWlzc2lvbnMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51c2VyMS5nZXRfYWxsX3Blcm1pc3Npb25zKFRlc3RPYmooKSksIHNldCgpKQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vdGVzdHMvZm9ybXMucHkgYi9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi90ZXN0cy9mb3Jtcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDcwMTAxYy4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi90ZXN0cy9mb3Jtcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLm1vZGVscyBpbXBvcnQgVXNlcgotZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLmZvcm1zIGltcG9ydCBVc2VyQ3JlYXRpb25Gb3JtLCBBdXRoZW50aWNhdGlvbkZvcm0sICBQYXNzd29yZENoYW5nZUZvcm0sIFNldFBhc3N3b3JkRm9ybSwgVXNlckNoYW5nZUZvcm0sIFBhc3N3b3JkUmVzZXRGb3JtCi1mcm9tIGRqYW5nby50ZXN0IGltcG9ydCBUZXN0Q2FzZQotZnJvbSBkamFuZ28udXRpbHMudW5pdHRlc3QgaW1wb3J0IHNraXBJZgotCi0KLWNsYXNzIFVzZXJDcmVhdGlvbkZvcm1UZXN0KFRlc3RDYXNlKToKLQotICAgIGZpeHR1cmVzID0gWydhdXRodGVzdGRhdGEuanNvbiddCi0KLSAgICBkZWYgdGVzdF91c2VyX2FscmVhZHlfZXhpc3RzKHNlbGYpOgotICAgICAgICBkYXRhID0gewotICAgICAgICAgICAgJ3VzZXJuYW1lJzogJ3Rlc3RjbGllbnQnLAotICAgICAgICAgICAgJ3Bhc3N3b3JkMSc6ICd0ZXN0MTIzJywKLSAgICAgICAgICAgICdwYXNzd29yZDInOiAndGVzdDEyMycsCi0gICAgICAgICAgICB9Ci0gICAgICAgIGZvcm0gPSBVc2VyQ3JlYXRpb25Gb3JtKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm9ybS5pc192YWxpZCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1bInVzZXJuYW1lIl0uZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFt1J0EgdXNlciB3aXRoIHRoYXQgdXNlcm5hbWUgYWxyZWFkeSBleGlzdHMuJ10pCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2RhdGEoc2VsZik6Ci0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAndXNlcm5hbWUnOiAnanNtaXRoIScsCi0gICAgICAgICAgICAncGFzc3dvcmQxJzogJ3Rlc3QxMjMnLAotICAgICAgICAgICAgJ3Bhc3N3b3JkMic6ICd0ZXN0MTIzJywKLSAgICAgICAgICAgIH0KLSAgICAgICAgZm9ybSA9IFVzZXJDcmVhdGlvbkZvcm0oZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmb3JtLmlzX3ZhbGlkKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybVsidXNlcm5hbWUiXS5lcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgW3UnVGhpcyB2YWx1ZSBtYXkgY29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMgYW5kIEAvLi8rLy0vXyBjaGFyYWN0ZXJzLiddKQotCi0KLSAgICBkZWYgdGVzdF9wYXNzd29yZF92ZXJpZmljYXRpb24oc2VsZik6Ci0gICAgICAgICMgVGhlIHZlcmlmaWNhdGlvbiBwYXNzd29yZCBpcyBpbmNvcnJlY3QuCi0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAndXNlcm5hbWUnOiAnanNtaXRoJywKLSAgICAgICAgICAgICdwYXNzd29yZDEnOiAndGVzdDEyMycsCi0gICAgICAgICAgICAncGFzc3dvcmQyJzogJ3Rlc3QnLAotICAgICAgICAgICAgfQotICAgICAgICBmb3JtID0gVXNlckNyZWF0aW9uRm9ybShkYXRhKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZvcm0uaXNfdmFsaWQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtWyJwYXNzd29yZDIiXS5lcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgW3UiVGhlIHR3byBwYXNzd29yZCBmaWVsZHMgZGlkbid0IG1hdGNoLiJdKQotCi0KLSAgICBkZWYgdGVzdF9ib3RoX3Bhc3N3b3JkcyhzZWxmKToKLSAgICAgICAgIyBPbmUgKG9yIGJvdGgpIHBhc3N3b3JkcyB3ZXJlbid0IGdpdmVuCi0gICAgICAgIGRhdGEgPSB7J3VzZXJuYW1lJzogJ2pzbWl0aCd9Ci0gICAgICAgIGZvcm0gPSBVc2VyQ3JlYXRpb25Gb3JtKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm9ybS5pc192YWxpZCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1bJ3Bhc3N3b3JkMSddLmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICBbdSdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1bJ3Bhc3N3b3JkMiddLmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICBbdSdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiddKQotCi0KLSAgICAgICAgZGF0YVsncGFzc3dvcmQyJ10gPSAndGVzdDEyMycKLSAgICAgICAgZm9ybSA9IFVzZXJDcmVhdGlvbkZvcm0oZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmb3JtLmlzX3ZhbGlkKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybVsncGFzc3dvcmQxJ10uZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFt1J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJ10pCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICAjIFRoZSBzdWNjZXNzIGNhc2UuCi0KLSAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgICd1c2VybmFtZSc6ICdqc21pdGhAZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ3Bhc3N3b3JkMSc6ICd0ZXN0MTIzJywKLSAgICAgICAgICAgICdwYXNzd29yZDInOiAndGVzdDEyMycsCi0gICAgICAgICAgICB9Ci0gICAgICAgIGZvcm0gPSBVc2VyQ3JlYXRpb25Gb3JtKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3JtLmlzX3ZhbGlkKCkpCi0gICAgICAgIHUgPSBmb3JtLnNhdmUoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIodSksICc8VXNlcjoganNtaXRoQGV4YW1wbGUuY29tPicpCi0KLQotY2xhc3MgQXV0aGVudGljYXRpb25Gb3JtVGVzdChUZXN0Q2FzZSk6Ci0KLSAgICBmaXh0dXJlcyA9IFsnYXV0aHRlc3RkYXRhLmpzb24nXQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF91c2VybmFtZShzZWxmKToKLSAgICAgICAgIyBUaGUgdXNlciBzdWJtaXRzIGFuIGludmFsaWQgdXNlcm5hbWUuCi0KLSAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgICd1c2VybmFtZSc6ICdqc21pdGhfZG9lc19ub3RfZXhpc3QnLAotICAgICAgICAgICAgJ3Bhc3N3b3JkJzogJ3Rlc3QxMjMnLAotICAgICAgICAgICAgfQotICAgICAgICBmb3JtID0gQXV0aGVudGljYXRpb25Gb3JtKE5vbmUsIGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm9ybS5pc192YWxpZCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm0ubm9uX2ZpZWxkX2Vycm9ycygpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFt1J1BsZWFzZSBlbnRlciBhIGNvcnJlY3QgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLiBOb3RlIHRoYXQgYm90aCBmaWVsZHMgYXJlIGNhc2Utc2Vuc2l0aXZlLiddKQotCi0gICAgZGVmIHRlc3RfaW5hY3RpdmVfdXNlcihzZWxmKToKLSAgICAgICAgIyBUaGUgdXNlciBpcyBpbmFjdGl2ZS4KLSAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgICd1c2VybmFtZSc6ICdpbmFjdGl2ZScsCi0gICAgICAgICAgICAncGFzc3dvcmQnOiAncGFzc3dvcmQnLAotICAgICAgICAgICAgfQotICAgICAgICBmb3JtID0gQXV0aGVudGljYXRpb25Gb3JtKE5vbmUsIGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm9ybS5pc192YWxpZCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm0ubm9uX2ZpZWxkX2Vycm9ycygpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFt1J1RoaXMgYWNjb3VudCBpcyBpbmFjdGl2ZS4nXSkKLQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgIyBUaGUgc3VjY2VzcyBjYXNlCi0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAndXNlcm5hbWUnOiAndGVzdGNsaWVudCcsCi0gICAgICAgICAgICAncGFzc3dvcmQnOiAncGFzc3dvcmQnLAotICAgICAgICAgICAgfQotICAgICAgICBmb3JtID0gQXV0aGVudGljYXRpb25Gb3JtKE5vbmUsIGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3JtLmlzX3ZhbGlkKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybS5ub25fZmllbGRfZXJyb3JzKCksIFtdKQotCi0KLWNsYXNzIFNldFBhc3N3b3JkRm9ybVRlc3QoVGVzdENhc2UpOgotCi0gICAgZml4dHVyZXMgPSBbJ2F1dGh0ZXN0ZGF0YS5qc29uJ10KLQotICAgIGRlZiB0ZXN0X3Bhc3N3b3JkX3ZlcmlmaWNhdGlvbihzZWxmKToKLSAgICAgICAgIyBUaGUgdHdvIG5ldyBwYXNzd29yZHMgZG8gbm90IG1hdGNoLgotICAgICAgICB1c2VyID0gVXNlci5vYmplY3RzLmdldCh1c2VybmFtZT0ndGVzdGNsaWVudCcpCi0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAnbmV3X3Bhc3N3b3JkMSc6ICdhYmMxMjMnLAotICAgICAgICAgICAgJ25ld19wYXNzd29yZDInOiAnYWJjJywKLSAgICAgICAgICAgIH0KLSAgICAgICAgZm9ybSA9IFNldFBhc3N3b3JkRm9ybSh1c2VyLCBkYXRhKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZvcm0uaXNfdmFsaWQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtWyJuZXdfcGFzc3dvcmQyIl0uZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFt1IlRoZSB0d28gcGFzc3dvcmQgZmllbGRzIGRpZG4ndCBtYXRjaC4iXSkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuZ2V0KHVzZXJuYW1lPSd0ZXN0Y2xpZW50JykKLSAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgICduZXdfcGFzc3dvcmQxJzogJ2FiYzEyMycsCi0gICAgICAgICAgICAnbmV3X3Bhc3N3b3JkMic6ICdhYmMxMjMnLAotICAgICAgICAgICAgfQotICAgICAgICBmb3JtID0gU2V0UGFzc3dvcmRGb3JtKHVzZXIsIGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3JtLmlzX3ZhbGlkKCkpCi0KLQotY2xhc3MgUGFzc3dvcmRDaGFuZ2VGb3JtVGVzdChUZXN0Q2FzZSk6Ci0KLSAgICBmaXh0dXJlcyA9IFsnYXV0aHRlc3RkYXRhLmpzb24nXQotCi0gICAgZGVmIHRlc3RfaW5jb3JyZWN0X3Bhc3N3b3JkKHNlbGYpOgotICAgICAgICB1c2VyID0gVXNlci5vYmplY3RzLmdldCh1c2VybmFtZT0ndGVzdGNsaWVudCcpCi0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAnb2xkX3Bhc3N3b3JkJzogJ3Rlc3QnLAotICAgICAgICAgICAgJ25ld19wYXNzd29yZDEnOiAnYWJjMTIzJywKLSAgICAgICAgICAgICduZXdfcGFzc3dvcmQyJzogJ2FiYzEyMycsCi0gICAgICAgICAgICB9Ci0gICAgICAgIGZvcm0gPSBQYXNzd29yZENoYW5nZUZvcm0odXNlciwgZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmb3JtLmlzX3ZhbGlkKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybVsib2xkX3Bhc3N3b3JkIl0uZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFt1J1lvdXIgb2xkIHBhc3N3b3JkIHdhcyBlbnRlcmVkIGluY29ycmVjdGx5LiBQbGVhc2UgZW50ZXIgaXQgYWdhaW4uJ10pCi0KLQotICAgIGRlZiB0ZXN0X3Bhc3N3b3JkX3ZlcmlmaWNhdGlvbihzZWxmKToKLSAgICAgICAgIyBUaGUgdHdvIG5ldyBwYXNzd29yZHMgZG8gbm90IG1hdGNoLgotICAgICAgICB1c2VyID0gVXNlci5vYmplY3RzLmdldCh1c2VybmFtZT0ndGVzdGNsaWVudCcpCi0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAnb2xkX3Bhc3N3b3JkJzogJ3Bhc3N3b3JkJywKLSAgICAgICAgICAgICduZXdfcGFzc3dvcmQxJzogJ2FiYzEyMycsCi0gICAgICAgICAgICAnbmV3X3Bhc3N3b3JkMic6ICdhYmMnLAotICAgICAgICAgICAgfQotICAgICAgICBmb3JtID0gUGFzc3dvcmRDaGFuZ2VGb3JtKHVzZXIsIGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm9ybS5pc192YWxpZCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1bIm5ld19wYXNzd29yZDIiXS5lcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgW3UiVGhlIHR3byBwYXNzd29yZCBmaWVsZHMgZGlkbid0IG1hdGNoLiJdKQotCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICAjIFRoZSBzdWNjZXNzIGNhc2UuCi0gICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuZ2V0KHVzZXJuYW1lPSd0ZXN0Y2xpZW50JykKLSAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgICdvbGRfcGFzc3dvcmQnOiAncGFzc3dvcmQnLAotICAgICAgICAgICAgJ25ld19wYXNzd29yZDEnOiAnYWJjMTIzJywKLSAgICAgICAgICAgICduZXdfcGFzc3dvcmQyJzogJ2FiYzEyMycsCi0gICAgICAgICAgICB9Ci0gICAgICAgIGZvcm0gPSBQYXNzd29yZENoYW5nZUZvcm0odXNlciwgZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvcm0uaXNfdmFsaWQoKSkKLQotICAgIGRlZiB0ZXN0X2ZpZWxkX29yZGVyKHNlbGYpOgotICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCAtIGNoZWNrIHRoZSBvcmRlciBvZiBmaWVsZHM6Ci0gICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuZ2V0KHVzZXJuYW1lPSd0ZXN0Y2xpZW50JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQYXNzd29yZENoYW5nZUZvcm0odXNlciwge30pLmZpZWxkcy5rZXlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydvbGRfcGFzc3dvcmQnLCAnbmV3X3Bhc3N3b3JkMScsICduZXdfcGFzc3dvcmQyJ10pCi0KLWNsYXNzIFVzZXJDaGFuZ2VGb3JtVGVzdChUZXN0Q2FzZSk6Ci0KLSAgICBmaXh0dXJlcyA9IFsnYXV0aHRlc3RkYXRhLmpzb24nXQotCi0gICAgQHNraXBJZihUcnVlLCAiRG8gbm90IHN1cHBvcnQiKQotICAgIGRlZiB0ZXN0X3VzZXJuYW1lX3ZhbGlkaXR5KHNlbGYpOgotICAgICAgICB1c2VyID0gVXNlci5vYmplY3RzLmdldCh1c2VybmFtZT0ndGVzdGNsaWVudCcpCi0gICAgICAgIGRhdGEgPSB7J3VzZXJuYW1lJzogJ25vdCB2YWxpZCd9Ci0gICAgICAgIGZvcm0gPSBVc2VyQ2hhbmdlRm9ybShkYXRhLCBpbnN0YW5jZT11c2VyKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZvcm0uaXNfdmFsaWQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtWyd1c2VybmFtZSddLmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICBbdSdUaGlzIHZhbHVlIG1heSBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycyBhbmQgQC8uLysvLS9fIGNoYXJhY3RlcnMuJ10pCi0KLSAgICBkZWYgdGVzdF9idWdfMTQyNDIoc2VsZik6Ci0gICAgICAgICMgQSByZWdyZXNzaW9uIHRlc3QsIGludHJvZHVjZSBieSBhZGRpbmcgYW4gb3B0aW1pemF0aW9uIGZvciB0aGUKLSAgICAgICAgIyBVc2VyQ2hhbmdlRm9ybS4KLQotICAgICAgICBjbGFzcyBNeVVzZXJGb3JtKFVzZXJDaGFuZ2VGb3JtKToKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgICAgIHN1cGVyKE15VXNlckZvcm0sIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgICAgICAgICBzZWxmLmZpZWxkc1snZ3JvdXBzJ10uaGVscF90ZXh0ID0gJ1RoZXNlIGdyb3VwcyBnaXZlIHVzZXJzIGRpZmZlcmVudCBwZXJtaXNzaW9ucycKLQotICAgICAgICAgICAgY2xhc3MgTWV0YShVc2VyQ2hhbmdlRm9ybS5NZXRhKToKLSAgICAgICAgICAgICAgICBmaWVsZHMgPSAoJ2dyb3VwcycsKQotCi0gICAgICAgICMgSnVzdCBjaGVjayB3ZSBjYW4gY3JlYXRlIGl0Ci0gICAgICAgIGZvcm0gPSBNeVVzZXJGb3JtKHt9KQotCi0KLWNsYXNzIFBhc3N3b3JkUmVzZXRGb3JtVGVzdChUZXN0Q2FzZSk6Ci0KLSAgICBmaXh0dXJlcyA9IFsnYXV0aHRlc3RkYXRhLmpzb24nXQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF9lbWFpbChzZWxmKToKLSAgICAgICAgZGF0YSA9IHsnZW1haWwnOidub3QgdmFsaWQnfQotICAgICAgICBmb3JtID0gUGFzc3dvcmRSZXNldEZvcm0oZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmb3JtLmlzX3ZhbGlkKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybVsnZW1haWwnXS5lcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgW3UnRW50ZXIgYSB2YWxpZCBlLW1haWwgYWRkcmVzcy4nXSkKLQotICAgIGRlZiB0ZXN0X25vbmV4aXN0YW50X2VtYWlsKHNlbGYpOgotICAgICAgICAjIFRlc3Qgbm9uZXhpc3RhbnQgZW1haWwgYWRkcmVzcwotICAgICAgICBkYXRhID0geydlbWFpbCc6J2Zvb0BiYXIuY29tJ30KLSAgICAgICAgZm9ybSA9IFBhc3N3b3JkUmVzZXRGb3JtKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm9ybS5pc192YWxpZCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm0uZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgIHsnZW1haWwnOiBbdSJUaGF0IGUtbWFpbCBhZGRyZXNzIGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHVzZXIgYWNjb3VudC4gQXJlIHlvdSBzdXJlIHlvdSd2ZSByZWdpc3RlcmVkPyJdfSkKLQotICAgIGRlZiB0ZXN0X2NsZWFuZWRfZGF0YShzZWxmKToKLSAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QKLSAgICAgICAgdXNlciA9IFVzZXIub2JqZWN0cy5jcmVhdGVfdXNlcigianNtaXRoMyIsICJqc21pdGgzQGV4YW1wbGUuY29tIiwgInRlc3QxMjMiKQotICAgICAgICBkYXRhID0geydlbWFpbCc6J2pzbWl0aDNAZXhhbXBsZS5jb20nfQotICAgICAgICBmb3JtID0gUGFzc3dvcmRSZXNldEZvcm0oZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvcm0uaXNfdmFsaWQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtLmNsZWFuZWRfZGF0YVsnZW1haWwnXSwgdSdqc21pdGgzQGV4YW1wbGUuY29tJykKLQotCi0gICAgZGVmIHRlc3RfYnVnXzU2MDUoc2VsZik6Ci0gICAgICAgICMgYnVnICM1NjA1LCBwcmVzZXJ2ZSB0aGUgY2FzZSBvZiB0aGUgdXNlciBuYW1lIChiZWZvcmUgdGhlIEAgaW4gdGhlCi0gICAgICAgICMgZW1haWwgYWRkcmVzcykgd2hlbiBjcmVhdGluZyBhIHVzZXIuCi0gICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuY3JlYXRlX3VzZXIoJ2Zvcm1zX3Rlc3QyJywgJ3Rlc1RARVhBTXBsZS5jb20nLCAndGVzdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXNlci5lbWFpbCwgJ3Rlc1RAZXhhbXBsZS5jb20nKQotICAgICAgICB1c2VyID0gVXNlci5vYmplY3RzLmNyZWF0ZV91c2VyKCdmb3Jtc190ZXN0MycsICd0ZXNUJywgJ3Rlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIuZW1haWwsICd0ZXNUJykKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL3Rlc3RzL3VybHMucHkgYi9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi90ZXN0cy91cmxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhMjI4NTQ5Li4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL3Rlc3RzL3VybHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotZnJvbSBkamFuZ28uY29uZi51cmxzLmRlZmF1bHRzIGltcG9ydCBwYXR0ZXJucwotZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLnVybHMgaW1wb3J0IHVybHBhdHRlcm5zCi1mcm9tIGRqYW5nby5jb250cmliLmF1dGgudmlld3MgaW1wb3J0IHBhc3N3b3JkX3Jlc2V0Ci1mcm9tIGRqYW5nby5jb250cmliLmF1dGguZGVjb3JhdG9ycyBpbXBvcnQgbG9naW5fcmVxdWlyZWQKLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZQotZnJvbSBkamFuZ28udGVtcGxhdGUgaW1wb3J0IFRlbXBsYXRlLCBSZXF1ZXN0Q29udGV4dAotCi1kZWYgcmVtb3RlX3VzZXJfYXV0aF92aWV3KHJlcXVlc3QpOgotICAgICJEdW1teSB2aWV3IGZvciByZW1vdGUgdXNlciB0ZXN0cyIKLSAgICB0ID0gVGVtcGxhdGUoIlVzZXJuYW1lIGlzIHt7IHVzZXIgfX0uIikKLSAgICBjID0gUmVxdWVzdENvbnRleHQocmVxdWVzdCwge30pCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZSh0LnJlbmRlcihjKSkKLQotIyBzcGVjaWFsIHVybHMgZm9yIGF1dGggdGVzdCBjYXNlcwotdXJscGF0dGVybnMgPSB1cmxwYXR0ZXJucyArIHBhdHRlcm5zKCcnLAotICAgIChyJ15sb2dvdXQvY3VzdG9tX3F1ZXJ5LyQnLCAnZGphbmdvLmNvbnRyaWIuYXV0aC52aWV3cy5sb2dvdXQnLCBkaWN0KHJlZGlyZWN0X2ZpZWxkX25hbWU9J2ZvbGxvdycpKSwKLSAgICAocidebG9nb3V0L25leHRfcGFnZS8kJywgJ2RqYW5nby5jb250cmliLmF1dGgudmlld3MubG9nb3V0JywgZGljdChuZXh0X3BhZ2U9Jy9zb21ld2hlcmUvJykpLAotICAgIChyJ15yZW1vdGVfdXNlci8kJywgcmVtb3RlX3VzZXJfYXV0aF92aWV3KSwKLSAgICAocidecGFzc3dvcmRfcmVzZXRfZnJvbV9lbWFpbC8kJywgJ2RqYW5nby5jb250cmliLmF1dGgudmlld3MucGFzc3dvcmRfcmVzZXQnLCBkaWN0KGZyb21fZW1haWw9J3N0YWZmbWVtYmVyQGV4YW1wbGUuY29tJykpLAotICAgIChyJ15sb2dpbl9yZXF1aXJlZC8kJywgbG9naW5fcmVxdWlyZWQocGFzc3dvcmRfcmVzZXQpKSwKLSAgICAocidebG9naW5fcmVxdWlyZWRfbG9naW5fdXJsLyQnLCBsb2dpbl9yZXF1aXJlZChwYXNzd29yZF9yZXNldCwgbG9naW5fdXJsPScvc29tZXdoZXJlLycpKSwKLSkKLQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vdGVzdHMvdmlld3MucHkgYi9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi90ZXN0cy92aWV3cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzM1OTQxZS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi90ZXN0cy92aWV3cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDMxMSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCB1cmxsaWIKLQotZnJvbSBkamFuZ28uY29uZiBpbXBvcnQgc2V0dGluZ3MKLWZyb20gZGphbmdvLmNvbnRyaWIuYXV0aCBpbXBvcnQgU0VTU0lPTl9LRVksIFJFRElSRUNUX0ZJRUxEX05BTUUKLWZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5mb3JtcyBpbXBvcnQgQXV0aGVudGljYXRpb25Gb3JtCi1mcm9tIGRqYW5nby5jb250cmliLnNpdGVzLm1vZGVscyBpbXBvcnQgU2l0ZSwgUmVxdWVzdFNpdGUKLWZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5tb2RlbHMgaW1wb3J0IFVzZXIKLWZyb20gZGphbmdvLnRlc3QgaW1wb3J0IFRlc3RDYXNlCi1mcm9tIGRqYW5nby5jb3JlIGltcG9ydCBtYWlsCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQotZnJvbSBkamFuZ28udXRpbHMudW5pdHRlc3QgaW1wb3J0IHNraXBJZgotCi1jbGFzcyBBdXRoVmlld3NUZXN0Q2FzZShUZXN0Q2FzZSk6Ci0gICAgIiIiCi0gICAgSGVscGVyIGJhc2UgY2xhc3MgZm9yIGFsbCB0aGUgZm9sbG93IHRlc3QgY2FzZXMuCi0gICAgIiIiCi0gICAgZml4dHVyZXMgPSBbJ2F1dGh0ZXN0ZGF0YS5qc29uJ10KLSAgICB1cmxzID0gJ2RqYW5nby5jb250cmliLmF1dGgudGVzdHMudXJscycKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5vbGRfTEFOR1VBR0VTID0gc2V0dGluZ3MuTEFOR1VBR0VTCi0gICAgICAgIHNlbGYub2xkX0xBTkdVQUdFX0NPREUgPSBzZXR0aW5ncy5MQU5HVUFHRV9DT0RFCi0gICAgICAgIHNldHRpbmdzLkxBTkdVQUdFUyA9ICgoJ2VuJywgJ0VuZ2xpc2gnKSwpCi0gICAgICAgIHNldHRpbmdzLkxBTkdVQUdFX0NPREUgPSAnZW4nCi0gICAgICAgIHNlbGYub2xkX1RFTVBMQVRFX0RJUlMgPSBzZXR0aW5ncy5URU1QTEFURV9ESVJTCi0gICAgICAgIHNldHRpbmdzLlRFTVBMQVRFX0RJUlMgPSAoCi0gICAgICAgICAgICBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwKLSAgICAgICAgICAgICAgICAndGVtcGxhdGVzJwotICAgICAgICAgICAgKQotICAgICAgICAsKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZXR0aW5ncy5MQU5HVUFHRVMgPSBzZWxmLm9sZF9MQU5HVUFHRVMKLSAgICAgICAgc2V0dGluZ3MuTEFOR1VBR0VfQ09ERSA9IHNlbGYub2xkX0xBTkdVQUdFX0NPREUKLSAgICAgICAgc2V0dGluZ3MuVEVNUExBVEVfRElSUyA9IHNlbGYub2xkX1RFTVBMQVRFX0RJUlMKLQotICAgIGRlZiBsb2dpbihzZWxmLCBwYXNzd29yZD0ncGFzc3dvcmQnKToKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5wb3N0KCcvbG9naW4vJywgewotICAgICAgICAgICAgJ3VzZXJuYW1lJzogJ3Rlc3RjbGllbnQnLAotICAgICAgICAgICAgJ3Bhc3N3b3JkJzogcGFzc3dvcmQKLSAgICAgICAgICAgIH0KLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMzAyKQotICAgICAgICBzZWxmLmFzc2VydF8ocmVzcG9uc2VbJ0xvY2F0aW9uJ10uZW5kc3dpdGgoc2V0dGluZ3MuTE9HSU5fUkVESVJFQ1RfVVJMKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKFNFU1NJT05fS0VZIGluIHNlbGYuY2xpZW50LnNlc3Npb24pCi0KLWNsYXNzIFBhc3N3b3JkUmVzZXRUZXN0KEF1dGhWaWV3c1Rlc3RDYXNlKToKLQotICAgIGRlZiB0ZXN0X2VtYWlsX25vdF9mb3VuZChzZWxmKToKLSAgICAgICAgIkVycm9yIGlzIHJhaXNlZCBpZiB0aGUgcHJvdmlkZWQgZW1haWwgYWRkcmVzcyBpc24ndCBjdXJyZW50bHkgcmVnaXN0ZXJlZCIKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5nZXQoJy9wYXNzd29yZF9yZXNldC8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICByZXNwb25zZSA9IHNlbGYuY2xpZW50LnBvc3QoJy9wYXNzd29yZF9yZXNldC8nLCB7J2VtYWlsJzogJ25vdF9hX3JlYWxfZW1haWxAZW1haWwuY29tJ30pCi0gICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnMocmVzcG9uc2UsICJUaGF0IGUtbWFpbCBhZGRyZXNzIGRvZXNuJiMzOTt0IGhhdmUgYW4gYXNzb2NpYXRlZCB1c2VyIGFjY291bnQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4obWFpbC5vdXRib3gpLCAwKQotCi0gICAgQHNraXBJZihUcnVlLCAiRG8gbm90IHN1cHBvcnQiKQotICAgIGRlZiB0ZXN0X2VtYWlsX2ZvdW5kKHNlbGYpOgotICAgICAgICAiRW1haWwgaXMgc2VudCBpZiBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgaXMgcHJvdmlkZWQgZm9yIHBhc3N3b3JkIHJlc2V0IgotICAgICAgICByZXNwb25zZSA9IHNlbGYuY2xpZW50LnBvc3QoJy9wYXNzd29yZF9yZXNldC8nLCB7J2VtYWlsJzogJ3N0YWZmbWVtYmVyQGV4YW1wbGUuY29tJ30pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAzMDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihtYWlsLm91dGJveCksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0XygiaHR0cDovLyIgaW4gbWFpbC5vdXRib3hbMF0uYm9keSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2V0dGluZ3MuREVGQVVMVF9GUk9NX0VNQUlMLCBtYWlsLm91dGJveFswXS5mcm9tX2VtYWlsKQotCi0gICAgQHNraXBJZihUcnVlLCAiRG8gbm90IHN1cHBvcnQiKQotICAgIGRlZiB0ZXN0X2VtYWlsX2ZvdW5kX2N1c3RvbV9mcm9tKHNlbGYpOgotICAgICAgICAiRW1haWwgaXMgc2VudCBpZiBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgaXMgcHJvdmlkZWQgZm9yIHBhc3N3b3JkIHJlc2V0IHdoZW4gYSBjdXN0b20gZnJvbV9lbWFpbCBpcyBwcm92aWRlZC4iCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi5jbGllbnQucG9zdCgnL3Bhc3N3b3JkX3Jlc2V0X2Zyb21fZW1haWwvJywgeydlbWFpbCc6ICdzdGFmZm1lbWJlckBleGFtcGxlLmNvbSd9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMzAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4obWFpbC5vdXRib3gpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygic3RhZmZtZW1iZXJAZXhhbXBsZS5jb20iLCBtYWlsLm91dGJveFswXS5mcm9tX2VtYWlsKQotCi0gICAgZGVmIF90ZXN0X2NvbmZpcm1fc3RhcnQoc2VsZik6Ci0gICAgICAgICMgU3RhcnQgYnkgY3JlYXRpbmcgdGhlIGVtYWlsCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi5jbGllbnQucG9zdCgnL3Bhc3N3b3JkX3Jlc2V0LycsIHsnZW1haWwnOiAnc3RhZmZtZW1iZXJAZXhhbXBsZS5jb20nfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDMwMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKG1haWwub3V0Ym94KSwgMSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfc2lnbnVwX2VtYWlsKG1haWwub3V0Ym94WzBdKQotCi0gICAgZGVmIF9yZWFkX3NpZ251cF9lbWFpbChzZWxmLCBlbWFpbCk6Ci0gICAgICAgIHVybG1hdGNoID0gcmUuc2VhcmNoKHIiaHR0cHM/Oi8vW14vXSooLy4qcmVzZXQvXFMqKSIsIGVtYWlsLmJvZHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh1cmxtYXRjaCBpcyBub3QgTm9uZSwgIk5vIFVSTCBmb3VuZCBpbiBzZW50IGVtYWlsIikKLSAgICAgICAgcmV0dXJuIHVybG1hdGNoLmdyb3VwKCksIHVybG1hdGNoLmdyb3VwcygpWzBdCi0KLSAgICBAc2tpcElmKFRydWUsICJEbyBub3Qgc3VwcG9ydCIpCi0gICAgZGVmIHRlc3RfY29uZmlybV92YWxpZChzZWxmKToKLSAgICAgICAgdXJsLCBwYXRoID0gc2VsZi5fdGVzdF9jb25maXJtX3N0YXJ0KCkKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5nZXQocGF0aCkKLSAgICAgICAgIyByZWRpcmVjdCB0byBhICdjb21wbGV0ZScgcGFnZToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRfKCJQbGVhc2UgZW50ZXIgeW91ciBuZXcgcGFzc3dvcmQiIGluIHJlc3BvbnNlLmNvbnRlbnQpCi0KLSAgICBAc2tpcElmKFRydWUsICJEbyBub3Qgc3VwcG9ydCIpCi0gICAgZGVmIHRlc3RfY29uZmlybV9pbnZhbGlkKHNlbGYpOgotICAgICAgICB1cmwsIHBhdGggPSBzZWxmLl90ZXN0X2NvbmZpcm1fc3RhcnQoKQotICAgICAgICAjIExldCdzIG11bmdlIHRoZSB0b2tlbiBpbiB0aGUgcGF0aCwgYnV0IGtlZXAgdGhlIHNhbWUgbGVuZ3RoLAotICAgICAgICAjIGluIGNhc2UgdGhlIFVSTGNvbmYgd2lsbCByZWplY3QgYSBkaWZmZXJlbnQgbGVuZ3RoLgotICAgICAgICBwYXRoID0gcGF0aFs6LTVdICsgKCIwIio0KSArIHBhdGhbLTFdCi0KLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5nZXQocGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRfKCJUaGUgcGFzc3dvcmQgcmVzZXQgbGluayB3YXMgaW52YWxpZCIgaW4gcmVzcG9uc2UuY29udGVudCkKLQotICAgIEBza2lwSWYoVHJ1ZSwgIkRvIG5vdCBzdXBwb3J0IikKLSAgICBkZWYgdGVzdF9jb25maXJtX2ludmFsaWRfdXNlcihzZWxmKToKLSAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBnZXQgYSAyMDAgcmVzcG9uc2UgZm9yIGEgbm9uLWV4aXN0YW50IHVzZXIsIG5vdCBhIDQwNAotICAgICAgICByZXNwb25zZSA9IHNlbGYuY2xpZW50LmdldCgnL3Jlc2V0LzEyMzQ1Ni0xLTEvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRfKCJUaGUgcGFzc3dvcmQgcmVzZXQgbGluayB3YXMgaW52YWxpZCIgaW4gcmVzcG9uc2UuY29udGVudCkKLQotICAgIEBza2lwSWYoVHJ1ZSwgIkRvIG5vdCBzdXBwb3J0IikKLSAgICBkZWYgdGVzdF9jb25maXJtX2ludmFsaWRfcG9zdChzZWxmKToKLSAgICAgICAgIyBTYW1lIGFzIHRlc3RfY29uZmlybV9pbnZhbGlkLCBidXQgdHJ5aW5nCi0gICAgICAgICMgdG8gZG8gYSBQT1NUIGluc3RlYWQuCi0gICAgICAgIHVybCwgcGF0aCA9IHNlbGYuX3Rlc3RfY29uZmlybV9zdGFydCgpCi0gICAgICAgIHBhdGggPSBwYXRoWzotNV0gKyAoIjAiKjQpICsgcGF0aFstMV0KLQotICAgICAgICByZXNwb25zZSA9IHNlbGYuY2xpZW50LnBvc3QocGF0aCwgeyduZXdfcGFzc3dvcmQxJzogJ2FuZXdwYXNzd29yZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ld19wYXNzd29yZDInOicgYW5ld3Bhc3N3b3JkJ30pCi0gICAgICAgICMgQ2hlY2sgdGhlIHBhc3N3b3JkIGhhcyBub3QgYmVlbiBjaGFuZ2VkCi0gICAgICAgIHUgPSBVc2VyLm9iamVjdHMuZ2V0KGVtYWlsPSdzdGFmZm1lbWJlckBleGFtcGxlLmNvbScpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdS5jaGVja19wYXNzd29yZCgiYW5ld3Bhc3N3b3JkIikpCi0KLSAgICBAc2tpcElmKFRydWUsICJEbyBub3Qgc3VwcG9ydCIpCi0gICAgZGVmIHRlc3RfY29uZmlybV9jb21wbGV0ZShzZWxmKToKLSAgICAgICAgdXJsLCBwYXRoID0gc2VsZi5fdGVzdF9jb25maXJtX3N0YXJ0KCkKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5wb3N0KHBhdGgsIHsnbmV3X3Bhc3N3b3JkMSc6ICdhbmV3cGFzc3dvcmQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXdfcGFzc3dvcmQyJzogJ2FuZXdwYXNzd29yZCd9KQotICAgICAgICAjIEl0IHJlZGlyZWN0cyB1cyB0byBhICdjb21wbGV0ZScgcGFnZToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDMwMikKLSAgICAgICAgIyBDaGVjayB0aGUgcGFzc3dvcmQgaGFzIGJlZW4gY2hhbmdlZAotICAgICAgICB1ID0gVXNlci5vYmplY3RzLmdldChlbWFpbD0nc3RhZmZtZW1iZXJAZXhhbXBsZS5jb20nKQotICAgICAgICBzZWxmLmFzc2VydF8odS5jaGVja19wYXNzd29yZCgiYW5ld3Bhc3N3b3JkIikpCi0KLSAgICAgICAgIyBDaGVjayB3ZSBjYW4ndCB1c2UgdGhlIGxpbmsgYWdhaW4KLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5nZXQocGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRfKCJUaGUgcGFzc3dvcmQgcmVzZXQgbGluayB3YXMgaW52YWxpZCIgaW4gcmVzcG9uc2UuY29udGVudCkKLQotICAgIEBza2lwSWYoVHJ1ZSwgIkRvIG5vdCBzdXBwb3J0IikKLSAgICBkZWYgdGVzdF9jb25maXJtX2RpZmZlcmVudF9wYXNzd29yZHMoc2VsZik6Ci0gICAgICAgIHVybCwgcGF0aCA9IHNlbGYuX3Rlc3RfY29uZmlybV9zdGFydCgpCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi5jbGllbnQucG9zdChwYXRoLCB7J25ld19wYXNzd29yZDEnOiAnYW5ld3Bhc3N3b3JkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3X3Bhc3N3b3JkMic6JyB4J30pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0XygiVGhlIHR3byBwYXNzd29yZCBmaWVsZHMgZGlkbiYjMzk7dCBtYXRjaCIgaW4gcmVzcG9uc2UuY29udGVudCkKLQotY2xhc3MgQ2hhbmdlUGFzc3dvcmRUZXN0KEF1dGhWaWV3c1Rlc3RDYXNlKToKLQotICAgIGRlZiBmYWlsX2xvZ2luKHNlbGYsIHBhc3N3b3JkPSdwYXNzd29yZCcpOgotICAgICAgICByZXNwb25zZSA9IHNlbGYuY2xpZW50LnBvc3QoJy9sb2dpbi8nLCB7Ci0gICAgICAgICAgICAndXNlcm5hbWUnOiAndGVzdGNsaWVudCcsCi0gICAgICAgICAgICAncGFzc3dvcmQnOiBwYXNzd29yZAotICAgICAgICAgICAgfQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0XygiUGxlYXNlIGVudGVyIGEgY29ycmVjdCB1c2VybmFtZSBhbmQgcGFzc3dvcmQuIE5vdGUgdGhhdCBib3RoIGZpZWxkcyBhcmUgY2FzZS1zZW5zaXRpdmUuIiBpbiByZXNwb25zZS5jb250ZW50KQotCi0gICAgZGVmIGxvZ291dChzZWxmKToKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5nZXQoJy9sb2dvdXQvJykKLQotICAgIGRlZiB0ZXN0X3Bhc3N3b3JkX2NoYW5nZV9mYWlsc193aXRoX2ludmFsaWRfb2xkX3Bhc3N3b3JkKHNlbGYpOgotICAgICAgICBzZWxmLmxvZ2luKCkKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5wb3N0KCcvcGFzc3dvcmRfY2hhbmdlLycsIHsKLSAgICAgICAgICAgICdvbGRfcGFzc3dvcmQnOiAnZG9udXRzJywKLSAgICAgICAgICAgICduZXdfcGFzc3dvcmQxJzogJ3Bhc3N3b3JkMScsCi0gICAgICAgICAgICAnbmV3X3Bhc3N3b3JkMic6ICdwYXNzd29yZDEnLAotICAgICAgICAgICAgfQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0XygiWW91ciBvbGQgcGFzc3dvcmQgd2FzIGVudGVyZWQgaW5jb3JyZWN0bHkuIFBsZWFzZSBlbnRlciBpdCBhZ2Fpbi4iIGluIHJlc3BvbnNlLmNvbnRlbnQpCi0KLSAgICBkZWYgdGVzdF9wYXNzd29yZF9jaGFuZ2VfZmFpbHNfd2l0aF9taXNtYXRjaGVkX3Bhc3N3b3JkcyhzZWxmKToKLSAgICAgICAgc2VsZi5sb2dpbigpCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi5jbGllbnQucG9zdCgnL3Bhc3N3b3JkX2NoYW5nZS8nLCB7Ci0gICAgICAgICAgICAnb2xkX3Bhc3N3b3JkJzogJ3Bhc3N3b3JkJywKLSAgICAgICAgICAgICduZXdfcGFzc3dvcmQxJzogJ3Bhc3N3b3JkMScsCi0gICAgICAgICAgICAnbmV3X3Bhc3N3b3JkMic6ICdkb251dHMnLAotICAgICAgICAgICAgfQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0XygiVGhlIHR3byBwYXNzd29yZCBmaWVsZHMgZGlkbiYjMzk7dCBtYXRjaC4iIGluIHJlc3BvbnNlLmNvbnRlbnQpCi0KLSAgICBkZWYgdGVzdF9wYXNzd29yZF9jaGFuZ2Vfc3VjY2VlZHMoc2VsZik6Ci0gICAgICAgIHNlbGYubG9naW4oKQotICAgICAgICByZXNwb25zZSA9IHNlbGYuY2xpZW50LnBvc3QoJy9wYXNzd29yZF9jaGFuZ2UvJywgewotICAgICAgICAgICAgJ29sZF9wYXNzd29yZCc6ICdwYXNzd29yZCcsCi0gICAgICAgICAgICAnbmV3X3Bhc3N3b3JkMSc6ICdwYXNzd29yZDEnLAotICAgICAgICAgICAgJ25ld19wYXNzd29yZDInOiAncGFzc3dvcmQxJywKLSAgICAgICAgICAgIH0KLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMzAyKQotICAgICAgICBzZWxmLmFzc2VydF8ocmVzcG9uc2VbJ0xvY2F0aW9uJ10uZW5kc3dpdGgoJy9wYXNzd29yZF9jaGFuZ2UvZG9uZS8nKSkKLSAgICAgICAgc2VsZi5mYWlsX2xvZ2luKCkKLSAgICAgICAgc2VsZi5sb2dpbihwYXNzd29yZD0ncGFzc3dvcmQxJykKLQotY2xhc3MgTG9naW5UZXN0KEF1dGhWaWV3c1Rlc3RDYXNlKToKLQotICAgIEBza2lwSWYoVHJ1ZSwgIkRvIG5vdCBzdXBwb3J0IikKLSAgICBkZWYgdGVzdF9jdXJyZW50X3NpdGVfaW5fY29udGV4dF9hZnRlcl9sb2dpbihzZWxmKToKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5nZXQocmV2ZXJzZSgnZGphbmdvLmNvbnRyaWIuYXV0aC52aWV3cy5sb2dpbicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzaXRlID0gU2l0ZS5vYmplY3RzLmdldF9jdXJyZW50KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2UuY29udGV4dFsnc2l0ZSddLCBzaXRlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5jb250ZXh0WydzaXRlX25hbWUnXSwgc2l0ZS5uYW1lKQotICAgICAgICBzZWxmLmFzc2VydF8oaXNpbnN0YW5jZShyZXNwb25zZS5jb250ZXh0Wydmb3JtJ10sIEF1dGhlbnRpY2F0aW9uRm9ybSksIAotICAgICAgICAgICAgICAgICAgICAgJ0xvZ2luIGZvcm0gaXMgbm90IGFuIEF1dGhlbnRpY2F0aW9uRm9ybScpCi0KLSAgICBkZWYgdGVzdF9zZWN1cml0eV9jaGVjayhzZWxmLCBwYXNzd29yZD0ncGFzc3dvcmQnKToKLSAgICAgICAgbG9naW5fdXJsID0gcmV2ZXJzZSgnZGphbmdvLmNvbnRyaWIuYXV0aC52aWV3cy5sb2dpbicpCi0KLSAgICAgICAgIyBUaG9zZSBVUkxzIHNob3VsZCBub3QgcGFzcyB0aGUgc2VjdXJpdHkgY2hlY2sKLSAgICAgICAgZm9yIGJhZF91cmwgaW4gKCdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Z0cDovL2V4YW1wZWwuY29tJywKLSAgICAgICAgICAgICAgICAgICAgICAgICcvL2V4YW1wbGUuY29tJyk6Ci0KLSAgICAgICAgICAgIG5hc3R5X3VybCA9ICclKHVybClzPyUobmV4dClzPSUoYmFkX3VybClzJyAlIHsKLSAgICAgICAgICAgICAgICAndXJsJzogbG9naW5fdXJsLAotICAgICAgICAgICAgICAgICduZXh0JzogUkVESVJFQ1RfRklFTERfTkFNRSwKLSAgICAgICAgICAgICAgICAnYmFkX3VybCc6IHVybGxpYi5xdW90ZShiYWRfdXJsKQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5wb3N0KG5hc3R5X3VybCwgewotICAgICAgICAgICAgICAgICd1c2VybmFtZSc6ICd0ZXN0Y2xpZW50JywKLSAgICAgICAgICAgICAgICAncGFzc3dvcmQnOiBwYXNzd29yZCwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMzAyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiYWRfdXJsIGluIHJlc3BvbnNlWydMb2NhdGlvbiddLCAiJXMgc2hvdWxkIGJlIGJsb2NrZWQiICUgYmFkX3VybCkKLQotICAgICAgICAjIE5vdywgdGhlc2UgVVJMcyBoYXZlIGFuIG90aGVyIFVSTCBhcyBhIEdFVCBwYXJhbWV0ZXIgYW5kIHRoZXJlZm9yZQotICAgICAgICAjIHNob3VsZCBiZSBhbGxvd2VkCi0gICAgICAgIGZvciB1cmxfIGluICgnaHR0cDovL2V4YW1wbGUuY29tJywgJ2h0dHBzOi8vZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgICAgICAgICAnZnRwOi8vZXhhbXBlbC5jb20nLCAgJy8vZXhhbXBsZS5jb20nKToKLSAgICAgICAgICAgIHNhZmVfdXJsID0gJyUodXJsKXM/JShuZXh0KXM9L3ZpZXcvP3BhcmFtPSUoc2FmZV9wYXJhbSlzJyAlIHsKLSAgICAgICAgICAgICAgICAndXJsJzogbG9naW5fdXJsLAotICAgICAgICAgICAgICAgICduZXh0JzogUkVESVJFQ1RfRklFTERfTkFNRSwKLSAgICAgICAgICAgICAgICAnc2FmZV9wYXJhbSc6IHVybGxpYi5xdW90ZSh1cmxfKQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5wb3N0KHNhZmVfdXJsLCB7Ci0gICAgICAgICAgICAgICAgICAgICd1c2VybmFtZSc6ICd0ZXN0Y2xpZW50JywKLSAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkJzogcGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDMwMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3ZpZXcvP3BhcmFtPSVzJyAlIHVybF8gaW4gcmVzcG9uc2VbJ0xvY2F0aW9uJ10sICIvdmlldy8/cGFyYW09JXMgc2hvdWxkIGJlIGFsbG93ZWQiICUgdXJsXykKLQotICAgICAgICAKLWNsYXNzIExvZ291dFRlc3QoQXV0aFZpZXdzVGVzdENhc2UpOgotICAgIHVybHMgPSAnZGphbmdvLmNvbnRyaWIuYXV0aC50ZXN0cy51cmxzJwotCi0gICAgZGVmIGNvbmZpcm1fbG9nZ2VkX291dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfKFNFU1NJT05fS0VZIG5vdCBpbiBzZWxmLmNsaWVudC5zZXNzaW9uKQotCi0gICAgZGVmIHRlc3RfbG9nb3V0X2RlZmF1bHQoc2VsZik6Ci0gICAgICAgICJMb2dvdXQgd2l0aG91dCBuZXh0X3BhZ2Ugb3B0aW9uIHJlbmRlcnMgdGhlIGRlZmF1bHQgdGVtcGxhdGUiCi0gICAgICAgIHNlbGYubG9naW4oKQotICAgICAgICByZXNwb25zZSA9IHNlbGYuY2xpZW50LmdldCgnL2xvZ291dC8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydF8oJ0xvZ2dlZCBvdXQnIGluIHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuY29uZmlybV9sb2dnZWRfb3V0KCkKLQotICAgIGRlZiB0ZXN0XzE0Mzc3KHNlbGYpOgotICAgICAgICAjIEJ1ZyAxNDM3NwotICAgICAgICBzZWxmLmxvZ2luKCkKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5nZXQoJy9sb2dvdXQvJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdzaXRlJyBpbiByZXNwb25zZS5jb250ZXh0KQotCi0gICAgZGVmIHRlc3RfbG9nb3V0X3dpdGhfbmV4dF9wYWdlX3NwZWNpZmllZChzZWxmKTogCi0gICAgICAgICJMb2dvdXQgd2l0aCBuZXh0X3BhZ2Ugb3B0aW9uIGdpdmVuIHJlZGlyZWN0cyB0byBzcGVjaWZpZWQgcmVzb3VyY2UiCi0gICAgICAgIHNlbGYubG9naW4oKQotICAgICAgICByZXNwb25zZSA9IHNlbGYuY2xpZW50LmdldCgnL2xvZ291dC9uZXh0X3BhZ2UvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMzAyKQotICAgICAgICBzZWxmLmFzc2VydF8ocmVzcG9uc2VbJ0xvY2F0aW9uJ10uZW5kc3dpdGgoJy9zb21ld2hlcmUvJykpCi0gICAgICAgIHNlbGYuY29uZmlybV9sb2dnZWRfb3V0KCkKLQotICAgIGRlZiB0ZXN0X2xvZ291dF93aXRoX3JlZGlyZWN0X2FyZ3VtZW50KHNlbGYpOgotICAgICAgICAiTG9nb3V0IHdpdGggcXVlcnkgc3RyaW5nIHJlZGlyZWN0cyB0byBzcGVjaWZpZWQgcmVzb3VyY2UiCi0gICAgICAgIHNlbGYubG9naW4oKQotICAgICAgICByZXNwb25zZSA9IHNlbGYuY2xpZW50LmdldCgnL2xvZ291dC8/bmV4dD0vbG9naW4vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMzAyKQotICAgICAgICBzZWxmLmFzc2VydF8ocmVzcG9uc2VbJ0xvY2F0aW9uJ10uZW5kc3dpdGgoJy9sb2dpbi8nKSkKLSAgICAgICAgc2VsZi5jb25maXJtX2xvZ2dlZF9vdXQoKQotCi0gICAgZGVmIHRlc3RfbG9nb3V0X3dpdGhfY3VzdG9tX3JlZGlyZWN0X2FyZ3VtZW50KHNlbGYpOgotICAgICAgICAiTG9nb3V0IHdpdGggY3VzdG9tIHF1ZXJ5IHN0cmluZyByZWRpcmVjdHMgdG8gc3BlY2lmaWVkIHJlc291cmNlIgotICAgICAgICBzZWxmLmxvZ2luKCkKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5nZXQoJy9sb2dvdXQvY3VzdG9tX3F1ZXJ5Lz9mb2xsb3c9L3NvbWV3aGVyZS8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAzMDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhyZXNwb25zZVsnTG9jYXRpb24nXS5lbmRzd2l0aCgnL3NvbWV3aGVyZS8nKSkKLSAgICAgICAgc2VsZi5jb25maXJtX2xvZ2dlZF9vdXQoKQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jbHVzdGVyQWRtaW4vdXRpbHMucHkgYi9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi91dGlscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGRlYThkNS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi91dGlscy5weQorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBvcwotaW1wb3J0IHNkbmNvbgotCi1CU05fQkFTRSA9IHNkbmNvbi5TRE5fUk9PVAotUEVSU09OQUxJVFkgPSAndm1fcGVyc29uYWxpdHknCi0KLSIiIgotVGhpcyBpcyBhIHNpbXBsZSBjb25kaXRpb25hbCBkZWNvcmF0b3IsIHN1Z2dlc3RlZCBieSBDbGF1ZGl1IG9uIFN0YWNrb3ZlcmZsb3cuY29tCi0iIiIKLWRlZiBjb25kaXRpb25hbGx5KGRlY29yYXRvciwgY29uZGl0aW9uKToKLSAgICBkZWYgbW9kZGVjKGYpOgotICAgICAgICBpZiBub3QgY29uZGl0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGYKLSAgICAgICAgcmV0dXJuIGRlY29yYXRvcihmKQotICAgIHJldHVybiBtb2RkZWMKLQotZGVmIGlzQ2xvdWRCdWlsZCgpOgotICAgIHBmID0gb3MucGF0aC5qb2luKEJTTl9CQVNFLCBQRVJTT05BTElUWSkKLSAgICByZXR1cm4gb3MucGF0aC5leGlzdHMocGYpIGFuZCAiY2xvdWQiIGluIG9wZW4ocGYpLnJlYWQoKQotCi1kZWYgdWljb250ZXh0KHJlcXVlc3QpOgotICAgIGV4cGlyZWRTZXNzaW9uID0gRmFsc2UKLSAgICBkZWJ1ZyA9IEZhbHNlCi0gICAgdHJ5OgotICAgICAgICBob3N0bmFtZSA9IHJlcXVlc3QuTUVUQVsnSFRUUF9IT1NUJ10KLSAgICAgICAgcmVmZXJlciA9IHJlcXVlc3QuTUVUQVsnSFRUUF9SRUZFUkVSJ10uc3BsaXQoJy8nKQotICAgICAgICBpZiByZWZlcmVyWzJdID09IGhvc3RuYW1lOgotICAgICAgICAgICAgZXhwaXJlZFNlc3Npb24gPSByZWZlcmVyWzNdIG5vdCBpbiAoJ2FjY291bnQnLCAnbG9nb3V0JykKLSAgICBleGNlcHQ6Ci0gICAgICAgICMgSWdub3JlIGFueSBleGNlcHRpb25zLCBsaWtlIG1pc3NpbmcgUkVGRVJFUiwgSE9TVCwgZXRjLgotICAgICAgICBwYXNzCi0gICAgcmV0dXJuIHsKLSAgICAgICAgJ2lzQ2xvdWRCdWlsZCc6IGlzQ2xvdWRCdWlsZCgpLAotICAgICAgICAnZXhwaXJlZFNlc3Npb24nOiBleHBpcmVkU2Vzc2lvbiwKLSAgICAgICAgJ2RlYnVnJzogZGVidWcsCi0gICAgfQotCi1kZWYgYWJjKGYpOgotICAgIGRlZiBibGFoKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHByaW50ICdhYmMnCi0gICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKLSAgICByZXR1cm4gYmxhaAotCi1AY29uZGl0aW9uYWxseShhYmMsIGlzQ2xvdWRCdWlsZCgpKQotZGVmIHRlc3QoKTogcGFzcwotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3QoKQotCi0gICAgCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NsdXN0ZXJBZG1pbi92aWV3cy5weSBiL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL3ZpZXdzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4NTFhNzlkLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY2x1c3RlckFkbWluL3ZpZXdzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jIENyZWF0ZSB5b3VyIHZpZXdzIGhlcmUuCi0KLWZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5kZWNvcmF0b3JzIGltcG9ydCBsb2dpbl9yZXF1aXJlZAotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHNpbXBsZWpzb24KLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZQotZnJvbSBzZG5jb24uY2x1c3RlckFkbWluLm1vZGVscyBpbXBvcnQgQ3VzdG9tZXJVc2VyCi1mcm9tIHNkbmNvbi5jbHVzdGVyQWRtaW4udXRpbHMgaW1wb3J0IGNvbmRpdGlvbmFsbHksIGlzQ2xvdWRCdWlsZAotZnJvbSBzZG5jb24ucmVzdC52aWV3cyBpbXBvcnQgc2FmZV9yZXN0X3ZpZXcKLQotREVGQVVMVF9URU5BTlQgPSAnZGVmYXVsdCcKLUpTT05fREFUQV9UWVBFID0gJ2FwcGxpY2F0aW9uL2pzb24nCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGdldF9ub2RlX3BlcnNvbmFsaXR5KHJlcXVlc3QpOgotICAgIGlzQ2xvdWQgPSBpc0Nsb3VkQnVpbGQoKQotICAgIHJlc3BvbnNlX2RhdGEgPSB7J2Nsb3VkJyA6IGlzQ2xvdWQsICdjb250cm9sbGVyLW5vZGUnIDogbm90IGlzQ2xvdWR9Ci0gICAgcmVzcG9uc2VfZGF0YSA9IHNpbXBsZWpzb24uZHVtcHMocmVzcG9uc2VfZGF0YSkKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHJlc3BvbnNlX2RhdGEsIEpTT05fREFUQV9UWVBFKQotCi1AY29uZGl0aW9uYWxseShsb2dpbl9yZXF1aXJlZCwgaXNDbG91ZEJ1aWxkKCkpCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBzZXNzaW9uX2NsdXN0ZXJBZG1pbihyZXF1ZXN0KToKLSAgICAiIiIKLSAgICBUaGlzIHJldHVybnMgdGhlIGN1c3RvbWVyIGFuZCBjbHVzdGVycywgd2hpY2ggdGhlIGN1cnJlbnQgc2Vzc2lvbiBpcyBhc3NvY2lhdGVkIHdpdGguCi0gICAgIiIiCi0gICAgY3VzdG9tZXIgPSB7fQotICAgIGN1c3RvbWVyWyd1c2VyJ10gPSByZXF1ZXN0LnVzZXIudXNlcm5hbWUKLSAgICBjdXN0b21lclsnY3VzdG9tZXInXSA9IERFRkFVTFRfVEVOQU5UCi0gICAgY3VzdG9tZXJbJ2NsdXN0ZXInXSA9IFtdCi0gICAgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQoKToKLSAgICAgICAgY3VzID0gQ3VzdG9tZXJVc2VyLm9iamVjdHMuYWxsKCkKLSAgICAgICAgZm9yIGN1IGluIGN1czoKLSAgICAgICAgICAgIGlmIGN1LnVzZXIudXNlcm5hbWUgPT0gcmVxdWVzdC51c2VyLnVzZXJuYW1lOgotICAgICAgICAgICAgICAgIGN1c3RvbWVyWydjdXN0b21lciddID0gY3UuY3VzdG9tZXIuY3VzdG9tZXJuYW1lCi0gICAgICAgICAgICAgICAgZm9yIGNsdXN0ZXIgaW4gY3UuY3VzdG9tZXIuY2x1c3Rlcl9zZXQuYWxsKCk6Ci0gICAgICAgICAgICAgICAgICAgIGN1c3RvbWVyWydjbHVzdGVyJ10uYXBwZW5kKGNsdXN0ZXIuY2x1c3Rlcm5hbWUpCi0KLSAgICByZXNwb25zZV9kYXRhID0gc2ltcGxlanNvbi5kdW1wcyhjdXN0b21lcikKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHJlc3BvbnNlX2RhdGEsIEpTT05fREFUQV9UWVBFKSAKLQotCi1pbXBvcnQgcmFuZG9tCi1mcm9tIGRqYW5nby5zaG9ydGN1dHMgaW1wb3J0IHJlbmRlcl90b19yZXNwb25zZSwgcmVkaXJlY3QKLWZyb20gLm1vZGVscyBpbXBvcnQgQXV0aFRva2VuCi0KLUBjb25kaXRpb25hbGx5KGxvZ2luX3JlcXVpcmVkLCBpc0Nsb3VkQnVpbGQoKSkKLWRlZiB0b2tlbl92aWV3KHJlcXVlc3QpOgotICAgIHRva2VuPScnCi0gICAgZm9yIHQgaW4gQXV0aFRva2VuLm9iamVjdHMuZmlsdGVyKHVzZXI9cmVxdWVzdC51c2VyKToKLSAgICAgICAgdG9rZW49dC5pZAotICAgIHJldHVybiByZW5kZXJfdG9fcmVzcG9uc2UoJ3JlZ2lzdHJhdGlvbi90b2tlbl92aWV3Lmh0bWwnLCB7J3Rva2VuJzogdG9rZW59KQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLVZBTElEX1RPS0VOX0NIQVJTID0gWyczJywgJzQnLCAnNicsICc3JywgJzknLCAnQScsICdDJywgJ0UnLCAnRicsICdHJywKLSAgICAgICAgICAgICAgICAgICAgICdIJywgJ0snLCAnTScsICdOJywgJ1AnLCAnUicsICdUJywgJ1cnLCAnWCcsICdZJ10KLVRPS0VOX0xFTkdUSCA9IDE2Ci1UT0tFTl9HRU5fQVRURU1QVFMgPSAxNiAgIyBOdW1iZXIgb2YgdGltZXMgZ2VuZXJhdGVkIHRva2VuIGNhbiBiZSBpbiBEQiBiZWZvcmUgZ2l2aW5nIHVwCi0KLSMKLSMgVG9rZW4gU3BlY2lmaWNhdGlvbgotIyAgIDE2IGNoYXJhY3RlcnMsIGh5cGhlbnMgZXZlcnkgNCBjaGFyYWN0ZXJzCi0jICAgLi4uLi0uLi4uLS4uLi4tLi4uLgotIyAgIEtleSBpcyBhY3R1YWxseSB0aGlzIHN0cmluZywgaW5jbHVkaW5nIHRoZSAtcwotIyAgIENoYXJhY3RlcnMgdXNlZCBtdXN0IGJlIGluIHRoZSBWQUxJRF9UT0tFTl9DSEFSUyBhcnJheSBhYm92ZQotIyBUaGlzIGdpdmVzIGEgdG9rZW4gc3BhY2Ugb2YgMjBeMTYKLSMKLQotQGNvbmRpdGlvbmFsbHkobG9naW5fcmVxdWlyZWQsIGlzQ2xvdWRCdWlsZCgpKQotZGVmIHRva2VuX2dlbmVyYXRlKHJlcXVlc3QpOgotICAgICIiIgotICAgIEdlbmVyYXRlLCB2YWxpZGF0ZSBhbmQgYWRkIGFuIGF1dGggdG9rZW4KLSAgICAiIiIKLQotICAgIGZvciB0cnlfY291bnQgaW4gcmFuZ2UoVE9LRU5fR0VOX0FUVEVNUFRTKToKLSAgICAgICAgdG9rZW5fc3RyaW5nID0gIiIKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoVE9LRU5fTEVOR1RIKToKLSAgICAgICAgICAgIGlmIGkgPiAwIGFuZCBpICUgNCA9PSAwOgotICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZyArPSAnLScKLSAgICAgICAgICAgIHRva2VuX3N0cmluZyArPSByYW5kb20uY2hvaWNlKFZBTElEX1RPS0VOX0NIQVJTKQotICAgICAgICBwcmludCAiR2VuZXJhdGVkIHRva2VuICIgKyB0b2tlbl9zdHJpbmcKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgIyBTZWUgaWYgdGhlIHRva2VuIGFscmVhZHkgZXhpc3RzIGluIHRoZSBEQjsgcmFjZSBjb25kaXRpb24gaGVyZSwgYnV0IHNob3VsZCBiZSBtaW5pbWFsCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIEF1dGhUb2tlbi5vYmplY3RzLmdldChpZD10b2tlbl9zdHJpbmcpCi0gICAgICAgICAgICBwcmludCAiVG9rZW4gYWxyZWFkeSBwcmVzZW50IGluIERCLCB0cnkgIiArIHN0cih0cnlfY291bnQpCi0gICAgICAgICAgICB0b2tlbl9zdHJpbmcgPSAiIgotICAgICAgICBleGNlcHQgQXV0aFRva2VuLkRvZXNOb3RFeGlzdDogICMgVGhpcyBpcyB3aGF0IHdlIHdhbnQKLSAgICAgICAgICAgIGJyZWFrCi0KLSAgICBpZiBub3QgdG9rZW5fc3RyaW5nOgotICAgICAgICAjIFNob3VsZCBwcm9iYWJseSByYWlzZSBhbiBleGNlcHRpb24gaGVyZQotICAgICAgICBwcmludCAiRmFpbGVkIHRvIGdlbmVyYXRlIG5ldyBhdXRoIHRva2VuIgotICAgICAgICAjIFJldHVybiBpbnRlcm5hbCBzZXJ2ZXIgZXJyb3IKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIE1hcCB0aGUgdG9rZW4gdG8gYSBjdXN0b21lciBvciBjbHVzdGVyCi0gICAgIyBGb3Igbm93LCBqdXN0IG1hcCBvbmUgdG9rZW4gdG8gdGhlIHVzZXIKLQotICAgICMgRGVsZXRlIGFueSBleGlzdGluZyB0b2tlbnMKLSAgICBmb3IgdCBpbiBBdXRoVG9rZW4ub2JqZWN0cy5maWx0ZXIodXNlcj1yZXF1ZXN0LnVzZXIpOgotICAgICAgICBwcmludCAnRGVsZXRpbmcgdG9rZW4nLCB0Ci0gICAgICAgIHQuZGVsZXRlKCkKLQotICAgICMgQWRkIHRoZSBuZXcgdG9rZW4gdG8gdGhlIERCCi0gICAgdG9rZW4gPSBBdXRoVG9rZW4oaWQ9dG9rZW5fc3RyaW5nLCB1c2VyPXJlcXVlc3QudXNlcikKLSAgICB0b2tlbi5zYXZlKCkKLQotICAgIHJldHVybiByZWRpcmVjdCgnc2RuY29uLmNsdXN0ZXJBZG1pbi52aWV3cy50b2tlbl92aWV3JykKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY29uc3RhbnRzLnB5IGIvY2xpL3NkbmNvbi9jb25zdGFudHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDI3NzM0NGEuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jb25zdGFudHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IG9zCi0KLSIiIiBUaGlzIGZpbGUgZGVmaW5lcyBnbG9iYWwgY29uc3RhbnRzIGZvciB0aGUgc3lzdGVtLCBhbmQgc2hvdWxkIG5vdCAKLWltcG9ydCBhbnkgb3RoZXIgZmlsZXMgdG8gcHJldmVudCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCi0iIiIKLQotU0ROX1JPT1QgPSAiL29wdC9zZG5wbGF0Zm9ybSIgaWYgbm90ICdTRE5fUk9PVCcgaW4gb3MuZW52aXJvbiBlbHNlIG9zLmVudmlyb25bJ1NETl9ST09UJ10KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY29udHJvbGxlci9fX2luaXRfXy5weSBiL2NsaS9zZG5jb24vY29udHJvbGxlci9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggY2U0ODYxNS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NvbnRyb2xsZXIvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotZnJvbSBzZG5jb24uY29udHJvbGxlci5ub3RpZmljYXRpb24gaW1wb3J0IGluaXRfbm90aWZpY2F0aW9ucwotZnJvbSBzZG5jb24uY29udHJvbGxlci5jb25maWcgaW1wb3J0IGluaXRfY29uZmlnCi0KLWluaXRfbm90aWZpY2F0aW9ucygpCi1pbml0X2NvbmZpZygpCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NvbnRyb2xsZXIvYWRtaW4ucHkgYi9jbGkvc2RuY29uL2NvbnRyb2xsZXIvYWRtaW4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDg2YzExYzkuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jb250cm9sbGVyL2FkbWluLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gZGphbmdvLmNvbnRyaWIgaW1wb3J0IGFkbWluCi0jZnJvbSAubW9kZWxzIGltcG9ydCBTd2l0Y2gsIFN0YXRpY0Zsb3dUYWJsZUVudHJ5LCBIb3N0Q29uZmlnCi0KLSNhZG1pbi5zaXRlLnJlZ2lzdGVyKFN3aXRjaCkKLSNhZG1pbi5zaXRlLnJlZ2lzdGVyKFN0YXRpY0Zsb3dUYWJsZUVudHJ5KQotI2FkbWluLnNpdGUucmVnaXN0ZXIoSG9zdCkKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY29udHJvbGxlci9ic24tdGFjcGx1cy1lbnZmaWx0ZXIgYi9jbGkvc2RuY29uL2NvbnRyb2xsZXIvYnNuLXRhY3BsdXMtZW52ZmlsdGVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlODY3MWIzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY29udHJvbGxlci9ic24tdGFjcGx1cy1lbnZmaWx0ZXIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotCi1pbXBvcnQgb3MsIHN5cwotCi1QQU1fU1VDQ0VTUyA9IDAgICMgU3VjY2Vzc2Z1bCBmdW5jdGlvbiByZXR1cm4KLVBBTV9TWVNURU1fRVJSID0gNCAgIyBTeXN0ZW0gZXJyb3IKLVBBTV9BVVRIX0VSUiA9IDcgIyBBdXRoZW50aWNhdGlvbiBmYWlsdXJlCi0KLSMgdGVzdCBBViBwYWlycyBpbiBvcy5lbnZpcm9uIGhlcmUKLQotc3lzLmV4aXQoUEFNX1NVQ0NFU1MpCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NvbnRyb2xsZXIvY29uZmlnLnB5IGIvY2xpL3NkbmNvbi9jb250cm9sbGVyL2NvbmZpZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzA4ZmRiNS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NvbnRyb2xsZXIvY29uZmlnLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1mcm9tIHNkbmNvbi5yZXN0LmNvbmZpZyBpbXBvcnQgYWRkX2NvbmZpZ19oYW5kbGVyCi0iIiIKLWZyb20gc2RuY29uLmNvbnRyb2xsZXIubW9kZWxzIGltcG9ydCBGZWF0dXJlLCBHbG9iYWxDb25maWcsIENvbnRyb2xsZXIsIFwKLSAgICBDb250cm9sbGVySW50ZXJmYWNlLCBDb250cm9sbGVyRG9tYWluTmFtZVNlcnZlciwgXAotICAgIEZpcmV3YWxsUnVsZSwgQ29udHJvbGxlckFsaWFzLCBTbm1wU2VydmVyQ29uZmlnLCBJbWFnZURyb3BVc2VyCi1mcm9tIHNkbmNvbi5jb250cm9sbGVyLm1vZGVscyBpbXBvcnQgVGFjYWNzUGx1c0NvbmZpZywgVGFjYWNzUGx1c0hvc3QKLSIiIgotZnJvbSBvc3dyYXBwZXIgaW1wb3J0IGV4ZWNfb3Nfd3JhcHBlcgotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzZG5jb24KLWZyb20gZGphbmdvLmNvcmUgaW1wb3J0IHNlcmlhbGl6ZXJzCi0KLSMgRklYTUU6IENhbiBwcm9iYWJseSBnZXQgcmlkIG9mIGRlZmF1bHRfaWQgd2hlbiB0aGUgcmVzdCBvZiB0aGUgY29kZSBpcwotIyBpbiBwbGFjZSBmb3Igc3VwcG9ydGluZyBtdWx0aXBsZSBjb250cm9sbGVyIElEcy4gQnV0IHdoYXQgYWJvdXQKLSMgdW5pdCB0ZXN0cyB3aGVyZSB3ZSBzaG91bGRuJ3QgcmVseSBvbiB0aGUgYm9vdC1jb25maWcgZmlsZSBleGlzdGluZwotZGVmIGdldF9sb2NhbF9jb250cm9sbGVyX2lkKGRlZmF1bHRfaWQ9J2xvY2FsaG9zdCcpOgotICAgIGxvY2FsX2NvbnRyb2xsZXJfaWQgPSBkZWZhdWx0X2lkCi0gICAgZiA9IE5vbmUKLSAgICB0cnk6Ci0gICAgICAgIGYgPSBvcGVuKCIlcy9ydW4vYm9vdC1jb25maWciICUgc2RuY29uLlNETl9ST09ULCAncicpCi0gICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiXmNvbnRyb2xsZXItaWQ9KFswLTlhLXpBLVpcLV0qKSQiLCBkYXRhLCByZS5NVUxUSUxJTkUpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgbG9jYWxfY29udHJvbGxlcl9pZCA9IG1hdGNoLmdyb3VwKDEpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgX2U6Ci0gICAgICAgICMgSWYgdGhlcmUgd2FzIGFueSBlcnJvciwgdGhlbiBqdXN0IGxlYXZlIHRoZSBjb250cm9sbGVyIElEIGFzIHRoZQotICAgICAgICAjIGRlZmF1bHQgdmFsdWUuCi0gICAgICAgIHBhc3MKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBmOgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgcmV0dXJuIGxvY2FsX2NvbnRyb2xsZXJfaWQKLQotIiIiCi0jIEFkZCB0aGUgY29uZmlnIGhhbmRsZXJzIGhlcmUuIENoZWNrIHRoZSBjb21tZW50cyBmb3IgYWRkX2NvbmZpZ19oYW5kbGVyIGluIHJlc3QvY29uZmlnLnB5Ci0jIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBjYWxsaW5nIGNvbnZlbnRpb25zIGZvciBjb25maWcgaGFuZGxlcnMuCi0KLWRlZiBuZXR3b3JrX2NvbmZpZ19oYW5kbGVyKG9wLCBvbGRfaW5zdGFuY2UsIG5ld19pbnN0YW5jZSwgbW9kaWZpZWRfZmllbGRzKToKLSAgICB2YWxpZF9pbnN0YW5jZSA9IG9sZF9pbnN0YW5jZSBpZiAob3AgPT0gJ0RFTEVURScpIGVsc2UgbmV3X2luc3RhbmNlCi0gICAgaWYgaXNpbnN0YW5jZSh2YWxpZF9pbnN0YW5jZSwgQ29udHJvbGxlcik6Ci0gICAgICAgIGNvbnRyb2xsZXJfbm9kZSA9IHZhbGlkX2luc3RhbmNlCi0gICAgICAgIGNvbnRyb2xsZXJfaWQgPSBjb250cm9sbGVyX25vZGUuaWQKLSAgICAgICAgaWYgb3AgPT0gJ0RFTEVURSc6Ci0gICAgICAgICAgICAjIG5vIGZ1cnRoZXIgY29uZmlndXJhdGlvbiBoZXJlCi0gICAgICAgICAgICByZXR1cm4KLSAgICBlbGlmIGlzaW5zdGFuY2UodmFsaWRfaW5zdGFuY2UsIENvbnRyb2xsZXJEb21haW5OYW1lU2VydmVyKSBcCi0gICAgICBvciBpc2luc3RhbmNlKHZhbGlkX2luc3RhbmNlLCBDb250cm9sbGVySW50ZXJmYWNlKToKLSAgICAgICAgY29udHJvbGxlcl9pZCA9IHZhbGlkX2luc3RhbmNlLmNvbnRyb2xsZXJfaWQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29udHJvbGxlcl9ub2RlID0gQ29udHJvbGxlci5vYmplY3RzLmdldChwaz1jb250cm9sbGVyX2lkKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBfZToKLSAgICAgICAgICAgICMgdW5rbm93biBjb250cm9sbGVyIG5vZGUgZHVyaW5nIGRlbGV0ZSwgbm8gbmVlZCB0bwotICAgICAgICAgICAgIyBkbyBhbnl0aGluZyB3aXRoIGFueSBvZiB0aGVzZSBpbnRlcmZhY2VzCi0gICAgICAgICAgICByZXR1cm4KLSAgICBlbHNlOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vua25vd24gbW9kZWwgY2hhbmdlIHRyaWdnZXIgbmV0d29yayBjb25maWcgaGFuZGxlcicpCi0KLSAgICBpZiBjb250cm9sbGVyX2lkICE9IGdldF9sb2NhbF9jb250cm9sbGVyX2lkKCk6Ci0gICAgICAgIHJldHVybgotCi0gICAgaWYgb3AgPT0gJ0RFTEVURSc6Ci0gICAgICAgICMgZG9uJ3QgcmVjb25maWd1cmUgdGhlIGludGVyZmFjZXMgZHVyaW5nIGRlbGV0ZSwgc2luY2UKLSAgICAgICAgIyBmb3IgZGVsZXRlcywgdGhlIHZhbHVlcyBvZiBpcC9uZXRtYXNrIGRvbid0IGdldCB1cGRhdGVkCi0gICAgICAgIGRucyA9IENvbnRyb2xsZXJEb21haW5OYW1lU2VydmVyLm9iamVjdHMuZmlsdGVyKAotICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcj1jb250cm9sbGVyX25vZGUpLm9yZGVyX2J5KCd0aW1lc3RhbXAnKQotICAgICAgICBleGVjX29zX3dyYXBwZXIoJ05ldHdvcmtDb25maWcnLCAnc2V0JywgCi0gICAgICAgICAgICAgICAgICAgICAgICBbc2VyaWFsaXplcnMuc2VyaWFsaXplKCJqc29uIiwgW2NvbnRyb2xsZXJfbm9kZV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXJzLnNlcmlhbGl6ZSgianNvbiIsIGRucyldKQotICAgIGVsc2U6Ci0gICAgICAgICMgb3AgIT0gJ0RFTEVURScKLSAgICAgICAgIwotICAgICAgICAjIFhYWCB3aGF0IGFib3V0IEhBPwotICAgICAgICAjICdpZnMnIGJlbG93IGlzbid0IGZpbHRlcmVkIGJ5IGNvbnRyb2xsZXIsIHRoZSBOZXRDb25maWcKLSAgICAgICAgIyB0YXJnZXQgd2lsbCBvbmx5IHNlbGVjdCBpbnRlcmZhY2VzIGFzc29jYWl0ZWQgd2l0aCB0aGUKLSAgICAgICAgIyBjb250cm9sbGVyLW5vZGUgJ2xvY2FsaG9zdC4KLSAgICAgICAgZG5zID0gQ29udHJvbGxlckRvbWFpbk5hbWVTZXJ2ZXIub2JqZWN0cy5maWx0ZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyPWNvbnRyb2xsZXJfbm9kZSkub3JkZXJfYnkoJy1wcmlvcml0eScpCi0gICAgICAgIGlmcyA9IENvbnRyb2xsZXJJbnRlcmZhY2Uub2JqZWN0cy5maWx0ZXIoY29udHJvbGxlcj1jb250cm9sbGVyX25vZGUpCi0gICAgICAgIGV4ZWNfb3Nfd3JhcHBlcignTmV0d29ya0NvbmZpZycsICdzZXQnLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZXJpYWxpemVycy5zZXJpYWxpemUoImpzb24iLCBbY29udHJvbGxlcl9ub2RlXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplcnMuc2VyaWFsaXplKCJqc29uIiwgZG5zKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVycy5zZXJpYWxpemUoImpzb24iLCBpZnMpXSkKLQotZGVmIGZpcmV3YWxsX2VudHJ5X2hhbmRsZXIob3AsIG9sZF9pbnN0YW5jZSwgbmV3X2luc3RhbmNlLCBtb2RpZmllZF9maWVsZHM9Tm9uZSk6Ci0gICAgI2FsbG93IGluIG9uIGV0aDAgcHJvdG8gdGNwIGZyb20gYW55IHRvIGFueSBwb3J0IDgwCi0gICAgcHJpbnQgIlhYWDogZmlyZXdhbGwgaGFuZGxlciBjYWxsZWQtMSIgCi0gICAgY29tbWFuZCA9ICIiCi0gICAgaWYgb3AgPT0gIkRFTEVURSIgYW5kIHN0cihvbGRfaW5zdGFuY2UuaW50ZXJmYWNlLmNvbnRyb2xsZXIpID09IGdldF9sb2NhbF9jb250cm9sbGVyX2lkKCk6Ci0gICAgICAgIGNvbW1hbmQgKz0gImRlbGV0ZSAiCi0gICAgICAgIGluc3RhbmNlID0gb2xkX2luc3RhbmNlCi0gICAgZWxpZiAob3AgPT0gIklOU0VSVCIgb3Igb3AgPT0gIlVQREFURSIpIGFuZCBzdHIobmV3X2luc3RhbmNlLmludGVyZmFjZS5jb250cm9sbGVyKSA9PSBnZXRfbG9jYWxfY29udHJvbGxlcl9pZCgpOgotICAgICAgICBpbnN0YW5jZSA9IG5ld19pbnN0YW5jZQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybgotCi0gICAgcHJpbnQgaW5zdGFuY2UuYWN0aW9uCi0gICAgcHJpbnQgaW5zdGFuY2UucHJvdG8KLSAgICBwcmludCBpbnN0YW5jZS5wb3J0Ci0gICAgcHJpbnQgaW5zdGFuY2Uuc3JjX2lwCi0gICAgcHJpbnQgaW5zdGFuY2UudnJycF9pcAotICAgIHByaW50ICJYWFg6IGZpcmV3YWxsIGhhbmRsZXIgY2FsbGVkLTIiIAotICAgIGNvbnRyb2xsZXJfaW50ZXJmYWNlID0gaW5zdGFuY2UuaW50ZXJmYWNlCi0gICAgZXRoID0gJ2V0aCcgKyBzdHIoY29udHJvbGxlcl9pbnRlcmZhY2UubnVtYmVyKSAjTE9PSyEgSGFyZGNvZGVkIHRvIGV0aCBpbnRlcmZhY2UKLSAgICBwcm90b19zdHIgPSAiIgotICAgIGlmIGluc3RhbmNlLnByb3RvICE9ICcnIGFuZCBpbnN0YW5jZS5wcm90byAhPSAndnJycCc6Ci0gICAgICAgIHByb3RvX3N0ciA9ICIgcHJvdG8gIiArIGluc3RhbmNlLnByb3RvCi0gICAgYWN0aW9uX3N0ciA9IGluc3RhbmNlLmFjdGlvbgotICAgIHNyY19zdHIgPSAiIGZyb20gYW55IgotICAgIGlmIGluc3RhbmNlLnNyY19pcCAhPSAnJzoKLSAgICAgICAgc3JjX3N0ciA9ICIgZnJvbSAiICsgaW5zdGFuY2Uuc3JjX2lwCi0gICAgZHN0X3N0ciA9ICIgdG8gYW55IgotICAgIGlmIGluc3RhbmNlLnZycnBfaXAgIT0gJyc6Ci0gICAgICAgIGRzdF9zdHIgPSAiIHRvICIgKyBpbnN0YW5jZS52cnJwX2lwIAotICAgIHByaW50ICJkc3Rfc3RyID0gIiwgZHN0X3N0cgotICAgIHBvcnRfc3RyID0gIiIKLSAgICBpZiBpbnN0YW5jZS5wb3J0ICE9IDA6Ci0gICAgICAgIHBvcnRfc3RyID0gIiBwb3J0ICIgKyBzdHIoaW5zdGFuY2UucG9ydCkKLQotICAgIGNvbW1hbmQgKz0gKGFjdGlvbl9zdHIgKyAiIGluIG9uICIgKyBldGggKyBwcm90b19zdHIgKyBzcmNfc3RyICsgZHN0X3N0ciArIHBvcnRfc3RyKQotICAgIHByaW50IGNvbW1hbmQKLQotICAgIGV4ZWNfb3Nfd3JhcHBlcignRXhlY3V0ZVVmd0NvbW1hbmQnLCAnc2V0JywgW2NvbW1hbmRdKQotICAgIGlmIGluc3RhbmNlLnBvcnQgPT0gNjYzMyBhbmQgYWN0aW9uX3N0ciA9PSAncmVqZWN0JyBhbmQgb3AgIT0gJ0RFTEVURSc6Ci0gICAgICAgIGV4ZWNfb3Nfd3JhcHBlcignUmVzdGFydFNETlBsYXRmb3JtJywgJ3NldCcsIFtdKQotCi1kZWYgbnRwX2NvbmZpZ19oYW5kbGVyKG9wLCBvbGRfaW5zdGFuY2UsIG5ld19pbnN0YW5jZSwgbW9kaWZpZWRfZmllbGRzPU5vbmUpOgotICAgIGlmIG5ld19pbnN0YW5jZSAhPSBOb25lOgotICAgICAgICBleGVjX29zX3dyYXBwZXIoIlNldE50cFNlcnZlciIsICdzZXQnLCBbbmV3X2luc3RhbmNlLm50cF9zZXJ2ZXJdKQotCi1kZWYgdHpfY29uZmlnX2hhbmRsZXIob3AsIG9sZF9pbnN0YW5jZSwgbmV3X2luc3RhbmNlLCBtb2RpZmllZF9maWVsZHM9Tm9uZSk6Ci0gICAgaWYgb3AgPT0gIkRFTEVURSI6Ci0gICAgICAgIGlmIHN0cihvbGRfaW5zdGFuY2UuaWQpICE9IGdldF9sb2NhbF9jb250cm9sbGVyX2lkKCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZXhlY19vc193cmFwcGVyKCJVbnNldFRpbWV6b25lIiwgJ3NldCcpCi0gICAgZWxpZiBvcCA9PSAiSU5TRVJUIiBvciBvcCA9PSAiVVBEQVRFIjoKLSAgICAgICAgaWYgc3RyKG5ld19pbnN0YW5jZS5pZCkgIT0gZ2V0X2xvY2FsX2NvbnRyb2xsZXJfaWQoKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBuZXdfaW5zdGFuY2UudGltZV96b25lICE9IE5vbmUgYW5kIHN0cihuZXdfaW5zdGFuY2UudGltZV96b25lKSAhPSAiIjoKLSAgICAgICAgICAgIGV4ZWNfb3Nfd3JhcHBlcigiU2V0VGltZXpvbmUiLCAnc2V0JywgW25ld19pbnN0YW5jZS50aW1lX3pvbmVdKQotCi1kZWYgbG9nZ2luZ19zZXJ2ZXJfY29uZmlnX2hhbmRsZXIob3AsIG9sZF9pbnN0YW5jZSwgbmV3X2luc3RhbmNlLCBtb2RpZmllZF9maWVsZHM9Tm9uZSk6IAotICAgIGlmIG9wID09ICJERUxFVEUiOgotICAgICAgICBpZiBzdHIob2xkX2luc3RhbmNlLmlkKSAhPSBnZXRfbG9jYWxfY29udHJvbGxlcl9pZCgpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGV4ZWNfb3Nfd3JhcHBlcigiVW5zZXRTeXNsb2dTZXJ2ZXIiLCAnc2V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgIFtvbGRfaW5zdGFuY2UubG9nZ2luZ19zZXJ2ZXIsIG9sZF9pbnN0YW5jZS5sb2dnaW5nX2xldmVsXSkKLSAgICBlbGlmIG9wID09ICJJTlNFUlQiIG9yIG9wID09ICJVUERBVEUiOgotICAgICAgICBpZiBzdHIobmV3X2luc3RhbmNlLmlkKSAhPSBnZXRfbG9jYWxfY29udHJvbGxlcl9pZCgpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG5ld19pbnN0YW5jZS5sb2dnaW5nX3NlcnZlciAhPSAiIiBhbmQgbmV3X2luc3RhbmNlLmxvZ2dpbmdfZW5hYmxlZDoKLSAgICAgICAgICAgIGV4ZWNfb3Nfd3JhcHBlcigiU2V0U3lzbG9nU2VydmVyIiwgJ3NldCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld19pbnN0YW5jZS5sb2dnaW5nX3NlcnZlciwgbmV3X2luc3RhbmNlLmxvZ2dpbmdfbGV2ZWxdKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXhlY19vc193cmFwcGVyKCJVbnNldFN5c2xvZ1NlcnZlciIsICdzZXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdfaW5zdGFuY2UubG9nZ2luZ19zZXJ2ZXIsIG5ld19pbnN0YW5jZS5sb2dnaW5nX2xldmVsXSkKLQotZGVmIHZycnBfdmlydHVhbF9yb3V0ZXJfaWRfY29uZmlnX2hhbmRsZShvcCwgb2xkX2luc3RhbmNlLCBuZXdfaW5zdGFuY2UsIG1vZGlmaWVkX2ZpZWxkcz1Ob25lKToKLSAgICBpZiBvcCA9PSAiSU5TRVJUIiBvciBvcCA9PSAiVVBEQVRFIjoKLSAgICAgICAgZXhlY19vc193cmFwcGVyKCJTZXRWcnJwVmlydHVhbFJvdXRlcklkIiwgJ3NldCcsCi0gICAgICAgICAgICAgICAgICAgICAgICBbbmV3X2luc3RhbmNlLmNsdXN0ZXJfbnVtYmVyXSkKLSAgICAKLWRlZiBuZXR2aXJ0X2ZlYXR1cmVfY29uZmlnX2hhbmRsZXIob3AsIG9sZF9pbnN0YW5jZSwgbmV3X2luc3RhbmNlLCBtb2RpZmllZF9maWVsZHM9Tm9uZSk6Ci0gICAgaWYgb3AgPT0gIklOU0VSVCIgb3Igb3AgPT0gIlVQREFURSI6Ci0gICAgICAgIGlmIG5ld19pbnN0YW5jZS5uZXR2aXJ0X2ZlYXR1cmU6Ci0gICAgICAgICAgICBleGVjX29zX3dyYXBwZXIoIlNldERlZmF1bHRDb25maWciLCAnc2V0JywgW25ld19pbnN0YW5jZS5uZXR2aXJ0X2ZlYXR1cmVdKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXhlY19vc193cmFwcGVyKCJTZXRTdGF0aWNGbG93T25seUNvbmZpZyIsICdzZXQnLCBbbmV3X2luc3RhbmNlLm5ldHZpcnRfZmVhdHVyZV0pCi0KLWRlZiBjb250cm9sbGVyX2FsaWFzX2NvbmZpZ19oYW5kbGVyKG9wLCBvbGRfaW5zdGFuY2UsIG5ld19pbnN0YW5jZSwgbW9kaWZpZWRfZmllbGRzPU5vbmUpOgotICAgIGlmIG9wID09ICdJTlNFUlQnIG9yIG9wID09ICdVUERBVEUnOgotICAgICAgICBpZiBzdHIobmV3X2luc3RhbmNlLmNvbnRyb2xsZXIpID09IGdldF9sb2NhbF9jb250cm9sbGVyX2lkKCk6Ci0gICAgICAgICAgICBleGVjX29zX3dyYXBwZXIoIlNldEhvc3RuYW1lIiwgJ3NldCcsIFtuZXdfaW5zdGFuY2UuYWxpYXNdKQotCi1kZWYgdGFjYWNzX3BsdXNfY29uZmlnX2hhbmRsZXIob3AsIG9sZF9pbnN0YW5jZSwgbmV3X2luc3RhbmNlLCBtb2RpZmllZF9maWVsZHM9Tm9uZSk6Ci0KLSAgICBpZiBpc2luc3RhbmNlKG9sZF9pbnN0YW5jZSwgVGFjYWNzUGx1c0NvbmZpZyk6Ci0gICAgICAgIGlmIG9wID09ICdERUxFVEUnOgotICAgICAgICAgICAgIyBkZWxldGluZyB0aGUgY29uZmlnIHNpbmdsZXRvbiAocHJlc3VtYWJseSBkdXJpbmcgc2h1dGRvd24/KQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICBpZiBpc2luc3RhbmNlKG9sZF9pbnN0YW5jZSwgVGFjYWNzUGx1c0NvbmZpZyk6Ci0gICAgICAgIGNvbmZpZ19pZCA9IG9sZF9pbnN0YW5jZS5pZAotICAgIGVsc2U6Ci0gICAgICAgIGNvbmZpZ19pZCA9ICd0YWNhY3MnCi0gICAgdHJ5OgotICAgICAgICBjb25maWcgPSBUYWNhY3NQbHVzQ29uZmlnLm9iamVjdHMuZ2V0KHBrPWNvbmZpZ19pZCkKLSAgICBleGNlcHQgVGFjYWNzUGx1c0NvbmZpZy5Eb2VzTm90RXhpc3Q6Ci0gICAgICAgICMgY29ucyB1cCBhIGR1bW15IGNvbmZpZyBvYmplY3QsIG5vdCBuZWNlc3NhcnkgdG8gc2F2ZSBpdAotICAgICAgICBjb25maWcgPSBUYWNhY3NQbHVzQ29uZmlnKCkKLQotICAgICMgZ2V0IGN1cnJlbnQgbGlzdCBvZiBob3N0cyAob3A9PURFTEVURSBpZ25vcmVkIGhlcmUpCi0gICAgIyNob3N0cyA9IFRhY2Fjc1BsdXNIb3N0Lm9iamVjdHMub3JkZXJfYnkoJ3RpbWVzdGFtcCcpCi0gICAgZGVmIHRpbWVzdGFtcFNvcnQoaDEsIGgyKToKLSAgICAgICAgcmV0dXJuIGNtcChoMS50aW1lc3RhbXAsIGgyLnRpbWVzdGFtcCkKLSAgICBob3N0cyA9IHNvcnRlZChUYWNhY3NQbHVzSG9zdC5vYmplY3RzLmFsbCgpLCB0aW1lc3RhbXBTb3J0KQotCi0gICAgIyBYWFggcm90aCAtLSBjb25maWcgaXMgcGFzc2VkIGFzLWlzLCBub3QgYXMgYSBzaW5nbGUtZWxlbWVudCBsaXN0Ci0gICAgY2ogPSBzZXJpYWxpemVycy5zZXJpYWxpemUoImpzb24iLCBbY29uZmlnXSkKLSAgICBoaiA9IHNlcmlhbGl6ZXJzLnNlcmlhbGl6ZSgianNvbiIsIGhvc3RzKQotICAgIHByaW50ICJDYWxsaW5nIG9zd3JhcHBlciB3aXRoOiIsIFtjaiwgaGpdCi0gICAgZXhlY19vc193cmFwcGVyKCdUYWNhY3NQbHVzQ29uZmlnJywgJ3NldCcsIFtjaiwgaGpdKQotICAgICAgICAKLWRlZiBzbm1wX3NlcnZlcl9jb25maWdfaGFuZGxlcihvcCwgb2xkX2luc3RhbmNlLCBuZXdfaW5zdGFuY2UsIG1vZGlmaWVkX2ZpZWxkcz1Ob25lKToKLSAgICBpZiBvcCA9PSAnREVMRVRFJzoKLSAgICAgICAgZXhlY19vc193cmFwcGVyKCdVbnNldFNubXBTZXJ2ZXJDb25maWcnLCAnc2V0JywgW10pCi0gICAgZWxpZiBvcCA9PSAnSU5TRVJUJyBvciBvcCA9PSAnVVBEQVRFJzoKLSAgICAgICAgIyBlbmFibGVfY2hhbmdlZCBpcyB0cnVlIGlmIG9wZXJhdGlvbiBpcyBJTlNFUlQsIGVsc2UgY29tcGFyZSB3aXRoIG9sZCBpbnN0YW5jZQotICAgICAgICBpZiAob3AgPT0gJ0lOU0VSVCcpOgotICAgICAgICAgICAgZW5hYmxlX2NoYW5nZWQgPSAobmV3X2luc3RhbmNlLnNlcnZlcl9lbmFibGUgaXMgVHJ1ZSkgI3NpbmNlIGRlZmF1bHQgaXMgRmFsc2UKLSAgICAgICAgICAgIHByaW50ICdvcGVyYXRpb249IGluc2VydCwgZW5hYmxlX2NoYW5nZWQgPSAnLCBlbmFibGVfY2hhbmdlZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZW5hYmxlX2NoYW5nZWQgPSAobmV3X2luc3RhbmNlLnNlcnZlcl9lbmFibGUgIT0gb2xkX2luc3RhbmNlLnNlcnZlcl9lbmFibGUpCi0gICAgICAgIHNlcnZlcl9lbmFibGUgPSBuZXdfaW5zdGFuY2Uuc2VydmVyX2VuYWJsZSAKLSAgICAgICAgY29tbXVuaXR5ICA9ICcnIGlmIG5ld19pbnN0YW5jZS5jb21tdW5pdHkgaXMgTm9uZSBlbHNlIG5ld19pbnN0YW5jZS5jb21tdW5pdHkgCi0gICAgICAgIGxvY2F0aW9uID0gJycgaWYgbmV3X2luc3RhbmNlLmxvY2F0aW9uIGlzIE5vbmUgZWxzZSBuZXdfaW5zdGFuY2UubG9jYXRpb24gCi0gICAgICAgIGNvbnRhY3QgID0gJycgaWYgbmV3X2luc3RhbmNlLmNvbnRhY3QgaXMgTm9uZSBlbHNlIG5ld19pbnN0YW5jZS5jb250YWN0Ci0KLSAgICAgICAgcHJpbnQgIkNhbGxpbmcgb3N3cmFwcGVyIHdpdGg6IiwgW3NlcnZlcl9lbmFibGUsIGNvbW11bml0eSwgbG9jYXRpb24sIGNvbnRhY3QsIGVuYWJsZV9jaGFuZ2VkXQotICAgICAgICBleGVjX29zX3dyYXBwZXIoJ1NldFNubXBTZXJ2ZXJDb25maWcnLCAnc2V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZXJ2ZXJfZW5hYmxlLCBjb21tdW5pdHksIGxvY2F0aW9uLCBjb250YWN0LCBlbmFibGVfY2hhbmdlZF0pCi0iIiIKLWRlZiB0ZXN0X2NvbmZpZ19oYW5kbGVyKG9wLCBvbGRfaW5zdGFuY2UsIG5ld19pbnN0YW5jZSwgbW9kaWZpZWRfZmllbGRzPU5vbmUpOgotICAgIHBhc3MKLQotZGVmIGltYWdlc191c2VyX3NzaF9rZXlfY29uZmlnX2hhbmRsZXIob3AsIG9sZF9pbnN0YW5jZSwgbmV3X2luc3RhbmNlLCBtb2RpZmllZF9maWVsZHM9Tm9uZSk6Ci0gICAgaWYgb3AgPT0gJ0lOU0VSVCcgb3Igb3AgPT0gJ1VQREFURSc6Ci0gICAgICAgIHNzaGtleSA9ICJcIiIgKyBzdHIobmV3X2luc3RhbmNlLmltYWdlc191c2VyX3NzaF9rZXkpICsgIlwiIgotICAgICAgICBleGVjX29zX3dyYXBwZXIoJ1NldEltYWdlc1VzZXJTU0hLZXknLCAnc2V0JywgW3NzaGtleV0pCi0KLWRlZiBpbml0X2NvbmZpZygpOgotICAgICMgCi0gICAgIyBBc3NvY2lhdGUgdGhlIGNvbmZpZyBoYW5kbGVycyB3aXRoIHNwZWNpZmljIGNhbGxvdXQgZm9yIGVhY2ggb2YgdGhlIGZpZWxkcwotICAgICMgIEtlZXAgaW4gbWluZCB0aGF0IHRoZXNlIGFyZSB0aGUgZGphbmdvIG5hbWVzLCBOT1QgdGhlIHJlc3QgYXBpIG5hbWVzLAotICAgICMKLSAgICAiIiIKLSAgICBkaXNhYmxlZF9ieV9zaGVsbF92YXJpYWJsZSA9IG9zLmVudmlyb24uZ2V0KCdTRE5DT05fQ09ORklHX0hBTkRMRVJTX0RJU0FCTEVEJywgRmFsc2UpCi0gICAgZGlzYWJsZWRfYnlfZmlsZSA9IG9zLnBhdGguZXhpc3RzKCIlcy9zZG5jb25fY29uZmlnX2hhbmRsZXJzX2Rpc2FibGVkIiAlIHNkbmNvbi5TRE5fUk9PVCkKLSAgICBpZiBub3QgZGlzYWJsZWRfYnlfc2hlbGxfdmFyaWFibGUgYW5kIG5vdCBkaXNhYmxlZF9ieV9maWxlOgotICAgICAgICBhZGRfY29uZmlnX2hhbmRsZXIoe0NvbnRyb2xsZXI6IFsnbnRwX3NlcnZlciddfSwgbnRwX2NvbmZpZ19oYW5kbGVyKQotICAgICAgICBhZGRfY29uZmlnX2hhbmRsZXIoe0NvbnRyb2xsZXI6IFsndGltZV96b25lJ119LCB0el9jb25maWdfaGFuZGxlcikKLSAgICAgICAgYWRkX2NvbmZpZ19oYW5kbGVyKAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIENvbnRyb2xsZXI6IFsnZG9tYWluX2xvb2t1cHNfZW5hYmxlZCcsICdkb21haW5fbmFtZScsICdkZWZhdWx0X2dhdGV3YXknXSwKLSAgICAgICAgICAgICAgICBDb250cm9sbGVyRG9tYWluTmFtZVNlcnZlcjogTm9uZSwKLSAgICAgICAgICAgICAgICBDb250cm9sbGVySW50ZXJmYWNlOiBbJ2lwJywgJ25ldG1hc2snLCAnbW9kZSddLAotICAgICAgICAgICAgfSwgbmV0d29ya19jb25maWdfaGFuZGxlcikKLSAgICAgICAgYWRkX2NvbmZpZ19oYW5kbGVyKHtDb250cm9sbGVyQWxpYXM6IFsnYWxpYXMnXX0sIGNvbnRyb2xsZXJfYWxpYXNfY29uZmlnX2hhbmRsZXIpCi0gICAgICAgIGFkZF9jb25maWdfaGFuZGxlcih7Q29udHJvbGxlcjogWydsb2dnaW5nX2VuYWJsZWQnLCAnbG9nZ2luZ19zZXJ2ZXInLCAnbG9nZ2luZ19sZXZlbCddfSwgbG9nZ2luZ19zZXJ2ZXJfY29uZmlnX2hhbmRsZXIpCi0gICAgICAgIGFkZF9jb25maWdfaGFuZGxlcih7RmVhdHVyZTogWyduZXR2aXJ0X2ZlYXR1cmUnXX0sIG5ldHZpcnRfZmVhdHVyZV9jb25maWdfaGFuZGxlcikKLSAgICAgICAgYWRkX2NvbmZpZ19oYW5kbGVyKHtGaXJld2FsbFJ1bGU6IE5vbmV9LCBmaXJld2FsbF9lbnRyeV9oYW5kbGVyKQotICAgICAgICBhZGRfY29uZmlnX2hhbmRsZXIoe0dsb2JhbENvbmZpZzogWydjbHVzdGVyX251bWJlciddfSwgdnJycF92aXJ0dWFsX3JvdXRlcl9pZF9jb25maWdfaGFuZGxlKQotICAgICAgICBhZGRfY29uZmlnX2hhbmRsZXIoeyBUYWNhY3NQbHVzQ29uZmlnOiBbInRhY2Fjc19wbHVzX2F1dGhuIiwgInRhY2Fjc19wbHVzX2F1dGh6IiwgInRhY2Fjc19wbHVzX2FjY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsX2F1dGhuIiwgImxvY2FsX2F1dGh6IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IiwgImtleSIsXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFjYWNzUGx1c0hvc3Q6IFsnaXAnLCAna2V5J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0YWNhY3NfcGx1c19jb25maWdfaGFuZGxlcikKLSAgICAgICAgYWRkX2NvbmZpZ19oYW5kbGVyKHtTbm1wU2VydmVyQ29uZmlnOiBbJ3NlcnZlcl9lbmFibGUnLCAnY29tbXVuaXR5JywgJ2xvY2F0aW9uJywgJ2NvbnRhY3QnXX0sIHNubXBfc2VydmVyX2NvbmZpZ19oYW5kbGVyKQotICAgICAgICBhZGRfY29uZmlnX2hhbmRsZXIoe0ltYWdlRHJvcFVzZXI6IFsnaW1hZ2VzX3VzZXJfc3NoX2tleSddfSwgaW1hZ2VzX3VzZXJfc3NoX2tleV9jb25maWdfaGFuZGxlcikKLSAgICBlbHNlOgotICAgICAgICBhZGRfY29uZmlnX2hhbmRsZXIoCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29udHJvbGxlcjogWydkb21haW5fbG9va3Vwc19lbmFibGVkJywgJ2RvbWFpbl9uYW1lJywgJ2RlZmF1bHRfZ2F0ZXdheSddLAotICAgICAgICAgICAgICAgIENvbnRyb2xsZXJEb21haW5OYW1lU2VydmVyOiBOb25lLAotICAgICAgICAgICAgICAgIENvbnRyb2xsZXJJbnRlcmZhY2U6IFsnaXAnLCAnbmV0bWFzaycsICdtb2RlJ10sCi0gICAgICAgICAgICAgICAgQ29udHJvbGxlckFsaWFzOiBbJ2FsaWFzJ10sCi0gICAgICAgICAgICAgICAgRmlyZXdhbGxSdWxlOiBOb25lLAotICAgICAgICAgICAgICAgIEZlYXR1cmU6IE5vbmUsCi0gICAgICAgICAgICAgICAgR2xvYmFsQ29uZmlnOiBbJ2hhLWVuYWJsZWQnLCAnY2x1c3Rlci1udW1iZXInXSwKLSAgICAgICAgICAgIH0sIHRlc3RfY29uZmlnX2hhbmRsZXIpCi0gICAgIiIiCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NvbnRyb2xsZXIvZmlyZXdhbGwucHkgYi9jbGkvc2RuY29uL2NvbnRyb2xsZXIvZmlyZXdhbGwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGNjZjNkOWIuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jb250cm9sbGVyL2ZpcmV3YWxsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSNmcm9tIHNkbmNvbi5jb250cm9sbGVyLm1vZGVscyBpbXBvcnQgQ29udHJvbGxlckFjbEVudHJ5Ci0KLWRlZiBtYXBfY29udHJvbGxlcl9hY2xfZW50cnlfdG9fdWZ3X3N0cmluZyhhY2xfZW50cnksIGluX2FjbCwgaW50ZXJmYWNlPU5vbmUsIGRlbGV0ZT1GYWxzZSk6Ci0gICAgIyBUT0RPIG9wdGltaXplIHRoaXMgbWV0aG9kIGJ5IGJ1aWxkaW5nIGFuIGFycmF5IGFuZCB0aGVuIGpvaW5pbmcgaXQKLSAgICBjb21tYW5kID0gInVmdyAiCi0gICAgCi0gICAgaWYgZGVsZXRlOgotICAgICAgICBjb21tYW5kICs9ICJkZWxldGUgIgotICAgICAgICAKLSAgICBpZiBhY2xfZW50cnlbJ2FjdGlvbiddID09ICJwZXJtaXQiOgotICAgICAgICBjb21tYW5kICs9ICJhbGxvdyAiCi0gICAgZWxzZToKLSAgICAgICAgY29tbWFuZCArPSAiZGVueSAiCi0gICAgCi0gICAgaWYgaW5fYWNsOgotICAgICAgICBjb21tYW5kICs9ICJpbiAiCi0gICAgZWxzZToKLSAgICAgICAgY29tbWFuZCArPSAib3V0ICIKLSAgICAgICAgCi0gICAgY29tbWFuZCArPSAoIm9uICIgKyBpbnRlcmZhY2UgKyAiICIpCi0gICAgCi0gICAgaWYgYWNsX2VudHJ5Wyd0eXBlJ10gPT0gJ2lwJzoKLSAgICAgICAgcGFzcwotICAgIGVsaWYgYWNsX2VudHJ5Wyd0eXBlJ10gPT0gJ3RjcCcgb3IgYWNsX2VudHJ5Wyd0eXBlJ10gPT0gJ3VkcCc6Ci0gICAgICAgIGNvbW1hbmQgKz0gKCJwcm90byAiICsgYWNsX2VudHJ5Wyd0eXBlJ10gKyAiIGZyb20gIikKLSAgICAgICAgaWYgYWNsX2VudHJ5WydzcmNfaXAnXSAhPSBOb25lOiAjIFRPRE8gY2hlY2sgbm9uZQotICAgICAgICAgICAgY29tbWFuZCArPSBhY2xfZW50cnlbJ3NyY19pcCddCi0gICAgICAgICAgICBpZiBhY2xfZW50cnlbJ3NyY19pcF9tYXNrJ10gIT0gTm9uZToKLSAgICAgICAgICAgICAgICBjb21tYW5kICs9ICgiLyIgKyBhY2xfZW50cnlbJ3NyY19pcF9tYXNrJ10gKyAiICIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbW1hbmQgKz0gIiAiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21tYW5kICs9ICJhbnkgIgotICAgICAgICAgICAgCi0gICAgICAgIGlmIGFjbF9lbnRyeVsnc3JjX3RwX3BvcnRfb3AnXSA9PSAnZXEnOgotICAgICAgICAgICAgY29tbWFuZCArPSAoInBvcnQgIiArIGFjbF9lbnRyeVsnc3JjX3RwX3BvcnQnXSArICIgIikKLQotICAgICAgICBjb21tYW5kICs9ICJ0byAiCi0gICAgICAgIGlmIGFjbF9lbnRyeVsnZHN0X2lwJ10gIT0gTm9uZTogI1RPRE8gY2hlY2sgbm9uZQotICAgICAgICAgICAgY29tbWFuZCArPSBhY2xfZW50cnlbJ2RzdF9pcCddCi0gICAgICAgICAgICBpZiBhY2xfZW50cnlbJ2RzdF9pcF9tYXNrJ10gIT0gTm9uZToKLSAgICAgICAgICAgICAgICBjb21tYW5kICs9ICgiLyIgKyBhY2xfZW50cnlbJ2RzdF9pcF9tYXNrJ10gKyAiICIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbW1hbmQgKz0gIiAiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21tYW5kICs9ICJhbnkgIgotICAgICAgICAgICAgCi0gICAgICAgIGlmIGFjbF9lbnRyeVsnZHN0X3RwX3BvcnRfb3AnXSA9PSAnZXEnOgotICAgICAgICAgICAgY29tbWFuZCArPSAoInBvcnQgIiArIGFjbF9lbnRyeVsnZHN0X3RwX3BvcnQnXSArICIgIikKLSAgICByZXR1cm4gY29tbWFuZAotICAgIAotICAgICAgICAKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY29udHJvbGxlci9tb2RlbHMucHkgYi9jbGkvc2RuY29uL2NvbnRyb2xsZXIvbW9kZWxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4OGFjN2FkLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY29udHJvbGxlci9tb2RlbHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjk0ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi1mcm9tIGRqYW5nby5jb250cmliLmF1dGgubW9kZWxzIGltcG9ydCBVc2VyCi0KLWZyb20gZGphbmdvLmZvcm1zIGltcG9ydCBWYWxpZGF0aW9uRXJyb3IKLWZyb20gZGphbmdvLmNvcmUudmFsaWRhdG9ycyBpbXBvcnQgTWF4VmFsdWVWYWxpZGF0b3IKLWZyb20gc2RuY29uLnJlc3QudmFsaWRhdG9ycyBpbXBvcnQgKgotCi1pbXBvcnQgc3lzICMgZm9yIHN5cy5tYXhpbnQKLWltcG9ydCB0aW1lCi0KLSMKLSMgY29udHJvbGxlci9tb2RlbHMucHkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0jIG1vZGVsIGRlc2NyaXB0aW9uIG9mIHRoZSB0YWJsZXMgdXNlZCB0byBjb25maWd1cmUgYW5kIAotIyB2aWV3IHRoZSBjb250cm9sbGVyIHN0YXRlLgotIwotIyB0aGVzZSB0YWJsZXMgYXJlIHVzZWQgYm90aCBieSBzZG5wbGF0Zm9ybSBhbmQgdGhlIHJlc3QgYXBpLgotIyB0aGUgY2xpIHVzZXMgdGhlIHJlc3QgYXBpIHRvIHJlYWQgYW5kIHdyaXRlIHRoZXNlIHRhYmxlcywKLSMgd2hpbGUgc2RucGxhdGZvcm0vc2RucGxhdGZvcm0gaGFzIGEgbW9yZSBkaXJlY3QgaW50ZXJmYWNlIHRvIHRoZQotIyB0YWJsZXMuCi0jCi0jIGZvciB0aGUgY2xpLCB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhcmUgZGVzY3JpYmVkIGluIHRoZQotIyAnY2xhc3MgUmVzdCcgc2VjdGlvbiBvZiBlYWNoIG9mIHRoZSB0YWJsZXMuCi0jCi0jIGZvciBzZG5wbGF0Zm9ybSB0aGUgbmFtZXMgb2YgZmllbGRzIGhhdmUgYSByZWxhdGlvbnNoaXAgdG8gdGhlaXIKLSMgdHlwZSBmb3Igc2RucGxhdGZvcm0uICAgSWYgYSBmaWVsZCBpcyBhIGZvcmVpZ24ga2V5LCB0aGVuIGFuICdfaWQnCi0jIGlzIGFwcGVuZGVkIHRvIHRoZSBuYW1lIGZvciB0aGUgc2FtZSBmaWVsZCB3aXRoaW4gc2RucGxhdGZvcm0uICBUaGlzCi0jIG1lYW5zIGlmIGEgZmllbGQgaXMgcHJvbW90ZWQgb3IgZGVtb3RlZCB0by9mcm9tIGEgZm9yZWlnbiBrZXksCi0jIGNoYW5nZXMgbmVlZCB0byBiZSBtYWRlIGluIHRoZSBzZG5wbGF0Zm9ybSBjb2RlIHRvIHVzZSB0aGUgdXBkYXRlZAotIyBuYW1lLgotIwotIyBNYWtlIHN1cmUgdG8gaW5jbHVkZSB0aGUgbmVzdGVkIFJlc3QgY2xhc3Mgb3IgZWxzZSB0aGV5IHdvbid0IGJlCi0jIGFjY2Vzc2libGUgdXNpbmcgdGhlIFJFU1QgQVBJLgotCi0jCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgZ2V0X3RpbWVzdGFtcCgpOgotICAgICIiIgotICAgIEZvciB1cyBpbiBtb2RlbHMgd2hlcmUgdGhlIG1ldGhvZCBvZiBvcmRlcmluZyB0aGUgcm93IHZhbHVlcwotICAgIGlzIGJhc2VkIG9uIHRoZSBvcmRlciBvZiBjcmVhdGlvbi4gIAotICAgIAotICAgIFRoZSBmaWVsZCBpcyBleHBvc2VkIHRvIHRoZSByZXN0IGFwaSBzbyB0aGF0IHRoZSB2YWx1ZSBjYW4KLSAgICBiZSBxdWVyaWVzLCBhbmQgc28gdGhhdCB0aGUgcmVzdCBhcGkgbWF5IGNob29zZSB0byBvcmRlciB0aGUKLSAgICByb3cgdmFsdWVzIHVzaW5nIGl0cyBvd24gc3RyYXRlZ3kgYnkgc2V0dGluZyB0aGUgZmllbGQgZGlyZWN0bHkKLSAgICAiIiIKLSAgICByZXR1cm4gaW50KHRpbWUudGltZSgpKjEwMDAwMDApCi0KLWNsYXNzIFR1bm5lbChtb2RlbHMuTW9kZWwpOgotCi0gICAgaWRfbWF4X2xlbmd0aCA9IDY0Ci0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgICMKLSAgICAjIFVuaXF1ZSBuYW1lIG9mIHRoZSBUdW5uZWwKLSAgICAjCi0gICAgdHVubmVsX2lkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgcHJpbWFyeV9rZXkgID0gVHJ1ZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gJ1R1bm5lbCBJZCcsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICdBIHVuaXF1ZSBJZCBmb3IgYSBUdW5uZWwnLAotICAgICAgICB2YWxpZGF0b3JzICAgPSBbIFRlbmFudE5hbWVWYWxpZGF0b3IoKSBdLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSBpZF9tYXhfbGVuZ3RoKQotICAgIAotICAgIHBhdGhfc2VxID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gJ1BhdGggU2VxdWVuY2UnLAotICAgICAgICBoZWxwX3RleHQgICAgPSAnTGlzdCBvZiBwYXRoIGlkZW50aWZpZXJzOiBub2RlcyBvciBhZGphY2VuY2llcycsCi0gICAgICAgIGJsYW5rICAgICAgICA9IFRydWUsCi0gICAgICAgIG51bGwgICAgICAgICA9IFRydWUsCi0gICAgICAgIG1heF9sZW5ndGggICA9IDUwMCkKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fIChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudHVubmVsX2lkCi0gICAgCi0gICAgZGVmIGRlbGV0ZShzZWxmKToKLSAgICAgICAgc3VwZXIoVHVubmVsLCBzZWxmKS5kZWxldGUoKQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAndHVubmVsLWNvbmZpZycKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICd0dW5uZWxfaWQnLCAgICAncmVzdF9uYW1lJzogJ3R1bm5lbC1pZCd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3BhdGhfc2VxJywgICAgICdyZXN0X25hbWUnOiAncGF0aC1zZXEnfSwKLSAgICAgICAgICAgICkKLQotY2xhc3MgUG9saWN5KG1vZGVscy5Nb2RlbCk6Ci0KLSAgICBpZF9tYXhfbGVuZ3RoID0gNjQKLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgIwotICAgICMgVW5pcXVlIG5hbWUgb2YgdGhlIFR1bm5lbAotICAgICMKLSAgICBzcl9wb2xpY3lfaWQgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBwcmltYXJ5X2tleSAgPSBUcnVlLAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnU1IgUG9saWN5IElkJywKLSAgICAgICAgaGVscF90ZXh0ICAgID0gJ0EgdW5pcXVlIElkIGZvciBhIFNSIFBvbGljeScsCi0gICAgICAgIHZhbGlkYXRvcnMgICA9IFsgVGVuYW50TmFtZVZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGggICA9IGlkX21heF9sZW5ndGgpCi0gICAgCi0gICAgc3JfcG9saWN5X3R5cGUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnU1IgUG9saWN5IFR5cGUnLAotICAgICAgICBoZWxwX3RleHQgICAgPSAnVHlwZSBvZiBTUiBQb2xpY3knLAotICAgICAgICB2YWxpZGF0b3JzICAgPSBbIFRlbmFudE5hbWVWYWxpZGF0b3IoKSBdLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSBpZF9tYXhfbGVuZ3RoKQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fIChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc3JfcG9saWN5X2lkCi0gICAgCi0gICAgZGVmIGRlbGV0ZShzZWxmKToKLSAgICAgICAgc3VwZXIoUG9saWN5LCBzZWxmKS5kZWxldGUoKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdwb2xpY3ktY29uZmlnJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgeyduYW1lJzogJ3NyX3BvbGljeV9pZCcsICAgICdyZXN0X25hbWUnOiAncG9saWN5LWlkJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3JfcG9saWN5X3R5cGUnLCAgICAncmVzdF9uYW1lJzogJ3BvbGljeS10eXBlJ30sCi0gICAgICAgICAgICApCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIEZlYXR1cmUobW9kZWxzLk1vZGVsKToKLQotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBpZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nZmVhdHVyZScsCi0gICAgICAgIGRlZmF1bHQ9J2ZlYXR1cmUnLAotICAgICAgICBtYXhfbGVuZ3RoPTE2KQotCi0gICAgbmV0dmlydF9mZWF0dXJlID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdOZXR3b3JrIHZpcnR1YWxpemF0aW9uIEZlYXR1cmUgRW5hYmxlZCcsCi0gICAgICAgIGhlbHBfdGV4dD0nRW5hYmxlIG5ldHdvcmsgdmlydHVhbGl6YXRpb24gZmVhdHVyZSBieSBzZXR0aW5nIHRvIHRydWUnLAotICAgICAgICBkZWZhdWx0PVRydWUKLSAgICAgICAgKQotCi0gICAgc3RhdGljX2Zsb3dfcHVzaGVyX2ZlYXR1cmUgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1N0YXRpYyBGbG93IFB1c2hlciBGZWF0dXJlIEVuYWJsZWQnLAotICAgICAgICBoZWxwX3RleHQ9J0VuYWJsZSBTdGF0aWMgRmxvdyBQdXNoZXIgZmVhdHVyZSBieSBzZXR0aW5nIHRvIHRydWUnLAotICAgICAgICBkZWZhdWx0PVRydWUKLSAgICAgICAgKQotICAgIAotICAgIHBlcmZvcm1hbmNlX21vbml0b3JfZmVhdHVyZSA9IG1vZGVscy5Cb29sZWFuRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nUGVyZm9ybWFuY2UgTW9uaXRvcicsCi0gICAgICAgIGhlbHBfdGV4dD0iRW5hYmxlIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgZmVhdHVyZSBieSBzZXR0aW5nIHRvIHRydWUiLAotICAgICAgICBkZWZhdWx0PUZhbHNlCi0gICAgICAgICkKLSAgICAKLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiJXMiICUgKHNlbGYuaWQsKQotCi0gICAgZGVmIHZhbGlkYXRlX3VuaXF1ZShzZWxmLCBleGNsdWRlID0gTm9uZSk6Ci0gICAgICAgIGlmIHNlbGYuaWQgIT0gJ2ZlYXR1cmUnOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJPbmx5IHNpbmdsZSBmZWF0dXJlIHJlY29yZCBleGlzdHMiKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdmZWF0dXJlJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgeyduYW1lJzogJ25ldHZpcnRfZmVhdHVyZScsICAgICAgICAgICAgICAgICdyZXN0X25hbWUnOiAnbmV0dmlydC1mZWF0dXJlJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3RhdGljX2Zsb3dfcHVzaGVyX2ZlYXR1cmUnLCAncmVzdF9uYW1lJzogJ3N0YXRpYy1mbG93LXB1c2hlci1mZWF0dXJlJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAncGVyZm9ybWFuY2VfbW9uaXRvcl9mZWF0dXJlJywncmVzdF9uYW1lJzogJ3BlcmZvcm1hbmNlLW1vbml0b3ItZmVhdHVyZSd9LAotICAgICAgICAgICAgKQotCi0iIiIKLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIEdsb2JhbENvbmZpZyhtb2RlbHMuTW9kZWwpOgotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nR2xvYmFsIENvbmZpZyBOYW1lJywKLSAgICAgICAgaGVscF90ZXh0PSJVbmlxdWUgbmFtZSBmb3IgdGhlIGdsb2JhbCBjb25maWc7IGl0J3MgYSBzaW5nbGV0b24sICIKLSAgICAgICAgICAgICAgICAgICJzbywgYnkgY29udmVudGlvbiwgdGhlIG5hbWUgc2hvdWxkIGFsd2F5cyBiZSBcImdsb2JhbFwiIiwKLSAgICAgICAgZGVmYXVsdD0nZ2xvYmFsJywKLSAgICAgICAgbWF4X2xlbmd0aD0xNikKLSAgICAKLSAgICBjbHVzdGVyX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0NsdXN0ZXIgTmFtZScsCi0gICAgICAgIGhlbHBfdGV4dD0nTmFtZSBmb3IgdGhlIGNsdXN0ZXInLAotICAgICAgICBkZWZhdWx0PSdTRE5DbHVzdGVyJywKLSAgICAgICAgbWF4X2xlbmd0aD0yNTYpCi0KLSAgICBjbHVzdGVyX251bWJlciA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nQ2x1c3RlciBOdW1iZXInLAotICAgICAgICBoZWxwX3RleHQ9J1NtYWxsIGludGVncmFsICgxLTI1NSkgaWRlbnRpZmllciBmb3IgdGhlIGNsdXN0ZXInLAotICAgICAgICBkZWZhdWx0PTApCi0KLSAgICBoYV9lbmFibGVkID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdIaWdoIEF2YWlsYWJpbGl0eSAoSEEpIEVuYWJsZWQnLAotICAgICAgICBoZWxwX3RleHQ9J0lzIGhpZ2ggYXZhaWxhYmlsaXR5IChIQSkgZW5hYmxlZCcsCi0gICAgICAgIGRlZmF1bHQ9RmFsc2UpCi0KLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAnZ2xvYmFsLWNvbmZpZycKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICdjbHVzdGVyX25hbWUnLCAgICAncmVzdF9uYW1lJzogJ2NsdXN0ZXItbmFtZSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2NsdXN0ZXJfbnVtYmVyJywgICdyZXN0X25hbWUnOiAnY2x1c3Rlci1udW1iZXInfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdoYV9lbmFibGVkJywgICAgICAncmVzdF9uYW1lJzogJ2hhLWVuYWJsZWQnfSwKLSAgICAgICAgICAgICkKLSAgICAKLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIFRvcG9sb2d5Q29uZmlnKG1vZGVscy5Nb2RlbCk6Ci0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgcHJpbWFyeV9rZXk9VHJ1ZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSd0b3BvbG9neScsCi0gICAgICAgIGRlZmF1bHQ9J3RvcG9sb2d5JywKLSAgICAgICAgbWF4X2xlbmd0aD0xNikKLQotCi0gICAgYXV0b3BvcnRmYXN0ID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdBdXRvIFBvcnRGYXN0JywKLSAgICAgICAgaGVscF90ZXh0PSdTdXBwcmVzcyBzZW5kaW5nIExMRFBzIG9uIGZhc3QgcG9ydHMuJywKLSAgICAgICAgZGVmYXVsdD1UcnVlCi0gICAgICAgICkKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiVzIiAlIChzZWxmLmlkLCkKLQotICAgIGRlZiB2YWxpZGF0ZV91bmlxdWUoc2VsZiwgZXhjbHVkZSA9IE5vbmUpOgotICAgICAgICBpZiBzZWxmLmlkICE9ICd0b3BvbG9neSc6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIk9ubHkgc2luZ2xlIHRvcG9sb2d5IHJlY29yZCBleGlzdHMiKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICd0b3BvbG9neS1jb25maWcnCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICkKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBGb3J3YXJkaW5nQ29uZmlnKG1vZGVscy5Nb2RlbCk6Ci0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgcHJpbWFyeV9rZXk9VHJ1ZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdmb3J3YXJkaW5nJywKLSAgICAgICAgZGVmYXVsdD0nZm9yd2FyZGluZycsCi0gICAgICAgIG1heF9sZW5ndGg9MTYpCi0KLSAgICBhY2Nlc3NfcHJpb3JpdHkgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0FjY2VzcyBGbG93IFByaW9yaXR5JywKLSAgICAgICAgaGVscF90ZXh0PSdQcmlvcml0eSBmb3IgZmxvd3MgY3JlYXRlZCBieSBmb3J3YXJkaW5nIG9uIGFjY2VzcyBzd2l0Y2hlcycsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBSYW5nZVZhbGlkYXRvcigwLDIqKjE1LTEpIF0sCi0gICAgICAgIGRlZmF1bHQ9MTApCi0KLSAgICBjb3JlX3ByaW9yaXR5ID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdDb3JlIEZsb3cgUHJpb3JpdHknLAotICAgICAgICBoZWxwX3RleHQ9J1ByaW9yaXR5IGZvciBmbG93cyBjcmVhdGVkIGJ5IGZvcndhcmRpbmcgb24gY29yZSBzd2l0Y2hlcycsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBSYW5nZVZhbGlkYXRvcigwLDIqKjE1LTEpIF0sCi0gICAgICAgIGRlZmF1bHQ9MjApCi0KLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICIlcyIgJSAoc2VsZi5pZCwpCi0KLSAgICBkZWYgdmFsaWRhdGVfdW5pcXVlKHNlbGYsIGV4Y2x1ZGUgPSBOb25lKToKLSAgICAgICAgaWYgc2VsZi5pZCAhPSAnZm9yd2FyZGluZyc6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgIk9ubHkgYSBzaW5nbGUgZm9yd2FyZGluZyBjb25maWd1cmF0aW9uIHJlY29yZCBpcyBhbGxvd2VkIgotICAgICAgICApCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ2ZvcndhcmRpbmctY29uZmlnJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgeyduYW1lJzogJ2FjY2Vzc19wcmlvcml0eScsICAgICdyZXN0X25hbWUnOiAnYWNjZXNzLXByaW9yaXR5J30sCi0gICAgICAgICAgICB7J25hbWUnOiAnY29yZV9wcmlvcml0eScsICAgICAgJ3Jlc3RfbmFtZSc6ICdjb3JlLXByaW9yaXR5J30sCi0gICAgICAgICkKLSIiIgotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWNsYXNzIENvbnRyb2xsZXIobW9kZWxzLk1vZGVsKToKLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMKLSAgICAjIE5vdGU6IFRoaXMgbW9kZWwgc2hvdWxkIG9ubHkgY29udGFpbiBjb25maWcgc3RhdGUgZm9yIHRoZSBjb250cm9sbGVyIFZNLAotICAgICMgbm90IGFueSBvcGVyYXRpb25hbCBzdGF0ZS4KLSAgICAjCi0gICAgIyBOb3RlOiBUaGUgY29udmVudGlvbiB1c2VkIHRvIGJlIHRoYXQgdGhlIGNvbnRyb2xsZXIgSUQgd2FzCi0gICAgIyB0aGUgSVAgYWRkcmVzcyBhbmQgcG9ydCB0aGF0IHRoZSBPcGVuRmxvdyBjb250cm9sbGVyIHdhcyBsaXN0ZW5pbmcKLSAgICAjIG9uLiBJbiBwcmFjdGljZSBTRE5QbGF0Zm9ybSBsaXN0ZW5lZCBvbiBhbGwgaW50ZXJmYWNlcyBhbmQgaXQncyBsb2dpYwotICAgICMgZm9yIGRldGVybWluaW5nIGl0cyByZWFsIElQIGFkZHJlc3Mgd2FzIHVucmVsaWFibGUsIHNvIGl0IHdhcwotICAgICMgY2hhbmdlZC9zaW1wbGlmaWVkIHRvIGp1c3QgYWx3YXlzIHVzZSAibG9jYWxob3N0IiBmb3IgdGhlIAotICAgICMgSVAgYWRkcmVzcy4gU28gdGhlIGNvbnRyb2xsZXIgSUQgd2FzIHByZXR0eSBtdWNoIGFsd2F5cwotICAgICMgImxvY2FsaG9zdDo2NjMzIi4gVGhlIHVzZSBvZiAiY29udHJvbGxlciBoZXJlIGNhdXNlZCBzb21lCi0gICAgIyBjb25mdXNpb24gYWJvdXQgd2hldGhlciAiY29udHJvbGxlciIgbWVhbnQgdGhlCi0gICAgIyBPcGVuRmxvdyBjb250cm9sbGVyIChpLmUuIFNETlBsYXRmb3JtL1NETlBsYXRmb3JtKSB2cy4gdGhlIGNvbnRyb2xsZXIgVk0uCi0gICAgIyBJbiB0aGUgb2xkIGNvbnRyb2xsZXIgbW9kZWwgbW9zdC9hbGwgb2YgdGhlIHNldHRpbmdzIGNvbmNlcm5lZCB0aGUKLSAgICAjIE9wZW5GbG93IGNvbnRyb2xsZXIgbm90IHRoZSBWTT4KLSAgICAjIE1vc3Qgb2YgdGhlIHNldHRpbmdzIHdlIG5vdyB3YW50IHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBjb250cm9sbGVyIGFyZQotICAgICMgY29udHJvbGxlciBWTSBzZXR0aW5ncyAoZS5nLiBJUCBhZGRyZXNzLCBETlMsIHRpbWUgem9uZSkgYW5kIG5vdAotICAgICMgT3BlbkZsb3cgY29udHJvbGxlciBzZXR0aW5ncy4gU28gd2UncmUgcmVwdXJwb3NpbmcgdGhlIENvbnRyb2xsZXIKLSAgICAjIG1vZGVsIHRvIGJlIHRoZSBjb250cm9sbGVyIFZNIGNvbmZpZyBzdGF0ZSBhbmQgbm90IHRoZSBPcGVuRmxvdwotICAgICMgY29udHJvbGxlciBkaXNjb3ZlcmVkIHN0YXRlICh3aGljaCB3YXMgc29ydCBvZiBicm9rZW4gdG8gYmVnaW4gd2l0aCkuCi0gICAgIyBDdXJyZW50bHkgKGFzIG9mIDEwLzIwMTEpLCBzaW5jZSB3ZSBvbmx5IHN1cHBvcnQgc2luZ2xlIG5vZGUgb3BlcmF0aW9uCi0gICAgIyB0aGUgY29udHJvbGxlciBJRCBpcyBoYXJkLWNvZGVkIHRvIGJlIGxvY2FsaG9zdCAocHJvYmFibHkgc2hvdWxkIGJlCi0gICAgIyBzb21ldGhpbmcgZGlmZmVyZW50LCBlLmcuICJkZWZhdWx0IiwgYmVjYXVzZSBsb2NhbGhvc3QgaW1wbGllcyBhCi0gICAgIyBhbiBpbnRlcmZhY2Ugd2hpY2ggaXMgcmVhbGx5IHNvbWV0aGluZyBzZXBhcmF0ZSksIGJ1dCBldmVudHVhbGx5IGZvcgotICAgICMgbXVsdGktbm9kZSBvcGVyYXRpb24gd2UnbGwgbmVlZCB0byBoYXZlIHVuaXF1ZSBpZHMgZm9yIGVhY2ggY29udHJvbGxlcgotICAgICMgbm9kZSBpbiB0aGUgY2x1c3Rlci4gVGhlIGVhc2llc3Qgd2F5IHdvdWxkIGJlIHRvIGhhdmUgdGhlIHVzZXIgZW50ZXIKLSAgICAjIHNvbWV0aGluZyBhdCBmaXJzdCB0aW1lIGNvbmZpZy4gT3IgcG9zc2libHkgd2UgY291bGQgZG8gc29tZXRoaW5nCi0gICAgIyB3aXRoIEdVSURzLiBOZWVkcyBtb3JlIHRob3VnaHQuLi4KLSAgICBpZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nQ29udHJvbGxlciBJRCcsCi0gICAgICAgIGhlbHBfdGV4dD0nVW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIGZvciB0aGUgY29udHJvbGxlciBub2RlJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIHZhbGlkYXRlX2NvbnRyb2xsZXJfaWQgXSwKLSAgICAgICAgbWF4X2xlbmd0aD0yNTYpCi0gICAgCi0gICAgc3RhdHVzID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTdGF0dXMnLAotICAgICAgICBoZWxwX3RleHQ9J2NsdXN0ZXIgc3RhdHVzIG9mIG5vZGUnLAotICAgICAgICBtYXhfbGVuZ3RoPTI1NiwKLSAgICAgICAgZGVmYXVsdD0nUHJvdmlzaW9uZWQnLAotICAgICAgICApCi0KLSAgICBkb21haW5fbG9va3Vwc19lbmFibGVkID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdEb21haW4gTG9va3VwcyBFbmFibGVkJywKLSAgICAgICAgaGVscF90ZXh0PSdJZiBkb21haW4gbG9va3VwcyBhcmUgZW5hYmxlZCAoZGVmYXVsdCBpcyBUcnVlKScsCi0gICAgICAgIGRlZmF1bHQ9VHJ1ZQotICAgICAgICApCi0KLSAgICBkb21haW5fbmFtZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRG9tYWluIE5hbWUnLAotICAgICAgICBoZWxwX3RleHQ9J0RvbWFpbiBuYW1lIG9mIHRoZSBuZXR3b3JrJywKLSAgICAgICAgbWF4X2xlbmd0aD0yNTYsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBEb21haW5OYW1lVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgZGVmYXVsdD0nJywKLSAgICAgICAgYmxhbms9VHJ1ZSkKLQotICAgIGRlZmF1bHRfZ2F0ZXdheSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRGVmYXVsdCBHYXRld2F5JywKLSAgICAgICAgaGVscF90ZXh0PSdEZWZhdWx0IGdhdGV3YXknLAotICAgICAgICBtYXhfbGVuZ3RoPTI1NiwKLSAgICAgICAgdmFsaWRhdG9ycz1bIElwVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgZGVmYXVsdD0nJywKLSAgICAgICAgYmxhbms9VHJ1ZSkKLSAgICAKLSAgICBudHBfc2VydmVyID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdOVFAgU2VydmVyJywKLSAgICAgICAgaGVscF90ZXh0PSdOVFAgc2VydmVyJywKLSAgICAgICAgbWF4X2xlbmd0aD0yNTYsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBJcE9yRG9tYWluTmFtZVZhbGlkYXRvcigpIF0sCi0gICAgICAgIGRlZmF1bHQ9JycsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIHRpbWVfem9uZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nVGltZSBab25lJywKLSAgICAgICAgaGVscF90ZXh0PSdUaW1lIHpvbmUgKGUuZy4gQW1lcmljYS9Mb3NfQW5nZWxlcyknLAotICAgICAgICBtYXhfbGVuZ3RoPTI1NiwKLSAgICAgICAgdmFsaWRhdG9ycz1bIFRpbWVab25lVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgZGVmYXVsdD0nVVRDJykKLQotICAgIGxvZ2dpbmdfZW5hYmxlZCA9IG1vZGVscy5Cb29sZWFuRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nTG9nZ2luZyBFbmFibGVkJywKLSAgICAgICAgaGVscF90ZXh0PSdMb2dnaW5nIGVuYWJsZWQnLAotICAgICAgICBkZWZhdWx0PUZhbHNlCi0gICAgKQotICAgIAotICAgIGxvZ2dpbmdfc2VydmVyID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdMb2dnaW5nIFNlcnZlcicsCi0gICAgICAgIGhlbHBfdGV4dD0nTG9nZ2luZyBzZXJ2ZXInLAotICAgICAgICBtYXhfbGVuZ3RoPTI1NiwKLSAgICAgICAgdmFsaWRhdG9ycz1bIElwT3JEb21haW5OYW1lVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgZGVmYXVsdD0nJywKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotICAgIAotICAgIGxvZ2dpbmdfbGV2ZWwgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0xvZ2dpbmcgTGV2ZWwnLAotICAgICAgICBoZWxwX3RleHQ9J0xvZ2dpbmcgbGV2ZWwnLAotICAgICAgICBtYXhfbGVuZ3RoPTE2LAotICAgICAgICB2YWxpZGF0b3JzPVsgRW51bWVyYXRpb25WYWxpZGF0b3IoKCdlbWVyZycsICdhbGVydCcsICdjcml0JywgJ2VycicsCi0gICAgICAgICAgICAnd2FybmluZycsICdub3RpY2UnLCAnaW5mbycsICdkZWJ1ZycsICcwJywgJzEnLCAnMicsICczJywgJzQnLAotICAgICAgICAgICAgJzUnLCAnNicsICc3JykpXSwKLSAgICAgICAgZGVmYXVsdD0nbm90aWNlJwotICAgICAgICApCi0gICAgCi0gICAgIyBJT1MgbGV0J3MgeW91IHNwZWNpZnkgdGhlIGRvbWFpbiBuYW1lKHMpIG9mIHRoZSBuZXR3b3JrIGluIHR3bwotICAgICMgd2F5cy4gWW91IGNhbiBzcGVjaWZ5IGEgc2luZ2xlIGRvbWFpbiBuYW1lIHdpdGggdGhlICJpcCBkb21haW4gbmFtZSA8ZG9tYWluLW5hbWU+IgotICAgICMgY29tbWFuZC4gWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIGRvbWFpbiBuYW1lcyB3aXRoIG11bHRpcGxlCi0gICAgIyAiaXAgZG9tYWluIGxpc3QgPGRvbWFpbi1uYW1lPiIgY29tbWFuZHMuIFRoZSBkb21haW4gbmFtZXMgc3BlY2lmaWVkIHdpdGgKLSAgICAjICJpcCBkb21haW4gbGlzdCIgY29tbWFuZHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGRvbWFpbiBuYW1lIHNwZWNpZmllZCB3aXRoCi0gICAgIyB0aGUgImlwIGRvbWFpbiBuYW1lIiBjb21tYW5kLCBzbyB0aGUgc2luZ2xlICJpcCBkb21haW4gbmFtZSIgaXMgb25seQotICAgICMgdXNlZCBpZiB0aGUgZG9tYWluIG5hbWUgbGlzdCBpcyB1bnNwZWNpZmllZC9lbXB0eS9udWxsLiBLaW5kIG9mIG1lc3N5LCBidXQKLSAgICAjIGlmIHdlIHdhbnQgdG8gZW11bGF0ZSBJT1MgYmVoYXZpb3IgSSB0aGluayB3ZSdsbCBuZWVkIHRvIHJlcHJlc2VudCB0aGF0IGluIHRoZQotICAgICMgbW9kZWwuIEJ1dCB0byBzaW1wbGlmeSB0aGluZ3MgZm9yIG5vdyB3ZSdsbCBqdXN0IHN1cHBvcnQgdGhlIHNpbmdsZSBkb21haW4gbmFtZS4KLSAgICAKLSAgICAjZG9tYWluX25hbWVfbGlzdCA9IG1vZGVscy5UZXh0RmllbGQoCi0gICAgIyAgICB2ZXJib3NlX25hbWU9J0RvbWFpbiBOYW1lIExpc3QnLAotICAgICMgICAgaGVscF90ZXh0PSdMaXN0IG9mIGRvbWFpbiBuYW1lcyBmb3IgdGhlIG5ldHdvcmssIG9uZSBwZXIgbGluZScsCi0gICAgIyAgICBudWxsPVRydWUKLSAgICAjICAgICkKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiVzIiAlIChzZWxmLmlkLCkKLQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAnY29udHJvbGxlci1ub2RlJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgeyduYW1lJzogJ2RvbWFpbl9sb29rdXBzX2VuYWJsZWQnLCAgJ3Jlc3RfbmFtZSc6ICdkb21haW4tbG9va3Vwcy1lbmFibGVkJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZG9tYWluX25hbWUnLCAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ2RvbWFpbi1uYW1lJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZGVmYXVsdF9nYXRld2F5JywgICAgICAgICAncmVzdF9uYW1lJzogJ2RlZmF1bHQtZ2F0ZXdheSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ250cF9zZXJ2ZXInLCAgICAgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdudHAtc2VydmVyJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAndGltZV96b25lJywgICAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ3RpbWUtem9uZSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2xvZ2dpbmdfZW5hYmxlZCcsICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdsb2dnaW5nLWVuYWJsZWQnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdsb2dnaW5nX3NlcnZlcicsICAgICAgICAgICdyZXN0X25hbWUnOiAnbG9nZ2luZy1zZXJ2ZXInfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdsb2dnaW5nX2xldmVsJywgICAgICAgICAgICdyZXN0X25hbWUnOiAnbG9nZ2luZy1sZXZlbCd9LAotICAgICAgICAgICAgKQotCi0iIiIKLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIENvbnRyb2xsZXJBbGlhcyhtb2RlbHMuTW9kZWwpOgotICAgIAotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBhbGlhcyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIG1heF9sZW5ndGg9MjU1LAotICAgICAgICBoZWxwX3RleHQgPSAiYWxpYXMgZm9yIGNvbnRyb2xsZXIiLAotICAgICAgICB2ZXJib3NlX25hbWU9J2FsaWFzJywKLSAgICAgICAgdmFsaWRhdG9ycz1bU3dpdGNoQWxpYXNWYWxpZGF0b3IoKV0pCi0gICAgCi0gICAgY29udHJvbGxlciA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBDb250cm9sbGVyLAotICAgICAgICB2ZXJib3NlX25hbWU9J0NvbnRyb2xsZXInKQotCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ2NvbnRyb2xsZXItYWxpYXMnCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBDb250cm9sbGVySW50ZXJmYWNlKG1vZGVscy5Nb2RlbCk6Ci0gICAgCi0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLSAgICBjb250cm9sbGVyID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIENvbnRyb2xsZXIsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iQ29udHJvbGxlciBJRCIpCi0gICAgCi0gICAgdHlwZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nSW50ZXJmYWNlIFR5cGUnLAotICAgICAgICBoZWxwX3RleHQ9J1R5cGUgb2YgaW50ZXJmYWNlIChlLmcuICJFdGhlcm5ldCIpJywKLSAgICAgICAgbWF4X2xlbmd0aD0yNTYsCi0gICAgICAgIGRlZmF1bHQ9J0V0aGVybmV0JwotICAgICAgICApCi0gICAgCi0gICAgbnVtYmVyID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSJJbnRlcmZhY2UgTnVtYmVyIiwKLSAgICAgICAgaGVscF90ZXh0PSdOdW1iZXIgb2YgaW50ZXJmYWNlIChub24tbmVnYXRpdmUgaW50ZWdlciknLAotICAgICAgICBkZWZhdWx0PTApCi0gICAgCi0gICAgbW9kZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nTW9kZScsCi0gICAgICAgIGhlbHBfdGV4dD0nTW9kZSBvZiBjb25maWd1cmluZyBJUCBhZGRyZXNzICgiZGhjcCIgb3IgInN0YXRpYyIpJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIEVudW1lcmF0aW9uVmFsaWRhdG9yKCgnZGhjcCcsICdzdGF0aWMnKSldLAotICAgICAgICBtYXhfbGVuZ3RoPTMyLAotICAgICAgICBkZWZhdWx0PSdzdGF0aWMnKQotICAgIAotICAgIGlwID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdJUCBBZGRyZXNzJywKLSAgICAgICAgaGVscF90ZXh0PSdJUCBBZGRyZXNzIGZvciBpbnRlcmZhY2UnLAotICAgICAgICB2YWxpZGF0b3JzPVsgSXBWYWxpZGF0b3IoKSBdLAotICAgICAgICBtYXhfbGVuZ3RoPTE1LAotICAgICAgICBkZWZhdWx0PScnLAotICAgICAgICBibGFuaz1UcnVlKQotICAgIAotICAgIG5ldG1hc2sgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J05ldG1hc2snLAotICAgICAgICBoZWxwX3RleHQ9J05ldG1hc2snLAotICAgICAgICB2YWxpZGF0b3JzPVsgSXBWYWxpZGF0b3IoKSBdLAotICAgICAgICBtYXhfbGVuZ3RoPTE1LAotICAgICAgICBkZWZhdWx0PScnLAotICAgICAgICBibGFuaz1UcnVlKQotICAgIAotICAgICMgcHJvdmlkZSBhIGxpbmsgYmV0d2VlbiB0aGUgdW5kZXJseWluZyBpbnRlcmZhY2UgbGF5ZXIKLSAgICAjIGFuZCB0aGlzIG1vZGVsJ3MgJ2luZGV4IG51bWJlcicgdG8gaGVscCBtYW5hZ2UgZGlzY292ZXJlZF9pcAotICAgIG1hYyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iTUFDIEFkZHJlc3MiLAotICAgICAgICBoZWxwX3RleHQ9Ik1BQyBBZGRyZXNzIiwKLSAgICAgICAgbWF4X2xlbmd0aD0xNywgCi0gICAgICAgIHZhbGlkYXRvcnMgPSBbdmFsaWRhdGVfbWFjX2FkZHJlc3NdLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0KLSAgICBkaXNjb3ZlcmVkX2lwID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdEaXNjb3ZlcmVkIElQIEFkZHJlc3MnLAotICAgICAgICBoZWxwX3RleHQ9J0Rpc2NvdmVyZWQgSVAgQWRkcmVzcyBmb3IgaW50ZXJmYWNlJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIElwVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aD0xNSwKLSAgICAgICAgZGVmYXVsdD0nJywKLSAgICAgICAgYmxhbms9VHJ1ZSkKLSAgICAKLQotIyAgICBpbl9hY2wgPSBtb2RlbHMuRm9yZWlnbktleSgKLSMgICAgICAgIENvbnRyb2xsZXJBY2wsCi0jICAgICAgICB2ZXJib3NlX25hbWUgPSAnQ29udHJvbGxlciBpbnB1dCBhY2wnLAotIyAgICAgICAgYmxhbms9VHJ1ZSwKLSMgICAgICAgIG51bGw9VHJ1ZSkKLQotIyAgICBvdXRfYWNsID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0jICAgICAgICBDb250cm9sbGVyQWNsLAotIyAgICAgICAgdmVyYm9zZV9uYW1lID0gJ0NvbnRyb2xsZXIgb3V0cHV0IGFjbCcsCi0jICAgICAgICBibGFuaz1UcnVlLAotIyAgICAgICAgbnVsbD1UcnVlKQotICAgICAgICAKLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGNsYXNzIENhc3NhbmRyYVNldHRpbmdzOgotICAgICAgICBDT01QT1VORF9LRVlfRklFTERTID0gKCdjb250cm9sbGVyJywgJ3R5cGUnLCAnbnVtYmVyJykKLSAgICAKLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ2NvbnRyb2xsZXItaW50ZXJmYWNlJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgIHsnbmFtZSc6ICdkaXNjb3ZlcmVkX2lwJywgJ3Jlc3RfbmFtZSc6ICdkaXNjb3ZlcmVkLWlwJ30sCi0jICAgICAgICAgICAgeyduYW1lJzogJ2luX2FjbCcsICAgICAgICAncmVzdF9uYW1lJzogJ2luLWFjbCd9LAotIyAgICAgICAgICAgIHsnbmFtZSc6ICdvdXRfYWNsJywgICAgICAgJ3Jlc3RfbmFtZSc6ICdvdXQtYWNsJ30sCi0gICAgICAgICAgICAgKQotICAgICAgICAKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgRmlyZXdhbGxSdWxlKG1vZGVscy5Nb2RlbCk6Ci0KLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIAotICAgIGludGVyZmFjZSA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBDb250cm9sbGVySW50ZXJmYWNlLAotICAgICAgICB2ZXJib3NlX25hbWU9IkNvbnRyb2xsZXIgSW50ZXJmYWNlIikKLQotICAgIGFjdGlvbiA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIG1heF9sZW5ndGg9OCwKLSAgICAgICAgdmFsaWRhdG9ycz1bIEVudW1lcmF0aW9uVmFsaWRhdG9yKCgnYWxsb3cnLCAnZGVueScsICdyZWplY3QnKSldLAotICAgICAgICBkZWZhdWx0PSdhbGxvdycsCi0gICAgICAgIGJsYW5rPVRydWUpCi0KLSAgICBzcmNfaXAgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1NvdXJjZSBJUCcsCi0gICAgICAgIGhlbHBfdGV4dD0nSVAgQWRkcmVzcyB0byBhbGxvdyB0cmFmZmljIGZyb20nLAotICAgICAgICB2YWxpZGF0b3JzPVsgSXBWYWxpZGF0b3IoKSBdLAotICAgICAgICBtYXhfbGVuZ3RoPTE1LAotICAgICAgICBkZWZhdWx0PScnLAotICAgICAgICBibGFuaz1UcnVlKQotICAgIAotICAgIHZycnBfaXAgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0xvY2FsIElQJywKLSAgICAgICAgaGVscF90ZXh0PScoTG9jYWwpIElQIEFkZHJlc3MgdG8gYWxsb3cgdHJhZmZpYyB0bycsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBJcFZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGg9MTUsCi0gICAgICAgIGRlZmF1bHQ9JycsCi0gICAgICAgIGJsYW5rPVRydWUpCi0gICAgCi0gICAgcG9ydCA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nUG9ydCBOdW1iZXInLAotICAgICAgICBoZWxwX3RleHQ9J1BvcnQgTnVtYmVyJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIFJhbmdlVmFsaWRhdG9yKDAsMioqMTYtMSkgXSwKLSAgICAgICAgZGVmYXVsdD0wLAotICAgICAgICBibGFuaz1UcnVlKQotICAgIAotICAgIHByb3RvID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSJpcCBwcm90byIsCi0gICAgICAgIGhlbHBfdGV4dD0iaXAgcHJvdG9jb2wgKHRjcCwgdWRwIG9yIHZycnApIiwgI1RPRE8gdmFsaWRhdG9yCi0gICAgICAgIHZhbGlkYXRvcnM9WyBVZndQcm90b2NvbFZhbGRpdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aD00LAotICAgICAgICBkZWZhdWx0PScnLAotICAgICAgICBibGFuaz1UcnVlKQotICAgIAotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgY2xhc3MgQ2Fzc2FuZHJhU2V0dGluZ3M6Ci0gICAgICAgIENPTVBPVU5EX0tFWV9GSUVMRFMgPSAoJ2ludGVyZmFjZScsICdzcmNfaXAnLCAndnJycF9pcCcsICdwb3J0JywgJ3Byb3RvJykKLSAgICAgICAgCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdmaXJld2FsbC1ydWxlJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgIHsnbmFtZSc6ICdzcmNfaXAnLCAncmVzdF9uYW1lJzogJ3NyYy1pcCd9LAotICAgICAgICAgICAgIHsnbmFtZSc6ICd2cnJwX2lwJywgJ3Jlc3RfbmFtZSc6ICd2cnJwLWlwJ30sCi0gICAgICAgICkKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgQ29udHJvbGxlckRvbWFpbk5hbWVTZXJ2ZXIobW9kZWxzLk1vZGVsKToKLSAgICAKLSAgICBjb250cm9sbGVyID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIENvbnRyb2xsZXIsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iQ29udHJvbGxlciBJRCIsCi0gICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgbnVsbD1UcnVlKQotICAgIAotICAgIGlwID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdJUCBBZGRyZXNzJywKLSAgICAgICAgaGVscF90ZXh0PSdJUCBBZGRyZXNzIG9mIGRvbWFpbiBuYW1lIHNlcnZlcicsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBJcFZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGg9MTUsCi0gICAgICAgIGRlZmF1bHQ9JycpCi0KLSAgICB0aW1lc3RhbXAgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J3RpbWVzdGFtcCcsCi0gICAgICAgIGhlbHBfdGV4dD0nVGltZXN0YW1wIHRvIGRldGVybWluZSBvcmRlciBvZiBkb21haW4gbmFtZSBzZXJ2ZXJzJywKLSAgICAgICAgZGVmYXVsdCA9IGdldF90aW1lc3RhbXAsCi0gICAgICAgIG51bGw9VHJ1ZSwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgKQotCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBjbGFzcyBDYXNzYW5kcmFTZXR0aW5nczoKLSAgICAgICAgQ09NUE9VTkRfS0VZX0ZJRUxEUyA9ICgnY29udHJvbGxlcicsICdpcCcpCi0gICAgICAgIAotICAgIGRlZiB2YWxpZGF0ZV91bmlxdWUoc2VsZiwgZXhjbHVkZSA9IE5vbmUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleGlzdHMgPSBDb250cm9sbGVyRG9tYWluTmFtZVNlcnZlci5vYmplY3RzLmdldChjb250cm9sbGVyID0gc2VsZi5jb250cm9sbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcCA9IHNlbGYuaXApCi0gICAgICAgICAgICBpZiBleGlzdHMudGltZXN0YW1wICE9IHNlbGYudGltZXN0YW1wOgotICAgICAgICAgICAgICAgIHByaW50ICdTSEFaQU0nLCBzZWxmLnRpbWVzdGFtcAotICAgICAgICAgICAgICAgIHNlbGYudGltZXN0YW1wID0gZXhpc3RzLnRpbWVzdGFtcAotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ2NvbnRyb2xsZXItZG9tYWluLW5hbWUtc2VydmVyJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgKQotIiIiCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBTd2l0Y2gobW9kZWxzLk1vZGVsKToKLSAgICBzd2l0Y2hfaWRfbGVuZ3RoID0gMjMKLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZHBpZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nU3dpdGNoIERQSUQnLAotICAgICAgICBoZWxwX3RleHQ9J1N3aXRjaCBEUElEIC0gNjQtYml0IGhleCBzZXBhcmF0ZWQgYnkgOicsCi0gICAgICAgIG1heF9sZW5ndGg9c3dpdGNoX2lkX2xlbmd0aCwgCi0gICAgICAgIHZhbGlkYXRvcnM9WyB2YWxpZGF0ZV9kcGlkIF0pCi0KLSAgICBjb250cm9sbGVyID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIENvbnRyb2xsZXIsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nQ29udHJvbGxlciBJRCcsCi0gICAgICAgIGJsYW5rPVRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIG51bGw9VHJ1ZSkKLSAgICAKLSAgICBzb2NrZXRfYWRkcmVzcyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nU29ja2V0IEFkZHJlc3MnLAotICAgICAgICBoZWxwX3RleHQ9J1NvY2tldCBhZGRyZXNzIHVzZWQgZm9yIGNvbm5lY3Rpb24gdG8gY29udHJvbGxlcicsCi0gICAgICAgIG1heF9sZW5ndGg9NjQsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLSAgICAKLSAgICBpcCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nSVAgQWRkcmVzcycsCi0gICAgICAgIGhlbHBfdGV4dD0nSVAgQWRkcmVzcyB1c2VkIGZvciBjb25uZWN0aW9uIGZyb20gY29udHJvbGxlcicsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBJcFZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGg9MTUsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIGFjdGl2ZSA9IG1vZGVscy5Cb29sZWFuRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nQWN0aXZlJywKLSAgICAgICAgaGVscF90ZXh0PSdTd2l0Y2ggaXMgYWN0aXZlIChpLmUuIGNvbm5lY3RlZCB0byBhIGNvbnRyb2xsZXIpJywKLSAgICAgICAgZGVmYXVsdD1GYWxzZSkKLQotICAgIGNvbm5lY3RlZF9zaW5jZSA9IG1vZGVscy5EYXRlVGltZUZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0xhc3QgQ29ubmVjdCBUaW1lJywKLSAgICAgICAgaGVscF90ZXh0PSdUaW1lIHdoZW4gdGhlIHN3aXRjaCBjb25uZWN0ZWQgdG8gdGhlIGNvbnRyb2xsZXInLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0gICAgCi0gICAgZHBfZGVzYyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRGVzY3JpcHRpb24nLAotICAgICAgICBtYXhfbGVuZ3RoPTI1NiwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotCi0gICAgaHdfZGVzYyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nSGFyZHdhcmUgRGVzY3JpcHRpb24nLAotICAgICAgICBtYXhfbGVuZ3RoPTI1NiwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotCi0gICAgc3dfZGVzYyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nU29mdHdhcmUgRGVzY3JpcHRpb24nLAotICAgICAgICBtYXhfbGVuZ3RoPTI1NiwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotCi0gICAgc2VyaWFsX251bSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nU2VyaWFsIE51bWJlcicsCi0gICAgICAgIG1heF9sZW5ndGg9MzIsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIGNhcGFiaWxpdGllcyA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nQ2FwYWJpbGl0aWVzJywKLSAgICAgICAgaGVscF90ZXh0PSdPcGVuZmxvdyBzd2l0Y2ggY2FwYWJpbGl0aWVzJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIFJhbmdlVmFsaWRhdG9yKDAsMioqMzItMSkgXSwKLSAgICAgICAgZGVmYXVsdD0wKQotCi0gICAgdHVubmVsaW5nX3N1cHBvcnRlZCA9IG1vZGVscy5Cb29sZWFuRmllbGQoCi0gICAgICAgIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICkKLQotICAgIGJ1ZmZlcnMgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J01heCBQYWNrZXRzJywKLSAgICAgICAgaGVscF90ZXh0PSdNYXhpbXVtIG51bWJlciBvZiBwYWNrZXRzIGJ1ZmZlcmVkIGJ5IHRoZSBzd2l0Y2gnLAotICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwyKiozMi0xKSBdLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0KLSAgICB0YWJsZXMgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J01heCBUYWJsZXMnLAotICAgICAgICBoZWxwX3RleHQ9J051bWJlciBvZiB0YWJsZXMgc3VwcG9ydGVkIGJ5IHRoZSBzd2l0Y2gnLAotICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwyKio4LTEpIF0sCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIGFjdGlvbnMgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0FjdGlvbnMnLAotICAgICAgICBoZWxwX3RleHQ9J0FjdGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBzd2l0Y2gnLAotICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwyKiozMi0xKSBdLAotICAgICAgICBkZWZhdWx0PTApCi0gICAgCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAjIExPT0shIHdlIHNob3VsZCBoYXZlIGFuIG9yaWdpbiBmaWVsZCB0byBkaXN0aW5ndWlzaAotICAgICMgYmV0d2VlbiB1c2VyLXNwZWNpZmllZCBzd2l0Y2hlcyBhbmQgJ2Rpc2NvdmVyZWQnIHN3aXRjaGVzCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiJXMiICUgc2VsZi5kcGlkCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3N3aXRjaCcKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICdzb2NrZXRfYWRkcmVzcycsICAgICdyZXN0X25hbWUnOiAnc29ja2V0LWFkZHJlc3MnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdpcCcsICAgICAgICAgICAgICAgICdyZXN0X25hbWUnOiAnaXAtYWRkcmVzcyd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2Nvbm5lY3RlZF9zaW5jZScsICAgJ3Jlc3RfbmFtZSc6ICdjb25uZWN0ZWQtc2luY2UnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdkcF9kZXNjJywgICAgICAgICAgICdyZXN0X25hbWUnOiAnZHAtZGVzYyd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2h3X2Rlc2MnLCAgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdody1kZXNjJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3dfZGVzYycsICAgICAgICAgICAncmVzdF9uYW1lJzogJ3N3LWRlc2MnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdzZXJpYWxfbnVtJywgICAgICAgICdyZXN0X25hbWUnOiAnc2VyaWFsLW51bSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3R1bm5lbGluZ19zdXBwb3J0ZWQnLCAncmVzdF9uYW1lJzogJ3R1bm5lbC1zdXBwb3J0ZWQnfSwKLSAgICAgICAgICAgICkKLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFN3aXRjaENvbmZpZwotIyAgQW55ICdjb25maWd1cmVkJyAobm9uLWRpc2NvdmVyZWQpIHN0YXRlIGFzc29jaWF0ZWQgd2l0aAotIyAgYSBzd2l0Y2guCi0jCi0jICB0dW5uZWxfdGVybWluYXRpb247IHdoZW4gZW5hYmxlZCwgdHVubmVscyBhcmUgY29uc3RydWN0ZWQKLSMgICB0byBhbnkgb3RoZXIgdHVubmVsX3Rlcm1pbmF0aW9uIHN3aXRjaCwgYnVpbGRpbmcgYSBtZXNoCi0jICAgb2Ygb3Blbi1mbG93IGVuYWJsZWQgc3dpdGNoZXMuICBUeXBpY2FsbCBVc2VkIGluIHZpcnR1YWxpemVkCi0jICAgZW52aXJvbm1lbnRzLCB3aGVyZSBvcGVuZmxvdyBzd2l0Y2hlcyBhcmUgbm90IGludGVuZGVkIHRvCi0jICAgZXhpc3QgaW4gdGhlIHBhdGguCi0jCi0KLWNsYXNzIFN3aXRjaENvbmZpZyhtb2RlbHMuTW9kZWwpOgotICAgIHN3aXRjaF9pZF9sZW5ndGggPSAyMwotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkcGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgcHJpbWFyeV9rZXk9VHJ1ZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTd2l0Y2ggRFBJRCcsCi0gICAgICAgIGhlbHBfdGV4dD0nU3dpdGNoIERQSUQgLSA2NC1iaXQgaGV4IHNlcGFyYXRlZCBieSA6JywKLSAgICAgICAgbWF4X2xlbmd0aD1zd2l0Y2hfaWRfbGVuZ3RoLCAKLSAgICAgICAgdmFsaWRhdG9ycz1bIHZhbGlkYXRlX2RwaWQgXSkKLQotICAgIGNvcmVfc3dpdGNoID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgaGVscF90ZXh0PSdJZGVudGlmeSBjb3JlIHN3aXRjaGVzJwotICAgICAgICApCi0KLSAgICB0dW5uZWxfdGVybWluYXRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1R1bm5lbCBUZXJtaW5hdGlvbicsCi0gICAgICAgIGhlbHBfdGV4dD0nVHVubmVsIFRlcm1pbmF0aW9uICgiZW5hYmxlZCIgImRpc2FibGVkIiAiZGVmYXVsdCIpJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIEVudW1lcmF0aW9uVmFsaWRhdG9yKCgnZW5hYmxlZCcsICdkaXNhYmxlZCcsICdkZWZhdWx0JykpXSwKLSAgICAgICAgZGVmYXVsdCA9ICdkZWZhdWx0JywKLSAgICAgICAgbWF4X2xlbmd0aD0xNikKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLSAgICBkZWYgdmFsaWRhdGVfdW5pcXVlKHNlbGYsIGV4Y2x1ZGUgPSBOb25lKToKLSAgICAgICAgc2VsZi5kcGlkID0gc2VsZi5kcGlkLmxvd2VyKCkKLQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAnc3dpdGNoLWNvbmZpZycKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICd0dW5uZWxfdGVybWluYXRpb24nLCAncmVzdF9uYW1lJzogJ3R1bm5lbC10ZXJtaW5hdGlvbid9LAotICAgICAgICAgICAgeyduYW1lJzogJ2NvcmVfc3dpdGNoJywgICAgICAgJ3Jlc3RfbmFtZSc6ICdjb3JlLXN3aXRjaCd9LAotICAgICAgICAgICAgKQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBTd2l0Y2hBbGlhcyhtb2RlbHMuTW9kZWwpOgotICAgIAotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBpZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIG1heF9sZW5ndGg9MjU1LAotICAgICAgICBoZWxwX3RleHQgPSAiYWxpYXMgZm9yIHN3aXRjaCIsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nYWxpYXMnLAotICAgICAgICB2YWxpZGF0b3JzPVtTd2l0Y2hBbGlhc1ZhbGlkYXRvcigpXSkKLSAgICAKLSAgICBzd2l0Y2ggPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgU3dpdGNoQ29uZmlnLAotICAgICAgICB2ZXJib3NlX25hbWU9J1N3aXRjaCBEUElEJykKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdzd2l0Y2gtYWxpYXMnCi0KLSIiIgotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgUG9ydChtb2RlbHMuTW9kZWwpOgotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIwotICAgICMgVGhpcyB0YWJsZSBpc24ndCBpbnRlbmRlZCB0byBiZSB1cGRhdGVkIHZpYSB0aGUgcmVzdCBhcGksCi0gICAgIyAgc2RucGxhdGZvcm0gd3JpdGVzIHRoZSB0YWJsZSB0byBkZXNjcmliZSBhIHN3aXRjaC4KLSAgICAjCi0gICAgIyBUaGUgJ251bWJlcicgaW4gdGhlIHBvcnQgbW9kZWwgaXMgdGhlIG9wZW5mbG93IHBvcnQgbnVtYmVyLAotICAgICMgIHdoaWNoIGlzIGEgdmFsdWUgdXNlZCBpbiBzZXR0aW5nIHVwIGZsb3cgZW50cmllcy4gIFRoaXMgaXMKLSAgICAjICBub3QgYW4gaW50ZXJmYWNlIG5hbWU7ICB0aGUgJ2ludGVyZmFjZSBuYW1lJyBpcyB0aGUgJ25hbWUnCi0gICAgIyAgZmllbGQgYmVsb3cuICBUaGlzIHRhYmxlIHByb3ZpZGVzIGEgbWFwcGluZyBmcm9tIHRoZSBzd2l0Y2gKLSAgICAjICBkcGlkIGFuZCBwb3J0IG51bWJlciB0byBhbiAnaW50ZXJmYWNlIG5hbWUnLgotICAgICMKLSAgICAjIFNpbmNlIGludGVyZmFjZSBuYW1lcyBjYW4gYmUgY29uZmlndXJlZCBvbiBkZW1hbmQgYnkgdGhlCi0gICAgIyAgc3dpdGNoLCBmb3IgZXhhbXBsZSB0byBuYW1lIGEgdHVubmVsLCBpdHMgbm90IGVhc3kgdG8KLSAgICAjICAiZ3Vlc3MiIGludGVyZmFjZSBuYW1lcyB3aXRob3V0IHRoZSBzd2l0Y2ggcmVwb3J0aW5nIAotICAgICMgIHdoYXQgaW50ZXJmYWNlIG5hbWVzIGV4aXN0LiAgVGhpcyBsZWFkcyB0byBkaWZmaWN1bHR5Ci0gICAgIyAgaW4gcHJlY29uZmlndXJpbmcgYW55IGFzc29jaWF0aW9ucyB3aXRoIDxzd2l0Y2gsIGludGVyZmFjZSBuYW1lPgotICAgICMKLQotICAgICMgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBwb3J0Ci0gICAgIyBjb21iaW5hdGlvbiBvZiB0aGUgc3dpdGNoIERQSUQgYW5kIHRoZSBwb3J0IG51bWJlcgotICAgIGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgcHJpbWFyeV9rZXk9VHJ1ZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdQb3J0IElEJywKLSAgICAgICAgaGVscF90ZXh0ID0gJyN8c3dpdGNofG51bWJlcicsCi0gICAgICAgIG1heF9sZW5ndGg9NDgpCi0gICAgCi0gICAgc3dpdGNoID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIFN3aXRjaCwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTd2l0Y2ggRFBJRCcpCi0KLSAgICBudW1iZXIgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J09GICMnLAotICAgICAgICBoZWxwX3RleHQ9IlBvcnQgb3BlbiBmbG93IG51bWJlciIsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBSYW5nZVZhbGlkYXRvcigwLDIqKjE2LTEpIF0pCi0gICAgCi0gICAgaGFyZHdhcmVfYWRkcmVzcyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iTUFDIEFkZHJlc3MiLAotICAgICAgICBoZWxwX3RleHQ9IlBvcnQgTUFDIEFkZHJlc3MiLAotICAgICAgICBtYXhfbGVuZ3RoPTE3LCAKLSAgICAgICAgdmFsaWRhdG9ycyA9IFt2YWxpZGF0ZV9tYWNfYWRkcmVzc10sCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLSAgICAKLSAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdOYW1lJywKLSAgICAgICAgaGVscF90ZXh0PSJQb3J0IG5hbWUiLAotICAgICAgICBtYXhfbGVuZ3RoPTMyLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0KLSAgICBjb25maWcgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0NvbmZpZ3VyYXRpb24nLAotICAgICAgICBoZWxwX3RleHQ9J0NvbmZpZ3VyYXRpb24gRmxhZ3MnLAotICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwyKiozMi0xKSBdLAotICAgICAgICBkZWZhdWx0PTApCi0KLSAgICBzdGF0ZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iU3RhdGUiLAotICAgICAgICBoZWxwX3RleHQ9IlN0YXRlIEZsYWdzIiwKLSAgICAgICAgdmFsaWRhdG9ycz1bIFJhbmdlVmFsaWRhdG9yKDAsMioqMzItMSkgXSwKLSAgICAgICAgZGVmYXVsdD0wKQotICAgIAotICAgIGN1cnJlbnRfZmVhdHVyZXMgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0N1cnJlbnQnLAotICAgICAgICBoZWxwX3RleHQ9J0N1cnJlbnQgRmVhdHVyZXMnLAotICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwyKiozMi0xKSBdLAotICAgICAgICBkZWZhdWx0PTApCi0KLSAgICBhZHZlcnRpc2VkX2ZlYXR1cmVzID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdBZHZlcnRpc2VkJywKLSAgICAgICAgaGVscF90ZXh0PSdBZHZlcnRpc2VkIEZlYXR1cmVzJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIFJhbmdlVmFsaWRhdG9yKDAsMioqMzItMSkgXSwKLSAgICAgICAgZGVmYXVsdD0wKQotCi0gICAgc3VwcG9ydGVkX2ZlYXR1cmVzID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTdXBwb3J0ZWQnLAotICAgICAgICBoZWxwX3RleHQ9J1N1cHBvcnRlZCBGZWF0dXJlcycsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBSYW5nZVZhbGlkYXRvcigwLDIqKjMyLTEpIF0sCi0gICAgICAgIGRlZmF1bHQ9MCkKLQotICAgIHBlZXJfZmVhdHVyZXMgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1BlZXInLAotICAgICAgICBoZWxwX3RleHQ9J1BlZXIgRmVhdHVyZXMnLAotICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwyKiozMi0xKSBdLAotICAgICAgICBkZWZhdWx0PTApCi0KLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICIlcyIgJSAoc2VsZi5pZCwpCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3BvcnQnCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICAgICB7J25hbWUnOiAnaGFyZHdhcmVfYWRkcmVzcycsICAgICAncmVzdF9uYW1lJzogJ2hhcmR3YXJlLWFkZHJlc3MnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdjdXJyZW50X2ZlYXR1cmVzJywgICAgICdyZXN0X25hbWUnOiAnY3VycmVudC1mZWF0dXJlcyd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2FkdmVydGlzZWRfZmVhdHVyZXMnLCAgJ3Jlc3RfbmFtZSc6ICdhZHZlcnRpc2VkLWZlYXR1cmVzJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3VwcG9ydGVkX2ZlYXR1cmVzJywgICAncmVzdF9uYW1lJzogJ3N1cHBvcnRlZC1mZWF0dXJlcyd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3BlZXJfZmVhdHVyZXMnLCAgICAgICAgJ3Jlc3RfbmFtZSc6ICdwZWVyLWZlYXR1cmVzJ30sCi0gICAgICAgICAgICApCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIFBvcnRBbGlhcyhtb2RlbHMuTW9kZWwpOgotICAgIAotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBpZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIG1heF9sZW5ndGg9MjU1LAotICAgICAgICBoZWxwX3RleHQgPSAiYWxpYXMgZm9yIHBvcnQiLAotICAgICAgICB2ZXJib3NlX25hbWU9J2FsaWFzJywKLSAgICAgICAgdmFsaWRhdG9ycz1bUG9ydEFsaWFzVmFsaWRhdG9yKCldKQotICAgIAotICAgIHBvcnQgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgUG9ydCwKLSAgICAgICAgaGVscF90ZXh0ID0gImZvcmVpZ24ga2V5IGZvciBwb3J0IGFsaWFzIiwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdQb3J0IElEJykKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdwb3J0LWFsaWFzJwotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgU3dpdGNoSW50ZXJmYWNlQ29uZmlnKG1vZGVscy5Nb2RlbCk6Ci0gICAgaWZfbmFtZV9sZW4gPSAzMgotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBzd2l0Y2ggPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgU3dpdGNoQ29uZmlnLAotICAgICAgICB2ZXJib3NlX25hbWU9J1N3aXRjaCcpCi0KLSAgICBpZl9uYW1lID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdJZiBOYW1lJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIFNhZmVGb3JQcmltYXJ5S2V5VmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aD0zMikKLQotICAgIG1vZGUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J01vZGUnLAotICAgICAgICBoZWxwX3RleHQ9J0ludGVyZmFjZSBNb2RlICgiZXh0ZXJuYWwiLCAiZGVmYXVsdCIpJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIEVudW1lcmF0aW9uVmFsaWRhdG9yKCgnZXh0ZXJuYWwnLCdkZWZhdWx0JykpXSwKLSAgICAgICAgbWF4X2xlbmd0aD0zMiwKLSAgICAgICAgZGVmYXVsdD0nZGVmYXVsdCcpCi0gICAgCi0gICAgYnJvYWRjYXN0ID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdCcm9hZGNhc3QnLAotICAgICAgICBoZWxwX3RleHQ9J1RydWUgd2hlbiBpbnRlcmZhY2VzIGlzIGFuIHVwbGluayB0byBhIGxlZ2FjeSBuZXQnLAotICAgICAgICApCi0KLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICIlcyIgJSAoc2VsZi5pZCkKLQotICAgIGNsYXNzIENhc3NhbmRyYVNldHRpbmdzOgotICAgICAgICBDT01QT1VORF9LRVlfRklFTERTID0gKCdzd2l0Y2gnLCAnaWZfbmFtZScpCi0KLSAgICBkZWYgdmFsaWRhdGVfdW5pcXVlKHNlbGYsIGV4Y2x1ZGUgPSBOb25lKToKLSAgICAgICAgc2VsZi5icm9hZGNhc3QgPSBGYWxzZQotICAgICAgICBpZiBzZWxmLm1vZGUgPT0gJ2V4dGVybmFsJzoKLSAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0ID0gVHJ1ZQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdzd2l0Y2gtaW50ZXJmYWNlLWNvbmZpZycKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgICMgQnkgdXNpbmcgJ25hbWUnIGhlcmUsIHRoZSAnbmFtZScgZnJvbSB0aGUgcG9ydCBpcyBpZGVudGlmaWVkCi0gICAgICAgICAgICAjICBpbiB0aGUgY29tcGxldGUtZnJvbS1hbm90aGVyIHByb2NlZHVyZQotICAgICAgICAgICAgeyduYW1lJzogJ2lmX25hbWUnLCAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ25hbWUnfSwKLSAgICAgICAgICAgICkKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBTd2l0Y2hJbnRlcmZhY2VBbGlhcyhtb2RlbHMuTW9kZWwpOgotICAgIHN3aXRjaF9pbnRlcmZhY2VfYWxpYXNfbGVuZ3RoID0gMjU1Ci0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgcHJpbWFyeV9rZXkgPSBUcnVlLAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnU3dpdGNoIEludGVyZmFjZSBBbGlhcycsCi0gICAgICAgIGhlbHBfdGV4dCA9ICdhbGlhcycsCi0gICAgICAgIG1heF9sZW5ndGggPSBzd2l0Y2hfaW50ZXJmYWNlX2FsaWFzX2xlbmd0aCwKLSAgICAgICAgdmFsaWRhdG9ycz1bSG9zdEFsaWFzVmFsaWRhdG9yKCldKQotCi0gICAgc3dpdGNoX2ludGVyZmFjZSA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBTd2l0Y2hJbnRlcmZhY2VDb25maWcsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nU3dpdGNoIEludGVyZmFjZScsCi0gICAgICAgICkKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdzd2l0Y2gtaW50ZXJmYWNlLWFsaWFzJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgeyduYW1lJzogJ3N3aXRjaF9pbnRlcmZhY2UnLCAncmVzdF9uYW1lJzogJ3N3aXRjaC1pbnRlcmZhY2UnfSwKLSAgICAgICAgKQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgU3RhdGljRmxvd1RhYmxlRW50cnkobW9kZWxzLk1vZGVsKToKLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nTmFtZScsIAotICAgICAgICBtYXhfbGVuZ3RoPTgwKQotCi0gICAgc3dpdGNoID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIFN3aXRjaENvbmZpZywgCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iU3dpdGNoIERQSUQiKQotCi0gICAgYWN0aXZlID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgZGVmYXVsdD1GYWxzZSkKLSAgICAKLSAgICAjIExPT0shIHdlIHNob3VsZCBoaWRlIHRoZSB0aW1lb3V0IHZhbHVlcyBmb3Igc3RhdGljIGZsb3cgZW50cnkKLSAgICAjIGRlZmluaXRpb24gYXMgdGhleSBhcmUgb3ZlcndyaXR0ZW4gKHVubGVzcyB3ZSBhbGxvdyB0aGVzZSB0bwotICAgICMgb3ZlcndyaXRlIHRoZSBkZWZhdWx0IHRoYXQgc3RhdGljIGZsb3cgcHVzaGVyIHVzZXMpCi0gICAgaWRsZV90aW1lb3V0ID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSJJZGxlIFRpbWVvdXQiLCAKLSAgICAgICAgaGVscF90ZXh0PSJFeHBpcmUgZmxvdyBhZnRlciB0aGlzIG1hbnkgc2Vjb25kcyBvZiBpbmFjdGl2aXR5IC0gZGVmYXVsdDogNjAiLAotICAgICAgICBkZWZhdWx0PTYwLAotICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwgMioqMTYtMSkgXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIGhhcmRfdGltZW91dCA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iSGFyZCBUaW1lb3V0IiwKLSAgICAgICAgaGVscF90ZXh0PSJTZWNvbmRzIHRvIGV4cGlyZSBmbG93LCByZWdhcmRsZXNzIG9mIGFjdGl2aXR5IC0gZGVmYXVsdDogMCIsCi0gICAgICAgIGRlZmF1bHQ9MCwKLSAgICAgICAgdmFsaWRhdG9ycz1bIFJhbmdlVmFsaWRhdG9yKDAsIDIqKjE2LTEpIF0pCi0KLSAgICBwcmlvcml0eSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iUHJpb3JpdHkiLCAKLSAgICAgICAgaGVscF90ZXh0PSJQcmlvcml0eSBvZiB0aGUgZmxvdyBlbnRyeSIsCi0gICAgICAgIGRlZmF1bHQ9MzI3NjgsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBSYW5nZVZhbGlkYXRvcigwLCAyKioxNi0xKSBdKQotCi0gICAgY29va2llID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSJDb29raWUiLAotICAgICAgICBkZWZhdWx0PTApICMgNjQtYml0Ci0KLSAgICAjCi0gICAgIyBtYXRjaCBmaWVsZHMKLSAgICAjCi0KLSAgICAjIExPT0shIE5lZWQgYSBmaWxlIG9mIHB5dGhvbiBvcGVuZmxvdyBjb25zdGFudHMgCi0KLSAgICAjIExPT0shIHdlIHNob3VsZCBoaWRlIHRoaXMgYWxzbyBvciBhdCBsZWFzdAotICAgICMgICAgICAgZm9yIHN0YXRpYyBmbG93IGVudHJpZXMgc2F5IGl0IGlzIGlnbm9yZWQKLSAgICB3aWxkY2FyZHMgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9IldpbGRjYXJkcyIsCi0gICAgICAgIGRlZmF1bHQ9MCwKLSAgICAgICAgdmFsaWRhdG9ycz1bIFJhbmdlVmFsaWRhdG9yKDAsMioqMzItMSkgXSkKLQotICAgIGluX3BvcnQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICAgICAgdmVyYm9zZV9uYW1lPSJJbmdyZXNzIFBvcnQiLCAKLSAgICAgICAgICAgIGJsYW5rPVRydWUsIAotICAgICAgICAgICAgaGVscF90ZXh0PSJPcGVuIGZsb3cgcG9ydCBudW1iZXIgb2YgaW5ncmVzcyBwb3J0IiwKLSAgICAgICAgICAgIG51bGw9VHJ1ZSwgCi0gICAgICAgICAgICB2YWxpZGF0b3JzID0gWyBSYW5nZVZhbGlkYXRvcigwLCAyKioxNi0xKSBdICkgCi0KLSAgICBkbF9zcmMgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICAgICAgdmVyYm9zZV9uYW1lPSJTcmMgTUFDIiwgCi0gICAgICAgICAgICBoZWxwX3RleHQ9IlRoaXMgaXMgYSA0OC1iaXQgcXVhbnRpdHkgc3BlY2lmaWVkIGluIHh4Onh4Onh4Onh4Onh4Onh4IGZvcm1hdCIsIAotICAgICAgICAgICAgbWF4X2xlbmd0aD0xNywgCi0gICAgICAgICAgICBibGFuaz1UcnVlLCAKLSAgICAgICAgICAgIG51bGw9VHJ1ZSwKLSAgICAgICAgICAgIHZhbGlkYXRvcnMgPSBbIHZhbGlkYXRlX21hY19hZGRyZXNzIF0gKQotCi0gICAgZGxfZHN0ID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgICAgIHZlcmJvc2VfbmFtZT0iRHN0IE1BQyIsIAotICAgICAgICAgICAgaGVscF90ZXh0PSJEZXN0aW5hdGlvbiBNQUMgYWRkcmVzcyBpbiB0aGUgZnJhbWVzIiwKLSAgICAgICAgICAgIG1heF9sZW5ndGg9MTcsIAotICAgICAgICAgICAgYmxhbms9VHJ1ZSwgCi0gICAgICAgICAgICBudWxsPVRydWUsIAotICAgICAgICAgICAgdmFsaWRhdG9ycyA9IFsgdmFsaWRhdGVfbWFjX2FkZHJlc3MgXSApCi0KLSAgICBkbF92bGFuID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgICAgIHZlcmJvc2VfbmFtZT0iVkxBTiBJRCIsCi0gICAgICAgICAgICBoZWxwX3RleHQ9IlZMQU4gSUQgaW4gdGhlIGZyYW1lcyIsCi0gICAgICAgICAgICBibGFuaz1UcnVlLCAKLSAgICAgICAgICAgIG51bGw9VHJ1ZSwgCi0gICAgICAgICAgICB2YWxpZGF0b3JzID0gWyBSYW5nZVZhbGlkYXRvcigwLCAyKioxMi0xKSBdKSAKLQotICAgIGRsX3ZsYW5fcGNwID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgICAgIHZlcmJvc2VfbmFtZT0iVkxBTiBQcmlvcml0eSIsIAotICAgICAgICAgICAgaGVscF90ZXh0PSJWTEFOIElEIGluIHRoZSBmcmFtZXMiLAotICAgICAgICAgICAgYmxhbms9VHJ1ZSwgCi0gICAgICAgICAgICBudWxsPVRydWUsIAotICAgICAgICAgICAgdmFsaWRhdG9ycyA9IFsgUmFuZ2VWYWxpZGF0b3IoMCwgMioqMy0xKSBdKSAKLQotICAgIGRsX3R5cGUgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICAgICAgdmVyYm9zZV9uYW1lPSJFdGhlciBUeXBlIiwgCi0gICAgICAgICAgICBoZWxwX3RleHQ9IkV0aGVyKEwzKSB0eXBlIiwKLSAgICAgICAgICAgIGJsYW5rPVRydWUsIAotICAgICAgICAgICAgbnVsbD1UcnVlLCAKLSAgICAgICAgICAgIHZhbGlkYXRvcnMgPSBbIFJhbmdlVmFsaWRhdG9yKDAsIDIqKjE2LTEpIF0pIAotCi0gICAgbndfdG9zID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgICAgIHZlcmJvc2VfbmFtZT0iVE9TIEJpdHMiLAotICAgICAgICAgICAgaGVscF90ZXh0PSJUT1MgYml0cyBpbiB0aGUgZnJhbWUiLAotICAgICAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgICAgIG51bGw9VHJ1ZSwKLSAgICAgICAgICAgIHZhbGlkYXRvcnMgPSBbIFJhbmdlVmFsaWRhdG9yKDAsIDIqKjYtMSkgXSkgIyA2LWJpdCBEU0NQIHZhbHVlCi0KLSAgICBud19wcm90byA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgICAgICB2ZXJib3NlX25hbWU9IlByb3RvY29sIiwgCi0gICAgICAgICAgICBoZWxwX3RleHQ9IklQIChMNCkgcHJvdG9jb2wgaW4gdGhlIHBhY2tldHMiLAotICAgICAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgICAgIG51bGw9VHJ1ZSwgCi0gICAgICAgICAgICB2YWxpZGF0b3JzID0gWyBSYW5nZVZhbGlkYXRvcigwLCAyKio4LTEpIF0pIAotCi0gICAgbndfc3JjID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgICAgIHZlcmJvc2VfbmFtZT0iU3JjIElQIiwgCi0gICAgICAgICAgICBoZWxwX3RleHQ9IklQIHY0IHNvdXJjZSBhZGRyZXNzIGluIGRvdHRlZCBkZWNpbWFsIGEuYi5jLmQgdy8gb3B0aW9uYWwgbWFzayAoZXg6IC8yNCkiLCAKLSAgICAgICAgICAgIG1heF9sZW5ndGg9MTgsCi0gICAgICAgICAgICB2YWxpZGF0b3JzID0gWyBDaWRyVmFsaWRhdG9yKG1hc2tfcmVxdWlyZWQ9RmFsc2UpIF0sCi0gICAgICAgICAgICBibGFuaz1UcnVlLCAKLSAgICAgICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIG53X2RzdCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgICAgICB2ZXJib3NlX25hbWU9IkRzdCBJUCIsIAotICAgICAgICAgICAgaGVscF90ZXh0PSJJUCB2NCBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIGRvdHRlZCBkZWNpbWFsIGEuYi5jLmQgdy8gb3B0aW9uYWwgbWFzayAoZXg6IC8yNCkiLCAKLSAgICAgICAgICAgIHZhbGlkYXRvcnM9WyBDaWRyVmFsaWRhdG9yKG1hc2tfcmVxdWlyZWQ9RmFsc2UpIF0sCi0gICAgICAgICAgICBtYXhfbGVuZ3RoPTE4LAotICAgICAgICAgICAgYmxhbms9VHJ1ZSwgCi0gICAgICAgICAgICBudWxsPVRydWUgKQotCi0gICAgdHBfc3JjID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgICAgIHZlcmJvc2VfbmFtZT0iU3JjIFBvcnQiLCAKLSAgICAgICAgICAgIGhlbHBfdGV4dD0iU291cmNlIChUQ1AvVURQKSBwb3J0IiwKLSAgICAgICAgICAgIGJsYW5rPVRydWUsIAotICAgICAgICAgICAgbnVsbD1UcnVlLAotICAgICAgICAgICAgdmFsaWRhdG9ycz1bIFJhbmdlVmFsaWRhdG9yKDAsIDIqKjE2LTEpIF0pCi0KLSAgICB0cF9kc3QgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICAgICAgdmVyYm9zZV9uYW1lPSJEc3QgUG9ydCIsIAotICAgICAgICAgICAgaGVscF90ZXh0PSJEZXN0aW5hdGlvbiAoVENQL1VEUCkgcG9ydCIsCi0gICAgICAgICAgICBibGFuaz1UcnVlLCAKLSAgICAgICAgICAgIG51bGw9VHJ1ZSwgCi0gICAgICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwgMioqMTYtMSkgXSkKLQotICAgICMgTE9PSyEgaGF2ZSB0byBmaWd1cmUgb3V0IGhvdyB0byBleHBvc2UgYWN0aW9ucyBpbiB0aGUgQ0xJIC0gdGhpcyBpcyB1Z2x5L2JyaXR0bGUKLSAgICBhY3Rpb25zID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgICAgIHZlcmJvc2VfbmFtZSA9ICJBY3Rpb25zIiwKLSAgICAgICAgICAgIGhlbHBfdGV4dD0iVGhpcyBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGFjdGlvbnMgLSBhIGxhIGRwY3RsIiwgCi0gICAgICAgICAgICBtYXhfbGVuZ3RoPTEwMjQsIAotICAgICAgICAgICAgYmxhbms9VHJ1ZSwgCi0gICAgICAgICAgICBudWxsPVRydWUpCi0KLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYubmFtZQotCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ2Zsb3ctZW50cnknCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICAgICB7J25hbWUnOiAnaWRsZV90aW1lb3V0JywgICAgJ3Jlc3RfbmFtZSc6ICdpZGxlLXRpbWVvdXQnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdoYXJkX3RpbWVvdXQnLCAgICAncmVzdF9uYW1lJzogJ2hhcmQtdGltZW91dCd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2luX3BvcnQnLCAgICAgICAgICdyZXN0X25hbWUnOiAnaW5ncmVzcy1wb3J0J30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZGxfc3JjJywgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdzcmMtbWFjJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZGxfZHN0JywgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdkc3QtbWFjJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZGxfdmxhbicsICAgICAgICAgJ3Jlc3RfbmFtZSc6ICd2bGFuLWlkJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZGxfdmxhbl9wY3AnLCAgICAgJ3Jlc3RfbmFtZSc6ICd2bGFuLXByaW9yaXR5J30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZGxfdHlwZScsICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdldGhlci10eXBlJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnbndfdG9zJywgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICd0b3MtYml0cyd9LAotICAgICAgICAgICAgeyduYW1lJzogJ253X3Byb3RvJywgICAgICAgICdyZXN0X25hbWUnOiAncHJvdG9jb2wnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdud19zcmMnLCAgICAgICAgICAncmVzdF9uYW1lJzogJ3NyYy1pcCd9LAotICAgICAgICAgICAgeyduYW1lJzogJ253X2RzdCcsICAgICAgICAgICdyZXN0X25hbWUnOiAnZHN0LWlwJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAndHBfc3JjJywgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdzcmMtcG9ydCd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3RwX2RzdCcsICAgICAgICAgICdyZXN0X25hbWUnOiAnZHN0LXBvcnQnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdhY3Rpb25zJywgICAgICAgICAncmVzdF9uYW1lJzogJ2FjdGlvbnMnfSwKLSAgICAgICAgICAgICkKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgTGluayhtb2RlbHMuTW9kZWwpOgotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBpZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nTGluayBJRCcsCi0gICAgICAgIG1heF9sZW5ndGg9NjQpCi0gICAgCi0gICAgc3JjX3N3aXRjaCA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBTd2l0Y2gsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nU3JjIFN3aXRjaCBEUElEJywKLSAgICAgICAgcmVsYXRlZF9uYW1lPSdzcmNfbGlua19zZXQnKQotICAgICNzcmNfc3dpdGNoX2lkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAjICAgIHZlcmJvc2VfbmFtZT0nU3JjIFN3aXRjaCBJRCcsCi0gICAgIyAgICBtYXhfbGVuZ3RoPTMyKQotICAgIAotICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J05hbWUnLAotICAgICAgICBoZWxwX3RleHQ9IkxpbmsgbmFtZSIsCi0gICAgICAgIG1heF9sZW5ndGg9MzIsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLSAgICAKLSAgICBzcmNfcG9ydCA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iU3JjIFBvcnQiLAotICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwgMioqMTYtMSkgXSkKLQotICAgIHNyY19wb3J0X3N0YXRlID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSJTcmMgUG9ydCBTdGF0ZSIsCi0gICAgICAgIGhlbHBfdGV4dD0iU291cmNlIFBvcnQgU3RhdGUgRmxhZ3MiLAotICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwyKiozMi0xKSBdLAotICAgICAgICBkZWZhdWx0PTApCi0KLSAgICBkc3Rfc3dpdGNoID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIFN3aXRjaCwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdEc3QgU3dpdGNoIERQSUQnLAotICAgICAgICByZWxhdGVkX25hbWU9J2RzdF9saW5rX3NldCcpCi0gICAgI2RzdF9zd2l0Y2hfaWQgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICMgICAgdmVyYm9zZV9uYW1lPSdEc3QgU3dpdGNoIElEJywKLSAgICAjICAgIG1heF9sZW5ndGg9MzIpCi0gICAKLSAgICBkc3RfcG9ydCA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iRHN0IFBvcnQiLAotICAgICAgICBoZWxwX3RleHQ9IkRlc3RpbmF0aW9uIFBvcnQiLAotICAgICAgICB2YWxpZGF0b3JzPVsgUmFuZ2VWYWxpZGF0b3IoMCwgMioqMTYtMSkgXSkKLQotICAgIGRzdF9wb3J0X3N0YXRlID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSJEc3QgUG9ydCBTdGF0ZSIsCi0gICAgICAgIGhlbHBfdGV4dD0iRGVzdGluYXRpb24gUG9ydCBTdGF0ZSBGbGFncyIsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBSYW5nZVZhbGlkYXRvcigwLDIqKjMyLTEpIF0sCi0gICAgICAgIGRlZmF1bHQ9MCkKLQotICAgIGxpbmtfdHlwZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZV9uYW1lPSdMaW5rIFR5cGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dD0iTGluayB0eXBlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPTEwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbD1UcnVlKQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiVzIiAlIHNlbGYuaWQKLQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAnbGluaycKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICdzcmNfc3dpdGNoJywgICAgICAncmVzdF9uYW1lJzogJ3NyYy1zd2l0Y2gnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdzcmNfcG9ydCcsICAgICAgICAncmVzdF9uYW1lJzogJ3NyYy1wb3J0J30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3JjX3BvcnRfc3RhdGUnLCAgJ3Jlc3RfbmFtZSc6ICdzcmMtcG9ydC1zdGF0ZSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2RzdF9zd2l0Y2gnLCAgICAgICdyZXN0X25hbWUnOiAnZHN0LXN3aXRjaCd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2RzdF9wb3J0JywgICAgICAgICdyZXN0X25hbWUnOiAnZHN0LXBvcnQnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdkc3RfcG9ydF9zdGF0ZScsICAncmVzdF9uYW1lJzogJ2RzdC1wb3J0LXN0YXRlJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnbGlua190eXBlJywgICAgICAgJ3Jlc3RfbmFtZSc6ICdsaW5rLXR5cGUnfQotICAgICAgICAgICAgKQotICAgICAgICAgICAgCi0iIiIKLSIiIgotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQW4gYWRkcmVzcy1zcGFjZSBzZXBhcmF0aW9uCi0KLWNsYXNzIEFkZHJlc3NTcGFjZSAobW9kZWxzLk1vZGVsKToKLQotICAgIGlkX21heF9sZW5ndGggPSA2NAotCi0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgICMKLSAgICAjIFVuaXF1ZSBuYW1lIG9mIHRoZSBhZGRyZXNzLXNwYWNlCi0gICAgIwotICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBwcmltYXJ5X2tleSAgPSBUcnVlLAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnQWRkcmVzcyBTcGFjZSBOYW1lJywKLSAgICAgICAgaGVscF90ZXh0ICAgID0gJ0EgdW5pcXVlIG5hbWUgZm9yIGFuIEFkZHJlc3MgU3BhY2UgU2VwZXJhdGlvbicsCi0gICAgICAgIHZhbGlkYXRvcnMgICA9IFsgQWRkcmVzc1NwYWNlTmFtZVZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGggICA9IGlkX21heF9sZW5ndGgpCi0KLSAgICAjCi0gICAgIyBWZXJib3NlIGRlc2NyaXB0aW9uIG9mIHRoaXMgcnVsZS4KLSAgICAjCi0gICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnRGVzY3JpcHRpb24nLAotICAgICAgICBoZWxwX3RleHQgICAgPSAiRGVzY3JpcHRpb24gb2YgdGhlIGFkZHJlc3Mtc3BhY2UiLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSAxMjgsCi0gICAgICAgIGJsYW5rICAgICAgICA9IFRydWUsCi0gICAgICAgIG51bGwgICAgICAgICA9IFRydWUpCi0gICAKLSAgICAjCi0gICAgIyBXaGV0aGVyIHRoZSBjb25maWd1cmF0aW9uIGlzIGFjdGl2ZSA/IEJ5IGRlZmF1bHQsIGl0IGlzIGFjdGl2ZQotICAgICMgVXNlZCB0byBkaXNhYmxlIHRoZSBjb25maWd1cmF0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIGRlbGV0ZSB0aGUgZW50aXJlCi0gICAgIyBhZGRyZXNzLXNwYWNlIGNvbmZpZ3VyYXRpb24gY29uc3RydWN0LgotICAgICMKLSAgICBhY3RpdmUgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnQWN0aXZlJywKLSAgICAgICAgaGVscF90ZXh0ICAgID0gJ0lzIHRoaXMgQWRkcmVzcyBTcGFjZSBhY3RpdmUgKGRlZmF1bHQgaXMgVHJ1ZSknLAotICAgICAgICBkZWZhdWx0ICAgICAgPSBUcnVlKQotCi0gICAgIwotICAgICMgUHJpb3JpdHkgb2YgdGhpcyBhZGRyZXNzLXNwYWNlIGR1cmluZyBkZXZpY2UgbWF0Y2hpbmcgd2hlbgotICAgICMgY29tcGFyZWQgdG8gb3RoZXIgYWRkcmVzcy1zcGFjZXMuIFRob3NlIGF0IHRoZSBzYW1lIHByaW9yaXR5Ci0gICAgIyBhcmUgdXNlZCBpbiBhIGRldGVybWluaXNpdGMgYWxwaGFuZXRpY2FsIG9yZGVyLgotICAgICMKLSAgICBwcmlvcml0eSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICdQcmlvcml0eScsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICdQcmlvcml0eSBmb3IgdGhpcyBBZGRyZXNzIFNwYWNlICcgKwotICAgICAgICAgICAgICAgICAgICAgICAnKGhpZ2hlciBudW1iZXJzIGFyZSBoaWdoZXIgcHJpb3JpdHkpJywKLSAgICAgICAgZGVmYXVsdCAgICAgID0gMTAwMCwKLSAgICAgICAgdmFsaWRhdG9ycyAgID0gWyBSYW5nZVZhbGlkYXRvcigwLCA2NTUzNSkgXSkKLQotICAgICMKLSAgICAjIFNlcGVyYXRvciB0YWcgb2YgdGhpcyBhZGRyZXNzLXNwYWNlIGluIHRoZSBkYXRhIHBsYW5lLCBzdWNoIGFzIHZsYW4gaWQuCi0gICAgIwotICAgIHZsYW5fdGFnX29uX2VncmVzcyA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICdFZ3Jlc3MgVkxBTiB0YWcnLAotICAgICAgICBoZWxwX3RleHQgICAgPSAnVmxhbiBUYWcgdmFsdWUgdXNlZCBmb3IgdGhpcyBBZGRyZXNzIFNwYWNlIHNlcGFyYXRpb24nLAotICAgICAgICBkZWZhdWx0ICAgICAgPSBOb25lLAotICAgICAgICBibGFuayAgICAgICAgPSBUcnVlLAotICAgICAgICBudWxsICAgICAgICAgPSBUcnVlLAotICAgICAgICB2YWxpZGF0b3JzICAgPSBbIFJhbmdlVmFsaWRhdG9yKDAsIDQwOTUpIF0pCi0KLSAgICAjCi0gICAgIyBPcmlnaW4gb2YgdGhpcyBjb25maWd1cmVkIGl0ZW0KLSAgICAjIAotICAgIG9yaWdpbiA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICJPcmlnaW4iLAotICAgICAgICBoZWxwX3RleHQgICAgPSAiVmFsdWVzOiBjbGksIHJlc3QsIG90aGVyIHBhY2thZ2VzIiwKLSAgICAgICAgbWF4X2xlbmd0aCAgID0gNjQsICMgaW4gZnV0dXJlIHdlIG1pZ2h0IHVzZSBTVyBHVUlEcyBmb3IgdGhpcyBmaWVsZAotICAgICAgICBibGFuayAgICAgICAgPSBUcnVlLAotICAgICAgICBudWxsICAgICAgICAgPSBUcnVlKQotCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgX191bmljb2RlX18gKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5uYW1lCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FICAgICAgID0gJ2FkZHJlc3Mtc3BhY2UnCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICAgICB7J25hbWUnOiAndmxhbl90YWdfb25fZWdyZXNzJywgJ3Jlc3RfbmFtZSc6J3ZsYW4tdGFnLW9uLWVncmVzcyd9LAotICAgICAgICApCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEFuIGlkZW50aWZpZXIgcnVsZSBpbiBhZGRyZXNzLXNwYWNlIHNlcGFyYXRpb24KLQotY2xhc3MgQWRkcmVzc1NwYWNlSWRlbnRpZmllclJ1bGUgKG1vZGVscy5Nb2RlbCk6Ci0gICAgcnVsZV9tYXhfbGVuZ3RoID0gMzIgCi0KLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgIwotICAgICMgQ3JlYXRlIGEgcmVmZXJlbmNlIHRvIHRoZSBlbmNsb3NpbmcgYWRkcmVzcy1zcGFjZSBjb25zdHJ1Y3QuCi0gICAgIwotICAgIGFkZHJlc3Nfc3BhY2UgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgQWRkcmVzc1NwYWNlLAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnQWRkcmVzcyBTcGFjZSBJZGVudGlmaWVyJykKLQotICAgICMKLSAgICAjIFVuaXF1ZSBydWxlIGlkZW50aWZpZXIgbmFtZSB1bmRlciB0aGlzIGFkZHJlc3Mtc3BhY2UuCi0gICAgIwotICAgIHJ1bGUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnQWRkcmVzcyBTcGFjZSBSdWxlIElkZW50aWZpZXInLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSBydWxlX21heF9sZW5ndGgpCi0KLSAgICAjCi0gICAgIyBWZXJib3NlIGRlc2NyaXB0aW9uIG9mIHRoaXMgcnVsZS4KLSAgICAjCi0gICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnRGVzY3JpcHRpb24nLAotICAgICAgICBoZWxwX3RleHQgICAgPSAiRGVzY3JpcHRpb24gb2YgcnVsZSIsCi0gICAgICAgIG1heF9sZW5ndGggICA9IDEyOCwKLSAgICAgICAgYmxhbmsgICAgICAgID0gVHJ1ZSwKLSAgICAgICAgbnVsbCAgICAgICAgID0gVHJ1ZSkKLQotICAgICMKLSAgICAjIFdoZXRoZXIgdGhlIGNvbmZpZ3VyYXRpb24gaXMgYWN0aXZlID8gQnkgZGVmYXVsdCwgaXQgaXMgYWN0aXZlCi0gICAgIyBVc2VkIHRvIGRpc2FibGUgdGhlIGNvbmZpZ3VyYXRpb24gd2l0aG91dCBoYXZpbmcgdG8gZGVsZXRlIHRoZSBlbnRpcmUKLSAgICAjIGFkZHJlc3Mtc3BhY2UgaWRlbnRpZmllci1ydWxlIGNvbmZpZ3VyYXRpb24gY29uc3RydWN0LgotICAgICMKLSAgICBhY3RpdmUgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnQWN0aXZlJywKLSAgICAgICAgaGVscF90ZXh0ICAgID0gJ0lmIHRoaXMgaW50ZXJmYWNlIGlzIGFjdGl2ZSAoZGVmYXVsdCBpcyBUcnVlKScsCi0gICAgICAgIGRlZmF1bHQgICAgICA9IFRydWUpCi0KLSAgICAjCi0gICAgIyBQcmlvcml0eSBvZiB0aGlzIGFkZHJlc3Mtc3BhY2UgZHVyaW5nIGRldmljZSBtYXRjaGluZyB3aGVuCi0gICAgIyBjb21wYXJlZCB0byBvdGhlciBhZGRyZXNzLXNwYWNlcy4gVGhvc2UgYXQgdGhlIHNhbWUgcHJpb3JpdHkKLSAgICAjIGFyZSB1c2VkIGluIGEgZGV0ZXJtaW5pc2l0YyBhbHBoYW5ldGljYWwgb3JkZXIuCi0gICAgIwotICAgIHByaW9yaXR5ID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gJ1ByaW9yaXR5JywKLSAgICAgICAgaGVscF90ZXh0ICAgID0gJ1ByaW9yaXR5IGZvciB0aGlzIGludGVyZmFjZSBydWxlICcgKwotICAgICAgICAgICAgICAgICAgICAgICAnKGhpZ2hlciBudW1iZXJzIGFyZSBoaWdoZXIgcHJpb3JpdHkpJywKLSAgICAgICAgZGVmYXVsdCAgICAgID0gMzI3NjgsCi0gICAgICAgIHZhbGlkYXRvcnMgICA9IFsgUmFuZ2VWYWxpZGF0b3IoMCwgNjU1MzUpIF0pCi0KLSAgICAjCi0gICAgIyBEUElEIG9mIHRoZSBTd2l0Y2ggd2hpY2ggc2VudCB0aGUgcGFja2V0Ci0gICAgIwotICAgIHN3aXRjaCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICdTd2l0Y2ggRFBJRCcsCi0gICAgICAgIG1heF9sZW5ndGggICA9IFN3aXRjaC5zd2l0Y2hfaWRfbGVuZ3RoLAotICAgICAgICBoZWxwX3RleHQgICAgPSAnU3dpdGNoIERQSUQgb3Igc3dpdGNoIGFsaWFzJywKLSAgICAgICAgdmFsaWRhdG9ycyAgID0gWyB2YWxpZGF0ZV9kcGlkIF0sCi0gICAgICAgIG51bGwgICAgICAgICA9IFRydWUsCi0gICAgICAgIGJsYW5rICAgICAgICA9IFRydWUpCi0KLSAgICAjCi0gICAgIyBSYW5nZSBvZiBwb3J0cyBpbiB3aGljaCB0aGUgcGFja2V0IGNhbWUgZnJvbQotICAgICMKLSAgICBwb3J0cyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICJQb3J0IFJhbmdlIFNwZWMiLAotICAgICAgICBoZWxwX3RleHQgICAgPSAnUG9ydCByYW5nZSAoZS5nLiBDMTIgb3IgQjEsQTIyLTI1KScsCi0gICAgICAgIG1heF9sZW5ndGggICA9IDI1NiwKLSAgICAgICAgdmFsaWRhdG9ycyAgID0gWyBQb3J0UmFuZ2VTcGVjVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgYmxhbmsgICAgICAgID0gVHJ1ZSwKLSAgICAgICAgbnVsbCAgICAgICAgID0gVHJ1ZSkKLSAgICAKLSAgICAjCi0gICAgIyBSYW5nZSBvZiBWTEFOIHRhZ3MKLSAgICAjCi0gICAgdmxhbnMgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAiVkxBTiBSYW5nZSBTcGVjIiwKLSAgICAgICAgaGVscF90ZXh0ICAgID0gIlZMQU4ocykgKGUuZy4gNSBvciA1LTEwLDQwMTAtNDA1MCkiLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSAyNTYsCi0gICAgICAgIHZhbGlkYXRvcnMgICA9IFsgVkxBTlJhbmdlU3BlY1ZhbGlkYXRvcigpIF0sCi0gICAgICAgIGJsYW5rICAgICAgICA9IFRydWUsCi0gICAgICAgIG51bGwgICAgICAgICA9IFRydWUpCi0KLSAgICAjCi0gICAgIyBOYW1lVmFsdWUgcGFpciBvZiB0YWdzCi0gICAgIwotICAgIHRhZyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICJUYWcgU3BlYyIsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICJUYWcgdmFsdWVzIChlLmcuIG5hbWVzcGFjZS50YWduYW1lPXZhbHVlKSIsCi0gICAgICAgIG1heF9sZW5ndGggICA9IDI1NiwKLSAgICAgICAgdmFsaWRhdG9ycyAgID0gWyBUYWdTcGVjVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgYmxhbmsgICAgICAgID0gVHJ1ZSwKLSAgICAgICAgbnVsbCAgICAgICAgID0gVHJ1ZSkKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fIChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuaWQKLQotICAgIGNsYXNzIENhc3NhbmRyYVNldHRpbmdzOgotICAgICAgICBDT01QT1VORF9LRVlfRklFTERTID0gKCdhZGRyZXNzX3NwYWNlJywgJ3J1bGUnKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdhZGRyZXNzLXNwYWNlLWlkZW50aWZpZXItcnVsZScKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICdkZXNjcmlwdGlvbicsICAgICAncmVzdF9uYW1lJzogJ2Rlc2NyaXB0aW9uJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnYWRkcmVzc19zcGFjZScsICAgJ3Jlc3RfbmFtZSc6ICdhZGRyZXNzLXNwYWNlJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnYWN0aXZlJywgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdhY3RpdmUnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdwcmlvcml0eScsICAgICAgICAncmVzdF9uYW1lJzogJ3ByaW9yaXR5J30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3dpdGNoJywgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdzd2l0Y2gnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdwb3J0cycsICAgICAgICAgICAncmVzdF9uYW1lJzogJ3BvcnRzJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAndmxhbnMnLCAgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICd2bGFucyd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3RhZycsICAgICAgICAgICAgICdyZXN0X25hbWUnOiAndGFnJ30sCi0gICAgICAgICAgICApCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiIiCi1jbGFzcyBIb3N0Q29uZmlnKG1vZGVscy5Nb2RlbCk6Ci0gICAgaG9zdF9pZF9sZW5ndGggPSAxNwotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAjYWRkcmVzc19zcGFjZSA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICMgICAgQWRkcmVzc1NwYWNlLAotICAgICMgICAgdmVyYm9zZV9uYW1lID0gIkFkZHJlc3Mgc3BhY2UgbmFtZSIpCi0KLSAgICBtYWMgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9Ik1BQyBBZGRyZXNzIiwKLSAgICAgICAgbWF4X2xlbmd0aD1ob3N0X2lkX2xlbmd0aCwgCi0gICAgICAgIHZhbGlkYXRvcnMgPSBbdmFsaWRhdGVfbWFjX2FkZHJlc3NdKQotCi0gICAgdmxhbiA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nVkxBTicsCi0gICAgICAgIGhlbHBfdGV4dD0nVkxBTiBBc3NvY2lhdGVkIHdpdGggaG9zdCcsCi0gICAgICAgIG1heF9sZW5ndGg9NCwKLSAgICAgICAgdmFsaWRhdG9ycz1bUmFuZ2VWYWxpZGF0b3IoMSwgNDA5NSldLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBkZWZhdWx0PScnKQotCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHNlbGYubWFjID0gc2VsZi5tYWMubG93ZXIoKQotICAgICAgICAjcmV0dXJuICIlczo6JXMiICUgKHNlbGYuYWRkcmVzc1NwYWNlLCBzZWxmLm1hYykKLSAgICAgICAgcmV0dXJuICIlcyIgJSAoc2VsZi5hZGRyZXNzU3BhY2UpCi0KLSAgICBjbGFzcyBDYXNzYW5kcmFTZXR0aW5nczoKLSAgICAgICAgI0NPTVBPVU5EX0tFWV9GSUVMRFMgPSAoJ2FkZHJlc3Nfc3BhY2UnLCAndmxhbicsICdtYWMnKQotICAgICAgICBDT01QT1VORF9LRVlfRklFTERTID0gKCd2bGFuJywgJ21hYycpCi0KLSAgICBkZWYgdmFsaWRhdGVfdW5pcXVlKHNlbGYsIGV4Y2x1ZGUgPSBOb25lKToKLSAgICAgICAgIyBJbnZva2UgdGhlIGRlZmF1bHQgdmFsaWRhdG9yOyBlcnJvciBvdXQgaWYgdGhlIHZucyBhbHJlYWR5IGV4aXN0cwotICAgICAgICBzdXBlcihIb3N0Q29uZmlnLCBzZWxmKS52YWxpZGF0ZV91bmlxdWUoZXhjbHVkZSkKLSAgICAgICAgI2lmIHNlbGYudmxhbiBhbmQgc3RyKHNlbGYuYWRkcmVzc19zcGFjZSkgIT0gJ2RlZmF1bHQnOiAKLSAgICAgICAgIyAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoJ2hvc3Q6IHZsYW4gY29uZmlndXJlZCBmb3IgJwotICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkcmVzcy1zcGFjZSBvdGhlciB0aGFuICJkZWZhdWx0IiAlcycgJSBzZWxmLmFkZHJlc3Nfc3BhY2UpCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ2hvc3QtY29uZmlnJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgI3snbmFtZSc6ICdhZGRyZXNzX3NwYWNlJywgJ3Jlc3RfbmFtZSc6ICdhZGRyZXNzLXNwYWNlJ30sCi0gICAgICAgICAgICApCi0iIiIKLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIEhvc3RTZWN1cml0eUlwQWRkcmVzcyhtb2RlbHMuTW9kZWwpOgotICAgIGhvc3QgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgSG9zdENvbmZpZywKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdIb3N0IElEJykKLQotICAgIGlwID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdJUCBBZGRyZXNzJywKLSAgICAgICAgaGVscF90ZXh0PSdJUCBBZGRyZXNzIHVzZWQgdG8gYXNzb2NpYXRlIHdpdGggaG9zdCcsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBJcFZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGg9MTUsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5pZAotCi0gICAgY2xhc3MgQ2Fzc2FuZHJhU2V0dGluZ3M6Ci0gICAgICAgIENPTVBPVU5EX0tFWV9GSUVMRFMgPSAoJ2hvc3QnLCAnaXAnKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdob3N0LXNlY3VyaXR5LWlwLWFkZHJlc3MnCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICAgICB7J25hbWUnOiAnaXAnLCAncmVzdF9uYW1lJzogJ2lwLWFkZHJlc3MnfSwKLSAgICAgICAgICAgICkKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBIb3N0U2VjdXJpdHlBdHRhY2htZW50UG9pbnQobW9kZWxzLk1vZGVsKToKLSAgICBob3N0ID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIEhvc3RDb25maWcsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nSG9zdCBJRCcpCi0KLSAgICBkcGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gJ1N3aXRjaCBEUElEJywKLSAgICAgICAgbWF4X2xlbmd0aCAgID0gU3dpdGNoLnN3aXRjaF9pZF9sZW5ndGgsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICdTd2l0Y2ggRFBJRCBvciBzd2l0Y2ggYWxpYXMnLAotICAgICAgICB2YWxpZGF0b3JzICAgPSBbIHZhbGlkYXRlX2RwaWQgXSwKLSAgICAgICAgbnVsbCAgICAgICAgID0gVHJ1ZSwKLSAgICAgICAgYmxhbmsgICAgICAgID0gVHJ1ZSkKLQotICAgIGlmX25hbWVfcmVnZXggPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0lmIE5hbWUgUmVnZXgnLAotICAgICAgICBoZWxwX3RleHQ9J0ludGVyZmFjZSBuYW1lIHJlZ3VsYXIgZXhwcmVzc2lvbicsCi0gICAgICAgIG1heF9sZW5ndGg9NjQsCi0gICAgICAgIHZhbGlkYXRvcnMgPSBbU2FmZUZvclByaW1hcnlLZXlWYWxpZGF0b3IoKSwgSXNSZWdleFZhbGlkYXRvcigpXSwKLSAgICAgICAgYmxhbmsgPSBUcnVlLAotICAgICAgICBudWxsID0gRmFsc2UsCi0gICAgICAgICkKLQotCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmlkCi0KLSAgICBjbGFzcyBDYXNzYW5kcmFTZXR0aW5nczoKLSAgICAgICAgQ09NUE9VTkRfS0VZX0ZJRUxEUyA9ICgnaG9zdCcsICdkcGlkJywgJ2lmX25hbWVfcmVnZXgnKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdob3N0LXNlY3VyaXR5LWF0dGFjaG1lbnQtcG9pbnQnCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICAgICB7J25hbWUnOiAnaWZfbmFtZV9yZWdleCcsICdyZXN0X25hbWUnOiAnaWYtbmFtZS1yZWdleCd9LAotICAgICAgICAgICAgKQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBIb3N0QWxpYXMobW9kZWxzLk1vZGVsKToKLSAgICBob3N0X2FsaWFzX2xlbmd0aCA9IDI1NQotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBpZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5ID0gVHJ1ZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gJ0hvc3QgQWxpYXMnLAotICAgICAgICBoZWxwX3RleHQgPSAnYWxpYXMnLAotICAgICAgICBtYXhfbGVuZ3RoID0gaG9zdF9hbGlhc19sZW5ndGgsCi0gICAgICAgIHZhbGlkYXRvcnM9W0hvc3RBbGlhc1ZhbGlkYXRvcigpXSkKLQotICAgIGhvc3QgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgSG9zdENvbmZpZywKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdIb3N0IElEJykKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdob3N0LWFsaWFzJwotCi1jbGFzcyBWbGFuQ29uZmlnKG1vZGVscy5Nb2RlbCk6Ci0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgCi0gICAgdmxhbiA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5ID0gVHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICB2ZXJib3NlX25hbWU9J1ZMQU4nLAotICAgICAgICBoZWxwX3RleHQ9J1ZMQU4gTnVtYmVyJywKLSAgICAgICAgdmFsaWRhdG9ycz1bUmFuZ2VWYWxpZGF0b3IoMCwgNDA5NSldLAotICAgICAgICApCi0gICAgCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnZsYW46Ci0gICAgICAgICAgICByZXR1cm4gIiVzIHZsYW4gJXMiICUgKHNlbGYudmxhbikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiJXMgdmxhbiAlcyIgJSAoc2VsZi52bGFuKQotICAgIAotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAndmxhbi1jb25maWcnCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEEgU3RhdGljIEFSUCB0YWJsZSBzZXBhcmF0aW9uCi0KLWNsYXNzIFN0YXRpY0FycCAobW9kZWxzLk1vZGVsKToKLQotICAgIGlkX21heF9sZW5ndGggPSA2NAotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgaXAgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBwcmltYXJ5X2tleT1UcnVlLAotICAgICAgICB2ZXJib3NlX25hbWU9J0lQIEFkZHJlc3MnLAotICAgICAgICB2YWxpZGF0b3JzPVsgSXBWYWxpZGF0b3IoKSBdLAotICAgICAgICBtYXhfbGVuZ3RoPTE1KQotICAgIG1hYyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iTUFDIEFkZHJlc3MiLAotICAgICAgICBtYXhfbGVuZ3RoPTE3LCAKLSAgICAgICAgdmFsaWRhdG9ycyA9IFt2YWxpZGF0ZV9tYWNfYWRkcmVzc10pIAotICAgICMKLSAgICAjIE9yaWdpbiBvZiB0aGlzIGNvbmZpZ3VyZWQgaXRlbQotICAgICMgCi0gICAgb3JpZ2luID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gIk9yaWdpbiIsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICJWYWx1ZXM6IGNsaSwgcmVzdCwgb3RoZXIgcGFja2FnZXMiLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSA2NCwgIyBpbiBmdXR1cmUgd2UgbWlnaHQgdXNlIFNXIEdVSURzIGZvciB0aGlzIGZpZWxkCi0gICAgICAgIGJsYW5rICAgICAgICA9IFRydWUsCi0gICAgICAgIG51bGwgICAgICAgICA9IFRydWUpCi0KLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyAoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmlkCi0gICAgCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdzdGF0aWMtYXJwJwotICAgICAgICAKLQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBBIFRlbmFudCBzZXBhcmF0aW9uCi0KLWNsYXNzIFRlbmFudCAobW9kZWxzLk1vZGVsKToKLQotICAgIGlkX21heF9sZW5ndGggPSA2NAotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAjCi0gICAgIyBVbmlxdWUgbmFtZSBvZiB0aGUgdGVuYW50Ci0gICAgIwotICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBwcmltYXJ5X2tleSAgPSBUcnVlLAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnVGVuYW50IE5hbWUnLAotICAgICAgICBoZWxwX3RleHQgICAgPSAnQSB1bmlxdWUgbmFtZSBmb3IgYW4gVGVuYW50JywKLSAgICAgICAgdmFsaWRhdG9ycyAgID0gWyBUZW5hbnROYW1lVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aCAgID0gaWRfbWF4X2xlbmd0aCkKLQotICAgICMKLSAgICAjIFZlcmJvc2UgZGVzY3JpcHRpb24gb2YgdGhpcyB0ZW5hbnQuCi0gICAgIwotICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gJ0Rlc2NyaXB0aW9uJywKLSAgICAgICAgaGVscF90ZXh0ICAgID0gIkRlc2NyaXB0aW9uIG9mIHRoZSB0ZW5hbnQiLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSAxMjgsCi0gICAgICAgIGJsYW5rICAgICAgICA9IFRydWUsCi0gICAgICAgIG51bGwgICAgICAgICA9IFRydWUpCi0gICAKLSAgICAjCi0gICAgIyBXaGV0aGVyIHRoZSBjb25maWd1cmF0aW9uIGlzIGFjdGl2ZSA/IEJ5IGRlZmF1bHQsIGl0IGlzIGFjdGl2ZQotICAgICMgVXNlZCB0byBkaXNhYmxlIHRoZSBjb25maWd1cmF0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIGRlbGV0ZSB0aGUgZW50aXJlCi0gICAgIyB0ZW5hbnQgY29uZmlndXJhdGlvbiBjb25zdHJ1Y3QuCi0gICAgIwotICAgIGFjdGl2ZSA9IG1vZGVscy5Cb29sZWFuRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICdBY3RpdmUnLAotICAgICAgICBoZWxwX3RleHQgICAgPSAnSXMgdGhpcyBUZW5hbnQgYWN0aXZlIChkZWZhdWx0IGlzIFRydWUpJywKLSAgICAgICAgZGVmYXVsdCAgICAgID0gVHJ1ZSkKLQotICAgICMKLSAgICAjIE9yaWdpbiBvZiB0aGlzIGNvbmZpZ3VyZWQgaXRlbQotICAgICMgCi0gICAgb3JpZ2luID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gIk9yaWdpbiIsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICJWYWx1ZXM6IGNsaSwgcmVzdCwgb3RoZXIgcGFja2FnZXMiLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSA2NCwgIyBpbiBmdXR1cmUgd2UgbWlnaHQgdXNlIFNXIEdVSURzIGZvciB0aGlzIGZpZWxkCi0gICAgICAgIGJsYW5rICAgICAgICA9IFRydWUsCi0gICAgICAgIG51bGwgICAgICAgICA9IFRydWUpCi0KLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyAoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLm5hbWUKLSAgICAKLSAgICBkZWYgZGVsZXRlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm5hbWU9PSdkZWZhdWx0JyBvciBzZWxmLm5hbWUgPT0nc3lzdGVtJyBvciBzZWxmLm5hbWUgPT0nZXh0ZXJuYWwnOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJEZWZhdWx0L0V4dGVybmFsL1N5c3RlbSBUZW5hbnQgY2FuJ3QgYmUgZGVsZXRlZCIpCi0gICAgICAgIHN1cGVyKFRlbmFudCwgc2VsZikuZGVsZXRlKCkKLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3RlbmFudCcKLSAgICAgICAgCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEEgdmlydHVhbCByb3V0ZXIgc2VwYXJhdGlvbgotCi1jbGFzcyBWaXJ0dWFsUm91dGVyIChtb2RlbHMuTW9kZWwpOgotCi0gICAgaWRfbWF4X2xlbmd0aCA9IDY0Ci0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB2cm5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnVmlydHVhbCBSb3V0ZXIgTmFtZScsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICdBIHVuaXF1ZSBuYW1lIGZvciBhIHZpcnR1YWwgcm91dGVyJywKLSAgICAgICAgdmFsaWRhdG9ycyAgID0gWyBHZW5lcmFsTmFtZVZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGggICA9IGlkX21heF9sZW5ndGgKLSAgICAgICAgKQotICAgIAotICAgIHRlbmFudCA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBUZW5hbnQsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nVGVuYW50IE5hbWUnLAotICAgICAgICApCi0gICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnRGVzY3JpcHRpb24nLAotICAgICAgICBoZWxwX3RleHQgICAgPSAiRGVzY3JpcHRpb24gb2YgdGhlIHZpcnR1YWwgcm91dGVyIiwKLSAgICAgICAgbWF4X2xlbmd0aCAgID0gMTI4LAotICAgICAgICBibGFuayAgICAgICAgPSBUcnVlLAotICAgICAgICBudWxsICAgICAgICAgPSBUcnVlLAotICAgICAgICApCi0gICAKLSAgICAjCi0gICAgIyBPcmlnaW4gb2YgdGhpcyBjb25maWd1cmVkIGl0ZW0KLSAgICAjIAotICAgIG9yaWdpbiA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICJPcmlnaW4iLAotICAgICAgICBoZWxwX3RleHQgICAgPSAiVmFsdWVzOiBjbGksIHJlc3QsIG90aGVyIHBhY2thZ2VzIiwKLSAgICAgICAgbWF4X2xlbmd0aCAgID0gNjQsICMgaW4gZnV0dXJlIHdlIG1pZ2h0IHVzZSBTVyBHVUlEcyBmb3IgdGhpcyBmaWVsZAotICAgICAgICBibGFuayAgICAgICAgPSBUcnVlLAotICAgICAgICBudWxsICAgICAgICAgPSBUcnVlKQotCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgX191bmljb2RlX18gKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5pZAotICAgIAotICAgIGRlZiB2YWxpZGF0ZV91bmlxdWUoc2VsZiwgZXhjbHVkZSA9IE5vbmUpOgotICAgICAgICAjIGluIGZhdCB0aXJlLCBvbmx5IG9uZSByb3V0ZXIgcGVyIHRlbmFudCBjYW4gYmUgZGVmaW5lZC4gdGhpcyBjYW4gYmUgcmVtb3ZlZCBsYXRlci4KLSAgICAgICAgZXJyb3I9RmFsc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZXhpc3RzID0gVmlydHVhbFJvdXRlci5vYmplY3RzLmdldCh0ZW5hbnQgPSBzZWxmLnRlbmFudCkKLSAgICAgICAgICAgIGlmIGV4aXN0cy52cm5hbWUgIT1zZWxmLnZybmFtZToKLSAgICAgICAgICAgICAgICBlcnJvcj1UcnVlCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgaWYgZXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIiBWaXJ0dWFsIHJvdXRlciAlcyBoYXMgYmVlbiBkZWZpbmVkIGZvciB0ZW5hbnQgJXMsIG9ubHkgb25lIHZpcnR1YWwgcm91dGVyIHBlciB0ZW5hbnQgc3VwcG9ydGVkIiAlIChleGlzdHMudnJuYW1lLHNlbGYudGVuYW50KSkKLSAgICAKLSAgICBjbGFzcyBDYXNzYW5kcmFTZXR0aW5nczoKLSAgICAgICAgQ09NUE9VTkRfS0VZX0ZJRUxEUyA9ICgndGVuYW50JywgJ3ZybmFtZScpCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3ZpcnR1YWxyb3V0ZXInCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEEgdmlydHVhbCBuZXR3b3JrIHNlZ21lbnQKLQotY2xhc3MgVk5TKG1vZGVscy5Nb2RlbCk6Ci0gICAgaWRfbWF4X2xlbmd0aCA9IDY0Ci0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB2bnNuYW1lID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdWTlMgSUQnLAotICAgICAgICBoZWxwX3RleHQ9J0EgdW5pcXVlIG5hbWUgZm9yIGEgVmlydHVhbCBOZXR3b3JrIFNlZ21lbnQnLAotICAgICAgICB2YWxpZGF0b3JzPVtHZW5lcmFsTmFtZVZhbGlkYXRvcigpXSwKLSAgICAgICAgbWF4X2xlbmd0aD1pZF9tYXhfbGVuZ3RoKQotICAgIHRlbmFudD1tb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgVGVuYW50LAotICAgICAgICB2ZXJib3NlX25hbWU9J1RlbmFudCBJRCcsCi0gICAgICAgIGRlZmF1bHQ9J2RlZmF1bHQnKQotICAgICMKLSAgICAjIFZlcmJvc2UgZGVzY3JpcHRpb24gb2YgdGhpcyBydWxlLgotICAgICMKLSAgICBkZXNjcmlwdGlvbiA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICdEZXNjcmlwdGlvbicsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICJEZXNjcmlwdGlvbiBvZiB0aGUgVk5TIiwKLSAgICAgICAgbWF4X2xlbmd0aCAgID0gMTI4LAotICAgICAgICBibGFuayAgICAgICAgPSBUcnVlLAotICAgICAgICBudWxsICAgICAgICAgPSBUcnVlKQotCi0gICAgIwotICAgICMgUmVmZXJlbmNlIHRvIHRoZSBhZGRyZXNzLXNwYWNlIGl0ZW0uIEJ5IGRlZmF1bHQsIHdlIAotICAgICMgaW1wbGljaXRseSB1c2UgJ2RlZmF1bHQnIGlmIHRoaXMgaXMgbm90IGV4cGxpY2l0bHkgcHJvdmlkZWQuCi0gICAgIwotICAgIHZuc19hZGRyZXNzX3NwYWNlID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIEFkZHJlc3NTcGFjZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdBZGRyZXNzIFNwYWNlIEFzc29jaWF0aW9uJywKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotCi0gICAgYWN0aXZlID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdBY3RpdmUnLAotICAgICAgICBoZWxwX3RleHQ9J0lmIHRoaXMgVk5TIGlzIGFjdGl2ZSAoZGVmYXVsdCBpcyBUcnVlKScsCi0gICAgICAgIGRlZmF1bHQ9VHJ1ZSkKLQotICAgIHByaW9yaXR5ID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdQcmlvcml0eScsCi0gICAgICAgIGhlbHBfdGV4dD0nUHJpb3JpdHkgZm9yIHRoaXMgVk5TIChoaWdoZXIgbnVtYmVycyBhcmUgaGlnaGVyIHByaW9yaXR5KScsCi0gICAgICAgIGRlZmF1bHQgPSAxMDAwLAotICAgICAgICB2YWxpZGF0b3JzPVtSYW5nZVZhbGlkYXRvcigwLCA2NTUzNSldKQotIAotICAgIG9yaWdpbiA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICJUaGUgb3JpZ2luL2NyZWF0b3IgaW50ZXJmYWNlIGZvciB0aGlzIFZOUyIsCi0gICAgICAgIGhlbHBfdGV4dD0iVmFsdWVzOiBjbGksIHJlc3QsIG90aGVyIHBhY2thZ2VzIiwKLSAgICAgICAgbWF4X2xlbmd0aD02NCwgIyBpbiBmdXR1cmUgd2UgbWlnaHQgdXNlIFNXIEdVSURzIGZvciB0aGlzIGZpZWxkCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIGFycF9tb2RlID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gIkFSUCBNYW5hZ2VyIENvbmZpZyBNb2RlIiwKLSAgICAgICAgaGVscF90ZXh0PSJWYWx1ZXM6IGFsd2F5cy1mbG9vZCwgZmxvb2QtaWYtdW5rbm93biwgZHJvcC1pZi11bmtub3duIiwgCi0gICAgICAgIG1heF9sZW5ndGg9MzIsIAotICAgICAgICB2YWxpZGF0b3JzPVtWbnNBcnBNb2RlVmFsaWRhdG9yKCldLAotICAgICAgICBkZWZhdWx0PSdmbG9vZC1pZi11bmtub3duJykKLQotICAgIGRoY3BfbW9kZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICJESENQIE1hbmFnZXIgQ29uZmlnIE1vZGUiLAotICAgICAgICBoZWxwX3RleHQgPSAiVmFsdWVzOiBhbHdheXMtZmxvb2QsIGZsb29kLWlmLXVua25vd24sIHN0YXRpYyIsCi0gICAgICAgIG1heF9sZW5ndGggPSAyMCwKLSAgICAgICAgdmFsaWRhdG9ycz1bVm5zRGhjcE1vZGVWYWxpZGF0b3IoKV0sCi0gICAgICAgIGRlZmF1bHQ9J2Zsb29kLWlmLXVua25vd24nKQotICAgIAotICAgIGRoY3BfaXAgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0RIQ1AgSVAgQWRkcmVzcycsCi0gICAgICAgIGhlbHBfdGV4dD0nSVAgQWRkcmVzcyBvZiBESENQIFNlcnZlcicsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBJcFZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGg9MTUsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIGJyb2FkY2FzdCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICJCcm9hZGNhc3QgKG5vbiBBUlAvREhDUCkgQ29uZmlnIE1vZGUiLAotICAgICAgICBoZWxwX3RleHQgPSAiVmFsdWVzOiBhbHdheXMtZmxvb2QsIGZvcndhcmQtdG8ta25vd24sIGRyb3AiLAotICAgICAgICBtYXhfbGVuZ3RoID0gMjAsCi0gICAgICAgIHZhbGlkYXRvcnM9W1Zuc0Jyb2FkY2FzdE1vZGVWYWxpZGF0b3IoKV0sCi0gICAgICAgIGRlZmF1bHQ9J2ZvcndhcmQtdG8ta25vd24nKQotCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmlkCi0KLSAgICBkZWYgZGVsZXRlKHNlbGYpOgotICAgICAgICAjZGVmYXVsdCBWTlMgY2FuJ3QgYmUgZGVsZXRlZAotICAgICAgICBpZiBzZWxmLmlkPT0nZGVmYXVsdHxkZWZhdWx0JzoKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiRGVmYXVsdCBWTlMgY2FuJ3QgYmUgZGVsZXRlZCIpCi0gICAgICAgICN3aGlsZSBhZGRyZXNzIHNwYWNlIHN0aWxsIGV4aXN0LCBhZGRyZXNzIHNwYWNlIGRlZmF1bHQgdm5zIGNhbid0IGJlIGRlbGV0ZWQKLSAgICAgICAgI2ZvciBmYXQgdGlyZSwgcmVsYXRpb25zaGlwIGJldHdlZW4gYWRkcmVzcyBzcGFjZSBhbmQgdGVuYW50IGFyZSB1bmNsZWFyIHlldCwgdGhlIGZvbGxvd2luZyBwYXJ0IG1heSBuZWVkIHJldmlzaXQKLSAgICAgICAgc3VmZml4ID0gJy1kZWZhdWx0JwotICAgICAgICBpZiBzZWxmLnZuc25hbWUuZW5kc3dpdGgoc3VmZml4KToKLSAgICAgICAgICAgIHByaW50IHNlbGYudm5zbmFtZQotICAgICAgICAgICAgYWRkcmVzc19zcGFjZV9uYW1lID0gc2VsZi52bnNuYW1lWzotbGVuKHN1ZmZpeCldCi0gICAgICAgICAgICBlcnJvcj1GYWxzZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYudm5zX2FkZHJlc3Nfc3BhY2UgPSBBZGRyZXNzU3BhY2Uub2JqZWN0cy5nZXQobmFtZSA9IGFkZHJlc3Nfc3BhY2VfbmFtZSkKLSAgICAgICAgICAgICAgICBlcnJvcj1UcnVlCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigndm5zICVzIGlzIHRoZSBkZWZhdWx0IFZOUyBvZiBhZGRyZXNzIHNwYWNlOiAlcywgY2FuIG5vdCBiZSBkZWxldGVkICcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi52bnNuYW1lLGFkZHJlc3Nfc3BhY2VfbmFtZSkpCi0gICAgICAgIHN1cGVyKFZOUywgc2VsZikuZGVsZXRlKCkKLSAgICAjIG1hbmFnZSBhIG1hZ2ljIGFzc29jaWF0aW9uIGJldHdlZW4gdm5zIG5hbWVzIGFuZCAKLSAgICAjIGFkZHJlc3Mgc3BhY2UgZm9yIHZucydzIHdoaWNoIGVuZCBpbiAtZGVmYXVsdAotICAgIGRlZiB2YWxpZGF0ZV91bmlxdWUoc2VsZiwgZXhjbHVkZSA9IE5vbmUpOgotICAgICAgICAjIEludm9rZSB0aGUgZGVmYXVsdCB2YWxpZGF0b3I7IGVycm9yIG91dCBpZiB0aGUgdm5zIGFscmVhZHkgZXhpc3RzCi0gICAgICAgICNmb3IgZmF0IHRpcmUsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFkZHJlc3Mgc3BhY2UgYW5kIHRlbmFudCBhcmUgdW5jbGVhciB5ZXQsIHRoZSBmb2xsb3dpbmcgcGFydCBtYXkgbmVlZCByZXZpc2l0Ci0gICAgICAgIHN1cGVyKFZOUywgc2VsZikudmFsaWRhdGVfdW5pcXVlKGV4Y2x1ZGUpCi0gICAgICAgIHN1ZmZpeCA9ICctZGVmYXVsdCcKLSAgICAgICAgaWYgbm90ICd2bnNfYWRkcmVzc19zcGFjZScgaW4gZXhjbHVkZToKLSAgICAgICAgICAgIGlmIHNlbGYudm5zX2FkZHJlc3Nfc3BhY2U6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi52bnNuYW1lLmVuZHN3aXRoKHN1ZmZpeCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHN0cihzZWxmLnZuc19hZGRyZXNzX3NwYWNlKSAhPSBzZWxmLnZuc25hbWVbOi1sZW4oc3VmZml4KV06Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoJ3ZucyBuYW1lcyAlcyBlbmRpbmcgaW4gLWRlZmF1bHQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVzdCBoYXZlIGFkZHJlc3Nfc3BhY2UgbmFtZXMgd2l0aCB0aGUgc2FtZSBwcmVmaXg6ICVzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi52bnNuYW1lLCBzZWxmLnZuc19hZGRyZXNzX3NwYWNlKSkKLSAgICAgICAgICAgIGVsaWYgc2VsZi52bnNuYW1lLmVuZHN3aXRoKHN1ZmZpeCk6Ci0gICAgICAgICAgICAgICAgYWRkcmVzc19zcGFjZV9uYW1lID0gc2VsZi52bnNuYW1lWzotbGVuKHN1ZmZpeCldCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnZuc19hZGRyZXNzX3NwYWNlID0gQWRkcmVzc1NwYWNlLm9iamVjdHMuZ2V0KG5hbWUgPSBhZGRyZXNzX3NwYWNlX25hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgZQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnZuc19hZGRyZXNzX3NwYWNlID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoJ3ZucyAlcyBoYXMgbm8gbWF0Y2hpbmcgYWRkcmVzcy1zcGFjZSAlcyAnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnZuc25hbWUsIGFkZHJlc3Nfc3BhY2VfbmFtZSkpCi0KLSAgICBjbGFzcyBDYXNzYW5kcmFTZXR0aW5nczoKLSAgICAgICAgQ09NUE9VTkRfS0VZX0ZJRUxEUyA9ICgndGVuYW50JywgJ3Zuc25hbWUnKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICd2bnMtZGVmaW5pdGlvbicKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICd2bnNfYWRkcmVzc19zcGFjZScsICdyZXN0X25hbWUnOiAnYWRkcmVzcy1zcGFjZSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2FycF9tb2RlJywgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdhcnAtbW9kZSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2RoY3BfbW9kZScsICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdkaGNwLW1vZGUnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdkaGNwX2lwJywgICAgICAgICAgICdyZXN0X25hbWUnOiAnZGhjcC1pcCd9LAotICAgICAgICAgICAgKQotICAgIAotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQW4gaW50ZXJmYWNlIHJ1bGUgb24gYSBWTlMKLQotY2xhc3MgVk5TSW50ZXJmYWNlUnVsZShtb2RlbHMuTW9kZWwpOgotICAgIHJ1bGVfbWF4X2xlbmd0aCA9IDMyIAotCi0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIHZucyA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBWTlMsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nVk5TIElEJykKLQotICAgIHJ1bGUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1ZOUyBSdWxlIElEJywKLSAgICAgICAgbWF4X2xlbmd0aD1ydWxlX21heF9sZW5ndGgpCi0KLSAgICBkZXNjcmlwdGlvbiA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRGVzY3JpcHRpb24nLAotICAgICAgICBoZWxwX3RleHQ9IkRlc2NyaXB0aW9uIG9mIHJ1bGUiLAotICAgICAgICBtYXhfbGVuZ3RoPTEyOCwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotCi0gICAgdmxhbl90YWdfb25fZWdyZXNzID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdFZ3Jlc3MgVmxhbiBUYWdnaW5nJywKLSAgICAgICAgaGVscF90ZXh0PSdUYWcgd2l0aCBWTEFOIGF0IGVncmVzcyBwb2ludCAoZGVmYXVsdCBpcyBGYWxzZSknLAotICAgICAgICBkZWZhdWx0PUZhbHNlKQotCi0gICAgYWxsb3dfbXVsdGlwbGUgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0FsbG93IE11bHRpcGxlJywKLSAgICAgICAgaGVscF90ZXh0PSdJZiB0aGlzIGludGVyZmFjZSBhbGxvd3MgaG9zdHMgdG8gYmUgb24gbXVsdGlwbGUgVk5TIChkZWZhdWx0IGlzIEZhbHNlKScsCi0gICAgICAgIGRlZmF1bHQ9RmFsc2UpCi0KLSAgICBhY3RpdmUgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0FjdGl2ZScsCi0gICAgICAgIGhlbHBfdGV4dD0nSWYgdGhpcyBpbnRlcmZhY2UgaXMgYWN0aXZlIChkZWZhdWx0IGlzIFRydWUpJywKLSAgICAgICAgZGVmYXVsdD1UcnVlKQotCi0gICAgcHJpb3JpdHkgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1ByaW9yaXR5JywKLSAgICAgICAgaGVscF90ZXh0PSdQcmlvcml0eSBmb3IgdGhpcyBpbnRlcmZhY2UgcnVsZSAoaGlnaGVyIG51bWJlcnMgYXJlIGhpZ2hlciBwcmlvcml0eSknLAotICAgICAgICBkZWZhdWx0ID0gMzI3NjgsCi0gICAgICAgIHZhbGlkYXRvcnM9W1JhbmdlVmFsaWRhdG9yKDAsIDY1NTM1KV0pCi0KLSAgICBtYWMgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9Ik1BQyBBZGRyZXNzIiwKLSAgICAgICAgaGVscF90ZXh0PSdNQUMgQWRkcmVzcyBvciBob3N0IGFsaWFzJywKLSAgICAgICAgbWF4X2xlbmd0aD0xNywgCi0gICAgICAgIHZhbGlkYXRvcnMgPSBbdmFsaWRhdGVfbWFjX2FkZHJlc3NdLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0KLSAgICBpcF9zdWJuZXQgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9IklQIFN1Ym5ldCIsCi0gICAgICAgIGhlbHBfdGV4dD0nSVAgYWRkcmVzcyBvciBzdWJuZXQgKGUuZy4gMTkyLjE2OC4xLjEgb3IgMTkyLjE2OC4xLjAvMjQpJywKLSAgICAgICAgbWF4X2xlbmd0aD0zMSwKLSAgICAgICAgdmFsaWRhdG9ycyA9IFtDaWRyVmFsaWRhdG9yKEZhbHNlKV0sCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIHN3aXRjaCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nU3dpdGNoIERQSUQnLAotICAgICAgICBtYXhfbGVuZ3RoPSBTd2l0Y2guc3dpdGNoX2lkX2xlbmd0aCwKLSAgICAgICAgaGVscF90ZXh0PSdTd2l0Y2ggRFBJRCBvciBzd2l0Y2ggYWxpYXMnLAotICAgICAgICB2YWxpZGF0b3JzPVsgdmFsaWRhdGVfZHBpZCBdLAotICAgICAgICBudWxsPVRydWUsCi0gICAgICAgIGJsYW5rPVRydWUpCi0KLSAgICBwb3J0cyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iUG9ydCBSYW5nZSBTcGVjIiwKLSAgICAgICAgaGVscF90ZXh0PSdQb3J0IHJhbmdlIChlLmcuIEMxMiBvciBCMSxBMjItMjUpJywKLSAgICAgICAgbWF4X2xlbmd0aD0yNTYsCi0gICAgICAgIHZhbGlkYXRvcnMgPSBbUG9ydFJhbmdlU3BlY1ZhbGlkYXRvcigpXSwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotCi0gICAgdmxhbnMgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9IlZMQU4gUmFuZ2UgU3BlYyIsCi0gICAgICAgIGhlbHBfdGV4dD0iVkxBTihzKSAoZS5nLiA1IG9yIDUtMTAsNDAxMC00MDUwKSIsCi0gICAgICAgIG1heF9sZW5ndGg9MjU2LAotICAgICAgICB2YWxpZGF0b3JzID0gW1ZMQU5SYW5nZVNwZWNWYWxpZGF0b3IoKV0sCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIHRhZ3MgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9IlRhZyBTcGVjIiwKLSAgICAgICAgaGVscF90ZXh0PSJUYWcgdmFsdWVzIChlLmcuIG5hbWVzcGFjZS50YWduYW1lPXZhbHVlKSIsCi0gICAgICAgIG1heF9sZW5ndGg9MjU2LAotICAgICAgICB2YWxpZGF0b3JzID0gW1RhZ1NwZWNWYWxpZGF0b3IoKV0sCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmlkCi0KLSAgICBjbGFzcyBDYXNzYW5kcmFTZXR0aW5nczoKLSAgICAgICAgQ09NUE9VTkRfS0VZX0ZJRUxEUyA9ICgndm5zJywgJ3J1bGUnKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICd2bnMtaW50ZXJmYWNlLXJ1bGUnCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICAgICB7J25hbWUnOiAnZGVzY3JpcHRpb24nLCAgICAgICAgJ3Jlc3RfbmFtZSc6ICdkZXNjcmlwdGlvbid9LAotICAgICAgICAgICAgeyduYW1lJzogJ2FsbG93X211bHRpcGxlJywgICAgICdyZXN0X25hbWUnOiAnYWxsb3ctbXVsdGlwbGUnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdhY3RpdmUnLCAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ2FjdGl2ZSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3ByaW9yaXR5JywgICAgICAgICAgICdyZXN0X25hbWUnOiAncHJpb3JpdHknfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdtYWMnLCAgICAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ21hYyd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2lwX3N1Ym5ldCcsICAgICAgICAgICdyZXN0X25hbWUnOiAnaXAtc3VibmV0J30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3dpdGNoJywgICAgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdzd2l0Y2gnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdwb3J0cycsICAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ3BvcnRzJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAndmxhbnMnLCAgICAgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICd2bGFucyd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3RhZ3MnLCAgICAgICAgICAgICAgICdyZXN0X25hbWUnOiAndGFncyd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3ZsYW5fdGFnX29uX2VncmVzcycsICdyZXN0X25hbWUnOiAndmxhbi10YWctb24tZWdyZXNzJ30sICAgICAgICAgICAgCi0gICAgICAgICAgICApCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIFZOU0ludGVyZmFjZUNvbmZpZyhtb2RlbHMuTW9kZWwpOgotICAgIG5hbWVfbWF4X2xlbmd0aCA9IDMyCi0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIHZucyA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBWTlMsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nVk5TIElEJykKLQotICAgIGludGVyZmFjZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nVk5TIEludGVyZmFjZSBOYW1lJywKLSAgICAgICAgbWF4X2xlbmd0aD1uYW1lX21heF9sZW5ndGgsCi0gICAgICAgIHZhbGlkYXRvcnMgPSBbVm5zSW50ZXJmYWNlTmFtZVZhbGlkYXRvcigpXSkKLQotICAgIHJ1bGUgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgVk5TSW50ZXJmYWNlUnVsZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdWTlMgUnVsZSBJRCcsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5pZAotCi0gICAgY2xhc3MgQ2Fzc2FuZHJhU2V0dGluZ3M6Ci0gICAgICAgIENPTVBPVU5EX0tFWV9GSUVMRFMgPSAoJ3ZucycsICdpbnRlcmZhY2UnKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICd2bnMtaW50ZXJmYWNlLWNvbmZpZycKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICdydWxlJywgICdyZXN0X25hbWUnOiAncnVsZSd9LAotICAgICAgICAgICAgKQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIFZOU0FjbChtb2RlbHMuTW9kZWwpOgotICAgIG5hbWVfbWF4X2xlbmd0aD0zMgotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICB2bnMgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgVk5TLAotICAgICAgICB2ZXJib3NlX25hbWU9J1ZOUyBJRCcpCi0KLSAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgaGVscF90ZXh0PSdBY2wgTmFtZScsCi0gICAgICAgIHZhbGlkYXRvcnM9W1Zuc0FjbE5hbWVWYWxpZGF0b3IoKV0sCi0gICAgICAgIG1heF9sZW5ndGg9bmFtZV9tYXhfbGVuZ3RoKQotCi0gICAgcHJpb3JpdHkgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1ByaW9yaXR5JywKLSAgICAgICAgaGVscF90ZXh0PSdQcmlvcml0eSBmb3IgdGhpcyBBQ0wgKGhpZ2hlciBudW1iZXJzIGFyZSBoaWdoZXIgcHJpb3JpdHkpJywKLSAgICAgICAgZGVmYXVsdCA9IDMyNzY4LAotICAgICAgICB2YWxpZGF0b3JzPVtSYW5nZVZhbGlkYXRvcigwLCA2NTUzNSldKQotCi0gICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0Rlc2NyaXB0aW9uJywKLSAgICAgICAgaGVscF90ZXh0PSJEZXNjcmlwdGlvbiBvZiB0aGUgQUNMIiwKLSAgICAgICAgbWF4X2xlbmd0aD0xMjgsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgY2xhc3MgQ2Fzc2FuZHJhU2V0dGluZ3M6Ci0gICAgICAgIENPTVBPVU5EX0tFWV9GSUVMRFMgPSAoJ3ZucycsICduYW1lJykKLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuaWQKLQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAndm5zLWFjY2Vzcy1saXN0JwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgeyduYW1lJzogJ25hbWUnLCAgICAgICAgICdyZXN0X25hbWUnOiAnbmFtZSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3ByaW9yaXR5JywgICAgICdyZXN0X25hbWUnOiAncHJpb3JpdHknfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdkZXNjcmlwdGlvbicsICAncmVzdF9uYW1lJzogJ2Rlc2NyaXB0aW9uJ30sCi0gICAgICAgICAgICApCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIFZOU0FjbEVudHJ5KG1vZGVscy5Nb2RlbCk6Ci0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIHJ1bGUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBoZWxwX3RleHQ9J1J1bGUgSUQnLAotICAgICAgICB2YWxpZGF0b3JzPVtWbnNSdWxlTmFtZVZhbGlkYXRvcigpXSwKLSAgICAgICAgbWF4X2xlbmd0aD0xNSkKLQotICAgIHZuc19hY2wgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgVk5TQWNsLAotICAgICAgICB2ZXJib3NlX25hbWU9J1ZOUyBBY2wgbmFtZScpCi0KLSAgICBhY3Rpb24gPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J3Blcm1pdCBvciBkZW55JywKLSAgICAgICAgaGVscF90ZXh0PSIncGVybWl0JyBvciAnZGVueSciLAotICAgICAgICBtYXhfbGVuZ3RoPTE2LAotICAgICAgICB2YWxpZGF0b3JzPVsgVm5zQWNsRW50cnlBY3Rpb25WYWxpZGF0b3IoKSBdKQotCi0gICAgdHlwZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nbWFjL2lwLzwwLTI1NT4vdWRwL3RjcC9pY21wJywKLSAgICAgICAgaGVscF90ZXh0PSJBQ0x0eXBlIGVpdGhlciBtYWMgb3IgaXAgb3IgdWRwIG9yIHRjcCBvciBpY21wIG9yIGlwLXByb3RvY29sLXR5cGUiLAotICAgICAgICBtYXhfbGVuZ3RoPTE2KQotCi0gICAgc3JjX2lwID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTb3VyY2UgSVAnLAotICAgICAgICBoZWxwX3RleHQ9J1NvdXJjZSBJUCBBZGRyZXNzIHRvIG1hdGNoJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIElwVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aD0xNSwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotCi0gICAgc3JjX2lwX21hc2sgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1NvdXJjZSBJUCBNYXNrJywKLSAgICAgICAgaGVscF90ZXh0PSdNYXNrIHRvIG1hdGNoIHNvdXJjZSBJUCcsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBJcFZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGg9MTUsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIHNyY190cF9wb3J0X29wID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTb3VyY2UgUG9ydCBjb21wYXJpc29uIG9wJywKLSAgICAgICAgaGVscF90ZXh0PSdDb21wYXJlIHdpdGggdGNwL3VkcCBwb3J0IGVxL25lcS9hbnknLAotICAgICAgICBtYXhfbGVuZ3RoPTUsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLSAgICAKLSAgICBzcmNfdHBfcG9ydCA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nU291cmNlIFVEUC9UQ1AgUG9ydCcsCi0gICAgICAgIGhlbHBfdGV4dD0nU291cmNlIHBvcnQgdmFsdWUgdG8gY29tcGFyZScsCi0gICAgICAgIHZhbGlkYXRvcnM9W1JhbmdlVmFsaWRhdG9yKDAsIDY1NTM1KV0sCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLSAgIAotICAgIGRzdF9pcCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRGVzdGluYXRpb24gSVAnLAotICAgICAgICBoZWxwX3RleHQ9J0Rlc3RpbmF0aW9uIElQIEFkZHJlc3MgdG8gbWF0Y2gnLAotICAgICAgICB2YWxpZGF0b3JzPVsgSXBWYWxpZGF0b3IoKSBdLAotICAgICAgICBtYXhfbGVuZ3RoPTE1LAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0KLSAgICBkc3RfaXBfbWFzayA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRGVzdGluYXRpb24gSVAgTWFzaycsCi0gICAgICAgIGhlbHBfdGV4dD0nTWFzayB0byBtYXRjaCBkZXN0aW5hdGlvbiBJUCcsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBJcFZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGg9MTUsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIGRzdF90cF9wb3J0X29wID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdEZXN0aW5hdGlvbiBQb3J0IGNvbXBhcmlzb24gb3AnLAotICAgICAgICBoZWxwX3RleHQ9J0NvbXBhcmUgd2l0aCB0Y3AvdWRwIHBvcnQgZXEvbmVxL2FueScsCi0gICAgICAgIG1heF9sZW5ndGg9MywKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotICAgIAotICAgIGRzdF90cF9wb3J0ID0gbW9kZWxzLkludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdEZXN0aW5hdGlvbiBVRFAvVENQIFBvcnQnLAotICAgICAgICBoZWxwX3RleHQ9J0Rlc3RpbmF0aW9uIHBvcnQgdmFsdWUgdG8gY29tcGFyZScsCi0gICAgICAgIHZhbGlkYXRvcnM9W1JhbmdlVmFsaWRhdG9yKDAsIDY1NTM1KV0sCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIGljbXBfdHlwZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nSUNNUCBUeXBlJywKLSAgICAgICAgaGVscF90ZXh0PSdNYXRjaGluZyBJQ01QIHR5cGUgaWNtcCAoYmxhbmsgbWF0Y2hlcyBhbGwpJywKLSAgICAgICAgdmFsaWRhdG9ycz1bUmFuZ2VWYWxpZGF0b3IoMCwgMjU1KV0sCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIHNyY19tYWMgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9IlNvdXJjZSBNQUMgQWRkcmVzcyIsCi0gICAgICAgIGhlbHBfdGV4dD0iQ29sb24gc2VwYXJhdGVkIGhleCBzdHJpbmcgKGJsYW5rIG1hdGNoZXMgYWxsKSIsCi0gICAgICAgIG1heF9sZW5ndGg9MTcsIAotICAgICAgICB2YWxpZGF0b3JzID0gW3ZhbGlkYXRlX21hY19hZGRyZXNzXSwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotICAgIAotICAgIGRzdF9tYWMgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9IkRlc3RpbmF0aW9uIE1BQyBBZGRyZXNzIiwKLSAgICAgICAgaGVscF90ZXh0PSJDb2xvbiBzZXBhcmF0ZWQgaGV4IHN0cmluZyAoYmxhbmsgbWF0Y2hlcyBhbGwpIiwKLSAgICAgICAgbWF4X2xlbmd0aD0xNywgCi0gICAgICAgIHZhbGlkYXRvcnMgPSBbdmFsaWRhdGVfbWFjX2FkZHJlc3NdLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0gICAgCi0gICAgZXRoZXJfdHlwZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRXRoZXJuZXQgUGFja2V0IFR5cGUnLAotICAgICAgICBoZWxwX3RleHQ9J1N0YW5kYXJkIGV0aGVyIHR5cGUgKGJsYW5rIG1hdGNoZXMgYWxsKScsCi0gICAgICAgIHZhbGlkYXRvcnM9W1JhbmdlVmFsaWRhdG9yKDE1MzYsIDY1NTM1KV0sCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIHZsYW4gPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9IlZMQU4gSUQiLAotICAgICAgICBoZWxwX3RleHQ9J1N0YW5kYXJkIGV0aGVyIHR5cGUgKGJsYW5rIG1hdGNoZXMgYWxsKScsCi0gICAgICAgIGJsYW5rPVRydWUsIAotICAgICAgICBudWxsPVRydWUsIAotICAgICAgICB2YWxpZGF0b3JzID0gWyBSYW5nZVZhbGlkYXRvcigwLCA0MDk1KSBdKSAKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5pZAotCi0gICAgY2xhc3MgQ2Fzc2FuZHJhU2V0dGluZ3M6Ci0gICAgICAgIENPTVBPVU5EX0tFWV9GSUVMRFMgPSAoJ3Zuc19hY2wnLCAncnVsZScpCi0KLSAgICBkZWYgdmFsaWRhdGVfdW5pcXVlKHNlbGYsIGV4Y2x1ZGUgPSBOb25lKToKLSAgICAgICAgIwotICAgICAgICAjIHRoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBlbnRyaWVzOgotICAgICAgICAjIC0gbWFjIGJhc2VkIHJ1bGVzCi0gICAgICAgICMgLSBpcCBiYXNlZCBydWxlcwotICAgICAgICAjIC0gdGNwL3VkcCBiYXNlZCBydWxlcwotICAgICAgICAjIAotICAgICAgICAjIHZlcmlmeSB0aGF0IGZvciBlYWNoIHJ1bGVzLCB1bmV4cGVjdGVkIGZpZWxkcyBhcmUgbm90Ci0gICAgICAgICMgIHBvcHVsYXRlZAotCi0gICAgICAgIGlmIHNlbGYudHlwZSA9PSAnbWFjJzoKLSAgICAgICAgICAgIGlmIHNlbGYuc3JjX2lwIG9yIHNlbGYuc3JjX2lwX21hc2s6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJ2bnMtYWNjZXNzLWxpc3QtZW50cnkgbWFjIHJ1bGU6IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNyYy1pcC9zcmMtaXAtbWFzayBzcGVjaWZpZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIob3VnaHQgdG8gYmUgbnVsbCkiKQotICAgICAgICAgICAgaWYgc2VsZi5kc3RfaXAgb3Igc2VsZi5kc3RfaXBfbWFzazoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoInZucy1hY2Nlc3MtbGlzdC1lbnRyeSBtYWMgcnVsZToiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZHN0LWlwL2RzdC1pcC1tYXNrIHNwZWNpZmllZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIob3VnaHQgdG8gYmUgbnVsbCkiKQotICAgICAgICAgICAgaWYgc2VsZi5zcmNfdHBfcG9ydF9vcCBvciBzZWxmLnNyY190cF9wb3J0OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigidm5zLWFjY2Vzcy1saXN0LWVudHJ5IG1hYyBydWxlOiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzcmMtdHAtcG9ydC1vcC9zcmMtdG8tcG9ydCBzcGVjaWZpZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKG91Z2h0IHRvIGJlIG51bGwpIikKLSAgICAgICAgICAgIGlmIHNlbGYuZHN0X3RwX3BvcnRfb3Agb3Igc2VsZi5kc3RfdHBfcG9ydDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoInZucy1hY2Nlc3MtbGlzdC1lbnRyeSBtYWMgcnVsZToiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZHN0LXRwLXBvcnQtb3AvZHN0LXRvLXBvcnQgc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihvdWdodCB0byBiZSBudWxsKSIpCi0gICAgICAgICAgICBpZiBzZWxmLmljbXBfdHlwZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoInZucy1hY2Nlc3MtbGlzdC1lbnRyeSBtYWMgcnVsZToiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaWNtcF90eXBlIHNwZWNpZmllZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIob3VnaHQgdG8gYmUgbnVsbCkiKQotICAgICAgICBlbGlmIHNlbGYudHlwZSA9PSAnaXAnIG9yIHJlLm1hdGNoKCdbXGRdKycsIHNlbGYudHlwZSkgb3IgXAotICAgICAgICAgICAgc2VsZi50eXBlID09ICdpY21wJzoKLSAgICAgICAgICAgIGlmIChzZWxmLnNyY190cF9wb3J0X29wICE9IE5vbmUgb3Igc2VsZi5zcmNfdHBfcG9ydCAhPSBOb25lKSBhbmQgXAotICAgICAgICAgICAgICAgICgoc2VsZi5zcmNfdHBfcG9ydF9vcCA9PSBOb25lKSBvciAoc2VsZi5zcmNfdHBfcG9ydCA9PSBOb25lKSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJ2bnMtYWNjZXNzLWxpc3QtZW50cnkgaXAgcnVsZToiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3JjLXRwLXBvcnQtb3Avc3JjLXRvLXBvcnQgc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihib3RoIG9yIG5laXRoZXIpIikKLSAgICAgICAgICAgIGlmIChzZWxmLmRzdF90cF9wb3J0X29wICE9IE5vbmUgb3Igc2VsZi5kc3RfdHBfcG9ydCAhPSBOb25lKSBhbmQgXAotICAgICAgICAgICAgICAgICgoc2VsZi5kc3RfdHBfcG9ydF9vcCA9PSBOb25lKSBvciAoc2VsZi5kc3RfdHBfcG9ydCA9PSBOb25lKSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJ2bnMtYWNjZXNzLWxpc3QtZW50cnkgaXAgcnVsZToiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZHN0LXRwLXBvcnQtb3AvZHN0LXRvLXBvcnQgc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihib3RoIG9yIG5laXRoZXIpIikKLSAgICAgICAgICAgIGlmIHNlbGYuc3JjX21hYyBvciBzZWxmLmRzdF9tYWM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJ2bnMtYWNjZXNzLWxpc3QtZW50cnkgaXAgcnVsZToiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3JjX21hYy9kc3RfbWFjIHNwZWNpZmllZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIob3VnaHQgdG8gYmUgbnVsbCkiKQotICAgICAgICAgICAgaWYgc2VsZi5ldGhlcl90eXBlIG9yIHNlbGYudmxhbjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoInZucy1hY2Nlc3MtbGlzdC1lbnRyeSBpcCBydWxlOiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBldGhlci10eXBlL3ZsYW4gc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihvdWdodCB0byBiZSBudWxsKSIpCi0KLSAgICAgICAgZWxpZiBzZWxmLnR5cGUgPT0gJ3RjcCcgb3Igc2VsZi50eXBlID09ICd1ZHAnOgotICAgICAgICAgICAgaWYgc2VsZi5zcmNfbWFjIG9yIHNlbGYuZHN0X21hYzoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoInZucy1hY2Nlc3MtbGlzdC1lbnRyeSBpcCBydWxlOiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzcmNfbWFjL2RzdF9tYWMgc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihvdWdodCB0byBiZSBudWxsKSIpCi0gICAgICAgICAgICBpZiBzZWxmLmV0aGVyX3R5cGUgb3Igc2VsZi52bGFuOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigidm5zLWFjY2Vzcy1saXN0LWVudHJ5IGlwIHJ1bGU6IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGV0aGVyLXR5cGUvdmxhbiBzcGVjaWZpZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKG91Z2h0IHRvIGJlIG51bGwpIikKLQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICd2bnMtYWNjZXNzLWxpc3QtZW50cnknCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICAgICB7J25hbWUnOiAndm5zX2FjbCcsICAgICAgICAncmVzdF9uYW1lJzogJ3Zucy1hY2Nlc3MtbGlzdCd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3NyY19pcCcsICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdzcmMtaXAnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdzcmNfaXBfbWFzaycsICAgICdyZXN0X25hbWUnOiAnc3JjLWlwLW1hc2snfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdkc3RfaXAnLCAgICAgICAgICdyZXN0X25hbWUnOiAnZHN0LWlwJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZHN0X2lwX21hc2snLCAgICAncmVzdF9uYW1lJzogJ2RzdC1pcC1tYXNrJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3JjX3RwX3BvcnRfb3AnLCAncmVzdF9uYW1lJzogJ3NyYy10cC1wb3J0LW9wJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3JjX3RwX3BvcnQnLCAgICAncmVzdF9uYW1lJzogJ3NyYy10cC1wb3J0J30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZHN0X3RwX3BvcnRfb3AnLCAncmVzdF9uYW1lJzogJ2RzdC10cC1wb3J0LW9wJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZHN0X3RwX3BvcnQnLCAgICAncmVzdF9uYW1lJzogJ2RzdC10cC1wb3J0J30sCi0gICAgICAgICAgICB7J25hbWUnOiAnaWNtcF90eXBlJywgICAgICAncmVzdF9uYW1lJzogJ2ljbXAtdHlwZSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3NyY19tYWMnLCAgICAgICAgJ3Jlc3RfbmFtZSc6ICdzcmMtbWFjJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnZHN0X21hYycsICAgICAgICAncmVzdF9uYW1lJzogJ2RzdC1tYWMnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdldGhlcl90eXBlJywgICAgICdyZXN0X25hbWUnOiAnZXRoZXItdHlwZSd9LAotICAgICAgICAgICAgKQotCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBWTlNJbnRlcmZhY2VBY2wobW9kZWxzLk1vZGVsKToKLSAgICBpbl9vdXRfbGVuZ3RoID0gNAotCi0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIHZuc19hY2wgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgVk5TQWNsLAotICAgICAgICB2ZXJib3NlX25hbWU9J1ZOUyBBY2wgbmFtZScpCi0KLSAgICB2bnNfaW50ZXJmYWNlID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIFZOU0ludGVyZmFjZUNvbmZpZywKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdWTlMgSW50ZXJmYWNlIElEJywKLSAgICAgICAgaGVscF90ZXh0PSdbdm5zIGlkXXxbaW50ZXJmYWNlIGxvbmcgbmFtZV0nKQotCi0gICAgaW5fb3V0ID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdpbi9vdXQnLAotICAgICAgICBoZWxwX3RleHQ9J01hdGNoIG9uIHBhY2tldCBpbnB1dCBvciBvdXRwdXQnLAotICAgICAgICB2YWxpZGF0b3JzPVtWbnNJbnRlcmZhY2VBY2xJbk91dFZhbGlkYXRvcigpXSwKLSAgICAgICAgbWF4X2xlbmd0aD1pbl9vdXRfbGVuZ3RoLAotICAgICAgICApCi0KLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuaWQKLQotICAgIGNsYXNzIENhc3NhbmRyYVNldHRpbmdzOgotICAgICAgICBDT01QT1VORF9LRVlfRklFTERTID0gKCd2bnNfaW50ZXJmYWNlJywgJ3Zuc19hY2wnLCAnaW5fb3V0JykKLQotICAgIGRlZiB2YWxpZGF0ZV91bmlxdWUoc2VsZiwgZXhjbHVkZSA9IE5vbmUpOgotICAgICAgICBhY2xfcGFydHMgPSBzdHIoc2VsZi52bnNfYWNsKS5zcGxpdCgnfCcpCi0gICAgICAgIGludGZfcGFydHMgPSBzdHIoc2VsZi52bnNfaW50ZXJmYWNlKS5zcGxpdCgnfCcpCi0gICAgICAgICMgdmFsaWRhdGUgdHdvIHZucyBwYXJ0cwotICAgICAgICBpZiBhY2xfcGFydHNbMF0gIT0gaW50Zl9wYXJ0c1swXToKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiYWNsJ3Mgdm5zICVzIGRvZW4ndCBtYXRjaCBpbnRlcmZhY2Ugdm5zICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjbF9wYXJ0c1swXSwgaW50Zl9wYXJ0c1swXSkpCi0gICAgICAgIGVycm9yID0gRmFsc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZXhpc3RzID0gVk5TSW50ZXJmYWNlQWNsLm9iamVjdHMuZ2V0KHZuc19pbnRlcmZhY2U9c2VsZi52bnNfaW50ZXJmYWNlLCBpbl9vdXQ9c2VsZi5pbl9vdXQpCi0gICAgICAgICAgICBpZiBleGlzdHM6Ci0gICAgICAgICAgICAgICAgaWYgZXhpc3RzLnZuc19hY2wgIT0gc2VsZi52bnNfYWNsOgotICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFRydWUKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiBlcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiSW50ZXJmYWNlICVzIGFscmVhZHkgaGFzIGFuIEFDTCBpbiB0aGUgJXMgZGlyZWN0aW9uLCBvbmx5IG9uZSBBQ0wgcGVyIGRpcmVjdGlvbiBhbGxvd2VkIiAlIChzZWxmLnZuc19pbnRlcmZhY2UsIHNlbGYuaW5fb3V0KSkKLQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAndm5zLWludGVyZmFjZS1hY2Nlc3MtbGlzdCcKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICd2bnNfYWNsJywgICAgICAgJ3Jlc3RfbmFtZSc6ICd2bnMtYWNjZXNzLWxpc3QnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICd2bnNfaW50ZXJmYWNlJywgJ3Jlc3RfbmFtZSc6ICd2bnMtaW50ZXJmYWNlJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnaW5fb3V0JywgICAgICAgICdyZXN0X25hbWUnOiAnaW4tb3V0J30sCi0gICAgICAgICAgICApCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEEgdmlydHVhbCByb3V0ZXIgaW50ZXJmYWNlIHNlcGFyYXRpb24KLQotY2xhc3MgVmlydHVhbFJvdXRlckludGVyZmFjZSAobW9kZWxzLk1vZGVsKToKLQotICAgIGlkX21heF9sZW5ndGggPSA2NAotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgdmlydHVhbF9yb3V0ZXIgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgVmlydHVhbFJvdXRlciwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdWaXJ0dWFsIFJvdXRlciBJRCcpCi0gICAgIwotICAgICMgVW5pcXVlIG5hbWUgb2YgdGhlIGludGVyZmFjZQotICAgICMKLSAgICB2cmluYW1lID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gJ0ludGVyZmFjZSBOYW1lJywKLSAgICAgICAgaGVscF90ZXh0ICAgID0gJ0EgdW5pcXVlIG5hbWUgZm9yIGEgdmlydHVhbCByb3V0ZXIgaW50ZXJmYWNlJywKLSAgICAgICAgdmFsaWRhdG9ycyAgID0gWyBHZW5lcmFsTmFtZVZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGggICA9IGlkX21heF9sZW5ndGgpCi0gICAgIwotICAgICMgT3JpZ2luIG9mIHRoaXMgY29uZmlndXJlZCBpdGVtCi0gICAgIyAKLSAgICBvcmlnaW4gPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAiT3JpZ2luIiwKLSAgICAgICAgaGVscF90ZXh0ICAgID0gIlZhbHVlczogY2xpLCByZXN0LCBvdGhlciBwYWNrYWdlcyIsCi0gICAgICAgIG1heF9sZW5ndGggICA9IDY0LCAjIGluIGZ1dHVyZSB3ZSBtaWdodCB1c2UgU1cgR1VJRHMgZm9yIHRoaXMgZmllbGQKLSAgICAgICAgYmxhbmsgICAgICAgID0gVHJ1ZSwKLSAgICAgICAgbnVsbCAgICAgICAgID0gVHJ1ZSkKLSAgICAjCi0gICAgIyBXaGV0aGVyIHRoZSBjb25maWd1cmF0aW9uIGlzIGFjdGl2ZSA/IEJ5IGRlZmF1bHQsIGl0IGlzIGFjdGl2ZQotICAgICMgVXNlZCB0byBkaXNhYmxlIHRoZSBjb25maWd1cmF0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIGRlbGV0ZSB0aGUgZW50aXJlCi0gICAgIyBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBjb25zdHJ1Y3QuCi0gICAgIwotICAgIGFjdGl2ZSA9IG1vZGVscy5Cb29sZWFuRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICdBY3RpdmUnLAotICAgICAgICBoZWxwX3RleHQgICAgPSAnSXMgdGhpcyBpbnRlcmZhY2UgYWN0aXZlIChkZWZhdWx0IGlzIFRydWUpJywKLSAgICAgICAgZGVmYXVsdCAgICAgID0gVHJ1ZSkKLSAgICB2bnNfY29ubmVjdGVkID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIFZOUywKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdWTlMgY29ubmVjdGVkIHRvJywKLSAgICAgICAgYmxhbmsgICAgICAgPVRydWUsCi0gICAgICAgIG51bGwgICAgICAgID1UcnVlKQotICAgIHJvdXRlcl9jb25uZWN0ZWQgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgVmlydHVhbFJvdXRlciwKLSAgICAgICAgcmVsYXRlZF9uYW1lPSdyb3V0ZXJfY29ubmVjdGVkJywKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdWaXJ0dWFsIFJvdXRlciBjb25uZWN0ZWQgdG8nLAotICAgICAgICBibGFuayAgICAgICA9VHJ1ZSwKLSAgICAgICAgbnVsbCAgICAgICAgPVRydWUpCi0gICAgCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgX191bmljb2RlX18gKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5pZAotICAgIAotICAgIGRlZiB2YWxpZGF0ZV91bmlxdWUoc2VsZiwgZXhjbHVkZSA9IE5vbmUpOgotICAgICAgICBkZWYgaXNfc2V0KHZhbHVlKToKLSAgICAgICAgICAgIGlmIHZhbHVlICE9IE5vbmUgYW5kIHZhbHVlICE9ICcnOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgIyBmb3Igdm5zIGNvbm5lY3Rpb24sIHZlcmlmeSB0aGF0IG9ubHkgdGhlIFZOU3MgdW5kZXIgdGhlIHNhbWUgdGVuYW50IGNhbiBiZSBjb25uZWN0ZWQKLSAgICAgICAgZXJyb3I9RmFsc2UKLSAgICAgICAgaWYgbm90ICd2bnNfY29ubmVjdGVkJyBpbiBleGNsdWRlOgotICAgICAgICAgICAgaWYgaXNfc2V0KHNlbGYudm5zX2Nvbm5lY3RlZCk6Ci0gICAgICAgICAgICAgICAgdGVuYW50X3Zuc19wYXJ0cyA9IHN0cihzZWxmLnZuc19jb25uZWN0ZWQpLnNwbGl0KCd8JykKLSAgICAgICAgICAgICAgICB0ZW5hbnRfcm91dGVyX3BhcnRzID0gc3RyKHNlbGYudmlydHVhbF9yb3V0ZXIpLnNwbGl0KCd8JykKLSAgICAgICAgICAgICAgICBpZiB0ZW5hbnRfdm5zX3BhcnRzWzBdICE9IHRlbmFudF9yb3V0ZXJfcGFydHNbMF06Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiIFZOUyAlcyBiZWxvbmdzIHRvIHRlbmFudCAlcywgZG9lc24ndCBtYXRjaCB2aXJ0dWFsIHJvdXRlciB0ZW5hbnQgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlbmFudF92bnNfcGFydHNbMV0sdGVuYW50X3Zuc19wYXJ0c1swXSwgdGVuYW50X3JvdXRlcl9wYXJ0c1swXSkpCi0gICAgICAgICAgICAgICAgICAgICMgdmVyaWZ5IHRoZXJlIGNhbiBvbmx5IGJlIG9uZSBjb25uZWN0aW9uIGZvciBvbmUgVk5TCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBleGlzdHMgPSBWaXJ0dWFsUm91dGVySW50ZXJmYWNlLm9iamVjdHMuZ2V0KHZpcnR1YWxfcm91dGVyID0gc2VsZi52aXJ0dWFsX3JvdXRlciwgdm5zX2Nvbm5lY3RlZD1zZWxmLnZuc19jb25uZWN0ZWQpCi0gICAgICAgICAgICAgICAgICAgIGlmIGV4aXN0czoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4aXN0cy52cmluYW1lIT1zZWxmLnZyaW5hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9VHJ1ZQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIiBWTlMgJXMgaGFzIGJlZW4gY29ubmVjdGVkLCBtdWx0aXBsZSBjb25uZWN0aW9ucyBpcyBub3QgYWxsb3dlZCIgJSBzZWxmLnZuc19jb25uZWN0ZWQpCi0gICAgICAgIGVycm9yID0gRmFsc2UgICAgCi0gICAgICAgICMgZm9yIHJvdXRlciBjb25uZWN0aW9uLCB2ZXJpZnkgdGhhdCB0aGUgc2FtZSB2aXJ0dWFsIHJvdXRlciBhcyBteXNlbGYgY2FuJ3QgYmUgY29ubmVjdGVkICAgICAgICAKLSAgICAgICAgaWYgbm90ICdyb3V0ZXJfY29ubmVjdGVkJyBpbiBleGNsdWRlOgotICAgICAgICAgICAgaWYgaXNfc2V0KHNlbGYucm91dGVyX2Nvbm5lY3RlZCk6Ci0gICAgICAgICAgICAgICAgdGVuYW50X3JvdXRlcl9wYXJ0cyA9IHN0cihzZWxmLnJvdXRlcl9jb25uZWN0ZWQpLnNwbGl0KCd8JykKLSAgICAgICAgICAgICAgICB0ZW5hbnRfbXlyb3V0ZXJfcGFydHMgPSBzdHIoc2VsZi52aXJ0dWFsX3JvdXRlcikuc3BsaXQoJ3wnKQotICAgICAgICAgICAgICAgIGlmIHRlbmFudF9yb3V0ZXJfcGFydHNbMF0gPT0gdGVuYW50X215cm91dGVyX3BhcnRzWzBdOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIiBMb2NhbCBsb29wIGNvbm5jZXRpb24gaXMgbm90IGFsbG93ZWQuIikKLSAgICAgICAgICAgICMgdmVyaWZ5IHRoZXJlIGNhbiBvbmx5IGJlIG9uZSBjb25uZWN0aW9uIGZvciBvbmUgdmlydHVhbCByb3V0ZXIKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGV4aXN0cyA9IFZpcnR1YWxSb3V0ZXJJbnRlcmZhY2Uub2JqZWN0cy5nZXQodmlydHVhbF9yb3V0ZXIgPSBzZWxmLnZpcnR1YWxfcm91dGVyLHJvdXRlcl9jb25uZWN0ZWQ9c2VsZi5yb3V0ZXJfY29ubmVjdGVkKQotICAgICAgICAgICAgICAgICAgICBpZiBleGlzdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBleGlzdHMudnJpbmFtZSE9c2VsZi52cmluYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yPVRydWUKLSAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBpZiBlcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCIgVmlydHVhbCBSb3V0ZXIgJXMgaGFzIGJlZW4gY29ubmVjdGVkLCBtdWx0aXBsZSBjb25uZWN0aW9ucyBpcyBub3QgYWxsb3dlZCIgJSBzZWxmLnJvdXRlcl9jb25uZWN0ZWQpCi0KLSAgICBjbGFzcyBDYXNzYW5kcmFTZXR0aW5nczoKLSAgICAgICAgQ09NUE9VTkRfS0VZX0ZJRUxEUyA9ICgndmlydHVhbF9yb3V0ZXInLCAndnJpbmFtZScpCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3ZpcnR1YWxyb3V0ZXItaW50ZXJmYWNlJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICd2bnNfY29ubmVjdGVkJywgICAgICAgICAgICdyZXN0X25hbWUnOiAndm5zLWNvbm5lY3RlZCd9LAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdyb3V0ZXJfY29ubmVjdGVkJywgICAgICAgICdyZXN0X25hbWUnOiAncm91dGVyLWNvbm5lY3RlZCd9LAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICd2aXJ0dWFsX3JvdXRlcicsICAgICAgICAgICdyZXN0X25hbWUnOiAndmlydHVhbC1yb3V0ZXInfSwKLSAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICkKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQSB2aXJ0dWFsIHJvdXRlciBpbnRlcmZhY2UgYWRkcmVzcyBwb29sIHNlcGFyYXRpb24KLQotY2xhc3MgVlJJbnRlcmZhY2VJcEFkZHJlc3NQb29sIChtb2RlbHMuTW9kZWwpOgotCi0gICAgaWRfbWF4X2xlbmd0aCA9IDY0Ci0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB2aXJ0dWFsX3JvdXRlcl9pbnRlcmZhY2UgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgVmlydHVhbFJvdXRlckludGVyZmFjZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdWaXJ0dWFsIFJvdXRlciBJbnRlcmZhY2UgSUQnKQotICAgICMKLSAgICAjIE9yaWdpbiBvZiB0aGlzIGNvbmZpZ3VyZWQgaXRlbQotICAgICMgCi0gICAgb3JpZ2luID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gIk9yaWdpbiIsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICJWYWx1ZXM6IGNsaSwgcmVzdCwgb3RoZXIgcGFja2FnZXMiLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSA2NCwKLSAgICAgICAgYmxhbmsgICAgICAgID0gVHJ1ZSwKLSAgICAgICAgbnVsbCAgICAgICAgID0gVHJ1ZSkKLSAgICBpcF9hZGRyZXNzID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTb3VyY2UgSVAnLAotICAgICAgICBoZWxwX3RleHQ9J0ludGVyZmFjZSBJUCBBZGRyZXNzJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIElwVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aD0xNSwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotICAgIHN1Ym5ldF9tYXNrID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTdWJuZXQgSVAgTWFzaycsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBJcE1hc2tWYWxpZGF0b3IoKSBdLAotICAgICAgICBtYXhfbGVuZ3RoPTE1LAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0gICAgCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgX191bmljb2RlX18gKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5pZAotICAgIAotICAgIGNsYXNzIENhc3NhbmRyYVNldHRpbmdzOgotICAgICAgICBDT01QT1VORF9LRVlfRklFTERTID0gKCd2aXJ0dWFsX3JvdXRlcl9pbnRlcmZhY2UnLCAnaXBfYWRkcmVzcycpCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ2ludGVyZmFjZS1hZGRyZXNzLXBvb2wnCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICAgICAgICAgICAgICAgeyduYW1lJzogJ3ZpcnR1YWxfcm91dGVyX2ludGVyZmFjZScsICAgICAgICAgICAncmVzdF9uYW1lJzogJ3ZpcnR1YWwtcm91dGVyLWludGVyZmFjZSd9LAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdpcF9hZGRyZXNzJywgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdpcC1hZGRyZXNzJ30sCi0gICAgICAgICAgICAgICAgICAgICAgeyduYW1lJzogJ3N1Ym5ldF9tYXNrJywgICAgICAgICAgICAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ3N1Ym5ldC1tYXNrJ30sIAotICAgICAgICAgICAgKQotCi0KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIFZpcnR1YWxSb3V0ZXJHV1Bvb2wgKG1vZGVscy5Nb2RlbCk6Ci0KLSAgICBpZF9tYXhfbGVuZ3RoID0gNjQKLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHZpcnR1YWxfcm91dGVyID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIFZpcnR1YWxSb3V0ZXIsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nVmlydHVhbCBSb3V0ZXIgSUQnKQotICAgICMKLSAgICAjIFVuaXF1ZSBuYW1lIG9mIHRoZSBnYXRld2F5IHBvb2wKLSAgICAjCi0gICAgdnJnd25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnR2F0ZXdheSBQb29sIE5hbWUnLAotICAgICAgICBoZWxwX3RleHQgICAgPSAnQSB1bmlxdWUgbmFtZSBmb3IgYSB2aXJ0dWFsIHJvdXRlciBnYXRld2F5IHBvb2wnLAotICAgICAgICB2YWxpZGF0b3JzICAgPSBbIEdlbmVyYWxOYW1lVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aCAgID0gaWRfbWF4X2xlbmd0aCkKLSAgICAKLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyAoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmlkCi0gICAgCi0gICAgZGVmIHZhbGlkYXRlX3VuaXF1ZShzZWxmLCBleGNsdWRlID0gTm9uZSk6Ci0gICAgICAgIGRlZiBpc19zZXQodmFsdWUpOgotICAgICAgICAgICAgaWYgdmFsdWUgIT0gTm9uZSBhbmQgdmFsdWUgIT0gJyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGNsYXNzIENhc3NhbmRyYVNldHRpbmdzOgotICAgICAgICBDT01QT1VORF9LRVlfRklFTERTID0gKCd2aXJ0dWFsX3JvdXRlcicsICd2cmd3bmFtZScpCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3ZpcnR1YWxyb3V0ZXItZ3dwb29sJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICd2aXJ0dWFsX3JvdXRlcicsICAgICAgICAgICdyZXN0X25hbWUnOiAndmlydHVhbC1yb3V0ZXInfSwKLSAgICAgICAgICAgICkKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQSB2aXJ0dWFsIHJvdXRlciBnYXRld2F5IGFkZHJlc3MgcG9vbCBzZXBhcmF0aW9uCi0KLWNsYXNzIFZSR2F0ZXdheUlwQWRkcmVzc1Bvb2wgKG1vZGVscy5Nb2RlbCk6Ci0KLSAgICBpZF9tYXhfbGVuZ3RoID0gNjQKLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHZpcnR1YWxfcm91dGVyX2d3cG9vbCA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBWaXJ0dWFsUm91dGVyR1dQb29sLAotICAgICAgICB2ZXJib3NlX25hbWU9J1ZpcnR1YWwgUm91dGVyIEdhdGV3YXkgUG9vbCBJRCcpCi0gICAgaXBfYWRkcmVzcyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nR2F0ZXdheSBJUCcsCi0gICAgICAgIGhlbHBfdGV4dD0nR2F0ZXdheSBJUCBBZGRyZXNzJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIElwVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aD0xNSwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotICAgIAotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fIChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuaWQKLSAgICAKLSAgICBjbGFzcyBDYXNzYW5kcmFTZXR0aW5nczoKLSAgICAgICAgQ09NUE9VTkRfS0VZX0ZJRUxEUyA9ICgndmlydHVhbF9yb3V0ZXJfZ3dwb29sJywgJ2lwX2FkZHJlc3MnKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdnYXRld2F5LWFkZHJlc3MtcG9vbCcKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgICAgICAgICAgICB7J25hbWUnOiAndmlydHVhbF9yb3V0ZXJfZ3dwb29sJywgJ3Jlc3RfbmFtZSc6ICd2aXJ0dWFsLXJvdXRlci1nd3Bvb2wnfSwKLSAgICAgICAgICAgICAgICAgICAgICB7J25hbWUnOiAnaXBfYWRkcmVzcycsICdyZXN0X25hbWUnOiAnaXAtYWRkcmVzcyd9LAotICAgICAgICAgICAgKQotCi1jbGFzcyBWaXJ0dWFsUm91dGluZ1J1bGUgKG1vZGVscy5Nb2RlbCk6Ci0KLSAgICBpZF9tYXhfbGVuZ3RoID0gNjQKLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHZpcnR1YWxfcm91dGVyID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIFZpcnR1YWxSb3V0ZXIsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nVmlydHVhbCBSb3V0ZXIgSUQnKQotICAgICMKLSAgICAjIE9yaWdpbiBvZiB0aGlzIGNvbmZpZ3VyZWQgaXRlbQotICAgICMgCi0gICAgb3JpZ2luID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gIk9yaWdpbiIsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICJWYWx1ZXM6IGNsaSwgcmVzdCwgb3RoZXIgcGFja2FnZXMiLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSA2NCwKLSAgICAgICAgYmxhbmsgICAgICAgID0gVHJ1ZSwKLSAgICAgICAgbnVsbCAgICAgICAgID0gVHJ1ZSkKLSAgICBzcmNfaG9zdCA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBIb3N0Q29uZmlnLAotICAgICAgICB2ZXJib3NlX25hbWU9J3NvdXJjZSBIb3N0IElEJywKLSAgICAgICAgaGVscF90ZXh0PSdTb3VyY2UgSG9zdCBJRCB0byBtYXRjaCcsCi0gICAgICAgIGJsYW5rICAgICAgID1UcnVlLAotICAgICAgICBudWxsICAgICAgICA9VHJ1ZSkKLSAgICBzcmNfdGVuYW50ID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIFRlbmFudCwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdzb3VyY2UgdGVuYW50IElEJywKLSAgICAgICAgaGVscF90ZXh0PSdTb3VyY2UgdGVuYW50IElEIHRvIG1hdGNoJywKLSAgICAgICAgYmxhbmsgICAgICAgPVRydWUsCi0gICAgICAgIG51bGwgICAgICAgID1UcnVlKQotICAgIHNyY192bnMgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgVk5TLAotICAgICAgICB2ZXJib3NlX25hbWU9J3NvdXJjZSBWTlMgSUQnLAotICAgICAgICBoZWxwX3RleHQ9J1NvdXJjZSBWTlMgSUQgdG8gbWF0Y2gnLAotICAgICAgICBibGFuayAgICAgICA9VHJ1ZSwKLSAgICAgICAgbnVsbCAgICAgICAgPVRydWUpCi0gICAgc3JjX2lwID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTb3VyY2UgSVAnLAotICAgICAgICBoZWxwX3RleHQ9J1NvdXJjZSBJUCBBZGRyZXNzIHRvIG1hdGNoJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIElwVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aD0xNSwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotICAgIHNyY19pcF9tYXNrID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTb3VyY2UgSVAgTWFzaycsCi0gICAgICAgIGhlbHBfdGV4dD0nTWFzayB0byBtYXRjaCBzb3VyY2UgSVAnLAotICAgICAgICB2YWxpZGF0b3JzPVsgSXBNYXNrVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aD0xNSwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotICAgIGRzdF9ob3N0ID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIEhvc3RDb25maWcsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRGVzdGluYXRpb24gSG9zdCBJRCcsCi0gICAgICAgIGhlbHBfdGV4dD0nRGVzdGluYXRpb24gSG9zdCBJRCB0byBtYXRjaCcsCi0gICAgICAgIHJlbGF0ZWRfbmFtZT0nZGVzdF9ob3N0JywKLSAgICAgICAgYmxhbmsgICAgICAgPVRydWUsCi0gICAgICAgIG51bGwgICAgICAgID1UcnVlKQotICAgIGRzdF90ZW5hbnQgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgVGVuYW50LAotICAgICAgICB2ZXJib3NlX25hbWU9J0Rlc3RpbmF0aW9uIHRlbmFudCBJRCcsCi0gICAgICAgIHJlbGF0ZWRfbmFtZT0nZGVzdF90ZW5hbnQnLAotICAgICAgICBibGFuayAgICAgICA9VHJ1ZSwKLSAgICAgICAgbnVsbCAgICAgICAgPVRydWUpCi0gICAgZHN0X3ZucyA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBWTlMsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRGVzdGluYXRpb24gVk5TIElEJywKLSAgICAgICAgcmVsYXRlZF9uYW1lPSdkZXN0X3ZucycsCi0gICAgICAgIGJsYW5rICAgICAgID1UcnVlLAotICAgICAgICBudWxsICAgICAgICA9VHJ1ZSkKLSAgICBkc3RfaXAgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0Rlc3RpbmF0aW9uIElQJywKLSAgICAgICAgaGVscF90ZXh0PSdEZXN0aW5hdGlvbiBJUCBBZGRyZXNzIHRvIG1hdGNoJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIElwVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aD0xNSwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotICAgIGRzdF9pcF9tYXNrID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdEZXN0aW5hdGlvbiBJUCBNYXNrJywKLSAgICAgICAgaGVscF90ZXh0PSdNYXNrIHRvIG1hdGNoIGRlc3RpbmF0aW9uIElQJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIElwTWFza1ZhbGlkYXRvcigpIF0sCi0gICAgICAgIG1heF9sZW5ndGg9MTUsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLSAgICBvdXRnb2luZ19pbnRmID0gbW9kZWxzLkZvcmVpZ25LZXkoCi0gICAgICAgIFZpcnR1YWxSb3V0ZXJJbnRlcmZhY2UsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nT3V0Z29pbmcgSW50ZXJmYWNlJywKLSAgICAgICAgYmxhbmsgICAgICAgPVRydWUsCi0gICAgICAgIG51bGwgICAgICAgID1UcnVlKQotICAgIGdhdGV3YXlfcG9vbCA9IG1vZGVscy5Gb3JlaWduS2V5KAotICAgICAgICBWaXJ0dWFsUm91dGVyR1dQb29sLAotICAgICAgICB2ZXJib3NlX25hbWU9J0dhdGV3YXkgcG9vbCcsCi0gICAgICAgIGJsYW5rICAgICAgID1UcnVlLAotICAgICAgICBudWxsICAgICAgICA9VHJ1ZSkKLSAgICBuaF9pcCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nTmV4dCBIb3AgSVAnLAotICAgICAgICBoZWxwX3RleHQ9J05leHQgSG9wIElQIEFkZHJlc3MnLAotICAgICAgICB2YWxpZGF0b3JzPVsgSXBWYWxpZGF0b3IoKSBdLAotICAgICAgICBtYXhfbGVuZ3RoPTE1LAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0gICAgYWN0aW9uID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdwZXJtaXQgb3IgZGVueScsCi0gICAgICAgIGhlbHBfdGV4dD0iJ3Blcm1pdCcgb3IgJ2RlbnknIiwKLSAgICAgICAgZGVmYXVsdD0ncGVybWl0JywKLSAgICAgICAgbWF4X2xlbmd0aD0xNiwKLSAgICAgICAgdmFsaWRhdG9ycz1bIFZuc0FjbEVudHJ5QWN0aW9uVmFsaWRhdG9yKCkgXSkKLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyAoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmlkCi0gICAgCi0gICAgZGVmIHZhbGlkYXRlX3VuaXF1ZShzZWxmLCBleGNsdWRlID0gTm9uZSk6Ci0gICAgICAgIGRlZiBpc19zZXQodmFsdWUpOgotICAgICAgICAgICAgaWYgdmFsdWUgIT0gTm9uZSBhbmQgdmFsdWUgIT0gJyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAjdmVyaWZ5IHRoZSBvdXRnb2luZyBpbnRlcmZhY2UgY2FuIG9ubHkgYmUgb24gdGhlIGxvY2FsIHZpcnR1YWwgcm91dGVyIGludGVyZmFjZQotICAgICAgICBpZiBub3QgJ291dGdvaW5nX2ludGYnIGluIGV4Y2x1ZGU6Ci0gICAgICAgICAgICBpZiBpc19zZXQoc2VsZi5vdXRnb2luZ19pbnRmKToKLSAgICAgICAgICAgICAgICByb3V0ZXJfcGFydHMgPSBzdHIoc2VsZi5vdXRnb2luZ19pbnRmKS5zcGxpdCgnfCcpCi0gICAgICAgICAgICAgICAgbXlyb3V0ZXJfcGFydHMgPSBzdHIoc2VsZi52aXJ0dWFsX3JvdXRlcikuc3BsaXQoJ3wnKQotICAgICAgICAgICAgICAgIGlmIChyb3V0ZXJfcGFydHNbMF0gIT0gbXlyb3V0ZXJfcGFydHNbMF0pIG9yIChyb3V0ZXJfcGFydHNbMV0gIT0gbXlyb3V0ZXJfcGFydHNbMV0pOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIiBvdXRnb2luZyBpbnRlcmZhY2UgaGFzIHRvIGJlIGxvY2FsIHRvIHZpcnR1YWwgcm91dGVyOiAlc3wlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChteXJvdXRlcl9wYXJ0c1swXSxteXJvdXRlcl9wYXJ0c1sxXSkpCi0gICAgICAgICN2ZXJpZnkgdGhlIGdhdGV3YXkgcG9vbCBiZWxvbmdzIHRvIHRoZSBsb2NhbCB2aXJ0dWFsIHJvdXRlcgotICAgICAgICBpZiBub3QgJ2dhdGV3YXlfcG9vbCcgaW4gZXhjbHVkZToKLSAgICAgICAgICAgIGlmIGlzX3NldChzZWxmLmdhdGV3YXlfcG9vbCk6Ci0gICAgICAgICAgICAgICAgcm91dGVyX3BhcnRzID0gc3RyKHNlbGYuZ2F0ZXdheV9wb29sKS5zcGxpdCgnfCcpCi0gICAgICAgICAgICAgICAgbXlyb3V0ZXJfcGFydHMgPSBzdHIoc2VsZi52aXJ0dWFsX3JvdXRlcikuc3BsaXQoJ3wnKQotICAgICAgICAgICAgICAgIGlmIChyb3V0ZXJfcGFydHNbMF0gIT0gbXlyb3V0ZXJfcGFydHNbMF0pIG9yIChyb3V0ZXJfcGFydHNbMV0gIT0gbXlyb3V0ZXJfcGFydHNbMV0pOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIiBnYXRld2F5IHBvb2wgaGFzIHRvIGJlIGxvY2FsIHRvIHZpcnR1YWwgcm91dGVyOiAlc3wlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChteXJvdXRlcl9wYXJ0c1swXSxteXJvdXRlcl9wYXJ0c1sxXSkpCi0KLSAgICBjbGFzcyBDYXNzYW5kcmFTZXR0aW5nczoKLSAgICAgICAgQ09NUE9VTkRfS0VZX0ZJRUxEUyA9ICgndmlydHVhbF9yb3V0ZXInLCAnc3JjX2hvc3QnLCAnc3JjX3RlbmFudCcsJ3NyY192bnMnLCdzcmNfaXAnLCdzcmNfaXBfbWFzaycsICdkc3RfaG9zdCcsICdkc3RfdGVuYW50JywnZHN0X3ZucycsJ2RzdF9pcCcsJ2RzdF9pcF9tYXNrJykKLQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAndmlydHVhbHJvdXRlci1yb3V0aW5ncnVsZScKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgICAgICAgICAgICB7J25hbWUnOiAndmlydHVhbF9yb3V0ZXInLCAgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICd2aXJ0dWFsLXJvdXRlcid9LAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdzcmNfdGVuYW50JywgICAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ3NyYy10ZW5hbnQnfSwKLSAgICAgICAgICAgICAgICAgICAgICB7J25hbWUnOiAnZHN0X3RlbmFudCcsICAgICAgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdkc3QtdGVuYW50J30sCi0gICAgICAgICAgICAgICAgICAgICAgeyduYW1lJzogJ3NyY192bnMnLCAgICAgICAgICAgICAgICAgICdyZXN0X25hbWUnOiAnc3JjLXZucyd9LAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdzcmNfaXAnLCAgICAgICAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ3NyYy1pcCd9LAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdzcmNfaXBfbWFzaycsICAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ3NyYy1pcC1tYXNrJ30sCi0gICAgICAgICAgICAgICAgICAgICAgeyduYW1lJzogJ2RzdF9pcCcsICAgICAgICAgICAgICAgICAgICdyZXN0X25hbWUnOiAnZHN0LWlwJ30sCi0gICAgICAgICAgICAgICAgICAgICAgeyduYW1lJzogJ2RzdF9pcF9tYXNrJywgICAgICAgICAgICAgICdyZXN0X25hbWUnOiAnZHN0LWlwLW1hc2snfSwKLSAgICAgICAgICAgICAgICAgICAgICB7J25hbWUnOiAnbmhfaXAnLCAgICAgICAgICAgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICduaC1pcCd9LAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdvdXRnb2luZ19pbnRmJywgICAgICAgICAgICAncmVzdF9uYW1lJzogJ291dGdvaW5nLWludGYnfSwKLSAgICAgICAgICAgICAgICAgICAgICB7J25hbWUnOiAnZHN0X2hvc3QnLCAgICAgICAgICAgICAgICAgJ3Jlc3RfbmFtZSc6ICdkc3QtaG9zdCd9LAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdzcmNfaG9zdCcsICAgICAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ3NyYy1ob3N0J30sICAgCi0gICAgICAgICAgICAgICAgICAgICAgeyduYW1lJzogJ2RzdF92bnMnLCAgICAgICAgICAgICAgICAgICdyZXN0X25hbWUnOiAnZHN0LXZucyd9LAotICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdnYXRld2F5X3Bvb2wnLCAgICAgICAgICAgICAncmVzdF9uYW1lJzogJ2dhdGV3YXktcG9vbCd9LAotICAgICAgICAgICAgKQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSIiIgotY2xhc3MgVGFnKG1vZGVscy5Nb2RlbCk6Ci0gICAgbmFtZXNwYWNlX2xlbmd0aCA9IDY0Ci0gICAgbmFtZV9sZW5ndGggPSA2NAotICAgIHZhbHVlX2xlbmd0aCA9IDY0Ci0KLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgbmFtZXNwYWNlID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdUYWcgTmFtZXNwYWNlJywKLSAgICAgICAgaGVscF90ZXh0PSJOYW1lc3BhY2Ugb2YgdGhlIHRhZyIsCi0gICAgICAgIG1heF9sZW5ndGg9bmFtZXNwYWNlX2xlbmd0aCkKLQotICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1RhZyBOYW1lJywKLSAgICAgICAgaGVscF90ZXh0PSJOYW1lIG9mIHRoZSB0YWciLAotICAgICAgICBtYXhfbGVuZ3RoPW5hbWVfbGVuZ3RoKQotCi0gICAgdmFsdWUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1RhZyBWYWx1ZScsCi0gICAgICAgIGhlbHBfdGV4dD0iVmFsdWUgb2YgdGhlIHRhZyIsCi0gICAgICAgIG1heF9sZW5ndGg9dmFsdWVfbGVuZ3RoKQotCi0gICAgcGVyc2lzdCA9IG1vZGVscy5Cb29sZWFuRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0ncGVyc2lzdCcsCi0gICAgICAgIGhlbHBfdGV4dD0nRm9yIGFueSBjbGkgY29uZmlndXJlZCB0YWcsIGluY2x1ZGUgaW4gcnVubmluZy1jb25maWcnLAotICAgICAgICBkZWZhdWx0PVRydWUpCi0KLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuaWQKLQotICAgIGNsYXNzIENhc3NhbmRyYVNldHRpbmdzOgotICAgICAgICBDT01QT1VORF9LRVlfRklFTERTID0gKCduYW1lc3BhY2UnLCAnbmFtZScsICd2YWx1ZScpCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3RhZycKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgVGFnTWFwcGluZyhtb2RlbHMuTW9kZWwpOgotICAgIGhvc3RfaWRfbGVuZ3RoID0gMTcKLSAgICBzd2l0Y2hfaWRfbGVuZ3RoID0gMjMKLSAgICBpZl9uYW1lX2xlbiA9IDMyCi0gICAgdmxhbl9zdHJfbGVuID0gNAotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICB0YWcgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgICAgIFRhZykKLQotICAgIG1hYyA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0iTUFDIEFkZHJlc3MiLAotICAgICAgICBtYXhfbGVuZ3RoPWhvc3RfaWRfbGVuZ3RoLCAKLSAgICAgICAgdmFsaWRhdG9ycyA9IFt2YWxpZGF0ZV9tYWNfYWRkcmVzc10sCi0gICAgICAgIGRlZmF1bHQ9IiIsCi0gICAgICAgIGJsYW5rPVRydWUpCi0KLSAgICB2bGFuID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdWTEFOJywKLSAgICAgICAgbWF4X2xlbmd0aD12bGFuX3N0cl9sZW4sIAotICAgICAgICBoZWxwX3RleHQ9J1ZMQU4gTnVtYmVyLCBpbiB0aGUgcmFuZ2Ugb2YgMS00MDk1LiA0MDk1IG1lYW5zIHVudGFnZ2VkJywKLSAgICAgICAgdmFsaWRhdG9ycz1bVmxhblN0cmluZ1ZhbGlkYXRvcigpXSwKLSAgICAgICAgZGVmYXVsdD0iIiwKLSAgICAgICAgYmxhbms9VHJ1ZSkKLSAgICAKLSAgICBkcGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTd2l0Y2ggRFBJRCcsCi0gICAgICAgIGhlbHBfdGV4dD0nU3dpdGNoIERQSUQgLSA2NC1iaXQgaGV4IHNlcGFyYXRlZCBieSA6JywKLSAgICAgICAgbWF4X2xlbmd0aD1zd2l0Y2hfaWRfbGVuZ3RoLCAKLSAgICAgICAgdmFsaWRhdG9ycz1bIHZhbGlkYXRlX2RwaWQgXSwKLSAgICAgICAgZGVmYXVsdD0iIiwKLSAgICAgICAgYmxhbms9VHJ1ZSkKLQotICAgIGlmbmFtZSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nSWYgTmFtZSByZWd1bGFyIGV4cHJlc3Npb24nLAotICAgICAgICBtYXhfbGVuZ3RoPWlmX25hbWVfbGVuLAotICAgICAgICBkZWZhdWx0PSIiLAotICAgICAgICB2YWxpZGF0b3JzPVsgU2FmZUZvclByaW1hcnlLZXlWYWxpZGF0b3IoKSBdLAotICAgICAgICBibGFuaz1UcnVlKQotCi0gICAgIwotICAgICMgZW5kIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmlkCi0KLSAgICBjbGFzcyBDYXNzYW5kcmFTZXR0aW5nczoKLSAgICAgICAgQ09NUE9VTkRfS0VZX0ZJRUxEUyA9ICgndGFnJywgJ21hYycsICd2bGFuJywgJ2RwaWQnLCAnaWZuYW1lJykKLQotICAgIGRlZiB2YWxpZGF0ZV91bmlxdWUoc2VsZiwgZXhjbHVkZSA9IE5vbmUpOgotICAgICAgICBpZiBzZWxmLm1hYyAhPSAnJzoKLSAgICAgICAgICAgIHNlbGYubWFjID0gc2VsZi5tYWMubG93ZXIoKQotCi0gICAgICAgIGlmIHNlbGYuZHBpZCAhPSAnJzoKLSAgICAgICAgICAgIHNlbGYuZHBpZCA9IHNlbGYuZHBpZC5sb3dlcigpCi0KLSAgICAgICAgIyBkb24ndCBhbGxvdyBhbGwgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBhc3NvY2lhdGlvbgotICAgICAgICBpZiBzZWxmLm1hYyA9PSAnJyBhbmQgc2VsZi52bGFuID09ICcnIGFuZCBcCi0gICAgICAgICAgICBzZWxmLmRwaWQgPT0gJycgYW5kIHNlbGYuaWZuYW1lID09ICcnOgotICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIk1hdGNoIHdpdGhvdXQgYW55IG1hdGNoaW5nIGZpZWxkcyIpCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3RhZy1tYXBwaW5nJwotIiIiCi0jCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotY2xhc3MgVGVjaFN1cHBvcnRDb25mKG1vZGVscy5Nb2RlbCk6Ci0KLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgY21kX3R5cGUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1R5cGUgb2YgY29tbWFuZCcsCi0gICAgICAgIGhlbHBfdGV4dD0nRW50ZXIgY2xpIG9yIHNoZWxsJywKLSAgICAgICAgbWF4X2xlbmd0aD0zMikKLQotICAgIGNtZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIG1heF9sZW5ndGg9MjU2LAotICAgICAgICB2ZXJib3NlX25hbWU9J0NvbW1hbmQgbmFtZScsCi0gICAgICAgIGhlbHBfdGV4dCA9ICdDb21tYW5kIGV4Y3V0ZWQgYnkgc2hvdyB0ZWNoLXN1cHBvcnQnKQotCi0KLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuaWQKLQotICAgIGNsYXNzIENhc3NhbmRyYVNldHRpbmdzOgotICAgICAgICBDT01QT1VORF9LRVlfRklFTERTID0gKCdjbWRfdHlwZScsICdjbWQnKQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICd0ZWNoLXN1cHBvcnQtY29uZmlnJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgeyduYW1lJzogJ2NtZF90eXBlJywgICdyZXN0X25hbWUnOiAnY21kLXR5cGUnfSwKLSAgICAgICAgICAgICkKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgVGFjYWNzUGx1c0NvbmZpZyhtb2RlbHMuTW9kZWwpOgotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBpZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIHZlcmJvc2VfbmFtZT0ndGFjYWNzIHNpbmdsZXRvbicsCi0gICAgICAgIGRlZmF1bHQ9J3RhY2FjcycsCi0gICAgICAgIG1heF9sZW5ndGg9MTYpCi0KLSAgICB0YWNhY3NfcGx1c19hdXRobiA9IG1vZGVscy5Cb29sZWFuRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nVEFDQUNTKyBBdXRoZW50aWNhdGlvbiBFbmFibGVkJywKLSAgICAgICAgaGVscF90ZXh0PSdFbmFibGUgVEFDQUNTKyBhdXRoZW50aWNhdGlvbiBieSBzZXR0aW5nIHRvIHRydWUnLAotICAgICAgICBkZWZhdWx0PUZhbHNlCi0gICAgICAgICkKLQotICAgIHRhY2Fjc19wbHVzX2F1dGh6ID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdUQUNBQ1MrIEF1dGhvcml6YXRpb24gRW5hYmxlZCcsCi0gICAgICAgIGhlbHBfdGV4dD0nRW5hYmxlIFRBQ0FDUysgYXV0aG9yaXphdGlvbiBieSBzZXR0aW5nIHRvIHRydWUnLAotICAgICAgICBkZWZhdWx0PUZhbHNlCi0gICAgICAgICkKLQotICAgIHRhY2Fjc19wbHVzX2FjY3QgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1RBQ0FDUysgQWNjb3VudGluZyBFbmFibGVkJywKLSAgICAgICAgaGVscF90ZXh0PSdFbmFibGUgVEFDQUNTKyBhY2NvdW50aW5nIGJ5IHNldHRpbmcgdG8gdHJ1ZScsCi0gICAgICAgIGRlZmF1bHQ9RmFsc2UKLSAgICAgICAgKQotCi0gICAgbG9jYWxfYXV0aG4gPSBtb2RlbHMuQm9vbGVhbkZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0xvY2FsIEF1dGhlbnRpY2F0aW9uIEVuYWJsZWQnLAotICAgICAgICBoZWxwX3RleHQ9J0VuYWJsZSBsb2NhbCBhdXRoZW50aWNhdGlvbiBieSBzZXR0aW5nIHRvIHRydWUnLAotICAgICAgICBkZWZhdWx0PVRydWUKLSAgICAgICAgKQotCi0gICAgbG9jYWxfYXV0aHogPSBtb2RlbHMuQm9vbGVhbkZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0xvY2FsIEF1dGhvcml6YXRpb24gRW5hYmxlZCcsCi0gICAgICAgIGhlbHBfdGV4dD0nRW5hYmxlIGxvY2FsIGF1dGhvcml6YXRpb24gYnkgc2V0dGluZyB0byB0cnVlJywKLSAgICAgICAgZGVmYXVsdD1UcnVlCi0gICAgICAgICkKLQotICAgIHRpbWVvdXQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9IlRBQ0FDUysgU2VydmVyIFRpbWVvdXQiLAotICAgICAgICBoZWxwX3RleHQ9J1NldCBUQUNBQ1MrIHNlcnZlciB0aW1lb3V0IGluIHNlY29uZHMnLAotICAgICAgICBkZWZhdWx0PTAsCi0gICAgICAgIHZhbGlkYXRvcnM9WyBSYW5nZVZhbGlkYXRvcigwLCAyKioxNi0xKSBdKQotICAgIAotICAgIGtleSA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nVEFDQUNTKyBQcmUtc2hhcmVkIEtleScsCi0gICAgICAgIGhlbHBfdGV4dD0ncHJlLXNoYXJlZCBrZXkgdG8gY29ubmVjdCB0byBUQUNBQ1MrIHNlcnZlcihzKScsCi0gICAgICAgIG1heF9sZW5ndGg9MjU2LAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBkZWZhdWx0PSIiKSAgICAKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICd0YWNhY3MtcGx1cy1jb25maWcnCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICAgICB7J25hbWUnOiAndGFjYWNzX3BsdXNfYXV0aG4nLCAncmVzdF9uYW1lJzogJ3RhY2Fjcy1wbHVzLWF1dGhuJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAndGFjYWNzX3BsdXNfYXV0aHonLCAncmVzdF9uYW1lJzogJ3RhY2Fjcy1wbHVzLWF1dGh6J30sCi0gICAgICAgICAgICB7J25hbWUnOiAndGFjYWNzX3BsdXNfYWNjdCcsICAncmVzdF9uYW1lJzogJ3RhY2Fjcy1wbHVzLWFjY3QnfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdsb2NhbF9hdXRobicsICAgICAgICdyZXN0X25hbWUnOiAnbG9jYWwtYXV0aG4nfSwKLSAgICAgICAgICAgIHsnbmFtZSc6ICdsb2NhbF9hdXRoeicsICAgICAgICdyZXN0X25hbWUnOiAnbG9jYWwtYXV0aHonfSwKLSAgICAgICAgICAgICkKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgVGFjYWNzUGx1c0hvc3QobW9kZWxzLk1vZGVsKToKLSAgICAjCi0gICAgIyBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgaXAgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBwcmltYXJ5X2tleT1UcnVlLAotICAgICAgICB2ZXJib3NlX25hbWU9J0lQIEFkZHJlc3MnLAotICAgICAgICBoZWxwX3RleHQ9J0lQIEFkZHJlc3MgZm9yIFRBQ0FDUysgc2VydmVyJywKLSAgICAgICAgdmFsaWRhdG9ycz1bIElwVmFsaWRhdG9yKCkgXSwKLSAgICAgICAgbWF4X2xlbmd0aD0xNSkKLSAgICAKLSAgICB0aW1lc3RhbXAgPSBtb2RlbHMuUG9zaXRpdmVJbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0ndGltZXN0YW1wJywKLSAgICAgICAgaGVscF90ZXh0PSdUaW1lc3RhbXAgdG8gb3JkZXIgdGhlIHRhY2FjcyBzZXJ2ZXJzJywKLSAgICAgICAgZGVmYXVsdCA9IGdldF90aW1lc3RhbXAsCi0gICAgICAgICkKLSAgICAKLSAgICBrZXkgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1RBQ0FDUysgUGVyLWhvc3QgUHJlLXNoYXJlZCBLZXknLAotICAgICAgICBoZWxwX3RleHQ9J3ByZS1zaGFyZWQga2V5IHRvIGNvbm5lY3QgdG8gdGhpcyBUQUNBQ1MrIHNlcnZlcicsCi0gICAgICAgIG1heF9sZW5ndGg9MjU2LAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBkZWZhdWx0PSIiKSAgICAKLQotICAgICMKLSAgICAjIGVuZCBmaWVsZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiVzIiAlIHNlbGYuaXAKLQotICAgIGRlZiB2YWxpZGF0ZV91bmlxdWUoc2VsZiwgZXhjbHVkZSA9IE5vbmUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleGlzdHMgPSBUYWNhY3NQbHVzSG9zdC5vYmplY3RzLmdldChpcCA9IHNlbGYuaXApCi0KLSAgICAgICAgICAgIGlmIGV4aXN0cy50aW1lc3RhbXAgIT0gc2VsZi50aW1lc3RhbXA6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lc3RhbXAgPSBleGlzdHMudGltZXN0YW1wCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAndGFjYWNzLXBsdXMtaG9zdCcKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgICkKLQotIwotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBTbm1wU2VydmVyQ29uZmlnKG1vZGVscy5Nb2RlbCk6Ci0gICAgIwotICAgICMgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgICMgd2UganVzdCBoYXZlIG9uZSByb3cgZW50cnkgaW4gdGhlIHRhYmxlIHRvIHVwZGF0ZSwgc28gc3RhdGljIHByaW1hcnkga2V5Ci0gICAgaWQgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBwcmltYXJ5X2tleT1UcnVlLAotICAgICAgICB2ZXJib3NlX25hbWU9J3NubXAnLAotICAgICAgICAjIGRlZmF1bHQ9J3NubXAnLAotICAgICAgICBtYXhfbGVuZ3RoPTE2KQotCi0gICAgIwotICAgICMgRW5hYmxlIHN0YXRlIG9mIHRoZSBTTk1QIHNlcnZlci9hZ2VudCBvbiB0aGUgY29udHJvbGxlcgotICAgICMKLSAgICBzZXJ2ZXJfZW5hYmxlID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTTk1QIFNlcnZlciBlbmFibGVkJywKLSAgICAgICAgaGVscF90ZXh0PSdFbmFibGUgU05NUCBzZXJ2ZXIgYnkgc2V0dGluZyB0byB0cnVlJywKLSAgICAgICAgZGVmYXVsdD1GYWxzZQotICAgICAgICApCi0gICAgIwotICAgICMgQ29tbXVuaXR5IHN0cmluZyBmb3IgYWNjZXNzaW5nIHRoZSBTTk1QIHNlcnZlciBvbiB0aGUgY29udHJvbGxlcgotICAgICMKLSAgICBjb21tdW5pdHkgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWUgPSAnQ29tbXVuaXR5IFN0cmluZycsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICJDb21tdW5pdHkgU3RyaW5nIHRvIGFjY2VzcyBTTk1QIGRhdGEiLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSAxMjgsCi0gICAgICAgIG51bGwgICAgICAgICA9IFRydWUsCi0gICAgICAgIGJsYW5rICAgICAgICA9IFRydWUsCi0gICAgICAgICkKLSAgICAjCi0gICAgIyBMb2NhdGlvbiBzdHJpbmcgb2YgdGhlIFNOTVAgc2VydmVyIG9uIHRoZSBjb250cm9sbGVyCi0gICAgIwotICAgIGxvY2F0aW9uID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lID0gJ1N5c3RlbSBMb2NhdGlvbicsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICJMb2NhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGNvbnRyb2xsZXIgYXBwbGlhbmNlIiwKLSAgICAgICAgbWF4X2xlbmd0aCAgID0gMTI4LAotICAgICAgICBudWxsICAgICAgICAgPSBUcnVlLAotICAgICAgICBibGFuayAgICAgICAgPSBUcnVlCi0gICAgICAgICkKLSAgICAjCi0gICAgIyBDb250YWN0IHN0cmluZyBvZiB0aGUgU05NUCBzZXJ2ZXIgb24gdGhlIGNvbnRyb2xsZXIKLSAgICAjCi0gICAgY29udGFjdCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9ICdTeXN0ZW0gQ29udGFjdCcsCi0gICAgICAgIGhlbHBfdGV4dCAgICA9ICJDb250YWN0IGluZm9ybWF0aW9uIGZvciB0aGUgY29udHJvbGxlciBhcHBsaWFuY2UiLAotICAgICAgICBtYXhfbGVuZ3RoICAgPSAxMjgsCi0gICAgICAgIG51bGwgICAgICAgICA9IFRydWUsCi0gICAgICAgIGJsYW5rICAgICAgICA9IFRydWUsCi0gICAgICAgICkKLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuaWQKLQotICAgIGRlZiB2YWxpZGF0ZV91bmlxdWUoc2VsZiwgZXhjbHVkZSA9IE5vbmUpOgotICAgICAgICBpZiBzZWxmLmlkICE9ICdzbm1wJzoKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiT25seSBzaW5nbGUgc25tcCByZWNvcmQgZXhpc3RzIikKLQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAnc25tcC1zZXJ2ZXItY29uZmlnJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgeyduYW1lJzogJ3NlcnZlcl9lbmFibGUnLCAgICAgICAncmVzdF9uYW1lJzogJ3NlcnZlci1lbmFibGUnfSwKLSAgICAgICAgICAgICkKLQotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgSW1hZ2VEcm9wVXNlcihtb2RlbHMuTW9kZWwpOgotICAgICMKLSAgICAjIGZpZWxkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAjIHdlIGp1c3QgaGF2ZSBvbmUgcm93IGVudHJ5IGluIHRoZSB0YWJsZSB0byB1cGRhdGUsIHNvIHN0YXRpYyBwcmltYXJ5IGtleQotICAgIGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgcHJpbWFyeV9rZXk9VHJ1ZSwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdpbWFnZWRyb3B1c2VyJywKLSAgICAgICAgZGVmYXVsdD0naW1hZ2Vkcm9wdXNlcicsCi0gICAgICAgIG1heF9sZW5ndGg9MTYpCi0KLSAgICBpbWFnZXNfdXNlcl9zc2hfa2V5ID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdJbWFnZSBkcm9wIHVzZXIgU1NIIHB1YmxpYyBrZXknLAotICAgICAgICBoZWxwX3RleHQ9J1RoZSBTU0ggcHVibGljIFJTQSBrZXkgZm9yIHRoZSBpbWFnZXMgdXNlcicsCi0gICAgICAgIGRlZmF1bHQ9JycsCi0gICAgICAgIG1heF9sZW5ndGg9NjAwCi0gICAgICAgICkKLSAgICAjCi0gICAgIyBlbmQgZmllbGRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuaWQKLSAKLSAgICBkZWYgdmFsaWRhdGVfdW5pcXVlKHNlbGYsIGV4Y2x1ZGUgPSBOb25lKToKLSAgICAgICAgaWYgc2VsZi5pZCAhPSAnaW1hZ2Vkcm9wdXNlcic6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIk9ubHkgc2luZ2xlIEltYWdlRHJvcFVzZXIgcmVjb3JkIGV4aXN0cyIpCi0KLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ2ltYWdlLWRyb3AtdXNlcicKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICdpbWFnZXNfdXNlcl9zc2hfa2V5JywgJ3Jlc3RfbmFtZSc6ICdpbWFnZXMtdXNlci1zc2gta2V5J30sCi0gICAgICAgICAgICApCi0KLSMgcm9idjogQ29tbWVudGluZyBvdXQgZm9yIG5vdy4gRG9lc24ndCB3b3JrIHdpdGggQ2Fzc2FuZHJhIGJhY2tlbmQKLSNjbGFzcyBDb25zb2xlVXNlcihVc2VyKToKLSMKLSMgICAgY2xhc3MgTWV0YToKLSMgICAgICAgIHByb3h5ID0gVHJ1ZQotIwotIyAgICBjbGFzcyBSZXN0OgotIyAgICAgICAgTkFNRSA9ICd1c2VyJwotIiIiCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NvbnRyb2xsZXIvbm90aWZpY2F0aW9uLnB5IGIvY2xpL3NkbmNvbi9jb250cm9sbGVyL25vdGlmaWNhdGlvbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmE5Yzk3YS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NvbnRyb2xsZXIvbm90aWZpY2F0aW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1mcm9tIGRqYW5nby5kYi5tb2RlbHMuc2lnbmFscyBpbXBvcnQgcG9zdF9zYXZlLCBwb3N0X2RlbGV0ZQotaW1wb3J0IHVybGxpYjIKLWltcG9ydCBqc29uCi0KLSMgRklYTUU6IEl0J3Mgbm90IHRocmVhZC1zYWZlIHRvIHVzZSBnbG9iYWxzIGhlcmUsCi0jIGJ1dCB3ZSBjdXJyZW50bHkgb25seSBhbGxvdyBhIHNpbmdsZSB0aHJlYWQgcGVyIERqYW5nbyBwcm9jZXNzLAotIyBzbyB0aGlzIHNob3VsZG4ndCBjYXVzZSBhIHByb2JsZW0uIElmL3doZW4gd2Ugc3VwcG9ydCBtdWx0aXBsZQotIyB0aHJlYWRzIHdlIGNvdWxkIGZpeCB0aGlzIGJ5IHVzaW5nIHRocmVhZCBsb2NhbCB2YXJpYWJsZXMuCi0jIFRvIHN1cHBvcnQgdHJ1ZSBiYXRjaCBub3RpZmljYXRpb25zIGFjcm9zcyBtdWx0aXBsZSBSRVNUIGNhbGxzCi0jIHdlJ2QgbmVlZCB0byBhY3R1YWxseSBzdG9yZSB0aGUgYmF0Y2hlZCB1cCBhY3Rpb25zIGluIHRoZSBEQiwKLSMgc2luY2UgdGhlIGluZGl2aWR1YWwgUkVTVCBjYWxscyB3b3VsZCBiZSBkaXNwYXRjaGVkIHRvCi0jIG11bHRpcGxlIHByb2Nlc3Nlcywgc28gd2UgY291bGRuJ3QgdXNlIGluLW1lbW9yeSBiYXRjaGluZyBvZgotIyB0aGUgYWN0aW9ucyBsaWtlIHdlIGRvIG5vdy4gVGhlIGN1cnJlbnQgYmF0Y2ggc3VwcG9ydCBvbmx5Ci0jIHdvcmtzIGZvciBzaW5nbGUgUkVTVCB1cGRhdGVzL2RlbGV0ZXMgd2l0aCBxdWVyeSBwYXJhbWV0ZXJzIHRvCi0jIHNlbGVjdCB0aGUgcmVjb3JkcyB0aGF0IGNhbiBhZmZlY3QgbXVsdGlwbGUgcmVjb3Jkcy4KLW5vdGlmaWNhdGlvbnNfaW5pdGVkID0gRmFsc2UKLWJhdGNoX2xldmVsID0gMAotYWN0aW9ucyA9IE5vbmUKLQotCi1kZWYgYmVnaW5fYmF0Y2hfbm90aWZpY2F0aW9uKCk6Ci0gICAgZ2xvYmFsIGJhdGNoX2xldmVsCi0gICAgZ2xvYmFsIGFjdGlvbnMKLSAgICAKLSAgICBpZiBiYXRjaF9sZXZlbCA9PSAwOgotICAgICAgICBhY3Rpb25zID0gW10KLSAgICBiYXRjaF9sZXZlbCArPSAxCi0KLQotIyBGSVhNRTogQ291bGQgZ2VuZXJhbGl6ZSB0aGlzIHNvIGl0J3Mgbm90IGhhcmQtY29kZWQgZm9yIFNETlBsYXRmb3JtLCBidXQKLSMgc2luY2UgdGhpcyBpcyBzdXBwb3NlZCB0byBiZSBhIHNob3J0LXRlcm0gbWVjaGFuaXNtIGZvciB0cmlnZ2VyaW5nIHRoZQotIyBzdG9yYWdlIG5vdGlmaWNhdGlvbnMgaW4gU0ROUGxhdGZvcm0gaXQncyBub3QgY2xlYXIgaWYgaXQgbWFrZXMgc2Vuc2UgdG8KLSMgaW52ZXN0IHRpbWUgaW4gY2xlYW5pbmcgdGhpcyB1cC4KLWRlZiBlbmRfYmF0Y2hfbm90aWZpY2F0aW9uKHJlc2V0PUZhbHNlKToKLSAgICBnbG9iYWwgYmF0Y2hfbGV2ZWwKLSAgICBnbG9iYWwgYWN0aW9ucwotICAgIAotICAgIGlmIHJlc2V0OgotICAgICAgICBiYXRjaF9sZXZlbCA9IDAKLSAgICBlbGlmIGJhdGNoX2xldmVsID4gMDoKLSAgICAgICAgYmF0Y2hfbGV2ZWwgLT0gMQotICAgIAotICAgIGlmIGJhdGNoX2xldmVsID09IDA6Ci0gICAgICAgIGlmIGFjdGlvbnM6Ci0gICAgICAgICAgICB1cmwgPSAnaHR0cDovL2xvY2FsaG9zdDo4MDgwL3dtL3N0b3JhZ2Uvbm90aWZ5L2pzb24nCi0gICAgICAgICAgICBwb3N0X2RhdGEgPSBqc29uLmR1bXBzKGFjdGlvbnMpCi0gICAgICAgICAgICBhY3Rpb25zID0gTm9uZQotICAgICAgICAgICAgcmVxdWVzdCA9IHVybGxpYjIuUmVxdWVzdCh1cmwsIHBvc3RfZGF0YSwgeydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9qc29uJ30pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBMb2cgZXJyb3IgaWYgcmVxdWVzdCBoYWQgYW4gZXJyb3IKLSAgICAgICAgICAgICAgICBfcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlLnJlYWQoKSAKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIF9lOiAKLSAgICAgICAgICAgICAgICAjIFNETlBsYXRmb3JtIG1heSBub3QgYmUgcnVubmluZywgYnV0IHdlIGRvbid0IHdhbnQgdGhhdCB0byBiZSBhIGZhdGFsCi0gICAgICAgICAgICAgICAgIyBlcnJvciwgc28gd2UganVzdCBpZ25vcmUgdGhlIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBhY3Rpb25zID0gTm9uZQotCi0KLWRlZiBkb19hY3Rpb24oc2VuZGVyLCBpbnN0YW5jZSwgYWN0aW9uKToKLSAgICAjIElmIHdlJ3JlIG5vdCBhbHJlYWR5IGluIGEgYmF0Y2ggb3BlcmF0aW9uLCBzdGFydCBhIGxvY2FsIG9uZQotICAgICMgZm9yIGp1c3QgdGhpcyBvbmUgY2hhbmdlLiBUaGlzIGlzIHNvIHRoZSBjb2RlIHRoYXQgYWN0dWFsbHkKLSAgICAjIHNlbmRzIHRoZSBub3RpZmljYXRpb25zIHRvIFNETlBsYXRmb3JtIGNhbiBiZSBib3R0bGUtbmVja2VkIHRocm91Z2gKLSAgICAjIGVuZF9iYXRjaF9ub3RpZmljYXRpb24KLSAgICBsb2NhbF9iYXRjaCA9IGJhdGNoX2xldmVsID09IDAKLSAgICBpZiBsb2NhbF9iYXRjaDoKLSAgICAgICAgYmVnaW5fYmF0Y2hfbm90aWZpY2F0aW9uKCkgIAotICAgIAotICAgIGxhc3RfYWN0aW9uID0gYWN0aW9uc1stMV0gaWYgYWN0aW9ucyBlbHNlIE5vbmUKLSAgICBpZiAobGFzdF9hY3Rpb24gaXMgTm9uZSBvcgotICAgICAgICAjIHB5bGludDogZGlzYWJsZT1XMDIxMgotICAgICAgICBsYXN0X2FjdGlvblsndGFibGVOYW1lJ10gIT0gc2VuZGVyLl9tZXRhLmRiX3RhYmxlIG9yCi0gICAgICAgIGxhc3RfYWN0aW9uWydhY3Rpb24nXSAhPSBhY3Rpb24pOgotICAgICAgICAjIHB5bGludDogZGlzYWJsZT1XMDIxMgotICAgICAgICBsYXN0X2FjdGlvbiA9IHsndGFibGVOYW1lJzogc2VuZGVyLl9tZXRhLmRiX3RhYmxlLCAnYWN0aW9uJzogYWN0aW9uLCAna2V5cyc6IFtdfQotICAgICAgICBhY3Rpb25zLmFwcGVuZChsYXN0X2FjdGlvbikKLSAgICAKLSAgICBrZXlzID0gbGFzdF9hY3Rpb25bJ2tleXMnXQotICAgIGlmIGluc3RhbmNlLnBrIG5vdCBpbiBrZXlzOgotICAgICAgICBrZXlzLmFwcGVuZChpbnN0YW5jZS5waykKLSAgICAgICAgCi0gICAgaWYgbG9jYWxfYmF0Y2g6Ci0gICAgICAgIGVuZF9iYXRjaF9ub3RpZmljYXRpb24oKQotCi0KLWRlZiBkb19tb2RpZnlfbm90aWZpY2F0aW9uKHNlbmRlciwgaW5zdGFuY2UpOgotICAgIGRvX2FjdGlvbihzZW5kZXIsIGluc3RhbmNlLCAnTU9ESUZZJykKLSAgICAKLWRlZiBkb19kZWxldGVfbm90aWZpY2F0aW9uKHNlbmRlciwgaW5zdGFuY2UpOgotICAgIGRvX2FjdGlvbihzZW5kZXIsIGluc3RhbmNlLCAnREVMRVRFJykKLQotZGVmIG5vdGlmaWNhdGlvbl9wb3N0X3NhdmVfaGFuZGxlcihzZW5kZXIsICoqa3dhcmdzKToKLSAgICBmcm9tIHNkbmNvbi5yZXN0LmNvbmZpZyBpbXBvcnQgaXNfY29uZmlnX21vZGVsCi0gICAgaWYgbm90IGt3YXJnc1sncmF3J10gYW5kIChrd2FyZ3NbJ3VzaW5nJ10gPT0gImRlZmF1bHQiKSBhbmQgbm90IGlzX2NvbmZpZ19tb2RlbChzZW5kZXIpOgotICAgICAgICBkb19tb2RpZnlfbm90aWZpY2F0aW9uKHNlbmRlciwga3dhcmdzWydpbnN0YW5jZSddKQotCi0KLWRlZiBub3RpZmljYXRpb25fcG9zdF9kZWxldGVfaGFuZGxlcihzZW5kZXIsICoqa3dhcmdzKToKLSAgICBmcm9tIHNkbmNvbi5yZXN0LmNvbmZpZyBpbXBvcnQgaXNfY29uZmlnX21vZGVsCi0gICAgaWYga3dhcmdzWyd1c2luZyddID09ICdkZWZhdWx0JyBhbmQgbm90IGlzX2NvbmZpZ19tb2RlbChzZW5kZXIpOgotICAgICAgICBkb19kZWxldGVfbm90aWZpY2F0aW9uKHNlbmRlciwga3dhcmdzWydpbnN0YW5jZSddKQotCi0KLWRlZiBpbml0X25vdGlmaWNhdGlvbnMoKToKLSAgICBnbG9iYWwgbm90aWZpY2F0aW9uc19pbml0ZWQKLSAgICBpZiBub3Qgbm90aWZpY2F0aW9uc19pbml0ZWQ6Ci0gICAgICAgIHBvc3Rfc2F2ZS5jb25uZWN0KG5vdGlmaWNhdGlvbl9wb3N0X3NhdmVfaGFuZGxlcikKLSAgICAgICAgcG9zdF9kZWxldGUuY29ubmVjdChub3RpZmljYXRpb25fcG9zdF9kZWxldGVfaGFuZGxlcikKLSAgICAgICAgbm90aWZpY2F0aW9uc19pbml0ZWQgPSBUcnVlCi0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY29udHJvbGxlci9vc3dyYXBwZXIucHkgYi9jbGkvc2RuY29uL2NvbnRyb2xsZXIvb3N3cmFwcGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3M2I1NGY4Li4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY29udHJvbGxlci9vc3dyYXBwZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNTE1ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IG9zLCBhdGV4aXQKLWltcG9ydCBnbG9iCi1mcm9tIHN1YnByb2Nlc3MgaW1wb3J0IFBvcGVuLCBQSVBFLCBjaGVja19vdXRwdXQsIENhbGxlZFByb2Nlc3NFcnJvcgotaW1wb3J0IHN5cywgdHJhY2ViYWNrLCBzb2NrZXQKLWZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgotZnJvbSB0eXBlcyBpbXBvcnQgU3RyaW5nVHlwZQotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQganNvbgotaW1wb3J0IHJlCi1pbXBvcnQgdGltZQotaW1wb3J0IHVybGxpYjIKLWltcG9ydCBodHRwbGliCi1pbXBvcnQgZmNudGwsIHNodXRpbAotaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc3RhdAotCi1mcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKLWZyb20gZGphbmdvLmZvcm1zIGltcG9ydCBWYWxpZGF0aW9uRXJyb3IKLQotIyBDYW4ndCBpbXBvcnQgZnJvbSBgaW1wb3J0IHNkbmNvbmAgLS0gY2F1c2VzIGNpcmN1bGFyIGRlcGVuZGVuY3khCi1TRE5fUk9PVCA9ICIvb3B0L3NkbnBsYXRmb3JtIiBpZiBub3QgJ1NETl9ST09UJyBpbiBvcy5lbnZpcm9uIGVsc2Ugb3MuZW52aXJvblsnU0ROX1JPT1QnXQotCi0jIEJpZyBTd2l0Y2ggTmV0d29ya3MgRW50ZXJwcmlzZSBPSUQKLUJTTl9FTlRFUlBSSVNFX09JRCA9ICcuMS4zLjYuMS40LjEuMzc1MzgnCi1CU05fRU5URVJQUklTRV9PSURfQ09OVFJPTExFUiA9IEJTTl9FTlRFUlBSSVNFX09JRCArICcuMScKLQotCi1jbGFzcyBPc1dyYXBwZXIoKToKLSAgICAiIiIgVGhpcyBiYXNlIGNsYXNzIGFic3RyYWN0cyBleGVjdXRpbmcgb3MgYmluYXJpZXMgd2l0aG91dCB1c2luZyBzaGVsbCBpbiBhIHNlY3VyZSwgaGFyZGVuZWQgd2F5LgotICAgICAgICBUaGluZ3MgdG8ga2VlcCBpbiBtaW5kIHdoZW4gY29tcG9zaW5nIGNvbW1hbmQgdGVtcGxhdGVzIC0gYmVjYXVzZSB3ZSBkb250IHVzZSBzaGVsbCwgYXJncyB0byB0aGUgCi0gICAgICAgIGJpbmFyaWVzIGFyZSBwcmVzZW50ZWQgYXMgaXRlbXMgaW4gdGhlIGxpc3QsIHNvIG5vIG5lZWQgdG8gZGUtc3BlY2lhbGl6ZSBzcGVjaWFsIGNoYXJhY3RlcnMgLCBmb3IgCi0gICAgICAgIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGVjaG8gc29tZXRoaW5nIGludG8gYSBmaWxlLCBjb21tYW5kIGlzICJlY2hvIC1lIGFiY1xuZGVmXG4iIGFuZCBub3QgCi0gICAgICAgICJlY2hvIC1lIFwiYWJjXG5kZWZcblwiIiwgd2hpY2ggd291bGQgdGhlbiByZXN1bHQgaW4gdGhlIHF1b3RlcyBhbHNvIHRvIGJlIGVjaG8nZWQuCi0gICAgIiIiCi0gICAgbmFtZSA9ICJub25lIgotICAgIGNtZHNfbHN0X2Zvcl9zZXQgPSBbXQotICAgIGNtZHNfbHN0X2Zvcl9nZXQgPSBbXQotICAgIHN1ZG9fcmVxdWlyZWRfZm9yX3NldCA9IFRydWUKLSAgICBzdWRvX3JlcXVpcmVkX2Zvcl9nZXQgPSBGYWxzZQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCB0aGlzX2NtZHNfbGlzdF9mb3Jfc2V0LCB0aGlzX2NtZHNfbGlzdF9mb3JfZ2V0LCBpc19zdWRvX3JlcWRfZm9yX3NldD1UcnVlLCBpc19zdWRvX3JlcXVpcmVkX2Zvcl9nZXQ9RmFsc2UpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuY21kc19sc3RfZm9yX3NldCA9IHRoaXNfY21kc19saXN0X2Zvcl9zZXQKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3JfZ2V0ID0gdGhpc19jbWRzX2xpc3RfZm9yX2dldAotICAgICAgICBzZWxmLnN1ZG9fcmVxdWlyZWRfZm9yX3NldCA9IGlzX3N1ZG9fcmVxZF9mb3Jfc2V0Ci0gICAgICAgIHNlbGYuc3Vkb19yZXF1aXJlZF9mb3JfZ2V0ID0gaXNfc3Vkb19yZXF1aXJlZF9mb3JfZ2V0Ci0KLSAgICAgICAgc2VsZi5JUF9SRSA9IHJlLmNvbXBpbGUocideKFxkezEsM31cLil7M31cZHsxLDN9JCcpCi0gICAgICAgIHNlbGYuRG9tYWluTmFtZV9SRSA9IHJlLmNvbXBpbGUocideKFthLXpBLVowLTktXSsuPykrJCcpCi0KLSAgICBkZWYgdmFsaWRhdGVfaXAoc2VsZiwgdmFsdWUpOgotICAgICAgICBpZiBub3Qgc2VsZi5JUF9SRS5tYXRjaCh2YWx1ZSkgb3IgbGVuKFt4IGZvciB4IGluIHZhbHVlLnNwbGl0KCcuJykgaWYgaW50KHgpIDwgMjU2XSkgIT0gNDoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgIklQIG11c3QgYmUgaW4gZG90dGVkIGRlY2ltYWwgZm9ybWF0LCAyMzQuMC41OS4xIgotICAgICAgICByZXR1cm4gVHJ1ZSwgIiIKLQotICAgIGRlZiB2YWxpZGF0ZV9kb21haW4oc2VsZiwgdmFsdWUpOgotICAgICAgICBpZiBub3Qgc2VsZi5Eb21haW5OYW1lX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgIkludmFsaWQgZG9tYWluIG5hbWUiCi0gICAgICAgIHJldHVybiBUcnVlLCAiIgotCi0gICAgZGVmIGV4ZWNfY21kcyhzZWxmLCBjbWRzX2xzdCwgY21kc19hcmdzLCBzdGRvdXRfZmlsZV9sc3QpOgotICAgICAgICAjIHRyYXZlcnNlIHRocm91Z2ggdGhlIGxpc3Qgb2YgY29tbWFuZHMgbmVlZGVkIHRvIHNldCB0aGlzCi0gICAgICAgICMgY21kX2FyZ3MgaXMgYSBsaXN0IG9mIGxpc3RzIG9mIGFyZ3MgZm9yIGVhY2ggb2YgdGhlIGNvbW1hbmRzIGluIHRoZSBzZXQgbGlzdC4KLSAgICAgICAgcmV0X291dF9lcnIgPSB7J2Vycic6IFtdLCAnb3V0JzogW119Ci0gICAgICAgIGlmIGxlbihjbWRzX2xzdCkgIT0gbGVuKGNtZHNfYXJncyk6Ci0gICAgICAgICAgICMgY29tbWFuZHMgdG8gYXJncyBtaXNtYXRjaCwgZXJyb3Igb3V0IGFuZCByZXR1cm4KLSAgICAgICAgICAgIyBwb3NzaWJseSB0aHJvdyBhbiBleGNlcHRpb24gaGVyZSBhcyB3ZWxsCi0gICAgICAgICAgIHJldF9vdXRfZXJyWydlcnInXS5hcHBlbmQoIkNvbW1hbmQgYW5kIGFyZ3MgbWlzbWF0Y2giKQotICAgICAgICAgICByZXR1cm4gcmV0X291dF9lcnIKLSAgICAgICAgZm9yIGluZHggaW4gcmFuZ2UobGVuKGNtZHNfbHN0KSk6Ci0gICAgICAgICAgICAjaWYgc2VsZi5zdWRvX3JlcXVpcmVkX2Zvcl9zZXQ6Ci0gICAgICAgICAgICAjICAgY21kX3N0cmluZyA9ICJzdWRvICIKLSAgICAgICAgICAgICNlbHNlOgotICAgICAgICAgICAgIyAgIGNtZF9zdHJpbmcgPSAiIiAKLSAgICAgICAgICAgIGNtZF9zdHJpbmcgPSAiIgotICAgICAgICAgICAgY21kX3RlbXBsYXRlID0gVGVtcGxhdGUoY21kX3N0cmluZyArIGNtZHNfbHN0W2luZHhdKQotICAgICAgICAgICAgYXJnc19tYXAgPSBkaWN0KHt9KSAKLSAgICAgICAgICAgIGZvciBhcmdzX2luZHggaW4gcmFuZ2UobGVuKGNtZHNfYXJnc1tpbmR4XSkpOgotICAgICAgICAgICAgICAgIGFyZ3NfbWFwWyJhcmclZCIlKGFyZ3NfaW5keCsxKV0gPSBjbWRzX2FyZ3NbaW5keF1bYXJnc19pbmR4XQotICAgICAgICAgICAgICAgIGNtZF9zdHJpbmcgKz0gY21kc19hcmdzW2luZHhdW2FyZ3NfaW5keF0gKyAiICIgICAgICAgICAgICAgCi0gICAgICAgICAgICBmdWxsX2NtZF9zdHJpbmcgPSBjbWRfdGVtcGxhdGUuc3Vic3RpdHV0ZShhcmdzX21hcCkKLSAgICAgICAgICAgIGZpbGVfZm9yX3N0ZG91dCA9IFBJUEUKLSAgICAgICAgICAgIGlmIHN0ZG91dF9maWxlX2xzdCAhPSBOb25lIGFuZCBzdGRvdXRfZmlsZV9sc3RbaW5keF0gIT0gIiI6Ci0gICAgICAgICAgICAgICAgZmlsZV9mb3Jfc3Rkb3V0ID0gb3BlbihzdGRvdXRfZmlsZV9sc3RbaW5keF0sICdhJykKLSAgICAgICAgICAgIHN1Yl9wcm9jX291dHB1dCA9IFBvcGVuKGZ1bGxfY21kX3N0cmluZy5yc3BsaXQoIiAiKSwgc2hlbGw9RmFsc2UsIHN0ZGluPVBJUEUsIHN0ZG91dD1maWxlX2Zvcl9zdGRvdXQsIHN0ZGVycj1QSVBFLCBjbG9zZV9mZHM9VHJ1ZSkKLSAgICAgICAgICAgIHJldF9vdXRfZXJyWydlcnInXS5hcHBlbmQoW3N1Yl9wcm9jX291dHB1dC5zdGRlcnIucmVhZCgpXSkKLSAgICAgICAgICAgIGlmIGZpbGVfZm9yX3N0ZG91dCA9PSBQSVBFOgotICAgICAgICAgICAgICAgIHJldF9vdXRfZXJyWydvdXQnXS5hcHBlbmQoW3N1Yl9wcm9jX291dHB1dC5zdGRvdXQucmVhZCgpXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmlsZV9mb3Jfc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgICAgICMgbm90IGZpdCBmb3IgcGlwZSBpbyAtIG9zLnN5c3RlbShjbWRfc3RyaW5nKSAjIG5lZWQgdG8gY2hlY2sgZm9yIGVycm9ycyBpbiBjb21tYW5kcy4KLSAgICAgICAgcmV0dXJuIHJldF9vdXRfZXJyCi0gICAgCi0gICAgZGVmIGV4ZWNfY21kc19uZXcoc2VsZiwgY21kc19sc3QsIGNtZHNfYXJncywgdXNlU2hlbGw9RmFsc2UsIGFwcGVuZFN0ZE91dD1UcnVlKToKLSAgICAgICAgIyB0cmF2ZXJzZSB0aHJvdWdoIHRoZSBsaXN0IG9mIGNvbW1hbmRzIG5lZWRlZCB0byBzZXQgdGhpcwotICAgICAgICAjIGNtZF9hcmdzIGlzIGEgbGlzdCBvZiBsaXN0cyBvZiBhcmdzIGZvciBlYWNoIG9mIHRoZSBjb21tYW5kcyBpbiB0aGUgc2V0IGxpc3QuCi0gICAgICAgIHJldF9vdXRfZXJyID0geydlcnInOiBbXSwgJ291dCc6IFtdfQotICAgICAgICBpZiBsZW4oY21kc19sc3QpICE9IGxlbihjbWRzX2FyZ3MpOgotICAgICAgICAgICAjIGNvbW1hbmRzIHRvIGFyZ3MgbWlzbWF0Y2gsIGVycm9yIG91dCBhbmQgcmV0dXJuCi0gICAgICAgICAgICMgcG9zc2libHkgdGhyb3cgYW4gZXhjZXB0aW9uIGhlcmUgYXMgd2VsbGEKLSAgICAgICAgICAgIyBjbWRzX2xpc3QgaXMgYSBsaXN0IG9mIGRpY3QgbWFwcyAtIFt7J2Jpbl9uYW1lJzogPGJpbj4sICdhcmdzX2xzdCc6IDxhcmdzLWxpc3Q+LCAnc3Rkb3V0ZmlsZSc6PGZpbGVuYW1lPn0sLi4uXQotICAgICAgICAgICByZXRfb3V0X2VyclsnZXJyJ10uYXBwZW5kKCJDb21tYW5kIGFuZCBhcmdzIG1pc21hdGNoIikKLSAgICAgICAgICAgcHJpbnQgJ2NtZHNfbHN0OicsIGNtZHNfbHN0Ci0gICAgICAgICAgIHByaW50ICdjbWRfYXJnczonLCBjbWRzX2FyZ3MKLSAgICAgICAgICAgcmV0dXJuIHJldF9vdXRfZXJyCi0gICAgICAgIGZvciBpbmR4IGluIHJhbmdlKGxlbihjbWRzX2xzdCkpOgotICAgICAgICAgICAgI2lmIHNlbGYuc3Vkb19yZXF1aXJlZF9mb3Jfc2V0OgotICAgICAgICAgICAgIyAgIGNtZF9zdHJpbmcgPSAic3VkbyAiCi0gICAgICAgICAgICAjZWxzZToKLSAgICAgICAgICAgICMgICBjbWRfc3RyaW5nID0gIiIgCi0gICAgICAgICAgICAjY21kX3N0cmluZyA9ICIiCi0gICAgICAgICAgICBjbWRfYXJnc19sc3QgPSBbY21kc19sc3RbaW5keF1bJ2Jpbl9uYW1lJ11dCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGFyZ3NfbWFwID0gZGljdCh7fSkgCi0gICAgICAgICAgICBmb3IgYXJnc19pbmR4IGluIHJhbmdlKGxlbihjbWRzX2FyZ3NbaW5keF0pKToKLSAgICAgICAgICAgICAgICBhcmdzX21hcFsiYXJnJWQiJShhcmdzX2luZHgrMSldID0gY21kc19hcmdzW2luZHhdW2FyZ3NfaW5keF0KLSAgICAgICAgICAgICAgICAjY21kX3N0cmluZyArPSBjbWRzX2FyZ3NbaW5keF1bYXJnc19pbmR4XSArICIgIiAgCi0gICAgICAgICAgICBpZiAnYXJnc19sc3QnIGluIGNtZHNfbHN0W2luZHhdOiAgCi0gICAgICAgICAgICAgICAgZm9yIGFyZ3NfaW5keCBpbiByYW5nZShsZW4oY21kc19sc3RbaW5keF1bJ2FyZ3NfbHN0J10pKToKLSAgICAgICAgICAgICAgICAgICAgYXJnX3RlbXBsYXRlID0gVGVtcGxhdGUoY21kc19sc3RbaW5keF1bJ2FyZ3NfbHN0J11bYXJnc19pbmR4XSkKLSAgICAgICAgICAgICAgICAgICAgZnVsbF9hcmdfc3RyaW5nID0gYXJnX3RlbXBsYXRlLnN1YnN0aXR1dGUoYXJnc19tYXApCi0gICAgICAgICAgICAgICAgICAgIGNtZF9hcmdzX2xzdC5hcHBlbmQoZnVsbF9hcmdfc3RyaW5nKQotICAgICAgICAgICAgZmlsZV9mb3Jfc3Rkb3V0ID0gUElQRQotICAgICAgICAgICAgaWYgJ3N0ZG91dGZpbGUnIGluIGNtZHNfbHN0W2luZHhdIGFuZCBjbWRzX2xzdFtpbmR4XVsnc3Rkb3V0ZmlsZSddICE9ICIiOgotICAgICAgICAgICAgICAgIGZNb2RlID0gJ2EnCi0gICAgICAgICAgICAgICAgaWYgbm90IGFwcGVuZFN0ZE91dDoKLSAgICAgICAgICAgICAgICAgICAgZk1vZGUgPSAncisnCi0gICAgICAgICAgICAgICAgZmlsZV9mb3Jfc3Rkb3V0ID0gb3BlbihjbWRzX2xzdFtpbmR4XVsnc3Rkb3V0ZmlsZSddICwgZk1vZGUpCi0gICAgICAgICAgICBzdWJfcHJvY19vdXRwdXQgPSBQb3BlbihjbWRfYXJnc19sc3QsIHNoZWxsPXVzZVNoZWxsLCBzdGRpbj1QSVBFLCBzdGRvdXQ9ZmlsZV9mb3Jfc3Rkb3V0LCBzdGRlcnI9UElQRSwgY2xvc2VfZmRzPVRydWUpCi0gICAgICAgICAgICByZXRfb3V0X2VyclsnZXJyJ10uYXBwZW5kKHN1Yl9wcm9jX291dHB1dC5zdGRlcnIucmVhZCgpKQotICAgICAgICAgICAgaWYgZmlsZV9mb3Jfc3Rkb3V0ID09IFBJUEU6Ci0gICAgICAgICAgICAgICAgcmV0X291dF9lcnJbJ291dCddLmFwcGVuZChzdWJfcHJvY19vdXRwdXQuc3Rkb3V0LnJlYWQoKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmlsZV9mb3Jfc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgICAgICMgbm90IGZpdCBmb3IgcGlwZSBpbyAtIG9zLnN5c3RlbShjbWRfc3RyaW5nKSAjIG5lZWQgdG8gY2hlY2sgZm9yIGVycm9ycyBpbiBjb21tYW5kcy4KLSAgICAgICAgcmV0dXJuIHJldF9vdXRfZXJyCi0gICAgCi0gICAgZGVmIHNldChzZWxmLCBjbWRzX2FyZ3MsIHN0ZG91dF9maWxlX2xzdCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmV4ZWNfY21kcyhzZWxmLmNtZHNfbHN0X2Zvcl9zZXQsIGNtZHNfYXJncywgc3Rkb3V0X2ZpbGVfbHN0KQotICAgIGRlZiBnZXQoc2VsZiwgY21kc19hcmdzLCBzdGRvdXRfZmlsZV9sc3QpOgotICAgICAgICByZXR1cm4gc2VsZi5leGVjX2NtZHMoc2VsZi5jbWRzX2xzdF9mb3JfZ2V0LCBjbWRzX2FyZ3MsIHN0ZG91dF9maWxlX2xzdCkKLSAgICAKLSAgICBkZWYgc2V0X25ldyhzZWxmLCBjbWRzX2FyZ3NfbHN0ID0gW10sIGNtZHNfYXJncyA9IFtdLCB1c2VTaGVsbD1GYWxzZSwgYXBwZW5kU3RkT3V0ID0gRmFsc2UpOgotICAgICAgICBpZiBjbWRzX2FyZ3NfbHN0ID09IFtdOgotICAgICAgICAgICAgY21kc19hcmdzX2xzdCA9IHNlbGYuY21kc19sc3RfZm9yX3NldAotICAgICAgICByZXR1cm4gc2VsZi5leGVjX2NtZHNfbmV3KGNtZHNfYXJnc19sc3QsIGNtZHNfYXJncywgdXNlU2hlbGwsIGFwcGVuZFN0ZE91dCkKLSAgICBkZWYgZ2V0X25ldyhzZWxmLCBjbWRzX2FyZ3NfbHN0ID0gW10sIGNtZHNfYXJncyA9IFtdLCB1c2VTaGVsbD1GYWxzZSwgYXBwZW5kU3RkT3V0ID0gRmFsc2UpOgotICAgICAgICBpZiBjbWRzX2FyZ3NfbHN0ID09IFtdOgotICAgICAgICAgICAgY21kc19hcmdzX2xzdCA9IHNlbGYuY21kc19sc3RfZm9yX2dldCAKLSAgICAgICAgcmV0dXJuIHNlbGYuZXhlY19jbWRzX25ldyhjbWRzX2FyZ3NfbHN0LCBjbWRzX2FyZ3MsIHVzZVNoZWxsLCBhcHBlbmRTdGRPdXQpCi0gICAgCi0KLWRlZiB2YWxpZGF0ZV9pbnB1dDEodmFsaWRhdG9yLCB2YWx1ZSk6ICN0ZW1wb3JhcmlseSBkaXNhYmxpbmcgdGhpcyAtIFRCRAotICAgIHRyeToKLSAgICAgICAgdmFsaWRhdG9yKHZhbHVlKQotICAgIGV4Y2VwdCBWYWxpZGF0aW9uRXJyb3IsIF9lcnI6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIHZhbGlkYXRlX2lucHV0KHZhbGlkYXRvciwgdmFsdWUpOgotICAgIGEgPSBUcnVlCi0gICAgI3RyeToKLSAgICAgICAgI2EsIGIgPSB2YWxpZGF0b3IodmFsdWUpCi0gICAgI2V4Y2VwdCBWYWxpZGF0aW9uRXJyb3IsIGVycjoKLSAgICAjICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBhCi0KLQotZGVmIGRvdHRlZF9kZWNpbWFsX3RvX2ludChpcCk6Ci0gICAgIiIiCi0gICAgQ29udmVydHMgYSBkb3R0ZWQgZGVjaW1hbCBJUCBhZGRyZXNzIHN0cmluZyB0byBhIDMyIGJpdCBpbnRlZ2VyCi0gICAgIiIiCi0gICAgYnl0ZXMgPSBpcC5zcGxpdCgnLicpCi0gICAgaXBfaW50ID0gMAotICAgIGZvciBiIGluIGJ5dGVzOgotICAgICAgICBpcF9pbnQgPSAoaXBfaW50IDw8IDgpICsgaW50KGIpCi0gICAgcmV0dXJuIGlwX2ludAotCi0KLWRlZiBzYW1lX3N1Ym5ldChpcDEsIGlwMiwgbmV0bWFzayk6Ci0gICAgIiIiCi0gICAgQ2hlY2tzIHdoZXRoZXIgdGhlIHR3byBpcCBhZGRyZXNzZXMgYXJlIG9uIHRoZSBzYW1lIHN1Ym5ldCBhcwotICAgIGRldGVybWluZWQgYnkgdGhlIG5ldG1hc2sgYXJndW1lbnQuIEFsbCBvZiB0aGUgYXJndW1lbnRzIGFyZQotICAgIGRvdHRlZCBkZWNpbWFsIElQIGFkZHJlc3Mgc3RyaW5ncy4KLSAgICAiIiIKLSAgICBpZiBpcDEgPT0gJycgb3IgaXAyID09ICcnIG9yIG5ldG1hc2sgPT0gJyc6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGlwMV9pbnQgPSBkb3R0ZWRfZGVjaW1hbF90b19pbnQoaXAxKQotICAgIGlwMl9pbnQgPSBkb3R0ZWRfZGVjaW1hbF90b19pbnQoaXAyKQotICAgIG5ldG1hc2tfaW50ID0gZG90dGVkX2RlY2ltYWxfdG9faW50KG5ldG1hc2spCi0gICAgcmV0dXJuIChpcDFfaW50ICYgbmV0bWFza19pbnQpID09IChpcDJfaW50ICYgbmV0bWFza19pbnQpCi0KLQotY2xhc3MgTmV0d29ya0NvbmZpZyhPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPSJuZXR3b3JrX2NvbmZpZyIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotCi0KLSAgICBkZWYgcmV3cml0ZV9ldGNfbmV0d29ya19pbnRlcmZhY2VzKHNlbGYsIGNvbnRyb2xsZXIsIGludGVyZmFjZXMsIHJldF9yZXN1bHQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIFRydWUgd2hlbiB0aGUgL2V0Yy9uZXR3b3JrL2ludGVyZmFjZXMgaXMgcmV3cml0dGVuLiBSZXR1cm4gRmFsc2Ugb3RoZXJ3aXNlLgotICAgICAgICBUaGUgZmlsZSBpcyByZXdyaXR0ZW4gb25seSB3aGVuIHRoZSBpbnRlbmRlZCBuZXcgY29udGVudHMgaXMgZGlmZmVyZW50IGZyb20KLSAgICAgICAgdGhlIG9sZCBjb250ZW50cywgdGhpcyBpcyBhbiBhdHRlbXB0IHRvIG5vdCBwdXJ0dXJiIHRoZSBuZXR3b3JrIHVubGVzcyBzb21ldGhpbmcKLSAgICAgICAgcmVhbGx5IGNoYW5nZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIGdhdGV3YXkgPSBjb250cm9sbGVyWydmaWVsZHMnXVsnZGVmYXVsdF9nYXRld2F5J10KLSAgICAgICAgaWYgKGdhdGV3YXkgIT0gJycpOgotICAgICAgICAgICAgKHIsIG0pID0gc2VsZi52YWxpZGF0ZV9pcChnYXRld2F5KQotICAgICAgICAgICAgaWYgbm90IHI6Ci0gICAgICAgICAgICAgICAgcmV0X3Jlc3VsdFsnZXJyJ10uYXBwZW5kKCJEZWZhdWx0IGdhdGV3YXk6ICVzIiAlIG0pCi0gICAgICAgICAgICAgICAgZ2F0ZXdheSA9ICcnCi0KLSAgICAgICAgY2hhbmdlZCA9IEZhbHNlCi0gICAgICAgIG5ld19jb25mID0gW10KLSAgICAgICAgbmV3X2NvbmYuYXBwZW5kKCIjIFdBUk5JTkcgdGhpcyBmaWxlIGlzIGF1dG9tYW5hZ2VkIGJ5IEJTTiBjb250cm9sbGVyXG4iKQotICAgICAgICBuZXdfY29uZi5hcHBlbmQoIiMgRE8gTk9UIEVESVQgaGVyZSwgdXNlIENMSSB3aXRoICdjb25maWd1cmUnXG4iKQotICAgICAgICBuZXdfY29uZi5hcHBlbmQoImF1dG8gbG9cbmlmYWNlIGxvIGluZXQgbG9vcGJhY2tcblxuIikKLSAgICAgICAgZm9yIGludGVyZmFjZSBpbiBpbnRlcmZhY2VzOgotICAgICAgICAgICAgaWYgKGludGVyZmFjZVsnZmllbGRzJ11bJ2NvbnRyb2xsZXInXSA9PSBjb250cm9sbGVyWydwayddKToKLSAgICAgICAgICAgICAgICBudW0gPSBpbnRlcmZhY2VbJ2ZpZWxkcyddWydudW1iZXInXQotICAgICAgICAgICAgICAgIG5ld19jb25mLmFwcGVuZCgiYXV0byBldGh7MH1cbiIuZm9ybWF0KG51bSkpCi0gICAgICAgICAgICAgICAgaWYgKGludGVyZmFjZVsnZmllbGRzJ11bJ21vZGUnXSA9PSAnZGhjcCcpOgotICAgICAgICAgICAgICAgICAgICBuZXdfY29uZi5hcHBlbmQoImlmYWNlIGV0aHswfSBpbmV0IGRoY3BcbiIuZm9ybWF0KG51bSkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaXAgPSBpbnRlcmZhY2VbJ2ZpZWxkcyddWydpcCddCi0gICAgICAgICAgICAgICAgICAgIG5ldG1hc2sgPSBpbnRlcmZhY2VbJ2ZpZWxkcyddWyduZXRtYXNrJ10KLSAgICAgICAgICAgICAgICAgICAgaWYgKGlwICE9ICIiKToKLSAgICAgICAgICAgICAgICAgICAgICAgIChyLCBtKSA9IHNlbGYudmFsaWRhdGVfaXAoaXApCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRfcmVzdWx0WydlcnInXS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFdGhlcm5ldCAlcyBJUCBhZGRyZXNzICVzOiAlcyIgJSAobnVtLCBpcCwgbSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSAiIgotICAgICAgICAgICAgICAgICAgICBpZiAobmV0bWFzayAhPSAiIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAociwgbSkgPSBzZWxmLnZhbGlkYXRlX2lwKG5ldG1hc2spCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRfcmVzdWx0WydlcnInXS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFdGhlcm5ldCAlcyBuZXRtYXNrICVzOiAlcyIgJSAobnVtLCBuZXRtYXNrLCBtKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRtYXNrID0gIiIKLSAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG5ld19jb25mLmFwcGVuZCgiaWZhY2UgZXRoezB9IGluZXQgc3RhdGljXG4iLmZvcm1hdChudW0pKQotICAgICAgICAgICAgICAgICAgICBpZiAoaXAgIT0gIiIpOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NvbmYuYXBwZW5kKCIgICAgYWRkcmVzcyB7MH1cbiIuZm9ybWF0KGlwKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5ldG1hc2sgIT0gIiIpOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NvbmYuYXBwZW5kKCIgICAgbmV0bWFzayB7MH1cbiIuZm9ybWF0KG5ldG1hc2spKQotICAgICAgICAgICAgICAgICAgICBpZiBzYW1lX3N1Ym5ldChnYXRld2F5LCBpcCwgbmV0bWFzayk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfY29uZi5hcHBlbmQoIiAgICBnYXRld2F5IHswfVxuIi5mb3JtYXQoZ2F0ZXdheSkpCi0gICAgICAgICAgICAgICAgbmV3X2NvbmYuYXBwZW5kKCJcbiIpCi0KLSAgICAgICAgZiA9IG9wZW4oIi9ldGMvbmV0d29yay9pbnRlcmZhY2VzIiwgInIiKQotICAgICAgICBpZiAoJycuam9pbihuZXdfY29uZikgIT0gZi5yZWFkKCkpOgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmID0gb3BlbigiL2V0Yy9uZXR3b3JrL2ludGVyZmFjZXMiLCAidyIpCi0gICAgICAgICAgICBmLndyaXRlKCcnLmpvaW4obmV3X2NvbmYpKQotICAgICAgICAgICAgY2hhbmdlZCA9IFRydWUKLSAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIHJldHVybiBjaGFuZ2VkCi0KLSAgICBkZWYgcmV3cml0ZV9ldGNfcmVzb2x2ZV9jb25mKHNlbGYsIGNvbnRyb2xsZXIsIGRuc19zZXJ2ZXJzLCByZXRfcmVzdWx0KToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBUcnVlIHdoZW4gdGhlIC9ldGMvcmVzb2x2LmNvbmYgaXMgcmV3cml0dGVuLiBSZXR1cm4gRmFsc2Ugb3RoZXJ3aXNlLgotICAgICAgICBUaGUgZmlsZSBpcyByZXdyaXR0ZW4gb25seSB3aGVuIHRoZSBpbnRlbmRlZCBuZXcgY29udGVudHMgaXMgZGlmZmVyZW50IGZyb20KLSAgICAgICAgdGhlIG9sZCBjb250ZW50cywgdGhpcyBpcyBhbiBhdHRlbXB0IHRvIG5vdCBwdXJ0dXJiIHRoZSBuZXR3b3JrIHVubGVzcyBzb21ldGhpbmcKLSAgICAgICAgcmVhbGx5IGNoYW5nZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIGNoYW5nZWQgPSBGYWxzZQotICAgICAgICBuZXdfY29uZiA9IFtdCi0gICAgICAgIGRvbWFpbl9uYW1lID0gY29udHJvbGxlclsnZmllbGRzJ11bJ2RvbWFpbl9uYW1lJ10KLSAgICAgICAgaWYgKGRvbWFpbl9uYW1lICE9ICIiKToKLSAgICAgICAgICAgIG5ld19jb25mLmFwcGVuZCgiZG9tYWluIHswfVxuc2VhcmNoIHsxfVxuIi5mb3JtYXQoZG9tYWluX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9uYW1lKSkKLSAgICAgICAgCi0gICAgICAgIGlmIChjb250cm9sbGVyWydmaWVsZHMnXVsnZG9tYWluX2xvb2t1cHNfZW5hYmxlZCddID09IFRydWUpOgotICAgICAgICAgICAgZm9yIGRucyBpbiBkbnNfc2VydmVyczoKLSAgICAgICAgICAgICAgICBpZiAoZG5zWydmaWVsZHMnXVsnY29udHJvbGxlciddID09IGNvbnRyb2xsZXJbJ3BrJ10pOgotICAgICAgICAgICAgICAgICAgICBpcCA9IGRuc1snZmllbGRzJ11bJ2lwJ10KLSAgICAgICAgICAgICAgICAgICAgaWYgKGlwICE9ICIiKToKLSAgICAgICAgICAgICAgICAgICAgICAgIChyLCBtKSA9IHNlbGYudmFsaWRhdGVfaXAoaXApCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRfcmVzdWx0WydlcnInXS5hcHBlbmQoIk5hbWUgc2VydmVyICVzOiAlcyIgJSAoaXAsIG0pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwID0gIiIKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlwICE9ICIiKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld19jb25mLmFwcGVuZCgibmFtZXNlcnZlciB7MH1cbiIuZm9ybWF0KGlwKSkKLSAgICAgICAgCi0gICAgICAgIGYgPSBvcGVuKCIvZXRjL3Jlc29sdi5jb25mIiwgInIiKQotICAgICAgICBpZiAoJycuam9pbihuZXdfY29uZikgIT0gZi5yZWFkKCkpOgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmID0gb3BlbigiL2V0Yy9yZXNvbHYuY29uZiIsICJ3IikKLSAgICAgICAgICAgIGYud3JpdGUoJycuam9pbihuZXdfY29uZikpCi0gICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQotCi0gICAgICAgIGYuY2xvc2UoKQotICAgICAgICByZXR1cm4gY2hhbmdlZAotCi0gICAgZGVmIHNldChzZWxmLCBhcmdzX2xpc3QpOgotICAgICAgICAjIGFyZ3NfbGlzdDogW2NvbnRyb2xsZXJzLCBjb250cm9sbGVEb21haW5TZXJ2ZXJzLCBjb250cm9sbGVySW50ZXJmYWNlc10KLSAgICAgICAgIyBjb250cm9sbGVySW50ZXJmYWNlcyBtYXkgYmUgZW1wdHksIHdoaWNoIHJlcXVlc3Mgbm8gcmV3cml0ZQotICAgICAgICAjIG9mIC9ldGMvbmV0d29yay9pbnN0ZXJmYWNlcwotICAgICAgICBpZnNfcmV3cml0ZSA9IEZhbHNlIGlmIGxlbihhcmdzX2xpc3QpIDwgMyBlbHNlIFRydWUKLQotICAgICAgICByZXRfcmVzdWx0ID0geydlcnInOiBbXSwgJ291dCc6IFtdfQotICAgICAgICBjb250cm9sbGVyID0ganNvbi5sb2FkcyhhcmdzX2xpc3RbMF0pWzBdCi0gICAgICAgIG5ldHdvcmtfcmVzdGFydCA9IFRydWUKLQotICAgICAgICByY19jaGFuZ2VkID0gRmFsc2UKLSAgICAgICAgbmlfY2hhbmdlZCA9IEZhbHNlCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZG9tYWluX25hbWUgPSBjb250cm9sbGVyWydmaWVsZHMnXVsnZG9tYWluX25hbWUnXQotICAgICAgICAgICAgbmV3X3JjID0gVHJ1ZQotICAgICAgICAgICAgaWYgZG9tYWluX25hbWUgIT0gIiI6Ci0gICAgICAgICAgICAgICAgKHIsIG0pID0gc2VsZi52YWxpZGF0ZV9kb21haW4oZG9tYWluX25hbWUpCi0gICAgICAgICAgICAgICAgaWYgbm90IHI6Ci0gICAgICAgICAgICAgICAgICAgIHJldF9yZXN1bHRbJ2VyciddLmFwcGVuZCgiU2VhcmNoIGRvbWFpbiAlczogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChkb21haW5fbmFtZSwgbSkpCi0gICAgICAgICAgICAgICAgICAgIG5ld19yYyA9IEZhbHNlCi0KLSAgICAgICAgICAgIGlmIG5ld19yYzoKLSAgICAgICAgICAgICAgICByY19jaGFuZ2VkID0gc2VsZi5yZXdyaXRlX2V0Y19yZXNvbHZlX2NvbmYoY29udHJvbGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5sb2FkcyhhcmdzX2xpc3RbMV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRfcmVzdWx0KQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiBpZnNfcmV3cml0ZToKLSAgICAgICAgICAgICAgICBuaV9jaGFuZ2VkID0gc2VsZi5yZXdyaXRlX2V0Y19uZXR3b3JrX2ludGVyZmFjZXMoY29udHJvbGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5sb2FkcyhhcmdzX2xpc3RbMl0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRfcmVzdWx0KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBfZToKLSAgICAgICAgICAgIG5ldHdvcmtfcmVzdGFydCA9IEZhbHNlCi0gICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLQotICAgICAgICAjIGRvbid0IHJlc3RhcnQgdGhlIG5ldHdvcmsgY29uZmlnIGlmIHJlc29sdi5jb25mIHdhcyBvbmx5IHVwZGF0ZWQKLSAgICAgICAgaWYgbmV0d29ya19yZXN0YXJ0IGFuZCBuaV9jaGFuZ2VkOgotICAgICAgICAgICAgIyBLaWxsIGFueSBkaGNsaWVudHMgdGhhdCBtaWdodCBiZSBoYW5naW5nIGFyb3VuZC4gIFdoZW4KLSAgICAgICAgICAgICMgc3dpdGNoaW5nIGZyb20gZGhjcCB0byBzdGF0aWMgY29uZmlnLCBuZXR3b3JraW5nIHJlc3RhcnQKLSAgICAgICAgICAgICMgd29uJ3Qga2lsbCB0aGVzZSBzaW5jZSB0aGUgZmlsZSBoYXMgYWxyZWFkeSBiZWVuCi0gICAgICAgICAgICAjIHJld3JpdHRlbiB3aXRoIGEgY29uZmlnIHRoYXQgZG9lc24ndCBpbmNsdWRlIERIQ1AuICBBCi0gICAgICAgICAgICAjIGNsZWFuZXIgZml4IGZvciB0aGlzIGlzIHRvIHN0b3AgbmV0d29ya2luZyBiZWZvcmUKLSAgICAgICAgICAgICMgd3JpdGluZyB0aGUgZmlsZSBhbmQgdGhlbiBzdGFydCBpdCBhZnRlciB3cml0aW5nIHRoZQotICAgICAgICAgICAgIyBmaWxlLiAgTG9uZ2VyLXRlcm0sIGl0IG1pZ2h0IGJlIGJldHRlciB0byB1c2UKLSAgICAgICAgICAgICMgTmV0d29ya01hbmFnZXIgQVBJcyBmb3IgYWxsIG9mIHRoaXMgcmF0aGVyIHRoYW4gdHJ5aW5nCi0gICAgICAgICAgICAjIHRvIG1hbmFnZSB0aGlzIGNvbmZpZyBmaWxlLgotICAgICAgICAgICAgayA9IFBvcGVuKFsiL3Vzci9iaW4va2lsbGFsbCIsICJkaGNsaWVudDMiXSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUpCi0gICAgICAgICAgICBrLndhaXQoKQotICAgICAgICAgICAgCi0gICAgICAgICAgICBwID0gUG9wZW4oWyIvdXNyL3NiaW4vaW52b2tlLXJjLmQiLAotICAgICAgICAgICAgICAgICAgICAgICAibmV0d29ya2luZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICJyZXN0YXJ0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSkKLSAgICAgICAgICAgIHAud2FpdCgpCi0gICAgICAgIAotICAgICAgICAgICAgaWYgKDAgIT0gcC5yZXR1cm5jb2RlKToKLSAgICAgICAgICAgICAgICBvdXQgPSBwLnN0ZG91dC5yZWFkKCkKLSAgICAgICAgICAgICAgICByZXRfcmVzdWx0WydlcnInXS5hcHBlbmQoIk5ldHdvcmsgcmVzdGFydCBmYWlsZWQ6IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWQ6ICVzIiAlIChwLnJldHVybmNvZGUsIG91dCkpCi0KLSAgICAgICAgICAgICMgUmVzdGFydCB0aGUgZGlzY292ZXItaXAgc2luY2UgdGhlIGNvbnRyb2xsZXItaW50ZXJmYWNlIHRhYmxlIGhhcyBiZWVuIG1vZGlmaWVkCi0gICAgICAgICAgICBpcCA9IFBvcGVuKFsiL3Vzci9zYmluL3NlcnZpY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgImRpc2NvdmVyLWlwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXN0YXJ0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUpCi0KLSAgICAgICAgICAgICMgbm90IGNvbmNlcm5lZCB3aXRoIGVycm9yIG1lc3NhZ2VzIGZyb20gdGhlIHJlcXVlc3RlZCBjb21tYW5kCi0gICAgICAgICAgICAKLSAgICAgICAgcmV0dXJuIHJldF9yZXN1bHQKLQotY2xhc3MgRGlyZWN0TmV0d29ya0NvbmZpZyhOZXR3b3JrQ29uZmlnKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZT0iZGlyZWN0X25ldHdvcmtfY29uZmlnIik6Ci0gICAgICAgIE5ldHdvcmtDb25maWcuX19pbml0X18oc2VsZiwgbmFtZSkKLQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgZ2F0ZXdheSA9ICcnCi0gICAgICAgIGlwID0gJycKLSAgICAgICAgbmV0bWFzayA9ICcnCi0gICAgICAgIGRvbWFpbl9uYW1lID0gJycKLSAgICAgICAgZG5zMSA9ICcnCi0gICAgICAgIGRuczIgPSAnJwotICAgICAgICBkb21haW5fbG9va3Vwc19lbmFibGVkID0gRmFsc2UKLSAgICAgICAgaWYgYXJnc19saXN0WzBdID09ICdzdGF0aWMnOgotICAgICAgICAgICAgaXAgPSBhcmdzX2xpc3RbMV0KLSAgICAgICAgICAgIG5ldG1hc2sgPSBhcmdzX2xpc3RbMl0KLSAgICAgICAgICAgIGdhdGV3YXkgPSBhcmdzX2xpc3RbM10KLSAgICAgICAgICAgIGlmIGxlbihhcmdzX2xpc3QpID49IDU6Ci0gICAgICAgICAgICAgICAgZG9tYWluX25hbWUgPSBhcmdzX2xpc3RbNF0KLSAgICAgICAgICAgICAgICBpZiBsZW4oYXJnc19saXN0KSA+PSA2OgotICAgICAgICAgICAgICAgICAgICBkb21haW5fbG9va3Vwc19lbmFibGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBkbnMxID0gYXJnc19saXN0WzVdCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihhcmdzX2xpc3QpID49IDc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkbnMyID0gYXJnc19saXN0WzZdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBsZW4oYXJnc19saXN0KSA+PSAyOgotICAgICAgICAgICAgICAgIGRvbWFpbl9uYW1lID0gYXJnc19saXN0WzFdCi0gICAgICAgICAgICAgICAgaWYgbGVuKGFyZ3NfbGlzdCkgPj0gMzoKLSAgICAgICAgICAgICAgICAgICAgZG9tYWluX2xvb2t1cHNfZW5hYmxlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgZG5zMSA9IGFyZ3NfbGlzdFsyXQotICAgICAgICAgICAgICAgICAgICBpZiBsZW4oYXJnc19saXN0KSA+PSA0OgotICAgICAgICAgICAgICAgICAgICAgICAgZG5zMiA9IGFyZ3NfbGlzdFszXQotCi0gICAgICAgIGNvbnRyb2xsZXJfaW50ZXJmYWNlPVt7J2ZpZWxkcycgOiB7J2lkJyA6ICJsb2NhbGhvc3R8ZXRoZXJuZXR8MCIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogImV0aGVybmV0IiwgJ251bWJlcicgOiAwLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2RlJyA6IGFyZ3NfbGlzdFswXSwgJ2lwJyA6IGlwLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXRtYXNrJyA6IG5ldG1hc2ssICdjb250cm9sbGVyJyA6ICdsb2NhbGhvc3QnfX1dCi0gICAgICAgIG5hbWVzZXJ2ZXJzID0gW10KLSAgICAgICAgaWYgZG5zMSAhPSAnJzoKLSAgICAgICAgICAgIG5hbWVzZXJ2ZXJzLmFwcGVuZCh7ICdmaWVsZHMnIDogeydjb250cm9sbGVyJyA6ICJsb2NhbGhvc3QiLCAncHJpb3JpdHknIDogMSwgJ2lwJyA6IGRuczF9fSkKLSAgICAgICAgICAgIGlmIGRuczIgIT0gJyc6Ci0gICAgICAgICAgICAgICAgbmFtZXNlcnZlcnMuYXBwZW5kKHsgJ2ZpZWxkcycgOiB7J2NvbnRyb2xsZXInIDogImxvY2FsaG9zdCIsICdwcmlvcml0eScgOiAyLCAnaXAnIDogZG5zMn19KQotICAgICAgICBjb250cm9sbGVyPVt7J2ZpZWxkcycgOiB7J2lkJyA6ICJsb2NhbGhvc3QiLCAnZG9tYWluX25hbWUnIDogZG9tYWluX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdF9nYXRld2F5JyA6IGdhdGV3YXksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvbWFpbl9sb29rdXBzX2VuYWJsZWQnIDogZG9tYWluX2xvb2t1cHNfZW5hYmxlZH0sICdwaycgOiAnbG9jYWxob3N0J31dCi0gICAgICAgIHJldHVybiBOZXR3b3JrQ29uZmlnLnNldChzZWxmLCBbanNvbi5kdW1wcyhjb250cm9sbGVyKSwganNvbi5kdW1wcyhuYW1lc2VydmVycyksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5kdW1wcyhjb250cm9sbGVyX2ludGVyZmFjZSldKSAgICAgICAgICAgICAgIAotCi0KLWNsYXNzIFVmd0NvbW1hbmQoT3NXcmFwcGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSA9ICJleGVjdXRldWZ3Y29tbWFuZCIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnX2xpc3QpOgotICAgICAgICBhcmdzID0gYXJnX2xpc3RbMF0uc3BsaXQoIiAiKQotICAgICAgICBzZWxmLmNtZHNfbHN0X2Zvcl9zZXQgPSBbeydiaW5fbmFtZScgOiAnL3Vzci9zYmluL3VmdycsICdhcmdzX2xzdCcgOiBhcmdzfV0KLSAgICAgICAgcmV0dXJuIE9zV3JhcHBlci5zZXRfbmV3KHNlbGYsIFtdLCBbW11dKQotCi1OVFBfQ09ORiA9ICIiInRpbmtlciBwYW5pYyAwCi1kcmlmdGZpbGUgL3Zhci9saWIvbnRwL250cC5kcmlmdAotCi0jIEVuYWJsZSB0aGlzIGlmIHlvdSB3YW50IHN0YXRpc3RpY3MgdG8gYmUgbG9nZ2VkLgotI3N0YXRzZGlyIC92YXIvbG9nL250cHN0YXRzLwotCi1zdGF0aXN0aWNzIGxvb3BzdGF0cyBwZWVyc3RhdHMgY2xvY2tzdGF0cwotZmlsZWdlbiBsb29wc3RhdHMgZmlsZSBsb29wc3RhdHMgdHlwZSBkYXkgZW5hYmxlCi1maWxlZ2VuIHBlZXJzdGF0cyBmaWxlIHBlZXJzdGF0cyB0eXBlIGRheSBlbmFibGUKLWZpbGVnZW4gY2xvY2tzdGF0cyBmaWxlIGNsb2Nrc3RhdHMgdHlwZSBkYXkgZW5hYmxlCi0KLSMgU3BlY2lmeSBvbmUgb3IgbW9yZSBOVFAgc2VydmVycy4KLQotIyBVc2Ugc2VydmVycyBmcm9tIHRoZSBOVFAgUG9vbCBQcm9qZWN0LiBBcHByb3ZlZCBieSBVYnVudHUgVGVjaG5pY2FsIEJvYXJkCi0jIG9uIDIwMTEtMDItMDggKExQOiAjMTA0NTI1KS4gU2VlIGh0dHA6Ly93d3cucG9vbC5udHAub3JnL2pvaW4uaHRtbCBmb3IKLSMgbW9yZSBpbmZvcm1hdGlvbi4KLXNlcnZlciAlcwotCi0jIEFjY2VzcyBjb250cm9sIGNvbmZpZ3VyYXRpb247IHNlZSAvdXNyL3NoYXJlL2RvYy9udHAtZG9jL2h0bWwvYWNjb3B0Lmh0bWwgZm9yCi0jIGRldGFpbHMuICBUaGUgd2ViIHBhZ2UgPGh0dHA6Ly9zdXBwb3J0Lm50cC5vcmcvYmluL3ZpZXcvU3VwcG9ydC9BY2Nlc3NSZXN0cmljdGlvbnM+Ci0jIG1pZ2h0IGFsc28gYmUgaGVscGZ1bC4KLSMKLSMgTm90ZSB0aGF0ICJyZXN0cmljdCIgYXBwbGllcyB0byBib3RoIHNlcnZlcnMgYW5kIGNsaWVudHMsIHNvIGEgY29uZmlndXJhdGlvbgotIyB0aGF0IG1pZ2h0IGJlIGludGVuZGVkIHRvIGJsb2NrIHJlcXVlc3RzIGZyb20gY2VydGFpbiBjbGllbnRzIGNvdWxkIGFsc28gZW5kCi0jIHVwIGJsb2NraW5nIHJlcGxpZXMgZnJvbSB5b3VyIG93biB1cHN0cmVhbSBzZXJ2ZXJzLgotCi0jIEJ5IGRlZmF1bHQsIGV4Y2hhbmdlIHRpbWUgd2l0aCBldmVyeWJvZHksIGJ1dCBkb24ndCBhbGxvdyBjb25maWd1cmF0aW9uLgotcmVzdHJpY3QgLTQgZGVmYXVsdCBrb2Qgbm90cmFwIG5vbW9kaWZ5IG5vcGVlciBub3F1ZXJ5Ci1yZXN0cmljdCAtNiBkZWZhdWx0IGtvZCBub3RyYXAgbm9tb2RpZnkgbm9wZWVyIG5vcXVlcnkKLQotIyBMb2NhbCB1c2VycyBtYXkgaW50ZXJyb2dhdGUgdGhlIG50cCBzZXJ2ZXIgbW9yZSBjbG9zZWx5LgotcmVzdHJpY3QgMTI3LjAuMC4xCi1yZXN0cmljdCA6OjEKLQotIyBDbGllbnRzIGZyb20gdGhpcyAoZXhhbXBsZSEpIHN1Ym5ldCBoYXZlIHVubGltaXRlZCBhY2Nlc3MsIGJ1dCBvbmx5IGlmCi0jIGNyeXB0b2dyYXBoaWNhbGx5IGF1dGhlbnRpY2F0ZWQuCi0jcmVzdHJpY3QgMTkyLjE2OC4xMjMuMCBtYXNrIDI1NS4yNTUuMjU1LjAgbm90cnVzdAotCi0KLSMgSWYgeW91IHdhbnQgdG8gcHJvdmlkZSB0aW1lIHRvIHlvdXIgbG9jYWwgc3VibmV0LCBjaGFuZ2UgdGhlIG5leHQgbGluZS4KLSMgKEFnYWluLCB0aGUgYWRkcmVzcyBpcyBhbiBleGFtcGxlIG9ubHkuKQotI2Jyb2FkY2FzdCAxOTIuMTY4LjEyMy4yNTUKLQotIyBJZiB5b3Ugd2FudCB0byBsaXN0ZW4gdG8gdGltZSBicm9hZGNhc3RzIG9uIHlvdXIgbG9jYWwgc3VibmV0LCBkZS1jb21tZW50IHRoZQotIyBuZXh0IGxpbmVzLiAgUGxlYXNlIGRvIHRoaXMgb25seSBpZiB5b3UgdHJ1c3QgZXZlcnlib2R5IG9uIHRoZSBuZXR3b3JrIQotI2Rpc2FibGUgYXV0aAotI2Jyb2FkY2FzdGNsaWVudAotIiIiCi0KLWNsYXNzIFNldE50cFNlcnZlcihPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gInNldG50cHNlcnZlciIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgcmV0X3Jlc3VsdCA9IHsnZXJyJzogW10sICdvdXQnOiBbXX0KLSAgICAgICAgc2VydmVyID0gIjEyNy4xMjcuMS4wIgotICAgICAgICBpZiAobGVuKGFyZ3NfbGlzdCkgPiAwIGFuZCAKLSAgICAgICAgICAgIGFyZ3NfbGlzdFswXSBpcyBub3QgTm9uZSBhbmQgCi0gICAgICAgICAgICBhcmdzX2xpc3RbMF0gIT0gIiIpOgotICAgICAgICAgICAgc2VydmVyID0gc3RyKGFyZ3NfbGlzdFswXSkKLSAgICAgICAgbnRwY29uZiA9IE5UUF9DT05GICUgc2VydmVyCi0gICAgICAgIGNoYW5nZWQgPSBGYWxzZQotCi0gICAgICAgIGYgPSBvcGVuKCIvZXRjL250cC5jb25mIiwgInIiKQotICAgICAgICBpZiAoJycuam9pbihudHBjb25mKSAhPSBmLnJlYWQoKSk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYgPSBvcGVuKCIvZXRjL250cC5jb25mIiwgInciKQotICAgICAgICAgICAgZi53cml0ZSgnJy5qb2luKG50cGNvbmYpKQotICAgICAgICAgICAgY2hhbmdlZCA9IFRydWUKLQotICAgICAgICBpZiBjaGFuZ2VkOgotICAgICAgICAgICAgbnRwID0gUG9wZW4oWyIvdXNyL3NiaW4vc2VydmljZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAibnRwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXN0YXJ0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUpCi0gICAgICAgIHJldHVybiByZXRfcmVzdWx0Ci0KLQotY2xhc3MgU2V0VGltZXpvbmUoT3NXcmFwcGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSA9ICJzZXR0aW1lem9uZSIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9iYXNoJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogWyctYycsICdlY2hvICIlcyIgPi9ldGMvdGltZXpvbmUnICUgKHN0cihhcmdzX2xpc3RbMF0pLCApXX0sCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvYmluL2Jhc2gnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1jJywgJy91c3Ivc2Jpbi9kcGtnLXJlY29uZmlndXJlIC1mIG5vbmludGVyYWN0aXZlIHR6ZGF0YSAyPiYxJ119LAotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL3NiaW4vaW5pdGN0bCcsCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsncmVzdGFydCcsICdyc3lzbG9nJywgXX0sCi0gICAgICAgIF0KLSAgICAgICAgcmV0dXJuIE9zV3JhcHBlci5zZXRfbmV3KHNlbGYsIFtdLCBbW10sIFtdLCBbXV0pCi0KLQotY2xhc3MgVW5zZXRUaW1lem9uZShPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gInVuc2V0dGltZXpvbmUiKToKLSAgICAgICAgT3NXcmFwcGVyLl9faW5pdF9fKHNlbGYsIG5hbWUsIFtdLCBbXSkKLSAgICBkZWYgc2V0KHNlbGYsIGFyZ3NfbGlzdCk6Ci0gICAgICAgIHNlbGYuY21kc19sc3RfZm9yX3NldCA9IFsKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9iaW4vYmFzaCcsCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsnLWMnLCAnZWNobyAiRXRjL1VUQyIgPi9ldGMvdGltZXpvbmUnXX0sCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvYmluL2Jhc2gnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1jJywgJy91c3Ivc2Jpbi9kcGtnLXJlY29uZmlndXJlIC1mIG5vbmludGVyYWN0aXZlIHR6ZGF0YSAyPiYxJ119LAotICAgICAgICBdCi0gICAgICAgIHJldHVybiBPc1dyYXBwZXIuc2V0X25ldyhzZWxmLCBbXSwgW1tdLCBbXV0pCi0KLWNsYXNzIFNldFN5c2xvZ1NlcnZlcihPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gInNldHN5c2xvZ3NlcnZlciIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9zZWQnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1pJywgJy9eKi4qIEAvZCcsICcvZXRjL3JzeXNsb2cuY29uZiddfSwKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9iaW4vZWNobycsCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsnKi4nICsgc3RyKGFyZ3NfbGlzdFsxXSkgKyAnIEAnICsgc3RyKGFyZ3NfbGlzdFswXSldLCAnc3Rkb3V0ZmlsZScgOiAnL2V0Yy9yc3lzbG9nLmNvbmYnfSwKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9zYmluL2luaXRjdGwnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJ3Jlc3RhcnQnLCAncnN5c2xvZyddfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXSwgW10sIFtdXSkKLQotY2xhc3MgVW5zZXRTeXNsb2dTZXJ2ZXIoT3NXcmFwcGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSA9ICJ1bnNldHN5c2xvZ3NlcnZlciIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9zZWQnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1pJywgJy9eKi4vZCcsICcvZXRjL3JzeXNsb2cuY29uZiddfSwKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9zYmluL2luaXRjdGwnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJ3Jlc3RhcnQnLCAncnN5c2xvZyddfQotICAgICAgICBdCi0gICAgICAgIHJldHVybiBPc1dyYXBwZXIuc2V0X25ldyhzZWxmLCBbXSwgW1tdLCBbXV0pCi0KLWNsYXNzIERhdGVUaW1lKE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAiZ2V0ZGF0ZXRpbWUiKToKLSAgICAgICAgT3NXcmFwcGVyLl9faW5pdF9fKHNlbGYsIG5hbWUsIFtdLCBbXSkKLSAgICBkZWYgc2V0KHNlbGYsIGFyZ3NfbGlzdCk6Ci0gICAgICAgICMgSWYgd2UncmUgZ2V0dGluZyBvciBzZXR0aW5nIHRoZSBjbG9jayB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudAotICAgICAgICAjIHNob3VsZCBiZSBlaXRoZXIgJ3V0Yycgb3IgJ2xvY2FsJyB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0bwotICAgICAgICAjIHVzZSBsb2NhbCB0aW1lLgotICAgICAgICAjIElmIHdlJ3JlIHNldHRpbmcgdGhlIGNsb2NrIHRoZXJlJ3MgYSBzZWNvbmQgYXJndW1lbnQgd2hpY2ggaXMgdGhlCi0gICAgICAgICMgdGltZSB0byBzZXQsIGZvcm1hdHRlZCBhcyBzaG93biBpbiBzZXRfY21kX2FyZ3MgYmVsb3cuCi0gICAgICAgIHNldF9wYXJ0cyA9IGFyZ3NfbGlzdFsxXS5zcGxpdCgnOicpCi0gICAgICAgIHNldF9wYXJhbSA9ICclMi4ycyUyLjJzJTIuMnMlMi4ycyU0LjRzLiUyLjJzJyAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9wYXJ0c1sxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9wYXJ0c1syXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9wYXJ0c1szXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9wYXJ0c1s0XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9wYXJ0c1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9wYXJ0c1s1XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgY21kX2FyZ3MgPSBbc3RyKHNldF9wYXJhbSldCi0gICAgICAgIGlmIHN0cihhcmdzX2xpc3RbMF0pLmxvd2VyKCkgPT0gJ3V0Yyc6Ci0gICAgICAgICAgICBjbWRfYXJncy5pbnNlcnQoMCwgJy11JykKLSAgICAgICAgI2RhdGVfaW5mbyA9IGFyZ3NfbGlzdFswXQotICAgICAgICAjaXNfdXRjID0gYXJnc19saXN0WzFdCi0gICAgICAgICNkYXRlX3N0ciA9ICIlczolczolczolczolczolczolcyIKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9kYXRlJywgJ2FyZ3NfbHN0JyA6IGNtZF9hcmdzfSwKLSAgICAgICAgXQotICAgICAgICBPc1dyYXBwZXIuc2V0X25ldyhzZWxmLCBbXSwgW1tdXSkKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0KGFyZ3NfbGlzdCkKLSAgICAKLSAgICBkZWYgZ2V0KHNlbGYsIGFyZ3NfbGlzdCk6Ci0gICAgICAgIGNtZF9hcmdzID0gWycrJVk6JW06JWQ6JUg6JU06JVM6JVonXQotICAgICAgICBpZiBzdHIoYXJnc19saXN0WzBdKS5sb3dlcigpID09ICd1dGMnOgotICAgICAgICAgICAgY21kX2FyZ3MuaW5zZXJ0KDAsICctdScpCi0gICAgICAgIHNlbGYuY21kc19sc3RfZm9yX2dldCA9IFsKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9iaW4vZGF0ZScsICdhcmdzX2xzdCcgOiBjbWRfYXJnc30sCi0gICAgICAgIF0KLSAgICAgICAgcmV0dXJuIE9zV3JhcHBlci5nZXRfbmV3KHNlbGYsIFtdLCBbW11dKQotICAgICAgICAKLWNsYXNzIFNldENvbnRyb2xsZXJJZChPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gInNldGNvbnRyb2xsZXJpZCIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9zZWQnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1pJywgJy9eY29udHJvbGxlci1pZD0vZCcsICIlcy9ydW4vYm9vdC1jb25maWciICUgU0ROX1JPT1RdfSwKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9iaW4vYmFzaCcsCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsnLWMnLCAnZWNobyAiY29udHJvbGxlci1pZD0lcyIgPj4gJXMvcnVuL2Jvb3QtY29uZmlnJyAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGFyZ3NfbGlzdFswXSksIFNETl9ST09UKQotICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXSwgW11dKQotCi1jbGFzcyBIQUZhaWxiYWNrKE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAiaGFmYWlsYmFjayIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi90b3VjaCcsCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsiJXMvZm9yY2Utb25lLXRpbWUtaGVhbHRoLWNoZWNrLWZhaWx1cmUiICUgU0ROX1JPT1RdfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXV0pCi0KLSNjbGFzcyBIQUZhaWxvdmVyKE9zV3JhcHBlcik6Ci0jICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gImhhZmFpbG92ZXIiKToKLSMgICAgICAgIE9zV3JhcHBlci5fX2luaXRfXyhzZWxmLCBuYW1lLCBbXSwgW10pCi0jICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSMgICAgICAgIHNlbGYuY21kc19sc3RfZm9yX3NldCA9IFsKLSMgICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvYmluL2Jhc2gnLAotIyAgICAgICAgICAgICAnYXJnc19sc3QnIDogWyIlcy9zeXMvYmluL2hhLWZhaWxvdmVyLnNoIiAlIFNETl9ST09ULCBzdHIoYXJnc19saXN0WzBdKV19LAotIyAgICAgICAgXQotIyAgICAgICAgcmV0dXJuIE9zV3JhcHBlci5zZXRfbmV3KHNlbGYsIFtdLCBbW11dKQotCi1jbGFzcyBTZXRWcnJwVmlydHVhbFJvdXRlcklkKE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAic2V0dnJycHZpcnR1YWxyb3V0ZXJpZCIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9iYXNoJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogWyIlcy9zeXMvYmluL3NldC12cnJwLXZpcnR1YWwtcm91dGVyLWlkLnNoIiAlIFNETl9ST09ULCBzdHIoYXJnc19saXN0WzBdKV19LAotICAgICAgICBdCi0gICAgICAgIHJldHVybiBPc1dyYXBwZXIuc2V0X25ldyhzZWxmLCBbXSwgW1tdXSkKLQotCi1kZWYgd3JpdGVfY29udHJvbGxlcl9yZXN0YXJ0ZWQoKToKLSAgICAiIiIKLSAgICBXcml0ZSB0aGUgY29udHJvbGxlciBzdGFydGVkIGZpbGUgd2l0aCB0aGUgY3VycmVudCB0aW1lc3RhbXAgKyA1IHNlY29uZHMuIFRoaXMgd2lsbAotICAgIGVuc3VyZSB0aGF0IGhlYWx0aCBjaGVjayBzY3JpcHQgaWdub3JlcyB0aGUgc3RhdGUgb2Ygc2RucGxhdGZvcm0gZm9yIDUgc2Vjb25kcwotICAgIGZyb20gY3VycmVudCB0aW1lCi0gICAgIiIiCi0gICAgZiA9IG9wZW4oIi92YXIvcnVuL3NkbnBsYXRmb3JtLWhlYWx0aGNoZWNrLWRpc2FibGVkIiwgInciKQotICAgICMgd3JpdGUgdGltZSBjb252ZXJ0ZWQgdG8gaW50IGFuZCB0aGVuIHN0cmluZwotICAgIGYud3JpdGUoc3RyKDUgKyBsb25nKHRpbWUudGltZSgpKSkpCi0gICAgZi5jbG9zZSgpCi0KLQotY2xhc3MgU2V0U3RhdGljRmxvd09ubHlDb25maWcoT3NXcmFwcGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSA9ICJzZXRzdGF0aWNmbG93b25seWNvbmZpZyIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLQotICAgICAgICAjIHdyaXRlIHRoZSBjb250cm9sbGVyIHN0YXJ0ZWQgZmlsZS4gZG8gaXQgYmVmb3JlIGFjdHVhbGx5IHJlc2V0dGluZwotICAgICAgICAjIHNvIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBjb25kaXRpb24gd2l0aCBoZWFsdGggY2hlY2sgc2NyaXB0Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdyaXRlX2NvbnRyb2xsZXJfcmVzdGFydGVkKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgX2U6Ci0gICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLQotICAgICAgICBzZWxmLmNtZHNfbHN0X2Zvcl9zZXQgPSBbCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvYmluL3RvdWNoJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogWyIlcy9mZWF0dXJlL3N0YXRpY2Zsb3dvbmx5Y29uZmlnIiAlIFNETl9ST09UXX0sCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvc2Jpbi9pbml0Y3RsJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogWydyZXN0YXJ0JywgJ3NkbnBsYXRmb3JtJ119LAotICAgICAgICBdCi0gICAgICAgIHJldHVybiBPc1dyYXBwZXIuc2V0X25ldyhzZWxmLCBbXSwgW1tdLCBbXSwgW11dKQotCi1jbGFzcyBSZXN0YXJ0U0ROUGxhdGZvcm0oT3NXcmFwcGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSA9ICJyZXN0YXJ0c2RucGxhdGZvcm0iKToKLSAgICAgICAgT3NXcmFwcGVyLl9faW5pdF9fKHNlbGYsIG5hbWUsIFtdLCBbXSkKLSAgICBkZWYgc2V0KHNlbGYsIGFyZ3NfbGlzdCk6Ci0KLSAgICAgICAgIyB3cml0ZSB0aGUgY29udHJvbGxlciBzdGFydGVkIGZpbGUuIGRvIGl0IGJlZm9yZSBhY3R1YWxseSByZXNldHRpbmcKLSAgICAgICAgIyBzbyB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9uIHdpdGggaGVhbHRoIGNoZWNrIHNjcmlwdAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3cml0ZV9jb250cm9sbGVyX3Jlc3RhcnRlZCgpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIF9lOgotICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0KLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL3NiaW4vaW5pdGN0bCcsCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsncmVzdGFydCcsICdzZG5wbGF0Zm9ybSddfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXV0pCi0KLWNsYXNzIEFib3J0VXBncmFkZShPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gImFib3J0dXBncmFkZSIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLQotICAgICAgICBzZWxmLmNtZHNfbHN0X2Zvcl9zZXQgPSBbCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvb3B0L3NkbnBsYXRmb3JtL3N5cy9iaW4vYWJvcnRfdXBncmFkZS5zaCcsCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFtdfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXV0pCi0KLWNsYXNzIFNldERlZmF1bHRDb25maWcoT3NXcmFwcGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSA9ICJzZXRkZWZhdWx0Y29uZmlnIik6Ci0gICAgICAgIE9zV3JhcHBlci5fX2luaXRfXyhzZWxmLCBuYW1lLCBbXSwgW10pCi0gICAgZGVmIHNldChzZWxmLCBhcmdzX2xpc3QpOgotCi0gICAgICAgICMgd3JpdGUgdGhlIGNvbnRyb2xsZXIgc3RhcnRlZCBmaWxlLiBkbyBpdCBiZWZvcmUgYWN0dWFsbHkgcmVzZXR0aW5nCi0gICAgICAgICMgc28gdGhhdCB0aGVyZSBpcyBubyByYWNlIGNvbmRpdGlvbiB3aXRoIGhlYWx0aCBjaGVjayBzY3JpcHQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd3JpdGVfY29udHJvbGxlcl9yZXN0YXJ0ZWQoKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBfZToKLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotCi0gICAgICAgIHNlbGYuY21kc19sc3RfZm9yX3NldCA9IFsKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9iaW4vcm0nLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1mJywgIiVzL2ZlYXR1cmUvc3RhdGljZmxvd29ubHljb25maWciICUgU0ROX1JPT1RdfSwKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9zYmluL2luaXRjdGwnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJ3Jlc3RhcnQnLCAnc2RucGxhdGZvcm0nXX0sCi0gICAgICAgICAgICAjIGlmIHRoZXJlIGFyZSBvdGhlciBjb25maWdzIHRoZWlyIGZsYWcgZmlsZXMgbmVlZCB0byBiZSBkZWxldGVkIGhlcmUgdG9vCi0gICAgICAgIF0KLSAgICAgICAgcmV0dXJuIE9zV3JhcHBlci5zZXRfbmV3KHNlbGYsIFtdLCBbW10sIFtdLCBbXV0pCi0KLWNsYXNzIFNldEhvc3RuYW1lKE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAic2V0aG9zdG5hbWUiKToKLSAgICAgICAgT3NXcmFwcGVyLl9faW5pdF9fKHNlbGYsIG5hbWUsIFtdLCBbXSkKLSAgICBkZWYgc2V0KHNlbGYsIGFyZ3NfbGlzdCk6Ci0gICAgICAgIGhvc3RuYW1lID0gc3RyKGFyZ3NfbGlzdFswXSkKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgIyByZXBsYWNlIGhvc3RuYW1lIGZyb20gL2V0Yy9ob3N0cwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9zZWQnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1pJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncy9eMTI3XC4wXC4xXC4xIC4qJCQvMTI3LjAuMS4xICVzLycgJSBob3N0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcvZXRjL2hvc3RzJ119LAotICAgICAgICAgICAgIyBwb3B1bGF0ZSAvZXRjL2hvc3RzCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvYmluL2Jhc2gnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1jJywgJ2VjaG8gIiVzIiA+L2V0Yy9ob3N0bmFtZScgJSBob3N0bmFtZV19LAotICAgICAgICAgICAgIyB0ZWxsIHRoZSBzeXN0ZW0gYWJvdXQgdGhlIGhvc3RuYW1lCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvYmluL2hvc3RuYW1lJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogWyctYicsICctRicsICcvZXRjL2hvc3RuYW1lJ10gfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXSwgW10sIFtdLF0pCi0KLSMgSW4gUEFNLCAiYXV0aCIgPT0gYXV0aGVudGljYXRpb24gKHN1cnByaXNlISkKLSMgWFhYIHJvdGggLS0gbWF5YmUgdXNlIFBBUCBpbnN0ZWFkPwotCi0jICdzdWZmaWNpZW50JyAtLT4gdGFjYWNzKyBhbmQgbG9jYWwgYXV0aGVudGljYXRpb24gYXJlIGVuYWJsZWQKLUFVVEhOX1RQTCA9ICIiIlwKLWF1dGggW2RlZmF1bHQ9MSBzdWNjZXNzPWlnbm9yZV0gcGFtX3N1Y2NlZWRfaWYuc28gdWlkID49IDEwMDAwCi1hdXRoIHN1ZmZpY2llbnQgcGFtX3RhY3BsdXMuc28gJShzZXJ2ZXJzKXMgJShzZWNyZXRzKXMgJSh0aW1lb3V0KXMgc2VydmljZT1sb2dpbiBwcm90b2NvbD1pcCBsb2dpbj1sb2dpbgotIiIiCi0KLSMgSW4gUEFNLCAiYWNjb3VudCIgPT0gYXV0aG9yaXphdGlvbgotQVVUSFpfVFBMID0gIiIiXAotYWNjb3VudCBbZGVmYXVsdD0xIHN1Y2Nlc3M9aWdub3JlXSBwYW1fc3VjY2VlZF9pZi5zbyB1aWQgPj0gMTAwMDAKLWFjY291bnQgc3VmZmljaWVudCBwYW1fdGFjcGx1cy5zbyAlKHNlY3JldHMpcyAlKHRpbWVvdXQpcyBzZXJ2aWNlPWxvZ2luIHNlcnZpY2VfYXY9c2hlbGwgcHJvdG9jb2w9aXAgbG9naW49bG9naW4KLSIiIgotCi0jIEluIFBBTSwgInNlc3Npb24iID09IGFjY291bnRpbmcKLUFDQ1RfVFBMID0gIiIiXAotc2Vzc2lvbiBzdWZmaWNpZW50IHBhbV90YWNwbHVzLnNvICUoc2VydmVycylzICUoc2VjcmV0cylzICUodGltZW91dClzIHNlcnZpY2U9bG9naW4gc2VydmljZV9hdj1zaGVsbCBwcm90b2NvbD1pcAotIiIiCi0KLSMgWFhYIHJvdGggLS0ga2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgY3VycmVudCByZWxlYXNlCi0jIG9mIC9ldGMvcGFtLmQvc3NoZAotU1NIRF9UQUNQTFVTX1RQTCA9ICIiIlwKLSMgUEFNIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBTZWN1cmUgU2hlbGwgc2VydmljZQotCi0jIFJlYWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZyb20gL2V0Yy9lbnZpcm9ubWVudCBhbmQKLSMgL2V0Yy9zZWN1cml0eS9wYW1fZW52LmNvbmYuCi1hdXRoICAgICAgIHJlcXVpcmVkICAgICBwYW1fZW52LnNvICMgWzFdCi0jIEluIERlYmlhbiA0LjAgKGV0Y2gpLCBsb2NhbGUtcmVsYXRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2VyZSBtb3ZlZCB0bwotIyAvZXRjL2RlZmF1bHQvbG9jYWxlLCBzbyByZWFkIHRoYXQgYXMgd2VsbC4KLWF1dGggICAgICAgcmVxdWlyZWQgICAgIHBhbV9lbnYuc28gZW52ZmlsZT0vZXRjL2RlZmF1bHQvbG9jYWxlCi0KLSMgU3RhbmRhcmQgVW4qeCBhdXRoZW50aWNhdGlvbi4KLSUoYXV0aG4pcwotCi0jIERpc2FsbG93IG5vbi1yb290IGxvZ2lucyB3aGVuIC9ldGMvbm9sb2dpbiBleGlzdHMuCi1hY2NvdW50ICAgIHJlcXVpcmVkICAgICBwYW1fbm9sb2dpbi5zbwotCi0jIFVuY29tbWVudCBhbmQgZWRpdCAvZXRjL3NlY3VyaXR5L2FjY2Vzcy5jb25mIGlmIHlvdSBuZWVkIHRvIHNldCBjb21wbGV4Ci0jIGFjY2VzcyBsaW1pdHMgdGhhdCBhcmUgaGFyZCB0byBleHByZXNzIGluIHNzaGRfY29uZmlnLgotIyBhY2NvdW50ICByZXF1aXJlZCAgICAgcGFtX2FjY2Vzcy5zbwotCi0jIFN0YW5kYXJkIFVuKnggYXV0aG9yaXphdGlvbi4KLSUoYXV0aHopcwotCi0jIFN0YW5kYXJkIFVuKnggc2Vzc2lvbiBzZXR1cCBhbmQgdGVhcmRvd24uCi0lKGFjY3QpcwotCi0jIFByaW50IHRoZSBtZXNzYWdlIG9mIHRoZSBkYXkgdXBvbiBzdWNjZXNzZnVsIGxvZ2luLgotc2Vzc2lvbiAgICBvcHRpb25hbCAgICAgcGFtX21vdGQuc28gIyBbMV0KLQotIyBQcmludCB0aGUgc3RhdHVzIG9mIHRoZSB1c2VyJ3MgbWFpbGJveCB1cG9uIHN1Y2Nlc3NmdWwgbG9naW4uCi1zZXNzaW9uICAgIG9wdGlvbmFsICAgICBwYW1fbWFpbC5zbyBzdGFuZGFyZCBub2VudiAjIFsxXQotCi0jIFNldCB1cCB1c2VyIGxpbWl0cyBmcm9tIC9ldGMvc2VjdXJpdHkvbGltaXRzLmNvbmYuCi1zZXNzaW9uICAgIHJlcXVpcmVkICAgICBwYW1fbGltaXRzLnNvCi0KLSMgU2V0IHVwIFNFTGludXggY2FwYWJpbGl0aWVzIChuZWVkIG1vZGlmaWVkIHBhbSkKLSMgc2Vzc2lvbiAgcmVxdWlyZWQgICAgIHBhbV9zZWxpbnV4LnNvIG11bHRpcGxlCi0KLSMgU3RhbmRhcmQgVW4qeCBwYXNzd29yZCB1cGRhdGluZy4KLUBpbmNsdWRlIGNvbW1vbi1wYXNzd29yZAotIiIiCi0KLWNsYXNzIFRhY2Fjc1BsdXNDb25maWcoT3NXcmFwcGVyKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPSJ0YWNhY3NfcGx1c19jb25maWciKToKLSAgICAgICAgT3NXcmFwcGVyLl9faW5pdF9fKHNlbGYsIG5hbWUsIFtdLCBbXSkKLSAgICAgICAgc2VsZi5jb25maWcgPSB7fQotICAgICAgICBzZWxmLmhvc3RzID0gW10KLSAgICAgICAgc2VsZi5yZXN1bHQgPSBkaWN0KGVycj1bXSwgb3V0PVtdKQotCi0gICAgZGVmIGlzRW5hYmxlZChzZWxmKToKLSAgICAgICAgIiIiSXMgVEFDQUNTKyBlbmFibGVkPwotCi0gICAgICAgIElmIGFueSBvZiBhdXRobi9hdXRoei9hY2N0IGlzIHNldCwgKmFuZCogdGhlcmUgaXMgYSBub24tZW1wdHkKLSAgICAgICAgc2V0IG9mIFRBQ0FDUysgaG9zdHMsIHRoZW4gd2Ugc2hvdWxkIGVuYWJsZSB0aGUgUEFNIHBsdWdpbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgKHNlbGYuaG9zdHMgCi0gICAgICAgICAgICBhbmQgKHNlbGYuY29uZmlnWydmaWVsZHMnXVsndGFjYWNzX3BsdXNfYXV0aG4nXQotICAgICAgICAgICAgICAgICBvciBzZWxmLmNvbmZpZ1snZmllbGRzJ11bJ3RhY2Fjc19wbHVzX2F1dGh6J10KLSAgICAgICAgICAgICAgICAgb3Igc2VsZi5jb25maWdbJ2ZpZWxkcyddWyd0YWNhY3NfcGx1c19hY2N0J10pKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgZGlzYWJsZVBhbURlZmF1bHQoc2VsZik6Ci0gICAgICAgICIiIkRpc2FibGUgdGhlIGRlZmF1bHQgUEFNIHNldHVwLgotCi0gICAgICAgIFRoaXMgaXMgaW5zdGFsbGVkIGJ5IHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gc2NyaXB0cwotICAgICAgICBmb3IgdGhlIGxpYnBhbS10YWNwbHVzIERFQi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCIvdXNyL3NoYXJlL3BhbS1jb25maWdzL3RhY3BsdXMiKToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGNtZCA9ICgiL3Vzci9zYmluL3BhbS1hdXRoLXVwZGF0ZSIsICItLXJlbW92ZSIsICJ0YWNwbHVzIiwpCi0gICAgICAgIHBpcGUgPSBQb3BlbihjbWQsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSkKLSAgICAgICAgb3V0LCBlcnIgPSBwaXBlLmNvbW11bmljYXRlKCkKLSAgICAgICAgY29kZSA9IHBpcGUud2FpdCgpCi0KLSAgICAgICAgb3V0ID0gKG91dCBvciAiIikuc3RyaXAoKS5zcGxpdCgiXG4iKQotICAgICAgICBlcnIgPSAoZXJyIG9yICIiKS5zdHJpcCgpLnNwbGl0KCJcbiIpCi0KLSAgICAgICAgaWYgbm90IGNvZGU6Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdFsnb3V0J10uYXBwZW5kKCJkaXNhYmxlZCB0YWNwbHVzIHZpYSBwYW0tYXV0aC11cGRhdGVcbiIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdFsnb3V0J10uZXh0ZW5kKFtsICsgIlxuIiBmb3IgbCBpbiBvdXRdKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRbJ2VyciddLmV4dGVuZChbbCArICJcbiIgZm9yIGwgaW4gZXJyXSkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0WydlcnInXS5hcHBlbmQoInBhbS1hdXRoLXVwZGF0ZSBmYWlsZWRcbiIpCi0KLSAgICBkZWYgZGlzYWJsZVBhbShzZWxmKToKLSAgICAgICAgIiIiRGlzYWJsZSB0aGUgVEFDQUNTKyBQQU0gcGx1Z2luLiIiIgotICAgICAgICBtID0gZGljdChhdXRobj0iQGluY2x1ZGUgY29tbW9uLWF1dGgiLAotICAgICAgICAgICAgICAgICBhdXRoej0iQGluY2x1ZGUgY29tbW9uLWFjY291bnQiLAotICAgICAgICAgICAgICAgICBhY2N0PSJAaW5jbHVkZSBjb21tb24tc2Vzc2lvbiIpCi0gICAgICAgIHNlbGYud3JpdGVMb2NrZWQoIi9ldGMvcGFtLmQvc3NoZCIsIFNTSERfVEFDUExVU19UUEwgJSBtKQotCi0gICAgZGVmIHJlYWRMb2NrZWQoc2VsZiwgcGF0aCk6Ci0KLSAgICAgICAgZmQgPSBvcGVuKHBhdGgsICJyIikKLQotICAgICAgICBmY250bC5sb2NrZihmZCwgZmNudGwuTE9DS19TSCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYnVmID0gZmQucmVhZCgpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIHdoYXQ6Ci0gICAgICAgICAgICBmY250bC5sb2NrZihmZCwgZmNudGwuTE9DS19VTikKLSAgICAgICAgICAgIGZkLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0WydlcnInXS5hcHBlbmQoc3RyKHdoYXQpICsgIlxuIikKLSAgICAgICAgICAgIHNlbGYucmVzdWx0WydlcnInXS5hcHBlbmQoImNhbm5vdCByZWFkICVzXG4iICUgcGF0aCkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGZjbnRsLmxvY2tmKGZkLCBmY250bC5MT0NLX1VOKQotCi0gICAgICAgIGZkLmNsb3NlKCkKLQotICAgICAgICByZXR1cm4gYnVmCi0KLSAgICBkZWYgd3JpdGVMb2NrZWQoc2VsZiwgcGF0aCwgYnVmLCBiYWNrdXA9VHJ1ZSk6Ci0gICAgICAgIAotICAgICAgICBpZiBiYWNrdXA6Ci0gICAgICAgICAgICBzaHV0aWwuY29weTIocGF0aCwgcGF0aCArICItIikKLQotICAgICAgICBmZCA9IG9wZW4ocGF0aCwgInciKQotCi0gICAgICAgIGZjbnRsLmxvY2tmKGZkLCBmY250bC5MT0NLX0VYKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmZC53cml0ZShidWYpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIHdoYXQ6Ci0gICAgICAgICAgICBmY250bC5sb2NrZihmZCwgZmNudGwuTE9DS19VTikKLSAgICAgICAgICAgIGZkLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0WydlcnInXS5hcHBlbmQoc3RyKHdoYXQpICsgIlxuIikKLSAgICAgICAgICAgIHNlbGYucmVzdWx0WydlcnInXS5hcHBlbmQoImNhbm5vdCB3cml0ZSAlc1xuIiAlIHBhdGgpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZmNudGwubG9ja2YoZmQsIGZjbnRsLkxPQ0tfVU4pCi0KLSAgICAgICAgZmQuY2xvc2UoKQotCi0gICAgZGVmIGVuYWJsZU5zcyhzZWxmKToKLSAgICAgICAgIiIiRW5hYmxlIHRoZSBOU1MgcGx1Z2luLiIiIgotICAgICAgICAKLSAgICAgICAgYnVmID0gc2VsZi5yZWFkTG9ja2VkKCIvZXRjL25zc3dpdGNoLmNvbmYiKQotICAgICAgICBpZiBidWYgaXMgTm9uZTogcmV0dXJuCi0KLSAgICAgICAgcCA9IGJ1Zi5maW5kKCJcbnBhc3N3ZDoiKQotICAgICAgICBxID0gYnVmLmZpbmQoIlxuIiwgcCs4KQotICAgICAgICBpZiBwIDwgMCBvciBxIDwgMDoKLSAgICAgICAgICAgIHNlbGYucmVzdWx0WydlcnInXS5hcHBlbmQoImNhbm5vdCBmaW5kIHBhc3N3ZCBlbnRyeSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbiAvZXRjL25zc3dpdGNoLmNvbmZcbiIpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmID0gYnVmW3ArODpxXQotICAgICAgICBpZiAicmVtb3RldXNlciIgaW4gZjoKLSAgICAgICAgICAgIHNlbGYucmVzdWx0WydvdXQnXS5hcHBlbmQoInJlbW90ZXVzZXIgYWxyZWFkeSBlbmFibGVkIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGluIC9ldGMvbnNzc3dpdGNoLmNvbmZcbiIpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLnJlc3VsdFsnb3V0J10uYXBwZW5kKCJlbmFibGluZyByZW1vdGV1c2VyIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaW4gL2V0Yy9uc3Nzd2l0Y2guY29uZlxuIikKLSAgICAgICAgZiA9ICIgIiArIGYuc3RyaXAoKSArICIgcmVtb3RldXNlciIKLSAgICAgICAgYnVmID0gYnVmWzpwKzhdICsgZiArIGJ1ZltxOl0KLQotICAgICAgICBzZWxmLndyaXRlTG9ja2VkKCIvZXRjL25zc3dpdGNoLmNvbmYiLCBidWYpCi0KLSAgICBkZWYgZGlzYWJsZU5zcyhzZWxmKToKLSAgICAgICAgIiIiRGlzYWJsZSB0aGUgTlNTIHBsdWdpbi4iIiIKLQotICAgICAgICBidWYgPSBzZWxmLnJlYWRMb2NrZWQoIi9ldGMvbnNzd2l0Y2guY29uZiIpCi0gICAgICAgIGlmIGJ1ZiBpcyBOb25lOiByZXR1cm4KLSAgICAgICAgCi0gICAgICAgIHAgPSBidWYuZmluZCgiXG5wYXNzd2Q6IikKLSAgICAgICAgcSA9IGJ1Zi5maW5kKCJcbiIsIHArOCkKLSAgICAgICAgaWYgcCA8IDAgb3IgcSA8IDA6Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdFsnZXJyJ10uYXBwZW5kKCJjYW5ub3QgZmluZCBwYXNzd2QgZW50cnkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaW4gL2V0Yy9uc3N3aXRjaC5jb25mXG4iKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgbCA9IGJ1ZltwKzg6cV0uc3RyaXAoKS5zcGxpdCgpCi0gICAgICAgIGlmICJyZW1vdGV1c2VyIiBub3QgaW4gbDoKLSAgICAgICAgICAgIHNlbGYucmVzdWx0WydvdXQnXS5hcHBlbmQoInJlbW90ZXVzZXIgYWxyZWFkeSBkaXNhYmxlZCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbiAvZXRjL25zc3N3aXRjaC5jb25mXG4iKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5yZXN1bHRbJ291dCddLmFwcGVuZCgiZGlzYWJsaW5nIHJlbW90ZXVzZXIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbiAvZXRjL25zc3N3aXRjaC5jb25mXG4iKQotICAgICAgICBsLnJlbW92ZSgicmVtb3RldXNlciIpCi0gICAgICAgIGYgPSAiICIgKyAiICIuam9pbihsKQotICAgICAgICBidWYgPSBidWZbOnArOF0gKyBmICsgYnVmW3E6XQotCi0gICAgICAgIHNlbGYud3JpdGVMb2NrZWQoIi9ldGMvbnNzd2l0Y2guY29uZiIsIGJ1ZikKLQotICAgIGRlZiBlbmFibGVQYW0oc2VsZik6Ci0gICAgICAgICIiIkVuYWJsZSB0aGUgVEFDQUNTKyBQQU0gcGx1Z2luLgotCi0gICAgICAgICogY29uc3RydWN0IGNvbnNvbGlkYXRlIHNlcnZlciBhbmQgc2VjcmV0IGxpc3RzCi0gICAgICAgICogZ2VuZXJhdGUgYSB0aW1lb3V0IGxpbmUKLSAgICAgICAgKiBwaWNrIHN1ZmZpY2llbnQvcmVxdWlyZWQgY2xhdXNlcyBhcyBpbmRpY2F0ZWQgYnkgZW5hYmxlCi0gICAgICAgICAgZmxhZ3MgaW4gdGhlIEpTT04KLQotICAgICAgICBTZWUKLSAgICAgICAgaHR0cDovL3RhY3BsdXMuZ2l0LnNvdXJjZWZvcmdlLm5ldC9naXQvZ2l0d2ViLmNnaT9wPXRhY3BsdXMvdGFjcGx1czthPWJsb2JfcGxhaW47Zj1SRUFETUU7aGI9SEVBRAotICAgICAgICAiIiIKLSAgICAgICAgCi0gICAgICAgICMgZGlzYWJsZSBUQUNBQ1MrIHdoaWxlIHVwZGF0aW5nCi0gICAgICAgIHNlbGYuZGlzYWJsZU5zcygpCi0gICAgICAgIHNlbGYuZGlzYWJsZVBhbSgpCi0KLSAgICAgICAgIyBYWFggcm90aCAtLSBmaWVsZCBpcyAnaXAnLCBidXQgc2luY2UgaXQgaXMgdGhlIHByaW1hcnkga2V5LAotICAgICAgICAjIGl0IGdldCBtYXBwZWQgdG8gJ3BrJy4gIEdvIGZpZ3VyZS4KLSAgICAgICAgZGVmIHN2ckNsYXVzZShoKToKLSAgICAgICAgICAgIHNlbGYucmVzdWx0WydvdXQnXS5hcHBlbmQoImVuYWJsaW5nIGhvc3QgJXNcbiIgJSBoWydwayddKQotICAgICAgICAgICAgcmV0dXJuICdzZXJ2ZXI9JXMnICUgaFsncGsnXQotICAgICAgICAKLSAgICAgICAgc2VydmVycyA9ICIgIi5qb2luKFtzdnJDbGF1c2UoaCkgZm9yIGggaW4gc2VsZi5ob3N0c10pCi0KLSAgICAgICAgZGVmIGtleUNsYXVzZShoKToKLSAgICAgICAgICAgICIiIlNlY3JldCBmb3IgdGhpcyBob3N0LCBwb3NzaWJseSB0aGUgZ2xvYmFsIG9uZS4iIiIKLSAgICAgICAgICAgIGlmIGhbJ2ZpZWxkcyddWydrZXknXToKLSAgICAgICAgICAgICAgICByZXR1cm4gInNlY3JldD0lcyIgJSBoWydmaWVsZHMnXVsna2V5J10KLSAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnWydmaWVsZHMnXVsna2V5J106Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJzZWNyZXQ9JXMiICUgc2VsZi5jb25maWdbJ2ZpZWxkcyddWydrZXknXQotICAgICAgICAgICAgcmV0dXJuICIiCi0KLSAgICAgICAgc2VjcmV0cyA9ICIgIi5qb2luKFtrZXlDbGF1c2UoaCkgZm9yIGggaW4gc2VsZi5ob3N0c10pCi0KLSAgICAgICAgbSA9IGRpY3Qoc2VydmVycz1zZXJ2ZXJzLCBzZWNyZXRzPXNlY3JldHMpCi0KLSAgICAgICAgaWYgc2VsZi5jb25maWdbJ2ZpZWxkcyddWyd0aW1lb3V0J106Ci0gICAgICAgICAgICBtWyd0aW1lb3V0J10gPSAndGltZW91dD0lcycgJSBzZWxmLmNvbmZpZ1snZmllbGRzJ11bJ3RpbWVvdXQnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbVsndGltZW91dCddID0gJycKLQotICAgICAgICBpc0xvY2FsID0gc2VsZi5jb25maWdbJ2ZpZWxkcyddWydsb2NhbF9hdXRobiddCi0gICAgICAgIGlzVGFjYWNzID0gc2VsZi5jb25maWdbJ2ZpZWxkcyddWyd0YWNhY3NfcGx1c19hdXRobiddCi0KLSAgICAgICAgYXV0aG4gPSBbXQotICAgICAgICBpZiBpc1RhY2FjczoKLSAgICAgICAgICAgIGF1dGhuLmFwcGVuZChBVVRITl9UUEwgJSBtKQotICAgICAgICBpZiBpc0xvY2FsOgotICAgICAgICAgICAgYXV0aG4uYXBwZW5kKCJAaW5jbHVkZSBjb21tb24tYXV0aCIpCi0KLSAgICAgICAgaXNMb2NhbCA9IHNlbGYuY29uZmlnWydmaWVsZHMnXVsnbG9jYWxfYXV0aHonXQotICAgICAgICBpc1RhY2FjcyA9IHNlbGYuY29uZmlnWydmaWVsZHMnXVsndGFjYWNzX3BsdXNfYXV0aHonXQotCi0gICAgICAgIGF1dGh6ID0gW10KLSAgICAgICAgaWYgaXNUYWNhY3M6Ci0gICAgICAgICAgICBhdXRoei5hcHBlbmQoQVVUSFpfVFBMICUgbSkKLSAgICAgICAgaWYgaXNMb2NhbDoKLSAgICAgICAgICAgIGF1dGh6LmFwcGVuZCgiQGluY2x1ZGUgY29tbW9uLWFjY291bnQiKQotCi0gICAgICAgIGlzVGFjYWNzID0gc2VsZi5jb25maWdbJ2ZpZWxkcyddWyd0YWNhY3NfcGx1c19hY2N0J10KLQotICAgICAgICBhY2N0ID0gW10KLSAgICAgICAgaWYgaXNUYWNhY3M6Ci0gICAgICAgICAgICBhY2N0LmFwcGVuZChBQ0NUX1RQTCAlIG0pCi0gICAgICAgIGFjY3QuYXBwZW5kKCJAaW5jbHVkZSBjb21tb24tc2Vzc2lvbiIpCi0KLSAgICAgICAgIyBlbmFibGUgdXNlcmlkIGxvb2t1cHMKLSAgICAgICAgc2VsZi5lbmFibGVOc3MoKQotCi0gICAgICAgICMgd3JpdGUgb3V0IHNzaGQgUEFNIGNvbmZpZyBhcyBhIGZpbmFsIHN0ZXAgdG8gZW5hYmxlIGl0Ci0gICAgICAgIG0gPSBkaWN0KGF1dGhuPSJcbiIuam9pbihhdXRobiksCi0gICAgICAgICAgICAgICAgIGF1dGh6PSJcbiIuam9pbihhdXRoeiksCi0gICAgICAgICAgICAgICAgIGFjY3Q9IlxuIi5qb2luKGFjY3QpKQotICAgICAgICBzZWxmLndyaXRlTG9ja2VkKCIvZXRjL3BhbS5kL3NzaGQiLCBTU0hEX1RBQ1BMVVNfVFBMICUgbSkKLQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLQotICAgICAgICBzZWxmLmNvbmZpZyA9IGpzb24ubG9hZHMoYXJnc19saXN0WzBdKVswXQotICAgICAgICBzZWxmLmhvc3RzID0ganNvbi5sb2FkcyhhcmdzX2xpc3RbMV0pCi0KLSAgICAgICAgc2VsZi5kaXNhYmxlUGFtRGVmYXVsdCgpCi0KLSAgICAgICAgaWYgbm90IHNlbGYuaXNFbmFibGVkKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5kaXNhYmxlTnNzKCkKLSAgICAgICAgICAgICAgICBzZWxmLmRpc2FibGVQYW0oKQotICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0WydvdXQnXS5hcHBlbmQoJ1RBQ0FDUysgKHZpYSBQQU0pIGlzIG5vdyBkaXNhYmxlZFxuJykKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRbJ2VyciddLmFwcGVuZCgnVEFDQUNTKyAodmlhIFBBTSkgZGlzYWJsZSBmYWlsZWRcbicpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5yZXN1bHQKLQotICAgICAgICAjIGVsc2UsIGVuYWJsZSB0aGUgUEFNIG1vZHVsZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmVuYWJsZU5zcygpCi0gICAgICAgICAgICBzZWxmLmVuYWJsZVBhbSgpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdFsnb3V0J10uYXBwZW5kKCdUQUNBQ1MrICh2aWEgUEFNKSBpcyBub3cgZW5hYmxlZFxuJykKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICMgWFhYIHJvdGggLS0gbWF5YmUgYmFjayBvdXQgaGVyZSBhbmQgKmRpc2FibGUqIFBBTQotICAgICAgICAgICAgIyBzbyB0aGF0IHdlIGRvIG5vdCBlbmQgdXAgd2l0aCBhIGJyb2tlbiBQQU0gY29uZmlnCi0gICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0WydlcnInXS5hcHBlbmQoJ1RBQ0FDUysgKHZpYSBQQU0pIGVuYWJsZSBmYWlsZWRcbicpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYucmVzdWx0Ci0KLSMKLSMgZ2V0X3N5c3RlbV92ZXJzaW9uX3N0cmluZwotIwotIyBHZXRzIHRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgY29udHJvbGxlci4KLSMgUmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGluIHNkbmNvbi9yZXN0L3ZpZXdzL2RvX3N5c3RlbV92ZXJzaW9uCi0jCi1kZWYgZ2V0X3N5c3RlbV92ZXJzaW9uX3N0cmluZygpOgotICAgIHZlcnNpb24gPSAiU0ROIE9TIDEuMCAtIGN1c3RvbSB2ZXJzaW9uIgotICAgIHRyeToKLSAgICAgICAgZiA9IG9wZW4oIiVzL3JlbGVhc2UiICUgU0ROX1JPT1QsICdyJykKLSAgICAgICAgdmVyc2lvbiA9IGYucmVhZCgpCi0gICAgICAgIGYuY2xvc2UoKQotICAgIGV4Y2VwdDoKLSAgICAgICAgcGFzcwotICAgIHJldHVybiB2ZXJzaW9uCi0KLSMKLSMgcmV3cml0ZV9ldGNfc25tcGRfY29uZgotIwotIyBBUEkgdG8gcmV3cml0ZSB0aGUgL2V0Yy9zbm1wL3NubXBkLmNvbmYgZmlsZSBiYXNlZCBvbiBsYXRlc3QgY29uZmlnCi0jCi1kZWYgcmV3cml0ZV9ldGNfc25tcGRfY29uZihjb21tdW5pdHksIGxvY2F0aW9uLCBjb250YWN0LCByZXRfcmVzdWx0KToKLSAgICAiIiIKLSAgICBSZXR1cm4gVHJ1ZSB3aGVuIHRoZSAvZXRjL3NubXAvc25tcGQuY29uZiBpcyByZXdyaXR0ZW4uIFJldHVybiBGYWxzZSAKLSAgICBvdGhlcndpc2UuIFRoZSBmaWxlIGlzIHJld3JpdHRlbiBvbmx5IHdoZW4gdGhlIGludGVuZGVkIG5ldyBjb250ZW50cwotICAgIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbGQgY29udGVudHMsIHRoaXMgaXMgYW4gYXR0ZW1wdCB0byBub3QgcmVzdGFydAotICAgIHRoZSBzbm1wIGFnZW50IHVubGVzcyBzb21ldGhpbmcgcmVhbGx5IGNoYW5nZWQuCi0gICAgIiIiCi0KLSAgICBjaGFuZ2VkID0gRmFsc2UKLSAgICBuZXdfY29uZiA9IFtdCi0gICAgIyBzdGFydCB3aXRoIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvZiB0aGUgZmlsZQotICAgIG5ld19jb25mLmFwcGVuZCgiIyBEZWZhdWx0IENvbmZpZ3VyYXRpb24gZm9yIHRoZSBTTk1QIGRhZW1vblxuIikKLSAgICBuZXdfY29uZi5hcHBlbmQoIiMgQWdlbnQgYWRkcmVzc1xuIikKLSAgICBuZXdfY29uZi5hcHBlbmQoImFnZW50QWRkcmVzcyB1ZHA6MTYxLHVkcDY6Wzo6MV06MTYxXG4iKQotICAgIG5ld19jb25mLmFwcGVuZCgiIyBTeXN0ZW0gT2JqZWN0IElEXG4iKQotICAgIG5ld19jb25mLmFwcGVuZCgic3lzT2JqZWN0SUQgJXNcbiIgJSAoQlNOX0VOVEVSUFJJU0VfT0lEX0NPTlRST0xMRVIpKQotICAgIG5ld19jb25mLmFwcGVuZCgiIyBTeXN0ZW0gRGVzY3JpcHRpb25cbiIpCi0gICAgbmV3X2NvbmYuYXBwZW5kKCJzeXNEZXNjciAlc1xuIiUoZ2V0X3N5c3RlbV92ZXJzaW9uX3N0cmluZygpKSkKLQotICAgICNhZGQgY29tbXVuaXR5LCBsb2NhdGlvbiwgY29udGFjdCBpbmZvcm1hdGlvbiB0byB0aGUgZmlsZSBpZiBub3QgdGhlcmUgYWxyZWFkeQotICAgIGlmIGNvbW11bml0eSAhPSAnJzoKLSAgICAgICAgbmV3X2NvbmYuYXBwZW5kKCJyb2NvbW11bml0eSAlc1xuIiAlIGNvbW11bml0eSkKLSAgICBpZiBsb2NhdGlvbiAhPSAnJzogCi0gICAgICAgIG5ld19jb25mLmFwcGVuZCgic3lzTG9jYXRpb24gJXNcbiIgJSBsb2NhdGlvbikKLSAgICBpZiBjb250YWN0ICE9ICcnOiAKLSAgICAgICAgbmV3X2NvbmYuYXBwZW5kKCJzeXNDb250YWN0ICVzXG4iICUgY29udGFjdCkKLQotICAgIGYgPSBvcGVuKCIvZXRjL3NubXAvc25tcGQuY29uZiIsICJyIikKLSAgICBpZiAoJycuam9pbihuZXdfY29uZikgIT0gZi5yZWFkKCkpOgotICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZiA9IG9wZW4oIi9ldGMvc25tcC9zbm1wZC5jb25mIiwgInciKQotICAgICAgICBmLndyaXRlKCcnLmpvaW4obmV3X2NvbmYpKQotICAgICAgICBjaGFuZ2VkID0gVHJ1ZQotCi0gICAgZi5jbG9zZSgpCi0KLSAgICByZXR1cm4gY2hhbmdlZAotCi0jCi0jIE9uZSBvZiB0aGUgZW50cnkgaW4gdGhlIHNubXAgc2VydmVyIGNvbmZpZ3VyYXRpb24gY2hhbmdlZAotIwotY2xhc3MgU2V0U25tcFNlcnZlckNvbmZpZyhPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gInNldHNubXBzZXJ2ZXJjb25maWciKToKLSAgICAgICAgT3NXcmFwcGVyLl9faW5pdF9fKHNlbGYsIG5hbWUsIFtdLCBbXSkKLQotCi0gICAgZGVmIHNldChzZWxmLCBhcmdzX2xpc3QpOgotICAgICAgICAjIGFyZ3NfbGlzdDogW3NlcnZlcl9lbmFibGUsIGNvbW11bml0eSwgbG9jYXRpb24sIGNvbnRhY3QsIGVuYWJsZV9jaGFuZ2VkXQotICAgICAgICBwcmludCAiU25tcFNlcnZlckNvbmZpZyBBcmdzIExpc3Q6ICIsIGFyZ3NfbGlzdAotICAgICAgICBzZXJ2ZXJfZW5hYmxlID0gYXJnc19saXN0WzBdCi0gICAgICAgIGNvbW11bml0eSA9IGFyZ3NfbGlzdFsxXQotICAgICAgICBsb2NhdGlvbiA9IGFyZ3NfbGlzdFsyXQotICAgICAgICBjb250YWN0ID0gYXJnc19saXN0WzNdCi0gICAgICAgIGVuYWJsZV9jaGFuZ2VkID0gYXJnc19saXN0WzRdCi0KLSAgICAgICAgcmV0X3Jlc3VsdCA9IHsnZXJyJzogW10sICdvdXQnOiBbXX0KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIHJld3JpdGUgL2V0Yy9zbm1wL3NubXBkLmNvbmYgZmlsZQotICAgICAgICAgICAgbmVlZF9yZXN0YXJ0ID0gcmV3cml0ZV9ldGNfc25tcGRfY29uZihjb21tdW5pdHksIGxvY2F0aW9uLCBjb250YWN0LCByZXRfcmVzdWx0KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBfZToKLSAgICAgICAgICAgIG5lZWRfcmVzdGFydCA9IEZhbHNlCi0gICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLQotICAgICAgICBpZiBzZXJ2ZXJfZW5hYmxlID09ICdUcnVlJyBhbmQgKG5lZWRfcmVzdGFydCBvciBlbmFibGVfY2hhbmdlZCA9PSAnVHJ1ZScpOgotICAgICAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgICAgICMgc2V0IHNubXBkcnVuPXllcwotICAgICAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9iaW4vc2VkJywKLSAgICAgICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsnLWknLCAncy9TTk1QRFJVTj1uby9TTk1QRFJVTj15ZXMvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL2V0Yy9kZWZhdWx0L3NubXBkJ119LAotICAgICAgICAgICAgICAgICMgcmVzdGFydCBzbm1wZCBzZXJ2aWNlIAotICAgICAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy91c3Ivc2Jpbi9zZXJ2aWNlJywKLSAgICAgICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsnc25tcGQnLCAncmVzdGFydCddfSwKLSAgICAgICAgICAgIF0KLSAgICAgICAgICAgIHJldHVybiBPc1dyYXBwZXIuc2V0X25ldyhzZWxmLCBbXSwgW1tdLCBbXV0pCi0KLSAgICAgICAgZWxpZiBzZXJ2ZXJfZW5hYmxlID09ICdGYWxzZScgYW5kIGVuYWJsZV9jaGFuZ2VkID09ICdUcnVlJzoKLSAgICAgICAgICAgIHNlbGYuY21kc19sc3RfZm9yX3NldCA9IFsKLSAgICAgICAgICAgICAgICAjIHNldCBzbm1wZHJ1bj1ubwotICAgICAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9iaW4vc2VkJywKLSAgICAgICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsnLWknLCAncy9TTk1QRFJVTj15ZXMvU05NUERSVU49bm8vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL2V0Yy9kZWZhdWx0L3NubXBkJ119LAotICAgICAgICAgICAgICAgICMgc3RvcCBzbm1wZCBzZXJ2aWNlIAotICAgICAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy91c3Ivc2Jpbi9zZXJ2aWNlJywKLSAgICAgICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsnc25tcGQnLCAnc3RvcCddfSwKLSAgICAgICAgICAgIF0KLSAgICAgICAgICAgIHJldHVybiBPc1dyYXBwZXIuc2V0X25ldyhzZWxmLCBbXSwgW1tdLCBbXV0pCi0KLSAgICAgICAgcmV0dXJuIHJldF9yZXN1bHQKLQotCi0jCi0jIFRoZSByb3cgZW50cnkgaW4gdGhlIHNubXAgc2VydmVyIGNvbmZpZyB0YWJsZSB3YXMgZGVmYXVsdCBhbmQgZGVsZXRlZAotIwotY2xhc3MgVW5zZXRTbm1wU2VydmVyQ29uZmlnKE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAidW5zZXRzbm1wc2VydmVyY29uZmlnIik6Ci0gICAgICAgIE9zV3JhcHBlci5fX2luaXRfXyhzZWxmLCBuYW1lLCBbXSwgW10pCi0KLSAgICBkZWYgc2V0KHNlbGYsIGFyZ3NfbGlzdCk6Ci0gICAgICAgICMgYXJnc19saXN0OiBbXQotICAgICAgICByZXRfcmVzdWx0ID0geydlcnInOiBbXSwgJ291dCc6IFtdfQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgcmV3cml0ZSAvZXRjL3NubXAvc25tcGQuY29uZiB0byBkZWZhdWx0Ci0gICAgICAgICAgICByZXdyaXRlX2V0Y19zbm1wZF9jb25mKCcnLCAnJywgJycsIHJldF9yZXN1bHQpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIF9lOgotICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0KLSAgICAgICAgIyBub3cgc3RvcCB0aGUgc2VydmVyIGlmIGl0cyB0aGVyZQotICAgICAgICBzZWxmLmNtZHNfbHN0X2Zvcl9zZXQgPSBbCi0gICAgICAgICAgICAjIHNldCBzbm1wZHJ1bj1ubwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9zZWQnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1pJywgJ3MvU05NUERSVU49eWVzL1NOTVBEUlVOPW5vLycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnL2V0Yy9kZWZhdWx0L3NubXBkJ119LAotICAgICAgICAgICAgIyBzdG9wIHNubXBkIHNlcnZpY2UgCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvdXNyL3NiaW4vc2VydmljZScsCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsnc25tcGQnLCAnc3RvcCddfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXSwgW11dKQotCi1jbGFzcyBTZXRJbWFnZXNVc2VyU1NIS2V5KE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAnc2V0aW1hZ2VzdXNlcnNzaGtleScpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotCi0gICAgZGVmIHNldChzZWxmLCBhcmdzX2xpc3QpOgotICAgICAgICBzc2hrZXkgPSBzdHIoYXJnc19saXN0WzBdKSAKLSAgICAgICAgIyBjYXQgdGhlIHNzaCBrZXkgdG8gdGhlIGZpbGUKLSAgICAgICAgIyBzZXQgdGhlIGltYWdlcyB1c2VyIHNoZWxsIHRvIGJlIHNjcG9ubHkKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL3Vzci9zYmluL3VzZXJtb2QnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1zJywgJy91c3IvYmluL3NjcG9ubHknLCAnaW1hZ2VzJ119LAotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9lY2hvJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogW3NzaGtleV0sIAotICAgICAgICAgICAgICdzdGRvdXRmaWxlJyA6ICcvaG9tZS9pbWFnZXMvLnNzaC9hdXRob3JpemVkX2tleXMnfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXSwgW11dKQotCi1jbGFzcyBSZWxvYWRDb250cm9sbGVyKE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAncmVsb2FkY29udHJvbGxlcicpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotCi0gICAgZGVmIHNldChzZWxmLCBhcmdzX2xpc3QpOgotICAgICAgICBzZWxmLmNtZHNfbHN0X2Zvcl9zZXQgPSBbCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvc2Jpbi9yZWJvb3QnLAotICAgICAgICAgICAgICdhcmdzX2xpc3QnIDogW119LAotICAgICAgICBdCi0gICAgICAgIHJldHVybiBPc1dyYXBwZXIuc2V0X25ldyhzZWxmLCBbXSwgW1tdXSkKLQotVVBHUkFERV9JTUFHRV9GSUxFX1BBVEggPSAnL3RtcC91cGdyYWRlLWltYWdlcycKLVVQR1JBREVfSU1BR0VfTUFOSUZFU1QgPSAnL3RtcC91cGdyYWRlLWltYWdlLW1hbmlmZXN0JwotVVBHUkFERV9QQUNLQUdFX0RJUkVDVE9SWSA9ICcvdG1wL3VwZ3JhZGUtcGFja2FnZS8nCi0KLWNsYXNzIEV4dHJhY3RVcGdyYWRlUGtnTWFuaWZlc3QoT3NXcmFwcGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSA9ICdleHRyYWN0dXBncmFkZXBrZycpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotCi0gICAgZGVmIHNldChzZWxmLCBhcmdzX2xpc3QpOgotICAgICAgICBpbWFnZU5hbWUgPSBzdHIoYXJnc19saXN0WzBdKQotICAgICAgICBzZWxmLmNtZHNfbHN0X2Zvcl9zZXQgPSBbCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvYmluL3JtJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogW1VQR1JBREVfSU1BR0VfTUFOSUZFU1RdfSwKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9iaW4vdG91Y2gnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbVVBHUkFERV9JTUFHRV9NQU5JRkVTVF19LAotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL3Vzci9iaW4vdW56aXAnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbJy1wJywgaW1hZ2VOYW1lLCAnTWFuaWZlc3QnXSwKLSAgICAgICAgICAgICAnc3Rkb3V0ZmlsZScgOiBVUEdSQURFX0lNQUdFX01BTklGRVNUfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXSwgW10sIFtdXSwgdXNlU2hlbGw9RmFsc2UsIGFwcGVuZFN0ZE91dD1GYWxzZSkKLQotICAgIGRlZiBnZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3JfZ2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9jYXQnLAotICAgICAgICAgICAgICdhcmdzX2xzdCc6IFtVUEdSQURFX0lNQUdFX01BTklGRVNUXX0sCi0gICAgICAgIF0KLSAgICAgICAgcmV0dXJuIE9zV3JhcHBlci5nZXRfbmV3KHNlbGYsIFtdLCBbW11dKQotCi1jbGFzcyBHZXRMYXRlc3RVcGdyYWRlUGtnKE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAnZ2V0bGF0ZXN0dXBncmFkZXBrZycpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotCi0gICAgIyBUT0RPIC0KLSAgICAjIFRoaXMgaXMgZ2hldHRvLCBpdCBqdXN0IGZpbmRzIHRoZSBsYXN0IHppcAotICAgICMgZmlsZSBpbiB0aGUgZGlyLiBGSVggVEhJUyEKLSAgICBkZWYgZ2V0KHNlbGYsIGFyZ3NfbGlzdCk6Ci0gICAgICAgIGV4ZWNTdHIgPSAnbHMgLXQgL2hvbWUvaW1hZ2VzLyoucGtnIHwgZ3JlcCBwa2cgfCBoZWFkIC0xID4gJyArIFVQR1JBREVfSU1BR0VfRklMRV9QQVRICi0gICAgICAgIHNlbGYuY21kc19sc3RfZm9yX2dldCA9IFsKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogZXhlY1N0ciwgCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFtdfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLmdldF9uZXcoc2VsZiwgW10sIFtbXV0sIHVzZVNoZWxsPVRydWUpCi0KLWNsYXNzIENhdFVwZ3JhZGVJbWFnZXNGaWxlKE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAnY2F0dXBncmFkZWltYWdlc2ZpbGUnKToKLSAgICAgICAgT3NXcmFwcGVyLl9faW5pdF9fKHNlbGYsIG5hbWUsIFtdLCBbXSkKLQotICAgIGRlZiBnZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3JfZ2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9jYXQnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbVVBHUkFERV9JTUFHRV9GSUxFX1BBVEhdfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLmdldF9uZXcoc2VsZiwgW10sIFtbXV0pCi0KLWNsYXNzIEV4ZWN1dGVVcGdyYWRlU3RlcChPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gJ2V4ZWN1dGV1cGdyYWRlc3RlcCcpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotCi0gICAgZGVmIGdldChzZWxmLCBhcmdzX2xpc3QpOgotICAgICAgICByZXRfcmVzdWx0ID0geydlcnInOiBbXSwgJ291dCc6IFtdfQotICAgICAgICAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbWFuaWZlc3QgPSBqc29uLmxvYWRzKGV4ZWNfb3Nfd3JhcHBlcigiRXh0cmFjdFVwZ3JhZGVQa2dNYW5pZmVzdCIsICdnZXQnKVsnb3V0J10pCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcmV0X3Jlc3VsdFsnZXJyJ10uYXBwZW5kKCJDb3JydXB0ZWQgbWFuaWZlc3QhIikKLSAgICAgICAgICAgIHJldHVybiByZXRfcmVzdWx0Ci0KLSAgICAgICAgc3RlcFRvRXhlYyA9IE5vbmUKLSAgICAgICAgZm9yIHN0ZXAgaW4gbWFuaWZlc3Q6Ci0gICAgICAgICAgICBpZiBzdGVwWydzdGVwJ10gPT0gaW50KGFyZ3NfbGlzdFswXSk6Ci0gICAgICAgICAgICAgICAgc3RlcFRvRXhlYyA9IHN0ZXBbJ2FjdGlvbiddCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaWYgc3RlcFRvRXhlYyA9PSBOb25lOgotICAgICAgICAgICAgcmV0X3Jlc3VsdFsnZXJyJ10uYXBwZW5kKCJTdGVwICVzIG5vdCBmb3VuZCBpbiB1cGdyYWRlIHBhY2thZ2UgbWFuaWZlc3QhIiAlCi0gICAgICAgICAgICAgICAgc3RyKGFyZ3NfbGlzdFswXSkpCi0gICAgICAgICAgICByZXR1cm4gcmV0X3Jlc3VsdAotICAgICAgICAKLSAgICAgICAgdXBncmFkZVBrZyA9IGFyZ3NfbGlzdFsxXQotICAgICAgICBzdGVwU2NyaXB0ID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKLSAgICAgICAgc2NyaXB0TmFtZSA9ICJzY3JpcHRzLyVzIiAlIHN0ZXBbJ2FjdGlvbiddLnN0cmlwKCkKLSAgICAgICAgc3RlcCA9IGNoZWNrX291dHB1dChbInVuemlwIiwgIi1wIiwgdXBncmFkZVBrZywgc2NyaXB0TmFtZV0pCi0gICAgICAgIHN0ZXBTY3JpcHQud3JpdGUoc3RlcCkKLSAgICAgICAgc3RlcFNjcmlwdC5mbHVzaCgpCi0gICAgICAgIHN0ZXBTY3JpcHQuY2xvc2UoKQotICAgICAgICBvcy5jaG1vZChzdGVwU2NyaXB0Lm5hbWUsIHN0YXQuU19JWFVTUiB8IHN0YXQuU19JV1VTUiB8IHN0YXQuU19JUlVTUikKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXQgPSBjaGVja19vdXRwdXQoW3N0ZXBTY3JpcHQubmFtZV0gKyBhcmdzX2xpc3RbMTpdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1QSVBFKQotICAgICAgICAgICAgcmV0X3Jlc3VsdFsnb3V0J10uYXBwZW5kKHN0cmlwcGVkKHJldC5zdHJpcCgpKSkKLSAgICAgICAgZXhjZXB0IENhbGxlZFByb2Nlc3NFcnJvciwgZXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0X3Jlc3VsdFsnZXJyJ10uYXBwZW5kKCJFcnJvciBydW5uaW5nICVzXG5yZXR1cm4gY29kZSAlc1xuT3V0cHV0OlxuJXMiICUKLSAgICAgICAgICAgICAgICAgICAgKGV4Y2VwdGlvbi5jbWQsIGV4Y2VwdGlvbi5yZXR1cm5jb2RlLCBzdHJpcHBlZChleGNlcHRpb24ub3V0cHV0KSkpCi0gICAgICAgIHJldHVybiByZXRfcmVzdWx0Ci0KLWNsYXNzIENsZWFudXBPbGRVcGdyYWRlSW1hZ2VzKE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAnY2xlYW51cG9sZHVwZ3JhZGVpbWFnZXMnKToKLSAgICAgICAgT3NXcmFwcGVyLl9faW5pdF9fKHNlbGYsIG5hbWUsIFtdLCBbXSkKLQotICAgIGRlZiBnZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgIyBSZW1vdmVzIGFsbCB0aGUgLnBrZyBmaWxlcyBleGVjcHQgZm9yIHRoZSBuZXdlc3Qgb25lLgotICAgICAgICAjIEl0IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25seSAxIHBhY2thZ2UsIHdlIGRvbid0IGRlbGV0ZSBpdC4KLSAgICAgICAgZXhlY1N0ciA9ICdjPWBscyAvaG9tZS9pbWFnZXMvKi5wa2cgfCB3YyAtbGA7IGlmIFsgIiRjIiAtZ3QgMSBdOyB0aGVuIGxzIC10IC1yIC9ob21lL2ltYWdlcy8qLnBrZyB8IGhlYWQgLW4gLTEgfCB4YXJncyBybTsgZmknCi0gICAgICAgIHNlbGYuY21kc19sc3RfZm9yX2dldCA9IFsKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogZXhlY1N0ciwgCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFtdfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLmdldF9uZXcoc2VsZiwgW10sIFtbXV0sIHVzZVNoZWxsPVRydWUpCi0KLWNsYXNzIERlY29tbWlzc2lvbihPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gImRlY29tbWlzc2lvbiIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9iYXNoJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogWyIlcy9zeXMvYmluL3JlbW92ZS1ub2RlLnNoIiAlIFNETl9ST09ULCBzdHIoYXJnc19saXN0WzBdKV19LAotICAgICAgICBdCi0gICAgICAgIHJldHVybiBPc1dyYXBwZXIuc2V0X25ldyhzZWxmLCBbXSwgW1tdXSkKLQotY2xhc3MgRGVjb21taXNzaW9uTG9jYWwoT3NXcmFwcGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSA9ICJkZWNvbW1pc3Npb25sb2NhbCIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9iYXNoJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogWyIlcy9zeXMvYmluL3JlbW92ZS1ub2RlLWxvY2FsLnNoIiAlIFNETl9ST09ULCBzdHIoYXJnc19saXN0WzBdKV19LAotICAgICAgICBdCi0gICAgICAgIHJldHVybiBPc1dyYXBwZXIuc2V0X25ldyhzZWxmLCBbXSwgW1tdXSkKLQotY2xhc3MgUmVzZXRCc2MoT3NXcmFwcGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSA9ICJyZXNldGJzYyIpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotICAgIGRlZiBzZXQoc2VsZiwgYXJnc19saXN0KToKLSAgICAgICAgc2VsZi5jbWRzX2xzdF9mb3Jfc2V0ID0gWwotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9iYXNoJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogWyIlcy9zeXMvYmluL3Jlc2V0YnNjIiAlIFNETl9ST09ULCAnLS1mb3JjZSddfSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXV0pCi0KLWNsYXNzIFdyaXRlRGF0YVRvRmlsZShPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gJ3dyaXRlZGF0YXRvZmlsZScpOgotICAgICAgICBPc1dyYXBwZXIuX19pbml0X18oc2VsZiwgbmFtZSwgW10sIFtdKQotCi0gICAgZGVmIHNldChzZWxmLCBhcmdzX2xpc3QpOgotICAgICAgICBkYXRhID0gc3RyKGFyZ3NfbGlzdFswXSkKLSAgICAgICAgcGF0aCA9IHN0cihhcmdzX2xpc3RbMV0pCi0gICAgICAgIHNlbGYuY21kc19sc3RfZm9yX3NldCA9IFsKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9iaW4vdG91Y2gnLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbcGF0aF19LAotICAgICAgICAgICAgeydiaW5fbmFtZScgOiAnL2Jpbi9lY2hvJywKLSAgICAgICAgICAgICAnYXJnc19sc3QnIDogW2RhdGFdLCAKLSAgICAgICAgICAgICAnc3Rkb3V0ZmlsZScgOiBwYXRofSwKLSAgICAgICAgXQotICAgICAgICByZXR1cm4gT3NXcmFwcGVyLnNldF9uZXcoc2VsZiwgW10sIFtbXSwgW11dKQotCi1jbGFzcyBEaWZmQ29uZmlnKE9zV3JhcHBlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUgPSAic2NwY29uZmlnIik6Ci0gICAgICAgIE9zV3JhcHBlci5fX2luaXRfXyhzZWxmLCBuYW1lLCBbXSwgW10pCi0gICAgZGVmIHNldChzZWxmLCBhcmdzX2xpc3QpOgotICAgICAgICBzZWxmLmNtZHNfbHN0X2Zvcl9zZXQgPSBbCi0gICAgICAgICAgICB7J2Jpbl9uYW1lJyA6ICcvb3B0L3NkbnBsYXRmb3JtL3N5cy9iaW4vZGlmZl9jb25maWcucHknLAotICAgICAgICAgICAgICdhcmdzX2xzdCcgOiBbc3RyKGFyZ3NfbGlzdFswXSksIHN0cihhcmdzX2xpc3RbMV0pXX0sCi0gICAgICAgIF0KLSAgICAgICAgcmV0dXJuIE9zV3JhcHBlci5zZXRfbmV3KHNlbGYsIFtdLCBbW11dKQotCi1jbGFzcyBSb2xsYmFja0NvbmZpZyhPc1dyYXBwZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lID0gInVwZ3JhZGVjb25maWciKToKLSAgICAgICAgT3NXcmFwcGVyLl9faW5pdF9fKHNlbGYsIG5hbWUsIFtdLCBbXSkKLSAgICBkZWYgc2V0KHNlbGYsIGFyZ3NfbGlzdCk6Ci0gICAgICAgIHNlbGYuY21kc19sc3RfZm9yX3NldCA9IFsKLSAgICAgICAgICAgIHsnYmluX25hbWUnIDogJy9iaW4vYmFzaCcsCi0gICAgICAgICAgICAgJ2FyZ3NfbHN0JyA6IFsiJXMvc3lzL2Jpbi9yb2xsYmFjay1jb25maWcuc2giICUgU0ROX1JPT1QsIHN0cihhcmdzX2xpc3RbMF0pXX0sCi0gICAgICAgIF0KLSAgICAgICAgcmV0dXJuIE9zV3JhcHBlci5zZXRfbmV3KHNlbGYsIFtdLCBbW11dKQotCi1kZWYgc3RyaXBwZWQoeCk6Ci0gICAgIyByZW1vdmUgYXNjaWkgZXNjYXBlCi0gICAgcmV0dXJuICIiLmpvaW4oW2kgZm9yIGkgaW4geCBpZiBvcmQoaSkgIT0gMjddKQotIwotIyBleGVjX29zX3dyYXBwZXIKLSMKLWRlZiBleGVjX29zX3dyYXBwZXIob2JqX3R5cGUsIG9wZXIsIGFyZ3NfbGlzdCA9IE5vbmUpOgotICAgICIiIgotICAgIEV4ZWN1dGUgdGhlIG9zd3JhcHBlci5weSB1c2luZyBzdWRvKCksIHJhaXNpbmcgYW4gZXhjZXB0aW9uCi0gICAgZm9yIGFueSBzdGRlcnIgb3V0cHV0IGZyb20gdGhlIGV4ZWN1dGVkIHNjcmlwdAotICAgICIiIgotICAgICMgU2FmZXR5IGNoZWNrOyBvbmx5IHJ1biBpZiB0aGlzIGZpbGUgZXhpc3RzCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCIlcy9jb24iICUgU0ROX1JPT1QpOgotICAgICAgICBwcmludCAiZXhlY19vc193cmFwcGVyOiBub3QgYW4gaW5zdGFsbGVkIGNvbnRyb2xsZXIgZW52aXJvbm1lbnQiCi0gICAgICAgIHJldHVybiB7J291dCcgOiAnJywgJ2VycicgOiAnJ30KLSAgICBpZiBvcy5wYXRoLmV4aXN0cygnL2V0Yy9ub3QtY29udHJvbGxlcicpOgotICAgICAgICAjIFhYWCBzaG91bGQgaXNzdWUgc29tZSBhbGVydCBoZXJlCi0gICAgICAgIHByaW50ICJleGVjX29zX3dyYXBwZXI6IC9ldGMvbm90LWNvbnRyb2xsZXIgZXhpc3RzIgotICAgICAgICByZXR1cm4geydvdXQnIDogJycsICdlcnInIDogJyd9Ci0KLSAgICBvc3dyYXBwZXIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pICsgIi9vc3dyYXBwZXIucHkiCi0gICAgZnVsbF9jbWRfc3RyaW5nID0gWyIvdXNyL2Jpbi9zdWRvIiwgb3N3cmFwcGVyLCBvYmpfdHlwZSwgb3Blcl0KLSAgICBpZiBhcmdzX2xpc3Q6Ci0gICAgICAgIGZ1bGxfY21kX3N0cmluZyArPSBbc3RyKGFyZykgZm9yIGFyZyBpbiBhcmdzX2xpc3RdCi0KLSAgICBzdWJfcHJvY19vdXRwdXQgPSBQb3BlbihmdWxsX2NtZF9zdHJpbmcsIHNoZWxsPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPVBJUEUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwgY2xvc2VfZmRzPVRydWUpCi0KLSAgICBzdWJfcHJvY19vdXRwdXQud2FpdCgpCi0gICAgc3RkZXJyID0gc3ViX3Byb2Nfb3V0cHV0LnN0ZGVyci5yZWFkKCkKLSAgICBzdGRvdXQgPSBzdWJfcHJvY19vdXRwdXQuc3Rkb3V0LnJlYWQoKQotICAgIHJldHVybmNvZGUgPSBzdWJfcHJvY19vdXRwdXQucmV0dXJuY29kZQotCi0gICAgaWYgcmV0dXJuY29kZToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJvc3dyYXBwZXI6ICVzICVzOiBleGl0IGNvZGUgJWQ6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAob2JqX3R5cGUsIG9wZXIsIHJldHVybmNvZGUsIHN0ZGVycikpCi0gICAgCi0gICAgaWYgbGVuKHN0ZGVycikgIT0gMCBhbmQgbm90IHN0ZGVyci5pc3NwYWNlKCk6Ci0gICAgICAgIHByaW50ICIgIi5qb2luKGZ1bGxfY21kX3N0cmluZyksIHN0ZGVycgotCi0gICAgIyA/IT8KLSAgICByZXR1cm4geydvdXQnIDogc3Rkb3V0LCAnZXJyJyA6IHN0ZGVycn0KLQotCi1kZWYgbWFpbihhcmd2KToKLSAgICBvYmpfdHlwZV9tYXAgPSB7J0V4ZWN1dGVVZndDb21tYW5kJyAgICAgICA6IFVmd0NvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgICdTZXROdHBTZXJ2ZXInICAgICAgICAgICAgOiBTZXROdHBTZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICdTZXRUaW1lem9uZScgICAgICAgICAgICAgOiBTZXRUaW1lem9uZSwKLSAgICAgICAgICAgICAgICAgICAgJ1Vuc2V0VGltZXpvbmUnICAgICAgICAgICA6IFVuc2V0VGltZXpvbmUsCi0gICAgICAgICAgICAgICAgICAgICdOZXR3b3JrQ29uZmlnJyAgICAgICAgICAgOiBOZXR3b3JrQ29uZmlnLAotICAgICAgICAgICAgICAgICAgICAnU2V0U3lzbG9nU2VydmVyJyAgICAgICAgIDogU2V0U3lzbG9nU2VydmVyLAotICAgICAgICAgICAgICAgICAgICAnVW5zZXRTeXNsb2dTZXJ2ZXInICAgICAgIDogVW5zZXRTeXNsb2dTZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICdEYXRlVGltZScgICAgICAgICAgICAgICAgOiBEYXRlVGltZSwKLSAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJJZCcgICAgICAgICAgICA6IFNldENvbnRyb2xsZXJJZCwKLSAgICAgICAgICAgICAgICAgICAgJ0hBRmFpbGJhY2snICAgICAgICAgICAgICA6IEhBRmFpbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICdTZXRIb3N0bmFtZScgICAgICAgICAgICAgOiBTZXRIb3N0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgJ1NldFZycnBWaXJ0dWFsUm91dGVySWQnICA6IFNldFZycnBWaXJ0dWFsUm91dGVySWQsCi0gICAgICAgICAgICAgICAgICAgICdTZXRTdGF0aWNGbG93T25seUNvbmZpZycgOiBTZXRTdGF0aWNGbG93T25seUNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgJ1NldERlZmF1bHRDb25maWcnICAgICAgICA6IFNldERlZmF1bHRDb25maWcsCi0gICAgICAgICAgICAgICAgICAgICdUYWNhY3NQbHVzQ29uZmlnJyAgICAgICAgOiBUYWNhY3NQbHVzQ29uZmlnLAotICAgICAgICAgICAgICAgICAgICAnU2V0U25tcFNlcnZlckNvbmZpZycgICAgIDogU2V0U25tcFNlcnZlckNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgJ1Vuc2V0U25tcFNlcnZlckNvbmZpZycgICA6IFVuc2V0U25tcFNlcnZlckNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgJ1NldEltYWdlc1VzZXJTU0hLZXknICAgICA6IFNldEltYWdlc1VzZXJTU0hLZXksCi0gICAgICAgICAgICAgICAgICAgICdSZWxvYWRDb250cm9sbGVyJyAgICAgICAgOiBSZWxvYWRDb250cm9sbGVyLAotICAgICAgICAgICAgICAgICAgICAnRXh0cmFjdFVwZ3JhZGVQa2dNYW5pZmVzdCcgOiBFeHRyYWN0VXBncmFkZVBrZ01hbmlmZXN0LAotICAgICAgICAgICAgICAgICAgICAnR2V0TGF0ZXN0VXBncmFkZVBrZycgICAgIDogR2V0TGF0ZXN0VXBncmFkZVBrZywKLSAgICAgICAgICAgICAgICAgICAgJ0NhdFVwZ3JhZGVJbWFnZXNGaWxlJyAgICA6IENhdFVwZ3JhZGVJbWFnZXNGaWxlLAotICAgICAgICAgICAgICAgICAgICAnRXhlY3V0ZVVwZ3JhZGVTdGVwJyAgICAgIDogRXhlY3V0ZVVwZ3JhZGVTdGVwLAotICAgICAgICAgICAgICAgICAgICAnRGlyZWN0TmV0d29ya0NvbmZpZycgICAgIDogRGlyZWN0TmV0d29ya0NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgJ0NsZWFudXBPbGRVcGdyYWRlSW1hZ2VzJyA6IENsZWFudXBPbGRVcGdyYWRlSW1hZ2VzLAotICAgICAgICAgICAgICAgICAgICAnUmVzdGFydFNETlBsYXRmb3JtJyAgICAgICA6IFJlc3RhcnRTRE5QbGF0Zm9ybSwKLSAgICAgICAgICAgICAgICAgICAgJ0Fib3J0VXBncmFkZScgICAgICAgICAgICA6IEFib3J0VXBncmFkZSwKLSAgICAgICAgICAgICAgICAgICAgJ0RlY29tbWlzc2lvbicgICAgICAgICAgICA6IERlY29tbWlzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgJ0RlY29tbWlzc2lvbkxvY2FsJyAgICAgICA6IERlY29tbWlzc2lvbkxvY2FsLAotICAgICAgICAgICAgICAgICAgICAnUm9sbGJhY2tDb25maWcnICAgICAgICAgIDogUm9sbGJhY2tDb25maWcsIAotICAgICAgICAgICAgICAgICAgICAnRGlmZkNvbmZpZycgICAgICAgICAgICAgIDogRGlmZkNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgJ1Jlc2V0QnNjJyAgICAgICAgICAgICAgICA6IFJlc2V0QnNjLAotICAgICAgICAgICAgICAgICAgICAnV3JpdGVEYXRhVG9GaWxlJyAgICAgICAgIDogV3JpdGVEYXRhVG9GaWxlLAotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgcmV0X3Jlc3VsdCA9IHsnZXJyJzogWyJpbnN1ZmZpY2llbnQgb3IgaW52YWxpZCBhcmdzIl0sICdvdXQnOiBbXX0KLSAgICBpZiBsZW4oYXJndikgPj0gMzoKLSAgICAgICAgaWYgYXJndlsxXSBpbiBvYmpfdHlwZV9tYXA6Ci0gICAgICAgICAgICBvYmpfdHlwZSA9IG9ial90eXBlX21hcFthcmd2WzFdXQotICAgICAgICAgICAgeCA9IG9ial90eXBlKCkKLSAgICAgICAgICAgIGlmIGFyZ3ZbMl0gPT0gJ3NldCc6Ci0gICAgICAgICAgICAgICAgcmV0X3Jlc3VsdCA9IHguc2V0KGFyZ3ZbMzpdKQotICAgICAgICAgICAgZWxpZiBhcmd2WzJdID09ICdnZXQnOgotICAgICAgICAgICAgICAgIHJldF9yZXN1bHQgPSB4LmdldChhcmd2WzM6XSkKLSAgICAKLSAgICAjIFRoZSByZXRfcmVzdWx0IGVudHJpZXMgYXJlIGxpc3RzIG9mIHN0cmluZ3MgZnJvbSB0aGUgb3V0cHV0J3Mgb2YKLSAgICAjIHZhcmlvdXMgY29tbWFuZHMuCi0gICAgcHJpbnQgPj5zeXMuc3Rkb3V0LCAnJy5qb2luKHJldF9yZXN1bHRbJ291dCddKQotICAgIHByaW50ID4+c3lzLnN0ZGVyciwgJycuam9pbihyZXRfcmVzdWx0WydlcnInXSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBtYWluKHN5cy5hcmd2KQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jb250cm9sbGVyL3Rlc3RzLnB5IGIvY2xpL3NkbmNvbi9jb250cm9sbGVyL3Rlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YWIyNzgzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY29udHJvbGxlci90ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NvbnRyb2xsZXIvdmlld3MucHkgYi9jbGkvc2RuY29uL2NvbnRyb2xsZXIvdmlld3MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDlhYjI3ODMuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jb250cm9sbGVyL3ZpZXdzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY29yZXVpL19faW5pdF9fLnB5IGIvY2xpL3NkbmNvbi9jb3JldWkvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDlhYjI3ODMuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jb3JldWkvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jb3JldWkvZHVtbXlfa2V5ZmlsZSBiL2NsaS9zZG5jb24vY29yZXVpL2R1bW15X2tleWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDQ2MTczZGYuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jb3JldWkvZHVtbXlfa2V5ZmlsZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTY3Njg1YmZhODc2MmJhZWIyNzY3MmQ2ODU5ZTljZWE3MWIzMTljY2IzN2MwZDc3ZmJkOGI4NDQ4ZWQzM2M5NjUwYWI1YzIxNDFmM2I3Y2FkMjVhM2Y3MzgzMDVhNjcxMDNhOTZhOWFmN2U4NTVmYTAyZDFjMDYzNjBlMmNmYTM2CmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NvcmV1aS9pbWcvYnNubG9nby1sLnBuZyBiL2NsaS9zZG5jb24vY29yZXVpL2ltZy9ic25sb2dvLWwucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxYTY2MTUzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY29yZXVpL2ltZy9ic25sb2dvLWwucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jb3JldWkvaW1nL2JzbmxvZ28tcy5wbmcgYi9jbGkvc2RuY29uL2NvcmV1aS9pbWcvYnNubG9nby1zLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYWZjZTQ5Ny4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NvcmV1aS9pbWcvYnNubG9nby1zLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY29yZXVpL2ltZy9ic25sb2dvLnBuZyBiL2NsaS9zZG5jb24vY29yZXVpL2ltZy9ic25sb2dvLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzBiOThiNS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NvcmV1aS9pbWcvYnNubG9nby5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NvcmV1aS9pbWcvZm9vdGVyLnBuZyBiL2NsaS9zZG5jb24vY29yZXVpL2ltZy9mb290ZXIucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1MGQwNDQwLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY29yZXVpL2ltZy9mb290ZXIucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jb3JldWkvaW1nL2dyYWRpZW50LnBuZyBiL2NsaS9zZG5jb24vY29yZXVpL2ltZy9ncmFkaWVudC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIwOTZjZWYuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jb3JldWkvaW1nL2dyYWRpZW50LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY29yZXVpL2ltZy9oYW5kYW5kc3RpY2tlcjIuanBnIGIvY2xpL3NkbmNvbi9jb3JldWkvaW1nL2hhbmRhbmRzdGlja2VyMi5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDVlMTg0ODUuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jb3JldWkvaW1nL2hhbmRhbmRzdGlja2VyMi5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NvcmV1aS9pbWcvbG9hZGluZy1jaXJjbGUuZ2lmIGIvY2xpL3NkbmNvbi9jb3JldWkvaW1nL2xvYWRpbmctY2lyY2xlLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDExYjExNS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NvcmV1aS9pbWcvbG9hZGluZy1jaXJjbGUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jb3JldWkvbW9kZWxzLnB5IGIvY2xpL3NkbmNvbi9jb3JldWkvbW9kZWxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YWIyNzgzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vY29yZXVpL21vZGVscy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NvcmV1aS90ZW1wbGF0ZXRhZ3MvX19pbml0X18ucHkgYi9jbGkvc2RuY29uL2NvcmV1aS90ZW1wbGF0ZXRhZ3MvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDlhYjI3ODMuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jb3JldWkvdGVtcGxhdGV0YWdzL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY29yZXVpL3RlbXBsYXRldGFncy9ncmF2YXRhci5weSBiL2NsaS9zZG5jb24vY29yZXVpL3RlbXBsYXRldGFncy9ncmF2YXRhci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTM5ZmEyZC4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NvcmV1aS90ZW1wbGF0ZXRhZ3MvZ3JhdmF0YXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotZnJvbSBkamFuZ28gaW1wb3J0IHRlbXBsYXRlCi1yZWdpc3RlciA9IHRlbXBsYXRlLkxpYnJhcnkoKQotCi1mcm9tIGhhc2hsaWIgaW1wb3J0IG1kNQotZnJvbSBzZG5jb24uY2x1c3RlckFkbWluLnV0aWxzIGltcG9ydCBpc0Nsb3VkQnVpbGQKLQotQHJlZ2lzdGVyLmZpbHRlcgotZGVmIGdyYXZhdGFyKGVtYWlsKToKLSAgICB0cnk6Ci0gICAgICAgIHNlY3VyZSA9IGlzQ2xvdWRCdWlsZCgpCi0gICAgICAgIG9wdGlvbnM9Jz9kPW1tJnM9NDgnCi0gICAgICAgIHVybCA9ICdodHRwOi8vd3d3LmdyYXZhdGFyLmNvbS9hdmF0YXIvJXMuanBnJXMnCi0gICAgICAgIGlmIHNlY3VyZToKLSAgICAgICAgICAgIHVybCA9ICdodHRwczovL3NlY3VyZS5ncmF2YXRhci5jb20vYXZhdGFyLyVzLmpwZyVzJwotICAgICAgICByZXR1cm4gIHVybCAlIChtZDUoZW1haWwubG93ZXIoKS5zdHJpcCgpKS5oZXhkaWdlc3QoKSwgb3B0aW9ucykKLSAgICBleGNlcHQ6Ci0gICAgICAgICMgRmlsdGVycyBtdXN0IGZhaWwgc2lsZW50bHkKLSAgICAgICAgcmV0dXJuICcjJwpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9jb3JldWkvdGVzdHMucHkgYi9jbGkvc2RuY29uL2NvcmV1aS90ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzkzZTYxMC4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NvcmV1aS90ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0iIiIKLVRoaXMgZmlsZSBkZW1vbnN0cmF0ZXMgdHdvIGRpZmZlcmVudCBzdHlsZXMgb2YgdGVzdHMgKG9uZSBkb2N0ZXN0IGFuZCBvbmUKLXVuaXR0ZXN0KS4gVGhlc2Ugd2lsbCBib3RoIHBhc3Mgd2hlbiB5b3UgcnVuICJtYW5hZ2UucHkgdGVzdCIuCi0KLVJlcGxhY2UgdGhlc2Ugd2l0aCBtb3JlIGFwcHJvcHJpYXRlIHRlc3RzIGZvciB5b3VyIGFwcGxpY2F0aW9uLgotIiIiCi0KLWZyb20gZGphbmdvLnRlc3QgaW1wb3J0IFRlc3RDYXNlCi0KLWNsYXNzIFNpbXBsZVRlc3QoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2Jhc2ljX2FkZGl0aW9uKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdHMgdGhhdCAxICsgMSBhbHdheXMgZXF1YWxzIDIuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmZhaWxVbmxlc3NFcXVhbCgxICsgMSwgMikKLQotX190ZXN0X18gPSB7ImRvY3Rlc3QiOiAiIiIKLUFub3RoZXIgd2F5IHRvIHRlc3QgdGhhdCAxICsgMSBpcyBlcXVhbCB0byAyLgotCi0+Pj4gMSArIDEgPT0gMgotVHJ1ZQotIiIifQotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2NvcmV1aS91cmxzLnB5IGIvY2xpL3NkbmNvbi9jb3JldWkvdXJscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDIzMjIxYS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL2NvcmV1aS91cmxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gZGphbmdvLmNvbmYudXJscy5kZWZhdWx0cyBpbXBvcnQgKgotaW1wb3J0IG9zCi0KLSMgTm90ZTogTG9va2luZyBmb3IgdGhlIHZpZXdzIGZvciB0b3AgbGV2ZWwgdGFicz8gVGhleWEgcmUgYWRkZWQgYXV0b21hZ2ljYWxseSBpbiB0aGUgZ2xvYmFsIHVybHMucHkKLQotdXJscGF0dGVybnM9IHBhdHRlcm5zKCcnLAotICAgICMgU2VydmUgc3RhdGljIGZpbGVzIChmb3IgZGV2ZWxvcG1lbnQgb25seSAtIHRoaXMgc2hvdWxkIGJlIGEgcmVhbCB3ZWJzZXJ2ZXIgZm9yIHByb2R1Y3Rpb24uKQotICAgIChyJ15zdGF0aWMvKD9QPHBhdGg+LiopJCcsICdkamFuZ28udmlld3Muc3RhdGljLnNlcnZlJywgXAotICAgICAgICB7J2RvY3VtZW50X3Jvb3QnOiBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwnc3RhdGljJyl9KSwKLSAgICAocideaW1nLyg/UDxwYXRoPi4qKSQnLCAnZGphbmdvLnZpZXdzLnN0YXRpYy5zZXJ2ZScsIFwKLSAgICAgICAgeydkb2N1bWVudF9yb290Jzogb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksJ2ltZycpfSksCi0pCi0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vY29yZXVpL3ZpZXdzLnB5IGIvY2xpL3NkbmNvbi9jb3JldWkvdmlld3MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGI3ZmJkZDkuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9jb3JldWkvdmlld3MucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgIFZpZXdzIGZvciB0aGUgY29yZSBjb250cm9sbGVyIFVJCi0jCi0KLWZyb20gZGphbmdvLnNob3J0Y3V0cyBpbXBvcnQgcmVuZGVyX3RvX3Jlc3BvbnNlCi1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgc2ltcGxlanNvbgotZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlCi1mcm9tIGRqYW5nby5jb250cmliLmF1dGguZGVjb3JhdG9ycyBpbXBvcnQgbG9naW5fcmVxdWlyZWQKLWZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5tb2RlbHMgaW1wb3J0IFVzZXIKLWZyb20gZGphbmdvLnRlbXBsYXRlIGltcG9ydCBSZXF1ZXN0Q29udGV4dAotZnJvbSBzZG5jb24uYXBwbG9hZGVyIGltcG9ydCBBcHBMb2FkZXIsIEFwcExpc3RlcgotZnJvbSBzZG5jb24uY2x1c3RlckFkbWluLnV0aWxzIGltcG9ydCBjb25kaXRpb25hbGx5LCBpc0Nsb3VkQnVpbGQKLWZyb20gc2RuY29uLmNsdXN0ZXJBZG1pbi5tb2RlbHMgaW1wb3J0IEN1c3RvbWVyLCBDbHVzdGVyLCBDdXN0b21lclVzZXIKLWltcG9ydCBvcwotCi1KU09OX0NPTlRFTlRfVFlQRSA9ICdhcHBsaWNhdGlvbi9qc29uJwotCi0jIC0tLSBWaWV3IGZvciB0aGUgcm9vdCBwYWdlIG9mIGFueSBhcHBsaWNhdGlvbgotQGNvbmRpdGlvbmFsbHkobG9naW5fcmVxdWlyZWQsIGlzQ2xvdWRCdWlsZCgpKQotZGVmIHNob3dfYXBwbGljYXRpb25fdGFicyhyZXF1ZXN0LCBhcHApOgotICAgIGNsdXN0ZXJsaXN0ID0gW10KLSAgICBjdXMgPSBDdXN0b21lclVzZXIub2JqZWN0cy5hbGwoKQotICAgIGZvciBjdSBpbiBjdXM6Ci0gICAgICAgIGlmIGN1LnVzZXIudXNlcm5hbWUgPT0gcmVxdWVzdC51c2VyLnVzZXJuYW1lOgotICAgICAgICAgICAgZm9yIGNsdXN0ZXIgaW4gY3UuY3VzdG9tZXIuY2x1c3Rlcl9zZXQuYWxsKCk6Ci0gICAgICAgICAgICAgICAgY2x1c3Rlcmxpc3QuYXBwZW5kKHsnY3VzdG9tZXInOiBjbHVzdGVyLmN1c3RvbWVyLmN1c3RvbWVybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbHVzdGVybmFtZSc6IGNsdXN0ZXIuY2x1c3Rlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2x1c3RlcmlkJzogdW5pY29kZShjbHVzdGVyKX0pCi0KLSAgICByZXR1cm4gcmVuZGVyX3RvX3Jlc3BvbnNlKCdjb3JldWkvdGVtcGxhdGVzL3Nob3dhcHAuaHRtbCcsIAotICAgICAgICAgICAgICAgIHsnYXBwcyc6W3ggZm9yIHggaW4gQXBwTG9hZGVyLmdldEFwcHMoKSBpZiBub3QgaGFzYXR0cih4LCdpbnZpc2libGUnKV0sJ2N1cnJlbnRhcHAnOmFwcCwndGFicyc6QXBwTG9hZGVyLmdldEFwcChhcHApLnRhYnMsJ2NsdXN0ZXJsaXN0JzpjbHVzdGVybGlzdCwgJ2lzQ2xvdWRCdWlsZCc6IGlzQ2xvdWRCdWlsZCgpfSwKLSAgICAgICAgICAgICAgICBjb250ZXh0X2luc3RhbmNlPVJlcXVlc3RDb250ZXh0KHJlcXVlc3QpKQotCi0jIC0tLSBHZW5lcmljIFZpZXdzCi1kZWYgZW1iZWRkZWRfZGF0YXRhYmxlKHJlcXVlc3QsIG1vZGVsLCBvcHRpb25zPU5vbmUsIHNraXBfY29sdW1ucz1bXSk6IAotCi0gICAgbW9kZWxfbmFtZSA9IG1vZGVsLl9fbmFtZV9fCi0gICAgdGl0bGUgPSBtb2RlbF9uYW1lICsgIiBUYWJsZSIKLSAgICB0YWJsZW5hbWUgPSBtb2RlbF9uYW1lKyItZW1iZWQiCi0gICAgdGFibGVfZGF0YSA9IFN3aXRjaC5vYmplY3RzLmFsbCgpCi0KLSAgICAjIEZpbmQgaGVhZGVycwotICAgIHRhYmxlX2hlYWRlcnMgPSBbXQotICAgIGZvciBmaWVsZCBpbiBtb2RlbC5fbWV0YS5sb2NhbF9maWVsZHM6Ci0gICAgICAgIHRhYmxlX2hlYWRlcnMuYXBwZW5kKGZpZWxkLm5hbWUpCi0gICAgcHJpbnQgdGFibGVfaGVhZGVycwotCi0gICAgIyBTa2lwIHVud2FudGVkIGNvbHVtbnMKLSAgICBmb3IgYyBpbiBza2lwX2NvbHVtbnM6Ci0gICAgICAgIGlmIGMgaW4gdGFibGVfaGVhZGVyczoKLSAgICAgICAgICAgIHRhYmxlX2hlYWRlcnMucmVtb3ZlKGMpCi0KLSAgICAjIFBvcHVsYXRlIGRhdGEKLSAgICB0YWJsZV9kYXRhID0gW10KLSAgICBmb3IgaW5zdGFuY2UgaW4gbW9kZWwub2JqZWN0cy5hbGwoKToKLSAgICAgICAgdGFibGVfcm93ID0gW10KLSAgICAgICAgZm9yIGZpZWxkIGluIHRhYmxlX2hlYWRlcnM6Ci0gICAgICAgICAgICB2YWx1ZSA9IGluc3RhbmNlLl9fZGljdF9fLmdldChmaWVsZCkKLSAgICAgICAgICAgIHRhYmxlX3Jvdy5hcHBlbmQodmFsdWUpCi0gICAgICAgIHRhYmxlX2RhdGEuYXBwZW5kKHRhYmxlX3JvdykKLQotICAgICMgQmVhdXRpZnkgSGVhZGVycwotICAgICMjVE9ETyBBTEVYIHF1ZXJ5IG1vZGVsIGluZm8gZGlyZWN0bHksIGRvbid0IHVzZSBtb2RlbCBpbmZvIGxpc3QgdGhlbiByZW1vdmUgaW1wb3J0IGFuZCBkZWxldGUgZmlsZQotICAgICNwcmludCBtb2RlbF9uYW1lCi0gICAgI2lmIG1vZGVsX25hbWUubG93ZXIoKSBpbiBtb2RlbF9pbmZvX2xpc3QubW9kZWxfaW5mb19kaWN0OgotICAgICMgICAgcHJpbnQgInllcyIKLSAgICAjICAgIHRhYmxlX2hlYWRlcnNfYyA9IFtdCi0gICAgIyAgICBmaWVsZF9kaWN0ID0gbW9kZWxfaW5mb19saXN0Lm1vZGVsX2luZm9fZGljdFttb2RlbF9uYW1lLmxvd2VyKCldWyJmaWVsZHMiXQotICAgICMgICAgZm9yIGggaW4gdGFibGVfaGVhZGVyczoKLSAgICAjICAgICAgICBoID0gaC5yZXBsYWNlKCJfIiwiLSIpCi0gICAgIyAgICAgICAgcHJpbnQgaCwgZmllbGRfZGljdAotICAgICMgICAgICAgIGlmIGggaW4gZmllbGRfZGljdDoKLSAgICAjICAgICAgICAgICAgdGFibGVfaGVhZGVyc19jLmFwcGVuZChmaWVsZF9kaWN0W2hdWyd2ZXJib3NlX25hbWUnXSkKLSAgICAjICAgICAgICBlbHNlOgotICAgICMgICAgICAgICAgICB0YWJsZV9oZWFkZXJzX2MuYXBwZW5kKGgpCi0gICAgIyAgICB0YWJsZV9oZWFkZXJzID0gdGFibGVfaGVhZGVyc19jCi0KLSAgICByZXR1cm4gcmVuZGVyX3RvX3Jlc3BvbnNlKCdjb3JldWkvdGVtcGxhdGVzL2RhdGF0YWJsZS1lbWJlZC5odG1sJywgewotICAgICAgICAndGFibGV0aXRsZSc6IHRpdGxlLAotICAgICAgICAndGFibGVuYW1lJyA6IHRhYmxlbmFtZSwKLSAgICAgICAgJ3RhYmxlaGVhZGVycycgOiB0YWJsZV9oZWFkZXJzLCAKLSAgICAgICAgJ3RhYmxlZGF0YScgOiB0YWJsZV9kYXRhLAotICAgICAgICAnZGF0YVRhYmxlT3B0aW9ucyc6IG9wdGlvbnMKLSAgICB9KQotCi1kZWYgZW1iZWRkZWRfZGF0YXRhYmxlX2Zyb21fbW9kZWwocmVxdWVzdCwgbW9kZWwsIG9wdGlvbnM9Tm9uZSwgc2tpcF9jb2x1bW5zPVtdKTogCi0gICAgCi0gICAgbW9kZWxfbmFtZSA9IG1vZGVsLl9fbmFtZV9fCi0gICAgdGl0bGUgPSBtb2RlbF9uYW1lICsgIiBUYWJsZSIKLSAgICB0YWJsZW5hbWUgPSBtb2RlbF9uYW1lKyItZW1iZWQiCi0gICAgdGFibGVfZGF0YSA9IFN3aXRjaC5vYmplY3RzLmFsbCgpCi0gICAgCi0gICAgIyBGaW5kIGhlYWRlcnMKLSAgICB0YWJsZV9oZWFkZXJzID0gW10KLSAgICBmb3IgZmllbGQgaW4gbW9kZWwuX21ldGEubG9jYWxfZmllbGRzOgotICAgICAgICB0YWJsZV9oZWFkZXJzLmFwcGVuZChmaWVsZC5uYW1lKQotICAgIHByaW50IHRhYmxlX2hlYWRlcnMKLSAgICAKLSAgICAjIFNraXAgdW53YW50ZWQgY29sdW1ucwotICAgIGZvciBjIGluIHNraXBfY29sdW1uczoKLSAgICAgICAgaWYgYyBpbiB0YWJsZV9oZWFkZXJzOgotICAgICAgICAgICAgdGFibGVfaGVhZGVycy5yZW1vdmUoYykKLQotICAgICMgUG9wdWxhdGUgZGF0YQotICAgIHRhYmxlX2RhdGEgPSBbXQotICAgIGZvciBpbnN0YW5jZSBpbiBtb2RlbC5vYmplY3RzLmFsbCgpOgotICAgICAgICB0YWJsZV9yb3cgPSBbXQotICAgICAgICBmb3IgZmllbGQgaW4gdGFibGVfaGVhZGVyczoKLSAgICAgICAgICAgIHZhbHVlID0gaW5zdGFuY2UuX19kaWN0X18uZ2V0KGZpZWxkKQotICAgICAgICAgICAgdGFibGVfcm93LmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgdGFibGVfZGF0YS5hcHBlbmQodGFibGVfcm93KQotCi0gICAgIyBCZWF1dGlmeSBIZWFkZXJzCi0gICAgcHJpbnQgbW9kZWxfbmFtZQotICAgIGlmIG1vZGVsX25hbWUubG93ZXIoKSBpbiBtb2RlbF9pbmZvX2xpc3QubW9kZWxfaW5mb19kaWN0OgotICAgICAgICBwcmludCAieWVzIgotICAgICAgICB0YWJsZV9oZWFkZXJzX2MgPSBbXQotICAgICAgICBmaWVsZF9kaWN0ID0gbW9kZWxfaW5mb19saXN0Lm1vZGVsX2luZm9fZGljdFttb2RlbF9uYW1lLmxvd2VyKCldWyJmaWVsZHMiXQotICAgICAgICBmb3IgaCBpbiB0YWJsZV9oZWFkZXJzOgotICAgICAgICAgICAgaCA9IGgucmVwbGFjZSgiXyIsIi0iKQotICAgICAgICAgICAgcHJpbnQgaCwgZmllbGRfZGljdAotICAgICAgICAgICAgaWYgaCBpbiBmaWVsZF9kaWN0OgotICAgICAgICAgICAgICAgIGlmICd2ZXJib3NlX25hbWUnIGluIGZpZWxkX2RpY3RbaF06Ci0gICAgICAgICAgICAgICAgICAgIHRhYmxlX2hlYWRlcnNfYy5hcHBlbmQoZmllbGRfZGljdFtoXVsndmVyYm9zZV9uYW1lJ10pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGFibGVfaGVhZGVyc19jLmFwcGVuZChoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0YWJsZV9oZWFkZXJzX2MuYXBwZW5kKGgpCi0gICAgICAgIHRhYmxlX2hlYWRlcnMgPSB0YWJsZV9oZWFkZXJzX2MKLSAgICAKLSAgICByZXR1cm4gcmVuZGVyX3RvX3Jlc3BvbnNlKCdjb3JldWkvdGVtcGxhdGVzL2RhdGF0YWJsZS1lbWJlZC5odG1sJywgewotICAgICAgICAndGFibGV0aXRsZSc6IHRpdGxlLAotICAgICAgICAndGFibGVuYW1lJyA6IHRhYmxlbmFtZSwKLSAgICAgICAgJ3RhYmxlaGVhZGVycycgOiB0YWJsZV9oZWFkZXJzLCAKLSAgICAgICAgJ3RhYmxlZGF0YScgOiB0YWJsZV9kYXRhLAotICAgICAgICAnZGF0YVRhYmxlT3B0aW9ucyc6IG9wdGlvbnMKLSAgICB9KQotICAgCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL2V4dHJhY3RfbW9kZWwucHkgYi9jbGkvc2RuY29uL2V4dHJhY3RfbW9kZWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDY4MzgzNTIuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9leHRyYWN0X21vZGVsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jaW1wb3J0IHRpbWUKLQotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgZGphbmdvLmNvcmUubWFuYWdlbWVudAotCi10cnk6Ci0gICAgaW1wb3J0IHNldHRpbmdzICMgQXNzdW1lZCB0byBiZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgaW1wb3J0IHN5cwotICAgIHN5cy5zdGRlcnIud3JpdGUoIkVycm9yOiBDYW4ndCBmaW5kIHRoZSBmaWxlICdzZXR0aW5ncy5weScgaW4gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nICVyLiBJdCBhcHBlYXJzIHlvdSd2ZSBjdXN0b21pemVkIHRoaW5ncy5cbllvdSdsbCBoYXZlIHRvIHJ1biBkamFuZ28tYWRtaW4ucHksIHBhc3NpbmcgaXQgeW91ciBzZXR0aW5ncyBtb2R1bGUuXG4oSWYgdGhlIGZpbGUgc2V0dGluZ3MucHkgZG9lcyBpbmRlZWQgZXhpc3QsIGl0J3MgY2F1c2luZyBhbiBJbXBvcnRFcnJvciBzb21laG93LilcbiIgJSBfX2ZpbGVfXykKLSAgICBzeXMuZXhpdCgxKQotCi1kamFuZ28uY29yZS5tYW5hZ2VtZW50LnNldHVwX2Vudmlyb24oc2V0dGluZ3MpCi0KLWZyb20gZGphbmdvLmRiIGltcG9ydCBtb2RlbHMKLWZyb20gZGphbmdvLmRiLm1vZGVscy5maWVsZHMgaW1wb3J0IEF1dG9GaWVsZCwgQm9vbGVhbkZpZWxkLCBJbnRlZ2VyRmllbGQKLWZyb20gZGphbmdvLmRiLm1vZGVscy5maWVsZHMucmVsYXRlZCBpbXBvcnQgRm9yZWlnbktleQotCi1pbXBvcnQgc2RuY29uLnJlc3Qudmlld3MKLQotcHJpbnQgIiMgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBjb250cm9sbGVyIHNvdXJjZSIKLXByaW50ICIjIHZpYSB0b29scy9leHRyYWN0X21vZGVsLnB5IGRhdGU6ICAlcyIgJSBkYXRldGltZS5kYXRldGltZS5ub3coKS5jdGltZSgpCi0KLSMgd2UgaXRlcmF0ZSBvdmVyIHJlc3RfbmFtZV9kaWN0LCBsaW1pdGluZyBDTEkgYWNjZXNzIHRvIHRob3NlIG1vZGVscwotIyBhbmQgbW9kZWwgZmllbGRzIGFjY2Vzc2libGUgdmlhIHJlc3QKLQotcmVzdF9tYXAgPSB7fQotZm9yIChtb2RlbCwgbW9kZWxfaW5mbykgaW4gc2RuY29uLnJlc3Qudmlld3MucmVzdF9tb2RlbF9pbmZvX2RpY3QuaXRlbXMoKToKLSAgICByZXN0X21hcFttb2RlbF0gPSB7fQotICAgIGZvciAocmVzdF9maWVsZF9uYW1lLCByZXN0X2ZpZWxkX2luZm8pIGluIG1vZGVsX2luZm8ucmVzdF9uYW1lX2RpY3QuaXRlbXMoKToKLSAgICAgICAgZGphbmdvX2ZpZWxkX25hbWUgPSByZXN0X2ZpZWxkX2luZm8ubmFtZQotICAgICAgICByZXN0X21hcFttb2RlbF1bZGphbmdvX2ZpZWxkX25hbWVdID0gcmVzdF9maWVsZF9uYW1lCi0KLW1vZGVsX2luZm9fZGljdCA9IHt9Ci1mb3IgKG1vZGVsLCBtb2RlbF9pbmZvKSBpbiBzZG5jb24ucmVzdC52aWV3cy5yZXN0X21vZGVsX2luZm9fZGljdC5pdGVtcygpOgotICAgIGRqYW5nb19tb2RlbF9jbGFzcyA9IG1vZGVsX2luZm8ubW9kZWxfY2xhc3MgCi0gICAgZmllbGRfaW5mb19kaWN0ID0ge30KLSAgICBmb3IgKHJlc3RfZmllbGRfbmFtZSwgcmVzdF9maWVsZF9pbmZvKSBpbiBtb2RlbF9pbmZvLnJlc3RfbmFtZV9kaWN0Lml0ZW1zKCk6Ci0gICAgICAgIGRqYW5nb19maWVsZF9uYW1lID0gcmVzdF9maWVsZF9pbmZvLm5hbWUKLSAgICAgICAgZGphbmdvX2ZpZWxkX2luZm8gPSByZXN0X2ZpZWxkX2luZm8uZGphbmdvX2ZpZWxkX2luZm8KLSAgICAgICAgIyBub3cgdGhhdCB3ZSBoYXZlIHRoZSBkamFuZ28gaW5mbyBhbmQgb3VyIG93biByZXN0IGluZm8sIGNyZWF0ZSBhIGZpZWxkIGluZm8gdG8gZHVtcAotICAgICAgICBqc29uX3NlcmlhbGl6ZV9zdHJpbmcgPSB0eXBlKGRqYW5nb19maWVsZF9pbmZvKSBub3QgaW4gKEF1dG9GaWVsZCwgQm9vbGVhbkZpZWxkLCBJbnRlZ2VyRmllbGQpCi0gICAgICAgIGZpZWxkX2luZm8gPSB7fQotICAgICAgICBmaWVsZF9pbmZvWydqc29uX3NlcmlhbGl6ZV9zdHJpbmcnXSA9IGpzb25fc2VyaWFsaXplX3N0cmluZwotICAgICAgICBpZiBkamFuZ29fZmllbGRfaW5mby52ZXJib3NlX25hbWUgIT0gZGphbmdvX2ZpZWxkX25hbWU6Ci0gICAgICAgICAgICAjIENoZWNrIGlmIHRoaXMgaXMgYSBwcm94eSBjbGFzcwotICAgICAgICAgICAgaWYgdHlwZShkamFuZ29fZmllbGRfaW5mby52ZXJib3NlX25hbWUpIGlzIHN0cjoKLSAgICAgICAgICAgICAgICBmaWVsZF9pbmZvWyd2ZXJib3NlLW5hbWUnXSA9IGRqYW5nb19maWVsZF9pbmZvLnZlcmJvc2VfbmFtZQotICAgICAgICBpZiBkamFuZ29fZmllbGRfaW5mby5wcmltYXJ5X2tleSA9PSBUcnVlOgotICAgICAgICAgICAgZmllbGRfaW5mb1sncHJpbWFyeV9rZXknXSA9IFRydWUKLSAgICAgICAgaWYgZGphbmdvX2ZpZWxkX2luZm8uaGVscF90ZXh0ICE9ICIiOgotICAgICAgICAgICAgZmllbGRfaW5mb1snaGVscF90ZXh0J10gPSBkamFuZ29fZmllbGRfaW5mby5oZWxwX3RleHQKLSAgICAgICAgZmllbGRfaW5mb1snbnVsbCddID0gZGphbmdvX2ZpZWxkX2luZm8ubnVsbAotICAgICAgICBpZiB0eXBlKGRqYW5nb19maWVsZF9pbmZvLmRlZmF1bHQpIGluIFtpbnQsIGJvb2wsIHN0cl06Ci0gICAgICAgICAgICBmaWVsZF9pbmZvWydkZWZhdWx0J10gPSBkamFuZ29fZmllbGRfaW5mby5kZWZhdWx0Ci0gICAgICAgIGZpZWxkX2luZm9bJ3R5cGUnXSA9IHN0cih0eXBlKGRqYW5nb19maWVsZF9pbmZvKSkuc3BsaXQoJy4nKVstMV0ucmVwbGFjZSgiJz4iLCAiIikKLSAgICAgICAgaWYgZmllbGRfaW5mb1sndHlwZSddID09ICdBdXRvRmllbGQnOgotICAgICAgICAgICAgIyBSZS1sYWJlbCB0aGUgY2Fzc2FuZHJhIGNvbXBvdW5kIGtleSBmb3IgZWFzaWVyIGNvbnN1bXB0aW9uCi0gICAgICAgICAgICBpZiBoYXNhdHRyKGRqYW5nb19tb2RlbF9jbGFzcywgJ0Nhc3NhbmRyYVNldHRpbmdzJyk6Ci0gICAgICAgICAgICAgICAgY2Fzc2FuZHJhX3NldHRpbmdzID0gZGphbmdvX21vZGVsX2NsYXNzLkNhc3NhbmRyYVNldHRpbmdzCi0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihjYXNzYW5kcmFfc2V0dGluZ3MsICdDT01QT1VORF9LRVlfRklFTERTJyk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kX2tleV9maWVsZHMgPSBjYXNzYW5kcmFfc2V0dGluZ3MuQ09NUE9VTkRfS0VZX0ZJRUxEUwotICAgICAgICAgICAgICAgICAgICByZXN0X2tleV9maWVsZHMgPSBbcmVzdF9tYXBbbW9kZWxdLmdldCh4LCB4KSBmb3IgeCBpbiBjb21wb3VuZF9rZXlfZmllbGRzXQotICAgICAgICAgICAgICAgICAgICBmaWVsZF9pbmZvWydjb21wb3VuZF9rZXlfZmllbGRzJ10gPSByZXN0X2tleV9maWVsZHMKLSAgICAgICAgICAgICAgICAgICAgZmllbGRfaW5mb1sndHlwZSddID0gJ2NvbXBvdW5kLWtleScKLSAgICAgICAgICAgICAgICAgICAgZmllbGRfaW5mb1snaGVscF90ZXh0J10gPSAnI3wlcycgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3wnLmpvaW4ocmVzdF9rZXlfZmllbGRzKQotICAgICAgICBpZiBmaWVsZF9pbmZvWyd0eXBlJ10gPT0gJ0ZvcmVpZ25LZXknOgotICAgICAgICAgICAgb3RoZXJfb2JqZWN0ID0gZGphbmdvX2ZpZWxkX2luZm8ucmVsLnRvLlJlc3QuTkFNRQotICAgICAgICAgICAgaWYgZGphbmdvX2ZpZWxkX2luZm8ucmVsLmZpZWxkX25hbWUgaW4gcmVzdF9tYXBbb3RoZXJfb2JqZWN0XToKLSAgICAgICAgICAgICAgICBmaWVsZF9pbmZvWydyZWxfZmllbGRfbmFtZSddID0gXAotICAgICAgICAgICAgICAgICAgICByZXN0X21hcFtvdGhlcl9vYmplY3RdW2RqYW5nb19maWVsZF9pbmZvLnJlbC5maWVsZF9uYW1lXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaWVsZF9pbmZvWydyZWxfZmllbGRfbmFtZSddID0gZGphbmdvX2ZpZWxkX2luZm8ucmVsLmZpZWxkX25hbWUKLSAgICAgICAgICAgIGZpZWxkX2luZm9bJ3JlbF9vYmpfdHlwZSddID0gZGphbmdvX2ZpZWxkX2luZm8ucmVsLnRvLlJlc3QuTkFNRQotICAgICAgICBpZiBmaWVsZF9pbmZvWyd0eXBlJ10gPT0gJ0NoYXJGaWVsZCc6Ci0gICAgICAgICAgICBmaWVsZF9pbmZvWydtYXhfbGVuZ3RoJ10gPSBkamFuZ29fZmllbGRfaW5mby5tYXhfbGVuZ3RoCi0gICAgICAgICNpZiBkamFuZ29fZmllbGRfaW5mby52YWxpZGF0b3JzOgotICAgICAgICAgICAgI2ZpZWxkX2luZm9bJ3ZhbGlkYXRvcnMnXSA9IGRqYW5nb19maWVsZF9pbmZvLnZhbGlkYXRvcnMKLSAgICAgICAgI2lmIGlzaW5zdGFuY2UodHlwZSwgZGphbmdvLlBvc2l0aXZlSW50ZWdlckZpZWxkKToKLSAgICAgICAgICAgICN0eXBlX25hbWUgPSAnUG9zaXRpdmVJbnRlZ2VyRmllbGQnCi0gICAgICAgICAgICAjcHJpbnQgdHlwZV9uYW1lCi0KLSAgICAgICAgZmllbGRfaW5mb19kaWN0W3Jlc3RfZmllbGRfbmFtZV0gPSBmaWVsZF9pbmZvCi0gICAgbW9kZWxfaW5mb19kaWN0W21vZGVsXT17J2ZpZWxkcyc6ZmllbGRfaW5mb19kaWN0LCAnaGFzX3Jlc3RfbW9kZWwnOiBUcnVlfQotCi1pbXBvcnQgcHByaW50Ci1wcCA9IHBwcmludC5QcmV0dHlQcmludGVyKGluZGVudD0yKQotcHJpbnQgIm1vZGVsX2luZm9fZGljdCA9ICIscHAucHByaW50KG1vZGVsX2luZm9fZGljdCkKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vbWFuYWdlLnB5IGIvY2xpL3NkbmNvbi9tYW5hZ2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDNmYTk5ZTQuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9tYW5hZ2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1mcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQgaW1wb3J0IGV4ZWN1dGVfbWFuYWdlcgotdHJ5OgotICAgIGltcG9ydCBzZXR0aW5ncyAjIEFzc3VtZWQgdG8gYmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGltcG9ydCBzeXMKLSAgICBzeXMuc3RkZXJyLndyaXRlKCJFcnJvcjogQ2FuJ3QgZmluZCB0aGUgZmlsZSAnc2V0dGluZ3MucHknIGluIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyAlci4gSXQgYXBwZWFycyB5b3UndmUgY3VzdG9taXplZCB0aGluZ3MuXG5Zb3UnbGwgaGF2ZSB0byBydW4gZGphbmdvLWFkbWluLnB5LCBwYXNzaW5nIGl0IHlvdXIgc2V0dGluZ3MgbW9kdWxlLlxuKElmIHRoZSBmaWxlIHNldHRpbmdzLnB5IGRvZXMgaW5kZWVkIGV4aXN0LCBpdCdzIGNhdXNpbmcgYW4gSW1wb3J0RXJyb3Igc29tZWhvdy4pXG4iICUgX19maWxlX18pCi0gICAgc3lzLmV4aXQoMSkKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBleGVjdXRlX21hbmFnZXIoc2V0dGluZ3MpCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3Jlc3QvUmVzdEFwaVRlc3REYXRhLnB5IGIvY2xpL3NkbmNvbi9yZXN0L1Jlc3RBcGlUZXN0RGF0YS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjkwN2U1ZC4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3Jlc3QvUmVzdEFwaVRlc3REYXRhLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgVGhpcyBpIGRhdGEgZmlsZSBmb3IgdGVzdGluZyBSZXN0IEFQSXMKLSMgVGhpcyBmaWxlIGlzIHJlYWQgYnkgUmVzdEFwaVRlc3RzLnB5Ci0KLXRlc3RfZHBpZD0iMTE6MjI6MzM6NDQ6NTU6NjY6Nzc6MDEiCi10ZXN0X2RwaWQyPSIxMToyMjozMzo0NDo1NTo2Njo3NzowMSIKLXRlc3RfbWFjID0iMTE6MjI6MzM6NDQ6NTU6MDEiCi10ZXN0X3Zuc19pZCAgID0idGVzdF92bnNfaWRfMSIKLXRlc3RfZmxvd19lbnRyeV9uYW1lID0gInRlc3RfZmxvd19lbnRyeV9uYW1lIgotdGVzdF92bnNfYWNsX25hbWUgPSAidGVzdF92bnNfYWNsIgotdGVzdF9zeW5jZF9jb25maWdfaWQgPSAidGVzdF9zeW5jZF9jb25maWdfaWQiCi10ZXN0X3N5bmNkX3RyYW5zcG9ydF9jb25maWdfdGVzdF9kYXRhPSJ0ZXN0X3N5bmNfdHJhbnNwb3J0X2NvbmZpZ19pZCIKLXRlc3Rfc3luY2RfdHJhbnNwb3J0X2NvbmZpZ19uYW1lID0gInRlc3Rfc3luY2RfdHJhbnNwb3J0X2NmZ19uYW1lIgotdGVzdF92bnNfaW50ZXJmYWNlX3J1bGVfbmFtZSA9ICJ0ZXN0X3Zuc19pbnRmX3J1bGVfbmFtZSIKLXRlc3Rfdm5zX2ludGVyZmFjZV9uYW1lID0gInRlc3Rfdm5zX2ludGZfbmFtZSIKLXRlc3Rfdm5zX2ludGVyZmFjZV9hY2xfZGlyZWN0aW9uID0gImluIgotdGVzdF92bnNfaW50ZXJmYWNlX2FjbF9pZCA9ICJ0ZXN0X3Zuc19pbnRlcmZhY2VfYWNsX2lkIgotdGVzdF92bnNfYWNsX25hbWVfaWQgPSB0ZXN0X3Zuc19pZCsifCIrdGVzdF92bnNfYWNsX25hbWUKLXRlc3Rfdm5zX2FjbF9lbnRyeV90eXBlID0gImlwIgotdGVzdF9hY2xfZW50cnlfc2VxX25vID0gIjEwIgotdGVzdF92bnNfYWNsX2VudHJ5X2lkID0gdGVzdF92bnNfYWNsX25hbWVfaWQrInwiK3Rlc3RfYWNsX2VudHJ5X3NlcV9ubwotdGVzdF92bnNfYWNsX2VudHJ5X3NyY19pcD0iMTEuMjIuMzMuNDQiCi10ZXN0X3Zuc19hY2xfZW50cnlfYWN0aW9uPSJkZW55IgotdGVzdF92bnNfYWNsX2VudHJ5X3R5cGU9ImRlbnkiCi10ZXN0X3RhZ19uYW1lID0gInRlc3RfdGFnX25hbWUiCi10ZXN0X3RhZ192YWx1ZSA9ICJ0ZXN0X3RhZ192YWx1ZSIKLXRlc3RfdGFnX2lkID0gdGVzdF92bnNfaWQrInwiK3Rlc3RfdGFnX25hbWUrInwiK3Rlc3RfdGFnX3ZhbHVlCi10ZXN0X3RhZ19tYXBwaW5nX2lkID0gdGVzdF90YWdfaWQrInwiK3Rlc3RfbWFjCi0KLW1vZGVsX3N3aXRjaF90ZXN0X2RhdGE9eyJwYXRoIjoibW9kZWwvc3dpdGNoIiwgImRhdGEiOnsiZHBpZCI6dGVzdF9kcGlkfSwgImlkIjoiZHBpZCJ9Ci1tb2RlbF9ob3N0X3Rlc3RfZGF0YSAgPXsicGF0aCI6Im1vZGVsL2hvc3QiLCAgICJkYXRhIjp7Im1hYyI6dGVzdF9tYWN9LCAiaWQiOiJtYWMifQotbW9kZWxfZmxvd19lbnRyeV90ZXN0X2RhdGEgPSB7InBhdGgiOiJtb2RlbC9mbG93LWVudHJ5IiwgImRhdGEiOnsic3dpdGNoIjp0ZXN0X2RwaWQsICJuYW1lIjp0ZXN0X2Zsb3dfZW50cnlfbmFtZX0sICJpZCI6Im5hbWUifQotbW9kZWxfdm5zX2RlZmluaXRpb25fdGVzdF9kYXRhID0geyJwYXRoIjoibW9kZWwvdm5zLWRlZmluaXRpb24iLCAiZGF0YSI6eyJpZCI6dGVzdF92bnNfaWR9LCAiaWQiOiJpZCJ9Ci1tb2RlbF92bnNfYWNsX3Rlc3RfZGF0YSA9IHsicGF0aCI6Im1vZGVsL3Zucy1hY2Nlc3MtbGlzdCIsICJkYXRhIjp7InZucyI6dGVzdF92bnNfaWQsICJuYW1lIjp0ZXN0X3Zuc19hY2xfbmFtZV9pZH0sICJpZCI6Im5hbWUifQotbW9kZWxfaG9zdF9uZXR3b3JrX2FkZHJlc3NfdGVzdF9kYXRhID0geyJwYXRoIjoibW9kZWwvaG9zdC1uZXR3b3JrLWFkZHJlc3MiLCBcCi0gICAgImRhdGEiOnsiaWQiOiJlYTo4MToyNzoyYTo2Yjo2Yi0xMC4wLjAuMSJ9LCAiaWQiOiJpZCJ9Ci1tb2RlbF9zeW5jZF9jb25maWdfdGVzdF9kYXRhID0geyJwYXRoIjoibW9kZWwvc3luY2QtY29uZmlnIiwgImRhdGEiOnsiaWQiOnRlc3Rfc3luY2RfY29uZmlnX2lkfSwgImlkIjoiaWQifQotbW9kZWxfdGFnX3Rlc3RfZGF0YSA9IHsicGF0aCI6Im1vZGVsL3RhZyIsICJkYXRhIjp7ImlkIjp0ZXN0X3RhZ19pZCwgXAotICAgICJuYW1lIjoidGFnbmFtZSIsICJ2YWx1ZSI6InRhZ3ZhbHVlIiwgIm5hbWVzcGFjZSI6dGVzdF92bnNfaWR9LCAiaWQiOiJpZCJ9Ci1tb2RlbF90YWdfbWFwcGluZ190ZXN0X2RhdGEgPSB7InBhdGgiOiJtb2RlbC90YWctbWFwcGluZyIsICJkYXRhIjp7ImlkIjogdGVzdF90YWdfbWFwcGluZ19pZCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YWciOiB0ZXN0X3RhZ19pZCwgInR5cGUiOiAiaG9zdCIsICJob3N0IjogdGVzdF9tYWN9LCAiaWQiOiJpZCJ9Ci1tb2RlbF9zeW5jZF90cmFuc3BvcnRfY29uZmlnX3Rlc3RfZGF0YSA9IHsicGF0aCI6Im1vZGVsL3N5bmNkLXRyYW5zcG9ydC1jb25maWciLCAKLSAgICAiZGF0YSI6eyJpZCI6InRlc3Rfc3luY2RfdHJhbnNwb3J0X2NvbmZpZ190ZXN0X2RhdGEiLCAidHlwZSI6InJhbmRvbTEiLCAiYXJncyI6InRlc3RfYXJncyIsIFwKLSAgICAiY29uZmlnIjp0ZXN0X3N5bmNkX2NvbmZpZ19pZCwgInRhcmdldC1jbHVzdGVyIjoiVGVzdGNsdXN0ZXIiLCAibmFtZSI6dGVzdF9zeW5jZF90cmFuc3BvcnRfY29uZmlnX25hbWV9LCAiaWQiOiJpZCJ9Ci1tb2RlbF9zeW5jZF9wcm9ncmVzc19pbmZvX3Rlc3RfZGF0YSA9IHsicGF0aCI6Im1vZGVsL3N5bmNkLXByb2dyZXNzLWluZm8iLCAiZGF0YSI6eyJpZCI6dGVzdF9zeW5jZF9jb25maWdfaWR9LCAiaWQiOiJpZCJ9Ci1tb2RlbF92bnNfaW50ZXJmYWNlX3J1bGVfdGVzdF9kYXRhID17InBhdGgiOiJtb2RlbC92bnMtaW50ZXJmYWNlLXJ1bGUiLCBcCi0gICAgImRhdGEiOnsiaWQiOnRlc3Rfdm5zX2lkKyJ8Iit0ZXN0X3Zuc19pbnRlcmZhY2VfcnVsZV9uYW1lLCAidm5zIjp0ZXN0X3Zuc19pZH0sICJpZCI6ImlkIn0KLW1vZGVsX3Zuc19pbnRlcmZhY2VfYWNsX3Rlc3RfZGF0YSA9IHsicGF0aCI6Im1vZGVsL3Zucy1pbnRlcmZhY2UtYWNjZXNzLWxpc3QiLCAiZGF0YSI6eyJpZCI6dGVzdF92bnNfaW50ZXJmYWNlX2FjbF9pZCwgXAotICAgICJpbi1vdXQiOnRlc3Rfdm5zX2ludGVyZmFjZV9hY2xfZGlyZWN0aW9uLCAidm5zLWludGVyZmFjZSI6dGVzdF92bnNfaW50ZXJmYWNlX25hbWUsICJ2bnMtYWNjZXNzLWxpc3QiOnRlc3Rfdm5zX2FjbF9uYW1lX2lkfSwgImlkIjoiaWQifQotbW9kZWxfdm5zX2FjbF9lbnRyeV90ZXN0X2RhdGEgPSB7InBhdGgiOiJtb2RlbC92bnMtYWNjZXNzLWxpc3QtZW50cnkiLCBcCi0gICAgImRhdGEiOnsiaWQiOnRlc3Rfdm5zX2FjbF9lbnRyeV9pZCwgInNyYy1pcCI6dGVzdF92bnNfYWNsX2VudHJ5X3NyY19pcCwgXAotICAgICJhY3Rpb24iOnRlc3Rfdm5zX2FjbF9lbnRyeV9hY3Rpb24sICJ2bnMtYWNjZXNzLWxpc3QiOnRlc3Rfdm5zX2FjbF9uYW1lX2lkLCAidHlwZSI6dGVzdF92bnNfYWNsX2VudHJ5X3R5cGV9LCAiaWQiOiJpZCJ9Ci0KLXRlc3RfaW5kZXg9MAotcmVzdF9hcGlfdGVzdF9kYXRhID0ge30KLXJlc3RfYXBpX3Rlc3RfZGF0YVt0ZXN0X2luZGV4XSA9IG1vZGVsX3N3aXRjaF90ZXN0X2RhdGEgOyB0ZXN0X2luZGV4ICs9IDEKLXJlc3RfYXBpX3Rlc3RfZGF0YVt0ZXN0X2luZGV4XSA9IG1vZGVsX2hvc3RfdGVzdF9kYXRhOyB0ZXN0X2luZGV4ICs9IDEKLXJlc3RfYXBpX3Rlc3RfZGF0YVt0ZXN0X2luZGV4XSA9IG1vZGVsX2Zsb3dfZW50cnlfdGVzdF9kYXRhOyB0ZXN0X2luZGV4ICs9IDEKLXJlc3RfYXBpX3Rlc3RfZGF0YVt0ZXN0X2luZGV4XSA9IG1vZGVsX3Zuc19kZWZpbml0aW9uX3Rlc3RfZGF0YTsgdGVzdF9pbmRleCArPSAxCi1yZXN0X2FwaV90ZXN0X2RhdGFbdGVzdF9pbmRleF0gPSBtb2RlbF92bnNfYWNsX3Rlc3RfZGF0YTsgdGVzdF9pbmRleCArPSAxCi1yZXN0X2FwaV90ZXN0X2RhdGFbdGVzdF9pbmRleF0gPSBtb2RlbF9ob3N0X25ldHdvcmtfYWRkcmVzc190ZXN0X2RhdGE7IHRlc3RfaW5kZXggKz0gMQotcmVzdF9hcGlfdGVzdF9kYXRhW3Rlc3RfaW5kZXhdID0gbW9kZWxfc3luY2RfY29uZmlnX3Rlc3RfZGF0YTsgdGVzdF9pbmRleCArPSAxCi1yZXN0X2FwaV90ZXN0X2RhdGFbdGVzdF9pbmRleF0gPSBtb2RlbF90YWdfdGVzdF9kYXRhOyB0ZXN0X2luZGV4ICs9IDEKLXJlc3RfYXBpX3Rlc3RfZGF0YVt0ZXN0X2luZGV4XSA9IG1vZGVsX3RhZ19tYXBwaW5nX3Rlc3RfZGF0YTsgdGVzdF9pbmRleCArPSAxCi1yZXN0X2FwaV90ZXN0X2RhdGFbdGVzdF9pbmRleF0gPSBtb2RlbF9zeW5jZF90cmFuc3BvcnRfY29uZmlnX3Rlc3RfZGF0YTsgdGVzdF9pbmRleCArPSAxCi1yZXN0X2FwaV90ZXN0X2RhdGFbdGVzdF9pbmRleF0gPSBtb2RlbF9zeW5jZF9wcm9ncmVzc19pbmZvX3Rlc3RfZGF0YTsgdGVzdF9pbmRleCArPSAxCi1yZXN0X2FwaV90ZXN0X2RhdGFbdGVzdF9pbmRleF0gPSBtb2RlbF92bnNfaW50ZXJmYWNlX3J1bGVfdGVzdF9kYXRhOyB0ZXN0X2luZGV4ICs9IDEKLXJlc3RfYXBpX3Rlc3RfZGF0YVt0ZXN0X2luZGV4XSA9IG1vZGVsX3Zuc19pbnRlcmZhY2VfYWNsX3Rlc3RfZGF0YTsgdGVzdF9pbmRleCArPSAxCi1yZXN0X2FwaV90ZXN0X2RhdGFbdGVzdF9pbmRleF0gPSBtb2RlbF92bnNfYWNsX2VudHJ5X3Rlc3RfZGF0YTsgdGVzdF9pbmRleCArPSAxCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3Jlc3QvX19pbml0X18ucHkgYi9jbGkvc2RuY29uL3Jlc3QvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU4MGE3YmIuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9yZXN0L19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gc2RuY29uLnJlc3QuY29uZmlnIGltcG9ydCBpbml0X2NvbmZpZwotCi1pbml0X2NvbmZpZygpCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3Jlc3QvY29uZmlnLnB5IGIvY2xpL3NkbmNvbi9yZXN0L2NvbmZpZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggN2MwZGU1Yy4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3Jlc3QvY29uZmlnLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjE5ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1mcm9tIGRqYW5nby5kYi5tb2RlbHMuc2lnbmFscyBpbXBvcnQgcG9zdF9zYXZlLCBwb3N0X2RlbGV0ZQotaW1wb3J0IGpzb24KLWltcG9ydCBvcwotaW1wb3J0IHRyYWNlYmFjawotZnJvbSBkamFuZ28uY29yZSBpbXBvcnQgc2VyaWFsaXplcnMKLWltcG9ydCBzZG5jb24KLQotIyBGSVhNRTogVGhpcyBjb2RlIGlzIG5vdCB0aHJlYWQtc2FmZSEhIQotIyBDdXJyZW50bHkgd2UgZG9uJ3QgcnVuIERqYW5nbyB3aXRoIG11bHRpcGxlIHRocmVhZHMgc28gdGhpcyBpc24ndCBhIHByb2JsZW0sCi0jIGJ1dCBpZiB3ZSB3ZXJlIHRvIHRyeSB0byBlbmFibGUgdGhyZWFkaW5nIHRoaXMgY29kZSB3b3VsZCBuZWVkIHRvIGJlIGZpeGVkLgotCi1wcmVfc2F2ZV9pbnN0YW5jZSA9IE5vbmUKLWNvbmZpZ19oYW5kbGVycyA9IFtdCi1jb25maWdfbW9kZWxzID0gc2V0KCkKLQotCi1kZWYgYWRkX2NvbmZpZ19oYW5kbGVyKGRlcGVuZGVuY2llcywgaGFuZGxlcik6Ci0gICAgIiIiCi0gICAgVGhlIGRlcGVuZGVuY2llcyBhcmd1bWVudCBpcyBhIGRpY3Rpb25hcnkgd2hlcmUgdGhlIGtleSBpcyBhIG1vZGVsCi0gICAgKGkuZS4gdGhlIGFjdHVhbCBtb2RlbCwgbm90IHRoZSBuYW1lIG9mIHRoZSBtb2RlKSBhbmQgdGhlIHZhbHVlIG9mIHRoZQotICAgIGtleSBpcyBhIHR1cGxlIChvciBsaXN0KSBvZiBmaWVsZCBuYW1lcyB3aG9zZSBtb2RpZmljYXRpb24gc2hvdWxkCi0gICAgdHJpZ2dlciB0aGUgY29uZmlnIGhhbmRsZXIuIFRoZSB2YWx1ZSBjYW4gYWxzbyBiZSBOb25lIHRvIGluZGljYXRlCi0gICAgdGhhdCB0aGUgY29uZmlnIGhhbmRsZXIgc2hvdWxkIGJlIHRyaWdnZXJlZCB3aGVuIGFueSBmaWVsZCBpbiB0aGUKLSAgICBtb2RlbCBpcyBtb2RpZmllZC4KLSAgICAKLSAgICBUaGUgY2FsbGluZyBjb252ZW50aW9uIG9mIGEgY29uZmlnIGhhbmRsZXIgaXM6Ci0gICAgCi0gICAgZGVmIG15X2NvbmZpZ19oYW5kbGVyKG9wLCBvbGRfaW5zdGFuY2UsIG5ld19pbnN0YW5jZSwgbW9kaWZpZWRfZmllbGRzKQotICAgIAotICAgIFRoZSAnb3AnIGFyZ3VtZW50IGlzIG9uZSBvZiAnSU5TRVJUJywgJ1VQREFURScgb3IgJ0RFTEVURScsIGNvcnJlc3BvbmRpbmcKLSAgICB0byBhbiBpbnNlcnRpb24sIHVwZGF0ZSBvciBkZWxldGlvbiBvZiBhIHJvdyBpbiB0aGUgbW9kZWwuCi0gICAgVGhlICdvbGRfaW5zdGFuY2UnIGFyZ3VtZW50IGlzIHRoZSBpbnN0YW5jZSBvZiB0aGUgbW9kZWwgYmVmb3JlIHRoZSBjaGFuZ2VzLgotICAgIEZvciBhbiAnSU5TRVJUJyBvcCwgb2xkX2luc3RhbmNlIGFuZCBtb2RpZmllZF9maWVsZHMgYXJlIGJvdGggTm9uZS4KLSAgICBUaGUgJ25ld19pbnN0YW5jZScgYXJndW1lbnQgaXMgdGhlIGluc3RhbmNlIG9mIHRoZSBtb2RlbCBhZnRlciB0aGUgY2hhbmdlcy4KLSAgICBGb3IgYSAnREVMRVRFJyBvcCwgbmV3X2luc3RhbmNlIGFuZCBtb2RpZmllZF9maWVsZHMgYXJlIGJvdGggTm9uZS4KLSAgICB0aGUgJ21vZGlmaWVkX2ZpZWxkcycgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGZpZWxkcyB0aGF0IHdlcmUgY2hhbmdlZC4KLSAgICBUaGUgZGljdGlvbmFyeSBrZXkgaXMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIGFuZCB0aGUgdmFsdWUgaXMgdGhlIG5ldyB2YWx1ZS4KLSAgICAiIiIKLSAgICBhc3NlcnQgZGVwZW5kZW5jaWVzICE9IE5vbmUKLSAgICBhc3NlcnQgaGFuZGxlciAhPSBOb25lCi0gICAgCi0gICAgZm9yIG1vZGVsIGluIGRlcGVuZGVuY2llcy5rZXlzKCk6Ci0gICAgICAgIGNvbmZpZ19tb2RlbHMuYWRkKG1vZGVsKQotICAgICAgICAgICAgCi0gICAgY29uZmlnX2hhbmRsZXJzLmFwcGVuZCgoZGVwZW5kZW5jaWVzLCBoYW5kbGVyKSkKLQotbGFzdF9jb25maWdfc3RhdGVfcGF0aCA9IE5vbmUKLQotZGVmIGdldF9sYXN0X2NvbmZpZ19zdGF0ZV9wYXRoKCk6Ci0gICAgZ2xvYmFsIGxhc3RfY29uZmlnX3N0YXRlX3BhdGgKLSAgICBpZiBub3QgbGFzdF9jb25maWdfc3RhdGVfcGF0aDoKLSAgICAgICAgbGFzdF9jb25maWdfc3RhdGVfZGlyID0gIiVzL3J1bi8iICUgc2RuY29uLlNETl9ST09UCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsYXN0X2NvbmZpZ19zdGF0ZV9kaXIpOgotICAgICAgICAgICAgbGFzdF9jb25maWdfc3RhdGVfZGlyID0gJy90bXAnCi0gICAgICAgIGxhc3RfY29uZmlnX3N0YXRlX3BhdGggPSBvcy5wYXRoLmpvaW4obGFzdF9jb25maWdfc3RhdGVfZGlyLCAnbGFzdC1jb25maWctc3RhdGUnKQotICAgIHJldHVybiBsYXN0X2NvbmZpZ19zdGF0ZV9wYXRoCi0KLWRlZiByZXNldF9sYXN0X2NvbmZpZ19zdGF0ZSgpOgotICAgIHBhdGggPSBnZXRfbGFzdF9jb25maWdfc3RhdGVfcGF0aCgpCi0gICAgdHJ5OgotICAgICAgICBvcy51bmxpbmsocGF0aCkKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBfZToKLSAgICAgICAgcGFzcwotICAgIAotCi1kZWYgY29uZmlnX3JlYWRfc3RhdGUoKToKLSAgICBsYXN0X2NvbmZpZ19zdGF0ZSA9IE5vbmUKLSAgICBmID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgZiA9IG9wZW4oZ2V0X2xhc3RfY29uZmlnX3N0YXRlX3BhdGgoKSwgJ3InKQotICAgICAgICBsYXN0X2NvbmZpZ19zdGF0ZV90ZXh0ID0gZi5yZWFkKCkKLSAgICAgICAgbGFzdF9jb25maWdfc3RhdGUgPSBqc29uLmxvYWRzKGxhc3RfY29uZmlnX3N0YXRlX3RleHQpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgX2U6Ci0gICAgICAgIHBhc3MKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBmOgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgcmV0dXJuIGxhc3RfY29uZmlnX3N0YXRlCi0KLWRlZiBjb25maWdfd3JpdGVfc3RhdGUoY29uZmlnX3N0YXRlKToKLSAgICBmID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgY29uZmlnX3N0YXRlX3RleHQgPSBqc29uLmR1bXBzKGNvbmZpZ19zdGF0ZSkKLSAgICAgICAgZiA9IG9wZW4oZ2V0X2xhc3RfY29uZmlnX3N0YXRlX3BhdGgoKSwgJ3cnKQotICAgICAgICBmLndyaXRlKGNvbmZpZ19zdGF0ZV90ZXh0KQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgIHByaW50ICJFcnJvciB3cml0aW5nIGxhc3QgY29uZmlnIHN0YXRlOiAlcyIgJSBzdHIoZSkKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBmOgotICAgICAgICAgICAgZi5jbG9zZSgpCi0KLWRlZiBjb25maWdfZG9faW5zZXJ0KHNlbmRlciwgbmV3X2luc3RhbmNlKToKLSAgICBmb3IgY29uZmlnX2hhbmRsZXIgaW4gY29uZmlnX2hhbmRsZXJzOgotICAgICAgICBkZXBlbmRlbmNpZXMgPSBjb25maWdfaGFuZGxlclswXQotICAgICAgICBpZiBzZW5kZXIgaW4gZGVwZW5kZW5jaWVzOgotICAgICAgICAgICAgaGFuZGxlciA9IGNvbmZpZ19oYW5kbGVyWzFdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaGFuZGxlcihvcD0nSU5TRVJUJywgb2xkX2luc3RhbmNlPU5vbmUsIG5ld19pbnN0YW5jZT1uZXdfaW5zdGFuY2UsIG1vZGlmaWVkX2ZpZWxkcz1Ob25lKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgX2U6Ci0gICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgCi1kZWYgY29uZmlnX2RvX3VwZGF0ZShzZW5kZXIsIG9sZF9pbnN0YW5jZSwgbmV3X2luc3RhbmNlKToKLSAgICBmb3IgY29uZmlnX2hhbmRsZXIgaW4gY29uZmlnX2hhbmRsZXJzOgotICAgICAgICBkZXBlbmRlbmNpZXMgPSBjb25maWdfaGFuZGxlclswXQotICAgICAgICBpZiBzZW5kZXIgaW4gZGVwZW5kZW5jaWVzOgotICAgICAgICAgICAgaGFuZGxlciA9IGNvbmZpZ19oYW5kbGVyWzFdCi0gICAgICAgICAgICBtb2RpZmllZF9maWVsZHMgPSB7fQotICAgICAgICAgICAgZmllbGRzID0gZGVwZW5kZW5jaWVzLmdldChzZW5kZXIpCi0gICAgICAgICAgICBpZiBub3QgZmllbGRzOgotICAgICAgICAgICAgICAgICMgSWYgbm8gZmllbGRzIHdlcmUgc3BlY2lmaWVkIGZvciB0aGUgbW9kZWwgdGhlbiBjaGVjayBhbGwgb2YgdGhlIGZpZWxkcy4KLSAgICAgICAgICAgICAgICBmaWVsZHMgPSBbZmllbGQubmFtZSBmb3IgZmllbGQgaW4gc2VuZGVyLl9tZXRhLmZpZWxkc10KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6Ci0gICAgICAgICAgICAgICAgb2xkX3ZhbHVlID0gZ2V0YXR0cihvbGRfaW5zdGFuY2UsIGZpZWxkKQotICAgICAgICAgICAgICAgIG5ld192YWx1ZSA9IGdldGF0dHIobmV3X2luc3RhbmNlLCBmaWVsZCkKLSAgICAgICAgICAgICAgICBpZiBuZXdfdmFsdWUgIT0gb2xkX3ZhbHVlOgotICAgICAgICAgICAgICAgICAgICBtb2RpZmllZF9maWVsZHNbZmllbGRdID0gbmV3X3ZhbHVlCi0gICAgICAgICAgICBpZiBtb2RpZmllZF9maWVsZHM6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKG9wPSdVUERBVEUnLCBvbGRfaW5zdGFuY2U9b2xkX2luc3RhbmNlLCBuZXdfaW5zdGFuY2U9bmV3X2luc3RhbmNlLCBtb2RpZmllZF9maWVsZHM9bW9kaWZpZWRfZmllbGRzKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIF9lOgotICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLQotCi1kZWYgY29uZmlnX2RvX2RlbGV0ZShzZW5kZXIsIGluc3RhbmNlKToKLSAgICBmb3IgY29uZmlnX2hhbmRsZXIgaW4gY29uZmlnX2hhbmRsZXJzOgotICAgICAgICBkZXBlbmRlbmNpZXMgPSBjb25maWdfaGFuZGxlclswXQotICAgICAgICBpZiBzZW5kZXIgaW4gZGVwZW5kZW5jaWVzOgotICAgICAgICAgICAgaGFuZGxlciA9IGNvbmZpZ19oYW5kbGVyWzFdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaGFuZGxlcihvcD0nREVMRVRFJywgb2xkX2luc3RhbmNlPWluc3RhbmNlLCBuZXdfaW5zdGFuY2U9Tm9uZSwgbW9kaWZpZWRfZmllbGRzPU5vbmUpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBfZToKLSAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLQotZGVmIG1vZGVsX2luc3RhbmNlc19lcXVhbChpbnN0YW5jZTEsIGluc3RhbmNlMik6Ci0gICAgaWYgaW5zdGFuY2UxID09IE5vbmU6Ci0gICAgICAgIHJldHVybiBpbnN0YW5jZTEgPT0gaW5zdGFuY2UyCi0gICAgCi0gICAgZm9yIGZpZWxkIGluIGluc3RhbmNlMS5fbWV0YS5maWVsZHM6Ci0gICAgICAgIHZhbHVlMSA9IGZpZWxkLnZhbHVlX2Zyb21fb2JqZWN0KGluc3RhbmNlMSkKLSAgICAgICAgdmFsdWUyID0gZmllbGQudmFsdWVfZnJvbV9vYmplY3QoaW5zdGFuY2UyKQotICAgICAgICBpZiB2YWx1ZTEgIT0gdmFsdWUyOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIFRydWUKLQotZGVmIGNvbmZpZ19jaGVja19zdGF0ZSgpOgotICAgIGZyb20gc2RuY29uLmNvbnRyb2xsZXIubm90aWZpY2F0aW9uIGltcG9ydCBkb19tb2RpZnlfbm90aWZpY2F0aW9uLCBkb19kZWxldGVfbm90aWZpY2F0aW9uCi0gICAgbGFzdF9jb25maWdfc3RhdGUgPSBjb25maWdfcmVhZF9zdGF0ZSgpCi0gICAgdHJ5OgotICAgICAgICBsYXN0X2NvbmZpZ19pbnN0YW5jZXMgPSBsYXN0X2NvbmZpZ19zdGF0ZS5nZXQoJ2luc3RhbmNlcycpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgX2U6Ci0gICAgICAgIGxhc3RfY29uZmlnX2luc3RhbmNlcyA9IHt9Ci0gICAgCi0gICAgY3VycmVudF9jb25maWdfaW5zdGFuY2VzID0ge30KLSAgICAKLSAgICBmb3IgY29uZmlnX21vZGVsIGluIGNvbmZpZ19tb2RlbHM6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlcmlhbGl6ZWRfb2xkX2luc3RhbmNlcyA9IGpzb24uZHVtcHMobGFzdF9jb25maWdfaW5zdGFuY2VzLmdldChjb25maWdfbW9kZWwuX19uYW1lX18sW10pKQotICAgICAgICAgICAgb2xkX2luc3RhbmNlX2luZm8gPSBzZXJpYWxpemVycy5kZXNlcmlhbGl6ZSgnanNvbicsIHNlcmlhbGl6ZWRfb2xkX2luc3RhbmNlcykKLSAgICAgICAgICAgIG9sZF9pbnN0YW5jZXMgPSBbaW5mby5vYmplY3QgZm9yIGluZm8gaW4gb2xkX2luc3RhbmNlX2luZm9dCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIF9lOgotICAgICAgICAgICAgb2xkX2luc3RhbmNlcyA9IFtdCi0gICAgICAgICAgICAKLSAgICAgICAgbmV3X2luc3RhbmNlcyA9IGNvbmZpZ19tb2RlbC5vYmplY3RzLmFsbCgpCi0gICAgICAgIAotICAgICAgICBmb3IgbmV3X2luc3RhbmNlIGluIG5ld19pbnN0YW5jZXM6Ci0gICAgICAgICAgICBmb3IgaW5kZXgsIG9sZF9pbnN0YW5jZSBpbiBlbnVtZXJhdGUob2xkX2luc3RhbmNlcyk6Ci0gICAgICAgICAgICAgICAgaWYgbmV3X2luc3RhbmNlLnBrID09IG9sZF9pbnN0YW5jZS5wazoKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IG1vZGVsX2luc3RhbmNlc19lcXVhbChuZXdfaW5zdGFuY2UsIG9sZF9pbnN0YW5jZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfZG9fdXBkYXRlKGNvbmZpZ19tb2RlbCwgb2xkX2luc3RhbmNlLCBuZXdfaW5zdGFuY2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBkb19tb2RpZnlfbm90aWZpY2F0aW9uKGNvbmZpZ19tb2RlbCwgbmV3X2luc3RhbmNlKQotICAgICAgICAgICAgICAgICAgICBkZWwgb2xkX2luc3RhbmNlc1tpbmRleF0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29uZmlnX2RvX2luc2VydChjb25maWdfbW9kZWwsIG5ld19pbnN0YW5jZSkKLSAgICAgICAgICAgICAgICBkb19tb2RpZnlfbm90aWZpY2F0aW9uKGNvbmZpZ19tb2RlbCwgbmV3X2luc3RhbmNlKQotICAgICAgICAKLSAgICAgICAgZm9yIGRlbGV0ZWRfaW5zdGFuY2UgaW4gb2xkX2luc3RhbmNlczoKLSAgICAgICAgICAgIGNvbmZpZ19kb19kZWxldGUoY29uZmlnX21vZGVsLCBkZWxldGVkX2luc3RhbmNlKQotICAgICAgICAgICAgZG9fZGVsZXRlX25vdGlmaWNhdGlvbihjb25maWdfbW9kZWwsIGRlbGV0ZWRfaW5zdGFuY2UpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VyaWFsaXplZF9uZXdfaW5zdGFuY2VzID0gc2VyaWFsaXplcnMuc2VyaWFsaXplKCJqc29uIiwgbmV3X2luc3RhbmNlcykKLSAgICAgICAgICAgIGN1cnJlbnRfY29uZmlnX2luc3RhbmNlc1tjb25maWdfbW9kZWwuX19uYW1lX19dID0ganNvbi5sb2FkcyhzZXJpYWxpemVkX25ld19pbnN0YW5jZXMpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHByaW50ICdGYWlsZWQgdG8gc2VyaWFsaXplJywgY29uZmlnX21vZGVsLl9fbmFtZV9fCi0gICAgICAgIAotICAgIGNvbmZpZ193cml0ZV9zdGF0ZSh7J2luc3RhbmNlcyc6IGN1cnJlbnRfY29uZmlnX2luc3RhbmNlc30pCi0KLWRlZiBjb25maWdfcG9zdF9zYXZlX2hhbmRsZXIoc2VuZGVyLCAqKmt3YXJncyk6Ci0gICAgaWYgbm90IGt3YXJnc1sncmF3J10gYW5kIChrd2FyZ3NbJ3VzaW5nJ10gPT0gImRlZmF1bHQiKSBhbmQgc2VuZGVyIGluIGNvbmZpZ19tb2RlbHM6Ci0gICAgICAgIGNvbmZpZ19jaGVja19zdGF0ZSgpCi0gICAgCi1kZWYgY29uZmlnX3Bvc3RfZGVsZXRlX2hhbmRsZXIoc2VuZGVyLCAqKmt3YXJncyk6Ci0gICAgaWYga3dhcmdzWyd1c2luZyddID09ICdkZWZhdWx0JyBhbmQgc2VuZGVyIGluIGNvbmZpZ19tb2RlbHM6Ci0gICAgICAgIGNvbmZpZ19jaGVja19zdGF0ZSgpCi0KLWRlZiBpc19jb25maWdfbW9kZWwobW9kZWwpOgotICAgIHJldHVybiBtb2RlbCBpbiBjb25maWdfbW9kZWxzCi0gCi1kZWYgaW5pdF9jb25maWcoKToKLSAgICBwb3N0X3NhdmUuY29ubmVjdChjb25maWdfcG9zdF9zYXZlX2hhbmRsZXIpCi0gICAgcG9zdF9kZWxldGUuY29ubmVjdChjb25maWdfcG9zdF9kZWxldGVfaGFuZGxlcikKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vcmVzdC9qc29udmlldy5weSBiL2NsaS9zZG5jb24vcmVzdC9qc29udmlldy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjFjN2MzOS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3Jlc3QvanNvbnZpZXcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlRm9yYmlkZGVuLCBIdHRwUmVzcG9uc2UKLWZyb20gZGphbmdvLnV0aWxzLnNpbXBsZWpzb24gaW1wb3J0IEpTT05FbmNvZGVyCi1mcm9tIGRqYW5nby51dGlscy5lbmNvZGluZyBpbXBvcnQgZm9yY2VfdW5pY29kZQotZnJvbSBkamFuZ28uZGIubW9kZWxzLmJhc2UgaW1wb3J0IE1vZGVsQmFzZQotZnJvbSBkamFuZ28udXRpbHMuc2ltcGxlanNvbiBpbXBvcnQgZHVtcHMKLQotY2xhc3MgSnNvblJlc3BvbnNlKEh0dHBSZXNwb25zZSk6Ci0gICAgIiIiQSBIdHRwUmVzcG9uc2Ugc3ViY2xhc3MgdGhhdCBjcmVhdGVzIHByb3Blcmx5IGVuY29kZWQgSlNPTiByZXNwb25zZSIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbnRlbnQ9JycsIGpzb25fb3B0cz17fSwKLSAgICAgICAgICAgICAgICAgbWltZXR5cGU9ImFwcGxpY2F0aW9uL2pzb24iLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAKLSAgICAgICAgaWYgY29udGVudCBpcyBOb25lOiBjb250ZW50ID0gW10KLSAgICAgICAgY29udGVudCA9IHNlcmlhbGl6ZV90b19qc29uKGNvbnRlbnQsKipqc29uX29wdHMpCi0gICAgICAgIHN1cGVyKEpzb25SZXNwb25zZSxzZWxmKS5fX2luaXRfXyhjb250ZW50LG1pbWV0eXBlLCphcmdzLCoqa3dhcmdzKQotCi1jbGFzcyBKc29uRW5jb2RlcihKU09ORW5jb2Rlcik6Ci0gICAgIiIiQSBKU09ORW5jb2RlciBzdWJjbGFzcyB0aGF0IGFsc28gaGFuZGxlcyBxdWVyeXNldHMgYW5kIG1vZGVscyBvYmplY3RzLiIiIgotCi0gICAgZGVmIGRlZmF1bHQoc2VsZixvKToKLSAgICAgICAgIyB0aGlzIGhhbmRsZXMgcXVlcnlzZXRzIGFuZCBvdGhlciBpdGVyYWJsZSB0eXBlcwotICAgICAgICB0cnk6IGl0ZXJhYmxlID0gaXRlcihvKQotICAgICAgICBleGNlcHQgVHlwZUVycm9yOiBwYXNzCi0gICAgICAgIGVsc2U6IHJldHVybiBsaXN0KGl0ZXJhYmxlKQotIAotICAgICAgICAjIHRoaXMgaGFuZGxlcnMgTW9kZWxzIG9iamVjdHMKLSAgICAgICAgdHJ5OiBpc2luc3RhbmNlKG8uX19jbGFzc19fLE1vZGVsQmFzZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjogcGFzcwotICAgICAgICBlbHNlOiByZXR1cm4gZm9yY2VfdW5pY29kZShvKQotIAotICAgICAgICAjIGRlbGVnYXRlIHRoZSByZXN0IHRvIEpTT05FbmNvZGVyCi0gICAgICAgIHJldHVybiBzdXBlcihKc29uRW5jb2RlcixzZWxmKS5kZWZhdWx0KG9iaikKLSAKLWRlZiBzZXJpYWxpemVfdG9fanNvbihvYmosKmFyZ3MsKiprd2FyZ3MpOgotICAgICIiIkEgd3JhcHBlciBmb3IgZHVtcHMgd2l0aCBkZWZhdWx0cyBhczoKLSAgICAgICAgZW5zdXJlX2FzY2lpPUZhbHNlCi0gICAgICAgIGNscz1Kc29uRW5jb2RlciIiIgotIAotICAgIGt3YXJnc1snZW5zdXJlX2FzY2lpJ10gPSBrd2FyZ3MuZ2V0KCdlbnN1cmVfYXNjaWknLCBGYWxzZSkKLSAgICBrd2FyZ3NbJ2NscyddID0ga3dhcmdzLmdldCgnY2xzJywgSnNvbkVuY29kZXIpCi0gICAgcmV0dXJuIGR1bXBzKG9iaiwqYXJncywqKmt3YXJncykKLQotZGVmIGFzX2t3YXJncyhxZGljdCk6Ci0gICAga3dhcmdzID0ge30KLSAgICBmb3Igayx2IGluIHFkaWN0Lml0ZW1zKCk6Ci0gICAgICAgIGt3YXJnc1tzdHIoayldID0gdgotICAgIHJldHVybiBrd2FyZ3MKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vcmVzdC9tb2RlbHMucHkgYi9jbGkvc2RuY29uL3Jlc3QvbW9kZWxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0MzZhOTBlLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vcmVzdC9tb2RlbHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1vZGVscwotZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLm1vZGVscyBpbXBvcnQgVXNlcgotIyBDcmVhdGUgeW91ciBtb2RlbHMgaGVyZS4KLQotY2xhc3MgVXNlckRhdGEobW9kZWxzLk1vZGVsKToKLSAgICB1c2VyID0gbW9kZWxzLkZvcmVpZ25LZXkoVXNlciwgbnVsbD1UcnVlKQotICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU2KQotICAgIGNvbnRlbnRfdHlwZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMjgpCi0gICAgYmluYXJ5ID0gbW9kZWxzLkJvb2xlYW5GaWVsZCgpCi0gICAgZGF0YSA9IG1vZGVscy5UZXh0RmllbGQoKQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9yZXN0L3BvbGwucHkgYi9jbGkvc2RuY29uL3Jlc3QvcG9sbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmZkMDU3My4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3Jlc3QvcG9sbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0iIiJQb2xsaW5nIGludGVyZmFjZSBmb3IgdGhlIHBvbGxpbmcgc2VydmljZXMgc2V0dXAgYnkgdGhlIHJlc3QgQVBJIiIiCi0KLWltcG9ydCBzeXMsIG9zLCB0aW1lLCByYW5kb20sIGpzb24KLQotZnJvbSBwYWNrZXRzdHJlYW1lciBpbXBvcnQgUGFja2V0U3RyZWFtZXIKLWZyb20gcGFja2V0c3RyZWFtZXIudHR5cGVzIGltcG9ydCAqCi0KLWZyb20gdGhyaWZ0IGltcG9ydCBUaHJpZnQKLWZyb20gdGhyaWZ0LnRyYW5zcG9ydCBpbXBvcnQgVFNvY2tldAotZnJvbSB0aHJpZnQudHJhbnNwb3J0IGltcG9ydCBUVHJhbnNwb3J0Ci1mcm9tIHRocmlmdC5wcm90b2NvbCBpbXBvcnQgVEJpbmFyeVByb3RvY29sCi0KLWRlZiBzYW1wbGVfZnVuYyhyZXF1ZXN0LCBlbnZpcm9uKToKLSAgICBkYXRhID0gewotICAgICAgICAncGlkJzogb3MuZ2V0cGlkKCksCi0gICAgICAgICdyYW5kb20nOiBpbnQocmFuZG9tLnJhbmRvbSgpKjEwMCksCi0gICAgfQotCi0gICAgcmV0dXJuIHsKLSAgICAgICAgJ3N0YXR1cyc6ICAgICcyMDAgT0snLAotICAgICAgICAnYm9keSc6ICAgICAganNvbi5kdW1wcyhkYXRhKSwKLSAgICAgICAgJ2hlYWRlcnMnOiAgIFsoJ0NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyldLCAjIGxpc3Qgb2YgdHVwbGVzCi0gICAgfQotCi1kZWYgZ2V0UGFja2V0c19mdW5jKHJlcXVlc3QsIGVudmlyb24sIHNlc3Npb25pZCk6Ci0gICAgcmV0RGF0YSA9IHt9Ci0KLSAgICB0cnk6Ci0gICAgICAgICMgTWFrZSBzb2NrZXQKLSAgICAgICAgdHJhbnNwb3J0ID0gVFNvY2tldC5UU29ja2V0KCdsb2NhbGhvc3QnLCA5MDkwKQotICAgICAgICAjIEJ1ZmZlcmluZyBpcyBjcml0aWNhbC4gUmF3IHNvY2tldHMgYXJlIHZlcnkgc2xvdwotICAgICAgICB0cmFuc3BvcnQgPSBUVHJhbnNwb3J0LlRGcmFtZWRUcmFuc3BvcnQodHJhbnNwb3J0KQotICAgICAgICAjIFdyYXAgaW4gYSBwcm90b2NvbAotICAgICAgICBwcm90b2NvbCA9IFRCaW5hcnlQcm90b2NvbC5UQmluYXJ5UHJvdG9jb2wodHJhbnNwb3J0KQotICAgICAgICAjIENyZWF0ZSBhIGNsaWVudCB0byB1c2UgdGhlIHByb3RvY29sIGVuY29kZXIKLSAgICAgICAgY2xpZW50ID0gUGFja2V0U3RyZWFtZXIuQ2xpZW50KHByb3RvY29sKQotICAgICAgICAjIENvbm5lY3QhCi0gICAgICAgIHRyYW5zcG9ydC5vcGVuKCkKLQotICAgICAgICBwYWNrZXRzID0gY2xpZW50LmdldFBhY2tldHMoc2Vzc2lvbmlkKQotCi0gICAgICAgICMgQ2xvc2UhCi0gICAgICAgIHRyYW5zcG9ydC5jbG9zZSgpCi0KLSAgICAgICAgcmV0RGF0YSA9IHsKLSAgICAgICAgICAnc3RhdHVzJzogICAgJzIwMCBPSycsCi0gICAgICAgICAgJ2JvZHknOiAgICAgICBqc29uLmR1bXBzKHBhY2tldHMpLAotICAgICAgICAgICdoZWFkZXJzJzogICAgWygnQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKV0sICMgbGlzdCBvZiB0dXBsZXMKLSAgICAgICAgfQotCi0gICAgZXhjZXB0IFRocmlmdC5URXhjZXB0aW9uLCB0eDoKLSAgICAgICAgcmV0RGF0YSA9IHsKLSAgICAgICAgICAnc3RhdHVzJzogICAgJzUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3InLAotICAgICAgICAgICdib2R5JzogICAgICAnZXJyb3I6ICVzJyV0eC5tZXNzYWdlLAotICAgICAgICAgICdoZWFkZXJzJzogICBbKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXSwgIyBsaXN0IG9mIHR1cGxlcwotICAgICAgICB9Ci0KLSAgICByZXR1cm4gcmV0RGF0YQotCi0jIFRoZSBwb2xsaW5nIHNlcnZpY2UKLSMgICBUaGUgc2VydmljZSBpcyBkcml2ZW4gYnkgdGhlIHVybHBhdHRlcm5zIHR1cGxlcyB0aGF0IGxpc3QgdGhlIHNwZWNpZmljIGZ1bmN0aW9uCi0jICAgdG8gdXNlIGZvciBhIG1hdGNoaW5nIHBhdHRlcm4gaW4gVVJMLiBUaGUgcGF0dGVybiBzaG91bGQgbm90IGluY2x1ZGUgaW5pdGlhbCAnXi9wb2xsJy4KLSMgICBGb3IgRXhhbXBsZToKLSMgICAgIChyJ14vc2FtcGxlJywgc2FtcGxlX2Z1bmMpCi0jZnJvbSBzZG5jb24ucmVzdC5wb2xsIGltcG9ydCBzYW1wbGVfZnVuYwotdXJscGF0dGVybnMgPSBbCi0gICAgKHInXi9wYWNrZXRzLyg/UDxzZXNzaW9uaWQ+W0EtWmEtejAtOV8uXC1dKykvPyQnLCBnZXRQYWNrZXRzX2Z1bmMpLAotICAgIChyJ14vc2FtcGxlJywgc2FtcGxlX2Z1bmMpCi1dCi0KLWltcG9ydCByZSwgd3NnaXJlZi51dGlsCi0KLWRlZiBjb21waWxlX3BhdHRlcm5zKHVybHBhdHRlcm5zKToKLSAgICByZXR1cm4gbWFwKGxhbWJkYSBwYXQ6IChyZS5jb21waWxlKHBhdFswXSksIHBhdFsxXSksIHVybHBhdHRlcm5zKQotCi1kZWYgbWFpbihlbnZpcm9uLCBzdGFydF9yZXNwb25zZSk6Ci0gICAgcGF0dGVybnMgPSBjb21waWxlX3BhdHRlcm5zKHVybHBhdHRlcm5zKQotICAgIHJlcXVlc3QgPSBlbnZpcm9uWydQQVRIX0lORk8nXQotICAgIHJlc3BvbnNlID0gTm9uZQotICAgIHN0YXR1cywgYm9keSA9ICc0MDQgTm90IEZvdW5kJywgJ1NvcnJ5LCB0aGUgcmVxdWVzdGVkIHJlc291cmNlICIlcyIgd2FzIG5vdCBmb3VuZC4iJyAlIHJlcXVlc3QKLSAgICBoZWFkZXJzID0gW10KLSAgICBmb3IgKHBhdCwgZnVuYykgaW4gcGF0dGVybnM6Ci0gICAgICAgIG0gPSBwYXQubWF0Y2gocmVxdWVzdCkKLSAgICAgICAgaWYgbToKLSAgICAgICAgICAgIGFyZ3MgPSBtLmdyb3VwcygpCi0gICAgICAgICAgICBpZiBhcmdzOgotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gZnVuYyhyZXF1ZXN0LCBlbnZpcm9uLCAqYXJncykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBmdW5jKHJlcXVlc3QsIGVudmlyb24pCi0KLSAgICAgICAgICAgIHN0YXR1cywgYm9keSA9IHJlc3BvbnNlWydzdGF0dXMnXSwgcmVzcG9uc2VbJ2JvZHknXQotICAgICAgICAgICAgaWYgJ2hlYWRlcnMnIGluIHJlc3BvbnNlOgotICAgICAgICAgICAgICAgIGhlYWRlcnMuZXh0ZW5kKHJlc3BvbnNlWydoZWFkZXJzJ10pCi0gICAgICAgICAgICBicmVhawotICAgIGlmICdDYWNoZS1Db250cm9sJyBub3QgaW4gaGVhZGVyczoKLSAgICAgICAgaGVhZGVycy5hcHBlbmQoKCdDYWNoZS1Db250cm9sJywgJ25vLWNhY2hlJykpCi0gICAgaWYgJ0NvbnRlbnQtdHlwZScgbm90IGluIGhlYWRlcnM6Ci0gICAgICAgICBoZWFkZXJzLmFwcGVuZCgoJ0NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluJykpCi0gICAgaWYgJ0NvbnRlbnQtTGVuZ3RoJyBub3QgaW4gaGVhZGVyczoKLSAgICAgICAgIGhlYWRlcnMuYXBwZW5kKCgnQ29udGVudC1MZW5ndGgnLCBzdHIobGVuKGJvZHkpKSkpCi0gICAgc3RhcnRfcmVzcG9uc2Uoc3RhdHVzLCBoZWFkZXJzKQotICAgIHJldHVybiBbYm9keV0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBkZWYgc3RhcnRfcmVzcG9uc2UoeCwgeSk6Ci0gICAgICAgIHByaW50ICdTdGF0dXM6JywgeAotICAgICAgICBwcmludCAnSGVhZGVyczonLCB5Ci0KLSAgICBwcmludCAnU2FtcGxlJywgc2FtcGxlX2Z1bmMoTm9uZSwgTm9uZSkKLSAgICBwcmludCAnUmVzcG9uc2U6JywgbWFpbih7J1BBVEhfSU5GTyc6Jy9zYW1wbGUvMTAwJ30sIHN0YXJ0X3Jlc3BvbnNlKQotICAgIHByaW50ICdSZXNwb25zZTonLCBtYWluKHsnUEFUSF9JTkZPJzonL3hzYW1wbGUvMTAwJ30sIHN0YXJ0X3Jlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9yZXN0L3Rlc3RzLnB5IGIvY2xpL3NkbmNvbi9yZXN0L3Rlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3NDMwODMxLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vcmVzdC90ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDY0OCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotZnJvbSBkamFuZ28uY29yZS52YWxpZGF0b3JzIGltcG9ydCB2YWxpZGF0ZV9pcHY0X2FkZHJlc3MsIE1pblZhbHVlVmFsaWRhdG9yCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi1mcm9tIGRqYW5nby5mb3JtcyBpbXBvcnQgVmFsaWRhdGlvbkVycm9yCi1mcm9tIGRqYW5nby50ZXN0IGltcG9ydCBUZXN0Q2FzZSwgQ2xpZW50Ci1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgc2ltcGxlanNvbgotaW1wb3J0IGNvcHkKLWltcG9ydCB1cmxsaWIKLWltcG9ydCB1cmxsaWIyCi1mcm9tIHNkbmNvbi5yZXN0LnZhbGlkYXRvcnMgaW1wb3J0IHZhbGlkYXRlX21hY19hZGRyZXNzLCBSYW5nZVZhbGlkYXRvciwgQ2hvaWNlc1ZhbGlkYXRvcgotZnJvbSBzZG5jb24ucmVzdC5jb25maWcgaW1wb3J0IGFkZF9jb25maWdfaGFuZGxlciwgcmVzZXRfbGFzdF9jb25maWdfc3RhdGUsIG1vZGVsX2luc3RhbmNlc19lcXVhbAotCi0jIFRoZXNlIGFyZSB0aGUgdGVzdCBtb2RlbHMgdXNlZCBpbiB0aGUgdW5pdCB0ZXN0cwotIyBXaGVuIHJ1bm5pbmcgdGhlIHVuaXQgdGVzdHMsIHN5bmNkYiBsb29rcyBmb3IgbW9kZWwgZGVmaW5pdGlvbnMKLSMgaW4gdGhpcyBmaWxlIChpLmUuIHRlc3RzLnB5KSwgc28gdGhlc2Ugd2lsbCBiZSBpbiB0aGUgY29tcGxldGUKLSMgbGlzdCBvZiBtb2RlbHMgdXNlZCBieSB0aGUgUkVTVCBjb2RlCi0KLWNsYXNzIFJlc3RUZXN0TW9kZWwobW9kZWxzLk1vZGVsKToKLSAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTMyLCBwcmltYXJ5X2tleT1UcnVlKQotICAgIGVuYWJsZWQgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKCkKLSAgICBtaW4gPSBtb2RlbHMuSW50ZWdlckZpZWxkKHZhbGlkYXRvcnM9W01pblZhbHVlVmFsaWRhdG9yKDEwMCldKQotICAgIHJhbmdlID0gbW9kZWxzLkludGVnZXJGaWVsZCh2YWxpZGF0b3JzPVtSYW5nZVZhbGlkYXRvcigxMCwxMDApXSkKLSAgICBpbnRlcm5hbCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNCxkZWZhdWx0PSdmb28nKQotICAgIGlwID0gbW9kZWxzLklQQWRkcmVzc0ZpZWxkKHZhbGlkYXRvcnM9W3ZhbGlkYXRlX2lwdjRfYWRkcmVzc10pCi0gICAgbWFjID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTIwLCB2YWxpZGF0b3JzPVt2YWxpZGF0ZV9tYWNfYWRkcmVzc10pCi0gICAgcmF0aW8gPSBtb2RlbHMuRmxvYXRGaWVsZCgpCi0gICAgQ09MT1JfQ0hPSUNFUyA9ICgKLSAgICAgICAgKCdyZWQnLCAnRGFyayBSZWQnKSwKLSAgICAgICAgKCdibHVlJywgJ05hdnkgQmx1ZScpLAotICAgICAgICAoJ2dyZWVuJywgJ0dyZWVuJyksCi0gICAgICAgICgnd2hpdGUnLCAnSXZvcnkgV2hpdGUnKQotICAgICkKLSAgICBjb2xvciA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yMCwgdmFsaWRhdG9ycz1bQ2hvaWNlc1ZhbGlkYXRvcihDT0xPUl9DSE9JQ0VTKV0pCi0gICAgCi0gICAgZGVmIGNsZWFuKHNlbGYpOgotICAgICAgICAjIFRoaXMgaXMganVzdCBhIGR1bW15IGNoZWNrIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBUeXBpY2FsbHkgeW91J2Qgb25seQotICAgICAgICAjIHVzZSB0aGUgbW9kZWwtbGV2ZWwgY2xlYW4gZnVuY3Rpb24gZm9yIHZhbGlkYXRpbmcgdGhpbmdzIGFjcm9zcyBtdWx0aXBsZSBmaWVsZHMKLSAgICAgICAgaWYgc2VsZi5yYW5nZSA9PSA1MDoKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiRHVtbXkgbW9kZWwtbGV2ZWwgdmFsaWRhdGlvbiBmYWlsdXJlLiIpCi0gICAgCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdyZXN0LXRlc3QnCi0gICAgICAgIEZJRUxEX0lORk8gPSAoeyduYW1lJzonaW50ZXJuYWwnLCAncHJpdmF0ZSc6IFRydWV9LCkKLQotY2xhc3MgUmVzdFRlc3RUYWdNb2RlbChtb2RlbHMuTW9kZWwpOgotICAgIHJlc3RfdGVzdCA9IG1vZGVscy5Gb3JlaWduS2V5KFJlc3RUZXN0TW9kZWwpCi0gICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0zMikKLSAgICB2YWx1ZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTYpCi0gICAgCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdyZXN0LXRlc3QtdGFnJwotICAgICAgICBGSUVMRF9JTkZPID0gKHsnbmFtZSc6J3Jlc3RfdGVzdCcsICdyZXN0X25hbWUnOidyZXN0LXRlc3QnfSwpCi0gICAgICAgIAotY2xhc3MgUmVzdFRlc3RSZW5hbWVkRmllbGRNb2RlbChtb2RlbHMuTW9kZWwpOgotICAgIHRlc3QgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTYscHJpbWFyeV9rZXk9VHJ1ZSkKLSAgICAKLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3Jlc3QtdGVzdC1yZW5hbWVkJwotICAgICAgICBGSUVMRF9JTkZPID0gKHsnbmFtZSc6J3Rlc3QnLCAncmVzdF9uYW1lJzoncmVuYW1lZCd9LCkKLSAgICAgICAgCi1jbGFzcyBSZXN0RGlzYWJsZWRNb2RlbChtb2RlbHMuTW9kZWwpOgotICAgIGR1bW15ID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTMyKQotCi1jbGFzcyBSZXN0Q29tcG91bmRLZXlNb2RlbChtb2RlbHMuTW9kZWwpOgotICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MzIpCi0gICAgaW5kZXggPSBtb2RlbHMuSW50ZWdlckZpZWxkKCkKLSAgICBleHRyYSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0zMiwgZGVmYXVsdD0nZHVtbXknKQotICAgIAotICAgIGNsYXNzIENhc3NhbmRyYVNldHRpbmdzOgotICAgICAgICBDT01QT1VORF9LRVlfRklFTERTID0gWyduYW1lJywgJ2luZGV4J10KLSAgICAgICAgCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdyZXN0LWNvbXBvdW5kLWtleScKLSAgICAgICAgCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUaGVzZSBhcmUgc29tZSBjbGllbnQtc2lkZSB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZ2V0dGluZywgcHV0dGluZywgZGVsZXRpbmcKLSMgZGF0YSB1c2luZyB0aGUgUkVTVCBBUEkKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWRlZiBjb25zdHJ1Y3RfcmVzdF91cmwocGF0aCwgcXVlcnlfcGFyYW1zPU5vbmUpOgotICAgIHVybCA9ICdodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzdC92MS8lcy8nICUgcGF0aAotICAgIGlmIHF1ZXJ5X3BhcmFtczoKLSAgICAgICAgdXJsICs9ICc/JwotICAgICAgICB1cmwgKz0gdXJsbGliLnVybGVuY29kZShxdWVyeV9wYXJhbXMpCi0gICAgcmV0dXJuIHVybAotCi1kZWYgZ2V0X3Jlc3RfZGF0YSh0eXBlLCBxdWVyeV9wYXJhbV9kaWN0PU5vbmUpOgotICAgIHVybCA9IGNvbnN0cnVjdF9yZXN0X3VybCh0eXBlLCBxdWVyeV9wYXJhbV9kaWN0KQotICAgIHJlcXVlc3QgPSB1cmxsaWIyLlJlcXVlc3QodXJsKQotICAgIHJlc3BvbnNlID0gdXJsbGliMi51cmxvcGVuKHJlcXVlc3QpCi0gICAgcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlLnJlYWQoKQotICAgIG9iaiA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2VfdGV4dCkKLSAgICByZXR1cm4gb2JqCi0KLWRlZiBwdXRfcmVzdF9kYXRhKG9iaiwgdHlwZSwgcXVlcnlfcGFyYW1fZGljdD1Ob25lKToKLSAgICB1cmwgPSBjb25zdHJ1Y3RfcmVzdF91cmwodHlwZSwgcXVlcnlfcGFyYW1fZGljdCkKLSAgICBwb3N0X2RhdGEgPSBzaW1wbGVqc29uLmR1bXBzKG9iaikKLSAgICByZXF1ZXN0ID0gdXJsbGliMi5SZXF1ZXN0KHVybCwgcG9zdF9kYXRhLCB7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSkKLSAgICByZXF1ZXN0LmdldF9tZXRob2QgPSBsYW1iZGE6ICdQVVQnCi0gICAgcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKLSAgICByZXR1cm4gcmVzcG9uc2UucmVhZCgpCi0KLWRlZiBkZWxldGVfcmVzdF9kYXRhKHR5cGUsIHF1ZXJ5X3BhcmFtX2RpY3Q9Tm9uZSk6Ci0gICAgdXJsID0gY29uc3RydWN0X3Jlc3RfdXJsKHR5cGUsIHF1ZXJ5X3BhcmFtX2RpY3QpCi0gICAgcmVxdWVzdCA9IHVybGxpYjIuUmVxdWVzdCh1cmwpCi0gICAgcmVxdWVzdC5nZXRfbWV0aG9kID0gbGFtYmRhOiAnREVMRVRFJwotICAgIHJlc3BvbnNlID0gdXJsbGliMi51cmxvcGVuKHJlcXVlc3QpCi0gICAgcmV0dXJuIHJlc3BvbnNlLnJlYWQoKQotCi1kZWYgdGVzdF9jb25zdHJ1Y3RfcmVzdF91cmwocGF0aCwgcXVlcnlfcGFyYW1zPU5vbmUpOgotICAgIHVybCA9ICcvcmVzdC92MS8lcy8nICUgcGF0aAotICAgIGlmIHF1ZXJ5X3BhcmFtczoKLSAgICAgICAgdXJsICs9ICc/JwotICAgICAgICB1cmwgKz0gdXJsbGliLnVybGVuY29kZShxdWVyeV9wYXJhbXMpCi0gICAgcmV0dXJuIHVybAotCi1kZWYgdGVzdF9jb25zdHJ1Y3RfcmVzdF9tb2RlbF91cmwocGF0aCwgcXVlcnlfcGFyYW1zPU5vbmUpOgotICAgIHJldHVybiB0ZXN0X2NvbnN0cnVjdF9yZXN0X3VybCgnbW9kZWwvJyArIHBhdGgsIHF1ZXJ5X3BhcmFtcykKLSAgICAKLWRlZiB0ZXN0X2dldF9yZXN0X21vZGVsX2RhdGEodHlwZSwgcXVlcnlfcGFyYW1zPU5vbmUpOgotICAgIHVybCA9IHRlc3RfY29uc3RydWN0X3Jlc3RfbW9kZWxfdXJsKHR5cGUscXVlcnlfcGFyYW1zKQotICAgIGMgPSBDbGllbnQoKQotICAgIHJlc3BvbnNlID0gYy5nZXQodXJsKQotICAgIHJldHVybiByZXNwb25zZQotCi1kZWYgdGVzdF9wdXRfcmVzdF9tb2RlbF9kYXRhKG9iaiwgdHlwZSwgcXVlcnlfcGFyYW1zPU5vbmUpOgotICAgIHVybCA9IHRlc3RfY29uc3RydWN0X3Jlc3RfbW9kZWxfdXJsKHR5cGUsIHF1ZXJ5X3BhcmFtcykKLSAgICBkYXRhID0gc2ltcGxlanNvbi5kdW1wcyhvYmopCi0gICAgYyA9IENsaWVudCgpCi0gICAgcmVzcG9uc2UgPSBjLnB1dCh1cmwgLCBkYXRhLCAnYXBwbGljYXRpb24vanNvbicpCi0gICAgcmV0dXJuIHJlc3BvbnNlCi0KLWRlZiB0ZXN0X2RlbGV0ZV9yZXN0X21vZGVsX2RhdGEodHlwZSwgcXVlcnlfcGFyYW1zPU5vbmUpOgotICAgIHVybCA9IHRlc3RfY29uc3RydWN0X3Jlc3RfbW9kZWxfdXJsKHR5cGUsIHF1ZXJ5X3BhcmFtcykKLSAgICBjID0gQ2xpZW50KCkKLSAgICByZXNwb25zZSA9IGMuZGVsZXRlKHVybCkKLSAgICByZXR1cm4gcmVzcG9uc2UKLQotZGVmIGdldF9zb3J0ZWRfbGlzdChkYXRhX2xpc3QsIGtleV9uYW1lLCBjcmVhdGVfY29weT1GYWxzZSk6Ci0gICAgaWYgY3JlYXRlX2NvcHk6Ci0gICAgICAgIGRhdGFfbGlzdCA9IGNvcHkuZGVlcGNvcHkoZGF0YV9saXN0KQotICAgIGlmIGtleV9uYW1lOgotICAgICAgICBrZXlfZnVuYyA9IGxhbWJkYSBpdGVtOiBpdGVtLmdldChrZXlfbmFtZSkKLSAgICBlbHNlOgotICAgICAgICBrZXlfZnVuYyA9IGxhbWJkYSBpdGVtOiBpdGVtWzBdCi0gICAgZGF0YV9saXN0LnNvcnQoa2V5ID0ga2V5X2Z1bmMpCi0gICAgcmV0dXJuIGRhdGFfbGlzdAotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUaGUgYWN0dWFsIHVuaXQgdGVzdCBjbGFzc2VzCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1jbGFzcyBCYXNpY0Z1bmN0aW9uYWxpdHlUZXN0KFRlc3RDYXNlKToKLSAgICAKLSAgICBSRVNUX1RFU1RfREFUQSA9IFsKLSAgICAgICAgeyduYW1lJzonZm9vYmFyJywnZW5hYmxlZCc6VHJ1ZSwnbWluJzoxMDAsJ3JhbmdlJzozMCwnaXAnOicxOTIuMTY4LjEuMScsJ21hYyc6JzAwOjAxOjIyOjM0OjU2OmFmJywncmF0aW8nOjQuNTYsJ2NvbG9yJzoncmVkJ30sCi0gICAgICAgIHsnbmFtZSc6J3NkbnBsYXRmb3JtJywnZW5hYmxlZCc6RmFsc2UsJ21pbic6NDAwLCdyYW5nZSc6NDUsJ2lwJzonMTkyLjE2OC4xLjInLCdtYWMnOicwMDowMToyMjpDQzo1NjpERCcsJ3JhdGlvJzo4Ljc2LCdjb2xvcic6J2dyZWVuJ30sCi0gICAgICAgIHsnbmFtZSc6J2Zvb2JhcjInLCdlbmFibGVkJzpUcnVlLCdtaW4nOjEwMDAsJ3JhbmdlJzoxMDAsJ2lwJzonMTkyLjE2OC4xLjMnLCdtYWMnOicwMDowMToyMjozNDo1NjphZicsJ3JhdGlvJzoxLCdjb2xvcic6J3doaXRlJ30sCi0gICAgXQotICAgIAotICAgIFJFU1RfVEVTVF9UQUdfREFUQSA9IFsKLSAgICAgICAgeydpZCc6JzEnLCdyZXN0LXRlc3QnOidmb29iYXInLCduYW1lJzonb25lJywndmFsdWUnOid0ZXN0aXQnfSwKLSAgICAgICAgeydpZCc6JzInLCdyZXN0LXRlc3QnOidmb29iYXInLCduYW1lJzondHdvJywndmFsdWUnOid0ZXN0Mid9LAotICAgICAgICB7J2lkJzonMycsJ3Jlc3QtdGVzdCc6J3NkbnBsYXRmb3JtJywnbmFtZSc6J3RocmVlJywndmFsdWUnOid0aHJlZSd9LAotICAgIF0KLSAgICAKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgICMgQ3JlYXRlIHRoZSBSZXN0VGVzdE1vZGVsIGluc3RhbmNlcwotICAgICAgICByZXN0X3Rlc3RfbGlzdCA9IFtdCi0gICAgICAgIGZvciBydGQgaW4gc2VsZi5SRVNUX1RFU1RfREFUQToKLSAgICAgICAgICAgIHJ0ID0gUmVzdFRlc3RNb2RlbCgqKnJ0ZCkKLSAgICAgICAgICAgIHJ0LnNhdmUoKQotICAgICAgICAgICAgcmVzdF90ZXN0X2xpc3QuYXBwZW5kKHJ0KQotICAgICAgICAKLSAgICAgICAgIyBDcmVhdGUgdGhlIFJlc3RUZXN0VGFnTW9kZWwgaW5zdGFuY2VzCi0gICAgICAgIGZvciBydHRkIGluIHNlbGYuUkVTVF9URVNUX1RBR19EQVRBOgotICAgICAgICAgICAgcnR0ZF9pbml0ID0gcnR0ZC5jb3B5KCkKLSAgICAgICAgICAgIGZvciBydCBpbiByZXN0X3Rlc3RfbGlzdDoKLSAgICAgICAgICAgICAgICBpZiBydC5uYW1lID09IHJ0dGRbJ3Jlc3QtdGVzdCddOgotICAgICAgICAgICAgICAgICAgICBkZWwgcnR0ZF9pbml0WydyZXN0LXRlc3QnXQotICAgICAgICAgICAgICAgICAgICBydHRkX2luaXRbJ3Jlc3RfdGVzdCddID0gcnQKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIGluaXRpYWxpemF0aW9uIGRhdGEgZm9yIFJFU1QgdW5pdCB0ZXN0cycpCi0gICAgICAgICAgICBydHQgPSBSZXN0VGVzdFRhZ01vZGVsKCoqcnR0ZF9pbml0KQotICAgICAgICAgICAgcnR0LnNhdmUoKQotICAgICAgICAKLSAgICAgICAgcnRyZiA9IFJlc3RUZXN0UmVuYW1lZEZpZWxkTW9kZWwodGVzdD0ndGVzdCcpCi0gICAgICAgIHJ0cmYuc2F2ZSgpCi0gICAgICAgIAotICAgICAgICAjIENyZWF0ZSB0aGUgUmVzdERpc2FibGVkTW9kZWwgaW5zdGFuY2UuIFdlJ3JlIG9ubHkgZ29pbmcgdG8gdGVzdCB0aGF0Ci0gICAgICAgICMgd2UgY2FuJ3QgYWNjZXNzIHRoaXMgbW9kZWwgdmlhIHRoZSBSRVNUIEFQSSwgc28gd2UgZG9uJ3QgbmVlZCB0byBrZWVwCi0gICAgICAgICMgdHJhY2sgb2YgdGhlIGRhdGEgdXNlZCBmb3IgdGhlIGluc3RhbmNlCi0gICAgICAgICNyZG0gPSBSZXN0RGlzYWJsZWRNb2RlbChkdW1teT0nZHVtbXknKQotICAgICAgICAjcmRtLnNhdmUoKQotICAgIAotICAgIGRlZiBjaGVja19yZXN0X3Rlc3RfZGF0YV9yZXN1bHQoc2VsZiwgZGF0YV9saXN0LCBleHBlY3RlZF9kYXRhX2xpc3QsIG1lc3NhZ2U9Tm9uZSk6Ci0gICAgICAgIGRhdGFfbGlzdCA9IGdldF9zb3J0ZWRfbGlzdChkYXRhX2xpc3QsICduYW1lJywgVHJ1ZSkKLSAgICAgICAgZXhwZWN0ZWRfZGF0YV9saXN0ID0gZ2V0X3NvcnRlZF9saXN0KGV4cGVjdGVkX2RhdGFfbGlzdCwgJ25hbWUnLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhX2xpc3QpLCBsZW4oZXhwZWN0ZWRfZGF0YV9saXN0KSwgbWVzc2FnZSkKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGRhdGFfbGlzdCkpOgotICAgICAgICAgICAgZGF0YSA9IGRhdGFfbGlzdFtpXQotICAgICAgICAgICAgZXhwZWN0ZWRfZGF0YSA9IGV4cGVjdGVkX2RhdGFfbGlzdFtpXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhWyduYW1lJ10sIGV4cGVjdGVkX2RhdGFbJ25hbWUnXSwgbWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YVsnZW5hYmxlZCddLCBleHBlY3RlZF9kYXRhWydlbmFibGVkJ10sIG1lc3NhZ2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFbJ21pbiddLCBleHBlY3RlZF9kYXRhWydtaW4nXSwgbWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YVsncmFuZ2UnXSwgZXhwZWN0ZWRfZGF0YVsncmFuZ2UnXSwgbWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YVsnaXAnXSwgZXhwZWN0ZWRfZGF0YVsnaXAnXSwgbWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YVsnbWFjJ10sIGV4cGVjdGVkX2RhdGFbJ21hYyddLCBtZXNzYWdlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChkYXRhWydyYXRpbyddLCBleHBlY3RlZF9kYXRhWydyYXRpbyddLCA3LCBtZXNzYWdlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhWydjb2xvciddLCBleHBlY3RlZF9kYXRhWydjb2xvciddLCBtZXNzYWdlKQotICAgIAotICAgIGRlZiBjaGVja19yZXN0X3Rlc3RfdGFnX2RhdGFfcmVzdWx0KHNlbGYsIGRhdGFfbGlzdCwgZXhwZWN0ZWRfZGF0YV9saXN0LCBtZXNzYWdlPU5vbmUpOgotICAgICAgICBkYXRhX2xpc3QgPSBnZXRfc29ydGVkX2xpc3QoZGF0YV9saXN0LCAnbmFtZScsIFRydWUpCi0gICAgICAgIGV4cGVjdGVkX2RhdGFfbGlzdCA9IGdldF9zb3J0ZWRfbGlzdChleHBlY3RlZF9kYXRhX2xpc3QsICduYW1lJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YV9saXN0KSwgbGVuKGV4cGVjdGVkX2RhdGFfbGlzdCksIG1lc3NhZ2UpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihkYXRhX2xpc3QpKToKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhX2xpc3RbaV0KLSAgICAgICAgICAgIGV4cGVjdGVkX2RhdGEgPSBleHBlY3RlZF9kYXRhX2xpc3RbaV0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGRhdGFbJ2lkJ10pLCBleHBlY3RlZF9kYXRhWydpZCddLCBtZXNzYWdlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhWydyZXN0LXRlc3QnXSwgZXhwZWN0ZWRfZGF0YVsncmVzdC10ZXN0J10sIG1lc3NhZ2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFbJ25hbWUnXSwgZXhwZWN0ZWRfZGF0YVsnbmFtZSddLCBtZXNzYWdlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhWyd2YWx1ZSddLCBleHBlY3RlZF9kYXRhWyd2YWx1ZSddLCBtZXNzYWdlKQotICAgICAgICAgICAgCi0gICAgZGVmIHRlc3RfcHV0X29uZShzZWxmKToKLSAgICAgICAgdGVzdF9wdXRfcmVzdF9tb2RlbF9kYXRhKHsnbWluJzoyMDAsJ2NvbG9yJzond2hpdGUnfSwgJ3Jlc3QtdGVzdC9mb29iYXInKQotICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfbW9kZWxfZGF0YSgncmVzdC10ZXN0JykKLSAgICAgICAgZGF0YSA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgcnRkX2NvcHkgPSBjb3B5LmRlZXBjb3B5KHNlbGYuUkVTVF9URVNUX0RBVEEpCi0gICAgICAgIHJ0ZF9jb3B5WzBdWydtaW4nXSA9IDIwMAotICAgICAgICBydGRfY29weVswXVsnY29sb3InXSA9ICd3aGl0ZScKLSAgICAgICAgc2VsZi5jaGVja19yZXN0X3Rlc3RfZGF0YV9yZXN1bHQoZGF0YSwgcnRkX2NvcHkpCi0gICAgICAgIAotICAgIGRlZiB0ZXN0X3B1dF9xdWVyeShzZWxmKToKLSAgICAgICAgdGVzdF9wdXRfcmVzdF9tb2RlbF9kYXRhKHsnbWluJzoyMDAsJ2NvbG9yJzond2hpdGUnfSwgJ3Jlc3QtdGVzdCcsIHsnZW5hYmxlZCc6VHJ1ZX0pCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9tb2RlbF9kYXRhKCdyZXN0LXRlc3QnKQotICAgICAgICBkYXRhID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZS5jb250ZW50KQotICAgICAgICBydGRfY29weSA9IGNvcHkuZGVlcGNvcHkoc2VsZi5SRVNUX1RFU1RfREFUQSkKLSAgICAgICAgZm9yIHJ0ZCBpbiBydGRfY29weToKLSAgICAgICAgICAgIGlmIHJ0ZFsnZW5hYmxlZCddOgotICAgICAgICAgICAgICAgIHJ0ZFsnbWluJ10gPSAyMDAKLSAgICAgICAgICAgICAgICBydGRbJ2NvbG9yJ10gPSAnd2hpdGUnCi0gICAgICAgIHNlbGYuY2hlY2tfcmVzdF90ZXN0X2RhdGFfcmVzdWx0KGRhdGEsIHJ0ZF9jb3B5KQotICAgIAotICAgIGRlZiB0ZXN0X2NyZWF0ZV9vbmUoc2VsZik6Ci0gICAgICAgIHJ0ZF9jb3B5ID0gY29weS5kZWVwY29weShzZWxmLlJFU1RfVEVTVF9EQVRBKQotICAgICAgICBjcmVhdGVfcnRkID0gcnRkX2NvcHlbMF0uY29weSgpCi0gICAgICAgIGNyZWF0ZV9ydGRbJ25hbWUnXSA9ICd0ZXN0LWNyZWF0ZScKLSAgICAgICAgcnRkX2NvcHkuYXBwZW5kKGNyZWF0ZV9ydGQpCi0gICAgICAgIHRlc3RfcHV0X3Jlc3RfbW9kZWxfZGF0YShjcmVhdGVfcnRkLCAncmVzdC10ZXN0JykKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X21vZGVsX2RhdGEoJ3Jlc3QtdGVzdCcpCi0gICAgICAgIGRhdGEgPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuY2hlY2tfcmVzdF90ZXN0X2RhdGFfcmVzdWx0KGRhdGEsIHJ0ZF9jb3B5KQotICAgIAotICAgIGRlZiB0ZXN0X2NyZWF0ZV9tYW55KHNlbGYpOgotICAgICAgICBydGRfY29weSA9IGNvcHkuZGVlcGNvcHkoc2VsZi5SRVNUX1RFU1RfREFUQSkKLSAgICAgICAgY3JlYXRlX3J0ZDEgPSBydGRfY29weVswXS5jb3B5KCkKLSAgICAgICAgY3JlYXRlX3J0ZDFbJ25hbWUnXSA9ICd0ZXN0LWNyZWF0ZTEnCi0gICAgICAgIGNyZWF0ZV9ydGQxWydtaW4nXSA9IDIwMDAKLSAgICAgICAgcnRkX2NvcHkuYXBwZW5kKGNyZWF0ZV9ydGQxKQotICAgICAgICBjcmVhdGVfcnRkMiA9IHJ0ZF9jb3B5WzBdLmNvcHkoKQotICAgICAgICBjcmVhdGVfcnRkMlsnbmFtZSddID0gJ3Rlc3QtY3JlYXRlMicKLSAgICAgICAgY3JlYXRlX3J0ZDFbJ21pbiddID0gNDAwMAotICAgICAgICBydGRfY29weS5hcHBlbmQoY3JlYXRlX3J0ZDIpCi0gICAgICAgIHRlc3RfcHV0X3Jlc3RfbW9kZWxfZGF0YShbY3JlYXRlX3J0ZDEsY3JlYXRlX3J0ZDJdLCAncmVzdC10ZXN0JykKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X21vZGVsX2RhdGEoJ3Jlc3QtdGVzdCcpCi0gICAgICAgIGRhdGEgPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuY2hlY2tfcmVzdF90ZXN0X2RhdGFfcmVzdWx0KGRhdGEsIHJ0ZF9jb3B5KQotICAgICAgICAKLSAgICBkZWYgdGVzdF9nZXQoc2VsZik6Ci0gICAgICAgIFJURCA9IHNlbGYuUkVTVF9URVNUX0RBVEEKLSAgICAgICAgUlRURCA9IHNlbGYuUkVTVF9URVNUX1RBR19EQVRBCi0gICAgICAgIEdFVF9URVNUX1ZFQ1RPUlMgPSAoCi0gICAgICAgICAgICAjbW9kZWxfbmFtZSwgcXVlcnlfcGFyYW1zLCBleHBlY3RlZF9kYXRhCi0gICAgICAgICAgICAoJ3Jlc3QtdGVzdCcsIE5vbmUsIFJURCwgJ0ZhaWx1cmUgZ2V0dGluZyBhbGwgcmVzdC10ZXN0IGluc3RhbmNlcycpLAotICAgICAgICAgICAgKCdyZXN0LXRlc3QtdGFnJywgTm9uZSwgUlRURCwgJ0ZhaWx1cmUgZ2V0dGluZyBhbGwgcmVzdC10ZXN0LXRhZyBpbnN0YW5jZXMnKSwKLSAgICAgICAgICAgICgncmVzdC10ZXN0L2Zvb2JhcicsIE5vbmUsIFJURFswXSwgJ0ZhaWx1cmUgZ2V0dGluZyBzaW5nbGUgcmVzdC10ZXN0IGluc3RhbmNlIGJ5IFVSTCcpLAotICAgICAgICAgICAgKCdyZXN0LXRlc3QnLCB7J25hbWUnOidmb29iYXInfSwgW1JURFswXV0sICdGYWlsdXJlIHF1ZXJ5aW5nIGZvciBzaW5nbGUgcmVzdC10ZXN0IGluc3RhbmNlJyksCi0gICAgICAgICAgICAoJ3Jlc3QtdGVzdCcsIHsnbmFtZSc6J2Zvb2JhcicsJ25vbGlzdCc6VHJ1ZX0sIFJURFswXSwgJ0ZhaWx1cmUgcXVlcnlpbmcgZm9yIHNpbmdsZSByZXN0LXRlc3QgaW5zdGFuY2UgdXNpbmcgbm9saXN0JyksCi0gICAgICAgICAgICAoJ3Jlc3QtdGVzdCcsIHsnZW5hYmxlZCc6VHJ1ZX0sIFtSVERbMF0sUlREWzJdXSwgJ0ZhaWx1cmUgcXVlcnlpbmcgZm9yIG11bHRpcGxlIHJlc3QtdGVzdCBpbnN0YW5jZXMnKSwKLSAgICAgICAgICAgICgncmVzdC10ZXN0JywgeyduYW1lX19zdGFydHN3aXRoJzonZm9vYmFyJ30sIFtSVERbMF0sUlREWzJdXSwgJ0ZhaWx1cmUgcXVlcnlpbmcgZm9yIG11bHRpcGxlIHJlc3QtdGVzdCBpbnN0YW5jZXMgdXNpbmcgc3RhcnRzd2l0aCcpLAotICAgICAgICAgICAgKCdyZXN0LXRlc3QnLCB7J29yZGVyYnknOidyYXRpbyd9LCBbUlREWzJdLFJURFswXSxSVERbMV1dLCAnRmFpbHVyZSBxdWVyeWluZyB3aXRoIGFzY2VuZGluZyBvcmRlcmJ5JyksCi0gICAgICAgICAgICAoJ3Jlc3QtdGVzdCcsIHsnb3JkZXJieSc6Jy1yYXRpbyd9LCBbUlREWzFdLFJURFswXSxSVERbMl1dLCAnRmFpbHVyZSBxdWVyeWluZyB3aXRoIGRlc2NlbmRpbmcgb3JkZXJieScpLAotICAgICAgICAgICAgKCdyZXN0LXRlc3QnLCB7J29yZGVyYnknOidlbmFibGVkLC1yYXRpbyd9LCBbUlREWzFdLFJURFswXSxSVERbMl1dLCAnRmFpbHVyZSBxdWVyeWluZyB3aXRoIG11bHRpLWZpZWxkIG9yZGVyYnknKSwKLSAgICAgICAgICAgICgncmVzdC10ZXN0LXRhZycsIHsncmVzdC10ZXN0JzonZm9vYmFyJ30sIFtSVFREWzBdLFJUVERbMV1dLCAnRmFpbHVyZSBxdWVyeWluZyBieSBGb3JlaWduS2V5IHZhbHVlJyksCi0gICAgICAgICAgICAoJ3Jlc3QtdGVzdC10YWcnLCB7J3Jlc3QtdGVzdF9fc3RhcnRzd2l0aCc6J2Zvbyd9LCBbUlRURFswXSxSVFREWzFdXSwgJ0ZhaWx1cmUgcXVlcnlpbmcgYnkgRm9yZWlnbktleSB2YWx1ZScpLAotICAgICAgICAgICAgKCdyZXN0LXRlc3QtdGFnJywgeydyZXN0LXRlc3RfX2NvbnRhaW5zJzonc3dpJ30sIFtSVFREWzJdXSwgJ0ZhaWx1cmUgcXVlcnlpbmcgYnkgRm9yZWlnbktleSB2YWx1ZScpLAotICAgICAgICApCi0gICAgICAgIAotICAgICAgICBmb3IgbW9kZWxfbmFtZSwgcXVlcnlfcGFyYW1zLCBleHBlY3RlZF9kYXRhLCBtZXNzYWdlIGluIEdFVF9URVNUX1ZFQ1RPUlM6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfbW9kZWxfZGF0YShtb2RlbF9uYW1lLCBxdWVyeV9wYXJhbXMpCi0gICAgICAgICAgICBkYXRhID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZS5jb250ZW50KQotICAgICAgICAgICAgI3ByaW50IG1vZGVsX25hbWUKLSAgICAgICAgICAgICNzZWxmLmNoZWNrX3Jlc3RfdGVzdF9kYXRhX3Jlc3VsdChkYXRhLCBleHBlY3RlZF9kYXRhLCBtZXNzYWdlKQotICAgICAgICAgICAgaWYgdHlwZShkYXRhKSBpcyBub3QgbGlzdDoKLSAgICAgICAgICAgICAgICBkYXRhID0gW2RhdGFdCi0gICAgICAgICAgICAgICAgI2RhdGEgPSBnZXRfc29ydGVkX2xpc3QoZGF0YSwgJ25hbWUnLCBGYWxzZSkKLSAgICAgICAgICAgIGlmIHR5cGUoZXhwZWN0ZWRfZGF0YSkgaXMgbm90IGxpc3Q6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfZGF0YSA9IFtleHBlY3RlZF9kYXRhXQotICAgICAgICAgICAgICAgICNleHBlY3RlZF9kYXRhID0gZ2V0X3NvcnRlZF9saXN0KGV4cGVjdGVkX2RhdGEsICduYW1lJywgVHJ1ZSkKLSAgICAgICAgICAgIGlmIG1vZGVsX25hbWUuc3RhcnRzd2l0aCgncmVzdC10ZXN0LXRhZycpOgotICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfcmVzdF90ZXN0X3RhZ19kYXRhX3Jlc3VsdChkYXRhLCBleHBlY3RlZF9kYXRhLCBtZXNzYWdlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3Jlc3RfdGVzdF9kYXRhX3Jlc3VsdChkYXRhLCBleHBlY3RlZF9kYXRhLCBtZXNzYWdlKQotICAgICAgICAgICAgCi0gICAgZGVmIHRlc3RfcmVuYW1lZF9maWVsZChzZWxmKToKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X21vZGVsX2RhdGEoJ3Jlc3QtdGVzdC1yZW5hbWVkL3Rlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLDIwMCkKLSAgICAgICAgZGF0YSA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhWydyZW5hbWVkJ10sICd0ZXN0JykKLSAgICAgICAgCi0gICAgZGVmIHRlc3RfZGVsZXRlX29uZShzZWxmKToKLSAgICAgICAgdGVzdF9kZWxldGVfcmVzdF9tb2RlbF9kYXRhKCdyZXN0LXRlc3QvZm9vYmFyJykKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X21vZGVsX2RhdGEoJ3Jlc3QtdGVzdCcpCi0gICAgICAgIGRhdGEgPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuY2hlY2tfcmVzdF90ZXN0X2RhdGFfcmVzdWx0KGRhdGEsIHNlbGYuUkVTVF9URVNUX0RBVEFbMTpdKQotICAgIAotICAgIGRlZiB0ZXN0X2RlbGV0ZV9xdWVyeShzZWxmKToKLSAgICAgICAgdGVzdF9kZWxldGVfcmVzdF9tb2RlbF9kYXRhKCdyZXN0LXRlc3QnLCB7J25hbWVfX3N0YXJ0c3dpdGgnOidmb29iYXInfSkKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X21vZGVsX2RhdGEoJ3Jlc3QtdGVzdCcpCi0gICAgICAgIGRhdGEgPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuY2hlY2tfcmVzdF90ZXN0X2RhdGFfcmVzdWx0KGRhdGEsIFtzZWxmLlJFU1RfVEVTVF9EQVRBWzFdXSkKLSAgICAKLSAgICBkZWYgdGVzdF9kZWxldGVfYWxsKHNlbGYpOgotICAgICAgICB0ZXN0X2RlbGV0ZV9yZXN0X21vZGVsX2RhdGEoJ3Jlc3QtdGVzdCcpCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9tb2RlbF9kYXRhKCdyZXN0LXRlc3QnKQotICAgICAgICBkYXRhID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZS5jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwwKQotCi1jbGFzcyBOZWdhdGl2ZVRlc3QoVGVzdENhc2UpOgotICAgIAotICAgIGRlZiB0ZXN0X2ludmFsaWRfbW9kZWxfbmFtZShzZWxmKToKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X21vZGVsX2RhdGEoJ2Zvb2JhcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsNDAwKQotICAgICAgICByZXNwb25zZV9vYmogPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Vfb2JqWydlcnJvcl90eXBlJ10sJ1Jlc3RJbnZhbGlkRGF0YVR5cGVFeGNlcHRpb24nKQotICAgICAgICAKLSAgICBkZWYgdGVzdF9yZXNvdXJjZV9ub3RfZm91bmQoc2VsZik6Ci0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9tb2RlbF9kYXRhKCdyZXN0LXRlc3QvZm9vYmFyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSw0MDQpCi0gICAgICAgIHJlc3BvbnNlX29iaiA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZV9vYmpbJ2Vycm9yX3R5cGUnXSwnUmVzdFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24nKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF9vcmRlcmJ5KHNlbGYpOgotICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfbW9kZWxfZGF0YSgncmVzdC10ZXN0JywgeydvcmRlcmJ5JzonZm9vYmFyJ30pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsNDAwKQotICAgICAgICByZXNwb25zZV9vYmogPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Vfb2JqWydlcnJvcl90eXBlJ10sJ1Jlc3RJbnZhbGlkT3JkZXJCeUV4Y2VwdGlvbicpCi0gICAgCi0gICAgZGVmIHRlc3RfaGlkZGVuX21vZGVsKHNlbGYpOgotICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfbW9kZWxfZGF0YSgncmVzdGRpc2FibGVkbW9kZWwnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLDQwMCkKLSAgICAgICAgcmVzcG9uc2Vfb2JqID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZS5jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlX29ialsnZXJyb3JfdHlwZSddLCdSZXN0SW52YWxpZERhdGFUeXBlRXhjZXB0aW9uJykKLQotY2xhc3MgVmFsaWRhdGlvblRlc3QoVGVzdENhc2UpOgotICAgIAotICAgIERFRkFVTFRfREFUQSA9IHsnbmFtZSc6J2Zvb2JhcicsJ2VuYWJsZWQnOlRydWUsJ21pbic6MTAwLCdyYW5nZSc6MzAsJ2lwJzonMTkyLjE2OC4xLjEnLCdtYWMnOicwMDowMToyMjozNDo1NjphZicsJ3JhdGlvJzo0LjU2LCdjb2xvcic6J3JlZCd9Ci0gICAgVEVTVF9WRUNUT1JTID0gKAotICAgICAgICAjdXBkYXRlLWRpY3QsIGVycm9yLXR5cGUsIGVycm9yLW1lc3NnYWUKLSAgICAgICAgKHsnbWluJzo5OX0sIFsnbWluJ10sJ01pbiB2YWx1ZSB2YWxpZGF0aW9uIGZhaWxlZCcpLAotICAgICAgICAoeydyYW5nZSc6OH0sIFsncmFuZ2UnXSwnTWluIHJhbmdlIHZhbGlkYXRpb24gZmFpbGVkJyksCi0gICAgICAgICh7J3JhbmdlJzoyMDAwfSwgWydyYW5nZSddLCdNYXggcmFuZ2UgdmFsaWRhdGlvbiBmYWlsZWQnKSwKLSAgICAgICAgKHsncmFuZ2UnOjUwfSwgTm9uZSwnTW9kZWwtbGV2ZWwgY2xlYW4gdmFsaWRhdGlvbiBmYWlsZWQnKSwKLSAgICAgICAgKHsnbWFjJzonMDA6MDE6MDI6MDM6MDUnfSwgWydtYWMnXSwnVG9vIHNob3J0IE1BQyBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbGVkJyksCi0gICAgICAgICh7J21hYyc6JzAwOjAxOjAyOjAzOjA1Ojk5OjQ1J30sIFsnbWFjJ10sJ1RvbyBsb25nIE1BQyBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbGVkJyksCi0gICAgICAgICh7J21hYyc6JzAwLDAxLDAyLDAzLDA1LDk5J30sIFsnbWFjJ10sJ01BQyBhZGRyZXNzIHNlcGFyYXRvciBjaGFyIHZhbGlkYXRpb24gZmFpbGVkJyksCi0gICAgICAgICh7J21hYyc6JzByOjAxOjAyOjAzOjA1Ojk5J30sIFsnbWFjJ10sJ01BQyBhZGRyZXNzIGNoYXJhY3RlciB2YWxpZGF0aW9uIGZhaWxlZCcpLAotICAgICAgICAoeydtYWMnOicxMjM6MDE6MDI6MDM6MDU6OTknfSwgWydtYWMnXSwnTUFDIGFkZHJlc3MgYnl0ZSBsZW5ndGggdmFsaWRhdGlvbiBmYWlsZWQnKSwKLSAgICAgICAgKHsnY29sb3InOidwdXJwbGUnfSwgWydjb2xvciddLCdDaG9pY2VzIHZhbGlkYXRpb24gZmFpbGVkJyksCi0gICAgICAgICh7J2lwJzonZm9vYmFyJ30sIFsnaXAnXSwgJ0ludmFsaWQgSVAgYWRkcmVzcyBjaGFyIHZhbGlkYXRpb24gZmFpbGVkJyksCi0gICAgICAgICh7J2lwJzonMTkyLjE2OC4xJ30sIFsnaXAnXSwgJ1RvbyBzaG9ydCBJUCBhZGRyZXNzIGNoYXIgdmFsaWRhdGlvbiBmYWlsZWQnKSwKLSAgICAgICAgKHsnaXAnOicxOTIuMTY4LjEuMC41J30sIFsnaXAnXSwgJ1RvbyBsb25nIElQIGFkZHJlc3MgY2hhciB2YWxpZGF0aW9uIGZhaWxlZCcpLAotICAgICAgICAoeydpcCc6JzE5MiwxNjgsMSwwJ30sIFsnaXAnXSwgJ0lQIGFkZHJlc3Mgc2VwYXJhdG9yIGNoYXIgdmFsaWRhdGlvbiBmYWlsZWQnKSwKLSAgICAgICAgKHsnaXAnOicyNTYuMTY4LjEuMCd9LCBbJ2lwJ10sICdPdXQgb2YgcmFuZ2UgSVAgYWRkcmVzcyBieXRlIHZhbGlkYXRpb24gZmFpbGVkJyksCi0gICAgICAgICh7J21pbic6OTksICdpcCc6JzI1Ni4xNjguMS4wJ30sIFsnbWluJywgJ2lwJ10sICdNdWx0aXBsZSBmaWVsZCB2YWxpZGF0aW9uIGZhaWxlZCcpLAotICAgICkKLSAgICAKLSAgICBkZWYgY2hlY2tfcmVzcG9uc2Uoc2VsZiwgcmVzcG9uc2UsIGludmFsaWRfZmllbGRzLCBtZXNzYWdlKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSw0MDApCi0gICAgICAgIHJlc3BvbnNlX29iaiA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZV9vYmpbJ2Vycm9yX3R5cGUnXSwgJ1Jlc3RWYWxpZGF0aW9uRXhjZXB0aW9uJywgbWVzc2FnZSkKLSAgICAgICAgaWYgaW52YWxpZF9maWVsZHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlX29iai5nZXQoJ21vZGVsX2Vycm9yJyksIE5vbmUpCi0gICAgICAgICAgICBmaWVsZF9lcnJvcnMgPSByZXNwb25zZV9vYmouZ2V0KCdmaWVsZF9lcnJvcnMnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChmaWVsZF9lcnJvcnMsIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpbnZhbGlkX2ZpZWxkcyksIGxlbihmaWVsZF9lcnJvcnMpLCBtZXNzYWdlKQotICAgICAgICAgICAgZm9yIGZpZWxkX25hbWUgaW4gZmllbGRfZXJyb3JzLmtleXMoKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZmllbGRfbmFtZSBpbiBpbnZhbGlkX2ZpZWxkcywgbWVzc2FnZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Vfb2JqLmdldCgnZmllbGRfZXJyb3JzJyksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3BvbnNlX29iai5nZXQoJ21vZGVsX2Vycm9yJyksIE5vbmUpCi0gICAgICAgICMgRklYTUU6IE1heWJlIGNoZWNrIHRoZSBkZXNjcmlwdGlvbiBoZXJlIHRvbz8KLSAgICAgICAgCi0gICAgZGVmIHRlc3RfY3JlYXRlX3ZhbGlkYXRpb24oc2VsZik6Ci0gICAgICAgIGZvciB0ZXN0X2RhdGEsIGludmFsaWRfZmllbGRzLCBtZXNzYWdlIGluIHNlbGYuVEVTVF9WRUNUT1JTOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuREVGQVVMVF9EQVRBLmNvcHkoKQotICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHRlc3RfZGF0YS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGRhdGFbbmFtZV0gPSB2YWx1ZQotICAgICAgICAgICAgcHV0X3Jlc3BvbnNlID0gdGVzdF9wdXRfcmVzdF9tb2RlbF9kYXRhKGRhdGEsICdyZXN0LXRlc3QnKQotICAgICAgICAgICAgc2VsZi5jaGVja19yZXNwb25zZShwdXRfcmVzcG9uc2UsIGludmFsaWRfZmllbGRzLCBtZXNzYWdlKQotICAgICAgICAgICAgCi0gICAgZGVmIHRlc3RfdXBkYXRlX3ZhbGlkYXRpb24oc2VsZik6Ci0gICAgICAgICMgRmlyc3QgYWRkIGFuIGluc3RhbmNlIHdpdGggdGhlIGRlZmF1bHQgZGF0YSBhbmQgY2hlY2sgdGhhdCBpdCdzIE9LCi0gICAgICAgIHB1dF9yZXNwb25zZSA9IHRlc3RfcHV0X3Jlc3RfbW9kZWxfZGF0YShzZWxmLkRFRkFVTFRfREFUQSwgJ3Jlc3QtdGVzdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHV0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLDIwMCkKLSAgICAgICAgCi0gICAgICAgIGZvciB0ZXN0X2RhdGEsIGludmFsaWRfZmllbGRzLCBtZXNzYWdlIGluIHNlbGYuVEVTVF9WRUNUT1JTOgotICAgICAgICAgICAgcHV0X3Jlc3BvbnNlID0gdGVzdF9wdXRfcmVzdF9tb2RlbF9kYXRhKHRlc3RfZGF0YSwgJ3Jlc3QtdGVzdC9mb29iYXInKQotICAgICAgICAgICAgc2VsZi5jaGVja19yZXNwb25zZShwdXRfcmVzcG9uc2UsIGludmFsaWRfZmllbGRzLCBtZXNzYWdlKQotCi0KLWNsYXNzIENvbmZpZ0hhbmRsZXJUZXN0KFRlc3RDYXNlKToKLQotICAgIFRFU1RfREFUQSA9IHsnbmFtZSc6J2Zvb2JhcicsJ2VuYWJsZWQnOlRydWUsJ21pbic6MTAwLCdyYW5nZSc6MzAsJ2lwJzonMTkyLjE2OC4xLjEnLCdtYWMnOicwMDowMToyMjozNDo1NjphZicsJ3JhdGlvJzo0LjU2LCdjb2xvcic6J3JlZCd9Ci0gICAgCi0gICAgdGVzdF9vcCA9IE5vbmUKLSAgICB0ZXN0X29sZF9pbnN0YW5jZSA9IE5vbmUKLSAgICB0ZXN0X25ld19pbnN0YW5jZSA9IE5vbmUKLSAgICB0ZXN0X21vZGlmaWVkX2ZpZWxkcyA9IE5vbmUKLSAgICAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHJlc2V0X2NvbmZpZ19oYW5kbGVyKCk6Ci0gICAgICAgIENvbmZpZ0hhbmRsZXJUZXN0LnRlc3Rfb3AgPSBOb25lCi0gICAgICAgIENvbmZpZ0hhbmRsZXJUZXN0LnRlc3Rfb2xkX2luc3RhbmNlID0gTm9uZQotICAgICAgICBDb25maWdIYW5kbGVyVGVzdC50ZXN0X25ld19pbnN0YW5jZSA9IE5vbmUKLSAgICAgICAgQ29uZmlnSGFuZGxlclRlc3QudGVzdF9tb2RpZmllZF9maWVsZHMgPSBOb25lCi0gICAgCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjb25maWdfaGFuZGxlcihvcCwgb2xkX2luc3RhbmNlLCBuZXdfaW5zdGFuY2UsIG1vZGlmaWVkX2ZpZWxkcyk6Ci0gICAgICAgIENvbmZpZ0hhbmRsZXJUZXN0LnRlc3Rfb3AgPSBvcAotICAgICAgICBDb25maWdIYW5kbGVyVGVzdC50ZXN0X29sZF9pbnN0YW5jZSA9IG9sZF9pbnN0YW5jZQotICAgICAgICBDb25maWdIYW5kbGVyVGVzdC50ZXN0X25ld19pbnN0YW5jZSA9IG5ld19pbnN0YW5jZQotICAgICAgICBDb25maWdIYW5kbGVyVGVzdC50ZXN0X21vZGlmaWVkX2ZpZWxkcyA9IG1vZGlmaWVkX2ZpZWxkcwotICAgIAotICAgIGRlZiBjaGVja19jb25maWdfaGFuZGxlcihzZWxmLCBleHBlY3RlZF9vcCwgZXhwZWN0ZWRfb2xkX2luc3RhbmNlLCBleHBlY3RlZF9uZXdfaW5zdGFuY2UsIGV4cGVjdGVkX21vZGlmaWVkX2ZpZWxkcyk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29uZmlnSGFuZGxlclRlc3QudGVzdF9vcCwgZXhwZWN0ZWRfb3ApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2RlbF9pbnN0YW5jZXNfZXF1YWwoQ29uZmlnSGFuZGxlclRlc3QudGVzdF9vbGRfaW5zdGFuY2UsIGV4cGVjdGVkX29sZF9pbnN0YW5jZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2RlbF9pbnN0YW5jZXNfZXF1YWwoQ29uZmlnSGFuZGxlclRlc3QudGVzdF9uZXdfaW5zdGFuY2UsIGV4cGVjdGVkX25ld19pbnN0YW5jZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29uZmlnSGFuZGxlclRlc3QudGVzdF9tb2RpZmllZF9maWVsZHMsIGV4cGVjdGVkX21vZGlmaWVkX2ZpZWxkcykKLSAgICAgICAgCi0gICAgZGVmIHRlc3RfY29uZmlnKHNlbGYpOgotICAgICAgICByZXNldF9sYXN0X2NvbmZpZ19zdGF0ZSgpCi0gICAgICAgICMgSW5zdGFsbCB0aGUgY29uZmlnIGhhbmRsZXIKLSAgICAgICAgZmllbGRfbGlzdCA9IFsnaW50ZXJuYWwnLCAnbWluJywgJ21hYyddCi0gICAgICAgIGFkZF9jb25maWdfaGFuZGxlcih7UmVzdFRlc3RNb2RlbDogZmllbGRfbGlzdH0sIENvbmZpZ0hhbmRsZXJUZXN0LmNvbmZpZ19oYW5kbGVyKQotICAgICAgICAKLSAgICAgICAgIyBDaGVjayB0aGF0IGNvbmZpZyBoYW5kbGVyIGlzIHRyaWdnZXJlZCBvbiBhbiBpbnNlcnQKLSAgICAgICAgQ29uZmlnSGFuZGxlclRlc3QucmVzZXRfY29uZmlnX2hhbmRsZXIoKQotICAgICAgICB0ZXN0ID0gUmVzdFRlc3RNb2RlbCgqKnNlbGYuVEVTVF9EQVRBKQotICAgICAgICB0ZXN0LnNhdmUoKQotICAgICAgICBzZWxmLmNoZWNrX2NvbmZpZ19oYW5kbGVyKCdJTlNFUlQnLCBOb25lLCB0ZXN0LCBOb25lKQotICAgICAgICAKLSAgICAgICAgIyBDaGVjayB0aGF0IGNvbmZpZyBoYW5kbGVyIGlzIHRyaWdnZXJlZCBvbiBhbiB1cGRhdGUKLSAgICAgICAgQ29uZmlnSGFuZGxlclRlc3QucmVzZXRfY29uZmlnX2hhbmRsZXIoKQotICAgICAgICBleHBlY3RlZF9vbGQgPSBSZXN0VGVzdE1vZGVsLm9iamVjdHMuZ2V0KHBrPSdmb29iYXInKQotICAgICAgICB0ZXN0LmludGVybmFsID0gJ2NoZWNrJwotICAgICAgICB0ZXN0Lm1pbiA9IDEyNQotICAgICAgICB0ZXN0LnNhdmUoKQotICAgICAgICBzZWxmLmNoZWNrX2NvbmZpZ19oYW5kbGVyKCdVUERBVEUnLCBleHBlY3RlZF9vbGQsIHRlc3QsIHsnaW50ZXJuYWwnOiAnY2hlY2snLCAnbWluJzogMTI1fSkKLSAgICAgICAgCi0gICAgICAgICMgQ2hlY2sgdGhhdCBjb25maWcgaGFuZGxlciBpcyBub3QgdHJpZ2dlcmVkIG9uIGFuIHVwZGF0ZSB0byBhIGZpZWxkIHRoYXQKLSAgICAgICAgIyBpdCdzIG5vdCBjb25maWd1cmVkIHRvIGNhcmUgYWJvdXQKLSAgICAgICAgQ29uZmlnSGFuZGxlclRlc3QucmVzZXRfY29uZmlnX2hhbmRsZXIoKQotICAgICAgICB0ZXN0Lm1heCA9IDUwMAotICAgICAgICB0ZXN0LnNhdmUoKQotICAgICAgICBzZWxmLmNoZWNrX2NvbmZpZ19oYW5kbGVyKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpCi0gICAgICAgIAotICAgICAgICAjIENoZWNrIHRoYXQgY29uZmlnIGhhbmRsZXIgaXMgdHJpZ2dlcmVkIG9uIGEgZGVsZXRlCi0gICAgICAgIENvbmZpZ0hhbmRsZXJUZXN0LnJlc2V0X2NvbmZpZ19oYW5kbGVyKCkKLSAgICAgICAgdGVzdC5kZWxldGUoKQotICAgICAgICAjIGRlbGV0ZSgpIGNsZWFycyB0aGUgcGsgd2hpY2ggbWVzc2VzIHVwIHRoZSBpbnN0YW5jZQotICAgICAgICAjIGNvbXBhcmlzb24gbG9naWMgaW4gY2hlY2tfY29uZmlnX2hhbmRsZXIsIHNvIHdlIGhhY2sKLSAgICAgICAgIyBpdCBiYWNrIHRvIHRoZSB2YWx1ZSBpdCBoYWQgYmVmb3JlIHRoZSBkZWxldGUKLSAgICAgICAgdGVzdC5uYW1lID0gJ2Zvb2JhcicgICAgCi0gICAgICAgIHNlbGYuY2hlY2tfY29uZmlnX2hhbmRsZXIoJ0RFTEVURScsIHRlc3QsIE5vbmUsIE5vbmUpCi0KLQotY2xhc3MgQ29tcG91bmRLZXlNb2RlbFRlc3QoVGVzdENhc2UpOgotICAgIAotICAgIFRFU1RfREFUQSA9IFsKLSAgICAgICAgeyduYW1lJzogJ2ZvbycsICdpbmRleCc6IDN9LAotICAgICAgICB7J25hbWUnOiAnZm9vJywgJ2luZGV4JzogN30sCi0gICAgICAgIHsnbmFtZSc6ICdiYXInLCAnaW5kZXgnOiAyLCAnZXh0cmEnOiAnYWJjJ30sCi0gICAgICAgIHsnbmFtZSc6ICdiYXInLCAnaW5kZXgnOiA0LCAnZXh0cmEnOiAndGVzdCd9LAotICAgIF0KLSAgICAKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIGZvciBkYXRhIGluIHNlbGYuVEVTVF9EQVRBOgotICAgICAgICAgICAgdGVzdF9wdXRfcmVzdF9tb2RlbF9kYXRhKGRhdGEsICdyZXN0LWNvbXBvdW5kLWtleScpCi0gICAgCi0gICAgZGVmIGNoZWNrX3F1ZXJ5X3Jlc3VsdHMoc2VsZiwgYWN0dWFsX3Jlc3VsdHMsIGV4cGVjdGVkX3Jlc3VsdHMpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhY3R1YWxfcmVzdWx0cyksIGxlbihleHBlY3RlZF9yZXN1bHRzKSkKLSAgICAgICAgYWN0dWFsX3Jlc3VsdHMgPSBnZXRfc29ydGVkX2xpc3QoYWN0dWFsX3Jlc3VsdHMsICdpZCcsIEZhbHNlKQotICAgICAgICBleHBlY3RlZF9yZXN1bHRzID0gY29weS5kZWVwY29weShleHBlY3RlZF9yZXN1bHRzKQotICAgICAgICBmb3IgZXhwZWN0ZWRfcmVzdWx0IGluIGV4cGVjdGVkX3Jlc3VsdHM6Ci0gICAgICAgICAgICBleHBlY3RlZF9yZXN1bHRbJ2lkJ10gPSBleHBlY3RlZF9yZXN1bHRbJ25hbWUnXSArICd8JyArIHN0cihleHBlY3RlZF9yZXN1bHRbJ2luZGV4J10pCi0gICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMgPSBnZXRfc29ydGVkX2xpc3QoZXhwZWN0ZWRfcmVzdWx0cywgJ2lkJykKLSAgICAgICAgCi0gICAgICAgIGZvciBhY3R1YWxfcmVzdWx0LCBleHBlY3RlZF9yZXN1bHQgaW4gemlwKGFjdHVhbF9yZXN1bHRzLCBleHBlY3RlZF9yZXN1bHRzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3Jlc3VsdFsnaWQnXSwgZXhwZWN0ZWRfcmVzdWx0WydpZCddKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfcmVzdWx0WyduYW1lJ10sIGV4cGVjdGVkX3Jlc3VsdFsnbmFtZSddKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfcmVzdWx0WydpbmRleCddLCBleHBlY3RlZF9yZXN1bHRbJ2luZGV4J10pCi0gICAgICAgICAgICBleHBlY3RlZF9leHRyYSA9IGV4cGVjdGVkX3Jlc3VsdC5nZXQoJ2V4dHJhJywgJ2R1bW15JykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3Jlc3VsdFsnZXh0cmEnXSwgZXhwZWN0ZWRfZXh0cmEpCi0gICAgICAgICAgICAgICAgCi0gICAgZGVmIHRlc3Rfc2V0X3VwKHNlbGYpOgotICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfbW9kZWxfZGF0YSgncmVzdC1jb21wb3VuZC1rZXknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIGFjdHVhbF9yZXN1bHRzID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZS5jb250ZW50KQotICAgICAgICBzZWxmLmNoZWNrX3F1ZXJ5X3Jlc3VsdHMoYWN0dWFsX3Jlc3VsdHMsIHNlbGYuVEVTVF9EQVRBKQotICAgICAgICAKLSAgICBkZWYgdGVzdF9kZWxldGVfYnlfaWQoc2VsZik6Ci0gICAgICAgIHRlc3RfZGVsZXRlX3Jlc3RfbW9kZWxfZGF0YSgncmVzdC1jb21wb3VuZC1rZXknLCB7J2lkJzogJ2Zvb3wzJ30pCi0gICAgICAgIHRlc3RfZGVsZXRlX3Jlc3RfbW9kZWxfZGF0YSgncmVzdC1jb21wb3VuZC1rZXknLCB7J2lkJzogJ2Jhcnw0J30pCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9tb2RlbF9kYXRhKCdyZXN0LWNvbXBvdW5kLWtleScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgYWN0dWFsX3Jlc3VsdHMgPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuY2hlY2tfcXVlcnlfcmVzdWx0cyhhY3R1YWxfcmVzdWx0cywgc2VsZi5URVNUX0RBVEFbMTotMV0pCi0gICAgCi0gICAgZGVmIHRlc3RfZGVsZXRlX2J5X2ZpZWxkcyhzZWxmKToKLSAgICAgICAgdGVzdF9kZWxldGVfcmVzdF9tb2RlbF9kYXRhKCdyZXN0LWNvbXBvdW5kLWtleScsIHsnbmFtZSc6ICdiYXInLCAnaW5kZXgnOiA0fSkKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X21vZGVsX2RhdGEoJ3Jlc3QtY29tcG91bmQta2V5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBhY3R1YWxfcmVzdWx0cyA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5jaGVja19xdWVyeV9yZXN1bHRzKGFjdHVhbF9yZXN1bHRzLCBzZWxmLlRFU1RfREFUQVs6LTFdKQotICAgICAgICAKLWNsYXNzIFVzZXJEYXRhVGVzdChUZXN0Q2FzZSk6Ci0gICAgCi0gICAgVEVTVF9EQVRBID0gWwotICAgICAgICAjIG5hbWUsIGRhdGEsIGJpbmFyeSwgY29udGVudC10eXBlCi0gICAgICAgICgndGVzdC9mb29iYXInLCAnaGVsbG8gd29ybGRcbmFub3RoZXIgbGluZScsIEZhbHNlLCBOb25lKSwKLSAgICAgICAgKCd0ZXN0L2pzb24tdGVzdCcsICdbMCwxLDJdJywgRmFsc2UsICdhcHBsaWNhdGlvbi9qc29uJyksCi0gICAgICAgICgndGVzdC9iaW5hcnktdGVzdCcsICdceDAxXHgwMlx4MDNceDA0XHg1NScsIFRydWUsIE5vbmUpLAotICAgIF0KLSAgICAKLSAgICBNT1JFX1RFU1RfREFUQSA9IFsKLSAgICAgICAgKCdtb3JldGVzdHMvZm9vMScsICdtb3JldGVzdDEnLCBGYWxzZSwgTm9uZSksCi0gICAgICAgICgnbW9yZXRlc3RzL2ZvbzInLCAnbW9yZXRlc3QyJywgRmFsc2UsIE5vbmUpLAotICAgIF0KLSAgICAKLSAgICBkZWYgYWRkX3VzZXJfZGF0YShzZWxmLCBjbGllbnQsIHVzZXJfZGF0YSk6Ci0gICAgICAgIGZvciBuYW1lLCBkYXRhLCBiaW5hcnksIGNvbnRlbnRfdHlwZSBpbiB1c2VyX2RhdGE6Ci0gICAgICAgICAgICBpZiBub3QgY29udGVudF90eXBlOgotICAgICAgICAgICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGUgPSAndGV4dC9wbGFpbicKLSAgICAgICAgICAgIHVybCA9IHRlc3RfY29uc3RydWN0X3Jlc3RfdXJsKCdkYXRhLycgKyBuYW1lLCB7J2JpbmFyeSc6YmluYXJ5fSkKLSAgICAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnB1dCh1cmwsIGRhdGEsIGNvbnRlbnRfdHlwZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0KLSAgICBkZWYgY2hlY2tfZXhwZWN0ZWRfaW5mb19saXN0KHNlbGYsIGluZm9fbGlzdCwgZXhwZWN0ZWRfaW5mb19saXN0KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGluZm9fbGlzdCksIGxpc3QpCi0gICAgICAgIGluZm9fbGlzdCA9IGdldF9zb3J0ZWRfbGlzdChpbmZvX2xpc3QsICduYW1lJywgVHJ1ZSkKLSAgICAgICAgZXhwZWN0ZWRfaW5mb19saXN0ID0gZ2V0X3NvcnRlZF9saXN0KGV4cGVjdGVkX2luZm9fbGlzdCwgTm9uZSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaW5mb19saXN0KSwgbGVuKGV4cGVjdGVkX2luZm9fbGlzdCkpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihpbmZvX2xpc3QpKToKLSAgICAgICAgICAgIGRhdGEgPSBpbmZvX2xpc3RbaV0KLSAgICAgICAgICAgIGV4cGVjdGVkX2RhdGEgPSBleHBlY3RlZF9pbmZvX2xpc3RbaV0KLSAgICAgICAgICAgIGV4cGVjdGVkX25hbWUgPSBleHBlY3RlZF9kYXRhWzBdCi0gICAgICAgICAgICBleHBlY3RlZF91cmxfcGF0aCA9ICdyZXN0L3YxL2RhdGEvJyArIGV4cGVjdGVkX25hbWUgKyAnLycKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YVsnbmFtZSddLCBleHBlY3RlZF9uYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhWyd1cmxfcGF0aCddLCBleHBlY3RlZF91cmxfcGF0aCkKLQotICAgIGRlZiBnZXRfaW5mb19saXN0KHNlbGYsIGNsaWVudCwgcXVlcnlfcGFyYW1zPU5vbmUpOgotICAgICAgICB1cmwgPSB0ZXN0X2NvbnN0cnVjdF9yZXN0X3VybCgnZGF0YScsIHF1ZXJ5X3BhcmFtcykKLSAgICAgICAgZ2V0X3Jlc3BvbnNlID0gY2xpZW50LmdldCh1cmwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIGluZm9fbGlzdCA9IHNpbXBsZWpzb24ubG9hZHMoZ2V0X3Jlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIAotICAgICAgICAjIFRoZSB2aWV3IGZvciBsaXN0aW5nIHVzZXIgZGF0YSBpdGVtcyBoYXJkLWNvZGVzIGluY2x1c2lvbiBvZiBzb21lCi0gICAgICAgICMgKm1hZ2ljKiB1c2VyIGRhdGEgaXRlbXMgY29ycmVzcG9uZGluZyB0byB0aGUgc3RhcnR1cC1jb25maWcKLSAgICAgICAgIyBhbmQgdXBkYXRlLWNvbmZpZywgZGVwZW5kaW5nIG9uIHRoZSBwcmVzZW5jZSBvZiBjZXJ0YWluIGZpbGVzCi0gICAgICAgICMgaW4gdGhlIGZpbGUgc3lzdGVtLiBUbyBtYWtlIHRoZSB1bml0IHRlc3RzIHdvcmsgY29ycmVjdGx5IGlmL3doZW4KLSAgICAgICAgIyBlaXRoZXIvYm90aCBvZiB0aG9zZSBpdGVtcyBhcmUgYWRkZWQgd2UgZG8gdGhpcyBmaWx0ZXJpbmcgcGFzcwotICAgICAgICAjIG92ZXIgdGhlIGl0ZW1zIHJldHVybmVkIGZyb20gdGhlIFJFU1QgQVBJLiBVZ2x5IGhhY2shCi0gICAgICAgIGluZm9fbGlzdCA9IFtpdGVtIGZvciBpdGVtIGluIGluZm9fbGlzdCBpZiAnLWNvbmZpZycgbm90IGluIGl0ZW1bJ25hbWUnXV0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBpbmZvX2xpc3QKLQotICAgIGRlZiB0ZXN0X3VzZXJfZGF0YV9iYXNpYyhzZWxmKToKLSAgICAgICAgYyA9IENsaWVudCgpCi0gICAgICAgIHNlbGYuYWRkX3VzZXJfZGF0YShjLCBzZWxmLlRFU1RfREFUQSkKLSAgICAgICAgZm9yIG5hbWUsIGRhdGEsIGJpbmFyeSwgY29udGVudF90eXBlIGluIHNlbGYuVEVTVF9EQVRBOgotICAgICAgICAgICAgaWYgbm90IGNvbnRlbnRfdHlwZToKLSAgICAgICAgICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlID0gJ3RleHQvcGxhaW4nCi0gICAgICAgICAgICB1cmwgPSB0ZXN0X2NvbnN0cnVjdF9yZXN0X3VybCgnZGF0YS8nICsgbmFtZSkKLSAgICAgICAgICAgIGdldF9yZXNwb25zZSA9IGMuZ2V0KHVybCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3Jlc3BvbnNlLmNvbnRlbnQsIGRhdGEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9yZXNwb25zZVsnQ29udGVudC1UeXBlJ10sIGNvbnRlbnRfdHlwZSkKLQotICAgIGRlZiB0ZXN0X3VzZXJfZGF0YV9kZWxldGUoc2VsZik6Ci0gICAgICAgIGMgPSBDbGllbnQoKQotICAgICAgICAKLSAgICAgICAgc2VsZi5hZGRfdXNlcl9kYXRhKGMsIHNlbGYuVEVTVF9EQVRBKQotICAgICAgICBzZWxmLmFkZF91c2VyX2RhdGEoYywgc2VsZi5NT1JFX1RFU1RfREFUQSkKLSAgICAgICAgCi0gICAgICAgICMgRG8gYSBkZWxldGUgd2l0aCBhIHF1ZXJ5IGZpbHRlcgotICAgICAgICB1cmwgPSB0ZXN0X2NvbnN0cnVjdF9yZXN0X3VybCgnZGF0YScsIHsnbmFtZV9fc3RhcnRzd2l0aCc6J21vcmV0ZXN0cy8nfSkKLSAgICAgICAgcmVzcG9uc2UgPSBjLmRlbGV0ZSh1cmwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgCi0gICAgICAgIGluZm9fbGlzdCA9IHNlbGYuZ2V0X2luZm9fbGlzdChjKQotICAgICAgICBleHBlY3RlZF9pbmZvX2xpc3QgPSBzZWxmLlRFU1RfREFUQQotICAgICAgICBzZWxmLmNoZWNrX2V4cGVjdGVkX2luZm9fbGlzdChpbmZvX2xpc3QsIGV4cGVjdGVkX2luZm9fbGlzdCkKLSAgICAgICAgCi0gICAgICAgICMgRG8gYSBkZWxldGUgb2YgYSBzcGVjaWZpYyB1c2VyIGRhdGEgZWxlbWVudAotICAgICAgICB1cmwgPSB0ZXN0X2NvbnN0cnVjdF9yZXN0X3VybCgnZGF0YS8nICsgc2VsZi5URVNUX0RBVEFbMF1bMF0pCi0gICAgICAgIHJlc3BvbnNlID0gYy5kZWxldGUodXJsKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0KLSAgICAgICAgaW5mb19saXN0ID0gc2VsZi5nZXRfaW5mb19saXN0KGMpCi0gICAgICAgIGV4cGVjdGVkX2luZm9fbGlzdCA9IHNlbGYuVEVTVF9EQVRBWzE6XQotICAgICAgICBzZWxmLmNoZWNrX2V4cGVjdGVkX2luZm9fbGlzdChpbmZvX2xpc3QsIGV4cGVjdGVkX2luZm9fbGlzdCkKLQotICAgIGRlZiB0ZXN0X3VzZXJfZGF0YV9pbmZvKHNlbGYpOgotCi0gICAgICAgIGMgPSBDbGllbnQoKQotICAgICAgICAKLSAgICAgICAgc2VsZi5hZGRfdXNlcl9kYXRhKGMsIHNlbGYuVEVTVF9EQVRBKQotICAgICAgICBzZWxmLmFkZF91c2VyX2RhdGEoYywgc2VsZi5NT1JFX1RFU1RfREFUQSkKLSAgICAgICAgCi0gICAgICAgIGluZm9fbGlzdCA9IHNlbGYuZ2V0X2luZm9fbGlzdChjKQotICAgICAgICBleHBlY3RlZF9pbmZvX2xpc3QgPSBzZWxmLlRFU1RfREFUQSArIHNlbGYuTU9SRV9URVNUX0RBVEEKLSAgICAgICAgc2VsZi5jaGVja19leHBlY3RlZF9pbmZvX2xpc3QoaW5mb19saXN0LCBleHBlY3RlZF9pbmZvX2xpc3QpCi0gICAgICAgIAotICAgICAgICBpbmZvX2xpc3QgPSBzZWxmLmdldF9pbmZvX2xpc3QoYywgeyduYW1lX19zdGFydHN3aXRoJzondGVzdC8nfSkKLSAgICAgICAgZXhwZWN0ZWRfaW5mb19saXN0ID0gc2VsZi5URVNUX0RBVEEKLSAgICAgICAgc2VsZi5jaGVja19leHBlY3RlZF9pbmZvX2xpc3QoaW5mb19saXN0LCBleHBlY3RlZF9pbmZvX2xpc3QpCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3Jlc3QvdmFsaWRhdG9ycy5weSBiL2NsaS9zZG5jb24vcmVzdC92YWxpZGF0b3JzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4NTYwMzhhLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vcmVzdC92YWxpZGF0b3JzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDQ4ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1pbXBvcnQgcmUKLWltcG9ydCBvcy5wYXRoCi0KLWZyb20gZGphbmdvLmZvcm1zIGltcG9ydCBWYWxpZGF0aW9uRXJyb3IKLWZyb20gZGphbmdvLmNvcmUudmFsaWRhdG9ycyBpbXBvcnQgUmVnZXhWYWxpZGF0b3IsIE1pblZhbHVlVmFsaWRhdG9yLCBNYXhWYWx1ZVZhbGlkYXRvcgotCi12YWxpZGF0ZV9tYWNfYWRkcmVzcyA9IFJlZ2V4VmFsaWRhdG9yKCdeKChbQS1GYS1mXGRdKXsyfTo/KXs1fVtBLUZhLWZcZF17Mn0kJywgJ01BQyBhZGRyZXNzIGlzIGEgNDgtYml0IHF1YW50aXR5LCBleHByZXNzZWQgaW4gaGV4IGFzIEFBOkJCOkNDOkREOkVFOkZGJywgJ2ludmFsaWQnKQotdmFsaWRhdGVfZHBpZCA9IFJlZ2V4VmFsaWRhdG9yKCdeKFtBLUZhLWZcZF17Mn06Pyl7N31bQS1GYS1mXGRdezJ9JCcsICdTd2l0Y2ggRFBJRCBpcyBhIDY0LWJpdCBxdWFudGl0eSwgZXhwcmVzc2VkIGluIGhleCBhcyBBQTpCQjpDQzpERDpFRTpGRjowMDoxMScsICdpbnZhbGlkJykKLXZhbGlkYXRlX2NvbnRyb2xsZXJfaWQgPSBSZWdleFZhbGlkYXRvcignXltBLUZhLWZcZF17OH0tKFtBLUZhLWZcZF17NH0tKXszfVtBLUZhLWZcZF17MTJ9JCcsICdDb250cm9sbGVyIElEIGlzIGEgMTI4LWJpdCBxdWFudGl0eSwgZXhwcmVzc2VkIGluIGhleCBhcyBhYWJiY2NkZC1lZWZmLTAwMTEtMjIzMy00NDU1NjY3Nzg4OTknLCAnaW52YWxpZCcpCi0KLWNsYXNzIFVmd1Byb3RvY29sVmFsZGl0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHBhc3MKLSAgICAKLSAgICBkZWYgX19jYWxsX18oc2VsZiwgdmFsdWUpOgotICAgICAgICBpZiBub3QgKHZhbHVlICE9ICJ0Y3AiIG9yIHZhbHVlICE9ICJ1ZHAiIG9yIHZhbHVlICE9ICd2cnJwJyk6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIlByb3RvY29sIG11c3QgYmUgZWl0aGVyICd0Y3AnIG9yICd1ZHAnIG9yICd2cnJwJyIpCi0KLW9jdGV0ID0gcicoPzowfFsxLTldWzAtOV0qKScKLUlQX1JFID0gcmUuY29tcGlsZSgiXiIgKyBvY3RldCArICdbLl0nICsgb2N0ZXQKLSAgICAgICAgICAgICAgICAgICArICdbLl0nICsgb2N0ZXQgKyAnWy5dJyArIG9jdGV0ICsgIiQiKQotCi1jbGFzcyBJcFZhbGlkYXRvcihvYmplY3QpOgotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5vdCBJUF9SRS5tYXRjaCh2YWx1ZSkgb3IgbGVuKFt4IGZvciB4IGluIHZhbHVlLnNwbGl0KCcuJykgaWYgaW50KHgpIDwgMjU2XSkgIT0gNDoKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiSVAgbXVzdCBiZSBpbiBkb3R0ZWQgZGVjaW1hbCBmb3JtYXQsIDIzNC4wLjU5LjEiKQotICAgICAgICAgICAgCi1jbGFzcyBJcE1hc2tWYWxpZGF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19jYWxsX18oc2VsZiwgdmFsdWUpOgotICAgICAgICBpZiBub3QgSVBfUkUubWF0Y2godmFsdWUpOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJJUCBtdXN0IGJlIGluIGRvdHRlZCBkZWNpbWFsIGZvcm1hdCwgMjU1LjI1NS4xMjguMCIpCi0gICAgICAgIGludmFsaWRfbmV0bWFzayA9IEZhbHNlCi0gICAgICAgIGludmFsaWRfaW52ZXJzZV9uZXRtYXNrID0gRmFsc2UKLSAgICAgICAgbG9va0Zvclplcm8gPSBGYWxzZQotICAgICAgICBmb3IgeCBpbiB2YWx1ZS5zcGxpdCgnLicpOgotICAgICAgICAgICAgeEludCA9IGludCh4KQotICAgICAgICAgICAgaWYgbG9va0Zvclplcm86Ci0gICAgICAgICAgICAgICAgaWYgeEludDoKLSAgICAgICAgICAgICAgICAgICAgaW52YWxpZF9uZXRtYXNrID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhayAgIyBnbyBjaGVjayBpbnZlcnNlIG1hc2sKLSAgICAgICAgICAgIGlmIHhJbnQgIT0gMjU1OgotICAgICAgICAgICAgICAgIGlmIHhJbnQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHhJbnQgPj0gMTI4OgotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHhJbnQgJSAyKSA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhJbnQgPSB4SW50ID4+IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHhJbnQgJiAoeEludCArIDEpID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaW52YWxpZF9uZXRtYXNrID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhayAjIGdvIGNoZWNrIGludmVyc2UgbWFzawotICAgICAgICAgICAgICAgIGxvb2tGb3JaZXJvID0gVHJ1ZQotCi0gICAgICAgIGxvb2tGb3JPbmUgPSBGYWxzZQotICAgICAgICBmb3IgeCBpbiB2YWx1ZS5zcGxpdCgnLicpOgotICAgICAgICAgICAgeEludCA9IGludCh4KQotICAgICAgICAgICAgaWYgbG9va0Zvck9uZTogIyBhbGwgYml0cyBzaG91bGQgYmUgMSBiaXRzCi0gICAgICAgICAgICAgICAgaWYgKHhJbnQgIT0gMjU1KToKLSAgICAgICAgICAgICAgICAgICAgaW52YWxpZF9pbnZlcnNlX25ldG1hc2sgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHhJbnQgIT0gMDoKLSAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBjb250aWd1b3VzIDEtYml0cyBmcm9tIExTYgotICAgICAgICAgICAgICAgIGxvb2tGb3JPbmUgPSBUcnVlCi0gICAgICAgICAgICAgICAgaWYgeEludCA9PSAyNTU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgeEludCAmICh4SW50ICsgMSkgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgaW52YWxpZF9pbnZlcnNlX25ldG1hc2sgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGludmFsaWRfbmV0bWFzayBhbmQgaW52YWxpZF9pbnZlcnNlX25ldG1hc2s6ICMgbm8gdmFsaWQgbWFzaywgdGhlbiByYWlzZSBleGNlcHRpb24KLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiSW52YWxpZCBJUCBNYXNrLCBzaG91bGQgYmUgbGlrZSAyNTUuMjU1LjEyOC4wIG9yIDAuMC4xMjcuMjU1IikKLQotCi1jbGFzcyBQb3J0UmFuZ2VTcGVjVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLlJBTkdFX1JFID0gcmUuY29tcGlsZShyJ14oW0EtWmEtejAtOS0vXC46XSo/KShcZCspXC0oXGQrKSQnKQotICAgICAgICBzZWxmLlNJTkdMRV9SRSA9IHJlLmNvbXBpbGUocideKFtBLVphLXowLTktL1wuOl0rKSQnKQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHZhbHVlcyA9IHZhbHVlLnNwbGl0KCcsJykKLSAgICAgICAgZm9yIHYgaW4gdmFsdWVzOgotICAgICAgICAgICAgbSA9IHNlbGYuUkFOR0VfUkUubWF0Y2godik7Ci0gICAgICAgICAgICBpZiAobSk6Ci0gICAgICAgICAgICAgICAgc3RhcnRwb3J0ID0gaW50KG0uZ3JvdXAoMikpCi0gICAgICAgICAgICAgICAgZW5kcG9ydCA9IGludChtLmdyb3VwKDMpKQotICAgICAgICAgICAgICAgIGlmIChzdGFydHBvcnQgPj0gZW5kcG9ydCk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiSW52YWxpZCByYW5nZSBudW1lcmFsczogJWQtJWQiICUgKHN0YXJ0cG9ydCwgZW5kcG9ydCkpCi0gICAgICAgICAgICBlbGlmIG5vdCBzZWxmLlNJTkdMRV9SRS5tYXRjaCh2KToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIk11c3QgYmUgYSBsaXN0IG9mIHBvcnRzIG9yIHJhbmdlcywgc3VjaCBhcyAnQTEwLTE1LEIyNSxDMS0xMyciKQotCi1jbGFzcyBWTEFOUmFuZ2VTcGVjVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLlJBTkdFX1JFID0gcmUuY29tcGlsZShyJ14oW1xkXSspXC0oW1xkXSspJCcpCi0gICAgICAgIHNlbGYuU0lOR0xFX1JFID0gcmUuY29tcGlsZShyJ15bXGRdKyQnKQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHZhbHVlKToKLSAgICAgICAgdmFsdWVzID0gdmFsdWUuc3BsaXQoJywnKQotICAgICAgICBmb3IgdiBpbiB2YWx1ZXM6Ci0gICAgICAgICAgICBtID0gc2VsZi5SQU5HRV9SRS5tYXRjaCh2KTsKLSAgICAgICAgICAgIGlmIHYgPT0gJ3VudGFnZ2VkJzoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbGlmIChtKToKLSAgICAgICAgICAgICAgICBpZiAoaW50KG0uZ3JvdXAoMSkpID49IGludChtLmdyb3VwKDIpKSk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiSW52YWxpZCByYW5nZSBudW1lcmFscyBpbiB7fToge30gbXVzdCBiZSBsZXNzIHRoYW4ge30iLmZvcm1hdCh2LCBtLmdyb3VwKDEpLCBtLmdyb3VwKDIpKSkKLSAgICAgICAgICAgICAgICBlbGlmIChpbnQobS5ncm91cCgxKSkgPiA0MDk1KToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJJbnZhbGlkIFZMQU46IHt9IG11c3QgYmUgaW4gcmFuZ2UgMC00MDk1Ii5mb3JtYXQobS5ncm91cCgxKSkpCi0gICAgICAgICAgICAgICAgZWxpZiAoaW50KG0uZ3JvdXAoMikpIDwgMCk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiSW52YWxpZCBWTEFOOiB7fSBtdXN0IGJlIGluIHJhbmdlIDAtNDA5NSIuZm9ybWF0KG0uZ3JvdXAoMikpKQotICAgICAgICAgICAgZWxpZiBub3Qgc2VsZi5TSU5HTEVfUkUubWF0Y2godik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJNdXN0IGJlIGEgbGlzdCBvZiBWTEFOcyBvciByYW5nZXMsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN1Y2ggYXMgJzUtMjAsNDUsNDA1Myx1bnRhZ2dlZCciKQotICAgICAgICAgICAgZWxpZiBpbnQodikgPiA0MDk1IG9yIGludCh2KSA8IDA6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJJbnZhbGlkIFZMQU46IHt9IG11c3QgYmUgaW4gcmFuZ2UgMC00MDk1Ii5mb3JtYXQodikpCi0KLWNsYXNzIFRhZ1NwZWNWYWxpZGF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuVEFHX05BTUVfUkUgPSByZS5jb21waWxlKHInXihbYS16QS1aMC05Xy1dKyg/OlwuP1thLXpBLVowLTlfLV0rKSopPSsoW2EtekEtWjAtOV8tXSspJCcpCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZix2YWx1ZSk6Ci0gICAgICAgIHZhbHVlcyA9IHZhbHVlLnNwbGl0KCcsJykKLSAgICAgICAgZm9yIHYgaW4gdmFsdWVzOgotICAgICAgICAgICAgdiA9IHYuc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuVEFHX05BTUVfUkUubWF0Y2godik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJJbnZhbGlkIHRhZzogIiArIAotICAgICAgICAgICAgICAgICAgICAgICAgJz0nLmpvaW4odi5zcGxpdCgnfCcpKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAiXG5Gb3JtYXQ6IHRhZyBuYW1lc3BhY2UubmFtZWwgdmFsdWUxLCAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICJ3aGVyZSBuYW1lc3BhY2UgbWF5IGJlIGVtcHR5IG9yIG11c3QgYmUgYS16LCBBLVosIDAtOSwgLSwgLiBvciBfLCAiICsgCi0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSBhbmQgdmFsdWUgbXVzdCBiZSBhLXosIEEtWiwgMC05LCAtIG9yIF8iKQotCi1jbGFzcyBDaWRyVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc2tfcmVxdWlyZWQ9VHJ1ZSk6Ci0gICAgICAgIHNlbGYubWFza19yZXF1aXJlZCA9IG1hc2tfcmVxdWlyZWQKLSAgICAgICAgc2VsZi5DSURSX1JFID0gcmUuY29tcGlsZShyJ14oXGR7MSwzfVwuKXszfVxkezEsM30vXGR7MSwyfT8kJykKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGlwX3ZhbGlkYXRvciA9IElwVmFsaWRhdG9yKCkKLSAgICAgICAgaWYgc2VsZi5DSURSX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIGlwLCBtYXNrID0gdmFsdWUuc3BsaXQoJy8nKQotICAgICAgICAgICAgaXBfdmFsaWRhdG9yKGlwKQotICAgICAgICAgICAgaWYgaW50KG1hc2spIDwgMSBvciBpbnQobWFzaykgPiAzMjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIk1hc2sgc2hvdWxkIGJlIGJldHdlZW4gMS0zMiIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZWxmLm1hc2tfcmVxdWlyZWQ6ICMgaWYgbWFzayB3YXMgcmVxdWlyZWQgYW5kIHdlIGRpZG4ndCBtYXRjaCBhYm92ZSwgcHJvYmxlbSEKLSAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIk11c3QgYmUgaW4gZG90dGVkIGRlY2ltYWwgZm9ybWF0IHdpdGggYSBtYXNrIGJldHdlZW4gMS0zMiIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlwX3ZhbGlkYXRvcih2YWx1ZSkKLSAgICAgICAgCi1jbGFzcyBFbnVtZXJhdGlvblZhbGlkYXRvcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbnVtZXJhdGVkX3ZhbHVlcywgY2FzZV9zZW5zaXRpdmU9RmFsc2UsIG1lc3NhZ2U9Tm9uZSwgY29kZT1Ob25lKToKLSAgICAgICAgc2VsZi5jYXNlX3NlbnNpdGl2ZSA9IGNhc2Vfc2Vuc2l0aXZlCi0gICAgICAgIGlmIGNhc2Vfc2Vuc2l0aXZlOgotICAgICAgICAgICAgc2VsZi5lbnVtZXJhdGVkX3ZhbHVlcyA9IGVudW1lcmF0ZWRfdmFsdWVzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmVudW1lcmF0ZWRfdmFsdWVzID0gW3MubG93ZXIoKSBmb3IgcyBpbiBlbnVtZXJhdGVkX3ZhbHVlc10KLSAgICAgICAgaWYgbm90IG1lc3NhZ2U6Ci0gICAgICAgICAgICBtZXNzYWdlID0gJ0ludmFsaWQgZW51bWVyYXRlZCB2YWx1ZScKLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotICAgICAgICBpZiBub3QgY29kZToKLSAgICAgICAgICAgIGNvZGUgPSAnaW52YWxpZCcKLSAgICAgICAgc2VsZi5jb2RlID0gY29kZQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHZhbHVlKToKLSAgICAgICAgaWYgbm90IHNlbGYuY2FzZV9zZW5zaXRpdmU6Ci0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxvd2VyKCkKLSAgICAgICAgaWYgdmFsdWUgbm90IGluIHNlbGYuZW51bWVyYXRlZF92YWx1ZXM6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3Ioc2VsZi5tZXNzYWdlLCBzZWxmLmNvZGUpCi0KLWNsYXNzIENob2ljZXNWYWxpZGF0b3IoRW51bWVyYXRpb25WYWxpZGF0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaG9pY2VzLCBjYXNlX3NlbnNpdGl2ZT1GYWxzZSwgbWVzc2FnZT1Ob25lLCBjb2RlPU5vbmUpOgotICAgICAgICBlbnVtZXJhdGVkX3ZhbHVlcyA9IFtjaG9pY2VbMF0gZm9yIGNob2ljZSBpbiBjaG9pY2VzXQotICAgICAgICBFbnVtZXJhdGlvblZhbGlkYXRvci5fX2luaXRfXyhzZWxmLCBlbnVtZXJhdGVkX3ZhbHVlcywgY2FzZV9zZW5zaXRpdmUsIG1lc3NhZ2UsIGNvZGUpCi0KLWNsYXNzIFJhbmdlVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1pbiwgbWF4KToKLSAgICAgICAgc2VsZi5taW5fdmFsdWVfdmFsaWRhdG9yID0gTWluVmFsdWVWYWxpZGF0b3IobWluKQotICAgICAgICBzZWxmLm1heF92YWx1ZV92YWxpZGF0b3IgPSBNYXhWYWx1ZVZhbGlkYXRvcihtYXgpCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgdmFsdWUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLm1pbl92YWx1ZV92YWxpZGF0b3IoaW50KHZhbHVlKSkKLSAgICAgICAgICAgIHNlbGYubWF4X3ZhbHVlX3ZhbGlkYXRvcihpbnQodmFsdWUpKQotICAgICAgICBleGNlcHQgVmFsaWRhdGlvbkVycm9yOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCdFbnN1cmUgdGhpcyB2YWx1ZSBpcyB3aXRoaW4gdGhlIHJhbmdlICglZC0lZCknICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5taW5fdmFsdWVfdmFsaWRhdG9yLmxpbWl0X3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1heF92YWx1ZV92YWxpZGF0b3IubGltaXRfdmFsdWUpKQotCi1jbGFzcyBDb250cm9sbGVyQWxpYVZzYWxpZGF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuQ09OVFJPTExFUl9BTElBU19SRSA9IHJlLmNvbXBpbGUocideW2EtekEtWjAtOV8tXSskJykKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLkNPTlRST0xMRVJfQUxJQVNfUkUubWF0Y2godmFsdWUpOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJjb250cm9sbGVyIGFsaWFzIG5hbWUgbXVzdCBiYSBhLXosIDAtOSwgXyBvciBfIikKLQotY2xhc3MgU3dpdGNoQWxpYXNWYWxpZGF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuU1dJVENIX0FMSUFTX1JFID0gcmUuY29tcGlsZShyJ15bYS16QS1aMC05Xy1dKyQnKQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHZhbHVlKToKLSAgICAgICAgaWYgbm90IHNlbGYuU1dJVENIX0FMSUFTX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigic3dpdGNoIGFsaWFzIG5hbWUgbXVzdCBiYSBhLXosIDAtOSwgXyBvciBfIikKLQotY2xhc3MgUG9ydEFsaWFzVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLlBPUlRfQUxJQVNfUkUgPSByZS5jb21waWxlKHInXlthLXpBLVowLTlfLV0rJCcpCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgdmFsdWUpOgotICAgICAgICBpZiBub3Qgc2VsZi5QT1JUX0FMSUFTX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigicG9ydCBhbGlhcyBuYW1lIG11c3QgYmEgYS16LCAwLTksIF8gb3IgXyIpCi0KLWNsYXNzIEhvc3RBbGlhc1ZhbGlkYXRvcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5IT1NUX0FMSUFTX1JFID0gcmUuY29tcGlsZShyJ15bYS16QS1aMC05Xy1dKyQnKQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHZhbHVlKToKLSAgICAgICAgaWYgbm90IHNlbGYuSE9TVF9BTElBU19SRS5tYXRjaCh2YWx1ZSk6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoImhvc3QgYWxpYXMgbmFtZSBtdXN0IGJhIGEteiwgMC05LCBfIG9yIF8iKQotCi1jbGFzcyBBZGRyZXNzU3BhY2VOYW1lVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLkFERFJFU1NfU1BBQ0VfTkFNRV9SRSA9IHJlLmNvbXBpbGUocideW2EtekEtWjAtOV8tXSskJykKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLHZhbHVlKToKLSAgICAgICAgaWYgbm90IHNlbGYuQUREUkVTU19TUEFDRV9OQU1FX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiYWRkcmVzcy1zcGFjZSBuYW1lIG11c3QgYmUgYS16LCBBLVosIDAtOSwgLSBvciBfIikKLQotY2xhc3MgVGVuYW50TmFtZVZhbGlkYXRvcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5URU5BTlRfTkFNRV9SRSA9IHJlLmNvbXBpbGUocideW2EtekEtWjAtOV8tXSskJykKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLHZhbHVlKToKLSAgICAgICAgaWYgbm90IHNlbGYuVEVOQU5UX05BTUVfUkUubWF0Y2godmFsdWUpOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJ0ZW5hbnQgbmFtZSBtdXN0IGJlIGEteiwgQS1aLCAwLTksIC0gb3IgXyIpCi0KLWNsYXNzIEdlbmVyYWxOYW1lVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLkdFTkVSQUxfTkFNRV9SRSA9IHJlLmNvbXBpbGUocideW2EtekEtWjAtOV8tXSskJykKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLHZhbHVlKToKLSAgICAgICAgaWYgbm90IHNlbGYuR0VORVJBTF9OQU1FX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiTmFtZSBtdXN0IGJlIGEteiwgQS1aLCAwLTksIC0gb3IgXyIpCi0KLWNsYXNzIFZuc05hbWVWYWxpZGF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuVk5TX05BTUVfUkUgPSByZS5jb21waWxlKHInXlthLXpBLVowLTlfLV0rJCcpCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZix2YWx1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLlZOU19OQU1FX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigidm5zIG5hbWUgbXVzdCBiZSBhLXosIEEtWiwgMC05LCAtIG9yIF8iKQotCi1jbGFzcyBWbnNJbnRlcmZhY2VOYW1lVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLlZOU19JTlRFUkZBQ0VfUkUgPSByZS5jb21waWxlKHInXlthLXpBLVowLTlfLV0rJCcpCi0gICAgICAgIHNlbGYuUE9SVF9SRSA9IHJlLmNvbXBpbGUocideKFtBLVphLXowLTktXSo/KShcZCspJCcpCi0gICAgICAgIHNlbGYuTUFDX1JFID0gcmUuY29tcGlsZShyJ14oKFtBLUZhLWZcZF0pezJ9Oj8pezV9W0EtRmEtZlxkXXsyfSQnKQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsdmFsdWUpOgotICAgICAgICBpZiBub3Qgc2VsZi5WTlNfSU5URVJGQUNFX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIGl0ZW1zID0gdmFsdWUuc3BsaXQoJy8nKQotICAgICAgICAgICAgaWYgbGVuKGl0ZW1zKSA9PSAyOgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLlBPUlRfUkUubWF0Y2goaXRlbXNbMV0pIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLk1BQ19SRS5tYXRjaChpdGVtc1sxXSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoImludGVyZmFjZSBuYW1lIGFmdGVyICcvJyBtdXN0IGJlIGVpdGhlciBhIHBvcnQgb3IgYSBtYWMgYWRkcmVzcyIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiaW52YWxpZCBzeW50YXggZm9yIGludGVyZmFjZSBuYW1lIikKLQotY2xhc3MgVm5zQWNsTmFtZVZhbGlkYXRvcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5WTlNfQUNMX05BTUVfUkUgPSByZS5jb21waWxlKHInW2EtekEtWjAtOV8tXSskJykKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLHZhbHVlKToKLSAgICAgICAgaWYgbm90IHNlbGYuVk5TX0FDTF9OQU1FX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiYWNsIG5hbWUgbXVzdCBiZSBhLXosIEEtWiwgMC05LCAtIG9yIF8iKQotCi1jbGFzcyBWbnNBY2xFbnRyeUFjdGlvblZhbGlkYXRvcihvYmplY3QpOgotICAgIGRlZiBfX2NhbGxfXyhzZWxmLHZhbHVlKToKLSAgICAgICAgaWYgbm90ICJwZXJtaXQiLnN0YXJ0c3dpdGgodmFsdWUubG93ZXIoKSkgYW5kIFwKLSAgICAgICAgICAgbm90ICJkZW55Ii5zdGFydHN3aXRoKHZhbHVlLmxvd2VyKCkpOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJhY2wgZW50cnkgYWN0aW9uIG11c3QgYmUgJ3Blcm1pdCcgb3IgJ2RlbnknIikKLQotY2xhc3MgVm5zSW50ZXJmYWNlQWNsSW5PdXRWYWxpZGF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19jYWxsX18oc2VsZix2YWx1ZSk6Ci0gICAgICAgIGlmIG5vdCAiaW4iLnN0YXJ0c3dpdGgodmFsdWUubG93ZXIoKSkgYW5kIFwKLSAgICAgICAgICAgbm90ICJvdXQiLnN0YXJ0c3dpdGgodmFsdWUubG93ZXIoKSk6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoImFjbCBlbnRyeSBhY3Rpb24gbXVzdCBiZSAncGVybWl0JyBvciAnZGVueSciKQotCi1jbGFzcyBWbnNSdWxlTmFtZVZhbGlkYXRvcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5JRl9OQU1FX1JFID0gcmUuY29tcGlsZShyJ15cZCokJykKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLklGX05BTUVfUkUubWF0Y2godmFsdWUpOgotICAgICAgICAgICAgcHJpbnQgdmFsdWUKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiSW52YWxpZCBydWxlIG5hbWUsIG9ubHkgZGlnaXRzIGFsbG93ZWQiKQotCi1jbGFzcyBUYWdOYW1lVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLlRBR19OQU1FX1JFID0gcmUuY29tcGlsZShyJ15bYS16QS1aMC05Xy1dKyg/OlwuP1thLXpBLVowLTlfLV0rKSooPzpcfFthLXpBLVowLTlfLV0rKSskJykKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLHZhbHVlKToKLSAgICAgICAgaWYgbm90IHNlbGYuVEFHX05BTUVfUkUubWF0Y2godmFsdWUpOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJJbnZhbGlkIHRhZzogIiArIHZhbHVlICsgIlxuRm9ybWF0OiB0YWcgbmFtZXNwYWNlfG5hbWVsfHZhbHVlMSwgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAid2hlcmUgbmFtZXNwYWNlIG1heSBiZSBlbXB0eSBvciBtdXN0IGJlIGEteiwgQS1aLCAwLTksIC0sIC4gb3IgXywgIiArIAotICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUgYW5kIHZhbHVlIG11c3QgYmUgYS16LCBBLVosIDAtOSwgLSBvciBfIikKLQotCi1jbGFzcyBWbnNBcnBNb2RlVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLkFSUF9NT0RFUyA9IFsnZmxvb2QtaWYtdW5rbm93bicsICdhbHdheXMtZmxvb2QnLCAnZHJvcC1pZi11bmtub3duJ10KLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLHZhbHVlKToKLSAgICAgICAgaWYgbm90IHZhbHVlIGluIHNlbGYuQVJQX01PREVTOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJtdXN0IGJlIG9uZSBvZiAlcyIgJSAnLCAnLmpvaW4oc2VsZi5BUlBfTU9ERVMpKQotCi1jbGFzcyBWbnNEaGNwTW9kZVZhbGlkYXRvcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5ESENQX01PREVTID0gWydmbG9vZC1pZi11bmtub3duJywgJ2Fsd2F5cy1mbG9vZCcsICdzdGF0aWMnXQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsdmFsdWUpOgotICAgICAgICBpZiBub3QgdmFsdWUgaW4gc2VsZi5ESENQX01PREVTOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJtdXN0IGJlIG9uZSBvZiAlcyIgJSAnLCAnLmpvaW4oc2VsZi5ESENQX01PREVTKSkKLQotY2xhc3MgVm5zQnJvYWRjYXN0TW9kZVZhbGlkYXRvcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5CUk9BRENBU1RfTU9ERVMgPSBbJ2Ryb3AnLCAnYWx3YXlzLWZsb29kJywgJ2ZvcndhcmQtdG8ta25vd24nXQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsdmFsdWUpOgotICAgICAgICBpZiBub3QgdmFsdWUgaW4gc2VsZi5CUk9BRENBU1RfTU9ERVM6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIm11c3QgYmUgb25lIG9mICVzIiAlICcsICcuam9pbihzZWxmLkJST0FEQ0FTVF9NT0RFUykpCi0gICAgICAgIAotY2xhc3MgSW50Zk5hbWVWYWxpZGF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuSW50Zk5hbWVfUkUgPSByZS5jb21waWxlKHInXmV0aGVybmV0WzAtOV0nKQotICAgICAgICAKLSAgICBkZWYgX19jYWxsX18oc2VsZiwgdmFsdWUpOgotICAgICAgICBpZiBub3Qgc2VsZi5JbnRmTmFtZV9SRS5tYXRjaCh2YWx1ZSk6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIkludGVyZmFjZSBuYW1lIG11c3QgYmUgRXRoZXJuZXQ8bnVtPiIpCi0KLWNsYXNzIERvbWFpbk5hbWVWYWxpZGF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuRG9tYWluTmFtZV9SRSA9IHJlLmNvbXBpbGUocideKFthLXpBLVowLTktXSsuPykrJCcpCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsdmFsdWUpOgotICAgICAgICBpZiBub3Qgc2VsZi5Eb21haW5OYW1lX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiVmFsdWUgbXVzdCBiZSBhIHZhbGlkIGRvbWFpbiBuYW1lIikKLQotY2xhc3MgSXBPckRvbWFpbk5hbWVWYWxpZGF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuRG9tYWluTmFtZV9SRSA9IHJlLmNvbXBpbGUocideKFthLXpBLVowLTktXSsuPykrJCcpCi0gICAgICAgIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLHZhbHVlKToKLSAgICAgICAgaWYgbm90IElQX1JFLm1hdGNoKHZhbHVlKSBhbmQgbm90IHNlbGYuRG9tYWluTmFtZV9SRS5tYXRjaCh2YWx1ZSk6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoIlZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBhZGRyZXNzIG9yIGRvbWFpbiBuYW1lIikKLSAgICAgICAgCi1jbGFzcyBUaW1lWm9uZVZhbGlkYXRvcihvYmplY3QpOgotICAgIHRpbWV6b25lcyA9IE5vbmUKLSAgICBkZWYgX19jYWxsX18oc2VsZiwgdmFsdWUpOgotICAgICAgICBpZiBub3QgVGltZVpvbmVWYWxpZGF0b3IudGltZXpvbmVzOgotICAgICAgICAgICAgaW1wb3J0IHB5dHoKLSAgICAgICAgICAgIFRpbWVab25lVmFsaWRhdG9yLnRpbWV6b25lcyA9IHB5dHouYWxsX3RpbWV6b25lcwotICAgICAgICBpZiB2YWx1ZSBub3QgaW4gVGltZVpvbmVWYWxpZGF0b3IudGltZXpvbmVzOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJJbnZhbGlkIHRpbWUgem9uZSBzdHJpbmciKQotICAgICAgICAKLWNsYXNzIFZDZW50ZXJNZ3JJZHNWYWxpZGF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuVkNlbnRlck1ncklkX1JFID0gcmUuY29tcGlsZShyJ15bYS16QS1aXShbYS16QS1aMC05Xy1dKSonKQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLHZhbHVlKToKLSAgICAgICAgaWYgbm90IHNlbGYuVkNlbnRlck1ncklkX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiVmFsdWUgbXVzdCBiZSBhIHZhbGlkIG5hbWUsIHN0YXJ0cyB3aXRoIGEgYWxwaGFiZXQgYW5kIGNhbiBoYXZlIGFscGhhYmV0cywgbnVtYmVycywgXyBhbmQgLSIpCi0gICAgICAgIAotY2xhc3MgVkNlbnRlck9iak5hbWVzVmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLlZDZW50ZXJPYmpOYW1lX1JFID0gcmUuY29tcGlsZShyJyg/IS4qXHwuKiknKQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLlZDZW50ZXJPYmpOYW1lX1JFLm1hdGNoKHZhbHVlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigiVkNlbnRlciBvYmplY3QgbmFtZXMgY2FuIGNvbnRhaW4gYW55IGNoYXJhY3RlciBleGNlcHQgJ3wnIikgICAgICAgIAotICAgIAotY2xhc3MgRmVhdHVyZVZhbGlkYXRvcihvYmplY3QpOgotICAgICIiIlZhbGlkYXRlcyB0aGF0IGEgc3BlY2lmaWMgZmVhdHVyZSBoYXMgYmVlbiBpbnN0YWxsZWQKLQotICAgIFdlIGFzc3VtZSB0aGF0IGEgZmVhdHVyZSBoYXMgYmVlbiBpbnN0YWxsZWQgaWYgdGhlIGZvbGxvd2luZyBmaWxlIGV4aXN0czoKLSAgICAgICAge3NkbmNvbi5TRE5fUk9PVH0vZmVhdHVyZS88ZmVhdHVyZS1uYW1lPgotCi0gICAgTk9URTogVGhlIGZlYXR1cmUgaXMgZW5hYmxlZC9kaXNhYmxlZCBmb3IgdXNlIGJ5IHVwZGF0aW5nIHRoZSBjb250cm9sbGVyCi0gICAgb2JqZWN0LCB0aGlzIHZhbGlkYXRvciBqdXN0IGVuc3VyZXMgdGhhdCBiZWZvcmUgd2UgZW5hYmxlIGEgZmVhdHVyZSwgaXQKLSAgICBoYXMgYmVlbiBhY3R1YWxseSBpbnN0YWxsZWQuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZlYXR1cmUsIGZlYXR1cmVkaXI9Tm9uZSk6Ci0gICAgICAgIHNlbGYuZmVhdHVyZSA9IGZlYXR1cmUKLSAgICAgICAgaWYgZmVhdHVyZWRpciBpcyBOb25lOgotICAgICAgICAgICAgZmVhdHVyZWRpciA9IFwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCAnb3B0JywgJ3NkbnBsYXRmb3JtJywgJ2ZlYXR1cmUnKQotICAgICAgICBzZWxmLmZlYXR1cmVmaWxlID0gb3MucGF0aC5qb2luKGZlYXR1cmVkaXIsIGZlYXR1cmUpCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgdmFsdWUpOgotICAgICAgICBpZiB2YWx1ZSBhbmQgbm90IG9zLnBhdGguaXNmaWxlKHNlbGYuZmVhdHVyZWZpbGUpOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICAnRmVhdHVyZSBub3QgaW5zdGFsbGVkLCBwbGVhc2UgaW5zdGFsbCAiJXMiJyAlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmVhdHVyZSkKLQotY2xhc3MgVmxhblN0cmluZ1ZhbGlkYXRvcihvYmplY3QpOgotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYudmxhbiA9IDAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi52bGFuID0gaW50KHZhbHVlKQotICAgICAgICAgICAgaWYgKHNlbGYudmxhbiA8IDEgb3Igc2VsZi52bGFuID4gNDA5NSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKCJWTEFOIG11c3QgYmUgaW4gdGhlIHJhbmdlIG9mIDEgdG8gNDA5NSB3aXRoIDQwOTUgYXMgdW50YWdnZWQiKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigKLSAgICAgICAgICAgICAiVkxBTiBtdXN0IGJlIGluIHRoZSByYW5nZSBvZiAxIHRvIDQwOTUgd2l0aCA0MDk1IGFzIHVudGFnZ2VkIikKLQotCi1jbGFzcyBTYWZlRm9yUHJpbWFyeUtleVZhbGlkYXRvcihvYmplY3QpOgotICAgICIiIlZhbGlkYXRlcyB0aGF0IGEgc3RyaW5nIGRvZXMgbm90IGNvbnRhaW4gYW55IGNoYXJhY3RlciB0aGF0IHdvdWxkIGJlIAotICAgIGlsbGVnYWwgZm9yIHVzZSBpbiBhIHByaW1hcnkga2V5LiBDdXJyZW50bHkgdGhpcyBpcyB0aGUgcGlwZSB8IHN5bWJvbAotICAgICIiIgotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHZhbHVlKToKLSAgICAgICAgaWYgInwiIGluIHZhbHVlOgotICAgICAgICAgICAgcmFpc2UgVmFsaWRhdGlvbkVycm9yKAotICAgICAgICAgICAgICJUaGUgcGlwZSBzeW1ib2wgJ3wnIGlzIG5vdCBhIHZhbGlkIGNoYXJhY3RlciIpCi0gICAgICAgIAotCi1jbGFzcyBJc1JlZ2V4VmFsaWRhdG9yKG9iamVjdCk6Ci0gICAgIiIiVmFsaWRhdGVzIHRoYXQgYSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24KLSAgICAiIiIKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHZhbHVlID0gc3RyKHZhbHVlKQotICAgICAgICAgICAgcmUuY29tcGlsZSh2YWx1ZSkKLSAgICAgICAgZXhjZXB0IHJlLmVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICJJbnB1dCBpcyBub3QgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb246ICVzIiwgZSkKLQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9yZXN0L3ZpZXdzLnB5IGIvY2xpL3NkbmNvbi9yZXN0L3ZpZXdzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2NmRjNzVhLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vcmVzdC92aWV3cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyMDggKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgQXV0b0ZpZWxkLCBCb29sZWFuRmllbGQsIEludGVnZXJGaWVsZCwgRmxvYXRGaWVsZCwgRm9yZWlnbktleQotZnJvbSBkamFuZ28uZm9ybXMgaW1wb3J0IFZhbGlkYXRpb25FcnJvcgotZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlCi1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgc2ltcGxlanNvbgotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCi0jZnJvbSBzZG5jb24uY29udHJvbGxlci5tb2RlbHMgaW1wb3J0IENvbnRyb2xsZXIKLSNmcm9tIHNkbmNvbi5jb250cm9sbGVyLm1vZGVscyBpbXBvcnQgQ29udHJvbGxlckFsaWFzLCBDb250cm9sbGVyRG9tYWluTmFtZVNlcnZlciwgQ29udHJvbGxlckludGVyZmFjZSwgRmlyZXdhbGxSdWxlCi0jZnJvbSBzZG5jb24uY29udHJvbGxlci5tb2RlbHMgaW1wb3J0IFN3aXRjaCwgUG9ydCwgUG9ydEFsaWFzLCBMaW5rCi1mcm9tIHNkbmNvbi5yZXN0Lm1vZGVscyBpbXBvcnQgVXNlckRhdGEKLWZyb20gc2RuY29uLmNvbnRyb2xsZXIubm90aWZpY2F0aW9uIGltcG9ydCBiZWdpbl9iYXRjaF9ub3RpZmljYXRpb24sIGVuZF9iYXRjaF9ub3RpZmljYXRpb24KLWZyb20gZGphbmdvLnZpZXdzLmRlY29yYXRvcnMuY3NyZiBpbXBvcnQgY3NyZl9leGVtcHQKLWltcG9ydCBiYXNlNjQKLWltcG9ydCB1cmxsaWIKLWltcG9ydCB1cmxsaWIyCi1pbXBvcnQgc3lzCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCB0aW1lCi1pbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCB1dWlkCi1pbXBvcnQgc3VicHJvY2VzcwotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKLWZyb20gc2RuY29uLmNvbnRyb2xsZXIub3N3cmFwcGVyIGltcG9ydCBleGVjX29zX3dyYXBwZXIKLWZyb20gc2RuY29uLmNvbnRyb2xsZXIuY29uZmlnIGltcG9ydCBnZXRfbG9jYWxfY29udHJvbGxlcl9pZAotZnJvbSBzZG5jb24ucmVzdC5jb25maWcgaW1wb3J0IGNvbmZpZ19jaGVja19zdGF0ZQotZnJvbSBzZG5jb24uY29udHJvbGxlci5vc3dyYXBwZXIgaW1wb3J0IGdldF9zeXN0ZW1fdmVyc2lvbl9zdHJpbmcKLWltcG9ydCBzZG5jb24KLQotVEVYVF9QTEFJTl9DT05URU5UX1RZUEUgPSAndGV4dC9wbGFpbicKLVRFWFRfSkFWQVNDUklQVF9DT05URU5UX1RZUEUgPSAndGV4dC9qYXZhc2NyaXB0JwotSlNPTl9DT05URU5UX1RZUEUgPSAnYXBwbGljYXRpb24vanNvbicKLUJJTkFSWV9EQVRBX0NPTlRFTlRfVFlQRSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nCi0KLW9ub3MgPSAxCi0KLWlmIG9ub3MgPT0gMToKLSAgICAjQ09OVFJPTExFUl9VUkxfUFJFRklYID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6OTAwMC93bS8nCi0gICAgQ09OVFJPTExFUl9VUkxfUFJFRklYID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC93bS8nCi1lbHNlOgotICAgIENPTlRST0xMRVJfVVJMX1BSRUZJWCA9ICdodHRwOi8vbG9jYWxob3N0OjgwODAvd20vJwotCi1kZWYgY29udHJvbGxlcl91cmwoKmVsZW1lbnRzKToKLSAgICByZXR1cm4gQ09OVFJPTExFUl9VUkxfUFJFRklYICsgJy8nLmpvaW4oZWxlbWVudHMpCi0KLWNsYXNzIFJlc3RFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICBwYXNzCi0gICAgICAgIAotY2xhc3MgUmVzdEludmFsaWREYXRhVHlwZUV4Y2VwdGlvbihSZXN0RXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHN1cGVyKFJlc3RJbnZhbGlkRGF0YVR5cGVFeGNlcHRpb24sc2VsZikuX19pbml0X18oJ0ludmFsaWQgZGF0YSB0eXBlOiAnICsgbmFtZSkKLQotY2xhc3MgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oUmVzdEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBlcihSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbixzZWxmKS5fX2luaXRfXygnSW52YWxpZCBIVFRQIG1ldGhvZCcpCi0KLWNsYXNzIFJlc3RSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uKFJlc3RFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwpOgotICAgICAgICBzdXBlcihSZXN0UmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbixzZWxmKS5fX2luaXRfXygnUmVzb3VyY2Ugbm90IGZvdW5kOiAnICsgdXJsKQotCi1jbGFzcyBSZXN0RGF0YWJhc2VDb25uZWN0aW9uRXhjZXB0aW9uKFJlc3RFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoUmVzdERhdGFiYXNlQ29ubmVjdGlvbkV4Y2VwdGlvbixzZWxmKS5fX2luaXRfXygnRXJyb3IgY29ubmVjdGluZyB0byBkYXRhYmFzZScpCi0gICAgICAgIAotY2xhc3MgUmVzdEF1dGhlbnRpY2F0aW9uUmVxdWlyZWRFeGNlcHRpb24oUmVzdEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBlcihSZXN0QXV0aGVudGljYXRpb25SZXF1aXJlZEV4Y2VwdGlvbixzZWxmKS5fX2luaXRfXygnQXV0aGVudGljYXRpb24gcmVxdWlyZWQnKQotCi1jbGFzcyBSZXN0SW52YWxpZFF1ZXJ5UGFyYW1ldGVyRXhjZXB0aW9uKFJlc3RFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJhbV9uYW1lKToKLSAgICAgICAgc3VwZXIoUmVzdEludmFsaWRRdWVyeVBhcmFtZXRlckV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18oJ0ludmFsaWQgcXVlcnkgcGFyYW1ldGVyOiAnICsgc3RyKHBhcmFtX25hbWUpKQotCi1jbGFzcyBSZXN0SW52YWxpZEZpbHRlclBhcmFtZXRlckV4Y2VwdGlvbihSZXN0RXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyYW1fbmFtZSk6Ci0gICAgICAgIHN1cGVyKFJlc3RJbnZhbGlkRmlsdGVyUGFyYW1ldGVyRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXygnRmlsdGVyIHF1ZXJ5IHBhcmFtZXRlcnMgbm90IGFsbG93ZWQgd2hlbiBVUkwgY29udGFpbnMgcmVzb3VyY2UgaUQ6ICcgKyBzdHIocGFyYW1fbmFtZSkpCi0KLWNsYXNzIFJlc3ROb0xpc3RSZXN1bHRFeGNlcHRpb24oUmVzdEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBlcihSZXN0Tm9MaXN0UmVzdWx0RXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXygnVGhlIHF1ZXJ5IHJlc3VsdCBtdXN0IGJlIGEgc2luZ2xlIGluc3RhbmNlIGlmIHRoZSAibm9saXN0IiBxdWVyeSBwYXJhbSBpcyBzZXQnKQotCi1jbGFzcyBSZXN0SW52YWxpZFB1dERhdGFFeGNlcHRpb24oUmVzdEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBlcihSZXN0SW52YWxpZFB1dERhdGFFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKCdUaGUgcmVxdWVzdCBkYXRhIGZvciBhIFBVVCByZXF1ZXN0IG11c3QgYmUgYSBKU09OIGRpY3Rpb25hcnkgb2JqZWN0JykKLQotY2xhc3MgUmVzdE1pc3NpbmdSZXF1aXJlZFF1ZXJ5UGFyYW1FeGNlcHRpb24oUmVzdEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmFtX25hbWUpOgotICAgICAgICBzdXBlcihSZXN0TWlzc2luZ1JlcXVpcmVkUXVlcnlQYXJhbUV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18oJ01pc3NpbmcgcmVxdWlyZWQgcXVlcnkgcGFyYW1ldGVyOiAnICsgc3RyKHBhcmFtX25hbWUpKQotCi1jbGFzcyBSZXN0VmFsaWRhdGlvbkV4Y2VwdGlvbihSZXN0RXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWxfZXJyb3I9Tm9uZSwgZmllbGRfZXJyb3JzPU5vbmUpOgotICAgICAgICAjIEJ1aWxkIHRoZSBleGNlcHRpb24gbWVzc2FnZSBmcm9tIG1vZGVsIGVycm9yIGFuZCBmaWVsZCBlcnJvcnMKLSAgICAgICAgbWVzc2FnZSA9ICdWYWxpZGF0aW9uIGVycm9yJwotICAgICAgICBpZiBtb2RlbF9lcnJvcjoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlICsgJzsgJyArIG1vZGVsX2Vycm9yCi0gICAgICAgIGlmIGZpZWxkX2Vycm9yczoKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gJzsgaW52YWxpZCBmaWVsZHM6IHsnCi0gICAgICAgICAgICBmaXJzdF90aW1lID0gVHJ1ZQotICAgICAgICAgICAgZm9yIGZpZWxkX25hbWUsIGZpZWxkX21lc3NhZ2UgaW4gZmllbGRfZXJyb3JzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGZpcnN0X3RpbWU6Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJzsgJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZpcnN0X3RpbWUgPSBGYWxzZQotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlICsgZmllbGRfbmFtZSArICc6ICcgKyBmaWVsZF9tZXNzYWdlCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBtZXNzYWdlICs9ICd9JwotICAgICAgICAgICAgCi0gICAgICAgIHN1cGVyKFJlc3RWYWxpZGF0aW9uRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhtZXNzYWdlKQotICAgICAgICBzZWxmLm1vZGVsX2Vycm9yID0gbW9kZWxfZXJyb3IKLSAgICAgICAgc2VsZi5maWVsZF9lcnJvcnMgPSBmaWVsZF9lcnJvcnMKLSAgICAgICAgCi1jbGFzcyBSZXN0TW9kZWxFeGNlcHRpb24oUmVzdEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Yyk6Ci0gICAgICAgIHN1cGVyKFJlc3RNb2RlbEV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18oJ0Vycm9yOiAnICsgc3RyKGV4YykpCi0KLWNsYXNzIFJlc3RTYXZlRXhjZXB0aW9uKFJlc3RFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGMpOgotICAgICAgICBzdXBlcihSZXN0U2F2ZUV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18oJ0Vycm9yIHNhdmluZyBkYXRhOiAnICsgc3RyKGV4YykpCi0KLWNsYXNzIFJlc3RJbnZhbGlkT3JkZXJCeUV4Y2VwdGlvbihSZXN0RXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZixmaWVsZF9uYW1lKToKLSAgICAgICAgc3VwZXIoUmVzdEludmFsaWRPcmRlckJ5RXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXygnSW52YWxpZCBvcmRlcmJ5IGZpZWxkOiAnICsgZmllbGRfbmFtZSkKLSAgICAgICAgCi1jbGFzcyBSZXN0SW50ZXJuYWxFeGNlcHRpb24oUmVzdEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Yyk6Ci0gICAgICAgIHN1cGVyKFJlc3RJbnRlcm5hbEV4Y2VwdGlvbixzZWxmKS5fX2luaXRfXygnVW5rbm93biBSRVNUIGVycm9yOiAnICsgdW5pY29kZShleGMpKQotCi1jbGFzcyBSZXN0VXBncmFkZUV4Y2VwdGlvbihSZXN0RXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjKToKLSAgICAgICAgc3VwZXIoUmVzdFVwZ3JhZGVFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKCdFcnJvcjogJyArIHN0cihleGMpKQotCi1jbGFzcyBSZXN0UHJvdmlzaW9uRXhjZXB0aW9uKFJlc3RFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGMpOgotICAgICAgICBzdXBlcihSZXN0UHJvdmlzaW9uRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXygnRXJyb3I6ICcgKyBzdHIoZXhjKSkKLQotY2xhc3MgUmVzdERlY29tbWlzc2lvbkV4Y2VwdGlvbihSZXN0RXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjKToKLSAgICAgICAgc3VwZXIoUmVzdERlY29tbWlzc2lvbkV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18oJ0Vycm9yOiAnICsgc3RyKGV4YykpCi0KLWNsYXNzIFJlc3RJbnZhbGlkTG9nKFJlc3RFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGMpOgotICAgICAgICBzdXBlcihSZXN0SW52YWxpZExvZywgc2VsZikuX19pbml0X18oJ0Vycm9yOiAnICsgc3RyKGV4YykpCi0KLWRlZiBoYW5kbGVfdmFsaWRhdGlvbl9lcnJvcihtb2RlbF9pbmZvLCB2YWxpZGF0aW9uX2Vycm9yKToKLSAgICBtb2RlbF9lcnJvciA9IE5vbmUKLSAgICBmaWVsZF9lcnJvcnMgPSBOb25lCi0gICAgaWYgaGFzYXR0cih2YWxpZGF0aW9uX2Vycm9yLCAnbWVzc2FnZV9kaWN0Jyk6Ci0gICAgICAgICMgVGhlIGZpZWxkIGVycm9ycyB3ZSBnZXQgaW4gdGhlIFZhbGlkYXRpb25FcnJvciBhcmUgYSBiaXQgZGlmZmVyZW50Ci0gICAgICAgICMgdGhlbiB3aGF0IHdlIHdhbnQgZm9yIHRoZSBSZXN0VmFsaWRhdGlvbkV4Y2VwdGlvbi4gRmlyc3QsIHdlCi0gICAgICAgICMgbmVlZCB0byBjb252ZXJ0IHRoZSBEamFuZ28gZmllbGQgbmFtZSB0byB0aGUgKHBvc3NpYmx5IHJlbmFtZWQpCi0gICAgICAgICMgUkVTVCBmaWVsZCBuYW1lLiBTZWNvbmQsIHRoZSBwZXItZmllbGQgZXJyb3IgbWVzc2FnZSBpcyBwb3NzaWJseSBhCi0gICAgICAgICMgbGlzdCBvZiBtZXNzYWdlcywgd2hpY2ggd2UgY29uY2F0ZW5hdGUgaW50byBhIHNpbmdsZSBzdHJpbmcgZm9yIHRoZQotICAgICAgICAjIFJlc3RWYWxpZGF0aW9uRXhjZXB0aW9uCi0gICAgICAgIGZvciBmaWVsZF9uYW1lLCBmaWVsZF9tZXNzYWdlIGluIHZhbGlkYXRpb25fZXJyb3IubWVzc2FnZV9kaWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiB0eXBlKGZpZWxkX21lc3NhZ2UpIGluIChsaXN0LCB0dXBsZSk6Ci0gICAgICAgICAgICAgICAgY29udmVydGVkX2ZpZWxkX21lc3NhZ2UgPSAnJwotICAgICAgICAgICAgICAgIGZvciBtc2cgaW4gZmllbGRfbWVzc2FnZToKLSAgICAgICAgICAgICAgICAgICAgY29udmVydGVkX2ZpZWxkX21lc3NhZ2UgPSBjb252ZXJ0ZWRfZmllbGRfbWVzc2FnZSArIG1zZyArICcgJwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb252ZXJ0ZWRfZmllbGRfbWVzc2FnZSArPSB1bmljb2RlKGZpZWxkX21lc3NhZ2UpCi0gICAgICAgICAgICBpZiBmaWVsZF9uYW1lID09ICdfX2FsbF9fJzoKLSAgICAgICAgICAgICAgICBtb2RlbF9lcnJvciA9IGNvbnZlcnRlZF9maWVsZF9tZXNzYWdlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIG5vdCBmaWVsZF9lcnJvcnM6Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkX2Vycm9ycyA9IHt9Ci0gICAgICAgICAgICAgICAgZmllbGRfaW5mbyA9IG1vZGVsX2luZm8uZmllbGRfbmFtZV9kaWN0LmdldChmaWVsZF9uYW1lKQotICAgICAgICAgICAgICAgIGlmIGZpZWxkX2luZm86Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkX2Vycm9yc1tmaWVsZF9pbmZvLnJlc3RfbmFtZV0gPSBjb252ZXJ0ZWRfZmllbGRfbWVzc2FnZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkX2Vycm9yc1tmaWVsZF9uYW1lXSA9ICdQcml2YXRlIGZpZWxkIGludmFsaWQ7ICcgKyBjb252ZXJ0ZWRfZmllbGRfbWVzc2FnZQotICAgIGVsaWYgaGFzYXR0cih2YWxpZGF0aW9uX2Vycm9yLCAnbWVzc2FnZXMnKToKLSAgICAgICAgbW9kZWxfZXJyb3IgPSAnOicuam9pbih2YWxpZGF0aW9uX2Vycm9yLm1lc3NhZ2VzKQotICAgIGVsc2U6Ci0gICAgICAgIG1vZGVsX2Vycm9yID0gc3RyKHZhbGlkYXRpb25fZXJyb3IpCi0gICAgcmFpc2UgUmVzdFZhbGlkYXRpb25FeGNlcHRpb24obW9kZWxfZXJyb3IsIGZpZWxkX2Vycm9ycykKLQotZGVmIGdldF9zdWNjZXNzZnVsX3Jlc3BvbnNlKGRlc2NyaXB0aW9uPU5vbmUsIHN0YXR1c19jb2RlPTIwMCk6Ci0gICAgY29udGVudCA9IGdldF9zdWNjZXNzZnVsX3Jlc3BvbnNlX2RhdGEoZGVzY3JpcHRpb24pCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShjb250ZW50LCBKU09OX0NPTlRFTlRfVFlQRSwgc3RhdHVzX2NvZGUpCi0KLWRlZiBnZXRfc3VjY2Vzc2Z1bF9yZXNwb25zZV9kYXRhKGRlc2NyaXB0aW9uID0gJ3N1Y2Nlc3MnKToKLSAgICBvYmogPSB7J2Rlc2NyaXB0aW9uJzogZGVzY3JpcHRpb259Ci0gICAgcmV0dXJuIHNpbXBsZWpzb24uZHVtcHMob2JqKQotIAotZGVmIGdldF9zZG5wbGF0Zm9ybV9yZXNwb25zZSh1cmwsIHRpbWVvdXQgPSBOb25lKToKLSAgICAKLSAgICB0cnk6Ci0gICAgICAgIHJlc3BvbnNlX3RleHQgPSB1cmxsaWIyLnVybG9wZW4odXJsLCB0aW1lb3V0PXRpbWVvdXQpLnJlYWQoKQotICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHJlc3BvbnNlX3RleHQsIEpTT05fQ09OVEVOVF9UWVBFKQotICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBFcnJvciwgZToKLSAgICAgICAgcmVzcG9uc2VfdGV4dCA9IGUucmVhZCgpCi0gICAgICAgIHJlc3BvbnNlID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZV90ZXh0KQotICAgICAgICByZXNwb25zZVsnZXJyb3JfdHlwZSddID0gIlNETlBsYXRmb3JtRXJyb3IiCi0gICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2UoY29udGVudD1zaW1wbGVqc29uLmR1bXBzKHJlc3BvbnNlKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPWUuY29kZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPUpTT05fQ09OVEVOVF9UWVBFKQotCi1kZWYgZ2V0X3NkbnBsYXRmb3JtX3F1ZXJ5KHJlcXVlc3QsIHBhdGgpOgotICAgICIiIgotICAgIFRoaXMgcmV0dXJucyBjb250cm9sbGVyLWxldmVsIHN0b3JhZ2UgdGFibGUgbGlzdAotICAgICIiIgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgdXJsID0gY29udHJvbGxlcl91cmwocGF0aCkgKyAnLz8lcycgJSByZXF1ZXN0Lk1FVEFbJ1FVRVJZX1NUUklORyddCi0gICAgcmV0dXJuIGdldF9zZG5wbGF0Zm9ybV9yZXNwb25zZSh1cmwpICAgICAgICAKLQotZGVmIHNhZmVfcmVzdF92aWV3KGZ1bmMpOgotICAgICIiIgotICAgIFRoaXMgaXMgYSBkZWNvcmF0b3IgdGhhdCB0YWtlcyBjYXJlIG9mIGV4Y2VwdGlvbiBoYW5kbGluZyBmb3IgdGhlCi0gICAgUkVTVCB2aWV3cyBzbyB0aGF0IHdlIHJldHVybiBhbiBhcHByb3ByaWF0ZSBlcnJvciBIdHRwUmVzcG9uc2UgaWYKLSAgICBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gdGhlIHZpZXcKLSAgICAiIiIKLSAgICBAd3JhcHMoZnVuYykKLSAgICBkZWYgX2Z1bmMoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzcG9uc2UgPSBmdW5jKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXhjOgotICAgICAgICAgICAgZW5kX2JhdGNoX25vdGlmaWNhdGlvbihUcnVlKQotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjLCBSZXN0RXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICAjIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgICAgIGV4YyA9IFJlc3RJbnRlcm5hbEV4Y2VwdGlvbihleGMpCi0gICAgICAgICAgICByZXNwb25zZV9vYmogPSB7J2Vycm9yX3R5cGUnOiBleGMuX19jbGFzc19fLl9fbmFtZV9fLCAnZGVzY3JpcHRpb24nOiB1bmljb2RlKGV4Yyl9Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgUmVzdFZhbGlkYXRpb25FeGNlcHRpb24pOgotICAgICAgICAgICAgICAgIGlmIGV4Yy5tb2RlbF9lcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Vfb2JqWydtb2RlbF9lcnJvciddID0gZXhjLm1vZGVsX2Vycm9yCi0gICAgICAgICAgICAgICAgaWYgZXhjLmZpZWxkX2Vycm9yczoKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Vfb2JqWydmaWVsZF9lcnJvcnMnXSA9IGV4Yy5maWVsZF9lcnJvcnMKLSAgICAgICAgICAgIGNvbnRlbnQgPSBzaW1wbGVqc29uLmR1bXBzKHJlc3BvbnNlX29iaikKLSAgICAgICAgICAgIGNvbnRlbnRfdHlwZSA9IEpTT05fQ09OVEVOVF9UWVBFCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhjLCBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbik6Ci0gICAgICAgICAgICAgICAgc3RhdHVzX2NvZGUgPSA0MDUKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShleGMsIFJlc3RSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSA9IDQwNAotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV4YywgUmVzdEludGVybmFsRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSA9IDUwMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSA9IDQwMAotICAgICAgICAgICAgcmVzcG9uc2UgPSBIdHRwUmVzcG9uc2UoY29udGVudCwgY29udGVudF90eXBlLCBzdGF0dXNfY29kZSkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhjLCBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbik6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2VbJ0FsbG93J10gPSAiR0VULCBQVVQsIERFTEVURSIKLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0gICAgcmV0dXJuIF9mdW5jCi0KLXJlc3RfbW9kZWxfaW5mb19kaWN0ID0ge30KLQotY2xhc3MgUmVzdEZpZWxkSW5mbyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkamFuZ29fZmllbGRfaW5mbywgaGlkZGVuPUZhbHNlLAotICAgICAgICAgICAgICAgICByZXN0X25hbWU9Tm9uZSwganNvbl9zZXJpYWxpemU9RmFsc2UpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuZGphbmdvX2ZpZWxkX2luZm8gPSBkamFuZ29fZmllbGRfaW5mbwotICAgICAgICBzZWxmLnJlc3RfbmFtZSA9IHJlc3RfbmFtZQotICAgICAgICBzZWxmLmpzb25fc2VyaWFsaXplID0ganNvbl9zZXJpYWxpemUKLSAgICAgICAgCi1jbGFzcyBSZXN0TW9kZWxJbmZvKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlc3RfbmFtZSwgbW9kZWxfY2xhc3MpOgotICAgICAgICBzZWxmLnJlc3RfbmFtZSA9IHJlc3RfbmFtZQotICAgICAgICBzZWxmLm1vZGVsX2NsYXNzID0gbW9kZWxfY2xhc3MKLSAgICAgICAgc2VsZi5wcmltYXJ5X2tleSA9IE5vbmUKLSAgICAgICAgc2VsZi5maWVsZF9uYW1lX2RpY3QgPSB7fQotICAgICAgICBzZWxmLnJlc3RfbmFtZV9kaWN0ID0ge30KLSAgICAgICAgCi0gICAgICAgIGZvciBmaWVsZCBpbiBtb2RlbF9jbGFzcy5fbWV0YS5sb2NhbF9maWVsZHM6Ci0gICAgICAgICAgICBmaWVsZF9uYW1lID0gZmllbGQubmFtZQotICAgICAgICAgICAgcmVzdF9uYW1lID0gZmllbGQubmFtZQotICAgICAgICAgICAgaWYgZmllbGQucHJpbWFyeV9rZXk6Ci0gICAgICAgICAgICAgICAgc2VsZi5wcmltYXJ5X2tleSA9IGZpZWxkX25hbWUKLSAgICAgICAgICAgICMgVE9ETzogQXJlIHRoZXJlIG90aGVyIGZpZWxkIHR5cGVzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGhlcmU/Ci0gICAgICAgICAgICBqc29uX3NlcmlhbGl6ZSA9ICB0eXBlKGZpZWxkKSBub3QgaW4gKEF1dG9GaWVsZCwgQm9vbGVhbkZpZWxkLCBJbnRlZ2VyRmllbGQsIEZsb2F0RmllbGQpCi0gICAgICAgICAgICBzZWxmLnNldF9maWVsZF9pbmZvKGZpZWxkX25hbWUsIHJlc3RfbmFtZSwgZmllbGQsIGpzb25fc2VyaWFsaXplKQotCi0gICAgCi0gICAgIyB0aGlzIGlzIGhvdyBhIFJlc3RGaWVsZEluZm8gaXMgY3JlYXRlZCAtIHBhc3MgaW4gZGphbmdvX2ZpZWxkX2luZm8KLSAgICBkZWYgZ2V0X2ZpZWxkX2luZm8oc2VsZiwgZmllbGRfbmFtZSwgZGphbmdvX2ZpZWxkX2luZm89Tm9uZSk6Ci0gICAgICAgIGZpZWxkX2luZm8gPSBzZWxmLmZpZWxkX25hbWVfZGljdC5nZXQoZmllbGRfbmFtZSkKLSAgICAgICAgaWYgbm90IGZpZWxkX2luZm8gYW5kIGRqYW5nb19maWVsZF9pbmZvOgotICAgICAgICAgICAgZmllbGRfaW5mbyA9IFJlc3RGaWVsZEluZm8oZmllbGRfbmFtZSwgZGphbmdvX2ZpZWxkX2luZm8pCi0gICAgICAgICAgICBzZWxmLmZpZWxkX25hbWVfZGljdFtmaWVsZF9uYW1lXSA9IGZpZWxkX2luZm8KLSAgICAgICAgcmV0dXJuIGZpZWxkX2luZm8KLSAgICAKLSAgICBkZWYgaGlkZV9maWVsZChzZWxmLCBmaWVsZF9uYW1lKToKLSAgICAgICAgZmllbGRfaW5mbyA9IHNlbGYuZ2V0X2ZpZWxkX2luZm8oZmllbGRfbmFtZSkKLSAgICAgICAgZGVsIHNlbGYuZmllbGRfbmFtZV9kaWN0W2ZpZWxkX25hbWVdCi0gICAgICAgIGRlbCBzZWxmLnJlc3RfbmFtZV9kaWN0W2ZpZWxkX2luZm8ucmVzdF9uYW1lXQotICAgICAgICAKLSAgICBkZWYgc2V0X2ZpZWxkX2luZm8oc2VsZiwgZmllbGRfbmFtZSwgcmVzdF9uYW1lLCBkamFuZ29fZmllbGRfaW5mbywganNvbl9zZXJpYWxpemU9Tm9uZSk6Ci0gICAgICAgIGZpZWxkX2luZm8gPSBzZWxmLmdldF9maWVsZF9pbmZvKGZpZWxkX25hbWUsIGRqYW5nb19maWVsZF9pbmZvKQotICAgICAgICBpZiBmaWVsZF9pbmZvLnJlc3RfbmFtZSBpbiBzZWxmLnJlc3RfbmFtZV9kaWN0OgotICAgICAgICAgICAgZGVsIHNlbGYucmVzdF9uYW1lX2RpY3RbZmllbGRfaW5mby5yZXN0X25hbWVdCi0gICAgICAgIGZpZWxkX2luZm8ucmVzdF9uYW1lID0gcmVzdF9uYW1lCi0gICAgICAgIGlmIGpzb25fc2VyaWFsaXplICE9IE5vbmU6Ci0gICAgICAgICAgICBmaWVsZF9pbmZvLmpzb25fc2VyaWFsaXplID0ganNvbl9zZXJpYWxpemUKLSAgICAgICAgc2VsZi5yZXN0X25hbWVfZGljdFtyZXN0X25hbWVdID0gZmllbGRfaW5mbwotCi1kZWYgZ2V0X3Jlc3RfbW9kZWxfaW5mbyhuYW1lKToKLSAgICByZXR1cm4gcmVzdF9tb2RlbF9pbmZvX2RpY3RbbmFtZV0KLQotZGVmIGFkZF9yZXN0X21vZGVsX2luZm8oaW5mbyk6Ci0gICAgaWYgcmVzdF9tb2RlbF9pbmZvX2RpY3QuZ2V0KGluZm8ucmVzdF9uYW1lKToKLSAgICAgICAgcmFpc2UgUmVzdEV4Y2VwdGlvbignUkVTVCBtb2RlbCBpbmZvIGFscmVhZHkgZXhpc3RzJykKLSAgICByZXN0X21vZGVsX2luZm9fZGljdFtpbmZvLnJlc3RfbmFtZV0gPSBpbmZvCi0gICAgCi1yZXN0X2luaXRpYWxpemVkID0gRmFsc2UKLQotZGVmIGdldF9kZWZhdWx0X3Jlc3RfbmFtZShtb2RlbCk6Ci0gICAgIyBUT0RPOiBJZGVhbGx5IHNob3VsZCBkbyBzb21ldGhpbmcgYSBiaXQgc21hcnRlciBoZXJlLgotICAgICMgU29tZXRoaW5nIGxpa2UgY29udmVydCBmcm9tIGNhbWVsLWNhc2UgY2xhc3MgbmFtZXMgdG8gaHlwaGVuYXRlZCBuYW1lczoKLSAgICAjIEZvciBleGFtcGxlOgotICAgICMgIE15VGVzdENsYXNzID0+IG15LXRlc3QtY2xhc3MKLSAgICAjICBNeVVSTENsYXNzID0+IG15LXVybC1jbGFzcwotICAgICMKLSAgICAjIFRoaXMgaXNuJ3Qgc3VwZXItaW1wb3J0YW50IGZvciBub3csIHNpbmNlIHlvdSBjYW4gc2V0IGl0IGV4cGxpY2l0bHkKLSAgICAjIHdpdGggdGhlIG5lc3RlZCBSZXN0IGNsYXNzLgotICAgIHJldHVybiBtb2RlbC5fX25hbWVfXy5sb3dlcigpCi0KLWRlZiBpbml0aWFsaXplX3Jlc3QoKToKLSAgICBnbG9iYWwgcmVzdF9pbml0aWFsaXplZAotICAgIGlmIHJlc3RfaW5pdGlhbGl6ZWQ6Ci0gICAgICAgIHJldHVybgotICAgIAotICAgIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgZ2V0X21vZGVscwotICAgIGZvciBtb2RlbCBpbiBnZXRfbW9kZWxzKCk6Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICMgSWYgdGhlIG1vZGVsIGNsYXNzIGhhcyBhIG5lc3RlZCBjbGFzcyBuYW1lZCAnUmVzdCcgdGhlbiB0aGF0IG1lYW5zCi0gICAgICAgICMgdGhlIG1vZGVsIHNob3VsZCBiZSBleHBvc2VkIGluIHRoZSBSRVNUIEFQSS4KLSAgICAgICAgaWYgaGFzYXR0cihtb2RlbCwgJ1Jlc3QnKToKLSAgICAgICAgICAgICMgQnkgZGVmYXVsdCB0aGUgUkVTVCBBUEkgdXNlcyB0aGUgbG93ZXItY2FzZS1jb252ZXJ0ZWQgbmFtZQotICAgICAgICAgICAgIyBvZiB0aGUgbW9kZWwgY2xhc3MgYXMgdGhlIG5hbWUgaW4gdGhlIFJFU1QgVVJMLCBidXQgdGhpcyBjYW4KLSAgICAgICAgICAgICMgYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGUgJ05BTUUnIGF0dHJpYnV0ZSBpbiB0aGUgUmVzdCBjbGFzcy4KLSAgICAgICAgICAgIGlmIGhhc2F0dHIobW9kZWwuUmVzdCwgJ05BTUUnKToKLSAgICAgICAgICAgICAgICByZXN0X25hbWUgPSBtb2RlbC5SZXN0Lk5BTUUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzdF9uYW1lID0gZ2V0X2RlZmF1bHRfcmVzdF9uYW1lKG1vZGVsKQotCi0gICAgICAgICAgICBpZiBtb2RlbC5fbWV0YS5wcm94eToKLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSBwcm94eSBjbGFzcywgZHJvcCB0aHJvdWdoIHRvIHRoZSByZWFsIG9uZQotICAgICAgICAgICAgICAgIGJhc2VfbW9kZWwgPSBtb2RlbC5fbWV0YS5wcm94eV9mb3JfbW9kZWwKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYmFzZV9tb2RlbCA9IG1vZGVsCi0gICAgICAgICAgICAKLSAgICAgICAgICAgICMgT0ssIHdlIGhhdmUgdGhlIGJhc2ljIFJFU1QgaW5mbywgc28gd2UgY2FuIGNyZWF0ZSB0aGUgaW5mbyBjbGFzcwotICAgICAgICAgICAgcmVzdF9tb2RlbF9pbmZvID0gUmVzdE1vZGVsSW5mbyhyZXN0X25hbWUsIGJhc2VfbW9kZWwpCi0gICAgICAgICAgICAKLSAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBwcml2YXRlIG9yIHJlbmFtZWQgZmllbGRzCi0gICAgICAgICAgICBpZiBoYXNhdHRyKG1vZGVsLlJlc3QsICdGSUVMRF9JTkZPJyk6Ci0gICAgICAgICAgICAgICAgZm9yIGZpZWxkX2luZm8gaW4gbW9kZWwuUmVzdC5GSUVMRF9JTkZPOgotICAgICAgICAgICAgICAgICAgICBmaWVsZF9uYW1lID0gZmllbGRfaW5mb1snbmFtZSddCi0gICAgICAgICAgICAgICAgICAgIHJlc3RfZmllbGRfaW5mbyA9IHJlc3RfbW9kZWxfaW5mby5nZXRfZmllbGRfaW5mbyhmaWVsZF9uYW1lKQotICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGlmIGZpZWxkIGV4aXN0cyBpbiBtb2RlbHMgLSBkb24ndCBhbGxvdyBmaWVsZCBvbmx5IGhlcmUgaW4gRklFTERfSU5GTykKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlc3RfZmllbGRfaW5mbzoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgTE9PSyEgVGhpcyBmaWVsZCBvbmx5IGV4aXN0cyBpbiBGSUVMRF9JTkZPIC0gc2tpcAotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkVSUk9SOiAlcyBmb3IgJXMgb25seSBpbiBGSUVMRF9JTkZPIiAlIChmaWVsZF9uYW1lLCByZXN0X25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgZmllbGRfaW5mby5nZXQoJ3ByaXZhdGUnLCBGYWxzZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN0X21vZGVsX2luZm8uaGlkZV9maWVsZChmaWVsZF9uYW1lKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdF9uYW1lID0gZmllbGRfaW5mby5nZXQoJ3Jlc3RfbmFtZScpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiByZXN0X25hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdF9tb2RlbF9pbmZvLnNldF9maWVsZF9pbmZvKGZpZWxkX25hbWUsIHJlc3RfbmFtZSwgcmVzdF9maWVsZF9pbmZvLmRqYW5nb19maWVsZF9pbmZvKQotICAgICAgICAgICAgCi0gICAgICAgICAgICAjIEZpbmlzaGVkIHNldHRpbmcgaXQgdXAsIHNvIG5vdyBhZGQgaXQgdG8gdGhlIGxpc3QKLSAgICAgICAgICAgIGFkZF9yZXN0X21vZGVsX2luZm8ocmVzdF9tb2RlbF9pbmZvKQotICAgIAotICAgIHJlc3RfaW5pdGlhbGl6ZWQgPSBUcnVlCi0KLWluaXRpYWxpemVfcmVzdCgpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX21vZGVsX2xpc3QocmVxdWVzdCk6Ci0gICAgIiIiCi0gICAgVGhpcyByZXR1cm5zIHRoZSBsaXN0IG9mIG1vZGVscyBhdmFpbGFibGUgaW4gdGhlIFJFU1QgQVBJLgotICAgICIiIgotICAgIAotICAgIGpzb25fbW9kZWxfbGlzdCA9IFtdCi0gICAgZm9yIG1vZGVsX25hbWUgaW4gcmVzdF9tb2RlbF9pbmZvX2RpY3Qua2V5cygpOgotICAgICAgICBqc29uX21vZGVsX2luZm8gPSB7fQotICAgICAgICBqc29uX21vZGVsX2luZm9bIm5hbWUiXSA9IG1vZGVsX25hbWUKLSAgICAgICAganNvbl9tb2RlbF9pbmZvWyJ1cmxfcGF0aCJdID0gInJlc3QvdjEvbW9kZWwvIiArIG1vZGVsX25hbWUgKyAiLyIKLSAgICAgICAganNvbl9tb2RlbF9saXN0LmFwcGVuZChqc29uX21vZGVsX2luZm8pCi0KLSAgICBqc29uX2RhdGEgPSBzaW1wbGVqc29uLmR1bXBzKGpzb25fbW9kZWxfbGlzdCkKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKGpzb25fZGF0YSwgSlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3JlYWx0aW1lc3RhdHMocmVxdWVzdCwgc3RhdHR5cGUsIGRwaWQpOgotICAgICIiIgotICAgIFRoaXMgcmV0dXJucyByZWFsdGltZSBzdGF0aXN0aWNzIChmbG93cywgcG9ydHMsIHRhYmxlLCBhZ2dyZWdhdGUsCi0gICAgZGVzYywgLi4uKSAgZm9yIGEgZHBpZCBieSBjYWxsaW5nIHRoZSBsb2NhbGhvc3Qgc2RucGxhdGZvcm0KLSAgICAiIiIKLSAgICAjcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgI3VybCA9IGNvbnRyb2xsZXJfdXJsKCdjb3JlJywgJ3N3aXRjaCcsIGRwaWQsIHN0YXR0eXBlLCAnanNvbicpCi0gICAgaWYgc3RhdHR5cGUgPT0gJ2dyb3VwJzoKLSAgICAgICAgc3RhdHR5cGUgPSAnZ3JvdXBTdGF0cycKLSAgICBpZiBzdGF0dHlwZSA9PSAnZ3JvdXBkZXNjJzoKLSAgICAgICAgc3RhdHR5cGUgPSAnZ3JvdXBEZXNjJwotICAgIHVybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwODAvd20vZmxvb2RsaWdodC9jb3JlL3N3aXRjaC8lcy8lcy9qc29uIiAlIChkcGlkLCBzdGF0dHlwZSkKLSAgICByZXR1cm4gZ2V0X3NkbnBsYXRmb3JtX3Jlc3BvbnNlKHVybCkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fcmVhbHRpbWVncm91cHN0YXRzKHJlcXVlc3QsIGdyb3VwSWQsIGRwaWQgKToKLSAgICAiIiIKLSAgICBUaGlzIHJldHVybnMgcmVhbHRpbWUgZ3JvdXAgc3RhdGlzdGljcyBmb3Igc3BlY2lmaWVkIGdyb3VwSWQKLSAgICBmb3IgYSBkcGlkIGJ5IGNhbGxpbmcgdGhlIGxvY2FsaG9zdCBzZG5wbGF0Zm9ybQotICAgICIiIgotICAgICNyYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICAjdXJsID0gY29udHJvbGxlcl91cmwoJ2NvcmUnLCAnc3dpdGNoJywgZHBpZCwgc3RhdHR5cGUsICdqc29uJykKLSAgICAjaW1wb3J0IGVycm9yCi0gICAgI3JhaXNlIGVycm9yLkFyZ3VtZW50VmFsaWRhdGlvbkVycm9yKCdcblxuXG4gJXMnICUgKGdyb3VwSWQpKQotICAgIHVybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwODAvd20vZmxvb2RsaWdodC9jb3JlL3N3aXRjaC8lcy9ncm91cFN0YXRzLyVzL2pzb24iICUgKGRwaWQsIGdyb3VwSWQpCi0gICAgcmV0dXJuIGdldF9zZG5wbGF0Zm9ybV9yZXNwb25zZSh1cmwpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3RhYmxlcmVhbHRpbWVzdGF0cyhyZXF1ZXN0LCB0YWJsZXR5cGUsIGRwaWQpOgotICAgICIiIgotICAgIFRoaXMgcmV0dXJucyByZWFsdGltZSBzdGF0aXN0aWNzIHBlciB0YWJsZSAoZmxvd3MgKG9ubHkpCi0gICAgY3VycmVudCBpbXBsZW1lbnRhdGlvbikgIGZvciBhIGRwaWQgYnkgY2FsbGluZyB0aGUgbG9jYWxob3N0IHNkbnBsYXRmb3JtCi0gICAgIiIiCi0gICAgI3JhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgICN1cmwgPSBjb250cm9sbGVyX3VybCgnY29yZScsICdzd2l0Y2gnLCBkcGlkLCBzdGF0dHlwZSwgJ2pzb24nKQotICAgIHVybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwODAvd20vZmxvb2RsaWdodC9jb3JlL3N3aXRjaC8lcy90YWJsZS8lcy9mbG93L2pzb24iICUgKGRwaWQsdGFibGV0eXBlKQotICAgICN1cmwgPSJodHRwOi8vbG9jYWxob3N0OjgwODAvd20vZmxvb2RsaWdodC9jb3JlL3N3aXRjaC8wMDowMDowMDowMDowMDowMDowMDowMS9mbG93L2pzb24iCi0gICAgcmV0dXJuIGdldF9zZG5wbGF0Zm9ybV9yZXNwb25zZSh1cmwpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3NkbnBsYXRmb3JtX3JlYWx0aW1lc3RhdHMocmVxdWVzdCwgc3RhdHR5cGUsIGRwaWQ9Tm9uZSwgcG9ydGlkPU5vbmUpOgotICAgICIiIgotICAgIFRoaXMgcmV0dXJucyByZWFsdGltZSBzdGF0aXN0aWNzIGZyb20gc2RucGxhdGZvcm0KLSAgICAiIiIKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgIGlmIGRwaWQgPT0gTm9uZToKLSAgICAgICAgdXJsID0gY29udHJvbGxlcl91cmwoJ2NvcmUnLCAnY291bnRlcicsIHN0YXR0eXBlLCAnanNvbicpCi0gICAgZWxpZiBwb3J0aWQgPT0gTm9uZToKLSAgICAgICAgdXJsID0gY29udHJvbGxlcl91cmwoJ2NvcmUnLCAnY291bnRlcicsIGRwaWQsIHN0YXR0eXBlLCAnanNvbicpCi0gICAgZWxzZToKLSAgICAgICAgdXJsID0gY29udHJvbGxlcl91cmwoJ2NvcmUnLCAnY291bnRlcicsIGRwaWQsIHBvcnRpZCwgc3RhdHR5cGUsICdqc29uJykKLSAgICByZXR1cm4gZ2V0X3NkbnBsYXRmb3JtX3Jlc3BvbnNlKHVybCkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fdG9wb2xvZ3lfdHVubmVsX3ZlcmlmeShyZXF1ZXN0LCBzcmNkcGlkPU5vbmUsIGRzdGRwaWQ9Tm9uZSk6Ci0gICAgIiIiCi0gICAgVGhpcyBpbml0aWF0ZXMgYSBsaXZlbmVzcyBkZXRlY3Rpb24gb2YgdHVubmVscy4KLSAgICAiIiIKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotCi0gICAgdXJsc3RyaW5nID0gc3JjZHBpZCArICcvJyArIGRzdGRwaWQKLSAgICB1cmwgPSBjb250cm9sbGVyX3VybCgndG9wb2xvZ3kvdHVubmVsdmVyaWZ5JywgdXJsc3RyaW5nLCAnanNvbicpCi0KLSAgICByZXNwb25zZV90ZXh0ID0gdXJsbGliMi51cmxvcGVuKHVybCkucmVhZCgpCi0gICAgdGltZS5zbGVlcCg0KQotICAgIHJldHVybiBkb190b3BvbG9neV90dW5uZWxfc3RhdHVzKHJlcXVlc3QsIHNyY2RwaWQsIGRzdGRwaWQpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3RvcG9sb2d5X3R1bm5lbF9zdGF0dXMocmVxdWVzdCwgc3JjZHBpZD0nYWxsJywgZHN0ZHBpZD0nYWxsJyk6Ci0gICAgIiIiCi0gICAgVGhpcyByZXR1cm5zIHRoZSBsaXN0IG9mIHR1bm5lbHMgdGhhdCBoYXZlIGZhaWxlZCBvdmVyIHRoZSBsYXN0IG9ic2VydmF0aW9uIGludGVydmFsLgotICAgICIiIgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0KLSAgICB1cmxzdHJpbmcgPSBzcmNkcGlkICsgJy8nICsgZHN0ZHBpZAotICAgIHVybCA9IGNvbnRyb2xsZXJfdXJsKCd0b3BvbG9neS90dW5uZWxzdGF0dXMnLCB1cmxzdHJpbmcsICdqc29uJykKLSAgICByZXNwb25zZV90ZXh0ID0gdXJsbGliMi51cmxvcGVuKHVybCkucmVhZCgpCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZV90ZXh0LCBKU09OX0NPTlRFTlRfVFlQRSkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fc2RucGxhdGZvcm1fcmVhbHRpbWVzdGF0dXMocmVxdWVzdCwgY2F0ZWdvcnk9Tm9uZSwgc3ViY2F0ZWdvcnk9Tm9uZSwgc3JjZHBpZD1Ob25lLCBkc3RkcGlkID0gTm9uZSk6Ci0gICAgIiIiCi0gICAgVGhpcyByZXR1cm5zIHJlYWx0aW1lIHN0YXR1cyBvZiBzZG5wbGF0Zm9ybQotICAgICIiIgotCi0gICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLQotICAgIHJlc3BvbnNlX3RleHQgPSBOb25lCi0gICAgdXJsID0gTm9uZQotICAgIGlmIGNhdGVnb3J5ID09ICduZXR3b3JrJzoKLSAgICAgICAgaWYgc3ViY2F0ZWdvcnkgPT0gJ2NsdXN0ZXInOgotICAgICAgICAgICAgdXJsID0gY29udHJvbGxlcl91cmwoJ3RvcG9sb2d5JywgJ3N3aXRjaGNsdXN0ZXJzJywgJ2pzb24nKQotICAgICAgICBpZiBzdWJjYXRlZ29yeSA9PSAnZXh0ZXJuYWxwb3J0cyc6Ci0gICAgICAgICAgICB1cmwgPSBjb250cm9sbGVyX3VybCgndG9wb2xvZ3knLCAnZXh0ZXJuYWxwb3J0cycsICdqc29uJykKLSAgICAgICAgaWYgc3ViY2F0ZWdvcnkgPT0gJ3R1bm5lbHZlcmlmeSc6Ci0gICAgICAgICAgICB1cmxzdHJpbmcgPSBzdWJjYXRlZ29yeSsgJy8nICsgc3JjZHBpZCArICcvJyArIGRzdGRwaWQKLSAgICAgICAgICAgIHVybCA9IGNvbnRyb2xsZXJfdXJsKCd0b3BvbG9neScsIHVybHN0cmluZywgJ2pzb24nKQotICAgICAgICBpZiBzdWJjYXRlZ29yeSA9PSAndHVubmVsc3RhdHVzJzoKLSAgICAgICAgICAgIHVybCA9IGNvbnRyb2xsZXJfdXJsKCd0b3BvbG9neScsICd0dW5uZWxzdGF0dXMnLCAnanNvbicpCi0KLSAgICBpZiB1cmw6Ci0gICAgICAgIHJlc3BvbnNlX3RleHQgPSB1cmxsaWIyLnVybG9wZW4odXJsKS5yZWFkKCkKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHJlc3BvbnNlX3RleHQsIEpTT05fQ09OVEVOVF9UWVBFKQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19zZG5wbGF0Zm9ybV9yZWFsdGltZXRlc3QoaHR0cF9yZXF1ZXN0LCBjYXRlZ29yeT1Ob25lLCBzdWJjYXRlZ29yeT1Ob25lKToKLSAgICAiIiIKLSAgICBUaGlzIGRvZXMgYSByZWFsdGltZSB0ZXN0IGJ5IHNlbmRpbmcgYW4gImV4cGxhaW4gcGFja2V0IiBhcyBwYWNrZXQgaW4gCi0gICAgYW5kIGNvbGxlY3RpbmcgdGhlIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9uIHRoZSBwYWNrZXQKLSAgICAiIiIKLQotICAgIGlmIGh0dHBfcmVxdWVzdC5tZXRob2QgIT0gJ1BVVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLQotICAgIHJlc3BvbnNlX3RleHQgPSBOb25lCi0gICAgdXJsID0gTm9uZQotICAgIGlmIGNhdGVnb3J5ID09ICduZXR3b3JrJzoKLSAgICAgICAgaWYgc3ViY2F0ZWdvcnkgPT0gJ2V4cGxhaW4tcGFja2V0JzoKLSAgICAgICAgICAgICMgc2V0IHVwIHRoZSBzZG5wbGF0Zm9ybSBVUkwgZm9yIGV4cGxhaW4gcGFja2V0IChhdCBpbnRlcm5hbCBwb3J0IDgwODAKLSAgICAgICAgICAgIHVybCA9IGNvbnRyb2xsZXJfdXJsKCd2bnMnLCAnZXhwbGFpbi1wYWNrZXQnLCAnanNvbicpCi0gICAgICAgICAgICBwb3N0X2RhdGEgPSBodHRwX3JlcXVlc3QucmF3X3Bvc3RfZGF0YQotICAgICAgICAgICAgcmVxdWVzdCA9IHVybGxpYjIuUmVxdWVzdCh1cmwsIHBvc3RfZGF0YSkKLSAgICAgICAgICAgIHJlcXVlc3QuYWRkX2hlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKQotICAgICAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKLSAgICAgICAgICAgIHJlc3BvbnNlX3RleHQgPSByZXNwb25zZS5yZWFkKCkKLSAgICAgICAgZWxpZiBzdWJjYXRlZ29yeSA9PSAncGF0aCc6Ci0gICAgICAgICAgICBwb3N0X2RhdGEgPSBqc29uLmxvYWRzKGh0dHBfcmVxdWVzdC5yYXdfcG9zdF9kYXRhKQotICAgICAgICAgICAgdXJsID0gY29udHJvbGxlcl91cmwoJ3RvcG9sb2d5JywgJ3JvdXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RfZGF0YVsnc3JjLXN3aXRjaCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvc3RfZGF0YVsnc3JjLXN3aXRjaC1wb3J0J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdF9kYXRhWydkc3Qtc3dpdGNoJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIocG9zdF9kYXRhWydkc3Qtc3dpdGNoLXBvcnQnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbicpCi0KLSAgICAgICAgICAgIHJldHVybiBnZXRfc2RucGxhdGZvcm1fcmVzcG9uc2UodXJsKQotCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZV90ZXh0LCBKU09OX0NPTlRFTlRfVFlQRSkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fc2RucGxhdGZvcm1fcGVyZm9ybWFuY2VfbW9uaXRvcihodHRwX3JlcXVlc3QsIGNhdGVnb3J5PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIHN1YmNhdGVnb3J5PU5vbmUsIHR5cGU9J2FsbCcpOgotICAgICIiIgotICAgIFRoaXMgQVBJIHJldHVybnMgcGVyZm9ybWFuY2UgcmVsYXRlZCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzZG5wbGF0Zm9ybSBhbmQKLSAgICBzZG5wbGF0Zm9ybSBjb21wb25lbnRzCi0gICAgIiIiCi0KLSAgICBpZiBodHRwX3JlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0KLSAgICByZXNwb25zZV90ZXh0ID0gTm9uZQotICAgIHVybCA9IE5vbmUKLSAgICBpZiBjYXRlZ29yeSA9PSAncGVyZm9ybWFuY2UtbW9uaXRvcic6Ci0gICAgICAgICMgc2V0IHVwIHRoZSBzZG5wbGF0Zm9ybSBVUkwgZm9yIGV4cGxhaW4gcGFja2V0IChhdCBpbnRlcm5hbCBwb3J0IDgwODAKLSAgICAgICAgdXJsID0gY29udHJvbGxlcl91cmwoJ3BlcmZvcm1hbmNlJywgdHlwZSwgJ2pzb24nKQotICAgICAgICByZXF1ZXN0ID0gdXJsbGliMi5SZXF1ZXN0KHVybCkKLSAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKLSAgICAgICAgcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlLnJlYWQoKQotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3NkbnBsYXRmb3JtX2ludGVybmFsX2RlYnVncyhodHRwX3JlcXVlc3QsIGNhdGVnb3J5PU5vbmUsIHN1YmNhdGVnb3J5PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeT0nYWxsJywgY29tcG9uZW50PSdkZXZpY2UtbWFuYWdlcicpOgotICAgICIiIgotICAgIFRoaXMgQVBJIHJldHVybnMgZGVidWdnaW5nIHJlbGF0ZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2RucGxhdGZvcm0gYW5kCi0gICAgc2RucGxhdGZvcm0gY29tcG9uZW50cwotICAgICIiIgotCi0gICAgaWYgaHR0cF9yZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotCi0gICAgcmVzcG9uc2VfdGV4dCA9IE5vbmUKLSAgICB1cmwgPSBOb25lCi0gICAgaWYgY2F0ZWdvcnkgPT0gJ2ludGVybmFsLWRlYnVncyc6Ci0gICAgICAgICMgc2V0IHVwIHRoZSBzZG5wbGF0Zm9ybSBVUkwgZm9yIGV4cGxhaW4gcGFja2V0IChhdCBpbnRlcm5hbCBwb3J0IDgwODAKLSAgICAgICAgdXJsID0gY29udHJvbGxlcl91cmwoJ3ZucycsICdpbnRlcm5hbC1kZWJ1Z3MnLCBjb21wb25lbnQsIHF1ZXJ5LCAnanNvbicpCi0gICAgICAgIHJlcXVlc3QgPSB1cmxsaWIyLlJlcXVlc3QodXJsKQotICAgICAgICByZXNwb25zZSA9IHVybGxpYjIudXJsb3BlbihyZXF1ZXN0KQotICAgICAgICByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2UucmVhZCgpCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZV90ZXh0LCBKU09OX0NPTlRFTlRfVFlQRSkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fc2RucGxhdGZvcm1fZXZlbnRfaGlzdG9yeShodHRwX3JlcXVlc3QsIGNhdGVnb3J5PU5vbmUsIHN1YmNhdGVnb3J5PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldkhpc3ROYW1lPSdhbGwnLCBjb3VudD0nMTAwJyk6Ci0gICAgIiIiCi0gICAgVGhpcyBBUEkgcmV0dXJucyByZWFsLXRpbWUgZXZlbnQtaGlzdG9yeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzZG5wbGF0Zm9ybSBhbmQKLSAgICBzZG5wbGF0Zm9ybSBjb21wb25lbnRzCi0gICAgIiIiCi0KLSAgICBpZiBodHRwX3JlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0KLSAgICByZXNwb25zZV90ZXh0ID0gTm9uZQotICAgIHVybCA9IE5vbmUKLSAgICBpZiBjYXRlZ29yeSA9PSAnZXZlbnQtaGlzdG9yeSc6Ci0gICAgICAgICMgc2V0IHVwIHRoZSBzZG5wbGF0Zm9ybSBVUkwgZm9yIGV4cGxhaW4gcGFja2V0IChhdCBpbnRlcm5hbCBwb3J0IDgwODAKLSAgICAgICAgdXJsID0gY29udHJvbGxlcl91cmwoJ2NvcmUnLCAnZXZlbnQtaGlzdG9yeScsIGV2SGlzdE5hbWUsIGNvdW50LCAnanNvbicpCi0gICAgICAgIHJlcXVlc3QgID0gdXJsbGliMi5SZXF1ZXN0KHVybCkKLSAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKLSAgICAgICAgcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlLnJlYWQoKQotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2Zsb3dfY2FjaGUoaHR0cF9yZXF1ZXN0LCBjYXRlZ29yeT1Ob25lLCBzdWJjYXRlZ29yeT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsTmFtZT0nTm9uZScsIGFwcGxJbnN0TmFtZT0nYWxsJywgcXVlcnlUeXBlPSdhbGwnKToKLSAgICAiIiIKLSAgICBUaGlzIEFQSSByZXR1cm5zIHJlYWwtdGltZSBldmVudC1oaXN0b3J5IGluZm9ybWF0aW9uIGZyb20gdGhlIHNkbnBsYXRmb3JtIGFuZAotICAgIHNkbnBsYXRmb3JtIGNvbXBvbmVudHMKLSAgICAiIiIKLQotICAgIGlmIGh0dHBfcmVxdWVzdC5tZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLQotICAgIHJlc3BvbnNlX3RleHQgPSBOb25lCi0gICAgdXJsID0gTm9uZQotICAgIGlmIGNhdGVnb3J5ID09ICdmbG93LWNhY2hlJzoKLSAgICAgICAgIyBzZXQgdXAgdGhlIHNkbnBsYXRmb3JtIFVSTCBmb3IgZXhwbGFpbiBwYWNrZXQgKGF0IGludGVybmFsIHBvcnQgODA4MAotICAgICAgICB1cmwgPSBjb250cm9sbGVyX3VybCgndm5zJywgJ2Zsb3ctY2FjaGUnLCBhcHBsTmFtZSwgYXBwbEluc3ROYW1lLCBxdWVyeVR5cGUsICdqc29uJykKLSAgICAgICAgcmVxdWVzdCAgPSB1cmxsaWIyLlJlcXVlc3QodXJsKQotICAgICAgICByZXNwb25zZSA9IHVybGxpYjIudXJsb3BlbihyZXF1ZXN0KQotICAgICAgICByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2UucmVhZCgpCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZV90ZXh0LCBKU09OX0NPTlRFTlRfVFlQRSkKLQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb192bnNfcmVhbHRpbWVzdGF0c19mbG93KGh0dHBfcmVxdWVzdCwgY2F0ZWdvcnk9Tm9uZSwgdm5zTmFtZT0iYWxsIik6Ci0gICAgIiIiCi0gICAgVGhpcyBnZXRzIHJlYWx0aW1lIGZsb3dzIGZvciBvbmUgb3IgbW9yZSB2bnNlcwotICAgICIiIgotCi0gICAgaWYgaHR0cF9yZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotCi0gICAgIyBzZXQgdXAgdGhlIHNkbnBsYXRmb3JtIFVSTCBmb3IgcGVyLXZucyBmbG93IChhdCBpbnRlcm5hbCBwb3J0IDgwODAKLSAgICB1cmwgPSBjb250cm9sbGVyX3VybCgndm5zJywgJ2Zsb3cnLCB2bnNOYW1lLCAnanNvbicpCi0gICAgcmV0dXJuIGdldF9zZG5wbGF0Zm9ybV9yZXNwb25zZSh1cmwpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3NkbnBsYXRmb3JtX2NvdW50ZXJfY2F0ZWdvcmllcyhyZXF1ZXN0LCBzdGF0dHlwZSwgbGF5ZXIsIGRwaWQ9Tm9uZSwgcG9ydGlkPU5vbmUpOgotICAgICIiIgotICAgIFRoaXMgcmV0dXJucyBjb3VudGVyIGNhdGVnb3JpZXMgZnJvbSBzZG5wbGF0Zm9ybQotICAgICIiIgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgaWYgZHBpZCA9PSBOb25lOgotICAgICAgICB1cmwgPSBjb250cm9sbGVyX3VybCgnY29yZScsICdjb3VudGVyJywgJ2NhdGVnb3JpZXMnLCBzdGF0dHlwZSwgbGF5ZXIsICdqc29uJykKLSAgICBlbGlmIHBvcnRpZCA9PSBOb25lOgotICAgICAgICB1cmwgPSBjb250cm9sbGVyX3VybCgnY29yZScsICdjb3VudGVyJywgJ2NhdGVnb3JpZXMnLCBkcGlkLCBzdGF0dHlwZSwgbGF5ZXIsICdqc29uJykKLSAgICBlbHNlOgotICAgICAgICB1cmwgPSBjb250cm9sbGVyX3VybCgnY29yZScsICdjb3VudGVyJywgJ2NhdGVnb3JpZXMnLCBkcGlkLCBwb3J0aWQsIHN0YXR0eXBlLCBsYXllciwgJ2pzb24nKQotCi0gICAgcmV0dXJuIGdldF9zZG5wbGF0Zm9ybV9yZXNwb25zZSh1cmwpCi0KLUBzYWZlX3Jlc3RfdmlldwotQGNzcmZfZXhlbXB0Ci1kZWYgZG9fcGFja2V0dHJhY2UocmVxdWVzdCk6Ci0gICAgIiIiCi0gICAgVGhpcyBzZXRzIGEgcGFja2V0IHRyYWNlIGluIHNkbnBsYXRmb3JtLgotICAgIHBlcmlvZDogCi0gICAgICAgIC4gPjAgc3RhcnRzIGEgdHJhY2Ugc2Vzc2lvbiB3aXRoIHRoZSBwZXJpb2QKLSAgICAgICAgLiA9MCBzdGFydHMgYSB0cmFjZSBzZXNzaW9uIHdpdGggbm8gdGltZW91dAotICAgICAgICAuIDwwIGVuZHMgYW4gb25nb2luZyBzZXNzaW9uCi0KLSAgICBUaGUgcmVxdWVzdCBtZXRob2QgaGFzIHRvIGJlIFBPU1Qgc2luY2UgZWFjaCByZXF1ZXN0IGdldHMgYW4gdW5pcXVlIHNlc3Npb25JRAotICAgICIiIgotICAgIFNFU1NJT05JRCA9ICdzZXNzaW9uSWQnCi0gICAgc2Vzc2lvbklkID0gIiIKLSAgICBmaWx0ZXIgPSAiIgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdQT1NUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotCi0gICAgdXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC93bS92bnMvcGFja2V0dHJhY2UvanNvbicKLSAgICByZXF1ZXN0ID0gdXJsbGliMi5SZXF1ZXN0KHVybCwgcmVxdWVzdC5yYXdfcG9zdF9kYXRhLCB7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSkKLSAgICB0cnk6Ci0gICAgICAgIHJlc3BvbnNlID0gdXJsbGliMi51cmxvcGVuKHJlcXVlc3QpCi0gICAgICAgIHJlc3BvbnNlX3RleHQgPSByZXNwb25zZS5yZWFkKCkKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAjIFNETlBsYXRmb3JtIG1heSBub3QgYmUgcnVubmluZywgYnV0IHdlIGRvbid0IHdhbnQgdGhhdCB0byBiZSBhIGZhdGFsCi0gICAgICAgICMgZXJyb3IsIHNvIHdlIGp1c3QgaWdub3JlIHRoZSBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgotICAgICAgICBwYXNzCi0KLSAgICAjcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2VfdGV4dCkgCi0gICAgI2lmIFNFU1NJT05JRCBpbiByZXNwb25zZV9kYXRhOgotICAgICMgICAgc2Vzc2lvbklkID0gcmVzcG9uc2VfZGF0YVtTRVNTSU9OSURdCi0gICAgI3Jlc3BvbnNlX3RleHQgPSB7U0VTU0lPTklEOnNlc3Npb25JZH0KLQotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgbWltZXR5cGU9SlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2NvbnRyb2xsZXJfc3RhdHMocmVxdWVzdCwgc3RhdHR5cGUpOgotICAgICIiIgotICAgIFRoaXMgcmV0dXJucyBjb250cm9sbGVyLWxldmVsIHN0YXRpc3RpY3MvaW5mbyBmcm9tIHNkbnBsYXRmb3JtCi0gICAgIiIiCi0gICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICB1cmwgPSAnaHR0cDovLzEyNy4wLjAuMTo4MDgwL3dtL2NvcmUvY29udHJvbGxlci8lcy9qc29uJyAlIHN0YXR0eXBlCi0gICAgcmV0dXJuIGdldF9zZG5wbGF0Zm9ybV9yZXNwb25zZSh1cmwpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2NvbnRyb2xsZXJfc3RvcmFnZV90YWJsZV9saXN0KHJlcXVlc3QpOgotICAgICIiIgotICAgIFRoaXMgcmV0dXJucyBjb250cm9sbGVyLWxldmVsIHN0b3JhZ2UgdGFibGUgbGlzdAotICAgICIiIgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgdXJsID0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MC93bS9jb3JlL3N0b3JhZ2UvdGFibGVzL2pzb24nCi0gICAgcmV0dXJuIGdldF9zZG5wbGF0Zm9ybV9yZXNwb25zZSh1cmwpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2RldmljZShyZXF1ZXN0KToKLSAgICBpZiBvbm9zID09IDA6Ci0gICAgICAgIHJldHVybiBnZXRfc2RucGxhdGZvcm1fcXVlcnkocmVxdWVzdCwgImRldmljZSIpCi0gICAgZWxzZToKLSAgICAgICAgdXJsID0gY29udHJvbGxlcl91cmwoIm9ub3MiLCAidG9wb2xvZ3kiLCAiaG9zdHMiKQotICAgICAgICBpZiByZXF1ZXN0Lk1FVEFbJ1FVRVJZX1NUUklORyddOgotICAgICAgICAgICAgdXJsICs9ICc/JyArIHJlcXVlc3QuTUVUQVsnUVVFUllfU1RSSU5HJ10KLSAgICAgICAgcmV0dXJuIGdldF9zZG5wbGF0Zm9ybV9yZXNwb25zZSh1cmwpICAgICAgICAKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fc3dpdGNoZXMocmVxdWVzdCk6Ci0gICAgaWYgb25vcyA9PSAwOgotICAgICAgICB1cmwgPSBjb250cm9sbGVyX3VybCgiY29yZSIsICJjb250cm9sbGVyIiwgInN3aXRjaGVzIiwgImpzb24iKQotICAgIGVsc2U6Ci0gICAgICAgIHVybCA9IGNvbnRyb2xsZXJfdXJsKCJvbm9zIiwgInRvcG9sb2d5IiwgInN3aXRjaGVzIikKLSAgICBpZiByZXF1ZXN0Lk1FVEFbJ1FVRVJZX1NUUklORyddOgotICAgICAgICB1cmwgKz0gJz8nICsgcmVxdWVzdC5NRVRBWydRVUVSWV9TVFJJTkcnXQotICAgIHJldHVybiBnZXRfc2RucGxhdGZvcm1fcmVzcG9uc2UodXJsKSAgICAgICAgCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3JvdXRlcnMocmVxdWVzdCk6Ci0gICAgaWYgb25vcyA9PSAwOgotICAgICAgICB1cmwgPSBjb250cm9sbGVyX3VybCgiY29yZSIsICJjb250cm9sbGVyIiwgInN3aXRjaGVzIiwgImpzb24iKQotICAgIGVsc2U6Ci0gICAgICAgIHVybCA9IGNvbnRyb2xsZXJfdXJsKCJvbm9zIiwic2VnbWVudHJvdXRpbmciLCAicm91dGVycyIpCi0gICAgaWYgcmVxdWVzdC5NRVRBWydRVUVSWV9TVFJJTkcnXToKLSAgICAgICAgdXJsICs9ICc/JyArIHJlcXVlc3QuTUVUQVsnUVVFUllfU1RSSU5HJ10KLSAgICByZXR1cm4gZ2V0X3NkbnBsYXRmb3JtX3Jlc3BvbnNlKHVybCkgICAgICAgIAotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19yb3V0ZXJfc3RhdHMocmVxdWVzdCwgc3RhdHR5cGUsIGRwaWQpOgotICAgICIiIgotICAgIFRoaXMgcmV0dXJucyB0aGUgc3VibmV0cyBpbmZvIGFib3V0IHRoZSBzcGVjaWZlZAotICAgIHJvdXRlciBkcGlkLiBzdGF0ZXR5cGUgc2hvdWxkIGJlICdwb3J0Jy4KLSAgICAiIiIKLSAgICAjcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgI3VybCA9IGNvbnRyb2xsZXJfdXJsKCdjb3JlJywgJ3N3aXRjaCcsIGRwaWQsIHN0YXR0eXBlLCAnanNvbicpCi0gICAgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC93bS9vbm9zL3NlZ21lbnRyb3V0aW5nL3JvdXRlci8lcy8lcyIgJSAoZHBpZCwgc3RhdHR5cGUpCi0gICAgI3JhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKHVybCkKLSAgICAjdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC93bS9vbm9zL3NlZ2VtZW50cm91dGluZy9yb3V0ZXIvMDA6MDA6MDA6MDA6MDA6MDA6MDA6MDEvcG9ydCIKLSAgICByZXR1cm4gZ2V0X3NkbnBsYXRmb3JtX3Jlc3BvbnNlKHVybCkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fbWFzdGVyc2hpcChyZXF1ZXN0KToKLSAgICB1cmwgPSBjb250cm9sbGVyX3VybCgib25vcyIsICJyZWdpc3RyeSIsICJzd2l0Y2hlcyIgLCJqc29uIikKLSAgICAjdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODA4MC93bS9vbm9zL3JlZ2lzdHJ5L3N3aXRjaGVzL2pzb24iCi0gICAgaWYgcmVxdWVzdC5NRVRBWydRVUVSWV9TVFJJTkcnXToKLSAgICAgICAgdXJsICs9ICc/JyArIHJlcXVlc3QuTUVUQVsnUVVFUllfU1RSSU5HJ10KLSAgICByZXR1cm4gZ2V0X3NkbnBsYXRmb3JtX3Jlc3BvbnNlKHVybCkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fY29udHJvbGxlcihyZXF1ZXN0KToKLSAgICB1cmwgPSBjb250cm9sbGVyX3VybCgib25vcyIsICJyZWdpc3RyeSIsICJjb250cm9sbGVycyIgLCJqc29uIikKLSAgICAjdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODA4MC93bS9vbm9zL3JlZ2lzdHJ5L3N3aXRjaGVzL2pzb24iCi0gICAgaWYgcmVxdWVzdC5NRVRBWydRVUVSWV9TVFJJTkcnXToKLSAgICAgICAgdXJsICs9ICc/JyArIHJlcXVlc3QuTUVUQVsnUVVFUllfU1RSSU5HJ10KLSAgICByZXR1cm4gZ2V0X3NkbnBsYXRmb3JtX3Jlc3BvbnNlKHVybCkgCi0jJycnCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2xpbmtzKHJlcXVlc3QpOgotICAgIGlmIG9ub3MgPT0gMDoKLSAgICAgICAgdXJsID0gY29udHJvbGxlcl91cmwoInRvcG9sb2d5IiwgImxpbmtzIiwgImpzb24iKQotICAgIGVsc2U6Ci0gICAgICAgIHVybCA9IGNvbnRyb2xsZXJfdXJsKCJvbm9zIiwgInRvcG9sb2d5IiwgImxpbmtzIikKLSAgICBpZiByZXF1ZXN0Lk1FVEFbJ1FVRVJZX1NUUklORyddOgotICAgICAgICB1cmwgKz0gJz8nICsgcmVxdWVzdC5NRVRBWydRVUVSWV9TVFJJTkcnXQotICAgIHJldHVybiBnZXRfc2RucGxhdGZvcm1fcmVzcG9uc2UodXJsKSAgICAgICAgCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3Zuc19kZXZpY2VfaW50ZXJmYWNlKHJlcXVlc3QpOgotICAgIHJldHVybiBnZXRfc2RucGxhdGZvcm1fcXVlcnkocmVxdWVzdCwgInZucy9kZXZpY2UtaW50ZXJmYWNlIikKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fdm5zX2ludGVyZmFjZShyZXF1ZXN0KToKLSAgICByZXR1cm4gZ2V0X3NkbnBsYXRmb3JtX3F1ZXJ5KHJlcXVlc3QsICJ2bnMvaW50ZXJmYWNlIikKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fdm5zKHJlcXVlc3QpOgotICAgIHJldHVybiBnZXRfc2RucGxhdGZvcm1fcXVlcnkocmVxdWVzdCwgInZucyIpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3N5c3RlbV92ZXJzaW9uKHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgdmVyc2lvbiA9IGdldF9zeXN0ZW1fdmVyc2lvbl9zdHJpbmcoKQotICAgIHJlc3BvbnNlX3RleHQgPSBzaW1wbGVqc29uLmR1bXBzKFt7ICdjb250cm9sbGVyJyA6IHZlcnNpb24gfV0pCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZV90ZXh0LCBKU09OX0NPTlRFTlRfVFlQRSkKLQotYXZhaWxhYmxlX2xvZ19maWxlcyA9IHsKLSAgICAnc3lzbG9nJyAgICAgICAgICAgOiAnL3Zhci9sb2cvc3lzbG9nJywKLSAgICAnc2RucGxhdGZvcm0nICAgICAgIDogJy9vcHQvc2RucGxhdGZvcm0vc2RucGxhdGZvcm0vbG9nL3NkbnBsYXRmb3JtLmxvZycsCi0gICAgJ2NvbnNvbGUtYWNjZXNzJyAgIDogJy9vcHQvc2RucGxhdGZvcm0vY29uL2xvZy9hY2Nlc3MubG9nJywKLSAgICAnY2Fzc2FuZHJhJyAgICAgICAgOiAnL29wdC9zZG5wbGF0Zm9ybS9kYi9sb2cvc3lzdGVtLmxvZycsCi0gICAgJ2F1dGhsb2cnICAgICAgICAgIDogJy92YXIvbG9nL2F1dGgubG9nJywKLSAgICAncHJlLXN0YXJ0JyAgICAgICAgOiAnL3RtcC9wcmUtc3RhcnQnLAotICAgICdwb3N0LXN0YXJ0JyAgICAgICA6ICcvdG1wL3Bvc3Qtc3RhcnQnLAotICAgICMgJ2Z0cCcgICAgICAgICAgICAgIDogJy92YXIvbG9nL2Z0cC5sb2cnLAotfQotCi1hdmFpbGFibGVfbG9nX2NvbW1hbmRzID0gewotICAgICdkbWVzZycgICAgIDogJ2RtZXNnJywKLSAgICAncHJvY2VzcycgICA6ICdwcyBsYXgnCi19Ci0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3N5c3RlbV9sb2dfbGlzdChyZXF1ZXN0KToKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgIGV4aXN0aW5nX2xvZ3MgPSBbXQotICAgIGZvciAobG9nX25hbWUsIGxvZ19wYXRoKSBpbiBhdmFpbGFibGVfbG9nX2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvZ19maWxlID0gb3Blbihsb2dfcGF0aCwgJ3InKQotICAgICAgICAgICAgZXhpc3RpbmdfbG9ncy5hcHBlbmQoeyAnbG9nJyA6IGxvZ19uYW1lIH0pCi0gICAgICAgICAgICBsb2dfZmlsZS5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBwcmludCAnPz8nCi0gICAgZm9yIGxvZ19uYW1lIGluIGF2YWlsYWJsZV9sb2dfY29tbWFuZHMua2V5cygpOgotICAgICAgICBwcmludCAnQUREJywgbG9nX25hbWUKLSAgICAgICAgZXhpc3RpbmdfbG9ncy5hcHBlbmQoeyAnbG9nJyA6IGxvZ19uYW1lIH0pCi0gICAgcmVzcG9uc2VfdGV4dCA9IHNpbXBsZWpzb24uZHVtcHMoZXhpc3RpbmdfbG9ncykKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHJlc3BvbnNlX3RleHQsIEpTT05fQ09OVEVOVF9UWVBFKQotCi0KLWRlZiBnZW5lcmF0ZV9zdWJwcm9jZXNzX291dHB1dChjbWQpOgotCi0gICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzaGVsbD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemU9MSkKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5lID0gcHJvY2Vzcy5zdGRvdXQucmVhZGxpbmUoKQotICAgICAgICBpZiBsaW5lICE9IE5vbmUgYW5kIGxpbmUgIT0gIiI6Ci0gICAgICAgICAgICB5aWVsZCBsaW5lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBicmVhawotCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3N5c3RlbV9sb2cocmVxdWVzdCwgbG9nX25hbWUpOgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgcHJpbnQgJ2RvIHN5c3RlbSBsb2cnLCBsb2dfbmFtZQotCi0gICAgIyBtYW5hZ2UgY29tbWFuZCBvdXB1dCBkaWZmZXJlbnRseQotICAgIGlmIGxvZ19uYW1lIGluIGF2YWlsYWJsZV9sb2dfY29tbWFuZHM6Ci0gICAgICAgIGNtZCA9IGF2YWlsYWJsZV9sb2dfY29tbWFuZHNbbG9nX25hbWVdCi0gICAgICAgIHByaW50ICdET0lORyBDT01NQU5EJywgY21kCi0KLSAgICAgICAgcmV0dXJuIEh0dHBSZXNwb25zZShnZW5lcmF0ZV9zdWJwcm9jZXNzX291dHB1dChjbWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFRfUExBSU5fQ09OVEVOVF9UWVBFKQotICAgICAgICByZXR1cm4KLQotICAgIGxvZ19wYXRoID0gYXZhaWxhYmxlX2xvZ19maWxlcy5nZXQobG9nX25hbWUpCi0gICAgaWYgbG9nX25hbWUgPT0gTm9uZToKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRMb2coJ05vIHN1Y2ggbG9nOiAlcycgJSBsb2dfbmFtZSkKLSAgICAKLSAgICB0cnk6Ci0gICAgICAgIGxvZ19maWxlID0gb3Blbihsb2dfcGF0aCwgJ3InKQotICAgIGV4Y2VwdCBFeGNlcHRpb24sZToKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRMb2coJ0xvZyBkb2VzIG5vdCBleGlzdDogJXMnICUgbG9nX25hbWUpCi0gICAgICAgIAotICAgICMgdXNlIGEgZ2VuZXJhdG9yIHNvIHRoYXQgdGhlIGNvbXBsZXRlIGxvZyBpcyBub3QgZXZlciBoZWxkIGluIG1lbW9yeQotICAgIGRlZiByZXNwb25zZShsb2dfbmFtZSwgZmlsZSk6Ci0gICAgICAgIGZvciBsaW5lIGluIGZpbGU6Ci0gICAgICAgICAgICB5aWVsZCBsaW5lCi0gICAgICAgIGZpbGUuY2xvc2UoKQotCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZShsb2dfbmFtZSwgbG9nX2ZpbGUpLCBURVhUX1BMQUlOX0NPTlRFTlRfVFlQRSkKLQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19zeXN0ZW1fdXB0aW1lKHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgdXJsID0gY29udHJvbGxlcl91cmwoJ2NvcmUnLCAnc3lzdGVtJywgJ3VwdGltZScsICdqc29uJykKLSAgICByZXR1cm4gZ2V0X3NkbnBsYXRmb3JtX3Jlc3BvbnNlKHVybCkgICAgICAgIAotCi0KLWRlZiBfY29sbGVjdF9zeXN0ZW1faW50ZXJmYWNlcyhsbyA9IEZhbHNlKToKLSAgICBmcm9tIG5ldGlmYWNlcyBpbXBvcnQgaW50ZXJmYWNlcywgaWZhZGRyZXNzZXMsIEFGX0lORVQsIEFGX0xJTksKLSAgICByZXN1bHQgPSBbXQotICAgIGZvciBpZmFjZSBpbiBpbnRlcmZhY2VzKCk6Ci0gICAgICAgIGlmIGlmYWNlLnN0YXJ0c3dpdGgoJ2xvJykgYW5kIG5vdCBsbzoKLSAgICAgICAgICAgIGNvbnRpbnVlICMgaWdub3JlIGxvb3BiYWNrCi0gICAgICAgIGFkZHJzID0gaWZhZGRyZXNzZXMoaWZhY2UpCi0gICAgICAgIGlmIEFGX0lORVQgaW4gYWRkcnM6Ci0gICAgICAgICAgICBmb3IgYWRkciBpbiBpZmFkZHJlc3NlcyhpZmFjZSlbQUZfSU5FVF06Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7J25hbWUnICAgICAgOiBpZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkcicgICAgICA6IGFkZHIuZ2V0KCdhZGRyJywgJycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXRtYXNrJyAgIDogYWRkci5nZXQoJ25ldG1hc2snLCAnJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jyb2FkY2FzdCcgOiBhZGRyLmdldCgnYnJvYWRjYXN0JywgJycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwZWVyJyAgICAgIDogYWRkci5nZXQoJ3BlZXInLCAnJyl9KQotICAgIHJldHVybiByZXN1bHQKLQotCi1kZWYgZG9fc3lzdGVtX2luZXQ0X2ludGVyZmFjZXMocmVxdWVzdCk6Ci0gICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICByZXNwb25zZV90ZXh0ID0gc2ltcGxlanNvbi5kdW1wcyhfY29sbGVjdF9zeXN0ZW1faW50ZXJmYWNlcyhsbyA9IFRydWUpKQotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0KLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fc3lzdGVtX3RpbWVfem9uZV9zdHJpbmdzKHJlcXVlc3QsIGxpc3RfdHlwZSk6Ci0gICAgaW1wb3J0IHB5dHoKLSAgICBpZiBsaXN0X3R5cGUgPT0gJ2NvbW1vbic6Ci0gICAgICAgIHN0cmluZ19saXN0ID0gcHl0ei5jb21tb25fdGltZXpvbmVzCi0gICAgZWxpZiBsaXN0X3R5cGUgPT0gImFsbCI6Ci0gICAgICAgIHN0cmluZ19saXN0ID0gcHl0ei5hbGxfdGltZXpvbmVzCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgUmVzdFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24ocmVxdWVzdC5wYXRoKQotICAgIAotICAgIHJlc3BvbnNlX3RleHQgPSBzaW1wbGVqc29uLmR1bXBzKHN0cmluZ19saXN0KQotICAgIAotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2NoZWNrX2NvbmZpZyhyZXF1ZXN0KToKLSAgICBjb25maWdfY2hlY2tfc3RhdGUoKQotICAgIHJldHVybiBnZXRfc3VjY2Vzc2Z1bF9yZXNwb25zZSgnY2hlY2tlZCBjb25maWcnKQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19sb2NhbF9jb250cm9sbGVyX2lkKHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICdHRVQnOgotICAgICAgICBjb250cm9sbGVyX2lkID0gZ2V0X2xvY2FsX2NvbnRyb2xsZXJfaWQoKQotICAgICAgICBpZiBub3QgY29udHJvbGxlcl9pZDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5zcGVjaWZpZWQgbG9jYWwgY29udHJvbGxlciBpZCIpCi0gICAgICAgIHJlc3BvbnNlX3RleHQgPSBzaW1wbGVqc29uLmR1bXBzKHsnaWQnOiBjb250cm9sbGVyX2lkfSkKLSAgICBlbGlmIHJlcXVlc3QubWV0aG9kID09ICdQVVQnOgotICAgICAgICBwdXRfZGF0YSA9IGpzb24ubG9hZHMocmVxdWVzdC5yYXdfcG9zdF9kYXRhKQotICAgICAgICBjb250cm9sbGVyX2lkID0gcHV0X2RhdGEuZ2V0KCdpZCcpCi0gICAgICAgIF9yZXN1bHQgPSBleGVjX29zX3dyYXBwZXIoIkNvbnRyb2xsZXJJZCIsICdzZXQnLCBbY29udHJvbGxlcl9pZF0pCi0gICAgICAgIHJlc3BvbnNlX3RleHQgPSBnZXRfc3VjY2Vzc2Z1bF9yZXNwb25zZV9kYXRhKCd1cGRhdGVkJykKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgCi0gICAgcmVzcG9uc2UgPSBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0gICAgCi0gICAgcmV0dXJuIHJlc3BvbnNlCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2hhX2ZhaWxiYWNrKHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdQVVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgX3Jlc3VsdCA9IGV4ZWNfb3Nfd3JhcHBlcigiSEFGYWlsYmFjayIsICdzZXQnLCBbXSkKLSAgICByZXNwb25zZV90ZXh0ID0gZ2V0X3N1Y2Nlc3NmdWxfcmVzcG9uc2VfZGF0YSgnZm9yY2VkIGZhaWxiYWNrJykKLSAgICByZXNwb25zZSA9IEh0dHBSZXNwb25zZShyZXNwb25zZV90ZXh0LCBKU09OX0NPTlRFTlRfVFlQRSkKLSAgICByZXR1cm4gcmVzcG9uc2UKLQotZGVmIGRlbGV0ZV9oYV9maXJld2FsbF9ydWxlcyhpcCk6Ci0gICAgcnVsZXMgPSBGaXJld2FsbFJ1bGUub2JqZWN0cy5maWx0ZXIoYWN0aW9uPSdhbGxvdycsIHNyY19pcD1pcCkKLSAgICBydWxlcy5maWx0ZXIocG9ydD04MCkuZGVsZXRlKCkKLSAgICBydWxlcy5maWx0ZXIocHJvdG89J3RjcCcsIHBvcnQ9NzAwMCkuZGVsZXRlKCkKLSAgICBydWxlcy5maWx0ZXIocHJvdG89J3ZycnAnKS5kZWxldGUoKQotCi1kZWYgY2FzY2FkZV9kZWxldGVfY29udHJvbGxlcl9ub2RlKGNvbnRyb2xsZXJfaWQpOgotICAgIENvbnRyb2xsZXJBbGlhcy5vYmplY3RzLmZpbHRlcihjb250cm9sbGVyPWNvbnRyb2xsZXJfaWQpLmRlbGV0ZSgpCi0gICAgQ29udHJvbGxlckRvbWFpbk5hbWVTZXJ2ZXIub2JqZWN0cy5maWx0ZXIoY29udHJvbGxlcj1jb250cm9sbGVyX2lkKS5kZWxldGUoKQotICAgIGZvciBpZmFjZSBpbiBDb250cm9sbGVySW50ZXJmYWNlLm9iamVjdHMuZmlsdGVyKGNvbnRyb2xsZXI9Y29udHJvbGxlcl9pZCk6Ci0gICAgICAgIEZpcmV3YWxsUnVsZS5vYmplY3RzLmZpbHRlcihpbnRlcmZhY2U9aWZhY2UuaWQpLmRlbGV0ZSgpCi0gICAgQ29udHJvbGxlckludGVyZmFjZS5vYmplY3RzLmZpbHRlcihjb250cm9sbGVyPWNvbnRyb2xsZXJfaWQpLmRlbGV0ZSgpCi0gICAgQ29udHJvbGxlci5vYmplY3RzLmZpbHRlcihpZD1jb250cm9sbGVyX2lkKS5kZWxldGUoKQotCi0jIEZJWE1FOiB0aGlzIGFzc3VtZSBhIHNpbmdsZS1pbnRlcmZhY2UgZGVzaWduIGFuZCB3aWxsIGxvb2sgZm9yIHRoZSBJUCBvbiBldGgwCi0jICAgICAgICBuZWVkIHRvIGZpeCB0aGlzIHdoZW4gd2UgaGF2ZSBhIHByb3BlciBtdWx0aS1pbnRlcmZhY2UgZGVzaWduCi1kZWYgZ2V0X2NvbnRyb2xsZXJfbm9kZV9pcChjb250cm9sbGVyX2lkKToKLSAgICBub2RlX2lwID0gJycKLSAgICBpZmFjZSA9IENvbnRyb2xsZXJJbnRlcmZhY2Uub2JqZWN0cy5maWx0ZXIoY29udHJvbGxlcj1jb250cm9sbGVyX2lkLCB0eXBlPSdFdGhlcm5ldCcsIG51bWJlcj0wKQotICAgIGlmIGlmYWNlOgotICAgICAgICBub2RlX2lwID0gaWZhY2VbMF0uZGlzY292ZXJlZF9pcAotICAgIHJldHVybiBub2RlX2lwCi0KLSMgVGhpcyBtZXRob2QgaXMgImV4dGVybmFsIiBmYWNpbmcKLSMgSXQgaXMgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGJ5IENMSSBvciBvdGhlciBSRVNUIGNsaWVudHMKLSMgVGhpcyBzaG91bGQgb25seSBydW4gb24gdGhlIG1hc3RlciBub2RlLCB3aGVyZSBkZWNvbW1pc3Npb25pbmcgb2YgYSByZW1vdGUgbm9kZSBpcyBpbml0aWF0ZWQKLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2RlY29tbWlzc2lvbihyZXF1ZXN0KToKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnUFVUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgIGRhdGEgPSBzaW1wbGVqc29uLmxvYWRzKHJlcXVlc3QucmF3X3Bvc3RfZGF0YSkKLSAgICBub2RlX2lkID0gZGF0YVsnaWQnXQotCi0gICAgIyBEaXNhbGxvdyBzZWxmLWRlY29tbWlzc2lvbmluZwotICAgIGxvY2FsX2lkID0gZ2V0X2xvY2FsX2NvbnRyb2xsZXJfaWQoKQotICAgIGlmIGxvY2FsX2lkID09IG5vZGVfaWQ6Ci0gICAgICAgIHJhaXNlIFJlc3REZWNvbW1pc3Npb25FeGNlcHRpb24oIkRlY29tbWlzc2lvbmluZyBvZiB0aGUgbWFzdGVyIG5vZGUgaXMgbm90IGFsbG93ZWQuICIgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSBwZXJmb3JtIGEgZmFpbG92ZXIgZmlyc3QuIikKLQotICAgIHRyeSA6Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBDb250cm9sbGVyLm9iamVjdHMuZ2V0KGlkPW5vZGVfaWQpCi0gICAgZXhjZXB0IENvbnRyb2xsZXIuRG9lc05vdEV4aXN0OgotICAgICAgICByYWlzZSBSZXN0RGVjb21taXNzaW9uRXhjZXB0aW9uKCJObyBjb250cm9sbGVyIGZvdW5kIikKLQotICAgIG5vZGVfaXAgPSBnZXRfY29udHJvbGxlcl9ub2RlX2lwKG5vZGVfaWQpCi0KLSAgICAjIENhc2UgMTogY29udHJvbGxlciBub2RlIGhhcyBJUAotICAgIGlmIG5vZGVfaXA6Ci0gICAgICAgIHJlc3VsdCA9IGV4ZWNfb3Nfd3JhcHBlcigiRGVjb21taXNzaW9uIiwgJ3NldCcsIFtub2RlX2lwXSkKLSAgICAgICAgb3V0cHV0ID0gcmVzdWx0WydvdXQnXS5zdHJpcCgpCi0gICAgICAgIGlmIHJlc3VsdFsnb3V0J10uc3RyaXAoKS5lbmRzd2l0aCgnaXMgYWxyZWFkeSBkZWNvbW1pc3Npb25lZCcpOgotICAgICAgICAgICAgZGVsZXRlX2hhX2ZpcmV3YWxsX3J1bGVzKG5vZGVfaXApCi0gICAgICAgICAgICBjYXNjYWRlX2RlbGV0ZV9jb250cm9sbGVyX25vZGUobm9kZV9pZCkKLQotICAgICMgQ2FzZSAyOiBjb250cm9sbGVyIG5vZGUgaGFzIE5PIElQCi0gICAgZWxzZToKLSAgICAgICAgb3V0cHV0ID0gJyVzIGlzIGFscmVhZHkgZGVjb21taXNzaW9uZWQnICUgbm9kZV9pZAotICAgICAgICBjYXNjYWRlX2RlbGV0ZV9jb250cm9sbGVyX25vZGUobm9kZV9pZCkKLQotICAgIGpzb25kaWN0ID0ge30KLSAgICBqc29uZGljdFsnc3RhdHVzJ10gPSAiT0siCi0gICAganNvbmRpY3RbJ2Rlc2NyaXB0aW9uJ10gPSBvdXRwdXQKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHNpbXBsZWpzb24uZHVtcHMoanNvbmRpY3QpLCBKU09OX0NPTlRFTlRfVFlQRSkKLQotIyBUaGlzIG1ldGhvZCBpcyAiaW50ZXJuYWwiIGZhY2luZwotIyBJdCBpcyBkZXNpZ25lZCB0byBiZSBjYWxsZWQgb25seSBieSBzeXMvcmVtb3ZlLW5vZGUuc2gKLSMgVGhpcyBzaG91bGQgb25seSBydW4gb24gdGhlIG5vZGUgYmVpbmcgZGVjb21taXNzaW9uZWQgKHNsYXZlKQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fZGVjb21taXNzaW9uX2ludGVybmFsKHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdQVVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgZGF0YSA9IHNpbXBsZWpzb24ubG9hZHMocmVxdWVzdC5yYXdfcG9zdF9kYXRhKQotICAgIG5vZGVfaXAgPSBkYXRhWydpcCddCi0gICAgZXhlY19vc193cmFwcGVyKCJEZWNvbW1pc3Npb25Mb2NhbCIsICdzZXQnLCBbbm9kZV9pcF0pCi0KLSAgICBqc29uZGljdCA9IHt9Ci0gICAganNvbmRpY3RbJ3N0YXR1cyddID0gIk9LIgotICAgIHJldHVybiBIdHRwUmVzcG9uc2Uoc2ltcGxlanNvbi5kdW1wcyhqc29uZGljdCksIEpTT05fQ09OVEVOVF9UWVBFKQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19oYV9wcm92aXNpb24ocmVxdWVzdCk6Ci0gICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gJ1BVVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICBkYXRhID0gc2ltcGxlanNvbi5sb2FkcyhyZXF1ZXN0LnJhd19wb3N0X2RhdGEpCi0gICAgbm9kZV9pcCA9IGRhdGFbJ2lwJ10KLSAgICAKLSAgICB0cnkgOgotICAgICAgICBjaSA9IENvbnRyb2xsZXJJbnRlcmZhY2Uub2JqZWN0cy5nZXQoaXA9bm9kZV9pcCkKLSAgICAgICAgaWQgPSBjaS5jb250cm9sbGVyLmlkCi0gICAgICAgIHByaW50ICdnb3QgaWQnLCBpZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBhID0gQ29udHJvbGxlckFsaWFzLm9iamVjdHMuZ2V0KGNvbnRyb2xsZXI9aWQpCi0gICAgICAgICAgICBhbGlhcyA9IGEuYWxpYXMKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgYWxpYXMgPSAnKG5vIGNvbnRyb2xsZXIgYWxpYXMpJwotCi0gICAgICAgIHByaW50ICdhbGlhczonLCBhbGlhcwotICAgICAgICByYWlzZSBSZXN0UHJvdmlzaW9uRXhjZXB0aW9uKCdpcCBhZGRyZXNzIGFscmVhZHkgaW4gY29udHJvbGxlciAlcyAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZCwgYWxpYXMpKQotICAgICAgICAKLSAgICBleGNlcHQgQ29udHJvbGxlckludGVyZmFjZS5Eb2VzTm90RXhpc3Q6Ci0gICAgICAgIGlkID0gdXVpZC51dWlkNCgpLnVybls5Ol0KLSAgICAgICAgcHJpbnQgImdlbmVyYXRlZCBpZCA9ICIsIGlkCi0gICAgICAgIGMgPSBDb250cm9sbGVyKGlkPWlkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjLnNhdmUoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAjIGRlc2NyaWJlIGZhaWx1cmUKLSAgICAgICAgICAgIHJhaXNlIFJlc3RQcm92aXNpb25FeGNlcHRpb24oJ2Nhblx0IHNhdmUgY29udHJvbGxlcicpCi0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHByaW50ICJzYXZlIGNvbnRyb2xsZXIiCi0gICAgICAgIGNpID0gQ29udHJvbGxlckludGVyZmFjZShjb250cm9sbGVyPWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcD1ub2RlX2lwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY292ZXJlZF9pcD1ub2RlX2lwKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaS5zYXZlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgIyBkZXNjcmliZSBmYWlsdXJlCi0gICAgICAgICAgICByYWlzZSBSZXN0UHJvdmlzaW9uRXhjZXB0aW9uKCdjYW5cdCBzYXZlIGNvbnRyb2xsYXIgaW50ZXJmYWNlcicpCi0KLSAgICBmb3IgYyBpbiBDb250cm9sbGVyLm9iamVjdHMuYWxsKCk6Ci0gICAgICAgIGlmIGMuaWQgIT0gaWQ6Ci0gICAgICAgICAgICAjaWYgdGhlcmUgYXJlIG11bHRpcGxlIGludGVyZmFjZXMsIGFzc3VtZSB0aGUKLSAgICAgICAgICAgICMgZXRoZXJuZXQwIGludGVyZmFjZSBpcyBmb3IgbWFuYWdlbWVudCBwdXJwb3NlIAotICAgICAgICAgICAgIyBYWFggdGhpcyBjb3VsZCBiZSBiZXR0ZXIuCi0gICAgICAgICAgICBpZmFjZSA9IENvbnRyb2xsZXJJbnRlcmZhY2Uub2JqZWN0cy5nZXQoY29udHJvbGxlcj1jLmlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J0V0aGVybmV0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXI9MCkKLSAgICAgICAgICAgIGlwID0gaWZhY2UuaXAKLSAgICAgICAgICAgIGZ3ID0gRmlyZXdhbGxSdWxlKGludGVyZmFjZT1pZmFjZSwgYWN0aW9uPSdhbGxvdycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfaXA9bm9kZV9pcCwgcG9ydD04MCwgcHJvdG89J3RjcCcpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZncuc2F2ZSgpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgIyBkZXNjcmliZSBmYWlsdXJlCi0gICAgICAgICAgICAgICAgcmFpc2UgUmVzdFByb3Zpc2lvbkV4Y2VwdGlvbignY2FuXHQgc2F2ZSBmaXJld2FsbCBydWxlIGZyb20gbWFzdGVyJykKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZ3ID0gRmlyZXdhbGxSdWxlKGludGVyZmFjZT1jaSwgYWN0aW9uPSdhbGxvdycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfaXA9aXAsIHBvcnQ9ODAsIHByb3RvPSd0Y3AnKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZ3LnNhdmUoKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHJhaXNlIFJlc3RQcm92aXNpb25FeGNlcHRpb24oJ2Nhblx0IHNhdmUgZmlyZXdhbGwgZnJvbSBzbGF2ZScpCi0gICAgICAgIAotCi0gICAgcmVzcG9uc2VfdGV4dCA9IGdldF9zdWNjZXNzZnVsX3Jlc3BvbnNlX2RhdGEoaWQpCi0gICAgcmVzcG9uc2UgPSBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0KLSAgICByZXR1cm4gcmVzcG9uc2UKLQotCi1kZWYgZ2V0X2NsdXN0ZXJuYW1lKCk6Ci0gICAgbmFtZSA9IG9zLnBvcGVuKCJncmVwIGNsdXN0ZXJfbmFtZSAvb3B0L3NkbnBsYXRmb3JtL2RiL2NvbmYvY2Fzc2FuZHJhLnlhbWwgfCBhd2sgICd7cHJpbnQgJDJ9JyIpLnJlYWRsaW5lKCkKLSAgICAjIG5hbWUgbWF5IGJlICcnLCBwZXJoYXBzIHRoaXMgb3VnaHQgdG8gTm9uZT8KLSAgICByZXR1cm4gbmFtZQotCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2NsdXN0ZXJuYW1lKHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgcmVzcG9uc2VfdGV4dCA9IHNpbXBsZWpzb24uZHVtcHMoW3sgJ2NsdXN0ZXJuYW1lJyA6IGdldF9jbHVzdGVybmFtZSgpIH1dKQotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0gICAgCi0gICAgCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19sb2NhbF9oYV9yb2xlKHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0KLSAgICB1cmwgPSBjb250cm9sbGVyX3VybCgnY29yZScsICdyb2xlJywgJ2pzb24nKQotICAgIHRyeToKLSAgICAgICAgcmVzcG9uc2VfdGV4dCA9IHVybGxpYjIudXJsb3Blbih1cmwsIHRpbWVvdXQ9MikucmVhZCgpCi0gICAgICAgIHJlc3BvbnNlID0ganNvbi5sb2FkcyhyZXNwb25zZV90ZXh0KQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHJlc3BvbnNlID0gSHR0cFJlc3BvbnNlKCd7InJvbGUiOiJVTkFWQUlMQUJMRSJ9JywgSlNPTl9DT05URU5UX1RZUEUpCi0gICAgICAgIHJldHVybiByZXNwb25zZQotICAgICMgbm93IGRldGVybWluZSBvdXIgY29udHJvbGxlciBpZAotICAgIGNvbnRyb2xsZXJfaWQgPSBnZXRfbG9jYWxfY29udHJvbGxlcl9pZCgpCi0KLSAgICAjIGZpbmQgYWxsIHRoZSBpbnRlcmZhY2VzCi0gICAgaWZzID0gQ29udHJvbGxlckludGVyZmFjZS5vYmplY3RzLmZpbHRlcihjb250cm9sbGVyPWNvbnRyb2xsZXJfaWQpCi0KLSAgICBmb3IgaW50ZiBpbiBpZnM6Ci0gICAgICAgIGZpcmV3YWxsX2lkID0gJyVzfCVzfCVzJyAlIChjb250cm9sbGVyX2lkLCBpbnRmLnR5cGUsIGludGYubnVtYmVyKQotCi0gICAgICAgIHJ1bGVzID0gRmlyZXdhbGxSdWxlLm9iamVjdHMuZmlsdGVyKGludGVyZmFjZT1maXJld2FsbF9pZCkKLSAgICAgICAgZm9yIHJ1bGUgaW4gcnVsZXM6Ci0gICAgICAgICAgICBpZiBydWxlLmFjdGlvbiA9PSAncmVqZWN0JyBhbmQgcnVsZS5wcm90byA9PSAndGNwJyBhbmQgcnVsZS5wb3J0ID09IDY2MzM6Ci0gICAgICAgICAgICAgICAgaWYgcmVzcG9uc2VbJ3JvbGUnXSBpbiB7J01BU1RFUicsICdTTEFWRSd9OgotICAgICAgICAgICAgICAgICAgICByZXNwb25zZVsncm9sZSddKz0nLUJMT0NLRUQnCi0KLSAgICByZXNwb25zZVsnY2x1c3Rlcm5hbWUnXSA9IGdldF9jbHVzdGVybmFtZSgpCi0gICAgICAgIAotICAgIHJldHVybiBIdHRwUmVzcG9uc2Uoc2ltcGxlanNvbi5kdW1wcyhyZXNwb25zZSksIEpTT05fQ09OVEVOVF9UWVBFKQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19zeXN0ZW1fY2xvY2socmVxdWVzdCwgbG9jYWw9VHJ1ZSk6Ci0gICAgbG9jYWxfb3JfdXRjX3N0ciA9ICdsb2NhbCcgaWYgbG9jYWwgZWxzZSAndXRjJwotICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICdHRVQnOgotICAgICAgICByZXN1bHQgPSBleGVjX29zX3dyYXBwZXIoIkRhdGVUaW1lIiwgJ2dldCcsIFtsb2NhbF9vcl91dGNfc3RyXSkKLSAgICBlbGlmIHJlcXVlc3QubWV0aG9kID09ICdQVVQnOgotICAgICAgICB0aW1lX2luZm8gPSBzaW1wbGVqc29uLmxvYWRzKHJlcXVlc3QucmF3X3Bvc3RfZGF0YSkKLSAgICAgICAgZHQgPSBkYXRldGltZSgqKnRpbWVfaW5mbykKLSAgICAgICAgbmV3X2RhdGVfdGltZV9zdHJpbmcgPSBkdC5zdHJmdGltZSgnJVk6JW06JWQ6JUg6JU06JVMnKQotICAgICAgICByZXN1bHQgPSBleGVjX29zX3dyYXBwZXIoIkRhdGVUaW1lIiwgJ3NldCcsIFtsb2NhbF9vcl91dGNfc3RyLCBuZXdfZGF0ZV90aW1lX3N0cmluZ10pCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotCi0gICAgaWYgbGVuKHJlc3VsdCkgPT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdFcnJvciBleGVjdXRpbmcgZGF0ZSBjb21tYW5kJykKLSAgICAKLSAgICAjIFRoZSBEYXRlVGltZSBPUyB3cmFwcGVyIG9ubHkgaGFzIGEgc2luZ2xlIGNvbW1hbmQgc28gdGhlIHJldHVybgotICAgICMgZGF0ZS90aW1lIGlzIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBvdXQgYXJyYXkKLSAgICB2YWx1ZXMgPSByZXN1bHRbJ291dCddLnN0cmlwKCkuc3BsaXQoJzonKQotICAgIGRhdGVfdGltZV9pbmZvID0gewotICAgICAgICAneWVhcic6IGludCh2YWx1ZXNbMF0pLAotICAgICAgICAnbW9udGgnOiBpbnQodmFsdWVzWzFdKSwKLSAgICAgICAgJ2RheSc6IGludCh2YWx1ZXNbMl0pLAotICAgICAgICAnaG91cic6IGludCh2YWx1ZXNbM10pLAotICAgICAgICAnbWludXRlJzogaW50KHZhbHVlc1s0XSksCi0gICAgICAgICdzZWNvbmQnOiBpbnQodmFsdWVzWzVdKSwKLSAgICAgICAgJ3R6JzogdmFsdWVzWzZdCi0gICAgfQotICAgIHJlc3BvbnNlX3RleHQgPSBzaW1wbGVqc29uLmR1bXBzKGRhdGVfdGltZV9pbmZvKQotICAgIHJlc3BvbnNlID0gSHR0cFJlc3BvbnNlKHJlc3BvbnNlX3RleHQsIEpTT05fQ09OVEVOVF9UWVBFKQotCi0gICAgcmV0dXJuIHJlc3BvbnNlCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2luc3RhbmNlKHJlcXVlc3QsIG1vZGVsX25hbWUsaWQ9Tm9uZSk6Ci0gICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiBoYW5kbGVzIGJvdGggR0VUIGFuZCBQVVQgbWV0aG9kcy4KLSAgICAKLSAgICBGb3IgYSBHRVQgcmVxdWVzdCBpdCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgb2YgdGhlIGluc3RhbmNlcyBvZiB0aGUKLSAgICBtb2RlbCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzcGVjaWZpZWQgdHlwZSB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQKLSAgICBxdWVyeSBwYXJhbWV0ZXJzLiBJZiB0aGVyZSBhcmUgbm8gcXVlcnkgcGFyYW1ldGVycyB0aGVuIGl0IHJldHVybnMKLSAgICBhIGxpc3Qgb2YgYWxsIG9mIHRoZSBpbnN0YW5jZXMgb2YgdGhlIHNwZWNpZmllZCB0eXBlLiBUaGUgbmFtZXMgb2YKLSAgICB0aGUgcXVlcnkgcGFyYW1ldGVycyBjYW4gdXNlIHRoZSBEamFuZ28gZG91YmxlIHVuZGVyc2NvcmUgc3ludGF4Ci0gICAgZm9yIGRvaW5nIG1vcmUgY29tcGxpY2F0ZWQgdGVzdHMgdGhhbiBqdXN0IGVxdWFsaXR5Ci0gICAgKGUuZy4gbWFjX19zdGFydHN3aXRoPTE5Mi4xNjgpLgotICAgIAotICAgIEZvciBhIFBVVCByZXF1ZXN0IGl0IGNhbiBlaXRoZXIgdXBkYXRlIGFuIGV4aXN0aW5nIGluc3RhbmNlIG9yCi0gICAgaW5zZXJ0IG9uZSBvciBtb3JlIG5ldyBpbnN0YW5jZXMuIElmIHRoZXJlIGFyZSBhbnkgcXVlcnkgcGFyYW1ldGVycwotICAgIHRoZW4gaXQgYXNzdW1lcyB0aGF0IGl0cyB0aGUgdXBkYXRlIGNhc2UgYW5kIHRoYXQgdGhlIHF1ZXJ5Ci0gICAgcGFyYW1ldGVycyBpZGVudGlmeSBleGFjdGx5IG9uZSBpbnN0YW5jZS4gSWYgdGhhdCdzIG5vdCB0aGUgY2FzZQotICAgIHRoZW4gYW4gZXJyb3IgcmVzcG9uc2UgaXMgcmV0dXJuZWQuIEZvciB0aGUgdXBkYXRlIGNhc2UgYW55IHN1YnNldAotICAgIG9mIHRoZSBmaWVsZHMgY2FuIGJlIHVwZGF0ZWQgd2l0aCB0aGUgUFVUIGRhdGEuIFRoZSBmb3JtYXQgb2YgdGhlCi0gICAgUFVUIGRhdGEgaXMgYSBKU09OIGRpY3Rpb25hcnkKLSAgICAiIiIKLSAgICAKLSAgICAjIEZJWE1FOiBIYWNrIHRvIHJlbWFwICdsb2NhbGhvc3QnIGlkIGZvciB0aGUgY29udHJvbGxlci1ub2RlIG1vZGVsCi0gICAgIyB0byB0aGUgcmVhbCBJRCBmb3IgdGhpcyBjb250cm9sbGVyCi0gICAgaWYgbW9kZWxfbmFtZSA9PSAnY29udHJvbGxlci1ub2RlJyBhbmQgaWQgPT0gJ2xvY2FsaG9zdCc6Ci0gICAgICAgIGlkID0gZ2V0X2xvY2FsX2NvbnRyb2xsZXJfaWQoKQotICAgICAgICAKLSAgICAjIExvb2t1cCB0aGUgbW9kZWwgY2xhc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZQotICAgIG1vZGVsX2luZm8gPSByZXN0X21vZGVsX2luZm9fZGljdC5nZXQobW9kZWxfbmFtZSkKLSAgICBpZiBub3QgbW9kZWxfaW5mbzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWREYXRhVHlwZUV4Y2VwdGlvbihtb2RlbF9uYW1lKQotICAgICAgICAgICAgCi0gICAgIyBTZXQgdXAgdGhlIGtleXdvcmQgYXJndW1lbnQgZGljdGlvbmFyeSB3ZSB1c2UgdG8gZmlsdGVyIHRoZSBRdWVyeVNldC4KLSAgICBmaWx0ZXJfa2V5d29yZF9hcmdzID0ge30KLQotICAgIGpzb25wX3ByZWZpeCA9IE5vbmUKLSAgICBub2xpc3QgPSBGYWxzZQotICAgIG9yZGVyX2J5ID0gTm9uZQotICAgIAotICAgICMgTm93IGl0ZXJhdGUgb3ZlciB0aGUgcXVlcnkgcGFyYW1zIGFuZCBhZGQgZnVydGhlciBmaWx0ZXIga2V5d29yZCBhcmd1bWVudHMKLSAgICBxdWVyeV9wYXJhbV9kaWN0ID0gcmVxdWVzdC5HRVQKLSAgICBmb3IgcXVlcnlfcGFyYW1fbmFtZSwgcXVlcnlfcGFyYW1fdmFsdWUgaW4gcXVlcnlfcGFyYW1fZGljdC5pdGVtcygpOgotICAgICAgICBhZGRfcXVlcnlfcGFyYW0gPSBGYWxzZQotICAgICAgICBxdWVyeV9wYXJhbV9uYW1lID0gc3RyKHF1ZXJ5X3BhcmFtX25hbWUpCi0gICAgICAgIHF1ZXJ5X3BhcmFtX3ZhbHVlID0gc3RyKHF1ZXJ5X3BhcmFtX3ZhbHVlKQotICAgICAgICBpZiBxdWVyeV9wYXJhbV9uYW1lID09ICdjYWxsYmFjayc6ICNzd2l0Y2hpbmcgdG8gbWF0Y2ggdXAgd2l0aCBqcXVlcnkgZ2V0SlNPTiBjYWxsIG5hbWluZyBjb252ZW50aW9uLgotICAgICAgICAgICAganNvbnBfcHJlZml4ID0gcXVlcnlfcGFyYW1fdmFsdWUKLSAgICAgICAgZWxpZiBxdWVyeV9wYXJhbV9uYW1lID09ICdub2xpc3QnOgotICAgICAgICAgICAgaWYgcXVlcnlfcGFyYW1fdmFsdWUgbm90IGluICgnRmFsc2UnLCAnZmFsc2UnLCAnMCcsICcnKToKLSAgICAgICAgICAgICAgICBub2xpc3QgPSBUcnVlCi0gICAgICAgIGVsaWYgcXVlcnlfcGFyYW1fbmFtZSA9PSAnb3JkZXJieSc6Ci0gICAgICAgICAgICBvcmRlcl9ieSA9IHF1ZXJ5X3BhcmFtX3ZhbHVlLnNwbGl0KCcsJykKLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihvcmRlcl9ieSkpOgotICAgICAgICAgICAgICAgIG5hbWUgPSBvcmRlcl9ieVtpXQotICAgICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnLScpOgotICAgICAgICAgICAgICAgICAgICBkZXNjZW5kaW5nID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBuYW1lID0gbmFtZVsxOl0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBkZXNjZW5kaW5nID0gRmFsc2UKLSAgICAgICAgICAgICAgICBmaWVsZF9pbmZvID0gbW9kZWxfaW5mby5yZXN0X25hbWVfZGljdC5nZXQobmFtZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgZmllbGRfaW5mbzoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUmVzdEludmFsaWRPcmRlckJ5RXhjZXB0aW9uKG5hbWUpCi0gICAgICAgICAgICAgICAgbmFtZSA9IGZpZWxkX2luZm8ubmFtZQotICAgICAgICAgICAgICAgIGlmIGRlc2NlbmRpbmc6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSAnLScgKyBuYW1lCi0gICAgICAgICAgICAgICAgb3JkZXJfYnlbaV0gPSBuYW1lCi0gICAgICAgIGVsaWYgcXVlcnlfcGFyYW1fbmFtZSBpbiBtb2RlbF9pbmZvLnJlc3RfbmFtZV9kaWN0OgotICAgICAgICAgICAgZmllbGRfaW5mbyA9IG1vZGVsX2luZm8ucmVzdF9uYW1lX2RpY3QuZ2V0KHF1ZXJ5X3BhcmFtX25hbWUpCi0gICAgICAgICAgICAjIEZvciBib29sZWFucywgdHJhbnNsYXRlIFRydWUvRmFsc2Ugc3RyaW5ncyBpbnRvIDAvMS4KLSAgICAgICAgICAgIGlmIGZpZWxkX2luZm8gYW5kIHR5cGUoZmllbGRfaW5mby5kamFuZ29fZmllbGRfaW5mbykgPT0gQm9vbGVhbkZpZWxkOgotICAgICAgICAgICAgICAgIGlmIHF1ZXJ5X3BhcmFtX3ZhbHVlLmxvd2VyKCkgPT0gJ2ZhbHNlJzoKLSAgICAgICAgICAgICAgICAgICAgcXVlcnlfcGFyYW1fdmFsdWUgPSAwCi0gICAgICAgICAgICAgICAgZWxpZiBxdWVyeV9wYXJhbV92YWx1ZS5sb3dlcigpID09ICd0cnVlJzoKLSAgICAgICAgICAgICAgICAgICAgcXVlcnlfcGFyYW1fdmFsdWUgPSAxCi0gICAgICAgICAgICBxdWVyeV9wYXJhbV9uYW1lID0gZmllbGRfaW5mby5uYW1lCi0gICAgICAgICAgICBpZiBtb2RlbF9uYW1lID09ICdjb250cm9sbGVyLW5vZGUnIGFuZCBcCi0gICAgICAgICAgICAgIHF1ZXJ5X3BhcmFtX25hbWUgPT0gJ2lkJyBhbmQgcXVlcnlfcGFyYW1fdmFsdWUgPT0gJ2xvY2FsaG9zdCc6Ci0gICAgICAgICAgICAgICAgcXVlcnlfcGFyYW1fdmFsdWUgPSBnZXRfbG9jYWxfY29udHJvbGxlcl9pZCgpCi0gICAgICAgICAgICBpZiBtb2RlbF9uYW1lIGluICdjb250cm9sbGVyLWludGVyZmFjZScgYW5kIFwKLSAgICAgICAgICAgICAgcXVlcnlfcGFyYW1fbmFtZSA9PSAnY29udHJvbGxlcicgYW5kIFwKLSAgICAgICAgICAgICAgcXVlcnlfcGFyYW1fdmFsdWUgPT0gJ2xvY2FsaG9zdCc6Ci0gICAgICAgICAgICAgICAgcXVlcnlfcGFyYW1fdmFsdWUgPSBnZXRfbG9jYWxfY29udHJvbGxlcl9pZCgpCi0gICAgICAgICAgICBhZGRfcXVlcnlfcGFyYW0gPSBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkb3VibGVfdW5kZXJzY29yZV9zdGFydCA9IHF1ZXJ5X3BhcmFtX25hbWUuZmluZCgiX18iKQotICAgICAgICAgICAgaWYgZG91YmxlX3VuZGVyc2NvcmVfc3RhcnQgPj0gMDoKLSAgICAgICAgICAgICAgICByZXN0X25hbWUgPSBxdWVyeV9wYXJhbV9uYW1lWzpkb3VibGVfdW5kZXJzY29yZV9zdGFydF0KLSAgICAgICAgICAgICAgICBmaWVsZF9pbmZvID0gbW9kZWxfaW5mby5yZXN0X25hbWVfZGljdC5nZXQocmVzdF9uYW1lKQotICAgICAgICAgICAgICAgIGlmIGZpZWxkX2luZm86Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IHF1ZXJ5X3BhcmFtX25hbWVbZG91YmxlX3VuZGVyc2NvcmVfc3RhcnQ6XQotICAgICAgICAgICAgICAgICAgICBxdWVyeV9wYXJhbV9uYW1lID0gZmllbGRfaW5mby5uYW1lCi0gICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoZmllbGRfaW5mby5kamFuZ29fZmllbGRfaW5mbykgPT0gRm9yZWlnbktleToKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X3BhcmFtX25hbWUgPSBxdWVyeV9wYXJhbV9uYW1lICsgJ19fJyArIGZpZWxkX2luZm8uZGphbmdvX2ZpZWxkX2luZm8ucmVsLmZpZWxkX25hbWUKLSAgICAgICAgICAgICAgICAgICAgIyBTdWJzdGl0dXRlIGluIHRoZSBtb2RlbCBmaWVsZCBuYW1lIGZvciB0aGUgKHBvc3NpYmxlIHJlbmFtZWQpIHJlc3QgbmFtZQotICAgICAgICAgICAgICAgICAgICBxdWVyeV9wYXJhbV9uYW1lICs9IG9wZXJhdGlvbgotICAgICAgICAgICAgICAgICAgICBhZGRfcXVlcnlfcGFyYW0gPSBUcnVlCi0gICAgICAgIGlmIGFkZF9xdWVyeV9wYXJhbToKLSAgICAgICAgICAgIGZpbHRlcl9rZXl3b3JkX2FyZ3NbcXVlcnlfcGFyYW1fbmFtZV0gPSBxdWVyeV9wYXJhbV92YWx1ZQotCi0gICAgaWYgaWQgIT0gTm9uZToKLSAgICAgICAgaWYgbGVuKGZpbHRlcl9rZXl3b3JkX2FyZ3MpID4gMDoKLSAgICAgICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkRmlsdGVyUGFyYW1ldGVyRXhjZXB0aW9uKGZpbHRlcl9rZXl3b3JkX2FyZ3Mua2V5cygpWzBdKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBnZXRfYXJncyA9IHttb2RlbF9pbmZvLnByaW1hcnlfa2V5OmlkfQotICAgICAgICAgICAgaW5zdGFuY2UgPSBtb2RlbF9pbmZvLm1vZGVsX2NsYXNzLm9iamVjdHMuZ2V0KCoqZ2V0X2FyZ3MpCi0gICAgICAgICAgICBpbnN0YW5jZV9saXN0ID0gKGluc3RhbmNlLCkKLSAgICAgICAgICAgIG5vbGlzdCA9IFRydWUKLSAgICAgICAgZXhjZXB0IG1vZGVsX2luZm8ubW9kZWxfY2xhc3MuRG9lc05vdEV4aXN0LGU6Ci0gICAgICAgICAgICByYWlzZSBSZXN0UmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbihyZXF1ZXN0LnBhdGgpCi0gICAgICAgIGV4Y2VwdCBtb2RlbF9pbmZvLm1vZGVsX2NsYXNzLk11bHRpcGxlT2JqZWN0c1JldHVybmVkLCBleGM6Ci0gICAgICAgICAgICAjIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgcmFpc2UgUmVzdEludGVybmFsRXhjZXB0aW9uKGV4YykKLSAgICBlbGlmIChyZXF1ZXN0Lm1ldGhvZCAhPSAnUFVUJykgb3IgKGxlbihmaWx0ZXJfa2V5d29yZF9hcmdzKSA+IDApOgotICAgICAgICAjIEdldCB0aGUgUXVlcnlTZXQgYmFzZWQgb24gdGhlIGtleXdvcmQgYXJndW1lbnRzIHdlIGNvbnN0cnVjdGVkCi0gICAgICAgIGluc3RhbmNlX2xpc3QgPSBtb2RlbF9pbmZvLm1vZGVsX2NsYXNzLm9iamVjdHMuZmlsdGVyKCoqZmlsdGVyX2tleXdvcmRfYXJncykKLSAgICAgICAgaWYgb3JkZXJfYnk6Ci0gICAgICAgICAgICBpbnN0YW5jZV9saXN0ID0gaW5zdGFuY2VfbGlzdC5vcmRlcl9ieSgqb3JkZXJfYnkpCi0gICAgZWxzZToKLSAgICAgICAgIyBXZSdyZSBpbnNlcnRpbmcgbmV3IG9iamVjdHMsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBkbyBhIHF1ZXJ5Ci0gICAgICAgIGluc3RhbmNlX2xpc3QgPSBOb25lCi0gICAgICAgIAotICAgIHJlc3BvbnNlX2NvbnRlbnRfdHlwZSA9IEpTT05fQ09OVEVOVF9UWVBFCi0gICAgCi0gICAgaWYgcmVxdWVzdC5tZXRob2QgPT0gJ0dFVCc6Ci0gICAgICAgIGpzb25fcmVzcG9uc2VfZGF0YSA9IFtdCi0gICAgICAgIGZvciBpbnN0YW5jZSBpbiBpbnN0YW5jZV9saXN0OgotICAgICAgICAgICAganNvbl9pbnN0YW5jZSA9IHt9Ci0gICAgICAgICAgICBmb3IgZmllbGRfaW5mbyBpbiBtb2RlbF9pbmZvLmZpZWxkX25hbWVfZGljdC52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICAjIE1hZGUgc29tZSBtaW5vciBlZGl0cyB0byBkZWFsIHdpdGggYSkgZmllbGRzIHRoYXQgYXJlIGVtcHR5IGFuZCBiKSBmaWVsZHMgdGhhdCBhcmUgbm90IHN0cmluZ3MgLUt5bGUKLSAgICAgICAgICAgICAgICAjIENoYW5nZWQgdGhpcyB0byBvbmx5IGRvIGFuIGV4cGxpY2l0IHN0cmluZyBjb252ZXJzaW9uIGlmIGl0J3MgYSB1bmljb2RlIHN0cmluZy4KLSAgICAgICAgICAgICAgICAjIFRoZSBjb250cm9sbGVyIGlzIGV4cGVjdGluZyB0byBnZXQgdGhlIHVuc3RyaW5naWZpZWQgdmFsdWUgKGUuZy4gZm9yIGJvb2xlYW4gdmFsdWVzKQotICAgICAgICAgICAgICAgICMgTm90IHN1cmUgaWYgdGhpcyB3aWxsIGJyZWFrIHRoaW5ncyBpbiB0aGUgVUksIGJ1dCB3ZSdsbCBuZWVkIHRvIHJlc29sdmUgaG93Ci0gICAgICAgICAgICAgICAgIyB3ZSB3YW50IHRvIGhhbmRsZSB0aGlzLiBBbHNvLCBob3cgZG8gd2Ugd2FudCB0byBoYW5kbGUgdW5pY29kZSBzdHJpbmdzPyAtLSByb2J2Ci0gICAgICAgICAgICAgICAgZmllbGRfbmFtZSA9IGZpZWxkX2luZm8ubmFtZQotICAgICAgICAgICAgICAgIGlmIHR5cGUoZmllbGRfaW5mby5kamFuZ29fZmllbGRfaW5mbykgPT0gRm9yZWlnbktleToKLSAgICAgICAgICAgICAgICAgICAgZmllbGRfbmFtZSArPSAnX2lkJwotICAgICAgICAgICAgICAgIHZhbHVlID0gaW5zdGFuY2UuX19kaWN0X18uZ2V0KGZpZWxkX25hbWUpCi0gICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZmllbGRfaW5mby5qc29uX3NlcmlhbGl6ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc3RyKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBqc29uX2luc3RhbmNlW2ZpZWxkX2luZm8ucmVzdF9uYW1lXSA9IHZhbHVlCi0gICAgICAgICAgICBqc29uX3Jlc3BvbnNlX2RhdGEuYXBwZW5kKGpzb25faW5zdGFuY2UpCi0gICAgICAgIAotICAgICAgICAjIElmIHRoZSBub2xpc3QgcXVlcnkgcGFyYW0gd2FzIGVuYWJsZWQgdGhlbiBjaGVjayB0byBtYWtlIHN1cmUKLSAgICAgICAgIyB0aGF0IHRoZXJlIHdhcyBvbmx5IGEgc2luZ2xlIGluc3RhbmNlIGluIHRoZSByZXNwb25zZSBsaXN0IGFuZCwKLSAgICAgICAgIyBpZiBzbywgdW5wYWNrIGl0IGZyb20gdGhlIGxpc3QKLSAgICAgICAgaWYgbm9saXN0OgotICAgICAgICAgICAgaWYgbGVuKGpzb25fcmVzcG9uc2VfZGF0YSkgIT0gMToKLSAgICAgICAgICAgICAgICByYWlzZSBSZXN0Tm9MaXN0UmVzdWx0RXhjZXB0aW9uKCkKLSAgICAgICAgICAgIGpzb25fcmVzcG9uc2VfZGF0YSA9IGpzb25fcmVzcG9uc2VfZGF0YVswXQotICAgICAgICAKLSAgICAgICAgIyBDb252ZXJ0IHRvIGpzb24KLSAgICAgICAgcmVzcG9uc2VfZGF0YSA9IHNpbXBsZWpzb24uZHVtcHMoanNvbl9yZXNwb25zZV9kYXRhKQotICAgICAgICAKLSAgICAgICAgIyBJZiB0aGUganNvbnAgcXVlcnkgcGFyYW1ldGVyIHdhcyBzcGVjaWZpZWQsIHdyYXAgdGhlIGRhdGEgd2l0aAotICAgICAgICAjIHRoZSBqc29ucCBwcmVmaXgKLSAgICAgICAgaWYganNvbnBfcHJlZml4OgotICAgICAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb25wX3ByZWZpeCArICcoJyArIHJlc3BvbnNlX2RhdGEgKyAnKScKLSAgICAgICAgICAgICMgV2UgZG9uJ3QgcmVhbGx5IGtub3cgd2hhdCB0aGUgY29udGVudCB0eXBlIGlzIGhlcmUsIGJ1dCBpdCdzIHR5cGljYWxseSBqYXZhc2NyaXB0Ci0gICAgICAgICAgICByZXNwb25zZV9jb250ZW50X3R5cGUgPSBURVhUX0pBVkFTQ1JJUFRfQ09OVEVOVF9UWVBFCi0gICAgZWxpZiByZXF1ZXN0Lm1ldGhvZCA9PSAnUFVUJzoKLSAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGdldF9zdWNjZXNzZnVsX3Jlc3BvbnNlX2RhdGEoJ3NhdmVkJykKLSAgICAgICAgcmVzcG9uc2VfY29udGVudF90eXBlID0gSlNPTl9DT05URU5UX1RZUEUKLSAgICAgICAgCi0gICAgICAgIGJlZ2luX2JhdGNoX25vdGlmaWNhdGlvbigpCi0gICAgICAgIGpzb25fb2JqZWN0ID0gc2ltcGxlanNvbi5sb2FkcyhyZXF1ZXN0LnJhd19wb3N0X2RhdGEpCi0gICAgICAgIGlmIGluc3RhbmNlX2xpc3QgaXMgbm90IE5vbmU6Ci0KLSAgICAgICAgICAgICMgZG9uJ3QgYWxsb3cgdGhlIGlwIGFkZHJlc3Mgb2YgdGhlIGZpcnN0IGludGVyZmFjZSB0bwotICAgICAgICAgICAgIyBiZSB1cGRhdGVkIG9uY2UgaXQgaXMgc2V0LiAgVGhpcyByZWFsbHkgYXBwbGllcyB0bwotICAgICAgICAgICAgIyB0aGUgaW50ZXJmYWNlIGNhc3NhbmRyYSB1c2VzIHRvIHN5bmMgdGhlIGRiLgotICAgICAgICAgICAgaWYgbW9kZWxfbmFtZSA9PSAnY29udHJvbGxlci1pbnRlcmZhY2UnOgotICAgICAgICAgICAgICAgIGZvciBpbnN0YW5jZSBpbiBpbnN0YW5jZV9saXN0OgotICAgICAgICAgICAgICAgICAgICBpZiBpbnN0YW5jZS5udW1iZXIgPT0gMCBhbmQgaW5zdGFuY2UuaXAgIT0gJyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAnaXAnIGluIGpzb25fb2JqZWN0IGFuZCBqc29uX29iamVjdFsnaXAnXSAhPSBpbnN0YW5jZS5pcDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSZXN0TW9kZWxFeGNlcHRpb24oIkluIHRoaXMgdmVyc2lvbiwgaXAtYWRkcmVzcyBvZiBwcmltYXJ5IGludGVyZmFjZSBjYW4ndCBiZSB1cGRhdGVkIGFmdGVyIGluaXRpYWwgY29uZmlndXJhdGlvbiIpCi0KLSAgICAgICAgICAgICMgSW4gdGhpcyBjYXNlIHRoZSBVUkwgaW5jbHVkZXMgcXVlcnkgcGFyYW1ldGVyKHMpIHdoaWNoIHdlIGFzc3VtZQotICAgICAgICAgICAgIyBuYXJyb3cgdGhlIHJlcXVlc3QgdG8gdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwgdG8gYmUgdXBkYXRlZAotICAgICAgICAgICAgIyB1cGRhdGVkIHdpdGggdGhlIFBVVCBkYXRhLiBTbyB3ZSdyZSB1cGRhdGluZyBleGlzdGluZyBpbnN0YW5jZXMKLSAgICAgICAgICAgIAotICAgICAgICAgICAgIyBJZiBpdCdzIGEgbGlzdCB3aXRoIG9uZSBlbGVtZW50IHRoZW4gZXh0cmFjdCB0aGUgc2luZ2xlIGVsZW1lbnQKLSAgICAgICAgICAgIGlmICh0eXBlKGpzb25fb2JqZWN0KSA9PSBsaXN0KSBhbmQgKGxlbihqc29uX29iamVjdCkgPT0gMSk6Ci0gICAgICAgICAgICAgICAganNvbl9vYmplY3QgPSBqc29uX29iamVjdFswXQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgIyBXZSdyZSBleHBlY3RpbmcgYSBkaWN0aW9uYXJ5IHdoZXJlIHRoZSBrZXlzIG1hdGNoIHRoZSBtb2RlbCBmaWVsZCBuYW1lcwotICAgICAgICAgICAgIyBJZiB0aGUgZGF0YSBpc24ndCBhIGRpY3Rpb25hcnkgdGhlbiByZXR1cm4gYW4gZXJyb3IKLSAgICAgICAgICAgIGlmIHR5cGUoanNvbl9vYmplY3QpICE9IGRpY3Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUmVzdEludmFsaWRQdXREYXRhRXhjZXB0aW9uKCkgIyBUT0RPOiBTaG91bGQgcmV0dXJuIHNvbWV0aGluZyBkaWZmZXJlbnQgaGVyZQotICAgICAgICAgICAgCi0gICAgICAgICAgICAjIFNldCB0aGUgZmllbGRzIGluIHRoZSBtb2RlbCBpbnN0YW5jZSB3aXRoIHRoZSBkYXRhIGZyb20gdGhlIGRpY3Rpb25hcnkKLSAgICAgICAgICAgIGZvciBpbnN0YW5jZSBpbiBpbnN0YW5jZV9saXN0OgotICAgICAgICAgICAgICAgIGZvciByZXN0X25hbWUsIHZhbHVlIGluIGpzb25fb2JqZWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZXN0X25hbWUgaW4gbW9kZWxfaW5mby5yZXN0X25hbWVfZGljdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlc3RNb2RlbEV4Y2VwdGlvbigiTW9kZWwgJyVzJyBoYXMgbm8gZmllbGQgJyVzJyIgJSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxfbmFtZSwgcmVzdF9uYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgZmllbGRfaW5mbyA9IG1vZGVsX2luZm8ucmVzdF9uYW1lX2RpY3RbcmVzdF9uYW1lXQotICAgICAgICAgICAgICAgICAgICBmaWVsZF9uYW1lID0gc3RyKGZpZWxkX2luZm8ubmFtZSkgICAjIEZJWE1FOiBEbyB3ZSBuZWVkIHRoZSBzdHIgY2FzdD8KLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShmaWVsZF9pbmZvLmRqYW5nb19maWVsZF9pbmZvKSA9PSBGb3JlaWduS2V5OgotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRfbmFtZSArPSAnX2lkJwotICAgICAgICAgICAgICAgICAgICAjIFRPRE86IERvZXMgRGphbmdvIHN0aWxsIG5vdCBsaWtlIHVuaWNvZGUgc3RyaW5ncyBoZXJlPwotICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSA9PSB1bmljb2RlOgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzdHIodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLl9fZGljdF9fW2ZpZWxkX25hbWVdID0gdmFsdWUKLSAgICAgICAgICAgICAgICAjIFNhdmUgdGhlIHVwZGF0ZWQgbW9kZWwgaW5zdGFuY2UKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmZ1bGxfY2xlYW4oKQotICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5zYXZlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsaWRhdGlvbkVycm9yLCBlcnI6Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZV92YWxpZGF0aW9uX2Vycm9yKG1vZGVsX2luZm8sIGVycikKLSAgICAgICAgICAgICAgICAgICAgI3JhaXNlIFJlc3RWYWxpZGF0aW9uRXhjZXB0aW9uKGVycikKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBleGM6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlc3RTYXZlRXhjZXB0aW9uKGV4YykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgSW4gdGhpcyBjYXNlIG5vIHF1ZXJ5IHBhcmFtZXRlcnMgb3IgaWQgd2VyZSBzcGVjaWZpZWQgc28gd2UncmUgaW5zZXJ0aW5nIG5ldwotICAgICAgICAgICAgIyBpbnN0YW5jZXMgaW50byB0aGUgZGF0YWJhc2UuIFRoZSBQVVQgZGF0YSBjYW4gYmUgZWl0aGVyIGEgbGlzdCBvZiBuZXcKLSAgICAgICAgICAgICMgaXRlbXMgdG8gYWRkIChpLmUuIHRvcCBsZXZlbCBqc29uIG9iamVjdCBpcyBhIGxpc3QpIG9yIGVsc2UgYSBzaW5nbGUKLSAgICAgICAgICAgICMgbmV3IGVsZW1lbnQgKGkuZS4gdG9wLWxldmVsIGpzb24gb2JqZWN0IGlzIGEgZGljdCkuCi0gICAgICAgICAgICAjcHJpbnQgImNyZWF0aW5nIG9iamVjdChzKSIKLQotICAgICAgICAgICAgIyBUbyBzaW1wbGlmeSB0aGUgbG9naWMgYmVsb3cgd2UgdHVybiB0aGUgc2luZ2xlIG9iamVjdCBjYXNlIGludG8gYSBsaXN0Ci0gICAgICAgICAgICBpZiB0eXBlKGpzb25fb2JqZWN0KSAhPSBsaXN0OgotICAgICAgICAgICAgICAgIGpzb25fb2JqZWN0ID0gW2pzb25fb2JqZWN0XQotICAgICAgICAgICAgCi0gICAgICAgICAgICAjIENyZWF0ZSBuZXcgbW9kZWwgaW5zdGFuY2VzIGZvciBhbGwgb2YgdGhlIGl0ZW1zIGluIHRoZSBsaXN0Ci0gICAgICAgICAgICBmb3IgaW5zdGFuY2VfZGF0YV9kaWN0IGluIGpzb25fb2JqZWN0OgotICAgICAgICAgICAgICAgICMgV2UgZXhwZWN0IHRoZSBkYXRhIHRvIGJlIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgZmllbGQgbmFtZXMKLSAgICAgICAgICAgICAgICAjIGluIHRoZSBtb2RlbC4gSWYgaXQncyBub3QgYSBkaWN0IHJldHVybiBhbiBlcnJvcgotICAgICAgICAgICAgICAgIGlmIHR5cGUoaW5zdGFuY2VfZGF0YV9kaWN0KSAhPSBkaWN0OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBSZXN0SW52YWxpZFB1dERhdGFFeGNlcHRpb24oKQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9kaWN0ID0ge30KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAjIE5vdyBhZGQgdGhlIGZpZWxkcyBzcGVjaWZpZWQgaW4gdGhlIFBVVCBkYXRhCi0gICAgICAgICAgICAgICAgZm9yIHJlc3RfbmFtZSwgdmFsdWUgaW4gaW5zdGFuY2VfZGF0YV9kaWN0Lml0ZW1zKCk6Ci0KLSAgICAgICAgICAgICAgICAgICAgI3ByaW50ICIgIHByb2Nlc3NpbmcgIiArIHN0cihuYW1lKSArICIgIiArIHN0cih2YWx1ZSkKLQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVzdF9uYW1lIGluIG1vZGVsX2luZm8ucmVzdF9uYW1lX2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSZXN0TW9kZWxFeGNlcHRpb24oIk1vZGVsICclcycgaGFzIG5vIGZpZWxkICclcyciICUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsX25hbWUsIHJlc3RfbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgIGZpZWxkX2luZm8gPSBtb2RlbF9pbmZvLnJlc3RfbmFtZV9kaWN0W3Jlc3RfbmFtZV0KLSAgICAgICAgICAgICAgICAgICAgIyBzaW1wbGVqc29uIHVzZXMgdW5pY29kZSBzdHJpbmdzIHdoZW4gaXQgbG9hZHMgdGhlIG9iamVjdHMgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgIyBEamFuZ28gZG9lc24ndCBsaWtlIHRoYXQsIHNvIHdlIGNvbnZlcnQgdGhlc2UgdG8gQVNDSUkgc3RyaW5ncwotICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKHJlc3RfbmFtZSkgPT0gdW5pY29kZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RfbmFtZSA9IHN0cihyZXN0X25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGlmIHR5cGUodmFsdWUpID09IHVuaWNvZGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0cih2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgZmllbGRfbmFtZSA9IGZpZWxkX2luZm8ubmFtZQotICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBIYWNrIHRvIHJlbWFwIGxvY2FsaG9zdCBjb250cm9sbGVyIG5vZGUgaWQgYWxpYXMgdG8gdGhlIGFjdHVhbAotICAgICAgICAgICAgICAgICAgICAjIElEIGZvciB0aGUgY29udHJvbGxlciBub2RlLiBXZSBzaG91bGRuJ3QgYmUgZG9pbmcgdGhpcyBoZXJlICh0aGlzIGNvZGUKLSAgICAgICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGF2ZSBhbnl0aGluZyBhYm91dCBzcGVjaWZpYyBtb2RlbHMpLCBidXQgaXQncyB0aGUgZWFzaWVzdAotICAgICAgICAgICAgICAgICAgICAjIHdheSB0byBoYW5kbGUgaXQgZm9yIG5vdyBhbmQgdGhpcyBjb2RlIGlzIGxpa2VseSBnb2luZyBhd2F5IHNvbWV0aW1lCi0gICAgICAgICAgICAgICAgICAgICMgcHJldHR5IHNvb24gKHdyaXR0ZW4gaW4gTWF5LCAyMDEyLCBsZXQncyBzZWUgaG93IGxvbmcgInByZXR0eSBzb29uIgotICAgICAgICAgICAgICAgICAgICAjIGlzIDotKSApCi0gICAgICAgICAgICAgICAgICAgIGlmIG1vZGVsX25hbWUgPT0gJ2NvbnRyb2xsZXItbm9kZScgYW5kIGZpZWxkX25hbWUgPT0gJ2lkJyBhbmQgdmFsdWUgPT0gJ2xvY2FsaG9zdCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldF9sb2NhbF9jb250cm9sbGVyX2lkKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShmaWVsZF9pbmZvLmRqYW5nb19maWVsZF9pbmZvKSA9PSBGb3JlaWduS2V5OgotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRfbmFtZSArPSAnX2lkJwotICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWRfZGljdFtmaWVsZF9uYW1lXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IG1vZGVsX2luZm8ubW9kZWxfY2xhc3MoKipjb252ZXJ0ZWRfZGljdCkKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuZnVsbF9jbGVhbigpCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnNhdmUoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWxpZGF0aW9uRXJyb3IsIGVycjoKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlX3ZhbGlkYXRpb25fZXJyb3IobW9kZWxfaW5mbywgZXJyKQotICAgICAgICAgICAgICAgICAgICAjcmFpc2UgUmVzdFZhbGlkYXRpb25FeGNlcHRpb24oZXJyKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgICAgICMgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlc3RTYXZlRXhjZXB0aW9uKGUpCi0gICAgICAgICAgICAgICAgCi0gICAgICAgIGVuZF9iYXRjaF9ub3RpZmljYXRpb24oKQotICAgIGVsaWYgcmVxdWVzdC5tZXRob2QgPT0gJ0RFTEVURSc6Ci0gICAgICAgIGJlZ2luX2JhdGNoX25vdGlmaWNhdGlvbigpCi0gICAgICAgIGZvciBpbnN0YW5jZSBpbiBpbnN0YW5jZV9saXN0OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGluc3RhbmNlLmRlbGV0ZSgpCi0gICAgICAgICAgICBleGNlcHQgVmFsaWRhdGlvbkVycm9yLCBlcnI6Ci0gICAgICAgICAgICAgICAgaGFuZGxlX3ZhbGlkYXRpb25fZXJyb3IobW9kZWxfaW5mbywgZXJyKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICByYWlzZSBSZXN0RXhjZXB0aW9uKGUpCi0gICAgICAgIGVuZF9iYXRjaF9ub3RpZmljYXRpb24oKQotICAgICAgICByZXNwb25zZV9kYXRhID0gImRlbGV0ZWQiCi0gICAgICAgIHJlc3BvbnNlX2NvbnRlbnRfdHlwZSA9ICd0ZXh0L3BsYWluJwotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICAKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHJlc3BvbnNlX2RhdGEsIHJlc3BvbnNlX2NvbnRlbnRfdHlwZSkKLQotZGVmIHN5bnRoZXRpY19jb250cm9sbGVyX2ludGVyZmFjZShtb2RlbF9uYW1lLCBxdWVyeV9wYXJhbV9kaWN0LCBqc29uX3Jlc3BvbnNlX2RhdGEpOgotICAgICMgLS0tCi0gICAgaWYgbW9kZWxfbmFtZSA9PSAnY29udHJvbGxlci1pbnRlcmZhY2UnOgotICAgICAgICAjIEZvciBjb250cm9sbGVyLWludGVyZmFjZXMsIHdoZW4gYW4gaXAgYWRkcmVzcyAobmV0bWFzayB0b28pCi0gICAgICAgICMgaXMgbGVmdCB1bmNvbmZpZ3VyZWQsIHRoZW4gaXQgbWF5IGJlIHBvc3NpYmxlIHRvIGFzc29jaWF0ZQotICAgICAgICAjIGlmY29uZmlnIGRldGFpbHMgd2l0aCB0aGUgaW50ZXJmYWNlLgotICAgICAgICAjCi0gICAgICAgICMgU2luY2UgY29udHJvbGxlci1pbnRlcmZhY2VzIGhhcyBubyBtZWNoYW5pc20gdG8gYXNzb2NpYXRlIAotICAgICAgICAjIHNwZWNpZmljIGlmY29uZmlnIGludGVyZmFjZXMgd2l0aCByb3dzLCBpdCdzIG9ubHkgcG9zc2libGUgdG8KLSAgICAgICAgIyBhc3NvY2lhdGUgaXAncyB3aGVuIGEgc2luZ2xlIHVuY29uZmlndXJlZCBpcCBhZGRyZXNzIGV4aXN0cywKLSAgICAgICAgIyB1c2luZyBhIHByb2Nlc3Mgb2YgZWxpbWluYXRpb24uICBGb3IgYWxsIGlwIGFkZHJlc3MgaW4gdGhlCi0gICAgICAgICMgaWZjb25maWcgb3V0cHV0LCBhbGwgc3RhdGljYWxseSBjb25maWd1cmVkIGNvbnRyb2xsZXItaW50ZXJmYWNlCi0gICAgICAgICMgaXRlbXMgYXJlIHJlbW92ZWQuICBJZiBvbmx5IG9uZSByZXN1bHQgaXMgbGVmdCwgYW5kIG9ubHkKLSAgICAgICAgIyBvbmUgY29udHJvbGxlci1pbnRlcmZhY2UgaGFzIGFuIHVuY29uZmlndXJlZCBpcCBhZGRyZXNzCi0gICAgICAgICMgKGVpdGhlciBhIGRoY3AgYWNxdWlyZWQgYWRkcmVzcywgb3IgYSBzdGF0aWMgYWRkcmVzcyB3aGVyZQotICAgICAgICAjIHRoZSBpcCBhZGRyZXNzIGlzIHVuY29maWd1cmVkKSwgdGhlIGlmY29uZmlnIGlwIGFkZHJlc3MKLSAgICAgICAgIyBpcyB2ZXJ5LWxpa2VseSB0byBiZSB0aGUgb25lIGFzc29jaWF0ZWQgd2l0aCB0aGUgCi0gICAgICAgICMgY29udHJvbGxlci1pbnRlcmZhY2Ugcm93LgotCi0gICAgICAgICMgQ2hlY2sgdGhlIGxpc3Qgb2YgdmFsdWVzIHRvIHNlZSBpZiBhbnkgYXJlIGNvbmZpZ3VyZWQgYXMgZGhjcAotICAgICAgICBkaGNwX2NvdW50ID0gMAotICAgICAgICB1bmNvbmZpZ3VyZWRfc3RhdGljX2lwID0gMAotICAgICAgICB0aGlzX2hvc3QgPSBnZXRfbG9jYWxfY29udHJvbGxlcl9pZCgpCi0KLSAgICAgICAgZm9yIGVudHJ5IGluIGpzb25fcmVzcG9uc2VfZGF0YToKLSAgICAgICAgICAgIGlmICdtb2RlJyBpbiBlbnRyeSBhbmQgZW50cnlbJ21vZGUnXSA9PSAnZGhjcCcgYW5kIFwKLSAgICAgICAgICAgICAgICdjb250cm9sbGVyJyBpbiBlbnRyeSBhbmQgZW50cnlbJ2NvbnRyb2xsZXInXSA9PSB0aGlzX2hvc3Q6Ci0gICAgICAgICAgICAgICAgICAgIGRoY3BfY291bnQgKz0gMQotICAgICAgICAgICAgaWYgJ21vZGUnIGluIGVudHJ5IGFuZCBlbnRyeVsnbW9kZSddID09ICdzdGF0aWMnIGFuZCBcCi0gICAgICAgICAgICAgICAnaXAnIGluIGVudHJ5IGFuZCBlbnRyeVsnaXAnXSA9PSAnJzoKLSAgICAgICAgICAgICAgICAgICAgdW5jb25maWd1cmVkX3N0YXRpY19pcCArPSAxCi0gICAgICAgIGlmIGRoY3BfY291bnQgKyB1bmNvbmZpZ3VyZWRfc3RhdGljX2lwICE9IDE6Ci0gICAgICAgICAgICBmb3IgZW50cnkgaW4ganNvbl9yZXNwb25zZV9kYXRhOgotICAgICAgICAgICAgICAgIGVudHJ5Wydmb3VuZC1pcCddICAgICAgICA9IGVudHJ5WydpcCddCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBuZWVkX2NvbnRyb2xsZXJfcXVlcnkgPSBGYWxzZQotICAgICAgICAjIGRldGVybWluZSB3aGV0aGVyIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGludGVyZmFjZXMgbmVlZHMKLSAgICAgICAgIyB0byBiZSBjb2xsZWN0ZWQgdG8gYXNzb2NpYXRlIHRoZSBkaGNwIGFkZHJlc3MuCi0gICAgICAgIGZvciBxdWVyeV9wYXJhbV9uYW1lLCBxdWVyeV9wYXJhbV92YWx1ZSBpbiBxdWVyeV9wYXJhbV9kaWN0Lml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBxdWVyeV9wYXJhbV9uYW1lICE9ICdjb250cm9sbGVyJzoKLSAgICAgICAgICAgICAgICBuZWVkX2NvbnRyb2xsZXJfcXVlcnkgPSBUcnVlCi0gICAgICAgICAgICBpZiBxdWVyeV9wYXJhbV9uYW1lID09ICdjb250cm9sbGVyJyBhbmQgXAotICAgICAgICAgICAgICAgcXVlcnlfcGFyYW1fdmFsdWUgIT0gdGhpc19ob3N0OgotICAgICAgICAgICAgICAgIG5lZWRfY29udHJvbGxlcl9xdWVyeSA9IFRydWUKLQotICAgICAgICBpZiBuZWVkX2NvbnRyb2xsZXJfcXVlcnkgPT0gRmFsc2U6Ci0gICAgICAgICAgICBtb2RlbF9pbnRlcmZhY2VzID0gW3ggZm9yIHggaW4ganNvbl9yZXNwb25zZV9kYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICdjb250cm9sbGVyJyBpbiB4IGFuZCB4Wydjb250cm9sbGVyJ10gPT0gdGhpc19ob3N0XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBwcmludCAnbmVlZCB0byBjb2xsZWN0IGFsbCBpbnRlcmZhY2VzJwotICAgICAgICAgICAgZmlsdGVyX2tleXdvcmRfYXJncyA9IHsnY29udHJvbGxlcicgOiB0aGlzX2hvc3R9Ci0gICAgICAgICAgICBtb2RlbF9pbmZvID0gcmVzdF9tb2RlbF9pbmZvX2RpY3QuZ2V0KG1vZGVsX25hbWUpCi0gICAgICAgICAgICBpbnN0YW5jZV9saXN0ID0gbW9kZWxfaW5mby5tb2RlbF9jbGFzcy5vYmplY3RzLmZpbHRlcigqKmZpbHRlcl9rZXl3b3JkX2FyZ3MpCi0gICAgICAgICAgICByZXNwb25zZV9kYXRhID0gW10KLSAgICAgICAgICAgIGZvciBpbnN0YW5jZSBpbiBpbnN0YW5jZV9saXN0OgotICAgICAgICAgICAgICAgIGRhdGEgPSB7fQotICAgICAgICAgICAgICAgIGZvciBmaWVsZF9pbmZvIGluIG1vZGVsX2luZm8uZmllbGRfbmFtZV9kaWN0LnZhbHVlcygpOgotICAgICAgICAgICAgICAgICAgICBmaWVsZF9uYW1lID0gZmllbGRfaW5mby5uYW1lCi0gICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoZmllbGRfaW5mby5kamFuZ29fZmllbGRfaW5mbykgPT0gRm9yZWlnbktleToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkX25hbWUgKz0gJ19pZCcKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpbnN0YW5jZS5fX2RpY3RfXy5nZXQoZmllbGRfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0gTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpZWxkX2luZm8uanNvbl9zZXJpYWxpemU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzdHIodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2ZpZWxkX2luZm8ucmVzdF9uYW1lXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfZGF0YS5hcHBlbmQoZGF0YSkKLSAgICAgICAgICAgIG1vZGVsX2ludGVyZmFjZXMgPSByZXNwb25zZV9kYXRhCi0KLSAgICAgICAgIyBSZWNvbXB1dGUgdGhlIG51bWJlciBvZiBkaGNwIGNvbmZpZ3VyZWQgaW50ZXJmYWNlcywKLSAgICAgICAgIyBtb2RlbF9pbnRlcmZhY2VzIGlzIHRoZSBjb2xsZWN0aW9uIG9mIGludGVyZmFjZSBmb3IgJ3RoaXNfaG9zdCcKLSAgICAgICAgZGhjcF9jb3VudCA9IDAKLSAgICAgICAgdW5jb25maWd1cmVkX3N0YXRpY19pcCA9IDAKLSAgICAgICAgZm9yIGlmcyBpbiBtb2RlbF9pbnRlcmZhY2VzOgotICAgICAgICAgICAgaWYgJ21vZGUnIGluIGlmcyBhbmQgaWZzWydtb2RlJ10gPT0gJ2RoY3AnOgotICAgICAgICAgICAgICAgIGRoY3BfY291bnQgKz0gMQotICAgICAgICAgICAgaWYgJ21vZGUnIGluIGlmcyBhbmQgaWZzWydtb2RlJ10gPT0gJ3N0YXRpYycgYW5kIFwKLSAgICAgICAgICAgICAgICdpcCcgaW4gaWZzIGFuZCBpZnNbJ2lwJ10gPT0gJyc6Ci0gICAgICAgICAgICAgICAgICAgIHVuY29uZmlndXJlZF9zdGF0aWNfaXAgKz0gMQotCi0gICAgICAgIGlmIGRoY3BfY291bnQgKyB1bmNvbmZpZ3VyZWRfc3RhdGljX2lwICE9IDE6Ci0gICAgICAgICAgICAjIHByaW50ICJTb3JyeSwgJXMgZGhjcCArICVzIHVuY29uZmlndXJlZCBzdGF0aWMgaW50ZXJmYWNlcyBvbiAlcyIgJSBcCi0gICAgICAgICAgICAgICAgICAjIChkaGNwX2NvdW50LCB1bmNvbmZpZ3VyZWRfc3RhdGljX2lwLCB0aGlzX2hvc3QpCi0gICAgICAgICAgICAjIGNvcHkgb3ZlciBzdGF0aWMgaXAncwotICAgICAgICAgICAgZm9yIGVudHJ5IGluIGpzb25fcmVzcG9uc2VfZGF0YToKLSAgICAgICAgICAgICAgICBlbnRyeVsnZm91bmQtaXAnXSAgICAgICAgPSBlbnRyeVsnaXAnXQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBjb2xsZWN0IGN1cnJlbnQgZGV0YWlscyBmb3IgYWxsIHRoZSBuZXR3b3JrIGludGVyZmFjZXMKLSAgICAgICAgaW5ldDRfaWZzID0gX2NvbGxlY3Rfc3lzdGVtX2ludGVyZmFjZXMoKQotCi0gICAgICAgICMgaXRlcmF0ZSBvdmVyIHRoZSBtb2RlbF9pbnRlcmZhY2VzJ3MgaW50ZXJmYWNlcywgYW5kIAotICAgICAgICAjIHJlbW92ZSBpcCBhZGRyZXNzZXMgZnJvbSBpbmV0NF9pZnMgd2hpY2ggYXJlIHN0YXRpYywgYW5kCi0gICAgICAgICMgaGF2ZSB0aGUgY29ycmVjdCBzdGF0aWMgdmFsdWUuCi0KLSAgICAgICAgcmVwb3J0X3N0YXRpYyA9IEZhbHNlCi0gICAgICAgIG1hdGNoX2lkID0gJycKLQotICAgICAgICBmb3IgaWZzIGluIG1vZGVsX2ludGVyZmFjZXM6Ci0gICAgICAgICAgICBpZiAnbW9kZScgaW4gaWZzIGFuZCBpZnNbJ21vZGUnXSA9PSAnc3RhdGljJzoKLSAgICAgICAgICAgICAgICBpZiAnaXAnIGluIGlmcyBhbmQgaWZzWydpcCddID09ICcnOgotICAgICAgICAgICAgICAgICAgICAjIHByaW50ICJVbmNvbmZpZ3VyZWQgc3RhdGljIGlwIGZvciAlcyIsIGlmc1snaWQnXQotICAgICAgICAgICAgICAgICAgICBtYXRjaF9pZCA9IGlmc1snaWQnXQotICAgICAgICAgICAgICAgIGlmICdpcCcgaW4gaWZzIGFuZCBpZnNbJ2lwJ10gIT0gJyc6Ci0gICAgICAgICAgICAgICAgICAgICMgZmluZCB0aGlzIGFkZHJlc3MgaW4gdGhlIGtub3duIGFkZHJlc3NlcwotICAgICAgICAgICAgICAgICAgICByZW1vdmVfZW50cnkgPSAtMQotICAgICAgICAgICAgICAgICAgICBmb3IgaW5kZXgsIGluZXQ0X2lmIGluIGVudW1lcmF0ZShpbmV0NF9pZnMpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5ldDRfaWZbJ2FkZHInXSA9PSBpZnNbJ2lwJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2VudHJ5ID0gaW5kZXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBpZiByZW1vdmVfZW50cnkgPT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50ICJTdGF0aWMgaXAgJXMgbm90IGZvdW5kIiAlIGlmc1snaXAnXQotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBpbmV0NF9pZnNbcmVtb3ZlX2VudHJ5XQotICAgICAgICAgICAgZWxpZiAnbW9kZScgaW4gaWZzIGFuZCBpZnNbJ21vZGUnXSA9PSAnZGhjcCc6Ci0gICAgICAgICAgICAgICAgbWF0Y2hfaWQgPSBpZnNbJ2lkJ10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBvdWdodCB0byBhc3NlcnQgaGVyZSwgbm90X3JlYWNoZWQoKQotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAjIFdoZW4gb25seSBvbmUgZW50cnkgaXMgbGVmdCBpbiBpbmV0LCBpdHMgcG9zc2libGUgdG8gZG8gdGhlIGFzc29jYXRpb24KLSAgICAgICAgaWYgbGVuKGluZXQ0X2lmcykgIT0gMToKLSAgICAgICAgICAgICMgcHJpbnQgIkluY29ycmVjdCBudW1iZXIgJXMgb2YgaW5ldDQgaW50ZXJmYWNlcyBsZWZ0IiAlIGxlbihpbmV0NF9pZnMpCi0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgZm9yIGVudHJ5IGluIGpzb25fcmVzcG9uc2VfZGF0YToKLSAgICAgICAgICAgIGVudHJ5Wydmb3VuZC1pcCddICAgICAgICA9IGVudHJ5WydpcCddCi0gICAgICAgICAgICBlbnRyeVsnZm91bmQtbmV0bWFzayddICAgPSBlbnRyeVsnbmV0bWFzayddCi0KLSAgICAgICAgICAgIGlmIGVudHJ5WydpZCddID09IG1hdGNoX2lkOgotICAgICAgICAgICAgICAgICMgbWFrZSBzdXJlIHRoZSBhZGRyZXNzIGlzbid0IHNldAotICAgICAgICAgICAgICAgIGlmIGVudHJ5WydpcCddID09ICcnOgotICAgICAgICAgICAgICAgICAgICBlbnRyeVsnZm91bmQtaXAnXSAgICAgICAgPSBpbmV0NF9pZnNbMF1bJ2FkZHInXQotICAgICAgICAgICAgICAgICAgICBlbnRyeVsnZm91bmQtbmV0bWFzayddICAgPSBpbmV0NF9pZnNbMF1bJ25ldG1hc2snXQotICAgICAgICAgICAgICAgICAgICBlbnRyeVsnZm91bmQtYnJvYWRjYXN0J10gPSBpbmV0NF9pZnNbMF1bJ2Jyb2FkY2FzdCddCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBvdWdodCB0byBhc3NlcnQgaGVyZSwgbm90X3JlYWNoZWQoKQotICAgICAgICAgICAgICAgICAgICBwYXNzCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3N5bnRoZXRpY19pbnN0YW5jZShyZXF1ZXN0LCBtb2RlbF9uYW1lLCBpZD1Ob25lKToKLSAgICAKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotCi0gICAgIyBMb29rdXAgdGhlIG1vZGVsIGNsYXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUKLSAgICBtb2RlbF9pbmZvID0gcmVzdF9tb2RlbF9pbmZvX2RpY3QuZ2V0KG1vZGVsX25hbWUpCi0gICAgaWYgbm90IG1vZGVsX2luZm86Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkRGF0YVR5cGVFeGNlcHRpb24obW9kZWxfbmFtZSkKLSAgICAgICAgICAgIAotICAgICMgU2V0IHVwIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGRpY3Rpb25hcnkgd2UgdXNlIHRvIGZpbHRlciB0aGUgUXVlcnlTZXQuCi0gICAgZmlsdGVyX2tleXdvcmRfYXJncyA9IHt9Ci0KLSAgICBqc29ucF9wcmVmaXggPSBOb25lCi0gICAgbm9saXN0ID0gRmFsc2UKLSAgICBvcmRlcl9ieSA9IE5vbmUKLSAgICAKLSAgICAjIE5vdyBpdGVyYXRlIG92ZXIgdGhlIHF1ZXJ5IHBhcmFtcyBhbmQgYWRkIGZ1cnRoZXIgZmlsdGVyIGtleXdvcmQgYXJndW1lbnRzCi0gICAgcXVlcnlfcGFyYW1fZGljdCA9IHJlcXVlc3QuR0VUCi0gICAgZm9yIHF1ZXJ5X3BhcmFtX25hbWUsIHF1ZXJ5X3BhcmFtX3ZhbHVlIGluIHF1ZXJ5X3BhcmFtX2RpY3QuaXRlbXMoKToKLSAgICAgICAgYWRkX3F1ZXJ5X3BhcmFtID0gRmFsc2UKLSAgICAgICAgcXVlcnlfcGFyYW1fbmFtZSA9IHN0cihxdWVyeV9wYXJhbV9uYW1lKQotICAgICAgICBxdWVyeV9wYXJhbV92YWx1ZSA9IHN0cihxdWVyeV9wYXJhbV92YWx1ZSkKLSAgICAgICAgaWYgcXVlcnlfcGFyYW1fbmFtZSA9PSAnY2FsbGJhY2snOiAjc3dpdGNoaW5nIHRvIG1hdGNoIHVwIHdpdGgganF1ZXJ5IGdldEpTT04gY2FsbCBuYW1pbmcgY29udmVudGlvbi4KLSAgICAgICAgICAgIGpzb25wX3ByZWZpeCA9IHF1ZXJ5X3BhcmFtX3ZhbHVlCi0gICAgICAgIGVsaWYgcXVlcnlfcGFyYW1fbmFtZSA9PSAnbm9saXN0JzoKLSAgICAgICAgICAgIGlmIHF1ZXJ5X3BhcmFtX3ZhbHVlIG5vdCBpbiAoJ0ZhbHNlJywgJ2ZhbHNlJywgJzAnLCAnJyk6Ci0gICAgICAgICAgICAgICAgbm9saXN0ID0gVHJ1ZQotICAgICAgICBlbGlmIHF1ZXJ5X3BhcmFtX25hbWUgPT0gJ29yZGVyYnknOgotICAgICAgICAgICAgb3JkZXJfYnkgPSBxdWVyeV9wYXJhbV92YWx1ZS5zcGxpdCgnLCcpCi0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ob3JkZXJfYnkpKToKLSAgICAgICAgICAgICAgICBuYW1lID0gb3JkZXJfYnlbaV0KLSAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJy0nKToKLSAgICAgICAgICAgICAgICAgICAgZGVzY2VuZGluZyA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVbMTpdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZGVzY2VuZGluZyA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZmllbGRfaW5mbyA9IG1vZGVsX2luZm8ucmVzdF9uYW1lX2RpY3QuZ2V0KG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgbm90IGZpZWxkX2luZm86Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkT3JkZXJCeUV4Y2VwdGlvbihuYW1lKQotICAgICAgICAgICAgICAgIG5hbWUgPSBmaWVsZF9pbmZvLm5hbWUKLSAgICAgICAgICAgICAgICBpZiBkZXNjZW5kaW5nOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gJy0nICsgbmFtZQotICAgICAgICAgICAgICAgIG9yZGVyX2J5W2ldID0gbmFtZQotICAgICAgICBlbGlmIHF1ZXJ5X3BhcmFtX25hbWUgaW4gbW9kZWxfaW5mby5yZXN0X25hbWVfZGljdDoKLSAgICAgICAgICAgIGZpZWxkX2luZm8gPSBtb2RlbF9pbmZvLnJlc3RfbmFtZV9kaWN0LmdldChxdWVyeV9wYXJhbV9uYW1lKQotICAgICAgICAgICAgcXVlcnlfcGFyYW1fbmFtZSA9IGZpZWxkX2luZm8ubmFtZQotICAgICAgICAgICAgYWRkX3F1ZXJ5X3BhcmFtID0gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZG91YmxlX3VuZGVyc2NvcmVfc3RhcnQgPSBxdWVyeV9wYXJhbV9uYW1lLmZpbmQoIl9fIikKLSAgICAgICAgICAgIGlmIGRvdWJsZV91bmRlcnNjb3JlX3N0YXJ0ID49IDA6Ci0gICAgICAgICAgICAgICAgcmVzdF9uYW1lID0gcXVlcnlfcGFyYW1fbmFtZVs6ZG91YmxlX3VuZGVyc2NvcmVfc3RhcnRdCi0gICAgICAgICAgICAgICAgZmllbGRfaW5mbyA9IG1vZGVsX2luZm8ucmVzdF9uYW1lX2RpY3QuZ2V0KHJlc3RfbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBmaWVsZF9pbmZvOgotICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBxdWVyeV9wYXJhbV9uYW1lW2RvdWJsZV91bmRlcnNjb3JlX3N0YXJ0Ol0KLSAgICAgICAgICAgICAgICAgICAgcXVlcnlfcGFyYW1fbmFtZSA9IGZpZWxkX2luZm8ubmFtZQotICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKGZpZWxkX2luZm8uZGphbmdvX2ZpZWxkX2luZm8pID09IEZvcmVpZ25LZXk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeV9wYXJhbV9uYW1lID0gcXVlcnlfcGFyYW1fbmFtZSArICdfXycgKyBmaWVsZF9pbmZvLmRqYW5nb19maWVsZF9pbmZvLnJlbC5maWVsZF9uYW1lCi0gICAgICAgICAgICAgICAgICAgICMgU3Vic3RpdHV0ZSBpbiB0aGUgbW9kZWwgZmllbGQgbmFtZSBmb3IgdGhlIChwb3NzaWJsZSByZW5hbWVkKSByZXN0IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgcXVlcnlfcGFyYW1fbmFtZSArPSBvcGVyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgYWRkX3F1ZXJ5X3BhcmFtID0gVHJ1ZQotICAgICAgICBpZiBhZGRfcXVlcnlfcGFyYW06Ci0gICAgICAgICAgICBmaWx0ZXJfa2V5d29yZF9hcmdzW3F1ZXJ5X3BhcmFtX25hbWVdID0gcXVlcnlfcGFyYW1fdmFsdWUKLQotICAgIGlmIGlkICE9IE5vbmU6Ci0gICAgICAgIGlmIGxlbihmaWx0ZXJfa2V5d29yZF9hcmdzKSA+IDA6Ci0gICAgICAgICAgICByYWlzZSBSZXN0SW52YWxpZEZpbHRlclBhcmFtZXRlckV4Y2VwdGlvbihmaWx0ZXJfa2V5d29yZF9hcmdzLmtleXMoKVswXSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZ2V0X2FyZ3MgPSB7bW9kZWxfaW5mby5wcmltYXJ5X2tleTppZH0KLSAgICAgICAgICAgIGluc3RhbmNlID0gbW9kZWxfaW5mby5tb2RlbF9jbGFzcy5vYmplY3RzLmdldCgqKmdldF9hcmdzKQotICAgICAgICAgICAgaW5zdGFuY2VfbGlzdCA9IChpbnN0YW5jZSwpCi0gICAgICAgICAgICBub2xpc3QgPSBUcnVlCi0gICAgICAgIGV4Y2VwdCBtb2RlbF9pbmZvLm1vZGVsX2NsYXNzLkRvZXNOb3RFeGlzdCxlOgotICAgICAgICAgICAgcmFpc2UgUmVzdFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24ocmVxdWVzdC5wYXRoKQotICAgICAgICBleGNlcHQgbW9kZWxfaW5mby5tb2RlbF9jbGFzcy5NdWx0aXBsZU9iamVjdHNSZXR1cm5lZCwgZXhjOgotICAgICAgICAgICAgIyB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgIHJhaXNlIFJlc3RJbnRlcm5hbEV4Y2VwdGlvbihleGMpCi0gICAgZWxpZiAocmVxdWVzdC5tZXRob2QgIT0gJ1BVVCcpIG9yIChsZW4oZmlsdGVyX2tleXdvcmRfYXJncykgPiAwKToKLSAgICAgICAgIyBHZXQgdGhlIFF1ZXJ5U2V0IGJhc2VkIG9uIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyB3ZSBjb25zdHJ1Y3RlZAotICAgICAgICBpbnN0YW5jZV9saXN0ID0gbW9kZWxfaW5mby5tb2RlbF9jbGFzcy5vYmplY3RzLmZpbHRlcigqKmZpbHRlcl9rZXl3b3JkX2FyZ3MpCi0gICAgICAgIGlmIG9yZGVyX2J5OgotICAgICAgICAgICAgaW5zdGFuY2VfbGlzdCA9IGluc3RhbmNlX2xpc3Qub3JkZXJfYnkoKm9yZGVyX2J5KQotICAgIGVsc2U6Ci0gICAgICAgICMgV2UncmUgaW5zZXJ0aW5nIG5ldyBvYmplY3RzLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gZG8gYSBxdWVyeQotICAgICAgICBpbnN0YW5jZV9saXN0ID0gTm9uZQotICAgICAgICAKLSAgICByZXNwb25zZV9jb250ZW50X3R5cGUgPSBKU09OX0NPTlRFTlRfVFlQRQotICAgIAotICAgICMgU3ludGhlcmljIHR5cGVzIG9ubHkgZG8gcmVxdWVzdHMgLS0KLSAgICBqc29uX3Jlc3BvbnNlX2RhdGEgPSBbXQotICAgIGZvciBpbnN0YW5jZSBpbiBpbnN0YW5jZV9saXN0OgotICAgICAgICBqc29uX2luc3RhbmNlID0ge30KLSAgICAgICAgZm9yIGZpZWxkX2luZm8gaW4gbW9kZWxfaW5mby5maWVsZF9uYW1lX2RpY3QudmFsdWVzKCk6Ci0gICAgICAgICAgICAjIE1hZGUgc29tZSBtaW5vciBlZGl0cyB0byBkZWFsIHdpdGggYSkgZmllbGRzIHRoYXQgYXJlIGVtcHR5IGFuZCBiKSBmaWVsZHMgdGhhdCBhcmUgbm90IHN0cmluZ3MgLUt5bGUKLSAgICAgICAgICAgICMgQ2hhbmdlZCB0aGlzIHRvIG9ubHkgZG8gYW4gZXhwbGljaXQgc3RyaW5nIGNvbnZlcnNpb24gaWYgaXQncyBhIHVuaWNvZGUgc3RyaW5nLgotICAgICAgICAgICAgIyBUaGUgY29udHJvbGxlciBpcyBleHBlY3RpbmcgdG8gZ2V0IHRoZSB1bnN0cmluZ2lmaWVkIHZhbHVlIChlLmcuIGZvciBib29sZWFuIHZhbHVlcykKLSAgICAgICAgICAgICMgTm90IHN1cmUgaWYgdGhpcyB3aWxsIGJyZWFrIHRoaW5ncyBpbiB0aGUgVUksIGJ1dCB3ZSdsbCBuZWVkIHRvIHJlc29sdmUgaG93Ci0gICAgICAgICAgICAjIHdlIHdhbnQgdG8gaGFuZGxlIHRoaXMuIEFsc28sIGhvdyBkbyB3ZSB3YW50IHRvIGhhbmRsZSB1bmljb2RlIHN0cmluZ3M/IC0tIHJvYnYKLSAgICAgICAgICAgIGZpZWxkX25hbWUgPSBmaWVsZF9pbmZvLm5hbWUKLSAgICAgICAgICAgIGlmIHR5cGUoZmllbGRfaW5mby5kamFuZ29fZmllbGRfaW5mbykgPT0gRm9yZWlnbktleToKLSAgICAgICAgICAgICAgICBmaWVsZF9uYW1lICs9ICdfaWQnCi0gICAgICAgICAgICB2YWx1ZSA9IGluc3RhbmNlLl9fZGljdF9fLmdldChmaWVsZF9uYW1lKQotICAgICAgICAgICAgaWYgdmFsdWUgIT0gTm9uZToKLSAgICAgICAgICAgICAgICBpZiBmaWVsZF9pbmZvLmpzb25fc2VyaWFsaXplOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0cih2YWx1ZSkKLSAgICAgICAgICAgICAgICBqc29uX2luc3RhbmNlW2ZpZWxkX2luZm8ucmVzdF9uYW1lXSA9IHZhbHVlCi0gICAgICAgIGpzb25fcmVzcG9uc2VfZGF0YS5hcHBlbmQoanNvbl9pbnN0YW5jZSkKLSAgICAKLSAgICAjIC0tLQotICAgIGlmIG1vZGVsX25hbWUgPT0gJ2NvbnRyb2xsZXItaW50ZXJmYWNlJzoKLSAgICAgICAgc3ludGhldGljX2NvbnRyb2xsZXJfaW50ZXJmYWNlKG1vZGVsX25hbWUsIHF1ZXJ5X3BhcmFtX2RpY3QsIGpzb25fcmVzcG9uc2VfZGF0YSkKLQotICAgICMgQ29udmVydCB0byBqc29uCi0gICAgcmVzcG9uc2VfZGF0YSA9IHNpbXBsZWpzb24uZHVtcHMoanNvbl9yZXNwb25zZV9kYXRhKQotICAgIAotICAgICMgSWYgdGhlIG5vbGlzdCBxdWVyeSBwYXJhbSB3YXMgZW5hYmxlZCB0aGVuIGNoZWNrIHRvIG1ha2Ugc3VyZQotICAgICMgdGhhdCB0aGVyZSB3YXMgb25seSBhIHNpbmdsZSBpbnN0YW5jZSBpbiB0aGUgcmVzcG9uc2UgbGlzdCBhbmQsCi0gICAgIyBpZiBzbywgdW5wYWNrIGl0IGZyb20gdGhlIGxpc3QKLSAgICBpZiBub2xpc3Q6Ci0gICAgICAgIGlmIGxlbihqc29uX3Jlc3BvbnNlX2RhdGEpICE9IDE6Ci0gICAgICAgICAgICByYWlzZSBSZXN0Tm9MaXN0UmVzdWx0RXhjZXB0aW9uKCkKLSAgICAgICAganNvbl9yZXNwb25zZV9kYXRhID0ganNvbl9yZXNwb25zZV9kYXRhWzBdCi0gICAgCi0gICAgIyBJZiB0aGUganNvbnAgcXVlcnkgcGFyYW1ldGVyIHdhcyBzcGVjaWZpZWQsIHdyYXAgdGhlIGRhdGEgd2l0aAotICAgICMgdGhlIGpzb25wIHByZWZpeAotICAgIGlmIGpzb25wX3ByZWZpeDoKLSAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb25wX3ByZWZpeCArICcoJyArIHJlc3BvbnNlX2RhdGEgKyAnKScKLSAgICAgICAgIyBXZSBkb24ndCByZWFsbHkga25vdyB3aGF0IHRoZSBjb250ZW50IHR5cGUgaXMgaGVyZSwgYnV0IGl0J3MgdHlwaWNhbGx5IGphdmFzY3JpcHQKLSAgICAgICAgcmVzcG9uc2VfY29udGVudF90eXBlID0gVEVYVF9KQVZBU0NSSVBUX0NPTlRFTlRfVFlQRQotCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZV9kYXRhLCByZXNwb25zZV9jb250ZW50X3R5cGUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3VzZXJfZGF0YV9saXN0KHJlcXVlc3QpOgotICAgICMgTm93IGl0ZXJhdGUgb3ZlciB0aGUgcXVlcnkgcGFyYW1zIGFuZCBhZGQgYW55IHZhbGlkIGZpbHRlciBrZXl3b3JkIGFyZ3VtZW50cwotICAgIGZpbHRlcl9rZXl3b3JkX2FyZ3MgPSB7fQotICAgIGZvciBxdWVyeV9wYXJhbV9uYW1lLCBxdWVyeV9wYXJhbV92YWx1ZSBpbiByZXF1ZXN0LkdFVC5pdGVtcygpOgotICAgICAgICBxdWVyeV9wYXJhbV9uYW1lID0gc3RyKHF1ZXJ5X3BhcmFtX25hbWUpCi0gICAgICAgIGRvdWJsZV91bmRlcnNjb3JlX3N0YXJ0ID0gcXVlcnlfcGFyYW1fbmFtZS5maW5kKCJfXyIpCi0gICAgICAgIGlmIGRvdWJsZV91bmRlcnNjb3JlX3N0YXJ0ID49IDA6Ci0gICAgICAgICAgICBhdHRyaWJ1dGVfbmFtZSA9IHF1ZXJ5X3BhcmFtX25hbWVbOmRvdWJsZV91bmRlcnNjb3JlX3N0YXJ0XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXR0cmlidXRlX25hbWUgPSBxdWVyeV9wYXJhbV9uYW1lCi0gICAgICAgICAgICAKLSAgICAgICAgIyBJbiB0aGUgZnV0dXJlLCBpZiB3ZSBhZGQgc3VwcG9ydCBmb3IgdGhpbmdzIGxpa2UgbW9kX2RhdGUsIGNyZWF0aW9uX2RhdGUsIGV0Yy4KLSAgICAgICAgIyB3aGljaCB3b3VsZCBiZSBzdXBwb3J0ZWQgaW4gcXVlcnkgcGFyYW1zLCB0aGVuIHRoZXknZCBiZSBhZGRlZCB0byB0aGlzIGxpc3QvdHVwbGUuCi0gICAgICAgIGlmIGF0dHJpYnV0ZV9uYW1lIG5vdCBpbiAoJ25hbWUnLCk6Ci0gICAgICAgICAgICByYWlzZSBSZXN0SW52YWxpZEZpbHRlclBhcmFtZXRlckV4Y2VwdGlvbihxdWVyeV9wYXJhbV9uYW1lKQotICAgICAgICBmaWx0ZXJfa2V5d29yZF9hcmdzW3F1ZXJ5X3BhcmFtX25hbWVdID0gcXVlcnlfcGFyYW1fdmFsdWUKLQotICAgIGluc3RhbmNlX2xpc3QgPSBVc2VyRGF0YS5vYmplY3RzLmZpbHRlcigqKmZpbHRlcl9rZXl3b3JkX2FyZ3MpCi0gICAgCi0gICAgaWYgcmVxdWVzdC5tZXRob2QgPT0gJ0dFVCc6Ci0gICAgICAgIHVzZXJfZGF0YV9pbmZvX2xpc3QgPSBbXQotCi0gICAgICAgICMgRklYTUU6IHJvYnY6IEl0J3MgaW5jb3JyZWN0IHRvICphbHdheXMqIGFkZCB0aGlzIHRvIHRoZSB1c2VyIGRhdGEsCi0gICAgICAgICMgYmVjYXVzZSBpdCBtZWFucyB3ZSdyZSBub3QgcmVzcGVjdGluZyB0aGUgZmlsdGVyIHF1ZXJ5IHBhcmFtZXRlcnMuCi0gICAgICAgICMgVG8gd29yayBjb21wbGV0ZWx5IGNvcnJlY3RseSB3ZSdkIG5lZWQgdG8gZHVwbGljYXRlIGEgbG90IG9mIGxvZ2ljCi0gICAgICAgICMgZm9yIHByb2Nlc3NpbmcgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMsIHdoaWNoIHdvdWxkIGJlIHRlZGlvdXMuCi0gICAgICAgICMgU2hvdWxkIHRhbGsgdG8gTWFuZGVlcCBhYm91dCB3aHkgaXQgd2FzIGRvbmUgdGhpcyB3YXkuIE1heWJlIHdlCi0gICAgICAgICMgc2hvdWxkIGV4cG9zZSB0aGVzZSBzcGVjaWFsIGNhc2VzIGluIGEgZGlmZmVyZW50IFVSTC92aWV3LgotICAgICAgICBmb3IgZm4gaW4gWydzdGFydHVwLWNvbmZpZycsICd1cGdyYWRlLWNvbmZpZyddOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNjID0gIiVzL3J1bi8lcyIgJSAoc2RuY29uLlNETl9ST09ULCBmbikKLSAgICAgICAgICAgICAgICBmID0gb3BlbihzYywgJ3InKQotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgICAgIHQgPSB0aW1lLnN0cmZ0aW1lKCIlWS0lbS0lZC4lSDolTTolUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5sb2NhbHRpbWUob3MucGF0aC5nZXRtdGltZShzYykpKQotICAgICAgICAgICAgICAgIGluc3RhbmNlX25hbWUgPSBmbiArICcvdGltZXN0YW1wPScgKyB0ICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3ZlcnNpb249MS9sZW5ndGg9JyArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKG9zLnBhdGguZ2V0c2l6ZShzYykpCi0gICAgICAgICAgICAgICAgdXJsX3BhdGggPSAncmVzdC92MS9kYXRhLycgKyBpbnN0YW5jZV9uYW1lICsgJy8nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgdXNlcl9kYXRhX2luZm8gPSB7ICduYW1lJyA6IGluc3RhbmNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cmxfcGF0aCcgOiB1cmxfcGF0aCwgfQotICAgICAgICAgICAgICAgIHVzZXJfZGF0YV9pbmZvX2xpc3QuYXBwZW5kKHVzZXJfZGF0YV9pbmZvKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBmb3IgaW5zdGFuY2UgaW4gaW5zdGFuY2VfbGlzdDoKLSAgICAgICAgICAgIHVzZXJfZGF0YV9pbmZvID0geyduYW1lJzogaW5zdGFuY2UubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cmxfcGF0aCc6ICdyZXN0L3YxL2RhdGEvJyArIGluc3RhbmNlLm5hbWUgKyAnLyd9Ci0gICAgICAgICAgICB1c2VyX2RhdGFfaW5mb19saXN0LmFwcGVuZCh1c2VyX2RhdGFfaW5mbykKLSAgICAgICAgCi0gICAgICAgIHJlc3BvbnNlX2RhdGEgPSBzaW1wbGVqc29uLmR1bXBzKHVzZXJfZGF0YV9pbmZvX2xpc3QpCi0gICAgZWxpZiByZXF1ZXN0Lm1ldGhvZCA9PSAnREVMRVRFJzoKLSAgICAgICAgaW5zdGFuY2VfbGlzdC5kZWxldGUoKQotICAgICAgICByZXNwb25zZV9kYXRhID0ge30KLSAgICAgICAgcmVzcG9uc2VfZGF0YVsnc3RhdHVzJ10gPSAnc3VjY2VzcycKLSAgICAgICAgcmVzcG9uc2VfZGF0YVsnbWVzc2FnZSddID0gJ3VzZXIgZGF0YSBkZWxldGVkJwotICAgICAgICByZXNwb25zZV9kYXRhID0gc2ltcGxlanNvbi5kdW1wcyhyZXNwb25zZV9kYXRhKQotICAgICAgICByZXNwb25zZV9jb250ZW50X3R5cGUgPSBKU09OX0NPTlRFTlRfVFlQRQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICAgICAgCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZV9kYXRhLCBKU09OX0NPTlRFTlRfVFlQRSkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fdXNlcl9kYXRhKHJlcXVlc3QsIG5hbWUpOgotICAgIHF1ZXJ5X3BhcmFtX2RpY3QgPSByZXF1ZXN0LkdFVAotICAgICMKLSAgICAjIE1hbmFnZSBzdGFydHVwLWNvbmZpZy91cGRhdGUtY29uZmlnIGRpZmZlcmVudGx5Ci0gICAgaWYgbmFtZS5maW5kKCcvJykgPj0gMCBhbmQgXAotICAgICAgIG5hbWUuc3BsaXQoJy8nKVswXSBpbiBbJ3N0YXJ0dXAtY29uZmlnJywgJ3VwZ3JhZGUtY29uZmlnJ106Ci0gICAgICAgIHBhdGggPSAiJXMvcnVuLyVzIiAlIChzZG5jb24uU0ROX1JPT1QsIG5hbWUuc3BsaXQoJy8nKVswXSkKLSAgICAgICAgcmVzcG9uc2VfZGF0YSA9IHt9Ci0KLSAgICAgICAgaWYgcmVxdWVzdC5tZXRob2QgPT0gJ0dFVCc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgcmVzcG9uc2VfY29udGVudF90eXBlID0gInRleHQvcGxhaW4iCi0gICAgICAgIGVsaWYgcmVxdWVzdC5tZXRob2QgPT0gJ1BVVCc6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3JykgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZi53cml0ZShyZXF1ZXN0LnJhd19wb3N0X2RhdGEpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfZGF0YVsnc3RhdHVzJ10gPSAnc3VjY2VzcycKLSAgICAgICAgICAgICAgICByZXNwb25zZV9kYXRhWydtZXNzYWdlJ10gPSAndXNlciBkYXRhIHVwZGF0ZWQnCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2VfZGF0YVsnc3RhdHVzJ10gPSAnZmFpbHVyZScKLSAgICAgICAgICAgICAgICByZXNwb25zZV9kYXRhWydtZXNzYWdlJ10gPSAiY2FuJ3Qgd3JpdGUgZmlsZSIKLSAgICAgICAgICAgIHJlc3BvbnNlX2NvbnRlbnRfdHlwZSA9IEpTT05fQ09OVEVOVF9UWVBFCi0gICAgICAgICAgICByZXNwb25zZV9kYXRhID0gc2ltcGxlanNvbi5kdW1wcyhyZXNwb25zZV9kYXRhKQotICAgICAgICBlbGlmIHJlcXVlc3QubWV0aG9kID09ICdERUxFVEUnOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgsICJyIikKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICByYWlzZSBSZXN0UmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbihyZXF1ZXN0LnBhdGgpCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUocGF0aCkKLSAgICAgICAgICAgICAgICByZXNwb25zZV9kYXRhWydzdGF0dXMnXSA9ICdzdWNjZXNzJwotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2RhdGFbJ21lc3NhZ2UnXSA9ICd1c2VyIGRhdGEgZGVsZXRlZCcKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICByZXNwb25zZV9kYXRhWydzdGF0dXMnXSA9ICdmYWlsdXJlJwotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2RhdGFbJ21lc3NhZ2UnXSA9ICJjYW4ndCBkZWxldGUgZmlsZSIKLSAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBzaW1wbGVqc29uLmR1bXBzKHJlc3BvbnNlX2RhdGEpCi0gICAgICAgICAgICByZXNwb25zZV9jb250ZW50X3R5cGUgPSBKU09OX0NPTlRFTlRfVFlQRQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgICAgICAgICAgCi0gICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfZGF0YSwgcmVzcG9uc2VfY29udGVudF90eXBlKQotICAgICAgICAgICAgCi0gICAgCi0gICAgIyBEZWZhdWx0IHZhbHVlcyBmb3Igb3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVycwotICAgICNwcml2YXRlID0gRmFsc2UKLSAgICBiaW5hcnkgPSBGYWxzZQotICAgIAotICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBxdWVyeV9wYXJhbV9kaWN0Lml0ZW1zKCk6Ci0gICAgICAgIGlmIHBhcmFtX25hbWUgPT0gJ2JpbmFyeSc6Ci0gICAgICAgICAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnUFVUJzoKLSAgICAgICAgICAgICAgICByYWlzZSBSZXN0SW52YWxpZFF1ZXJ5UGFyYW1ldGVyRXhjZXB0aW9uKG5hbWUpCi0gICAgICAgICAgICBiaW5hcnkgPSBwYXJhbV92YWx1ZS5sb3dlcigpID09ICd0cnVlJyBvciBwYXJhbV92YWx1ZSA9PSAnMScKLSAgICAgICAgI2VsaWYgcGFyYW1fbmFtZSA9PSAncHJpdmF0ZSc6Ci0gICAgICAgICMgICAgcHJpdmF0ZSA9IHBhcmFtX3ZhbHVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBSZXN0SW52YWxpZFF1ZXJ5UGFyYW1ldGVyRXhjZXB0aW9uKHBhcmFtX25hbWUpCi0gICAgCi0gICAgIyBGSVhNRTogTmVlZCBIVFRQIGJhc2ljL2RpZ2VzdCBhdXRoIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcKLSAgICAjIGNvZGUgdG8gd29yay4KLSAgICAjaWYgcHJpdmF0ZToKLSAgICAjICAgIHVzZXIgPSByZXF1ZXN0LnVzZXIKLSAgICAjZWxzZToKLSAgICAjICAgIHVzZXIgPSBOb25lCi0gICAgI2lmIHVzZXIgIT0gTm9uZSBhbmQgbm90IHVzZXIuaXNfYXV0aGVudGljYXRlZCgpOgotICAgICMgICAgcmFpc2UgUmVzdEF1dGhlbnRpY2F0aW9uUmVxdWlyZWRFeGNlcHRpb24oKQotICAgIHVzZXIgPSBOb25lCi0gICAgCi0gICAgIyBUaGVyZSdzIGN1cnJlbnRseSBhbiBpc3N1ZSB3aXRoIGZpbHRlcmluZyBvbiB0aGUgdXNlciB3aGVuIHVzaW5nIHRoZQotICAgICMgQ2Fzc2FuZHJhIGRhdGFiYXNlIGJhY2tlbmQuIFNpbmNlIHdlIGRvbid0IHN1cHBvcnQgcHJpdmF0ZSBwZXItdXNlcgotICAgICMgZGF0YSByaWdodCBub3csIEknbSBqdXN0IGRpc2FibGluZyBmaWx0ZXJpbmcgb24gdGhlIHVzZXIgYW5kIG9ubHkKLSAgICAjIGZpbHRlciBvbiB0aGUgbmFtZQotICAgICN1c2VyX2RhdGFfcXVlcnlfc2V0ID0gVXNlckRhdGEub2JqZWN0cy5maWx0ZXIodXNlcj11c2VyLCBuYW1lPW5hbWUpCi0gICAgdXNlcl9kYXRhX3F1ZXJ5X3NldCA9IFVzZXJEYXRhLm9iamVjdHMuZmlsdGVyKG5hbWU9bmFtZSkKLQotICAgIGNvdW50ID0gdXNlcl9kYXRhX3F1ZXJ5X3NldC5jb3VudCgpCi0gICAgaWYgY291bnQgPiAxOgotICAgICAgICByYWlzZSBSZXN0SW50ZXJuYWxFeGNlcHRpb24oJ0R1cGxpY2F0ZSB1c2VyIGRhdGEgdmFsdWVzIGZvciB0aGUgc2FtZSBuYW1lJykKLSAgICAKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCA9PSAnR0VUJzoKLSAgICAgICAgaWYgY291bnQgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFJlc3RSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uKHJlcXVlc3QucGF0aCkKLSAgICAgICAgdXNlcl9kYXRhID0gdXNlcl9kYXRhX3F1ZXJ5X3NldFswXQotICAgICAgICByZXNwb25zZV9kYXRhID0gdXNlcl9kYXRhLmRhdGEKLSAgICAgICAgaWYgdXNlcl9kYXRhLmJpbmFyeToKLSAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBiYXNlNjQuYjY0ZGVjb2RlKHJlc3BvbnNlX2RhdGEpCi0gICAgICAgIHJlc3BvbnNlX2NvbnRlbnRfdHlwZSA9IHVzZXJfZGF0YS5jb250ZW50X3R5cGUKLSAgICBlbGlmIHJlcXVlc3QubWV0aG9kID09ICdQVVQnOgotICAgICAgICBjb250ZW50X3R5cGUgPSByZXF1ZXN0Lk1FVEFbJ0NPTlRFTlRfVFlQRSddCi0gICAgICAgIGlmIGNvbnRlbnRfdHlwZSA9PSBOb25lOgotICAgICAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSA9IEJJTkFSWV9EQVRBX0NPTlRFTlRfVFlQRQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb250ZW50X3R5cGUgPSBKU09OX0NPTlRFTlRfVFlQRQotICAgICAgICByZXNwb25zZV9kYXRhID0ge30KLSAgICAgICAgaWYgY291bnQgPT0gMToKLSAgICAgICAgICAgIHJlc3BvbnNlX2RhdGFbJ3N0YXR1cyddID0gJ3N1Y2Nlc3MnCi0gICAgICAgICAgICByZXNwb25zZV9kYXRhWydtZXNzYWdlJ10gPSAndXNlciBkYXRhIHVwZGF0ZWQnCi0gICAgICAgICAgICB1c2VyX2RhdGEgPSB1c2VyX2RhdGFfcXVlcnlfc2V0WzBdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXNwb25zZV9kYXRhWydzdGF0dXMnXSA9ICdzdWNjZXNzJwotICAgICAgICAgICAgcmVzcG9uc2VfZGF0YVsnbWVzc2FnZSddID0gJ3VzZXIgZGF0YSBjcmVhdGVkJwotICAgICAgICAgICAgdXNlcl9kYXRhID0gVXNlckRhdGEodXNlcj11c2VyLG5hbWU9bmFtZSkKLSAgICAgICAgdXNlcl9kYXRhLmJpbmFyeSA9IGJpbmFyeQotICAgICAgICB1c2VyX2RhdGEuY29udGVudF90eXBlID0gY29udGVudF90eXBlCi0gICAgICAgIGRhdGEgPSByZXF1ZXN0LnJhd19wb3N0X2RhdGEKLSAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAgZGF0YSA9IGJhc2U2NC5iNjRlbmNvZGUoZGF0YSkKLSAgICAgICAgdXNlcl9kYXRhLmRhdGEgPSBkYXRhCi0gICAgICAgIHVzZXJfZGF0YS5zYXZlKCkKLSAgICAgICAgcmVzcG9uc2VfZGF0YSA9IHNpbXBsZWpzb24uZHVtcHMocmVzcG9uc2VfZGF0YSkKLSAgICAgICAgcmVzcG9uc2VfY29udGVudF90eXBlID0gSlNPTl9DT05URU5UX1RZUEUKLSAgICBlbGlmIHJlcXVlc3QubWV0aG9kID09ICdERUxFVEUnOgotICAgICAgICBpZiBjb3VudCA9PSAwOgotICAgICAgICAgICAgcmFpc2UgUmVzdFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24ocmVxdWVzdC5wYXRoKQotICAgICAgICB1c2VyX2RhdGEgPSB1c2VyX2RhdGFfcXVlcnlfc2V0WzBdCi0gICAgICAgIHVzZXJfZGF0YS5kZWxldGUoKQotICAgICAgICByZXNwb25zZV9kYXRhID0ge30KLSAgICAgICAgcmVzcG9uc2VfZGF0YVsnc3RhdHVzJ10gPSAnc3VjY2VzcycKLSAgICAgICAgcmVzcG9uc2VfZGF0YVsnbWVzc2FnZSddID0gJ3VzZXIgZGF0YSBkZWxldGVkJwotICAgICAgICByZXNwb25zZV9kYXRhID0gc2ltcGxlanNvbi5kdW1wcyhyZXNwb25zZV9kYXRhKQotICAgICAgICByZXNwb25zZV9jb250ZW50X3R5cGUgPSBKU09OX0NPTlRFTlRfVFlQRQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgIAotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfZGF0YSwgcmVzcG9uc2VfY29udGVudF90eXBlKQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19zZG5wbGF0Zm9ybV90dW5uZWxfbWFuYWdlcihyZXF1ZXN0LCBkcGlkPU5vbmUpOgotICAgICIiIgotICAgIFRoaXMgcmV0dXJucyByZWFsdGltZSBzdGF0aXN0aWNzIGZyb20gc2RucGxhdGZvcm0KLSAgICAiIiIKLQotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgaWYgZHBpZCA9PSBOb25lOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0KLSAgICBwcmludCAnRFBJRCcsIGRwaWQKLSAgICBpZiBkcGlkID09ICdhbGwnOgotICAgICAgICB1cmwgPSBjb250cm9sbGVyX3VybCgndm5zJywgJ3R1bm5lbC1tYW5hZ2VyJywgJ2FsbCcsICdqc29uJykKLSAgICBlbHNlOgotICAgICAgICB1cmwgPSBjb250cm9sbGVyX3VybCgndm5zJywgJ3R1bm5lbC1tYW5hZ2VyJywgJ3N3aXRjaD0nK2RwaWQsICdqc29uJykKLQotICAgIHJlc3BvbnNlX3RleHQgPSB1cmxsaWIyLnVybG9wZW4odXJsKS5yZWFkKCkKLSAgICBlbnRyaWVzID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZV90ZXh0KQotCi0gICAgaWYgJ2Vycm9yJyBpbiBlbnRyaWVzIGFuZCBlbnRyaWVzWydlcnJvciddICE9IE5vbmU6Ci0gICAgICAgIFJlc3RJbnRlcm5hbEV4Y2VwdGlvbihlbnRyaWVzWydlcnJvciddKQotCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShqc29uLmR1bXBzKGVudHJpZXNbJ3R1bm5NYXAnXSksIEpTT05fQ09OVEVOVF9UWVBFKQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19zZG5wbGF0Zm9ybV9jb250cm9sbGVyX3N1bW1hcnkocmVxdWVzdCk6Ci0gICAgIiIiCi0gICAgVGhpcyByZXR1cm5zIHN1bW1hcnkgc3RhdGlzdGljcyBmcm9tIHNkbnBsYXRmb3JtIG1vZHVsZXMKLSAgICAiIiIKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotCi0gICAgdXJsID0gY29udHJvbGxlcl91cmwoJ2NvcmUnLCAnY29udHJvbGxlcicsICdzdW1tYXJ5JywgJ2pzb24nKQotICAgIHJldHVybiBnZXRfc2RucGxhdGZvcm1fcmVzcG9uc2UodXJsKQotCi1kZWYgZmlsdGVyX3F1ZXJpZXMoY2hvaWNlX2xpc3QsIHBhcmFtX2RpY3QpOgotICAgIHJldHVybiBkaWN0KFtbeCwgcGFyYW1fZGljdFt4XV0gZm9yIHggaW4gY2hvaWNlX2xpc3QKLSAgICAgICAgICAgICAgICBpZiB4IGluIHBhcmFtX2RpY3QgYW5kIHBhcmFtX2RpY3RbeF0gIT0gJ2FsbCddKQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19yZWxvYWQocmVxdWVzdCk6Ci0gICAgIiIiCi0gICAgVGhpcyBjYWxscyBhbiBvc3dyYXBwZXIgdGhhdCByZWxvYWRzIHRoZSBib3guCi0gICAgIiIiCi0gICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICBleGVjX29zX3dyYXBwZXIoIlJlbG9hZENvbnRyb2xsZXIiLCAnc2V0JywgW10pCi0gICAgcmVzcG9uc2VfdGV4dCA9ICd7InN0YXR1cyI6InJlbG9hZGluZyJ9JwotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3Jlc2V0YnNjKHJlcXVlc3QpOgotICAgICIiIgotICAgIFRoaXMgY2FsbHMgYW4gb3N3cmFwcGVyIHRoYXQgcmVzZXRzIHRoZSBib3guCi0gICAgIiIiCi0gICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gJ1BVVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICBleGVjX29zX3dyYXBwZXIoIlJlc2V0QnNjIiwgJ3NldCcsIFtdKQotICAgIHJlc3BvbnNlX3RleHQgPSAneyJzdGF0dXMiOiJyZXNldHRpbmcifScKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHJlc3BvbnNlX3RleHQsIEpTT05fQ09OVEVOVF9UWVBFKQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19hYm9ydF91cGdyYWRlKHJlcXVlc3QpOgotICAgICIiIgotICAgIFRoaXMgY2FsbHMgYW4gb3N3cmFwcGVyIHRoYXQgcmVsb2FkcyB0aGUgYm94LgotICAgICIiIgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdQVVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgY29udHJvbGxlcl9pZCA9IGdldF9sb2NhbF9jb250cm9sbGVyX2lkKCkKLSAgICBjb250cm9sbGVyID0gQ29udHJvbGxlci5vYmplY3RzLmdldChpZD1jb250cm9sbGVyX2lkKQotICAgIGlmIGNvbnRyb2xsZXIuc3RhdHVzICE9ICdVcGdyYWRpbmcnOgotICAgICAgICByYWlzZSBSZXN0VXBncmFkZUV4Y2VwdGlvbigiTm8gVXBncmFkZSBwZW5kaW5nIikKLSAgICBleGVjX29zX3dyYXBwZXIoIkFib3J0VXBncmFkZSIsICdzZXQnLCBbXSkKLSAgICBjb250cm9sbGVyLnN0YXR1cyA9ICdSZWFkeScKLSAgICBjb250cm9sbGVyLnNhdmUoKQotICAgIHJlc3BvbnNlX3RleHQgPSAneyJzdGF0dXMiOiJSZWFkeSJ9JwotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2NvbmZpZ19yb2xsYmFjayhyZXF1ZXN0KToKLSAgICBkYXRhID0gc2ltcGxlanNvbi5sb2FkcyhyZXF1ZXN0LnJhd19wb3N0X2RhdGEpCi0gICAgcGF0aCA9IGRhdGFbJ3BhdGgnXQotICAgIHByaW50ICJFeGVjdXRpbmcgY29uZmlnIHJvbGxiYWNrIHdpdGggY29uZmlnIEAiLCBwYXRoCi0gICAgCi0gICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gJ1BVVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICBleGVjX29zX3dyYXBwZXIoIlJvbGxiYWNrQ29uZmlnIiwgJ3NldCcsIFtwYXRoXSkKLSAgICByZXNwb25zZV90ZXh0ID0gZ2V0X3N1Y2Nlc3NmdWxfcmVzcG9uc2VfZGF0YSgncHJlcGFyZWQgY29uZmlnIHJvbGxiYWNrZWQnKQotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3VwbG9hZF9kYXRhKHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdQVVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgZGF0YSA9IHNpbXBsZWpzb24ubG9hZHMocmVxdWVzdC5yYXdfcG9zdF9kYXRhKQotICAgIGNvbnRlbnQgPSBkYXRhWydkYXRhJ10KLSAgICBwYXRoID0gZGF0YVsnZHN0J10KLSAgICBwcmludCAiRXhlY3V0aW5nIGNvbmZpZyByb2xsYmFjayB3aXRoIGNvbmZpZyBAIiwgcGF0aAotICAgIAotICAgIGV4ZWNfb3Nfd3JhcHBlcigiV3JpdGVEYXRhVG9GaWxlIiwgJ3NldCcsIFtjb250ZW50LCBwYXRoXSkKLSAgICByZXNwb25zZV90ZXh0ID0gZ2V0X3N1Y2Nlc3NmdWxfcmVzcG9uc2VfZGF0YSgnd3JpdHRlbiBkYXRhJykKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHJlc3BvbnNlX3RleHQsIEpTT05fQ09OVEVOVF9UWVBFKQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19kaWZmX2NvbmZpZyhyZXF1ZXN0KToKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnUFVUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgIGRhdGEgPSBzaW1wbGVqc29uLmxvYWRzKHJlcXVlc3QucmF3X3Bvc3RfZGF0YSkKLSAgICBjb25maWcxID0gZGF0YVsnY29uZmlnLTEnXQotICAgIGNvbmZpZzIgPSBkYXRhWydjb25maWctMiddCi0gICAgcHJpbnQgImRpZmZpbmcgJyVzJyB3aXRoICclcyciICUoY29uZmlnMSwgY29uZmlnMikKLSAgICAKLSAgICByZXN1bHQgPSBleGVjX29zX3dyYXBwZXIoIkRpZmZDb25maWciLCAnc2V0JywgW2NvbmZpZzEsIGNvbmZpZzJdKQotICAgIHJldHVybiBIdHRwUmVzcG9uc2Uoc2ltcGxlanNvbi5kdW1wcyhyZXN1bHQpLCBKU09OX0NPTlRFTlRfVFlQRSkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fZXh0cmFjdF91cGdyYWRlX3BrZ19tYW5pZmVzdChyZXF1ZXN0KToKLSAgICAiIiIKLSAgICBUaGlzIGNhbGxzIGFuIG9zd3JhcHBlciB0aGF0IGV4dHJhY3RzIHRoZSB1cGdyYWRlIHBhY2thZ2UuCi0gICAgVGhpcyByZXR1cm5zIHRoZSBpbnN0YWxsIHBhY2thZ2UgJ21hbmlmZXN0Jy4KLSAgICAiIiIKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgIGV4ZWNfb3Nfd3JhcHBlcigiR2V0TGF0ZXN0VXBncmFkZVBrZyIsICdnZXQnLCBbXSkKLSAgICBvdXRwdXQgPSBleGVjX29zX3dyYXBwZXIoIkNhdFVwZ3JhZGVJbWFnZXNGaWxlIiwgJ2dldCcpCi0gICAgdXBncmFkZVBrZyA9IG91dHB1dFsnb3V0J10uc3RyaXAoKQotICAgIGV4ZWNfb3Nfd3JhcHBlcigiRXh0cmFjdFVwZ3JhZGVQa2dNYW5pZmVzdCIsICdzZXQnLCBbdXBncmFkZVBrZ10pCi0gICAgb3V0cHV0ID0gZXhlY19vc193cmFwcGVyKCJFeHRyYWN0VXBncmFkZVBrZ01hbmlmZXN0IiwgJ2dldCcpCi0gICAgbWFuaWZlc3QgPSBvdXRwdXRbJ291dCddCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShtYW5pZmVzdCwgSlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2V4dHJhY3RfdXBncmFkZV9wa2cocmVxdWVzdCk6Ci0gICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICBleGVjX29zX3dyYXBwZXIoIkdldExhdGVzdFVwZ3JhZGVQa2ciLCAnZ2V0JywgW10pCi0gICAgb3V0cHV0ID0gZXhlY19vc193cmFwcGVyKCJDYXRVcGdyYWRlSW1hZ2VzRmlsZSIsICdnZXQnKQotICAgIHVwZ3JhZGVQa2cgPSBvdXRwdXRbJ291dCddLnN0cmlwKCkKLSAgICBleGVjX29zX3dyYXBwZXIoIkV4dHJhY3RVcGdyYWRlUGtnIiwgJ3NldCcsIFt1cGdyYWRlUGtnXSkKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCd7InN0YXR1cyI6ICJPSyJ9JywgSlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2dldF91cGdyYWRlX3BrZyhyZXF1ZXN0KToKLSAgICAiIiIKLSAgICBUaGlzIGNhbGxzIGFuIG9zd3JhcHBlciB0byBnZXQgdGhlIGxhdGVzdCB1cGdyYWRlCi0gICAgcGFja2FnZSB1cGxvYWRlZCB0byB0aGUgY29udHJvbGxlci4KLSAgICAiIiIKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgIGV4ZWNfb3Nfd3JhcHBlcigiR2V0TGF0ZXN0VXBncmFkZVBrZyIsICdnZXQnKQotICAgIHJlc3VsdCA9IGV4ZWNfb3Nfd3JhcHBlcigiQ2F0VXBncmFkZUltYWdlc0ZpbGUiLCAnZ2V0JykKLSAgICBqc29uZGljdCA9IHsnZmlsZSc6IHJlc3VsdFsnb3V0J10uc3RyaXAoKX0KLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHNpbXBsZWpzb24uZHVtcHMoanNvbmRpY3QpLCBKU09OX0NPTlRFTlRfVFlQRSkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fY2xlYW51cF9vbGRfcGtncyhyZXF1ZXN0KToKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgIGV4ZWNfb3Nfd3JhcHBlcigiQ2xlYW51cE9sZFVwZ3JhZGVJbWFnZXMiLCAnZ2V0JykKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCd7InN0YXR1cyI6ICJPSyJ9JywgSlNPTl9DT05URU5UX1RZUEUpCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX2V4ZWN1dGVfdXBncmFkZV9zdGVwKHJlcXVlc3QpOgotICAgICIiIgotICAgIEV4ZWN1dGVzIGEgcGFydGljdWxhciB1cGdyYWRlIHN0ZXAgYWNjb3JkaW5nIHRvIHRoZQotICAgIHVwZ3JhZGUgcGFja2FnZSBtYW5pZmVzdC4KLSAgICAiIiIKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnUFVUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotCi0gICAgcHV0X2RhdGEgPSBqc29uLmxvYWRzKHJlcXVlc3QucmF3X3Bvc3RfZGF0YSkKLSAgICBpbWFnZU5hbWUgPSBwdXRfZGF0YS5nZXQoJ2ltYWdlTmFtZScpCi0gICAgc3RlcE51bSA9IHB1dF9kYXRhLmdldCgnc3RlcCcpCi0gICAgZm9yY2UgPSBwdXRfZGF0YS5nZXQoJ2ZvcmNlJykKLSAgICAKLSAgICBhcmdzID0gW3N0ZXBOdW0sIGltYWdlTmFtZV0KLSAgICBpZiBmb3JjZToKLSAgICAgICAgYXJncy5hcHBlbmQoIi0tZm9yY2UiKQotICAgIHJlc3VsdCA9IGV4ZWNfb3Nfd3JhcHBlcigiRXhlY3V0ZVVwZ3JhZGVTdGVwIiwgJ2dldCcsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzKQotICAgIGpzb25kaWN0ID0ge30KLSAgICBpZiBsZW4oc3RyKHJlc3VsdFsnZXJyJ10pLnN0cmlwKCkpID4gMDoKLSAgICAgICAganNvbmRpY3RbJ3N0YXR1cyddID0gIkVSUk9SIgotICAgICAgICBqc29uZGljdFsnZGVzY3JpcHRpb24nXSA9IHN0cihyZXN1bHRbJ2VyciddKS5zdHJpcCgpCi0gICAgZWxzZToKLSAgICAgICAganNvbmRpY3RbJ3N0YXR1cyddID0gIk9LIgotICAgICAgICBqc29uZGljdFsnZGVzY3JpcHRpb24nXSA9IHN0cihyZXN1bHRbJ291dCddKS5zdHJpcCgpCi0KLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKHNpbXBsZWpzb24uZHVtcHMoanNvbmRpY3QpLCBKU09OX0NPTlRFTlRfVFlQRSkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fc2RucGxhdGZvcm1fdHVubmVsX2NvbmZpZyhyZXF1ZXN0KTogICAgCi0gICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gJ1BVVCcgYW5kIHJlcXVlc3QubWV0aG9kICE9ICdERUxFVEUnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0KLSAgICB1cmwgPSBjb250cm9sbGVyX3VybCgnb25vcycsICdzZWdtZW50cm91dGluZycsICd0dW5uZWwnKQotICAgIHBvc3RfZGF0YSA9IHJlcXVlc3QucmF3X3Bvc3RfZGF0YQotICAgIHB1dF9yZXF1ZXN0ID0gdXJsbGliMi5SZXF1ZXN0KHVybCwgcG9zdF9kYXRhKQotICAgIG1ldGhvZCA9IHJlcXVlc3QubWV0aG9kCi0gICAgaWYgbWV0aG9kID09ICdQVVQnOgotICAgICAgICBtZXRob2QgPSAnUE9TVCcKLSAgICBwdXRfcmVxdWVzdC5nZXRfbWV0aG9kID0gbGFtYmRhOiBtZXRob2QKLSAgICBwdXRfcmVxdWVzdC5hZGRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpCi0gICAgcmVzcG9uc2UgPSB1cmxsaWIyLnVybG9wZW4ocHV0X3JlcXVlc3QpCi0gICAgcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlLnJlYWQoKQotICAgIHJlc3BvbnNlID0gSHR0cFJlc3BvbnNlKHJlc3BvbnNlX3RleHQsIEpTT05fQ09OVEVOVF9UWVBFKQotICAgIAotICAgIHJldHVybiByZXNwb25zZQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBkb19zZG5wbGF0Zm9ybV9wb2xpY3lfY29uZmlnKHJlcXVlc3QpOiAgICAKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnUFVUJyBhbmQgcmVxdWVzdC5tZXRob2QgIT0gJ0RFTEVURSc6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLQotICAgIHVybCA9IGNvbnRyb2xsZXJfdXJsKCdvbm9zJywgJ3NlZ21lbnRyb3V0aW5nJywgJ3BvbGljeScpCi0gICAgcG9zdF9kYXRhID0gcmVxdWVzdC5yYXdfcG9zdF9kYXRhCi0gICAgcHV0X3JlcXVlc3QgPSB1cmxsaWIyLlJlcXVlc3QodXJsLCBwb3N0X2RhdGEpCi0gICAgbWV0aG9kID0gcmVxdWVzdC5tZXRob2QKLSAgICBpZiBtZXRob2QgPT0gJ1BVVCc6Ci0gICAgICAgIG1ldGhvZCA9ICdQT1NUJwotICAgIHB1dF9yZXF1ZXN0LmdldF9tZXRob2QgPSBsYW1iZGE6IG1ldGhvZAotICAgIHB1dF9yZXF1ZXN0LmFkZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJykKLSAgICByZXNwb25zZSA9IHVybGxpYjIudXJsb3BlbihwdXRfcmVxdWVzdCkKLSAgICByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2UucmVhZCgpCi0gICAgcmVzcG9uc2UgPSBIdHRwUmVzcG9uc2UocmVzcG9uc2VfdGV4dCwgSlNPTl9DT05URU5UX1RZUEUpCi0gICAgCi0gICAgcmV0dXJuIHJlc3BvbnNlCi0KLUBzYWZlX3Jlc3RfdmlldwotZGVmIGRvX3Nob3dfdHVubmVsKHJlcXVlc3QpOiAgICAKLSAgICAjaWYgcmVxdWVzdC5tZXRob2QgIT0gJ0dFVCc6Ci0gICAgIyAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0KLSAgICB1cmwgPSBjb250cm9sbGVyX3VybCgnb25vcycsICdzZWdtZW50cm91dGluZycsJ3R1bm5lbCcpCi0gICAgaWYgcmVxdWVzdC5NRVRBWydRVUVSWV9TVFJJTkcnXToKLSAgICAgICAgdXJsICs9ICc/JyArIHJlcXVlc3QuTUVUQVsnUVVFUllfU1RSSU5HJ10KLSAgICByZXR1cm4gZ2V0X3NkbnBsYXRmb3JtX3Jlc3BvbnNlKHVybCkKLQotQHNhZmVfcmVzdF92aWV3Ci1kZWYgZG9fc2hvd19wb2xpY3kocmVxdWVzdCk6ICAgIAotICAgICNpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAjICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLQotICAgIHVybCA9IGNvbnRyb2xsZXJfdXJsKCdvbm9zJywgJ3NlZ21lbnRyb3V0aW5nJywncG9saWN5JykKLSAgICBpZiByZXF1ZXN0Lk1FVEFbJ1FVRVJZX1NUUklORyddOgotICAgICAgICB1cmwgKz0gJz8nICsgcmVxdWVzdC5NRVRBWydRVUVSWV9TVFJJTkcnXQotICAgIHJldHVybiBnZXRfc2RucGxhdGZvcm1fcmVzcG9uc2UodXJsKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vcnVudGVzdHMucHkgYi9jbGkvc2RuY29uL3J1bnRlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhZmE3YjNlLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vcnVudGVzdHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IG9zLCBzeXMKLW9zLmVudmlyb25bJ0RKQU5HT19TRVRUSU5HU19NT0RVTEUnXSA9ICdzZG5jb24uc2V0dGluZ3MnCi1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLQotdGVzdF9sYWJlbHMgPSBbJ2NsdXN0ZXJBZG1pbicsICJjb250ZW50dHlwZXMiLCAic2Vzc2lvbnMiLCAibWVzc2FnZXMiXQotc21va2VfdGVzdF9sYWJlbHMgPSBbImFkbWluIiwgInJlc3QiLCAiY29udHJvbGxlciIsICJzdGF0cyJdCi0KLWRlZiBydW50ZXN0cyh0ZXN0cz10ZXN0X2xhYmVscyk6Ci0gICAgaW1wb3J0IGRqYW5nby50ZXN0LnV0aWxzLCBkamFuZ28uY29uZgotICAgIHRlc3RfcnVubmVyID0gZGphbmdvLnRlc3QudXRpbHMuZ2V0X3J1bm5lcihkamFuZ28uY29uZi5zZXR0aW5ncykKLSAgICBpZiBoYXNhdHRyKHRlc3RfcnVubmVyLCAicnVuX3Rlc3RzIik6Ci0gICAgICAgIHRlc3RfcnVubmVyID0gdGVzdF9ydW5uZXIodmVyYm9zaXR5PTIpLnJ1bl90ZXN0cwotICAgIGZhaWx1cmVzID0gdGVzdF9ydW5uZXIodGVzdHMpCi0gICAgc3lzLmV4aXQoMCBpZiBmYWlsdXJlcyA9PSAwIGVsc2UgMSkKLQotZGVmIHJ1bnRlc3RzX3Ntb2tlKCk6Ci0gICAgcmV0dXJuIHJ1bnRlc3RzKHNtb2tlX3Rlc3RfbGFiZWxzKQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9zZXR0aW5ncy5weSBiL2NsaS9zZG5jb24vc2V0dGluZ3MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDk3Zjc2NmUuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9zZXR0aW5ncy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotIyBEamFuZ28gc2V0dGluZ3MgZm9yIHNkbmNvbiBwcm9qZWN0LgotCi1pbXBvcnQgb3MsIHN5cwotI2Zyb20gY2Fzc2FuZHJhLnR0eXBlcyBpbXBvcnQgQ29uc2lzdGVuY3lMZXZlbAotCi1ERUJVRyA9IFRydWUKLURFQlVHX1BST1BBR0FURV9FWENFUFRJT05TID0gREVCVUcKLVRFTVBMQVRFX0RFQlVHID0gREVCVUcKLQotQURNSU5TID0gKAotICAgICMgKCdZb3VyIE5hbWUnLCAneW91cl9lbWFpbEBkb21haW4uY29tJyksCi0pCi0KLU1BTkFHRVJTID0gQURNSU5TCi0KLURBVEFCQVNFUyA9IHsKLSAgICAnZGVmYXVsdCc6IHsKLSAgICAgICAgIydFTkdJTkUnOiAnZGphbmdvX2Nhc3NhbmRyYS5kYicsCi0gICAgICAgICdFTkdJTkUnOiAnZGphbmdvLmRiLmJhY2tlbmRzLnNxbGl0ZTMnLAotICAgICAgICAnTkFNRSc6ICdzZG5jb24nLAotICAgICAgICAnVVNFUic6ICcnLCAgICAgICAgICAgICAgICAgICAgICAjIE5vdCB1c2VkIHdpdGggc3FsaXRlMy4KLSAgICAgICAgJ1BBU1NXT1JEJzogJycsICAgICAgICAgICAgICAgICAgIyBOb3QgdXNlZCB3aXRoIHNxbGl0ZTMuCi0gICAgICAgICdIT1NUJzogJycsICAgICAgICAgICAgICAgICAgICAgICMgU2V0IHRvIGVtcHR5IHN0cmluZyBmb3IgbG9jYWxob3N0LiBOb3QgdXNlZCB3aXRoIHNxbGl0ZTMuCi0gICAgICAgICdQT1JUJzogJycsICAgICAgICAgICAgICAgICAgICAgICMgU2V0IHRvIGVtcHR5IHN0cmluZyBmb3IgZGVmYXVsdC4gTm90IHVzZWQgd2l0aCBzcWxpdGUzLgotICAgIH0KLX0KLQotIyBTZXR0aW5ncyBmb3IgYWNjZXNzaW5nIHRoZSBzdGF0cyBkYXRhYmFzZS9rZXlzcGFjZS4KLSMgVGhpcyBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSB1c3VhbCBEamFuZ28gbW9kZWwvZGF0YWJhc2UgbGF5ZXIsIGJ1dAotIyBpbnN0ZWFkIGFjY2Vzc2VzIENhc3NhbmRyYSBkaXJlY3RseS4KLVNUQVRTX0RBVEFCQVNFID0gewotICAgICdOQU1FJzogJ3NkbnN0YXRzJywKLSAgICAjJ0hPU1QnOiAnJywKLSAgICAjJ1VTRVInOiAnJywKLSAgICAjJ1BBU1NXT1JEJzogJycsCi0gICAgIydDQVNTQU5EUkFfUkVQTElDQVRJT05fRkFDVE9SJzogMQotfQotCi0jIExvY2FsIHRpbWUgem9uZSBmb3IgdGhpcyBpbnN0YWxsYXRpb24uIENob2ljZXMgY2FuIGJlIGZvdW5kIGhlcmU6Ci0jIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl90el96b25lc19ieV9uYW1lCi0jIGFsdGhvdWdoIG5vdCBhbGwgY2hvaWNlcyBtYXkgYmUgYXZhaWxhYmxlIG9uIGFsbCBvcGVyYXRpbmcgc3lzdGVtcy4KLSMgT24gVW5peCBzeXN0ZW1zLCBhIHZhbHVlIG9mIE5vbmUgd2lsbCBjYXVzZSBEamFuZ28gdG8gdXNlIHRoZSBzYW1lCi0jIHRpbWV6b25lIGFzIHRoZSBvcGVyYXRpbmcgc3lzdGVtLgotIyBJZiBydW5uaW5nIGluIGEgV2luZG93cyBlbnZpcm9ubWVudCB0aGlzIG11c3QgYmUgc2V0IHRvIHRoZSBzYW1lIGFzIHlvdXIKLSMgc3lzdGVtIHRpbWUgem9uZS4KLSNUSU1FX1pPTkUgPSAnQW1lcmljYS9Mb3NfQW5nZWxlcycKLVRJTUVfWk9ORSA9IE5vbmUKLQotIyBMYW5ndWFnZSBjb2RlIGZvciB0aGlzIGluc3RhbGxhdGlvbi4gQWxsIGNob2ljZXMgY2FuIGJlIGZvdW5kIGhlcmU6Ci0jIGh0dHA6Ly93d3cuaTE4bmd1eS5jb20vdW5pY29kZS9sYW5ndWFnZS1pZGVudGlmaWVycy5odG1sCi1MQU5HVUFHRV9DT0RFID0gJ2VuLXVzJwotCi1TSVRFX0lEID0gJzEnCi0KLSMgVGVsbCBEamFuZ28gd2hlcmUgaXMgdGhlIHByb2ZpbGUgb2JqZWN0Ci0jQVVUSF9QUk9GSUxFX01PRFVMRSA9ICJzZG5jb24uYWNjb3VudC5Vc2VyUHJvZmlsZSIKLQotIyBJZiB5b3Ugc2V0IHRoaXMgdG8gRmFsc2UsIERqYW5nbyB3aWxsIG1ha2Ugc29tZSBvcHRpbWl6YXRpb25zIHNvIGFzIG5vdAotIyB0byBsb2FkIHRoZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBtYWNoaW5lcnkuCi1VU0VfSTE4TiA9IFRydWUKLQotIyBJZiB5b3Ugc2V0IHRoaXMgdG8gRmFsc2UsIERqYW5nbyB3aWxsIG5vdCBmb3JtYXQgZGF0ZXMsIG51bWJlcnMgYW5kCi0jIGNhbGVuZGFycyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlCi1VU0VfTDEwTiA9IFRydWUKLQotIyBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkgdGhhdCBob2xkcyBtZWRpYS4KLSMgRXhhbXBsZTogIi9ob21lL21lZGlhL21lZGlhLmxhd3JlbmNlLmNvbS8iCi1TRE5fUk9PVCA9ICIvb3B0L3NkbnBsYXRmb3JtIiBpZiBub3QgJ1NETl9ST09UJyBpbiBvcy5lbnZpcm9uIGVsc2Ugb3MuZW52aXJvblsnU0ROX1JPT1QnXQotTUVESUFfUk9PVCA9ICIlcy9jb24vbGliL3B5dGhvbi9kamFuZ28vY29udHJpYi9hZG1pbi9tZWRpYS8iICUgU0ROX1JPT1QKLQotIyBVUkwgdGhhdCBoYW5kbGVzIHRoZSBtZWRpYSBzZXJ2ZWQgZnJvbSBNRURJQV9ST09ULiBNYWtlIHN1cmUgdG8gdXNlIGEKLSMgdHJhaWxpbmcgc2xhc2ggaWYgdGhlcmUgaXMgYSBwYXRoIGNvbXBvbmVudCAob3B0aW9uYWwgaW4gb3RoZXIgY2FzZXMpLgotIyBFeGFtcGxlczogImh0dHA6Ly9tZWRpYS5sYXdyZW5jZS5jb20iLCAiaHR0cDovL2V4YW1wbGUuY29tL21lZGlhLyIKLU1FRElBX1VSTCA9ICcnCi1TVEFUSUNfVVJMID0gJy9zdGF0aWMvJwotCi0jIFVSTCBwcmVmaXggZm9yIGFkbWluIG1lZGlhIC0tIENTUywgSmF2YVNjcmlwdCBhbmQgaW1hZ2VzLiBNYWtlIHN1cmUgdG8gdXNlIGEKLSMgdHJhaWxpbmcgc2xhc2guCi0jIEV4YW1wbGVzOiAiaHR0cDovL2Zvby5jb20vbWVkaWEvIiwgIi9tZWRpYS8iLgotQURNSU5fTUVESUFfUFJFRklYID0gJy9tZWRpYS8nCi0KLSMgVVJMIHByZWZpeGVzIGV4ZW1wdGVkIGZyb20gbG9naW4gcmVxdWlyZW1lbnRzCi1FWEVNUFRfVVJMUyA9IFsnL2NvcmV1aS9zdGF0aWMvJywgJy9jb3JldWkvaW1nLycsICcvZmF2aWNvbi5pY28nXQotCi0jIE1ha2UgdGhpcyB1bmlxdWUsIGFuZCBkb24ndCBzaGFyZSBpdCB3aXRoIGFueWJvZHkuCi1TRUNSRVRfS0VZID0gJ3ArNyFmNkA4cnkyJWZhdW5jb0B1QCR3enE3X2pweXc0dzcrc249JnhwdXZvJTIhdXcoJwotCi0jIExpc3Qgb2YgY2FsbGFibGVzIHRoYXQga25vdyBob3cgdG8gaW1wb3J0IHRlbXBsYXRlcyBmcm9tIHZhcmlvdXMgc291cmNlcy4KLVRFTVBMQVRFX0xPQURFUlMgPSAoCi0gICAgJ2RqYW5nby50ZW1wbGF0ZS5sb2FkZXJzLmZpbGVzeXN0ZW0uTG9hZGVyJywKLSAgICAnZGphbmdvLnRlbXBsYXRlLmxvYWRlcnMuYXBwX2RpcmVjdG9yaWVzLkxvYWRlcicsCi0jICAgICAnZGphbmdvLnRlbXBsYXRlLmxvYWRlcnMuZWdncy5Mb2FkZXInLAotKQotCi1mcm9tIGRqYW5nby5jb25mLmdsb2JhbF9zZXR0aW5ncyBpbXBvcnQgVEVNUExBVEVfQ09OVEVYVF9QUk9DRVNTT1JTIGFzIEdMT0JBTF9URU1QTEFURV9DT05URVhUX1BST0NFU1NPUlMKLVRFTVBMQVRFX0NPTlRFWFRfUFJPQ0VTU09SUyA9IEdMT0JBTF9URU1QTEFURV9DT05URVhUX1BST0NFU1NPUlMgKyAoCi0gICAgJ3NkbmNvbi5jbHVzdGVyQWRtaW4udXRpbHMudWljb250ZXh0JywKLSkKLQotTUlERExFV0FSRV9DTEFTU0VTID0gKAotICAgICdzZG5jb24uSEFSZWRpcmVjdE1pZGRsZVdhcmUnLAotICAgICdkamFuZ28ubWlkZGxld2FyZS5jb21tb24uQ29tbW9uTWlkZGxld2FyZScsCi0gICAgJ2RqYW5nby5jb250cmliLnNlc3Npb25zLm1pZGRsZXdhcmUuU2Vzc2lvbk1pZGRsZXdhcmUnLAotICAgICdkamFuZ28ubWlkZGxld2FyZS5jc3JmLkNzcmZWaWV3TWlkZGxld2FyZScsCi0gICAgJ2RqYW5nby5jb250cmliLmF1dGgubWlkZGxld2FyZS5BdXRoZW50aWNhdGlvbk1pZGRsZXdhcmUnLAotICAgICdzZG5jb24uY2x1c3RlckFkbWluLm1pZGRsZXdhcmUuQ2x1c3RlckF1dGhlbnRpY2F0ZScsCi0gICAgJ3NkbmNvbi5jbHVzdGVyQWRtaW4ubWlkZGxld2FyZS5SZXF1aXJlQXV0aE1pZGRsZXdhcmUnLAotICAgICdkamFuZ28uY29udHJpYi5tZXNzYWdlcy5taWRkbGV3YXJlLk1lc3NhZ2VNaWRkbGV3YXJlJywKLSAgICAnc2RuY29uLlNETkNvbkFwcExvYWRlck1pZGRsZVdhcmUnLAotKQotCi0jIERqYW5nbyB1c2VzIGJyb3dzZXItbGVuZ3RoIGNvb2tpZXMgdGhhdCBleHBpcmUgYXMgc29vbiBhcyB0aGUgdXNlciBjbG9zZXMgdGhlIGJyb3dzZXIuCi1TRVNTSU9OX0VYUElSRV9BVF9CUk9XU0VSX0NMT1NFID0gVHJ1ZQotU0VTU0lPTl9DT09LSUVfQUdFID0gMjU5MjAwMCAjIDMwIGRheXMsIGluIHNlY29uZHMKLQotUk9PVF9VUkxDT05GID0gJ3NkbmNvbi51cmxzJwotCi1URU1QTEFURV9ESVJTID0gKAotICAgICMgUHV0IHN0cmluZ3MgaGVyZSwgbGlrZSAiL2hvbWUvaHRtbC9kamFuZ29fdGVtcGxhdGVzIiBvciAiQzovd3d3L2RqYW5nby90ZW1wbGF0ZXMiLgotICAgICMgQWx3YXlzIHVzZSBmb3J3YXJkIHNsYXNoZXMsIGV2ZW4gb24gV2luZG93cy4KLSAgICAjIERvbid0IGZvcmdldCB0byB1c2UgYWJzb2x1dGUgcGF0aHMsIG5vdCByZWxhdGl2ZSBwYXRocy4KLSAgICBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLAotICAgIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCdjbHVzdGVyQWRtaW4vdGVtcGxhdGVzJyksCi0pCi0KLSMgSW5jbHVkZSBhcHBsaWNhdGlvbnMgZHluYW1pY2FsbHkgZnJvbSB0aGUgYXBwcyBmb2xkZXIKLQotQVBQX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCdhcHBzJykKLXN5cy5wYXRoLmFwcGVuZChBUFBfRElSKQotCi1hcHBzX2FycmF5ID0gWwotICAgICdkamFuZ28uY29udHJpYi5hdXRoJywKLSAgICAnZGphbmdvLmNvbnRyaWIuY29udGVudHR5cGVzJywKLSAgICAnZGphbmdvLmNvbnRyaWIuc2Vzc2lvbnMnLAotICAgICdkamFuZ28uY29udHJpYi5zdGF0aWNmaWxlcycsCi0gICAgIydkamFuZ28uY29udHJpYi5zaXRlcycsCi0gICAgJ2RqYW5nby5jb250cmliLm1lc3NhZ2VzJywKLSAgICAjIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGVuYWJsZSB0aGUgYWRtaW46Ci0gICAgJ2RqYW5nby5jb250cmliLmFkbWluJywKLSAgICAnZGphbmdvdG9vbGJveCcsCi0gICAgJ3NkbmNvbi5yZXN0JywKLSAgICAnc2RuY29uLmNvbnRyb2xsZXInLAotICAgICMnZGphbmdvX2Nhc3NhbmRyYScsCi0gICAgJ3NkbmNvbi5jb3JldWknLAotICAgICdzZG5jb24uY2x1c3RlckFkbWluJywKLSAgICAjJ3NkbmNvbi5hY2NvdW50JywKLSAgICAnc2RuY29uLnVpJywKLSAgICAnc2RuY29uLnN0YXRzJywKLSAgICAnc2RuY29uLnN5bmNkJywKLSAgICAnc2RuY29uLnN0YXRkcm9wZCcKLV0KLQotZGlyZWN0b3J5ID0gb3MubGlzdGRpcihBUFBfRElSKQotZm9yIGZpbGVuYW1lIGluIGRpcmVjdG9yeToKLSAgICBpZiBub3QgZmlsZW5hbWUuc3RhcnRzd2l0aCgnLicpOgotICAgICAgICBhcHBzX2FycmF5LmFwcGVuZChvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkKLQotSU5TVEFMTEVEX0FQUFMgPSB0dXBsZShhcHBzX2FycmF5KQotCi1TVEFUU19NRVRBREFUQV9NT0RVTEVTID0gW10KLQotX3N0YXRzX21lYXRhZGF0YV9kaXJfbmFtZSA9ICdzdGF0c19tZXRhZGF0YScKLV9zdGF0c19tZXRhZGF0YV9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgX3N0YXRzX21lYXRhZGF0YV9kaXJfbmFtZSkKLV9kaXJlY3RvcnkgPSBvcy5saXN0ZGlyKF9zdGF0c19tZXRhZGF0YV9kaXIpCi0KLWZvciBfZmlsZW5hbWUgaW4gX2RpcmVjdG9yeToKLSAgICBfYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKF9maWxlbmFtZSkKLSAgICBpZiBfYmFzZW5hbWUuZW5kc3dpdGgoJy5weScpIGFuZCBfYmFzZW5hbWUgIT0gJ19faW5pdF9fLnB5JzoKLSAgICAgICAgX21vZHVsZV9uYW1lID0gb3MucGF0aC5zcGxpdGV4dChfYmFzZW5hbWUpWzBdCi0gICAgICAgIFNUQVRTX01FVEFEQVRBX01PRFVMRVMuYXBwZW5kKCdzZG5jb24uJXMuJXMnICUgKF9zdGF0c19tZWF0YWRhdGFfZGlyX25hbWUsIF9tb2R1bGVfbmFtZSkpCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3NldHVwLnB5IGIvY2xpL3NkbmNvbi9zZXR1cC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTc1ZGQxNi4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3NldHVwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWltcG9ydCBzZXR1cHRvb2xzLCBvcwotaW1wb3J0IHN5cwotCi1vcy5lbnZpcm9uWydESkFOR09fU0VUVElOR1NfTU9EVUxFJ10gPSAnc2RuY29uLnNldHRpbmdzJwotCi1kZWYgZmluZF9maWxlcyhkaXJzKToKLSAgICBmaWxlcyA9IFtdCi0gICAgZm9yIGRpciBpbiBkaXJzOgotICAgICAgICBsID0gbGVuKG9zLnBhdGguam9pbigqb3MucGF0aC5zcGxpdChkaXIpWzotMV0pKSArIDEKLSAgICAgICAgZm9yIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2FsayhkaXIpOgotICAgICAgICAgICAgZm9yIGZuIGluIGZpbGVuYW1lczoKLSAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQob3MucGF0aC5qb2luKGRpcnBhdGgsIGZuKVtsOl0pCi0gICAgcmV0dXJuIGZpbGVzCi0KLXdhbnRfc21va2UgPSBGYWxzZQotCi1pZiBzeXMuYXJndlstMV0gPT0gJy0tc21va2UtdGVzdHMtb25seSc6Ci0gICAgd2FudF9zbW9rZSA9IFRydWUKLSAgICBkZWwgc3lzLmFyZ3ZbLTFdCi0KLXNldHVwdG9vbHMuc2V0dXAoCi0gICAgbmFtZT0ic2RuY29uIiwKLSAgICB2ZXJzaW9uPSIwLjEuMCIsCi0gICAgcGFja2FnZV9kaXI9eyJzZG5jb24iOiAiLiJ9LAotICAgIHBhY2thZ2VzPVsic2RuY29uIiwgInNkbmNvbi5jb250cm9sbGVyIiwgInNkbmNvbi5yZXN0IiwKLSAgICAgICAgICAgICAgInNkbmNvbi5jbHVzdGVyQWRtaW4iLCAic2RuY29uLmNvcmV1aSIsICJzZG5jb24uY29yZXVpLnRlbXBsYXRldGFncyIsCi0gICAgICAgICAgICAgICJzZG5jb24uc3RhdHMiLCAic2RuY29uLnN0YXRzX21ldGFkYXRhIiwKLSAgICAgICAgICAgICAgInNkbmNvbi5zdGF0ZHJvcGQiLCAic2RuY29uLnN5bmNkIiwKLSAgICAgICAgICAgICAgInNkbmNvbi5hcHBzLmNzdGF0cyIsICJzZG5jb24uYXBwcy5sb2dzIiwgIAotICAgICAgICAgICAgICAic2RuY29uLmFwcHMuZG9jcyIsIAotICAgICAgICAgICAgIF0sCi0gICAgcGFja2FnZV9kYXRhPXsic2RuY29uLmNvcmV1aSI6IGZpbmRfZmlsZXMoWyJjb3JldWkvdGVtcGxhdGVzIiwgImNvcmV1aS9pbWciLCAiY29yZXVpL3N0YXRpYyJdKSwKLSAgICAgICAgICAgICAgICAgICJzZG5jb24uY2x1c3RlckFkbWluIjogZmluZF9maWxlcyhbImNsdXN0ZXJBZG1pbi90ZW1wbGF0ZXMiXSksCi0gICAgICAgICAgICAgICAgICAic2RuY29uLmFwcHMuY3N0YXRzIjogZmluZF9maWxlcyhbImFwcHMvY3N0YXRzL3RlbXBsYXRlcyIsICJhcHBzL2NzdGF0cy9pbWciLCAiYXBwcy9jc3RhdHMvc3RhdGljIl0pLAotICAgICAgICAgICAgICAgICAgInNkbmNvbi5hcHBzLmxvZ3MiOiBmaW5kX2ZpbGVzKFsiYXBwcy9sb2dzL3RlbXBsYXRlcyIsICJhcHBzL2xvZ3MvaW1nIiwgImFwcHMvbG9ncy9zdGF0aWMiXSksCi0gICAgICAgICAgICAgICAgICAic2RuY29uLmFwcHMuZG9jcyI6IGZpbmRfZmlsZXMoWyJhcHBzL2RvY3MvdGVtcGxhdGVzIiwgImFwcHMvZG9jcy9zdGF0aWMiXSksCi0gICAgICAgICAgICAgICAgICB9LAotICAgIHRlc3Rfc3VpdGU9ICJzZG5jb24ucnVudGVzdHMucnVudGVzdHNfc21va2UiIGlmIHdhbnRfc21va2UgXAotICAgICAgICAgICAgICAgICAgICBlbHNlICJzZG5jb24ucnVudGVzdHMucnVudGVzdHMiCi0gICAgKQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9zdGF0ZHJvcGQvX19pbml0X18ucHkgYi9jbGkvc2RuY29uL3N0YXRkcm9wZC9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWFiMjc4My4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3N0YXRkcm9wZC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3N0YXRkcm9wZC9tb2RlbHMucHkgYi9jbGkvc2RuY29uL3N0YXRkcm9wZC9tb2RlbHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDBlOTM0OTAuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9zdGF0ZHJvcGQvbW9kZWxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gZGphbmdvLmRiIGltcG9ydCBtb2RlbHMKLSIiIgotIyBDcmVhdGUgeW91ciBtb2RlbHMgaGVyZS4KLWNsYXNzIFN0YXRkcm9wZENvbmZpZyhtb2RlbHMuTW9kZWwpOgotICAgIAotICAgICMgaWQgaXMgc2V0IHRvIHRoZSBsb2NhbCBjbHVzdGVyIGlkLgotICAgIGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgcHJpbWFyeV9rZXk9VHJ1ZSwKLSAgICAgICAgbWF4X2xlbmd0aD0xMjgpCi0KLSAgICAjIEVuYWJsZSBkcm9wcGluZyBsb2NhbCBkYXRhCi0gICAgZW5hYmxlZCA9IG1vZGVscy5Cb29sZWFuRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRW5hYmxlZCcsCi0gICAgICAgIGhlbHBfdGV4dD0nSXMgZHJvcHBpbmcgbG9jYWwgZGF0YSBlbmFibGVkLicsCi0gICAgICAgIGRlZmF1bHQ9VHJ1ZSkKLQotICAgICMgTG9nIGxldmVsIGZvciB0aGUgc3RhdGRyb3BkIGRhZW1vbiBwcm9jZXNzCi0gICAgbG9nX2xldmVsID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgbWF4X2xlbmd0aD0zMiwKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdMb2cgTGV2ZWwnLAotICAgICAgICBoZWxwX3RleHQ9J0xvZyBsZXZlbCBmb3IgdGhlIHN0YXRkcm9wZCBkYWVtb24gcHJvY2VzcycsCi0gICAgICAgIGRlZmF1bHQ9J3dhcm5pbmcnKQotICAgIAotICAgIHBlcmlvZCA9IG1vZGVscy5Qb3NpdGl2ZUludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdQZXJpb2QnLAotICAgICAgICBoZWxwX3RleHQ9J0hvdyBvZnRlbiAoaW4gc2Vjb25kcykgdG8gZHJvcCBsb2NhbCBzdGF0cy9sb2cgZGF0YScsCi0gICAgICAgIGRlZmF1bHQ9NjAwKQotICAgIAotICAgICNyZXRhaW5fc3luY2VkX2RhdGFfZHVyYXRpb24gPSBtb2RlbHMuUG9zaXRpdmVJbnRlZ2VyRmllbGQoCi0gICAgIyAgICB2ZXJib3NlX25hbWU9J1JldGFpbiBTeW5jZWQgRGF0YScsCi0gICAgIyAgICBoZWxwX3RleHQ9IkhvdyBsb25nIHNob3VsZCBkYXRhIHRoYXQncyBiZWVuIHN5bmNlZCB0byB0aGUgY2xvdWQgYmUgcmV0YWluZWQgbG9jYWxseSIsCi0gICAgIyAgICBkZWZhdWx0PTYwNDgwMCkKLSAgICAKLSAgICByZXRhaW5fZGF0YV9kdXJhdGlvbiA9IG1vZGVscy5Qb3NpdGl2ZUludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdSZXRhaW4gRGF0YSBEdXJhdGlvbicsCi0gICAgICAgIGhlbHBfdGV4dD0iSG93IGxvbmcgc2hvdWxkIGRhdGEgYmUgcmV0YWluZWQgbG9jYWxseSIsCi0gICAgICAgIGRlZmF1bHQ9NjA0ODAwKQotICAgIAotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAnc3RhdGRyb3BkLWNvbmZpZycKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICdsb2dfbGV2ZWwnLCAncmVzdF9uYW1lJzogJ2xvZy1sZXZlbCd9LAotICAgICAgICAgICAgI3snbmFtZSc6ICdyZXRhaW5fc3luY2VkX2RhdGFfZHVyYXRpb24nLCAncmVzdF9uYW1lJzogJ3JldGFpbi1zeW5jZWQtZGF0YS1kdXJhdGlvbid9LAotICAgICAgICAgICAgeyduYW1lJzogJ3JldGFpbl9kYXRhX2R1cmF0aW9uJywgJ3Jlc3RfbmFtZSc6ICdyZXRhaW4tZGF0YS1kdXJhdGlvbid9LAotICAgICAgICApCi0KLWNsYXNzIFN0YXRkcm9wZFByb2dyZXNzSW5mbyhtb2RlbHMuTW9kZWwpOgotICAgIAotICAgICMgaWQgdmFsdWUgaXMgPGNvbnRyb2xsZXItbm9kZS1pZD4KLSAgICBpZCA9IG1vZGVscy5DaGFyRmllbGQoCi0gICAgICAgIHByaW1hcnlfa2V5PVRydWUsCi0gICAgICAgIG1heF9sZW5ndGg9MjU2KQotCi0gICAgbGFzdF9kcm9wX3BvaW50ID0gbW9kZWxzLlBvc2l0aXZlSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0xhc3QgRHJvcCBQb2ludCcsCi0gICAgICAgIGhlbHBfdGV4dD0nTGFzdCBwb2ludCB3aGVuIHN0YXRzIGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSBkcm9wcGVkIGZyb20gdGhlIGxvY2FsIGNvbnRyb2xsZXIgbm9kZScpCi0gICAgCi0gICAgY2xhc3MgUmVzdDoKLSAgICAgICAgTkFNRSA9ICdzdGF0ZHJvcGQtcHJvZ3Jlc3MtaW5mbycKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICdsYXN0X2Ryb3BfcG9pbnQnLCAncmVzdF9uYW1lJzogJ2xhc3QtZHJvcC1wb2ludCd9LAotICAgICAgICApCi0iIiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3N0YXRkcm9wZC90ZXN0cy5weSBiL2NsaS9zZG5jb24vc3RhdGRyb3BkL3Rlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2YmVmOTk0Li4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vc3RhdGRyb3BkL3Rlc3RzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gZGphbmdvLnRlc3QgaW1wb3J0IFRlc3RDYXNlCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3N0YXRkcm9wZC92aWV3cy5weSBiL2NsaS9zZG5jb24vc3RhdGRyb3BkL3ZpZXdzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YWIyNzgzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vc3RhdGRyb3BkL3ZpZXdzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vc3RhdHMvX19pbml0X18ucHkgYi9jbGkvc2RuY29uL3N0YXRzL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YWIyNzgzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vc3RhdHMvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9zdGF0cy9kYXRhLnB5IGIvY2xpL3NkbmNvbi9zdGF0cy9kYXRhLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyNjg0MjJjLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vc3RhdHMvZGF0YS5weQorKysgL2Rldi9udWxsCkBAIC0xLDExNjAgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gY2Fzc2FuZHJhLnR0eXBlcyBpbXBvcnQgS3NEZWYsIENmRGVmLCBJbnZhbGlkUmVxdWVzdEV4Y2VwdGlvbiwgVFRyYW5zcG9ydCwgXAotICAgIFNsaWNlUHJlZGljYXRlLCBTbGljZVJhbmdlLCBDb2x1bW5QYXJlbnQsIENvbnNpc3RlbmN5TGV2ZWwsIENvbHVtblBhdGgsIFwKLSAgICBNdXRhdGlvbiwgRGVsZXRpb24sIEtleVJhbmdlLCBDb2x1bW4sIENvbHVtbk9yU3VwZXJDb2x1bW4sIFN1cGVyQ29sdW1uCi1mcm9tIGRqYW5nby5jb25mIGltcG9ydCBzZXR0aW5ncwotZnJvbSAudXRpbHMgaW1wb3J0IENhc3NhbmRyYUNvbm5lY3Rpb24KLWltcG9ydCByYW5kb20KLWltcG9ydCBkYXRldGltZQotaW1wb3J0IHRpbWUKLWZyb20gc2RuY29uLmNvbnRyb2xsZXIuY29uZmlnIGltcG9ydCBnZXRfbG9jYWxfY29udHJvbGxlcl9pZAotCi1DT05UUk9MTEVSX1NUQVRTX05BTUUgPSAnY29udHJvbGxlcicKLVNXSVRDSF9TVEFUU19OQU1FID0gJ3N3aXRjaCcKLVBPUlRfU1RBVFNfTkFNRSA9ICdwb3J0JwotVEFSR0VUX0lOREVYX05BTUUgPSAndGFyZ2V0X2luZGV4JwotU1RBVFNfVFlQRV9JTkRFWF9OQU1FID0gJ3N0YXRzX3R5cGVfaW5kZXgnCi0KLVNUQVRTX0NPTFVNTl9GQU1JTFlfTkFNRV9TVUZGSVggPSAnX3N0YXRzJwotU1RBVFNfVEFSR0VUX1RZUEVfUFVUX0RBVEFfU1VGRklYID0gJy1zdGF0cycKLQotU1RBVFNfQlVDS0VUX1BFUklPRCA9IDYwKjYwKjI0KjEwMDAgICAgIyAxIGRheSBpbiBtaWxsaXNlY29uZHMKLVNUQVRTX1BBRERFRF9DT0xVTU5fVElNRV9MRU5HVEggPSBsZW4oc3RyKFNUQVRTX0JVQ0tFVF9QRVJJT0QpKQotCi1FVkVOVFNfQ09MVU1OX0ZBTUlMWV9OQU1FID0gJ2V2ZW50cycKLUVWRU5UU19CVUNLRVRfUEVSSU9EID0gNjAqNjAqMjQqMTAwMCAgICAjIDEgZGF5IGluIG1pbGxpc2Vjb25kcwotRVZFTlRTX1BBRERFRF9DT0xVTU5fVElNRV9MRU5HVEggPSBsZW4oc3RyKEVWRU5UU19CVUNLRVRfUEVSSU9EKSkKLQotVEhJUlRZX1NFQ09ORF9JTlRFUlZBTCA9IDMwICogMTAwMAotT05FX01JTlVURV9JTlRFUlZBTCA9IDYwICogMTAwMAotRklWRV9NSU5VVEVfSU5URVJWQUwgPSA1ICogT05FX01JTlVURV9JTlRFUlZBTAotVEVOX01JTlVURV9JTlRFUlZBTCA9IDEwICogT05FX01JTlVURV9JTlRFUlZBTAotT05FX0hPVVJfSU5URVJWQUwgPSA2MCAqIE9ORV9NSU5VVEVfSU5URVJWQUwKLUZPVVJfSE9VUl9JTlRFUlZBTCA9IDQgKiBPTkVfSE9VUl9JTlRFUlZBTAotT05FX0RBWV9JTlRFUlZBTCA9IDI0ICogT05FX0hPVVJfSU5URVJWQUwKLU9ORV9XRUVLX0lOVEVSVkFMID0gNyAqIE9ORV9EQVlfSU5URVJWQUwKLUZPVVJfV0VFS19JTlRFUlZBTCA9IDQgKiBPTkVfV0VFS19JTlRFUlZBTAotCi1ET1dOU0FNUExFX0lOVEVSVkFMUyA9IChPTkVfTUlOVVRFX0lOVEVSVkFMLCBURU5fTUlOVVRFX0lOVEVSVkFMLAotICAgICAgICAgICAgICAgICAgICAgICAgT05FX0hPVVJfSU5URVJWQUwsIEZPVVJfSE9VUl9JTlRFUlZBTCwKLSAgICAgICAgICAgICAgICAgICAgICAgIE9ORV9EQVlfSU5URVJWQUwsIE9ORV9XRUVLX0lOVEVSVkFMLAotICAgICAgICAgICAgICAgICAgICAgICAgRk9VUl9XRUVLX0lOVEVSVkFMKQotCi1XSU5ET1dfSU5URVJWQUxTID0gKFRISVJUWV9TRUNPTkRfSU5URVJWQUwsIE9ORV9NSU5VVEVfSU5URVJWQUwsCi0gICAgICAgICAgICAgICAgICAgIEZJVkVfTUlOVVRFX0lOVEVSVkFMLCBURU5fTUlOVVRFX0lOVEVSVkFMKQotCi1WQUxVRV9EQVRBX0ZPUk1BVCA9ICd2YWx1ZScKLVJBVEVfREFUQV9GT1JNQVQgPSAncmF0ZScKLQotCi1jbGFzcyBTdGF0c0V4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1jbGFzcyBTdGF0c0ludmFsaWRTdGF0c0RhdGFFeGNlcHRpb24oU3RhdHNFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoU3RhdHNJbnZhbGlkU3RhdHNEYXRhRXhjZXB0aW9uLHNlbGYpLl9faW5pdF9fKAotICAgICAgICAgICAgJ0Vycm9yIGFkZGluZyBzdGF0cyBkYXRhIHdpdGggaW5jb3JyZWN0IGZvcm1hdCcpCi0KLQotY2xhc3MgU3RhdHNEYXRhYmFzZUNvbm5lY3Rpb25FeGNlcHRpb24oU3RhdHNFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoU3RhdHNEYXRhYmFzZUNvbm5lY3Rpb25FeGNlcHRpb24sc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnRXJyb3IgY29ubmVjdGluZyB0byBzdGF0cyBkYXRhYmFzZScpCi0KLQotY2xhc3MgU3RhdHNEYXRhYmFzZUFjY2Vzc0V4Y2VwdGlvbihTdGF0c0V4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBlcihTdGF0c0RhdGFiYXNlQWNjZXNzRXhjZXB0aW9uLHNlbGYpLl9faW5pdF9fKAotICAgICAgICAgICAgJ0Vycm9yIGFjY2Vzc2luZyBzdGF0cyBkYXRhYmFzZScpCi0gIAotY2xhc3MgU3RhdHNOb25udW1lcmljVmFsdWVFeGNlcHRpb24oU3RhdHNFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHN1cGVyKFN0YXRzTm9ubnVtZXJpY1ZhbHVlRXhjZXB0aW9uLHNlbGYpLl9faW5pdF9fKAotICAgICAgICAgICAgJ0ludmFsaWQgbm9uLW51bWVyaWMgc3RhdCB2YWx1ZSBmb3IgcmF0ZSBvciAnCi0gICAgICAgICAgICAnYXZlcmFnZSB2YWx1ZSBjb21wdXRhdGlvbjogJyArIHN0cih2YWx1ZSkpCi0KLQotY2xhc3MgU3RhdHNSYXRlQ29tcHV0YXRpb25FeGNlcHRpb24oU3RhdHNFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoU3RhdHNSYXRlQ29tcHV0YXRpb25FeGNlcHRpb24sc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnRXJyb3IgY29tcHV0aW5nIHJhdGU7IG5vdCBlbm91Z2ggcmF3IGRhdGEnKQotCi0KLWNsYXNzIFN0YXRzSW52YWxpZERhdGFGb3JtYXRFeGNlcHRpb24oU3RhdHNFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhX2Zvcm1hdCk6Ci0gICAgICAgIHN1cGVyKFN0YXRzSW52YWxpZERhdGFGb3JtYXRFeGNlcHRpb24sc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnSW52YWxpZCBkYXRhIGZvcm1hdDogJyArIHN0cihkYXRhX2Zvcm1hdCkpCi0KLQotY2xhc3MgU3RhdHNJbnZhbGlkU3RhdHNUaW1lUmFuZ2VFeGNlcHRpb24oU3RhdHNFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydF90aW1lLCBlbmRfdGltZSk6Ci0gICAgICAgIHN1cGVyKFN0YXRzSW52YWxpZFN0YXRzVGltZVJhbmdlRXhjZXB0aW9uLHNlbGYpLl9faW5pdF9fKAotICAgICAgICAgICAgJ0ludmFsaWQgc3RhdHMgdGltZSByYW5nZTsgc3RhcnQgPSAlczsgZW5kID0gJXMnICUKLSAgICAgICAgICAgIChzdHIoc3RhcnRfdGltZSksIHN0cihlbmRfdGltZSkpKQotCi0KLWNsYXNzIFN0YXRzSW52YWxpZFN0YXRzVHlwZUV4Y2VwdGlvbihTdGF0c0V4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXRzX3R5cGUpOgotICAgICAgICBzdXBlcihTdGF0c0ludmFsaWRTdGF0c1R5cGVFeGNlcHRpb24sc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnSW52YWxpZCBzdGF0cyB0eXBlOyBuYW1lID0gJXMnICUgc3RyKHN0YXRzX3R5cGUpKQotCi0KLWNsYXNzIFN0YXRzSW52YWxpZFN0YXRzTWV0YWRhdGFFeGNlcHRpb24oU3RhdHNFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX25hbWUpOgotICAgICAgICBzdXBlcihTdGF0c0ludmFsaWRTdGF0c01ldGFkYXRhRXhjZXB0aW9uLHNlbGYpLl9faW5pdF9fKAotICAgICAgICAgICAgJ0ludmFsaWQgc3RhdHMgbWV0YWRhdGEgZnJvbSBmaWxlIFwiJXNcIicgJSBzdHIoZmlsZV9uYW1lKSkKLQotCi1jbGFzcyBTdGF0c0ludGVybmFsRXhjZXB0aW9uKFN0YXRzRXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHN1cGVyKFN0YXRzSW50ZXJuYWxFeGNlcHRpb24sc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnU3RhdHMgaW50ZXJuYWwgZXJyb3I6IFwiJXNcIicgJSBzdHIobWVzc2FnZSkpCi0KLWNsYXNzIFN0YXRzQ3JlYXRlQ29sdW1uRmFtaWx5RXhjZXB0aW9uKFN0YXRzRXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHN1cGVyKFN0YXRzQ3JlYXRlQ29sdW1uRmFtaWx5RXhjZXB0aW9uLHNlbGYpLl9faW5pdF9fKAotICAgICAgICAgICAgJ0Vycm9yIGNyZWF0aW5nIGNvbHVtbiBmYW1pbHk7IG5hbWUgPSAnICUgbmFtZSkKLSAgICAgICAgCi0jIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBhIGhhY2sgdG8gZ2V0IHRoZSBzdGF0cyBjb2RlIHRvIHVzZSBhIGZyZXNobHkKLSMgY3JlYXRlZCB0ZXN0IGtleXNwYWNlIHdoZW4gd2UncmUgcnVubmluZyB0aGUgdW5pdCB0ZXN0cy4gSSdtIGd1ZXNzaW5nCi0jIHRoZXJlIG11c3QgYmUgc29tZSB3YXkgdG8gZGV0ZWN0IGlmIHdlJ3JlIHJ1bm5pbmcgdW5kZXIgdGhlIERqYW5nbwotIyAob3IgUHl0aG9uKSB1bml0IHRlc3QgZnJhbWV3b3JrLCBidXQgSSBjb3VsZG4ndCBmaW5kIGFueSBpbmZvIGFib3V0Ci0jIGhvdyB0byBkbyB0aGF0LiBTbyBmb3Igbm93LCB3ZSBqdXN0IHByb3ZpZGUgdGhpcyBmdW5jdGlvbiB0aGF0IHRoZQotIyB1bml0IHRlc3RzIG11c3QgY2FsbCBiZWZvcmUgdGhleSBtYWtlIGFueSBzdGF0cyBjYWxsIHRvIGdldCB0aGUgc3RhdHMKLSMgY29kZSB0byB1c2UgdGhlIHRlc3Qga2V5c3BhY2UgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIHByb2R1Y3Rpb24KLSMga2V5c3BhY2UuIEJvdGhlci4KLQotdXNlX3Rlc3Rfa2V5c3BhY2UgPSBGYWxzZQotCi1kZWYgc2V0X3VzZV90ZXN0X2tleXNwYWNlKCk6Ci0gICAgZ2xvYmFsIHVzZV90ZXN0X2tleXNwYWNlCi0gICAgdXNlX3Rlc3Rfa2V5c3BhY2UgPSBUcnVlCi0gICAgCi0KLXN0YXRzX2RiX2Nvbm5lY3Rpb24gPSBOb25lCi0KLSMgRklYTUU6IFNob3VsZCBpZGVhbGx5IGNyZWF0ZSB0aGUgY29sdW1uIGZhbWlsaWVzIG9uIGRlbWFuZCBhcyB0aGUgZGF0YQotIyBpcyBhZGRlZCwgc28gdGhlIGRpZmZlcmVudCB0YXJnZXQgdHlwZXMgZG9uJ3QgbmVlZCB0byBiZSBwcmVkZWZpbmVkIGhlcmUuCi0jIFByb2JhYmx5IG5vdCBhIGJpZyBwcm9ibGVtIGZvciByaWdodCBub3csIHRob3VnaC4KLUNPTFVNTl9GQU1JTFlfSU5GT19MSVNUID0gKAotICAgIHsnbmFtZSc6IFRBUkdFVF9JTkRFWF9OQU1FLAotICAgICAnY29sdW1uX3R5cGUnOiAnU3VwZXInLAotICAgICAnY29tcGFyYXRvcl90eXBlJzogJ1VURjhUeXBlJywKLSAgICAgJ3N1YmNvbXBhcmF0b3JfdHlwZSc6ICdVVEY4VHlwZSd9LAotICAgIHsnbmFtZSc6IFNUQVRTX1RZUEVfSU5ERVhfTkFNRSwKLSAgICAgJ2NvbHVtbl90eXBlJzogJ1N1cGVyJywKLSAgICAgJ2NvbXBhcmF0b3JfdHlwZSc6ICdVVEY4VHlwZScsCi0gICAgICdzdWJjb21wYXJhdG9yX3R5cGUnOiAnVVRGOFR5cGUnfSwKLSAgICB7J25hbWUnOiBDT05UUk9MTEVSX1NUQVRTX05BTUUgKyBTVEFUU19DT0xVTU5fRkFNSUxZX05BTUVfU1VGRklYLAotICAgICAnY29tcGFyYXRvcl90eXBlJzogJ1VURjhUeXBlJ30sCi0gICAgeyduYW1lJzogU1dJVENIX1NUQVRTX05BTUUgKyBTVEFUU19DT0xVTU5fRkFNSUxZX05BTUVfU1VGRklYLAotICAgICAnY29tcGFyYXRvcl90eXBlJzogJ1VURjhUeXBlJ30sCi0gICAgeyduYW1lJzogUE9SVF9TVEFUU19OQU1FICsgU1RBVFNfQ09MVU1OX0ZBTUlMWV9OQU1FX1NVRkZJWCwKLSAgICAgJ2NvbXBhcmF0b3JfdHlwZSc6ICdVVEY4VHlwZSd9LAotICAgIHsnbmFtZSc6IEVWRU5UU19DT0xVTU5fRkFNSUxZX05BTUUsCi0gICAgICdjb2x1bW5fdHlwZSc6ICdTdXBlcicsCi0gICAgICdjb21wYXJhdG9yX3R5cGUnOiAnVVRGOFR5cGUnLAotICAgICAnc3ViY29tcGFyYXRvcl90eXBlJzogJ1VURjhUeXBlJ30sCi0pCi0gICAgICAgIAotCi1kZWYgaW5pdF9zdGF0c19kYl9jb25uZWN0aW9uKGhvc3QsIHBvcnQsIGtleXNwYWNlLCB1c2VyLCBwYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGljYXRpb25fZmFjdG9yLCBjb2x1bW5fZmFtaWx5X2RlZl9kZWZhdWx0X3NldHRpbmdzKToKLSAgICBnbG9iYWwgc3RhdHNfZGJfY29ubmVjdGlvbgotICAgIGlmIG5vdCBzdGF0c19kYl9jb25uZWN0aW9uOgotICAgICAgICBpZiB1c2VfdGVzdF9rZXlzcGFjZToKLSAgICAgICAgICAgIGtleXNwYWNlID0gInRlc3RfIiArIGtleXNwYWNlCi0gICAgICAgICAgICAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3RhdHNfZGJfY29ubmVjdGlvbiA9IENhc3NhbmRyYUNvbm5lY3Rpb24oaG9zdCwgcG9ydCwga2V5c3BhY2UsIHVzZXIsIHBhc3N3b3JkKQotICAgICAgICAgICAgc3RhdHNfZGJfY29ubmVjdGlvbi5jb25uZWN0KCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHN0YXRzX2RiX2Nvbm5lY3Rpb24gPSBOb25lCi0gICAgICAgICAgICByYWlzZSBTdGF0c0V4Y2VwdGlvbigiRXJyb3IgY29ubmVjdGluZyB0byBDYXNzYW5kcmEgZGFlbW9uIikKLSAgICAgICAgCi0gICAgICAgIGlmIHVzZV90ZXN0X2tleXNwYWNlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN0YXRzX2RiX2Nvbm5lY3Rpb24uZ2V0X2NsaWVudCgpLnN5c3RlbV9kcm9wX2tleXNwYWNlKGtleXNwYWNlKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3RhdHNfZGJfY29ubmVjdGlvbi5zZXRfa2V5c3BhY2UoKQotICAgICAgICAgICAgY3JlYXRlX2tleXNwYWNlID0gRmFsc2UKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGNyZWF0ZV9rZXlzcGFjZSA9IFRydWUKLSAgICAgICAgCi0gICAgICAgIGlmIGNyZWF0ZV9rZXlzcGFjZToKLSAgICAgICAgICAgIGtleXNwYWNlX2RlZiA9IEtzRGVmKG5hbWU9a2V5c3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJhdGVneV9jbGFzcz0nb3JnLmFwYWNoZS5jYXNzYW5kcmEubG9jYXRvci5TaW1wbGVTdHJhdGVneScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsaWNhdGlvbl9mYWN0b3I9cmVwbGljYXRpb25fZmFjdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZfZGVmcz1bXSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzdGF0c19kYl9jb25uZWN0aW9uLmdldF9jbGllbnQoKS5zeXN0ZW1fYWRkX2tleXNwYWNlKGtleXNwYWNlX2RlZikKLSAgICAgICAgICAgICAgICBzdGF0c19kYl9jb25uZWN0aW9uLnNldF9rZXlzcGFjZSgpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBfZToKLSAgICAgICAgICAgICAgICBzdGF0c19kYl9jb25uZWN0aW9uID0gTm9uZQotICAgICAgICAgICAgICAgIHJhaXNlIFN0YXRzRXhjZXB0aW9uKCJFcnJvciBjcmVhdGluZyBzdGF0cyBrZXlzcGFjZSIpCi0gICAgICAgIAotICAgICAgICBmb3IgY29sdW1uX2ZhbWlseV9pbmZvIGluIENPTFVNTl9GQU1JTFlfSU5GT19MSVNUOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvbHVtbl9mYW1pbHlfZGVmX3NldHRpbmdzID0gY29sdW1uX2ZhbWlseV9kZWZfZGVmYXVsdF9zZXR0aW5ncy5jb3B5KCkKLSAgICAgICAgICAgICAgICBjb2x1bW5fZmFtaWx5X2RlZl9zZXR0aW5ncy51cGRhdGUoY29sdW1uX2ZhbWlseV9pbmZvKQotICAgICAgICAgICAgICAgIGNvbHVtbl9mYW1pbHlfZGVmX3NldHRpbmdzWydrZXlzcGFjZSddID0ga2V5c3BhY2UKLSAgICAgICAgICAgICAgICAjIHB5bGludDogZGlzYWJsZT1XMDE0MgotICAgICAgICAgICAgICAgIHN0YXRzX2RiX2Nvbm5lY3Rpb24uZ2V0X2NsaWVudCgpLnN5c3RlbV9hZGRfY29sdW1uX2ZhbWlseSgKLSAgICAgICAgICAgICAgICAgICAgQ2ZEZWYoKipjb2x1bW5fZmFtaWx5X2RlZl9zZXR0aW5ncykpCi0gICAgICAgICAgICBleGNlcHQgSW52YWxpZFJlcXVlc3RFeGNlcHRpb24sIF9lOgotICAgICAgICAgICAgICAgICMgQXNzdW1lIHRoaXMgaXMgYmVjYXVzZSB0aGUgY29sdW1uIGZhbWlseSBhbHJlYWR5IGV4aXN0cy4KLSAgICAgICAgICAgICAgICAjIEZJWE1FLiBDb3VsZCBjaGVjayBleGNlcHRpb24gbWVzc2FnZSBmb3Igc3BlY2lmaWMgc3RyaW5nCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgX2U6Ci0gICAgICAgICAgICAgICAgc3RhdHNfZGJfY29ubmVjdGlvbiA9IE5vbmUKLSAgICAgICAgICAgICAgICByYWlzZSBTdGF0c0NyZWF0ZUNvbHVtbkZhbWlseUV4Y2VwdGlvbihjb2x1bW5fZmFtaWx5X2luZm8uZ2V0KCduYW1lJykpCi0KLQotZGVmIGdldF9zdGF0c19kYl9jb25uZWN0aW9uKCk6Ci0gICAgcmV0dXJuIHN0YXRzX2RiX2Nvbm5lY3Rpb24KLQotCi0jIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMgbWFpbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgYnkgdGhlIHVuaXQgdGVzdHMuIEl0IGxldHMKLSMgeW91IGNsZWFyIG91dCBhbGwgb2YgdGhlIGRhdGEgZnJvbSB0aGUgZGF0YWJhc2UuIE5vdGUgdGhhdCBzaW5jZSB0aGUgc3RhdHMgREIKLSMgaXMgbm90IG1hbmFnZWQgYnkgdGhlIG5vcm1hbCBEamFuZ28gREIgbWVjaGFuaXNtIHlvdSBkb24ndCBnZXQgdGhlIGF1dG9tYXRpYwotIyBEQiBmbHVzaGluZyBmcm9tIHRoZSBEamFuZ28gVGVzdENhc2UgY29kZSwgc28gaXQgaGFzIHRvIGJlIGRvbmUgZXhwbGljaXRseS4KLSMgVGhlcmUncyBhIFN0YXRzVGVzdENhc2Ugc3ViY2xhc3Mgb2YgVGVzdENhc2UgaW4gdGhlIHN0YXRzIHVuaXQgdGVzdHMgdGhhdAotIyBpbXBsZW1lbnRzIHRoZSB0ZWFyRG93biBtZXRob2QgdG8gY2FsbCBmbHVzaF9zdGF0c19kYiBhZnRlciBlYWNoIHRlc3QuCi1kZWYgZmx1c2hfc3RhdHNfZGIoKToKLSAgICBpZiBzdGF0c19kYl9jb25uZWN0aW9uIGlzIG5vdCBOb25lOgotICAgICAgICBmb3IgY29sdW1uX2ZhbWlseV9pbmZvIGluIENPTFVNTl9GQU1JTFlfSU5GT19MSVNUOgotICAgICAgICAgICAgc3RhdHNfZGJfY29ubmVjdGlvbi5nZXRfY2xpZW50KCkudHJ1bmNhdGUoY29sdW1uX2ZhbWlseV9pbmZvWyduYW1lJ10pCi0KLWRlZiBjYWxsX2Nhc3NhbmRyYV93aXRoX3JlY29ubmVjdChmbiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICB0cnk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdHMgPSBmbigqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGV4Y2VwdCBUVHJhbnNwb3J0LlRUcmFuc3BvcnRFeGNlcHRpb246Ci0gICAgICAgICAgICBzdGF0c19kYl9jb25uZWN0aW9uLnJlY29ubmVjdCgpCi0gICAgICAgICAgICByZXN1bHRzID0gZm4oKmFyZ3MsICoqa3dhcmdzKQotICAgIGV4Y2VwdCBUVHJhbnNwb3J0LlRUcmFuc3BvcnRFeGNlcHRpb24sIF9lOgotICAgICAgICByYWlzZSBTdGF0c0RhdGFiYXNlQ29ubmVjdGlvbkV4Y2VwdGlvbigpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgX2U6Ci0gICAgICAgIHJhaXNlIFN0YXRzRGF0YWJhc2VBY2Nlc3NFeGNlcHRpb24oKQotCi0gICAgcmV0dXJuIHJlc3VsdHMKLQotCi1kZWYgZ2V0X3N0YXRzX3BhZGRlZF9jb2x1bW5fcGFydChjb2x1bW5fcGFydCk6Ci0gICAgIiIiCi0gICAgRm9yIHRoZSBjb2x1bW5zIHRvIGJlIHNvcnRlZCBjb3JyZWN0bHkgYnkgdGltZSB3ZSBuZWVkIHRvIHBhZCB3aXRoCi0gICAgbGVhZGluZyB6ZXJvZXMgdXAgdG8gdGhlIG1heGltdW0gcmFuZ2Ugb2YgdGhlIGJ1Y2tldAotICAgICIiIgotICAgIGNvbHVtbl9wYXJ0ID0gc3RyKGNvbHVtbl9wYXJ0KQotICAgIGxlYWRpbmdfemVyb2VzID0gKCcwJyooU1RBVFNfUEFEREVEX0NPTFVNTl9USU1FX0xFTkdUSC1sZW4oY29sdW1uX3BhcnQpKSkKLSAgICBjb2x1bW5fcGFydCA9IGxlYWRpbmdfemVyb2VzICsgY29sdW1uX3BhcnQKLSAgICByZXR1cm4gY29sdW1uX3BhcnQKLQotCi1kZWYgc3BsaXRfc3RhdHNfdGltZXN0YW1wKHRpbWVzdGFtcCk6Ci0gICAga2V5X3BhcnQgPSB0aW1lc3RhbXAgLyBTVEFUU19CVUNLRVRfUEVSSU9ECi0gICAgY29sdW1uX3BhcnQgPSB0aW1lc3RhbXAgJSBTVEFUU19CVUNLRVRfUEVSSU9ECi0gICAgcmV0dXJuIChrZXlfcGFydCwgY29sdW1uX3BhcnQpCi0KLQotZGVmIGNvbnN0cnVjdF9zdGF0c19rZXkoY2x1c3RlciwgdGFyZ2V0X2lkLCBzdGF0c190eXBlLCB0aW1lc3RhbXBfa2V5X3BhcnQpOgotICAgICIiIgotICAgIENvbnN0cnVjdHMgdGhlIGtleXMgZm9yIHRoZSBjb250cm9sbGVyIG9yIHN3aXRjaCBzdGF0cy4KLSAgICBGb3IgdGhlIGNvbnRyb2xsZXIgc3RhdHMgdGhlIHRhcmdldF9pZCBpcyB0aGUgY29udHJvbGxlciBub2RlIGlkLgotICAgIEZvciBzd2l0Y2ggc3RhdHMgdGhlIHRhcmdldF9pZCBpcyB0aGUgZHBpZCBvZiB0aGUgc3dpdGNoLgotICAgICIiIgotICAgIHJldHVybiBjbHVzdGVyICsgJ3wnICsgdGFyZ2V0X2lkICsgJ3wnICsgc3RhdHNfdHlwZSArICd8JyArIHN0cih0aW1lc3RhbXBfa2V5X3BhcnQpCi0KLQotZGVmIGFwcGVuZF9zdGF0c19yZXN1bHRzKGdldF9yZXN1bHRzLCB2YWx1ZXMsIHRpbWVzdGFtcF9rZXlfcGFydCk6Ci0gICAgc2hpZnRlZF90aW1lc3RhbXBfa2V5X3BhcnQgPSBpbnQodGltZXN0YW1wX2tleV9wYXJ0KSAqIFNUQVRTX0JVQ0tFVF9QRVJJT0QKLSAgICBmb3IgaXRlbSBpbiBnZXRfcmVzdWx0czoKLSAgICAgICAgdGltZXN0YW1wX2NvbHVtbl9wYXJ0ID0gaW50KGl0ZW0uY29sdW1uLm5hbWUpCi0gICAgICAgIHZhbHVlID0gaXRlbS5jb2x1bW4udmFsdWUKLSAgICAgICAgdGltZXN0YW1wID0gc2hpZnRlZF90aW1lc3RhbXBfa2V5X3BhcnQgKyB0aW1lc3RhbXBfY29sdW1uX3BhcnQKLSAgICAgICAgdmFsdWVzLmFwcGVuZCgodGltZXN0YW1wLCB2YWx1ZSkpCi0KLQotZGVmIGdldF9zdGF0c19zbGljZV9wcmVkaWNhdGUoY29sdW1uX3N0YXJ0LCBjb2x1bW5fZW5kKToKLSAgICBpZiBjb2x1bW5fc3RhcnQgIT0gJyc6Ci0gICAgICAgIGNvbHVtbl9zdGFydCA9IGdldF9zdGF0c19wYWRkZWRfY29sdW1uX3BhcnQoY29sdW1uX3N0YXJ0KQotICAgIGlmIGNvbHVtbl9lbmQgIT0gJyc6Ci0gICAgICAgIGNvbHVtbl9lbmQgPSBnZXRfc3RhdHNfcGFkZGVkX2NvbHVtbl9wYXJ0KGNvbHVtbl9lbmQpCi0gICAgc2xpY2VfcHJlZGljYXRlID0gU2xpY2VQcmVkaWNhdGUoc2xpY2VfcmFuZ2U9U2xpY2VSYW5nZSgKLSAgICAgICAgc3RhcnQ9Y29sdW1uX3N0YXJ0LCBmaW5pc2g9Y29sdW1uX2VuZCwgY291bnQ9MTAwMDAwMCkpCi0gICAgcmV0dXJuIHNsaWNlX3ByZWRpY2F0ZQotCi0KLWRlZiBjaGVja190aW1lX3JhbmdlKHN0YXJ0X3RpbWUsIGVuZF90aW1lKToKLSAgICBpZiBpbnQoZW5kX3RpbWUpIDwgaW50KHN0YXJ0X3RpbWUpOgotICAgICAgICByYWlzZSBTdGF0c0ludmFsaWRTdGF0c1RpbWVSYW5nZUV4Y2VwdGlvbihzdGFydF90aW1lLCBlbmRfdGltZSkKLSAgICAKLSAgICAKLWRlZiBjaGVja192YWxpZF9kYXRhX2Zvcm1hdChkYXRhX2Zvcm1hdCk6Ci0gICAgaWYgZGF0YV9mb3JtYXQgIT0gVkFMVUVfREFUQV9GT1JNQVQgYW5kIGRhdGFfZm9ybWF0ICE9IFJBVEVfREFUQV9GT1JNQVQ6Ci0gICAgICAgIHJhaXNlIFN0YXRzSW52YWxpZERhdGFGb3JtYXRFeGNlcHRpb24oZGF0YV9mb3JtYXQpCi0KLQotZGVmIGdldF93aW5kb3dfcmFuZ2UocmF3X3N0YXRzX3ZhbHVlcywgaW5kZXgsIHdpbmRvdyk6Ci0KLSAgICBpZiB3aW5kb3cgPT0gMDoKLSAgICAgICAgcmV0dXJuIChpbmRleCwgaW5kZXgpCi0gICAgCi0gICAgIyBHZXQgc3RhcnQgaW5kZXgKLSAgICB0aW1lc3RhbXAgPSByYXdfc3RhdHNfdmFsdWVzW2luZGV4XVswXQotICAgIHN0YXJ0X3RpbWVzdGFtcCA9IHRpbWVzdGFtcCAtICh3aW5kb3cgLyAyKQotICAgIGVuZF90aW1lc3RhbXAgPSB0aW1lc3RhbXAgKyAod2luZG93IC8gMikKLSAgICAKLSAgICBzdGFydF9pbmRleCA9IGluZGV4Ci0gICAgd2hpbGUgc3RhcnRfaW5kZXggPiAwOgotICAgICAgICBuZXh0X3RpbWVzdGFtcCA9IHJhd19zdGF0c192YWx1ZXNbc3RhcnRfaW5kZXggLSAxXVswXQotICAgICAgICBpZiBuZXh0X3RpbWVzdGFtcCA8IHN0YXJ0X3RpbWVzdGFtcDoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHN0YXJ0X2luZGV4IC09IDEKLSAgICAKLSAgICBlbmRfaW5kZXggPSBpbmRleAotICAgIHdoaWxlIGVuZF9pbmRleCA8IGxlbihyYXdfc3RhdHNfdmFsdWVzKSAtIDE6Ci0gICAgICAgIG5leHRfdGltZXN0YW1wID0gcmF3X3N0YXRzX3ZhbHVlc1tlbmRfaW5kZXggKyAxXVswXQotICAgICAgICBpZiBuZXh0X3RpbWVzdGFtcCA+IGVuZF90aW1lc3RhbXA6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBlbmRfaW5kZXggKz0gMQotICAgICAgICAKLSAgICByZXR1cm4gKHN0YXJ0X2luZGV4LCBlbmRfaW5kZXgpCi0KLQotZGVmIGNvbnZlcnRfc3RhdF9zdHJpbmdfdG9fdmFsdWUoc3RhdF9zdHJpbmcpOgotICAgIHRyeToKLSAgICAgICAgc3RhdF92YWx1ZSA9IGludChzdGF0X3N0cmluZykKLSAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3RhdF92YWx1ZSA9IGZsb2F0KHN0YXRfc3RyaW5nKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHN0YXRfdmFsdWUgPSBzdGF0X3N0cmluZwotICAgIHJldHVybiBzdGF0X3ZhbHVlCi0KLQotZGVmIGdldF9yYXRlX292ZXJfc3RhdHNfdmFsdWVzKHN0YXRzX3ZhbHVlcyk6Ci0gICAgCi0gICAgaWYgbGVuKHN0YXRzX3ZhbHVlcykgPCAyOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIAotICAgIHN0YXJ0X3N0YXQgPSBzdGF0c192YWx1ZXNbMF0KLSAgICBlbmRfc3RhdCA9IHN0YXRzX3ZhbHVlc1stMV0KLSAgICAKLSAgICB0aW1lc3RhbXBfZGVsdGEgPSBlbmRfc3RhdFswXSAtIHN0YXJ0X3N0YXRbMF0KLSAgICAjIE5PVEU6IEluIGNvbXB1dGluZyB0aGUgdmFsdWVfZGVsdGEgaGVyZSBpdCdzIHNhZmUgdG8gYXNzdW1lIGZsb2F0cwotICAgICMgcmF0aGVyIHRoYW4gY2FsbGluZyBjb252ZXJ0X3N0YXRfc3RyaW5nX3RvX3ZhbHVlIGJlY2F1c2Ugd2UncmUgZ29pbmcKLSAgICAjIHRvIGJlIGNvbnZlcnRpbmcgdG8gZmxvYXQgYW55d2F5IHdoZW4gd2UgZG8gdGhlIHJhdGUgY2FsY3VsYXRpb24gbGF0ZXIuCi0gICAgIyBTbyB0aGVyZSdzIG5vIHBvaW50IGluIHRyeWluZyB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gaW50IGFuZCBmbG9hdAotICAgICMgYW5kIHJhdGUgZG9lc24ndCBtYWtlIHNlbnNlIGZvciBhbnkgb3RoZXIgdHlwZSBvZiBzdGF0IGRhdGEgKGUuZy4gc3RyaW5nKQotICAgIHZhbHVlX2RlbHRhID0gZmxvYXQoZW5kX3N0YXRbMV0pIC0gZmxvYXQoc3RhcnRfc3RhdFsxXSkKLSAgICBpZiB0aW1lc3RhbXBfZGVsdGEgPT0gMDoKLSAgICAgICAgcmF0ZSA9IGZsb2F0KCdpbmYnIGlmIHZhbHVlX2RlbHRhID4gMCAgZWxzZSAnLWluZicpCi0gICAgZWxzZToKLSAgICAgICAgcmF0ZSA9IHZhbHVlX2RlbHRhIC8gdGltZXN0YW1wX2RlbHRhCi0gICAgCi0gICAgcmV0dXJuIHJhdGUKLQotCi1kZWYgZ2V0X3JhdGVfb3Zlcl93aW5kb3cocmF3X3N0YXRzX3ZhbHVlcywgaW5kZXgsIHdpbmRvdyk6Ci0gICAgaWYgbGVuKHJhd19zdGF0c192YWx1ZXMpIDwgMjoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAKLSAgICBpZiB3aW5kb3cgPT0gMDoKLSAgICAgICAgaWYgaW5kZXggPT0gMDoKLSAgICAgICAgICAgIHN0YXJ0X2luZGV4ID0gMAotICAgICAgICAgICAgZW5kX2luZGV4ID0gMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3RhcnRfaW5kZXggPSBpbmRleCAtIDEKLSAgICAgICAgICAgIGVuZF9pbmRleCA9IGluZGV4Ci0gICAgZWxzZToKLSAgICAgICAgc3RhcnRfaW5kZXgsIGVuZF9pbmRleCA9IGdldF93aW5kb3dfcmFuZ2UocmF3X3N0YXRzX3ZhbHVlcywgaW5kZXgsIHdpbmRvdykKLSAgICAKLSAgICByZXR1cm4gZ2V0X3JhdGVfb3Zlcl9zdGF0c192YWx1ZXMocmF3X3N0YXRzX3ZhbHVlc1tzdGFydF9pbmRleDplbmRfaW5kZXggKyAxXSkKLQotCi1kZWYgZ2V0X2F2ZXJhZ2Vfb3Zlcl9zdGF0c192YWx1ZXMoc3RhdHNfdmFsdWVzKToKLSAgICAKLSAgICB0b3RhbCA9IDAKLSAgICBjb3VudCA9IDAKLSAgICBmb3Igc3RhdF92YWx1ZSBpbiBzdGF0c192YWx1ZXM6Ci0gICAgICAgICMgRklYTUU6IFNob3VsZCB3ZSBqdXN0IGFsd2F5cyBjb252ZXJ0IHRvIGZsb2F0IGhlcmU/Ci0gICAgICAgICMgVGhpcyB3b3VsZCBnaXZlIGEgbW9yZSBhY2N1cmF0ZSByZXN1bHQgZm9yIHRoZSBhdmVyYWdlIGNhbGN1bGF0aW9uCi0gICAgICAgICMgYnV0IHdvdWxkIG1lYW4gdGhhdCB0aGUgZGF0YSB0eXBlIGlzIGRpZmZlcmVudCBmb3IgYQotICAgICAgICAjIHplcm8gdnMuIG5vbi16ZXJvIHdpbmRvdyBzaXplLgotICAgICAgICB2YWx1ZSA9IGNvbnZlcnRfc3RhdF9zdHJpbmdfdG9fdmFsdWUoc3RhdF92YWx1ZVsxXSkKLSAgICAgICAgaWYgdHlwZSh2YWx1ZSkgbm90IGluIChpbnQsZmxvYXQpOgotICAgICAgICAgICAgcmFpc2UgU3RhdHNOb25udW1lcmljVmFsdWVFeGNlcHRpb24odmFsdWUpCi0gICAgICAgIHRvdGFsICs9IHZhbHVlCi0gICAgICAgIGNvdW50ICs9IDEKLSAgICAKLSAgICByZXR1cm4gKHRvdGFsIC8gY291bnQpIGlmIGNvdW50ID4gMCBlbHNlIE5vbmUKLQotCi1kZWYgZ2V0X2F2ZXJhZ2VfdmFsdWVfb3Zlcl93aW5kb3cocmF3X3N0YXRzX3ZhbHVlcywgaW5kZXgsIHdpbmRvdyk6Ci0gICAgc3RhcnRfaW5kZXgsIGVuZF9pbmRleCA9IGdldF93aW5kb3dfcmFuZ2UocmF3X3N0YXRzX3ZhbHVlcywgaW5kZXgsIHdpbmRvdykKLSAgICBzdGF0c192YWx1ZXMgPSByYXdfc3RhdHNfdmFsdWVzW3N0YXJ0X2luZGV4OmVuZF9pbmRleCArIDFdCi0gICAgcmV0dXJuIGdldF9hdmVyYWdlX292ZXJfc3RhdHNfdmFsdWVzKHN0YXRzX3ZhbHVlcykKLQotCi1kZWYgcmV2ZXJzZV9zdGF0c19kYXRhX2dlbmVyYXRvcihjbHVzdGVyLCB0YXJnZXRfdHlwZSwgdGFyZ2V0X2lkLCBzdGF0c190eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfdGltZT1Ob25lLCBlbmRfdGltZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtfaW50ZXJ2YWw9MzYwMDAwMCk6Ci0gICAgaWYgc3RhcnRfdGltZSBpcyBOb25lOgotICAgICAgICBzdGFydF90aW1lID0gaW50KHRpbWUudGltZSgpICogMTAwMCkKLSAgICBpZiBlbmRfdGltZSBpcyBOb25lOgotICAgICAgICAjIEJ5IGRlZmF1bHQsIGRvbid0IGdvIGJhY2sgcGFzdCAxLzEvMjAxMS4gVGhpcyB3YXMgYmVmb3JlIHdlIGhhZCBzdGF0cyBzdXBwb3J0Ci0gICAgICAgICMgaW4gdGhlIGNvbnRyb2xsZXIsIHNvIHdlIHNob3VsZG4ndCBoYXZlIGFueSBkYXRhIGVhcmxpZXIgdGhhbiB0aGF0IChleGNlcHQgaWYKLSAgICAgICAgIyB0aGUgY2xvY2sgb24gdGhlIGNvbnRyb2xsZXIgd2FzIHNldCBpbmNvcnJlY3RseSkuCi0gICAgICAgIGVuZF90aW1lID0gaW50KHRpbWUubWt0aW1lKGRhdGV0aW1lLmRhdGV0aW1lKDIwMTEsMSwxKS50aW1ldHVwbGUoKSkgKiAxMDAwKQotICAgIGVuZF9rZXlfcGFydCwgX2VuZF9jb2x1bW5fcGFydCA9IHNwbGl0X3N0YXRzX3RpbWVzdGFtcChlbmRfdGltZSkKLSAgICBrZXlfcGFydCwgY29sdW1uX3BhcnQgPSBzcGxpdF9zdGF0c190aW1lc3RhbXAoc3RhcnRfdGltZSkKLSAgICBjb2x1bW5fZmFtaWx5ID0gdGFyZ2V0X3R5cGUgKyBTVEFUU19DT0xVTU5fRkFNSUxZX05BTUVfU1VGRklYCi0gICAgY29sdW1uX3BhcmVudCA9IENvbHVtblBhcmVudChjb2x1bW5fZmFtaWx5KQotICAgICMgRklYTUU6IFNob3VsZCBhZGQgc3VwcG9ydCBmb3IgY2h1bmtfaW50ZXJ2YWwgdG8gYmUgZWl0aGVyIGl0ZXJhYmxlIG9yIGEKLSAgICAjIGxpc3QvdHVwbGUgdG8gZ2l2ZSBhIHNlcXVlbmNlIG9mIGNodW5rIGludGVydmFscyB0byB1c2UuIFRoZSBsYXN0IGF2YWlsYWJsZQotICAgICMgY2h1bmsgaW50ZXJ2YWwgZnJvbSB0aGUgbGlzdC90dXBsZS9pdGVyYXRvciB3b3VsZCB0aGVuIGJlIHVzZWQgZm9yIGFueQotICAgICMgc3Vic2VxdWVudCBjYXNzYW5kcmEgY2FsbHMKLSAgICAjY2h1bmtfaW50ZXJ2YWxfaXRlciA9IChjaHVua19pbnRlcnZhbCBpZiBpc2luc3RhbmNlKGNodW5rX2ludGVydmFsLCBsaXN0KSBvcgotICAgICMgICBpc2luc3RhbmNlKGNodW5rX2ludGVydmFsLCB0dXBsZSkgZWxzZSBbY2h1bmtfaW50ZXJ2YWxdKQotICAgIHdoaWxlIGtleV9wYXJ0ID49IDA6Ci0gICAgICAgIGtleSA9IGNvbnN0cnVjdF9zdGF0c19rZXkoY2x1c3RlciwgdGFyZ2V0X2lkLCBzdGF0c190eXBlLCBrZXlfcGFydCkKLSAgICAgICAgCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjb2x1bW5fc3RhcnQgPSBjb2x1bW5fcGFydCAtIGNodW5rX2ludGVydmFsCi0gICAgICAgICAgICBpZiBjb2x1bW5fc3RhcnQgPCAwOgotICAgICAgICAgICAgICAgIGNvbHVtbl9zdGFydCA9IDAKLSAgICAgICAgICAgIHNsaWNlX3ByZWRpY2F0ZSA9IGdldF9zdGF0c19zbGljZV9wcmVkaWNhdGUoY29sdW1uX3N0YXJ0LCBjb2x1bW5fcGFydCkKLSAgICAgICAgICAgIGZvciBhdHRlbXB0IGluICgxLDIpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZ2V0X3Jlc3VsdHMgPSBzdGF0c19kYl9jb25uZWN0aW9uLmdldF9jbGllbnQoKS5nZXRfc2xpY2Uoa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uX3BhcmVudCwgc2xpY2VfcHJlZGljYXRlLCBDb25zaXN0ZW5jeUxldmVsLk9ORSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gcmV2ZXJzZWQoZ2V0X3Jlc3VsdHMpOgotICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wID0gKGtleV9wYXJ0ICogU1RBVFNfQlVDS0VUX1BFUklPRCkgKyBpbnQoaXRlbS5jb2x1bW4ubmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaXRlbS5jb2x1bW4udmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkICh0aW1lc3RhbXAsIHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4Y2VwdCBUVHJhbnNwb3J0LlRUcmFuc3BvcnRFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICMgT25seSByZXRyeSBvbmNlLCBzbyBpZiBpdCdzIHRoZSBzZWNvbmQgdGltZSB0aHJvdWdoLAotICAgICAgICAgICAgICAgICAgICAjIHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgICAgIGlmIGF0dGVtcHQgPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0YXRzRGF0YWJhc2VDb25uZWN0aW9uRXhjZXB0aW9uKCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHNfZGJfY29ubmVjdGlvbi5yZWNvbm5lY3QoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0YXRzRGF0YWJhc2VBY2Nlc3NFeGNlcHRpb24oKQotCi0gICAgICAgICAgICBjb2x1bW5fcGFydCA9IGNvbHVtbl9zdGFydAotICAgICAgICAgICAgaWYgY29sdW1uX3BhcnQgPT0gMDoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAKLSAgICAgICAgaWYga2V5X3BhcnQgPT0gZW5kX2tleV9wYXJ0OgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAga2V5X3BhcnQgLT0gMQotICAgICAgICBjb2x1bW5fcGFydCA9IFNUQVRTX0JVQ0tFVF9QRVJJT0QgLSAxCi0KLQotZGVmIGdldF9sYXRlc3Rfc3RhdF9kYXRhKGNsdXN0ZXIsIHRhcmdldF90eXBlLCB0YXJnZXRfaWQsIHN0YXRzX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93PTAsIGRhdGFfZm9ybWF0PVZBTFVFX0RBVEFfRk9STUFUKToKLSAgICAKLSAgICBjaGVja192YWxpZF9kYXRhX2Zvcm1hdChkYXRhX2Zvcm1hdCkKLSAgICAKLSAgICBtaW5pbXVtX2RhdGFfcG9pbnRzID0gMiBpZiBkYXRhX2Zvcm1hdCA9PSBSQVRFX0RBVEFfRk9STUFUIGVsc2UgMQotICAgIHN0YXRzX2RhdGFfd2luZG93ID0gW10KLSAgICBsYXRlc3Rfc3RhdF90aW1lc3RhbXAgPSBOb25lCi0gICAgCi0gICAgc3RhcnRfdGltZSA9IGludCh0aW1lLnRpbWUoKSAqIDEwMDApCi0gICAgIyBMaW1pdCBob3cgZmFyIGJhY2sgd2UnbGwgbG9vayBmb3IgdGhlIGxhdGVzdCBzdGF0IHZhbHVlLgotICAgICMgODY0MDAwMDAgaXMgMSBkYXkgaW4gbXMKLSAgICBlbmRfdGltZSA9IHN0YXJ0X3RpbWUgLSA4NjQwMDAwMAotICAgIGZvciBzdGF0X2RhdGFfcG9pbnQgaW4gcmV2ZXJzZV9zdGF0c19kYXRhX2dlbmVyYXRvcihjbHVzdGVyLAotICAgICAgICAgICAgdGFyZ2V0X3R5cGUsIHRhcmdldF9pZCwgc3RhdHNfdHlwZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUpOgotICAgICAgICBjdXJyZW50X3N0YXRfdGltZXN0YW1wID0gc3RhdF9kYXRhX3BvaW50WzBdCi0gICAgICAgIGlmIGxhdGVzdF9zdGF0X3RpbWVzdGFtcCBpcyBOb25lOgotICAgICAgICAgICAgbGF0ZXN0X3N0YXRfdGltZXN0YW1wID0gY3VycmVudF9zdGF0X3RpbWVzdGFtcAotICAgICAgICAKLSAgICAgICAgIyBOT1RFOiBGb3Igc3RhdHMgb3BlcmF0aW9ucyB3ZSB0cmVhdCB0aGUgd2luZG93IGZvciB0aGUgcmF0ZSBvcgotICAgICAgICAjIGF2ZXJhZ2UgY2FsY3VsYXRpb24gdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KLSAgICAgICAgIyBGb3IgdGhlIGxhdGVzdCBzdGF0IGNhc2UgdGhlcmUgaXMgbm8gZGF0YSBhZnRlciB0aGUgY3VycmVudCBwb2ludC4KLSAgICAgICAgIyBXZSBjb3VsZCBleHRlbmQgdGhlIHdpbmRvdyBiYWNrIGZ1cnRoZXIgc28gdGhhdCB0aGUgY3VycmVudCB0aW1lc3RhbXAKLSAgICAgICAgIyBpcyB0aGUgZW5kIG9mIHRoZSB3aW5kb3cgcmFuZ2UgaW5zdGVhZCBvZiB0aGUgbWlkZGxlLCBidXQgdGhlbiB0aGF0Ci0gICAgICAgICMgd291bGQgYmUgaW5jb25zaXN0ZW50IHdpdGggdGhlIG90aGVyIGNhc2VzLCBzbyBpbnN0ZWFkIHdlIGp1c3QgZ28KLSAgICAgICAgIyBiYWNrIHRvIGhhbGYgdGhlIHdpbmRvdyBzaXplLiBJIGhhdmVuJ3QgYmVlbiBhYmxlIHRvIGNvbnZpbmNlIG15c2VsZgotICAgICAgICAjIHN0cm9uZ2x5IG9uZSB3YXkgb3IgdGhlIG90aGVyIHdoaWNoIGlzIGJldHRlciAob3IgaG93IG11Y2ggaXQgbWF0dGVycykKLSAgICAgICAgb3V0c2lkZV93aW5kb3cgPSAobGF0ZXN0X3N0YXRfdGltZXN0YW1wIC0gY3VycmVudF9zdGF0X3RpbWVzdGFtcCkgPiAod2luZG93IC8gMikKLSAgICAgICAgaWYgbGVuKHN0YXRzX2RhdGFfd2luZG93KSA+PSBtaW5pbXVtX2RhdGFfcG9pbnRzIGFuZCBvdXRzaWRlX3dpbmRvdzoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIAotICAgICAgICBzdGF0c19kYXRhX3dpbmRvdy5pbnNlcnQoMCwgc3RhdF9kYXRhX3BvaW50KQotICAgIAotICAgICAgICBpZiAod2luZG93ID09IDApIGFuZCAobGVuKHN0YXRzX2RhdGFfd2luZG93KSA+PSBtaW5pbXVtX2RhdGFfcG9pbnRzKToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIAotICAgIHN0YXRfZGF0YV9wb2ludCA9IE5vbmUKLSAgICAKLSAgICBpZiBsYXRlc3Rfc3RhdF90aW1lc3RhbXAgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIGRhdGFfZm9ybWF0ID09IFZBTFVFX0RBVEFfRk9STUFUOgotICAgICAgICAgICAgdmFsdWUgPSBnZXRfYXZlcmFnZV9vdmVyX3N0YXRzX3ZhbHVlcyhzdGF0c19kYXRhX3dpbmRvdykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCBkYXRhX2Zvcm1hdCA9PSBSQVRFX0RBVEFfRk9STUFULCAiSW52YWxpZCBkYXRhIGZvcm1hdCIKLSAgICAgICAgICAgIHZhbHVlID0gZ2V0X3JhdGVfb3Zlcl9zdGF0c192YWx1ZXMoc3RhdHNfZGF0YV93aW5kb3cpCi0gICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc3RhdF9kYXRhX3BvaW50ID0gKGxhdGVzdF9zdGF0X3RpbWVzdGFtcCwgdmFsdWUpCi0KLSAgICByZXR1cm4gc3RhdF9kYXRhX3BvaW50Ci0KLQotZGVmIGdldF9zdGF0c19kYXRhKGNsdXN0ZXIsIHRhcmdldF90eXBlLCB0YXJnZXRfaWQsIHN0YXRzX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgc3RhcnRfdGltZSwgZW5kX3RpbWUsIHNhbXBsZV9pbnRlcnZhbD0wLCB3aW5kb3c9MCwKLSAgICAgICAgICAgICAgICAgICBkYXRhX2Zvcm1hdD1WQUxVRV9EQVRBX0ZPUk1BVCwgbGltaXQ9Tm9uZSk6Ci0gICAgCi0gICAgY2hlY2tfdGltZV9yYW5nZShzdGFydF90aW1lLCBlbmRfdGltZSkKLSAgICBjaGVja192YWxpZF9kYXRhX2Zvcm1hdChkYXRhX2Zvcm1hdCkKLSAgICAjIEZJWE1FOiBBZGQgdmFsaWRhdGlvbiBvZiBvdGhlciBhcmd1bWVudHMKLSAgICAKLSAgICBzdGFydF9rZXlfcGFydCwgc3RhcnRfY29sdW1uX3BhcnQgPSBzcGxpdF9zdGF0c190aW1lc3RhbXAoaW50KHN0YXJ0X3RpbWUpKQotICAgIGVuZF9rZXlfcGFydCwgZW5kX2NvbHVtbl9wYXJ0ID0gc3BsaXRfc3RhdHNfdGltZXN0YW1wKGludChlbmRfdGltZSkpCi0gICAgCi0gICAgcmF3X3N0YXRzX3ZhbHVlcyA9IFtdCi0gICAgY29sdW1uX2ZhbWlseSA9IHRhcmdldF90eXBlICsgU1RBVFNfQ09MVU1OX0ZBTUlMWV9OQU1FX1NVRkZJWAotICAgIGNvbHVtbl9wYXJlbnQgPSBDb2x1bW5QYXJlbnQoY29sdW1uX2ZhbWlseSkKLSAgICAKLSAgICBmb3Iga2V5X3BhcnQgaW4gcmFuZ2Uoc3RhcnRfa2V5X3BhcnQsIGVuZF9rZXlfcGFydCsxKToKLSAgICAgICAgY3VycmVudF9zdGFydCA9IHN0YXJ0X2NvbHVtbl9wYXJ0IGlmIGtleV9wYXJ0ID09IHN0YXJ0X2tleV9wYXJ0IGVsc2UgJycKLSAgICAgICAgY3VycmVudF9lbmQgPSBlbmRfY29sdW1uX3BhcnQgaWYga2V5X3BhcnQgPT0gZW5kX2tleV9wYXJ0IGVsc2UgJycKLSAgICAgICAgIyBGSVhNRTogSG93IGJpZyBjYW4gdGhlIGNvdW50IGJlPwotICAgICAgICBzbGljZV9wcmVkaWNhdGUgPSBnZXRfc3RhdHNfc2xpY2VfcHJlZGljYXRlKGN1cnJlbnRfc3RhcnQsIGN1cnJlbnRfZW5kKQotICAgICAgICBrZXkgPSBjb25zdHJ1Y3Rfc3RhdHNfa2V5KGNsdXN0ZXIsIHRhcmdldF9pZCwgc3RhdHNfdHlwZSwga2V5X3BhcnQpCi0gICAgICAgIGZvciBhdHRlbXB0IGluICgxLDIpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGdldF9yZXN1bHRzID0gc3RhdHNfZGJfY29ubmVjdGlvbi5nZXRfY2xpZW50KCkuZ2V0X3NsaWNlKGtleSwKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uX3BhcmVudCwgc2xpY2VfcHJlZGljYXRlLCBDb25zaXN0ZW5jeUxldmVsLk9ORSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IFRUcmFuc3BvcnQuVFRyYW5zcG9ydEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAjIE9ubHkgcmV0cnkgb25jZSwgc28gaWYgaXQncyB0aGUgc2Vjb25kIHRpbWUgdGhyb3VnaCwKLSAgICAgICAgICAgICAgICAjIHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgaWYgYXR0ZW1wdCA9PSAyOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBTdGF0c0RhdGFiYXNlQ29ubmVjdGlvbkV4Y2VwdGlvbigpCi0gICAgICAgICAgICAgICAgc3RhdHNfZGJfY29ubmVjdGlvbi5yZWNvbm5lY3QoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICByYWlzZSBTdGF0c0RhdGFiYXNlQWNjZXNzRXhjZXB0aW9uKCkKLQotICAgICAgICBhcHBlbmRfc3RhdHNfcmVzdWx0cyhnZXRfcmVzdWx0cywgcmF3X3N0YXRzX3ZhbHVlcywga2V5X3BhcnQpCi0gICAgCi0gICAgICAgICMgRklYTUU6IFRoaXMgbG9naWMgdG8gaGFuZGxlIHRoZSBsaW1pdCBhcmd1bWVudCBpc24ndCBjb21wbGV0ZS4KLSAgICAgICAgIyBJdCBkb2Vzbid0IGFjY291bnQgZm9yIGEgbm9uLXplcm8gd2luZG93IG9yIGRwd25zYW1wbGluZy4KLSAgICAgICAgaWYgKGxpbWl0ICE9IE5vbmUgYW5kIHNhbXBsZV9pbnRlcnZhbCA9PSAwIGFuZCB3aW5kb3cgPT0gMCBhbmQKLSAgICAgICAgICAgIGxlbihyYXdfc3RhdHNfdmFsdWVzKSA+IGxpbWl0KToKLSAgICAgICAgICAgIHJhd19zdGF0c192YWx1ZXMgPSByYXdfc3RhdHNfdmFsdWVzWzpsaW1pdF0KLSAgICAgICAgICAgIGJyZWFrCi0gICAgCi0gICAgc3RhdHNfdmFsdWVzID0gW10KLSAgICBsYXN0X2Rvd25zYW1wbGVfaW5kZXggPSBOb25lCi0gICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHJhd19zdGF0c192YWx1ZXMpKToKLSAgICAgICAgIyBIYW5kbGUgZG93bnNhbXBsaW5nCi0gICAgICAgIGlmIHNhbXBsZV9pbnRlcnZhbCAhPSAwOgotICAgICAgICAgICAgZG93bnNhbXBsZV9pbmRleCA9IHJhd19zdGF0c192YWx1ZXNbaV1bMF0gLyBzYW1wbGVfaW50ZXJ2YWwKLSAgICAgICAgICAgIGlmIGRvd25zYW1wbGVfaW5kZXggPT0gbGFzdF9kb3duc2FtcGxlX2luZGV4OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBsYXN0X2Rvd25zYW1wbGVfaW5kZXggPSBkb3duc2FtcGxlX2luZGV4Ci0gICAgICAgIAotICAgICAgICAjIEdldCB0aGUgdmFsdWUgYmFzZWQgZm9yIHRoZSBzcGVjaWZpZWQgZGF0YSBmb3JtYXQKLSAgICAgICAgaWYgZGF0YV9mb3JtYXQgPT0gVkFMVUVfREFUQV9GT1JNQVQ6Ci0gICAgICAgICAgICBpZiBzYW1wbGVfaW50ZXJ2YWwgPT0gMDoKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGNvbnZlcnRfc3RhdF9zdHJpbmdfdG9fdmFsdWUocmF3X3N0YXRzX3ZhbHVlc1tpXVsxXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRfYXZlcmFnZV92YWx1ZV9vdmVyX3dpbmRvdyhyYXdfc3RhdHNfdmFsdWVzLCBpLCB3aW5kb3cpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnQgZGF0YV9mb3JtYXQgPT0gUkFURV9EQVRBX0ZPUk1BVCwgIkludmFsaWQgZGF0YSBmb3JtYXQiCi0gICAgICAgICAgICB2YWx1ZSA9IGdldF9yYXRlX292ZXJfd2luZG93KHJhd19zdGF0c192YWx1ZXMsIGksIHdpbmRvdykKLSAgICAgICAgICAgIAotICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHN0YXRzX3ZhbHVlcy5hcHBlbmQoKHJhd19zdGF0c192YWx1ZXNbaV1bMF0sIHZhbHVlKSkKLSAgICAKLSAgICByZXR1cm4gc3RhdHNfdmFsdWVzCi0KLQotZGVmIGRlbGV0ZV9zdGF0c19kYXRhKGNsdXN0ZXIsIHRhcmdldF90eXBlLCB0YXJnZXRfaWQsIHN0YXRzX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfdGltZSwgZW5kX3RpbWUpOgotICAgIAotICAgIGNoZWNrX3RpbWVfcmFuZ2Uoc3RhcnRfdGltZSwgZW5kX3RpbWUpCi0gICAgIyBGSVhNRTogQWRkIHZhbGlkYXRpb24gb2Ygb3RoZXIgYXJndW1lbnRzCi0gICAgCi0gICAgc3RhcnRfa2V5X3BhcnQsIHN0YXJ0X2NvbHVtbl9wYXJ0ID0gc3BsaXRfc3RhdHNfdGltZXN0YW1wKGludChzdGFydF90aW1lKSkKLSAgICBlbmRfa2V5X3BhcnQsIGVuZF9jb2x1bW5fcGFydCA9IHNwbGl0X3N0YXRzX3RpbWVzdGFtcChpbnQoZW5kX3RpbWUpKQotICAgIAotICAgIGNvbHVtbl9mYW1pbHkgPSB0YXJnZXRfdHlwZSArIFNUQVRTX0NPTFVNTl9GQU1JTFlfTkFNRV9TVUZGSVgKLSAgICBjb2x1bW5fcGFyZW50ID0gQ29sdW1uUGFyZW50KGNvbHVtbl9mYW1pbHkpCi0gICAgIyBUaGUgQ2Fzc2FuZHJhIHRpbWVzdGFtcHMgYXJlIGluIG1pY3Jvc2Vjb25kcywgbm90IG1pbGxpc2Vjb25kcywKLSAgICAjIHNvIHdlIGNvbnZlcnQgdG8gbWljcm9zZWNvbmRzLiBUaGUgQ2Fzc2FuZHJhIHRpbWVzdGFtcCBpcyBkZXJpdmVkCi0gICAgIyBmcm9tIHRoZSBzdGF0IHRpbWVzdGFtcCAoaS5lLiBzYW1lIHRpbWUgY29udmVydGVkIHRvIG1pY3Jvc2Vjb25kcyksCi0gICAgIyBzbyB3ZSB1c2UgdGhlIGVuZF90aW1lICsgMSwgc2luY2UgdGhhdCdzIGd1YXJhbnRlZWQgdG8gYmUgZ3JlYXRlcgotICAgICMgdGhhbiBhbnkgb2YgdGhlIHRpbWVzdGFtcHMgZm9yIHRoZSBzYW1wbGUgcG9pbnRzIHdlJ3JlIGRlbGV0aW5nLgotICAgIHRpbWVzdGFtcCA9IChpbnQoZW5kX3RpbWUpICogMTAwMCkgKyAxCi0gICAgZm9yIGtleV9wYXJ0IGluIHJhbmdlKHN0YXJ0X2tleV9wYXJ0LCBlbmRfa2V5X3BhcnQrMSk6Ci0gICAgICAgIGtleSA9IGNvbnN0cnVjdF9zdGF0c19rZXkoY2x1c3RlciwgdGFyZ2V0X2lkLCBzdGF0c190eXBlLCBrZXlfcGFydCkKLSAgICAgICAgY3VycmVudF9zdGFydCA9IHN0YXJ0X2NvbHVtbl9wYXJ0IGlmIGtleV9wYXJ0ID09IHN0YXJ0X2tleV9wYXJ0IGVsc2UgJycKLSAgICAgICAgY3VycmVudF9lbmQgPSBlbmRfY29sdW1uX3BhcnQgaWYga2V5X3BhcnQgPT0gZW5kX2tleV9wYXJ0IGVsc2UgJycKLSAgICAgICAgaWYgY3VycmVudF9zdGFydCA9PSAnJyBhbmQgY3VycmVudF9lbmQgPT0gJyc6Ci0gICAgICAgICAgICBjYWxsX2Nhc3NhbmRyYV93aXRoX3JlY29ubmVjdChzdGF0c19kYl9jb25uZWN0aW9uLmdldF9jbGllbnQoKS5yZW1vdmUsCi0gICAgICAgICAgICAgICAga2V5LCBDb2x1bW5QYXRoKGNvbHVtbl9mYW1pbHk9Y29sdW1uX2ZhbWlseSksIHRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICBDb25zaXN0ZW5jeUxldmVsLk9ORSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgZ3Jyci4gQ2Fzc2FuZHJhIGN1cnJlbnRseSBkb2Vzbid0IHN1cHBvcnQgZG9pbmcgZGVsZXRpb25zIHZpYSBhCi0gICAgICAgICAgICAjIHNsaWNlIHJhbmdlIChpLmUuIGEgY29sdW1uIHN0YXJ0IGFuZCBlbmQpLiBZb3UgbmVlZCB0byBnaXZlIGl0IGEKLSAgICAgICAgICAgICMgbGlzdCBvZiBjb2x1bW5zLiBTbyB3ZSBkbyBhIGdldF9zbGljZSB3aXRoIHRoZSBzbGljZSByYW5nZSBhbmQgdGhlbgotICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBpbmRpdmlkdWFsIGNvbHVtbiBuYW1lcyBmcm9tIHRoZSByZXN1bHQgb2YgdGhhdCBhbmQKLSAgICAgICAgICAgICMgYnVpbGQgdXAgdGhlIGNvbHVtbiBsaXN0IHRoYXQgd2UgY2FuIHVzZSB0byBkZWxldGUgdGhlIGNvbHVtbgotICAgICAgICAgICAgIyB1c2luZyBiYXRjaF9tdXRhdGUuCi0gICAgICAgICAgICBzbGljZV9wcmVkaWNhdGUgPSBnZXRfc3RhdHNfc2xpY2VfcHJlZGljYXRlKGN1cnJlbnRfc3RhcnQsIGN1cnJlbnRfZW5kKQotICAgICAgICAgICAgZ2V0X3Jlc3VsdHMgPSBjYWxsX2Nhc3NhbmRyYV93aXRoX3JlY29ubmVjdCgKLSAgICAgICAgICAgICAgICBzdGF0c19kYl9jb25uZWN0aW9uLmdldF9jbGllbnQoKS5nZXRfc2xpY2UsCi0gICAgICAgICAgICAgICAga2V5LCBjb2x1bW5fcGFyZW50LCBzbGljZV9wcmVkaWNhdGUsIENvbnNpc3RlbmN5TGV2ZWwuT05FKQotICAgICAgICAgICAgY29sdW1uX25hbWVzID0gW10KLSAgICAgICAgICAgIGZvciBpdGVtIGluIGdldF9yZXN1bHRzOgotICAgICAgICAgICAgICAgIGNvbHVtbl9uYW1lcy5hcHBlbmQoaXRlbS5jb2x1bW4ubmFtZSkKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZGVsZXRpb24gPSBEZWxldGlvbih0aW1lc3RhbXA9dGltZXN0YW1wLCBwcmVkaWNhdGU9U2xpY2VQcmVkaWNhdGUoY29sdW1uX25hbWVzPWNvbHVtbl9uYW1lcykpCi0gICAgICAgICAgICBtdXRhdGlvbl9tYXAgPSB7a2V5OiB7Y29sdW1uX2ZhbWlseTogW011dGF0aW9uKGRlbGV0aW9uPWRlbGV0aW9uKV19fQotICAgICAgICAgICAgY2FsbF9jYXNzYW5kcmFfd2l0aF9yZWNvbm5lY3Qoc3RhdHNfZGJfY29ubmVjdGlvbi5nZXRfY2xpZW50KCkuYmF0Y2hfbXV0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25fbWFwLCBDb25zaXN0ZW5jeUxldmVsLk9ORSkKLQotCi1TVEFUU19NRVRBREFUQV9WQVJJQUJMRV9OQU1FID0gJ1NUQVRTX01FVEFEQVRBJwotCi1zdGF0c19tZXRhZGF0YSA9IE5vbmUKLQotZGVmIGluaXRfc3RhdHNfbWV0YWRhdGEoX2NsdXN0ZXIpOgotICAgICIiIgotICAgIEluaXRpYWxpemUgdGhlIGRpY3Rpb25hcnkgb2Ygc3RhdHMgbWV0YWRhdGEuIEN1cnJlbnRseSB0aGlzIGlzIGluaXRpYWxpemVkCi0gICAgZnJvbSBhIGRpcmVjdG9yeSBvZiBtZXRhZGF0YSBmaWxlcyB0aGF0IGNvbnRhaW4gdGhlIG1ldGFkYXRhLiBDdXJyZW50bHksCi0gICAgdGhlcmUgaXMgbm8gZGlmZmVyZW50aWF0aW9uIGluIHRoZSBzdGF0cyB0eXBlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYWNyb3NzCi0gICAgY2x1c3RlcnMsIHNvIHdlIGlnbm9yZSB0aGUgY2x1c3RlciBhcmd1bWVudCBhbmQgd2UganVzdCBtYWludGFpbiBhCi0gICAgZ2xvYmFsIG1hcCBvZiBzdGF0IHR5cGUgbWV0YWRhdGEuCi0gICAgIiIiCi0gICAgZ2xvYmFsIHN0YXRzX21ldGFkYXRhCi0gICAgaWYgbm90IHN0YXRzX21ldGFkYXRhOgotICAgICAgICBzdGF0c19tZXRhZGF0YSA9IHt9Ci0gICAgICAgIGZvciBtb2R1bGVfbmFtZSBpbiBzZXR0aW5ncy5TVEFUU19NRVRBREFUQV9NT0RVTEVTOgotICAgICAgICAgICAgbWV0YWRhdGFfbW9kdWxlID0gX19pbXBvcnRfXyhtb2R1bGVfbmFtZSwKLSAgICAgICAgICAgICAgICBmcm9tbGlzdD1bU1RBVFNfTUVUQURBVEFfVkFSSUFCTEVfTkFNRV0pCi0gICAgICAgICAgICBpZiBub3QgbWV0YWRhdGFfbW9kdWxlOgotICAgICAgICAgICAgICAgICMgRklYTUU6IGxvZyBlcnJvcgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIFNUQVRTX01FVEFEQVRBX1ZBUklBQkxFX05BTUUgbm90IGluIGRpcihtZXRhZGF0YV9tb2R1bGUpOgotICAgICAgICAgICAgICAgICMgRklYTUU6IGxvZyBlcnJvcgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1ldGFkYXRhX2xpc3QgPSBnZXRhdHRyKG1ldGFkYXRhX21vZHVsZSwgU1RBVFNfTUVUQURBVEFfVkFSSUFCTEVfTkFNRSkKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgdHlwZShtZXRhZGF0YV9saXN0KSBpcyBkaWN0OgotICAgICAgICAgICAgICAgIG1ldGFkYXRhX2xpc3QgPSBbbWV0YWRhdGFfbGlzdF0KLQotICAgICAgICAgICAgaWYgdHlwZShtZXRhZGF0YV9saXN0KSBpcyBub3QgbGlzdCBhbmQgdHlwZShtZXRhZGF0YV9saXN0KSBpcyBub3QgdHVwbGU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgU3RhdHNJbnZhbGlkU3RhdHNNZXRhZGF0YUV4Y2VwdGlvbihtb2R1bGVfbmFtZSkKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIG1ldGFkYXRhIGluIG1ldGFkYXRhX2xpc3Q6Ci0gICAgICAgICAgICAgICAgaWYgdHlwZShtZXRhZGF0YSkgaXMgbm90IGRpY3Q6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0YXRzSW52YWxpZFN0YXRzTWV0YWRhdGFFeGNlcHRpb24obW9kdWxlX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG5hbWUgPSBtZXRhZGF0YS5nZXQoJ25hbWUnKQotICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBTdGF0c0ludmFsaWRTdGF0c01ldGFkYXRhRXhjZXB0aW9uKG1vZHVsZV9uYW1lKQotICAgICAgICAgICAgICAgIG5hbWUgPSBzdHIobmFtZSkKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAjIEF1dG8tc2V0IHRoZSB2ZXJib3NlX25hbWUgdG8gdGhlIG5hbWUgaWYgaXQncyBub3Qgc2V0IGV4cGxpY2l0bHkKLSAgICAgICAgICAgICAgICB2ZXJib3NlX25hbWUgPSBtZXRhZGF0YS5nZXQoJ3ZlcmJvc2VfbmFtZScpCi0gICAgICAgICAgICAgICAgaWYgbm90IHZlcmJvc2VfbmFtZToKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFbJ3ZlcmJvc2VfbmFtZSddID0gbmFtZQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBvdGhlciBjb250ZW50cyBvZiBtZXRhZGF0YS4KLSAgICAgICAgICAgICAgICAjIGUuZy4gZmxhZyBuYW1lIGNvbmZsaWN0cyBiZXR3ZWVuIGZpbGVzLgotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN0YXRzX21ldGFkYXRhW25hbWVdID0gbWV0YWRhdGEKLSAgICAgICAgICAgICAgICAKLWRlZiBnZXRfc3RhdHNfbWV0YWRhdGEoY2x1c3Rlciwgc3RhdHNfdHlwZT1Ob25lKToKLSAgICBpbml0X3N0YXRzX21ldGFkYXRhKGNsdXN0ZXIpCi0gICAgIyBJZiBubyBzdGF0X3R5cGUgaXMgc3BlY2lmaWVkIHJldHVybiB0aGUgZW50aXJlIGRpY3Rpb25hcnkgb2Ygc3RhdCB0eXBlcwotICAgIG1ldGFkYXRhID0gc3RhdHNfbWV0YWRhdGEuZ2V0KHN0YXRzX3R5cGUpIGlmIHN0YXRzX3R5cGUgZWxzZSBzdGF0c19tZXRhZGF0YQotICAgIGlmIG1ldGFkYXRhIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIFN0YXRzSW52YWxpZFN0YXRzVHlwZUV4Y2VwdGlvbihzdGF0c190eXBlKQotICAgIHJldHVybiBtZXRhZGF0YQotCi0KLVNUQVRTX0lOREVYX0FUVFJJQlVURV9UWVBFUyA9IHsKLSAgICAnbGFzdC11cGRhdGVkJzogaW50Ci19Ci1kZWYgc3RhdHNfdHlwZV9zbGljZV90b19pbmRleF9kYXRhKHN0YXRzX3R5cGVfc2xpY2UpOgotICAgIGluZGV4X2RhdGEgPSB7fQotICAgIGZvciBzdXBlcl9jb2x1bW4gaW4gc3RhdHNfdHlwZV9zbGljZToKLSAgICAgICAgbmFtZSA9IHN1cGVyX2NvbHVtbi5zdXBlcl9jb2x1bW4ubmFtZQotICAgICAgICBjb2x1bW5fbGlzdCA9IHN1cGVyX2NvbHVtbi5zdXBlcl9jb2x1bW4uY29sdW1ucwotICAgICAgICBpZiBuYW1lID09ICdiYXNlJzoKLSAgICAgICAgICAgIGluc2VydF9tYXAgPSBpbmRleF9kYXRhCi0gICAgICAgIGVsaWYgbmFtZS5zdGFydHN3aXRoKCdwYXJhbTonKToKLSAgICAgICAgICAgIGNvbG9uX2luZGV4ID0gbmFtZS5maW5kKCc6JykKLSAgICAgICAgICAgIHBhcmFtZXRlcl9uYW1lID0gbmFtZVtjb2xvbl9pbmRleCsxOl0KLSAgICAgICAgICAgIHBhcmFtZXRlcl9tYXAgPSBpbmRleF9kYXRhLmdldCgncGFyYW1ldGVycycpCi0gICAgICAgICAgICBpZiBub3QgcGFyYW1ldGVyX21hcDoKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfbWFwID0ge30KLSAgICAgICAgICAgICAgICBpbmRleF9kYXRhWydwYXJhbWV0ZXJzJ10gPSBwYXJhbWV0ZXJfbWFwCi0gICAgICAgICAgICBpbnNlcnRfbWFwID0ge30KLSAgICAgICAgICAgIHBhcmFtZXRlcl9tYXBbcGFyYW1ldGVyX25hbWVdID0gaW5zZXJ0X21hcAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgU3RhdHNJbnRlcm5hbEV4Y2VwdGlvbignSW52YWxpZCBzdGF0cyB0eXBlIGluZGV4IG5hbWU6ICcgKyBzdHIobmFtZSkpCi0gICAgICAgIAotICAgICAgICBmb3IgY29sdW1uIGluIGNvbHVtbl9saXN0OgotICAgICAgICAgICAgdmFsdWUgPSBjb2x1bW4udmFsdWUKLSAgICAgICAgICAgIGF0dHJpYnV0ZV90eXBlID0gU1RBVFNfSU5ERVhfQVRUUklCVVRFX1RZUEVTLmdldChjb2x1bW4ubmFtZSkKLSAgICAgICAgICAgIGlmIGF0dHJpYnV0ZV90eXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlX3R5cGUodmFsdWUpCi0gICAgICAgICAgICBpbnNlcnRfbWFwW2NvbHVtbi5uYW1lXSA9IHZhbHVlCi0gICAgCi0gICAgcmV0dXJuIGluZGV4X2RhdGEKLQotCi1kZWYgZ2V0X3N0YXRzX3R5cGVfaW5kZXgoY2x1c3RlciwgdGFyZ2V0X3R5cGUsIHRhcmdldF9pZCwgc3RhdHNfdHlwZT1Ob25lKToKLSAgICBjb2x1bW5fcGFyZW50ID0gQ29sdW1uUGFyZW50KFNUQVRTX1RZUEVfSU5ERVhfTkFNRSkKLSAgICBzbGljZV9wcmVkaWNhdGUgPSBTbGljZVByZWRpY2F0ZShzbGljZV9yYW5nZT1TbGljZVJhbmdlKAotICAgICAgICBzdGFydD0nJywgZmluaXNoPScnLCBjb3VudD0xMDAwMDAwKSkKLSAgICBrZXlfcHJlZml4ID0gY2x1c3RlciArICc6JyArIHRhcmdldF90eXBlICsgJzonICsgdGFyZ2V0X2lkCi0gICAgaWYgc3RhdHNfdHlwZSBpcyBOb25lOgotICAgICAgICBrZXlfcmFuZ2UgPSBLZXlSYW5nZShzdGFydF9rZXk9a2V5X3ByZWZpeCsnOicsIGVuZF9rZXk9a2V5X3ByZWZpeCsnOycsIGNvdW50PTEwMDAwMCkKLSAgICAgICAga2V5X3NsaWNlX2xpc3QgPSBjYWxsX2Nhc3NhbmRyYV93aXRoX3JlY29ubmVjdCgKLSAgICAgICAgICAgIHN0YXRzX2RiX2Nvbm5lY3Rpb24uZ2V0X2NsaWVudCgpLmdldF9yYW5nZV9zbGljZXMsCi0gICAgICAgICAgICBjb2x1bW5fcGFyZW50LCBzbGljZV9wcmVkaWNhdGUsIGtleV9yYW5nZSwgQ29uc2lzdGVuY3lMZXZlbC5PTkUpCi0gICAgICAgIHN0YXRzX2luZGV4X2RhdGEgPSB7fQotICAgICAgICBmb3Iga2V5X3NsaWNlIGluIGtleV9zbGljZV9saXN0OgotICAgICAgICAgICAga2V5ID0ga2V5X3NsaWNlLmtleQotICAgICAgICAgICAgY29sb25faW5kZXggPSBrZXkucmZpbmQoJzonKQotICAgICAgICAgICAgaWYgY29sb25faW5kZXggPCAwOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0YXRzSW50ZXJuYWxFeGNlcHRpb24oJ0ludmFsaWQgc3RhdHMgdHlwZSBpbmRleCBrZXk6ICcgKyBzdHIoa2V5KSkKLSAgICAgICAgICAgIHN0YXRzX3R5cGUgPSBrZXlbY29sb25faW5kZXgrMTpdCi0gICAgICAgICAgICBzdGF0c19pbmRleF9kYXRhW3N0YXRzX3R5cGVdID0gc3RhdHNfdHlwZV9zbGljZV90b19pbmRleF9kYXRhKGtleV9zbGljZS5jb2x1bW5zKQotICAgIGVsc2U6Ci0gICAgICAgIGtleSA9IGtleV9wcmVmaXggKyAnOicgKyBzdGF0c190eXBlCi0gICAgICAgIHN0YXRzX3R5cGVfc2xpY2UgPSBjYWxsX2Nhc3NhbmRyYV93aXRoX3JlY29ubmVjdCgKLSAgICAgICAgICAgIHN0YXRzX2RiX2Nvbm5lY3Rpb24uZ2V0X2NsaWVudCgpLmdldF9zbGljZSwga2V5LCBjb2x1bW5fcGFyZW50LAotICAgICAgICAgICAgc2xpY2VfcHJlZGljYXRlLCBDb25zaXN0ZW5jeUxldmVsLk9ORSkKLSAgICAgICAgc3RhdHNfaW5kZXhfZGF0YSA9IHN0YXRzX3R5cGVfc2xpY2VfdG9faW5kZXhfZGF0YShzdGF0c190eXBlX3NsaWNlKQotICAgICAgICAKLSAgICByZXR1cm4gc3RhdHNfaW5kZXhfZGF0YQotCi0KLWRlZiBnZXRfc3RhdHNfdGFyZ2V0X3R5cGVzKGNsdXN0ZXIpOgotICAgIGNvbHVtbl9wYXJlbnQgPSBDb2x1bW5QYXJlbnQoVEFSR0VUX0lOREVYX05BTUUpCi0gICAgc2xpY2VfcHJlZGljYXRlID0gU2xpY2VQcmVkaWNhdGUoY29sdW1uX25hbWVzPVtdKQotICAgIGtleV9yYW5nZSA9IEtleVJhbmdlKHN0YXJ0X2tleT1jbHVzdGVyKyc6JywgZW5kX2tleT1jbHVzdGVyKyc7JywgY291bnQ9MTAwMDAwKQotICAgIGtleV9zbGljZV9saXN0ID0gY2FsbF9jYXNzYW5kcmFfd2l0aF9yZWNvbm5lY3QoCi0gICAgICAgIHN0YXRzX2RiX2Nvbm5lY3Rpb24uZ2V0X2NsaWVudCgpLmdldF9yYW5nZV9zbGljZXMsCi0gICAgICAgIGNvbHVtbl9wYXJlbnQsIHNsaWNlX3ByZWRpY2F0ZSwga2V5X3JhbmdlLCBDb25zaXN0ZW5jeUxldmVsLk9ORSkKLSAgICAKLSAgICB0YXJnZXRfdHlwZXMgPSB7fQotICAgIGZvciBrZXlfc2xpY2UgaW4ga2V5X3NsaWNlX2xpc3Q6Ci0gICAgICAgIHRhcmdldF90eXBlID0ga2V5X3NsaWNlLmtleVtsZW4oY2x1c3RlcikrMTpdCi0gICAgICAgIAotICAgICAgICB0YXJnZXRfdHlwZXNbdGFyZ2V0X3R5cGVdID0ge30KLSAgICAKLSAgICByZXR1cm4gdGFyZ2V0X3R5cGVzCi0KLQotU1RBVFNfVEFSR0VUX0FUVFJJQlVURV9UWVBFUyA9IHsKLSAgICAnbGFzdC11cGRhdGVkJzogaW50Ci19Ci0KLWRlZiBnZXRfc3RhdHNfdGFyZ2V0cyhjbHVzdGVyLCB0YXJnZXRfdHlwZSk6Ci0gICAga2V5ID0gY2x1c3RlciArICc6JyArIHRhcmdldF90eXBlCi0gICAgY29sdW1uX3BhcmVudCA9IENvbHVtblBhcmVudChUQVJHRVRfSU5ERVhfTkFNRSkKLSAgICBzbGljZV9wcmVkaWNhdGUgPSBTbGljZVByZWRpY2F0ZShzbGljZV9yYW5nZT1TbGljZVJhbmdlKAotICAgICAgICBzdGFydD0nJywgZmluaXNoPScnLCBjb3VudD0xMDAwMDAwKSkKLSAgICBzdXBlcl9jb2x1bW5fbGlzdCA9IGNhbGxfY2Fzc2FuZHJhX3dpdGhfcmVjb25uZWN0KAotICAgICAgICBzdGF0c19kYl9jb25uZWN0aW9uLmdldF9jbGllbnQoKS5nZXRfc2xpY2UsIGtleSwgY29sdW1uX3BhcmVudCwKLSAgICAgICAgc2xpY2VfcHJlZGljYXRlLCBDb25zaXN0ZW5jeUxldmVsLk9ORSkKLSAgICB0YXJnZXRfbGlzdCA9IHt9Ci0gICAgZm9yIGl0ZW0gaW4gc3VwZXJfY29sdW1uX2xpc3Q6Ci0gICAgICAgIHRhcmdldCA9IHt9Ci0gICAgICAgIGZvciBjb2x1bW4gaW4gaXRlbS5zdXBlcl9jb2x1bW4uY29sdW1uczoKLSAgICAgICAgICAgIHZhbHVlID0gY29sdW1uLnZhbHVlCi0gICAgICAgICAgICBhdHRyaWJ1dGVfdHlwZSA9IFNUQVRTX1RBUkdFVF9BVFRSSUJVVEVfVFlQRVMuZ2V0KGNvbHVtbi5uYW1lKQotICAgICAgICAgICAgaWYgYXR0cmlidXRlX3R5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVfdHlwZSh2YWx1ZSkKLSAgICAgICAgICAgIHRhcmdldFtjb2x1bW4ubmFtZV0gPSB2YWx1ZQotICAgICAgICB0YXJnZXRfbGlzdFtpdGVtLnN1cGVyX2NvbHVtbi5uYW1lXSA9IHRhcmdldAotICAgICAgICAKLSAgICByZXR1cm4gdGFyZ2V0X2xpc3QKLQotCi0jIEZJWE1FOiBTaG91bGQgdXBkYXRlIHRoZSBjb2RlIGJlbG93IHRvIHVzZSB0aGVzZSBjb25zdGFudHMKLSMgaW5zdGVhZCBvZiBzdHJpbmcgbGl0ZXJhbHMKLUxBU1RfVVBEQVRFRF9BVFRSSUJVVEVfTkFNRSA9ICdsYXN0LXVwZGF0ZWQnCi1DT05UUk9MTEVSX0FUVFJJQlVURV9OQU1FID0gJ2NvbnRyb2xsZXInCi1CQVNFX1NVUEVSX0NPTFVNTl9OQU1FID0gJ2Jhc2UnCi1QQVJBTUVURVJTX1NVUEVSX0NPTFVNTl9OQU1FID0gJ3BhcmFtZXRlcnMnCi1QQVJBTV9TVVBFUl9DT0xVTU5fTkFNRV9QUkVGSVggPSAncGFyYW06JwotCi1kZWYgYXBwZW5kX2F0dHJpYnV0ZXNfdG9fbXV0YXRpb25fbGlzdChhdHRyaWJ1dGVzLCBzdXBlcmNvbHVtbl9uYW1lLCBtdXRhdGlvbl9saXN0KToKLSAgICBjb2x1bW5fbGlzdCA9IFtdCi0gICAgZm9yIG5hbWUsIGluZm8gaW4gYXR0cmlidXRlcy5pdGVyaXRlbXMoKToKLSAgICAgICAgdGltZXN0YW1wLCB2YWx1ZSA9IGluZm8KLSAgICAgICAgY29sdW1uID0gQ29sdW1uKG5hbWU9bmFtZSwgdmFsdWU9c3RyKHZhbHVlKSwgdGltZXN0YW1wPXRpbWVzdGFtcCoxMDAwKQotICAgICAgICBjb2x1bW5fbGlzdC5hcHBlbmQoY29sdW1uKQotICAgIG11dGF0aW9uID0gTXV0YXRpb24oY29sdW1uX29yX3N1cGVyY29sdW1uPUNvbHVtbk9yU3VwZXJDb2x1bW4oCi0gICAgICAgIHN1cGVyX2NvbHVtbj1TdXBlckNvbHVtbihuYW1lPXN1cGVyY29sdW1uX25hbWUsIGNvbHVtbnM9Y29sdW1uX2xpc3QpKSkKLSAgICBtdXRhdGlvbl9saXN0LmFwcGVuZChtdXRhdGlvbikKLQotCi1kZWYgYWRkX3N0YXRfdHlwZV9pbmRleF9pbmZvX3RvX211dGF0aW9uX21hcChjbHVzdGVyLCB0YXJnZXRfdHlwZSwKLSAgICAgICAgc3RhdHNfdHlwZV9pbmRleCwgbXV0YXRpb25fbWFwKToKLSAgICBmb3Iga2V5LCBzdGF0c190eXBlX2luZm8gaW4gc3RhdHNfdHlwZV9pbmRleC5pdGVyaXRlbXMoKToKLSAgICAgICAgc2VwYXJhdG9yX2luZGV4ID0ga2V5LmZpbmQoJzonKQotICAgICAgICBhc3NlcnQgc2VwYXJhdG9yX2luZGV4ID49IDAKLSAgICAgICAgYmFzZV9zdGF0X3R5cGVfbmFtZSA9IGtleVs6c2VwYXJhdG9yX2luZGV4XQotICAgICAgICB0YXJnZXRfaWQgPSBrZXlbc2VwYXJhdG9yX2luZGV4ICsgMTpdCi0gICAgICAgIHN0YXRzX3R5cGVfYmFzZV9hdHRyaWJ1dGVzLCBzdGF0c190eXBlX3BhcmFtcyA9IHN0YXRzX3R5cGVfaW5mbwotICAgICAgICBtdXRhdGlvbl9saXN0ID0gW10KLSAgICAgICAgYXBwZW5kX2F0dHJpYnV0ZXNfdG9fbXV0YXRpb25fbGlzdChzdGF0c190eXBlX2Jhc2VfYXR0cmlidXRlcywKLSAgICAgICAgICAgICdiYXNlJywgbXV0YXRpb25fbGlzdCkKLSAgICAgICAgZm9yIG5hbWUsIGF0dHJpYnV0ZXMgaW4gc3RhdHNfdHlwZV9wYXJhbXMuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBhcHBlbmRfYXR0cmlidXRlc190b19tdXRhdGlvbl9saXN0KGF0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgJ3BhcmFtOicgKyBuYW1lLCBtdXRhdGlvbl9saXN0KQotICAgICAgICBtdXRhdGlvbl9rZXkgPSBjbHVzdGVyICsgJzonICsgdGFyZ2V0X3R5cGUgKyAnOicgKyB0YXJnZXRfaWQgKyAnOicgKyBiYXNlX3N0YXRfdHlwZV9uYW1lCi0gICAgICAgIG11dGF0aW9uX21hcFttdXRhdGlvbl9rZXldID0ge1NUQVRTX1RZUEVfSU5ERVhfTkFNRTogbXV0YXRpb25fbGlzdH0KLQotCi1kZWYgYWRkX3RhcmdldF9pZF9saXN0X3RvX211dGF0aW9uX21hcChjbHVzdGVyLCB0YXJnZXRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pZF9saXN0LCBtdXRhdGlvbl9tYXApOgotICAgIG11dGF0aW9uX2xpc3QgPSBbXQotICAgIGZvciB0YXJnZXRfaWQsIGF0dHJpYnV0ZXMgaW4gdGFyZ2V0X2lkX2xpc3Q6Ci0gICAgICAgIGFwcGVuZF9hdHRyaWJ1dGVzX3RvX211dGF0aW9uX2xpc3QoYXR0cmlidXRlcywgdGFyZ2V0X2lkLCBtdXRhdGlvbl9saXN0KQotICAgIGtleSA9IGNsdXN0ZXIgKyAnOicgKyB0YXJnZXRfdHlwZQotICAgIG11dGF0aW9uX21hcFtrZXldID0ge1RBUkdFVF9JTkRFWF9OQU1FOiBtdXRhdGlvbl9saXN0fQotCi0KLWRlZiBfcHV0X3N0YXRzX2RhdGEoY2x1c3RlciwgdGFyZ2V0X3R5cGUsIHN0YXRzX2RhdGEpOgotICAgIHRyeToKLSAgICAgICAgY29udHJvbGxlcl9pZCA9IGdldF9sb2NhbF9jb250cm9sbGVyX2lkKCkKLSAgICAgICAgbXV0YXRpb25fbWFwID0ge30KLSAgICAgICAgdGFyZ2V0X2lkX2xpc3QgPSBbXQotICAgICAgICBzdGF0c190eXBlX2luZGV4ID0ge30KLSAgICAgICAgY29sdW1uX2ZhbWlseSA9IHRhcmdldF90eXBlICsgU1RBVFNfQ09MVU1OX0ZBTUlMWV9OQU1FX1NVRkZJWAotICAgICAgICBmb3IgKHRhcmdldF9pZCwgdGFyZ2V0X2lkX3N0YXRzKSBpbiBzdGF0c19kYXRhLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgIyBNYXAgJ2xvY2FsaG9zdCcgY29udHJvbGxlciB0byB0aGUgYWN0dWFsIElEIGZvciB0aGUgbG9jYWwgY29udHJvbGxlcgotICAgICAgICAgICAgIyBGSVhNRTogRXZlbnR1YWxseSB3ZSBzaG91bGQgZml4IHVwIHRoZSBvdGhlciBjb21wb25lbnRzIChlLmcuIHN0YXRkKQotICAgICAgICAgICAgIyB0aGF0IGludm9rZSB0aGlzIFJFU1QgQVBJIHRvIG5vdCB1c2UgbG9jYWxob3N0IGFuZCBpbnN0ZWFkIHVzZSB0aGUKLSAgICAgICAgICAgICMgUkVTVCBBUEkgdG8gb2J0YWluIHRoZSByZWFsIElEIGZvciB0aGUgbG9jYWwgY29udHJvbGxlciwgYnV0IGZvciBub3cKLSAgICAgICAgICAgICMgdGhpcyB3b3JrcyB0byBlbnN1cmUgd2UncmUgbm90IHVzaW5nIGxvY2FsaG9zdCBpbiBhbnkgb2YgdGhlIGRhdGEgd2UKLSAgICAgICAgICAgICMgc3RvcmUgaW4gdGhlIERCICh1bmxlc3MsIG9mIGNvdXJzZSwgdGhlIHV1aWQgdmVyc2lvbiBvZiB0aGUgY29udHJvbGxlcgotICAgICAgICAgICAgIyBJRCBoYXNuJ3QgYmVlbiB3cml0dGVuIHRvIHRoZSBib290LWNvbmZpZyBmaWxlLCBpbiB3aGljaCBjYXNlIGl0IHdpbGwKLSAgICAgICAgICAgICMgZGVmYXVsdCB0byB0aGUgb2xkIGxvY2FsaG9zdCB2YWx1ZSkuCi0gICAgICAgICAgICBpZiB0YXJnZXRfdHlwZSA9PSAnY29udHJvbGxlcicgYW5kIHRhcmdldF9pZCA9PSAnbG9jYWxob3N0JzoKLSAgICAgICAgICAgICAgICB0YXJnZXRfaWQgPSBjb250cm9sbGVyX2lkCi0gICAgICAgICAgICBsYXRlc3RfaWRfdGltZXN0YW1wID0gTm9uZQotICAgICAgICAgICAgZm9yIChzdGF0c190eXBlLCBzdGF0c19kYXRhX2FycmF5KSBpbiB0YXJnZXRfaWRfc3RhdHMuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgIyBDaGVjayBpZiBpdCdzIGEgcGFyYW1ldGVyaXplZCB0eXBlIGFuZCBleHRyYWN0IHRoZSBiYXNlCi0gICAgICAgICAgICAgICAgIyBzdGF0IHR5cGUgYW5kIHBhcmFtZXRlciBuYW1lLgotICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9zZXBhcmF0b3IgPSBzdGF0c190eXBlLmZpbmQoJ19fJykKLSAgICAgICAgICAgICAgICBpZiBwYXJhbWV0ZXJfc2VwYXJhdG9yID49IDA6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzX3R5cGVfYmFzZSA9IHN0YXRzX3R5cGVbOnBhcmFtZXRlcl9zZXBhcmF0b3JdCi0gICAgICAgICAgICAgICAgICAgIHN0YXRzX3R5cGVfcGFyYW1ldGVyID0gc3RhdHNfdHlwZVtwYXJhbWV0ZXJfc2VwYXJhdG9yKzI6XQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzX3R5cGVfYmFzZSA9IHN0YXRzX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgc3RhdHNfdHlwZV9wYXJhbWV0ZXIgPSBOb25lCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbGF0ZXN0X3N0YXRfdHlwZV90aW1lc3RhbXAgPSBOb25lCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgIyBBZGQgdGhlIHN0YXRzIHZhbHVlcyB0byB0aGUgbXV0YXRpb24gbWFwCi0gICAgICAgICAgICAgICAgZm9yIHN0YXRzX3ZhbHVlIGluIHN0YXRzX2RhdGFfYXJyYXk6Ci0gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChzdGF0c192YWx1ZVsndGltZXN0YW1wJ10pCi0gICAgICAgICAgICAgICAgICAgIGlmIGxhdGVzdF9zdGF0X3R5cGVfdGltZXN0YW1wIGlzIE5vbmUgb3IgdGltZXN0YW1wID4gbGF0ZXN0X3N0YXRfdHlwZV90aW1lc3RhbXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXRlc3Rfc3RhdF90eXBlX3RpbWVzdGFtcCA9IHRpbWVzdGFtcAotICAgICAgICAgICAgICAgICAgICBpZiBsYXRlc3RfaWRfdGltZXN0YW1wIGlzIE5vbmUgb3IgdGltZXN0YW1wID4gbGF0ZXN0X2lkX3RpbWVzdGFtcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVzdF9pZF90aW1lc3RhbXAgPSB0aW1lc3RhbXAKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzdGF0c192YWx1ZVsndmFsdWUnXQotICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBfa2V5X3BhcnQsIHRpbWVzdGFtcF9jb2x1bW5fcGFydCA9IHNwbGl0X3N0YXRzX3RpbWVzdGFtcCh0aW1lc3RhbXApCi0gICAgICAgICAgICAgICAgICAgIGtleSA9IGNvbnN0cnVjdF9zdGF0c19rZXkoY2x1c3RlciwgdGFyZ2V0X2lkLCBzdGF0c190eXBlLCB0aW1lc3RhbXBfa2V5X3BhcnQpCi0gICAgICAgICAgICAgICAgICAgIGtleV9lbnRyeSA9IG11dGF0aW9uX21hcC5nZXQoa2V5KQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qga2V5X2VudHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25fbGlzdCA9IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbl9tYXBba2V5XSA9IHtjb2x1bW5fZmFtaWx5OiBtdXRhdGlvbl9saXN0fQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25fbGlzdCA9IGtleV9lbnRyeVtjb2x1bW5fZmFtaWx5XQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgIyBOb3RlOiBjb252ZXJ0IHRoZSBDYXNzYW5kcmEgdGltZXN0YW1wIHZhbHVlIHRvIG1pY3Jvc2Vjb25kcyB0bwotICAgICAgICAgICAgICAgICAgICAjIGJlIGNvbnNpc3RlbnQgd2l0aCBzdGFuZGFyZCBDYXNzYW5kcmEgdGltZXN0YW1wIGZvcm1hdC4KLSAgICAgICAgICAgICAgICAgICAgbXV0YXRpb24gPSBNdXRhdGlvbihjb2x1bW5fb3Jfc3VwZXJjb2x1bW49Q29sdW1uT3JTdXBlckNvbHVtbigKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbj1Db2x1bW4obmFtZT1nZXRfc3RhdHNfcGFkZGVkX2NvbHVtbl9wYXJ0KHRpbWVzdGFtcF9jb2x1bW5fcGFydCksCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1zdHIodmFsdWUpLCB0aW1lc3RhbXA9dGltZXN0YW1wKjEwMDApKSkKLSAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25fbGlzdC5hcHBlbmQobXV0YXRpb24pCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgIyBVcGRhdGUgdGhlIHN0YXQgdHlwZSBpbmRleCBpbmZvLgotICAgICAgICAgICAgICAgICMgVGhlcmUgY2FuIGJlIG11bHRpcGxlIHBhcmFtZXRlcml6ZWQgdHlwZXMgZm9yIGVhY2ggYmFzZSBzdGF0cyB0eXBlLAotICAgICAgICAgICAgICAgICMgc28gd2UgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IGNoZWNraW5nIGZvciBleGlzdGluZyBkYXRhIGZvcgotICAgICAgICAgICAgICAgICMgdGhlIGluZGV4X2VudHJ5LiBCZWNhdXNlIG9mIHRoZSBkaWN0aW9uYXJ5IG5hdHVyZSBvZiB0aGUgcHV0IGRhdGEKLSAgICAgICAgICAgICAgICAjIGFuZCB0aGUgd2F5IHRoaXMgaXMgc2VyaWFsaXplZCBpbnRvIGEgUHl0aG9uIGRpY3Rpb25hcnksIHRob3VnaCwKLSAgICAgICAgICAgICAgICAjIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgdGhlcmUgd29uJ3QgYmUgbXVsdGlwbGUgZW50cmllcyBmb3IgYSAKLSAgICAgICAgICAgICAgICAjIHNwZWNpZmljIHBhcmFtZXRlcnMgc3RhdHMgdHlwZSBvciB0aGUgYmFzZSBzdGF0cyB0eXBlLCBzbyB3ZSBkb24ndAotICAgICAgICAgICAgICAgICMgbmVlZCB0byBoYW5kbGUgZHVwbGljYXRlcyBmb3IgdGhvc2UuCi0gICAgICAgICAgICAgICAgaWYgbGF0ZXN0X3N0YXRfdHlwZV90aW1lc3RhbXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzX3R5cGVfaW5kZXhfa2V5ID0gc3RhdHNfdHlwZV9iYXNlICsgJzonICsgdGFyZ2V0X2lkCi0gICAgICAgICAgICAgICAgICAgIHN0YXRzX3R5cGVfaW5mbyA9IHN0YXRzX3R5cGVfaW5kZXguZ2V0KHN0YXRzX3R5cGVfaW5kZXhfa2V5KQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHNfdHlwZV9pbmZvOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgdHVwbGUgb2YgdHdvIGRpY3Rpb25hcmllczogdGhlIGF0dHJpYnV0ZXMgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBiYXNlIHN0YXQgdHlwZSBhbmQgYSBkaWN0aW9uYXJ5IG9mIHRoZSBwYXJhbWV0ZXJpemVkCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHR5cGVzIHRoYXQgaGF2ZSBiZWVuIHNlZW4gZm9yIHRoYXQgc3RhdCB0eXBlLiBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyaXplZCB0eXBlIGRpY3Rpb25hcnkgaXMga2V5ZWQgYnkgdGhlIG5hbWUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIHBhcmFtZXRlcml6ZWQgdHlwZSBhbmQgdGhlIHZhbHVlIGlzIHRoZSBhc3NvY2lhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHNfdHlwZV9pbmZvID0gKHt9LHt9KQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHNfdHlwZV9pbmRleFtzdGF0c190eXBlX2luZGV4X2tleV0gPSBzdGF0c190eXBlX2luZm8KLSAgICAgICAgICAgICAgICAgICAgc3RhdHNfdHlwZV9iYXNlX2F0dHJpYnV0ZXMsIHN0YXRzX3R5cGVfcGFyYW1zID0gc3RhdHNfdHlwZV9pbmZvCi0gICAgICAgICAgICAgICAgICAgIGlmIHN0YXRzX3R5cGVfcGFyYW1ldGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gc3RhdHNfdHlwZV9iYXNlX2F0dHJpYnV0ZXMKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBzdGF0c190eXBlX3BhcmFtcy5nZXQoc3RhdHNfdHlwZV9wYXJhbWV0ZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBhdHRyaWJ1dGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyA9IHt9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHNfdHlwZV9wYXJhbXNbc3RhdHNfdHlwZV9wYXJhbWV0ZXJdID0gYXR0cmlidXRlcwotICAgICAgICAgICAgICAgICAgICBsYXN0X3VwZGF0ZWRfZW50cnkgPSBhdHRyaWJ1dGVzLmdldCgnbGFzdC11cGRhdGVkJykKLSAgICAgICAgICAgICAgICAgICAgaWYgbGFzdF91cGRhdGVkX2VudHJ5IGlzIE5vbmUgb3IgbGF0ZXN0X3N0YXRfdHlwZV90aW1lc3RhbXAgPiBsYXN0X3VwZGF0ZWRfZW50cnlbMF06Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzWydsYXN0LXVwZGF0ZWQnXSA9IChsYXRlc3Rfc3RhdF90eXBlX3RpbWVzdGFtcCwgbGF0ZXN0X3N0YXRfdHlwZV90aW1lc3RhbXApCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgIyBVcGRhdGUgdGhlIHRhcmdldCBpbmRleAotICAgICAgICAgICAgaWYgbGF0ZXN0X2lkX3RpbWVzdGFtcCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBBbHdheXMgc2V0IHRoZSBjb250cm9sbGVyIGF0dHJpYnV0ZXMgZm9yIG5vdy4KLSAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQvc2hvdWxkIGJlIG9wdGltaXplZCB0byBub3Qgc2V0IHRoaXMgZm9yIHN0YXRzCi0gICAgICAgICAgICAgICAgIyB3aG9zZSB0YXJnZXQgdHlwZSBpcyAnY29udHJvbGxlcicgc2luY2UgdGhvc2Ugd2lsbAotICAgICAgICAgICAgICAgICMgYWx3YXlzIGJlIGNvbWluZyBmcm9tIHRoZSBzYW1lIGNvbnRyb2xsZXIgKGkuZS4gaXRzZWxmKS4KLSAgICAgICAgICAgICAgICAjIEJ1dCB0aGF0IGNoYW5nZSByZXF1aXJlcyBzb21lIGNoYW5nZXMgKGFsYmVpdCBtaW5vcikgdG8KLSAgICAgICAgICAgICAgICAjIHN5bmNkIHRvIHdvcmsgY29ycmVjdGx5IHdoaWNoIEkgZG9uJ3Qgd2FudCB0byBtZXNzIHdpdGgKLSAgICAgICAgICAgICAgICAjIHJpZ2h0IG5vdy4KLSAgICAgICAgICAgICAgICAjYXR0cmlidXRlcyA9IHsnbGFzdC11cGRhdGVkJzogKGxhdGVzdF9pZF90aW1lc3RhbXAsIGxhdGVzdF9pZF90aW1lc3RhbXApfQotICAgICAgICAgICAgICAgICNpZiB0YXJnZXRfdHlwZSAhPSAnY29udHJvbGxlcic6Ci0gICAgICAgICAgICAgICAgIyAgICBhdHRyaWJ1dGVzWydjb250cm9sbGVyJ10gPSBjb250cm9sbGVyX2lkCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlcyA9IHsnbGFzdC11cGRhdGVkJzogKGxhdGVzdF9pZF90aW1lc3RhbXAsIGxhdGVzdF9pZF90aW1lc3RhbXApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRyb2xsZXInOiAobGF0ZXN0X2lkX3RpbWVzdGFtcCwgY29udHJvbGxlcl9pZCl9Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X2lkX2xpc3QuYXBwZW5kKCh0YXJnZXRfaWQsIGF0dHJpYnV0ZXMpKQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIF9lOgotICAgICAgICByYWlzZSBTdGF0c0ludmFsaWRTdGF0c0RhdGFFeGNlcHRpb24oKQotICAgIAotICAgIGFkZF9zdGF0X3R5cGVfaW5kZXhfaW5mb190b19tdXRhdGlvbl9tYXAoY2x1c3RlciwgdGFyZ2V0X3R5cGUsIHN0YXRzX3R5cGVfaW5kZXgsIG11dGF0aW9uX21hcCkKLSAgICBhZGRfdGFyZ2V0X2lkX2xpc3RfdG9fbXV0YXRpb25fbWFwKGNsdXN0ZXIsIHRhcmdldF90eXBlLCB0YXJnZXRfaWRfbGlzdCwgbXV0YXRpb25fbWFwKQotICAgIAotICAgIGNhbGxfY2Fzc2FuZHJhX3dpdGhfcmVjb25uZWN0KHN0YXRzX2RiX2Nvbm5lY3Rpb24uZ2V0X2NsaWVudCgpLmJhdGNoX211dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbl9tYXAsIENvbnNpc3RlbmN5TGV2ZWwuT05FKQotCi0KLWRlZiBwdXRfc3RhdHNfZGF0YShjbHVzdGVyLCBzdGF0c19kYXRhKToKLSAgICBmb3IgdGFyZ2V0X3R5cGUsIHRhcmdldF9zdGF0c19kYXRhIGluIHN0YXRzX2RhdGEuaXRlbXMoKToKLSAgICAgICAgaWYgdGFyZ2V0X3R5cGUuZW5kc3dpdGgoU1RBVFNfVEFSR0VUX1RZUEVfUFVUX0RBVEFfU1VGRklYKToKLSAgICAgICAgICAgICMgU3RyaXAgb2ZmIHRoZSAnLXN0YXRzJyBzdWZmaXgKLSAgICAgICAgICAgIHRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGVbOi1sZW4oU1RBVFNfVEFSR0VUX1RZUEVfUFVUX0RBVEFfU1VGRklYKV0KLSAgICAgICAgX3B1dF9zdGF0c19kYXRhKGNsdXN0ZXIsIHRhcmdldF90eXBlLCB0YXJnZXRfc3RhdHNfZGF0YSkKLSAgICAgICAgCi0KLWRlZiBnZXRfZXZlbnRzX3BhZGRlZF9jb2x1bW5fcGFydChjb2x1bW5fcGFydCk6Ci0gICAgIiIiCi0gICAgRm9yIHRoZSBjb2x1bW5zIHRvIGJlIHNvcnRlZCBjb3JyZWN0bHkgYnkgdGltZSB3ZSBuZWVkIHRvIHBhZCB3aXRoCi0gICAgbGVhZGluZyB6ZXJvZXMgdXAgdG8gdGhlIG1heGltdW0gcmFuZ2Ugb2YgdGhlIGJ1Y2tldAotICAgICIiIgotICAgIGNvbHVtbl9wYXJ0ID0gc3RyKGNvbHVtbl9wYXJ0KQotICAgIGxlYWRpbmdfemVyb2VzID0gKCcwJyooRVZFTlRTX1BBRERFRF9DT0xVTU5fVElNRV9MRU5HVEgtbGVuKGNvbHVtbl9wYXJ0KSkpCi0gICAgY29sdW1uX3BhcnQgPSBsZWFkaW5nX3plcm9lcyArIGNvbHVtbl9wYXJ0Ci0gICAgcmV0dXJuIGNvbHVtbl9wYXJ0Ci0KLQotZGVmIHNwbGl0X2V2ZW50c190aW1lc3RhbXAodGltZXN0YW1wKToKLSAgICBrZXlfcGFydCA9IHRpbWVzdGFtcCAvIEVWRU5UU19CVUNLRVRfUEVSSU9ECi0gICAgY29sdW1uX3BhcnQgPSB0aW1lc3RhbXAgJSBFVkVOVFNfQlVDS0VUX1BFUklPRAotICAgIHJldHVybiAoa2V5X3BhcnQsIGNvbHVtbl9wYXJ0KQotCi0KLWRlZiBjb25zdHJ1Y3RfbG9nX2V2ZW50c19rZXkoY2x1c3Rlciwgbm9kZV9pZCwgdGltZXN0YW1wX2tleV9wYXJ0KToKLSAgICByZXR1cm4gY2x1c3RlciArICd8JyArIG5vZGVfaWQgKyAnfCcgKyBzdHIodGltZXN0YW1wX2tleV9wYXJ0KQotCi0KLWRlZiBnZXRfZXZlbnRzX3NsaWNlX3ByZWRpY2F0ZShjb2x1bW5fc3RhcnQsIGNvbHVtbl9lbmQpOgotICAgIGlmIGNvbHVtbl9zdGFydCAhPSAnJzoKLSAgICAgICAgY29sdW1uX3N0YXJ0ID0gZ2V0X2V2ZW50c19wYWRkZWRfY29sdW1uX3BhcnQoY29sdW1uX3N0YXJ0KQotICAgIGlmIGNvbHVtbl9lbmQgIT0gJyc6Ci0gICAgICAgICMgRm9yIHRoZSBmaW5hbCBrZXkgaW4gdGhlIHJhbmdlIG9mIGtleXMgd2Ugd2FudCBhbGwgb2YgdGhlCi0gICAgICAgICMgc3VwZXJjb2x1bW5zIHdob3NlIG5hbWUgc3RhcnRzIHdpdGggZW5kX2NvbHVtbl9wYXJ0LgotICAgICAgICAjIElmIHRoZSBldmVudCBoYXMgaW5jbHVkZXMgYSBwayB0YWcgdGhlbiB0aGUgZm9ybWF0IG9mIHRoZQotICAgICAgICAjIHN1cGVyY29sdW1uIG5hbWUgaXMgPHRpbWVzdGFtcC1wYXJ0Pjo8cGstdGFnPi4KLSAgICAgICAgIyBPdGhlcndpc2UgaXQncyBqdXN0IHRoZSA8dGltZXN0YW1wLXBhcnQ+LiBUbyBnZXQgYm90aCBvZiB0aGVzZQotICAgICAgICAjIGNhc2VzIHdlIHNldCB0aGUgY29sdW1uIGVuZCB2YWx1ZSB0byBiZSB0aGUgPHRpbWVzdGFtcC1wYXJ0PgotICAgICAgICAjIHN1ZmZpeGVkIHdpdGggJzsnICh3aGljaCBoYXMgYW4gb3JkaW5hbCB2YWx1ZSAxIGdyZWF0ZXIgdGhhbgotICAgICAgICAjICc6Jy4gU28gdGhpcyB3aWxsIGdldCBhbGwgb2YgdGhlIGV2ZW50cyB3aXRoIHRoZSBnaXZlbiBjb2x1bW4KLSAgICAgICAgIyBlbmQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGV5IGluY2x1ZGUgdGhlIHBrIHRhZy4KLSAgICAgICAgY29sdW1uX2VuZCA9IGdldF9ldmVudHNfcGFkZGVkX2NvbHVtbl9wYXJ0KGNvbHVtbl9lbmQpICsgJzsnCi0gICAgc2xpY2VfcHJlZGljYXRlID0gU2xpY2VQcmVkaWNhdGUoc2xpY2VfcmFuZ2U9U2xpY2VSYW5nZSgKLSAgICAgICAgc3RhcnQ9Y29sdW1uX3N0YXJ0LCBmaW5pc2g9Y29sdW1uX2VuZCwgY291bnQ9MTAwMDAwMCkpCi0gICAgcmV0dXJuIHNsaWNlX3ByZWRpY2F0ZQotCi0KLWRlZiBhcHBlbmRfbG9nX2V2ZW50c19yZXN1bHRzKGV2ZW50X3Jlc3VsdHMsIGV2ZW50X2xpc3QsIHRpbWVzdGFtcF9rZXlfcGFydCwgaW5jbHVkZV9wa190YWc9RmFsc2UpOgotICAgIHNoaWZ0ZWRfdGltZXN0YW1wX2tleV9wYXJ0ID0gaW50KHRpbWVzdGFtcF9rZXlfcGFydCkgKiBFVkVOVFNfQlVDS0VUX1BFUklPRAotICAgIGZvciBpdGVtIGluIGV2ZW50X3Jlc3VsdHM6Ci0gICAgICAgIGV2ZW50ID0ge30KLSAgICAgICAgc3VwZXJfY29sdW1uX25hbWUgPSBpdGVtLnN1cGVyX2NvbHVtbi5uYW1lCi0gICAgICAgIGNvbG9uX2luZGV4ID0gc3VwZXJfY29sdW1uX25hbWUuZmluZCgiOiIpCi0gICAgICAgIGlmIGNvbG9uX2luZGV4ID49IDA6Ci0gICAgICAgICAgICBpZiBpbmNsdWRlX3BrX3RhZzoKLSAgICAgICAgICAgICAgICBwa190YWcgPSBzdXBlcl9jb2x1bW5fbmFtZVtjb2xvbl9pbmRleDpdCi0gICAgICAgICAgICAgICAgZXZlbnRbJ3BrLXRhZyddID0gcGtfdGFnCi0gICAgICAgICAgICB0aW1lc3RhbXBfY29sdW1uX3BhcnQgPSBzdXBlcl9jb2x1bW5fbmFtZVs6Y29sb25faW5kZXhdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0aW1lc3RhbXBfY29sdW1uX3BhcnQgPSBzdXBlcl9jb2x1bW5fbmFtZQotICAgICAgICB0aW1lc3RhbXAgPSBzaGlmdGVkX3RpbWVzdGFtcF9rZXlfcGFydCArIGludCh0aW1lc3RhbXBfY29sdW1uX3BhcnQpCi0gICAgICAgIGV2ZW50Wyd0aW1lc3RhbXAnXSA9IHRpbWVzdGFtcAotICAgICAgICBmb3IgY29sdW1uIGluIGl0ZW0uc3VwZXJfY29sdW1uLmNvbHVtbnM6Ci0gICAgICAgICAgICBldmVudFtjb2x1bW4ubmFtZV0gPSBjb2x1bW4udmFsdWUKLSAgICAgICAgZXZlbnRfbGlzdC5hcHBlbmQoZXZlbnQpCi0KLSAgICAgCi1kZWYgZ2V0X2xvZ19ldmVudF9kYXRhKGNsdXN0ZXIsIG5vZGVfaWQsIHN0YXJ0X3RpbWUsIGVuZF90aW1lLCBpbmNsdWRlX3BrX3RhZz1GYWxzZSk6Ci0gICAgIyBGSVhNRTogQWRkIHNvbWUgdmFsaWRhdGlvbiBvZiBhcmd1bWVudHMKLSAgICBzdGFydF9rZXlfcGFydCwgc3RhcnRfY29sdW1uX3BhcnQgPSBzcGxpdF9ldmVudHNfdGltZXN0YW1wKGludChzdGFydF90aW1lKSkKLSAgICBlbmRfa2V5X3BhcnQsIGVuZF9jb2x1bW5fcGFydCA9IHNwbGl0X2V2ZW50c190aW1lc3RhbXAoaW50KGVuZF90aW1lKSkKLSAgICAKLSAgICBldmVudF9saXN0ID0gW10KLSAgICBjb2x1bW5fcGFyZW50ID0gQ29sdW1uUGFyZW50KGNvbHVtbl9mYW1pbHk9RVZFTlRTX0NPTFVNTl9GQU1JTFlfTkFNRSkKLSAgICBmb3Iga2V5X3BhcnQgaW4gcmFuZ2Uoc3RhcnRfa2V5X3BhcnQsIGVuZF9rZXlfcGFydCsxKToKLSAgICAgICAgY3VycmVudF9zdGFydCA9IHN0YXJ0X2NvbHVtbl9wYXJ0IGlmIGtleV9wYXJ0ID09IHN0YXJ0X2tleV9wYXJ0IGVsc2UgJycKLSAgICAgICAgY3VycmVudF9lbmQgPSBlbmRfY29sdW1uX3BhcnQgaWYga2V5X3BhcnQgPT0gZW5kX2tleV9wYXJ0IGVsc2UgJycKLSAgICAgICAgIyBGSVhNRTogSG93IGJpZyBjYW4gdGhlIGNvdW50IGJlPwotICAgICAgICBzbGljZV9wcmVkaWNhdGUgPSBnZXRfZXZlbnRzX3NsaWNlX3ByZWRpY2F0ZShjdXJyZW50X3N0YXJ0LCBjdXJyZW50X2VuZCkKLSAgICAgICAga2V5ID0gY29uc3RydWN0X2xvZ19ldmVudHNfa2V5KGNsdXN0ZXIsIG5vZGVfaWQsIGtleV9wYXJ0KQotICAgICAgICBmb3IgYXR0ZW1wdCBpbiAoMSwyKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXN1bHRzID0gc3RhdHNfZGJfY29ubmVjdGlvbi5nZXRfY2xpZW50KCkuZ2V0X3NsaWNlKGtleSwKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uX3BhcmVudCwgc2xpY2VfcHJlZGljYXRlLCBDb25zaXN0ZW5jeUxldmVsLk9ORSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IFRUcmFuc3BvcnQuVFRyYW5zcG9ydEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAjIE9ubHkgcmV0cnkgb25jZSwgc28gaWYgaXQncyB0aGUgc2Vjb25kIHRpbWUgdGhyb3VnaCwKLSAgICAgICAgICAgICAgICAjIHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgaWYgYXR0ZW1wdCA9PSAyOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBTdGF0c0RhdGFiYXNlQ29ubmVjdGlvbkV4Y2VwdGlvbigpCi0gICAgICAgICAgICAgICAgc3RhdHNfZGJfY29ubmVjdGlvbi5yZWNvbm5lY3QoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICByYWlzZSBTdGF0c0RhdGFiYXNlQWNjZXNzRXhjZXB0aW9uKCkKLSAgICAgICAgYXBwZW5kX2xvZ19ldmVudHNfcmVzdWx0cyhyZXN1bHRzLCBldmVudF9saXN0LCBrZXlfcGFydCwgaW5jbHVkZV9wa190YWcpCi0gICAgCi0gICAgcmV0dXJuIGV2ZW50X2xpc3QKLQotCi1kZWYgcHV0X2xvZ19ldmVudF9kYXRhKGNsdXN0ZXIsIGxvZ19ldmVudHNfZGF0YSk6Ci0gICAgdHJ5OgotICAgICAgICBtdXRhdGlvbl9tYXAgPSB7fQotICAgICAgICBmb3IgKG5vZGVfaWQsIG5vZGVfZXZlbnRzKSBpbiBsb2dfZXZlbnRzX2RhdGEuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBmb3IgZXZlbnQgaW4gbm9kZV9ldmVudHM6Ci0gICAgICAgICAgICAgICAgdGltZXN0YW1wID0gZXZlbnRbJ3RpbWVzdGFtcCddCi0gICAgICAgICAgICAgICAgcGtfdGFnID0gZXZlbnQuZ2V0KCdway10YWcnKQotICAgICAgICAgICAgICAgICMgSWYgdGhlIGVudHJ5IGluIHRoZSBwdXQgZGF0YSBkb2VzIG5vdCBzcGVjaWZ5IGEgdGFnLCB0aGVuIGdlbmVyYXRlIGEgcmFuZG9tIG9uZS4KLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgc28gdGhhdCB3ZSBjYW4gaGF2ZSBtdWx0aXBsZSBldmVudHMgd2l0aCB0aGUgc2FtZSB0aW1lc3RhbXAuCi0gICAgICAgICAgICAgICAgIyBGSVhNRTogSXMgdGhlcmUgc29tZXRoaW5nIGJldHRlciB3ZSBjYW4gZG8gaGVyZT8KLSAgICAgICAgICAgICAgICBpZiBub3QgcGtfdGFnOgotICAgICAgICAgICAgICAgICAgICBwa190YWcgPSByYW5kb20ucmFuZGludCgwLDEwMDAwMDAwMDAwKQotICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludCh0aW1lc3RhbXApCi0gICAgICAgICAgICAgICAgdGltZXN0YW1wX2tleV9wYXJ0LCB0aW1lc3RhbXBfY29sdW1uX3BhcnQgPSBzcGxpdF9ldmVudHNfdGltZXN0YW1wKHRpbWVzdGFtcCkKLSAgICAgICAgICAgICAgICBrZXkgPSBjb25zdHJ1Y3RfbG9nX2V2ZW50c19rZXkoY2x1c3Rlciwgbm9kZV9pZCwgdGltZXN0YW1wX2tleV9wYXJ0KQotICAgICAgICAgICAgICAgIGtleV9lbnRyeSA9IG11dGF0aW9uX21hcC5nZXQoa2V5KQotICAgICAgICAgICAgICAgIGlmIG5vdCBrZXlfZW50cnk6Ci0gICAgICAgICAgICAgICAgICAgIG11dGF0aW9uX2xpc3QgPSBbXQotICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbl9tYXBba2V5XSA9IHtFVkVOVFNfQ09MVU1OX0ZBTUlMWV9OQU1FOiBtdXRhdGlvbl9saXN0fQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG11dGF0aW9uX2xpc3QgPSBrZXlfZW50cnlbRVZFTlRTX0NPTFVNTl9GQU1JTFlfTkFNRV0KLSAgICAgICAgICAgICAgICBzdXBlcmNvbHVtbl9uYW1lID0gZ2V0X2V2ZW50c19wYWRkZWRfY29sdW1uX3BhcnQodGltZXN0YW1wX2NvbHVtbl9wYXJ0KQotICAgICAgICAgICAgICAgIGlmIHBrX3RhZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc3VwZXJjb2x1bW5fbmFtZSArPSAoJzonICsgc3RyKHBrX3RhZykpCi0gICAgICAgICAgICAgICAgIyBCdWlsZCB0aGUgbGlzdCBvZiBjb2x1bW5zIGluIHRoZSBzdXBlcmNvbHVtbgotICAgICAgICAgICAgICAgIGNvbHVtbl9saXN0ID0gW10KLSAgICAgICAgICAgICAgICBmb3IgKG5hbWUsIHZhbHVlKSBpbiBldmVudC5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSAhPSAndGltZXN0YW1wJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9saXN0LmFwcGVuZChDb2x1bW4obmFtZT1uYW1lLCB2YWx1ZT1zdHIodmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9dGltZXN0YW1wKjEwMDApKQotICAgICAgICAgICAgICAgIG11dGF0aW9uID0gTXV0YXRpb24oY29sdW1uX29yX3N1cGVyY29sdW1uPUNvbHVtbk9yU3VwZXJDb2x1bW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBlcl9jb2x1bW49U3VwZXJDb2x1bW4obmFtZT1zdXBlcmNvbHVtbl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucz1jb2x1bW5fbGlzdCkpKQotICAgICAgICAgICAgICAgIG11dGF0aW9uX2xpc3QuYXBwZW5kKG11dGF0aW9uKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHJhaXNlIFN0YXRzSW52YWxpZFN0YXRzRGF0YUV4Y2VwdGlvbigpCi0gICAgCi0gICAgY2FsbF9jYXNzYW5kcmFfd2l0aF9yZWNvbm5lY3Qoc3RhdHNfZGJfY29ubmVjdGlvbi5nZXRfY2xpZW50KCkuYmF0Y2hfbXV0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uX21hcCwgQ29uc2lzdGVuY3lMZXZlbC5PTkUpCi0KLWRlZiBkZWxldGVfbG9nX2V2ZW50X2RhdGEoY2x1c3Rlciwgbm9kZV9pZCwgc3RhcnRfdGltZSwgZW5kX3RpbWUpOgotICAgIHN0YXJ0X2tleV9wYXJ0LCBzdGFydF9jb2x1bW5fcGFydCA9IHNwbGl0X2V2ZW50c190aW1lc3RhbXAoaW50KHN0YXJ0X3RpbWUpKQotICAgIGVuZF9rZXlfcGFydCwgZW5kX2NvbHVtbl9wYXJ0ID0gc3BsaXRfZXZlbnRzX3RpbWVzdGFtcChpbnQoZW5kX3RpbWUpKQotICAgICMgVGhlIENhc3NhbmRyYSB0aW1lc3RhbXBzIGFyZSBpbiBtaWNyb3NlY29uZHMsIG5vdCBtaWxsaXNlY29uZHMsCi0gICAgIyBzbyB3ZSBjb252ZXJ0IHRvIG1pY3Jvc2Vjb25kcy4gVGhlIENhc3NhbmRyYSB0aW1lc3RhbXAgaXMgZGVyaXZlZAotICAgICMgZnJvbSB0aGUgZXZlbnQgdGltZXN0YW1wIChpLmUuIHNhbWUgdGltZSBjb252ZXJ0ZWQgdG8gbWljcm9zZWNvbmRzKSwKLSAgICAjIHNvIHdlIHVzZSB0aGUgZW5kX3RpbWUgKyAxLCBzaW5jZSB0aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBncmVhdGVyCi0gICAgIyB0aGFuIGFueSBvZiB0aGUgdGltZXN0YW1wcyBmb3IgdGhlIHNhbXBsZSBwb2ludHMgd2UncmUgZGVsZXRpbmcuCi0gICAgdGltZXN0YW1wID0gKGludChlbmRfdGltZSkgKiAxMDAwKSArIDEKLSAgICBjb2x1bW5fcGF0aCA9IENvbHVtblBhdGgoY29sdW1uX2ZhbWlseT1FVkVOVFNfQ09MVU1OX0ZBTUlMWV9OQU1FKQotICAgIGNvbHVtbl9wYXJlbnQgPSBDb2x1bW5QYXJlbnQoY29sdW1uX2ZhbWlseT1FVkVOVFNfQ09MVU1OX0ZBTUlMWV9OQU1FKQotICAgIGZvciBrZXlfcGFydCBpbiByYW5nZShzdGFydF9rZXlfcGFydCwgZW5kX2tleV9wYXJ0KzEpOgotICAgICAgICBrZXkgPSBjb25zdHJ1Y3RfbG9nX2V2ZW50c19rZXkoY2x1c3Rlciwgbm9kZV9pZCwga2V5X3BhcnQpCi0gICAgICAgIGN1cnJlbnRfc3RhcnQgPSBzdGFydF9jb2x1bW5fcGFydCBpZiBrZXlfcGFydCA9PSBzdGFydF9rZXlfcGFydCBlbHNlICcnCi0gICAgICAgIGN1cnJlbnRfZW5kID0gZW5kX2NvbHVtbl9wYXJ0IGlmIGtleV9wYXJ0ID09IGVuZF9rZXlfcGFydCBlbHNlICcnCi0gICAgICAgIGlmIGN1cnJlbnRfc3RhcnQgPT0gJycgYW5kIGN1cnJlbnRfZW5kID09ICcnOgotICAgICAgICAgICAgY2FsbF9jYXNzYW5kcmFfd2l0aF9yZWNvbm5lY3Qoc3RhdHNfZGJfY29ubmVjdGlvbi5nZXRfY2xpZW50KCkucmVtb3ZlLAotICAgICAgICAgICAgICAgIGtleSwgY29sdW1uX3BhdGgsIHRpbWVzdGFtcCwgQ29uc2lzdGVuY3lMZXZlbC5PTkUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGdycnIuIENhc3NhbmRyYSBjdXJyZW50bHkgZG9lc24ndCBzdXBwb3J0IGRvaW5nIGRlbGV0aW9ucyB2aWEgYQotICAgICAgICAgICAgIyBzbGljZSByYW5nZSAoaS5lLiBhIGNvbHVtbiBzdGFydCBhbmQgZW5kKS4gWW91IG5lZWQgdG8gZ2l2ZSBpdCBhCi0gICAgICAgICAgICAjIGxpc3Qgb2YgY29sdW1ucy4gU28gd2UgZG8gYSBnZXRfc2xpY2Ugd2l0aCB0aGUgc2xpY2UgcmFuZ2UgYW5kIHRoZW4KLSAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgaW5kaXZpZHVhbCBjb2x1bW4gbmFtZXMgZnJvbSB0aGUgcmVzdWx0IG9mIHRoYXQgYW5kCi0gICAgICAgICAgICAjIGJ1aWxkIHVwIHRoZSBjb2x1bW4gbGlzdCB0aGF0IHdlIGNhbiB1c2UgdG8gZGVsZXRlIHRoZSBjb2x1bW4KLSAgICAgICAgICAgICMgdXNpbmcgYmF0Y2hfbXV0YXRlLgotICAgICAgICAgICAgc2xpY2VfcHJlZGljYXRlID0gZ2V0X2V2ZW50c19zbGljZV9wcmVkaWNhdGUoY3VycmVudF9zdGFydCwgY3VycmVudF9lbmQpCi0gICAgICAgICAgICBnZXRfcmVzdWx0cyA9IGNhbGxfY2Fzc2FuZHJhX3dpdGhfcmVjb25uZWN0KAotICAgICAgICAgICAgICAgIHN0YXRzX2RiX2Nvbm5lY3Rpb24uZ2V0X2NsaWVudCgpLmdldF9zbGljZSwKLSAgICAgICAgICAgICAgICBrZXksIGNvbHVtbl9wYXJlbnQsIHNsaWNlX3ByZWRpY2F0ZSwgQ29uc2lzdGVuY3lMZXZlbC5PTkUpCi0gICAgICAgICAgICBjb2x1bW5fbmFtZXMgPSBbXQotICAgICAgICAgICAgZm9yIGl0ZW0gaW4gZ2V0X3Jlc3VsdHM6Ci0gICAgICAgICAgICAgICAgY29sdW1uX25hbWVzLmFwcGVuZChpdGVtLnN1cGVyX2NvbHVtbi5uYW1lKQotICAgICAgICAgICAgCi0gICAgICAgICAgICBkZWxldGlvbiA9IERlbGV0aW9uKHRpbWVzdGFtcD10aW1lc3RhbXAsIHByZWRpY2F0ZT1TbGljZVByZWRpY2F0ZShjb2x1bW5fbmFtZXM9Y29sdW1uX25hbWVzKSkKLSAgICAgICAgICAgIG11dGF0aW9uX21hcCA9IHtrZXk6IHtFVkVOVFNfQ09MVU1OX0ZBTUlMWV9OQU1FOiBbTXV0YXRpb24oZGVsZXRpb249ZGVsZXRpb24pXX19Ci0gICAgICAgICAgICBjYWxsX2Nhc3NhbmRyYV93aXRoX3JlY29ubmVjdChzdGF0c19kYl9jb25uZWN0aW9uLmdldF9jbGllbnQoKS5iYXRjaF9tdXRhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbl9tYXAsIENvbnNpc3RlbmN5TGV2ZWwuT05FKQotCi0KLWRlZiBnZXRfY2xvc2VzdF9zYW1wbGVfaW50ZXJ2YWwocmVxdWVzdGVkX3NhbXBsZV9pbnRlcnZhbCk6Ci0gICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKERPV05TQU1QTEVfSU5URVJWQUxTKSk6Ci0gICAgICAgIGlmIERPV05TQU1QTEVfSU5URVJWQUxTW2ldID4gcmVxdWVzdGVkX3NhbXBsZV9pbnRlcnZhbDoKLSAgICAgICAgICAgIGlmIGkgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdGVkX3NhbXBsZV9pbnRlcnZhbAotICAgICAgICAgICAgZG93bnNhbXBsZV9pbnRlcnZhbCA9IERPV05TQU1QTEVfSU5URVJWQUxTW2kgLSAxXQotICAgICAgICAgICAgYnJlYWsKLSAgICBlbHNlOgotICAgICAgICBkb3duc2FtcGxlX2ludGVydmFsID0gRE9XTlNBTVBMRV9JTlRFUlZBTFNbLTFdCi0gICAgIyBSZXR1cm4gdGhlIGNsb3Nlc3QgbXVsdGlwbGUgb2YgdGhlIGRvd25zYW1wbGVkIGludGVydmFsCi0gICAgcmV0dXJuIGRvd25zYW1wbGVfaW50ZXJ2YWwgKiAocmVxdWVzdGVkX3NhbXBsZV9pbnRlcnZhbCAvLyBkb3duc2FtcGxlX2ludGVydmFsKQotCi0KLWRlZiBnZXRfY2xvc2VzdF93aW5kb3dfaW50ZXJ2YWwocmVxdWVzdGVkX3dpbmRvdyk6Ci0gICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFdJTkRPV19JTlRFUlZBTFMpKToKLSAgICAgICAgaWYgV0lORE9XX0lOVEVSVkFMU1tpXSA+IHJlcXVlc3RlZF93aW5kb3c6Ci0gICAgICAgICAgICByZXR1cm4gV0lORE9XX0lOVEVSVkFMU1tpIC0gMV0gaWYgaSA+IDAgZWxzZSAwCi0gICAgcmV0dXJuIFdJTkRPV19JTlRFUlZBTFNbLTFdCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3N0YXRzL21vZGVscy5weSBiL2NsaS9zZG5jb24vc3RhdHMvbW9kZWxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhNDkzNDc1Li4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vc3RhdHMvbW9kZWxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gZGphbmdvLmRiIGltcG9ydCBtb2RlbHMKLSIiIgotY2xhc3MgU3RhdGRDb25maWcobW9kZWxzLk1vZGVsKToKLSAgICBzdGF0X3R5cGUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBwcmltYXJ5X2tleT1UcnVlLAotICAgICAgICB2ZXJib3NlX25hbWU9J1N0YXQgVHlwZScsCi0gICAgICAgIG1heF9sZW5ndGg9NjQpCi0gICAgCi0gICAgc2FtcGxpbmdfcGVyaW9kID0gbW9kZWxzLlBvc2l0aXZlSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1NhbXBsaW5nIFBlcmlvZCcsCi0gICAgICAgIGRlZmF1bHQ9MTUpCi0gICAgCi0gICAgcmVwb3J0aW5nX3BlcmlvZCA9IG1vZGVscy5Qb3NpdGl2ZUludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdSZXBvcnRpbmcgUGVyaW9kJywKLSAgICAgICAgZGVmYXVsdD02MCkKLSAgICAKLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3N0YXRkLWNvbmZpZycKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICdzdGF0X3R5cGUnLCAncmVzdF9uYW1lJzogJ3N0YXQtdHlwZSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ3NhbXBsaW5nX3BlcmlvZCcsICdyZXN0X25hbWUnOiAnc2FtcGxpbmctcGVyaW9kJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAncmVwb3J0aW5nX3BlcmlvZCcsICdyZXN0X25hbWUnOiAncmVwb3J0aW5nLXBlcmlvZCd9LAotICAgICAgICAgICAgKQotIiIiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9zdGF0cy9zdGF0c0ZpbGxlci5weSBiL2NsaS9zZG5jb24vc3RhdHMvc3RhdHNGaWxsZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDg5ZjIwMmYuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9zdGF0cy9zdGF0c0ZpbGxlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ4NCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1pbXBvcnQganNvbgotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgdXJsbGliMgotaW1wb3J0IHJlCi1pbXBvcnQgdXJsbGliCi1mcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIsIE9wdGlvbkdyb3VwCi0KLURFRkFVTFRfQ09OVFJPTExFUl9JRCA9ICdsb2NhbGhvc3QnCi0KLURFRkFVTFRfQkFUQ0ggPSA1Ci1ERUZBVUxUX1NBTVBMSU5HX0lOVEVSVkFMID0gNQotCi1TVEFUU19DUFUgPSAnY3B1JwotU1RBVFNfTUVNID0gJ21lbScKLVNUQVRTX1NXQVAgPSAnc3dhcCcKLVNUQVRTX09GID0gJ29mJwotU1RBVFNfTE9HID0gJ2xvZycKLQotU1RBVFMgPSBbU1RBVFNfQ1BVLCBTVEFUU19NRU0sIFNUQVRTX1NXQVAsIFNUQVRTX09GLCBTVEFUU19MT0ddCi0KLUJBU0VfVElNRSA9IDEyOTcyNzg5ODcwMDAKLVNFQ09ORFNfQ09OVkVSVCA9IDEwMDAKLU1JTlVURVNfQ09OVkVSVCA9IDYwICogU0VDT05EU19DT05WRVJUCi1IT1VSU19DT05WRVJUID0gNjAgKiBNSU5VVEVTX0NPTlZFUlQKLURBWVNfQ09OVkVSVCA9IDI0ICogSE9VUlNfQ09OVkVSVAotCi1udW1TYW1wbGVzID0gMAotc2FtcGxpbmdJbnRlcnZhbCA9IDAKLWJhdGNoU2l6ZSA9IDAKLXN0YXRzVHlwZXMgPSBbXSAKLW51bVN3aXRjaGVzID0gMAotc3dpdGNoSURzID0gW10KLXNlZWQgPSAwCi1jb250cm9sbGVyID0gJycKLWxvZ2dlciA9IDAKLWRlYnVnTGV2ZWwgPSBsb2dnaW5nLklORk8KLWxvZ2ZpbGUgPSAnZmlsbGVyLmxvZycKLQotZGVmIGluaXRMb2dnZXIoKToKLSAgICAjIGNyZWF0ZSBhIHN0YXRGaWxsZXIgbG9nZ2VyCi0gICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImZpbGxlciIpCi0gICAgbG9nZ2VyLnNldExldmVsKGRlYnVnTGV2ZWwpCi0KLSAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigiJShhc2N0aW1lKXMgWyUobmFtZSlzXSAlKGxldmVsbmFtZSlzICUobWVzc2FnZSlzIikKLSAgICAjIEFkZCBhIGZpbGUgaGFuZGxlcgotICAgIHJmX2hhbmRsZXIgPSBsb2dnaW5nLkZpbGVIYW5kbGVyKGxvZ2ZpbGUpCi0gICAgcmZfaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQotICAgIGxvZ2dlci5hZGRIYW5kbGVyKHJmX2hhbmRsZXIpCi0KLSAgICAjIEFkZCBhIGNvbnNvbGUgaGFuZGxlcgotICAgIGNvX2hhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQotICAgIGNvX2hhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKLSAgICBjb19oYW5kbGVyLnNldExldmVsKGxvZ2dpbmcuV0FSTklORykKLSAgICBsb2dnZXIuYWRkSGFuZGxlcihjb19oYW5kbGVyKQotCi0gICAgcmV0dXJuIGxvZ2dlcgotCi1kZWYgaW50VG9EcGlkKGludFZhbHVlKToKLSAgICBpbXBvcnQgc3RyaW5nCi0gICAgcmV0ID0gW10KLSAgICBpZiBpbnRWYWx1ZSA+ICgyKioxMjgtMSk6Ci0gICAgICAgIGludFZhbHVlID0gMioqMTI4LTEKLSAgICBmb3IgaSBpbiByYW5nZSgxNik6Ci0gICAgICAgIG1hc2sgPSAweDBmPDwoaSo0KQotICAgICAgICB0bXAgPSAoaW50VmFsdWUmbWFzayk+PihpKjQpCi0gICAgICAgIHJldC5pbnNlcnQoMCxzdHJpbmcuaGV4ZGlnaXRzW3RtcF0pCi0gICAgICAgIGlmIGkgIT0gMTUgYW5kIGklMiA9PSAxOgotICAgICAgICAgICAgcmV0Lmluc2VydCgwLCAnOicpCi0KLSAgICByZXR1cm4gJycuam9pbihyZXQpCi0KLWRlZiBnZXRSYW5kb21JbmMoKToKLSAgICAiIiIgCi0gICAgUmFuZG9tbHkgY3JlYXRlIGFuIGludGVnZXIgZnJvbSAxIHRvIDEwMAotICAgICIiIgotICAgIHJldHVybiByYW5kb20ucmFuZGludCgxLDEwMCkKLQotZGVmIGdldFJhbmRvbUludChtYXgpOgotICAgICIiIiAKLSAgICBSYW5kb21seSBjcmVhdGUgYW4gaW50ZWdlciBmcm9tIDEgdG8gbWF4Ci0gICAgIiIiCi0gICAgaWYgbWF4IDw9IDE6Ci0gICAgICAgIHJldHVybiAxCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHJhbmRvbS5yYW5kaW50KDEsbWF4KQotCi1kZWYgZ2V0UmFuZG9tUGVyY2VudGFnZShtYXgpOgotICAgICIiIiAKLSAgICBSYW5kb21seSBjcmVhdGUgYSB0d28tZGVjaW1hbCBwZXJjZW50YWdlCi0gICAgIiIiCi0gICAgcGVyY2VudE1heCA9IGludChtYXggKiAxMDApCi0gICAgaWYgcGVyY2VudE1heCA8IDI6Ci0gICAgICAgIHJldHVybiAwLjAxCi0gICAgZWxzZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdiA9IGZsb2F0KHJhbmRvbS5yYW5kaW50KDEsIHBlcmNlbnRNYXgpKQotICAgICAgICAgICAgcmV0dXJuIHYvMTAwCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IgKCJlcnJvcjogJXMsIHBlcmNlbnRNYXg9JWQiJShlLCBwZXJjZW50TWF4KSkKLSAgICAgICAgICAgIHJldHVybiAwLjAxCi0KLWNsYXNzIFN0YXRzRmlsbGVyKCk6Ci0gIAotICAgIHN0YXRzRGF0YSA9IHt9Ci0gICAgbG9nRGF0YSA9IHt9Ci0gICAgCi0gICAgb2ZfcGFja2V0aW4gPSAwIAotICAgIG9mX2Zsb3dtb2QgPSAwIAotICAgIG9mX2FjdGl2ZWZsb3cgPSAwIAotICAgIGhvc3RJRCA9ICdsb2NhbGhvc3QnCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtU2FtcGxlcywgc2FtcGxpbmdJbnRlcnZhbCwgYmF0Y2hTaXplLCBzd2l0Y2hJRHMsIHN0YXRzVHlwZXMsIGhvc3RJRCwgY2x1c3RlciwgY29tcG9uZW50cywgc2VlZCwgbG9nZ2VyKToKLSAgICAgICAgc2VsZi5udW1TYW1wbGVzID0gbnVtU2FtcGxlcwotICAgICAgICBzZWxmLnNhbXBsaW5nSW50ZXJ2YWwgPSBzYW1wbGluZ0ludGVydmFsCi0gICAgICAgIHNlbGYuYmF0Y2hTaXplID0gYmF0Y2hTaXplCi0gICAgICAgIHNlbGYuc3dpdGNoSURzID0gc3dpdGNoSURzCi0gICAgICAgIHNlbGYuc3RhdHNUeXBlcyA9IHN0YXRzVHlwZXMKLSAgICAgICAgc2VsZi5jb250cm9sbGVySUQgPSBob3N0SUQKLSAgICAgICAgc2VsZi5jbHVzdGVyID0gY2x1c3RlcgotICAgICAgICBzZWxmLmNvbXBvbmVudHMgPSBjb21wb25lbnRzCi0gICAgICAgIHNlbGYuc2VlZCA9IHNlZWQKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLQotICAgIGRlZiByZXByKHNlbGYpOgotICAgICAgICByZXR1cm4gc3RyKHNlbGYuc3RhdHNEYXRhKQotIAotICAgIGRlZiBpbml0U3RhdHNEYXRhKHNlbGYpOgotICAgICAgICBpZiBTVEFUU19DUFUgaW4gc2VsZi5zdGF0c1R5cGVzIG9yIFNUQVRTX01FTSBpbiBzZWxmLnN0YXRzVHlwZXMgb3IgU1RBVFNfU1dBUCBpbiBzZWxmLnN0YXRzVHlwZXM6Ci0gICAgICAgICAgICBzZWxmLnN0YXRzRGF0YVsnY29udHJvbGxlci1zdGF0cyddID0ge30KLSAgICAgICAgICAgIHNlbGYuc3RhdHNEYXRhWydjb250cm9sbGVyLXN0YXRzJ11bc2VsZi5ob3N0SURdID0ge30KLQotICAgICAgICAgICAgaWYgU1RBVFNfQ1BVIGluIHNlbGYuc3RhdHNUeXBlczogCi0gICAgICAgICAgICAgICAgc2VsZi5zdGF0c0RhdGFbJ2NvbnRyb2xsZXItc3RhdHMnXVtzZWxmLmhvc3RJRF1bJ2NwdS1pZGxlJ10gPSBbXQotICAgICAgICAgICAgICAgIHNlbGYuc3RhdHNEYXRhWydjb250cm9sbGVyLXN0YXRzJ11bc2VsZi5ob3N0SURdWydjcHUtbmljZSddID0gW10KLSAgICAgICAgICAgICAgICBzZWxmLnN0YXRzRGF0YVsnY29udHJvbGxlci1zdGF0cyddW3NlbGYuaG9zdElEXVsnY3B1LXVzZXInXSA9IFtdCi0gICAgICAgICAgICAgICAgc2VsZi5zdGF0c0RhdGFbJ2NvbnRyb2xsZXItc3RhdHMnXVtzZWxmLmhvc3RJRF1bJ2NwdS1zeXN0ZW0nXSA9IFtdCi0gICAgICAgICAgICBpZiAgU1RBVFNfTUVNIGluIHNlbGYuc3RhdHNUeXBlczoKLSAgICAgICAgICAgICAgICBzZWxmLnN0YXRzRGF0YVsnY29udHJvbGxlci1zdGF0cyddW3NlbGYuaG9zdElEXVsnbWVtLXVzZWQnXSA9IFtdCi0gICAgICAgICAgICAgICAgc2VsZi5zdGF0c0RhdGFbJ2NvbnRyb2xsZXItc3RhdHMnXVtzZWxmLmhvc3RJRF1bJ21lbS1mcmVlJ10gPSBbXQotICAgICAgICAgICAgaWYgIFNUQVRTX1NXQVAgaW4gc2VsZi5zdGF0c1R5cGVzOgotICAgICAgICAgICAgICAgIHNlbGYuc3RhdHNEYXRhWydjb250cm9sbGVyLXN0YXRzJ11bc2VsZi5ob3N0SURdWydzd2FwLXVzZWQnXSA9IFtdCi0gICAgICAgIAotICAgICAgICBpZiBTVEFUU19PRiBpbiBzZWxmLnN0YXRzVHlwZXM6Ci0gICAgICAgICAgICBzZWxmLnN0YXRzRGF0YVsnc3dpdGNoLXN0YXRzJ10gPSB7fQotICAgICAgICAgICAgZm9yIGRwaWQgaW4gc3dpdGNoSURzOgotICAgICAgICAgICAgICAgIHNlbGYuc3RhdHNEYXRhWydzd2l0Y2gtc3RhdHMnXVtkcGlkXSA9IHt9Ci0KLSAgICAgICAgICAgIGlmIFNUQVRTX09GIGluIHNlbGYuc3RhdHNUeXBlczogCi0gICAgICAgICAgICAgICAgZm9yIGRwaWQgaW4gc3dpdGNoSURzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRzRGF0YVsnc3dpdGNoLXN0YXRzJ11bZHBpZF1bJ09GUGFja2V0SW4nXSA9IFtdCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdHNEYXRhWydzd2l0Y2gtc3RhdHMnXVtkcGlkXVsnT0ZGbG93TW9kJ10gPSBbXQotICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRzRGF0YVsnc3dpdGNoLXN0YXRzJ11bZHBpZF1bJ09GQWN0aXZlRmxvdyddID0gW10KLSAKLSAgICAgICAgaWYgU1RBVFNfTE9HIGluIHNlbGYuc3RhdHNUeXBlczoKLSAgICAgICAgICAgIHNlbGYubG9nRGF0YVtzZWxmLmhvc3RJRF0gPSBbXQotICAgICAgICAgICAgCi0gICAgZGVmIGdlbmVyYXRlX2Ffc3dfc3RhdChzZWxmLCB0aW1lc3RhbXAsIGRwaWQsIHN0YXRzVHlwZXMsIHZhbHVlKToKLSAgICAgICAgc2FtcGxlID0geyd0aW1lc3RhbXAnOnRpbWVzdGFtcCwgJ3ZhbHVlJzp2YWx1ZX0KLSAgICAgICAgc2VsZi5zdGF0c0RhdGFbJ3N3aXRjaC1zdGF0cyddW2RwaWRdW3N0YXRzVHlwZXNdLmFwcGVuZChzYW1wbGUpCi0KLSAgICBkZWYgZ2VuZXJhdGVfYV9jb250cm9sbGVyX3N0YXQoc2VsZiwgdGltZXN0YW1wLCBzdGF0c1R5cGVzLCB2YWx1ZSk6Ci0gICAgICAgIHNhbXBsZSA9IHsndGltZXN0YW1wJzp0aW1lc3RhbXAsICd2YWx1ZSc6dmFsdWV9Ci0gICAgICAgIHNlbGYuc3RhdHNEYXRhWydjb250cm9sbGVyLXN0YXRzJ11bc2VsZi5ob3N0SURdW3N0YXRzVHlwZXNdLmFwcGVuZChzYW1wbGUpCi0KLSAgICBkZWYgZ2VuZXJhdGVfbG9nX2V2ZW50KHNlbGYsIHRpbWVzdGFtcCwgY29tcG9uZW50LCBsb2dfbGV2ZWwsIG1lc3NhZ2UpOgotICAgICAgICBldmVudCA9IHsndGltZXN0YW1wJzp0aW1lc3RhbXAsICdjb21wb25lbnQnOmNvbXBvbmVudCwgJ2xvZy1sZXZlbCc6bG9nX2xldmVsLCdtZXNzYWdlJzptZXNzYWdlfQotICAgICAgICBzZWxmLmxvZ0RhdGFbc2VsZi5ob3N0SURdLmFwcGVuZChldmVudCkKLSAgICAgICAgCi0gICAgZGVmIGdlbmVyYXRlX2FfYmF0Y2goc2VsZiwgc3RhcnRUaW1lLCBiYXRjaFNpemUpOgotICAgICAgICBmb3IgaSBpbiByYW5nZShiYXRjaFNpemUpOgotICAgICAgICAgICAgIyBHZXQgdGhlIHNhbXBsZSB0aW1lc3RhbXAgaW4gbXMKLSAgICAgICAgICAgIHRzID0gaW50KHN0YXJ0VGltZSArIGkgKiBzZWxmLnNhbXBsaW5nSW50ZXJ2YWwpKjEwMDAKLSAgICAgICAgICAgICMgY29udHJvbGxlciBzdGF0cwotICAgICAgICAgICAgaWYgU1RBVFNfQ1BVIGluIHNlbGYuc3RhdHNUeXBlczoKLSAgICAgICAgICAgICAgICBtYXggPSAxMDAuMDAKLSAgICAgICAgICAgICAgICB2ID0gZ2V0UmFuZG9tUGVyY2VudGFnZShtYXgpCi0gICAgICAgICAgICAgICAgc2VsZi5nZW5lcmF0ZV9hX2NvbnRyb2xsZXJfc3RhdCh0cywgJ2NwdS1pZGxlJywgcm91bmQodiwgMikpCi0gICAgICAgICAgICAgICAgbWF4IC09IHYKLSAgICAgICAgICAgICAgICB2ID0gZ2V0UmFuZG9tUGVyY2VudGFnZShtYXgpCi0gICAgICAgICAgICAgICAgc2VsZi5nZW5lcmF0ZV9hX2NvbnRyb2xsZXJfc3RhdCh0cywgJ2NwdS1uaWNlJywgcm91bmQodiwgMikpCi0gICAgICAgICAgICAgICAgbWF4IC09IHYKLSAgICAgICAgICAgICAgICB2ID0gZ2V0UmFuZG9tUGVyY2VudGFnZShtYXgpCi0gICAgICAgICAgICAgICAgc2VsZi5nZW5lcmF0ZV9hX2NvbnRyb2xsZXJfc3RhdCh0cywgJ2NwdS11c2VyJywgcm91bmQodiwgMikpCi0gICAgICAgICAgICAgICAgbWF4IC09IHYKLSAgICAgICAgICAgICAgICBzZWxmLmdlbmVyYXRlX2FfY29udHJvbGxlcl9zdGF0KHRzLCAnY3B1LXN5c3RlbScsIHJvdW5kKHYsIDIpKQotICAgICAgICAgICAgaWYgIFNUQVRTX01FTSBpbiBzZWxmLnN0YXRzVHlwZXM6Ci0gICAgICAgICAgICAgICAgbWF4ID0gZ2V0UmFuZG9tSW50KDEwMDAwMDAwMDApCi0gICAgICAgICAgICAgICAgdiA9IGdldFJhbmRvbUludChtYXgpCi0gICAgICAgICAgICAgICAgc2VsZi5nZW5lcmF0ZV9hX2NvbnRyb2xsZXJfc3RhdCh0cywgJ21lbS11c2VkJywgdikKLSAgICAgICAgICAgICAgICBtYXggLT0gdgotICAgICAgICAgICAgICAgIHNlbGYuZ2VuZXJhdGVfYV9jb250cm9sbGVyX3N0YXQodHMsICdtZW0tZnJlZScsIG1heCkKLSAgICAgICAgICAgIGlmICBTVEFUU19TV0FQIGluIHNlbGYuc3RhdHNUeXBlczoKLSAgICAgICAgICAgICAgICBtYXggPSBnZXRSYW5kb21JbnQoMTAwMDAwMDAwMCkKLSAgICAgICAgICAgICAgICB2ID0gZ2V0UmFuZG9tSW50KG1heCkKLSAgICAgICAgICAgICAgICBzZWxmLmdlbmVyYXRlX2FfY29udHJvbGxlcl9zdGF0KHRzLCAnc3dhcC11c2VkJywgdikKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICMgc3dpdGNoIHN0YXRzCi0gICAgICAgICAgICBpZiBTVEFUU19PRiBpbiBzZWxmLnN0YXRzVHlwZXM6Ci0gICAgICAgICAgICAgICAgZm9yIGRwaWQgaW4gc2VsZi5zd2l0Y2hJRHM6Ci0gICAgICAgICAgICAgICAgICAgICNwcmludCAiYWRkIHN0YXRzIGZvciAlcyIlZHBpZAotICAgICAgICAgICAgICAgICAgICBzZWxmLm9mX3BhY2tldGluID0gZ2V0UmFuZG9tSW50KDEwMCkgCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZ2VuZXJhdGVfYV9zd19zdGF0KHRzLCBkcGlkLCAnT0ZQYWNrZXRJbicsIHNlbGYub2ZfcGFja2V0aW4pCi0gICAgICAgICAgICAgICAgICAgIHNlbGYub2ZfZmxvd21vZCA9IGdldFJhbmRvbUludCgxMDApIAotICAgICAgICAgICAgICAgICAgICBzZWxmLmdlbmVyYXRlX2Ffc3dfc3RhdCh0cywgZHBpZCwgJ09GRmxvd01vZCcsIHNlbGYub2ZfZmxvd21vZCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5vZl9hY3RpdmVmbG93ID0gZ2V0UmFuZG9tSW50KDEwMCkgCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZ2VuZXJhdGVfYV9zd19zdGF0KHRzLCBkcGlkLCAnT0ZBY3RpdmVGbG93Jywgc2VsZi5vZl9hY3RpdmVmbG93KQotCi0gICAgICAgICAgICBpZiBTVEFUU19MT0cgaW4gc2VsZi5zdGF0c1R5cGVzOgotICAgICAgICAgICAgICAgIGZvciBjb21wb25lbnQgaW4gY29tcG9uZW50czoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5nZW5lcmF0ZV9sb2dfZXZlbnQodHMsIGNvbXBvbmVudCwgJ0Vycm9yJywgJ0Fub3RoZXIgbG9nIG1lc3NhZ2UnKQotICAgICAgICAgICAgICAgICAgICAKLSAgICBkZWYgY29uc3RydWN0UmVzdFJybHMoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBDb25zdHJ1Y3QgdGhlIFJFU1QgVVJMIGZvciB0aGUgZ2l2ZW4gaG9zdC9zdGF0c1BhdGgsIGluY2x1ZGluZwotICAgICAgICB0aGUgaXRlbXMgaW4gdGhlIHF1ZXJ5X3BhcmFtcyBkaWN0aW9uYXJ5IGFzIFVSTC1lbmNvZGVkIHF1ZXJ5IHBhcmFtZXRlcnMKLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuc3RhdHNVcmwgPSAnaHR0cDovLyVzOjgwMDAvcmVzdC92MS9zdGF0cy9kYXRhLyVzJyUoc2VsZi5jb250cm9sbGVySUQsIHNlbGYuY2x1c3RlcikKLSAgICAgICAgc2VsZi5sb2dVcmwgPSAnaHR0cDovLyVzOjgwMDAvcmVzdC92MS9ldmVudHMvZGF0YS8lcyclKHNlbGYuY29udHJvbGxlcklELCBzZWxmLmNsdXN0ZXIpCi0KLSAgICBkZWYgcHJpbnRSZXN0RXJyb3JJbmZvKHNlbGYsIGUpOgotICAgICAgICAiIiIKLSAgICAgICAgRXh0cmFjdCB0aGUgZXJyb3IgaW5mb3JtYXRpb24gYW5kIHByaW50IGl0LgotICAgICAgICBUaGlzIGlzIG1haW5seSBpbnRlbmRlZCB0byBkZW1vbnN0cmF0ZSBob3cgdG8gZXh0cmFjdCB0aGUKLSAgICAgICAgZXJyb3IgaW5mbyBmcm9tIHRoZSBleGNlcHRpb24uIEl0IG1heSBvciBtYXkgbm90IG1ha2Ugc2Vuc2UKLSAgICAgICAgdG8gcHJpbnQgb3V0IHRoaXMgaW5mb3JtYXRpb24sIGRlcGVuZGluZyBvbiB0aGUgYXBwbGljYXRpb24uCi0gICAgICAgICIiIgotICAgICAgICAjIEV4dHJhY3QgdGhlIGluZm8gZnJvbSB0aGUgZXhjZXB0aW9uCi0gICAgICAgIGVycm9yX2NvZGUgPSBlLmdldGNvZGUoKQotICAgICAgICByZXNwb25zZV90ZXh0ID0gZS5yZWFkKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBQcmludCB0aGUgZXJyb3IgaW5mbwotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdIVFRQIGVycm9yOiBjb2RlID0gJWQsICVzJyUoZXJyb3JfY29kZSwgcmVzcG9uc2VfdGV4dCkpCi0KLSAgICAgICAgICAgIG9iaiA9IGpzb24ubG9hZHMocmVzcG9uc2VfdGV4dCkKLSAgICAgICAgICAgIGVycm9yX3R5cGUgPSBvYmouZ2V0KCdlcnJvcl90eXBlJykKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gb2JqLmdldCgnZGVzY3JpcHRpb24nKQotCi0gICAgICAgICAgICAjIFByaW50IHRoZSBlcnJvciBpbmZvCi0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0hUVFAgZXJyb3IgY29kZSA9ICVkOyBlcnJvcl90eXBlID0gJXM7IGRlc2NyaXB0aW9uID0gJXMnJShlcnJvcl9jb2RlLCBzdHIoZXJyb3JfdHlwZSksIGRlc2NyaXB0aW9uKSkKLQotICAgICAgICAgICAgIyBQcmludCB0aGUgb3B0aW9uYWwgdmFsaWRhdGlvbiBlcnJvciBpbmZvCi0gICAgICAgICAgICBtb2RlbF9lcnJvciA9IG9iai5nZXQoJ21vZGVsX2Vycm9yJykKLSAgICAgICAgICAgIGlmIG1vZGVsX2Vycm9yOgotICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignbW9kZWxfZXJyb3IgPSAlcyclc3RyKG1vZGVsX2Vycm9yKSkKLSAgICAgICAgICAgIGZpZWxkX2Vycm9ycyA9IG9iai5nZXQoJ2ZpZWxkX2Vycm9ycycpCi0gICAgICAgICAgICBpZiBmaWVsZF9lcnJvcnM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdmaWVsZF9lcnJvcnMgPSAlcyclc3RyKGZpZWxkX2Vycm9ycykpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoZSkKLQotCi0gICAgZGVmIHB1dFJlc3REYXRhKHNlbGYsIHVybCwgb2JqKToKLSAgICAgICAgIiIiCi0gICAgICAgIFB1dCB0aGUgZ2l2ZW4gb2JqZWN0IGRhdGEgdG8gdGhlIGdpdmVuIHR5cGUvaWQvcGFyYW1zIGF0IHRoZSBnaXZlbiBob3N0LgotICAgICAgICBJZiBib3RoIHRoZSBpZCBhbmQgcXVlcnlfcGFyYW1fZGljdCBhcmUgZW1wdHksIHRoZW4gYSBuZXcgaXRlbSBpcyBjcmVhdGVkLgotICAgICAgICBPdGhlcndpc2UsIGV4aXN0aW5nIGRhdGEgaXRlbXMgYXJlIHVwZGF0ZWQgd2l0aCB0aGUgb2JqZWN0IGRhdGEuCi0gICAgICAgICIiIgotCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygiVVJMOiAlcyIldXJsKQotICAgICAgICBsb2dnZXIuZGVidWcoIlNlbmRpbmc6ICVzIiVvYmopCi0gICAgICAgIHJlcXVlc3QgPSB1cmxsaWIyLlJlcXVlc3QodXJsLCBvYmosIHsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbid9KQotICAgICAgICByZXF1ZXN0LmdldF9tZXRob2QgPSBsYW1iZGE6ICdQVVQnCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3BvbnNlID0gdXJsbGliMi51cmxvcGVuKHJlcXVlc3QpCi0gICAgICAgICAgICByZXQgPSByZXNwb25zZS5yZWFkKCkKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiR290IHJlc3BvbnNlOiAlcyIlc3RyKHJldCkpCi0gICAgICAgICAgICByZXR1cm4gcmV0Ci0gICAgICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBFcnJvciBhcyBlOgotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJHb3QgRXhjZXB0aW9uOiAlcyIlc3RyKGUpKQotICAgICAgICAgICAgc2VsZi5wcmludFJlc3RFcnJvckluZm8oZSkKLQotCi0gICAgZGVmIHBvc3REYXRhKHNlbGYpOgotICAgICAgICAiIiIgCi0gICAgICAgIFB1dCB0aGUgZ2l2ZW4gb2JqZWN0IGRhdGEgdG8gdGhlIGdpdmVuIHR5cGUvaWQvcGFyYW1zIGF0IHRoZSBnaXZlbiBob3N0LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLmNvbnN0cnVjdFJlc3RScmxzKCkKLQotICAgICAgICBpZiBzZWxmLnN0YXRzRGF0YToKLSAgICAgICAgICAgIG91dHB1dCA9IGpzb24uSlNPTkVuY29kZXIoKS5lbmNvZGUoc2VsZi5zdGF0c0RhdGEpCi0gICAgICAgICAgICByZXRNc2cgPSBzZWxmLnB1dFJlc3REYXRhKHNlbGYuc3RhdHNVcmwsIG91dHB1dCkKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJQdXQgcmVzdCBjYWxsIGZvciBzdGF0cyBkYXRhIHJldHVybnM6ICVzIiVyZXRNc2cpCi0gICAgICAgIGlmIHNlbGYubG9nRGF0YToKLSAgICAgICAgICAgIG91dHB1dCA9IGpzb24uSlNPTkVuY29kZXIoKS5lbmNvZGUoc2VsZi5sb2dEYXRhKQotICAgICAgICAgICAgcmV0TXNnID0gc2VsZi5wdXRSZXN0RGF0YShzZWxmLmxvZ1VybCwgb3V0cHV0KQotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlB1dCByZXN0IGNhbGwgZm9yIGxvZyBkYXRhIHJldHVybnM6ICVzIiVyZXRNc2cpCi0gICAgICAgICAgICAKLSAgICBkZWYgZmlsbChzZWxmKToKLSAgICAgICAgZW5kVGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHN0YXJ0VGltZSA9IGVuZFRpbWUgLSBzZWxmLm51bVNhbXBsZXMgKiBzZWxmLnNhbXBsaW5nSW50ZXJ2YWwKLSAgICAgICAgcmVtYWluaW5nU2FtcGxlcyA9IHNlbGYubnVtU2FtcGxlcyAKLSAgICAgICAgYmF0Y2hTaXplID0gMAotICAgICAgICB3aGlsZSByZW1haW5pbmdTYW1wbGVzID4gMDoKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJzdGFydHRpbWUgPSAlcyglZCksIGVuZHRpbWUgPSAlcyglZCkiJSh0aW1lLmN0aW1lKHN0YXJ0VGltZSksc3RhcnRUaW1lLHRpbWUuY3RpbWUoZW5kVGltZSksZW5kVGltZSkpCi0gICAgICAgICAgICBzZWxmLmluaXRTdGF0c0RhdGEoKQotICAgICAgICAgICAgaWYgcmVtYWluaW5nU2FtcGxlcyA8IHNlbGYuYmF0Y2hTaXplOgotICAgICAgICAgICAgICAgIGJhdGNoU2l6ZSA9IHJlbWFpbmluZ1NhbXBsZXMKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYmF0Y2hTaXplID0gc2VsZi5iYXRjaFNpemUKLSAgICAgICAgICAgIHJlbWFpbmluZ1NhbXBsZXMgLT0gYmF0Y2hTaXplCi0gICAgICAgICAgICBzZWxmLmdlbmVyYXRlX2FfYmF0Y2goc3RhcnRUaW1lLCBiYXRjaFNpemUpCi0gICAgICAgICAgICBzdGFydFRpbWUgKz0gc2VsZi5zYW1wbGluZ0ludGVydmFsICogYmF0Y2hTaXplCi0gICAgICAgICAgICBzZWxmLnBvc3REYXRhKCkKLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiUwLjJmJSVcciIlKGZsb2F0KHNlbGYubnVtU2FtcGxlcy1yZW1haW5pbmdTYW1wbGVzKSoxMDAvc2VsZi5udW1TYW1wbGVzKSkKLQotZGVmIHBhcnNlTG9nTGV2ZWwobGV2ZWwpOgotICAgIGlmICdkZWJ1Zycuc3RhcnRzd2l0aChsZXZlbCk6Ci0gICAgICAgIHJldHVybiBsb2dnaW5nLkRFQlVHCi0gICAgZWxpZiAnaW5mbycuc3RhcnRzd2l0aChsZXZlbCk6Ci0gICAgICAgIHJldHVybiBsb2dnaW5nLklORk8KLSAgICBlbGlmICd3YXJuaW5nJy5zdGFydHN3aXRoKGxldmVsKToKLSAgICAgICAgcmV0dXJuIGxvZ2dpbmcuV0FSTklORwotICAgIGVsaWYgJ2Vycm9yJy5zdGFydHN3aXRoKGxldmVsKToKLSAgICAgICAgcmV0dXJuIGxvZ2dpbmcuRVJST1IKLSAgICBlbGlmICdjcml0aWNhbCcuc3RhcnRzd2l0aChsZXZlbCk6Ci0gICAgICAgIHJldHVybiBsb2dnaW5nLkNSSVRJQ0FMCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotZGVmIHByb2Nlc3NPcHRpb25zKG9wdGlvbnMpOgotICAgICIiIgotICAgIFByb2Nlc3MgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKLSAgICAiIiIKLQotICAgIGdsb2JhbCBudW1TYW1wbGVzCi0gICAgZ2xvYmFsIHNhbXBsaW5nSW50ZXJ2YWwKLSAgICBnbG9iYWwgYmF0Y2hTaXplCi0gICAgZ2xvYmFsIHN0YXRzVHlwZXMKLSAgICBnbG9iYWwgbnVtU3dpdGNoZXMKLSAgICBnbG9iYWwgc3dpdGNoSURzCi0gICAgZ2xvYmFsIHNlZWQKLSAgICBnbG9iYWwgY29udHJvbGxlcgotICAgIGdsb2JhbCBjbHVzdGVyCi0gICAgZ2xvYmFsIGNvbXBvbmVudHMKLSAgICBnbG9iYWwgZGVidWdMZXZlbAotICAgIGdsb2JhbCBsb2dmaWxlCi0KLSAgICBpZiBvcHRpb25zLm51bVNhbXBsZXM6Ci0gICAgICAgIG51bVNhbXBsZXMgPSBvcHRpb25zLm51bVNhbXBsZXMKLQotICAgIGlmIG9wdGlvbnMucGVyaW9kOgotICAgICAgICBtID0gcmUuc2VhcmNoKCIoWzAtOV0qKShbQS1aYS16XSopJCIsIG9wdGlvbnMucGVyaW9kKQotICAgICAgICAodmFsdWUsIHVuaXQpID0gbS5ncm91cHMoKQotICAgICAgICBpZiB2YWx1ZToKLSAgICAgICAgICAgIHZhbHVlID0gaW50KHZhbHVlKQotICAgICAgICBpZiB1bml0OgotICAgICAgICAgICAgaWYgJ21pbnV0ZXMnLnN0YXJ0c3dpdGgodW5pdCk6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSA2MCp2YWx1ZQotICAgICAgICAgICAgZWxpZiAnaG91cnMnLnN0YXJ0c3dpdGgodW5pdCk6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSA2MCo2MCp2YWx1ZQotICAgICAgICAgICAgZWxpZiAnZGF5cycuc3RhcnRzd2l0aCh1bml0KToKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IDI0KjYwKjYwKnZhbHVlCi0gICAgICAgICAgICBlbGlmIG5vdCAnc2Vjb25kcycuc3RhcnRzd2l0aCh1bml0KToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHBlcmlvZDogJXMiJW9wdGlvbnMucGVyaW9kKQotICAgICAgICBudW1TYW1wbGVzID0gdmFsdWUKLQotICAgIGlmIG9wdGlvbnMuc2FtcGxlSW50ZXJ2YWw6Ci0gICAgICAgIHNhbXBsaW5nSW50ZXJ2YWwgPSBvcHRpb25zLnNhbXBsZUludGVydmFsCi0gICAgZWxzZToKLSAgICAgICAgc2FtcGxpbmdJbnRlcnZhbCA9IERFRkFVTFRfU0FNUExJTkdfSU5URVJWQUwKLQotICAgIG51bVNhbXBsZXMgLz0gc2FtcGxpbmdJbnRlcnZhbAotICAgIAotICAgIGlmIG9wdGlvbnMuYmF0Y2hTaXplOgotICAgICAgICBiYXRjaFNpemUgPSBvcHRpb25zLmJhdGNoU2l6ZQotICAgIGVsc2U6Ci0gICAgICAgIGJhdGNoU2l6ZSA9IERFRkFVTFRfQkFUQ0gKLQotICAgIGlmIG9wdGlvbnMubnVtU3dpdGNoZXM6Ci0gICAgICAgIG51bVN3aXRjaGVzID0gb3B0aW9ucy5udW1Td2l0Y2hlcwotCi0gICAgaWYgb3B0aW9ucy5zdGF0c1R5cGVzOgotICAgICAgICBzdGF0c1R5cGVzID0gb3B0aW9ucy5zdGF0c1R5cGVzLnNwbGl0KCcsJykKLSAgICAgICAgZm9yIHN0YXQgaW4gc3RhdHNUeXBlczoKLSAgICAgICAgICAgIGlmIHN0YXQgbm90IGluIFNUQVRTOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgc3RhdDogJXMiJXN0YXQpCi0KLSAgICBpZiBvcHRpb25zLnNlZWQ6Ci0gICAgICAgIHNlZWQgPSBvcHRpb25zLnNlZWQKLSAgICBlbHNlOgotICAgICAgICBzZWVkID0gcmFuZG9tLnJhbmRvbSgpCi0KLSAgICBpZiBvcHRpb25zLmNvbnRyb2xsZXI6Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBvcHRpb25zLmNvbnRyb2xsZXIKLSAgICBlbHNlOgotICAgICAgICBjb250cm9sbGVyID0gJ2xvY2FsaG9zdCcKLQotICAgIGlmIG9wdGlvbnMuY2x1c3RlcjoKLSAgICAgICAgY2x1c3RlciA9IG9wdGlvbnMuY2x1c3RlcgotICAgIGVsc2U6Ci0gICAgICAgIGNsdXN0ZXIgPSAnZGVmYXVsdCcKLQotICAgIGNvbXBvbmVudHMgPSBvcHRpb25zLmNvbXBvbmVudHMuc3BsaXQoJywnKQotICAgIAotICAgIGlmIG9wdGlvbnMuZGVidWdMZXZlbDoKLSAgICAgICAgZGVidWdMZXZlbCA9IHBhcnNlTG9nTGV2ZWwob3B0aW9ucy5kZWJ1Z0xldmVsKQotICAgIGVsc2U6Ci0gICAgICAgIGRlYnVnTGV2ZWwgPSBsb2dnaW5nLklORk8KLQotICAgIGlmIG5vdCBkZWJ1Z0xldmVsOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbmNvcnJlY3QgZGVidWcgbGV2ZWwsICVzLiIlb3B0aW9ucy5kZWJ1Z0xldmVsKQotCi0gICAgaWYgb3B0aW9ucy5sb2dmaWxlOgotICAgICAgICBsb2dmaWxlID0gb3B0aW9ucy5sb2dmaWxlCi0gICAgZWxzZToKLSAgICAgICAgbG9nZmlsZSA9ICdmaWxsZXIubG9nJwotCi0KLSAgICBpZiBsZW4oc3RhdHNUeXBlcykgPT0gMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3RhdHNUeXBlcyBpcyByZXF1aXJlZC4iKQotCi0gICAgaWYgU1RBVFNfT0YgaW4gc3RhdHNUeXBlczoKLSAgICAgICAgaWYgbnVtU3dpdGNoZXMgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm51bVN3aXRjaGVzIG11c3QgYmUgbm9uemVybyB0byBnZW5lcmF0ZSBvZiBzdGF0cy4iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtU3dpdGNoZXMpOgotICAgICAgICAgICAgICAgIHN3aXRjaElEcy5hcHBlbmQoaW50VG9EcGlkKGkpKQotCi0gICAgaWYgbnVtU2FtcGxlcyA9PSAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJudW1TYW1wbGVzIG9yIHBlcmlvZCBpcyByZXF1aXJlZCIpCi0KLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcigpCi0gICAgZ3JvdXAgPSBPcHRpb25Hcm91cChwYXJzZXIsICJDb21tb25seSBVc2VkIE9wdGlvbnMiKQotICAgIGdyb3VwLmFkZF9vcHRpb24oIi1uIiwgIi0tbnVtU2FtcGxlcyIsIGRlc3Q9Im51bVNhbXBsZXMiLCB0eXBlPSJsb25nIiwgaGVscD0iTnVtYmVyIG9mIHNhbXBsZXMgdG8gYmUgZ2VuZXJhdGVkLiBDYW4gTk9UIGJlIHVzZWQgd2l0aCB0aW1lUGVyaW9kIG9wdGlvbi4iKSAKLSAgICBncm91cC5hZGRfb3B0aW9uKCItcCIsICItLXRpbWVQZXJpb2QiLCBkZXN0PSJwZXJpb2QiLCBoZWxwPSJUaGUgdGltZSBwZXJpb2QgdG8gZmlsbCB0aGUgc3RhdHMgZGF0YS4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZm9ybWF0IGNhbiBiZSBpbiBzZWNvbmRzLCBtaW51dGVzLCBob3Vycywgb3IgZGF5cy4gZS5nLiAxMDBzKGVjb25kcyksIDE1bShpbnV0ZXMpLCAyaChvdXJzKSwgM2QoYXlzKS4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4gTk9UIGJlIHVzZWQgd2l0aCBudW1TYW1wbGVzIG9wdGlvbi4iKSAKLSAgICBncm91cC5hZGRfb3B0aW9uKCItdCIsICItLXNhbXBsaW5nSW50ZXJ2YWwiLCBkZXN0PSJzYW1wbGVJbnRlcnZhbCIsIHR5cGUgPSAiaW50IiwgaGVscD0iVGhlIHNhbXBsaW5nIGludGVydmFsIGluIHNlY29uZHMiKSAKLSAgICBncm91cC5hZGRfb3B0aW9uKCItYiIsICItLWJhdGNoU2l6ZSIsIGRlc3Q9ImJhdGNoU2l6ZSIsIHR5cGUgPSAiaW50IiwgaGVscD0iVGhlIG51bWJlciBvZiBzYW1wbGVzIGZvciBlYWNoIHJlc3QgcHV0IikgCi0gICAgZ3JvdXAuYWRkX29wdGlvbigiLXMiLCAiLS1udW1Td2l0Y2hlcyIsIGRlc3Q9Im51bVN3aXRjaGVzIiwgdHlwZSA9ICJpbnQiLCBoZWxwPSJUaGUgbnVtYmVyIG9mIHN3aXRjaGVzIGZvciBPRiBzdGF0cy4gVGhlIGRwaWRzIHN0YXJ0IHdpdGggIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDA6MDA6MDA6MDA6MDA6MDA6MDA6MDEgYW5kIGluY3JlbWVudCB0byB0aGUgbnVtYmVyIG9mIHN3aXRjaGVzLiIpIAotICAgIGdyb3VwLmFkZF9vcHRpb24oIi1tIiwgIi0tc3RhdHNUeXBlcyIsIGRlc3Q9InN0YXRzVHlwZXMiLCBoZWxwPSJBIGNvbW1hIHNlcGFyYXRlZCBzdGF0c1R5cGVzLCBPcHRpb25zIGFyZSBjcHUsIG1lbSwgc3dhcCwgb2YsIGFuZCBsb2cuIiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGUuZy4gY3B1LG1lbSIpCi0gICAgZ3JvdXAuYWRkX29wdGlvbigiLWMiLCAiLS1jb250cm9sbGVyIiwgZGVzdD0iY29udHJvbGxlciIsIGhlbHA9IlRoZSBJUCBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIikgCi0gICAgZ3JvdXAuYWRkX29wdGlvbigiLXUiLCAiLS1jbHVzdGVyIiwgZGVzdD0iY2x1c3RlciIsIGhlbHA9ImNsdXN0ZXIgSUQiKQotICAgIGdyb3VwLmFkZF9vcHRpb24oIi16IiwgIi0tY29tcG9uZW50cyIsIGRlc3Q9ImNvbXBvbmVudHMiLCBkZWZhdWx0PSJzZG5wbGF0Zm9ybSxjYXNzYW5kcmEiLCBoZWxwPSJBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXBvbmVudCBuYW1lcyBmb3IgbG9nIGV2ZW50cyIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAoZ3JvdXApCi0KLSAgICBsY19ncm91cCA9IE9wdGlvbkdyb3VwKHBhcnNlciwgIkxlc3MgQ29tbW9ubHkgVXNlZCBPcHRpb25zIikKLSAgICBsY19ncm91cC5hZGRfb3B0aW9uKCItciIsICItLXNlZWQiLCBkZXN0PSJzZWVkIiwgdHlwZSA9ICJpbnQiLCBoZWxwPSJTYW1lIGRhdGEgY2FuIGJlIHJlY3JlYXRlZCBieSBzZXR0aW5nIHRoZSBzYW1lIHNlZWQgZm9yIHRoZSByYW5kb21pemVyIikgCi0gICAgbGNfZ3JvdXAuYWRkX29wdGlvbigiLWQiLCAiLS1kZWJ1Z0xldmVsIiwgZGVzdD0iZGVidWdMZXZlbCIsIGhlbHA9IlNldCB0aGUgbG9nIGxldmVsIGZvciBsb2dnaW5nOiBkZWJ1ZywgaW5mbywgd2FybmluZywgY3JpdGljYWwsIGVycm9yIikgCi0gICAgbGNfZ3JvdXAuYWRkX29wdGlvbigiLWYiLCAiLS1sb2dmaWxlIiwgZGVzdD0ibG9nZmlsZSIsIGhlbHA9IlRoZSBsb2dmaWxlIHRoYXQga2VlcHMgdGhlIGxvZ3MuIERlZmF1bHQgaXMgZmlsbGVyLmxvZyIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAobGNfZ3JvdXApCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCi0gICAgaWYgbGVuKGFyZ3MpICE9IDA6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHM6ICVzIiVhcmdzKQotCi0KLSAgICB0cnk6Ci0gICAgICAgIHByb2Nlc3NPcHRpb25zKG9wdGlvbnMpCi0gICAgICAgIGxvZ2dlciA9IGluaXRMb2dnZXIoKQotICAgICAgICBsb2dnZXIuZGVidWcoIm51bVNhbXBsZTolZCwgc2FtcGxpbmdJbnRlcnZhbDolZCwgYmF0Y2hTaXplPSVkLCBzdGF0c1R5cGVzPSVzLCBudW1Td2l0Y2hlcz0lZCBzd2l0Y2hJRHM9JXMgc2VlZD0lZiBjbHVzdGVyPSVzIGNvbXBvbmVudHM9JXMiJQotICAgICAgICAgICAgICAgICAgICAobnVtU2FtcGxlcywgc2FtcGxpbmdJbnRlcnZhbCwgYmF0Y2hTaXplLCBzdGF0c1R5cGVzLCBudW1Td2l0Y2hlcywgc3dpdGNoSURzLCBzZWVkLCBjbHVzdGVyLCBjb21wb25lbnRzKSkgCi0gICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKLSAgICAgICAgcHJpbnQoIkVycm9yOiAlcyIlZSkKLSAgICAgICAgc3lzLmV4aXQoKQotCi0gICAgZmlsbGVyID0gU3RhdHNGaWxsZXIobnVtU2FtcGxlcywgc2FtcGxpbmdJbnRlcnZhbCwgYmF0Y2hTaXplLCBzd2l0Y2hJRHMsIHN0YXRzVHlwZXMsIGNvbnRyb2xsZXIsIGNsdXN0ZXIsIGNvbXBvbmVudHMsIHNlZWQsIGxvZ2dlcikKLSAgICBmaWxsZXIuZmlsbCgpCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3N0YXRzL3Rlc3RzLnB5IGIvY2xpL3NkbmNvbi9zdGF0cy90ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjJjNjllMS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3N0YXRzL3Rlc3RzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzk0ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1mcm9tIGRqYW5nby50ZXN0IGltcG9ydCBUZXN0Q2FzZSwgQ2xpZW50Ci1pbXBvcnQgdXJsbGliCi1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgc2ltcGxlanNvbgotZnJvbSAuZGF0YSBpbXBvcnQgc2V0X3VzZV90ZXN0X2tleXNwYWNlLCBmbHVzaF9zdGF0c19kYgotaW1wb3J0IHRpbWUKLWZyb20gc2RuY29uLmNvbnRyb2xsZXIuY29uZmlnIGltcG9ydCBnZXRfbG9jYWxfY29udHJvbGxlcl9pZAotCi1kZWYgc2V0VXBNb2R1bGUoKToKLSAgICBzZXRfdXNlX3Rlc3Rfa2V5c3BhY2UoKQotICAgIAotZGVmIHRlc3RfY29uc3RydWN0X3Jlc3RfdXJsKHBhdGgsIHF1ZXJ5X3BhcmFtcz1Ob25lKToKLSAgICB1cmwgPSAnL3Jlc3QvJXMnICUgcGF0aAotICAgIGlmIHF1ZXJ5X3BhcmFtczoKLSAgICAgICAgdXJsICs9ICc/JwotICAgICAgICB1cmwgKz0gdXJsbGliLnVybGVuY29kZShxdWVyeV9wYXJhbXMpCi0gICAgcmV0dXJuIHVybAotCi1kZWYgdGVzdF9nZXRfcmVzdF9kYXRhKHBhdGgsIHF1ZXJ5X3BhcmFtcz1Ob25lKToKLSAgICB1cmwgPSB0ZXN0X2NvbnN0cnVjdF9yZXN0X3VybChwYXRoLCBxdWVyeV9wYXJhbXMpCi0gICAgYyA9IENsaWVudCgpCi0gICAgcmVzcG9uc2UgPSBjLmdldCh1cmwpCi0gICAgcmV0dXJuIHJlc3BvbnNlCi0KLWRlZiB0ZXN0X3B1dF9yZXN0X2RhdGEob2JqLCBwYXRoLCBxdWVyeV9wYXJhbXM9Tm9uZSk6Ci0gICAgdXJsID0gdGVzdF9jb25zdHJ1Y3RfcmVzdF91cmwocGF0aCwgcXVlcnlfcGFyYW1zKQotICAgIGRhdGEgPSBzaW1wbGVqc29uLmR1bXBzKG9iaikKLSAgICBjID0gQ2xpZW50KCkKLSAgICByZXNwb25zZSA9IGMucHV0KHVybCAsIGRhdGEsICdhcHBsaWNhdGlvbi9qc29uJykKLSAgICByZXR1cm4gcmVzcG9uc2UKLQotZGVmIHRlc3RfZGVsZXRlX3Jlc3RfZGF0YShwYXRoLCBxdWVyeV9wYXJhbXM9Tm9uZSk6Ci0gICAgdXJsID0gdGVzdF9jb25zdHJ1Y3RfcmVzdF91cmwocGF0aCwgcXVlcnlfcGFyYW1zKQotICAgIGMgPSBDbGllbnQoKQotICAgIHJlc3BvbnNlID0gYy5kZWxldGUodXJsKQotICAgIHJldHVybiByZXNwb25zZQotCi1CQVNFX1RJTUUgPSAxMjk3Mjc4OTg3MDAwCi1TRUNPTkRTX0NPTlZFUlQgPSAxMDAwCi1NSU5VVEVTX0NPTlZFUlQgPSA2MCAqIFNFQ09ORFNfQ09OVkVSVAotSE9VUlNfQ09OVkVSVCA9IDYwICogTUlOVVRFU19DT05WRVJUCi1EQVlTX0NPTlZFUlQgPSAyNCAqIEhPVVJTX0NPTlZFUlQKLQotZGVmIG1ha2VfdGltZXN0YW1wKGRheSwgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pbGxpc2Vjb25kcz0wKToKLSAgICB0aW1lc3RhbXAgPSBCQVNFX1RJTUUgKyAoZGF5ICogREFZU19DT05WRVJUKSArIChob3VyICogSE9VUlNfQ09OVkVSVCkgKyBcCi0gICAgICAgIChtaW51dGUgKiBNSU5VVEVTX0NPTlZFUlQpICsgKHNlY29uZCAqIFNFQ09ORFNfQ09OVkVSVCkgKyBtaWxsaXNlY29uZHMKLSAgICByZXR1cm4gdGltZXN0YW1wCi0KLWNsYXNzIFN0YXRzVGVzdENhc2UoVGVzdENhc2UpOgotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgZmx1c2hfc3RhdHNfZGIoKQotICAgICAgICAKLWNsYXNzIEJhc2ljU3RhdHNUZXN0KFN0YXRzVGVzdENhc2UpOgotICAgIAotICAgIFNUQVRTX0RBVEEgPSB7Ci0gICAgICAgICdjb250cm9sbGVyLXN0YXRzJzogewotICAgICAgICAgICAgJzE5Mi4xNjguMS4xJzogewotICAgICAgICAgICAgICAgICdjcHUtc3lzdGVtJzogWwotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMSwwKSwndmFsdWUnOjF9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMSwxKSwndmFsdWUnOjJ9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMSwyKSwndmFsdWUnOjN9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMSwzKSwndmFsdWUnOjR9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMSw0KSwndmFsdWUnOjV9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMiwxKSwndmFsdWUnOjZ9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMiwyKSwndmFsdWUnOjd9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMyw1KSwndmFsdWUnOjh9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMyw4KSwndmFsdWUnOjl9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoNCwxMCksJ3ZhbHVlJzoxMH0sCi0gICAgICAgICAgICAgICAgICAgIHsndGltZXN0YW1wJzptYWtlX3RpbWVzdGFtcCg0LDExKSwndmFsdWUnOjExfSwKLSAgICAgICAgICAgICAgICAgICAgeyd0aW1lc3RhbXAnOm1ha2VfdGltZXN0YW1wKDEwLDExKSwndmFsdWUnOjEyfSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICdjcHUtaWRsZSc6IFsKLSAgICAgICAgICAgICAgICAgICAgeyd0aW1lc3RhbXAnOm1ha2VfdGltZXN0YW1wKDEsMSksJ3ZhbHVlJzo4MH0sCi0gICAgICAgICAgICAgICAgICAgIHsndGltZXN0YW1wJzptYWtlX3RpbWVzdGFtcCgxLDIpLCd2YWx1ZSc6ODN9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMSwzKSwndmFsdWUnOjgyfSwKLSAgICAgICAgICAgICAgICAgICAgeyd0aW1lc3RhbXAnOm1ha2VfdGltZXN0YW1wKDEsNCksJ3ZhbHVlJzo3OX0sCi0gICAgICAgICAgICAgICAgICAgIHsndGltZXN0YW1wJzptYWtlX3RpbWVzdGFtcCgxLDUpLCd2YWx1ZSc6ODV9LAotICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgJ3N3aXRjaC1zdGF0cyc6IHsKLSAgICAgICAgICAgICcwMDowMTowMjowMzowNDowNSc6IHsKLSAgICAgICAgICAgICAgICAnZmxvdy1jb3VudCc6IFsKLSAgICAgICAgICAgICAgICAgICAgeyd0aW1lc3RhbXAnOm1ha2VfdGltZXN0YW1wKDEsMCksJ3ZhbHVlJzo2MH0sCi0gICAgICAgICAgICAgICAgICAgIHsndGltZXN0YW1wJzptYWtlX3RpbWVzdGFtcCgxLDEpLCd2YWx1ZSc6ODh9LAotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMSwyKSwndmFsdWUnOjEwMn0sCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAncGFja2V0LWNvdW50JzogWwotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMSwwKSwndmFsdWUnOjEwMH0sCi0gICAgICAgICAgICAgICAgICAgIHsndGltZXN0YW1wJzptYWtlX3RpbWVzdGFtcCgxLDEpLCd2YWx1ZSc6MTIwfSwKLSAgICAgICAgICAgICAgICAgICAgeyd0aW1lc3RhbXAnOm1ha2VfdGltZXN0YW1wKDEsMiksJ3ZhbHVlJzoxNjB9LAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgJ3BhY2tldC1jb3VudF9fYXJwJzogWwotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMSwwKSwndmFsdWUnOjIwfSwKLSAgICAgICAgICAgICAgICAgICAgeyd0aW1lc3RhbXAnOm1ha2VfdGltZXN0YW1wKDEsMyksJ3ZhbHVlJzoyNX0sCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAncGFja2V0LWNvdW50X19sbGRwJzogWwotICAgICAgICAgICAgICAgICAgICB7J3RpbWVzdGFtcCc6bWFrZV90aW1lc3RhbXAoMSwwKSwndmFsdWUnOjMwfSwKLSAgICAgICAgICAgICAgICAgICAgeyd0aW1lc3RhbXAnOm1ha2VfdGltZXN0YW1wKDEsNCksJ3ZhbHVlJzoxNX0sCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZGVmIGNoZWNrX3N0YXRzX3Jlc3VsdHMoc2VsZiwgcmV0dXJuZWRfcmVzdWx0cywgZXhwZWN0ZWRfcmVzdWx0cywgbWVzc2FnZT1Ob25lKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmV0dXJuZWRfcmVzdWx0cyksIGxlbihleHBlY3RlZF9yZXN1bHRzKSwgbWVzc2FnZSkKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJldHVybmVkX3Jlc3VsdHMpKToKLSAgICAgICAgICAgIGV4cGVjdGVkX3RpbWVzdGFtcCA9IGV4cGVjdGVkX3Jlc3VsdHNbaV1bJ3RpbWVzdGFtcCddCi0gICAgICAgICAgICByZXR1cm5lZF90aW1lc3RhbXAgPSByZXR1cm5lZF9yZXN1bHRzW2ldWzBdCi0gICAgICAgICAgICBleHBlY3RlZF92YWx1ZSA9IGV4cGVjdGVkX3Jlc3VsdHNbaV1bJ3ZhbHVlJ10KLSAgICAgICAgICAgIHJldHVybmVkX3ZhbHVlID0gcmV0dXJuZWRfcmVzdWx0c1tpXVsxXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90aW1lc3RhbXAsIHJldHVybmVkX3RpbWVzdGFtcCwgbWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFsdWUsIHJldHVybmVkX3ZhbHVlLCBtZXNzYWdlKQotICAgIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X3B1dF9yZXN0X2RhdGEoc2VsZi5TVEFUU19EQVRBLCAndjEvc3RhdHMvZGF0YS9sb2NhbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgCi0gICAgZGVmIHRlc3RfZ2V0X3N0YXRzKHNlbGYpOgotICAgICAgICAjIEdldCBhbGwgb2YgdGhlIGNwdS1zeXN0ZW0gc3RhdCBkYXRhCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9kYXRhKCd2MS9zdGF0cy9kYXRhL2xvY2FsL2NvbnRyb2xsZXIvMTkyLjE2OC4xLjEvY3B1LXN5c3RlbScsIHsnc3RhcnQtdGltZSc6bWFrZV90aW1lc3RhbXAoMSwwKSwnZW5kLXRpbWUnOm1ha2VfdGltZXN0YW1wKDEwLDExKSwgJ3NhbXBsZS1pbnRlcnZhbCc6MH0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgcmVzdWx0cyA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5jaGVja19zdGF0c19yZXN1bHRzKHJlc3VsdHMsIHNlbGYuU1RBVFNfREFUQVsnY29udHJvbGxlci1zdGF0cyddWycxOTIuMTY4LjEuMSddWydjcHUtc3lzdGVtJ10pCi0gICAgICAgIAotICAgICAgICAjIEdldCBqdXN0IG9uZSBkYXlzIGRhdGEgb2YgdGhlIGNwdS1zeXN0ZW0gc3RhdAotICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfZGF0YSgndjEvc3RhdHMvZGF0YS9sb2NhbC9jb250cm9sbGVyLzE5Mi4xNjguMS4xL2NwdS1zeXN0ZW0nLCB7J3N0YXJ0LXRpbWUnOm1ha2VfdGltZXN0YW1wKDEsMCksJ2VuZC10aW1lJzptYWtlX3RpbWVzdGFtcCgxLDQpLCAnc2FtcGxlLWludGVydmFsJzowfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICByZXN1bHRzID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZS5jb250ZW50KQotICAgICAgICBzZWxmLmNoZWNrX3N0YXRzX3Jlc3VsdHMocmVzdWx0cywgc2VsZi5TVEFUU19EQVRBWydjb250cm9sbGVyLXN0YXRzJ11bJzE5Mi4xNjguMS4xJ11bJ2NwdS1zeXN0ZW0nXVs6NV0pCi0KLSAgICAgICAgIyBHZXQgdHdvIGRheSByYW5nZSBmb3IgY3B1LXN5c3RlbQotICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfZGF0YSgndjEvc3RhdHMvZGF0YS9sb2NhbC9jb250cm9sbGVyLzE5Mi4xNjguMS4xL2NwdS1zeXN0ZW0nLCB7J3N0YXJ0LXRpbWUnOm1ha2VfdGltZXN0YW1wKDEsMiwxMCksJ2VuZC10aW1lJzptYWtlX3RpbWVzdGFtcCgyLDIsMjApLCAnc2FtcGxlLWludGVydmFsJzowfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICByZXN1bHRzID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZS5jb250ZW50KQotICAgICAgICBzZWxmLmNoZWNrX3N0YXRzX3Jlc3VsdHMocmVzdWx0cywgc2VsZi5TVEFUU19EQVRBWydjb250cm9sbGVyLXN0YXRzJ11bJzE5Mi4xNjguMS4xJ11bJ2NwdS1zeXN0ZW0nXVszOjddKQotICAgICAgICAKLSAgICAgICAgIyBHZXQgYWxsIG9mIHRoZSBmbG93LWNvdW50IHN3aXRjaCBzdGF0IGRhdGEKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X2RhdGEoJ3YxL3N0YXRzL2RhdGEvbG9jYWwvc3dpdGNoLzAwOjAxOjAyOjAzOjA0OjA1L2Zsb3ctY291bnQnLCB7J3N0YXJ0LXRpbWUnOm1ha2VfdGltZXN0YW1wKDEsMCksJ2VuZC10aW1lJzptYWtlX3RpbWVzdGFtcCgyLDApLCAnc2FtcGxlLWludGVydmFsJzowfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICByZXN1bHRzID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZS5jb250ZW50KQotICAgICAgICBzZWxmLmNoZWNrX3N0YXRzX3Jlc3VsdHMocmVzdWx0cywgc2VsZi5TVEFUU19EQVRBWydzd2l0Y2gtc3RhdHMnXVsnMDA6MDE6MDI6MDM6MDQ6MDUnXVsnZmxvdy1jb3VudCddKQotCi0gICAgICAgICMgR2V0IHBhcnQgb2YgdGhlIHBhY2tldC1jb3VudCBzd2l0Y2ggc3RhdCBkYXRhCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9kYXRhKCd2MS9zdGF0cy9kYXRhL2xvY2FsL3N3aXRjaC8wMDowMTowMjowMzowNDowNS9wYWNrZXQtY291bnQnLCB7J3N0YXJ0LXRpbWUnOm1ha2VfdGltZXN0YW1wKDEsMCksJ2VuZC10aW1lJzptYWtlX3RpbWVzdGFtcCgxLDEpLCAnc2FtcGxlLWludGVydmFsJzowfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICByZXN1bHRzID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZS5jb250ZW50KQotICAgICAgICBzZWxmLmNoZWNrX3N0YXRzX3Jlc3VsdHMocmVzdWx0cywgc2VsZi5TVEFUU19EQVRBWydzd2l0Y2gtc3RhdHMnXVsnMDA6MDE6MDI6MDM6MDQ6MDUnXVsncGFja2V0LWNvdW50J11bOjJdKQotCi0gICAgZGVmIHRlc3RfZGVsZXRlX3N0YXRzKHNlbGYpOgotICAgICAgICAjIERlbGV0ZSBhbGwgYnV0IHRoZSBmaXJzdCAyIGFuZCBsYXN0IDIgc2FtcGxlIHBvaW50cwotICAgICAgICByZXNwb25zZSA9IHRlc3RfZGVsZXRlX3Jlc3RfZGF0YSgndjEvc3RhdHMvZGF0YS9sb2NhbC9jb250cm9sbGVyLzE5Mi4xNjguMS4xL2NwdS1zeXN0ZW0nLCB7Ci0gICAgICAgICAgICAnc3RhcnQtdGltZSc6IHNlbGYuU1RBVFNfREFUQVsnY29udHJvbGxlci1zdGF0cyddWycxOTIuMTY4LjEuMSddWydjcHUtc3lzdGVtJ11bMl1bJ3RpbWVzdGFtcCddLAotICAgICAgICAgICAgJ2VuZC10aW1lJzpzZWxmLlNUQVRTX0RBVEFbJ2NvbnRyb2xsZXItc3RhdHMnXVsnMTkyLjE2OC4xLjEnXVsnY3B1LXN5c3RlbSddWy0zXVsndGltZXN0YW1wJ119KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9kYXRhKCd2MS9zdGF0cy9kYXRhL2xvY2FsL2NvbnRyb2xsZXIvMTkyLjE2OC4xLjEvY3B1LXN5c3RlbScsIHsnc3RhcnQtdGltZSc6bWFrZV90aW1lc3RhbXAoMSwwKSwnZW5kLXRpbWUnOm1ha2VfdGltZXN0YW1wKDEwLDExKSwgJ3NhbXBsZS1pbnRlcnZhbCc6MH0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgcmVzdWx0cyA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5jaGVja19zdGF0c19yZXN1bHRzKHJlc3VsdHMsIHNlbGYuU1RBVFNfREFUQVsnY29udHJvbGxlci1zdGF0cyddWycxOTIuMTY4LjEuMSddWydjcHUtc3lzdGVtJ11bOjJdICsgc2VsZi5TVEFUU19EQVRBWydjb250cm9sbGVyLXN0YXRzJ11bJzE5Mi4xNjguMS4xJ11bJ2NwdS1zeXN0ZW0nXVstMjpdKQotCi0gICAgZGVmIHRlc3Rfc3RhdHNfdGFyZ2V0X3R5cGVzKHNlbGYpOgotICAgICAgICAKLSAgICAgICAgbG9jYWxfY29udHJvbGxlcl9pZCA9IGdldF9sb2NhbF9jb250cm9sbGVyX2lkKCkKLSAgICAgICAgCi0gICAgICAgICMgQ2hlY2sgZ2V0dGluZyB0aGUgbGlzdCBvZiBhbGwgdGFyZ2V0IHR5cGVzCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9kYXRhKCd2MS9zdGF0cy90YXJnZXQvbG9jYWwvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICByZXN1bHRzID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZS5jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzLmtleXMoKSksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnY29udHJvbGxlcicgaW4gcmVzdWx0cykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdzd2l0Y2gnIGluIHJlc3VsdHMpCi0gICAgICAgIAotICAgICAgICAjIENoZWNrIGdldHRpbmcgdGhlIGluZm8gZm9yIHRoZSBjb250cm9sbGVyIHRhcmdldCB0eXBlCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9kYXRhKCd2MS9zdGF0cy90YXJnZXQvbG9jYWwvY29udHJvbGxlcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgcmVzdWx0cyA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cy5rZXlzKCkpLCAxKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJzE5Mi4xNjguMS4xJyBpbiByZXN1bHRzKQotICAgICAgICBjb250cm9sbGVyX2luZm8gPSByZXN1bHRzWycxOTIuMTY4LjEuMSddCi0gICAgICAgICNzZWxmLmFzc2VydEVxdWFsKGNvbnRyb2xsZXJfaW5mb1snY29udHJvbGxlciddLCBsb2NhbF9jb250cm9sbGVyX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyb2xsZXJfaW5mb1snbGFzdC11cGRhdGVkJ10sIG1ha2VfdGltZXN0YW1wKDEwLDExKSkKLQotICAgICAgICAjIENoZWNrIGdldHRpbmcgdGhlIGluZm8gZm9yIHRoZSBzd2l0Y2ggdGFyZ2V0IHR5cGUKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X2RhdGEoJ3YxL3N0YXRzL3RhcmdldC9sb2NhbC9zd2l0Y2gnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHJlc3VsdHMgPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMua2V5cygpKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcwMDowMTowMjowMzowNDowNScgaW4gcmVzdWx0cykKLSAgICAgICAgc3dpdGNoX2luZm8gPSByZXN1bHRzWycwMDowMTowMjowMzowNDowNSddCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3dpdGNoX2luZm9bJ2NvbnRyb2xsZXInXSwgbG9jYWxfY29udHJvbGxlcl9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzd2l0Y2hfaW5mb1snbGFzdC11cGRhdGVkJ10sIG1ha2VfdGltZXN0YW1wKDEsNCkpCi0gICAgCi0gICAgZGVmIGNoZWNrX3N0YXRzX3R5cGVfYXR0cmlidXRlcyhzZWxmLCBhdHRyaWJ1dGVzLCBleHBlY3RlZF9sYXN0X3VwZGF0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90YXJnZXRfdHlwZSk6Ci0gICAgICAgIGxhc3RfdXBkYXRlZCA9IGF0dHJpYnV0ZXMuZ2V0KCdsYXN0LXVwZGF0ZWQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhc3RfdXBkYXRlZCwgZXhwZWN0ZWRfbGFzdF91cGRhdGVkKQotICAgICAgICB0YXJnZXRfdHlwZSA9IGF0dHJpYnV0ZXMuZ2V0KCd0YXJnZXQtdHlwZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFyZ2V0X3R5cGUsIGV4cGVjdGVkX3RhcmdldF90eXBlKQotICAgICAgICAKLSAgICBkZWYgdGVzdF9zdGF0c190eXBlX2luZGV4KHNlbGYpOgotICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfZGF0YSgndjEvc3RhdHMvaW5kZXgvbG9jYWwvY29udHJvbGxlci8xOTIuMTY4LjEuMScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgcmVzdWx0cyA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDIpCi0gICAgICAgIGF0dHJpYnV0ZXMgPSByZXN1bHRzWydjcHUtc3lzdGVtJ10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYXR0cmlidXRlcyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cmlidXRlc1snbGFzdC11cGRhdGVkJ10sIG1ha2VfdGltZXN0YW1wKDEwLDExKSkKLSAgICAgICAgYXR0cmlidXRlcyA9IHJlc3VsdHNbJ2NwdS1pZGxlJ10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYXR0cmlidXRlcyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cmlidXRlc1snbGFzdC11cGRhdGVkJ10sIG1ha2VfdGltZXN0YW1wKDEsNSkpCi0KLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X2RhdGEoJ3YxL3N0YXRzL2luZGV4L2xvY2FsL3N3aXRjaC8wMDowMTowMjowMzowNDowNScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgcmVzdWx0cyA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDIpCi0gICAgICAgIGF0dHJpYnV0ZXMgPSByZXN1bHRzWydmbG93LWNvdW50J10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYXR0cmlidXRlcyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cmlidXRlc1snbGFzdC11cGRhdGVkJ10sIG1ha2VfdGltZXN0YW1wKDEsMikpCi0gICAgICAgIGF0dHJpYnV0ZXMgPSByZXN1bHRzWydwYWNrZXQtY291bnQnXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhdHRyaWJ1dGVzKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyaWJ1dGVzWydsYXN0LXVwZGF0ZWQnXSwgbWFrZV90aW1lc3RhbXAoMSwyKSkKLSAgICAgICAgcGFyYW1ldGVycyA9IGF0dHJpYnV0ZXNbJ3BhcmFtZXRlcnMnXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJhbWV0ZXJzKSwgMikKLSAgICAgICAgYXR0cmlidXRlcyA9IHBhcmFtZXRlcnNbJ2FycCddCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGF0dHJpYnV0ZXMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0dHJpYnV0ZXNbJ2xhc3QtdXBkYXRlZCddLCBtYWtlX3RpbWVzdGFtcCgxLDMpKQotICAgICAgICBhdHRyaWJ1dGVzID0gcGFyYW1ldGVyc1snbGxkcCddCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGF0dHJpYnV0ZXMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0dHJpYnV0ZXNbJ2xhc3QtdXBkYXRlZCddLCBtYWtlX3RpbWVzdGFtcCgxLDQpKQotCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9kYXRhKCd2MS9zdGF0cy9pbmRleC9sb2NhbC9jb250cm9sbGVyLzE5Mi4xNjguMS4xL2NwdS1zeXN0ZW0nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIGF0dHJpYnV0ZXMgPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGF0dHJpYnV0ZXMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0dHJpYnV0ZXNbJ2xhc3QtdXBkYXRlZCddLCBtYWtlX3RpbWVzdGFtcCgxMCwxMSkpCi0gICAgICAgIAotY2xhc3MgU3RhdHNNZXRhZGF0YVRlc3QoU3RhdHNUZXN0Q2FzZSk6Ci0gICAgCi0gICAgZGVmIGNoZWNrX21ldGFkYXRhKHNlbGYsIHN0YXRzX3R5cGUsIHN0YXRzX21ldGFkYXRhKToKLSAgICAgICAgIyBUaGUgbmFtZSBpbiB0aGUgbWV0YWRhdGEgc2hvdWxkIG1hdGNoIHRoZSBzdGF0c190eXBlCi0gICAgICAgIG5hbWUgPSBzdGF0c19tZXRhZGF0YS5nZXQoJ25hbWUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRzX3R5cGUsIG5hbWUpCi0gICAgICAgIAotICAgICAgICAjIFRoZSB0YXJnZXRfdHlwZSBpcyBhIHJlcXVpcmVkIHZhbHVlLCBzbyBpdCBzaG91bGQgYmUgcHJlc2VudCBpbiB0aGUgbWV0YWRhdGEKLSAgICAgICAgdGFyZ2V0X3R5cGUgPSBzdGF0c19tZXRhZGF0YS5nZXQoJ3RhcmdldF90eXBlJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0YXJnZXRfdHlwZSwgTm9uZSkKLSAgICAgICAgCi0gICAgICAgICMgTk9URTogVGhlIGZvbGxvd2luZyBhc3NlcnRpb24gd29ya3MgZm9yIG5vdywgc2luY2Ugd2Ugb25seSBzdXBwb3J0IHRoZXNlCi0gICAgICAgICMgdHdvIHRhcmdldCB0eXBlcy4gRXZlbnR1YWxseSB3ZSBtYXkgc3VwcG9ydCBvdGhlciB0YXJnZXQgdHlwZXMgKGluIHdoaWNoCi0gICAgICAgICMgY2FzZSB3ZSdkIG5lZWQgdG8gYWRkIHRoZSBuZXcgb25lcyB0byB0aGUgdHVwbGUpIG9yIGVsc2UgY3VzdG9tIHRhcmdldAotICAgICAgICAjIHR5cGVzIGNhbiBiZSBhZGRlZCAoaW4gd2hpY2ggY2FzZSB3ZSdkIG1heWJlIHdhbnQgdG8gcmVtb3ZlIHRoaXMgYXNzZXJ0aW9uLgotICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0X3R5cGUgaW4gKCdjb250cm9sbGVyJywnc3dpdGNoJykpCi0gICAgICAgIAotICAgICAgICAjIHZlcmJvc2VfbmFtZSBpcyBzZXQgYXV0b21hdGljYWxseSBieSB0aGUgUkVTVCBjb2RlIGlmIGl0IGlzbid0IHNldAotICAgICAgICAjIGV4cGxpY2l0bHkgaW4gdGhlIG1ldGFkYXRhLCBzbyBpdCBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQuCi0gICAgICAgIHZlcmJvc2VfbmFtZSA9IHN0YXRzX21ldGFkYXRhLmdldCgndmVyYm9zZV9uYW1lJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2ZXJib3NlX25hbWUsIE5vbmUpCi0gICAgICAgIAotICAgIGRlZiB0ZXN0X3N0YXRzX21ldGFkYXRhKHNlbGYpOgotICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfZGF0YSgndjEvc3RhdHMvbWV0YWRhdGEvZGVmYXVsdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc3RhdHNfbWV0YWRhdGFfZGljdCA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHN0YXRzX21ldGFkYXRhX2RpY3QpLCBkaWN0KQotICAgICAgICBmb3Igc3RhdHNfdHlwZSwgc3RhdHNfbWV0YWRhdGEgaW4gc3RhdHNfbWV0YWRhdGFfZGljdC5pdGVtcygpOgotICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBtZXRhZGF0YSBsb29rcyByZWFzb25hYmxlCi0gICAgICAgICAgICBzZWxmLmNoZWNrX21ldGFkYXRhKHN0YXRzX3R5cGUsIHN0YXRzX21ldGFkYXRhKQotICAgICAgICAgICAgCi0gICAgICAgICAgICAjIEZldGNoIHRoZSBtZXRhZGF0YSBmb3IgdGhlIGluZGl2aWR1YWwgc3RhdHMgdHlwZSBhbmQgY2hlY2sgdGhhdCBpdCBtYXRjaGVzCi0gICAgICAgICAgICByZXNwb25zZTIgPSB0ZXN0X2dldF9yZXN0X2RhdGEoJ3YxL3N0YXRzL21ldGFkYXRhL2RlZmF1bHQvJyArIHN0YXRzX3R5cGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlMi5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICAgICAgc3RhdHNfbWV0YWRhdGEyID0gc2ltcGxlanNvbi5sb2FkcyhyZXNwb25zZTIuY29udGVudCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHNfbWV0YWRhdGEsIHN0YXRzX21ldGFkYXRhMikKLSAgICAKLSAgICBkZWYgdGVzdF9pbnZhbGlkX3N0YXRzX3R5cGUoc2VsZik6Ci0gICAgICAgICMgVHJ5IGdldHRpbmcgYSBzdGF0cyB0eXBlIHRoYXQgZG9lc24ndCBleGlzdAotICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfZGF0YSgndjEvc3RhdHMvbWV0YWRhdGEvZGVmYXVsdC9mb29iYXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDQpCi0gICAgICAgIGVycm9yX3Jlc3VsdCA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvcl9yZXN1bHQuZ2V0KCdlcnJvcl90eXBlJyksICdSZXN0UmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbicpCi0gICAgICAgIAotY2xhc3MgTGF0ZXN0U3RhdFRlc3QoU3RhdHNUZXN0Q2FzZSk6Ci0KLSAgICBkZWYgZG9fbGF0ZXN0X3N0YXQoc2VsZiwgdGFyZ2V0X3R5cGUsIHRhcmdldF9pZCk6Ci0gICAgICAgIGN1cnJlbnRfdGltZXN0YW1wID0gaW50KHRpbWUudGltZSgpICogMTAwMCkKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjMsLTEsLTEpOgotICAgICAgICAgICAgIyBUcnkgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0cy4gU29ydCBvZiBhcmJpdHJhcnkgbGlzdCBoZXJlLiBQb3RlbnRpYWxseSBhZGQKLSAgICAgICAgICAgICMgbmV3IG9mZnNldHMgdG8gdGVzdCBzcGVjaWZpYyBlZGdlIGNhc2VzCi0gICAgICAgICAgICBvZmZzZXRfbGlzdCA9IFswLCAzNTk5OTk5LCAxMDAsIDMwMDAwLCA0MDAwMDAsIDMwMDAwMDBdCi0gICAgICAgICAgICB0aW1lc3RhbXAgPSBjdXJyZW50X3RpbWVzdGFtcCAtIChpICogMzYwMDAwMCkgLSBvZmZzZXRfbGlzdFsoaSsxKSVsZW4ob2Zmc2V0X2xpc3QpXQotICAgICAgICAgICAgc3RhdHNfZGF0YSA9IHt0YXJnZXRfdHlwZSArICctc3RhdHMnOiB7dGFyZ2V0X2lkOiB7J3Rlc3Qtc3RhdCc6IFt7J3RpbWVzdGFtcCc6IHRpbWVzdGFtcCwgJ3ZhbHVlJzogaX1dfX19Ci0gICAgICAgICAgICByZXNwb25zZSA9IHRlc3RfcHV0X3Jlc3RfZGF0YShzdGF0c19kYXRhLCAndjEvc3RhdHMvZGF0YS9sb2NhbCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgICAgICByZXNwb25zZSA9IHRlc3RfZ2V0X3Jlc3RfZGF0YSgndjEvc3RhdHMvZGF0YS9sb2NhbC8lcy8lcy90ZXN0LXN0YXQnICUgKHRhcmdldF90eXBlLCB0YXJnZXRfaWQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICAgICAgcmVzdWx0cyA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZXN0YW1wLCByZXN1bHRzWzBdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLCByZXN1bHRzWzFdKQotICAgIAotICAgIGRlZiB0ZXN0X2NvbnRyb2xsZXJfbGF0ZXN0X3N0YXQoc2VsZik6Ci0gICAgICAgIHNlbGYuZG9fbGF0ZXN0X3N0YXQoJ2NvbnRyb2xsZXInLCAnMTkyLjE2OC4xLjEnKQotICAgIAotICAgIGRlZiB0ZXN0X3N3aXRjaF9sYXRlc3Rfc3RhdChzZWxmKToKLSAgICAgICAgc2VsZi5kb19sYXRlc3Rfc3RhdCgnc3dpdGNoJywgJzAwOjAxOjAyOjAzOjA0OjA1JykKLQotY2xhc3MgQmFzaWNFdmVudHNUZXN0KFN0YXRzVGVzdENhc2UpOgotICAgIAotICAgIEVWRU5UU19EQVRBID0gewotICAgICAgICAnMTkyLjE2OC4xLjEnOiBbCi0gICAgICAgICAgICB7J3RpbWVzdGFtcCc6IG1ha2VfdGltZXN0YW1wKDEsMCksICdjb21wb25lbnQnOiAnc2RucGxhdGZvcm0nLCAnbG9nLWxldmVsJzogJ0Vycm9yJywgJ21lc3NhZ2UnOiAnU29tZXRoaW5nIGJhZCBoYXBwZW5lZCd9LAotICAgICAgICAgICAgeyd0aW1lc3RhbXAnOiBtYWtlX3RpbWVzdGFtcCgxLDEpLCAnY29tcG9uZW50JzogJ3NkbnBsYXRmb3JtJywgJ2xvZy1sZXZlbCc6ICdJbmZvJywgJ21lc3NhZ2UnOiAnU29tZXRoaW5nIGVsc2UgaGFwcGVuZWQnLCAncGFja2FnZSc6ICduZXQuc2RucGxhdGZvcm1jb250cm9sbGVyLmNvcmUnfSwKLSAgICAgICAgICAgIHsndGltZXN0YW1wJzogbWFrZV90aW1lc3RhbXAoMSw0KSwgJ2NvbXBvbmVudCc6ICdzZG5wbGF0Zm9ybScsICdsb2ctbGV2ZWwnOiAnSW5mbycsICdtZXNzYWdlJzogJ1N3aXRjaCBjb25uZWN0ZWQ6IDAxOjAyOjAzOjA0OjQ1OjU2JywgJ3BhY2thZ2UnOiAnbmV0LnNkbnBsYXRmb3JtY29udHJvbGxlci5jb3JlJywgJ2RwaWQnOiAnMDE6MDI6MDM6MDQ6NDU6NTYnfSwKLSAgICAgICAgICAgIHsndGltZXN0YW1wJzogbWFrZV90aW1lc3RhbXAoMiw0KSwgJ2NvbXBvbmVudCc6ICdkamFuZ28nLCAnbG9nLWxldmVsJzogJ0luZm8nLCAnbWVzc2FnZSc6ICdHRVQ6IC9yZXN0L3YxL21vZGVsL2Zvbyd9LAotICAgICAgICAgICAgeyd0aW1lc3RhbXAnOiBtYWtlX3RpbWVzdGFtcCg0LDEwKSwgJ2NvbXBvbmVudCc6ICdjYXNzYW5kcmEnLCAnbG9nLWxldmVsJzogJ0luZm8nLCAnbWVzc2FnZSc6ICdDb21wYWN0aW9uIG9jY3VycmVkJ30sCi0gICAgICAgICAgICB7J3RpbWVzdGFtcCc6IG1ha2VfdGltZXN0YW1wKDQsMTEpLCAnY29tcG9uZW50JzogJ2Nhc3NhbmRyYScsICdsb2ctbGV2ZWwnOiAnSW5mbycsICdtZXNzYWdlJzogJ09uZSBtb3JlIGNvbXBhY3Rpb24gb2NjdXJyZWQnfSwKLSAgICAgICAgICAgIHsndGltZXN0YW1wJzogbWFrZV90aW1lc3RhbXAoNywxMCksICdjb21wb25lbnQnOiAnY2Fzc2FuZHJhJywgJ2xvZy1sZXZlbCc6ICdJbmZvJywgJ21lc3NhZ2UnOiAnQW5vdGhlciBjb21wYWN0aW9uIG9jY3VycmVkJ30sCi0gICAgICAgIF0KLSAgICB9Ci0KLSAgICBUQUdHRURfRVZFTlRTX0RBVEEgPSB7Ci0gICAgICAgICcxOTIuMTY4LjEuMSc6IFsKLSAgICAgICAgICAgIHsndGltZXN0YW1wJzogbWFrZV90aW1lc3RhbXAoMTAsMCksICdway10YWcnOicxMjM0JywgJ2NvbXBvbmVudCc6ICdzZG5wbGF0Zm9ybScsICdsb2ctbGV2ZWwnOiAnRXJyb3InLCAnbWVzc2FnZSc6ICdTb21ldGhpbmcgYmFkIGhhcHBlbmVkJ30sCi0gICAgICAgICAgICB7J3RpbWVzdGFtcCc6IG1ha2VfdGltZXN0YW1wKDEwLDEpLCAncGstdGFnJzonNTY3OCcsICdjb21wb25lbnQnOiAnc2RucGxhdGZvcm0nLCAnbG9nLWxldmVsJzogJ0luZm8nLCAnbWVzc2FnZSc6ICdTb21ldGhpbmcgZWxzZSBoYXBwZW5lZCcsICdwYWNrYWdlJzogJ25ldC5zZG5wbGF0Zm9ybWNvbnRyb2xsZXIuY29yZSd9LAotICAgICAgICBdCi0gICAgfQotCi0KLSAgICBkZWYgY2hlY2tfZXZlbnRzX3Jlc3VsdHMoc2VsZiwgcmV0dXJuZWRfcmVzdWx0cywgZXhwZWN0ZWRfcmVzdWx0cywgbWVzc2FnZT1Ob25lKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9yZXN1bHRzLCByZXR1cm5lZF9yZXN1bHRzLCBtZXNzYWdlKQotICAgICAgICAjc2VsZi5hc3NlcnRFcXVhbChsZW4ocmV0dXJuZWRfcmVzdWx0cyksIGxlbihleHBlY3RlZF9yZXN1bHRzKSwgbWVzc2FnZSkKLSAgICAgICAgI2ZvciBpIGluIHJhbmdlKGxlbihyZXR1cm5lZF9yZXN1bHRzKSk6Ci0gICAgICAgICMgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR1cm5lZF9yZXN1bHRzW2ldLCBleHBlY3RlZF9yZXN1bHRzW2ldKQotICAgIAotICAgIGRlZiB0ZXN0X2V2ZW50cyhzZWxmKToKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X3B1dF9yZXN0X2RhdGEoc2VsZi5FVkVOVFNfREFUQSwgJ3YxL2V2ZW50cy9kYXRhL2RlZmF1bHQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIAotICAgICAgICAjIEdldCBhbGwgb2YgdGhlIGRhdGEKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X2RhdGEoJ3YxL2V2ZW50cy9kYXRhL2RlZmF1bHQvMTkyLjE2OC4xLjEnLCB7J3N0YXJ0LXRpbWUnOm1ha2VfdGltZXN0YW1wKDEsMCksJ2VuZC10aW1lJzptYWtlX3RpbWVzdGFtcCg3LDEwKX0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgcmVzdWx0cyA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5jaGVja19ldmVudHNfcmVzdWx0cyhyZXN1bHRzLCBzZWxmLkVWRU5UU19EQVRBWycxOTIuMTY4LjEuMSddKQotICAgICAgICAKLSAgICAgICAgIyBHZXQganVzdCBvbmUgZGF5cyBkYXRhCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9kYXRhKCd2MS9ldmVudHMvZGF0YS9kZWZhdWx0LzE5Mi4xNjguMS4xJywgeydzdGFydC10aW1lJzptYWtlX3RpbWVzdGFtcCgxLDApLCdlbmQtdGltZSc6bWFrZV90aW1lc3RhbXAoMSw0KX0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgcmVzdWx0cyA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5jaGVja19ldmVudHNfcmVzdWx0cyhyZXN1bHRzLCBzZWxmLkVWRU5UU19EQVRBWycxOTIuMTY4LjEuMSddWzozXSkKLQotICAgICAgICAjIEdldCB0d28gZGF5IHJhbmdlCi0gICAgICAgIHJlc3BvbnNlID0gdGVzdF9nZXRfcmVzdF9kYXRhKCd2MS9ldmVudHMvZGF0YS9kZWZhdWx0LzE5Mi4xNjguMS4xJywgeydzdGFydC10aW1lJzptYWtlX3RpbWVzdGFtcCgxLDIpLCdlbmQtdGltZSc6bWFrZV90aW1lc3RhbXAoNCwxMSl9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHJlc3VsdHMgPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuY2hlY2tfZXZlbnRzX3Jlc3VsdHMocmVzdWx0cywgc2VsZi5FVkVOVFNfREFUQVsnMTkyLjE2OC4xLjEnXVsyOjZdKQotCi0gICAgZGVmIHRlc3RfdGFnZ2VkX2V2ZW50cyhzZWxmKToKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X3B1dF9yZXN0X2RhdGEoc2VsZi5UQUdHRURfRVZFTlRTX0RBVEEsICd2MS9ldmVudHMvZGF0YS9kZWZhdWx0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICAKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X2RhdGEoJ3YxL2V2ZW50cy9kYXRhL2RlZmF1bHQvMTkyLjE2OC4xLjEnLCB7J3N0YXJ0LXRpbWUnOm1ha2VfdGltZXN0YW1wKDEwLDApLCdlbmQtdGltZSc6bWFrZV90aW1lc3RhbXAoMTAsMiksJ2luY2x1ZGUtcGstdGFnJzondHJ1ZSd9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHJlc3VsdHMgPSBzaW1wbGVqc29uLmxvYWRzKHJlc3BvbnNlLmNvbnRlbnQpCi0gICAgICAgIHNlbGYuY2hlY2tfZXZlbnRzX3Jlc3VsdHMocmVzdWx0cywgc2VsZi5UQUdHRURfRVZFTlRTX0RBVEFbJzE5Mi4xNjguMS4xJ10pCi0gICAgCi0gICAgZGVmIHRlc3RfZGVsZXRlX2V2ZW50cyhzZWxmKToKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X3B1dF9yZXN0X2RhdGEoc2VsZi5FVkVOVFNfREFUQSwgJ3YxL2V2ZW50cy9kYXRhL2RlZmF1bHQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0KLSAgICAgICAgIyBEZWxldGUgYWxsIGJ1dCB0aGUgZmlyc3QgMiBhbmQgbGFzdCAyIGV2ZW50cwotICAgICAgICByZXNwb25zZSA9IHRlc3RfZGVsZXRlX3Jlc3RfZGF0YSgndjEvZXZlbnRzL2RhdGEvZGVmYXVsdC8xOTIuMTY4LjEuMScsIHsKLSAgICAgICAgICAgICdzdGFydC10aW1lJzogc2VsZi5FVkVOVFNfREFUQVsnMTkyLjE2OC4xLjEnXVsyXVsndGltZXN0YW1wJ10sCi0gICAgICAgICAgICAnZW5kLXRpbWUnOnNlbGYuRVZFTlRTX0RBVEFbJzE5Mi4xNjguMS4xJ11bLTNdWyd0aW1lc3RhbXAnXX0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0KLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0X2dldF9yZXN0X2RhdGEoJ3YxL2V2ZW50cy9kYXRhL2RlZmF1bHQvMTkyLjE2OC4xLjEnLCB7J3N0YXJ0LXRpbWUnOm1ha2VfdGltZXN0YW1wKDEsMCksJ2VuZC10aW1lJzptYWtlX3RpbWVzdGFtcCg3LDEwKX0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAgcmVzdWx0cyA9IHNpbXBsZWpzb24ubG9hZHMocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgc2VsZi5jaGVja19ldmVudHNfcmVzdWx0cyhyZXN1bHRzLCBzZWxmLkVWRU5UU19EQVRBWycxOTIuMTY4LjEuMSddWzoyXSArIHNlbGYuRVZFTlRTX0RBVEFbJzE5Mi4xNjguMS4xJ11bLTI6XSkKLSAgICAgICAgCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3N0YXRzL3V0aWxzLnB5IGIvY2xpL3NkbmNvbi9zdGF0cy91dGlscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDIyN2E1OC4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3N0YXRzL3V0aWxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gdGhyaWZ0LnRyYW5zcG9ydCBpbXBvcnQgVFRyYW5zcG9ydAotZnJvbSB0aHJpZnQudHJhbnNwb3J0IGltcG9ydCBUU29ja2V0Ci1mcm9tIHRocmlmdC5wcm90b2NvbCBpbXBvcnQgVEJpbmFyeVByb3RvY29sCi1mcm9tIGNhc3NhbmRyYSBpbXBvcnQgQ2Fzc2FuZHJhCi1mcm9tIGNhc3NhbmRyYS50dHlwZXMgaW1wb3J0ICoKLQotIyBGSVhNRTogVGhpcyBjbGFzcyBpcyBkZXJpdmVkIGZyb20gdGhlIGRqYW5nb19jYXNzYW5kcmEgYmFja2VuZC4KLSMgU2hvdWxkIHJlZmFjdG9yIHRoaXMgY29kZSBiZXR0ZXIuCi0KLWNsYXNzIENhc3NhbmRyYUNvbm5lY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwga2V5c3BhY2UsIHVzZXIsIHBhc3N3b3JkKToKLSAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAotICAgICAgICBzZWxmLnBvcnQgPSBwb3J0Ci0gICAgICAgIHNlbGYua2V5c3BhY2UgPSBrZXlzcGFjZQotICAgICAgICBzZWxmLnVzZXIgPSB1c2VyCi0gICAgICAgIHNlbGYucGFzc3dvcmQgPSBwYXNzd29yZAotICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IE5vbmUKLSAgICAgICAgc2VsZi5jbGllbnQgPSBOb25lCi0gICAgICAgIHNlbGYua2V5c3BhY2Vfc2V0ID0gRmFsc2UKLSAgICAgICAgc2VsZi5sb2dnZWRfaW4gPSBGYWxzZQotICAgICAgICAKLSAgICBkZWYgc2V0X2tleXNwYWNlKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5rZXlzcGFjZV9zZXQ6Ci0gICAgICAgICAgICBzZWxmLmNsaWVudC5zZXRfa2V5c3BhY2Uoc2VsZi5rZXlzcGFjZSkKLSAgICAgICAgICAgIHNlbGYua2V5c3BhY2Vfc2V0ID0gVHJ1ZQotICAgIAotICAgIGRlZiBsb2dpbihzZWxmKToKLSAgICAgICAgIyBUT0RPOiBUaGlzIHVzZXIvcGFzc3dvcmQgYXV0aCBjb2RlIGhhc24ndCBiZWVuIHRlc3RlZAotICAgICAgICBpZiBub3Qgc2VsZi5sb2dnZWRfaW46Ci0gICAgICAgICAgICBpZiBzZWxmLnVzZXI6Ci0gICAgICAgICAgICAgICAgY3JlZGVudGlhbHMgPSB7J3VzZXJuYW1lJzogc2VsZi51c2VyLCAncGFzc3dvcmQnOiBzZWxmLnBhc3N3b3JkfQotICAgICAgICAgICAgICAgIHNlbGYuY2xpZW50LmxvZ2luKEF1dGhlbnRpY2F0aW9uUmVxdWVzdChjcmVkZW50aWFscykpCi0gICAgICAgICAgICBzZWxmLmxvZ2dlZF9pbiA9IFRydWUKLSAgICAgICAgICAgIAotICAgIGRlZiBjb25uZWN0KHNlbGYsIHNldF9rZXlzcGFjZT1GYWxzZSwgbG9naW49RmFsc2UpOgotICAgICAgICBpZiBzZWxmLnRyYW5zcG9ydCA9PSBOb25lOgotICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGNsaWVudCBjb25uZWN0aW9uIHRvIHRoZSBDYXNzYW5kcmEgZGFlbW9uCi0gICAgICAgICAgICBzb2NrZXQgPSBUU29ja2V0LlRTb2NrZXQoc2VsZi5ob3N0LCBpbnQoc2VsZi5wb3J0KSkKLSAgICAgICAgICAgIHRyYW5zcG9ydCA9IFRUcmFuc3BvcnQuVEZyYW1lZFRyYW5zcG9ydChUVHJhbnNwb3J0LlRCdWZmZXJlZFRyYW5zcG9ydChzb2NrZXQpKQotICAgICAgICAgICAgcHJvdG9jb2wgPSBUQmluYXJ5UHJvdG9jb2wuVEJpbmFyeVByb3RvY29sQWNjZWxlcmF0ZWQodHJhbnNwb3J0KQotICAgICAgICAgICAgdHJhbnNwb3J0Lm9wZW4oKQotICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQgPSB0cmFuc3BvcnQKLSAgICAgICAgICAgIHNlbGYuY2xpZW50ID0gQ2Fzc2FuZHJhLkNsaWVudChwcm90b2NvbCkKLSAgICAgICAgICAgIAotICAgICAgICBpZiBsb2dpbjoKLSAgICAgICAgICAgIHNlbGYubG9naW4oKQotICAgICAgICAKLSAgICAgICAgaWYgc2V0X2tleXNwYWNlOgotICAgICAgICAgICAgc2VsZi5zZXRfa2V5c3BhY2UoKQotICAgICAgICAgICAgICAgIAotICAgIGRlZiBkaXNjb25uZWN0KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnRyYW5zcG9ydCAhPSBOb25lOgotICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQgPSBOb25lCi0gICAgICAgICAgICBzZWxmLmNsaWVudCA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYua2V5c3BhY2Vfc2V0ID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYubG9nZ2VkX2luID0gRmFsc2UKLSAgICAgICAgICAgIAotICAgIGRlZiBpc19jb25uZWN0ZWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRyYW5zcG9ydCAhPSBOb25lCi0gICAgCi0gICAgZGVmIHJlY29ubmVjdChzZWxmKToKLSAgICAgICAgc2VsZi5kaXNjb25uZWN0KCkKLSAgICAgICAgc2VsZi5jb25uZWN0KFRydWUsIFRydWUpCi0gICAgCi0gICAgZGVmIGdldF9jbGllbnQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY2xpZW50ID09IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmNvbm5lY3QoVHJ1ZSxUcnVlKQotICAgICAgICByZXR1cm4gc2VsZi5jbGllbnQKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vc3RhdHMvdmlld3MucHkgYi9jbGkvc2RuY29uL3N0YXRzL3ZpZXdzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1MTcyY2MxLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vc3RhdHMvdmlld3MucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNjQgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWZyb20gY2Fzc2FuZHJhLnR0eXBlcyBpbXBvcnQgKgotZnJvbSBkamFuZ28uY29uZiBpbXBvcnQgc2V0dGluZ3MKLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZQotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHNpbXBsZWpzb24KLWZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwotaW1wb3J0IHRpbWUKLWZyb20gLmRhdGEgaW1wb3J0IFN0YXRzRXhjZXB0aW9uLCBTdGF0c0ludmFsaWRTdGF0c0RhdGFFeGNlcHRpb24sIFwKLSAgICBTdGF0c0ludmFsaWRTdGF0c1R5cGVFeGNlcHRpb24sIFwKLSAgICBnZXRfc3RhdHNfZGJfY29ubmVjdGlvbiwgaW5pdF9zdGF0c19kYl9jb25uZWN0aW9uLCBcCi0gICAgZ2V0X3N0YXRzX21ldGFkYXRhLCBnZXRfc3RhdHNfdHlwZV9pbmRleCwgXAotICAgIGdldF9zdGF0c190YXJnZXRfdHlwZXMsIGdldF9zdGF0c190YXJnZXRzLCBkZWxldGVfc3RhdHNfZGF0YSwgXAotICAgIGdldF9zdGF0c19kYXRhLCBnZXRfbGF0ZXN0X3N0YXRfZGF0YSwgcHV0X3N0YXRzX2RhdGEsIFwKLSAgICBnZXRfY2xvc2VzdF9zYW1wbGVfaW50ZXJ2YWwsIGdldF9jbG9zZXN0X3dpbmRvd19pbnRlcnZhbCwgXAotICAgIGdldF9sb2dfZXZlbnRfZGF0YSwgcHV0X2xvZ19ldmVudF9kYXRhLCBkZWxldGVfbG9nX2V2ZW50X2RhdGEsIFwKLSAgICBWQUxVRV9EQVRBX0ZPUk1BVAotCi1mcm9tIHNkbmNvbi5yZXN0LnZpZXdzIGltcG9ydCBSZXN0RXhjZXB0aW9uLCBcCi0gICAgUmVzdEludmFsaWRQdXREYXRhRXhjZXB0aW9uLCBSZXN0TWlzc2luZ1JlcXVpcmVkUXVlcnlQYXJhbUV4Y2VwdGlvbixcCi0gICAgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24sIFJlc3REYXRhYmFzZUNvbm5lY3Rpb25FeGNlcHRpb24sXAotICAgIFJlc3RJbnRlcm5hbEV4Y2VwdGlvbiwgUmVzdFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24sIFwKLSAgICBzYWZlX3Jlc3RfdmlldywgSlNPTl9DT05URU5UX1RZUEUsIGdldF9zdWNjZXNzZnVsX3Jlc3BvbnNlCi1mcm9tIHNkbmNvbi5jb250cm9sbGVyLmNvbmZpZyBpbXBvcnQgZ2V0X2xvY2FsX2NvbnRyb2xsZXJfaWQKLQotCi1jbGFzcyBSZXN0U3RhdHNFeGNlcHRpb24oUmVzdEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXRzX2V4Y2VwdGlvbik6Ci0gICAgICAgIHN1cGVyKFJlc3RTdGF0c0V4Y2VwdGlvbixzZWxmKS5fX2luaXRfXygnRXJyb3IgYWNjZXNzaW5nIHN0YXRzOiAnICsgc3RyKHN0YXRzX2V4Y2VwdGlvbikpCi0gICAgICAgIAotY2xhc3MgUmVzdFN0YXRzSW52YWxpZFRpbWVEdXJhdGlvblVuaXRzRXhjZXB0aW9uKFJlc3RFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1bml0cyk6Ci0gICAgICAgIHN1cGVyKFJlc3RTdGF0c0ludmFsaWRUaW1lRHVyYXRpb25Vbml0c0V4Y2VwdGlvbixzZWxmKS5fX2luaXRfXygnSW52YWxpZCB0aW1lIGR1cmF0aW9uIHVuaXRzOiAnICsgc3RyKHVuaXRzKSkKLQotCi1jbGFzcyBSZXN0U3RhdHNJbnZhbGlkVGltZVJhbmdlRXhjZXB0aW9uKFJlc3RFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoUmVzdFN0YXRzSW52YWxpZFRpbWVSYW5nZUV4Y2VwdGlvbixzZWxmKS5fX2luaXRfXygnSW52YWxpZCB0aW1lIHJhbmdlIHNwZWNpZmllZCBpbiBzdGF0cyBSRVNUIEFQSS4gJwotICAgICAgICAgICAgJzIgb3V0IG9mIDMgb2Ygc3RhcnQtdGltZSwgZW5kLXRpbWUsIGFuZCBkdXJhdGlvbiBwYXJhbXMgbXVzdCBiZSBzcGVjaWZpZWQuJykKLQotCi1Ac2FmZV9yZXN0X3ZpZXcKLWRlZiBzYWZlX3N0YXRzX3Jlc3RfdmlldyhmdW5jLCAqYXJncywgKiprd2FyZ3MpOgotICAgIHRyeToKLSAgICAgICAgcmVxdWVzdCA9IGFyZ3NbMF0KLSAgICAgICAgcmVzcG9uc2UgPSBmdW5jKCphcmdzLCAqKmt3YXJncykKLSAgICBleGNlcHQgUmVzdEV4Y2VwdGlvbjoKLSAgICAgICAgcmFpc2UKLSAgICBleGNlcHQgU3RhdHNJbnZhbGlkU3RhdHNEYXRhRXhjZXB0aW9uOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZFB1dERhdGFFeGNlcHRpb24oKQotICAgIGV4Y2VwdCBTdGF0c0ludmFsaWRTdGF0c1R5cGVFeGNlcHRpb246Ci0gICAgICAgIHJhaXNlIFJlc3RSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uKHJlcXVlc3QucGF0aCkKLSAgICBleGNlcHQgU3RhdHNFeGNlcHRpb24sIGU6Ci0gICAgICAgIHJhaXNlIFJlc3RTdGF0c0V4Y2VwdGlvbihlKQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnRlcm5hbEV4Y2VwdGlvbihlKQotICAgIHJldHVybiByZXNwb25zZQotCi0KLWRlZiBzYWZlX3N0YXRzX3ZpZXcoZnVuYyk6Ci0gICAgIiIiCi0gICAgVGhpcyBpcyBhIGRlY29yYXRvciB0aGF0IHRha2VzIGNhcmUgb2YgZXhjZXB0aW9uIGhhbmRsaW5nIGZvciB0aGUKLSAgICBzdGF0cyB2aWV3cyBzbyB0aGF0IHN0YXRzIGV4Y2VwdGlvbnMgYXJlIGNvbnZlcnRlZCB0byB0aGUgYXBwcm9wcmlhdGUKLSAgICBSRVNUIGV4Y2VwdGlvbi4KLSAgICAiIiIKLSAgICBAd3JhcHMoZnVuYykKLSAgICBkZWYgX2Z1bmMoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBzYWZlX3N0YXRzX3Jlc3RfdmlldyhmdW5jLCAqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHJldHVybiByZXNwb25zZQotICAgIAotICAgIHJldHVybiBfZnVuYwotCi0KLWRlZiBpbml0X2RiX2Nvbm5lY3Rpb24oKToKLSAgICBkYl9jb25uZWN0aW9uID0gZ2V0X3N0YXRzX2RiX2Nvbm5lY3Rpb24oKQotICAgIGlmIG5vdCBkYl9jb25uZWN0aW9uOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzdGF0c19kYl9zZXR0aW5ncyA9IHNldHRpbmdzLlNUQVRTX0RBVEFCQVNFCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBzdGF0c19kYl9zZXR0aW5ncyA9IHt9Ci0gICAgICAgICAgICAKLSAgICAgICAgaG9zdCA9IHN0YXRzX2RiX3NldHRpbmdzLmdldCgnSE9TVCcsICdsb2NhbGhvc3QnKQotICAgICAgICBwb3J0ID0gc3RhdHNfZGJfc2V0dGluZ3MuZ2V0KCdQT1JUJywgOTE2MCkKLSAgICAgICAga2V5c3BhY2UgPSBzdGF0c19kYl9zZXR0aW5ncy5nZXQoJ05BTUUnLCAnc2Ruc3RhdHMnKQotICAgICAgICB1c2VyID0gc3RhdHNfZGJfc2V0dGluZ3MuZ2V0KCdVU0VSJykKLSAgICAgICAgcGFzc3dvcmQgPSBzdGF0c19kYl9zZXR0aW5ncy5nZXQoJ1BBU1NXT1JEJykKLSAgICAgICAgcmVwbGljYXRpb25fZmFjdG9yID0gc3RhdHNfZGJfc2V0dGluZ3MuZ2V0KCdDQVNTQU5EUkFfUkVQTElDQVRJT05fRkFDVE9SJywgMSkKLSAgICAgICAgY29sdW1uX2ZhbWlseV9kZWZfZGVmYXVsdF9zZXR0aW5ncyA9IHN0YXRzX2RiX3NldHRpbmdzLmdldCgnQ0FTU0FORFJBX0NPTFVNTl9GQU1JTFlfREVGX0RFRkFVTFRfU0VUVElOR1MnLCB7fSkKLSAgICAgICAgCi0gICAgICAgIGluaXRfc3RhdHNfZGJfY29ubmVjdGlvbihob3N0LCBwb3J0LCBrZXlzcGFjZSwgdXNlciwgcGFzc3dvcmQsIHJlcGxpY2F0aW9uX2ZhY3RvciwgY29sdW1uX2ZhbWlseV9kZWZfZGVmYXVsdF9zZXR0aW5ncykKLSAgICAgICAgICAgIAotICAgICAgICBkYl9jb25uZWN0aW9uID0gZ2V0X3N0YXRzX2RiX2Nvbm5lY3Rpb24oKQotICAgICAgICBhc3NlcnQoZGJfY29ubmVjdGlvbiBpcyBub3QgTm9uZSkKLQotU1RBUlRfVElNRV9RVUVSWV9QQVJBTSA9ICdzdGFydC10aW1lJwotRU5EX1RJTUVfUVVFUllfUEFSQU0gPSAnZW5kLXRpbWUnCi1EVVJBVElPTl9RVUVSWV9QQVJBTSA9ICdkdXJhdGlvbicKLVNBTVBMRV9JTlRFUlZBTF9RVUVSWV9QQVJBTSA9ICdzYW1wbGUtaW50ZXJ2YWwnCi1TQU1QTEVfQ09VTlRfUVVFUllfUEFSQU0gPSAnc2FtcGxlLWNvdW50JwotU0FNUExFX1dJTkRPV19RVUVSWV9QQVJBTSA9ICdzYW1wbGUtd2luZG93JwotREFUQV9GT1JNQVRfUVVFUllfUEFSQU0gPSAnZGF0YS1mb3JtYXQnCi1MSU1JVF9RVUVSWV9QQVJBTSA9ICdsaW1pdCcKLUlOQ0xVREVfUEtfVEFHX1FVRVJZX1BBUkFNID0gJ2luY2x1ZGUtcGstdGFnJwotCi1ERUZBVUxUX1NBTVBMRV9DT1VOVCA9IDUwCi0KLWRlZiBjb252ZXJ0X3RpbWVfcG9pbnQodGltZV9wb2ludCk6Ci0gICAgCi0gICAgaWYgdGltZV9wb2ludCBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIAotICAgIGlmIHRpbWVfcG9pbnQ6Ci0gICAgICAgIHRpbWVfcG9pbnQgPSB0aW1lX3BvaW50Lmxvd2VyKCkKLSAgICAgICAgaWYgdGltZV9wb2ludCBpbiAoJ25vdycsICdjdXJyZW50Jyk6Ci0gICAgICAgICAgICB0aW1lX3BvaW50ID0gaW50KHRpbWUudGltZSgpICogMTAwMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRpbWVfcG9pbnQgPSBpbnQodGltZV9wb2ludCkKLSAgICAKLSAgICByZXR1cm4gdGltZV9wb2ludAotCi0KLVVOSVRfQ09OVkVSU0lPTlMgPSAoCi0gICAgKCgnaCcsICdob3VyJywgJ2hvdXJzJyksIDM2MDAwMDApLAotICAgICgoJ2QnLCAnZGF5JywgJ2RheXMnKSwgODY0MDAwMDApLAotICAgICgoJ3cnLCAnd2VlaycsICd3ZWVrcycpLCA2MDQ4MDAwMDApLAotICAgICgoJ20nLCAnbWluJywgJ21pbnMnLCAnbWludXRlJywgJ21pbnV0ZXMnKSwgNjAwMDApLAotICAgICgoJ3MnLCAnc2VjJywgJ3NlY3MnLCAnc2Vjb25kJywgJ3NlY29uZHMnKSwgMTAwMCksCi0gICAgKCgnbXMnLCAnbWlsbGlzZWNvbmQnLCAnbWlsbGlzZWNvbmRzJyksIDEpCi0pCi0KLWRlZiBjb252ZXJ0X3RpbWVfZHVyYXRpb24oZHVyYXRpb24pOgotICAgIAotICAgIGlmIGR1cmF0aW9uIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgCi0gICAgdmFsdWUgPSAiIgotICAgIGZvciBjIGluIGR1cmF0aW9uOgotICAgICAgICBpZiBub3QgYy5pc2RpZ2l0KCk6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICB2YWx1ZSArPSBjCi0gICAgCi0gICAgdW5pdHMgPSBkdXJhdGlvbltsZW4odmFsdWUpOl0ubG93ZXIoKQotICAgIHZhbHVlID0gaW50KHZhbHVlKQotICAgIAotICAgIGlmIHVuaXRzOgotICAgICAgICBjb252ZXJ0ZWRfdmFsdWUgPSBOb25lCi0gICAgICAgIGZvciBjb252ZXJzaW9uIGluIFVOSVRfQ09OVkVSU0lPTlM6Ci0gICAgICAgICAgICBpZiB1bml0cyBpbiBjb252ZXJzaW9uWzBdOgotICAgICAgICAgICAgICAgIGNvbnZlcnRlZF92YWx1ZSA9IHZhbHVlICogY29udmVyc2lvblsxXQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGNvbnZlcnRlZF92YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgUmVzdFN0YXRzSW52YWxpZFRpbWVEdXJhdGlvblVuaXRzRXhjZXB0aW9uKHVuaXRzKQotICAgICAgICAKLSAgICAgICAgdmFsdWUgPSBjb252ZXJ0ZWRfdmFsdWUKLSAgICAgICAgCi0gICAgcmV0dXJuIHZhbHVlCi0KLQotZGVmIGdldF90aW1lX3JhbmdlKHN0YXJ0X3RpbWUsIGVuZF90aW1lLCBkdXJhdGlvbik6Ci0gICAgCi0gICAgaWYgbm90IHN0YXJ0X3RpbWUgYW5kIG5vdCBlbmRfdGltZSBhbmQgbm90IGR1cmF0aW9uOgotICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUpCi0gICAgCi0gICAgc3RhcnRfdGltZSA9IGNvbnZlcnRfdGltZV9wb2ludChzdGFydF90aW1lKQotICAgIGVuZF90aW1lID0gY29udmVydF90aW1lX3BvaW50KGVuZF90aW1lKQotICAgIGR1cmF0aW9uID0gY29udmVydF90aW1lX2R1cmF0aW9uKGR1cmF0aW9uKQotICAgIAotICAgIGlmIHN0YXJ0X3RpbWU6Ci0gICAgICAgIGlmIG5vdCBlbmRfdGltZSBhbmQgZHVyYXRpb246Ci0gICAgICAgICAgICBlbmRfdGltZSA9IHN0YXJ0X3RpbWUgKyBkdXJhdGlvbgotICAgIGVsaWYgZW5kX3RpbWUgYW5kIGR1cmF0aW9uOgotICAgICAgICBzdGFydF90aW1lID0gZW5kX3RpbWUgLSBkdXJhdGlvbgotICAgICAgICAKLSAgICBpZiBub3Qgc3RhcnRfdGltZSBvciBub3QgZW5kX3RpbWU6Ci0gICAgICAgIHJhaXNlIFJlc3RTdGF0c0ludmFsaWRUaW1lUmFuZ2VFeGNlcHRpb24oKQotICAgIAotICAgIHJldHVybiAoc3RhcnRfdGltZSwgZW5kX3RpbWUpCi0KLQotZGVmIGdldF90aW1lX3JhbmdlX2Zyb21fcmVxdWVzdChyZXF1ZXN0KToKLSAgICBzdGFydF90aW1lID0gcmVxdWVzdC5HRVQuZ2V0KFNUQVJUX1RJTUVfUVVFUllfUEFSQU0pCi0gICAgZW5kX3RpbWUgPSByZXF1ZXN0LkdFVC5nZXQoRU5EX1RJTUVfUVVFUllfUEFSQU0pCi0gICAgZHVyYXRpb24gPSByZXF1ZXN0LkdFVC5nZXQoRFVSQVRJT05fUVVFUllfUEFSQU0pCi0gICAgCi0gICAgcmV0dXJuIGdldF90aW1lX3JhbmdlKHN0YXJ0X3RpbWUsIGVuZF90aW1lLCBkdXJhdGlvbikKLQotI2RlZiBnZXRfc3RhdHNfdGltZV9yYW5nZShyZXF1ZXN0KToKLSMgICAgc3RhcnRfdGltZSA9IHJlcXVlc3QuR0VULmdldChTVEFSVF9USU1FX1FVRVJZX1BBUkFNKQotIyAgICBlbmRfdGltZSA9IHJlcXVlc3QuR0VULmdldChFTkRfVElNRV9RVUVSWV9QQVJBTSkKLSMgICAgCi0jICAgIGlmIG5vdCBzdGFydF90aW1lIGFuZCBub3QgZW5kX3RpbWU6Ci0jICAgICAgICByZXR1cm4gTm9uZQotIwotIyAgICBpZiBub3Qgc3RhcnRfdGltZToKLSMgICAgICAgIHJhaXNlIFJlc3RNaXNzaW5nUmVxdWlyZWRRdWVyeVBhcmFtRXhjZXB0aW9uKFNUQVJUX1RJTUVfUVVFUllfUEFSQU0pCi0jICAgIGlmIG5vdCBlbmRfdGltZToKLSMgICAgICAgIHJhaXNlIFJlc3RNaXNzaW5nUmVxdWlyZWRRdWVyeVBhcmFtRXhjZXB0aW9uKEVORF9USU1FX1FVRVJZX1BBUkFNKQotIyAgICAKLSMgICAgcmV0dXJuIChzdGFydF90aW1lLCBlbmRfdGltZSkKLQotCi1Ac2FmZV9zdGF0c192aWV3Ci1kZWYgZG9fZ2V0X3N0YXRzKHJlcXVlc3QsIGNsdXN0ZXIsIHRhcmdldF90eXBlLCB0YXJnZXRfaWQsIHN0YXRzX3R5cGUpOgotICAgIAotICAgICMgRklYTUU6IEhhY2sgdG8gaGFuZGxlIHRoZSBvbGQgaGFyZC1jb2RlZCBjb250cm9sbGVyIGlkIHZhbHVlCi0gICAgaWYgdGFyZ2V0X3R5cGUgPT0gJ2NvbnRyb2xsZXInIGFuZCB0YXJnZXRfaWQgPT0gJ2xvY2FsaG9zdCc6Ci0gICAgICAgIHRhcmdldF9pZCA9IGdldF9sb2NhbF9jb250cm9sbGVyX2lkKCkKLSAgICAKLSAgICAjIEdldCB0aGUgdGltZSByYW5nZSBvdmVyIHdoaWNoIHdlJ3JlIGdldHRpbmcgdGhlIHN0YXRzCi0gICAgc3RhcnRfdGltZSwgZW5kX3RpbWUgPSBnZXRfdGltZV9yYW5nZV9mcm9tX3JlcXVlc3QocmVxdWVzdCkKLSAgICAKLSAgICBpbml0X2RiX2Nvbm5lY3Rpb24oKQotICAgIAotICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICdHRVQnOgotICAgICAgICB3aW5kb3cgPSByZXF1ZXN0LkdFVC5nZXQoU0FNUExFX1dJTkRPV19RVUVSWV9QQVJBTSwgMCkKLSAgICAgICAgaWYgd2luZG93OgotICAgICAgICAgICAgd2luZG93ID0gY29udmVydF90aW1lX2R1cmF0aW9uKHdpbmRvdykKLSAgICAgICAgaWYgd2luZG93ICE9IDA6Ci0gICAgICAgICAgICB3aW5kb3cgPSBnZXRfY2xvc2VzdF93aW5kb3dfaW50ZXJ2YWwoaW50KHdpbmRvdykpCi0gICAgICAgICMgRklYTUU6IEVycm9yIGNoZWNraW5nIG9uIHdpbmRvdyB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgZGF0YV9mb3JtYXQgPSByZXF1ZXN0LkdFVC5nZXQoREFUQV9GT1JNQVRfUVVFUllfUEFSQU0sIFZBTFVFX0RBVEFfRk9STUFUKQotICAgICAgICAjIEZJWE1FOiBFcnJvciBjaGVja2luZyBvbiBkYXRhX2Zvcm1hdCB2YWx1ZQotICAgICAgICAKLSAgICAgICAgbGltaXQgPSByZXF1ZXN0LkdFVC5nZXQoTElNSVRfUVVFUllfUEFSQU0pCi0gICAgICAgIGlmIGxpbWl0OgotICAgICAgICAgICAgbGltaXQgPSBpbnQobGltaXQpCi0gICAgICAgICMgRklYTUU6IEVycm9yIGNoZWNraW5nIG9uIGxpbWl0IHZhbHVlCi0gICAgCi0gICAgICAgIGlmIHN0YXJ0X3RpbWUgaXMgbm90IE5vbmUgYW5kIGVuZF90aW1lIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyBGSVhNRTogRXJyb3IgY2hlY2tpbmcgb24gc3RhcnRfdGltZSBhbmQgZW5kX3RpbWUgdmFsdWVzCi0gICAgICAgICAgICBzYW1wbGVfaW50ZXJ2YWwgPSByZXF1ZXN0LkdFVC5nZXQoU0FNUExFX0lOVEVSVkFMX1FVRVJZX1BBUkFNKQotICAgICAgICAgICAgaWYgbm90IHNhbXBsZV9pbnRlcnZhbDoKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBFcnJvciBjaGVja2luZyBvbiBzYW1wbGVfcGVyaW9kIHZhbHVlCi0gICAgICAgICAgICAgICAgc2FtcGxlX2NvdW50ID0gcmVxdWVzdC5HRVQuZ2V0KFNBTVBMRV9DT1VOVF9RVUVSWV9QQVJBTSwgREVGQVVMVF9TQU1QTEVfQ09VTlQpCi0gICAgICAgICAgICAgICAgIyBGSVhNRTogRXJyb3IgY2hlY2tpbmcgb24gc2FtcGxlX2NvdW50IHZhbHVlCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHNhbXBsZV9pbnRlcnZhbCA9IChlbmRfdGltZSAtIHN0YXJ0X3RpbWUpIC8gaW50KHNhbXBsZV9jb3VudCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2FtcGxlX2ludGVydmFsID0gY29udmVydF90aW1lX2R1cmF0aW9uKHNhbXBsZV9pbnRlcnZhbCkKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgc2FtcGxlX2ludGVydmFsICE9IDA6Ci0gICAgICAgICAgICAgICAgc2FtcGxlX2ludGVydmFsID0gZ2V0X2Nsb3Nlc3Rfc2FtcGxlX2ludGVydmFsKHNhbXBsZV9pbnRlcnZhbCkKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3RhdHNfZGF0YSA9IGdldF9zdGF0c19kYXRhKGNsdXN0ZXIsIHRhcmdldF90eXBlLCB0YXJnZXRfaWQsCi0gICAgICAgICAgICAgICAgc3RhdHNfdHlwZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUsIHNhbXBsZV9pbnRlcnZhbCwgd2luZG93LCBkYXRhX2Zvcm1hdCwgbGltaXQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdGF0c19kYXRhID0gZ2V0X2xhdGVzdF9zdGF0X2RhdGEoY2x1c3RlciwgdGFyZ2V0X3R5cGUsIHRhcmdldF9pZCwgc3RhdHNfdHlwZSwgd2luZG93LCBkYXRhX2Zvcm1hdCkKLSAgICAgICAgICAgIAotICAgICAgICByZXNwb25zZV9kYXRhID0gc2ltcGxlanNvbi5kdW1wcyhzdGF0c19kYXRhKQotICAgICAgICByZXNwb25zZSA9IEh0dHBSZXNwb25zZShyZXNwb25zZV9kYXRhLCBKU09OX0NPTlRFTlRfVFlQRSkKLSAgICAgICAgCi0gICAgZWxpZiByZXF1ZXN0Lm1ldGhvZCA9PSAnREVMRVRFJzoKLSAgICAgICAgZGVsZXRlX3N0YXRzX2RhdGEoY2x1c3RlciwgdGFyZ2V0X3R5cGUsIHRhcmdldF9pZCwgc3RhdHNfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGFydF90aW1lLCBlbmRfdGltZSkKLSAgICAgICAgcmVzcG9uc2UgPSBnZXRfc3VjY2Vzc2Z1bF9yZXNwb25zZSgpCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgICAgICAKLSAgICByZXR1cm4gcmVzcG9uc2UKLSAgICAKLQotQHNhZmVfc3RhdHNfdmlldwotZGVmIGRvX2dldF9zdGF0c19tZXRhZGF0YShyZXF1ZXN0LCBjbHVzdGVyLCBzdGF0c190eXBlPU5vbmUpOgotICAgIG1ldGFkYXRhID0gZ2V0X3N0YXRzX21ldGFkYXRhKGNsdXN0ZXIsIHN0YXRzX3R5cGUpCi0gICAgcmVzcG9uc2VfZGF0YSA9IHNpbXBsZWpzb24uZHVtcHMobWV0YWRhdGEpCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZV9kYXRhLCBKU09OX0NPTlRFTlRfVFlQRSkKLQotCi1Ac2FmZV9zdGF0c192aWV3Ci1kZWYgZG9fZ2V0X3N0YXRzX3R5cGVfaW5kZXgocmVxdWVzdCwgY2x1c3RlciwgdGFyZ2V0X3R5cGUsIHRhcmdldF9pZCwgc3RhdHNfdHlwZT1Ob25lKToKLSAgICAjIEZJWE1FOiBIYWNrIHRvIGhhbmRsZSB0aGUgb2xkIGhhcmQtY29kZWQgY29udHJvbGxlciBpZCB2YWx1ZQotICAgIGlmIHRhcmdldF90eXBlID09ICdjb250cm9sbGVyJyBhbmQgdGFyZ2V0X2lkID09ICdsb2NhbGhvc3QnOgotICAgICAgICB0YXJnZXRfaWQgPSBnZXRfbG9jYWxfY29udHJvbGxlcl9pZCgpCi0gICAgaW5pdF9kYl9jb25uZWN0aW9uKCkKLSAgICBpbmRleF9kYXRhID0gZ2V0X3N0YXRzX3R5cGVfaW5kZXgoY2x1c3RlciwgdGFyZ2V0X3R5cGUsIHRhcmdldF9pZCwgc3RhdHNfdHlwZSkKLSAgICByZXNwb25zZV9kYXRhID0gc2ltcGxlanNvbi5kdW1wcyhpbmRleF9kYXRhKQotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfZGF0YSwgSlNPTl9DT05URU5UX1RZUEUpCi0KLQotQHNhZmVfc3RhdHNfdmlldwotZGVmIGRvX2dldF9zdGF0c190YXJnZXRfdHlwZXMocmVxdWVzdCwgY2x1c3Rlcik6Ci0gICAgaW5pdF9kYl9jb25uZWN0aW9uKCkKLSAgICB0YXJnZXRfdHlwZV9kYXRhID0gZ2V0X3N0YXRzX3RhcmdldF90eXBlcyhjbHVzdGVyKQotICAgIHJlc3BvbnNlX2RhdGEgPSBzaW1wbGVqc29uLmR1bXBzKHRhcmdldF90eXBlX2RhdGEpCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShyZXNwb25zZV9kYXRhLCBKU09OX0NPTlRFTlRfVFlQRSkKLQotCi1Ac2FmZV9zdGF0c192aWV3Ci1kZWYgZG9fZ2V0X3N0YXRzX3RhcmdldHMocmVxdWVzdCwgY2x1c3RlciwgdGFyZ2V0X3R5cGU9Tm9uZSk6Ci0gICAgaW5pdF9kYl9jb25uZWN0aW9uKCkKLSAgICB0YXJnZXRfZGF0YSA9IGdldF9zdGF0c190YXJnZXRzKGNsdXN0ZXIsIHRhcmdldF90eXBlKQotICAgIHJlc3BvbnNlX2RhdGEgPSBzaW1wbGVqc29uLmR1bXBzKHRhcmdldF9kYXRhKQotICAgIHJldHVybiBIdHRwUmVzcG9uc2UocmVzcG9uc2VfZGF0YSwgSlNPTl9DT05URU5UX1RZUEUpCi0KLQotQHNhZmVfc3RhdHNfdmlldwotZGVmIGRvX3B1dF9zdGF0cyhyZXF1ZXN0LCBjbHVzdGVyKToKLSAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnUFVUJzoKLSAgICAgICAgcmFpc2UgUmVzdEludmFsaWRNZXRob2RFeGNlcHRpb24oKQotICAgIAotICAgIGluaXRfZGJfY29ubmVjdGlvbigpCi0gICAgCi0gICAgc3RhdHNfZGF0YSA9IHNpbXBsZWpzb24ubG9hZHMocmVxdWVzdC5yYXdfcG9zdF9kYXRhKQotICAgIHB1dF9zdGF0c19kYXRhKGNsdXN0ZXIsIHN0YXRzX2RhdGEpCi0gICAgCi0gICAgcmVzcG9uc2UgPSBnZXRfc3VjY2Vzc2Z1bF9yZXNwb25zZSgpCi0gICAgCi0gICAgcmV0dXJuIHJlc3BvbnNlCi0KLQotQHNhZmVfc3RhdHNfdmlldwotZGVmIGRvX2dldF9ldmVudHMocmVxdWVzdCwgY2x1c3Rlciwgbm9kZV9pZCk6Ci0gICAgIyBGSVhNRTogSGFjayB0byBoYW5kbGUgdGhlIG9sZCBoYXJkLWNvZGVkIGNvbnRyb2xsZXIgaWQgdmFsdWUKLSAgICBpZiBub2RlX2lkID09ICdsb2NhbGhvc3QnOgotICAgICAgICBub2RlX2lkID0gZ2V0X2xvY2FsX2NvbnRyb2xsZXJfaWQoKQotICAgIAotICAgICMgR2V0IHRoZSB0aW1lIHJhbmdlIG92ZXIgd2hpY2ggd2UncmUgZ2V0dGluZyB0aGUgZXZlbnRzCi0gICAgc3RhcnRfdGltZSwgZW5kX3RpbWUgPSBnZXRfdGltZV9yYW5nZV9mcm9tX3JlcXVlc3QocmVxdWVzdCkKLSAgICAKLSAgICBpbml0X2RiX2Nvbm5lY3Rpb24oKQotICAgIAotICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICdHRVQnOgotICAgICAgICBpbmNsdWRlX3BrX3RhZ19wYXJhbSA9IHJlcXVlc3QuR0VULmdldChJTkNMVURFX1BLX1RBR19RVUVSWV9QQVJBTSwgJ2ZhbHNlJykKLSAgICAgICAgaW5jbHVkZV9wa190YWcgPSBpbmNsdWRlX3BrX3RhZ19wYXJhbS5sb3dlcigpID09ICd0cnVlJwotICAgICAgICBldmVudHNfbGlzdCA9IGdldF9sb2dfZXZlbnRfZGF0YShjbHVzdGVyLCBub2RlX2lkLCBzdGFydF90aW1lLCBlbmRfdGltZSwgaW5jbHVkZV9wa190YWcpCi0gICAgICAgIHJlc3BvbnNlX2RhdGEgPSBzaW1wbGVqc29uLmR1bXBzKGV2ZW50c19saXN0KQotICAgICAgICByZXNwb25zZSA9IEh0dHBSZXNwb25zZShyZXNwb25zZV9kYXRhLCBKU09OX0NPTlRFTlRfVFlQRSkKLSAgICBlbGlmIHJlcXVlc3QubWV0aG9kID09ICdERUxFVEUnOgotICAgICAgICBkZWxldGVfbG9nX2V2ZW50X2RhdGEoY2x1c3Rlciwgbm9kZV9pZCwgc3RhcnRfdGltZSwgZW5kX3RpbWUpCi0gICAgICAgIHJlc3BvbnNlID0gZ2V0X3N1Y2Nlc3NmdWxfcmVzcG9uc2UoKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFJlc3RJbnZhbGlkTWV0aG9kRXhjZXB0aW9uKCkKLSAgICAgICAgCi0gICAgcmV0dXJuIHJlc3BvbnNlCi0KLUBzYWZlX3N0YXRzX3ZpZXcKLWRlZiBkb19wdXRfZXZlbnRzKHJlcXVlc3QsIGNsdXN0ZXIpOgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdQVVQnOgotICAgICAgICByYWlzZSBSZXN0SW52YWxpZE1ldGhvZEV4Y2VwdGlvbigpCi0gICAgCi0gICAgaW5pdF9kYl9jb25uZWN0aW9uKCkKLSAgICAKLSAgICBldmVudHNfZGF0YSA9IHNpbXBsZWpzb24ubG9hZHMocmVxdWVzdC5yYXdfcG9zdF9kYXRhKQotICAgIHB1dF9sb2dfZXZlbnRfZGF0YShjbHVzdGVyLCBldmVudHNfZGF0YSkKLSAgICAKLSAgICByZXNwb25zZSA9IGdldF9zdWNjZXNzZnVsX3Jlc3BvbnNlKCkKLSAgICAKLSAgICByZXR1cm4gcmVzcG9uc2UKLQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9zdGF0c19tZXRhZGF0YS9fX2luaXRfXy5weSBiL2NsaS9zZG5jb24vc3RhdHNfbWV0YWRhdGEvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDlhYjI3ODMuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9zdGF0c19tZXRhZGF0YS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3N0YXRzX21ldGFkYXRhL29mX3N0YXRzX21ldGFkYXRhLnB5IGIvY2xpL3NkbmNvbi9zdGF0c19tZXRhZGF0YS9vZl9zdGF0c19tZXRhZGF0YS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDBkNmIxZC4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3N0YXRzX21ldGFkYXRhL29mX3N0YXRzX21ldGFkYXRhLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLVNUQVRTX01FVEFEQVRBID0gWwotICAgIHsnbmFtZSc6ICdPRlBhY2tldEluJywgJ3R5cGUnOidpbnQnLCAndGFyZ2V0X3R5cGUnOidzd2l0Y2gnLCAndmVyYm9zZV9uYW1lJzogJ09GIFBhY2tldCBJbicsICd1bml0cyc6ICdQYWNrZXRzJ30sCi0gICAgeyduYW1lJzogJ09GRmxvd01vZCcsICd0eXBlJzonaW50JywgJ3RhcmdldF90eXBlJzonc3dpdGNoJywgJ3ZlcmJvc2VfbmFtZSc6ICdPRiBGbG93IE1vZCcsICd1bml0cyc6ICdGbG93IE1vZHMnfSwKLSAgICB7J25hbWUnOiAnT0ZBY3RpdmVGbG93JywgJ3R5cGUnOidpbnQnLCAndGFyZ2V0X3R5cGUnOidzd2l0Y2gnLCAndmVyYm9zZV9uYW1lJzogJ09GIEFjdGl2ZSBGbG93JywgJ3VuaXRzJzogJ0Zsb3dzJ30sCi1dClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9zdGF0c19tZXRhZGF0YS9vc19zdGF0c19tZXRhZGF0YS5weSBiL2NsaS9zZG5jb24vc3RhdHNfbWV0YWRhdGEvb3Nfc3RhdHNfbWV0YWRhdGEucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDg2MDFmODMuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9zdGF0c19tZXRhZGF0YS9vc19zdGF0c19tZXRhZGF0YS5weQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1TVEFUU19NRVRBREFUQSA9IFsKLSAgICB7J25hbWUnOiAnY3B1LWlkbGUnLCAndHlwZSc6J2Zsb2F0JywgJ3RhcmdldF90eXBlJzonY29udHJvbGxlcicsICd2ZXJib3NlX25hbWUnOiAnQ1BVIElkbGUnLCAndW5pdHMnOiAnJSd9LAotICAgIHsnbmFtZSc6ICdjcHUtbmljZScsICd0eXBlJzonZmxvYXQnLCAndGFyZ2V0X3R5cGUnOidjb250cm9sbGVyJywgJ3ZlcmJvc2VfbmFtZSc6ICdDUFUgTmljZScsICd1bml0cyc6ICclJ30sCi0gICAgeyduYW1lJzogJ2NwdS11c2VyJywgJ3R5cGUnOidmbG9hdCcsICd0YXJnZXRfdHlwZSc6J2NvbnRyb2xsZXInLCAndmVyYm9zZV9uYW1lJzogJ0NQVSBVc2VyJywgJ3VuaXRzJzogJyUnfSwKLSAgICB7J25hbWUnOiAnY3B1LXN5c3RlbScsICd0eXBlJzonZmxvYXQnLCAndGFyZ2V0X3R5cGUnOidjb250cm9sbGVyJywgJ3ZlcmJvc2VfbmFtZSc6ICdDUFUgU3lzdGVtJywgJ3VuaXRzJzogJyUnfSwKLSAgICB7J25hbWUnOiAnbWVtLXVzZWQnLCAndHlwZSc6J2ludCcsICd0YXJnZXRfdHlwZSc6J2NvbnRyb2xsZXInLCAndmVyYm9zZV9uYW1lJzogJ01lbW9yeSBVc2VkJywgJ3VuaXRzJzogJ2tCJ30sCi0gICAgeyduYW1lJzogJ21lbS1mcmVlJywgJ3R5cGUnOidpbnQnLCAndGFyZ2V0X3R5cGUnOidjb250cm9sbGVyJywgJ3ZlcmJvc2VfbmFtZSc6ICdNZW1vcnkgRnJlZScsICd1bml0cyc6ICdrQid9LAotICAgIHsnbmFtZSc6ICdzd2FwLXVzZWQnLCAndHlwZSc6J2ludCcsICd0YXJnZXRfdHlwZSc6J2NvbnRyb2xsZXInLCAndmVyYm9zZV9uYW1lJzogJ1N3YXAgVXNlZCcsICd1bml0cyc6ICdrQid9LAotICAgIHsnbmFtZSc6ICdkaXNrLXJvb3QnLCAndHlwZSc6J2ludCcsICd0YXJnZXRfdHlwZSc6J2NvbnRyb2xsZXInLCAndmVyYm9zZV9uYW1lJzogJy8gVXNlZCcsICd1bml0cyc6ICclJ30sCi0gICAgeyduYW1lJzogJ2Rpc2stbG9nJywgJ3R5cGUnOidpbnQnLCAndGFyZ2V0X3R5cGUnOidjb250cm9sbGVyJywgJ3ZlcmJvc2VfbmFtZSc6ICcvbG9nIFVzZWQnLCAndW5pdHMnOiAnJSd9LAotICAgIHsnbmFtZSc6ICdkaXNrLWJvb3QnLCAndHlwZSc6J2ludCcsICd0YXJnZXRfdHlwZSc6J2NvbnRyb2xsZXInLCAndmVyYm9zZV9uYW1lJzogJy9zeXNib290IFVzZWQnLCAndW5pdHMnOiAnJSd9LAotICAgIHsnbmFtZSc6ICdzZG5wbGF0Zm9ybS1jcHUnLCAndHlwZSc6J2Zsb2F0JywgJ3RhcmdldF90eXBlJzonY29udHJvbGxlcicsICd2ZXJib3NlX25hbWUnOiAnU0ROUGxhdGZvcm0gQ1BVJywgJ3VuaXRzJzogJyUnfSwKLSAgICB7J25hbWUnOiAnZGF0YWJhc2UtY3B1JywgJ3R5cGUnOidmbG9hdCcsICd0YXJnZXRfdHlwZSc6J2NvbnRyb2xsZXInLCAndmVyYm9zZV9uYW1lJzogJ0RhdGFiYXNlIENQVScsICd1bml0cyc6ICclJ30sCi0gICAgeyduYW1lJzogJ2FwYWNoZS1jcHUnLCAndHlwZSc6J2Zsb2F0JywgJ3RhcmdldF90eXBlJzonY29udHJvbGxlcicsICd2ZXJib3NlX25hbWUnOiAnQXBhY2hlIENQVScsICd1bml0cyc6ICclJ30sCi0gICAgeyduYW1lJzogJ2NsaS1jcHUnLCAndHlwZSc6J2Zsb2F0JywgJ3RhcmdldF90eXBlJzonY29udHJvbGxlcicsICd2ZXJib3NlX25hbWUnOiAnQ2xpIENQVScsICd1bml0cyc6ICclJ30sCi0gICAgeyduYW1lJzogJ3N0YXRkLWNwdScsICd0eXBlJzonZmxvYXQnLCAndGFyZ2V0X3R5cGUnOidjb250cm9sbGVyJywgJ3ZlcmJvc2VfbmFtZSc6ICdTdGF0ZCBDUFUnLCAndW5pdHMnOiAnJSd9LAotXQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9zeW5jZC9fX2luaXRfXy5weSBiL2NsaS9zZG5jb24vc3luY2QvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDlhYjI3ODMuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9zeW5jZC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3N5bmNkL21vZGVscy5weSBiL2NsaS9zZG5jb24vc3luY2QvbW9kZWxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjODM0NjFjLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vc3luY2QvbW9kZWxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi0iIiIKLWNsYXNzIFN5bmNkQ29uZmlnKG1vZGVscy5Nb2RlbCk6Ci0gICAgCi0gICAgIyBpZCBpcyBzZXQgdG8gdGhlIGxvY2FsIGNsdXN0ZXIgaWQuCi0gICAgaWQgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBwcmltYXJ5X2tleT1UcnVlLAotICAgICAgICBtYXhfbGVuZ3RoPTEyOCkKLSAgICAKLSAgICAjIEVuYWJsZSBzeW5jaW5nIHRvIHRoZSBjbG91ZAotICAgIGVuYWJsZWQgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J0VuYWJsZWQnLAotICAgICAgICBoZWxwX3RleHQ9J0lzIHN5bmNpbmcgdG8gdGhlIGNsb3VkIGVuYWJsZWQnLAotICAgICAgICBkZWZhdWx0PUZhbHNlKQotICAgIAotICAgICMgTG9nIGxldmVsIGZvciB0aGUgc3luY2QgZGFlbW9uIHByb2Nlc3MKLSAgICBsb2dfbGV2ZWwgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBtYXhfbGVuZ3RoPTMyLAotICAgICAgICB2ZXJib3NlX25hbWU9J0xvZyBMZXZlbCcsCi0gICAgICAgIGhlbHBfdGV4dD0nTG9nIGxldmVsIGZvciB0aGUgc3luY2QgZGFlbW9uIHByb2Nlc3MnLAotICAgICAgICBkZWZhdWx0PSd3YXJuaW5nJykKLQotICAgIHN5bmNfcGVyaW9kID0gbW9kZWxzLlBvc2l0aXZlSW50ZWdlckZpZWxkKAotICAgICAgICB2ZXJib3NlX25hbWU9J1N5bmMgUGVyaW9kJywKLSAgICAgICAgaGVscF90ZXh0PSdIb3cgb2Z0ZW4gKGluIHNlY29uZHMpIGxvY2FsIGRhdGEgaXMgc3luY2VkIHRvIHRoZSBjbG91ZCcsCi0gICAgICAgIGRlZmF1bHQ9MzAwKQotICAgIAotICAgIHN5bmNfb3ZlcmxhcCA9IG1vZGVscy5Qb3NpdGl2ZUludGVnZXJGaWVsZCgKLSAgICAgICAgdmVyYm9zZV9uYW1lPSdTeW5jIE92ZXJsYXAnLAotICAgICAgICBoZWxwX3RleHQ9J092ZXJsYXAgKGluIHNlY29uZHMpIG9mIHRoZSB0aW1lIHJhbmdlIG9mIGEgc3luYyBpdGVyYXRpb24gd2l0aCB0aGUgcHJldmlvdXMgc3luYyBpdGVyYXRpb24nLAotICAgICAgICBkZWZhdWx0PTMwKQotICAgIAotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAnc3luY2QtY29uZmlnJwotICAgICAgICBGSUVMRF9JTkZPID0gKAotICAgICAgICAgICAgeyduYW1lJzogJ2xvZ19sZXZlbCcsICdyZXN0X25hbWUnOiAnbG9nLWxldmVsJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3luY19wZXJpb2QnLCAncmVzdF9uYW1lJzogJ3N5bmMtcGVyaW9kJ30sCi0gICAgICAgICAgICB7J25hbWUnOiAnc3luY19vdmVybGFwJywgJ3Jlc3RfbmFtZSc6ICdzeW5jLW92ZXJsYXAnfSwKLSAgICAgICAgKQotCi1jbGFzcyBTeW5jZFRyYW5zcG9ydENvbmZpZyhtb2RlbHMuTW9kZWwpOgotICAgIAotICAgICMgQ29tcG9zaXRlIGtleSBvZiA8c3luY2QtY29uZmlnLWlkPjo8dHJhbnNwb3J0LW5hbWU+Ci0gICAgaWQgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBwcmltYXJ5X2tleT1UcnVlLAotICAgICAgICBtYXhfbGVuZ3RoPTI1NikKLSAgICAKLSAgICBjb25maWcgPSBtb2RlbHMuRm9yZWlnbktleSgKLSAgICAgICAgU3luY2RDb25maWcsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBtYXhfbGVuZ3RoPTEyOCwKLSAgICAgICAgYmxhbms9VHJ1ZSwKLSAgICAgICAgbnVsbD1UcnVlKQotICAgIAotICAgIHR5cGUgPSBtb2RlbHMuQ2hhckZpZWxkKAotICAgICAgICBtYXhfbGVuZ3RoPTMyLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0gICAgCi0gICAgYXJncyA9IG1vZGVscy5UZXh0RmllbGQoCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIHRhcmdldF9jbHVzdGVyID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgbWF4X2xlbmd0aD0yNTYsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLSAgICAKLSAgICBjbGFzcyBSZXN0OgotICAgICAgICBOQU1FID0gJ3N5bmNkLXRyYW5zcG9ydC1jb25maWcnCi0gICAgICAgIEZJRUxEX0lORk8gPSAoCi0gICAgICAgICAgICB7J25hbWUnOiAndGFyZ2V0X2NsdXN0ZXInLCAncmVzdF9uYW1lJzogJ3RhcmdldC1jbHVzdGVyJ30sCi0gICAgICAgICkKLQotY2xhc3MgU3luY2RQcm9ncmVzc0luZm8obW9kZWxzLk1vZGVsKToKLSAgICAKLSAgICAjIGlkIHZhbHVlIGlzIHBlci1jb250cm9sbGVyLW5vZGUgYW5kIHBlci1zeW5jZC10cmFuc3BvcnQsIHNvIHRoZSBpZCBpcwotICAgICMgPGNvbnRyb2xsZXItbm9kZSBpZD46PHRyYW5zcG9ydC1uYW1lPgotICAgIGlkID0gbW9kZWxzLkNoYXJGaWVsZCgKLSAgICAgICAgcHJpbWFyeV9rZXk9VHJ1ZSwKLSAgICAgICAgbWF4X2xlbmd0aD0yNTYpCi0KLSAgICBkYXRhX3N0YXJ0X3RpbWUgPSBtb2RlbHMuUG9zaXRpdmVJbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nRGF0YSBTdGFydCBUaW1lJywKLSAgICAgICAgaGVscF90ZXh0PSdUaW1lc3RhbXAgb2YgZWFybGllc3QgZGF0YSBhdmFpbGFibGUgZm9yIHN5bmNpbmcnLAotICAgICAgICBibGFuaz1UcnVlLAotICAgICAgICBudWxsPVRydWUpCi0gICAgCi0gICAgbGFzdF9zeW5jX3RpbWUgPSBtb2RlbHMuUG9zaXRpdmVJbnRlZ2VyRmllbGQoCi0gICAgICAgIHZlcmJvc2VfbmFtZT0nTGFzdCBTeW5jIFRpbWUnLAotICAgICAgICBoZWxwX3RleHQ9J0xhc3QgdGltZSB0aGF0IGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSBzeW5jZWQgdG8gdGhlIGNsb3VkIGZyb20gdGhlIGxvY2FsIGNvbnRyb2xsZXIgbm9kZScsCi0gICAgICAgIGJsYW5rPVRydWUsCi0gICAgICAgIG51bGw9VHJ1ZSkKLQotICAgIGNsYXNzIFJlc3Q6Ci0gICAgICAgIE5BTUUgPSAnc3luY2QtcHJvZ3Jlc3MtaW5mbycKLSAgICAgICAgRklFTERfSU5GTyA9ICgKLSAgICAgICAgICAgIHsnbmFtZSc6ICdkYXRhX3N0YXJ0X3RpbWUnLCAncmVzdF9uYW1lJzogJ2RhdGEtc3RhcnQtdGltZSd9LAotICAgICAgICAgICAgeyduYW1lJzogJ2xhc3Rfc3luY190aW1lJywgJ3Jlc3RfbmFtZSc6ICdsYXN0LXN5bmMtdGltZSd9LAotICAgICAgICApCi0iIiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3N5bmNkL3Rlc3RzLnB5IGIvY2xpL3NkbmNvbi9zeW5jZC90ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjZjMDBiMi4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3N5bmNkL3Rlc3RzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLSMgQWRkIHVuaXQgdGVzdHMgaGVyZQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi9zeW5jZC92aWV3cy5weSBiL2NsaS9zZG5jb24vc3luY2Qvdmlld3MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDg0ZTFlN2EuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi9zeW5jZC92aWV3cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jIENyZWF0ZSB5b3VyIHZpZXdzIGhlcmUuCi0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vdWkvX19pbml0X18ucHkgYi9jbGkvc2RuY29uL3VpL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YWIyNzgzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zY3JpcHRzL19faW5pdF9fLnB5IGIvY2xpL3NkbmNvbi91aS9zY3JpcHRzL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YWIyNzgzLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc2NyaXB0cy9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3NjcmlwdHMvYnVpbGR0b3BvbG9neS5weSBiL2NsaS9zZG5jb24vdWkvc2NyaXB0cy9idWlsZHRvcG9sb2d5LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyZDdlOTQwLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc2NyaXB0cy9idWlsZHRvcG9sb2d5LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLSMKLSMgQnVpbGQgYSBzaW1wbGUgSlNPTiBvZiB0aGUgdG9wb2xvZ3kgZm9yIHVzZSBpbiB0aGUgRm9yY2VEaXJlY3RlZCAKLSMgVmlzdWFsaXphdGlvbiBpbiB0aGUgSW5mb1ZpcyBUb29sa2l0Ci0jCi0KLSNJbXBvcnRpbmcgbW9kdWxlcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotaW1wb3J0IGpzb24KLWltcG9ydCB1cmxsaWIyCi1pbXBvcnQgc3dpdGNoYWxpYXMKLWZyb20gc2RuY29uLnJlc3Qudmlld3MgaW1wb3J0IGRvX3N3aXRjaGVzLCBkb19tb2RlbF9saXN0LCBkb19pbnN0YW5jZSwgZG9fZGV2aWNlLCBkb19saW5rcwotCi1kZWYgYnVpbGRfdG9wb2xvZ3lfZGF0YShyZXF1ZXN0KToKLSAgICAKLSAgICAjIFF1ZXJ5IEpTT04gZnJvbSBBUEkgYW5kIGxvYWQgaW50byBkaWN0aW9uYXJ5Ci0gICAgc3dpdGNoZXMgPSBqc29uLmxvYWRzKGRvX3N3aXRjaGVzKHJlcXVlc3QpLmNvbnRlbnQpCi0gICAgZGV2aWNlcyA9IGpzb24ubG9hZHMoZG9fZGV2aWNlKHJlcXVlc3QpLmNvbnRlbnQpCi0gICAgbGlua3MgPSBqc29uLmxvYWRzKGRvX2xpbmtzKHJlcXVlc3QpLmNvbnRlbnQpCi0gICAgYWxpYXNEaWN0ID0gc3dpdGNoYWxpYXMuYWxpYXNEaWN0KHJlcXVlc3QpCi0gICAgCi0gICAgIyBEaWN0aW9uYXJpZXMKLSAgICBwYXJzZWRzd2l0Y2ggPSBbXQotICAgIHBhcnNlZGRldmljZXMgPSBbXQotICAgIHBhcnNlZGxpbmtzID0gW10KLSAgICAKLSAgICAjIFN0ZXAgdGhyb3VnaCBtYXN0ZXIgJ3N3aXRjaGVzJyBsaXN0LCBleHRyYWN0IGVudHJ5IGZvciBlYWNoIGRpY3Rpb25hcnkuCi0gICAgZm9yIGluZGV4X3N3aXRjaGVzLHZhbHVlMV9zd2l0Y2hlcyBpbiBlbnVtZXJhdGUoc3dpdGNoZXMpOgotICAgICAgdGVtcGRpY3QgPSB7fQotICAgIAotICAgICAgIyBnZXQgbmVlZGVkIGVudHJpZXMgaW4gJ3N3aXRjaGVzJwotICAgICAgdGVtcGRpY3RbJ2RwaWQnXSA9IHZhbHVlMV9zd2l0Y2hlcy5nZXQoJ2RwaWQnLCcnKQotICAgICAgdGVtcGRpY3RbJ2luZXRBZGRyZXNzJ10gPSB2YWx1ZTFfc3dpdGNoZXMuZ2V0KCdpbmV0QWRkcmVzcycsJycpCi0gICAgICAKLSAgICAgICMgYXBwZW5kIHRvIGZpbmFsIHNvcnRlZCBvdXRwdXQuCi0gICAgICBwYXJzZWRzd2l0Y2guYXBwZW5kKHRlbXBkaWN0KQotICAgICAKLSAgICAjIFN0ZXAgdGhyb3VnaCBtYXN0ZXIgJ2RldmljZScgbGlzdCwgZXh0cmFjdCBlbnRyeSBmb3IgZWFjaCBkaWN0aW9uYXJ5LgotICAgIGZvciBpbmRleF9kZXZpY2VzLHZhbHVlMV9kZXZpY2VzIGluIGVudW1lcmF0ZShkZXZpY2VzKToKLSAgICAgIHRlbXBkaWN0ID0ge30KLSAgICAKLSAgICAgICMgZ2V0IG5lZWRlZCBlbnRyaWVzIGluICdkZXZpY2VzJwotICAgICAgZm9yIGluZGV4X21hYyx2YWx1ZV9tYWMgaW4gZW51bWVyYXRlKHZhbHVlMV9kZXZpY2VzWydtYWMnXSk6Ci0gICAgICAgIHRlbXBkaWN0WydtYWMnXSA9IHZhbHVlX21hYwotICAgICAgdGVtcGRpY3RbJ2lwdjQnXSA9IHZhbHVlMV9kZXZpY2VzLmdldCgnaXB2NCcsJ1Vua25vd24nKQotICAgICAgZm9yIGluZGV4X3N3aXRjaDIsdmFsdWVfc3dpdGNoMiBpbiBlbnVtZXJhdGUodmFsdWUxX2RldmljZXNbJ2F0dGFjaG1lbnRQb2ludCddKToKLSAgICAgICAgc3dpdGNoY29ubmxpc3QgPSBbXQotICAgICAgICBzd2l0Y2h0ZW1wZGljdCA9IHt9Ci0gICAgICAgIGlmIHZhbHVlX3N3aXRjaDIuZ2V0KCdzd2l0Y2hEUElEJywgJ1VOS05PV04nKSAhPSAnJzoKLSAgICAgICAgICBpZiB2YWx1ZV9zd2l0Y2gyLmdldCgncG9ydCcsICdVTktOT1dOJykgIT0gJyc6Ci0gICAgICAgICAgICBzd2l0Y2h0ZW1wZGljdFsncG9ydCddID0gdmFsdWVfc3dpdGNoMlsncG9ydCddCi0gICAgICAgICAgICBzd2l0Y2h0ZW1wZGljdFsnRFBJRCddID0gdmFsdWVfc3dpdGNoMlsnc3dpdGNoRFBJRCddCi0gICAgICAgICAgICBzd2l0Y2hjb25ubGlzdC5hcHBlbmQoc3dpdGNodGVtcGRpY3QpCi0gICAgICAgICAgICB0ZW1wZGljdFsnYXR0YWNobWVudHMnXSA9IHN3aXRjaGNvbm5saXN0Ci0gICAgICAjIGFwcGVuZCB0byBmaW5hbCBzb3J0ZWQgb3V0cHV0LgotICAgICAgcGFyc2VkZGV2aWNlcy5hcHBlbmQodGVtcGRpY3QpCi0gICAgCi0gICAgCi0gICAgIyBTdGVwIHRocm91Z2ggbWFzdGVyICdsaW5rcycgbGlzdCwgZXh0cmFjdCBlbnRyeSBmb3IgZWFjaCBkaWN0aW9uYXJ5LgotICAgIGZvciBpbmRleF9saW5rcyx2YWx1ZTFfbGlua3MgaW4gZW51bWVyYXRlKGxpbmtzKToKLSAgICAgIHRlbXBkaWN0ID0ge30KLSAgICAKLSAgICAgICMgZ2V0IG5lZWRlZCBlbnRyaWVzIGluICdsaW5rcycKLSAgICAgIHRlbXBkaWN0WydzcmMtc3dpdGNoJ10gPSB2YWx1ZTFfbGlua3MuZ2V0KCdzcmMtc3dpdGNoJywnJykKLSAgICAgIHRlbXBkaWN0WydzcmMtcG9ydCddID0gdmFsdWUxX2xpbmtzLmdldCgnc3JjLXBvcnQnLCcnKQotICAgICAgdGVtcGRpY3RbJ3NyYy1wb3J0LXN0YXRlJ10gPSB2YWx1ZTFfbGlua3MuZ2V0KCdzcmMtcG9ydC1zdGF0ZScsJycpCi0gICAgICB0ZW1wZGljdFsnZHN0LXN3aXRjaCddID0gdmFsdWUxX2xpbmtzLmdldCgnZHN0LXN3aXRjaCcsJycpCi0gICAgICB0ZW1wZGljdFsnZHN0LXBvcnQnXSA9IHZhbHVlMV9saW5rcy5nZXQoJ2RzdC1wb3J0JywnJykKLSAgICAgIHRlbXBkaWN0Wydkc3QtcG9ydC1zdGF0ZSddID0gdmFsdWUxX2xpbmtzLmdldCgnZHN0LXBvcnQtc3RhdGUnLCcnKQotICAgIAotICAgICAgIyBhcHBlbmQgdG8gZmluYWwgc29ydGVkIG91dHB1dC4KLSAgICAgIHBhcnNlZGxpbmtzLmFwcGVuZCh0ZW1wZGljdCkKLSAgICAKLSAgICAjQmVnaW4gcHV0aW5nIHRoZSBkYXRhIGluIHRoZSBKU09OIGxpc3QKLSAgICBqc29ub3V0cHV0ID0gW10KLSAgICByZXN1bHQgPSAnJwotICAgIAotICAgIAotICAgICMgUHJpbnQgc3dpdGNoZXMgYnkgdGhlbXNlbHZlcyB0byBoYW5kbGUgb3JwaGFuZWQgc3dpdGNoZXMuCi0gICAgZm9yIGluZGV4X3N3aXRjaCx2YWx1ZV9zd2l0Y2ggaW4gZW51bWVyYXRlKHBhcnNlZHN3aXRjaCk6Ci0gICAgICBhZGphY2VuY2llc3RtcCA9IFtdCi0gICAgICBkYXRhdG1wID0ge30KLSAgICAgIAotICAgICAgZGF0YXRtcCA9IHsgJyRjb2xvcic6ICcjZjE1OTIyJywgJyR0eXBlJzogJ3NxdWFyZScsICckZGltJzogJzEwJ30KLSAgICAgIGpzb25vdXRwdXQuYXBwZW5kKHsnYWRqYWNlbmNpZXMnOiBbXSwgJ2RhdGEnOiBkYXRhdG1wLCAnaWQnOiB2YWx1ZV9zd2l0Y2hbJ2RwaWQnXSwgJ25hbWUnOiBhbGlhc0RpY3QuZ2V0KHZhbHVlX3N3aXRjaFsnZHBpZCddLCB2YWx1ZV9zd2l0Y2hbJ2RwaWQnXSl9KQotICAgIAotICAgIAotICAgICMgRGV0ZXJtaW5lIGhvc3QgLT4gU3dpdGNoIGxpbmtzCi0gICAgZm9yIGluZGV4X2RldmljZXMsdmFsdWVfZGV2aWNlcyBpbiBlbnVtZXJhdGUocGFyc2VkZGV2aWNlcyk6Ci0gICAgICBhZGphY2VuY2llc3RtcCA9IFtdCi0gICAgICBkYXRhdG1wID0ge30KLSAgICAgIAotICAgICAgZm9yIGluZGV4X2Fkaix2YWx1ZV9hZGogaW4gZW51bWVyYXRlKHZhbHVlX2RldmljZXMuZ2V0KCdhdHRhY2htZW50cycsICcnKSk6Ci0gICAgICAgIGFkamFjZW5jaWVzdG1wLmFwcGVuZCh7J25vZGVUbyc6IHN0cih2YWx1ZV9hZGpbJ0RQSUQnXSksICdub2RlRnJvbSc6IHZhbHVlX2RldmljZXNbJ21hYyddLCAnZGF0YSc6IHsgJyRjb2xvcic6ICcjZmRiODEzJywgJyRsaW5lV2lkdGgnOiAnMycgfX0pCi0gICAgICBkYXRhdG1wID0geyAnJGNvbG9yJzogJyNmZGI4MTMnLCAnJHR5cGUnOiAnY2lyY2xlJywgJyRkaW0nOiAnMTAnfQotICAgICAganNvbm91dHB1dC5hcHBlbmQoeydhZGphY2VuY2llcyc6IGFkamFjZW5jaWVzdG1wLCAnZGF0YSc6IGRhdGF0bXAsICdpZCc6IHZhbHVlX2RldmljZXNbJ21hYyddLCAnbmFtZSc6IHZhbHVlX2RldmljZXNbJ21hYyddfSkKLSAgICAKLSAgICAjIERldGVybWluZSBTd2l0Y2ggLT4gU3dpdGNoIGxpbmtzCi0gICAgZm9yIGluZGV4X2xpbmssdmFsdWVfbGluayBpbiBlbnVtZXJhdGUocGFyc2VkbGlua3MpOgotICAgICAgYWRqYWNlbmNpZXN0bXAgPSBbXQotICAgICAgZGF0YXRtcCA9IHt9Ci0gICAgICBhZGphY2VuY2llc3RtcC5hcHBlbmQoeydub2RlVG8nOiBzdHIodmFsdWVfbGlua1snc3JjLXN3aXRjaCddKSwgJ25vZGVGcm9tJzogdmFsdWVfbGlua1snZHN0LXN3aXRjaCddLCAnZGF0YSc6IHsgJyRjb2xvcic6ICcjZjE1OTIyJywgJyRsaW5lV2lkdGgnOiAnMycgfX0pCi0gICAgICBkYXRhdG1wID0geyAnJGNvbG9yJzogJyNmMTU5MjInLCAnJHR5cGUnOiAnc3F1YXJlJywgJyRkaW0nOiAnMTAnfQotICAgICAganNvbm91dHB1dC5hcHBlbmQoeydhZGphY2VuY2llcyc6IGFkamFjZW5jaWVzdG1wLCAnZGF0YSc6IGRhdGF0bXAsICdpZCc6IHZhbHVlX2xpbmtbJ2RzdC1zd2l0Y2gnXSwgJ25hbWUnOiBhbGlhc0RpY3QuZ2V0KHZhbHVlX2xpbmtbJ2RzdC1zd2l0Y2gnXSwgdmFsdWVfbGlua1snZHN0LXN3aXRjaCddKX0pCi0gICAgCi0gICAgcmVzdWx0ICs9ICd2YXIganNvbiA9JyArIGpzb24uZHVtcHMoanNvbm91dHB1dCwgc29ydF9rZXlzPVRydWUsIGluZGVudD00LCBzZXBhcmF0b3JzPSgnLCcsICc6ICcpKSArICc7JwotICAgIHJldHVybiByZXN1bHQgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zY3JpcHRzL3Nob3dob3N0LnB5IGIvY2xpL3NkbmNvbi91aS9zY3JpcHRzL3Nob3dob3N0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YzcyZmI1Li4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc2NyaXB0cy9zaG93aG9zdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0jCi0jIFB5dGhvbiBzY3JpcHQgZm9yIHF1ZXJ5aW5nIEFQSSBhbmQgZGlzcGxheWluZyBjb25uZWN0ZWQgaG9zdHMgaW4gYSB0YWJsZQotIwotIwotCi0jSW1wb3J0aW5nIG1vZHVsZXMKLWltcG9ydCByZQotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCBkYXRldGltZQotaW1wb3J0IGpzb24KLWltcG9ydCB1cmxsaWIyCi1pbXBvcnQgc3dpdGNoYWxpYXMKLWZyb20gc2RuY29uLnJlc3Qudmlld3MgaW1wb3J0IGRvX3N3aXRjaGVzLCBkb19tb2RlbF9saXN0LCBkb19pbnN0YW5jZSwgZG9fZGV2aWNlCi0KLWRlZiBzaG93X2hvc3RfZGF0YShyZXF1ZXN0KToKLQotICAgICMgUXVlcnkgSlNPTiBmcm9tIEFQSSBhbmQgbG9hZCBpbnRvIGRpY3Rpb25hcnkKLSAgICBzd2l0Y2hlcyA9IGpzb24ubG9hZHMoZG9fc3dpdGNoZXMocmVxdWVzdCkuY29udGVudCkKLSAgICBzd2l0Y2hkZXZpY2VzID0ganNvbi5sb2Fkcyhkb19kZXZpY2UocmVxdWVzdCkuY29udGVudCkKLSAgICAKLSAgICAjIERpY3Rpb25hcmllcwotICAgIHNvcnRlZGRpY3QgPSBbXQotICAgIGFsaWFzRGljdCA9IHN3aXRjaGFsaWFzLmFsaWFzRGljdChyZXF1ZXN0KQotICAgIHVuc29ydGRpY3QgPSBbXQotICAgICAKLSAgICAjIFN0ZXAgdGhyb3VnaCBtYXN0ZXIgJ2RldmljZScgbGlzdCwgZXh0cmFjdCBlbnRyeSBmb3IgZWFjaCBkaWN0aW9uYXJ5LgotICAgIGZvciBpbmRleF9kZXZpY2VzLHZhbHVlMV9kZXZpY2VzIGluIGVudW1lcmF0ZShzd2l0Y2hkZXZpY2VzKToKLSAgICAgIHRlbXBkaWN0ID0ge30KLSAgICAgIHRlbXBzd2l0Y2hkaWN0ID0ge30KLSAgICAKLSAgICAgICMgZ2V0IG5lZWRlZCBlbnRyaWVzIGluICdkZXZpY2VzJwotICAgICAgdGVtcGRpY3RbJ21hYyddID0gdmFsdWUxX2RldmljZXMuZ2V0KCdtYWMnLCcnKQotICAgICAgdGVtcGRpY3RbJ2VudGl0eUNsYXNzJ10gPSB2YWx1ZTFfZGV2aWNlcy5nZXQoJ2VudGl0eUNsYXNzJywnJykKLSAgICAgIHRlbXBkaWN0Wyd2bGFuJ10gPSB2YWx1ZTFfZGV2aWNlcy5nZXQoJ3ZsYW4nLCcnKQotICAgICAgdGVtcGRpY3RbJ2lwdjQnXSA9IHZhbHVlMV9kZXZpY2VzLmdldCgnaXB2NCcsJ1Vua25vd24nKQotICAgICAgdGVtcGRpY3RbJ3N3aXRjaCddID0gdmFsdWUxX2RldmljZXMuZ2V0KCdhdHRhY2htZW50UG9pbnQnLCcnKQotICAgICAgdGVtcGRpY3RbJ2xhc3RTZWVuJ10gPSB2YWx1ZTFfZGV2aWNlcy5nZXQoJ2xhc3RTZWVuJywnJykKLSAgICAKLSAgICAgICMgYXBwZW5kIHRvIGZpbmFsIHNvcnRlZCBvdXRwdXQuCi0gICAgICB1bnNvcnRkaWN0LmFwcGVuZCh0ZW1wZGljdCkKLSAgICAKLSAgICAKLSAgICBzb3J0ZWRkaWN0ID0gc29ydGVkKHVuc29ydGRpY3QsIGtleT1sYW1iZGEgZWxlbTogIiVzIiAlIChlbGVtWydtYWMnXSkpCi0gICAgCi0gICAgI3ByaW50IHNvcnRlZGRpY3QKLSAgICAjcHJpbnQgdGltZS5zdHJmdGltZSgnJVktJW0tJWQgJUg6JU06JVMgJVonLCB0aW1lLmdtdGltZShzb3J0ZWRkaWN0WzBdWydjb25uZWN0ZWRTaW5jZSddIC8gZmxvYXQoMTAwMCkpKQotICAgIAotICAgIHJlc3VsdCA9ICcnCi0gICAgIyBQcmludCB0YWJsZSBvdXRwdXQKLSAgICByZXN1bHQgKz0gJzx0YWJsZSBpZD0ic2hvd2RldmljZW91dHB1dCIgPicKLSAgICByZXN1bHQgKz0gJzx0Ym9keSBzdHlsZT0iYm9yZGVyLXRvcDogMHB4OyI+JwotICAgIHJlc3VsdCArPSAnPHRyPjx0ZD5JRDwvdGQ+PHRkPk1BQyBBZGRyZXNzPC90ZD48dGQ+QWRkcmVzcyBTcGFjZTwvdGQ+PHRkPlZMQU48L3RkPjx0ZD5JUDwvdGQ+PHRkPlN3aXRjaDwvdGQ+PHRkPkxhc3QgU2VlbjwvdGQ+PC90cj4nCi0gICAgZm9yIGluZGV4X291dHB1dCx2YWx1ZV9vdXRwdXQgaW4gZW51bWVyYXRlKHNvcnRlZGRpY3QpOgotICAgICAgICByZXN1bHQgKz0gJzx0cj4nCi0gICAgICAgIHJlc3VsdCArPSAnICA8dGQ+JyArIHN0cihpbmRleF9vdXRwdXQgKyAxKSArICc8L3RkPicKLSAgICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nCi0gICAgICAgIGZvciB0bXBfaW5kZXgsdG1wX3ZhbHVlIGluIGVudW1lcmF0ZSh2YWx1ZV9vdXRwdXRbJ21hYyddKToKLSAgICAgICAgICAgIGlmIHRtcF9pbmRleCA+IDA6Ci0gICAgICAgICAgICAgIHJlc3VsdCArPSAnLCAnLAotICAgICAgICAgICAgcmVzdWx0ICs9IHN0cih0bXBfdmFsdWUpCi0gICAgICAgIHJlc3VsdCArPSAnPC90ZD4nCi0gICAgICAgIHJlc3VsdCArPSAnICA8dGQ+JyArIHZhbHVlX291dHB1dC5nZXQoJ2VudGl0eUNsYXNzJywnJykgKyAnPC90ZD4nCi0gICAgICAgIHJlc3VsdCArPSAnICA8dGQ+JwotICAgICAgICBmb3IgdG1wX2luZGV4LHRtcF92YWx1ZSBpbiBlbnVtZXJhdGUodmFsdWVfb3V0cHV0Wyd2bGFuJ10pOgotICAgICAgICAgICAgaWYgdG1wX2luZGV4ID4gMDoKLSAgICAgICAgICAgICAgcmVzdWx0ICs9ICcsICcsCi0gICAgICAgICAgICByZXN1bHQgKz0gc3RyKHRtcF92YWx1ZSkKLSAgICAgICAgcmVzdWx0ICs9ICc8L3RkPicKLSAgICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nCi0gICAgICAgIGZvciB0bXBfaW5kZXgsdG1wX3ZhbHVlIGluIGVudW1lcmF0ZSh2YWx1ZV9vdXRwdXRbJ2lwdjQnXSk6Ci0gICAgICAgICAgICBpZiB0bXBfaW5kZXggPiAwOgotICAgICAgICAgICAgICByZXN1bHQgKz0gJywgJywKLSAgICAgICAgICAgIHJlc3VsdCArPSBzdHIodG1wX3ZhbHVlKQotICAgICAgICByZXN1bHQgKz0gJzwvdGQ+JwotICAgICAgICByZXN1bHQgKz0gJyAgPHRkPicKLSAgICAgICAgZm9yIHRtcF9pbmRleCx0bXBfdmFsdWUgaW4gZW51bWVyYXRlKHZhbHVlX291dHB1dFsnc3dpdGNoJ10pOgotICAgICAgICAgICAgaWYgdG1wX2luZGV4ID4gMDoKLSAgICAgICAgICAgICAgcmVzdWx0ICs9ICcsICcsCi0gICAgICAgICAgICByZXN1bHQgKz0gYWxpYXNEaWN0LmdldCh0bXBfdmFsdWUuZ2V0KCdzd2l0Y2hEUElEJywgJ1VOS05PV04nKSwgdG1wX3ZhbHVlLmdldCgnc3dpdGNoRFBJRCcsICdVTktOT1dOJykpICsgJyBQb3J0ICcgKyBzdHIodG1wX3ZhbHVlLmdldCgncG9ydCcsICdVTktOT1dOJykpCi0gICAgICAgIHJlc3VsdCArPSAnPC90ZD4nCi0gICAgICAgIGRlbHRhID0gcm91bmQodGltZS50aW1lKCksMCkgLSAocm91bmQodmFsdWVfb3V0cHV0LmdldCgnbGFzdFNlZW4nLHRpbWUudGltZSgpKSAvIGludCgxMDAwKSkpCi0gICAgICAgIGlmIGRlbHRhIDw9IDA6Ci0gICAgICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4gTm93IDwvdGQ+JwotICAgICAgICBlbHNlOgotICAgICAgICAgIHJlc3VsdCArPSAnICA8dGQ+JyArIHN0cihkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1kZWx0YSkpICArICc8L3RkPicKLSAgICAgICAgcmVzdWx0ICs9ICc8L3RyPicKLSAgICByZXN1bHQgKz0gJzwvdGJvZHk+JwotICAgIHJlc3VsdCArPSAnPC90YWJsZT4nICAKLSAgICByZXR1cm4gcmVzdWx0CmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3NjcmlwdHMvc2hvd2xpbmsucHkgYi9jbGkvc2RuY29uL3VpL3NjcmlwdHMvc2hvd2xpbmsucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDRhOTFkNTAuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zY3JpcHRzL3Nob3dsaW5rLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotIwotIyBQeXRob24gc2NyaXB0IHRvIHF1ZXJ5IGxpbmsgc3RhdGVzIGZyb20gUkVTVCBBUEkKLSMKLSMKLQotI0ltcG9ydGluZyBtb2R1bGVzCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQganNvbgotaW1wb3J0IHVybGxpYjIKLWltcG9ydCBzd2l0Y2hhbGlhcwotZnJvbSBzZG5jb24ucmVzdC52aWV3cyBpbXBvcnQgZG9fc3dpdGNoZXMsIGRvX21vZGVsX2xpc3QsIGRvX2luc3RhbmNlLCBkb19kZXZpY2UsIGRvX2xpbmtzCi0KLQotZGVmIHNob3dfbGlua19kYXRhKHJlcXVlc3QpOgotCi0gICAgIyBRdWVyeSBKU09OIGZyb20gQVBJIGFuZCBsb2FkIGludG8gZGljdGlvbmFyeQotICAgIHN3aXRjaGVzID0ganNvbi5sb2Fkcyhkb19zd2l0Y2hlcyhyZXF1ZXN0KS5jb250ZW50KQotICAgIHN3aXRjaGxpbmtzID0ganNvbi5sb2Fkcyhkb19saW5rcyhyZXF1ZXN0KS5jb250ZW50KQotICAgIAotICAgICMgRGljdGlvbmFyaWVzCi0gICAgc29ydGVkZGljdCA9IFtdCi0gICAgYWxpYXNEaWN0ID0gc3dpdGNoYWxpYXMuYWxpYXNEaWN0KHJlcXVlc3QpCi0gICAgdW5zb3J0ZGljdCA9IFtdCi0gICAgc3RhdGVkaWN0ID0gezA6ICdGT1JXQVJESU5HJywgMTogJ0RPV04nLCAyOiAnRk9SV0FSRCcsIDM6ICdCTE9DSycsIDQ6ICdNQVNLJ30KLSAgICAgCi0gICAgIyBTdGVwIHRocm91Z2ggbWFzdGVyICdsaW5rcycgbGlzdCwgZXh0cmFjdCBlbnRyeSBmb3IgZWFjaCBkaWN0aW9uYXJ5LgotICAgIGZvciBpbmRleF9saW5rcyx2YWx1ZTFfbGlua3MgaW4gZW51bWVyYXRlKHN3aXRjaGxpbmtzKToKLSAgICAgICAgdGVtcGRpY3QgPSB7fQotICAgICAgICB0ZW1wc3dpdGNoZGljdCA9IHt9Ci0gICAgICAKLSAgICAgICAgIyBnZXQgbmVlZGVkIGVudHJpZXMgaW4gJ2xpbmtzJwotICAgICAgICB0ZW1wZGljdFsnc3JjLXN3aXRjaCddID0gdmFsdWUxX2xpbmtzLmdldCgnc3JjLXN3aXRjaCcsJycpCi0gICAgICAgIHRlbXBkaWN0WydzcmMtcG9ydCddID0gdmFsdWUxX2xpbmtzLmdldCgnc3JjLXBvcnQnLCcnKQotICAgICAgICB0ZW1wZGljdFsnc3JjLXBvcnQtc3RhdGUnXSA9IHZhbHVlMV9saW5rcy5nZXQoJ3NyYy1wb3J0LXN0YXRlJywnJykKLSAgICAgICAgdGVtcGRpY3RbJ2RzdC1zd2l0Y2gnXSA9IHZhbHVlMV9saW5rcy5nZXQoJ2RzdC1zd2l0Y2gnLCcnKQotICAgICAgICB0ZW1wZGljdFsnZHN0LXBvcnQnXSA9IHZhbHVlMV9saW5rcy5nZXQoJ2RzdC1wb3J0JywnJykKLSAgICAgICAgdGVtcGRpY3RbJ2RzdC1wb3J0LXN0YXRlJ10gPSB2YWx1ZTFfbGlua3MuZ2V0KCdkc3QtcG9ydC1zdGF0ZScsJycpCi0gICAgICAgIHRlbXBkaWN0Wyd0eXBlJ10gPSB2YWx1ZTFfbGlua3MuZ2V0KCd0eXBlJywnJykKLSAgICAgIAotICAgICAgICAjIGFwcGVuZCB0byBmaW5hbCBzb3J0ZWQgb3V0cHV0LgotICAgICAgICB1bnNvcnRkaWN0LmFwcGVuZCh0ZW1wZGljdCkKLSAgICAKLSAgICAKLSAgICBzb3J0ZWRkaWN0ID0gc29ydGVkKHVuc29ydGRpY3QsIGtleT1sYW1iZGEgZWxlbTogIiVzICUwMmQiICUgKGVsZW1bJ3NyYy1zd2l0Y2gnXSwgZWxlbVsnc3JjLXBvcnQnXSkpCi0gICAgCi0gICAgcmVzdWx0ID0gJycKLSAgICAjIFByaW50IHRhYmxlIG91dHB1dAotICAgIHJlc3VsdCArPSAnPHRhYmxlIGlkPSJzaG93bGlua291dHB1dCIgPicKLSAgICByZXN1bHQgKz0gJzx0Ym9keT4nCi0gICAgcmVzdWx0ICs9ICc8dHI+PHRkPklEPC90ZD48dGQ+U291cmNlIFN3aXRjaDwvdGQ+PHRkPlNvdXJjZSBQb3J0PC90ZD48dGQ+U291cmNlIFBvcnQgU3RhdGU8L3RkPjx0ZD5EZXN0aW5hdGlvbiBTd2l0Y2g8L3RkPjx0ZD5EZXN0aW5hdGlvbiBQb3J0PC90ZD48dGQ+RGVzdGluYXRpb24gUG9ydCBTdGF0ZTwvdGQ+PHRkPkNvbm5lY3Rpb24gVHlwZTwvdGQ+PC90cj4nCi0gICAgZm9yIGluZGV4X291dHB1dCx2YWx1ZV9vdXRwdXQgaW4gZW51bWVyYXRlKHNvcnRlZGRpY3QpOgotICAgICAgICByZXN1bHQgKz0gJzx0cj4nCi0gICAgICAgIHJlc3VsdCArPSAnICA8dGQ+JyArIHN0cihpbmRleF9vdXRwdXQgKyAxKSArICc8L3RkPicKLSAgICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nIAotICAgICAgICByZXN1bHQgKz0gYWxpYXNEaWN0LmdldCh2YWx1ZV9vdXRwdXQuZ2V0KCdzcmMtc3dpdGNoJywgJ1VOS05PV04nKSwgdmFsdWVfb3V0cHV0LmdldCgnc3JjLXN3aXRjaCcsICdVTktOT1dOJykpCi0gICAgICAgIHJlc3VsdCArPSAnPC90ZD4nCi0gICAgICAgIHJlc3VsdCArPSAnICA8dGQ+JyArIHN0cih2YWx1ZV9vdXRwdXQuZ2V0KCdzcmMtcG9ydCcsJycpKSArICc8L3RkPicKLSAgICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nICsgc3RhdGVkaWN0LmdldCh2YWx1ZV9vdXRwdXQuZ2V0KCdzcmMtcG9ydC1zdGF0ZScsMCksJ0RPV04nKSArICc8L3RkPicKLSAgICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nIAotICAgICAgICByZXN1bHQgKz0gYWxpYXNEaWN0LmdldCh2YWx1ZV9vdXRwdXQuZ2V0KCdkc3Qtc3dpdGNoJywgJ1VOS05PV04nKSwgdmFsdWVfb3V0cHV0LmdldCgnZHN0LXN3aXRjaCcsICdVTktOT1dOJykpCi0gICAgICAgIHJlc3VsdCArPSAnPC90ZD4nCi0gICAgICAgIHJlc3VsdCArPSAnICA8dGQ+JyArIHN0cih2YWx1ZV9vdXRwdXQuZ2V0KCdkc3QtcG9ydCcsJycpKSArICc8L3RkPicKLSAgICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nICsgc3RhdGVkaWN0LmdldCh2YWx1ZV9vdXRwdXQuZ2V0KCdkc3QtcG9ydC1zdGF0ZScsMCksJ0RPV04nKSArICc8L3RkPicKLSAgICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nICsgdmFsdWVfb3V0cHV0LmdldCgndHlwZScsJycpICsgJzwvdGQ+JwotICAgICAgICByZXN1bHQgKz0gJzwvdHI+JwotICAgIHJlc3VsdCArPSAnPC90Ym9keT4nCi0gICAgcmVzdWx0ICs9ICc8L3RhYmxlPicKLSAgICByZXR1cm4gcmVzdWx0Ci0gIApkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zY3JpcHRzL3Nob3dzd2l0Y2gucHkgYi9jbGkvc2RuY29uL3VpL3NjcmlwdHMvc2hvd3N3aXRjaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGI4MzE3ZS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3NjcmlwdHMvc2hvd3N3aXRjaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLSMgUHl0aG9uIHNjcmlwdCBmb3IgcXVlcnlpbmcgUkVTVCBBUEkgYW5kIGRpc3BsYXlpbmcgY29ubmVjdGVkIHN3aXRjaGVzIGluCi0jIGEgdGFibGUgCi0jCi0KLSNJbXBvcnRpbmcgbW9kdWxlcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotaW1wb3J0IGpzb24KLWltcG9ydCB1cmxsaWIyCi1mcm9tIHNkbmNvbi5yZXN0LnZpZXdzIGltcG9ydCBkb19zd2l0Y2hlcywgZG9fbW9kZWxfbGlzdCwgZG9faW5zdGFuY2UKLQotZGVmIHNob3dfc3dpdGNoX2RhdGEocmVxdWVzdCk6Ci0gICAgCi0gICAgc3dpdGNoZXMgPSBqc29uLmxvYWRzKGRvX3N3aXRjaGVzKHJlcXVlc3QpLmNvbnRlbnQpCi0gICAgc3dpdGNoYWxpYXNlcyA9IGpzb24ubG9hZHMoZG9faW5zdGFuY2UocmVxdWVzdCwgJ3N3aXRjaC1hbGlhcycpLmNvbnRlbnQpCi0gICAgc3dpdGNoY29uZmlnID0ganNvbi5sb2Fkcyhkb19pbnN0YW5jZShyZXF1ZXN0LCAic3dpdGNoLWNvbmZpZyIpLmNvbnRlbnQpCi0KLSAgICAjIERpY3Rpb25hcmllcwotICAgIHNvcnRlZGRpY3QgPSBbXQotICAgICAKLSAgICAjIFN0ZXAgdGhyb3VnaCBtYXN0ZXIgJ3N3aXRjaGVzJyBsaXN0LCBleHRyYWN0IGVudHJ5IGZvciBlYWNoIGRpY3Rpb25hcnkuCi0gICAgZm9yIGluZGV4X3N3aXRjaGVzLHZhbHVlMV9zd2l0Y2hlcyBpbiBlbnVtZXJhdGUoc3dpdGNoZXMpOgotICAgICAgdGVtcGRpY3QgPSB7fQotICAgICAgdGVtcGFsaWFzZGljdCA9IHt9Ci0gICAgICB0ZW1wY29uZmlnZGljdCA9IHt9Ci0gICAgCi0gICAgICAjIGdldCBuZWVkZWQgZW50cmllcyBpbiAnc3dpdGNoZXMnCi0gICAgICB0ZW1wZGljdFsnZHBpZCddID0gdmFsdWUxX3N3aXRjaGVzLmdldCgnZHBpZCcsJycpCi0gICAgICB0ZW1wZGljdFsnaW5ldEFkZHJlc3MnXSA9IHZhbHVlMV9zd2l0Y2hlcy5nZXQoJ2luZXRBZGRyZXNzJywnJykKLSAgICAgIHRlbXBkaWN0Wydjb25uZWN0ZWRTaW5jZSddID0gdmFsdWUxX3N3aXRjaGVzLmdldCgnY29ubmVjdGVkU2luY2UnLCcnKQotICAgIAotICAgICAgIyBnZXQgcmVsYXRlZCBlbnRyaWVzIGluIG90aGVyIEpTT04gcXVlcmllcwotICAgICAgZm9yIGluZGV4X3N3aXRjaGFsaWFzZXMsdmFsdWUxX3N3aXRjaGFsaWFzZXMgaW4gZW51bWVyYXRlKHN3aXRjaGFsaWFzZXMpOgotICAgICAgICBpZiB2YWx1ZTFfc3dpdGNoYWxpYXNlc1snc3dpdGNoJ10gPT0gdmFsdWUxX3N3aXRjaGVzWydkcGlkJ106Ci0gICAgICAgICAgdGVtcGFsaWFzZGljdFsnYWxpYXMnXSA9IHZhbHVlMV9zd2l0Y2hhbGlhc2VzLmdldCgnaWQnLCcnKQotICAgICAgdGVtcGRpY3RbJ2FsaWFzJ10gPSB0ZW1wYWxpYXNkaWN0LmdldCgnYWxpYXMnLCcnKQotICAgIAotICAgICAgZm9yIGluZGV4X3N3aXRjaGNvbmZpZyx2YWx1ZTFfc3dpdGNoY29uZmlnIGluIGVudW1lcmF0ZShzd2l0Y2hjb25maWcpOgotICAgICAgICBpZiB2YWx1ZTFfc3dpdGNoY29uZmlnWydkcGlkJ10gPT0gdmFsdWUxX3N3aXRjaGVzWydkcGlkJ106Ci0gICAgICAgICAgdGVtcGNvbmZpZ2RpY3RbJ2NvcmUtc3dpdGNoJ10gPSB2YWx1ZTFfc3dpdGNoY29uZmlnLmdldCgnY29yZS1zd2l0Y2gnLCcnKQotICAgICAgICAgIHRlbXBjb25maWdkaWN0Wyd0dW5uZWwtdGVybWluYXRpb24nXSA9IHZhbHVlMV9zd2l0Y2hjb25maWcuZ2V0KCd0dW5uZWwtdGVybWluYXRpb24nLCcnKQotICAgICAgdGVtcGRpY3RbJ2NvcmUtc3dpdGNoJ10gPSB0ZW1wY29uZmlnZGljdC5nZXQoJ2NvcmUtc3dpdGNoJywnJykKLSAgICAgIHRlbXBkaWN0Wyd0dW5uZWwtdGVybWluYXRpb24nXSA9IHRlbXBjb25maWdkaWN0LmdldCgndHVubmVsLXRlcm1pbmF0aW9uJywnJykKLSAgICAgIAotICAgICAgIyBhcHBlbmQgdG8gZmluYWwgc29ydGVkIG91dHB1dC4KLSAgICAgIHNvcnRlZGRpY3QuYXBwZW5kKHRlbXBkaWN0KQotICAgIHNvcnRlZGRpY3QucmV2ZXJzZSgpCi0gICAgCi0gICAgcmVzdWx0ID0gJycKLSAgICAjIFByaW50IHRhYmxlIG91dHB1dAotICAgIHJlc3VsdCArPSAnPHRhYmxlIGlkPSJzaG93c3dpdGNob3V0cHV0Ij4nCi0gICAgcmVzdWx0ICs9ICc8dGJvZHk+JwotICAgIHJlc3VsdCArPSAnPHRyPjx0ZD5JRDwvdGQ+PHRkPkFsaWFzPC90ZD48dGQ+U3dpdGNoIERQSUQ8L3RkPjx0ZD5JUCBBZGRyZXNzPC90ZD48dGQ+Q29ubmVjdGVkIFNpbmNlPC90ZD48L3RyPicKLSAgICBmb3IgaW5kZXhfb3V0cHV0LHZhbHVlX291dHB1dCBpbiBlbnVtZXJhdGUoc29ydGVkZGljdCk6Ci0gICAgICBmb3JtYXRJUHJlc3VsdCA9IHJlLnNlYXJjaCgnLyguKik6Jyx2YWx1ZV9vdXRwdXRbJ2luZXRBZGRyZXNzJ10pCi0gICAgICByZXN1bHQgKz0gJzx0cj4nCi0gICAgICByZXN1bHQgKz0gJyAgPHRkPicgKyBzdHIoaW5kZXhfb3V0cHV0ICsgMSkgKyAnPC90ZD4nCi0gICAgICByZXN1bHQgKz0gJyAgPHRkPicgKyB2YWx1ZV9vdXRwdXQuZ2V0KCdhbGlhcycsJycpICsgJzwvdGQ+JwotICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nICsgdmFsdWVfb3V0cHV0LmdldCgnZHBpZCcsJycpICsgJzwvdGQ+JwotICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nICsgZm9ybWF0SVByZXN1bHQuZ3JvdXAoMSkgKyAnPC90ZD4nCi0gICAgICBpZiB2YWx1ZV9vdXRwdXRbJ2Nvbm5lY3RlZFNpbmNlJ10gIT0gJyc6Ci0gICAgICAgIHJlc3VsdCArPSAnICA8dGQ+JyArIHRpbWUuc3RyZnRpbWUoJyVZLSVtLSVkICVIOiVNOiVTICVaJywgdGltZS5nbXRpbWUodmFsdWVfb3V0cHV0Wydjb25uZWN0ZWRTaW5jZSddIC8gZmxvYXQoMTAwMCkpKSArICc8L3RkPicKLSAgICAgIGVsc2U6Ci0gICAgICAgIHJlc3VsdCArPSAnICA8dGQ+RGlzY29ubmVjdGVkPC90ZD4nCi0gICAgICByZXN1bHQgKz0gJzwvdHI+JwotICAgIHJlc3VsdCArPSAnPC90Ym9keT4nCi0gICAgcmVzdWx0ICs9ICc8L3RhYmxlPicKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0Ci0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vdWkvc2NyaXB0cy9zaG93dHVubmVsLnB5IGIvY2xpL3NkbmNvbi91aS9zY3JpcHRzL3Nob3d0dW5uZWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGE4YzA1NDUuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zY3JpcHRzL3Nob3d0dW5uZWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0jCi0jIFB5dGhvbiBzY3JpcHQgdG8gcXVlcnkgdHVubmVsIHN0YXRlcyBmcm9tIFJFU1QgQVBJCi0jCi0jCi0KLSNJbXBvcnRpbmcgbW9kdWxlcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotaW1wb3J0IGpzb24KLWltcG9ydCB1cmxsaWIyCi1pbXBvcnQgc3dpdGNoYWxpYXMKLWZyb20gc2RuY29uLnJlc3Qudmlld3MgaW1wb3J0IGRvX3NkbnBsYXRmb3JtX3R1bm5lbF9tYW5hZ2VyCi0KLWRlZiBzaG93X3R1bm5lbF9kYXRhKHJlcXVlc3QpOgotCi0gICAgIyBRdWVyeSBKU09OIGZyb20gQVBJIGFuZCBsb2FkIGludG8gZGljdGlvbmFyeQotICAgIHR1bm5lbHMgPSBqc29uLmxvYWRzKGRvX3NkbnBsYXRmb3JtX3R1bm5lbF9tYW5hZ2VyKHJlcXVlc3QsJ2FsbCcpLmNvbnRlbnQpCi0gICAgCi0gICAgIyBEaWN0aW9uYXJpZXMKLSAgICBzb3J0ZWRkaWN0ID0gW10KLSAgICBhbGlhc0RpY3QgPSBzd2l0Y2hhbGlhcy5hbGlhc0RpY3QocmVxdWVzdCkKLSAgICB1bnNvcnRkaWN0ID0gW10KLSAgICBzdGF0ZWRpY3QgPSB7MDogJ0ZPUldBUkRJTkcnLCAxOiAnRE9XTicsIDI6ICdGT1JXQVJEJywgMzogJ0JMT0NLJywgNDogJ01BU0snfQotICAgICAKLSAgICAjIFN0ZXAgdGhyb3VnaCBtYXN0ZXIgJ3R1bm5lbHMnIGxpc3QsIGV4dHJhY3QgZW50cnkgZm9yIGVhY2ggZGljdGlvbmFyeS4KLSAgICBmb3IgaW5kZXhfdHVubmVscyx2YWx1ZTFfdHVubmVscyBpbiB0dW5uZWxzLml0ZXJpdGVtcygpOgotICAgICAgdGVtcGRpY3QgPSB7fQotICAgICAgdGVtcHR1bm5lbGRpY3QgPSB7fQotICAgIAotICAgICAgIyBnZXQgbmVlZGVkIGVudHJpZXMgaW4gJ2xpbmtzJyAKLSAgICAgIHRlbXBkaWN0WydkcGlkJ10gPSB2YWx1ZTFfdHVubmVscy5nZXQoJ2hleERwaWQnLCcnKQotICAgICAgdGVtcGRpY3RbJ3R1bm5lbEVuYWJsZWQnXSA9IHZhbHVlMV90dW5uZWxzLmdldCgndHVubmVsRW5hYmxlZCcsJycpCi0gICAgICB0ZW1wZGljdFsndHVubmVsSVBBZGRyJ10gPSB2YWx1ZTFfdHVubmVscy5nZXQoJ3R1bm5lbElQQWRkcicsJycpCi0gICAgICB0ZW1wZGljdFsndHVubmVsQWN0aXZlJ10gPSB2YWx1ZTFfdHVubmVscy5nZXQoJ3R1bm5lbEFjdGl2ZScsJycpCi0gICAgICB0ZW1wZGljdFsndHVubmVsU3RhdGUnXSA9IHZhbHVlMV90dW5uZWxzLmdldCgndHVubmVsU3RhdGUnLCcnKQotICAgICAgdGVtcGRpY3RbJ3R1bm5lbElmJ10gPSB2YWx1ZTFfdHVubmVscy5nZXQoJ3R1bm5lbEVuZFBvaW50SW50Zk5hbWUnLCcnKQotICAgICAgdGVtcGRpY3RbJ3R1bm5lbENhcGFibGUnXSA9IHZhbHVlMV90dW5uZWxzLmdldCgndHVubmVsQ2FwYWJsZScsJycpCi0gICAgICAjIGFwcGVuZCB0byBmaW5hbCBzb3J0ZWQgb3V0cHV0LgotICAgICAgaWYgdmFsdWUxX3R1bm5lbHMuZ2V0KCd0dW5uZWxDYXBhYmxlJywnJyk6Ci0gICAgICAgIHVuc29ydGRpY3QuYXBwZW5kKHRlbXBkaWN0KQotICAgIAotICAgIHNvcnRlZGRpY3QgPSBzb3J0ZWQodW5zb3J0ZGljdCwga2V5PWxhbWJkYSBlbGVtOiAiJXMgJXMiICUgKGVsZW1bJ2RwaWQnXSwgZWxlbVsndHVubmVsSVBBZGRyJ10pKQotICAgIAotICAgIHJlc3VsdCA9ICcnCi0gICAgIyBQcmludCB0YWJsZSBvdXRwdXQKLSAgICByZXN1bHQgKz0gJzx0YWJsZSBpZD0ic2hvd3R1bm5lbG91dHB1dCIgPicKLSAgICByZXN1bHQgKz0gJzx0Ym9keT4nCi0gICAgcmVzdWx0ICs9ICc8dHI+PHRkPklEPC90ZD48dGQ+U3dpdGNoPC90ZD48dGQ+VHVubmVsIFNvdXJjZSBJUDwvdGQ+PHRkPlR1bm5lbCBJbnRlcmZhY2U8L3RkPjx0ZD5UdW5uZWwgRW5hYmxlZDwvdGQ+PHRkPlR1bm5lbCBTdGF0ZTwvdGQ+PC90cj4nCi0gICAgCi0gICAgZm9yIGluZGV4X291dHB1dCx2YWx1ZV9vdXRwdXQgaW4gZW51bWVyYXRlKHNvcnRlZGRpY3QpOgotICAgICAgcmVzdWx0ICs9ICc8dHI+JwotICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nICsgc3RyKGluZGV4X291dHB1dCArIDEpICsgJzwvdGQ+JwotICAgICAgcmVzdWx0ICs9ICcgIDx0ZD4nIAotICAgICAgcmVzdWx0ICs9IGFsaWFzRGljdC5nZXQodmFsdWVfb3V0cHV0LmdldCgnZHBpZCcsICdVTktOT1dOJyksIHZhbHVlX291dHB1dC5nZXQoJ2RwaWQnLCAnVU5LTk9XTicpKQotICAgICAgcmVzdWx0ICs9ICc8L3RkPicKLSAgICAgIHJlc3VsdCArPSAnICA8dGQ+JyArIHN0cih2YWx1ZV9vdXRwdXQuZ2V0KCd0dW5uZWxJUEFkZHInLCcnKSkgKyAnPC90ZD4nCi0gICAgICByZXN1bHQgKz0gJyAgPHRkPicgKyB2YWx1ZV9vdXRwdXQuZ2V0KCd0dW5uZWxJZicsJ1VOS05PV04nKSArICc8L3RkPicKLSAgICAgIHJlc3VsdCArPSAnICA8dGQ+JyArIHN0cih2YWx1ZV9vdXRwdXQuZ2V0KCd0dW5uZWxBY3RpdmUnLCcnKSkgKyAnPC90ZD4nCi0gICAgICByZXN1bHQgKz0gJyAgPHRkPicgKyB2YWx1ZV9vdXRwdXQuZ2V0KCd0dW5uZWxTdGF0ZScsJycpICsgJzwvdGQ+JwotICAgICAgcmVzdWx0ICs9ICc8L3RyPicKLSAgICByZXN1bHQgKz0gJzwvdGJvZHk+JwotICAgIHJlc3VsdCArPSAnPC90YWJsZT4nCi0gICAgcmV0dXJuIHJlc3VsdAotICAgIAotICAgICAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zY3JpcHRzL3N3aXRjaGFsaWFzLnB5IGIvY2xpL3NkbmNvbi91aS9zY3JpcHRzL3N3aXRjaGFsaWFzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3NjhjZjYwLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc2NyaXB0cy9zd2l0Y2hhbGlhcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLSMgUXVlcnkgUkVTVCBBUEksIHJldHVybiBkaWN0aW9uYXJ5IHdpdGggYWxpYXMgdG8gRFBJRCBtYXBwaW5ncy4gCi0jCi0KLSNJbXBvcnRpbmcgbW9kdWxlcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi1pbXBvcnQganNvbgotaW1wb3J0IHVybGxpYjIKLWZyb20gc2RuY29uLnJlc3Qudmlld3MgaW1wb3J0IGRvX2luc3RhbmNlCi0KLWRlZiBhbGlhc0RpY3QocmVxdWVzdCk6Ci0gIAotICAjIFF1ZXJ5IEpTT04gZnJvbSBBUEkgYW5kIGxvYWQgaW50byBkaWN0aW9uYXJ5Ci0gIHJhd2RpY3QgPSBqc29uLmxvYWRzKGRvX2luc3RhbmNlKHJlcXVlc3QsICdzd2l0Y2gtYWxpYXMnKS5jb250ZW50KQotCi0gICMgRGljdGlvbmFyaWVzCi0gIGFsaWFzZGljdCA9IHt9Ci0gCi0gICMgU3RlcCB0aHJvdWdoIG1hc3RlciAnYWxpYXMnIGxpc3QsIGV4dHJhY3QgZW50cnkgZm9yIGVhY2ggZGljdGlvbmFyeS4KLSAgZm9yIGluZGV4X3F1ZXJ5LHZhbHVlMV9xdWVyeSBpbiBlbnVtZXJhdGUocmF3ZGljdCk6Ci0KLSAgICAjIGdldCBuZWVkZWQgZW50cmllcyBpbiAnYWxpYXMnCi0gICAgYWxpYXNkaWN0W3ZhbHVlMV9xdWVyeS5nZXQoJ3N3aXRjaCcsJ0VSUicpXSA9IHZhbHVlMV9xdWVyeS5nZXQoJ2lkJywnICcpCi0KLSAgcmV0dXJuIGFsaWFzZGljdApkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RhYmxlLmNzcyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90YWJsZS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDRjZDlmNGQuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RhYmxlLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi0vKgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0KLWR5bmFtaWMgdGFibGUgQ1NTLCBlZGl0ZWQgZm9yIDIgdGFibGVzICovCi0KLS5keW5hbWljdGFibGUgewotCW1hcmdpbjowcHg7cGFkZGluZzowcHg7Ci0gICAgICAgIGJvcmRlci10b3A6IDBweDsKLQkvKmJvcmRlcjoxcHggc29saWQgI2U1ZTVlNTsqLwotCXdpZHRoOjEwMCU7Ci0gICAgICAgIGZsb2F0OiBsZWZ0OwotICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTsKLQkKLQktbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo1cHg7Ci0JLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjVweDsKLQlib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjVweDsKLQkKLQktbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NXB4OwotCS13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NXB4OwotCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjVweDsKLQkKLQkvKi1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo1cHg7Ci0JLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo1cHg7Ci0JYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NXB4OwotCQotCS1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjVweDsKLQktd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6NXB4OwotCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6NXB4OyovCi19LmR5bmFtaWN0YWJsZSB0YWJsZXsKLQl3aWR0aDoxMDAlOwotCW1hcmdpbjowcHg7cGFkZGluZzowcHg7Ci0JYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLQlib3JkZXItc3BhY2luZzogMHB4OwotfS5keW5hbWljdGFibGUgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkIHsKLQktbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NXB4OwotCS13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NXB4OwotCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjVweDsKLX0KLS5keW5hbWljdGFibGUgdGFibGUgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQgewotLyoJLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6NXB4OwotCS13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo1cHg7Ci0JYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo1cHg7Ki8KLX0KLS5keW5hbWljdGFibGUgdGFibGUgdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCB7Ci0vKgktbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NXB4OwotCS13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NXB4OwotCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjVweDsqLwotfS5keW5hbWljdGFibGUgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZHsKLQktbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo1cHg7Ci0JLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjVweDsKLQlib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjVweDsKLX0uZHluYW1pY3RhYmxlIHRyOmhvdmVyIHRkewotCQotfQotLmR5bmFtaWN0YWJsZSB0cjpudGgtY2hpbGQob2RkKXsgYmFja2dyb3VuZC1jb2xvcjojZTVlNWU1OyB9Ci0uZHluYW1pY3RhYmxlIHRyOm50aC1jaGlsZChldmVuKSAgICB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfS5keW5hbWljdGFibGUgdGR7Ci0JdmVydGljYWwtYWxpZ246bWlkZGxlOwotCQotCQotCWJvcmRlci13aWR0aDowcHggMXB4IDFweCAwcHg7Ci0JdGV4dC1hbGlnbjpjZW50ZXI7Ci0JcGFkZGluZzo3cHg7Ci0JZm9udC1zaXplOjEycHg7Ci0JZm9udC1mYW1pbHk6SGVsdmV0aWNhOwotCWZvbnQtd2VpZ2h0Om5vcm1hbDsKLQljb2xvcjojNGQ0ZDRmOwotfS5keW5hbWljdGFibGUgdHI6bGFzdC1jaGlsZCB0ZHsKLQlib3JkZXItd2lkdGg6MHB4IDFweCAwcHggMHB4OwotfS5keW5hbWljdGFibGUgdHIgdGQ6bGFzdC1jaGlsZHsKLQlib3JkZXItd2lkdGg6MHB4IDBweCAxcHggMHB4OwotfS5keW5hbWljdGFibGUgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkewotCWJvcmRlci13aWR0aDowcHggMHB4IDBweCAwcHg7Ci19Ci0uZHluYW1pY3RhYmxlIHRyOmZpcnN0LWNoaWxkIHRkewotCQliYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudChib3R0b20sICNmZGI4MTMgNSUsICNmZGI4MTMgMTAwJSk7CWJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudCggbGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMC4wNSwgI2ZkYjgxMyksIGNvbG9yLXN0b3AoMSwgI2ZkYjgxMykgKTsKLQliYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KCBjZW50ZXIgdG9wLCAjZmRiODEzIDUlLCAjZmRiODEzIDEwMCUgKTsKLQlmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiNmZGI4MTMiLCBlbmRDb2xvcnN0cj0iI2ZkYjgxMyIpOwliYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCNmZGI4MTMsZmRiODEzKTsKLQotCWJhY2tncm91bmQtY29sb3I6I2ZkYjgxMzsKLQkvKmJvcmRlcjowcHggc29saWQgI2U1ZTVlNTsqLwotCXRleHQtYWxpZ246Y2VudGVyOwotCWJvcmRlci13aWR0aDowcHggMHB4IDFweCAxcHg7Ci0JZm9udC1zaXplOjE0cHg7Ci0JZm9udC1mYW1pbHk6SGVsdmV0aWNhOwotCWZvbnQtd2VpZ2h0OmJvbGQ7Ci0JY29sb3I6I2ZmZmZmZjsKLX0KLS5keW5hbWljdGFibGUgdHI6Zmlyc3QtY2hpbGQ6aG92ZXIgdGR7Ci0JYmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQoYm90dG9tLCAjZmRiODEzIDUlLCAjZmRiODEzIDEwMCUpOwliYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQoIGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAuMDUsICNmZGI4MTMpLCBjb2xvci1zdG9wKDEsICNmZGI4MTMpICk7Ci0JYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCggY2VudGVyIHRvcCwgI2ZkYjgxMyA1JSwgI2ZkYjgxMyAxMDAlICk7Ci0JZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSIjZmRiODEzIiwgZW5kQ29sb3JzdHI9IiNmZGI4MTMiKTsJYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZmRiODEzLGZkYjgxMyk7Ci0KLQliYWNrZ3JvdW5kLWNvbG9yOiNmZGI4MTM7Ci19Ci0uZHluYW1pY3RhYmxlIHRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkewotCWJvcmRlci13aWR0aDowcHggMHB4IDFweCAwcHg7Ci19Ci0uZHluYW1pY3RhYmxlIHRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGR7Ci0JYm9yZGVyLXdpZHRoOjBweCAwcHggMXB4IDFweDsKLX0KLQotLyogYmVnaW4gZHluYW1pY3RhYmxlIDIgKi8KLQotLmR5bmFtaWN0YWJsZTIgewotCW1hcmdpbjowcHg7cGFkZGluZzowcHg7Ci0gICAgICAgIGJvcmRlci10b3A6IDBweDsKLQkvKmJvcmRlcjoxcHggc29saWQgI2U1ZTVlNTsqLwotCXdpZHRoOjEwMCU7Ci0gICAgICAgIGZsb2F0OiBsZWZ0OwotICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTsKLQkKLQktbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo1cHg7Ci0JLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjVweDsKLQlib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjVweDsKLQkKLQktbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NXB4OwotCS13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NXB4OwotCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjVweDsKLQkKLQktbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NXB4OwotCS13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NXB4OwotCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjVweDsKLQkKLQktbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo1cHg7Ci0JLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjVweDsKLQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOjVweDsKLX0uZHluYW1pY3RhYmxlMiB0YWJsZXsKLQl3aWR0aDoxMDAlOwotCW1hcmdpbjowcHg7cGFkZGluZzowcHg7Ci0JYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLQlib3JkZXItc3BhY2luZzogMHB4OwotfS5keW5hbWljdGFibGUyIHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCB7Ci0JLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjVweDsKLQktd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjVweDsKLQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo1cHg7Ci19Ci0uZHluYW1pY3RhYmxlMiB0YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCB7Ci0JLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6NXB4OwotCS13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo1cHg7Ci0JYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo1cHg7Ci19Ci0uZHluYW1pY3RhYmxlMiB0YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkIHsKLQktbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NXB4OwotCS13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NXB4OwotCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjVweDsKLX0uZHluYW1pY3RhYmxlMiB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkewotCS1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjVweDsKLQktd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NXB4OwotCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NXB4OwotfS5keW5hbWljdGFibGUyIHRyOmhvdmVyIHRkewotCQotfQotLmR5bmFtaWN0YWJsZTIgdHI6bnRoLWNoaWxkKG9kZCl7IGJhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTsgfQotLmR5bmFtaWN0YWJsZTIgdHI6bnRoLWNoaWxkKGV2ZW4pICAgIHsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9LmR5bmFtaWN0YWJsZTIgdGR7Ci0JdmVydGljYWwtYWxpZ246bWlkZGxlOwotCQotCQotCWJvcmRlci13aWR0aDowcHggMXB4IDFweCAwcHg7Ci0JdGV4dC1hbGlnbjpjZW50ZXI7Ci0JcGFkZGluZzo3cHg7Ci0JZm9udC1zaXplOjEycHg7Ci0JZm9udC1mYW1pbHk6SGVsdmV0aWNhOwotCWZvbnQtd2VpZ2h0Om5vcm1hbDsKLQljb2xvcjojNGQ0ZDRmOwotfS5keW5hbWljdGFibGUyIHRyOmxhc3QtY2hpbGQgdGR7Ci0JYm9yZGVyLXdpZHRoOjBweCAxcHggMHB4IDBweDsKLX0uZHluYW1pY3RhYmxlMiB0ciB0ZDpsYXN0LWNoaWxkewotCWJvcmRlci13aWR0aDowcHggMHB4IDFweCAwcHg7Ci19LmR5bmFtaWN0YWJsZTIgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkewotCWJvcmRlci13aWR0aDowcHggMHB4IDBweCAwcHg7Ci19Ci0uZHluYW1pY3RhYmxlMiB0cjpmaXJzdC1jaGlsZCB0ZHsKLQkJYmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQoYm90dG9tLCAjZmRiODEzIDUlLCAjZmRiODEzIDEwMCUpOwliYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQoIGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAuMDUsICNmZGI4MTMpLCBjb2xvci1zdG9wKDEsICNmZGI4MTMpICk7Ci0JYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCggY2VudGVyIHRvcCwgI2ZkYjgxMyA1JSwgI2ZkYjgxMyAxMDAlICk7Ci0JZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSIjZmRiODEzIiwgZW5kQ29sb3JzdHI9IiNmZGI4MTMiKTsJYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZmRiODEzLGZkYjgxMyk7Ci0KLQliYWNrZ3JvdW5kLWNvbG9yOiNmZGI4MTM7Ci0JLypib3JkZXI6MHB4IHNvbGlkICNlNWU1ZTU7Ki8KLQl0ZXh0LWFsaWduOmNlbnRlcjsKLQlib3JkZXItd2lkdGg6MHB4IDBweCAxcHggMXB4OwotCWZvbnQtc2l6ZToxNHB4OwotCWZvbnQtZmFtaWx5OkhlbHZldGljYTsKLQlmb250LXdlaWdodDpib2xkOwotCWNvbG9yOiNmZmZmZmY7Ci19Ci0uZHluYW1pY3RhYmxlMiB0cjpmaXJzdC1jaGlsZDpob3ZlciB0ZHsKLQliYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudChib3R0b20sICNmZGI4MTMgNSUsICNmZGI4MTMgMTAwJSk7CWJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudCggbGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMC4wNSwgI2ZkYjgxMyksIGNvbG9yLXN0b3AoMSwgI2ZkYjgxMykgKTsKLQliYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KCBjZW50ZXIgdG9wLCAjZmRiODEzIDUlLCAjZmRiODEzIDEwMCUgKTsKLQlmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiNmZGI4MTMiLCBlbmRDb2xvcnN0cj0iI2ZkYjgxMyIpOwliYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCNmZGI4MTMsZmRiODEzKTsKLQotCWJhY2tncm91bmQtY29sb3I6I2ZkYjgxMzsKLX0KLS5keW5hbWljdGFibGUyIHRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkewotCWJvcmRlci13aWR0aDowcHggMHB4IDFweCAwcHg7Ci19Ci0uZHluYW1pY3RhYmxlMiB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkewotCWJvcmRlci13aWR0aDowcHggMHB4IDFweCAxcHg7Ci19Ci0KZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy9hbmltYXRlZC1vdmVybGF5LmdpZiBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy9hbmltYXRlZC1vdmVybGF5LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDQ0MWY3NS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvYW5pbWF0ZWQtb3ZlcmxheS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZmxhdF8xMDBfRkZGRkZGXzQweDEwMC5wbmcgYi9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZmxhdF8xMDBfRkZGRkZGXzQweDEwMC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGE5ODZjYzkuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWJnX2ZsYXRfMTAwX0ZGRkZGRl80MHgxMDAucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWJnX2ZsYXRfNDVfZTVlNWU1XzQweDEwMC5wbmcgYi9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZmxhdF80NV9lNWU1ZTVfNDB4MTAwLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDE2NGFjNS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZmxhdF80NV9lNWU1ZTVfNDB4MTAwLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1iZ19mbGF0XzUwXzAwYTBkZl80MHgxMDAucG5nIGIvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWJnX2ZsYXRfNTBfMDBhMGRmXzQweDEwMC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGMzYjJjNWUuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWJnX2ZsYXRfNTBfMDBhMGRmXzQweDEwMC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZmxhdF81MF9mZGI4MTNfNDB4MTAwLnBuZyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1iZ19mbGF0XzUwX2ZkYjgxM180MHgxMDAucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhOTM1OGU0Li4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1iZ19mbGF0XzUwX2ZkYjgxM180MHgxMDAucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWJnX2ZsYXRfNTVfOTk5OTk5XzQweDEwMC5wbmcgYi9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZmxhdF81NV85OTk5OTlfNDB4MTAwLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODE0OWFhMi4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZmxhdF81NV85OTk5OTlfNDB4MTAwLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1iZ19mbGF0Xzc1X2FhYWFhYV80MHgxMDAucG5nIGIvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWJnX2ZsYXRfNzVfYWFhYWFhXzQweDEwMC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGY2M2FkY2EuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWJnX2ZsYXRfNzVfYWFhYWFhXzQweDEwMC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZmxhdF83NV9lNWU1ZTVfNDB4MTAwLnBuZyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1iZ19mbGF0Xzc1X2U1ZTVlNV80MHgxMDAucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhZTQxMWJlLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1iZ19mbGF0Xzc1X2U1ZTVlNV80MHgxMDAucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWJnX2dsYXNzXzU1X2Y4ZGE0ZV8xeDQwMC5wbmcgYi9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZ2xhc3NfNTVfZjhkYTRlXzF4NDAwLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGJmODBhZS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZ2xhc3NfNTVfZjhkYTRlXzF4NDAwLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1iZ19nbG9zcy13YXZlXzQ1X2UxNGYxY181MDB4MTAwLnBuZyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1iZ19nbG9zcy13YXZlXzQ1X2UxNGYxY181MDB4MTAwLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZGM5ZjhhZi4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktYmdfZ2xvc3Mtd2F2ZV80NV9lMTRmMWNfNTAweDEwMC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktaWNvbnNfNGQ0ZDRmXzI1NngyNDAucG5nIGIvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWljb25zXzRkNGQ0Zl8yNTZ4MjQwLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODY2MmQ1Mi4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktaWNvbnNfNGQ0ZDRmXzI1NngyNDAucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWljb25zX2Y0N2QyMF8yNTZ4MjQwLnBuZyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1pY29uc19mNDdkMjBfMjU2eDI0MC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGU0ODY0N2MuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWljb25zX2Y0N2QyMF8yNTZ4MjQwLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1pY29uc19mN2E1MGRfMjU2eDI0MC5wbmcgYi9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktaWNvbnNfZjdhNTBkXzI1NngyNDAucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlMDg0ODAyLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2ltYWdlcy91aS1pY29uc19mN2E1MGRfMjU2eDI0MC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktaWNvbnNfZmNkMTEzXzI1NngyNDAucG5nIGIvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvaW1hZ2VzL3VpLWljb25zX2ZjZDExM18yNTZ4MjQwLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZGQ1MTk1MS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9jc3MvdGhpcmRwYXJ0eS9pbWFnZXMvdWktaWNvbnNfZmNkMTEzXzI1NngyNDAucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvanF1ZXJ5LXVpLTEuMTAuMi5jdXN0b20uY3NzIGIvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvanF1ZXJ5LXVpLTEuMTAuMi5jdXN0b20uY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiYzA3ZjFkLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2pxdWVyeS11aS0xLjEwLjIuY3VzdG9tLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDUyMyArMCwwIEBACi0vKiEgalF1ZXJ5IFVJIC0gdjEuMTAuMiAtIDIwMTMtMDQtMDUKLSogaHR0cDovL2pxdWVyeXVpLmNvbQotKiBJbmNsdWRlczoganF1ZXJ5LnVpLmNvcmUuY3NzLCBqcXVlcnkudWkudGFicy5jc3MKLSogVG8gdmlldyBhbmQgbW9kaWZ5IHRoaXMgdGhlbWUsIHZpc2l0IGh0dHA6Ly9qcXVlcnl1aS5jb20vdGhlbWVyb2xsZXIvP2ZmRGVmYXVsdD1IZWx2ZXRpY2ElMkNBcmlhbCUyQ3NhbnMtc2VyaWYlM0ImZndEZWZhdWx0PW5vcm1hbCZmc0RlZmF1bHQ9MTQmY29ybmVyUmFkaXVzPTVweCZiZ0NvbG9ySGVhZGVyPSUyM2U1ZTVlNSZiZ1RleHR1cmVIZWFkZXI9ZmxhdCZiZ0ltZ09wYWNpdHlIZWFkZXI9NzUmYm9yZGVyQ29sb3JIZWFkZXI9JTIzZTVlNWU1JmZjSGVhZGVyPSUyMzRkNGQ0ZiZpY29uQ29sb3JIZWFkZXI9JTIzNGQ0ZDRmJmJnQ29sb3JDb250ZW50PSUyM0ZGRkZGRiZiZ1RleHR1cmVDb250ZW50PWZsYXQmYmdJbWdPcGFjaXR5Q29udGVudD0xMDAmYm9yZGVyQ29sb3JDb250ZW50PSUyM2U1ZTVlNSZmY0NvbnRlbnQ9JTIzNGQ0ZDRmJmljb25Db2xvckNvbnRlbnQ9JTIzZjQ3ZDIwJmJnQ29sb3JEZWZhdWx0PSUyM2U1ZTVlNSZiZ1RleHR1cmVEZWZhdWx0PWZsYXQmYmdJbWdPcGFjaXR5RGVmYXVsdD00NSZib3JkZXJDb2xvckRlZmF1bHQ9JTIzZTVlNWU1JmZjRGVmYXVsdD0lMjM0ZDRkNGQmaWNvbkNvbG9yRGVmYXVsdD0lMjM0ZDRkNGYmYmdDb2xvckhvdmVyPSUyM2U1ZTVlNSZiZ1RleHR1cmVIb3Zlcj1mbGF0JmJnSW1nT3BhY2l0eUhvdmVyPTc1JmJvcmRlckNvbG9ySG92ZXI9JTIzNGQ0ZDRmJmZjSG92ZXI9JTIzZmRiODEzJmljb25Db2xvckhvdmVyPSUyM2Y0N2QyMCZiZ0NvbG9yQWN0aXZlPSUyM2ZkYjgxMyZiZ1RleHR1cmVBY3RpdmU9ZmxhdCZiZ0ltZ09wYWNpdHlBY3RpdmU9NTAmYm9yZGVyQ29sb3JBY3RpdmU9JTIzZTVlNWU1JmZjQWN0aXZlPSUyM2ZmZmZmZiZpY29uQ29sb3JBY3RpdmU9JTIzZjQ3ZDIwJmJnQ29sb3JIaWdobGlnaHQ9JTIzZjhkYTRlJmJnVGV4dHVyZUhpZ2hsaWdodD1nbGFzcyZiZ0ltZ09wYWNpdHlIaWdobGlnaHQ9NTUmYm9yZGVyQ29sb3JIaWdobGlnaHQ9JTIzZmNkMTEzJmZjSGlnaGxpZ2h0PSUyMzkxNTYwOCZpY29uQ29sb3JIaWdobGlnaHQ9JTIzZjdhNTBkJmJnQ29sb3JFcnJvcj0lMjNlMTRmMWMmYmdUZXh0dXJlRXJyb3I9Z2xvc3Nfd2F2ZSZiZ0ltZ09wYWNpdHlFcnJvcj00NSZib3JkZXJDb2xvckVycm9yPSUyM2NkMGEwYSZmY0Vycm9yPSUyM2ZmZmZmZiZpY29uQ29sb3JFcnJvcj0lMjNmY2QxMTMmYmdDb2xvck92ZXJsYXk9JTIzYWFhYWFhJmJnVGV4dHVyZU92ZXJsYXk9ZmxhdCZiZ0ltZ09wYWNpdHlPdmVybGF5PTc1Jm9wYWNpdHlPdmVybGF5PTMwJmJnQ29sb3JTaGFkb3c9JTIzOTk5OTk5JmJnVGV4dHVyZVNoYWRvdz1mbGF0JmJnSW1nT3BhY2l0eVNoYWRvdz01NSZvcGFjaXR5U2hhZG93PTQ1JnRoaWNrbmVzc1NoYWRvdz0wcHgmb2Zmc2V0VG9wU2hhZG93PTVweCZvZmZzZXRMZWZ0U2hhZG93PTVweCZjb3JuZXJSYWRpdXNTaGFkb3c9NXB4JnRyJTI2ZmZEZWZhdWx0PUhlbHZldGljYSUyQ0FyaWFsJTJDc2Fucy1zZXJpZgotKiBDb3B5cmlnaHQgMjAxMyBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIExpY2Vuc2VkIE1JVCAqLwotCi0vKiBMYXlvdXQgaGVscGVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0udWktaGVscGVyLWhpZGRlbiB7Ci0JZGlzcGxheTogbm9uZTsKLX0KLS51aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUgewotCWJvcmRlcjogMDsKLQljbGlwOiByZWN0KDAgMCAwIDApOwotCWhlaWdodDogMXB4OwotCW1hcmdpbjogLTFweDsKLQlvdmVyZmxvdzogaGlkZGVuOwotCXBhZGRpbmc6IDA7Ci0JcG9zaXRpb246IGFic29sdXRlOwotCXdpZHRoOiAxcHg7Ci19Ci0udWktaGVscGVyLXJlc2V0IHsKLQltYXJnaW46IDA7Ci0JcGFkZGluZzogMDsKLQlib3JkZXI6IDA7Ci0Jb3V0bGluZTogMDsKLQlsaW5lLWhlaWdodDogMS4zOwotCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKLQlmb250LXNpemU6IDEwMCU7Ci0JbGlzdC1zdHlsZTogbm9uZTsKLX0KLS51aS1oZWxwZXItY2xlYXJmaXg6YmVmb3JlLAotLnVpLWhlbHBlci1jbGVhcmZpeDphZnRlciB7Ci0JY29udGVudDogIiI7Ci0JZGlzcGxheTogdGFibGU7Ci0JYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLX0KLS51aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXIgewotCWNsZWFyOiBib3RoOwotfQotLnVpLWhlbHBlci1jbGVhcmZpeCB7Ci0JbWluLWhlaWdodDogMDsgLyogc3VwcG9ydDogSUU3ICovCi19Ci0udWktaGVscGVyLXpmaXggewotCXdpZHRoOiAxMDAlOwotCWhlaWdodDogMTAwJTsKLQl0b3A6IDA7Ci0JbGVmdDogMDsKLQlwb3NpdGlvbjogYWJzb2x1dGU7Ci0Jb3BhY2l0eTogMDsKLQlmaWx0ZXI6QWxwaGEoT3BhY2l0eT0wKTsKLX0KLQotLnVpLWZyb250IHsKLQl6LWluZGV4OiAxMDA7Ci19Ci0KLQotLyogSW50ZXJhY3Rpb24gQ3VlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0udWktc3RhdGUtZGlzYWJsZWQgewotCWN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50OwotfQotCi0KLS8qIEljb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotLyogc3RhdGVzIGFuZCBpbWFnZXMgKi8KLS51aS1pY29uIHsKLQlkaXNwbGF5OiBibG9jazsKLQl0ZXh0LWluZGVudDogLTk5OTk5cHg7Ci0Jb3ZlcmZsb3c6IGhpZGRlbjsKLQliYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwotfQotCi0KLS8qIE1pc2MgdmlzdWFscwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIE92ZXJsYXlzICovCi0udWktd2lkZ2V0LW92ZXJsYXkgewotCXBvc2l0aW9uOiBmaXhlZDsKLQl0b3A6IDA7Ci0JbGVmdDogMDsKLQl3aWR0aDogMTAwJTsKLQloZWlnaHQ6IDEwMCU7Ci19Ci0udWktdGFicyB7Ci0JcG9zaXRpb246IHJlbGF0aXZlOy8qIHBvc2l0aW9uOiByZWxhdGl2ZSBwcmV2ZW50cyBJRSBzY3JvbGwgYnVnIChlbGVtZW50IHdpdGggcG9zaXRpb246IHJlbGF0aXZlIGluc2lkZSBjb250YWluZXIgd2l0aCBvdmVyZmxvdzogYXV0byBhcHBlYXIgYXMgImZpeGVkIikgKi8KLQlwYWRkaW5nOiAuMmVtOwotfQotLnVpLXRhYnMgLnVpLXRhYnMtbmF2IHsKLQltYXJnaW46IDA7Ci0JcGFkZGluZzogLjJlbSAuMmVtIDA7Ci19Ci0udWktdGFicyAudWktdGFicy1uYXYgbGkgewotCWxpc3Qtc3R5bGU6IG5vbmU7Ci0JZmxvYXQ6IGxlZnQ7Ci0JcG9zaXRpb246IHJlbGF0aXZlOwotCXRvcDogMDsKLQltYXJnaW46IDFweCAuMmVtIDAgMDsKLQlib3JkZXItYm90dG9tLXdpZHRoOiAwOwotCXBhZGRpbmc6IDA7Ci0Jd2hpdGUtc3BhY2U6IG5vd3JhcDsKLX0KLS51aS10YWJzIC51aS10YWJzLW5hdiBsaSBhIHsKLQlmbG9hdDogbGVmdDsKLQlwYWRkaW5nOiAuNWVtIDFlbTsKLQl0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci19Ci0udWktdGFicyAudWktdGFicy1uYXYgbGkudWktdGFicy1hY3RpdmUgewotCW1hcmdpbi1ib3R0b206IC0xcHg7Ci0JcGFkZGluZy1ib3R0b206IDFweDsKLX0KLS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZSBhLAotLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXN0YXRlLWRpc2FibGVkIGEsCi0udWktdGFicyAudWktdGFicy1uYXYgbGkudWktdGFicy1sb2FkaW5nIGEgewotCWN1cnNvcjogdGV4dDsKLX0KLS51aS10YWJzIC51aS10YWJzLW5hdiBsaSBhLCAvKiBmaXJzdCBzZWxlY3RvciBpbiBncm91cCBzZWVtcyBvYnNvbGV0ZSwgYnV0IHJlcXVpcmVkIHRvIG92ZXJjb21lIGJ1ZyBpbiBPcGVyYSBhcHBseWluZyBjdXJzb3I6IHRleHQgb3ZlcmFsbCBpZiBkZWZpbmVkIGVsc2V3aGVyZS4uLiAqLwotLnVpLXRhYnMtY29sbGFwc2libGUgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtYWN0aXZlIGEgewotCWN1cnNvcjogcG9pbnRlcjsKLX0KLS51aS10YWJzIC51aS10YWJzLXBhbmVsIHsKLQlkaXNwbGF5OiBibG9jazsKLQlib3JkZXItd2lkdGg6IDA7Ci0JLypwYWRkaW5nOiAxZW0gMS40ZW07Ki8KLQliYWNrZ3JvdW5kOiBub25lOwotfQotCi0vKiBDb21wb25lbnQgY29udGFpbmVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0udWktd2lkZ2V0IHsKLQlmb250LWZhbWlseTogSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7OwotCWZvbnQtc2l6ZTogMTQ7Ci19Ci0udWktd2lkZ2V0IC51aS13aWRnZXQgewotCWZvbnQtc2l6ZTogMWVtOwotfQotLnVpLXdpZGdldCBpbnB1dCwKLS51aS13aWRnZXQgc2VsZWN0LAotLnVpLXdpZGdldCB0ZXh0YXJlYSwKLS51aS13aWRnZXQgYnV0dG9uIHsKLQlmb250LWZhbWlseTogSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7OwotCWZvbnQtc2l6ZTogMWVtOwotfQotLnVpLXdpZGdldC1jb250ZW50IHsKLQkvKmJvcmRlcjogMXB4IHNvbGlkICNlNWU1ZTU7Ki8KLQliYWNrZ3JvdW5kOiAjRkZGRkZGIHVybChpbWFnZXMvdWktYmdfZmxhdF8xMDBfRkZGRkZGXzQweDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7Ci0JY29sb3I6ICM0ZDRkNGY7Ci19Ci0udWktd2lkZ2V0LWNvbnRlbnQgYSB7Ci0JY29sb3I6ICM0ZDRkNGY7Ci19Ci0udWktd2lkZ2V0LWhlYWRlciB7Ci0JYm9yZGVyOiAxcHggc29saWQgI2U1ZTVlNTsKLQliYWNrZ3JvdW5kOiAjZTVlNWU1IHVybChpbWFnZXMvdWktYmdfZmxhdF83NV9lNWU1ZTVfNDB4MTAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsKLQljb2xvcjogIzRkNGQ0ZjsKLQlmb250LXdlaWdodDogYm9sZDsKLX0KLS51aS13aWRnZXQtaGVhZGVyIGEgewotCWNvbG9yOiAjNGQ0ZDRmOwotfQotCi0vKiBJbnRlcmFjdGlvbiBzdGF0ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLnVpLXN0YXRlLWRlZmF1bHQsCi0udWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsCi0udWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGVmYXVsdCB7Ci0JYm9yZGVyOiAxcHggc29saWQgI2U1ZTVlNTsKLQliYWNrZ3JvdW5kOiAjZTVlNWU1IHVybChpbWFnZXMvdWktYmdfZmxhdF80NV9lNWU1ZTVfNDB4MTAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsKLQlmb250LXdlaWdodDogbm9ybWFsOwotCWNvbG9yOiAjNGQ0ZDRkOwotfQotLnVpLXN0YXRlLWRlZmF1bHQgYSwKLS51aS1zdGF0ZS1kZWZhdWx0IGE6bGluaywKLS51aS1zdGF0ZS1kZWZhdWx0IGE6dmlzaXRlZCB7Ci0JY29sb3I6ICM0ZDRkNGQ7Ci0JdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotLnVpLXN0YXRlLWhvdmVyLAotLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1ob3ZlciwKLS51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1ob3ZlciwKLS51aS1zdGF0ZS1mb2N1cywKLS51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZm9jdXMsCi0udWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZm9jdXMgewotCWJvcmRlcjogMXB4IHNvbGlkICM0ZDRkNGY7Ci0JYmFja2dyb3VuZDogI2U1ZTVlNSB1cmwoaW1hZ2VzL3VpLWJnX2ZsYXRfNzVfZTVlNWU1XzQweDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7Ci0JZm9udC13ZWlnaHQ6IG5vcm1hbDsKLQljb2xvcjogI2ZkYjgxMzsKLX0KLS51aS1zdGF0ZS1ob3ZlciBhLAotLnVpLXN0YXRlLWhvdmVyIGE6aG92ZXIsCi0udWktc3RhdGUtaG92ZXIgYTpsaW5rLAotLnVpLXN0YXRlLWhvdmVyIGE6dmlzaXRlZCB7Ci0JY29sb3I6ICNmZGI4MTM7Ci0JdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotLnVpLXN0YXRlLWFjdGl2ZSwKLS51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtYWN0aXZlLAotLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWFjdGl2ZSB7Ci0JYm9yZGVyOiAxcHggc29saWQgI2U1ZTVlNTsKLQliYWNrZ3JvdW5kOiAjZmRiODEzIHVybChpbWFnZXMvdWktYmdfZmxhdF81MF9mZGI4MTNfNDB4MTAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsKLQlmb250LXdlaWdodDogbm9ybWFsOwotCWNvbG9yOiAjZmZmZmZmOwotfQotLnVpLXN0YXRlLWFjdGl2ZSBhLAotLnVpLXN0YXRlLWFjdGl2ZSBhOmxpbmssCi0udWktc3RhdGUtYWN0aXZlIGE6dmlzaXRlZCB7Ci0JY29sb3I6ICNmZmZmZmY7Ci0JdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi0vKiBJbnRlcmFjdGlvbiBDdWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS51aS1zdGF0ZS1oaWdobGlnaHQsCi0udWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCwKLS51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHQgewotCWJvcmRlcjogMXB4IHNvbGlkICNmY2QxMTM7Ci0JYmFja2dyb3VuZDogI2Y4ZGE0ZSB1cmwoaW1hZ2VzL3VpLWJnX2dsYXNzXzU1X2Y4ZGE0ZV8xeDQwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7Ci0JY29sb3I6ICM5MTU2MDg7Ci19Ci0udWktc3RhdGUtaGlnaGxpZ2h0IGEsCi0udWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCBhLAotLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhpZ2hsaWdodCBhIHsKLQljb2xvcjogIzkxNTYwODsKLX0KLS51aS1zdGF0ZS1lcnJvciwKLS51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3IsCi0udWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3IgewotCWJvcmRlcjogMXB4IHNvbGlkICNjZDBhMGE7Ci0JYmFja2dyb3VuZDogI2UxNGYxYyB1cmwoaW1hZ2VzL3VpLWJnX2dsb3NzLXdhdmVfNDVfZTE0ZjFjXzUwMHgxMDAucG5nKSA1MCUgdG9wIHJlcGVhdC14OwotCWNvbG9yOiAjZmZmZmZmOwotfQotLnVpLXN0YXRlLWVycm9yIGEsCi0udWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yIGEsCi0udWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3IgYSB7Ci0JY29sb3I6ICNmZmZmZmY7Ci19Ci0udWktc3RhdGUtZXJyb3ItdGV4dCwKLS51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3ItdGV4dCwKLS51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvci10ZXh0IHsKLQljb2xvcjogI2ZmZmZmZjsKLX0KLS51aS1wcmlvcml0eS1wcmltYXJ5LAotLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1wcmltYXJ5LAotLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXByaW1hcnkgewotCWZvbnQtd2VpZ2h0OiBib2xkOwotfQotLnVpLXByaW9yaXR5LXNlY29uZGFyeSwKLS51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktc2Vjb25kYXJ5LAotLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXNlY29uZGFyeSB7Ci0Jb3BhY2l0eTogLjc7Ci0JZmlsdGVyOkFscGhhKE9wYWNpdHk9NzApOwotCWZvbnQtd2VpZ2h0OiBub3JtYWw7Ci19Ci0udWktc3RhdGUtZGlzYWJsZWQsCi0udWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRpc2FibGVkLAotLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRpc2FibGVkIHsKLQlvcGFjaXR5OiAuMzU7Ci0JZmlsdGVyOkFscGhhKE9wYWNpdHk9MzUpOwotCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Ci19Ci0udWktc3RhdGUtZGlzYWJsZWQgLnVpLWljb24gewotCWZpbHRlcjpBbHBoYShPcGFjaXR5PTM1KTsgLyogRm9yIElFOCAtIFNlZSAjNjA1OSAqLwotfQotCi0vKiBJY29ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIHN0YXRlcyBhbmQgaW1hZ2VzICovCi0udWktaWNvbiB7Ci0Jd2lkdGg6IDE2cHg7Ci0JaGVpZ2h0OiAxNnB4OwotfQotLnVpLWljb24sCi0udWktd2lkZ2V0LWNvbnRlbnQgLnVpLWljb24gewotCWJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdWktaWNvbnNfZjQ3ZDIwXzI1NngyNDAucG5nKTsKLX0KLS51aS13aWRnZXQtaGVhZGVyIC51aS1pY29uIHsKLQliYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zXzRkNGQ0Zl8yNTZ4MjQwLnBuZyk7Ci19Ci0udWktc3RhdGUtZGVmYXVsdCAudWktaWNvbiB7Ci0JYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc180ZDRkNGZfMjU2eDI0MC5wbmcpOwotfQotLnVpLXN0YXRlLWhvdmVyIC51aS1pY29uLAotLnVpLXN0YXRlLWZvY3VzIC51aS1pY29uIHsKLQliYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zX2Y0N2QyMF8yNTZ4MjQwLnBuZyk7Ci19Ci0udWktc3RhdGUtYWN0aXZlIC51aS1pY29uIHsKLQliYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zX2Y0N2QyMF8yNTZ4MjQwLnBuZyk7Ci19Ci0udWktc3RhdGUtaGlnaGxpZ2h0IC51aS1pY29uIHsKLQliYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zX2Y3YTUwZF8yNTZ4MjQwLnBuZyk7Ci19Ci0udWktc3RhdGUtZXJyb3IgLnVpLWljb24sCi0udWktc3RhdGUtZXJyb3ItdGV4dCAudWktaWNvbiB7Ci0JYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc19mY2QxMTNfMjU2eDI0MC5wbmcpOwotfQotCi0vKiBwb3NpdGlvbmluZyAqLwotLnVpLWljb24tYmxhbmsgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxNnB4IDE2cHg7IH0KLS51aS1pY29uLWNhcmF0LTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsgfQotLnVpLWljb24tY2FyYXQtMS1uZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IDA7IH0KLS51aS1pY29uLWNhcmF0LTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IDA7IH0KLS51aS1pY29uLWNhcmF0LTEtc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAwOyB9Ci0udWktaWNvbi1jYXJhdC0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAwOyB9Ci0udWktaWNvbi1jYXJhdC0xLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggMDsgfQotLnVpLWljb24tY2FyYXQtMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggMDsgfQotLnVpLWljb24tY2FyYXQtMS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAwOyB9Ci0udWktaWNvbi1jYXJhdC0yLW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAwOyB9Ci0udWktaWNvbi1jYXJhdC0yLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAwOyB9Ci0udWktaWNvbi10cmlhbmdsZS0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNnB4OyB9Ci0udWktaWNvbi10cmlhbmdsZS0xLW5lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE2cHg7IH0KLS51aS1pY29uLXRyaWFuZ2xlLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNnB4OyB9Ci0udWktaWNvbi10cmlhbmdsZS0xLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE2cHg7IH0KLS51aS1pY29uLXRyaWFuZ2xlLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNnB4OyB9Ci0udWktaWNvbi10cmlhbmdsZS0xLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE2cHg7IH0KLS51aS1pY29uLXRyaWFuZ2xlLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNnB4OyB9Ci0udWktaWNvbi10cmlhbmdsZS0xLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xNnB4OyB9Ci0udWktaWNvbi10cmlhbmdsZS0yLW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTZweDsgfQotLnVpLWljb24tdHJpYW5nbGUtMi1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE2cHg7IH0KLS51aS1pY29uLWFycm93LTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTMycHg7IH0KLS51aS1pY29uLWFycm93LTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMzJweDsgfQotLnVpLWljb24tYXJyb3ctMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTMycHg7IH0KLS51aS1pY29uLWFycm93LTEtc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMzJweDsgfQotLnVpLWljb24tYXJyb3ctMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTMycHg7IH0KLS51aS1pY29uLWFycm93LTEtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMzJweDsgfQotLnVpLWljb24tYXJyb3ctMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTMycHg7IH0KLS51aS1pY29uLWFycm93LTEtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTMycHg7IH0KLS51aS1pY29uLWFycm93LTItbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0zMnB4OyB9Ci0udWktaWNvbi1hcnJvdy0yLW5lLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0zMnB4OyB9Ci0udWktaWNvbi1hcnJvdy0yLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMzJweDsgfQotLnVpLWljb24tYXJyb3ctMi1zZS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMzJweDsgfQotLnVpLWljb24tYXJyb3dzdG9wLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMzJweDsgfQotLnVpLWljb24tYXJyb3dzdG9wLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMzJweDsgfQotLnVpLWljb24tYXJyb3dzdG9wLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMzJweDsgfQotLnVpLWljb24tYXJyb3dzdG9wLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtMzJweDsgfQotLnVpLWljb24tYXJyb3d0aGljay0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC00OHB4OyB9Ci0udWktaWNvbi1hcnJvd3RoaWNrLTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtNDhweDsgfQotLnVpLWljb24tYXJyb3d0aGljay0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtNDhweDsgfQotLnVpLWljb24tYXJyb3d0aGljay0xLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93dGhpY2stMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93dGhpY2stMS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC00OHB4OyB9Ci0udWktaWNvbi1hcnJvd3RoaWNrLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC00OHB4OyB9Ci0udWktaWNvbi1hcnJvd3RoaWNrLTEtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93dGhpY2stMi1uLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93dGhpY2stMi1uZS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtNDhweDsgfQotLnVpLWljb24tYXJyb3d0aGljay0yLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtNDhweDsgfQotLnVpLWljb24tYXJyb3d0aGljay0yLXNlLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC00OHB4OyB9Ci0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtNDhweDsgfQotLnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC00OHB4OyB9Ci0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjQwcHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjRweDsgfQotLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtNjRweDsgfQotLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtNjRweDsgfQotLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtNjRweDsgfQotLnVpLWljb24tYXJyb3dyZXR1cm4tMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTY0cHg7IH0KLS51aS1pY29uLWFycm93cmV0dXJuLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC02NHB4OyB9Ci0udWktaWNvbi1hcnJvd3JldHVybi0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtNjRweDsgfQotLnVpLWljb24tYXJyb3dyZXR1cm4tMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC02NHB4OyB9Ci0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC02NHB4OyB9Ci0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC02NHB4OyB9Ci0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC02NHB4OyB9Ci0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC02NHB4OyB9Ci0udWktaWNvbi1hcnJvdy00IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtODBweDsgfQotLnVpLWljb24tYXJyb3ctNC1kaWFnIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTgwcHg7IH0KLS51aS1pY29uLWV4dGxpbmsgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtODBweDsgfQotLnVpLWljb24tbmV3d2luIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTgwcHg7IH0KLS51aS1pY29uLXJlZnJlc2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtODBweDsgfQotLnVpLWljb24tc2h1ZmZsZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC04MHB4OyB9Ci0udWktaWNvbi10cmFuc2Zlci1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtODBweDsgfQotLnVpLWljb24tdHJhbnNmZXJ0aGljay1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTgwcHg7IH0KLS51aS1pY29uLWZvbGRlci1jb2xsYXBzZWQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC05NnB4OyB9Ci0udWktaWNvbi1mb2xkZXItb3BlbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC05NnB4OyB9Ci0udWktaWNvbi1kb2N1bWVudCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC05NnB4OyB9Ci0udWktaWNvbi1kb2N1bWVudC1iIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTk2cHg7IH0KLS51aS1pY29uLW5vdGUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtOTZweDsgfQotLnVpLWljb24tbWFpbC1jbG9zZWQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtOTZweDsgfQotLnVpLWljb24tbWFpbC1vcGVuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTk2cHg7IH0KLS51aS1pY29uLXN1aXRjYXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC05NnB4OyB9Ci0udWktaWNvbi1jb21tZW50IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC05NnB4OyB9Ci0udWktaWNvbi1wZXJzb24geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTk2cHg7IH0KLS51aS1pY29uLXByaW50IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC05NnB4OyB9Ci0udWktaWNvbi10cmFzaCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtOTZweDsgfQotLnVpLWljb24tbG9ja2VkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC05NnB4OyB9Ci0udWktaWNvbi11bmxvY2tlZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtOTZweDsgfQotLnVpLWljb24tYm9va21hcmsgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTk2cHg7IH0KLS51aS1pY29uLXRhZyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtOTZweDsgfQotLnVpLWljb24taG9tZSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTExMnB4OyB9Ci0udWktaWNvbi1mbGFnIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTExMnB4OyB9Ci0udWktaWNvbi1jYWxlbmRhciB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xMTJweDsgfQotLnVpLWljb24tY2FydCB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xMTJweDsgfQotLnVpLWljb24tcGVuY2lsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTExMnB4OyB9Ci0udWktaWNvbi1jbG9jayB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xMTJweDsgfQotLnVpLWljb24tZGlzayB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xMTJweDsgfQotLnVpLWljb24tY2FsY3VsYXRvciB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTEycHg7IH0KLS51aS1pY29uLXpvb21pbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTEycHg7IH0KLS51aS1pY29uLXpvb21vdXQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTExMnB4OyB9Ci0udWktaWNvbi1zZWFyY2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTExMnB4OyB9Ci0udWktaWNvbi13cmVuY2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTExMnB4OyB9Ci0udWktaWNvbi1nZWFyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xMTJweDsgfQotLnVpLWljb24taGVhcnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTExMnB4OyB9Ci0udWktaWNvbi1zdGFyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC0xMTJweDsgfQotLnVpLWljb24tbGluayB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtMTEycHg7IH0KLS51aS1pY29uLWNhbmNlbCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTEyOHB4OyB9Ci0udWktaWNvbi1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTEyOHB4OyB9Ci0udWktaWNvbi1wbHVzdGhpY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTI4cHg7IH0KLS51aS1pY29uLW1pbnVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTEyOHB4OyB9Ci0udWktaWNvbi1taW51c3RoaWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTEyOHB4OyB9Ci0udWktaWNvbi1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xMjhweDsgfQotLnVpLWljb24tY2xvc2V0aGljayB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xMjhweDsgfQotLnVpLWljb24ta2V5IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xMjhweDsgfQotLnVpLWljb24tbGlnaHRidWxiIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xMjhweDsgfQotLnVpLWljb24tc2Npc3NvcnMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTEyOHB4OyB9Ci0udWktaWNvbi1jbGlwYm9hcmQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTEyOHB4OyB9Ci0udWktaWNvbi1jb3B5IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xMjhweDsgfQotLnVpLWljb24tY29udGFjdCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTI4cHg7IH0KLS51aS1pY29uLWltYWdlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0xMjhweDsgfQotLnVpLWljb24tdmlkZW8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTEyOHB4OyB9Ci0udWktaWNvbi1zY3JpcHQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjQwcHggLTEyOHB4OyB9Ci0udWktaWNvbi1hbGVydCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE0NHB4OyB9Ci0udWktaWNvbi1pbmZvIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE0NHB4OyB9Ci0udWktaWNvbi1ub3RpY2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTQ0cHg7IH0KLS51aS1pY29uLWhlbHAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTQ0cHg7IH0KLS51aS1pY29uLWNoZWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE0NHB4OyB9Ci0udWktaWNvbi1idWxsZXQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTQ0cHg7IH0KLS51aS1pY29uLXJhZGlvLW9uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE0NHB4OyB9Ci0udWktaWNvbi1yYWRpby1vZmYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE0NHB4OyB9Ci0udWktaWNvbi1waW4tdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTQ0cHg7IH0KLS51aS1pY29uLXBpbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xNDRweDsgfQotLnVpLWljb24tcGxheSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE2MHB4OyB9Ci0udWktaWNvbi1wYXVzZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xNjBweDsgfQotLnVpLWljb24tc2Vlay1uZXh0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE2MHB4OyB9Ci0udWktaWNvbi1zZWVrLXByZXYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTYwcHg7IH0KLS51aS1pY29uLXNlZWstZW5kIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE2MHB4OyB9Ci0udWktaWNvbi1zZWVrLXN0YXJ0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE2MHB4OyB9Ci0vKiB1aS1pY29uLXNlZWstZmlyc3QgaXMgZGVwcmVjYXRlZCwgdXNlIHVpLWljb24tc2Vlay1zdGFydCBpbnN0ZWFkICovCi0udWktaWNvbi1zZWVrLWZpcnN0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE2MHB4OyB9Ci0udWktaWNvbi1zdG9wIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE2MHB4OyB9Ci0udWktaWNvbi1lamVjdCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTYwcHg7IH0KLS51aS1pY29uLXZvbHVtZS1vZmYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTE2MHB4OyB9Ci0udWktaWNvbi12b2x1bWUtb24geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE2MHB4OyB9Ci0udWktaWNvbi1wb3dlciB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE3NnB4OyB9Ci0udWktaWNvbi1zaWduYWwtZGlhZyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xNzZweDsgfQotLnVpLWljb24tc2lnbmFsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE3NnB4OyB9Ci0udWktaWNvbi1iYXR0ZXJ5LTAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTc2cHg7IH0KLS51aS1pY29uLWJhdHRlcnktMSB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNzZweDsgfQotLnVpLWljb24tYmF0dGVyeS0yIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE3NnB4OyB9Ci0udWktaWNvbi1iYXR0ZXJ5LTMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTc2cHg7IH0KLS51aS1pY29uLWNpcmNsZS1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTkycHg7IH0KLS51aS1pY29uLWNpcmNsZS1taW51cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xOTJweDsgfQotLnVpLWljb24tY2lyY2xlLWNsb3NlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE5MnB4OyB9Ci0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xOTJweDsgfQotLnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTkycHg7IH0KLS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE5MnB4OyB9Ci0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xOTJweDsgfQotLnVpLWljb24tY2lyY2xlLWFycm93LWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE5MnB4OyB9Ci0udWktaWNvbi1jaXJjbGUtYXJyb3ctcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTkycHg7IH0KLS51aS1pY29uLWNpcmNsZS1hcnJvdy13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xOTJweDsgfQotLnVpLWljb24tY2lyY2xlLWFycm93LW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTE5MnB4OyB9Ci0udWktaWNvbi1jaXJjbGUtem9vbWluIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xOTJweDsgfQotLnVpLWljb24tY2lyY2xlLXpvb21vdXQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTE5MnB4OyB9Ci0udWktaWNvbi1jaXJjbGUtY2hlY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTE5MnB4OyB9Ci0udWktaWNvbi1jaXJjbGVzbWFsbC1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMjA4cHg7IH0KLS51aS1pY29uLWNpcmNsZXNtYWxsLW1pbnVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTIwOHB4OyB9Ci0udWktaWNvbi1jaXJjbGVzbWFsbC1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0yMDhweDsgfQotLnVpLWljb24tc3F1YXJlc21hbGwtcGx1cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0yMDhweDsgfQotLnVpLWljb24tc3F1YXJlc21hbGwtbWludXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMjA4cHg7IH0KLS51aS1pY29uLXNxdWFyZXNtYWxsLWNsb3NlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTIwOHB4OyB9Ci0udWktaWNvbi1ncmlwLWRvdHRlZC12ZXJ0aWNhbCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTIyNHB4OyB9Ci0udWktaWNvbi1ncmlwLWRvdHRlZC1ob3Jpem9udGFsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTIyNHB4OyB9Ci0udWktaWNvbi1ncmlwLXNvbGlkLXZlcnRpY2FsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTIyNHB4OyB9Ci0udWktaWNvbi1ncmlwLXNvbGlkLWhvcml6b250YWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMjI0cHg7IH0KLS51aS1pY29uLWdyaXBzbWFsbC1kaWFnb25hbC1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0yMjRweDsgfQotLnVpLWljb24tZ3JpcC1kaWFnb25hbC1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0yMjRweDsgfQotCi0KLS8qIE1pc2MgdmlzdWFscwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIENvcm5lciByYWRpdXMgKi8KLS51aS1jb3JuZXItYWxsLAotLnVpLWNvcm5lci10b3AsCi0udWktY29ybmVyLWxlZnQsCi0udWktY29ybmVyLXRsIHsKLQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7Ci19Ci0udWktY29ybmVyLWFsbCwKLS51aS1jb3JuZXItdG9wLAotLnVpLWNvcm5lci1yaWdodCwKLS51aS1jb3JuZXItdHIgewotCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7Ci19Ci0udWktY29ybmVyLWFsbCwKLS51aS1jb3JuZXItYm90dG9tLAotLnVpLWNvcm5lci1sZWZ0LAotLnVpLWNvcm5lci1ibCB7Ci0vKglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7Ki8KLX0KLS51aS1jb3JuZXItYWxsLAotLnVpLWNvcm5lci1ib3R0b20sCi0udWktY29ybmVyLXJpZ2h0LAotLnVpLWNvcm5lci1iciB7Ci0vKglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4OyovCi19Ci0KLS8qIE92ZXJsYXlzICovCi0udWktd2lkZ2V0LW92ZXJsYXkgewotCWJhY2tncm91bmQ6ICNhYWFhYWEgdXJsKGltYWdlcy91aS1iZ19mbGF0Xzc1X2FhYWFhYV80MHgxMDAucG5nKSA1MCUgNTAlIHJlcGVhdC14OwotCW9wYWNpdHk6IC4zOwotCWZpbHRlcjogQWxwaGEoT3BhY2l0eT0zMCk7Ci19Ci0udWktd2lkZ2V0LXNoYWRvdyB7Ci0JbWFyZ2luOiA1cHggMCAwIDVweDsKLQlwYWRkaW5nOiAwcHg7Ci0JYmFja2dyb3VuZDogIzk5OTk5OSB1cmwoaW1hZ2VzL3VpLWJnX2ZsYXRfNTVfOTk5OTk5XzQweDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7Ci0Jb3BhY2l0eTogLjQ1OwotCWZpbHRlcjogQWxwaGEoT3BhY2l0eT00NSk7Ci0JYm9yZGVyLXJhZGl1czogNXB4OwotfQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvanF1ZXJ5LXVpLTEuMTAuMi5jdXN0b20ubWluLmNzcyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2Nzcy90aGlyZHBhcnR5L2pxdWVyeS11aS0xLjEwLjIuY3VzdG9tLm1pbi5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIyNmViOWQuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvY3NzL3RoaXJkcGFydHkvanF1ZXJ5LXVpLTEuMTAuMi5jdXN0b20ubWluLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotLyohIGpRdWVyeSBVSSAtIHYxLjEwLjIgLSAyMDEzLTA0LTA1Ci0qIGh0dHA6Ly9qcXVlcnl1aS5jb20KLSogSW5jbHVkZXM6IGpxdWVyeS51aS5jb3JlLmNzcywganF1ZXJ5LnVpLnRhYnMuY3NzCi0qIFRvIHZpZXcgYW5kIG1vZGlmeSB0aGlzIHRoZW1lLCB2aXNpdCBodHRwOi8vanF1ZXJ5dWkuY29tL3RoZW1lcm9sbGVyLz9mZkRlZmF1bHQ9SGVsdmV0aWNhJTJDQXJpYWwlMkNzYW5zLXNlcmlmJTNCJmZ3RGVmYXVsdD1ub3JtYWwmZnNEZWZhdWx0PTE0JmNvcm5lclJhZGl1cz01cHgmYmdDb2xvckhlYWRlcj0lMjNlNWU1ZTUmYmdUZXh0dXJlSGVhZGVyPWZsYXQmYmdJbWdPcGFjaXR5SGVhZGVyPTc1JmJvcmRlckNvbG9ySGVhZGVyPSUyM2U1ZTVlNSZmY0hlYWRlcj0lMjM0ZDRkNGYmaWNvbkNvbG9ySGVhZGVyPSUyMzRkNGQ0ZiZiZ0NvbG9yQ29udGVudD0lMjNGRkZGRkYmYmdUZXh0dXJlQ29udGVudD1mbGF0JmJnSW1nT3BhY2l0eUNvbnRlbnQ9MTAwJmJvcmRlckNvbG9yQ29udGVudD0lMjNlNWU1ZTUmZmNDb250ZW50PSUyMzRkNGQ0ZiZpY29uQ29sb3JDb250ZW50PSUyM2Y0N2QyMCZiZ0NvbG9yRGVmYXVsdD0lMjNlNWU1ZTUmYmdUZXh0dXJlRGVmYXVsdD1mbGF0JmJnSW1nT3BhY2l0eURlZmF1bHQ9NDUmYm9yZGVyQ29sb3JEZWZhdWx0PSUyM2U1ZTVlNSZmY0RlZmF1bHQ9JTIzNGQ0ZDRkJmljb25Db2xvckRlZmF1bHQ9JTIzNGQ0ZDRmJmJnQ29sb3JIb3Zlcj0lMjNlNWU1ZTUmYmdUZXh0dXJlSG92ZXI9ZmxhdCZiZ0ltZ09wYWNpdHlIb3Zlcj03NSZib3JkZXJDb2xvckhvdmVyPSUyMzRkNGQ0ZiZmY0hvdmVyPSUyM2ZkYjgxMyZpY29uQ29sb3JIb3Zlcj0lMjNmNDdkMjAmYmdDb2xvckFjdGl2ZT0lMjNmZGI4MTMmYmdUZXh0dXJlQWN0aXZlPWZsYXQmYmdJbWdPcGFjaXR5QWN0aXZlPTUwJmJvcmRlckNvbG9yQWN0aXZlPSUyM2U1ZTVlNSZmY0FjdGl2ZT0lMjNmZmZmZmYmaWNvbkNvbG9yQWN0aXZlPSUyM2Y0N2QyMCZiZ0NvbG9ySGlnaGxpZ2h0PSUyM2Y4ZGE0ZSZiZ1RleHR1cmVIaWdobGlnaHQ9Z2xhc3MmYmdJbWdPcGFjaXR5SGlnaGxpZ2h0PTU1JmJvcmRlckNvbG9ySGlnaGxpZ2h0PSUyM2ZjZDExMyZmY0hpZ2hsaWdodD0lMjM5MTU2MDgmaWNvbkNvbG9ySGlnaGxpZ2h0PSUyM2Y3YTUwZCZiZ0NvbG9yRXJyb3I9JTIzZTE0ZjFjJmJnVGV4dHVyZUVycm9yPWdsb3NzX3dhdmUmYmdJbWdPcGFjaXR5RXJyb3I9NDUmYm9yZGVyQ29sb3JFcnJvcj0lMjNjZDBhMGEmZmNFcnJvcj0lMjNmZmZmZmYmaWNvbkNvbG9yRXJyb3I9JTIzZmNkMTEzJmJnQ29sb3JPdmVybGF5PSUyM2FhYWFhYSZiZ1RleHR1cmVPdmVybGF5PWZsYXQmYmdJbWdPcGFjaXR5T3ZlcmxheT03NSZvcGFjaXR5T3ZlcmxheT0zMCZiZ0NvbG9yU2hhZG93PSUyMzk5OTk5OSZiZ1RleHR1cmVTaGFkb3c9ZmxhdCZiZ0ltZ09wYWNpdHlTaGFkb3c9NTUmb3BhY2l0eVNoYWRvdz00NSZ0aGlja25lc3NTaGFkb3c9MHB4Jm9mZnNldFRvcFNoYWRvdz01cHgmb2Zmc2V0TGVmdFNoYWRvdz01cHgmY29ybmVyUmFkaXVzU2hhZG93PTVweCZ0ciUyNmZmRGVmYXVsdD1IZWx2ZXRpY2ElMkNBcmlhbCUyQ3NhbnMtc2VyaWYKLSogQ29weXJpZ2h0IDIwMTMgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyBMaWNlbnNlZCBNSVQgKi8udWktaGVscGVyLWhpZGRlbntkaXNwbGF5Om5vbmV9LnVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0udWktaGVscGVyLXJlc2V0e21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtvdXRsaW5lOjA7bGluZS1oZWlnaHQ6MS4zO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxMDAlO2xpc3Qtc3R5bGU6bm9uZX0udWktaGVscGVyLWNsZWFyZml4OmJlZm9yZSwudWktaGVscGVyLWNsZWFyZml4OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9LnVpLWhlbHBlci1jbGVhcmZpeDphZnRlcntjbGVhcjpib3RofS51aS1oZWxwZXItY2xlYXJmaXh7bWluLWhlaWdodDowfS51aS1oZWxwZXItemZpeHt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7ZmlsdGVyOkFscGhhKE9wYWNpdHk9MCl9LnVpLWZyb250e3otaW5kZXg6MTAwfS51aS1zdGF0ZS1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdCFpbXBvcnRhbnR9LnVpLWljb257ZGlzcGxheTpibG9jazt0ZXh0LWluZGVudDotOTk5OTlweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS51aS13aWRnZXQtb3ZlcmxheXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0udWktdGFic3twb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOi4yZW19LnVpLXRhYnMgLnVpLXRhYnMtbmF2e21hcmdpbjowO3BhZGRpbmc6LjJlbSAuMmVtIDB9LnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpe2xpc3Qtc3R5bGU6bm9uZTtmbG9hdDpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowO21hcmdpbjoxcHggLjJlbSAwIDA7Ym9yZGVyLWJvdHRvbS13aWR0aDowO3BhZGRpbmc6MDt3aGl0ZS1zcGFjZTpub3dyYXB9LnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpIGF7ZmxvYXQ6bGVmdDtwYWRkaW5nOi41ZW0gMWVtO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZXttYXJnaW4tYm90dG9tOi0xcHg7cGFkZGluZy1ib3R0b206MXB4fS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZSBhLC51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS1zdGF0ZS1kaXNhYmxlZCBhLC51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWxvYWRpbmcgYXtjdXJzb3I6dGV4dH0udWktdGFicyAudWktdGFicy1uYXYgbGkgYSwudWktdGFicy1jb2xsYXBzaWJsZSAudWktdGFicy1uYXYgbGkudWktdGFicy1hY3RpdmUgYXtjdXJzb3I6cG9pbnRlcn0udWktdGFicyAudWktdGFicy1wYW5lbHtkaXNwbGF5OmJsb2NrO2JvcmRlci13aWR0aDowO3BhZGRpbmc6MWVtIDEuNGVtO2JhY2tncm91bmQ6MH0udWktd2lkZ2V0e2ZvbnQtZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOztmb250LXNpemU6MTR9LnVpLXdpZGdldCAudWktd2lkZ2V0e2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldCBpbnB1dCwudWktd2lkZ2V0IHNlbGVjdCwudWktd2lkZ2V0IHRleHRhcmVhLC51aS13aWRnZXQgYnV0dG9ue2ZvbnQtZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOztmb250LXNpemU6MWVtfS51aS13aWRnZXQtY29udGVudHtib3JkZXI6MXB4IHNvbGlkICNlNWU1ZTU7YmFja2dyb3VuZDojRkZGIHVybChpbWFnZXMvdWktYmdfZmxhdF8xMDBfRkZGRkZGXzQweDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7Y29sb3I6IzRkNGQ0Zn0udWktd2lkZ2V0LWNvbnRlbnQgYXtjb2xvcjojNGQ0ZDRmfS51aS13aWRnZXQtaGVhZGVye2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNTtiYWNrZ3JvdW5kOiNlNWU1ZTUgdXJsKGltYWdlcy91aS1iZ19mbGF0Xzc1X2U1ZTVlNV80MHgxMDAucG5nKSA1MCUgNTAlIHJlcGVhdC14O2NvbG9yOiM0ZDRkNGY7Zm9udC13ZWlnaHQ6Ym9sZH0udWktd2lkZ2V0LWhlYWRlciBhe2NvbG9yOiM0ZDRkNGZ9LnVpLXN0YXRlLWRlZmF1bHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0e2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNTtiYWNrZ3JvdW5kOiNlNWU1ZTUgdXJsKGltYWdlcy91aS1iZ19mbGF0XzQ1X2U1ZTVlNV80MHgxMDAucG5nKSA1MCUgNTAlIHJlcGVhdC14O2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojNGQ0ZDRkfS51aS1zdGF0ZS1kZWZhdWx0IGEsLnVpLXN0YXRlLWRlZmF1bHQgYTpsaW5rLC51aS1zdGF0ZS1kZWZhdWx0IGE6dmlzaXRlZHtjb2xvcjojNGQ0ZDRkO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1zdGF0ZS1ob3ZlciwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhvdmVyLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1ob3ZlciwudWktc3RhdGUtZm9jdXMsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1mb2N1cywudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjNGQ0ZDRmO2JhY2tncm91bmQ6I2U1ZTVlNSB1cmwoaW1hZ2VzL3VpLWJnX2ZsYXRfNzVfZTVlNWU1XzQweDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7Zm9udC13ZWlnaHQ6bm9ybWFsO2NvbG9yOiNmZGI4MTN9LnVpLXN0YXRlLWhvdmVyIGEsLnVpLXN0YXRlLWhvdmVyIGE6aG92ZXIsLnVpLXN0YXRlLWhvdmVyIGE6bGluaywudWktc3RhdGUtaG92ZXIgYTp2aXNpdGVke2NvbG9yOiNmZGI4MTM7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXN0YXRlLWFjdGl2ZSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWFjdGl2ZSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtYWN0aXZle2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNTtiYWNrZ3JvdW5kOiNmZGI4MTMgdXJsKGltYWdlcy91aS1iZ19mbGF0XzUwX2ZkYjgxM180MHgxMDAucG5nKSA1MCUgNTAlIHJlcGVhdC14O2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojZmZmfS51aS1zdGF0ZS1hY3RpdmUgYSwudWktc3RhdGUtYWN0aXZlIGE6bGluaywudWktc3RhdGUtYWN0aXZlIGE6dmlzaXRlZHtjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1zdGF0ZS1oaWdobGlnaHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhpZ2hsaWdodHtib3JkZXI6MXB4IHNvbGlkICNmY2QxMTM7YmFja2dyb3VuZDojZjhkYTRlIHVybChpbWFnZXMvdWktYmdfZ2xhc3NfNTVfZjhkYTRlXzF4NDAwLnBuZykgNTAlIDUwJSByZXBlYXQteDtjb2xvcjojOTE1NjA4fS51aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCBhLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHQgYXtjb2xvcjojOTE1NjA4fS51aS1zdGF0ZS1lcnJvciwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvcntib3JkZXI6MXB4IHNvbGlkICNjZDBhMGE7YmFja2dyb3VuZDojZTE0ZjFjIHVybChpbWFnZXMvdWktYmdfZ2xvc3Mtd2F2ZV80NV9lMTRmMWNfNTAweDEwMC5wbmcpIDUwJSB0b3AgcmVwZWF0LXg7Y29sb3I6I2ZmZn0udWktc3RhdGUtZXJyb3IgYSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yIGEsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yIGF7Y29sb3I6I2ZmZn0udWktc3RhdGUtZXJyb3ItdGV4dCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLXRleHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yLXRleHR7Y29sb3I6I2ZmZn0udWktcHJpb3JpdHktcHJpbWFyeSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXByaW1hcnksLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXByaW1hcnl7Zm9udC13ZWlnaHQ6Ym9sZH0udWktcHJpb3JpdHktc2Vjb25kYXJ5LC51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktc2Vjb25kYXJ5LC51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1zZWNvbmRhcnl7b3BhY2l0eTouNztmaWx0ZXI6QWxwaGEoT3BhY2l0eT03MCk7Zm9udC13ZWlnaHQ6bm9ybWFsfS51aS1zdGF0ZS1kaXNhYmxlZCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRpc2FibGVkLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kaXNhYmxlZHtvcGFjaXR5Oi4zNTtmaWx0ZXI6QWxwaGEoT3BhY2l0eT0zNSk7YmFja2dyb3VuZC1pbWFnZTpub25lfS51aS1zdGF0ZS1kaXNhYmxlZCAudWktaWNvbntmaWx0ZXI6QWxwaGEoT3BhY2l0eT0zNSl9LnVpLWljb257d2lkdGg6MTZweDtoZWlnaHQ6MTZweH0udWktaWNvbiwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoaW1hZ2VzL3VpLWljb25zX2Y0N2QyMF8yNTZ4MjQwLnBuZyl9LnVpLXdpZGdldC1oZWFkZXIgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoaW1hZ2VzL3VpLWljb25zXzRkNGQ0Zl8yNTZ4MjQwLnBuZyl9LnVpLXN0YXRlLWRlZmF1bHQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoaW1hZ2VzL3VpLWljb25zXzRkNGQ0Zl8yNTZ4MjQwLnBuZyl9LnVpLXN0YXRlLWhvdmVyIC51aS1pY29uLC51aS1zdGF0ZS1mb2N1cyAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybChpbWFnZXMvdWktaWNvbnNfZjQ3ZDIwXzI1NngyNDAucG5nKX0udWktc3RhdGUtYWN0aXZlIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKGltYWdlcy91aS1pY29uc19mNDdkMjBfMjU2eDI0MC5wbmcpfS51aS1zdGF0ZS1oaWdobGlnaHQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoaW1hZ2VzL3VpLWljb25zX2Y3YTUwZF8yNTZ4MjQwLnBuZyl9LnVpLXN0YXRlLWVycm9yIC51aS1pY29uLC51aS1zdGF0ZS1lcnJvci10ZXh0IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKGltYWdlcy91aS1pY29uc19mY2QxMTNfMjU2eDI0MC5wbmcpfS51aS1pY29uLWJsYW5re2JhY2tncm91bmQtcG9zaXRpb246MTZweCAxNnB4fS51aS1pY29uLWNhcmF0LTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0udWktaWNvbi1jYXJhdC0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggMH0udWktaWNvbi1jYXJhdC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAwfS51aS1pY29uLWNhcmF0LTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAwfS51aS1pY29uLWNhcmF0LTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IDB9LnVpLWljb24tY2FyYXQtMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IDB9LnVpLWljb24tY2FyYXQtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggMH0udWktaWNvbi1jYXJhdC0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IDB9LnVpLWljb24tY2FyYXQtMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggMH0udWktaWNvbi1jYXJhdC0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAwfS51aS1pY29uLXRyaWFuZ2xlLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTZweH0udWktaWNvbi1hcnJvdy0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC0zMnB4fS51aS1pY29uLWFycm93LTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1uZS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLXNlLW53e2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTMycHh9LnVpLWljb24tYXJyb3d0aGljay0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1uZS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTQ4cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjowIC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC02NHB4fS51aS1pY29uLWFycm93LTR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC04MHB4fS51aS1pY29uLWFycm93LTQtZGlhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC04MHB4fS51aS1pY29uLWV4dGxpbmt7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtODBweH0udWktaWNvbi1uZXd3aW57YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtODBweH0udWktaWNvbi1yZWZyZXNoe2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTgwcHh9LnVpLWljb24tc2h1ZmZsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC04MHB4fS51aS1pY29uLXRyYW5zZmVyLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC04MHB4fS51aS1pY29uLXRyYW5zZmVydGhpY2stZS13e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC04MHB4fS51aS1pY29uLWZvbGRlci1jb2xsYXBzZWR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC05NnB4fS51aS1pY29uLWZvbGRlci1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTk2cHh9LnVpLWljb24tZG9jdW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtOTZweH0udWktaWNvbi1kb2N1bWVudC1ie2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTk2cHh9LnVpLWljb24tbm90ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC05NnB4fS51aS1pY29uLW1haWwtY2xvc2Vke2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTk2cHh9LnVpLWljb24tbWFpbC1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTk2cHh9LnVpLWljb24tc3VpdGNhc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTk2cHh9LnVpLWljb24tY29tbWVudHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtOTZweH0udWktaWNvbi1wZXJzb257YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTk2cHh9LnVpLWljb24tcHJpbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTk2cHh9LnVpLWljb24tdHJhc2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTk2cHh9LnVpLWljb24tbG9ja2Vke2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC05NnB4fS51aS1pY29uLXVubG9ja2Vke2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC05NnB4fS51aS1pY29uLWJvb2ttYXJre2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC05NnB4fS51aS1pY29uLXRhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtOTZweH0udWktaWNvbi1ob21le2JhY2tncm91bmQtcG9zaXRpb246MCAtMTEycHh9LnVpLWljb24tZmxhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xMTJweH0udWktaWNvbi1jYWxlbmRhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xMTJweH0udWktaWNvbi1jYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTExMnB4fS51aS1pY29uLXBlbmNpbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xMTJweH0udWktaWNvbi1jbG9ja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xMTJweH0udWktaWNvbi1kaXNre2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTExMnB4fS51aS1pY29uLWNhbGN1bGF0b3J7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTExMnB4fS51aS1pY29uLXpvb21pbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTEycHh9LnVpLWljb24tem9vbW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTEycHh9LnVpLWljb24tc2VhcmNoe2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xMTJweH0udWktaWNvbi13cmVuY2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTExMnB4fS51aS1pY29uLWdlYXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTExMnB4fS51aS1pY29uLWhlYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xMTJweH0udWktaWNvbi1zdGFye2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0xMTJweH0udWktaWNvbi1saW5re2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0xMTJweH0udWktaWNvbi1jYW5jZWx7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMjhweH0udWktaWNvbi1wbHVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTEyOHB4fS51aS1pY29uLXBsdXN0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xMjhweH0udWktaWNvbi1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xMjhweH0udWktaWNvbi1taW51c3RoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTEyOHB4fS51aS1pY29uLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTEyOHB4fS51aS1pY29uLWNsb3NldGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTI4cHh9LnVpLWljb24ta2V5e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xMjhweH0udWktaWNvbi1saWdodGJ1bGJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTEyOHB4fS51aS1pY29uLXNjaXNzb3Jze2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xMjhweH0udWktaWNvbi1jbGlwYm9hcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTEyOHB4fS51aS1pY29uLWNvcHl7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTEyOHB4fS51aS1pY29uLWNvbnRhY3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTEyOHB4fS51aS1pY29uLWltYWdle2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xMjhweH0udWktaWNvbi12aWRlb3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMTI4cHh9LnVpLWljb24tc2NyaXB0e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0xMjhweH0udWktaWNvbi1hbGVydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE0NHB4fS51aS1pY29uLWluZm97YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTQ0cHh9LnVpLWljb24tbm90aWNle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE0NHB4fS51aS1pY29uLWhlbHB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTQ0cHh9LnVpLWljb24tY2hlY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTQ0cHh9LnVpLWljb24tYnVsbGV0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE0NHB4fS51aS1pY29uLXJhZGlvLW9ue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE0NHB4fS51aS1pY29uLXJhZGlvLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTQ0cHh9LnVpLWljb24tcGluLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE0NHB4fS51aS1pY29uLXBpbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNDRweH0udWktaWNvbi1wbGF5e2JhY2tncm91bmQtcG9zaXRpb246MCAtMTYwcHh9LnVpLWljb24tcGF1c2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTYwcHh9LnVpLWljb24tc2Vlay1uZXh0e2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE2MHB4fS51aS1pY29uLXNlZWstcHJldntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNjBweH0udWktaWNvbi1zZWVrLWVuZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNjBweH0udWktaWNvbi1zZWVrLXN0YXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2MHB4fS51aS1pY29uLXNlZWstZmlyc3R7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTYwcHh9LnVpLWljb24tc3RvcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNjBweH0udWktaWNvbi1lamVjdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTYwcHh9LnVpLWljb24tdm9sdW1lLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTYwcHh9LnVpLWljb24tdm9sdW1lLW9ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNjBweH0udWktaWNvbi1wb3dlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE3NnB4fS51aS1pY29uLXNpZ25hbC1kaWFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE3NnB4fS51aS1pY29uLXNpZ25hbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0xe2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTN7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTc2cHh9LnVpLWljb24tY2lyY2xlLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xOTJweH0udWktaWNvbi1jaXJjbGUtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1le2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS13e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1ue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1le2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1ue2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtem9vbWlue2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtem9vbW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWNoZWNre2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGVzbWFsbC1wbHVze2JhY2tncm91bmQtcG9zaXRpb246MCAtMjA4cHh9LnVpLWljb24tY2lyY2xlc21hbGwtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMjA4cHh9LnVpLWljb24tY2lyY2xlc21hbGwtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0yMDhweH0udWktaWNvbi1ncmlwLWRvdHRlZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTIyNHB4fS51aS1pY29uLWdyaXAtZG90dGVkLWhvcml6b250YWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1zb2xpZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0yMjRweH0udWktaWNvbi1ncmlwLXNvbGlkLWhvcml6b250YWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMjI0cHh9LnVpLWljb24tZ3JpcHNtYWxsLWRpYWdvbmFsLXNle2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTIyNHB4fS51aS1pY29uLWdyaXAtZGlhZ29uYWwtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMjI0cHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci10b3AsLnVpLWNvcm5lci1sZWZ0LC51aS1jb3JuZXItdGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo1cHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci10b3AsLnVpLWNvcm5lci1yaWdodCwudWktY29ybmVyLXRye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjVweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLWxlZnQsLnVpLWNvcm5lci1ibHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjVweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLXJpZ2h0LC51aS1jb3JuZXItYnJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NXB4fS51aS13aWRnZXQtb3ZlcmxheXtiYWNrZ3JvdW5kOiNhYWEgdXJsKGltYWdlcy91aS1iZ19mbGF0Xzc1X2FhYWFhYV80MHgxMDAucG5nKSA1MCUgNTAlIHJlcGVhdC14O29wYWNpdHk6LjM7ZmlsdGVyOkFscGhhKE9wYWNpdHk9MzApfS51aS13aWRnZXQtc2hhZG93e21hcmdpbjo1cHggMCAwIDVweDtwYWRkaW5nOjA7YmFja2dyb3VuZDojOTk5IHVybChpbWFnZXMvdWktYmdfZmxhdF81NV85OTk5OTlfNDB4MTAwLnBuZykgNTAlIDUwJSByZXBlYXQteDtvcGFjaXR5Oi40NTtmaWx0ZXI6QWxwaGEoT3BhY2l0eT00NSk7Ym9yZGVyLXJhZGl1czo1cHh9CmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9mYXZpY29uLmljbyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2Zhdmljb24uaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ZWVlNmZmLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2Zhdmljb24uaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvaW1hZ2VzL2xvZ29fb3BlbmRheWxpZ2h0LnBuZyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2ltYWdlcy9sb2dvX29wZW5kYXlsaWdodC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDEwMzUyMGIuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvaW1hZ2VzL2xvZ29fb3BlbmRheWxpZ2h0LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2ltYWdlcy9yZWZyZXNoLnBuZyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2ltYWdlcy9yZWZyZXNoLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzk4Y2JmNS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9pbWFnZXMvcmVmcmVzaC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9qcy90aGlyZHBhcnR5L2ppdC5qcyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2pzL3RoaXJkcGFydHkvaml0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YmY2ZTllLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2pzL3RoaXJkcGFydHkvaml0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTcxNjMgKzAsMCBAQAotLyoKLUNvcHlyaWdodCAoYykgMjAxMSBTZW5jaGEgSW5jLiAtIEF1dGhvcjogTmljb2xhcyBHYXJjaWEgQmVsbW9udGUgKGh0dHA6Ly9waGlsb2diLmdpdGh1Yi5jb20vKQotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci1vZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi1mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi1JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLU9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLVRIRSBTT0ZUV0FSRS4KLQotICovCi0gKGZ1bmN0aW9uICgpIHsgCi0KLS8qCi0gIEZpbGU6IENvcmUuanMKLQotICovCi0KLS8qCi0gT2JqZWN0OiAkaml0Ci0gCi0gRGVmaW5lcyB0aGUgbmFtZXNwYWNlIGZvciBhbGwgbGlicmFyeSBDbGFzc2VzIGFuZCBPYmplY3RzLiAKLSBUaGlzIHZhcmlhYmxlIGlzIHRoZSAqb25seSogZ2xvYmFsIHZhcmlhYmxlIGRlZmluZWQgaW4gdGhlIFRvb2xraXQuIAotIFRoZXJlIGFyZSBhbHNvIG90aGVyIGludGVyZXN0aW5nIHByb3BlcnRpZXMgYXR0YWNoZWQgdG8gdGhpcyB2YXJpYWJsZSBkZXNjcmliZWQgYmVsb3cuCi0gKi8KLXdpbmRvdy4kaml0ID0gZnVuY3Rpb24odykgewotICB3ID0gdyB8fCB3aW5kb3c7Ci0gIGZvcih2YXIgayBpbiAkaml0KSB7Ci0gICAgaWYoJGppdFtrXS4kZXh0ZW5kKSB7Ci0gICAgICB3W2tdID0gJGppdFtrXTsKLSAgICB9Ci0gIH0KLX07Ci0KLSRqaXQudmVyc2lvbiA9ICcyLjAuMSc7Ci0vKgotICBPYmplY3Q6ICRqaXQuaWQKLSAgCi0gIFdvcmtzIGp1c3QgbGlrZSAqZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQqCi0gIAotICBFeGFtcGxlOgotICAoc3RhcnQgY29kZSBqcykKLSAgdmFyIGVsZW1lbnQgPSAkaml0LmlkKCdlbGVtZW50SWQnKTsKLSAgKGVuZCBjb2RlKQotCi0qLwotCi0vKgotIE9iamVjdDogJGppdC51dGlsCi0gCi0gQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMuCi0gCi0gU29tZSBvZiB0aGUgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHRoZSBDbGFzcyBzeXN0ZW0gd2VyZSBiYXNlZCBpbiB0aGUgTW9vVG9vbHMgRnJhbWV3b3JrIAotIDxodHRwOi8vbW9vdG9vbHMubmV0Pi4gQ29weXJpZ2h0IChjKSAyMDA2LTIwMTAgVmFsZXJpbyBQcm9pZXR0aSwgPGh0dHA6Ly9tYWQ0bWlsay5uZXQvPi4gCi0gTUlUIGxpY2Vuc2UgPGh0dHA6Ly9tb290b29scy5uZXQvbGljZW5zZS50eHQ+LgotIAotIFRoZXNlIG1ldGhvZHMgYXJlIGdlbmVyYWxseSBhbHNvIGltcGxlbWVudGVkIGluIERPTSBtYW5pcHVsYXRpb24gZnJhbWV3b3JrcyBsaWtlIEpRdWVyeSwgTW9vVG9vbHMgYW5kIFByb3RvdHlwZS4KLSBJJ2Qgc3VnZ2VzdCB5b3UgdG8gdXNlIHRoZSBmdW5jdGlvbnMgZnJvbSB0aG9zZSBsaWJyYXJpZXMgaW5zdGVhZCBvZiB1c2luZyB0aGVzZSwgc2luY2UgdGhlaXIgZnVuY3Rpb25zIAotIGFyZSB3aWRlbHkgdXNlZCBhbmQgdGVzdGVkIGluIG1hbnkgZGlmZmVyZW50IHBsYXRmb3Jtcy9icm93c2Vycy4gVXNlIHRoZXNlIGZ1bmN0aW9ucyBvbmx5IGlmIHlvdSBoYXZlIHRvLgotIAotICovCi12YXIgJCA9IGZ1bmN0aW9uKGQpIHsKLSAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGQpOwotfTsKLQotJC5lbXB0eSA9IGZ1bmN0aW9uKCkgewotfTsKLQotLyoKLSAgTWV0aG9kOiBleHRlbmQKLSAgCi0gIEF1Z21lbnQgYW4gb2JqZWN0IGJ5IGFwcGVuZGluZyBhbm90aGVyIG9iamVjdCdzIHByb3BlcnRpZXMuCi0gIAotICBQYXJhbWV0ZXJzOgotICAKLSAgb3JpZ2luYWwgLSAob2JqZWN0KSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkLgotICBleHRlbmRlZCAtIChvYmplY3QpIEFuIG9iamVjdCB3aGljaCBwcm9wZXJ0aWVzIGFyZSBnb2luZyB0byBiZSBhcHBlbmRlZCB0byB0aGUgb3JpZ2luYWwgb2JqZWN0LgotICAKLSAgRXhhbXBsZToKLSAgKHN0YXJ0IGNvZGUganMpCi0gICRqaXQudXRpbC5leHRlbmQoeyAnYSc6IDEsICdiJzogMiB9LCB7ICdiJzogMywgJ2MnOiA0IH0pOyAvL3sgJ2EnOjEsICdiJzogMywgJ2MnOiA0IH0KLSAgKGVuZCBjb2RlKQotKi8KLSQuZXh0ZW5kID0gZnVuY3Rpb24ob3JpZ2luYWwsIGV4dGVuZGVkKSB7Ci0gIGZvciAoIHZhciBrZXkgaW4gKGV4dGVuZGVkIHx8IHt9KSkKLSAgICBvcmlnaW5hbFtrZXldID0gZXh0ZW5kZWRba2V5XTsKLSAgcmV0dXJuIG9yaWdpbmFsOwotfTsKLQotJC5sYW1iZGEgPSBmdW5jdGlvbih2YWx1ZSkgewotICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSA/IHZhbHVlIDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHZhbHVlOwotICB9OwotfTsKLQotJC50aW1lID0gRGF0ZS5ub3cgfHwgZnVuY3Rpb24oKSB7Ci0gIHJldHVybiArbmV3IERhdGU7Ci19OwotCi0vKgotICBNZXRob2Q6IHNwbGF0Ci0gIAotICBSZXR1cm5zIGFuIGFycmF5IHdyYXBwaW5nICpvYmoqIGlmICpvYmoqIGlzIG5vdCBhbiBhcnJheS4gUmV0dXJucyAqb2JqKiBvdGhlcndpc2UuCi0gIAotICBQYXJhbWV0ZXJzOgotICAKLSAgb2JqIC0gKG1peGVkKSBUaGUgb2JqZWN0IHRvIGJlIHdyYXBwZWQgaW4gYW4gYXJyYXkuCi0gIAotICBFeGFtcGxlOgotICAoc3RhcnQgY29kZSBqcykKLSAgJGppdC51dGlsLnNwbGF0KDMpOyAgIC8vWzNdCi0gICRqaXQudXRpbC5zcGxhdChbM10pOyAvL1szXQotICAoZW5kIGNvZGUpCi0qLwotJC5zcGxhdCA9IGZ1bmN0aW9uKG9iaikgewotICB2YXIgdHlwZSA9ICQudHlwZShvYmopOwotICByZXR1cm4gdHlwZSA/ICgodHlwZSAhPSAnYXJyYXknKSA/IFsgb2JqIF0gOiBvYmopIDogW107Ci19OwotCi0kLnR5cGUgPSBmdW5jdGlvbihlbGVtKSB7Ci0gIHZhciB0eXBlID0gJC50eXBlLnMuY2FsbChlbGVtKS5tYXRjaCgvXlxbb2JqZWN0XHMoLiopXF0kLylbMV0udG9Mb3dlckNhc2UoKTsKLSAgaWYodHlwZSAhPSAnb2JqZWN0JykgcmV0dXJuIHR5cGU7Ci0gIGlmKGVsZW0gJiYgZWxlbS4kJGZhbWlseSkgcmV0dXJuIGVsZW0uJCRmYW1pbHk7Ci0gIHJldHVybiAoZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZVR5cGUgPT0gMSk/ICdlbGVtZW50JyA6IHR5cGU7Ci19OwotJC50eXBlLnMgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOwotCi0vKgotICBNZXRob2Q6IGVhY2gKLSAgCi0gIEl0ZXJhdGVzIHRocm91Z2ggYW4gaXRlcmFibGUgYXBwbHlpbmcgKmYqLgotICAKLSAgUGFyYW1ldGVyczoKLSAgCi0gIGl0ZXJhYmxlIC0gKGFycmF5KSBUaGUgb3JpZ2luYWwgYXJyYXkuCi0gIGZuIC0gKGZ1bmN0aW9uKSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFycmF5IGVsZW1lbnRzLgotICAKLSAgRXhhbXBsZToKLSAgKHN0YXJ0IGNvZGUganMpCi0gICRqaXQudXRpbC5lYWNoKFszLCA0LCA1XSwgZnVuY3Rpb24obikgeyBhbGVydCgnbnVtYmVyICcgKyBuKTsgfSk7Ci0gIChlbmQgY29kZSkKLSovCi0kLmVhY2ggPSBmdW5jdGlvbihpdGVyYWJsZSwgZm4pIHsKLSAgdmFyIHR5cGUgPSAkLnR5cGUoaXRlcmFibGUpOwotICBpZiAodHlwZSA9PSAnb2JqZWN0JykgewotICAgIGZvciAoIHZhciBrZXkgaW4gaXRlcmFibGUpCi0gICAgICBmbihpdGVyYWJsZVtrZXldLCBrZXkpOwotICB9IGVsc2UgewotICAgIGZvciAoIHZhciBpID0gMCwgbCA9IGl0ZXJhYmxlLmxlbmd0aDsgaSA8IGw7IGkrKykKLSAgICAgIGZuKGl0ZXJhYmxlW2ldLCBpKTsKLSAgfQotfTsKLQotJC5pbmRleE9mID0gZnVuY3Rpb24oYXJyYXksIGl0ZW0pIHsKLSAgaWYoQXJyYXkuaW5kZXhPZikgcmV0dXJuIGFycmF5LmluZGV4T2YoaXRlbSk7Ci0gIGZvcih2YXIgaT0wLGw9YXJyYXkubGVuZ3RoOyBpPGw7IGkrKykgewotICAgIGlmKGFycmF5W2ldID09PSBpdGVtKSByZXR1cm4gaTsKLSAgfQotICByZXR1cm4gLTE7Ci19OwotCi0vKgotICBNZXRob2Q6IG1hcAotICAKLSAgTWFwcyBvciBjb2xsZWN0cyBhbiBhcnJheSBieSBhcHBseWluZyAqZiouCi0gIAotICBQYXJhbWV0ZXJzOgotICAKLSAgYXJyYXkgLSAoYXJyYXkpIFRoZSBvcmlnaW5hbCBhcnJheS4KLSAgZiAtIChmdW5jdGlvbikgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBhcnJheSBlbGVtZW50cy4KLSAgCi0gIEV4YW1wbGU6Ci0gIChzdGFydCBjb2RlIGpzKQotICAkaml0LnV0aWwubWFwKFszLCA0LCA1XSwgZnVuY3Rpb24obikgeyByZXR1cm4gbipuOyB9KTsgLy9bOSwgMTYsIDI1XQotICAoZW5kIGNvZGUpCi0qLwotJC5tYXAgPSBmdW5jdGlvbihhcnJheSwgZikgewotICB2YXIgYW5zID0gW107Ci0gICQuZWFjaChhcnJheSwgZnVuY3Rpb24oZWxlbSwgaSkgewotICAgIGFucy5wdXNoKGYoZWxlbSwgaSkpOwotICB9KTsKLSAgcmV0dXJuIGFuczsKLX07Ci0KLS8qCi0gIE1ldGhvZDogcmVkdWNlCi0gIAotICBJdGVyYXRpdmVseSBhcHBsaWVzIHRoZSBiaW5hcnkgZnVuY3Rpb24gKmYqIHN0b3JpbmcgdGhlIHJlc3VsdCBpbiBhbiBhY2N1bXVsYXRvci4KLSAgCi0gIFBhcmFtZXRlcnM6Ci0gIAotICBhcnJheSAtIChhcnJheSkgVGhlIG9yaWdpbmFsIGFycmF5LgotICBmIC0gKGZ1bmN0aW9uKSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFycmF5IGVsZW1lbnRzLgotICBvcHQgLSAob3B0aW9uYWx8bWl4ZWQpIFRoZSBzdGFydGluZyB2YWx1ZSBmb3IgdGhlIGFjdW11bGF0b3IuCi0gIAotICBFeGFtcGxlOgotICAoc3RhcnQgY29kZSBqcykKLSAgJGppdC51dGlsLnJlZHVjZShbMywgNCwgNV0sIGZ1bmN0aW9uKHgsIHkpIHsgcmV0dXJuIHggKyB5OyB9LCAwKTsgLy8xMgotICAoZW5kIGNvZGUpCi0qLwotJC5yZWR1Y2UgPSBmdW5jdGlvbihhcnJheSwgZiwgb3B0KSB7Ci0gIHZhciBsID0gYXJyYXkubGVuZ3RoOwotICBpZihsPT0wKSByZXR1cm4gb3B0OwotICB2YXIgYWN1bSA9IGFyZ3VtZW50cy5sZW5ndGggPT0gMz8gb3B0IDogYXJyYXlbLS1sXTsKLSAgd2hpbGUobC0tKSB7Ci0gICAgYWN1bSA9IGYoYWN1bSwgYXJyYXlbbF0pOwotICB9Ci0gIHJldHVybiBhY3VtOwotfTsKLQotLyoKLSAgTWV0aG9kOiBtZXJnZQotICAKLSAgTWVyZ2VzIG4tb2JqZWN0cyBhbmQgdGhlaXIgc3ViLW9iamVjdHMgY3JlYXRpbmcgYSBuZXcsIGZyZXNoIG9iamVjdC4KLSAgCi0gIFBhcmFtZXRlcnM6Ci0gIAotICBBbiBhcmJpdHJhcnkgbnVtYmVyIG9mIG9iamVjdHMuCi0gIAotICBFeGFtcGxlOgotICAoc3RhcnQgY29kZSBqcykKLSAgJGppdC51dGlsLm1lcmdlKHsgJ2EnOiAxLCAnYic6IDIgfSwgeyAnYic6IDMsICdjJzogNCB9KTsgLy97ICdhJzoxLCAnYic6IDMsICdjJzogNCB9Ci0gIChlbmQgY29kZSkKLSovCi0kLm1lcmdlID0gZnVuY3Rpb24oKSB7Ci0gIHZhciBtaXggPSB7fTsKLSAgZm9yICggdmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgIHZhciBvYmplY3QgPSBhcmd1bWVudHNbaV07Ci0gICAgaWYgKCQudHlwZShvYmplY3QpICE9ICdvYmplY3QnKQotICAgICAgY29udGludWU7Ci0gICAgZm9yICggdmFyIGtleSBpbiBvYmplY3QpIHsKLSAgICAgIHZhciBvcCA9IG9iamVjdFtrZXldLCBtcCA9IG1peFtrZXldOwotICAgICAgbWl4W2tleV0gPSAobXAgJiYgJC50eXBlKG9wKSA9PSAnb2JqZWN0JyAmJiAkLnR5cGUobXApID09ICdvYmplY3QnKSA/ICQKLSAgICAgICAgICAubWVyZ2UobXAsIG9wKSA6ICQudW5saW5rKG9wKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIG1peDsKLX07Ci0KLSQudW5saW5rID0gZnVuY3Rpb24ob2JqZWN0KSB7Ci0gIHZhciB1bmxpbmtlZDsKLSAgc3dpdGNoICgkLnR5cGUob2JqZWN0KSkgewotICBjYXNlICdvYmplY3QnOgotICAgIHVubGlua2VkID0ge307Ci0gICAgZm9yICggdmFyIHAgaW4gb2JqZWN0KQotICAgICAgdW5saW5rZWRbcF0gPSAkLnVubGluayhvYmplY3RbcF0pOwotICAgIGJyZWFrOwotICBjYXNlICdhcnJheSc6Ci0gICAgdW5saW5rZWQgPSBbXTsKLSAgICBmb3IgKCB2YXIgaSA9IDAsIGwgPSBvYmplY3QubGVuZ3RoOyBpIDwgbDsgaSsrKQotICAgICAgdW5saW5rZWRbaV0gPSAkLnVubGluayhvYmplY3RbaV0pOwotICAgIGJyZWFrOwotICBkZWZhdWx0OgotICAgIHJldHVybiBvYmplY3Q7Ci0gIH0KLSAgcmV0dXJuIHVubGlua2VkOwotfTsKLQotJC56aXAgPSBmdW5jdGlvbigpIHsKLSAgaWYoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdOwotICBmb3IodmFyIGo9MCwgYW5zPVtdLCBsPWFyZ3VtZW50cy5sZW5ndGgsIG1sPWFyZ3VtZW50c1swXS5sZW5ndGg7IGo8bWw7IGorKykgewotICAgIGZvcih2YXIgaT0wLCByb3c9W107IGk8bDsgaSsrKSB7Ci0gICAgICByb3cucHVzaChhcmd1bWVudHNbaV1bal0pOwotICAgIH0KLSAgICBhbnMucHVzaChyb3cpOwotICB9Ci0gIHJldHVybiBhbnM7Ci19OwotCi0vKgotICBNZXRob2Q6IHJnYlRvSGV4Ci0gIAotICBDb252ZXJ0cyBhbiBSR0IgYXJyYXkgaW50byBhIEhleCBzdHJpbmcuCi0gIAotICBQYXJhbWV0ZXJzOgotICAKLSAgc3JjQXJyYXkgLSAoYXJyYXkpIEFuIGFycmF5IHdpdGggUiwgRyBhbmQgQiB2YWx1ZXMKLSAgCi0gIEV4YW1wbGU6Ci0gIChzdGFydCBjb2RlIGpzKQotICAkaml0LnV0aWwucmdiVG9IZXgoWzI1NSwgMjU1LCAyNTVdKTsgLy8nI2ZmZmZmZicKLSAgKGVuZCBjb2RlKQotKi8KLSQucmdiVG9IZXggPSBmdW5jdGlvbihzcmNBcnJheSwgYXJyYXkpIHsKLSAgaWYgKHNyY0FycmF5Lmxlbmd0aCA8IDMpCi0gICAgcmV0dXJuIG51bGw7Ci0gIGlmIChzcmNBcnJheS5sZW5ndGggPT0gNCAmJiBzcmNBcnJheVszXSA9PSAwICYmICFhcnJheSkKLSAgICByZXR1cm4gJ3RyYW5zcGFyZW50JzsKLSAgdmFyIGhleCA9IFtdOwotICBmb3IgKCB2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHsKLSAgICB2YXIgYml0ID0gKHNyY0FycmF5W2ldIC0gMCkudG9TdHJpbmcoMTYpOwotICAgIGhleC5wdXNoKGJpdC5sZW5ndGggPT0gMSA/ICcwJyArIGJpdCA6IGJpdCk7Ci0gIH0KLSAgcmV0dXJuIGFycmF5ID8gaGV4IDogJyMnICsgaGV4LmpvaW4oJycpOwotfTsKLQotLyoKLSAgTWV0aG9kOiBoZXhUb1JnYgotICAKLSAgQ29udmVydHMgYW4gSGV4IGNvbG9yIHN0cmluZyBpbnRvIGFuIFJHQiBhcnJheS4KLSAgCi0gIFBhcmFtZXRlcnM6Ci0gIAotICBoZXggLSAoc3RyaW5nKSBBIGNvbG9yIGhleCBzdHJpbmcuCi0gIAotICBFeGFtcGxlOgotICAoc3RhcnQgY29kZSBqcykKLSAgJGppdC51dGlsLmhleFRvUmdiKCcjZmZmJyk7IC8vWzI1NSwgMjU1LCAyNTVdCi0gIChlbmQgY29kZSkKLSovCi0kLmhleFRvUmdiID0gZnVuY3Rpb24oaGV4KSB7Ci0gIGlmIChoZXgubGVuZ3RoICE9IDcpIHsKLSAgICBoZXggPSBoZXgubWF0Y2goL14jPyhcd3sxLDJ9KShcd3sxLDJ9KShcd3sxLDJ9KSQvKTsKLSAgICBoZXguc2hpZnQoKTsKLSAgICBpZiAoaGV4Lmxlbmd0aCAhPSAzKQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgdmFyIHJnYiA9IFtdOwotICAgIGZvciAoIHZhciBpID0gMDsgaSA8IDM7IGkrKykgewotICAgICAgdmFyIHZhbHVlID0gaGV4W2ldOwotICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAxKQotICAgICAgICB2YWx1ZSArPSB2YWx1ZTsKLSAgICAgIHJnYi5wdXNoKHBhcnNlSW50KHZhbHVlLCAxNikpOwotICAgIH0KLSAgICByZXR1cm4gcmdiOwotICB9IGVsc2UgewotICAgIGhleCA9IHBhcnNlSW50KGhleC5zbGljZSgxKSwgMTYpOwotICAgIHJldHVybiBbIGhleCA+PiAxNiwgaGV4ID4+IDggJiAweGZmLCBoZXggJiAweGZmIF07Ci0gIH0KLX07Ci0KLSQuZGVzdHJveSA9IGZ1bmN0aW9uKGVsZW0pIHsKLSAgJC5jbGVhbihlbGVtKTsKLSAgaWYgKGVsZW0ucGFyZW50Tm9kZSkKLSAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSk7Ci0gIGlmIChlbGVtLmNsZWFyQXR0cmlidXRlcykKLSAgICBlbGVtLmNsZWFyQXR0cmlidXRlcygpOwotfTsKLQotJC5jbGVhbiA9IGZ1bmN0aW9uKGVsZW0pIHsKLSAgZm9yICh2YXIgY2ggPSBlbGVtLmNoaWxkTm9kZXMsIGkgPSAwLCBsID0gY2gubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgJC5kZXN0cm95KGNoW2ldKTsKLSAgfQotfTsKLQotLyoKLSAgTWV0aG9kOiBhZGRFdmVudAotICAKLSAgQ3Jvc3MtYnJvd3NlciBhZGQgZXZlbnQgbGlzdGVuZXIuCi0gIAotICBQYXJhbWV0ZXJzOgotICAKLSAgb2JqIC0gKG9iaikgVGhlIEVsZW1lbnQgdG8gYXR0YWNoIHRoZSBsaXN0ZW5lciB0by4KLSAgdHlwZSAtIChzdHJpbmcpIFRoZSBsaXN0ZW5lciB0eXBlLiBGb3IgZXhhbXBsZSAnY2xpY2snLCBvciAnbW91c2Vtb3ZlJy4KLSAgZm4gLSAoZnVuY3Rpb24pIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSB1c2VkIHdoZW4gdGhlIGV2ZW50IGlzIGZpcmVkLgotICAKLSAgRXhhbXBsZToKLSAgKHN0YXJ0IGNvZGUganMpCi0gICRqaXQudXRpbC5hZGRFdmVudChlbGVtLCAnY2xpY2snLCBmdW5jdGlvbigpeyBhbGVydCgnaGVsbG8nKTsgfSk7Ci0gIChlbmQgY29kZSkKLSovCi0kLmFkZEV2ZW50ID0gZnVuY3Rpb24ob2JqLCB0eXBlLCBmbikgewotICBpZiAob2JqLmFkZEV2ZW50TGlzdGVuZXIpCi0gICAgb2JqLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgZm4sIGZhbHNlKTsKLSAgZWxzZQotICAgIG9iai5hdHRhY2hFdmVudCgnb24nICsgdHlwZSwgZm4pOwotfTsKLQotJC5hZGRFdmVudHMgPSBmdW5jdGlvbihvYmosIHR5cGVPYmopIHsKLSAgZm9yKHZhciB0eXBlIGluIHR5cGVPYmopIHsKLSAgICAkLmFkZEV2ZW50KG9iaiwgdHlwZSwgdHlwZU9ialt0eXBlXSk7Ci0gIH0KLX07Ci0KLSQuaGFzQ2xhc3MgPSBmdW5jdGlvbihvYmosIGtsYXNzKSB7Ci0gIHJldHVybiAoJyAnICsgb2JqLmNsYXNzTmFtZSArICcgJykuaW5kZXhPZignICcgKyBrbGFzcyArICcgJykgPiAtMTsKLX07Ci0KLSQuYWRkQ2xhc3MgPSBmdW5jdGlvbihvYmosIGtsYXNzKSB7Ci0gIGlmICghJC5oYXNDbGFzcyhvYmosIGtsYXNzKSkKLSAgICBvYmouY2xhc3NOYW1lID0gKG9iai5jbGFzc05hbWUgKyAiICIgKyBrbGFzcyk7Ci19OwotCi0kLnJlbW92ZUNsYXNzID0gZnVuY3Rpb24ob2JqLCBrbGFzcykgewotICBvYmouY2xhc3NOYW1lID0gb2JqLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoCi0gICAgICAnKF58XFxzKScgKyBrbGFzcyArICcoPzpcXHN8JCknKSwgJyQxJyk7Ci19OwotCi0kLmdldFBvcyA9IGZ1bmN0aW9uKGVsZW0pIHsKLSAgdmFyIG9mZnNldCA9IGdldE9mZnNldHMoZWxlbSk7Ci0gIHZhciBzY3JvbGwgPSBnZXRTY3JvbGxzKGVsZW0pOwotICByZXR1cm4gewotICAgIHg6IG9mZnNldC54IC0gc2Nyb2xsLngsCi0gICAgeTogb2Zmc2V0LnkgLSBzY3JvbGwueQotICB9OwotCi0gIGZ1bmN0aW9uIGdldE9mZnNldHMoZWxlbSkgewotICAgIHZhciBwb3NpdGlvbiA9IHsKLSAgICAgIHg6IDAsCi0gICAgICB5OiAwCi0gICAgfTsKLSAgICB3aGlsZSAoZWxlbSAmJiAhaXNCb2R5KGVsZW0pKSB7Ci0gICAgICBwb3NpdGlvbi54ICs9IGVsZW0ub2Zmc2V0TGVmdDsKLSAgICAgIHBvc2l0aW9uLnkgKz0gZWxlbS5vZmZzZXRUb3A7Ci0gICAgICBlbGVtID0gZWxlbS5vZmZzZXRQYXJlbnQ7Ci0gICAgfQotICAgIHJldHVybiBwb3NpdGlvbjsKLSAgfQotCi0gIGZ1bmN0aW9uIGdldFNjcm9sbHMoZWxlbSkgewotICAgIHZhciBwb3NpdGlvbiA9IHsKLSAgICAgIHg6IDAsCi0gICAgICB5OiAwCi0gICAgfTsKLSAgICB3aGlsZSAoZWxlbSAmJiAhaXNCb2R5KGVsZW0pKSB7Ci0gICAgICBwb3NpdGlvbi54ICs9IGVsZW0uc2Nyb2xsTGVmdDsKLSAgICAgIHBvc2l0aW9uLnkgKz0gZWxlbS5zY3JvbGxUb3A7Ci0gICAgICBlbGVtID0gZWxlbS5wYXJlbnROb2RlOwotICAgIH0KLSAgICByZXR1cm4gcG9zaXRpb247Ci0gIH0KLQotICBmdW5jdGlvbiBpc0JvZHkoZWxlbWVudCkgewotICAgIHJldHVybiAoL14oPzpib2R5fGh0bWwpJC9pKS50ZXN0KGVsZW1lbnQudGFnTmFtZSk7Ci0gIH0KLX07Ci0KLSQuZXZlbnQgPSB7Ci0gIGdldDogZnVuY3Rpb24oZSwgd2luKSB7Ci0gICAgd2luID0gd2luIHx8IHdpbmRvdzsKLSAgICByZXR1cm4gZSB8fCB3aW4uZXZlbnQ7Ci0gIH0sCi0gIGdldFdoZWVsOiBmdW5jdGlvbihlKSB7Ci0gICAgcmV0dXJuIGUud2hlZWxEZWx0YT8gZS53aGVlbERlbHRhIC8gMTIwIDogLShlLmRldGFpbCB8fCAwKSAvIDM7Ci0gIH0sCi0gIGlzUmlnaHRDbGljazogZnVuY3Rpb24oZSkgewotICAgIHJldHVybiAoZS53aGljaCA9PSAzIHx8IGUuYnV0dG9uID09IDIpOwotICB9LAotICBnZXRQb3M6IGZ1bmN0aW9uKGUsIHdpbikgewotICAgIC8vIGdldCBtb3VzZSBwb3NpdGlvbgotICAgIHdpbiA9IHdpbiB8fCB3aW5kb3c7Ci0gICAgZSA9IGUgfHwgd2luLmV2ZW50OwotICAgIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7Ci0gICAgZG9jID0gZG9jLmRvY3VtZW50RWxlbWVudCB8fCBkb2MuYm9keTsKLSAgICAvL1RPRE8obmljbyk6IG1ha2UgdG91Y2ggZXZlbnQgaGFuZGxpbmcgYmV0dGVyCi0gICAgaWYoZS50b3VjaGVzICYmIGUudG91Y2hlcy5sZW5ndGgpIHsKLSAgICAgIGUgPSBlLnRvdWNoZXNbMF07Ci0gICAgfQotICAgIHZhciBwYWdlID0gewotICAgICAgeDogZS5wYWdlWCB8fCAoZS5jbGllbnRYICsgZG9jLnNjcm9sbExlZnQpLAotICAgICAgeTogZS5wYWdlWSB8fCAoZS5jbGllbnRZICsgZG9jLnNjcm9sbFRvcCkKLSAgICB9OwotICAgIHJldHVybiBwYWdlOwotICB9LAotICBzdG9wOiBmdW5jdGlvbihlKSB7Ci0gICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKSBlLnN0b3BQcm9wYWdhdGlvbigpOwotICAgIGUuY2FuY2VsQnViYmxlID0gdHJ1ZTsKLSAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkgZS5wcmV2ZW50RGVmYXVsdCgpOwotICAgIGVsc2UgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOwotICB9Ci19OwotCi0kaml0LnV0aWwgPSAkaml0LmlkID0gJDsKLQotdmFyIENsYXNzID0gZnVuY3Rpb24ocHJvcGVydGllcykgewotICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCB7fTsKLSAgdmFyIGtsYXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgZm9yICggdmFyIGtleSBpbiB0aGlzKSB7Ci0gICAgICBpZiAodHlwZW9mIHRoaXNba2V5XSAhPSAnZnVuY3Rpb24nKQotICAgICAgICB0aGlzW2tleV0gPSAkLnVubGluayh0aGlzW2tleV0pOwotICAgIH0KLSAgICB0aGlzLmNvbnN0cnVjdG9yID0ga2xhc3M7Ci0gICAgaWYgKENsYXNzLnByb3RvdHlwaW5nKQotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgdmFyIGluc3RhbmNlID0gdGhpcy5pbml0aWFsaXplID8gdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKLSAgICAgICAgOiB0aGlzOwotICAgIC8vdHlwaXplCi0gICAgdGhpcy4kJGZhbWlseSA9ICdjbGFzcyc7Ci0gICAgcmV0dXJuIGluc3RhbmNlOwotICB9OwotCi0gIGZvciAoIHZhciBtdXRhdG9yIGluIENsYXNzLk11dGF0b3JzKSB7Ci0gICAgaWYgKCFwcm9wZXJ0aWVzW211dGF0b3JdKQotICAgICAgY29udGludWU7Ci0gICAgcHJvcGVydGllcyA9IENsYXNzLk11dGF0b3JzW211dGF0b3JdKHByb3BlcnRpZXMsIHByb3BlcnRpZXNbbXV0YXRvcl0pOwotICAgIGRlbGV0ZSBwcm9wZXJ0aWVzW211dGF0b3JdOwotICB9Ci0KLSAgJC5leHRlbmQoa2xhc3MsIHRoaXMpOwotICBrbGFzcy5jb25zdHJ1Y3RvciA9IENsYXNzOwotICBrbGFzcy5wcm90b3R5cGUgPSBwcm9wZXJ0aWVzOwotICByZXR1cm4ga2xhc3M7Ci19OwotCi1DbGFzcy5NdXRhdG9ycyA9IHsKLQotICBJbXBsZW1lbnRzOiBmdW5jdGlvbihzZWxmLCBrbGFzc2VzKSB7Ci0gICAgJC5lYWNoKCQuc3BsYXQoa2xhc3NlcyksIGZ1bmN0aW9uKGtsYXNzKSB7Ci0gICAgICBDbGFzcy5wcm90b3R5cGluZyA9IGtsYXNzOwotICAgICAgdmFyIGluc3RhbmNlID0gKHR5cGVvZiBrbGFzcyA9PSAnZnVuY3Rpb24nKSA/IG5ldyBrbGFzcyA6IGtsYXNzOwotICAgICAgZm9yICggdmFyIHByb3AgaW4gaW5zdGFuY2UpIHsKLSAgICAgICAgaWYgKCEocHJvcCBpbiBzZWxmKSkgewotICAgICAgICAgIHNlbGZbcHJvcF0gPSBpbnN0YW5jZVtwcm9wXTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZGVsZXRlIENsYXNzLnByb3RvdHlwaW5nOwotICAgIH0pOwotICAgIHJldHVybiBzZWxmOwotICB9Ci0KLX07Ci0KLSQuZXh0ZW5kKENsYXNzLCB7Ci0KLSAgaW5oZXJpdDogZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0aWVzKSB7Ci0gICAgZm9yICggdmFyIGtleSBpbiBwcm9wZXJ0aWVzKSB7Ci0gICAgICB2YXIgb3ZlcnJpZGUgPSBwcm9wZXJ0aWVzW2tleV07Ci0gICAgICB2YXIgcHJldmlvdXMgPSBvYmplY3Rba2V5XTsKLSAgICAgIHZhciB0eXBlID0gJC50eXBlKG92ZXJyaWRlKTsKLSAgICAgIGlmIChwcmV2aW91cyAmJiB0eXBlID09ICdmdW5jdGlvbicpIHsKLSAgICAgICAgaWYgKG92ZXJyaWRlICE9IHByZXZpb3VzKSB7Ci0gICAgICAgICAgQ2xhc3Mub3ZlcnJpZGUob2JqZWN0LCBrZXksIG92ZXJyaWRlKTsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIGlmICh0eXBlID09ICdvYmplY3QnKSB7Ci0gICAgICAgIG9iamVjdFtrZXldID0gJC5tZXJnZShwcmV2aW91cywgb3ZlcnJpZGUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgb2JqZWN0W2tleV0gPSBvdmVycmlkZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG9iamVjdDsKLSAgfSwKLQotICBvdmVycmlkZTogZnVuY3Rpb24ob2JqZWN0LCBuYW1lLCBtZXRob2QpIHsKLSAgICB2YXIgcGFyZW50ID0gQ2xhc3MucHJvdG90eXBpbmc7Ci0gICAgaWYgKHBhcmVudCAmJiBvYmplY3RbbmFtZV0gIT0gcGFyZW50W25hbWVdKQotICAgICAgcGFyZW50ID0gbnVsbDsKLSAgICB2YXIgb3ZlcnJpZGUgPSBmdW5jdGlvbigpIHsKLSAgICAgIHZhciBwcmV2aW91cyA9IHRoaXMucGFyZW50OwotICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQgPyBwYXJlbnRbbmFtZV0gOiBvYmplY3RbbmFtZV07Ci0gICAgICB2YXIgdmFsdWUgPSBtZXRob2QuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgIHRoaXMucGFyZW50ID0gcHJldmlvdXM7Ci0gICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfTsKLSAgICBvYmplY3RbbmFtZV0gPSBvdmVycmlkZTsKLSAgfQotCi19KTsKLQotQ2xhc3MucHJvdG90eXBlLmltcGxlbWVudCA9IGZ1bmN0aW9uKCkgewotICB2YXIgcHJvdG8gPSB0aGlzLnByb3RvdHlwZTsKLSAgJC5lYWNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyB8fCBbXSksIGZ1bmN0aW9uKHByb3BlcnRpZXMpIHsKLSAgICBDbGFzcy5pbmhlcml0KHByb3RvLCBwcm9wZXJ0aWVzKTsKLSAgfSk7Ci0gIHJldHVybiB0aGlzOwotfTsKLQotJGppdC5DbGFzcyA9IENsYXNzOwotCi0vKgotICBPYmplY3Q6ICRqaXQuanNvbgotICAKLSAgUHJvdmlkZXMgSlNPTiB1dGlsaXR5IGZ1bmN0aW9ucy4KLSAgCi0gIE1vc3Qgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSBKU09OLXRyZWUgdHJhdmVyc2FsIGFuZCBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgotKi8KLSRqaXQuanNvbiA9IHsKLSAgLyoKLSAgICAgTWV0aG9kOiBwcnVuZQotICAKLSAgICAgQ2xlYXJzIGFsbCB0cmVlIG5vZGVzIGhhdmluZyBkZXB0aCBncmVhdGVyIHRoYW4gbWF4TGV2ZWwuCi0gIAotICAgICBQYXJhbWV0ZXJzOgotICAKLSAgICAgICAgdHJlZSAtIChvYmplY3QpIEEgSlNPTiB0cmVlIG9iamVjdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSA8TG9hZGVyLmxvYWRKU09OPi4KLSAgICAgICAgbWF4TGV2ZWwgLSAobnVtYmVyKSBBbiBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIG1heGltdW0gbGV2ZWwgYWxsb3dlZCBmb3IgdGhpcyB0cmVlLiBBbGwgbm9kZXMgaGF2aW5nIGRlcHRoIGdyZWF0ZXIgdGhhbiBtYXggbGV2ZWwgd2lsbCBiZSBkZWxldGVkLgotCi0gICovCi0gIHBydW5lOiBmdW5jdGlvbih0cmVlLCBtYXhMZXZlbCkgewotICAgIHRoaXMuZWFjaCh0cmVlLCBmdW5jdGlvbihlbGVtLCBpKSB7Ci0gICAgICBpZiAoaSA9PSBtYXhMZXZlbCAmJiBlbGVtLmNoaWxkcmVuKSB7Ci0gICAgICAgIGRlbGV0ZSBlbGVtLmNoaWxkcmVuOwotICAgICAgICBlbGVtLmNoaWxkcmVuID0gW107Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0sCi0gIC8qCi0gICAgIE1ldGhvZDogZ2V0UGFyZW50Ci0gIAotICAgICBSZXR1cm5zIHRoZSBwYXJlbnQgbm9kZSBvZiB0aGUgbm9kZSBoYXZpbmcgX2lkXyBhcyBpZC4KLSAgCi0gICAgIFBhcmFtZXRlcnM6Ci0gIAotICAgICAgICB0cmVlIC0gKG9iamVjdCkgQSBKU09OIHRyZWUgb2JqZWN0LiBTZWUgYWxzbyA8TG9hZGVyLmxvYWRKU09OPi4KLSAgICAgICAgaWQgLSAoc3RyaW5nKSBUaGUgX2lkXyBvZiB0aGUgY2hpbGQgbm9kZSB3aG9zZSBwYXJlbnQgd2lsbCBiZSByZXR1cm5lZC4KLQotICAgIFJldHVybnM6Ci0KLSAgICAgICAgQSB0cmVlIEpTT04gbm9kZSBpZiBhbnksIG9yIGZhbHNlIG90aGVyd2lzZS4KLSAgCi0gICovCi0gIGdldFBhcmVudDogZnVuY3Rpb24odHJlZSwgaWQpIHsKLSAgICBpZiAodHJlZS5pZCA9PSBpZCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2YXIgY2ggPSB0cmVlLmNoaWxkcmVuOwotICAgIGlmIChjaCAmJiBjaC5sZW5ndGggPiAwKSB7Ci0gICAgICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBjaC5sZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoY2hbaV0uaWQgPT0gaWQpCi0gICAgICAgICAgcmV0dXJuIHRyZWU7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHZhciBhbnMgPSB0aGlzLmdldFBhcmVudChjaFtpXSwgaWQpOwotICAgICAgICAgIGlmIChhbnMpCi0gICAgICAgICAgICByZXR1cm4gYW5zOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfSwKLSAgLyoKLSAgICAgTWV0aG9kOiBnZXRTdWJ0cmVlCi0gIAotICAgICBSZXR1cm5zIHRoZSBzdWJ0cmVlIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gaWQuCi0gIAotICAgICBQYXJhbWV0ZXJzOgotICAKLSAgICAgICAgdHJlZSAtIChvYmplY3QpIEEgSlNPTiB0cmVlIG9iamVjdC4gU2VlIGFsc28gPExvYWRlci5sb2FkSlNPTj4uCi0gICAgICAgIGlkIC0gKHN0cmluZykgQSBub2RlICp1bmlxdWUqIGlkZW50aWZpZXIuCi0gIAotICAgICBSZXR1cm5zOgotICAKLSAgICAgICAgQSBzdWJ0cmVlIGhhdmluZyBhIHJvb3Qgbm9kZSBtYXRjaGluZyB0aGUgZ2l2ZW4gaWQuIFJldHVybnMgbnVsbCBpZiBubyBzdWJ0cmVlIG1hdGNoaW5nIHRoZSBpZCBpcyBmb3VuZC4KLQotICAqLwotICBnZXRTdWJ0cmVlOiBmdW5jdGlvbih0cmVlLCBpZCkgewotICAgIGlmICh0cmVlLmlkID09IGlkKQotICAgICAgcmV0dXJuIHRyZWU7Ci0gICAgZm9yICggdmFyIGkgPSAwLCBjaCA9IHRyZWUuY2hpbGRyZW47IGNoICYmIGkgPCBjaC5sZW5ndGg7IGkrKykgewotICAgICAgdmFyIHQgPSB0aGlzLmdldFN1YnRyZWUoY2hbaV0sIGlkKTsKLSAgICAgIGlmICh0ICE9IG51bGwpCi0gICAgICAgIHJldHVybiB0OwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLSAgfSwKLSAgLyoKLSAgICAgTWV0aG9kOiBlYWNoTGV2ZWwKLSAgCi0gICAgICBJdGVyYXRlcyBvbiB0cmVlIG5vZGVzIHdpdGggcmVsYXRpdmUgZGVwdGggbGVzcyBvciBlcXVhbCB0aGFuIGEgc3BlY2lmaWVkIGxldmVsLgotICAKLSAgICAgUGFyYW1ldGVyczoKLSAgCi0gICAgICAgIHRyZWUgLSAob2JqZWN0KSBBIEpTT04gdHJlZSBvciBzdWJ0cmVlLiBTZWUgYWxzbyA8TG9hZGVyLmxvYWRKU09OPi4KLSAgICAgICAgaW5pdExldmVsIC0gKG51bWJlcikgQW4gaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbml0aWFsIHJlbGF0aXZlIGxldmVsLiBVc3VhbGx5IHplcm8uCi0gICAgICAgIHRvTGV2ZWwgLSAobnVtYmVyKSBBbiBpbnRlZ2VyIHNwZWNpZnlpbmcgYSB0b3AgbGV2ZWwuIFRoaXMgbWV0aG9kIHdpbGwgaXRlcmF0ZSBvbmx5IHRocm91Z2ggbm9kZXMgd2l0aCBkZXB0aCBsZXNzIHRoYW4gb3IgZXF1YWwgdGhpcyBudW1iZXIuCi0gICAgICAgIGFjdGlvbiAtIChmdW5jdGlvbikgQSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGEgbm9kZSBhbmQgYW4gaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBhY3R1YWwgbGV2ZWwgb2YgdGhlIG5vZGUuCi0gICAgICAgICAgCi0gICAgRXhhbXBsZToKLSAgIChzdGFydCBjb2RlIGpzKQotICAgICAkaml0Lmpzb24uZWFjaExldmVsKHRyZWUsIDAsIDMsIGZ1bmN0aW9uKG5vZGUsIGRlcHRoKSB7Ci0gICAgICAgIGFsZXJ0KG5vZGUubmFtZSArICcgJyArIGRlcHRoKTsKLSAgICAgfSk7Ci0gICAoZW5kIGNvZGUpCi0gICovCi0gIGVhY2hMZXZlbDogZnVuY3Rpb24odHJlZSwgaW5pdExldmVsLCB0b0xldmVsLCBhY3Rpb24pIHsKLSAgICBpZiAoaW5pdExldmVsIDw9IHRvTGV2ZWwpIHsKLSAgICAgIGFjdGlvbih0cmVlLCBpbml0TGV2ZWwpOwotICAgICAgaWYoIXRyZWUuY2hpbGRyZW4pIHJldHVybjsKLSAgICAgIGZvciAoIHZhciBpID0gMCwgY2ggPSB0cmVlLmNoaWxkcmVuOyBpIDwgY2gubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdGhpcy5lYWNoTGV2ZWwoY2hbaV0sIGluaXRMZXZlbCArIDEsIHRvTGV2ZWwsIGFjdGlvbik7Ci0gICAgICB9Ci0gICAgfQotICB9LAotICAvKgotICAgICBNZXRob2Q6IGVhY2gKLSAgCi0gICAgICBBIEpTT04gdHJlZSBpdGVyYXRvci4KLSAgCi0gICAgIFBhcmFtZXRlcnM6Ci0gIAotICAgICAgICB0cmVlIC0gKG9iamVjdCkgQSBKU09OIHRyZWUgb3Igc3VidHJlZS4gU2VlIGFsc28gPExvYWRlci5sb2FkSlNPTj4uCi0gICAgICAgIGFjdGlvbiAtIChmdW5jdGlvbikgQSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGEgbm9kZS4KLQotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAkaml0Lmpzb24uZWFjaCh0cmVlLCBmdW5jdGlvbihub2RlKSB7Ci0gICAgICAgIGFsZXJ0KG5vZGUubmFtZSk7Ci0gICAgICB9KTsKLSAgICAoZW5kIGNvZGUpCi0gICAgICAgICAgCi0gICovCi0gIGVhY2g6IGZ1bmN0aW9uKHRyZWUsIGFjdGlvbikgewotICAgIHRoaXMuZWFjaExldmVsKHRyZWUsIDAsIE51bWJlci5NQVhfVkFMVUUsIGFjdGlvbik7Ci0gIH0KLX07Ci0KLQotLyoKLSAgICAgQW4gb2JqZWN0IGNvbnRhaW5pbmcgbXVsdGlwbGUgdHlwZSBvZiB0cmFuc2Zvcm1hdGlvbnMuIAotKi8KLQotJGppdC5UcmFucyA9IHsKLSAgJGV4dGVuZDogdHJ1ZSwKLSAgCi0gIGxpbmVhcjogZnVuY3Rpb24ocCl7Ci0gICAgcmV0dXJuIHA7Ci0gIH0KLX07Ci0KLXZhciBUcmFucyA9ICRqaXQuVHJhbnM7Ci0KLShmdW5jdGlvbigpewotCi0gIHZhciBtYWtlVHJhbnMgPSBmdW5jdGlvbih0cmFuc2l0aW9uLCBwYXJhbXMpewotICAgIHBhcmFtcyA9ICQuc3BsYXQocGFyYW1zKTsKLSAgICByZXR1cm4gJC5leHRlbmQodHJhbnNpdGlvbiwgewotICAgICAgZWFzZUluOiBmdW5jdGlvbihwb3MpewotICAgICAgICByZXR1cm4gdHJhbnNpdGlvbihwb3MsIHBhcmFtcyk7Ci0gICAgICB9LAotICAgICAgZWFzZU91dDogZnVuY3Rpb24ocG9zKXsKLSAgICAgICAgcmV0dXJuIDEgLSB0cmFuc2l0aW9uKDEgLSBwb3MsIHBhcmFtcyk7Ci0gICAgICB9LAotICAgICAgZWFzZUluT3V0OiBmdW5jdGlvbihwb3MpewotICAgICAgICByZXR1cm4gKHBvcyA8PSAwLjUpPyB0cmFuc2l0aW9uKDIgKiBwb3MsIHBhcmFtcykgLyAyIDogKDIgLSB0cmFuc2l0aW9uKAotICAgICAgICAgICAgMiAqICgxIC0gcG9zKSwgcGFyYW1zKSkgLyAyOwotICAgICAgfQotICAgIH0pOwotICB9OwotCi0gIHZhciB0cmFuc2l0aW9ucyA9IHsKLQotICAgIFBvdzogZnVuY3Rpb24ocCwgeCl7Ci0gICAgICByZXR1cm4gTWF0aC5wb3cocCwgeFswXSB8fCA2KTsKLSAgICB9LAotCi0gICAgRXhwbzogZnVuY3Rpb24ocCl7Ci0gICAgICByZXR1cm4gTWF0aC5wb3coMiwgOCAqIChwIC0gMSkpOwotICAgIH0sCi0KLSAgICBDaXJjOiBmdW5jdGlvbihwKXsKLSAgICAgIHJldHVybiAxIC0gTWF0aC5zaW4oTWF0aC5hY29zKHApKTsKLSAgICB9LAotCi0gICAgU2luZTogZnVuY3Rpb24ocCl7Ci0gICAgICByZXR1cm4gMSAtIE1hdGguc2luKCgxIC0gcCkgKiBNYXRoLlBJIC8gMik7Ci0gICAgfSwKLQotICAgIEJhY2s6IGZ1bmN0aW9uKHAsIHgpewotICAgICAgeCA9IHhbMF0gfHwgMS42MTg7Ci0gICAgICByZXR1cm4gTWF0aC5wb3cocCwgMikgKiAoKHggKyAxKSAqIHAgLSB4KTsKLSAgICB9LAotCi0gICAgQm91bmNlOiBmdW5jdGlvbihwKXsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIGZvciAoIHZhciBhID0gMCwgYiA9IDE7IDE7IGEgKz0gYiwgYiAvPSAyKSB7Ci0gICAgICAgIGlmIChwID49ICg3IC0gNCAqIGEpIC8gMTEpIHsKLSAgICAgICAgICB2YWx1ZSA9IGIgKiBiIC0gTWF0aC5wb3coKDExIC0gNiAqIGEgLSAxMSAqIHApIC8gNCwgMik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9LAotCi0gICAgRWxhc3RpYzogZnVuY3Rpb24ocCwgeCl7Ci0gICAgICByZXR1cm4gTWF0aC5wb3coMiwgMTAgKiAtLXApCi0gICAgICAgICAgKiBNYXRoLmNvcygyMCAqIHAgKiBNYXRoLlBJICogKHhbMF0gfHwgMSkgLyAzKTsKLSAgICB9Ci0KLSAgfTsKLQotICAkLmVhY2godHJhbnNpdGlvbnMsIGZ1bmN0aW9uKHZhbCwga2V5KXsKLSAgICBUcmFuc1trZXldID0gbWFrZVRyYW5zKHZhbCk7Ci0gIH0pOwotCi0gICQuZWFjaCggWwotICAgICAgJ1F1YWQnLCAnQ3ViaWMnLCAnUXVhcnQnLCAnUXVpbnQnCi0gIF0sIGZ1bmN0aW9uKGVsZW0sIGkpewotICAgIFRyYW5zW2VsZW1dID0gbWFrZVRyYW5zKGZ1bmN0aW9uKHApewotICAgICAgcmV0dXJuIE1hdGgucG93KHAsIFsKLSAgICAgICAgaSArIDIKLSAgICAgIF0pOwotICAgIH0pOwotICB9KTsKLQotfSkoKTsKLQotLyoKLSAgIEEgQ2xhc3MgdGhhdCBjYW4gcGVyZm9ybSBhbmltYXRpb25zIGZvciBnZW5lcmljIG9iamVjdHMuCi0KLSAgIElmIHlvdSBhcmUgbG9va2luZyBmb3IgYW5pbWF0aW9uIHRyYW5zaXRpb25zIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgPFRyYW5zPiBvYmplY3QuCi0KLSAgIFVzZWQgYnk6Ci0KLSAgIDxHcmFwaC5QbG90PgotICAgCi0gICBCYXNlZCBvbjoKLSAgIAotICAgVGhlIEFuaW1hdGlvbiBjbGFzcyBpcyBiYXNlZCBpbiB0aGUgTW9vVG9vbHMgRnJhbWV3b3JrIDxodHRwOi8vbW9vdG9vbHMubmV0Pi4gQ29weXJpZ2h0IChjKSAyMDA2LTIwMDkgVmFsZXJpbyBQcm9pZXR0aSwgPGh0dHA6Ly9tYWQ0bWlsay5uZXQvPi4gTUlUIGxpY2Vuc2UgPGh0dHA6Ly9tb290b29scy5uZXQvbGljZW5zZS50eHQ+LgotCi0qLwotCi12YXIgQW5pbWF0aW9uID0gbmV3IENsYXNzKCB7Ci0KLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucyl7Ci0gICAgdGhpcy5zZXRPcHRpb25zKG9wdGlvbnMpOwotICB9LAotCi0gIHNldE9wdGlvbnM6IGZ1bmN0aW9uKG9wdGlvbnMpewotICAgIHZhciBvcHQgPSB7Ci0gICAgICBkdXJhdGlvbjogMjUwMCwKLSAgICAgIGZwczogNDAsCi0gICAgICB0cmFuc2l0aW9uOiBUcmFucy5RdWFydC5lYXNlSW5PdXQsCi0gICAgICBjb21wdXRlOiAkLmVtcHR5LAotICAgICAgY29tcGxldGU6ICQuZW1wdHksCi0gICAgICBsaW5rOiAnaWdub3JlJwotICAgIH07Ci0gICAgdGhpcy5vcHQgPSAkLm1lcmdlKG9wdCwgb3B0aW9ucyB8fCB7fSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgc3RlcDogZnVuY3Rpb24oKXsKLSAgICB2YXIgdGltZSA9ICQudGltZSgpLCBvcHQgPSB0aGlzLm9wdDsKLSAgICBpZiAodGltZSA8IHRoaXMudGltZSArIG9wdC5kdXJhdGlvbikgewotICAgICAgdmFyIGRlbHRhID0gb3B0LnRyYW5zaXRpb24oKHRpbWUgLSB0aGlzLnRpbWUpIC8gb3B0LmR1cmF0aW9uKTsKLSAgICAgIG9wdC5jb21wdXRlKGRlbHRhKTsKLSAgICB9IGVsc2UgewotICAgICAgdGhpcy50aW1lciA9IGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7Ci0gICAgICBvcHQuY29tcHV0ZSgxKTsKLSAgICAgIG9wdC5jb21wbGV0ZSgpOwotICAgIH0KLSAgfSwKLQotICBzdGFydDogZnVuY3Rpb24oKXsKLSAgICBpZiAoIXRoaXMuY2hlY2soKSkKLSAgICAgIHJldHVybiB0aGlzOwotICAgIHRoaXMudGltZSA9IDA7Ci0gICAgdGhpcy5zdGFydFRpbWVyKCk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgc3RhcnRUaW1lcjogZnVuY3Rpb24oKXsKLSAgICB2YXIgdGhhdCA9IHRoaXMsIGZwcyA9IHRoaXMub3B0LmZwczsKLSAgICBpZiAodGhpcy50aW1lcikKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB0aGlzLnRpbWUgPSAkLnRpbWUoKSAtIHRoaXMudGltZTsKLSAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7Ci0gICAgICB0aGF0LnN0ZXAoKTsKLSAgICB9KSwgTWF0aC5yb3VuZCgxMDAwIC8gZnBzKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0sCi0KLSAgcGF1c2U6IGZ1bmN0aW9uKCl7Ci0gICAgdGhpcy5zdG9wVGltZXIoKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfSwKLQotICByZXN1bWU6IGZ1bmN0aW9uKCl7Ci0gICAgdGhpcy5zdGFydFRpbWVyKCk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0sCi0KLSAgc3RvcFRpbWVyOiBmdW5jdGlvbigpewotICAgIGlmICghdGhpcy50aW1lcikKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB0aGlzLnRpbWUgPSAkLnRpbWUoKSAtIHRoaXMudGltZTsKLSAgICB0aGlzLnRpbWVyID0gY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfSwKLQotICBjaGVjazogZnVuY3Rpb24oKXsKLSAgICBpZiAoIXRoaXMudGltZXIpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAodGhpcy5vcHQubGluayA9PSAnY2FuY2VsJykgewotICAgICAgdGhpcy5zdG9wVGltZXIoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0pOwotCi0KLXZhciBPcHRpb25zID0gZnVuY3Rpb24oKSB7Ci0gIHZhciBhcmdzID0gYXJndW1lbnRzOwotICBmb3IodmFyIGk9MCwgbD1hcmdzLmxlbmd0aCwgYW5zPXt9OyBpPGw7IGkrKykgewotICAgIHZhciBvcHQgPSBPcHRpb25zW2FyZ3NbaV1dOwotICAgIGlmKG9wdC4kZXh0ZW5kKSB7Ci0gICAgICAkLmV4dGVuZChhbnMsIG9wdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGFuc1thcmdzW2ldXSA9IG9wdDsgIAotICAgIH0KLSAgfQotICByZXR1cm4gYW5zOwotfTsKLQotLyoKLSAqIEZpbGU6IE9wdGlvbnMuQXJlYUNoYXJ0LmpzCi0gKgotKi8KLQotLyoKLSAgT2JqZWN0OiBPcHRpb25zLkFyZWFDaGFydAotICAKLSAgPEFyZWFDaGFydD4gb3B0aW9ucy4gCi0gIE90aGVyIG9wdGlvbnMgaW5jbHVkZWQgaW4gdGhlIEFyZWFDaGFydCBhcmUgPE9wdGlvbnMuQ2FudmFzPiwgPE9wdGlvbnMuTGFiZWw+LCA8T3B0aW9ucy5NYXJnaW4+LCA8T3B0aW9ucy5UaXBzPiBhbmQgPE9wdGlvbnMuRXZlbnRzPi4KLSAgCi0gIFN5bnRheDoKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotCi0gIE9wdGlvbnMuQXJlYUNoYXJ0ID0gewotICAgIGFuaW1hdGU6IHRydWUsCi0gICAgbGFiZWxPZmZzZXQ6IDMsCi0gICAgdHlwZTogJ3N0YWNrZWQnLAotICAgIHNlbGVjdE9uSG92ZXI6IHRydWUsCi0gICAgc2hvd0FnZ3JlZ2F0ZXM6IHRydWUsCi0gICAgc2hvd0xhYmVsczogdHJ1ZSwKLSAgICBmaWx0ZXJPbkNsaWNrOiBmYWxzZSwKLSAgICByZXN0b3JlT25SaWdodENsaWNrOiBmYWxzZQotICB9OwotICAKLSAgKGVuZCBjb2RlKQotICAKLSAgRXhhbXBsZToKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotCi0gIHZhciBhcmVhQ2hhcnQgPSBuZXcgJGppdC5BcmVhQ2hhcnQoewotICAgIGFuaW1hdGU6IHRydWUsCi0gICAgdHlwZTogJ3N0YWNrZWQ6Z3JhZGllbnQnLAotICAgIHNlbGVjdE9uSG92ZXI6IHRydWUsCi0gICAgZmlsdGVyT25DbGljazogdHJ1ZSwKLSAgICByZXN0b3JlT25SaWdodENsaWNrOiB0cnVlCi0gIH0pOwotICAKLSAgKGVuZCBjb2RlKQotCi0gIFBhcmFtZXRlcnM6Ci0gIAotICBhbmltYXRlIC0gKGJvb2xlYW4pIERlZmF1bHQncyAqdHJ1ZSouIFdoZXRoZXIgdG8gYWRkIGFuaW1hdGVkIHRyYW5zaXRpb25zIHdoZW4gZmlsdGVyaW5nL3Jlc3RvcmluZyBzdGFja3MuCi0gIGxhYmVsT2Zmc2V0IC0gKG51bWJlcikgRGVmYXVsdCdzICozKi4gQWRkcyBtYXJnaW4gYmV0d2VlbiB0aGUgbGFiZWwgYW5kIHRoZSBkZWZhdWx0IHBsYWNlIHdoZXJlIGl0IHNob3VsZCBiZSBkcmF3bi4KLSAgdHlwZSAtIChzdHJpbmcpIERlZmF1bHQncyAqJ3N0YWNrZWQnKi4gU3RhY2sgc3R5bGUuIFBvc2libGUgdmFsdWVzIGFyZSAnc3RhY2tlZCcsICdzdGFja2VkOmdyYWRpZW50JyB0byBhZGQgZ3JhZGllbnRzLgotICBzZWxlY3RPbkhvdmVyIC0gKGJvb2xlYW4pIERlZmF1bHQncyAqdHJ1ZSouIElmIHRydWUsIGl0IHdpbGwgYWRkIGEgbWFyayB0byB0aGUgaG92ZXJlZCBzdGFjay4KLSAgc2hvd0FnZ3JlZ2F0ZXMgLSAoYm9vbGVhbiwgZnVuY3Rpb24pIERlZmF1bHQncyAqdHJ1ZSouIERpc3BsYXkgdGhlIHZhbHVlcyBvZiB0aGUgc3RhY2tzLiBDYW4gYWxzbyBiZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyAqdHJ1ZSogb3IgKmZhbHNlKiB0byBkaXNwbGF5IG9yIGZpbHRlciBzb21lIHZhbHVlcy4gVGhhdCBzYW1lIGZ1bmN0aW9uIGNhbiBhbHNvIHJldHVybiBhIHN0cmluZyB3aXRoIHRoZSBmb3JtYXR0ZWQgdmFsdWUuCi0gIHNob3dMYWJlbHMgLSAoYm9vbGVhbiwgZnVuY3Rpb24pIERlZmF1bHQncyAqdHJ1ZSouIERpc3BsYXkgdGhlIG5hbWUgb2YgdGhlIHNsb3RzLiBDYW4gYWxzbyBiZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyAqdHJ1ZSogb3IgKmZhbHNlKiB0byBkaXNwbGF5IG9yIG5vdCBlYWNoIGxhYmVsLgotICBmaWx0ZXJPbkNsaWNrIC0gKGJvb2xlYW4pIERlZmF1bHQncyAqdHJ1ZSouIFNlbGVjdCB0aGUgY2xpY2tlZCBzdGFjayBieSBoaWRpbmcgYWxsIG90aGVyIHN0YWNrcy4KLSAgcmVzdG9yZU9uUmlnaHRDbGljayAtIChib29sZWFuKSBEZWZhdWx0J3MgKnRydWUqLiBTaG93IGFsbCBzdGFja3MgYnkgcmlnaHQgY2xpY2tpbmcuCi0gIAotKi8KLSAgCi1PcHRpb25zLkFyZWFDaGFydCA9IHsKLSAgJGV4dGVuZDogdHJ1ZSwKLQotICBhbmltYXRlOiB0cnVlLAotICBsYWJlbE9mZnNldDogMywgLy8gbGFiZWwgb2Zmc2V0Ci0gIHR5cGU6ICdzdGFja2VkJywgLy8gZ3JhZGllbnQKLSAgVGlwczogewotICAgIGVuYWJsZTogZmFsc2UsCi0gICAgb25TaG93OiAkLmVtcHR5LAotICAgIG9uSGlkZTogJC5lbXB0eQotICB9LAotICBFdmVudHM6IHsKLSAgICBlbmFibGU6IGZhbHNlLAotICAgIG9uQ2xpY2s6ICQuZW1wdHkKLSAgfSwKLSAgc2VsZWN0T25Ib3ZlcjogdHJ1ZSwKLSAgc2hvd0FnZ3JlZ2F0ZXM6IHRydWUsCi0gIHNob3dMYWJlbHM6IHRydWUsCi0gIGZpbHRlck9uQ2xpY2s6IGZhbHNlLAotICByZXN0b3JlT25SaWdodENsaWNrOiBmYWxzZQotfTsKLQotLyoKLSAqIEZpbGU6IE9wdGlvbnMuTWFyZ2luLmpzCi0gKgotKi8KLQotLyoKLSAgT2JqZWN0OiBPcHRpb25zLk1hcmdpbgotICAKLSAgQ2FudmFzIGRyYXdpbmcgbWFyZ2lucy4gCi0gIAotICBTeW50YXg6Ci0gIAotICAoc3RhcnQgY29kZSBqcykKLQotICBPcHRpb25zLk1hcmdpbiA9IHsKLSAgICB0b3A6IDAsCi0gICAgbGVmdDogMCwKLSAgICByaWdodDogMCwKLSAgICBib3R0b206IDAKLSAgfTsKLSAgCi0gIChlbmQgY29kZSkKLSAgCi0gIEV4YW1wbGU6Ci0gIAotICAoc3RhcnQgY29kZSBqcykKLQotICB2YXIgdml6ID0gbmV3ICRqaXQuVml6KHsKLSAgICBNYXJnaW46IHsKLSAgICAgIHJpZ2h0OiAxMCwKLSAgICAgIGJvdHRvbTogMjAKLSAgICB9Ci0gIH0pOwotICAKLSAgKGVuZCBjb2RlKQotCi0gIFBhcmFtZXRlcnM6Ci0gIAotICB0b3AgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjAqLiBUb3AgbWFyZ2luLgotICBsZWZ0IC0gKG51bWJlcikgRGVmYXVsdCdzICowKi4gTGVmdCBtYXJnaW4uCi0gIHJpZ2h0IC0gKG51bWJlcikgRGVmYXVsdCdzICowKi4gUmlnaHQgbWFyZ2luLgotICBib3R0b20gLSAobnVtYmVyKSBEZWZhdWx0J3MgKjAqLiBCb3R0b20gbWFyZ2luLgotICAKLSovCi0KLU9wdGlvbnMuTWFyZ2luID0gewotICAkZXh0ZW5kOiBmYWxzZSwKLSAgCi0gIHRvcDogMCwKLSAgbGVmdDogMCwKLSAgcmlnaHQ6IDAsCi0gIGJvdHRvbTogMAotfTsKLQotLyoKLSAqIEZpbGU6IE9wdGlvbnMuQ2FudmFzLmpzCi0gKgotKi8KLQotLyoKLSAgT2JqZWN0OiBPcHRpb25zLkNhbnZhcwotICAKLSAgVGhlc2UgYXJlIENhbnZhcyBnZW5lcmFsIG9wdGlvbnMsIGxpa2Ugd2hlcmUgdG8gYXBwZW5kIGl0IGluIHRoZSBET00sIGl0cyBkaW1lbnNpb25zLCBiYWNrZ3JvdW5kLCAKLSAgYW5kIG90aGVyIG1vcmUgYWR2YW5jZWQgb3B0aW9ucy4KLSAgCi0gIFN5bnRheDoKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotCi0gIE9wdGlvbnMuQ2FudmFzID0gewotICAgIGluamVjdEludG86ICdpZCcsCi0gICAgdHlwZTogJzJEJywgLy8nM0QnCi0gICAgd2lkdGg6IGZhbHNlLAotICAgIGhlaWdodDogZmFsc2UsCi0gICAgdXNlQ2FudmFzOiBmYWxzZSwKLSAgICB3aXRoTGFiZWxzOiB0cnVlLAotICAgIGJhY2tncm91bmQ6IGZhbHNlCi0gIH07ICAKLSAgKGVuZCBjb2RlKQotICAKLSAgRXhhbXBsZToKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotICB2YXIgdml6ID0gbmV3ICRqaXQuVml6KHsKLSAgICBpbmplY3RJbnRvOiAnc29tZUNvbnRhaW5lcklkJywKLSAgICB3aWR0aDogNTAwLAotICAgIGhlaWdodDogNzAwCi0gIH0pOwotICAoZW5kIGNvZGUpCi0gIAotICBQYXJhbWV0ZXJzOgotICAKLSAgaW5qZWN0SW50byAtICpyZXF1aXJlZCogKHN0cmluZ3xlbGVtZW50KSBUaGUgaWQgb2YgdGhlIERPTSBjb250YWluZXIgZm9yIHRoZSB2aXN1YWxpemF0aW9uLiBJdCBjYW4gYWxzbyBiZSBhbiBFbGVtZW50IHByb3ZpZGVkIHRoYXQgaXQgaGFzIGFuIGlkLgotICB0eXBlIC0gKHN0cmluZykgQ29udGV4dCB0eXBlLiBEZWZhdWx0J3MgMkQgYnV0IGNhbiBiZSAzRCBmb3Igd2ViR0wgZW5hYmxlZCBicm93c2Vycy4KLSAgd2lkdGggLSAobnVtYmVyKSBEZWZhdWx0J3MgdG8gdGhlICpjb250YWluZXIncyBvZmZzZXRXaWR0aCouIFRoZSB3aWR0aCBvZiB0aGUgY2FudmFzLgotICBoZWlnaHQgLSAobnVtYmVyKSBEZWZhdWx0J3MgdG8gdGhlICpjb250YWluZXIncyBvZmZzZXRIZWlnaHQqLiBUaGUgaGVpZ2h0IG9mIHRoZSBjYW52YXMuCi0gIHVzZUNhbnZhcyAtIChib29sZWFufG9iamVjdCkgRGVmYXVsdCdzICpmYWxzZSouIFlvdSBjYW4gcGFzcyBhbm90aGVyIDxDYW52YXM+IGluc3RhbmNlIHRvIGJlIHVzZWQgYnkgdGhlIHZpc3VhbGl6YXRpb24uCi0gIHdpdGhMYWJlbHMgLSAoYm9vbGVhbikgRGVmYXVsdCdzICp0cnVlKi4gV2hldGhlciB0byB1c2UgYSBsYWJlbCBjb250YWluZXIgZm9yIHRoZSB2aXN1YWxpemF0aW9uLgotICBiYWNrZ3JvdW5kIC0gKGJvb2xlYW58b2JqZWN0KSBEZWZhdWx0J3MgKmZhbHNlKi4gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlbmRlcmluZyBvZiBhIGJhY2tncm91bmQgY2FudmFzLgotKi8KLQotT3B0aW9ucy5DYW52YXMgPSB7Ci0gICAgJGV4dGVuZDogdHJ1ZSwKLSAgICAKLSAgICBpbmplY3RJbnRvOiAnaWQnLAotICAgIHR5cGU6ICcyRCcsCi0gICAgd2lkdGg6IGZhbHNlLAotICAgIGhlaWdodDogZmFsc2UsCi0gICAgdXNlQ2FudmFzOiBmYWxzZSwKLSAgICB3aXRoTGFiZWxzOiB0cnVlLAotICAgIGJhY2tncm91bmQ6IGZhbHNlLAotICAgIAotICAgIFNjZW5lOiB7Ci0gICAgICBMaWdodGluZzogewotICAgICAgICBlbmFibGU6IGZhbHNlLAotICAgICAgICBhbWJpZW50OiBbMSwgMSwgMV0sCi0gICAgICAgIGRpcmVjdGlvbmFsOiB7Ci0gICAgICAgICAgZGlyZWN0aW9uOiB7IHg6IC0xMDAsIHk6IC0xMDAsIHo6IC0xMDAgfSwKLSAgICAgICAgICBjb2xvcjogWzAuNSwgMC4zLCAwLjFdCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci19OwotCi0vKgotICogRmlsZTogT3B0aW9ucy5UcmVlLmpzCi0gKgotKi8KLQotLyoKLSAgT2JqZWN0OiBPcHRpb25zLlRyZWUKLSAgCi0gIE9wdGlvbnMgcmVsYXRlZCB0byAoc3RyaWN0KSBUcmVlIGxheW91dCBhbGdvcml0aG1zLiBUaGVzZSBvcHRpb25zIGFyZSB1c2VkIGJ5IHRoZSA8U1Q+IHZpc3VhbGl6YXRpb24uCi0gIAotICBTeW50YXg6Ci0gIAotICAoc3RhcnQgY29kZSBqcykKLSAgT3B0aW9ucy5UcmVlID0gewotICAgIG9yaWVudGF0aW9uOiAibGVmdCIsCi0gICAgc3VidHJlZU9mZnNldDogOCwKLSAgICBzaWJsaW5nT2Zmc2V0OiA1LAotICAgIGluZGVudDoxMCwKLSAgICBtdWx0aXRyZWU6IGZhbHNlLAotICAgIGFsaWduOiJjZW50ZXIiCi0gIH07Ci0gIChlbmQgY29kZSkKLSAgCi0gIEV4YW1wbGU6Ci0gIAotICAoc3RhcnQgY29kZSBqcykKLSAgdmFyIHN0ID0gbmV3ICRqaXQuU1QoewotICAgIG9yaWVudGF0aW9uOiAnbGVmdCcsCi0gICAgc3VidHJlZU9mZnNldDogMSwKLSAgICBzaWJsaW5nT0Zmc2V0OiA1LAotICAgIG11bHRpdHJlZTogdHJ1ZQotICB9KTsKLSAgKGVuZCBjb2RlKQotCi0gIFBhcmFtZXRlcnM6Ci0gICAgCi0gIHN1YnRyZWVPZmZzZXQgLSAobnVtYmVyKSBEZWZhdWx0J3MgOC4gU2VwYXJhdGlvbiBvZmZzZXQgYmV0d2VlbiBzdWJ0cmVlcy4KLSAgc2libGluZ09mZnNldCAtIChudW1iZXIpIERlZmF1bHQncyA1LiBTZXBhcmF0aW9uIG9mZnNldCBiZXR3ZWVuIHNpYmxpbmdzLgotICBvcmllbnRhdGlvbiAtIChzdHJpbmcpIERlZmF1bHQncyAnbGVmdCcuIFRyZWUgb3JpZW50YXRpb24gbGF5b3V0LiBQb3NzaWJsZSB2YWx1ZXMgYXJlICdsZWZ0JywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLgotICBhbGlnbiAtIChzdHJpbmcpIERlZmF1bHQncyAqY2VudGVyKi4gV2hldGhlciB0aGUgdHJlZSBhbGlnbm1lbnQgaXMgJ2xlZnQnLCAnY2VudGVyJyBvciAncmlnaHQnLgotICBpbmRlbnQgLSAobnVtYmVyKSBEZWZhdWx0J3MgMTAuIFVzZWQgd2hlbiAqYWxpZ24qIGlzIGxlZnQgb3IgcmlnaHQgYW5kIHNob3dzIGFuIGluZGVudGF0aW9uIGJldHdlZW4gcGFyZW50IGFuZCBjaGlsZHJlbi4KLSAgbXVsdGl0cmVlIC0gKGJvb2xlYW4pIERlZmF1bHQncyAqZmFsc2UqLiBVc2VkIHdpdGggdGhlIG5vZGUgJG9ybiBkYXRhIHByb3BlcnR5IGZvciBjcmVhdGluZyBtdWx0aXRyZWVzLgotICAgICAKLSovCi1PcHRpb25zLlRyZWUgPSB7Ci0gICAgJGV4dGVuZDogdHJ1ZSwKLSAgICAKLSAgICBvcmllbnRhdGlvbjogImxlZnQiLAotICAgIHN1YnRyZWVPZmZzZXQ6IDgsCi0gICAgc2libGluZ09mZnNldDogNSwKLSAgICBpbmRlbnQ6MTAsCi0gICAgbXVsdGl0cmVlOiBmYWxzZSwKLSAgICBhbGlnbjoiY2VudGVyIgotfTsKLQotCi0vKgotICogRmlsZTogT3B0aW9ucy5Ob2RlLmpzCi0gKgotKi8KLQotLyoKLSAgT2JqZWN0OiBPcHRpb25zLk5vZGUKLQotICBQcm92aWRlcyBOb2RlIHJlbmRlcmluZyBvcHRpb25zIGZvciBUcmVlIGFuZCBHcmFwaCBiYXNlZCB2aXN1YWxpemF0aW9ucy4KLQotICBTeW50YXg6Ci0gICAgCi0gIChzdGFydCBjb2RlIGpzKQotICBPcHRpb25zLk5vZGUgPSB7Ci0gICAgb3ZlcnJpZGFibGU6IGZhbHNlLAotICAgIHR5cGU6ICdjaXJjbGUnLAotICAgIGNvbG9yOiAnI2NjYicsCi0gICAgYWxwaGE6IDEsCi0gICAgZGltOiAzLAotICAgIGhlaWdodDogMjAsCi0gICAgd2lkdGg6IDkwLAotICAgIGF1dG9IZWlnaHQ6IGZhbHNlLAotICAgIGF1dG9XaWR0aDogZmFsc2UsCi0gICAgbGluZVdpZHRoOiAxLAotICAgIHRyYW5zZm9ybTogdHJ1ZSwKLSAgICBhbGlnbjogImNlbnRlciIsCi0gICAgYW5ndWxhcldpZHRoOjEsCi0gICAgc3BhbjoxLAotICAgIENhbnZhc1N0eWxlczoge30KLSAgfTsKLSAgKGVuZCBjb2RlKQotICAKLSAgRXhhbXBsZToKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotICB2YXIgdml6ID0gbmV3ICRqaXQuVml6KHsKLSAgICBOb2RlOiB7Ci0gICAgICBvdmVycmlkYWJsZTogdHJ1ZSwKLSAgICAgIHdpZHRoOiAzMCwKLSAgICAgIGF1dG9IZWlnaHQ6IHRydWUsCi0gICAgICB0eXBlOiAncmVjdGFuZ2xlJwotICAgIH0KLSAgfSk7Ci0gIChlbmQgY29kZSkKLSAgCi0gIFBhcmFtZXRlcnM6Ci0KLSAgb3ZlcnJpZGFibGUgLSAoYm9vbGVhbikgRGVmYXVsdCdzICpmYWxzZSouIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCBnZW5lcmFsIG5vZGUgcHJvcGVydGllcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIHBhcnRpY3VsYXIgPEdyYXBoLk5vZGU+LgotICB0eXBlIC0gKHN0cmluZykgRGVmYXVsdCdzICpjaXJjbGUqLiBOb2RlJ3Mgc2hhcGUuIE5vZGUgYnVpbHQtaW4gdHlwZXMgaW5jbHVkZSAnY2lyY2xlJywgJ3JlY3RhbmdsZScsICdzcXVhcmUnLCAnZWxsaXBzZScsICd0cmlhbmdsZScsICdzdGFyJy4gVGhlIGRlZmF1bHQgTm9kZSB0eXBlIG1pZ2h0IHZhcnkgaW4gZWFjaCB2aXN1YWxpemF0aW9uLiBZb3UgY2FuIGFsc28gaW1wbGVtZW50IChub24gYnVpbHQtaW4pIGN1c3RvbSBOb2RlIHR5cGVzIGludG8geW91ciB2aXN1YWxpemF0aW9ucy4KLSAgY29sb3IgLSAoc3RyaW5nKSBEZWZhdWx0J3MgKiNjY2IqLiBOb2RlIGNvbG9yLgotICBhbHBoYSAtIChudW1iZXIpIERlZmF1bHQncyAqMSouIFRoZSBOb2RlJ3MgYWxwaGEgdmFsdWUuICoxKiBpcyBmb3IgZnVsbCBvcGFjaXR5LgotICBkaW0gLSAobnVtYmVyKSBEZWZhdWx0J3MgKjMqLiBBbiBleHRyYSBwYXJhbWV0ZXIgdXNlZCBieSAnY2lyY2xlJywgJ3NxdWFyZScsICd0cmlhbmdsZScgYW5kICdzdGFyJyBub2RlIHR5cGVzLiBEZXBlbmRpbmcgb24gZWFjaCBzaGFwZSwgdGhpcyBwYXJhbWV0ZXIgY2FuIHNldCB0aGUgcmFkaXVzIG9mIGEgY2lyY2xlLCBoYWxmIHRoZSBsZW5ndGggb2YgdGhlIHNpZGUgb2YgYSBzcXVhcmUsIGhhbGYgdGhlIGJhc2UgYW5kIGhhbGYgdGhlIGhlaWdodCBvZiBhIHRyaWFuZ2xlIG9yIHRoZSBsZW5ndGggb2YgYSBzaWRlIG9mIGEgc3RhciAoY29uY2F2ZSBkZWNhZ29uKS4KLSAgaGVpZ2h0IC0gKG51bWJlcikgRGVmYXVsdCdzICoyMCouIFVzZWQgYnkgJ3JlY3RhbmdsZScgYW5kICdlbGxpcHNlJyBub2RlIHR5cGVzLiBUaGUgaGVpZ2h0IG9mIHRoZSBub2RlIHNoYXBlLgotICB3aWR0aCAtIChudW1iZXIpIERlZmF1bHQncyAqOTAqLiBVc2VkIGJ5ICdyZWN0YW5nbGUnIGFuZCAnZWxsaXBzZScgbm9kZSB0eXBlcy4gVGhlIHdpZHRoIG9mIHRoZSBub2RlIHNoYXBlLgotICBhdXRvSGVpZ2h0IC0gKGJvb2xlYW4pIERlZmF1bHQncyAqZmFsc2UqLiBXaGV0aGVyIHRvIHNldCBhbiBhdXRvIGhlaWdodCBmb3IgdGhlIG5vZGUgZGVwZW5kaW5nIG9uIHRoZSBjb250ZW50IG9mIHRoZSBOb2RlJ3MgbGFiZWwuCi0gIGF1dG9XaWR0aCAtIChib29sZWFuKSBEZWZhdWx0J3MgKmZhbHNlKi4gV2hldGhlciB0byBzZXQgYW4gYXV0byB3aWR0aCBmb3IgdGhlIG5vZGUgZGVwZW5kaW5nIG9uIHRoZSBjb250ZW50IG9mIHRoZSBOb2RlJ3MgbGFiZWwuCi0gIGxpbmVXaWR0aCAtIChudW1iZXIpIERlZmF1bHQncyAqMSouIFVzZWQgb25seSBieSBzb21lIE5vZGUgc2hhcGVzLiBUaGUgbGluZSB3aWR0aCBvZiB0aGUgc3Ryb2tlcyBvZiBhIG5vZGUuCi0gIHRyYW5zZm9ybSAtIChib29sZWFuKSBEZWZhdWx0J3MgKnRydWUqLiBPbmx5IHVzZWQgYnkgdGhlIDxIeXBlcnRyZWU+IHZpc3VhbGl6YXRpb24uIFdoZXRoZXIgdG8gc2NhbGUgdGhlIG5vZGVzIGFjY29yZGluZyB0byB0aGUgbW9lYml1cyB0cmFuc2Zvcm1hdGlvbi4KLSAgYWxpZ24gLSAoc3RyaW5nKSBEZWZhdWx0J3MgKmNlbnRlciouIFBvc3NpYmxlIHZhbHVlcyBhcmUgJ2NlbnRlcicsICdsZWZ0JyBvciAncmlnaHQnLiBVc2VkIG9ubHkgYnkgdGhlIDxTVD4gdmlzdWFsaXphdGlvbiwgdGhlc2UgcGFyYW1ldGVycyBhcmUgdXNlZCBmb3IgYWxpZ25pbmcgbm9kZXMgd2hlbiBzb21lIG9mIHRoZXkgZGltZW5zaW9ucyB2YXJ5LgotICBhbmd1bGFyV2lkdGggLSAobnVtYmVyKSBEZWZhdWx0J3MgKjEqLiBVc2VkIGluIHJhZGlhbCBsYXlvdXRzIChsaWtlIDxSR3JhcGg+IG9yIDxTdW5idXJzdD4gdmlzdWFsaXphdGlvbnMpLiBUaGUgYW1vdW50IG9mIHJlbGF0aXZlICdzcGFjZScgc2V0IGZvciBhIG5vZGUuCi0gIHNwYW4gLSAobnVtYmVyKSBEZWZhdWx0J3MgKjEqLiBVc2VkIGluIHJhZGlhbCBsYXlvdXRzIChsaWtlIDxSR3JhcGg+IG9yIDxTdW5idXJzdD4gdmlzdWFsaXphdGlvbnMpLiBUaGUgYW5nbGUgc3BhbiBhbW91bnQgc2V0IGZvciBhIG5vZGUuCi0gIENhbnZhc1N0eWxlcyAtIChvYmplY3QpIERlZmF1bHQncyBhbiBlbXB0eSBvYmplY3QgKGkuZS4ge30pLiBBdHRhY2ggYW55IG90aGVyIGNhbnZhcyBzcGVjaWZpYyBwcm9wZXJ0eSB0aGF0IHlvdSdkIHNldCB0byB0aGUgY2FudmFzIGNvbnRleHQgYmVmb3JlIHBsb3R0aW5nIGEgTm9kZS4KLQotKi8KLU9wdGlvbnMuTm9kZSA9IHsKLSAgJGV4dGVuZDogZmFsc2UsCi0gIAotICBvdmVycmlkYWJsZTogZmFsc2UsCi0gIHR5cGU6ICdjaXJjbGUnLAotICBjb2xvcjogJyNjY2InLAotICBhbHBoYTogMSwKLSAgZGltOiAzLAotICBoZWlnaHQ6IDIwLAotICB3aWR0aDogOTAsCi0gIGF1dG9IZWlnaHQ6IGZhbHNlLAotICBhdXRvV2lkdGg6IGZhbHNlLAotICBsaW5lV2lkdGg6IDEsCi0gIHRyYW5zZm9ybTogdHJ1ZSwKLSAgYWxpZ246ICJjZW50ZXIiLAotICBhbmd1bGFyV2lkdGg6MSwKLSAgc3BhbjoxLAotICAvL1JhdyBjYW52YXMgc3R5bGVzIHRvIGJlCi0gIC8vYXBwbGllZCB0byB0aGUgY29udGV4dCBpbnN0YW5jZQotICAvL2JlZm9yZSBwbG90dGluZyBhIG5vZGUKLSAgQ2FudmFzU3R5bGVzOiB7fQotfTsKLQotCi0vKgotICogRmlsZTogT3B0aW9ucy5FZGdlLmpzCi0gKgotKi8KLQotLyoKLSAgT2JqZWN0OiBPcHRpb25zLkVkZ2UKLQotICBQcm92aWRlcyBFZGdlIHJlbmRlcmluZyBvcHRpb25zIGZvciBUcmVlIGFuZCBHcmFwaCBiYXNlZCB2aXN1YWxpemF0aW9ucy4KLQotICBTeW50YXg6Ci0gICAgCi0gIChzdGFydCBjb2RlIGpzKQotICBPcHRpb25zLkVkZ2UgPSB7Ci0gICAgb3ZlcnJpZGFibGU6IGZhbHNlLAotICAgIHR5cGU6ICdsaW5lJywKLSAgICBjb2xvcjogJyNjY2InLAotICAgIGxpbmVXaWR0aDogMSwKLSAgICBkaW06MTUsCi0gICAgYWxwaGE6IDEsCi0gICAgQ2FudmFzU3R5bGVzOiB7fQotICB9OwotICAoZW5kIGNvZGUpCi0gIAotICBFeGFtcGxlOgotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gIHZhciB2aXogPSBuZXcgJGppdC5WaXooewotICAgIEVkZ2U6IHsKLSAgICAgIG92ZXJyaWRhYmxlOiB0cnVlLAotICAgICAgdHlwZTogJ2xpbmUnLAotICAgICAgY29sb3I6ICcjZmZmJywKLSAgICAgIENhbnZhc1N0eWxlczogewotICAgICAgICBzaGFkb3dDb2xvcjogJyNjY2MnLAotICAgICAgICBzaGFkb3dCbHVyOiAxMAotICAgICAgfQotICAgIH0KLSAgfSk7Ci0gIChlbmQgY29kZSkKLSAgCi0gIFBhcmFtZXRlcnM6Ci0gICAgCi0gICBvdmVycmlkYWJsZSAtIChib29sZWFuKSBEZWZhdWx0J3MgKmZhbHNlKi4gRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGdlbmVyYWwgZWRnZXMgcHJvcGVydGllcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIHBhcnRpY3VsYXIgPEdyYXBoLkFkamFjZW5jZT4uCi0gICB0eXBlIC0gKHN0cmluZykgRGVmYXVsdCdzICdsaW5lJy4gRWRnZSBzdHlsZXMgaW5jbHVkZSAnbGluZScsICdoeXBlcmxpbmUnLCAnYXJyb3cnLiBUaGUgZGVmYXVsdCBFZGdlIHR5cGUgbWlnaHQgdmFyeSBpbiBlYWNoIHZpc3VhbGl6YXRpb24uIFlvdSBjYW4gYWxzbyBpbXBsZW1lbnQgY3VzdG9tIEVkZ2UgdHlwZXMuCi0gICBjb2xvciAtIChzdHJpbmcpIERlZmF1bHQncyAnI2NjYicuIEVkZ2UgY29sb3IuCi0gICBsaW5lV2lkdGggLSAobnVtYmVyKSBEZWZhdWx0J3MgKjEqLiBMaW5lL0VkZ2Ugd2lkdGguCi0gICBhbHBoYSAtIChudW1iZXIpIERlZmF1bHQncyAqMSouIFRoZSBFZGdlJ3MgYWxwaGEgdmFsdWUuICoxKiBpcyBmb3IgZnVsbCBvcGFjaXR5LgotICAgZGltIC0gKG51bWJlcikgRGVmYXVsdCdzICoxNSouIEFuIGV4dHJhIHBhcmFtZXRlciB1c2VkIGJ5IG90aGVyIGNvbXBsZXggc2hhcGVzIHN1Y2ggYXMgcXVhZHJhdGljLCBiZXppZXIgb3IgYXJyb3csIHRvIGRldGVybWluZSB0aGUgc2hhcGUncyBkaWFtZXRlci4KLSAgIGVwc2lsb24gLSAobnVtYmVyKSBEZWZhdWx0J3MgKjcqLiBPbmx5IHVzZWQgd2hlbiB1c2luZyAqZW5hYmxlRm9yRWRnZXMqIGluIDxPcHRpb25zLkV2ZW50cz4uIFRoaXMgZGltZW5zaW9uIGlzIHVzZWQgdG8gY3JlYXRlIGFuIGFyZWEgZm9yIHRoZSBsaW5lIHdoZXJlIHRoZSBjb250YWlucyBtZXRob2QgZm9yIHRoZSBlZGdlIHJldHVybnMgKnRydWUqLgotICAgQ2FudmFzU3R5bGVzIC0gKG9iamVjdCkgRGVmYXVsdCdzIGFuIGVtcHR5IG9iamVjdCAoaS5lLiB7fSkuIEF0dGFjaCBhbnkgb3RoZXIgY2FudmFzIHNwZWNpZmljIHByb3BlcnR5IHRoYXQgeW91J2Qgc2V0IHRvIHRoZSBjYW52YXMgY29udGV4dCBiZWZvcmUgcGxvdHRpbmcgYW4gRWRnZS4KLQotICBTZWUgYWxzbzoKLSAgIAotICAgSWYgeW91IHdhbnQgdG8ga25vdyBtb3JlIGFib3V0IGhvdyB0byBjdXN0b21pemUgTm9kZS9FZGdlIGRhdGEgcGVyIGVsZW1lbnQsIGluIHRoZSBKU09OIG9yIHByb2dyYW1tYXRpY2FsbHksIHRha2UgYSBsb29rIGF0IHRoaXMgYXJ0aWNsZS4KLSovCi1PcHRpb25zLkVkZ2UgPSB7Ci0gICRleHRlbmQ6IGZhbHNlLAotICAKLSAgb3ZlcnJpZGFibGU6IGZhbHNlLAotICB0eXBlOiAnbGluZScsCi0gIGNvbG9yOiAnI2NjYicsCi0gIGxpbmVXaWR0aDogMSwKLSAgZGltOjE1LAotICBhbHBoYTogMSwKLSAgZXBzaWxvbjogNywKLQotICAvL1JhdyBjYW52YXMgc3R5bGVzIHRvIGJlCi0gIC8vYXBwbGllZCB0byB0aGUgY29udGV4dCBpbnN0YW5jZQotICAvL2JlZm9yZSBwbG90dGluZyBhbiBlZGdlCi0gIENhbnZhc1N0eWxlczoge30KLX07Ci0KLQotLyoKLSAqIEZpbGU6IE9wdGlvbnMuRnguanMKLSAqCi0qLwotCi0vKgotICBPYmplY3Q6IE9wdGlvbnMuRngKLQotICBQcm92aWRlcyBhbmltYXRpb24gb3B0aW9ucyBsaWtlIGR1cmF0aW9uIG9mIHRoZSBhbmltYXRpb25zLCBmcmFtZXMgcGVyIHNlY29uZCBhbmQgYW5pbWF0aW9uIHRyYW5zaXRpb25zLiAgCi0KLSAgU3ludGF4OgotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gICAgT3B0aW9ucy5GeCA9IHsKLSAgICAgIGZwczo0MCwKLSAgICAgIGR1cmF0aW9uOiAyNTAwLAotICAgICAgdHJhbnNpdGlvbjogJGppdC5UcmFucy5RdWFydC5lYXNlSW5PdXQsCi0gICAgICBjbGVhckNhbnZhczogdHJ1ZQotICAgIH07Ci0gIChlbmQgY29kZSkKLSAgCi0gIEV4YW1wbGU6Ci0gIAotICAoc3RhcnQgY29kZSBqcykKLSAgdmFyIHZpeiA9IG5ldyAkaml0LlZpeih7Ci0gICAgZHVyYXRpb246IDEwMDAsCi0gICAgZnBzOiAzNSwKLSAgICB0cmFuc2l0aW9uOiAkaml0LlRyYW5zLmxpbmVhcgotICB9KTsKLSAgKGVuZCBjb2RlKQotICAKLSAgUGFyYW1ldGVyczoKLSAgCi0gIGNsZWFyQ2FudmFzIC0gKGJvb2xlYW4pIERlZmF1bHQncyAqdHJ1ZSouIFdoZXRoZXIgdG8gY2xlYXIgdGhlIGZyYW1lL2NhbnZhcyB3aGVuIHRoZSB2aXogaXMgcGxvdHRlZCBvciBhbmltYXRlZC4KLSAgZHVyYXRpb24gLSAobnVtYmVyKSBEZWZhdWx0J3MgKjI1MDAqLiBEdXJhdGlvbiBvZiB0aGUgYW5pbWF0aW9uIGluIG1pbGxpc2Vjb25kcy4KLSAgZnBzIC0gKG51bWJlcikgRGVmYXVsdCdzICo0MCouIEZyYW1lcyBwZXIgc2Vjb25kLgotICB0cmFuc2l0aW9uIC0gKG9iamVjdCkgRGVmYXVsdCdzICokaml0LlRyYW5zLlF1YXJ0LmVhc2VJbk91dCouIFRoZSB0cmFuc2l0aW9uIHVzZWQgZm9yIHRoZSBhbmltYXRpb25zLiBTZWUgYmVsb3cgZm9yIGEgbW9yZSBkZXRhaWxlZCBleHBsYW5hdGlvbi4KLSAgCi0gIE9iamVjdDogJGppdC5UcmFucwotICAKLSAgVGhpcyBvYmplY3QgaXMgdXNlZCBmb3Igc3BlY2lmeWluZyBkaWZmZXJlbnQgYW5pbWF0aW9uIHRyYW5zaXRpb25zIGluIGFsbCB2aXN1YWxpemF0aW9ucy4KLQotICBUaGVyZSBhcmUgbWFueSBkaWZmZXJlbnQgdHlwZSBvZiBhbmltYXRpb24gdHJhbnNpdGlvbnMuCi0KLSAgbGluZWFyOgotCi0gIERpc3BsYXlzIGEgbGluZWFyIHRyYW5zaXRpb24KLQotICA+VHJhbnMubGluZWFyCi0gIAotICAoc2VlIExpbmVhci5wbmcpCi0KLSAgUXVhZDoKLQotICBEaXNwbGF5cyBhIFF1YWRyYXRpYyB0cmFuc2l0aW9uLgotCi0gID5UcmFucy5RdWFkLmVhc2VJbgotICA+VHJhbnMuUXVhZC5lYXNlT3V0Ci0gID5UcmFucy5RdWFkLmVhc2VJbk91dAotICAKLSAoc2VlIFF1YWQucG5nKQotCi0gQ3ViaWM6Ci0KLSBEaXNwbGF5cyBhIEN1YmljIHRyYW5zaXRpb24uCi0KLSA+VHJhbnMuQ3ViaWMuZWFzZUluCi0gPlRyYW5zLkN1YmljLmVhc2VPdXQKLSA+VHJhbnMuQ3ViaWMuZWFzZUluT3V0Ci0KLSAoc2VlIEN1YmljLnBuZykKLQotIFF1YXJ0OgotCi0gRGlzcGxheXMgYSBRdWFydGV0aWMgdHJhbnNpdGlvbi4KLQotID5UcmFucy5RdWFydC5lYXNlSW4KLSA+VHJhbnMuUXVhcnQuZWFzZU91dAotID5UcmFucy5RdWFydC5lYXNlSW5PdXQKLQotIChzZWUgUXVhcnQucG5nKQotCi0gUXVpbnQ6Ci0KLSBEaXNwbGF5cyBhIFF1aW50aWMgdHJhbnNpdGlvbi4KLQotID5UcmFucy5RdWludC5lYXNlSW4KLSA+VHJhbnMuUXVpbnQuZWFzZU91dAotID5UcmFucy5RdWludC5lYXNlSW5PdXQKLQotIChzZWUgUXVpbnQucG5nKQotCi0gRXhwbzoKLQotIERpc3BsYXlzIGFuIEV4cG9uZW50aWFsIHRyYW5zaXRpb24uCi0KLSA+VHJhbnMuRXhwby5lYXNlSW4KLSA+VHJhbnMuRXhwby5lYXNlT3V0Ci0gPlRyYW5zLkV4cG8uZWFzZUluT3V0Ci0KLSAoc2VlIEV4cG8ucG5nKQotCi0gQ2lyYzoKLQotIERpc3BsYXlzIGEgQ2lyY3VsYXIgdHJhbnNpdGlvbi4KLQotID5UcmFucy5DaXJjLmVhc2VJbgotID5UcmFucy5DaXJjLmVhc2VPdXQKLSA+VHJhbnMuQ2lyYy5lYXNlSW5PdXQKLQotIChzZWUgQ2lyYy5wbmcpCi0KLSBTaW5lOgotCi0gRGlzcGxheXMgYSBTaW5lb3VzaWRhbCB0cmFuc2l0aW9uLgotCi0gPlRyYW5zLlNpbmUuZWFzZUluCi0gPlRyYW5zLlNpbmUuZWFzZU91dAotID5UcmFucy5TaW5lLmVhc2VJbk91dAotCi0gKHNlZSBTaW5lLnBuZykKLQotIEJhY2s6Ci0KLSA+VHJhbnMuQmFjay5lYXNlSW4KLSA+VHJhbnMuQmFjay5lYXNlT3V0Ci0gPlRyYW5zLkJhY2suZWFzZUluT3V0Ci0KLSAoc2VlIEJhY2sucG5nKQotCi0gQm91bmNlOgotCi0gQm91bmN5IHRyYW5zaXRpb24uCi0KLSA+VHJhbnMuQm91bmNlLmVhc2VJbgotID5UcmFucy5Cb3VuY2UuZWFzZU91dAotID5UcmFucy5Cb3VuY2UuZWFzZUluT3V0Ci0KLSAoc2VlIEJvdW5jZS5wbmcpCi0KLSBFbGFzdGljOgotCi0gRWxhc3RpYyBjdXJ2ZS4KLQotID5UcmFucy5FbGFzdGljLmVhc2VJbgotID5UcmFucy5FbGFzdGljLmVhc2VPdXQKLSA+VHJhbnMuRWxhc3RpYy5lYXNlSW5PdXQKLQotIChzZWUgRWxhc3RpYy5wbmcpCi0gCi0gQmFzZWQgb246Ci0gICAgIAotIEVhc2luZyBhbmQgVHJhbnNpdGlvbiBhbmltYXRpb24gbWV0aG9kcyBhcmUgYmFzZWQgaW4gdGhlIE1vb1Rvb2xzIEZyYW1ld29yayA8aHR0cDovL21vb3Rvb2xzLm5ldD4uIENvcHlyaWdodCAoYykgMjAwNi0yMDEwIFZhbGVyaW8gUHJvaWV0dGksIDxodHRwOi8vbWFkNG1pbGsubmV0Lz4uIE1JVCBsaWNlbnNlIDxodHRwOi8vbW9vdG9vbHMubmV0L2xpY2Vuc2UudHh0Pi4KLQotCi0qLwotT3B0aW9ucy5GeCA9IHsKLSAgJGV4dGVuZDogdHJ1ZSwKLSAgCi0gIGZwczo0MCwKLSAgZHVyYXRpb246IDI1MDAsCi0gIHRyYW5zaXRpb246ICRqaXQuVHJhbnMuUXVhcnQuZWFzZUluT3V0LAotICBjbGVhckNhbnZhczogdHJ1ZQotfTsKLQotLyoKLSAqIEZpbGU6IE9wdGlvbnMuTGFiZWwuanMKLSAqCi0qLwotLyoKLSAgT2JqZWN0OiBPcHRpb25zLkxhYmVsCi0KLSAgUHJvdmlkZXMgc3R5bGluZyBmb3IgTGFiZWxzIHN1Y2ggYXMgZm9udCBzaXplLCBmYW1pbHksIGV0Yy4gQWxzbyBzZXRzIE5vZGUgbGFiZWxzIGFzIEhUTUwsIFNWRyBvciBOYXRpdmUgY2FudmFzIGVsZW1lbnRzLiAgCi0KLSAgU3ludGF4OgotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gICAgT3B0aW9ucy5MYWJlbCA9IHsKLSAgICAgIG92ZXJyaWRhYmxlOiBmYWxzZSwKLSAgICAgIHR5cGU6ICdIVE1MJywgLy8nU1ZHJywgJ05hdGl2ZScKLSAgICAgIHN0eWxlOiAnICcsCi0gICAgICBzaXplOiAxMCwKLSAgICAgIGZhbWlseTogJ3NhbnMtc2VyaWYnLAotICAgICAgdGV4dEFsaWduOiAnY2VudGVyJywKLSAgICAgIHRleHRCYXNlbGluZTogJ2FscGhhYmV0aWMnLAotICAgICAgY29sb3I6ICcjZmZmJwotICAgIH07Ci0gIChlbmQgY29kZSkKLSAgCi0gIEV4YW1wbGU6Ci0gIAotICAoc3RhcnQgY29kZSBqcykKLSAgdmFyIHZpeiA9IG5ldyAkaml0LlZpeih7Ci0gICAgTGFiZWw6IHsKLSAgICAgIHR5cGU6ICdOYXRpdmUnLAotICAgICAgc2l6ZTogMTEsCi0gICAgICBjb2xvcjogJyNjY2MnCi0gICAgfQotICB9KTsKLSAgKGVuZCBjb2RlKQotICAKLSAgUGFyYW1ldGVyczoKLSAgICAKLSAgb3ZlcnJpZGFibGUgLSAoYm9vbGVhbikgRGVmYXVsdCdzICpmYWxzZSouIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCBnZW5lcmFsIGxhYmVsIHByb3BlcnRpZXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBwYXJ0aWN1bGFyIDxHcmFwaC5Ob2RlPi4KLSAgdHlwZSAtIChzdHJpbmcpIERlZmF1bHQncyAqSFRNTCouIFRoZSB0eXBlIGZvciB0aGUgbGFiZWxzLiBDYW4gYmUgJ0hUTUwnLCAnU1ZHJyBvciAnTmF0aXZlJyBjYW52YXMgbGFiZWxzLgotICBzdHlsZSAtIChzdHJpbmcpIERlZmF1bHQncyAqZW1wdHkgc3RyaW5nKi4gQ2FuIGJlICdpdGFsaWMnIG9yICdib2xkJy4gVGhpcyBwYXJhbWV0ZXIgaXMgb25seSB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiB1c2luZyAnTmF0aXZlJyBjYW52YXMgbGFiZWxzLiBGb3IgRE9NIGJhc2VkIGxhYmVscyB0aGUgY2xhc3NOYW1lICpub2RlKiBpcyBhZGRlZCB0byB0aGUgRE9NIGVsZW1lbnQgZm9yIHN0eWxpbmcgdmlhIENTUy4gWW91IGNhbiBhbHNvIHVzZSA8T3B0aW9ucy5Db250cm9sbGVyPiBtZXRob2RzIHRvIHN0eWxlIGluZGl2aWR1YWwgbGFiZWxzLgotICBzaXplIC0gKG51bWJlcikgRGVmYXVsdCdzICoxMCouIFRoZSBmb250J3Mgc2l6ZS4gVGhpcyBwYXJhbWV0ZXIgaXMgb25seSB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiB1c2luZyAnTmF0aXZlJyBjYW52YXMgbGFiZWxzLiBGb3IgRE9NIGJhc2VkIGxhYmVscyB0aGUgY2xhc3NOYW1lICpub2RlKiBpcyBhZGRlZCB0byB0aGUgRE9NIGVsZW1lbnQgZm9yIHN0eWxpbmcgdmlhIENTUy4gWW91IGNhbiBhbHNvIHVzZSA8T3B0aW9ucy5Db250cm9sbGVyPiBtZXRob2RzIHRvIHN0eWxlIGluZGl2aWR1YWwgbGFiZWxzLgotICBmYW1pbHkgLSAoc3RyaW5nKSBEZWZhdWx0J3MgKnNhbnMtc2VyaWYqLiBUaGUgZm9udCdzIGZhbWlseS4gVGhpcyBwYXJhbWV0ZXIgaXMgb25seSB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiB1c2luZyAnTmF0aXZlJyBjYW52YXMgbGFiZWxzLiBGb3IgRE9NIGJhc2VkIGxhYmVscyB0aGUgY2xhc3NOYW1lICpub2RlKiBpcyBhZGRlZCB0byB0aGUgRE9NIGVsZW1lbnQgZm9yIHN0eWxpbmcgdmlhIENTUy4gWW91IGNhbiBhbHNvIHVzZSA8T3B0aW9ucy5Db250cm9sbGVyPiBtZXRob2RzIHRvIHN0eWxlIGluZGl2aWR1YWwgbGFiZWxzLgotICBjb2xvciAtIChzdHJpbmcpIERlZmF1bHQncyAqI2ZmZiouIFRoZSBmb250J3MgY29sb3IuIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gdXNpbmcgJ05hdGl2ZScgY2FudmFzIGxhYmVscy4gRm9yIERPTSBiYXNlZCBsYWJlbHMgdGhlIGNsYXNzTmFtZSAqbm9kZSogaXMgYWRkZWQgdG8gdGhlIERPTSBlbGVtZW50IGZvciBzdHlsaW5nIHZpYSBDU1MuIFlvdSBjYW4gYWxzbyB1c2UgPE9wdGlvbnMuQ29udHJvbGxlcj4gbWV0aG9kcyB0byBzdHlsZSBpbmRpdmlkdWFsIGxhYmVscy4KLSovCi1PcHRpb25zLkxhYmVsID0gewotICAkZXh0ZW5kOiBmYWxzZSwKLSAgCi0gIG92ZXJyaWRhYmxlOiBmYWxzZSwKLSAgdHlwZTogJ0hUTUwnLCAvLydTVkcnLCAnTmF0aXZlJwotICBzdHlsZTogJyAnLAotICBzaXplOiAxMCwKLSAgZmFtaWx5OiAnc2Fucy1zZXJpZicsCi0gIHRleHRBbGlnbjogJ2NlbnRlcicsCi0gIHRleHRCYXNlbGluZTogJ2FscGhhYmV0aWMnLAotICBjb2xvcjogJyNmZmYnCi19OwotCi0KLS8qCi0gKiBGaWxlOiBPcHRpb25zLlRpcHMuanMKLSAqCi0gKi8KLQotLyoKLSAgT2JqZWN0OiBPcHRpb25zLlRpcHMKLSAgCi0gIFRpcHMgb3B0aW9ucwotICAKLSAgU3ludGF4OgotICAgIAotICAoc3RhcnQgY29kZSBqcykKLSAgT3B0aW9ucy5UaXBzID0gewotICAgIGVuYWJsZTogZmFsc2UsCi0gICAgdHlwZTogJ2F1dG8nLAotICAgIG9mZnNldFg6IDIwLAotICAgIG9mZnNldFk6IDIwLAotICAgIG9uU2hvdzogJC5lbXB0eSwKLSAgICBvbkhpZGU6ICQuZW1wdHkKLSAgfTsKLSAgKGVuZCBjb2RlKQotICAKLSAgRXhhbXBsZToKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotICB2YXIgdml6ID0gbmV3ICRqaXQuVml6KHsKLSAgICBUaXBzOiB7Ci0gICAgICBlbmFibGU6IHRydWUsCi0gICAgICB0eXBlOiAnTmF0aXZlJywKLSAgICAgIG9mZnNldFg6IDEwLAotICAgICAgb2Zmc2V0WTogMTAsCi0gICAgICBvblNob3c6IGZ1bmN0aW9uKHRpcCwgbm9kZSkgewotICAgICAgICB0aXAuaW5uZXJIVE1MID0gbm9kZS5uYW1lOwotICAgICAgfQotICAgIH0KLSAgfSk7Ci0gIChlbmQgY29kZSkKLQotICBQYXJhbWV0ZXJzOgotCi0gIGVuYWJsZSAtIChib29sZWFuKSBEZWZhdWx0J3MgKmZhbHNlKi4gSWYgKnRydWUqLCBhIHRvb2x0aXAgd2lsbCBiZSBzaG93biB3aGVuIGEgbm9kZSBpcyBob3ZlcmVkLiBUaGUgdG9vbHRpcCBpcyBhIGRpdiBET00gZWxlbWVudCBoYXZpbmcgInRpcCIgYXMgQ1NTIGNsYXNzLiAKLSAgdHlwZSAtIChzdHJpbmcpIERlZmF1bHQncyAqYXV0byouIERlZmluZXMgd2hlcmUgdG8gYXR0YWNoIHRoZSBNb3VzZUVudGVyL0xlYXZlIHRvb2x0aXAgZXZlbnRzLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICdOYXRpdmUnIHRvIGF0dGFjaCB0aGVtIHRvIHRoZSBjYW52YXMgb3IgJ0hUTUwnIHRvIGF0dGFjaCB0aGVtIHRvIERPTSBsYWJlbCBlbGVtZW50cyAoaWYgZGVmaW5lZCkuICdhdXRvJyBzZXRzIHRoaXMgcHJvcGVydHkgdG8gdGhlIHZhbHVlIG9mIDxPcHRpb25zLkxhYmVsPidzICp0eXBlKiBwcm9wZXJ0eS4KLSAgb2Zmc2V0WCAtIChudW1iZXIpIERlZmF1bHQncyAqMjAqLiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGN1cnJlbnQgdG9vbHRpcCB4LXBvc2l0aW9uICh3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBtb3VzZSBwb3NpdGlvbikuIERlZmF1bHQncyAyMC4KLSAgb2Zmc2V0WSAtIChudW1iZXIpIERlZmF1bHQncyAqMjAqLiBBbiBvZmZzZXQgYWRkZWQgdG8gdGhlIGN1cnJlbnQgdG9vbHRpcCB5LXBvc2l0aW9uICh3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBtb3VzZSBwb3NpdGlvbikuIERlZmF1bHQncyAyMC4KLSAgb25TaG93KHRpcCwgbm9kZSkgLSBUaGlzIGNhbGxhY2sgaXMgdXNlZCByaWdodCBiZWZvcmUgZGlzcGxheWluZyBhIHRvb2x0aXAuIFRoZSBmaXJzdCBmb3JtYWwgcGFyYW1ldGVyIGlzIHRoZSB0aXAgaXRzZWxmICh3aGljaCBpcyBhIERpdkVsZW1lbnQpLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBtYXkgYmUgYSA8R3JhcGguTm9kZT4gZm9yIGdyYXBoIGJhc2VkIHZpc3VhbGl6YXRpb25zIG9yIGFuIG9iamVjdCB3aXRoIGxhYmVsLCB2YWx1ZSBwcm9wZXJ0aWVzIGZvciBjaGFydHMuCi0gIG9uSGlkZSgpIC0gVGhpcyBjYWxsYWNrIGlzIHVzZWQgd2hlbiBoaWRpbmcgYSB0b29sdGlwLgotCi0qLwotT3B0aW9ucy5UaXBzID0gewotICAkZXh0ZW5kOiBmYWxzZSwKLSAgCi0gIGVuYWJsZTogZmFsc2UsCi0gIHR5cGU6ICdhdXRvJywKLSAgb2Zmc2V0WDogMjAsCi0gIG9mZnNldFk6IDIwLAotICBmb3JjZTogZmFsc2UsCi0gIG9uU2hvdzogJC5lbXB0eSwKLSAgb25IaWRlOiAkLmVtcHR5Ci19OwotCi0KLS8qCi0gKiBGaWxlOiBPcHRpb25zLk5vZGVTdHlsZXMuanMKLSAqCi0gKi8KLQotLyoKLSAgT2JqZWN0OiBPcHRpb25zLk5vZGVTdHlsZXMKLSAgCi0gIEFwcGx5IGRpZmZlcmVudCBzdHlsZXMgd2hlbiBhIG5vZGUgaXMgaG92ZXJlZCBvciBzZWxlY3RlZC4KLSAgCi0gIFN5bnRheDoKLSAgICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gIE9wdGlvbnMuTm9kZVN0eWxlcyA9IHsKLSAgICBlbmFibGU6IGZhbHNlLAotICAgIHR5cGU6ICdhdXRvJywKLSAgICBzdHlsZXNIb3ZlcjogZmFsc2UsCi0gICAgc3R5bGVzQ2xpY2s6IGZhbHNlCi0gIH07Ci0gIChlbmQgY29kZSkKLSAgCi0gIEV4YW1wbGU6Ci0gIAotICAoc3RhcnQgY29kZSBqcykKLSAgdmFyIHZpeiA9IG5ldyAkaml0LlZpeih7Ci0gICAgTm9kZVN0eWxlczogewotICAgICAgZW5hYmxlOiB0cnVlLAotICAgICAgdHlwZTogJ05hdGl2ZScsCi0gICAgICBzdHlsZXNIb3ZlcjogewotICAgICAgICBkaW06IDMwLAotICAgICAgICBjb2xvcjogJyNmY2MnCi0gICAgICB9LAotICAgICAgZHVyYXRpb246IDYwMAotICAgIH0KLSAgfSk7Ci0gIChlbmQgY29kZSkKLQotICBQYXJhbWV0ZXJzOgotICAKLSAgZW5hYmxlIC0gKGJvb2xlYW4pIERlZmF1bHQncyAqZmFsc2UqLiBXaGV0aGVyIHRvIGVuYWJsZSB0aGlzIG9wdGlvbi4KLSAgdHlwZSAtIChzdHJpbmcpIERlZmF1bHQncyAqYXV0byouIFVzZSB0aGlzIHRvIGF0dGFjaCB0aGUgaG92ZXIvY2xpY2sgZXZlbnRzIGluIHRoZSBub2RlcyBvciB0aGUgbm9kZXMgbGFiZWxzIChpZiB0aGV5IGhhdmUgYmVlbiBkZWZpbmVkIGFzIERPTSBlbGVtZW50czogJ0hUTUwnIG9yICdTVkcnLCBzZWUgPE9wdGlvbnMuTGFiZWw+IGZvciBtb3JlIGRldGFpbHMpLiBUaGUgZGVmYXVsdCAnYXV0bycgdmFsdWUgd2lsbCBzZXQgTm9kZVN0eWxlcyB0byB0aGUgc2FtZSB0eXBlIGRlZmluZWQgZm9yIDxPcHRpb25zLkxhYmVsPi4KLSAgc3R5bGVzSG92ZXIgLSAoYm9vbGVhbnxvYmplY3QpIERlZmF1bHQncyAqZmFsc2UqLiBBbiBvYmplY3Qgd2l0aCBub2RlIHN0eWxlcyBqdXN0IGxpa2UgdGhlIG9uZXMgZGVmaW5lZCBmb3IgPE9wdGlvbnMuTm9kZT4gb3IgKmZhbHNlKiBvdGhlcndpc2UuCi0gIHN0eWxlc0NsaWNrIC0gKGJvb2xlYW58b2JqZWN0KSBEZWZhdWx0J3MgKmZhbHNlKi4gQW4gb2JqZWN0IHdpdGggbm9kZSBzdHlsZXMganVzdCBsaWtlIHRoZSBvbmVzIGRlZmluZWQgZm9yIDxPcHRpb25zLk5vZGU+IG9yICpmYWxzZSogb3RoZXJ3aXNlLgotKi8KLQotT3B0aW9ucy5Ob2RlU3R5bGVzID0gewotICAkZXh0ZW5kOiBmYWxzZSwKLSAgCi0gIGVuYWJsZTogZmFsc2UsCi0gIHR5cGU6ICdhdXRvJywKLSAgc3R5bGVzSG92ZXI6IGZhbHNlLAotICBzdHlsZXNDbGljazogZmFsc2UKLX07Ci0KLQotLyoKLSAqIEZpbGU6IE9wdGlvbnMuRXZlbnRzLmpzCi0gKgotKi8KLQotLyoKLSAgT2JqZWN0OiBPcHRpb25zLkV2ZW50cwotICAKLSAgQ29uZmlndXJhdGlvbiBmb3IgYWRkaW5nIG1vdXNlL3RvdWNoIGV2ZW50IGhhbmRsZXJzIHRvIE5vZGVzLgotICAKLSAgU3ludGF4OgotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gIE9wdGlvbnMuRXZlbnRzID0gewotICAgIGVuYWJsZTogZmFsc2UsCi0gICAgZW5hYmxlRm9yRWRnZXM6IGZhbHNlLAotICAgIHR5cGU6ICdhdXRvJywKLSAgICBvbkNsaWNrOiAkLmVtcHR5LAotICAgIG9uUmlnaHRDbGljazogJC5lbXB0eSwKLSAgICBvbk1vdXNlTW92ZTogJC5lbXB0eSwKLSAgICBvbk1vdXNlRW50ZXI6ICQuZW1wdHksCi0gICAgb25Nb3VzZUxlYXZlOiAkLmVtcHR5LAotICAgIG9uRHJhZ1N0YXJ0OiAkLmVtcHR5LAotICAgIG9uRHJhZ01vdmU6ICQuZW1wdHksCi0gICAgb25EcmFnQ2FuY2VsOiAkLmVtcHR5LAotICAgIG9uRHJhZ0VuZDogJC5lbXB0eSwKLSAgICBvblRvdWNoU3RhcnQ6ICQuZW1wdHksCi0gICAgb25Ub3VjaE1vdmU6ICQuZW1wdHksCi0gICAgb25Ub3VjaEVuZDogJC5lbXB0eSwKLSAgICBvblRvdWNoQ2FuY2VsOiAkLmVtcHR5LAotICAgIG9uTW91c2VXaGVlbDogJC5lbXB0eQotICB9OwotICAoZW5kIGNvZGUpCi0gIAotICBFeGFtcGxlOgotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gIHZhciB2aXogPSBuZXcgJGppdC5WaXooewotICAgIEV2ZW50czogewotICAgICAgZW5hYmxlOiB0cnVlLAotICAgICAgb25DbGljazogZnVuY3Rpb24obm9kZSwgZXZlbnRJbmZvLCBlKSB7Ci0gICAgICAgIHZpei5kb1NvbWV0aGluZygpOwotICAgICAgfSwKLSAgICAgIG9uTW91c2VFbnRlcjogZnVuY3Rpb24obm9kZSwgZXZlbnRJbmZvLCBlKSB7Ci0gICAgICAgIHZpei5jYW52YXMuZ2V0RWxlbWVudCgpLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJzsKLSAgICAgIH0sCi0gICAgICBvbk1vdXNlTGVhdmU6IGZ1bmN0aW9uKG5vZGUsIGV2ZW50SW5mbywgZSkgewotICAgICAgICB2aXouY2FudmFzLmdldEVsZW1lbnQoKS5zdHlsZS5jdXJzb3IgPSAnJzsKLSAgICAgIH0KLSAgICB9Ci0gIH0pOwotICAoZW5kIGNvZGUpCi0gIAotICBQYXJhbWV0ZXJzOgotICAKLSAgZW5hYmxlIC0gKGJvb2xlYW4pIERlZmF1bHQncyAqZmFsc2UqLiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgRXZlbnQgc3lzdGVtLgotICBlbmFibGVGb3JFZGdlcyAtIChib29sZWFuKSBEZWZhdWx0J3MgKmZhbHNlKi4gV2hldGhlciB0byB0cmFjayBldmVudHMgYWxzbyBpbiBhcmNzLiBJZiAqdHJ1ZSogdGhlIHNhbWUgY2FsbGJhY2tzIC1kZXNjcmliZWQgYmVsb3ctIGFyZSB1c2VkIGZvciBub2RlcyAqYW5kKiBlZGdlcy4gQSBzaW1wbGUgZHVjayB0eXBlIGNoZWNrIGZvciBlZGdlcyBpcyB0byBjaGVjayBmb3IgKm5vZGUubm9kZUZyb20qLgotICB0eXBlIC0gKHN0cmluZykgRGVmYXVsdCdzICdhdXRvJy4gV2hldGhlciB0byBhdHRhY2ggdGhlIGV2ZW50cyBvbnRvIHRoZSBIVE1MIGxhYmVscyAodmlhIGV2ZW50IGRlbGVnYXRpb24pIG9yIHRvIHVzZSB0aGUgY3VzdG9tICdOYXRpdmUnIGNhbnZhcyBFdmVudCBTeXN0ZW0gb2YgdGhlIGxpYnJhcnkuICdhdXRvJyBpcyBzZXQgd2hlbiB5b3UgbGV0IHRoZSA8T3B0aW9ucy5MYWJlbD4gKnR5cGUqIHBhcmFtZXRlciBkZWNpZGUgdGhpcy4KLSAgb25DbGljayhub2RlLCBldmVudEluZm8sIGUpIC0gVHJpZ2dlcmVkIHdoZW4gYSB1c2VyIHBlcmZvcm1zIGEgY2xpY2sgaW4gdGhlIGNhbnZhcy4gKm5vZGUqIGlzIHRoZSA8R3JhcGguTm9kZT4gY2xpY2tlZCBvciBmYWxzZSBpZiBubyBub2RlIGhhcyBiZWVuIGNsaWNrZWQuICplKiBpcyB0aGUgZ3JhYmJlZCBldmVudCAoc2hvdWxkIHJldHVybiB0aGUgbmF0aXZlIGV2ZW50IGluIGEgY3Jvc3MtYnJvd3NlciBtYW5uZXIpLiAqZXZlbnRJbmZvKiBpcyBhbiBvYmplY3QgY29udGFpbmluZyB1c2VmdWwgbWV0aG9kcyBsaWtlICpnZXRQb3MqIHRvIGdldCB0aGUgbW91c2UgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4gCi0gIG9uUmlnaHRDbGljayhub2RlLCBldmVudEluZm8sIGUpIC0gVHJpZ2dlcmVkIHdoZW4gYSB1c2VyIHBlcmZvcm1zIGEgcmlnaHQgY2xpY2sgaW4gdGhlIGNhbnZhcy4gKm5vZGUqIGlzIHRoZSA8R3JhcGguTm9kZT4gcmlnaHQgY2xpY2tlZCBvciBmYWxzZSBpZiBubyBub2RlIGhhcyBiZWVuIGNsaWNrZWQuICplKiBpcyB0aGUgZ3JhYmJlZCBldmVudCAoc2hvdWxkIHJldHVybiB0aGUgbmF0aXZlIGV2ZW50IGluIGEgY3Jvc3MtYnJvd3NlciBtYW5uZXIpLiAqZXZlbnRJbmZvKiBpcyBhbiBvYmplY3QgY29udGFpbmluZyB1c2VmdWwgbWV0aG9kcyBsaWtlICpnZXRQb3MqIHRvIGdldCB0aGUgbW91c2UgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4gCi0gIG9uTW91c2VNb3ZlKG5vZGUsIGV2ZW50SW5mbywgZSkgLSBUcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2UuICpub2RlKiBpcyB0aGUgPEdyYXBoLk5vZGU+IHVuZGVyIHRoZSBjdXJzb3IgYXMgaXQncyBtb3Zpbmcgb3ZlciB0aGUgY2FudmFzIG9yIGZhbHNlIGlmIG5vIG5vZGUgaGFzIGJlZW4gY2xpY2tlZC4gKmUqIGlzIHRoZSBncmFiYmVkIGV2ZW50IChzaG91bGQgcmV0dXJuIHRoZSBuYXRpdmUgZXZlbnQgaW4gYSBjcm9zcy1icm93c2VyIG1hbm5lcikuICAqZXZlbnRJbmZvKiBpcyBhbiBvYmplY3QgY29udGFpbmluZyB1c2VmdWwgbWV0aG9kcyBsaWtlICpnZXRQb3MqIHRvIGdldCB0aGUgbW91c2UgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4KLSAgb25Nb3VzZUVudGVyKG5vZGUsIGV2ZW50SW5mbywgZSkgLSBUcmlnZ2VyZWQgd2hlbiBhIHVzZXIgbW92ZXMgdGhlIG1vdXNlIG92ZXIgYSBub2RlLiAqbm9kZSogaXMgdGhlIDxHcmFwaC5Ob2RlPiB0aGF0IHRoZSBtb3VzZSBqdXN0IGVudGVyZWQuICplKiBpcyB0aGUgZ3JhYmJlZCBldmVudCAoc2hvdWxkIHJldHVybiB0aGUgbmF0aXZlIGV2ZW50IGluIGEgY3Jvc3MtYnJvd3NlciBtYW5uZXIpLiAqZXZlbnRJbmZvKiBpcyBhbiBvYmplY3QgY29udGFpbmluZyB1c2VmdWwgbWV0aG9kcyBsaWtlICpnZXRQb3MqIHRvIGdldCB0aGUgbW91c2UgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4gCi0gIG9uTW91c2VMZWF2ZShub2RlLCBldmVudEluZm8sIGUpIC0gVHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgbW91c2Utb3V0cyBhIG5vZGUuICpub2RlKiBpcyB0aGUgPEdyYXBoLk5vZGU+ICdtb3VzZS1vdXRlZCcuICplKiBpcyB0aGUgZ3JhYmJlZCBldmVudCAoc2hvdWxkIHJldHVybiB0aGUgbmF0aXZlIGV2ZW50IGluIGEgY3Jvc3MtYnJvd3NlciBtYW5uZXIpLiAqZXZlbnRJbmZvKiBpcyBhbiBvYmplY3QgY29udGFpbmluZyB1c2VmdWwgbWV0aG9kcyBsaWtlICpnZXRQb3MqIHRvIGdldCB0aGUgbW91c2UgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4gCi0gIG9uRHJhZ1N0YXJ0KG5vZGUsIGV2ZW50SW5mbywgZSkgLSBUcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBtb3VzZS1kb3ducyBvdmVyIGEgbm9kZS4gKm5vZGUqIGlzIHRoZSA8R3JhcGguTm9kZT4gYmVpbmcgcHJlc3NlZC4gKmUqIGlzIHRoZSBncmFiYmVkIGV2ZW50IChzaG91bGQgcmV0dXJuIHRoZSBuYXRpdmUgZXZlbnQgaW4gYSBjcm9zcy1icm93c2VyIG1hbm5lcikuICpldmVudEluZm8qIGlzIGFuIG9iamVjdCBjb250YWluaW5nIHVzZWZ1bCBtZXRob2RzIGxpa2UgKmdldFBvcyogdG8gZ2V0IHRoZSBtb3VzZSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgY2FudmFzLiAKLSAgb25EcmFnTW92ZShub2RlLCBldmVudEluZm8sIGUpIC0gVHJpZ2dlcmVkIHdoZW4gYSB1c2VyLCBhZnRlciBwcmVzc2luZyB0aGUgbW91c2UgYnV0dG9uIG92ZXIgYSBub2RlLCBtb3ZlcyB0aGUgbW91c2UgYXJvdW5kLiAqbm9kZSogaXMgdGhlIDxHcmFwaC5Ob2RlPiBiZWluZyBkcmFnZ2VkLiAqZSogaXMgdGhlIGdyYWJiZWQgZXZlbnQgKHNob3VsZCByZXR1cm4gdGhlIG5hdGl2ZSBldmVudCBpbiBhIGNyb3NzLWJyb3dzZXIgbWFubmVyKS4gKmV2ZW50SW5mbyogaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdXNlZnVsIG1ldGhvZHMgbGlrZSAqZ2V0UG9zKiB0byBnZXQgdGhlIG1vdXNlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBjYW52YXMuIAotICBvbkRyYWdFbmQobm9kZSwgZXZlbnRJbmZvLCBlKSAtIFRyaWdnZXJlZCB3aGVuIGEgdXNlciBmaW5pc2hlZCBkcmFnZ2luZyBhIG5vZGUuICpub2RlKiBpcyB0aGUgPEdyYXBoLk5vZGU+IGJlaW5nIGRyYWdnZWQuICplKiBpcyB0aGUgZ3JhYmJlZCBldmVudCAoc2hvdWxkIHJldHVybiB0aGUgbmF0aXZlIGV2ZW50IGluIGEgY3Jvc3MtYnJvd3NlciBtYW5uZXIpLiAqZXZlbnRJbmZvKiBpcyBhbiBvYmplY3QgY29udGFpbmluZyB1c2VmdWwgbWV0aG9kcyBsaWtlICpnZXRQb3MqIHRvIGdldCB0aGUgbW91c2UgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4gCi0gIG9uRHJhZ0NhbmNlbChub2RlLCBldmVudEluZm8sIGUpIC0gVHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgcmVsZWFzZXMgdGhlIG1vdXNlIGJ1dHRvbiBvdmVyIGEgPEdyYXBoLk5vZGU+IHRoYXQgd2Fzbid0IGRyYWdnZWQgKGkuZS4gdGhlIHVzZXIgZGlkbid0IHBlcmZvcm0gYW55IG1vdXNlIG1vdmVtZW50IGFmdGVyIHByZXNzaW5nIHRoZSBtb3VzZSBidXR0b24pLiAqbm9kZSogaXMgdGhlIDxHcmFwaC5Ob2RlPiBiZWluZyBkcmFnZ2VkLiAqZSogaXMgdGhlIGdyYWJiZWQgZXZlbnQgKHNob3VsZCByZXR1cm4gdGhlIG5hdGl2ZSBldmVudCBpbiBhIGNyb3NzLWJyb3dzZXIgbWFubmVyKS4gKmV2ZW50SW5mbyogaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdXNlZnVsIG1ldGhvZHMgbGlrZSAqZ2V0UG9zKiB0byBnZXQgdGhlIG1vdXNlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBjYW52YXMuIAotICBvblRvdWNoU3RhcnQobm9kZSwgZXZlbnRJbmZvLCBlKSAtIEJlaGF2ZXMganVzdCBsaWtlIG9uRHJhZ1N0YXJ0LiAKLSAgb25Ub3VjaE1vdmUobm9kZSwgZXZlbnRJbmZvLCBlKSAtIEJlaGF2ZXMganVzdCBsaWtlIG9uRHJhZ01vdmUuIAotICBvblRvdWNoRW5kKG5vZGUsIGV2ZW50SW5mbywgZSkgLSBCZWhhdmVzIGp1c3QgbGlrZSBvbkRyYWdFbmQuIAotICBvblRvdWNoQ2FuY2VsKG5vZGUsIGV2ZW50SW5mbywgZSkgLSBCZWhhdmVzIGp1c3QgbGlrZSBvbkRyYWdDYW5jZWwuCi0gIG9uTW91c2VXaGVlbChkZWx0YSwgZSkgLSBUcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciB1c2VzIHRoZSBtb3VzZSBzY3JvbGwgb3ZlciB0aGUgY2FudmFzLiAqZGVsdGEqIGlzIDEgb3IgLTEgZGVwZW5kaW5nIG9uIHRoZSBzZW5zZSBvZiB0aGUgbW91c2Ugc2Nyb2xsLgotKi8KLQotT3B0aW9ucy5FdmVudHMgPSB7Ci0gICRleHRlbmQ6IGZhbHNlLAotICAKLSAgZW5hYmxlOiBmYWxzZSwKLSAgZW5hYmxlRm9yRWRnZXM6IGZhbHNlLAotICB0eXBlOiAnYXV0bycsCi0gIG9uQ2xpY2s6ICQuZW1wdHksCi0gIG9uUmlnaHRDbGljazogJC5lbXB0eSwKLSAgb25Nb3VzZU1vdmU6ICQuZW1wdHksCi0gIG9uTW91c2VFbnRlcjogJC5lbXB0eSwKLSAgb25Nb3VzZUxlYXZlOiAkLmVtcHR5LAotICBvbkRyYWdTdGFydDogJC5lbXB0eSwKLSAgb25EcmFnTW92ZTogJC5lbXB0eSwKLSAgb25EcmFnQ2FuY2VsOiAkLmVtcHR5LAotICBvbkRyYWdFbmQ6ICQuZW1wdHksCi0gIG9uVG91Y2hTdGFydDogJC5lbXB0eSwKLSAgb25Ub3VjaE1vdmU6ICQuZW1wdHksCi0gIG9uVG91Y2hFbmQ6ICQuZW1wdHksCi0gIG9uTW91c2VXaGVlbDogJC5lbXB0eQotfTsKLQotLyoKLSAqIEZpbGU6IE9wdGlvbnMuTmF2aWdhdGlvbi5qcwotICoKLSovCi0KLS8qCi0gIE9iamVjdDogT3B0aW9ucy5OYXZpZ2F0aW9uCi0gIAotICBQYW5uaW5nIGFuZCB6b29taW5nIG9wdGlvbnMgZm9yIEdyYXBoL1RyZWUgYmFzZWQgdmlzdWFsaXphdGlvbnMuIFRoZXNlIG9wdGlvbnMgYXJlIGltcGxlbWVudGVkIAotICBieSBhbGwgdmlzdWFsaXphdGlvbnMgZXhjZXB0IGNoYXJ0cyAoPEFyZWFDaGFydD4sIDxCYXJDaGFydD4gYW5kIDxQaWVDaGFydD4pLgotICAKLSAgU3ludGF4OgotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0KLSAgT3B0aW9ucy5OYXZpZ2F0aW9uID0gewotICAgIGVuYWJsZTogZmFsc2UsCi0gICAgdHlwZTogJ2F1dG8nLAotICAgIHBhbm5pbmc6IGZhbHNlLCAvL3RydWUsICdhdm9pZCBub2RlcycKLSAgICB6b29taW5nOiBmYWxzZQotICB9OwotICAKLSAgKGVuZCBjb2RlKQotICAKLSAgRXhhbXBsZToKLSAgICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gIHZhciB2aXogPSBuZXcgJGppdC5WaXooewotICAgIE5hdmlnYXRpb246IHsKLSAgICAgIGVuYWJsZTogdHJ1ZSwKLSAgICAgIHBhbm5pbmc6ICdhdm9pZCBub2RlcycsCi0gICAgICB6b29taW5nOiAyMAotICAgIH0KLSAgfSk7Ci0gIChlbmQgY29kZSkKLSAgCi0gIFBhcmFtZXRlcnM6Ci0gIAotICBlbmFibGUgLSAoYm9vbGVhbikgRGVmYXVsdCdzICpmYWxzZSouIFdoZXRoZXIgdG8gZW5hYmxlIE5hdmlnYXRpb24gY2FwYWJpbGl0aWVzLgotICB0eXBlIC0gKHN0cmluZykgRGVmYXVsdCdzICdhdXRvJy4gV2hldGhlciB0byBhdHRhY2ggdGhlIG5hdmlnYXRpb24gZXZlbnRzIG9udG8gdGhlIEhUTUwgbGFiZWxzICh2aWEgZXZlbnQgZGVsZWdhdGlvbikgb3IgdG8gdXNlIHRoZSBjdXN0b20gJ05hdGl2ZScgY2FudmFzIEV2ZW50IFN5c3RlbSBvZiB0aGUgbGlicmFyeS4gV2hlbiAnYXV0bycgc2V0IHdoZW4geW91IGxldCB0aGUgPE9wdGlvbnMuTGFiZWw+ICp0eXBlKiBwYXJhbWV0ZXIgZGVjaWRlIHRoaXMuCi0gIHBhbm5pbmcgLSAoYm9vbGVhbnxzdHJpbmcpIERlZmF1bHQncyAqZmFsc2UqLiBTZXQgdGhpcyBwcm9wZXJ0eSB0byAqdHJ1ZSogaWYgeW91IHdhbnQgdG8gYWRkIERyYWcgYW5kIERyb3AgcGFubmluZyBzdXBwb3J0IHRvIHRoZSB2aXN1YWxpemF0aW9uLiBZb3UgY2FuIGFsc28gc2V0IHRoaXMgcGFyYW1ldGVyIHRvICdhdm9pZCBub2RlcycgdG8gZW5hYmxlIERuRCBwYW5uaW5nIGJ1dCBkaXNhYmxlIGl0IGlmIHRoZSBEbkQgaXMgdGFraW5nIHBsYWNlIG92ZXIgYSBub2RlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHNvbWUgb3RoZXIgZXZlbnRzIGxpa2UgRHJhZyAmIERyb3AgZm9yIG5vZGVzIGFyZSBhZGRlZCB0byA8R3JhcGguTm9kZXM+LgotICB6b29taW5nIC0gKGJvb2xlYW58bnVtYmVyKSBEZWZhdWx0J3MgKmZhbHNlKi4gU2V0IHRoaXMgcHJvcGVydHkgdG8gYSBudW1lcmljIHZhbHVlIHRvIHR1cm4gbW91c2Utc2Nyb2xsIHpvb21pbmcgb24uIFRoZSBudW1iZXIgd2lsbCBiZSBwcm9wb3J0aW9uYWwgdG8gdGhlIG1vdXNlLXNjcm9sbCBzZW5zaXRpdml0eS4KLSAgCi0qLwotCi1PcHRpb25zLk5hdmlnYXRpb24gPSB7Ci0gICRleHRlbmQ6IGZhbHNlLAotICAKLSAgZW5hYmxlOiBmYWxzZSwKLSAgdHlwZTogJ2F1dG8nLAotICBwYW5uaW5nOiBmYWxzZSwgLy90cnVlIHwgJ2F2b2lkIG5vZGVzJwotICB6b29taW5nOiBmYWxzZQotfTsKLQotLyoKLSAqIEZpbGU6IE9wdGlvbnMuQ29udHJvbGxlci5qcwotICoKLSovCi0KLS8qCi0gIE9iamVjdDogT3B0aW9ucy5Db250cm9sbGVyCi0gIAotICBQcm92aWRlcyBjb250cm9sbGVyIG1ldGhvZHMuIENvbnRyb2xsZXIgbWV0aG9kcyBhcmUgY2FsbGJhY2sgZnVuY3Rpb25zIHRoYXQgZ2V0IGNhbGxlZCBhdCBkaWZmZXJlbnQgc3RhZ2VzIAotICBvZiB0aGUgYW5pbWF0aW9uLCBjb21wdXRpbmcgb3IgcGxvdHRpbmcgb2YgdGhlIHZpc3VhbGl6YXRpb24uCi0gIAotICBJbXBsZW1lbnRlZCBieToKLSAgICAKLSAgQWxsIHZpc3VhbGl6YXRpb25zIGV4Y2VwdCBjaGFydHMgKDxBcmVhQ2hhcnQ+LCA8QmFyQ2hhcnQ+IGFuZCA8UGllQ2hhcnQ+KS4KLSAgCi0gIFN5bnRheDoKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotCi0gIE9wdGlvbnMuQ29udHJvbGxlciA9IHsKLSAgICBvbkJlZm9yZUNvbXB1dGU6ICQuZW1wdHksCi0gICAgb25BZnRlckNvbXB1dGU6ICAkLmVtcHR5LAotICAgIG9uQ3JlYXRlTGFiZWw6ICAgJC5lbXB0eSwKLSAgICBvblBsYWNlTGFiZWw6ICAgICQuZW1wdHksCi0gICAgb25Db21wbGV0ZTogICAgICAkLmVtcHR5LAotICAgIG9uQmVmb3JlUGxvdExpbmU6JC5lbXB0eSwKLSAgICBvbkFmdGVyUGxvdExpbmU6ICQuZW1wdHksCi0gICAgb25CZWZvcmVQbG90Tm9kZTokLmVtcHR5LAotICAgIG9uQWZ0ZXJQbG90Tm9kZTogJC5lbXB0eSwKLSAgICByZXF1ZXN0OiAgICAgICAgIGZhbHNlCi0gIH07Ci0gIAotICAoZW5kIGNvZGUpCi0gIAotICBFeGFtcGxlOgotICAgIAotICAoc3RhcnQgY29kZSBqcykKLSAgdmFyIHZpeiA9IG5ldyAkaml0LlZpeih7Ci0gICAgb25CZWZvcmVQbG90Tm9kZTogZnVuY3Rpb24obm9kZSkgewotICAgICAgaWYobm9kZS5zZWxlY3RlZCkgewotICAgICAgICBub2RlLnNldERhdGEoJ2NvbG9yJywgJyNmZmMnKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG5vZGUucmVtb3ZlRGF0YSgnY29sb3InKTsKLSAgICAgIH0KLSAgICB9LAotICAgIG9uQmVmb3JlUGxvdExpbmU6IGZ1bmN0aW9uKGFkaikgewotICAgICAgaWYoYWRqLm5vZGVGcm9tLnNlbGVjdGVkICYmIGFkai5ub2RlVG8uc2VsZWN0ZWQpIHsKLSAgICAgICAgYWRqLnNldERhdGEoJ2NvbG9yJywgJyNmZmMnKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGFkai5yZW1vdmVEYXRhKCdjb2xvcicpOwotICAgICAgfQotICAgIH0sCi0gICAgb25BZnRlckNvbXB1dGU6IGZ1bmN0aW9uKCkgewotICAgICAgYWxlcnQoImNvbXB1dGVkISIpOwotICAgIH0KLSAgfSk7Ci0gIChlbmQgY29kZSkKLSAgCi0gIFBhcmFtZXRlcnM6Ci0KLSAgIG9uQmVmb3JlQ29tcHV0ZShub2RlKSAtIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCByaWdodCBiZWZvcmUgcGVyZm9ybWluZyBhbGwgY29tcHV0YXRpb25zIGFuZCBhbmltYXRpb25zLiBUaGUgc2VsZWN0ZWQgPEdyYXBoLk5vZGU+IGlzIHBhc3NlZCBhcyBwYXJhbWV0ZXIuCi0gICBvbkFmdGVyQ29tcHV0ZSgpIC0gVGhpcyBtZXRob2QgaXMgdHJpZ2dlcmVkIGFmdGVyIGFsbCBhbmltYXRpb25zIG9yIGNvbXB1dGF0aW9ucyBlbmRlZC4KLSAgIG9uQ3JlYXRlTGFiZWwoZG9tRWxlbWVudCwgbm9kZSkgLSBUaGlzIG1ldGhvZCByZWNlaXZlcyBhIG5ldyBsYWJlbCBESVYgZWxlbWVudCBhcyBmaXJzdCBwYXJhbWV0ZXIsIGFuZCB0aGUgY29ycmVzcG9uZGluZyA8R3JhcGguTm9kZT4gYXMgc2Vjb25kIHBhcmFtZXRlci4gVGhpcyBtZXRob2Qgd2lsbCBvbmx5IGJlIGNhbGxlZCBvbmNlIGZvciBlYWNoIGxhYmVsLiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgd2hlbiBhZGRpbmcgZXZlbnRzIG9yIHN0eWxlcyB0byB0aGUgbGFiZWxzIHVzZWQgYnkgdGhlIEpJVC4KLSAgIG9uUGxhY2VMYWJlbChkb21FbGVtZW50LCBub2RlKSAtIFRoaXMgbWV0aG9kIHJlY2VpdmVzIGEgbGFiZWwgRElWIGVsZW1lbnQgYXMgZmlyc3QgcGFyYW1ldGVyIGFuZCB0aGUgY29ycmVzcG9uZGluZyA8R3JhcGguTm9kZT4gYXMgc2Vjb25kIHBhcmFtZXRlci4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGVhY2ggdGltZSBhIGxhYmVsIGhhcyBiZWVuIHBsYWNlZCBpbiB0aGUgdmlzdWFsaXphdGlvbiwgZm9yIGV4YW1wbGUgYXQgZWFjaCBzdGVwIG9mIGFuIGFuaW1hdGlvbiwgYW5kIHRodXMgaXQgYWxsb3dzIHlvdSB0byB1cGRhdGUgdGhlIGxhYmVscyBwcm9wZXJ0aWVzLCBzdWNoIGFzIHNpemUgb3IgcG9zaXRpb24uIE5vdGUgdGhhdCBvblBsYWNlTGFiZWwgd2lsbCBiZSB0cmlnZ2VyZWQgYWZ0ZXIgdXBkYXRpbmcgdGhlIGxhYmVscyBwb3NpdGlvbnMuIFRoYXQgbWVhbnMgdGhhdCwgZm9yIGV4YW1wbGUsIHRoZSBsZWZ0IGFuZCB0b3AgY3NzIHByb3BlcnRpZXMgYXJlIGFscmVhZHkgdXBkYXRlZCB0byBtYXRjaCB0aGUgbm9kZXMgcG9zaXRpb25zLiBXaWR0aCBhbmQgaGVpZ2h0IHByb3BlcnRpZXMgYXJlIG5vdCBzZXQgaG93ZXZlci4KLSAgIG9uQmVmb3JlUGxvdE5vZGUobm9kZSkgLSBUaGlzIG1ldGhvZCBpcyB0cmlnZ2VyZWQgcmlnaHQgYmVmb3JlIHBsb3R0aW5nIGVhY2ggPEdyYXBoLk5vZGU+LiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNoYW5naW5nIGEgbm9kZSBzdHlsZSByaWdodCBiZWZvcmUgcGxvdHRpbmcgaXQuCi0gICBvbkFmdGVyUGxvdE5vZGUobm9kZSkgLSBUaGlzIG1ldGhvZCBpcyB0cmlnZ2VyZWQgcmlnaHQgYWZ0ZXIgcGxvdHRpbmcgZWFjaCA8R3JhcGguTm9kZT4uCi0gICBvbkJlZm9yZVBsb3RMaW5lKGFkaikgLSBUaGlzIG1ldGhvZCBpcyB0cmlnZ2VyZWQgcmlnaHQgYmVmb3JlIHBsb3R0aW5nIGEgPEdyYXBoLkFkamFjZW5jZT4uIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3IgYWRkaW5nIHNvbWUgc3R5bGVzIHRvIGEgcGFydGljdWxhciBlZGdlIGJlZm9yZSBiZWluZyBwbG90dGVkLgotICAgb25BZnRlclBsb3RMaW5lKGFkaikgLSBUaGlzIG1ldGhvZCBpcyB0cmlnZ2VyZWQgcmlnaHQgYWZ0ZXIgcGxvdHRpbmcgYSA8R3JhcGguQWRqYWNlbmNlPi4KLQotICAgICpVc2VkIGluIDxTVD4sIDxUTS5CYXNlPiBhbmQgPEljaWNsZT4gdmlzdWFsaXphdGlvbnMqCi0gICAgCi0gICAgcmVxdWVzdChub2RlSWQsIGxldmVsLCBvbkNvbXBsZXRlKSAtIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIGJ1ZmZlcmluZyBpbmZvcm1hdGlvbiBpbnRvIHRoZSB2aXN1YWxpemF0aW9uLiBXaGVuIGNsaWNraW5nIG9uIGFuIGVtcHR5IG5vZGUsIHRoZSB2aXN1YWxpemF0aW9uIHdpbGwgbWFrZSBhIHJlcXVlc3QgZm9yIHRoaXMgbm9kZSdzIHN1YnRyZWVzLCBzcGVjaWZ5aW5nIGEgZ2l2ZW4gbGV2ZWwgZm9yIHRoaXMgc3VidHJlZSAoZGVmaW5lZCBieSBfbGV2ZWxzVG9TaG93XykuIE9uY2UgdGhlIHJlcXVlc3QgaXMgY29tcGxldGVkLCB0aGUgb25Db21wbGV0ZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGdpdmVuIHJlc3VsdC4gVGhpcyBpcyB1c2VmdWwgdG8gcHJvdmlkZSBvbi1kZW1hbmQgaW5mb3JtYXRpb24gaW50byB0aGUgdmlzdWFsaXphdGlvbnMgd2l0aG91Z2h0IGhhdmluZyB0byBsb2FkIHRoZSBlbnRpcmUgaW5mb3JtYXRpb24gZnJvbSBzdGFydC4gVGhlIHBhcmFtZXRlcnMgdXNlZCBieSB0aGlzIG1ldGhvZCBhcmUgX25vZGVJZF8sIHdoaWNoIGlzIHRoZSBpZCBvZiB0aGUgcm9vdCBvZiB0aGUgc3VidHJlZSB0byByZXF1ZXN0LCBfbGV2ZWxfIHdoaWNoIGlzIHRoZSBkZXB0aCBvZiB0aGUgc3VidHJlZSB0byBiZSByZXF1ZXN0ZWQgKDAgd291bGQgbWVhbiBqdXN0IHRoZSByb290IG5vZGUpLiBfb25Db21wbGV0ZV8gaXMgYW4gb2JqZWN0IGhhdmluZyB0aGUgY2FsbGJhY2sgbWV0aG9kIF9vbkNvbXBsZXRlLm9uQ29tcGxldGUoanNvbilfIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHRoZSBqc29uIGhhcyBiZWVuIHJldHJpZXZlZC4gIAotIAotICovCi1PcHRpb25zLkNvbnRyb2xsZXIgPSB7Ci0gICRleHRlbmQ6IHRydWUsCi0gIAotICBvbkJlZm9yZUNvbXB1dGU6ICQuZW1wdHksCi0gIG9uQWZ0ZXJDb21wdXRlOiAgJC5lbXB0eSwKLSAgb25DcmVhdGVMYWJlbDogICAkLmVtcHR5LAotICBvblBsYWNlTGFiZWw6ICAgICQuZW1wdHksCi0gIG9uQ29tcGxldGU6ICAgICAgJC5lbXB0eSwKLSAgb25CZWZvcmVQbG90TGluZTokLmVtcHR5LAotICBvbkFmdGVyUGxvdExpbmU6ICQuZW1wdHksCi0gIG9uQmVmb3JlUGxvdE5vZGU6JC5lbXB0eSwKLSAgb25BZnRlclBsb3ROb2RlOiAkLmVtcHR5LAotICByZXF1ZXN0OiAgICAgICAgIGZhbHNlCi19OwotCi0KLS8qCi0gKiBGaWxlOiBFeHRyYXMuanMKLSAqIAotICogUHJvdmlkZXMgRXh0cmFzIHN1Y2ggYXMgVGlwcyBhbmQgU3R5bGUgRWZmZWN0cy4KLSAqIAotICogRGVzY3JpcHRpb246Ci0gKiAKLSAqIFByb3ZpZGVzIHRoZSA8VGlwcz4gYW5kIDxOb2RlU3R5bGVzPiBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCi0gKgotICovCi0KLS8qCi0gKiBNYW5hZ2VyIGZvciBtb3VzZSBldmVudHMgKGNsaWNraW5nIGFuZCBtb3VzZSBtb3ZpbmcpLgotICogCi0gKiBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIHJlZ2lzdGVyaW5nIG9iamVjdHMgaW1wbGVtZW50aW5nIG9uQ2xpY2sKLSAqIGFuZCBvbk1vdXNlbW92ZSBtZXRob2RzLiBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgd2hlbiBjbGlja2luZyBvcgotICogbW92aW5nIHRoZSBtb3VzZSBhcm91bmQgIHRoZSBDYW52YXMuCi0gKiBGb3Igbm93LCA8VGlwcz4gYW5kIDxOb2RlU3R5bGVzPiBhcmUgY2xhc3NlcyBpbXBsZW1lbnRpbmcgdGhlc2UgbWV0aG9kcy4KLSAqIAotICovCi12YXIgRXh0cmFzSW5pdGlhbGl6ZXIgPSB7Ci0gIGluaXRpYWxpemU6IGZ1bmN0aW9uKGNsYXNzTmFtZSwgdml6KSB7Ci0gICAgdGhpcy52aXogPSB2aXo7Ci0gICAgdGhpcy5jYW52YXMgPSB2aXouY2FudmFzOwotICAgIHRoaXMuY29uZmlnID0gdml6LmNvbmZpZ1tjbGFzc05hbWVdOwotICAgIHRoaXMubm9kZVR5cGVzID0gdml6LmZ4Lm5vZGVUeXBlczsKLSAgICB2YXIgdHlwZSA9IHRoaXMuY29uZmlnLnR5cGU7Ci0gICAgdGhpcy5kb20gPSB0eXBlID09ICdhdXRvJz8gKHZpei5jb25maWcuTGFiZWwudHlwZSAhPSAnTmF0aXZlJykgOiAodHlwZSAhPSAnTmF0aXZlJyk7Ci0gICAgdGhpcy5sYWJlbENvbnRhaW5lciA9IHRoaXMuZG9tICYmIHZpei5sYWJlbHMuZ2V0TGFiZWxDb250YWluZXIoKTsKLSAgICB0aGlzLmlzRW5hYmxlZCgpICYmIHRoaXMuaW5pdGlhbGl6ZVBvc3QoKTsKLSAgfSwKLSAgaW5pdGlhbGl6ZVBvc3Q6ICQuZW1wdHksCi0gIHNldEFzUHJvcGVydHk6ICQubGFtYmRhKGZhbHNlKSwKLSAgaXNFbmFibGVkOiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5jb25maWcuZW5hYmxlOwotICB9LAotICBpc0xhYmVsOiBmdW5jdGlvbihlLCB3aW4sIGdyb3VwKSB7Ci0gICAgZSA9ICQuZXZlbnQuZ2V0KGUsIHdpbik7Ci0gICAgdmFyIGxhYmVsQ29udGFpbmVyID0gdGhpcy5sYWJlbENvbnRhaW5lciwKLSAgICAgICAgdGFyZ2V0ID0gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50LAotICAgICAgICByZWxhdGVkID0gZS5yZWxhdGVkVGFyZ2V0OwotICAgIGlmKGdyb3VwKSB7Ci0gICAgICByZXR1cm4gcmVsYXRlZCAmJiByZWxhdGVkID09IHRoaXMudml6LmNhbnZhcy5nZXRDdHgoKS5jYW52YXMgCi0gICAgICAgICAgJiYgISF0YXJnZXQgJiYgdGhpcy5pc0Rlc2NlbmRhbnRPZih0YXJnZXQsIGxhYmVsQ29udGFpbmVyKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuIHRoaXMuaXNEZXNjZW5kYW50T2YodGFyZ2V0LCBsYWJlbENvbnRhaW5lcik7Ci0gICAgfQotICB9LAotICBpc0Rlc2NlbmRhbnRPZjogZnVuY3Rpb24oZWxlbSwgcGFyKSB7Ci0gICAgd2hpbGUoZWxlbSAmJiBlbGVtLnBhcmVudE5vZGUpIHsKLSAgICAgIGlmKGVsZW0ucGFyZW50Tm9kZSA9PSBwYXIpCi0gICAgICAgIHJldHVybiBlbGVtOwotICAgICAgZWxlbSA9IGVsZW0ucGFyZW50Tm9kZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19OwotCi12YXIgRXZlbnRzSW50ZXJmYWNlID0gewotICBvbk1vdXNlVXA6ICQuZW1wdHksCi0gIG9uTW91c2VEb3duOiAkLmVtcHR5LAotICBvbk1vdXNlTW92ZTogJC5lbXB0eSwKLSAgb25Nb3VzZU92ZXI6ICQuZW1wdHksCi0gIG9uTW91c2VPdXQ6ICQuZW1wdHksCi0gIG9uTW91c2VXaGVlbDogJC5lbXB0eSwKLSAgb25Ub3VjaFN0YXJ0OiAkLmVtcHR5LAotICBvblRvdWNoTW92ZTogJC5lbXB0eSwKLSAgb25Ub3VjaEVuZDogJC5lbXB0eSwKLSAgb25Ub3VjaENhbmNlbDogJC5lbXB0eQotfTsKLQotdmFyIE1vdXNlRXZlbnRzTWFuYWdlciA9IG5ldyBDbGFzcyh7Ci0gIGluaXRpYWxpemU6IGZ1bmN0aW9uKHZpeikgewotICAgIHRoaXMudml6ID0gdml6OwotICAgIHRoaXMuY2FudmFzID0gdml6LmNhbnZhczsKLSAgICB0aGlzLm5vZGUgPSBmYWxzZTsKLSAgICB0aGlzLmVkZ2UgPSBmYWxzZTsKLSAgICB0aGlzLnJlZ2lzdGVyZWRPYmplY3RzID0gW107Ci0gICAgdGhpcy5hdHRhY2hFdmVudHMoKTsKLSAgfSwKLSAgCi0gIGF0dGFjaEV2ZW50czogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGh0bWxDYW52YXMgPSB0aGlzLmNhbnZhcy5nZXRFbGVtZW50KCksIAotICAgICAgICB0aGF0ID0gdGhpczsKLSAgICBodG1sQ2FudmFzLm9uY29udGV4dG1lbnUgPSAkLmxhbWJkYShmYWxzZSk7Ci0gICAgJC5hZGRFdmVudHMoaHRtbENhbnZhcywgewotICAgICAgJ21vdXNldXAnOiBmdW5jdGlvbihlLCB3aW4pIHsKLSAgICAgICAgdmFyIGV2ZW50ID0gJC5ldmVudC5nZXQoZSwgd2luKTsKLSAgICAgICAgdGhhdC5oYW5kbGVFdmVudCgnTW91c2VVcCcsIGUsIHdpbiwgCi0gICAgICAgICAgICB0aGF0Lm1ha2VFdmVudE9iamVjdChlLCB3aW4pLCAKLSAgICAgICAgICAgICQuZXZlbnQuaXNSaWdodENsaWNrKGV2ZW50KSk7Ci0gICAgICB9LAotICAgICAgJ21vdXNlZG93bic6IGZ1bmN0aW9uKGUsIHdpbikgewotICAgICAgICB2YXIgZXZlbnQgPSAkLmV2ZW50LmdldChlLCB3aW4pOwotICAgICAgICB0aGF0LmhhbmRsZUV2ZW50KCdNb3VzZURvd24nLCBlLCB3aW4sIHRoYXQubWFrZUV2ZW50T2JqZWN0KGUsIHdpbiksIAotICAgICAgICAgICAgJC5ldmVudC5pc1JpZ2h0Q2xpY2soZXZlbnQpKTsKLSAgICAgIH0sCi0gICAgICAnbW91c2Vtb3ZlJzogZnVuY3Rpb24oZSwgd2luKSB7Ci0gICAgICAgIHRoYXQuaGFuZGxlRXZlbnQoJ01vdXNlTW92ZScsIGUsIHdpbiwgdGhhdC5tYWtlRXZlbnRPYmplY3QoZSwgd2luKSk7Ci0gICAgICB9LAotICAgICAgJ21vdXNlb3Zlcic6IGZ1bmN0aW9uKGUsIHdpbikgewotICAgICAgICB0aGF0LmhhbmRsZUV2ZW50KCdNb3VzZU92ZXInLCBlLCB3aW4sIHRoYXQubWFrZUV2ZW50T2JqZWN0KGUsIHdpbikpOwotICAgICAgfSwKLSAgICAgICdtb3VzZW91dCc6IGZ1bmN0aW9uKGUsIHdpbikgewotICAgICAgICB0aGF0LmhhbmRsZUV2ZW50KCdNb3VzZU91dCcsIGUsIHdpbiwgdGhhdC5tYWtlRXZlbnRPYmplY3QoZSwgd2luKSk7Ci0gICAgICB9LAotICAgICAgJ3RvdWNoc3RhcnQnOiBmdW5jdGlvbihlLCB3aW4pIHsKLSAgICAgICAgdGhhdC5oYW5kbGVFdmVudCgnVG91Y2hTdGFydCcsIGUsIHdpbiwgdGhhdC5tYWtlRXZlbnRPYmplY3QoZSwgd2luKSk7Ci0gICAgICB9LAotICAgICAgJ3RvdWNobW92ZSc6IGZ1bmN0aW9uKGUsIHdpbikgewotICAgICAgICB0aGF0LmhhbmRsZUV2ZW50KCdUb3VjaE1vdmUnLCBlLCB3aW4sIHRoYXQubWFrZUV2ZW50T2JqZWN0KGUsIHdpbikpOwotICAgICAgfSwKLSAgICAgICd0b3VjaGVuZCc6IGZ1bmN0aW9uKGUsIHdpbikgewotICAgICAgICB0aGF0LmhhbmRsZUV2ZW50KCdUb3VjaEVuZCcsIGUsIHdpbiwgdGhhdC5tYWtlRXZlbnRPYmplY3QoZSwgd2luKSk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgLy9hdHRhY2ggbW91c2V3aGVlbCBldmVudAotICAgIHZhciBoYW5kbGVNb3VzZVdoZWVsID0gZnVuY3Rpb24oZSwgd2luKSB7Ci0gICAgICB2YXIgZXZlbnQgPSAkLmV2ZW50LmdldChlLCB3aW4pOwotICAgICAgdmFyIHdoZWVsID0gJC5ldmVudC5nZXRXaGVlbChldmVudCk7Ci0gICAgICB0aGF0LmhhbmRsZUV2ZW50KCdNb3VzZVdoZWVsJywgZSwgd2luLCB3aGVlbCk7Ci0gICAgfTsKLSAgICAvL1RPRE8obmljbyk6IHRoaXMgaXMgYSBob3JyaWJsZSBjaGVjayBmb3Igbm9uLWdlY2tvIGJyb3dzZXJzIQotICAgIGlmKCFkb2N1bWVudC5nZXRCb3hPYmplY3RGb3IgJiYgd2luZG93Lm1veklubmVyU2NyZWVuWCA9PSBudWxsKSB7Ci0gICAgICAkLmFkZEV2ZW50KGh0bWxDYW52YXMsICdtb3VzZXdoZWVsJywgaGFuZGxlTW91c2VXaGVlbCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGh0bWxDYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwnLCBoYW5kbGVNb3VzZVdoZWVsLCBmYWxzZSk7Ci0gICAgfQotICB9LAotICAKLSAgcmVnaXN0ZXI6IGZ1bmN0aW9uKG9iaikgewotICAgIHRoaXMucmVnaXN0ZXJlZE9iamVjdHMucHVzaChvYmopOwotICB9LAotICAKLSAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKCkgewotICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwKLSAgICAgICAgdHlwZSA9IGFyZ3Muc2hpZnQoKTsKLSAgICBmb3IodmFyIGk9MCwgcmVncz10aGlzLnJlZ2lzdGVyZWRPYmplY3RzLCBsPXJlZ3MubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgcmVnc1tpXVsnb24nICsgdHlwZV0uYXBwbHkocmVnc1tpXSwgYXJncyk7Ci0gICAgfQotICB9LAotICAKLSAgbWFrZUV2ZW50T2JqZWN0OiBmdW5jdGlvbihlLCB3aW4pIHsKLSAgICB2YXIgdGhhdCA9IHRoaXMsCi0gICAgICAgIGdyYXBoID0gdGhpcy52aXouZ3JhcGgsCi0gICAgICAgIGZ4ID0gdGhpcy52aXouZngsCi0gICAgICAgIG50eXBlcyA9IGZ4Lm5vZGVUeXBlcywKLSAgICAgICAgZXR5cGVzID0gZnguZWRnZVR5cGVzOwotICAgIHJldHVybiB7Ci0gICAgICBwb3M6IGZhbHNlLAotICAgICAgbm9kZTogZmFsc2UsCi0gICAgICBlZGdlOiBmYWxzZSwKLSAgICAgIGNvbnRhaW5zOiBmYWxzZSwKLSAgICAgIGdldE5vZGVDYWxsZWQ6IGZhbHNlLAotICAgICAgZ2V0RWRnZUNhbGxlZDogZmFsc2UsCi0gICAgICBnZXRQb3M6IGZ1bmN0aW9uKCkgewotICAgICAgICAvL1RPRE8obmljbyk6IGNoZWNrIHdoeSB0aGlzIGNhbid0IGJlIGNhY2hlIGFueW1vcmUgd2hlbiB1c2luZyBlZGdlIGRldGVjdGlvbgotICAgICAgICAvL2lmKHRoaXMucG9zKSByZXR1cm4gdGhpcy5wb3M7Ci0gICAgICAgIHZhciBjYW52YXMgPSB0aGF0LnZpei5jYW52YXMsCi0gICAgICAgICAgICBzID0gY2FudmFzLmdldFNpemUoKSwKLSAgICAgICAgICAgIHAgPSBjYW52YXMuZ2V0UG9zKCksCi0gICAgICAgICAgICBveCA9IGNhbnZhcy50cmFuc2xhdGVPZmZzZXRYLAotICAgICAgICAgICAgb3kgPSBjYW52YXMudHJhbnNsYXRlT2Zmc2V0WSwKLSAgICAgICAgICAgIHN4ID0gY2FudmFzLnNjYWxlT2Zmc2V0WCwKLSAgICAgICAgICAgIHN5ID0gY2FudmFzLnNjYWxlT2Zmc2V0WSwKLSAgICAgICAgICAgIHBvcyA9ICQuZXZlbnQuZ2V0UG9zKGUsIHdpbik7Ci0gICAgICAgIHRoaXMucG9zID0gewotICAgICAgICAgIHg6IChwb3MueCAtIHAueCAtIHMud2lkdGgvMiAtIG94KSAqIDEvc3gsCi0gICAgICAgICAgeTogKHBvcy55IC0gcC55IC0gcy5oZWlnaHQvMiAtIG95KSAqIDEvc3kKLSAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIHRoaXMucG9zOwotICAgICAgfSwKLSAgICAgIGdldE5vZGU6IGZ1bmN0aW9uKCkgewotICAgICAgICBpZih0aGlzLmdldE5vZGVDYWxsZWQpIHJldHVybiB0aGlzLm5vZGU7Ci0gICAgICAgIHRoaXMuZ2V0Tm9kZUNhbGxlZCA9IHRydWU7Ci0gICAgICAgIGZvcih2YXIgaWQgaW4gZ3JhcGgubm9kZXMpIHsKLSAgICAgICAgICB2YXIgbiA9IGdyYXBoLm5vZGVzW2lkXSwKLSAgICAgICAgICAgICAgZ2VvbSA9IG4gJiYgbnR5cGVzW24uZ2V0RGF0YSgndHlwZScpXSwKLSAgICAgICAgICAgICAgY29udGFpbnMgPSBnZW9tICYmIGdlb20uY29udGFpbnMgJiYgZ2VvbS5jb250YWlucy5jYWxsKGZ4LCBuLCB0aGlzLmdldFBvcygpKTsKLSAgICAgICAgICBpZihjb250YWlucykgewotICAgICAgICAgICAgdGhpcy5jb250YWlucyA9IGNvbnRhaW5zOwotICAgICAgICAgICAgcmV0dXJuIHRoYXQubm9kZSA9IHRoaXMubm9kZSA9IG47Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGF0Lm5vZGUgPSB0aGlzLm5vZGUgPSBmYWxzZTsKLSAgICAgIH0sCi0gICAgICBnZXRFZGdlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYodGhpcy5nZXRFZGdlQ2FsbGVkKSByZXR1cm4gdGhpcy5lZGdlOwotICAgICAgICB0aGlzLmdldEVkZ2VDYWxsZWQgPSB0cnVlOwotICAgICAgICB2YXIgaGFzaHNldCA9IHt9OwotICAgICAgICBmb3IodmFyIGlkIGluIGdyYXBoLmVkZ2VzKSB7Ci0gICAgICAgICAgdmFyIGVkZ2VGcm9tID0gZ3JhcGguZWRnZXNbaWRdOwotICAgICAgICAgIGhhc2hzZXRbaWRdID0gdHJ1ZTsKLSAgICAgICAgICBmb3IodmFyIGVkZ2VJZCBpbiBlZGdlRnJvbSkgewotICAgICAgICAgICAgaWYoZWRnZUlkIGluIGhhc2hzZXQpIGNvbnRpbnVlOwotICAgICAgICAgICAgdmFyIGUgPSBlZGdlRnJvbVtlZGdlSWRdLAotICAgICAgICAgICAgICAgIGdlb20gPSBlICYmIGV0eXBlc1tlLmdldERhdGEoJ3R5cGUnKV0sCi0gICAgICAgICAgICAgICAgY29udGFpbnMgPSBnZW9tICYmIGdlb20uY29udGFpbnMgJiYgZ2VvbS5jb250YWlucy5jYWxsKGZ4LCBlLCB0aGlzLmdldFBvcygpKTsKLSAgICAgICAgICAgIGlmKGNvbnRhaW5zKSB7Ci0gICAgICAgICAgICAgIHRoaXMuY29udGFpbnMgPSBjb250YWluczsKLSAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuZWRnZSA9IHRoaXMuZWRnZSA9IGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGF0LmVkZ2UgPSB0aGlzLmVkZ2UgPSBmYWxzZTsKLSAgICAgIH0sCi0gICAgICBnZXRDb250YWluczogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmKHRoaXMuZ2V0Tm9kZUNhbGxlZCkgcmV0dXJuIHRoaXMuY29udGFpbnM7Ci0gICAgICAgIHRoaXMuZ2V0Tm9kZSgpOwotICAgICAgICByZXR1cm4gdGhpcy5jb250YWluczsKLSAgICAgIH0KLSAgICB9OwotICB9Ci19KTsKLQotLyogCi0gKiBQcm92aWRlcyB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIDxOb2RlU3R5bGVzPiBhbmQgPFRpcHM+IGltcGxlbWVudGVkIAotICogYnkgYWxsIG1haW4gdmlzdWFsaXphdGlvbnMuCi0gKgotICovCi12YXIgRXh0cmFzID0gewotICBpbml0aWFsaXplRXh0cmFzOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbWVtID0gbmV3IE1vdXNlRXZlbnRzTWFuYWdlcih0aGlzKSwgdGhhdCA9IHRoaXM7Ci0gICAgJC5lYWNoKFsnTm9kZVN0eWxlcycsICdUaXBzJywgJ05hdmlnYXRpb24nLCAnRXZlbnRzJ10sIGZ1bmN0aW9uKGspIHsKLSAgICAgIHZhciBvYmogPSBuZXcgRXh0cmFzLkNsYXNzZXNba10oaywgdGhhdCk7Ci0gICAgICBpZihvYmouaXNFbmFibGVkKCkpIHsKLSAgICAgICAgbWVtLnJlZ2lzdGVyKG9iaik7Ci0gICAgICB9Ci0gICAgICBpZihvYmouc2V0QXNQcm9wZXJ0eSgpKSB7Ci0gICAgICAgIHRoYXRbay50b0xvd2VyQ2FzZSgpXSA9IG9iajsKLSAgICAgIH0KLSAgICB9KTsKLSAgfSAgIAotfTsKLQotRXh0cmFzLkNsYXNzZXMgPSB7fTsKLS8qCi0gIENsYXNzOiBFdmVudHMKLSAgIAotICBUaGlzIGNsYXNzIGRlZmluZXMgYW4gRXZlbnQgQVBJIHRvIGJlIGFjY2Vzc2VkIGJ5IHRoZSB1c2VyLgotICBUaGUgbWV0aG9kcyBpbXBsZW1lbnRlZCBhcmUgdGhlIG9uZXMgZGVmaW5lZCBpbiB0aGUgPE9wdGlvbnMuRXZlbnRzPiBvYmplY3QuCi0qLwotCi1FeHRyYXMuQ2xhc3Nlcy5FdmVudHMgPSBuZXcgQ2xhc3MoewotICBJbXBsZW1lbnRzOiBbRXh0cmFzSW5pdGlhbGl6ZXIsIEV2ZW50c0ludGVyZmFjZV0sCi0gIAotICBpbml0aWFsaXplUG9zdDogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5meCA9IHRoaXMudml6LmZ4OwotICAgIHRoaXMubnR5cGVzID0gdGhpcy52aXouZngubm9kZVR5cGVzOwotICAgIHRoaXMuZXR5cGVzID0gdGhpcy52aXouZnguZWRnZVR5cGVzOwotICAgIAotICAgIHRoaXMuaG92ZXJlZCA9IGZhbHNlOwotICAgIHRoaXMucHJlc3NlZCA9IGZhbHNlOwotICAgIHRoaXMudG91Y2hlZCA9IGZhbHNlOwotCi0gICAgdGhpcy50b3VjaE1vdmVkID0gZmFsc2U7Ci0gICAgdGhpcy5tb3ZlZCA9IGZhbHNlOwotICAgIAotICB9LAotICAKLSAgc2V0QXNQcm9wZXJ0eTogJC5sYW1iZGEodHJ1ZSksCi0gIAotICBvbk1vdXNlVXA6IGZ1bmN0aW9uKGUsIHdpbiwgZXZlbnQsIGlzUmlnaHRDbGljaykgewotICAgIHZhciBldnQgPSAkLmV2ZW50LmdldChlLCB3aW4pOwotICAgIGlmKCF0aGlzLm1vdmVkKSB7Ci0gICAgICBpZihpc1JpZ2h0Q2xpY2spIHsKLSAgICAgICAgdGhpcy5jb25maWcub25SaWdodENsaWNrKHRoaXMuaG92ZXJlZCwgZXZlbnQsIGV2dCk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLmNvbmZpZy5vbkNsaWNrKHRoaXMucHJlc3NlZCwgZXZlbnQsIGV2dCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmKHRoaXMucHJlc3NlZCkgewotICAgICAgaWYodGhpcy5tb3ZlZCkgewotICAgICAgICB0aGlzLmNvbmZpZy5vbkRyYWdFbmQodGhpcy5wcmVzc2VkLCBldmVudCwgZXZ0KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMuY29uZmlnLm9uRHJhZ0NhbmNlbCh0aGlzLnByZXNzZWQsIGV2ZW50LCBldnQpOwotICAgICAgfQotICAgICAgdGhpcy5wcmVzc2VkID0gdGhpcy5tb3ZlZCA9IGZhbHNlOwotICAgIH0KLSAgfSwKLQotICBvbk1vdXNlT3V0OiBmdW5jdGlvbihlLCB3aW4sIGV2ZW50KSB7Ci0gICAvL21vdXNlb3V0IGEgbGFiZWwKLSAgIHZhciBldnQgPSAkLmV2ZW50LmdldChlLCB3aW4pLCBsYWJlbDsKLSAgIGlmKHRoaXMuZG9tICYmIChsYWJlbCA9IHRoaXMuaXNMYWJlbChlLCB3aW4sIHRydWUpKSkgewotICAgICB0aGlzLmNvbmZpZy5vbk1vdXNlTGVhdmUodGhpcy52aXouZ3JhcGguZ2V0Tm9kZShsYWJlbC5pZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudCwgZXZ0KTsKLSAgICAgdGhpcy5ob3ZlcmVkID0gZmFsc2U7Ci0gICAgIHJldHVybjsKLSAgIH0KLSAgIC8vbW91c2VvdXQgY2FudmFzCi0gICB2YXIgcnQgPSBldnQucmVsYXRlZFRhcmdldCwKLSAgICAgICBjYW52YXNXaWRnZXQgPSB0aGlzLmNhbnZhcy5nZXRFbGVtZW50KCk7Ci0gICB3aGlsZShydCAmJiBydC5wYXJlbnROb2RlKSB7Ci0gICAgIGlmKGNhbnZhc1dpZGdldCA9PSBydC5wYXJlbnROb2RlKSByZXR1cm47Ci0gICAgIHJ0ID0gcnQucGFyZW50Tm9kZTsKLSAgIH0KLSAgIGlmKHRoaXMuaG92ZXJlZCkgewotICAgICB0aGlzLmNvbmZpZy5vbk1vdXNlTGVhdmUodGhpcy5ob3ZlcmVkLAotICAgICAgICAgZXZlbnQsIGV2dCk7Ci0gICAgIHRoaXMuaG92ZXJlZCA9IGZhbHNlOwotICAgfQotICB9LAotICAKLSAgb25Nb3VzZU92ZXI6IGZ1bmN0aW9uKGUsIHdpbiwgZXZlbnQpIHsKLSAgICAvL21vdXNlb3ZlciBhIGxhYmVsCi0gICAgdmFyIGV2dCA9ICQuZXZlbnQuZ2V0KGUsIHdpbiksIGxhYmVsOwotICAgIGlmKHRoaXMuZG9tICYmIChsYWJlbCA9IHRoaXMuaXNMYWJlbChlLCB3aW4sIHRydWUpKSkgewotICAgICAgdGhpcy5ob3ZlcmVkID0gdGhpcy52aXouZ3JhcGguZ2V0Tm9kZShsYWJlbC5pZCk7Ci0gICAgICB0aGlzLmNvbmZpZy5vbk1vdXNlRW50ZXIodGhpcy5ob3ZlcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LCBldnQpOwotICAgIH0KLSAgfSwKLSAgCi0gIG9uTW91c2VNb3ZlOiBmdW5jdGlvbihlLCB3aW4sIGV2ZW50KSB7Ci0gICB2YXIgbGFiZWwsIGV2dCA9ICQuZXZlbnQuZ2V0KGUsIHdpbik7Ci0gICBpZih0aGlzLnByZXNzZWQpIHsKLSAgICAgdGhpcy5tb3ZlZCA9IHRydWU7Ci0gICAgIHRoaXMuY29uZmlnLm9uRHJhZ01vdmUodGhpcy5wcmVzc2VkLCBldmVudCwgZXZ0KTsKLSAgICAgcmV0dXJuOwotICAgfQotICAgaWYodGhpcy5kb20pIHsKLSAgICAgdGhpcy5jb25maWcub25Nb3VzZU1vdmUodGhpcy5ob3ZlcmVkLAotICAgICAgICAgZXZlbnQsIGV2dCk7Ci0gICB9IGVsc2UgewotICAgICBpZih0aGlzLmhvdmVyZWQpIHsKLSAgICAgICB2YXIgaG4gPSB0aGlzLmhvdmVyZWQ7Ci0gICAgICAgdmFyIGdlb20gPSBobi5ub2RlRnJvbT8gdGhpcy5ldHlwZXNbaG4uZ2V0RGF0YSgndHlwZScpXSA6IHRoaXMubnR5cGVzW2huLmdldERhdGEoJ3R5cGUnKV07Ci0gICAgICAgdmFyIGNvbnRhaW5zID0gZ2VvbSAmJiBnZW9tLmNvbnRhaW5zIAotICAgICAgICAgJiYgZ2VvbS5jb250YWlucy5jYWxsKHRoaXMuZngsIGhuLCBldmVudC5nZXRQb3MoKSk7Ci0gICAgICAgaWYoY29udGFpbnMpIHsKLSAgICAgICAgIHRoaXMuY29uZmlnLm9uTW91c2VNb3ZlKGhuLCBldmVudCwgZXZ0KTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgICB9IGVsc2UgewotICAgICAgICAgdGhpcy5jb25maWcub25Nb3VzZUxlYXZlKGhuLCBldmVudCwgZXZ0KTsKLSAgICAgICAgIHRoaXMuaG92ZXJlZCA9IGZhbHNlOwotICAgICAgIH0KLSAgICAgfQotICAgICBpZih0aGlzLmhvdmVyZWQgPSAoZXZlbnQuZ2V0Tm9kZSgpIHx8ICh0aGlzLmNvbmZpZy5lbmFibGVGb3JFZGdlcyAmJiBldmVudC5nZXRFZGdlKCkpKSkgewotICAgICAgIHRoaXMuY29uZmlnLm9uTW91c2VFbnRlcih0aGlzLmhvdmVyZWQsIGV2ZW50LCBldnQpOwotICAgICB9IGVsc2UgewotICAgICAgIHRoaXMuY29uZmlnLm9uTW91c2VNb3ZlKGZhbHNlLCBldmVudCwgZXZ0KTsKLSAgICAgfQotICAgfQotICB9LAotICAKLSAgb25Nb3VzZVdoZWVsOiBmdW5jdGlvbihlLCB3aW4sIGRlbHRhKSB7Ci0gICAgdGhpcy5jb25maWcub25Nb3VzZVdoZWVsKGRlbHRhLCAkLmV2ZW50LmdldChlLCB3aW4pKTsKLSAgfSwKLSAgCi0gIG9uTW91c2VEb3duOiBmdW5jdGlvbihlLCB3aW4sIGV2ZW50KSB7Ci0gICAgdmFyIGV2dCA9ICQuZXZlbnQuZ2V0KGUsIHdpbiksIGxhYmVsOwotICAgIGlmKHRoaXMuZG9tKSB7Ci0gICAgICBpZihsYWJlbCA9IHRoaXMuaXNMYWJlbChlLCB3aW4pKSB7Ci0gICAgICAgIHRoaXMucHJlc3NlZCA9IHRoaXMudml6LmdyYXBoLmdldE5vZGUobGFiZWwuaWQpOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLnByZXNzZWQgPSBldmVudC5nZXROb2RlKCkgfHwgKHRoaXMuY29uZmlnLmVuYWJsZUZvckVkZ2VzICYmIGV2ZW50LmdldEVkZ2UoKSk7Ci0gICAgfQotICAgIHRoaXMucHJlc3NlZCAmJiB0aGlzLmNvbmZpZy5vbkRyYWdTdGFydCh0aGlzLnByZXNzZWQsIGV2ZW50LCBldnQpOwotICB9LAotICAKLSAgb25Ub3VjaFN0YXJ0OiBmdW5jdGlvbihlLCB3aW4sIGV2ZW50KSB7Ci0gICAgdmFyIGV2dCA9ICQuZXZlbnQuZ2V0KGUsIHdpbiksIGxhYmVsOwotICAgIGlmKHRoaXMuZG9tICYmIChsYWJlbCA9IHRoaXMuaXNMYWJlbChlLCB3aW4pKSkgewotICAgICAgdGhpcy50b3VjaGVkID0gdGhpcy52aXouZ3JhcGguZ2V0Tm9kZShsYWJlbC5pZCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHRoaXMudG91Y2hlZCA9IGV2ZW50LmdldE5vZGUoKSB8fCAodGhpcy5jb25maWcuZW5hYmxlRm9yRWRnZXMgJiYgZXZlbnQuZ2V0RWRnZSgpKTsKLSAgICB9Ci0gICAgdGhpcy50b3VjaGVkICYmIHRoaXMuY29uZmlnLm9uVG91Y2hTdGFydCh0aGlzLnRvdWNoZWQsIGV2ZW50LCBldnQpOwotICB9LAotICAKLSAgb25Ub3VjaE1vdmU6IGZ1bmN0aW9uKGUsIHdpbiwgZXZlbnQpIHsKLSAgICB2YXIgZXZ0ID0gJC5ldmVudC5nZXQoZSwgd2luKTsKLSAgICBpZih0aGlzLnRvdWNoZWQpIHsKLSAgICAgIHRoaXMudG91Y2hNb3ZlZCA9IHRydWU7Ci0gICAgICB0aGlzLmNvbmZpZy5vblRvdWNoTW92ZSh0aGlzLnRvdWNoZWQsIGV2ZW50LCBldnQpOwotICAgIH0KLSAgfSwKLSAgCi0gIG9uVG91Y2hFbmQ6IGZ1bmN0aW9uKGUsIHdpbiwgZXZlbnQpIHsKLSAgICB2YXIgZXZ0ID0gJC5ldmVudC5nZXQoZSwgd2luKTsKLSAgICBpZih0aGlzLnRvdWNoZWQpIHsKLSAgICAgIGlmKHRoaXMudG91Y2hNb3ZlZCkgewotICAgICAgICB0aGlzLmNvbmZpZy5vblRvdWNoRW5kKHRoaXMudG91Y2hlZCwgZXZlbnQsIGV2dCk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLmNvbmZpZy5vblRvdWNoQ2FuY2VsKHRoaXMudG91Y2hlZCwgZXZlbnQsIGV2dCk7Ci0gICAgICB9Ci0gICAgICB0aGlzLnRvdWNoZWQgPSB0aGlzLnRvdWNoTW92ZWQgPSBmYWxzZTsKLSAgICB9Ci0gIH0KLX0pOwotCi0vKgotICAgQ2xhc3M6IFRpcHMKLSAgICAKLSAgIEEgY2xhc3MgY29udGFpbmluZyB0aXAgcmVsYXRlZCBmdW5jdGlvbnMuIFRoaXMgY2xhc3MgaXMgdXNlZCBpbnRlcm5hbGx5LgotICAgCi0gICBVc2VkIGJ5OgotICAgCi0gICA8U1Q+LCA8U3VuYnVyc3Q+LCA8SHlwZXJ0cmVlPiwgPFJHcmFwaD4sIDxUTT4sIDxGb3JjZURpcmVjdGVkPiwgPEljaWNsZT4KLSAgIAotICAgU2VlIGFsc286Ci0gICAKLSAgIDxPcHRpb25zLlRpcHM+Ci0qLwotCi1FeHRyYXMuQ2xhc3Nlcy5UaXBzID0gbmV3IENsYXNzKHsKLSAgSW1wbGVtZW50czogW0V4dHJhc0luaXRpYWxpemVyLCBFdmVudHNJbnRlcmZhY2VdLAotICAKLSAgaW5pdGlhbGl6ZVBvc3Q6IGZ1bmN0aW9uKCkgewotICAgIC8vYWRkIERPTSB0b29sdGlwCi0gICAgaWYoZG9jdW1lbnQuYm9keSkgewotICAgICAgdmFyIHRpcCA9ICQoJ190b29sdGlwJykgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICB0aXAuaWQgPSAnX3Rvb2x0aXAnOwotICAgICAgdGlwLmNsYXNzTmFtZSA9ICd0aXAnOwotICAgICAgJC5leHRlbmQodGlwLnN0eWxlLCB7Ci0gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLAotICAgICAgICBkaXNwbGF5OiAnbm9uZScsCi0gICAgICAgIHpJbmRleDogMTMwMDAKLSAgICAgIH0pOwotICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aXApOwotICAgICAgdGhpcy50aXAgPSB0aXA7Ci0gICAgICB0aGlzLm5vZGUgPSBmYWxzZTsKLSAgICB9Ci0gIH0sCi0gIAotICBzZXRBc1Byb3BlcnR5OiAkLmxhbWJkYSh0cnVlKSwKLSAgCi0gIG9uTW91c2VPdXQ6IGZ1bmN0aW9uKGUsIHdpbikgewotICAgIC8vbW91c2VvdXQgYSBsYWJlbAotICAgIHZhciBldnQgPSAkLmV2ZW50LmdldChlLCB3aW4pOwotICAgIGlmKHRoaXMuZG9tICYmIHRoaXMuaXNMYWJlbChlLCB3aW4sIHRydWUpKSB7Ci0gICAgICB0aGlzLmhpZGUodHJ1ZSk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vbW91c2VvdXQgY2FudmFzCi0gICAgdmFyIHJ0ID0gZS5yZWxhdGVkVGFyZ2V0LAotICAgICAgICBjYW52YXNXaWRnZXQgPSB0aGlzLmNhbnZhcy5nZXRFbGVtZW50KCk7Ci0gICAgd2hpbGUocnQgJiYgcnQucGFyZW50Tm9kZSkgewotICAgICAgaWYoY2FudmFzV2lkZ2V0ID09IHJ0LnBhcmVudE5vZGUpIHJldHVybjsKLSAgICAgIHJ0ID0gcnQucGFyZW50Tm9kZTsKLSAgICB9Ci0gICAgdGhpcy5oaWRlKGZhbHNlKTsKLSAgfSwKLSAgCi0gIG9uTW91c2VPdmVyOiBmdW5jdGlvbihlLCB3aW4pIHsKLSAgICAvL21vdXNlb3ZlciBhIGxhYmVsCi0gICAgdmFyIGxhYmVsOwotICAgIGlmKHRoaXMuZG9tICYmIChsYWJlbCA9IHRoaXMuaXNMYWJlbChlLCB3aW4sIGZhbHNlKSkpIHsKLSAgICAgIHRoaXMubm9kZSA9IHRoaXMudml6LmdyYXBoLmdldE5vZGUobGFiZWwuaWQpOwotICAgICAgdGhpcy5jb25maWcub25TaG93KHRoaXMudGlwLCB0aGlzLm5vZGUsIGxhYmVsKTsKLSAgICB9Ci0gIH0sCi0gIAotICBvbk1vdXNlTW92ZTogZnVuY3Rpb24oZSwgd2luLCBvcHQpIHsKLSAgICBpZih0aGlzLmRvbSAmJiB0aGlzLmlzTGFiZWwoZSwgd2luKSkgewotICAgICAgdGhpcy5zZXRUb29sdGlwUG9zaXRpb24oJC5ldmVudC5nZXRQb3MoZSwgd2luKSk7Ci0gICAgfQotICAgIGlmKCF0aGlzLmRvbSkgewotICAgICAgdmFyIG5vZGUgPSBvcHQuZ2V0Tm9kZSgpOwotICAgICAgaWYoIW5vZGUpIHsKLSAgICAgICAgdGhpcy5oaWRlKHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBpZih0aGlzLmNvbmZpZy5mb3JjZSB8fCAhdGhpcy5ub2RlIHx8IHRoaXMubm9kZS5pZCAhPSBub2RlLmlkKSB7Ci0gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7Ci0gICAgICAgIHRoaXMuY29uZmlnLm9uU2hvdyh0aGlzLnRpcCwgbm9kZSwgb3B0LmdldENvbnRhaW5zKCkpOwotICAgICAgfQotICAgICAgdGhpcy5zZXRUb29sdGlwUG9zaXRpb24oJC5ldmVudC5nZXRQb3MoZSwgd2luKSk7Ci0gICAgfQotICB9LAotICAKLSAgc2V0VG9vbHRpcFBvc2l0aW9uOiBmdW5jdGlvbihwb3MpIHsKLSAgICB2YXIgdGlwID0gdGhpcy50aXAsIAotICAgICAgICBzdHlsZSA9IHRpcC5zdHlsZSwgCi0gICAgICAgIGNvbnQgPSB0aGlzLmNvbmZpZzsKLSAgICBzdHlsZS5kaXNwbGF5ID0gJyc7Ci0gICAgLy9nZXQgd2luZG93IGRpbWVuc2lvbnMKLSAgICB2YXIgd2luID0gewotICAgICAgJ2hlaWdodCc6IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0LAotICAgICAgJ3dpZHRoJzogZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aAotICAgIH07Ci0gICAgLy9nZXQgdG9vbHRpcCBkaW1lbnNpb25zCi0gICAgdmFyIG9iaiA9IHsKLSAgICAgICd3aWR0aCc6IHRpcC5vZmZzZXRXaWR0aCwKLSAgICAgICdoZWlnaHQnOiB0aXAub2Zmc2V0SGVpZ2h0ICAKLSAgICB9OwotICAgIC8vc2V0IHRvb2x0aXAgcG9zaXRpb24KLSAgICB2YXIgeCA9IGNvbnQub2Zmc2V0WCwgeSA9IGNvbnQub2Zmc2V0WTsKLSAgICBzdHlsZS50b3AgPSAoKHBvcy55ICsgeSArIG9iai5oZWlnaHQgPiB3aW4uaGVpZ2h0KT8gIAotICAgICAgICAocG9zLnkgLSBvYmouaGVpZ2h0IC0geSkgOiBwb3MueSArIHkpICsgJ3B4JzsKLSAgICBzdHlsZS5sZWZ0ID0gKChwb3MueCArIG9iai53aWR0aCArIHggPiB3aW4ud2lkdGgpPyAKLSAgICAgICAgKHBvcy54IC0gb2JqLndpZHRoIC0geCkgOiBwb3MueCArIHgpICsgJ3B4JzsKLSAgfSwKLSAgCi0gIGhpZGU6IGZ1bmN0aW9uKHRyaWdnZXJDYWxsYmFjaykgewotICAgIHRoaXMudGlwLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgdHJpZ2dlckNhbGxiYWNrICYmIHRoaXMuY29uZmlnLm9uSGlkZSgpOwotICB9Ci19KTsKLQotLyoKLSAgQ2xhc3M6IE5vZGVTdHlsZXMKLSAgIAotICBDaGFuZ2Ugbm9kZSBzdHlsZXMgd2hlbiBjbGlja2luZyBvciBob3ZlcmluZyBhIG5vZGUuIFRoaXMgY2xhc3MgaXMgdXNlZCBpbnRlcm5hbGx5LgotICAKLSAgVXNlZCBieToKLSAgCi0gIDxTVD4sIDxTdW5idXJzdD4sIDxIeXBlcnRyZWU+LCA8UkdyYXBoPiwgPFRNPiwgPEZvcmNlRGlyZWN0ZWQ+LCA8SWNpY2xlPgotICAKLSAgU2VlIGFsc286Ci0gIAotICA8T3B0aW9ucy5Ob2RlU3R5bGVzPgotKi8KLUV4dHJhcy5DbGFzc2VzLk5vZGVTdHlsZXMgPSBuZXcgQ2xhc3MoewotICBJbXBsZW1lbnRzOiBbRXh0cmFzSW5pdGlhbGl6ZXIsIEV2ZW50c0ludGVyZmFjZV0sCi0gIAotICBpbml0aWFsaXplUG9zdDogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5meCA9IHRoaXMudml6LmZ4OwotICAgIHRoaXMudHlwZXMgPSB0aGlzLnZpei5meC5ub2RlVHlwZXM7Ci0gICAgdGhpcy5uU3R5bGVzID0gdGhpcy5jb25maWc7Ci0gICAgdGhpcy5ub2RlU3R5bGVzT25Ib3ZlciA9IHRoaXMublN0eWxlcy5zdHlsZXNIb3ZlcjsKLSAgICB0aGlzLm5vZGVTdHlsZXNPbkNsaWNrID0gdGhpcy5uU3R5bGVzLnN0eWxlc0NsaWNrOwotICAgIHRoaXMuaG92ZXJlZE5vZGUgPSBmYWxzZTsKLSAgICB0aGlzLmZ4Lm5vZGVGeEFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb24oKTsKLSAgICAKLSAgICB0aGlzLmRvd24gPSBmYWxzZTsKLSAgICB0aGlzLm1vdmUgPSBmYWxzZTsKLSAgfSwKLSAgCi0gIG9uTW91c2VPdXQ6IGZ1bmN0aW9uKGUsIHdpbikgewotICAgIHRoaXMuZG93biA9IHRoaXMubW92ZSA9IGZhbHNlOwotICAgIGlmKCF0aGlzLmhvdmVyZWROb2RlKSByZXR1cm47Ci0gICAgLy9tb3VzZW91dCBhIGxhYmVsCi0gICAgaWYodGhpcy5kb20gJiYgdGhpcy5pc0xhYmVsKGUsIHdpbiwgdHJ1ZSkpIHsKLSAgICAgIHRoaXMudG9nZ2xlU3R5bGVzT25Ib3Zlcih0aGlzLmhvdmVyZWROb2RlLCBmYWxzZSk7Ci0gICAgfQotICAgIC8vbW91c2VvdXQgY2FudmFzCi0gICAgdmFyIHJ0ID0gZS5yZWxhdGVkVGFyZ2V0LAotICAgICAgICBjYW52YXNXaWRnZXQgPSB0aGlzLmNhbnZhcy5nZXRFbGVtZW50KCk7Ci0gICAgd2hpbGUocnQgJiYgcnQucGFyZW50Tm9kZSkgewotICAgICAgaWYoY2FudmFzV2lkZ2V0ID09IHJ0LnBhcmVudE5vZGUpIHJldHVybjsKLSAgICAgIHJ0ID0gcnQucGFyZW50Tm9kZTsKLSAgICB9Ci0gICAgdGhpcy50b2dnbGVTdHlsZXNPbkhvdmVyKHRoaXMuaG92ZXJlZE5vZGUsIGZhbHNlKTsKLSAgICB0aGlzLmhvdmVyZWROb2RlID0gZmFsc2U7Ci0gIH0sCi0gIAotICBvbk1vdXNlT3ZlcjogZnVuY3Rpb24oZSwgd2luKSB7Ci0gICAgLy9tb3VzZW92ZXIgYSBsYWJlbAotICAgIHZhciBsYWJlbDsKLSAgICBpZih0aGlzLmRvbSAmJiAobGFiZWwgPSB0aGlzLmlzTGFiZWwoZSwgd2luLCB0cnVlKSkpIHsKLSAgICAgIHZhciBub2RlID0gdGhpcy52aXouZ3JhcGguZ2V0Tm9kZShsYWJlbC5pZCk7Ci0gICAgICBpZihub2RlLnNlbGVjdGVkKSByZXR1cm47Ci0gICAgICB0aGlzLmhvdmVyZWROb2RlID0gbm9kZTsKLSAgICAgIHRoaXMudG9nZ2xlU3R5bGVzT25Ib3Zlcih0aGlzLmhvdmVyZWROb2RlLCB0cnVlKTsKLSAgICB9Ci0gIH0sCi0gIAotICBvbk1vdXNlRG93bjogZnVuY3Rpb24oZSwgd2luLCBldmVudCwgaXNSaWdodENsaWNrKSB7Ci0gICAgaWYoaXNSaWdodENsaWNrKSByZXR1cm47Ci0gICAgdmFyIGxhYmVsOwotICAgIGlmKHRoaXMuZG9tICYmIChsYWJlbCA9IHRoaXMuaXNMYWJlbChlLCB3aW4pKSkgewotICAgICAgdGhpcy5kb3duID0gdGhpcy52aXouZ3JhcGguZ2V0Tm9kZShsYWJlbC5pZCk7Ci0gICAgfSBlbHNlIGlmKCF0aGlzLmRvbSkgewotICAgICAgdGhpcy5kb3duID0gZXZlbnQuZ2V0Tm9kZSgpOwotICAgIH0KLSAgICB0aGlzLm1vdmUgPSBmYWxzZTsKLSAgfSwKLSAgCi0gIG9uTW91c2VVcDogZnVuY3Rpb24oZSwgd2luLCBldmVudCwgaXNSaWdodENsaWNrKSB7Ci0gICAgaWYoaXNSaWdodENsaWNrKSByZXR1cm47Ci0gICAgaWYoIXRoaXMubW92ZSkgewotICAgICAgdGhpcy5vbkNsaWNrKGV2ZW50LmdldE5vZGUoKSk7Ci0gICAgfQotICAgIHRoaXMuZG93biA9IHRoaXMubW92ZSA9IGZhbHNlOwotICB9LAotICAKLSAgZ2V0UmVzdG9yZWRTdHlsZXM6IGZ1bmN0aW9uKG5vZGUsIHR5cGUpIHsKLSAgICB2YXIgcmVzdG9yZWRTdHlsZXMgPSB7fSwgCi0gICAgICAgIG5TdHlsZXMgPSB0aGlzWydub2RlU3R5bGVzT24nICsgdHlwZV07Ci0gICAgZm9yKHZhciBwcm9wIGluIG5TdHlsZXMpIHsKLSAgICAgIHJlc3RvcmVkU3R5bGVzW3Byb3BdID0gbm9kZS5zdHlsZXNbJyQnICsgcHJvcF07Ci0gICAgfQotICAgIHJldHVybiByZXN0b3JlZFN0eWxlczsKLSAgfSwKLSAgCi0gIHRvZ2dsZVN0eWxlc09uSG92ZXI6IGZ1bmN0aW9uKG5vZGUsIHNldCkgewotICAgIGlmKHRoaXMubm9kZVN0eWxlc09uSG92ZXIpIHsKLSAgICAgIHRoaXMudG9nZ2xlU3R5bGVzT24oJ0hvdmVyJywgbm9kZSwgc2V0KTsKLSAgICB9Ci0gIH0sCi0KLSAgdG9nZ2xlU3R5bGVzT25DbGljazogZnVuY3Rpb24obm9kZSwgc2V0KSB7Ci0gICAgaWYodGhpcy5ub2RlU3R5bGVzT25DbGljaykgewotICAgICAgdGhpcy50b2dnbGVTdHlsZXNPbignQ2xpY2snLCBub2RlLCBzZXQpOwotICAgIH0KLSAgfSwKLSAgCi0gIHRvZ2dsZVN0eWxlc09uOiBmdW5jdGlvbih0eXBlLCBub2RlLCBzZXQpIHsKLSAgICB2YXIgdml6ID0gdGhpcy52aXo7Ci0gICAgdmFyIG5TdHlsZXMgPSB0aGlzLm5TdHlsZXM7Ci0gICAgaWYoc2V0KSB7Ci0gICAgICB2YXIgdGhhdCA9IHRoaXM7Ci0gICAgICBpZighbm9kZS5zdHlsZXMpIHsKLSAgICAgICAgbm9kZS5zdHlsZXMgPSAkLm1lcmdlKG5vZGUuZGF0YSwge30pOwotICAgICAgfQotICAgICAgZm9yKHZhciBzIGluIHRoaXNbJ25vZGVTdHlsZXNPbicgKyB0eXBlXSkgewotICAgICAgICB2YXIgJHMgPSAnJCcgKyBzOwotICAgICAgICBpZighKCRzIGluIG5vZGUuc3R5bGVzKSkgewotICAgICAgICAgICAgbm9kZS5zdHlsZXNbJHNdID0gbm9kZS5nZXREYXRhKHMpOyAKLSAgICAgICAgfQotICAgICAgfQotICAgICAgdml6LmZ4Lm5vZGVGeCgkLmV4dGVuZCh7Ci0gICAgICAgICdlbGVtZW50cyc6IHsKLSAgICAgICAgICAnaWQnOiBub2RlLmlkLAotICAgICAgICAgICdwcm9wZXJ0aWVzJzogdGhhdFsnbm9kZVN0eWxlc09uJyArIHR5cGVdCi0gICAgICAgICB9LAotICAgICAgICAgdHJhbnNpdGlvbjogVHJhbnMuUXVhcnQuZWFzZU91dCwKLSAgICAgICAgIGR1cmF0aW9uOjMwMCwKLSAgICAgICAgIGZwczo0MAotICAgICAgfSwgdGhpcy5jb25maWcpKTsKLSAgICB9IGVsc2UgewotICAgICAgdmFyIHJlc3RvcmVkU3R5bGVzID0gdGhpcy5nZXRSZXN0b3JlZFN0eWxlcyhub2RlLCB0eXBlKTsKLSAgICAgIHZpei5meC5ub2RlRngoJC5leHRlbmQoewotICAgICAgICAnZWxlbWVudHMnOiB7Ci0gICAgICAgICAgJ2lkJzogbm9kZS5pZCwKLSAgICAgICAgICAncHJvcGVydGllcyc6IHJlc3RvcmVkU3R5bGVzCi0gICAgICAgICB9LAotICAgICAgICAgdHJhbnNpdGlvbjogVHJhbnMuUXVhcnQuZWFzZU91dCwKLSAgICAgICAgIGR1cmF0aW9uOjMwMCwKLSAgICAgICAgIGZwczo0MAotICAgICAgfSwgdGhpcy5jb25maWcpKTsKLSAgICB9Ci0gIH0sCi0KLSAgb25DbGljazogZnVuY3Rpb24obm9kZSkgewotICAgIGlmKCFub2RlKSByZXR1cm47Ci0gICAgdmFyIG5TdHlsZXMgPSB0aGlzLm5vZGVTdHlsZXNPbkNsaWNrOwotICAgIGlmKCFuU3R5bGVzKSByZXR1cm47Ci0gICAgLy9pZiB0aGUgbm9kZSBpcyBzZWxlY3RlZCB0aGVuIHVuc2VsZWN0IGl0Ci0gICAgaWYobm9kZS5zZWxlY3RlZCkgewotICAgICAgdGhpcy50b2dnbGVTdHlsZXNPbkNsaWNrKG5vZGUsIGZhbHNlKTsKLSAgICAgIGRlbGV0ZSBub2RlLnNlbGVjdGVkOwotICAgIH0gZWxzZSB7Ci0gICAgICAvL3Vuc2VsZWN0IGFsbCBzZWxlY3RlZCBub2Rlcy4uLgotICAgICAgdGhpcy52aXouZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgewotICAgICAgICBpZihuLnNlbGVjdGVkKSB7Ci0gICAgICAgICAgZm9yKHZhciBzIGluIG5TdHlsZXMpIHsKLSAgICAgICAgICAgIG4uc2V0RGF0YShzLCBuLnN0eWxlc1snJCcgKyBzXSwgJ2VuZCcpOwotICAgICAgICAgIH0KLSAgICAgICAgICBkZWxldGUgbi5zZWxlY3RlZDsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgICAvL3NlbGVjdCBjbGlja2VkIG5vZGUKLSAgICAgIHRoaXMudG9nZ2xlU3R5bGVzT25DbGljayhub2RlLCB0cnVlKTsKLSAgICAgIG5vZGUuc2VsZWN0ZWQgPSB0cnVlOwotICAgICAgZGVsZXRlIG5vZGUuaG92ZXJlZDsKLSAgICAgIHRoaXMuaG92ZXJlZE5vZGUgPSBmYWxzZTsKLSAgICB9Ci0gIH0sCi0gIAotICBvbk1vdXNlTW92ZTogZnVuY3Rpb24oZSwgd2luLCBldmVudCkgewotICAgIC8vaWYgbW91c2UgYnV0dG9uIGlzIGRvd24gYW5kIG1vdmluZyBzZXQgbW92ZT10cnVlCi0gICAgaWYodGhpcy5kb3duKSB0aGlzLm1vdmUgPSB0cnVlOwotICAgIC8vYWxyZWFkeSBoYW5kbGVkIGJ5IG1vdXNlb3Zlci9vdXQKLSAgICBpZih0aGlzLmRvbSAmJiB0aGlzLmlzTGFiZWwoZSwgd2luKSkgcmV0dXJuOwotICAgIHZhciBuU3R5bGVzID0gdGhpcy5ub2RlU3R5bGVzT25Ib3ZlcjsKLSAgICBpZighblN0eWxlcykgcmV0dXJuOwotICAgIAotICAgIGlmKCF0aGlzLmRvbSkgewotICAgICAgaWYodGhpcy5ob3ZlcmVkTm9kZSkgewotICAgICAgICB2YXIgZ2VvbSA9IHRoaXMudHlwZXNbdGhpcy5ob3ZlcmVkTm9kZS5nZXREYXRhKCd0eXBlJyldOwotICAgICAgICB2YXIgY29udGFpbnMgPSBnZW9tICYmIGdlb20uY29udGFpbnMgJiYgZ2VvbS5jb250YWlucy5jYWxsKHRoaXMuZngsIAotICAgICAgICAgICAgdGhpcy5ob3ZlcmVkTm9kZSwgZXZlbnQuZ2V0UG9zKCkpOwotICAgICAgICBpZihjb250YWlucykgcmV0dXJuOwotICAgICAgfQotICAgICAgdmFyIG5vZGUgPSBldmVudC5nZXROb2RlKCk7Ci0gICAgICAvL2lmIG5vIG5vZGUgaXMgYmVpbmcgaG92ZXJlZCB0aGVuIGp1c3QgZXhpdAotICAgICAgaWYoIXRoaXMuaG92ZXJlZE5vZGUgJiYgIW5vZGUpIHJldHVybjsKLSAgICAgIC8vaWYgdGhlIG5vZGUgaXMgaG92ZXJlZCB0aGVuIGV4aXQKLSAgICAgIGlmKG5vZGUuaG92ZXJlZCkgcmV0dXJuOwotICAgICAgLy9zZWxlY3QgaG92ZXJlZCBub2RlCi0gICAgICBpZihub2RlICYmICFub2RlLnNlbGVjdGVkKSB7Ci0gICAgICAgIC8vY2hlY2sgaWYgYW4gYW5pbWF0aW9uIGlzIHJ1bm5pbmcgYW5kIGV4aXQgaXQKLSAgICAgICAgdGhpcy5meC5ub2RlRnhBbmltYXRpb24uc3RvcFRpbWVyKCk7Ci0gICAgICAgIC8vdW5zZWxlY3QgYWxsIGhvdmVyZWQgbm9kZXMuLi4KLSAgICAgICAgdGhpcy52aXouZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgewotICAgICAgICAgIGlmKG4uaG92ZXJlZCAmJiAhbi5zZWxlY3RlZCkgewotICAgICAgICAgICAgZm9yKHZhciBzIGluIG5TdHlsZXMpIHsKLSAgICAgICAgICAgICAgbi5zZXREYXRhKHMsIG4uc3R5bGVzWyckJyArIHNdLCAnZW5kJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWxldGUgbi5ob3ZlcmVkOwotICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIC8vc2VsZWN0IGhvdmVyZWQgbm9kZQotICAgICAgICBub2RlLmhvdmVyZWQgPSB0cnVlOwotICAgICAgICB0aGlzLmhvdmVyZWROb2RlID0gbm9kZTsKLSAgICAgICAgdGhpcy50b2dnbGVTdHlsZXNPbkhvdmVyKG5vZGUsIHRydWUpOwotICAgICAgfSBlbHNlIGlmKHRoaXMuaG92ZXJlZE5vZGUgJiYgIXRoaXMuaG92ZXJlZE5vZGUuc2VsZWN0ZWQpIHsKLSAgICAgICAgLy9jaGVjayBpZiBhbiBhbmltYXRpb24gaXMgcnVubmluZyBhbmQgZXhpdCBpdAotICAgICAgICB0aGlzLmZ4Lm5vZGVGeEFuaW1hdGlvbi5zdG9wVGltZXIoKTsKLSAgICAgICAgLy91bnNlbGVjdCBob3ZlcmVkIG5vZGUKLSAgICAgICAgdGhpcy50b2dnbGVTdHlsZXNPbkhvdmVyKHRoaXMuaG92ZXJlZE5vZGUsIGZhbHNlKTsKLSAgICAgICAgZGVsZXRlIHRoaXMuaG92ZXJlZE5vZGUuaG92ZXJlZDsKLSAgICAgICAgdGhpcy5ob3ZlcmVkTm9kZSA9IGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgfQotfSk7Ci0KLUV4dHJhcy5DbGFzc2VzLk5hdmlnYXRpb24gPSBuZXcgQ2xhc3MoewotICBJbXBsZW1lbnRzOiBbRXh0cmFzSW5pdGlhbGl6ZXIsIEV2ZW50c0ludGVyZmFjZV0sCi0gIAotICBpbml0aWFsaXplUG9zdDogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5wb3MgPSBmYWxzZTsKLSAgICB0aGlzLnByZXNzZWQgPSBmYWxzZTsKLSAgfSwKLSAgCi0gIG9uTW91c2VXaGVlbDogZnVuY3Rpb24oZSwgd2luLCBzY3JvbGwpIHsKLSAgICBpZighdGhpcy5jb25maWcuem9vbWluZykgcmV0dXJuOwotICAgICQuZXZlbnQuc3RvcCgkLmV2ZW50LmdldChlLCB3aW4pKTsKLSAgICB2YXIgdmFsID0gdGhpcy5jb25maWcuem9vbWluZyAvIDEwMDAsCi0gICAgICAgIGFucyA9IDEgKyBzY3JvbGwgKiB2YWw7Ci0gICAgdGhpcy5jYW52YXMuc2NhbGUoYW5zLCBhbnMpOwotICB9LAotICAKLSAgb25Nb3VzZURvd246IGZ1bmN0aW9uKGUsIHdpbiwgZXZlbnRJbmZvKSB7Ci0gICAgaWYoIXRoaXMuY29uZmlnLnBhbm5pbmcpIHJldHVybjsKLSAgICBpZih0aGlzLmNvbmZpZy5wYW5uaW5nID09ICdhdm9pZCBub2RlcycgJiYgKHRoaXMuZG9tPyB0aGlzLmlzTGFiZWwoZSwgd2luKSA6IGV2ZW50SW5mby5nZXROb2RlKCkpKSByZXR1cm47Ci0gICAgdGhpcy5wcmVzc2VkID0gdHJ1ZTsKLSAgICB0aGlzLnBvcyA9IGV2ZW50SW5mby5nZXRQb3MoKTsKLSAgICB2YXIgY2FudmFzID0gdGhpcy5jYW52YXMsCi0gICAgICAgIG94ID0gY2FudmFzLnRyYW5zbGF0ZU9mZnNldFgsCi0gICAgICAgIG95ID0gY2FudmFzLnRyYW5zbGF0ZU9mZnNldFksCi0gICAgICAgIHN4ID0gY2FudmFzLnNjYWxlT2Zmc2V0WCwKLSAgICAgICAgc3kgPSBjYW52YXMuc2NhbGVPZmZzZXRZOwotICAgIHRoaXMucG9zLnggKj0gc3g7Ci0gICAgdGhpcy5wb3MueCArPSBveDsKLSAgICB0aGlzLnBvcy55ICo9IHN5OwotICAgIHRoaXMucG9zLnkgKz0gb3k7Ci0gIH0sCi0gIAotICBvbk1vdXNlTW92ZTogZnVuY3Rpb24oZSwgd2luLCBldmVudEluZm8pIHsKLSAgICBpZighdGhpcy5jb25maWcucGFubmluZykgcmV0dXJuOwotICAgIGlmKCF0aGlzLnByZXNzZWQpIHJldHVybjsKLSAgICBpZih0aGlzLmNvbmZpZy5wYW5uaW5nID09ICdhdm9pZCBub2RlcycgJiYgKHRoaXMuZG9tPyB0aGlzLmlzTGFiZWwoZSwgd2luKSA6IGV2ZW50SW5mby5nZXROb2RlKCkpKSByZXR1cm47Ci0gICAgdmFyIHRoaXNwb3MgPSB0aGlzLnBvcywgCi0gICAgICAgIGN1cnJlbnRQb3MgPSBldmVudEluZm8uZ2V0UG9zKCksCi0gICAgICAgIGNhbnZhcyA9IHRoaXMuY2FudmFzLAotICAgICAgICBveCA9IGNhbnZhcy50cmFuc2xhdGVPZmZzZXRYLAotICAgICAgICBveSA9IGNhbnZhcy50cmFuc2xhdGVPZmZzZXRZLAotICAgICAgICBzeCA9IGNhbnZhcy5zY2FsZU9mZnNldFgsCi0gICAgICAgIHN5ID0gY2FudmFzLnNjYWxlT2Zmc2V0WTsKLSAgICBjdXJyZW50UG9zLnggKj0gc3g7Ci0gICAgY3VycmVudFBvcy55ICo9IHN5OwotICAgIGN1cnJlbnRQb3MueCArPSBveDsKLSAgICBjdXJyZW50UG9zLnkgKz0gb3k7Ci0gICAgdmFyIHggPSBjdXJyZW50UG9zLnggLSB0aGlzcG9zLngsCi0gICAgICAgIHkgPSBjdXJyZW50UG9zLnkgLSB0aGlzcG9zLnk7Ci0gICAgdGhpcy5wb3MgPSBjdXJyZW50UG9zOwotICAgIHRoaXMuY2FudmFzLnRyYW5zbGF0ZSh4ICogMS9zeCwgeSAqIDEvc3kpOwotICB9LAotICAKLSAgb25Nb3VzZVVwOiBmdW5jdGlvbihlLCB3aW4sIGV2ZW50SW5mbywgaXNSaWdodENsaWNrKSB7Ci0gICAgaWYoIXRoaXMuY29uZmlnLnBhbm5pbmcpIHJldHVybjsKLSAgICB0aGlzLnByZXNzZWQgPSBmYWxzZTsKLSAgfQotfSk7Ci0KLQotLyoKLSAqIEZpbGU6IENhbnZhcy5qcwotICoKLSAqLwotCi0vKgotIENsYXNzOiBDYW52YXMKLSAKLSAJQSBjYW52YXMgd2lkZ2V0IHVzZWQgYnkgYWxsIHZpc3VhbGl6YXRpb25zLiBUaGUgY2FudmFzIG9iamVjdCBjYW4gYmUgYWNjZXNzZWQgYnkgZG9pbmcgKnZpei5jYW52YXMqLiBJZiB5b3Ugd2FudCB0byAKLSAJa25vdyBtb3JlIGFib3V0IDxDYW52YXM+IG9wdGlvbnMgdGFrZSBhIGxvb2sgYXQgPE9wdGlvbnMuQ2FudmFzPi4KLSAKLSBBIGNhbnZhcyB3aWRnZXQgaXMgYSBzZXQgb2YgRE9NIGVsZW1lbnRzIHRoYXQgd3JhcCB0aGUgbmF0aXZlIGNhbnZhcyBET00gRWxlbWVudCBwcm92aWRpbmcgYSBjb25zaXN0ZW50IEFQSSBhbmQgYmVoYXZpb3IgCi0gYWNyb3NzIGFsbCBicm93c2Vycy4gSXQgY2FuIGFsc28gaW5jbHVkZSBFbGVtZW50cyB0byBhZGQgRE9NIChTVkcgb3IgSFRNTCkgbGFiZWwgc3VwcG9ydCB0byBhbGwgdmlzdWFsaXphdGlvbnMuCi0gCi0gRXhhbXBsZToKLSAKLSBTdXBwb3NlIHdlIGhhdmUgdGhpcyBIVE1MCi0gCi0gKHN0YXJ0IGNvZGUgeG1sKQotIAk8ZGl2IGlkPSJpbmZvdmlzIj48L2Rpdj4KLSAoZW5kIGNvZGUpCi0gCi0gTm93IHdlIGNyZWF0ZSBhIG5ldyBWaXN1YWxpemF0aW9uCi0gCi0gKHN0YXJ0IGNvZGUganMpCi0gCXZhciB2aXogPSBuZXcgJGppdC5WaXooewotIAkJLy9XaGVyZSB0byBpbmplY3QgdGhlIGNhbnZhcy4gQW55IGRpdiBjb250YWluZXIgd2lsbCBkby4KLSAJCSdpbmplY3RJbnRvJzonaW5mb3ZpcycsCi0JCSAvL3dpZHRoIGFuZCBoZWlnaHQgZm9yIGNhbnZhcy4gCi0JCSAvL0RlZmF1bHQncyB0byB0aGUgY29udGFpbmVyIG9mZnNldFdpZHRoIGFuZCBIZWlnaHQuCi0JCSAnd2lkdGgnOiA5MDAsCi0JCSAnaGVpZ2h0Jzo1MDAKLQkgfSk7Ci0gKGVuZCBjb2RlKQotCi0gVGhlIGdlbmVyYXRlZCBIVE1MIHdpbGwgbG9vayBsaWtlIHRoaXMKLSAKLSAoc3RhcnQgY29kZSB4bWwpCi0gPGRpdiBpZD0iaW5mb3ZpcyI+Ci0gCTxkaXYgaWQ9ImluZm92aXMtY2FudmFzd2lkZ2V0IiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7Ij4KLSAJPGNhbnZhcyBpZD0iaW5mb3Zpcy1jYW52YXMiIHdpZHRoPTkwMCBoZWlnaHQ9NTAwCi0gCXN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6OTAwcHg7IGhlaWdodDo1MDBweDsiIC8+Ci0gCTxkaXYgaWQ9ImluZm92aXMtbGFiZWwiCi0gCXN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6OTAwcHg7IGhlaWdodDowcHgiPgotIAk8L2Rpdj4KLSAJPC9kaXY+Ci0gPC9kaXY+Ci0gKGVuZCBjb2RlKQotIAotIEFzIHlvdSBjYW4gc2VlLCB0aGUgZ2VuZXJhdGVkIEhUTUwgY29uc2lzdHMgb2YgYSBjYW52YXMgRE9NIEVsZW1lbnQgb2YgaWQgKmluZm92aXMtY2FudmFzKiBhbmQgYSBkaXYgbGFiZWwgY29udGFpbmVyCi0gb2YgaWQgKmluZm92aXMtbGFiZWwqLCB3cmFwcGVkIGluIGEgbWFpbiBkaXYgY29udGFpbmVyIG9mIGlkICppbmZvdmlzLWNhbnZhc3dpZGdldCouCi0gKi8KLQotdmFyIENhbnZhczsKLShmdW5jdGlvbigpIHsKLSAgLy9jaGVjayBmb3IgbmF0aXZlIGNhbnZhcyBzdXBwb3J0Ci0gIHZhciBjYW52YXNUeXBlID0gdHlwZW9mIEhUTUxDYW52YXNFbGVtZW50LAotICAgICAgc3VwcG9ydHNDYW52YXMgPSAoY2FudmFzVHlwZSA9PSAnb2JqZWN0JyB8fCBjYW52YXNUeXBlID09ICdmdW5jdGlvbicpOwotICAvL2NyZWF0ZSBlbGVtZW50IGZ1bmN0aW9uCi0gIGZ1bmN0aW9uICRFKHRhZywgcHJvcHMpIHsKLSAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKLSAgICBmb3IodmFyIHAgaW4gcHJvcHMpIHsKLSAgICAgIGlmKHR5cGVvZiBwcm9wc1twXSA9PSAib2JqZWN0IikgewotICAgICAgICAkLmV4dGVuZChlbGVtW3BdLCBwcm9wc1twXSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBlbGVtW3BdID0gcHJvcHNbcF07Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICh0YWcgPT0gImNhbnZhcyIgJiYgIXN1cHBvcnRzQ2FudmFzICYmIEdfdm1sQ2FudmFzTWFuYWdlcikgewotICAgICAgZWxlbSA9IEdfdm1sQ2FudmFzTWFuYWdlci5pbml0RWxlbWVudChkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW0pKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVsZW07Ci0gIH0KLSAgLy9jYW52YXMgd2lkZ2V0IHdoaWNoIHdlIHdpbGwgY2FsbCBqdXN0IENhbnZhcwotICAkaml0LkNhbnZhcyA9IENhbnZhcyA9IG5ldyBDbGFzcyh7Ci0gICAgY2FudmFzZXM6IFtdLAotICAgIHBvczogZmFsc2UsCi0gICAgZWxlbWVudDogZmFsc2UsCi0gICAgbGFiZWxDb250YWluZXI6IGZhbHNlLAotICAgIHRyYW5zbGF0ZU9mZnNldFg6IDAsCi0gICAgdHJhbnNsYXRlT2Zmc2V0WTogMCwKLSAgICBzY2FsZU9mZnNldFg6IDEsCi0gICAgc2NhbGVPZmZzZXRZOiAxLAotICAgIAotICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHZpeiwgb3B0KSB7Ci0gICAgICB0aGlzLnZpeiA9IHZpejsKLSAgICAgIHRoaXMub3B0ID0gdGhpcy5jb25maWcgPSBvcHQ7Ci0gICAgICB2YXIgaWQgPSAkLnR5cGUob3B0LmluamVjdEludG8pID09ICdzdHJpbmcnPyAKLSAgICAgICAgICBvcHQuaW5qZWN0SW50bzpvcHQuaW5qZWN0SW50by5pZCwKLSAgICAgICAgICB0eXBlID0gb3B0LnR5cGUsCi0gICAgICAgICAgaWRMYWJlbCA9IGlkICsgIi1sYWJlbCIsIAotICAgICAgICAgIHdyYXBwZXIgPSAkKGlkKSwKLSAgICAgICAgICB3aWR0aCA9IG9wdC53aWR0aCB8fCB3cmFwcGVyLm9mZnNldFdpZHRoLAotICAgICAgICAgIGhlaWdodCA9IG9wdC5oZWlnaHQgfHwgd3JhcHBlci5vZmZzZXRIZWlnaHQ7Ci0gICAgICB0aGlzLmlkID0gaWQ7Ci0gICAgICAvL2NhbnZhcyBvcHRpb25zCi0gICAgICB2YXIgY2FudmFzT3B0aW9ucyA9IHsKLSAgICAgICAgaW5qZWN0SW50bzogaWQsCi0gICAgICAgIHdpZHRoOiB3aWR0aCwKLSAgICAgICAgaGVpZ2h0OiBoZWlnaHQKLSAgICAgIH07Ci0gICAgICAvL2NyZWF0ZSBtYWluIHdyYXBwZXIKLSAgICAgIHRoaXMuZWxlbWVudCA9ICRFKCdkaXYnLCB7Ci0gICAgICAgICdpZCc6IGlkICsgJy1jYW52YXN3aWRnZXQnLAotICAgICAgICAnc3R5bGUnOiB7Ci0gICAgICAgICAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJywKLSAgICAgICAgICAnd2lkdGgnOiB3aWR0aCArICdweCcsCi0gICAgICAgICAgJ2hlaWdodCc6IGhlaWdodCArICdweCcKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgICAvL2NyZWF0ZSBsYWJlbCBjb250YWluZXIKLSAgICAgIHRoaXMubGFiZWxDb250YWluZXIgPSB0aGlzLmNyZWF0ZUxhYmVsQ29udGFpbmVyKG9wdC5MYWJlbC50eXBlLCAKLSAgICAgICAgICBpZExhYmVsLCBjYW52YXNPcHRpb25zKTsKLSAgICAgIC8vY3JlYXRlIHByaW1hcnkgY2FudmFzCi0gICAgICB0aGlzLmNhbnZhc2VzLnB1c2gobmV3IENhbnZhcy5CYXNlW3R5cGVdKHsKLSAgICAgICAgY29uZmlnOiAkLmV4dGVuZCh7aWRTdWZmaXg6ICctY2FudmFzJ30sIGNhbnZhc09wdGlvbnMpLAotICAgICAgICBwbG90OiBmdW5jdGlvbihiYXNlKSB7Ci0gICAgICAgICAgdml6LmZ4LnBsb3QoKTsKLSAgICAgICAgfSwKLSAgICAgICAgcmVzaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICB2aXoucmVmcmVzaCgpOwotICAgICAgICB9Ci0gICAgICB9KSk7Ci0gICAgICAvL2NyZWF0ZSBzZWNvbmRhcnkgY2FudmFzCi0gICAgICB2YXIgYmFjayA9IG9wdC5iYWNrZ3JvdW5kOwotICAgICAgaWYoYmFjaykgewotICAgICAgICB2YXIgYmFja0NhbnZhcyA9IG5ldyBDYW52YXMuQmFja2dyb3VuZFtiYWNrLnR5cGVdKHZpeiwgJC5leHRlbmQoYmFjaywgY2FudmFzT3B0aW9ucykpOwotICAgICAgICB0aGlzLmNhbnZhc2VzLnB1c2gobmV3IENhbnZhcy5CYXNlW3R5cGVdKGJhY2tDYW52YXMpKTsKLSAgICAgIH0KLSAgICAgIC8vaW5zZXJ0IGNhbnZhc2VzCi0gICAgICB2YXIgbGVuID0gdGhpcy5jYW52YXNlcy5sZW5ndGg7Ci0gICAgICB3aGlsZShsZW4tLSkgewotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jYW52YXNlc1tsZW5dLmNhbnZhcyk7Ci0gICAgICAgIGlmKGxlbiA+IDApIHsKLSAgICAgICAgICB0aGlzLmNhbnZhc2VzW2xlbl0ucGxvdCgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5sYWJlbENvbnRhaW5lcik7Ci0gICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7Ci0gICAgICAvL1VwZGF0ZSBjYW52YXMgcG9zaXRpb24gd2hlbiB0aGUgcGFnZSBpcyBzY3JvbGxlZC4KLSAgICAgIHZhciB0aW1lciA9IG51bGwsIHRoYXQgPSB0aGlzOwotICAgICAgJC5hZGRFdmVudCh3aW5kb3csICdzY3JvbGwnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKLSAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgIHRoYXQuZ2V0UG9zKHRydWUpOyAvL3VwZGF0ZSBjYW52YXMgcG9zaXRpb24KLSAgICAgICAgfSwgNTAwKTsKLSAgICAgIH0pOwotICAgIH0sCi0gICAgLyoKLSAgICAgIE1ldGhvZDogZ2V0Q3R4Ci0gICAgICAKLSAgICAgIFJldHVybnMgdGhlIG1haW4gY2FudmFzIGNvbnRleHQgb2JqZWN0Ci0gICAgICAKLSAgICAgIEV4YW1wbGU6Ci0gICAgICAKLSAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q3R4KCk7Ci0gICAgICAgLy9Ob3cgSSBjYW4gdXNlIHRoZSBuYXRpdmUgY2FudmFzIGNvbnRleHQKLSAgICAgICAvL2FuZCBmb3IgZXhhbXBsZSBjaGFuZ2Ugc29tZSBjYW52YXMgc3R5bGVzCi0gICAgICAgY3R4Lmdsb2JhbEFscGhhID0gMTsKLSAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGdldEN0eDogZnVuY3Rpb24oaSkgewotICAgICAgcmV0dXJuIHRoaXMuY2FudmFzZXNbaSB8fCAwXS5nZXRDdHgoKTsKLSAgICB9LAotICAgIC8qCi0gICAgICBNZXRob2Q6IGdldENvbmZpZwotICAgICAgCi0gICAgICBSZXR1cm5zIHRoZSBjdXJyZW50IENvbmZpZ3VyYXRpb24gZm9yIHRoaXMgQ2FudmFzIFdpZGdldC4KLSAgICAgIAotICAgICAgRXhhbXBsZToKLSAgICAgIAotICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgdmFyIGNvbmZpZyA9IGNhbnZhcy5nZXRDb25maWcoKTsKLSAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGdldENvbmZpZzogZnVuY3Rpb24oKSB7Ci0gICAgICByZXR1cm4gdGhpcy5vcHQ7Ci0gICAgfSwKLSAgICAvKgotICAgICAgTWV0aG9kOiBnZXRFbGVtZW50Ci0KLSAgICAgIFJldHVybnMgdGhlIG1haW4gQ2FudmFzIERPTSB3cmFwcGVyCi0gICAgICAKLSAgICAgIEV4YW1wbGU6Ci0gICAgICAKLSAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgIHZhciB3cmFwcGVyID0gY2FudmFzLmdldEVsZW1lbnQoKTsKLSAgICAgICAvL1JldHVybnMgPGRpdiBpZD0iaW5mb3Zpcy1jYW52YXN3aWRnZXQiIC4uLiA+Li4uPC9kaXY+IGFzIGVsZW1lbnQKLSAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGdldEVsZW1lbnQ6IGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudDsKLSAgICB9LAotICAgIC8qCi0gICAgICBNZXRob2Q6IGdldFNpemUKLSAgICAgIAotICAgICAgUmV0dXJucyBjYW52YXMgZGltZW5zaW9ucy4KLSAgICAgIAotICAgICAgUmV0dXJuczoKLSAgICAgIAotICAgICAgQW4gb2JqZWN0IHdpdGggKndpZHRoKiBhbmQgKmhlaWdodCogcHJvcGVydGllcy4KLSAgICAgIAotICAgICAgRXhhbXBsZToKLSAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgY2FudmFzLmdldFNpemUoKTsgLy9yZXR1cm5zIHsgd2lkdGg6IDkwMCwgaGVpZ2h0OiA1MDAgfQotICAgICAgKGVuZCBjb2RlKQotICAgICovCi0gICAgZ2V0U2l6ZTogZnVuY3Rpb24oaSkgewotICAgICAgcmV0dXJuIHRoaXMuY2FudmFzZXNbaSB8fCAwXS5nZXRTaXplKCk7Ci0gICAgfSwKLSAgICAvKgotICAgICAgTWV0aG9kOiByZXNpemUKLSAgICAgIAotICAgICAgUmVzaXplcyB0aGUgY2FudmFzLgotICAgICAgCi0gICAgICBQYXJhbWV0ZXJzOgotICAgICAgCi0gICAgICB3aWR0aCAtIE5ldyBjYW52YXMgd2lkdGguCi0gICAgICBoZWlnaHQgLSBOZXcgY2FudmFzIGhlaWdodC4KLSAgICAgIAotICAgICAgRXhhbXBsZToKLSAgICAgIAotICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgY2FudmFzLnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLSAgICAgIChlbmQgY29kZSkKLSAgICAKLSAgICAqLwotICAgIHJlc2l6ZTogZnVuY3Rpb24od2lkdGgsIGhlaWdodCkgewotICAgICAgdGhpcy5nZXRQb3ModHJ1ZSk7Ci0gICAgICB0aGlzLnRyYW5zbGF0ZU9mZnNldFggPSB0aGlzLnRyYW5zbGF0ZU9mZnNldFkgPSAwOwotICAgICAgdGhpcy5zY2FsZU9mZnNldFggPSB0aGlzLnNjYWxlT2Zmc2V0WSA9IDE7Ci0gICAgICBmb3IodmFyIGk9MCwgbD10aGlzLmNhbnZhc2VzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgdGhpcy5jYW52YXNlc1tpXS5yZXNpemUod2lkdGgsIGhlaWdodCk7Ci0gICAgICB9Ci0gICAgICB2YXIgc3R5bGUgPSB0aGlzLmVsZW1lbnQuc3R5bGU7Ci0gICAgICBzdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JzsKLSAgICAgIHN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7Ci0gICAgICBpZih0aGlzLmxhYmVsQ29udGFpbmVyKQotICAgICAgICB0aGlzLmxhYmVsQ29udGFpbmVyLnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnOwotICAgIH0sCi0gICAgLyoKLSAgICAgIE1ldGhvZDogdHJhbnNsYXRlCi0gICAgICAKLSAgICAgIEFwcGxpZXMgYSB0cmFuc2xhdGlvbiB0byB0aGUgY2FudmFzLgotICAgICAgCi0gICAgICBQYXJhbWV0ZXJzOgotICAgICAgCi0gICAgICB4IC0gKG51bWJlcikgeCBvZmZzZXQuCi0gICAgICB5IC0gKG51bWJlcikgeSBvZmZzZXQuCi0gICAgICBkaXNhYmxlUGxvdCAtIChib29sZWFuKSBEZWZhdWx0J3MgKmZhbHNlKi4gU2V0IHRoaXMgdG8gKnRydWUqIGlmIHlvdSBkb24ndCB3YW50IHRvIHJlZnJlc2ggdGhlIHZpc3VhbGl6YXRpb24uCi0gICAgICAKLSAgICAgIEV4YW1wbGU6Ci0gICAgICAKLSAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgIGNhbnZhcy50cmFuc2xhdGUoMzAsIDMwKTsKLSAgICAgIChlbmQgY29kZSkKLSAgICAKLSAgICAqLwotICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24oeCwgeSwgZGlzYWJsZVBsb3QpIHsKLSAgICAgIHRoaXMudHJhbnNsYXRlT2Zmc2V0WCArPSB4KnRoaXMuc2NhbGVPZmZzZXRYOwotICAgICAgdGhpcy50cmFuc2xhdGVPZmZzZXRZICs9IHkqdGhpcy5zY2FsZU9mZnNldFk7Ci0gICAgICBmb3IodmFyIGk9MCwgbD10aGlzLmNhbnZhc2VzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgdGhpcy5jYW52YXNlc1tpXS50cmFuc2xhdGUoeCwgeSwgZGlzYWJsZVBsb3QpOwotICAgICAgfQotICAgIH0sCi0gICAgLyoKLSAgICAgIE1ldGhvZDogc2NhbGUKLSAgICAgIAotICAgICAgU2NhbGVzIHRoZSBjYW52YXMuCi0gICAgICAKLSAgICAgIFBhcmFtZXRlcnM6Ci0gICAgICAKLSAgICAgIHggLSAobnVtYmVyKSBzY2FsZSB2YWx1ZS4KLSAgICAgIHkgLSAobnVtYmVyKSBzY2FsZSB2YWx1ZS4KLSAgICAgIGRpc2FibGVQbG90IC0gKGJvb2xlYW4pIERlZmF1bHQncyAqZmFsc2UqLiBTZXQgdGhpcyB0byAqdHJ1ZSogaWYgeW91IGRvbid0IHdhbnQgdG8gcmVmcmVzaCB0aGUgdmlzdWFsaXphdGlvbi4KLSAgICAgIAotICAgICAgRXhhbXBsZToKLSAgICAgIAotICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgY2FudmFzLnNjYWxlKDAuNSwgMC41KTsKLSAgICAgIChlbmQgY29kZSkKLSAgICAKLSAgICAqLwotICAgIHNjYWxlOiBmdW5jdGlvbih4LCB5LCBkaXNhYmxlUGxvdCkgewotICAgICAgdmFyIHB4ID0gdGhpcy5zY2FsZU9mZnNldFggKiB4LAotICAgICAgICAgIHB5ID0gdGhpcy5zY2FsZU9mZnNldFkgKiB5OwotICAgICAgdmFyIGR4ID0gdGhpcy50cmFuc2xhdGVPZmZzZXRYICogKHggLTEpIC8gcHgsCi0gICAgICAgICAgZHkgPSB0aGlzLnRyYW5zbGF0ZU9mZnNldFkgKiAoeSAtMSkgLyBweTsKLSAgICAgIHRoaXMuc2NhbGVPZmZzZXRYID0gcHg7Ci0gICAgICB0aGlzLnNjYWxlT2Zmc2V0WSA9IHB5OwotICAgICAgZm9yKHZhciBpPTAsIGw9dGhpcy5jYW52YXNlcy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICAgIHRoaXMuY2FudmFzZXNbaV0uc2NhbGUoeCwgeSwgdHJ1ZSk7Ci0gICAgICB9Ci0gICAgICB0aGlzLnRyYW5zbGF0ZShkeCwgZHksIGZhbHNlKTsKLSAgICB9LAotICAgIC8qCi0gICAgICBNZXRob2Q6IGdldFBvcwotICAgICAgCi0gICAgICBSZXR1cm5zIHRoZSBjYW52YXMgcG9zaXRpb24gYXMgYW4gKngsIHkqIG9iamVjdC4KLSAgICAgIAotICAgICAgUGFyYW1ldGVyczoKLSAgICAgIAotICAgICAgZm9yY2UgLSAoYm9vbGVhbikgRGVmYXVsdCdzICpmYWxzZSouIFNldCB0aGlzIHRvICp0cnVlKiBpZiB5b3Ugd2FudCB0byByZWNhbGN1bGF0ZSB0aGUgcG9zaXRpb24gd2l0aG91dCB1c2luZyBhbnkgY2FjaGUgaW5mb3JtYXRpb24uCi0gICAgICAKLSAgICAgIFJldHVybnM6Ci0gICAgICAKLSAgICAgIEFuIG9iamVjdCB3aXRoICp4KiBhbmQgKnkqIHByb3BlcnRpZXMuCi0gICAgICAKLSAgICAgIEV4YW1wbGU6Ci0gICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgIGNhbnZhcy5nZXRQb3ModHJ1ZSk7IC8vcmV0dXJucyB7IHg6IDkwMCwgeTogNTAwIH0KLSAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGdldFBvczogZnVuY3Rpb24oZm9yY2UpewotICAgICAgaWYoZm9yY2UgfHwgIXRoaXMucG9zKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnBvcyA9ICQuZ2V0UG9zKHRoaXMuZ2V0RWxlbWVudCgpKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB0aGlzLnBvczsKLSAgICB9LAotICAgIC8qCi0gICAgICAgTWV0aG9kOiBjbGVhcgotICAgICAgIAotICAgICAgIENsZWFycyB0aGUgY2FudmFzLgotICAgICovCi0gICAgY2xlYXI6IGZ1bmN0aW9uKGkpewotICAgICAgdGhpcy5jYW52YXNlc1tpfHwwXS5jbGVhcigpOwotICAgIH0sCi0gICAgCi0gICAgcGF0aDogZnVuY3Rpb24odHlwZSwgYWN0aW9uKXsKLSAgICAgIHZhciBjdHggPSB0aGlzLmNhbnZhc2VzWzBdLmdldEN0eCgpOwotICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgYWN0aW9uKGN0eCk7Ci0gICAgICBjdHhbdHlwZV0oKTsKLSAgICAgIGN0eC5jbG9zZVBhdGgoKTsKLSAgICB9LAotICAgIAotICAgIGNyZWF0ZUxhYmVsQ29udGFpbmVyOiBmdW5jdGlvbih0eXBlLCBpZExhYmVsLCBkaW0pIHsKLSAgICAgIHZhciBOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7Ci0gICAgICBpZih0eXBlID09ICdIVE1MJyB8fCB0eXBlID09ICdOYXRpdmUnKSB7Ci0gICAgICAgIHJldHVybiAkRSgnZGl2JywgewotICAgICAgICAgICdpZCc6IGlkTGFiZWwsCi0gICAgICAgICAgJ3N0eWxlJzogewotICAgICAgICAgICAgJ292ZXJmbG93JzogJ3Zpc2libGUnLAotICAgICAgICAgICAgJ3Bvc2l0aW9uJzogJ2Fic29sdXRlJywKLSAgICAgICAgICAgICd0b3AnOiAwLAotICAgICAgICAgICAgJ2xlZnQnOiAwLAotICAgICAgICAgICAgJ3dpZHRoJzogZGltLndpZHRoICsgJ3B4JywKLSAgICAgICAgICAgICdoZWlnaHQnOiAwCi0gICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgIH0gZWxzZSBpZih0eXBlID09ICdTVkcnKSB7Ci0gICAgICAgIHZhciBzdmdDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6c3ZnJyk7Ci0gICAgICAgIHN2Z0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgZGltLndpZHRoKTsKLSAgICAgICAgc3ZnQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgZGltLmhlaWdodCk7Ci0gICAgICAgIHZhciBzdHlsZSA9IHN2Z0NvbnRhaW5lci5zdHlsZTsKLSAgICAgICAgc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwotICAgICAgICBzdHlsZS5sZWZ0ID0gc3R5bGUudG9wID0gJzBweCc7Ci0gICAgICAgIHZhciBsYWJlbENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3N2ZzpnJyk7Ci0gICAgICAgIGxhYmVsQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBkaW0ud2lkdGgpOwotICAgICAgICBsYWJlbENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGRpbS5oZWlnaHQpOwotICAgICAgICBsYWJlbENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3gnLCAwKTsKLSAgICAgICAgbGFiZWxDb250YWluZXIuc2V0QXR0cmlidXRlKCd5JywgMCk7Ci0gICAgICAgIGxhYmVsQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCBpZExhYmVsKTsKLSAgICAgICAgc3ZnQ29udGFpbmVyLmFwcGVuZENoaWxkKGxhYmVsQ29udGFpbmVyKTsKLSAgICAgICAgcmV0dXJuIHN2Z0NvbnRhaW5lcjsKLSAgICAgIH0KLSAgICB9Ci0gIH0pOwotICAvL2Jhc2UgY2FudmFzIHdyYXBwZXIKLSAgQ2FudmFzLkJhc2UgPSB7fTsKLSAgQ2FudmFzLkJhc2VbJzJEJ10gPSBuZXcgQ2xhc3MoewotICAgIHRyYW5zbGF0ZU9mZnNldFg6IDAsCi0gICAgdHJhbnNsYXRlT2Zmc2V0WTogMCwKLSAgICBzY2FsZU9mZnNldFg6IDEsCi0gICAgc2NhbGVPZmZzZXRZOiAxLAotCi0gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odml6KSB7Ci0gICAgICB0aGlzLnZpeiA9IHZpejsKLSAgICAgIHRoaXMub3B0ID0gdml6LmNvbmZpZzsKLSAgICAgIHRoaXMuc2l6ZSA9IGZhbHNlOwotICAgICAgdGhpcy5jcmVhdGVDYW52YXMoKTsKLSAgICAgIHRoaXMudHJhbnNsYXRlVG9DZW50ZXIoKTsKLSAgICB9LAotICAgIGNyZWF0ZUNhbnZhczogZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgb3B0ID0gdGhpcy5vcHQsCi0gICAgICAgICAgd2lkdGggPSBvcHQud2lkdGgsCi0gICAgICAgICAgaGVpZ2h0ID0gb3B0LmhlaWdodDsKLSAgICAgIHRoaXMuY2FudmFzID0gJEUoJ2NhbnZhcycsIHsKLSAgICAgICAgJ2lkJzogb3B0LmluamVjdEludG8gKyBvcHQuaWRTdWZmaXgsCi0gICAgICAgICd3aWR0aCc6IHdpZHRoLAotICAgICAgICAnaGVpZ2h0JzogaGVpZ2h0LAotICAgICAgICAnc3R5bGUnOiB7Ci0gICAgICAgICAgJ3Bvc2l0aW9uJzogJ2Fic29sdXRlJywKLSAgICAgICAgICAndG9wJzogMCwKLSAgICAgICAgICAnbGVmdCc6IDAsCi0gICAgICAgICAgJ3dpZHRoJzogd2lkdGggKyAncHgnLAotICAgICAgICAgICdoZWlnaHQnOiBoZWlnaHQgKyAncHgnCi0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIH0sCi0gICAgZ2V0Q3R4OiBmdW5jdGlvbigpIHsKLSAgICAgIGlmKCF0aGlzLmN0eCkgCi0gICAgICAgIHJldHVybiB0aGlzLmN0eCA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAgICByZXR1cm4gdGhpcy5jdHg7Ci0gICAgfSwKLSAgICBnZXRTaXplOiBmdW5jdGlvbigpIHsKLSAgICAgIGlmKHRoaXMuc2l6ZSkgcmV0dXJuIHRoaXMuc2l6ZTsKLSAgICAgIHZhciBjYW52YXMgPSB0aGlzLmNhbnZhczsKLSAgICAgIHJldHVybiB0aGlzLnNpemUgPSB7Ci0gICAgICAgIHdpZHRoOiBjYW52YXMud2lkdGgsCi0gICAgICAgIGhlaWdodDogY2FudmFzLmhlaWdodAotICAgICAgfTsKLSAgICB9LAotICAgIHRyYW5zbGF0ZVRvQ2VudGVyOiBmdW5jdGlvbihwcykgewotICAgICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoKSwKLSAgICAgICAgICB3aWR0aCA9IHBzPyAoc2l6ZS53aWR0aCAtIHBzLndpZHRoIC0gdGhpcy50cmFuc2xhdGVPZmZzZXRYKjIpIDogc2l6ZS53aWR0aDsKLSAgICAgICAgICBoZWlnaHQgPSBwcz8gKHNpemUuaGVpZ2h0IC0gcHMuaGVpZ2h0IC0gdGhpcy50cmFuc2xhdGVPZmZzZXRZKjIpIDogc2l6ZS5oZWlnaHQ7Ci0gICAgICB2YXIgY3R4ID0gdGhpcy5nZXRDdHgoKTsKLSAgICAgIHBzICYmIGN0eC5zY2FsZSgxL3RoaXMuc2NhbGVPZmZzZXRYLCAxL3RoaXMuc2NhbGVPZmZzZXRZKTsKLSAgICAgIGN0eC50cmFuc2xhdGUod2lkdGgvMiwgaGVpZ2h0LzIpOwotICAgIH0sCi0gICAgcmVzaXplOiBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7Ci0gICAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZSgpLAotICAgICAgICAgIGNhbnZhcyA9IHRoaXMuY2FudmFzLAotICAgICAgICAgIHN0eWxlcyA9IGNhbnZhcy5zdHlsZTsKLSAgICAgIHRoaXMuc2l6ZSA9IGZhbHNlOwotICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7Ci0gICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgc3R5bGVzLndpZHRoID0gd2lkdGggKyAicHgiOwotICAgICAgc3R5bGVzLmhlaWdodCA9IGhlaWdodCArICJweCI7Ci0gICAgICAvL3NtYWxsIEV4Q2FudmFzIGZpeAotICAgICAgaWYoIXN1cHBvcnRzQ2FudmFzKSB7Ci0gICAgICAgIHRoaXMudHJhbnNsYXRlVG9DZW50ZXIoc2l6ZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLnRyYW5zbGF0ZVRvQ2VudGVyKCk7Ci0gICAgICB9Ci0gICAgICB0aGlzLnRyYW5zbGF0ZU9mZnNldFggPQotICAgICAgICB0aGlzLnRyYW5zbGF0ZU9mZnNldFkgPSAwOwotICAgICAgdGhpcy5zY2FsZU9mZnNldFggPSAKLSAgICAgICAgdGhpcy5zY2FsZU9mZnNldFkgPSAxOwotICAgICAgdGhpcy5jbGVhcigpOwotICAgICAgdGhpcy52aXoucmVzaXplKHdpZHRoLCBoZWlnaHQsIHRoaXMpOwotICAgIH0sCi0gICAgdHJhbnNsYXRlOiBmdW5jdGlvbih4LCB5LCBkaXNhYmxlUGxvdCkgewotICAgICAgdmFyIHN4ID0gdGhpcy5zY2FsZU9mZnNldFgsCi0gICAgICAgICAgc3kgPSB0aGlzLnNjYWxlT2Zmc2V0WTsKLSAgICAgIHRoaXMudHJhbnNsYXRlT2Zmc2V0WCArPSB4KnN4OwotICAgICAgdGhpcy50cmFuc2xhdGVPZmZzZXRZICs9IHkqc3k7Ci0gICAgICB0aGlzLmdldEN0eCgpLnRyYW5zbGF0ZSh4LCB5KTsKLSAgICAgICFkaXNhYmxlUGxvdCAmJiB0aGlzLnBsb3QoKTsKLSAgICB9LAotICAgIHNjYWxlOiBmdW5jdGlvbih4LCB5LCBkaXNhYmxlUGxvdCkgewotICAgICAgdGhpcy5zY2FsZU9mZnNldFggKj0geDsKLSAgICAgIHRoaXMuc2NhbGVPZmZzZXRZICo9IHk7Ci0gICAgICB0aGlzLmdldEN0eCgpLnNjYWxlKHgsIHkpOwotICAgICAgIWRpc2FibGVQbG90ICYmIHRoaXMucGxvdCgpOwotICAgIH0sCi0gICAgY2xlYXI6IGZ1bmN0aW9uKCl7Ci0gICAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZSgpLAotICAgICAgICAgIG94ID0gdGhpcy50cmFuc2xhdGVPZmZzZXRYLAotICAgICAgICAgIG95ID0gdGhpcy50cmFuc2xhdGVPZmZzZXRZLAotICAgICAgICAgIHN4ID0gdGhpcy5zY2FsZU9mZnNldFgsCi0gICAgICAgICAgc3kgPSB0aGlzLnNjYWxlT2Zmc2V0WTsKLSAgICAgIHRoaXMuZ2V0Q3R4KCkuY2xlYXJSZWN0KCgtc2l6ZS53aWR0aCAvIDIgLSBveCkgKiAxL3N4LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtc2l6ZS5oZWlnaHQgLyAyIC0gb3kpICogMS9zeSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRoICogMS9zeCwgc2l6ZS5oZWlnaHQgKiAxL3N5KTsKLSAgICB9LAotICAgIHBsb3Q6IGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy5jbGVhcigpOwotICAgICAgdGhpcy52aXoucGxvdCh0aGlzKTsKLSAgICB9Ci0gIH0pOwotICAvL2JhY2tncm91bmQgY2FudmFzZXMKLSAgLy9UT0RPKG5pY28pOiBkb2N1bWVudCB0aGlzIQotICBDYW52YXMuQmFja2dyb3VuZCA9IHt9OwotICBDYW52YXMuQmFja2dyb3VuZC5DaXJjbGVzID0gbmV3IENsYXNzKHsKLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXosIG9wdGlvbnMpIHsKLSAgICAgIHRoaXMudml6ID0gdml6OwotICAgICAgdGhpcy5jb25maWcgPSAkLm1lcmdlKHsKLSAgICAgICAgaWRTdWZmaXg6ICctYmtjYW52YXMnLAotICAgICAgICBsZXZlbERpc3RhbmNlOiAxMDAsCi0gICAgICAgIG51bWJlck9mQ2lyY2xlczogNiwKLSAgICAgICAgQ2FudmFzU3R5bGVzOiB7fSwKLSAgICAgICAgb2Zmc2V0OiAwCi0gICAgICB9LCBvcHRpb25zKTsKLSAgICB9LAotICAgIHJlc2l6ZTogZnVuY3Rpb24od2lkdGgsIGhlaWdodCwgYmFzZSkgewotICAgICAgdGhpcy5wbG90KGJhc2UpOwotICAgIH0sCi0gICAgcGxvdDogZnVuY3Rpb24oYmFzZSkgewotICAgICAgdmFyIGNhbnZhcyA9IGJhc2UuY2FudmFzLAotICAgICAgICAgIGN0eCA9IGJhc2UuZ2V0Q3R4KCksCi0gICAgICAgICAgY29uZiA9IHRoaXMuY29uZmlnLAotICAgICAgICAgIHN0eWxlcyA9IGNvbmYuQ2FudmFzU3R5bGVzOwotICAgICAgLy9zZXQgY2FudmFzIHN0eWxlcwotICAgICAgZm9yKHZhciBzIGluIHN0eWxlcykgY3R4W3NdID0gc3R5bGVzW3NdOwotICAgICAgdmFyIG4gPSBjb25mLm51bWJlck9mQ2lyY2xlcywKLSAgICAgICAgICByaG8gPSBjb25mLmxldmVsRGlzdGFuY2U7Ci0gICAgICBmb3IodmFyIGk9MTsgaTw9bjsgaSsrKSB7Ci0gICAgICAgIGN0eC5iZWdpblBhdGgoKTsKLSAgICAgICAgY3R4LmFyYygwLCAwLCByaG8gKiBpLCAwLCAyICogTWF0aC5QSSwgZmFsc2UpOwotICAgICAgICBjdHguc3Ryb2tlKCk7Ci0gICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKLSAgICAgIH0KLSAgICAgIC8vVE9ETyhuaWNvKTogcHJpbnQgbGFiZWxzIHRvbyEKLSAgICB9Ci0gIH0pOwotfSkoKTsKLQotCi0vKgotICogRmlsZTogUG9sYXIuanMKLSAqIAotICogRGVmaW5lcyB0aGUgPFBvbGFyPiBjbGFzcy4KLSAqCi0gKiBEZXNjcmlwdGlvbjoKLSAqCi0gKiBUaGUgPFBvbGFyPiBjbGFzcywganVzdCBsaWtlIHRoZSA8Q29tcGxleD4gY2xhc3MsIGlzIHVzZWQgYnkgdGhlIDxIeXBlcnRyZWU+LCA8U1Q+IGFuZCA8UkdyYXBoPiBhcyBhIDJEIHBvaW50IHJlcHJlc2VudGF0aW9uLgotICoKLSAqIFNlZSBhbHNvOgotICoKLSAqIDxodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BvbGFyX2Nvb3JkaW5hdGVzPgotICoKLSovCi0KLS8qCi0gICBDbGFzczogUG9sYXIKLQotICAgQSBtdWx0aSBwdXJwb3NlIHBvbGFyIHJlcHJlc2VudGF0aW9uLgotCi0gICBEZXNjcmlwdGlvbjoKLSAKLSAgIFRoZSA8UG9sYXI+IGNsYXNzLCBqdXN0IGxpa2UgdGhlIDxDb21wbGV4PiBjbGFzcywgaXMgdXNlZCBieSB0aGUgPEh5cGVydHJlZT4sIDxTVD4gYW5kIDxSR3JhcGg+IGFzIGEgMkQgcG9pbnQgcmVwcmVzZW50YXRpb24uCi0gCi0gICBTZWUgYWxzbzoKLSAKLSAgIDxodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BvbGFyX2Nvb3JkaW5hdGVzPgotIAotICAgUGFyYW1ldGVyczoKLQotICAgICAgdGhldGEgLSBBbiBhbmdsZS4KLSAgICAgIHJobyAtIFRoZSBub3JtLgotKi8KLQotdmFyIFBvbGFyID0gZnVuY3Rpb24odGhldGEsIHJobykgewotICB0aGlzLnRoZXRhID0gdGhldGEgfHwgMDsKLSAgdGhpcy5yaG8gPSByaG8gfHwgMDsKLX07Ci0KLSRqaXQuUG9sYXIgPSBQb2xhcjsKLQotUG9sYXIucHJvdG90eXBlID0gewotICAgIC8qCi0gICAgICAgTWV0aG9kOiBnZXRjCi0gICAgCi0gICAgICAgUmV0dXJucyBhIGNvbXBsZXggbnVtYmVyLgotICAgIAotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICBzaW1wbGUgLSBfb3B0aW9uYWxfIElmICp0cnVlKiwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gb25seSBhbiBvYmplY3QgaG9sZGluZyB4IGFuZCB5IHByb3BlcnRpZXMgYW5kIG5vdCBhIDxDb21wbGV4PiBpbnN0YW5jZS4gRGVmYXVsdCdzICpmYWxzZSouCi0KLSAgICAgIFJldHVybnM6Ci0gICAgCi0gICAgICAgICAgQSBjb21wbGV4IG51bWJlci4KLSAgICAqLwotICAgIGdldGM6IGZ1bmN0aW9uKHNpbXBsZSkgewotICAgICAgICByZXR1cm4gdGhpcy50b0NvbXBsZXgoc2ltcGxlKTsKLSAgICB9LAotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IGdldHAKLSAgICAKLSAgICAgICBSZXR1cm5zIGEgPFBvbGFyPiByZXByZXNlbnRhdGlvbi4KLSAgICAKLSAgICAgICBSZXR1cm5zOgotICAgIAotICAgICAgICAgIEEgdmFyaWFibGUgaW4gcG9sYXIgY29vcmRpbmF0ZXMuCi0gICAgKi8KLSAgICBnZXRwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IHNldAotICAgIAotICAgICAgIFNldHMgYSBudW1iZXIuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgdiAtIEEgPENvbXBsZXg+IG9yIDxQb2xhcj4gaW5zdGFuY2UuCi0gICAgCi0gICAgKi8KLSAgICBzZXQ6IGZ1bmN0aW9uKHYpIHsKLSAgICAgICAgdiA9IHYuZ2V0cCgpOwotICAgICAgICB0aGlzLnRoZXRhID0gdi50aGV0YTsgdGhpcy5yaG8gPSB2LnJobzsKLSAgICB9LAotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IHNldGMKLSAgICAKLSAgICAgICBTZXRzIGEgPENvbXBsZXg+IG51bWJlci4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICB4IC0gQSA8Q29tcGxleD4gbnVtYmVyIHJlYWwgcGFydC4KLSAgICAgICB5IC0gQSA8Q29tcGxleD4gbnVtYmVyIGltYWdpbmFyeSBwYXJ0LgotICAgIAotICAgICovCi0gICAgc2V0YzogZnVuY3Rpb24oeCwgeSkgewotICAgICAgICB0aGlzLnJobyA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTsKLSAgICAgICAgdGhpcy50aGV0YSA9IE1hdGguYXRhbjIoeSwgeCk7Ci0gICAgICAgIGlmKHRoaXMudGhldGEgPCAwKSB0aGlzLnRoZXRhICs9IE1hdGguUEkgKiAyOwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogc2V0cAotICAgIAotICAgICAgIFNldHMgYSBwb2xhciBudW1iZXIuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgdGhldGEgLSBBIDxQb2xhcj4gbnVtYmVyIGFuZ2xlIHByb3BlcnR5LgotICAgICAgIHJobyAtIEEgPFBvbGFyPiBudW1iZXIgcmhvIHByb3BlcnR5LgotICAgIAotICAgICovCi0gICAgc2V0cDogZnVuY3Rpb24odGhldGEsIHJobykgewotICAgICAgICB0aGlzLnRoZXRhID0gdGhldGE7IAotICAgICAgICB0aGlzLnJobyA9IHJobzsKLSAgICB9LAotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IGNsb25lCi0gICAgCi0gICAgICAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LgotICAgIAotICAgICAgIFJldHVybnM6Ci0gICAgCi0gICAgICAgICAgQSBjb3B5IG9mIHRoZSByZWFsIG9iamVjdC4KLSAgICAqLwotICAgIGNsb25lOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQb2xhcih0aGlzLnRoZXRhLCB0aGlzLnJobyk7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiB0b0NvbXBsZXgKLSAgICAKLSAgICAgICAgVHJhbnNsYXRlcyBmcm9tIHBvbGFyIHRvIGNhcnRlc2lhbiBjb29yZGluYXRlcyBhbmQgcmV0dXJucyBhIG5ldyA8Q29tcGxleD4gaW5zdGFuY2UuCi0gICAgCi0gICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICAgc2ltcGxlIC0gX29wdGlvbmFsXyBJZiAqdHJ1ZSogdGhpcyBtZXRob2Qgd2lsbCBvbmx5IHJldHVybiBhbiBvYmplY3Qgd2l0aCB4IGFuZCB5IHByb3BlcnRpZXMgKGFuZCBub3QgdGhlIHdob2xlIDxDb21wbGV4PiBpbnN0YW5jZSkuIERlZmF1bHQncyAqZmFsc2UqLgotIAotICAgICAgICBSZXR1cm5zOgotICAgIAotICAgICAgICAgIEEgbmV3IDxDb21wbGV4PiBpbnN0YW5jZS4KLSAgICAqLwotICAgIHRvQ29tcGxleDogZnVuY3Rpb24oc2ltcGxlKSB7Ci0gICAgICAgIHZhciB4ID0gTWF0aC5jb3ModGhpcy50aGV0YSkgKiB0aGlzLnJobzsKLSAgICAgICAgdmFyIHkgPSBNYXRoLnNpbih0aGlzLnRoZXRhKSAqIHRoaXMucmhvOwotICAgICAgICBpZihzaW1wbGUpIHJldHVybiB7ICd4JzogeCwgJ3knOiB5fTsKLSAgICAgICAgcmV0dXJuIG5ldyBDb21wbGV4KHgsIHkpOwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogYWRkCi0gICAgCi0gICAgICAgIEFkZHMgdHdvIDxQb2xhcj4gaW5zdGFuY2VzLgotICAgIAotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICBwb2xhciAtIEEgPFBvbGFyPiBudW1iZXIuCi0KLSAgICAgICBSZXR1cm5zOgotICAgIAotICAgICAgICAgIEEgbmV3IFBvbGFyIGluc3RhbmNlLgotICAgICovCi0gICAgYWRkOiBmdW5jdGlvbihwb2xhcikgewotICAgICAgICByZXR1cm4gbmV3IFBvbGFyKHRoaXMudGhldGEgKyBwb2xhci50aGV0YSwgdGhpcy5yaG8gKyBwb2xhci5yaG8pOwotICAgIH0sCi0gICAgCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IHNjYWxlCi0gICAgCi0gICAgICAgIFNjYWxlcyBhIHBvbGFyIG5vcm0uCi0gICAgCi0gICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICAgbnVtYmVyIC0gQSBzY2FsZSBmYWN0b3IuCi0gICAgICAgIAotICAgICAgICBSZXR1cm5zOgotICAgIAotICAgICAgICAgIEEgbmV3IFBvbGFyIGluc3RhbmNlLgotICAgICovCi0gICAgc2NhbGU6IGZ1bmN0aW9uKG51bWJlcikgewotICAgICAgICByZXR1cm4gbmV3IFBvbGFyKHRoaXMudGhldGEsIHRoaXMucmhvICogbnVtYmVyKTsKLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICAgTWV0aG9kOiBlcXVhbHMKLSAgICAKLSAgICAgICBDb21wYXJpc29uIG1ldGhvZC4KLQotICAgICAgIFJldHVybnMgKnRydWUqIGlmIHRoZSB0aGV0YSBhbmQgcmhvIHByb3BlcnRpZXMgYXJlIGVxdWFsLgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIGMgLSBBIDxQb2xhcj4gbnVtYmVyLgotCi0gICAgICAgUmV0dXJuczoKLQotICAgICAgICp0cnVlKiBpZiB0aGUgdGhldGEgYW5kIHJobyBwYXJhbWV0ZXJzIGZvciB0aGVzZSBvYmplY3RzIGFyZSBlcXVhbC4gKmZhbHNlKiBvdGhlcndpc2UuCi0gICAgKi8KLSAgICBlcXVhbHM6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGhldGEgPT0gYy50aGV0YSAmJiB0aGlzLnJobyA9PSBjLnJobzsKLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICAgTWV0aG9kOiAkYWRkCi0gICAgCi0gICAgICAgIEFkZHMgdHdvIDxQb2xhcj4gaW5zdGFuY2VzIGFmZmVjdGluZyB0aGUgY3VycmVudCBvYmplY3QuCi0gICAgCi0gICAgICAgUGFyYW10ZXJzOgotCi0gICAgICAgcG9sYXIgLSBBIDxQb2xhcj4gaW5zdGFuY2UuCi0KLSAgICAgICBSZXR1cm5zOgotICAgIAotICAgICAgICAgIFRoZSBjaGFuZ2VkIG9iamVjdC4KLSAgICAqLwotICAgICRhZGQ6IGZ1bmN0aW9uKHBvbGFyKSB7Ci0gICAgICAgIHRoaXMudGhldGEgPSB0aGlzLnRoZXRhICsgcG9sYXIudGhldGE7IHRoaXMucmhvICs9IHBvbGFyLnJobzsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiAkbWFkZAotICAgIAotICAgICAgICBBZGRzIHR3byA8UG9sYXI+IGluc3RhbmNlcyBhZmZlY3RpbmcgdGhlIGN1cnJlbnQgb2JqZWN0LiBUaGUgcmVzdWx0aW5nIHRoZXRhIGFuZ2xlIGlzIG1vZHVsbyAycGkuCi0gICAgCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIHBvbGFyIC0gQSA8UG9sYXI+IGluc3RhbmNlLgotCi0gICAgICAgUmV0dXJuczoKLSAgICAKLSAgICAgICAgICBUaGUgY2hhbmdlZCBvYmplY3QuCi0gICAgKi8KLSAgICAkbWFkZDogZnVuY3Rpb24ocG9sYXIpIHsKLSAgICAgICAgdGhpcy50aGV0YSA9ICh0aGlzLnRoZXRhICsgcG9sYXIudGhldGEpICUgKE1hdGguUEkgKiAyKTsgdGhpcy5yaG8gKz0gcG9sYXIucmhvOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotCi0gICAgCi0gICAgLyoKLSAgICAgICBNZXRob2Q6ICRzY2FsZQotICAgIAotICAgICAgICBTY2FsZXMgYSBwb2xhciBpbnN0YW5jZSBhZmZlY3RpbmcgdGhlIG9iamVjdC4KLSAgICAKLSAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgIG51bWJlciAtIEEgc2NhbGluZyBmYWN0b3IuCi0KLSAgICAgIFJldHVybnM6Ci0gICAgCi0gICAgICAgICAgVGhlIGNoYW5nZWQgb2JqZWN0LgotICAgICovCi0gICAgJHNjYWxlOiBmdW5jdGlvbihudW1iZXIpIHsKLSAgICAgICAgdGhpcy5yaG8gKj0gbnVtYmVyOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICBNZXRob2Q6IGlzWmVybwotICAgCi0gICAgICBSZXR1cm5zICp0cnVlKiBpZiB0aGUgbnVtYmVyIGlzIHplcm8uCi0gICAKLSAgICovCi0gICAgaXNaZXJvOiBmdW5jdGlvbiAoKSB7Ci0gICAgICB2YXIgYWxtb3N0WmVybyA9IDAuMDAwMSwgYWJzID0gTWF0aC5hYnM7Ci0gICAgICByZXR1cm4gYWJzKHRoaXMudGhldGEpIDwgYWxtb3N0WmVybyAmJiBhYnModGhpcy5yaG8pIDwgYWxtb3N0WmVybzsKLSAgICB9LAotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IGludGVycG9sYXRlCi0gICAgCi0gICAgICAgIENhbGN1bGF0ZXMgYSBwb2xhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gdHdvIHBvaW50cyBhdCBhIGdpdmVuIGRlbHRhIG1vbWVudC4KLQotICAgICAgICBQYXJhbWV0ZXJzOgotICAgICAgCi0gICAgICAgIGVsZW0gLSBBIDxQb2xhcj4gaW5zdGFuY2UuCi0gICAgICAgIGRlbHRhIC0gQSBkZWx0YSBmYWN0b3IgcmFuZ2luZyBbMCwgMV0uCi0gICAgCi0gICAgICAgUmV0dXJuczoKLSAgICAKLSAgICAgICAgICBBIG5ldyA8UG9sYXI+IGluc3RhbmNlIHJlcHJlc2VudGluZyBhbiBpbnRlcnBvbGF0aW9uIGJldHdlZW4gX3RoaXNfIGFuZCBfZWxlbV8KLSAgICAqLwotICAgIGludGVycG9sYXRlOiBmdW5jdGlvbihlbGVtLCBkZWx0YSkgewotICAgICAgICB2YXIgcGkgPSBNYXRoLlBJLCBwaTIgPSBwaSAqIDI7Ci0gICAgICAgIHZhciBjaCA9IGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgIHZhciBhID0gICh0IDwgMCk/ICh0ICUgcGkyKSArIHBpMiA6IHQgJSBwaTI7Ci0gICAgICAgICAgICByZXR1cm4gYTsKLSAgICAgICAgfTsKLSAgICAgICAgdmFyIHR0ID0gdGhpcy50aGV0YSwgZXQgPSBlbGVtLnRoZXRhOwotICAgICAgICB2YXIgc3VtLCBkaWZmID0gTWF0aC5hYnModHQgLSBldCk7Ci0gICAgICAgIGlmKGRpZmYgPT0gcGkpIHsKLSAgICAgICAgICBpZih0dCA+IGV0KSB7Ci0gICAgICAgICAgICBzdW0gPSBjaCgoZXQgKyAoKHR0IC0gcGkyKSAtIGV0KSAqIGRlbHRhKSkgOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdW0gPSBjaCgoZXQgLSBwaTIgKyAodHQgLSAoZXQpKSAqIGRlbHRhKSk7Ci0gICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYoZGlmZiA+PSBwaSkgewotICAgICAgICAgIGlmKHR0ID4gZXQpIHsKLSAgICAgICAgICAgIHN1bSA9IGNoKChldCArICgodHQgLSBwaTIpIC0gZXQpICogZGVsdGEpKSA7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN1bSA9IGNoKChldCAtIHBpMiArICh0dCAtIChldCAtIHBpMikpICogZGVsdGEpKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7ICAKLSAgICAgICAgICBzdW0gPSBjaCgoZXQgKyAodHQgLSBldCkgKiBkZWx0YSkpIDsKLSAgICAgICAgfQotICAgICAgICB2YXIgciA9ICh0aGlzLnJobyAtIGVsZW0ucmhvKSAqIGRlbHRhICsgZWxlbS5yaG87Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgJ3RoZXRhJzogc3VtLAotICAgICAgICAgICdyaG8nOiByCi0gICAgICAgIH07Ci0gICAgfQotfTsKLQotCi12YXIgJFAgPSBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBuZXcgUG9sYXIoYSwgYik7IH07Ci0KLVBvbGFyLktFUiA9ICRQKDAsIDApOwotCi0KLQotLyoKLSAqIEZpbGU6IENvbXBsZXguanMKLSAqIAotICogRGVmaW5lcyB0aGUgPENvbXBsZXg+IGNsYXNzLgotICoKLSAqIERlc2NyaXB0aW9uOgotICoKLSAqIFRoZSA8Q29tcGxleD4gY2xhc3MsIGp1c3QgbGlrZSB0aGUgPFBvbGFyPiBjbGFzcywgaXMgdXNlZCBieSB0aGUgPEh5cGVydHJlZT4sIDxTVD4gYW5kIDxSR3JhcGg+IGFzIGEgMkQgcG9pbnQgcmVwcmVzZW50YXRpb24uCi0gKgotICogU2VlIGFsc286Ci0gKgotICogPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGxleF9udW1iZXI+Ci0gKgotKi8KLQotLyoKLSAgIENsYXNzOiBDb21wbGV4Ci0gICAgCi0gICBBIG11bHRpLXB1cnBvc2UgQ29tcGxleCBDbGFzcyB3aXRoIGNvbW1vbiBtZXRob2RzLgotIAotICAgRGVzY3JpcHRpb246Ci0gCi0gICBUaGUgPENvbXBsZXg+IGNsYXNzLCBqdXN0IGxpa2UgdGhlIDxQb2xhcj4gY2xhc3MsIGlzIHVzZWQgYnkgdGhlIDxIeXBlcnRyZWU+LCA8U1Q+IGFuZCA8UkdyYXBoPiBhcyBhIDJEIHBvaW50IHJlcHJlc2VudGF0aW9uLgotIAotICAgU2VlIGFsc286Ci0gCi0gICA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wbGV4X251bWJlcj4KLQotICAgUGFyYW1ldGVyczoKLQotICAgeCAtIF9vcHRpb25hbF8gQSBDb21wbGV4IG51bWJlciByZWFsIHBhcnQuCi0gICB5IC0gX29wdGlvbmFsXyBBIENvbXBsZXggbnVtYmVyIGltYWdpbmFyeSBwYXJ0LgotIAotKi8KLQotdmFyIENvbXBsZXggPSBmdW5jdGlvbih4LCB5KSB7Ci0gIHRoaXMueCA9IHggfHwgMDsKLSAgdGhpcy55ID0geSB8fCAwOwotfTsKLQotJGppdC5Db21wbGV4ID0gQ29tcGxleDsKLQotQ29tcGxleC5wcm90b3R5cGUgPSB7Ci0gICAgLyoKLSAgICAgICBNZXRob2Q6IGdldGMKLSAgICAKLSAgICAgICBSZXR1cm5zIGEgY29tcGxleCBudW1iZXIuCi0gICAgCi0gICAgICAgUmV0dXJuczoKLSAgICAKLSAgICAgICAgICBBIGNvbXBsZXggbnVtYmVyLgotICAgICovCi0gICAgZ2V0YzogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogZ2V0cAotICAgIAotICAgICAgIFJldHVybnMgYSA8UG9sYXI+IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbnVtYmVyLgotICAgIAotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICBzaW1wbGUgLSBfb3B0aW9uYWxfIElmICp0cnVlKiwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gb25seSBhbiBvYmplY3QgaG9sZGluZyB0aGV0YSBhbmQgcmhvIHByb3BlcnRpZXMgYW5kIG5vdCBhIDxQb2xhcj4gaW5zdGFuY2UuIERlZmF1bHQncyAqZmFsc2UqLgotCi0gICAgICAgUmV0dXJuczoKLSAgICAKLSAgICAgICAgICBBIHZhcmlhYmxlIGluIDxQb2xhcj4gY29vcmRpbmF0ZXMuCi0gICAgKi8KLSAgICBnZXRwOiBmdW5jdGlvbihzaW1wbGUpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudG9Qb2xhcihzaW1wbGUpOwotICAgIH0sCi0KLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiBzZXQKLSAgICAKLSAgICAgICBTZXRzIGEgbnVtYmVyLgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIGMgLSBBIDxDb21wbGV4PiBvciA8UG9sYXI+IGluc3RhbmNlLgotICAgIAotICAgICovCi0gICAgc2V0OiBmdW5jdGlvbihjKSB7Ci0gICAgICBjID0gYy5nZXRjKHRydWUpOwotICAgICAgdGhpcy54ID0gYy54OyAKLSAgICAgIHRoaXMueSA9IGMueTsKLSAgICB9LAotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IHNldGMKLSAgICAKLSAgICAgICBTZXRzIGEgY29tcGxleCBudW1iZXIuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgeCAtIEEgPENvbXBsZXg+IG51bWJlciBSZWFsIHBhcnQuCi0gICAgICAgeSAtIEEgPENvbXBsZXg+IG51bWJlciBJbWFnaW5hcnkgcGFydC4KLSAgICAKLSAgICAqLwotICAgIHNldGM6IGZ1bmN0aW9uKHgsIHkpIHsKLSAgICAgICAgdGhpcy54ID0geDsgCi0gICAgICAgIHRoaXMueSA9IHk7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiBzZXRwCi0gICAgCi0gICAgICAgU2V0cyBhIHBvbGFyIG51bWJlci4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICB0aGV0YSAtIEEgPFBvbGFyPiBudW1iZXIgdGhldGEgcHJvcGVydHkuCi0gICAgICAgcmhvIC0gQSA8UG9sYXI+IG51bWJlciByaG8gcHJvcGVydHkuCi0gICAgCi0gICAgKi8KLSAgICBzZXRwOiBmdW5jdGlvbih0aGV0YSwgcmhvKSB7Ci0gICAgICAgIHRoaXMueCA9IE1hdGguY29zKHRoZXRhKSAqIHJobzsKLSAgICAgICAgdGhpcy55ID0gTWF0aC5zaW4odGhldGEpICogcmhvOwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogY2xvbmUKLSAgICAKLSAgICAgICBSZXR1cm5zIGEgY29weSBvZiB0aGUgY3VycmVudCBvYmplY3QuCi0gICAgCi0gICAgICAgUmV0dXJuczoKLSAgICAKLSAgICAgICAgICBBIGNvcHkgb2YgdGhlIHJlYWwgb2JqZWN0LgotICAgICovCi0gICAgY2xvbmU6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gbmV3IENvbXBsZXgodGhpcy54LCB0aGlzLnkpOwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogdG9Qb2xhcgotICAgIAotICAgICAgIFRyYW5zZm9ybXMgY2FydGVzaWFuIHRvIHBvbGFyIGNvb3JkaW5hdGVzLgotICAgIAotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICBzaW1wbGUgLSBfb3B0aW9uYWxfIElmICp0cnVlKiB0aGlzIG1ldGhvZCB3aWxsIG9ubHkgcmV0dXJuIGFuIG9iamVjdCB3aXRoIHRoZXRhIGFuZCByaG8gcHJvcGVydGllcyAoYW5kIG5vdCB0aGUgd2hvbGUgPFBvbGFyPiBpbnN0YW5jZSkuIERlZmF1bHQncyAqZmFsc2UqLgotICAgICAgIAotICAgICAgIFJldHVybnM6Ci0gICAgCi0gICAgICAgICAgQSBuZXcgPFBvbGFyPiBpbnN0YW5jZS4KLSAgICAqLwotICAgIAotICAgIHRvUG9sYXI6IGZ1bmN0aW9uKHNpbXBsZSkgewotICAgICAgICB2YXIgcmhvID0gdGhpcy5ub3JtKCk7Ci0gICAgICAgIHZhciBhdGFuID0gTWF0aC5hdGFuMih0aGlzLnksIHRoaXMueCk7Ci0gICAgICAgIGlmKGF0YW4gPCAwKSBhdGFuICs9IE1hdGguUEkgKiAyOwotICAgICAgICBpZihzaW1wbGUpIHJldHVybiB7ICd0aGV0YSc6IGF0YW4sICdyaG8nOiByaG8gfTsKLSAgICAgICAgcmV0dXJuIG5ldyBQb2xhcihhdGFuLCByaG8pOwotICAgIH0sCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IG5vcm0KLSAgICAKLSAgICAgICBDYWxjdWxhdGVzIGEgPENvbXBsZXg+IG51bWJlciBub3JtLgotICAgIAotICAgICAgIFJldHVybnM6Ci0gICAgCi0gICAgICAgICAgQSByZWFsIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGNvbXBsZXggbm9ybS4KLSAgICAqLwotICAgIG5vcm06IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcmV0dXJuIE1hdGguc3FydCh0aGlzLnNxdWFyZWROb3JtKCkpOwotICAgIH0sCi0gICAgCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IHNxdWFyZWROb3JtCi0gICAgCi0gICAgICAgQ2FsY3VsYXRlcyBhIDxDb21wbGV4PiBudW1iZXIgc3F1YXJlZCBub3JtLgotICAgIAotICAgICAgIFJldHVybnM6Ci0gICAgCi0gICAgICAgICAgQSByZWFsIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGNvbXBsZXggc3F1YXJlZCBub3JtLgotICAgICovCi0gICAgc3F1YXJlZE5vcm06IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMueCp0aGlzLnggKyB0aGlzLnkqdGhpcy55OwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogYWRkCi0gICAgCi0gICAgICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIGFkZGluZyB0d28gY29tcGxleCBudW1iZXJzLgotICAgICAgIAotICAgICAgIERvZXMgbm90IGFsdGVyIHRoZSBvcmlnaW5hbCBvYmplY3QuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgICAgICAgIHBvcyAtIEEgPENvbXBsZXg+IGluc3RhbmNlLgotICAgIAotICAgICAgIFJldHVybnM6Ci0gICAgCi0gICAgICAgICBUaGUgcmVzdWx0IG9mIGFkZGluZyB0d28gY29tcGxleCBudW1iZXJzLgotICAgICovCi0gICAgYWRkOiBmdW5jdGlvbihwb3MpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBDb21wbGV4KHRoaXMueCArIHBvcy54LCB0aGlzLnkgKyBwb3MueSk7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiBwcm9kCi0gICAgCi0gICAgICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIHR3byA8Q29tcGxleD4gbnVtYmVycy4KLSAgICAgICAKLSAgICAgICBEb2VzIG5vdCBhbHRlciB0aGUgb3JpZ2luYWwgb2JqZWN0LgotCi0gICAgICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICAgICAgICBwb3MgLSBBIDxDb21wbGV4PiBpbnN0YW5jZS4KLSAgICAKLSAgICAgICBSZXR1cm5zOgotICAgIAotICAgICAgICAgVGhlIHJlc3VsdCBvZiBtdWx0aXBseWluZyB0d28gY29tcGxleCBudW1iZXJzLgotICAgICovCi0gICAgcHJvZDogZnVuY3Rpb24ocG9zKSB7Ci0gICAgICAgIHJldHVybiBuZXcgQ29tcGxleCh0aGlzLngqcG9zLnggLSB0aGlzLnkqcG9zLnksIHRoaXMueSpwb3MueCArIHRoaXMueCpwb3MueSk7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiBjb25qdWdhdGUKLSAgICAKLSAgICAgICBSZXR1cm5zIHRoZSBjb25qdWdhdGUgb2YgdGhpcyA8Q29tcGxleD4gbnVtYmVyLgotCi0gICAgICAgRG9lcyBub3QgYWx0ZXIgdGhlIG9yaWdpbmFsIG9iamVjdC4KLQotICAgICAgIFJldHVybnM6Ci0gICAgCi0gICAgICAgICBUaGUgY29uanVnYXRlIG9mIHRoaXMgPENvbXBsZXg+IG51bWJlci4KLSAgICAqLwotICAgIGNvbmp1Z2F0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiBuZXcgQ29tcGxleCh0aGlzLngsIC10aGlzLnkpOwotICAgIH0sCi0KLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiBzY2FsZQotICAgIAotICAgICAgIFJldHVybnMgdGhlIHJlc3VsdCBvZiBzY2FsaW5nIGEgPENvbXBsZXg+IGluc3RhbmNlLgotICAgICAgIAotICAgICAgIERvZXMgbm90IGFsdGVyIHRoZSBvcmlnaW5hbCBvYmplY3QuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgICAgICAgIGZhY3RvciAtIEEgc2NhbGUgZmFjdG9yLgotICAgIAotICAgICAgIFJldHVybnM6Ci0gICAgCi0gICAgICAgICBUaGUgcmVzdWx0IG9mIHNjYWxpbmcgdGhpcyBjb21wbGV4IHRvIGEgZmFjdG9yLgotICAgICovCi0gICAgc2NhbGU6IGZ1bmN0aW9uKGZhY3RvcikgewotICAgICAgICByZXR1cm4gbmV3IENvbXBsZXgodGhpcy54ICogZmFjdG9yLCB0aGlzLnkgKiBmYWN0b3IpOwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogZXF1YWxzCi0gICAgCi0gICAgICAgQ29tcGFyaXNvbiBtZXRob2QuCi0KLSAgICAgICBSZXR1cm5zICp0cnVlKiBpZiBib3RoIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBhcmUgZXF1YWwuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgYyAtIEEgPENvbXBsZXg+IGluc3RhbmNlLgotCi0gICAgICAgUmV0dXJuczoKLQotICAgICAgIEEgYm9vbGVhbiBpbnN0YW5jZSBpbmRpY2F0aW5nIGlmIGJvdGggPENvbXBsZXg+IG51bWJlcnMgYXJlIGVxdWFsLgotICAgICovCi0gICAgZXF1YWxzOiBmdW5jdGlvbihjKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnggPT0gYy54ICYmIHRoaXMueSA9PSBjLnk7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiAkYWRkCi0gICAgCi0gICAgICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIGFkZGluZyB0d28gPENvbXBsZXg+IG51bWJlcnMuCi0gICAgICAgCi0gICAgICAgQWx0ZXJzIHRoZSBvcmlnaW5hbCBvYmplY3QuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgICAgICAgIHBvcyAtIEEgPENvbXBsZXg+IGluc3RhbmNlLgotICAgIAotICAgICAgIFJldHVybnM6Ci0gICAgCi0gICAgICAgICBUaGUgcmVzdWx0IG9mIGFkZGluZyB0d28gY29tcGxleCBudW1iZXJzLgotICAgICovCi0gICAgJGFkZDogZnVuY3Rpb24ocG9zKSB7Ci0gICAgICAgIHRoaXMueCArPSBwb3MueDsgdGhpcy55ICs9IHBvcy55OwotICAgICAgICByZXR1cm4gdGhpczsgICAgCi0gICAgfSwKLSAgICAKLSAgICAvKgotICAgICAgIE1ldGhvZDogJHByb2QKLSAgICAKLSAgICAgICBSZXR1cm5zIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcgdHdvIDxDb21wbGV4PiBudW1iZXJzLgotICAgICAgIAotICAgICAgIEFsdGVycyB0aGUgb3JpZ2luYWwgb2JqZWN0LgotCi0gICAgICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICAgICAgICBwb3MgLSBBIDxDb21wbGV4PiBpbnN0YW5jZS4KLSAgICAKLSAgICAgICBSZXR1cm5zOgotICAgIAotICAgICAgICAgVGhlIHJlc3VsdCBvZiBtdWx0aXBseWluZyB0d28gY29tcGxleCBudW1iZXJzLgotICAgICovCi0gICAgJHByb2Q6ZnVuY3Rpb24ocG9zKSB7Ci0gICAgICAgIHZhciB4ID0gdGhpcy54LCB5ID0gdGhpcy55OwotICAgICAgICB0aGlzLnggPSB4KnBvcy54IC0geSpwb3MueTsKLSAgICAgICAgdGhpcy55ID0geSpwb3MueCArIHgqcG9zLnk7Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0sCi0gICAgCi0gICAgLyoKLSAgICAgICBNZXRob2Q6ICRjb25qdWdhdGUKLSAgICAKLSAgICAgICBSZXR1cm5zIHRoZSBjb25qdWdhdGUgZm9yIHRoaXMgPENvbXBsZXg+LgotICAgICAgIAotICAgICAgIEFsdGVycyB0aGUgb3JpZ2luYWwgb2JqZWN0LgotCi0gICAgICAgUmV0dXJuczoKLSAgICAKLSAgICAgICAgIFRoZSBjb25qdWdhdGUgZm9yIHRoaXMgY29tcGxleC4KLSAgICAqLwotICAgICRjb25qdWdhdGU6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLnkgPSAtdGhpcy55OwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICAgTWV0aG9kOiAkc2NhbGUKLSAgICAKLSAgICAgICBSZXR1cm5zIHRoZSByZXN1bHQgb2Ygc2NhbGluZyBhIDxDb21wbGV4PiBpbnN0YW5jZS4KLSAgICAgICAKLSAgICAgICBBbHRlcnMgdGhlIG9yaWdpbmFsIG9iamVjdC4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgICAgICAgZmFjdG9yIC0gQSBzY2FsZSBmYWN0b3IuCi0gICAgCi0gICAgICAgUmV0dXJuczoKLSAgICAKLSAgICAgICAgIFRoZSByZXN1bHQgb2Ygc2NhbGluZyB0aGlzIGNvbXBsZXggdG8gYSBmYWN0b3IuCi0gICAgKi8KLSAgICAkc2NhbGU6IGZ1bmN0aW9uKGZhY3RvcikgewotICAgICAgICB0aGlzLnggKj0gZmFjdG9yOyB0aGlzLnkgKj0gZmFjdG9yOwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICAgTWV0aG9kOiAkZGl2Ci0gICAgCi0gICAgICAgUmV0dXJucyB0aGUgZGl2aXNpb24gb2YgdHdvIDxDb21wbGV4PiBudW1iZXJzLgotICAgICAgIAotICAgICAgIEFsdGVycyB0aGUgb3JpZ2luYWwgb2JqZWN0LgotCi0gICAgICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICAgICAgICBwb3MgLSBBIDxDb21wbGV4PiBudW1iZXIuCi0gICAgCi0gICAgICAgUmV0dXJuczoKLSAgICAKLSAgICAgICAgIFRoZSByZXN1bHQgb2Ygc2NhbGluZyB0aGlzIGNvbXBsZXggdG8gYSBmYWN0b3IuCi0gICAgKi8KLSAgICAkZGl2OiBmdW5jdGlvbihwb3MpIHsKLSAgICAgICAgdmFyIHggPSB0aGlzLngsIHkgPSB0aGlzLnk7Ci0gICAgICAgIHZhciBzcSA9IHBvcy5zcXVhcmVkTm9ybSgpOwotICAgICAgICB0aGlzLnggPSB4ICogcG9zLnggKyB5ICogcG9zLnk7IHRoaXMueSA9IHkgKiBwb3MueCAtIHggKiBwb3MueTsKLSAgICAgICAgcmV0dXJuIHRoaXMuJHNjYWxlKDEgLyBzcSk7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICBNZXRob2Q6IGlzWmVybwotICAgCi0gICAgICBSZXR1cm5zICp0cnVlKiBpZiB0aGUgbnVtYmVyIGlzIHplcm8uCi0gICAKLSAgICovCi0gICAgaXNaZXJvOiBmdW5jdGlvbiAoKSB7Ci0gICAgICB2YXIgYWxtb3N0WmVybyA9IDAuMDAwMSwgYWJzID0gTWF0aC5hYnM7Ci0gICAgICByZXR1cm4gYWJzKHRoaXMueCkgPCBhbG1vc3RaZXJvICYmIGFicyh0aGlzLnkpIDwgYWxtb3N0WmVybzsKLSAgICB9Ci19OwotCi12YXIgJEMgPSBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBuZXcgQ29tcGxleChhLCBiKTsgfTsKLQotQ29tcGxleC5LRVIgPSAkQygwLCAwKTsKLQotCi0KLS8qCi0gKiBGaWxlOiBHcmFwaC5qcwotICoKLSovCi0KLS8qCi0gQ2xhc3M6IEdyYXBoCi0KLSBBIEdyYXBoIENsYXNzIHRoYXQgcHJvdmlkZXMgdXNlZnVsIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuIFlvdSBjYW4gZmluZCBtb3JlIG1hbmlwdWxhdGlvbiBtZXRob2RzIGluIHRoZSA8R3JhcGguVXRpbD4gb2JqZWN0LgotCi0gQW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBjYW4gYmUgYWNjZXNzZWQgYnkgdXNpbmcgdGhlICpncmFwaCogcGFyYW1ldGVyIG9mIGFueSB0cmVlIG9yIGdyYXBoIHZpc3VhbGl6YXRpb24uCi0gCi0gRXhhbXBsZToKLQotIChzdGFydCBjb2RlIGpzKQotICAgLy9jcmVhdGUgbmV3IHZpc3VhbGl6YXRpb24KLSAgIHZhciB2aXogPSBuZXcgJGppdC5WaXoob3B0aW9ucyk7Ci0gICAvL2xvYWQgSlNPTiBkYXRhCi0gICB2aXoubG9hZEpTT04oanNvbik7Ci0gICAvL2FjY2VzcyBtb2RlbAotICAgdml6LmdyYXBoOyAvLzxHcmFwaD4gaW5zdGFuY2UKLSAoZW5kIGNvZGUpCi0gCi0gSW1wbGVtZW50czoKLSAKLSBUaGUgZm9sbG93aW5nIDxHcmFwaC5VdGlsPiBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCBpbiA8R3JhcGg+Ci0gCi0gIC0gPEdyYXBoLlV0aWwuZ2V0Tm9kZT4KLSAgLSA8R3JhcGguVXRpbC5lYWNoTm9kZT4KLSAgLSA8R3JhcGguVXRpbC5jb21wdXRlTGV2ZWxzPgotICAtIDxHcmFwaC5VdGlsLmVhY2hCRlM+Ci0gIC0gPEdyYXBoLlV0aWwuY2xlYW4+Ci0gIC0gPEdyYXBoLlV0aWwuZ2V0Q2xvc2VzdE5vZGVUb1Bvcz4KLSAgLSA8R3JhcGguVXRpbC5nZXRDbG9zZXN0Tm9kZVRvT3JpZ2luPgotIAotKi8gIAotCi0kaml0LkdyYXBoID0gbmV3IENsYXNzKHsKLQotICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHQsIE5vZGUsIEVkZ2UsIExhYmVsKSB7Ci0gICAgdmFyIGlubmVyT3B0aW9ucyA9IHsKLSAgICAna2xhc3MnOiBDb21wbGV4LAotICAgICdOb2RlJzoge30KLSAgICB9OwotICAgIHRoaXMuTm9kZSA9IE5vZGU7Ci0gICAgdGhpcy5FZGdlID0gRWRnZTsKLSAgICB0aGlzLkxhYmVsID0gTGFiZWw7Ci0gICAgdGhpcy5vcHQgPSAkLm1lcmdlKGlubmVyT3B0aW9ucywgb3B0IHx8IHt9KTsKLSAgICB0aGlzLm5vZGVzID0ge307Ci0gICAgdGhpcy5lZGdlcyA9IHt9OwotICAgIAotICAgIC8vYWRkIG5vZGVMaXN0IG1ldGhvZHMKLSAgICB2YXIgdGhhdCA9IHRoaXM7Ci0gICAgdGhpcy5ub2RlTGlzdCA9IHt9OwotICAgIGZvcih2YXIgcCBpbiBBY2Nlc3NvcnMpIHsKLSAgICAgIHRoYXQubm9kZUxpc3RbcF0gPSAoZnVuY3Rpb24ocCkgewotICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwotICAgICAgICAgIHRoYXQuZWFjaE5vZGUoZnVuY3Rpb24obikgewotICAgICAgICAgICAgbltwXS5hcHBseShuLCBhcmdzKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfTsKLSAgICAgIH0pKHApOwotICAgIH0KLQotIH0sCi0KLS8qCi0gICAgIE1ldGhvZDogZ2V0Tm9kZQotICAgIAotICAgICBSZXR1cm5zIGEgPEdyYXBoLk5vZGU+IGJ5ICppZCouCi0KLSAgICAgUGFyYW1ldGVyczoKLQotICAgICBpZCAtIChzdHJpbmcpIEEgPEdyYXBoLk5vZGU+IGlkLgotCi0gICAgIEV4YW1wbGU6Ci0KLSAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgdmFyIG5vZGUgPSBncmFwaC5nZXROb2RlKCdub2RlSWQnKTsKLSAgICAgKGVuZCBjb2RlKQotKi8gIAotIGdldE5vZGU6IGZ1bmN0aW9uKGlkKSB7Ci0gICAgaWYodGhpcy5oYXNOb2RlKGlkKSkgcmV0dXJuIHRoaXMubm9kZXNbaWRdOwotICAgIHJldHVybiBmYWxzZTsKLSB9LAotCi0gLyoKLSAgICAgTWV0aG9kOiBnZXQKLSAgICAKLSAgICAgQW4gYWxpYXMgZm9yIDxHcmFwaC5VdGlsLmdldE5vZGU+LiBSZXR1cm5zIGEgbm9kZSBieSAqaWQqLgotICAgIAotICAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgICBpZCAtIChzdHJpbmcpIEEgPEdyYXBoLk5vZGU+IGlkLgotICAgIAotICAgICBFeGFtcGxlOgotICAgIAotICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICB2YXIgbm9kZSA9IGdyYXBoLmdldCgnbm9kZUlkJyk7Ci0gICAgIChlbmQgY29kZSkKLSovICAKLSAgZ2V0OiBmdW5jdGlvbihpZCkgewotICAgIHJldHVybiB0aGlzLmdldE5vZGUoaWQpOwotICB9LAotCi0gLyoKLSAgIE1ldGhvZDogZ2V0QnlOYW1lCi0gIAotICAgUmV0dXJucyBhIDxHcmFwaC5Ob2RlPiBieSAqbmFtZSouCi0gIAotICAgUGFyYW1ldGVyczoKLSAgCi0gICBuYW1lIC0gKHN0cmluZykgQSA8R3JhcGguTm9kZT4gbmFtZS4KLSAgCi0gICBFeGFtcGxlOgotICAKLSAgIChzdGFydCBjb2RlIGpzKQotICAgICB2YXIgbm9kZSA9IGdyYXBoLmdldEJ5TmFtZSgnc29tZU5hbWUnKTsKLSAgIChlbmQgY29kZSkKLSAgKi8gIAotICBnZXRCeU5hbWU6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICBmb3IodmFyIGlkIGluIHRoaXMubm9kZXMpIHsKLSAgICAgIHZhciBuID0gdGhpcy5ub2Rlc1tpZF07Ci0gICAgICBpZihuLm5hbWUgPT0gbmFtZSkgcmV0dXJuIG47Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfSwKLQotLyoKLSAgIE1ldGhvZDogZ2V0QWRqYWNlbmNlCi0gIAotICAgUmV0dXJucyBhIDxHcmFwaC5BZGphY2VuY2U+IG9iamVjdCBjb25uZWN0aW5nIG5vZGVzIHdpdGggaWRzICppZCogYW5kICppZDIqLgotCi0gICBQYXJhbWV0ZXJzOgotCi0gICBpZCAtIChzdHJpbmcpIEEgPEdyYXBoLk5vZGU+IGlkLgotICAgaWQyIC0gKHN0cmluZykgQSA8R3JhcGguTm9kZT4gaWQuCi0qLyAgCi0gIGdldEFkamFjZW5jZTogZnVuY3Rpb24gKGlkLCBpZDIpIHsKLSAgICBpZihpZCBpbiB0aGlzLmVkZ2VzKSB7Ci0gICAgICByZXR1cm4gdGhpcy5lZGdlc1tpZF1baWQyXTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotIH0sCi0KLSAgICAvKgotICAgICBNZXRob2Q6IGFkZE5vZGUKLSAgICAKLSAgICAgQWRkcyBhIG5vZGUuCi0gICAgIAotICAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgICAgb2JqIC0gQW4gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgZGVzY3JpYmVkIGJlbG93Ci0KLSAgICAgIGlkIC0gKHN0cmluZykgQSBub2RlIGlkCi0gICAgICBuYW1lIC0gKHN0cmluZykgQSBub2RlJ3MgbmFtZQotICAgICAgZGF0YSAtIChvYmplY3QpIEEgbm9kZSdzIGRhdGEgaGFzaAotCi0gICAgU2VlIGFsc286Ci0gICAgPEdyYXBoLk5vZGU+Ci0KLSAgKi8gIAotICBhZGROb2RlOiBmdW5jdGlvbihvYmopIHsgCi0gICBpZighdGhpcy5ub2Rlc1tvYmouaWRdKSB7ICAKLSAgICAgdmFyIGVkZ2VzID0gdGhpcy5lZGdlc1tvYmouaWRdID0ge307Ci0gICAgIHRoaXMubm9kZXNbb2JqLmlkXSA9IG5ldyBHcmFwaC5Ob2RlKCQuZXh0ZW5kKHsKLSAgICAgICAgJ2lkJzogb2JqLmlkLAotICAgICAgICAnbmFtZSc6IG9iai5uYW1lLAotICAgICAgICAnZGF0YSc6ICQubWVyZ2Uob2JqLmRhdGEgfHwge30sIHt9KSwKLSAgICAgICAgJ2FkamFjZW5jaWVzJzogZWRnZXMgCi0gICAgICB9LCB0aGlzLm9wdC5Ob2RlKSwgCi0gICAgICB0aGlzLm9wdC5rbGFzcywgCi0gICAgICB0aGlzLk5vZGUsIAotICAgICAgdGhpcy5FZGdlLAotICAgICAgdGhpcy5MYWJlbCk7Ci0gICAgfQotICAgIHJldHVybiB0aGlzLm5vZGVzW29iai5pZF07Ci0gIH0sCi0gIAotICAgIC8qCi0gICAgIE1ldGhvZDogYWRkQWRqYWNlbmNlCi0gICAgCi0gICAgIENvbm5lY3RzIG5vZGVzIHNwZWNpZmllZCBieSAqb2JqKiBhbmQgKm9iajIqLiBJZiBub3QgZm91bmQsIG5vZGVzIGFyZSBjcmVhdGVkLgotICAgICAKLSAgICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICAgIG9iaiAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+IG9iamVjdC4KLSAgICAgIG9iajIgLSAob2JqZWN0KSBBbm90aGVyIDxHcmFwaC5Ob2RlPiBvYmplY3QuCi0gICAgICBkYXRhIC0gKG9iamVjdCkgQSBkYXRhIG9iamVjdC4gVXNlZCB0byBzdG9yZSBzb21lIGV4dHJhIGluZm9ybWF0aW9uIGluIHRoZSA8R3JhcGguQWRqYWNlbmNlPiBvYmplY3QgY3JlYXRlZC4KLQotICAgIFNlZSBhbHNvOgotCi0gICAgPEdyYXBoLk5vZGU+LCA8R3JhcGguQWRqYWNlbmNlPgotICAgICovICAKLSAgYWRkQWRqYWNlbmNlOiBmdW5jdGlvbiAob2JqLCBvYmoyLCBkYXRhKSB7Ci0gICAgaWYoIXRoaXMuaGFzTm9kZShvYmouaWQpKSB7IHRoaXMuYWRkTm9kZShvYmopOyB9Ci0gICAgaWYoIXRoaXMuaGFzTm9kZShvYmoyLmlkKSkgeyB0aGlzLmFkZE5vZGUob2JqMik7IH0KLSAgICBvYmogPSB0aGlzLm5vZGVzW29iai5pZF07IG9iajIgPSB0aGlzLm5vZGVzW29iajIuaWRdOwotICAgIGlmKCFvYmouYWRqYWNlbnRUbyhvYmoyKSkgewotICAgICAgdmFyIGFkanNPYmogPSB0aGlzLmVkZ2VzW29iai5pZF0gPSB0aGlzLmVkZ2VzW29iai5pZF0gfHwge307Ci0gICAgICB2YXIgYWRqc09iajIgPSB0aGlzLmVkZ2VzW29iajIuaWRdID0gdGhpcy5lZGdlc1tvYmoyLmlkXSB8fCB7fTsKLSAgICAgIGFkanNPYmpbb2JqMi5pZF0gPSBhZGpzT2JqMltvYmouaWRdID0gbmV3IEdyYXBoLkFkamFjZW5jZShvYmosIG9iajIsIGRhdGEsIHRoaXMuRWRnZSwgdGhpcy5MYWJlbCk7Ci0gICAgICByZXR1cm4gYWRqc09ialtvYmoyLmlkXTsKLSAgICB9Ci0gICAgcmV0dXJuIHRoaXMuZWRnZXNbb2JqLmlkXVtvYmoyLmlkXTsKLSB9LAotCi0gICAgLyoKLSAgICAgTWV0aG9kOiByZW1vdmVOb2RlCi0gICAgCi0gICAgIFJlbW92ZXMgYSA8R3JhcGguTm9kZT4gbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCAqaWQqLgotCi0gICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgaWQgLSAoc3RyaW5nKSBBIG5vZGUncyBpZC4KLQotICAgICovICAKLSAgcmVtb3ZlTm9kZTogZnVuY3Rpb24oaWQpIHsKLSAgICBpZih0aGlzLmhhc05vZGUoaWQpKSB7Ci0gICAgICBkZWxldGUgdGhpcy5ub2Rlc1tpZF07Ci0gICAgICB2YXIgYWRqcyA9IHRoaXMuZWRnZXNbaWRdOwotICAgICAgZm9yKHZhciB0byBpbiBhZGpzKSB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLmVkZ2VzW3RvXVtpZF07Ci0gICAgICB9Ci0gICAgICBkZWxldGUgdGhpcy5lZGdlc1tpZF07Ci0gICAgfQotICB9LAotICAKLS8qCi0gICAgIE1ldGhvZDogcmVtb3ZlQWRqYWNlbmNlCi0gICAgCi0gICAgIFJlbW92ZXMgYSA8R3JhcGguQWRqYWNlbmNlPiBtYXRjaGluZyAqaWQxKiBhbmQgKmlkMiouCi0KLSAgICAgUGFyYW1ldGVyczoKLQotICAgICBpZDEgLSAoc3RyaW5nKSBBIDxHcmFwaC5Ob2RlPiBpZC4KLSAgICAgaWQyIC0gKHN0cmluZykgQSA8R3JhcGguTm9kZT4gaWQuCi0qLyAgCi0gIHJlbW92ZUFkamFjZW5jZTogZnVuY3Rpb24oaWQxLCBpZDIpIHsKLSAgICBkZWxldGUgdGhpcy5lZGdlc1tpZDFdW2lkMl07Ci0gICAgZGVsZXRlIHRoaXMuZWRnZXNbaWQyXVtpZDFdOwotICB9LAotCi0gICAvKgotICAgICBNZXRob2Q6IGhhc05vZGUKLSAgICAKLSAgICAgUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgbm9kZSBiZWxvbmdzIHRvIHRoZSA8R3JhcGg+IG9yIG5vdC4KLSAgICAgCi0gICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgICAgIGlkIC0gKHN0cmluZykgTm9kZSBpZC4KLSAgICovICAKLSAgaGFzTm9kZTogZnVuY3Rpb24oaWQpIHsKLSAgICByZXR1cm4gaWQgaW4gdGhpcy5ub2RlczsKLSAgfSwKLSAgCi0gIC8qCi0gICAgTWV0aG9kOiBlbXB0eQotCi0gICAgRW1wdGllcyB0aGUgR3JhcGgKLQotICAqLwotICBlbXB0eTogZnVuY3Rpb24oKSB7IHRoaXMubm9kZXMgPSB7fTsgdGhpcy5lZGdlcyA9IHt9O30KLQotfSk7Ci0KLXZhciBHcmFwaCA9ICRqaXQuR3JhcGg7Ci0KLS8qCi0gT2JqZWN0OiBBY2Nlc3NvcnMKLSAKLSBEZWZpbmVzIGEgc2V0IG9mIG1ldGhvZHMgZm9yIGRhdGEsIGNhbnZhcyBhbmQgbGFiZWwgc3R5bGVzIG1hbmlwdWxhdGlvbiBpbXBsZW1lbnRlZCBieSA8R3JhcGguTm9kZT4gYW5kIDxHcmFwaC5BZGphY2VuY2U+IGluc3RhbmNlcy4KLSAKLSAqLwotdmFyIEFjY2Vzc29yczsKLQotKGZ1bmN0aW9uICgpIHsKLSAgdmFyIGdldERhdGFJbnRlcm5hbCA9IGZ1bmN0aW9uKHByZWZpeCwgcHJvcCwgdHlwZSwgZm9yY2UsIHByZWZpeENvbmZpZykgewotICAgIHZhciBkYXRhOwotICAgIHR5cGUgPSB0eXBlIHx8ICdjdXJyZW50JzsKLSAgICBwcmVmaXggPSAiJCIgKyAocHJlZml4ID8gcHJlZml4ICsgIi0iIDogIiIpOwotCi0gICAgaWYodHlwZSA9PSAnY3VycmVudCcpIHsKLSAgICAgIGRhdGEgPSB0aGlzLmRhdGE7Ci0gICAgfSBlbHNlIGlmKHR5cGUgPT0gJ3N0YXJ0JykgewotICAgICAgZGF0YSA9IHRoaXMuc3RhcnREYXRhOwotICAgIH0gZWxzZSBpZih0eXBlID09ICdlbmQnKSB7Ci0gICAgICBkYXRhID0gdGhpcy5lbmREYXRhOwotICAgIH0KLQotICAgIHZhciBkb2xsYXIgPSBwcmVmaXggKyBwcm9wOwotCi0gICAgaWYoZm9yY2UpIHsKLSAgICAgIHJldHVybiBkYXRhW2RvbGxhcl07Ci0gICAgfQotCi0gICAgaWYoIXRoaXMuQ29uZmlnLm92ZXJyaWRhYmxlKQotICAgICAgcmV0dXJuIHByZWZpeENvbmZpZ1twcm9wXSB8fCAwOwotCi0gICAgcmV0dXJuIChkb2xsYXIgaW4gZGF0YSkgPwotICAgICAgZGF0YVtkb2xsYXJdIDogKChkb2xsYXIgaW4gdGhpcy5kYXRhKSA/IHRoaXMuZGF0YVtkb2xsYXJdIDogKHByZWZpeENvbmZpZ1twcm9wXSB8fCAwKSk7Ci0gIH0KLQotICB2YXIgc2V0RGF0YUludGVybmFsID0gZnVuY3Rpb24ocHJlZml4LCBwcm9wLCB2YWx1ZSwgdHlwZSkgewotICAgIHR5cGUgPSB0eXBlIHx8ICdjdXJyZW50JzsKLSAgICBwcmVmaXggPSAnJCcgKyAocHJlZml4ID8gcHJlZml4ICsgJy0nIDogJycpOwotCi0gICAgdmFyIGRhdGE7Ci0KLSAgICBpZih0eXBlID09ICdjdXJyZW50JykgewotICAgICAgZGF0YSA9IHRoaXMuZGF0YTsKLSAgICB9IGVsc2UgaWYodHlwZSA9PSAnc3RhcnQnKSB7Ci0gICAgICBkYXRhID0gdGhpcy5zdGFydERhdGE7Ci0gICAgfSBlbHNlIGlmKHR5cGUgPT0gJ2VuZCcpIHsKLSAgICAgIGRhdGEgPSB0aGlzLmVuZERhdGE7Ci0gICAgfQotCi0gICAgZGF0YVtwcmVmaXggKyBwcm9wXSA9IHZhbHVlOwotICB9Ci0KLSAgdmFyIHJlbW92ZURhdGFJbnRlcm5hbCA9IGZ1bmN0aW9uKHByZWZpeCwgcHJvcGVydGllcykgewotICAgIHByZWZpeCA9ICckJyArIChwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJyk7Ci0gICAgdmFyIHRoYXQgPSB0aGlzOwotICAgICQuZWFjaChwcm9wZXJ0aWVzLCBmdW5jdGlvbihwcm9wKSB7Ci0gICAgICB2YXIgcHJlZiA9IHByZWZpeCArIHByb3A7Ci0gICAgICBkZWxldGUgdGhhdC5kYXRhW3ByZWZdOwotICAgICAgZGVsZXRlIHRoYXQuZW5kRGF0YVtwcmVmXTsKLSAgICAgIGRlbGV0ZSB0aGF0LnN0YXJ0RGF0YVtwcmVmXTsKLSAgICB9KTsKLSAgfQotCi0gIEFjY2Vzc29ycyA9IHsKLSAgICAvKgotICAgIE1ldGhvZDogZ2V0RGF0YQotCi0gICAgUmV0dXJucyB0aGUgc3BlY2lmaWVkIGRhdGEgdmFsdWUgcHJvcGVydHkuCi0gICAgVGhpcyBpcyB1c2VmdWwgZm9yIHF1ZXJ5aW5nIHNwZWNpYWwvcmVzZXJ2ZWQgPEdyYXBoLk5vZGU+IGRhdGEgcHJvcGVydGllcwotICAgIChpLmUgZG9sbGFyIHByZWZpeGVkIHByb3BlcnRpZXMpLgotCi0gICAgUGFyYW1ldGVyczoKLQotICAgICAgcHJvcCAgLSAoc3RyaW5nKSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuIFRoZSBkb2xsYXIgc2lnbiBpcyBub3QgbmVlZGVkLiBGb3IKLSAgICAgICAgICAgICAgZXhhbXBsZSAqZ2V0RGF0YSh3aWR0aCkqIHdpbGwgcmV0dXJuICpkYXRhLiR3aWR0aCouCi0gICAgICB0eXBlICAtIChzdHJpbmcpIFRoZSB0eXBlIG9mIHRoZSBkYXRhIHByb3BlcnR5IHF1ZXJpZWQuIERlZmF1bHQncyAiY3VycmVudCIuIFlvdSBjYW4gYWNjZXNzICpzdGFydCogYW5kICplbmQqIAotICAgICAgICAgICAgICBkYXRhIHByb3BlcnRpZXMgYWxzby4gVGhlc2UgcHJvcGVydGllcyBhcmUgdXNlZCB3aGVuIG1ha2luZyBhbmltYXRpb25zLgotICAgICAgZm9yY2UgLSAoYm9vbGVhbikgV2hldGhlciB0byBvYnRhaW4gdGhlIHRydWUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IChlcXVpdmFsZW50IHRvCi0gICAgICAgICAgICAgICpkYXRhLiRwcm9wKikgb3IgdG8gY2hlY2sgZm9yICpub2RlLm92ZXJyaWRhYmxlID0gdHJ1ZSogZmlyc3QuCi0KLSAgICBSZXR1cm5zOgotCi0gICAgICBUaGUgdmFsdWUgb2YgdGhlIGRvbGxhciBwcmVmaXhlZCBwcm9wZXJ0eSBvciB0aGUgZ2xvYmFsIE5vZGUvRWRnZSBwcm9wZXJ0eQotICAgICAgdmFsdWUgaWYgKm92ZXJyaWRhYmxlPWZhbHNlKgotCi0gICAgRXhhbXBsZToKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgbm9kZS5nZXREYXRhKCd3aWR0aCcpOyAvL3dpbGwgcmV0dXJuIG5vZGUuZGF0YS4kd2lkdGggaWYgTm9kZS5vdmVycmlkYWJsZT10cnVlOwotICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGdldERhdGE6IGZ1bmN0aW9uKHByb3AsIHR5cGUsIGZvcmNlKSB7Ci0gICAgICByZXR1cm4gZ2V0RGF0YUludGVybmFsLmNhbGwodGhpcywgIiIsIHByb3AsIHR5cGUsIGZvcmNlLCB0aGlzLkNvbmZpZyk7Ci0gICAgfSwKLQotCi0gICAgLyoKLSAgICBNZXRob2Q6IHNldERhdGEKLQotICAgIFNldHMgdGhlIGN1cnJlbnQgZGF0YSBwcm9wZXJ0eSB3aXRoIHNvbWUgc3BlY2lmaWMgdmFsdWUuCi0gICAgVGhpcyBtZXRob2QgaXMgb25seSB1c2VmdWwgZm9yIHJlc2VydmVkIChkb2xsYXIgcHJlZml4ZWQpIHByb3BlcnRpZXMuCi0KLSAgICBQYXJhbWV0ZXJzOgotCi0gICAgICBwcm9wICAtIChzdHJpbmcpIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS4gVGhlIGRvbGxhciBzaWduIGlzIG5vdCBuZWNlc3NhcnkuIEZvcgotICAgICAgICAgICAgICBleGFtcGxlICpzZXREYXRhKHdpZHRoKSogd2lsbCBzZXQgKmRhdGEuJHdpZHRoKi4KLSAgICAgIHZhbHVlIC0gKG1peGVkKSBUaGUgdmFsdWUgdG8gc3RvcmUuCi0gICAgICB0eXBlICAtIChzdHJpbmcpIFRoZSB0eXBlIG9mIHRoZSBkYXRhIHByb3BlcnR5IHRvIHN0b3JlLiBEZWZhdWx0J3MgImN1cnJlbnQiIGJ1dAotICAgICAgICAgICAgICBjYW4gYWxzbyBiZSAic3RhcnQiIG9yICJlbmQiLgotCi0gICAgRXhhbXBsZToKLSAgICAKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgbm9kZS5zZXREYXRhKCd3aWR0aCcsIDMwKTsKLSAgICAoZW5kIGNvZGUpCi0gICAgCi0gICAgSWYgd2Ugd2VyZSB0byBtYWtlIGFuIGFuaW1hdGlvbiBvZiBhIG5vZGUvZWRnZSB3aWR0aCB0aGVuIHdlIGNvdWxkIGRvCi0gICAgCi0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICB2YXIgbm9kZSA9IHZpei5nZXROb2RlKCdub2RlSWQnKTsKLSAgICAgIC8vc2V0IHN0YXJ0IGFuZCBlbmQgdmFsdWVzCi0gICAgICBub2RlLnNldERhdGEoJ3dpZHRoJywgMTAsICdzdGFydCcpOwotICAgICAgbm9kZS5zZXREYXRhKCd3aWR0aCcsIDMwLCAnZW5kJyk7Ci0gICAgICAvL3dpbGwgYW5pbWF0ZSBub2RlcyB3aWR0aCBwcm9wZXJ0eQotICAgICAgdml6LmZ4LmFuaW1hdGUoewotICAgICAgICBtb2RlczogWydub2RlLXByb3BlcnR5OndpZHRoJ10sCi0gICAgICAgIGR1cmF0aW9uOiAxMDAwCi0gICAgICB9KTsKLSAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICBzZXREYXRhOiBmdW5jdGlvbihwcm9wLCB2YWx1ZSwgdHlwZSkgewotICAgICAgc2V0RGF0YUludGVybmFsLmNhbGwodGhpcywgIiIsIHByb3AsIHZhbHVlLCB0eXBlKTsKLSAgICB9LAotCi0gICAgLyoKLSAgICBNZXRob2Q6IHNldERhdGFzZXQKLQotICAgIENvbnZlbmllbmNlIG1ldGhvZCB0byBzZXQgbXVsdGlwbGUgZGF0YSB2YWx1ZXMgYXQgb25jZS4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIHR5cGVzIC0gKGFycmF5fHN0cmluZykgQSBzZXQgb2YgJ2N1cnJlbnQnLCAnZW5kJyBvciAnc3RhcnQnIHZhbHVlcy4KLSAgICBvYmogLSAob2JqZWN0KSBBIGhhc2ggY29udGFpbmluZyB0aGUgbmFtZXMgYW5kIHZhbHVlcyBvZiB0aGUgcHJvcGVydGllcyB0byBiZSBhbHRlcmVkLgotCi0gICAgRXhhbXBsZToKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgIG5vZGUuc2V0RGF0YXNldChbJ2N1cnJlbnQnLCAnZW5kJ10sIHsKLSAgICAgICAgJ3dpZHRoJzogWzEwMCwgNV0sCi0gICAgICAgICdjb2xvcic6IFsnI2ZmZicsICcjY2NjJ10KLSAgICAgIH0pOwotICAgICAgLy8uLi5vciBhbHNvCi0gICAgICBub2RlLnNldERhdGFzZXQoJ2VuZCcsIHsKLSAgICAgICAgJ3dpZHRoJzogNSwKLSAgICAgICAgJ2NvbG9yJzogJyNjY2MnCi0gICAgICB9KTsKLSAgICAoZW5kIGNvZGUpCi0gICAgCi0gICAgU2VlIGFsc286IAotICAgIAotICAgIDxBY2Nlc3NvcnMuc2V0RGF0YT4KLSAgICAKLSAgICAqLwotICAgIHNldERhdGFzZXQ6IGZ1bmN0aW9uKHR5cGVzLCBvYmopIHsKLSAgICAgIHR5cGVzID0gJC5zcGxhdCh0eXBlcyk7Ci0gICAgICBmb3IodmFyIGF0dHIgaW4gb2JqKSB7Ci0gICAgICAgIGZvcih2YXIgaT0wLCB2YWwgPSAkLnNwbGF0KG9ialthdHRyXSksIGw9dHlwZXMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICAgIHRoaXMuc2V0RGF0YShhdHRyLCB2YWxbaV0sIHR5cGVzW2ldKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0sCi0gICAgCi0gICAgLyoKLSAgICBNZXRob2Q6IHJlbW92ZURhdGEKLQotICAgIFJlbW92ZSBkYXRhIHByb3BlcnRpZXMuCi0KLSAgICBQYXJhbWV0ZXJzOgotCi0gICAgT25lIG9yIG1vcmUgcHJvcGVydHkgbmFtZXMgYXMgYXJndW1lbnRzLiBUaGUgZG9sbGFyIHNpZ24gaXMgbm90IG5lZWRlZC4KLQotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgbm9kZS5yZW1vdmVEYXRhKCd3aWR0aCcpOyAvL25vdyB0aGUgZGVmYXVsdCB3aWR0aCB2YWx1ZSBpcyByZXR1cm5lZAotICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKCkgewotICAgICAgcmVtb3ZlRGF0YUludGVybmFsLmNhbGwodGhpcywgIiIsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpOwotICAgIH0sCi0KLSAgICAvKgotICAgIE1ldGhvZDogZ2V0Q2FudmFzU3R5bGUKLQotICAgIFJldHVybnMgdGhlIHNwZWNpZmllZCBjYW52YXMgc3R5bGUgZGF0YSB2YWx1ZSBwcm9wZXJ0eS4gVGhpcyBpcyB1c2VmdWwgZm9yCi0gICAgcXVlcnlpbmcgc3BlY2lhbC9yZXNlcnZlZCA8R3JhcGguTm9kZT4gY2FudmFzIHN0eWxlIGRhdGEgcHJvcGVydGllcyAoaS5lLgotICAgIGRvbGxhciBwcmVmaXhlZCBwcm9wZXJ0aWVzIHRoYXQgbWF0Y2ggd2l0aCAkY2FudmFzLTxuYW1lIG9mIGNhbnZhcyBzdHlsZT4pLgotCi0gICAgUGFyYW1ldGVyczoKLQotICAgICAgcHJvcCAgLSAoc3RyaW5nKSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuIFRoZSBkb2xsYXIgc2lnbiBpcyBub3QgbmVlZGVkLiBGb3IKLSAgICAgICAgICAgICAgZXhhbXBsZSAqZ2V0Q2FudmFzU3R5bGUoc2hhZG93Qmx1cikqIHdpbGwgcmV0dXJuICpkYXRhWyRjYW52YXMtc2hhZG93Qmx1cl0qLgotICAgICAgdHlwZSAgLSAoc3RyaW5nKSBUaGUgdHlwZSBvZiB0aGUgZGF0YSBwcm9wZXJ0eSBxdWVyaWVkLiBEZWZhdWx0J3MgKmN1cnJlbnQqLiBZb3UgY2FuIGFjY2VzcyAqc3RhcnQqIGFuZCAqZW5kKiAKLSAgICAgICAgICAgICAgZGF0YSBwcm9wZXJ0aWVzIGFsc28uCi0gICAgICAgICAgICAgIAotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICBub2RlLmdldENhbnZhc1N0eWxlKCdzaGFkb3dCbHVyJyk7Ci0gICAgKGVuZCBjb2RlKQotICAgIAotICAgIFNlZSBhbHNvOgotICAgIAotICAgIDxBY2Nlc3NvcnMuZ2V0RGF0YT4KLSAgICAqLwotICAgIGdldENhbnZhc1N0eWxlOiBmdW5jdGlvbihwcm9wLCB0eXBlLCBmb3JjZSkgewotICAgICAgcmV0dXJuIGdldERhdGFJbnRlcm5hbC5jYWxsKAotICAgICAgICAgIHRoaXMsICdjYW52YXMnLCBwcm9wLCB0eXBlLCBmb3JjZSwgdGhpcy5Db25maWcuQ2FudmFzU3R5bGVzKTsKLSAgICB9LAotCi0gICAgLyoKLSAgICBNZXRob2Q6IHNldENhbnZhc1N0eWxlCi0KLSAgICBTZXRzIHRoZSBjYW52YXMgc3R5bGUgZGF0YSBwcm9wZXJ0eSB3aXRoIHNvbWUgc3BlY2lmaWMgdmFsdWUuCi0gICAgVGhpcyBtZXRob2QgaXMgb25seSB1c2VmdWwgZm9yIHJlc2VydmVkIChkb2xsYXIgcHJlZml4ZWQpIHByb3BlcnRpZXMuCi0gICAgCi0gICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICBwcm9wIC0gKHN0cmluZykgTmFtZSBvZiB0aGUgcHJvcGVydHkuIENhbiBiZSBhbnkgY2FudmFzIHByb3BlcnR5IGxpa2UgJ3NoYWRvd0JsdXInLCAnc2hhZG93Q29sb3InLCAnc3Ryb2tlU3R5bGUnLCBldGMuCi0gICAgdmFsdWUgLSAobWl4ZWQpIFRoZSB2YWx1ZSB0byBzZXQgdG8gdGhlIHByb3BlcnR5LgotICAgIHR5cGUgLSAoc3RyaW5nKSBEZWZhdWx0J3MgKmN1cnJlbnQqLiBXaGV0aGVyIHRvIHNldCAqc3RhcnQqLCAqY3VycmVudCogb3IgKmVuZCogdHlwZSBwcm9wZXJ0aWVzLgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgCi0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgIG5vZGUuc2V0Q2FudmFzU3R5bGUoJ3NoYWRvd0JsdXInLCAzMCk7Ci0gICAgKGVuZCBjb2RlKQotICAgIAotICAgIElmIHdlIHdlcmUgdG8gbWFrZSBhbiBhbmltYXRpb24gb2YgYSBub2RlL2VkZ2Ugc2hhZG93Qmx1ciBjYW52YXMgc3R5bGUgdGhlbiB3ZSBjb3VsZCBkbwotICAgIAotICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgdmFyIG5vZGUgPSB2aXouZ2V0Tm9kZSgnbm9kZUlkJyk7Ci0gICAgICAvL3NldCBzdGFydCBhbmQgZW5kIHZhbHVlcwotICAgICAgbm9kZS5zZXRDYW52YXNTdHlsZSgnc2hhZG93Qmx1cicsIDEwLCAnc3RhcnQnKTsKLSAgICAgIG5vZGUuc2V0Q2FudmFzU3R5bGUoJ3NoYWRvd0JsdXInLCAzMCwgJ2VuZCcpOwotICAgICAgLy93aWxsIGFuaW1hdGUgbm9kZXMgY2FudmFzIHN0eWxlIHByb3BlcnR5IGZvciBub2RlcwotICAgICAgdml6LmZ4LmFuaW1hdGUoewotICAgICAgICBtb2RlczogWydub2RlLXN0eWxlOnNoYWRvd0JsdXInXSwKLSAgICAgICAgZHVyYXRpb246IDEwMDAKLSAgICAgIH0pOwotICAgIChlbmQgY29kZSkKLSAgICAKLSAgICBTZWUgYWxzbzoKLSAgICAKLSAgICA8QWNjZXNzb3JzLnNldERhdGE+LgotICAgICovCi0gICAgc2V0Q2FudmFzU3R5bGU6IGZ1bmN0aW9uKHByb3AsIHZhbHVlLCB0eXBlKSB7Ci0gICAgICBzZXREYXRhSW50ZXJuYWwuY2FsbCh0aGlzLCAnY2FudmFzJywgcHJvcCwgdmFsdWUsIHR5cGUpOwotICAgIH0sCi0KLSAgICAvKgotICAgIE1ldGhvZDogc2V0Q2FudmFzU3R5bGVzCi0KLSAgICBDb252ZW5pZW5jZSBtZXRob2QgdG8gc2V0IG11bHRpcGxlIHN0eWxlcyBhdCBvbmNlLgotCi0gICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICB0eXBlcyAtIChhcnJheXxzdHJpbmcpIEEgc2V0IG9mICdjdXJyZW50JywgJ2VuZCcgb3IgJ3N0YXJ0JyB2YWx1ZXMuCi0gICAgb2JqIC0gKG9iamVjdCkgQSBoYXNoIGNvbnRhaW5pbmcgdGhlIG5hbWVzIGFuZCB2YWx1ZXMgb2YgdGhlIHByb3BlcnRpZXMgdG8gYmUgYWx0ZXJlZC4KLQotICAgIFNlZSBhbHNvOgotICAgIAotICAgIDxBY2Nlc3NvcnMuc2V0RGF0YXNldD4uCi0gICAgKi8KLSAgICBzZXRDYW52YXNTdHlsZXM6IGZ1bmN0aW9uKHR5cGVzLCBvYmopIHsKLSAgICAgIHR5cGVzID0gJC5zcGxhdCh0eXBlcyk7Ci0gICAgICBmb3IodmFyIGF0dHIgaW4gb2JqKSB7Ci0gICAgICAgIGZvcih2YXIgaT0wLCB2YWwgPSAkLnNwbGF0KG9ialthdHRyXSksIGw9dHlwZXMubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICAgIHRoaXMuc2V0Q2FudmFzU3R5bGUoYXR0ciwgdmFsW2ldLCB0eXBlc1tpXSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9LAotCi0gICAgLyoKLSAgICBNZXRob2Q6IHJlbW92ZUNhbnZhc1N0eWxlCi0KLSAgICBSZW1vdmUgY2FudmFzIHN0eWxlIHByb3BlcnRpZXMgZnJvbSBkYXRhLgotCi0gICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICBBIHZhcmlhYmxlIG51bWJlciBvZiBjYW52YXMgc3R5bGUgc3RyaW5ncy4KLQotICAgIFNlZSBhbHNvOgotICAgIAotICAgIDxBY2Nlc3NvcnMucmVtb3ZlRGF0YT4uCi0gICAgKi8KLSAgICByZW1vdmVDYW52YXNTdHlsZTogZnVuY3Rpb24oKSB7Ci0gICAgICByZW1vdmVEYXRhSW50ZXJuYWwuY2FsbCh0aGlzLCAnY2FudmFzJywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgTWV0aG9kOiBnZXRMYWJlbERhdGEKLQotICAgIFJldHVybnMgdGhlIHNwZWNpZmllZCBsYWJlbCBkYXRhIHZhbHVlIHByb3BlcnR5LiBUaGlzIGlzIHVzZWZ1bCBmb3IKLSAgICBxdWVyeWluZyBzcGVjaWFsL3Jlc2VydmVkIDxHcmFwaC5Ob2RlPiBsYWJlbCBvcHRpb25zIChpLmUuCi0gICAgZG9sbGFyIHByZWZpeGVkIHByb3BlcnRpZXMgdGhhdCBtYXRjaCB3aXRoICRsYWJlbC08bmFtZSBvZiBsYWJlbCBzdHlsZT4pLgotCi0gICAgUGFyYW1ldGVyczoKLQotICAgICAgcHJvcCAgLSAoc3RyaW5nKSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuIFRoZSBkb2xsYXIgc2lnbiBwcmVmaXggaXMgbm90IG5lZWRlZC4gRm9yCi0gICAgICAgICAgICAgIGV4YW1wbGUgKmdldExhYmVsRGF0YShzaXplKSogd2lsbCByZXR1cm4gKmRhdGFbJGxhYmVsLXNpemVdKi4KLSAgICAgIHR5cGUgIC0gKHN0cmluZykgVGhlIHR5cGUgb2YgdGhlIGRhdGEgcHJvcGVydHkgcXVlcmllZC4gRGVmYXVsdCdzICpjdXJyZW50Ki4gWW91IGNhbiBhY2Nlc3MgKnN0YXJ0KiBhbmQgKmVuZCogCi0gICAgICAgICAgICAgIGRhdGEgcHJvcGVydGllcyBhbHNvLgotICAgICAgICAgICAgICAKLSAgICBTZWUgYWxzbzoKLSAgICAKLSAgICA8QWNjZXNzb3JzLmdldERhdGE+LgotICAgICovCi0gICAgZ2V0TGFiZWxEYXRhOiBmdW5jdGlvbihwcm9wLCB0eXBlLCBmb3JjZSkgewotICAgICAgcmV0dXJuIGdldERhdGFJbnRlcm5hbC5jYWxsKAotICAgICAgICAgIHRoaXMsICdsYWJlbCcsIHByb3AsIHR5cGUsIGZvcmNlLCB0aGlzLkxhYmVsKTsKLSAgICB9LAotCi0gICAgLyoKLSAgICBNZXRob2Q6IHNldExhYmVsRGF0YQotCi0gICAgU2V0cyB0aGUgY3VycmVudCBsYWJlbCBkYXRhIHdpdGggc29tZSBzcGVjaWZpYyB2YWx1ZS4KLSAgICBUaGlzIG1ldGhvZCBpcyBvbmx5IHVzZWZ1bCBmb3IgcmVzZXJ2ZWQgKGRvbGxhciBwcmVmaXhlZCkgcHJvcGVydGllcy4KLQotICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgcHJvcCAtIChzdHJpbmcpIE5hbWUgb2YgdGhlIHByb3BlcnR5LiBDYW4gYmUgYW55IGNhbnZhcyBwcm9wZXJ0eSBsaWtlICdzaGFkb3dCbHVyJywgJ3NoYWRvd0NvbG9yJywgJ3N0cm9rZVN0eWxlJywgZXRjLgotICAgIHZhbHVlIC0gKG1peGVkKSBUaGUgdmFsdWUgdG8gc2V0IHRvIHRoZSBwcm9wZXJ0eS4KLSAgICB0eXBlIC0gKHN0cmluZykgRGVmYXVsdCdzICpjdXJyZW50Ki4gV2hldGhlciB0byBzZXQgKnN0YXJ0KiwgKmN1cnJlbnQqIG9yICplbmQqIHR5cGUgcHJvcGVydGllcy4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIAotICAgIChzdGFydCBjb2RlIGpzKQotICAgICBub2RlLnNldExhYmVsRGF0YSgnc2l6ZScsIDMwKTsKLSAgICAoZW5kIGNvZGUpCi0gICAgCi0gICAgSWYgd2Ugd2VyZSB0byBtYWtlIGFuIGFuaW1hdGlvbiBvZiBhIG5vZGUgbGFiZWwgc2l6ZSB0aGVuIHdlIGNvdWxkIGRvCi0gICAgCi0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICB2YXIgbm9kZSA9IHZpei5nZXROb2RlKCdub2RlSWQnKTsKLSAgICAgIC8vc2V0IHN0YXJ0IGFuZCBlbmQgdmFsdWVzCi0gICAgICBub2RlLnNldExhYmVsRGF0YSgnc2l6ZScsIDEwLCAnc3RhcnQnKTsKLSAgICAgIG5vZGUuc2V0TGFiZWxEYXRhKCdzaXplJywgMzAsICdlbmQnKTsKLSAgICAgIC8vd2lsbCBhbmltYXRlIG5vZGVzIGxhYmVsIHNpemUKLSAgICAgIHZpei5meC5hbmltYXRlKHsKLSAgICAgICAgbW9kZXM6IFsnbGFiZWwtcHJvcGVydHk6c2l6ZSddLAotICAgICAgICBkdXJhdGlvbjogMTAwMAotICAgICAgfSk7Ci0gICAgKGVuZCBjb2RlKQotICAgIAotICAgIFNlZSBhbHNvOgotICAgIAotICAgIDxBY2Nlc3NvcnMuc2V0RGF0YT4uCi0gICAgKi8KLSAgICBzZXRMYWJlbERhdGE6IGZ1bmN0aW9uKHByb3AsIHZhbHVlLCB0eXBlKSB7Ci0gICAgICBzZXREYXRhSW50ZXJuYWwuY2FsbCh0aGlzLCAnbGFiZWwnLCBwcm9wLCB2YWx1ZSwgdHlwZSk7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgTWV0aG9kOiBzZXRMYWJlbERhdGFzZXQKLQotICAgIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHNldCBtdWx0aXBsZSBsYWJlbCBkYXRhIGF0IG9uY2UuCi0KLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIHR5cGVzIC0gKGFycmF5fHN0cmluZykgQSBzZXQgb2YgJ2N1cnJlbnQnLCAnZW5kJyBvciAnc3RhcnQnIHZhbHVlcy4KLSAgICBvYmogLSAob2JqZWN0KSBBIGhhc2ggY29udGFpbmluZyB0aGUgbmFtZXMgYW5kIHZhbHVlcyBvZiB0aGUgcHJvcGVydGllcyB0byBiZSBhbHRlcmVkLgotCi0gICAgU2VlIGFsc286Ci0gICAgCi0gICAgPEFjY2Vzc29ycy5zZXREYXRhc2V0Pi4KLSAgICAqLwotICAgIHNldExhYmVsRGF0YXNldDogZnVuY3Rpb24odHlwZXMsIG9iaikgewotICAgICAgdHlwZXMgPSAkLnNwbGF0KHR5cGVzKTsKLSAgICAgIGZvcih2YXIgYXR0ciBpbiBvYmopIHsKLSAgICAgICAgZm9yKHZhciBpPTAsIHZhbCA9ICQuc3BsYXQob2JqW2F0dHJdKSwgbD10eXBlcy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICAgICAgdGhpcy5zZXRMYWJlbERhdGEoYXR0ciwgdmFsW2ldLCB0eXBlc1tpXSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9LAotCi0gICAgLyoKLSAgICBNZXRob2Q6IHJlbW92ZUxhYmVsRGF0YQotCi0gICAgUmVtb3ZlIGxhYmVsIHByb3BlcnRpZXMgZnJvbSBkYXRhLgotICAgIAotICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgQSB2YXJpYWJsZSBudW1iZXIgb2YgbGFiZWwgcHJvcGVydHkgc3RyaW5ncy4KLQotICAgIFNlZSBhbHNvOgotICAgIAotICAgIDxBY2Nlc3NvcnMucmVtb3ZlRGF0YT4uCi0gICAgKi8KLSAgICByZW1vdmVMYWJlbERhdGE6IGZ1bmN0aW9uKCkgewotICAgICAgcmVtb3ZlRGF0YUludGVybmFsLmNhbGwodGhpcywgJ2xhYmVsJywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7Ci0gICAgfQotICB9OwotfSkoKTsKLQotLyoKLSAgICAgQ2xhc3M6IEdyYXBoLk5vZGUKLQotICAgICBBIDxHcmFwaD4gbm9kZS4KLSAgICAgCi0gICAgIEltcGxlbWVudHM6Ci0gICAgIAotICAgICA8QWNjZXNzb3JzPiBtZXRob2RzLgotICAgICAKLSAgICAgVGhlIGZvbGxvd2luZyA8R3JhcGguVXRpbD4gbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQgYnkgPEdyYXBoLk5vZGU+Ci0gICAgIAotICAgIC0gPEdyYXBoLlV0aWwuZWFjaEFkamFjZW5jeT4KLSAgICAtIDxHcmFwaC5VdGlsLmVhY2hMZXZlbD4KLSAgICAtIDxHcmFwaC5VdGlsLmVhY2hTdWJncmFwaD4KLSAgICAtIDxHcmFwaC5VdGlsLmVhY2hTdWJub2RlPgotICAgIC0gPEdyYXBoLlV0aWwuYW55U3Vibm9kZT4KLSAgICAtIDxHcmFwaC5VdGlsLmdldFN1Ym5vZGVzPgotICAgIC0gPEdyYXBoLlV0aWwuZ2V0UGFyZW50cz4KLSAgICAtIDxHcmFwaC5VdGlsLmlzRGVzY2VuZGFudE9mPiAgICAgCi0qLwotR3JhcGguTm9kZSA9IG5ldyBDbGFzcyh7Ci0gICAgCi0gIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdCwga2xhc3MsIE5vZGUsIEVkZ2UsIExhYmVsKSB7Ci0gICAgdmFyIGlubmVyT3B0aW9ucyA9IHsKLSAgICAgICdpZCc6ICcnLAotICAgICAgJ25hbWUnOiAnJywKLSAgICAgICdkYXRhJzoge30sCi0gICAgICAnc3RhcnREYXRhJzoge30sCi0gICAgICAnZW5kRGF0YSc6IHt9LAotICAgICAgJ2FkamFjZW5jaWVzJzoge30sCi0KLSAgICAgICdzZWxlY3RlZCc6IGZhbHNlLAotICAgICAgJ2RyYXduJzogZmFsc2UsCi0gICAgICAnZXhpc3QnOiBmYWxzZSwKLQotICAgICAgJ2FuZ2xlU3Bhbic6IHsKLSAgICAgICAgJ2JlZ2luJzogMCwKLSAgICAgICAgJ2VuZCcgOiAwCi0gICAgICB9LAotCi0gICAgICAncG9zJzogbmV3IGtsYXNzLAotICAgICAgJ3N0YXJ0UG9zJzogbmV3IGtsYXNzLAotICAgICAgJ2VuZFBvcyc6IG5ldyBrbGFzcwotICAgIH07Ci0gICAgCi0gICAgJC5leHRlbmQodGhpcywgJC5leHRlbmQoaW5uZXJPcHRpb25zLCBvcHQpKTsKLSAgICB0aGlzLkNvbmZpZyA9IHRoaXMuTm9kZSA9IE5vZGU7Ci0gICAgdGhpcy5FZGdlID0gRWRnZTsKLSAgICB0aGlzLkxhYmVsID0gTGFiZWw7Ci0gIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogYWRqYWNlbnRUbwotICAgIAotICAgICAgIEluZGljYXRlcyBpZiB0aGUgbm9kZSBpcyBhZGphY2VudCB0byB0aGUgbm9kZSBzcGVjaWZpZWQgYnkgaWQKLQotICAgICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgICAgICAgaWQgLSAoc3RyaW5nKSBBIG5vZGUgaWQuCi0gICAgCi0gICAgICAgRXhhbXBsZToKLSAgICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgbm9kZS5hZGphY2VudFRvKCdub2RlSWQnKSA9PSB0cnVlOwotICAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGFkamFjZW50VG86IGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgcmV0dXJuIG5vZGUuaWQgaW4gdGhpcy5hZGphY2VuY2llczsKLSAgICB9LAotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IGdldEFkamFjZW5jeQotICAgIAotICAgICAgIFJldHVybnMgYSA8R3JhcGguQWRqYWNlbmNlPiBvYmplY3QgY29ubmVjdGluZyB0aGUgY3VycmVudCA8R3JhcGguTm9kZT4gYW5kIHRoZSBub2RlIGhhdmluZyAqaWQqIGFzIGlkLgotCi0gICAgICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICAgICAgICBpZCAtIChzdHJpbmcpIEEgbm9kZSBpZC4KLSAgICAqLyAgCi0gICAgZ2V0QWRqYWNlbmN5OiBmdW5jdGlvbihpZCkgewotICAgICAgICByZXR1cm4gdGhpcy5hZGphY2VuY2llc1tpZF07Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICBNZXRob2Q6IGdldFBvcwotICAgCi0gICAgICBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgbm9kZS4KLSAgCi0gICAgICBQYXJhbWV0ZXJzOgotICAgCi0gICAgICAgICB0eXBlIC0gKHN0cmluZykgRGVmYXVsdCdzICpjdXJyZW50Ki4gUG9zc2libGUgdmFsdWVzIGFyZSAic3RhcnQiLCAiZW5kIiBvciAiY3VycmVudCIuCi0gICAKLSAgICAgIFJldHVybnM6Ci0gICAKLSAgICAgICAgQSA8Q29tcGxleD4gb3IgPFBvbGFyPiBpbnN0YW5jZS4KLSAgCi0gICAgICBFeGFtcGxlOgotICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgdmFyIHBvcyA9IG5vZGUuZ2V0UG9zKCdlbmQnKTsKLSAgICAgIChlbmQgY29kZSkKLSAgICovCi0gICBnZXRQb3M6IGZ1bmN0aW9uKHR5cGUpIHsKLSAgICAgICB0eXBlID0gdHlwZSB8fCAiY3VycmVudCI7Ci0gICAgICAgaWYodHlwZSA9PSAiY3VycmVudCIpIHsKLSAgICAgICAgIHJldHVybiB0aGlzLnBvczsKLSAgICAgICB9IGVsc2UgaWYodHlwZSA9PSAiZW5kIikgewotICAgICAgICAgcmV0dXJuIHRoaXMuZW5kUG9zOwotICAgICAgIH0gZWxzZSBpZih0eXBlID09ICJzdGFydCIpIHsKLSAgICAgICAgIHJldHVybiB0aGlzLnN0YXJ0UG9zOwotICAgICAgIH0KLSAgIH0sCi0gICAvKgotICAgICBNZXRob2Q6IHNldFBvcwotICAKLSAgICAgU2V0cyB0aGUgbm9kZSdzIHBvc2l0aW9uLgotICAKLSAgICAgUGFyYW1ldGVyczoKLSAgCi0gICAgICAgIHZhbHVlIC0gKG9iamVjdCkgQSA8Q29tcGxleD4gb3IgPFBvbGFyPiBpbnN0YW5jZS4KLSAgICAgICAgdHlwZSAtIChzdHJpbmcpIERlZmF1bHQncyAqY3VycmVudCouIFBvc3NpYmxlIHZhbHVlcyBhcmUgInN0YXJ0IiwgImVuZCIgb3IgImN1cnJlbnQiLgotICAKLSAgICAgRXhhbXBsZToKLSAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICBub2RlLnNldFBvcyhuZXcgJGppdC5Db21wbGV4KDAsIDApLCAnZW5kJyk7Ci0gICAgIChlbmQgY29kZSkKLSAgKi8KLSAgc2V0UG9zOiBmdW5jdGlvbih2YWx1ZSwgdHlwZSkgewotICAgICAgdHlwZSA9IHR5cGUgfHwgImN1cnJlbnQiOwotICAgICAgdmFyIHBvczsKLSAgICAgIGlmKHR5cGUgPT0gImN1cnJlbnQiKSB7Ci0gICAgICAgIHBvcyA9IHRoaXMucG9zOwotICAgICAgfSBlbHNlIGlmKHR5cGUgPT0gImVuZCIpIHsKLSAgICAgICAgcG9zID0gdGhpcy5lbmRQb3M7Ci0gICAgICB9IGVsc2UgaWYodHlwZSA9PSAic3RhcnQiKSB7Ci0gICAgICAgIHBvcyA9IHRoaXMuc3RhcnRQb3M7Ci0gICAgICB9Ci0gICAgICBwb3Muc2V0KHZhbHVlKTsKLSAgfQotfSk7Ci0KLUdyYXBoLk5vZGUuaW1wbGVtZW50KEFjY2Vzc29ycyk7Ci0KLS8qCi0gICAgIENsYXNzOiBHcmFwaC5BZGphY2VuY2UKLQotICAgICBBIDxHcmFwaD4gYWRqYWNlbmNlIChvciBlZGdlKSBjb25uZWN0aW5nIHR3byA8R3JhcGguTm9kZXM+LgotICAgICAKLSAgICAgSW1wbGVtZW50czoKLSAgICAgCi0gICAgIDxBY2Nlc3NvcnM+IG1ldGhvZHMuCi0KLSAgICAgU2VlIGFsc286Ci0KLSAgICAgPEdyYXBoPiwgPEdyYXBoLk5vZGU+Ci0KLSAgICAgUHJvcGVydGllczoKLSAgICAgCi0gICAgICBub2RlRnJvbSAtIEEgPEdyYXBoLk5vZGU+IGNvbm5lY3RlZCBieSB0aGlzIGVkZ2UuCi0gICAgICBub2RlVG8gLSBBbm90aGVyICA8R3JhcGguTm9kZT4gY29ubmVjdGVkIGJ5IHRoaXMgZWRnZS4KLSAgICAgIGRhdGEgLSBOb2RlIGRhdGEgcHJvcGVydHkgY29udGFpbmluZyBhIGhhc2ggKGkuZSB7fSkgd2l0aCBjdXN0b20gb3B0aW9ucy4KLSovCi1HcmFwaC5BZGphY2VuY2UgPSBuZXcgQ2xhc3MoewotICAKLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24obm9kZUZyb20sIG5vZGVUbywgZGF0YSwgRWRnZSwgTGFiZWwpIHsKLSAgICB0aGlzLm5vZGVGcm9tID0gbm9kZUZyb207Ci0gICAgdGhpcy5ub2RlVG8gPSBub2RlVG87Ci0gICAgdGhpcy5kYXRhID0gZGF0YSB8fCB7fTsKLSAgICB0aGlzLnN0YXJ0RGF0YSA9IHt9OwotICAgIHRoaXMuZW5kRGF0YSA9IHt9OwotICAgIHRoaXMuQ29uZmlnID0gdGhpcy5FZGdlID0gRWRnZTsKLSAgICB0aGlzLkxhYmVsID0gTGFiZWw7Ci0gIH0KLX0pOwotCi1HcmFwaC5BZGphY2VuY2UuaW1wbGVtZW50KEFjY2Vzc29ycyk7Ci0KLS8qCi0gICBPYmplY3Q6IEdyYXBoLlV0aWwKLQotICAgPEdyYXBoPiB0cmF2ZXJzYWwgYW5kIHByb2Nlc3NpbmcgdXRpbGl0eSBvYmplY3QuCi0gICAKLSAgIE5vdGU6Ci0gICAKLSAgIEZvciB5b3VyIGNvbnZlbmllbmNlIHNvbWUgb2YgdGhlc2UgbWV0aG9kcyBoYXZlIGFsc28gYmVlbiBhcHBlbmRlZCB0byA8R3JhcGg+IGFuZCA8R3JhcGguTm9kZT4gY2xhc3Nlcy4KLSovCi1HcmFwaC5VdGlsID0gewotICAgIC8qCi0gICAgICAgZmlsdGVyCi0gICAgCi0gICAgICAgRm9yIGludGVybmFsIHVzZSBvbmx5LiBQcm92aWRlcyBhIGZpbHRlcmluZyBmdW5jdGlvbiBiYXNlZCBvbiBmbGFncy4KLSAgICAqLwotICAgIGZpbHRlcjogZnVuY3Rpb24ocGFyYW0pIHsKLSAgICAgICAgaWYoIXBhcmFtIHx8ICEoJC50eXBlKHBhcmFtKSA9PSAnc3RyaW5nJykpIHJldHVybiBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH07Ci0gICAgICAgIHZhciBwcm9wcyA9IHBhcmFtLnNwbGl0KCIgIik7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbihlbGVtKSB7Ci0gICAgICAgICAgICBmb3IodmFyIGk9MDsgaTxwcm9wcy5sZW5ndGg7IGkrKykgeyAKLSAgICAgICAgICAgICAgaWYoZWxlbVtwcm9wc1tpXV0pIHsgCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH07Ci0gICAgfSwKLSAgICAvKgotICAgICAgIE1ldGhvZDogZ2V0Tm9kZQotICAgIAotICAgICAgIFJldHVybnMgYSA8R3JhcGguTm9kZT4gYnkgKmlkKi4KLSAgICAgICAKLSAgICAgICBBbHNvIGltcGxlbWVudGVkIGJ5OgotICAgICAgIAotICAgICAgIDxHcmFwaD4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICBncmFwaCAtIChvYmplY3QpIEEgPEdyYXBoPiBpbnN0YW5jZS4KLSAgICAgICBpZCAtIChzdHJpbmcpIEEgPEdyYXBoLk5vZGU+IGlkLgotCi0gICAgICAgRXhhbXBsZToKLQotICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICAgJGppdC5HcmFwaC5VdGlsLmdldE5vZGUoZ3JhcGgsICdub2RlaWQnKTsKLSAgICAgICAgIC8vb3IuLi4KLSAgICAgICAgIGdyYXBoLmdldE5vZGUoJ25vZGVpZCcpOwotICAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGdldE5vZGU6IGZ1bmN0aW9uKGdyYXBoLCBpZCkgewotICAgICAgICByZXR1cm4gZ3JhcGgubm9kZXNbaWRdOwotICAgIH0sCi0gICAgCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IGVhY2hOb2RlCi0gICAgCi0gICAgICAgSXRlcmF0ZXMgb3ZlciA8R3JhcGg+IG5vZGVzIHBlcmZvcm1pbmcgYW4gKmFjdGlvbiouCi0gICAgICAgCi0gICAgICAgQWxzbyBpbXBsZW1lbnRlZCBieToKLSAgICAgICAKLSAgICAgICA8R3JhcGg+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIGdyYXBoIC0gKG9iamVjdCkgQSA8R3JhcGg+IGluc3RhbmNlLgotICAgICAgIGFjdGlvbiAtIChmdW5jdGlvbikgQSBjYWxsYmFjayBmdW5jdGlvbiBoYXZpbmcgYSA8R3JhcGguTm9kZT4gYXMgZmlyc3QgZm9ybWFsIHBhcmFtZXRlci4KLQotICAgICAgIEV4YW1wbGU6Ci0gICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgICAkaml0LkdyYXBoLlV0aWwuZWFjaE5vZGUoZ3JhcGgsIGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgICBhbGVydChub2RlLm5hbWUpOwotICAgICAgICAgfSk7Ci0gICAgICAgICAvL29yLi4uCi0gICAgICAgICBncmFwaC5lYWNoTm9kZShmdW5jdGlvbihub2RlKSB7Ci0gICAgICAgICAgIGFsZXJ0KG5vZGUubmFtZSk7Ci0gICAgICAgICB9KTsKLSAgICAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICBlYWNoTm9kZTogZnVuY3Rpb24oZ3JhcGgsIGFjdGlvbiwgZmxhZ3MpIHsKLSAgICAgICAgdmFyIGZpbHRlciA9IHRoaXMuZmlsdGVyKGZsYWdzKTsKLSAgICAgICAgZm9yKHZhciBpIGluIGdyYXBoLm5vZGVzKSB7Ci0gICAgICAgICAgaWYoZmlsdGVyKGdyYXBoLm5vZGVzW2ldKSkgYWN0aW9uKGdyYXBoLm5vZGVzW2ldKTsKLSAgICAgICAgfSAKLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICBNZXRob2Q6IGVhY2gKLSAgIAotICAgICAgSXRlcmF0ZXMgb3ZlciA8R3JhcGg+IG5vZGVzIHBlcmZvcm1pbmcgYW4gKmFjdGlvbiouIEl0J3MgYW4gYWxpYXMgZm9yIDxHcmFwaC5VdGlsLmVhY2hOb2RlPi4KLSAgICAgIAotICAgICAgQWxzbyBpbXBsZW1lbnRlZCBieToKLSAgICAgIAotICAgICAgPEdyYXBoPi4KLSAgCi0gICAgICBQYXJhbWV0ZXJzOgotICAKLSAgICAgIGdyYXBoIC0gKG9iamVjdCkgQSA8R3JhcGg+IGluc3RhbmNlLgotICAgICAgYWN0aW9uIC0gKGZ1bmN0aW9uKSBBIGNhbGxiYWNrIGZ1bmN0aW9uIGhhdmluZyBhIDxHcmFwaC5Ob2RlPiBhcyBmaXJzdCBmb3JtYWwgcGFyYW1ldGVyLgotICAKLSAgICAgIEV4YW1wbGU6Ci0gICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgJGppdC5HcmFwaC5VdGlsLmVhY2goZ3JhcGgsIGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgIGFsZXJ0KG5vZGUubmFtZSk7Ci0gICAgICAgIH0pOwotICAgICAgICAvL29yLi4uCi0gICAgICAgIGdyYXBoLmVhY2goZnVuY3Rpb24obm9kZSkgewotICAgICAgICAgIGFsZXJ0KG5vZGUubmFtZSk7Ci0gICAgICAgIH0pOwotICAgICAgKGVuZCBjb2RlKQotICAgKi8KLSAgIGVhY2g6IGZ1bmN0aW9uKGdyYXBoLCBhY3Rpb24sIGZsYWdzKSB7Ci0gICAgICB0aGlzLmVhY2hOb2RlKGdyYXBoLCBhY3Rpb24sIGZsYWdzKTsgCi0gICB9LAotCi0gLyoKLSAgICAgICBNZXRob2Q6IGVhY2hBZGphY2VuY3kKLSAgICAKLSAgICAgICBJdGVyYXRlcyBvdmVyIDxHcmFwaC5Ob2RlPiBhZGphY2VuY2llcyBhcHBseWluZyB0aGUgKmFjdGlvbiogZnVuY3Rpb24uCi0gICAgICAgCi0gICAgICAgQWxzbyBpbXBsZW1lbnRlZCBieToKLSAgICAgICAKLSAgICAgICA8R3JhcGguTm9kZT4uCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgbm9kZSAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+LgotICAgICAgIGFjdGlvbiAtIChmdW5jdGlvbikgQSBjYWxsYmFjayBmdW5jdGlvbiBoYXZpbmcgPEdyYXBoLkFkamFjZW5jZT4gYXMgZmlyc3QgZm9ybWFsIHBhcmFtZXRlci4KLQotICAgICAgIEV4YW1wbGU6Ci0gICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgICAkaml0LkdyYXBoLlV0aWwuZWFjaEFkamFjZW5jeShub2RlLCBmdW5jdGlvbihhZGopIHsKLSAgICAgICAgICBhbGVydChhZGoubm9kZVRvLm5hbWUpOwotICAgICAgICAgfSk7Ci0gICAgICAgICAvL29yLi4uCi0gICAgICAgICBub2RlLmVhY2hBZGphY2VuY3koZnVuY3Rpb24oYWRqKSB7Ci0gICAgICAgICAgIGFsZXJ0KGFkai5ub2RlVG8ubmFtZSk7Ci0gICAgICAgICB9KTsKLSAgICAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICBlYWNoQWRqYWNlbmN5OiBmdW5jdGlvbihub2RlLCBhY3Rpb24sIGZsYWdzKSB7Ci0gICAgICAgIHZhciBhZGogPSBub2RlLmFkamFjZW5jaWVzLCBmaWx0ZXIgPSB0aGlzLmZpbHRlcihmbGFncyk7Ci0gICAgICAgIGZvcih2YXIgaWQgaW4gYWRqKSB7Ci0gICAgICAgICAgdmFyIGEgPSBhZGpbaWRdOwotICAgICAgICAgIGlmKGZpbHRlcihhKSkgewotICAgICAgICAgICAgaWYoYS5ub2RlRnJvbSAhPSBub2RlKSB7Ci0gICAgICAgICAgICAgIHZhciB0bXAgPSBhLm5vZGVGcm9tOwotICAgICAgICAgICAgICBhLm5vZGVGcm9tID0gYS5ub2RlVG87Ci0gICAgICAgICAgICAgIGEubm9kZVRvID0gdG1wOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYWN0aW9uKGEsIGlkKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgIC8qCi0gICAgICAgTWV0aG9kOiBjb21wdXRlTGV2ZWxzCi0gICAgCi0gICAgICAgUGVyZm9ybXMgYSBCRlMgdHJhdmVyc2FsIHNldHRpbmcgdGhlIGNvcnJlY3QgZGVwdGggZm9yIGVhY2ggbm9kZS4KLSAgICAgICAgCi0gICAgICAgQWxzbyBpbXBsZW1lbnRlZCBieToKLSAgICAgICAKLSAgICAgICA8R3JhcGg+LgotICAgICAgIAotICAgICAgIE5vdGU6Ci0gICAgICAgCi0gICAgICAgVGhlIGRlcHRoIG9mIGVhY2ggbm9kZSBjYW4gdGhlbiBiZSBhY2Nlc3NlZCBieSAKLSAgICAgICA+bm9kZS5fZGVwdGgKLQotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICBncmFwaCAtIChvYmplY3QpIEEgPEdyYXBoPi4KLSAgICAgICBpZCAtIChzdHJpbmcpIEEgc3RhcnRpbmcgbm9kZSBpZCBmb3IgdGhlIEJGUyB0cmF2ZXJzYWwuCi0gICAgICAgc3RhcnREZXB0aCAtIChvcHRpb25hbHxudW1iZXIpIEEgbWluaW11bSBkZXB0aCB2YWx1ZS4gRGVmYXVsdCdzIDAuCi0KLSAgICAqLwotICAgIGNvbXB1dGVMZXZlbHM6IGZ1bmN0aW9uKGdyYXBoLCBpZCwgc3RhcnREZXB0aCwgZmxhZ3MpIHsKLSAgICAgICAgc3RhcnREZXB0aCA9IHN0YXJ0RGVwdGggfHwgMDsKLSAgICAgICAgdmFyIGZpbHRlciA9IHRoaXMuZmlsdGVyKGZsYWdzKTsKLSAgICAgICAgdGhpcy5lYWNoTm9kZShncmFwaCwgZnVuY3Rpb24oZWxlbSkgewotICAgICAgICAgICAgZWxlbS5fZmxhZyA9IGZhbHNlOwotICAgICAgICAgICAgZWxlbS5fZGVwdGggPSAtMTsKLSAgICAgICAgfSwgZmxhZ3MpOwotICAgICAgICB2YXIgcm9vdCA9IGdyYXBoLmdldE5vZGUoaWQpOwotICAgICAgICByb290Ll9kZXB0aCA9IHN0YXJ0RGVwdGg7Ci0gICAgICAgIHZhciBxdWV1ZSA9IFtyb290XTsKLSAgICAgICAgd2hpbGUocXVldWUubGVuZ3RoICE9IDApIHsKLSAgICAgICAgICAgIHZhciBub2RlID0gcXVldWUucG9wKCk7Ci0gICAgICAgICAgICBub2RlLl9mbGFnID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuZWFjaEFkamFjZW5jeShub2RlLCBmdW5jdGlvbihhZGopIHsKLSAgICAgICAgICAgICAgICB2YXIgbiA9IGFkai5ub2RlVG87Ci0gICAgICAgICAgICAgICAgaWYobi5fZmxhZyA9PSBmYWxzZSAmJiBmaWx0ZXIobikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYobi5fZGVwdGggPCAwKSBuLl9kZXB0aCA9IG5vZGUuX2RlcHRoICsgMSArIHN0YXJ0RGVwdGg7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXVlLnVuc2hpZnQobik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwgZmxhZ3MpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiBlYWNoQkZTCi0gICAgCi0gICAgICAgUGVyZm9ybXMgYSBCRlMgdHJhdmVyc2FsIGFwcGx5aW5nICphY3Rpb24qIHRvIGVhY2ggPEdyYXBoLk5vZGU+LgotICAgICAgIAotICAgICAgIEFsc28gaW1wbGVtZW50ZWQgYnk6Ci0gICAgICAgCi0gICAgICAgPEdyYXBoPi4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICBncmFwaCAtIChvYmplY3QpIEEgPEdyYXBoPi4KLSAgICAgICBpZCAtIChzdHJpbmcpIEEgc3RhcnRpbmcgbm9kZSBpZCBmb3IgdGhlIEJGUyB0cmF2ZXJzYWwuCi0gICAgICAgYWN0aW9uIC0gKGZ1bmN0aW9uKSBBIGNhbGxiYWNrIGZ1bmN0aW9uIGhhdmluZyBhIDxHcmFwaC5Ob2RlPiBhcyBmaXJzdCBmb3JtYWwgcGFyYW1ldGVyLgotCi0gICAgICAgRXhhbXBsZToKLSAgICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgICRqaXQuR3JhcGguVXRpbC5lYWNoQkZTKGdyYXBoLCAnbXlub2RlaWQnLCBmdW5jdGlvbihub2RlKSB7Ci0gICAgICAgICAgYWxlcnQobm9kZS5uYW1lKTsKLSAgICAgICAgIH0pOwotICAgICAgICAgLy9vci4uLgotICAgICAgICAgZ3JhcGguZWFjaEJGUygnbXlub2RlaWQnLCBmdW5jdGlvbihub2RlKSB7Ci0gICAgICAgICAgIGFsZXJ0KG5vZGUubmFtZSk7Ci0gICAgICAgICB9KTsKLSAgICAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICBlYWNoQkZTOiBmdW5jdGlvbihncmFwaCwgaWQsIGFjdGlvbiwgZmxhZ3MpIHsKLSAgICAgICAgdmFyIGZpbHRlciA9IHRoaXMuZmlsdGVyKGZsYWdzKTsKLSAgICAgICAgdGhpcy5jbGVhbihncmFwaCk7Ci0gICAgICAgIHZhciBxdWV1ZSA9IFtncmFwaC5nZXROb2RlKGlkKV07Ci0gICAgICAgIHdoaWxlKHF1ZXVlLmxlbmd0aCAhPSAwKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IHF1ZXVlLnBvcCgpOwotICAgICAgICAgICAgbm9kZS5fZmxhZyA9IHRydWU7Ci0gICAgICAgICAgICBhY3Rpb24obm9kZSwgbm9kZS5fZGVwdGgpOwotICAgICAgICAgICAgdGhpcy5lYWNoQWRqYWNlbmN5KG5vZGUsIGZ1bmN0aW9uKGFkaikgewotICAgICAgICAgICAgICAgIHZhciBuID0gYWRqLm5vZGVUbzsKLSAgICAgICAgICAgICAgICBpZihuLl9mbGFnID09IGZhbHNlICYmIGZpbHRlcihuKSkgewotICAgICAgICAgICAgICAgICAgICBuLl9mbGFnID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgcXVldWUudW5zaGlmdChuKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCBmbGFncyk7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICAgTWV0aG9kOiBlYWNoTGV2ZWwKLSAgICAKLSAgICAgICBJdGVyYXRlcyBvdmVyIGEgbm9kZSdzIHN1YmdyYXBoIGFwcGx5aW5nICphY3Rpb24qIHRvIHRoZSBub2RlcyBvZiByZWxhdGl2ZSBkZXB0aCBiZXR3ZWVuICpsZXZlbEJlZ2luKiBhbmQgKmxldmVsRW5kKi4KLSAgICAgICAKLSAgICAgICBBbHNvIGltcGxlbWVudGVkIGJ5OgotICAgICAgIAotICAgICAgIDxHcmFwaC5Ob2RlPi4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0gICAgICAgCi0gICAgICAgbm9kZSAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+LgotICAgICAgIGxldmVsQmVnaW4gLSAobnVtYmVyKSBBIHJlbGF0aXZlIGxldmVsIHZhbHVlLgotICAgICAgIGxldmVsRW5kIC0gKG51bWJlcikgQSByZWxhdGl2ZSBsZXZlbCB2YWx1ZS4KLSAgICAgICBhY3Rpb24gLSAoZnVuY3Rpb24pIEEgY2FsbGJhY2sgZnVuY3Rpb24gaGF2aW5nIGEgPEdyYXBoLk5vZGU+IGFzIGZpcnN0IGZvcm1hbCBwYXJhbWV0ZXIuCi0KLSAgICAqLwotICAgIGVhY2hMZXZlbDogZnVuY3Rpb24obm9kZSwgbGV2ZWxCZWdpbiwgbGV2ZWxFbmQsIGFjdGlvbiwgZmxhZ3MpIHsKLSAgICAgICAgdmFyIGQgPSBub2RlLl9kZXB0aCwgZmlsdGVyID0gdGhpcy5maWx0ZXIoZmxhZ3MpLCB0aGF0ID0gdGhpczsKLSAgICAgICAgbGV2ZWxFbmQgPSBsZXZlbEVuZCA9PT0gZmFsc2U/IE51bWJlci5NQVhfVkFMVUUgLWQgOiBsZXZlbEVuZDsKLSAgICAgICAgKGZ1bmN0aW9uIGxvb3BMZXZlbChub2RlLCBsZXZlbEJlZ2luLCBsZXZlbEVuZCkgewotICAgICAgICAgICAgdmFyIGQgPSBub2RlLl9kZXB0aDsKLSAgICAgICAgICAgIGlmKGQgPj0gbGV2ZWxCZWdpbiAmJiBkIDw9IGxldmVsRW5kICYmIGZpbHRlcihub2RlKSkgYWN0aW9uKG5vZGUsIGQpOwotICAgICAgICAgICAgaWYoZCA8IGxldmVsRW5kKSB7Ci0gICAgICAgICAgICAgICAgdGhhdC5lYWNoQWRqYWNlbmN5KG5vZGUsIGZ1bmN0aW9uKGFkaikgewotICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGFkai5ub2RlVG87Ci0gICAgICAgICAgICAgICAgICAgIGlmKG4uX2RlcHRoID4gZCkgbG9vcExldmVsKG4sIGxldmVsQmVnaW4sIGxldmVsRW5kKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSkobm9kZSwgbGV2ZWxCZWdpbiArIGQsIGxldmVsRW5kICsgZCk7ICAgICAgCi0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiBlYWNoU3ViZ3JhcGgKLSAgICAKLSAgICAgICBJdGVyYXRlcyBvdmVyIGEgbm9kZSdzIGNoaWxkcmVuIHJlY3Vyc2l2ZWx5LgotICAgICAgIAotICAgICAgIEFsc28gaW1wbGVtZW50ZWQgYnk6Ci0gICAgICAgCi0gICAgICAgPEdyYXBoLk5vZGU+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLSAgICAgICBub2RlIC0gKG9iamVjdCkgQSA8R3JhcGguTm9kZT4uCi0gICAgICAgYWN0aW9uIC0gKGZ1bmN0aW9uKSBBIGNhbGxiYWNrIGZ1bmN0aW9uIGhhdmluZyBhIDxHcmFwaC5Ob2RlPiBhcyBmaXJzdCBmb3JtYWwgcGFyYW1ldGVyLgotCi0gICAgICAgRXhhbXBsZToKLSAgICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgICRqaXQuR3JhcGguVXRpbC5lYWNoU3ViZ3JhcGgobm9kZSwgZnVuY3Rpb24obm9kZSkgewotICAgICAgICAgICBhbGVydChub2RlLm5hbWUpOwotICAgICAgICAgfSk7Ci0gICAgICAgICAvL29yLi4uCi0gICAgICAgICBub2RlLmVhY2hTdWJncmFwaChmdW5jdGlvbihub2RlKSB7Ci0gICAgICAgICAgIGFsZXJ0KG5vZGUubmFtZSk7Ci0gICAgICAgICB9KTsKLSAgICAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICBlYWNoU3ViZ3JhcGg6IGZ1bmN0aW9uKG5vZGUsIGFjdGlvbiwgZmxhZ3MpIHsKLSAgICAgIHRoaXMuZWFjaExldmVsKG5vZGUsIDAsIGZhbHNlLCBhY3Rpb24sIGZsYWdzKTsKLSAgICB9LAotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IGVhY2hTdWJub2RlCi0gICAgCi0gICAgICAgSXRlcmF0ZXMgb3ZlciBhIG5vZGUncyBjaGlsZHJlbiAod2l0aG91dCBkZWVwZXIgcmVjdXJzaW9uKS4KLSAgICAgICAKLSAgICAgICBBbHNvIGltcGxlbWVudGVkIGJ5OgotICAgICAgIAotICAgICAgIDxHcmFwaC5Ob2RlPi4KLSAgICAgICAKLSAgICAgICBQYXJhbWV0ZXJzOgotICAgICAgIG5vZGUgLSAob2JqZWN0KSBBIDxHcmFwaC5Ob2RlPi4KLSAgICAgICBhY3Rpb24gLSAoZnVuY3Rpb24pIEEgY2FsbGJhY2sgZnVuY3Rpb24gaGF2aW5nIGEgPEdyYXBoLk5vZGU+IGFzIGZpcnN0IGZvcm1hbCBwYXJhbWV0ZXIuCi0KLSAgICAgICBFeGFtcGxlOgotICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICAgJGppdC5HcmFwaC5VdGlsLmVhY2hTdWJub2RlKG5vZGUsIGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgICBhbGVydChub2RlLm5hbWUpOwotICAgICAgICAgfSk7Ci0gICAgICAgICAvL29yLi4uCi0gICAgICAgICBub2RlLmVhY2hTdWJub2RlKGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgICAgYWxlcnQobm9kZS5uYW1lKTsKLSAgICAgICAgIH0pOwotICAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGVhY2hTdWJub2RlOiBmdW5jdGlvbihub2RlLCBhY3Rpb24sIGZsYWdzKSB7Ci0gICAgICAgIHRoaXMuZWFjaExldmVsKG5vZGUsIDEsIDEsIGFjdGlvbiwgZmxhZ3MpOwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogYW55U3Vibm9kZQotICAgIAotICAgICAgIFJldHVybnMgKnRydWUqIGlmIGFueSBzdWJub2RlIG1hdGNoZXMgdGhlIGdpdmVuIGNvbmRpdGlvbi4KLSAgICAgICAKLSAgICAgICBBbHNvIGltcGxlbWVudGVkIGJ5OgotICAgICAgIAotICAgICAgIDxHcmFwaC5Ob2RlPi4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0gICAgICAgbm9kZSAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+LgotICAgICAgIGNvbmQgLSAoZnVuY3Rpb24pIEEgY2FsbGJhY2sgZnVuY3Rpb24gcmV0dXJuaW5nIGEgQm9vbGVhbiBpbnN0YW5jZS4gVGhpcyBmdW5jdGlvbiBoYXMgYXMgZmlyc3QgZm9ybWFsIHBhcmFtZXRlciBhIDxHcmFwaC5Ob2RlPi4KLQotICAgICAgIEV4YW1wbGU6Ci0gICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgICAkaml0LkdyYXBoLlV0aWwuYW55U3Vibm9kZShub2RlLCBmdW5jdGlvbihub2RlKSB7IHJldHVybiBub2RlLm5hbWUgPT0gIm15bm9kZW5hbWUiOyB9KTsKLSAgICAgICAgIC8vb3IuLi4KLSAgICAgICAgIG5vZGUuYW55U3Vibm9kZShmdW5jdGlvbihub2RlKSB7IHJldHVybiBub2RlLm5hbWUgPT0gJ215bm9kZW5hbWUnOyB9KTsKLSAgICAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICBhbnlTdWJub2RlOiBmdW5jdGlvbihub2RlLCBjb25kLCBmbGFncykgewotICAgICAgdmFyIGZsYWcgPSBmYWxzZTsKLSAgICAgIGNvbmQgPSBjb25kIHx8ICQubGFtYmRhKHRydWUpOwotICAgICAgdmFyIGMgPSAkLnR5cGUoY29uZCkgPT0gJ3N0cmluZyc/IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG5bY29uZF07IH0gOiBjb25kOwotICAgICAgdGhpcy5lYWNoU3Vibm9kZShub2RlLCBmdW5jdGlvbihlbGVtKSB7Ci0gICAgICAgIGlmKGMoZWxlbSkpIGZsYWcgPSB0cnVlOwotICAgICAgfSwgZmxhZ3MpOwotICAgICAgcmV0dXJuIGZsYWc7Ci0gICAgfSwKLSAgCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IGdldFN1Ym5vZGVzCi0gICAgCi0gICAgICAgQ29sbGVjdHMgYWxsIHN1Ym5vZGVzIGZvciBhIHNwZWNpZmllZCBub2RlLiAKLSAgICAgICBUaGUgKmxldmVsKiBwYXJhbWV0ZXIgZmlsdGVycyBub2RlcyBoYXZpbmcgcmVsYXRpdmUgZGVwdGggb2YgKmxldmVsKiBmcm9tIHRoZSByb290IG5vZGUuIAotICAgICAgIAotICAgICAgIEFsc28gaW1wbGVtZW50ZWQgYnk6Ci0gICAgICAgCi0gICAgICAgPEdyYXBoLk5vZGU+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLSAgICAgICBub2RlIC0gKG9iamVjdCkgQSA8R3JhcGguTm9kZT4uCi0gICAgICAgbGV2ZWwgLSAob3B0aW9uYWx8bnVtYmVyKSBEZWZhdWx0J3MgKjAqLiBBIHN0YXJ0aW5nIHJlbGF0aXZlIGRlcHRoIGZvciBjb2xsZWN0aW5nIG5vZGVzLgotCi0gICAgICAgUmV0dXJuczoKLSAgICAgICBBbiBhcnJheSBvZiBub2Rlcy4KLQotICAgICovCi0gICAgZ2V0U3Vibm9kZXM6IGZ1bmN0aW9uKG5vZGUsIGxldmVsLCBmbGFncykgewotICAgICAgICB2YXIgYW5zID0gW10sIHRoYXQgPSB0aGlzOwotICAgICAgICBsZXZlbCA9IGxldmVsIHx8IDA7Ci0gICAgICAgIHZhciBsZXZlbFN0YXJ0LCBsZXZlbEVuZDsKLSAgICAgICAgaWYoJC50eXBlKGxldmVsKSA9PSAnYXJyYXknKSB7Ci0gICAgICAgICAgICBsZXZlbFN0YXJ0ID0gbGV2ZWxbMF07Ci0gICAgICAgICAgICBsZXZlbEVuZCA9IGxldmVsWzFdOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbGV2ZWxTdGFydCA9IGxldmVsOwotICAgICAgICAgICAgbGV2ZWxFbmQgPSBOdW1iZXIuTUFYX1ZBTFVFIC0gbm9kZS5fZGVwdGg7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5lYWNoTGV2ZWwobm9kZSwgbGV2ZWxTdGFydCwgbGV2ZWxFbmQsIGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgIGFucy5wdXNoKG4pOwotICAgICAgICB9LCBmbGFncyk7Ci0gICAgICAgIHJldHVybiBhbnM7Ci0gICAgfSwKLSAgCi0gIAotICAgIC8qCi0gICAgICAgTWV0aG9kOiBnZXRQYXJlbnRzCi0gICAgCi0gICAgICAgUmV0dXJucyBhbiBBcnJheSBvZiA8R3JhcGguTm9kZXM+IHdoaWNoIGFyZSBwYXJlbnRzIG9mIHRoZSBnaXZlbiBub2RlLgotICAgICAgIAotICAgICAgIEFsc28gaW1wbGVtZW50ZWQgYnk6Ci0gICAgICAgCi0gICAgICAgPEdyYXBoLk5vZGU+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLSAgICAgICBub2RlIC0gKG9iamVjdCkgQSA8R3JhcGguTm9kZT4uCi0KLSAgICAgICBSZXR1cm5zOgotICAgICAgIEFuIEFycmF5IG9mIDxHcmFwaC5Ob2Rlcz4uCi0KLSAgICAgICBFeGFtcGxlOgotICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICAgdmFyIHBhcnMgPSAkaml0LkdyYXBoLlV0aWwuZ2V0UGFyZW50cyhub2RlKTsKLSAgICAgICAgIC8vb3IuLi4KLSAgICAgICAgIHZhciBwYXJzID0gbm9kZS5nZXRQYXJlbnRzKCk7Ci0gICAgICAgICAKLSAgICAgICAgIGlmKHBhcnMubGVuZ3RoID4gMCkgewotICAgICAgICAgICAvL2RvIHN0dWZmIHdpdGggcGFyZW50cwotICAgICAgICAgfQotICAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGdldFBhcmVudHM6IGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgdmFyIGFucyA9IFtdOwotICAgICAgICB0aGlzLmVhY2hBZGphY2VuY3kobm9kZSwgZnVuY3Rpb24oYWRqKSB7Ci0gICAgICAgICAgICB2YXIgbiA9IGFkai5ub2RlVG87Ci0gICAgICAgICAgICBpZihuLl9kZXB0aCA8IG5vZGUuX2RlcHRoKSBhbnMucHVzaChuKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBhbnM7Ci0gICAgfSwKLSAgICAKLSAgICAvKgotICAgIE1ldGhvZDogaXNEZXNjZW5kYW50T2YKLSAKLSAgICBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHNvbWUgbm9kZSBpcyBkZXNjZW5kYW50IG9mIHRoZSBub2RlIHdpdGggdGhlIGdpdmVuIGlkLiAKLQotICAgIEFsc28gaW1wbGVtZW50ZWQgYnk6Ci0gICAgCi0gICAgPEdyYXBoLk5vZGU+LgotICAgIAotICAgIAotICAgIFBhcmFtZXRlcnM6Ci0gICAgbm9kZSAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+LgotICAgIGlkIC0gKHN0cmluZykgQSA8R3JhcGguTm9kZT4gaWQuCi0KLSAgICBFeGFtcGxlOgotICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgJGppdC5HcmFwaC5VdGlsLmlzRGVzY2VuZGFudE9mKG5vZGUsICJub2RlaWQiKTsgLy90cnVlfGZhbHNlCi0gICAgICAvL29yLi4uCi0gICAgICBub2RlLmlzRGVzY2VuZGFudE9mKCdub2RlaWQnKTsvL3RydWV8ZmFsc2UKLSAgICAoZW5kIGNvZGUpCi0gKi8KLSBpc0Rlc2NlbmRhbnRPZjogZnVuY3Rpb24obm9kZSwgaWQpIHsKLSAgICBpZihub2RlLmlkID09IGlkKSByZXR1cm4gdHJ1ZTsKLSAgICB2YXIgcGFycyA9IHRoaXMuZ2V0UGFyZW50cyhub2RlKSwgYW5zID0gZmFsc2U7Ci0gICAgZm9yICggdmFyIGkgPSAwOyAhYW5zICYmIGkgPCBwYXJzLmxlbmd0aDsgaSsrKSB7Ci0gICAgYW5zID0gYW5zIHx8IHRoaXMuaXNEZXNjZW5kYW50T2YocGFyc1tpXSwgaWQpOwotICB9Ci0gICAgcmV0dXJuIGFuczsKLSB9LAotCi0gLyoKLSAgICAgTWV0aG9kOiBjbGVhbgotICAKLSAgICAgQ2xlYW5zIGZsYWdzIGZyb20gbm9kZXMuCi0KLSAgICAgQWxzbyBpbXBsZW1lbnRlZCBieToKLSAgICAgCi0gICAgIDxHcmFwaD4uCi0gICAgIAotICAgICBQYXJhbWV0ZXJzOgotICAgICBncmFwaCAtIEEgPEdyYXBoPiBpbnN0YW5jZS4KLSAgKi8KLSAgY2xlYW46IGZ1bmN0aW9uKGdyYXBoKSB7IHRoaXMuZWFjaE5vZGUoZ3JhcGgsIGZ1bmN0aW9uKGVsZW0pIHsgZWxlbS5fZmxhZyA9IGZhbHNlOyB9KTsgfSwKLSAgCi0gIC8qIAotICAgIE1ldGhvZDogZ2V0Q2xvc2VzdE5vZGVUb09yaWdpbiAKLSAgCi0gICAgUmV0dXJucyB0aGUgY2xvc2VzdCBub2RlIHRvIHRoZSBjZW50ZXIgb2YgY2FudmFzLgotICAKLSAgICBBbHNvIGltcGxlbWVudGVkIGJ5OgotICAgIAotICAgIDxHcmFwaD4uCi0gICAgCi0gICAgUGFyYW1ldGVyczoKLSAgIAotICAgICBncmFwaCAtIChvYmplY3QpIEEgPEdyYXBoPiBpbnN0YW5jZS4KLSAgICAgcHJvcCAtIChvcHRpb25hbHxzdHJpbmcpIERlZmF1bHQncyAnY3VycmVudCcuIEEgPEdyYXBoLk5vZGU+IHBvc2l0aW9uIHByb3BlcnR5LiBQb3NzaWJsZSBwcm9wZXJ0aWVzIGFyZSAnc3RhcnQnLCAnY3VycmVudCcgb3IgJ2VuZCcuCi0gIAotICAqLwotICBnZXRDbG9zZXN0Tm9kZVRvT3JpZ2luOiBmdW5jdGlvbihncmFwaCwgcHJvcCwgZmxhZ3MpIHsKLSAgIHJldHVybiB0aGlzLmdldENsb3Nlc3ROb2RlVG9Qb3MoZ3JhcGgsIFBvbGFyLktFUiwgcHJvcCwgZmxhZ3MpOwotICB9LAotICAKLSAgLyogCi0gICAgTWV0aG9kOiBnZXRDbG9zZXN0Tm9kZVRvUG9zCi0gIAotICAgIFJldHVybnMgdGhlIGNsb3Nlc3Qgbm9kZSB0byB0aGUgZ2l2ZW4gcG9zaXRpb24uCi0gIAotICAgIEFsc28gaW1wbGVtZW50ZWQgYnk6Ci0gICAgCi0gICAgPEdyYXBoPi4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgCi0gICAgIGdyYXBoIC0gKG9iamVjdCkgQSA8R3JhcGg+IGluc3RhbmNlLgotICAgICBwb3MgLSAob2JqZWN0KSBBIDxDb21wbGV4PiBvciA8UG9sYXI+IGluc3RhbmNlLgotICAgICBwcm9wIC0gKG9wdGlvbmFsfHN0cmluZykgRGVmYXVsdCdzICpjdXJyZW50Ki4gQSA8R3JhcGguTm9kZT4gcG9zaXRpb24gcHJvcGVydHkuIFBvc3NpYmxlIHByb3BlcnRpZXMgYXJlICdzdGFydCcsICdjdXJyZW50JyBvciAnZW5kJy4KLSAgCi0gICovCi0gIGdldENsb3Nlc3ROb2RlVG9Qb3M6IGZ1bmN0aW9uKGdyYXBoLCBwb3MsIHByb3AsIGZsYWdzKSB7Ci0gICB2YXIgbm9kZSA9IG51bGw7Ci0gICBwcm9wID0gcHJvcCB8fCAnY3VycmVudCc7Ci0gICBwb3MgPSBwb3MgJiYgcG9zLmdldGModHJ1ZSkgfHwgQ29tcGxleC5LRVI7Ci0gICB2YXIgZGlzdGFuY2UgPSBmdW5jdGlvbihhLCBiKSB7Ci0gICAgIHZhciBkMSA9IGEueCAtIGIueCwgZDIgPSBhLnkgLSBiLnk7Ci0gICAgIHJldHVybiBkMSAqIGQxICsgZDIgKiBkMjsKLSAgIH07Ci0gICB0aGlzLmVhY2hOb2RlKGdyYXBoLCBmdW5jdGlvbihlbGVtKSB7Ci0gICAgIG5vZGUgPSAobm9kZSA9PSBudWxsIHx8IGRpc3RhbmNlKGVsZW0uZ2V0UG9zKHByb3ApLmdldGModHJ1ZSksIHBvcykgPCBkaXN0YW5jZSgKLSAgICAgICAgIG5vZGUuZ2V0UG9zKHByb3ApLmdldGModHJ1ZSksIHBvcykpID8gZWxlbSA6IG5vZGU7Ci0gICB9LCBmbGFncyk7Ci0gICByZXR1cm4gbm9kZTsKLSAgfSAKLX07Ci0KLS8vQXBwZW5kIGdyYXBoIG1ldGhvZHMgdG8gPEdyYXBoPgotJC5lYWNoKFsnZ2V0JywgJ2dldE5vZGUnLCAnZWFjaCcsICdlYWNoTm9kZScsICdjb21wdXRlTGV2ZWxzJywgJ2VhY2hCRlMnLCAnY2xlYW4nLCAnZ2V0Q2xvc2VzdE5vZGVUb1BvcycsICdnZXRDbG9zZXN0Tm9kZVRvT3JpZ2luJ10sIGZ1bmN0aW9uKG0pIHsKLSAgR3JhcGgucHJvdG90eXBlW21dID0gZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIEdyYXBoLlV0aWxbbV0uYXBwbHkoR3JhcGguVXRpbCwgW3RoaXNdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7Ci0gIH07Ci19KTsKLQotLy9BcHBlbmQgbm9kZSBtZXRob2RzIHRvIDxHcmFwaC5Ob2RlPgotJC5lYWNoKFsnZWFjaEFkamFjZW5jeScsICdlYWNoTGV2ZWwnLCAnZWFjaFN1YmdyYXBoJywgJ2VhY2hTdWJub2RlJywgJ2FueVN1Ym5vZGUnLCAnZ2V0U3Vibm9kZXMnLCAnZ2V0UGFyZW50cycsICdpc0Rlc2NlbmRhbnRPZiddLCBmdW5jdGlvbihtKSB7Ci0gIEdyYXBoLk5vZGUucHJvdG90eXBlW21dID0gZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIEdyYXBoLlV0aWxbbV0uYXBwbHkoR3JhcGguVXRpbCwgW3RoaXNdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7Ci0gIH07Ci19KTsKLQotLyoKLSAqIEZpbGU6IEdyYXBoLk9wLmpzCi0gKgotKi8KLQotLyoKLSAgIE9iamVjdDogR3JhcGguT3AKLQotICAgUGVyZm9ybSA8R3JhcGg+IG9wZXJhdGlvbnMgbGlrZSBhZGRpbmcvcmVtb3ZpbmcgPEdyYXBoLk5vZGVzPiBvciA8R3JhcGguQWRqYWNlbmNlcz4sIAotICAgbW9ycGhpbmcgYSA8R3JhcGg+IGludG8gYW5vdGhlciA8R3JhcGg+LCBjb250cmFjdGluZyBvciBleHBhbmRpbmcgc3VidHJlZXMsIGV0Yy4KLQotKi8KLUdyYXBoLk9wID0gewotCi0gICAgb3B0aW9uczogewotICAgICAgdHlwZTogJ25vdGhpbmcnLAotICAgICAgZHVyYXRpb246IDIwMDAsCi0gICAgICBoaWRlTGFiZWxzOiB0cnVlLAotICAgICAgZnBzOjMwCi0gICAgfSwKLSAgICAKLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopIHsKLSAgICAgIHRoaXMudml6ID0gdml6OwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogcmVtb3ZlTm9kZQotICAgIAotICAgICAgIFJlbW92ZXMgb25lIG9yIG1vcmUgPEdyYXBoLk5vZGVzPiBmcm9tIHRoZSB2aXN1YWxpemF0aW9uLiAKLSAgICAgICBJdCBjYW4gYWxzbyBwZXJmb3JtIHNldmVyYWwgYW5pbWF0aW9ucyBsaWtlIGZhZGluZyBzZXF1ZW50aWFsbHksIGZhZGluZyBjb25jdXJyZW50bHksIGl0ZXJhdGluZyBvciByZXBsb3R0aW5nLgotCi0gICAgICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICAgICAgbm9kZSAtIChzdHJpbmd8YXJyYXkpIFRoZSBub2RlJ3MgaWQuIENhbiBhbHNvIGJlIGFuIGFycmF5IGhhdmluZyBtYW55IGlkcy4KLSAgICAgICAgb3B0IC0gKG9iamVjdCkgQW5pbWF0aW9uIG9wdGlvbnMuIEl0J3MgYW4gb2JqZWN0IHdpdGggb3B0aW9uYWwgcHJvcGVydGllcyBkZXNjcmliZWQgYmVsb3cKLSAgICAgICAgdHlwZSAtIChzdHJpbmcpIERlZmF1bHQncyAqbm90aGluZyouIFR5cGUgb2YgdGhlIGFuaW1hdGlvbi4gQ2FuIGJlICJub3RoaW5nIiwgInJlcGxvdCIsICJmYWRlOnNlcSIsICAiZmFkZTpjb24iIG9yICJpdGVyIi4KLSAgICAgICAgZHVyYXRpb24gLSBEZXNjcmliZWQgaW4gPE9wdGlvbnMuRng+LgotICAgICAgICBmcHMgLSBEZXNjcmliZWQgaW4gPE9wdGlvbnMuRng+LgotICAgICAgICB0cmFuc2l0aW9uIC0gRGVzY3JpYmVkIGluIDxPcHRpb25zLkZ4Pi4KLSAgICAgICAgaGlkZUxhYmVscyAtIChib29sZWFuKSBEZWZhdWx0J3MgKnRydWUqLiBIaWRlIGxhYmVscyBkdXJpbmcgdGhlIGFuaW1hdGlvbi4KLSAgIAotICAgICAgRXhhbXBsZToKLSAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICB2YXIgdml6ID0gbmV3ICRqaXQuVml6KG9wdGlvbnMpOwotICAgICAgICB2aXoub3AucmVtb3ZlTm9kZSgnbm9kZUlkJywgewotICAgICAgICAgIHR5cGU6ICdmYWRlOnNlcScsCi0gICAgICAgICAgZHVyYXRpb246IDEwMDAsCi0gICAgICAgICAgaGlkZUxhYmVsczogZmFsc2UsCi0gICAgICAgICAgdHJhbnNpdGlvbjogJGppdC5UcmFucy5RdWFydC5lYXNlT3V0Ci0gICAgICAgIH0pOwotICAgICAgICAvL29yIGFsc28KLSAgICAgICAgdml6Lm9wLnJlbW92ZU5vZGUoWydzb21lSWQnLCAnb3RoZXJJZCddLCB7Ci0gICAgICAgICAgdHlwZTogJ2ZhZGU6Y29uJywKLSAgICAgICAgICBkdXJhdGlvbjogMTUwMAotICAgICAgICB9KTsKLSAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAKLSAgICByZW1vdmVOb2RlOiBmdW5jdGlvbihub2RlLCBvcHQpIHsKLSAgICAgICAgdmFyIHZpeiA9IHRoaXMudml6OwotICAgICAgICB2YXIgb3B0aW9ucyA9ICQubWVyZ2UodGhpcy5vcHRpb25zLCB2aXouY29udHJvbGxlciwgb3B0KTsKLSAgICAgICAgdmFyIG4gPSAkLnNwbGF0KG5vZGUpOwotICAgICAgICB2YXIgaSwgdGhhdCwgbm9kZU9iajsKLSAgICAgICAgc3dpdGNoKG9wdGlvbnMudHlwZSkgewotICAgICAgICAgICAgY2FzZSAnbm90aGluZyc6Ci0gICAgICAgICAgICAgICAgZm9yKGk9MDsgaTxuLmxlbmd0aDsgaSsrKSB2aXouZ3JhcGgucmVtb3ZlTm9kZShuW2ldKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSAncmVwbG90JzoKLSAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZU5vZGUobiwgeyB0eXBlOiAnbm90aGluZycgfSk7Ci0gICAgICAgICAgICAgICAgdml6LmxhYmVscy5jbGVhckxhYmVscygpOwotICAgICAgICAgICAgICAgIHZpei5yZWZyZXNoKHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlICdmYWRlOnNlcSc6IGNhc2UgJ2ZhZGUnOgotICAgICAgICAgICAgICAgIHRoYXQgPSB0aGlzOwotICAgICAgICAgICAgICAgIC8vc2V0IGFscGhhIHRvIDAgZm9yIG5vZGVzIHRvIHJlbW92ZS4KLSAgICAgICAgICAgICAgICBmb3IoaT0wOyBpPG4ubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZU9iaiA9IHZpei5ncmFwaC5nZXROb2RlKG5baV0pOwotICAgICAgICAgICAgICAgICAgICBub2RlT2JqLnNldERhdGEoJ2FscGhhJywgMCwgJ2VuZCcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2aXouZnguYW5pbWF0ZSgkLm1lcmdlKG9wdGlvbnMsIHsKLSAgICAgICAgICAgICAgICAgICAgbW9kZXM6IFsnbm9kZS1wcm9wZXJ0eTphbHBoYSddLAotICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQucmVtb3ZlTm9kZShuLCB7IHR5cGU6ICdub3RoaW5nJyB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpei5sYWJlbHMuY2xlYXJMYWJlbHMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpei5yZXBvc2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2aXouZnguYW5pbWF0ZSgkLm1lcmdlKG9wdGlvbnMsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlczogWydsaW5lYXInXQotICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlICdmYWRlOmNvbic6Ci0gICAgICAgICAgICAgICAgdGhhdCA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgLy9zZXQgYWxwaGEgdG8gMCBmb3Igbm9kZXMgdG8gcmVtb3ZlLiBUYWcgdGhlbSBmb3IgYmVpbmcgaWdub3JlZCBvbiBjb21wdXRpbmcgcG9zaXRpb25zLgotICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8bi5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBub2RlT2JqID0gdml6LmdyYXBoLmdldE5vZGUobltpXSk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVPYmouc2V0RGF0YSgnYWxwaGEnLCAwLCAnZW5kJyk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVPYmouaWdub3JlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdml6LnJlcG9zaXRpb24oKTsKLSAgICAgICAgICAgICAgICB2aXouZnguYW5pbWF0ZSgkLm1lcmdlKG9wdGlvbnMsIHsKLSAgICAgICAgICAgICAgICAgICAgbW9kZXM6IFsnbm9kZS1wcm9wZXJ0eTphbHBoYScsICdsaW5lYXInXSwKLSAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnJlbW92ZU5vZGUobiwgeyB0eXBlOiAnbm90aGluZycgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uQ29tcGxldGUgJiYgb3B0aW9ucy5vbkNvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgJ2l0ZXInOgotICAgICAgICAgICAgICAgIHRoYXQgPSB0aGlzOwotICAgICAgICAgICAgICAgIHZpei5meC5zZXF1ZW5jZSh7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogZnVuY3Rpb24oKSB7IHJldHVybiBuLmxlbmd0aCAhPSAwOyB9LAotICAgICAgICAgICAgICAgICAgICBzdGVwOiBmdW5jdGlvbigpIHsgdGhhdC5yZW1vdmVOb2RlKG4uc2hpZnQoKSwgeyB0eXBlOiAnbm90aGluZycgfSk7ICB2aXoubGFiZWxzLmNsZWFyTGFiZWxzKCk7IH0sCi0gICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgeyBvcHRpb25zLm9uQ29tcGxldGUgJiYgb3B0aW9ucy5vbkNvbXBsZXRlKCk7IH0sCi0gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBNYXRoLmNlaWwob3B0aW9ucy5kdXJhdGlvbiAvIG4ubGVuZ3RoKQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDogdGhpcy5kb0Vycm9yKCk7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICAgTWV0aG9kOiByZW1vdmVFZGdlCi0gICAgCi0gICAgICAgUmVtb3ZlcyBvbmUgb3IgbW9yZSA8R3JhcGguQWRqYWNlbmNlcz4gZnJvbSB0aGUgdmlzdWFsaXphdGlvbi4gCi0gICAgICAgSXQgY2FuIGFsc28gcGVyZm9ybSBzZXZlcmFsIGFuaW1hdGlvbnMgbGlrZSBmYWRpbmcgc2VxdWVudGlhbGx5LCBmYWRpbmcgY29uY3VycmVudGx5LCBpdGVyYXRpbmcgb3IgcmVwbG90dGluZy4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgICAgdmVydGV4IC0gKGFycmF5KSBBbiBhcnJheSBoYXZpbmcgdHdvIHN0cmluZ3Mgd2hpY2ggYXJlIHRoZSBpZHMgb2YgdGhlIG5vZGVzIGNvbm5lY3RlZCBieSB0aGlzIGVkZ2UgKGkuZSBbJ2lkMScsICdpZDInXSkuIENhbiBhbHNvIGJlIGEgdHdvIGRpbWVuc2lvbmFsIGFycmF5IGhvbGRpbmcgbWFueSBlZGdlcyAoaS5lIFtbJ2lkMScsICdpZDInXSwgWydpZDMnLCAnaWQ0J10sIC4uLl0pLgotICAgICAgIG9wdCAtIChvYmplY3QpIEFuaW1hdGlvbiBvcHRpb25zLiBJdCdzIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHByb3BlcnRpZXMgZGVzY3JpYmVkIGJlbG93Ci0gICAgICAgdHlwZSAtIChzdHJpbmcpIERlZmF1bHQncyAqbm90aGluZyouIFR5cGUgb2YgdGhlIGFuaW1hdGlvbi4gQ2FuIGJlICJub3RoaW5nIiwgInJlcGxvdCIsICJmYWRlOnNlcSIsICAiZmFkZTpjb24iIG9yICJpdGVyIi4KLSAgICAgICBkdXJhdGlvbiAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5GeD4uCi0gICAgICAgZnBzIC0gRGVzY3JpYmVkIGluIDxPcHRpb25zLkZ4Pi4KLSAgICAgICB0cmFuc2l0aW9uIC0gRGVzY3JpYmVkIGluIDxPcHRpb25zLkZ4Pi4KLSAgICAgICBoaWRlTGFiZWxzIC0gKGJvb2xlYW4pIERlZmF1bHQncyAqdHJ1ZSouIEhpZGUgbGFiZWxzIGR1cmluZyB0aGUgYW5pbWF0aW9uLgotICAgCi0gICAgICBFeGFtcGxlOgotICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgIHZhciB2aXogPSBuZXcgJGppdC5WaXoob3B0aW9ucyk7Ci0gICAgICAgIHZpei5vcC5yZW1vdmVFZGdlKFsnbm9kZUlkJywgJ290aGVySWQnXSwgewotICAgICAgICAgIHR5cGU6ICdmYWRlOnNlcScsCi0gICAgICAgICAgZHVyYXRpb246IDEwMDAsCi0gICAgICAgICAgaGlkZUxhYmVsczogZmFsc2UsCi0gICAgICAgICAgdHJhbnNpdGlvbjogJGppdC5UcmFucy5RdWFydC5lYXNlT3V0Ci0gICAgICAgIH0pOwotICAgICAgICAvL29yIGFsc28KLSAgICAgICAgdml6Lm9wLnJlbW92ZUVkZ2UoW1snc29tZUlkJywgJ290aGVySWQnXSwgWydpZDMnLCAnaWQ0J11dLCB7Ci0gICAgICAgICAgdHlwZTogJ2ZhZGU6Y29uJywKLSAgICAgICAgICBkdXJhdGlvbjogMTUwMAotICAgICAgICB9KTsKLSAgICAgIChlbmQgY29kZSkKLSAgICAKLSAgICAqLwotICAgIHJlbW92ZUVkZ2U6IGZ1bmN0aW9uKHZlcnRleCwgb3B0KSB7Ci0gICAgICAgIHZhciB2aXogPSB0aGlzLnZpejsKLSAgICAgICAgdmFyIG9wdGlvbnMgPSAkLm1lcmdlKHRoaXMub3B0aW9ucywgdml6LmNvbnRyb2xsZXIsIG9wdCk7Ci0gICAgICAgIHZhciB2ID0gKCQudHlwZSh2ZXJ0ZXhbMF0pID09ICdzdHJpbmcnKT8gW3ZlcnRleF0gOiB2ZXJ0ZXg7Ci0gICAgICAgIHZhciBpLCB0aGF0LCBhZGo7Ci0gICAgICAgIHN3aXRjaChvcHRpb25zLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgJ25vdGhpbmcnOgotICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8di5sZW5ndGg7IGkrKykgICB2aXouZ3JhcGgucmVtb3ZlQWRqYWNlbmNlKHZbaV1bMF0sIHZbaV1bMV0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlICdyZXBsb3QnOgotICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRWRnZSh2LCB7IHR5cGU6ICdub3RoaW5nJyB9KTsKLSAgICAgICAgICAgICAgICB2aXoucmVmcmVzaCh0cnVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSAnZmFkZTpzZXEnOiBjYXNlICdmYWRlJzoKLSAgICAgICAgICAgICAgICB0aGF0ID0gdGhpczsKLSAgICAgICAgICAgICAgICAvL3NldCBhbHBoYSB0byAwIGZvciBlZGdlcyB0byByZW1vdmUuCi0gICAgICAgICAgICAgICAgZm9yKGk9MDsgaTx2Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkaiA9IHZpei5ncmFwaC5nZXRBZGphY2VuY2UodltpXVswXSwgdltpXVsxXSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmKGFkaikgewotICAgICAgICAgICAgICAgICAgICAgICAgYWRqLnNldERhdGEoJ2FscGhhJywgMCwnZW5kJyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdml6LmZ4LmFuaW1hdGUoJC5tZXJnZShvcHRpb25zLCB7Ci0gICAgICAgICAgICAgICAgICAgIG1vZGVzOiBbJ2VkZ2UtcHJvcGVydHk6YWxwaGEnXSwKLSAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnJlbW92ZUVkZ2UodiwgeyB0eXBlOiAnbm90aGluZycgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2aXoucmVwb3NpdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgdml6LmZ4LmFuaW1hdGUoJC5tZXJnZShvcHRpb25zLCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXM6IFsnbGluZWFyJ10KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSAnZmFkZTpjb24nOgotICAgICAgICAgICAgICAgIHRoYXQgPSB0aGlzOwotICAgICAgICAgICAgICAgIC8vc2V0IGFscGhhIHRvIDAgZm9yIG5vZGVzIHRvIHJlbW92ZS4gVGFnIHRoZW0gZm9yIGJlaW5nIGlnbm9yZWQgd2hlbiBjb21wdXRpbmcgcG9zaXRpb25zLgotICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8di5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBhZGogPSB2aXouZ3JhcGguZ2V0QWRqYWNlbmNlKHZbaV1bMF0sIHZbaV1bMV0pOwotICAgICAgICAgICAgICAgICAgICBpZihhZGopIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkai5zZXREYXRhKCdhbHBoYScsMCAsJ2VuZCcpOwotICAgICAgICAgICAgICAgICAgICAgICAgYWRqLmlnbm9yZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdml6LnJlcG9zaXRpb24oKTsKLSAgICAgICAgICAgICAgICB2aXouZnguYW5pbWF0ZSgkLm1lcmdlKG9wdGlvbnMsIHsKLSAgICAgICAgICAgICAgICAgICAgbW9kZXM6IFsnZWRnZS1wcm9wZXJ0eTphbHBoYScsICdsaW5lYXInXSwKLSAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnJlbW92ZUVkZ2UodiwgeyB0eXBlOiAnbm90aGluZycgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uQ29tcGxldGUgJiYgb3B0aW9ucy5vbkNvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgJ2l0ZXInOgotICAgICAgICAgICAgICAgIHRoYXQgPSB0aGlzOwotICAgICAgICAgICAgICAgIHZpei5meC5zZXF1ZW5jZSh7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogZnVuY3Rpb24oKSB7IHJldHVybiB2Lmxlbmd0aCAhPSAwOyB9LAotICAgICAgICAgICAgICAgICAgICBzdGVwOiBmdW5jdGlvbigpIHsgdGhhdC5yZW1vdmVFZGdlKHYuc2hpZnQoKSwgeyB0eXBlOiAnbm90aGluZycgfSk7IHZpei5sYWJlbHMuY2xlYXJMYWJlbHMoKTsgfSwKLSAgICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7IG9wdGlvbnMub25Db21wbGV0ZSgpOyB9LAotICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogTWF0aC5jZWlsKG9wdGlvbnMuZHVyYXRpb24gLyB2Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRlZmF1bHQ6IHRoaXMuZG9FcnJvcigpOwotICAgICAgICB9Ci0gICAgfSwKLSAgICAKLSAgICAvKgotICAgICAgIE1ldGhvZDogc3VtCi0gICAgCi0gICAgICAgQWRkcyBhIG5ldyBncmFwaCB0byB0aGUgdmlzdWFsaXphdGlvbi4gCi0gICAgICAgVGhlIEpTT04gZ3JhcGggKG9yIHRyZWUpIG11c3QgYXQgbGVhc3QgaGF2ZSBhIGNvbW1vbiBub2RlIHdpdGggdGhlIGN1cnJlbnQgZ3JhcGggcGxvdHRlZCBieSB0aGUgdmlzdWFsaXphdGlvbi4gCi0gICAgICAgVGhlIHJlc3VsdGluZyBncmFwaCBjYW4gYmUgZGVmaW5lZCBhcyBmb2xsb3dzIDxodHRwOi8vbWF0aHdvcmxkLndvbGZyYW0uY29tL0dyYXBoU3VtLmh0bWw+Ci0KLSAgICAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgICAgIGpzb24gLSAob2JqZWN0KSBBIGpzb24gdHJlZSBvciBncmFwaCBzdHJ1Y3R1cmUuIFNlZSBhbHNvIDxMb2FkZXIubG9hZEpTT04+LgotICAgICAgIG9wdCAtIChvYmplY3QpIEFuaW1hdGlvbiBvcHRpb25zLiBJdCdzIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHByb3BlcnRpZXMgZGVzY3JpYmVkIGJlbG93Ci0gICAgICAgdHlwZSAtIChzdHJpbmcpIERlZmF1bHQncyAqbm90aGluZyouIFR5cGUgb2YgdGhlIGFuaW1hdGlvbi4gQ2FuIGJlICJub3RoaW5nIiwgInJlcGxvdCIsICJmYWRlOnNlcSIsICAiZmFkZTpjb24iLgotICAgICAgIGR1cmF0aW9uIC0gRGVzY3JpYmVkIGluIDxPcHRpb25zLkZ4Pi4KLSAgICAgICBmcHMgLSBEZXNjcmliZWQgaW4gPE9wdGlvbnMuRng+LgotICAgICAgIHRyYW5zaXRpb24gLSBEZXNjcmliZWQgaW4gPE9wdGlvbnMuRng+LgotICAgICAgIGhpZGVMYWJlbHMgLSAoYm9vbGVhbikgRGVmYXVsdCdzICp0cnVlKi4gSGlkZSBsYWJlbHMgZHVyaW5nIHRoZSBhbmltYXRpb24uCi0gICAKLSAgICAgIEV4YW1wbGU6Ci0gICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgLy8uLi5qc29uIGNvbnRhaW5zIGEgdHJlZSBvciBncmFwaCBzdHJ1Y3R1cmUuLi4KLQotICAgICAgICB2YXIgdml6ID0gbmV3ICRqaXQuVml6KG9wdGlvbnMpOwotICAgICAgICB2aXoub3Auc3VtKGpzb24sIHsKLSAgICAgICAgICB0eXBlOiAnZmFkZTpzZXEnLAotICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLAotICAgICAgICAgIGhpZGVMYWJlbHM6IGZhbHNlLAotICAgICAgICAgIHRyYW5zaXRpb246ICRqaXQuVHJhbnMuUXVhcnQuZWFzZU91dAotICAgICAgICB9KTsKLSAgICAgICAgLy9vciBhbHNvCi0gICAgICAgIHZpei5vcC5zdW0oanNvbiwgewotICAgICAgICAgIHR5cGU6ICdmYWRlOmNvbicsCi0gICAgICAgICAgZHVyYXRpb246IDE1MDAKLSAgICAgICAgfSk7Ci0gICAgICAoZW5kIGNvZGUpCi0gICAgCi0gICAgKi8KLSAgICBzdW06IGZ1bmN0aW9uKGpzb24sIG9wdCkgewotICAgICAgICB2YXIgdml6ID0gdGhpcy52aXo7Ci0gICAgICAgIHZhciBvcHRpb25zID0gJC5tZXJnZSh0aGlzLm9wdGlvbnMsIHZpei5jb250cm9sbGVyLCBvcHQpLCByb290ID0gdml6LnJvb3Q7Ci0gICAgICAgIHZhciBncmFwaDsKLSAgICAgICAgdml6LnJvb3QgPSBvcHQuaWQgfHwgdml6LnJvb3Q7Ci0gICAgICAgIHN3aXRjaChvcHRpb25zLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgJ25vdGhpbmcnOgotICAgICAgICAgICAgICAgIGdyYXBoID0gdml6LmNvbnN0cnVjdChqc29uKTsKLSAgICAgICAgICAgICAgICBncmFwaC5lYWNoTm9kZShmdW5jdGlvbihlbGVtKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW0uZWFjaEFkamFjZW5jeShmdW5jdGlvbihhZGopIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpei5ncmFwaC5hZGRBZGphY2VuY2UoYWRqLm5vZGVGcm9tLCBhZGoubm9kZVRvLCBhZGouZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlICdyZXBsb3QnOgotICAgICAgICAgICAgICAgIHZpei5yZWZyZXNoKHRydWUpOwotICAgICAgICAgICAgICAgIHRoaXMuc3VtKGpzb24sIHsgdHlwZTogJ25vdGhpbmcnIH0pOwotICAgICAgICAgICAgICAgIHZpei5yZWZyZXNoKHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlICdmYWRlOnNlcSc6IGNhc2UgJ2ZhZGUnOiBjYXNlICdmYWRlOmNvbic6Ci0gICAgICAgICAgICAgICAgdGhhdCA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgZ3JhcGggPSB2aXouY29uc3RydWN0KGpzb24pOwotCi0gICAgICAgICAgICAgICAgLy9zZXQgYWxwaGEgdG8gMCBmb3Igbm9kZXMgdG8gYWRkLgotICAgICAgICAgICAgICAgIHZhciBmYWRlRWRnZXMgPSB0aGlzLnByZXByb2Nlc3NTdW0oZ3JhcGgpOwotICAgICAgICAgICAgICAgIHZhciBtb2RlcyA9ICFmYWRlRWRnZXM/IFsnbm9kZS1wcm9wZXJ0eTphbHBoYSddIDogWydub2RlLXByb3BlcnR5OmFscGhhJywgJ2VkZ2UtcHJvcGVydHk6YWxwaGEnXTsKLSAgICAgICAgICAgICAgICB2aXoucmVwb3NpdGlvbigpOwotICAgICAgICAgICAgICAgIGlmKG9wdGlvbnMudHlwZSAhPSAnZmFkZTpjb24nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZpei5meC5hbmltYXRlKCQubWVyZ2Uob3B0aW9ucywgewotICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXM6IFsnbGluZWFyJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXouZnguYW5pbWF0ZSgkLm1lcmdlKG9wdGlvbnMsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXM6IG1vZGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMub25Db21wbGV0ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdml6LmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKGVsZW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLmlkICE9IHJvb3QgJiYgZWxlbS5wb3MuaXNaZXJvKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5wb3Muc2V0KGVsZW0uZW5kUG9zKTsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc3RhcnRQb3Muc2V0KGVsZW0uZW5kUG9zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIHZpei5meC5hbmltYXRlKCQubWVyZ2Uob3B0aW9ucywgewotICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXM6IFsnbGluZWFyJ10uY29uY2F0KG1vZGVzKQotICAgICAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBkZWZhdWx0OiB0aGlzLmRvRXJyb3IoKTsKLSAgICAgICAgfQotICAgIH0sCi0gICAgCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IG1vcnBoCi0gICAgCi0gICAgICAgVGhpcyBtZXRob2Qgd2lsbCB0cmFuc2Zvcm0gdGhlIGN1cnJlbnQgdmlzdWFsaXplZCBncmFwaCBpbnRvIHRoZSBuZXcgSlNPTiByZXByZXNlbnRhdGlvbiBwYXNzZWQgaW4gdGhlIG1ldGhvZC4gCi0gICAgICAgVGhlIEpTT04gb2JqZWN0IG11c3QgYXQgbGVhc3QgaGF2ZSB0aGUgcm9vdCBub2RlIGluIGNvbW1vbiB3aXRoIHRoZSBjdXJyZW50IHZpc3VhbGl6ZWQgZ3JhcGguCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgICAgIGpzb24gLSAob2JqZWN0KSBBIGpzb24gdHJlZSBvciBncmFwaCBzdHJ1Y3R1cmUuIFNlZSBhbHNvIDxMb2FkZXIubG9hZEpTT04+LgotICAgICAgIG9wdCAtIChvYmplY3QpIEFuaW1hdGlvbiBvcHRpb25zLiBJdCdzIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHByb3BlcnRpZXMgZGVzY3JpYmVkIGJlbG93Ci0gICAgICAgdHlwZSAtIChzdHJpbmcpIERlZmF1bHQncyAqbm90aGluZyouIFR5cGUgb2YgdGhlIGFuaW1hdGlvbi4gQ2FuIGJlICJub3RoaW5nIiwgInJlcGxvdCIsICJmYWRlOmNvbiIuCi0gICAgICAgZHVyYXRpb24gLSBEZXNjcmliZWQgaW4gPE9wdGlvbnMuRng+LgotICAgICAgIGZwcyAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5GeD4uCi0gICAgICAgdHJhbnNpdGlvbiAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5GeD4uCi0gICAgICAgaGlkZUxhYmVscyAtIChib29sZWFuKSBEZWZhdWx0J3MgKnRydWUqLiBIaWRlIGxhYmVscyBkdXJpbmcgdGhlIGFuaW1hdGlvbi4KLSAgICAgICBpZCAtIChzdHJpbmcpIFRoZSBzaGFyZWQgPEdyYXBoLk5vZGU+IGlkIGJldHdlZW4gYm90aCBncmFwaHMuCi0gICAgICAgCi0gICAgICAgZXh0cmFNb2RlcyAtIChvcHRpb25hbHxvYmplY3QpIFdoZW4gbW9ycGhpbmcgd2l0aCBhbiBhbmltYXRpb24sIGRvbGxhciBwcmVmaXhlZCBkYXRhIHBhcmFtZXRlcnMgYXJlIGFkZGVkIHRvIAotICAgICAgICAgICAgICAgICAgICAqZW5kRGF0YSogYW5kIG5vdCAqZGF0YSogaXRzZWxmLiBUaGlzIHdheSB5b3UgY2FuIGFuaW1hdGUgZG9sbGFyIHByZWZpeGVkIHBhcmFtZXRlcnMgZHVyaW5nIHlvdXIgbW9ycGhpbmcgb3BlcmF0aW9uLiAKLSAgICAgICAgICAgICAgICAgICAgRm9yIGFuaW1hdGluZyB0aGVzZSBleHRyYS1wYXJhbWV0ZXJzIHlvdSBoYXZlIHRvIHNwZWNpZnkgYW4gb2JqZWN0IHRoYXQgaGFzIGFuaW1hdGlvbiBncm91cHMgYXMga2V5cyBhbmQgYW5pbWF0aW9uIAotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzIGFzIHZhbHVlcywganVzdCBsaWtlIHNwZWNpZmllZCBpbiA8R3JhcGguUGxvdC5hbmltYXRlPi4KLSAgIAotICAgICAgRXhhbXBsZToKLSAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICAvLy4uLmpzb24gY29udGFpbnMgYSB0cmVlIG9yIGdyYXBoIHN0cnVjdHVyZS4uLgotCi0gICAgICAgIHZhciB2aXogPSBuZXcgJGppdC5WaXoob3B0aW9ucyk7Ci0gICAgICAgIHZpei5vcC5tb3JwaChqc29uLCB7Ci0gICAgICAgICAgdHlwZTogJ2ZhZGUnLAotICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLAotICAgICAgICAgIGhpZGVMYWJlbHM6IGZhbHNlLAotICAgICAgICAgIHRyYW5zaXRpb246ICRqaXQuVHJhbnMuUXVhcnQuZWFzZU91dAotICAgICAgICB9KTsKLSAgICAgICAgLy9vciBhbHNvCi0gICAgICAgIHZpei5vcC5tb3JwaChqc29uLCB7Ci0gICAgICAgICAgdHlwZTogJ2ZhZGUnLAotICAgICAgICAgIGR1cmF0aW9uOiAxNTAwCi0gICAgICAgIH0pOwotICAgICAgICAvL2lmIHRoZSBqc29uIGRhdGEgY29udGFpbnMgZG9sbGFyIHByZWZpeGVkIHBhcmFtcwotICAgICAgICAvL2xpa2UgJHdpZHRoIG9yICRoZWlnaHQgdGhlc2UgdG9vIGNhbiBiZSBhbmltYXRlZAotICAgICAgICB2aXoub3AubW9ycGgoanNvbiwgewotICAgICAgICAgIHR5cGU6ICdmYWRlJywKLSAgICAgICAgICBkdXJhdGlvbjogMTUwMAotICAgICAgICB9LCB7Ci0gICAgICAgICAgJ25vZGUtcHJvcGVydHknOiBbJ3dpZHRoJywgJ2hlaWdodCddCi0gICAgICAgIH0pOwotICAgICAgKGVuZCBjb2RlKQotICAgIAotICAgICovCi0gICAgbW9ycGg6IGZ1bmN0aW9uKGpzb24sIG9wdCwgZXh0cmFNb2RlcykgewotICAgICAgICBleHRyYU1vZGVzID0gZXh0cmFNb2RlcyB8fCB7fTsKLSAgICAgICAgdmFyIHZpeiA9IHRoaXMudml6OwotICAgICAgICB2YXIgb3B0aW9ucyA9ICQubWVyZ2UodGhpcy5vcHRpb25zLCB2aXouY29udHJvbGxlciwgb3B0KSwgcm9vdCA9IHZpei5yb290OwotICAgICAgICB2YXIgZ3JhcGg7Ci0gICAgICAgIC8vVE9ETyhuaWNvKSB0aGlzIGhhY2sgbWFrZXMgbW9ycGhpbmcgd29yayB3aXRoIHRoZSBIeXBlcnRyZWUuIAotICAgICAgICAvL05lZWQgdG8gY2hlY2sgaWYgaXQgaGFzIGJlZW4gc29sdmVkIGFuZCB0aGlzIGNhbiBiZSByZW1vdmVkLgotICAgICAgICB2aXoucm9vdCA9IG9wdC5pZCB8fCB2aXoucm9vdDsKLSAgICAgICAgc3dpdGNoKG9wdGlvbnMudHlwZSkgewotICAgICAgICAgICAgY2FzZSAnbm90aGluZyc6Ci0gICAgICAgICAgICAgICAgZ3JhcGggPSB2aXouY29uc3RydWN0KGpzb24pOwotICAgICAgICAgICAgICAgIGdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKGVsZW0pIHsKLSAgICAgICAgICAgICAgICAgIHZhciBub2RlRXhpc3RzID0gdml6LmdyYXBoLmhhc05vZGUoZWxlbS5pZCk7ICAKLSAgICAgICAgICAgICAgICAgIGVsZW0uZWFjaEFkamFjZW5jeShmdW5jdGlvbihhZGopIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGFkakV4aXN0cyA9ICEhdml6LmdyYXBoLmdldEFkamFjZW5jZShhZGoubm9kZUZyb20uaWQsIGFkai5ub2RlVG8uaWQpOwotICAgICAgICAgICAgICAgICAgICB2aXouZ3JhcGguYWRkQWRqYWNlbmNlKGFkai5ub2RlRnJvbSwgYWRqLm5vZGVUbywgYWRqLmRhdGEpOwotICAgICAgICAgICAgICAgICAgICAvL1VwZGF0ZSBkYXRhIHByb3BlcnRpZXMgaWYgdGhlIG5vZGUgZXhpc3RlZAotICAgICAgICAgICAgICAgICAgICBpZihhZGpFeGlzdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRkZWRBZGogPSB2aXouZ3JhcGguZ2V0QWRqYWNlbmNlKGFkai5ub2RlRnJvbS5pZCwgYWRqLm5vZGVUby5pZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBwcm9wIGluIChhZGouZGF0YSB8fCB7fSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkQWRqLmRhdGFbcHJvcF0gPSBhZGouZGF0YVtwcm9wXTsKLSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgLy9VcGRhdGUgZGF0YSBwcm9wZXJ0aWVzIGlmIHRoZSBub2RlIGV4aXN0ZWQKLSAgICAgICAgICAgICAgICAgIGlmKG5vZGVFeGlzdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGFkZGVkTm9kZSA9IHZpei5ncmFwaC5nZXROb2RlKGVsZW0uaWQpOwotICAgICAgICAgICAgICAgICAgICBmb3IodmFyIHByb3AgaW4gKGVsZW0uZGF0YSB8fCB7fSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICBhZGRlZE5vZGUuZGF0YVtwcm9wXSA9IGVsZW0uZGF0YVtwcm9wXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHZpei5ncmFwaC5lYWNoTm9kZShmdW5jdGlvbihlbGVtKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW0uZWFjaEFkamFjZW5jeShmdW5jdGlvbihhZGopIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFncmFwaC5nZXRBZGphY2VuY2UoYWRqLm5vZGVGcm9tLmlkLCBhZGoubm9kZVRvLmlkKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpei5ncmFwaC5yZW1vdmVBZGphY2VuY2UoYWRqLm5vZGVGcm9tLmlkLCBhZGoubm9kZVRvLmlkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmKCFncmFwaC5oYXNOb2RlKGVsZW0uaWQpKSB2aXouZ3JhcGgucmVtb3ZlTm9kZShlbGVtLmlkKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSAncmVwbG90JzoKLSAgICAgICAgICAgICAgICB2aXoubGFiZWxzLmNsZWFyTGFiZWxzKHRydWUpOwotICAgICAgICAgICAgICAgIHRoaXMubW9ycGgoanNvbiwgeyB0eXBlOiAnbm90aGluZycgfSk7Ci0gICAgICAgICAgICAgICAgdml6LnJlZnJlc2godHJ1ZSk7Ci0gICAgICAgICAgICAgICAgdml6LnJlZnJlc2godHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlICdmYWRlOnNlcSc6IGNhc2UgJ2ZhZGUnOiBjYXNlICdmYWRlOmNvbic6Ci0gICAgICAgICAgICAgICAgdGhhdCA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgZ3JhcGggPSB2aXouY29uc3RydWN0KGpzb24pOwotICAgICAgICAgICAgICAgIC8vcHJlcHJvY2Vzc2luZyBmb3Igbm9kZXMgdG8gZGVsZXRlLgotICAgICAgICAgICAgICAgIC8vZ2V0IG5vZGUgcHJvcGVydHkgbW9kZXMgdG8gaW50ZXJwb2xhdGUKLSAgICAgICAgICAgICAgICB2YXIgbm9kZU1vZGVzID0gKCdub2RlLXByb3BlcnR5JyBpbiBleHRyYU1vZGVzKSAKLSAgICAgICAgICAgICAgICAgICYmICQubWFwKCQuc3BsYXQoZXh0cmFNb2Rlc1snbm9kZS1wcm9wZXJ0eSddKSwgCi0gICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24obikgeyByZXR1cm4gJyQnICsgbjsgfSk7Ci0gICAgICAgICAgICAgICAgdml6LmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKGVsZW0pIHsKLSAgICAgICAgICAgICAgICAgIHZhciBncmFwaE5vZGUgPSBncmFwaC5nZXROb2RlKGVsZW0uaWQpOyAgIAotICAgICAgICAgICAgICAgICAgaWYoIWdyYXBoTm9kZSkgewotICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc2V0RGF0YSgnYWxwaGEnLCAxKTsKLSAgICAgICAgICAgICAgICAgICAgICBlbGVtLnNldERhdGEoJ2FscGhhJywgMSwgJ3N0YXJ0Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgZWxlbS5zZXREYXRhKCdhbHBoYScsIDAsICdlbmQnKTsKLSAgICAgICAgICAgICAgICAgICAgICBlbGVtLmlnbm9yZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgLy9VcGRhdGUgbm9kZSBkYXRhIGluZm9ybWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgdmFyIGdyYXBoTm9kZURhdGEgPSBncmFwaE5vZGUuZGF0YTsKLSAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIHByb3AgaW4gZ3JhcGhOb2RlRGF0YSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYobm9kZU1vZGVzICYmICgkLmluZGV4T2Yobm9kZU1vZGVzLCBwcm9wKSA+IC0xKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmVuZERhdGFbcHJvcF0gPSBncmFwaE5vZGVEYXRhW3Byb3BdOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5kYXRhW3Byb3BdID0gZ3JhcGhOb2RlRGF0YVtwcm9wXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsgCi0gICAgICAgICAgICAgICAgdml6LmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKGVsZW0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYoZWxlbS5pZ25vcmUpIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgZWxlbS5lYWNoQWRqYWNlbmN5KGZ1bmN0aW9uKGFkaikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRqLm5vZGVGcm9tLmlnbm9yZSB8fCBhZGoubm9kZVRvLmlnbm9yZSkgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5vZGVGcm9tID0gZ3JhcGguZ2V0Tm9kZShhZGoubm9kZUZyb20uaWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5vZGVUbyA9IGdyYXBoLmdldE5vZGUoYWRqLm5vZGVUby5pZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZighbm9kZUZyb20uYWRqYWNlbnRUbyhub2RlVG8pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkaiA9IHZpei5ncmFwaC5nZXRBZGphY2VuY2Uobm9kZUZyb20uaWQsIG5vZGVUby5pZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFkZUVkZ2VzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGouc2V0RGF0YSgnYWxwaGEnLCAxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGouc2V0RGF0YSgnYWxwaGEnLCAxLCAnc3RhcnQnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGouc2V0RGF0YSgnYWxwaGEnLCAwLCAnZW5kJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0pOyAKLSAgICAgICAgICAgICAgICAvL3ByZXByb2Nlc3NpbmcgZm9yIGFkZGluZyBub2Rlcy4KLSAgICAgICAgICAgICAgICB2YXIgZmFkZUVkZ2VzID0gdGhpcy5wcmVwcm9jZXNzU3VtKGdyYXBoKTsKLQotICAgICAgICAgICAgICAgIHZhciBtb2RlcyA9ICFmYWRlRWRnZXM/IFsnbm9kZS1wcm9wZXJ0eTphbHBoYSddIDogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydub2RlLXByb3BlcnR5OmFscGhhJywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGdlLXByb3BlcnR5OmFscGhhJ107Ci0gICAgICAgICAgICAgICAgLy9BcHBlbmQgZXh0cmEgbm9kZS1wcm9wZXJ0eSBhbmltYXRpb25zIChpZiBhbnkpCi0gICAgICAgICAgICAgICAgbW9kZXNbMF0gPSBtb2Rlc1swXSArICgoJ25vZGUtcHJvcGVydHknIGluIGV4dHJhTW9kZXMpPyAKLSAgICAgICAgICAgICAgICAgICAgKCc6JyArICQuc3BsYXQoZXh0cmFNb2Rlc1snbm9kZS1wcm9wZXJ0eSddKS5qb2luKCc6JykpIDogJycpOwotICAgICAgICAgICAgICAgIC8vQXBwZW5kIGV4dHJhIGVkZ2UtcHJvcGVydHkgYW5pbWF0aW9ucyAoaWYgYW55KQotICAgICAgICAgICAgICAgIG1vZGVzWzFdID0gKG1vZGVzWzFdIHx8ICdlZGdlLXByb3BlcnR5OmFscGhhJykgKyAoKCdlZGdlLXByb3BlcnR5JyBpbiBleHRyYU1vZGVzKT8gCi0gICAgICAgICAgICAgICAgICAgICgnOicgKyAkLnNwbGF0KGV4dHJhTW9kZXNbJ2VkZ2UtcHJvcGVydHknXSkuam9pbignOicpKSA6ICcnKTsKLSAgICAgICAgICAgICAgICAvL0FkZCBsYWJlbC1wcm9wZXJ0eSBhbmltYXRpb25zIChpZiBhbnkpCi0gICAgICAgICAgICAgICAgaWYoJ2xhYmVsLXByb3BlcnR5JyBpbiBleHRyYU1vZGVzKSB7Ci0gICAgICAgICAgICAgICAgICBtb2Rlcy5wdXNoKCdsYWJlbC1wcm9wZXJ0eTonICsgJC5zcGxhdChleHRyYU1vZGVzWydsYWJlbC1wcm9wZXJ0eSddKS5qb2luKCc6JykpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vb25seSB1c2UgcmVwb3NpdGlvbiBpZiBpdHMgaW1wbGVtZW50ZWQuCi0gICAgICAgICAgICAgICAgaWYgKHZpei5yZXBvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICB2aXoucmVwb3NpdGlvbigpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICB2aXouY29tcHV0ZSgnZW5kJyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZpei5ncmFwaC5lYWNoTm9kZShmdW5jdGlvbihlbGVtKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLmlkICE9IHJvb3QgJiYgZWxlbS5wb3MuZ2V0cCgpLmVxdWFscyhQb2xhci5LRVIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgZWxlbS5wb3Muc2V0KGVsZW0uZW5kUG9zKTsgZWxlbS5zdGFydFBvcy5zZXQoZWxlbS5lbmRQb3MpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgdml6LmZ4LmFuaW1hdGUoJC5tZXJnZShvcHRpb25zLCB7Ci0gICAgICAgICAgICAgICAgICAgIG1vZGVzOiBbZXh0cmFNb2Rlcy5wb3NpdGlvbiB8fCAncG9sYXInXS5jb25jYXQobW9kZXMpLAotICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpei5ncmFwaC5lYWNoTm9kZShmdW5jdGlvbihlbGVtKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZWxlbS5pZ25vcmUpIHZpei5ncmFwaC5yZW1vdmVOb2RlKGVsZW0uaWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2aXouZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24oZWxlbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uZWFjaEFkamFjZW5jeShmdW5jdGlvbihhZGopIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRqLmlnbm9yZSkgdml6LmdyYXBoLnJlbW92ZUFkamFjZW5jZShhZGoubm9kZUZyb20uaWQsIGFkai5ub2RlVG8uaWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uQ29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgZGVmYXVsdDo7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgCi0gIC8qCi0gICAgTWV0aG9kOiBjb250cmFjdAotIAotICAgIENvbGxhcHNlcyB0aGUgc3VidHJlZSBvZiB0aGUgZ2l2ZW4gbm9kZS4gVGhlIG5vZGUgd2lsbCBoYXZlIGEgX2NvbGxhcHNlZD10cnVlXyBwcm9wZXJ0eS4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotIAotICAgIG5vZGUgLSAob2JqZWN0KSBBIDxHcmFwaC5Ob2RlPi4KLSAgICBvcHQgLSAob2JqZWN0KSBBbiBvYmplY3QgY29udGFpbmluZyBvcHRpb25zIGRlc2NyaWJlZCBiZWxvdwotICAgIHR5cGUgLSAoc3RyaW5nKSBXaGV0aGVyIHRvICdyZXBsb3QnIG9yICdhbmltYXRlJyB0aGUgY29udHJhY3Rpb24uCi0gICAKLSAgICBUaGVyZSBhcmUgYWxzbyBhIG51bWJlciBvZiBBbmltYXRpb24gb3B0aW9ucy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIDxPcHRpb25zLkZ4Pi4KLQotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgIHZhciB2aXogPSBuZXcgJGppdC5WaXoob3B0aW9ucyk7Ci0gICAgIHZpei5vcC5jb250cmFjdChub2RlLCB7Ci0gICAgICAgdHlwZTogJ2FuaW1hdGUnLAotICAgICAgIGR1cmF0aW9uOiAxMDAwLAotICAgICAgIGhpZGVMYWJlbHM6IHRydWUsCi0gICAgICAgdHJhbnNpdGlvbjogJGppdC5UcmFucy5RdWFydC5lYXNlT3V0Ci0gICAgIH0pOwotICAgKGVuZCBjb2RlKQotIAotICAgKi8KLSAgICBjb250cmFjdDogZnVuY3Rpb24obm9kZSwgb3B0KSB7Ci0gICAgICB2YXIgdml6ID0gdGhpcy52aXo7Ci0gICAgICBpZihub2RlLmNvbGxhcHNlZCB8fCAhbm9kZS5hbnlTdWJub2RlKCQubGFtYmRhKHRydWUpKSkgcmV0dXJuOwotICAgICAgb3B0ID0gJC5tZXJnZSh0aGlzLm9wdGlvbnMsIHZpei5jb25maWcsIG9wdCB8fCB7fSwgewotICAgICAgICAnbW9kZXMnOiBbJ25vZGUtcHJvcGVydHk6YWxwaGE6c3BhbicsICdsaW5lYXInXQotICAgICAgfSk7Ci0gICAgICBub2RlLmNvbGxhcHNlZCA9IHRydWU7Ci0gICAgICAoZnVuY3Rpb24gc3VibihuKSB7Ci0gICAgICAgIG4uZWFjaFN1Ym5vZGUoZnVuY3Rpb24oY2gpIHsKLSAgICAgICAgICBjaC5pZ25vcmUgPSB0cnVlOwotICAgICAgICAgIGNoLnNldERhdGEoJ2FscGhhJywgMCwgb3B0LnR5cGUgPT0gJ2FuaW1hdGUnPyAnZW5kJyA6ICdjdXJyZW50Jyk7Ci0gICAgICAgICAgc3VibihjaCk7Ci0gICAgICAgIH0pOwotICAgICAgfSkobm9kZSk7Ci0gICAgICBpZihvcHQudHlwZSA9PSAnYW5pbWF0ZScpIHsKLSAgICAgICAgdml6LmNvbXB1dGUoJ2VuZCcpOwotICAgICAgICBpZih2aXoucm90YXRlZCkgewotICAgICAgICAgIHZpei5yb3RhdGUodml6LnJvdGF0ZWQsICdub25lJywgewotICAgICAgICAgICAgJ3Byb3BlcnR5JzonZW5kJwotICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIChmdW5jdGlvbiBzdWJuKG4pIHsKLSAgICAgICAgICBuLmVhY2hTdWJub2RlKGZ1bmN0aW9uKGNoKSB7Ci0gICAgICAgICAgICBjaC5zZXRQb3Mobm9kZS5nZXRQb3MoJ2VuZCcpLCAnZW5kJyk7Ci0gICAgICAgICAgICBzdWJuKGNoKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSkobm9kZSk7Ci0gICAgICAgIHZpei5meC5hbmltYXRlKG9wdCk7Ci0gICAgICB9IGVsc2UgaWYob3B0LnR5cGUgPT0gJ3JlcGxvdCcpewotICAgICAgICB2aXoucmVmcmVzaCgpOwotICAgICAgfQotICAgIH0sCi0gICAgCi0gICAgLyoKLSAgICBNZXRob2Q6IGV4cGFuZAotIAotICAgIEV4cGFuZHMgdGhlIHByZXZpb3VzbHkgY29udHJhY3RlZCBzdWJ0cmVlLiBUaGUgZ2l2ZW4gbm9kZSBtdXN0IGhhdmUgdGhlIF9jb2xsYXBzZWQ9dHJ1ZV8gcHJvcGVydHkuCi0gICAgCi0gICAgUGFyYW1ldGVyczoKLSAKLSAgICBub2RlIC0gKG9iamVjdCkgQSA8R3JhcGguTm9kZT4uCi0gICAgb3B0IC0gKG9iamVjdCkgQW4gb2JqZWN0IGNvbnRhaW5pbmcgb3B0aW9ucyBkZXNjcmliZWQgYmVsb3cKLSAgICB0eXBlIC0gKHN0cmluZykgV2hldGhlciB0byAncmVwbG90JyBvciAnYW5pbWF0ZScuCi0gICAgIAotICAgIFRoZXJlIGFyZSBhbHNvIGEgbnVtYmVyIG9mIEFuaW1hdGlvbiBvcHRpb25zLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgPE9wdGlvbnMuRng+LgotCi0gICAgRXhhbXBsZToKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgIHZhciB2aXogPSBuZXcgJGppdC5WaXoob3B0aW9ucyk7Ci0gICAgICB2aXoub3AuZXhwYW5kKG5vZGUsIHsKLSAgICAgICAgdHlwZTogJ2FuaW1hdGUnLAotICAgICAgICBkdXJhdGlvbjogMTAwMCwKLSAgICAgICAgaGlkZUxhYmVsczogdHJ1ZSwKLSAgICAgICAgdHJhbnNpdGlvbjogJGppdC5UcmFucy5RdWFydC5lYXNlT3V0Ci0gICAgICB9KTsKLSAgICAoZW5kIGNvZGUpCi0gCi0gICAqLwotICAgIGV4cGFuZDogZnVuY3Rpb24obm9kZSwgb3B0KSB7Ci0gICAgICBpZighKCdjb2xsYXBzZWQnIGluIG5vZGUpKSByZXR1cm47Ci0gICAgICB2YXIgdml6ID0gdGhpcy52aXo7Ci0gICAgICBvcHQgPSAkLm1lcmdlKHRoaXMub3B0aW9ucywgdml6LmNvbmZpZywgb3B0IHx8IHt9LCB7Ci0gICAgICAgICdtb2Rlcyc6IFsnbm9kZS1wcm9wZXJ0eTphbHBoYTpzcGFuJywgJ2xpbmVhciddCi0gICAgICB9KTsKLSAgICAgIGRlbGV0ZSBub2RlLmNvbGxhcHNlZDsKLSAgICAgIChmdW5jdGlvbiBzdWJuKG4pIHsKLSAgICAgICAgbi5lYWNoU3Vibm9kZShmdW5jdGlvbihjaCkgewotICAgICAgICAgIGRlbGV0ZSBjaC5pZ25vcmU7Ci0gICAgICAgICAgY2guc2V0RGF0YSgnYWxwaGEnLCAxLCBvcHQudHlwZSA9PSAnYW5pbWF0ZSc/ICdlbmQnIDogJ2N1cnJlbnQnKTsKLSAgICAgICAgICBzdWJuKGNoKTsKLSAgICAgICAgfSk7Ci0gICAgICB9KShub2RlKTsKLSAgICAgIGlmKG9wdC50eXBlID09ICdhbmltYXRlJykgewotICAgICAgICB2aXouY29tcHV0ZSgnZW5kJyk7Ci0gICAgICAgIGlmKHZpei5yb3RhdGVkKSB7Ci0gICAgICAgICAgdml6LnJvdGF0ZSh2aXoucm90YXRlZCwgJ25vbmUnLCB7Ci0gICAgICAgICAgICAncHJvcGVydHknOidlbmQnCi0gICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgdml6LmZ4LmFuaW1hdGUob3B0KTsKLSAgICAgIH0gZWxzZSBpZihvcHQudHlwZSA9PSAncmVwbG90Jyl7Ci0gICAgICAgIHZpei5yZWZyZXNoKCk7Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIHByZXByb2Nlc3NTdW06IGZ1bmN0aW9uKGdyYXBoKSB7Ci0gICAgICAgIHZhciB2aXogPSB0aGlzLnZpejsKLSAgICAgICAgZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24oZWxlbSkgewotICAgICAgICAgICAgaWYoIXZpei5ncmFwaC5oYXNOb2RlKGVsZW0uaWQpKSB7Ci0gICAgICAgICAgICAgICAgdml6LmdyYXBoLmFkZE5vZGUoZWxlbSk7Ci0gICAgICAgICAgICAgICAgdmFyIG4gPSB2aXouZ3JhcGguZ2V0Tm9kZShlbGVtLmlkKTsKLSAgICAgICAgICAgICAgICBuLnNldERhdGEoJ2FscGhhJywgMCk7Ci0gICAgICAgICAgICAgICAgbi5zZXREYXRhKCdhbHBoYScsIDAsICdzdGFydCcpOwotICAgICAgICAgICAgICAgIG4uc2V0RGF0YSgnYWxwaGEnLCAxLCAnZW5kJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOyAKLSAgICAgICAgdmFyIGZhZGVFZGdlcyA9IGZhbHNlOwotICAgICAgICBncmFwaC5lYWNoTm9kZShmdW5jdGlvbihlbGVtKSB7Ci0gICAgICAgICAgICBlbGVtLmVhY2hBZGphY2VuY3koZnVuY3Rpb24oYWRqKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG5vZGVGcm9tID0gdml6LmdyYXBoLmdldE5vZGUoYWRqLm5vZGVGcm9tLmlkKTsKLSAgICAgICAgICAgICAgICB2YXIgbm9kZVRvID0gdml6LmdyYXBoLmdldE5vZGUoYWRqLm5vZGVUby5pZCk7Ci0gICAgICAgICAgICAgICAgaWYoIW5vZGVGcm9tLmFkamFjZW50VG8obm9kZVRvKSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgYWRqID0gdml6LmdyYXBoLmFkZEFkamFjZW5jZShub2RlRnJvbSwgbm9kZVRvLCBhZGouZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmKG5vZGVGcm9tLnN0YXJ0QWxwaGEgPT0gbm9kZUZyb20uZW5kQWxwaGEgCi0gICAgICAgICAgICAgICAgICAgICYmIG5vZGVUby5zdGFydEFscGhhID09IG5vZGVUby5lbmRBbHBoYSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmFkZUVkZ2VzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkai5zZXREYXRhKCdhbHBoYScsIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYWRqLnNldERhdGEoJ2FscGhhJywgMCwgJ3N0YXJ0Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGouc2V0RGF0YSgnYWxwaGEnLCAxLCAnZW5kJyk7Ci0gICAgICAgICAgICAgICAgICAgIH0gCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOyAKLSAgICAgICAgcmV0dXJuIGZhZGVFZGdlczsKLSAgICB9Ci19OwotCi0KLQotLyoKLSAgIEZpbGU6IEhlbHBlcnMuanMKLSAKLSAgIEhlbHBlcnMgYXJlIG9iamVjdHMgdGhhdCBjb250YWluIHJlbmRlcmluZyBwcmltaXRpdmVzIChsaWtlIHJlY3RhbmdsZXMsIGVsbGlwc2VzLCBldGMpLCBmb3IgcGxvdHRpbmcgbm9kZXMgYW5kIGVkZ2VzLgotICAgSGVscGVycyBhbHNvIGNvbnRhaW4gaW1wbGVtZW50YXRpb25zIG9mIHRoZSAqY29udGFpbnMqIG1ldGhvZCwgYSBtZXRob2QgcmV0dXJuaW5nIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1vdXNlCi0gICBwb3NpdGlvbiBpcyBvdmVyIHRoZSByZW5kZXJlZCBzaGFwZS4KLSAgIAotICAgSGVscGVycyBhcmUgdmVyeSB1c2VmdWwgd2hlbiBpbXBsZW1lbnRpbmcgbmV3IE5vZGVUeXBlcywgc2luY2UgeW91IGNhbiBhY2Nlc3MgdGhlbSB0aHJvdWdoICp0aGlzLm5vZGVIZWxwZXIqIGFuZCAKLSAgICp0aGlzLmVkZ2VIZWxwZXIqIDxHcmFwaC5QbG90PiBwcm9wZXJ0aWVzLCBwcm92aWRpbmcgeW91IHdpdGggc2ltcGxlIHByaW1pdGl2ZXMgYW5kIG1vdXNlLXBvc2l0aW9uIGNoZWNrIGZ1bmN0aW9ucy4KLSAgIAotICAgRXhhbXBsZToKLSAgIChzdGFydCBjb2RlIGpzKQotICAgLy9pbXBsZW1lbnQgYSBuZXcgbm9kZSB0eXBlCi0gICAkaml0LlZpei5QbG90Lk5vZGVUeXBlcy5pbXBsZW1lbnQoewotICAgICAnY3VzdG9tTm9kZVR5cGUnOiB7Ci0gICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICAgdGhpcy5ub2RlSGVscGVyLmNpcmNsZS5yZW5kZXIgLi4uCi0gICAgICAgfSwKLSAgICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBwb3MpIHsKLSAgICAgICAgIHRoaXMubm9kZUhlbHBlci5jaXJjbGUuY29udGFpbnMgLi4uCi0gICAgICAgfQotICAgICB9Ci0gICB9KTsKLSAgIC8vaW1wbGVtZW50IGFuIGVkZ2UgdHlwZQotICAgJGppdC5WaXouUGxvdC5FZGdlVHlwZXMuaW1wbGVtZW50KHsKLSAgICAgJ2N1c3RvbU5vZGVUeXBlJzogewotICAgICAgICdyZW5kZXInOiBmdW5jdGlvbihub2RlLCBjYW52YXMpIHsKLSAgICAgICAgIHRoaXMuZWRnZUhlbHBlci5jaXJjbGUucmVuZGVyIC4uLgotICAgICAgIH0sCi0gICAgICAgLy9vcHRpb25hbAotICAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgICAgdGhpcy5lZGdlSGVscGVyLmNpcmNsZS5jb250YWlucyAuLi4KLSAgICAgICB9Ci0gICAgIH0KLSAgIH0pOwotICAgKGVuZCBjb2RlKQotCi0qLwotCi0vKgotICAgT2JqZWN0OiBOb2RlSGVscGVyCi0gICAKLSAgIENvbnRhaW5zIHJlbmRlcmluZyBhbmQgb3RoZXIgdHlwZSBvZiBwcmltaXRpdmVzIGZvciBzaW1wbGUgc2hhcGVzLgotICovCi12YXIgTm9kZUhlbHBlciA9IHsKLSAgJ25vbmUnOiB7Ci0gICAgJ3JlbmRlcic6ICQuZW1wdHksCi0gICAgJ2NvbnRhaW5zJzogJC5sYW1iZGEoZmFsc2UpCi0gIH0sCi0gIC8qCi0gICBPYmplY3Q6IE5vZGVIZWxwZXIuY2lyY2xlCi0gICAqLwotICAnY2lyY2xlJzogewotICAgIC8qCi0gICAgIE1ldGhvZDogcmVuZGVyCi0gICAgIAotICAgICBSZW5kZXJzIGEgY2lyY2xlIGludG8gdGhlIGNhbnZhcy4KLSAgICAgCi0gICAgIFBhcmFtZXRlcnM6Ci0gICAgIAotICAgICB0eXBlIC0gKHN0cmluZykgUG9zc2libGUgb3B0aW9ucyBhcmUgJ2ZpbGwnIG9yICdzdHJva2UnLgotICAgICBwb3MgLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCB0aGUgcG9zaXRpb24gb2YgdGhlIGNlbnRlciBvZiB0aGUgY2lyY2xlLgotICAgICByYWRpdXMgLSAobnVtYmVyKSBUaGUgcmFkaXVzIG9mIHRoZSBjaXJjbGUgdG8gYmUgcmVuZGVyZWQuCi0gICAgIGNhbnZhcyAtIChvYmplY3QpIEEgPENhbnZhcz4gaW5zdGFuY2UuCi0gICAgIAotICAgICBFeGFtcGxlOgotICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgTm9kZUhlbHBlci5jaXJjbGUucmVuZGVyKCdmaWxsJywgeyB4OiAxMCwgeTogMzAgfSwgMzAsIHZpei5jYW52YXMpOwotICAgICAoZW5kIGNvZGUpCi0gICAgICovCi0gICAgJ3JlbmRlcic6IGZ1bmN0aW9uKHR5cGUsIHBvcywgcmFkaXVzLCBjYW52YXMpewotICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDdHgoKTsKLSAgICAgIGN0eC5iZWdpblBhdGgoKTsKLSAgICAgIGN0eC5hcmMocG9zLngsIHBvcy55LCByYWRpdXMsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTsKLSAgICAgIGN0eC5jbG9zZVBhdGgoKTsKLSAgICAgIGN0eFt0eXBlXSgpOwotICAgIH0sCi0gICAgLyoKLSAgICBNZXRob2Q6IGNvbnRhaW5zCi0gICAgCi0gICAgUmV0dXJucyAqdHJ1ZSogaWYgKnBvcyogaXMgY29udGFpbmVkIGluIHRoZSBhcmVhIG9mIHRoZSBzaGFwZS4gUmV0dXJucyAqZmFsc2UqIG90aGVyd2lzZS4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIG5wb3MgLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCB0aGUgPEdyYXBoLk5vZGU+IHBvc2l0aW9uLgotICAgIHBvcyAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIHRoZSBwb3NpdGlvbiB0byBjaGVjay4KLSAgICByYWRpdXMgLSAobnVtYmVyKSBUaGUgcmFkaXVzIG9mIHRoZSByZW5kZXJlZCBjaXJjbGUuCi0gICAgCi0gICAgRXhhbXBsZToKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICBOb2RlSGVscGVyLmNpcmNsZS5jb250YWlucyh7IHg6IDEwLCB5OiAzMCB9LCB7IHg6IDE1LCB5OiAzNSB9LCAzMCk7IC8vdHJ1ZQotICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5wb3MsIHBvcywgcmFkaXVzKXsKLSAgICAgIHZhciBkaWZmeCA9IG5wb3MueCAtIHBvcy54LCAKLSAgICAgICAgICBkaWZmeSA9IG5wb3MueSAtIHBvcy55LCAKLSAgICAgICAgICBkaWZmID0gZGlmZnggKiBkaWZmeCArIGRpZmZ5ICogZGlmZnk7Ci0gICAgICByZXR1cm4gZGlmZiA8PSByYWRpdXMgKiByYWRpdXM7Ci0gICAgfQotICB9LAotICAvKgotICBPYmplY3Q6IE5vZGVIZWxwZXIuZWxsaXBzZQotICAqLwotICAnZWxsaXBzZSc6IHsKLSAgICAvKgotICAgIE1ldGhvZDogcmVuZGVyCi0gICAgCi0gICAgUmVuZGVycyBhbiBlbGxpcHNlIGludG8gdGhlIGNhbnZhcy4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIHR5cGUgLSAoc3RyaW5nKSBQb3NzaWJsZSBvcHRpb25zIGFyZSAnZmlsbCcgb3IgJ3N0cm9rZScuCi0gICAgcG9zIC0gKG9iamVjdCkgQW4gKngqLCAqeSogb2JqZWN0IHdpdGggdGhlIHBvc2l0aW9uIG9mIHRoZSBjZW50ZXIgb2YgdGhlIGVsbGlwc2UuCi0gICAgd2lkdGggLSAobnVtYmVyKSBUaGUgd2lkdGggb2YgdGhlIGVsbGlwc2UuCi0gICAgaGVpZ2h0IC0gKG51bWJlcikgVGhlIGhlaWdodCBvZiB0aGUgZWxsaXBzZS4KLSAgICBjYW52YXMgLSAob2JqZWN0KSBBIDxDYW52YXM+IGluc3RhbmNlLgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgTm9kZUhlbHBlci5lbGxpcHNlLnJlbmRlcignZmlsbCcsIHsgeDogMTAsIHk6IDMwIH0sIDMwLCA0MCwgdml6LmNhbnZhcyk7Ci0gICAgKGVuZCBjb2RlKQotICAgICovCi0gICAgJ3JlbmRlcic6IGZ1bmN0aW9uKHR5cGUsIHBvcywgd2lkdGgsIGhlaWdodCwgY2FudmFzKXsKLSAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q3R4KCksCi0gICAgICAgICAgc2NhbGV4ID0gMSwKLSAgICAgICAgICBzY2FsZXkgPSAxLAotICAgICAgICAgIHNjYWxlcG9zeCA9IDEsCi0gICAgICAgICAgc2NhbGVwb3N5ID0gMSwKLSAgICAgICAgICByYWRpdXMgPSAwOwotCi0gICAgICBpZiAod2lkdGggPiBoZWlnaHQpIHsKLSAgICAgICAgICByYWRpdXMgPSB3aWR0aCAvIDI7Ci0gICAgICAgICAgc2NhbGV5ID0gaGVpZ2h0IC8gd2lkdGg7Ci0gICAgICAgICAgc2NhbGVwb3N5ID0gd2lkdGggLyBoZWlnaHQ7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAgIHJhZGl1cyA9IGhlaWdodCAvIDI7Ci0gICAgICAgICAgc2NhbGV4ID0gd2lkdGggLyBoZWlnaHQ7Ci0gICAgICAgICAgc2NhbGVwb3N4ID0gaGVpZ2h0IC8gd2lkdGg7Ci0gICAgICB9Ci0KLSAgICAgIGN0eC5zYXZlKCk7Ci0gICAgICBjdHguc2NhbGUoc2NhbGV4LCBzY2FsZXkpOwotICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgY3R4LmFyYyhwb3MueCAqIHNjYWxlcG9zeCwgcG9zLnkgKiBzY2FsZXBvc3ksIHJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpOwotICAgICAgY3R4LmNsb3NlUGF0aCgpOwotICAgICAgY3R4W3R5cGVdKCk7Ci0gICAgICBjdHgucmVzdG9yZSgpOwotICAgIH0sCi0gICAgLyoKLSAgICBNZXRob2Q6IGNvbnRhaW5zCi0gICAgCi0gICAgUmV0dXJucyAqdHJ1ZSogaWYgKnBvcyogaXMgY29udGFpbmVkIGluIHRoZSBhcmVhIG9mIHRoZSBzaGFwZS4gUmV0dXJucyAqZmFsc2UqIG90aGVyd2lzZS4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIG5wb3MgLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCB0aGUgPEdyYXBoLk5vZGU+IHBvc2l0aW9uLgotICAgIHBvcyAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIHRoZSBwb3NpdGlvbiB0byBjaGVjay4KLSAgICB3aWR0aCAtIChudW1iZXIpIFRoZSB3aWR0aCBvZiB0aGUgcmVuZGVyZWQgZWxsaXBzZS4KLSAgICBoZWlnaHQgLSAobnVtYmVyKSBUaGUgaGVpZ2h0IG9mIHRoZSByZW5kZXJlZCBlbGxpcHNlLgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgTm9kZUhlbHBlci5lbGxpcHNlLmNvbnRhaW5zKHsgeDogMTAsIHk6IDMwIH0sIHsgeDogMTUsIHk6IDM1IH0sIDMwLCA0MCk7Ci0gICAgKGVuZCBjb2RlKQotICAgICovCi0gICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obnBvcywgcG9zLCB3aWR0aCwgaGVpZ2h0KXsKLSAgICAgIHZhciByYWRpdXMgPSAwLAotICAgICAgICAgIHNjYWxleCA9IDEsCi0gICAgICAgICAgc2NhbGV5ID0gMSwKLSAgICAgICAgICBkaWZmeCA9IDAsCi0gICAgICAgICAgZGlmZnkgPSAwLAotICAgICAgICAgIGRpZmYgPSAwOwotCi0gICAgICBpZiAod2lkdGggPiBoZWlnaHQpIHsKLQkgICAgICByYWRpdXMgPSB3aWR0aCAvIDI7Ci0JICAgICAgc2NhbGV5ID0gaGVpZ2h0IC8gd2lkdGg7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAgIHJhZGl1cyA9IGhlaWdodCAvIDI7Ci0gICAgICAgICAgc2NhbGV4ID0gd2lkdGggLyBoZWlnaHQ7Ci0gICAgICB9Ci0KLSAgICAgIGRpZmZ4ID0gKG5wb3MueCAtIHBvcy54KSAqICgxIC8gc2NhbGV4KTsKLSAgICAgIGRpZmZ5ID0gKG5wb3MueSAtIHBvcy55KSAqICgxIC8gc2NhbGV5KTsKLSAgICAgIGRpZmYgPSBkaWZmeCAqIGRpZmZ4ICsgZGlmZnkgKiBkaWZmeTsKLSAgICAgIHJldHVybiBkaWZmIDw9IHJhZGl1cyAqIHJhZGl1czsKLSAgICB9Ci0gIH0sCi0gIC8qCi0gIE9iamVjdDogTm9kZUhlbHBlci5zcXVhcmUKLSAgKi8KLSAgJ3NxdWFyZSc6IHsKLSAgICAvKgotICAgIE1ldGhvZDogcmVuZGVyCi0gICAgCi0gICAgUmVuZGVycyBhIHNxdWFyZSBpbnRvIHRoZSBjYW52YXMuCi0gICAgCi0gICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICB0eXBlIC0gKHN0cmluZykgUG9zc2libGUgb3B0aW9ucyBhcmUgJ2ZpbGwnIG9yICdzdHJva2UnLgotICAgIHBvcyAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2VudGVyIG9mIHRoZSBzcXVhcmUuCi0gICAgZGltIC0gKG51bWJlcikgVGhlIHJhZGl1cyAob3IgaGFsZi1kaWFtZXRlcikgb2YgdGhlIHNxdWFyZS4KLSAgICBjYW52YXMgLSAob2JqZWN0KSBBIDxDYW52YXM+IGluc3RhbmNlLgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgTm9kZUhlbHBlci5zcXVhcmUucmVuZGVyKCdzdHJva2UnLCB7IHg6IDEwLCB5OiAzMCB9LCA0MCwgdml6LmNhbnZhcyk7Ci0gICAgKGVuZCBjb2RlKQotICAgICovCi0gICAgJ3JlbmRlcic6IGZ1bmN0aW9uKHR5cGUsIHBvcywgZGltLCBjYW52YXMpewotICAgICAgY2FudmFzLmdldEN0eCgpW3R5cGUgKyAiUmVjdCJdKHBvcy54IC0gZGltLCBwb3MueSAtIGRpbSwgMipkaW0sIDIqZGltKTsKLSAgICB9LAotICAgIC8qCi0gICAgTWV0aG9kOiBjb250YWlucwotICAgIAotICAgIFJldHVybnMgKnRydWUqIGlmICpwb3MqIGlzIGNvbnRhaW5lZCBpbiB0aGUgYXJlYSBvZiB0aGUgc2hhcGUuIFJldHVybnMgKmZhbHNlKiBvdGhlcndpc2UuCi0gICAgCi0gICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICBucG9zIC0gKG9iamVjdCkgQW4gKngqLCAqeSogb2JqZWN0IHdpdGggdGhlIDxHcmFwaC5Ob2RlPiBwb3NpdGlvbi4KLSAgICBwb3MgLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCB0aGUgcG9zaXRpb24gdG8gY2hlY2suCi0gICAgZGltIC0gKG51bWJlcikgVGhlIHJhZGl1cyAob3IgaGFsZi1kaWFtZXRlcikgb2YgdGhlIHNxdWFyZS4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIChzdGFydCBjb2RlIGpzKQotICAgIE5vZGVIZWxwZXIuc3F1YXJlLmNvbnRhaW5zKHsgeDogMTAsIHk6IDMwIH0sIHsgeDogMTUsIHk6IDM1IH0sIDMwKTsKLSAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICAnY29udGFpbnMnOiBmdW5jdGlvbihucG9zLCBwb3MsIGRpbSl7Ci0gICAgICByZXR1cm4gTWF0aC5hYnMocG9zLnggLSBucG9zLngpIDw9IGRpbSAmJiBNYXRoLmFicyhwb3MueSAtIG5wb3MueSkgPD0gZGltOwotICAgIH0KLSAgfSwKLSAgLyoKLSAgT2JqZWN0OiBOb2RlSGVscGVyLnJlY3RhbmdsZQotICAqLwotICAncmVjdGFuZ2xlJzogewotICAgIC8qCi0gICAgTWV0aG9kOiByZW5kZXIKLSAgICAKLSAgICBSZW5kZXJzIGEgcmVjdGFuZ2xlIGludG8gdGhlIGNhbnZhcy4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIHR5cGUgLSAoc3RyaW5nKSBQb3NzaWJsZSBvcHRpb25zIGFyZSAnZmlsbCcgb3IgJ3N0cm9rZScuCi0gICAgcG9zIC0gKG9iamVjdCkgQW4gKngqLCAqeSogb2JqZWN0IHdpdGggdGhlIHBvc2l0aW9uIG9mIHRoZSBjZW50ZXIgb2YgdGhlIHJlY3RhbmdsZS4KLSAgICB3aWR0aCAtIChudW1iZXIpIFRoZSB3aWR0aCBvZiB0aGUgcmVjdGFuZ2xlLgotICAgIGhlaWdodCAtIChudW1iZXIpIFRoZSBoZWlnaHQgb2YgdGhlIHJlY3RhbmdsZS4KLSAgICBjYW52YXMgLSAob2JqZWN0KSBBIDxDYW52YXM+IGluc3RhbmNlLgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgTm9kZUhlbHBlci5yZWN0YW5nbGUucmVuZGVyKCdmaWxsJywgeyB4OiAxMCwgeTogMzAgfSwgMzAsIDQwLCB2aXouY2FudmFzKTsKLSAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICAncmVuZGVyJzogZnVuY3Rpb24odHlwZSwgcG9zLCB3aWR0aCwgaGVpZ2h0LCBjYW52YXMpewotICAgICAgY2FudmFzLmdldEN0eCgpW3R5cGUgKyAiUmVjdCJdKHBvcy54IC0gd2lkdGggLyAyLCBwb3MueSAtIGhlaWdodCAvIDIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9LAotICAgIC8qCi0gICAgTWV0aG9kOiBjb250YWlucwotICAgIAotICAgIFJldHVybnMgKnRydWUqIGlmICpwb3MqIGlzIGNvbnRhaW5lZCBpbiB0aGUgYXJlYSBvZiB0aGUgc2hhcGUuIFJldHVybnMgKmZhbHNlKiBvdGhlcndpc2UuCi0gICAgCi0gICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICBucG9zIC0gKG9iamVjdCkgQW4gKngqLCAqeSogb2JqZWN0IHdpdGggdGhlIDxHcmFwaC5Ob2RlPiBwb3NpdGlvbi4KLSAgICBwb3MgLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCB0aGUgcG9zaXRpb24gdG8gY2hlY2suCi0gICAgd2lkdGggLSAobnVtYmVyKSBUaGUgd2lkdGggb2YgdGhlIHJlbmRlcmVkIHJlY3RhbmdsZS4KLSAgICBoZWlnaHQgLSAobnVtYmVyKSBUaGUgaGVpZ2h0IG9mIHRoZSByZW5kZXJlZCByZWN0YW5nbGUuCi0gICAgCi0gICAgRXhhbXBsZToKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICBOb2RlSGVscGVyLnJlY3RhbmdsZS5jb250YWlucyh7IHg6IDEwLCB5OiAzMCB9LCB7IHg6IDE1LCB5OiAzNSB9LCAzMCwgNDApOwotICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5wb3MsIHBvcywgd2lkdGgsIGhlaWdodCl7Ci0gICAgICByZXR1cm4gTWF0aC5hYnMocG9zLnggLSBucG9zLngpIDw9IHdpZHRoIC8gMgotICAgICAgICAgICYmIE1hdGguYWJzKHBvcy55IC0gbnBvcy55KSA8PSBoZWlnaHQgLyAyOwotICAgIH0KLSAgfSwKLSAgLyoKLSAgT2JqZWN0OiBOb2RlSGVscGVyLnRyaWFuZ2xlCi0gICovCi0gICd0cmlhbmdsZSc6IHsKLSAgICAvKgotICAgIE1ldGhvZDogcmVuZGVyCi0gICAgCi0gICAgUmVuZGVycyBhIHRyaWFuZ2xlIGludG8gdGhlIGNhbnZhcy4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIHR5cGUgLSAoc3RyaW5nKSBQb3NzaWJsZSBvcHRpb25zIGFyZSAnZmlsbCcgb3IgJ3N0cm9rZScuCi0gICAgcG9zIC0gKG9iamVjdCkgQW4gKngqLCAqeSogb2JqZWN0IHdpdGggdGhlIHBvc2l0aW9uIG9mIHRoZSBjZW50ZXIgb2YgdGhlIHRyaWFuZ2xlLgotICAgIGRpbSAtIChudW1iZXIpIEhhbGYgdGhlIGJhc2UgYW5kIGhhbGYgdGhlIGhlaWdodCBvZiB0aGUgdHJpYW5nbGUuCi0gICAgY2FudmFzIC0gKG9iamVjdCkgQSA8Q2FudmFzPiBpbnN0YW5jZS4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIChzdGFydCBjb2RlIGpzKQotICAgIE5vZGVIZWxwZXIudHJpYW5nbGUucmVuZGVyKCdzdHJva2UnLCB7IHg6IDEwLCB5OiAzMCB9LCA0MCwgdml6LmNhbnZhcyk7Ci0gICAgKGVuZCBjb2RlKQotICAgICovCi0gICAgJ3JlbmRlcic6IGZ1bmN0aW9uKHR5cGUsIHBvcywgZGltLCBjYW52YXMpewotICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDdHgoKSwgCi0gICAgICAgICAgYzF4ID0gcG9zLngsIAotICAgICAgICAgIGMxeSA9IHBvcy55IC0gZGltLCAKLSAgICAgICAgICBjMnggPSBjMXggLSBkaW0sIAotICAgICAgICAgIGMyeSA9IHBvcy55ICsgZGltLCAKLSAgICAgICAgICBjM3ggPSBjMXggKyBkaW0sIAotICAgICAgICAgIGMzeSA9IGMyeTsKLSAgICAgIGN0eC5iZWdpblBhdGgoKTsKLSAgICAgIGN0eC5tb3ZlVG8oYzF4LCBjMXkpOwotICAgICAgY3R4LmxpbmVUbyhjMngsIGMyeSk7Ci0gICAgICBjdHgubGluZVRvKGMzeCwgYzN5KTsKLSAgICAgIGN0eC5jbG9zZVBhdGgoKTsKLSAgICAgIGN0eFt0eXBlXSgpOwotICAgIH0sCi0gICAgLyoKLSAgICBNZXRob2Q6IGNvbnRhaW5zCi0gICAgCi0gICAgUmV0dXJucyAqdHJ1ZSogaWYgKnBvcyogaXMgY29udGFpbmVkIGluIHRoZSBhcmVhIG9mIHRoZSBzaGFwZS4gUmV0dXJucyAqZmFsc2UqIG90aGVyd2lzZS4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIG5wb3MgLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCB0aGUgPEdyYXBoLk5vZGU+IHBvc2l0aW9uLgotICAgIHBvcyAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIHRoZSBwb3NpdGlvbiB0byBjaGVjay4KLSAgICBkaW0gLSAobnVtYmVyKSBIYWxmIHRoZSBiYXNlIGFuZCBoYWxmIHRoZSBoZWlnaHQgb2YgdGhlIHRyaWFuZ2xlLgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgTm9kZUhlbHBlci50cmlhbmdsZS5jb250YWlucyh7IHg6IDEwLCB5OiAzMCB9LCB7IHg6IDE1LCB5OiAzNSB9LCAzMCk7Ci0gICAgKGVuZCBjb2RlKQotICAgICovCi0gICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obnBvcywgcG9zLCBkaW0pIHsKLSAgICAgIHJldHVybiBOb2RlSGVscGVyLmNpcmNsZS5jb250YWlucyhucG9zLCBwb3MsIGRpbSk7Ci0gICAgfQotICB9LAotICAvKgotICBPYmplY3Q6IE5vZGVIZWxwZXIuc3RhcgotICAqLwotICAnc3Rhcic6IHsKLSAgICAvKgotICAgIE1ldGhvZDogcmVuZGVyCi0gICAgCi0gICAgUmVuZGVycyBhIHN0YXIgKGNvbmNhdmUgZGVjYWdvbikgaW50byB0aGUgY2FudmFzLgotICAgIAotICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgdHlwZSAtIChzdHJpbmcpIFBvc3NpYmxlIG9wdGlvbnMgYXJlICdmaWxsJyBvciAnc3Ryb2tlJy4KLSAgICBwb3MgLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCB0aGUgcG9zaXRpb24gb2YgdGhlIGNlbnRlciBvZiB0aGUgc3Rhci4KLSAgICBkaW0gLSAobnVtYmVyKSBUaGUgbGVuZ3RoIG9mIGEgc2lkZSBvZiBhIGNvbmNhdmUgZGVjYWdvbi4KLSAgICBjYW52YXMgLSAob2JqZWN0KSBBIDxDYW52YXM+IGluc3RhbmNlLgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgTm9kZUhlbHBlci5zdGFyLnJlbmRlcignc3Ryb2tlJywgeyB4OiAxMCwgeTogMzAgfSwgNDAsIHZpei5jYW52YXMpOwotICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgICdyZW5kZXInOiBmdW5jdGlvbih0eXBlLCBwb3MsIGRpbSwgY2FudmFzKXsKLSAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q3R4KCksIAotICAgICAgICAgIHBpNSA9IE1hdGguUEkgLyA1OwotICAgICAgY3R4LnNhdmUoKTsKLSAgICAgIGN0eC50cmFuc2xhdGUocG9zLngsIHBvcy55KTsKLSAgICAgIGN0eC5iZWdpblBhdGgoKTsKLSAgICAgIGN0eC5tb3ZlVG8oZGltLCAwKTsKLSAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgOTsgaSsrKSB7Ci0gICAgICAgIGN0eC5yb3RhdGUocGk1KTsKLSAgICAgICAgaWYgKGkgJSAyID09IDApIHsKLSAgICAgICAgICBjdHgubGluZVRvKChkaW0gLyAwLjUyNTczMSkgKiAwLjIwMDgxMSwgMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgY3R4LmxpbmVUbyhkaW0sIDApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjdHguY2xvc2VQYXRoKCk7Ci0gICAgICBjdHhbdHlwZV0oKTsKLSAgICAgIGN0eC5yZXN0b3JlKCk7Ci0gICAgfSwKLSAgICAvKgotICAgIE1ldGhvZDogY29udGFpbnMKLSAgICAKLSAgICBSZXR1cm5zICp0cnVlKiBpZiAqcG9zKiBpcyBjb250YWluZWQgaW4gdGhlIGFyZWEgb2YgdGhlIHNoYXBlLiBSZXR1cm5zICpmYWxzZSogb3RoZXJ3aXNlLgotICAgIAotICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgbnBvcyAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIHRoZSA8R3JhcGguTm9kZT4gcG9zaXRpb24uCi0gICAgcG9zIC0gKG9iamVjdCkgQW4gKngqLCAqeSogb2JqZWN0IHdpdGggdGhlIHBvc2l0aW9uIHRvIGNoZWNrLgotICAgIGRpbSAtIChudW1iZXIpIFRoZSBsZW5ndGggb2YgYSBzaWRlIG9mIGEgY29uY2F2ZSBkZWNhZ29uLgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgTm9kZUhlbHBlci5zdGFyLmNvbnRhaW5zKHsgeDogMTAsIHk6IDMwIH0sIHsgeDogMTUsIHk6IDM1IH0sIDMwKTsKLSAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICAnY29udGFpbnMnOiBmdW5jdGlvbihucG9zLCBwb3MsIGRpbSkgewotICAgICAgcmV0dXJuIE5vZGVIZWxwZXIuY2lyY2xlLmNvbnRhaW5zKG5wb3MsIHBvcywgZGltKTsKLSAgICB9Ci0gIH0KLX07Ci0KLS8qCi0gIE9iamVjdDogRWRnZUhlbHBlcgotICAKLSAgQ29udGFpbnMgcmVuZGVyaW5nIHByaW1pdGl2ZXMgZm9yIHNpbXBsZSBlZGdlIHNoYXBlcy4KLSovCi12YXIgRWRnZUhlbHBlciA9IHsKLSAgLyoKLSAgICBPYmplY3Q6IEVkZ2VIZWxwZXIubGluZQotICAqLwotICAnbGluZSc6IHsKLSAgICAgIC8qCi0gICAgICBNZXRob2Q6IHJlbmRlcgotICAgICAgCi0gICAgICBSZW5kZXJzIGEgbGluZSBpbnRvIHRoZSBjYW52YXMuCi0gICAgICAKLSAgICAgIFBhcmFtZXRlcnM6Ci0gICAgICAKLSAgICAgIGZyb20gLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gb2YgdGhlIGxpbmUuCi0gICAgICB0byAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIHRoZSBlbmRpbmcgcG9zaXRpb24gb2YgdGhlIGxpbmUuCi0gICAgICBjYW52YXMgLSAob2JqZWN0KSBBIDxDYW52YXM+IGluc3RhbmNlLgotICAgICAgCi0gICAgICBFeGFtcGxlOgotICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICBFZGdlSGVscGVyLmxpbmUucmVuZGVyKHsgeDogMTAsIHk6IDMwIH0sIHsgeDogMTAsIHk6IDUwIH0sIHZpei5jYW52YXMpOwotICAgICAgKGVuZCBjb2RlKQotICAgICAgKi8KLSAgICAgICdyZW5kZXInOiBmdW5jdGlvbihmcm9tLCB0bywgY2FudmFzKXsKLSAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDdHgoKTsKLSAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICBjdHgubW92ZVRvKGZyb20ueCwgZnJvbS55KTsKLSAgICAgICAgY3R4LmxpbmVUbyh0by54LCB0by55KTsKLSAgICAgICAgY3R4LnN0cm9rZSgpOwotICAgICAgfSwKLSAgICAgIC8qCi0gICAgICBNZXRob2Q6IGNvbnRhaW5zCi0gICAgICAKLSAgICAgIFJldHVybnMgKnRydWUqIGlmICpwb3MqIGlzIGNvbnRhaW5lZCBpbiB0aGUgYXJlYSBvZiB0aGUgc2hhcGUuIFJldHVybnMgKmZhbHNlKiBvdGhlcndpc2UuCi0gICAgICAKLSAgICAgIFBhcmFtZXRlcnM6Ci0gICAgICAKLSAgICAgIHBvc0Zyb20gLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCBhIDxHcmFwaC5Ob2RlPiBwb3NpdGlvbi4KLSAgICAgIHBvc1RvIC0gKG9iamVjdCkgQW4gKngqLCAqeSogb2JqZWN0IHdpdGggYSA8R3JhcGguTm9kZT4gcG9zaXRpb24uCi0gICAgICBwb3MgLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCB0aGUgcG9zaXRpb24gdG8gY2hlY2suCi0gICAgICBlcHNpbG9uIC0gKG51bWJlcikgVGhlIGRpbWVuc2lvbiBvZiB0aGUgc2hhcGUuCi0gICAgICAKLSAgICAgIEV4YW1wbGU6Ci0gICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgIEVkZ2VIZWxwZXIubGluZS5jb250YWlucyh7IHg6IDEwLCB5OiAzMCB9LCB7IHg6IDE1LCB5OiAzNSB9LCB7IHg6IDE1LCB5OiAzNSB9LCAzMCk7Ci0gICAgICAoZW5kIGNvZGUpCi0gICAgICAqLwotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24ocG9zRnJvbSwgcG9zVG8sIHBvcywgZXBzaWxvbikgewotICAgICAgICB2YXIgbWluID0gTWF0aC5taW4sIAotICAgICAgICAgICAgbWF4ID0gTWF0aC5tYXgsCi0gICAgICAgICAgICBtaW5Qb3NYID0gbWluKHBvc0Zyb20ueCwgcG9zVG8ueCksCi0gICAgICAgICAgICBtYXhQb3NYID0gbWF4KHBvc0Zyb20ueCwgcG9zVG8ueCksCi0gICAgICAgICAgICBtaW5Qb3NZID0gbWluKHBvc0Zyb20ueSwgcG9zVG8ueSksCi0gICAgICAgICAgICBtYXhQb3NZID0gbWF4KHBvc0Zyb20ueSwgcG9zVG8ueSk7Ci0gICAgICAgIAotICAgICAgICBpZihwb3MueCA+PSBtaW5Qb3NYICYmIHBvcy54IDw9IG1heFBvc1ggCi0gICAgICAgICAgICAmJiBwb3MueSA+PSBtaW5Qb3NZICYmIHBvcy55IDw9IG1heFBvc1kpIHsKLSAgICAgICAgICBpZihNYXRoLmFicyhwb3NUby54IC0gcG9zRnJvbS54KSA8PSBlcHNpbG9uKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgdmFyIGRpc3QgPSAocG9zVG8ueSAtIHBvc0Zyb20ueSkgLyAocG9zVG8ueCAtIHBvc0Zyb20ueCkgKiAocG9zLnggLSBwb3NGcm9tLngpICsgcG9zRnJvbS55OwotICAgICAgICAgIHJldHVybiBNYXRoLmFicyhkaXN0IC0gcG9zLnkpIDw9IGVwc2lsb247Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0sCi0gIC8qCi0gICAgT2JqZWN0OiBFZGdlSGVscGVyLmFycm93Ci0gICovCi0gICdhcnJvdyc6IHsKLSAgICAgIC8qCi0gICAgICBNZXRob2Q6IHJlbmRlcgotICAgICAgCi0gICAgICBSZW5kZXJzIGFuIGFycm93IGludG8gdGhlIGNhbnZhcy4KLSAgICAgIAotICAgICAgUGFyYW1ldGVyczoKLSAgICAgIAotICAgICAgZnJvbSAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIHRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgYXJyb3cuCi0gICAgICB0byAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIHRoZSBlbmRpbmcgcG9zaXRpb24gb2YgdGhlIGFycm93LgotICAgICAgZGltIC0gKG51bWJlcikgVGhlIGRpbWVuc2lvbiBvZiB0aGUgYXJyb3cuCi0gICAgICBzd2FwIC0gKGJvb2xlYW4pIFdoZXRoZXIgdG8gc2V0IHRoZSBhcnJvdyBwb2ludGluZyB0byB0aGUgc3RhcnRpbmcgcG9zaXRpb24gb3IgdGhlIGVuZGluZyBwb3NpdGlvbi4KLSAgICAgIGNhbnZhcyAtIChvYmplY3QpIEEgPENhbnZhcz4gaW5zdGFuY2UuCi0gICAgICAKLSAgICAgIEV4YW1wbGU6Ci0gICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgIEVkZ2VIZWxwZXIuYXJyb3cucmVuZGVyKHsgeDogMTAsIHk6IDMwIH0sIHsgeDogMTAsIHk6IDUwIH0sIDEzLCBmYWxzZSwgdml6LmNhbnZhcyk7Ci0gICAgICAoZW5kIGNvZGUpCi0gICAgICAqLwotICAgICdyZW5kZXInOiBmdW5jdGlvbihmcm9tLCB0bywgZGltLCBzd2FwLCBjYW52YXMpewotICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldEN0eCgpOwotICAgICAgICAvLyBpbnZlcnQgZWRnZSBkaXJlY3Rpb24KLSAgICAgICAgaWYgKHN3YXApIHsKLSAgICAgICAgICB2YXIgdG1wID0gZnJvbTsKLSAgICAgICAgICBmcm9tID0gdG87Ci0gICAgICAgICAgdG8gPSB0bXA7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHZlY3QgPSBuZXcgQ29tcGxleCh0by54IC0gZnJvbS54LCB0by55IC0gZnJvbS55KTsKLSAgICAgICAgdmVjdC4kc2NhbGUoZGltIC8gdmVjdC5ub3JtKCkpOwotICAgICAgICB2YXIgaW50ZXJtZWRpYXRlUG9pbnQgPSBuZXcgQ29tcGxleCh0by54IC0gdmVjdC54LCB0by55IC0gdmVjdC55KSwKLSAgICAgICAgICAgIG5vcm1hbCA9IG5ldyBDb21wbGV4KC12ZWN0LnkgLyAyLCB2ZWN0LnggLyAyKSwKLSAgICAgICAgICAgIHYxID0gaW50ZXJtZWRpYXRlUG9pbnQuYWRkKG5vcm1hbCksIAotICAgICAgICAgICAgdjIgPSBpbnRlcm1lZGlhdGVQb2ludC4kYWRkKG5vcm1hbC4kc2NhbGUoLTEpKTsKLSAgICAgICAgCi0gICAgICAgIGN0eC5iZWdpblBhdGgoKTsKLSAgICAgICAgY3R4Lm1vdmVUbyhmcm9tLngsIGZyb20ueSk7Ci0gICAgICAgIGN0eC5saW5lVG8odG8ueCwgdG8ueSk7Ci0gICAgICAgIGN0eC5zdHJva2UoKTsKLSAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICBjdHgubW92ZVRvKHYxLngsIHYxLnkpOwotICAgICAgICBjdHgubGluZVRvKHYyLngsIHYyLnkpOwotICAgICAgICBjdHgubGluZVRvKHRvLngsIHRvLnkpOwotICAgICAgICBjdHguY2xvc2VQYXRoKCk7Ci0gICAgICAgIGN0eC5maWxsKCk7Ci0gICAgfSwKLSAgICAvKgotICAgIE1ldGhvZDogY29udGFpbnMKLSAgICAKLSAgICBSZXR1cm5zICp0cnVlKiBpZiAqcG9zKiBpcyBjb250YWluZWQgaW4gdGhlIGFyZWEgb2YgdGhlIHNoYXBlLiBSZXR1cm5zICpmYWxzZSogb3RoZXJ3aXNlLgotICAgIAotICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgcG9zRnJvbSAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIGEgPEdyYXBoLk5vZGU+IHBvc2l0aW9uLgotICAgIHBvc1RvIC0gKG9iamVjdCkgQW4gKngqLCAqeSogb2JqZWN0IHdpdGggYSA8R3JhcGguTm9kZT4gcG9zaXRpb24uCi0gICAgcG9zIC0gKG9iamVjdCkgQW4gKngqLCAqeSogb2JqZWN0IHdpdGggdGhlIHBvc2l0aW9uIHRvIGNoZWNrLgotICAgIGVwc2lsb24gLSAobnVtYmVyKSBUaGUgZGltZW5zaW9uIG9mIHRoZSBzaGFwZS4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIChzdGFydCBjb2RlIGpzKQotICAgIEVkZ2VIZWxwZXIuYXJyb3cuY29udGFpbnMoeyB4OiAxMCwgeTogMzAgfSwgeyB4OiAxNSwgeTogMzUgfSwgeyB4OiAxNSwgeTogMzUgfSwgMzApOwotICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgICdjb250YWlucyc6IGZ1bmN0aW9uKHBvc0Zyb20sIHBvc1RvLCBwb3MsIGVwc2lsb24pIHsKLSAgICAgIHJldHVybiBFZGdlSGVscGVyLmxpbmUuY29udGFpbnMocG9zRnJvbSwgcG9zVG8sIHBvcywgZXBzaWxvbik7Ci0gICAgfQotICB9LAotICAvKgotICAgIE9iamVjdDogRWRnZUhlbHBlci5oeXBlcmxpbmUKLSAgKi8KLSAgJ2h5cGVybGluZSc6IHsKLSAgICAvKgotICAgIE1ldGhvZDogcmVuZGVyCi0gICAgCi0gICAgUmVuZGVycyBhIGh5cGVybGluZSBpbnRvIHRoZSBjYW52YXMuIEEgaHlwZXJsaW5lIGFyZSB0aGUgbGluZXMgZHJhd24gZm9yIHRoZSA8SHlwZXJ0cmVlPiB2aXN1YWxpemF0aW9uLgotICAgIAotICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgZnJvbSAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIHRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgaHlwZXJsaW5lLiAqeCogYW5kICp5KiBtdXN0IGJlbG9uZyB0byBbMCwgMSkuCi0gICAgdG8gLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCB0aGUgZW5kaW5nIHBvc2l0aW9uIG9mIHRoZSBoeXBlcmxpbmUuICp4KiBhbmQgKnkqIG11c3QgYmVsb25nIHRvIFswLCAxKS4KLSAgICByIC0gKG51bWJlcikgVGhlIHNjYWxpbmcgZmFjdG9yLgotICAgIGNhbnZhcyAtIChvYmplY3QpIEEgPENhbnZhcz4gaW5zdGFuY2UuCi0gICAgCi0gICAgRXhhbXBsZToKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICBFZGdlSGVscGVyLmh5cGVybGluZS5yZW5kZXIoeyB4OiAxMCwgeTogMzAgfSwgeyB4OiAxMCwgeTogNTAgfSwgMTAwLCB2aXouY2FudmFzKTsKLSAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICAncmVuZGVyJzogZnVuY3Rpb24oZnJvbSwgdG8sIHIsIGNhbnZhcyl7Ci0gICAgICB2YXIgY3R4ID0gY2FudmFzLmdldEN0eCgpOyAgCi0gICAgICB2YXIgY2VudGVyT2ZDaXJjbGUgPSBjb21wdXRlQXJjVGhyb3VnaFR3b1BvaW50cyhmcm9tLCB0byk7Ci0gICAgICBpZiAoY2VudGVyT2ZDaXJjbGUuYSA+IDEwMDAgfHwgY2VudGVyT2ZDaXJjbGUuYiA+IDEwMDAKLSAgICAgICAgICB8fCBjZW50ZXJPZkNpcmNsZS5yYXRpbyA8IDApIHsKLSAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICBjdHgubW92ZVRvKGZyb20ueCAqIHIsIGZyb20ueSAqIHIpOwotICAgICAgICBjdHgubGluZVRvKHRvLnggKiByLCB0by55ICogcik7Ci0gICAgICAgIGN0eC5zdHJva2UoKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHZhciBhbmdsZUJlZ2luID0gTWF0aC5hdGFuMih0by55IC0gY2VudGVyT2ZDaXJjbGUueSwgdG8ueAotICAgICAgICAgICAgLSBjZW50ZXJPZkNpcmNsZS54KTsKLSAgICAgICAgdmFyIGFuZ2xlRW5kID0gTWF0aC5hdGFuMihmcm9tLnkgLSBjZW50ZXJPZkNpcmNsZS55LCBmcm9tLngKLSAgICAgICAgICAgIC0gY2VudGVyT2ZDaXJjbGUueCk7Ci0gICAgICAgIHZhciBzZW5zZSA9IHNlbnNlKGFuZ2xlQmVnaW4sIGFuZ2xlRW5kKTsKLSAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICBjdHguYXJjKGNlbnRlck9mQ2lyY2xlLnggKiByLCBjZW50ZXJPZkNpcmNsZS55ICogciwgY2VudGVyT2ZDaXJjbGUucmF0aW8KLSAgICAgICAgICAgICogciwgYW5nbGVCZWdpbiwgYW5nbGVFbmQsIHNlbnNlKTsKLSAgICAgICAgY3R4LnN0cm9rZSgpOwotICAgICAgfQotICAgICAgLyogICAgICAKLSAgICAgICAgQ2FsY3VsYXRlcyB0aGUgYXJjIHBhcmFtZXRlcnMgdGhyb3VnaCB0d28gcG9pbnRzLgotICAgICAgICAKLSAgICAgICAgTW9yZSBpbmZvcm1hdGlvbiBpbiA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qb2luY2FyJUMzJUE5X2Rpc2NfbW9kZWwjQW5hbHl0aWNfZ2VvbWV0cnlfY29uc3RydWN0aW9uc19pbl90aGVfaHlwZXJib2xpY19wbGFuZT4gCi0gICAgICAKLSAgICAgICAgUGFyYW1ldGVyczoKLSAgICAgIAotICAgICAgICBwMSAtIEEgPENvbXBsZXg+IGluc3RhbmNlLgotICAgICAgICBwMiAtIEEgPENvbXBsZXg+IGluc3RhbmNlLgotICAgICAgICBzY2FsZSAtIFRoZSBEaXNrJ3MgZGlhbWV0ZXIuCi0gICAgICAKLSAgICAgICAgUmV0dXJuczoKLSAgICAgIAotICAgICAgICBBbiBvYmplY3QgY29udGFpbmluZyBzb21lIGFyYyBwcm9wZXJ0aWVzLgotICAgICAgKi8KLSAgICAgIGZ1bmN0aW9uIGNvbXB1dGVBcmNUaHJvdWdoVHdvUG9pbnRzKHAxLCBwMil7Ci0gICAgICAgIHZhciBhRGVuID0gKHAxLnggKiBwMi55IC0gcDEueSAqIHAyLngpLCBiRGVuID0gYURlbjsKLSAgICAgICAgdmFyIHNxMSA9IHAxLnNxdWFyZWROb3JtKCksIHNxMiA9IHAyLnNxdWFyZWROb3JtKCk7Ci0gICAgICAgIC8vIEZhbGwgYmFjayB0byBhIHN0cmFpZ2h0IGxpbmUKLSAgICAgICAgaWYgKGFEZW4gPT0gMCkKLSAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgeDogMCwKLSAgICAgICAgICAgIHk6IDAsCi0gICAgICAgICAgICByYXRpbzogLTEKLSAgICAgICAgICB9OwotICAgIAotICAgICAgICB2YXIgYSA9IChwMS55ICogc3EyIC0gcDIueSAqIHNxMSArIHAxLnkgLSBwMi55KSAvIGFEZW47Ci0gICAgICAgIHZhciBiID0gKHAyLnggKiBzcTEgLSBwMS54ICogc3EyICsgcDIueCAtIHAxLngpIC8gYkRlbjsKLSAgICAgICAgdmFyIHggPSAtYSAvIDI7Ci0gICAgICAgIHZhciB5ID0gLWIgLyAyOwotICAgICAgICB2YXIgc3F1YXJlZFJhdGlvID0gKGEgKiBhICsgYiAqIGIpIC8gNCAtIDE7Ci0gICAgICAgIC8vIEZhbGwgYmFjayB0byBhIHN0cmFpZ2h0IGxpbmUKLSAgICAgICAgaWYgKHNxdWFyZWRSYXRpbyA8IDApCi0gICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHg6IDAsCi0gICAgICAgICAgICB5OiAwLAotICAgICAgICAgICAgcmF0aW86IC0xCi0gICAgICAgICAgfTsKLSAgICAgICAgdmFyIHJhdGlvID0gTWF0aC5zcXJ0KHNxdWFyZWRSYXRpbyk7Ci0gICAgICAgIHZhciBvdXQgPSB7Ci0gICAgICAgICAgeDogeCwKLSAgICAgICAgICB5OiB5LAotICAgICAgICAgIHJhdGlvOiByYXRpbyA+IDEwMDA/IC0xIDogcmF0aW8sCi0gICAgICAgICAgYTogYSwKLSAgICAgICAgICBiOiBiCi0gICAgICAgIH07Ci0gICAgCi0gICAgICAgIHJldHVybiBvdXQ7Ci0gICAgICB9Ci0gICAgICAvKiAgICAgIAotICAgICAgICBTZXRzIGFuZ2xlIGRpcmVjdGlvbiB0byBjbG9ja3dpc2UgKHRydWUpIG9yIGNvdW50ZXJjbG9ja3dpc2UgKGZhbHNlKS4gCi0gICAgICAgICAKLSAgICAgICAgUGFyYW1ldGVyczogCi0gICAgICAKLSAgICAgICAgICAgYW5nbGVCZWdpbiAtIFN0YXJ0aW5nIGFuZ2xlIGZvciBkcmF3aW5nIHRoZSBhcmMuIAotICAgICAgICAgICBhbmdsZUVuZCAtIFRoZSBIeXBlckxpbmUgd2lsbCBiZSBkcmF3biBmcm9tIGFuZ2xlQmVnaW4gdG8gYW5nbGVFbmQuIAotICAgICAgCi0gICAgICAgIFJldHVybnM6IAotICAgICAgCi0gICAgICAgICAgIEEgQm9vbGVhbiBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSBzZW5zZSBmb3IgZHJhd2luZyB0aGUgSHlwZXJMaW5lLiAKLSAgICAgICovCi0gICAgICBmdW5jdGlvbiBzZW5zZShhbmdsZUJlZ2luLCBhbmdsZUVuZCl7Ci0gICAgICAgIHJldHVybiAoYW5nbGVCZWdpbiA8IGFuZ2xlRW5kKT8gKChhbmdsZUJlZ2luICsgTWF0aC5QSSA+IGFuZ2xlRW5kKT8gZmFsc2UKLSAgICAgICAgICAgIDogdHJ1ZSkgOiAoKGFuZ2xlRW5kICsgTWF0aC5QSSA+IGFuZ2xlQmVnaW4pPyB0cnVlIDogZmFsc2UpOwotICAgICAgfQotICAgIH0sCi0gICAgLyoKLSAgICBNZXRob2Q6IGNvbnRhaW5zCi0gICAgCi0gICAgTm90IEltcGxlbWVudGVkCi0gICAgCi0gICAgUmV0dXJucyAqdHJ1ZSogaWYgKnBvcyogaXMgY29udGFpbmVkIGluIHRoZSBhcmVhIG9mIHRoZSBzaGFwZS4gUmV0dXJucyAqZmFsc2UqIG90aGVyd2lzZS4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIHBvc0Zyb20gLSAob2JqZWN0KSBBbiAqeCosICp5KiBvYmplY3Qgd2l0aCBhIDxHcmFwaC5Ob2RlPiBwb3NpdGlvbi4KLSAgICBwb3NUbyAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIGEgPEdyYXBoLk5vZGU+IHBvc2l0aW9uLgotICAgIHBvcyAtIChvYmplY3QpIEFuICp4KiwgKnkqIG9iamVjdCB3aXRoIHRoZSBwb3NpdGlvbiB0byBjaGVjay4KLSAgICBlcHNpbG9uIC0gKG51bWJlcikgVGhlIGRpbWVuc2lvbiBvZiB0aGUgc2hhcGUuCi0gICAgCi0gICAgRXhhbXBsZToKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICBFZGdlSGVscGVyLmh5cGVybGluZS5jb250YWlucyh7IHg6IDEwLCB5OiAzMCB9LCB7IHg6IDE1LCB5OiAzNSB9LCB7IHg6IDE1LCB5OiAzNSB9LCAzMCk7Ci0gICAgKGVuZCBjb2RlKQotICAgICovCi0gICAgJ2NvbnRhaW5zJzogJC5sYW1iZGEoZmFsc2UpCi0gIH0KLX07Ci0KLQotLyoKLSAqIEZpbGU6IEdyYXBoLlBsb3QuanMKLSAqLwotCi0vKgotICAgT2JqZWN0OiBHcmFwaC5QbG90Ci0KLSAgIDxHcmFwaD4gcmVuZGVyaW5nIGFuZCBhbmltYXRpb24gbWV0aG9kcy4KLSAgIAotICAgUHJvcGVydGllczoKLSAgIAotICAgbm9kZUhlbHBlciAtIDxOb2RlSGVscGVyPiBvYmplY3QuCi0gICBlZGdlSGVscGVyIC0gPEVkZ2VIZWxwZXI+IG9iamVjdC4KLSovCi1HcmFwaC5QbG90ID0gewotICAgIC8vRGVmYXVsdCBpbml0aWFsaXplcgotICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHZpeiwga2xhc3MpewotICAgICAgdGhpcy52aXogPSB2aXo7Ci0gICAgICB0aGlzLmNvbmZpZyA9IHZpei5jb25maWc7Ci0gICAgICB0aGlzLm5vZGUgPSB2aXouY29uZmlnLk5vZGU7Ci0gICAgICB0aGlzLmVkZ2UgPSB2aXouY29uZmlnLkVkZ2U7Ci0gICAgICB0aGlzLmFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb247Ci0gICAgICB0aGlzLm5vZGVUeXBlcyA9IG5ldyBrbGFzcy5QbG90Lk5vZGVUeXBlczsKLSAgICAgIHRoaXMuZWRnZVR5cGVzID0gbmV3IGtsYXNzLlBsb3QuRWRnZVR5cGVzOwotICAgICAgdGhpcy5sYWJlbHMgPSB2aXoubGFiZWxzOwotICAgfSwKLQotICAgIC8vQWRkIGhlbHBlcnMKLSAgICBub2RlSGVscGVyOiBOb2RlSGVscGVyLAotICAgIGVkZ2VIZWxwZXI6IEVkZ2VIZWxwZXIsCi0gICAgCi0gICAgSW50ZXJwb2xhdG9yOiB7Ci0gICAgICAgIC8vbm9kZS9lZGdlIHByb3BlcnR5IHBhcnNlcnMKLSAgICAgICAgJ21hcCc6IHsKLSAgICAgICAgICAnYm9yZGVyJzogJ2NvbG9yJywKLSAgICAgICAgICAnY29sb3InOiAnY29sb3InLAotICAgICAgICAgICd3aWR0aCc6ICdudW1iZXInLAotICAgICAgICAgICdoZWlnaHQnOiAnbnVtYmVyJywKLSAgICAgICAgICAnZGltJzogJ251bWJlcicsCi0gICAgICAgICAgJ2FscGhhJzogJ251bWJlcicsCi0gICAgICAgICAgJ2xpbmVXaWR0aCc6ICdudW1iZXInLAotICAgICAgICAgICdhbmd1bGFyV2lkdGgnOidudW1iZXInLAotICAgICAgICAgICdzcGFuJzonbnVtYmVyJywKLSAgICAgICAgICAndmFsdWVBcnJheSc6J2FycmF5LW51bWJlcicsCi0gICAgICAgICAgJ2RpbUFycmF5JzonYXJyYXktbnVtYmVyJwotICAgICAgICAgIC8vJ2NvbG9yQXJyYXknOidhcnJheS1jb2xvcicKLSAgICAgICAgfSwKLSAgICAgICAgCi0gICAgICAgIC8vY2FudmFzIHNwZWNpZmljIHBhcnNlcnMKLSAgICAgICAgJ2NhbnZhcyc6IHsKLSAgICAgICAgICAnZ2xvYmFsQWxwaGEnOiAnbnVtYmVyJywKLSAgICAgICAgICAnZmlsbFN0eWxlJzogJ2NvbG9yJywKLSAgICAgICAgICAnc3Ryb2tlU3R5bGUnOiAnY29sb3InLAotICAgICAgICAgICdsaW5lV2lkdGgnOiAnbnVtYmVyJywKLSAgICAgICAgICAnc2hhZG93Qmx1cic6ICdudW1iZXInLAotICAgICAgICAgICdzaGFkb3dDb2xvcic6ICdjb2xvcicsCi0gICAgICAgICAgJ3NoYWRvd09mZnNldFgnOiAnbnVtYmVyJywKLSAgICAgICAgICAnc2hhZG93T2Zmc2V0WSc6ICdudW1iZXInLAotICAgICAgICAgICdtaXRlckxpbWl0JzogJ251bWJlcicKLSAgICAgICAgfSwKLSAgCi0gICAgICAgIC8vbGFiZWwgcGFyc2VycwotICAgICAgICAnbGFiZWwnOiB7Ci0gICAgICAgICAgJ3NpemUnOiAnbnVtYmVyJywKLSAgICAgICAgICAnY29sb3InOiAnY29sb3InCi0gICAgICAgIH0sCi0gIAotICAgICAgICAvL051bWJlciBpbnRlcnBvbGF0b3IKLSAgICAgICAgJ2NvbXB1dGUnOiBmdW5jdGlvbihmcm9tLCB0bywgZGVsdGEpIHsKLSAgICAgICAgICByZXR1cm4gZnJvbSArICh0byAtIGZyb20pICogZGVsdGE7Ci0gICAgICAgIH0sCi0gICAgICAgIAotICAgICAgICAvL1Bvc2l0aW9uIGludGVycG9sYXRvcnMKLSAgICAgICAgJ21vZWJpdXMnOiBmdW5jdGlvbihlbGVtLCBwcm9wcywgZGVsdGEsIHZlY3RvcikgewotICAgICAgICAgIHZhciB2ID0gdmVjdG9yLnNjYWxlKC1kZWx0YSk7ICAKLSAgICAgICAgICBpZih2Lm5vcm0oKSA8IDEpIHsKLSAgICAgICAgICAgICAgdmFyIHggPSB2LngsIHkgPSB2Lnk7Ci0gICAgICAgICAgICAgIHZhciBhbnMgPSBlbGVtLnN0YXJ0UG9zCi0gICAgICAgICAgICAgICAgLmdldGMoKS5tb2ViaXVzVHJhbnNmb3JtYXRpb24odik7Ci0gICAgICAgICAgICAgIGVsZW0ucG9zLnNldGMoYW5zLngsIGFucy55KTsKLSAgICAgICAgICAgICAgdi54ID0geDsgdi55ID0geTsKLSAgICAgICAgICAgIH0gICAgICAgICAgIAotICAgICAgICB9LAotCi0gICAgICAgICdsaW5lYXInOiBmdW5jdGlvbihlbGVtLCBwcm9wcywgZGVsdGEpIHsKLSAgICAgICAgICAgIHZhciBmcm9tID0gZWxlbS5zdGFydFBvcy5nZXRjKHRydWUpOwotICAgICAgICAgICAgdmFyIHRvID0gZWxlbS5lbmRQb3MuZ2V0Yyh0cnVlKTsKLSAgICAgICAgICAgIGVsZW0ucG9zLnNldGModGhpcy5jb21wdXRlKGZyb20ueCwgdG8ueCwgZGVsdGEpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlKGZyb20ueSwgdG8ueSwgZGVsdGEpKTsKLSAgICAgICAgfSwKLQotICAgICAgICAncG9sYXInOiBmdW5jdGlvbihlbGVtLCBwcm9wcywgZGVsdGEpIHsKLSAgICAgICAgICB2YXIgZnJvbSA9IGVsZW0uc3RhcnRQb3MuZ2V0cCh0cnVlKTsKLSAgICAgICAgICB2YXIgdG8gPSBlbGVtLmVuZFBvcy5nZXRwKCk7Ci0gICAgICAgICAgdmFyIGFucyA9IHRvLmludGVycG9sYXRlKGZyb20sIGRlbHRhKTsKLSAgICAgICAgICBlbGVtLnBvcy5zZXRwKGFucy50aGV0YSwgYW5zLnJobyk7Ci0gICAgICAgIH0sCi0gICAgICAgIAotICAgICAgICAvL0dyYXBoJ3MgTm9kZS9FZGdlIGludGVycG9sYXRvcnMKLSAgICAgICAgJ251bWJlcic6IGZ1bmN0aW9uKGVsZW0sIHByb3AsIGRlbHRhLCBnZXR0ZXIsIHNldHRlcikgewotICAgICAgICAgIHZhciBmcm9tID0gZWxlbVtnZXR0ZXJdKHByb3AsICdzdGFydCcpOwotICAgICAgICAgIHZhciB0byA9IGVsZW1bZ2V0dGVyXShwcm9wLCAnZW5kJyk7Ci0gICAgICAgICAgZWxlbVtzZXR0ZXJdKHByb3AsIHRoaXMuY29tcHV0ZShmcm9tLCB0bywgZGVsdGEpKTsKLSAgICAgICAgfSwKLQotICAgICAgICAnY29sb3InOiBmdW5jdGlvbihlbGVtLCBwcm9wLCBkZWx0YSwgZ2V0dGVyLCBzZXR0ZXIpIHsKLSAgICAgICAgICB2YXIgZnJvbSA9ICQuaGV4VG9SZ2IoZWxlbVtnZXR0ZXJdKHByb3AsICdzdGFydCcpKTsKLSAgICAgICAgICB2YXIgdG8gPSAkLmhleFRvUmdiKGVsZW1bZ2V0dGVyXShwcm9wLCAnZW5kJykpOwotICAgICAgICAgIHZhciBjb21wID0gdGhpcy5jb21wdXRlOwotICAgICAgICAgIHZhciB2YWwgPSAkLnJnYlRvSGV4KFtwYXJzZUludChjb21wKGZyb21bMF0sIHRvWzBdLCBkZWx0YSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChjb21wKGZyb21bMV0sIHRvWzFdLCBkZWx0YSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChjb21wKGZyb21bMl0sIHRvWzJdLCBkZWx0YSkpXSk7Ci0gICAgICAgICAgCi0gICAgICAgICAgZWxlbVtzZXR0ZXJdKHByb3AsIHZhbCk7Ci0gICAgICAgIH0sCi0gICAgICAgIAotICAgICAgICAnYXJyYXktbnVtYmVyJzogZnVuY3Rpb24oZWxlbSwgcHJvcCwgZGVsdGEsIGdldHRlciwgc2V0dGVyKSB7Ci0gICAgICAgICAgdmFyIGZyb20gPSBlbGVtW2dldHRlcl0ocHJvcCwgJ3N0YXJ0JyksCi0gICAgICAgICAgICAgIHRvID0gZWxlbVtnZXR0ZXJdKHByb3AsICdlbmQnKSwKLSAgICAgICAgICAgICAgY3VyID0gW107Ci0gICAgICAgICAgZm9yKHZhciBpPTAsIGw9ZnJvbS5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICAgICAgICB2YXIgZnJvbWkgPSBmcm9tW2ldLCB0b2kgPSB0b1tpXTsKLSAgICAgICAgICAgIGlmKGZyb21pLmxlbmd0aCkgewotICAgICAgICAgICAgICBmb3IodmFyIGo9MCwgbGVuPWZyb21pLmxlbmd0aCwgY3VyaT1bXTsgajxsZW47IGorKykgewotICAgICAgICAgICAgICAgIGN1cmkucHVzaCh0aGlzLmNvbXB1dGUoZnJvbWlbal0sIHRvaVtqXSwgZGVsdGEpKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBjdXIucHVzaChjdXJpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGN1ci5wdXNoKHRoaXMuY29tcHV0ZShmcm9taSwgdG9pLCBkZWx0YSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBlbGVtW3NldHRlcl0ocHJvcCwgY3VyKTsKLSAgICAgICAgfSwKLSAgICAgICAgCi0gICAgICAgICdub2RlJzogZnVuY3Rpb24oZWxlbSwgcHJvcHMsIGRlbHRhLCBtYXAsIGdldHRlciwgc2V0dGVyKSB7Ci0gICAgICAgICAgbWFwID0gdGhpc1ttYXBdOwotICAgICAgICAgIGlmKHByb3BzKSB7Ci0gICAgICAgICAgICB2YXIgbGVuID0gcHJvcHMubGVuZ3RoOwotICAgICAgICAgICAgZm9yKHZhciBpPTA7IGk8bGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgdmFyIHBpID0gcHJvcHNbaV07Ci0gICAgICAgICAgICAgIHRoaXNbbWFwW3BpXV0oZWxlbSwgcGksIGRlbHRhLCBnZXR0ZXIsIHNldHRlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvcih2YXIgcGkgaW4gbWFwKSB7Ci0gICAgICAgICAgICAgIHRoaXNbbWFwW3BpXV0oZWxlbSwgcGksIGRlbHRhLCBnZXR0ZXIsIHNldHRlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAKLSAgICAgICAgJ2VkZ2UnOiBmdW5jdGlvbihlbGVtLCBwcm9wcywgZGVsdGEsIG1hcEtleSwgZ2V0dGVyLCBzZXR0ZXIpIHsKLSAgICAgICAgICAgIHZhciBhZGpzID0gZWxlbS5hZGphY2VuY2llczsKLSAgICAgICAgICAgIGZvcih2YXIgaWQgaW4gYWRqcykgdGhpc1snbm9kZSddKGFkanNbaWRdLCBwcm9wcywgZGVsdGEsIG1hcEtleSwgZ2V0dGVyLCBzZXR0ZXIpOwotICAgICAgICB9LAotICAgICAgICAKLSAgICAgICAgJ25vZGUtcHJvcGVydHknOiBmdW5jdGlvbihlbGVtLCBwcm9wcywgZGVsdGEpIHsKLSAgICAgICAgICB0aGlzWydub2RlJ10oZWxlbSwgcHJvcHMsIGRlbHRhLCAnbWFwJywgJ2dldERhdGEnLCAnc2V0RGF0YScpOwotICAgICAgICB9LAotICAgICAgICAKLSAgICAgICAgJ2VkZ2UtcHJvcGVydHknOiBmdW5jdGlvbihlbGVtLCBwcm9wcywgZGVsdGEpIHsKLSAgICAgICAgICB0aGlzWydlZGdlJ10oZWxlbSwgcHJvcHMsIGRlbHRhLCAnbWFwJywgJ2dldERhdGEnLCAnc2V0RGF0YScpOyAgCi0gICAgICAgIH0sCi0KLSAgICAgICAgJ2xhYmVsLXByb3BlcnR5JzogZnVuY3Rpb24oZWxlbSwgcHJvcHMsIGRlbHRhKSB7Ci0gICAgICAgICAgdGhpc1snbm9kZSddKGVsZW0sIHByb3BzLCBkZWx0YSwgJ2xhYmVsJywgJ2dldExhYmVsRGF0YScsICdzZXRMYWJlbERhdGEnKTsKLSAgICAgICAgfSwKLSAgICAgICAgCi0gICAgICAgICdub2RlLXN0eWxlJzogZnVuY3Rpb24oZWxlbSwgcHJvcHMsIGRlbHRhKSB7Ci0gICAgICAgICAgdGhpc1snbm9kZSddKGVsZW0sIHByb3BzLCBkZWx0YSwgJ2NhbnZhcycsICdnZXRDYW52YXNTdHlsZScsICdzZXRDYW52YXNTdHlsZScpOwotICAgICAgICB9LAotICAgICAgICAKLSAgICAgICAgJ2VkZ2Utc3R5bGUnOiBmdW5jdGlvbihlbGVtLCBwcm9wcywgZGVsdGEpIHsKLSAgICAgICAgICB0aGlzWydlZGdlJ10oZWxlbSwgcHJvcHMsIGRlbHRhLCAnY2FudmFzJywgJ2dldENhbnZhc1N0eWxlJywgJ3NldENhbnZhc1N0eWxlJyk7ICAKLSAgICAgICAgfQotICAgIH0sCi0gICAgCi0gIAotICAgIC8qCi0gICAgICAgc2VxdWVuY2UKLSAgICAKLSAgICAgICBJdGVyYXRpdmVseSBwZXJmb3JtcyBhbiBhY3Rpb24gd2hpbGUgcmVmcmVzaGluZyB0aGUgc3RhdGUgb2YgdGhlIHZpc3VhbGl6YXRpb24uCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgb3B0aW9ucyAtIChvYmplY3QpIEFuIG9iamVjdCBjb250YWluaW5nIHNvbWUgc2VxdWVuY2Ugb3B0aW9ucyBkZXNjcmliZWQgYmVsb3cKLSAgICAgICBjb25kaXRpb24gLSAoZnVuY3Rpb24pIEEgZnVuY3Rpb24gcmV0dXJuaW5nIGEgYm9vbGVhbiBpbnN0YW5jZSBpbiBvcmRlciB0byBzdG9wIGl0ZXJhdGlvbnMuCi0gICAgICAgc3RlcCAtIChmdW5jdGlvbikgQSBmdW5jdGlvbiB0byBleGVjdXRlIG9uIGVhY2ggc3RlcCBvZiB0aGUgaXRlcmF0aW9uLgotICAgICAgIG9uQ29tcGxldGUgLSAoZnVuY3Rpb24pIEEgZnVuY3Rpb24gdG8gZXhlY3V0ZSB3aGVuIHRoZSBzZXF1ZW5jZSBmaW5pc2hlcy4KLSAgICAgICBkdXJhdGlvbiAtIChudW1iZXIpIER1cmF0aW9uIChpbiBtaWxsaXNlY29uZHMpIG9mIGVhY2ggc3RlcC4KLQotICAgICAgRXhhbXBsZToKLSAgICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgdmFyIHJnID0gbmV3ICRqaXQuUkdyYXBoKG9wdGlvbnMpOwotICAgICAgICB2YXIgaSA9IDA7Ci0gICAgICAgIHJnLmZ4LnNlcXVlbmNlKHsKLSAgICAgICAgICBjb25kaXRpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAgICByZXR1cm4gaSA9PSAxMDsKLSAgICAgICAgICB9LAotICAgICAgICAgIHN0ZXA6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYWxlcnQoaSsrKTsKLSAgICAgICAgICB9LAotICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICBhbGVydCgnZG9uZSEnKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICAgIChlbmQgY29kZSkKLQotICAgICovCi0gICAgc2VxdWVuY2U6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKLSAgICAgICAgdmFyIHRoYXQgPSB0aGlzOwotICAgICAgICBvcHRpb25zID0gJC5tZXJnZSh7Ci0gICAgICAgICAgY29uZGl0aW9uOiAkLmxhbWJkYShmYWxzZSksCi0gICAgICAgICAgc3RlcDogJC5lbXB0eSwKLSAgICAgICAgICBvbkNvbXBsZXRlOiAkLmVtcHR5LAotICAgICAgICAgIGR1cmF0aW9uOiAyMDAKLSAgICAgICAgfSwgb3B0aW9ucyB8fCB7fSk7Ci0KLSAgICAgICAgdmFyIGludGVydmFsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYob3B0aW9ucy5jb25kaXRpb24oKSkgewotICAgICAgICAgICAgb3B0aW9ucy5zdGVwKCk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOwotICAgICAgICAgICAgb3B0aW9ucy5vbkNvbXBsZXRlKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHRoYXQudml6LnJlZnJlc2godHJ1ZSk7Ci0gICAgICAgIH0sIG9wdGlvbnMuZHVyYXRpb24pOwotICAgIH0sCi0gICAgCi0gICAgLyoKLSAgICAgIHByZXBhcmUKLSAKLSAgICAgIFByZXBhcmUgZ3JhcGggcG9zaXRpb24gYW5kIG90aGVyIGF0dHJpYnV0ZSB2YWx1ZXMgYmVmb3JlIHBlcmZvcm1pbmcgYW4gQW5pbWF0aW9uLiAKLSAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgVG9vbGtpdC4KLSAgICAgIAotICAgICAgU2VlIGFsc286Ci0gICAgICAgCi0gICAgICAgPEFuaW1hdGlvbj4sIDxHcmFwaC5QbG90LmFuaW1hdGU+Ci0KLSAgICAqLwotICAgIHByZXBhcmU6IGZ1bmN0aW9uKG1vZGVzKSB7Ci0gICAgICB2YXIgZ3JhcGggPSB0aGlzLnZpei5ncmFwaCwKLSAgICAgICAgICBhY2Nlc3NvcnMgPSB7Ci0gICAgICAgICAgICAnbm9kZS1wcm9wZXJ0eSc6IHsKLSAgICAgICAgICAgICAgJ2dldHRlcic6ICdnZXREYXRhJywKLSAgICAgICAgICAgICAgJ3NldHRlcic6ICdzZXREYXRhJwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdlZGdlLXByb3BlcnR5JzogewotICAgICAgICAgICAgICAnZ2V0dGVyJzogJ2dldERhdGEnLAotICAgICAgICAgICAgICAnc2V0dGVyJzogJ3NldERhdGEnCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgJ25vZGUtc3R5bGUnOiB7Ci0gICAgICAgICAgICAgICdnZXR0ZXInOiAnZ2V0Q2FudmFzU3R5bGUnLAotICAgICAgICAgICAgICAnc2V0dGVyJzogJ3NldENhbnZhc1N0eWxlJwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdlZGdlLXN0eWxlJzogewotICAgICAgICAgICAgICAnZ2V0dGVyJzogJ2dldENhbnZhc1N0eWxlJywKLSAgICAgICAgICAgICAgJ3NldHRlcic6ICdzZXRDYW52YXNTdHlsZScKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9OwotCi0gICAgICAvL3BhcnNlIG1vZGVzCi0gICAgICB2YXIgbSA9IHt9OwotICAgICAgaWYoJC50eXBlKG1vZGVzKSA9PSAnYXJyYXknKSB7Ci0gICAgICAgIGZvcih2YXIgaT0wLCBsZW49bW9kZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICB2YXIgZWxlbXMgPSBtb2Rlc1tpXS5zcGxpdCgnOicpOwotICAgICAgICAgIG1bZWxlbXMuc2hpZnQoKV0gPSBlbGVtczsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yKHZhciBwIGluIG1vZGVzKSB7Ci0gICAgICAgICAgaWYocCA9PSAncG9zaXRpb24nKSB7Ci0gICAgICAgICAgICBtW21vZGVzLnBvc2l0aW9uXSA9IFtdOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtW3BdID0gJC5zcGxhdChtb2Rlc1twXSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIGdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKG5vZGUpIHsgCi0gICAgICAgIG5vZGUuc3RhcnRQb3Muc2V0KG5vZGUucG9zKTsKLSAgICAgICAgJC5lYWNoKFsnbm9kZS1wcm9wZXJ0eScsICdub2RlLXN0eWxlJ10sIGZ1bmN0aW9uKHApIHsKLSAgICAgICAgICBpZihwIGluIG0pIHsKLSAgICAgICAgICAgIHZhciBwcm9wID0gbVtwXTsKLSAgICAgICAgICAgIGZvcih2YXIgaT0wLCBsPXByb3AubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICAgICAgICAgIG5vZGVbYWNjZXNzb3JzW3BdLnNldHRlcl0ocHJvcFtpXSwgbm9kZVthY2Nlc3NvcnNbcF0uZ2V0dGVyXShwcm9wW2ldKSwgJ3N0YXJ0Jyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgJC5lYWNoKFsnZWRnZS1wcm9wZXJ0eScsICdlZGdlLXN0eWxlJ10sIGZ1bmN0aW9uKHApIHsKLSAgICAgICAgICBpZihwIGluIG0pIHsKLSAgICAgICAgICAgIHZhciBwcm9wID0gbVtwXTsKLSAgICAgICAgICAgIG5vZGUuZWFjaEFkamFjZW5jeShmdW5jdGlvbihhZGopIHsKLSAgICAgICAgICAgICAgZm9yKHZhciBpPTAsIGw9cHJvcC5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgICAgICAgICAgICBhZGpbYWNjZXNzb3JzW3BdLnNldHRlcl0ocHJvcFtpXSwgYWRqW2FjY2Vzc29yc1twXS5nZXR0ZXJdKHByb3BbaV0pLCAnc3RhcnQnKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgIH0pOwotICAgICAgcmV0dXJuIG07Ci0gICAgfSwKLSAgICAKLSAgICAvKgotICAgICAgIE1ldGhvZDogYW5pbWF0ZQotICAgIAotICAgICAgIEFuaW1hdGVzIGEgPEdyYXBoPiBieSBpbnRlcnBvbGF0aW5nIHNvbWUgPEdyYXBoLk5vZGU+LCA8R3JhcGguQWRqYWNlbmNlPiBvciA8R3JhcGguTGFiZWw+IHByb3BlcnRpZXMuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgb3B0IC0gKG9iamVjdCkgQW5pbWF0aW9uIG9wdGlvbnMuIFRoZSBvYmplY3QgcHJvcGVydGllcyBhcmUgZGVzY3JpYmVkIGJlbG93Ci0gICAgICAgZHVyYXRpb24gLSAob3B0aW9uYWwpIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5GeD4uCi0gICAgICAgZnBzIC0gKG9wdGlvbmFsKSBEZXNjcmliZWQgaW4gPE9wdGlvbnMuRng+LgotICAgICAgIGhpZGVMYWJlbHMgLSAob3B0aW9uYWx8Ym9vbGVhbikgV2hldGhlciB0byBoaWRlIGxhYmVscyBkdXJpbmcgdGhlIGFuaW1hdGlvbi4KLSAgICAgICBtb2RlcyAtIChyZXF1aXJlZHxvYmplY3QpIEFuIG9iamVjdCB3aXRoIGFuaW1hdGlvbiBtb2RlcyAoZGVzY3JpYmVkIGJlbG93KS4KLQotICAgICAgIEFuaW1hdGlvbiBtb2RlczoKLSAgICAgICAKLSAgICAgICBBbmltYXRpb24gbW9kZXMgYXJlIHN0cmluZ3MgcmVwcmVzZW50aW5nIGRpZmZlcmVudCBub2RlL2VkZ2UgYW5kIGdyYXBoIHByb3BlcnRpZXMgdGhhdCB5b3UnZCBsaWtlIHRvIGFuaW1hdGUuIAotICAgICAgIFRoZXkgYXJlIHJlcHJlc2VudGVkIGJ5IGFuIG9iamVjdCB0aGF0IGhhcyBhcyBrZXlzIG1haW4gY2F0ZWdvcmllcyBvZiBwcm9wZXJ0aWVzIHRvIGFuaW1hdGUgYW5kIGFzIHZhbHVlcyBhIGxpc3QgCi0gICAgICAgb2YgdGhlc2Ugc3BlY2lmaWMgcHJvcGVydGllcy4gVGhlIHByb3BlcnRpZXMgYXJlIGRlc2NyaWJlZCBiZWxvdwotICAgICAgIAotICAgICAgIHBvc2l0aW9uIC0gRGVzY3JpYmVzIHRoZSB3YXkgbm9kZXMnIHBvc2l0aW9ucyBtdXN0IGJlIGludGVycG9sYXRlZC4gUG9zc2libGUgdmFsdWVzIGFyZSAnbGluZWFyJywgJ3BvbGFyJyBvciAnbW9lYml1cycuCi0gICAgICAgbm9kZS1wcm9wZXJ0eSAtIERlc2NyaWJlcyB3aGljaCBOb2RlIHByb3BlcnRpZXMgd2lsbCBiZSBpbnRlcnBvbGF0ZWQuIFRoZXNlIHByb3BlcnRpZXMgY2FuIGJlIGFueSBvZiB0aGUgb25lcyBkZWZpbmVkIGluIDxPcHRpb25zLk5vZGU+LgotICAgICAgIGVkZ2UtcHJvcGVydHkgLSBEZXNjcmliZXMgd2hpY2ggRWRnZSBwcm9wZXJ0aWVzIHdpbGwgYmUgaW50ZXJwb2xhdGVkLiBUaGVzZSBwcm9wZXJ0aWVzIGNhbiBiZSBhbnkgdGhlIG9uZXMgZGVmaW5lZCBpbiA8T3B0aW9ucy5FZGdlPi4KLSAgICAgICBsYWJlbC1wcm9wZXJ0eSAtIERlc2NyaWJlcyB3aGljaCBMYWJlbCBwcm9wZXJ0aWVzIHdpbGwgYmUgaW50ZXJwb2xhdGVkLiBUaGVzZSBwcm9wZXJ0aWVzIGNhbiBiZSBhbnkgb2YgdGhlIG9uZXMgZGVmaW5lZCBpbiA8T3B0aW9ucy5MYWJlbD4gbGlrZSBjb2xvciBvciBzaXplLgotICAgICAgIG5vZGUtc3R5bGUgLSBEZXNjcmliZXMgd2hpY2ggTm9kZSBDYW52YXMgU3R5bGVzIHdpbGwgYmUgaW50ZXJwb2xhdGVkLiBUaGVzZSBhcmUgc3BlY2lmaWMgY2FudmFzIHByb3BlcnRpZXMgbGlrZSBmaWxsU3R5bGUsIHN0cm9rZVN0eWxlLCBsaW5lV2lkdGgsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZLCBldGMuCi0gICAgICAgZWRnZS1zdHlsZSAtIERlc2NyaWJlcyB3aGljaCBFZGdlIENhbnZhcyBTdHlsZXMgd2lsbCBiZSBpbnRlcnBvbGF0ZWQuIFRoZXNlIGFyZSBzcGVjaWZpYyBjYW52YXMgcHJvcGVydGllcyBsaWtlIGZpbGxTdHlsZSwgc3Ryb2tlU3R5bGUsIGxpbmVXaWR0aCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFksIGV0Yy4KLQotICAgICAgIEV4YW1wbGU6Ci0gICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgdmFyIHZpeiA9IG5ldyAkaml0LlZpeihvcHRpb25zKTsKLSAgICAgICAvLy4uLnR3ZWFrIHNvbWUgRGF0YSwgQ2FudmFzU3R5bGVzIG9yIExhYmVsRGF0YSBwcm9wZXJ0aWVzLi4uCi0gICAgICAgdml6LmZ4LmFuaW1hdGUoewotICAgICAgICAgbW9kZXM6IHsKLSAgICAgICAgICAgJ3Bvc2l0aW9uJzogJ2xpbmVhcicsCi0gICAgICAgICAgICdub2RlLXByb3BlcnR5JzogWyd3aWR0aCcsICdoZWlnaHQnXSwKLSAgICAgICAgICAgJ25vZGUtc3R5bGUnOiAnc2hhZG93Q29sb3InLAotICAgICAgICAgICAnbGFiZWwtcHJvcGVydHknOiAnc2l6ZScKLSAgICAgICAgIH0sCi0gICAgICAgICBoaWRlTGFiZWxzOiBmYWxzZQotICAgICAgIH0pOwotICAgICAgIC8vLi4uY2FuIGFsc28gYmUgd3JpdHRlbiBsaWtlIHRoaXMuLi4KLSAgICAgICB2aXouZnguYW5pbWF0ZSh7Ci0gICAgICAgICBtb2RlczogWydsaW5lYXInLAotICAgICAgICAgICAgICAgICAnbm9kZS1wcm9wZXJ0eTp3aWR0aDpoZWlnaHQnLAotICAgICAgICAgICAgICAgICAnbm9kZS1zdHlsZTpzaGFkb3dDb2xvcicsCi0gICAgICAgICAgICAgICAgICdsYWJlbC1wcm9wZXJ0eTpzaXplJ10sCi0gICAgICAgICBoaWRlTGFiZWxzOiBmYWxzZQotICAgICAgIH0pOwotICAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGFuaW1hdGU6IGZ1bmN0aW9uKG9wdCwgdmVyc29yKSB7Ci0gICAgICBvcHQgPSAkLm1lcmdlKHRoaXMudml6LmNvbmZpZywgb3B0IHx8IHt9KTsKLSAgICAgIHZhciB0aGF0ID0gdGhpcywKLSAgICAgICAgICB2aXogPSB0aGlzLnZpeiwKLSAgICAgICAgICBncmFwaCAgPSB2aXouZ3JhcGgsCi0gICAgICAgICAgaW50ZXJwID0gdGhpcy5JbnRlcnBvbGF0b3IsCi0gICAgICAgICAgYW5pbWF0aW9uID0gIG9wdC50eXBlID09PSAnbm9kZWZ4Jz8gdGhpcy5ub2RlRnhBbmltYXRpb24gOiB0aGlzLmFuaW1hdGlvbjsKLSAgICAgIC8vcHJlcGFyZSBncmFwaCB2YWx1ZXMKLSAgICAgIHZhciBtID0gdGhpcy5wcmVwYXJlKG9wdC5tb2Rlcyk7Ci0gICAgICAKLSAgICAgIC8vYW5pbWF0ZQotICAgICAgaWYob3B0LmhpZGVMYWJlbHMpIHRoaXMubGFiZWxzLmhpZGVMYWJlbHModHJ1ZSk7Ci0gICAgICBhbmltYXRpb24uc2V0T3B0aW9ucygkLmV4dGVuZChvcHQsIHsKLSAgICAgICAgJGFuaW1hdGluZzogZmFsc2UsCi0gICAgICAgIGNvbXB1dGU6IGZ1bmN0aW9uKGRlbHRhKSB7Ci0gICAgICAgICAgZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obm9kZSkgeyAKLSAgICAgICAgICAgIGZvcih2YXIgcCBpbiBtKSB7Ci0gICAgICAgICAgICAgIGludGVycFtwXShub2RlLCBtW3BdLCBkZWx0YSwgdmVyc29yKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgICAgICB0aGF0LnBsb3Qob3B0LCB0aGlzLiRhbmltYXRpbmcsIGRlbHRhKTsKLSAgICAgICAgICB0aGlzLiRhbmltYXRpbmcgPSB0cnVlOwotICAgICAgICB9LAotICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYob3B0LmhpZGVMYWJlbHMpIHRoYXQubGFiZWxzLmhpZGVMYWJlbHMoZmFsc2UpOwotICAgICAgICAgIHRoYXQucGxvdChvcHQpOwotICAgICAgICAgIG9wdC5vbkNvbXBsZXRlKCk7Ci0gICAgICAgICAgLy9UT0RPKG5pY28pOiBUaGlzIHNob3VsZG4ndCBiZSBoZXJlIQotICAgICAgICAgIC8vb3B0Lm9uQWZ0ZXJDb21wdXRlKCk7Ci0gICAgICAgIH0gICAgICAgCi0gICAgICB9KSkuc3RhcnQoKTsKLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICBub2RlRngKLSAgIAotICAgICAgQXBwbHkgYW5pbWF0aW9uIHRvIG5vZGUgcHJvcGVydGllcyBsaWtlIGNvbG9yLCB3aWR0aCwgaGVpZ2h0LCBkaW0sIGV0Yy4KLSAgCi0gICAgICBQYXJhbWV0ZXJzOgotICAKLSAgICAgIG9wdGlvbnMgLSBBbmltYXRpb24gb3B0aW9ucy4gVGhpcyBvYmplY3QgcHJvcGVydGllcyBpcyBkZXNjcmliZWQgYmVsb3cKLSAgICAgIGVsZW1lbnRzIC0gVGhlIEVsZW1lbnRzIHRvIGJlIHRyYW5zZm9ybWVkLiBUaGlzIGlzIGFuIG9iamVjdCB0aGF0IGhhcyBhIHByb3BlcnRpZXMKLSAgICAgIAotICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAnZWxlbWVudHMnOiB7Ci0gICAgICAgIC8vY2FuIGFsc28gYmUgYW4gYXJyYXkgb2YgaWRzCi0gICAgICAgICdpZCc6ICdpZC1vZi1ub2RlLXRvLXRyYW5zZm9ybScsCi0gICAgICAgIC8vcHJvcGVydGllcyB0byBiZSBtb2RpZmllZC4gQWxsIHByb3BlcnRpZXMgYXJlIG9wdGlvbmFsLgotICAgICAgICAncHJvcGVydGllcyc6IHsKLSAgICAgICAgICAnY29sb3InOiAnI2NjYycsIC8vc29tZSBjb2xvcgotICAgICAgICAgICd3aWR0aCc6IDEwLCAvL3NvbWUgd2lkdGgKLSAgICAgICAgICAnaGVpZ2h0JzogMTAsIC8vc29tZSBoZWlnaHQKLSAgICAgICAgICAnZGltJzogMjAsIC8vc29tZSBkaW0KLSAgICAgICAgICAnbGluZVdpZHRoJzogMTAgLy9zb21lIGxpbmUgd2lkdGgKLSAgICAgICAgfSAKLSAgICAgIH0KLSAgICAgIChlbmQgY29kZSkKLSAgICAgIAotICAgICAgLSBfcmVwb3NpdGlvbl8gV2hldGhlciB0byByZWNhbGN1bGF0ZSBwb3NpdGlvbnMgYW5kIGFkZCBhIG1vdGlvbiBhbmltYXRpb24uIAotICAgICAgVGhpcyBtaWdodCBiZSB1c2VkIHdoZW4gY2hhbmdpbmcgX3dpZHRoXyBvciBfaGVpZ2h0XyBwcm9wZXJ0aWVzIGluIGEgPExheW91dHMuVHJlZT4gbGlrZSBsYXlvdXQuIERlZmF1bHQncyAqZmFsc2UqLgotICAgICAgCi0gICAgICAtIF9vbkNvbXBsZXRlXyBBIG1ldGhvZCB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBhbmltYXRpb24gY29tcGxldGVzLgotICAgICAgCi0gICAgICAuLi5hbmQgYWxsIG90aGVyIDxHcmFwaC5QbG90LmFuaW1hdGU+IG9wdGlvbnMgbGlrZSBfZHVyYXRpb25fLCBfZnBzXywgX3RyYW5zaXRpb25fLCBldGMuCi0gIAotICAgICAgRXhhbXBsZToKLSAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgIHZhciByZyA9IG5ldyBSR3JhcGgoY2FudmFzLCBjb25maWcpOyAvL2NhbiBiZSBhbHNvIEh5cGVydHJlZSBvciBTVAotICAgICAgIHJnLmZ4Lm5vZGVGeCh7Ci0gICAgICAgICAnZWxlbWVudHMnOiB7Ci0gICAgICAgICAgICdpZCc6J215bm9kZWlkJywKLSAgICAgICAgICAgJ3Byb3BlcnRpZXMnOiB7Ci0gICAgICAgICAgICAgJ2NvbG9yJzonI2NjZicKLSAgICAgICAgICAgfSwKLSAgICAgICAgICAgJ3RyYW5zaXRpb24nOiBUcmFucy5RdWFydC5lYXNlT3V0Ci0gICAgICAgICB9Ci0gICAgICAgfSk7Ci0gICAgICAoZW5kIGNvZGUpICAgIAotICAgKi8KLSAgIG5vZGVGeDogZnVuY3Rpb24ob3B0KSB7Ci0gICAgIHZhciB2aXogPSB0aGlzLnZpeiwKLSAgICAgICAgIGdyYXBoICA9IHZpei5ncmFwaCwKLSAgICAgICAgIGFuaW1hdGlvbiA9IHRoaXMubm9kZUZ4QW5pbWF0aW9uLAotICAgICAgICAgb3B0aW9ucyA9ICQubWVyZ2UodGhpcy52aXouY29uZmlnLCB7Ci0gICAgICAgICAgICdlbGVtZW50cyc6IHsKLSAgICAgICAgICAgICAnaWQnOiBmYWxzZSwKLSAgICAgICAgICAgICAncHJvcGVydGllcyc6IHt9Ci0gICAgICAgICAgIH0sCi0gICAgICAgICAgICdyZXBvc2l0aW9uJzogZmFsc2UKLSAgICAgICAgIH0pOwotICAgICBvcHQgPSAkLm1lcmdlKG9wdGlvbnMsIG9wdCB8fCB7fSwgewotICAgICAgIG9uQmVmb3JlQ29tcHV0ZTogJC5lbXB0eSwKLSAgICAgICBvbkFmdGVyQ29tcHV0ZTogJC5lbXB0eQotICAgICB9KTsKLSAgICAgLy9jaGVjayBpZiBhbiBhbmltYXRpb24gaXMgcnVubmluZwotICAgICBhbmltYXRpb24uc3RvcFRpbWVyKCk7Ci0gICAgIHZhciBwcm9wcyA9IG9wdC5lbGVtZW50cy5wcm9wZXJ0aWVzOwotICAgICAvL3NldCBlbmQgdmFsdWVzIGZvciBub2RlcwotICAgICBpZighb3B0LmVsZW1lbnRzLmlkKSB7Ci0gICAgICAgZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgewotICAgICAgICAgZm9yKHZhciBwcm9wIGluIHByb3BzKSB7Ci0gICAgICAgICAgIG4uc2V0RGF0YShwcm9wLCBwcm9wc1twcm9wXSwgJ2VuZCcpOwotICAgICAgICAgfQotICAgICAgIH0pOwotICAgICB9IGVsc2UgewotICAgICAgIHZhciBpZHMgPSAkLnNwbGF0KG9wdC5lbGVtZW50cy5pZCk7Ci0gICAgICAgJC5lYWNoKGlkcywgZnVuY3Rpb24oaWQpIHsKLSAgICAgICAgIHZhciBuID0gZ3JhcGguZ2V0Tm9kZShpZCk7Ci0gICAgICAgICBpZihuKSB7Ci0gICAgICAgICAgIGZvcih2YXIgcHJvcCBpbiBwcm9wcykgewotICAgICAgICAgICAgIG4uc2V0RGF0YShwcm9wLCBwcm9wc1twcm9wXSwgJ2VuZCcpOwotICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgfSk7Ci0gICAgIH0KLSAgICAgLy9nZXQga2V5cwotICAgICB2YXIgcHJvcG5hbWVzID0gW107Ci0gICAgIGZvcih2YXIgcHJvcCBpbiBwcm9wcykgcHJvcG5hbWVzLnB1c2gocHJvcCk7Ci0gICAgIC8vYWRkIG5vZGUgcHJvcGVydGllcyBtb2RlcwotICAgICB2YXIgbW9kZXMgPSBbJ25vZGUtcHJvcGVydHk6JyArIHByb3BuYW1lcy5qb2luKCc6JyldOwotICAgICAvL3NldCBuZXcgbm9kZSBwb3NpdGlvbnMKLSAgICAgaWYob3B0LnJlcG9zaXRpb24pIHsKLSAgICAgICBtb2Rlcy5wdXNoKCdsaW5lYXInKTsKLSAgICAgICB2aXouY29tcHV0ZSgnZW5kJyk7Ci0gICAgIH0KLSAgICAgLy9hbmltYXRlCi0gICAgIHRoaXMuYW5pbWF0ZSgkLm1lcmdlKG9wdCwgewotICAgICAgIG1vZGVzOiBtb2RlcywKLSAgICAgICB0eXBlOiAnbm9kZWZ4JwotICAgICB9KSk7Ci0gICB9LAotCi0gICAgCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IHBsb3QKLSAgICAKLSAgICAgICBQbG90cyBhIDxHcmFwaD4uCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgb3B0IC0gKG9wdGlvbmFsKSBQbG90dGluZyBvcHRpb25zLiBNb3N0IG9mIHRoZW0gYXJlIGRlc2NyaWJlZCBpbiA8T3B0aW9ucy5GeD4uCi0KLSAgICAgICBFeGFtcGxlOgotCi0gICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgdmFyIHZpeiA9IG5ldyAkaml0LlZpeihvcHRpb25zKTsKLSAgICAgICB2aXouZngucGxvdCgpOyAKLSAgICAgICAoZW5kIGNvZGUpCi0KLSAgICAqLwotICAgcGxvdDogZnVuY3Rpb24ob3B0LCBhbmltYXRpbmcpIHsKLSAgICAgdmFyIHZpeiA9IHRoaXMudml6LCAKLSAgICAgICAgIGFHcmFwaCA9IHZpei5ncmFwaCwgCi0gICAgICAgICBjYW52YXMgPSB2aXouY2FudmFzLCAKLSAgICAgICAgIGlkID0gdml6LnJvb3QsIAotICAgICAgICAgdGhhdCA9IHRoaXMsIAotICAgICAgICAgY3R4ID0gY2FudmFzLmdldEN0eCgpLCAKLSAgICAgICAgIG1pbiA9IE1hdGgubWluLAotICAgICAgICAgb3B0ID0gb3B0IHx8IHRoaXMudml6LmNvbnRyb2xsZXI7Ci0gICAgIAotICAgICBvcHQuY2xlYXJDYW52YXMgJiYgY2FudmFzLmNsZWFyKCk7Ci0gICAgICAgCi0gICAgIHZhciByb290ID0gYUdyYXBoLmdldE5vZGUoaWQpOwotICAgICBpZighcm9vdCkgcmV0dXJuOwotICAgICAKLSAgICAgdmFyIFQgPSAhIXJvb3QudmlzaXRlZDsKLSAgICAgYUdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICB2YXIgbm9kZUFscGhhID0gbm9kZS5nZXREYXRhKCdhbHBoYScpOwotICAgICAgIG5vZGUuZWFjaEFkamFjZW5jeShmdW5jdGlvbihhZGopIHsKLSAgICAgICAgIHZhciBub2RlVG8gPSBhZGoubm9kZVRvOwotICAgICAgICAgaWYoISFub2RlVG8udmlzaXRlZCA9PT0gVCAmJiBub2RlLmRyYXduICYmIG5vZGVUby5kcmF3bikgewotICAgICAgICAgICAhYW5pbWF0aW5nICYmIG9wdC5vbkJlZm9yZVBsb3RMaW5lKGFkaik7Ci0gICAgICAgICAgIHRoYXQucGxvdExpbmUoYWRqLCBjYW52YXMsIGFuaW1hdGluZyk7Ci0gICAgICAgICAgICFhbmltYXRpbmcgJiYgb3B0Lm9uQWZ0ZXJQbG90TGluZShhZGopOwotICAgICAgICAgfQotICAgICAgIH0pOwotICAgICAgIGlmKG5vZGUuZHJhd24pIHsKLSAgICAgICAgICFhbmltYXRpbmcgJiYgb3B0Lm9uQmVmb3JlUGxvdE5vZGUobm9kZSk7Ci0gICAgICAgICB0aGF0LnBsb3ROb2RlKG5vZGUsIGNhbnZhcywgYW5pbWF0aW5nKTsKLSAgICAgICAgICFhbmltYXRpbmcgJiYgb3B0Lm9uQWZ0ZXJQbG90Tm9kZShub2RlKTsKLSAgICAgICB9Ci0gICAgICAgaWYoIXRoYXQubGFiZWxzSGlkZGVuICYmIG9wdC53aXRoTGFiZWxzKSB7Ci0gICAgICAgICBpZihub2RlLmRyYXduICYmIG5vZGVBbHBoYSA+PSAwLjk1KSB7Ci0gICAgICAgICAgIHRoYXQubGFiZWxzLnBsb3RMYWJlbChjYW52YXMsIG5vZGUsIG9wdCk7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICB0aGF0LmxhYmVscy5oaWRlTGFiZWwobm9kZSwgZmFsc2UpOwotICAgICAgICAgfQotICAgICAgIH0KLSAgICAgICBub2RlLnZpc2l0ZWQgPSAhVDsKLSAgICAgfSk7Ci0gICAgfSwKLQotICAvKgotICAgICAgUGxvdHMgYSBTdWJ0cmVlLgotICAgKi8KLSAgIHBsb3RUcmVlOiBmdW5jdGlvbihub2RlLCBvcHQsIGFuaW1hdGluZykgewotICAgICAgIHZhciB0aGF0ID0gdGhpcywgCi0gICAgICAgdml6ID0gdGhpcy52aXosIAotICAgICAgIGNhbnZhcyA9IHZpei5jYW52YXMsCi0gICAgICAgY29uZmlnID0gdGhpcy5jb25maWcsCi0gICAgICAgY3R4ID0gY2FudmFzLmdldEN0eCgpOwotICAgICAgIHZhciBub2RlQWxwaGEgPSBub2RlLmdldERhdGEoJ2FscGhhJyk7Ci0gICAgICAgbm9kZS5lYWNoU3Vibm9kZShmdW5jdGlvbihlbGVtKSB7Ci0gICAgICAgICBpZihvcHQucGxvdFN1YnRyZWUobm9kZSwgZWxlbSkgJiYgZWxlbS5leGlzdCAmJiBlbGVtLmRyYXduKSB7Ci0gICAgICAgICAgICAgdmFyIGFkaiA9IG5vZGUuZ2V0QWRqYWNlbmN5KGVsZW0uaWQpOwotICAgICAgICAgICAgICFhbmltYXRpbmcgJiYgb3B0Lm9uQmVmb3JlUGxvdExpbmUoYWRqKTsKLSAgICAgICAgICAgICB0aGF0LnBsb3RMaW5lKGFkaiwgY2FudmFzLCBhbmltYXRpbmcpOwotICAgICAgICAgICAgICFhbmltYXRpbmcgJiYgb3B0Lm9uQWZ0ZXJQbG90TGluZShhZGopOwotICAgICAgICAgICAgIHRoYXQucGxvdFRyZWUoZWxlbSwgb3B0LCBhbmltYXRpbmcpOwotICAgICAgICAgfQotICAgICAgIH0pOwotICAgICAgIGlmKG5vZGUuZHJhd24pIHsKLSAgICAgICAgICAgIWFuaW1hdGluZyAmJiBvcHQub25CZWZvcmVQbG90Tm9kZShub2RlKTsKLSAgICAgICAgICAgdGhpcy5wbG90Tm9kZShub2RlLCBjYW52YXMsIGFuaW1hdGluZyk7Ci0gICAgICAgICAgICFhbmltYXRpbmcgJiYgb3B0Lm9uQWZ0ZXJQbG90Tm9kZShub2RlKTsKLSAgICAgICAgICAgaWYoIW9wdC5oaWRlTGFiZWxzICYmIG9wdC53aXRoTGFiZWxzICYmIG5vZGVBbHBoYSA+PSAwLjk1KSAKLSAgICAgICAgICAgICAgIHRoaXMubGFiZWxzLnBsb3RMYWJlbChjYW52YXMsIG5vZGUsIG9wdCk7Ci0gICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICAgICB0aGlzLmxhYmVscy5oaWRlTGFiZWwobm9kZSwgZmFsc2UpOwotICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIHRoaXMubGFiZWxzLmhpZGVMYWJlbChub2RlLCB0cnVlKTsKLSAgICAgICB9Ci0gICB9LAotCi0gIC8qCi0gICAgICAgTWV0aG9kOiBwbG90Tm9kZQotICAgIAotICAgICAgIFBsb3RzIGEgPEdyYXBoLk5vZGU+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLSAgICAgICAKLSAgICAgICBub2RlIC0gKG9iamVjdCkgQSA8R3JhcGguTm9kZT4uCi0gICAgICAgY2FudmFzIC0gKG9iamVjdCkgQSA8Q2FudmFzPiBlbGVtZW50LgotCi0gICAgKi8KLSAgICBwbG90Tm9kZTogZnVuY3Rpb24obm9kZSwgY2FudmFzLCBhbmltYXRpbmcpIHsKLSAgICAgICAgdmFyIGYgPSBub2RlLmdldERhdGEoJ3R5cGUnKSwgCi0gICAgICAgICAgICBjdHhPYmogPSB0aGlzLm5vZGUuQ2FudmFzU3R5bGVzOwotICAgICAgICBpZihmICE9ICdub25lJykgewotICAgICAgICAgIHZhciB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnbGluZVdpZHRoJyksCi0gICAgICAgICAgICAgIGNvbG9yID0gbm9kZS5nZXREYXRhKCdjb2xvcicpLAotICAgICAgICAgICAgICBhbHBoYSA9IG5vZGUuZ2V0RGF0YSgnYWxwaGEnKSwKLSAgICAgICAgICAgICAgY3R4ID0gY2FudmFzLmdldEN0eCgpOwotICAgICAgICAgIGN0eC5zYXZlKCk7Ci0gICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IHdpZHRoOwotICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBjdHguc3Ryb2tlU3R5bGUgPSBjb2xvcjsKLSAgICAgICAgICBjdHguZ2xvYmFsQWxwaGEgPSBhbHBoYTsKLSAgICAgICAgICAKLSAgICAgICAgICBmb3IodmFyIHMgaW4gY3R4T2JqKSB7Ci0gICAgICAgICAgICBjdHhbc10gPSBub2RlLmdldENhbnZhc1N0eWxlKHMpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHRoaXMubm9kZVR5cGVzW2ZdLnJlbmRlci5jYWxsKHRoaXMsIG5vZGUsIGNhbnZhcywgYW5pbWF0aW5nKTsKLSAgICAgICAgICBjdHgucmVzdG9yZSgpOwotICAgICAgICB9Ci0gICAgfSwKLSAgICAKLSAgICAvKgotICAgICAgIE1ldGhvZDogcGxvdExpbmUKLSAgICAKLSAgICAgICBQbG90cyBhIDxHcmFwaC5BZGphY2VuY2U+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIGFkaiAtIChvYmplY3QpIEEgPEdyYXBoLkFkamFjZW5jZT4uCi0gICAgICAgY2FudmFzIC0gKG9iamVjdCkgQSA8Q2FudmFzPiBpbnN0YW5jZS4KLQotICAgICovCi0gICAgcGxvdExpbmU6IGZ1bmN0aW9uKGFkaiwgY2FudmFzLCBhbmltYXRpbmcpIHsKLSAgICAgIHZhciBmID0gYWRqLmdldERhdGEoJ3R5cGUnKSwKLSAgICAgICAgICBjdHhPYmogPSB0aGlzLmVkZ2UuQ2FudmFzU3R5bGVzOwotICAgICAgaWYoZiAhPSAnbm9uZScpIHsKLSAgICAgICAgdmFyIHdpZHRoID0gYWRqLmdldERhdGEoJ2xpbmVXaWR0aCcpLAotICAgICAgICAgICAgY29sb3IgPSBhZGouZ2V0RGF0YSgnY29sb3InKSwKLSAgICAgICAgICAgIGN0eCA9IGNhbnZhcy5nZXRDdHgoKSwKLSAgICAgICAgICAgIG5vZGVGcm9tID0gYWRqLm5vZGVGcm9tLAotICAgICAgICAgICAgbm9kZVRvID0gYWRqLm5vZGVUbzsKLSAgICAgICAgCi0gICAgICAgIGN0eC5zYXZlKCk7Ci0gICAgICAgIGN0eC5saW5lV2lkdGggPSB3aWR0aDsKLSAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yOwotICAgICAgICBjdHguZ2xvYmFsQWxwaGEgPSBNYXRoLm1pbihub2RlRnJvbS5nZXREYXRhKCdhbHBoYScpLCAKLSAgICAgICAgICAgIG5vZGVUby5nZXREYXRhKCdhbHBoYScpLCAKLSAgICAgICAgICAgIGFkai5nZXREYXRhKCdhbHBoYScpKTsKLSAgICAgICAgCi0gICAgICAgIGZvcih2YXIgcyBpbiBjdHhPYmopIHsKLSAgICAgICAgICBjdHhbc10gPSBhZGouZ2V0Q2FudmFzU3R5bGUocyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmVkZ2VUeXBlc1tmXS5yZW5kZXIuY2FsbCh0aGlzLCBhZGosIGNhbnZhcywgYW5pbWF0aW5nKTsKLSAgICAgICAgY3R4LnJlc3RvcmUoKTsKLSAgICAgIH0KLSAgICB9ICAgIAotICAKLX07Ci0KLS8qCi0gIE9iamVjdDogR3JhcGguUGxvdDNECi0gIAotICA8R3JhcGg+IDNEIHJlbmRlcmluZyBhbmQgYW5pbWF0aW9uIG1ldGhvZHMuCi0gIAotICBQcm9wZXJ0aWVzOgotICAKLSAgbm9kZUhlbHBlciAtIDxOb2RlSGVscGVyPiBvYmplY3QuCi0gIGVkZ2VIZWxwZXIgLSA8RWRnZUhlbHBlcj4gb2JqZWN0LgotCi0qLwotR3JhcGguUGxvdDNEID0gJC5tZXJnZShHcmFwaC5QbG90LCB7Ci0gIEludGVycG9sYXRvcjogewotICAgICdsaW5lYXInOiBmdW5jdGlvbihlbGVtLCBwcm9wcywgZGVsdGEpIHsKLSAgICAgIHZhciBmcm9tID0gZWxlbS5zdGFydFBvcy5nZXRjKHRydWUpOwotICAgICAgdmFyIHRvID0gZWxlbS5lbmRQb3MuZ2V0Yyh0cnVlKTsKLSAgICAgIGVsZW0ucG9zLnNldGModGhpcy5jb21wdXRlKGZyb20ueCwgdG8ueCwgZGVsdGEpLCAKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlKGZyb20ueSwgdG8ueSwgZGVsdGEpLAotICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGUoZnJvbS56LCB0by56LCBkZWx0YSkpOwotICAgIH0KLSAgfSwKLSAgCi0gIHBsb3ROb2RlOiBmdW5jdGlvbihub2RlLCBjYW52YXMpIHsKLSAgICBpZihub2RlLmdldERhdGEoJ3R5cGUnKSA9PSAnbm9uZScpIHJldHVybjsKLSAgICB0aGlzLnBsb3RFbGVtZW50KG5vZGUsIGNhbnZhcywgewotICAgICAgZ2V0QWxwaGE6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gbm9kZS5nZXREYXRhKCdhbHBoYScpOwotICAgICAgfQotICAgIH0pOwotICB9LAotICAKLSAgcGxvdExpbmU6IGZ1bmN0aW9uKGFkaiwgY2FudmFzKSB7Ci0gICAgaWYoYWRqLmdldERhdGEoJ3R5cGUnKSA9PSAnbm9uZScpIHJldHVybjsKLSAgICB0aGlzLnBsb3RFbGVtZW50KGFkaiwgY2FudmFzLCB7Ci0gICAgICBnZXRBbHBoYTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiBNYXRoLm1pbihhZGoubm9kZUZyb20uZ2V0RGF0YSgnYWxwaGEnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkai5ub2RlVG8uZ2V0RGF0YSgnYWxwaGEnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkai5nZXREYXRhKCdhbHBoYScpKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgfSwKLSAgCi0gIHBsb3RFbGVtZW50OiBmdW5jdGlvbihlbGVtLCBjYW52YXMsIG9wdCkgewotICAgIHZhciBnbCA9IGNhbnZhcy5nZXRDdHgoKSwKLSAgICAgICAgdmlld01hdHJpeCA9IG5ldyBNYXRyaXg0LAotICAgICAgICBsaWdodGluZyA9IGNhbnZhcy5jb25maWcuU2NlbmUuTGlnaHRpbmcsCi0gICAgICAgIHdjYW52YXMgPSBjYW52YXMuY2FudmFzZXNbMF0sCi0gICAgICAgIHByb2dyYW0gPSB3Y2FudmFzLnByb2dyYW0sCi0gICAgICAgIGNhbWVyYSA9IHdjYW52YXMuY2FtZXJhOwotICAgIAotICAgIGlmKCFlbGVtLmdlb21ldHJ5KSB7Ci0gICAgICBlbGVtLmdlb21ldHJ5ID0gbmV3IE8zRFtlbGVtLmdldERhdGEoJ3R5cGUnKV07Ci0gICAgfQotICAgIGVsZW0uZ2VvbWV0cnkudXBkYXRlKGVsZW0pOwotICAgIGlmKCFlbGVtLndlYkdMVmVydGV4QnVmZmVyKSB7Ci0gICAgICB2YXIgdmVydGljZXMgPSBbXSwKLSAgICAgICAgICBmYWNlcyA9IFtdLAotICAgICAgICAgIG5vcm1hbHMgPSBbXSwKLSAgICAgICAgICB2ZXJ0ZXhJbmRleCA9IDAsCi0gICAgICAgICAgZ2VvbSA9IGVsZW0uZ2VvbWV0cnk7Ci0gICAgICAKLSAgICAgIGZvcih2YXIgaT0wLCB2cz1nZW9tLnZlcnRpY2VzLCBmcz1nZW9tLmZhY2VzLCBmc2w9ZnMubGVuZ3RoOyBpPGZzbDsgaSsrKSB7Ci0gICAgICAgIHZhciBmYWNlID0gZnNbaV0sCi0gICAgICAgICAgICB2MSA9IHZzW2ZhY2UuYV0sCi0gICAgICAgICAgICB2MiA9IHZzW2ZhY2UuYl0sCi0gICAgICAgICAgICB2MyA9IHZzW2ZhY2UuY10sCi0gICAgICAgICAgICB2NCA9IGZhY2UuZD8gdnNbZmFjZS5kXSA6IGZhbHNlLAotICAgICAgICAgICAgbiA9IGZhY2Uubm9ybWFsOwotICAgICAgICAKLSAgICAgICAgdmVydGljZXMucHVzaCh2MS54LCB2MS55LCB2MS56KTsKLSAgICAgICAgdmVydGljZXMucHVzaCh2Mi54LCB2Mi55LCB2Mi56KTsKLSAgICAgICAgdmVydGljZXMucHVzaCh2My54LCB2My55LCB2My56KTsKLSAgICAgICAgaWYodjQpIHZlcnRpY2VzLnB1c2godjQueCwgdjQueSwgdjQueik7Ci0gICAgICAgICAgICAKLSAgICAgICAgbm9ybWFscy5wdXNoKG4ueCwgbi55LCBuLnopOwotICAgICAgICBub3JtYWxzLnB1c2gobi54LCBuLnksIG4ueik7Ci0gICAgICAgIG5vcm1hbHMucHVzaChuLngsIG4ueSwgbi56KTsKLSAgICAgICAgaWYodjQpIG5vcm1hbHMucHVzaChuLngsIG4ueSwgbi56KTsKLSAgICAgICAgICAgIAotICAgICAgICBmYWNlcy5wdXNoKHZlcnRleEluZGV4LCB2ZXJ0ZXhJbmRleCArMSwgdmVydGV4SW5kZXggKzIpOwotICAgICAgICBpZih2NCkgewotICAgICAgICAgIGZhY2VzLnB1c2godmVydGV4SW5kZXgsIHZlcnRleEluZGV4ICsyLCB2ZXJ0ZXhJbmRleCArMyk7Ci0gICAgICAgICAgdmVydGV4SW5kZXggKz0gNDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB2ZXJ0ZXhJbmRleCArPSAzOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvL2NyZWF0ZSBhbmQgc3RvcmUgdmVydGV4IGRhdGEKLSAgICAgIGVsZW0ud2ViR0xWZXJ0ZXhCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKLSAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBlbGVtLndlYkdMVmVydGV4QnVmZmVyKTsKLSAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KHZlcnRpY2VzKSwgZ2wuU1RBVElDX0RSQVcpOwotICAgICAgLy9jcmVhdGUgYW5kIHN0b3JlIGZhY2VzIGluZGV4IGRhdGEKLSAgICAgIGVsZW0ud2ViR0xGYWNlQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7Ci0gICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBlbGVtLndlYkdMRmFjZUJ1ZmZlcik7Ci0gICAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgVWludDE2QXJyYXkoZmFjZXMpLCBnbC5TVEFUSUNfRFJBVyk7Ci0gICAgICBlbGVtLndlYkdMRmFjZUNvdW50ID0gZmFjZXMubGVuZ3RoOwotICAgICAgLy9jYWxjdWxhdGUgdmVydGV4IG5vcm1hbHMgYW5kIHN0b3JlIHRoZW0KLSAgICAgIGVsZW0ud2ViR0xOb3JtYWxCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKLSAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBlbGVtLndlYkdMTm9ybWFsQnVmZmVyKTsKLSAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KG5vcm1hbHMpLCBnbC5TVEFUSUNfRFJBVyk7Ci0gICAgfQotICAgIHZpZXdNYXRyaXgubXVsdGlwbHkoY2FtZXJhLm1hdHJpeCwgZWxlbS5nZW9tZXRyeS5tYXRyaXgpOwotICAgIC8vc2VuZCBtYXRyaXggZGF0YQotICAgIGdsLnVuaWZvcm1NYXRyaXg0ZnYocHJvZ3JhbS52aWV3TWF0cml4LCBmYWxzZSwgdmlld01hdHJpeC5mbGF0dGVuKCkpOwotICAgIGdsLnVuaWZvcm1NYXRyaXg0ZnYocHJvZ3JhbS5wcm9qZWN0aW9uTWF0cml4LCBmYWxzZSwgY2FtZXJhLnByb2plY3Rpb25NYXRyaXguZmxhdHRlbigpKTsKLSAgICAvL3NlbmQgbm9ybWFsIG1hdHJpeCBmb3IgbGlnaHRpbmcKLSAgICB2YXIgbm9ybWFsTWF0cml4ID0gTWF0cml4NC5tYWtlSW52ZXJ0KHZpZXdNYXRyaXgpOwotICAgIG5vcm1hbE1hdHJpeC4kdHJhbnNwb3NlKCk7Ci0gICAgZ2wudW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtLm5vcm1hbE1hdHJpeCwgZmFsc2UsIG5vcm1hbE1hdHJpeC5mbGF0dGVuKCkpOwotICAgIC8vc2VuZCBjb2xvciBkYXRhCi0gICAgdmFyIGNvbG9yID0gJC5oZXhUb1JnYihlbGVtLmdldERhdGEoJ2NvbG9yJykpOwotICAgIGNvbG9yLnB1c2gob3B0LmdldEFscGhhKCkpOwotICAgIGdsLnVuaWZvcm00Zihwcm9ncmFtLmNvbG9yLCBjb2xvclswXSAvIDI1NSwgY29sb3JbMV0gLyAyNTUsIGNvbG9yWzJdIC8gMjU1LCBjb2xvclszXSk7Ci0gICAgLy9zZW5kIGxpZ2h0aW5nIGRhdGEKLSAgICBnbC51bmlmb3JtMWkocHJvZ3JhbS5lbmFibGVMaWdodGluZywgbGlnaHRpbmcuZW5hYmxlKTsKLSAgICBpZihsaWdodGluZy5lbmFibGUpIHsKLSAgICAgIC8vc2V0IGFtYmllbnQgbGlnaHQgY29sb3IKLSAgICAgIGlmKGxpZ2h0aW5nLmFtYmllbnQpIHsKLSAgICAgICAgdmFyIGFjb2xvciA9IGxpZ2h0aW5nLmFtYmllbnQ7Ci0gICAgICAgIGdsLnVuaWZvcm0zZihwcm9ncmFtLmFtYmllbnRDb2xvciwgYWNvbG9yWzBdLCBhY29sb3JbMV0sIGFjb2xvclsyXSk7Ci0gICAgICB9Ci0gICAgICAvL3NldCBkaXJlY3Rpb25hbCBsaWdodAotICAgICAgaWYobGlnaHRpbmcuZGlyZWN0aW9uYWwpIHsKLSAgICAgICAgdmFyIGRpciA9IGxpZ2h0aW5nLmRpcmVjdGlvbmFsLAotICAgICAgICAgICAgY29sb3IgPSBkaXIuY29sb3IsCi0gICAgICAgICAgICBwb3MgPSBkaXIuZGlyZWN0aW9uLAotICAgICAgICAgICAgdmQgPSBuZXcgVmVjdG9yMyhwb3MueCwgcG9zLnksIHBvcy56KS5ub3JtYWxpemUoKS4kc2NhbGUoLTEpOwotICAgICAgICBnbC51bmlmb3JtM2YocHJvZ3JhbS5saWdodGluZ0RpcmVjdGlvbiwgdmQueCwgdmQueSwgdmQueik7Ci0gICAgICAgIGdsLnVuaWZvcm0zZihwcm9ncmFtLmRpcmVjdGlvbmFsQ29sb3IsIGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0pOwotICAgICAgfQotICAgIH0KLSAgICAvL3NlbmQgdmVydGljZXMgZGF0YQotICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBlbGVtLndlYkdMVmVydGV4QnVmZmVyKTsKLSAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb24sIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7Ci0gICAgLy9zZW5kIG5vcm1hbHMgZGF0YQotICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBlbGVtLndlYkdMTm9ybWFsQnVmZmVyKTsKLSAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ubm9ybWFsLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOwotICAgIC8vZHJhdyEKLSAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBlbGVtLndlYkdMRmFjZUJ1ZmZlciApOwotICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIGVsZW0ud2ViR0xGYWNlQ291bnQsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKLSAgfQotfSk7Ci0KLQotLyoKLSAqIEZpbGU6IEdyYXBoLkxhYmVsLmpzCi0gKgotKi8KLQotLyoKLSAgIE9iamVjdDogR3JhcGguTGFiZWwKLQotICAgQW4gaW50ZXJmYWNlIGZvciBwbG90dGluZy9oaWRpbmcvc2hvd2luZyBsYWJlbHMuCi0KLSAgIERlc2NyaXB0aW9uOgotCi0gICBUaGlzIGlzIGEgZ2VuZXJpYyBpbnRlcmZhY2UgZm9yIHBsb3R0aW5nL2hpZGluZy9zaG93aW5nIGxhYmVscy4KLSAgIFRoZSA8R3JhcGguTGFiZWw+IGludGVyZmFjZSBpcyBpbXBsZW1lbnRlZCBpbiBtdWx0aXBsZSB3YXlzIHRvIHByb3ZpZGUKLSAgIGRpZmZlcmVudCBsYWJlbCB0eXBlcy4KLQotICAgRm9yIGV4YW1wbGUsIHRoZSBHcmFwaC5MYWJlbCBpbnRlcmZhY2UgaXMgaW1wbGVtZW50ZWQgYXMgPEdyYXBoLkxhYmVsLkhUTUw+IHRvIHByb3ZpZGUKLSAgIEhUTUwgbGFiZWwgZWxlbWVudHMuIEFsc28gd2UgcHJvdmlkZSB0aGUgPEdyYXBoLkxhYmVsLlNWRz4gaW50ZXJmYWNlIGZvciBTVkcgdHlwZSBsYWJlbHMuIAotICAgVGhlIDxHcmFwaC5MYWJlbC5OYXRpdmU+IGludGVyZmFjZSBpbXBsZW1lbnRzIHRoZXNlIG1ldGhvZHMgd2l0aCB0aGUgbmF0aXZlIENhbnZhcyB0ZXh0IHJlbmRlcmluZyBmdW5jdGlvbnMuCi0gICAKLSAgIEFsbCBzdWJjbGFzc2VzICg8R3JhcGguTGFiZWwuSFRNTD4sIDxHcmFwaC5MYWJlbC5TVkc+IGFuZCA8R3JhcGguTGFiZWwuTmF0aXZlPikgaW1wbGVtZW50IHRoZSBtZXRob2QgcGxvdExhYmVsLgotKi8KLQotR3JhcGguTGFiZWwgPSB7fTsKLQotLyoKLSAgIENsYXNzOiBHcmFwaC5MYWJlbC5OYXRpdmUKLQotICAgSW1wbGVtZW50cyBsYWJlbHMgbmF0aXZlbHksIHVzaW5nIHRoZSBDYW52YXMgdGV4dCBBUEkuCi0qLwotR3JhcGguTGFiZWwuTmF0aXZlID0gbmV3IENsYXNzKHsKLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopIHsKLSAgICAgIHRoaXMudml6ID0gdml6OwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogcGxvdExhYmVsCi0KLSAgICAgICBQbG90cyBhIGxhYmVsIGZvciBhIGdpdmVuIG5vZGUuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgY2FudmFzIC0gKG9iamVjdCkgQSA8Q2FudmFzPiBpbnN0YW5jZS4KLSAgICAgICBub2RlIC0gKG9iamVjdCkgQSA8R3JhcGguTm9kZT4uCi0gICAgICAgY29udHJvbGxlciAtIChvYmplY3QpIEEgY29uZmlndXJhdGlvbiBvYmplY3QuCi0gICAgICAgCi0gICAgICAgRXhhbXBsZToKLSAgICAgICAKLSAgICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICB2YXIgdml6ID0gbmV3ICRqaXQuVml6KG9wdGlvbnMpOwotICAgICAgIHZhciBub2RlID0gdml6LmdyYXBoLmdldE5vZGUoJ25vZGVJZCcpOwotICAgICAgIHZpei5sYWJlbHMucGxvdExhYmVsKHZpei5jYW52YXMsIG5vZGUsIHZpei5jb25maWcpOwotICAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIHBsb3RMYWJlbDogZnVuY3Rpb24oY2FudmFzLCBub2RlLCBjb250cm9sbGVyKSB7Ci0gICAgICB2YXIgY3R4ID0gY2FudmFzLmdldEN0eCgpOwotICAgICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSk7Ci0KLSAgICAgIGN0eC5mb250ID0gbm9kZS5nZXRMYWJlbERhdGEoJ3N0eWxlJykgKyAnICcgKyBub2RlLmdldExhYmVsRGF0YSgnc2l6ZScpICsgJ3B4ICcgKyBub2RlLmdldExhYmVsRGF0YSgnZmFtaWx5Jyk7Ci0gICAgICBjdHgudGV4dEFsaWduID0gbm9kZS5nZXRMYWJlbERhdGEoJ3RleHRBbGlnbicpOwotICAgICAgY3R4LmZpbGxTdHlsZSA9IGN0eC5zdHJva2VTdHlsZSA9IG5vZGUuZ2V0TGFiZWxEYXRhKCdjb2xvcicpOwotICAgICAgY3R4LnRleHRCYXNlbGluZSA9IG5vZGUuZ2V0TGFiZWxEYXRhKCd0ZXh0QmFzZWxpbmUnKTsKLQotICAgICAgdGhpcy5yZW5kZXJMYWJlbChjYW52YXMsIG5vZGUsIGNvbnRyb2xsZXIpOwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIHJlbmRlckxhYmVsCi0KLSAgICAgICBEb2VzIHRoZSBhY3R1YWwgcmVuZGVyaW5nIG9mIHRoZSBsYWJlbCBpbiB0aGUgY2FudmFzLiBUaGUgZGVmYXVsdAotICAgICAgIGltcGxlbWVudGF0aW9uIHJlbmRlcnMgdGhlIGxhYmVsIGNsb3NlIHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgbm9kZSwgdGhpcwotICAgICAgIG1ldGhvZCBzaG91bGQgYmUgb3ZlcnJpZGVuIHRvIHBvc2l0aW9uIHRoZSBsYWJlbHMgZGlmZmVyZW50bHkuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgY2FudmFzIC0gQSA8Q2FudmFzPiBpbnN0YW5jZS4KLSAgICAgICBub2RlIC0gQSA8R3JhcGguTm9kZT4uCi0gICAgICAgY29udHJvbGxlciAtIEEgY29uZmlndXJhdGlvbiBvYmplY3QuIFNlZSBhbHNvIDxIeXBlcnRyZWU+LCA8UkdyYXBoPiwgPFNUPi4KLSAgICAqLwotICAgIHJlbmRlckxhYmVsOiBmdW5jdGlvbihjYW52YXMsIG5vZGUsIGNvbnRyb2xsZXIpIHsKLSAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q3R4KCk7Ci0gICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKTsKLSAgICAgIGN0eC5maWxsVGV4dChub2RlLm5hbWUsIHBvcy54LCBwb3MueSArIG5vZGUuZ2V0RGF0YSgiaGVpZ2h0IikgLyAyKTsKLSAgICB9LAotCi0gICAgaGlkZUxhYmVsOiAkLmVtcHR5LAotICAgIGhpZGVMYWJlbHM6ICQuZW1wdHkKLX0pOwotCi0vKgotICAgQ2xhc3M6IEdyYXBoLkxhYmVsLkRPTQotCi0gICBBYnN0cmFjdCBDbGFzcyBpbXBsZW1lbnRpbmcgc29tZSBET00gbGFiZWwgbWV0aG9kcy4KLQotICAgSW1wbGVtZW50ZWQgYnk6Ci0KLSAgIDxHcmFwaC5MYWJlbC5IVE1MPiBhbmQgPEdyYXBoLkxhYmVsLlNWRz4uCi0KLSovCi1HcmFwaC5MYWJlbC5ET00gPSBuZXcgQ2xhc3MoewotICAgIC8vQSBmbGFnIHZhbHVlIGluZGljYXRpbmcgaWYgbm9kZSBsYWJlbHMgYXJlIGJlaW5nIGRpc3BsYXllZCBvciBub3QuCi0gICAgbGFiZWxzSGlkZGVuOiBmYWxzZSwKLSAgICAvL0xhYmVsIGNvbnRhaW5lcgotICAgIGxhYmVsQ29udGFpbmVyOiBmYWxzZSwKLSAgICAvL0xhYmVsIGVsZW1lbnRzIGhhc2guCi0gICAgbGFiZWxzOiB7fSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiBnZXRMYWJlbENvbnRhaW5lcgotCi0gICAgICAgTGF6eSBmZXRjaGVyIGZvciB0aGUgbGFiZWwgY29udGFpbmVyLgotCi0gICAgICAgUmV0dXJuczoKLQotICAgICAgIFRoZSBsYWJlbCBjb250YWluZXIgRE9NIGVsZW1lbnQuCi0KLSAgICAgICBFeGFtcGxlOgotCi0gICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgdmFyIHZpeiA9IG5ldyAkaml0LlZpeihvcHRpb25zKTsKLSAgICAgICAgdmFyIGxhYmVsQ29udGFpbmVyID0gdml6LmxhYmVscy5nZXRMYWJlbENvbnRhaW5lcigpOwotICAgICAgICBhbGVydChsYWJlbENvbnRhaW5lci5pbm5lckhUTUwpOwotICAgICAgKGVuZCBjb2RlKQotICAgICovCi0gICAgZ2V0TGFiZWxDb250YWluZXI6IGZ1bmN0aW9uKCkgewotICAgICAgcmV0dXJuIHRoaXMubGFiZWxDb250YWluZXIgPwotICAgICAgICB0aGlzLmxhYmVsQ29udGFpbmVyIDoKLSAgICAgICAgdGhpcy5sYWJlbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMudml6LmNvbmZpZy5sYWJlbENvbnRhaW5lcik7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiBnZXRMYWJlbAotCi0gICAgICAgTGF6eSBmZXRjaGVyIGZvciB0aGUgbGFiZWwgZWxlbWVudC4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICBpZCAtIChzdHJpbmcpIFRoZSBsYWJlbCBpZCAod2hpY2ggaXMgYWxzbyBhIDxHcmFwaC5Ob2RlPiBpZCkuCi0KLSAgICAgICBSZXR1cm5zOgotCi0gICAgICAgVGhlIGxhYmVsIGVsZW1lbnQuCi0KLSAgICAgICBFeGFtcGxlOgotCi0gICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgdmFyIHZpeiA9IG5ldyAkaml0LlZpeihvcHRpb25zKTsKLSAgICAgICAgdmFyIGxhYmVsID0gdml6LmxhYmVscy5nZXRMYWJlbCgnc29tZWlkJyk7Ci0gICAgICAgIGFsZXJ0KGxhYmVsLmlubmVySFRNTCk7Ci0gICAgICAoZW5kIGNvZGUpCi0KLSAgICAqLwotICAgIGdldExhYmVsOiBmdW5jdGlvbihpZCkgewotICAgICAgcmV0dXJuIChpZCBpbiB0aGlzLmxhYmVscyAmJiB0aGlzLmxhYmVsc1tpZF0gIT0gbnVsbCkgPwotICAgICAgICB0aGlzLmxhYmVsc1tpZF0gOgotICAgICAgICB0aGlzLmxhYmVsc1tpZF0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWV0aG9kOiBoaWRlTGFiZWxzCi0KLSAgICAgICBIaWRlcyBhbGwgbGFiZWxzIChieSBoaWRpbmcgdGhlIGxhYmVsIGNvbnRhaW5lcikuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgaGlkZSAtIChib29sZWFuKSBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyBpZiB0aGUgbGFiZWwgY29udGFpbmVyIG11c3QgYmUgaGlkZGVuIG9yIG5vdC4KLQotICAgICAgIEV4YW1wbGU6Ci0gICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgIHZhciB2aXogPSBuZXcgJGppdC5WaXoob3B0aW9ucyk7Ci0gICAgICAgIHJnLmxhYmVscy5oaWRlTGFiZWxzKHRydWUpOwotICAgICAgIChlbmQgY29kZSkKLQotICAgICovCi0gICAgaGlkZUxhYmVsczogZnVuY3Rpb24gKGhpZGUpIHsKLSAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldExhYmVsQ29udGFpbmVyKCk7Ci0gICAgICBpZihoaWRlKQotICAgICAgICBjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgIGVsc2UKLSAgICAgICAgY29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnJzsKLSAgICAgIHRoaXMubGFiZWxzSGlkZGVuID0gaGlkZTsKLSAgICB9LAotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IGNsZWFyTGFiZWxzCi0KLSAgICAgICBDbGVhcnMgdGhlIGxhYmVsIGNvbnRhaW5lci4KLQotICAgICAgIFVzZWZ1bCB3aGVuIHVzaW5nIGEgbmV3IHZpc3VhbGl6YXRpb24gd2l0aCB0aGUgc2FtZSBjYW52YXMgZWxlbWVudC93aWRnZXQuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgZm9yY2UgLSAoYm9vbGVhbikgRm9yY2VzIGRlbGV0aW9uIG9mIGFsbCBsYWJlbHMuCi0KLSAgICAgICBFeGFtcGxlOgotICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICB2YXIgdml6ID0gbmV3ICRqaXQuVml6KG9wdGlvbnMpOwotICAgICAgICB2aXoubGFiZWxzLmNsZWFyTGFiZWxzKCk7Ci0gICAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGNsZWFyTGFiZWxzOiBmdW5jdGlvbihmb3JjZSkgewotICAgICAgZm9yKHZhciBpZCBpbiB0aGlzLmxhYmVscykgewotICAgICAgICBpZiAoZm9yY2UgfHwgIXRoaXMudml6LmdyYXBoLmhhc05vZGUoaWQpKSB7Ci0gICAgICAgICAgdGhpcy5kaXNwb3NlTGFiZWwoaWQpOwotICAgICAgICAgIGRlbGV0ZSB0aGlzLmxhYmVsc1tpZF07Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9LAotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IGRpc3Bvc2VMYWJlbAotCi0gICAgICAgUmVtb3ZlcyBhIGxhYmVsLgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIGlkIC0gKHN0cmluZykgQSBsYWJlbCBpZCAod2hpY2ggZ2VuZXJhbGx5IGlzIGFsc28gYSA8R3JhcGguTm9kZT4gaWQpLgotCi0gICAgICAgRXhhbXBsZToKLSAgICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgdmFyIHZpeiA9IG5ldyAkaml0LlZpeihvcHRpb25zKTsKLSAgICAgICAgdml6LmxhYmVscy5kaXNwb3NlTGFiZWwoJ2xhYmVsaWQnKTsKLSAgICAgICAoZW5kIGNvZGUpCi0gICAgKi8KLSAgICBkaXNwb3NlTGFiZWw6IGZ1bmN0aW9uKGlkKSB7Ci0gICAgICB2YXIgZWxlbSA9IHRoaXMuZ2V0TGFiZWwoaWQpOwotICAgICAgaWYoZWxlbSAmJiBlbGVtLnBhcmVudE5vZGUpIHsKLSAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pOwotICAgICAgfQotICAgIH0sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogaGlkZUxhYmVsCi0KLSAgICAgICBIaWRlcyB0aGUgY29ycmVzcG9uZGluZyA8R3JhcGguTm9kZT4gbGFiZWwuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgbm9kZSAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+LiBDYW4gYWxzbyBiZSBhbiBhcnJheSBvZiA8R3JhcGguTm9kZXM+LgotICAgICAgIHNob3cgLSAoYm9vbGVhbikgSWYgKnRydWUqLCBub2RlcyB3aWxsIGJlIHNob3duLiBPdGhlcndpc2Ugbm9kZXMgd2lsbCBiZSBoaWRkZW4uCi0KLSAgICAgICBFeGFtcGxlOgotICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICB2YXIgcmcgPSBuZXcgJGppdC5WaXoob3B0aW9ucyk7Ci0gICAgICAgIHZpei5sYWJlbHMuaGlkZUxhYmVsKHZpei5ncmFwaC5nZXROb2RlKCdzb21laWQnKSwgZmFsc2UpOwotICAgICAgIChlbmQgY29kZSkKLSAgICAqLwotICAgIGhpZGVMYWJlbDogZnVuY3Rpb24obm9kZSwgc2hvdykgewotICAgICAgbm9kZSA9ICQuc3BsYXQobm9kZSk7Ci0gICAgICB2YXIgc3QgPSBzaG93ID8gIiIgOiAibm9uZSIsIGxhYiwgdGhhdCA9IHRoaXM7Ci0gICAgICAkLmVhY2gobm9kZSwgZnVuY3Rpb24obikgewotICAgICAgICB2YXIgbGFiID0gdGhhdC5nZXRMYWJlbChuLmlkKTsKLSAgICAgICAgaWYgKGxhYikgewotICAgICAgICAgIGxhYi5zdHlsZS5kaXNwbGF5ID0gc3Q7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIH0sCi0KLSAgICAvKgotICAgICAgIGZpdHNJbkNhbnZhcwotCi0gICAgICAgUmV0dXJucyBfdHJ1ZV8gb3IgX2ZhbHNlXyBpZiB0aGUgbGFiZWwgZm9yIHRoZSBub2RlIGlzIGNvbnRhaW5lZCBpbiB0aGUgY2FudmFzIGRvbSBlbGVtZW50IG9yIG5vdC4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICBwb3MgLSBBIDxDb21wbGV4PiBpbnN0YW5jZSAoSSdtIGRvaW5nIGR1Y2sgdHlwaW5nIGhlcmUgc28gYW55IG9iamVjdCB3aXRoIF94XyBhbmQgX3lfIHBhcmFtZXRlcnMgd2lsbCBkbykuCi0gICAgICAgY2FudmFzIC0gQSA8Q2FudmFzPiBpbnN0YW5jZS4KLQotICAgICAgIFJldHVybnM6Ci0KLSAgICAgICBBIGJvb2xlYW4gdmFsdWUgc3BlY2lmeWluZyBpZiB0aGUgbGFiZWwgaXMgY29udGFpbmVkIGluIHRoZSA8Q2FudmFzPiBET00gZWxlbWVudCBvciBub3QuCi0KLSAgICAqLwotICAgIGZpdHNJbkNhbnZhczogZnVuY3Rpb24ocG9zLCBjYW52YXMpIHsKLSAgICAgIHZhciBzaXplID0gY2FudmFzLmdldFNpemUoKTsKLSAgICAgIGlmKHBvcy54ID49IHNpemUud2lkdGggfHwgcG9zLnggPCAwCi0gICAgICAgICB8fCBwb3MueSA+PSBzaXplLmhlaWdodCB8fCBwb3MueSA8IDApIHJldHVybiBmYWxzZTsKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19KTsKLQotLyoKLSAgIENsYXNzOiBHcmFwaC5MYWJlbC5IVE1MCi0KLSAgIEltcGxlbWVudHMgSFRNTCBsYWJlbHMuCi0KLSAgIEV4dGVuZHM6Ci0KLSAgIEFsbCA8R3JhcGguTGFiZWwuRE9NPiBtZXRob2RzLgotCi0qLwotR3JhcGguTGFiZWwuSFRNTCA9IG5ldyBDbGFzcyh7Ci0gICAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuRE9NLAotCi0gICAgLyoKLSAgICAgICBNZXRob2Q6IHBsb3RMYWJlbAotCi0gICAgICAgUGxvdHMgYSBsYWJlbCBmb3IgYSBnaXZlbiBub2RlLgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIGNhbnZhcyAtIChvYmplY3QpIEEgPENhbnZhcz4gaW5zdGFuY2UuCi0gICAgICAgbm9kZSAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+LgotICAgICAgIGNvbnRyb2xsZXIgLSAob2JqZWN0KSBBIGNvbmZpZ3VyYXRpb24gb2JqZWN0LgotICAgICAgIAotICAgICAgRXhhbXBsZToKLSAgICAgICAKLSAgICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICB2YXIgdml6ID0gbmV3ICRqaXQuVml6KG9wdGlvbnMpOwotICAgICAgIHZhciBub2RlID0gdml6LmdyYXBoLmdldE5vZGUoJ25vZGVJZCcpOwotICAgICAgIHZpei5sYWJlbHMucGxvdExhYmVsKHZpei5jYW52YXMsIG5vZGUsIHZpei5jb25maWcpOwotICAgICAgIChlbmQgY29kZSkKLQotCi0gICAgKi8KLSAgICBwbG90TGFiZWw6IGZ1bmN0aW9uKGNhbnZhcywgbm9kZSwgY29udHJvbGxlcikgewotICAgICAgdmFyIGlkID0gbm9kZS5pZCwgdGFnID0gdGhpcy5nZXRMYWJlbChpZCk7Ci0KLSAgICAgIGlmKCF0YWcgJiYgISh0YWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpKSB7Ci0gICAgICAgIHRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXRMYWJlbENvbnRhaW5lcigpOwotICAgICAgICB0YWcuaWQgPSBpZDsKLSAgICAgICAgdGFnLmNsYXNzTmFtZSA9ICdub2RlJzsKLSAgICAgICAgdGFnLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKLSAgICAgICAgY29udHJvbGxlci5vbkNyZWF0ZUxhYmVsKHRhZywgbm9kZSk7Ci0gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0YWcpOwotICAgICAgICB0aGlzLmxhYmVsc1tub2RlLmlkXSA9IHRhZzsKLSAgICAgIH0KLQotICAgICAgdGhpcy5wbGFjZUxhYmVsKHRhZywgbm9kZSwgY29udHJvbGxlcik7Ci0gICAgfQotfSk7Ci0KLS8qCi0gICBDbGFzczogR3JhcGguTGFiZWwuU1ZHCi0KLSAgIEltcGxlbWVudHMgU1ZHIGxhYmVscy4KLQotICAgRXh0ZW5kczoKLQotICAgQWxsIDxHcmFwaC5MYWJlbC5ET00+IG1ldGhvZHMuCi0qLwotR3JhcGguTGFiZWwuU1ZHID0gbmV3IENsYXNzKHsKLSAgICBJbXBsZW1lbnRzOiBHcmFwaC5MYWJlbC5ET00sCi0KLSAgICAvKgotICAgICAgIE1ldGhvZDogcGxvdExhYmVsCi0KLSAgICAgICBQbG90cyBhIGxhYmVsIGZvciBhIGdpdmVuIG5vZGUuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgY2FudmFzIC0gKG9iamVjdCkgQSA8Q2FudmFzPiBpbnN0YW5jZS4KLSAgICAgICBub2RlIC0gKG9iamVjdCkgQSA8R3JhcGguTm9kZT4uCi0gICAgICAgY29udHJvbGxlciAtIChvYmplY3QpIEEgY29uZmlndXJhdGlvbiBvYmplY3QuCi0gICAgICAgCi0gICAgICAgRXhhbXBsZToKLSAgICAgICAKLSAgICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICB2YXIgdml6ID0gbmV3ICRqaXQuVml6KG9wdGlvbnMpOwotICAgICAgIHZhciBub2RlID0gdml6LmdyYXBoLmdldE5vZGUoJ25vZGVJZCcpOwotICAgICAgIHZpei5sYWJlbHMucGxvdExhYmVsKHZpei5jYW52YXMsIG5vZGUsIHZpei5jb25maWcpOwotICAgICAgIChlbmQgY29kZSkKLQotCi0gICAgKi8KLSAgICBwbG90TGFiZWw6IGZ1bmN0aW9uKGNhbnZhcywgbm9kZSwgY29udHJvbGxlcikgewotICAgICAgdmFyIGlkID0gbm9kZS5pZCwgdGFnID0gdGhpcy5nZXRMYWJlbChpZCk7Ci0gICAgICBpZighdGFnICYmICEodGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKSkgewotICAgICAgICB2YXIgbnMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnOwotICAgICAgICAgIHRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhucywgJ3N2Zzp0ZXh0Jyk7Ci0gICAgICAgIHZhciB0c3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhucywgJ3N2Zzp0c3BhbicpOwotICAgICAgICB0YWcuYXBwZW5kQ2hpbGQodHNwYW4pOwotICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXRMYWJlbENvbnRhaW5lcigpOwotICAgICAgICB0YWcuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTsKLSAgICAgICAgdGFnLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnbm9kZScpOwotICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQodGFnKTsKLSAgICAgICAgY29udHJvbGxlci5vbkNyZWF0ZUxhYmVsKHRhZywgbm9kZSk7Ci0gICAgICAgIHRoaXMubGFiZWxzW25vZGUuaWRdID0gdGFnOwotICAgICAgfQotICAgICAgdGhpcy5wbGFjZUxhYmVsKHRhZywgbm9kZSwgY29udHJvbGxlcik7Ci0gICAgfQotfSk7Ci0KLQotCi1HcmFwaC5HZW9tID0gbmV3IENsYXNzKHsKLQotICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopIHsKLSAgICB0aGlzLnZpeiA9IHZpejsKLSAgICB0aGlzLmNvbmZpZyA9IHZpei5jb25maWc7Ci0gICAgdGhpcy5ub2RlID0gdml6LmNvbmZpZy5Ob2RlOwotICAgIHRoaXMuZWRnZSA9IHZpei5jb25maWcuRWRnZTsKLSAgfSwKLSAgLyoKLSAgICBBcHBsaWVzIGEgdHJhbnNsYXRpb24gdG8gdGhlIHRyZWUuCi0gIAotICAgIFBhcmFtZXRlcnM6Ci0gIAotICAgIHBvcyAtIEEgPENvbXBsZXg+IG51bWJlciBzcGVjaWZ5aW5nIHRyYW5zbGF0aW9uIHZlY3Rvci4KLSAgICBwcm9wIC0gQSA8R3JhcGguTm9kZT4gcG9zaXRpb24gcHJvcGVydHkgKCdwb3MnLCAnc3RhcnQnIG9yICdlbmQnKS4KLSAgCi0gICAgRXhhbXBsZToKLSAgCi0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICBzdC5nZW9tLnRyYW5zbGF0ZShuZXcgQ29tcGxleCgzMDAsIDEwMCksICdlbmQnKTsKLSAgICAoZW5kIGNvZGUpCi0gICovICAKLSAgdHJhbnNsYXRlOiBmdW5jdGlvbihwb3MsIHByb3ApIHsKLSAgICAgcHJvcCA9ICQuc3BsYXQocHJvcCk7Ci0gICAgIHRoaXMudml6LmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKGVsZW0pIHsKLSAgICAgICAgICQuZWFjaChwcm9wLCBmdW5jdGlvbihwKSB7IGVsZW0uZ2V0UG9zKHApLiRhZGQocG9zKTsgfSk7Ci0gICAgIH0pOwotICB9LAotICAvKgotICAgIEhpZGVzIGxldmVscyBvZiB0aGUgdHJlZSB1bnRpbCBpdCBwcm9wZXJseSBmaXRzIGluIGNhbnZhcy4KLSAgKi8gIAotICBzZXRSaWdodExldmVsVG9TaG93OiBmdW5jdGlvbihub2RlLCBjYW52YXMsIGNhbGxiYWNrKSB7Ci0gICAgIHZhciBsZXZlbCA9IHRoaXMuZ2V0UmlnaHRMZXZlbFRvU2hvdyhub2RlLCBjYW52YXMpLCAKLSAgICAgICAgIGZ4ID0gdGhpcy52aXoubGFiZWxzLAotICAgICAgICAgb3B0ID0gJC5tZXJnZSh7Ci0gICAgICAgICAgIGV4ZWNTaG93OnRydWUsCi0gICAgICAgICAgIGV4ZWNIaWRlOnRydWUsCi0gICAgICAgICAgIG9uSGlkZTogJC5lbXB0eSwKLSAgICAgICAgICAgb25TaG93OiAkLmVtcHR5Ci0gICAgICAgICB9LCBjYWxsYmFjayB8fCB7fSk7Ci0gICAgIG5vZGUuZWFjaExldmVsKDAsIHRoaXMuY29uZmlnLmxldmVsc1RvU2hvdywgZnVuY3Rpb24obikgewotICAgICAgICAgdmFyIGQgPSBuLl9kZXB0aCAtIG5vZGUuX2RlcHRoOwotICAgICAgICAgaWYoZCA+IGxldmVsKSB7Ci0gICAgICAgICAgICAgb3B0Lm9uSGlkZShuKTsKLSAgICAgICAgICAgICBpZihvcHQuZXhlY0hpZGUpIHsKLSAgICAgICAgICAgICAgIG4uZHJhd24gPSBmYWxzZTsgCi0gICAgICAgICAgICAgICBuLmV4aXN0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICBmeC5oaWRlTGFiZWwobiwgZmFsc2UpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgb3B0Lm9uU2hvdyhuKTsKLSAgICAgICAgICAgICBpZihvcHQuZXhlY1Nob3cpIHsKLSAgICAgICAgICAgICAgIG4uZXhpc3QgPSB0cnVlOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgfSk7Ci0gICAgIG5vZGUuZHJhd249IHRydWU7Ci0gIH0sCi0gIC8qCi0gICAgUmV0dXJucyB0aGUgcmlnaHQgbGV2ZWwgdG8gc2hvdyBmb3IgdGhlIGN1cnJlbnQgdHJlZSBpbiBvcmRlciB0byBmaXQgaW4gY2FudmFzLgotICAqLyAgCi0gIGdldFJpZ2h0TGV2ZWxUb1Nob3c6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICB2YXIgY29uZmlnID0gdGhpcy5jb25maWc7Ci0gICAgIHZhciBsZXZlbCA9IGNvbmZpZy5sZXZlbHNUb1Nob3c7Ci0gICAgIHZhciBjb25zdHJhaW5lZCA9IGNvbmZpZy5jb25zdHJhaW5lZDsKLSAgICAgaWYoIWNvbnN0cmFpbmVkKSByZXR1cm4gbGV2ZWw7Ci0gICAgIHdoaWxlKCF0aGlzLnRyZWVGaXRzSW5DYW52YXMobm9kZSwgY2FudmFzLCBsZXZlbCkgJiYgbGV2ZWwgPiAxKSB7IGxldmVsLS0gOyB9Ci0gICAgIHJldHVybiBsZXZlbDsKLSAgfQotfSk7Ci0KLS8qCi0gKiBGaWxlOiBMb2FkZXIuanMKLSAqIAotICovCi0KLS8qCi0gICBPYmplY3Q6IExvYWRlcgotCi0gICBQcm92aWRlcyBtZXRob2RzIGZvciBsb2FkaW5nIGFuZCBzZXJ2aW5nIEpTT04gZGF0YS4KLSovCi12YXIgTG9hZGVyID0gewotICAgICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uKGpzb24pIHsKLSAgICAgICAgdmFyIGlzR3JhcGggPSAoJC50eXBlKGpzb24pID09ICdhcnJheScpOwotICAgICAgICB2YXIgYW5zID0gbmV3IEdyYXBoKHRoaXMuZ3JhcGhPcHRpb25zLCB0aGlzLmNvbmZpZy5Ob2RlLCB0aGlzLmNvbmZpZy5FZGdlLCB0aGlzLmNvbmZpZy5MYWJlbCk7Ci0gICAgICAgIGlmKCFpc0dyYXBoKSAKLSAgICAgICAgICAgIC8vbWFrZSB0cmVlCi0gICAgICAgICAgICAoZnVuY3Rpb24gKGFucywganNvbikgewotICAgICAgICAgICAgICAgIGFucy5hZGROb2RlKGpzb24pOwotICAgICAgICAgICAgICAgIGlmKGpzb24uY2hpbGRyZW4pIHsKLSAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wLCBjaCA9IGpzb24uY2hpbGRyZW47IGk8Y2gubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgYW5zLmFkZEFkamFjZW5jZShqc29uLCBjaFtpXSk7Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5jYWxsZWUoYW5zLCBjaFtpXSk7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSkoYW5zLCBqc29uKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgLy9tYWtlIGdyYXBoCi0gICAgICAgICAgICAoZnVuY3Rpb24gKGFucywganNvbikgewotICAgICAgICAgICAgICAgIHZhciBnZXROb2RlID0gZnVuY3Rpb24oaWQpIHsKLSAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wLCBsPWpzb24ubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBpZihqc29uW2ldLmlkID09IGlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzb25baV07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIC8vIFRoZSBub2RlIHdhcyBub3QgZGVmaW5lZCBpbiB0aGUgSlNPTgotICAgICAgICAgICAgICAgICAgLy8gTGV0J3MgY3JlYXRlIGl0Ci0gICAgICAgICAgICAgICAgICB2YXIgbmV3Tm9kZSA9IHsKLSAgICAgICAgICAgICAgICAJCSJpZCIgOiBpZCwKLSAgICAgICAgICAgICAgICAJCSJuYW1lIiA6IGlkCi0gICAgICAgICAgICAgICAgCX07Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gYW5zLmFkZE5vZGUobmV3Tm9kZSk7Ci0gICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wLCBsPWpzb24ubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgICAgICAgICAgICAgYW5zLmFkZE5vZGUoanNvbltpXSk7Ci0gICAgICAgICAgICAgICAgICB2YXIgYWRqID0ganNvbltpXS5hZGphY2VuY2llczsKLSAgICAgICAgICAgICAgICAgIGlmIChhZGopIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBqPTAsIGxqPWFkai5sZW5ndGg7IGo8bGo7IGorKykgewotICAgICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gYWRqW2pdLCBkYXRhID0ge307Ci0gICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mIGFkaltqXSAhPSAnc3RyaW5nJykgewotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9ICQubWVyZ2Uobm9kZS5kYXRhLCB7fSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5ub2RlVG87Ci0gICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgIGFucy5hZGRBZGphY2VuY2UoanNvbltpXSwgZ2V0Tm9kZShub2RlKSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KShhbnMsIGpzb24pOwotCi0gICAgICAgIHJldHVybiBhbnM7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgIE1ldGhvZDogbG9hZEpTT04KLSAgICAKLSAgICAgTG9hZHMgYSBKU09OIHN0cnVjdHVyZSB0byB0aGUgdmlzdWFsaXphdGlvbi4gVGhlIEpTT04gc3RydWN0dXJlIGNhbiBiZSBhIEpTT04gKnRyZWUqIG9yICpncmFwaCogc3RydWN0dXJlLgotICAgICAKLSAgICAgIEEgSlNPTiB0cmVlIG9yIGdyYXBoIHN0cnVjdHVyZSBjb25zaXN0cyBvZiBub2RlcywgZWFjaCBoYXZpbmcgYXMgcHJvcGVydGllcwotICAgICAgIAotICAgICAgIGlkIC0gKHN0cmluZykgQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG5vZGUKLSAgICAgICBuYW1lIC0gKHN0cmluZykgQSBub2RlJ3MgbmFtZQotICAgICAgIGRhdGEgLSAob2JqZWN0KSBUaGUgZGF0YSBvcHRpb25hbCBwcm9wZXJ0eSBjb250YWlucyBhIGhhc2ggKGkuZSB7fSkgCi0gICAgICAgd2hlcmUgeW91IGNhbiBzdG9yZSBhbGwgdGhlIGluZm9ybWF0aW9uIHlvdSB3YW50IGFib3V0IHRoaXMgbm9kZS4KLSAgICAgICAgCi0gICAgICBGb3IgSlNPTiAqVHJlZSogc3RydWN0dXJlcywgdGhlcmUncyBhbiBleHRyYSBvcHRpb25hbCBwcm9wZXJ0eSAqY2hpbGRyZW4qIG9mIHR5cGUgQXJyYXkgd2hpY2ggY29udGFpbnMgdGhlIG5vZGUncyBjaGlsZHJlbi4KLSAgICAgIAotICAgICAgRXhhbXBsZToKLQotICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgIHZhciBqc29uID0geyAgCi0gICAgICAgICAgImlkIjogImFVbmlxdWVJZGVudGlmaWVyIiwgIAotICAgICAgICAgICJuYW1lIjogInVzdWFsbHkgYSBub2RlcyBuYW1lIiwgIAotICAgICAgICAgICJkYXRhIjogewotICAgICAgICAgICAgInNvbWUga2V5IjogInNvbWUgdmFsdWUiLAotICAgICAgICAgICAgInNvbWUgb3RoZXIga2V5IjogInNvbWUgb3RoZXIgdmFsdWUiCi0gICAgICAgICAgIH0sICAKLSAgICAgICAgICAiY2hpbGRyZW4iOiBbICpvdGhlciBub2RlcyBvciBlbXB0eSogXSAgCi0gICAgICAgIH07ICAKLSAgICAgIChlbmQgY29kZSkKLSAgICAgICAgCi0gICAgICAgIEpTT04gKkdyYXBoKiBzdHJ1Y3R1cmVzIGNvbnNpc3Qgb2YgYW4gYXJyYXkgb2Ygbm9kZXMsIGVhY2ggc3BlY2lmeWluZyB0aGUgbm9kZXMgdG8gd2hpY2ggdGhlIGN1cnJlbnQgbm9kZSBpcyBjb25uZWN0ZWQuIAotICAgICAgICBGb3IgSlNPTiAqR3JhcGgqIHN0cnVjdHVyZXMsIHRoZSAqY2hpbGRyZW4qIHByb3BlcnR5IGlzIHJlcGxhY2VkIGJ5IHRoZSAqYWRqYWNlbmNpZXMqIHByb3BlcnR5LgotICAgICAgICAKLSAgICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiAqR3JhcGgqIHN0cnVjdHVyZXMsICpzaW1wbGUqIGFuZCAqZXh0ZW5kZWQqIGdyYXBoIHN0cnVjdHVyZXMuCi0gICAgICAgIAotICAgICAgICBGb3IgKnNpbXBsZSogR3JhcGggc3RydWN0dXJlcywgdGhlIGFkamFjZW5jaWVzIHByb3BlcnR5IGNvbnRhaW5zIGFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggc3BlY2lmeWluZyB0aGUgCi0gICAgICAgIGlkIG9mIHRoZSBub2RlIGNvbm5lY3RlZCB0byB0aGUgbWFpbiBub2RlLgotICAgICAgICAKLSAgICAgICAgRXhhbXBsZToKLSAgICAgICAgCi0gICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICB2YXIganNvbiA9IFsgIAotICAgICAgICAgIHsgIAotICAgICAgICAgICAgImlkIjogImFVbmlxdWVJZGVudGlmaWVyIiwgIAotICAgICAgICAgICAgIm5hbWUiOiAidXN1YWxseSBhIG5vZGVzIG5hbWUiLCAgCi0gICAgICAgICAgICAiZGF0YSI6IHsKLSAgICAgICAgICAgICAgInNvbWUga2V5IjogInNvbWUgdmFsdWUiLAotICAgICAgICAgICAgICAic29tZSBvdGhlciBrZXkiOiAic29tZSBvdGhlciB2YWx1ZSIKLSAgICAgICAgICAgICB9LCAgCi0gICAgICAgICAgICAiYWRqYWNlbmNpZXMiOiBbImFub3RoZXJVbmlxdWVJZGVudGlmaWVyIiwgInlldEFub3RoZXJVbmlxdWVJZGVudGlmaWVyIiwgJ2V0YyddICAKLSAgICAgICAgICB9LAotCi0gICAgICAgICAgJ290aGVyIG5vZGVzIGdvIGhlcmUuLi4nIAotICAgICAgICBdOyAgICAgICAgICAKLSAgICAgICAgKGVuZCBjb2RlKQotICAgICAgICAKLSAgICAgICAgRm9yICpleHRlbmRlZCBHcmFwaCBzdHJ1Y3R1cmVzKiwgdGhlIGFkamFjZW5jaWVzIHByb3BlcnR5IGNvbnRhaW5zIGFuIGFycmF5IG9mIEFkamFjZW5jeSBvYmplY3RzIHRoYXQgaGF2ZSBhcyBwcm9wZXJ0aWVzCi0gICAgICAgIAotICAgICAgICBub2RlVG8gLSAoc3RyaW5nKSBUaGUgb3RoZXIgbm9kZSBjb25uZWN0ZWQgYnkgdGhpcyBhZGphY2VuY3kuCi0gICAgICAgIGRhdGEgLSAob2JqZWN0KSBBIGRhdGEgcHJvcGVydHksIHdoZXJlIHdlIGNhbiBzdG9yZSBjdXN0b20ga2V5L3ZhbHVlIGluZm9ybWF0aW9uLgotICAgICAgICAKLSAgICAgICAgRXhhbXBsZToKLSAgICAgICAgCi0gICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICB2YXIganNvbiA9IFsgIAotICAgICAgICAgIHsgIAotICAgICAgICAgICAgImlkIjogImFVbmlxdWVJZGVudGlmaWVyIiwgIAotICAgICAgICAgICAgIm5hbWUiOiAidXN1YWxseSBhIG5vZGVzIG5hbWUiLCAgCi0gICAgICAgICAgICAiZGF0YSI6IHsKLSAgICAgICAgICAgICAgInNvbWUga2V5IjogInNvbWUgdmFsdWUiLAotICAgICAgICAgICAgICAic29tZSBvdGhlciBrZXkiOiAic29tZSBvdGhlciB2YWx1ZSIKLSAgICAgICAgICAgICB9LCAgCi0gICAgICAgICAgICAiYWRqYWNlbmNpZXMiOiBbICAKLSAgICAgICAgICAgIHsgIAotICAgICAgICAgICAgICBub2RlVG86ImFOb2RlSWQiLCAgCi0gICAgICAgICAgICAgIGRhdGE6IHt9IC8vcHV0IHdoYXRldmVyIHlvdSB3YW50IGhlcmUgIAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdvdGhlciBhZGphY2VuY2llcyBnbyBoZXJlLi4uJyAgCi0gICAgICAgICAgfSwKLQotICAgICAgICAgICdvdGhlciBub2RlcyBnbyBoZXJlLi4uJyAKLSAgICAgICAgXTsgICAgICAgICAgCi0gICAgICAgIChlbmQgY29kZSkKLSAgICAgICAKLSAgICAgICBBYm91dCB0aGUgZGF0YSBwcm9wZXJ0eToKLSAgICAgICAKLSAgICAgICBBcyBkZXNjcmliZWQgYmVmb3JlLCB5b3UgY2FuIHN0b3JlIGN1c3RvbSBkYXRhIGluIHRoZSAqZGF0YSogcHJvcGVydHkgb2YgSlNPTiAqbm9kZXMqIGFuZCAqYWRqYWNlbmNpZXMqLiAKLSAgICAgICBZb3UgY2FuIHVzZSBhbG1vc3QgYW55IHN0cmluZyBhcyBrZXkgZm9yIHRoZSBkYXRhIG9iamVjdC4gU29tZSBrZXlzIHRob3VnaCBhcmUgcmVzZXJ2ZWQgYnkgdGhlIHRvb2xraXQsIGFuZCAKLSAgICAgICBoYXZlIHNwZWNpYWwgbWVhbmluZ3MuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIGtleXMgc3RhcnRpbmcgd2l0aCBhIGRvbGxhciBzaWduLCBmb3IgZXhhbXBsZSwgKiR3aWR0aCouCi0gICAgICAgCi0gICAgICAgRm9yIEpTT04gKm5vZGUqIG9iamVjdHMsIGFkZGluZyBkb2xsYXIgcHJlZml4ZWQgcHJvcGVydGllcyB0aGF0IG1hdGNoIHRoZSBuYW1lcyBvZiB0aGUgb3B0aW9ucyBkZWZpbmVkIGluIAotICAgICAgIDxPcHRpb25zLk5vZGU+IHdpbGwgb3ZlcnJpZGUgdGhlIGdlbmVyYWwgdmFsdWUgZm9yIHRoYXQgb3B0aW9uIHdpdGggdGhhdCBwYXJ0aWN1bGFyIHZhbHVlLiBGb3IgdGhpcyB0byB3b3JrIAotICAgICAgIGhvd2V2ZXIsIHlvdSBkbyBoYXZlIHRvIHNldCAqb3ZlcnJpZGFibGUgPSB0cnVlKiBpbiA8T3B0aW9ucy5Ob2RlPi4KLSAgICAgICAKLSAgICAgICBUaGUgc2FtZSB0aGluZyBpcyB0cnVlIGZvciBKU09OIGFkamFjZW5jaWVzLiBEb2xsYXIgcHJlZml4ZWQgZGF0YSBwcm9wZXJ0aWVzIHdpbGwgYWx0ZXIgdmFsdWVzIHNldCBpbiA8T3B0aW9ucy5FZGdlPiAKLSAgICAgICBpZiA8T3B0aW9ucy5FZGdlPiBoYXMgKm92ZXJyaWRhYmxlID0gdHJ1ZSouCi0gICAgICAgCi0gICAgICAgV2hlbiBsb2FkaW5nIEpTT04gZGF0YSBpbnRvIFRyZWVNYXBzLCB0aGUgKmRhdGEqIHByb3BlcnR5IG11c3QgY29udGFpbiBhIHZhbHVlIGZvciB0aGUgKiRhcmVhKiBrZXksIAotICAgICAgIHNpbmNlIHRoaXMgaXMgdGhlIHZhbHVlIHdoaWNoIHdpbGwgYmUgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gY3JlYXRpbmcgdGhlIGxheW91dC4gCi0gICAgICAgVGhlIHNhbWUgdGhpbmcgZ29lcyBmb3IgdGhlICokY29sb3IqIHBhcmFtZXRlci4KLSAgICAgICAKLSAgICAgICBJbiBKU09OIE5vZGVzIHlvdSBjYW4gdXNlIGFsc28gKiRsYWJlbC0qIHByZWZpeGVkIHByb3BlcnRpZXMgdG8gcmVmZXIgdG8gPE9wdGlvbnMuTGFiZWw+IHByb3BlcnRpZXMuIEZvciBleGFtcGxlLCAKLSAgICAgICAqJGxhYmVsLXNpemUqIHdpbGwgcmVmZXIgdG8gPE9wdGlvbnMuTGFiZWw+IHNpemUgcHJvcGVydHkuIEFsc28sIGluIEpTT04gbm9kZXMgYW5kIGFkamFjZW5jaWVzIHlvdSBjYW4gc2V0IAotICAgICAgIGNhbnZhcyBzcGVjaWZpYyBwcm9wZXJ0aWVzIGluZGl2aWR1YWxseSBieSB1c2luZyB0aGUgKiRjYW52YXMtKiBwcmVmaXguIEZvciBleGFtcGxlLCAqJGNhbnZhcy1zaGFkb3dCbHVyKiB3aWxsIHJlZmVyIAotICAgICAgIHRvIHRoZSAqc2hhZG93Qmx1ciogcHJvcGVydHkuCi0gICAgICAgCi0gICAgICAgVGhlc2UgcHJvcGVydGllcyBjYW4gYWxzbyBiZSBhY2Nlc3NlZCBhZnRlciBsb2FkaW5nIHRoZSBKU09OIGRhdGEgZnJvbSA8R3JhcGguTm9kZXM+IGFuZCA8R3JhcGguQWRqYWNlbmNlcz4gCi0gICAgICAgYnkgdXNpbmcgPEFjY2Vzc29ycz4uIEZvciBtb3JlIGluZm9ybWF0aW9uIHRha2UgYSBsb29rIGF0IHRoZSA8R3JhcGg+IGFuZCA8QWNjZXNzb3JzPiBkb2N1bWVudGF0aW9uLgotICAgICAgIAotICAgICAgIEZpbmFsbHksIHRoZXNlIHByb3BlcnRpZXMgY2FuIGFsc28gYmUgdXNlZCB0byBjcmVhdGUgYWR2YW5jZWQgYW5pbWF0aW9ucyBsaWtlIHdpdGggPE9wdGlvbnMuTm9kZVN0eWxlcz4uIEZvciBtb3JlIAotICAgICAgIGluZm9ybWF0aW9uIGFib3V0IGNyZWF0aW5nIGFuaW1hdGlvbnMgcGxlYXNlIHRha2UgYSBsb29rIGF0IHRoZSA8R3JhcGguUGxvdD4gYW5kIDxHcmFwaC5QbG90LmFuaW1hdGU+IGRvY3VtZW50YXRpb24uCi0gICAgICAgCi0gICAgICAgbG9hZEpTT04gUGFyYW1ldGVyczoKLSAgICAKLSAgICAgICAganNvbiAtIEEgSlNPTiBUcmVlIG9yIEdyYXBoIHN0cnVjdHVyZS4KLSAgICAgICAgaSAtIEZvciBHcmFwaCBzdHJ1Y3R1cmVzIG9ubHkuIFNldHMgdGhlIGluZGV4ZWQgbm9kZSBhcyByb290IGZvciB0aGUgdmlzdWFsaXphdGlvbi4KLQotICAgICovCi0gICAgbG9hZEpTT046IGZ1bmN0aW9uKGpzb24sIGkpIHsKLSAgICAgIHRoaXMuanNvbiA9IGpzb247Ci0gICAgICAvL2lmIHRoZXkncmUgY2FudmFzIGxhYmVscyBlcmFzZSB0aGVtLgotICAgICAgaWYodGhpcy5sYWJlbHMgJiYgdGhpcy5sYWJlbHMuY2xlYXJMYWJlbHMpIHsKLSAgICAgICAgdGhpcy5sYWJlbHMuY2xlYXJMYWJlbHModHJ1ZSk7Ci0gICAgICB9Ci0gICAgICB0aGlzLmdyYXBoID0gdGhpcy5jb25zdHJ1Y3QoanNvbik7Ci0gICAgICBpZigkLnR5cGUoanNvbikgIT0gJ2FycmF5Jyl7Ci0gICAgICAgIHRoaXMucm9vdCA9IGpzb24uaWQ7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLnJvb3QgPSBqc29uW2k/IGkgOiAwXS5pZDsKLSAgICAgIH0KLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICBNZXRob2Q6IHRvSlNPTgotICAgCi0gICAgICBSZXR1cm5zIGEgSlNPTiB0cmVlL2dyYXBoIHN0cnVjdHVyZSBmcm9tIHRoZSB2aXN1YWxpemF0aW9uJ3MgPEdyYXBoPi4gCi0gICAgICBTZWUgPExvYWRlci5sb2FkSlNPTj4gZm9yIHRoZSBncmFwaCBmb3JtYXRzIGF2YWlsYWJsZS4KLSAgICAgIAotICAgICAgU2VlIGFsc286Ci0gICAgICAKLSAgICAgIDxMb2FkZXIubG9hZEpTT04+Ci0gICAgICAKLSAgICAgIFBhcmFtZXRlcnM6Ci0gICAgICAKLSAgICAgIHR5cGUgLSAoc3RyaW5nKSBEZWZhdWx0J3MgInRyZWUiLiBUaGUgdHlwZSBvZiB0aGUgSlNPTiBzdHJ1Y3R1cmUgdG8gYmUgcmV0dXJuZWQuIAotICAgICAgUG9zc2libGUgb3B0aW9ucyBhcmUgInRyZWUiIG9yICJncmFwaCIuCi0gICAgKi8gICAgCi0gICAgdG9KU09OOiBmdW5jdGlvbih0eXBlKSB7Ci0gICAgICB0eXBlID0gdHlwZSB8fCAidHJlZSI7Ci0gICAgICBpZih0eXBlID09ICd0cmVlJykgewotICAgICAgICB2YXIgYW5zID0ge307Ci0gICAgICAgIHZhciByb290Tm9kZSA9IHRoaXMuZ3JhcGguZ2V0Tm9kZSh0aGlzLnJvb3QpOwotICAgICAgICB2YXIgYW5zID0gKGZ1bmN0aW9uIHJlY1RyZWUobm9kZSkgewotICAgICAgICAgIHZhciBhbnMgPSB7fTsKLSAgICAgICAgICBhbnMuaWQgPSBub2RlLmlkOwotICAgICAgICAgIGFucy5uYW1lID0gbm9kZS5uYW1lOwotICAgICAgICAgIGFucy5kYXRhID0gbm9kZS5kYXRhOwotICAgICAgICAgIHZhciBjaCA9W107Ci0gICAgICAgICAgbm9kZS5lYWNoU3Vibm9kZShmdW5jdGlvbihuKSB7Ci0gICAgICAgICAgICBjaC5wdXNoKHJlY1RyZWUobikpOwotICAgICAgICAgIH0pOwotICAgICAgICAgIGFucy5jaGlsZHJlbiA9IGNoOwotICAgICAgICAgIHJldHVybiBhbnM7Ci0gICAgICAgIH0pKHJvb3ROb2RlKTsKLSAgICAgICAgcmV0dXJuIGFuczsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHZhciBhbnMgPSBbXTsKLSAgICAgICAgdmFyIFQgPSAhIXRoaXMuZ3JhcGguZ2V0Tm9kZSh0aGlzLnJvb3QpLnZpc2l0ZWQ7Ci0gICAgICAgIHRoaXMuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obm9kZSkgewotICAgICAgICAgIHZhciBhbnNOb2RlID0ge307Ci0gICAgICAgICAgYW5zTm9kZS5pZCA9IG5vZGUuaWQ7Ci0gICAgICAgICAgYW5zTm9kZS5uYW1lID0gbm9kZS5uYW1lOwotICAgICAgICAgIGFuc05vZGUuZGF0YSA9IG5vZGUuZGF0YTsKLSAgICAgICAgICB2YXIgYWRqcyA9IFtdOwotICAgICAgICAgIG5vZGUuZWFjaEFkamFjZW5jeShmdW5jdGlvbihhZGopIHsKLSAgICAgICAgICAgIHZhciBub2RlVG8gPSBhZGoubm9kZVRvOwotICAgICAgICAgICAgaWYoISFub2RlVG8udmlzaXRlZCA9PT0gVCkgewotICAgICAgICAgICAgICB2YXIgYW5zQWRqID0ge307Ci0gICAgICAgICAgICAgIGFuc0Fkai5ub2RlVG8gPSBub2RlVG8uaWQ7Ci0gICAgICAgICAgICAgIGFuc0Fkai5kYXRhID0gYWRqLmRhdGE7Ci0gICAgICAgICAgICAgIGFkanMucHVzaChhbnNBZGopOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0pOwotICAgICAgICAgIGFuc05vZGUuYWRqYWNlbmNpZXMgPSBhZGpzOwotICAgICAgICAgIGFucy5wdXNoKGFuc05vZGUpOwotICAgICAgICAgIG5vZGUudmlzaXRlZCA9ICFUOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIGFuczsKLSAgICAgIH0KLSAgICB9Ci19OwotCi0KLQotLyoKLSAqIEZpbGU6IExheW91dHMuanMKLSAqIAotICogSW1wbGVtZW50cyBiYXNlIFRyZWUgYW5kIEdyYXBoIGxheW91dHMuCi0gKgotICogRGVzY3JpcHRpb246Ci0gKgotICogSW1wbGVtZW50cyBiYXNlIFRyZWUgYW5kIEdyYXBoIGxheW91dHMgbGlrZSBSYWRpYWwsIFRyZWUsIGV0Yy4KLSAqIAotICovCi0KLS8qCi0gKiBPYmplY3Q6IExheW91dHMKLSAqIAotICogUGFyZW50IG9iamVjdCBmb3IgY29tbW9uIGxheW91dHMuCi0gKgotICovCi12YXIgTGF5b3V0cyA9ICRqaXQuTGF5b3V0cyA9IHt9OwotCi0KLS8vU29tZSB1dGlsIHNoYXJlZCBsYXlvdXQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGhlcmUuCi12YXIgTm9kZURpbSA9IHsKLSAgbGFiZWw6IG51bGwsCi0gIAotICBjb21wdXRlOiBmdW5jdGlvbihncmFwaCwgcHJvcCwgb3B0KSB7Ci0gICAgdGhpcy5pbml0aWFsaXplTGFiZWwob3B0KTsKLSAgICB2YXIgbGFiZWwgPSB0aGlzLmxhYmVsLCBzdHlsZSA9IGxhYmVsLnN0eWxlOwotICAgIGdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKG4pIHsKLSAgICAgIHZhciBhdXRvV2lkdGggID0gbi5nZXREYXRhKCdhdXRvV2lkdGgnKSwKLSAgICAgICAgICBhdXRvSGVpZ2h0ID0gbi5nZXREYXRhKCdhdXRvSGVpZ2h0Jyk7Ci0gICAgICBpZihhdXRvV2lkdGggfHwgYXV0b0hlaWdodCkgewotICAgICAgICAvL2RlbGV0ZSBkaW1lbnNpb25zIHNpbmNlIHRoZXNlIGFyZQotICAgICAgICAvL2dvaW5nIHRvIGJlIG92ZXJyaWRkZW4gbm93LgotICAgICAgICBkZWxldGUgbi5kYXRhLiR3aWR0aDsKLSAgICAgICAgZGVsZXRlIG4uZGF0YS4kaGVpZ2h0OwotICAgICAgICBkZWxldGUgbi5kYXRhLiRkaW07Ci0gICAgICAgIAotICAgICAgICB2YXIgd2lkdGggID0gbi5nZXREYXRhKCd3aWR0aCcpLAotICAgICAgICAgICAgaGVpZ2h0ID0gbi5nZXREYXRhKCdoZWlnaHQnKTsKLSAgICAgICAgLy9yZXNldCBsYWJlbCBkaW1lbnNpb25zCi0gICAgICAgIHN0eWxlLndpZHRoICA9IGF1dG9XaWR0aD8gJ2F1dG8nIDogd2lkdGggKyAncHgnOwotICAgICAgICBzdHlsZS5oZWlnaHQgPSBhdXRvSGVpZ2h0PyAnYXV0bycgOiBoZWlnaHQgKyAncHgnOwotICAgICAgICAKLSAgICAgICAgLy9UT0RPKG5pY28pIHNob3VsZCBsZXQgdGhlIHVzZXIgY2hvb3NlIHdoYXQgdG8gaW5zZXJ0IGhlcmUuCi0gICAgICAgIGxhYmVsLmlubmVySFRNTCA9IG4ubmFtZTsKLSAgICAgICAgCi0gICAgICAgIHZhciBvZmZzZXRXaWR0aCAgPSBsYWJlbC5vZmZzZXRXaWR0aCwKLSAgICAgICAgICAgIG9mZnNldEhlaWdodCA9IGxhYmVsLm9mZnNldEhlaWdodDsKLSAgICAgICAgdmFyIHR5cGUgPSBuLmdldERhdGEoJ3R5cGUnKTsKLSAgICAgICAgaWYoJC5pbmRleE9mKFsnY2lyY2xlJywgJ3NxdWFyZScsICd0cmlhbmdsZScsICdzdGFyJ10sIHR5cGUpID09PSAtMSkgewotICAgICAgICAgIG4uc2V0RGF0YSgnd2lkdGgnLCBvZmZzZXRXaWR0aCk7Ci0gICAgICAgICAgbi5zZXREYXRhKCdoZWlnaHQnLCBvZmZzZXRIZWlnaHQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHZhciBkaW0gPSBvZmZzZXRXaWR0aCA+IG9mZnNldEhlaWdodD8gb2Zmc2V0V2lkdGggOiBvZmZzZXRIZWlnaHQ7Ci0gICAgICAgICAgbi5zZXREYXRhKCd3aWR0aCcsIGRpbSk7Ci0gICAgICAgICAgbi5zZXREYXRhKCdoZWlnaHQnLCBkaW0pOwotICAgICAgICAgIG4uc2V0RGF0YSgnZGltJywgZGltKTsgCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgfSwKLSAgCi0gIGluaXRpYWxpemVMYWJlbDogZnVuY3Rpb24ob3B0KSB7Ci0gICAgaWYoIXRoaXMubGFiZWwpIHsKLSAgICAgIHRoaXMubGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5sYWJlbCk7Ci0gICAgfQotICAgIHRoaXMuc2V0TGFiZWxTdHlsZXMob3B0KTsKLSAgfSwKLSAgCi0gIHNldExhYmVsU3R5bGVzOiBmdW5jdGlvbihvcHQpIHsKLSAgICAkLmV4dGVuZCh0aGlzLmxhYmVsLnN0eWxlLCB7Ci0gICAgICAndmlzaWJpbGl0eSc6ICdoaWRkZW4nLAotICAgICAgJ3Bvc2l0aW9uJzogJ2Fic29sdXRlJywKLSAgICAgICd3aWR0aCc6ICdhdXRvJywKLSAgICAgICdoZWlnaHQnOiAnYXV0bycKLSAgICB9KTsKLSAgICB0aGlzLmxhYmVsLmNsYXNzTmFtZSA9ICdqaXQtYXV0b2FkanVzdC1sYWJlbCc7Ci0gIH0KLX07Ci0KLQotLyoKLSAqIENsYXNzOiBMYXlvdXRzLlRyZWUKLSAqIAotICogSW1wbGVtZW50cyBhIFRyZWUgTGF5b3V0LgotICogCi0gKiBJbXBsZW1lbnRlZCBCeToKLSAqIAotICogPFNUPgotICogCi0gKiBJbnNwaXJlZCBieToKLSAqIAotICogRHJhd2luZyBUcmVlcyAoQW5kcmV3IEouIEtlbm5lZHkpIDxodHRwOi8vcmVzZWFyY2gubWljcm9zb2Z0LmNvbS9lbi11cy91bS9wZW9wbGUvYWtlbm4vZnVuL2RyYXdpbmd0cmVlcy5wZGY+Ci0gKiAKLSAqLwotTGF5b3V0cy5UcmVlID0gKGZ1bmN0aW9uKCkgewotICAvL0xheW91dCBmdW5jdGlvbnMKLSAgdmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlOwotCi0gIC8qCi0gICAgIENhbGN1bGF0ZXMgdGhlIG1heCB3aWR0aCBhbmQgaGVpZ2h0IG5vZGVzIGZvciBhIHRyZWUgbGV2ZWwKLSAgKi8gIAotICBmdW5jdGlvbiBnZXRCb3VuZGFyaWVzKGdyYXBoLCBjb25maWcsIGxldmVsLCBvcm4sIHByb3ApIHsKLSAgICB2YXIgZGltID0gY29uZmlnLk5vZGU7Ci0gICAgdmFyIG11bHRpdHJlZSA9IGNvbmZpZy5tdWx0aXRyZWU7Ci0gICAgaWYgKGRpbS5vdmVycmlkYWJsZSkgewotICAgICAgdmFyIHcgPSAtMSwgaCA9IC0xOwotICAgICAgZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgewotICAgICAgICBpZiAobi5fZGVwdGggPT0gbGV2ZWwKLSAgICAgICAgICAgICYmICghbXVsdGl0cmVlIHx8ICgnJG9ybicgaW4gbi5kYXRhKSAmJiBuLmRhdGEuJG9ybiA9PSBvcm4pKSB7Ci0gICAgICAgICAgdmFyIGR3ID0gbi5nZXREYXRhKCd3aWR0aCcsIHByb3ApOwotICAgICAgICAgIHZhciBkaCA9IG4uZ2V0RGF0YSgnaGVpZ2h0JywgcHJvcCk7Ci0gICAgICAgICAgdyA9ICh3IDwgZHcpID8gZHcgOiB3OwotICAgICAgICAgIGggPSAoaCA8IGRoKSA/IGRoIDogaDsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgICByZXR1cm4gewotICAgICAgICAnd2lkdGgnIDogdyA8IDAgPyBkaW0ud2lkdGggOiB3LAotICAgICAgICAnaGVpZ2h0JyA6IGggPCAwID8gZGltLmhlaWdodCA6IGgKLSAgICAgIH07Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldHVybiBkaW07Ci0gICAgfQotICB9Ci0KLQotICBmdW5jdGlvbiBtb3ZldHJlZShub2RlLCBwcm9wLCB2YWwsIG9ybikgewotICAgIHZhciBwID0gKG9ybiA9PSAibGVmdCIgfHwgb3JuID09ICJyaWdodCIpID8gInkiIDogIngiOwotICAgIG5vZGUuZ2V0UG9zKHByb3ApW3BdICs9IHZhbDsKLSAgfQotCi0KLSAgZnVuY3Rpb24gbW92ZWV4dGVudChleHRlbnQsIHZhbCkgewotICAgIHZhciBhbnMgPSBbXTsKLSAgICAkLmVhY2goZXh0ZW50LCBmdW5jdGlvbihlbGVtKSB7Ci0gICAgICBlbGVtID0gc2xpY2UuY2FsbChlbGVtKTsKLSAgICAgIGVsZW1bMF0gKz0gdmFsOwotICAgICAgZWxlbVsxXSArPSB2YWw7Ci0gICAgICBhbnMucHVzaChlbGVtKTsKLSAgICB9KTsKLSAgICByZXR1cm4gYW5zOwotICB9Ci0KLQotICBmdW5jdGlvbiBtZXJnZShwcywgcXMpIHsKLSAgICBpZiAocHMubGVuZ3RoID09IDApCi0gICAgICByZXR1cm4gcXM7Ci0gICAgaWYgKHFzLmxlbmd0aCA9PSAwKQotICAgICAgcmV0dXJuIHBzOwotICAgIHZhciBwID0gcHMuc2hpZnQoKSwgcSA9IHFzLnNoaWZ0KCk7Ci0gICAgcmV0dXJuIFsgWyBwWzBdLCBxWzFdIF0gXS5jb25jYXQobWVyZ2UocHMsIHFzKSk7Ci0gIH0KLQotCi0gIGZ1bmN0aW9uIG1lcmdlbGlzdChscywgZGVmKSB7Ci0gICAgZGVmID0gZGVmIHx8IFtdOwotICAgIGlmIChscy5sZW5ndGggPT0gMCkKLSAgICAgIHJldHVybiBkZWY7Ci0gICAgdmFyIHBzID0gbHMucG9wKCk7Ci0gICAgcmV0dXJuIG1lcmdlbGlzdChscywgbWVyZ2UocHMsIGRlZikpOwotICB9Ci0KLQotICBmdW5jdGlvbiBmaXQoZXh0MSwgZXh0Miwgc3VidHJlZU9mZnNldCwgc2libGluZ09mZnNldCwgaSkgewotICAgIGlmIChleHQxLmxlbmd0aCA8PSBpIHx8IGV4dDIubGVuZ3RoIDw9IGkpCi0gICAgICByZXR1cm4gMDsKLQotICAgIHZhciBwID0gZXh0MVtpXVsxXSwgcSA9IGV4dDJbaV1bMF07Ci0gICAgcmV0dXJuIE1hdGgubWF4KGZpdChleHQxLCBleHQyLCBzdWJ0cmVlT2Zmc2V0LCBzaWJsaW5nT2Zmc2V0LCArK2kpCi0gICAgICAgICsgc3VidHJlZU9mZnNldCwgcCAtIHEgKyBzaWJsaW5nT2Zmc2V0KTsKLSAgfQotCi0KLSAgZnVuY3Rpb24gZml0bGlzdGwoZXMsIHN1YnRyZWVPZmZzZXQsIHNpYmxpbmdPZmZzZXQpIHsKLSAgICBmdW5jdGlvbiAkZml0bGlzdGwoYWNjLCBlcywgaSkgewotICAgICAgaWYgKGVzLmxlbmd0aCA8PSBpKQotICAgICAgICByZXR1cm4gW107Ci0gICAgICB2YXIgZSA9IGVzW2ldLCBhbnMgPSBmaXQoYWNjLCBlLCBzdWJ0cmVlT2Zmc2V0LCBzaWJsaW5nT2Zmc2V0LCAwKTsKLSAgICAgIHJldHVybiBbIGFucyBdLmNvbmNhdCgkZml0bGlzdGwobWVyZ2UoYWNjLCBtb3ZlZXh0ZW50KGUsIGFucykpLCBlcywgKytpKSk7Ci0gICAgfQotICAgIDsKLSAgICByZXR1cm4gJGZpdGxpc3RsKCBbXSwgZXMsIDApOwotICB9Ci0KLQotICBmdW5jdGlvbiBmaXRsaXN0cihlcywgc3VidHJlZU9mZnNldCwgc2libGluZ09mZnNldCkgewotICAgIGZ1bmN0aW9uICRmaXRsaXN0cihhY2MsIGVzLCBpKSB7Ci0gICAgICBpZiAoZXMubGVuZ3RoIDw9IGkpCi0gICAgICAgIHJldHVybiBbXTsKLSAgICAgIHZhciBlID0gZXNbaV0sIGFucyA9IC1maXQoZSwgYWNjLCBzdWJ0cmVlT2Zmc2V0LCBzaWJsaW5nT2Zmc2V0LCAwKTsKLSAgICAgIHJldHVybiBbIGFucyBdLmNvbmNhdCgkZml0bGlzdHIobWVyZ2UobW92ZWV4dGVudChlLCBhbnMpLCBhY2MpLCBlcywgKytpKSk7Ci0gICAgfQotICAgIDsKLSAgICBlcyA9IHNsaWNlLmNhbGwoZXMpOwotICAgIHZhciBhbnMgPSAkZml0bGlzdHIoIFtdLCBlcy5yZXZlcnNlKCksIDApOwotICAgIHJldHVybiBhbnMucmV2ZXJzZSgpOwotICB9Ci0KLQotICBmdW5jdGlvbiBmaXRsaXN0KGVzLCBzdWJ0cmVlT2Zmc2V0LCBzaWJsaW5nT2Zmc2V0LCBhbGlnbikgewotICAgIHZhciBlc2wgPSBmaXRsaXN0bChlcywgc3VidHJlZU9mZnNldCwgc2libGluZ09mZnNldCksIGVzciA9IGZpdGxpc3RyKGVzLAotICAgICAgICBzdWJ0cmVlT2Zmc2V0LCBzaWJsaW5nT2Zmc2V0KTsKLQotICAgIGlmIChhbGlnbiA9PSAibGVmdCIpCi0gICAgICBlc3IgPSBlc2w7Ci0gICAgZWxzZSBpZiAoYWxpZ24gPT0gInJpZ2h0IikKLSAgICAgIGVzbCA9IGVzcjsKLQotICAgIGZvciAoIHZhciBpID0gMCwgYW5zID0gW107IGkgPCBlc2wubGVuZ3RoOyBpKyspIHsKLSAgICAgIGFuc1tpXSA9IChlc2xbaV0gKyBlc3JbaV0pIC8gMjsKLSAgICB9Ci0gICAgcmV0dXJuIGFuczsKLSAgfQotCi0KLSAgZnVuY3Rpb24gZGVzaWduKGdyYXBoLCBub2RlLCBwcm9wLCBjb25maWcsIG9ybikgewotICAgIHZhciBtdWx0aXRyZWUgPSBjb25maWcubXVsdGl0cmVlOwotICAgIHZhciBhdXhwID0gWyAneCcsICd5JyBdLCBhdXhzID0gWyAnd2lkdGgnLCAnaGVpZ2h0JyBdOwotICAgIHZhciBpbmQgPSArKG9ybiA9PSAibGVmdCIgfHwgb3JuID09ICJyaWdodCIpOwotICAgIHZhciBwID0gYXV4cFtpbmRdLCBub3RwID0gYXV4cFsxIC0gaW5kXTsKLQotICAgIHZhciBjbm9kZSA9IGNvbmZpZy5Ob2RlOwotICAgIHZhciBzID0gYXV4c1tpbmRdLCBub3RzID0gYXV4c1sxIC0gaW5kXTsKLQotICAgIHZhciBzaWJsaW5nT2Zmc2V0ID0gY29uZmlnLnNpYmxpbmdPZmZzZXQ7Ci0gICAgdmFyIHN1YnRyZWVPZmZzZXQgPSBjb25maWcuc3VidHJlZU9mZnNldDsKLSAgICB2YXIgYWxpZ24gPSBjb25maWcuYWxpZ247Ci0KLSAgICBmdW5jdGlvbiAkZGVzaWduKG5vZGUsIG1heHNpemUsIGFjdW0pIHsKLSAgICAgIHZhciBzdmFsID0gbm9kZS5nZXREYXRhKHMsIHByb3ApOwotICAgICAgdmFyIG5vdHN2YWwgPSBtYXhzaXplCi0gICAgICAgICAgfHwgKG5vZGUuZ2V0RGF0YShub3RzLCBwcm9wKSk7Ci0KLSAgICAgIHZhciB0cmVlcyA9IFtdLCBleHRlbnRzID0gW10sIGNobWF4c2l6ZSA9IGZhbHNlOwotICAgICAgdmFyIGNoYWN1bSA9IG5vdHN2YWwgKyBjb25maWcubGV2ZWxEaXN0YW5jZTsKLSAgICAgIG5vZGUuZWFjaFN1Ym5vZGUoZnVuY3Rpb24obikgewotICAgICAgICAgICAgaWYgKG4uZXhpc3QKLSAgICAgICAgICAgICAgICAmJiAoIW11bHRpdHJlZSB8fCAoJyRvcm4nIGluIG4uZGF0YSkgJiYgbi5kYXRhLiRvcm4gPT0gb3JuKSkgewotCi0gICAgICAgICAgICAgIGlmICghY2htYXhzaXplKQotICAgICAgICAgICAgICAgIGNobWF4c2l6ZSA9IGdldEJvdW5kYXJpZXMoZ3JhcGgsIGNvbmZpZywgbi5fZGVwdGgsIG9ybiwgcHJvcCk7Ci0KLSAgICAgICAgICAgICAgdmFyIHMgPSAkZGVzaWduKG4sIGNobWF4c2l6ZVtub3RzXSwgYWN1bSArIGNoYWN1bSk7Ci0gICAgICAgICAgICAgIHRyZWVzLnB1c2gocy50cmVlKTsKLSAgICAgICAgICAgICAgZXh0ZW50cy5wdXNoKHMuZXh0ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgIHZhciBwb3NpdGlvbnMgPSBmaXRsaXN0KGV4dGVudHMsIHN1YnRyZWVPZmZzZXQsIHNpYmxpbmdPZmZzZXQsIGFsaWduKTsKLSAgICAgIGZvciAoIHZhciBpID0gMCwgcHRyZWVzID0gW10sIHBleHRlbnRzID0gW107IGkgPCB0cmVlcy5sZW5ndGg7IGkrKykgewotICAgICAgICBtb3ZldHJlZSh0cmVlc1tpXSwgcHJvcCwgcG9zaXRpb25zW2ldLCBvcm4pOwotICAgICAgICBwZXh0ZW50cy5wdXNoKG1vdmVleHRlbnQoZXh0ZW50c1tpXSwgcG9zaXRpb25zW2ldKSk7Ci0gICAgICB9Ci0gICAgICB2YXIgcmVzdWx0ZXh0ZW50ID0gWyBbIC1zdmFsIC8gMiwgc3ZhbCAvIDIgXSBdCi0gICAgICAgICAgLmNvbmNhdChtZXJnZWxpc3QocGV4dGVudHMpKTsKLSAgICAgIG5vZGUuZ2V0UG9zKHByb3ApW3BdID0gMDsKLQotICAgICAgaWYgKG9ybiA9PSAidG9wIiB8fCBvcm4gPT0gImxlZnQiKSB7Ci0gICAgICAgIG5vZGUuZ2V0UG9zKHByb3ApW25vdHBdID0gYWN1bTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG5vZGUuZ2V0UG9zKHByb3ApW25vdHBdID0gLWFjdW07Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiB7Ci0gICAgICAgIHRyZWUgOiBub2RlLAotICAgICAgICBleHRlbnQgOiByZXN1bHRleHRlbnQKLSAgICAgIH07Ci0gICAgfQotCi0gICAgJGRlc2lnbihub2RlLCBmYWxzZSwgMCk7Ci0gIH0KLQotCi0gIHJldHVybiBuZXcgQ2xhc3MoewotICAgIC8qCi0gICAgTWV0aG9kOiBjb21wdXRlCi0gICAgCi0gICAgQ29tcHV0ZXMgbm9kZXMnIHBvc2l0aW9ucy4KLQotICAgICAqLwotICAgIGNvbXB1dGUgOiBmdW5jdGlvbihwcm9wZXJ0eSwgY29tcHV0ZUxldmVscykgewotICAgICAgdmFyIHByb3AgPSBwcm9wZXJ0eSB8fCAnc3RhcnQnOwotICAgICAgdmFyIG5vZGUgPSB0aGlzLmdyYXBoLmdldE5vZGUodGhpcy5yb290KTsKLSAgICAgICQuZXh0ZW5kKG5vZGUsIHsKLSAgICAgICAgJ2RyYXduJyA6IHRydWUsCi0gICAgICAgICdleGlzdCcgOiB0cnVlLAotICAgICAgICAnc2VsZWN0ZWQnIDogdHJ1ZQotICAgICAgfSk7Ci0gICAgICBOb2RlRGltLmNvbXB1dGUodGhpcy5ncmFwaCwgcHJvcCwgdGhpcy5jb25maWcpOwotICAgICAgaWYgKCEhY29tcHV0ZUxldmVscyB8fCAhKCJfZGVwdGgiIGluIG5vZGUpKSB7Ci0gICAgICAgIHRoaXMuZ3JhcGguY29tcHV0ZUxldmVscyh0aGlzLnJvb3QsIDAsICJpZ25vcmUiKTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgdGhpcy5jb21wdXRlUG9zaXRpb25zKG5vZGUsIHByb3ApOwotICAgIH0sCi0KLSAgICBjb21wdXRlUG9zaXRpb25zIDogZnVuY3Rpb24obm9kZSwgcHJvcCkgewotICAgICAgdmFyIGNvbmZpZyA9IHRoaXMuY29uZmlnOwotICAgICAgdmFyIG11bHRpdHJlZSA9IGNvbmZpZy5tdWx0aXRyZWU7Ci0gICAgICB2YXIgYWxpZ24gPSBjb25maWcuYWxpZ247Ci0gICAgICB2YXIgaW5kZW50ID0gYWxpZ24gIT09ICdjZW50ZXInICYmIGNvbmZpZy5pbmRlbnQ7Ci0gICAgICB2YXIgb3JuID0gY29uZmlnLm9yaWVudGF0aW9uOwotICAgICAgdmFyIG9ybnMgPSBtdWx0aXRyZWUgPyBbICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnIF0gOiBbIG9ybiBdOwotICAgICAgdmFyIHRoYXQgPSB0aGlzOwotICAgICAgJC5lYWNoKG9ybnMsIGZ1bmN0aW9uKG9ybikgewotICAgICAgICAvL2NhbGN1bGF0ZSBsYXlvdXQKLSAgICAgICAgICBkZXNpZ24odGhhdC5ncmFwaCwgbm9kZSwgcHJvcCwgdGhhdC5jb25maWcsIG9ybiwgcHJvcCk7Ci0gICAgICAgICAgdmFyIGkgPSBbICd4JywgJ3knIF1bKyhvcm4gPT0gImxlZnQiIHx8IG9ybiA9PSAicmlnaHQiKV07Ci0gICAgICAgICAgLy9hYnNvbHV0aXplCi0gICAgICAgICAgKGZ1bmN0aW9uIHJlZChub2RlKSB7Ci0gICAgICAgICAgICBub2RlLmVhY2hTdWJub2RlKGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgICAgaWYgKG4uZXhpc3QKLSAgICAgICAgICAgICAgICAgICYmICghbXVsdGl0cmVlIHx8ICgnJG9ybicgaW4gbi5kYXRhKSAmJiBuLmRhdGEuJG9ybiA9PSBvcm4pKSB7Ci0KLSAgICAgICAgICAgICAgICBuLmdldFBvcyhwcm9wKVtpXSArPSBub2RlLmdldFBvcyhwcm9wKVtpXTsKLSAgICAgICAgICAgICAgICBpZiAoaW5kZW50KSB7Ci0gICAgICAgICAgICAgICAgICBuLmdldFBvcyhwcm9wKVtpXSArPSBhbGlnbiA9PSAnbGVmdCcgPyBpbmRlbnQgOiAtaW5kZW50OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZWQobik7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgIH0pKG5vZGUpOwotICAgICAgICB9KTsKLSAgICB9Ci0gIH0pOwotICAKLX0pKCk7Ci0KLS8qCi0gKiBGaWxlOiBTcGFjZXRyZWUuanMKLSAqLwotCi0vKgotICAgQ2xhc3M6IFNUCi0gICAKLSAgQSBUcmVlIGxheW91dCB3aXRoIGFkdmFuY2VkIGNvbnRyYWN0aW9uIGFuZCBleHBhbnNpb24gYW5pbWF0aW9ucy4KLSAgICAgCi0gIEluc3BpcmVkIGJ5OgotIAotICBTcGFjZVRyZWU6IFN1cHBvcnRpbmcgRXhwbG9yYXRpb24gaW4gTGFyZ2UgTm9kZSBMaW5rIFRyZWUsIERlc2lnbiBFdm9sdXRpb24gYW5kIEVtcGlyaWNhbCBFdmFsdWF0aW9uIChDYXRoZXJpbmUgUGxhaXNhbnQsIEplc3NlIEdyb3NqZWFuLCBCZW5qYW1pbiBCLiBCZWRlcnNvbikgCi0gIDxodHRwOi8vaGNpbC5jcy51bWQuZWR1L3Rycy8yMDAyLTA1LzIwMDItMDUucGRmPgotICAKLSAgRHJhd2luZyBUcmVlcyAoQW5kcmV3IEouIEtlbm5lZHkpIDxodHRwOi8vcmVzZWFyY2gubWljcm9zb2Z0LmNvbS9lbi11cy91bS9wZW9wbGUvYWtlbm4vZnVuL2RyYXdpbmd0cmVlcy5wZGY+Ci0gIAotICBOb3RlOgotIAotICBUaGlzIHZpc3VhbGl6YXRpb24gd2FzIGJ1aWx0IGFuZCBlbmdpbmVlcmVkIGZyb20gc2NyYXRjaCwgdGFraW5nIG9ubHkgdGhlIHBhcGVycyBhcyBpbnNwaXJhdGlvbiwgYW5kIG9ubHkgc2hhcmVzIHNvbWUgZmVhdHVyZXMgd2l0aCB0aGUgdmlzdWFsaXphdGlvbiBkZXNjcmliZWQgaW4gdGhvc2UgcGFwZXJzLgotIAotICBJbXBsZW1lbnRzOgotICAKLSAgQWxsIDxMb2FkZXI+IG1ldGhvZHMKLSAgCi0gIENvbnN0cnVjdG9yIE9wdGlvbnM6Ci0gIAotICBJbmhlcml0cyBvcHRpb25zIGZyb20KLSAgCi0gIC0gPE9wdGlvbnMuQ2FudmFzPgotICAtIDxPcHRpb25zLkNvbnRyb2xsZXI+Ci0gIC0gPE9wdGlvbnMuVHJlZT4KLSAgLSA8T3B0aW9ucy5Ob2RlPgotICAtIDxPcHRpb25zLkVkZ2U+Ci0gIC0gPE9wdGlvbnMuTGFiZWw+Ci0gIC0gPE9wdGlvbnMuRXZlbnRzPgotICAtIDxPcHRpb25zLlRpcHM+Ci0gIC0gPE9wdGlvbnMuTm9kZVN0eWxlcz4KLSAgLSA8T3B0aW9ucy5OYXZpZ2F0aW9uPgotICAKLSAgQWRkaXRpb25hbGx5LCB0aGVyZSBhcmUgb3RoZXIgcGFyYW1ldGVycyBhbmQgc29tZSBkZWZhdWx0IHZhbHVlcyBjaGFuZ2VkCi0gIAotICBjb25zdHJhaW5lZCAtIChib29sZWFuKSBEZWZhdWx0J3MgKnRydWUqLiBXaGV0aGVyIHRvIHNob3cgdGhlIGVudGlyZSB0cmVlIHdoZW4gbG9hZGVkIG9yIGp1c3QgdGhlIG51bWJlciBvZiBsZXZlbHMgc3BlY2lmaWVkIGJ5IF9sZXZlbHNUb1Nob3dfLgotICBsZXZlbHNUb1Nob3cgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjIqLiBUaGUgbnVtYmVyIG9mIGxldmVscyB0byBzaG93IGZvciBhIHN1YnRyZWUuIFRoaXMgbnVtYmVyIGlzIHJlbGF0aXZlIHRvIHRoZSBzZWxlY3RlZCBub2RlLgotICBsZXZlbERpc3RhbmNlIC0gKG51bWJlcikgRGVmYXVsdCdzICozMCouIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBsZXZlbHMgb2YgdGhlIHRyZWUuCi0gIE5vZGUudHlwZSAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5Ob2RlPi4gRGVmYXVsdCdzIHNldCB0byAqcmVjdGFuZ2xlKi4KLSAgb2Zmc2V0WCAtIChudW1iZXIpIERlZmF1bHQncyAqMCouIFRoZSB4LW9mZnNldCBkaXN0YW5jZSBmcm9tIHRoZSBzZWxlY3RlZCBub2RlIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGNhbnZhcy4KLSAgb2Zmc2V0WSAtIChudW1iZXIpIERlZmF1bHQncyAqMCouIFRoZSB5LW9mZnNldCBkaXN0YW5jZSBmcm9tIHRoZSBzZWxlY3RlZCBub2RlIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGNhbnZhcy4KLSAgZHVyYXRpb24gLSBEZXNjcmliZWQgaW4gPE9wdGlvbnMuRng+LiBJdCdzIGRlZmF1bHQgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCB0byAqNzAwKi4KLSAgCi0gIEluc3RhbmNlIFByb3BlcnRpZXM6Ci0gIAotICBjYW52YXMgLSBBY2Nlc3MgYSA8Q2FudmFzPiBpbnN0YW5jZS4KLSAgZ3JhcGggLSBBY2Nlc3MgYSA8R3JhcGg+IGluc3RhbmNlLgotICBvcCAtIEFjY2VzcyBhIDxTVC5PcD4gaW5zdGFuY2UuCi0gIGZ4IC0gQWNjZXNzIGEgPFNULlBsb3Q+IGluc3RhbmNlLgotICBsYWJlbHMgLSBBY2Nlc3MgYSA8U1QuTGFiZWw+IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4KLQotICovCi0KLSRqaXQuU1Q9IChmdW5jdGlvbigpIHsKLSAgICAvLyBEZWZpbmUgc29tZSBwcml2YXRlIG1ldGhvZHMgZmlyc3QuLi4KLSAgICAvLyBOb2RlcyBpbiBwYXRoCi0gICAgdmFyIG5vZGVzSW5QYXRoID0gW107Ci0gICAgLy8gTm9kZXMgdG8gY29udHJhY3QKLSAgICBmdW5jdGlvbiBnZXROb2Rlc1RvSGlkZShub2RlKSB7Ci0gICAgICBub2RlID0gbm9kZSB8fCB0aGlzLmNsaWNrZWROb2RlOwotICAgICAgaWYoIXRoaXMuY29uZmlnLmNvbnN0cmFpbmVkKSB7Ci0gICAgICAgIHJldHVybiBbXTsKLSAgICAgIH0KLSAgICAgIHZhciBHZW9tID0gdGhpcy5nZW9tOwotICAgICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDsKLSAgICAgIHZhciBjYW52YXMgPSB0aGlzLmNhbnZhczsKLSAgICAgIHZhciBsZXZlbCA9IG5vZGUuX2RlcHRoLCBub2RlQXJyYXkgPSBbXTsKLSAgCSAgZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgewotICAgICAgICAgIGlmKG4uZXhpc3QgJiYgIW4uc2VsZWN0ZWQpIHsKLSAgICAgICAgICAgICAgaWYobi5pc0Rlc2NlbmRhbnRPZihub2RlLmlkKSkgewotICAgICAgICAgICAgICAgIGlmKG4uX2RlcHRoIDw9IGxldmVsKSBub2RlQXJyYXkucHVzaChuKTsKLSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBub2RlQXJyYXkucHVzaChuKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgCSAgfSk7Ci0gIAkgIHZhciBsZWFmTGV2ZWwgPSBHZW9tLmdldFJpZ2h0TGV2ZWxUb1Nob3cobm9kZSwgY2FudmFzKTsKLSAgCSAgbm9kZS5lYWNoTGV2ZWwobGVhZkxldmVsLCBsZWFmTGV2ZWwsIGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICBpZihuLmV4aXN0ICYmICFuLnNlbGVjdGVkKSBub2RlQXJyYXkucHVzaChuKTsKLSAgCSAgfSk7Ci0gIAkgICAgCi0gIAkgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXNJblBhdGgubGVuZ3RoOyBpKyspIHsKLSAgCSAgICB2YXIgbiA9IHRoaXMuZ3JhcGguZ2V0Tm9kZShub2Rlc0luUGF0aFtpXSk7Ci0gIAkgICAgaWYoIW4uaXNEZXNjZW5kYW50T2Yobm9kZS5pZCkpIHsKLSAgCSAgICAgIG5vZGVBcnJheS5wdXNoKG4pOwotICAJICAgIH0KLSAgCSAgfSAKLSAgCSAgcmV0dXJuIG5vZGVBcnJheTsgICAgICAgCi0gICAgfTsKLSAgICAvLyBOb2RlcyB0byBleHBhbmQKLSAgICAgZnVuY3Rpb24gZ2V0Tm9kZXNUb1Nob3cobm9kZSkgewotICAgICAgICB2YXIgbm9kZUFycmF5ID0gW10sIGNvbmZpZyA9IHRoaXMuY29uZmlnOwotICAgICAgICBub2RlID0gbm9kZSB8fCB0aGlzLmNsaWNrZWROb2RlOwotICAgICAgICB0aGlzLmNsaWNrZWROb2RlLmVhY2hMZXZlbCgwLCBjb25maWcubGV2ZWxzVG9TaG93LCBmdW5jdGlvbihuKSB7Ci0gICAgICAgICAgICBpZihjb25maWcubXVsdGl0cmVlICYmICEoJyRvcm4nIGluIG4uZGF0YSkgCi0gICAgICAgICAgICAJCSYmIG4uYW55U3Vibm9kZShmdW5jdGlvbihjaCl7IHJldHVybiBjaC5leGlzdCAmJiAhY2guZHJhd247IH0pKSB7Ci0gICAgICAgICAgICAJbm9kZUFycmF5LnB1c2gobik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYobi5kcmF3biAmJiAhbi5hbnlTdWJub2RlKCJkcmF3biIpKSB7Ci0gICAgICAgICAgICAgIG5vZGVBcnJheS5wdXNoKG4pOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIG5vZGVBcnJheTsKLSAgICAgfTsKLSAgICAvLyBOb3cgZGVmaW5lIHRoZSBhY3R1YWwgY2xhc3MuCi0gICAgcmV0dXJuIG5ldyBDbGFzcyh7Ci0gICAgCi0gICAgICAgIEltcGxlbWVudHM6IFtMb2FkZXIsIEV4dHJhcywgTGF5b3V0cy5UcmVlXSwKLSAgICAgICAgCi0gICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsgICAgICAgICAgICAKLSAgICAgICAgICB2YXIgJFNUID0gJGppdC5TVDsKLSAgICAgICAgICAKLSAgICAgICAgICB2YXIgY29uZmlnPSB7Ci0gICAgICAgICAgICAgICAgbGV2ZWxzVG9TaG93OiAyLAotICAgICAgICAgICAgICAgIGxldmVsRGlzdGFuY2U6IDMwLAotICAgICAgICAgICAgICAgIGNvbnN0cmFpbmVkOiB0cnVlLCAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBOb2RlOiB7Ci0gICAgICAgICAgICAgICAgICB0eXBlOiAncmVjdGFuZ2xlJwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZHVyYXRpb246IDcwMCwKLSAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAotICAgICAgICAgICAgICAgIG9mZnNldFk6IDAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHRoaXMuY29udHJvbGxlciA9IHRoaXMuY29uZmlnID0gJC5tZXJnZSgKLSAgICAgICAgICAgICAgICBPcHRpb25zKCJDYW52YXMiLCAiRngiLCAiVHJlZSIsICJOb2RlIiwgIkVkZ2UiLCAiQ29udHJvbGxlciIsIAotICAgICAgICAgICAgICAgICAgICAiVGlwcyIsICJOb2RlU3R5bGVzIiwgIkV2ZW50cyIsICJOYXZpZ2F0aW9uIiwgIkxhYmVsIiksIGNvbmZpZywgY29udHJvbGxlcik7Ci0KLSAgICAgICAgICAgIHZhciBjYW52YXNDb25maWcgPSB0aGlzLmNvbmZpZzsKLSAgICAgICAgICAgIGlmKGNhbnZhc0NvbmZpZy51c2VDYW52YXMpIHsKLSAgICAgICAgICAgICAgdGhpcy5jYW52YXMgPSBjYW52YXNDb25maWcudXNlQ2FudmFzOwotICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5sYWJlbENvbnRhaW5lciA9IHRoaXMuY2FudmFzLmlkICsgJy1sYWJlbCc7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBpZihjYW52YXNDb25maWcuYmFja2dyb3VuZCkgewotICAgICAgICAgICAgICAgIGNhbnZhc0NvbmZpZy5iYWNrZ3JvdW5kID0gJC5tZXJnZSh7Ci0gICAgICAgICAgICAgICAgICB0eXBlOiAnQ2lyY2xlcycKLSAgICAgICAgICAgICAgICB9LCBjYW52YXNDb25maWcuYmFja2dyb3VuZCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgdGhpcy5jYW52YXMgPSBuZXcgQ2FudmFzKHRoaXMsIGNhbnZhc0NvbmZpZyk7Ci0gICAgICAgICAgICAgIHRoaXMuY29uZmlnLmxhYmVsQ29udGFpbmVyID0gKHR5cGVvZiBjYW52YXNDb25maWcuaW5qZWN0SW50byA9PSAnc3RyaW5nJz8gY2FudmFzQ29uZmlnLmluamVjdEludG8gOiBjYW52YXNDb25maWcuaW5qZWN0SW50by5pZCkgKyAnLWxhYmVsJzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5ncmFwaE9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgJ2tsYXNzJzogQ29tcGxleAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRoaXMuZ3JhcGggPSBuZXcgR3JhcGgodGhpcy5ncmFwaE9wdGlvbnMsIHRoaXMuY29uZmlnLk5vZGUsIHRoaXMuY29uZmlnLkVkZ2UpOwotICAgICAgICAgICAgdGhpcy5sYWJlbHMgPSBuZXcgJFNULkxhYmVsW2NhbnZhc0NvbmZpZy5MYWJlbC50eXBlXSh0aGlzKTsKLSAgICAgICAgICAgIHRoaXMuZnggPSBuZXcgJFNULlBsb3QodGhpcywgJFNUKTsKLSAgICAgICAgICAgIHRoaXMub3AgPSBuZXcgJFNULk9wKHRoaXMpOwotICAgICAgICAgICAgdGhpcy5ncm91cCA9IG5ldyAkU1QuR3JvdXAodGhpcyk7Ci0gICAgICAgICAgICB0aGlzLmdlb20gPSBuZXcgJFNULkdlb20odGhpcyk7Ci0gICAgICAgICAgICB0aGlzLmNsaWNrZWROb2RlPSAgbnVsbDsKLSAgICAgICAgICAgIC8vIGluaXRpYWxpemUgZXh0cmFzCi0gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVFeHRyYXMoKTsKLSAgICAgICAgfSwKLSAgICAKLSAgICAgICAgLyoKLSAgICAgICAgIE1ldGhvZDogcGxvdAotICAgICAgICAKLSAgICAgICAgIFBsb3RzIHRoZSA8U1Q+LiBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gKmZ4LnBsb3QqLgotCi0gICAgICAgICovICAKLSAgICAgICAgcGxvdDogZnVuY3Rpb24oKSB7IHRoaXMuZngucGxvdCh0aGlzLmNvbnRyb2xsZXIpOyB9LAotICAgIAotICAgICAgCi0gICAgICAgIC8qCi0gICAgICAgICBNZXRob2Q6IHN3aXRjaFBvc2l0aW9uCi0gICAgICAgIAotICAgICAgICAgU3dpdGNoZXMgdGhlIHRyZWUgb3JpZW50YXRpb24uCi0KLSAgICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICAgcG9zIC0gKHN0cmluZykgVGhlIG5ldyB0cmVlIG9yaWVudGF0aW9uLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICJ0b3AiLCAibGVmdCIsICJyaWdodCIgYW5kICJib3R0b20iLgotICAgICAgICBtZXRob2QgLSAoc3RyaW5nKSBTZXQgdGhpcyB0byAiYW5pbWF0ZSIgaWYgeW91IHdhbnQgdG8gYW5pbWF0ZSB0aGUgdHJlZSB3aGVuIHN3aXRjaGluZyBpdHMgcG9zaXRpb24uIFlvdSBjYW4gYWxzbyBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gInJlcGxvdCIgdG8ganVzdCByZXBsb3QgdGhlIHN1YnRyZWUuCi0gICAgICAgIG9uQ29tcGxldGUgLSAob3B0aW9uYWx8b2JqZWN0KSBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCBvbmNlIHRoZSAic3dpdGNoaW5nIiBhbmltYXRpb24gaXMgY29tcGxldGUuCi0KLSAgICAgICAgIEV4YW1wbGU6Ci0KLSAgICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICAgICBzdC5zd2l0Y2hQb3NpdGlvbigicmlnaHQiLCAiYW5pbWF0ZSIsIHsKLSAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBhbGVydCgnY29tcGxldGVkIScpOwotICAgICAgICAgICAgfSAKLSAgICAgICAgICAgfSk7Ci0gICAgICAgICAoZW5kIGNvZGUpCi0gICAgICAgICovICAKLSAgICAgICAgc3dpdGNoUG9zaXRpb246IGZ1bmN0aW9uKHBvcywgbWV0aG9kLCBvbkNvbXBsZXRlKSB7Ci0gICAgICAgICAgdmFyIEdlb20gPSB0aGlzLmdlb20sIFBsb3QgPSB0aGlzLmZ4LCB0aGF0ID0gdGhpczsKLSAgICAgICAgICBpZighUGxvdC5idXN5KSB7Ci0gICAgICAgICAgICAgIFBsb3QuYnVzeSA9IHRydWU7Ci0gICAgICAgICAgICAgIHRoaXMuY29udHJhY3QoewotICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgR2VvbS5zd2l0Y2hPcmllbnRhdGlvbihwb3MpOwotICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY29tcHV0ZSgnZW5kJywgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgIFBsb3QuYnVzeSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgIGlmKG1ldGhvZCA9PSAnYW5pbWF0ZScpIHsKLSAgICAgICAgICAgICAgICAgICAgCSAgdGhhdC5vbkNsaWNrKHRoYXQuY2xpY2tlZE5vZGUuaWQsIG9uQ29tcGxldGUpOyAgCi0gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKG1ldGhvZCA9PSAncmVwbG90JykgewotICAgICAgICAgICAgICAgICAgICAJICB0aGF0LnNlbGVjdCh0aGF0LmNsaWNrZWROb2RlLmlkLCBvbkNvbXBsZXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0sIHBvcyk7Ci0gICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIC8qCi0gICAgICAgIE1ldGhvZDogc3dpdGNoQWxpZ25tZW50Ci0gICAgICAgCi0gICAgICAgIFN3aXRjaGVzIHRoZSB0cmVlIGFsaWdubWVudC4KLQotICAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgYWxpZ24gLSAoc3RyaW5nKSBUaGUgbmV3IHRyZWUgYWxpZ25tZW50LiBQb3NzaWJsZSB2YWx1ZXMgYXJlICJsZWZ0IiwgImNlbnRlciIgYW5kICJyaWdodCIuCi0gICAgICAgbWV0aG9kIC0gKHN0cmluZykgU2V0IHRoaXMgdG8gImFuaW1hdGUiIGlmIHlvdSB3YW50IHRvIGFuaW1hdGUgdGhlIHRyZWUgYWZ0ZXIgYWxpZ25pbmcgaXRzIHBvc2l0aW9uLiBZb3UgY2FuIGFsc28gc2V0IHRoaXMgcGFyYW1ldGVyIHRvICJyZXBsb3QiIHRvIGp1c3QgcmVwbG90IHRoZSBzdWJ0cmVlLgotICAgICAgIG9uQ29tcGxldGUgLSAob3B0aW9uYWx8b2JqZWN0KSBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCBvbmNlIHRoZSAic3dpdGNoaW5nIiBhbmltYXRpb24gaXMgY29tcGxldGUuCi0KLSAgICAgICAgRXhhbXBsZToKLQotICAgICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgICBzdC5zd2l0Y2hBbGlnbm1lbnQoInJpZ2h0IiwgImFuaW1hdGUiLCB7Ci0gICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgIGFsZXJ0KCdjb21wbGV0ZWQhJyk7Ci0gICAgICAgICAgIH0gCi0gICAgICAgICAgfSk7Ci0gICAgICAgIChlbmQgY29kZSkKLSAgICAgICAqLyAgCi0gICAgICAgc3dpdGNoQWxpZ25tZW50OiBmdW5jdGlvbihhbGlnbiwgbWV0aG9kLCBvbkNvbXBsZXRlKSB7Ci0gICAgICAgIHRoaXMuY29uZmlnLmFsaWduID0gYWxpZ247Ci0gICAgICAgIGlmKG1ldGhvZCA9PSAnYW5pbWF0ZScpIHsKLSAgICAgICAgCXRoaXMuc2VsZWN0KHRoaXMuY2xpY2tlZE5vZGUuaWQsIG9uQ29tcGxldGUpOwotICAgICAgICB9IGVsc2UgaWYobWV0aG9kID09ICdyZXBsb3QnKSB7Ci0gICAgICAgIAl0aGlzLm9uQ2xpY2sodGhpcy5jbGlja2VkTm9kZS5pZCwgb25Db21wbGV0ZSk7CQotICAgICAgICB9Ci0gICAgICAgfSwKLQotICAgICAgIC8qCi0gICAgICAgIE1ldGhvZDogYWRkTm9kZUluUGF0aAotICAgICAgIAotICAgICAgICBBZGRzIGEgbm9kZSB0byB0aGUgY3VycmVudCBwYXRoIGFzIHNlbGVjdGVkIG5vZGUuIFRoZSBzZWxlY3RlZCBub2RlIHdpbGwgYmUgdmlzaWJsZSAoYXMgaW4gbm9uLWNvbGxhcHNlZCkgYXQgYWxsIHRpbWVzLgotICAgICAgICAKLQotICAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgaWQgLSAoc3RyaW5nKSBBIDxHcmFwaC5Ob2RlPiBpZC4KLQotICAgICAgICBFeGFtcGxlOgotCi0gICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICAgIHN0LmFkZE5vZGVJblBhdGgoIm5vZGVJZCIpOwotICAgICAgICAoZW5kIGNvZGUpCi0gICAgICAgKi8gIAotICAgICAgIGFkZE5vZGVJblBhdGg6IGZ1bmN0aW9uKGlkKSB7Ci0gICAgICAgICAgIG5vZGVzSW5QYXRoLnB1c2goaWQpOwotICAgICAgICAgICB0aGlzLnNlbGVjdCgodGhpcy5jbGlja2VkTm9kZSAmJiB0aGlzLmNsaWNrZWROb2RlLmlkKSB8fCB0aGlzLnJvb3QpOwotICAgICAgIH0sICAgICAgIAotCi0gICAgICAgLyoKLSAgICAgICBNZXRob2Q6IGNsZWFyTm9kZXNJblBhdGgKLSAgICAgIAotICAgICAgIFJlbW92ZXMgYWxsIG5vZGVzIHRhZ2dlZCBhcyBzZWxlY3RlZCBieSB0aGUgPFNULmFkZE5vZGVJblBhdGg+IG1ldGhvZC4KLSAgICAgICAKLSAgICAgICBTZWUgYWxzbzoKLSAgICAgICAKLSAgICAgICA8U1QuYWRkTm9kZUluUGF0aD4KLSAgICAgCi0gICAgICAgRXhhbXBsZToKLQotICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICAgc3QuY2xlYXJOb2Rlc0luUGF0aCgpOwotICAgICAgIChlbmQgY29kZSkKLSAgICAgICovICAKLSAgICAgICBjbGVhck5vZGVzSW5QYXRoOiBmdW5jdGlvbihpZCkgewotICAgICAgICAgICBub2Rlc0luUGF0aC5sZW5ndGggPSAwOwotICAgICAgICAgICB0aGlzLnNlbGVjdCgodGhpcy5jbGlja2VkTm9kZSAmJiB0aGlzLmNsaWNrZWROb2RlLmlkKSB8fCB0aGlzLnJvb3QpOwotICAgICAgIH0sCi0gICAgICAgIAotICAgICAgIC8qCi0gICAgICAgICBNZXRob2Q6IHJlZnJlc2gKLSAgICAgICAgCi0gICAgICAgICBDb21wdXRlcyBwb3NpdGlvbnMgYW5kIHBsb3RzIHRoZSB0cmVlLgotICAgICAgICAgCi0gICAgICAgKi8KLSAgICAgICByZWZyZXNoOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgdGhpcy5yZXBvc2l0aW9uKCk7Ci0gICAgICAgICAgIHRoaXMuc2VsZWN0KCh0aGlzLmNsaWNrZWROb2RlICYmIHRoaXMuY2xpY2tlZE5vZGUuaWQpIHx8IHRoaXMucm9vdCk7Ci0gICAgICAgfSwgICAgCi0KLSAgICAgICByZXBvc2l0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRoaXMuZ3JhcGguY29tcHV0ZUxldmVscyh0aGlzLnJvb3QsIDAsICJpZ25vcmUiKTsKLSAgICAgICAgICAgICB0aGlzLmdlb20uc2V0UmlnaHRMZXZlbFRvU2hvdyh0aGlzLmNsaWNrZWROb2RlLCB0aGlzLmNhbnZhcyk7Ci0gICAgICAgICAgICB0aGlzLmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgICAgICBpZihuLmV4aXN0KSBuLmRyYXduID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgdGhpcy5jb21wdXRlKCdlbmQnKTsKLSAgICAgICAgfSwKLSAgICAgICAgCi0gICAgICAgIHJlcXVlc3ROb2RlczogZnVuY3Rpb24obm9kZSwgb25Db21wbGV0ZSkgewotICAgICAgICAgIHZhciBoYW5kbGVyID0gJC5tZXJnZSh0aGlzLmNvbnRyb2xsZXIsIG9uQ29tcGxldGUpLCAKLSAgICAgICAgICBsZXYgPSB0aGlzLmNvbmZpZy5sZXZlbHNUb1Nob3c7Ci0gICAgICAgICAgaWYoaGFuZGxlci5yZXF1ZXN0KSB7Ci0gICAgICAgICAgICAgIHZhciBsZWF2ZXMgPSBbXSwgZCA9IG5vZGUuX2RlcHRoOwotICAgICAgICAgICAgICBub2RlLmVhY2hMZXZlbCgwLCBsZXYsIGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgICAgICAgIGlmKG4uZHJhd24gJiYgCi0gICAgICAgICAgICAgICAgICAgIW4uYW55U3Vibm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgbGVhdmVzLnB1c2gobik7Ci0gICAgICAgICAgICAgICAgICAgbi5fbGV2ZWwgPSBsZXYgLSAobi5fZGVwdGggLSBkKTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIHRoaXMuZ3JvdXAucmVxdWVzdE5vZGVzKGxlYXZlcywgaGFuZGxlcik7Ci0gICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBoYW5kbGVyLm9uQ29tcGxldGUoKTsKLSAgICAgICAgfSwKLSAgICAgCi0gICAgICAgIGNvbnRyYWN0OiBmdW5jdGlvbihvbkNvbXBsZXRlLCBzd2l0Y2hlZCkgewotICAgICAgICAgIHZhciBvcm4gID0gdGhpcy5jb25maWcub3JpZW50YXRpb247Ci0gICAgICAgICAgdmFyIEdlb20gPSB0aGlzLmdlb20sIEdyb3VwID0gdGhpcy5ncm91cDsKLSAgICAgICAgICBpZihzd2l0Y2hlZCkgR2VvbS5zd2l0Y2hPcmllbnRhdGlvbihzd2l0Y2hlZCk7Ci0gICAgICAgICAgdmFyIG5vZGVzID0gZ2V0Tm9kZXNUb0hpZGUuY2FsbCh0aGlzKTsKLSAgICAgICAgICBpZihzd2l0Y2hlZCkgR2VvbS5zd2l0Y2hPcmllbnRhdGlvbihvcm4pOwotICAgICAgICAgIEdyb3VwLmNvbnRyYWN0KG5vZGVzLCAkLm1lcmdlKHRoaXMuY29udHJvbGxlciwgb25Db21wbGV0ZSkpOwotICAgICAgICB9LAotICAgICAgCi0gICAgICAgICBtb3ZlOiBmdW5jdGlvbihub2RlLCBvbkNvbXBsZXRlKSB7Ci0gICAgICAgICAgICB0aGlzLmNvbXB1dGUoJ2VuZCcsIGZhbHNlKTsKLSAgICAgICAgICAgIHZhciBtb3ZlID0gb25Db21wbGV0ZS5Nb3ZlLCBvZmZzZXQgPSB7Ci0gICAgICAgICAgICAgICAgJ3gnOiBtb3ZlLm9mZnNldFgsCi0gICAgICAgICAgICAgICAgJ3knOiBtb3ZlLm9mZnNldFkgCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYobW92ZS5lbmFibGUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmdlb20udHJhbnNsYXRlKG5vZGUuZW5kUG9zLmFkZChvZmZzZXQpLiRzY2FsZSgtMSksICJlbmQiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuZnguYW5pbWF0ZSgkLm1lcmdlKHRoaXMuY29udHJvbGxlciwgeyBtb2RlczogWydsaW5lYXInXSB9LCBvbkNvbXBsZXRlKSk7Ci0gICAgICAgICB9LAotICAgICAgCi0gICAgICAgIGV4cGFuZDogZnVuY3Rpb24gKG5vZGUsIG9uQ29tcGxldGUpIHsKLSAgICAgICAgICAgIHZhciBub2RlQXJyYXkgPSBnZXROb2Rlc1RvU2hvdy5jYWxsKHRoaXMsIG5vZGUpOwotICAgICAgICAgICAgdGhpcy5ncm91cC5leHBhbmQobm9kZUFycmF5LCAkLm1lcmdlKHRoaXMuY29udHJvbGxlciwgb25Db21wbGV0ZSkpOwotICAgICAgICB9LAotICAgIAotICAgICAgICBzZWxlY3RQYXRoOiBmdW5jdGlvbihub2RlKSB7Ci0gICAgICAgICAgdmFyIHRoYXQgPSB0aGlzOwotICAgICAgICAgIHRoaXMuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgeyBuLnNlbGVjdGVkID0gZmFsc2U7IH0pOyAKLSAgICAgICAgICBmdW5jdGlvbiBwYXRoKG5vZGUpIHsKLSAgICAgICAgICAgICAgaWYobm9kZSA9PSBudWxsIHx8IG5vZGUuc2VsZWN0ZWQpIHJldHVybjsKLSAgICAgICAgICAgICAgbm9kZS5zZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICQuZWFjaCh0aGF0Lmdyb3VwLmdldFNpYmxpbmdzKFtub2RlXSlbbm9kZS5pZF0sIAotICAgICAgICAgICAgICBmdW5jdGlvbihuKSB7IAotICAgICAgICAgICAgICAgICAgIG4uZXhpc3QgPSB0cnVlOyAKLSAgICAgICAgICAgICAgICAgICBuLmRyYXduID0gdHJ1ZTsgCi0gICAgICAgICAgICAgIH0pOyAgICAKLSAgICAgICAgICAgICAgdmFyIHBhcmVudHMgPSBub2RlLmdldFBhcmVudHMoKTsKLSAgICAgICAgICAgICAgcGFyZW50cyA9IChwYXJlbnRzLmxlbmd0aCA+IDApPyBwYXJlbnRzWzBdIDogbnVsbDsKLSAgICAgICAgICAgICAgcGF0aChwYXJlbnRzKTsKLSAgICAgICAgICB9OwotICAgICAgICAgIGZvcih2YXIgaT0wLCBucyA9IFtub2RlLmlkXS5jb25jYXQobm9kZXNJblBhdGgpOyBpIDwgbnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgcGF0aCh0aGlzLmdyYXBoLmdldE5vZGUobnNbaV0pKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAKLSAgICAgICAgLyoKLSAgICAgICAgTWV0aG9kOiBzZXRSb290Ci0gICAgIAotICAgICAgICAgU3dpdGNoZXMgdGhlIGN1cnJlbnQgcm9vdCBub2RlLiBDaGFuZ2VzIHRoZSB0b3BvbG9neSBvZiB0aGUgVHJlZS4KLSAgICAgCi0gICAgICAgIFBhcmFtZXRlcnM6Ci0gICAgICAgICAgIGlkIC0gKHN0cmluZykgVGhlIGlkIG9mIHRoZSBub2RlIHRvIGJlIHNldCBhcyByb290LgotICAgICAgICAgICBtZXRob2QgLSAoc3RyaW5nKSBTZXQgdGhpcyB0byAiYW5pbWF0ZSIgaWYgeW91IHdhbnQgdG8gYW5pbWF0ZSB0aGUgdHJlZSBhZnRlciBhZGRpbmcgdGhlIHN1YnRyZWUuIFlvdSBjYW4gYWxzbyBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gInJlcGxvdCIgdG8ganVzdCByZXBsb3QgdGhlIHN1YnRyZWUuCi0gICAgICAgICAgIG9uQ29tcGxldGUgLSAob3B0aW9uYWx8b2JqZWN0KSBBbiBhY3Rpb24gdG8gcGVyZm9ybSBhZnRlciB0aGUgYW5pbWF0aW9uIChpZiBhbnkpLgotIAotICAgICAgICBFeGFtcGxlOgotCi0gICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICAgIHN0LnNldFJvb3QoJ25vZGVJZCcsICdhbmltYXRlJywgewotICAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgYWxlcnQoJ2NvbXBsZXRlIScpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgICAgKGVuZCBjb2RlKQotICAgICAqLwotICAgICBzZXRSb290OiBmdW5jdGlvbihpZCwgbWV0aG9kLCBvbkNvbXBsZXRlKSB7Ci0gICAgICAgIAlpZih0aGlzLmJ1c3kpIHJldHVybjsKLSAgICAgICAgCXRoaXMuYnVzeSA9IHRydWU7Ci0gICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLCBjYW52YXMgPSB0aGlzLmNhbnZhczsKLSAgICAgICAgCXZhciByb290Tm9kZSA9IHRoaXMuZ3JhcGguZ2V0Tm9kZSh0aGlzLnJvb3QpOwotICAgICAgICAJdmFyIGNsaWNrZWROb2RlID0gdGhpcy5ncmFwaC5nZXROb2RlKGlkKTsKLSAgICAgICAgCWZ1bmN0aW9uICRzZXRSb290KCkgewotICAgICAgICAgICAgCWlmKHRoaXMuY29uZmlnLm11bHRpdHJlZSAmJiBjbGlja2VkTm9kZS5kYXRhLiRvcm4pIHsKLSAgICAgICAgICAgIAkJdmFyIG9ybiA9IGNsaWNrZWROb2RlLmRhdGEuJG9ybjsKLSAgICAgICAgICAgIAkJdmFyIG9wcCA9IHsKLSAgICAgICAgICAgIAkJCQknbGVmdCc6ICdyaWdodCcsCi0gICAgICAgICAgICAJCQkJJ3JpZ2h0JzogJ2xlZnQnLAotICAgICAgICAgICAgCQkJCSd0b3AnOiAnYm90dG9tJywKLSAgICAgICAgICAgIAkJCQknYm90dG9tJzogJ3RvcCcKLSAgICAgICAgICAgIAkJfVtvcm5dOwotICAgICAgICAgICAgCQlyb290Tm9kZS5kYXRhLiRvcm4gPSBvcHA7Ci0gICAgICAgICAgICAJCShmdW5jdGlvbiB0YWcocm9vdE5vZGUpIHsKLSAgICAgICAgICAgICAgICAJCXJvb3ROb2RlLmVhY2hTdWJub2RlKGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgICAgICAJCQlpZihuLmlkICE9IGlkKSB7Ci0gICAgICAgICAgICAgICAgCQkJCW4uZGF0YS4kb3JuID0gb3BwOwotICAgICAgICAgICAgICAgIAkJCQl0YWcobik7Ci0gICAgICAgICAgICAgICAgCQkJfQotICAgICAgICAgICAgICAgIAkJfSk7Ci0gICAgICAgICAgICAJCX0pKHJvb3ROb2RlKTsKLSAgICAgICAgICAgIAkJZGVsZXRlIGNsaWNrZWROb2RlLmRhdGEuJG9ybjsKLSAgICAgICAgICAgIAl9Ci0gICAgICAgICAgICAJdGhpcy5yb290ID0gaWQ7Ci0gICAgICAgICAgICAJdGhpcy5jbGlja2VkTm9kZSA9IGNsaWNrZWROb2RlOwotICAgICAgICAgICAgCXRoaXMuZ3JhcGguY29tcHV0ZUxldmVscyh0aGlzLnJvb3QsIDAsICJpZ25vcmUiKTsKLSAgICAgICAgICAgIAl0aGlzLmdlb20uc2V0UmlnaHRMZXZlbFRvU2hvdyhjbGlja2VkTm9kZSwgY2FudmFzLCB7Ci0gICAgICAgICAgICAJICBleGVjSGlkZTogZmFsc2UsCi0gICAgICAgICAgICAJICBvblNob3c6IGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgICAgIAkgICAgaWYoIW5vZGUuZHJhd24pIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS5kcmF3biA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0RGF0YSgnYWxwaGEnLCAxLCAnZW5kJyk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0RGF0YSgnYWxwaGEnLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS5wb3Muc2V0YyhjbGlja2VkTm9kZS5wb3MueCwgY2xpY2tlZE5vZGUucG9zLnkpOwotICAgICAgICAgICAgCSAgICB9Ci0gICAgICAgICAgICAJICB9Ci0gICAgICAgICAgICAJfSk7Ci0gICAgICAgICAgICAgIHRoaXMuY29tcHV0ZSgnZW5kJyk7Ci0gICAgICAgICAgICAgIHRoaXMuYnVzeSA9IHRydWU7Ci0gICAgICAgICAgICAgIHRoaXMuZnguYW5pbWF0ZSh7Ci0gICAgICAgICAgICAgICAgbW9kZXM6IFsnbGluZWFyJywgJ25vZGUtcHJvcGVydHk6YWxwaGEnXSwKLSAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgIHRoYXQuYnVzeSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgdGhhdC5vbkNsaWNrKGlkLCB7Ci0gICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGUgJiYgb25Db21wbGV0ZS5vbkNvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIAl9Ci0KLSAgICAgICAgCS8vIGRlbGV0ZSBwcmV2aW91cyBvcmllbnRhdGlvbnMgKGlmIGFueSkKLSAgICAgICAgCWRlbGV0ZSByb290Tm9kZS5kYXRhLiRvcm5zOwotCi0gICAgICAgIAlpZihtZXRob2QgPT0gJ2FuaW1hdGUnKSB7Ci0gICAgICAgIAkgICRzZXRSb290LmNhbGwodGhpcyk7Ci0gICAgICAgIAkgIHRoYXQuc2VsZWN0UGF0aChjbGlja2VkTm9kZSk7Ci0gICAgICAgIAl9IGVsc2UgaWYobWV0aG9kID09ICdyZXBsb3QnKSB7Ci0gICAgICAgIAkJJHNldFJvb3QuY2FsbCh0aGlzKTsKLSAgICAgICAgCQl0aGlzLnNlbGVjdCh0aGlzLnJvb3QpOwotICAgICAgICAJfQotICAgICB9LAotCi0gICAgIC8qCi0gICAgICAgICAgIE1ldGhvZDogYWRkU3VidHJlZQotICAgICAgICAKLSAgICAgICAgICAgIEFkZHMgYSBzdWJ0cmVlLgotICAgICAgICAKLSAgICAgICAgICAgUGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgc3VidHJlZSAtIChvYmplY3QpIEEgSlNPTiBUcmVlIG9iamVjdC4gU2VlIGFsc28gPExvYWRlci5sb2FkSlNPTj4uCi0gICAgICAgICAgICAgIG1ldGhvZCAtIChzdHJpbmcpIFNldCB0aGlzIHRvICJhbmltYXRlIiBpZiB5b3Ugd2FudCB0byBhbmltYXRlIHRoZSB0cmVlIGFmdGVyIGFkZGluZyB0aGUgc3VidHJlZS4gWW91IGNhbiBhbHNvIHNldCB0aGlzIHBhcmFtZXRlciB0byAicmVwbG90IiB0byBqdXN0IHJlcGxvdCB0aGUgc3VidHJlZS4KLSAgICAgICAgICAgICAgb25Db21wbGV0ZSAtIChvcHRpb25hbHxvYmplY3QpIEFuIGFjdGlvbiB0byBwZXJmb3JtIGFmdGVyIHRoZSBhbmltYXRpb24gKGlmIGFueSkuCi0gICAgCi0gICAgICAgICAgIEV4YW1wbGU6Ci0KLSAgICAgICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgICAgICAgc3QuYWRkU3VidHJlZShqc29uLCAnYW5pbWF0ZScsIHsKLSAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgIGFsZXJ0KCdjb21wbGV0ZSEnKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgIChlbmQgY29kZSkKLSAgICAgICAgKi8KLSAgICAgICAgYWRkU3VidHJlZTogZnVuY3Rpb24oc3VidHJlZSwgbWV0aG9kLCBvbkNvbXBsZXRlKSB7Ci0gICAgICAgICAgICBpZihtZXRob2QgPT0gJ3JlcGxvdCcpIHsKLSAgICAgICAgICAgICAgICB0aGlzLm9wLnN1bShzdWJ0cmVlLCAkLmV4dGVuZCh7IHR5cGU6ICdyZXBsb3QnIH0sIG9uQ29tcGxldGUgfHwge30pKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdhbmltYXRlJykgewotICAgICAgICAgICAgICAgIHRoaXMub3Auc3VtKHN1YnRyZWUsICQuZXh0ZW5kKHsgdHlwZTogJ2ZhZGU6c2VxJyB9LCBvbkNvbXBsZXRlIHx8IHt9KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgCi0gICAgICAgIC8qCi0gICAgICAgICAgIE1ldGhvZDogcmVtb3ZlU3VidHJlZQotICAgICAgICAKLSAgICAgICAgICAgIFJlbW92ZXMgYSBzdWJ0cmVlLgotICAgICAgICAKLSAgICAgICAgICAgUGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgaWQgLSAoc3RyaW5nKSBUaGUgX2lkXyBvZiB0aGUgc3VidHJlZSB0byBiZSByZW1vdmVkLgotICAgICAgICAgICAgICByZW1vdmVSb290IC0gKGJvb2xlYW4pIERlZmF1bHQncyAqZmFsc2UqLiBSZW1vdmUgdGhlIHJvb3Qgb2YgdGhlIHN1YnRyZWUgb3Igb25seSBpdHMgc3Vibm9kZXMuCi0gICAgICAgICAgICAgIG1ldGhvZCAtIChzdHJpbmcpIFNldCB0aGlzIHRvICJhbmltYXRlIiBpZiB5b3Ugd2FudCB0byBhbmltYXRlIHRoZSB0cmVlIGFmdGVyIHJlbW92aW5nIHRoZSBzdWJ0cmVlLiBZb3UgY2FuIGFsc28gc2V0IHRoaXMgcGFyYW1ldGVyIHRvICJyZXBsb3QiIHRvIGp1c3QgcmVwbG90IHRoZSBzdWJ0cmVlLgotICAgICAgICAgICAgICBvbkNvbXBsZXRlIC0gKG9wdGlvbmFsfG9iamVjdCkgQW4gYWN0aW9uIHRvIHBlcmZvcm0gYWZ0ZXIgdGhlIGFuaW1hdGlvbiAoaWYgYW55KS4KLQotICAgICAgICAgIEV4YW1wbGU6Ci0KLSAgICAgICAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgICAgICAgIHN0LnJlbW92ZVN1YnRyZWUoJ2lkT2ZTdWJ0cmVlVG9CZVJlbW92ZWQnLCBmYWxzZSwgJ2FuaW1hdGUnLCB7Ci0gICAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFsZXJ0KCdjb21wbGV0ZSEnKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgKGVuZCBjb2RlKQotICAgIAotICAgICAgICAqLwotICAgICAgICByZW1vdmVTdWJ0cmVlOiBmdW5jdGlvbihpZCwgcmVtb3ZlUm9vdCwgbWV0aG9kLCBvbkNvbXBsZXRlKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZ3JhcGguZ2V0Tm9kZShpZCksIHN1YmlkcyA9IFtdOwotICAgICAgICAgICAgbm9kZS5lYWNoTGV2ZWwoKyFyZW1vdmVSb290LCBmYWxzZSwgZnVuY3Rpb24obikgewotICAgICAgICAgICAgICAgIHN1Ymlkcy5wdXNoKG4uaWQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBpZihtZXRob2QgPT0gJ3JlcGxvdCcpIHsKLSAgICAgICAgICAgICAgICB0aGlzLm9wLnJlbW92ZU5vZGUoc3ViaWRzLCAkLmV4dGVuZCh7IHR5cGU6ICdyZXBsb3QnIH0sIG9uQ29tcGxldGUgfHwge30pKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdhbmltYXRlJykgewotICAgICAgICAgICAgICAgIHRoaXMub3AucmVtb3ZlTm9kZShzdWJpZHMsICQuZXh0ZW5kKHsgdHlwZTogJ2ZhZGU6c2VxJ30sIG9uQ29tcGxldGUgfHwge30pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAKLSAgICAgICAgLyoKLSAgICAgICAgICAgTWV0aG9kOiBzZWxlY3QKLSAgICAgICAgCi0gICAgICAgICAgICBTZWxlY3RzIGEgbm9kZSBpbiB0aGUgPFNUPiB3aXRob3V0IHBlcmZvcm1pbmcgYW4gYW5pbWF0aW9uLiBVc2VmdWwgd2hlbiBzZWxlY3RpbmcgCi0gICAgICAgICAgICBub2RlcyB3aGljaCBhcmUgY3VycmVudGx5IGhpZGRlbiBvciBkZWVwIGluc2lkZSB0aGUgdHJlZS4KLQotICAgICAgICAgIFBhcmFtZXRlcnM6Ci0gICAgICAgICAgICBpZCAtIChzdHJpbmcpIFRoZSBpZCBvZiB0aGUgbm9kZSB0byBzZWxlY3QuCi0gICAgICAgICAgICBvbkNvbXBsZXRlIC0gKG9wdGlvbmFsfG9iamVjdCkgYW4gb25Db21wbGV0ZSBjYWxsYmFjay4KLQotICAgICAgICAgIEV4YW1wbGU6Ci0gICAgICAgICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICAgICAgICBzdC5zZWxlY3QoJ215bm9kZWlkJywgewotICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhbGVydCgnY29tcGxldGUhJyk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgIChlbmQgY29kZSkKLSAgICAgICAgKi8KLSAgICAgICAgc2VsZWN0OiBmdW5jdGlvbihpZCwgb25Db21wbGV0ZSkgewotICAgICAgICAgICAgdmFyIGdyb3VwID0gdGhpcy5ncm91cCwgZ2VvbSA9IHRoaXMuZ2VvbTsKLSAgICAgICAgICAgIHZhciBub2RlPSAgdGhpcy5ncmFwaC5nZXROb2RlKGlkKSwgY2FudmFzID0gdGhpcy5jYW52YXM7Ci0gICAgICAgICAgICB2YXIgcm9vdCAgPSB0aGlzLmdyYXBoLmdldE5vZGUodGhpcy5yb290KTsKLSAgICAgICAgICAgIHZhciBjb21wbGV0ZSA9ICQubWVyZ2UodGhpcy5jb250cm9sbGVyLCBvbkNvbXBsZXRlKTsKLSAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpczsKLSAgICAKLSAgICAgICAgICAgIGNvbXBsZXRlLm9uQmVmb3JlQ29tcHV0ZShub2RlKTsKLSAgICAgICAgICAgIHRoaXMuc2VsZWN0UGF0aChub2RlKTsKLSAgICAgICAgICAgIHRoaXMuY2xpY2tlZE5vZGU9IG5vZGU7Ci0gICAgICAgICAgICB0aGlzLnJlcXVlc3ROb2Rlcyhub2RlLCB7Ci0gICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKXsKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAuaGlkZShncm91cC5wcmVwYXJlKGdldE5vZGVzVG9IaWRlLmNhbGwodGhhdCkpLCBjb21wbGV0ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGdlb20uc2V0UmlnaHRMZXZlbFRvU2hvdyhub2RlLCBjYW52YXMpOwotICAgICAgICAgICAgICAgICAgICB0aGF0LmNvbXB1dGUoImN1cnJlbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgdGhhdC5ncmFwaC5lYWNoTm9kZShmdW5jdGlvbihuKSB7IAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IG4ucG9zLmdldGModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuLnN0YXJ0UG9zLnNldGMocG9zLngsIHBvcy55KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG4uZW5kUG9zLnNldGMocG9zLngsIHBvcy55KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG4udmlzaXRlZCA9IGZhbHNlOyAKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSB7IHg6IGNvbXBsZXRlLm9mZnNldFgsIHk6IGNvbXBsZXRlLm9mZnNldFkgfTsKLSAgICAgICAgICAgICAgICAgICAgdGhhdC5nZW9tLnRyYW5zbGF0ZShub2RlLmVuZFBvcy5hZGQob2Zmc2V0KS4kc2NhbGUoLTEpLCBbInN0YXJ0IiwgImN1cnJlbnQiLCAiZW5kIl0pOwotICAgICAgICAgICAgICAgICAgICBncm91cC5zaG93KGdldE5vZGVzVG9TaG93LmNhbGwodGhhdCkpOyAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIHRoYXQucGxvdCgpOwotICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZS5vbkFmdGVyQ29tcHV0ZSh0aGF0LmNsaWNrZWROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGUub25Db21wbGV0ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOyAgICAgCi0gICAgICAgIH0sCi0gICAgCi0gICAgICAvKgotICAgICAgICAgTWV0aG9kOiBvbkNsaWNrCi0gICAgCi0gICAgICAgIEFuaW1hdGVzIHRoZSA8U1Q+IHRvIGNlbnRlciB0aGUgbm9kZSBzcGVjaWZpZWQgYnkgKmlkKi4KLSAgICAgICAgICAgIAotICAgICAgICBQYXJhbWV0ZXJzOgotICAgICAgICAKLSAgICAgICAgaWQgLSAoc3RyaW5nKSBBIG5vZGUgaWQuCi0gICAgICAgIG9wdGlvbnMgLSAob3B0aW9uYWx8b2JqZWN0KSBBIGdyb3VwIG9mIG9wdGlvbnMgYW5kIGNhbGxiYWNrcyBkZXNjcmliZWQgYmVsb3cuCi0gICAgICAgIG9uQ29tcGxldGUgLSAob2JqZWN0KSBBbiBvYmplY3QgY2FsbGJhY2sgY2FsbGVkIHdoZW4gdGhlIGFuaW1hdGlvbiBmaW5pc2hlcy4KLSAgICAgICAgTW92ZSAtIChvYmplY3QpIEFuIG9iamVjdCB0aGF0IGhhcyBhcyBwcm9wZXJ0aWVzIF9vZmZzZXRYXyBvciBfb2Zmc2V0WV8gZm9yIGFkZGluZyBzb21lIG9mZnNldCBwb3NpdGlvbiB0byB0aGUgY2VudGVyZWQgbm9kZS4KLQotICAgICAgICBFeGFtcGxlOgotCi0gICAgICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgICAgIHN0Lm9uQ2xpY2soJ215bm9kZWlkJywgewotCSAgICAgICAgICBNb3ZlOiB7Ci0JICAgICAgICAgIAllbmFibGU6IHRydWUsCi0JICAgICAgICAgICAgb2Zmc2V0WDogMzAsCi0JICAgICAgICAgICAgb2Zmc2V0WTogNQotCSAgICAgICAgICB9LAotCSAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLQkgICAgICAgICAgICAgIGFsZXJ0KCd5YXkhJyk7Ci0JICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgICAgKGVuZCBjb2RlKQotICAgIAotICAgICAgICAqLyAgICAKLSAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIChpZCwgb3B0aW9ucykgewotICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jYW52YXMsIHRoYXQgPSB0aGlzLCBHZW9tID0gdGhpcy5nZW9tLCBjb25maWcgPSB0aGlzLmNvbmZpZzsKLSAgICAgICAgdmFyIGlubmVyQ29udHJvbGxlciA9IHsKLSAgICAgICAgICAgIE1vdmU6IHsKLSAgICAgICAgCSAgICBlbmFibGU6IHRydWUsCi0gICAgICAgICAgICAgIG9mZnNldFg6IGNvbmZpZy5vZmZzZXRYIHx8IDAsCi0gICAgICAgICAgICAgIG9mZnNldFk6IGNvbmZpZy5vZmZzZXRZIHx8IDAgIAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNldFJpZ2h0TGV2ZWxUb1Nob3dDb25maWc6IGZhbHNlLAotICAgICAgICAgICAgb25CZWZvcmVSZXF1ZXN0OiAkLmVtcHR5LAotICAgICAgICAgICAgb25CZWZvcmVDb250cmFjdDogJC5lbXB0eSwKLSAgICAgICAgICAgIG9uQmVmb3JlTW92ZTogJC5lbXB0eSwKLSAgICAgICAgICAgIG9uQmVmb3JlRXhwYW5kOiAkLmVtcHR5Ci0gICAgICAgIH07Ci0gICAgICAgIHZhciBjb21wbGV0ZSA9ICQubWVyZ2UodGhpcy5jb250cm9sbGVyLCBpbm5lckNvbnRyb2xsZXIsIG9wdGlvbnMpOwotICAgICAgICAKLSAgICAgICAgaWYoIXRoaXMuYnVzeSkgewotICAgICAgICAgICAgdGhpcy5idXN5ID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5ncmFwaC5nZXROb2RlKGlkKTsKLSAgICAgICAgICAgIHRoaXMuc2VsZWN0UGF0aChub2RlLCB0aGlzLmNsaWNrZWROb2RlKTsKLSAgICAgICAgICAgCXRoaXMuY2xpY2tlZE5vZGUgPSBub2RlOwotICAgICAgICAgICAgY29tcGxldGUub25CZWZvcmVDb21wdXRlKG5vZGUpOwotICAgICAgICAgICAgY29tcGxldGUub25CZWZvcmVSZXF1ZXN0KG5vZGUpOwotICAgICAgICAgICAgdGhpcy5yZXF1ZXN0Tm9kZXMobm9kZSwgewotICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZS5vbkJlZm9yZUNvbnRyYWN0KG5vZGUpOwotICAgICAgICAgICAgICAgICAgICB0aGF0LmNvbnRyYWN0KHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlb20uc2V0UmlnaHRMZXZlbFRvU2hvdyhub2RlLCBjYW52YXMsIGNvbXBsZXRlLnNldFJpZ2h0TGV2ZWxUb1Nob3dDb25maWcpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlLm9uQmVmb3JlTW92ZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Lm1vdmUobm9kZSwgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3ZlOiBjb21wbGV0ZS5Nb3ZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlLm9uQmVmb3JlRXhwYW5kKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5leHBhbmQobm9kZSwgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmJ1c3kgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGUub25BZnRlckNvbXB1dGUoaWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZS5vbkNvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7IC8vIGV4cGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7IC8vIG1vdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSk7Ly8gY29udHJhY3QKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsvLyByZXF1ZXN0Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLQotfSkoKTsKLQotJGppdC5TVC4kZXh0ZW5kID0gdHJ1ZTsKLQotLyoKLSAgIENsYXNzOiBTVC5PcAotICAgIAotICAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguT3A+LgotCi0gICBFeHRlbmRzOgotCi0gICBBbGwgPEdyYXBoLk9wPiBtZXRob2RzCi0gICAKLSAgIFNlZSBhbHNvOgotICAgCi0gICA8R3JhcGguT3A+Ci0KLSovCi0kaml0LlNULk9wID0gbmV3IENsYXNzKHsKLQotICBJbXBsZW1lbnRzOiBHcmFwaC5PcAotICAgIAotfSk7Ci0KLS8qCi0gICAgCi0gICAgIFBlcmZvcm1zIG9wZXJhdGlvbnMgb24gZ3JvdXAgb2Ygbm9kZXMuCi0KLSovCi0kaml0LlNULkdyb3VwID0gbmV3IENsYXNzKHsKLSAgICAKLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopIHsKLSAgICAgICAgdGhpcy52aXogPSB2aXo7Ci0gICAgICAgIHRoaXMuY2FudmFzID0gdml6LmNhbnZhczsKLSAgICAgICAgdGhpcy5jb25maWcgPSB2aXouY29uZmlnOwotICAgICAgICB0aGlzLmFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb247Ci0gICAgICAgIHRoaXMubm9kZXMgPSBudWxsOwotICAgIH0sCi0gICAgCi0gICAgLyoKLSAgICAKLSAgICAgICBDYWxscyB0aGUgcmVxdWVzdCBtZXRob2Qgb24gdGhlIGNvbnRyb2xsZXIgdG8gcmVxdWVzdCBhIHN1YnRyZWUgZm9yIGVhY2ggbm9kZS4gCi0gICAgKi8KLSAgICByZXF1ZXN0Tm9kZXM6IGZ1bmN0aW9uKG5vZGVzLCBjb250cm9sbGVyKSB7Ci0gICAgICAgIHZhciBjb3VudGVyID0gMCwgbGVuID0gbm9kZXMubGVuZ3RoLCBub2RlU2VsZWN0ZWQgPSB7fTsKLSAgICAgICAgdmFyIGNvbXBsZXRlID0gZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIub25Db21wbGV0ZSgpOyB9OwotICAgICAgICB2YXIgdml6ID0gdGhpcy52aXo7Ci0gICAgICAgIGlmKGxlbiA9PSAwKSBjb21wbGV0ZSgpOwotICAgICAgICBmb3IodmFyIGk9MDsgaTxsZW47IGkrKykgewotICAgICAgICAgICAgbm9kZVNlbGVjdGVkW25vZGVzW2ldLmlkXSA9IG5vZGVzW2ldOwotICAgICAgICAgICAgY29udHJvbGxlci5yZXF1ZXN0KG5vZGVzW2ldLmlkLCBub2Rlc1tpXS5fbGV2ZWwsIHsKLSAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbihub2RlSWQsIGRhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYoZGF0YSAmJiBkYXRhLmNoaWxkcmVuKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmlkID0gbm9kZUlkOwotICAgICAgICAgICAgICAgICAgICAgICAgdml6Lm9wLnN1bShkYXRhLCB7IHR5cGU6ICdub3RoaW5nJyB9KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZigrK2NvdW50ZXIgPT0gbGVuKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2aXouZ3JhcGguY29tcHV0ZUxldmVscyh2aXoucm9vdCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgCi0gICAgICAgQ29sbGFwc2VzIGdyb3VwIG9mIG5vZGVzLiAKLSAgICAqLwotICAgIGNvbnRyYWN0OiBmdW5jdGlvbihub2RlcywgY29udHJvbGxlcikgewotICAgICAgICB2YXIgdml6ID0gdGhpcy52aXo7Ci0gICAgICAgIHZhciB0aGF0ID0gdGhpczsKLQotICAgICAgICBub2RlcyA9IHRoaXMucHJlcGFyZShub2Rlcyk7Ci0gICAgICAgIHRoaXMuYW5pbWF0aW9uLnNldE9wdGlvbnMoJC5tZXJnZShjb250cm9sbGVyLCB7Ci0gICAgICAgICAgICAkYW5pbWF0aW5nOiBmYWxzZSwKLSAgICAgICAgICAgIGNvbXB1dGU6IGZ1bmN0aW9uKGRlbHRhKSB7Ci0gICAgICAgICAgICAgIGlmKGRlbHRhID09IDEpIGRlbHRhID0gMC45OTsKLSAgICAgICAgICAgICAgdGhhdC5wbG90U3RlcCgxIC0gZGVsdGEsIGNvbnRyb2xsZXIsIHRoaXMuJGFuaW1hdGluZyk7Ci0gICAgICAgICAgICAgIHRoaXMuJGFuaW1hdGluZyA9ICdjb250cmFjdCc7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgCi0gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhhdC5oaWRlKG5vZGVzLCBjb250cm9sbGVyKTsKLSAgICAgICAgICAgIH0gICAgICAgCi0gICAgICAgIH0pKS5zdGFydCgpOwotICAgIH0sCi0gICAgCi0gICAgaGlkZTogZnVuY3Rpb24obm9kZXMsIGNvbnRyb2xsZXIpIHsKLSAgICAgICAgdmFyIHZpeiA9IHRoaXMudml6OwotICAgICAgICBmb3IodmFyIGk9MDsgaTxub2Rlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgLy8gVE9ETyBub2RlcyBhcmUgcmVxdWVzdGVkIG9uIGRlbWFuZCwgYnV0IG5vdAotICAgICAgICAgICAgLy8gZGVsZXRlZCB3aGVuIGhpZGRlbi4gV291bGQgdGhhdCBiZSBhIGdvb2QgZmVhdHVyZT8KLSAgICAgICAgICAgIC8vIEN1cnJlbnRseSB0aGF0IGZlYXR1cmUgaXMgYnVnZ3ksIHNvIEknbGwgdHVybiBpdCBvZmYKLSAgICAgICAgICAgIC8vIEFjdHVhbGx5IHRoaXMgZmVhdHVyZSBpcyBidWdneSBiZWNhdXNlIHRyaW1taW5nIHNob3VsZCB0YWtlCi0gICAgICAgICAgICAvLyBwbGFjZSBvbkFmdGVyQ29tcHV0ZSBhbmQgbm90IHJpZ2h0IGFmdGVyIGNvbGxhcHNpbmcgbm9kZXMuCi0gICAgICAgICAgICBpZiAodHJ1ZSB8fCAhY29udHJvbGxlciB8fCAhY29udHJvbGxlci5yZXF1ZXN0KSB7Ci0gICAgICAgICAgICAgICAgbm9kZXNbaV0uZWFjaExldmVsKDEsIGZhbHNlLCBmdW5jdGlvbihlbGVtKXsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0uZXhpc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICQuZXh0ZW5kKGVsZW0sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHJhd24nOiBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhpc3QnOiBmYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyIGlkcyA9IFtdOwotICAgICAgICAgICAgICAgIG5vZGVzW2ldLmVhY2hMZXZlbCgxLCBmYWxzZSwgZnVuY3Rpb24obikgewotICAgICAgICAgICAgICAgICAgICBpZHMucHVzaChuLmlkKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB2aXoub3AucmVtb3ZlTm9kZShpZHMsIHsgJ3R5cGUnOiAnbm90aGluZycgfSk7Ci0gICAgICAgICAgICAgICAgdml6LmxhYmVscy5jbGVhckxhYmVscygpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNvbnRyb2xsZXIub25Db21wbGV0ZSgpOwotICAgIH0sICAgIAotICAgIAotCi0gICAgLyoKLSAgICAgICBFeHBhbmRzIGdyb3VwIG9mIG5vZGVzLiAKLSAgICAqLwotICAgIGV4cGFuZDogZnVuY3Rpb24obm9kZXMsIGNvbnRyb2xsZXIpIHsKLSAgICAgICAgdmFyIHRoYXQgPSB0aGlzOwotICAgICAgICB0aGlzLnNob3cobm9kZXMpOwotICAgICAgICB0aGlzLmFuaW1hdGlvbi5zZXRPcHRpb25zKCQubWVyZ2UoY29udHJvbGxlciwgewotICAgICAgICAgICAgJGFuaW1hdGluZzogZmFsc2UsCi0gICAgICAgICAgICBjb21wdXRlOiBmdW5jdGlvbihkZWx0YSkgewotICAgICAgICAgICAgICAgIHRoYXQucGxvdFN0ZXAoZGVsdGEsIGNvbnRyb2xsZXIsIHRoaXMuJGFuaW1hdGluZyk7Ci0gICAgICAgICAgICAgICAgdGhpcy4kYW5pbWF0aW5nID0gJ2V4cGFuZCc7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgCi0gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhhdC5wbG90U3RlcCh1bmRlZmluZWQsIGNvbnRyb2xsZXIsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBjb250cm9sbGVyLm9uQ29tcGxldGUoKTsKLSAgICAgICAgICAgIH0gICAgICAgCi0gICAgICAgIH0pKS5zdGFydCgpOwotICAgICAgICAKLSAgICB9LAotICAgIAotICAgIHNob3c6IGZ1bmN0aW9uKG5vZGVzKSB7Ci0gICAgICAgIHZhciBjb25maWcgPSB0aGlzLmNvbmZpZzsKLSAgICAgICAgdGhpcy5wcmVwYXJlKG5vZGVzKTsKLSAgICAgICAgJC5lYWNoKG5vZGVzLCBmdW5jdGlvbihuKSB7Ci0gICAgICAgIAkvLyBjaGVjayBmb3Igcm9vdCBub2RlcyBpZiBtdWx0aXRyZWUKLSAgICAgICAgCWlmKGNvbmZpZy5tdWx0aXRyZWUgJiYgISgnJG9ybicgaW4gbi5kYXRhKSkgewotICAgICAgICAJCWRlbGV0ZSBuLmRhdGEuJG9ybnM7Ci0gICAgICAgIAkJdmFyIG9ybnMgPSAnICc7Ci0gICAgICAgIAkJbi5lYWNoU3Vibm9kZShmdW5jdGlvbihjaCkgewotICAgICAgICAJCQlpZigoJyRvcm4nIGluIGNoLmRhdGEpIAotICAgICAgICAJCQkJCSYmIG9ybnMuaW5kZXhPZihjaC5kYXRhLiRvcm4pIDwgMCAKLSAgICAgICAgCQkJCQkmJiBjaC5leGlzdCAmJiAhY2guZHJhd24pIHsKLSAgICAgICAgCQkJCW9ybnMgKz0gY2guZGF0YS4kb3JuICsgJyAnOwotICAgICAgICAJCQl9Ci0gICAgICAgIAkJfSk7Ci0gICAgICAgIAkJbi5kYXRhLiRvcm5zID0gb3JuczsKLSAgICAgICAgCX0KLSAgICAgICAgICAgIG4uZWFjaExldmVsKDAsIGNvbmZpZy5sZXZlbHNUb1Nob3csIGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgIAlpZihuLmV4aXN0KSBuLmRyYXduID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pOyAgICAgCi0gICAgICAgIH0pOwotICAgIH0sCi0gICAgCi0gICAgcHJlcGFyZTogZnVuY3Rpb24obm9kZXMpIHsKLSAgICAgICAgdGhpcy5ub2RlcyA9IHRoaXMuZ2V0Tm9kZXNXaXRoQ2hpbGRyZW4obm9kZXMpOwotICAgICAgICByZXR1cm4gdGhpcy5ub2RlczsKLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICAgRmlsdGVycyBhbiBhcnJheSBvZiBub2RlcyBsZWF2aW5nIG9ubHkgbm9kZXMgd2l0aCBjaGlsZHJlbi4KLSAgICAqLwotICAgIGdldE5vZGVzV2l0aENoaWxkcmVuOiBmdW5jdGlvbihub2RlcykgewotICAgICAgICB2YXIgYW5zID0gW10sIGNvbmZpZyA9IHRoaXMuY29uZmlnLCByb290ID0gdGhpcy52aXoucm9vdDsKLSAgICAgICAgbm9kZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAoYS5fZGVwdGggPD0gYi5fZGVwdGgpIC0gKGEuX2RlcHRoID49IGIuX2RlcHRoKTsgfSk7Ci0gICAgICAgIGZvcih2YXIgaT0wOyBpPG5vZGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBpZihub2Rlc1tpXS5hbnlTdWJub2RlKCJleGlzdCIpKSB7Ci0gICAgICAgICAgICAJZm9yICh2YXIgaiA9IGkrMSwgZGVzYyA9IGZhbHNlOyAhZGVzYyAmJiBqIDwgbm9kZXMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaWYoIWNvbmZpZy5tdWx0aXRyZWUgfHwgJyRvcm4nIGluIG5vZGVzW2pdLmRhdGEpIHsKLSAgICAgICAgICAgICAgICAJCWRlc2MgPSBkZXNjIHx8IG5vZGVzW2ldLmlzRGVzY2VuZGFudE9mKG5vZGVzW2pdLmlkKTsgICAgICAgICAgICAgICAgICAgIAkKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZighZGVzYykgYW5zLnB1c2gobm9kZXNbaV0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhbnM7Ci0gICAgfSwKLSAgICAKLSAgICBwbG90U3RlcDogZnVuY3Rpb24oZGVsdGEsIGNvbnRyb2xsZXIsIGFuaW1hdGluZykgewotICAgICAgICB2YXIgdml6ID0gdGhpcy52aXosCi0gICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnLAotICAgICAgICBjYW52YXMgPSB2aXouY2FudmFzLCAKLSAgICAgICAgY3R4ID0gY2FudmFzLmdldEN0eCgpLAotICAgICAgICBub2RlcyA9IHRoaXMubm9kZXM7Ci0gICAgICAgIHZhciBpLCBub2RlOwotICAgICAgICAvLyBoaWRlIG5vZGVzIHRoYXQgYXJlIG1lYW50IHRvIGJlIGNvbGxhcHNlZC9leHBhbmRlZAotICAgICAgICB2YXIgbmRzID0ge307Ci0gICAgICAgIGZvcihpPTA7IGk8bm9kZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICBub2RlID0gbm9kZXNbaV07Ci0gICAgICAgICAgbmRzW25vZGUuaWRdID0gW107Ci0gICAgICAgICAgdmFyIHJvb3QgPSBjb25maWcubXVsdGl0cmVlICYmICEoJyRvcm4nIGluIG5vZGUuZGF0YSk7Ci0gICAgICAgICAgdmFyIG9ybnMgPSByb290ICYmIG5vZGUuZGF0YS4kb3JuczsKLSAgICAgICAgICBub2RlLmVhY2hTdWJncmFwaChmdW5jdGlvbihuKSB7IAotICAgICAgICAgICAgLy8gVE9ETyhuaWNvKTogQ2xlYW51cAotICAgICAgICAJICAvLyBzcGVjaWFsIGNoZWNrIGZvciByb290IG5vZGUgc3Vibm9kZXMgd2hlbgotICAgICAgICAJICAvLyBtdWx0aXRyZWUgaXMgY2hlY2tlZC4KLSAgICAgICAgCSAgaWYocm9vdCAmJiBvcm5zICYmIG9ybnMuaW5kZXhPZihuLmRhdGEuJG9ybikgPiAwIAotICAgICAgICAJCQkgICYmIG4uZHJhd24pIHsKLSAgICAgICAgCQkgIG4uZHJhd24gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgIG5kc1tub2RlLmlkXS5wdXNoKG4pOwotICAgICAgICAgICAgICB9IGVsc2UgaWYoKCFyb290IHx8ICFvcm5zKSAmJiBuLmRyYXduKSB7Ci0gICAgICAgICAgICAgICAgbi5kcmF3biA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG5kc1tub2RlLmlkXS5wdXNoKG4pOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsJCi0gICAgICAgICAgICBub2RlLmRyYXduID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICAvLyBwbG90IHRoZSB3aG9sZSAobm9uLXNjYWxlZCkgdHJlZQotICAgICAgICBpZihub2Rlcy5sZW5ndGggPiAwKSB2aXouZngucGxvdCgpOwotICAgICAgICAvLyBzaG93IG5vZGVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGhpZGRlbgotICAgICAgICBmb3IoaSBpbiBuZHMpIHsKLSAgICAgICAgICAkLmVhY2gobmRzW2ldLCBmdW5jdGlvbihuKSB7IG4uZHJhd24gPSB0cnVlOyB9KTsKLSAgICAgICAgfQotICAgICAgICAvLyBwbG90IGVhY2ggc2NhbGVkIHN1YnRyZWUKLSAgICAgICAgZm9yKGk9MDsgaTxub2Rlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgIG5vZGUgPSBub2Rlc1tpXTsKLSAgICAgICAgICBjdHguc2F2ZSgpOwotICAgICAgICAgIHZpei5meC5wbG90U3VidHJlZShub2RlLCBjb250cm9sbGVyLCBkZWx0YSwgYW5pbWF0aW5nKTsgICAgICAgICAgICAgICAgCi0gICAgICAgICAgY3R4LnJlc3RvcmUoKTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgZ2V0U2libGluZ3M6IGZ1bmN0aW9uKG5vZGVzKSB7Ci0gICAgICAgIHZhciBzaWJsaW5ncyA9IHt9OwotICAgICAgICAkLmVhY2gobm9kZXMsIGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgIHZhciBwYXIgPSBuLmdldFBhcmVudHMoKTsKLSAgICAgICAgICAgIGlmIChwYXIubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAgICAgICBzaWJsaW5nc1tuLmlkXSA9IFtuXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyIGFucyA9IFtdOwotICAgICAgICAgICAgICAgIHBhclswXS5lYWNoU3Vibm9kZShmdW5jdGlvbihzbikgewotICAgICAgICAgICAgICAgICAgICBhbnMucHVzaChzbik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgc2libGluZ3Nbbi5pZF0gPSBhbnM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gc2libGluZ3M7Ci0gICAgfQotfSk7Ci0KLS8qCi0gICBTVC5HZW9tCi0KLSAgIFBlcmZvcm1zIGxvdyBsZXZlbCBnZW9tZXRyaWNhbCBjb21wdXRhdGlvbnMuCi0KLSAgIEFjY2VzczoKLQotICAgVGhpcyBpbnN0YW5jZSBjYW4gYmUgYWNjZXNzZWQgd2l0aCB0aGUgX2dlb21fIHBhcmFtZXRlciBvZiB0aGUgc3QgaW5zdGFuY2UgY3JlYXRlZC4KLQotICAgRXhhbXBsZToKLQotICAgKHN0YXJ0IGNvZGUganMpCi0gICAgdmFyIHN0ID0gbmV3IFNUKGNhbnZhcywgY29uZmlnKTsKLSAgICBzdC5nZW9tLnRyYW5zbGF0ZSAvL29yIGNhbiBhbHNvIGNhbGwgYW55IG90aGVyIDxTVC5HZW9tPiBtZXRob2QKLSAgIChlbmQgY29kZSkKLQotKi8KLQotJGppdC5TVC5HZW9tID0gbmV3IENsYXNzKHsKLSAgICBJbXBsZW1lbnRzOiBHcmFwaC5HZW9tLAotICAgIC8qCi0gICAgICAgQ2hhbmdlcyB0aGUgdHJlZSBjdXJyZW50IG9yaWVudGF0aW9uIHRvIHRoZSBvbmUgc3BlY2lmaWVkLgotCi0gICAgICAgWW91IHNob3VsZCB1c3VhbGx5IHVzZSA8U1Quc3dpdGNoUG9zaXRpb24+IGluc3RlYWQuCi0gICAgKi8gIAotICAgIHN3aXRjaE9yaWVudGF0aW9uOiBmdW5jdGlvbihvcm4pIHsKLSAgICAJdGhpcy5jb25maWcub3JpZW50YXRpb24gPSBvcm47Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgTWFrZXMgYSB2YWx1ZSBkaXNwYXRjaCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbGF5b3V0Ci0gICAgICAgV29ya3MgbGlrZSBhIENTUyBwcm9wZXJ0eSwgZWl0aGVyIF90b3AtcmlnaHQtYm90dG9tLWxlZnRfIG9yIF90b3B8Ym90dG9tIC0gbGVmdHxyaWdodF8uCi0gICAgICovCi0gICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKCkgewotICAgIAkgIC8vIFRPRE8obmljbykgc2hvdWxkIHN0b3JlIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsIHNvbWV3aGVyZS4KLSAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwotICAgICAgICB2YXIgcyA9IGFyZ3Muc2hpZnQoKSwgbGVuID0gYXJncy5sZW5ndGg7Ci0gICAgICAgIHZhciB2YWwgPSBmdW5jdGlvbihhKSB7IHJldHVybiB0eXBlb2YgYSA9PSAnZnVuY3Rpb24nPyBhKCkgOiBhOyB9OwotICAgICAgICBpZihsZW4gPT0gMikgewotICAgICAgICAgICAgcmV0dXJuIChzID09ICJ0b3AiIHx8IHMgPT0gImJvdHRvbSIpPyB2YWwoYXJnc1swXSkgOiB2YWwoYXJnc1sxXSk7Ci0gICAgICAgIH0gZWxzZSBpZihsZW4gPT0gNCkgewotICAgICAgICAgICAgc3dpdGNoKHMpIHsKLSAgICAgICAgICAgICAgICBjYXNlICJ0b3AiOiByZXR1cm4gdmFsKGFyZ3NbMF0pOwotICAgICAgICAgICAgICAgIGNhc2UgInJpZ2h0IjogcmV0dXJuIHZhbChhcmdzWzFdKTsKLSAgICAgICAgICAgICAgICBjYXNlICJib3R0b20iOiByZXR1cm4gdmFsKGFyZ3NbMl0pOwotICAgICAgICAgICAgICAgIGNhc2UgImxlZnQiOiByZXR1cm4gdmFsKGFyZ3NbM10pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgUmV0dXJucyBsYWJlbCBoZWlnaHQgb3Igd2l0aCwgZGVwZW5kaW5nIG9uIHRoZSB0cmVlIGN1cnJlbnQgb3JpZW50YXRpb24uCi0gICAgKi8gIAotICAgIGdldFNpemU6IGZ1bmN0aW9uKG4sIGludmVydCkgewotICAgICAgICB2YXIgZGF0YSA9IG4uZGF0YSwgY29uZmlnID0gdGhpcy5jb25maWc7Ci0gICAgICAgIHZhciBzaWJsaW5nT2Zmc2V0ID0gY29uZmlnLnNpYmxpbmdPZmZzZXQ7Ci0gICAgICAgIHZhciBzID0gKGNvbmZpZy5tdWx0aXRyZWUgCi0gICAgICAgIAkJJiYgKCckb3JuJyBpbiBkYXRhKSAKLSAgICAgICAgCQkmJiBkYXRhLiRvcm4pIHx8IGNvbmZpZy5vcmllbnRhdGlvbjsKLSAgICAgICAgdmFyIHcgPSBuLmdldERhdGEoJ3dpZHRoJykgKyBzaWJsaW5nT2Zmc2V0OwotICAgICAgICB2YXIgaCA9IG4uZ2V0RGF0YSgnaGVpZ2h0JykgKyBzaWJsaW5nT2Zmc2V0OwotICAgICAgICBpZighaW52ZXJ0KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gocywgaCwgdyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKHMsIHcsIGgpOwotICAgIH0sCi0gICAgCi0gICAgLyoKLSAgICAgICBDYWxjdWxhdGVzIGEgc3VidHJlZSBiYXNlIHNpemUuIFRoaXMgaXMgYW4gdXRpbGl0eSBmdW5jdGlvbiB1c2VkIGJ5IF9nZXRCYXNlU2l6ZV8KLSAgICAqLyAgCi0gICAgZ2V0VHJlZUJhc2VTaXplOiBmdW5jdGlvbihub2RlLCBsZXZlbCwgbGVhZikgewotICAgICAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShub2RlLCB0cnVlKSwgYmFzZUhlaWdodCA9IDAsIHRoYXQgPSB0aGlzOwotICAgICAgICBpZihsZWFmKGxldmVsLCBub2RlKSkgcmV0dXJuIHNpemU7Ci0gICAgICAgIGlmKGxldmVsID09PSAwKSByZXR1cm4gMDsKLSAgICAgICAgbm9kZS5lYWNoU3Vibm9kZShmdW5jdGlvbihlbGVtKSB7Ci0gICAgICAgICAgICBiYXNlSGVpZ2h0ICs9IHRoYXQuZ2V0VHJlZUJhc2VTaXplKGVsZW0sIGxldmVsIC0xLCBsZWFmKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiAoc2l6ZSA+IGJhc2VIZWlnaHQ/IHNpemUgOiBiYXNlSGVpZ2h0KSArIHRoaXMuY29uZmlnLnN1YnRyZWVPZmZzZXQ7Ci0gICAgfSwKLQotCi0gICAgLyoKLSAgICAgICBnZXRFZGdlCi0gICAgICAgCi0gICAgICAgUmV0dXJucyBhIENvbXBsZXggaW5zdGFuY2Ugd2l0aCB0aGUgYmVnaW4gb3IgZW5kIHBvc2l0aW9uIG9mIHRoZSBlZGdlIHRvIGJlIHBsb3R0ZWQuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgbm9kZSAtIEEgPEdyYXBoLk5vZGU+IHRoYXQgaXMgY29ubmVjdGVkIHRvIHRoaXMgZWRnZS4KLSAgICAgICB0eXBlIC0gUmV0dXJucyB0aGUgYmVnaW4gb3IgZW5kIGVkZ2UgcG9zaXRpb24uIFBvc3NpYmxlIHZhbHVlcyBhcmUgJ2JlZ2luJyBvciAnZW5kJy4KLQotICAgICAgIFJldHVybnM6Ci0KLSAgICAgICBBIDxDb21wbGV4PiBudW1iZXIgc3BlY2lmeWluZyB0aGUgYmVnaW4gb3IgZW5kIHBvc2l0aW9uLgotICAgICovICAKLSAgICBnZXRFZGdlOiBmdW5jdGlvbihub2RlLCB0eXBlLCBzKSB7Ci0gICAgCXZhciAkQyA9IGZ1bmN0aW9uKGEsIGIpIHsgCi0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZS5wb3MuYWRkKG5ldyBDb21wbGV4KGEsIGIpKTsKLSAgICAgICAgICB9OyAKLSAgICAgICAgfTsKLSAgICAgICAgdmFyIGRpbSA9IHRoaXMubm9kZTsKLSAgICAgICAgdmFyIHcgPSBub2RlLmdldERhdGEoJ3dpZHRoJyk7Ci0gICAgICAgIHZhciBoID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKTsKLQotICAgICAgICBpZih0eXBlID09ICdiZWdpbicpIHsKLSAgICAgICAgICAgIGlmKGRpbS5hbGlnbiA9PSAiY2VudGVyIikgewotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKHMsICRDKDAsIGgvMiksICRDKC13LzIsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDKDAsIC1oLzIpLCRDKHcvMiwgMCkpOwotICAgICAgICAgICAgfSBlbHNlIGlmKGRpbS5hbGlnbiA9PSAibGVmdCIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChzLCAkQygwLCBoKSwgJEMoMCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEMoMCwgMCksICRDKHcsIDApKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZihkaW0uYWxpZ24gPT0gInJpZ2h0IikgewotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKHMsICRDKDAsIDApLCAkQygtdywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEMoMCwgLWgpLCRDKDAsIDApKTsKLSAgICAgICAgICAgIH0gZWxzZSB0aHJvdyAiYWxpZ246IG5vdCBpbXBsZW1lbnRlZCI7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIAotICAgICAgICB9IGVsc2UgaWYodHlwZSA9PSAnZW5kJykgewotICAgICAgICAgICAgaWYoZGltLmFsaWduID09ICJjZW50ZXIiKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gocywgJEMoMCwgLWgvMiksICRDKHcvMiwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEMoMCwgaC8yKSwgICRDKC13LzIsIDApKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZihkaW0uYWxpZ24gPT0gImxlZnQiKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gocywgJEMoMCwgMCksICRDKHcsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDKDAsIGgpLCAkQygwLCAwKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYoZGltLmFsaWduID09ICJyaWdodCIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChzLCAkQygwLCAtaCksJEMoMCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEMoMCwgMCksICRDKC13LCAwKSk7Ci0gICAgICAgICAgICB9IGVsc2UgdGhyb3cgImFsaWduOiBub3QgaW1wbGVtZW50ZWQiOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgQWRqdXN0cyB0aGUgdHJlZSBwb3NpdGlvbiBkdWUgdG8gY2FudmFzIHNjYWxpbmcgb3IgdHJhbnNsYXRpb24uCi0gICAgKi8gIAotICAgIGdldFNjYWxlZFRyZWVQb3NpdGlvbjogZnVuY3Rpb24obm9kZSwgc2NhbGUpIHsKLSAgICAgICAgdmFyIGRpbSA9IHRoaXMubm9kZTsKLSAgICAgICAgdmFyIHcgPSBub2RlLmdldERhdGEoJ3dpZHRoJyk7Ci0gICAgICAgIHZhciBoID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKTsKLSAgICAgICAgdmFyIHMgPSAodGhpcy5jb25maWcubXVsdGl0cmVlIAotICAgICAgICAJCSYmICgnJG9ybicgaW4gbm9kZS5kYXRhKSAKLSAgICAgICAgCQkmJiBub2RlLmRhdGEuJG9ybikgfHwgdGhpcy5jb25maWcub3JpZW50YXRpb247Ci0KLSAgICAgICAgdmFyICRDID0gZnVuY3Rpb24oYSwgYikgeyAKLSAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKXsKLSAgICAgICAgICAgIHJldHVybiBub2RlLnBvcy5hZGQobmV3IENvbXBsZXgoYSwgYikpLiRzY2FsZSgxIC0gc2NhbGUpOwotICAgICAgICAgIH07IAotICAgICAgICB9OwotICAgICAgICBpZihkaW0uYWxpZ24gPT0gImxlZnQiKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChzLCAkQygwLCBoKSwgJEMoMCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQygwLCAwKSwgJEModywgMCkpOwotICAgICAgICB9IGVsc2UgaWYoZGltLmFsaWduID09ICJjZW50ZXIiKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChzLCAkQygwLCBoIC8gMiksICRDKC13IC8gMiwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQygwLCAtaCAvIDIpLCRDKHcgLyAyLCAwKSk7Ci0gICAgICAgIH0gZWxzZSBpZihkaW0uYWxpZ24gPT0gInJpZ2h0IikgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gocywgJEMoMCwgMCksICRDKC13LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDKDAsIC1oKSwkQygwLCAwKSk7Ci0gICAgICAgIH0gZWxzZSB0aHJvdyAiYWxpZ246IG5vdCBpbXBsZW1lbnRlZCI7Ci0gICAgfSwKLQotICAgIC8qCi0gICAgICAgdHJlZUZpdHNJbkNhbnZhcwotICAgICAgIAotICAgICAgIFJldHVybnMgYSBCb29sZWFuIGlmIHRoZSBjdXJyZW50IHN1YnRyZWUgZml0cyBpbiBjYW52YXMuCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgbm9kZSAtIEEgPEdyYXBoLk5vZGU+IHdoaWNoIGlzIHRoZSBjdXJyZW50IHJvb3Qgb2YgdGhlIHN1YnRyZWUuCi0gICAgICAgY2FudmFzIC0gVGhlIDxDYW52YXM+IG9iamVjdC4KLSAgICAgICBsZXZlbCAtIFRoZSBkZXB0aCBvZiB0aGUgc3VidHJlZSB0byBiZSBjb25zaWRlcmVkLgotICAgICovICAKLSAgICB0cmVlRml0c0luQ2FudmFzOiBmdW5jdGlvbihub2RlLCBjYW52YXMsIGxldmVsKSB7Ci0gICAgICAgIHZhciBjc2l6ZSA9IGNhbnZhcy5nZXRTaXplKCk7Ci0gICAgICAgIHZhciBzID0gKHRoaXMuY29uZmlnLm11bHRpdHJlZSAKLSAgICAgICAgCQkmJiAoJyRvcm4nIGluIG5vZGUuZGF0YSkgCi0gICAgICAgIAkJJiYgbm9kZS5kYXRhLiRvcm4pIHx8IHRoaXMuY29uZmlnLm9yaWVudGF0aW9uOwotCi0gICAgICAgIHZhciBzaXplID0gdGhpcy5kaXNwYXRjaChzLCBjc2l6ZS53aWR0aCwgY3NpemUuaGVpZ2h0KTsKLSAgICAgICAgdmFyIGJhc2VTaXplID0gdGhpcy5nZXRUcmVlQmFzZVNpemUobm9kZSwgbGV2ZWwsIGZ1bmN0aW9uKGxldmVsLCBub2RlKSB7IAotICAgICAgICAgIHJldHVybiBsZXZlbCA9PT0gMCB8fCAhbm9kZS5hbnlTdWJub2RlKCk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gKGJhc2VTaXplIDwgc2l6ZSk7Ci0gICAgfQotfSk7Ci0KLS8qCi0gIENsYXNzOiBTVC5QbG90Ci0gIAotICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5QbG90Pi4KLQotICBFeHRlbmRzOgotCi0gIEFsbCA8R3JhcGguUGxvdD4gbWV0aG9kcwotICAKLSAgU2VlIGFsc286Ci0gIAotICA8R3JhcGguUGxvdD4KLQotKi8KLSRqaXQuU1QuUGxvdCA9IG5ldyBDbGFzcyh7Ci0gICAgCi0gICAgSW1wbGVtZW50czogR3JhcGguUGxvdCwKLSAgICAKLSAgICAvKgotICAgICAgIFBsb3RzIGEgc3VidHJlZSBmcm9tIHRoZSBzcGFjZXRyZWUuCi0gICAgKi8KLSAgICBwbG90U3VidHJlZTogZnVuY3Rpb24obm9kZSwgb3B0LCBzY2FsZSwgYW5pbWF0aW5nKSB7Ci0gICAgICAgIHZhciB2aXogPSB0aGlzLnZpeiwgY2FudmFzID0gdml6LmNhbnZhcywgY29uZmlnID0gdml6LmNvbmZpZzsKLSAgICAgICAgc2NhbGUgPSBNYXRoLm1pbihNYXRoLm1heCgwLjAwMSwgc2NhbGUpLCAxKTsKLSAgICAgICAgaWYoc2NhbGUgPj0gMCkgewotICAgICAgICAgICAgbm9kZS5kcmF3biA9IGZhbHNlOyAgICAgCi0gICAgICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldEN0eCgpOwotICAgICAgICAgICAgdmFyIGRpZmYgPSB2aXouZ2VvbS5nZXRTY2FsZWRUcmVlUG9zaXRpb24obm9kZSwgc2NhbGUpOwotICAgICAgICAgICAgY3R4LnRyYW5zbGF0ZShkaWZmLngsIGRpZmYueSk7Ci0gICAgICAgICAgICBjdHguc2NhbGUoc2NhbGUsIHNjYWxlKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLnBsb3RUcmVlKG5vZGUsICQubWVyZ2Uob3B0LCB7Ci0gICAgICAgICAgJ3dpdGhMYWJlbHMnOiB0cnVlLAotICAgICAgICAgICdoaWRlTGFiZWxzJzogISFzY2FsZSwKLSAgICAgICAgICAncGxvdFN1YnRyZWUnOiBmdW5jdGlvbihuLCBjaCkgewotICAgICAgICAgICAgdmFyIHJvb3QgPSBjb25maWcubXVsdGl0cmVlICYmICEoJyRvcm4nIGluIG5vZGUuZGF0YSk7Ci0gICAgICAgICAgICB2YXIgb3JucyA9IHJvb3QgJiYgbm9kZS5nZXREYXRhKCdvcm5zJyk7Ci0gICAgICAgICAgICByZXR1cm4gIXJvb3QgfHwgb3Jucy5pbmRleE9mKG5vZGUuZ2V0RGF0YSgnb3JuJykpID4gLTE7Ci0gICAgICAgICAgfQotICAgICAgICB9KSwgYW5pbWF0aW5nKTsKLSAgICAgICAgaWYoc2NhbGUgPj0gMCkgbm9kZS5kcmF3biA9IHRydWU7Ci0gICAgfSwgICAKLSAgIAotICAgIC8qCi0gICAgICAgIE1ldGhvZDogZ2V0QWxpZ25lZFBvcwotICAgICAgICAKLSAgICAgICAgUmV0dXJucyBhICp4LCB5KiBvYmplY3Qgd2l0aCB0aGUgcG9zaXRpb24gb2YgdGhlIHRvcC9sZWZ0IGNvcm5lciBvZiBhIDxTVD4gbm9kZS4KLSAgICAgICAgCi0gICAgICAgIFBhcmFtZXRlcnM6Ci0gICAgICAgIAotICAgICAgICBwb3MgLSAob2JqZWN0KSBBIDxHcmFwaC5Ob2RlPiBwb3NpdGlvbi4KLSAgICAgICAgd2lkdGggLSAobnVtYmVyKSBUaGUgd2lkdGggb2YgdGhlIG5vZGUuCi0gICAgICAgIGhlaWdodCAtIChudW1iZXIpIFRoZSBoZWlnaHQgb2YgdGhlIG5vZGUuCi0gICAgICAgIAotICAgICAqLwotICAgIGdldEFsaWduZWRQb3M6IGZ1bmN0aW9uKHBvcywgd2lkdGgsIGhlaWdodCkgewotICAgICAgICB2YXIgbmNvbmZpZyA9IHRoaXMubm9kZTsKLSAgICAgICAgdmFyIHNxdWFyZSwgb3JuOwotICAgICAgICBpZihuY29uZmlnLmFsaWduID09ICJjZW50ZXIiKSB7Ci0gICAgICAgICAgICBzcXVhcmUgPSB7Ci0gICAgICAgICAgICAgICAgeDogcG9zLnggLSB3aWR0aCAvIDIsCi0gICAgICAgICAgICAgICAgeTogcG9zLnkgLSBoZWlnaHQgLyAyCi0gICAgICAgICAgICB9OwotICAgICAgICB9IGVsc2UgaWYgKG5jb25maWcuYWxpZ24gPT0gImxlZnQiKSB7Ci0gICAgICAgICAgICBvcm4gPSB0aGlzLmNvbmZpZy5vcmllbnRhdGlvbjsKLSAgICAgICAgICAgIGlmKG9ybiA9PSAiYm90dG9tIiB8fCBvcm4gPT0gInRvcCIpIHsKLSAgICAgICAgICAgICAgICBzcXVhcmUgPSB7Ci0gICAgICAgICAgICAgICAgICAgIHg6IHBvcy54IC0gd2lkdGggLyAyLAotICAgICAgICAgICAgICAgICAgICB5OiBwb3MueQotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNxdWFyZSA9IHsKLSAgICAgICAgICAgICAgICAgICAgeDogcG9zLngsCi0gICAgICAgICAgICAgICAgICAgIHk6IHBvcy55IC0gaGVpZ2h0IC8gMgotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZihuY29uZmlnLmFsaWduID09ICJyaWdodCIpIHsKLSAgICAgICAgICAgIG9ybiA9IHRoaXMuY29uZmlnLm9yaWVudGF0aW9uOwotICAgICAgICAgICAgaWYob3JuID09ICJib3R0b20iIHx8IG9ybiA9PSAidG9wIikgewotICAgICAgICAgICAgICAgIHNxdWFyZSA9IHsKLSAgICAgICAgICAgICAgICAgICAgeDogcG9zLnggLSB3aWR0aCAvIDIsCi0gICAgICAgICAgICAgICAgICAgIHk6IHBvcy55IC0gaGVpZ2h0Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3F1YXJlID0gewotICAgICAgICAgICAgICAgICAgICB4OiBwb3MueCAtIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICB5OiBwb3MueSAtIGhlaWdodCAvIDIKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgdGhyb3cgImFsaWduOiBub3QgaW1wbGVtZW50ZWQiOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHNxdWFyZTsKLSAgICB9LAotICAgIAotICAgIGdldE9yaWVudGF0aW9uOiBmdW5jdGlvbihhZGopIHsKLSAgICAJdmFyIGNvbmZpZyA9IHRoaXMuY29uZmlnOwotICAgIAl2YXIgb3JuID0gY29uZmlnLm9yaWVudGF0aW9uOwotCi0gICAgCWlmKGNvbmZpZy5tdWx0aXRyZWUpIHsKLSAgICAgICAgCXZhciBub2RlRnJvbSA9IGFkai5ub2RlRnJvbTsKLSAgICAgICAgCXZhciBub2RlVG8gPSBhZGoubm9kZVRvOwotICAgIAkJb3JuID0gKCgnJG9ybicgaW4gbm9kZUZyb20uZGF0YSkgCi0gICAgICAgIAkJJiYgbm9kZUZyb20uZGF0YS4kb3JuKSAKLSAgICAgICAgCQl8fCAoKCckb3JuJyBpbiBub2RlVG8uZGF0YSkgCi0gICAgICAgIAkJJiYgbm9kZVRvLmRhdGEuJG9ybik7Ci0gICAgCX0KLQotICAgIAlyZXR1cm4gb3JuOyAKLSAgICB9Ci19KTsKLQotLyoKLSAgQ2xhc3M6IFNULkxhYmVsCi0KLSAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguTGFiZWw+LiAKLSAgQ29udGFpbnMgY3VzdG9tIDxHcmFwaC5MYWJlbC5TVkc+LCA8R3JhcGguTGFiZWwuSFRNTD4gYW5kIDxHcmFwaC5MYWJlbC5OYXRpdmU+IGV4dGVuc2lvbnMuCi0KLSAgRXh0ZW5kczoKLQotICBBbGwgPEdyYXBoLkxhYmVsPiBtZXRob2RzIGFuZCBzdWJjbGFzc2VzLgotCi0gIFNlZSBhbHNvOgotCi0gIDxHcmFwaC5MYWJlbD4sIDxHcmFwaC5MYWJlbC5OYXRpdmU+LCA8R3JhcGguTGFiZWwuSFRNTD4sIDxHcmFwaC5MYWJlbC5TVkc+LgotICovIAotJGppdC5TVC5MYWJlbCA9IHt9OwotCi0vKgotICAgU1QuTGFiZWwuTmF0aXZlCi0KLSAgIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLkxhYmVsLk5hdGl2ZT4uCi0KLSAgIEV4dGVuZHM6Ci0KLSAgIEFsbCA8R3JhcGguTGFiZWwuTmF0aXZlPiBtZXRob2RzCi0KLSAgIFNlZSBhbHNvOgotCi0gICA8R3JhcGguTGFiZWwuTmF0aXZlPgotKi8KLSRqaXQuU1QuTGFiZWwuTmF0aXZlID0gbmV3IENsYXNzKHsKLSAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuTmF0aXZlLAotCi0gIHJlbmRlckxhYmVsOiBmdW5jdGlvbihjYW52YXMsIG5vZGUsIGNvbnRyb2xsZXIpIHsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldEN0eCgpLAotICAgICAgICBjb29yZCA9IG5vZGUucG9zLmdldGModHJ1ZSksCi0gICAgICAgIHdpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLAotICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICBwb3MgPSB0aGlzLnZpei5meC5nZXRBbGlnbmVkUG9zKGNvb3JkLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBjdHguZmlsbFRleHQobm9kZS5uYW1lLCBwb3MueCArIHdpZHRoIC8gMiwgcG9zLnkgKyBoZWlnaHQgLyAyKTsKLSAgfQotfSk7Ci0KLSRqaXQuU1QuTGFiZWwuRE9NID0gbmV3IENsYXNzKHsKLSAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuRE9NLAotCi0gIC8qIAotICAgICAgcGxhY2VMYWJlbAotCi0gICAgICBPdmVycmlkZXMgYWJzdHJhY3QgbWV0aG9kIHBsYWNlTGFiZWwgaW4gPEdyYXBoLlBsb3Q+LgotCi0gICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICB0YWcgLSBBIERPTSBsYWJlbCBlbGVtZW50LgotICAgICAgbm9kZSAtIEEgPEdyYXBoLk5vZGU+LgotICAgICAgY29udHJvbGxlciAtIEEgY29uZmlndXJhdGlvbi9jb250cm9sbGVyIG9iamVjdCBwYXNzZWQgdG8gdGhlIHZpc3VhbGl6YXRpb24uCi0gICAgIAotICAgICovCi0gICAgcGxhY2VMYWJlbDogZnVuY3Rpb24odGFnLCBub2RlLCBjb250cm9sbGVyKSB7Ci0gICAgICAgIHZhciBwb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICAgIGNvbmZpZyA9IHRoaXMudml6LmNvbmZpZywgCi0gICAgICAgICAgICBkaW0gPSBjb25maWcuTm9kZSwgCi0gICAgICAgICAgICBjYW52YXMgPSB0aGlzLnZpei5jYW52YXMsCi0gICAgICAgICAgICB3ID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLAotICAgICAgICAgICAgaCA9IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0JyksCi0gICAgICAgICAgICByYWRpdXMgPSBjYW52YXMuZ2V0U2l6ZSgpLAotICAgICAgICAgICAgbGFiZWxQb3MsIG9ybjsKLSAgICAgICAgCi0gICAgICAgIHZhciBveCA9IGNhbnZhcy50cmFuc2xhdGVPZmZzZXRYLAotICAgICAgICAgICAgb3kgPSBjYW52YXMudHJhbnNsYXRlT2Zmc2V0WSwKLSAgICAgICAgICAgIHN4ID0gY2FudmFzLnNjYWxlT2Zmc2V0WCwKLSAgICAgICAgICAgIHN5ID0gY2FudmFzLnNjYWxlT2Zmc2V0WSwKLSAgICAgICAgICAgIHBvc3ggPSBwb3MueCAqIHN4ICsgb3gsCi0gICAgICAgICAgICBwb3N5ID0gcG9zLnkgKiBzeSArIG95OwotCi0gICAgICAgIGlmKGRpbS5hbGlnbiA9PSAiY2VudGVyIikgewotICAgICAgICAgICAgbGFiZWxQb3M9IHsKLSAgICAgICAgICAgICAgICB4OiBNYXRoLnJvdW5kKHBvc3ggLSB3IC8gMiArIHJhZGl1cy53aWR0aC8yKSwKLSAgICAgICAgICAgICAgICB5OiBNYXRoLnJvdW5kKHBvc3kgLSBoIC8gMiArIHJhZGl1cy5oZWlnaHQvMikKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0gZWxzZSBpZiAoZGltLmFsaWduID09ICJsZWZ0IikgewotICAgICAgICAgICAgb3JuID0gY29uZmlnLm9yaWVudGF0aW9uOwotICAgICAgICAgICAgaWYob3JuID09ICJib3R0b20iIHx8IG9ybiA9PSAidG9wIikgewotICAgICAgICAgICAgICAgIGxhYmVsUG9zPSB7Ci0gICAgICAgICAgICAgICAgICAgIHg6IE1hdGgucm91bmQocG9zeCAtIHcgLyAyICsgcmFkaXVzLndpZHRoLzIpLAotICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLnJvdW5kKHBvc3kgKyByYWRpdXMuaGVpZ2h0LzIpCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGFiZWxQb3M9IHsKLSAgICAgICAgICAgICAgICAgICAgeDogTWF0aC5yb3VuZChwb3N4ICsgcmFkaXVzLndpZHRoLzIpLAotICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLnJvdW5kKHBvc3kgLSBoIC8gMiArIHJhZGl1cy5oZWlnaHQvMikKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYoZGltLmFsaWduID09ICJyaWdodCIpIHsKLSAgICAgICAgICAgIG9ybiA9IGNvbmZpZy5vcmllbnRhdGlvbjsKLSAgICAgICAgICAgIGlmKG9ybiA9PSAiYm90dG9tIiB8fCBvcm4gPT0gInRvcCIpIHsKLSAgICAgICAgICAgICAgICBsYWJlbFBvcz0gewotICAgICAgICAgICAgICAgICAgICB4OiBNYXRoLnJvdW5kKHBvc3ggLSB3IC8gMiArIHJhZGl1cy53aWR0aC8yKSwKLSAgICAgICAgICAgICAgICAgICAgeTogTWF0aC5yb3VuZChwb3N5IC0gaCArIHJhZGl1cy5oZWlnaHQvMikKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsYWJlbFBvcz0gewotICAgICAgICAgICAgICAgICAgICB4OiBNYXRoLnJvdW5kKHBvc3ggLSB3ICsgcmFkaXVzLndpZHRoLzIpLAotICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLnJvdW5kKHBvc3kgLSBoIC8gMiArIHJhZGl1cy5oZWlnaHQvMikKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgdGhyb3cgImFsaWduOiBub3QgaW1wbGVtZW50ZWQiOwotCi0gICAgICAgIHZhciBzdHlsZSA9IHRhZy5zdHlsZTsKLSAgICAgICAgc3R5bGUubGVmdCA9IGxhYmVsUG9zLnggKyAncHgnOwotICAgICAgICBzdHlsZS50b3AgID0gbGFiZWxQb3MueSArICdweCc7Ci0gICAgICAgIHN0eWxlLmRpc3BsYXkgPSB0aGlzLmZpdHNJbkNhbnZhcyhsYWJlbFBvcywgY2FudmFzKT8gJycgOiAnbm9uZSc7Ci0gICAgICAgIGNvbnRyb2xsZXIub25QbGFjZUxhYmVsKHRhZywgbm9kZSk7Ci0gICAgfQotfSk7Ci0KLS8qCi0gIFNULkxhYmVsLlNWRwotCi0gIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLkxhYmVsLlNWRz4uCi0KLSAgRXh0ZW5kczoKLQotICBBbGwgPEdyYXBoLkxhYmVsLlNWRz4gbWV0aG9kcwotCi0gIFNlZSBhbHNvOgotCi0gIDxHcmFwaC5MYWJlbC5TVkc+Ci0qLwotJGppdC5TVC5MYWJlbC5TVkcgPSBuZXcgQ2xhc3MoewotICBJbXBsZW1lbnRzOiBbJGppdC5TVC5MYWJlbC5ET00sIEdyYXBoLkxhYmVsLlNWR10sCi0KLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odml6KSB7Ci0gICAgdGhpcy52aXogPSB2aXo7Ci0gIH0KLX0pOwotCi0vKgotICAgU1QuTGFiZWwuSFRNTAotCi0gICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5MYWJlbC5IVE1MPi4KLQotICAgRXh0ZW5kczoKLQotICAgQWxsIDxHcmFwaC5MYWJlbC5IVE1MPiBtZXRob2RzLgotCi0gICBTZWUgYWxzbzoKLQotICAgPEdyYXBoLkxhYmVsLkhUTUw+Ci0KLSovCi0kaml0LlNULkxhYmVsLkhUTUwgPSBuZXcgQ2xhc3MoewotICBJbXBsZW1lbnRzOiBbJGppdC5TVC5MYWJlbC5ET00sIEdyYXBoLkxhYmVsLkhUTUxdLAotCi0gIGluaXRpYWxpemU6IGZ1bmN0aW9uKHZpeikgewotICAgIHRoaXMudml6ID0gdml6OwotICB9Ci19KTsKLQotCi0vKgotICBDbGFzczogU1QuUGxvdC5Ob2RlVHlwZXMKLQotICBUaGlzIGNsYXNzIGNvbnRhaW5zIGEgbGlzdCBvZiA8R3JhcGguTm9kZT4gYnVpbHQtaW4gdHlwZXMuIAotICBOb2RlIHR5cGVzIGltcGxlbWVudGVkIGFyZSAnbm9uZScsICdjaXJjbGUnLCAncmVjdGFuZ2xlJywgJ2VsbGlwc2UnIGFuZCAnc3F1YXJlJy4KLQotICBZb3UgY2FuIGFkZCB5b3VyIGN1c3RvbSBub2RlIHR5cGVzLCBjdXN0b21pemluZyB5b3VyIHZpc3VhbGl6YXRpb24gdG8gdGhlIGV4dHJlbWUuCi0KLSAgRXhhbXBsZToKLQotICAoc3RhcnQgY29kZSBqcykKLSAgICBTVC5QbG90Lk5vZGVUeXBlcy5pbXBsZW1lbnQoewotICAgICAgJ215U3BlY2lhbFR5cGUnOiB7Ci0gICAgICAgICdyZW5kZXInOiBmdW5jdGlvbihub2RlLCBjYW52YXMpIHsKLSAgICAgICAgICAvL3ByaW50IHlvdXIgY3VzdG9tIG5vZGUgdG8gY2FudmFzCi0gICAgICAgIH0sCi0gICAgICAgIC8vb3B0aW9uYWwKLSAgICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgICAgLy9yZXR1cm4gdHJ1ZSBpZiBwb3MgaXMgaW5zaWRlIHRoZSBub2RlIG9yIGZhbHNlIG90aGVyd2lzZQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gIChlbmQgY29kZSkKLQotKi8KLSRqaXQuU1QuUGxvdC5Ob2RlVHlwZXMgPSBuZXcgQ2xhc3MoewotICAnbm9uZSc6IHsKLSAgICAncmVuZGVyJzogJC5lbXB0eSwKLSAgICAnY29udGFpbnMnOiAkLmxhbWJkYShmYWxzZSkKLSAgfSwKLSAgJ2NpcmNsZSc6IHsKLSAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKSB7Ci0gICAgICB2YXIgZGltICA9IG5vZGUuZ2V0RGF0YSgnZGltJyksCi0gICAgICAgICAgcG9zID0gdGhpcy5nZXRBbGlnbmVkUG9zKG5vZGUucG9zLmdldGModHJ1ZSksIGRpbSwgZGltKSwKLSAgICAgICAgICBkaW0yID0gZGltLzI7Ci0gICAgICB0aGlzLm5vZGVIZWxwZXIuY2lyY2xlLnJlbmRlcignZmlsbCcsIHt4OnBvcy54K2RpbTIsIHk6cG9zLnkrZGltMn0sIGRpbTIsIGNhbnZhcyk7Ci0gICAgfSwKLSAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBwb3MpIHsKLSAgICAgIHZhciBkaW0gID0gbm9kZS5nZXREYXRhKCdkaW0nKSwKLSAgICAgICAgICBucG9zID0gdGhpcy5nZXRBbGlnbmVkUG9zKG5vZGUucG9zLmdldGModHJ1ZSksIGRpbSwgZGltKSwKLSAgICAgICAgICBkaW0yID0gZGltLzI7Ci0gICAgICB0aGlzLm5vZGVIZWxwZXIuY2lyY2xlLmNvbnRhaW5zKHt4Om5wb3MueCtkaW0yLCB5Om5wb3MueStkaW0yfSwgcG9zLCBkaW0yKTsKLSAgICB9Ci0gIH0sCi0gICdzcXVhcmUnOiB7Ci0gICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgdmFyIGRpbSAgPSBub2RlLmdldERhdGEoJ2RpbScpLAotICAgICAgICAgIGRpbTIgPSBkaW0vMiwKLSAgICAgICAgICBwb3MgPSB0aGlzLmdldEFsaWduZWRQb3Mobm9kZS5wb3MuZ2V0Yyh0cnVlKSwgZGltLCBkaW0pOwotICAgICAgdGhpcy5ub2RlSGVscGVyLnNxdWFyZS5yZW5kZXIoJ2ZpbGwnLCB7eDpwb3MueCtkaW0yLCB5OnBvcy55K2RpbTJ9LCBkaW0yLCBjYW52YXMpOwotICAgIH0sCi0gICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICB2YXIgZGltICA9IG5vZGUuZ2V0RGF0YSgnZGltJyksCi0gICAgICAgICAgbnBvcyA9IHRoaXMuZ2V0QWxpZ25lZFBvcyhub2RlLnBvcy5nZXRjKHRydWUpLCBkaW0sIGRpbSksCi0gICAgICAgICAgZGltMiA9IGRpbS8yOwotICAgICAgdGhpcy5ub2RlSGVscGVyLnNxdWFyZS5jb250YWlucyh7eDpucG9zLngrZGltMiwgeTpucG9zLnkrZGltMn0sIHBvcywgZGltMik7Ci0gICAgfQotICB9LAotICAnZWxsaXBzZSc6IHsKLSAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKSB7Ci0gICAgICB2YXIgd2lkdGggPSBub2RlLmdldERhdGEoJ3dpZHRoJyksCi0gICAgICAgICAgaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKSwKLSAgICAgICAgICBwb3MgPSB0aGlzLmdldEFsaWduZWRQb3Mobm9kZS5wb3MuZ2V0Yyh0cnVlKSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICB0aGlzLm5vZGVIZWxwZXIuZWxsaXBzZS5yZW5kZXIoJ2ZpbGwnLCB7eDpwb3MueCt3aWR0aC8yLCB5OnBvcy55K2hlaWdodC8yfSwgd2lkdGgsIGhlaWdodCwgY2FudmFzKTsKLSAgICB9LAotICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgdmFyIHdpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLAotICAgICAgICAgIGhlaWdodCA9IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0JyksCi0gICAgICAgICAgbnBvcyA9IHRoaXMuZ2V0QWxpZ25lZFBvcyhub2RlLnBvcy5nZXRjKHRydWUpLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgIHRoaXMubm9kZUhlbHBlci5lbGxpcHNlLmNvbnRhaW5zKHt4Om5wb3MueCt3aWR0aC8yLCB5Om5wb3MueStoZWlnaHQvMn0sIHBvcywgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQotICB9LAotICAncmVjdGFuZ2xlJzogewotICAgICdyZW5kZXInOiBmdW5jdGlvbihub2RlLCBjYW52YXMpIHsKLSAgICAgIHZhciB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSwKLSAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICAgIHBvcyA9IHRoaXMuZ2V0QWxpZ25lZFBvcyhub2RlLnBvcy5nZXRjKHRydWUpLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgIHRoaXMubm9kZUhlbHBlci5yZWN0YW5nbGUucmVuZGVyKCdmaWxsJywge3g6cG9zLngrd2lkdGgvMiwgeTpwb3MueStoZWlnaHQvMn0sIHdpZHRoLCBoZWlnaHQsIGNhbnZhcyk7Ci0gICAgfSwKLSAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBwb3MpIHsKLSAgICAgIHZhciB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSwKLSAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICAgIG5wb3MgPSB0aGlzLmdldEFsaWduZWRQb3Mobm9kZS5wb3MuZ2V0Yyh0cnVlKSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICB0aGlzLm5vZGVIZWxwZXIucmVjdGFuZ2xlLmNvbnRhaW5zKHt4Om5wb3MueCt3aWR0aC8yLCB5Om5wb3MueStoZWlnaHQvMn0sIHBvcywgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQotICB9Ci19KTsKLQotLyoKLSAgQ2xhc3M6IFNULlBsb3QuRWRnZVR5cGVzCi0KLSAgVGhpcyBjbGFzcyBjb250YWlucyBhIGxpc3Qgb2YgPEdyYXBoLkFkamFjZW5jZT4gYnVpbHQtaW4gdHlwZXMuIAotICBFZGdlIHR5cGVzIGltcGxlbWVudGVkIGFyZSAnbm9uZScsICdsaW5lJywgJ2Fycm93JywgJ3F1YWRyYXRpYzpiZWdpbicsICdxdWFkcmF0aWM6ZW5kJywgJ2JlemllcicuCi0KLSAgWW91IGNhbiBhZGQgeW91ciBjdXN0b20gZWRnZSB0eXBlcywgY3VzdG9taXppbmcgeW91ciB2aXN1YWxpemF0aW9uIHRvIHRoZSBleHRyZW1lLgotCi0gIEV4YW1wbGU6Ci0KLSAgKHN0YXJ0IGNvZGUganMpCi0gICAgU1QuUGxvdC5FZGdlVHlwZXMuaW1wbGVtZW50KHsKLSAgICAgICdteVNwZWNpYWxUeXBlJzogewotICAgICAgICAncmVuZGVyJzogZnVuY3Rpb24oYWRqLCBjYW52YXMpIHsKLSAgICAgICAgICAvL3ByaW50IHlvdXIgY3VzdG9tIGVkZ2UgdG8gY2FudmFzCi0gICAgICAgIH0sCi0gICAgICAgIC8vb3B0aW9uYWwKLSAgICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24oYWRqLCBwb3MpIHsKLSAgICAgICAgICAvL3JldHVybiB0cnVlIGlmIHBvcyBpcyBpbnNpZGUgdGhlIGFyYyBvciBmYWxzZSBvdGhlcndpc2UKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotICAoZW5kIGNvZGUpCi0KLSovCi0kaml0LlNULlBsb3QuRWRnZVR5cGVzID0gbmV3IENsYXNzKHsKLSAgICAnbm9uZSc6ICQuZW1wdHksCi0gICAgJ2xpbmUnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24oYWRqLCBjYW52YXMpIHsKLSAgICAgICAgdmFyIG9ybiA9IHRoaXMuZ2V0T3JpZW50YXRpb24oYWRqKSwKLSAgICAgICAgICAgIG5vZGVGcm9tID0gYWRqLm5vZGVGcm9tLCAKLSAgICAgICAgICAgIG5vZGVUbyA9IGFkai5ub2RlVG8sCi0gICAgICAgICAgICByZWwgPSBub2RlRnJvbS5fZGVwdGggPCBub2RlVG8uX2RlcHRoLAotICAgICAgICAgICAgZnJvbSA9IHRoaXMudml6Lmdlb20uZ2V0RWRnZShyZWw/IG5vZGVGcm9tOm5vZGVUbywgJ2JlZ2luJywgb3JuKSwKLSAgICAgICAgICAgIHRvID0gIHRoaXMudml6Lmdlb20uZ2V0RWRnZShyZWw/IG5vZGVUbzpub2RlRnJvbSwgJ2VuZCcsIG9ybik7Ci0gICAgICAgIHRoaXMuZWRnZUhlbHBlci5saW5lLnJlbmRlcihmcm9tLCB0bywgY2FudmFzKTsKLSAgICAgIH0sCi0gICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihhZGosIHBvcykgewotICAgICAgICB2YXIgb3JuID0gdGhpcy5nZXRPcmllbnRhdGlvbihhZGopLAotICAgICAgICAgICAgbm9kZUZyb20gPSBhZGoubm9kZUZyb20sIAotICAgICAgICAgICAgbm9kZVRvID0gYWRqLm5vZGVUbywKLSAgICAgICAgICAgIHJlbCA9IG5vZGVGcm9tLl9kZXB0aCA8IG5vZGVUby5fZGVwdGgsCi0gICAgICAgICAgICBmcm9tID0gdGhpcy52aXouZ2VvbS5nZXRFZGdlKHJlbD8gbm9kZUZyb206bm9kZVRvLCAnYmVnaW4nLCBvcm4pLAotICAgICAgICAgICAgdG8gPSAgdGhpcy52aXouZ2VvbS5nZXRFZGdlKHJlbD8gbm9kZVRvOm5vZGVGcm9tLCAnZW5kJywgb3JuKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuZWRnZUhlbHBlci5saW5lLmNvbnRhaW5zKGZyb20sIHRvLCBwb3MsIHRoaXMuZWRnZS5lcHNpbG9uKTsKLSAgICAgIH0KLSAgICB9LAotICAgICAnYXJyb3cnOiB7Ci0gICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKGFkaiwgY2FudmFzKSB7Ci0gICAgICAgICB2YXIgb3JuID0gdGhpcy5nZXRPcmllbnRhdGlvbihhZGopLAotICAgICAgICAgICAgIG5vZGUgPSBhZGoubm9kZUZyb20sIAotICAgICAgICAgICAgIGNoaWxkID0gYWRqLm5vZGVUbywKLSAgICAgICAgICAgICBkaW0gPSBhZGouZ2V0RGF0YSgnZGltJyksCi0gICAgICAgICAgICAgZnJvbSA9IHRoaXMudml6Lmdlb20uZ2V0RWRnZShub2RlLCAnYmVnaW4nLCBvcm4pLAotICAgICAgICAgICAgIHRvID0gdGhpcy52aXouZ2VvbS5nZXRFZGdlKGNoaWxkLCAnZW5kJywgb3JuKSwKLSAgICAgICAgICAgICBkaXJlY3Rpb24gPSBhZGouZGF0YS4kZGlyZWN0aW9uLAotICAgICAgICAgICAgIGludiA9IChkaXJlY3Rpb24gJiYgZGlyZWN0aW9uLmxlbmd0aD4xICYmIGRpcmVjdGlvblswXSAhPSBub2RlLmlkKTsKLSAgICAgICAgIHRoaXMuZWRnZUhlbHBlci5hcnJvdy5yZW5kZXIoZnJvbSwgdG8sIGRpbSwgaW52LCBjYW52YXMpOwotICAgICAgIH0sCi0gICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24oYWRqLCBwb3MpIHsKLSAgICAgICAgIHZhciBvcm4gPSB0aGlzLmdldE9yaWVudGF0aW9uKGFkaiksCi0gICAgICAgICAgICAgbm9kZUZyb20gPSBhZGoubm9kZUZyb20sIAotICAgICAgICAgICAgIG5vZGVUbyA9IGFkai5ub2RlVG8sCi0gICAgICAgICAgICAgcmVsID0gbm9kZUZyb20uX2RlcHRoIDwgbm9kZVRvLl9kZXB0aCwKLSAgICAgICAgICAgICBmcm9tID0gdGhpcy52aXouZ2VvbS5nZXRFZGdlKHJlbD8gbm9kZUZyb206bm9kZVRvLCAnYmVnaW4nLCBvcm4pLAotICAgICAgICAgICAgIHRvID0gIHRoaXMudml6Lmdlb20uZ2V0RWRnZShyZWw/IG5vZGVUbzpub2RlRnJvbSwgJ2VuZCcsIG9ybik7Ci0gICAgICAgICByZXR1cm4gdGhpcy5lZGdlSGVscGVyLmFycm93LmNvbnRhaW5zKGZyb20sIHRvLCBwb3MsIHRoaXMuZWRnZS5lcHNpbG9uKTsKLSAgICAgICB9Ci0gICAgIH0sCi0gICAgJ3F1YWRyYXRpYzpiZWdpbic6IHsKLSAgICAgICAncmVuZGVyJzogZnVuY3Rpb24oYWRqLCBjYW52YXMpIHsKLSAgICAgICAgICB2YXIgb3JuID0gdGhpcy5nZXRPcmllbnRhdGlvbihhZGopOwotICAgICAgICAgIHZhciBub2RlRnJvbSA9IGFkai5ub2RlRnJvbSwgCi0gICAgICAgICAgICAgIG5vZGVUbyA9IGFkai5ub2RlVG8sCi0gICAgICAgICAgICAgIHJlbCA9IG5vZGVGcm9tLl9kZXB0aCA8IG5vZGVUby5fZGVwdGgsCi0gICAgICAgICAgICAgIGJlZ2luID0gdGhpcy52aXouZ2VvbS5nZXRFZGdlKHJlbD8gbm9kZUZyb206bm9kZVRvLCAnYmVnaW4nLCBvcm4pLAotICAgICAgICAgICAgICBlbmQgPSAgdGhpcy52aXouZ2VvbS5nZXRFZGdlKHJlbD8gbm9kZVRvOm5vZGVGcm9tLCAnZW5kJywgb3JuKSwKLSAgICAgICAgICAgICAgZGltID0gYWRqLmdldERhdGEoJ2RpbScpLAotICAgICAgICAgICAgICBjdHggPSBjYW52YXMuZ2V0Q3R4KCk7Ci0gICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICAgIGN0eC5tb3ZlVG8oYmVnaW4ueCwgYmVnaW4ueSk7Ci0gICAgICAgICAgc3dpdGNoKG9ybikgewotICAgICAgICAgICAgY2FzZSAibGVmdCI6Ci0gICAgICAgICAgICAgIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKGJlZ2luLnggKyBkaW0sIGJlZ2luLnksIGVuZC54LCBlbmQueSk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAicmlnaHQiOgotICAgICAgICAgICAgICBjdHgucXVhZHJhdGljQ3VydmVUbyhiZWdpbi54IC0gZGltLCBiZWdpbi55LCBlbmQueCwgZW5kLnkpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInRvcCI6Ci0gICAgICAgICAgICAgIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKGJlZ2luLngsIGJlZ2luLnkgKyBkaW0sIGVuZC54LCBlbmQueSk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAiYm90dG9tIjoKLSAgICAgICAgICAgICAgY3R4LnF1YWRyYXRpY0N1cnZlVG8oYmVnaW4ueCwgYmVnaW4ueSAtIGRpbSwgZW5kLngsIGVuZC55KTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIGN0eC5zdHJva2UoKTsKLSAgICAgICAgfQotICAgICB9LAotICAgICdxdWFkcmF0aWM6ZW5kJzogewotICAgICAgICdyZW5kZXInOiBmdW5jdGlvbihhZGosIGNhbnZhcykgewotICAgICAgICAgIHZhciBvcm4gPSB0aGlzLmdldE9yaWVudGF0aW9uKGFkaik7Ci0gICAgICAgICAgdmFyIG5vZGVGcm9tID0gYWRqLm5vZGVGcm9tLCAKLSAgICAgICAgICAgICAgbm9kZVRvID0gYWRqLm5vZGVUbywKLSAgICAgICAgICAgICAgcmVsID0gbm9kZUZyb20uX2RlcHRoIDwgbm9kZVRvLl9kZXB0aCwKLSAgICAgICAgICAgICAgYmVnaW4gPSB0aGlzLnZpei5nZW9tLmdldEVkZ2UocmVsPyBub2RlRnJvbTpub2RlVG8sICdiZWdpbicsIG9ybiksCi0gICAgICAgICAgICAgIGVuZCA9ICB0aGlzLnZpei5nZW9tLmdldEVkZ2UocmVsPyBub2RlVG86bm9kZUZyb20sICdlbmQnLCBvcm4pLAotICAgICAgICAgICAgICBkaW0gPSBhZGouZ2V0RGF0YSgnZGltJyksCi0gICAgICAgICAgICAgIGN0eCA9IGNhbnZhcy5nZXRDdHgoKTsKLSAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7Ci0gICAgICAgICAgY3R4Lm1vdmVUbyhiZWdpbi54LCBiZWdpbi55KTsKLSAgICAgICAgICBzd2l0Y2gob3JuKSB7Ci0gICAgICAgICAgICBjYXNlICJsZWZ0IjoKLSAgICAgICAgICAgICAgY3R4LnF1YWRyYXRpY0N1cnZlVG8oZW5kLnggLSBkaW0sIGVuZC55LCBlbmQueCwgZW5kLnkpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInJpZ2h0IjoKLSAgICAgICAgICAgICAgY3R4LnF1YWRyYXRpY0N1cnZlVG8oZW5kLnggKyBkaW0sIGVuZC55LCBlbmQueCwgZW5kLnkpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInRvcCI6Ci0gICAgICAgICAgICAgIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKGVuZC54LCBlbmQueSAtIGRpbSwgZW5kLngsIGVuZC55KTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJib3R0b20iOgotICAgICAgICAgICAgICBjdHgucXVhZHJhdGljQ3VydmVUbyhlbmQueCwgZW5kLnkgKyBkaW0sIGVuZC54LCBlbmQueSk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICBjdHguc3Ryb2tlKCk7Ci0gICAgICAgfQotICAgICB9LAotICAgICdiZXppZXInOiB7Ci0gICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKGFkaiwgY2FudmFzKSB7Ci0gICAgICAgICB2YXIgb3JuID0gdGhpcy5nZXRPcmllbnRhdGlvbihhZGopLAotICAgICAgICAgICAgIG5vZGVGcm9tID0gYWRqLm5vZGVGcm9tLCAKLSAgICAgICAgICAgICBub2RlVG8gPSBhZGoubm9kZVRvLAotICAgICAgICAgICAgIHJlbCA9IG5vZGVGcm9tLl9kZXB0aCA8IG5vZGVUby5fZGVwdGgsCi0gICAgICAgICAgICAgYmVnaW4gPSB0aGlzLnZpei5nZW9tLmdldEVkZ2UocmVsPyBub2RlRnJvbTpub2RlVG8sICdiZWdpbicsIG9ybiksCi0gICAgICAgICAgICAgZW5kID0gIHRoaXMudml6Lmdlb20uZ2V0RWRnZShyZWw/IG5vZGVUbzpub2RlRnJvbSwgJ2VuZCcsIG9ybiksCi0gICAgICAgICAgICAgZGltID0gYWRqLmdldERhdGEoJ2RpbScpLAotICAgICAgICAgICAgIGN0eCA9IGNhbnZhcy5nZXRDdHgoKTsKLSAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKLSAgICAgICAgIGN0eC5tb3ZlVG8oYmVnaW4ueCwgYmVnaW4ueSk7Ci0gICAgICAgICBzd2l0Y2gob3JuKSB7Ci0gICAgICAgICAgIGNhc2UgImxlZnQiOgotICAgICAgICAgICAgIGN0eC5iZXppZXJDdXJ2ZVRvKGJlZ2luLnggKyBkaW0sIGJlZ2luLnksIGVuZC54IC0gZGltLCBlbmQueSwgZW5kLngsIGVuZC55KTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgY2FzZSAicmlnaHQiOgotICAgICAgICAgICAgIGN0eC5iZXppZXJDdXJ2ZVRvKGJlZ2luLnggLSBkaW0sIGJlZ2luLnksIGVuZC54ICsgZGltLCBlbmQueSwgZW5kLngsIGVuZC55KTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgY2FzZSAidG9wIjoKLSAgICAgICAgICAgICBjdHguYmV6aWVyQ3VydmVUbyhiZWdpbi54LCBiZWdpbi55ICsgZGltLCBlbmQueCwgZW5kLnkgLSBkaW0sIGVuZC54LCBlbmQueSk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgImJvdHRvbSI6Ci0gICAgICAgICAgICAgY3R4LmJlemllckN1cnZlVG8oYmVnaW4ueCwgYmVnaW4ueSAtIGRpbSwgZW5kLngsIGVuZC55ICsgZGltLCBlbmQueCwgZW5kLnkpOwotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgY3R4LnN0cm9rZSgpOwotICAgICAgIH0KLSAgICB9Ci19KTsKLQotCi0KLS8qCi0gKiBGaWxlOiBBcmVhQ2hhcnQuanMKLSAqCi0qLwotCi0kaml0LlNULlBsb3QuTm9kZVR5cGVzLmltcGxlbWVudCh7Ci0gICdhcmVhY2hhcnQtc3RhY2tlZCcgOiB7Ci0gICAgJ3JlbmRlcicgOiBmdW5jdGlvbihub2RlLCBjYW52YXMpIHsKLSAgICAgIHZhciBwb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSwKLSAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICAgIGFsZ25Qb3MgPSB0aGlzLmdldEFsaWduZWRQb3MocG9zLCB3aWR0aCwgaGVpZ2h0KSwKLSAgICAgICAgICB4ID0gYWxnblBvcy54LCB5ID0gYWxnblBvcy55LAotICAgICAgICAgIHN0cmluZ0FycmF5ID0gbm9kZS5nZXREYXRhKCdzdHJpbmdBcnJheScpLAotICAgICAgICAgIGRpbUFycmF5ID0gbm9kZS5nZXREYXRhKCdkaW1BcnJheScpLAotICAgICAgICAgIHZhbEFycmF5ID0gbm9kZS5nZXREYXRhKCd2YWx1ZUFycmF5JyksCi0gICAgICAgICAgdmFsTGVmdCA9ICQucmVkdWNlKHZhbEFycmF5LCBmdW5jdGlvbih4LCB5KSB7IHJldHVybiB4ICsgeVswXTsgfSwgMCksCi0gICAgICAgICAgdmFsUmlnaHQgPSAkLnJlZHVjZSh2YWxBcnJheSwgZnVuY3Rpb24oeCwgeSkgeyByZXR1cm4geCArIHlbMV07IH0sIDApLAotICAgICAgICAgIGNvbG9yQXJyYXkgPSBub2RlLmdldERhdGEoJ2NvbG9yQXJyYXknKSwKLSAgICAgICAgICBjb2xvckxlbmd0aCA9IGNvbG9yQXJyYXkubGVuZ3RoLAotICAgICAgICAgIGNvbmZpZyA9IG5vZGUuZ2V0RGF0YSgnY29uZmlnJyksCi0gICAgICAgICAgZ3JhZGllbnQgPSBub2RlLmdldERhdGEoJ2dyYWRpZW50JyksCi0gICAgICAgICAgc2hvd0xhYmVscyA9IGNvbmZpZy5zaG93TGFiZWxzLAotICAgICAgICAgIGFnZ3JlZ2F0ZXMgPSBjb25maWcuc2hvd0FnZ3JlZ2F0ZXMsCi0gICAgICAgICAgbGFiZWwgPSBjb25maWcuTGFiZWwsCi0gICAgICAgICAgcHJldiA9IG5vZGUuZ2V0RGF0YSgncHJldicpOwotCi0gICAgICB2YXIgY3R4ID0gY2FudmFzLmdldEN0eCgpLCBib3JkZXIgPSBub2RlLmdldERhdGEoJ2JvcmRlcicpOwotICAgICAgaWYgKGNvbG9yQXJyYXkgJiYgZGltQXJyYXkgJiYgc3RyaW5nQXJyYXkpIHsKLSAgICAgICAgZm9yICh2YXIgaT0wLCBsPWRpbUFycmF5Lmxlbmd0aCwgYWN1bUxlZnQ9MCwgYWN1bVJpZ2h0PTAsIHZhbEFjdW09MDsgaTxsOyBpKyspIHsKLSAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY3R4LnN0cm9rZVN0eWxlID0gY29sb3JBcnJheVtpICUgY29sb3JMZW5ndGhdOwotICAgICAgICAgIGN0eC5zYXZlKCk7Ci0gICAgICAgICAgaWYoZ3JhZGllbnQgJiYgKGRpbUFycmF5W2ldWzBdID4gMCB8fCBkaW1BcnJheVtpXVsxXSA+IDApKSB7Ci0gICAgICAgICAgICB2YXIgaDEgPSBhY3VtTGVmdCArIGRpbUFycmF5W2ldWzBdLAotICAgICAgICAgICAgICAgIGgyID0gYWN1bVJpZ2h0ICsgZGltQXJyYXlbaV1bMV0sCi0gICAgICAgICAgICAgICAgYWxwaGEgPSBNYXRoLmF0YW4oKGgyIC0gaDEpIC8gd2lkdGgpLAotICAgICAgICAgICAgICAgIGRlbHRhID0gNTU7Ci0gICAgICAgICAgICB2YXIgbGluZWFyID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KHggKyB3aWR0aC8yLCAKLSAgICAgICAgICAgICAgICB5IC0gKGgxICsgaDIpLzIsCi0gICAgICAgICAgICAgICAgeCArIHdpZHRoLzIgKyBkZWx0YSAqIE1hdGguc2luKGFscGhhKSwKLSAgICAgICAgICAgICAgICB5IC0gKGgxICsgaDIpLzIgKyBkZWx0YSAqIE1hdGguY29zKGFscGhhKSk7Ci0gICAgICAgICAgICB2YXIgY29sb3IgPSAkLnJnYlRvSGV4KCQubWFwKCQuaGV4VG9SZ2IoY29sb3JBcnJheVtpICUgY29sb3JMZW5ndGhdLnNsaWNlKDEpKSwgCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24odikgeyByZXR1cm4gKHYgKiAwLjg1KSA+PiAwOyB9KSk7Ci0gICAgICAgICAgICBsaW5lYXIuYWRkQ29sb3JTdG9wKDAsIGNvbG9yQXJyYXlbaSAlIGNvbG9yTGVuZ3RoXSk7Ci0gICAgICAgICAgICBsaW5lYXIuYWRkQ29sb3JTdG9wKDEsIGNvbG9yKTsKLSAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBsaW5lYXI7Ci0gICAgICAgICAgfQotICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKLSAgICAgICAgICBjdHgubW92ZVRvKHgsIHkgLSBhY3VtTGVmdCk7Ci0gICAgICAgICAgY3R4LmxpbmVUbyh4ICsgd2lkdGgsIHkgLSBhY3VtUmlnaHQpOwotICAgICAgICAgIGN0eC5saW5lVG8oeCArIHdpZHRoLCB5IC0gYWN1bVJpZ2h0IC0gZGltQXJyYXlbaV1bMV0pOwotICAgICAgICAgIGN0eC5saW5lVG8oeCwgeSAtIGFjdW1MZWZ0IC0gZGltQXJyYXlbaV1bMF0pOwotICAgICAgICAgIGN0eC5saW5lVG8oeCwgeSAtIGFjdW1MZWZ0KTsKLSAgICAgICAgICBjdHguZmlsbCgpOwotICAgICAgICAgIGN0eC5yZXN0b3JlKCk7Ci0gICAgICAgICAgaWYoYm9yZGVyKSB7Ci0gICAgICAgICAgICB2YXIgc3Ryb25nID0gYm9yZGVyLm5hbWUgPT0gc3RyaW5nQXJyYXlbaV07Ci0gICAgICAgICAgICB2YXIgcGVyYyA9IHN0cm9uZz8gMC43IDogMC44OwotICAgICAgICAgICAgdmFyIGNvbG9yID0gJC5yZ2JUb0hleCgkLm1hcCgkLmhleFRvUmdiKGNvbG9yQXJyYXlbaSAlIGNvbG9yTGVuZ3RoXS5zbGljZSgxKSksIAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHYpIHsgcmV0dXJuICh2ICogcGVyYykgPj4gMDsgfSkpOwotICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gY29sb3I7Ci0gICAgICAgICAgICBjdHgubGluZVdpZHRoID0gc3Ryb25nPyA0IDogMTsKLSAgICAgICAgICAgIGN0eC5zYXZlKCk7Ci0gICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7Ci0gICAgICAgICAgICBpZihib3JkZXIuaW5kZXggPT09IDApIHsKLSAgICAgICAgICAgICAgY3R4Lm1vdmVUbyh4LCB5IC0gYWN1bUxlZnQpOwotICAgICAgICAgICAgICBjdHgubGluZVRvKHgsIHkgLSBhY3VtTGVmdCAtIGRpbUFycmF5W2ldWzBdKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGN0eC5tb3ZlVG8oeCArIHdpZHRoLCB5IC0gYWN1bVJpZ2h0KTsKLSAgICAgICAgICAgICAgY3R4LmxpbmVUbyh4ICsgd2lkdGgsIHkgLSBhY3VtUmlnaHQgLSBkaW1BcnJheVtpXVsxXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjdHguc3Ryb2tlKCk7Ci0gICAgICAgICAgICBjdHgucmVzdG9yZSgpOwotICAgICAgICAgIH0KLSAgICAgICAgICBhY3VtTGVmdCArPSAoZGltQXJyYXlbaV1bMF0gfHwgMCk7Ci0gICAgICAgICAgYWN1bVJpZ2h0ICs9IChkaW1BcnJheVtpXVsxXSB8fCAwKTsKLSAgICAgICAgICAKLSAgICAgICAgICBpZihkaW1BcnJheVtpXVswXSA+IDApCi0gICAgICAgICAgICB2YWxBY3VtICs9ICh2YWxBcnJheVtpXVswXSB8fCAwKTsKLSAgICAgICAgfQotICAgICAgICBpZihwcmV2ICYmIGxhYmVsLnR5cGUgPT0gJ05hdGl2ZScpIHsKLSAgICAgICAgICBjdHguc2F2ZSgpOwotICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKLSAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY3R4LnN0cm9rZVN0eWxlID0gbGFiZWwuY29sb3I7Ci0gICAgICAgICAgY3R4LmZvbnQgPSBsYWJlbC5zdHlsZSArICcgJyArIGxhYmVsLnNpemUgKyAncHggJyArIGxhYmVsLmZhbWlseTsKLSAgICAgICAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7Ci0gICAgICAgICAgY3R4LnRleHRCYXNlbGluZSA9ICdtaWRkbGUnOwotICAgICAgICAgIHZhciBhZ2dWYWx1ZSA9IGFnZ3JlZ2F0ZXMobm9kZS5uYW1lLCB2YWxMZWZ0LCB2YWxSaWdodCwgbm9kZSwgdmFsQWN1bSk7Ci0gICAgICAgICAgaWYoYWdnVmFsdWUgIT09IGZhbHNlKSB7Ci0gICAgICAgICAgICBjdHguZmlsbFRleHQoYWdnVmFsdWUgIT09IHRydWU/IGFnZ1ZhbHVlIDogdmFsQWN1bSwgeCwgeSAtIGFjdW1MZWZ0IC0gY29uZmlnLmxhYmVsT2Zmc2V0IC0gbGFiZWwuc2l6ZS8yLCB3aWR0aCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmKHNob3dMYWJlbHMobm9kZS5uYW1lLCB2YWxMZWZ0LCB2YWxSaWdodCwgbm9kZSkpIHsKLSAgICAgICAgICAgIGN0eC5maWxsVGV4dChub2RlLm5hbWUsIHgsIHkgKyBsYWJlbC5zaXplLzIgKyBjb25maWcubGFiZWxPZmZzZXQpOwotICAgICAgICAgIH0KLSAgICAgICAgICBjdHgucmVzdG9yZSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwKLSAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBtcG9zKSB7Ci0gICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgd2lkdGggPSBub2RlLmdldERhdGEoJ3dpZHRoJyksCi0gICAgICAgICAgaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKSwKLSAgICAgICAgICBhbGduUG9zID0gdGhpcy5nZXRBbGlnbmVkUG9zKHBvcywgd2lkdGgsIGhlaWdodCksCi0gICAgICAgICAgeCA9IGFsZ25Qb3MueCwgeSA9IGFsZ25Qb3MueSwKLSAgICAgICAgICBkaW1BcnJheSA9IG5vZGUuZ2V0RGF0YSgnZGltQXJyYXknKSwKLSAgICAgICAgICByeCA9IG1wb3MueCAtIHg7Ci0gICAgICAvL2JvdW5kaW5nIGJveCBjaGVjawotICAgICAgaWYobXBvcy54IDwgeCB8fCBtcG9zLnggPiB4ICsgd2lkdGgKLSAgICAgICAgfHwgbXBvcy55ID4geSB8fCBtcG9zLnkgPCB5IC0gaGVpZ2h0KSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIC8vZGVlcCBjaGVjawotICAgICAgZm9yKHZhciBpPTAsIGw9ZGltQXJyYXkubGVuZ3RoLCBsQWN1bT15LCByQWN1bT15OyBpPGw7IGkrKykgewotICAgICAgICB2YXIgZGltaSA9IGRpbUFycmF5W2ldOwotICAgICAgICBsQWN1bSAtPSBkaW1pWzBdOwotICAgICAgICByQWN1bSAtPSBkaW1pWzFdOwotICAgICAgICB2YXIgaW50ZXJzZWMgPSBsQWN1bSArIChyQWN1bSAtIGxBY3VtKSAqIHJ4IC8gd2lkdGg7Ci0gICAgICAgIGlmKG1wb3MueSA+PSBpbnRlcnNlYykgewotICAgICAgICAgIHZhciBpbmRleCA9ICsocnggPiB3aWR0aC8yKTsKLSAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgJ25hbWUnOiBub2RlLmdldERhdGEoJ3N0cmluZ0FycmF5JylbaV0sCi0gICAgICAgICAgICAnY29sb3InOiBub2RlLmdldERhdGEoJ2NvbG9yQXJyYXknKVtpXSwKLSAgICAgICAgICAgICd2YWx1ZSc6IG5vZGUuZ2V0RGF0YSgndmFsdWVBcnJheScpW2ldW2luZGV4XSwKLSAgICAgICAgICAgICdpbmRleCc6IGluZGV4Ci0gICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotfSk7Ci0KLS8qCi0gIENsYXNzOiBBcmVhQ2hhcnQKLSAgCi0gIEEgdmlzdWFsaXphdGlvbiB0aGF0IGRpc3BsYXlzIHN0YWNrZWQgYXJlYSBjaGFydHMuCi0gIAotICBDb25zdHJ1Y3RvciBPcHRpb25zOgotICAKLSAgU2VlIDxPcHRpb25zLkFyZWFDaGFydD4uCi0KLSovCi0kaml0LkFyZWFDaGFydCA9IG5ldyBDbGFzcyh7Ci0gIHN0OiBudWxsLAotICBjb2xvcnM6IFsiIzQxNkQ5QyIsICIjNzBBMzVFIiwgIiNFQkIwNTYiLCAiI0M3NDI0MyIsICIjODM1NDhCIiwgIiM5MDkyOTEiLCAiIzU1N0VBQSJdLAotICBzZWxlY3RlZDoge30sCi0gIGJ1c3k6IGZhbHNlLAotICAKLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0KSB7Ci0gICAgdGhpcy5jb250cm9sbGVyID0gdGhpcy5jb25maWcgPSAKLSAgICAgICQubWVyZ2UoT3B0aW9ucygiQ2FudmFzIiwgIk1hcmdpbiIsICJMYWJlbCIsICJBcmVhQ2hhcnQiKSwgewotICAgICAgICBMYWJlbDogeyB0eXBlOiAnTmF0aXZlJyB9Ci0gICAgICB9LCBvcHQpOwotICAgIC8vc2V0IGZ1bmN0aW9ucyBmb3Igc2hvd0xhYmVscyBhbmQgc2hvd0FnZ3JlZ2F0ZXMKLSAgICB2YXIgc2hvd0xhYmVscyA9IHRoaXMuY29uZmlnLnNob3dMYWJlbHMsCi0gICAgICAgIHR5cGVMYWJlbHMgPSAkLnR5cGUoc2hvd0xhYmVscyksCi0gICAgICAgIHNob3dBZ2dyZWdhdGVzID0gdGhpcy5jb25maWcuc2hvd0FnZ3JlZ2F0ZXMsCi0gICAgICAgIHR5cGVBZ2dyZWdhdGVzID0gJC50eXBlKHNob3dBZ2dyZWdhdGVzKTsKLSAgICB0aGlzLmNvbmZpZy5zaG93TGFiZWxzID0gdHlwZUxhYmVscyA9PSAnZnVuY3Rpb24nPyBzaG93TGFiZWxzIDogJC5sYW1iZGEoc2hvd0xhYmVscyk7Ci0gICAgdGhpcy5jb25maWcuc2hvd0FnZ3JlZ2F0ZXMgPSB0eXBlQWdncmVnYXRlcyA9PSAnZnVuY3Rpb24nPyBzaG93QWdncmVnYXRlcyA6ICQubGFtYmRhKHNob3dBZ2dyZWdhdGVzKTsKLSAgICAKLSAgICB0aGlzLmluaXRpYWxpemVWaXooKTsKLSAgfSwKLSAgCi0gIGluaXRpYWxpemVWaXo6IGZ1bmN0aW9uKCkgewotICAgIHZhciBjb25maWcgPSB0aGlzLmNvbmZpZywKLSAgICAgICAgdGhhdCA9IHRoaXMsCi0gICAgICAgIG5vZGVUeXBlID0gY29uZmlnLnR5cGUuc3BsaXQoIjoiKVswXSwKLSAgICAgICAgbm9kZUxhYmVscyA9IHt9OwotCi0gICAgdmFyIGRlbGVnYXRlID0gbmV3ICRqaXQuU1QoewotICAgICAgaW5qZWN0SW50bzogY29uZmlnLmluamVjdEludG8sCi0gICAgICB3aWR0aDogY29uZmlnLndpZHRoLAotICAgICAgaGVpZ2h0OiBjb25maWcuaGVpZ2h0LAotICAgICAgb3JpZW50YXRpb246ICJib3R0b20iLAotICAgICAgbGV2ZWxEaXN0YW5jZTogMCwKLSAgICAgIHNpYmxpbmdPZmZzZXQ6IDAsCi0gICAgICBzdWJ0cmVlT2Zmc2V0OiAwLAotICAgICAgd2l0aExhYmVsczogY29uZmlnLkxhYmVsLnR5cGUgIT0gJ05hdGl2ZScsCi0gICAgICB1c2VDYW52YXM6IGNvbmZpZy51c2VDYW52YXMsCi0gICAgICBMYWJlbDogewotICAgICAgICB0eXBlOiBjb25maWcuTGFiZWwudHlwZQotICAgICAgfSwKLSAgICAgIE5vZGU6IHsKLSAgICAgICAgb3ZlcnJpZGFibGU6IHRydWUsCi0gICAgICAgIHR5cGU6ICdhcmVhY2hhcnQtJyArIG5vZGVUeXBlLAotICAgICAgICBhbGlnbjogJ2xlZnQnLAotICAgICAgICB3aWR0aDogMSwKLSAgICAgICAgaGVpZ2h0OiAxCi0gICAgICB9LAotICAgICAgRWRnZTogewotICAgICAgICB0eXBlOiAnbm9uZScKLSAgICAgIH0sCi0gICAgICBUaXBzOiB7Ci0gICAgICAgIGVuYWJsZTogY29uZmlnLlRpcHMuZW5hYmxlLAotICAgICAgICB0eXBlOiAnTmF0aXZlJywKLSAgICAgICAgZm9yY2U6IHRydWUsCi0gICAgICAgIG9uU2hvdzogZnVuY3Rpb24odGlwLCBub2RlLCBjb250YWlucykgewotICAgICAgICAgIHZhciBlbGVtID0gY29udGFpbnM7Ci0gICAgICAgICAgY29uZmlnLlRpcHMub25TaG93KHRpcCwgZWxlbSwgbm9kZSk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0gICAgICBFdmVudHM6IHsKLSAgICAgICAgZW5hYmxlOiB0cnVlLAotICAgICAgICB0eXBlOiAnTmF0aXZlJywKLSAgICAgICAgb25DbGljazogZnVuY3Rpb24obm9kZSwgZXZlbnRJbmZvLCBldnQpIHsKLSAgICAgICAgICBpZighY29uZmlnLmZpbHRlck9uQ2xpY2sgJiYgIWNvbmZpZy5FdmVudHMuZW5hYmxlKSByZXR1cm47Ci0gICAgICAgICAgdmFyIGVsZW0gPSBldmVudEluZm8uZ2V0Q29udGFpbnMoKTsKLSAgICAgICAgICBpZihlbGVtKSBjb25maWcuZmlsdGVyT25DbGljayAmJiB0aGF0LmZpbHRlcihlbGVtLm5hbWUpOwotICAgICAgICAgIGNvbmZpZy5FdmVudHMuZW5hYmxlICYmIGNvbmZpZy5FdmVudHMub25DbGljayhlbGVtLCBldmVudEluZm8sIGV2dCk7Ci0gICAgICAgIH0sCi0gICAgICAgIG9uUmlnaHRDbGljazogZnVuY3Rpb24obm9kZSwgZXZlbnRJbmZvLCBldnQpIHsKLSAgICAgICAgICBpZighY29uZmlnLnJlc3RvcmVPblJpZ2h0Q2xpY2spIHJldHVybjsKLSAgICAgICAgICB0aGF0LnJlc3RvcmUoKTsKLSAgICAgICAgfSwKLSAgICAgICAgb25Nb3VzZU1vdmU6IGZ1bmN0aW9uKG5vZGUsIGV2ZW50SW5mbywgZXZ0KSB7Ci0gICAgICAgICAgaWYoIWNvbmZpZy5zZWxlY3RPbkhvdmVyKSByZXR1cm47Ci0gICAgICAgICAgaWYobm9kZSkgewotICAgICAgICAgICAgdmFyIGVsZW0gPSBldmVudEluZm8uZ2V0Q29udGFpbnMoKTsKLSAgICAgICAgICAgIHRoYXQuc2VsZWN0KG5vZGUuaWQsIGVsZW0ubmFtZSwgZWxlbS5pbmRleCk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoYXQuc2VsZWN0KGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIG9uQ3JlYXRlTGFiZWw6IGZ1bmN0aW9uKGRvbUVsZW1lbnQsIG5vZGUpIHsKLSAgICAgICAgdmFyIGxhYmVsQ29uZiA9IGNvbmZpZy5MYWJlbCwKLSAgICAgICAgICAgIHZhbHVlQXJyYXkgPSBub2RlLmdldERhdGEoJ3ZhbHVlQXJyYXknKSwKLSAgICAgICAgICAgIGFjdW1MZWZ0ID0gJC5yZWR1Y2UodmFsdWVBcnJheSwgZnVuY3Rpb24oeCwgeSkgeyByZXR1cm4geCArIHlbMF07IH0sIDApLAotICAgICAgICAgICAgYWN1bVJpZ2h0ID0gJC5yZWR1Y2UodmFsdWVBcnJheSwgZnVuY3Rpb24oeCwgeSkgeyByZXR1cm4geCArIHlbMV07IH0sIDApOwotICAgICAgICBpZihub2RlLmdldERhdGEoJ3ByZXYnKSkgewotICAgICAgICAgIHZhciBubGJzID0gewotICAgICAgICAgICAgd3JhcHBlcjogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCi0gICAgICAgICAgICBhZ2dyZWdhdGU6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLAotICAgICAgICAgICAgbGFiZWw6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpCi0gICAgICAgICAgfTsKLSAgICAgICAgICB2YXIgd3JhcHBlciA9IG5sYnMud3JhcHBlciwKLSAgICAgICAgICAgICAgbGFiZWwgPSBubGJzLmxhYmVsLAotICAgICAgICAgICAgICBhZ2dyZWdhdGUgPSBubGJzLmFnZ3JlZ2F0ZSwKLSAgICAgICAgICAgICAgd3JhcHBlclN0eWxlID0gd3JhcHBlci5zdHlsZSwKLSAgICAgICAgICAgICAgbGFiZWxTdHlsZSA9IGxhYmVsLnN0eWxlLAotICAgICAgICAgICAgICBhZ2dyZWdhdGVTdHlsZSA9IGFnZ3JlZ2F0ZS5zdHlsZTsKLSAgICAgICAgICAvL3N0b3JlIG5vZGUgbGFiZWxzCi0gICAgICAgICAgbm9kZUxhYmVsc1tub2RlLmlkXSA9IG5sYnM7Ci0gICAgICAgICAgLy9hcHBlbmQgbGFiZWxzCi0gICAgICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZChsYWJlbCk7Ci0gICAgICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZChhZ2dyZWdhdGUpOwotICAgICAgICAgIGlmKCFjb25maWcuc2hvd0xhYmVscyhub2RlLm5hbWUsIGFjdW1MZWZ0LCBhY3VtUmlnaHQsIG5vZGUpKSB7Ci0gICAgICAgICAgICBsYWJlbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZighY29uZmlnLnNob3dBZ2dyZWdhdGVzKG5vZGUubmFtZSwgYWN1bUxlZnQsIGFjdW1SaWdodCwgbm9kZSkpIHsKLSAgICAgICAgICAgIGFnZ3JlZ2F0ZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAgICAgIH0KLSAgICAgICAgICB3cmFwcGVyU3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOwotICAgICAgICAgIHdyYXBwZXJTdHlsZS5vdmVyZmxvdyA9ICd2aXNpYmxlJzsKLSAgICAgICAgICB3cmFwcGVyU3R5bGUuZm9udFNpemUgPSBsYWJlbENvbmYuc2l6ZSArICdweCc7Ci0gICAgICAgICAgd3JhcHBlclN0eWxlLmZvbnRGYW1pbHkgPSBsYWJlbENvbmYuZmFtaWx5OwotICAgICAgICAgIHdyYXBwZXJTdHlsZS5jb2xvciA9IGxhYmVsQ29uZi5jb2xvcjsKLSAgICAgICAgICB3cmFwcGVyU3R5bGUudGV4dEFsaWduID0gJ2NlbnRlcic7Ci0gICAgICAgICAgYWdncmVnYXRlU3R5bGUucG9zaXRpb24gPSBsYWJlbFN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKLSAgICAgICAgICAKLSAgICAgICAgICBkb21FbGVtZW50LnN0eWxlLndpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpICsgJ3B4JzsKLSAgICAgICAgICBkb21FbGVtZW50LnN0eWxlLmhlaWdodCA9IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0JykgKyAncHgnOwotICAgICAgICAgIGxhYmVsLmlubmVySFRNTCA9IG5vZGUubmFtZTsKLSAgICAgICAgICAKLSAgICAgICAgICBkb21FbGVtZW50LmFwcGVuZENoaWxkKHdyYXBwZXIpOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgb25QbGFjZUxhYmVsOiBmdW5jdGlvbihkb21FbGVtZW50LCBub2RlKSB7Ci0gICAgICAgIGlmKCFub2RlLmdldERhdGEoJ3ByZXYnKSkgcmV0dXJuOwotICAgICAgICB2YXIgbGFiZWxzID0gbm9kZUxhYmVsc1tub2RlLmlkXSwKLSAgICAgICAgICAgIHdyYXBwZXJTdHlsZSA9IGxhYmVscy53cmFwcGVyLnN0eWxlLAotICAgICAgICAgICAgbGFiZWxTdHlsZSA9IGxhYmVscy5sYWJlbC5zdHlsZSwKLSAgICAgICAgICAgIGFnZ3JlZ2F0ZVN0eWxlID0gbGFiZWxzLmFnZ3JlZ2F0ZS5zdHlsZSwKLSAgICAgICAgICAgIHdpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLAotICAgICAgICAgICAgaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKSwKLSAgICAgICAgICAgIGRpbUFycmF5ID0gbm9kZS5nZXREYXRhKCdkaW1BcnJheScpLAotICAgICAgICAgICAgdmFsQXJyYXkgPSBub2RlLmdldERhdGEoJ3ZhbHVlQXJyYXknKSwKLSAgICAgICAgICAgIGFjdW1MZWZ0ID0gJC5yZWR1Y2UodmFsQXJyYXksIGZ1bmN0aW9uKHgsIHkpIHsgcmV0dXJuIHggKyB5WzBdOyB9LCAwKSwKLSAgICAgICAgICAgIGFjdW1SaWdodCA9ICQucmVkdWNlKHZhbEFycmF5LCBmdW5jdGlvbih4LCB5KSB7IHJldHVybiB4ICsgeVsxXTsgfSwgMCksCi0gICAgICAgICAgICBmb250ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlLmZvbnRTaXplLCAxMCksCi0gICAgICAgICAgICBkb21TdHlsZSA9IGRvbUVsZW1lbnQuc3R5bGU7Ci0gICAgICAgIAotICAgICAgICBpZihkaW1BcnJheSAmJiB2YWxBcnJheSkgewotICAgICAgICAgIGlmKGNvbmZpZy5zaG93TGFiZWxzKG5vZGUubmFtZSwgYWN1bUxlZnQsIGFjdW1SaWdodCwgbm9kZSkpIHsKLSAgICAgICAgICAgIGxhYmVsU3R5bGUuZGlzcGxheSA9ICcnOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsYWJlbFN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgICAgfQotICAgICAgICAgIHZhciBhZ2dWYWx1ZSA9IGNvbmZpZy5zaG93QWdncmVnYXRlcyhub2RlLm5hbWUsIGFjdW1MZWZ0LCBhY3VtUmlnaHQsIG5vZGUpOwotICAgICAgICAgIGlmKGFnZ1ZhbHVlICE9PSBmYWxzZSkgewotICAgICAgICAgICAgYWdncmVnYXRlU3R5bGUuZGlzcGxheSA9ICcnOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhZ2dyZWdhdGVTdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAgICAgIH0KLSAgICAgICAgICB3cmFwcGVyU3R5bGUud2lkdGggPSBhZ2dyZWdhdGVTdHlsZS53aWR0aCA9IGxhYmVsU3R5bGUud2lkdGggPSBkb21FbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnOwotICAgICAgICAgIGFnZ3JlZ2F0ZVN0eWxlLmxlZnQgPSBsYWJlbFN0eWxlLmxlZnQgPSAtd2lkdGgvMiArICdweCc7Ci0gICAgICAgICAgZm9yKHZhciBpPTAsIGw9dmFsQXJyYXkubGVuZ3RoLCBhY3VtPTAsIGxlZnRBY3VtPTA7IGk8bDsgaSsrKSB7Ci0gICAgICAgICAgICBpZihkaW1BcnJheVtpXVswXSA+IDApIHsKLSAgICAgICAgICAgICAgYWN1bSs9IHZhbEFycmF5W2ldWzBdOwotICAgICAgICAgICAgICBsZWZ0QWN1bSs9IGRpbUFycmF5W2ldWzBdOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBhZ2dyZWdhdGVTdHlsZS50b3AgPSAoLWZvbnQgLSBjb25maWcubGFiZWxPZmZzZXQpICsgJ3B4JzsKLSAgICAgICAgICBsYWJlbFN0eWxlLnRvcCA9IChjb25maWcubGFiZWxPZmZzZXQgKyBsZWZ0QWN1bSkgKyAncHgnOwotICAgICAgICAgIGRvbUVsZW1lbnQuc3R5bGUudG9wID0gcGFyc2VJbnQoZG9tRWxlbWVudC5zdHlsZS50b3AsIDEwKSAtIGxlZnRBY3VtICsgJ3B4JzsKLSAgICAgICAgICBkb21FbGVtZW50LnN0eWxlLmhlaWdodCA9IHdyYXBwZXJTdHlsZS5oZWlnaHQgPSBsZWZ0QWN1bSArICdweCc7Ci0gICAgICAgICAgbGFiZWxzLmFnZ3JlZ2F0ZS5pbm5lckhUTUwgPSBhZ2dWYWx1ZSAhPT0gdHJ1ZT8gYWdnVmFsdWUgOiBhY3VtOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgCi0gICAgdmFyIHNpemUgPSBkZWxlZ2F0ZS5jYW52YXMuZ2V0U2l6ZSgpLAotICAgICAgICBtYXJnaW4gPSBjb25maWcuTWFyZ2luOwotICAgIGRlbGVnYXRlLmNvbmZpZy5vZmZzZXRZID0gLXNpemUuaGVpZ2h0LzIgKyBtYXJnaW4uYm90dG9tIAotICAgICAgKyAoY29uZmlnLnNob3dMYWJlbHMgJiYgKGNvbmZpZy5sYWJlbE9mZnNldCArIGNvbmZpZy5MYWJlbC5zaXplKSk7Ci0gICAgZGVsZWdhdGUuY29uZmlnLm9mZnNldFggPSAobWFyZ2luLnJpZ2h0IC0gbWFyZ2luLmxlZnQpLzI7Ci0gICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIHRoaXMuY2FudmFzID0gdGhpcy5kZWxlZ2F0ZS5jYW52YXM7Ci0gIH0sCi0gIAotIC8qCi0gIE1ldGhvZDogbG9hZEpTT04KLSAKLSAgTG9hZHMgSlNPTiBkYXRhIGludG8gdGhlIHZpc3VhbGl6YXRpb24uIAotICAKLSAgUGFyYW1ldGVyczoKLSAgCi0gIGpzb24gLSBUaGUgSlNPTiBkYXRhIGZvcm1hdC4gVGhpcyBmb3JtYXQgaXMgZGVzY3JpYmVkIGluIDxodHRwOi8vYmxvZy50aGVqaXQub3JnLzIwMTAvMDQvMjQvbmV3LWphdmFzY3JpcHQtaW5mb3Zpcy10b29sa2l0LXZpc3VhbGl6YXRpb25zLyNqc29uLWRhdGEtZm9ybWF0Pi4KLSAgCi0gIEV4YW1wbGU6Ci0gIChzdGFydCBjb2RlIGpzKQotICB2YXIgYXJlYUNoYXJ0ID0gbmV3ICRqaXQuQXJlYUNoYXJ0KG9wdGlvbnMpOwotICBhcmVhQ2hhcnQubG9hZEpTT04oanNvbik7Ci0gIChlbmQgY29kZSkKLSAqLyAgCi0gIGxvYWRKU09OOiBmdW5jdGlvbihqc29uKSB7Ci0gICAgdmFyIHByZWZpeCA9ICQudGltZSgpLCAKLSAgICAgICAgY2ggPSBbXSwgCi0gICAgICAgIGRlbGVnYXRlID0gdGhpcy5kZWxlZ2F0ZSwKLSAgICAgICAgbmFtZSA9ICQuc3BsYXQoanNvbi5sYWJlbCksIAotICAgICAgICBjb2xvciA9ICQuc3BsYXQoanNvbi5jb2xvciB8fCB0aGlzLmNvbG9ycyksCi0gICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnLAotICAgICAgICBncmFkaWVudCA9ICEhY29uZmlnLnR5cGUuc3BsaXQoIjoiKVsxXSwKLSAgICAgICAgYW5pbWF0ZSA9IGNvbmZpZy5hbmltYXRlOwotICAgIAotICAgIGZvcih2YXIgaT0wLCB2YWx1ZXM9anNvbi52YWx1ZXMsIGw9dmFsdWVzLmxlbmd0aDsgaTxsLTE7IGkrKykgewotICAgICAgdmFyIHZhbCA9IHZhbHVlc1tpXSwgcHJldiA9IHZhbHVlc1tpLTFdLCBuZXh0ID0gdmFsdWVzW2krMV07Ci0gICAgICB2YXIgdmFsTGVmdCA9ICQuc3BsYXQodmFsdWVzW2ldLnZhbHVlcyksIHZhbFJpZ2h0ID0gJC5zcGxhdCh2YWx1ZXNbaSsxXS52YWx1ZXMpOwotICAgICAgdmFyIHZhbEFycmF5ID0gJC56aXAodmFsTGVmdCwgdmFsUmlnaHQpOwotICAgICAgdmFyIGFjdW1MZWZ0ID0gMCwgYWN1bVJpZ2h0ID0gMDsKLSAgICAgIGNoLnB1c2goewotICAgICAgICAnaWQnOiBwcmVmaXggKyB2YWwubGFiZWwsCi0gICAgICAgICduYW1lJzogdmFsLmxhYmVsLAotICAgICAgICAnZGF0YSc6IHsKLSAgICAgICAgICAndmFsdWUnOiB2YWxBcnJheSwKLSAgICAgICAgICAnJHZhbHVlQXJyYXknOiB2YWxBcnJheSwKLSAgICAgICAgICAnJGNvbG9yQXJyYXknOiBjb2xvciwKLSAgICAgICAgICAnJHN0cmluZ0FycmF5JzogbmFtZSwKLSAgICAgICAgICAnJG5leHQnOiBuZXh0LmxhYmVsLAotICAgICAgICAgICckcHJldic6IHByZXY/IHByZXYubGFiZWw6ZmFsc2UsCi0gICAgICAgICAgJyRjb25maWcnOiBjb25maWcsCi0gICAgICAgICAgJyRncmFkaWVudCc6IGdyYWRpZW50Ci0gICAgICAgIH0sCi0gICAgICAgICdjaGlsZHJlbic6IFtdCi0gICAgICB9KTsKLSAgICB9Ci0gICAgdmFyIHJvb3QgPSB7Ci0gICAgICAnaWQnOiBwcmVmaXggKyAnJHJvb3QnLAotICAgICAgJ25hbWUnOiAnJywKLSAgICAgICdkYXRhJzogewotICAgICAgICAnJHR5cGUnOiAnbm9uZScsCi0gICAgICAgICckd2lkdGgnOiAxLAotICAgICAgICAnJGhlaWdodCc6IDEKLSAgICAgIH0sCi0gICAgICAnY2hpbGRyZW4nOiBjaAotICAgIH07Ci0gICAgZGVsZWdhdGUubG9hZEpTT04ocm9vdCk7Ci0gICAgCi0gICAgdGhpcy5ub3JtYWxpemVEaW1zKCk7Ci0gICAgZGVsZWdhdGUuY29tcHV0ZSgpOwotICAgIGRlbGVnYXRlLnNlbGVjdChkZWxlZ2F0ZS5yb290KTsKLSAgICBpZihhbmltYXRlKSB7Ci0gICAgICBkZWxlZ2F0ZS5meC5hbmltYXRlKHsKLSAgICAgICAgbW9kZXM6IFsnbm9kZS1wcm9wZXJ0eTpoZWlnaHQ6ZGltQXJyYXknXSwKLSAgICAgICAgZHVyYXRpb246MTUwMAotICAgICAgfSk7Ci0gICAgfQotICB9LAotICAKLSAvKgotICBNZXRob2Q6IHVwZGF0ZUpTT04KLSAKLSAgVXNlIHRoaXMgbWV0aG9kIHdoZW4gdXBkYXRpbmcgdmFsdWVzIGZvciB0aGUgY3VycmVudCBKU09OIGRhdGEuIElmIHRoZSBpdGVtcyBzcGVjaWZpZWQgYnkgdGhlIEpTT04gZGF0YSBhbHJlYWR5IGV4aXN0IGluIHRoZSBncmFwaCB0aGVuIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHVwZGF0ZWQuCi0gIAotICBQYXJhbWV0ZXJzOgotICAKLSAganNvbiAtIChvYmplY3QpIEpTT04gZGF0YSB0byBiZSB1cGRhdGVkLiBUaGUgSlNPTiBmb3JtYXQgY29ycmVzcG9uZHMgdG8gdGhlIG9uZSBkZXNjcmliZWQgaW4gPEFyZWFDaGFydC5sb2FkSlNPTj4uCi0gIG9uQ29tcGxldGUgLSAob2JqZWN0KSBBIGNhbGxiYWNrIG9iamVjdCB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYW5pbWF0aW9uIHRyYW5zaXRpb24gd2hlbiB1cGRhdGluZyB0aGUgZGF0YSBlbmQuCi0gIAotICBFeGFtcGxlOgotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gIGFyZWFDaGFydC51cGRhdGVKU09OKGpzb24sIHsKLSAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgIGFsZXJ0KCd1cGRhdGUgY29tcGxldGUhJyk7Ci0gICAgfQotICB9KTsKLSAgKGVuZCBjb2RlKQotICovICAKLSAgdXBkYXRlSlNPTjogZnVuY3Rpb24oanNvbiwgb25Db21wbGV0ZSkgewotICAgIGlmKHRoaXMuYnVzeSkgcmV0dXJuOwotICAgIHRoaXMuYnVzeSA9IHRydWU7Ci0gICAgCi0gICAgdmFyIGRlbGVnYXRlID0gdGhpcy5kZWxlZ2F0ZSwKLSAgICAgICAgZ3JhcGggPSBkZWxlZ2F0ZS5ncmFwaCwKLSAgICAgICAgbGFiZWxzID0ganNvbi5sYWJlbCAmJiAkLnNwbGF0KGpzb24ubGFiZWwpLAotICAgICAgICB2YWx1ZXMgPSBqc29uLnZhbHVlcywKLSAgICAgICAgYW5pbWF0ZSA9IHRoaXMuY29uZmlnLmFuaW1hdGUsCi0gICAgICAgIHRoYXQgPSB0aGlzLAotICAgICAgICBoYXNoVmFsdWVzID0ge307Ci0KLSAgICAvL2NvbnZlcnQgdGhlIHdob2xlIHRoaW5nIGludG8gYSBoYXNoCi0gICAgZm9yICh2YXIgaSA9IDAsIGwgPSB2YWx1ZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Ci0gICAgICBoYXNoVmFsdWVzW3ZhbHVlc1tpXS5sYWJlbF0gPSB2YWx1ZXNbaV07Ci0gICAgfQotICAKLSAgICBncmFwaC5lYWNoTm9kZShmdW5jdGlvbihuKSB7Ci0gICAgICB2YXIgdiA9IGhhc2hWYWx1ZXNbbi5uYW1lXSwKLSAgICAgICAgICBzdHJpbmdBcnJheSA9IG4uZ2V0RGF0YSgnc3RyaW5nQXJyYXknKSwKLSAgICAgICAgICB2YWxBcnJheSA9IG4uZ2V0RGF0YSgndmFsdWVBcnJheScpLAotICAgICAgICAgIG5leHQgPSBuLmdldERhdGEoJ25leHQnKTsKLSAgICAgIAotICAgICAgaWYgKHYpIHsKLSAgICAgICAgdi52YWx1ZXMgPSAkLnNwbGF0KHYudmFsdWVzKTsKLSAgICAgICAgJC5lYWNoKHZhbEFycmF5LCBmdW5jdGlvbihhLCBpKSB7Ci0gICAgICAgICAgYVswXSA9IHYudmFsdWVzW2ldOwotICAgICAgICAgIGlmKGxhYmVscykgc3RyaW5nQXJyYXlbaV0gPSBsYWJlbHNbaV07Ci0gICAgICAgIH0pOwotICAgICAgICBuLnNldERhdGEoJ3ZhbHVlQXJyYXknLCB2YWxBcnJheSk7Ci0gICAgICB9Ci0gICAgIAotICAgICAgaWYobmV4dCkgewotICAgICAgICB2ID0gaGFzaFZhbHVlc1tuZXh0XTsKLSAgICAgICAgaWYodikgewotICAgICAgICAgICQuZWFjaCh2YWxBcnJheSwgZnVuY3Rpb24oYSwgaSkgewotICAgICAgICAgICAgYVsxXSA9IHYudmFsdWVzW2ldOwotICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgdGhpcy5ub3JtYWxpemVEaW1zKCk7Ci0gICAgZGVsZWdhdGUuY29tcHV0ZSgpOwotICAgIGRlbGVnYXRlLnNlbGVjdChkZWxlZ2F0ZS5yb290KTsKLSAgICBpZihhbmltYXRlKSB7Ci0gICAgICBkZWxlZ2F0ZS5meC5hbmltYXRlKHsKLSAgICAgICAgbW9kZXM6IFsnbm9kZS1wcm9wZXJ0eTpoZWlnaHQ6ZGltQXJyYXknXSwKLSAgICAgICAgZHVyYXRpb246MTUwMCwKLSAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgdGhhdC5idXN5ID0gZmFsc2U7Ci0gICAgICAgICAgb25Db21wbGV0ZSAmJiBvbkNvbXBsZXRlLm9uQ29tcGxldGUoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfQotICB9LAotICAKLS8qCi0gIE1ldGhvZDogZmlsdGVyCi0gCi0gIEZpbHRlciBzZWxlY3RlZCBzdGFja3MsIGNvbGxhcHNpbmcgYWxsIG90aGVyIHN0YWNrcy4gWW91IGNhbiBmaWx0ZXIgbXVsdGlwbGUgc3RhY2tzIGF0IHRoZSBzYW1lIHRpbWUuCi0gIAotICBQYXJhbWV0ZXJzOgotICAKLSAgZmlsdGVycyAtIChhcnJheSkgQW4gYXJyYXkgb2Ygc3RyaW5ncyB3aXRoIHRoZSBuYW1lIG9mIHRoZSBzdGFja3MgdG8gYmUgZmlsdGVyZWQuCi0gIGNhbGxiYWNrIC0gKG9iamVjdCkgQW4gb2JqZWN0IHdpdGggYW4gKm9uQ29tcGxldGUqIGNhbGxiYWNrIG1ldGhvZC4gCi0gIAotICBFeGFtcGxlOgotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gIGFyZWFDaGFydC5maWx0ZXIoWydsYWJlbCBBJywgJ2xhYmVsIEMnXSwgewotICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgY29uc29sZS5sb2coJ2RvbmUhJyk7Ci0gICAgICB9Ci0gIH0pOwotICAoZW5kIGNvZGUpCi0gIAotICBTZWUgYWxzbzoKLSAgCi0gIDxBcmVhQ2hhcnQucmVzdG9yZT4uCi0gKi8gIAotICBmaWx0ZXI6IGZ1bmN0aW9uKGZpbHRlcnMsIGNhbGxiYWNrKSB7Ci0gICAgaWYodGhpcy5idXN5KSByZXR1cm47Ci0gICAgdGhpcy5idXN5ID0gdHJ1ZTsKLSAgICBpZih0aGlzLmNvbmZpZy5UaXBzLmVuYWJsZSkgdGhpcy5kZWxlZ2F0ZS50aXBzLmhpZGUoKTsKLSAgICB0aGlzLnNlbGVjdChmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICB2YXIgYXJncyA9ICQuc3BsYXQoZmlsdGVycyk7Ci0gICAgdmFyIHJ0ID0gdGhpcy5kZWxlZ2F0ZS5ncmFwaC5nZXROb2RlKHRoaXMuZGVsZWdhdGUucm9vdCk7Ci0gICAgdmFyIHRoYXQgPSB0aGlzOwotICAgIHRoaXMubm9ybWFsaXplRGltcygpOwotICAgIHJ0LmVhY2hBZGphY2VuY3koZnVuY3Rpb24oYWRqKSB7Ci0gICAgICB2YXIgbiA9IGFkai5ub2RlVG8sIAotICAgICAgICAgIGRpbUFycmF5ID0gbi5nZXREYXRhKCdkaW1BcnJheScsICdlbmQnKSwKLSAgICAgICAgICBzdHJpbmdBcnJheSA9IG4uZ2V0RGF0YSgnc3RyaW5nQXJyYXknKTsKLSAgICAgIG4uc2V0RGF0YSgnZGltQXJyYXknLCAkLm1hcChkaW1BcnJheSwgZnVuY3Rpb24oZCwgaSkgewotICAgICAgICByZXR1cm4gKCQuaW5kZXhPZihhcmdzLCBzdHJpbmdBcnJheVtpXSkgPiAtMSk/IGQ6WzAsIDBdOwotICAgICAgfSksICdlbmQnKTsKLSAgICB9KTsKLSAgICB0aGlzLmRlbGVnYXRlLmZ4LmFuaW1hdGUoewotICAgICAgbW9kZXM6IFsnbm9kZS1wcm9wZXJ0eTpkaW1BcnJheSddLAotICAgICAgZHVyYXRpb246MTUwMCwKLSAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGF0LmJ1c3kgPSBmYWxzZTsKLSAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2sub25Db21wbGV0ZSgpOwotICAgICAgfQotICAgIH0pOwotICB9LAotICAKLSAgLyoKLSAgTWV0aG9kOiByZXN0b3JlCi0gCi0gIFNldHMgYWxsIHN0YWNrcyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBmaWx0ZXJlZCB2aXNpYmxlLgotICAKLSAgRXhhbXBsZToKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotICBhcmVhQ2hhcnQucmVzdG9yZSgpOwotICAoZW5kIGNvZGUpCi0gIAotICBTZWUgYWxzbzoKLSAgCi0gIDxBcmVhQ2hhcnQuZmlsdGVyPi4KLSAqLyAgCi0gIHJlc3RvcmU6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgaWYodGhpcy5idXN5KSByZXR1cm47Ci0gICAgdGhpcy5idXN5ID0gdHJ1ZTsKLSAgICBpZih0aGlzLmNvbmZpZy5UaXBzLmVuYWJsZSkgdGhpcy5kZWxlZ2F0ZS50aXBzLmhpZGUoKTsKLSAgICB0aGlzLnNlbGVjdChmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICB0aGlzLm5vcm1hbGl6ZURpbXMoKTsKLSAgICB2YXIgdGhhdCA9IHRoaXM7Ci0gICAgdGhpcy5kZWxlZ2F0ZS5meC5hbmltYXRlKHsKLSAgICAgIG1vZGVzOiBbJ25vZGUtcHJvcGVydHk6aGVpZ2h0OmRpbUFycmF5J10sCi0gICAgICBkdXJhdGlvbjoxNTAwLAotICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoYXQuYnVzeSA9IGZhbHNlOwotICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjay5vbkNvbXBsZXRlKCk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gIH0sCi0gIC8vYWRkcyB0aGUgbGl0dGxlIGJyb3duIGJhciB3aGVuIGhvdmVyaW5nIHRoZSBub2RlCi0gIHNlbGVjdDogZnVuY3Rpb24oaWQsIG5hbWUsIGluZGV4KSB7Ci0gICAgaWYoIXRoaXMuY29uZmlnLnNlbGVjdE9uSG92ZXIpIHJldHVybjsKLSAgICB2YXIgcyA9IHRoaXMuc2VsZWN0ZWQ7Ci0gICAgaWYocy5pZCAhPSBpZCB8fCBzLm5hbWUgIT0gbmFtZSAKLSAgICAgICAgfHwgcy5pbmRleCAhPSBpbmRleCkgewotICAgICAgcy5pZCA9IGlkOwotICAgICAgcy5uYW1lID0gbmFtZTsKLSAgICAgIHMuaW5kZXggPSBpbmRleDsKLSAgICAgIHRoaXMuZGVsZWdhdGUuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgewotICAgICAgICBuLnNldERhdGEoJ2JvcmRlcicsIGZhbHNlKTsKLSAgICAgIH0pOwotICAgICAgaWYoaWQpIHsKLSAgICAgICAgdmFyIG4gPSB0aGlzLmRlbGVnYXRlLmdyYXBoLmdldE5vZGUoaWQpOwotICAgICAgICBuLnNldERhdGEoJ2JvcmRlcicsIHMpOwotICAgICAgICB2YXIgbGluayA9IGluZGV4ID09PSAwPyAncHJldic6J25leHQnOwotICAgICAgICBsaW5rID0gbi5nZXREYXRhKGxpbmspOwotICAgICAgICBpZihsaW5rKSB7Ci0gICAgICAgICAgbiA9IHRoaXMuZGVsZWdhdGUuZ3JhcGguZ2V0QnlOYW1lKGxpbmspOwotICAgICAgICAgIGlmKG4pIHsKLSAgICAgICAgICAgIG4uc2V0RGF0YSgnYm9yZGVyJywgewotICAgICAgICAgICAgICBuYW1lOiBuYW1lLAotICAgICAgICAgICAgICBpbmRleDogMS1pbmRleAotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICB0aGlzLmRlbGVnYXRlLnBsb3QoKTsKLSAgICB9Ci0gIH0sCi0gIAotICAvKgotICAgIE1ldGhvZDogZ2V0TGVnZW5kCi0gICAKLSAgICBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIGFzIGtleXMgdGhlIGxlZ2VuZCBuYW1lcyBhbmQgYXMgdmFsdWVzIGhleCBzdHJpbmdzIHdpdGggY29sb3IgdmFsdWVzLgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgCi0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgdmFyIGxlZ2VuZCA9IGFyZWFDaGFydC5nZXRMZWdlbmQoKTsKLSAgICAoZW5kIGNvZGUpCi0gKi8gIAotICBnZXRMZWdlbmQ6IGZ1bmN0aW9uKCkgewotICAgIHZhciBsZWdlbmQgPSB7fTsKLSAgICB2YXIgbjsKLSAgICB0aGlzLmRlbGVnYXRlLmdyYXBoLmdldE5vZGUodGhpcy5kZWxlZ2F0ZS5yb290KS5lYWNoQWRqYWNlbmN5KGZ1bmN0aW9uKGFkaikgewotICAgICAgbiA9IGFkai5ub2RlVG87Ci0gICAgfSk7Ci0gICAgdmFyIGNvbG9ycyA9IG4uZ2V0RGF0YSgnY29sb3JBcnJheScpLAotICAgICAgICBsZW4gPSBjb2xvcnMubGVuZ3RoOwotICAgICQuZWFjaChuLmdldERhdGEoJ3N0cmluZ0FycmF5JyksIGZ1bmN0aW9uKHMsIGkpIHsKLSAgICAgIGxlZ2VuZFtzXSA9IGNvbG9yc1tpICUgbGVuXTsKLSAgICB9KTsKLSAgICByZXR1cm4gbGVnZW5kOwotICB9LAotICAKLSAgLyoKLSAgICBNZXRob2Q6IGdldE1heFZhbHVlCi0gICAKLSAgICBSZXR1cm5zIHRoZSBtYXhpbXVtIGFjY3VtdWxhdGVkIHZhbHVlIGZvciB0aGUgc3RhY2tzLiBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciBub3JtYWxpemluZyB0aGUgZ3JhcGggaGVpZ2h0cyBhY2NvcmRpbmcgdG8gdGhlIGNhbnZhcyBoZWlnaHQuCi0gICAgCi0gICAgRXhhbXBsZToKLSAgICAKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICB2YXIgYW5zID0gYXJlYUNoYXJ0LmdldE1heFZhbHVlKCk7Ci0gICAgKGVuZCBjb2RlKQotICAgIAotICAgIEluIHNvbWUgY2FzZXMgaXQgY291bGQgYmUgdXNlZnVsIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIG5vcm1hbGl6ZSBoZWlnaHRzIGZvciBhIGdyb3VwIG9mIEFyZWFDaGFydHMsIGxpa2Ugd2hlbiBkb2luZyBzbWFsbCBtdWx0aXBsZXMuCi0gICAgCi0gICAgRXhhbXBsZToKLSAgICAKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICAvL3dpbGwgcmV0dXJuIDEwMCBmb3IgYWxsIEFyZWFDaGFydCBpbnN0YW5jZXMsCi0gICAgLy9kaXNwbGF5aW5nIGFsbCBvZiB0aGVtIHdpdGggdGhlIHNhbWUgc2NhbGUKLSAgICAkaml0LkFyZWFDaGFydC5pbXBsZW1lbnQoewotICAgICAgJ2dldE1heFZhbHVlJzogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiAxMDA7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgKGVuZCBjb2RlKQotICAgIAotKi8gIAotICBnZXRNYXhWYWx1ZTogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIG1heFZhbHVlID0gMDsKLSAgICB0aGlzLmRlbGVnYXRlLmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKG4pIHsKLSAgICAgIHZhciB2YWxBcnJheSA9IG4uZ2V0RGF0YSgndmFsdWVBcnJheScpLAotICAgICAgICAgIGFjdW1MZWZ0ID0gMCwgYWN1bVJpZ2h0ID0gMDsKLSAgICAgICQuZWFjaCh2YWxBcnJheSwgZnVuY3Rpb24odikgeyAKLSAgICAgICAgYWN1bUxlZnQgKz0gK3ZbMF07Ci0gICAgICAgIGFjdW1SaWdodCArPSArdlsxXTsKLSAgICAgIH0pOwotICAgICAgdmFyIGFjdW0gPSBhY3VtUmlnaHQ+YWN1bUxlZnQ/IGFjdW1SaWdodDphY3VtTGVmdDsKLSAgICAgIG1heFZhbHVlID0gbWF4VmFsdWU+YWN1bT8gbWF4VmFsdWU6YWN1bTsKLSAgICB9KTsKLSAgICByZXR1cm4gbWF4VmFsdWU7Ci0gIH0sCi0gIAotICBub3JtYWxpemVEaW1zOiBmdW5jdGlvbigpIHsKLSAgICAvL251bWJlciBvZiBlbGVtZW50cwotICAgIHZhciByb290ID0gdGhpcy5kZWxlZ2F0ZS5ncmFwaC5nZXROb2RlKHRoaXMuZGVsZWdhdGUucm9vdCksIGw9MDsKLSAgICByb290LmVhY2hBZGphY2VuY3koZnVuY3Rpb24oKSB7Ci0gICAgICBsKys7Ci0gICAgfSk7Ci0gICAgdmFyIG1heFZhbHVlID0gdGhpcy5nZXRNYXhWYWx1ZSgpIHx8IDEsCi0gICAgICAgIHNpemUgPSB0aGlzLmRlbGVnYXRlLmNhbnZhcy5nZXRTaXplKCksCi0gICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnLAotICAgICAgICBtYXJnaW4gPSBjb25maWcuTWFyZ2luLAotICAgICAgICBsYWJlbE9mZnNldCA9IGNvbmZpZy5sYWJlbE9mZnNldCArIGNvbmZpZy5MYWJlbC5zaXplLAotICAgICAgICBmaXhlZERpbSA9IChzaXplLndpZHRoIC0gKG1hcmdpbi5sZWZ0ICsgbWFyZ2luLnJpZ2h0KSkgLyBsLAotICAgICAgICBhbmltYXRlID0gY29uZmlnLmFuaW1hdGUsCi0gICAgICAgIGhlaWdodCA9IHNpemUuaGVpZ2h0IC0gKG1hcmdpbi50b3AgKyBtYXJnaW4uYm90dG9tKSAtIChjb25maWcuc2hvd0FnZ3JlZ2F0ZXMgJiYgbGFiZWxPZmZzZXQpIAotICAgICAgICAgIC0gKGNvbmZpZy5zaG93TGFiZWxzICYmIGxhYmVsT2Zmc2V0KTsKLSAgICB0aGlzLmRlbGVnYXRlLmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKG4pIHsKLSAgICAgIHZhciBhY3VtTGVmdCA9IDAsIGFjdW1SaWdodCA9IDAsIGFuaW1hdGVWYWx1ZSA9IFtdOwotICAgICAgJC5lYWNoKG4uZ2V0RGF0YSgndmFsdWVBcnJheScpLCBmdW5jdGlvbih2KSB7Ci0gICAgICAgIGFjdW1MZWZ0ICs9ICt2WzBdOwotICAgICAgICBhY3VtUmlnaHQgKz0gK3ZbMV07Ci0gICAgICAgIGFuaW1hdGVWYWx1ZS5wdXNoKFswLCAwXSk7Ci0gICAgICB9KTsKLSAgICAgIHZhciBhY3VtID0gYWN1bVJpZ2h0PmFjdW1MZWZ0PyBhY3VtUmlnaHQ6YWN1bUxlZnQ7Ci0gICAgICBuLnNldERhdGEoJ3dpZHRoJywgZml4ZWREaW0pOwotICAgICAgaWYoYW5pbWF0ZSkgewotICAgICAgICBuLnNldERhdGEoJ2hlaWdodCcsIGFjdW0gKiBoZWlnaHQgLyBtYXhWYWx1ZSwgJ2VuZCcpOwotICAgICAgICBuLnNldERhdGEoJ2RpbUFycmF5JywgJC5tYXAobi5nZXREYXRhKCd2YWx1ZUFycmF5JyksIGZ1bmN0aW9uKG4pIHsgCi0gICAgICAgICAgcmV0dXJuIFtuWzBdICogaGVpZ2h0IC8gbWF4VmFsdWUsIG5bMV0gKiBoZWlnaHQgLyBtYXhWYWx1ZV07IAotICAgICAgICB9KSwgJ2VuZCcpOwotICAgICAgICB2YXIgZGltQXJyYXkgPSBuLmdldERhdGEoJ2RpbUFycmF5Jyk7Ci0gICAgICAgIGlmKCFkaW1BcnJheSkgewotICAgICAgICAgIG4uc2V0RGF0YSgnZGltQXJyYXknLCBhbmltYXRlVmFsdWUpOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBuLnNldERhdGEoJ2hlaWdodCcsIGFjdW0gKiBoZWlnaHQgLyBtYXhWYWx1ZSk7Ci0gICAgICAgIG4uc2V0RGF0YSgnZGltQXJyYXknLCAkLm1hcChuLmdldERhdGEoJ3ZhbHVlQXJyYXknKSwgZnVuY3Rpb24obikgeyAKLSAgICAgICAgICByZXR1cm4gW25bMF0gKiBoZWlnaHQgLyBtYXhWYWx1ZSwgblsxXSAqIGhlaWdodCAvIG1heFZhbHVlXTsgCi0gICAgICAgIH0pKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgfQotfSk7Ci0KLQotLyoKLSAqIEZpbGU6IE9wdGlvbnMuQmFyQ2hhcnQuanMKLSAqCi0qLwotCi0vKgotICBPYmplY3Q6IE9wdGlvbnMuQmFyQ2hhcnQKLSAgCi0gIDxCYXJDaGFydD4gb3B0aW9ucy4gCi0gIE90aGVyIG9wdGlvbnMgaW5jbHVkZWQgaW4gdGhlIEJhckNoYXJ0IGFyZSA8T3B0aW9ucy5DYW52YXM+LCA8T3B0aW9ucy5MYWJlbD4sIDxPcHRpb25zLk1hcmdpbj4sIDxPcHRpb25zLlRpcHM+IGFuZCA8T3B0aW9ucy5FdmVudHM+LgotICAKLSAgU3ludGF4OgotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0KLSAgT3B0aW9ucy5CYXJDaGFydCA9IHsKLSAgICBhbmltYXRlOiB0cnVlLAotICAgIGxhYmVsT2Zmc2V0OiAzLAotICAgIGJhcnNPZmZzZXQ6IDAsCi0gICAgdHlwZTogJ3N0YWNrZWQnLAotICAgIGhvdmVyZWRDb2xvcjogJyM5ZmQ0ZmYnLAotICAgIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcsCi0gICAgc2hvd0FnZ3JlZ2F0ZXM6IHRydWUsCi0gICAgc2hvd0xhYmVsczogdHJ1ZQotICB9OwotICAKLSAgKGVuZCBjb2RlKQotICAKLSAgRXhhbXBsZToKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotCi0gIHZhciBiYXJDaGFydCA9IG5ldyAkaml0LkJhckNoYXJ0KHsKLSAgICBhbmltYXRlOiB0cnVlLAotICAgIGJhcnNPZmZzZXQ6IDEwLAotICAgIHR5cGU6ICdzdGFja2VkOmdyYWRpZW50JwotICB9KTsKLSAgCi0gIChlbmQgY29kZSkKLQotICBQYXJhbWV0ZXJzOgotICAKLSAgYW5pbWF0ZSAtIChib29sZWFuKSBEZWZhdWx0J3MgKnRydWUqLiBXaGV0aGVyIHRvIGFkZCBhbmltYXRlZCB0cmFuc2l0aW9ucyB3aGVuIGZpbHRlcmluZy9yZXN0b3Jpbmcgc3RhY2tzLgotICBvZmZzZXQgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjI1Ki4gQWRkcyBtYXJnaW4gYmV0d2VlbiB0aGUgdmlzdWFsaXphdGlvbiBhbmQgdGhlIGNhbnZhcy4KLSAgbGFiZWxPZmZzZXQgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjMqLiBBZGRzIG1hcmdpbiBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgdGhlIGRlZmF1bHQgcGxhY2Ugd2hlcmUgaXQgc2hvdWxkIGJlIGRyYXduLgotICBiYXJzT2Zmc2V0IC0gKG51bWJlcikgRGVmYXVsdCdzICowKi4gU2VwYXJhdGlvbiBiZXR3ZWVuIGJhcnMuCi0gIHR5cGUgLSAoc3RyaW5nKSBEZWZhdWx0J3MgKidzdGFja2VkJyouIFN0YWNrIG9yIGdyb3VwZWQgc3R5bGVzLiBQb3NpYmxlIHZhbHVlcyBhcmUgJ3N0YWNrZWQnLCAnZ3JvdXBlZCcsICdzdGFja2VkOmdyYWRpZW50JywgJ2dyb3VwZWQ6Z3JhZGllbnQnIHRvIGFkZCBncmFkaWVudHMuCi0gIGhvdmVyZWRDb2xvciAtIChib29sZWFufHN0cmluZykgRGVmYXVsdCdzIConIzlmZDRmZicqLiBTZXRzIHRoZSBzZWxlY3RlZCBjb2xvciBmb3IgYSBob3ZlcmVkIGJhciBzdGFjay4KLSAgb3JpZW50YXRpb24gLSAoc3RyaW5nKSBEZWZhdWx0J3MgJ2hvcml6b250YWwnLiBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGJhcnMuIFBvc3NpYmxlIG9wdGlvbnMgYXJlICd2ZXJ0aWNhbCcgb3IgJ2hvcml6b250YWwnLgotICBzaG93QWdncmVnYXRlcyAtIChib29sZWFuLCBmdW5jdGlvbikgRGVmYXVsdCdzICp0cnVlKi4gRGlzcGxheSB0aGUgc3VtIHRoZSB2YWx1ZXMgb2YgZWFjaCBiYXIuIENhbiBhbHNvIGJlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zICp0cnVlKiBvciAqZmFsc2UqIHRvIGRpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBiYXIgb3Igbm90LiBUaGF0IHNhbWUgZnVuY3Rpb24gY2FuIGFsc28gcmV0dXJuIGEgc3RyaW5nIHdpdGggdGhlIGZvcm1hdHRlZCBkYXRhIHRvIGJlIGFkZGVkLgotICBzaG93TGFiZWxzIC0gKGJvb2xlYW4sIGZ1bmN0aW9uKSBEZWZhdWx0J3MgKnRydWUqLiBEaXNwbGF5IHRoZSBuYW1lIG9mIHRoZSBzbG90cy4gQ2FuIGFsc28gYmUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgKnRydWUqIG9yICpmYWxzZSogZm9yIGVhY2ggYmFyIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHNob3cgdGhlIGxhYmVsIG9yIG5vdC4KLSAgCi0qLwotCi1PcHRpb25zLkJhckNoYXJ0ID0gewotICAkZXh0ZW5kOiB0cnVlLAotICAKLSAgYW5pbWF0ZTogdHJ1ZSwKLSAgdHlwZTogJ3N0YWNrZWQnLCAvL3N0YWNrZWQsIGdyb3VwZWQsIDogZ3JhZGllbnQKLSAgbGFiZWxPZmZzZXQ6IDMsIC8vbGFiZWwgb2Zmc2V0Ci0gIGJhcnNPZmZzZXQ6IDAsIC8vZGlzdGFuY2UgYmV0d2VlbiBiYXJzCi0gIGhvdmVyZWRDb2xvcjogJyM5ZmQ0ZmYnLAotICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnLAotICBzaG93QWdncmVnYXRlczogdHJ1ZSwKLSAgc2hvd0xhYmVsczogdHJ1ZSwKLSAgVGlwczogewotICAgIGVuYWJsZTogZmFsc2UsCi0gICAgb25TaG93OiAkLmVtcHR5LAotICAgIG9uSGlkZTogJC5lbXB0eQotICB9LAotICBFdmVudHM6IHsKLSAgICBlbmFibGU6IGZhbHNlLAotICAgIG9uQ2xpY2s6ICQuZW1wdHkKLSAgfQotfTsKLQotLyoKLSAqIEZpbGU6IEJhckNoYXJ0LmpzCi0gKgotKi8KLQotJGppdC5TVC5QbG90Lk5vZGVUeXBlcy5pbXBsZW1lbnQoewotICAnYmFyY2hhcnQtc3RhY2tlZCcgOiB7Ci0gICAgJ3JlbmRlcicgOiBmdW5jdGlvbihub2RlLCBjYW52YXMpIHsKLSAgICAgIHZhciBwb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSwKLSAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICAgIGFsZ25Qb3MgPSB0aGlzLmdldEFsaWduZWRQb3MocG9zLCB3aWR0aCwgaGVpZ2h0KSwKLSAgICAgICAgICB4ID0gYWxnblBvcy54LCB5ID0gYWxnblBvcy55LAotICAgICAgICAgIGRpbUFycmF5ID0gbm9kZS5nZXREYXRhKCdkaW1BcnJheScpLAotICAgICAgICAgIHZhbHVlQXJyYXkgPSBub2RlLmdldERhdGEoJ3ZhbHVlQXJyYXknKSwKLSAgICAgICAgICBjb2xvckFycmF5ID0gbm9kZS5nZXREYXRhKCdjb2xvckFycmF5JyksCi0gICAgICAgICAgY29sb3JMZW5ndGggPSBjb2xvckFycmF5Lmxlbmd0aCwKLSAgICAgICAgICBzdHJpbmdBcnJheSA9IG5vZGUuZ2V0RGF0YSgnc3RyaW5nQXJyYXknKTsKLQotICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDdHgoKSwKLSAgICAgICAgICBvcHQgPSB7fSwKLSAgICAgICAgICBib3JkZXIgPSBub2RlLmdldERhdGEoJ2JvcmRlcicpLAotICAgICAgICAgIGdyYWRpZW50ID0gbm9kZS5nZXREYXRhKCdncmFkaWVudCcpLAotICAgICAgICAgIGNvbmZpZyA9IG5vZGUuZ2V0RGF0YSgnY29uZmlnJyksCi0gICAgICAgICAgaG9yeiA9IGNvbmZpZy5vcmllbnRhdGlvbiA9PSAnaG9yaXpvbnRhbCcsCi0gICAgICAgICAgYWdncmVnYXRlcyA9IGNvbmZpZy5zaG93QWdncmVnYXRlcywKLSAgICAgICAgICBzaG93TGFiZWxzID0gY29uZmlnLnNob3dMYWJlbHMsCi0gICAgICAgICAgbGFiZWwgPSBjb25maWcuTGFiZWw7Ci0gICAgICAKLSAgICAgIGlmIChjb2xvckFycmF5ICYmIGRpbUFycmF5ICYmIHN0cmluZ0FycmF5KSB7Ci0gICAgICAgIGZvciAodmFyIGk9MCwgbD1kaW1BcnJheS5sZW5ndGgsIGFjdW09MCwgdmFsQWN1bT0wOyBpPGw7IGkrKykgewotICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBjdHguc3Ryb2tlU3R5bGUgPSBjb2xvckFycmF5W2kgJSBjb2xvckxlbmd0aF07Ci0gICAgICAgICAgaWYoZ3JhZGllbnQpIHsKLSAgICAgICAgICAgIHZhciBsaW5lYXI7Ci0gICAgICAgICAgICBpZihob3J6KSB7Ci0gICAgICAgICAgICAgIGxpbmVhciA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCh4ICsgYWN1bSArIGRpbUFycmF5W2ldLzIsIHksIAotICAgICAgICAgICAgICAgICAgeCArIGFjdW0gKyBkaW1BcnJheVtpXS8yLCB5ICsgaGVpZ2h0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGxpbmVhciA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCh4LCB5IC0gYWN1bSAtIGRpbUFycmF5W2ldLzIsIAotICAgICAgICAgICAgICAgICAgeCArIHdpZHRoLCB5IC0gYWN1bS0gZGltQXJyYXlbaV0vMik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgY29sb3IgPSAkLnJnYlRvSGV4KCQubWFwKCQuaGV4VG9SZ2IoY29sb3JBcnJheVtpICUgY29sb3JMZW5ndGhdLnNsaWNlKDEpKSwgCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24odikgeyByZXR1cm4gKHYgKiAwLjUpID4+IDA7IH0pKTsKLSAgICAgICAgICAgIGxpbmVhci5hZGRDb2xvclN0b3AoMCwgY29sb3IpOwotICAgICAgICAgICAgbGluZWFyLmFkZENvbG9yU3RvcCgwLjUsIGNvbG9yQXJyYXlbaSAlIGNvbG9yTGVuZ3RoXSk7Ci0gICAgICAgICAgICBsaW5lYXIuYWRkQ29sb3JTdG9wKDEsIGNvbG9yKTsKLSAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBsaW5lYXI7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmKGhvcnopIHsKLSAgICAgICAgICAgIGN0eC5maWxsUmVjdCh4ICsgYWN1bSwgeSwgZGltQXJyYXlbaV0sIGhlaWdodCk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGN0eC5maWxsUmVjdCh4LCB5IC0gYWN1bSAtIGRpbUFycmF5W2ldLCB3aWR0aCwgZGltQXJyYXlbaV0pOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZihib3JkZXIgJiYgYm9yZGVyLm5hbWUgPT0gc3RyaW5nQXJyYXlbaV0pIHsKLSAgICAgICAgICAgIG9wdC5hY3VtID0gYWN1bTsKLSAgICAgICAgICAgIG9wdC5kaW1WYWx1ZSA9IGRpbUFycmF5W2ldOwotICAgICAgICAgIH0KLSAgICAgICAgICBhY3VtICs9IChkaW1BcnJheVtpXSB8fCAwKTsKLSAgICAgICAgICB2YWxBY3VtICs9ICh2YWx1ZUFycmF5W2ldIHx8IDApOwotICAgICAgICB9Ci0gICAgICAgIGlmKGJvcmRlcikgewotICAgICAgICAgIGN0eC5zYXZlKCk7Ci0gICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDI7Ci0gICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gYm9yZGVyLmNvbG9yOwotICAgICAgICAgIGlmKGhvcnopIHsKLSAgICAgICAgICAgIGN0eC5zdHJva2VSZWN0KHggKyBvcHQuYWN1bSArIDEsIHkgKyAxLCBvcHQuZGltVmFsdWUgLTIsIGhlaWdodCAtIDIpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjdHguc3Ryb2tlUmVjdCh4ICsgMSwgeSAtIG9wdC5hY3VtIC0gb3B0LmRpbVZhbHVlICsgMSwgd2lkdGggLTIsIG9wdC5kaW1WYWx1ZSAtMik7Ci0gICAgICAgICAgfQotICAgICAgICAgIGN0eC5yZXN0b3JlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYobGFiZWwudHlwZSA9PSAnTmF0aXZlJykgewotICAgICAgICAgIGN0eC5zYXZlKCk7Ci0gICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGN0eC5zdHJva2VTdHlsZSA9IGxhYmVsLmNvbG9yOwotICAgICAgICAgIGN0eC5mb250ID0gbGFiZWwuc3R5bGUgKyAnICcgKyBsYWJlbC5zaXplICsgJ3B4ICcgKyBsYWJlbC5mYW1pbHk7Ci0gICAgICAgICAgY3R4LnRleHRCYXNlbGluZSA9ICdtaWRkbGUnOwotICAgICAgICAgIHZhciBhZ2dWYWx1ZSA9IGFnZ3JlZ2F0ZXMobm9kZS5uYW1lLCB2YWxBY3VtLCBub2RlKTsKLSAgICAgICAgICBpZihhZ2dWYWx1ZSAhPT0gZmFsc2UpIHsKLSAgICAgICAgICAgIGFnZ1ZhbHVlID0gYWdnVmFsdWUgIT09IHRydWU/IGFnZ1ZhbHVlIDogdmFsQWN1bTsKLSAgICAgICAgICAgIGlmKGhvcnopIHsKLSAgICAgICAgICAgICAgY3R4LnRleHRBbGlnbiA9ICdyaWdodCc7Ci0gICAgICAgICAgICAgIGN0eC5maWxsVGV4dChhZ2dWYWx1ZSwgeCArIGFjdW0gLSBjb25maWcubGFiZWxPZmZzZXQsIHkgKyBoZWlnaHQvMik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7Ci0gICAgICAgICAgICAgIGN0eC5maWxsVGV4dChhZ2dWYWx1ZSwgeCArIHdpZHRoLzIsIHkgLSBoZWlnaHQgLSBsYWJlbC5zaXplLzIgLSBjb25maWcubGFiZWxPZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpZihzaG93TGFiZWxzKG5vZGUubmFtZSwgdmFsQWN1bSwgbm9kZSkpIHsKLSAgICAgICAgICAgIGlmKGhvcnopIHsKLSAgICAgICAgICAgICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInOwotICAgICAgICAgICAgICBjdHgudHJhbnNsYXRlKHggLSBjb25maWcubGFiZWxPZmZzZXQgLSBsYWJlbC5zaXplLzIsIHkgKyBoZWlnaHQvMik7Ci0gICAgICAgICAgICAgIGN0eC5yb3RhdGUoTWF0aC5QSSAvIDIpOwotICAgICAgICAgICAgICBjdHguZmlsbFRleHQobm9kZS5uYW1lLCAwLCAwKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJzsKLSAgICAgICAgICAgICAgY3R4LmZpbGxUZXh0KG5vZGUubmFtZSwgeCArIHdpZHRoLzIsIHkgKyBsYWJlbC5zaXplLzIgKyBjb25maWcubGFiZWxPZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBjdHgucmVzdG9yZSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwKLSAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBtcG9zKSB7Ci0gICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgd2lkdGggPSBub2RlLmdldERhdGEoJ3dpZHRoJyksCi0gICAgICAgICAgaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKSwKLSAgICAgICAgICBhbGduUG9zID0gdGhpcy5nZXRBbGlnbmVkUG9zKHBvcywgd2lkdGgsIGhlaWdodCksCi0gICAgICAgICAgeCA9IGFsZ25Qb3MueCwgeSA9IGFsZ25Qb3MueSwKLSAgICAgICAgICBkaW1BcnJheSA9IG5vZGUuZ2V0RGF0YSgnZGltQXJyYXknKSwKLSAgICAgICAgICBjb25maWcgPSBub2RlLmdldERhdGEoJ2NvbmZpZycpLAotICAgICAgICAgIHJ4ID0gbXBvcy54IC0geCwKLSAgICAgICAgICBob3J6ID0gY29uZmlnLm9yaWVudGF0aW9uID09ICdob3Jpem9udGFsJzsKLSAgICAgIC8vYm91bmRpbmcgYm94IGNoZWNrCi0gICAgICBpZihob3J6KSB7Ci0gICAgICAgIGlmKG1wb3MueCA8IHggfHwgbXBvcy54ID4geCArIHdpZHRoCi0gICAgICAgICAgICB8fCBtcG9zLnkgPiB5ICsgaGVpZ2h0IHx8IG1wb3MueSA8IHkpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBpZihtcG9zLnggPCB4IHx8IG1wb3MueCA+IHggKyB3aWR0aAotICAgICAgICAgICAgfHwgbXBvcy55ID4geSB8fCBtcG9zLnkgPCB5IC0gaGVpZ2h0KSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgfQotICAgICAgLy9kZWVwIGNoZWNrCi0gICAgICBmb3IodmFyIGk9MCwgbD1kaW1BcnJheS5sZW5ndGgsIGFjdW09KGhvcno/IHg6eSk7IGk8bDsgaSsrKSB7Ci0gICAgICAgIHZhciBkaW1pID0gZGltQXJyYXlbaV07Ci0gICAgICAgIGlmKGhvcnopIHsKLSAgICAgICAgICBhY3VtICs9IGRpbWk7Ci0gICAgICAgICAgdmFyIGludGVyc2VjID0gYWN1bTsKLSAgICAgICAgICBpZihtcG9zLnggPD0gaW50ZXJzZWMpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICduYW1lJzogbm9kZS5nZXREYXRhKCdzdHJpbmdBcnJheScpW2ldLAotICAgICAgICAgICAgICAnY29sb3InOiBub2RlLmdldERhdGEoJ2NvbG9yQXJyYXknKVtpXSwKLSAgICAgICAgICAgICAgJ3ZhbHVlJzogbm9kZS5nZXREYXRhKCd2YWx1ZUFycmF5JylbaV0sCi0gICAgICAgICAgICAgICdsYWJlbCc6IG5vZGUubmFtZQotICAgICAgICAgICAgfTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgYWN1bSAtPSBkaW1pOwotICAgICAgICAgIHZhciBpbnRlcnNlYyA9IGFjdW07Ci0gICAgICAgICAgaWYobXBvcy55ID49IGludGVyc2VjKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAnbmFtZSc6IG5vZGUuZ2V0RGF0YSgnc3RyaW5nQXJyYXknKVtpXSwKLSAgICAgICAgICAgICAgJ2NvbG9yJzogbm9kZS5nZXREYXRhKCdjb2xvckFycmF5JylbaV0sCi0gICAgICAgICAgICAgICd2YWx1ZSc6IG5vZGUuZ2V0RGF0YSgndmFsdWVBcnJheScpW2ldLAotICAgICAgICAgICAgICAnbGFiZWwnOiBub2RlLm5hbWUKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9LAotICAnYmFyY2hhcnQtZ3JvdXBlZCcgOiB7Ci0gICAgJ3JlbmRlcicgOiBmdW5jdGlvbihub2RlLCBjYW52YXMpIHsKLSAgICAgIHZhciBwb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSwKLSAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICAgIGFsZ25Qb3MgPSB0aGlzLmdldEFsaWduZWRQb3MocG9zLCB3aWR0aCwgaGVpZ2h0KSwKLSAgICAgICAgICB4ID0gYWxnblBvcy54LCB5ID0gYWxnblBvcy55LAotICAgICAgICAgIGRpbUFycmF5ID0gbm9kZS5nZXREYXRhKCdkaW1BcnJheScpLAotICAgICAgICAgIHZhbHVlQXJyYXkgPSBub2RlLmdldERhdGEoJ3ZhbHVlQXJyYXknKSwKLSAgICAgICAgICB2YWx1ZUxlbmd0aCA9IHZhbHVlQXJyYXkubGVuZ3RoLAotICAgICAgICAgIGNvbG9yQXJyYXkgPSBub2RlLmdldERhdGEoJ2NvbG9yQXJyYXknKSwKLSAgICAgICAgICBjb2xvckxlbmd0aCA9IGNvbG9yQXJyYXkubGVuZ3RoLAotICAgICAgICAgIHN0cmluZ0FycmF5ID0gbm9kZS5nZXREYXRhKCdzdHJpbmdBcnJheScpOyAKLQotICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDdHgoKSwKLSAgICAgICAgICBvcHQgPSB7fSwKLSAgICAgICAgICBib3JkZXIgPSBub2RlLmdldERhdGEoJ2JvcmRlcicpLAotICAgICAgICAgIGdyYWRpZW50ID0gbm9kZS5nZXREYXRhKCdncmFkaWVudCcpLAotICAgICAgICAgIGNvbmZpZyA9IG5vZGUuZ2V0RGF0YSgnY29uZmlnJyksCi0gICAgICAgICAgaG9yeiA9IGNvbmZpZy5vcmllbnRhdGlvbiA9PSAnaG9yaXpvbnRhbCcsCi0gICAgICAgICAgYWdncmVnYXRlcyA9IGNvbmZpZy5zaG93QWdncmVnYXRlcywKLSAgICAgICAgICBzaG93TGFiZWxzID0gY29uZmlnLnNob3dMYWJlbHMsCi0gICAgICAgICAgbGFiZWwgPSBjb25maWcuTGFiZWwsCi0gICAgICAgICAgZml4ZWREaW0gPSAoaG9yej8gaGVpZ2h0IDogd2lkdGgpIC8gdmFsdWVMZW5ndGg7Ci0gICAgICAKLSAgICAgIGlmIChjb2xvckFycmF5ICYmIGRpbUFycmF5ICYmIHN0cmluZ0FycmF5KSB7Ci0gICAgICAgIGZvciAodmFyIGk9MCwgbD12YWx1ZUxlbmd0aCwgYWN1bT0wLCB2YWxBY3VtPTA7IGk8bDsgaSsrKSB7Ci0gICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yQXJyYXlbaSAlIGNvbG9yTGVuZ3RoXTsKLSAgICAgICAgICBpZihncmFkaWVudCkgewotICAgICAgICAgICAgdmFyIGxpbmVhcjsKLSAgICAgICAgICAgIGlmKGhvcnopIHsKLSAgICAgICAgICAgICAgbGluZWFyID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KHggKyBkaW1BcnJheVtpXS8yLCB5ICsgZml4ZWREaW0gKiBpLCAKLSAgICAgICAgICAgICAgICAgIHggKyBkaW1BcnJheVtpXS8yLCB5ICsgZml4ZWREaW0gKiAoaSArIDEpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGxpbmVhciA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCh4ICsgZml4ZWREaW0gKiBpLCB5IC0gZGltQXJyYXlbaV0vMiwgCi0gICAgICAgICAgICAgICAgICB4ICsgZml4ZWREaW0gKiAoaSArIDEpLCB5IC0gZGltQXJyYXlbaV0vMik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgY29sb3IgPSAkLnJnYlRvSGV4KCQubWFwKCQuaGV4VG9SZ2IoY29sb3JBcnJheVtpICUgY29sb3JMZW5ndGhdLnNsaWNlKDEpKSwgCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24odikgeyByZXR1cm4gKHYgKiAwLjUpID4+IDA7IH0pKTsKLSAgICAgICAgICAgIGxpbmVhci5hZGRDb2xvclN0b3AoMCwgY29sb3IpOwotICAgICAgICAgICAgbGluZWFyLmFkZENvbG9yU3RvcCgwLjUsIGNvbG9yQXJyYXlbaSAlIGNvbG9yTGVuZ3RoXSk7Ci0gICAgICAgICAgICBsaW5lYXIuYWRkQ29sb3JTdG9wKDEsIGNvbG9yKTsKLSAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBsaW5lYXI7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmKGhvcnopIHsKLSAgICAgICAgICAgIGN0eC5maWxsUmVjdCh4LCB5ICsgZml4ZWREaW0gKiBpLCBkaW1BcnJheVtpXSwgZml4ZWREaW0pOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjdHguZmlsbFJlY3QoeCArIGZpeGVkRGltICogaSwgeSAtIGRpbUFycmF5W2ldLCBmaXhlZERpbSwgZGltQXJyYXlbaV0pOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZihib3JkZXIgJiYgYm9yZGVyLm5hbWUgPT0gc3RyaW5nQXJyYXlbaV0pIHsKLSAgICAgICAgICAgIG9wdC5hY3VtID0gZml4ZWREaW0gKiBpOwotICAgICAgICAgICAgb3B0LmRpbVZhbHVlID0gZGltQXJyYXlbaV07Ci0gICAgICAgICAgfQotICAgICAgICAgIGFjdW0gKz0gKGRpbUFycmF5W2ldIHx8IDApOwotICAgICAgICAgIHZhbEFjdW0gKz0gKHZhbHVlQXJyYXlbaV0gfHwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYoYm9yZGVyKSB7Ci0gICAgICAgICAgY3R4LnNhdmUoKTsKLSAgICAgICAgICBjdHgubGluZVdpZHRoID0gMjsKLSAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBib3JkZXIuY29sb3I7Ci0gICAgICAgICAgaWYoaG9yeikgewotICAgICAgICAgICAgY3R4LnN0cm9rZVJlY3QoeCArIDEsIHkgKyBvcHQuYWN1bSArIDEsIG9wdC5kaW1WYWx1ZSAtMiwgZml4ZWREaW0gLSAyKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY3R4LnN0cm9rZVJlY3QoeCArIG9wdC5hY3VtICsgMSwgeSAtIG9wdC5kaW1WYWx1ZSArIDEsIGZpeGVkRGltIC0yLCBvcHQuZGltVmFsdWUgLTIpOwotICAgICAgICAgIH0KLSAgICAgICAgICBjdHgucmVzdG9yZSgpOwotICAgICAgICB9Ci0gICAgICAgIGlmKGxhYmVsLnR5cGUgPT0gJ05hdGl2ZScpIHsKLSAgICAgICAgICBjdHguc2F2ZSgpOwotICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBjdHguc3Ryb2tlU3R5bGUgPSBsYWJlbC5jb2xvcjsKLSAgICAgICAgICBjdHguZm9udCA9IGxhYmVsLnN0eWxlICsgJyAnICsgbGFiZWwuc2l6ZSArICdweCAnICsgbGFiZWwuZmFtaWx5OwotICAgICAgICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJzsKLSAgICAgICAgICB2YXIgYWdnVmFsdWUgPSBhZ2dyZWdhdGVzKG5vZGUubmFtZSwgdmFsQWN1bSwgbm9kZSk7Ci0gICAgICAgICAgaWYoYWdnVmFsdWUgIT09IGZhbHNlKSB7Ci0gICAgICAgICAgICBhZ2dWYWx1ZSA9IGFnZ1ZhbHVlICE9PSB0cnVlPyBhZ2dWYWx1ZSA6IHZhbEFjdW07Ci0gICAgICAgICAgICBpZihob3J6KSB7Ci0gICAgICAgICAgICAgIGN0eC50ZXh0QWxpZ24gPSAncmlnaHQnOwotICAgICAgICAgICAgICBjdHguZmlsbFRleHQoYWdnVmFsdWUsIHggKyBNYXRoLm1heC5hcHBseShudWxsLCBkaW1BcnJheSkgLSBjb25maWcubGFiZWxPZmZzZXQsIHkgKyBoZWlnaHQvMik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7Ci0gICAgICAgICAgICAgIGN0eC5maWxsVGV4dChhZ2dWYWx1ZSwgeCArIHdpZHRoLzIsIHkgLSBNYXRoLm1heC5hcHBseShudWxsLCBkaW1BcnJheSkgLSBsYWJlbC5zaXplLzIgLSBjb25maWcubGFiZWxPZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpZihzaG93TGFiZWxzKG5vZGUubmFtZSwgdmFsQWN1bSwgbm9kZSkpIHsKLSAgICAgICAgICAgIGlmKGhvcnopIHsKLSAgICAgICAgICAgICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInOwotICAgICAgICAgICAgICBjdHgudHJhbnNsYXRlKHggLSBjb25maWcubGFiZWxPZmZzZXQgLSBsYWJlbC5zaXplLzIsIHkgKyBoZWlnaHQvMik7Ci0gICAgICAgICAgICAgIGN0eC5yb3RhdGUoTWF0aC5QSSAvIDIpOwotICAgICAgICAgICAgICBjdHguZmlsbFRleHQobm9kZS5uYW1lLCAwLCAwKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJzsKLSAgICAgICAgICAgICAgY3R4LmZpbGxUZXh0KG5vZGUubmFtZSwgeCArIHdpZHRoLzIsIHkgKyBsYWJlbC5zaXplLzIgKyBjb25maWcubGFiZWxPZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBjdHgucmVzdG9yZSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwKLSAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBtcG9zKSB7Ci0gICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgd2lkdGggPSBub2RlLmdldERhdGEoJ3dpZHRoJyksCi0gICAgICAgICAgaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKSwKLSAgICAgICAgICBhbGduUG9zID0gdGhpcy5nZXRBbGlnbmVkUG9zKHBvcywgd2lkdGgsIGhlaWdodCksCi0gICAgICAgICAgeCA9IGFsZ25Qb3MueCwgeSA9IGFsZ25Qb3MueSwKLSAgICAgICAgICBkaW1BcnJheSA9IG5vZGUuZ2V0RGF0YSgnZGltQXJyYXknKSwKLSAgICAgICAgICBsZW4gPSBkaW1BcnJheS5sZW5ndGgsCi0gICAgICAgICAgY29uZmlnID0gbm9kZS5nZXREYXRhKCdjb25maWcnKSwKLSAgICAgICAgICByeCA9IG1wb3MueCAtIHgsCi0gICAgICAgICAgaG9yeiA9IGNvbmZpZy5vcmllbnRhdGlvbiA9PSAnaG9yaXpvbnRhbCcsCi0gICAgICAgICAgZml4ZWREaW0gPSAoaG9yej8gaGVpZ2h0IDogd2lkdGgpIC8gbGVuOwotICAgICAgLy9ib3VuZGluZyBib3ggY2hlY2sKLSAgICAgIGlmKGhvcnopIHsKLSAgICAgICAgaWYobXBvcy54IDwgeCB8fCBtcG9zLnggPiB4ICsgd2lkdGgKLSAgICAgICAgICAgIHx8IG1wb3MueSA+IHkgKyBoZWlnaHQgfHwgbXBvcy55IDwgeSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmKG1wb3MueCA8IHggfHwgbXBvcy54ID4geCArIHdpZHRoCi0gICAgICAgICAgICB8fCBtcG9zLnkgPiB5IHx8IG1wb3MueSA8IHkgLSBoZWlnaHQpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvL2RlZXAgY2hlY2sKLSAgICAgIGZvcih2YXIgaT0wLCBsPWRpbUFycmF5Lmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgdmFyIGRpbWkgPSBkaW1BcnJheVtpXTsKLSAgICAgICAgaWYoaG9yeikgewotICAgICAgICAgIHZhciBsaW1pdCA9IHkgKyBmaXhlZERpbSAqIGk7Ci0gICAgICAgICAgaWYobXBvcy54IDw9IHgrIGRpbWkgJiYgbXBvcy55ID49IGxpbWl0ICYmIG1wb3MueSA8PSBsaW1pdCArIGZpeGVkRGltKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAnbmFtZSc6IG5vZGUuZ2V0RGF0YSgnc3RyaW5nQXJyYXknKVtpXSwKLSAgICAgICAgICAgICAgJ2NvbG9yJzogbm9kZS5nZXREYXRhKCdjb2xvckFycmF5JylbaV0sCi0gICAgICAgICAgICAgICd2YWx1ZSc6IG5vZGUuZ2V0RGF0YSgndmFsdWVBcnJheScpW2ldLAotICAgICAgICAgICAgICAnbGFiZWwnOiBub2RlLm5hbWUKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHZhciBsaW1pdCA9IHggKyBmaXhlZERpbSAqIGk7Ci0gICAgICAgICAgaWYobXBvcy54ID49IGxpbWl0ICYmIG1wb3MueCA8PSBsaW1pdCArIGZpeGVkRGltICYmIG1wb3MueSA+PSB5IC0gZGltaSkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgJ25hbWUnOiBub2RlLmdldERhdGEoJ3N0cmluZ0FycmF5JylbaV0sCi0gICAgICAgICAgICAgICdjb2xvcic6IG5vZGUuZ2V0RGF0YSgnY29sb3JBcnJheScpW2ldLAotICAgICAgICAgICAgICAndmFsdWUnOiBub2RlLmdldERhdGEoJ3ZhbHVlQXJyYXknKVtpXSwKLSAgICAgICAgICAgICAgJ2xhYmVsJzogbm9kZS5uYW1lCi0gICAgICAgICAgICB9OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotfSk7Ci0KLS8qCi0gIENsYXNzOiBCYXJDaGFydAotICAKLSAgQSB2aXN1YWxpemF0aW9uIHRoYXQgZGlzcGxheXMgc3RhY2tlZCBiYXIgY2hhcnRzLgotICAKLSAgQ29uc3RydWN0b3IgT3B0aW9uczoKLSAgCi0gIFNlZSA8T3B0aW9ucy5CYXJDaGFydD4uCi0KLSovCi0kaml0LkJhckNoYXJ0ID0gbmV3IENsYXNzKHsKLSAgc3Q6IG51bGwsCi0gIGNvbG9yczogWyIjNDE2RDlDIiwgIiM3MEEzNUUiLCAiI0VCQjA1NiIsICIjQzc0MjQzIiwgIiM4MzU0OEIiLCAiIzkwOTI5MSIsICIjNTU3RUFBIl0sCi0gIHNlbGVjdGVkOiB7fSwKLSAgYnVzeTogZmFsc2UsCi0gIAotICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHQpIHsKLSAgICB0aGlzLmNvbnRyb2xsZXIgPSB0aGlzLmNvbmZpZyA9IAotICAgICAgJC5tZXJnZShPcHRpb25zKCJDYW52YXMiLCAiTWFyZ2luIiwgIkxhYmVsIiwgIkJhckNoYXJ0IiksIHsKLSAgICAgICAgTGFiZWw6IHsgdHlwZTogJ05hdGl2ZScgfQotICAgICAgfSwgb3B0KTsKLSAgICAvL3NldCBmdW5jdGlvbnMgZm9yIHNob3dMYWJlbHMgYW5kIHNob3dBZ2dyZWdhdGVzCi0gICAgdmFyIHNob3dMYWJlbHMgPSB0aGlzLmNvbmZpZy5zaG93TGFiZWxzLAotICAgICAgICB0eXBlTGFiZWxzID0gJC50eXBlKHNob3dMYWJlbHMpLAotICAgICAgICBzaG93QWdncmVnYXRlcyA9IHRoaXMuY29uZmlnLnNob3dBZ2dyZWdhdGVzLAotICAgICAgICB0eXBlQWdncmVnYXRlcyA9ICQudHlwZShzaG93QWdncmVnYXRlcyk7Ci0gICAgdGhpcy5jb25maWcuc2hvd0xhYmVscyA9IHR5cGVMYWJlbHMgPT0gJ2Z1bmN0aW9uJz8gc2hvd0xhYmVscyA6ICQubGFtYmRhKHNob3dMYWJlbHMpOwotICAgIHRoaXMuY29uZmlnLnNob3dBZ2dyZWdhdGVzID0gdHlwZUFnZ3JlZ2F0ZXMgPT0gJ2Z1bmN0aW9uJz8gc2hvd0FnZ3JlZ2F0ZXMgOiAkLmxhbWJkYShzaG93QWdncmVnYXRlcyk7Ci0gICAgCi0gICAgdGhpcy5pbml0aWFsaXplVml6KCk7Ci0gIH0sCi0gIAotICBpbml0aWFsaXplVml6OiBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29uZmlnID0gdGhpcy5jb25maWcsIHRoYXQgPSB0aGlzOwotICAgIHZhciBub2RlVHlwZSA9IGNvbmZpZy50eXBlLnNwbGl0KCI6IilbMF0sCi0gICAgICAgIGhvcnogPSBjb25maWcub3JpZW50YXRpb24gPT0gJ2hvcml6b250YWwnLAotICAgICAgICBub2RlTGFiZWxzID0ge307Ci0gICAgCi0gICAgdmFyIGRlbGVnYXRlID0gbmV3ICRqaXQuU1QoewotICAgICAgaW5qZWN0SW50bzogY29uZmlnLmluamVjdEludG8sCi0gICAgICB3aWR0aDogY29uZmlnLndpZHRoLAotICAgICAgaGVpZ2h0OiBjb25maWcuaGVpZ2h0LAotICAgICAgb3JpZW50YXRpb246IGhvcno/ICdsZWZ0JyA6ICdib3R0b20nLAotICAgICAgbGV2ZWxEaXN0YW5jZTogMCwKLSAgICAgIHNpYmxpbmdPZmZzZXQ6IGNvbmZpZy5iYXJzT2Zmc2V0LAotICAgICAgc3VidHJlZU9mZnNldDogMCwKLSAgICAgIHdpdGhMYWJlbHM6IGNvbmZpZy5MYWJlbC50eXBlICE9ICdOYXRpdmUnLCAgICAgIAotICAgICAgdXNlQ2FudmFzOiBjb25maWcudXNlQ2FudmFzLAotICAgICAgTGFiZWw6IHsKLSAgICAgICAgdHlwZTogY29uZmlnLkxhYmVsLnR5cGUKLSAgICAgIH0sCi0gICAgICBOb2RlOiB7Ci0gICAgICAgIG92ZXJyaWRhYmxlOiB0cnVlLAotICAgICAgICB0eXBlOiAnYmFyY2hhcnQtJyArIG5vZGVUeXBlLAotICAgICAgICBhbGlnbjogJ2xlZnQnLAotICAgICAgICB3aWR0aDogMSwKLSAgICAgICAgaGVpZ2h0OiAxCi0gICAgICB9LAotICAgICAgRWRnZTogewotICAgICAgICB0eXBlOiAnbm9uZScKLSAgICAgIH0sCi0gICAgICBUaXBzOiB7Ci0gICAgICAgIGVuYWJsZTogY29uZmlnLlRpcHMuZW5hYmxlLAotICAgICAgICB0eXBlOiAnTmF0aXZlJywKLSAgICAgICAgZm9yY2U6IHRydWUsCi0gICAgICAgIG9uU2hvdzogZnVuY3Rpb24odGlwLCBub2RlLCBjb250YWlucykgewotICAgICAgICAgIHZhciBlbGVtID0gY29udGFpbnM7Ci0gICAgICAgICAgY29uZmlnLlRpcHMub25TaG93KHRpcCwgZWxlbSwgbm9kZSk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0gICAgICBFdmVudHM6IHsKLSAgICAgICAgZW5hYmxlOiB0cnVlLAotICAgICAgICB0eXBlOiAnTmF0aXZlJywKLSAgICAgICAgb25DbGljazogZnVuY3Rpb24obm9kZSwgZXZlbnRJbmZvLCBldnQpIHsKLSAgICAgICAgICBpZighY29uZmlnLkV2ZW50cy5lbmFibGUpIHJldHVybjsKLSAgICAgICAgICB2YXIgZWxlbSA9IGV2ZW50SW5mby5nZXRDb250YWlucygpOwotICAgICAgICAgIGNvbmZpZy5FdmVudHMub25DbGljayhlbGVtLCBldmVudEluZm8sIGV2dCk7Ci0gICAgICAgIH0sCi0gICAgICAgIG9uTW91c2VNb3ZlOiBmdW5jdGlvbihub2RlLCBldmVudEluZm8sIGV2dCkgewotICAgICAgICAgIGlmKCFjb25maWcuaG92ZXJlZENvbG9yKSByZXR1cm47Ci0gICAgICAgICAgaWYobm9kZSkgewotICAgICAgICAgICAgdmFyIGVsZW0gPSBldmVudEluZm8uZ2V0Q29udGFpbnMoKTsKLSAgICAgICAgICAgIHRoYXQuc2VsZWN0KG5vZGUuaWQsIGVsZW0ubmFtZSwgZWxlbS5pbmRleCk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoYXQuc2VsZWN0KGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIG9uQ3JlYXRlTGFiZWw6IGZ1bmN0aW9uKGRvbUVsZW1lbnQsIG5vZGUpIHsKLSAgICAgICAgdmFyIGxhYmVsQ29uZiA9IGNvbmZpZy5MYWJlbCwKLSAgICAgICAgICAgIHZhbHVlQXJyYXkgPSBub2RlLmdldERhdGEoJ3ZhbHVlQXJyYXknKSwKLSAgICAgICAgICAgIGFjdW0gPSAkLnJlZHVjZSh2YWx1ZUFycmF5LCBmdW5jdGlvbih4LCB5KSB7IHJldHVybiB4ICsgeTsgfSwgMCk7Ci0gICAgICAgIHZhciBubGJzID0gewotICAgICAgICAgIHdyYXBwZXI6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLAotICAgICAgICAgIGFnZ3JlZ2F0ZTogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCi0gICAgICAgICAgbGFiZWw6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpCi0gICAgICAgIH07Ci0gICAgICAgIHZhciB3cmFwcGVyID0gbmxicy53cmFwcGVyLAotICAgICAgICAgICAgbGFiZWwgPSBubGJzLmxhYmVsLAotICAgICAgICAgICAgYWdncmVnYXRlID0gbmxicy5hZ2dyZWdhdGUsCi0gICAgICAgICAgICB3cmFwcGVyU3R5bGUgPSB3cmFwcGVyLnN0eWxlLAotICAgICAgICAgICAgbGFiZWxTdHlsZSA9IGxhYmVsLnN0eWxlLAotICAgICAgICAgICAgYWdncmVnYXRlU3R5bGUgPSBhZ2dyZWdhdGUuc3R5bGU7Ci0gICAgICAgIC8vc3RvcmUgbm9kZSBsYWJlbHMKLSAgICAgICAgbm9kZUxhYmVsc1tub2RlLmlkXSA9IG5sYnM7Ci0gICAgICAgIC8vYXBwZW5kIGxhYmVscwotICAgICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKGxhYmVsKTsKLSAgICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZChhZ2dyZWdhdGUpOwotICAgICAgICBpZighY29uZmlnLnNob3dMYWJlbHMobm9kZS5uYW1lLCBhY3VtLCBub2RlKSkgewotICAgICAgICAgIGxhYmVsU3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgICAgfQotICAgICAgICBpZighY29uZmlnLnNob3dBZ2dyZWdhdGVzKG5vZGUubmFtZSwgYWN1bSwgbm9kZSkpIHsKLSAgICAgICAgICBhZ2dyZWdhdGVTdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAgICB9Ci0gICAgICAgIHdyYXBwZXJTdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7Ci0gICAgICAgIHdyYXBwZXJTdHlsZS5vdmVyZmxvdyA9ICd2aXNpYmxlJzsKLSAgICAgICAgd3JhcHBlclN0eWxlLmZvbnRTaXplID0gbGFiZWxDb25mLnNpemUgKyAncHgnOwotICAgICAgICB3cmFwcGVyU3R5bGUuZm9udEZhbWlseSA9IGxhYmVsQ29uZi5mYW1pbHk7Ci0gICAgICAgIHdyYXBwZXJTdHlsZS5jb2xvciA9IGxhYmVsQ29uZi5jb2xvcjsKLSAgICAgICAgd3JhcHBlclN0eWxlLnRleHRBbGlnbiA9ICdjZW50ZXInOwotICAgICAgICBhZ2dyZWdhdGVTdHlsZS5wb3NpdGlvbiA9IGxhYmVsU3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwotICAgICAgICAKLSAgICAgICAgZG9tRWxlbWVudC5zdHlsZS53aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSArICdweCc7Ci0gICAgICAgIGRvbUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKSArICdweCc7Ci0gICAgICAgIGFnZ3JlZ2F0ZVN0eWxlLmxlZnQgPSBsYWJlbFN0eWxlLmxlZnQgPSAgJzBweCc7Ci0KLSAgICAgICAgbGFiZWwuaW5uZXJIVE1MID0gbm9kZS5uYW1lOwotICAgICAgICAKLSAgICAgICAgZG9tRWxlbWVudC5hcHBlbmRDaGlsZCh3cmFwcGVyKTsKLSAgICAgIH0sCi0gICAgICBvblBsYWNlTGFiZWw6IGZ1bmN0aW9uKGRvbUVsZW1lbnQsIG5vZGUpIHsKLSAgICAgICAgaWYoIW5vZGVMYWJlbHNbbm9kZS5pZF0pIHJldHVybjsKLSAgICAgICAgdmFyIGxhYmVscyA9IG5vZGVMYWJlbHNbbm9kZS5pZF0sCi0gICAgICAgICAgICB3cmFwcGVyU3R5bGUgPSBsYWJlbHMud3JhcHBlci5zdHlsZSwKLSAgICAgICAgICAgIGxhYmVsU3R5bGUgPSBsYWJlbHMubGFiZWwuc3R5bGUsCi0gICAgICAgICAgICBhZ2dyZWdhdGVTdHlsZSA9IGxhYmVscy5hZ2dyZWdhdGUuc3R5bGUsCi0gICAgICAgICAgICBncm91cGVkID0gY29uZmlnLnR5cGUuc3BsaXQoJzonKVswXSA9PSAnZ3JvdXBlZCcsCi0gICAgICAgICAgICBob3J6ID0gY29uZmlnLm9yaWVudGF0aW9uID09ICdob3Jpem9udGFsJywKLSAgICAgICAgICAgIGRpbUFycmF5ID0gbm9kZS5nZXREYXRhKCdkaW1BcnJheScpLAotICAgICAgICAgICAgdmFsQXJyYXkgPSBub2RlLmdldERhdGEoJ3ZhbHVlQXJyYXknKSwKLSAgICAgICAgICAgIHdpZHRoID0gKGdyb3VwZWQgJiYgaG9yeik/IE1hdGgubWF4LmFwcGx5KG51bGwsIGRpbUFycmF5KSA6IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSwKLSAgICAgICAgICAgIGhlaWdodCA9IChncm91cGVkICYmICFob3J6KT8gTWF0aC5tYXguYXBwbHkobnVsbCwgZGltQXJyYXkpIDogbm9kZS5nZXREYXRhKCdoZWlnaHQnKSwKLSAgICAgICAgICAgIGZvbnQgPSBwYXJzZUludCh3cmFwcGVyU3R5bGUuZm9udFNpemUsIDEwKSwKLSAgICAgICAgICAgIGRvbVN0eWxlID0gZG9tRWxlbWVudC5zdHlsZTsKLSAgICAgICAgICAgIAotICAgICAgICAKLSAgICAgICAgaWYoZGltQXJyYXkgJiYgdmFsQXJyYXkpIHsKLSAgICAgICAgICB3cmFwcGVyU3R5bGUud2lkdGggPSBhZ2dyZWdhdGVTdHlsZS53aWR0aCA9IGxhYmVsU3R5bGUud2lkdGggPSBkb21FbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnOwotICAgICAgICAgIGZvcih2YXIgaT0wLCBsPXZhbEFycmF5Lmxlbmd0aCwgYWN1bT0wOyBpPGw7IGkrKykgewotICAgICAgICAgICAgaWYoZGltQXJyYXlbaV0gPiAwKSB7Ci0gICAgICAgICAgICAgIGFjdW0rPSB2YWxBcnJheVtpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYoY29uZmlnLnNob3dMYWJlbHMobm9kZS5uYW1lLCBhY3VtLCBub2RlKSkgewotICAgICAgICAgICAgbGFiZWxTdHlsZS5kaXNwbGF5ID0gJyc7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxhYmVsU3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgdmFyIGFnZ1ZhbHVlID0gY29uZmlnLnNob3dBZ2dyZWdhdGVzKG5vZGUubmFtZSwgYWN1bSwgbm9kZSk7Ci0gICAgICAgICAgaWYoYWdnVmFsdWUgIT09IGZhbHNlKSB7Ci0gICAgICAgICAgICBhZ2dyZWdhdGVTdHlsZS5kaXNwbGF5ID0gJyc7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFnZ3JlZ2F0ZVN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmKGNvbmZpZy5vcmllbnRhdGlvbiA9PSAnaG9yaXpvbnRhbCcpIHsKLSAgICAgICAgICAgIGFnZ3JlZ2F0ZVN0eWxlLnRleHRBbGlnbiA9ICdyaWdodCc7Ci0gICAgICAgICAgICBsYWJlbFN0eWxlLnRleHRBbGlnbiA9ICdsZWZ0JzsKLSAgICAgICAgICAgIGxhYmVsU3R5bGUudGV4dEluZGV4ID0gYWdncmVnYXRlU3R5bGUudGV4dEluZGVudCA9IGNvbmZpZy5sYWJlbE9mZnNldCArICdweCc7Ci0gICAgICAgICAgICBhZ2dyZWdhdGVTdHlsZS50b3AgPSBsYWJlbFN0eWxlLnRvcCA9IChoZWlnaHQtZm9udCkvMiArICdweCc7Ci0gICAgICAgICAgICBkb21FbGVtZW50LnN0eWxlLmhlaWdodCA9IHdyYXBwZXJTdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhZ2dyZWdhdGVTdHlsZS50b3AgPSAoLWZvbnQgLSBjb25maWcubGFiZWxPZmZzZXQpICsgJ3B4JzsKLSAgICAgICAgICAgIGxhYmVsU3R5bGUudG9wID0gKGNvbmZpZy5sYWJlbE9mZnNldCArIGhlaWdodCkgKyAncHgnOwotICAgICAgICAgICAgZG9tRWxlbWVudC5zdHlsZS50b3AgPSBwYXJzZUludChkb21FbGVtZW50LnN0eWxlLnRvcCwgMTApIC0gaGVpZ2h0ICsgJ3B4JzsKLSAgICAgICAgICAgIGRvbUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gd3JhcHBlclN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7Ci0gICAgICAgICAgfQotICAgICAgICAgIGxhYmVscy5hZ2dyZWdhdGUuaW5uZXJIVE1MID0gYWdnVmFsdWUgIT09IHRydWU/IGFnZ1ZhbHVlIDogYWN1bTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotICAgIAotICAgIHZhciBzaXplID0gZGVsZWdhdGUuY2FudmFzLmdldFNpemUoKSwKLSAgICAgICAgbWFyZ2luID0gY29uZmlnLk1hcmdpbjsKLSAgICBpZihob3J6KSB7Ci0gICAgICBkZWxlZ2F0ZS5jb25maWcub2Zmc2V0WCA9IHNpemUud2lkdGgvMiAtIG1hcmdpbi5sZWZ0Ci0gICAgICAgIC0gKGNvbmZpZy5zaG93TGFiZWxzICYmIChjb25maWcubGFiZWxPZmZzZXQgKyBjb25maWcuTGFiZWwuc2l6ZSkpOyAgICAKLSAgICAgIGRlbGVnYXRlLmNvbmZpZy5vZmZzZXRZID0gKG1hcmdpbi5ib3R0b20gLSBtYXJnaW4udG9wKS8yOwotICAgIH0gZWxzZSB7Ci0gICAgICBkZWxlZ2F0ZS5jb25maWcub2Zmc2V0WSA9IC1zaXplLmhlaWdodC8yICsgbWFyZ2luLmJvdHRvbSAKLSAgICAgICAgKyAoY29uZmlnLnNob3dMYWJlbHMgJiYgKGNvbmZpZy5sYWJlbE9mZnNldCArIGNvbmZpZy5MYWJlbC5zaXplKSk7Ci0gICAgICBkZWxlZ2F0ZS5jb25maWcub2Zmc2V0WCA9IChtYXJnaW4ucmlnaHQgLSBtYXJnaW4ubGVmdCkvMjsKLSAgICB9Ci0gICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIHRoaXMuY2FudmFzID0gdGhpcy5kZWxlZ2F0ZS5jYW52YXM7Ci0gIH0sCi0gIAotICAvKgotICAgIE1ldGhvZDogbG9hZEpTT04KLSAgIAotICAgIExvYWRzIEpTT04gZGF0YSBpbnRvIHRoZSB2aXN1YWxpemF0aW9uLiAKLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIGpzb24gLSBUaGUgSlNPTiBkYXRhIGZvcm1hdC4gVGhpcyBmb3JtYXQgaXMgZGVzY3JpYmVkIGluIDxodHRwOi8vYmxvZy50aGVqaXQub3JnLzIwMTAvMDQvMjQvbmV3LWphdmFzY3JpcHQtaW5mb3Zpcy10b29sa2l0LXZpc3VhbGl6YXRpb25zLyNqc29uLWRhdGEtZm9ybWF0Pi4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIChzdGFydCBjb2RlIGpzKQotICAgIHZhciBiYXJDaGFydCA9IG5ldyAkaml0LkJhckNoYXJ0KG9wdGlvbnMpOwotICAgIGJhckNoYXJ0LmxvYWRKU09OKGpzb24pOwotICAgIChlbmQgY29kZSkKLSAqLyAgCi0gIGxvYWRKU09OOiBmdW5jdGlvbihqc29uKSB7Ci0gICAgaWYodGhpcy5idXN5KSByZXR1cm47Ci0gICAgdGhpcy5idXN5ID0gdHJ1ZTsKLSAgICAKLSAgICB2YXIgcHJlZml4ID0gJC50aW1lKCksIAotICAgICAgICBjaCA9IFtdLCAKLSAgICAgICAgZGVsZWdhdGUgPSB0aGlzLmRlbGVnYXRlLAotICAgICAgICBuYW1lID0gJC5zcGxhdChqc29uLmxhYmVsKSwgCi0gICAgICAgIGNvbG9yID0gJC5zcGxhdChqc29uLmNvbG9yIHx8IHRoaXMuY29sb3JzKSwKLSAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWcsCi0gICAgICAgIGdyYWRpZW50ID0gISFjb25maWcudHlwZS5zcGxpdCgiOiIpWzFdLAotICAgICAgICBhbmltYXRlID0gY29uZmlnLmFuaW1hdGUsCi0gICAgICAgIGhvcnogPSBjb25maWcub3JpZW50YXRpb24gPT0gJ2hvcml6b250YWwnLAotICAgICAgICB0aGF0ID0gdGhpczsKLSAgICAKLSAgICBmb3IodmFyIGk9MCwgdmFsdWVzPWpzb24udmFsdWVzLCBsPXZhbHVlcy5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgICB2YXIgdmFsID0gdmFsdWVzW2ldCi0gICAgICB2YXIgdmFsQXJyYXkgPSAkLnNwbGF0KHZhbHVlc1tpXS52YWx1ZXMpOwotICAgICAgdmFyIGFjdW0gPSAwOwotICAgICAgY2gucHVzaCh7Ci0gICAgICAgICdpZCc6IHByZWZpeCArIHZhbC5sYWJlbCwKLSAgICAgICAgJ25hbWUnOiB2YWwubGFiZWwsCi0gICAgICAgICdkYXRhJzogewotICAgICAgICAgICd2YWx1ZSc6IHZhbEFycmF5LAotICAgICAgICAgICckdmFsdWVBcnJheSc6IHZhbEFycmF5LAotICAgICAgICAgICckY29sb3JBcnJheSc6IGNvbG9yLAotICAgICAgICAgICckc3RyaW5nQXJyYXknOiBuYW1lLAotICAgICAgICAgICckZ3JhZGllbnQnOiBncmFkaWVudCwKLSAgICAgICAgICAnJGNvbmZpZyc6IGNvbmZpZwotICAgICAgICB9LAotICAgICAgICAnY2hpbGRyZW4nOiBbXQotICAgICAgfSk7Ci0gICAgfQotICAgIHZhciByb290ID0gewotICAgICAgJ2lkJzogcHJlZml4ICsgJyRyb290JywKLSAgICAgICduYW1lJzogJycsCi0gICAgICAnZGF0YSc6IHsKLSAgICAgICAgJyR0eXBlJzogJ25vbmUnLAotICAgICAgICAnJHdpZHRoJzogMSwKLSAgICAgICAgJyRoZWlnaHQnOiAxCi0gICAgICB9LAotICAgICAgJ2NoaWxkcmVuJzogY2gKLSAgICB9OwotICAgIGRlbGVnYXRlLmxvYWRKU09OKHJvb3QpOwotICAgIAotICAgIHRoaXMubm9ybWFsaXplRGltcygpOwotICAgIGRlbGVnYXRlLmNvbXB1dGUoKTsKLSAgICBkZWxlZ2F0ZS5zZWxlY3QoZGVsZWdhdGUucm9vdCk7Ci0gICAgaWYoYW5pbWF0ZSkgewotICAgICAgaWYoaG9yeikgewotICAgICAgICBkZWxlZ2F0ZS5meC5hbmltYXRlKHsKLSAgICAgICAgICBtb2RlczogWydub2RlLXByb3BlcnR5OndpZHRoOmRpbUFycmF5J10sCi0gICAgICAgICAgZHVyYXRpb246MTUwMCwKLSAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRoYXQuYnVzeSA9IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBkZWxlZ2F0ZS5meC5hbmltYXRlKHsKLSAgICAgICAgICBtb2RlczogWydub2RlLXByb3BlcnR5OmhlaWdodDpkaW1BcnJheSddLAotICAgICAgICAgIGR1cmF0aW9uOjE1MDAsCi0gICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0aGF0LmJ1c3kgPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLmJ1c3kgPSBmYWxzZTsKLSAgICB9Ci0gIH0sCi0gIAotICAvKgotICAgIE1ldGhvZDogdXBkYXRlSlNPTgotICAgCi0gICAgVXNlIHRoaXMgbWV0aG9kIHdoZW4gdXBkYXRpbmcgdmFsdWVzIGZvciB0aGUgY3VycmVudCBKU09OIGRhdGEuIElmIHRoZSBpdGVtcyBzcGVjaWZpZWQgYnkgdGhlIEpTT04gZGF0YSBhbHJlYWR5IGV4aXN0IGluIHRoZSBncmFwaCB0aGVuIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHVwZGF0ZWQuCi0gICAgCi0gICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICBqc29uIC0gKG9iamVjdCkgSlNPTiBkYXRhIHRvIGJlIHVwZGF0ZWQuIFRoZSBKU09OIGZvcm1hdCBjb3JyZXNwb25kcyB0byB0aGUgb25lIGRlc2NyaWJlZCBpbiA8QmFyQ2hhcnQubG9hZEpTT04+LgotICAgIG9uQ29tcGxldGUgLSAob2JqZWN0KSBBIGNhbGxiYWNrIG9iamVjdCB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYW5pbWF0aW9uIHRyYW5zaXRpb24gd2hlbiB1cGRhdGluZyB0aGUgZGF0YSBlbmQuCi0gICAgCi0gICAgRXhhbXBsZToKLSAgICAKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICBiYXJDaGFydC51cGRhdGVKU09OKGpzb24sIHsKLSAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICBhbGVydCgndXBkYXRlIGNvbXBsZXRlIScpOwotICAgICAgfQotICAgIH0pOwotICAgIChlbmQgY29kZSkKLSAqLyAgCi0gIHVwZGF0ZUpTT046IGZ1bmN0aW9uKGpzb24sIG9uQ29tcGxldGUpIHsKLSAgICBpZih0aGlzLmJ1c3kpIHJldHVybjsKLSAgICB0aGlzLmJ1c3kgPSB0cnVlOwotICAgIHRoaXMuc2VsZWN0KGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgIHZhciBkZWxlZ2F0ZSA9IHRoaXMuZGVsZWdhdGU7Ci0gICAgdmFyIGdyYXBoID0gZGVsZWdhdGUuZ3JhcGg7Ci0gICAgdmFyIHZhbHVlcyA9IGpzb24udmFsdWVzOwotICAgIHZhciBhbmltYXRlID0gdGhpcy5jb25maWcuYW5pbWF0ZTsKLSAgICB2YXIgdGhhdCA9IHRoaXM7Ci0gICAgdmFyIGhvcnogPSB0aGlzLmNvbmZpZy5vcmllbnRhdGlvbiA9PSAnaG9yaXpvbnRhbCc7Ci0gICAgJC5lYWNoKHZhbHVlcywgZnVuY3Rpb24odikgewotICAgICAgdmFyIG4gPSBncmFwaC5nZXRCeU5hbWUodi5sYWJlbCk7Ci0gICAgICBpZihuKSB7Ci0gICAgICAgIG4uc2V0RGF0YSgndmFsdWVBcnJheScsICQuc3BsYXQodi52YWx1ZXMpKTsKLSAgICAgICAgaWYoanNvbi5sYWJlbCkgewotICAgICAgICAgIG4uc2V0RGF0YSgnc3RyaW5nQXJyYXknLCAkLnNwbGF0KGpzb24ubGFiZWwpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0pOwotICAgIHRoaXMubm9ybWFsaXplRGltcygpOwotICAgIGRlbGVnYXRlLmNvbXB1dGUoKTsKLSAgICBkZWxlZ2F0ZS5zZWxlY3QoZGVsZWdhdGUucm9vdCk7Ci0gICAgaWYoYW5pbWF0ZSkgewotICAgICAgaWYoaG9yeikgewotICAgICAgICBkZWxlZ2F0ZS5meC5hbmltYXRlKHsKLSAgICAgICAgICBtb2RlczogWydub2RlLXByb3BlcnR5OndpZHRoOmRpbUFycmF5J10sCi0gICAgICAgICAgZHVyYXRpb246MTUwMCwKLSAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRoYXQuYnVzeSA9IGZhbHNlOwotICAgICAgICAgICAgb25Db21wbGV0ZSAmJiBvbkNvbXBsZXRlLm9uQ29tcGxldGUoKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZGVsZWdhdGUuZnguYW5pbWF0ZSh7Ci0gICAgICAgICAgbW9kZXM6IFsnbm9kZS1wcm9wZXJ0eTpoZWlnaHQ6ZGltQXJyYXknXSwKLSAgICAgICAgICBkdXJhdGlvbjoxNTAwLAotICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGhhdC5idXN5ID0gZmFsc2U7Ci0gICAgICAgICAgICBvbkNvbXBsZXRlICYmIG9uQ29tcGxldGUub25Db21wbGV0ZSgpOwotICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICB9Ci0gICAgfQotICB9LAotICAKLSAgLy9hZGRzIHRoZSBsaXR0bGUgYnJvd24gYmFyIHdoZW4gaG92ZXJpbmcgdGhlIG5vZGUKLSAgc2VsZWN0OiBmdW5jdGlvbihpZCwgbmFtZSkgewotICAgIGlmKCF0aGlzLmNvbmZpZy5ob3ZlcmVkQ29sb3IpIHJldHVybjsKLSAgICB2YXIgcyA9IHRoaXMuc2VsZWN0ZWQ7Ci0gICAgaWYocy5pZCAhPSBpZCB8fCBzLm5hbWUgIT0gbmFtZSkgewotICAgICAgcy5pZCA9IGlkOwotICAgICAgcy5uYW1lID0gbmFtZTsKLSAgICAgIHMuY29sb3IgPSB0aGlzLmNvbmZpZy5ob3ZlcmVkQ29sb3I7Ci0gICAgICB0aGlzLmRlbGVnYXRlLmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgaWYoaWQgPT0gbi5pZCkgewotICAgICAgICAgIG4uc2V0RGF0YSgnYm9yZGVyJywgcyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgbi5zZXREYXRhKCdib3JkZXInLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgICAgdGhpcy5kZWxlZ2F0ZS5wbG90KCk7Ci0gICAgfQotICB9LAotICAKLSAgLyoKLSAgICBNZXRob2Q6IGdldExlZ2VuZAotICAgCi0gICAgUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyBhcyBrZXlzIHRoZSBsZWdlbmQgbmFtZXMgYW5kIGFzIHZhbHVlcyBoZXggc3RyaW5ncyB3aXRoIGNvbG9yIHZhbHVlcy4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIAotICAgIChzdGFydCBjb2RlIGpzKQotICAgIHZhciBsZWdlbmQgPSBiYXJDaGFydC5nZXRMZWdlbmQoKTsKLSAgICAoZW5kIGNvZGUpCi0gICovICAKLSAgZ2V0TGVnZW5kOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbGVnZW5kID0ge307Ci0gICAgdmFyIG47Ci0gICAgdGhpcy5kZWxlZ2F0ZS5ncmFwaC5nZXROb2RlKHRoaXMuZGVsZWdhdGUucm9vdCkuZWFjaEFkamFjZW5jeShmdW5jdGlvbihhZGopIHsKLSAgICAgIG4gPSBhZGoubm9kZVRvOwotICAgIH0pOwotICAgIHZhciBjb2xvcnMgPSBuLmdldERhdGEoJ2NvbG9yQXJyYXknKSwKLSAgICAgICAgbGVuID0gY29sb3JzLmxlbmd0aDsKLSAgICAkLmVhY2gobi5nZXREYXRhKCdzdHJpbmdBcnJheScpLCBmdW5jdGlvbihzLCBpKSB7Ci0gICAgICBsZWdlbmRbc10gPSBjb2xvcnNbaSAlIGxlbl07Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGxlZ2VuZDsKLSAgfSwKLSAgCi0gIC8qCi0gICAgTWV0aG9kOiBnZXRNYXhWYWx1ZQotICAgCi0gICAgUmV0dXJucyB0aGUgbWF4aW11bSBhY2N1bXVsYXRlZCB2YWx1ZSBmb3IgdGhlIHN0YWNrcy4gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3Igbm9ybWFsaXppbmcgdGhlIGdyYXBoIGhlaWdodHMgYWNjb3JkaW5nIHRvIHRoZSBjYW52YXMgaGVpZ2h0LgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgCi0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgdmFyIGFucyA9IGJhckNoYXJ0LmdldE1heFZhbHVlKCk7Ci0gICAgKGVuZCBjb2RlKQotICAgIAotICAgIEluIHNvbWUgY2FzZXMgaXQgY291bGQgYmUgdXNlZnVsIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIG5vcm1hbGl6ZSBoZWlnaHRzIGZvciBhIGdyb3VwIG9mIEJhckNoYXJ0cywgbGlrZSB3aGVuIGRvaW5nIHNtYWxsIG11bHRpcGxlcy4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIAotICAgIChzdGFydCBjb2RlIGpzKQotICAgIC8vd2lsbCByZXR1cm4gMTAwIGZvciBhbGwgQmFyQ2hhcnQgaW5zdGFuY2VzLAotICAgIC8vZGlzcGxheWluZyBhbGwgb2YgdGhlbSB3aXRoIHRoZSBzYW1lIHNjYWxlCi0gICAgJGppdC5CYXJDaGFydC5pbXBsZW1lbnQoewotICAgICAgJ2dldE1heFZhbHVlJzogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiAxMDA7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgKGVuZCBjb2RlKQotICAgIAotICAqLyAgCi0gIGdldE1heFZhbHVlOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbWF4VmFsdWUgPSAwLCBzdGFja2VkID0gdGhpcy5jb25maWcudHlwZS5zcGxpdCgnOicpWzBdID09ICdzdGFja2VkJzsKLSAgICB0aGlzLmRlbGVnYXRlLmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKG4pIHsKLSAgICAgIHZhciB2YWxBcnJheSA9IG4uZ2V0RGF0YSgndmFsdWVBcnJheScpLAotICAgICAgICAgIGFjdW0gPSAwOwotICAgICAgaWYoIXZhbEFycmF5KSByZXR1cm47Ci0gICAgICBpZihzdGFja2VkKSB7Ci0gICAgICAgICQuZWFjaCh2YWxBcnJheSwgZnVuY3Rpb24odikgeyAKLSAgICAgICAgICBhY3VtICs9ICt2OwotICAgICAgICB9KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGFjdW0gPSBNYXRoLm1heC5hcHBseShudWxsLCB2YWxBcnJheSk7Ci0gICAgICB9Ci0gICAgICBtYXhWYWx1ZSA9IG1heFZhbHVlPmFjdW0/IG1heFZhbHVlOmFjdW07Ci0gICAgfSk7Ci0gICAgcmV0dXJuIG1heFZhbHVlOwotICB9LAotICAKLSAgc2V0QmFyVHlwZTogZnVuY3Rpb24odHlwZSkgewotICAgIHRoaXMuY29uZmlnLnR5cGUgPSB0eXBlOwotICAgIHRoaXMuZGVsZWdhdGUuY29uZmlnLk5vZGUudHlwZSA9ICdiYXJjaGFydC0nICsgdHlwZS5zcGxpdCgnOicpWzBdOwotICB9LAotICAKLSAgbm9ybWFsaXplRGltczogZnVuY3Rpb24oKSB7Ci0gICAgLy9udW1iZXIgb2YgZWxlbWVudHMKLSAgICB2YXIgcm9vdCA9IHRoaXMuZGVsZWdhdGUuZ3JhcGguZ2V0Tm9kZSh0aGlzLmRlbGVnYXRlLnJvb3QpLCBsPTA7Ci0gICAgcm9vdC5lYWNoQWRqYWNlbmN5KGZ1bmN0aW9uKCkgewotICAgICAgbCsrOwotICAgIH0pOwotICAgIHZhciBtYXhWYWx1ZSA9IHRoaXMuZ2V0TWF4VmFsdWUoKSB8fCAxLAotICAgICAgICBzaXplID0gdGhpcy5kZWxlZ2F0ZS5jYW52YXMuZ2V0U2l6ZSgpLAotICAgICAgICBjb25maWcgPSB0aGlzLmNvbmZpZywKLSAgICAgICAgbWFyZ2luID0gY29uZmlnLk1hcmdpbiwKLSAgICAgICAgbWFyZ2luV2lkdGggPSBtYXJnaW4ubGVmdCArIG1hcmdpbi5yaWdodCwKLSAgICAgICAgbWFyZ2luSGVpZ2h0ID0gbWFyZ2luLnRvcCArIG1hcmdpbi5ib3R0b20sCi0gICAgICAgIGhvcnogPSBjb25maWcub3JpZW50YXRpb24gPT0gJ2hvcml6b250YWwnLAotICAgICAgICBmaXhlZERpbSA9IChzaXplW2hvcno/ICdoZWlnaHQnOid3aWR0aCddIC0gKGhvcno/IG1hcmdpbkhlaWdodDptYXJnaW5XaWR0aCkgLSAobCAtMSkgKiBjb25maWcuYmFyc09mZnNldCkgLyBsLAotICAgICAgICBhbmltYXRlID0gY29uZmlnLmFuaW1hdGUsCi0gICAgICAgIGhlaWdodCA9IHNpemVbaG9yej8gJ3dpZHRoJzonaGVpZ2h0J10gLSAoaG9yej8gbWFyZ2luV2lkdGg6bWFyZ2luSGVpZ2h0KSAKLSAgICAgICAgICAtICghaG9yeiAmJiBjb25maWcuc2hvd0FnZ3JlZ2F0ZXMgJiYgKGNvbmZpZy5MYWJlbC5zaXplICsgY29uZmlnLmxhYmVsT2Zmc2V0KSkKLSAgICAgICAgICAtIChjb25maWcuc2hvd0xhYmVscyAmJiAoY29uZmlnLkxhYmVsLnNpemUgKyBjb25maWcubGFiZWxPZmZzZXQpKSwKLSAgICAgICAgZGltMSA9IGhvcno/ICdoZWlnaHQnOid3aWR0aCcsCi0gICAgICAgIGRpbTIgPSBob3J6PyAnd2lkdGgnOidoZWlnaHQnOwotICAgIHRoaXMuZGVsZWdhdGUuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgewotICAgICAgdmFyIGFjdW0gPSAwLCBhbmltYXRlVmFsdWUgPSBbXTsKLSAgICAgICQuZWFjaChuLmdldERhdGEoJ3ZhbHVlQXJyYXknKSwgZnVuY3Rpb24odikgewotICAgICAgICBhY3VtICs9ICt2OwotICAgICAgICBhbmltYXRlVmFsdWUucHVzaCgwKTsKLSAgICAgIH0pOwotICAgICAgbi5zZXREYXRhKGRpbTEsIGZpeGVkRGltKTsKLSAgICAgIGlmKGFuaW1hdGUpIHsKLSAgICAgICAgbi5zZXREYXRhKGRpbTIsIGFjdW0gKiBoZWlnaHQgLyBtYXhWYWx1ZSwgJ2VuZCcpOwotICAgICAgICBuLnNldERhdGEoJ2RpbUFycmF5JywgJC5tYXAobi5nZXREYXRhKCd2YWx1ZUFycmF5JyksIGZ1bmN0aW9uKG4pIHsgCi0gICAgICAgICAgcmV0dXJuIG4gKiBoZWlnaHQgLyBtYXhWYWx1ZTsgCi0gICAgICAgIH0pLCAnZW5kJyk7Ci0gICAgICAgIHZhciBkaW1BcnJheSA9IG4uZ2V0RGF0YSgnZGltQXJyYXknKTsKLSAgICAgICAgaWYoIWRpbUFycmF5KSB7Ci0gICAgICAgICAgbi5zZXREYXRhKCdkaW1BcnJheScsIGFuaW1hdGVWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG4uc2V0RGF0YShkaW0yLCBhY3VtICogaGVpZ2h0IC8gbWF4VmFsdWUpOwotICAgICAgICBuLnNldERhdGEoJ2RpbUFycmF5JywgJC5tYXAobi5nZXREYXRhKCd2YWx1ZUFycmF5JyksIGZ1bmN0aW9uKG4pIHsgCi0gICAgICAgICAgcmV0dXJuIG4gKiBoZWlnaHQgLyBtYXhWYWx1ZTsgCi0gICAgICAgIH0pKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgfQotfSk7Ci0KLQotLyoKLSAqIEZpbGU6IE9wdGlvbnMuUGllQ2hhcnQuanMKLSAqCi0qLwotLyoKLSAgT2JqZWN0OiBPcHRpb25zLlBpZUNoYXJ0Ci0gIAotICA8UGllQ2hhcnQ+IG9wdGlvbnMuIAotICBPdGhlciBvcHRpb25zIGluY2x1ZGVkIGluIHRoZSBQaWVDaGFydCBhcmUgPE9wdGlvbnMuQ2FudmFzPiwgPE9wdGlvbnMuTGFiZWw+LCA8T3B0aW9ucy5UaXBzPiBhbmQgPE9wdGlvbnMuRXZlbnRzPi4KLSAgCi0gIFN5bnRheDoKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotCi0gIE9wdGlvbnMuUGllQ2hhcnQgPSB7Ci0gICAgYW5pbWF0ZTogdHJ1ZSwKLSAgICBvZmZzZXQ6IDI1LAotICAgIHNsaWNlT2Zmc2V0OjAsCi0gICAgbGFiZWxPZmZzZXQ6IDMsCi0gICAgdHlwZTogJ3N0YWNrZWQnLAotICAgIGhvdmVyZWRDb2xvcjogJyM5ZmQ0ZmYnLAotICAgIHNob3dMYWJlbHM6IHRydWUsCi0gICAgcmVzaXplTGFiZWxzOiBmYWxzZSwKLSAgICB1cGRhdGVIZWlnaHRzOiBmYWxzZQotICB9OyAgCi0KLSAgKGVuZCBjb2RlKQotICAKLSAgRXhhbXBsZToKLSAgCi0gIChzdGFydCBjb2RlIGpzKQotCi0gIHZhciBwaWUgPSBuZXcgJGppdC5QaWVDaGFydCh7Ci0gICAgYW5pbWF0ZTogdHJ1ZSwKLSAgICBzbGljZU9mZnNldDogNSwKLSAgICB0eXBlOiAnc3RhY2tlZDpncmFkaWVudCcKLSAgfSk7ICAKLQotICAoZW5kIGNvZGUpCi0gIAotICBQYXJhbWV0ZXJzOgotICAKLSAgYW5pbWF0ZSAtIChib29sZWFuKSBEZWZhdWx0J3MgKnRydWUqLiBXaGV0aGVyIHRvIGFkZCBhbmltYXRlZCB0cmFuc2l0aW9ucyB3aGVuIHBsb3R0aW5nL3VwZGF0aW5nIHRoZSB2aXN1YWxpemF0aW9uLgotICBvZmZzZXQgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjI1Ki4gQWRkcyBtYXJnaW4gYmV0d2VlbiB0aGUgdmlzdWFsaXphdGlvbiBhbmQgdGhlIGNhbnZhcy4KLSAgc2xpY2VPZmZzZXQgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjAqLiBTZXBhcmF0aW9uIGJldHdlZW4gdGhlIGNlbnRlciBvZiB0aGUgY2FudmFzIGFuZCBlYWNoIHBpZSBzbGljZS4KLSAgbGFiZWxPZmZzZXQgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjMqLiBBZGRzIG1hcmdpbiBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgdGhlIGRlZmF1bHQgcGxhY2Ugd2hlcmUgaXQgc2hvdWxkIGJlIGRyYXduLgotICB0eXBlIC0gKHN0cmluZykgRGVmYXVsdCdzIConc3RhY2tlZCcqLiBTdGFjayBzdHlsZS4gUG9zaWJsZSB2YWx1ZXMgYXJlICdzdGFja2VkJywgJ3N0YWNrZWQ6Z3JhZGllbnQnIHRvIGFkZCBncmFkaWVudHMuCi0gIGhvdmVyZWRDb2xvciAtIChib29sZWFufHN0cmluZykgRGVmYXVsdCdzIConIzlmZDRmZicqLiBTZXRzIHRoZSBzZWxlY3RlZCBjb2xvciBmb3IgYSBob3ZlcmVkIHBpZSBzdGFjay4KLSAgc2hvd0xhYmVscyAtIChib29sZWFuKSBEZWZhdWx0J3MgKnRydWUqLiBEaXNwbGF5IHRoZSBuYW1lIG9mIHRoZSBzbG90cy4KLSAgcmVzaXplTGFiZWxzIC0gKGJvb2xlYW58bnVtYmVyKSBEZWZhdWx0J3MgKmZhbHNlKi4gUmVzaXplIHRoZSBwaWUgbGFiZWxzIGFjY29yZGluZyB0byB0aGVpciBzdGFja2VkIHZhbHVlcy4gU2V0IGEgbnVtYmVyIGZvciAqcmVzaXplTGFiZWxzKiB0byBzZXQgYSBmb250IHNpemUgbWluaW11bS4KLSAgdXBkYXRlSGVpZ2h0cyAtIChib29sZWFuKSBEZWZhdWx0J3MgKmZhbHNlKi4gT25seSBmb3IgbW9uby12YWx1ZWQgKG1vc3QgY29tbW9uKSBwaWUgY2hhcnRzLiBSZXNpemUgdGhlIGhlaWdodCBvZiB0aGUgcGllIHNsaWNlcyBhY2NvcmRpbmcgdG8gdGhlaXIgY3VycmVudCB2YWx1ZXMuCi0KLSovCi1PcHRpb25zLlBpZUNoYXJ0ID0gewotICAkZXh0ZW5kOiB0cnVlLAotCi0gIGFuaW1hdGU6IHRydWUsCi0gIG9mZnNldDogMjUsIC8vIHBhZ2Ugb2Zmc2V0Ci0gIHNsaWNlT2Zmc2V0OjAsCi0gIGxhYmVsT2Zmc2V0OiAzLCAvLyBsYWJlbCBvZmZzZXQKLSAgdHlwZTogJ3N0YWNrZWQnLCAvLyBncmFkaWVudAotICBob3ZlcmVkQ29sb3I6ICcjOWZkNGZmJywKLSAgRXZlbnRzOiB7Ci0gICAgZW5hYmxlOiBmYWxzZSwKLSAgICBvbkNsaWNrOiAkLmVtcHR5Ci0gIH0sCi0gIFRpcHM6IHsKLSAgICBlbmFibGU6IGZhbHNlLAotICAgIG9uU2hvdzogJC5lbXB0eSwKLSAgICBvbkhpZGU6ICQuZW1wdHkKLSAgfSwKLSAgc2hvd0xhYmVsczogdHJ1ZSwKLSAgcmVzaXplTGFiZWxzOiBmYWxzZSwKLSAgCi0gIC8vb25seSB2YWxpZCBmb3IgbW9uby12YWx1ZWQgZGF0YXNldHMKLSAgdXBkYXRlSGVpZ2h0czogZmFsc2UKLX07Ci0KLS8qCi0gKiBDbGFzczogTGF5b3V0cy5SYWRpYWwKLSAqIAotICogSW1wbGVtZW50cyBhIFJhZGlhbCBMYXlvdXQuCi0gKiAKLSAqIEltcGxlbWVudGVkIEJ5OgotICogCi0gKiA8UkdyYXBoPiwgPEh5cGVydHJlZT4KLSAqIAotICovCi1MYXlvdXRzLlJhZGlhbCA9IG5ldyBDbGFzcyh7Ci0KLSAgLyoKLSAgICogTWV0aG9kOiBjb21wdXRlCi0gICAqIAotICAgKiBDb21wdXRlcyBub2RlcycgcG9zaXRpb25zLgotICAgKiAKLSAgICogUGFyYW1ldGVyczoKLSAgICogCi0gICAqIHByb3BlcnR5IC0gX29wdGlvbmFsXyBBIDxHcmFwaC5Ob2RlPiBwb3NpdGlvbiBwcm9wZXJ0eSB0byBzdG9yZSB0aGUgbmV3Ci0gICAqIHBvc2l0aW9ucy4gUG9zc2libGUgdmFsdWVzIGFyZSAncG9zJywgJ2VuZCcgb3IgJ3N0YXJ0Jy4KLSAgICogCi0gICAqLwotICBjb21wdXRlIDogZnVuY3Rpb24ocHJvcGVydHkpIHsKLSAgICB2YXIgcHJvcCA9ICQuc3BsYXQocHJvcGVydHkgfHwgWyAnY3VycmVudCcsICdzdGFydCcsICdlbmQnIF0pOwotICAgIE5vZGVEaW0uY29tcHV0ZSh0aGlzLmdyYXBoLCBwcm9wLCB0aGlzLmNvbmZpZyk7Ci0gICAgdGhpcy5ncmFwaC5jb21wdXRlTGV2ZWxzKHRoaXMucm9vdCwgMCwgImlnbm9yZSIpOwotICAgIHZhciBsZW5ndGhGdW5jID0gdGhpcy5jcmVhdGVMZXZlbERpc3RhbmNlRnVuYygpOyAKLSAgICB0aGlzLmNvbXB1dGVBbmd1bGFyV2lkdGhzKHByb3ApOwotICAgIHRoaXMuY29tcHV0ZVBvc2l0aW9ucyhwcm9wLCBsZW5ndGhGdW5jKTsKLSAgfSwKLQotICAvKgotICAgKiBjb21wdXRlUG9zaXRpb25zCi0gICAqIAotICAgKiBQZXJmb3JtcyB0aGUgbWFpbiBhbGdvcml0aG0gZm9yIGNvbXB1dGluZyBub2RlIHBvc2l0aW9ucy4KLSAgICovCi0gIGNvbXB1dGVQb3NpdGlvbnMgOiBmdW5jdGlvbihwcm9wZXJ0eSwgZ2V0TGVuZ3RoKSB7Ci0gICAgdmFyIHByb3BBcnJheSA9IHByb3BlcnR5OwotICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7Ci0gICAgdmFyIHJvb3QgPSBncmFwaC5nZXROb2RlKHRoaXMucm9vdCk7Ci0gICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50OwotICAgIHZhciBjb25maWcgPSB0aGlzLmNvbmZpZzsKLQotICAgIGZvciAoIHZhciBpPTAsIGw9cHJvcEFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAgdmFyIHBpID0gcHJvcEFycmF5W2ldOwotICAgICAgcm9vdC5zZXRQb3MoJFAoMCwgMCksIHBpKTsKLSAgICAgIHJvb3Quc2V0RGF0YSgnc3BhbicsIE1hdGguUEkgKiAyLCBwaSk7Ci0gICAgfQotCi0gICAgcm9vdC5hbmdsZVNwYW4gPSB7Ci0gICAgICBiZWdpbiA6IDAsCi0gICAgICBlbmQgOiAyICogTWF0aC5QSQotICAgIH07Ci0KLSAgICBncmFwaC5lYWNoQkZTKHRoaXMucm9vdCwgZnVuY3Rpb24oZWxlbSkgewotICAgICAgdmFyIGFuZ2xlU3BhbiA9IGVsZW0uYW5nbGVTcGFuLmVuZCAtIGVsZW0uYW5nbGVTcGFuLmJlZ2luOwotICAgICAgdmFyIGFuZ2xlSW5pdCA9IGVsZW0uYW5nbGVTcGFuLmJlZ2luOwotICAgICAgdmFyIGxlbiA9IGdldExlbmd0aChlbGVtKTsKLSAgICAgIC8vQ2FsY3VsYXRlIHRoZSBzdW0gb2YgYWxsIGFuZ3VsYXIgd2lkdGhzCi0gICAgICB2YXIgdG90YWxBbmd1bGFyV2lkdGhzID0gMCwgc3Vibm9kZXMgPSBbXSwgbWF4RGltID0ge307Ci0gICAgICBlbGVtLmVhY2hTdWJub2RlKGZ1bmN0aW9uKHNpYikgewotICAgICAgICB0b3RhbEFuZ3VsYXJXaWR0aHMgKz0gc2liLl90cmVlQW5ndWxhcldpZHRoOwotICAgICAgICAvL2dldCBtYXggZGltCi0gICAgICAgIGZvciAoIHZhciBpPTAsIGw9cHJvcEFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykgewotICAgICAgICAgIHZhciBwaSA9IHByb3BBcnJheVtpXSwgZGltID0gc2liLmdldERhdGEoJ2RpbScsIHBpKTsKLSAgICAgICAgICBtYXhEaW1bcGldID0gKHBpIGluIG1heERpbSk/IChkaW0gPiBtYXhEaW1bcGldPyBkaW0gOiBtYXhEaW1bcGldKSA6IGRpbTsKLSAgICAgICAgfQotICAgICAgICBzdWJub2Rlcy5wdXNoKHNpYik7Ci0gICAgICB9LCAiaWdub3JlIik7Ci0gICAgICAvL01haW50YWluIGNoaWxkcmVuIG9yZGVyCi0gICAgICAvL1NlY29uZCBjb25zdHJhaW50IGZvciA8aHR0cDovL2JhaWxhbmRvLnNpbXMuYmVya2VsZXkuZWR1L3BhcGVycy9pbmZvdmlzMDEuaHRtPgotICAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQuaWQgPT0gZWxlbS5pZCAmJiBzdWJub2Rlcy5sZW5ndGggPiAwCi0gICAgICAgICAgJiYgc3Vibm9kZXNbMF0uZGlzdCkgewotICAgICAgICBzdWJub2Rlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKLSAgICAgICAgICByZXR1cm4gKGEuZGlzdCA+PSBiLmRpc3QpIC0gKGEuZGlzdCA8PSBiLmRpc3QpOwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICAgIC8vQ2FsY3VsYXRlIG5vZGVzIHBvc2l0aW9ucy4KLSAgICAgIGZvciAodmFyIGsgPSAwLCBscz1zdWJub2Rlcy5sZW5ndGg7IGsgPCBsczsgaysrKSB7Ci0gICAgICAgIHZhciBjaGlsZCA9IHN1Ym5vZGVzW2tdOwotICAgICAgICBpZiAoIWNoaWxkLl9mbGFnKSB7Ci0gICAgICAgICAgdmFyIGFuZ2xlUHJvcG9ydGlvbiA9IGNoaWxkLl90cmVlQW5ndWxhcldpZHRoIC8gdG90YWxBbmd1bGFyV2lkdGhzICogYW5nbGVTcGFuOwotICAgICAgICAgIHZhciB0aGV0YSA9IGFuZ2xlSW5pdCArIGFuZ2xlUHJvcG9ydGlvbiAvIDI7Ci0KLSAgICAgICAgICBmb3IgKCB2YXIgaT0wLCBsPXByb3BBcnJheS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgICAgICAgIHZhciBwaSA9IHByb3BBcnJheVtpXTsKLSAgICAgICAgICAgIGNoaWxkLnNldFBvcygkUCh0aGV0YSwgbGVuKSwgcGkpOwotICAgICAgICAgICAgY2hpbGQuc2V0RGF0YSgnc3BhbicsIGFuZ2xlUHJvcG9ydGlvbiwgcGkpOwotICAgICAgICAgICAgY2hpbGQuc2V0RGF0YSgnZGltLXF1b3RpZW50JywgY2hpbGQuZ2V0RGF0YSgnZGltJywgcGkpIC8gbWF4RGltW3BpXSwgcGkpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGNoaWxkLmFuZ2xlU3BhbiA9IHsKLSAgICAgICAgICAgIGJlZ2luIDogYW5nbGVJbml0LAotICAgICAgICAgICAgZW5kIDogYW5nbGVJbml0ICsgYW5nbGVQcm9wb3J0aW9uCi0gICAgICAgICAgfTsKLSAgICAgICAgICBhbmdsZUluaXQgKz0gYW5nbGVQcm9wb3J0aW9uOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwgImlnbm9yZSIpOwotICB9LAotCi0gIC8qCi0gICAqIE1ldGhvZDogc2V0QW5ndWxhcldpZHRoRm9yTm9kZXMKLSAgICogCi0gICAqIFNldHMgbm9kZXMgYW5ndWxhciB3aWR0aHMuCi0gICAqLwotICBzZXRBbmd1bGFyV2lkdGhGb3JOb2RlcyA6IGZ1bmN0aW9uKHByb3ApIHsKLSAgICB0aGlzLmdyYXBoLmVhY2hCRlModGhpcy5yb290LCBmdW5jdGlvbihlbGVtLCBpKSB7Ci0gICAgICB2YXIgZGlhbVZhbHVlID0gZWxlbS5nZXREYXRhKCdhbmd1bGFyV2lkdGgnLCBwcm9wWzBdKSB8fCA1OwotICAgICAgZWxlbS5fYW5ndWxhcldpZHRoID0gZGlhbVZhbHVlIC8gaTsKLSAgICB9LCAiaWdub3JlIik7Ci0gIH0sCi0KLSAgLyoKLSAgICogTWV0aG9kOiBzZXRTdWJ0cmVlc0FuZ3VsYXJXaWR0aAotICAgKiAKLSAgICogU2V0cyBzdWJ0cmVlcyBhbmd1bGFyIHdpZHRocy4KLSAgICovCi0gIHNldFN1YnRyZWVzQW5ndWxhcldpZHRoIDogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRoYXQgPSB0aGlzOwotICAgIHRoaXMuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24oZWxlbSkgewotICAgICAgdGhhdC5zZXRTdWJ0cmVlQW5ndWxhcldpZHRoKGVsZW0pOwotICAgIH0sICJpZ25vcmUiKTsKLSAgfSwKLQotICAvKgotICAgKiBNZXRob2Q6IHNldFN1YnRyZWVBbmd1bGFyV2lkdGgKLSAgICogCi0gICAqIFNldHMgdGhlIGFuZ3VsYXIgd2lkdGggZm9yIGEgc3VidHJlZS4KLSAgICovCi0gIHNldFN1YnRyZWVBbmd1bGFyV2lkdGggOiBmdW5jdGlvbihlbGVtKSB7Ci0gICAgdmFyIHRoYXQgPSB0aGlzLCBub2RlQVcgPSBlbGVtLl9hbmd1bGFyV2lkdGgsIHN1bUFXID0gMDsKLSAgICBlbGVtLmVhY2hTdWJub2RlKGZ1bmN0aW9uKGNoaWxkKSB7Ci0gICAgICB0aGF0LnNldFN1YnRyZWVBbmd1bGFyV2lkdGgoY2hpbGQpOwotICAgICAgc3VtQVcgKz0gY2hpbGQuX3RyZWVBbmd1bGFyV2lkdGg7Ci0gICAgfSwgImlnbm9yZSIpOwotICAgIGVsZW0uX3RyZWVBbmd1bGFyV2lkdGggPSBNYXRoLm1heChub2RlQVcsIHN1bUFXKTsKLSAgfSwKLQotICAvKgotICAgKiBNZXRob2Q6IGNvbXB1dGVBbmd1bGFyV2lkdGhzCi0gICAqIAotICAgKiBDb21wdXRlcyBub2RlcyBhbmQgc3VidHJlZXMgYW5ndWxhciB3aWR0aHMuCi0gICAqLwotICBjb21wdXRlQW5ndWxhcldpZHRocyA6IGZ1bmN0aW9uKHByb3ApIHsKLSAgICB0aGlzLnNldEFuZ3VsYXJXaWR0aEZvck5vZGVzKHByb3ApOwotICAgIHRoaXMuc2V0U3VidHJlZXNBbmd1bGFyV2lkdGgoKTsKLSAgfQotCi19KTsKLQotCi0vKgotICogRmlsZTogU3VuYnVyc3QuanMKLSAqLwotCi0vKgotICAgQ2xhc3M6IFN1bmJ1cnN0Ci0gICAgICAKLSAgIEEgcmFkaWFsIHNwYWNlIGZpbGxpbmcgdHJlZSB2aXN1YWxpemF0aW9uLgotICAgCi0gICBJbnNwaXJlZCBieToKLSAKLSAgIFN1bmJ1cnN0IDxodHRwOi8vd3d3LmNjLmdhdGVjaC5lZHUvZ3Z1L2lpL3N1bmJ1cnN0Lz4uCi0gICAKLSAgIE5vdGU6Ci0gICAKLSAgIFRoaXMgdmlzdWFsaXphdGlvbiB3YXMgYnVpbHQgYW5kIGVuZ2luZWVyZWQgZnJvbSBzY3JhdGNoLCB0YWtpbmcgb25seSB0aGUgcGFwZXIgYXMgaW5zcGlyYXRpb24sIGFuZCBvbmx5IHNoYXJlcyBzb21lIGZlYXR1cmVzIHdpdGggdGhlIHZpc3VhbGl6YXRpb24gZGVzY3JpYmVkIGluIHRoZSBwYXBlci4KLSAgIAotICBJbXBsZW1lbnRzOgotICAKLSAgQWxsIDxMb2FkZXI+IG1ldGhvZHMKLSAgCi0gICBDb25zdHJ1Y3RvciBPcHRpb25zOgotICAgCi0gICBJbmhlcml0cyBvcHRpb25zIGZyb20KLSAgIAotICAgLSA8T3B0aW9ucy5DYW52YXM+Ci0gICAtIDxPcHRpb25zLkNvbnRyb2xsZXI+Ci0gICAtIDxPcHRpb25zLk5vZGU+Ci0gICAtIDxPcHRpb25zLkVkZ2U+Ci0gICAtIDxPcHRpb25zLkxhYmVsPgotICAgLSA8T3B0aW9ucy5FdmVudHM+Ci0gICAtIDxPcHRpb25zLlRpcHM+Ci0gICAtIDxPcHRpb25zLk5vZGVTdHlsZXM+Ci0gICAtIDxPcHRpb25zLk5hdmlnYXRpb24+Ci0gICAKLSAgIEFkZGl0aW9uYWxseSwgdGhlcmUgYXJlIG90aGVyIHBhcmFtZXRlcnMgYW5kIHNvbWUgZGVmYXVsdCB2YWx1ZXMgY2hhbmdlZAotICAgCi0gICBpbnRlcnBvbGF0aW9uIC0gKHN0cmluZykgRGVmYXVsdCdzICpsaW5lYXIqLiBEZXNjcmliZXMgdGhlIHdheSBub2RlcyBhcmUgaW50ZXJwb2xhdGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICdsaW5lYXInIGFuZCAncG9sYXInLgotICAgbGV2ZWxEaXN0YW5jZSAtIChudW1iZXIpIERlZmF1bHQncyAqMTAwKi4gVGhlIGRpc3RhbmNlIGJldHdlZW4gbGV2ZWxzIG9mIHRoZSB0cmVlLiAKLSAgIE5vZGUudHlwZSAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5Ob2RlPi4gRGVmYXVsdCdzIHRvICptdWx0aXBpZSouCi0gICBOb2RlLmhlaWdodCAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5Ob2RlPi4gRGVmYXVsdCdzICowKi4KLSAgIEVkZ2UudHlwZSAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5FZGdlPi4gRGVmYXVsdCdzICpub25lKi4KLSAgIExhYmVsLnRleHRBbGlnbiAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5MYWJlbD4uIERlZmF1bHQncyAqc3RhcnQqLgotICAgTGFiZWwudGV4dEJhc2VsaW5lIC0gRGVzY3JpYmVkIGluIDxPcHRpb25zLkxhYmVsPi4gRGVmYXVsdCdzICptaWRkbGUqLgotICAgICAKLSAgIEluc3RhbmNlIFByb3BlcnRpZXM6Ci0KLSAgIGNhbnZhcyAtIEFjY2VzcyBhIDxDYW52YXM+IGluc3RhbmNlLgotICAgZ3JhcGggLSBBY2Nlc3MgYSA8R3JhcGg+IGluc3RhbmNlLgotICAgb3AgLSBBY2Nlc3MgYSA8U3VuYnVyc3QuT3A+IGluc3RhbmNlLgotICAgZnggLSBBY2Nlc3MgYSA8U3VuYnVyc3QuUGxvdD4gaW5zdGFuY2UuCi0gICBsYWJlbHMgLSBBY2Nlc3MgYSA8U3VuYnVyc3QuTGFiZWw+IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4gICAKLQotKi8KLQotJGppdC5TdW5idXJzdCA9IG5ldyBDbGFzcyh7Ci0KLSAgSW1wbGVtZW50czogWyBMb2FkZXIsIEV4dHJhcywgTGF5b3V0cy5SYWRpYWwgXSwKLQotICBpbml0aWFsaXplOiBmdW5jdGlvbihjb250cm9sbGVyKSB7Ci0gICAgdmFyICRTdW5idXJzdCA9ICRqaXQuU3VuYnVyc3Q7Ci0KLSAgICB2YXIgY29uZmlnID0gewotICAgICAgaW50ZXJwb2xhdGlvbjogJ2xpbmVhcicsCi0gICAgICBsZXZlbERpc3RhbmNlOiAxMDAsCi0gICAgICBOb2RlOiB7Ci0gICAgICAgICd0eXBlJzogJ211bHRpcGllJywKLSAgICAgICAgJ2hlaWdodCc6MAotICAgICAgfSwKLSAgICAgIEVkZ2U6IHsKLSAgICAgICAgJ3R5cGUnOiAnbm9uZScKLSAgICAgIH0sCi0gICAgICBMYWJlbDogewotICAgICAgICB0ZXh0QWxpZ246ICdzdGFydCcsCi0gICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScKLSAgICAgIH0KLSAgICB9OwotCi0gICAgdGhpcy5jb250cm9sbGVyID0gdGhpcy5jb25maWcgPSAkLm1lcmdlKE9wdGlvbnMoIkNhbnZhcyIsICJOb2RlIiwgIkVkZ2UiLAotICAgICAgICAiRngiLCAiVGlwcyIsICJOb2RlU3R5bGVzIiwgIkV2ZW50cyIsICJOYXZpZ2F0aW9uIiwgIkNvbnRyb2xsZXIiLCAiTGFiZWwiKSwgY29uZmlnLCBjb250cm9sbGVyKTsKLQotICAgIHZhciBjYW52YXNDb25maWcgPSB0aGlzLmNvbmZpZzsKLSAgICBpZihjYW52YXNDb25maWcudXNlQ2FudmFzKSB7Ci0gICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhc0NvbmZpZy51c2VDYW52YXM7Ci0gICAgICB0aGlzLmNvbmZpZy5sYWJlbENvbnRhaW5lciA9IHRoaXMuY2FudmFzLmlkICsgJy1sYWJlbCc7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGlmKGNhbnZhc0NvbmZpZy5iYWNrZ3JvdW5kKSB7Ci0gICAgICAgIGNhbnZhc0NvbmZpZy5iYWNrZ3JvdW5kID0gJC5tZXJnZSh7Ci0gICAgICAgICAgdHlwZTogJ0NpcmNsZXMnCi0gICAgICAgIH0sIGNhbnZhc0NvbmZpZy5iYWNrZ3JvdW5kKTsKLSAgICAgIH0KLSAgICAgIHRoaXMuY2FudmFzID0gbmV3IENhbnZhcyh0aGlzLCBjYW52YXNDb25maWcpOwotICAgICAgdGhpcy5jb25maWcubGFiZWxDb250YWluZXIgPSAodHlwZW9mIGNhbnZhc0NvbmZpZy5pbmplY3RJbnRvID09ICdzdHJpbmcnPyBjYW52YXNDb25maWcuaW5qZWN0SW50byA6IGNhbnZhc0NvbmZpZy5pbmplY3RJbnRvLmlkKSArICctbGFiZWwnOwotICAgIH0KLQotICAgIHRoaXMuZ3JhcGhPcHRpb25zID0gewotICAgICAgJ2tsYXNzJzogUG9sYXIsCi0gICAgICAnTm9kZSc6IHsKLSAgICAgICAgJ3NlbGVjdGVkJzogZmFsc2UsCi0gICAgICAgICdleGlzdCc6IHRydWUsCi0gICAgICAgICdkcmF3bic6IHRydWUKLSAgICAgIH0KLSAgICB9OwotICAgIHRoaXMuZ3JhcGggPSBuZXcgR3JhcGgodGhpcy5ncmFwaE9wdGlvbnMsIHRoaXMuY29uZmlnLk5vZGUsCi0gICAgICAgIHRoaXMuY29uZmlnLkVkZ2UpOwotICAgIHRoaXMubGFiZWxzID0gbmV3ICRTdW5idXJzdC5MYWJlbFtjYW52YXNDb25maWcuTGFiZWwudHlwZV0odGhpcyk7Ci0gICAgdGhpcy5meCA9IG5ldyAkU3VuYnVyc3QuUGxvdCh0aGlzLCAkU3VuYnVyc3QpOwotICAgIHRoaXMub3AgPSBuZXcgJFN1bmJ1cnN0Lk9wKHRoaXMpOwotICAgIHRoaXMuanNvbiA9IG51bGw7Ci0gICAgdGhpcy5yb290ID0gbnVsbDsKLSAgICB0aGlzLnJvdGF0ZWQgPSBudWxsOwotICAgIHRoaXMuYnVzeSA9IGZhbHNlOwotICAgIC8vIGluaXRpYWxpemUgZXh0cmFzCi0gICAgdGhpcy5pbml0aWFsaXplRXh0cmFzKCk7Ci0gIH0sCi0KLSAgLyogCi0gIAotICAgIGNyZWF0ZUxldmVsRGlzdGFuY2VGdW5jIAotICAKLSAgICBSZXR1cm5zIHRoZSBsZXZlbERpc3RhbmNlIGZ1bmN0aW9uIHVzZWQgZm9yIGNhbGN1bGF0aW5nIGEgbm9kZSBkaXN0YW5jZSAKLSAgICB0byBpdHMgb3JpZ2luLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGlzIGNvbXB1dGVkIAotICAgIHBlciBsZXZlbCBhbmQgbm90IHBlciBub2RlLCBzdWNoIHRoYXQgYWxsIG5vZGVzIHdpdGggdGhlIHNhbWUgZGVwdGggd2lsbCBoYXZlIHRoZSAKLSAgICBzYW1lIGRpc3RhbmNlIHRvIHRoZSBvcmlnaW4uIFRoZSByZXN1bHRpbmcgZnVuY3Rpb24gZ2V0cyB0aGUgCi0gICAgcGFyZW50IG5vZGUgYXMgcGFyYW1ldGVyIGFuZCByZXR1cm5zIGEgZmxvYXQuCi0KLSAgICovCi0gIGNyZWF0ZUxldmVsRGlzdGFuY2VGdW5jOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbGQgPSB0aGlzLmNvbmZpZy5sZXZlbERpc3RhbmNlOwotICAgIHJldHVybiBmdW5jdGlvbihlbGVtKSB7Ci0gICAgICByZXR1cm4gKGVsZW0uX2RlcHRoICsgMSkgKiBsZDsKLSAgICB9OwotICB9LAotCi0gIC8qIAotICAgICBNZXRob2Q6IHJlZnJlc2ggCi0gICAgIAotICAgICBDb21wdXRlcyBwb3NpdGlvbnMgYW5kIHBsb3RzIHRoZSB0cmVlLgotCi0gICAqLwotICByZWZyZXNoOiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLmNvbXB1dGUoKTsKLSAgICB0aGlzLnBsb3QoKTsKLSAgfSwKLQotICAvKgotICAgcmVwb3NpdGlvbgotICAKLSAgIEFuIGFsaWFzIGZvciBjb21wdXRpbmcgbmV3IHBvc2l0aW9ucyB0byBfZW5kUG9zXwotCi0gICBTZWUgYWxzbzoKLQotICAgPFN1bmJ1cnN0LmNvbXB1dGU+Ci0gICAKLSAgKi8KLSAgcmVwb3NpdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5jb21wdXRlKCdlbmQnKTsKLSAgfSwKLQotICAvKgotICBNZXRob2Q6IHJvdGF0ZQotICAKLSAgUm90YXRlcyB0aGUgZ3JhcGggc28gdGhhdCB0aGUgc2VsZWN0ZWQgbm9kZSBpcyBob3Jpem9udGFsIG9uIHRoZSByaWdodC4KLQotICBQYXJhbWV0ZXJzOgotICAKLSAgbm9kZSAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+LgotICBtZXRob2QgLSAoc3RyaW5nKSBXaGV0aGVyIHRvIHBlcmZvcm0gYW4gYW5pbWF0aW9uIG9yIGp1c3QgcmVwbG90IHRoZSBncmFwaC4gUG9zc2libGUgdmFsdWVzIGFyZSAicmVwbG90IiBvciAiYW5pbWF0ZSIuCi0gIG9wdCAtIChvYmplY3QpIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBtZXJnZWQgd2l0aCB0aGlzIHZpc3VhbGl6YXRpb24gY29uZmlndXJhdGlvbiBvcHRpb25zLgotICAKLSAgU2VlIGFsc286Ci0KLSAgPFN1bmJ1cnN0LnJvdGF0ZUFuZ2xlPgotICAKLSAgKi8KLSAgcm90YXRlOiBmdW5jdGlvbihub2RlLCBtZXRob2QsIG9wdCkgewotICAgIHZhciB0aGV0YSA9IG5vZGUuZ2V0UG9zKG9wdC5wcm9wZXJ0eSB8fCAnY3VycmVudCcpLmdldHAodHJ1ZSkudGhldGE7Ci0gICAgdGhpcy5yb3RhdGVkID0gbm9kZTsKLSAgICB0aGlzLnJvdGF0ZUFuZ2xlKC10aGV0YSwgbWV0aG9kLCBvcHQpOwotICB9LAotCi0gIC8qCi0gIE1ldGhvZDogcm90YXRlQW5nbGUKLSAgCi0gIFJvdGF0ZXMgdGhlIGdyYXBoIG9mIGFuIGFuZ2xlIHRoZXRhLgotICAKLSAgIFBhcmFtZXRlcnM6Ci0gICAKLSAgIG5vZGUgLSAob2JqZWN0KSBBIDxHcmFwaC5Ob2RlPi4KLSAgIG1ldGhvZCAtIChzdHJpbmcpIFdoZXRoZXIgdG8gcGVyZm9ybSBhbiBhbmltYXRpb24gb3IganVzdCByZXBsb3QgdGhlIGdyYXBoLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICJyZXBsb3QiIG9yICJhbmltYXRlIi4KLSAgIG9wdCAtIChvYmplY3QpIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBtZXJnZWQgd2l0aCB0aGlzIHZpc3VhbGl6YXRpb24gY29uZmlndXJhdGlvbiBvcHRpb25zLgotICAgCi0gICBTZWUgYWxzbzoKLQotICAgPFN1bmJ1cnN0LnJvdGF0ZT4KLSAgCi0gICovCi0gIHJvdGF0ZUFuZ2xlOiBmdW5jdGlvbih0aGV0YSwgbWV0aG9kLCBvcHQpIHsKLSAgICB2YXIgdGhhdCA9IHRoaXM7Ci0gICAgdmFyIG9wdGlvbnMgPSAkLm1lcmdlKHRoaXMuY29uZmlnLCBvcHQgfHwge30sIHsKLSAgICAgIG1vZGVzOiBbICdwb2xhcicgXQotICAgIH0pOwotICAgIHZhciBwcm9wID0gb3B0LnByb3BlcnR5IHx8IChtZXRob2QgPT09ICJhbmltYXRlIiA/ICdlbmQnIDogJ2N1cnJlbnQnKTsKLSAgICBpZihtZXRob2QgPT09ICdhbmltYXRlJykgewotICAgICAgdGhpcy5meC5hbmltYXRpb24ucGF1c2UoKTsKLSAgICB9Ci0gICAgdGhpcy5ncmFwaC5lYWNoTm9kZShmdW5jdGlvbihuKSB7Ci0gICAgICB2YXIgcCA9IG4uZ2V0UG9zKHByb3ApOwotICAgICAgcC50aGV0YSArPSB0aGV0YTsKLSAgICAgIGlmIChwLnRoZXRhIDwgMCkgewotICAgICAgICBwLnRoZXRhICs9IE1hdGguUEkgKiAyOwotICAgICAgfQotICAgIH0pOwotICAgIGlmIChtZXRob2QgPT0gJ2FuaW1hdGUnKSB7Ci0gICAgICB0aGlzLmZ4LmFuaW1hdGUob3B0aW9ucyk7Ci0gICAgfSBlbHNlIGlmIChtZXRob2QgPT0gJ3JlcGxvdCcpIHsKLSAgICAgIHRoaXMuZngucGxvdCgpOwotICAgICAgdGhpcy5idXN5ID0gZmFsc2U7Ci0gICAgfQotICB9LAotCi0gIC8qCi0gICBNZXRob2Q6IHBsb3QKLSAgCi0gICBQbG90cyB0aGUgU3VuYnVyc3QuIFRoaXMgaXMgYSBzaG9ydGN1dCB0byAqZngucGxvdCouCi0gICovCi0gIHBsb3Q6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuZngucGxvdCgpOwotICB9Ci19KTsKLQotJGppdC5TdW5idXJzdC4kZXh0ZW5kID0gdHJ1ZTsKLQotKGZ1bmN0aW9uKFN1bmJ1cnN0KSB7Ci0KLSAgLyoKLSAgICAgQ2xhc3M6IFN1bmJ1cnN0Lk9wCi0KLSAgICAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguT3A+LgotCi0gICAgIEV4dGVuZHM6Ci0KLSAgICAgQWxsIDxHcmFwaC5PcD4gbWV0aG9kcwotICAgICAKLSAgICAgU2VlIGFsc286Ci0gICAgIAotICAgICA8R3JhcGguT3A+Ci0KLSAgKi8KLSAgU3VuYnVyc3QuT3AgPSBuZXcgQ2xhc3MoIHsKLQotICAgIEltcGxlbWVudHM6IEdyYXBoLk9wCi0KLSAgfSk7Ci0KLSAgLyoKLSAgICAgQ2xhc3M6IFN1bmJ1cnN0LlBsb3QKLQotICAgIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLlBsb3Q+LgotICAKLSAgICBFeHRlbmRzOgotICAKLSAgICBBbGwgPEdyYXBoLlBsb3Q+IG1ldGhvZHMKLSAgICAKLSAgICBTZWUgYWxzbzoKLSAgICAKLSAgICA8R3JhcGguUGxvdD4KLSAgCi0gICovCi0gIFN1bmJ1cnN0LlBsb3QgPSBuZXcgQ2xhc3MoIHsKLQotICAgIEltcGxlbWVudHM6IEdyYXBoLlBsb3QKLQotICB9KTsKLQotICAvKgotICAgIENsYXNzOiBTdW5idXJzdC5MYWJlbAotCi0gICAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguTGFiZWw+LiAKLSAgICBDb250YWlucyBjdXN0b20gPEdyYXBoLkxhYmVsLlNWRz4sIDxHcmFwaC5MYWJlbC5IVE1MPiBhbmQgPEdyYXBoLkxhYmVsLk5hdGl2ZT4gZXh0ZW5zaW9ucy4KLSAgCi0gICAgRXh0ZW5kczoKLSAgCi0gICAgQWxsIDxHcmFwaC5MYWJlbD4gbWV0aG9kcyBhbmQgc3ViY2xhc3Nlcy4KLSAgCi0gICAgU2VlIGFsc286Ci0gIAotICAgIDxHcmFwaC5MYWJlbD4sIDxHcmFwaC5MYWJlbC5OYXRpdmU+LCA8R3JhcGguTGFiZWwuSFRNTD4sIDxHcmFwaC5MYWJlbC5TVkc+LgotICAKLSAgICovCi0gIFN1bmJ1cnN0LkxhYmVsID0ge307Ci0KLSAgLyoKLSAgICAgU3VuYnVyc3QuTGFiZWwuTmF0aXZlCi0KLSAgICAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguTGFiZWwuTmF0aXZlPi4KLQotICAgICBFeHRlbmRzOgotCi0gICAgIEFsbCA8R3JhcGguTGFiZWwuTmF0aXZlPiBtZXRob2RzCi0KLSAgICAgU2VlIGFsc286Ci0KLSAgICAgPEdyYXBoLkxhYmVsLk5hdGl2ZT4KLSAgKi8KLSAgU3VuYnVyc3QuTGFiZWwuTmF0aXZlID0gbmV3IENsYXNzKCB7Ci0gICAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuTmF0aXZlLAotCi0gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odml6KSB7Ci0gICAgICB0aGlzLnZpeiA9IHZpejsKLSAgICAgIHRoaXMubGFiZWwgPSB2aXouY29uZmlnLkxhYmVsOwotICAgICAgdGhpcy5jb25maWcgPSB2aXouY29uZmlnOwotICAgIH0sCi0KLSAgICByZW5kZXJMYWJlbDogZnVuY3Rpb24oY2FudmFzLCBub2RlLCBjb250cm9sbGVyKSB7Ci0gICAgICB2YXIgc3BhbiA9IG5vZGUuZ2V0RGF0YSgnc3BhbicpOwotICAgICAgaWYoc3BhbiA8IE1hdGguUEkgLzIgJiYgTWF0aC50YW4oc3BhbikgKiAKLSAgICAgICAgICB0aGlzLmNvbmZpZy5sZXZlbERpc3RhbmNlICogbm9kZS5fZGVwdGggPCAxMCkgewotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICB2YXIgY3R4ID0gY2FudmFzLmdldEN0eCgpOwotICAgICAgdmFyIG1lYXN1cmUgPSBjdHgubWVhc3VyZVRleHQobm9kZS5uYW1lKTsKLSAgICAgIGlmIChub2RlLmlkID09IHRoaXMudml6LnJvb3QpIHsKLSAgICAgICAgdmFyIHggPSAtbWVhc3VyZS53aWR0aCAvIDIsIHkgPSAwLCB0aGV0YXAgPSAwOwotICAgICAgICB2YXIgbGQgPSAwOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdmFyIGluZGVudCA9IDU7Ci0gICAgICAgIHZhciBsZCA9IGNvbnRyb2xsZXIubGV2ZWxEaXN0YW5jZSAtIGluZGVudDsKLSAgICAgICAgdmFyIGNsb25lID0gbm9kZS5wb3MuY2xvbmUoKTsKLSAgICAgICAgY2xvbmUucmhvICs9IGluZGVudDsKLSAgICAgICAgdmFyIHAgPSBjbG9uZS5nZXRwKHRydWUpOwotICAgICAgICB2YXIgY3QgPSBjbG9uZS5nZXRjKHRydWUpOwotICAgICAgICB2YXIgeCA9IGN0LngsIHkgPSBjdC55OwotICAgICAgICAvLyBnZXQgYW5nbGUgaW4gZGVncmVlcwotICAgICAgICB2YXIgcGkgPSBNYXRoLlBJOwotICAgICAgICB2YXIgY29uZCA9IChwLnRoZXRhID4gcGkgLyAyICYmIHAudGhldGEgPCAzICogcGkgLyAyKTsKLSAgICAgICAgdmFyIHRoZXRhcCA9IGNvbmQgPyBwLnRoZXRhICsgcGkgOiBwLnRoZXRhOwotICAgICAgICBpZiAoY29uZCkgewotICAgICAgICAgIHggLT0gTWF0aC5hYnMoTWF0aC5jb3MocC50aGV0YSkgKiBtZWFzdXJlLndpZHRoKTsKLSAgICAgICAgICB5ICs9IE1hdGguc2luKHAudGhldGEpICogbWVhc3VyZS53aWR0aDsKLSAgICAgICAgfSBlbHNlIGlmIChub2RlLmlkID09IHRoaXMudml6LnJvb3QpIHsKLSAgICAgICAgICB4IC09IG1lYXN1cmUud2lkdGggLyAyOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBjdHguc2F2ZSgpOwotICAgICAgY3R4LnRyYW5zbGF0ZSh4LCB5KTsKLSAgICAgIGN0eC5yb3RhdGUodGhldGFwKTsKLSAgICAgIGN0eC5maWxsVGV4dChub2RlLm5hbWUsIDAsIDApOwotICAgICAgY3R4LnJlc3RvcmUoKTsKLSAgICB9Ci0gIH0pOwotCi0gIC8qCi0gICAgIFN1bmJ1cnN0LkxhYmVsLlNWRwotCi0gICAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguTGFiZWwuU1ZHPi4KLSAgCi0gICAgRXh0ZW5kczoKLSAgCi0gICAgQWxsIDxHcmFwaC5MYWJlbC5TVkc+IG1ldGhvZHMKLSAgCi0gICAgU2VlIGFsc286Ci0gIAotICAgIDxHcmFwaC5MYWJlbC5TVkc+Ci0gIAotICAqLwotICBTdW5idXJzdC5MYWJlbC5TVkcgPSBuZXcgQ2xhc3MoIHsKLSAgICBJbXBsZW1lbnRzOiBHcmFwaC5MYWJlbC5TVkcsCi0KLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopIHsKLSAgICAgIHRoaXMudml6ID0gdml6OwotICAgIH0sCi0KLSAgICAvKiAKLSAgICAgICBwbGFjZUxhYmVsCi0KLSAgICAgICBPdmVycmlkZXMgYWJzdHJhY3QgbWV0aG9kIHBsYWNlTGFiZWwgaW4gPEdyYXBoLlBsb3Q+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIHRhZyAtIEEgRE9NIGxhYmVsIGVsZW1lbnQuCi0gICAgICAgbm9kZSAtIEEgPEdyYXBoLk5vZGU+LgotICAgICAgIGNvbnRyb2xsZXIgLSBBIGNvbmZpZ3VyYXRpb24vY29udHJvbGxlciBvYmplY3QgcGFzc2VkIHRvIHRoZSB2aXN1YWxpemF0aW9uLgotICAgICAgCi0gICAgICovCi0gICAgcGxhY2VMYWJlbDogZnVuY3Rpb24odGFnLCBub2RlLCBjb250cm9sbGVyKSB7Ci0gICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgdml6ID0gdGhpcy52aXosIGNhbnZhcyA9IHRoaXMudml6LmNhbnZhczsKLSAgICAgIHZhciByYWRpdXMgPSBjYW52YXMuZ2V0U2l6ZSgpOwotICAgICAgdmFyIGxhYmVsUG9zID0gewotICAgICAgICB4OiBNYXRoLnJvdW5kKHBvcy54ICsgcmFkaXVzLndpZHRoIC8gMiksCi0gICAgICAgIHk6IE1hdGgucm91bmQocG9zLnkgKyByYWRpdXMuaGVpZ2h0IC8gMikKLSAgICAgIH07Ci0gICAgICB0YWcuc2V0QXR0cmlidXRlKCd4JywgbGFiZWxQb3MueCk7Ci0gICAgICB0YWcuc2V0QXR0cmlidXRlKCd5JywgbGFiZWxQb3MueSk7Ci0KLSAgICAgIHZhciBiYiA9IHRhZy5nZXRCQm94KCk7Ci0gICAgICBpZiAoYmIpIHsKLSAgICAgICAgLy8gY2VudGVyIHRoZSBsYWJlbAotICAgIHZhciB4ID0gdGFnLmdldEF0dHJpYnV0ZSgneCcpOwotICAgIHZhciB5ID0gdGFnLmdldEF0dHJpYnV0ZSgneScpOwotICAgIC8vIGdldCBwb2xhciBjb29yZGluYXRlcwotICAgIHZhciBwID0gbm9kZS5wb3MuZ2V0cCh0cnVlKTsKLSAgICAvLyBnZXQgYW5nbGUgaW4gZGVncmVlcwotICAgIHZhciBwaSA9IE1hdGguUEk7Ci0gICAgdmFyIGNvbmQgPSAocC50aGV0YSA+IHBpIC8gMiAmJiBwLnRoZXRhIDwgMyAqIHBpIC8gMik7Ci0gICAgaWYgKGNvbmQpIHsKLSAgICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ3gnLCB4IC0gYmIud2lkdGgpOwotICAgICAgdGFnLnNldEF0dHJpYnV0ZSgneScsIHkgLSBiYi5oZWlnaHQpOwotICAgIH0gZWxzZSBpZiAobm9kZS5pZCA9PSB2aXoucm9vdCkgewotICAgICAgdGFnLnNldEF0dHJpYnV0ZSgneCcsIHggLSBiYi53aWR0aCAvIDIpOwotICAgIH0KLQotICAgIHZhciB0aGV0YXAgPSBjb25kID8gcC50aGV0YSArIHBpIDogcC50aGV0YTsKLSAgICBpZihub2RlLl9kZXB0aCkKLSAgICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsICdyb3RhdGUoJyArIHRoZXRhcCAqIDM2MCAvICgyICogcGkpICsgJyAnICsgeAotICAgICAgICAgICsgJyAnICsgeSArICcpJyk7Ci0gIH0KLQotICBjb250cm9sbGVyLm9uUGxhY2VMYWJlbCh0YWcsIG5vZGUpOwotfQotICB9KTsKLQotICAvKgotICAgICBTdW5idXJzdC5MYWJlbC5IVE1MCi0KLSAgICAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguTGFiZWwuSFRNTD4uCi0KLSAgICAgRXh0ZW5kczoKLQotICAgICBBbGwgPEdyYXBoLkxhYmVsLkhUTUw+IG1ldGhvZHMuCi0KLSAgICAgU2VlIGFsc286Ci0KLSAgICAgPEdyYXBoLkxhYmVsLkhUTUw+Ci0KLSAgKi8KLSAgU3VuYnVyc3QuTGFiZWwuSFRNTCA9IG5ldyBDbGFzcyggewotICAgIEltcGxlbWVudHM6IEdyYXBoLkxhYmVsLkhUTUwsCi0KLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopIHsKLSAgICAgIHRoaXMudml6ID0gdml6OwotICAgIH0sCi0gICAgLyogCi0gICAgICAgcGxhY2VMYWJlbAotCi0gICAgICAgT3ZlcnJpZGVzIGFic3RyYWN0IG1ldGhvZCBwbGFjZUxhYmVsIGluIDxHcmFwaC5QbG90Pi4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICB0YWcgLSBBIERPTSBsYWJlbCBlbGVtZW50LgotICAgICAgIG5vZGUgLSBBIDxHcmFwaC5Ob2RlPi4KLSAgICAgICBjb250cm9sbGVyIC0gQSBjb25maWd1cmF0aW9uL2NvbnRyb2xsZXIgb2JqZWN0IHBhc3NlZCB0byB0aGUgdmlzdWFsaXphdGlvbi4KLSAgICAgIAotICAgICAqLwotICAgIHBsYWNlTGFiZWw6IGZ1bmN0aW9uKHRhZywgbm9kZSwgY29udHJvbGxlcikgewotICAgICAgdmFyIHBvcyA9IG5vZGUucG9zLmNsb25lKCksIAotICAgICAgICAgIGNhbnZhcyA9IHRoaXMudml6LmNhbnZhcywKLSAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICAgIGxkaXN0ID0gKChoZWlnaHQgfHwgbm9kZS5fZGVwdGggPT0gMCk/IGhlaWdodCA6IHRoaXMudml6LmNvbmZpZy5sZXZlbERpc3RhbmNlKSAvMiwKLSAgICAgICAgICByYWRpdXMgPSBjYW52YXMuZ2V0U2l6ZSgpOwotICAgICAgcG9zLnJobyArPSBsZGlzdDsKLSAgICAgIHBvcyA9IHBvcy5nZXRjKHRydWUpOwotICAgICAgCi0gICAgICB2YXIgbGFiZWxQb3MgPSB7Ci0gICAgICAgIHg6IE1hdGgucm91bmQocG9zLnggKyByYWRpdXMud2lkdGggLyAyKSwKLSAgICAgICAgeTogTWF0aC5yb3VuZChwb3MueSArIHJhZGl1cy5oZWlnaHQgLyAyKQotICAgICAgfTsKLQotICAgICAgdmFyIHN0eWxlID0gdGFnLnN0eWxlOwotICAgICAgc3R5bGUubGVmdCA9IGxhYmVsUG9zLnggKyAncHgnOwotICAgICAgc3R5bGUudG9wID0gbGFiZWxQb3MueSArICdweCc7Ci0gICAgICBzdHlsZS5kaXNwbGF5ID0gdGhpcy5maXRzSW5DYW52YXMobGFiZWxQb3MsIGNhbnZhcykgPyAnJyA6ICdub25lJzsKLQotICAgICAgY29udHJvbGxlci5vblBsYWNlTGFiZWwodGFnLCBub2RlKTsKLSAgICB9Ci0gIH0pOwotCi0gIC8qCi0gICAgQ2xhc3M6IFN1bmJ1cnN0LlBsb3QuTm9kZVR5cGVzCi0KLSAgICBUaGlzIGNsYXNzIGNvbnRhaW5zIGEgbGlzdCBvZiA8R3JhcGguTm9kZT4gYnVpbHQtaW4gdHlwZXMuIAotICAgIE5vZGUgdHlwZXMgaW1wbGVtZW50ZWQgYXJlICdub25lJywgJ3BpZScsICdtdWx0aXBpZScsICdncmFkaWVudC1waWUnIGFuZCAnZ3JhZGllbnQtbXVsdGlwaWUnLgotCi0gICAgWW91IGNhbiBhZGQgeW91ciBjdXN0b20gbm9kZSB0eXBlcywgY3VzdG9taXppbmcgeW91ciB2aXN1YWxpemF0aW9uIHRvIHRoZSBleHRyZW1lLgotCi0gICAgRXhhbXBsZToKLQotICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgU3VuYnVyc3QuUGxvdC5Ob2RlVHlwZXMuaW1wbGVtZW50KHsKLSAgICAgICAgJ215U3BlY2lhbFR5cGUnOiB7Ci0gICAgICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICAgICAgLy9wcmludCB5b3VyIGN1c3RvbSBub2RlIHRvIGNhbnZhcwotICAgICAgICAgIH0sCi0gICAgICAgICAgLy9vcHRpb25hbAotICAgICAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgICAgICAgLy9yZXR1cm4gdHJ1ZSBpZiBwb3MgaXMgaW5zaWRlIHRoZSBub2RlIG9yIGZhbHNlIG90aGVyd2lzZQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgKGVuZCBjb2RlKQotCi0gICovCi0gIFN1bmJ1cnN0LlBsb3QuTm9kZVR5cGVzID0gbmV3IENsYXNzKCB7Ci0gICAgJ25vbmUnOiB7Ci0gICAgICAncmVuZGVyJzogJC5lbXB0eSwKLSAgICAgICdjb250YWlucyc6ICQubGFtYmRhKGZhbHNlKSwKLSAgICAgICdhbmdsZWNvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgIHZhciBzcGFuID0gbm9kZS5nZXREYXRhKCdzcGFuJykgLyAyLCB0aGV0YSA9IG5vZGUucG9zLnRoZXRhOwotICAgICAgICB2YXIgYmVnaW4gPSB0aGV0YSAtIHNwYW4sIGVuZCA9IHRoZXRhICsgc3BhbjsKLSAgICAgICAgaWYgKGJlZ2luIDwgMCkKLSAgICAgICAgICBiZWdpbiArPSBNYXRoLlBJICogMjsKLSAgICAgICAgdmFyIGF0YW4gPSBNYXRoLmF0YW4yKHBvcy55LCBwb3MueCk7Ci0gICAgICAgIGlmIChhdGFuIDwgMCkKLSAgICAgICAgICBhdGFuICs9IE1hdGguUEkgKiAyOwotICAgICAgICBpZiAoYmVnaW4gPiBlbmQpIHsKLSAgICAgICAgICByZXR1cm4gKGF0YW4gPiBiZWdpbiAmJiBhdGFuIDw9IE1hdGguUEkgKiAyKSB8fCBhdGFuIDwgZW5kOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHJldHVybiBhdGFuID4gYmVnaW4gJiYgYXRhbiA8IGVuZDsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0sCi0KLSAgICAncGllJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICB2YXIgc3BhbiA9IG5vZGUuZ2V0RGF0YSgnc3BhbicpIC8gMiwgdGhldGEgPSBub2RlLnBvcy50aGV0YTsKLSAgICAgICAgdmFyIGJlZ2luID0gdGhldGEgLSBzcGFuLCBlbmQgPSB0aGV0YSArIHNwYW47Ci0gICAgICAgIHZhciBwb2xhck5vZGUgPSBub2RlLnBvcy5nZXRwKHRydWUpOwotICAgICAgICB2YXIgcG9sYXIgPSBuZXcgUG9sYXIocG9sYXJOb2RlLnJobywgYmVnaW4pOwotICAgICAgICB2YXIgcDFjb29yZCA9IHBvbGFyLmdldGModHJ1ZSk7Ci0gICAgICAgIHBvbGFyLnRoZXRhID0gZW5kOwotICAgICAgICB2YXIgcDJjb29yZCA9IHBvbGFyLmdldGModHJ1ZSk7Ci0KLSAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDdHgoKTsKLSAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICBjdHgubW92ZVRvKDAsIDApOwotICAgICAgICBjdHgubGluZVRvKHAxY29vcmQueCwgcDFjb29yZC55KTsKLSAgICAgICAgY3R4Lm1vdmVUbygwLCAwKTsKLSAgICAgICAgY3R4LmxpbmVUbyhwMmNvb3JkLngsIHAyY29vcmQueSk7Ci0gICAgICAgIGN0eC5tb3ZlVG8oMCwgMCk7Ci0gICAgICAgIGN0eC5hcmMoMCwgMCwgcG9sYXJOb2RlLnJobyAqIG5vZGUuZ2V0RGF0YSgnZGltLXF1b3RpZW50JyksIGJlZ2luLCBlbmQsCi0gICAgICAgICAgICBmYWxzZSk7Ci0gICAgICAgIGN0eC5maWxsKCk7Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgIGlmICh0aGlzLm5vZGVUeXBlc1snbm9uZSddLmFuZ2xlY29udGFpbnMuY2FsbCh0aGlzLCBub2RlLCBwb3MpKSB7Ci0gICAgICAgICAgdmFyIHJobyA9IE1hdGguc3FydChwb3MueCAqIHBvcy54ICsgcG9zLnkgKiBwb3MueSk7Ci0gICAgICAgICAgdmFyIGxkID0gdGhpcy5jb25maWcubGV2ZWxEaXN0YW5jZSwgZCA9IG5vZGUuX2RlcHRoOwotICAgICAgICAgIHJldHVybiAocmhvIDw9IGxkICogZCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0sCi0gICAgJ211bHRpcGllJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICB2YXIgaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKTsKLSAgICAgICAgdmFyIGxkaXN0ID0gaGVpZ2h0PyBoZWlnaHQgOiB0aGlzLmNvbmZpZy5sZXZlbERpc3RhbmNlOwotICAgICAgICB2YXIgc3BhbiA9IG5vZGUuZ2V0RGF0YSgnc3BhbicpIC8gMiwgdGhldGEgPSBub2RlLnBvcy50aGV0YTsKLSAgICAgICAgdmFyIGJlZ2luID0gdGhldGEgLSBzcGFuLCBlbmQgPSB0aGV0YSArIHNwYW47Ci0gICAgICAgIHZhciBwb2xhck5vZGUgPSBub2RlLnBvcy5nZXRwKHRydWUpOwotCi0gICAgICAgIHZhciBwb2xhciA9IG5ldyBQb2xhcihwb2xhck5vZGUucmhvLCBiZWdpbik7Ci0gICAgICAgIHZhciBwMWNvb3JkID0gcG9sYXIuZ2V0Yyh0cnVlKTsKLQotICAgICAgICBwb2xhci50aGV0YSA9IGVuZDsKLSAgICAgICAgdmFyIHAyY29vcmQgPSBwb2xhci5nZXRjKHRydWUpOwotCi0gICAgICAgIHBvbGFyLnJobyArPSBsZGlzdDsKLSAgICAgICAgdmFyIHAzY29vcmQgPSBwb2xhci5nZXRjKHRydWUpOwotCi0gICAgICAgIHBvbGFyLnRoZXRhID0gYmVnaW47Ci0gICAgICAgIHZhciBwNGNvb3JkID0gcG9sYXIuZ2V0Yyh0cnVlKTsKLQotICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldEN0eCgpOwotICAgICAgICBjdHgubW92ZVRvKDAsIDApOwotICAgICAgICBjdHguYmVnaW5QYXRoKCk7Ci0gICAgICAgIGN0eC5hcmMoMCwgMCwgcG9sYXJOb2RlLnJobywgYmVnaW4sIGVuZCwgZmFsc2UpOwotICAgICAgICBjdHguYXJjKDAsIDAsIHBvbGFyTm9kZS5yaG8gKyBsZGlzdCwgZW5kLCBiZWdpbiwgdHJ1ZSk7Ci0gICAgICAgIGN0eC5tb3ZlVG8ocDFjb29yZC54LCBwMWNvb3JkLnkpOwotICAgICAgICBjdHgubGluZVRvKHA0Y29vcmQueCwgcDRjb29yZC55KTsKLSAgICAgICAgY3R4Lm1vdmVUbyhwMmNvb3JkLngsIHAyY29vcmQueSk7Ci0gICAgICAgIGN0eC5saW5lVG8ocDNjb29yZC54LCBwM2Nvb3JkLnkpOwotICAgICAgICBjdHguZmlsbCgpOwotCi0gICAgICAgIGlmIChub2RlLmNvbGxhcHNlZCkgewotICAgICAgICAgIGN0eC5zYXZlKCk7Ci0gICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDI7Ci0gICAgICAgICAgY3R4Lm1vdmVUbygwLCAwKTsKLSAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7Ci0gICAgICAgICAgY3R4LmFyYygwLCAwLCBwb2xhck5vZGUucmhvICsgbGRpc3QgKyA1LCBlbmQgLSAwLjAxLCBiZWdpbiArIDAuMDEsCi0gICAgICAgICAgICAgIHRydWUpOwotICAgICAgICAgIGN0eC5zdHJva2UoKTsKLSAgICAgICAgICBjdHgucmVzdG9yZSgpOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgIGlmICh0aGlzLm5vZGVUeXBlc1snbm9uZSddLmFuZ2xlY29udGFpbnMuY2FsbCh0aGlzLCBub2RlLCBwb3MpKSB7Ci0gICAgICAgICAgdmFyIHJobyA9IE1hdGguc3FydChwb3MueCAqIHBvcy54ICsgcG9zLnkgKiBwb3MueSk7Ci0gICAgICAgICAgdmFyIGhlaWdodCA9IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0Jyk7Ci0gICAgICAgICAgdmFyIGxkaXN0ID0gaGVpZ2h0PyBoZWlnaHQgOiB0aGlzLmNvbmZpZy5sZXZlbERpc3RhbmNlOwotICAgICAgICAgIHZhciBsZCA9IHRoaXMuY29uZmlnLmxldmVsRGlzdGFuY2UsIGQgPSBub2RlLl9kZXB0aDsKLSAgICAgICAgICByZXR1cm4gKHJobyA+PSBsZCAqIGQpICYmIChyaG8gPD0gKGxkICogZCArIGxkaXN0KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0sCi0KLSAgICAnZ3JhZGllbnQtbXVsdGlwaWUnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKSB7Ci0gICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q3R4KCk7Ci0gICAgICAgIHZhciBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpOwotICAgICAgICB2YXIgbGRpc3QgPSBoZWlnaHQ/IGhlaWdodCA6IHRoaXMuY29uZmlnLmxldmVsRGlzdGFuY2U7Ci0gICAgICAgIHZhciByYWRpYWxHcmFkaWVudCA9IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCBub2RlLmdldFBvcygpLnJobywKLSAgICAgICAgICAgIDAsIDAsIG5vZGUuZ2V0UG9zKCkucmhvICsgbGRpc3QpOwotCi0gICAgICAgIHZhciBjb2xvckFycmF5ID0gJC5oZXhUb1JnYihub2RlLmdldERhdGEoJ2NvbG9yJykpLCBhbnMgPSBbXTsKLSAgICAgICAgJC5lYWNoKGNvbG9yQXJyYXksIGZ1bmN0aW9uKGkpIHsKLSAgICAgICAgICBhbnMucHVzaChwYXJzZUludChpICogMC41LCAxMCkpOwotICAgICAgICB9KTsKLSAgICAgICAgdmFyIGVuZENvbG9yID0gJC5yZ2JUb0hleChhbnMpOwotICAgICAgICByYWRpYWxHcmFkaWVudC5hZGRDb2xvclN0b3AoMCwgZW5kQ29sb3IpOwotICAgICAgICByYWRpYWxHcmFkaWVudC5hZGRDb2xvclN0b3AoMSwgbm9kZS5nZXREYXRhKCdjb2xvcicpKTsKLSAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHJhZGlhbEdyYWRpZW50OwotICAgICAgICB0aGlzLm5vZGVUeXBlc1snbXVsdGlwaWUnXS5yZW5kZXIuY2FsbCh0aGlzLCBub2RlLCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgICByZXR1cm4gdGhpcy5ub2RlVHlwZXNbJ211bHRpcGllJ10uY29udGFpbnMuY2FsbCh0aGlzLCBub2RlLCBwb3MpOwotICAgICAgfQotICAgIH0sCi0KLSAgICAnZ3JhZGllbnQtcGllJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldEN0eCgpOwotICAgICAgICB2YXIgcmFkaWFsR3JhZGllbnQgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMCwgMCwgMCwgbm9kZQotICAgICAgICAgICAgLmdldFBvcygpLnJobyk7Ci0KLSAgICAgICAgdmFyIGNvbG9yQXJyYXkgPSAkLmhleFRvUmdiKG5vZGUuZ2V0RGF0YSgnY29sb3InKSksIGFucyA9IFtdOwotICAgICAgICAkLmVhY2goY29sb3JBcnJheSwgZnVuY3Rpb24oaSkgewotICAgICAgICAgIGFucy5wdXNoKHBhcnNlSW50KGkgKiAwLjUsIDEwKSk7Ci0gICAgICAgIH0pOwotICAgICAgICB2YXIgZW5kQ29sb3IgPSAkLnJnYlRvSGV4KGFucyk7Ci0gICAgICAgIHJhZGlhbEdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBlbmRDb2xvcik7Ci0gICAgICAgIHJhZGlhbEdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBub2RlLmdldERhdGEoJ2NvbG9yJykpOwotICAgICAgICBjdHguZmlsbFN0eWxlID0gcmFkaWFsR3JhZGllbnQ7Ci0gICAgICAgIHRoaXMubm9kZVR5cGVzWydwaWUnXS5yZW5kZXIuY2FsbCh0aGlzLCBub2RlLCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgICByZXR1cm4gdGhpcy5ub2RlVHlwZXNbJ3BpZSddLmNvbnRhaW5zLmNhbGwodGhpcywgbm9kZSwgcG9zKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0pOwotCi0gIC8qCi0gICAgQ2xhc3M6IFN1bmJ1cnN0LlBsb3QuRWRnZVR5cGVzCi0KLSAgICBUaGlzIGNsYXNzIGNvbnRhaW5zIGEgbGlzdCBvZiA8R3JhcGguQWRqYWNlbmNlPiBidWlsdC1pbiB0eXBlcy4gCi0gICAgRWRnZSB0eXBlcyBpbXBsZW1lbnRlZCBhcmUgJ25vbmUnLCAnbGluZScgYW5kICdhcnJvdycuCi0gIAotICAgIFlvdSBjYW4gYWRkIHlvdXIgY3VzdG9tIGVkZ2UgdHlwZXMsIGN1c3RvbWl6aW5nIHlvdXIgdmlzdWFsaXphdGlvbiB0byB0aGUgZXh0cmVtZS4KLSAgCi0gICAgRXhhbXBsZToKLSAgCi0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICBTdW5idXJzdC5QbG90LkVkZ2VUeXBlcy5pbXBsZW1lbnQoewotICAgICAgICAnbXlTcGVjaWFsVHlwZSc6IHsKLSAgICAgICAgICAncmVuZGVyJzogZnVuY3Rpb24oYWRqLCBjYW52YXMpIHsKLSAgICAgICAgICAgIC8vcHJpbnQgeW91ciBjdXN0b20gZWRnZSB0byBjYW52YXMKLSAgICAgICAgICB9LAotICAgICAgICAgIC8vb3B0aW9uYWwKLSAgICAgICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihhZGosIHBvcykgewotICAgICAgICAgICAgLy9yZXR1cm4gdHJ1ZSBpZiBwb3MgaXMgaW5zaWRlIHRoZSBhcmMgb3IgZmFsc2Ugb3RoZXJ3aXNlCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICAoZW5kIGNvZGUpCi0gIAotICAqLwotICBTdW5idXJzdC5QbG90LkVkZ2VUeXBlcyA9IG5ldyBDbGFzcyh7Ci0gICAgJ25vbmUnOiAkLmVtcHR5LAotICAgICdsaW5lJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKGFkaiwgY2FudmFzKSB7Ci0gICAgICAgIHZhciBmcm9tID0gYWRqLm5vZGVGcm9tLnBvcy5nZXRjKHRydWUpLAotICAgICAgICAgICAgdG8gPSBhZGoubm9kZVRvLnBvcy5nZXRjKHRydWUpOwotICAgICAgICB0aGlzLmVkZ2VIZWxwZXIubGluZS5yZW5kZXIoZnJvbSwgdG8sIGNhbnZhcyk7Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24oYWRqLCBwb3MpIHsKLSAgICAgICAgdmFyIGZyb20gPSBhZGoubm9kZUZyb20ucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICB0byA9IGFkai5ub2RlVG8ucG9zLmdldGModHJ1ZSk7Ci0gICAgICAgIHJldHVybiB0aGlzLmVkZ2VIZWxwZXIubGluZS5jb250YWlucyhmcm9tLCB0bywgcG9zLCB0aGlzLmVkZ2UuZXBzaWxvbik7Ci0gICAgICB9Ci0gICAgfSwKLSAgICAnYXJyb3cnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24oYWRqLCBjYW52YXMpIHsKLSAgICAgICAgdmFyIGZyb20gPSBhZGoubm9kZUZyb20ucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICB0byA9IGFkai5ub2RlVG8ucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICBkaW0gPSBhZGouZ2V0RGF0YSgnZGltJyksCi0gICAgICAgICAgICBkaXJlY3Rpb24gPSBhZGouZGF0YS4kZGlyZWN0aW9uLAotICAgICAgICAgICAgaW52ID0gKGRpcmVjdGlvbiAmJiBkaXJlY3Rpb24ubGVuZ3RoPjEgJiYgZGlyZWN0aW9uWzBdICE9IGFkai5ub2RlRnJvbS5pZCk7Ci0gICAgICAgIHRoaXMuZWRnZUhlbHBlci5hcnJvdy5yZW5kZXIoZnJvbSwgdG8sIGRpbSwgaW52LCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKGFkaiwgcG9zKSB7Ci0gICAgICAgIHZhciBmcm9tID0gYWRqLm5vZGVGcm9tLnBvcy5nZXRjKHRydWUpLAotICAgICAgICAgICAgdG8gPSBhZGoubm9kZVRvLnBvcy5nZXRjKHRydWUpOwotICAgICAgICByZXR1cm4gdGhpcy5lZGdlSGVscGVyLmFycm93LmNvbnRhaW5zKGZyb20sIHRvLCBwb3MsIHRoaXMuZWRnZS5lcHNpbG9uKTsKLSAgICAgIH0KLSAgICB9LAotICAgICdoeXBlcmxpbmUnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24oYWRqLCBjYW52YXMpIHsKLSAgICAgICAgdmFyIGZyb20gPSBhZGoubm9kZUZyb20ucG9zLmdldGMoKSwKLSAgICAgICAgICAgIHRvID0gYWRqLm5vZGVUby5wb3MuZ2V0YygpLAotICAgICAgICAgICAgZGltID0gTWF0aC5tYXgoZnJvbS5ub3JtKCksIHRvLm5vcm0oKSk7Ci0gICAgICAgIHRoaXMuZWRnZUhlbHBlci5oeXBlcmxpbmUucmVuZGVyKGZyb20uJHNjYWxlKDEvZGltKSwgdG8uJHNjYWxlKDEvZGltKSwgZGltLCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6ICQubGFtYmRhKGZhbHNlKSAvL1RPRE8obmljbyk6IEltcGxlbWVudCB0aGlzIQotICAgIH0KLSAgfSk7Ci0KLX0pKCRqaXQuU3VuYnVyc3QpOwotCi0KLS8qCi0gKiBGaWxlOiBQaWVDaGFydC5qcwotICoKLSovCi0KLSRqaXQuU3VuYnVyc3QuUGxvdC5Ob2RlVHlwZXMuaW1wbGVtZW50KHsKLSAgJ3BpZWNoYXJ0LXN0YWNrZWQnIDogewotICAgICdyZW5kZXInIDogZnVuY3Rpb24obm9kZSwgY2FudmFzKSB7Ci0gICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0cCh0cnVlKSwKLSAgICAgICAgICBkaW1BcnJheSA9IG5vZGUuZ2V0RGF0YSgnZGltQXJyYXknKSwKLSAgICAgICAgICB2YWx1ZUFycmF5ID0gbm9kZS5nZXREYXRhKCd2YWx1ZUFycmF5JyksCi0gICAgICAgICAgY29sb3JBcnJheSA9IG5vZGUuZ2V0RGF0YSgnY29sb3JBcnJheScpLAotICAgICAgICAgIGNvbG9yTGVuZ3RoID0gY29sb3JBcnJheS5sZW5ndGgsCi0gICAgICAgICAgc3RyaW5nQXJyYXkgPSBub2RlLmdldERhdGEoJ3N0cmluZ0FycmF5JyksCi0gICAgICAgICAgc3BhbiA9IG5vZGUuZ2V0RGF0YSgnc3BhbicpIC8gMiwKLSAgICAgICAgICB0aGV0YSA9IG5vZGUucG9zLnRoZXRhLAotICAgICAgICAgIGJlZ2luID0gdGhldGEgLSBzcGFuLAotICAgICAgICAgIGVuZCA9IHRoZXRhICsgc3BhbiwKLSAgICAgICAgICBwb2xhciA9IG5ldyBQb2xhcjsKLSAgICAKLSAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q3R4KCksIAotICAgICAgICAgIG9wdCA9IHt9LAotICAgICAgICAgIGdyYWRpZW50ID0gbm9kZS5nZXREYXRhKCdncmFkaWVudCcpLAotICAgICAgICAgIGJvcmRlciA9IG5vZGUuZ2V0RGF0YSgnYm9yZGVyJyksCi0gICAgICAgICAgY29uZmlnID0gbm9kZS5nZXREYXRhKCdjb25maWcnKSwKLSAgICAgICAgICBzaG93TGFiZWxzID0gY29uZmlnLnNob3dMYWJlbHMsCi0gICAgICAgICAgcmVzaXplTGFiZWxzID0gY29uZmlnLnJlc2l6ZUxhYmVscywKLSAgICAgICAgICBsYWJlbCA9IGNvbmZpZy5MYWJlbDsKLQotICAgICAgdmFyIHhwb3MgPSBjb25maWcuc2xpY2VPZmZzZXQgKiBNYXRoLmNvcygoYmVnaW4gKyBlbmQpIC8yKTsKLSAgICAgIHZhciB5cG9zID0gY29uZmlnLnNsaWNlT2Zmc2V0ICogTWF0aC5zaW4oKGJlZ2luICsgZW5kKSAvMik7Ci0KLSAgICAgIGlmIChjb2xvckFycmF5ICYmIGRpbUFycmF5ICYmIHN0cmluZ0FycmF5KSB7Ci0gICAgICAgIGZvciAodmFyIGk9MCwgbD1kaW1BcnJheS5sZW5ndGgsIGFjdW09MCwgdmFsQWN1bT0wOyBpPGw7IGkrKykgewotICAgICAgICAgIHZhciBkaW1pID0gZGltQXJyYXlbaV0sIGNvbG9yaSA9IGNvbG9yQXJyYXlbaSAlIGNvbG9yTGVuZ3RoXTsKLSAgICAgICAgICBpZihkaW1pIDw9IDApIGNvbnRpbnVlOwotICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBjdHguc3Ryb2tlU3R5bGUgPSBjb2xvcmk7Ci0gICAgICAgICAgaWYoZ3JhZGllbnQgJiYgZGltaSkgewotICAgICAgICAgICAgdmFyIHJhZGlhbEdyYWRpZW50ID0gY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KHhwb3MsIHlwb3MsIGFjdW0gKyBjb25maWcuc2xpY2VPZmZzZXQsCi0gICAgICAgICAgICAgICAgeHBvcywgeXBvcywgYWN1bSArIGRpbWkgKyBjb25maWcuc2xpY2VPZmZzZXQpOwotICAgICAgICAgICAgdmFyIGNvbG9yUmdiID0gJC5oZXhUb1JnYihjb2xvcmkpLCAKLSAgICAgICAgICAgICAgICBhbnMgPSAkLm1hcChjb2xvclJnYiwgZnVuY3Rpb24oaSkgeyByZXR1cm4gKGkgKiAwLjgpID4+IDA7IH0pLAotICAgICAgICAgICAgICAgIGVuZENvbG9yID0gJC5yZ2JUb0hleChhbnMpOwotCi0gICAgICAgICAgICByYWRpYWxHcmFkaWVudC5hZGRDb2xvclN0b3AoMCwgY29sb3JpKTsKLSAgICAgICAgICAgIHJhZGlhbEdyYWRpZW50LmFkZENvbG9yU3RvcCgwLjUsIGNvbG9yaSk7Ci0gICAgICAgICAgICByYWRpYWxHcmFkaWVudC5hZGRDb2xvclN0b3AoMSwgZW5kQ29sb3IpOwotICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHJhZGlhbEdyYWRpZW50OwotICAgICAgICAgIH0KLSAgICAgICAgICAKLSAgICAgICAgICBwb2xhci5yaG8gPSBhY3VtICsgY29uZmlnLnNsaWNlT2Zmc2V0OwotICAgICAgICAgIHBvbGFyLnRoZXRhID0gYmVnaW47Ci0gICAgICAgICAgdmFyIHAxY29vcmQgPSBwb2xhci5nZXRjKHRydWUpOwotICAgICAgICAgIHBvbGFyLnRoZXRhID0gZW5kOwotICAgICAgICAgIHZhciBwMmNvb3JkID0gcG9sYXIuZ2V0Yyh0cnVlKTsKLSAgICAgICAgICBwb2xhci5yaG8gKz0gZGltaTsKLSAgICAgICAgICB2YXIgcDNjb29yZCA9IHBvbGFyLmdldGModHJ1ZSk7Ci0gICAgICAgICAgcG9sYXIudGhldGEgPSBiZWdpbjsKLSAgICAgICAgICB2YXIgcDRjb29yZCA9IHBvbGFyLmdldGModHJ1ZSk7Ci0KLSAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7Ci0gICAgICAgICAgLy9maXhpbmcgRkYgYXJjIG1ldGhvZCArIGZpbGwKLSAgICAgICAgICBjdHguYXJjKHhwb3MsIHlwb3MsIGFjdW0gKyAuMDEsIGJlZ2luLCBlbmQsIGZhbHNlKTsKLSAgICAgICAgICBjdHguYXJjKHhwb3MsIHlwb3MsIGFjdW0gKyBkaW1pICsgLjAxLCBlbmQsIGJlZ2luLCB0cnVlKTsKLSAgICAgICAgICBjdHguZmlsbCgpOwotICAgICAgICAgIGlmKGJvcmRlciAmJiBib3JkZXIubmFtZSA9PSBzdHJpbmdBcnJheVtpXSkgewotICAgICAgICAgICAgb3B0LmFjdW0gPSBhY3VtOwotICAgICAgICAgICAgb3B0LmRpbVZhbHVlID0gZGltQXJyYXlbaV07Ci0gICAgICAgICAgICBvcHQuYmVnaW4gPSBiZWdpbjsKLSAgICAgICAgICAgIG9wdC5lbmQgPSBlbmQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIGFjdW0gKz0gKGRpbWkgfHwgMCk7Ci0gICAgICAgICAgdmFsQWN1bSArPSAodmFsdWVBcnJheVtpXSB8fCAwKTsKLSAgICAgICAgfQotICAgICAgICBpZihib3JkZXIpIHsKLSAgICAgICAgICBjdHguc2F2ZSgpOwotICAgICAgICAgIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAic291cmNlLW92ZXIiOwotICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAyOwotICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGJvcmRlci5jb2xvcjsKLSAgICAgICAgICB2YXIgcyA9IGJlZ2luIDwgZW5kPyAxIDogLTE7Ci0gICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICAgIC8vZml4aW5nIEZGIGFyYyBtZXRob2QgKyBmaWxsCi0gICAgICAgICAgY3R4LmFyYyh4cG9zLCB5cG9zLCBvcHQuYWN1bSArIC4wMSArIDEsIG9wdC5iZWdpbiwgb3B0LmVuZCwgZmFsc2UpOwotICAgICAgICAgIGN0eC5hcmMoeHBvcywgeXBvcywgb3B0LmFjdW0gKyBvcHQuZGltVmFsdWUgKyAuMDEgLSAxLCBvcHQuZW5kLCBvcHQuYmVnaW4sIHRydWUpOwotICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKLSAgICAgICAgICBjdHguc3Ryb2tlKCk7Ci0gICAgICAgICAgY3R4LnJlc3RvcmUoKTsKLSAgICAgICAgfQotICAgICAgICBpZihzaG93TGFiZWxzICYmIGxhYmVsLnR5cGUgPT0gJ05hdGl2ZScpIHsKLSAgICAgICAgICBjdHguc2F2ZSgpOwotICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBjdHguc3Ryb2tlU3R5bGUgPSBsYWJlbC5jb2xvcjsKLSAgICAgICAgICB2YXIgc2NhbGUgPSByZXNpemVMYWJlbHM/IG5vZGUuZ2V0RGF0YSgnbm9ybWFsaXplZERpbScpIDogMSwKLSAgICAgICAgICAgICAgZm9udFNpemUgPSAobGFiZWwuc2l6ZSAqIHNjYWxlKSA+PiAwOwotICAgICAgICAgIGZvbnRTaXplID0gZm9udFNpemUgPCArcmVzaXplTGFiZWxzPyArcmVzaXplTGFiZWxzIDogZm9udFNpemU7Ci0gICAgICAgICAgCi0gICAgICAgICAgY3R4LmZvbnQgPSBsYWJlbC5zdHlsZSArICcgJyArIGZvbnRTaXplICsgJ3B4ICcgKyBsYWJlbC5mYW1pbHk7Ci0gICAgICAgICAgY3R4LnRleHRCYXNlbGluZSA9ICdtaWRkbGUnOwotICAgICAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJzsKLSAgICAgICAgICAKLSAgICAgICAgICBwb2xhci5yaG8gPSBhY3VtICsgY29uZmlnLmxhYmVsT2Zmc2V0ICsgY29uZmlnLnNsaWNlT2Zmc2V0OwotICAgICAgICAgIHBvbGFyLnRoZXRhID0gbm9kZS5wb3MudGhldGE7Ci0gICAgICAgICAgdmFyIGNhcnQgPSBwb2xhci5nZXRjKHRydWUpOwotICAgICAgICAgIAotICAgICAgICAgIGN0eC5maWxsVGV4dChub2RlLm5hbWUsIGNhcnQueCwgY2FydC55KTsKLSAgICAgICAgICBjdHgucmVzdG9yZSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwKLSAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBwb3MpIHsKLSAgICAgIGlmICh0aGlzLm5vZGVUeXBlc1snbm9uZSddLmFuZ2xlY29udGFpbnMuY2FsbCh0aGlzLCBub2RlLCBwb3MpKSB7Ci0gICAgICAgIHZhciByaG8gPSBNYXRoLnNxcnQocG9zLnggKiBwb3MueCArIHBvcy55ICogcG9zLnkpOwotICAgICAgICB2YXIgbGQgPSB0aGlzLmNvbmZpZy5sZXZlbERpc3RhbmNlLCBkID0gbm9kZS5fZGVwdGg7Ci0gICAgICAgIHZhciBjb25maWcgPSBub2RlLmdldERhdGEoJ2NvbmZpZycpOwotICAgICAgICBpZihyaG8gPD1sZCAqIGQgKyBjb25maWcuc2xpY2VPZmZzZXQpIHsKLSAgICAgICAgICB2YXIgZGltQXJyYXkgPSBub2RlLmdldERhdGEoJ2RpbUFycmF5Jyk7Ci0gICAgICAgICAgZm9yKHZhciBpPTAsbD1kaW1BcnJheS5sZW5ndGgsYWN1bT1jb25maWcuc2xpY2VPZmZzZXQ7IGk8bDsgaSsrKSB7Ci0gICAgICAgICAgICB2YXIgZGltaSA9IGRpbUFycmF5W2ldOwotICAgICAgICAgICAgaWYocmhvID49IGFjdW0gJiYgcmhvIDw9IGFjdW0gKyBkaW1pKSB7Ci0gICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgbmFtZTogbm9kZS5nZXREYXRhKCdzdHJpbmdBcnJheScpW2ldLAotICAgICAgICAgICAgICAgIGNvbG9yOiBub2RlLmdldERhdGEoJ2NvbG9yQXJyYXknKVtpXSwKLSAgICAgICAgICAgICAgICB2YWx1ZTogbm9kZS5nZXREYXRhKCd2YWx1ZUFycmF5JylbaV0sCi0gICAgICAgICAgICAgICAgbGFiZWw6IG5vZGUubmFtZQotICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYWN1bSArPSBkaW1pOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotfSk7Ci0KLS8qCi0gIENsYXNzOiBQaWVDaGFydAotICAKLSAgQSB2aXN1YWxpemF0aW9uIHRoYXQgZGlzcGxheXMgc3RhY2tlZCBiYXIgY2hhcnRzLgotICAKLSAgQ29uc3RydWN0b3IgT3B0aW9uczoKLSAgCi0gIFNlZSA8T3B0aW9ucy5QaWVDaGFydD4uCi0KLSovCi0kaml0LlBpZUNoYXJ0ID0gbmV3IENsYXNzKHsKLSAgc2I6IG51bGwsCi0gIGNvbG9yczogWyIjNDE2RDlDIiwgIiM3MEEzNUUiLCAiI0VCQjA1NiIsICIjQzc0MjQzIiwgIiM4MzU0OEIiLCAiIzkwOTI5MSIsICIjNTU3RUFBIl0sCi0gIHNlbGVjdGVkOiB7fSwKLSAgYnVzeTogZmFsc2UsCi0gIAotICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHQpIHsKLSAgICB0aGlzLmNvbnRyb2xsZXIgPSB0aGlzLmNvbmZpZyA9IAotICAgICAgJC5tZXJnZShPcHRpb25zKCJDYW52YXMiLCAiUGllQ2hhcnQiLCAiTGFiZWwiKSwgewotICAgICAgICBMYWJlbDogeyB0eXBlOiAnTmF0aXZlJyB9Ci0gICAgICB9LCBvcHQpOwotICAgIHRoaXMuaW5pdGlhbGl6ZVZpeigpOwotICB9LAotICAKLSAgaW5pdGlhbGl6ZVZpejogZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbmZpZyA9IHRoaXMuY29uZmlnLCB0aGF0ID0gdGhpczsKLSAgICB2YXIgbm9kZVR5cGUgPSBjb25maWcudHlwZS5zcGxpdCgiOiIpWzBdOwotICAgIHZhciBkZWxlZ2F0ZSA9IG5ldyAkaml0LlN1bmJ1cnN0KHsKLSAgICAgIGluamVjdEludG86IGNvbmZpZy5pbmplY3RJbnRvLAotICAgICAgd2lkdGg6IGNvbmZpZy53aWR0aCwKLSAgICAgIGhlaWdodDogY29uZmlnLmhlaWdodCwKLSAgICAgIHVzZUNhbnZhczogY29uZmlnLnVzZUNhbnZhcywKLSAgICAgIHdpdGhMYWJlbHM6IGNvbmZpZy5MYWJlbC50eXBlICE9ICdOYXRpdmUnLAotICAgICAgTGFiZWw6IHsKLSAgICAgICAgdHlwZTogY29uZmlnLkxhYmVsLnR5cGUKLSAgICAgIH0sCi0gICAgICBOb2RlOiB7Ci0gICAgICAgIG92ZXJyaWRhYmxlOiB0cnVlLAotICAgICAgICB0eXBlOiAncGllY2hhcnQtJyArIG5vZGVUeXBlLAotICAgICAgICB3aWR0aDogMSwKLSAgICAgICAgaGVpZ2h0OiAxCi0gICAgICB9LAotICAgICAgRWRnZTogewotICAgICAgICB0eXBlOiAnbm9uZScKLSAgICAgIH0sCi0gICAgICBUaXBzOiB7Ci0gICAgICAgIGVuYWJsZTogY29uZmlnLlRpcHMuZW5hYmxlLAotICAgICAgICB0eXBlOiAnTmF0aXZlJywKLSAgICAgICAgZm9yY2U6IHRydWUsCi0gICAgICAgIG9uU2hvdzogZnVuY3Rpb24odGlwLCBub2RlLCBjb250YWlucykgewotICAgICAgICAgIHZhciBlbGVtID0gY29udGFpbnM7Ci0gICAgICAgICAgY29uZmlnLlRpcHMub25TaG93KHRpcCwgZWxlbSwgbm9kZSk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0gICAgICBFdmVudHM6IHsKLSAgICAgICAgZW5hYmxlOiB0cnVlLAotICAgICAgICB0eXBlOiAnTmF0aXZlJywKLSAgICAgICAgb25DbGljazogZnVuY3Rpb24obm9kZSwgZXZlbnRJbmZvLCBldnQpIHsKLSAgICAgICAgICBpZighY29uZmlnLkV2ZW50cy5lbmFibGUpIHJldHVybjsKLSAgICAgICAgICB2YXIgZWxlbSA9IGV2ZW50SW5mby5nZXRDb250YWlucygpOwotICAgICAgICAgIGNvbmZpZy5FdmVudHMub25DbGljayhlbGVtLCBldmVudEluZm8sIGV2dCk7Ci0gICAgICAgIH0sCi0gICAgICAgIG9uTW91c2VNb3ZlOiBmdW5jdGlvbihub2RlLCBldmVudEluZm8sIGV2dCkgewotICAgICAgICAgIGlmKCFjb25maWcuaG92ZXJlZENvbG9yKSByZXR1cm47Ci0gICAgICAgICAgaWYobm9kZSkgewotICAgICAgICAgICAgdmFyIGVsZW0gPSBldmVudEluZm8uZ2V0Q29udGFpbnMoKTsKLSAgICAgICAgICAgIHRoYXQuc2VsZWN0KG5vZGUuaWQsIGVsZW0ubmFtZSwgZWxlbS5pbmRleCk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoYXQuc2VsZWN0KGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSwKLSAgICAgIG9uQ3JlYXRlTGFiZWw6IGZ1bmN0aW9uKGRvbUVsZW1lbnQsIG5vZGUpIHsKLSAgICAgICAgdmFyIGxhYmVsQ29uZiA9IGNvbmZpZy5MYWJlbDsKLSAgICAgICAgaWYoY29uZmlnLnNob3dMYWJlbHMpIHsKLSAgICAgICAgICB2YXIgc3R5bGUgPSBkb21FbGVtZW50LnN0eWxlOwotICAgICAgICAgIHN0eWxlLmZvbnRTaXplID0gbGFiZWxDb25mLnNpemUgKyAncHgnOwotICAgICAgICAgIHN0eWxlLmZvbnRGYW1pbHkgPSBsYWJlbENvbmYuZmFtaWx5OwotICAgICAgICAgIHN0eWxlLmNvbG9yID0gbGFiZWxDb25mLmNvbG9yOwotICAgICAgICAgIHN0eWxlLnRleHRBbGlnbiA9ICdjZW50ZXInOwotICAgICAgICAgIGRvbUVsZW1lbnQuaW5uZXJIVE1MID0gbm9kZS5uYW1lOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgb25QbGFjZUxhYmVsOiBmdW5jdGlvbihkb21FbGVtZW50LCBub2RlKSB7Ci0gICAgICAgIGlmKCFjb25maWcuc2hvd0xhYmVscykgcmV0dXJuOwotICAgICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0cCh0cnVlKSwKLSAgICAgICAgICAgIGRpbUFycmF5ID0gbm9kZS5nZXREYXRhKCdkaW1BcnJheScpLAotICAgICAgICAgICAgc3BhbiA9IG5vZGUuZ2V0RGF0YSgnc3BhbicpIC8gMiwKLSAgICAgICAgICAgIHRoZXRhID0gbm9kZS5wb3MudGhldGEsCi0gICAgICAgICAgICBiZWdpbiA9IHRoZXRhIC0gc3BhbiwKLSAgICAgICAgICAgIGVuZCA9IHRoZXRhICsgc3BhbiwKLSAgICAgICAgICAgIHBvbGFyID0gbmV3IFBvbGFyOwotICAgICAgCi0gICAgICAgIHZhciBzaG93TGFiZWxzID0gY29uZmlnLnNob3dMYWJlbHMsCi0gICAgICAgICAgICByZXNpemVMYWJlbHMgPSBjb25maWcucmVzaXplTGFiZWxzLAotICAgICAgICAgICAgbGFiZWwgPSBjb25maWcuTGFiZWw7Ci0gICAgICAgIAotICAgICAgICBpZiAoZGltQXJyYXkpIHsKLSAgICAgICAgICBmb3IgKHZhciBpPTAsIGw9ZGltQXJyYXkubGVuZ3RoLCBhY3VtPTA7IGk8bDsgaSsrKSB7Ci0gICAgICAgICAgICBhY3VtICs9IGRpbUFycmF5W2ldOwotICAgICAgICAgIH0KLSAgICAgICAgICB2YXIgc2NhbGUgPSByZXNpemVMYWJlbHM/IG5vZGUuZ2V0RGF0YSgnbm9ybWFsaXplZERpbScpIDogMSwKLSAgICAgICAgICAgICAgZm9udFNpemUgPSAobGFiZWwuc2l6ZSAqIHNjYWxlKSA+PiAwOwotICAgICAgICAgIGZvbnRTaXplID0gZm9udFNpemUgPCArcmVzaXplTGFiZWxzPyArcmVzaXplTGFiZWxzIDogZm9udFNpemU7Ci0gICAgICAgICAgZG9tRWxlbWVudC5zdHlsZS5mb250U2l6ZSA9IGZvbnRTaXplICsgJ3B4JzsKLSAgICAgICAgICBwb2xhci5yaG8gPSBhY3VtICsgY29uZmlnLmxhYmVsT2Zmc2V0ICsgY29uZmlnLnNsaWNlT2Zmc2V0OwotICAgICAgICAgIHBvbGFyLnRoZXRhID0gKGJlZ2luICsgZW5kKSAvIDI7Ci0gICAgICAgICAgdmFyIHBvcyA9IHBvbGFyLmdldGModHJ1ZSk7Ci0gICAgICAgICAgdmFyIHJhZGl1cyA9IHRoYXQuY2FudmFzLmdldFNpemUoKTsKLSAgICAgICAgICB2YXIgbGFiZWxQb3MgPSB7Ci0gICAgICAgICAgICB4OiBNYXRoLnJvdW5kKHBvcy54ICsgcmFkaXVzLndpZHRoIC8gMiksCi0gICAgICAgICAgICB5OiBNYXRoLnJvdW5kKHBvcy55ICsgcmFkaXVzLmhlaWdodCAvIDIpCi0gICAgICAgICAgfTsKLSAgICAgICAgICBkb21FbGVtZW50LnN0eWxlLmxlZnQgPSBsYWJlbFBvcy54ICsgJ3B4JzsKLSAgICAgICAgICBkb21FbGVtZW50LnN0eWxlLnRvcCA9IGxhYmVsUG9zLnkgKyAncHgnOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgCi0gICAgdmFyIHNpemUgPSBkZWxlZ2F0ZS5jYW52YXMuZ2V0U2l6ZSgpLAotICAgICAgICBtaW4gPSBNYXRoLm1pbjsKLSAgICBkZWxlZ2F0ZS5jb25maWcubGV2ZWxEaXN0YW5jZSA9IG1pbihzaXplLndpZHRoLCBzaXplLmhlaWdodCkvMiAKLSAgICAgIC0gY29uZmlnLm9mZnNldCAtIGNvbmZpZy5zbGljZU9mZnNldDsKLSAgICB0aGlzLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgdGhpcy5jYW52YXMgPSB0aGlzLmRlbGVnYXRlLmNhbnZhczsKLSAgICB0aGlzLmNhbnZhcy5nZXRDdHgoKS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnbGlnaHRlcic7Ci0gIH0sCi0gIAotICAvKgotICAgIE1ldGhvZDogbG9hZEpTT04KLSAgIAotICAgIExvYWRzIEpTT04gZGF0YSBpbnRvIHRoZSB2aXN1YWxpemF0aW9uLiAKLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIGpzb24gLSBUaGUgSlNPTiBkYXRhIGZvcm1hdC4gVGhpcyBmb3JtYXQgaXMgZGVzY3JpYmVkIGluIDxodHRwOi8vYmxvZy50aGVqaXQub3JnLzIwMTAvMDQvMjQvbmV3LWphdmFzY3JpcHQtaW5mb3Zpcy10b29sa2l0LXZpc3VhbGl6YXRpb25zLyNqc29uLWRhdGEtZm9ybWF0Pi4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIChzdGFydCBjb2RlIGpzKQotICAgIHZhciBwaWVDaGFydCA9IG5ldyAkaml0LlBpZUNoYXJ0KG9wdGlvbnMpOwotICAgIHBpZUNoYXJ0LmxvYWRKU09OKGpzb24pOwotICAgIChlbmQgY29kZSkKLSAgKi8gIAotICBsb2FkSlNPTjogZnVuY3Rpb24oanNvbikgewotICAgIHZhciBwcmVmaXggPSAkLnRpbWUoKSwgCi0gICAgICAgIGNoID0gW10sIAotICAgICAgICBkZWxlZ2F0ZSA9IHRoaXMuZGVsZWdhdGUsCi0gICAgICAgIG5hbWUgPSAkLnNwbGF0KGpzb24ubGFiZWwpLAotICAgICAgICBuYW1lTGVuZ3RoID0gbmFtZS5sZW5ndGgsCi0gICAgICAgIGNvbG9yID0gJC5zcGxhdChqc29uLmNvbG9yIHx8IHRoaXMuY29sb3JzKSwKLSAgICAgICAgY29sb3JMZW5ndGggPSBjb2xvci5sZW5ndGgsCi0gICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnLAotICAgICAgICBncmFkaWVudCA9ICEhY29uZmlnLnR5cGUuc3BsaXQoIjoiKVsxXSwKLSAgICAgICAgYW5pbWF0ZSA9IGNvbmZpZy5hbmltYXRlLAotICAgICAgICBtb25vID0gbmFtZUxlbmd0aCA9PSAxOwotICAgIAotICAgIGZvcih2YXIgaT0wLCB2YWx1ZXM9anNvbi52YWx1ZXMsIGw9dmFsdWVzLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgIHZhciB2YWwgPSB2YWx1ZXNbaV07Ci0gICAgICB2YXIgdmFsQXJyYXkgPSAkLnNwbGF0KHZhbC52YWx1ZXMpOwotICAgICAgY2gucHVzaCh7Ci0gICAgICAgICdpZCc6IHByZWZpeCArIHZhbC5sYWJlbCwKLSAgICAgICAgJ25hbWUnOiB2YWwubGFiZWwsCi0gICAgICAgICdkYXRhJzogewotICAgICAgICAgICd2YWx1ZSc6IHZhbEFycmF5LAotICAgICAgICAgICckdmFsdWVBcnJheSc6IHZhbEFycmF5LAotICAgICAgICAgICckY29sb3JBcnJheSc6IG1vbm8/ICQuc3BsYXQoY29sb3JbaSAlIGNvbG9yTGVuZ3RoXSkgOiBjb2xvciwKLSAgICAgICAgICAnJHN0cmluZ0FycmF5JzogbmFtZSwKLSAgICAgICAgICAnJGdyYWRpZW50JzogZ3JhZGllbnQsCi0gICAgICAgICAgJyRjb25maWcnOiBjb25maWcsCi0gICAgICAgICAgJyRhbmd1bGFyV2lkdGgnOiAkLnJlZHVjZSh2YWxBcnJheSwgZnVuY3Rpb24oeCx5KXtyZXR1cm4geCt5O30pCi0gICAgICAgIH0sCi0gICAgICAgICdjaGlsZHJlbic6IFtdCi0gICAgICB9KTsKLSAgICB9Ci0gICAgdmFyIHJvb3QgPSB7Ci0gICAgICAnaWQnOiBwcmVmaXggKyAnJHJvb3QnLAotICAgICAgJ25hbWUnOiAnJywKLSAgICAgICdkYXRhJzogewotICAgICAgICAnJHR5cGUnOiAnbm9uZScsCi0gICAgICAgICckd2lkdGgnOiAxLAotICAgICAgICAnJGhlaWdodCc6IDEKLSAgICAgIH0sCi0gICAgICAnY2hpbGRyZW4nOiBjaAotICAgIH07Ci0gICAgZGVsZWdhdGUubG9hZEpTT04ocm9vdCk7Ci0gICAgCi0gICAgdGhpcy5ub3JtYWxpemVEaW1zKCk7Ci0gICAgZGVsZWdhdGUucmVmcmVzaCgpOwotICAgIGlmKGFuaW1hdGUpIHsKLSAgICAgIGRlbGVnYXRlLmZ4LmFuaW1hdGUoewotICAgICAgICBtb2RlczogWydub2RlLXByb3BlcnR5OmRpbUFycmF5J10sCi0gICAgICAgIGR1cmF0aW9uOjE1MDAKLSAgICAgIH0pOwotICAgIH0KLSAgfSwKLSAgCi0gIC8qCi0gICAgTWV0aG9kOiB1cGRhdGVKU09OCi0gICAKLSAgICBVc2UgdGhpcyBtZXRob2Qgd2hlbiB1cGRhdGluZyB2YWx1ZXMgZm9yIHRoZSBjdXJyZW50IEpTT04gZGF0YS4gSWYgdGhlIGl0ZW1zIHNwZWNpZmllZCBieSB0aGUgSlNPTiBkYXRhIGFscmVhZHkgZXhpc3QgaW4gdGhlIGdyYXBoIHRoZW4gdGhlaXIgdmFsdWVzIHdpbGwgYmUgdXBkYXRlZC4KLSAgICAKLSAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgIGpzb24gLSAob2JqZWN0KSBKU09OIGRhdGEgdG8gYmUgdXBkYXRlZC4gVGhlIEpTT04gZm9ybWF0IGNvcnJlc3BvbmRzIHRvIHRoZSBvbmUgZGVzY3JpYmVkIGluIDxQaWVDaGFydC5sb2FkSlNPTj4uCi0gICAgb25Db21wbGV0ZSAtIChvYmplY3QpIEEgY2FsbGJhY2sgb2JqZWN0IHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhbmltYXRpb24gdHJhbnNpdGlvbiB3aGVuIHVwZGF0aW5nIHRoZSBkYXRhIGVuZC4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIAotICAgIChzdGFydCBjb2RlIGpzKQotICAgIHBpZUNoYXJ0LnVwZGF0ZUpTT04oanNvbiwgewotICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFsZXJ0KCd1cGRhdGUgY29tcGxldGUhJyk7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgKGVuZCBjb2RlKQotICAqLyAgCi0gIHVwZGF0ZUpTT046IGZ1bmN0aW9uKGpzb24sIG9uQ29tcGxldGUpIHsKLSAgICBpZih0aGlzLmJ1c3kpIHJldHVybjsKLSAgICB0aGlzLmJ1c3kgPSB0cnVlOwotICAgIAotICAgIHZhciBkZWxlZ2F0ZSA9IHRoaXMuZGVsZWdhdGU7Ci0gICAgdmFyIGdyYXBoID0gZGVsZWdhdGUuZ3JhcGg7Ci0gICAgdmFyIHZhbHVlcyA9IGpzb24udmFsdWVzOwotICAgIHZhciBhbmltYXRlID0gdGhpcy5jb25maWcuYW5pbWF0ZTsKLSAgICB2YXIgdGhhdCA9IHRoaXM7Ci0gICAgJC5lYWNoKHZhbHVlcywgZnVuY3Rpb24odikgewotICAgICAgdmFyIG4gPSBncmFwaC5nZXRCeU5hbWUodi5sYWJlbCksCi0gICAgICAgICAgdmFscyA9ICQuc3BsYXQodi52YWx1ZXMpOwotICAgICAgaWYobikgewotICAgICAgICBuLnNldERhdGEoJ3ZhbHVlQXJyYXknLCB2YWxzKTsKLSAgICAgICAgbi5zZXREYXRhKCdhbmd1bGFyV2lkdGgnLCAkLnJlZHVjZSh2YWxzLCBmdW5jdGlvbih4LHkpe3JldHVybiB4K3k7fSkpOwotICAgICAgICBpZihqc29uLmxhYmVsKSB7Ci0gICAgICAgICAgbi5zZXREYXRhKCdzdHJpbmdBcnJheScsICQuc3BsYXQoanNvbi5sYWJlbCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgdGhpcy5ub3JtYWxpemVEaW1zKCk7Ci0gICAgaWYoYW5pbWF0ZSkgewotICAgICAgZGVsZWdhdGUuY29tcHV0ZSgnZW5kJyk7Ci0gICAgICBkZWxlZ2F0ZS5meC5hbmltYXRlKHsKLSAgICAgICAgbW9kZXM6IFsnbm9kZS1wcm9wZXJ0eTpkaW1BcnJheTpzcGFuJywgJ2xpbmVhciddLAotICAgICAgICBkdXJhdGlvbjoxNTAwLAotICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICB0aGF0LmJ1c3kgPSBmYWxzZTsKLSAgICAgICAgICBvbkNvbXBsZXRlICYmIG9uQ29tcGxldGUub25Db21wbGV0ZSgpOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICB9IGVsc2UgewotICAgICAgZGVsZWdhdGUucmVmcmVzaCgpOwotICAgIH0KLSAgfSwKLSAgICAKLSAgLy9hZGRzIHRoZSBsaXR0bGUgYnJvd24gYmFyIHdoZW4gaG92ZXJpbmcgdGhlIG5vZGUKLSAgc2VsZWN0OiBmdW5jdGlvbihpZCwgbmFtZSkgewotICAgIGlmKCF0aGlzLmNvbmZpZy5ob3ZlcmVkQ29sb3IpIHJldHVybjsKLSAgICB2YXIgcyA9IHRoaXMuc2VsZWN0ZWQ7Ci0gICAgaWYocy5pZCAhPSBpZCB8fCBzLm5hbWUgIT0gbmFtZSkgewotICAgICAgcy5pZCA9IGlkOwotICAgICAgcy5uYW1lID0gbmFtZTsKLSAgICAgIHMuY29sb3IgPSB0aGlzLmNvbmZpZy5ob3ZlcmVkQ29sb3I7Ci0gICAgICB0aGlzLmRlbGVnYXRlLmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgaWYoaWQgPT0gbi5pZCkgewotICAgICAgICAgIG4uc2V0RGF0YSgnYm9yZGVyJywgcyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgbi5zZXREYXRhKCdib3JkZXInLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgICAgdGhpcy5kZWxlZ2F0ZS5wbG90KCk7Ci0gICAgfQotICB9LAotICAKLSAgLyoKLSAgICBNZXRob2Q6IGdldExlZ2VuZAotICAgCi0gICAgUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyBhcyBrZXlzIHRoZSBsZWdlbmQgbmFtZXMgYW5kIGFzIHZhbHVlcyBoZXggc3RyaW5ncyB3aXRoIGNvbG9yIHZhbHVlcy4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIAotICAgIChzdGFydCBjb2RlIGpzKQotICAgIHZhciBsZWdlbmQgPSBwaWVDaGFydC5nZXRMZWdlbmQoKTsKLSAgICAoZW5kIGNvZGUpCi0gICovICAKLSAgZ2V0TGVnZW5kOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbGVnZW5kID0ge307Ci0gICAgdmFyIG47Ci0gICAgdGhpcy5kZWxlZ2F0ZS5ncmFwaC5nZXROb2RlKHRoaXMuZGVsZWdhdGUucm9vdCkuZWFjaEFkamFjZW5jeShmdW5jdGlvbihhZGopIHsKLSAgICAgIG4gPSBhZGoubm9kZVRvOwotICAgIH0pOwotICAgIHZhciBjb2xvcnMgPSBuLmdldERhdGEoJ2NvbG9yQXJyYXknKSwKLSAgICAgICAgbGVuID0gY29sb3JzLmxlbmd0aDsKLSAgICAkLmVhY2gobi5nZXREYXRhKCdzdHJpbmdBcnJheScpLCBmdW5jdGlvbihzLCBpKSB7Ci0gICAgICBsZWdlbmRbc10gPSBjb2xvcnNbaSAlIGxlbl07Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGxlZ2VuZDsKLSAgfSwKLSAgCi0gIC8qCi0gICAgTWV0aG9kOiBnZXRNYXhWYWx1ZQotICAgCi0gICAgUmV0dXJucyB0aGUgbWF4aW11bSBhY2N1bXVsYXRlZCB2YWx1ZSBmb3IgdGhlIHN0YWNrcy4gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3Igbm9ybWFsaXppbmcgdGhlIGdyYXBoIGhlaWdodHMgYWNjb3JkaW5nIHRvIHRoZSBjYW52YXMgaGVpZ2h0LgotICAgIAotICAgIEV4YW1wbGU6Ci0gICAgCi0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgdmFyIGFucyA9IHBpZUNoYXJ0LmdldE1heFZhbHVlKCk7Ci0gICAgKGVuZCBjb2RlKQotICAgIAotICAgIEluIHNvbWUgY2FzZXMgaXQgY291bGQgYmUgdXNlZnVsIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIG5vcm1hbGl6ZSBoZWlnaHRzIGZvciBhIGdyb3VwIG9mIFBpZUNoYXJ0cywgbGlrZSB3aGVuIGRvaW5nIHNtYWxsIG11bHRpcGxlcy4KLSAgICAKLSAgICBFeGFtcGxlOgotICAgIAotICAgIChzdGFydCBjb2RlIGpzKQotICAgIC8vd2lsbCByZXR1cm4gMTAwIGZvciBhbGwgUGllQ2hhcnQgaW5zdGFuY2VzLAotICAgIC8vZGlzcGxheWluZyBhbGwgb2YgdGhlbSB3aXRoIHRoZSBzYW1lIHNjYWxlCi0gICAgJGppdC5QaWVDaGFydC5pbXBsZW1lbnQoewotICAgICAgJ2dldE1heFZhbHVlJzogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiAxMDA7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgKGVuZCBjb2RlKQotICAgIAotICAqLyAgCi0gIGdldE1heFZhbHVlOiBmdW5jdGlvbigpIHsKLSAgICB2YXIgbWF4VmFsdWUgPSAwOwotICAgIHRoaXMuZGVsZWdhdGUuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgewotICAgICAgdmFyIHZhbEFycmF5ID0gbi5nZXREYXRhKCd2YWx1ZUFycmF5JyksCi0gICAgICAgICAgYWN1bSA9IDA7Ci0gICAgICAkLmVhY2godmFsQXJyYXksIGZ1bmN0aW9uKHYpIHsgCi0gICAgICAgIGFjdW0gKz0gK3Y7Ci0gICAgICB9KTsKLSAgICAgIG1heFZhbHVlID0gbWF4VmFsdWU+YWN1bT8gbWF4VmFsdWU6YWN1bTsKLSAgICB9KTsKLSAgICByZXR1cm4gbWF4VmFsdWU7Ci0gIH0sCi0gIAotICBub3JtYWxpemVEaW1zOiBmdW5jdGlvbigpIHsKLSAgICAvL251bWJlciBvZiBlbGVtZW50cwotICAgIHZhciByb290ID0gdGhpcy5kZWxlZ2F0ZS5ncmFwaC5nZXROb2RlKHRoaXMuZGVsZWdhdGUucm9vdCksIGw9MDsKLSAgICByb290LmVhY2hBZGphY2VuY3koZnVuY3Rpb24oKSB7Ci0gICAgICBsKys7Ci0gICAgfSk7Ci0gICAgdmFyIG1heFZhbHVlID0gdGhpcy5nZXRNYXhWYWx1ZSgpIHx8IDEsCi0gICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnLAotICAgICAgICBhbmltYXRlID0gY29uZmlnLmFuaW1hdGUsCi0gICAgICAgIHJobyA9IHRoaXMuZGVsZWdhdGUuY29uZmlnLmxldmVsRGlzdGFuY2U7Ci0gICAgdGhpcy5kZWxlZ2F0ZS5ncmFwaC5lYWNoTm9kZShmdW5jdGlvbihuKSB7Ci0gICAgICB2YXIgYWN1bSA9IDAsIGFuaW1hdGVWYWx1ZSA9IFtdOwotICAgICAgJC5lYWNoKG4uZ2V0RGF0YSgndmFsdWVBcnJheScpLCBmdW5jdGlvbih2KSB7Ci0gICAgICAgIGFjdW0gKz0gK3Y7Ci0gICAgICAgIGFuaW1hdGVWYWx1ZS5wdXNoKDEpOwotICAgICAgfSk7Ci0gICAgICB2YXIgc3RhdCA9IChhbmltYXRlVmFsdWUubGVuZ3RoID09IDEpICYmICFjb25maWcudXBkYXRlSGVpZ2h0czsKLSAgICAgIGlmKGFuaW1hdGUpIHsKLSAgICAgICAgbi5zZXREYXRhKCdkaW1BcnJheScsICQubWFwKG4uZ2V0RGF0YSgndmFsdWVBcnJheScpLCBmdW5jdGlvbihuKSB7IAotICAgICAgICAgIHJldHVybiBzdGF0PyByaG86IChuICogcmhvIC8gbWF4VmFsdWUpOyAKLSAgICAgICAgfSksICdlbmQnKTsKLSAgICAgICAgdmFyIGRpbUFycmF5ID0gbi5nZXREYXRhKCdkaW1BcnJheScpOwotICAgICAgICBpZighZGltQXJyYXkpIHsKLSAgICAgICAgICBuLnNldERhdGEoJ2RpbUFycmF5JywgYW5pbWF0ZVZhbHVlKTsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgbi5zZXREYXRhKCdkaW1BcnJheScsICQubWFwKG4uZ2V0RGF0YSgndmFsdWVBcnJheScpLCBmdW5jdGlvbihuKSB7IAotICAgICAgICAgIHJldHVybiBzdGF0PyByaG8gOiAobiAqIHJobyAvIG1heFZhbHVlKTsgCi0gICAgICAgIH0pKTsKLSAgICAgIH0KLSAgICAgIG4uc2V0RGF0YSgnbm9ybWFsaXplZERpbScsIGFjdW0gLyBtYXhWYWx1ZSk7Ci0gICAgfSk7Ci0gIH0KLX0pOwotCi0KLS8qCi0gKiBDbGFzczogTGF5b3V0cy5UTQotICogCi0gKiBJbXBsZW1lbnRzIFRyZWVNYXBzIGxheW91dHMgKFNsaWNlQW5kRGljZSwgU3F1YXJpZmllZCwgU3RyaXApLgotICogCi0gKiBJbXBsZW1lbnRlZCBCeToKLSAqIAotICogPFRNPgotICogCi0gKi8KLUxheW91dHMuVE0gPSB7fTsKLQotTGF5b3V0cy5UTS5TbGljZUFuZERpY2UgPSBuZXcgQ2xhc3MoewotICBjb21wdXRlOiBmdW5jdGlvbihwcm9wKSB7Ci0gICAgdmFyIHJvb3QgPSB0aGlzLmdyYXBoLmdldE5vZGUodGhpcy5jbGlja2VkTm9kZSAmJiB0aGlzLmNsaWNrZWROb2RlLmlkIHx8IHRoaXMucm9vdCk7Ci0gICAgdGhpcy5jb250cm9sbGVyLm9uQmVmb3JlQ29tcHV0ZShyb290KTsKLSAgICB2YXIgc2l6ZSA9IHRoaXMuY2FudmFzLmdldFNpemUoKSwKLSAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWcsCi0gICAgICAgIHdpZHRoID0gc2l6ZS53aWR0aCwKLSAgICAgICAgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7Ci0gICAgdGhpcy5ncmFwaC5jb21wdXRlTGV2ZWxzKHRoaXMucm9vdCwgMCwgImlnbm9yZSIpOwotICAgIC8vc2V0IHJvb3QgcG9zaXRpb24gYW5kIGRpbWVuc2lvbnMKLSAgICByb290LmdldFBvcyhwcm9wKS5zZXRjKC13aWR0aC8yLCAtaGVpZ2h0LzIpOwotICAgIHJvb3Quc2V0RGF0YSgnd2lkdGgnLCB3aWR0aCwgcHJvcCk7Ci0gICAgcm9vdC5zZXREYXRhKCdoZWlnaHQnLCBoZWlnaHQgKyBjb25maWcudGl0bGVIZWlnaHQsIHByb3ApOwotICAgIHRoaXMuY29tcHV0ZVBvc2l0aW9ucyhyb290LCByb290LCB0aGlzLmxheW91dC5vcmllbnRhdGlvbiwgcHJvcCk7Ci0gICAgdGhpcy5jb250cm9sbGVyLm9uQWZ0ZXJDb21wdXRlKHJvb3QpOwotICB9LAotICAKLSAgY29tcHV0ZVBvc2l0aW9uczogZnVuY3Rpb24ocGFyLCBjaCwgb3JuLCBwcm9wKSB7Ci0gICAgLy9jb21wdXRlIGNoaWxkcmVuIGFyZWFzCi0gICAgdmFyIHRvdGFsQXJlYSA9IDA7Ci0gICAgcGFyLmVhY2hTdWJub2RlKGZ1bmN0aW9uKG4pIHsKLSAgICAgIHRvdGFsQXJlYSArPSBuLmdldERhdGEoJ2FyZWEnLCBwcm9wKTsKLSAgICB9KTsKLSAgICAKLSAgICB2YXIgY29uZmlnID0gdGhpcy5jb25maWcsCi0gICAgICAgIG9mZnN0ID0gY29uZmlnLm9mZnNldCwKLSAgICAgICAgd2lkdGggID0gcGFyLmdldERhdGEoJ3dpZHRoJywgcHJvcCksCi0gICAgICAgIGhlaWdodCA9IE1hdGgubWF4KHBhci5nZXREYXRhKCdoZWlnaHQnLCBwcm9wKSAtIGNvbmZpZy50aXRsZUhlaWdodCwgMCksCi0gICAgICAgIGZhY3QgPSBwYXIgPT0gY2g/IDEgOiAoY2guZ2V0RGF0YSgnYXJlYScsIHByb3ApIC8gdG90YWxBcmVhKTsKLQotICAgIHZhciBvdGhlclNpemUsIHNpemUsIGRpbSwgcG9zLCBwb3MyLCBwb3N0aCwgcG9zMnRoOwotICAgIHZhciBob3Jpem9udGFsID0gKG9ybiA9PSAiaCIpOwotICAgIGlmKGhvcml6b250YWwpIHsKLSAgICAgIG9ybiA9ICd2JzsKLSAgICAgIG90aGVyU2l6ZSA9IGhlaWdodDsKLSAgICAgIHNpemUgPSB3aWR0aCAqIGZhY3Q7Ci0gICAgICBkaW0gPSAnaGVpZ2h0JzsKLSAgICAgIHBvcyA9ICd5JzsKLSAgICAgIHBvczIgPSAneCc7Ci0gICAgICBwb3N0aCA9IGNvbmZpZy50aXRsZUhlaWdodDsKLSAgICAgIHBvczJ0aCA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgIG9ybiA9ICdoJzsgICAgCi0gICAgICBvdGhlclNpemUgPSBoZWlnaHQgKiBmYWN0OwotICAgICAgc2l6ZSA9IHdpZHRoOwotICAgICAgZGltID0gJ3dpZHRoJzsKLSAgICAgIHBvcyA9ICd4JzsKLSAgICAgIHBvczIgPSAneSc7Ci0gICAgICBwb3N0aCA9IDA7Ci0gICAgICBwb3MydGggPSBjb25maWcudGl0bGVIZWlnaHQ7Ci0gICAgfQotICAgIHZhciBjcG9zID0gY2guZ2V0UG9zKHByb3ApOwotICAgIGNoLnNldERhdGEoJ3dpZHRoJywgc2l6ZSwgcHJvcCk7Ci0gICAgY2guc2V0RGF0YSgnaGVpZ2h0Jywgb3RoZXJTaXplLCBwcm9wKTsKLSAgICB2YXIgb2Zmc2V0U2l6ZSA9IDAsIHRtID0gdGhpczsKLSAgICBjaC5lYWNoU3Vibm9kZShmdW5jdGlvbihuKSB7Ci0gICAgICB2YXIgcCA9IG4uZ2V0UG9zKHByb3ApOwotICAgICAgcFtwb3NdID0gb2Zmc2V0U2l6ZSArIGNwb3NbcG9zXSArIHBvc3RoOwotICAgICAgcFtwb3MyXSA9IGNwb3NbcG9zMl0gKyBwb3MydGg7Ci0gICAgICB0bS5jb21wdXRlUG9zaXRpb25zKGNoLCBuLCBvcm4sIHByb3ApOwotICAgICAgb2Zmc2V0U2l6ZSArPSBuLmdldERhdGEoZGltLCBwcm9wKTsKLSAgICB9KTsKLSAgfQotCi19KTsKLQotTGF5b3V0cy5UTS5BcmVhID0gewotIC8qCi0gICAgTWV0aG9kOiBjb21wdXRlCi0gCi0gICBDYWxsZWQgYnkgbG9hZEpTT04gdG8gY2FsY3VsYXRlIHJlY3Vyc2l2ZWx5IGFsbCBub2RlIHBvc2l0aW9ucyBhbmQgbGF5IG91dCB0aGUgdHJlZS4KLSAKLSAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAganNvbiAtIEEgSlNPTiB0cmVlLiBTZWUgYWxzbyA8TG9hZGVyLmxvYWRKU09OPi4KLSAgICAgICBjb29yZCAtIEEgY29vcmRpbmF0ZXMgb2JqZWN0IHNwZWNpZnlpbmcgd2lkdGgsIGhlaWdodCwgbGVmdCBhbmQgdG9wIHN0eWxlIHByb3BlcnRpZXMuCi0gKi8KLSBjb21wdXRlOiBmdW5jdGlvbihwcm9wKSB7Ci0gICAgcHJvcCA9IHByb3AgfHwgImN1cnJlbnQiOwotICAgIHZhciByb290ID0gdGhpcy5ncmFwaC5nZXROb2RlKHRoaXMuY2xpY2tlZE5vZGUgJiYgdGhpcy5jbGlja2VkTm9kZS5pZCB8fCB0aGlzLnJvb3QpOwotICAgIHRoaXMuY29udHJvbGxlci5vbkJlZm9yZUNvbXB1dGUocm9vdCk7Ci0gICAgdmFyIGNvbmZpZyA9IHRoaXMuY29uZmlnLAotICAgICAgICBzaXplID0gdGhpcy5jYW52YXMuZ2V0U2l6ZSgpLAotICAgICAgICB3aWR0aCA9IHNpemUud2lkdGgsCi0gICAgICAgIGhlaWdodCA9IHNpemUuaGVpZ2h0LAotICAgICAgICBvZmZzdCA9IGNvbmZpZy5vZmZzZXQsCi0gICAgICAgIG9mZndkdGggPSB3aWR0aCAtIG9mZnN0LAotICAgICAgICBvZmZoZ2h0ID0gaGVpZ2h0IC0gb2Zmc3Q7Ci0gICAgdGhpcy5ncmFwaC5jb21wdXRlTGV2ZWxzKHRoaXMucm9vdCwgMCwgImlnbm9yZSIpOwotICAgIC8vc2V0IHJvb3QgcG9zaXRpb24gYW5kIGRpbWVuc2lvbnMKLSAgICByb290LmdldFBvcyhwcm9wKS5zZXRjKC13aWR0aC8yLCAtaGVpZ2h0LzIpOwotICAgIHJvb3Quc2V0RGF0YSgnd2lkdGgnLCB3aWR0aCwgcHJvcCk7Ci0gICAgcm9vdC5zZXREYXRhKCdoZWlnaHQnLCBoZWlnaHQsIHByb3ApOwotICAgIC8vY3JlYXRlIGEgY29vcmRpbmF0ZXMgb2JqZWN0Ci0gICAgdmFyIGNvb3JkID0gewotICAgICAgICAndG9wJzogLWhlaWdodC8yICsgY29uZmlnLnRpdGxlSGVpZ2h0LAotICAgICAgICAnbGVmdCc6IC13aWR0aC8yLAotICAgICAgICAnd2lkdGgnOiBvZmZ3ZHRoLAotICAgICAgICAnaGVpZ2h0Jzogb2ZmaGdodCAtIGNvbmZpZy50aXRsZUhlaWdodAotICAgIH07Ci0gICAgdGhpcy5jb21wdXRlUG9zaXRpb25zKHJvb3QsIGNvb3JkLCBwcm9wKTsKLSAgICB0aGlzLmNvbnRyb2xsZXIub25BZnRlckNvbXB1dGUocm9vdCk7Ci0gfSwgCi0gCi0gLyoKLSAgICBNZXRob2Q6IGNvbXB1dGVEaW0KLSAKLSAgIENvbXB1dGVzIGRpbWVuc2lvbnMgYW5kIHBvc2l0aW9ucyBvZiBhIGdyb3VwIG9mIG5vZGVzCi0gICBhY2NvcmRpbmcgdG8gYSBjdXN0b20gbGF5b3V0IHJvdyBjb25kaXRpb24uIAotIAotICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICB0YWlsIC0gQW4gYXJyYXkgb2Ygbm9kZXMuICAKLSAgICAgICBpbml0RWxlbSAtIEFuIGFycmF5IG9mIG5vZGVzIChjb250YWluaW5nIHRoZSBpbml0aWFsIG5vZGUgdG8gYmUgbGFpZCkuCi0gICAgICAgdyAtIEEgZml4ZWQgZGltZW5zaW9uIHdoZXJlIG5vZGVzIHdpbGwgYmUgbGF5ZWQgb3V0LgotICAgICAgIGNvb3JkIC0gQSBjb29yZGluYXRlcyBvYmplY3Qgc3BlY2lmeWluZyB3aWR0aCwgaGVpZ2h0LCBsZWZ0IGFuZCB0b3Agc3R5bGUgcHJvcGVydGllcy4KLSAgICAgICBjb21wIC0gQSBjdXN0b20gY29tcGFyaXNvbiBmdW5jdGlvbgotICovCi0gY29tcHV0ZURpbTogZnVuY3Rpb24odGFpbCwgaW5pdEVsZW0sIHcsIGNvb3JkLCBjb21wLCBwcm9wKSB7Ci0gICBpZih0YWlsLmxlbmd0aCArIGluaXRFbGVtLmxlbmd0aCA9PSAxKSB7Ci0gICAgIHZhciBsID0gKHRhaWwubGVuZ3RoID09IDEpPyB0YWlsIDogaW5pdEVsZW07Ci0gICAgIHRoaXMubGF5b3V0TGFzdChsLCB3LCBjb29yZCwgcHJvcCk7Ci0gICAgIHJldHVybjsKLSAgIH0KLSAgIGlmKHRhaWwubGVuZ3RoID49IDIgJiYgaW5pdEVsZW0ubGVuZ3RoID09IDApIHsKLSAgICAgaW5pdEVsZW0gPSBbdGFpbC5zaGlmdCgpXTsKLSAgIH0KLSAgIGlmKHRhaWwubGVuZ3RoID09IDApIHsKLSAgICAgaWYoaW5pdEVsZW0ubGVuZ3RoID4gMCkgdGhpcy5sYXlvdXRSb3coaW5pdEVsZW0sIHcsIGNvb3JkLCBwcm9wKTsKLSAgICAgcmV0dXJuOwotICAgfQotICAgdmFyIGMgPSB0YWlsWzBdOwotICAgaWYoY29tcChpbml0RWxlbSwgdykgPj0gY29tcChbY10uY29uY2F0KGluaXRFbGVtKSwgdykpIHsKLSAgICAgdGhpcy5jb21wdXRlRGltKHRhaWwuc2xpY2UoMSksIGluaXRFbGVtLmNvbmNhdChbY10pLCB3LCBjb29yZCwgY29tcCwgcHJvcCk7Ci0gICB9IGVsc2UgewotICAgICB2YXIgbmV3Q29vcmRzID0gdGhpcy5sYXlvdXRSb3coaW5pdEVsZW0sIHcsIGNvb3JkLCBwcm9wKTsKLSAgICAgdGhpcy5jb21wdXRlRGltKHRhaWwsIFtdLCBuZXdDb29yZHMuZGltLCBuZXdDb29yZHMsIGNvbXAsIHByb3ApOwotICAgfQotIH0sCi0KLSAKLSAvKgotICAgIE1ldGhvZDogd29yc3RBc3BlY3RSYXRpbwotIAotICAgQ2FsY3VsYXRlcyB0aGUgd29yc3QgYXNwZWN0IHJhdGlvIG9mIGEgZ3JvdXAgb2YgcmVjdGFuZ2xlcy4gCi0gICAgICAgCi0gICAgU2VlIGFsc286Ci0gICAgICAgCi0gICAgICAgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXNwZWN0X3JhdGlvPgotICAgCi0gICAgUGFyYW1ldGVyczoKLQotICAgICBjaCAtIEFuIGFycmF5IG9mIG5vZGVzLiAgCi0gICAgIHcgIC0gVGhlIGZpeGVkIGRpbWVuc2lvbiB3aGVyZSByZWN0YW5nbGVzIGFyZSBiZWluZyBsYWlkIG91dC4KLQotICAgIFJldHVybnM6Ci0gCi0gICAgICAgIFRoZSB3b3JzdCBhc3BlY3QgcmF0aW8uCi0KLQotICovCi0gd29yc3RBc3BlY3RSYXRpbzogZnVuY3Rpb24oY2gsIHcpIHsKLSAgIGlmKCFjaCB8fCBjaC5sZW5ndGggPT0gMCkgcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7Ci0gICB2YXIgYXJlYVN1bSA9IDAsIG1heEFyZWEgPSAwLCBtaW5BcmVhID0gTnVtYmVyLk1BWF9WQUxVRTsKLSAgIGZvcih2YXIgaT0wLCBsPWNoLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgdmFyIGFyZWEgPSBjaFtpXS5fYXJlYTsKLSAgICAgYXJlYVN1bSArPSBhcmVhOyAKLSAgICAgbWluQXJlYSA9IG1pbkFyZWEgPCBhcmVhPyBtaW5BcmVhIDogYXJlYTsKLSAgICAgbWF4QXJlYSA9IG1heEFyZWEgPiBhcmVhPyBtYXhBcmVhIDogYXJlYTsgCi0gICB9Ci0gICB2YXIgc3F3ID0gdyAqIHcsIHNxQXJlYVN1bSA9IGFyZWFTdW0gKiBhcmVhU3VtOwotICAgcmV0dXJuIE1hdGgubWF4KHNxdyAqIG1heEFyZWEgLyBzcUFyZWFTdW0sCi0gICAgICAgICAgIHNxQXJlYVN1bSAvIChzcXcgKiBtaW5BcmVhKSk7Ci0gfSwKLSAKLSAvKgotICAgIE1ldGhvZDogYXZnQXNwZWN0UmF0aW8KLSAKLSAgIENhbGN1bGF0ZXMgdGhlIGF2ZXJhZ2UgYXNwZWN0IHJhdGlvIG9mIGEgZ3JvdXAgb2YgcmVjdGFuZ2xlcy4gCi0gICAgICAgCi0gICAgICAgU2VlIGFsc286Ci0gICAgICAgCi0gICAgICAgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXNwZWN0X3JhdGlvPgotICAgCi0gICAgUGFyYW1ldGVyczoKLQotICAgICBjaCAtIEFuIGFycmF5IG9mIG5vZGVzLiAgCi0gICAgICAgdyAtIFRoZSBmaXhlZCBkaW1lbnNpb24gd2hlcmUgcmVjdGFuZ2xlcyBhcmUgYmVpbmcgbGFpZCBvdXQuCi0KLSAgICBSZXR1cm5zOgotIAotICAgICAgICBUaGUgYXZlcmFnZSBhc3BlY3QgcmF0aW8uCi0KLQotICovCi0gYXZnQXNwZWN0UmF0aW86IGZ1bmN0aW9uKGNoLCB3KSB7Ci0gICBpZighY2ggfHwgY2gubGVuZ3RoID09IDApIHJldHVybiBOdW1iZXIuTUFYX1ZBTFVFOwotICAgdmFyIGFyU3VtID0gMDsKLSAgIGZvcih2YXIgaT0wLCBsPWNoLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgdmFyIGFyZWEgPSBjaFtpXS5fYXJlYTsKLSAgICAgdmFyIGggPSBhcmVhIC8gdzsKLSAgICAgYXJTdW0gKz0gdyA+IGg/IHcgLyBoIDogaCAvIHc7Ci0gICB9Ci0gICByZXR1cm4gYXJTdW0gLyBsOwotIH0sCi0KLSAvKgotICAgIGxheW91dExhc3QKLSAKLSAgIFBlcmZvcm1zIHRoZSBsYXlvdXQgb2YgdGhlIGxhc3QgY29tcHV0ZWQgc2libGluZy4KLSAKLSAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgY2ggLSBBbiBhcnJheSBvZiBub2Rlcy4gIAotICAgICAgIHcgLSBBIGZpeGVkIGRpbWVuc2lvbiB3aGVyZSBub2RlcyB3aWxsIGJlIGxheWVkIG91dC4KLSAgICAgY29vcmQgLSBBIGNvb3JkaW5hdGVzIG9iamVjdCBzcGVjaWZ5aW5nIHdpZHRoLCBoZWlnaHQsIGxlZnQgYW5kIHRvcCBzdHlsZSBwcm9wZXJ0aWVzLgotICovCi0gbGF5b3V0TGFzdDogZnVuY3Rpb24oY2gsIHcsIGNvb3JkLCBwcm9wKSB7Ci0gICB2YXIgY2hpbGQgPSBjaFswXTsKLSAgIGNoaWxkLmdldFBvcyhwcm9wKS5zZXRjKGNvb3JkLmxlZnQsIGNvb3JkLnRvcCk7Ci0gICBjaGlsZC5zZXREYXRhKCd3aWR0aCcsIGNvb3JkLndpZHRoLCBwcm9wKTsKLSAgIGNoaWxkLnNldERhdGEoJ2hlaWdodCcsIGNvb3JkLmhlaWdodCwgcHJvcCk7Ci0gfQotfTsKLQotCi1MYXlvdXRzLlRNLlNxdWFyaWZpZWQgPSBuZXcgQ2xhc3MoewotIEltcGxlbWVudHM6IExheW91dHMuVE0uQXJlYSwKLSAKLSBjb21wdXRlUG9zaXRpb25zOiBmdW5jdGlvbihub2RlLCBjb29yZCwgcHJvcCkgewotICAgdmFyIGNvbmZpZyA9IHRoaXMuY29uZmlnLCAKLSAgICAgICBtYXggPSBNYXRoLm1heDsKLSAgIAotICAgaWYgKGNvb3JkLndpZHRoID49IGNvb3JkLmhlaWdodCkgCi0gICAgIHRoaXMubGF5b3V0Lm9yaWVudGF0aW9uID0gJ2gnOwotICAgZWxzZQotICAgICB0aGlzLmxheW91dC5vcmllbnRhdGlvbiA9ICd2JzsKLSAgIAotICAgdmFyIGNoID0gbm9kZS5nZXRTdWJub2RlcyhbMSwgMV0sICJpZ25vcmUiKTsKLSAgIGlmKGNoLmxlbmd0aCA+IDApIHsKLSAgICAgdGhpcy5wcm9jZXNzQ2hpbGRyZW5MYXlvdXQobm9kZSwgY2gsIGNvb3JkLCBwcm9wKTsKLSAgICAgZm9yKHZhciBpPTAsIGw9Y2gubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgIHZhciBjaGkgPSBjaFtpXSwgCi0gICAgICAgICAgIG9mZnN0ID0gY29uZmlnLm9mZnNldCwKLSAgICAgICAgICAgaGVpZ2h0ID0gbWF4KGNoaS5nZXREYXRhKCdoZWlnaHQnLCBwcm9wKSAtIG9mZnN0IC0gY29uZmlnLnRpdGxlSGVpZ2h0LCAwKSwKLSAgICAgICAgICAgd2lkdGggPSBtYXgoY2hpLmdldERhdGEoJ3dpZHRoJywgcHJvcCkgLSBvZmZzdCwgMCksCi0gICAgICAgICAgIGNoaXBvcyA9IGNoaS5nZXRQb3MocHJvcCk7Ci0KLSAgICAgICBjb29yZCA9IHsKLSAgICAgICAgICd3aWR0aCc6IHdpZHRoLAotICAgICAgICAgJ2hlaWdodCc6IGhlaWdodCwKLSAgICAgICAgICd0b3AnOiBjaGlwb3MueSArIGNvbmZpZy50aXRsZUhlaWdodCwKLSAgICAgICAgICdsZWZ0JzogY2hpcG9zLngKLSAgICAgICB9OwotICAgICAgIHRoaXMuY29tcHV0ZVBvc2l0aW9ucyhjaGksIGNvb3JkLCBwcm9wKTsKLSAgICAgfQotICAgfQotIH0sCi0KLSAvKgotICAgIE1ldGhvZDogcHJvY2Vzc0NoaWxkcmVuTGF5b3V0Ci0gCi0gICBDb21wdXRlcyBjaGlsZHJlbiByZWFsIGFyZWFzIGFuZCBvdGhlciB1c2VmdWwgcGFyYW1ldGVycyBmb3IgcGVyZm9ybWluZyB0aGUgU3F1YXJpZmllZCBhbGdvcml0aG0uCi0gCi0gICAgUGFyYW1ldGVyczoKLQotICAgICAgIHBhciAtIFRoZSBwYXJlbnQgbm9kZSBvZiB0aGUganNvbiBzdWJ0cmVlLiAgCi0gICAgICAgY2ggLSBBbiBBcnJheSBvZiBub2RlcwotICAgICBjb29yZCAtIEEgY29vcmRpbmF0ZXMgb2JqZWN0IHNwZWNpZnlpbmcgd2lkdGgsIGhlaWdodCwgbGVmdCBhbmQgdG9wIHN0eWxlIHByb3BlcnRpZXMuCi0gKi8KLSBwcm9jZXNzQ2hpbGRyZW5MYXlvdXQ6IGZ1bmN0aW9uKHBhciwgY2gsIGNvb3JkLCBwcm9wKSB7Ci0gICAvL2NvbXB1dGUgY2hpbGRyZW4gcmVhbCBhcmVhcwotICAgdmFyIHBhcmVudEFyZWEgPSBjb29yZC53aWR0aCAqIGNvb3JkLmhlaWdodDsKLSAgIHZhciBpLCBsPWNoLmxlbmd0aCwgdG90YWxDaEFyZWE9MCwgY2hBcmVhID0gW107Ci0gICBmb3IoaT0wOyBpPGw7IGkrKykgewotICAgICBjaEFyZWFbaV0gPSBwYXJzZUZsb2F0KGNoW2ldLmdldERhdGEoJ2FyZWEnLCBwcm9wKSk7Ci0gICAgIHRvdGFsQ2hBcmVhICs9IGNoQXJlYVtpXTsKLSAgIH0KLSAgIGZvcihpPTA7IGk8bDsgaSsrKSB7Ci0gICAgIGNoW2ldLl9hcmVhID0gcGFyZW50QXJlYSAqIGNoQXJlYVtpXSAvIHRvdGFsQ2hBcmVhOwotICAgfQotICAgdmFyIG1pbmltdW1TaWRlVmFsdWUgPSB0aGlzLmxheW91dC5ob3Jpem9udGFsKCk/IGNvb3JkLmhlaWdodCA6IGNvb3JkLndpZHRoOwotICAgY2guc29ydChmdW5jdGlvbihhLCBiKSB7IAotICAgICB2YXIgZGlmZiA9IGIuX2FyZWEgLSBhLl9hcmVhOyAKLSAgICAgcmV0dXJuIGRpZmY/IGRpZmYgOiAoYi5pZCA9PSBhLmlkPyAwIDogKGIuaWQgPCBhLmlkPyAxIDogLTEpKTsgCi0gICB9KTsKLSAgIHZhciBpbml0RWxlbSA9IFtjaFswXV07Ci0gICB2YXIgdGFpbCA9IGNoLnNsaWNlKDEpOwotICAgdGhpcy5zcXVhcmlmeSh0YWlsLCBpbml0RWxlbSwgbWluaW11bVNpZGVWYWx1ZSwgY29vcmQsIHByb3ApOwotIH0sCi0KLSAvKgotICAgTWV0aG9kOiBzcXVhcmlmeQotIAotICAgUGVyZm9ybXMgYW4gaGV1cmlzdGljIG1ldGhvZCB0byBjYWxjdWxhdGUgZGl2IGVsZW1lbnRzIHNpemVzIGluIG9yZGVyIHRvIGhhdmUgYSBnb29kIGFzcGVjdCByYXRpby4KLSAKLSAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgdGFpbCAtIEFuIGFycmF5IG9mIG5vZGVzLiAgCi0gICAgICAgaW5pdEVsZW0gLSBBbiBhcnJheSBvZiBub2RlcywgY29udGFpbmluZyB0aGUgaW5pdGlhbCBub2RlIHRvIGJlIGxhaWQgb3V0LgotICAgICAgIHcgLSBBIGZpeGVkIGRpbWVuc2lvbiB3aGVyZSBub2RlcyB3aWxsIGJlIGxhaWQgb3V0LgotICAgICAgIGNvb3JkIC0gQSBjb29yZGluYXRlcyBvYmplY3Qgc3BlY2lmeWluZyB3aWR0aCwgaGVpZ2h0LCBsZWZ0IGFuZCB0b3Agc3R5bGUgcHJvcGVydGllcy4KLSAqLwotIHNxdWFyaWZ5OiBmdW5jdGlvbih0YWlsLCBpbml0RWxlbSwgdywgY29vcmQsIHByb3ApIHsKLSAgIHRoaXMuY29tcHV0ZURpbSh0YWlsLCBpbml0RWxlbSwgdywgY29vcmQsIHRoaXMud29yc3RBc3BlY3RSYXRpbywgcHJvcCk7Ci0gfSwKLSAKLSAvKgotICAgIE1ldGhvZDogbGF5b3V0Um93Ci0gCi0gICBQZXJmb3JtcyB0aGUgbGF5b3V0IG9mIGFuIGFycmF5IG9mIG5vZGVzLgotIAotICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICBjaCAtIEFuIGFycmF5IG9mIG5vZGVzLiAgCi0gICAgICAgdyAtIEEgZml4ZWQgZGltZW5zaW9uIHdoZXJlIG5vZGVzIHdpbGwgYmUgbGFpZCBvdXQuCi0gICAgICAgY29vcmQgLSBBIGNvb3JkaW5hdGVzIG9iamVjdCBzcGVjaWZ5aW5nIHdpZHRoLCBoZWlnaHQsIGxlZnQgYW5kIHRvcCBzdHlsZSBwcm9wZXJ0aWVzLgotICovCi0gbGF5b3V0Um93OiBmdW5jdGlvbihjaCwgdywgY29vcmQsIHByb3ApIHsKLSAgIGlmKHRoaXMubGF5b3V0Lmhvcml6b250YWwoKSkgewotICAgICByZXR1cm4gdGhpcy5sYXlvdXRWKGNoLCB3LCBjb29yZCwgcHJvcCk7Ci0gICB9IGVsc2UgewotICAgICByZXR1cm4gdGhpcy5sYXlvdXRIKGNoLCB3LCBjb29yZCwgcHJvcCk7Ci0gICB9Ci0gfSwKLSAKLSBsYXlvdXRWOiBmdW5jdGlvbihjaCwgdywgY29vcmQsIHByb3ApIHsKLSAgIHZhciB0b3RhbEFyZWEgPSAwLCBybmQgPSBmdW5jdGlvbih4KSB7IHJldHVybiB4OyB9OyAKLSAgICQuZWFjaChjaCwgZnVuY3Rpb24oZWxlbSkgeyB0b3RhbEFyZWEgKz0gZWxlbS5fYXJlYTsgfSk7Ci0gICB2YXIgd2lkdGggPSBybmQodG90YWxBcmVhIC8gdyksIHRvcCA9ICAwOyAKLSAgIGZvcih2YXIgaT0wLCBsPWNoLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgdmFyIGggPSBybmQoY2hbaV0uX2FyZWEgLyB3aWR0aCk7Ci0gICAgIHZhciBjaGkgPSBjaFtpXTsKLSAgICAgY2hpLmdldFBvcyhwcm9wKS5zZXRjKGNvb3JkLmxlZnQsIGNvb3JkLnRvcCArIHRvcCk7Ci0gICAgIGNoaS5zZXREYXRhKCd3aWR0aCcsIHdpZHRoLCBwcm9wKTsKLSAgICAgY2hpLnNldERhdGEoJ2hlaWdodCcsIGgsIHByb3ApOwotICAgICB0b3AgKz0gaDsKLSAgIH0KLSAgIHZhciBhbnMgPSB7Ci0gICAgICdoZWlnaHQnOiBjb29yZC5oZWlnaHQsCi0gICAgICd3aWR0aCc6IGNvb3JkLndpZHRoIC0gd2lkdGgsCi0gICAgICd0b3AnOiBjb29yZC50b3AsCi0gICAgICdsZWZ0JzogY29vcmQubGVmdCArIHdpZHRoCi0gICB9OwotICAgLy90YWtlIG1pbmltdW0gc2lkZSB2YWx1ZS4KLSAgIGFucy5kaW0gPSBNYXRoLm1pbihhbnMud2lkdGgsIGFucy5oZWlnaHQpOwotICAgaWYoYW5zLmRpbSAhPSBhbnMuaGVpZ2h0KSB0aGlzLmxheW91dC5jaGFuZ2UoKTsKLSAgIHJldHVybiBhbnM7Ci0gfSwKLSAKLSBsYXlvdXRIOiBmdW5jdGlvbihjaCwgdywgY29vcmQsIHByb3ApIHsKLSAgIHZhciB0b3RhbEFyZWEgPSAwOyAKLSAgICQuZWFjaChjaCwgZnVuY3Rpb24oZWxlbSkgeyB0b3RhbEFyZWEgKz0gZWxlbS5fYXJlYTsgfSk7Ci0gICB2YXIgaGVpZ2h0ID0gdG90YWxBcmVhIC8gdywKLSAgICAgICB0b3AgPSBjb29yZC50b3AsIAotICAgICAgIGxlZnQgPSAwOwotICAgCi0gICBmb3IodmFyIGk9MCwgbD1jaC5sZW5ndGg7IGk8bDsgaSsrKSB7Ci0gICAgIHZhciBjaGkgPSBjaFtpXTsKLSAgICAgdmFyIHcgPSBjaGkuX2FyZWEgLyBoZWlnaHQ7Ci0gICAgIGNoaS5nZXRQb3MocHJvcCkuc2V0Yyhjb29yZC5sZWZ0ICsgbGVmdCwgdG9wKTsKLSAgICAgY2hpLnNldERhdGEoJ3dpZHRoJywgdywgcHJvcCk7Ci0gICAgIGNoaS5zZXREYXRhKCdoZWlnaHQnLCBoZWlnaHQsIHByb3ApOwotICAgICBsZWZ0ICs9IHc7Ci0gICB9Ci0gICB2YXIgYW5zID0gewotICAgICAnaGVpZ2h0JzogY29vcmQuaGVpZ2h0IC0gaGVpZ2h0LAotICAgICAnd2lkdGgnOiBjb29yZC53aWR0aCwKLSAgICAgJ3RvcCc6IGNvb3JkLnRvcCArIGhlaWdodCwKLSAgICAgJ2xlZnQnOiBjb29yZC5sZWZ0Ci0gICB9OwotICAgYW5zLmRpbSA9IE1hdGgubWluKGFucy53aWR0aCwgYW5zLmhlaWdodCk7Ci0gICBpZihhbnMuZGltICE9IGFucy53aWR0aCkgdGhpcy5sYXlvdXQuY2hhbmdlKCk7Ci0gICByZXR1cm4gYW5zOwotIH0KLX0pOwotCi1MYXlvdXRzLlRNLlN0cmlwID0gbmV3IENsYXNzKHsKLSAgSW1wbGVtZW50czogTGF5b3V0cy5UTS5BcmVhLAotCi0gICAgLyoKLSAgICAgIE1ldGhvZDogY29tcHV0ZQotICAgIAotICAgICBDYWxsZWQgYnkgbG9hZEpTT04gdG8gY2FsY3VsYXRlIHJlY3Vyc2l2ZWx5IGFsbCBub2RlIHBvc2l0aW9ucyBhbmQgbGF5IG91dCB0aGUgdHJlZS4KLSAgICAKLSAgICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgICAgICBqc29uIC0gQSBKU09OIHN1YnRyZWUuIFNlZSBhbHNvIDxMb2FkZXIubG9hZEpTT04+LiAKLSAgICAgICBjb29yZCAtIEEgY29vcmRpbmF0ZXMgb2JqZWN0IHNwZWNpZnlpbmcgd2lkdGgsIGhlaWdodCwgbGVmdCBhbmQgdG9wIHN0eWxlIHByb3BlcnRpZXMuCi0gICAgKi8KLSAgICBjb21wdXRlUG9zaXRpb25zOiBmdW5jdGlvbihub2RlLCBjb29yZCwgcHJvcCkgewotICAgICB2YXIgIGNoID0gbm9kZS5nZXRTdWJub2RlcyhbMSwgMV0sICJpZ25vcmUiKSwgCi0gICAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWcsCi0gICAgICAgICAgbWF4ID0gTWF0aC5tYXg7Ci0gICAgIGlmKGNoLmxlbmd0aCA+IDApIHsKLSAgICAgICB0aGlzLnByb2Nlc3NDaGlsZHJlbkxheW91dChub2RlLCBjaCwgY29vcmQsIHByb3ApOwotICAgICAgIGZvcih2YXIgaT0wLCBsPWNoLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICAgIHZhciBjaGkgPSBjaFtpXTsKLSAgICAgICAgIHZhciBvZmZzdCA9IGNvbmZpZy5vZmZzZXQsCi0gICAgICAgICAgICAgaGVpZ2h0ID0gbWF4KGNoaS5nZXREYXRhKCdoZWlnaHQnLCBwcm9wKSAtIG9mZnN0IC0gY29uZmlnLnRpdGxlSGVpZ2h0LCAwKSwKLSAgICAgICAgICAgICB3aWR0aCAgPSBtYXgoY2hpLmdldERhdGEoJ3dpZHRoJywgcHJvcCkgIC0gb2Zmc3QsIDApOwotICAgICAgICAgdmFyIGNoaXBvcyA9IGNoaS5nZXRQb3MocHJvcCk7Ci0gICAgICAgICBjb29yZCA9IHsKLSAgICAgICAgICAgJ3dpZHRoJzogd2lkdGgsCi0gICAgICAgICAgICdoZWlnaHQnOiBoZWlnaHQsCi0gICAgICAgICAgICd0b3AnOiBjaGlwb3MueSArIGNvbmZpZy50aXRsZUhlaWdodCwKLSAgICAgICAgICAgJ2xlZnQnOiBjaGlwb3MueAotICAgICAgICAgfTsKLSAgICAgICAgIHRoaXMuY29tcHV0ZVBvc2l0aW9ucyhjaGksIGNvb3JkLCBwcm9wKTsKLSAgICAgICB9Ci0gICAgIH0KLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICBNZXRob2Q6IHByb2Nlc3NDaGlsZHJlbkxheW91dAotICAgIAotICAgICBDb21wdXRlcyBjaGlsZHJlbiByZWFsIGFyZWFzIGFuZCBvdGhlciB1c2VmdWwgcGFyYW1ldGVycyBmb3IgcGVyZm9ybWluZyB0aGUgU3RyaXAgYWxnb3JpdGhtLgotICAgIAotICAgICAgUGFyYW1ldGVyczoKLSAgICAKLSAgICAgICAgIHBhciAtIFRoZSBwYXJlbnQgbm9kZSBvZiB0aGUganNvbiBzdWJ0cmVlLiAgCi0gICAgICAgICBjaCAtIEFuIEFycmF5IG9mIG5vZGVzCi0gICAgICAgICBjb29yZCAtIEEgY29vcmRpbmF0ZXMgb2JqZWN0IHNwZWNpZnlpbmcgd2lkdGgsIGhlaWdodCwgbGVmdCBhbmQgdG9wIHN0eWxlIHByb3BlcnRpZXMuCi0gICAgKi8KLSAgICBwcm9jZXNzQ2hpbGRyZW5MYXlvdXQ6IGZ1bmN0aW9uKHBhciwgY2gsIGNvb3JkLCBwcm9wKSB7Ci0gICAgIC8vY29tcHV0ZSBjaGlsZHJlbiByZWFsIGFyZWFzCi0gICAgICB2YXIgcGFyZW50QXJlYSA9IGNvb3JkLndpZHRoICogY29vcmQuaGVpZ2h0OwotICAgICAgdmFyIGksIGw9Y2gubGVuZ3RoLCB0b3RhbENoQXJlYT0wLCBjaEFyZWEgPSBbXTsKLSAgICAgIGZvcihpPTA7IGk8bDsgaSsrKSB7Ci0gICAgICAgIGNoQXJlYVtpXSA9ICtjaFtpXS5nZXREYXRhKCdhcmVhJywgcHJvcCk7Ci0gICAgICAgIHRvdGFsQ2hBcmVhICs9IGNoQXJlYVtpXTsKLSAgICAgIH0KLSAgICAgIGZvcihpPTA7IGk8bDsgaSsrKSB7Ci0gICAgICAgIGNoW2ldLl9hcmVhID0gcGFyZW50QXJlYSAqIGNoQXJlYVtpXSAvIHRvdGFsQ2hBcmVhOwotICAgICAgfQotICAgICB2YXIgc2lkZSA9IHRoaXMubGF5b3V0Lmhvcml6b250YWwoKT8gY29vcmQud2lkdGggOiBjb29yZC5oZWlnaHQ7Ci0gICAgIHZhciBpbml0RWxlbSA9IFtjaFswXV07Ci0gICAgIHZhciB0YWlsID0gY2guc2xpY2UoMSk7Ci0gICAgIHRoaXMuc3RyaXBpZnkodGFpbCwgaW5pdEVsZW0sIHNpZGUsIGNvb3JkLCBwcm9wKTsKLSAgICB9LAotICAgIAotICAgIC8qCi0gICAgICBNZXRob2Q6IHN0cmlwaWZ5Ci0gICAgCi0gICAgIFBlcmZvcm1zIGFuIGhldXJpc3RpYyBtZXRob2QgdG8gY2FsY3VsYXRlIGRpdiBlbGVtZW50cyBzaXplcyBpbiBvcmRlciB0byBoYXZlIAotICAgICBhIGdvb2QgY29tcHJvbWlzZSBiZXR3ZWVuIGFzcGVjdCByYXRpbyBhbmQgb3JkZXIuCi0gICAgCi0gICAgICBQYXJhbWV0ZXJzOgotICAgIAotICAgICAgICAgdGFpbCAtIEFuIGFycmF5IG9mIG5vZGVzLiAgCi0gICAgICAgICBpbml0RWxlbSAtIEFuIGFycmF5IG9mIG5vZGVzLgotICAgICAgICAgdyAtIEEgZml4ZWQgZGltZW5zaW9uIHdoZXJlIG5vZGVzIHdpbGwgYmUgbGF5ZWQgb3V0LgotICAgICAgIGNvb3JkIC0gQSBjb29yZGluYXRlcyBvYmplY3Qgc3BlY2lmeWluZyB3aWR0aCwgaGVpZ2h0LCBsZWZ0IGFuZCB0b3Agc3R5bGUgcHJvcGVydGllcy4KLSAgICAqLwotICAgIHN0cmlwaWZ5OiBmdW5jdGlvbih0YWlsLCBpbml0RWxlbSwgdywgY29vcmQsIHByb3ApIHsKLSAgICAgdGhpcy5jb21wdXRlRGltKHRhaWwsIGluaXRFbGVtLCB3LCBjb29yZCwgdGhpcy5hdmdBc3BlY3RSYXRpbywgcHJvcCk7Ci0gICAgfSwKLSAgICAKLSAgICAvKgotICAgICAgTWV0aG9kOiBsYXlvdXRSb3cKLSAgICAKLSAgICAgUGVyZm9ybXMgdGhlIGxheW91dCBvZiBhbiBhcnJheSBvZiBub2Rlcy4KLSAgICAKLSAgICAgIFBhcmFtZXRlcnM6Ci0gICAgCi0gICAgICAgICBjaCAtIEFuIGFycmF5IG9mIG5vZGVzLiAgCi0gICAgICAgICB3IC0gQSBmaXhlZCBkaW1lbnNpb24gd2hlcmUgbm9kZXMgd2lsbCBiZSBsYWlkIG91dC4KLSAgICAgICAgIGNvb3JkIC0gQSBjb29yZGluYXRlcyBvYmplY3Qgc3BlY2lmeWluZyB3aWR0aCwgaGVpZ2h0LCBsZWZ0IGFuZCB0b3Agc3R5bGUgcHJvcGVydGllcy4KLSAgICAqLwotICAgIGxheW91dFJvdzogZnVuY3Rpb24oY2gsIHcsIGNvb3JkLCBwcm9wKSB7Ci0gICAgIGlmKHRoaXMubGF5b3V0Lmhvcml6b250YWwoKSkgewotICAgICAgIHJldHVybiB0aGlzLmxheW91dEgoY2gsIHcsIGNvb3JkLCBwcm9wKTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRWKGNoLCB3LCBjb29yZCwgcHJvcCk7Ci0gICAgIH0KLSAgICB9LAotICAgIAotICAgIGxheW91dFY6IGZ1bmN0aW9uKGNoLCB3LCBjb29yZCwgcHJvcCkgewotICAgICB2YXIgdG90YWxBcmVhID0gMDsgCi0gICAgICQuZWFjaChjaCwgZnVuY3Rpb24oZWxlbSkgeyB0b3RhbEFyZWEgKz0gZWxlbS5fYXJlYTsgfSk7Ci0gICAgIHZhciB3aWR0aCA9IHRvdGFsQXJlYSAvIHcsIHRvcCA9ICAwOyAKLSAgICAgZm9yKHZhciBpPTAsIGw9Y2gubGVuZ3RoOyBpPGw7IGkrKykgewotICAgICAgIHZhciBjaGkgPSBjaFtpXTsKLSAgICAgICB2YXIgaCA9IGNoaS5fYXJlYSAvIHdpZHRoOwotICAgICAgIGNoaS5nZXRQb3MocHJvcCkuc2V0Yyhjb29yZC5sZWZ0LCAKLSAgICAgICAgICAgY29vcmQudG9wICsgKHcgLSBoIC0gdG9wKSk7Ci0gICAgICAgY2hpLnNldERhdGEoJ3dpZHRoJywgd2lkdGgsIHByb3ApOwotICAgICAgIGNoaS5zZXREYXRhKCdoZWlnaHQnLCBoLCBwcm9wKTsKLSAgICAgICB0b3AgKz0gaDsKLSAgICAgfQotICAgIAotICAgICByZXR1cm4gewotICAgICAgICdoZWlnaHQnOiBjb29yZC5oZWlnaHQsCi0gICAgICAgJ3dpZHRoJzogY29vcmQud2lkdGggLSB3aWR0aCwKLSAgICAgICAndG9wJzogY29vcmQudG9wLAotICAgICAgICdsZWZ0JzogY29vcmQubGVmdCArIHdpZHRoLAotICAgICAgICdkaW0nOiB3Ci0gICAgIH07Ci0gICAgfSwKLSAgICAKLSAgICBsYXlvdXRIOiBmdW5jdGlvbihjaCwgdywgY29vcmQsIHByb3ApIHsKLSAgICAgdmFyIHRvdGFsQXJlYSA9IDA7IAotICAgICAkLmVhY2goY2gsIGZ1bmN0aW9uKGVsZW0pIHsgdG90YWxBcmVhICs9IGVsZW0uX2FyZWE7IH0pOwotICAgICB2YXIgaGVpZ2h0ID0gdG90YWxBcmVhIC8gdywKLSAgICAgICAgIHRvcCA9IGNvb3JkLmhlaWdodCAtIGhlaWdodCwgCi0gICAgICAgICBsZWZ0ID0gMDsKLSAgICAgCi0gICAgIGZvcih2YXIgaT0wLCBsPWNoLmxlbmd0aDsgaTxsOyBpKyspIHsKLSAgICAgICB2YXIgY2hpID0gY2hbaV07Ci0gICAgICAgdmFyIHMgPSBjaGkuX2FyZWEgLyBoZWlnaHQ7Ci0gICAgICAgY2hpLmdldFBvcyhwcm9wKS5zZXRjKGNvb3JkLmxlZnQgKyBsZWZ0LCBjb29yZC50b3AgKyB0b3ApOwotICAgICAgIGNoaS5zZXREYXRhKCd3aWR0aCcsIHMsIHByb3ApOwotICAgICAgIGNoaS5zZXREYXRhKCdoZWlnaHQnLCBoZWlnaHQsIHByb3ApOwotICAgICAgIGxlZnQgKz0gczsKLSAgICAgfQotICAgICByZXR1cm4gewotICAgICAgICdoZWlnaHQnOiBjb29yZC5oZWlnaHQgLSBoZWlnaHQsCi0gICAgICAgJ3dpZHRoJzogY29vcmQud2lkdGgsCi0gICAgICAgJ3RvcCc6IGNvb3JkLnRvcCwKLSAgICAgICAnbGVmdCc6IGNvb3JkLmxlZnQsCi0gICAgICAgJ2RpbSc6IHcKLSAgICAgfTsKLSAgICB9Ci0gfSk7Ci0KLQotLyoKLSAqIENsYXNzOiBMYXlvdXRzLkljaWNsZQotICoKLSAqIEltcGxlbWVudHMgdGhlIGljaWNsZSB0cmVlIGxheW91dC4KLSAqCi0gKiBJbXBsZW1lbnRlZCBCeToKLSAqCi0gKiA8SWNpY2xlPgotICoKLSAqLwotCi1MYXlvdXRzLkljaWNsZSA9IG5ldyBDbGFzcyh7Ci0gLyoKLSAgKiBNZXRob2Q6IGNvbXB1dGUKLSAgKgotICAqIENhbGxlZCBieSBsb2FkSlNPTiB0byBjYWxjdWxhdGUgYWxsIG5vZGUgcG9zaXRpb25zLgotICAqCi0gICogUGFyYW1ldGVyczoKLSAgKgotICAqIHBvc1R5cGUgLSBUaGUgbm9kZXMnIHBvc2l0aW9uIHRvIGNvbXB1dGUuIEVpdGhlciAic3RhcnQiLCAiZW5kIiBvcgotICAqICAgICAgICAgICAgImN1cnJlbnQiLiBEZWZhdWx0cyB0byAiY3VycmVudCIuCi0gICovCi0gIGNvbXB1dGU6IGZ1bmN0aW9uKHBvc1R5cGUpIHsKLSAgICBwb3NUeXBlID0gcG9zVHlwZSB8fCAiY3VycmVudCI7Ci0KLSAgICB2YXIgcm9vdCA9IHRoaXMuZ3JhcGguZ2V0Tm9kZSh0aGlzLnJvb3QpLAotICAgICAgICBjb25maWcgPSB0aGlzLmNvbmZpZywKLSAgICAgICAgc2l6ZSA9IHRoaXMuY2FudmFzLmdldFNpemUoKSwKLSAgICAgICAgd2lkdGggPSBzaXplLndpZHRoLAotICAgICAgICBoZWlnaHQgPSBzaXplLmhlaWdodCwKLSAgICAgICAgb2Zmc2V0ID0gY29uZmlnLm9mZnNldCwKLSAgICAgICAgbGV2ZWxzVG9TaG93ID0gY29uZmlnLmNvbnN0cmFpbmVkID8gY29uZmlnLmxldmVsc1RvU2hvdyA6IE51bWJlci5NQVhfVkFMVUU7Ci0KLSAgICB0aGlzLmNvbnRyb2xsZXIub25CZWZvcmVDb21wdXRlKHJvb3QpOwotCi0gICAgR3JhcGguVXRpbC5jb21wdXRlTGV2ZWxzKHRoaXMuZ3JhcGgsIHJvb3QuaWQsIDAsICJpZ25vcmUiKTsKLQotICAgIHZhciB0cmVlRGVwdGggPSAwOwotCi0gICAgR3JhcGguVXRpbC5lYWNoTGV2ZWwocm9vdCwgMCwgZmFsc2UsIGZ1bmN0aW9uIChuLCBkKSB7IGlmKGQgPiB0cmVlRGVwdGgpIHRyZWVEZXB0aCA9IGQ7IH0pOwotCi0gICAgdmFyIHN0YXJ0Tm9kZSA9IHRoaXMuZ3JhcGguZ2V0Tm9kZSh0aGlzLmNsaWNrZWROb2RlICYmIHRoaXMuY2xpY2tlZE5vZGUuaWQgfHwgcm9vdC5pZCk7Ci0gICAgdmFyIG1heERlcHRoID0gTWF0aC5taW4odHJlZURlcHRoLCBsZXZlbHNUb1Nob3ctMSk7Ci0gICAgdmFyIGluaXRpYWxEZXB0aCA9IHN0YXJ0Tm9kZS5fZGVwdGg7Ci0gICAgaWYodGhpcy5sYXlvdXQuaG9yaXpvbnRhbCgpKSB7Ci0gICAgICB0aGlzLmNvbXB1dGVTdWJ0cmVlKHN0YXJ0Tm9kZSwgLXdpZHRoLzIsIC1oZWlnaHQvMiwgd2lkdGgvKG1heERlcHRoKzEpLCBoZWlnaHQsIGluaXRpYWxEZXB0aCwgbWF4RGVwdGgsIHBvc1R5cGUpOwotICAgIH0gZWxzZSB7Ci0gICAgICB0aGlzLmNvbXB1dGVTdWJ0cmVlKHN0YXJ0Tm9kZSwgLXdpZHRoLzIsIC1oZWlnaHQvMiwgd2lkdGgsIGhlaWdodC8obWF4RGVwdGgrMSksIGluaXRpYWxEZXB0aCwgbWF4RGVwdGgsIHBvc1R5cGUpOwotICAgIH0KLSAgfSwKLQotICBjb21wdXRlU3VidHJlZTogZnVuY3Rpb24gKHJvb3QsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGluaXRpYWxEZXB0aCwgbWF4RGVwdGgsIHBvc1R5cGUpIHsKLSAgICByb290LmdldFBvcyhwb3NUeXBlKS5zZXRjKHgsIHkpOwotICAgIHJvb3Quc2V0RGF0YSgnd2lkdGgnLCB3aWR0aCwgcG9zVHlwZSk7Ci0gICAgcm9vdC5zZXREYXRhKCdoZWlnaHQnLCBoZWlnaHQsIHBvc1R5cGUpOwotCi0gICAgdmFyIG5vZGVMZW5ndGgsIHByZXZOb2RlTGVuZ3RoID0gMCwgdG90YWxEaW0gPSAwOwotICAgIHZhciBjaGlsZHJlbiA9IEdyYXBoLlV0aWwuZ2V0U3Vibm9kZXMocm9vdCwgWzEsIDFdLCAnaWdub3JlJyk7IC8vIG5leHQgbGV2ZWwgZnJvbSB0aGlzIG5vZGUKLQotICAgIGlmKCFjaGlsZHJlbi5sZW5ndGgpCi0gICAgICByZXR1cm47Ci0KLSAgICAkLmVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uKGUpIHsgdG90YWxEaW0gKz0gZS5nZXREYXRhKCdkaW0nKTsgfSk7Ci0KLSAgICBmb3IodmFyIGk9MCwgbD1jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgIGlmKHRoaXMubGF5b3V0Lmhvcml6b250YWwoKSkgewotICAgICAgICBub2RlTGVuZ3RoID0gaGVpZ2h0ICogY2hpbGRyZW5baV0uZ2V0RGF0YSgnZGltJykgLyB0b3RhbERpbTsKLSAgICAgICAgdGhpcy5jb21wdXRlU3VidHJlZShjaGlsZHJlbltpXSwgeCt3aWR0aCwgeSwgd2lkdGgsIG5vZGVMZW5ndGgsIGluaXRpYWxEZXB0aCwgbWF4RGVwdGgsIHBvc1R5cGUpOwotICAgICAgICB5ICs9IG5vZGVMZW5ndGg7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBub2RlTGVuZ3RoID0gd2lkdGggKiBjaGlsZHJlbltpXS5nZXREYXRhKCdkaW0nKSAvIHRvdGFsRGltOwotICAgICAgICB0aGlzLmNvbXB1dGVTdWJ0cmVlKGNoaWxkcmVuW2ldLCB4LCB5K2hlaWdodCwgbm9kZUxlbmd0aCwgaGVpZ2h0LCBpbml0aWFsRGVwdGgsIG1heERlcHRoLCBwb3NUeXBlKTsKLSAgICAgICAgeCArPSBub2RlTGVuZ3RoOwotICAgICAgfQotICAgIH0KLSAgfQotfSk7Ci0KLQotCi0vKgotICogRmlsZTogSWNpY2xlLmpzCi0gKgotKi8KLQotLyoKLSAgQ2xhc3M6IEljaWNsZQotICAKLSAgSWNpY2xlIHNwYWNlIGZpbGxpbmcgdmlzdWFsaXphdGlvbi4KLSAgCi0gIEltcGxlbWVudHM6Ci0gIAotICBBbGwgPExvYWRlcj4gbWV0aG9kcwotICAKLSAgQ29uc3RydWN0b3IgT3B0aW9uczoKLSAgCi0gIEluaGVyaXRzIG9wdGlvbnMgZnJvbQotICAKLSAgLSA8T3B0aW9ucy5DYW52YXM+Ci0gIC0gPE9wdGlvbnMuQ29udHJvbGxlcj4KLSAgLSA8T3B0aW9ucy5Ob2RlPgotICAtIDxPcHRpb25zLkVkZ2U+Ci0gIC0gPE9wdGlvbnMuTGFiZWw+Ci0gIC0gPE9wdGlvbnMuRXZlbnRzPgotICAtIDxPcHRpb25zLlRpcHM+Ci0gIC0gPE9wdGlvbnMuTm9kZVN0eWxlcz4KLSAgLSA8T3B0aW9ucy5OYXZpZ2F0aW9uPgotICAKLSAgQWRkaXRpb25hbGx5LCB0aGVyZSBhcmUgb3RoZXIgcGFyYW1ldGVycyBhbmQgc29tZSBkZWZhdWx0IHZhbHVlcyBjaGFuZ2VkCi0KLSAgb3JpZW50YXRpb24gLSAoc3RyaW5nKSBEZWZhdWx0J3MgKmgqLiBXaGV0aGVyIHRvIHNldCBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGxheW91dHMuIFBvc3NpYmxlIHZhbHVlcyBhcmUgJ2gnIGFuZCAndicuCi0gIG9mZnNldCAtIChudW1iZXIpIERlZmF1bHQncyAqMiouIEJveGVzIG9mZnNldC4KLSAgY29uc3RyYWluZWQgLSAoYm9vbGVhbikgRGVmYXVsdCdzICpmYWxzZSouIFdoZXRoZXIgdG8gc2hvdyB0aGUgZW50aXJlIHRyZWUgd2hlbiBsb2FkZWQgb3IganVzdCB0aGUgbnVtYmVyIG9mIGxldmVscyBzcGVjaWZpZWQgYnkgX2xldmVsc1RvU2hvd18uCi0gIGxldmVsc1RvU2hvdyAtIChudW1iZXIpIERlZmF1bHQncyAqMyouIFRoZSBudW1iZXIgb2YgbGV2ZWxzIHRvIHNob3cgZm9yIGEgc3VidHJlZS4gVGhpcyBudW1iZXIgaXMgcmVsYXRpdmUgdG8gdGhlIHNlbGVjdGVkIG5vZGUuCi0gIGFuaW1hdGUgLSAoYm9vbGVhbikgRGVmYXVsdCdzICpmYWxzZSouIFdoZXRoZXIgdG8gYW5pbWF0ZSB0cmFuc2l0aW9ucy4KLSAgTm9kZS50eXBlIC0gRGVzY3JpYmVkIGluIDxPcHRpb25zLk5vZGU+LiBEZWZhdWx0J3MgKnJlY3RhbmdsZSouCi0gIExhYmVsLnR5cGUgLSBEZXNjcmliZWQgaW4gPE9wdGlvbnMuTGFiZWw+LiBEZWZhdWx0J3MgKk5hdGl2ZSouCi0gIGR1cmF0aW9uIC0gRGVzY3JpYmVkIGluIDxPcHRpb25zLkZ4Pi4gRGVmYXVsdCdzICo3MDAqLgotICBmcHMgLSBEZXNjcmliZWQgaW4gPE9wdGlvbnMuRng+LiBEZWZhdWx0J3MgKjQ1Ki4KLSAgCi0gIEluc3RhbmNlIFByb3BlcnRpZXM6Ci0gIAotICBjYW52YXMgLSBBY2Nlc3MgYSA8Q2FudmFzPiBpbnN0YW5jZS4KLSAgZ3JhcGggLSBBY2Nlc3MgYSA8R3JhcGg+IGluc3RhbmNlLgotICBvcCAtIEFjY2VzcyBhIDxJY2ljbGUuT3A+IGluc3RhbmNlLgotICBmeCAtIEFjY2VzcyBhIDxJY2ljbGUuUGxvdD4gaW5zdGFuY2UuCi0gIGxhYmVscyAtIEFjY2VzcyBhIDxJY2ljbGUuTGFiZWw+IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4KLQotKi8KLQotJGppdC5JY2ljbGUgPSBuZXcgQ2xhc3MoewotICBJbXBsZW1lbnRzOiBbIExvYWRlciwgRXh0cmFzLCBMYXlvdXRzLkljaWNsZSBdLAotCi0gIGxheW91dDogewotICAgIG9yaWVudGF0aW9uOiAiaCIsCi0gICAgdmVydGljYWw6IGZ1bmN0aW9uKCl7Ci0gICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiA9PSAidiI7Ci0gICAgfSwKLSAgICBob3Jpem9udGFsOiBmdW5jdGlvbigpewotICAgICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb24gPT0gImgiOwotICAgIH0sCi0gICAgY2hhbmdlOiBmdW5jdGlvbigpewotICAgICAgdGhpcy5vcmllbnRhdGlvbiA9IHRoaXMudmVydGljYWwoKT8gImgiIDogInYiOwotICAgIH0KLSAgfSwKLQotICBpbml0aWFsaXplOiBmdW5jdGlvbihjb250cm9sbGVyKSB7Ci0gICAgdmFyIGNvbmZpZyA9IHsKLSAgICAgIGFuaW1hdGU6IGZhbHNlLAotICAgICAgb3JpZW50YXRpb246ICJoIiwKLSAgICAgIG9mZnNldDogMiwKLSAgICAgIGxldmVsc1RvU2hvdzogTnVtYmVyLk1BWF9WQUxVRSwKLSAgICAgIGNvbnN0cmFpbmVkOiBmYWxzZSwKLSAgICAgIE5vZGU6IHsKLSAgICAgICAgdHlwZTogJ3JlY3RhbmdsZScsCi0gICAgICAgIG92ZXJyaWRhYmxlOiB0cnVlCi0gICAgICB9LAotICAgICAgRWRnZTogewotICAgICAgICB0eXBlOiAnbm9uZScKLSAgICAgIH0sCi0gICAgICBMYWJlbDogewotICAgICAgICB0eXBlOiAnTmF0aXZlJwotICAgICAgfSwKLSAgICAgIGR1cmF0aW9uOiA3MDAsCi0gICAgICBmcHM6IDQ1Ci0gICAgfTsKLQotICAgIHZhciBvcHRzID0gT3B0aW9ucygiQ2FudmFzIiwgIk5vZGUiLCAiRWRnZSIsICJGeCIsICJUaXBzIiwgIk5vZGVTdHlsZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAiRXZlbnRzIiwgIk5hdmlnYXRpb24iLCAiQ29udHJvbGxlciIsICJMYWJlbCIpOwotICAgIHRoaXMuY29udHJvbGxlciA9IHRoaXMuY29uZmlnID0gJC5tZXJnZShvcHRzLCBjb25maWcsIGNvbnRyb2xsZXIpOwotICAgIHRoaXMubGF5b3V0Lm9yaWVudGF0aW9uID0gdGhpcy5jb25maWcub3JpZW50YXRpb247Ci0KLSAgICB2YXIgY2FudmFzQ29uZmlnID0gdGhpcy5jb25maWc7Ci0gICAgaWYgKGNhbnZhc0NvbmZpZy51c2VDYW52YXMpIHsKLSAgICAgIHRoaXMuY2FudmFzID0gY2FudmFzQ29uZmlnLnVzZUNhbnZhczsKLSAgICAgIHRoaXMuY29uZmlnLmxhYmVsQ29udGFpbmVyID0gdGhpcy5jYW52YXMuaWQgKyAnLWxhYmVsJzsKLSAgICB9IGVsc2UgewotICAgICAgdGhpcy5jYW52YXMgPSBuZXcgQ2FudmFzKHRoaXMsIGNhbnZhc0NvbmZpZyk7Ci0gICAgICB0aGlzLmNvbmZpZy5sYWJlbENvbnRhaW5lciA9ICh0eXBlb2YgY2FudmFzQ29uZmlnLmluamVjdEludG8gPT0gJ3N0cmluZyc/IGNhbnZhc0NvbmZpZy5pbmplY3RJbnRvIDogY2FudmFzQ29uZmlnLmluamVjdEludG8uaWQpICsgJy1sYWJlbCc7Ci0gICAgfQotCi0gICAgdGhpcy5ncmFwaE9wdGlvbnMgPSB7Ci0gICAgICAna2xhc3MnOiBDb21wbGV4LAotICAgICAgJ05vZGUnOiB7Ci0gICAgICAgICdzZWxlY3RlZCc6IGZhbHNlLAotICAgICAgICAnZXhpc3QnOiB0cnVlLAotICAgICAgICAnZHJhd24nOiB0cnVlCi0gICAgICB9Ci0gICAgfTsKLQotICAgIHRoaXMuZ3JhcGggPSBuZXcgR3JhcGgoCi0gICAgICB0aGlzLmdyYXBoT3B0aW9ucywgdGhpcy5jb25maWcuTm9kZSwgdGhpcy5jb25maWcuRWRnZSwgdGhpcy5jb25maWcuTGFiZWwpOwotCi0gICAgdGhpcy5sYWJlbHMgPSBuZXcgJGppdC5JY2ljbGUuTGFiZWxbdGhpcy5jb25maWcuTGFiZWwudHlwZV0odGhpcyk7Ci0gICAgdGhpcy5meCA9IG5ldyAkaml0LkljaWNsZS5QbG90KHRoaXMsICRqaXQuSWNpY2xlKTsKLSAgICB0aGlzLm9wID0gbmV3ICRqaXQuSWNpY2xlLk9wKHRoaXMpOwotICAgIHRoaXMuZ3JvdXAgPSBuZXcgJGppdC5JY2ljbGUuR3JvdXAodGhpcyk7Ci0gICAgdGhpcy5jbGlja2VkTm9kZSA9IG51bGw7Ci0KLSAgICB0aGlzLmluaXRpYWxpemVFeHRyYXMoKTsKLSAgfSwKLQotICAvKiAKLSAgICBNZXRob2Q6IHJlZnJlc2ggCi0gICAgCi0gICAgQ29tcHV0ZXMgcG9zaXRpb25zIGFuZCBwbG90cyB0aGUgdHJlZS4KLSAgKi8KLSAgcmVmcmVzaDogZnVuY3Rpb24oKXsKLSAgICB2YXIgbGFiZWxUeXBlID0gdGhpcy5jb25maWcuTGFiZWwudHlwZTsKLSAgICBpZihsYWJlbFR5cGUgIT0gJ05hdGl2ZScpIHsKLSAgICAgIHZhciB0aGF0ID0gdGhpczsKLSAgICAgIHRoaXMuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgeyB0aGF0LmxhYmVscy5oaWRlTGFiZWwobiwgZmFsc2UpOyB9KTsKLSAgICB9Ci0gICAgdGhpcy5jb21wdXRlKCk7Ci0gICAgdGhpcy5wbG90KCk7Ci0gIH0sCi0KLSAgLyogCi0gICAgTWV0aG9kOiBwbG90IAotICAgIAotICAgIFBsb3RzIHRoZSBJY2ljbGUgdmlzdWFsaXphdGlvbi4gVGhpcyBpcyBhIHNob3J0Y3V0IHRvICpmeC5wbG90Ki4gCi0gIAotICAgKi8KLSAgcGxvdDogZnVuY3Rpb24oKXsKLSAgICB0aGlzLmZ4LnBsb3QodGhpcy5jb25maWcpOwotICB9LAotCi0gIC8qIAotICAgIE1ldGhvZDogZW50ZXIgCi0gICAgCi0gICAgU2V0cyB0aGUgbm9kZSBhcyByb290LgotICAgIAotICAgICBQYXJhbWV0ZXJzOgotICAgICAKLSAgICAgbm9kZSAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+LgotICAKLSAgICovCi0gIGVudGVyOiBmdW5jdGlvbiAobm9kZSkgewotICAgIGlmICh0aGlzLmJ1c3kpCi0gICAgICByZXR1cm47Ci0gICAgdGhpcy5idXN5ID0gdHJ1ZTsKLQotICAgIHZhciB0aGF0ID0gdGhpcywKLSAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWc7Ci0KLSAgICB2YXIgY2FsbGJhY2sgPSB7Ci0gICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgLy9jb21wdXRlIHBvc2l0aW9ucyBvZiBuZXdseSBpbnNlcnRlZCBub2RlcwotICAgICAgICBpZihjb25maWcucmVxdWVzdCkKLSAgICAgICAgICB0aGF0LmNvbXB1dGUoKTsKLQotICAgICAgICBpZihjb25maWcuYW5pbWF0ZSkgewotICAgICAgICAgIHRoYXQuZ3JhcGgubm9kZUxpc3Quc2V0RGF0YXNldChbJ2N1cnJlbnQnLCAnZW5kJ10sIHsKLSAgICAgICAgICAgICdhbHBoYSc6IFsxLCAwXSAvL2ZhZGUgbm9kZXMKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIEdyYXBoLlV0aWwuZWFjaFN1YmdyYXBoKG5vZGUsIGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgIG4uc2V0RGF0YSgnYWxwaGEnLCAxLCAnZW5kJyk7Ci0gICAgICAgICAgfSwgImlnbm9yZSIpOwotCi0gICAgICAgICAgdGhhdC5meC5hbmltYXRlKHsKLSAgICAgICAgICAgIGR1cmF0aW9uOiA1MDAsCi0gICAgICAgICAgICBtb2RlczpbJ25vZGUtcHJvcGVydHk6YWxwaGEnXSwKLSAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICB0aGF0LmNsaWNrZWROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgdGhhdC5jb21wdXRlKCdlbmQnKTsKLQotICAgICAgICAgICAgICB0aGF0LmZ4LmFuaW1hdGUoewotICAgICAgICAgICAgICAgIG1vZGVzOlsnbGluZWFyJywgJ25vZGUtcHJvcGVydHk6d2lkdGg6aGVpZ2h0J10sCi0gICAgICAgICAgICAgICAgZHVyYXRpb246IDEwMDAsCi0gICAgICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICB0aGF0LmJ1c3kgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgIHRoYXQuY2xpY2tlZE5vZGUgPSBub2RlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhhdC5jbGlja2VkTm9kZSA9IG5vZGU7Ci0gICAgICAgICAgdGhhdC5idXN5ID0gZmFsc2U7Ci0gICAgICAgICAgdGhhdC5yZWZyZXNoKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9OwotCi0gICAgaWYoY29uZmlnLnJlcXVlc3QpIHsKLSAgICAgIHRoaXMucmVxdWVzdE5vZGVzKGNsaWNrZWROb2RlLCBjYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGNhbGxiYWNrLm9uQ29tcGxldGUoKTsKLSAgICB9Ci0gIH0sCi0KLSAgLyogCi0gICAgTWV0aG9kOiBvdXQgCi0gICAgCi0gICAgU2V0cyB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgbm9kZSBhcyByb290LgotICAKLSAgICovCi0gIG91dDogZnVuY3Rpb24oKXsKLSAgICBpZih0aGlzLmJ1c3kpCi0gICAgICByZXR1cm47Ci0KLSAgICB2YXIgdGhhdCA9IHRoaXMsCi0gICAgICAgIEdVdGlsID0gR3JhcGguVXRpbCwKLSAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWcsCi0gICAgICAgIGdyYXBoID0gdGhpcy5ncmFwaCwKLSAgICAgICAgcGFyZW50cyA9IEdVdGlsLmdldFBhcmVudHMoZ3JhcGguZ2V0Tm9kZSh0aGlzLmNsaWNrZWROb2RlICYmIHRoaXMuY2xpY2tlZE5vZGUuaWQgfHwgdGhpcy5yb290KSksCi0gICAgICAgIHBhcmVudCA9IHBhcmVudHNbMF0sCi0gICAgICAgIGNsaWNrZWROb2RlID0gcGFyZW50LAotICAgICAgICBwcmV2aW91c0NsaWNrZWROb2RlID0gdGhpcy5jbGlja2VkTm9kZTsKLQotICAgIHRoaXMuYnVzeSA9IHRydWU7Ci0gICAgdGhpcy5ldmVudHMuaG92ZXJlZE5vZGUgPSBmYWxzZTsKLQotICAgIGlmKCFwYXJlbnQpIHsKLSAgICAgIHRoaXMuYnVzeSA9IGZhbHNlOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vZmluYWwgcGxvdCBjYWxsYmFjawotICAgIGNhbGxiYWNrID0gewotICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoYXQuY2xpY2tlZE5vZGUgPSBwYXJlbnQ7Ci0gICAgICAgIGlmKGNvbmZpZy5yZXF1ZXN0KSB7Ci0gICAgICAgICAgdGhhdC5yZXF1ZXN0Tm9kZXMocGFyZW50LCB7Ci0gICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgdGhhdC5jb21wdXRlKCk7Ci0gICAgICAgICAgICAgIHRoYXQucGxvdCgpOwotICAgICAgICAgICAgICB0aGF0LmJ1c3kgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGF0LmNvbXB1dGUoKTsKLSAgICAgICAgICB0aGF0LnBsb3QoKTsKLSAgICAgICAgICB0aGF0LmJ1c3kgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH07Ci0KLSAgICAvL2FuaW1hdGUgbm9kZSBwb3NpdGlvbnMKLSAgICBpZihjb25maWcuYW5pbWF0ZSkgewotICAgICAgdGhpcy5jbGlja2VkTm9kZSA9IGNsaWNrZWROb2RlOwotICAgICAgdGhpcy5jb21wdXRlKCdlbmQnKTsKLSAgICAgIC8vYW5pbWF0ZSB0aGUgdmlzaWJsZSBzdWJ0cmVlIG9ubHkKLSAgICAgIHRoaXMuY2xpY2tlZE5vZGUgPSBwcmV2aW91c0NsaWNrZWROb2RlOwotICAgICAgdGhpcy5meC5hbmltYXRlKHsKLSAgICAgICAgbW9kZXM6WydsaW5lYXInLCAnbm9kZS1wcm9wZXJ0eTp3aWR0aDpoZWlnaHQnXSwKLSAgICAgICAgZHVyYXRpb246IDEwMDAsCi0gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIC8vYW5pbWF0ZSB0aGUgcGFyZW50IHN1YnRyZWUKLSAgICAgICAgICB0aGF0LmNsaWNrZWROb2RlID0gY2xpY2tlZE5vZGU7Ci0gICAgICAgICAgLy9jaGFuZ2Ugbm9kZXMgYWxwaGEKLSAgICAgICAgICBncmFwaC5ub2RlTGlzdC5zZXREYXRhc2V0KFsnY3VycmVudCcsICdlbmQnXSwgewotICAgICAgICAgICAgJ2FscGhhJzogWzAsIDFdCi0gICAgICAgICAgfSk7Ci0gICAgICAgICAgR1V0aWwuZWFjaFN1YmdyYXBoKHByZXZpb3VzQ2xpY2tlZE5vZGUsIGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgICAgIG5vZGUuc2V0RGF0YSgnYWxwaGEnLCAxKTsKLSAgICAgICAgICB9LCAiaWdub3JlIik7Ci0gICAgICAgICAgdGhhdC5meC5hbmltYXRlKHsKLSAgICAgICAgICAgIGR1cmF0aW9uOiA1MDAsCi0gICAgICAgICAgICBtb2RlczpbJ25vZGUtcHJvcGVydHk6YWxwaGEnXSwKLSAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBjYWxsYmFjay5vbkNvbXBsZXRlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIH0gZWxzZSB7Ci0gICAgICBjYWxsYmFjay5vbkNvbXBsZXRlKCk7Ci0gICAgfQotICB9LAotICByZXF1ZXN0Tm9kZXM6IGZ1bmN0aW9uKG5vZGUsIG9uQ29tcGxldGUpewotICAgIHZhciBoYW5kbGVyID0gJC5tZXJnZSh0aGlzLmNvbnRyb2xsZXIsIG9uQ29tcGxldGUpLAotICAgICAgICBsZXZlbHNUb1Nob3cgPSB0aGlzLmNvbmZpZy5jb25zdHJhaW5lZCA/IHRoaXMuY29uZmlnLmxldmVsc1RvU2hvdyA6IE51bWJlci5NQVhfVkFMVUU7Ci0KLSAgICBpZiAoaGFuZGxlci5yZXF1ZXN0KSB7Ci0gICAgICB2YXIgbGVhdmVzID0gW10sIGQgPSBub2RlLl9kZXB0aDsKLSAgICAgIEdyYXBoLlV0aWwuZWFjaExldmVsKG5vZGUsIDAsIGxldmVsc1RvU2hvdywgZnVuY3Rpb24obil7Ci0gICAgICAgIGlmIChuLmRyYXduICYmICFHcmFwaC5VdGlsLmFueVN1Ym5vZGUobikpIHsKLSAgICAgICAgICBsZWF2ZXMucHVzaChuKTsKLSAgICAgICAgICBuLl9sZXZlbCA9IG4uX2RlcHRoIC0gZDsKLSAgICAgICAgICBpZiAodGhpcy5jb25maWcuY29uc3RyYWluZWQpCi0gICAgICAgICAgICBuLl9sZXZlbCA9IGxldmVsc1RvU2hvdyAtIG4uX2xldmVsOwotCi0gICAgICAgIH0KLSAgICAgIH0pOwotICAgICAgdGhpcy5ncm91cC5yZXF1ZXN0Tm9kZXMobGVhdmVzLCBoYW5kbGVyKTsKLSAgICB9IGVsc2UgewotICAgICAgaGFuZGxlci5vbkNvbXBsZXRlKCk7Ci0gICAgfQotICB9Ci19KTsKLQotLyoKLSAgQ2xhc3M6IEljaWNsZS5PcAotICAKLSAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguT3A+LgotICAKLSAgRXh0ZW5kczoKLSAgCi0gIEFsbCA8R3JhcGguT3A+IG1ldGhvZHMKLSAgCi0gIFNlZSBhbHNvOgotICAKLSAgPEdyYXBoLk9wPgotICAKLSAgKi8KLSRqaXQuSWNpY2xlLk9wID0gbmV3IENsYXNzKHsKLQotICBJbXBsZW1lbnRzOiBHcmFwaC5PcAotCi19KTsKLQotLyoKLSAqIFBlcmZvcm1zIG9wZXJhdGlvbnMgb24gZ3JvdXAgb2Ygbm9kZXMuCi0gKi8KLSRqaXQuSWNpY2xlLkdyb3VwID0gbmV3IENsYXNzKHsKLQotICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopewotICAgIHRoaXMudml6ID0gdml6OwotICAgIHRoaXMuY2FudmFzID0gdml6LmNhbnZhczsKLSAgICB0aGlzLmNvbmZpZyA9IHZpei5jb25maWc7Ci0gIH0sCi0KLSAgLyoKLSAgICogQ2FsbHMgdGhlIHJlcXVlc3QgbWV0aG9kIG9uIHRoZSBjb250cm9sbGVyIHRvIHJlcXVlc3QgYSBzdWJ0cmVlIGZvciBlYWNoIG5vZGUuCi0gICAqLwotICByZXF1ZXN0Tm9kZXM6IGZ1bmN0aW9uKG5vZGVzLCBjb250cm9sbGVyKXsKLSAgICB2YXIgY291bnRlciA9IDAsIGxlbiA9IG5vZGVzLmxlbmd0aCwgbm9kZVNlbGVjdGVkID0ge307Ci0gICAgdmFyIGNvbXBsZXRlID0gZnVuY3Rpb24oKXsKLSAgICAgIGNvbnRyb2xsZXIub25Db21wbGV0ZSgpOwotICAgIH07Ci0gICAgdmFyIHZpeiA9IHRoaXMudml6OwotICAgIGlmIChsZW4gPT0gMCkKLSAgICAgIGNvbXBsZXRlKCk7Ci0gICAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICBub2RlU2VsZWN0ZWRbbm9kZXNbaV0uaWRdID0gbm9kZXNbaV07Ci0gICAgICBjb250cm9sbGVyLnJlcXVlc3Qobm9kZXNbaV0uaWQsIG5vZGVzW2ldLl9sZXZlbCwgewotICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbihub2RlSWQsIGRhdGEpewotICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hpbGRyZW4pIHsKLSAgICAgICAgICAgIGRhdGEuaWQgPSBub2RlSWQ7Ci0gICAgICAgICAgICB2aXoub3Auc3VtKGRhdGEsIHsKLSAgICAgICAgICAgICAgdHlwZTogJ25vdGhpbmcnCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKCsrY291bnRlciA9PSBsZW4pIHsKLSAgICAgICAgICAgIEdyYXBoLlV0aWwuY29tcHV0ZUxldmVscyh2aXouZ3JhcGgsIHZpei5yb290LCAwKTsKLSAgICAgICAgICAgIGNvbXBsZXRlKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0KLX0pOwotCi0vKgotICBDbGFzczogSWNpY2xlLlBsb3QKLSAgCi0gIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLlBsb3Q+LgotICAKLSAgRXh0ZW5kczoKLSAgCi0gIEFsbCA8R3JhcGguUGxvdD4gbWV0aG9kcwotICAKLSAgU2VlIGFsc286Ci0gIAotICA8R3JhcGguUGxvdD4KLSAgCi0gICovCi0kaml0LkljaWNsZS5QbG90ID0gbmV3IENsYXNzKHsKLSAgSW1wbGVtZW50czogR3JhcGguUGxvdCwKLQotICBwbG90OiBmdW5jdGlvbihvcHQsIGFuaW1hdGluZyl7Ci0gICAgb3B0ID0gb3B0IHx8IHRoaXMudml6LmNvbnRyb2xsZXI7Ci0gICAgdmFyIHZpeiA9IHRoaXMudml6LAotICAgICAgICBncmFwaCA9IHZpei5ncmFwaCwKLSAgICAgICAgcm9vdCA9IGdyYXBoLmdldE5vZGUodml6LmNsaWNrZWROb2RlICYmIHZpei5jbGlja2VkTm9kZS5pZCB8fCB2aXoucm9vdCksCi0gICAgICAgIGluaXRpYWxEZXB0aCA9IHJvb3QuX2RlcHRoOwotCi0gICAgdml6LmNhbnZhcy5jbGVhcigpOwotICAgIHRoaXMucGxvdFRyZWUocm9vdCwgJC5tZXJnZShvcHQsIHsKLSAgICAgICd3aXRoTGFiZWxzJzogdHJ1ZSwKLSAgICAgICdoaWRlTGFiZWxzJzogZmFsc2UsCi0gICAgICAncGxvdFN1YnRyZWUnOiBmdW5jdGlvbihyb290LCBub2RlKSB7Ci0gICAgICAgIHJldHVybiAhdml6LmNvbmZpZy5jb25zdHJhaW5lZCB8fAotICAgICAgICAgICAgICAgKG5vZGUuX2RlcHRoIC0gaW5pdGlhbERlcHRoIDwgdml6LmNvbmZpZy5sZXZlbHNUb1Nob3cpOwotICAgICAgfQotICAgIH0pLCBhbmltYXRpbmcpOwotICB9Ci19KTsKLQotLyoKLSAgQ2xhc3M6IEljaWNsZS5MYWJlbAotICAKLSAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguTGFiZWw+LiAKLSAgQ29udGFpbnMgY3VzdG9tIDxHcmFwaC5MYWJlbC5TVkc+LCA8R3JhcGguTGFiZWwuSFRNTD4gYW5kIDxHcmFwaC5MYWJlbC5OYXRpdmU+IGV4dGVuc2lvbnMuCi0gIAotICBFeHRlbmRzOgotICAKLSAgQWxsIDxHcmFwaC5MYWJlbD4gbWV0aG9kcyBhbmQgc3ViY2xhc3Nlcy4KLSAgCi0gIFNlZSBhbHNvOgotICAKLSAgPEdyYXBoLkxhYmVsPiwgPEdyYXBoLkxhYmVsLk5hdGl2ZT4sIDxHcmFwaC5MYWJlbC5IVE1MPiwgPEdyYXBoLkxhYmVsLlNWRz4uCi0gIAotICAqLwotJGppdC5JY2ljbGUuTGFiZWwgPSB7fTsKLQotLyoKLSAgSWNpY2xlLkxhYmVsLk5hdGl2ZQotICAKLSAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguTGFiZWwuTmF0aXZlPi4KLSAgCi0gIEV4dGVuZHM6Ci0gIAotICBBbGwgPEdyYXBoLkxhYmVsLk5hdGl2ZT4gbWV0aG9kcwotICAKLSAgU2VlIGFsc286Ci0gIAotICA8R3JhcGguTGFiZWwuTmF0aXZlPgotCi0gICovCi0kaml0LkljaWNsZS5MYWJlbC5OYXRpdmUgPSBuZXcgQ2xhc3MoewotICBJbXBsZW1lbnRzOiBHcmFwaC5MYWJlbC5OYXRpdmUsCi0KLSAgcmVuZGVyTGFiZWw6IGZ1bmN0aW9uKGNhbnZhcywgbm9kZSwgY29udHJvbGxlcikgewotICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q3R4KCksCi0gICAgICAgIHdpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLAotICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICBzaXplID0gbm9kZS5nZXRMYWJlbERhdGEoJ3NpemUnKSwKLSAgICAgICAgbSA9IGN0eC5tZWFzdXJlVGV4dChub2RlLm5hbWUpOwotCi0gICAgLy8gR3Vlc3MgYXMgbXVjaCBhcyBwb3NzaWJsZSBpZiB0aGUgbGFiZWwgd2lsbCBmaXQgaW4gdGhlIG5vZGUKLSAgICBpZihoZWlnaHQgPCAoc2l6ZSAqIDEuNSkgfHwgd2lkdGggPCBtLndpZHRoKQotICAgICAgcmV0dXJuOwotCi0gICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSk7Ci0gICAgY3R4LmZpbGxUZXh0KG5vZGUubmFtZSwKLSAgICAgICAgICAgICAgICAgcG9zLnggKyB3aWR0aCAvIDIsCi0gICAgICAgICAgICAgICAgIHBvcy55ICsgaGVpZ2h0IC8gMik7Ci0gIH0KLX0pOwotCi0vKgotICBJY2ljbGUuTGFiZWwuU1ZHCi0gIAotICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5MYWJlbC5TVkc+LgotICAKLSAgRXh0ZW5kczoKLSAgCi0gIEFsbCA8R3JhcGguTGFiZWwuU1ZHPiBtZXRob2RzCi0gIAotICBTZWUgYWxzbzoKLSAgCi0gIDxHcmFwaC5MYWJlbC5TVkc+Ci0qLwotJGppdC5JY2ljbGUuTGFiZWwuU1ZHID0gbmV3IENsYXNzKCB7Ci0gIEltcGxlbWVudHM6IEdyYXBoLkxhYmVsLlNWRywKLQotICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopewotICAgIHRoaXMudml6ID0gdml6OwotICB9LAotCi0gIC8qCi0gICAgcGxhY2VMYWJlbAotICAgCi0gICAgT3ZlcnJpZGVzIGFic3RyYWN0IG1ldGhvZCBwbGFjZUxhYmVsIGluIDxHcmFwaC5QbG90Pi4KLSAgIAotICAgIFBhcmFtZXRlcnM6Ci0gICAKLSAgICB0YWcgLSBBIERPTSBsYWJlbCBlbGVtZW50LgotICAgIG5vZGUgLSBBIDxHcmFwaC5Ob2RlPi4KLSAgICBjb250cm9sbGVyIC0gQSBjb25maWd1cmF0aW9uL2NvbnRyb2xsZXIgb2JqZWN0IHBhc3NlZCB0byB0aGUgdmlzdWFsaXphdGlvbi4KLSAgICovCi0gIHBsYWNlTGFiZWw6IGZ1bmN0aW9uKHRhZywgbm9kZSwgY29udHJvbGxlcil7Ci0gICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIGNhbnZhcyA9IHRoaXMudml6LmNhbnZhczsKLSAgICB2YXIgcmFkaXVzID0gY2FudmFzLmdldFNpemUoKTsKLSAgICB2YXIgbGFiZWxQb3MgPSB7Ci0gICAgICB4OiBNYXRoLnJvdW5kKHBvcy54ICsgcmFkaXVzLndpZHRoIC8gMiksCi0gICAgICB5OiBNYXRoLnJvdW5kKHBvcy55ICsgcmFkaXVzLmhlaWdodCAvIDIpCi0gICAgfTsKLSAgICB0YWcuc2V0QXR0cmlidXRlKCd4JywgbGFiZWxQb3MueCk7Ci0gICAgdGFnLnNldEF0dHJpYnV0ZSgneScsIGxhYmVsUG9zLnkpOwotCi0gICAgY29udHJvbGxlci5vblBsYWNlTGFiZWwodGFnLCBub2RlKTsKLSAgfQotfSk7Ci0KLS8qCi0gIEljaWNsZS5MYWJlbC5IVE1MCi0gIAotICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5MYWJlbC5IVE1MPi4KLSAgCi0gIEV4dGVuZHM6Ci0gIAotICBBbGwgPEdyYXBoLkxhYmVsLkhUTUw+IG1ldGhvZHMuCi0gIAotICBTZWUgYWxzbzoKLSAgCi0gIDxHcmFwaC5MYWJlbC5IVE1MPgotICAKLSAgKi8KLSRqaXQuSWNpY2xlLkxhYmVsLkhUTUwgPSBuZXcgQ2xhc3MoIHsKLSAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuSFRNTCwKLQotICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopewotICAgIHRoaXMudml6ID0gdml6OwotICB9LAotCi0gIC8qCi0gICAgcGxhY2VMYWJlbAotICAgCi0gICAgT3ZlcnJpZGVzIGFic3RyYWN0IG1ldGhvZCBwbGFjZUxhYmVsIGluIDxHcmFwaC5QbG90Pi4KLSAgIAotICAgIFBhcmFtZXRlcnM6Ci0gICAKLSAgICB0YWcgLSBBIERPTSBsYWJlbCBlbGVtZW50LgotICAgIG5vZGUgLSBBIDxHcmFwaC5Ob2RlPi4KLSAgICBjb250cm9sbGVyIC0gQSBjb25maWd1cmF0aW9uL2NvbnRyb2xsZXIgb2JqZWN0IHBhc3NlZCB0byB0aGUgdmlzdWFsaXphdGlvbi4KLSAgICovCi0gIHBsYWNlTGFiZWw6IGZ1bmN0aW9uKHRhZywgbm9kZSwgY29udHJvbGxlcil7Ci0gICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIGNhbnZhcyA9IHRoaXMudml6LmNhbnZhczsKLSAgICB2YXIgcmFkaXVzID0gY2FudmFzLmdldFNpemUoKTsKLSAgICB2YXIgbGFiZWxQb3MgPSB7Ci0gICAgICB4OiBNYXRoLnJvdW5kKHBvcy54ICsgcmFkaXVzLndpZHRoIC8gMiksCi0gICAgICB5OiBNYXRoLnJvdW5kKHBvcy55ICsgcmFkaXVzLmhlaWdodCAvIDIpCi0gICAgfTsKLQotICAgIHZhciBzdHlsZSA9IHRhZy5zdHlsZTsKLSAgICBzdHlsZS5sZWZ0ID0gbGFiZWxQb3MueCArICdweCc7Ci0gICAgc3R5bGUudG9wID0gbGFiZWxQb3MueSArICdweCc7Ci0gICAgc3R5bGUuZGlzcGxheSA9ICcnOwotCi0gICAgY29udHJvbGxlci5vblBsYWNlTGFiZWwodGFnLCBub2RlKTsKLSAgfQotfSk7Ci0KLS8qCi0gIENsYXNzOiBJY2ljbGUuUGxvdC5Ob2RlVHlwZXMKLSAgCi0gIFRoaXMgY2xhc3MgY29udGFpbnMgYSBsaXN0IG9mIDxHcmFwaC5Ob2RlPiBidWlsdC1pbiB0eXBlcy4gCi0gIE5vZGUgdHlwZXMgaW1wbGVtZW50ZWQgYXJlICdub25lJywgJ3JlY3RhbmdsZScuCi0gIAotICBZb3UgY2FuIGFkZCB5b3VyIGN1c3RvbSBub2RlIHR5cGVzLCBjdXN0b21pemluZyB5b3VyIHZpc3VhbGl6YXRpb24gdG8gdGhlIGV4dHJlbWUuCi0gIAotICBFeGFtcGxlOgotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gICAgSWNpY2xlLlBsb3QuTm9kZVR5cGVzLmltcGxlbWVudCh7Ci0gICAgICAnbXlTcGVjaWFsVHlwZSc6IHsKLSAgICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICAgIC8vcHJpbnQgeW91ciBjdXN0b20gbm9kZSB0byBjYW52YXMKLSAgICAgICAgfSwKLSAgICAgICAgLy9vcHRpb25hbAotICAgICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBwb3MpIHsKLSAgICAgICAgICAvL3JldHVybiB0cnVlIGlmIHBvcyBpcyBpbnNpZGUgdGhlIG5vZGUgb3IgZmFsc2Ugb3RoZXJ3aXNlCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9KTsKLSAgKGVuZCBjb2RlKQotICAKLSAgKi8KLSRqaXQuSWNpY2xlLlBsb3QuTm9kZVR5cGVzID0gbmV3IENsYXNzKCB7Ci0gICdub25lJzogewotICAgICdyZW5kZXInOiAkLmVtcHR5Ci0gIH0sCi0KLSAgJ3JlY3RhbmdsZSc6IHsKLSAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzLCBhbmltYXRpbmcpIHsKLSAgICAgIHZhciBjb25maWcgPSB0aGlzLnZpei5jb25maWc7Ci0gICAgICB2YXIgb2Zmc2V0ID0gY29uZmlnLm9mZnNldDsKLSAgICAgIHZhciB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKTsKLSAgICAgIHZhciBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpOwotICAgICAgdmFyIGJvcmRlciA9IG5vZGUuZ2V0RGF0YSgnYm9yZGVyJyk7Ci0gICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKTsKLSAgICAgIHZhciBwb3N4ID0gcG9zLnggKyBvZmZzZXQgLyAyLCBwb3N5ID0gcG9zLnkgKyBvZmZzZXQgLyAyOwotICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDdHgoKTsKLSAgICAgIAotICAgICAgaWYod2lkdGggLSBvZmZzZXQgPCAyIHx8IGhlaWdodCAtIG9mZnNldCA8IDIpIHJldHVybjsKLSAgICAgIAotICAgICAgaWYoY29uZmlnLmN1c2hpb24pIHsKLSAgICAgICAgdmFyIGNvbG9yID0gbm9kZS5nZXREYXRhKCdjb2xvcicpOwotICAgICAgICB2YXIgbGcgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQocG9zeCArICh3aWR0aCAtIG9mZnNldCkvMiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N5ICsgKGhlaWdodCAtIG9mZnNldCkvMiwgMSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N4ICsgKHdpZHRoLW9mZnNldCkvMiwgcG9zeSArIChoZWlnaHQtb2Zmc2V0KS8yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIDwgaGVpZ2h0PyBoZWlnaHQgOiB3aWR0aCk7Ci0gICAgICAgIHZhciBjb2xvckdyYWQgPSAkLnJnYlRvSGV4KCQubWFwKCQuaGV4VG9SZ2IoY29sb3IpLCAKLSAgICAgICAgICAgIGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIgKiAwLjMgPj4gMDsgfSkpOwotICAgICAgICBsZy5hZGRDb2xvclN0b3AoMCwgY29sb3IpOwotICAgICAgICBsZy5hZGRDb2xvclN0b3AoMSwgY29sb3JHcmFkKTsKLSAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGxnOwotICAgICAgfQotCi0gICAgICBpZiAoYm9yZGVyKSB7Ci0gICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGJvcmRlcjsKLSAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDM7Ci0gICAgICB9Ci0KLSAgICAgIGN0eC5maWxsUmVjdChwb3N4LCBwb3N5LCBNYXRoLm1heCgwLCB3aWR0aCAtIG9mZnNldCksIE1hdGgubWF4KDAsIGhlaWdodCAtIG9mZnNldCkpOwotICAgICAgYm9yZGVyICYmIGN0eC5zdHJva2VSZWN0KHBvcy54LCBwb3MueSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfSwKLQotICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgaWYodGhpcy52aXouY2xpY2tlZE5vZGUgJiYgISRqaXQuR3JhcGguVXRpbC5pc0Rlc2NlbmRhbnRPZihub2RlLCB0aGlzLnZpei5jbGlja2VkTm9kZS5pZCkpIHJldHVybiBmYWxzZTsKLSAgICAgIHZhciBucG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSwKLSAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpOwotICAgICAgcmV0dXJuIHRoaXMubm9kZUhlbHBlci5yZWN0YW5nbGUuY29udGFpbnMoe3g6IG5wb3MueCArIHdpZHRoLzIsIHk6IG5wb3MueSArIGhlaWdodC8yfSwgcG9zLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9Ci0gIH0KLX0pOwotCi0kaml0LkljaWNsZS5QbG90LkVkZ2VUeXBlcyA9IG5ldyBDbGFzcyggewotICAnbm9uZSc6ICQuZW1wdHkKLX0pOwotCi0KLQotLyoKLSAqIEZpbGU6IExheW91dHMuRm9yY2VEaXJlY3RlZC5qcwotICoKLSovCi0KLS8qCi0gKiBDbGFzczogTGF5b3V0cy5Gb3JjZURpcmVjdGVkCi0gKiAKLSAqIEltcGxlbWVudHMgYSBGb3JjZSBEaXJlY3RlZCBMYXlvdXQuCi0gKiAKLSAqIEltcGxlbWVudGVkIEJ5OgotICogCi0gKiA8Rm9yY2VEaXJlY3RlZD4KLSAqIAotICogQ3JlZGl0czoKLSAqIAotICogTWFyY3VzIENvYmRlbiA8aHR0cDovL21hcmN1c2NvYmRlbi5jby51az4KLSAqIAotICovCi1MYXlvdXRzLkZvcmNlRGlyZWN0ZWQgPSBuZXcgQ2xhc3MoewotCi0gIGdldE9wdGlvbnM6IGZ1bmN0aW9uKHJhbmRvbSkgewotICAgIHZhciBzID0gdGhpcy5jYW52YXMuZ2V0U2l6ZSgpOwotICAgIHZhciB3ID0gcy53aWR0aCwgaCA9IHMuaGVpZ2h0OwotICAgIC8vY291bnQgbm9kZXMKLSAgICB2YXIgY291bnQgPSAwOwotICAgIHRoaXMuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgeyAKLSAgICAgIGNvdW50Kys7Ci0gICAgfSk7Ci0gICAgdmFyIGsyID0gdyAqIGggLyBjb3VudCwgayA9IE1hdGguc3FydChrMik7Ci0gICAgdmFyIGwgPSB0aGlzLmNvbmZpZy5sZXZlbERpc3RhbmNlOwotICAgIAotICAgIHJldHVybiB7Ci0gICAgICB3aWR0aDogdywKLSAgICAgIGhlaWdodDogaCwKLSAgICAgIHRzdGFydDogdyAqIDAuMSwKLSAgICAgIG5vZGVmOiBmdW5jdGlvbih4KSB7IHJldHVybiBrMiAvICh4IHx8IDEpOyB9LAotICAgICAgZWRnZWY6IGZ1bmN0aW9uKHgpIHsgcmV0dXJuIC8qIHggKiB4IC8gazsgKi8gayAqICh4IC0gbCk7IH0KLSAgICB9OwotICB9LAotICAKLSAgY29tcHV0ZTogZnVuY3Rpb24ocHJvcGVydHksIGluY3JlbWVudGFsKSB7Ci0gICAgdmFyIHByb3AgPSAkLnNwbGF0KHByb3BlcnR5IHx8IFsnY3VycmVudCcsICdzdGFydCcsICdlbmQnXSk7Ci0gICAgdmFyIG9wdCA9IHRoaXMuZ2V0T3B0aW9ucygpOwotICAgIE5vZGVEaW0uY29tcHV0ZSh0aGlzLmdyYXBoLCBwcm9wLCB0aGlzLmNvbmZpZyk7Ci0gICAgdGhpcy5ncmFwaC5jb21wdXRlTGV2ZWxzKHRoaXMucm9vdCwgMCwgImlnbm9yZSIpOwotICAgIHRoaXMuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obikgewotICAgICAgJC5lYWNoKHByb3AsIGZ1bmN0aW9uKHApIHsKLSAgICAgICAgdmFyIHBvcyA9IG4uZ2V0UG9zKHApOwotICAgICAgICBpZihwb3MuZXF1YWxzKENvbXBsZXguS0VSKSkgewotICAgICAgICAgIHBvcy54ID0gb3B0LndpZHRoLzUgKiAoTWF0aC5yYW5kb20oKSAtIDAuNSk7Ci0gICAgICAgICAgcG9zLnkgPSBvcHQuaGVpZ2h0LzUgKiAoTWF0aC5yYW5kb20oKSAtIDAuNSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy9pbml0aWFsaXplIGRpc3AgdmVjdG9yCi0gICAgICAgIG4uZGlzcCA9IHt9OwotICAgICAgICAkLmVhY2gocHJvcCwgZnVuY3Rpb24ocCkgewotICAgICAgICAgIG4uZGlzcFtwXSA9ICRDKDAsIDApOwotICAgICAgICB9KTsKLSAgICAgIH0pOwotICAgIH0pOwotICAgIHRoaXMuY29tcHV0ZVBvc2l0aW9ucyhwcm9wLCBvcHQsIGluY3JlbWVudGFsKTsKLSAgfSwKLSAgCi0gIGNvbXB1dGVQb3NpdGlvbnM6IGZ1bmN0aW9uKHByb3BlcnR5LCBvcHQsIGluY3JlbWVudGFsKSB7Ci0gICAgdmFyIHRpbWVzID0gdGhpcy5jb25maWcuaXRlcmF0aW9ucywgaSA9IDAsIHRoYXQgPSB0aGlzOwotICAgIGlmKGluY3JlbWVudGFsKSB7Ci0gICAgICAoZnVuY3Rpb24gaXRlcigpIHsKLSAgICAgICAgZm9yKHZhciB0b3RhbD1pbmNyZW1lbnRhbC5pdGVyLCBqPTA7IGo8dG90YWw7IGorKykgewotICAgICAgICAgIG9wdC50ID0gb3B0LnRzdGFydDsKLSAgICAgICAgICBpZih0aW1lcykgb3B0LnQgKj0gKDEgLSBpKysvKHRpbWVzIC0xKSk7Ci0gICAgICAgICAgdGhhdC5jb21wdXRlUG9zaXRpb25TdGVwKHByb3BlcnR5LCBvcHQpOwotICAgICAgICAgIGlmKHRpbWVzICYmIGkgPj0gdGltZXMpIHsKLSAgICAgICAgICAgIGluY3JlbWVudGFsLm9uQ29tcGxldGUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaW5jcmVtZW50YWwub25TdGVwKE1hdGgucm91bmQoaSAvICh0aW1lcyAtMSkgKiAxMDApKTsKLSAgICAgICAgc2V0VGltZW91dChpdGVyLCAxKTsKLSAgICAgIH0pKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGZvcig7IGkgPCB0aW1lczsgaSsrKSB7Ci0gICAgICAgIG9wdC50ID0gb3B0LnRzdGFydCAqICgxIC0gaS8odGltZXMgLTEpKTsKLSAgICAgICAgdGhpcy5jb21wdXRlUG9zaXRpb25TdGVwKHByb3BlcnR5LCBvcHQpOwotICAgICAgfQotICAgIH0KLSAgfSwKLSAgCi0gIGNvbXB1dGVQb3NpdGlvblN0ZXA6IGZ1bmN0aW9uKHByb3BlcnR5LCBvcHQpIHsKLSAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoOwotICAgIHZhciBtaW4gPSBNYXRoLm1pbiwgbWF4ID0gTWF0aC5tYXg7Ci0gICAgdmFyIGRwb3MgPSAkQygwLCAwKTsKLSAgICAvL2NhbGN1bGF0ZSByZXB1bHNpdmUgZm9yY2VzCi0gICAgZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24odikgewotICAgICAgLy9pbml0aWFsaXplIGRpc3AKLSAgICAgICQuZWFjaChwcm9wZXJ0eSwgZnVuY3Rpb24ocCkgewotICAgICAgICB2LmRpc3BbcF0ueCA9IDA7IHYuZGlzcFtwXS55ID0gMDsKLSAgICAgIH0pOwotICAgICAgZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24odSkgewotICAgICAgICBpZih1LmlkICE9IHYuaWQpIHsKLSAgICAgICAgICAkLmVhY2gocHJvcGVydHksIGZ1bmN0aW9uKHApIHsKLSAgICAgICAgICAgIHZhciB2cCA9IHYuZ2V0UG9zKHApLCB1cCA9IHUuZ2V0UG9zKHApOwotICAgICAgICAgICAgZHBvcy54ID0gdnAueCAtIHVwLng7Ci0gICAgICAgICAgICBkcG9zLnkgPSB2cC55IC0gdXAueTsKLSAgICAgICAgICAgIHZhciBub3JtID0gZHBvcy5ub3JtKCkgfHwgMTsKLSAgICAgICAgICAgIHYuZGlzcFtwXS4kYWRkKGRwb3MKLSAgICAgICAgICAgICAgICAuJHNjYWxlKG9wdC5ub2RlZihub3JtKSAvIG5vcm0pKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfSk7Ci0gICAgLy9jYWxjdWxhdGUgYXR0cmFjdGl2ZSBmb3JjZXMKLSAgICB2YXIgVCA9ICEhZ3JhcGguZ2V0Tm9kZSh0aGlzLnJvb3QpLnZpc2l0ZWQ7Ci0gICAgZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obm9kZSkgewotICAgICAgbm9kZS5lYWNoQWRqYWNlbmN5KGZ1bmN0aW9uKGFkaikgewotICAgICAgICB2YXIgbm9kZVRvID0gYWRqLm5vZGVUbzsKLSAgICAgICAgaWYoISFub2RlVG8udmlzaXRlZCA9PT0gVCkgewotICAgICAgICAgICQuZWFjaChwcm9wZXJ0eSwgZnVuY3Rpb24ocCkgewotICAgICAgICAgICAgdmFyIHZwID0gbm9kZS5nZXRQb3MocCksIHVwID0gbm9kZVRvLmdldFBvcyhwKTsKLSAgICAgICAgICAgIGRwb3MueCA9IHZwLnggLSB1cC54OwotICAgICAgICAgICAgZHBvcy55ID0gdnAueSAtIHVwLnk7Ci0gICAgICAgICAgICB2YXIgbm9ybSA9IGRwb3Mubm9ybSgpIHx8IDE7Ci0gICAgICAgICAgICBub2RlLmRpc3BbcF0uJGFkZChkcG9zLiRzY2FsZSgtb3B0LmVkZ2VmKG5vcm0pIC8gbm9ybSkpOwotICAgICAgICAgICAgbm9kZVRvLmRpc3BbcF0uJGFkZChkcG9zLiRzY2FsZSgtMSkpOwotICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICAgIG5vZGUudmlzaXRlZCA9ICFUOwotICAgIH0pOwotICAgIC8vYXJyYW5nZSBwb3NpdGlvbnMgdG8gZml0IHRoZSBjYW52YXMKLSAgICB2YXIgdCA9IG9wdC50LCB3MiA9IG9wdC53aWR0aCAvIDIsIGgyID0gb3B0LmhlaWdodCAvIDI7Ci0gICAgZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24odSkgewotICAgICAgJC5lYWNoKHByb3BlcnR5LCBmdW5jdGlvbihwKSB7Ci0gICAgICAgIHZhciBkaXNwID0gdS5kaXNwW3BdOwotICAgICAgICB2YXIgbm9ybSA9IGRpc3Aubm9ybSgpIHx8IDE7Ci0gICAgICAgIHZhciBwID0gdS5nZXRQb3MocCk7Ci0gICAgICAgIHAuJGFkZCgkQyhkaXNwLnggKiBtaW4oTWF0aC5hYnMoZGlzcC54KSwgdCkgLyBub3JtLCAKLSAgICAgICAgICAgIGRpc3AueSAqIG1pbihNYXRoLmFicyhkaXNwLnkpLCB0KSAvIG5vcm0pKTsKLSAgICAgICAgcC54ID0gbWluKHcyLCBtYXgoLXcyLCBwLngpKTsKLSAgICAgICAgcC55ID0gbWluKGgyLCBtYXgoLWgyLCBwLnkpKTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9Ci19KTsKLQotLyoKLSAqIEZpbGU6IEZvcmNlRGlyZWN0ZWQuanMKLSAqLwotCi0vKgotICAgQ2xhc3M6IEZvcmNlRGlyZWN0ZWQKLSAgICAgIAotICAgQSB2aXN1YWxpemF0aW9uIHRoYXQgbGF5cyBncmFwaHMgdXNpbmcgYSBGb3JjZS1EaXJlY3RlZCBsYXlvdXQgYWxnb3JpdGhtLgotICAgCi0gICBJbnNwaXJlZCBieToKLSAgCi0gICBGb3JjZS1EaXJlY3RlZCBEcmF3aW5nIEFsZ29yaXRobXMgKFN0ZXBoZW4gRy4gS29ib3Vyb3YpIDxodHRwOi8vd3d3LmNzLmJyb3duLmVkdS9+cnQvZ2RoYW5kYm9vay9jaGFwdGVycy9mb3JjZS1kaXJlY3RlZC5wZGY+Ci0gICAKLSAgSW1wbGVtZW50czoKLSAgCi0gIEFsbCA8TG9hZGVyPiBtZXRob2RzCi0gIAotICAgQ29uc3RydWN0b3IgT3B0aW9uczoKLSAgIAotICAgSW5oZXJpdHMgb3B0aW9ucyBmcm9tCi0gICAKLSAgIC0gPE9wdGlvbnMuQ2FudmFzPgotICAgLSA8T3B0aW9ucy5Db250cm9sbGVyPgotICAgLSA8T3B0aW9ucy5Ob2RlPgotICAgLSA8T3B0aW9ucy5FZGdlPgotICAgLSA8T3B0aW9ucy5MYWJlbD4KLSAgIC0gPE9wdGlvbnMuRXZlbnRzPgotICAgLSA8T3B0aW9ucy5UaXBzPgotICAgLSA8T3B0aW9ucy5Ob2RlU3R5bGVzPgotICAgLSA8T3B0aW9ucy5OYXZpZ2F0aW9uPgotICAgCi0gICBBZGRpdGlvbmFsbHksIHRoZXJlIGFyZSB0d28gcGFyYW1ldGVycwotICAgCi0gICBsZXZlbERpc3RhbmNlIC0gKG51bWJlcikgRGVmYXVsdCdzICo1MCouIFRoZSBuYXR1cmFsIGxlbmd0aCBkZXNpcmVkIGZvciB0aGUgZWRnZXMuCi0gICBpdGVyYXRpb25zIC0gKG51bWJlcikgRGVmYXVsdCdzICo1MCouIFRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3IgdGhlIHNwcmluZyBsYXlvdXQgc2ltdWxhdGlvbi4gRGVwZW5kaW5nIG9uIHRoZSBicm93c2VyJ3Mgc3BlZWQgeW91IGNvdWxkIHNldCB0aGlzIHRvIGEgbW9yZSAnaW50ZXJlc3RpbmcnIG51bWJlciwgbGlrZSAqMjAwKi4gCi0gICAgIAotICAgSW5zdGFuY2UgUHJvcGVydGllczoKLQotICAgY2FudmFzIC0gQWNjZXNzIGEgPENhbnZhcz4gaW5zdGFuY2UuCi0gICBncmFwaCAtIEFjY2VzcyBhIDxHcmFwaD4gaW5zdGFuY2UuCi0gICBvcCAtIEFjY2VzcyBhIDxGb3JjZURpcmVjdGVkLk9wPiBpbnN0YW5jZS4KLSAgIGZ4IC0gQWNjZXNzIGEgPEZvcmNlRGlyZWN0ZWQuUGxvdD4gaW5zdGFuY2UuCi0gICBsYWJlbHMgLSBBY2Nlc3MgYSA8Rm9yY2VEaXJlY3RlZC5MYWJlbD4gaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLgotCi0qLwotCi0kaml0LkZvcmNlRGlyZWN0ZWQgPSBuZXcgQ2xhc3MoIHsKLQotICBJbXBsZW1lbnRzOiBbIExvYWRlciwgRXh0cmFzLCBMYXlvdXRzLkZvcmNlRGlyZWN0ZWQgXSwKLQotICBpbml0aWFsaXplOiBmdW5jdGlvbihjb250cm9sbGVyKSB7Ci0gICAgdmFyICRGb3JjZURpcmVjdGVkID0gJGppdC5Gb3JjZURpcmVjdGVkOwotCi0gICAgdmFyIGNvbmZpZyA9IHsKLSAgICAgIGl0ZXJhdGlvbnM6IDUwLAotICAgICAgbGV2ZWxEaXN0YW5jZTogNTAKLSAgICB9OwotCi0gICAgdGhpcy5jb250cm9sbGVyID0gdGhpcy5jb25maWcgPSAkLm1lcmdlKE9wdGlvbnMoIkNhbnZhcyIsICJOb2RlIiwgIkVkZ2UiLAotICAgICAgICAiRngiLCAiVGlwcyIsICJOb2RlU3R5bGVzIiwgIkV2ZW50cyIsICJOYXZpZ2F0aW9uIiwgIkNvbnRyb2xsZXIiLCAiTGFiZWwiKSwgY29uZmlnLCBjb250cm9sbGVyKTsKLQotICAgIHZhciBjYW52YXNDb25maWcgPSB0aGlzLmNvbmZpZzsKLSAgICBpZihjYW52YXNDb25maWcudXNlQ2FudmFzKSB7Ci0gICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhc0NvbmZpZy51c2VDYW52YXM7Ci0gICAgICB0aGlzLmNvbmZpZy5sYWJlbENvbnRhaW5lciA9IHRoaXMuY2FudmFzLmlkICsgJy1sYWJlbCc7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGlmKGNhbnZhc0NvbmZpZy5iYWNrZ3JvdW5kKSB7Ci0gICAgICAgIGNhbnZhc0NvbmZpZy5iYWNrZ3JvdW5kID0gJC5tZXJnZSh7Ci0gICAgICAgICAgdHlwZTogJ0NpcmNsZXMnCi0gICAgICAgIH0sIGNhbnZhc0NvbmZpZy5iYWNrZ3JvdW5kKTsKLSAgICAgIH0KLSAgICAgIHRoaXMuY2FudmFzID0gbmV3IENhbnZhcyh0aGlzLCBjYW52YXNDb25maWcpOwotICAgICAgdGhpcy5jb25maWcubGFiZWxDb250YWluZXIgPSAodHlwZW9mIGNhbnZhc0NvbmZpZy5pbmplY3RJbnRvID09ICdzdHJpbmcnPyBjYW52YXNDb25maWcuaW5qZWN0SW50byA6IGNhbnZhc0NvbmZpZy5pbmplY3RJbnRvLmlkKSArICctbGFiZWwnOwotICAgIH0KLQotICAgIHRoaXMuZ3JhcGhPcHRpb25zID0gewotICAgICAgJ2tsYXNzJzogQ29tcGxleCwKLSAgICAgICdOb2RlJzogewotICAgICAgICAnc2VsZWN0ZWQnOiBmYWxzZSwKLSAgICAgICAgJ2V4aXN0JzogdHJ1ZSwKLSAgICAgICAgJ2RyYXduJzogdHJ1ZQotICAgICAgfQotICAgIH07Ci0gICAgdGhpcy5ncmFwaCA9IG5ldyBHcmFwaCh0aGlzLmdyYXBoT3B0aW9ucywgdGhpcy5jb25maWcuTm9kZSwKLSAgICAgICAgdGhpcy5jb25maWcuRWRnZSk7Ci0gICAgdGhpcy5sYWJlbHMgPSBuZXcgJEZvcmNlRGlyZWN0ZWQuTGFiZWxbY2FudmFzQ29uZmlnLkxhYmVsLnR5cGVdKHRoaXMpOwotICAgIHRoaXMuZnggPSBuZXcgJEZvcmNlRGlyZWN0ZWQuUGxvdCh0aGlzLCAkRm9yY2VEaXJlY3RlZCk7Ci0gICAgdGhpcy5vcCA9IG5ldyAkRm9yY2VEaXJlY3RlZC5PcCh0aGlzKTsKLSAgICB0aGlzLmpzb24gPSBudWxsOwotICAgIHRoaXMuYnVzeSA9IGZhbHNlOwotICAgIC8vIGluaXRpYWxpemUgZXh0cmFzCi0gICAgdGhpcy5pbml0aWFsaXplRXh0cmFzKCk7Ci0gIH0sCi0KLSAgLyogCi0gICAgTWV0aG9kOiByZWZyZXNoIAotICAgIAotICAgIENvbXB1dGVzIHBvc2l0aW9ucyBhbmQgcGxvdHMgdGhlIHRyZWUuCi0gICovCi0gIHJlZnJlc2g6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuY29tcHV0ZSgpOwotICAgIHRoaXMucGxvdCgpOwotICB9LAotCi0gIHJlcG9zaXRpb246IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuY29tcHV0ZSgnZW5kJyk7Ci0gIH0sCi0KLS8qCi0gIE1ldGhvZDogY29tcHV0ZUluY3JlbWVudGFsCi0gIAotICBQZXJmb3JtcyB0aGUgRm9yY2UgRGlyZWN0ZWQgYWxnb3JpdGhtIGluY3JlbWVudGFsbHkuCi0gIAotICBEZXNjcmlwdGlvbjoKLSAgCi0gIEZvcmNlRGlyZWN0ZWQgYWxnb3JpdGhtcyBjYW4gcGVyZm9ybSBtYW55IGNvbXB1dGF0aW9ucyBhbmQgbGVhZCB0byBKYXZhU2NyaXB0IHRha2luZyB0b28gbXVjaCB0aW1lIHRvIGNvbXBsZXRlLiAKLSAgVGhpcyBtZXRob2Qgc3BsaXRzIHRoZSBhbGdvcml0aG0gaW50byBzbWFsbGVyIHBhcnRzIGFsbG93aW5nIHRoZSB1c2VyIHRvIHRyYWNrIHRoZSBldm9sdXRpb24gb2YgdGhlIGFsZ29yaXRobSBhbmQgCi0gIGF2b2lkaW5nIGJyb3dzZXIgbWVzc2FnZXMgc3VjaCBhcyAiVGhpcyBzY3JpcHQgaXMgdGFraW5nIHRvbyBsb25nIHRvIGNvbXBsZXRlIi4KLSAgCi0gIFBhcmFtZXRlcnM6Ci0gIAotICBvcHQgLSAob2JqZWN0KSBUaGUgb2JqZWN0IHByb3BlcnRpZXMgYXJlIGRlc2NyaWJlZCBiZWxvdwotICAKLSAgaXRlciAtIChudW1iZXIpIERlZmF1bHQncyAqMjAqLiBTcGxpdCB0aGUgYWxnb3JpdGhtIGludG8gcGllY2VzIG9mIF9pdGVyXyBpdGVyYXRpb25zLiBGb3IgZXhhbXBsZSwgaWYgdGhlIF9pdGVyYXRpb25zXyBjb25maWd1cmF0aW9uIHByb3BlcnR5IAotICBvZiB5b3VyIDxGb3JjZURpcmVjdGVkPiBjbGFzcyBpcyAxMDAsIHRoZW4geW91IGNvdWxkIHNldCBfaXRlcl8gdG8gMjAgdG8gc3BsaXQgdGhlIG1haW4gYWxnb3JpdGhtIGludG8gNSBzbWFsbGVyIHBpZWNlcy4KLSAgCi0gIHByb3BlcnR5IC0gKHN0cmluZykgRGVmYXVsdCdzICplbmQqLiBXaGV0aGVyIHRvIHVwZGF0ZSBzdGFydGluZywgY3VycmVudCBvciBlbmRpbmcgbm9kZSBwb3NpdGlvbnMuIFBvc3NpYmxlIHZhbHVlcyBhcmUgJ2VuZCcsICdzdGFydCcsICdjdXJyZW50Jy4gCi0gIFlvdSBjYW4gYWxzbyBzZXQgYW4gYXJyYXkgb2YgdGhlc2UgcHJvcGVydGllcy4gSWYgeW91J2QgbGlrZSB0byBrZWVwIHRoZSBjdXJyZW50IG5vZGUgcG9zaXRpb25zIGJ1dCB0byBwZXJmb3JtIHRoZXNlIAotICBjb21wdXRhdGlvbnMgZm9yIGZpbmFsIGFuaW1hdGlvbiBwb3NpdGlvbnMgdGhlbiB5b3UgY2FuIGp1c3QgY2hvb3NlICdlbmQnLgotICAKLSAgb25TdGVwIC0gKGZ1bmN0aW9uKSBBIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIGVhY2ggInNtYWxsIHBhcnQiIG9mIHRoZSBhbGdvcml0aG0gY29tcGxldGVkLiBUaGlzIGZ1bmN0aW9uIGdldHMgYXMgZmlyc3QgZm9ybWFsIAotICBwYXJhbWV0ZXIgYSBwZXJjZW50YWdlIHZhbHVlLgotICAKLSAgb25Db21wbGV0ZSAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGFsZ29yaXRobSBjb21wbGV0ZWQuCi0gIAotICBFeGFtcGxlOgotICAKLSAgSW4gdGhpcyBleGFtcGxlIEkgY2FsY3VsYXRlIHRoZSBlbmQgcG9zaXRpb25zIGFuZCB0aGVuIGFuaW1hdGUgdGhlIGdyYXBoIHRvIHRob3NlIHBvc2l0aW9ucwotICAKLSAgKHN0YXJ0IGNvZGUganMpCi0gIHZhciBmZCA9IG5ldyAkaml0LkZvcmNlRGlyZWN0ZWQoLi4uKTsKLSAgZmQuY29tcHV0ZUluY3JlbWVudGFsKHsKLSAgICBpdGVyOiAyMCwKLSAgICBwcm9wZXJ0eTogJ2VuZCcsCi0gICAgb25TdGVwOiBmdW5jdGlvbihwZXJjKSB7Ci0gICAgICBMb2cud3JpdGUoImxvYWRpbmcgIiArIHBlcmMgKyAiJSIpOwotICAgIH0sCi0gICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICBMb2cud3JpdGUoImRvbmUiKTsKLSAgICAgIGZkLmFuaW1hdGUoKTsKLSAgICB9Ci0gIH0pOwotICAoZW5kIGNvZGUpCi0gIAotICBJbiB0aGlzIGV4YW1wbGUgSSBjYWxjdWxhdGUgYWxsIHBvc2l0aW9ucyBhbmQgKHJlKXBsb3QgdGhlIGdyYXBoCi0gIAotICAoc3RhcnQgY29kZSBqcykKLSAgdmFyIGZkID0gbmV3IEZvcmNlRGlyZWN0ZWQoLi4uKTsKLSAgZmQuY29tcHV0ZUluY3JlbWVudGFsKHsKLSAgICBpdGVyOiAyMCwKLSAgICBwcm9wZXJ0eTogWydlbmQnLCAnc3RhcnQnLCAnY3VycmVudCddLAotICAgIG9uU3RlcDogZnVuY3Rpb24ocGVyYykgewotICAgICAgTG9nLndyaXRlKCJsb2FkaW5nICIgKyBwZXJjICsgIiUiKTsKLSAgICB9LAotICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgTG9nLndyaXRlKCJkb25lIik7Ci0gICAgICBmZC5wbG90KCk7Ci0gICAgfQotICB9KTsKLSAgKGVuZCBjb2RlKQotICAKLSAgKi8KLSAgY29tcHV0ZUluY3JlbWVudGFsOiBmdW5jdGlvbihvcHQpIHsKLSAgICBvcHQgPSAkLm1lcmdlKCB7Ci0gICAgICBpdGVyOiAyMCwKLSAgICAgIHByb3BlcnR5OiAnZW5kJywKLSAgICAgIG9uU3RlcDogJC5lbXB0eSwKLSAgICAgIG9uQ29tcGxldGU6ICQuZW1wdHkKLSAgICB9LCBvcHQgfHwge30pOwotCi0gICAgdGhpcy5jb25maWcub25CZWZvcmVDb21wdXRlKHRoaXMuZ3JhcGguZ2V0Tm9kZSh0aGlzLnJvb3QpKTsKLSAgICB0aGlzLmNvbXB1dGUob3B0LnByb3BlcnR5LCBvcHQpOwotICB9LAotCi0gIC8qCi0gICAgTWV0aG9kOiBwbG90Ci0gICAKLSAgICBQbG90cyB0aGUgRm9yY2VEaXJlY3RlZCBncmFwaC4gVGhpcyBpcyBhIHNob3J0Y3V0IHRvICpmeC5wbG90Ki4KLSAgICovCi0gIHBsb3Q6IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuZngucGxvdCgpOwotICB9LAotCi0gIC8qCi0gICAgIE1ldGhvZDogYW5pbWF0ZQotICAgIAotICAgICBBbmltYXRlcyB0aGUgZ3JhcGggZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbnMgdG8gdGhlICdlbmQnIG5vZGUgcG9zaXRpb25zLgotICAqLwotICBhbmltYXRlOiBmdW5jdGlvbihvcHQpIHsKLSAgICB0aGlzLmZ4LmFuaW1hdGUoJC5tZXJnZSggewotICAgICAgbW9kZXM6IFsgJ2xpbmVhcicgXQotICAgIH0sIG9wdCB8fCB7fSkpOwotICB9Ci19KTsKLQotJGppdC5Gb3JjZURpcmVjdGVkLiRleHRlbmQgPSB0cnVlOwotCi0oZnVuY3Rpb24oRm9yY2VEaXJlY3RlZCkgewotCi0gIC8qCi0gICAgIENsYXNzOiBGb3JjZURpcmVjdGVkLk9wCi0gICAgIAotICAgICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5PcD4uCi0KLSAgICAgRXh0ZW5kczoKLQotICAgICBBbGwgPEdyYXBoLk9wPiBtZXRob2RzCi0gICAgIAotICAgICBTZWUgYWxzbzoKLSAgICAgCi0gICAgIDxHcmFwaC5PcD4KLQotICAqLwotICBGb3JjZURpcmVjdGVkLk9wID0gbmV3IENsYXNzKCB7Ci0KLSAgICBJbXBsZW1lbnRzOiBHcmFwaC5PcAotCi0gIH0pOwotCi0gIC8qCi0gICAgQ2xhc3M6IEZvcmNlRGlyZWN0ZWQuUGxvdAotICAgIAotICAgIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLlBsb3Q+LgotICAKLSAgICBFeHRlbmRzOgotICAKLSAgICBBbGwgPEdyYXBoLlBsb3Q+IG1ldGhvZHMKLSAgICAKLSAgICBTZWUgYWxzbzoKLSAgICAKLSAgICA8R3JhcGguUGxvdD4KLSAgCi0gICovCi0gIEZvcmNlRGlyZWN0ZWQuUGxvdCA9IG5ldyBDbGFzcyggewotCi0gICAgSW1wbGVtZW50czogR3JhcGguUGxvdAotCi0gIH0pOwotCi0gIC8qCi0gICAgQ2xhc3M6IEZvcmNlRGlyZWN0ZWQuTGFiZWwKLSAgICAKLSAgICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5MYWJlbD4uIAotICAgIENvbnRhaW5zIGN1c3RvbSA8R3JhcGguTGFiZWwuU1ZHPiwgPEdyYXBoLkxhYmVsLkhUTUw+IGFuZCA8R3JhcGguTGFiZWwuTmF0aXZlPiBleHRlbnNpb25zLgotICAKLSAgICBFeHRlbmRzOgotICAKLSAgICBBbGwgPEdyYXBoLkxhYmVsPiBtZXRob2RzIGFuZCBzdWJjbGFzc2VzLgotICAKLSAgICBTZWUgYWxzbzoKLSAgCi0gICAgPEdyYXBoLkxhYmVsPiwgPEdyYXBoLkxhYmVsLk5hdGl2ZT4sIDxHcmFwaC5MYWJlbC5IVE1MPiwgPEdyYXBoLkxhYmVsLlNWRz4uCi0gIAotICAqLwotICBGb3JjZURpcmVjdGVkLkxhYmVsID0ge307Ci0KLSAgLyoKLSAgICAgRm9yY2VEaXJlY3RlZC5MYWJlbC5OYXRpdmUKLSAgICAgCi0gICAgIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLkxhYmVsLk5hdGl2ZT4uCi0KLSAgICAgRXh0ZW5kczoKLQotICAgICBBbGwgPEdyYXBoLkxhYmVsLk5hdGl2ZT4gbWV0aG9kcwotCi0gICAgIFNlZSBhbHNvOgotCi0gICAgIDxHcmFwaC5MYWJlbC5OYXRpdmU+Ci0KLSAgKi8KLSAgRm9yY2VEaXJlY3RlZC5MYWJlbC5OYXRpdmUgPSBuZXcgQ2xhc3MoIHsKLSAgICBJbXBsZW1lbnRzOiBHcmFwaC5MYWJlbC5OYXRpdmUKLSAgfSk7Ci0KLSAgLyoKLSAgICBGb3JjZURpcmVjdGVkLkxhYmVsLlNWRwotICAgIAotICAgIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLkxhYmVsLlNWRz4uCi0gIAotICAgIEV4dGVuZHM6Ci0gIAotICAgIEFsbCA8R3JhcGguTGFiZWwuU1ZHPiBtZXRob2RzCi0gIAotICAgIFNlZSBhbHNvOgotICAKLSAgICA8R3JhcGguTGFiZWwuU1ZHPgotICAKLSAgKi8KLSAgRm9yY2VEaXJlY3RlZC5MYWJlbC5TVkcgPSBuZXcgQ2xhc3MoIHsKLSAgICBJbXBsZW1lbnRzOiBHcmFwaC5MYWJlbC5TVkcsCi0KLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopIHsKLSAgICAgIHRoaXMudml6ID0gdml6OwotICAgIH0sCi0KLSAgICAvKiAKLSAgICAgICBwbGFjZUxhYmVsCi0KLSAgICAgICBPdmVycmlkZXMgYWJzdHJhY3QgbWV0aG9kIHBsYWNlTGFiZWwgaW4gPEdyYXBoLkxhYmVsPi4KLQotICAgICAgIFBhcmFtZXRlcnM6Ci0KLSAgICAgICB0YWcgLSBBIERPTSBsYWJlbCBlbGVtZW50LgotICAgICAgIG5vZGUgLSBBIDxHcmFwaC5Ob2RlPi4KLSAgICAgICBjb250cm9sbGVyIC0gQSBjb25maWd1cmF0aW9uL2NvbnRyb2xsZXIgb2JqZWN0IHBhc3NlZCB0byB0aGUgdmlzdWFsaXphdGlvbi4KLSAgICAgIAotICAgICAqLwotICAgIHBsYWNlTGFiZWw6IGZ1bmN0aW9uKHRhZywgbm9kZSwgY29udHJvbGxlcikgewotICAgICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICAgIGNhbnZhcyA9IHRoaXMudml6LmNhbnZhcywKLSAgICAgICAgICBveCA9IGNhbnZhcy50cmFuc2xhdGVPZmZzZXRYLAotICAgICAgICAgIG95ID0gY2FudmFzLnRyYW5zbGF0ZU9mZnNldFksCi0gICAgICAgICAgc3ggPSBjYW52YXMuc2NhbGVPZmZzZXRYLAotICAgICAgICAgIHN5ID0gY2FudmFzLnNjYWxlT2Zmc2V0WSwKLSAgICAgICAgICByYWRpdXMgPSBjYW52YXMuZ2V0U2l6ZSgpOwotICAgICAgdmFyIGxhYmVsUG9zID0gewotICAgICAgICB4OiBNYXRoLnJvdW5kKHBvcy54ICogc3ggKyBveCArIHJhZGl1cy53aWR0aCAvIDIpLAotICAgICAgICB5OiBNYXRoLnJvdW5kKHBvcy55ICogc3kgKyBveSArIHJhZGl1cy5oZWlnaHQgLyAyKQotICAgICAgfTsKLSAgICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ3gnLCBsYWJlbFBvcy54KTsKLSAgICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ3knLCBsYWJlbFBvcy55KTsKLQotICAgICAgY29udHJvbGxlci5vblBsYWNlTGFiZWwodGFnLCBub2RlKTsKLSAgICB9Ci0gIH0pOwotCi0gIC8qCi0gICAgIEZvcmNlRGlyZWN0ZWQuTGFiZWwuSFRNTAotICAgICAKLSAgICAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguTGFiZWwuSFRNTD4uCi0KLSAgICAgRXh0ZW5kczoKLQotICAgICBBbGwgPEdyYXBoLkxhYmVsLkhUTUw+IG1ldGhvZHMuCi0KLSAgICAgU2VlIGFsc286Ci0KLSAgICAgPEdyYXBoLkxhYmVsLkhUTUw+Ci0KLSAgKi8KLSAgRm9yY2VEaXJlY3RlZC5MYWJlbC5IVE1MID0gbmV3IENsYXNzKCB7Ci0gICAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuSFRNTCwKLQotICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHZpeikgewotICAgICAgdGhpcy52aXogPSB2aXo7Ci0gICAgfSwKLSAgICAvKiAKLSAgICAgICBwbGFjZUxhYmVsCi0KLSAgICAgICBPdmVycmlkZXMgYWJzdHJhY3QgbWV0aG9kIHBsYWNlTGFiZWwgaW4gPEdyYXBoLlBsb3Q+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIHRhZyAtIEEgRE9NIGxhYmVsIGVsZW1lbnQuCi0gICAgICAgbm9kZSAtIEEgPEdyYXBoLk5vZGU+LgotICAgICAgIGNvbnRyb2xsZXIgLSBBIGNvbmZpZ3VyYXRpb24vY29udHJvbGxlciBvYmplY3QgcGFzc2VkIHRvIHRoZSB2aXN1YWxpemF0aW9uLgotICAgICAgCi0gICAgICovCi0gICAgcGxhY2VMYWJlbDogZnVuY3Rpb24odGFnLCBub2RlLCBjb250cm9sbGVyKSB7Ci0gICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgY2FudmFzID0gdGhpcy52aXouY2FudmFzLAotICAgICAgICAgIG94ID0gY2FudmFzLnRyYW5zbGF0ZU9mZnNldFgsCi0gICAgICAgICAgb3kgPSBjYW52YXMudHJhbnNsYXRlT2Zmc2V0WSwKLSAgICAgICAgICBzeCA9IGNhbnZhcy5zY2FsZU9mZnNldFgsCi0gICAgICAgICAgc3kgPSBjYW52YXMuc2NhbGVPZmZzZXRZLAotICAgICAgICAgIHJhZGl1cyA9IGNhbnZhcy5nZXRTaXplKCk7Ci0gICAgICB2YXIgbGFiZWxQb3MgPSB7Ci0gICAgICAgIHg6IE1hdGgucm91bmQocG9zLnggKiBzeCArIG94ICsgcmFkaXVzLndpZHRoIC8gMiksCi0gICAgICAgIHk6IE1hdGgucm91bmQocG9zLnkgKiBzeSArIG95ICsgcmFkaXVzLmhlaWdodCAvIDIpCi0gICAgICB9OwotICAgICAgdmFyIHN0eWxlID0gdGFnLnN0eWxlOwotICAgICAgc3R5bGUubGVmdCA9IGxhYmVsUG9zLnggKyAncHgnOwotICAgICAgc3R5bGUudG9wID0gbGFiZWxQb3MueSArICdweCc7Ci0gICAgICBzdHlsZS5kaXNwbGF5ID0gdGhpcy5maXRzSW5DYW52YXMobGFiZWxQb3MsIGNhbnZhcykgPyAnJyA6ICdub25lJzsKLQotICAgICAgY29udHJvbGxlci5vblBsYWNlTGFiZWwodGFnLCBub2RlKTsKLSAgICB9Ci0gIH0pOwotCi0gIC8qCi0gICAgQ2xhc3M6IEZvcmNlRGlyZWN0ZWQuUGxvdC5Ob2RlVHlwZXMKLQotICAgIFRoaXMgY2xhc3MgY29udGFpbnMgYSBsaXN0IG9mIDxHcmFwaC5Ob2RlPiBidWlsdC1pbiB0eXBlcy4gCi0gICAgTm9kZSB0eXBlcyBpbXBsZW1lbnRlZCBhcmUgJ25vbmUnLCAnY2lyY2xlJywgJ3RyaWFuZ2xlJywgJ3JlY3RhbmdsZScsICdzdGFyJywgJ2VsbGlwc2UnIGFuZCAnc3F1YXJlJy4KLQotICAgIFlvdSBjYW4gYWRkIHlvdXIgY3VzdG9tIG5vZGUgdHlwZXMsIGN1c3RvbWl6aW5nIHlvdXIgdmlzdWFsaXphdGlvbiB0byB0aGUgZXh0cmVtZS4KLQotICAgIEV4YW1wbGU6Ci0KLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgIEZvcmNlRGlyZWN0ZWQuUGxvdC5Ob2RlVHlwZXMuaW1wbGVtZW50KHsKLSAgICAgICAgJ215U3BlY2lhbFR5cGUnOiB7Ci0gICAgICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICAgICAgLy9wcmludCB5b3VyIGN1c3RvbSBub2RlIHRvIGNhbnZhcwotICAgICAgICAgIH0sCi0gICAgICAgICAgLy9vcHRpb25hbAotICAgICAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgICAgICAgLy9yZXR1cm4gdHJ1ZSBpZiBwb3MgaXMgaW5zaWRlIHRoZSBub2RlIG9yIGZhbHNlIG90aGVyd2lzZQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgKGVuZCBjb2RlKQotCi0gICovCi0gIEZvcmNlRGlyZWN0ZWQuUGxvdC5Ob2RlVHlwZXMgPSBuZXcgQ2xhc3MoewotICAgICdub25lJzogewotICAgICAgJ3JlbmRlcic6ICQuZW1wdHksCi0gICAgICAnY29udGFpbnMnOiAkLmxhbWJkYShmYWxzZSkKLSAgICB9LAotICAgICdjaXJjbGUnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKXsKLSAgICAgICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICAgICAgZGltID0gbm9kZS5nZXREYXRhKCdkaW0nKTsKLSAgICAgICAgdGhpcy5ub2RlSGVscGVyLmNpcmNsZS5yZW5kZXIoJ2ZpbGwnLCBwb3MsIGRpbSwgY2FudmFzKTsKLSAgICAgIH0sCi0gICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBwb3MpewotICAgICAgICB2YXIgbnBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICAgICAgZGltID0gbm9kZS5nZXREYXRhKCdkaW0nKTsKLSAgICAgICAgcmV0dXJuIHRoaXMubm9kZUhlbHBlci5jaXJjbGUuY29udGFpbnMobnBvcywgcG9zLCBkaW0pOwotICAgICAgfQotICAgIH0sCi0gICAgJ2VsbGlwc2UnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKXsKLSAgICAgICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICAgICAgd2lkdGggPSBub2RlLmdldERhdGEoJ3dpZHRoJyksIAotICAgICAgICAgICAgaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKTsKLSAgICAgICAgdGhpcy5ub2RlSGVscGVyLmVsbGlwc2UucmVuZGVyKCdmaWxsJywgcG9zLCB3aWR0aCwgaGVpZ2h0LCBjYW52YXMpOwotICAgICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKXsKLSAgICAgICAgdmFyIG5wb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICAgIHdpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLCAKLSAgICAgICAgICAgIGhlaWdodCA9IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0Jyk7Ci0gICAgICAgIHJldHVybiB0aGlzLm5vZGVIZWxwZXIuZWxsaXBzZS5jb250YWlucyhucG9zLCBwb3MsIHdpZHRoLCBoZWlnaHQpOwotICAgICAgfQotICAgIH0sCi0gICAgJ3NxdWFyZSc6IHsKLSAgICAgICdyZW5kZXInOiBmdW5jdGlvbihub2RlLCBjYW52YXMpewotICAgICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgICBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpOwotICAgICAgICB0aGlzLm5vZGVIZWxwZXIuc3F1YXJlLnJlbmRlcignZmlsbCcsIHBvcywgZGltLCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcyl7Ci0gICAgICAgIHZhciBucG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgICBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpOwotICAgICAgICByZXR1cm4gdGhpcy5ub2RlSGVscGVyLnNxdWFyZS5jb250YWlucyhucG9zLCBwb3MsIGRpbSk7Ci0gICAgICB9Ci0gICAgfSwKLSAgICAncmVjdGFuZ2xlJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcyl7Ci0gICAgICAgIHZhciBwb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICAgIHdpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLCAKLSAgICAgICAgICAgIGhlaWdodCA9IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0Jyk7Ci0gICAgICAgIHRoaXMubm9kZUhlbHBlci5yZWN0YW5nbGUucmVuZGVyKCdmaWxsJywgcG9zLCB3aWR0aCwgaGVpZ2h0LCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcyl7Ci0gICAgICAgIHZhciBucG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgICB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSwgCi0gICAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpOwotICAgICAgICByZXR1cm4gdGhpcy5ub2RlSGVscGVyLnJlY3RhbmdsZS5jb250YWlucyhucG9zLCBwb3MsIHdpZHRoLCBoZWlnaHQpOwotICAgICAgfQotICAgIH0sCi0gICAgJ3RyaWFuZ2xlJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcyl7Ci0gICAgICAgIHZhciBwb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICAgIGRpbSA9IG5vZGUuZ2V0RGF0YSgnZGltJyk7Ci0gICAgICAgIHRoaXMubm9kZUhlbHBlci50cmlhbmdsZS5yZW5kZXIoJ2ZpbGwnLCBwb3MsIGRpbSwgY2FudmFzKTsKLSAgICAgIH0sCi0gICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBwb3MpIHsKLSAgICAgICAgdmFyIG5wb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICAgIGRpbSA9IG5vZGUuZ2V0RGF0YSgnZGltJyk7Ci0gICAgICAgIHJldHVybiB0aGlzLm5vZGVIZWxwZXIudHJpYW5nbGUuY29udGFpbnMobnBvcywgcG9zLCBkaW0pOwotICAgICAgfQotICAgIH0sCi0gICAgJ3N0YXInOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKXsKLSAgICAgICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpOwotICAgICAgICB0aGlzLm5vZGVIZWxwZXIuc3Rhci5yZW5kZXIoJ2ZpbGwnLCBwb3MsIGRpbSwgY2FudmFzKTsKLSAgICAgIH0sCi0gICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBwb3MpIHsKLSAgICAgICAgdmFyIG5wb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLAotICAgICAgICAgICAgZGltID0gbm9kZS5nZXREYXRhKCdkaW0nKTsKLSAgICAgICAgcmV0dXJuIHRoaXMubm9kZUhlbHBlci5zdGFyLmNvbnRhaW5zKG5wb3MsIHBvcywgZGltKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0pOwotCi0gIC8qCi0gICAgQ2xhc3M6IEZvcmNlRGlyZWN0ZWQuUGxvdC5FZGdlVHlwZXMKLSAgCi0gICAgVGhpcyBjbGFzcyBjb250YWlucyBhIGxpc3Qgb2YgPEdyYXBoLkFkamFjZW5jZT4gYnVpbHQtaW4gdHlwZXMuIAotICAgIEVkZ2UgdHlwZXMgaW1wbGVtZW50ZWQgYXJlICdub25lJywgJ2xpbmUnIGFuZCAnYXJyb3cnLgotICAKLSAgICBZb3UgY2FuIGFkZCB5b3VyIGN1c3RvbSBlZGdlIHR5cGVzLCBjdXN0b21pemluZyB5b3VyIHZpc3VhbGl6YXRpb24gdG8gdGhlIGV4dHJlbWUuCi0gIAotICAgIEV4YW1wbGU6Ci0gIAotICAgIChzdGFydCBjb2RlIGpzKQotICAgICAgRm9yY2VEaXJlY3RlZC5QbG90LkVkZ2VUeXBlcy5pbXBsZW1lbnQoewotICAgICAgICAnbXlTcGVjaWFsVHlwZSc6IHsKLSAgICAgICAgICAncmVuZGVyJzogZnVuY3Rpb24oYWRqLCBjYW52YXMpIHsKLSAgICAgICAgICAgIC8vcHJpbnQgeW91ciBjdXN0b20gZWRnZSB0byBjYW52YXMKLSAgICAgICAgICB9LAotICAgICAgICAgIC8vb3B0aW9uYWwKLSAgICAgICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihhZGosIHBvcykgewotICAgICAgICAgICAgLy9yZXR1cm4gdHJ1ZSBpZiBwb3MgaXMgaW5zaWRlIHRoZSBhcmMgb3IgZmFsc2Ugb3RoZXJ3aXNlCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICAoZW5kIGNvZGUpCi0gIAotICAqLwotICBGb3JjZURpcmVjdGVkLlBsb3QuRWRnZVR5cGVzID0gbmV3IENsYXNzKHsKLSAgICAnbm9uZSc6ICQuZW1wdHksCi0gICAgJ2xpbmUnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24oYWRqLCBjYW52YXMpIHsKLSAgICAgICAgdmFyIGZyb20gPSBhZGoubm9kZUZyb20ucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICB0byA9IGFkai5ub2RlVG8ucG9zLmdldGModHJ1ZSk7Ci0gICAgICAgIHRoaXMuZWRnZUhlbHBlci5saW5lLnJlbmRlcihmcm9tLCB0bywgY2FudmFzKTsKLSAgICAgIH0sCi0gICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihhZGosIHBvcykgewotICAgICAgICB2YXIgZnJvbSA9IGFkai5ub2RlRnJvbS5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIHRvID0gYWRqLm5vZGVUby5wb3MuZ2V0Yyh0cnVlKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuZWRnZUhlbHBlci5saW5lLmNvbnRhaW5zKGZyb20sIHRvLCBwb3MsIHRoaXMuZWRnZS5lcHNpbG9uKTsKLSAgICAgIH0KLSAgICB9LAotICAgICdhcnJvdyc6IHsKLSAgICAgICdyZW5kZXInOiBmdW5jdGlvbihhZGosIGNhbnZhcykgewotICAgICAgICB2YXIgZnJvbSA9IGFkai5ub2RlRnJvbS5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIHRvID0gYWRqLm5vZGVUby5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIGRpbSA9IGFkai5nZXREYXRhKCdkaW0nKSwKLSAgICAgICAgICAgIGRpcmVjdGlvbiA9IGFkai5kYXRhLiRkaXJlY3Rpb24sCi0gICAgICAgICAgICBpbnYgPSAoZGlyZWN0aW9uICYmIGRpcmVjdGlvbi5sZW5ndGg+MSAmJiBkaXJlY3Rpb25bMF0gIT0gYWRqLm5vZGVGcm9tLmlkKTsKLSAgICAgICAgdGhpcy5lZGdlSGVscGVyLmFycm93LnJlbmRlcihmcm9tLCB0bywgZGltLCBpbnYsIGNhbnZhcyk7Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24oYWRqLCBwb3MpIHsKLSAgICAgICAgdmFyIGZyb20gPSBhZGoubm9kZUZyb20ucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICB0byA9IGFkai5ub2RlVG8ucG9zLmdldGModHJ1ZSk7Ci0gICAgICAgIHJldHVybiB0aGlzLmVkZ2VIZWxwZXIuYXJyb3cuY29udGFpbnMoZnJvbSwgdG8sIHBvcywgdGhpcy5lZGdlLmVwc2lsb24pOwotICAgICAgfQotICAgIH0KLSAgfSk7Ci0KLX0pKCRqaXQuRm9yY2VEaXJlY3RlZCk7Ci0KLQotLyoKLSAqIEZpbGU6IFRyZWVtYXAuanMKLSAqCi0qLwotCi0kaml0LlRNID0ge307Ci0KLXZhciBUTSA9ICRqaXQuVE07Ci0KLSRqaXQuVE0uJGV4dGVuZCA9IHRydWU7Ci0KLS8qCi0gIENsYXNzOiBUTS5CYXNlCi0gIAotICBBYnN0cmFjdCBjbGFzcyBwcm92aWRpbmcgYmFzZSBmdW5jdGlvbmFsaXR5IGZvciA8VE0uU3F1YXJpZmllZD4sIDxUTS5TdHJpcD4gYW5kIDxUTS5TbGljZUFuZERpY2U+IHZpc3VhbGl6YXRpb25zLgotICAKLSAgSW1wbGVtZW50czoKLSAgCi0gIEFsbCA8TG9hZGVyPiBtZXRob2RzCi0gIAotICBDb25zdHJ1Y3RvciBPcHRpb25zOgotICAKLSAgSW5oZXJpdHMgb3B0aW9ucyBmcm9tCi0gIAotICAtIDxPcHRpb25zLkNhbnZhcz4KLSAgLSA8T3B0aW9ucy5Db250cm9sbGVyPgotICAtIDxPcHRpb25zLk5vZGU+Ci0gIC0gPE9wdGlvbnMuRWRnZT4KLSAgLSA8T3B0aW9ucy5MYWJlbD4KLSAgLSA8T3B0aW9ucy5FdmVudHM+Ci0gIC0gPE9wdGlvbnMuVGlwcz4KLSAgLSA8T3B0aW9ucy5Ob2RlU3R5bGVzPgotICAtIDxPcHRpb25zLk5hdmlnYXRpb24+Ci0gIAotICBBZGRpdGlvbmFsbHksIHRoZXJlIGFyZSBvdGhlciBwYXJhbWV0ZXJzIGFuZCBzb21lIGRlZmF1bHQgdmFsdWVzIGNoYW5nZWQKLQotICBvcmllbnRhdGlvbiAtIChzdHJpbmcpIERlZmF1bHQncyAqaCouIFdoZXRoZXIgdG8gc2V0IGhvcml6b250YWwgb3IgdmVydGljYWwgbGF5b3V0cy4gUG9zc2libGUgdmFsdWVzIGFyZSAnaCcgYW5kICd2Jy4KLSAgdGl0bGVIZWlnaHQgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjEzKi4gVGhlIGhlaWdodCBvZiB0aGUgdGl0bGUgcmVjdGFuZ2xlIGZvciBpbm5lciAobm9uLWxlYWYpIG5vZGVzLgotICBvZmZzZXQgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjIqLiBCb3hlcyBvZmZzZXQuCi0gIGNvbnN0cmFpbmVkIC0gKGJvb2xlYW4pIERlZmF1bHQncyAqZmFsc2UqLiBXaGV0aGVyIHRvIHNob3cgdGhlIGVudGlyZSB0cmVlIHdoZW4gbG9hZGVkIG9yIGp1c3QgdGhlIG51bWJlciBvZiBsZXZlbHMgc3BlY2lmaWVkIGJ5IF9sZXZlbHNUb1Nob3dfLgotICBsZXZlbHNUb1Nob3cgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjMqLiBUaGUgbnVtYmVyIG9mIGxldmVscyB0byBzaG93IGZvciBhIHN1YnRyZWUuIFRoaXMgbnVtYmVyIGlzIHJlbGF0aXZlIHRvIHRoZSBzZWxlY3RlZCBub2RlLgotICBhbmltYXRlIC0gKGJvb2xlYW4pIERlZmF1bHQncyAqZmFsc2UqLiBXaGV0aGVyIHRvIGFuaW1hdGUgdHJhbnNpdGlvbnMuCi0gIE5vZGUudHlwZSAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5Ob2RlPi4gRGVmYXVsdCdzICpyZWN0YW5nbGUqLgotICBkdXJhdGlvbiAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5GeD4uIERlZmF1bHQncyAqNzAwKi4KLSAgZnBzIC0gRGVzY3JpYmVkIGluIDxPcHRpb25zLkZ4Pi4gRGVmYXVsdCdzICo0NSouCi0gIAotICBJbnN0YW5jZSBQcm9wZXJ0aWVzOgotICAKLSAgY2FudmFzIC0gQWNjZXNzIGEgPENhbnZhcz4gaW5zdGFuY2UuCi0gIGdyYXBoIC0gQWNjZXNzIGEgPEdyYXBoPiBpbnN0YW5jZS4KLSAgb3AgLSBBY2Nlc3MgYSA8VE0uT3A+IGluc3RhbmNlLgotICBmeCAtIEFjY2VzcyBhIDxUTS5QbG90PiBpbnN0YW5jZS4KLSAgbGFiZWxzIC0gQWNjZXNzIGEgPFRNLkxhYmVsPiBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uCi0KLSAgSW5zcGlyZWQgYnk6Ci0gIAotICBTcXVhcmlmaWVkIFRyZWVtYXBzIChNYXJrIEJydWxzLCBLZWVzIEh1aXppbmcsIGFuZCBKYXJrZSBKLiB2YW4gV2lqaykgPGh0dHA6Ly93d3cud2luLnR1ZS5ubC9+dmFud2lqay9zdG0ucGRmPgotICAKLSAgVHJlZSB2aXN1YWxpemF0aW9uIHdpdGggdHJlZS1tYXBzOiAyLWQgc3BhY2UtZmlsbGluZyBhcHByb2FjaCAoQmVuIFNobmVpZGVybWFuKSA8aHR0cDovL2hjaWwuY3MudW1kLmVkdS90cnMvOTEtMDMvOTEtMDMuaHRtbD4KLSAgCi0gICBOb3RlOgotICAgCi0gICBUaGlzIHZpc3VhbGl6YXRpb24gd2FzIGJ1aWx0IGFuZCBlbmdpbmVlcmVkIGZyb20gc2NyYXRjaCwgdGFraW5nIG9ubHkgdGhlIHBhcGVyIGFzIGluc3BpcmF0aW9uLCBhbmQgb25seSBzaGFyZXMgc29tZSBmZWF0dXJlcyB3aXRoIHRoZSB2aXN1YWxpemF0aW9uIGRlc2NyaWJlZCBpbiB0aGUgcGFwZXIuCi0KLSovCi1UTS5CYXNlID0gewotICBsYXlvdXQ6IHsKLSAgICBvcmllbnRhdGlvbjogImgiLAotICAgIHZlcnRpY2FsOiBmdW5jdGlvbigpewotICAgICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb24gPT0gInYiOwotICAgIH0sCi0gICAgaG9yaXpvbnRhbDogZnVuY3Rpb24oKXsKLSAgICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uID09ICJoIjsKLSAgICB9LAotICAgIGNoYW5nZTogZnVuY3Rpb24oKXsKLSAgICAgIHRoaXMub3JpZW50YXRpb24gPSB0aGlzLnZlcnRpY2FsKCk/ICJoIiA6ICJ2IjsKLSAgICB9Ci0gIH0sCi0KLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oY29udHJvbGxlcil7Ci0gICAgdmFyIGNvbmZpZyA9IHsKLSAgICAgIG9yaWVudGF0aW9uOiAiaCIsCi0gICAgICB0aXRsZUhlaWdodDogMTMsCi0gICAgICBvZmZzZXQ6IDIsCi0gICAgICBsZXZlbHNUb1Nob3c6IDAsCi0gICAgICBjb25zdHJhaW5lZDogZmFsc2UsCi0gICAgICBhbmltYXRlOiBmYWxzZSwKLSAgICAgIE5vZGU6IHsKLSAgICAgICAgdHlwZTogJ3JlY3RhbmdsZScsCi0gICAgICAgIG92ZXJyaWRhYmxlOiB0cnVlLAotICAgICAgICAvL3dlIGFsbCBrbm93IHdoeSB0aGlzIGlzIG5vdCB6ZXJvLAotICAgICAgICAvL3JpZ2h0LCBGaXJlZm94PwotICAgICAgICB3aWR0aDogMywKLSAgICAgICAgaGVpZ2h0OiAzLAotICAgICAgICBjb2xvcjogJyM0NDQnCi0gICAgICB9LAotICAgICAgTGFiZWw6IHsKLSAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJywKLSAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJwotICAgICAgfSwKLSAgICAgIEVkZ2U6IHsKLSAgICAgICAgdHlwZTogJ25vbmUnCi0gICAgICB9LAotICAgICAgZHVyYXRpb246IDcwMCwKLSAgICAgIGZwczogNDUKLSAgICB9OwotCi0gICAgdGhpcy5jb250cm9sbGVyID0gdGhpcy5jb25maWcgPSAkLm1lcmdlKE9wdGlvbnMoIkNhbnZhcyIsICJOb2RlIiwgIkVkZ2UiLAotICAgICAgICAiRngiLCAiQ29udHJvbGxlciIsICJUaXBzIiwgIk5vZGVTdHlsZXMiLCAiRXZlbnRzIiwgIk5hdmlnYXRpb24iLCAiTGFiZWwiKSwgY29uZmlnLCBjb250cm9sbGVyKTsKLSAgICB0aGlzLmxheW91dC5vcmllbnRhdGlvbiA9IHRoaXMuY29uZmlnLm9yaWVudGF0aW9uOwotCi0gICAgdmFyIGNhbnZhc0NvbmZpZyA9IHRoaXMuY29uZmlnOwotICAgIGlmIChjYW52YXNDb25maWcudXNlQ2FudmFzKSB7Ci0gICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhc0NvbmZpZy51c2VDYW52YXM7Ci0gICAgICB0aGlzLmNvbmZpZy5sYWJlbENvbnRhaW5lciA9IHRoaXMuY2FudmFzLmlkICsgJy1sYWJlbCc7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGlmKGNhbnZhc0NvbmZpZy5iYWNrZ3JvdW5kKSB7Ci0gICAgICAgIGNhbnZhc0NvbmZpZy5iYWNrZ3JvdW5kID0gJC5tZXJnZSh7Ci0gICAgICAgICAgdHlwZTogJ0NpcmNsZXMnCi0gICAgICAgIH0sIGNhbnZhc0NvbmZpZy5iYWNrZ3JvdW5kKTsKLSAgICAgIH0KLSAgICAgIHRoaXMuY2FudmFzID0gbmV3IENhbnZhcyh0aGlzLCBjYW52YXNDb25maWcpOwotICAgICAgdGhpcy5jb25maWcubGFiZWxDb250YWluZXIgPSAodHlwZW9mIGNhbnZhc0NvbmZpZy5pbmplY3RJbnRvID09ICdzdHJpbmcnPyBjYW52YXNDb25maWcuaW5qZWN0SW50byA6IGNhbnZhc0NvbmZpZy5pbmplY3RJbnRvLmlkKSArICctbGFiZWwnOwotICAgIH0KLQotICAgIHRoaXMuZ3JhcGhPcHRpb25zID0gewotICAgICAgJ2tsYXNzJzogQ29tcGxleCwKLSAgICAgICdOb2RlJzogewotICAgICAgICAnc2VsZWN0ZWQnOiBmYWxzZSwKLSAgICAgICAgJ2V4aXN0JzogdHJ1ZSwKLSAgICAgICAgJ2RyYXduJzogdHJ1ZQotICAgICAgfQotICAgIH07Ci0gICAgdGhpcy5ncmFwaCA9IG5ldyBHcmFwaCh0aGlzLmdyYXBoT3B0aW9ucywgdGhpcy5jb25maWcuTm9kZSwKLSAgICAgICAgdGhpcy5jb25maWcuRWRnZSk7Ci0gICAgdGhpcy5sYWJlbHMgPSBuZXcgVE0uTGFiZWxbY2FudmFzQ29uZmlnLkxhYmVsLnR5cGVdKHRoaXMpOwotICAgIHRoaXMuZnggPSBuZXcgVE0uUGxvdCh0aGlzKTsKLSAgICB0aGlzLm9wID0gbmV3IFRNLk9wKHRoaXMpOwotICAgIHRoaXMuZ3JvdXAgPSBuZXcgVE0uR3JvdXAodGhpcyk7Ci0gICAgdGhpcy5nZW9tID0gbmV3IFRNLkdlb20odGhpcyk7Ci0gICAgdGhpcy5jbGlja2VkTm9kZSA9IG51bGw7Ci0gICAgdGhpcy5idXN5ID0gZmFsc2U7Ci0gICAgLy8gaW5pdGlhbGl6ZSBleHRyYXMKLSAgICB0aGlzLmluaXRpYWxpemVFeHRyYXMoKTsKLSAgfSwKLQotICAvKiAKLSAgICBNZXRob2Q6IHJlZnJlc2ggCi0gICAgCi0gICAgQ29tcHV0ZXMgcG9zaXRpb25zIGFuZCBwbG90cyB0aGUgdHJlZS4KLSAgKi8KLSAgcmVmcmVzaDogZnVuY3Rpb24oKXsKLSAgICBpZih0aGlzLmJ1c3kpIHJldHVybjsKLSAgICB0aGlzLmJ1c3kgPSB0cnVlOwotICAgIHZhciB0aGF0ID0gdGhpczsKLSAgICBpZih0aGlzLmNvbmZpZy5hbmltYXRlKSB7Ci0gICAgICB0aGlzLmNvbXB1dGUoJ2VuZCcpOwotICAgICAgdGhpcy5jb25maWcubGV2ZWxzVG9TaG93ID4gMCAmJiB0aGlzLmdlb20uc2V0UmlnaHRMZXZlbFRvU2hvdyh0aGlzLmdyYXBoLmdldE5vZGUodGhpcy5jbGlja2VkTm9kZSAKLSAgICAgICAgICAmJiB0aGlzLmNsaWNrZWROb2RlLmlkIHx8IHRoaXMucm9vdCkpOwotICAgICAgdGhpcy5meC5hbmltYXRlKCQubWVyZ2UodGhpcy5jb25maWcsIHsKLSAgICAgICAgbW9kZXM6IFsnbGluZWFyJywgJ25vZGUtcHJvcGVydHk6d2lkdGg6aGVpZ2h0J10sCi0gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIHRoYXQuYnVzeSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICB9KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHZhciBsYWJlbFR5cGUgPSB0aGlzLmNvbmZpZy5MYWJlbC50eXBlOwotICAgICAgaWYobGFiZWxUeXBlICE9ICdOYXRpdmUnKSB7Ci0gICAgICAgIHZhciB0aGF0ID0gdGhpczsKLSAgICAgICAgdGhpcy5ncmFwaC5lYWNoTm9kZShmdW5jdGlvbihuKSB7IHRoYXQubGFiZWxzLmhpZGVMYWJlbChuLCBmYWxzZSk7IH0pOwotICAgICAgfQotICAgICAgdGhpcy5idXN5ID0gZmFsc2U7Ci0gICAgICB0aGlzLmNvbXB1dGUoKTsKLSAgICAgIHRoaXMuY29uZmlnLmxldmVsc1RvU2hvdyA+IDAgJiYgdGhpcy5nZW9tLnNldFJpZ2h0TGV2ZWxUb1Nob3codGhpcy5ncmFwaC5nZXROb2RlKHRoaXMuY2xpY2tlZE5vZGUgCi0gICAgICAgICAgJiYgdGhpcy5jbGlja2VkTm9kZS5pZCB8fCB0aGlzLnJvb3QpKTsKLSAgICAgIHRoaXMucGxvdCgpOwotICAgIH0KLSAgfSwKLQotICAvKiAKLSAgICBNZXRob2Q6IHBsb3QgCi0gICAgCi0gICAgUGxvdHMgdGhlIFRyZWVNYXAuIFRoaXMgaXMgYSBzaG9ydGN1dCB0byAqZngucGxvdCouIAotICAKLSAgICovCi0gIHBsb3Q6IGZ1bmN0aW9uKCl7Ci0gICAgdGhpcy5meC5wbG90KCk7Ci0gIH0sCi0KLSAgLyogCi0gIE1ldGhvZDogbGVhZiAKLSAgCi0gIFJldHVybnMgd2hldGhlciB0aGUgbm9kZSBpcyBhIGxlYWYuCi0gIAotICAgUGFyYW1ldGVyczoKLSAgIAotICAgbiAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+LgotCi0gKi8KLSAgbGVhZjogZnVuY3Rpb24obil7Ci0gICAgcmV0dXJuIG4uZ2V0U3Vibm9kZXMoWwotICAgICAgICAxLCAxCi0gICAgXSwgImlnbm9yZSIpLmxlbmd0aCA9PSAwOwotICB9LAotICAKLSAgLyogCi0gIE1ldGhvZDogZW50ZXIgCi0gIAotICBTZXRzIHRoZSBub2RlIGFzIHJvb3QuCi0gIAotICAgUGFyYW1ldGVyczoKLSAgIAotICAgbiAtIChvYmplY3QpIEEgPEdyYXBoLk5vZGU+LgotCi0gKi8KLSAgZW50ZXI6IGZ1bmN0aW9uKG4pewotICAgIGlmKHRoaXMuYnVzeSkgcmV0dXJuOwotICAgIHRoaXMuYnVzeSA9IHRydWU7Ci0gICAgCi0gICAgdmFyIHRoYXQgPSB0aGlzLAotICAgICAgICBjb25maWcgPSB0aGlzLmNvbmZpZywKLSAgICAgICAgZ3JhcGggPSB0aGlzLmdyYXBoLAotICAgICAgICBjbGlja2VkTm9kZSA9IG4sCi0gICAgICAgIHByZXZpb3VzQ2xpY2tlZE5vZGUgPSB0aGlzLmNsaWNrZWROb2RlOwotCi0gICAgdmFyIGNhbGxiYWNrID0gewotICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIC8vZW5zdXJlIHRoYXQgbm9kZXMgYXJlIHNob3duIGZvciB0aGF0IGxldmVsCi0gICAgICAgIGlmKGNvbmZpZy5sZXZlbHNUb1Nob3cgPiAwKSB7Ci0gICAgICAgICAgdGhhdC5nZW9tLnNldFJpZ2h0TGV2ZWxUb1Nob3cobik7Ci0gICAgICAgIH0KLSAgICAgICAgLy9jb21wdXRlIHBvc2l0aW9ucyBvZiBuZXdseSBpbnNlcnRlZCBub2RlcwotICAgICAgICBpZihjb25maWcubGV2ZWxzVG9TaG93ID4gMCB8fCBjb25maWcucmVxdWVzdCkgdGhhdC5jb21wdXRlKCk7Ci0gICAgICAgIGlmKGNvbmZpZy5hbmltYXRlKSB7Ci0gICAgICAgICAgLy9mYWRlIG5vZGVzCi0gICAgICAgICAgZ3JhcGgubm9kZUxpc3Quc2V0RGF0YSgnYWxwaGEnLCAwLCAnZW5kJyk7Ci0gICAgICAgICAgbi5lYWNoU3ViZ3JhcGgoZnVuY3Rpb24obikgewotICAgICAgICAgICAgbi5zZXREYXRhKCdhbHBoYScsIDEsICdlbmQnKTsKLSAgICAgICAgICB9LCAiaWdub3JlIik7Ci0gICAgICAgICAgdGhhdC5meC5hbmltYXRlKHsKLSAgICAgICAgICAgIGR1cmF0aW9uOiA1MDAsCi0gICAgICAgICAgICBtb2RlczpbJ25vZGUtcHJvcGVydHk6YWxwaGEnXSwKLSAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAvL2NvbXB1dGUgZW5kIHBvc2l0aW9ucwotICAgICAgICAgICAgICB0aGF0LmNsaWNrZWROb2RlID0gY2xpY2tlZE5vZGU7Ci0gICAgICAgICAgICAgIHRoYXQuY29tcHV0ZSgnZW5kJyk7Ci0gICAgICAgICAgICAgIC8vYW5pbWF0ZSBwb3NpdGlvbnMKLSAgICAgICAgICAgICAgLy9UT0RPKG5pY28pIGNvbW1lbnRpbmcgdGhpcyBsaW5lIGRpZG4ndCBzZWVtIHRvIHRocm93IGVycm9ycy4uLgotICAgICAgICAgICAgICB0aGF0LmNsaWNrZWROb2RlID0gcHJldmlvdXNDbGlja2VkTm9kZTsKLSAgICAgICAgICAgICAgdGhhdC5meC5hbmltYXRlKHsKLSAgICAgICAgICAgICAgICBtb2RlczpbJ2xpbmVhcicsICdub2RlLXByb3BlcnR5OndpZHRoOmhlaWdodCddLAotICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLAotICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgeyAKLSAgICAgICAgICAgICAgICAgIHRoYXQuYnVzeSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgLy9UT0RPKG5pY28pIGNoZWNrIGNvbW1lbnQgYWJvdmUKLSAgICAgICAgICAgICAgICAgIHRoYXQuY2xpY2tlZE5vZGUgPSBjbGlja2VkTm9kZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHRoYXQuYnVzeSA9IGZhbHNlOwotICAgICAgICAgIHRoYXQuY2xpY2tlZE5vZGUgPSBuOwotICAgICAgICAgIHRoYXQucmVmcmVzaCgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfTsKLSAgICBpZihjb25maWcucmVxdWVzdCkgewotICAgICAgdGhpcy5yZXF1ZXN0Tm9kZXMoY2xpY2tlZE5vZGUsIGNhbGxiYWNrKTsKLSAgICB9IGVsc2UgewotICAgICAgY2FsbGJhY2sub25Db21wbGV0ZSgpOwotICAgIH0KLSAgfSwKLQotICAvKiAKLSAgTWV0aG9kOiBvdXQgCi0gIAotICBTZXRzIHRoZSBwYXJlbnQgbm9kZSBvZiB0aGUgY3VycmVudCBzZWxlY3RlZCBub2RlIGFzIHJvb3QuCi0KLSAqLwotICBvdXQ6IGZ1bmN0aW9uKCl7Ci0gICAgaWYodGhpcy5idXN5KSByZXR1cm47Ci0gICAgdGhpcy5idXN5ID0gdHJ1ZTsKLSAgICB0aGlzLmV2ZW50cy5ob3ZlcmVkTm9kZSA9IGZhbHNlOwotICAgIHZhciB0aGF0ID0gdGhpcywKLSAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWcsCi0gICAgICAgIGdyYXBoID0gdGhpcy5ncmFwaCwKLSAgICAgICAgcGFyZW50cyA9IGdyYXBoLmdldE5vZGUodGhpcy5jbGlja2VkTm9kZSAKLSAgICAgICAgICAgICYmIHRoaXMuY2xpY2tlZE5vZGUuaWQgfHwgdGhpcy5yb290KS5nZXRQYXJlbnRzKCksCi0gICAgICAgIHBhcmVudCA9IHBhcmVudHNbMF0sCi0gICAgICAgIGNsaWNrZWROb2RlID0gcGFyZW50LAotICAgICAgICBwcmV2aW91c0NsaWNrZWROb2RlID0gdGhpcy5jbGlja2VkTm9kZTsKLSAgICAKLSAgICAvL2lmIG5vIHBhcmVudHMgcmV0dXJuCi0gICAgaWYoIXBhcmVudCkgewotICAgICAgdGhpcy5idXN5ID0gZmFsc2U7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vZmluYWwgcGxvdCBjYWxsYmFjawotICAgIGNhbGxiYWNrID0gewotICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoYXQuY2xpY2tlZE5vZGUgPSBwYXJlbnQ7Ci0gICAgICAgIGlmKGNvbmZpZy5yZXF1ZXN0KSB7Ci0gICAgICAgICAgdGhhdC5yZXF1ZXN0Tm9kZXMocGFyZW50LCB7Ci0gICAgICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgdGhhdC5jb21wdXRlKCk7Ci0gICAgICAgICAgICAgIHRoYXQucGxvdCgpOwotICAgICAgICAgICAgICB0aGF0LmJ1c3kgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGF0LmNvbXB1dGUoKTsKLSAgICAgICAgICB0aGF0LnBsb3QoKTsKLSAgICAgICAgICB0aGF0LmJ1c3kgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH07Ci0gICAgLy9wcnVuZSB0cmVlCi0gICAgaWYgKGNvbmZpZy5sZXZlbHNUb1Nob3cgPiAwKQotICAgICAgdGhpcy5nZW9tLnNldFJpZ2h0TGV2ZWxUb1Nob3cocGFyZW50KTsKLSAgICAvL2FuaW1hdGUgbm9kZSBwb3NpdGlvbnMKLSAgICBpZihjb25maWcuYW5pbWF0ZSkgewotICAgICAgdGhpcy5jbGlja2VkTm9kZSA9IGNsaWNrZWROb2RlOwotICAgICAgdGhpcy5jb21wdXRlKCdlbmQnKTsKLSAgICAgIC8vYW5pbWF0ZSB0aGUgdmlzaWJsZSBzdWJ0cmVlIG9ubHkKLSAgICAgIHRoaXMuY2xpY2tlZE5vZGUgPSBwcmV2aW91c0NsaWNrZWROb2RlOwotICAgICAgdGhpcy5meC5hbmltYXRlKHsKLSAgICAgICAgbW9kZXM6WydsaW5lYXInLCAnbm9kZS1wcm9wZXJ0eTp3aWR0aDpoZWlnaHQnXSwKLSAgICAgICAgZHVyYXRpb246IDEwMDAsCi0gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIC8vYW5pbWF0ZSB0aGUgcGFyZW50IHN1YnRyZWUKLSAgICAgICAgICB0aGF0LmNsaWNrZWROb2RlID0gY2xpY2tlZE5vZGU7Ci0gICAgICAgICAgLy9jaGFuZ2Ugbm9kZXMgYWxwaGEKLSAgICAgICAgICBncmFwaC5lYWNoTm9kZShmdW5jdGlvbihuKSB7Ci0gICAgICAgICAgICBuLnNldERhdGFzZXQoWydjdXJyZW50JywgJ2VuZCddLCB7Ci0gICAgICAgICAgICAgICdhbHBoYSc6IFswLCAxXQotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgfSwgImlnbm9yZSIpOwotICAgICAgICAgIHByZXZpb3VzQ2xpY2tlZE5vZGUuZWFjaFN1YmdyYXBoKGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgICAgIG5vZGUuc2V0RGF0YSgnYWxwaGEnLCAxKTsKLSAgICAgICAgICB9LCAiaWdub3JlIik7Ci0gICAgICAgICAgdGhhdC5meC5hbmltYXRlKHsKLSAgICAgICAgICAgIGR1cmF0aW9uOiA1MDAsCi0gICAgICAgICAgICBtb2RlczpbJ25vZGUtcHJvcGVydHk6YWxwaGEnXSwKLSAgICAgICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBjYWxsYmFjay5vbkNvbXBsZXRlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIH0gZWxzZSB7Ci0gICAgICBjYWxsYmFjay5vbkNvbXBsZXRlKCk7Ci0gICAgfQotICB9LAotCi0gIHJlcXVlc3ROb2RlczogZnVuY3Rpb24obm9kZSwgb25Db21wbGV0ZSl7Ci0gICAgdmFyIGhhbmRsZXIgPSAkLm1lcmdlKHRoaXMuY29udHJvbGxlciwgb25Db21wbGV0ZSksIAotICAgICAgICBsZXYgPSB0aGlzLmNvbmZpZy5sZXZlbHNUb1Nob3c7Ci0gICAgaWYgKGhhbmRsZXIucmVxdWVzdCkgewotICAgICAgdmFyIGxlYXZlcyA9IFtdLCBkID0gbm9kZS5fZGVwdGg7Ci0gICAgICBub2RlLmVhY2hMZXZlbCgwLCBsZXYsIGZ1bmN0aW9uKG4pewotICAgICAgICB2YXIgbm9kZUxldmVsID0gbGV2IC0gKG4uX2RlcHRoIC0gZCk7Ci0gICAgICAgIGlmIChuLmRyYXduICYmICFuLmFueVN1Ym5vZGUoKSAmJiBub2RlTGV2ZWwgPiAwKSB7Ci0gICAgICAgICAgbGVhdmVzLnB1c2gobik7Ci0gICAgICAgICAgbi5fbGV2ZWwgPSBub2RlTGV2ZWw7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgICAgdGhpcy5ncm91cC5yZXF1ZXN0Tm9kZXMobGVhdmVzLCBoYW5kbGVyKTsKLSAgICB9IGVsc2UgewotICAgICAgaGFuZGxlci5vbkNvbXBsZXRlKCk7Ci0gICAgfQotICB9LAotICAKLSAgcmVwb3NpdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5jb21wdXRlKCdlbmQnKTsKLSAgfQotfTsKLQotLyoKLSAgQ2xhc3M6IFRNLk9wCi0gIAotICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5PcD4uCi0gIAotICBFeHRlbmRzOgotICAKLSAgQWxsIDxHcmFwaC5PcD4gbWV0aG9kcwotICAKLSAgU2VlIGFsc286Ci0gIAotICA8R3JhcGguT3A+Ci0gIAotICAqLwotVE0uT3AgPSBuZXcgQ2xhc3MoewotICBJbXBsZW1lbnRzOiBHcmFwaC5PcCwKLQotICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopewotICAgIHRoaXMudml6ID0gdml6OwotICB9Ci19KTsKLQotLy9leHRlbmQgbGV2ZWwgbWV0aG9kcyBvZiBHcmFwaC5HZW9tCi1UTS5HZW9tID0gbmV3IENsYXNzKHsKLSAgSW1wbGVtZW50czogR3JhcGguR2VvbSwKLSAgCi0gIGdldFJpZ2h0TGV2ZWxUb1Nob3c6IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLnZpei5jb25maWcubGV2ZWxzVG9TaG93OwotICB9LAotICAKLSAgc2V0UmlnaHRMZXZlbFRvU2hvdzogZnVuY3Rpb24obm9kZSkgewotICAgIHZhciBsZXZlbCA9IHRoaXMuZ2V0UmlnaHRMZXZlbFRvU2hvdygpLCAKLSAgICAgICAgZnggPSB0aGlzLnZpei5sYWJlbHM7Ci0gICAgbm9kZS5lYWNoTGV2ZWwoMCwgbGV2ZWwrMSwgZnVuY3Rpb24obikgewotICAgICAgdmFyIGQgPSBuLl9kZXB0aCAtIG5vZGUuX2RlcHRoOwotICAgICAgaWYoZCA+IGxldmVsKSB7Ci0gICAgICAgIG4uZHJhd24gPSBmYWxzZTsgCi0gICAgICAgIG4uZXhpc3QgPSBmYWxzZTsKLSAgICAgICAgbi5pZ25vcmUgPSB0cnVlOwotICAgICAgICBmeC5oaWRlTGFiZWwobiwgZmFsc2UpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgbi5kcmF3biA9IHRydWU7Ci0gICAgICAgIG4uZXhpc3QgPSB0cnVlOwotICAgICAgICBkZWxldGUgbi5pZ25vcmU7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgbm9kZS5kcmF3biA9IHRydWU7Ci0gICAgZGVsZXRlIG5vZGUuaWdub3JlOwotICB9Ci19KTsKLQotLyoKLQotUGVyZm9ybXMgb3BlcmF0aW9ucyBvbiBncm91cCBvZiBub2Rlcy4KLQotKi8KLVRNLkdyb3VwID0gbmV3IENsYXNzKCB7Ci0KLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odml6KXsKLSAgICB0aGlzLnZpeiA9IHZpejsKLSAgICB0aGlzLmNhbnZhcyA9IHZpei5jYW52YXM7Ci0gICAgdGhpcy5jb25maWcgPSB2aXouY29uZmlnOwotICB9LAotCi0gIC8qCi0gIAotICAgIENhbGxzIHRoZSByZXF1ZXN0IG1ldGhvZCBvbiB0aGUgY29udHJvbGxlciB0byByZXF1ZXN0IGEgc3VidHJlZSBmb3IgZWFjaCBub2RlLiAKLSAgKi8KLSAgcmVxdWVzdE5vZGVzOiBmdW5jdGlvbihub2RlcywgY29udHJvbGxlcil7Ci0gICAgdmFyIGNvdW50ZXIgPSAwLCBsZW4gPSBub2Rlcy5sZW5ndGgsIG5vZGVTZWxlY3RlZCA9IHt9OwotICAgIHZhciBjb21wbGV0ZSA9IGZ1bmN0aW9uKCl7Ci0gICAgICBjb250cm9sbGVyLm9uQ29tcGxldGUoKTsKLSAgICB9OwotICAgIHZhciB2aXogPSB0aGlzLnZpejsKLSAgICBpZiAobGVuID09IDApCi0gICAgICBjb21wbGV0ZSgpOwotICAgIGZvciAoIHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICBub2RlU2VsZWN0ZWRbbm9kZXNbaV0uaWRdID0gbm9kZXNbaV07Ci0gICAgICBjb250cm9sbGVyLnJlcXVlc3Qobm9kZXNbaV0uaWQsIG5vZGVzW2ldLl9sZXZlbCwgewotICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbihub2RlSWQsIGRhdGEpewotICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hpbGRyZW4pIHsKLSAgICAgICAgICAgIGRhdGEuaWQgPSBub2RlSWQ7Ci0gICAgICAgICAgICB2aXoub3Auc3VtKGRhdGEsIHsKLSAgICAgICAgICAgICAgdHlwZTogJ25vdGhpbmcnCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKCsrY291bnRlciA9PSBsZW4pIHsKLSAgICAgICAgICAgIHZpei5ncmFwaC5jb21wdXRlTGV2ZWxzKHZpei5yb290LCAwKTsKLSAgICAgICAgICAgIGNvbXBsZXRlKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0KLX0pOwotCi0vKgotICBDbGFzczogVE0uUGxvdAotICAKLSAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguUGxvdD4uCi0gIAotICBFeHRlbmRzOgotICAKLSAgQWxsIDxHcmFwaC5QbG90PiBtZXRob2RzCi0gIAotICBTZWUgYWxzbzoKLSAgCi0gIDxHcmFwaC5QbG90PgotICAKLSAgKi8KLVRNLlBsb3QgPSBuZXcgQ2xhc3MoewotCi0gIEltcGxlbWVudHM6IEdyYXBoLlBsb3QsCi0KLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odml6KXsKLSAgICB0aGlzLnZpeiA9IHZpejsKLSAgICB0aGlzLmNvbmZpZyA9IHZpei5jb25maWc7Ci0gICAgdGhpcy5ub2RlID0gdGhpcy5jb25maWcuTm9kZTsKLSAgICB0aGlzLmVkZ2UgPSB0aGlzLmNvbmZpZy5FZGdlOwotICAgIHRoaXMuYW5pbWF0aW9uID0gbmV3IEFuaW1hdGlvbjsKLSAgICB0aGlzLm5vZGVUeXBlcyA9IG5ldyBUTS5QbG90Lk5vZGVUeXBlczsKLSAgICB0aGlzLmVkZ2VUeXBlcyA9IG5ldyBUTS5QbG90LkVkZ2VUeXBlczsKLSAgICB0aGlzLmxhYmVscyA9IHZpei5sYWJlbHM7Ci0gIH0sCi0KLSAgcGxvdDogZnVuY3Rpb24ob3B0LCBhbmltYXRpbmcpewotICAgIHZhciB2aXogPSB0aGlzLnZpeiwgCi0gICAgICAgIGdyYXBoID0gdml6LmdyYXBoOwotICAgIHZpei5jYW52YXMuY2xlYXIoKTsKLSAgICB0aGlzLnBsb3RUcmVlKGdyYXBoLmdldE5vZGUodml6LmNsaWNrZWROb2RlICYmIHZpei5jbGlja2VkTm9kZS5pZCB8fCB2aXoucm9vdCksICQubWVyZ2Uodml6LmNvbmZpZywgb3B0IHx8IHt9LCB7Ci0gICAgICAnd2l0aExhYmVscyc6IHRydWUsCi0gICAgICAnaGlkZUxhYmVscyc6IGZhbHNlLAotICAgICAgJ3Bsb3RTdWJ0cmVlJzogZnVuY3Rpb24obiwgY2gpewotICAgICAgICByZXR1cm4gbi5hbnlTdWJub2RlKCJleGlzdCIpOwotICAgICAgfQotICAgIH0pLCBhbmltYXRpbmcpOwotICB9Ci19KTsKLQotLyoKLSAgQ2xhc3M6IFRNLkxhYmVsCi0gIAotICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5MYWJlbD4uIAotICBDb250YWlucyBjdXN0b20gPEdyYXBoLkxhYmVsLlNWRz4sIDxHcmFwaC5MYWJlbC5IVE1MPiBhbmQgPEdyYXBoLkxhYmVsLk5hdGl2ZT4gZXh0ZW5zaW9ucy4KLQotICBFeHRlbmRzOgotCi0gIEFsbCA8R3JhcGguTGFiZWw+IG1ldGhvZHMgYW5kIHN1YmNsYXNzZXMuCi0KLSAgU2VlIGFsc286Ci0KLSAgPEdyYXBoLkxhYmVsPiwgPEdyYXBoLkxhYmVsLk5hdGl2ZT4sIDxHcmFwaC5MYWJlbC5IVE1MPiwgPEdyYXBoLkxhYmVsLlNWRz4uCi0gIAotKi8KLVRNLkxhYmVsID0ge307Ci0KLS8qCi0gVE0uTGFiZWwuTmF0aXZlCi0KLSBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5MYWJlbC5OYXRpdmU+LgotCi0gRXh0ZW5kczoKLQotIEFsbCA8R3JhcGguTGFiZWwuTmF0aXZlPiBtZXRob2RzCi0KLSBTZWUgYWxzbzoKLQotIDxHcmFwaC5MYWJlbC5OYXRpdmU+Ci0qLwotVE0uTGFiZWwuTmF0aXZlID0gbmV3IENsYXNzKHsKLSAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuTmF0aXZlLAotCi0gIGluaXRpYWxpemU6IGZ1bmN0aW9uKHZpeikgewotICAgIHRoaXMuY29uZmlnID0gdml6LmNvbmZpZzsKLSAgICB0aGlzLmxlYWYgPSB2aXoubGVhZjsKLSAgfSwKLSAgCi0gIHJlbmRlckxhYmVsOiBmdW5jdGlvbihjYW52YXMsIG5vZGUsIGNvbnRyb2xsZXIpewotICAgIGlmKCF0aGlzLmxlYWYobm9kZSkgJiYgIXRoaXMuY29uZmlnLnRpdGxlSGVpZ2h0KSByZXR1cm47Ci0gICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICBjdHggPSBjYW52YXMuZ2V0Q3R4KCksCi0gICAgICAgIHdpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLAotICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICB4ID0gcG9zLnggKyB3aWR0aC8yLAotICAgICAgICB5ID0gcG9zLnk7Ci0gICAgICAgIAotICAgIGN0eC5maWxsVGV4dChub2RlLm5hbWUsIHgsIHksIHdpZHRoKTsKLSAgfQotfSk7Ci0KLS8qCi0gVE0uTGFiZWwuU1ZHCi0KLSAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguTGFiZWwuU1ZHPi4KLQotICBFeHRlbmRzOgotCi0gIEFsbCA8R3JhcGguTGFiZWwuU1ZHPiBtZXRob2RzCi0KLSAgU2VlIGFsc286Ci0KLSAgPEdyYXBoLkxhYmVsLlNWRz4KLSovCi1UTS5MYWJlbC5TVkcgPSBuZXcgQ2xhc3MoIHsKLSAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuU1ZHLAotCi0gIGluaXRpYWxpemU6IGZ1bmN0aW9uKHZpeil7Ci0gICAgdGhpcy52aXogPSB2aXo7Ci0gICAgdGhpcy5sZWFmID0gdml6LmxlYWY7Ci0gICAgdGhpcy5jb25maWcgPSB2aXouY29uZmlnOwotICB9LAotCi0gIC8qIAotICBwbGFjZUxhYmVsCi0KLSAgT3ZlcnJpZGVzIGFic3RyYWN0IG1ldGhvZCBwbGFjZUxhYmVsIGluIDxHcmFwaC5QbG90Pi4KLQotICBQYXJhbWV0ZXJzOgotCi0gIHRhZyAtIEEgRE9NIGxhYmVsIGVsZW1lbnQuCi0gIG5vZGUgLSBBIDxHcmFwaC5Ob2RlPi4KLSAgY29udHJvbGxlciAtIEEgY29uZmlndXJhdGlvbi9jb250cm9sbGVyIG9iamVjdCBwYXNzZWQgdG8gdGhlIHZpc3VhbGl6YXRpb24uCi0gIAotICAqLwotICBwbGFjZUxhYmVsOiBmdW5jdGlvbih0YWcsIG5vZGUsIGNvbnRyb2xsZXIpewotICAgIHZhciBwb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgY2FudmFzID0gdGhpcy52aXouY2FudmFzLAotICAgICAgICBveCA9IGNhbnZhcy50cmFuc2xhdGVPZmZzZXRYLAotICAgICAgICBveSA9IGNhbnZhcy50cmFuc2xhdGVPZmZzZXRZLAotICAgICAgICBzeCA9IGNhbnZhcy5zY2FsZU9mZnNldFgsCi0gICAgICAgIHN5ID0gY2FudmFzLnNjYWxlT2Zmc2V0WSwKLSAgICAgICAgcmFkaXVzID0gY2FudmFzLmdldFNpemUoKTsKLSAgICB2YXIgbGFiZWxQb3MgPSB7Ci0gICAgICB4OiBNYXRoLnJvdW5kKHBvcy54ICogc3ggKyBveCArIHJhZGl1cy53aWR0aCAvIDIpLAotICAgICAgeTogTWF0aC5yb3VuZChwb3MueSAqIHN5ICsgb3kgKyByYWRpdXMuaGVpZ2h0IC8gMikKLSAgICB9OwotICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ3gnLCBsYWJlbFBvcy54KTsKLSAgICB0YWcuc2V0QXR0cmlidXRlKCd5JywgbGFiZWxQb3MueSk7Ci0KLSAgICBpZighdGhpcy5sZWFmKG5vZGUpICYmICF0aGlzLmNvbmZpZy50aXRsZUhlaWdodCkgewotICAgICAgdGFnLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgfQotICAgIGNvbnRyb2xsZXIub25QbGFjZUxhYmVsKHRhZywgbm9kZSk7Ci0gIH0KLX0pOwotCi0vKgotIFRNLkxhYmVsLkhUTUwKLQotIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLkxhYmVsLkhUTUw+LgotCi0gRXh0ZW5kczoKLQotIEFsbCA8R3JhcGguTGFiZWwuSFRNTD4gbWV0aG9kcy4KLQotIFNlZSBhbHNvOgotCi0gPEdyYXBoLkxhYmVsLkhUTUw+Ci0KLSovCi1UTS5MYWJlbC5IVE1MID0gbmV3IENsYXNzKCB7Ci0gIEltcGxlbWVudHM6IEdyYXBoLkxhYmVsLkhUTUwsCi0KLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odml6KXsKLSAgICB0aGlzLnZpeiA9IHZpejsKLSAgICB0aGlzLmxlYWYgPSB2aXoubGVhZjsKLSAgICB0aGlzLmNvbmZpZyA9IHZpei5jb25maWc7Ci0gIH0sCi0KLSAgLyogCi0gICAgcGxhY2VMYWJlbAotICAKLSAgICBPdmVycmlkZXMgYWJzdHJhY3QgbWV0aG9kIHBsYWNlTGFiZWwgaW4gPEdyYXBoLlBsb3Q+LgotICAKLSAgICBQYXJhbWV0ZXJzOgotICAKLSAgICB0YWcgLSBBIERPTSBsYWJlbCBlbGVtZW50LgotICAgIG5vZGUgLSBBIDxHcmFwaC5Ob2RlPi4KLSAgICBjb250cm9sbGVyIC0gQSBjb25maWd1cmF0aW9uL2NvbnRyb2xsZXIgb2JqZWN0IHBhc3NlZCB0byB0aGUgdmlzdWFsaXphdGlvbi4KLSAgCi0gICovCi0gIHBsYWNlTGFiZWw6IGZ1bmN0aW9uKHRhZywgbm9kZSwgY29udHJvbGxlcil7Ci0gICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICBjYW52YXMgPSB0aGlzLnZpei5jYW52YXMsCi0gICAgICAgIG94ID0gY2FudmFzLnRyYW5zbGF0ZU9mZnNldFgsCi0gICAgICAgIG95ID0gY2FudmFzLnRyYW5zbGF0ZU9mZnNldFksCi0gICAgICAgIHN4ID0gY2FudmFzLnNjYWxlT2Zmc2V0WCwKLSAgICAgICAgc3kgPSBjYW52YXMuc2NhbGVPZmZzZXRZLAotICAgICAgICByYWRpdXMgPSBjYW52YXMuZ2V0U2l6ZSgpOwotICAgIHZhciBsYWJlbFBvcyA9IHsKLSAgICAgIHg6IE1hdGgucm91bmQocG9zLnggKiBzeCArIG94ICsgcmFkaXVzLndpZHRoIC8gMiksCi0gICAgICB5OiBNYXRoLnJvdW5kKHBvcy55ICogc3kgKyBveSArIHJhZGl1cy5oZWlnaHQgLyAyKQotICAgIH07Ci0KLSAgICB2YXIgc3R5bGUgPSB0YWcuc3R5bGU7Ci0gICAgc3R5bGUubGVmdCA9IGxhYmVsUG9zLnggKyAncHgnOwotICAgIHN0eWxlLnRvcCA9IGxhYmVsUG9zLnkgKyAncHgnOwotICAgIHN0eWxlLndpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpICogc3ggKyAncHgnOwotICAgIHN0eWxlLmhlaWdodCA9IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0JykgKiBzeSArICdweCc7Ci0gICAgc3R5bGUuekluZGV4ID0gbm9kZS5fZGVwdGggKiAxMDA7Ci0gICAgc3R5bGUuZGlzcGxheSA9ICcnOwotCi0gICAgaWYoIXRoaXMubGVhZihub2RlKSAmJiAhdGhpcy5jb25maWcudGl0bGVIZWlnaHQpIHsKLSAgICAgIHRhZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgIH0KLSAgICBjb250cm9sbGVyLm9uUGxhY2VMYWJlbCh0YWcsIG5vZGUpOwotICB9Ci19KTsKLQotLyoKLSAgQ2xhc3M6IFRNLlBsb3QuTm9kZVR5cGVzCi0KLSAgVGhpcyBjbGFzcyBjb250YWlucyBhIGxpc3Qgb2YgPEdyYXBoLk5vZGU+IGJ1aWx0LWluIHR5cGVzLiAKLSAgTm9kZSB0eXBlcyBpbXBsZW1lbnRlZCBhcmUgJ25vbmUnLCAncmVjdGFuZ2xlJy4KLQotICBZb3UgY2FuIGFkZCB5b3VyIGN1c3RvbSBub2RlIHR5cGVzLCBjdXN0b21pemluZyB5b3VyIHZpc3VhbGl6YXRpb24gdG8gdGhlIGV4dHJlbWUuCi0KLSAgRXhhbXBsZToKLQotICAoc3RhcnQgY29kZSBqcykKLSAgICBUTS5QbG90Lk5vZGVUeXBlcy5pbXBsZW1lbnQoewotICAgICAgJ215U3BlY2lhbFR5cGUnOiB7Ci0gICAgICAgICdyZW5kZXInOiBmdW5jdGlvbihub2RlLCBjYW52YXMpIHsKLSAgICAgICAgICAvL3ByaW50IHlvdXIgY3VzdG9tIG5vZGUgdG8gY2FudmFzCi0gICAgICAgIH0sCi0gICAgICAgIC8vb3B0aW9uYWwKLSAgICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgICAgLy9yZXR1cm4gdHJ1ZSBpZiBwb3MgaXMgaW5zaWRlIHRoZSBub2RlIG9yIGZhbHNlIG90aGVyd2lzZQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSk7Ci0gIChlbmQgY29kZSkKLQotKi8KLVRNLlBsb3QuTm9kZVR5cGVzID0gbmV3IENsYXNzKCB7Ci0gICdub25lJzogewotICAgICdyZW5kZXInOiAkLmVtcHR5Ci0gIH0sCi0KLSAgJ3JlY3RhbmdsZSc6IHsKLSAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzLCBhbmltYXRpbmcpewotICAgICAgdmFyIGxlYWYgPSB0aGlzLnZpei5sZWFmKG5vZGUpLAotICAgICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnLAotICAgICAgICAgIG9mZnN0ID0gY29uZmlnLm9mZnNldCwKLSAgICAgICAgICB0aXRsZUhlaWdodCA9IGNvbmZpZy50aXRsZUhlaWdodCwKLSAgICAgICAgICBwb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLAotICAgICAgICAgIHdpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLAotICAgICAgICAgIGhlaWdodCA9IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0JyksCi0gICAgICAgICAgYm9yZGVyID0gbm9kZS5nZXREYXRhKCdib3JkZXInKSwKLSAgICAgICAgICBjdHggPSBjYW52YXMuZ2V0Q3R4KCksCi0gICAgICAgICAgcG9zeCA9IHBvcy54ICsgb2Zmc3QgLyAyLCAKLSAgICAgICAgICBwb3N5ID0gcG9zLnkgKyBvZmZzdCAvIDI7Ci0gICAgICBpZih3aWR0aCA8PSBvZmZzdCB8fCBoZWlnaHQgPD0gb2Zmc3QpIHJldHVybjsKLSAgICAgIGlmIChsZWFmKSB7Ci0gICAgICAgIGlmKGNvbmZpZy5jdXNoaW9uKSB7Ci0gICAgICAgICAgdmFyIGxnID0gY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KHBvc3ggKyAod2lkdGgtb2Zmc3QpLzIsIHBvc3kgKyAoaGVpZ2h0LW9mZnN0KS8yLCAxLCAKLSAgICAgICAgICAgICAgcG9zeCArICh3aWR0aC1vZmZzdCkvMiwgcG9zeSArIChoZWlnaHQtb2Zmc3QpLzIsIHdpZHRoIDwgaGVpZ2h0PyBoZWlnaHQgOiB3aWR0aCk7Ci0gICAgICAgICAgdmFyIGNvbG9yID0gbm9kZS5nZXREYXRhKCdjb2xvcicpOwotICAgICAgICAgIHZhciBjb2xvckdyYWQgPSAkLnJnYlRvSGV4KCQubWFwKCQuaGV4VG9SZ2IoY29sb3IpLCAKLSAgICAgICAgICAgICAgZnVuY3Rpb24ocikgeyByZXR1cm4gciAqIDAuMiA+PiAwOyB9KSk7Ci0gICAgICAgICAgbGcuYWRkQ29sb3JTdG9wKDAsIGNvbG9yKTsKLSAgICAgICAgICBsZy5hZGRDb2xvclN0b3AoMSwgY29sb3JHcmFkKTsKLSAgICAgICAgICBjdHguZmlsbFN0eWxlID0gbGc7Ci0gICAgICAgIH0KLSAgICAgICAgY3R4LmZpbGxSZWN0KHBvc3gsIHBvc3ksIHdpZHRoIC0gb2Zmc3QsIGhlaWdodCAtIG9mZnN0KTsKLSAgICAgICAgaWYoYm9yZGVyKSB7Ci0gICAgICAgICAgY3R4LnNhdmUoKTsKLSAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBib3JkZXI7Ci0gICAgICAgICAgY3R4LnN0cm9rZVJlY3QocG9zeCwgcG9zeSwgd2lkdGggLSBvZmZzdCwgaGVpZ2h0IC0gb2Zmc3QpOwotICAgICAgICAgIGN0eC5yZXN0b3JlKCk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSBpZih0aXRsZUhlaWdodCA+IDApewotICAgICAgICBjdHguZmlsbFJlY3QocG9zLnggKyBvZmZzdCAvIDIsIHBvcy55ICsgb2Zmc3QgLyAyLCB3aWR0aCAtIG9mZnN0LAotICAgICAgICAgICAgdGl0bGVIZWlnaHQgLSBvZmZzdCk7Ci0gICAgICAgIGlmKGJvcmRlcikgewotICAgICAgICAgIGN0eC5zYXZlKCk7Ci0gICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gYm9yZGVyOwotICAgICAgICAgIGN0eC5zdHJva2VSZWN0KHBvcy54ICsgb2Zmc3QgLyAyLCBwb3MueSArIG9mZnN0IC8gMiwgd2lkdGggLSBvZmZzdCwKLSAgICAgICAgICAgICAgaGVpZ2h0IC0gb2Zmc3QpOwotICAgICAgICAgIGN0eC5yZXN0b3JlKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9LAotICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgaWYodGhpcy52aXouY2xpY2tlZE5vZGUgJiYgIW5vZGUuaXNEZXNjZW5kYW50T2YodGhpcy52aXouY2xpY2tlZE5vZGUuaWQpIHx8IG5vZGUuaWdub3JlKSByZXR1cm4gZmFsc2U7Ci0gICAgICB2YXIgbnBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgd2lkdGggPSBub2RlLmdldERhdGEoJ3dpZHRoJyksIAotICAgICAgICAgIGxlYWYgPSB0aGlzLnZpei5sZWFmKG5vZGUpLAotICAgICAgICAgIGhlaWdodCA9IGxlYWY/IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0JykgOiB0aGlzLmNvbmZpZy50aXRsZUhlaWdodDsKLSAgICAgIHJldHVybiB0aGlzLm5vZGVIZWxwZXIucmVjdGFuZ2xlLmNvbnRhaW5zKHt4OiBucG9zLnggKyB3aWR0aC8yLCB5OiBucG9zLnkgKyBoZWlnaHQvMn0sIHBvcywgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQotICB9Ci19KTsKLQotVE0uUGxvdC5FZGdlVHlwZXMgPSBuZXcgQ2xhc3MoIHsKLSAgJ25vbmUnOiAkLmVtcHR5Ci19KTsKLQotLyoKLSAgQ2xhc3M6IFRNLlNsaWNlQW5kRGljZQotICAKLSAgQSBzbGljZSBhbmQgZGljZSBUcmVlTWFwIHZpc3VhbGl6YXRpb24uCi0gIAotICBJbXBsZW1lbnRzOgotICAKLSAgQWxsIDxUTS5CYXNlPiBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLgotKi8KLVRNLlNsaWNlQW5kRGljZSA9IG5ldyBDbGFzcyggewotICBJbXBsZW1lbnRzOiBbCi0gICAgICBMb2FkZXIsIEV4dHJhcywgVE0uQmFzZSwgTGF5b3V0cy5UTS5TbGljZUFuZERpY2UKLSAgXQotfSk7Ci0KLS8qCi0gIENsYXNzOiBUTS5TcXVhcmlmaWVkCi0gIAotICBBIHNxdWFyaWZpZWQgVHJlZU1hcCB2aXN1YWxpemF0aW9uLgotCi0gIEltcGxlbWVudHM6Ci0gIAotICBBbGwgPFRNLkJhc2U+IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuCi0qLwotVE0uU3F1YXJpZmllZCA9IG5ldyBDbGFzcyggewotICBJbXBsZW1lbnRzOiBbCi0gICAgICBMb2FkZXIsIEV4dHJhcywgVE0uQmFzZSwgTGF5b3V0cy5UTS5TcXVhcmlmaWVkCi0gIF0KLX0pOwotCi0vKgotICBDbGFzczogVE0uU3RyaXAKLSAgCi0gIEEgc3RyaXAgVHJlZU1hcCB2aXN1YWxpemF0aW9uLgotCi0gIEltcGxlbWVudHM6Ci0gIAotICBBbGwgPFRNLkJhc2U+IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuCi0qLwotVE0uU3RyaXAgPSBuZXcgQ2xhc3MoIHsKLSAgSW1wbGVtZW50czogWwotICAgICAgTG9hZGVyLCBFeHRyYXMsIFRNLkJhc2UsIExheW91dHMuVE0uU3RyaXAKLSAgXQotfSk7Ci0KLQotLyoKLSAqIEZpbGU6IFJHcmFwaC5qcwotICoKLSAqLwotCi0vKgotICAgQ2xhc3M6IFJHcmFwaAotICAgCi0gICBBIHJhZGlhbCBncmFwaCB2aXN1YWxpemF0aW9uIHdpdGggYWR2YW5jZWQgYW5pbWF0aW9ucy4KLSAgIAotICAgSW5zcGlyZWQgYnk6Ci0gCi0gICBBbmltYXRlZCBFeHBsb3JhdGlvbiBvZiBEeW5hbWljIEdyYXBocyB3aXRoIFJhZGlhbCBMYXlvdXQgKEthLVBpbmcgWWVlLCBEYW55ZWwgRmlzaGVyLCBSYWNobmEgRGhhbWlqYSwgTWFydGkgSGVhcnN0KSA8aHR0cDovL2JhaWxhbmRvLnNpbXMuYmVya2VsZXkuZWR1L3BhcGVycy9pbmZvdmlzMDEuaHRtPgotICAgCi0gICBOb3RlOgotICAgCi0gICBUaGlzIHZpc3VhbGl6YXRpb24gd2FzIGJ1aWx0IGFuZCBlbmdpbmVlcmVkIGZyb20gc2NyYXRjaCwgdGFraW5nIG9ubHkgdGhlIHBhcGVyIGFzIGluc3BpcmF0aW9uLCBhbmQgb25seSBzaGFyZXMgc29tZSBmZWF0dXJlcyB3aXRoIHRoZSB2aXN1YWxpemF0aW9uIGRlc2NyaWJlZCBpbiB0aGUgcGFwZXIuCi0gICAKLSAgSW1wbGVtZW50czoKLSAgCi0gIEFsbCA8TG9hZGVyPiBtZXRob2RzCi0gIAotICAgQ29uc3RydWN0b3IgT3B0aW9uczoKLSAgIAotICAgSW5oZXJpdHMgb3B0aW9ucyBmcm9tCi0gICAKLSAgIC0gPE9wdGlvbnMuQ2FudmFzPgotICAgLSA8T3B0aW9ucy5Db250cm9sbGVyPgotICAgLSA8T3B0aW9ucy5Ob2RlPgotICAgLSA8T3B0aW9ucy5FZGdlPgotICAgLSA8T3B0aW9ucy5MYWJlbD4KLSAgIC0gPE9wdGlvbnMuRXZlbnRzPgotICAgLSA8T3B0aW9ucy5UaXBzPgotICAgLSA8T3B0aW9ucy5Ob2RlU3R5bGVzPgotICAgLSA8T3B0aW9ucy5OYXZpZ2F0aW9uPgotICAgCi0gICBBZGRpdGlvbmFsbHksIHRoZXJlIGFyZSBvdGhlciBwYXJhbWV0ZXJzIGFuZCBzb21lIGRlZmF1bHQgdmFsdWVzIGNoYW5nZWQKLSAgIAotICAgaW50ZXJwb2xhdGlvbiAtIChzdHJpbmcpIERlZmF1bHQncyAqbGluZWFyKi4gRGVzY3JpYmVzIHRoZSB3YXkgbm9kZXMgYXJlIGludGVycG9sYXRlZC4gUG9zc2libGUgdmFsdWVzIGFyZSAnbGluZWFyJyBhbmQgJ3BvbGFyJy4KLSAgIGxldmVsRGlzdGFuY2UgLSAobnVtYmVyKSBEZWZhdWx0J3MgKjEwMCouIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIGxldmVscyBvZiB0aGUgdHJlZS4gCi0gICAgIAotICAgSW5zdGFuY2UgUHJvcGVydGllczoKLQotICAgY2FudmFzIC0gQWNjZXNzIGEgPENhbnZhcz4gaW5zdGFuY2UuCi0gICBncmFwaCAtIEFjY2VzcyBhIDxHcmFwaD4gaW5zdGFuY2UuCi0gICBvcCAtIEFjY2VzcyBhIDxSR3JhcGguT3A+IGluc3RhbmNlLgotICAgZnggLSBBY2Nlc3MgYSA8UkdyYXBoLlBsb3Q+IGluc3RhbmNlLgotICAgbGFiZWxzIC0gQWNjZXNzIGEgPFJHcmFwaC5MYWJlbD4gaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLiAgIAotKi8KLQotJGppdC5SR3JhcGggPSBuZXcgQ2xhc3MoIHsKLQotICBJbXBsZW1lbnRzOiBbCi0gICAgICBMb2FkZXIsIEV4dHJhcywgTGF5b3V0cy5SYWRpYWwKLSAgXSwKLQotICBpbml0aWFsaXplOiBmdW5jdGlvbihjb250cm9sbGVyKXsKLSAgICB2YXIgJFJHcmFwaCA9ICRqaXQuUkdyYXBoOwotCi0gICAgdmFyIGNvbmZpZyA9IHsKLSAgICAgIGludGVycG9sYXRpb246ICdsaW5lYXInLAotICAgICAgbGV2ZWxEaXN0YW5jZTogMTAwCi0gICAgfTsKLQotICAgIHRoaXMuY29udHJvbGxlciA9IHRoaXMuY29uZmlnID0gJC5tZXJnZShPcHRpb25zKCJDYW52YXMiLCAiTm9kZSIsICJFZGdlIiwKLSAgICAgICAgIkZ4IiwgIkNvbnRyb2xsZXIiLCAiVGlwcyIsICJOb2RlU3R5bGVzIiwgIkV2ZW50cyIsICJOYXZpZ2F0aW9uIiwgIkxhYmVsIiksIGNvbmZpZywgY29udHJvbGxlcik7Ci0KLSAgICB2YXIgY2FudmFzQ29uZmlnID0gdGhpcy5jb25maWc7Ci0gICAgaWYoY2FudmFzQ29uZmlnLnVzZUNhbnZhcykgewotICAgICAgdGhpcy5jYW52YXMgPSBjYW52YXNDb25maWcudXNlQ2FudmFzOwotICAgICAgdGhpcy5jb25maWcubGFiZWxDb250YWluZXIgPSB0aGlzLmNhbnZhcy5pZCArICctbGFiZWwnOwotICAgIH0gZWxzZSB7Ci0gICAgICBpZihjYW52YXNDb25maWcuYmFja2dyb3VuZCkgewotICAgICAgICBjYW52YXNDb25maWcuYmFja2dyb3VuZCA9ICQubWVyZ2UoewotICAgICAgICAgIHR5cGU6ICdDaXJjbGVzJwotICAgICAgICB9LCBjYW52YXNDb25maWcuYmFja2dyb3VuZCk7Ci0gICAgICB9Ci0gICAgICB0aGlzLmNhbnZhcyA9IG5ldyBDYW52YXModGhpcywgY2FudmFzQ29uZmlnKTsKLSAgICAgIHRoaXMuY29uZmlnLmxhYmVsQ29udGFpbmVyID0gKHR5cGVvZiBjYW52YXNDb25maWcuaW5qZWN0SW50byA9PSAnc3RyaW5nJz8gY2FudmFzQ29uZmlnLmluamVjdEludG8gOiBjYW52YXNDb25maWcuaW5qZWN0SW50by5pZCkgKyAnLWxhYmVsJzsKLSAgICB9Ci0KLSAgICB0aGlzLmdyYXBoT3B0aW9ucyA9IHsKLSAgICAgICdrbGFzcyc6IFBvbGFyLAotICAgICAgJ05vZGUnOiB7Ci0gICAgICAgICdzZWxlY3RlZCc6IGZhbHNlLAotICAgICAgICAnZXhpc3QnOiB0cnVlLAotICAgICAgICAnZHJhd24nOiB0cnVlCi0gICAgICB9Ci0gICAgfTsKLSAgICB0aGlzLmdyYXBoID0gbmV3IEdyYXBoKHRoaXMuZ3JhcGhPcHRpb25zLCB0aGlzLmNvbmZpZy5Ob2RlLAotICAgICAgICB0aGlzLmNvbmZpZy5FZGdlKTsKLSAgICB0aGlzLmxhYmVscyA9IG5ldyAkUkdyYXBoLkxhYmVsW2NhbnZhc0NvbmZpZy5MYWJlbC50eXBlXSh0aGlzKTsKLSAgICB0aGlzLmZ4ID0gbmV3ICRSR3JhcGguUGxvdCh0aGlzLCAkUkdyYXBoKTsKLSAgICB0aGlzLm9wID0gbmV3ICRSR3JhcGguT3AodGhpcyk7Ci0gICAgdGhpcy5qc29uID0gbnVsbDsKLSAgICB0aGlzLnJvb3QgPSBudWxsOwotICAgIHRoaXMuYnVzeSA9IGZhbHNlOwotICAgIHRoaXMucGFyZW50ID0gZmFsc2U7Ci0gICAgLy8gaW5pdGlhbGl6ZSBleHRyYXMKLSAgICB0aGlzLmluaXRpYWxpemVFeHRyYXMoKTsKLSAgfSwKLQotICAvKiAKLSAgCi0gICAgY3JlYXRlTGV2ZWxEaXN0YW5jZUZ1bmMgCi0gIAotICAgIFJldHVybnMgdGhlIGxldmVsRGlzdGFuY2UgZnVuY3Rpb24gdXNlZCBmb3IgY2FsY3VsYXRpbmcgYSBub2RlIGRpc3RhbmNlIAotICAgIHRvIGl0cyBvcmlnaW4uIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgaXMgY29tcHV0ZWQgCi0gICAgcGVyIGxldmVsIGFuZCBub3QgcGVyIG5vZGUsIHN1Y2ggdGhhdCBhbGwgbm9kZXMgd2l0aCB0aGUgc2FtZSBkZXB0aCB3aWxsIGhhdmUgdGhlIAotICAgIHNhbWUgZGlzdGFuY2UgdG8gdGhlIG9yaWdpbi4gVGhlIHJlc3VsdGluZyBmdW5jdGlvbiBnZXRzIHRoZSAKLSAgICBwYXJlbnQgbm9kZSBhcyBwYXJhbWV0ZXIgYW5kIHJldHVybnMgYSBmbG9hdC4KLQotICAgKi8KLSAgY3JlYXRlTGV2ZWxEaXN0YW5jZUZ1bmM6IGZ1bmN0aW9uKCl7Ci0gICAgdmFyIGxkID0gdGhpcy5jb25maWcubGV2ZWxEaXN0YW5jZTsKLSAgICByZXR1cm4gZnVuY3Rpb24oZWxlbSl7Ci0gICAgICByZXR1cm4gKGVsZW0uX2RlcHRoICsgMSkgKiBsZDsKLSAgICB9OwotICB9LAotCi0gIC8qIAotICAgICBNZXRob2Q6IHJlZnJlc2ggCi0gICAgIAotICAgICBDb21wdXRlcyBwb3NpdGlvbnMgYW5kIHBsb3RzIHRoZSB0cmVlLgotCi0gICAqLwotICByZWZyZXNoOiBmdW5jdGlvbigpewotICAgIHRoaXMuY29tcHV0ZSgpOwotICAgIHRoaXMucGxvdCgpOwotICB9LAotCi0gIHJlcG9zaXRpb246IGZ1bmN0aW9uKCl7Ci0gICAgdGhpcy5jb21wdXRlKCdlbmQnKTsKLSAgfSwKLQotICAvKgotICAgTWV0aG9kOiBwbG90Ci0gIAotICAgUGxvdHMgdGhlIFJHcmFwaC4gVGhpcyBpcyBhIHNob3J0Y3V0IHRvICpmeC5wbG90Ki4KLSAgKi8KLSAgcGxvdDogZnVuY3Rpb24oKXsKLSAgICB0aGlzLmZ4LnBsb3QoKTsKLSAgfSwKLSAgLyoKLSAgIGdldE5vZGVBbmRQYXJlbnRBbmdsZQotICAKLSAgIFJldHVybnMgdGhlIF9wYXJlbnRfIG9mIHRoZSBnaXZlbiBub2RlLCBhbHNvIGNhbGN1bGF0aW5nIGl0cyBhbmdsZSBzcGFuLgotICAqLwotICBnZXROb2RlQW5kUGFyZW50QW5nbGU6IGZ1bmN0aW9uKGlkKXsKLSAgICB2YXIgdGhldGEgPSBmYWxzZTsKLSAgICB2YXIgbiA9IHRoaXMuZ3JhcGguZ2V0Tm9kZShpZCk7Ci0gICAgdmFyIHBzID0gbi5nZXRQYXJlbnRzKCk7Ci0gICAgdmFyIHAgPSAocHMubGVuZ3RoID4gMCk/IHBzWzBdIDogZmFsc2U7Ci0gICAgaWYgKHApIHsKLSAgICAgIHZhciBwb3NQYXJlbnQgPSBwLnBvcy5nZXRjKCksIHBvc0NoaWxkID0gbi5wb3MuZ2V0YygpOwotICAgICAgdmFyIG5ld1BvcyA9IHBvc1BhcmVudC5hZGQocG9zQ2hpbGQuc2NhbGUoLTEpKTsKLSAgICAgIHRoZXRhID0gTWF0aC5hdGFuMihuZXdQb3MueSwgbmV3UG9zLngpOwotICAgICAgaWYgKHRoZXRhIDwgMCkKLSAgICAgICAgdGhldGEgKz0gMiAqIE1hdGguUEk7Ci0gICAgfQotICAgIHJldHVybiB7Ci0gICAgICBwYXJlbnQ6IHAsCi0gICAgICB0aGV0YTogdGhldGEKLSAgICB9OwotICB9LAotICAvKgotICAgdGFnQ2hpbGRyZW4KLSAgCi0gICBFbnVtZXJhdGVzIHRoZSBjaGlsZHJlbiBpbiBvcmRlciB0byBtYWludGFpbiBjaGlsZCBvcmRlcmluZyAoc2Vjb25kIGNvbnN0cmFpbnQgb2YgdGhlIHBhcGVyKS4KLSAgKi8KLSAgdGFnQ2hpbGRyZW46IGZ1bmN0aW9uKHBhciwgaWQpewotICAgIGlmIChwYXIuYW5nbGVTcGFuKSB7Ci0gICAgICB2YXIgYWRqcyA9IFtdOwotICAgICAgcGFyLmVhY2hBZGphY2VuY3koZnVuY3Rpb24oZWxlbSl7Ci0gICAgICAgIGFkanMucHVzaChlbGVtLm5vZGVUbyk7Ci0gICAgICB9LCAiaWdub3JlIik7Ci0gICAgICB2YXIgbGVuID0gYWRqcy5sZW5ndGg7Ci0gICAgICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBsZW4gJiYgaWQgIT0gYWRqc1tpXS5pZDsgaSsrKQotICAgICAgICA7Ci0gICAgICBmb3IgKCB2YXIgaiA9IChpICsgMSkgJSBsZW4sIGsgPSAwOyBpZCAhPSBhZGpzW2pdLmlkOyBqID0gKGogKyAxKSAlIGxlbikgewotICAgICAgICBhZGpzW2pdLmRpc3QgPSBrKys7Ci0gICAgICB9Ci0gICAgfQotICB9LAotICAvKiAKLSAgTWV0aG9kOiBvbkNsaWNrIAotICAKLSAgQW5pbWF0ZXMgdGhlIDxSR3JhcGg+IHRvIGNlbnRlciB0aGUgbm9kZSBzcGVjaWZpZWQgYnkgKmlkKi4KLQotICAgUGFyYW1ldGVyczoKLQotICAgaWQgLSBBIDxHcmFwaC5Ob2RlPiBpZC4KLSAgIG9wdCAtIChvcHRpb25hbHxvYmplY3QpIEFuIG9iamVjdCBjb250YWluaW5nIHNvbWUgZXh0cmEgcHJvcGVydGllcyBkZXNjcmliZWQgYmVsb3cKLSAgIGhpZGVMYWJlbHMgLSAoYm9vbGVhbikgRGVmYXVsdCdzICp0cnVlKi4gSGlkZSBsYWJlbHMgd2hlbiBwZXJmb3JtaW5nIHRoZSBhbmltYXRpb24uCi0KLSAgIEV4YW1wbGU6Ci0KLSAgIChzdGFydCBjb2RlIGpzKQotICAgICByZ3JhcGgub25DbGljaygnc29tZWlkJyk7Ci0gICAgIC8vb3IgYWxzby4uLgotICAgICByZ3JhcGgub25DbGljaygnc29tZWlkJywgewotICAgICAgaGlkZUxhYmVsczogZmFsc2UKLSAgICAgfSk7Ci0gICAgKGVuZCBjb2RlKQotICAgIAotICAqLwotICBvbkNsaWNrOiBmdW5jdGlvbihpZCwgb3B0KXsKLSAgICBpZiAodGhpcy5yb290ICE9IGlkICYmICF0aGlzLmJ1c3kpIHsKLSAgICAgIHRoaXMuYnVzeSA9IHRydWU7Ci0gICAgICB0aGlzLnJvb3QgPSBpZDsKLSAgICAgIHZhciB0aGF0ID0gdGhpczsKLSAgICAgIHRoaXMuY29udHJvbGxlci5vbkJlZm9yZUNvbXB1dGUodGhpcy5ncmFwaC5nZXROb2RlKGlkKSk7Ci0gICAgICB2YXIgb2JqID0gdGhpcy5nZXROb2RlQW5kUGFyZW50QW5nbGUoaWQpOwotCi0gICAgICAvLyBzZWNvbmQgY29uc3RyYWludAotICAgICAgdGhpcy50YWdDaGlsZHJlbihvYmoucGFyZW50LCBpZCk7Ci0gICAgICB0aGlzLnBhcmVudCA9IG9iai5wYXJlbnQ7Ci0gICAgICB0aGlzLmNvbXB1dGUoJ2VuZCcpOwotCi0gICAgICAvLyBmaXJzdCBjb25zdHJhaW50Ci0gICAgICB2YXIgdGhldGFEaWZmID0gb2JqLnRoZXRhIC0gb2JqLnBhcmVudC5lbmRQb3MudGhldGE7Ci0gICAgICB0aGlzLmdyYXBoLmVhY2hOb2RlKGZ1bmN0aW9uKGVsZW0pewotICAgICAgICBlbGVtLmVuZFBvcy5zZXQoZWxlbS5lbmRQb3MuZ2V0cCgpLmFkZCgkUCh0aGV0YURpZmYsIDApKSk7Ci0gICAgICB9KTsKLQotICAgICAgdmFyIG1vZGUgPSB0aGlzLmNvbmZpZy5pbnRlcnBvbGF0aW9uOwotICAgICAgb3B0ID0gJC5tZXJnZSggewotICAgICAgICBvbkNvbXBsZXRlOiAkLmVtcHR5Ci0gICAgICB9LCBvcHQgfHwge30pOwotCi0gICAgICB0aGlzLmZ4LmFuaW1hdGUoJC5tZXJnZSggewotICAgICAgICBoaWRlTGFiZWxzOiB0cnVlLAotICAgICAgICBtb2RlczogWwotICAgICAgICAgIG1vZGUKLSAgICAgICAgXQotICAgICAgfSwgb3B0LCB7Ci0gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgdGhhdC5idXN5ID0gZmFsc2U7Ci0gICAgICAgICAgb3B0Lm9uQ29tcGxldGUoKTsKLSAgICAgICAgfQotICAgICAgfSkpOwotICAgIH0KLSAgfQotfSk7Ci0KLSRqaXQuUkdyYXBoLiRleHRlbmQgPSB0cnVlOwotCi0oZnVuY3Rpb24oUkdyYXBoKXsKLQotICAvKgotICAgICBDbGFzczogUkdyYXBoLk9wCi0gICAgIAotICAgICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5PcD4uCi0KLSAgICAgRXh0ZW5kczoKLQotICAgICBBbGwgPEdyYXBoLk9wPiBtZXRob2RzCi0gICAgIAotICAgICBTZWUgYWxzbzoKLSAgICAgCi0gICAgIDxHcmFwaC5PcD4KLQotICAqLwotICBSR3JhcGguT3AgPSBuZXcgQ2xhc3MoIHsKLQotICAgIEltcGxlbWVudHM6IEdyYXBoLk9wCi0KLSAgfSk7Ci0KLSAgLyoKLSAgICAgQ2xhc3M6IFJHcmFwaC5QbG90Ci0gICAgCi0gICAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguUGxvdD4uCi0gIAotICAgIEV4dGVuZHM6Ci0gIAotICAgIEFsbCA8R3JhcGguUGxvdD4gbWV0aG9kcwotICAgIAotICAgIFNlZSBhbHNvOgotICAgIAotICAgIDxHcmFwaC5QbG90PgotICAKLSAgKi8KLSAgUkdyYXBoLlBsb3QgPSBuZXcgQ2xhc3MoIHsKLQotICAgIEltcGxlbWVudHM6IEdyYXBoLlBsb3QKLQotICB9KTsKLQotICAvKgotICAgIE9iamVjdDogUkdyYXBoLkxhYmVsCi0KLSAgICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5MYWJlbD4uIAotICAgIENvbnRhaW5zIGN1c3RvbSA8R3JhcGguTGFiZWwuU1ZHPiwgPEdyYXBoLkxhYmVsLkhUTUw+IGFuZCA8R3JhcGguTGFiZWwuTmF0aXZlPiBleHRlbnNpb25zLgotICAKLSAgICBFeHRlbmRzOgotICAKLSAgICBBbGwgPEdyYXBoLkxhYmVsPiBtZXRob2RzIGFuZCBzdWJjbGFzc2VzLgotICAKLSAgICBTZWUgYWxzbzoKLSAgCi0gICAgPEdyYXBoLkxhYmVsPiwgPEdyYXBoLkxhYmVsLk5hdGl2ZT4sIDxHcmFwaC5MYWJlbC5IVE1MPiwgPEdyYXBoLkxhYmVsLlNWRz4uCi0gIAotICAgKi8KLSAgUkdyYXBoLkxhYmVsID0ge307Ci0KLSAgLyoKLSAgICAgUkdyYXBoLkxhYmVsLk5hdGl2ZQotCi0gICAgIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLkxhYmVsLk5hdGl2ZT4uCi0KLSAgICAgRXh0ZW5kczoKLQotICAgICBBbGwgPEdyYXBoLkxhYmVsLk5hdGl2ZT4gbWV0aG9kcwotCi0gICAgIFNlZSBhbHNvOgotCi0gICAgIDxHcmFwaC5MYWJlbC5OYXRpdmU+Ci0KLSAgKi8KLSAgUkdyYXBoLkxhYmVsLk5hdGl2ZSA9IG5ldyBDbGFzcyggewotICAgIEltcGxlbWVudHM6IEdyYXBoLkxhYmVsLk5hdGl2ZQotICB9KTsKLQotICAvKgotICAgICBSR3JhcGguTGFiZWwuU1ZHCi0gICAgCi0gICAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguTGFiZWwuU1ZHPi4KLSAgCi0gICAgRXh0ZW5kczoKLSAgCi0gICAgQWxsIDxHcmFwaC5MYWJlbC5TVkc+IG1ldGhvZHMKLSAgCi0gICAgU2VlIGFsc286Ci0gIAotICAgIDxHcmFwaC5MYWJlbC5TVkc+Ci0gIAotICAqLwotICBSR3JhcGguTGFiZWwuU1ZHID0gbmV3IENsYXNzKCB7Ci0gICAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuU1ZHLAotCi0gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odml6KXsKLSAgICAgIHRoaXMudml6ID0gdml6OwotICAgIH0sCi0KLSAgICAvKiAKLSAgICAgICBwbGFjZUxhYmVsCi0KLSAgICAgICBPdmVycmlkZXMgYWJzdHJhY3QgbWV0aG9kIHBsYWNlTGFiZWwgaW4gPEdyYXBoLlBsb3Q+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIHRhZyAtIEEgRE9NIGxhYmVsIGVsZW1lbnQuCi0gICAgICAgbm9kZSAtIEEgPEdyYXBoLk5vZGU+LgotICAgICAgIGNvbnRyb2xsZXIgLSBBIGNvbmZpZ3VyYXRpb24vY29udHJvbGxlciBvYmplY3QgcGFzc2VkIHRvIHRoZSB2aXN1YWxpemF0aW9uLgotICAgICAgCi0gICAgICovCi0gICAgcGxhY2VMYWJlbDogZnVuY3Rpb24odGFnLCBub2RlLCBjb250cm9sbGVyKXsKLSAgICAgIHZhciBwb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICBjYW52YXMgPSB0aGlzLnZpei5jYW52YXMsCi0gICAgICAgICAgb3ggPSBjYW52YXMudHJhbnNsYXRlT2Zmc2V0WCwKLSAgICAgICAgICBveSA9IGNhbnZhcy50cmFuc2xhdGVPZmZzZXRZLAotICAgICAgICAgIHN4ID0gY2FudmFzLnNjYWxlT2Zmc2V0WCwKLSAgICAgICAgICBzeSA9IGNhbnZhcy5zY2FsZU9mZnNldFksCi0gICAgICAgICAgcmFkaXVzID0gY2FudmFzLmdldFNpemUoKTsKLSAgICAgIHZhciBsYWJlbFBvcyA9IHsKLSAgICAgICAgeDogTWF0aC5yb3VuZChwb3MueCAqIHN4ICsgb3ggKyByYWRpdXMud2lkdGggLyAyKSwKLSAgICAgICAgeTogTWF0aC5yb3VuZChwb3MueSAqIHN5ICsgb3kgKyByYWRpdXMuaGVpZ2h0IC8gMikKLSAgICAgIH07Ci0gICAgICB0YWcuc2V0QXR0cmlidXRlKCd4JywgbGFiZWxQb3MueCk7Ci0gICAgICB0YWcuc2V0QXR0cmlidXRlKCd5JywgbGFiZWxQb3MueSk7Ci0KLSAgICAgIGNvbnRyb2xsZXIub25QbGFjZUxhYmVsKHRhZywgbm9kZSk7Ci0gICAgfQotICB9KTsKLQotICAvKgotICAgICBSR3JhcGguTGFiZWwuSFRNTAotCi0gICAgIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLkxhYmVsLkhUTUw+LgotCi0gICAgIEV4dGVuZHM6Ci0KLSAgICAgQWxsIDxHcmFwaC5MYWJlbC5IVE1MPiBtZXRob2RzLgotCi0gICAgIFNlZSBhbHNvOgotCi0gICAgIDxHcmFwaC5MYWJlbC5IVE1MPgotCi0gICovCi0gIFJHcmFwaC5MYWJlbC5IVE1MID0gbmV3IENsYXNzKCB7Ci0gICAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuSFRNTCwKLQotICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHZpeil7Ci0gICAgICB0aGlzLnZpeiA9IHZpejsKLSAgICB9LAotICAgIC8qIAotICAgICAgIHBsYWNlTGFiZWwKLQotICAgICAgIE92ZXJyaWRlcyBhYnN0cmFjdCBtZXRob2QgcGxhY2VMYWJlbCBpbiA8R3JhcGguUGxvdD4uCi0KLSAgICAgICBQYXJhbWV0ZXJzOgotCi0gICAgICAgdGFnIC0gQSBET00gbGFiZWwgZWxlbWVudC4KLSAgICAgICBub2RlIC0gQSA8R3JhcGguTm9kZT4uCi0gICAgICAgY29udHJvbGxlciAtIEEgY29uZmlndXJhdGlvbi9jb250cm9sbGVyIG9iamVjdCBwYXNzZWQgdG8gdGhlIHZpc3VhbGl6YXRpb24uCi0gICAgICAKLSAgICAgKi8KLSAgICBwbGFjZUxhYmVsOiBmdW5jdGlvbih0YWcsIG5vZGUsIGNvbnRyb2xsZXIpewotICAgICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICAgIGNhbnZhcyA9IHRoaXMudml6LmNhbnZhcywKLSAgICAgICAgICBveCA9IGNhbnZhcy50cmFuc2xhdGVPZmZzZXRYLAotICAgICAgICAgIG95ID0gY2FudmFzLnRyYW5zbGF0ZU9mZnNldFksCi0gICAgICAgICAgc3ggPSBjYW52YXMuc2NhbGVPZmZzZXRYLAotICAgICAgICAgIHN5ID0gY2FudmFzLnNjYWxlT2Zmc2V0WSwKLSAgICAgICAgICByYWRpdXMgPSBjYW52YXMuZ2V0U2l6ZSgpOwotICAgICAgdmFyIGxhYmVsUG9zID0gewotICAgICAgICB4OiBNYXRoLnJvdW5kKHBvcy54ICogc3ggKyBveCArIHJhZGl1cy53aWR0aCAvIDIpLAotICAgICAgICB5OiBNYXRoLnJvdW5kKHBvcy55ICogc3kgKyBveSArIHJhZGl1cy5oZWlnaHQgLyAyKQotICAgICAgfTsKLQotICAgICAgdmFyIHN0eWxlID0gdGFnLnN0eWxlOwotICAgICAgc3R5bGUubGVmdCA9IGxhYmVsUG9zLnggKyAncHgnOwotICAgICAgc3R5bGUudG9wID0gbGFiZWxQb3MueSArICdweCc7Ci0gICAgICBzdHlsZS5kaXNwbGF5ID0gdGhpcy5maXRzSW5DYW52YXMobGFiZWxQb3MsIGNhbnZhcyk/ICcnIDogJ25vbmUnOwotCi0gICAgICBjb250cm9sbGVyLm9uUGxhY2VMYWJlbCh0YWcsIG5vZGUpOwotICAgIH0KLSAgfSk7Ci0KLSAgLyoKLSAgICBDbGFzczogUkdyYXBoLlBsb3QuTm9kZVR5cGVzCi0KLSAgICBUaGlzIGNsYXNzIGNvbnRhaW5zIGEgbGlzdCBvZiA8R3JhcGguTm9kZT4gYnVpbHQtaW4gdHlwZXMuIAotICAgIE5vZGUgdHlwZXMgaW1wbGVtZW50ZWQgYXJlICdub25lJywgJ2NpcmNsZScsICd0cmlhbmdsZScsICdyZWN0YW5nbGUnLCAnc3RhcicsICdlbGxpcHNlJyBhbmQgJ3NxdWFyZScuCi0KLSAgICBZb3UgY2FuIGFkZCB5b3VyIGN1c3RvbSBub2RlIHR5cGVzLCBjdXN0b21pemluZyB5b3VyIHZpc3VhbGl6YXRpb24gdG8gdGhlIGV4dHJlbWUuCi0KLSAgICBFeGFtcGxlOgotCi0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICBSR3JhcGguUGxvdC5Ob2RlVHlwZXMuaW1wbGVtZW50KHsKLSAgICAgICAgJ215U3BlY2lhbFR5cGUnOiB7Ci0gICAgICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICAgICAgLy9wcmludCB5b3VyIGN1c3RvbSBub2RlIHRvIGNhbnZhcwotICAgICAgICAgIH0sCi0gICAgICAgICAgLy9vcHRpb25hbAotICAgICAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgICAgICAgLy9yZXR1cm4gdHJ1ZSBpZiBwb3MgaXMgaW5zaWRlIHRoZSBub2RlIG9yIGZhbHNlIG90aGVyd2lzZQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgKGVuZCBjb2RlKQotCi0gICovCi0gIFJHcmFwaC5QbG90Lk5vZGVUeXBlcyA9IG5ldyBDbGFzcyh7Ci0gICAgJ25vbmUnOiB7Ci0gICAgICAncmVuZGVyJzogJC5lbXB0eSwKLSAgICAgICdjb250YWlucyc6ICQubGFtYmRhKGZhbHNlKQotICAgIH0sCi0gICAgJ2NpcmNsZSc6IHsKLSAgICAgICdyZW5kZXInOiBmdW5jdGlvbihub2RlLCBjYW52YXMpewotICAgICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgICBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpOwotICAgICAgICB0aGlzLm5vZGVIZWxwZXIuY2lyY2xlLnJlbmRlcignZmlsbCcsIHBvcywgZGltLCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcyl7Ci0gICAgICAgIHZhciBucG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgICBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpOwotICAgICAgICByZXR1cm4gdGhpcy5ub2RlSGVscGVyLmNpcmNsZS5jb250YWlucyhucG9zLCBwb3MsIGRpbSk7Ci0gICAgICB9Ci0gICAgfSwKLSAgICAnZWxsaXBzZSc6IHsKLSAgICAgICdyZW5kZXInOiBmdW5jdGlvbihub2RlLCBjYW52YXMpewotICAgICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgICB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSwgCi0gICAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpOwotICAgICAgICB0aGlzLm5vZGVIZWxwZXIuZWxsaXBzZS5yZW5kZXIoJ2ZpbGwnLCBwb3MsIHdpZHRoLCBoZWlnaHQsIGNhbnZhcyk7Ci0gICAgICAgIH0sCi0gICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihub2RlLCBwb3MpewotICAgICAgICB2YXIgbnBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICAgICAgd2lkdGggPSBub2RlLmdldERhdGEoJ3dpZHRoJyksIAotICAgICAgICAgICAgaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKTsKLSAgICAgICAgcmV0dXJuIHRoaXMubm9kZUhlbHBlci5lbGxpcHNlLmNvbnRhaW5zKG5wb3MsIHBvcywgd2lkdGgsIGhlaWdodCk7Ci0gICAgICB9Ci0gICAgfSwKLSAgICAnc3F1YXJlJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcyl7Ci0gICAgICAgIHZhciBwb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICAgIGRpbSA9IG5vZGUuZ2V0RGF0YSgnZGltJyk7Ci0gICAgICAgIHRoaXMubm9kZUhlbHBlci5zcXVhcmUucmVuZGVyKCdmaWxsJywgcG9zLCBkaW0sIGNhbnZhcyk7Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKXsKLSAgICAgICAgdmFyIG5wb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICAgIGRpbSA9IG5vZGUuZ2V0RGF0YSgnZGltJyk7Ci0gICAgICAgIHJldHVybiB0aGlzLm5vZGVIZWxwZXIuc3F1YXJlLmNvbnRhaW5zKG5wb3MsIHBvcywgZGltKTsKLSAgICAgIH0KLSAgICB9LAotICAgICdyZWN0YW5nbGUnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKXsKLSAgICAgICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICAgICAgd2lkdGggPSBub2RlLmdldERhdGEoJ3dpZHRoJyksIAotICAgICAgICAgICAgaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKTsKLSAgICAgICAgdGhpcy5ub2RlSGVscGVyLnJlY3RhbmdsZS5yZW5kZXIoJ2ZpbGwnLCBwb3MsIHdpZHRoLCBoZWlnaHQsIGNhbnZhcyk7Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKXsKLSAgICAgICAgdmFyIG5wb3MgPSBub2RlLnBvcy5nZXRjKHRydWUpLCAKLSAgICAgICAgICAgIHdpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLCAKLSAgICAgICAgICAgIGhlaWdodCA9IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0Jyk7Ci0gICAgICAgIHJldHVybiB0aGlzLm5vZGVIZWxwZXIucmVjdGFuZ2xlLmNvbnRhaW5zKG5wb3MsIHBvcywgd2lkdGgsIGhlaWdodCk7Ci0gICAgICB9Ci0gICAgfSwKLSAgICAndHJpYW5nbGUnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKXsKLSAgICAgICAgdmFyIHBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICAgICAgZGltID0gbm9kZS5nZXREYXRhKCdkaW0nKTsKLSAgICAgICAgdGhpcy5ub2RlSGVscGVyLnRyaWFuZ2xlLnJlbmRlcignZmlsbCcsIHBvcywgZGltLCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgICB2YXIgbnBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksIAotICAgICAgICAgICAgZGltID0gbm9kZS5nZXREYXRhKCdkaW0nKTsKLSAgICAgICAgcmV0dXJuIHRoaXMubm9kZUhlbHBlci50cmlhbmdsZS5jb250YWlucyhucG9zLCBwb3MsIGRpbSk7Ci0gICAgICB9Ci0gICAgfSwKLSAgICAnc3Rhcic6IHsKLSAgICAgICdyZW5kZXInOiBmdW5jdGlvbihub2RlLCBjYW52YXMpewotICAgICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIGRpbSA9IG5vZGUuZ2V0RGF0YSgnZGltJyk7Ci0gICAgICAgIHRoaXMubm9kZUhlbHBlci5zdGFyLnJlbmRlcignZmlsbCcsIHBvcywgZGltLCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgICB2YXIgbnBvcyA9IG5vZGUucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpOwotICAgICAgICByZXR1cm4gdGhpcy5ub2RlSGVscGVyLnN0YXIuY29udGFpbnMobnBvcywgcG9zLCBkaW0pOwotICAgICAgfQotICAgIH0KLSAgfSk7Ci0KLSAgLyoKLSAgICBDbGFzczogUkdyYXBoLlBsb3QuRWRnZVR5cGVzCi0KLSAgICBUaGlzIGNsYXNzIGNvbnRhaW5zIGEgbGlzdCBvZiA8R3JhcGguQWRqYWNlbmNlPiBidWlsdC1pbiB0eXBlcy4gCi0gICAgRWRnZSB0eXBlcyBpbXBsZW1lbnRlZCBhcmUgJ25vbmUnLCAnbGluZScgYW5kICdhcnJvdycuCi0gIAotICAgIFlvdSBjYW4gYWRkIHlvdXIgY3VzdG9tIGVkZ2UgdHlwZXMsIGN1c3RvbWl6aW5nIHlvdXIgdmlzdWFsaXphdGlvbiB0byB0aGUgZXh0cmVtZS4KLSAgCi0gICAgRXhhbXBsZToKLSAgCi0gICAgKHN0YXJ0IGNvZGUganMpCi0gICAgICBSR3JhcGguUGxvdC5FZGdlVHlwZXMuaW1wbGVtZW50KHsKLSAgICAgICAgJ215U3BlY2lhbFR5cGUnOiB7Ci0gICAgICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKGFkaiwgY2FudmFzKSB7Ci0gICAgICAgICAgICAvL3ByaW50IHlvdXIgY3VzdG9tIGVkZ2UgdG8gY2FudmFzCi0gICAgICAgICAgfSwKLSAgICAgICAgICAvL29wdGlvbmFsCi0gICAgICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24oYWRqLCBwb3MpIHsKLSAgICAgICAgICAgIC8vcmV0dXJuIHRydWUgaWYgcG9zIGlzIGluc2lkZSB0aGUgYXJjIG9yIGZhbHNlIG90aGVyd2lzZQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgKGVuZCBjb2RlKQotICAKLSAgKi8KLSAgUkdyYXBoLlBsb3QuRWRnZVR5cGVzID0gbmV3IENsYXNzKHsKLSAgICAnbm9uZSc6ICQuZW1wdHksCi0gICAgJ2xpbmUnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24oYWRqLCBjYW52YXMpIHsKLSAgICAgICAgdmFyIGZyb20gPSBhZGoubm9kZUZyb20ucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICB0byA9IGFkai5ub2RlVG8ucG9zLmdldGModHJ1ZSk7Ci0gICAgICAgIHRoaXMuZWRnZUhlbHBlci5saW5lLnJlbmRlcihmcm9tLCB0bywgY2FudmFzKTsKLSAgICAgIH0sCi0gICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihhZGosIHBvcykgewotICAgICAgICB2YXIgZnJvbSA9IGFkai5ub2RlRnJvbS5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIHRvID0gYWRqLm5vZGVUby5wb3MuZ2V0Yyh0cnVlKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuZWRnZUhlbHBlci5saW5lLmNvbnRhaW5zKGZyb20sIHRvLCBwb3MsIHRoaXMuZWRnZS5lcHNpbG9uKTsKLSAgICAgIH0KLSAgICB9LAotICAgICdhcnJvdyc6IHsKLSAgICAgICdyZW5kZXInOiBmdW5jdGlvbihhZGosIGNhbnZhcykgewotICAgICAgICB2YXIgZnJvbSA9IGFkai5ub2RlRnJvbS5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIHRvID0gYWRqLm5vZGVUby5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIGRpbSA9IGFkai5nZXREYXRhKCdkaW0nKSwKLSAgICAgICAgICAgIGRpcmVjdGlvbiA9IGFkai5kYXRhLiRkaXJlY3Rpb24sCi0gICAgICAgICAgICBpbnYgPSAoZGlyZWN0aW9uICYmIGRpcmVjdGlvbi5sZW5ndGg+MSAmJiBkaXJlY3Rpb25bMF0gIT0gYWRqLm5vZGVGcm9tLmlkKTsKLSAgICAgICAgdGhpcy5lZGdlSGVscGVyLmFycm93LnJlbmRlcihmcm9tLCB0bywgZGltLCBpbnYsIGNhbnZhcyk7Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24oYWRqLCBwb3MpIHsKLSAgICAgICAgdmFyIGZyb20gPSBhZGoubm9kZUZyb20ucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICB0byA9IGFkai5ub2RlVG8ucG9zLmdldGModHJ1ZSk7Ci0gICAgICAgIHJldHVybiB0aGlzLmVkZ2VIZWxwZXIuYXJyb3cuY29udGFpbnMoZnJvbSwgdG8sIHBvcywgdGhpcy5lZGdlLmVwc2lsb24pOwotICAgICAgfQotICAgIH0KLSAgfSk7Ci0KLX0pKCRqaXQuUkdyYXBoKTsKLQotCi0vKgotICogRmlsZTogSHlwZXJ0cmVlLmpzCi0gKiAKLSovCi0KLS8qIAotICAgICBDb21wbGV4IAotICAgICAKLSAgICAgQSBtdWx0aS1wdXJwb3NlIENvbXBsZXggQ2xhc3Mgd2l0aCBjb21tb24gbWV0aG9kcy4gRXh0ZW5kZWQgZm9yIHRoZSBIeXBlcnRyZWUuIAotIAotKi8KLS8qIAotICAgbW9lYml1c1RyYW5zZm9ybWF0aW9uIAotIAotICAgQ2FsY3VsYXRlcyBhIG1vZWJpdXMgdHJhbnNmb3JtYXRpb24gZm9yIHRoaXMgcG9pbnQgLyBjb21wbGV4LiAKLSAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBnbyB0bzogCi0gICAgICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTW9lYml1c190cmFuc2Zvcm1hdGlvbi4gCi0gCi0gICBQYXJhbWV0ZXJzOiAKLSAKLSAgICAgIGMgLSBBbiBpbml0aWFsaXplZCBDb21wbGV4IGluc3RhbmNlIHJlcHJlc2VudGluZyBhIHRyYW5zbGF0aW9uIFZlY3Rvci4gCi0qLwotCi1Db21wbGV4LnByb3RvdHlwZS5tb2ViaXVzVHJhbnNmb3JtYXRpb24gPSBmdW5jdGlvbihjKSB7Ci0gIHZhciBudW0gPSB0aGlzLmFkZChjKTsKLSAgdmFyIGRlbiA9IGMuJGNvbmp1Z2F0ZSgpLiRwcm9kKHRoaXMpOwotICBkZW4ueCsrOwotICByZXR1cm4gbnVtLiRkaXYoZGVuKTsKLX07Ci0KLS8qIAotICAgIG1vZWJpdXNUcmFuc2Zvcm1hdGlvbiAKLSAgICAgCi0gICAgQ2FsY3VsYXRlcyBhIG1vZWJpdXMgdHJhbnNmb3JtYXRpb24gZm9yIHRoZSBoeXBlcmJvbGljIHRyZWUuIAotICAgICAKLSAgICA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb2ViaXVzX3RyYW5zZm9ybWF0aW9uPiAKLSAgICAgIAotICAgICBQYXJhbWV0ZXJzOiAKLSAgICAgCi0gICAgICAgIGdyYXBoIC0gQSA8R3JhcGg+IGluc3RhbmNlLgotICAgICAgICBwb3MgLSBBIDxDb21wbGV4Pi4KLSAgICAgICAgcHJvcCAtIEEgcHJvcGVydHkgYXJyYXkuCi0gICAgICAgIHRoZXRhIC0gUm90YXRpb24gYW5nbGUuIAotICAgICAgICBzdGFydFBvcyAtIF9vcHRpb25hbF8gc3RhcnQgcG9zaXRpb24uIAotKi8KLUdyYXBoLlV0aWwubW9lYml1c1RyYW5zZm9ybWF0aW9uID0gZnVuY3Rpb24oZ3JhcGgsIHBvcywgcHJvcCwgc3RhcnRQb3MsIGZsYWdzKSB7Ci0gIHRoaXMuZWFjaE5vZGUoZ3JhcGgsIGZ1bmN0aW9uKGVsZW0pIHsKLSAgICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBwcm9wLmxlbmd0aDsgaSsrKSB7Ci0gICAgICB2YXIgcCA9IHBvc1tpXS5zY2FsZSgtMSksIHByb3BlcnR5ID0gc3RhcnRQb3MgPyBzdGFydFBvcyA6IHByb3BbaV07Ci0gICAgICBlbGVtLmdldFBvcyhwcm9wW2ldKS5zZXQoZWxlbS5nZXRQb3MocHJvcGVydHkpLmdldGMoKS5tb2ViaXVzVHJhbnNmb3JtYXRpb24ocCkpOwotICAgIH0KLSAgfSwgZmxhZ3MpOwotfTsKLQotLyogCi0gICBDbGFzczogSHlwZXJ0cmVlIAotICAgCi0gICBBIEh5cGVyYm9saWMgVHJlZS9HcmFwaCB2aXN1YWxpemF0aW9uLgotICAgCi0gICBJbnNwaXJlZCBieToKLSAKLSAgIEEgRm9jdXMrQ29udGV4dCBUZWNobmlxdWUgQmFzZWQgb24gSHlwZXJib2xpYyBHZW9tZXRyeSBmb3IgVmlzdWFsaXppbmcgTGFyZ2UgSGllcmFyY2hpZXMgKEpvaG4gTGFtcGluZywgUmFtYW5hIFJhbywgYW5kIFBldGVyIFBpcm9sbGkpLiAKLSAgIDxodHRwOi8vd3d3LmNzLnRhdS5hYy5pbC9+YXNoYXJmL3NocmVrL1Byb2plY3RzL0h5cEJyb3dzZXIvc3RhcnRyZWUtY2hpOTUucGRmPgotIAotICBOb3RlOgotIAotICBUaGlzIHZpc3VhbGl6YXRpb24gd2FzIGJ1aWx0IGFuZCBlbmdpbmVlcmVkIGZyb20gc2NyYXRjaCwgdGFraW5nIG9ubHkgdGhlIHBhcGVyIGFzIGluc3BpcmF0aW9uLCBhbmQgb25seSBzaGFyZXMgc29tZSBmZWF0dXJlcyB3aXRoIHRoZSBIeXBlcnRyZWUgZGVzY3JpYmVkIGluIHRoZSBwYXBlci4KLQotICBJbXBsZW1lbnRzOgotICAKLSAgQWxsIDxMb2FkZXI+IG1ldGhvZHMKLSAgCi0gIENvbnN0cnVjdG9yIE9wdGlvbnM6Ci0gIAotICBJbmhlcml0cyBvcHRpb25zIGZyb20KLSAgCi0gIC0gPE9wdGlvbnMuQ2FudmFzPgotICAtIDxPcHRpb25zLkNvbnRyb2xsZXI+Ci0gIC0gPE9wdGlvbnMuTm9kZT4KLSAgLSA8T3B0aW9ucy5FZGdlPgotICAtIDxPcHRpb25zLkxhYmVsPgotICAtIDxPcHRpb25zLkV2ZW50cz4KLSAgLSA8T3B0aW9ucy5UaXBzPgotICAtIDxPcHRpb25zLk5vZGVTdHlsZXM+Ci0gIC0gPE9wdGlvbnMuTmF2aWdhdGlvbj4KLSAgCi0gIEFkZGl0aW9uYWxseSwgdGhlcmUgYXJlIG90aGVyIHBhcmFtZXRlcnMgYW5kIHNvbWUgZGVmYXVsdCB2YWx1ZXMgY2hhbmdlZAotICAKLSAgcmFkaXVzIC0gKHN0cmluZ3xudW1iZXIpIERlZmF1bHQncyAqYXV0byouIFRoZSByYWRpdXMgb2YgdGhlIGRpc2MgdG8gcGxvdCB0aGUgPEh5cGVydHJlZT4gaW4uICdhdXRvJyB3aWxsIHRha2UgdGhlIHNtYWxsZXIgdmFsdWUgZnJvbSB0aGUgd2lkdGggYW5kIGhlaWdodCBjYW52YXMgZGltZW5zaW9ucy4gWW91IGNhbiBhbHNvIHNldCB0aGlzIHRvIGEgY3VzdG9tIHZhbHVlLCBmb3IgZXhhbXBsZSAqMjUwKi4KLSAgb2Zmc2V0IC0gKG51bWJlcikgRGVmYXVsdCdzICowKi4gQSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSB0aGF0IHdpbGwgYmUgc3Vic3RyYWN0ZWQgdG8gZWFjaCBub2RlIHBvc2l0aW9uIHRvIG1ha2UgYSBtb3JlIGNvbXBhY3QgPEh5cGVydHJlZT4uIFRoaXMgd2lsbCBhdm9pZCBwbGFjaW5nIG5vZGVzIHRvbyBmYXIgZnJvbSBlYWNoIG90aGVyIHdoZW4gYSB0aGVyZSdzIGEgc2VsZWN0ZWQgbm9kZS4KLSAgZnBzIC0gRGVzY3JpYmVkIGluIDxPcHRpb25zLkZ4Pi4gSXQncyBkZWZhdWx0IHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgdG8gKjM1Ki4KLSAgZHVyYXRpb24gLSBEZXNjcmliZWQgaW4gPE9wdGlvbnMuRng+LiBJdCdzIGRlZmF1bHQgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCB0byAqMTUwMCouCi0gIEVkZ2UudHlwZSAtIERlc2NyaWJlZCBpbiA8T3B0aW9ucy5FZGdlPi4gSXQncyBkZWZhdWx0IHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgdG8gKmh5cGVybGluZSouIAotICAKLSAgSW5zdGFuY2UgUHJvcGVydGllczoKLSAgCi0gIGNhbnZhcyAtIEFjY2VzcyBhIDxDYW52YXM+IGluc3RhbmNlLgotICBncmFwaCAtIEFjY2VzcyBhIDxHcmFwaD4gaW5zdGFuY2UuCi0gIG9wIC0gQWNjZXNzIGEgPEh5cGVydHJlZS5PcD4gaW5zdGFuY2UuCi0gIGZ4IC0gQWNjZXNzIGEgPEh5cGVydHJlZS5QbG90PiBpbnN0YW5jZS4KLSAgbGFiZWxzIC0gQWNjZXNzIGEgPEh5cGVydHJlZS5MYWJlbD4gaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLgotCi0qLwotCi0kaml0Lkh5cGVydHJlZSA9IG5ldyBDbGFzcyggewotCi0gIEltcGxlbWVudHM6IFsgTG9hZGVyLCBFeHRyYXMsIExheW91dHMuUmFkaWFsIF0sCi0KLSAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oY29udHJvbGxlcikgewotICAgIHZhciAkSHlwZXJ0cmVlID0gJGppdC5IeXBlcnRyZWU7Ci0KLSAgICB2YXIgY29uZmlnID0gewotICAgICAgcmFkaXVzOiAiYXV0byIsCi0gICAgICBvZmZzZXQ6IDAsCi0gICAgICBFZGdlOiB7Ci0gICAgICAgIHR5cGU6ICdoeXBlcmxpbmUnCi0gICAgICB9LAotICAgICAgZHVyYXRpb246IDE1MDAsCi0gICAgICBmcHM6IDM1Ci0gICAgfTsKLSAgICB0aGlzLmNvbnRyb2xsZXIgPSB0aGlzLmNvbmZpZyA9ICQubWVyZ2UoT3B0aW9ucygiQ2FudmFzIiwgIk5vZGUiLCAiRWRnZSIsCi0gICAgICAgICJGeCIsICJUaXBzIiwgIk5vZGVTdHlsZXMiLCAiRXZlbnRzIiwgIk5hdmlnYXRpb24iLCAiQ29udHJvbGxlciIsICJMYWJlbCIpLCBjb25maWcsIGNvbnRyb2xsZXIpOwotCi0gICAgdmFyIGNhbnZhc0NvbmZpZyA9IHRoaXMuY29uZmlnOwotICAgIGlmKGNhbnZhc0NvbmZpZy51c2VDYW52YXMpIHsKLSAgICAgIHRoaXMuY2FudmFzID0gY2FudmFzQ29uZmlnLnVzZUNhbnZhczsKLSAgICAgIHRoaXMuY29uZmlnLmxhYmVsQ29udGFpbmVyID0gdGhpcy5jYW52YXMuaWQgKyAnLWxhYmVsJzsKLSAgICB9IGVsc2UgewotICAgICAgaWYoY2FudmFzQ29uZmlnLmJhY2tncm91bmQpIHsKLSAgICAgICAgY2FudmFzQ29uZmlnLmJhY2tncm91bmQgPSAkLm1lcmdlKHsKLSAgICAgICAgICB0eXBlOiAnQ2lyY2xlcycKLSAgICAgICAgfSwgY2FudmFzQ29uZmlnLmJhY2tncm91bmQpOwotICAgICAgfQotICAgICAgdGhpcy5jYW52YXMgPSBuZXcgQ2FudmFzKHRoaXMsIGNhbnZhc0NvbmZpZyk7Ci0gICAgICB0aGlzLmNvbmZpZy5sYWJlbENvbnRhaW5lciA9ICh0eXBlb2YgY2FudmFzQ29uZmlnLmluamVjdEludG8gPT0gJ3N0cmluZyc/IGNhbnZhc0NvbmZpZy5pbmplY3RJbnRvIDogY2FudmFzQ29uZmlnLmluamVjdEludG8uaWQpICsgJy1sYWJlbCc7Ci0gICAgfQotCi0gICAgdGhpcy5ncmFwaE9wdGlvbnMgPSB7Ci0gICAgICAna2xhc3MnOiBQb2xhciwKLSAgICAgICdOb2RlJzogewotICAgICAgICAnc2VsZWN0ZWQnOiBmYWxzZSwKLSAgICAgICAgJ2V4aXN0JzogdHJ1ZSwKLSAgICAgICAgJ2RyYXduJzogdHJ1ZQotICAgICAgfQotICAgIH07Ci0gICAgdGhpcy5ncmFwaCA9IG5ldyBHcmFwaCh0aGlzLmdyYXBoT3B0aW9ucywgdGhpcy5jb25maWcuTm9kZSwKLSAgICAgICAgdGhpcy5jb25maWcuRWRnZSk7Ci0gICAgdGhpcy5sYWJlbHMgPSBuZXcgJEh5cGVydHJlZS5MYWJlbFtjYW52YXNDb25maWcuTGFiZWwudHlwZV0odGhpcyk7Ci0gICAgdGhpcy5meCA9IG5ldyAkSHlwZXJ0cmVlLlBsb3QodGhpcywgJEh5cGVydHJlZSk7Ci0gICAgdGhpcy5vcCA9IG5ldyAkSHlwZXJ0cmVlLk9wKHRoaXMpOwotICAgIHRoaXMuanNvbiA9IG51bGw7Ci0gICAgdGhpcy5yb290ID0gbnVsbDsKLSAgICB0aGlzLmJ1c3kgPSBmYWxzZTsKLSAgICAvLyBpbml0aWFsaXplIGV4dHJhcwotICAgIHRoaXMuaW5pdGlhbGl6ZUV4dHJhcygpOwotICB9LAotCi0gIC8qIAotICAKLSAgY3JlYXRlTGV2ZWxEaXN0YW5jZUZ1bmMgCi0KLSAgUmV0dXJucyB0aGUgbGV2ZWxEaXN0YW5jZSBmdW5jdGlvbiB1c2VkIGZvciBjYWxjdWxhdGluZyBhIG5vZGUgZGlzdGFuY2UgCi0gIHRvIGl0cyBvcmlnaW4uIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgaXMgY29tcHV0ZWQgCi0gIHBlciBsZXZlbCBhbmQgbm90IHBlciBub2RlLCBzdWNoIHRoYXQgYWxsIG5vZGVzIHdpdGggdGhlIHNhbWUgZGVwdGggd2lsbCBoYXZlIHRoZSAKLSAgc2FtZSBkaXN0YW5jZSB0byB0aGUgb3JpZ2luLiBUaGUgcmVzdWx0aW5nIGZ1bmN0aW9uIGdldHMgdGhlIAotICBwYXJlbnQgbm9kZSBhcyBwYXJhbWV0ZXIgYW5kIHJldHVybnMgYSBmbG9hdC4KLQotICAqLwotICBjcmVhdGVMZXZlbERpc3RhbmNlRnVuYzogZnVuY3Rpb24oKSB7Ci0gICAgLy8gZ2V0IG1heCB2aXouIGxlbmd0aC4KLSAgICB2YXIgciA9IHRoaXMuZ2V0UmFkaXVzKCk7Ci0gICAgLy8gZ2V0IG1heCBkZXB0aC4KLSAgICB2YXIgZGVwdGggPSAwLCBtYXggPSBNYXRoLm1heCwgY29uZmlnID0gdGhpcy5jb25maWc7Ci0gICAgdGhpcy5ncmFwaC5lYWNoTm9kZShmdW5jdGlvbihub2RlKSB7Ci0gICAgICBkZXB0aCA9IG1heChub2RlLl9kZXB0aCwgZGVwdGgpOwotICAgIH0sICJpZ25vcmUiKTsKLSAgICBkZXB0aCsrOwotICAgIC8vIG5vZGUgZGlzdGFuY2UgZ2VuZXJhdG9yCi0gICAgdmFyIGdlbkRpc3RGdW5jID0gZnVuY3Rpb24oYSkgewotICAgICAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgbm9kZS5zY2FsZSA9IHI7Ci0gICAgICAgIHZhciBkID0gbm9kZS5fZGVwdGggKyAxOwotICAgICAgICB2YXIgYWN1bSA9IDAsIHBvdyA9IE1hdGgucG93OwotICAgICAgICB3aGlsZSAoZCkgewotICAgICAgICAgIGFjdW0gKz0gcG93KGEsIGQtLSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFjdW0gLSBjb25maWcub2Zmc2V0OwotICAgICAgfTsKLSAgICB9OwotICAgIC8vIGVzdGltYXRlIGJldHRlciBlZGdlIGxlbmd0aC4KLSAgICBmb3IgKCB2YXIgaSA9IDAuNTE7IGkgPD0gMTsgaSArPSAwLjAxKSB7Ci0gICAgICB2YXIgdmFsU2VyaWVzID0gKDEgLSBNYXRoLnBvdyhpLCBkZXB0aCkpIC8gKDEgLSBpKTsKLSAgICAgIGlmICh2YWxTZXJpZXMgPj0gMikgeyByZXR1cm4gZ2VuRGlzdEZ1bmMoaSAtIDAuMDEpOyB9Ci0gICAgfQotICAgIHJldHVybiBnZW5EaXN0RnVuYygwLjc1KTsKLSAgfSwKLQotICAvKiAKLSAgICBNZXRob2Q6IGdldFJhZGl1cyAKLSAgICAKLSAgICBSZXR1cm5zIHRoZSBjdXJyZW50IHJhZGl1cyBvZiB0aGUgdmlzdWFsaXphdGlvbi4gSWYgKmNvbmZpZy5yYWRpdXMqIGlzICphdXRvKiB0aGVuIGl0IAotICAgIGNhbGN1bGF0ZXMgdGhlIHJhZGl1cyBieSB0YWtpbmcgdGhlIHNtYWxsZXIgc2l6ZSBvZiB0aGUgPENhbnZhcz4gd2lkZ2V0LgotICAgIAotICAgIFNlZSBhbHNvOgotICAgIAotICAgIDxDYW52YXMuZ2V0U2l6ZT4KLSAgIAotICAqLwotICBnZXRSYWRpdXM6IGZ1bmN0aW9uKCkgewotICAgIHZhciByYWQgPSB0aGlzLmNvbmZpZy5yYWRpdXM7Ci0gICAgaWYgKHJhZCAhPT0gImF1dG8iKSB7IHJldHVybiByYWQ7IH0KLSAgICB2YXIgcyA9IHRoaXMuY2FudmFzLmdldFNpemUoKTsKLSAgICByZXR1cm4gTWF0aC5taW4ocy53aWR0aCwgcy5oZWlnaHQpIC8gMjsKLSAgfSwKLQotICAvKiAKLSAgICBNZXRob2Q6IHJlZnJlc2ggCi0gICAgCi0gICAgQ29tcHV0ZXMgcG9zaXRpb25zIGFuZCBwbG90cyB0aGUgdHJlZS4KLQotICAgIFBhcmFtZXRlcnM6Ci0KLSAgICByZXBvc2l0aW9uIC0gKG9wdGlvbmFsfGJvb2xlYW4pIFNldCB0aGlzIHRvICp0cnVlKiB0byBmb3JjZSBhbGwgcG9zaXRpb25zIChjdXJyZW50LCBzdGFydCwgZW5kKSB0byBtYXRjaC4KLQotICAgKi8KLSAgcmVmcmVzaDogZnVuY3Rpb24ocmVwb3NpdGlvbikgewotICAgIGlmIChyZXBvc2l0aW9uKSB7Ci0gICAgICB0aGlzLnJlcG9zaXRpb24oKTsKLSAgICAgIHRoaXMuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obm9kZSkgewotICAgICAgICBub2RlLnN0YXJ0UG9zLnJobyA9IG5vZGUucG9zLnJobyA9IG5vZGUuZW5kUG9zLnJobzsKLSAgICAgICAgbm9kZS5zdGFydFBvcy50aGV0YSA9IG5vZGUucG9zLnRoZXRhID0gbm9kZS5lbmRQb3MudGhldGE7Ci0gICAgICB9KTsKLSAgICB9IGVsc2UgewotICAgICAgdGhpcy5jb21wdXRlKCk7Ci0gICAgfQotICAgIHRoaXMucGxvdCgpOwotICB9LAotCi0gIC8qIAotICAgcmVwb3NpdGlvbiAKLSAgIAotICAgQ29tcHV0ZXMgbm9kZXMnIHBvc2l0aW9ucyBhbmQgcmVzdG9yZXMgdGhlIHRyZWUgdG8gaXRzIHByZXZpb3VzIHBvc2l0aW9uLgotCi0gICBGb3IgY2FsY3VsYXRpbmcgbm9kZXMnIHBvc2l0aW9ucyB0aGUgcm9vdCBtdXN0IGJlIHBsYWNlZCBvbiBpdHMgb3JpZ2luLiBUaGlzIG1ldGhvZCBkb2VzIHRoaXMgCi0gICAgIGFuZCB0aGVuIGF0dGVtcHMgdG8gcmVzdG9yZSB0aGUgaHlwZXJ0cmVlIHRvIGl0cyBwcmV2aW91cyBwb3NpdGlvbi4KLSAgICAKLSAgKi8KLSAgcmVwb3NpdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5jb21wdXRlKCdlbmQnKTsKLSAgICB2YXIgdmVjdG9yID0gdGhpcy5ncmFwaC5nZXROb2RlKHRoaXMucm9vdCkucG9zLmdldGMoKS5zY2FsZSgtMSk7Ci0gICAgR3JhcGguVXRpbC5tb2ViaXVzVHJhbnNmb3JtYXRpb24odGhpcy5ncmFwaCwgWyB2ZWN0b3IgXSwgWyAnZW5kJyBdLAotICAgICAgICAnZW5kJywgImlnbm9yZSIpOwotICAgIHRoaXMuZ3JhcGguZWFjaE5vZGUoZnVuY3Rpb24obm9kZSkgewotICAgICAgaWYgKG5vZGUuaWdub3JlKSB7Ci0gICAgICAgIG5vZGUuZW5kUG9zLnJobyA9IG5vZGUucG9zLnJobzsKLSAgICAgICAgbm9kZS5lbmRQb3MudGhldGEgPSBub2RlLnBvcy50aGV0YTsKLSAgICAgIH0KLSAgICB9KTsKLSAgfSwKLQotICAvKiAKLSAgIE1ldGhvZDogcGxvdCAKLSAgIAotICAgUGxvdHMgdGhlIDxIeXBlcnRyZWU+LiBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gKmZ4LnBsb3QqLiAKLQotICAqLwotICBwbG90OiBmdW5jdGlvbigpIHsKLSAgICB0aGlzLmZ4LnBsb3QoKTsKLSAgfSwKLQotICAvKiAKLSAgIE1ldGhvZDogb25DbGljayAKLSAgIAotICAgQW5pbWF0ZXMgdGhlIDxIeXBlcnRyZWU+IHRvIGNlbnRlciB0aGUgbm9kZSBzcGVjaWZpZWQgYnkgKmlkKi4KLQotICAgUGFyYW1ldGVyczoKLQotICAgaWQgLSBBIDxHcmFwaC5Ob2RlPiBpZC4KLSAgIG9wdCAtIChvcHRpb25hbHxvYmplY3QpIEFuIG9iamVjdCBjb250YWluaW5nIHNvbWUgZXh0cmEgcHJvcGVydGllcyBkZXNjcmliZWQgYmVsb3cKLSAgIGhpZGVMYWJlbHMgLSAoYm9vbGVhbikgRGVmYXVsdCdzICp0cnVlKi4gSGlkZSBsYWJlbHMgd2hlbiBwZXJmb3JtaW5nIHRoZSBhbmltYXRpb24uCi0KLSAgIEV4YW1wbGU6Ci0KLSAgIChzdGFydCBjb2RlIGpzKQotICAgICBodC5vbkNsaWNrKCdzb21laWQnKTsKLSAgICAgLy9vciBhbHNvLi4uCi0gICAgIGh0Lm9uQ2xpY2soJ3NvbWVpZCcsIHsKLSAgICAgIGhpZGVMYWJlbHM6IGZhbHNlCi0gICAgIH0pOwotICAgIChlbmQgY29kZSkKLSAgICAKLSAgKi8KLSAgb25DbGljazogZnVuY3Rpb24oaWQsIG9wdCkgewotICAgIHZhciBwb3MgPSB0aGlzLmdyYXBoLmdldE5vZGUoaWQpLnBvcy5nZXRjKHRydWUpOwotICAgIHRoaXMubW92ZShwb3MsIG9wdCk7Ci0gIH0sCi0KLSAgLyogCi0gICBNZXRob2Q6IG1vdmUgCi0KLSAgIFRyYW5zbGF0ZXMgdGhlIHRyZWUgdG8gdGhlIGdpdmVuIHBvc2l0aW9uLiAKLQotICAgUGFyYW1ldGVyczoKLQotICAgcG9zIC0gKG9iamVjdCkgQSAqeCwgeSogY29vcmRpbmF0ZSBvYmplY3Qgd2hlcmUgeCwgeSBpbiBbMCwgMSksIHRvIG1vdmUgdGhlIHRyZWUgdG8uCi0gICBvcHQgLSBUaGlzIG9iamVjdCBoYXMgYmVlbiBkZWZpbmVkIGluIDxIeXBlcnRyZWUub25DbGljaz4KLSAgIAotICAgRXhhbXBsZToKLSAgIAotICAgKHN0YXJ0IGNvZGUganMpCi0gICAgIGh0Lm1vdmUoeyB4OiAwLCB5OiAwLjcgfSwgewotICAgICAgIGhpZGVMYWJlbHM6IGZhbHNlCi0gICAgIH0pOwotICAgKGVuZCBjb2RlKQotCi0gICovCi0gIG1vdmU6IGZ1bmN0aW9uKHBvcywgb3B0KSB7Ci0gICAgdmFyIHZlcnNvciA9ICRDKHBvcy54LCBwb3MueSk7Ci0gICAgaWYgKHRoaXMuYnVzeSA9PT0gZmFsc2UgJiYgdmVyc29yLm5vcm0oKSA8IDEpIHsKLSAgICAgIHRoaXMuYnVzeSA9IHRydWU7Ci0gICAgICB2YXIgcm9vdCA9IHRoaXMuZ3JhcGguZ2V0Q2xvc2VzdE5vZGVUb1Bvcyh2ZXJzb3IpLCB0aGF0ID0gdGhpczsKLSAgICAgIHRoaXMuZ3JhcGguY29tcHV0ZUxldmVscyhyb290LmlkLCAwKTsKLSAgICAgIHRoaXMuY29udHJvbGxlci5vbkJlZm9yZUNvbXB1dGUocm9vdCk7Ci0gICAgICBvcHQgPSAkLm1lcmdlKCB7Ci0gICAgICAgIG9uQ29tcGxldGU6ICQuZW1wdHkKLSAgICAgIH0sIG9wdCB8fCB7fSk7Ci0gICAgICB0aGlzLmZ4LmFuaW1hdGUoJC5tZXJnZSggewotICAgICAgICBtb2RlczogWyAnbW9lYml1cycgXSwKLSAgICAgICAgaGlkZUxhYmVsczogdHJ1ZQotICAgICAgfSwgb3B0LCB7Ci0gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIHRoYXQuYnVzeSA9IGZhbHNlOwotICAgICAgICAgIG9wdC5vbkNvbXBsZXRlKCk7Ci0gICAgICAgIH0KLSAgICAgIH0pLCB2ZXJzb3IpOwotICAgIH0KLSAgfQotfSk7Ci0KLSRqaXQuSHlwZXJ0cmVlLiRleHRlbmQgPSB0cnVlOwotCi0oZnVuY3Rpb24oSHlwZXJ0cmVlKSB7Ci0KLSAgLyogCi0gICAgIENsYXNzOiBIeXBlcnRyZWUuT3AgCi0gICAKLSAgICAgQ3VzdG9tIGV4dGVuc2lvbiBvZiA8R3JhcGguT3A+LgotCi0gICAgIEV4dGVuZHM6Ci0KLSAgICAgQWxsIDxHcmFwaC5PcD4gbWV0aG9kcwotICAgICAKLSAgICAgU2VlIGFsc286Ci0gICAgIAotICAgICA8R3JhcGguT3A+Ci0KLSAgKi8KLSAgSHlwZXJ0cmVlLk9wID0gbmV3IENsYXNzKCB7Ci0KLSAgICBJbXBsZW1lbnRzOiBHcmFwaC5PcAotCi0gIH0pOwotCi0gIC8qIAotICAgICBDbGFzczogSHlwZXJ0cmVlLlBsb3QgCi0gICAKLSAgICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5QbG90Pi4KLSAgCi0gICAgRXh0ZW5kczoKLSAgCi0gICAgQWxsIDxHcmFwaC5QbG90PiBtZXRob2RzCi0gICAgCi0gICAgU2VlIGFsc286Ci0gICAgCi0gICAgPEdyYXBoLlBsb3Q+Ci0gIAotICAqLwotICBIeXBlcnRyZWUuUGxvdCA9IG5ldyBDbGFzcyggewotCi0gICAgSW1wbGVtZW50czogR3JhcGguUGxvdAotCi0gIH0pOwotCi0gIC8qCi0gICAgT2JqZWN0OiBIeXBlcnRyZWUuTGFiZWwKLQotICAgIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLkxhYmVsPi4gCi0gICAgQ29udGFpbnMgY3VzdG9tIDxHcmFwaC5MYWJlbC5TVkc+LCA8R3JhcGguTGFiZWwuSFRNTD4gYW5kIDxHcmFwaC5MYWJlbC5OYXRpdmU+IGV4dGVuc2lvbnMuCi0gIAotICAgIEV4dGVuZHM6Ci0gIAotICAgIEFsbCA8R3JhcGguTGFiZWw+IG1ldGhvZHMgYW5kIHN1YmNsYXNzZXMuCi0gIAotICAgIFNlZSBhbHNvOgotICAKLSAgICA8R3JhcGguTGFiZWw+LCA8R3JhcGguTGFiZWwuTmF0aXZlPiwgPEdyYXBoLkxhYmVsLkhUTUw+LCA8R3JhcGguTGFiZWwuU1ZHPi4KLQotICAgKi8KLSAgSHlwZXJ0cmVlLkxhYmVsID0ge307Ci0KLSAgLyoKLSAgICAgSHlwZXJ0cmVlLkxhYmVsLk5hdGl2ZQotCi0gICAgIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLkxhYmVsLk5hdGl2ZT4uCi0KLSAgICAgRXh0ZW5kczoKLQotICAgICBBbGwgPEdyYXBoLkxhYmVsLk5hdGl2ZT4gbWV0aG9kcwotCi0gICAgIFNlZSBhbHNvOgotCi0gICAgIDxHcmFwaC5MYWJlbC5OYXRpdmU+Ci0KLSAgKi8KLSAgSHlwZXJ0cmVlLkxhYmVsLk5hdGl2ZSA9IG5ldyBDbGFzcyggewotICAgIEltcGxlbWVudHM6IEdyYXBoLkxhYmVsLk5hdGl2ZSwKLQotICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHZpeikgewotICAgICAgdGhpcy52aXogPSB2aXo7Ci0gICAgfSwKLQotICAgIHJlbmRlckxhYmVsOiBmdW5jdGlvbihjYW52YXMsIG5vZGUsIGNvbnRyb2xsZXIpIHsKLSAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q3R4KCk7Ci0gICAgICB2YXIgY29vcmQgPSBub2RlLnBvcy5nZXRjKHRydWUpOwotICAgICAgdmFyIHMgPSB0aGlzLnZpei5nZXRSYWRpdXMoKTsKLSAgICAgIGN0eC5maWxsVGV4dChub2RlLm5hbWUsIGNvb3JkLnggKiBzLCBjb29yZC55ICogcyk7Ci0gICAgfQotICB9KTsKLQotICAvKgotICAgICBIeXBlcnRyZWUuTGFiZWwuU1ZHCi0KLSAgICBDdXN0b20gZXh0ZW5zaW9uIG9mIDxHcmFwaC5MYWJlbC5TVkc+LgotICAKLSAgICBFeHRlbmRzOgotICAKLSAgICBBbGwgPEdyYXBoLkxhYmVsLlNWRz4gbWV0aG9kcwotICAKLSAgICBTZWUgYWxzbzoKLSAgCi0gICAgPEdyYXBoLkxhYmVsLlNWRz4KLSAgCi0gICovCi0gIEh5cGVydHJlZS5MYWJlbC5TVkcgPSBuZXcgQ2xhc3MoIHsKLSAgICBJbXBsZW1lbnRzOiBHcmFwaC5MYWJlbC5TVkcsCi0KLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbih2aXopIHsKLSAgICAgIHRoaXMudml6ID0gdml6OwotICAgIH0sCi0KLSAgICAvKiAKLSAgICAgICBwbGFjZUxhYmVsCi0KLSAgICAgICBPdmVycmlkZXMgYWJzdHJhY3QgbWV0aG9kIHBsYWNlTGFiZWwgaW4gPEdyYXBoLlBsb3Q+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIHRhZyAtIEEgRE9NIGxhYmVsIGVsZW1lbnQuCi0gICAgICAgbm9kZSAtIEEgPEdyYXBoLk5vZGU+LgotICAgICAgIGNvbnRyb2xsZXIgLSBBIGNvbmZpZ3VyYXRpb24vY29udHJvbGxlciBvYmplY3QgcGFzc2VkIHRvIHRoZSB2aXN1YWxpemF0aW9uLgotICAgICAgCi0gICAgICovCi0gICAgcGxhY2VMYWJlbDogZnVuY3Rpb24odGFnLCBub2RlLCBjb250cm9sbGVyKSB7Ci0gICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgY2FudmFzID0gdGhpcy52aXouY2FudmFzLAotICAgICAgICAgIG94ID0gY2FudmFzLnRyYW5zbGF0ZU9mZnNldFgsCi0gICAgICAgICAgb3kgPSBjYW52YXMudHJhbnNsYXRlT2Zmc2V0WSwKLSAgICAgICAgICBzeCA9IGNhbnZhcy5zY2FsZU9mZnNldFgsCi0gICAgICAgICAgc3kgPSBjYW52YXMuc2NhbGVPZmZzZXRZLAotICAgICAgICAgIHJhZGl1cyA9IGNhbnZhcy5nZXRTaXplKCksCi0gICAgICAgICAgciA9IHRoaXMudml6LmdldFJhZGl1cygpOwotICAgICAgdmFyIGxhYmVsUG9zID0gewotICAgICAgICB4OiBNYXRoLnJvdW5kKChwb3MueCAqIHN4KSAqIHIgKyBveCArIHJhZGl1cy53aWR0aCAvIDIpLAotICAgICAgICB5OiBNYXRoLnJvdW5kKChwb3MueSAqIHN5KSAqIHIgKyBveSArIHJhZGl1cy5oZWlnaHQgLyAyKQotICAgICAgfTsKLSAgICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ3gnLCBsYWJlbFBvcy54KTsKLSAgICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ3knLCBsYWJlbFBvcy55KTsKLSAgICAgIGNvbnRyb2xsZXIub25QbGFjZUxhYmVsKHRhZywgbm9kZSk7Ci0gICAgfQotICB9KTsKLQotICAvKgotICAgICBIeXBlcnRyZWUuTGFiZWwuSFRNTAotCi0gICAgIEN1c3RvbSBleHRlbnNpb24gb2YgPEdyYXBoLkxhYmVsLkhUTUw+LgotCi0gICAgIEV4dGVuZHM6Ci0KLSAgICAgQWxsIDxHcmFwaC5MYWJlbC5IVE1MPiBtZXRob2RzLgotCi0gICAgIFNlZSBhbHNvOgotCi0gICAgIDxHcmFwaC5MYWJlbC5IVE1MPgotCi0gICovCi0gIEh5cGVydHJlZS5MYWJlbC5IVE1MID0gbmV3IENsYXNzKCB7Ci0gICAgSW1wbGVtZW50czogR3JhcGguTGFiZWwuSFRNTCwKLQotICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHZpeikgewotICAgICAgdGhpcy52aXogPSB2aXo7Ci0gICAgfSwKLSAgICAvKiAKLSAgICAgICBwbGFjZUxhYmVsCi0KLSAgICAgICBPdmVycmlkZXMgYWJzdHJhY3QgbWV0aG9kIHBsYWNlTGFiZWwgaW4gPEdyYXBoLlBsb3Q+LgotCi0gICAgICAgUGFyYW1ldGVyczoKLQotICAgICAgIHRhZyAtIEEgRE9NIGxhYmVsIGVsZW1lbnQuCi0gICAgICAgbm9kZSAtIEEgPEdyYXBoLk5vZGU+LgotICAgICAgIGNvbnRyb2xsZXIgLSBBIGNvbmZpZ3VyYXRpb24vY29udHJvbGxlciBvYmplY3QgcGFzc2VkIHRvIHRoZSB2aXN1YWxpemF0aW9uLgotICAgICAgCi0gICAgICovCi0gICAgcGxhY2VMYWJlbDogZnVuY3Rpb24odGFnLCBub2RlLCBjb250cm9sbGVyKSB7Ci0gICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0Yyh0cnVlKSwgCi0gICAgICAgICAgY2FudmFzID0gdGhpcy52aXouY2FudmFzLAotICAgICAgICAgIG94ID0gY2FudmFzLnRyYW5zbGF0ZU9mZnNldFgsCi0gICAgICAgICAgb3kgPSBjYW52YXMudHJhbnNsYXRlT2Zmc2V0WSwKLSAgICAgICAgICBzeCA9IGNhbnZhcy5zY2FsZU9mZnNldFgsCi0gICAgICAgICAgc3kgPSBjYW52YXMuc2NhbGVPZmZzZXRZLAotICAgICAgICAgIHJhZGl1cyA9IGNhbnZhcy5nZXRTaXplKCksCi0gICAgICAgICAgciA9IHRoaXMudml6LmdldFJhZGl1cygpOwotICAgICAgdmFyIGxhYmVsUG9zID0gewotICAgICAgICB4OiBNYXRoLnJvdW5kKChwb3MueCAqIHN4KSAqIHIgKyBveCArIHJhZGl1cy53aWR0aCAvIDIpLAotICAgICAgICB5OiBNYXRoLnJvdW5kKChwb3MueSAqIHN5KSAqIHIgKyBveSArIHJhZGl1cy5oZWlnaHQgLyAyKQotICAgICAgfTsKLSAgICAgIHZhciBzdHlsZSA9IHRhZy5zdHlsZTsKLSAgICAgIHN0eWxlLmxlZnQgPSBsYWJlbFBvcy54ICsgJ3B4JzsKLSAgICAgIHN0eWxlLnRvcCA9IGxhYmVsUG9zLnkgKyAncHgnOwotICAgICAgc3R5bGUuZGlzcGxheSA9IHRoaXMuZml0c0luQ2FudmFzKGxhYmVsUG9zLCBjYW52YXMpID8gJycgOiAnbm9uZSc7Ci0KLSAgICAgIGNvbnRyb2xsZXIub25QbGFjZUxhYmVsKHRhZywgbm9kZSk7Ci0gICAgfQotICB9KTsKLQotICAvKgotICAgIENsYXNzOiBIeXBlcnRyZWUuUGxvdC5Ob2RlVHlwZXMKLQotICAgIFRoaXMgY2xhc3MgY29udGFpbnMgYSBsaXN0IG9mIDxHcmFwaC5Ob2RlPiBidWlsdC1pbiB0eXBlcy4gCi0gICAgTm9kZSB0eXBlcyBpbXBsZW1lbnRlZCBhcmUgJ25vbmUnLCAnY2lyY2xlJywgJ3RyaWFuZ2xlJywgJ3JlY3RhbmdsZScsICdzdGFyJywgJ2VsbGlwc2UnIGFuZCAnc3F1YXJlJy4KLQotICAgIFlvdSBjYW4gYWRkIHlvdXIgY3VzdG9tIG5vZGUgdHlwZXMsIGN1c3RvbWl6aW5nIHlvdXIgdmlzdWFsaXphdGlvbiB0byB0aGUgZXh0cmVtZS4KLQotICAgIEV4YW1wbGU6Ci0KLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgIEh5cGVydHJlZS5QbG90Lk5vZGVUeXBlcy5pbXBsZW1lbnQoewotICAgICAgICAnbXlTcGVjaWFsVHlwZSc6IHsKLSAgICAgICAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKSB7Ci0gICAgICAgICAgICAvL3ByaW50IHlvdXIgY3VzdG9tIG5vZGUgdG8gY2FudmFzCi0gICAgICAgICAgfSwKLSAgICAgICAgICAvL29wdGlvbmFsCi0gICAgICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgICAgICAvL3JldHVybiB0cnVlIGlmIHBvcyBpcyBpbnNpZGUgdGhlIG5vZGUgb3IgZmFsc2Ugb3RoZXJ3aXNlCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICAoZW5kIGNvZGUpCi0KLSAgKi8KLSAgSHlwZXJ0cmVlLlBsb3QuTm9kZVR5cGVzID0gbmV3IENsYXNzKHsKLSAgICAnbm9uZSc6IHsKLSAgICAgICdyZW5kZXInOiAkLmVtcHR5LAotICAgICAgJ2NvbnRhaW5zJzogJC5sYW1iZGEoZmFsc2UpCi0gICAgfSwKLSAgICAnY2lyY2xlJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICB2YXIgbmNvbmZpZyA9IHRoaXMubm9kZSwKLSAgICAgICAgICAgIGRpbSA9IG5vZGUuZ2V0RGF0YSgnZGltJyksCi0gICAgICAgICAgICBwID0gbm9kZS5wb3MuZ2V0YygpOwotICAgICAgICBkaW0gPSBuY29uZmlnLnRyYW5zZm9ybT8gZGltICogKDEgLSBwLnNxdWFyZWROb3JtKCkpIDogZGltOwotICAgICAgICBwLiRzY2FsZShub2RlLnNjYWxlKTsKLSAgICAgICAgaWYgKGRpbSA+IDAuMikgewotICAgICAgICAgIHRoaXMubm9kZUhlbHBlci5jaXJjbGUucmVuZGVyKCdmaWxsJywgcCwgZGltLCBjYW52YXMpOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgIHZhciBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpLAotICAgICAgICAgICAgbnBvcyA9IG5vZGUucG9zLmdldGMoKS4kc2NhbGUobm9kZS5zY2FsZSk7Ci0gICAgICAgIHJldHVybiB0aGlzLm5vZGVIZWxwZXIuY2lyY2xlLmNvbnRhaW5zKG5wb3MsIHBvcywgZGltKTsKLSAgICAgIH0KLSAgICB9LAotICAgICdlbGxpcHNlJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICB2YXIgcG9zID0gbm9kZS5wb3MuZ2V0YygpLiRzY2FsZShub2RlLnNjYWxlKSwKLSAgICAgICAgICAgIHdpZHRoID0gbm9kZS5nZXREYXRhKCd3aWR0aCcpLAotICAgICAgICAgICAgaGVpZ2h0ID0gbm9kZS5nZXREYXRhKCdoZWlnaHQnKTsKLSAgICAgICAgdGhpcy5ub2RlSGVscGVyLmVsbGlwc2UucmVuZGVyKCdmaWxsJywgcG9zLCB3aWR0aCwgaGVpZ2h0LCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6IGZ1bmN0aW9uKG5vZGUsIHBvcykgewotICAgICAgICB2YXIgd2lkdGggPSBub2RlLmdldERhdGEoJ3dpZHRoJyksCi0gICAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICAgICAgbnBvcyA9IG5vZGUucG9zLmdldGMoKS4kc2NhbGUobm9kZS5zY2FsZSk7Ci0gICAgICAgIHJldHVybiB0aGlzLm5vZGVIZWxwZXIuY2lyY2xlLmNvbnRhaW5zKG5wb3MsIHBvcywgd2lkdGgsIGhlaWdodCk7Ci0gICAgICB9Ci0gICAgfSwKLSAgICAnc3F1YXJlJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKG5vZGUsIGNhbnZhcykgewotICAgICAgICB2YXIgbmNvbmZpZyA9IHRoaXMubm9kZSwKLSAgICAgICAgICAgIGRpbSA9IG5vZGUuZ2V0RGF0YSgnZGltJyksCi0gICAgICAgICAgICBwID0gbm9kZS5wb3MuZ2V0YygpOwotICAgICAgICBkaW0gPSBuY29uZmlnLnRyYW5zZm9ybT8gZGltICogKDEgLSBwLnNxdWFyZWROb3JtKCkpIDogZGltOwotICAgICAgICBwLiRzY2FsZShub2RlLnNjYWxlKTsKLSAgICAgICAgaWYgKGRpbSA+IDAuMikgewotICAgICAgICAgIHRoaXMubm9kZUhlbHBlci5zcXVhcmUucmVuZGVyKCdmaWxsJywgcCwgZGltLCBjYW52YXMpOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgIHZhciBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpLAotICAgICAgICAgICAgbnBvcyA9IG5vZGUucG9zLmdldGMoKS4kc2NhbGUobm9kZS5zY2FsZSk7Ci0gICAgICAgIHJldHVybiB0aGlzLm5vZGVIZWxwZXIuc3F1YXJlLmNvbnRhaW5zKG5wb3MsIHBvcywgZGltKTsKLSAgICAgIH0KLSAgICB9LAotICAgICdyZWN0YW5nbGUnOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKSB7Ci0gICAgICAgIHZhciBuY29uZmlnID0gdGhpcy5ub2RlLAotICAgICAgICAgICAgd2lkdGggPSBub2RlLmdldERhdGEoJ3dpZHRoJyksCi0gICAgICAgICAgICBoZWlnaHQgPSBub2RlLmdldERhdGEoJ2hlaWdodCcpLAotICAgICAgICAgICAgcG9zID0gbm9kZS5wb3MuZ2V0YygpOwotICAgICAgICB3aWR0aCA9IG5jb25maWcudHJhbnNmb3JtPyB3aWR0aCAqICgxIC0gcG9zLnNxdWFyZWROb3JtKCkpIDogd2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IG5jb25maWcudHJhbnNmb3JtPyBoZWlnaHQgKiAoMSAtIHBvcy5zcXVhcmVkTm9ybSgpKSA6IGhlaWdodDsKLSAgICAgICAgcG9zLiRzY2FsZShub2RlLnNjYWxlKTsKLSAgICAgICAgaWYgKHdpZHRoID4gMC4yICYmIGhlaWdodCA+IDAuMikgewotICAgICAgICAgIHRoaXMubm9kZUhlbHBlci5yZWN0YW5nbGUucmVuZGVyKCdmaWxsJywgcG9zLCB3aWR0aCwgaGVpZ2h0LCBjYW52YXMpOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgIHZhciB3aWR0aCA9IG5vZGUuZ2V0RGF0YSgnd2lkdGgnKSwKLSAgICAgICAgICAgIGhlaWdodCA9IG5vZGUuZ2V0RGF0YSgnaGVpZ2h0JyksCi0gICAgICAgICAgICBucG9zID0gbm9kZS5wb3MuZ2V0YygpLiRzY2FsZShub2RlLnNjYWxlKTsKLSAgICAgICAgcmV0dXJuIHRoaXMubm9kZUhlbHBlci5yZWN0YW5nbGUuY29udGFpbnMobnBvcywgcG9zLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgIH0KLSAgICB9LAotICAgICd0cmlhbmdsZSc6IHsKLSAgICAgICdyZW5kZXInOiBmdW5jdGlvbihub2RlLCBjYW52YXMpIHsKLSAgICAgICAgdmFyIG5jb25maWcgPSB0aGlzLm5vZGUsCi0gICAgICAgICAgICBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpLAotICAgICAgICAgICAgcCA9IG5vZGUucG9zLmdldGMoKTsKLSAgICAgICAgZGltID0gbmNvbmZpZy50cmFuc2Zvcm0/IGRpbSAqICgxIC0gcC5zcXVhcmVkTm9ybSgpKSA6IGRpbTsKLSAgICAgICAgcC4kc2NhbGUobm9kZS5zY2FsZSk7Ci0gICAgICAgIGlmIChkaW0gPiAwLjIpIHsKLSAgICAgICAgICB0aGlzLm5vZGVIZWxwZXIudHJpYW5nbGUucmVuZGVyKCdmaWxsJywgcCwgZGltLCBjYW52YXMpOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgIHZhciBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpLAotICAgICAgICAgICAgbnBvcyA9IG5vZGUucG9zLmdldGMoKS4kc2NhbGUobm9kZS5zY2FsZSk7Ci0gICAgICAgIHJldHVybiB0aGlzLm5vZGVIZWxwZXIudHJpYW5nbGUuY29udGFpbnMobnBvcywgcG9zLCBkaW0pOwotICAgICAgfQotICAgIH0sCi0gICAgJ3N0YXInOiB7Ci0gICAgICAncmVuZGVyJzogZnVuY3Rpb24obm9kZSwgY2FudmFzKSB7Ci0gICAgICAgIHZhciBuY29uZmlnID0gdGhpcy5ub2RlLAotICAgICAgICAgICAgZGltID0gbm9kZS5nZXREYXRhKCdkaW0nKSwKLSAgICAgICAgICAgIHAgPSBub2RlLnBvcy5nZXRjKCk7Ci0gICAgICAgIGRpbSA9IG5jb25maWcudHJhbnNmb3JtPyBkaW0gKiAoMSAtIHAuc3F1YXJlZE5vcm0oKSkgOiBkaW07Ci0gICAgICAgIHAuJHNjYWxlKG5vZGUuc2NhbGUpOwotICAgICAgICBpZiAoZGltID4gMC4yKSB7Ci0gICAgICAgICAgdGhpcy5ub2RlSGVscGVyLnN0YXIucmVuZGVyKCdmaWxsJywgcCwgZGltLCBjYW52YXMpOwotICAgICAgICB9Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24obm9kZSwgcG9zKSB7Ci0gICAgICAgIHZhciBkaW0gPSBub2RlLmdldERhdGEoJ2RpbScpLAotICAgICAgICAgICAgbnBvcyA9IG5vZGUucG9zLmdldGMoKS4kc2NhbGUobm9kZS5zY2FsZSk7Ci0gICAgICAgIHJldHVybiB0aGlzLm5vZGVIZWxwZXIuc3Rhci5jb250YWlucyhucG9zLCBwb3MsIGRpbSk7Ci0gICAgICB9Ci0gICAgfQotICB9KTsKLQotICAvKgotICAgQ2xhc3M6IEh5cGVydHJlZS5QbG90LkVkZ2VUeXBlcwotCi0gICAgVGhpcyBjbGFzcyBjb250YWlucyBhIGxpc3Qgb2YgPEdyYXBoLkFkamFjZW5jZT4gYnVpbHQtaW4gdHlwZXMuIAotICAgIEVkZ2UgdHlwZXMgaW1wbGVtZW50ZWQgYXJlICdub25lJywgJ2xpbmUnLCAnYXJyb3cnIGFuZCAnaHlwZXJsaW5lJy4KLSAgCi0gICAgWW91IGNhbiBhZGQgeW91ciBjdXN0b20gZWRnZSB0eXBlcywgY3VzdG9taXppbmcgeW91ciB2aXN1YWxpemF0aW9uIHRvIHRoZSBleHRyZW1lLgotICAKLSAgICBFeGFtcGxlOgotICAKLSAgICAoc3RhcnQgY29kZSBqcykKLSAgICAgIEh5cGVydHJlZS5QbG90LkVkZ2VUeXBlcy5pbXBsZW1lbnQoewotICAgICAgICAnbXlTcGVjaWFsVHlwZSc6IHsKLSAgICAgICAgICAncmVuZGVyJzogZnVuY3Rpb24oYWRqLCBjYW52YXMpIHsKLSAgICAgICAgICAgIC8vcHJpbnQgeW91ciBjdXN0b20gZWRnZSB0byBjYW52YXMKLSAgICAgICAgICB9LAotICAgICAgICAgIC8vb3B0aW9uYWwKLSAgICAgICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihhZGosIHBvcykgewotICAgICAgICAgICAgLy9yZXR1cm4gdHJ1ZSBpZiBwb3MgaXMgaW5zaWRlIHRoZSBhcmMgb3IgZmFsc2Ugb3RoZXJ3aXNlCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICAoZW5kIGNvZGUpCi0gIAotICAqLwotICBIeXBlcnRyZWUuUGxvdC5FZGdlVHlwZXMgPSBuZXcgQ2xhc3MoewotICAgICdub25lJzogJC5lbXB0eSwKLSAgICAnbGluZSc6IHsKLSAgICAgICdyZW5kZXInOiBmdW5jdGlvbihhZGosIGNhbnZhcykgewotICAgICAgICB2YXIgZnJvbSA9IGFkai5ub2RlRnJvbS5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICB0byA9IGFkai5ub2RlVG8ucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgciA9IGFkai5ub2RlRnJvbS5zY2FsZTsKLSAgICAgICAgICB0aGlzLmVkZ2VIZWxwZXIubGluZS5yZW5kZXIoe3g6ZnJvbS54KnIsIHk6ZnJvbS55KnJ9LCB7eDp0by54KnIsIHk6dG8ueSpyfSwgY2FudmFzKTsKLSAgICAgIH0sCi0gICAgICAnY29udGFpbnMnOiBmdW5jdGlvbihhZGosIHBvcykgewotICAgICAgICB2YXIgZnJvbSA9IGFkai5ub2RlRnJvbS5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIHRvID0gYWRqLm5vZGVUby5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIHIgPSBhZGoubm9kZUZyb20uc2NhbGU7Ci0gICAgICAgICAgICB0aGlzLmVkZ2VIZWxwZXIubGluZS5jb250YWlucyh7eDpmcm9tLngqciwgeTpmcm9tLnkqcn0sIHt4OnRvLngqciwgeTp0by55KnJ9LCBwb3MsIHRoaXMuZWRnZS5lcHNpbG9uKTsKLSAgICAgIH0KLSAgICB9LAotICAgICdhcnJvdyc6IHsKLSAgICAgICdyZW5kZXInOiBmdW5jdGlvbihhZGosIGNhbnZhcykgewotICAgICAgICB2YXIgZnJvbSA9IGFkai5ub2RlRnJvbS5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIHRvID0gYWRqLm5vZGVUby5wb3MuZ2V0Yyh0cnVlKSwKLSAgICAgICAgICAgIHIgPSBhZGoubm9kZUZyb20uc2NhbGUsCi0gICAgICAgICAgICBkaW0gPSBhZGouZ2V0RGF0YSgnZGltJyksCi0gICAgICAgICAgICBkaXJlY3Rpb24gPSBhZGouZGF0YS4kZGlyZWN0aW9uLAotICAgICAgICAgICAgaW52ID0gKGRpcmVjdGlvbiAmJiBkaXJlY3Rpb24ubGVuZ3RoPjEgJiYgZGlyZWN0aW9uWzBdICE9IGFkai5ub2RlRnJvbS5pZCk7Ci0gICAgICAgIHRoaXMuZWRnZUhlbHBlci5hcnJvdy5yZW5kZXIoe3g6ZnJvbS54KnIsIHk6ZnJvbS55KnJ9LCB7eDp0by54KnIsIHk6dG8ueSpyfSwgZGltLCBpbnYsIGNhbnZhcyk7Ci0gICAgICB9LAotICAgICAgJ2NvbnRhaW5zJzogZnVuY3Rpb24oYWRqLCBwb3MpIHsKLSAgICAgICAgdmFyIGZyb20gPSBhZGoubm9kZUZyb20ucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICB0byA9IGFkai5ub2RlVG8ucG9zLmdldGModHJ1ZSksCi0gICAgICAgICAgICByID0gYWRqLm5vZGVGcm9tLnNjYWxlOwotICAgICAgICB0aGlzLmVkZ2VIZWxwZXIuYXJyb3cuY29udGFpbnMoe3g6ZnJvbS54KnIsIHk6ZnJvbS55KnJ9LCB7eDp0by54KnIsIHk6dG8ueSpyfSwgcG9zLCB0aGlzLmVkZ2UuZXBzaWxvbik7Ci0gICAgICB9Ci0gICAgfSwKLSAgICAnaHlwZXJsaW5lJzogewotICAgICAgJ3JlbmRlcic6IGZ1bmN0aW9uKGFkaiwgY2FudmFzKSB7Ci0gICAgICAgIHZhciBmcm9tID0gYWRqLm5vZGVGcm9tLnBvcy5nZXRjKCksCi0gICAgICAgICAgICB0byA9IGFkai5ub2RlVG8ucG9zLmdldGMoKSwKLSAgICAgICAgICAgIGRpbSA9IHRoaXMudml6LmdldFJhZGl1cygpOwotICAgICAgICB0aGlzLmVkZ2VIZWxwZXIuaHlwZXJsaW5lLnJlbmRlcihmcm9tLCB0bywgZGltLCBjYW52YXMpOwotICAgICAgfSwKLSAgICAgICdjb250YWlucyc6ICQubGFtYmRhKGZhbHNlKQotICAgIH0KLSAgfSk7Ci0KLX0pKCRqaXQuSHlwZXJ0cmVlKTsKLQotCi0KLQotIH0pKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvanMvdGhpcmRwYXJ0eS9qcXVlcnktMS45LjEuanMgYi9jbGkvc2RuY29uL3VpL3N0YXRpYy9qcy90aGlyZHBhcnR5L2pxdWVyeS0xLjkuMS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTJjMjAzZi4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9qcy90aGlyZHBhcnR5L2pxdWVyeS0xLjkuMS5qcworKysgL2Rldi9udWxsCkBAIC0xLDk1OTcgKzAsMCBAQAotLyohCi0gKiBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYxLjkuMQotICogaHR0cDovL2pxdWVyeS5jb20vCi0gKgotICogSW5jbHVkZXMgU2l6emxlLmpzCi0gKiBodHRwOi8vc2l6emxlanMuY29tLwotICoKLSAqIENvcHlyaWdodCAyMDA1LCAyMDEyIGpRdWVyeSBGb3VuZGF0aW9uLCBJbmMuIGFuZCBvdGhlciBjb250cmlidXRvcnMKLSAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQotICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIERhdGU6IDIwMTMtMi00Ci0gKi8KLShmdW5jdGlvbiggd2luZG93LCB1bmRlZmluZWQgKSB7Ci0KLS8vIENhbid0IGRvIHRoaXMgYmVjYXVzZSBzZXZlcmFsIGFwcHMgaW5jbHVkaW5nIEFTUC5ORVQgdHJhY2UKLS8vIHRoZSBzdGFjayB2aWEgYXJndW1lbnRzLmNhbGxlci5jYWxsZWUgYW5kIEZpcmVmb3ggZGllcyBpZgotLy8geW91IHRyeSB0byB0cmFjZSB0aHJvdWdoICJ1c2Ugc3RyaWN0IiBjYWxsIGNoYWlucy4gKCMxMzMzNSkKLS8vIFN1cHBvcnQ6IEZpcmVmb3ggMTgrCi0vLyJ1c2Ugc3RyaWN0IjsKLXZhcgotCS8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeQotCXJlYWR5TGlzdCwKLQotCS8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50KQotCXJvb3RqUXVlcnksCi0KLQkvLyBTdXBwb3J0OiBJRTw5Ci0JLy8gRm9yIGB0eXBlb2Ygbm9kZS5tZXRob2RgIGluc3RlYWQgb2YgYG5vZGUubWV0aG9kICE9PSB1bmRlZmluZWRgCi0JY29yZV9zdHJ1bmRlZmluZWQgPSB0eXBlb2YgdW5kZWZpbmVkLAotCi0JLy8gVXNlIHRoZSBjb3JyZWN0IGRvY3VtZW50IGFjY29yZGluZ2x5IHdpdGggd2luZG93IGFyZ3VtZW50IChzYW5kYm94KQotCWRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50LAotCWxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLAotCi0JLy8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCi0JX2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksCi0KLQkvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZQotCV8kID0gd2luZG93LiQsCi0KLQkvLyBbW0NsYXNzXV0gLT4gdHlwZSBwYWlycwotCWNsYXNzMnR5cGUgPSB7fSwKLQotCS8vIExpc3Qgb2YgZGVsZXRlZCBkYXRhIGNhY2hlIGlkcywgc28gd2UgY2FuIHJldXNlIHRoZW0KLQljb3JlX2RlbGV0ZWRJZHMgPSBbXSwKLQotCWNvcmVfdmVyc2lvbiA9ICIxLjkuMSIsCi0KLQkvLyBTYXZlIGEgcmVmZXJlbmNlIHRvIHNvbWUgY29yZSBtZXRob2RzCi0JY29yZV9jb25jYXQgPSBjb3JlX2RlbGV0ZWRJZHMuY29uY2F0LAotCWNvcmVfcHVzaCA9IGNvcmVfZGVsZXRlZElkcy5wdXNoLAotCWNvcmVfc2xpY2UgPSBjb3JlX2RlbGV0ZWRJZHMuc2xpY2UsCi0JY29yZV9pbmRleE9mID0gY29yZV9kZWxldGVkSWRzLmluZGV4T2YsCi0JY29yZV90b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmcsCi0JY29yZV9oYXNPd24gPSBjbGFzczJ0eXBlLmhhc093blByb3BlcnR5LAotCWNvcmVfdHJpbSA9IGNvcmVfdmVyc2lvbi50cmltLAotCi0JLy8gRGVmaW5lIGEgbG9jYWwgY29weSBvZiBqUXVlcnkKLQlqUXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7Ci0JCS8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJwotCQlyZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCwgcm9vdGpRdWVyeSApOwotCX0sCi0KLQkvLyBVc2VkIGZvciBtYXRjaGluZyBudW1iZXJzCi0JY29yZV9wbnVtID0gL1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsCi0KLQkvLyBVc2VkIGZvciBzcGxpdHRpbmcgb24gd2hpdGVzcGFjZQotCWNvcmVfcm5vdHdoaXRlID0gL1xTKy9nLAotCi0JLy8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQIChoZXJlJ3MgbG9va2luZyBhdCB5b3UsIFNhZmFyaSA1LjAgYW5kIElFKQotCXJ0cmltID0gL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLAotCi0JLy8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3MKLQkvLyBQcmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRvIGF2b2lkIFhTUyB2aWEgbG9jYXRpb24uaGFzaCAoIzk1MjEpCi0JLy8gU3RyaWN0IEhUTUwgcmVjb2duaXRpb24gKCMxMTI5MDogbXVzdCBzdGFydCB3aXRoIDwpCi0JcnF1aWNrRXhwciA9IC9eKD86KDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKikpJC8sCi0KLQkvLyBNYXRjaCBhIHN0YW5kYWxvbmUgdGFnCi0JcnNpbmdsZVRhZyA9IC9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sCi0KLQkvLyBKU09OIFJlZ0V4cAotCXJ2YWxpZGNoYXJzID0gL15bXF0sOnt9XHNdKiQvLAotCXJ2YWxpZGJyYWNlcyA9IC8oPzpefDp8LCkoPzpccypcWykrL2csCi0JcnZhbGlkZXNjYXBlID0gL1xcKD86WyJcXFwvYmZucnRdfHVbXGRhLWZBLUZdezR9KS9nLAotCXJ2YWxpZHRva2VucyA9IC8iW14iXFxcclxuXSoifHRydWV8ZmFsc2V8bnVsbHwtPyg/OlxkK1wufClcZCsoPzpbZUVdWystXT9cZCt8KS9nLAotCi0JLy8gTWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6aW5nCi0Jcm1zUHJlZml4ID0gL14tbXMtLywKLQlyZGFzaEFscGhhID0gLy0oW1xkYS16XSkvZ2ksCi0KLQkvLyBVc2VkIGJ5IGpRdWVyeS5jYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpCi0JZmNhbWVsQ2FzZSA9IGZ1bmN0aW9uKCBhbGwsIGxldHRlciApIHsKLQkJcmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpOwotCX0sCi0KLQkvLyBUaGUgcmVhZHkgZXZlbnQgaGFuZGxlcgotCWNvbXBsZXRlZCA9IGZ1bmN0aW9uKCBldmVudCApIHsKLQotCQkvLyByZWFkeVN0YXRlID09PSAiY29tcGxldGUiIGlzIGdvb2QgZW5vdWdoIGZvciB1cyB0byBjYWxsIHRoZSBkb20gcmVhZHkgaW4gb2xkSUUKLQkJaWYgKCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyIHx8IGV2ZW50LnR5cGUgPT09ICJsb2FkIiB8fCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiICkgewotCQkJZGV0YWNoKCk7Ci0JCQlqUXVlcnkucmVhZHkoKTsKLQkJfQotCX0sCi0JLy8gQ2xlYW4tdXAgbWV0aG9kIGZvciBkb20gcmVhZHkgZXZlbnRzCi0JZGV0YWNoID0gZnVuY3Rpb24oKSB7Ci0JCWlmICggZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciApIHsKLQkJCWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJET01Db250ZW50TG9hZGVkIiwgY29tcGxldGVkLCBmYWxzZSApOwotCQkJd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29tcGxldGVkLCBmYWxzZSApOwotCi0JCX0gZWxzZSB7Ci0JCQlkb2N1bWVudC5kZXRhY2hFdmVudCggIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGNvbXBsZXRlZCApOwotCQkJd2luZG93LmRldGFjaEV2ZW50KCAib25sb2FkIiwgY29tcGxldGVkICk7Ci0JCX0KLQl9OwotCi1qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0gewotCS8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWQKLQlqcXVlcnk6IGNvcmVfdmVyc2lvbiwKLQotCWNvbnN0cnVjdG9yOiBqUXVlcnksCi0JaW5pdDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByb290alF1ZXJ5ICkgewotCQl2YXIgbWF0Y2gsIGVsZW07Ci0KLQkJLy8gSEFORExFOiAkKCIiKSwgJChudWxsKSwgJCh1bmRlZmluZWQpLCAkKGZhbHNlKQotCQlpZiAoICFzZWxlY3RvciApIHsKLQkJCXJldHVybiB0aGlzOwotCQl9Ci0KLQkJLy8gSGFuZGxlIEhUTUwgc3RyaW5ncwotCQlpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7Ci0JCQlpZiAoIHNlbGVjdG9yLmNoYXJBdCgwKSA9PT0gIjwiICYmIHNlbGVjdG9yLmNoYXJBdCggc2VsZWN0b3IubGVuZ3RoIC0gMSApID09PSAiPiIgJiYgc2VsZWN0b3IubGVuZ3RoID49IDMgKSB7Ci0JCQkJLy8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2sKLQkJCQltYXRjaCA9IFsgbnVsbCwgc2VsZWN0b3IsIG51bGwgXTsKLQotCQkJfSBlbHNlIHsKLQkJCQltYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKTsKLQkJCX0KLQotCQkJLy8gTWF0Y2ggaHRtbCBvciBtYWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQgZm9yICNpZAotCQkJaWYgKCBtYXRjaCAmJiAobWF0Y2hbMV0gfHwgIWNvbnRleHQpICkgewotCi0JCQkJLy8gSEFORExFOiAkKGh0bWwpIC0+ICQoYXJyYXkpCi0JCQkJaWYgKCBtYXRjaFsxXSApIHsKLQkJCQkJY29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WzBdIDogY29udGV4dDsKLQotCQkJCQkvLyBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0Ci0JCQkJCWpRdWVyeS5tZXJnZSggdGhpcywgalF1ZXJ5LnBhcnNlSFRNTCgKLQkJCQkJCW1hdGNoWzFdLAotCQkJCQkJY29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCwKLQkJCQkJCXRydWUKLQkJCQkJKSApOwotCi0JCQkJCS8vIEhBTkRMRTogJChodG1sLCBwcm9wcykKLQkJCQkJaWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWzFdICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHsKLQkJCQkJCWZvciAoIG1hdGNoIGluIGNvbnRleHQgKSB7Ci0JCQkJCQkJLy8gUHJvcGVydGllcyBvZiBjb250ZXh0IGFyZSBjYWxsZWQgYXMgbWV0aG9kcyBpZiBwb3NzaWJsZQotCQkJCQkJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHRoaXNbIG1hdGNoIF0gKSApIHsKLQkJCQkJCQkJdGhpc1sgbWF0Y2ggXSggY29udGV4dFsgbWF0Y2ggXSApOwotCi0JCQkJCQkJLy8gLi4uYW5kIG90aGVyd2lzZSBzZXQgYXMgYXR0cmlidXRlcwotCQkJCQkJCX0gZWxzZSB7Ci0JCQkJCQkJCXRoaXMuYXR0ciggbWF0Y2gsIGNvbnRleHRbIG1hdGNoIF0gKTsKLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCX0KLQotCQkJCQlyZXR1cm4gdGhpczsKLQotCQkJCS8vIEhBTkRMRTogJCgjaWQpCi0JCQkJfSBlbHNlIHsKLQkJCQkJZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsyXSApOwotCi0JCQkJCS8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1cm5zCi0JCQkJCS8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgIzY5NjMKLQkJCQkJaWYgKCBlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSApIHsKLQkJCQkJCS8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBJRSBhbmQgT3BlcmEgcmV0dXJuIGl0ZW1zCi0JCQkJCQkvLyBieSBuYW1lIGluc3RlYWQgb2YgSUQKLQkJCQkJCWlmICggZWxlbS5pZCAhPT0gbWF0Y2hbMl0gKSB7Ci0JCQkJCQkJcmV0dXJuIHJvb3RqUXVlcnkuZmluZCggc2VsZWN0b3IgKTsKLQkJCQkJCX0KLQotCQkJCQkJLy8gT3RoZXJ3aXNlLCB3ZSBpbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdAotCQkJCQkJdGhpcy5sZW5ndGggPSAxOwotCQkJCQkJdGhpc1swXSA9IGVsZW07Ci0JCQkJCX0KLQotCQkJCQl0aGlzLmNvbnRleHQgPSBkb2N1bWVudDsKLQkJCQkJdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yOwotCQkJCQlyZXR1cm4gdGhpczsKLQkJCQl9Ci0KLQkJCS8vIEhBTkRMRTogJChleHByLCAkKC4uLikpCi0JCQl9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHsKLQkJCQlyZXR1cm4gKCBjb250ZXh0IHx8IHJvb3RqUXVlcnkgKS5maW5kKCBzZWxlY3RvciApOwotCi0JCQkvLyBIQU5ETEU6ICQoZXhwciwgY29udGV4dCkKLQkJCS8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGV4dCkuZmluZChleHByKQotCQkJfSBlbHNlIHsKLQkJCQlyZXR1cm4gdGhpcy5jb25zdHJ1Y3RvciggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yICk7Ci0JCQl9Ci0KLQkJLy8gSEFORExFOiAkKERPTUVsZW1lbnQpCi0JCX0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkgewotCQkJdGhpcy5jb250ZXh0ID0gdGhpc1swXSA9IHNlbGVjdG9yOwotCQkJdGhpcy5sZW5ndGggPSAxOwotCQkJcmV0dXJuIHRoaXM7Ci0KLQkJLy8gSEFORExFOiAkKGZ1bmN0aW9uKQotCQkvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHkKLQkJfSBlbHNlIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHNlbGVjdG9yICkgKSB7Ci0JCQlyZXR1cm4gcm9vdGpRdWVyeS5yZWFkeSggc2VsZWN0b3IgKTsKLQkJfQotCi0JCWlmICggc2VsZWN0b3Iuc2VsZWN0b3IgIT09IHVuZGVmaW5lZCApIHsKLQkJCXRoaXMuc2VsZWN0b3IgPSBzZWxlY3Rvci5zZWxlY3RvcjsKLQkJCXRoaXMuY29udGV4dCA9IHNlbGVjdG9yLmNvbnRleHQ7Ci0JCX0KLQotCQlyZXR1cm4galF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IsIHRoaXMgKTsKLQl9LAotCi0JLy8gU3RhcnQgd2l0aCBhbiBlbXB0eSBzZWxlY3RvcgotCXNlbGVjdG9yOiAiIiwKLQotCS8vIFRoZSBkZWZhdWx0IGxlbmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMAotCWxlbmd0aDogMCwKLQotCS8vIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29udGFpbmVkIGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0Ci0Jc2l6ZTogZnVuY3Rpb24oKSB7Ci0JCXJldHVybiB0aGlzLmxlbmd0aDsKLQl9LAotCi0JdG9BcnJheTogZnVuY3Rpb24oKSB7Ci0JCXJldHVybiBjb3JlX3NsaWNlLmNhbGwoIHRoaXMgKTsKLQl9LAotCi0JLy8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUgotCS8vIEdldCB0aGUgd2hvbGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5Ci0JZ2V0OiBmdW5jdGlvbiggbnVtICkgewotCQlyZXR1cm4gbnVtID09IG51bGwgPwotCi0JCQkvLyBSZXR1cm4gYSAnY2xlYW4nIGFycmF5Ci0JCQl0aGlzLnRvQXJyYXkoKSA6Ci0KLQkJCS8vIFJldHVybiBqdXN0IHRoZSBvYmplY3QKLQkJCSggbnVtIDwgMCA/IHRoaXNbIHRoaXMubGVuZ3RoICsgbnVtIF0gOiB0aGlzWyBudW0gXSApOwotCX0sCi0KLQkvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrCi0JLy8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpCi0JcHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7Ci0KLQkJLy8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXQKLQkJdmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApOwotCi0JCS8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpCi0JCXJldC5wcmV2T2JqZWN0ID0gdGhpczsKLQkJcmV0LmNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Ci0KLQkJLy8gUmV0dXJuIHRoZSBuZXdseS1mb3JtZWQgZWxlbWVudCBzZXQKLQkJcmV0dXJuIHJldDsKLQl9LAotCi0JLy8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC4KLQkvLyAoWW91IGNhbiBzZWVkIHRoZSBhcmd1bWVudHMgd2l0aCBhbiBhcnJheSBvZiBhcmdzLCBidXQgdGhpcyBpcwotCS8vIG9ubHkgdXNlZCBpbnRlcm5hbGx5LikKLQllYWNoOiBmdW5jdGlvbiggY2FsbGJhY2ssIGFyZ3MgKSB7Ci0JCXJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2ssIGFyZ3MgKTsKLQl9LAotCi0JcmVhZHk6IGZ1bmN0aW9uKCBmbiApIHsKLQkJLy8gQWRkIHRoZSBjYWxsYmFjawotCQlqUXVlcnkucmVhZHkucHJvbWlzZSgpLmRvbmUoIGZuICk7Ci0KLQkJcmV0dXJuIHRoaXM7Ci0JfSwKLQotCXNsaWNlOiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBjb3JlX3NsaWNlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSApOwotCX0sCi0KLQlmaXJzdDogZnVuY3Rpb24oKSB7Ci0JCXJldHVybiB0aGlzLmVxKCAwICk7Ci0JfSwKLQotCWxhc3Q6IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gdGhpcy5lcSggLTEgKTsKLQl9LAotCi0JZXE6IGZ1bmN0aW9uKCBpICkgewotCQl2YXIgbGVuID0gdGhpcy5sZW5ndGgsCi0JCQlqID0gK2kgKyAoIGkgPCAwID8gbGVuIDogMCApOwotCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzW2pdIF0gOiBbXSApOwotCX0sCi0KLQltYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHsKLQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgewotCQkJcmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTsKLQkJfSkpOwotCX0sCi0KLQllbmQ6IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IobnVsbCk7Ci0JfSwKLQotCS8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KLQkvLyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC4KLQlwdXNoOiBjb3JlX3B1c2gsCi0Jc29ydDogW10uc29ydCwKLQlzcGxpY2U6IFtdLnNwbGljZQotfTsKLQotLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvbgotalF1ZXJ5LmZuLmluaXQucHJvdG90eXBlID0galF1ZXJ5LmZuOwotCi1qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgewotCXZhciBzcmMsIGNvcHlJc0FycmF5LCBjb3B5LCBuYW1lLCBvcHRpb25zLCBjbG9uZSwKLQkJdGFyZ2V0ID0gYXJndW1lbnRzWzBdIHx8IHt9LAotCQlpID0gMSwKLQkJbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwKLQkJZGVlcCA9IGZhbHNlOwotCi0JLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvbgotCWlmICggdHlwZW9mIHRhcmdldCA9PT0gImJvb2xlYW4iICkgewotCQlkZWVwID0gdGFyZ2V0OwotCQl0YXJnZXQgPSBhcmd1bWVudHNbMV0gfHwge307Ci0JCS8vIHNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXQKLQkJaSA9IDI7Ci0JfQotCi0JLy8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpCi0JaWYgKCB0eXBlb2YgdGFyZ2V0ICE9PSAib2JqZWN0IiAmJiAhalF1ZXJ5LmlzRnVuY3Rpb24odGFyZ2V0KSApIHsKLQkJdGFyZ2V0ID0ge307Ci0JfQotCi0JLy8gZXh0ZW5kIGpRdWVyeSBpdHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkCi0JaWYgKCBsZW5ndGggPT09IGkgKSB7Ci0JCXRhcmdldCA9IHRoaXM7Ci0JCS0taTsKLQl9Ci0KLQlmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLQkJLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcwotCQlpZiAoIChvcHRpb25zID0gYXJndW1lbnRzWyBpIF0pICE9IG51bGwgKSB7Ci0JCQkvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0Ci0JCQlmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7Ci0JCQkJc3JjID0gdGFyZ2V0WyBuYW1lIF07Ci0JCQkJY29weSA9IG9wdGlvbnNbIG5hbWUgXTsKLQotCQkJCS8vIFByZXZlbnQgbmV2ZXItZW5kaW5nIGxvb3AKLQkJCQlpZiAoIHRhcmdldCA9PT0gY29weSApIHsKLQkJCQkJY29udGludWU7Ci0JCQkJfQotCi0JCQkJLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzCi0JCQkJaWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVjdChjb3B5KSB8fCAoY29weUlzQXJyYXkgPSBqUXVlcnkuaXNBcnJheShjb3B5KSkgKSApIHsKLQkJCQkJaWYgKCBjb3B5SXNBcnJheSApIHsKLQkJCQkJCWNvcHlJc0FycmF5ID0gZmFsc2U7Ci0JCQkJCQljbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNBcnJheShzcmMpID8gc3JjIDogW107Ci0KLQkJCQkJfSBlbHNlIHsKLQkJCQkJCWNsb25lID0gc3JjICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KHNyYykgPyBzcmMgOiB7fTsKLQkJCQkJfQotCi0JCQkJCS8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbQotCQkJCQl0YXJnZXRbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAsIGNsb25lLCBjb3B5ICk7Ci0KLQkJCQkvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzCi0JCQkJfSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkgewotCQkJCQl0YXJnZXRbIG5hbWUgXSA9IGNvcHk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3QKLQlyZXR1cm4gdGFyZ2V0OwotfTsKLQotalF1ZXJ5LmV4dGVuZCh7Ci0Jbm9Db25mbGljdDogZnVuY3Rpb24oIGRlZXAgKSB7Ci0JCWlmICggd2luZG93LiQgPT09IGpRdWVyeSApIHsKLQkJCXdpbmRvdy4kID0gXyQ7Ci0JCX0KLQotCQlpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkgewotCQkJd2luZG93LmpRdWVyeSA9IF9qUXVlcnk7Ci0JCX0KLQotCQlyZXR1cm4galF1ZXJ5OwotCX0sCi0KLQkvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLgotCWlzUmVhZHk6IGZhbHNlLAotCi0JLy8gQSBjb3VudGVyIHRvIHRyYWNrIGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQgZm9yIGJlZm9yZQotCS8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxCi0JcmVhZHlXYWl0OiAxLAotCi0JLy8gSG9sZCAob3IgcmVsZWFzZSkgdGhlIHJlYWR5IGV2ZW50Ci0JaG9sZFJlYWR5OiBmdW5jdGlvbiggaG9sZCApIHsKLQkJaWYgKCBob2xkICkgewotCQkJalF1ZXJ5LnJlYWR5V2FpdCsrOwotCQl9IGVsc2UgewotCQkJalF1ZXJ5LnJlYWR5KCB0cnVlICk7Ci0JCX0KLQl9LAotCi0JLy8gSGFuZGxlIHdoZW4gdGhlIERPTSBpcyByZWFkeQotCXJlYWR5OiBmdW5jdGlvbiggd2FpdCApIHsKLQotCQkvLyBBYm9ydCBpZiB0aGVyZSBhcmUgcGVuZGluZyBob2xkcyBvciB3ZSdyZSBhbHJlYWR5IHJlYWR5Ci0JCWlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkgewotCQkJcmV0dXJuOwotCQl9Ci0KLQkJLy8gTWFrZSBzdXJlIGJvZHkgZXhpc3RzLCBhdCBsZWFzdCwgaW4gY2FzZSBJRSBnZXRzIGEgbGl0dGxlIG92ZXJ6ZWFsb3VzICh0aWNrZXQgIzU0NDMpLgotCQlpZiAoICFkb2N1bWVudC5ib2R5ICkgewotCQkJcmV0dXJuIHNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApOwotCQl9Ci0KLQkJLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5Ci0JCWpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTsKLQotCQkvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZQotCQlpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHsKLQkJCXJldHVybjsKLQkJfQotCi0JCS8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGUKLQkJcmVhZHlMaXN0LnJlc29sdmVXaXRoKCBkb2N1bWVudCwgWyBqUXVlcnkgXSApOwotCi0JCS8vIFRyaWdnZXIgYW55IGJvdW5kIHJlYWR5IGV2ZW50cwotCQlpZiAoIGpRdWVyeS5mbi50cmlnZ2VyICkgewotCQkJalF1ZXJ5KCBkb2N1bWVudCApLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIpOwotCQl9Ci0JfSwKLQotCS8vIFNlZSB0ZXN0L3VuaXQvY29yZS5qcyBmb3IgZGV0YWlscyBjb25jZXJuaW5nIGlzRnVuY3Rpb24uCi0JLy8gU2luY2UgdmVyc2lvbiAxLjMsIERPTSBtZXRob2RzIGFuZCBmdW5jdGlvbnMgbGlrZSBhbGVydAotCS8vIGFyZW4ndCBzdXBwb3J0ZWQuIFRoZXkgcmV0dXJuIGZhbHNlIG9uIElFICgjMjk2OCkuCi0JaXNGdW5jdGlvbjogZnVuY3Rpb24oIG9iaiApIHsKLQkJcmV0dXJuIGpRdWVyeS50eXBlKG9iaikgPT09ICJmdW5jdGlvbiI7Ci0JfSwKLQotCWlzQXJyYXk6IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24oIG9iaiApIHsKLQkJcmV0dXJuIGpRdWVyeS50eXBlKG9iaikgPT09ICJhcnJheSI7Ci0JfSwKLQotCWlzV2luZG93OiBmdW5jdGlvbiggb2JqICkgewotCQlyZXR1cm4gb2JqICE9IG51bGwgJiYgb2JqID09IG9iai53aW5kb3c7Ci0JfSwKLQotCWlzTnVtZXJpYzogZnVuY3Rpb24oIG9iaiApIHsKLQkJcmV0dXJuICFpc05hTiggcGFyc2VGbG9hdChvYmopICkgJiYgaXNGaW5pdGUoIG9iaiApOwotCX0sCi0KLQl0eXBlOiBmdW5jdGlvbiggb2JqICkgewotCQlpZiAoIG9iaiA9PSBudWxsICkgewotCQkJcmV0dXJuIFN0cmluZyggb2JqICk7Ci0JCX0KLQkJcmV0dXJuIHR5cGVvZiBvYmogPT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmogPT09ICJmdW5jdGlvbiIgPwotCQkJY2xhc3MydHlwZVsgY29yZV90b1N0cmluZy5jYWxsKG9iaikgXSB8fCAib2JqZWN0IiA6Ci0JCQl0eXBlb2Ygb2JqOwotCX0sCi0KLQlpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkgewotCQkvLyBNdXN0IGJlIGFuIE9iamVjdC4KLQkJLy8gQmVjYXVzZSBvZiBJRSwgd2UgYWxzbyBoYXZlIHRvIGNoZWNrIHRoZSBwcmVzZW5jZSBvZiB0aGUgY29uc3RydWN0b3IgcHJvcGVydHkuCi0JCS8vIE1ha2Ugc3VyZSB0aGF0IERPTSBub2RlcyBhbmQgd2luZG93IG9iamVjdHMgZG9uJ3QgcGFzcyB0aHJvdWdoLCBhcyB3ZWxsCi0JCWlmICggIW9iaiB8fCBqUXVlcnkudHlwZShvYmopICE9PSAib2JqZWN0IiB8fCBvYmoubm9kZVR5cGUgfHwgalF1ZXJ5LmlzV2luZG93KCBvYmogKSApIHsKLQkJCXJldHVybiBmYWxzZTsKLQkJfQotCi0JCXRyeSB7Ci0JCQkvLyBOb3Qgb3duIGNvbnN0cnVjdG9yIHByb3BlcnR5IG11c3QgYmUgT2JqZWN0Ci0JCQlpZiAoIG9iai5jb25zdHJ1Y3RvciAmJgotCQkJCSFjb3JlX2hhc093bi5jYWxsKG9iaiwgImNvbnN0cnVjdG9yIikgJiYKLQkJCQkhY29yZV9oYXNPd24uY2FsbChvYmouY29uc3RydWN0b3IucHJvdG90eXBlLCAiaXNQcm90b3R5cGVPZiIpICkgewotCQkJCXJldHVybiBmYWxzZTsKLQkJCX0KLQkJfSBjYXRjaCAoIGUgKSB7Ci0JCQkvLyBJRTgsOSBXaWxsIHRocm93IGV4Y2VwdGlvbnMgb24gY2VydGFpbiBob3N0IG9iamVjdHMgIzk4OTcKLQkJCXJldHVybiBmYWxzZTsKLQkJfQotCi0JCS8vIE93biBwcm9wZXJ0aWVzIGFyZSBlbnVtZXJhdGVkIGZpcnN0bHksIHNvIHRvIHNwZWVkIHVwLAotCQkvLyBpZiBsYXN0IG9uZSBpcyBvd24sIHRoZW4gYWxsIHByb3BlcnRpZXMgYXJlIG93bi4KLQotCQl2YXIga2V5OwotCQlmb3IgKCBrZXkgaW4gb2JqICkge30KLQotCQlyZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgfHwgY29yZV9oYXNPd24uY2FsbCggb2JqLCBrZXkgKTsKLQl9LAotCi0JaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKLQkJdmFyIG5hbWU7Ci0JCWZvciAoIG5hbWUgaW4gb2JqICkgewotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0JCXJldHVybiB0cnVlOwotCX0sCi0KLQllcnJvcjogZnVuY3Rpb24oIG1zZyApIHsKLQkJdGhyb3cgbmV3IEVycm9yKCBtc2cgKTsKLQl9LAotCi0JLy8gZGF0YTogc3RyaW5nIG9mIGh0bWwKLQkvLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhlIGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsIGRlZmF1bHRzIHRvIGRvY3VtZW50Ci0JLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZwotCXBhcnNlSFRNTDogZnVuY3Rpb24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkgewotCQlpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAic3RyaW5nIiApIHsKLQkJCXJldHVybiBudWxsOwotCQl9Ci0JCWlmICggdHlwZW9mIGNvbnRleHQgPT09ICJib29sZWFuIiApIHsKLQkJCWtlZXBTY3JpcHRzID0gY29udGV4dDsKLQkJCWNvbnRleHQgPSBmYWxzZTsKLQkJfQotCQljb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsKLQotCQl2YXIgcGFyc2VkID0gcnNpbmdsZVRhZy5leGVjKCBkYXRhICksCi0JCQlzY3JpcHRzID0gIWtlZXBTY3JpcHRzICYmIFtdOwotCi0JCS8vIFNpbmdsZSB0YWcKLQkJaWYgKCBwYXJzZWQgKSB7Ci0JCQlyZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsxXSApIF07Ci0JCX0KLQotCQlwYXJzZWQgPSBqUXVlcnkuYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTsKLQkJaWYgKCBzY3JpcHRzICkgewotCQkJalF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7Ci0JCX0KLQkJcmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIHBhcnNlZC5jaGlsZE5vZGVzICk7Ci0JfSwKLQotCXBhcnNlSlNPTjogZnVuY3Rpb24oIGRhdGEgKSB7Ci0JCS8vIEF0dGVtcHQgdG8gcGFyc2UgdXNpbmcgdGhlIG5hdGl2ZSBKU09OIHBhcnNlciBmaXJzdAotCQlpZiAoIHdpbmRvdy5KU09OICYmIHdpbmRvdy5KU09OLnBhcnNlICkgewotCQkJcmV0dXJuIHdpbmRvdy5KU09OLnBhcnNlKCBkYXRhICk7Ci0JCX0KLQotCQlpZiAoIGRhdGEgPT09IG51bGwgKSB7Ci0JCQlyZXR1cm4gZGF0YTsKLQkJfQotCi0JCWlmICggdHlwZW9mIGRhdGEgPT09ICJzdHJpbmciICkgewotCi0JCQkvLyBNYWtlIHN1cmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGlzIHJlbW92ZWQgKElFIGNhbid0IGhhbmRsZSBpdCkKLQkJCWRhdGEgPSBqUXVlcnkudHJpbSggZGF0YSApOwotCi0JCQlpZiAoIGRhdGEgKSB7Ci0JCQkJLy8gTWFrZSBzdXJlIHRoZSBpbmNvbWluZyBkYXRhIGlzIGFjdHVhbCBKU09OCi0JCQkJLy8gTG9naWMgYm9ycm93ZWQgZnJvbSBodHRwOi8vanNvbi5vcmcvanNvbjIuanMKLQkJCQlpZiAoIHJ2YWxpZGNoYXJzLnRlc3QoIGRhdGEucmVwbGFjZSggcnZhbGlkZXNjYXBlLCAiQCIgKQotCQkJCQkucmVwbGFjZSggcnZhbGlkdG9rZW5zLCAiXSIgKQotCQkJCQkucmVwbGFjZSggcnZhbGlkYnJhY2VzLCAiIikpICkgewotCi0JCQkJCXJldHVybiAoIG5ldyBGdW5jdGlvbiggInJldHVybiAiICsgZGF0YSApICkoKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlqUXVlcnkuZXJyb3IoICJJbnZhbGlkIEpTT046ICIgKyBkYXRhICk7Ci0JfSwKLQotCS8vIENyb3NzLWJyb3dzZXIgeG1sIHBhcnNpbmcKLQlwYXJzZVhNTDogZnVuY3Rpb24oIGRhdGEgKSB7Ci0JCXZhciB4bWwsIHRtcDsKLQkJaWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgKSB7Ci0JCQlyZXR1cm4gbnVsbDsKLQkJfQotCQl0cnkgewotCQkJaWYgKCB3aW5kb3cuRE9NUGFyc2VyICkgeyAvLyBTdGFuZGFyZAotCQkJCXRtcCA9IG5ldyBET01QYXJzZXIoKTsKLQkJCQl4bWwgPSB0bXAucGFyc2VGcm9tU3RyaW5nKCBkYXRhICwgInRleHQveG1sIiApOwotCQkJfSBlbHNlIHsgLy8gSUUKLQkJCQl4bWwgPSBuZXcgQWN0aXZlWE9iamVjdCggIk1pY3Jvc29mdC5YTUxET00iICk7Ci0JCQkJeG1sLmFzeW5jID0gImZhbHNlIjsKLQkJCQl4bWwubG9hZFhNTCggZGF0YSApOwotCQkJfQotCQl9IGNhdGNoKCBlICkgewotCQkJeG1sID0gdW5kZWZpbmVkOwotCQl9Ci0JCWlmICggIXhtbCB8fCAheG1sLmRvY3VtZW50RWxlbWVudCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoICJwYXJzZXJlcnJvciIgKS5sZW5ndGggKSB7Ci0JCQlqUXVlcnkuZXJyb3IoICJJbnZhbGlkIFhNTDogIiArIGRhdGEgKTsKLQkJfQotCQlyZXR1cm4geG1sOwotCX0sCi0KLQlub29wOiBmdW5jdGlvbigpIHt9LAotCi0JLy8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRleHQKLQkvLyBXb3JrYXJvdW5kcyBiYXNlZCBvbiBmaW5kaW5ncyBieSBKaW0gRHJpc2NvbGwKLQkvLyBodHRwOi8vd2VibG9ncy5qYXZhLm5ldC9ibG9nL2RyaXNjb2xsL2FyY2hpdmUvMjAwOS8wOS8wOC9ldmFsLWphdmFzY3JpcHQtZ2xvYmFsLWNvbnRleHQKLQlnbG9iYWxFdmFsOiBmdW5jdGlvbiggZGF0YSApIHsKLQkJaWYgKCBkYXRhICYmIGpRdWVyeS50cmltKCBkYXRhICkgKSB7Ci0JCQkvLyBXZSB1c2UgZXhlY1NjcmlwdCBvbiBJbnRlcm5ldCBFeHBsb3JlcgotCQkJLy8gV2UgdXNlIGFuIGFub255bW91cyBmdW5jdGlvbiBzbyB0aGF0IGNvbnRleHQgaXMgd2luZG93Ci0JCQkvLyByYXRoZXIgdGhhbiBqUXVlcnkgaW4gRmlyZWZveAotCQkJKCB3aW5kb3cuZXhlY1NjcmlwdCB8fCBmdW5jdGlvbiggZGF0YSApIHsKLQkJCQl3aW5kb3dbICJldmFsIiBdLmNhbGwoIHdpbmRvdywgZGF0YSApOwotCQkJfSApKCBkYXRhICk7Ci0JCX0KLQl9LAotCi0JLy8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlcwotCS8vIE1pY3Jvc29mdCBmb3Jnb3QgdG8gaHVtcCB0aGVpciB2ZW5kb3IgcHJlZml4ICgjOTU3MikKLQljYW1lbENhc2U6IGZ1bmN0aW9uKCBzdHJpbmcgKSB7Ci0JCXJldHVybiBzdHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCAibXMtIiApLnJlcGxhY2UoIHJkYXNoQWxwaGEsIGZjYW1lbENhc2UgKTsKLQl9LAotCi0Jbm9kZU5hbWU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgewotCQlyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTsKLQl9LAotCi0JLy8gYXJncyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQotCWVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrLCBhcmdzICkgewotCQl2YXIgdmFsdWUsCi0JCQlpID0gMCwKLQkJCWxlbmd0aCA9IG9iai5sZW5ndGgsCi0JCQlpc0FycmF5ID0gaXNBcnJheWxpa2UoIG9iaiApOwotCi0JCWlmICggYXJncyApIHsKLQkJCWlmICggaXNBcnJheSApIHsKLQkJCQlmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLQkJCQkJdmFsdWUgPSBjYWxsYmFjay5hcHBseSggb2JqWyBpIF0sIGFyZ3MgKTsKLQotCQkJCQlpZiAoIHZhbHVlID09PSBmYWxzZSApIHsKLQkJCQkJCWJyZWFrOwotCQkJCQl9Ci0JCQkJfQotCQkJfSBlbHNlIHsKLQkJCQlmb3IgKCBpIGluIG9iaiApIHsKLQkJCQkJdmFsdWUgPSBjYWxsYmFjay5hcHBseSggb2JqWyBpIF0sIGFyZ3MgKTsKLQotCQkJCQlpZiAoIHZhbHVlID09PSBmYWxzZSApIHsKLQkJCQkJCWJyZWFrOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCi0JCS8vIEEgc3BlY2lhbCwgZmFzdCwgY2FzZSBmb3IgdGhlIG1vc3QgY29tbW9uIHVzZSBvZiBlYWNoCi0JCX0gZWxzZSB7Ci0JCQlpZiAoIGlzQXJyYXkgKSB7Ci0JCQkJZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0JCQkJCXZhbHVlID0gY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICk7Ci0KLQkJCQkJaWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7Ci0JCQkJCQlicmVhazsKLQkJCQkJfQotCQkJCX0KLQkJCX0gZWxzZSB7Ci0JCQkJZm9yICggaSBpbiBvYmogKSB7Ci0JCQkJCXZhbHVlID0gY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICk7Ci0KLQkJCQkJaWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7Ci0JCQkJCQlicmVhazsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCi0JCXJldHVybiBvYmo7Ci0JfSwKLQotCS8vIFVzZSBuYXRpdmUgU3RyaW5nLnRyaW0gZnVuY3Rpb24gd2hlcmV2ZXIgcG9zc2libGUKLQl0cmltOiBjb3JlX3RyaW0gJiYgIWNvcmVfdHJpbS5jYWxsKCJcdUZFRkZceEEwIikgPwotCQlmdW5jdGlvbiggdGV4dCApIHsKLQkJCXJldHVybiB0ZXh0ID09IG51bGwgPwotCQkJCSIiIDoKLQkJCQljb3JlX3RyaW0uY2FsbCggdGV4dCApOwotCQl9IDoKLQotCQkvLyBPdGhlcndpc2UgdXNlIG91ciBvd24gdHJpbW1pbmcgZnVuY3Rpb25hbGl0eQotCQlmdW5jdGlvbiggdGV4dCApIHsKLQkJCXJldHVybiB0ZXh0ID09IG51bGwgPwotCQkJCSIiIDoKLQkJCQkoIHRleHQgKyAiIiApLnJlcGxhY2UoIHJ0cmltLCAiIiApOwotCQl9LAotCi0JLy8gcmVzdWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQotCW1ha2VBcnJheTogZnVuY3Rpb24oIGFyciwgcmVzdWx0cyApIHsKLQkJdmFyIHJldCA9IHJlc3VsdHMgfHwgW107Ci0KLQkJaWYgKCBhcnIgIT0gbnVsbCApIHsKLQkJCWlmICggaXNBcnJheWxpa2UoIE9iamVjdChhcnIpICkgKSB7Ci0JCQkJalF1ZXJ5Lm1lcmdlKCByZXQsCi0JCQkJCXR5cGVvZiBhcnIgPT09ICJzdHJpbmciID8KLQkJCQkJWyBhcnIgXSA6IGFycgotCQkJCSk7Ci0JCQl9IGVsc2UgewotCQkJCWNvcmVfcHVzaC5jYWxsKCByZXQsIGFyciApOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHJldDsKLQl9LAotCi0JaW5BcnJheTogZnVuY3Rpb24oIGVsZW0sIGFyciwgaSApIHsKLQkJdmFyIGxlbjsKLQotCQlpZiAoIGFyciApIHsKLQkJCWlmICggY29yZV9pbmRleE9mICkgewotCQkJCXJldHVybiBjb3JlX2luZGV4T2YuY2FsbCggYXJyLCBlbGVtLCBpICk7Ci0JCQl9Ci0KLQkJCWxlbiA9IGFyci5sZW5ndGg7Ci0JCQlpID0gaSA/IGkgPCAwID8gTWF0aC5tYXgoIDAsIGxlbiArIGkgKSA6IGkgOiAwOwotCi0JCQlmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKLQkJCQkvLyBTa2lwIGFjY2Vzc2luZyBpbiBzcGFyc2UgYXJyYXlzCi0JCQkJaWYgKCBpIGluIGFyciAmJiBhcnJbIGkgXSA9PT0gZWxlbSApIHsKLQkJCQkJcmV0dXJuIGk7Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIC0xOwotCX0sCi0KLQltZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7Ci0JCXZhciBsID0gc2Vjb25kLmxlbmd0aCwKLQkJCWkgPSBmaXJzdC5sZW5ndGgsCi0JCQlqID0gMDsKLQotCQlpZiAoIHR5cGVvZiBsID09PSAibnVtYmVyIiApIHsKLQkJCWZvciAoIDsgaiA8IGw7IGorKyApIHsKLQkJCQlmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCXdoaWxlICggc2Vjb25kW2pdICE9PSB1bmRlZmluZWQgKSB7Ci0JCQkJZmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqKysgXTsKLQkJCX0KLQkJfQotCi0JCWZpcnN0Lmxlbmd0aCA9IGk7Ci0KLQkJcmV0dXJuIGZpcnN0OwotCX0sCi0KLQlncmVwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBpbnYgKSB7Ci0JCXZhciByZXRWYWwsCi0JCQlyZXQgPSBbXSwKLQkJCWkgPSAwLAotCQkJbGVuZ3RoID0gZWxlbXMubGVuZ3RoOwotCQlpbnYgPSAhIWludjsKLQotCQkvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zCi0JCS8vIHRoYXQgcGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uCi0JCWZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgewotCQkJcmV0VmFsID0gISFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApOwotCQkJaWYgKCBpbnYgIT09IHJldFZhbCApIHsKLQkJCQlyZXQucHVzaCggZWxlbXNbIGkgXSApOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHJldDsKLQl9LAotCi0JLy8gYXJnIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5Ci0JbWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBhcmcgKSB7Ci0JCXZhciB2YWx1ZSwKLQkJCWkgPSAwLAotCQkJbGVuZ3RoID0gZWxlbXMubGVuZ3RoLAotCQkJaXNBcnJheSA9IGlzQXJyYXlsaWtlKCBlbGVtcyApLAotCQkJcmV0ID0gW107Ci0KLQkJLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyCi0JCWlmICggaXNBcnJheSApIHsKLQkJCWZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgewotCQkJCXZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApOwotCi0JCQkJaWYgKCB2YWx1ZSAhPSBudWxsICkgewotCQkJCQlyZXRbIHJldC5sZW5ndGggXSA9IHZhbHVlOwotCQkJCX0KLQkJCX0KLQotCQkvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2JqZWN0LAotCQl9IGVsc2UgewotCQkJZm9yICggaSBpbiBlbGVtcyApIHsKLQkJCQl2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTsKLQotCQkJCWlmICggdmFsdWUgIT0gbnVsbCApIHsKLQkJCQkJcmV0WyByZXQubGVuZ3RoIF0gPSB2YWx1ZTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQkvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzCi0JCXJldHVybiBjb3JlX2NvbmNhdC5hcHBseSggW10sIHJldCApOwotCX0sCi0KLQkvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9iamVjdHMKLQlndWlkOiAxLAotCi0JLy8gQmluZCBhIGZ1bmN0aW9uIHRvIGEgY29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55Ci0JLy8gYXJndW1lbnRzLgotCXByb3h5OiBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7Ci0JCXZhciBhcmdzLCBwcm94eSwgdG1wOwotCi0JCWlmICggdHlwZW9mIGNvbnRleHQgPT09ICJzdHJpbmciICkgewotCQkJdG1wID0gZm5bIGNvbnRleHQgXTsKLQkJCWNvbnRleHQgPSBmbjsKLQkJCWZuID0gdG1wOwotCQl9Ci0KLQkJLy8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWMKLQkJLy8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHVuZGVmaW5lZC4KLQkJaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZuICkgKSB7Ci0JCQlyZXR1cm4gdW5kZWZpbmVkOwotCQl9Ci0KLQkJLy8gU2ltdWxhdGVkIGJpbmQKLQkJYXJncyA9IGNvcmVfc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7Ci0JCXByb3h5ID0gZnVuY3Rpb24oKSB7Ci0JCQlyZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQgfHwgdGhpcywgYXJncy5jb25jYXQoIGNvcmVfc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSApOwotCQl9OwotCi0JCS8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZAotCQlwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKzsKLQotCQlyZXR1cm4gcHJveHk7Ci0JfSwKLQotCS8vIE11bHRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVzIG9mIGEgY29sbGVjdGlvbgotCS8vIFRoZSB2YWx1ZS9zIGNhbiBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlvbgotCWFjY2VzczogZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkgewotCQl2YXIgaSA9IDAsCi0JCQlsZW5ndGggPSBlbGVtcy5sZW5ndGgsCi0JCQlidWxrID0ga2V5ID09IG51bGw7Ci0KLQkJLy8gU2V0cyBtYW55IHZhbHVlcwotCQlpZiAoIGpRdWVyeS50eXBlKCBrZXkgKSA9PT0gIm9iamVjdCIgKSB7Ci0JCQljaGFpbmFibGUgPSB0cnVlOwotCQkJZm9yICggaSBpbiBrZXkgKSB7Ci0JCQkJalF1ZXJ5LmFjY2VzcyggZWxlbXMsIGZuLCBpLCBrZXlbaV0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTsKLQkJCX0KLQotCQkvLyBTZXRzIG9uZSB2YWx1ZQotCQl9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewotCQkJY2hhaW5hYmxlID0gdHJ1ZTsKLQotCQkJaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7Ci0JCQkJcmF3ID0gdHJ1ZTsKLQkJCX0KLQotCQkJaWYgKCBidWxrICkgewotCQkJCS8vIEJ1bGsgb3BlcmF0aW9ucyBydW4gYWdhaW5zdCB0aGUgZW50aXJlIHNldAotCQkJCWlmICggcmF3ICkgewotCQkJCQlmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTsKLQkJCQkJZm4gPSBudWxsOwotCi0JCQkJLy8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlcwotCQkJCX0gZWxzZSB7Ci0JCQkJCWJ1bGsgPSBmbjsKLQkJCQkJZm4gPSBmdW5jdGlvbiggZWxlbSwga2V5LCB2YWx1ZSApIHsKLQkJCQkJCXJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApOwotCQkJCQl9OwotCQkJCX0KLQkJCX0KLQotCQkJaWYgKCBmbiApIHsKLQkJCQlmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKLQkJCQkJZm4oIGVsZW1zW2ldLCBrZXksIHJhdyA/IHZhbHVlIDogdmFsdWUuY2FsbCggZWxlbXNbaV0sIGksIGZuKCBlbGVtc1tpXSwga2V5ICkgKSApOwotCQkJCX0KLQkJCX0KLQkJfQotCi0JCXJldHVybiBjaGFpbmFibGUgPwotCQkJZWxlbXMgOgotCi0JCQkvLyBHZXRzCi0JCQlidWxrID8KLQkJCQlmbi5jYWxsKCBlbGVtcyApIDoKLQkJCQlsZW5ndGggPyBmbiggZWxlbXNbMF0sIGtleSApIDogZW1wdHlHZXQ7Ci0JfSwKLQotCW5vdzogZnVuY3Rpb24oKSB7Ci0JCXJldHVybiAoIG5ldyBEYXRlKCkgKS5nZXRUaW1lKCk7Ci0JfQotfSk7Ci0KLWpRdWVyeS5yZWFkeS5wcm9taXNlID0gZnVuY3Rpb24oIG9iaiApIHsKLQlpZiAoICFyZWFkeUxpc3QgKSB7Ci0KLQkJcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7Ci0KLQkJLy8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuCi0JCS8vIHdlIG9uY2UgdHJpZWQgdG8gdXNlIHJlYWR5U3RhdGUgImludGVyYWN0aXZlIiBoZXJlLCBidXQgaXQgY2F1c2VkIGlzc3VlcyBsaWtlIHRoZSBvbmUKLQkJLy8gZGlzY292ZXJlZCBieSBDaHJpc1MgaGVyZTogaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIyODIjY29tbWVudDoxNQotCQlpZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIgKSB7Ci0JCQkvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHkKLQkJCXNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApOwotCi0JCS8vIFN0YW5kYXJkcy1iYXNlZCBicm93c2VycyBzdXBwb3J0IERPTUNvbnRlbnRMb2FkZWQKLQkJfSBlbHNlIGlmICggZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciApIHsKLQkJCS8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2sKLQkJCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICJET01Db250ZW50TG9hZGVkIiwgY29tcGxldGVkLCBmYWxzZSApOwotCi0JCQkvLyBBIGZhbGxiYWNrIHRvIHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29yawotCQkJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICJsb2FkIiwgY29tcGxldGVkLCBmYWxzZSApOwotCi0JCS8vIElmIElFIGV2ZW50IG1vZGVsIGlzIHVzZWQKLQkJfSBlbHNlIHsKLQkJCS8vIEVuc3VyZSBmaXJpbmcgYmVmb3JlIG9ubG9hZCwgbWF5YmUgbGF0ZSBidXQgc2FmZSBhbHNvIGZvciBpZnJhbWVzCi0JCQlkb2N1bWVudC5hdHRhY2hFdmVudCggIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGNvbXBsZXRlZCApOwotCi0JCQkvLyBBIGZhbGxiYWNrIHRvIHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29yawotCQkJd2luZG93LmF0dGFjaEV2ZW50KCAib25sb2FkIiwgY29tcGxldGVkICk7Ci0KLQkJCS8vIElmIElFIGFuZCBub3QgYSBmcmFtZQotCQkJLy8gY29udGludWFsbHkgY2hlY2sgdG8gc2VlIGlmIHRoZSBkb2N1bWVudCBpcyByZWFkeQotCQkJdmFyIHRvcCA9IGZhbHNlOwotCi0JCQl0cnkgewotCQkJCXRvcCA9IHdpbmRvdy5mcmFtZUVsZW1lbnQgPT0gbnVsbCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Ci0JCQl9IGNhdGNoKGUpIHt9Ci0KLQkJCWlmICggdG9wICYmIHRvcC5kb1Njcm9sbCApIHsKLQkJCQkoZnVuY3Rpb24gZG9TY3JvbGxDaGVjaygpIHsKLQkJCQkJaWYgKCAhalF1ZXJ5LmlzUmVhZHkgKSB7Ci0KLQkJCQkJCXRyeSB7Ci0JCQkJCQkJLy8gVXNlIHRoZSB0cmljayBieSBEaWVnbyBQZXJpbmkKLQkJCQkJCQkvLyBodHRwOi8vamF2YXNjcmlwdC5ud2JveC5jb20vSUVDb250ZW50TG9hZGVkLwotCQkJCQkJCXRvcC5kb1Njcm9sbCgibGVmdCIpOwotCQkJCQkJfSBjYXRjaChlKSB7Ci0JCQkJCQkJcmV0dXJuIHNldFRpbWVvdXQoIGRvU2Nyb2xsQ2hlY2ssIDUwICk7Ci0JCQkJCQl9Ci0KLQkJCQkJCS8vIGRldGFjaCBhbGwgZG9tIHJlYWR5IGV2ZW50cwotCQkJCQkJZGV0YWNoKCk7Ci0KLQkJCQkJCS8vIGFuZCBleGVjdXRlIGFueSB3YWl0aW5nIGZ1bmN0aW9ucwotCQkJCQkJalF1ZXJ5LnJlYWR5KCk7Ci0JCQkJCX0KLQkJCQl9KSgpOwotCQkJfQotCQl9Ci0JfQotCXJldHVybiByZWFkeUxpc3QucHJvbWlzZSggb2JqICk7Ci19OwotCi0vLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXAKLWpRdWVyeS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLCBmdW5jdGlvbihpLCBuYW1lKSB7Ci0JY2xhc3MydHlwZVsgIltvYmplY3QgIiArIG5hbWUgKyAiXSIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKLX0pOwotCi1mdW5jdGlvbiBpc0FycmF5bGlrZSggb2JqICkgewotCXZhciBsZW5ndGggPSBvYmoubGVuZ3RoLAotCQl0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApOwotCi0JaWYgKCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkgewotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JaWYgKCBvYmoubm9kZVR5cGUgPT09IDEgJiYgbGVuZ3RoICkgewotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQlyZXR1cm4gdHlwZSA9PT0gImFycmF5IiB8fCB0eXBlICE9PSAiZnVuY3Rpb24iICYmCi0JCSggbGVuZ3RoID09PSAwIHx8Ci0JCXR5cGVvZiBsZW5ndGggPT09ICJudW1iZXIiICYmIGxlbmd0aCA+IDAgJiYgKCBsZW5ndGggLSAxICkgaW4gb2JqICk7Ci19Ci0KLS8vIEFsbCBqUXVlcnkgb2JqZWN0cyBzaG91bGQgcG9pbnQgYmFjayB0byB0aGVzZQotcm9vdGpRdWVyeSA9IGpRdWVyeShkb2N1bWVudCk7Ci0vLyBTdHJpbmcgdG8gT2JqZWN0IG9wdGlvbnMgZm9ybWF0IGNhY2hlCi12YXIgb3B0aW9uc0NhY2hlID0ge307Ci0KLS8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzIGFuZCBzdG9yZSBpbiBjYWNoZQotZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIHsKLQl2YXIgb2JqZWN0ID0gb3B0aW9uc0NhY2hlWyBvcHRpb25zIF0gPSB7fTsKLQlqUXVlcnkuZWFjaCggb3B0aW9ucy5tYXRjaCggY29yZV9ybm90d2hpdGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7Ci0JCW9iamVjdFsgZmxhZyBdID0gdHJ1ZTsKLQl9KTsKLQlyZXR1cm4gb2JqZWN0OwotfQotCi0vKgotICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6Ci0gKgotICoJb3B0aW9uczogYW4gb3B0aW9uYWwgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgb3B0aW9ucyB0aGF0IHdpbGwgY2hhbmdlIGhvdwotICoJCQl0aGUgY2FsbGJhY2sgbGlzdCBiZWhhdmVzIG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRpb24gb2JqZWN0Ci0gKgotICogQnkgZGVmYXVsdCBhIGNhbGxiYWNrIGxpc3Qgd2lsbCBhY3QgbGlrZSBhbiBldmVudCBjYWxsYmFjayBsaXN0IGFuZCBjYW4gYmUKLSAqICJmaXJlZCIgbXVsdGlwbGUgdGltZXMuCi0gKgotICogUG9zc2libGUgb3B0aW9uczoKLSAqCi0gKglvbmNlOgkJCXdpbGwgZW5zdXJlIHRoZSBjYWxsYmFjayBsaXN0IGNhbiBvbmx5IGJlIGZpcmVkIG9uY2UgKGxpa2UgYSBEZWZlcnJlZCkKLSAqCi0gKgltZW1vcnk6CQkJd2lsbCBrZWVwIHRyYWNrIG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFueSBjYWxsYmFjayBhZGRlZAotICoJCQkJCWFmdGVyIHRoZSBsaXN0IGhhcyBiZWVuIGZpcmVkIHJpZ2h0IGF3YXkgd2l0aCB0aGUgbGF0ZXN0ICJtZW1vcml6ZWQiCi0gKgkJCQkJdmFsdWVzIChsaWtlIGEgRGVmZXJyZWQpCi0gKgotICoJdW5pcXVlOgkJCXdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0KQotICoKLSAqCXN0b3BPbkZhbHNlOglpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNhbGxiYWNrIHJldHVybnMgZmFsc2UKLSAqCi0gKi8KLWpRdWVyeS5DYWxsYmFja3MgPSBmdW5jdGlvbiggb3B0aW9ucyApIHsKLQotCS8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWQKLQkvLyAod2UgY2hlY2sgaW4gY2FjaGUgZmlyc3QpCi0Jb3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSAic3RyaW5nIiA/Ci0JCSggb3B0aW9uc0NhY2hlWyBvcHRpb25zIF0gfHwgY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApICkgOgotCQlqUXVlcnkuZXh0ZW5kKCB7fSwgb3B0aW9ucyApOwotCi0JdmFyIC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IGlzIGN1cnJlbnRseSBmaXJpbmcKLQkJZmlyaW5nLAotCQkvLyBMYXN0IGZpcmUgdmFsdWUgKGZvciBub24tZm9yZ2V0dGFibGUgbGlzdHMpCi0JCW1lbW9yeSwKLQkJLy8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWQKLQkJZmlyZWQsCi0JCS8vIEVuZCBvZiB0aGUgbG9vcCB3aGVuIGZpcmluZwotCQlmaXJpbmdMZW5ndGgsCi0JCS8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IHJlbW92ZSBpZiBuZWVkZWQpCi0JCWZpcmluZ0luZGV4LAotCQkvLyBGaXJzdCBjYWxsYmFjayB0byBmaXJlICh1c2VkIGludGVybmFsbHkgYnkgYWRkIGFuZCBmaXJlV2l0aCkKLQkJZmlyaW5nU3RhcnQsCi0JCS8vIEFjdHVhbCBjYWxsYmFjayBsaXN0Ci0JCWxpc3QgPSBbXSwKLQkJLy8gU3RhY2sgb2YgZmlyZSBjYWxscyBmb3IgcmVwZWF0YWJsZSBsaXN0cwotCQlzdGFjayA9ICFvcHRpb25zLm9uY2UgJiYgW10sCi0JCS8vIEZpcmUgY2FsbGJhY2tzCi0JCWZpcmUgPSBmdW5jdGlvbiggZGF0YSApIHsKLQkJCW1lbW9yeSA9IG9wdGlvbnMubWVtb3J5ICYmIGRhdGE7Ci0JCQlmaXJlZCA9IHRydWU7Ci0JCQlmaXJpbmdJbmRleCA9IGZpcmluZ1N0YXJ0IHx8IDA7Ci0JCQlmaXJpbmdTdGFydCA9IDA7Ci0JCQlmaXJpbmdMZW5ndGggPSBsaXN0Lmxlbmd0aDsKLQkJCWZpcmluZyA9IHRydWU7Ci0JCQlmb3IgKCA7IGxpc3QgJiYgZmlyaW5nSW5kZXggPCBmaXJpbmdMZW5ndGg7IGZpcmluZ0luZGV4KysgKSB7Ci0JCQkJaWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBkYXRhWyAwIF0sIGRhdGFbIDEgXSApID09PSBmYWxzZSAmJiBvcHRpb25zLnN0b3BPbkZhbHNlICkgewotCQkJCQltZW1vcnkgPSBmYWxzZTsgLy8gVG8gcHJldmVudCBmdXJ0aGVyIGNhbGxzIHVzaW5nIGFkZAotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCQlmaXJpbmcgPSBmYWxzZTsKLQkJCWlmICggbGlzdCApIHsKLQkJCQlpZiAoIHN0YWNrICkgewotCQkJCQlpZiAoIHN0YWNrLmxlbmd0aCApIHsKLQkJCQkJCWZpcmUoIHN0YWNrLnNoaWZ0KCkgKTsKLQkJCQkJfQotCQkJCX0gZWxzZSBpZiAoIG1lbW9yeSApIHsKLQkJCQkJbGlzdCA9IFtdOwotCQkJCX0gZWxzZSB7Ci0JCQkJCXNlbGYuZGlzYWJsZSgpOwotCQkJCX0KLQkJCX0KLQkJfSwKLQkJLy8gQWN0dWFsIENhbGxiYWNrcyBvYmplY3QKLQkJc2VsZiA9IHsKLQkJCS8vIEFkZCBhIGNhbGxiYWNrIG9yIGEgY29sbGVjdGlvbiBvZiBjYWxsYmFja3MgdG8gdGhlIGxpc3QKLQkJCWFkZDogZnVuY3Rpb24oKSB7Ci0JCQkJaWYgKCBsaXN0ICkgewotCQkJCQkvLyBGaXJzdCwgd2Ugc2F2ZSB0aGUgY3VycmVudCBsZW5ndGgKLQkJCQkJdmFyIHN0YXJ0ID0gbGlzdC5sZW5ndGg7Ci0JCQkJCShmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7Ci0JCQkJCQlqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHsKLQkJCQkJCQl2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBhcmcgKTsKLQkJCQkJCQlpZiAoIHR5cGUgPT09ICJmdW5jdGlvbiIgKSB7Ci0JCQkJCQkJCWlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSB7Ci0JCQkJCQkJCQlsaXN0LnB1c2goIGFyZyApOwotCQkJCQkJCQl9Ci0JCQkJCQkJfSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgdHlwZSAhPT0gInN0cmluZyIgKSB7Ci0JCQkJCQkJCS8vIEluc3BlY3QgcmVjdXJzaXZlbHkKLQkJCQkJCQkJYWRkKCBhcmcgKTsKLQkJCQkJCQl9Ci0JCQkJCQl9KTsKLQkJCQkJfSkoIGFyZ3VtZW50cyApOwotCQkJCQkvLyBEbyB3ZSBuZWVkIHRvIGFkZCB0aGUgY2FsbGJhY2tzIHRvIHRoZQotCQkJCQkvLyBjdXJyZW50IGZpcmluZyBiYXRjaD8KLQkJCQkJaWYgKCBmaXJpbmcgKSB7Ci0JCQkJCQlmaXJpbmdMZW5ndGggPSBsaXN0Lmxlbmd0aDsKLQkJCQkJLy8gV2l0aCBtZW1vcnksIGlmIHdlJ3JlIG5vdCBmaXJpbmcgdGhlbgotCQkJCQkvLyB3ZSBzaG91bGQgY2FsbCByaWdodCBhd2F5Ci0JCQkJCX0gZWxzZSBpZiAoIG1lbW9yeSApIHsKLQkJCQkJCWZpcmluZ1N0YXJ0ID0gc3RhcnQ7Ci0JCQkJCQlmaXJlKCBtZW1vcnkgKTsKLQkJCQkJfQotCQkJCX0KLQkJCQlyZXR1cm4gdGhpczsKLQkJCX0sCi0JCQkvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0Ci0JCQlyZW1vdmU6IGZ1bmN0aW9uKCkgewotCQkJCWlmICggbGlzdCApIHsKLQkJCQkJalF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHsKLQkJCQkJCXZhciBpbmRleDsKLQkJCQkJCXdoaWxlKCAoIGluZGV4ID0galF1ZXJ5LmluQXJyYXkoIGFyZywgbGlzdCwgaW5kZXggKSApID4gLTEgKSB7Ci0JCQkJCQkJbGlzdC5zcGxpY2UoIGluZGV4LCAxICk7Ci0JCQkJCQkJLy8gSGFuZGxlIGZpcmluZyBpbmRleGVzCi0JCQkJCQkJaWYgKCBmaXJpbmcgKSB7Ci0JCQkJCQkJCWlmICggaW5kZXggPD0gZmlyaW5nTGVuZ3RoICkgewotCQkJCQkJCQkJZmlyaW5nTGVuZ3RoLS07Ci0JCQkJCQkJCX0KLQkJCQkJCQkJaWYgKCBpbmRleCA8PSBmaXJpbmdJbmRleCApIHsKLQkJCQkJCQkJCWZpcmluZ0luZGV4LS07Ci0JCQkJCQkJCX0KLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCX0pOwotCQkJCX0KLQkJCQlyZXR1cm4gdGhpczsKLQkJCX0sCi0JCQkvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LgotCQkJLy8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuCi0JCQloYXM6IGZ1bmN0aW9uKCBmbiApIHsKLQkJCQlyZXR1cm4gZm4gPyBqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDogISEoIGxpc3QgJiYgbGlzdC5sZW5ndGggKTsKLQkJCX0sCi0JCQkvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0Ci0JCQllbXB0eTogZnVuY3Rpb24oKSB7Ci0JCQkJbGlzdCA9IFtdOwotCQkJCXJldHVybiB0aGlzOwotCQkJfSwKLQkJCS8vIEhhdmUgdGhlIGxpc3QgZG8gbm90aGluZyBhbnltb3JlCi0JCQlkaXNhYmxlOiBmdW5jdGlvbigpIHsKLQkJCQlsaXN0ID0gc3RhY2sgPSBtZW1vcnkgPSB1bmRlZmluZWQ7Ci0JCQkJcmV0dXJuIHRoaXM7Ci0JCQl9LAotCQkJLy8gSXMgaXQgZGlzYWJsZWQ/Ci0JCQlkaXNhYmxlZDogZnVuY3Rpb24oKSB7Ci0JCQkJcmV0dXJuICFsaXN0OwotCQkJfSwKLQkJCS8vIExvY2sgdGhlIGxpc3QgaW4gaXRzIGN1cnJlbnQgc3RhdGUKLQkJCWxvY2s6IGZ1bmN0aW9uKCkgewotCQkJCXN0YWNrID0gdW5kZWZpbmVkOwotCQkJCWlmICggIW1lbW9yeSApIHsKLQkJCQkJc2VsZi5kaXNhYmxlKCk7Ci0JCQkJfQotCQkJCXJldHVybiB0aGlzOwotCQkJfSwKLQkJCS8vIElzIGl0IGxvY2tlZD8KLQkJCWxvY2tlZDogZnVuY3Rpb24oKSB7Ci0JCQkJcmV0dXJuICFzdGFjazsKLQkJCX0sCi0JCQkvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzCi0JCQlmaXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7Ci0JCQkJYXJncyA9IGFyZ3MgfHwgW107Ci0JCQkJYXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTsKLQkJCQlpZiAoIGxpc3QgJiYgKCAhZmlyZWQgfHwgc3RhY2sgKSApIHsKLQkJCQkJaWYgKCBmaXJpbmcgKSB7Ci0JCQkJCQlzdGFjay5wdXNoKCBhcmdzICk7Ci0JCQkJCX0gZWxzZSB7Ci0JCQkJCQlmaXJlKCBhcmdzICk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQkJcmV0dXJuIHRoaXM7Ci0JCQl9LAotCQkJLy8gQ2FsbCBhbGwgdGhlIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMKLQkJCWZpcmU6IGZ1bmN0aW9uKCkgewotCQkJCXNlbGYuZmlyZVdpdGgoIHRoaXMsIGFyZ3VtZW50cyApOwotCQkJCXJldHVybiB0aGlzOwotCQkJfSwKLQkJCS8vIFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkgYmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZQotCQkJZmlyZWQ6IGZ1bmN0aW9uKCkgewotCQkJCXJldHVybiAhIWZpcmVkOwotCQkJfQotCQl9OwotCi0JcmV0dXJuIHNlbGY7Ci19OwotalF1ZXJ5LmV4dGVuZCh7Ci0KLQlEZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7Ci0JCXZhciB0dXBsZXMgPSBbCi0JCQkJLy8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGxpc3RlbmVyIGxpc3QsIGZpbmFsIHN0YXRlCi0JCQkJWyAicmVzb2x2ZSIsICJkb25lIiwgalF1ZXJ5LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgInJlc29sdmVkIiBdLAotCQkJCVsgInJlamVjdCIsICJmYWlsIiwgalF1ZXJ5LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgInJlamVjdGVkIiBdLAotCQkJCVsgIm5vdGlmeSIsICJwcm9ncmVzcyIsIGpRdWVyeS5DYWxsYmFja3MoIm1lbW9yeSIpIF0KLQkJCV0sCi0JCQlzdGF0ZSA9ICJwZW5kaW5nIiwKLQkJCXByb21pc2UgPSB7Ci0JCQkJc3RhdGU6IGZ1bmN0aW9uKCkgewotCQkJCQlyZXR1cm4gc3RhdGU7Ci0JCQkJfSwKLQkJCQlhbHdheXM6IGZ1bmN0aW9uKCkgewotCQkJCQlkZWZlcnJlZC5kb25lKCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTsKLQkJCQkJcmV0dXJuIHRoaXM7Ci0JCQkJfSwKLQkJCQl0aGVuOiBmdW5jdGlvbiggLyogZm5Eb25lLCBmbkZhaWwsIGZuUHJvZ3Jlc3MgKi8gKSB7Ci0JCQkJCXZhciBmbnMgPSBhcmd1bWVudHM7Ci0JCQkJCXJldHVybiBqUXVlcnkuRGVmZXJyZWQoZnVuY3Rpb24oIG5ld0RlZmVyICkgewotCQkJCQkJalF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkgewotCQkJCQkJCXZhciBhY3Rpb24gPSB0dXBsZVsgMCBdLAotCQkJCQkJCQlmbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBmbnNbIGkgXSApICYmIGZuc1sgaSBdOwotCQkJCQkJCS8vIGRlZmVycmVkWyBkb25lIHwgZmFpbCB8IHByb2dyZXNzIF0gZm9yIGZvcndhcmRpbmcgYWN0aW9ucyB0byBuZXdEZWZlcgotCQkJCQkJCWRlZmVycmVkWyB0dXBsZVsxXSBdKGZ1bmN0aW9uKCkgewotCQkJCQkJCQl2YXIgcmV0dXJuZWQgPSBmbiAmJiBmbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7Ci0JCQkJCQkJCWlmICggcmV0dXJuZWQgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJldHVybmVkLnByb21pc2UgKSApIHsKLQkJCQkJCQkJCXJldHVybmVkLnByb21pc2UoKQotCQkJCQkJCQkJCS5kb25lKCBuZXdEZWZlci5yZXNvbHZlICkKLQkJCQkJCQkJCQkuZmFpbCggbmV3RGVmZXIucmVqZWN0ICkKLQkJCQkJCQkJCQkucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApOwotCQkJCQkJCQl9IGVsc2UgewotCQkJCQkJCQkJbmV3RGVmZXJbIGFjdGlvbiArICJXaXRoIiBdKCB0aGlzID09PSBwcm9taXNlID8gbmV3RGVmZXIucHJvbWlzZSgpIDogdGhpcywgZm4gPyBbIHJldHVybmVkIF0gOiBhcmd1bWVudHMgKTsKLQkJCQkJCQkJfQotCQkJCQkJCX0pOwotCQkJCQkJfSk7Ci0JCQkJCQlmbnMgPSBudWxsOwotCQkJCQl9KS5wcm9taXNlKCk7Ci0JCQkJfSwKLQkJCQkvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkCi0JCQkJLy8gSWYgb2JqIGlzIHByb3ZpZGVkLCB0aGUgcHJvbWlzZSBhc3BlY3QgaXMgYWRkZWQgdG8gdGhlIG9iamVjdAotCQkJCXByb21pc2U6IGZ1bmN0aW9uKCBvYmogKSB7Ci0JCQkJCXJldHVybiBvYmogIT0gbnVsbCA/IGpRdWVyeS5leHRlbmQoIG9iaiwgcHJvbWlzZSApIDogcHJvbWlzZTsKLQkJCQl9Ci0JCQl9LAotCQkJZGVmZXJyZWQgPSB7fTsKLQotCQkvLyBLZWVwIHBpcGUgZm9yIGJhY2stY29tcGF0Ci0JCXByb21pc2UucGlwZSA9IHByb21pc2UudGhlbjsKLQotCQkvLyBBZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzCi0JCWpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHsKLQkJCXZhciBsaXN0ID0gdHVwbGVbIDIgXSwKLQkJCQlzdGF0ZVN0cmluZyA9IHR1cGxlWyAzIF07Ci0KLQkJCS8vIHByb21pc2VbIGRvbmUgfCBmYWlsIHwgcHJvZ3Jlc3MgXSA9IGxpc3QuYWRkCi0JCQlwcm9taXNlWyB0dXBsZVsxXSBdID0gbGlzdC5hZGQ7Ci0KLQkJCS8vIEhhbmRsZSBzdGF0ZQotCQkJaWYgKCBzdGF0ZVN0cmluZyApIHsKLQkJCQlsaXN0LmFkZChmdW5jdGlvbigpIHsKLQkJCQkJLy8gc3RhdGUgPSBbIHJlc29sdmVkIHwgcmVqZWN0ZWQgXQotCQkJCQlzdGF0ZSA9IHN0YXRlU3RyaW5nOwotCi0JCQkJLy8gWyByZWplY3RfbGlzdCB8IHJlc29sdmVfbGlzdCBdLmRpc2FibGU7IHByb2dyZXNzX2xpc3QubG9jawotCQkJCX0sIHR1cGxlc1sgaSBeIDEgXVsgMiBdLmRpc2FibGUsIHR1cGxlc1sgMiBdWyAyIF0ubG9jayApOwotCQkJfQotCi0JCQkvLyBkZWZlcnJlZFsgcmVzb2x2ZSB8IHJlamVjdCB8IG5vdGlmeSBdCi0JCQlkZWZlcnJlZFsgdHVwbGVbMF0gXSA9IGZ1bmN0aW9uKCkgewotCQkJCWRlZmVycmVkWyB0dXBsZVswXSArICJXaXRoIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHByb21pc2UgOiB0aGlzLCBhcmd1bWVudHMgKTsKLQkJCQlyZXR1cm4gdGhpczsKLQkJCX07Ci0JCQlkZWZlcnJlZFsgdHVwbGVbMF0gKyAiV2l0aCIgXSA9IGxpc3QuZmlyZVdpdGg7Ci0JCX0pOwotCi0JCS8vIE1ha2UgdGhlIGRlZmVycmVkIGEgcHJvbWlzZQotCQlwcm9taXNlLnByb21pc2UoIGRlZmVycmVkICk7Ci0KLQkJLy8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueQotCQlpZiAoIGZ1bmMgKSB7Ci0JCQlmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApOwotCQl9Ci0KLQkJLy8gQWxsIGRvbmUhCi0JCXJldHVybiBkZWZlcnJlZDsKLQl9LAotCi0JLy8gRGVmZXJyZWQgaGVscGVyCi0Jd2hlbjogZnVuY3Rpb24oIHN1Ym9yZGluYXRlIC8qICwgLi4uLCBzdWJvcmRpbmF0ZU4gKi8gKSB7Ci0JCXZhciBpID0gMCwKLQkJCXJlc29sdmVWYWx1ZXMgPSBjb3JlX3NsaWNlLmNhbGwoIGFyZ3VtZW50cyApLAotCQkJbGVuZ3RoID0gcmVzb2x2ZVZhbHVlcy5sZW5ndGgsCi0KLQkJCS8vIHRoZSBjb3VudCBvZiB1bmNvbXBsZXRlZCBzdWJvcmRpbmF0ZXMKLQkJCXJlbWFpbmluZyA9IGxlbmd0aCAhPT0gMSB8fCAoIHN1Ym9yZGluYXRlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBzdWJvcmRpbmF0ZS5wcm9taXNlICkgKSA/IGxlbmd0aCA6IDAsCi0KLQkJCS8vIHRoZSBtYXN0ZXIgRGVmZXJyZWQuIElmIHJlc29sdmVWYWx1ZXMgY29uc2lzdCBvZiBvbmx5IGEgc2luZ2xlIERlZmVycmVkLCBqdXN0IHVzZSB0aGF0LgotCQkJZGVmZXJyZWQgPSByZW1haW5pbmcgPT09IDEgPyBzdWJvcmRpbmF0ZSA6IGpRdWVyeS5EZWZlcnJlZCgpLAotCi0JCQkvLyBVcGRhdGUgZnVuY3Rpb24gZm9yIGJvdGggcmVzb2x2ZSBhbmQgcHJvZ3Jlc3MgdmFsdWVzCi0JCQl1cGRhdGVGdW5jID0gZnVuY3Rpb24oIGksIGNvbnRleHRzLCB2YWx1ZXMgKSB7Ci0JCQkJcmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHsKLQkJCQkJY29udGV4dHNbIGkgXSA9IHRoaXM7Ci0JCQkJCXZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBjb3JlX3NsaWNlLmNhbGwoIGFyZ3VtZW50cyApIDogdmFsdWU7Ci0JCQkJCWlmKCB2YWx1ZXMgPT09IHByb2dyZXNzVmFsdWVzICkgewotCQkJCQkJZGVmZXJyZWQubm90aWZ5V2l0aCggY29udGV4dHMsIHZhbHVlcyApOwotCQkJCQl9IGVsc2UgaWYgKCAhKCAtLXJlbWFpbmluZyApICkgewotCQkJCQkJZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNvbnRleHRzLCB2YWx1ZXMgKTsKLQkJCQkJfQotCQkJCX07Ci0JCQl9LAotCi0JCQlwcm9ncmVzc1ZhbHVlcywgcHJvZ3Jlc3NDb250ZXh0cywgcmVzb2x2ZUNvbnRleHRzOwotCi0JCS8vIGFkZCBsaXN0ZW5lcnMgdG8gRGVmZXJyZWQgc3Vib3JkaW5hdGVzOyB0cmVhdCBvdGhlcnMgYXMgcmVzb2x2ZWQKLQkJaWYgKCBsZW5ndGggPiAxICkgewotCQkJcHJvZ3Jlc3NWYWx1ZXMgPSBuZXcgQXJyYXkoIGxlbmd0aCApOwotCQkJcHJvZ3Jlc3NDb250ZXh0cyA9IG5ldyBBcnJheSggbGVuZ3RoICk7Ci0JCQlyZXNvbHZlQ29udGV4dHMgPSBuZXcgQXJyYXkoIGxlbmd0aCApOwotCQkJZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7Ci0JCQkJaWYgKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXS5wcm9taXNlICkgKSB7Ci0JCQkJCXJlc29sdmVWYWx1ZXNbIGkgXS5wcm9taXNlKCkKLQkJCQkJCS5kb25lKCB1cGRhdGVGdW5jKCBpLCByZXNvbHZlQ29udGV4dHMsIHJlc29sdmVWYWx1ZXMgKSApCi0JCQkJCQkuZmFpbCggZGVmZXJyZWQucmVqZWN0ICkKLQkJCQkJCS5wcm9ncmVzcyggdXBkYXRlRnVuYyggaSwgcHJvZ3Jlc3NDb250ZXh0cywgcHJvZ3Jlc3NWYWx1ZXMgKSApOwotCQkJCX0gZWxzZSB7Ci0JCQkJCS0tcmVtYWluaW5nOwotCQkJCX0KLQkJCX0KLQkJfQotCi0JCS8vIGlmIHdlJ3JlIG5vdCB3YWl0aW5nIG9uIGFueXRoaW5nLCByZXNvbHZlIHRoZSBtYXN0ZXIKLQkJaWYgKCAhcmVtYWluaW5nICkgewotCQkJZGVmZXJyZWQucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApOwotCQl9Ci0KLQkJcmV0dXJuIGRlZmVycmVkLnByb21pc2UoKTsKLQl9Ci19KTsKLWpRdWVyeS5zdXBwb3J0ID0gKGZ1bmN0aW9uKCkgewotCi0JdmFyIHN1cHBvcnQsIGFsbCwgYSwKLQkJaW5wdXQsIHNlbGVjdCwgZnJhZ21lbnQsCi0JCW9wdCwgZXZlbnROYW1lLCBpc1N1cHBvcnRlZCwgaSwKLQkJZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0KLQkvLyBTZXR1cAotCWRpdi5zZXRBdHRyaWJ1dGUoICJjbGFzc05hbWUiLCAidCIgKTsKLQlkaXYuaW5uZXJIVE1MID0gIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiI7Ci0KLQkvLyBTdXBwb3J0IHRlc3RzIHdvbid0IHJ1biBpbiBzb21lIGxpbWl0ZWQgb3Igbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRzCi0JYWxsID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7Ci0JYSA9IGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWyAwIF07Ci0JaWYgKCAhYWxsIHx8ICFhIHx8ICFhbGwubGVuZ3RoICkgewotCQlyZXR1cm4ge307Ci0JfQotCi0JLy8gRmlyc3QgYmF0Y2ggb2YgdGVzdHMKLQlzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKLQlvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpICk7Ci0JaW5wdXQgPSBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbIDAgXTsKLQotCWEuc3R5bGUuY3NzVGV4dCA9ICJ0b3A6MXB4O2Zsb2F0OmxlZnQ7b3BhY2l0eTouNSI7Ci0Jc3VwcG9ydCA9IHsKLQkJLy8gVGVzdCBzZXRBdHRyaWJ1dGUgb24gY2FtZWxDYXNlIGNsYXNzLiBJZiBpdCB3b3Jrcywgd2UgbmVlZCBhdHRyRml4ZXMgd2hlbiBkb2luZyBnZXQvc2V0QXR0cmlidXRlIChpZTYvNykKLQkJZ2V0U2V0QXR0cmlidXRlOiBkaXYuY2xhc3NOYW1lICE9PSAidCIsCi0KLQkJLy8gSUUgc3RyaXBzIGxlYWRpbmcgd2hpdGVzcGFjZSB3aGVuIC5pbm5lckhUTUwgaXMgdXNlZAotCQlsZWFkaW5nV2hpdGVzcGFjZTogZGl2LmZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDMsCi0KLQkJLy8gTWFrZSBzdXJlIHRoYXQgdGJvZHkgZWxlbWVudHMgYXJlbid0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQKLQkJLy8gSUUgd2lsbCBpbnNlcnQgdGhlbSBpbnRvIGVtcHR5IHRhYmxlcwotCQl0Ym9keTogIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsCi0KLQkJLy8gTWFrZSBzdXJlIHRoYXQgbGluayBlbGVtZW50cyBnZXQgc2VyaWFsaXplZCBjb3JyZWN0bHkgYnkgaW5uZXJIVE1MCi0JCS8vIFRoaXMgcmVxdWlyZXMgYSB3cmFwcGVyIGVsZW1lbnQgaW4gSUUKLQkJaHRtbFNlcmlhbGl6ZTogISFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsCi0KLQkJLy8gR2V0IHRoZSBzdHlsZSBpbmZvcm1hdGlvbiBmcm9tIGdldEF0dHJpYnV0ZQotCQkvLyAoSUUgdXNlcyAuY3NzVGV4dCBpbnN0ZWFkKQotCQlzdHlsZTogL3RvcC8udGVzdCggYS5nZXRBdHRyaWJ1dGUoInN0eWxlIikgKSwKLQotCQkvLyBNYWtlIHN1cmUgdGhhdCBVUkxzIGFyZW4ndCBtYW5pcHVsYXRlZAotCQkvLyAoSUUgbm9ybWFsaXplcyBpdCBieSBkZWZhdWx0KQotCQlocmVmTm9ybWFsaXplZDogYS5nZXRBdHRyaWJ1dGUoImhyZWYiKSA9PT0gIi9hIiwKLQotCQkvLyBNYWtlIHN1cmUgdGhhdCBlbGVtZW50IG9wYWNpdHkgZXhpc3RzCi0JCS8vIChJRSB1c2VzIGZpbHRlciBpbnN0ZWFkKQotCQkvLyBVc2UgYSByZWdleCB0byB3b3JrIGFyb3VuZCBhIFdlYktpdCBpc3N1ZS4gU2VlICM1MTQ1Ci0JCW9wYWNpdHk6IC9eMC41Ly50ZXN0KCBhLnN0eWxlLm9wYWNpdHkgKSwKLQotCQkvLyBWZXJpZnkgc3R5bGUgZmxvYXQgZXhpc3RlbmNlCi0JCS8vIChJRSB1c2VzIHN0eWxlRmxvYXQgaW5zdGVhZCBvZiBjc3NGbG9hdCkKLQkJY3NzRmxvYXQ6ICEhYS5zdHlsZS5jc3NGbG9hdCwKLQotCQkvLyBDaGVjayB0aGUgZGVmYXVsdCBjaGVja2JveC9yYWRpbyB2YWx1ZSAoIiIgb24gV2ViS2l0OyAib24iIGVsc2V3aGVyZSkKLQkJY2hlY2tPbjogISFpbnB1dC52YWx1ZSwKLQotCQkvLyBNYWtlIHN1cmUgdGhhdCBhIHNlbGVjdGVkLWJ5LWRlZmF1bHQgb3B0aW9uIGhhcyBhIHdvcmtpbmcgc2VsZWN0ZWQgcHJvcGVydHkuCi0JCS8vIChXZWJLaXQgZGVmYXVsdHMgdG8gZmFsc2UgaW5zdGVhZCBvZiB0cnVlLCBJRSB0b28sIGlmIGl0J3MgaW4gYW4gb3B0Z3JvdXApCi0JCW9wdFNlbGVjdGVkOiBvcHQuc2VsZWN0ZWQsCi0KLQkJLy8gVGVzdHMgZm9yIGVuY3R5cGUgc3VwcG9ydCBvbiBhIGZvcm0gKCM2NzQzKQotCQllbmN0eXBlOiAhIWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLAotCi0JCS8vIE1ha2VzIHN1cmUgY2xvbmluZyBhbiBodG1sNSBlbGVtZW50IGRvZXMgbm90IGNhdXNlIHByb2JsZW1zCi0JCS8vIFdoZXJlIG91dGVySFRNTCBpcyB1bmRlZmluZWQsIHRoaXMgc3RpbGwgd29ya3MKLQkJaHRtbDVDbG9uZTogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibmF2IikuY2xvbmVOb2RlKCB0cnVlICkub3V0ZXJIVE1MICE9PSAiPDpuYXY+PC86bmF2PiIsCi0KLQkJLy8galF1ZXJ5LnN1cHBvcnQuYm94TW9kZWwgREVQUkVDQVRFRCBpbiAxLjggc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBRdWlya3MgTW9kZQotCQlib3hNb2RlbDogZG9jdW1lbnQuY29tcGF0TW9kZSA9PT0gIkNTUzFDb21wYXQiLAotCi0JCS8vIFdpbGwgYmUgZGVmaW5lZCBsYXRlcgotCQlkZWxldGVFeHBhbmRvOiB0cnVlLAotCQlub0Nsb25lRXZlbnQ6IHRydWUsCi0JCWlubGluZUJsb2NrTmVlZHNMYXlvdXQ6IGZhbHNlLAotCQlzaHJpbmtXcmFwQmxvY2tzOiBmYWxzZSwKLQkJcmVsaWFibGVNYXJnaW5SaWdodDogdHJ1ZSwKLQkJYm94U2l6aW5nUmVsaWFibGU6IHRydWUsCi0JCXBpeGVsUG9zaXRpb246IGZhbHNlCi0JfTsKLQotCS8vIE1ha2Ugc3VyZSBjaGVja2VkIHN0YXR1cyBpcyBwcm9wZXJseSBjbG9uZWQKLQlpbnB1dC5jaGVja2VkID0gdHJ1ZTsKLQlzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gaW5wdXQuY2xvbmVOb2RlKCB0cnVlICkuY2hlY2tlZDsKLQotCS8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBvcHRpb25zIGluc2lkZSBkaXNhYmxlZCBzZWxlY3RzIGFyZW4ndCBtYXJrZWQgYXMgZGlzYWJsZWQKLQkvLyAoV2ViS2l0IG1hcmtzIHRoZW0gYXMgZGlzYWJsZWQpCi0Jc2VsZWN0LmRpc2FibGVkID0gdHJ1ZTsKLQlzdXBwb3J0Lm9wdERpc2FibGVkID0gIW9wdC5kaXNhYmxlZDsKLQotCS8vIFN1cHBvcnQ6IElFPDkKLQl0cnkgewotCQlkZWxldGUgZGl2LnRlc3Q7Ci0JfSBjYXRjaCggZSApIHsKLQkJc3VwcG9ydC5kZWxldGVFeHBhbmRvID0gZmFsc2U7Ci0JfQotCi0JLy8gQ2hlY2sgaWYgd2UgY2FuIHRydXN0IGdldEF0dHJpYnV0ZSgidmFsdWUiKQotCWlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLQlpbnB1dC5zZXRBdHRyaWJ1dGUoICJ2YWx1ZSIsICIiICk7Ci0Jc3VwcG9ydC5pbnB1dCA9IGlucHV0LmdldEF0dHJpYnV0ZSggInZhbHVlIiApID09PSAiIjsKLQotCS8vIENoZWNrIGlmIGFuIGlucHV0IG1haW50YWlucyBpdHMgdmFsdWUgYWZ0ZXIgYmVjb21pbmcgYSByYWRpbwotCWlucHV0LnZhbHVlID0gInQiOwotCWlucHV0LnNldEF0dHJpYnV0ZSggInR5cGUiLCAicmFkaW8iICk7Ci0Jc3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09ICJ0IjsKLQotCS8vICMxMTIxNyAtIFdlYktpdCBsb3NlcyBjaGVjayB3aGVuIHRoZSBuYW1lIGlzIGFmdGVyIHRoZSBjaGVja2VkIGF0dHJpYnV0ZQotCWlucHV0LnNldEF0dHJpYnV0ZSggImNoZWNrZWQiLCAidCIgKTsKLQlpbnB1dC5zZXRBdHRyaWJ1dGUoICJuYW1lIiwgInQiICk7Ci0KLQlmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLQlmcmFnbWVudC5hcHBlbmRDaGlsZCggaW5wdXQgKTsKLQotCS8vIENoZWNrIGlmIGEgZGlzY29ubmVjdGVkIGNoZWNrYm94IHdpbGwgcmV0YWluIGl0cyBjaGVja2VkCi0JLy8gdmFsdWUgb2YgdHJ1ZSBhZnRlciBhcHBlbmRlZCB0byB0aGUgRE9NIChJRTYvNykKLQlzdXBwb3J0LmFwcGVuZENoZWNrZWQgPSBpbnB1dC5jaGVja2VkOwotCi0JLy8gV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzCi0Jc3VwcG9ydC5jaGVja0Nsb25lID0gZnJhZ21lbnQuY2xvbmVOb2RlKCB0cnVlICkuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmNoZWNrZWQ7Ci0KLQkvLyBTdXBwb3J0OiBJRTw5Ci0JLy8gT3BlcmEgZG9lcyBub3QgY2xvbmUgZXZlbnRzIChhbmQgdHlwZW9mIGRpdi5hdHRhY2hFdmVudCA9PT0gdW5kZWZpbmVkKS4KLQkvLyBJRTktMTAgY2xvbmVzIGV2ZW50cyBib3VuZCB2aWEgYXR0YWNoRXZlbnQsIGJ1dCB0aGV5IGRvbid0IHRyaWdnZXIgd2l0aCAuY2xpY2soKQotCWlmICggZGl2LmF0dGFjaEV2ZW50ICkgewotCQlkaXYuYXR0YWNoRXZlbnQoICJvbmNsaWNrIiwgZnVuY3Rpb24oKSB7Ci0JCQlzdXBwb3J0Lm5vQ2xvbmVFdmVudCA9IGZhbHNlOwotCQl9KTsKLQotCQlkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xpY2soKTsKLQl9Ci0KLQkvLyBTdXBwb3J0OiBJRTw5IChsYWNrIHN1Ym1pdC9jaGFuZ2UgYnViYmxlKSwgRmlyZWZveCAxNysgKGxhY2sgZm9jdXNpbiBldmVudCkKLQkvLyBCZXdhcmUgb2YgQ1NQIHJlc3RyaWN0aW9ucyAoaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vU2VjdXJpdHkvQ1NQKSwgdGVzdC9jc3AucGhwCi0JZm9yICggaSBpbiB7IHN1Ym1pdDogdHJ1ZSwgY2hhbmdlOiB0cnVlLCBmb2N1c2luOiB0cnVlIH0pIHsKLQkJZGl2LnNldEF0dHJpYnV0ZSggZXZlbnROYW1lID0gIm9uIiArIGksICJ0IiApOwotCi0JCXN1cHBvcnRbIGkgKyAiQnViYmxlcyIgXSA9IGV2ZW50TmFtZSBpbiB3aW5kb3cgfHwgZGl2LmF0dHJpYnV0ZXNbIGV2ZW50TmFtZSBdLmV4cGFuZG8gPT09IGZhbHNlOwotCX0KLQotCWRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICJjb250ZW50LWJveCI7Ci0JZGl2LmNsb25lTm9kZSggdHJ1ZSApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gIiI7Ci0Jc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgPSBkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09ICJjb250ZW50LWJveCI7Ci0KLQkvLyBSdW4gdGVzdHMgdGhhdCBuZWVkIGEgYm9keSBhdCBkb2MgcmVhZHkKLQlqUXVlcnkoZnVuY3Rpb24oKSB7Ci0JCXZhciBjb250YWluZXIsIG1hcmdpbkRpdiwgdGRzLAotCQkJZGl2UmVzZXQgPSAicGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94OyIsCi0JCQlib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTsKLQotCQlpZiAoICFib2R5ICkgewotCQkJLy8gUmV0dXJuIGZvciBmcmFtZXNldCBkb2NzIHRoYXQgZG9uJ3QgaGF2ZSBhIGJvZHkKLQkJCXJldHVybjsKLQkJfQotCi0JCWNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotCQljb250YWluZXIuc3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6LTk5OTlweDttYXJnaW4tdG9wOjFweCI7Ci0KLQkJYm9keS5hcHBlbmRDaGlsZCggY29udGFpbmVyICkuYXBwZW5kQ2hpbGQoIGRpdiApOwotCi0JCS8vIFN1cHBvcnQ6IElFOAotCQkvLyBDaGVjayBpZiB0YWJsZSBjZWxscyBzdGlsbCBoYXZlIG9mZnNldFdpZHRoL0hlaWdodCB3aGVuIHRoZXkgYXJlIHNldAotCQkvLyB0byBkaXNwbGF5Om5vbmUgYW5kIHRoZXJlIGFyZSBzdGlsbCBvdGhlciB2aXNpYmxlIHRhYmxlIGNlbGxzIGluIGEKLQkJLy8gdGFibGUgcm93OyBpZiBzbywgb2Zmc2V0V2lkdGgvSGVpZ2h0IGFyZSBub3QgcmVsaWFibGUgZm9yIHVzZSB3aGVuCi0JCS8vIGRldGVybWluaW5nIGlmIGFuIGVsZW1lbnQgaGFzIGJlZW4gaGlkZGVuIGRpcmVjdGx5IHVzaW5nCi0JCS8vIGRpc3BsYXk6bm9uZSAoaXQgaXMgc3RpbGwgc2FmZSB0byB1c2Ugb2Zmc2V0cyBpZiBhIHBhcmVudCBlbGVtZW50IGlzCi0JCS8vIGhpZGRlbjsgZG9uIHNhZmV0eSBnb2dnbGVzIGFuZCBzZWUgYnVnICM0NTEyIGZvciBtb3JlIGluZm9ybWF0aW9uKS4KLQkJZGl2LmlubmVySFRNTCA9ICI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IjsKLQkJdGRzID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwotCQl0ZHNbIDAgXS5zdHlsZS5jc3NUZXh0ID0gInBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5Om5vbmUiOwotCQlpc1N1cHBvcnRlZCA9ICggdGRzWyAwIF0ub2Zmc2V0SGVpZ2h0ID09PSAwICk7Ci0KLQkJdGRzWyAwIF0uc3R5bGUuZGlzcGxheSA9ICIiOwotCQl0ZHNbIDEgXS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotCi0JCS8vIFN1cHBvcnQ6IElFOAotCQkvLyBDaGVjayBpZiBlbXB0eSB0YWJsZSBjZWxscyBzdGlsbCBoYXZlIG9mZnNldFdpZHRoL0hlaWdodAotCQlzdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyA9IGlzU3VwcG9ydGVkICYmICggdGRzWyAwIF0ub2Zmc2V0SGVpZ2h0ID09PSAwICk7Ci0KLQkJLy8gQ2hlY2sgYm94LXNpemluZyBhbmQgbWFyZ2luIGJlaGF2aW9yCi0JCWRpdi5pbm5lckhUTUwgPSAiIjsKLQkJZGl2LnN0eWxlLmNzc1RleHQgPSAiYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MXB4O2JvcmRlcjoxcHg7ZGlzcGxheTpibG9jazt3aWR0aDo0cHg7bWFyZ2luLXRvcDoxJTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MSU7IjsKLQkJc3VwcG9ydC5ib3hTaXppbmcgPSAoIGRpdi5vZmZzZXRXaWR0aCA9PT0gNCApOwotCQlzdXBwb3J0LmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0ID0gKCBib2R5Lm9mZnNldFRvcCAhPT0gMSApOwotCi0JCS8vIFVzZSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSBiZWNhdXNlIGpzZG9tIG9uIG5vZGUuanMgd2lsbCBicmVhayB3aXRob3V0IGl0LgotCQlpZiAoIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlICkgewotCQkJc3VwcG9ydC5waXhlbFBvc2l0aW9uID0gKCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2LCBudWxsICkgfHwge30gKS50b3AgIT09ICIxJSI7Ci0JCQlzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlID0gKCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2LCBudWxsICkgfHwgeyB3aWR0aDogIjRweCIgfSApLndpZHRoID09PSAiNHB4IjsKLQotCQkJLy8gQ2hlY2sgaWYgZGl2IHdpdGggZXhwbGljaXQgd2lkdGggYW5kIG5vIG1hcmdpbi1yaWdodCBpbmNvcnJlY3RseQotCQkJLy8gZ2V0cyBjb21wdXRlZCBtYXJnaW4tcmlnaHQgYmFzZWQgb24gd2lkdGggb2YgY29udGFpbmVyLiAoIzMzMzMpCi0JCQkvLyBGYWlscyBpbiBXZWJLaXQgYmVmb3JlIEZlYiAyMDExIG5pZ2h0bGllcwotCQkJLy8gV2ViS2l0IEJ1ZyAxMzM0MyAtIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyB3cm9uZyB2YWx1ZSBmb3IgbWFyZ2luLXJpZ2h0Ci0JCQltYXJnaW5EaXYgPSBkaXYuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpICk7Ci0JCQltYXJnaW5EaXYuc3R5bGUuY3NzVGV4dCA9IGRpdi5zdHlsZS5jc3NUZXh0ID0gZGl2UmVzZXQ7Ci0JCQltYXJnaW5EaXYuc3R5bGUubWFyZ2luUmlnaHQgPSBtYXJnaW5EaXYuc3R5bGUud2lkdGggPSAiMCI7Ci0JCQlkaXYuc3R5bGUud2lkdGggPSAiMXB4IjsKLQotCQkJc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0ID0KLQkJCQkhcGFyc2VGbG9hdCggKCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggbWFyZ2luRGl2LCBudWxsICkgfHwge30gKS5tYXJnaW5SaWdodCApOwotCQl9Ci0KLQkJaWYgKCB0eXBlb2YgZGl2LnN0eWxlLnpvb20gIT09IGNvcmVfc3RydW5kZWZpbmVkICkgewotCQkJLy8gU3VwcG9ydDogSUU8OAotCQkJLy8gQ2hlY2sgaWYgbmF0aXZlbHkgYmxvY2stbGV2ZWwgZWxlbWVudHMgYWN0IGxpa2UgaW5saW5lLWJsb2NrCi0JCQkvLyBlbGVtZW50cyB3aGVuIHNldHRpbmcgdGhlaXIgZGlzcGxheSB0byAnaW5saW5lJyBhbmQgZ2l2aW5nCi0JCQkvLyB0aGVtIGxheW91dAotCQkJZGl2LmlubmVySFRNTCA9ICIiOwotCQkJZGl2LnN0eWxlLmNzc1RleHQgPSBkaXZSZXNldCArICJ3aWR0aDoxcHg7cGFkZGluZzoxcHg7ZGlzcGxheTppbmxpbmU7em9vbToxIjsKLQkJCXN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dCA9ICggZGl2Lm9mZnNldFdpZHRoID09PSAzICk7Ci0KLQkJCS8vIFN1cHBvcnQ6IElFNgotCQkJLy8gQ2hlY2sgaWYgZWxlbWVudHMgd2l0aCBsYXlvdXQgc2hyaW5rLXdyYXAgdGhlaXIgY2hpbGRyZW4KLQkJCWRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLQkJCWRpdi5pbm5lckhUTUwgPSAiPGRpdj48L2Rpdj4iOwotCQkJZGl2LmZpcnN0Q2hpbGQuc3R5bGUud2lkdGggPSAiNXB4IjsKLQkJCXN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyA9ICggZGl2Lm9mZnNldFdpZHRoICE9PSAzICk7Ci0KLQkJCWlmICggc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0ICkgewotCQkJCS8vIFByZXZlbnQgSUUgNiBmcm9tIGFmZmVjdGluZyBsYXlvdXQgZm9yIHBvc2l0aW9uZWQgZWxlbWVudHMgIzExMDQ4Ci0JCQkJLy8gUHJldmVudCBJRSBmcm9tIHNocmlua2luZyB0aGUgYm9keSBpbiBJRSA3IG1vZGUgIzEyODY5Ci0JCQkJLy8gU3VwcG9ydDogSUU8OAotCQkJCWJvZHkuc3R5bGUuem9vbSA9IDE7Ci0JCQl9Ci0JCX0KLQotCQlib2R5LnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTsKLQotCQkvLyBOdWxsIGVsZW1lbnRzIHRvIGF2b2lkIGxlYWtzIGluIElFCi0JCWNvbnRhaW5lciA9IGRpdiA9IHRkcyA9IG1hcmdpbkRpdiA9IG51bGw7Ci0JfSk7Ci0KLQkvLyBOdWxsIGVsZW1lbnRzIHRvIGF2b2lkIGxlYWtzIGluIElFCi0JYWxsID0gc2VsZWN0ID0gZnJhZ21lbnQgPSBvcHQgPSBhID0gaW5wdXQgPSBudWxsOwotCi0JcmV0dXJuIHN1cHBvcnQ7Ci19KSgpOwotCi12YXIgcmJyYWNlID0gLyg/Olx7W1xzXFNdKlx9fFxbW1xzXFNdKlxdKSQvLAotCXJtdWx0aURhc2ggPSAvKFtBLVpdKS9nOwotCi1mdW5jdGlvbiBpbnRlcm5hbERhdGEoIGVsZW0sIG5hbWUsIGRhdGEsIHB2dCAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApewotCWlmICggIWpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkgKSB7Ci0JCXJldHVybjsKLQl9Ci0KLQl2YXIgdGhpc0NhY2hlLCByZXQsCi0JCWludGVybmFsS2V5ID0galF1ZXJ5LmV4cGFuZG8sCi0JCWdldEJ5TmFtZSA9IHR5cGVvZiBuYW1lID09PSAic3RyaW5nIiwKLQotCQkvLyBXZSBoYXZlIHRvIGhhbmRsZSBET00gbm9kZXMgYW5kIEpTIG9iamVjdHMgZGlmZmVyZW50bHkgYmVjYXVzZSBJRTYtNwotCQkvLyBjYW4ndCBHQyBvYmplY3QgcmVmZXJlbmNlcyBwcm9wZXJseSBhY3Jvc3MgdGhlIERPTS1KUyBib3VuZGFyeQotCQlpc05vZGUgPSBlbGVtLm5vZGVUeXBlLAotCi0JCS8vIE9ubHkgRE9NIG5vZGVzIG5lZWQgdGhlIGdsb2JhbCBqUXVlcnkgY2FjaGU7IEpTIG9iamVjdCBkYXRhIGlzCi0JCS8vIGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRoZSBvYmplY3Qgc28gR0MgY2FuIG9jY3VyIGF1dG9tYXRpY2FsbHkKLQkJY2FjaGUgPSBpc05vZGUgPyBqUXVlcnkuY2FjaGUgOiBlbGVtLAotCi0JCS8vIE9ubHkgZGVmaW5pbmcgYW4gSUQgZm9yIEpTIG9iamVjdHMgaWYgaXRzIGNhY2hlIGFscmVhZHkgZXhpc3RzIGFsbG93cwotCQkvLyB0aGUgY29kZSB0byBzaG9ydGN1dCBvbiB0aGUgc2FtZSBwYXRoIGFzIGEgRE9NIG5vZGUgd2l0aCBubyBjYWNoZQotCQlpZCA9IGlzTm9kZSA/IGVsZW1bIGludGVybmFsS2V5IF0gOiBlbGVtWyBpbnRlcm5hbEtleSBdICYmIGludGVybmFsS2V5OwotCi0JLy8gQXZvaWQgZG9pbmcgYW55IG1vcmUgd29yayB0aGFuIHdlIG5lZWQgdG8gd2hlbiB0cnlpbmcgdG8gZ2V0IGRhdGEgb24gYW4KLQkvLyBvYmplY3QgdGhhdCBoYXMgbm8gZGF0YSBhdCBhbGwKLQlpZiAoICghaWQgfHwgIWNhY2hlW2lkXSB8fCAoIXB2dCAmJiAhY2FjaGVbaWRdLmRhdGEpKSAmJiBnZXRCeU5hbWUgJiYgZGF0YSA9PT0gdW5kZWZpbmVkICkgewotCQlyZXR1cm47Ci0JfQotCi0JaWYgKCAhaWQgKSB7Ci0JCS8vIE9ubHkgRE9NIG5vZGVzIG5lZWQgYSBuZXcgdW5pcXVlIElEIGZvciBlYWNoIGVsZW1lbnQgc2luY2UgdGhlaXIgZGF0YQotCQkvLyBlbmRzIHVwIGluIHRoZSBnbG9iYWwgY2FjaGUKLQkJaWYgKCBpc05vZGUgKSB7Ci0JCQllbGVtWyBpbnRlcm5hbEtleSBdID0gaWQgPSBjb3JlX2RlbGV0ZWRJZHMucG9wKCkgfHwgalF1ZXJ5Lmd1aWQrKzsKLQkJfSBlbHNlIHsKLQkJCWlkID0gaW50ZXJuYWxLZXk7Ci0JCX0KLQl9Ci0KLQlpZiAoICFjYWNoZVsgaWQgXSApIHsKLQkJY2FjaGVbIGlkIF0gPSB7fTsKLQotCQkvLyBBdm9pZHMgZXhwb3NpbmcgalF1ZXJ5IG1ldGFkYXRhIG9uIHBsYWluIEpTIG9iamVjdHMgd2hlbiB0aGUgb2JqZWN0Ci0JCS8vIGlzIHNlcmlhbGl6ZWQgdXNpbmcgSlNPTi5zdHJpbmdpZnkKLQkJaWYgKCAhaXNOb2RlICkgewotCQkJY2FjaGVbIGlkIF0udG9KU09OID0galF1ZXJ5Lm5vb3A7Ci0JCX0KLQl9Ci0KLQkvLyBBbiBvYmplY3QgY2FuIGJlIHBhc3NlZCB0byBqUXVlcnkuZGF0YSBpbnN0ZWFkIG9mIGEga2V5L3ZhbHVlIHBhaXI7IHRoaXMgZ2V0cwotCS8vIHNoYWxsb3cgY29waWVkIG92ZXIgb250byB0aGUgZXhpc3RpbmcgY2FjaGUKLQlpZiAoIHR5cGVvZiBuYW1lID09PSAib2JqZWN0IiB8fCB0eXBlb2YgbmFtZSA9PT0gImZ1bmN0aW9uIiApIHsKLQkJaWYgKCBwdnQgKSB7Ci0JCQljYWNoZVsgaWQgXSA9IGpRdWVyeS5leHRlbmQoIGNhY2hlWyBpZCBdLCBuYW1lICk7Ci0JCX0gZWxzZSB7Ci0JCQljYWNoZVsgaWQgXS5kYXRhID0galF1ZXJ5LmV4dGVuZCggY2FjaGVbIGlkIF0uZGF0YSwgbmFtZSApOwotCQl9Ci0JfQotCi0JdGhpc0NhY2hlID0gY2FjaGVbIGlkIF07Ci0KLQkvLyBqUXVlcnkgZGF0YSgpIGlzIHN0b3JlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBpbnNpZGUgdGhlIG9iamVjdCdzIGludGVybmFsIGRhdGEKLQkvLyBjYWNoZSBpbiBvcmRlciB0byBhdm9pZCBrZXkgY29sbGlzaW9ucyBiZXR3ZWVuIGludGVybmFsIGRhdGEgYW5kIHVzZXItZGVmaW5lZAotCS8vIGRhdGEuCi0JaWYgKCAhcHZ0ICkgewotCQlpZiAoICF0aGlzQ2FjaGUuZGF0YSApIHsKLQkJCXRoaXNDYWNoZS5kYXRhID0ge307Ci0JCX0KLQotCQl0aGlzQ2FjaGUgPSB0aGlzQ2FjaGUuZGF0YTsKLQl9Ci0KLQlpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHsKLQkJdGhpc0NhY2hlWyBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICkgXSA9IGRhdGE7Ci0JfQotCi0JLy8gQ2hlY2sgZm9yIGJvdGggY29udmVydGVkLXRvLWNhbWVsIGFuZCBub24tY29udmVydGVkIGRhdGEgcHJvcGVydHkgbmFtZXMKLQkvLyBJZiBhIGRhdGEgcHJvcGVydHkgd2FzIHNwZWNpZmllZAotCWlmICggZ2V0QnlOYW1lICkgewotCi0JCS8vIEZpcnN0IFRyeSB0byBmaW5kIGFzLWlzIHByb3BlcnR5IGRhdGEKLQkJcmV0ID0gdGhpc0NhY2hlWyBuYW1lIF07Ci0KLQkJLy8gVGVzdCBmb3IgbnVsbHx1bmRlZmluZWQgcHJvcGVydHkgZGF0YQotCQlpZiAoIHJldCA9PSBudWxsICkgewotCi0JCQkvLyBUcnkgdG8gZmluZCB0aGUgY2FtZWxDYXNlZCBwcm9wZXJ0eQotCQkJcmV0ID0gdGhpc0NhY2hlWyBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICkgXTsKLQkJfQotCX0gZWxzZSB7Ci0JCXJldCA9IHRoaXNDYWNoZTsKLQl9Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1mdW5jdGlvbiBpbnRlcm5hbFJlbW92ZURhdGEoIGVsZW0sIG5hbWUsIHB2dCApIHsKLQlpZiAoICFqUXVlcnkuYWNjZXB0RGF0YSggZWxlbSApICkgewotCQlyZXR1cm47Ci0JfQotCi0JdmFyIGksIGwsIHRoaXNDYWNoZSwKLQkJaXNOb2RlID0gZWxlbS5ub2RlVHlwZSwKLQotCQkvLyBTZWUgalF1ZXJ5LmRhdGEgZm9yIG1vcmUgaW5mb3JtYXRpb24KLQkJY2FjaGUgPSBpc05vZGUgPyBqUXVlcnkuY2FjaGUgOiBlbGVtLAotCQlpZCA9IGlzTm9kZSA/IGVsZW1bIGpRdWVyeS5leHBhbmRvIF0gOiBqUXVlcnkuZXhwYW5kbzsKLQotCS8vIElmIHRoZXJlIGlzIGFscmVhZHkgbm8gY2FjaGUgZW50cnkgZm9yIHRoaXMgb2JqZWN0LCB0aGVyZSBpcyBubwotCS8vIHB1cnBvc2UgaW4gY29udGludWluZwotCWlmICggIWNhY2hlWyBpZCBdICkgewotCQlyZXR1cm47Ci0JfQotCi0JaWYgKCBuYW1lICkgewotCi0JCXRoaXNDYWNoZSA9IHB2dCA/IGNhY2hlWyBpZCBdIDogY2FjaGVbIGlkIF0uZGF0YTsKLQotCQlpZiAoIHRoaXNDYWNoZSApIHsKLQotCQkJLy8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG5hbWVzIGZvciBkYXRhIGtleXMKLQkJCWlmICggIWpRdWVyeS5pc0FycmF5KCBuYW1lICkgKSB7Ci0KLQkJCQkvLyB0cnkgdGhlIHN0cmluZyBhcyBhIGtleSBiZWZvcmUgYW55IG1hbmlwdWxhdGlvbgotCQkJCWlmICggbmFtZSBpbiB0aGlzQ2FjaGUgKSB7Ci0JCQkJCW5hbWUgPSBbIG5hbWUgXTsKLQkJCQl9IGVsc2UgewotCi0JCQkJCS8vIHNwbGl0IHRoZSBjYW1lbCBjYXNlZCB2ZXJzaW9uIGJ5IHNwYWNlcyB1bmxlc3MgYSBrZXkgd2l0aCB0aGUgc3BhY2VzIGV4aXN0cwotCQkJCQluYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApOwotCQkJCQlpZiAoIG5hbWUgaW4gdGhpc0NhY2hlICkgewotCQkJCQkJbmFtZSA9IFsgbmFtZSBdOwotCQkJCQl9IGVsc2UgewotCQkJCQkJbmFtZSA9IG5hbWUuc3BsaXQoIiAiKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0gZWxzZSB7Ci0JCQkJLy8gSWYgIm5hbWUiIGlzIGFuIGFycmF5IG9mIGtleXMuLi4KLQkJCQkvLyBXaGVuIGRhdGEgaXMgaW5pdGlhbGx5IGNyZWF0ZWQsIHZpYSAoImtleSIsICJ2YWwiKSBzaWduYXR1cmUsCi0JCQkJLy8ga2V5cyB3aWxsIGJlIGNvbnZlcnRlZCB0byBjYW1lbENhc2UuCi0JCQkJLy8gU2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgX2hvd18gYSBrZXkgd2FzIGFkZGVkLCByZW1vdmUKLQkJCQkvLyBib3RoIHBsYWluIGtleSBhbmQgY2FtZWxDYXNlIGtleS4gIzEyNzg2Ci0JCQkJLy8gVGhpcyB3aWxsIG9ubHkgcGVuYWxpemUgdGhlIGFycmF5IGFyZ3VtZW50IHBhdGguCi0JCQkJbmFtZSA9IG5hbWUuY29uY2F0KCBqUXVlcnkubWFwKCBuYW1lLCBqUXVlcnkuY2FtZWxDYXNlICkgKTsKLQkJCX0KLQotCQkJZm9yICggaSA9IDAsIGwgPSBuYW1lLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLQkJCQlkZWxldGUgdGhpc0NhY2hlWyBuYW1lW2ldIF07Ci0JCQl9Ci0KLQkJCS8vIElmIHRoZXJlIGlzIG5vIGRhdGEgbGVmdCBpbiB0aGUgY2FjaGUsIHdlIHdhbnQgdG8gY29udGludWUKLQkJCS8vIGFuZCBsZXQgdGhlIGNhY2hlIG9iamVjdCBpdHNlbGYgZ2V0IGRlc3Ryb3llZAotCQkJaWYgKCAhKCBwdnQgPyBpc0VtcHR5RGF0YU9iamVjdCA6IGpRdWVyeS5pc0VtcHR5T2JqZWN0ICkoIHRoaXNDYWNoZSApICkgewotCQkJCXJldHVybjsKLQkJCX0KLQkJfQotCX0KLQotCS8vIFNlZSBqUXVlcnkuZGF0YSBmb3IgbW9yZSBpbmZvcm1hdGlvbgotCWlmICggIXB2dCApIHsKLQkJZGVsZXRlIGNhY2hlWyBpZCBdLmRhdGE7Ci0KLQkJLy8gRG9uJ3QgZGVzdHJveSB0aGUgcGFyZW50IGNhY2hlIHVubGVzcyB0aGUgaW50ZXJuYWwgZGF0YSBvYmplY3QKLQkJLy8gaGFkIGJlZW4gdGhlIG9ubHkgdGhpbmcgbGVmdCBpbiBpdAotCQlpZiAoICFpc0VtcHR5RGF0YU9iamVjdCggY2FjaGVbIGlkIF0gKSApIHsKLQkJCXJldHVybjsKLQkJfQotCX0KLQotCS8vIERlc3Ryb3kgdGhlIGNhY2hlCi0JaWYgKCBpc05vZGUgKSB7Ci0JCWpRdWVyeS5jbGVhbkRhdGEoIFsgZWxlbSBdLCB0cnVlICk7Ci0KLQkvLyBVc2UgZGVsZXRlIHdoZW4gc3VwcG9ydGVkIGZvciBleHBhbmRvcyBvciBgY2FjaGVgIGlzIG5vdCBhIHdpbmRvdyBwZXIgaXNXaW5kb3cgKCMxMDA4MCkKLQl9IGVsc2UgaWYgKCBqUXVlcnkuc3VwcG9ydC5kZWxldGVFeHBhbmRvIHx8IGNhY2hlICE9IGNhY2hlLndpbmRvdyApIHsKLQkJZGVsZXRlIGNhY2hlWyBpZCBdOwotCi0JLy8gV2hlbiBhbGwgZWxzZSBmYWlscywgbnVsbAotCX0gZWxzZSB7Ci0JCWNhY2hlWyBpZCBdID0gbnVsbDsKLQl9Ci19Ci0KLWpRdWVyeS5leHRlbmQoewotCWNhY2hlOiB7fSwKLQotCS8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZQotCS8vIE5vbi1kaWdpdHMgcmVtb3ZlZCB0byBtYXRjaCByaW5saW5lalF1ZXJ5Ci0JZXhwYW5kbzogImpRdWVyeSIgKyAoIGNvcmVfdmVyc2lvbiArIE1hdGgucmFuZG9tKCkgKS5yZXBsYWNlKCAvXEQvZywgIiIgKSwKLQotCS8vIFRoZSBmb2xsb3dpbmcgZWxlbWVudHMgdGhyb3cgdW5jYXRjaGFibGUgZXhjZXB0aW9ucyBpZiB5b3UKLQkvLyBhdHRlbXB0IHRvIGFkZCBleHBhbmRvIHByb3BlcnRpZXMgdG8gdGhlbS4KLQlub0RhdGE6IHsKLQkJImVtYmVkIjogdHJ1ZSwKLQkJLy8gQmFuIGFsbCBvYmplY3RzIGV4Y2VwdCBmb3IgRmxhc2ggKHdoaWNoIGhhbmRsZSBleHBhbmRvcykKLQkJIm9iamVjdCI6ICJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLAotCQkiYXBwbGV0IjogdHJ1ZQotCX0sCi0KLQloYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJZWxlbSA9IGVsZW0ubm9kZVR5cGUgPyBqUXVlcnkuY2FjaGVbIGVsZW1balF1ZXJ5LmV4cGFuZG9dIF0gOiBlbGVtWyBqUXVlcnkuZXhwYW5kbyBdOwotCQlyZXR1cm4gISFlbGVtICYmICFpc0VtcHR5RGF0YU9iamVjdCggZWxlbSApOwotCX0sCi0KLQlkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHsKLQkJcmV0dXJuIGludGVybmFsRGF0YSggZWxlbSwgbmFtZSwgZGF0YSApOwotCX0sCi0KLQlyZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKLQkJcmV0dXJuIGludGVybmFsUmVtb3ZlRGF0YSggZWxlbSwgbmFtZSApOwotCX0sCi0KLQkvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCi0JX2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkgewotCQlyZXR1cm4gaW50ZXJuYWxEYXRhKCBlbGVtLCBuYW1lLCBkYXRhLCB0cnVlICk7Ci0JfSwKLQotCV9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKLQkJcmV0dXJuIGludGVybmFsUmVtb3ZlRGF0YSggZWxlbSwgbmFtZSwgdHJ1ZSApOwotCX0sCi0KLQkvLyBBIG1ldGhvZCBmb3IgZGV0ZXJtaW5pbmcgaWYgYSBET00gbm9kZSBjYW4gaGFuZGxlIHRoZSBkYXRhIGV4cGFuZG8KLQlhY2NlcHREYXRhOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJLy8gRG8gbm90IHNldCBkYXRhIG9uIG5vbi1lbGVtZW50IGJlY2F1c2UgaXQgd2lsbCBub3QgYmUgY2xlYXJlZCAoIzgzMzUpLgotCQlpZiAoIGVsZW0ubm9kZVR5cGUgJiYgZWxlbS5ub2RlVHlwZSAhPT0gMSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkgewotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0KLQkJdmFyIG5vRGF0YSA9IGVsZW0ubm9kZU5hbWUgJiYgalF1ZXJ5Lm5vRGF0YVsgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07Ci0KLQkJLy8gbm9kZXMgYWNjZXB0IGRhdGEgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQ7IHJlamVjdGlvbiBjYW4gYmUgY29uZGl0aW9uYWwKLQkJcmV0dXJuICFub0RhdGEgfHwgbm9EYXRhICE9PSB0cnVlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCJjbGFzc2lkIikgPT09IG5vRGF0YTsKLQl9Ci19KTsKLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0JZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7Ci0JCXZhciBhdHRycywgbmFtZSwKLQkJCWVsZW0gPSB0aGlzWzBdLAotCQkJaSA9IDAsCi0JCQlkYXRhID0gbnVsbDsKLQotCQkvLyBHZXRzIGFsbCB2YWx1ZXMKLQkJaWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHsKLQkJCWlmICggdGhpcy5sZW5ndGggKSB7Ci0JCQkJZGF0YSA9IGpRdWVyeS5kYXRhKCBlbGVtICk7Ci0KLQkJCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgIWpRdWVyeS5fZGF0YSggZWxlbSwgInBhcnNlZEF0dHJzIiApICkgewotCQkJCQlhdHRycyA9IGVsZW0uYXR0cmlidXRlczsKLQkJCQkJZm9yICggOyBpIDwgYXR0cnMubGVuZ3RoOyBpKysgKSB7Ci0JCQkJCQluYW1lID0gYXR0cnNbaV0ubmFtZTsKLQotCQkJCQkJaWYgKCAhbmFtZS5pbmRleE9mKCAiZGF0YS0iICkgKSB7Ci0JCQkJCQkJbmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUuc2xpY2UoNSkgKTsKLQotCQkJCQkJCWRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCQlqUXVlcnkuX2RhdGEoIGVsZW0sICJwYXJzZWRBdHRycyIsIHRydWUgKTsKLQkJCQl9Ci0JCQl9Ci0KLQkJCXJldHVybiBkYXRhOwotCQl9Ci0KLQkJLy8gU2V0cyBtdWx0aXBsZSB2YWx1ZXMKLQkJaWYgKCB0eXBlb2Yga2V5ID09PSAib2JqZWN0IiApIHsKLQkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQkJalF1ZXJ5LmRhdGEoIHRoaXMsIGtleSApOwotCQkJfSk7Ci0JCX0KLQotCQlyZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkgewotCi0JCQlpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgKSB7Ci0JCQkJLy8gVHJ5IHRvIGZldGNoIGFueSBpbnRlcm5hbGx5IHN0b3JlZCBkYXRhIGZpcnN0Ci0JCQkJcmV0dXJuIGVsZW0gPyBkYXRhQXR0ciggZWxlbSwga2V5LCBqUXVlcnkuZGF0YSggZWxlbSwga2V5ICkgKSA6IG51bGw7Ci0JCQl9Ci0KLQkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHsKLQkJCQlqUXVlcnkuZGF0YSggdGhpcywga2V5LCB2YWx1ZSApOwotCQkJfSk7Ci0JCX0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgdHJ1ZSApOwotCX0sCi0KLQlyZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkgewotCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotCQkJalF1ZXJ5LnJlbW92ZURhdGEoIHRoaXMsIGtleSApOwotCQl9KTsKLQl9Ci19KTsKLQotZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHsKLQkvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55Ci0JLy8gZGF0YSBmcm9tIHRoZSBIVE1MNSBkYXRhLSogYXR0cmlidXRlCi0JaWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLQotCQl2YXIgbmFtZSA9ICJkYXRhLSIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgIi0kMSIgKS50b0xvd2VyQ2FzZSgpOwotCi0JCWRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApOwotCi0JCWlmICggdHlwZW9mIGRhdGEgPT09ICJzdHJpbmciICkgewotCQkJdHJ5IHsKLQkJCQlkYXRhID0gZGF0YSA9PT0gInRydWUiID8gdHJ1ZSA6Ci0JCQkJCWRhdGEgPT09ICJmYWxzZSIgPyBmYWxzZSA6Ci0JCQkJCWRhdGEgPT09ICJudWxsIiA/IG51bGwgOgotCQkJCQkvLyBPbmx5IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZwotCQkJCQkrZGF0YSArICIiID09PSBkYXRhID8gK2RhdGEgOgotCQkJCQlyYnJhY2UudGVzdCggZGF0YSApID8galF1ZXJ5LnBhcnNlSlNPTiggZGF0YSApIDoKLQkJCQkJCWRhdGE7Ci0JCQl9IGNhdGNoKCBlICkge30KLQotCQkJLy8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyCi0JCQlqUXVlcnkuZGF0YSggZWxlbSwga2V5LCBkYXRhICk7Ci0KLQkJfSBlbHNlIHsKLQkJCWRhdGEgPSB1bmRlZmluZWQ7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gZGF0YTsKLX0KLQotLy8gY2hlY2tzIGEgY2FjaGUgb2JqZWN0IGZvciBlbXB0aW5lc3MKLWZ1bmN0aW9uIGlzRW1wdHlEYXRhT2JqZWN0KCBvYmogKSB7Ci0JdmFyIG5hbWU7Ci0JZm9yICggbmFtZSBpbiBvYmogKSB7Ci0KLQkJLy8gaWYgdGhlIHB1YmxpYyBkYXRhIG9iamVjdCBpcyBlbXB0eSwgdGhlIHByaXZhdGUgaXMgc3RpbGwgZW1wdHkKLQkJaWYgKCBuYW1lID09PSAiZGF0YSIgJiYgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIG9ialtuYW1lXSApICkgewotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCBuYW1lICE9PSAidG9KU09OIiApIHsKLQkJCXJldHVybiBmYWxzZTsKLQkJfQotCX0KLQotCXJldHVybiB0cnVlOwotfQotalF1ZXJ5LmV4dGVuZCh7Ci0JcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkgewotCQl2YXIgcXVldWU7Ci0KLQkJaWYgKCBlbGVtICkgewotCQkJdHlwZSA9ICggdHlwZSB8fCAiZngiICkgKyAicXVldWUiOwotCQkJcXVldWUgPSBqUXVlcnkuX2RhdGEoIGVsZW0sIHR5cGUgKTsKLQotCQkJLy8gU3BlZWQgdXAgZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlja2x5IGlmIHRoaXMgaXMganVzdCBhIGxvb2t1cAotCQkJaWYgKCBkYXRhICkgewotCQkJCWlmICggIXF1ZXVlIHx8IGpRdWVyeS5pc0FycmF5KGRhdGEpICkgewotCQkJCQlxdWV1ZSA9IGpRdWVyeS5fZGF0YSggZWxlbSwgdHlwZSwgalF1ZXJ5Lm1ha2VBcnJheShkYXRhKSApOwotCQkJCX0gZWxzZSB7Ci0JCQkJCXF1ZXVlLnB1c2goIGRhdGEgKTsKLQkJCQl9Ci0JCQl9Ci0JCQlyZXR1cm4gcXVldWUgfHwgW107Ci0JCX0KLQl9LAotCi0JZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7Ci0JCXR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0KLQkJdmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksCi0JCQlzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCwKLQkJCWZuID0gcXVldWUuc2hpZnQoKSwKLQkJCWhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksCi0JCQluZXh0ID0gZnVuY3Rpb24oKSB7Ci0JCQkJalF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5cGUgKTsKLQkJCX07Ci0KLQkJLy8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbAotCQlpZiAoIGZuID09PSAiaW5wcm9ncmVzcyIgKSB7Ci0JCQlmbiA9IHF1ZXVlLnNoaWZ0KCk7Ci0JCQlzdGFydExlbmd0aC0tOwotCQl9Ci0KLQkJaG9va3MuY3VyID0gZm47Ci0JCWlmICggZm4gKSB7Ci0KLQkJCS8vIEFkZCBhIHByb2dyZXNzIHNlbnRpbmVsIHRvIHByZXZlbnQgdGhlIGZ4IHF1ZXVlIGZyb20gYmVpbmcKLQkJCS8vIGF1dG9tYXRpY2FsbHkgZGVxdWV1ZWQKLQkJCWlmICggdHlwZSA9PT0gImZ4IiApIHsKLQkJCQlxdWV1ZS51bnNoaWZ0KCAiaW5wcm9ncmVzcyIgKTsKLQkJCX0KLQotCQkJLy8gY2xlYXIgdXAgdGhlIGxhc3QgcXVldWUgc3RvcCBmdW5jdGlvbgotCQkJZGVsZXRlIGhvb2tzLnN0b3A7Ci0JCQlmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApOwotCQl9Ci0KLQkJaWYgKCAhc3RhcnRMZW5ndGggJiYgaG9va3MgKSB7Ci0JCQlob29rcy5lbXB0eS5maXJlKCk7Ci0JCX0KLQl9LAotCi0JLy8gbm90IGludGVuZGVkIGZvciBwdWJsaWMgY29uc3VtcHRpb24gLSBnZW5lcmF0ZXMgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJucyB0aGUgY3VycmVudCBvbmUKLQlfcXVldWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7Ci0JCXZhciBrZXkgPSB0eXBlICsgInF1ZXVlSG9va3MiOwotCQlyZXR1cm4galF1ZXJ5Ll9kYXRhKCBlbGVtLCBrZXkgKSB8fCBqUXVlcnkuX2RhdGEoIGVsZW0sIGtleSwgewotCQkJZW1wdHk6IGpRdWVyeS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCkgewotCQkJCWpRdWVyeS5fcmVtb3ZlRGF0YSggZWxlbSwgdHlwZSArICJxdWV1ZSIgKTsKLQkJCQlqUXVlcnkuX3JlbW92ZURhdGEoIGVsZW0sIGtleSApOwotCQkJfSkKLQkJfSk7Ci0JfQotfSk7Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotCXF1ZXVlOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKLQkJdmFyIHNldHRlciA9IDI7Ci0KLQkJaWYgKCB0eXBlb2YgdHlwZSAhPT0gInN0cmluZyIgKSB7Ci0JCQlkYXRhID0gdHlwZTsKLQkJCXR5cGUgPSAiZngiOwotCQkJc2V0dGVyLS07Ci0JCX0KLQotCQlpZiAoIGFyZ3VtZW50cy5sZW5ndGggPCBzZXR0ZXIgKSB7Ci0JCQlyZXR1cm4galF1ZXJ5LnF1ZXVlKCB0aGlzWzBdLCB0eXBlICk7Ci0JCX0KLQotCQlyZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID8KLQkJCXRoaXMgOgotCQkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotCQkJCXZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgZGF0YSApOwotCi0JCQkJLy8gZW5zdXJlIGEgaG9va3MgZm9yIHRoaXMgcXVldWUKLQkJCQlqUXVlcnkuX3F1ZXVlSG9va3MoIHRoaXMsIHR5cGUgKTsKLQotCQkJCWlmICggdHlwZSA9PT0gImZ4IiAmJiBxdWV1ZVswXSAhPT0gImlucHJvZ3Jlc3MiICkgewotCQkJCQlqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwotCQkJCX0KLQkJCX0pOwotCX0sCi0JZGVxdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7Ci0JCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQlqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwotCQl9KTsKLQl9LAotCS8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi4KLQkvLyBodHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvCi0JZGVsYXk6IGZ1bmN0aW9uKCB0aW1lLCB0eXBlICkgewotCQl0aW1lID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGltZSBdIHx8IHRpbWUgOiB0aW1lOwotCQl0eXBlID0gdHlwZSB8fCAiZngiOwotCi0JCXJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7Ci0JCQl2YXIgdGltZW91dCA9IHNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTsKLQkJCWhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHsKLQkJCQljbGVhclRpbWVvdXQoIHRpbWVvdXQgKTsKLQkJCX07Ci0JCX0pOwotCX0sCi0JY2xlYXJRdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7Ci0JCXJldHVybiB0aGlzLnF1ZXVlKCB0eXBlIHx8ICJmeCIsIFtdICk7Ci0JfSwKLQkvLyBHZXQgYSBwcm9taXNlIHJlc29sdmVkIHdoZW4gcXVldWVzIG9mIGEgY2VydGFpbiB0eXBlCi0JLy8gYXJlIGVtcHRpZWQgKGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpCi0JcHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHsKLQkJdmFyIHRtcCwKLQkJCWNvdW50ID0gMSwKLQkJCWRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksCi0JCQllbGVtZW50cyA9IHRoaXMsCi0JCQlpID0gdGhpcy5sZW5ndGgsCi0JCQlyZXNvbHZlID0gZnVuY3Rpb24oKSB7Ci0JCQkJaWYgKCAhKCAtLWNvdW50ICkgKSB7Ci0JCQkJCWRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBdICk7Ci0JCQkJfQotCQkJfTsKLQotCQlpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKLQkJCW9iaiA9IHR5cGU7Ci0JCQl0eXBlID0gdW5kZWZpbmVkOwotCQl9Ci0JCXR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0KLQkJd2hpbGUoIGktLSApIHsKLQkJCXRtcCA9IGpRdWVyeS5fZGF0YSggZWxlbWVudHNbIGkgXSwgdHlwZSArICJxdWV1ZUhvb2tzIiApOwotCQkJaWYgKCB0bXAgJiYgdG1wLmVtcHR5ICkgewotCQkJCWNvdW50Kys7Ci0JCQkJdG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApOwotCQkJfQotCQl9Ci0JCXJlc29sdmUoKTsKLQkJcmV0dXJuIGRlZmVyLnByb21pc2UoIG9iaiApOwotCX0KLX0pOwotdmFyIG5vZGVIb29rLCBib29sSG9vaywKLQlyY2xhc3MgPSAvW1x0XHJcbl0vZywKLQlycmV0dXJuID0gL1xyL2csCi0JcmZvY3VzYWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QpJC9pLAotCXJjbGlja2FibGUgPSAvXig/OmF8YXJlYSkkL2ksCi0JcmJvb2xlYW4gPSAvXig/OmNoZWNrZWR8c2VsZWN0ZWR8YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkKSQvaSwKLQlydXNlRGVmYXVsdCA9IC9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2ksCi0JZ2V0U2V0QXR0cmlidXRlID0galF1ZXJ5LnN1cHBvcnQuZ2V0U2V0QXR0cmlidXRlLAotCWdldFNldElucHV0ID0galF1ZXJ5LnN1cHBvcnQuaW5wdXQ7Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotCWF0dHI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKLQkJcmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKLQl9LAotCi0JcmVtb3ZlQXR0cjogZnVuY3Rpb24oIG5hbWUgKSB7Ci0JCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQlqUXVlcnkucmVtb3ZlQXR0ciggdGhpcywgbmFtZSApOwotCQl9KTsKLQl9LAotCi0JcHJvcDogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewotCQlyZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgalF1ZXJ5LnByb3AsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApOwotCX0sCi0KLQlyZW1vdmVQcm9wOiBmdW5jdGlvbiggbmFtZSApIHsKLQkJbmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTsKLQkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLQkJCS8vIHRyeS9jYXRjaCBoYW5kbGVzIGNhc2VzIHdoZXJlIElFIGJhbGtzIChzdWNoIGFzIHJlbW92aW5nIGEgcHJvcGVydHkgb24gd2luZG93KQotCQkJdHJ5IHsKLQkJCQl0aGlzWyBuYW1lIF0gPSB1bmRlZmluZWQ7Ci0JCQkJZGVsZXRlIHRoaXNbIG5hbWUgXTsKLQkJCX0gY2F0Y2goIGUgKSB7fQotCQl9KTsKLQl9LAotCi0JYWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLQkJdmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY2xhenosIGosCi0JCQlpID0gMCwKLQkJCWxlbiA9IHRoaXMubGVuZ3RoLAotCQkJcHJvY2VlZCA9IHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYgdmFsdWU7Ci0KLQkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKLQkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGogKSB7Ci0JCQkJalF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIHRoaXMuY2xhc3NOYW1lICkgKTsKLQkJCX0pOwotCQl9Ci0KLQkJaWYgKCBwcm9jZWVkICkgewotCQkJLy8gVGhlIGRpc2p1bmN0aW9uIGhlcmUgaXMgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSByZW1vdmVDbGFzcykKLQkJCWNsYXNzZXMgPSAoIHZhbHVlIHx8ICIiICkubWF0Y2goIGNvcmVfcm5vdHdoaXRlICkgfHwgW107Ci0KLQkJCWZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotCQkJCWVsZW0gPSB0aGlzWyBpIF07Ci0JCQkJY3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIGVsZW0uY2xhc3NOYW1lID8KLQkJCQkJKCAiICIgKyBlbGVtLmNsYXNzTmFtZSArICIgIiApLnJlcGxhY2UoIHJjbGFzcywgIiAiICkgOgotCQkJCQkiICIKLQkJCQkpOwotCi0JCQkJaWYgKCBjdXIgKSB7Ci0JCQkJCWogPSAwOwotCQkJCQl3aGlsZSAoIChjbGF6eiA9IGNsYXNzZXNbaisrXSkgKSB7Ci0JCQkJCQlpZiAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6eiArICIgIiApIDwgMCApIHsKLQkJCQkJCQljdXIgKz0gY2xhenogKyAiICI7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQkJZWxlbS5jbGFzc05hbWUgPSBqUXVlcnkudHJpbSggY3VyICk7Ci0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gdGhpczsKLQl9LAotCi0JcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLQkJdmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY2xhenosIGosCi0JCQlpID0gMCwKLQkJCWxlbiA9IHRoaXMubGVuZ3RoLAotCQkJcHJvY2VlZCA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDAgfHwgdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiAmJiB2YWx1ZTsKLQotCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewotCQkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaiApIHsKLQkJCQlqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgdGhpcy5jbGFzc05hbWUgKSApOwotCQkJfSk7Ci0JCX0KLQkJaWYgKCBwcm9jZWVkICkgewotCQkJY2xhc3NlcyA9ICggdmFsdWUgfHwgIiIgKS5tYXRjaCggY29yZV9ybm90d2hpdGUgKSB8fCBbXTsKLQotCQkJZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0JCQkJZWxlbSA9IHRoaXNbIGkgXTsKLQkJCQkvLyBUaGlzIGV4cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIGFkZENsYXNzKQotCQkJCWN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCBlbGVtLmNsYXNzTmFtZSA/Ci0JCQkJCSggIiAiICsgZWxlbS5jbGFzc05hbWUgKyAiICIgKS5yZXBsYWNlKCByY2xhc3MsICIgIiApIDoKLQkJCQkJIiIKLQkJCQkpOwotCi0JCQkJaWYgKCBjdXIgKSB7Ci0JCQkJCWogPSAwOwotCQkJCQl3aGlsZSAoIChjbGF6eiA9IGNsYXNzZXNbaisrXSkgKSB7Ci0JCQkJCQkvLyBSZW1vdmUgKmFsbCogaW5zdGFuY2VzCi0JCQkJCQl3aGlsZSAoIGN1ci5pbmRleE9mKCAiICIgKyBjbGF6eiArICIgIiApID49IDAgKSB7Ci0JCQkJCQkJY3VyID0gY3VyLnJlcGxhY2UoICIgIiArIGNsYXp6ICsgIiAiLCAiICIgKTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCQllbGVtLmNsYXNzTmFtZSA9IHZhbHVlID8galF1ZXJ5LnRyaW0oIGN1ciApIDogIiI7Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHRoaXM7Ci0JfSwKLQotCXRvZ2dsZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUsIHN0YXRlVmFsICkgewotCQl2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZSwKLQkJCWlzQm9vbCA9IHR5cGVvZiBzdGF0ZVZhbCA9PT0gImJvb2xlYW4iOwotCi0JCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7Ci0JCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkgewotCQkJCWpRdWVyeSggdGhpcyApLnRvZ2dsZUNsYXNzKCB2YWx1ZS5jYWxsKHRoaXMsIGksIHRoaXMuY2xhc3NOYW1lLCBzdGF0ZVZhbCksIHN0YXRlVmFsICk7Ci0JCQl9KTsKLQkJfQotCi0JCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQlpZiAoIHR5cGUgPT09ICJzdHJpbmciICkgewotCQkJCS8vIHRvZ2dsZSBpbmRpdmlkdWFsIGNsYXNzIG5hbWVzCi0JCQkJdmFyIGNsYXNzTmFtZSwKLQkJCQkJaSA9IDAsCi0JCQkJCXNlbGYgPSBqUXVlcnkoIHRoaXMgKSwKLQkJCQkJc3RhdGUgPSBzdGF0ZVZhbCwKLQkJCQkJY2xhc3NOYW1lcyA9IHZhbHVlLm1hdGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8IFtdOwotCi0JCQkJd2hpbGUgKCAoY2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSsrIF0pICkgewotCQkJCQkvLyBjaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3QKLQkJCQkJc3RhdGUgPSBpc0Jvb2wgPyBzdGF0ZSA6ICFzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKTsKLQkJCQkJc2VsZlsgc3RhdGUgPyAiYWRkQ2xhc3MiIDogInJlbW92ZUNsYXNzIiBdKCBjbGFzc05hbWUgKTsKLQkJCQl9Ci0KLQkJCS8vIFRvZ2dsZSB3aG9sZSBjbGFzcyBuYW1lCi0JCQl9IGVsc2UgaWYgKCB0eXBlID09PSBjb3JlX3N0cnVuZGVmaW5lZCB8fCB0eXBlID09PSAiYm9vbGVhbiIgKSB7Ci0JCQkJaWYgKCB0aGlzLmNsYXNzTmFtZSApIHsKLQkJCQkJLy8gc3RvcmUgY2xhc3NOYW1lIGlmIHNldAotCQkJCQlqUXVlcnkuX2RhdGEoIHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgdGhpcy5jbGFzc05hbWUgKTsKLQkJCQl9Ci0KLQkJCQkvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCAiZmFsc2UiLAotCQkJCS8vIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBjbGFzc25hbWUgKGlmIHRoZXJlIHdhcyBvbmUsIHRoZSBhYm92ZSBzYXZlZCBpdCkuCi0JCQkJLy8gT3RoZXJ3aXNlIGJyaW5nIGJhY2sgd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgc2F2ZWQgKGlmIGFueXRoaW5nKSwKLQkJCQkvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuCi0JCQkJdGhpcy5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgPyAiIiA6IGpRdWVyeS5fZGF0YSggdGhpcywgIl9fY2xhc3NOYW1lX18iICkgfHwgIiI7Ci0JCQl9Ci0JCX0pOwotCX0sCi0KLQloYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotCQl2YXIgY2xhc3NOYW1lID0gIiAiICsgc2VsZWN0b3IgKyAiICIsCi0JCQlpID0gMCwKLQkJCWwgPSB0aGlzLmxlbmd0aDsKLQkJZm9yICggOyBpIDwgbDsgaSsrICkgewotCQkJaWYgKCB0aGlzW2ldLm5vZGVUeXBlID09PSAxICYmICgiICIgKyB0aGlzW2ldLmNsYXNzTmFtZSArICIgIikucmVwbGFjZShyY2xhc3MsICIgIikuaW5kZXhPZiggY2xhc3NOYW1lICkgPj0gMCApIHsKLQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCX0KLQkJfQotCi0JCXJldHVybiBmYWxzZTsKLQl9LAotCi0JdmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0JCXZhciByZXQsIGhvb2tzLCBpc0Z1bmN0aW9uLAotCQkJZWxlbSA9IHRoaXNbMF07Ci0KLQkJaWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHsKLQkJCWlmICggZWxlbSApIHsKLQkJCQlob29rcyA9IGpRdWVyeS52YWxIb29rc1sgZWxlbS50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTsKLQotCQkJCWlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgInZhbHVlIiApKSAhPT0gdW5kZWZpbmVkICkgewotCQkJCQlyZXR1cm4gcmV0OwotCQkJCX0KLQotCQkJCXJldCA9IGVsZW0udmFsdWU7Ci0KLQkJCQlyZXR1cm4gdHlwZW9mIHJldCA9PT0gInN0cmluZyIgPwotCQkJCQkvLyBoYW5kbGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2VzCi0JCQkJCXJldC5yZXBsYWNlKHJyZXR1cm4sICIiKSA6Ci0JCQkJCS8vIGhhbmRsZSBjYXNlcyB3aGVyZSB2YWx1ZSBpcyBudWxsL3VuZGVmIG9yIG51bWJlcgotCQkJCQlyZXQgPT0gbnVsbCA/ICIiIDogcmV0OwotCQkJfQotCi0JCQlyZXR1cm47Ci0JCX0KLQotCQlpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7Ci0KLQkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHsKLQkJCXZhciB2YWwsCi0JCQkJc2VsZiA9IGpRdWVyeSh0aGlzKTsKLQotCQkJaWYgKCB0aGlzLm5vZGVUeXBlICE9PSAxICkgewotCQkJCXJldHVybjsKLQkJCX0KLQotCQkJaWYgKCBpc0Z1bmN0aW9uICkgewotCQkJCXZhbCA9IHZhbHVlLmNhbGwoIHRoaXMsIGksIHNlbGYudmFsKCkgKTsKLQkJCX0gZWxzZSB7Ci0JCQkJdmFsID0gdmFsdWU7Ci0JCQl9Ci0KLQkJCS8vIFRyZWF0IG51bGwvdW5kZWZpbmVkIGFzICIiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nCi0JCQlpZiAoIHZhbCA9PSBudWxsICkgewotCQkJCXZhbCA9ICIiOwotCQkJfSBlbHNlIGlmICggdHlwZW9mIHZhbCA9PT0gIm51bWJlciIgKSB7Ci0JCQkJdmFsICs9ICIiOwotCQkJfSBlbHNlIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbCApICkgewotCQkJCXZhbCA9IGpRdWVyeS5tYXAodmFsLCBmdW5jdGlvbiAoIHZhbHVlICkgewotCQkJCQlyZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICIiIDogdmFsdWUgKyAiIjsKLQkJCQl9KTsKLQkJCX0KLQotCQkJaG9va3MgPSBqUXVlcnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07Ci0KLQkJCS8vIElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nCi0JCQlpZiAoICFob29rcyB8fCAhKCJzZXQiIGluIGhvb2tzKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgInZhbHVlIiApID09PSB1bmRlZmluZWQgKSB7Ci0JCQkJdGhpcy52YWx1ZSA9IHZhbDsKLQkJCX0KLQkJfSk7Ci0JfQotfSk7Ci0KLWpRdWVyeS5leHRlbmQoewotCXZhbEhvb2tzOiB7Ci0JCW9wdGlvbjogewotCQkJZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCQkvLyBhdHRyaWJ1dGVzLnZhbHVlIGlzIHVuZGVmaW5lZCBpbiBCbGFja2JlcnJ5IDQuNyBidXQKLQkJCQkvLyB1c2VzIC52YWx1ZS4gU2VlICM2OTMyCi0JCQkJdmFyIHZhbCA9IGVsZW0uYXR0cmlidXRlcy52YWx1ZTsKLQkJCQlyZXR1cm4gIXZhbCB8fCB2YWwuc3BlY2lmaWVkID8gZWxlbS52YWx1ZSA6IGVsZW0udGV4dDsKLQkJCX0KLQkJfSwKLQkJc2VsZWN0OiB7Ci0JCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJCXZhciB2YWx1ZSwgb3B0aW9uLAotCQkJCQlvcHRpb25zID0gZWxlbS5vcHRpb25zLAotCQkJCQlpbmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRleCwKLQkJCQkJb25lID0gZWxlbS50eXBlID09PSAic2VsZWN0LW9uZSIgfHwgaW5kZXggPCAwLAotCQkJCQl2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sCi0JCQkJCW1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoLAotCQkJCQlpID0gaW5kZXggPCAwID8KLQkJCQkJCW1heCA6Ci0JCQkJCQlvbmUgPyBpbmRleCA6IDA7Ci0KLQkJCQkvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zCi0JCQkJZm9yICggOyBpIDwgbWF4OyBpKysgKSB7Ci0JCQkJCW9wdGlvbiA9IG9wdGlvbnNbIGkgXTsKLQotCQkJCQkvLyBvbGRJRSBkb2Vzbid0IHVwZGF0ZSBzZWxlY3RlZCBhZnRlciBmb3JtIHJlc2V0ICgjMjU1MSkKLQkJCQkJaWYgKCAoIG9wdGlvbi5zZWxlY3RlZCB8fCBpID09PSBpbmRleCApICYmCi0JCQkJCQkJLy8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cAotCQkJCQkJCSggalF1ZXJ5LnN1cHBvcnQub3B0RGlzYWJsZWQgPyAhb3B0aW9uLmRpc2FibGVkIDogb3B0aW9uLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSA9PT0gbnVsbCApICYmCi0JCQkJCQkJKCAhb3B0aW9uLnBhcmVudE5vZGUuZGlzYWJsZWQgfHwgIWpRdWVyeS5ub2RlTmFtZSggb3B0aW9uLnBhcmVudE5vZGUsICJvcHRncm91cCIgKSApICkgewotCi0JCQkJCQkvLyBHZXQgdGhlIHNwZWNpZmljIHZhbHVlIGZvciB0aGUgb3B0aW9uCi0JCQkJCQl2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7Ci0KLQkJCQkJCS8vIFdlIGRvbid0IG5lZWQgYW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzCi0JCQkJCQlpZiAoIG9uZSApIHsKLQkJCQkJCQlyZXR1cm4gdmFsdWU7Ci0JCQkJCQl9Ci0KLQkJCQkJCS8vIE11bHRpLVNlbGVjdHMgcmV0dXJuIGFuIGFycmF5Ci0JCQkJCQl2YWx1ZXMucHVzaCggdmFsdWUgKTsKLQkJCQkJfQotCQkJCX0KLQotCQkJCXJldHVybiB2YWx1ZXM7Ci0JCQl9LAotCi0JCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLQkJCQl2YXIgdmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKTsKLQotCQkJCWpRdWVyeShlbGVtKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCkgewotCQkJCQl0aGlzLnNlbGVjdGVkID0galF1ZXJ5LmluQXJyYXkoIGpRdWVyeSh0aGlzKS52YWwoKSwgdmFsdWVzICkgPj0gMDsKLQkJCQl9KTsKLQotCQkJCWlmICggIXZhbHVlcy5sZW5ndGggKSB7Ci0JCQkJCWVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xOwotCQkJCX0KLQkJCQlyZXR1cm4gdmFsdWVzOwotCQkJfQotCQl9Ci0JfSwKLQotCWF0dHI6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKLQkJdmFyIGhvb2tzLCBub3R4bWwsIHJldCwKLQkJCW5UeXBlID0gZWxlbS5ub2RlVHlwZTsKLQotCQkvLyBkb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzCi0JCWlmICggIWVsZW0gfHwgblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7Ci0JCQlyZXR1cm47Ci0JCX0KLQotCQkvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZAotCQlpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gY29yZV9zdHJ1bmRlZmluZWQgKSB7Ci0JCQlyZXR1cm4galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUsIHZhbHVlICk7Ci0JCX0KLQotCQlub3R4bWwgPSBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICk7Ci0KLQkJLy8gQWxsIGF0dHJpYnV0ZXMgYXJlIGxvd2VyY2FzZQotCQkvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkCi0JCWlmICggbm90eG1sICkgewotCQkJbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKLQkJCWhvb2tzID0galF1ZXJ5LmF0dHJIb29rc1sgbmFtZSBdIHx8ICggcmJvb2xlYW4udGVzdCggbmFtZSApID8gYm9vbEhvb2sgOiBub2RlSG9vayApOwotCQl9Ci0KLQkJaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewotCi0JCQlpZiAoIHZhbHVlID09PSBudWxsICkgewotCQkJCWpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7Ci0KLQkJCX0gZWxzZSBpZiAoIGhvb2tzICYmIG5vdHhtbCAmJiAic2V0IiBpbiBob29rcyAmJiAocmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApKSAhPT0gdW5kZWZpbmVkICkgewotCQkJCXJldHVybiByZXQ7Ci0KLQkJCX0gZWxzZSB7Ci0JCQkJZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgIiIgKTsKLQkJCQlyZXR1cm4gdmFsdWU7Ci0JCQl9Ci0KLQkJfSBlbHNlIGlmICggaG9va3MgJiYgbm90eG1sICYmICJnZXQiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkgIT09IG51bGwgKSB7Ci0JCQlyZXR1cm4gcmV0OwotCi0JCX0gZWxzZSB7Ci0KLQkJCS8vIEluIElFOSssIEZsYXNoIG9iamVjdHMgZG9uJ3QgaGF2ZSAuZ2V0QXR0cmlidXRlICgjMTI5NDUpCi0JCQkvLyBTdXBwb3J0OiBJRTkrCi0JCQlpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gY29yZV9zdHJ1bmRlZmluZWQgKSB7Ci0JCQkJcmV0ID0gIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7Ci0JCQl9Ci0KLQkJCS8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkCi0JCQlyZXR1cm4gcmV0ID09IG51bGwgPwotCQkJCXVuZGVmaW5lZCA6Ci0JCQkJcmV0OwotCQl9Ci0JfSwKLQotCXJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLQkJdmFyIG5hbWUsIHByb3BOYW1lLAotCQkJaSA9IDAsCi0JCQlhdHRyTmFtZXMgPSB2YWx1ZSAmJiB2YWx1ZS5tYXRjaCggY29yZV9ybm90d2hpdGUgKTsKLQotCQlpZiAoIGF0dHJOYW1lcyAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewotCQkJd2hpbGUgKCAobmFtZSA9IGF0dHJOYW1lc1tpKytdKSApIHsKLQkJCQlwcm9wTmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTsKLQotCQkJCS8vIEJvb2xlYW4gYXR0cmlidXRlcyBnZXQgc3BlY2lhbCB0cmVhdG1lbnQgKCMxMDg3MCkKLQkJCQlpZiAoIHJib29sZWFuLnRlc3QoIG5hbWUgKSApIHsKLQkJCQkJLy8gU2V0IGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdG8gZmFsc2UgZm9yIGJvb2xlYW4gYXR0cmlidXRlcwotCQkJCQkvLyBBbHNvIGNsZWFyIGRlZmF1bHRDaGVja2VkL2RlZmF1bHRTZWxlY3RlZCAoaWYgYXBwcm9wcmlhdGUpIGZvciBJRTw4Ci0JCQkJCWlmICggIWdldFNldEF0dHJpYnV0ZSAmJiBydXNlRGVmYXVsdC50ZXN0KCBuYW1lICkgKSB7Ci0JCQkJCQllbGVtWyBqUXVlcnkuY2FtZWxDYXNlKCAiZGVmYXVsdC0iICsgbmFtZSApIF0gPQotCQkJCQkJCWVsZW1bIHByb3BOYW1lIF0gPSBmYWxzZTsKLQkJCQkJfSBlbHNlIHsKLQkJCQkJCWVsZW1bIHByb3BOYW1lIF0gPSBmYWxzZTsKLQkJCQkJfQotCi0JCQkJLy8gU2VlICM5Njk5IGZvciBleHBsYW5hdGlvbiBvZiB0aGlzIGFwcHJvYWNoIChzZXR0aW5nIGZpcnN0LCB0aGVuIHJlbW92YWwpCi0JCQkJfSBlbHNlIHsKLQkJCQkJalF1ZXJ5LmF0dHIoIGVsZW0sIG5hbWUsICIiICk7Ci0JCQkJfQotCi0JCQkJZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIGdldFNldEF0dHJpYnV0ZSA/IG5hbWUgOiBwcm9wTmFtZSApOwotCQkJfQotCQl9Ci0JfSwKLQotCWF0dHJIb29rczogewotCQl0eXBlOiB7Ci0JCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLQkJCQlpZiAoICFqUXVlcnkuc3VwcG9ydC5yYWRpb1ZhbHVlICYmIHZhbHVlID09PSAicmFkaW8iICYmIGpRdWVyeS5ub2RlTmFtZShlbGVtLCAiaW5wdXQiKSApIHsKLQkJCQkJLy8gU2V0dGluZyB0aGUgdHlwZSBvbiBhIHJhZGlvIGJ1dHRvbiBhZnRlciB0aGUgdmFsdWUgcmVzZXRzIHRoZSB2YWx1ZSBpbiBJRTYtOQotCQkJCQkvLyBSZXNldCB2YWx1ZSB0byBkZWZhdWx0IGluIGNhc2UgdHlwZSBpcyBzZXQgYWZ0ZXIgdmFsdWUgZHVyaW5nIGNyZWF0aW9uCi0JCQkJCXZhciB2YWwgPSBlbGVtLnZhbHVlOwotCQkJCQllbGVtLnNldEF0dHJpYnV0ZSggInR5cGUiLCB2YWx1ZSApOwotCQkJCQlpZiAoIHZhbCApIHsKLQkJCQkJCWVsZW0udmFsdWUgPSB2YWw7Ci0JCQkJCX0KLQkJCQkJcmV0dXJuIHZhbHVlOwotCQkJCX0KLQkJCX0KLQkJfQotCX0sCi0KLQlwcm9wRml4OiB7Ci0JCXRhYmluZGV4OiAidGFiSW5kZXgiLAotCQlyZWFkb25seTogInJlYWRPbmx5IiwKLQkJImZvciI6ICJodG1sRm9yIiwKLQkJImNsYXNzIjogImNsYXNzTmFtZSIsCi0JCW1heGxlbmd0aDogIm1heExlbmd0aCIsCi0JCWNlbGxzcGFjaW5nOiAiY2VsbFNwYWNpbmciLAotCQljZWxscGFkZGluZzogImNlbGxQYWRkaW5nIiwKLQkJcm93c3BhbjogInJvd1NwYW4iLAotCQljb2xzcGFuOiAiY29sU3BhbiIsCi0JCXVzZW1hcDogInVzZU1hcCIsCi0JCWZyYW1lYm9yZGVyOiAiZnJhbWVCb3JkZXIiLAotCQljb250ZW50ZWRpdGFibGU6ICJjb250ZW50RWRpdGFibGUiCi0JfSwKLQotCXByb3A6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKLQkJdmFyIHJldCwgaG9va3MsIG5vdHhtbCwKLQkJCW5UeXBlID0gZWxlbS5ub2RlVHlwZTsKLQotCQkvLyBkb24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzCi0JCWlmICggIWVsZW0gfHwgblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7Ci0JCQlyZXR1cm47Ci0JCX0KLQotCQlub3R4bWwgPSBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICk7Ci0KLQkJaWYgKCBub3R4bWwgKSB7Ci0JCQkvLyBGaXggbmFtZSBhbmQgYXR0YWNoIGhvb2tzCi0JCQluYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lOwotCQkJaG9va3MgPSBqUXVlcnkucHJvcEhvb2tzWyBuYW1lIF07Ci0JCX0KLQotCQlpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7Ci0JCQlpZiAoIGhvb2tzICYmICJzZXQiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkpICE9PSB1bmRlZmluZWQgKSB7Ci0JCQkJcmV0dXJuIHJldDsKLQotCQkJfSBlbHNlIHsKLQkJCQlyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApOwotCQkJfQotCi0JCX0gZWxzZSB7Ci0JCQlpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkgIT09IG51bGwgKSB7Ci0JCQkJcmV0dXJuIHJldDsKLQotCQkJfSBlbHNlIHsKLQkJCQlyZXR1cm4gZWxlbVsgbmFtZSBdOwotCQkJfQotCQl9Ci0JfSwKLQotCXByb3BIb29rczogewotCQl0YWJJbmRleDogewotCQkJZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCQkvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0Ci0JCQkJLy8gaHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmctc2V0dGluZy1hbmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC8KLQkJCQl2YXIgYXR0cmlidXRlTm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTsKLQotCQkJCXJldHVybiBhdHRyaWJ1dGVOb2RlICYmIGF0dHJpYnV0ZU5vZGUuc3BlY2lmaWVkID8KLQkJCQkJcGFyc2VJbnQoIGF0dHJpYnV0ZU5vZGUudmFsdWUsIDEwICkgOgotCQkJCQlyZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fCByY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJiBlbGVtLmhyZWYgPwotCQkJCQkJMCA6Ci0JCQkJCQl1bmRlZmluZWQ7Ci0JCQl9Ci0JCX0KLQl9Ci19KTsKLQotLy8gSG9vayBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzCi1ib29sSG9vayA9IHsKLQlnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgewotCQl2YXIKLQkJCS8vIFVzZSAucHJvcCB0byBkZXRlcm1pbmUgaWYgdGhpcyBhdHRyaWJ1dGUgaXMgdW5kZXJzdG9vZCBhcyBib29sZWFuCi0JCQlwcm9wID0galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUgKSwKLQotCQkJLy8gRmV0Y2ggaXQgYWNjb3JkaW5nbHkKLQkJCWF0dHIgPSB0eXBlb2YgcHJvcCA9PT0gImJvb2xlYW4iICYmIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICksCi0JCQlkZXRhaWwgPSB0eXBlb2YgcHJvcCA9PT0gImJvb2xlYW4iID8KLQotCQkJCWdldFNldElucHV0ICYmIGdldFNldEF0dHJpYnV0ZSA/Ci0JCQkJCWF0dHIgIT0gbnVsbCA6Ci0JCQkJCS8vIG9sZElFIGZhYnJpY2F0ZXMgYW4gZW1wdHkgc3RyaW5nIGZvciBtaXNzaW5nIGJvb2xlYW4gYXR0cmlidXRlcwotCQkJCQkvLyBhbmQgY29uZmxhdGVzIGNoZWNrZWQvc2VsZWN0ZWQgaW50byBhdHRyb3BlcnRpZXMKLQkJCQkJcnVzZURlZmF1bHQudGVzdCggbmFtZSApID8KLQkJCQkJCWVsZW1bIGpRdWVyeS5jYW1lbENhc2UoICJkZWZhdWx0LSIgKyBuYW1lICkgXSA6Ci0JCQkJCQkhIWF0dHIgOgotCi0JCQkJLy8gZmV0Y2ggYW4gYXR0cmlidXRlIG5vZGUgZm9yIHByb3BlcnRpZXMgbm90IHJlY29nbml6ZWQgYXMgYm9vbGVhbgotCQkJCWVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApOwotCi0JCXJldHVybiBkZXRhaWwgJiYgZGV0YWlsLnZhbHVlICE9PSBmYWxzZSA/Ci0JCQluYW1lLnRvTG93ZXJDYXNlKCkgOgotCQkJdW5kZWZpbmVkOwotCX0sCi0Jc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7Ci0JCWlmICggdmFsdWUgPT09IGZhbHNlICkgewotCQkJLy8gUmVtb3ZlIGJvb2xlYW4gYXR0cmlidXRlcyB3aGVuIHNldCB0byBmYWxzZQotCQkJalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKLQkJfSBlbHNlIGlmICggZ2V0U2V0SW5wdXQgJiYgZ2V0U2V0QXR0cmlidXRlIHx8ICFydXNlRGVmYXVsdC50ZXN0KCBuYW1lICkgKSB7Ci0JCQkvLyBJRTw4IG5lZWRzIHRoZSAqcHJvcGVydHkqIG5hbWUKLQkJCWVsZW0uc2V0QXR0cmlidXRlKCAhZ2V0U2V0QXR0cmlidXRlICYmIGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZSwgbmFtZSApOwotCi0JCS8vIFVzZSBkZWZhdWx0Q2hlY2tlZCBhbmQgZGVmYXVsdFNlbGVjdGVkIGZvciBvbGRJRQotCQl9IGVsc2UgewotCQkJZWxlbVsgalF1ZXJ5LmNhbWVsQ2FzZSggImRlZmF1bHQtIiArIG5hbWUgKSBdID0gZWxlbVsgbmFtZSBdID0gdHJ1ZTsKLQkJfQotCi0JCXJldHVybiBuYW1lOwotCX0KLX07Ci0KLS8vIGZpeCBvbGRJRSB2YWx1ZSBhdHRyb3BlcnR5Ci1pZiAoICFnZXRTZXRJbnB1dCB8fCAhZ2V0U2V0QXR0cmlidXRlICkgewotCWpRdWVyeS5hdHRySG9va3MudmFsdWUgPSB7Ci0JCWdldDogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7Ci0JCQl2YXIgcmV0ID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICk7Ci0JCQlyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiaW5wdXQiICkgPwotCi0JCQkJLy8gSWdub3JlIHRoZSB2YWx1ZSAqcHJvcGVydHkqIGJ5IHVzaW5nIGRlZmF1bHRWYWx1ZQotCQkJCWVsZW0uZGVmYXVsdFZhbHVlIDoKLQotCQkJCXJldCAmJiByZXQuc3BlY2lmaWVkID8gcmV0LnZhbHVlIDogdW5kZWZpbmVkOwotCQl9LAotCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHsKLQkJCWlmICggalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiaW5wdXQiICkgKSB7Ci0JCQkJLy8gRG9lcyBub3QgcmV0dXJuIHNvIHRoYXQgc2V0QXR0cmlidXRlIGlzIGFsc28gdXNlZAotCQkJCWVsZW0uZGVmYXVsdFZhbHVlID0gdmFsdWU7Ci0JCQl9IGVsc2UgewotCQkJCS8vIFVzZSBub2RlSG9vayBpZiBkZWZpbmVkICgjMTk1NCk7IG90aGVyd2lzZSBzZXRBdHRyaWJ1dGUgaXMgZmluZQotCQkJCXJldHVybiBub2RlSG9vayAmJiBub2RlSG9vay5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICk7Ci0JCQl9Ci0JCX0KLQl9OwotfQotCi0vLyBJRTYvNyBkbyBub3Qgc3VwcG9ydCBnZXR0aW5nL3NldHRpbmcgc29tZSBhdHRyaWJ1dGVzIHdpdGggZ2V0L3NldEF0dHJpYnV0ZQotaWYgKCAhZ2V0U2V0QXR0cmlidXRlICkgewotCi0JLy8gVXNlIHRoaXMgZm9yIGFueSBhdHRyaWJ1dGUgaW4gSUU2LzcKLQkvLyBUaGlzIGZpeGVzIGFsbW9zdCBldmVyeSBJRTYvNyBpc3N1ZQotCW5vZGVIb29rID0galF1ZXJ5LnZhbEhvb2tzLmJ1dHRvbiA9IHsKLQkJZ2V0OiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKLQkJCXZhciByZXQgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKTsKLQkJCXJldHVybiByZXQgJiYgKCBuYW1lID09PSAiaWQiIHx8IG5hbWUgPT09ICJuYW1lIiB8fCBuYW1lID09PSAiY29vcmRzIiA/IHJldC52YWx1ZSAhPT0gIiIgOiByZXQuc3BlY2lmaWVkICkgPwotCQkJCXJldC52YWx1ZSA6Ci0JCQkJdW5kZWZpbmVkOwotCQl9LAotCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHsKLQkJCS8vIFNldCB0aGUgZXhpc3Rpbmcgb3IgY3JlYXRlIGEgbmV3IGF0dHJpYnV0ZSBub2RlCi0JCQl2YXIgcmV0ID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICk7Ci0JCQlpZiAoICFyZXQgKSB7Ci0JCQkJZWxlbS5zZXRBdHRyaWJ1dGVOb2RlKAotCQkJCQkocmV0ID0gZWxlbS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSggbmFtZSApKQotCQkJCSk7Ci0JCQl9Ci0KLQkJCXJldC52YWx1ZSA9IHZhbHVlICs9ICIiOwotCi0JCQkvLyBCcmVhayBhc3NvY2lhdGlvbiB3aXRoIGNsb25lZCBlbGVtZW50cyBieSBhbHNvIHVzaW5nIHNldEF0dHJpYnV0ZSAoIzk2NDYpCi0JCQlyZXR1cm4gbmFtZSA9PT0gInZhbHVlIiB8fCB2YWx1ZSA9PT0gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKSA/Ci0JCQkJdmFsdWUgOgotCQkJCXVuZGVmaW5lZDsKLQkJfQotCX07Ci0KLQkvLyBTZXQgY29udGVudGVkaXRhYmxlIHRvIGZhbHNlIG9uIHJlbW92YWxzKCMxMDQyOSkKLQkvLyBTZXR0aW5nIHRvIGVtcHR5IHN0cmluZyB0aHJvd3MgYW4gZXJyb3IgYXMgYW4gaW52YWxpZCB2YWx1ZQotCWpRdWVyeS5hdHRySG9va3MuY29udGVudGVkaXRhYmxlID0gewotCQlnZXQ6IG5vZGVIb29rLmdldCwKLQkJc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7Ci0JCQlub2RlSG9vay5zZXQoIGVsZW0sIHZhbHVlID09PSAiIiA/IGZhbHNlIDogdmFsdWUsIG5hbWUgKTsKLQkJfQotCX07Ci0KLQkvLyBTZXQgd2lkdGggYW5kIGhlaWdodCB0byBhdXRvIGluc3RlYWQgb2YgMCBvbiBlbXB0eSBzdHJpbmcoIEJ1ZyAjODE1MCApCi0JLy8gVGhpcyBpcyBmb3IgcmVtb3ZhbHMKLQlqUXVlcnkuZWFjaChbICJ3aWR0aCIsICJoZWlnaHQiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotCQlqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0sIHsKLQkJCXNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewotCQkJCWlmICggdmFsdWUgPT09ICIiICkgewotCQkJCQllbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgImF1dG8iICk7Ci0JCQkJCXJldHVybiB2YWx1ZTsKLQkJCQl9Ci0JCQl9Ci0JCX0pOwotCX0pOwotfQotCi0KLS8vIFNvbWUgYXR0cmlidXRlcyByZXF1aXJlIGEgc3BlY2lhbCBjYWxsIG9uIElFCi0vLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4Ci1pZiAoICFqUXVlcnkuc3VwcG9ydC5ocmVmTm9ybWFsaXplZCApIHsKLQlqUXVlcnkuZWFjaChbICJocmVmIiwgInNyYyIsICJ3aWR0aCIsICJoZWlnaHQiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotCQlqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0sIHsKLQkJCWdldDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQkJdmFyIHJldCA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCAyICk7Ci0JCQkJcmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0OwotCQkJfQotCQl9KTsKLQl9KTsKLQotCS8vIGhyZWYvc3JjIHByb3BlcnR5IHNob3VsZCBnZXQgdGhlIGZ1bGwgbm9ybWFsaXplZCBVUkwgKCMxMDI5OS8jMTI5MTUpCi0JalF1ZXJ5LmVhY2goWyAiaHJlZiIsICJzcmMiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotCQlqUXVlcnkucHJvcEhvb2tzWyBuYW1lIF0gPSB7Ci0JCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJCXJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgNCApOwotCQkJfQotCQl9OwotCX0pOwotfQotCi1pZiAoICFqUXVlcnkuc3VwcG9ydC5zdHlsZSApIHsKLQlqUXVlcnkuYXR0ckhvb2tzLnN0eWxlID0gewotCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJLy8gUmV0dXJuIHVuZGVmaW5lZCBpbiB0aGUgY2FzZSBvZiBlbXB0eSBzdHJpbmcKLQkJCS8vIE5vdGU6IElFIHVwcGVyY2FzZXMgY3NzIHByb3BlcnR5IG5hbWVzLCBidXQgaWYgd2Ugd2VyZSB0byAudG9Mb3dlckNhc2UoKQotCQkJLy8gLmNzc1RleHQsIHRoYXQgd291bGQgZGVzdHJveSBjYXNlIHNlbnN0aXRpdml0eSBpbiBVUkwncywgbGlrZSBpbiAiYmFja2dyb3VuZCIKLQkJCXJldHVybiBlbGVtLnN0eWxlLmNzc1RleHQgfHwgdW5kZWZpbmVkOwotCQl9LAotCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLQkJCXJldHVybiAoIGVsZW0uc3R5bGUuY3NzVGV4dCA9IHZhbHVlICsgIiIgKTsKLQkJfQotCX07Ci19Ci0KLS8vIFNhZmFyaSBtaXMtcmVwb3J0cyB0aGUgZGVmYXVsdCBzZWxlY3RlZCBwcm9wZXJ0eSBvZiBhbiBvcHRpb24KLS8vIEFjY2Vzc2luZyB0aGUgcGFyZW50J3Mgc2VsZWN0ZWRJbmRleCBwcm9wZXJ0eSBmaXhlcyBpdAotaWYgKCAhalF1ZXJ5LnN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7Ci0JalF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IGpRdWVyeS5leHRlbmQoIGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQsIHsKLQkJZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7Ci0KLQkJCWlmICggcGFyZW50ICkgewotCQkJCXBhcmVudC5zZWxlY3RlZEluZGV4OwotCi0JCQkJLy8gTWFrZSBzdXJlIHRoYXQgaXQgYWxzbyB3b3JrcyB3aXRoIG9wdGdyb3Vwcywgc2VlICM1NzAxCi0JCQkJaWYgKCBwYXJlbnQucGFyZW50Tm9kZSApIHsKLQkJCQkJcGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKLQkJCQl9Ci0JCQl9Ci0JCQlyZXR1cm4gbnVsbDsKLQkJfQotCX0pOwotfQotCi0vLyBJRTYvNyBjYWxsIGVuY3R5cGUgZW5jb2RpbmcKLWlmICggIWpRdWVyeS5zdXBwb3J0LmVuY3R5cGUgKSB7Ci0JalF1ZXJ5LnByb3BGaXguZW5jdHlwZSA9ICJlbmNvZGluZyI7Ci19Ci0KLS8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyCi1pZiAoICFqUXVlcnkuc3VwcG9ydC5jaGVja09uICkgewotCWpRdWVyeS5lYWNoKFsgInJhZGlvIiwgImNoZWNrYm94IiBdLCBmdW5jdGlvbigpIHsKLQkJalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7Ci0JCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJCS8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBpbiBXZWJraXQgIiIgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiAib24iIGlmIGEgdmFsdWUgaXNuJ3Qgc3BlY2lmaWVkCi0JCQkJcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpID09PSBudWxsID8gIm9uIiA6IGVsZW0udmFsdWU7Ci0JCQl9Ci0JCX07Ci0JfSk7Ci19Ci1qUXVlcnkuZWFjaChbICJyYWRpbyIsICJjaGVja2JveCIgXSwgZnVuY3Rpb24oKSB7Ci0JalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSBqUXVlcnkuZXh0ZW5kKCBqUXVlcnkudmFsSG9va3NbIHRoaXMgXSwgewotCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLQkJCWlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7Ci0JCQkJcmV0dXJuICggZWxlbS5jaGVja2VkID0galF1ZXJ5LmluQXJyYXkoIGpRdWVyeShlbGVtKS52YWwoKSwgdmFsdWUgKSA+PSAwICk7Ci0JCQl9Ci0JCX0KLQl9KTsKLX0pOwotdmFyIHJmb3JtRWxlbXMgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksCi0JcmtleUV2ZW50ID0gL15rZXkvLAotCXJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLAotCXJmb2N1c01vcnBoID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLAotCXJ0eXBlbmFtZXNwYWNlID0gL14oW14uXSopKD86XC4oLispfCkkLzsKLQotZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHsKLQlyZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gcmV0dXJuRmFsc2UoKSB7Ci0JcmV0dXJuIGZhbHNlOwotfQotCi0vKgotICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgZXZlbnRzIC0tIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLgotICogUHJvcHMgdG8gRGVhbiBFZHdhcmRzJyBhZGRFdmVudCBsaWJyYXJ5IGZvciBtYW55IG9mIHRoZSBpZGVhcy4KLSAqLwotalF1ZXJ5LmV2ZW50ID0gewotCi0JZ2xvYmFsOiB7fSwKLQotCWFkZDogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBzZWxlY3RvciApIHsKLQkJdmFyIHRtcCwgZXZlbnRzLCB0LCBoYW5kbGVPYmpJbiwKLQkJCXNwZWNpYWwsIGV2ZW50SGFuZGxlLCBoYW5kbGVPYmosCi0JCQloYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsCi0JCQllbGVtRGF0YSA9IGpRdWVyeS5fZGF0YSggZWxlbSApOwotCi0JCS8vIERvbid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVjdHMpCi0JCWlmICggIWVsZW1EYXRhICkgewotCQkJcmV0dXJuOwotCQl9Ci0KLQkJLy8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyCi0JCWlmICggaGFuZGxlci5oYW5kbGVyICkgewotCQkJaGFuZGxlT2JqSW4gPSBoYW5kbGVyOwotCQkJaGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7Ci0JCQlzZWxlY3RvciA9IGhhbmRsZU9iakluLnNlbGVjdG9yOwotCQl9Ci0KLQkJLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyCi0JCWlmICggIWhhbmRsZXIuZ3VpZCApIHsKLQkJCWhhbmRsZXIuZ3VpZCA9IGpRdWVyeS5ndWlkKys7Ci0JCX0KLQotCQkvLyBJbml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlmIHRoaXMgaXMgdGhlIGZpcnN0Ci0JCWlmICggIShldmVudHMgPSBlbGVtRGF0YS5ldmVudHMpICkgewotCQkJZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzID0ge307Ci0JCX0KLQkJaWYgKCAhKGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlKSApIHsKLQkJCWV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7Ci0JCQkJLy8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmQKLQkJCQkvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkCi0JCQkJcmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09IGNvcmVfc3RydW5kZWZpbmVkICYmICghZSB8fCBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUpID8KLQkJCQkJalF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBldmVudEhhbmRsZS5lbGVtLCBhcmd1bWVudHMgKSA6Ci0JCQkJCXVuZGVmaW5lZDsKLQkJCX07Ci0JCQkvLyBBZGQgZWxlbSBhcyBhIHByb3BlcnR5IG9mIHRoZSBoYW5kbGUgZm4gdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrIHdpdGggSUUgbm9uLW5hdGl2ZSBldmVudHMKLQkJCWV2ZW50SGFuZGxlLmVsZW0gPSBlbGVtOwotCQl9Ci0KLQkJLy8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZQotCQkvLyBqUXVlcnkoLi4uKS5iaW5kKCJtb3VzZW92ZXIgbW91c2VvdXQiLCBmbik7Ci0JCXR5cGVzID0gKCB0eXBlcyB8fCAiIiApLm1hdGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8IFsiIl07Ci0JCXQgPSB0eXBlcy5sZW5ndGg7Ci0JCXdoaWxlICggdC0tICkgewotCQkJdG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbdF0gKSB8fCBbXTsKLQkJCXR5cGUgPSBvcmlnVHlwZSA9IHRtcFsxXTsKLQkJCW5hbWVzcGFjZXMgPSAoIHRtcFsyXSB8fCAiIiApLnNwbGl0KCAiLiIgKS5zb3J0KCk7Ci0KLQkJCS8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVudCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZQotCQkJc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307Ci0KLQkJCS8vIElmIHNlbGVjdG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eXBlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZQotCQkJdHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlOwotCi0JCQkvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlCi0JCQlzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKLQotCQkJLy8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnMKLQkJCWhhbmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoewotCQkJCXR5cGU6IHR5cGUsCi0JCQkJb3JpZ1R5cGU6IG9yaWdUeXBlLAotCQkJCWRhdGE6IGRhdGEsCi0JCQkJaGFuZGxlcjogaGFuZGxlciwKLQkJCQlndWlkOiBoYW5kbGVyLmd1aWQsCi0JCQkJc2VsZWN0b3I6IHNlbGVjdG9yLAotCQkJCW5lZWRzQ29udGV4dDogc2VsZWN0b3IgJiYgalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICksCi0JCQkJbmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4oIi4iKQotCQkJfSwgaGFuZGxlT2JqSW4gKTsKLQotCQkJLy8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZSBpZiB3ZSdyZSB0aGUgZmlyc3QKLQkJCWlmICggIShoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdKSApIHsKLQkJCQloYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107Ci0JCQkJaGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7Ci0KLQkJCQkvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyL2F0dGFjaEV2ZW50IGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2UKLQkJCQlpZiAoICFzcGVjaWFsLnNldHVwIHx8IHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7Ci0JCQkJCS8vIEJpbmQgdGhlIGdsb2JhbCBldmVudCBoYW5kbGVyIHRvIHRoZSBlbGVtZW50Ci0JCQkJCWlmICggZWxlbS5hZGRFdmVudExpc3RlbmVyICkgewotCQkJCQkJZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBldmVudEhhbmRsZSwgZmFsc2UgKTsKLQotCQkJCQl9IGVsc2UgaWYgKCBlbGVtLmF0dGFjaEV2ZW50ICkgewotCQkJCQkJZWxlbS5hdHRhY2hFdmVudCggIm9uIiArIHR5cGUsIGV2ZW50SGFuZGxlICk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0KLQkJCWlmICggc3BlY2lhbC5hZGQgKSB7Ci0JCQkJc3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7Ci0KLQkJCQlpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkgewotCQkJCQloYW5kbGVPYmouaGFuZGxlci5ndWlkID0gaGFuZGxlci5ndWlkOwotCQkJCX0KLQkJCX0KLQotCQkJLy8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnQKLQkJCWlmICggc2VsZWN0b3IgKSB7Ci0JCQkJaGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRsZU9iaiApOwotCQkJfSBlbHNlIHsKLQkJCQloYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTsKLQkJCX0KLQotCQkJLy8gS2VlcCB0cmFjayBvZiB3aGljaCBldmVudHMgaGF2ZSBldmVyIGJlZW4gdXNlZCwgZm9yIGV2ZW50IG9wdGltaXphdGlvbgotCQkJalF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1ZTsKLQkJfQotCi0JCS8vIE51bGxpZnkgZWxlbSB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcyBpbiBJRQotCQllbGVtID0gbnVsbDsKLQl9LAotCi0JLy8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVudHMgZnJvbSBhbiBlbGVtZW50Ci0JcmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIHNlbGVjdG9yLCBtYXBwZWRUeXBlcyApIHsKLQkJdmFyIGosIGhhbmRsZU9iaiwgdG1wLAotCQkJb3JpZ0NvdW50LCB0LCBldmVudHMsCi0JCQlzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwKLQkJCW5hbWVzcGFjZXMsIG9yaWdUeXBlLAotCQkJZWxlbURhdGEgPSBqUXVlcnkuaGFzRGF0YSggZWxlbSApICYmIGpRdWVyeS5fZGF0YSggZWxlbSApOwotCi0JCWlmICggIWVsZW1EYXRhIHx8ICEoZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzKSApIHsKLQkJCXJldHVybjsKLQkJfQotCi0JCS8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWQKLQkJdHlwZXMgPSAoIHR5cGVzIHx8ICIiICkubWF0Y2goIGNvcmVfcm5vdHdoaXRlICkgfHwgWyIiXTsKLQkJdCA9IHR5cGVzLmxlbmd0aDsKLQkJd2hpbGUgKCB0LS0gKSB7Ci0JCQl0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1t0XSApIHx8IFtdOwotCQkJdHlwZSA9IG9yaWdUeXBlID0gdG1wWzFdOwotCQkJbmFtZXNwYWNlcyA9ICggdG1wWzJdIHx8ICIiICkuc3BsaXQoICIuIiApLnNvcnQoKTsKLQotCQkJLy8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNwYWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50Ci0JCQlpZiAoICF0eXBlICkgewotCQkJCWZvciAoIHR5cGUgaW4gZXZlbnRzICkgewotCQkJCQlqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTsKLQkJCQl9Ci0JCQkJY29udGludWU7Ci0JCQl9Ci0KLQkJCXNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OwotCQkJdHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlOwotCQkJaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSB8fCBbXTsKLQkJCXRtcCA9IHRtcFsyXSAmJiBuZXcgUmVnRXhwKCAiKF58XFwuKSIgKyBuYW1lc3BhY2VzLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIiApOwotCi0JCQkvLyBSZW1vdmUgbWF0Y2hpbmcgZXZlbnRzCi0JCQlvcmlnQ291bnQgPSBqID0gaGFuZGxlcnMubGVuZ3RoOwotCQkJd2hpbGUgKCBqLS0gKSB7Ci0JCQkJaGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTsKLQotCQkJCWlmICggKCBtYXBwZWRUeXBlcyB8fCBvcmlnVHlwZSA9PT0gaGFuZGxlT2JqLm9yaWdUeXBlICkgJiYKLQkJCQkJKCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiYKLQkJCQkJKCAhdG1wIHx8IHRtcC50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSAmJgotCQkJCQkoICFzZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gaGFuZGxlT2JqLnNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSAiKioiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkgewotCQkJCQloYW5kbGVycy5zcGxpY2UoIGosIDEgKTsKLQotCQkJCQlpZiAoIGhhbmRsZU9iai5zZWxlY3RvciApIHsKLQkJCQkJCWhhbmRsZXJzLmRlbGVnYXRlQ291bnQtLTsKLQkJCQkJfQotCQkJCQlpZiAoIHNwZWNpYWwucmVtb3ZlICkgewotCQkJCQkJc3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0KLQkJCS8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3QKLQkJCS8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKQotCQkJaWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHsKLQkJCQlpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8IHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkgewotCQkJCQlqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGVsZW1EYXRhLmhhbmRsZSApOwotCQkJCX0KLQotCQkJCWRlbGV0ZSBldmVudHNbIHR5cGUgXTsKLQkJCX0KLQkJfQotCi0JCS8vIFJlbW92ZSB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkCi0JCWlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkgewotCQkJZGVsZXRlIGVsZW1EYXRhLmhhbmRsZTsKLQotCQkJLy8gcmVtb3ZlRGF0YSBhbHNvIGNoZWNrcyBmb3IgZW1wdGluZXNzIGFuZCBjbGVhcnMgdGhlIGV4cGFuZG8gaWYgZW1wdHkKLQkJCS8vIHNvIHVzZSBpdCBpbnN0ZWFkIG9mIGRlbGV0ZQotCQkJalF1ZXJ5Ll9yZW1vdmVEYXRhKCBlbGVtLCAiZXZlbnRzIiApOwotCQl9Ci0JfSwKLQotCXRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkgewotCQl2YXIgaGFuZGxlLCBvbnR5cGUsIGN1ciwKLQkJCWJ1YmJsZVR5cGUsIHNwZWNpYWwsIHRtcCwgaSwKLQkJCWV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLAotCQkJdHlwZSA9IGNvcmVfaGFzT3duLmNhbGwoIGV2ZW50LCAidHlwZSIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCwKLQkJCW5hbWVzcGFjZXMgPSBjb3JlX2hhc093bi5jYWxsKCBldmVudCwgIm5hbWVzcGFjZSIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCgiLiIpIDogW107Ci0KLQkJY3VyID0gdG1wID0gZWxlbSA9IGVsZW0gfHwgZG9jdW1lbnQ7Ci0KLQkJLy8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXMKLQkJaWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7Ci0JCQlyZXR1cm47Ci0JCX0KLQotCQkvLyBmb2N1cy9ibHVyIG1vcnBocyB0byBmb2N1c2luL291dDsgZW5zdXJlIHdlJ3JlIG5vdCBmaXJpbmcgdGhlbSByaWdodCBub3cKLQkJaWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkgewotCQkJcmV0dXJuOwotCQl9Ci0KLQkJaWYgKCB0eXBlLmluZGV4T2YoIi4iKSA+PSAwICkgewotCQkJLy8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKQotCQkJbmFtZXNwYWNlcyA9IHR5cGUuc3BsaXQoIi4iKTsKLQkJCXR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7Ci0JCQluYW1lc3BhY2VzLnNvcnQoKTsKLQkJfQotCQlvbnR5cGUgPSB0eXBlLmluZGV4T2YoIjoiKSA8IDAgJiYgIm9uIiArIHR5cGU7Ci0KLQkJLy8gQ2FsbGVyIGNhbiBwYXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nCi0JCWV2ZW50ID0gZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gPwotCQkJZXZlbnQgOgotCQkJbmV3IGpRdWVyeS5FdmVudCggdHlwZSwgdHlwZW9mIGV2ZW50ID09PSAib2JqZWN0IiAmJiBldmVudCApOwotCi0JCWV2ZW50LmlzVHJpZ2dlciA9IHRydWU7Ci0JCWV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbigiLiIpOwotCQlldmVudC5uYW1lc3BhY2VfcmUgPSBldmVudC5uYW1lc3BhY2UgPwotCQkJbmV3IFJlZ0V4cCggIihefFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCJcXC4oPzouKlxcLnwpIikgKyAiKFxcLnwkKSIgKSA6Ci0JCQludWxsOwotCi0JCS8vIENsZWFuIHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZAotCQlldmVudC5yZXN1bHQgPSB1bmRlZmluZWQ7Ci0JCWlmICggIWV2ZW50LnRhcmdldCApIHsKLQkJCWV2ZW50LnRhcmdldCA9IGVsZW07Ci0JCX0KLQotCQkvLyBDbG9uZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVyIGFyZyBsaXN0Ci0JCWRhdGEgPSBkYXRhID09IG51bGwgPwotCQkJWyBldmVudCBdIDoKLQkJCWpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSApOwotCi0JCS8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lkZSB0aGUgbGluZXMKLQkJc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307Ci0JCWlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkgewotCQkJcmV0dXJuOwotCQl9Ci0KLQkJLy8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEpCi0JCS8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3MjQpCi0JCWlmICggIW9ubHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7Ci0KLQkJCWJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlOwotCQkJaWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHsKLQkJCQljdXIgPSBjdXIucGFyZW50Tm9kZTsKLQkJCX0KLQkJCWZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHsKLQkJCQlldmVudFBhdGgucHVzaCggY3VyICk7Ci0JCQkJdG1wID0gY3VyOwotCQkJfQotCi0JCQkvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSkKLQkJCWlmICggdG1wID09PSAoZWxlbS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50KSApIHsKLQkJCQlldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7Ci0JCQl9Ci0JCX0KLQotCQkvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoCi0JCWkgPSAwOwotCQl3aGlsZSAoIChjdXIgPSBldmVudFBhdGhbaSsrXSkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7Ci0KLQkJCWV2ZW50LnR5cGUgPSBpID4gMSA/Ci0JCQkJYnViYmxlVHlwZSA6Ci0JCQkJc3BlY2lhbC5iaW5kVHlwZSB8fCB0eXBlOwotCi0JCQkvLyBqUXVlcnkgaGFuZGxlcgotCQkJaGFuZGxlID0gKCBqUXVlcnkuX2RhdGEoIGN1ciwgImV2ZW50cyIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gJiYgalF1ZXJ5Ll9kYXRhKCBjdXIsICJoYW5kbGUiICk7Ci0JCQlpZiAoIGhhbmRsZSApIHsKLQkJCQloYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApOwotCQkJfQotCi0JCQkvLyBOYXRpdmUgaGFuZGxlcgotCQkJaGFuZGxlID0gb250eXBlICYmIGN1clsgb250eXBlIF07Ci0JCQlpZiAoIGhhbmRsZSAmJiBqUXVlcnkuYWNjZXB0RGF0YSggY3VyICkgJiYgaGFuZGxlLmFwcGx5ICYmIGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICkgPT09IGZhbHNlICkgewotCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0JCQl9Ci0JCX0KLQkJZXZlbnQudHlwZSA9IHR5cGU7Ci0KLQkJLy8gSWYgbm9ib2R5IHByZXZlbnRlZCB0aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vdwotCQlpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkgewotCi0JCQlpZiAoICghc3BlY2lhbC5fZGVmYXVsdCB8fCBzcGVjaWFsLl9kZWZhdWx0LmFwcGx5KCBlbGVtLm93bmVyRG9jdW1lbnQsIGRhdGEgKSA9PT0gZmFsc2UpICYmCi0JCQkJISh0eXBlID09PSAiY2xpY2siICYmIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgImEiICkpICYmIGpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkgKSB7Ci0KLQkJCQkvLyBDYWxsIGEgbmF0aXZlIERPTSBtZXRob2Qgb24gdGhlIHRhcmdldCB3aXRoIHRoZSBzYW1lIG5hbWUgbmFtZSBhcyB0aGUgZXZlbnQuCi0JCQkJLy8gQ2FuJ3QgdXNlIGFuIC5pc0Z1bmN0aW9uKCkgY2hlY2sgaGVyZSBiZWNhdXNlIElFNi83IGZhaWxzIHRoYXQgdGVzdC4KLQkJCQkvLyBEb24ndCBkbyBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0aGF0J3Mgd2hlcmUgZ2xvYmFsIHZhcmlhYmxlcyBiZSAoIzYxNzApCi0JCQkJaWYgKCBvbnR5cGUgJiYgZWxlbVsgdHlwZSBdICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHsKLQotCQkJCQkvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kCi0JCQkJCXRtcCA9IGVsZW1bIG9udHlwZSBdOwotCi0JCQkJCWlmICggdG1wICkgewotCQkJCQkJZWxlbVsgb250eXBlIF0gPSBudWxsOwotCQkJCQl9Ci0KLQkJCQkJLy8gUHJldmVudCByZS10cmlnZ2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJlYWR5IGJ1YmJsZWQgaXQgYWJvdmUKLQkJCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHR5cGU7Ci0JCQkJCXRyeSB7Ci0JCQkJCQllbGVtWyB0eXBlIF0oKTsKLQkJCQkJfSBjYXRjaCAoIGUgKSB7Ci0JCQkJCQkvLyBJRTw5IGRpZXMgb24gZm9jdXMvYmx1ciB0byBoaWRkZW4gZWxlbWVudCAoIzE0ODYsIzEyNTE4KQotCQkJCQkJLy8gb25seSByZXByb2R1Y2libGUgb24gd2luWFAgSUU4IG5hdGl2ZSwgbm90IElFOSBpbiBJRTggbW9kZQotCQkJCQl9Ci0JCQkJCWpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7Ci0KLQkJCQkJaWYgKCB0bXAgKSB7Ci0JCQkJCQllbGVtWyBvbnR5cGUgXSA9IHRtcDsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCi0JCXJldHVybiBldmVudC5yZXN1bHQ7Ci0JfSwKLQotCWRpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0KLQkJLy8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0Ci0JCWV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKTsKLQotCQl2YXIgaSwgcmV0LCBoYW5kbGVPYmosIG1hdGNoZWQsIGosCi0JCQloYW5kbGVyUXVldWUgPSBbXSwKLQkJCWFyZ3MgPSBjb3JlX3NsaWNlLmNhbGwoIGFyZ3VtZW50cyApLAotCQkJaGFuZGxlcnMgPSAoIGpRdWVyeS5fZGF0YSggdGhpcywgImV2ZW50cyIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gfHwgW10sCi0JCQlzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fTsKLQotCQkvLyBVc2UgdGhlIGZpeC1lZCBqUXVlcnkuRXZlbnQgcmF0aGVyIHRoYW4gdGhlIChyZWFkLW9ubHkpIG5hdGl2ZSBldmVudAotCQlhcmdzWzBdID0gZXZlbnQ7Ci0JCWV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpczsKLQotCQkvLyBDYWxsIHRoZSBwcmVEaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGUsIGFuZCBsZXQgaXQgYmFpbCBpZiBkZXNpcmVkCi0JCWlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkgewotCQkJcmV0dXJuOwotCQl9Ci0KLQkJLy8gRGV0ZXJtaW5lIGhhbmRsZXJzCi0JCWhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTsKLQotCQkvLyBSdW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3AgcHJvcGFnYXRpb24gYmVuZWF0aCB1cwotCQlpID0gMDsKLQkJd2hpbGUgKCAobWF0Y2hlZCA9IGhhbmRsZXJRdWV1ZVsgaSsrIF0pICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkgewotCQkJZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTsKLQotCQkJaiA9IDA7Ci0JCQl3aGlsZSAoIChoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSkgJiYgIWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7Ci0KLQkJCQkvLyBUcmlnZ2VyZWQgZXZlbnQgbXVzdCBlaXRoZXIgMSkgaGF2ZSBubyBuYW1lc3BhY2UsIG9yCi0JCQkJLy8gMikgaGF2ZSBuYW1lc3BhY2UocykgYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuCi0JCQkJaWYgKCAhZXZlbnQubmFtZXNwYWNlX3JlIHx8IGV2ZW50Lm5hbWVzcGFjZV9yZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7Ci0KLQkJCQkJZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqOwotCQkJCQlldmVudC5kYXRhID0gaGFuZGxlT2JqLmRhdGE7Ci0KLQkJCQkJcmV0ID0gKCAoalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGhhbmRsZU9iai5vcmlnVHlwZSBdIHx8IHt9KS5oYW5kbGUgfHwgaGFuZGxlT2JqLmhhbmRsZXIgKQotCQkJCQkJCS5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7Ci0KLQkJCQkJaWYgKCByZXQgIT09IHVuZGVmaW5lZCApIHsKLQkJCQkJCWlmICggKGV2ZW50LnJlc3VsdCA9IHJldCkgPT09IGZhbHNlICkgewotCQkJCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0JCQkJCQkJZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQkvLyBDYWxsIHRoZSBwb3N0RGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlCi0JCWlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7Ci0JCQlzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApOwotCQl9Ci0KLQkJcmV0dXJuIGV2ZW50LnJlc3VsdDsKLQl9LAotCi0JaGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7Ci0JCXZhciBzZWwsIGhhbmRsZU9iaiwgbWF0Y2hlcywgaSwKLQkJCWhhbmRsZXJRdWV1ZSA9IFtdLAotCQkJZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQsCi0JCQljdXIgPSBldmVudC50YXJnZXQ7Ci0KLQkJLy8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVycwotCQkvLyBCbGFjay1ob2xlIFNWRyA8dXNlPiBpbnN0YW5jZSB0cmVlcyAoIzEzMTgwKQotCQkvLyBBdm9pZCBub24tbGVmdC1jbGljayBidWJibGluZyBpbiBGaXJlZm94ICgjMzg2MSkKLQkJaWYgKCBkZWxlZ2F0ZUNvdW50ICYmIGN1ci5ub2RlVHlwZSAmJiAoIWV2ZW50LmJ1dHRvbiB8fCBldmVudC50eXBlICE9PSAiY2xpY2siKSApIHsKLQotCQkJZm9yICggOyBjdXIgIT0gdGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHsKLQotCQkJCS8vIERvbid0IGNoZWNrIG5vbi1lbGVtZW50cyAoIzEzMjA4KQotCQkJCS8vIERvbid0IHByb2Nlc3MgY2xpY2tzIG9uIGRpc2FibGVkIGVsZW1lbnRzICgjNjkxMSwgIzgxNjUsICMxMTM4MiwgIzExNzY0KQotCQkJCWlmICggY3VyLm5vZGVUeXBlID09PSAxICYmIChjdXIuZGlzYWJsZWQgIT09IHRydWUgfHwgZXZlbnQudHlwZSAhPT0gImNsaWNrIikgKSB7Ci0JCQkJCW1hdGNoZXMgPSBbXTsKLQkJCQkJZm9yICggaSA9IDA7IGkgPCBkZWxlZ2F0ZUNvdW50OyBpKysgKSB7Ci0JCQkJCQloYW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdOwotCi0JCQkJCQkvLyBEb24ndCBjb25mbGljdCB3aXRoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoIzEzMjAzKQotCQkJCQkJc2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yICsgIiAiOwotCi0JCQkJCQlpZiAoIG1hdGNoZXNbIHNlbCBdID09PSB1bmRlZmluZWQgKSB7Ci0JCQkJCQkJbWF0Y2hlc1sgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID8KLQkJCQkJCQkJalF1ZXJ5KCBzZWwsIHRoaXMgKS5pbmRleCggY3VyICkgPj0gMCA6Ci0JCQkJCQkJCWpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7Ci0JCQkJCQl9Ci0JCQkJCQlpZiAoIG1hdGNoZXNbIHNlbCBdICkgewotCQkJCQkJCW1hdGNoZXMucHVzaCggaGFuZGxlT2JqICk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQkJaWYgKCBtYXRjaGVzLmxlbmd0aCApIHsKLQkJCQkJCWhhbmRsZXJRdWV1ZS5wdXNoKHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlcyB9KTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCi0JCS8vIEFkZCB0aGUgcmVtYWluaW5nIChkaXJlY3RseS1ib3VuZCkgaGFuZGxlcnMKLQkJaWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkgewotCQkJaGFuZGxlclF1ZXVlLnB1c2goeyBlbGVtOiB0aGlzLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9KTsKLQkJfQotCi0JCXJldHVybiBoYW5kbGVyUXVldWU7Ci0JfSwKLQotCWZpeDogZnVuY3Rpb24oIGV2ZW50ICkgewotCQlpZiAoIGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdICkgewotCQkJcmV0dXJuIGV2ZW50OwotCQl9Ci0KLQkJLy8gQ3JlYXRlIGEgd3JpdGFibGUgY29weSBvZiB0aGUgZXZlbnQgb2JqZWN0IGFuZCBub3JtYWxpemUgc29tZSBwcm9wZXJ0aWVzCi0JCXZhciBpLCBwcm9wLCBjb3B5LAotCQkJdHlwZSA9IGV2ZW50LnR5cGUsCi0JCQlvcmlnaW5hbEV2ZW50ID0gZXZlbnQsCi0JCQlmaXhIb29rID0gdGhpcy5maXhIb29rc1sgdHlwZSBdOwotCi0JCWlmICggIWZpeEhvb2sgKSB7Ci0JCQl0aGlzLmZpeEhvb2tzWyB0eXBlIF0gPSBmaXhIb29rID0KLQkJCQlybW91c2VFdmVudC50ZXN0KCB0eXBlICkgPyB0aGlzLm1vdXNlSG9va3MgOgotCQkJCXJrZXlFdmVudC50ZXN0KCB0eXBlICkgPyB0aGlzLmtleUhvb2tzIDoKLQkJCQl7fTsKLQkJfQotCQljb3B5ID0gZml4SG9vay5wcm9wcyA/IHRoaXMucHJvcHMuY29uY2F0KCBmaXhIb29rLnByb3BzICkgOiB0aGlzLnByb3BzOwotCi0JCWV2ZW50ID0gbmV3IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApOwotCi0JCWkgPSBjb3B5Lmxlbmd0aDsKLQkJd2hpbGUgKCBpLS0gKSB7Ci0JCQlwcm9wID0gY29weVsgaSBdOwotCQkJZXZlbnRbIHByb3AgXSA9IG9yaWdpbmFsRXZlbnRbIHByb3AgXTsKLQkJfQotCi0JCS8vIFN1cHBvcnQ6IElFPDkKLQkJLy8gRml4IHRhcmdldCBwcm9wZXJ0eSAoIzE5MjUpCi0JCWlmICggIWV2ZW50LnRhcmdldCApIHsKLQkJCWV2ZW50LnRhcmdldCA9IG9yaWdpbmFsRXZlbnQuc3JjRWxlbWVudCB8fCBkb2N1bWVudDsKLQkJfQotCi0JCS8vIFN1cHBvcnQ6IENocm9tZSAyMyssIFNhZmFyaT8KLQkJLy8gVGFyZ2V0IHNob3VsZCBub3QgYmUgYSB0ZXh0IG5vZGUgKCM1MDQsICMxMzE0MykKLQkJaWYgKCBldmVudC50YXJnZXQubm9kZVR5cGUgPT09IDMgKSB7Ci0JCQlldmVudC50YXJnZXQgPSBldmVudC50YXJnZXQucGFyZW50Tm9kZTsKLQkJfQotCi0JCS8vIFN1cHBvcnQ6IElFPDkKLQkJLy8gRm9yIG1vdXNlL2tleSBldmVudHMsIG1ldGFLZXk9PWZhbHNlIGlmIGl0J3MgdW5kZWZpbmVkICgjMzM2OCwgIzExMzI4KQotCQlldmVudC5tZXRhS2V5ID0gISFldmVudC5tZXRhS2V5OwotCi0JCXJldHVybiBmaXhIb29rLmZpbHRlciA/IGZpeEhvb2suZmlsdGVyKCBldmVudCwgb3JpZ2luYWxFdmVudCApIDogZXZlbnQ7Ci0JfSwKLQotCS8vIEluY2x1ZGVzIHNvbWUgZXZlbnQgcHJvcHMgc2hhcmVkIGJ5IEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50Ci0JcHJvcHM6ICJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksCi0KLQlmaXhIb29rczoge30sCi0KLQlrZXlIb29rczogewotCQlwcm9wczogImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksCi0JCWZpbHRlcjogZnVuY3Rpb24oIGV2ZW50LCBvcmlnaW5hbCApIHsKLQotCQkJLy8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRzCi0JCQlpZiAoIGV2ZW50LndoaWNoID09IG51bGwgKSB7Ci0JCQkJZXZlbnQud2hpY2ggPSBvcmlnaW5hbC5jaGFyQ29kZSAhPSBudWxsID8gb3JpZ2luYWwuY2hhckNvZGUgOiBvcmlnaW5hbC5rZXlDb2RlOwotCQkJfQotCi0JCQlyZXR1cm4gZXZlbnQ7Ci0JCX0KLQl9LAotCi0JbW91c2VIb29rczogewotCQlwcm9wczogImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSwKLQkJZmlsdGVyOiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkgewotCQkJdmFyIGJvZHksIGV2ZW50RG9jLCBkb2MsCi0JCQkJYnV0dG9uID0gb3JpZ2luYWwuYnV0dG9uLAotCQkJCWZyb21FbGVtZW50ID0gb3JpZ2luYWwuZnJvbUVsZW1lbnQ7Ci0KLQkJCS8vIENhbGN1bGF0ZSBwYWdlWC9ZIGlmIG1pc3NpbmcgYW5kIGNsaWVudFgvWSBhdmFpbGFibGUKLQkJCWlmICggZXZlbnQucGFnZVggPT0gbnVsbCAmJiBvcmlnaW5hbC5jbGllbnRYICE9IG51bGwgKSB7Ci0JCQkJZXZlbnREb2MgPSBldmVudC50YXJnZXQub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDsKLQkJCQlkb2MgPSBldmVudERvYy5kb2N1bWVudEVsZW1lbnQ7Ci0JCQkJYm9keSA9IGV2ZW50RG9jLmJvZHk7Ci0KLQkJCQlldmVudC5wYWdlWCA9IG9yaWdpbmFsLmNsaWVudFggKyAoIGRvYyAmJiBkb2Muc2Nyb2xsTGVmdCB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsTGVmdCB8fCAwICkgLSAoIGRvYyAmJiBkb2MuY2xpZW50TGVmdCB8fCBib2R5ICYmIGJvZHkuY2xpZW50TGVmdCB8fCAwICk7Ci0JCQkJZXZlbnQucGFnZVkgPSBvcmlnaW5hbC5jbGllbnRZICsgKCBkb2MgJiYgZG9jLnNjcm9sbFRvcCAgfHwgYm9keSAmJiBib2R5LnNjcm9sbFRvcCAgfHwgMCApIC0gKCBkb2MgJiYgZG9jLmNsaWVudFRvcCAgfHwgYm9keSAmJiBib2R5LmNsaWVudFRvcCAgfHwgMCApOwotCQkJfQotCi0JCQkvLyBBZGQgcmVsYXRlZFRhcmdldCwgaWYgbmVjZXNzYXJ5Ci0JCQlpZiAoICFldmVudC5yZWxhdGVkVGFyZ2V0ICYmIGZyb21FbGVtZW50ICkgewotCQkJCWV2ZW50LnJlbGF0ZWRUYXJnZXQgPSBmcm9tRWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0ID8gb3JpZ2luYWwudG9FbGVtZW50IDogZnJvbUVsZW1lbnQ7Ci0JCQl9Ci0KLQkJCS8vIEFkZCB3aGljaCBmb3IgY2xpY2s6IDEgPT09IGxlZnQ7IDIgPT09IG1pZGRsZTsgMyA9PT0gcmlnaHQKLQkJCS8vIE5vdGU6IGJ1dHRvbiBpcyBub3Qgbm9ybWFsaXplZCwgc28gZG9uJ3QgdXNlIGl0Ci0JCQlpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCApIHsKLQkJCQlldmVudC53aGljaCA9ICggYnV0dG9uICYgMSA/IDEgOiAoIGJ1dHRvbiAmIDIgPyAzIDogKCBidXR0b24gJiA0ID8gMiA6IDAgKSApICk7Ci0JCQl9Ci0KLQkJCXJldHVybiBldmVudDsKLQkJfQotCX0sCi0KLQlzcGVjaWFsOiB7Ci0JCWxvYWQ6IHsKLQkJCS8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxvYWQgZXZlbnRzIGZyb20gYnViYmxpbmcgdG8gd2luZG93LmxvYWQKLQkJCW5vQnViYmxlOiB0cnVlCi0JCX0sCi0JCWNsaWNrOiB7Ci0JCQkvLyBGb3IgY2hlY2tib3gsIGZpcmUgbmF0aXZlIGV2ZW50IHNvIGNoZWNrZWQgc3RhdGUgd2lsbCBiZSByaWdodAotCQkJdHJpZ2dlcjogZnVuY3Rpb24oKSB7Ci0JCQkJaWYgKCBqUXVlcnkubm9kZU5hbWUoIHRoaXMsICJpbnB1dCIgKSAmJiB0aGlzLnR5cGUgPT09ICJjaGVja2JveCIgJiYgdGhpcy5jbGljayApIHsKLQkJCQkJdGhpcy5jbGljaygpOwotCQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQkJfQotCQkJfQotCQl9LAotCQlmb2N1czogewotCQkJLy8gRmlyZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0Ci0JCQl0cmlnZ2VyOiBmdW5jdGlvbigpIHsKLQkJCQlpZiAoIHRoaXMgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgdGhpcy5mb2N1cyApIHsKLQkJCQkJdHJ5IHsKLQkJCQkJCXRoaXMuZm9jdXMoKTsKLQkJCQkJCXJldHVybiBmYWxzZTsKLQkJCQkJfSBjYXRjaCAoIGUgKSB7Ci0JCQkJCQkvLyBTdXBwb3J0OiBJRTw5Ci0JCQkJCQkvLyBJZiB3ZSBlcnJvciBvbiBmb2N1cyB0byBoaWRkZW4gZWxlbWVudCAoIzE0ODYsICMxMjUxOCksCi0JCQkJCQkvLyBsZXQgLnRyaWdnZXIoKSBydW4gdGhlIGhhbmRsZXJzCi0JCQkJCX0KLQkJCQl9Ci0JCQl9LAotCQkJZGVsZWdhdGVUeXBlOiAiZm9jdXNpbiIKLQkJfSwKLQkJYmx1cjogewotCQkJdHJpZ2dlcjogZnVuY3Rpb24oKSB7Ci0JCQkJaWYgKCB0aGlzID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIHRoaXMuYmx1ciApIHsKLQkJCQkJdGhpcy5ibHVyKCk7Ci0JCQkJCXJldHVybiBmYWxzZTsKLQkJCQl9Ci0JCQl9LAotCQkJZGVsZWdhdGVUeXBlOiAiZm9jdXNvdXQiCi0JCX0sCi0KLQkJYmVmb3JldW5sb2FkOiB7Ci0JCQlwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHsKLQotCQkJCS8vIEV2ZW4gd2hlbiByZXR1cm5WYWx1ZSBlcXVhbHMgdG8gdW5kZWZpbmVkIEZpcmVmb3ggd2lsbCBzdGlsbCBzaG93IGFsZXJ0Ci0JCQkJaWYgKCBldmVudC5yZXN1bHQgIT09IHVuZGVmaW5lZCApIHsKLQkJCQkJZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9LAotCi0Jc2ltdWxhdGU6IGZ1bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCwgYnViYmxlICkgewotCQkvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmUuCi0JCS8vIEZha2Ugb3JpZ2luYWxFdmVudCB0byBhdm9pZCBkb25vcidzIHN0b3BQcm9wYWdhdGlvbiwgYnV0IGlmIHRoZQotCQkvLyBzaW11bGF0ZWQgZXZlbnQgcHJldmVudHMgZGVmYXVsdCB0aGVuIHdlIGRvIHRoZSBzYW1lIG9uIHRoZSBkb25vci4KLQkJdmFyIGUgPSBqUXVlcnkuZXh0ZW5kKAotCQkJbmV3IGpRdWVyeS5FdmVudCgpLAotCQkJZXZlbnQsCi0JCQl7IHR5cGU6IHR5cGUsCi0JCQkJaXNTaW11bGF0ZWQ6IHRydWUsCi0JCQkJb3JpZ2luYWxFdmVudDoge30KLQkJCX0KLQkJKTsKLQkJaWYgKCBidWJibGUgKSB7Ci0JCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggZSwgbnVsbCwgZWxlbSApOwotCQl9IGVsc2UgewotCQkJalF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmNhbGwoIGVsZW0sIGUgKTsKLQkJfQotCQlpZiAoIGUuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7Ci0JCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotCQl9Ci0JfQotfTsKLQotalF1ZXJ5LnJlbW92ZUV2ZW50ID0gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciA/Ci0JZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHsKLQkJaWYgKCBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7Ci0JCQllbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhhbmRsZSwgZmFsc2UgKTsKLQkJfQotCX0gOgotCWZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBoYW5kbGUgKSB7Ci0JCXZhciBuYW1lID0gIm9uIiArIHR5cGU7Ci0KLQkJaWYgKCBlbGVtLmRldGFjaEV2ZW50ICkgewotCi0JCQkvLyAjODU0NSwgIzcwNTQsIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzIGZvciBjdXN0b20gZXZlbnRzIGluIElFNi04Ci0JCQkvLyBkZXRhY2hFdmVudCBuZWVkZWQgcHJvcGVydHkgb24gZWxlbWVudCwgYnkgbmFtZSBvZiB0aGF0IGV2ZW50LCB0byBwcm9wZXJseSBleHBvc2UgaXQgdG8gR0MKLQkJCWlmICggdHlwZW9mIGVsZW1bIG5hbWUgXSA9PT0gY29yZV9zdHJ1bmRlZmluZWQgKSB7Ci0JCQkJZWxlbVsgbmFtZSBdID0gbnVsbDsKLQkJCX0KLQotCQkJZWxlbS5kZXRhY2hFdmVudCggbmFtZSwgaGFuZGxlICk7Ci0JCX0KLQl9OwotCi1qUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHsKLQkvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmQKLQlpZiAoICEodGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCkgKSB7Ci0JCXJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7Ci0JfQotCi0JLy8gRXZlbnQgb2JqZWN0Ci0JaWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7Ci0JCXRoaXMub3JpZ2luYWxFdmVudCA9IHNyYzsKLQkJdGhpcy50eXBlID0gc3JjLnR5cGU7Ci0KLQkJLy8gRXZlbnRzIGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwcmV2ZW50ZWQKLQkJLy8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxlY3QgdGhlIGNvcnJlY3QgdmFsdWUuCi0JCXRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gKCBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fCBzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNlIHx8Ci0JCQlzcmMuZ2V0UHJldmVudERlZmF1bHQgJiYgc3JjLmdldFByZXZlbnREZWZhdWx0KCkgKSA/IHJldHVyblRydWUgOiByZXR1cm5GYWxzZTsKLQotCS8vIEV2ZW50IHR5cGUKLQl9IGVsc2UgewotCQl0aGlzLnR5cGUgPSBzcmM7Ci0JfQotCi0JLy8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3QKLQlpZiAoIHByb3BzICkgewotCQlqUXVlcnkuZXh0ZW5kKCB0aGlzLCBwcm9wcyApOwotCX0KLQotCS8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNvbWluZyBldmVudCBkb2Vzbid0IGhhdmUgb25lCi0JdGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBqUXVlcnkubm93KCk7Ci0KLQkvLyBNYXJrIGl0IGFzIGZpeGVkCi0JdGhpc1sgalF1ZXJ5LmV4cGFuZG8gXSA9IHRydWU7Ci19OwotCi0vLyBqUXVlcnkuRXZlbnQgaXMgYmFzZWQgb24gRE9NMyBFdmVudHMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0IExhbmd1YWdlIEJpbmRpbmcKLS8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbAotalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSA9IHsKLQlpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLAotCWlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSwKLQlpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsCi0KLQlwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7Ci0JCXZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwotCi0JCXRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTsKLQkJaWYgKCAhZSApIHsKLQkJCXJldHVybjsKLQkJfQotCi0JCS8vIElmIHByZXZlbnREZWZhdWx0IGV4aXN0cywgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudAotCQlpZiAoIGUucHJldmVudERlZmF1bHQgKSB7Ci0JCQllLnByZXZlbnREZWZhdWx0KCk7Ci0KLQkJLy8gU3VwcG9ydDogSUUKLQkJLy8gT3RoZXJ3aXNlIHNldCB0aGUgcmV0dXJuVmFsdWUgcHJvcGVydHkgb2YgdGhlIG9yaWdpbmFsIGV2ZW50IHRvIGZhbHNlCi0JCX0gZWxzZSB7Ci0JCQllLnJldHVyblZhbHVlID0gZmFsc2U7Ci0JCX0KLQl9LAotCXN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7Ci0JCXZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwotCi0JCXRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlOwotCQlpZiAoICFlICkgewotCQkJcmV0dXJuOwotCQl9Ci0JCS8vIElmIHN0b3BQcm9wYWdhdGlvbiBleGlzdHMsIHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZlbnQKLQkJaWYgKCBlLnN0b3BQcm9wYWdhdGlvbiApIHsKLQkJCWUuc3RvcFByb3BhZ2F0aW9uKCk7Ci0JCX0KLQotCQkvLyBTdXBwb3J0OiBJRQotCQkvLyBTZXQgdGhlIGNhbmNlbEJ1YmJsZSBwcm9wZXJ0eSBvZiB0aGUgb3JpZ2luYWwgZXZlbnQgdG8gdHJ1ZQotCQllLmNhbmNlbEJ1YmJsZSA9IHRydWU7Ci0JfSwKLQlzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewotCQl0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTsKLQkJdGhpcy5zdG9wUHJvcGFnYXRpb24oKTsKLQl9Ci19OwotCi0vLyBDcmVhdGUgbW91c2VlbnRlci9sZWF2ZSBldmVudHMgdXNpbmcgbW91c2VvdmVyL291dCBhbmQgZXZlbnQtdGltZSBjaGVja3MKLWpRdWVyeS5lYWNoKHsKLQltb3VzZWVudGVyOiAibW91c2VvdmVyIiwKLQltb3VzZWxlYXZlOiAibW91c2VvdXQiCi19LCBmdW5jdGlvbiggb3JpZywgZml4ICkgewotCWpRdWVyeS5ldmVudC5zcGVjaWFsWyBvcmlnIF0gPSB7Ci0JCWRlbGVnYXRlVHlwZTogZml4LAotCQliaW5kVHlwZTogZml4LAotCi0JCWhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkgewotCQkJdmFyIHJldCwKLQkJCQl0YXJnZXQgPSB0aGlzLAotCQkJCXJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LAotCQkJCWhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iajsKLQotCQkJLy8gRm9yIG1vdXNlbnRlci9sZWF2ZSBjYWxsIHRoZSBoYW5kbGVyIGlmIHJlbGF0ZWQgaXMgb3V0c2lkZSB0aGUgdGFyZ2V0LgotCQkJLy8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3cKLQkJCWlmICggIXJlbGF0ZWQgfHwgKHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSkgKSB7Ci0JCQkJZXZlbnQudHlwZSA9IGhhbmRsZU9iai5vcmlnVHlwZTsKLQkJCQlyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7Ci0JCQkJZXZlbnQudHlwZSA9IGZpeDsKLQkJCX0KLQkJCXJldHVybiByZXQ7Ci0JCX0KLQl9OwotfSk7Ci0KLS8vIElFIHN1Ym1pdCBkZWxlZ2F0aW9uCi1pZiAoICFqUXVlcnkuc3VwcG9ydC5zdWJtaXRCdWJibGVzICkgewotCi0JalF1ZXJ5LmV2ZW50LnNwZWNpYWwuc3VibWl0ID0gewotCQlzZXR1cDogZnVuY3Rpb24oKSB7Ci0JCQkvLyBPbmx5IG5lZWQgdGhpcyBmb3IgZGVsZWdhdGVkIGZvcm0gc3VibWl0IGV2ZW50cwotCQkJaWYgKCBqUXVlcnkubm9kZU5hbWUoIHRoaXMsICJmb3JtIiApICkgewotCQkJCXJldHVybiBmYWxzZTsKLQkJCX0KLQotCQkJLy8gTGF6eS1hZGQgYSBzdWJtaXQgaGFuZGxlciB3aGVuIGEgZGVzY2VuZGFudCBmb3JtIG1heSBwb3RlbnRpYWxseSBiZSBzdWJtaXR0ZWQKLQkJCWpRdWVyeS5ldmVudC5hZGQoIHRoaXMsICJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLCBmdW5jdGlvbiggZSApIHsKLQkJCQkvLyBOb2RlIG5hbWUgY2hlY2sgYXZvaWRzIGEgVk1MLXJlbGF0ZWQgY3Jhc2ggaW4gSUUgKCM5ODA3KQotCQkJCXZhciBlbGVtID0gZS50YXJnZXQsCi0JCQkJCWZvcm0gPSBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJpbnB1dCIgKSB8fCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJidXR0b24iICkgPyBlbGVtLmZvcm0gOiB1bmRlZmluZWQ7Ci0JCQkJaWYgKCBmb3JtICYmICFqUXVlcnkuX2RhdGEoIGZvcm0sICJzdWJtaXRCdWJibGVzIiApICkgewotCQkJCQlqUXVlcnkuZXZlbnQuYWRkKCBmb3JtLCAic3VibWl0Ll9zdWJtaXQiLCBmdW5jdGlvbiggZXZlbnQgKSB7Ci0JCQkJCQlldmVudC5fc3VibWl0X2J1YmJsZSA9IHRydWU7Ci0JCQkJCX0pOwotCQkJCQlqUXVlcnkuX2RhdGEoIGZvcm0sICJzdWJtaXRCdWJibGVzIiwgdHJ1ZSApOwotCQkJCX0KLQkJCX0pOwotCQkJLy8gcmV0dXJuIHVuZGVmaW5lZCBzaW5jZSB3ZSBkb24ndCBuZWVkIGFuIGV2ZW50IGxpc3RlbmVyCi0JCX0sCi0KLQkJcG9zdERpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0JCQkvLyBJZiBmb3JtIHdhcyBzdWJtaXR0ZWQgYnkgdGhlIHVzZXIsIGJ1YmJsZSB0aGUgZXZlbnQgdXAgdGhlIHRyZWUKLQkJCWlmICggZXZlbnQuX3N1Ym1pdF9idWJibGUgKSB7Ci0JCQkJZGVsZXRlIGV2ZW50Ll9zdWJtaXRfYnViYmxlOwotCQkJCWlmICggdGhpcy5wYXJlbnROb2RlICYmICFldmVudC5pc1RyaWdnZXIgKSB7Ci0JCQkJCWpRdWVyeS5ldmVudC5zaW11bGF0ZSggInN1Ym1pdCIsIHRoaXMucGFyZW50Tm9kZSwgZXZlbnQsIHRydWUgKTsKLQkJCQl9Ci0JCQl9Ci0JCX0sCi0KLQkJdGVhcmRvd246IGZ1bmN0aW9uKCkgewotCQkJLy8gT25seSBuZWVkIHRoaXMgZm9yIGRlbGVnYXRlZCBmb3JtIHN1Ym1pdCBldmVudHMKLQkJCWlmICggalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCAiZm9ybSIgKSApIHsKLQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQl9Ci0KLQkJCS8vIFJlbW92ZSBkZWxlZ2F0ZWQgaGFuZGxlcnM7IGNsZWFuRGF0YSBldmVudHVhbGx5IHJlYXBzIHN1Ym1pdCBoYW5kbGVycyBhdHRhY2hlZCBhYm92ZQotCQkJalF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgIi5fc3VibWl0IiApOwotCQl9Ci0JfTsKLX0KLQotLy8gSUUgY2hhbmdlIGRlbGVnYXRpb24gYW5kIGNoZWNrYm94L3JhZGlvIGZpeAotaWYgKCAhalF1ZXJ5LnN1cHBvcnQuY2hhbmdlQnViYmxlcyApIHsKLQotCWpRdWVyeS5ldmVudC5zcGVjaWFsLmNoYW5nZSA9IHsKLQotCQlzZXR1cDogZnVuY3Rpb24oKSB7Ci0KLQkJCWlmICggcmZvcm1FbGVtcy50ZXN0KCB0aGlzLm5vZGVOYW1lICkgKSB7Ci0JCQkJLy8gSUUgZG9lc24ndCBmaXJlIGNoYW5nZSBvbiBhIGNoZWNrL3JhZGlvIHVudGlsIGJsdXI7IHRyaWdnZXIgaXQgb24gY2xpY2sKLQkJCQkvLyBhZnRlciBhIHByb3BlcnR5Y2hhbmdlLiBFYXQgdGhlIGJsdXItY2hhbmdlIGluIHNwZWNpYWwuY2hhbmdlLmhhbmRsZS4KLQkJCQkvLyBUaGlzIHN0aWxsIGZpcmVzIG9uY2hhbmdlIGEgc2Vjb25kIHRpbWUgZm9yIGNoZWNrL3JhZGlvIGFmdGVyIGJsdXIuCi0JCQkJaWYgKCB0aGlzLnR5cGUgPT09ICJjaGVja2JveCIgfHwgdGhpcy50eXBlID09PSAicmFkaW8iICkgewotCQkJCQlqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCAicHJvcGVydHljaGFuZ2UuX2NoYW5nZSIsIGZ1bmN0aW9uKCBldmVudCApIHsKLQkJCQkJCWlmICggZXZlbnQub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUgPT09ICJjaGVja2VkIiApIHsKLQkJCQkJCQl0aGlzLl9qdXN0X2NoYW5nZWQgPSB0cnVlOwotCQkJCQkJfQotCQkJCQl9KTsKLQkJCQkJalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgImNsaWNrLl9jaGFuZ2UiLCBmdW5jdGlvbiggZXZlbnQgKSB7Ci0JCQkJCQlpZiAoIHRoaXMuX2p1c3RfY2hhbmdlZCAmJiAhZXZlbnQuaXNUcmlnZ2VyICkgewotCQkJCQkJCXRoaXMuX2p1c3RfY2hhbmdlZCA9IGZhbHNlOwotCQkJCQkJfQotCQkJCQkJLy8gQWxsb3cgdHJpZ2dlcmVkLCBzaW11bGF0ZWQgY2hhbmdlIGV2ZW50cyAoIzExNTAwKQotCQkJCQkJalF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCAiY2hhbmdlIiwgdGhpcywgZXZlbnQsIHRydWUgKTsKLQkJCQkJfSk7Ci0JCQkJfQotCQkJCXJldHVybiBmYWxzZTsKLQkJCX0KLQkJCS8vIERlbGVnYXRlZCBldmVudDsgbGF6eS1hZGQgYSBjaGFuZ2UgaGFuZGxlciBvbiBkZXNjZW5kYW50IGlucHV0cwotCQkJalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLCBmdW5jdGlvbiggZSApIHsKLQkJCQl2YXIgZWxlbSA9IGUudGFyZ2V0OwotCi0JCQkJaWYgKCByZm9ybUVsZW1zLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJiAhalF1ZXJ5Ll9kYXRhKCBlbGVtLCAiY2hhbmdlQnViYmxlcyIgKSApIHsKLQkJCQkJalF1ZXJ5LmV2ZW50LmFkZCggZWxlbSwgImNoYW5nZS5fY2hhbmdlIiwgZnVuY3Rpb24oIGV2ZW50ICkgewotCQkJCQkJaWYgKCB0aGlzLnBhcmVudE5vZGUgJiYgIWV2ZW50LmlzU2ltdWxhdGVkICYmICFldmVudC5pc1RyaWdnZXIgKSB7Ci0JCQkJCQkJalF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCAiY2hhbmdlIiwgdGhpcy5wYXJlbnROb2RlLCBldmVudCwgdHJ1ZSApOwotCQkJCQkJfQotCQkJCQl9KTsKLQkJCQkJalF1ZXJ5Ll9kYXRhKCBlbGVtLCAiY2hhbmdlQnViYmxlcyIsIHRydWUgKTsKLQkJCQl9Ci0JCQl9KTsKLQkJfSwKLQotCQloYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHsKLQkJCXZhciBlbGVtID0gZXZlbnQudGFyZ2V0OwotCi0JCQkvLyBTd2FsbG93IG5hdGl2ZSBjaGFuZ2UgZXZlbnRzIGZyb20gY2hlY2tib3gvcmFkaW8sIHdlIGFscmVhZHkgdHJpZ2dlcmVkIHRoZW0gYWJvdmUKLQkJCWlmICggdGhpcyAhPT0gZWxlbSB8fCBldmVudC5pc1NpbXVsYXRlZCB8fCBldmVudC5pc1RyaWdnZXIgfHwgKGVsZW0udHlwZSAhPT0gInJhZGlvIiAmJiBlbGVtLnR5cGUgIT09ICJjaGVja2JveCIpICkgewotCQkJCXJldHVybiBldmVudC5oYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7Ci0JCQl9Ci0JCX0sCi0KLQkJdGVhcmRvd246IGZ1bmN0aW9uKCkgewotCQkJalF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgIi5fY2hhbmdlIiApOwotCi0JCQlyZXR1cm4gIXJmb3JtRWxlbXMudGVzdCggdGhpcy5ub2RlTmFtZSApOwotCQl9Ci0JfTsKLX0KLQotLy8gQ3JlYXRlICJidWJibGluZyIgZm9jdXMgYW5kIGJsdXIgZXZlbnRzCi1pZiAoICFqUXVlcnkuc3VwcG9ydC5mb2N1c2luQnViYmxlcyApIHsKLQlqUXVlcnkuZWFjaCh7IGZvY3VzOiAiZm9jdXNpbiIsIGJsdXI6ICJmb2N1c291dCIgfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHsKLQotCQkvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgd2hpbGUgc29tZW9uZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0Ci0JCXZhciBhdHRhY2hlcyA9IDAsCi0JCQloYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkgewotCQkJCWpRdWVyeS5ldmVudC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2ZW50ICksIHRydWUgKTsKLQkJCX07Ci0KLQkJalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0gewotCQkJc2V0dXA6IGZ1bmN0aW9uKCkgewotCQkJCWlmICggYXR0YWNoZXMrKyA9PT0gMCApIHsKLQkJCQkJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApOwotCQkJCX0KLQkJCX0sCi0JCQl0ZWFyZG93bjogZnVuY3Rpb24oKSB7Ci0JCQkJaWYgKCAtLWF0dGFjaGVzID09PSAwICkgewotCQkJCQlkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7Ci0JCQkJfQotCQkJfQotCQl9OwotCX0pOwotfQotCi1qUXVlcnkuZm4uZXh0ZW5kKHsKLQotCW9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgLypJTlRFUk5BTCovIG9uZSApIHsKLQkJdmFyIHR5cGUsIG9yaWdGbjsKLQotCQkvLyBUeXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnMKLQkJaWYgKCB0eXBlb2YgdHlwZXMgPT09ICJvYmplY3QiICkgewotCQkJLy8gKCB0eXBlcy1PYmplY3QsIHNlbGVjdG9yLCBkYXRhICkKLQkJCWlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKLQkJCQkvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApCi0JCQkJZGF0YSA9IGRhdGEgfHwgc2VsZWN0b3I7Ci0JCQkJc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0JCQl9Ci0JCQlmb3IgKCB0eXBlIGluIHR5cGVzICkgewotCQkJCXRoaXMub24oIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTsKLQkJCX0KLQkJCXJldHVybiB0aGlzOwotCQl9Ci0KLQkJaWYgKCBkYXRhID09IG51bGwgJiYgZm4gPT0gbnVsbCApIHsKLQkJCS8vICggdHlwZXMsIGZuICkKLQkJCWZuID0gc2VsZWN0b3I7Ci0JCQlkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0JCX0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7Ci0JCQlpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7Ci0JCQkJLy8gKCB0eXBlcywgc2VsZWN0b3IsIGZuICkKLQkJCQlmbiA9IGRhdGE7Ci0JCQkJZGF0YSA9IHVuZGVmaW5lZDsKLQkJCX0gZWxzZSB7Ci0JCQkJLy8gKCB0eXBlcywgZGF0YSwgZm4gKQotCQkJCWZuID0gZGF0YTsKLQkJCQlkYXRhID0gc2VsZWN0b3I7Ci0JCQkJc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0JCQl9Ci0JCX0KLQkJaWYgKCBmbiA9PT0gZmFsc2UgKSB7Ci0JCQlmbiA9IHJldHVybkZhbHNlOwotCQl9IGVsc2UgaWYgKCAhZm4gKSB7Ci0JCQlyZXR1cm4gdGhpczsKLQkJfQotCi0JCWlmICggb25lID09PSAxICkgewotCQkJb3JpZ0ZuID0gZm47Ci0JCQlmbiA9IGZ1bmN0aW9uKCBldmVudCApIHsKLQkJCQkvLyBDYW4gdXNlIGFuIGVtcHR5IHNldCwgc2luY2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm8KLQkJCQlqUXVlcnkoKS5vZmYoIGV2ZW50ICk7Ci0JCQkJcmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7Ci0JCQl9OwotCQkJLy8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm4KLQkJCWZuLmd1aWQgPSBvcmlnRm4uZ3VpZCB8fCAoIG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApOwotCQl9Ci0JCXJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewotCQkJalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZXMsIGZuLCBkYXRhLCBzZWxlY3RvciApOwotCQl9KTsKLQl9LAotCW9uZTogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7Ci0JCXJldHVybiB0aGlzLm9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAxICk7Ci0JfSwKLQlvZmY6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGZuICkgewotCQl2YXIgaGFuZGxlT2JqLCB0eXBlOwotCQlpZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVzLmhhbmRsZU9iaiApIHsKLQkJCS8vICggZXZlbnQgKSAgZGlzcGF0Y2hlZCBqUXVlcnkuRXZlbnQKLQkJCWhhbmRsZU9iaiA9IHR5cGVzLmhhbmRsZU9iajsKLQkJCWpRdWVyeSggdHlwZXMuZGVsZWdhdGVUYXJnZXQgKS5vZmYoCi0JCQkJaGFuZGxlT2JqLm5hbWVzcGFjZSA/IGhhbmRsZU9iai5vcmlnVHlwZSArICIuIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOiBoYW5kbGVPYmoub3JpZ1R5cGUsCi0JCQkJaGFuZGxlT2JqLnNlbGVjdG9yLAotCQkJCWhhbmRsZU9iai5oYW5kbGVyCi0JCQkpOwotCQkJcmV0dXJuIHRoaXM7Ci0JCX0KLQkJaWYgKCB0eXBlb2YgdHlwZXMgPT09ICJvYmplY3QiICkgewotCQkJLy8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdICkKLQkJCWZvciAoIHR5cGUgaW4gdHlwZXMgKSB7Ci0JCQkJdGhpcy5vZmYoIHR5cGUsIHNlbGVjdG9yLCB0eXBlc1sgdHlwZSBdICk7Ci0JCQl9Ci0JCQlyZXR1cm4gdGhpczsKLQkJfQotCQlpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09ICJmdW5jdGlvbiIgKSB7Ci0JCQkvLyAoIHR5cGVzIFssIGZuXSApCi0JCQlmbiA9IHNlbGVjdG9yOwotCQkJc2VsZWN0b3IgPSB1bmRlZmluZWQ7Ci0JCX0KLQkJaWYgKCBmbiA9PT0gZmFsc2UgKSB7Ci0JCQlmbiA9IHJldHVybkZhbHNlOwotCQl9Ci0JCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQlqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7Ci0JCX0pOwotCX0sCi0KLQliaW5kOiBmdW5jdGlvbiggdHlwZXMsIGRhdGEsIGZuICkgewotCQlyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7Ci0JfSwKLQl1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7Ci0JCXJldHVybiB0aGlzLm9mZiggdHlwZXMsIG51bGwsIGZuICk7Ci0JfSwKLQotCWRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHsKLQkJcmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTsKLQl9LAotCXVuZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGZuICkgewotCQkvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApCi0JCXJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gdGhpcy5vZmYoIHNlbGVjdG9yLCAiKioiICkgOiB0aGlzLm9mZiggdHlwZXMsIHNlbGVjdG9yIHx8ICIqKiIsIGZuICk7Ci0JfSwKLQotCXRyaWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgewotCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIHRoaXMgKTsKLQkJfSk7Ci0JfSwKLQl0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7Ci0JCXZhciBlbGVtID0gdGhpc1swXTsKLQkJaWYgKCBlbGVtICkgewotCQkJcmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7Ci0JCX0KLQl9Ci19KTsKLS8qIQotICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUKLSAqIENvcHlyaWdodCAyMDEyIGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKLSAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQotICogaHR0cDovL3NpenpsZWpzLmNvbS8KLSAqLwotKGZ1bmN0aW9uKCB3aW5kb3csIHVuZGVmaW5lZCApIHsKLQotdmFyIGksCi0JY2FjaGVkcnVucywKLQlFeHByLAotCWdldFRleHQsCi0JaXNYTUwsCi0JY29tcGlsZSwKLQloYXNEdXBsaWNhdGUsCi0Jb3V0ZXJtb3N0Q29udGV4dCwKLQotCS8vIExvY2FsIGRvY3VtZW50IHZhcnMKLQlzZXREb2N1bWVudCwKLQlkb2N1bWVudCwKLQlkb2NFbGVtLAotCWRvY3VtZW50SXNYTUwsCi0JcmJ1Z2d5UVNBLAotCXJidWdneU1hdGNoZXMsCi0JbWF0Y2hlcywKLQljb250YWlucywKLQlzb3J0T3JkZXIsCi0KLQkvLyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhCi0JZXhwYW5kbyA9ICJzaXp6bGUiICsgLShuZXcgRGF0ZSgpKSwKLQlwcmVmZXJyZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsCi0Jc3VwcG9ydCA9IHt9LAotCWRpcnJ1bnMgPSAwLAotCWRvbmUgPSAwLAotCWNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAotCXRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAotCWNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLAotCi0JLy8gR2VuZXJhbC1wdXJwb3NlIGNvbnN0YW50cwotCXN0cnVuZGVmaW5lZCA9IHR5cGVvZiB1bmRlZmluZWQsCi0JTUFYX05FR0FUSVZFID0gMSA8PCAzMSwKLQotCS8vIEFycmF5IG1ldGhvZHMKLQlhcnIgPSBbXSwKLQlwb3AgPSBhcnIucG9wLAotCXB1c2ggPSBhcnIucHVzaCwKLQlzbGljZSA9IGFyci5zbGljZSwKLQkvLyBVc2UgYSBzdHJpcHBlZC1kb3duIGluZGV4T2YgaWYgd2UgY2FuJ3QgdXNlIGEgbmF0aXZlIG9uZQotCWluZGV4T2YgPSBhcnIuaW5kZXhPZiB8fCBmdW5jdGlvbiggZWxlbSApIHsKLQkJdmFyIGkgPSAwLAotCQkJbGVuID0gdGhpcy5sZW5ndGg7Ci0JCWZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotCQkJaWYgKCB0aGlzW2ldID09PSBlbGVtICkgewotCQkJCXJldHVybiBpOwotCQkJfQotCQl9Ci0JCXJldHVybiAtMTsKLQl9LAotCi0KLQkvLyBSZWd1bGFyIGV4cHJlc3Npb25zCi0KLQkvLyBXaGl0ZXNwYWNlIGNoYXJhY3RlcnMgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI3doaXRlc3BhY2UKLQl3aGl0ZXNwYWNlID0gIltcXHgyMFxcdFxcclxcblxcZl0iLAotCS8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyNjaGFyYWN0ZXJzCi0JY2hhcmFjdGVyRW5jb2RpbmcgPSAiKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLAotCi0JLy8gTG9vc2VseSBtb2RlbGVkIG9uIENTUyBpZGVudGlmaWVyIGNoYXJhY3RlcnMKLQkvLyBBbiB1bnF1b3RlZCB2YWx1ZSBzaG91bGQgYmUgYSBDU1MgaWRlbnRpZmllciBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9ycwotCS8vIFByb3BlciBzeW50YXg6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllcgotCWlkZW50aWZpZXIgPSBjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCAidyIsICJ3IyIgKSwKLQotCS8vIEFjY2VwdGFibGUgb3BlcmF0b3JzIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9ycwotCW9wZXJhdG9ycyA9ICIoWypeJHwhfl0/PSkiLAotCWF0dHJpYnV0ZXMgPSAiXFxbIiArIHdoaXRlc3BhY2UgKyAiKigiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyAiKSIgKyB3aGl0ZXNwYWNlICsKLQkJIiooPzoiICsgb3BlcmF0b3JzICsgd2hpdGVzcGFjZSArICIqKD86KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woIiArIGlkZW50aWZpZXIgKyAiKXwpfCkiICsgd2hpdGVzcGFjZSArICIqXFxdIiwKLQotCS8vIFByZWZlciBhcmd1bWVudHMgcXVvdGVkLAotCS8vICAgdGhlbiBub3QgY29udGFpbmluZyBwc2V1ZG9zL2JyYWNrZXRzLAotCS8vICAgdGhlbiBhdHRyaWJ1dGUgc2VsZWN0b3JzL25vbi1wYXJlbnRoZXRpY2FsIGV4cHJlc3Npb25zLAotCS8vICAgdGhlbiBhbnl0aGluZyBlbHNlCi0JLy8gVGhlc2UgcHJlZmVyZW5jZXMgYXJlIGhlcmUgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3JzCi0JLy8gICBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBQU0VVRE8gcHJlRmlsdGVyCi0JcHNldWRvcyA9ICI6KCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArICIpKD86XFwoKChbJ1wiXSkoKD86XFxcXC58W15cXFxcXSkqPylcXDN8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IiArIGF0dHJpYnV0ZXMucmVwbGFjZSggMywgOCApICsgIikqKXwuKilcXCl8KSIsCi0KLQkvLyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyCi0JcnRyaW0gPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIgKyB3aGl0ZXNwYWNlICsgIiskIiwgImciICksCi0KLQlyY29tbWEgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIiosIiArIHdoaXRlc3BhY2UgKyAiKiIgKSwKLQlyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCAiXiIgKyB3aGl0ZXNwYWNlICsgIiooW1xceDIwXFx0XFxyXFxuXFxmPit+XSkiICsgd2hpdGVzcGFjZSArICIqIiApLAotCXJwc2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1ZG9zICksCi0JcmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCAiXiIgKyBpZGVudGlmaWVyICsgIiQiICksCi0KLQltYXRjaEV4cHIgPSB7Ci0JCSJJRCI6IG5ldyBSZWdFeHAoICJeIygiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyAiKSIgKSwKLQkJIkNMQVNTIjogbmV3IFJlZ0V4cCggIl5cXC4oIiArIGNoYXJhY3RlckVuY29kaW5nICsgIikiICksCi0JCSJOQU1FIjogbmV3IFJlZ0V4cCggIl5cXFtuYW1lPVsnXCJdPygiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyAiKVsnXCJdP1xcXSIgKSwKLQkJIlRBRyI6IG5ldyBSZWdFeHAoICJeKCIgKyBjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCAidyIsICJ3KiIgKSArICIpIiApLAotCQkiQVRUUiI6IG5ldyBSZWdFeHAoICJeIiArIGF0dHJpYnV0ZXMgKSwKLQkJIlBTRVVETyI6IG5ldyBSZWdFeHAoICJeIiArIHBzZXVkb3MgKSwKLQkJIkNISUxEIjogbmV3IFJlZ0V4cCggIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIgKyB3aGl0ZXNwYWNlICsKLQkJCSIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIiArIHdoaXRlc3BhY2UgKyAiKig/OihbKy1dfCkiICsgd2hpdGVzcGFjZSArCi0JCQkiKihcXGQrKXwpKSIgKyB3aGl0ZXNwYWNlICsgIipcXCl8KSIsICJpIiApLAotCQkvLyBGb3IgdXNlIGluIGxpYnJhcmllcyBpbXBsZW1lbnRpbmcgLmlzKCkKLQkJLy8gV2UgdXNlIHRoaXMgZm9yIFBPUyBtYXRjaGluZyBpbiBgc2VsZWN0YAotCQkibmVlZHNDb250ZXh0IjogbmV3IFJlZ0V4cCggIl4iICsgd2hpdGVzcGFjZSArICIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiICsKLQkJCXdoaXRlc3BhY2UgKyAiKigoPzotXFxkKT9cXGQqKSIgKyB3aGl0ZXNwYWNlICsgIipcXCl8KSg/PVteLV18JCkiLCAiaSIgKQotCX0sCi0KLQlyc2libGluZyA9IC9bXHgyMFx0XHJcblxmXSpbK35dLywKLQotCXJuYXRpdmUgPSAvXltee10rXHtccypcW25hdGl2ZSBjb2RlLywKLQotCS8vIEVhc2lseS1wYXJzZWFibGUvcmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNTIHNlbGVjdG9ycwotCXJxdWlja0V4cHIgPSAvXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLAotCi0JcmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksCi0JcmhlYWRlciA9IC9eaFxkJC9pLAotCi0JcmVzY2FwZSA9IC8nfFxcL2csCi0JcmF0dHJpYnV0ZVF1b3RlcyA9IC9cPVtceDIwXHRcclxuXGZdKihbXiciXF1dKilbXHgyMFx0XHJcblxmXSpcXS9nLAotCi0JLy8gQ1NTIGVzY2FwZXMgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI2VzY2FwZWQtY2hhcmFjdGVycwotCXJ1bmVzY2FwZSA9IC9cXChbXGRhLWZBLUZdezEsNn1bXHgyMFx0XHJcblxmXT98LikvZywKLQlmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywgZXNjYXBlZCApIHsKLQkJdmFyIGhpZ2ggPSAiMHgiICsgZXNjYXBlZCAtIDB4MTAwMDA7Ci0JCS8vIE5hTiBtZWFucyBub24tY29kZXBvaW50Ci0JCXJldHVybiBoaWdoICE9PSBoaWdoID8KLQkJCWVzY2FwZWQgOgotCQkJLy8gQk1QIGNvZGVwb2ludAotCQkJaGlnaCA8IDAgPwotCQkJCVN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOgotCQkJCS8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKQotCQkJCVN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCApOwotCX07Ci0KLS8vIFVzZSBhIHN0cmlwcGVkLWRvd24gc2xpY2UgaWYgd2UgY2FuJ3QgdXNlIGEgbmF0aXZlIG9uZQotdHJ5IHsKLQlzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMsIDAgKVswXS5ub2RlVHlwZTsKLX0gY2F0Y2ggKCBlICkgewotCXNsaWNlID0gZnVuY3Rpb24oIGkgKSB7Ci0JCXZhciBlbGVtLAotCQkJcmVzdWx0cyA9IFtdOwotCQl3aGlsZSAoIChlbGVtID0gdGhpc1tpKytdKSApIHsKLQkJCXJlc3VsdHMucHVzaCggZWxlbSApOwotCQl9Ci0JCXJldHVybiByZXN1bHRzOwotCX07Ci19Ci0KLS8qKgotICogRm9yIGZlYXR1cmUgZGV0ZWN0aW9uCi0gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gdGVzdCBmb3IgbmF0aXZlIHN1cHBvcnQKLSAqLwotZnVuY3Rpb24gaXNOYXRpdmUoIGZuICkgewotCXJldHVybiBybmF0aXZlLnRlc3QoIGZuICsgIiIgKTsKLX0KLQotLyoqCi0gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemUKLSAqIEByZXR1cm5zIHtGdW5jdGlvbihzdHJpbmcsIE9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGgKLSAqCXByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5ndGgpCi0gKglkZWxldGluZyB0aGUgb2xkZXN0IGVudHJ5Ci0gKi8KLWZ1bmN0aW9uIGNyZWF0ZUNhY2hlKCkgewotCXZhciBjYWNoZSwKLQkJa2V5cyA9IFtdOwotCi0JcmV0dXJuIChjYWNoZSA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewotCQkvLyBVc2UgKGtleSArICIgIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1NykKLQkJaWYgKCBrZXlzLnB1c2goIGtleSArPSAiICIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7Ci0JCQkvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXMKLQkJCWRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07Ci0JCX0KLQkJcmV0dXJuIChjYWNoZVsga2V5IF0gPSB2YWx1ZSk7Ci0JfSk7Ci19Ci0KLS8qKgotICogTWFyayBhIGZ1bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGUKLSAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBtYXJrCi0gKi8KLWZ1bmN0aW9uIG1hcmtGdW5jdGlvbiggZm4gKSB7Ci0JZm5bIGV4cGFuZG8gXSA9IHRydWU7Ci0JcmV0dXJuIGZuOwotfQotCi0vKioKLSAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50Ci0gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZGl2IGFuZCBleHBlY3RzIGEgYm9vbGVhbiByZXN1bHQKLSAqLwotZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHsKLQl2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0KLQl0cnkgewotCQlyZXR1cm4gZm4oIGRpdiApOwotCX0gY2F0Y2ggKGUpIHsKLQkJcmV0dXJuIGZhbHNlOwotCX0gZmluYWxseSB7Ci0JCS8vIHJlbGVhc2UgbWVtb3J5IGluIElFCi0JCWRpdiA9IG51bGw7Ci0JfQotfQotCi1mdW5jdGlvbiBTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkgewotCXZhciBtYXRjaCwgZWxlbSwgbSwgbm9kZVR5cGUsCi0JCS8vIFFTQSB2YXJzCi0JCWksIGdyb3Vwcywgb2xkLCBuaWQsIG5ld0NvbnRleHQsIG5ld1NlbGVjdG9yOwotCi0JaWYgKCAoIGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IHByZWZlcnJlZERvYyApICE9PSBkb2N1bWVudCApIHsKLQkJc2V0RG9jdW1lbnQoIGNvbnRleHQgKTsKLQl9Ci0KLQljb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsKLQlyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTsKLQotCWlmICggIXNlbGVjdG9yIHx8IHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgKSB7Ci0JCXJldHVybiByZXN1bHRzOwotCX0KLQotCWlmICggKG5vZGVUeXBlID0gY29udGV4dC5ub2RlVHlwZSkgIT09IDEgJiYgbm9kZVR5cGUgIT09IDkgKSB7Ci0JCXJldHVybiBbXTsKLQl9Ci0KLQlpZiAoICFkb2N1bWVudElzWE1MICYmICFzZWVkICkgewotCi0JCS8vIFNob3J0Y3V0cwotCQlpZiAoIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7Ci0JCQkvLyBTcGVlZC11cDogU2l6emxlKCIjSUQiKQotCQkJaWYgKCAobSA9IG1hdGNoWzFdKSApIHsKLQkJCQlpZiAoIG5vZGVUeXBlID09PSA5ICkgewotCQkJCQllbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApOwotCQkJCQkvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJucwotCQkJCQkvLyBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50ICM2OTYzCi0JCQkJCWlmICggZWxlbSAmJiBlbGVtLnBhcmVudE5vZGUgKSB7Ci0JCQkJCQkvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgSUUsIE9wZXJhLCBhbmQgV2Via2l0IHJldHVybiBpdGVtcwotCQkJCQkJLy8gYnkgbmFtZSBpbnN0ZWFkIG9mIElECi0JCQkJCQlpZiAoIGVsZW0uaWQgPT09IG0gKSB7Ci0JCQkJCQkJcmVzdWx0cy5wdXNoKCBlbGVtICk7Ci0JCQkJCQkJcmV0dXJuIHJlc3VsdHM7Ci0JCQkJCQl9Ci0JCQkJCX0gZWxzZSB7Ci0JCQkJCQlyZXR1cm4gcmVzdWx0czsKLQkJCQkJfQotCQkJCX0gZWxzZSB7Ci0JCQkJCS8vIENvbnRleHQgaXMgbm90IGEgZG9jdW1lbnQKLQkJCQkJaWYgKCBjb250ZXh0Lm93bmVyRG9jdW1lbnQgJiYgKGVsZW0gPSBjb250ZXh0Lm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgJiYKLQkJCQkJCWNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiYgZWxlbS5pZCA9PT0gbSApIHsKLQkJCQkJCXJlc3VsdHMucHVzaCggZWxlbSApOwotCQkJCQkJcmV0dXJuIHJlc3VsdHM7Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCS8vIFNwZWVkLXVwOiBTaXp6bGUoIlRBRyIpCi0JCQl9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHsKLQkJCQlwdXNoLmFwcGx5KCByZXN1bHRzLCBzbGljZS5jYWxsKGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHNlbGVjdG9yICksIDApICk7Ci0JCQkJcmV0dXJuIHJlc3VsdHM7Ci0KLQkJCS8vIFNwZWVkLXVwOiBTaXp6bGUoIi5DTEFTUyIpCi0JCQl9IGVsc2UgaWYgKCAobSA9IG1hdGNoWzNdKSAmJiBzdXBwb3J0LmdldEJ5Q2xhc3NOYW1lICYmIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHsKLQkJCQlwdXNoLmFwcGx5KCByZXN1bHRzLCBzbGljZS5jYWxsKGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApLCAwKSApOwotCQkJCXJldHVybiByZXN1bHRzOwotCQkJfQotCQl9Ci0KLQkJLy8gUVNBIHBhdGgKLQkJaWYgKCBzdXBwb3J0LnFzYSAmJiAhcmJ1Z2d5UVNBLnRlc3Qoc2VsZWN0b3IpICkgewotCQkJb2xkID0gdHJ1ZTsKLQkJCW5pZCA9IGV4cGFuZG87Ci0JCQluZXdDb250ZXh0ID0gY29udGV4dDsKLQkJCW5ld1NlbGVjdG9yID0gbm9kZVR5cGUgPT09IDkgJiYgc2VsZWN0b3I7Ci0KLQkJCS8vIHFTQSB3b3JrcyBzdHJhbmdlbHkgb24gRWxlbWVudC1yb290ZWQgcXVlcmllcwotCQkJLy8gV2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkgc3BlY2lmeWluZyBhbiBleHRyYSBJRCBvbiB0aGUgcm9vdAotCQkJLy8gYW5kIHdvcmtpbmcgdXAgZnJvbSB0aGVyZSAoVGhhbmtzIHRvIEFuZHJldyBEdXBvbnQgZm9yIHRoZSB0ZWNobmlxdWUpCi0JCQkvLyBJRSA4IGRvZXNuJ3Qgd29yayBvbiBvYmplY3QgZWxlbWVudHMKLQkJCWlmICggbm9kZVR5cGUgPT09IDEgJiYgY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAib2JqZWN0IiApIHsKLQkJCQlncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTsKLQotCQkJCWlmICggKG9sZCA9IGNvbnRleHQuZ2V0QXR0cmlidXRlKCJpZCIpKSApIHsKLQkJCQkJbmlkID0gb2xkLnJlcGxhY2UoIHJlc2NhcGUsICJcXCQmIiApOwotCQkJCX0gZWxzZSB7Ci0JCQkJCWNvbnRleHQuc2V0QXR0cmlidXRlKCAiaWQiLCBuaWQgKTsKLQkJCQl9Ci0JCQkJbmlkID0gIltpZD0nIiArIG5pZCArICInXSAiOwotCi0JCQkJaSA9IGdyb3Vwcy5sZW5ndGg7Ci0JCQkJd2hpbGUgKCBpLS0gKSB7Ci0JCQkJCWdyb3Vwc1tpXSA9IG5pZCArIHRvU2VsZWN0b3IoIGdyb3Vwc1tpXSApOwotCQkJCX0KLQkJCQluZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiBjb250ZXh0LnBhcmVudE5vZGUgfHwgY29udGV4dDsKLQkJCQluZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKCIsIik7Ci0JCQl9Ci0KLQkJCWlmICggbmV3U2VsZWN0b3IgKSB7Ci0JCQkJdHJ5IHsKLQkJCQkJcHVzaC5hcHBseSggcmVzdWx0cywgc2xpY2UuY2FsbCggbmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKAotCQkJCQkJbmV3U2VsZWN0b3IKLQkJCQkJKSwgMCApICk7Ci0JCQkJCXJldHVybiByZXN1bHRzOwotCQkJCX0gY2F0Y2gocXNhRXJyb3IpIHsKLQkJCQl9IGZpbmFsbHkgewotCQkJCQlpZiAoICFvbGQgKSB7Ci0JCQkJCQljb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSgiaWQiKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCX0KLQotCS8vIEFsbCBvdGhlcnMKLQlyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgIiQxIiApLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICk7Ci19Ci0KLS8qKgotICogRGV0ZWN0IHhtbAotICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gZWxlbSBBbiBlbGVtZW50IG9yIGEgZG9jdW1lbnQKLSAqLwotaXNYTUwgPSBTaXp6bGUuaXNYTUwgPSBmdW5jdGlvbiggZWxlbSApIHsKLQkvLyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9yIGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3QgeWV0IGV4aXN0Ci0JLy8gKHN1Y2ggYXMgbG9hZGluZyBpZnJhbWVzIGluIElFIC0gIzQ4MzMpCi0JdmFyIGRvY3VtZW50RWxlbWVudCA9IGVsZW0gJiYgKGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtKS5kb2N1bWVudEVsZW1lbnQ7Ci0JcmV0dXJuIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gIkhUTUwiIDogZmFsc2U7Ci19OwotCi0vKioKLSAqIFNldHMgZG9jdW1lbnQtcmVsYXRlZCB2YXJpYWJsZXMgb25jZSBiYXNlZCBvbiB0aGUgY3VycmVudCBkb2N1bWVudAotICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gW2RvY10gQW4gZWxlbWVudCBvciBkb2N1bWVudCBvYmplY3QgdG8gdXNlIHRvIHNldCB0aGUgZG9jdW1lbnQKLSAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnQKLSAqLwotc2V0RG9jdW1lbnQgPSBTaXp6bGUuc2V0RG9jdW1lbnQgPSBmdW5jdGlvbiggbm9kZSApIHsKLQl2YXIgZG9jID0gbm9kZSA/IG5vZGUub3duZXJEb2N1bWVudCB8fCBub2RlIDogcHJlZmVycmVkRG9jOwotCi0JLy8gSWYgbm8gZG9jdW1lbnQgYW5kIGRvY3VtZW50RWxlbWVudCBpcyBhdmFpbGFibGUsIHJldHVybgotCWlmICggZG9jID09PSBkb2N1bWVudCB8fCBkb2Mubm9kZVR5cGUgIT09IDkgfHwgIWRvYy5kb2N1bWVudEVsZW1lbnQgKSB7Ci0JCXJldHVybiBkb2N1bWVudDsKLQl9Ci0KLQkvLyBTZXQgb3VyIGRvY3VtZW50Ci0JZG9jdW1lbnQgPSBkb2M7Ci0JZG9jRWxlbSA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7Ci0KLQkvLyBTdXBwb3J0IHRlc3RzCi0JZG9jdW1lbnRJc1hNTCA9IGlzWE1MKCBkb2MgKTsKLQotCS8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzCi0Jc3VwcG9ydC50YWdOYW1lTm9Db21tZW50cyA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkgewotCQlkaXYuYXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVDb21tZW50KCIiKSApOwotCQlyZXR1cm4gIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aDsKLQl9KTsKLQotCS8vIENoZWNrIGlmIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIHJldHJpZXZlZCBieSBhdHRyaWJ1dGUgbm9kZXMKLQlzdXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHsKLQkJZGl2LmlubmVySFRNTCA9ICI8c2VsZWN0Pjwvc2VsZWN0PiI7Ci0JCXZhciB0eXBlID0gdHlwZW9mIGRpdi5sYXN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJtdWx0aXBsZSIpOwotCQkvLyBJRTggcmV0dXJucyBhIHN0cmluZyBmb3Igc29tZSBhdHRyaWJ1dGVzIGV2ZW4gd2hlbiBub3QgcHJlc2VudAotCQlyZXR1cm4gdHlwZSAhPT0gImJvb2xlYW4iICYmIHR5cGUgIT09ICJzdHJpbmciOwotCX0pOwotCi0JLy8gQ2hlY2sgaWYgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSBjYW4gYmUgdHJ1c3RlZAotCXN1cHBvcnQuZ2V0QnlDbGFzc05hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHsKLQkJLy8gT3BlcmEgY2FuJ3QgZmluZCBhIHNlY29uZCBjbGFzc25hbWUgKGluIDkuNikKLQkJZGl2LmlubmVySFRNTCA9ICI8ZGl2IGNsYXNzPSdoaWRkZW4gZSc+PC9kaXY+PGRpdiBjbGFzcz0naGlkZGVuJz48L2Rpdj4iOwotCQlpZiAoICFkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSB8fCAhZGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGggKSB7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQotCQkvLyBTYWZhcmkgMy4yIGNhY2hlcyBjbGFzcyBhdHRyaWJ1dGVzIGFuZCBkb2Vzbid0IGNhdGNoIGNoYW5nZXMKLQkJZGl2Lmxhc3RDaGlsZC5jbGFzc05hbWUgPSAiZSI7Ci0JCXJldHVybiBkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aCA9PT0gMjsKLQl9KTsKLQotCS8vIENoZWNrIGlmIGdldEVsZW1lbnRCeUlkIHJldHVybnMgZWxlbWVudHMgYnkgbmFtZQotCS8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlOYW1lIHByaXZpbGVnZXMgZm9ybSBjb250cm9scyBvciByZXR1cm5zIGVsZW1lbnRzIGJ5IElECi0Jc3VwcG9ydC5nZXRCeU5hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHsKLQkJLy8gSW5qZWN0IGNvbnRlbnQKLQkJZGl2LmlkID0gZXhwYW5kbyArIDA7Ci0JCWRpdi5pbm5lckhUTUwgPSAiPGEgbmFtZT0nIiArIGV4cGFuZG8gKyAiJz48L2E+PGRpdiBuYW1lPSciICsgZXhwYW5kbyArICInPjwvZGl2PiI7Ci0JCWRvY0VsZW0uaW5zZXJ0QmVmb3JlKCBkaXYsIGRvY0VsZW0uZmlyc3RDaGlsZCApOwotCi0JCS8vIFRlc3QKLQkJdmFyIHBhc3MgPSBkb2MuZ2V0RWxlbWVudHNCeU5hbWUgJiYKLQkJCS8vIGJ1Z2d5IGJyb3dzZXJzIHdpbGwgcmV0dXJuIGZld2VyIHRoYW4gdGhlIGNvcnJlY3QgMgotCQkJZG9jLmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoID09PSAyICsKLQkJCS8vIGJ1Z2d5IGJyb3dzZXJzIHdpbGwgcmV0dXJuIG1vcmUgdGhhbiB0aGUgY29ycmVjdCAwCi0JCQlkb2MuZ2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKyAwICkubGVuZ3RoOwotCQlzdXBwb3J0LmdldElkTm90TmFtZSA9ICFkb2MuZ2V0RWxlbWVudEJ5SWQoIGV4cGFuZG8gKTsKLQotCQkvLyBDbGVhbnVwCi0JCWRvY0VsZW0ucmVtb3ZlQ2hpbGQoIGRpdiApOwotCi0JCXJldHVybiBwYXNzOwotCX0pOwotCi0JLy8gSUU2LzcgcmV0dXJuIG1vZGlmaWVkIGF0dHJpYnV0ZXMKLQlFeHByLmF0dHJIYW5kbGUgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHsKLQkJZGl2LmlubmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+IjsKLQkJcmV0dXJuIGRpdi5maXJzdENoaWxkICYmIHR5cGVvZiBkaXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUgIT09IHN0cnVuZGVmaW5lZCAmJgotCQkJZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikgPT09ICIjIjsKLQl9KSA/Ci0JCXt9IDoKLQkJewotCQkJImhyZWYiOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCQlyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoICJocmVmIiwgMiApOwotCQkJfSwKLQkJCSJ0eXBlIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQkJcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCJ0eXBlIik7Ci0JCQl9Ci0JCX07Ci0KLQkvLyBJRCBmaW5kIGFuZCBmaWx0ZXIKLQlpZiAoIHN1cHBvcnQuZ2V0SWROb3ROYW1lICkgewotCQlFeHByLmZpbmRbIklEIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7Ci0JCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBzdHJ1bmRlZmluZWQgJiYgIWRvY3VtZW50SXNYTUwgKSB7Ci0JCQkJdmFyIG0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApOwotCQkJCS8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1cm5zCi0JCQkJLy8gbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAjNjk2MwotCQkJCXJldHVybiBtICYmIG0ucGFyZW50Tm9kZSA/IFttXSA6IFtdOwotCQkJfQotCQl9OwotCQlFeHByLmZpbHRlclsiSUQiXSA9IGZ1bmN0aW9uKCBpZCApIHsKLQkJCXZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApOwotCQkJcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotCQkJCXJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gYXR0cklkOwotCQkJfTsKLQkJfTsKLQl9IGVsc2UgewotCQlFeHByLmZpbmRbIklEIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7Ci0JCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBzdHJ1bmRlZmluZWQgJiYgIWRvY3VtZW50SXNYTUwgKSB7Ci0JCQkJdmFyIG0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApOwotCi0JCQkJcmV0dXJuIG0gPwotCQkJCQltLmlkID09PSBpZCB8fCB0eXBlb2YgbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSBzdHJ1bmRlZmluZWQgJiYgbS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLnZhbHVlID09PSBpZCA/Ci0JCQkJCQlbbV0gOgotCQkJCQkJdW5kZWZpbmVkIDoKLQkJCQkJW107Ci0JCQl9Ci0JCX07Ci0JCUV4cHIuZmlsdGVyWyJJRCJdID0gIGZ1bmN0aW9uKCBpZCApIHsKLQkJCXZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApOwotCQkJcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotCQkJCXZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gc3RydW5kZWZpbmVkICYmIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsKLQkJCQlyZXR1cm4gbm9kZSAmJiBub2RlLnZhbHVlID09PSBhdHRySWQ7Ci0JCQl9OwotCQl9OwotCX0KLQotCS8vIFRhZwotCUV4cHIuZmluZFsiVEFHIl0gPSBzdXBwb3J0LnRhZ05hbWVOb0NvbW1lbnRzID8KLQkJZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHsKLQkJCWlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IHN0cnVuZGVmaW5lZCApIHsKLQkJCQlyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7Ci0JCQl9Ci0JCX0gOgotCQlmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkgewotCQkJdmFyIGVsZW0sCi0JCQkJdG1wID0gW10sCi0JCQkJaSA9IDAsCi0JCQkJcmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApOwotCi0JCQkvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzCi0JCQlpZiAoIHRhZyA9PT0gIioiICkgewotCQkJCXdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkgewotCQkJCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0JCQkJCQl0bXAucHVzaCggZWxlbSApOwotCQkJCQl9Ci0JCQkJfQotCi0JCQkJcmV0dXJuIHRtcDsKLQkJCX0KLQkJCXJldHVybiByZXN1bHRzOwotCQl9OwotCi0JLy8gTmFtZQotCUV4cHIuZmluZFsiTkFNRSJdID0gc3VwcG9ydC5nZXRCeU5hbWUgJiYgZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHsKLQkJaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSAhPT0gc3RydW5kZWZpbmVkICkgewotCQkJcmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUoIG5hbWUgKTsKLQkJfQotCX07Ci0KLQkvLyBDbGFzcwotCUV4cHIuZmluZFsiQ0xBU1MiXSA9IHN1cHBvcnQuZ2V0QnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oIGNsYXNzTmFtZSwgY29udGV4dCApIHsKLQkJaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICE9PSBzdHJ1bmRlZmluZWQgJiYgIWRvY3VtZW50SXNYTUwgKSB7Ci0JCQlyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTsKLQkJfQotCX07Ci0KLQkvLyBRU0EgYW5kIG1hdGNoZXNTZWxlY3RvciBzdXBwb3J0Ci0KLQkvLyBtYXRjaGVzU2VsZWN0b3IoOmFjdGl2ZSkgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKElFOS9PcGVyYSAxMS41KQotCXJidWdneU1hdGNoZXMgPSBbXTsKLQotCS8vIHFTYSg6Zm9jdXMpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChDaHJvbWUgMjEpLAotCS8vIG5vIG5lZWQgdG8gYWxzbyBhZGQgdG8gYnVnZ3lNYXRjaGVzIHNpbmNlIG1hdGNoZXMgY2hlY2tzIGJ1Z2d5UVNBCi0JLy8gQSBzdXBwb3J0IHRlc3Qgd291bGQgcmVxdWlyZSB0b28gbXVjaCBjb2RlICh3b3VsZCBpbmNsdWRlIGRvY3VtZW50IHJlYWR5KQotCXJidWdneVFTQSA9IFsgIjpmb2N1cyIgXTsKLQotCWlmICggKHN1cHBvcnQucXNhID0gaXNOYXRpdmUoZG9jLnF1ZXJ5U2VsZWN0b3JBbGwpKSApIHsKLQkJLy8gQnVpbGQgUVNBIHJlZ2V4Ci0JCS8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmkKLQkJYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0JCQkvLyBTZWxlY3QgaXMgc2V0IHRvIGVtcHR5IHN0cmluZyBvbiBwdXJwb3NlCi0JCQkvLyBUaGlzIGlzIHRvIHRlc3QgSUUncyB0cmVhdG1lbnQgb2Ygbm90IGV4cGxpY3RseQotCQkJLy8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRyaWJ1dGUsCi0JCQkvLyBzaW5jZSBpdHMgcHJlc2VuY2Ugc2hvdWxkIGJlIGVub3VnaAotCQkJLy8gaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTkKLQkJCWRpdi5pbm5lckhUTUwgPSAiPHNlbGVjdD48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiI7Ci0KLQkJCS8vIElFOCAtIFNvbWUgYm9vbGVhbiBhdHRyaWJ1dGVzIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHkKLQkJCWlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RoICkgewotCQkJCXJidWdneVFTQS5wdXNoKCAiXFxbIiArIHdoaXRlc3BhY2UgKyAiKig/OmNoZWNrZWR8ZGlzYWJsZWR8aXNtYXB8bXVsdGlwbGV8cmVhZG9ubHl8c2VsZWN0ZWR8dmFsdWUpIiApOwotCQkJfQotCi0JCQkvLyBXZWJraXQvT3BlcmEgLSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIHNlbGVjdGVkIG9wdGlvbiBlbGVtZW50cwotCQkJLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWQKLQkJCS8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCi0JCQlpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGggKSB7Ci0JCQkJcmJ1Z2d5UVNBLnB1c2goIjpjaGVja2VkIik7Ci0JCQl9Ci0JCX0pOwotCi0JCWFzc2VydChmdW5jdGlvbiggZGl2ICkgewotCi0JCQkvLyBPcGVyYSAxMC0xMi9JRTggLSBePSAkPSAqPSBhbmQgZW1wdHkgdmFsdWVzCi0JCQkvLyBTaG91bGQgbm90IHNlbGVjdCBhbnl0aGluZwotCQkJZGl2LmlubmVySFRNTCA9ICI8aW5wdXQgdHlwZT0naGlkZGVuJyBpPScnLz4iOwotCQkJaWYgKCBkaXYucXVlcnlTZWxlY3RvckFsbCgiW2lePScnXSIpLmxlbmd0aCApIHsKLQkJCQlyYnVnZ3lRU0EucHVzaCggIlsqXiRdPSIgKyB3aGl0ZXNwYWNlICsgIiooPzpcIlwifCcnKSIgKTsKLQkJCX0KLQotCQkJLy8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZCkKLQkJCS8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzCi0JCQlpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGggKSB7Ci0JCQkJcmJ1Z2d5UVNBLnB1c2goICI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiICk7Ci0JCQl9Ci0KLQkJCS8vIE9wZXJhIDEwLTExIGRvZXMgbm90IHRocm93IG9uIHBvc3QtY29tbWEgaW52YWxpZCBwc2V1ZG9zCi0JCQlkaXYucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpOwotCQkJcmJ1Z2d5UVNBLnB1c2goIiwuKjoiKTsKLQkJfSk7Ci0JfQotCi0JaWYgKCAoc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgPSBpc05hdGl2ZSggKG1hdGNoZXMgPSBkb2NFbGVtLm1hdGNoZXNTZWxlY3RvciB8fAotCQlkb2NFbGVtLm1vek1hdGNoZXNTZWxlY3RvciB8fAotCQlkb2NFbGVtLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fAotCQlkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3IgfHwKLQkJZG9jRWxlbS5tc01hdGNoZXNTZWxlY3RvcikgKSkgKSB7Ci0KLQkJYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7Ci0JCQkvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2VsZWN0b3IKLQkJCS8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpCi0JCQlzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBkaXYsICJkaXYiICk7Ci0KLQkJCS8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb24KLQkJCS8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWQKLQkJCW1hdGNoZXMuY2FsbCggZGl2LCAiW3MhPScnXTp4IiApOwotCQkJcmJ1Z2d5TWF0Y2hlcy5wdXNoKCAiIT0iLCBwc2V1ZG9zICk7Ci0JCX0pOwotCX0KLQotCXJidWdneVFTQSA9IG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKCJ8IikgKTsKLQlyYnVnZ3lNYXRjaGVzID0gbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKCJ8IikgKTsKLQotCS8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlcgotCS8vIFB1cnBvc2VmdWxseSBkb2VzIG5vdCBpbXBsZW1lbnQgaW5jbHVzaXZlIGRlc2NlbmRlbnQKLQkvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZgotCWNvbnRhaW5zID0gaXNOYXRpdmUoZG9jRWxlbS5jb250YWlucykgfHwgZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/Ci0JCWZ1bmN0aW9uKCBhLCBiICkgewotCQkJdmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSwKLQkJCQlidXAgPSBiICYmIGIucGFyZW50Tm9kZTsKLQkJCXJldHVybiBhID09PSBidXAgfHwgISEoIGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKAotCQkJCWFkb3duLmNvbnRhaW5zID8KLQkJCQkJYWRvd24uY29udGFpbnMoIGJ1cCApIDoKLQkJCQkJYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2Ci0JCQkpKTsKLQkJfSA6Ci0JCWZ1bmN0aW9uKCBhLCBiICkgewotCQkJaWYgKCBiICkgewotCQkJCXdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUpICkgewotCQkJCQlpZiAoIGIgPT09IGEgKSB7Ci0JCQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJCXJldHVybiBmYWxzZTsKLQkJfTsKLQotCS8vIERvY3VtZW50IG9yZGVyIHNvcnRpbmcKLQlzb3J0T3JkZXIgPSBkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uID8KLQlmdW5jdGlvbiggYSwgYiApIHsKLQkJdmFyIGNvbXBhcmU7Ci0KLQkJaWYgKCBhID09PSBiICkgewotCQkJaGFzRHVwbGljYXRlID0gdHJ1ZTsKLQkJCXJldHVybiAwOwotCQl9Ci0KLQkJaWYgKCAoY29tcGFyZSA9IGIuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBiICkpICkgewotCQkJaWYgKCBjb21wYXJlICYgMSB8fCBhLnBhcmVudE5vZGUgJiYgYS5wYXJlbnROb2RlLm5vZGVUeXBlID09PSAxMSApIHsKLQkJCQlpZiAoIGEgPT09IGRvYyB8fCBjb250YWlucyggcHJlZmVycmVkRG9jLCBhICkgKSB7Ci0JCQkJCXJldHVybiAtMTsKLQkJCQl9Ci0JCQkJaWYgKCBiID09PSBkb2MgfHwgY29udGFpbnMoIHByZWZlcnJlZERvYywgYiApICkgewotCQkJCQlyZXR1cm4gMTsKLQkJCQl9Ci0JCQkJcmV0dXJuIDA7Ci0JCQl9Ci0JCQlyZXR1cm4gY29tcGFyZSAmIDQgPyAtMSA6IDE7Ci0JCX0KLQotCQlyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/IC0xIDogMTsKLQl9IDoKLQlmdW5jdGlvbiggYSwgYiApIHsKLQkJdmFyIGN1ciwKLQkJCWkgPSAwLAotCQkJYXVwID0gYS5wYXJlbnROb2RlLAotCQkJYnVwID0gYi5wYXJlbnROb2RlLAotCQkJYXAgPSBbIGEgXSwKLQkJCWJwID0gWyBiIF07Ci0KLQkJLy8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbAotCQlpZiAoIGEgPT09IGIgKSB7Ci0JCQloYXNEdXBsaWNhdGUgPSB0cnVlOwotCQkJcmV0dXJuIDA7Ci0KLQkJLy8gUGFyZW50bGVzcyBub2RlcyBhcmUgZWl0aGVyIGRvY3VtZW50cyBvciBkaXNjb25uZWN0ZWQKLQkJfSBlbHNlIGlmICggIWF1cCB8fCAhYnVwICkgewotCQkJcmV0dXJuIGEgPT09IGRvYyA/IC0xIDoKLQkJCQliID09PSBkb2MgPyAxIDoKLQkJCQlhdXAgPyAtMSA6Ci0JCQkJYnVwID8gMSA6Ci0JCQkJMDsKLQotCQkvLyBJZiB0aGUgbm9kZXMgYXJlIHNpYmxpbmdzLCB3ZSBjYW4gZG8gYSBxdWljayBjaGVjawotCQl9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHsKLQkJCXJldHVybiBzaWJsaW5nQ2hlY2soIGEsIGIgKTsKLQkJfQotCi0JCS8vIE90aGVyd2lzZSB3ZSBuZWVkIGZ1bGwgbGlzdHMgb2YgdGhlaXIgYW5jZXN0b3JzIGZvciBjb21wYXJpc29uCi0JCWN1ciA9IGE7Ci0JCXdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHsKLQkJCWFwLnVuc2hpZnQoIGN1ciApOwotCQl9Ci0JCWN1ciA9IGI7Ci0JCXdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHsKLQkJCWJwLnVuc2hpZnQoIGN1ciApOwotCQl9Ci0KLQkJLy8gV2FsayBkb3duIHRoZSB0cmVlIGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3kKLQkJd2hpbGUgKCBhcFtpXSA9PT0gYnBbaV0gKSB7Ci0JCQlpKys7Ci0JCX0KLQotCQlyZXR1cm4gaSA/Ci0JCQkvLyBEbyBhIHNpYmxpbmcgY2hlY2sgaWYgdGhlIG5vZGVzIGhhdmUgYSBjb21tb24gYW5jZXN0b3IKLQkJCXNpYmxpbmdDaGVjayggYXBbaV0sIGJwW2ldICkgOgotCi0JCQkvLyBPdGhlcndpc2Ugbm9kZXMgaW4gb3VyIGRvY3VtZW50IHNvcnQgZmlyc3QKLQkJCWFwW2ldID09PSBwcmVmZXJyZWREb2MgPyAtMSA6Ci0JCQlicFtpXSA9PT0gcHJlZmVycmVkRG9jID8gMSA6Ci0JCQkwOwotCX07Ci0KLQkvLyBBbHdheXMgYXNzdW1lIHRoZSBwcmVzZW5jZSBvZiBkdXBsaWNhdGVzIGlmIHNvcnQgZG9lc24ndAotCS8vIHBhc3MgdGhlbSB0byBvdXIgY29tcGFyaXNvbiBmdW5jdGlvbiAoYXMgaW4gR29vZ2xlIENocm9tZSkuCi0JaGFzRHVwbGljYXRlID0gZmFsc2U7Ci0JWzAsIDBdLnNvcnQoIHNvcnRPcmRlciApOwotCXN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcyA9IGhhc0R1cGxpY2F0ZTsKLQotCXJldHVybiBkb2N1bWVudDsKLX07Ci0KLVNpenpsZS5tYXRjaGVzID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1lbnRzICkgewotCXJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7Ci19OwotCi1TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4cHIgKSB7Ci0JLy8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkCi0JaWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkgewotCQlzZXREb2N1bWVudCggZWxlbSApOwotCX0KLQotCS8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAotCWV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsICI9JyQxJ10iICk7Ci0KLQkvLyByYnVnZ3lRU0EgYWx3YXlzIGNvbnRhaW5zIDpmb2N1cywgc28gbm8gbmVlZCBmb3IgYW4gZXhpc3RlbmNlIGNoZWNrCi0JaWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiAhZG9jdW1lbnRJc1hNTCAmJiAoIXJidWdneU1hdGNoZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdChleHByKSkgJiYgIXJidWdneVFTQS50ZXN0KGV4cHIpICkgewotCQl0cnkgewotCQkJdmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApOwotCi0JCQkvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzCi0JCQlpZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8Ci0JCQkJCS8vIEFzIHdlbGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBhcmUgc2FpZCB0byBiZSBpbiBhIGRvY3VtZW50Ci0JCQkJCS8vIGZyYWdtZW50IGluIElFIDkKLQkJCQkJZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAxMSApIHsKLQkJCQlyZXR1cm4gcmV0OwotCQkJfQotCQl9IGNhdGNoKGUpIHt9Ci0JfQotCi0JcmV0dXJuIFNpenpsZSggZXhwciwgZG9jdW1lbnQsIG51bGwsIFtlbGVtXSApLmxlbmd0aCA+IDA7Ci19OwotCi1TaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbiggY29udGV4dCwgZWxlbSApIHsKLQkvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWQKLQlpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQgKSB7Ci0JCXNldERvY3VtZW50KCBjb250ZXh0ICk7Ci0JfQotCXJldHVybiBjb250YWlucyggY29udGV4dCwgZWxlbSApOwotfTsKLQotU2l6emxlLmF0dHIgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKLQl2YXIgdmFsOwotCi0JLy8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkCi0JaWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkgewotCQlzZXREb2N1bWVudCggZWxlbSApOwotCX0KLQotCWlmICggIWRvY3VtZW50SXNYTUwgKSB7Ci0JCW5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7Ci0JfQotCWlmICggKHZhbCA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZSBdKSApIHsKLQkJcmV0dXJuIHZhbCggZWxlbSApOwotCX0KLQlpZiAoIGRvY3VtZW50SXNYTUwgfHwgc3VwcG9ydC5hdHRyaWJ1dGVzICkgewotCQlyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKTsKLQl9Ci0JcmV0dXJuICggKHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSB8fCBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApICkgJiYgZWxlbVsgbmFtZSBdID09PSB0cnVlID8KLQkJbmFtZSA6Ci0JCXZhbCAmJiB2YWwuc3BlY2lmaWVkID8gdmFsLnZhbHVlIDogbnVsbDsKLX07Ci0KLVNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7Ci0JdGhyb3cgbmV3IEVycm9yKCAiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIG1zZyApOwotfTsKLQotLy8gRG9jdW1lbnQgc29ydGluZyBhbmQgcmVtb3ZpbmcgZHVwbGljYXRlcwotU2l6emxlLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbiggcmVzdWx0cyApIHsKLQl2YXIgZWxlbSwKLQkJZHVwbGljYXRlcyA9IFtdLAotCQlpID0gMSwKLQkJaiA9IDA7Ci0KLQkvLyBVbmxlc3Mgd2UgKmtub3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRoZWlyIHByZXNlbmNlCi0JaGFzRHVwbGljYXRlID0gIXN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlczsKLQlyZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApOwotCi0JaWYgKCBoYXNEdXBsaWNhdGUgKSB7Ci0JCWZvciAoIDsgKGVsZW0gPSByZXN1bHRzW2ldKTsgaSsrICkgewotCQkJaWYgKCBlbGVtID09PSByZXN1bHRzWyBpIC0gMSBdICkgewotCQkJCWogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTsKLQkJCX0KLQkJfQotCQl3aGlsZSAoIGotLSApIHsKLQkJCXJlc3VsdHMuc3BsaWNlKCBkdXBsaWNhdGVzWyBqIF0sIDEgKTsKLQkJfQotCX0KLQotCXJldHVybiByZXN1bHRzOwotfTsKLQotZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkgewotCXZhciBjdXIgPSBiICYmIGEsCi0JCWRpZmYgPSBjdXIgJiYgKCB+Yi5zb3VyY2VJbmRleCB8fCBNQVhfTkVHQVRJVkUgKSAtICggfmEuc291cmNlSW5kZXggfHwgTUFYX05FR0FUSVZFICk7Ci0KLQkvLyBVc2UgSUUgc291cmNlSW5kZXggaWYgYXZhaWxhYmxlIG9uIGJvdGggbm9kZXMKLQlpZiAoIGRpZmYgKSB7Ci0JCXJldHVybiBkaWZmOwotCX0KLQotCS8vIENoZWNrIGlmIGIgZm9sbG93cyBhCi0JaWYgKCBjdXIgKSB7Ci0JCXdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7Ci0JCQlpZiAoIGN1ciA9PT0gYiApIHsKLQkJCQlyZXR1cm4gLTE7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gYSA/IDEgOiAtMTsKLX0KLQotLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBpbnB1dCB0eXBlcwotZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUgKSB7Ci0JcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotCQl2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKLQkJcmV0dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYgZWxlbS50eXBlID09PSB0eXBlOwotCX07Ci19Ci0KLS8vIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgYnV0dG9ucwotZnVuY3Rpb24gY3JlYXRlQnV0dG9uUHNldWRvKCB0eXBlICkgewotCXJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLQkJdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0JCXJldHVybiAobmFtZSA9PT0gImlucHV0IiB8fCBuYW1lID09PSAiYnV0dG9uIikgJiYgZWxlbS50eXBlID09PSB0eXBlOwotCX07Ci19Ci0KLS8vIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgcG9zaXRpb25hbHMKLWZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZuICkgewotCXJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkgewotCQlhcmd1bWVudCA9ICthcmd1bWVudDsKLQkJcmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHsKLQkJCXZhciBqLAotCQkJCW1hdGNoSW5kZXhlcyA9IGZuKCBbXSwgc2VlZC5sZW5ndGgsIGFyZ3VtZW50ICksCi0JCQkJaSA9IG1hdGNoSW5kZXhlcy5sZW5ndGg7Ci0KLQkJCS8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlcwotCQkJd2hpbGUgKCBpLS0gKSB7Ci0JCQkJaWYgKCBzZWVkWyAoaiA9IG1hdGNoSW5kZXhlc1tpXSkgXSApIHsKLQkJCQkJc2VlZFtqXSA9ICEobWF0Y2hlc1tqXSA9IHNlZWRbal0pOwotCQkJCX0KLQkJCX0KLQkJfSk7Ci0JfSk7Ci19Ci0KLS8qKgotICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgdGV4dCB2YWx1ZSBvZiBhbiBhcnJheSBvZiBET00gbm9kZXMKLSAqIEBwYXJhbSB7QXJyYXl8RWxlbWVudH0gZWxlbQotICovCi1nZXRUZXh0ID0gU2l6emxlLmdldFRleHQgPSBmdW5jdGlvbiggZWxlbSApIHsKLQl2YXIgbm9kZSwKLQkJcmV0ID0gIiIsCi0JCWkgPSAwLAotCQlub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7Ci0KLQlpZiAoICFub2RlVHlwZSApIHsKLQkJLy8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gYXJyYXkKLQkJZm9yICggOyAobm9kZSA9IGVsZW1baV0pOyBpKysgKSB7Ci0JCQkvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2RlcwotCQkJcmV0ICs9IGdldFRleHQoIG5vZGUgKTsKLQkJfQotCX0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHsKLQkJLy8gVXNlIHRleHRDb250ZW50IGZvciBlbGVtZW50cwotCQkvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChzZWUgIzExMTUzKQotCQlpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSAic3RyaW5nIiApIHsKLQkJCXJldHVybiBlbGVtLnRleHRDb250ZW50OwotCQl9IGVsc2UgewotCQkJLy8gVHJhdmVyc2UgaXRzIGNoaWxkcmVuCi0JCQlmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHsKLQkJCQlyZXQgKz0gZ2V0VGV4dCggZWxlbSApOwotCQkJfQotCQl9Ci0JfSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7Ci0JCXJldHVybiBlbGVtLm5vZGVWYWx1ZTsKLQl9Ci0JLy8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzCi0KLQlyZXR1cm4gcmV0OwotfTsKLQotRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7Ci0KLQkvLyBDYW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXIKLQljYWNoZUxlbmd0aDogNTAsCi0KLQljcmVhdGVQc2V1ZG86IG1hcmtGdW5jdGlvbiwKLQotCW1hdGNoOiBtYXRjaEV4cHIsCi0KLQlmaW5kOiB7fSwKLQotCXJlbGF0aXZlOiB7Ci0JCSI+IjogeyBkaXI6ICJwYXJlbnROb2RlIiwgZmlyc3Q6IHRydWUgfSwKLQkJIiAiOiB7IGRpcjogInBhcmVudE5vZGUiIH0sCi0JCSIrIjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmciLCBmaXJzdDogdHJ1ZSB9LAotCQkifiI6IHsgZGlyOiAicHJldmlvdXNTaWJsaW5nIiB9Ci0JfSwKLQotCXByZUZpbHRlcjogewotCQkiQVRUUiI6IGZ1bmN0aW9uKCBtYXRjaCApIHsKLQkJCW1hdGNoWzFdID0gbWF0Y2hbMV0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTsKLQotCQkJLy8gTW92ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gbWF0Y2hbM10gd2hldGhlciBxdW90ZWQgb3IgdW5xdW90ZWQKLQkJCW1hdGNoWzNdID0gKCBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCAiIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7Ci0KLQkJCWlmICggbWF0Y2hbMl0gPT09ICJ+PSIgKSB7Ci0JCQkJbWF0Y2hbM10gPSAiICIgKyBtYXRjaFszXSArICIgIjsKLQkJCX0KLQotCQkJcmV0dXJuIG1hdGNoLnNsaWNlKCAwLCA0ICk7Ci0JCX0sCi0KLQkJIkNISUxEIjogZnVuY3Rpb24oIG1hdGNoICkgewotCQkJLyogbWF0Y2hlcyBmcm9tIG1hdGNoRXhwclsiQ0hJTEQiXQotCQkJCTEgdHlwZSAob25seXxudGh8Li4uKQotCQkJCTIgd2hhdCAoY2hpbGR8b2YtdHlwZSkKLQkJCQkzIGFyZ3VtZW50IChldmVufG9kZHxcZCp8XGQqbihbKy1dXGQrKT98Li4uKQotCQkJCTQgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XGQqbnwpCi0JCQkJNSBzaWduIG9mIHhuLWNvbXBvbmVudAotCQkJCTYgeCBvZiB4bi1jb21wb25lbnQKLQkJCQk3IHNpZ24gb2YgeS1jb21wb25lbnQKLQkJCQk4IHkgb2YgeS1jb21wb25lbnQKLQkJCSovCi0JCQltYXRjaFsxXSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7Ci0KLQkJCWlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0gIm50aCIgKSB7Ci0JCQkJLy8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnQKLQkJCQlpZiAoICFtYXRjaFszXSApIHsKLQkJCQkJU2l6emxlLmVycm9yKCBtYXRjaFswXSApOwotCQkJCX0KLQotCQkJCS8vIG51bWVyaWMgeCBhbmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRAotCQkJCS8vIHJlbWVtYmVyIHRoYXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzEKLQkJCQltYXRjaFs0XSA9ICsoIG1hdGNoWzRdID8gbWF0Y2hbNV0gKyAobWF0Y2hbNl0gfHwgMSkgOiAyICogKCBtYXRjaFszXSA9PT0gImV2ZW4iIHx8IG1hdGNoWzNdID09PSAib2RkIiApICk7Ci0JCQkJbWF0Y2hbNV0gPSArKCAoIG1hdGNoWzddICsgbWF0Y2hbOF0gKSB8fCBtYXRjaFszXSA9PT0gIm9kZCIgKTsKLQotCQkJLy8gb3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzCi0JCQl9IGVsc2UgaWYgKCBtYXRjaFszXSApIHsKLQkJCQlTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7Ci0JCQl9Ci0KLQkJCXJldHVybiBtYXRjaDsKLQkJfSwKLQotCQkiUFNFVURPIjogZnVuY3Rpb24oIG1hdGNoICkgewotCQkJdmFyIGV4Y2VzcywKLQkJCQl1bnF1b3RlZCA9ICFtYXRjaFs1XSAmJiBtYXRjaFsyXTsKLQotCQkJaWYgKCBtYXRjaEV4cHJbIkNISUxEIl0udGVzdCggbWF0Y2hbMF0gKSApIHsKLQkJCQlyZXR1cm4gbnVsbDsKLQkJCX0KLQotCQkJLy8gQWNjZXB0IHF1b3RlZCBhcmd1bWVudHMgYXMtaXMKLQkJCWlmICggbWF0Y2hbNF0gKSB7Ci0JCQkJbWF0Y2hbMl0gPSBtYXRjaFs0XTsKLQotCQkJLy8gU3RyaXAgZXhjZXNzIGNoYXJhY3RlcnMgZnJvbSB1bnF1b3RlZCBhcmd1bWVudHMKLQkJCX0gZWxzZSBpZiAoIHVucXVvdGVkICYmIHJwc2V1ZG8udGVzdCggdW5xdW90ZWQgKSAmJgotCQkJCS8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpCi0JCQkJKGV4Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAmJgotCQkJCS8vIGFkdmFuY2UgdG8gdGhlIG5leHQgY2xvc2luZyBwYXJlbnRoZXNpcwotCQkJCShleGNlc3MgPSB1bnF1b3RlZC5pbmRleE9mKCAiKSIsIHVucXVvdGVkLmxlbmd0aCAtIGV4Y2VzcyApIC0gdW5xdW90ZWQubGVuZ3RoKSApIHsKLQotCQkJCS8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4Ci0JCQkJbWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7Ci0JCQkJbWF0Y2hbMl0gPSB1bnF1b3RlZC5zbGljZSggMCwgZXhjZXNzICk7Ci0JCQl9Ci0KLQkJCS8vIFJldHVybiBvbmx5IGNhcHR1cmVzIG5lZWRlZCBieSB0aGUgcHNldWRvIGZpbHRlciBtZXRob2QgKHR5cGUgYW5kIGFyZ3VtZW50KQotCQkJcmV0dXJuIG1hdGNoLnNsaWNlKCAwLCAzICk7Ci0JCX0KLQl9LAotCi0JZmlsdGVyOiB7Ci0KLQkJIlRBRyI6IGZ1bmN0aW9uKCBub2RlTmFtZSApIHsKLQkJCWlmICggbm9kZU5hbWUgPT09ICIqIiApIHsKLQkJCQlyZXR1cm4gZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9OwotCQkJfQotCi0JCQlub2RlTmFtZSA9IG5vZGVOYW1lLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTsKLQkJCXJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCQlyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lOwotCQkJfTsKLQkJfSwKLQotCQkiQ0xBU1MiOiBmdW5jdGlvbiggY2xhc3NOYW1lICkgewotCQkJdmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hlWyBjbGFzc05hbWUgKyAiICIgXTsKLQotCQkJcmV0dXJuIHBhdHRlcm4gfHwKLQkJCQkocGF0dGVybiA9IG5ldyBSZWdFeHAoICIoXnwiICsgd2hpdGVzcGFjZSArICIpIiArIGNsYXNzTmFtZSArICIoIiArIHdoaXRlc3BhY2UgKyAifCQpIiApKSAmJgotCQkJCWNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQkJCXJldHVybiBwYXR0ZXJuLnRlc3QoIGVsZW0uY2xhc3NOYW1lIHx8ICh0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUgIT09IHN0cnVuZGVmaW5lZCAmJiBlbGVtLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSkgfHwgIiIgKTsKLQkJCQl9KTsKLQkJfSwKLQotCQkiQVRUUiI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7Ci0JCQlyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQkJdmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICk7Ci0KLQkJCQlpZiAoIHJlc3VsdCA9PSBudWxsICkgewotCQkJCQlyZXR1cm4gb3BlcmF0b3IgPT09ICIhPSI7Ci0JCQkJfQotCQkJCWlmICggIW9wZXJhdG9yICkgewotCQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCQl9Ci0KLQkJCQlyZXN1bHQgKz0gIiI7Ci0KLQkJCQlyZXR1cm4gb3BlcmF0b3IgPT09ICI9IiA/IHJlc3VsdCA9PT0gY2hlY2sgOgotCQkJCQlvcGVyYXRvciA9PT0gIiE9IiA/IHJlc3VsdCAhPT0gY2hlY2sgOgotCQkJCQlvcGVyYXRvciA9PT0gIl49IiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID09PSAwIDoKLQkJCQkJb3BlcmF0b3IgPT09ICIqPSIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDoKLQkJCQkJb3BlcmF0b3IgPT09ICIkPSIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOgotCQkJCQlvcGVyYXRvciA9PT0gIn49IiA/ICggIiAiICsgcmVzdWx0ICsgIiAiICkuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDoKLQkJCQkJb3BlcmF0b3IgPT09ICJ8PSIgPyByZXN1bHQgPT09IGNoZWNrIHx8IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArICItIiA6Ci0JCQkJCWZhbHNlOwotCQkJfTsKLQkJfSwKLQotCQkiQ0hJTEQiOiBmdW5jdGlvbiggdHlwZSwgd2hhdCwgYXJndW1lbnQsIGZpcnN0LCBsYXN0ICkgewotCQkJdmFyIHNpbXBsZSA9IHR5cGUuc2xpY2UoIDAsIDMgKSAhPT0gIm50aCIsCi0JCQkJZm9yd2FyZCA9IHR5cGUuc2xpY2UoIC00ICkgIT09ICJsYXN0IiwKLQkJCQlvZlR5cGUgPSB3aGF0ID09PSAib2YtdHlwZSI7Ci0KLQkJCXJldHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID8KLQotCQkJCS8vIFNob3J0Y3V0IGZvciA6bnRoLSoobikKLQkJCQlmdW5jdGlvbiggZWxlbSApIHsKLQkJCQkJcmV0dXJuICEhZWxlbS5wYXJlbnROb2RlOwotCQkJCX0gOgotCi0JCQkJZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKLQkJCQkJdmFyIGNhY2hlLCBvdXRlckNhY2hlLCBub2RlLCBkaWZmLCBub2RlSW5kZXgsIHN0YXJ0LAotCQkJCQkJZGlyID0gc2ltcGxlICE9PSBmb3J3YXJkID8gIm5leHRTaWJsaW5nIiA6ICJwcmV2aW91c1NpYmxpbmciLAotCQkJCQkJcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLAotCQkJCQkJbmFtZSA9IG9mVHlwZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksCi0JCQkJCQl1c2VDYWNoZSA9ICF4bWwgJiYgIW9mVHlwZTsKLQotCQkJCQlpZiAoIHBhcmVudCApIHsKLQotCQkJCQkJLy8gOihmaXJzdHxsYXN0fG9ubHkpLShjaGlsZHxvZi10eXBlKQotCQkJCQkJaWYgKCBzaW1wbGUgKSB7Ci0JCQkJCQkJd2hpbGUgKCBkaXIgKSB7Ci0JCQkJCQkJCW5vZGUgPSBlbGVtOwotCQkJCQkJCQl3aGlsZSAoIChub2RlID0gbm9kZVsgZGlyIF0pICkgewotCQkJCQkJCQkJaWYgKCBvZlR5cGUgPyBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOiBub2RlLm5vZGVUeXBlID09PSAxICkgewotCQkJCQkJCQkJCXJldHVybiBmYWxzZTsKLQkJCQkJCQkJCX0KLQkJCQkJCQkJfQotCQkJCQkJCQkvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHktKiAoaWYgd2UgaGF2ZW4ndCB5ZXQgZG9uZSBzbykKLQkJCQkJCQkJc3RhcnQgPSBkaXIgPSB0eXBlID09PSAib25seSIgJiYgIXN0YXJ0ICYmICJuZXh0U2libGluZyI7Ci0JCQkJCQkJfQotCQkJCQkJCXJldHVybiB0cnVlOwotCQkJCQkJfQotCi0JCQkJCQlzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RDaGlsZCBdOwotCi0JCQkJCQkvLyBub24teG1sIDpudGgtY2hpbGQoLi4uKSBzdG9yZXMgY2FjaGUgZGF0YSBvbiBgcGFyZW50YAotCQkJCQkJaWYgKCBmb3J3YXJkICYmIHVzZUNhY2hlICkgewotCQkJCQkJCS8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2aW91c2x5LWNhY2hlZCBpbmRleAotCQkJCQkJCW91dGVyQ2FjaGUgPSBwYXJlbnRbIGV4cGFuZG8gXSB8fCAocGFyZW50WyBleHBhbmRvIF0gPSB7fSk7Ci0JCQkJCQkJY2FjaGUgPSBvdXRlckNhY2hlWyB0eXBlIF0gfHwgW107Ci0JCQkJCQkJbm9kZUluZGV4ID0gY2FjaGVbMF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbMV07Ci0JCQkJCQkJZGlmZiA9IGNhY2hlWzBdID09PSBkaXJydW5zICYmIGNhY2hlWzJdOwotCQkJCQkJCW5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5vZGVJbmRleCBdOwotCi0JCQkJCQkJd2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHwKLQotCQkJCQkJCQkvLyBGYWxsYmFjayB0byBzZWVraW5nIGBlbGVtYCBmcm9tIHRoZSBzdGFydAotCQkJCQkJCQkoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHsKLQotCQkJCQkJCQkvLyBXaGVuIGZvdW5kLCBjYWNoZSBpbmRleGVzIG9uIGBwYXJlbnRgIGFuZCBicmVhawotCQkJCQkJCQlpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKytkaWZmICYmIG5vZGUgPT09IGVsZW0gKSB7Ci0JCQkJCQkJCQlvdXRlckNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlmZiBdOwotCQkJCQkJCQkJYnJlYWs7Ci0JCQkJCQkJCX0KLQkJCQkJCQl9Ci0KLQkJCQkJCS8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGluZGV4IGlmIGF2YWlsYWJsZQotCQkJCQkJfSBlbHNlIGlmICggdXNlQ2FjaGUgJiYgKGNhY2hlID0gKGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pKVsgdHlwZSBdKSAmJiBjYWNoZVswXSA9PT0gZGlycnVucyApIHsKLQkJCQkJCQlkaWZmID0gY2FjaGVbMV07Ci0KLQkJCQkJCS8vIHhtbCA6bnRoLWNoaWxkKC4uLikgb3IgOm50aC1sYXN0LWNoaWxkKC4uLikgb3IgOm50aCgtbGFzdCk/LW9mLXR5cGUoLi4uKQotCQkJCQkJfSBlbHNlIHsKLQkJCQkJCQkvLyBVc2UgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSB0byBzZWVrIGBlbGVtYCBmcm9tIHRoZSBzdGFydAotCQkJCQkJCXdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8Ci0JCQkJCQkJCShkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkgewotCi0JCQkJCQkJCWlmICggKCBvZlR5cGUgPyBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOiBub2RlLm5vZGVUeXBlID09PSAxICkgJiYgKytkaWZmICkgewotCQkJCQkJCQkJLy8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVudAotCQkJCQkJCQkJaWYgKCB1c2VDYWNoZSApIHsKLQkJCQkJCQkJCQkobm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSkpWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIGRpZmYgXTsKLQkJCQkJCQkJCX0KLQotCQkJCQkJCQkJaWYgKCBub2RlID09PSBlbGVtICkgewotCQkJCQkJCQkJCWJyZWFrOwotCQkJCQkJCQkJfQotCQkJCQkJCQl9Ci0JCQkJCQkJfQotCQkJCQkJfQotCi0JCQkJCQkvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3QgY3ljbGUgc2l6ZQotCQkJCQkJZGlmZiAtPSBsYXN0OwotCQkJCQkJcmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7Ci0JCQkJCX0KLQkJCQl9OwotCQl9LAotCi0JCSJQU0VVRE8iOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHsKLQkJCS8vIHBzZXVkby1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZQotCQkJLy8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNwc2V1ZG8tY2xhc3NlcwotCQkJLy8gUHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJlIGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnMKLQkJCS8vIFJlbWVtYmVyIHRoYXQgc2V0RmlsdGVycyBpbmhlcml0cyBmcm9tIHBzZXVkb3MKLQkJCXZhciBhcmdzLAotCQkJCWZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF0gfHwKLQkJCQkJU2l6emxlLmVycm9yKCAidW5zdXBwb3J0ZWQgcHNldWRvOiAiICsgcHNldWRvICk7Ci0KLQkJCS8vIFRoZSB1c2VyIG1heSB1c2UgY3JlYXRlUHNldWRvIHRvIGluZGljYXRlIHRoYXQKLQkJCS8vIGFyZ3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uCi0JCQkvLyBqdXN0IGFzIFNpenpsZSBkb2VzCi0JCQlpZiAoIGZuWyBleHBhbmRvIF0gKSB7Ci0JCQkJcmV0dXJuIGZuKCBhcmd1bWVudCApOwotCQkJfQotCi0JCQkvLyBCdXQgbWFpbnRhaW4gc3VwcG9ydCBmb3Igb2xkIHNpZ25hdHVyZXMKLQkJCWlmICggZm4ubGVuZ3RoID4gMSApIHsKLQkJCQlhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgIiIsIGFyZ3VtZW50IF07Ci0JCQkJcmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/Ci0JCQkJCW1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHsKLQkJCQkJCXZhciBpZHgsCi0JCQkJCQkJbWF0Y2hlZCA9IGZuKCBzZWVkLCBhcmd1bWVudCApLAotCQkJCQkJCWkgPSBtYXRjaGVkLmxlbmd0aDsKLQkJCQkJCXdoaWxlICggaS0tICkgewotCQkJCQkJCWlkeCA9IGluZGV4T2YuY2FsbCggc2VlZCwgbWF0Y2hlZFtpXSApOwotCQkJCQkJCXNlZWRbIGlkeCBdID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7Ci0JCQkJCQl9Ci0JCQkJCX0pIDoKLQkJCQkJZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQkJCQlyZXR1cm4gZm4oIGVsZW0sIDAsIGFyZ3MgKTsKLQkJCQkJfTsKLQkJCX0KLQotCQkJcmV0dXJuIGZuOwotCQl9Ci0JfSwKLQotCXBzZXVkb3M6IHsKLQkJLy8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zCi0JCSJub3QiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkgewotCQkJLy8gVHJpbSB0aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGUKLQkJCS8vIHRvIGF2b2lkIHRyZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nCi0JCQkvLyBzcGFjZXMgYXMgY29tYmluYXRvcnMKLQkJCXZhciBpbnB1dCA9IFtdLAotCQkJCXJlc3VsdHMgPSBbXSwKLQkJCQltYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sICIkMSIgKSApOwotCi0JCQlyZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBdID8KLQkJCQltYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIGNvbnRleHQsIHhtbCApIHsKLQkJCQkJdmFyIGVsZW0sCi0JCQkJCQl1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxsLCB4bWwsIFtdICksCi0JCQkJCQlpID0gc2VlZC5sZW5ndGg7Ci0KLQkJCQkJLy8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYAotCQkJCQl3aGlsZSAoIGktLSApIHsKLQkJCQkJCWlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkgewotCQkJCQkJCXNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVtKTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0pIDoKLQkJCQlmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotCQkJCQlpbnB1dFswXSA9IGVsZW07Ci0JCQkJCW1hdGNoZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTsKLQkJCQkJcmV0dXJuICFyZXN1bHRzLnBvcCgpOwotCQkJCX07Ci0JCX0pLAotCi0JCSJoYXMiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkgewotCQkJcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotCQkJCXJldHVybiBTaXp6bGUoIHNlbGVjdG9yLCBlbGVtICkubGVuZ3RoID4gMDsKLQkJCX07Ci0JCX0pLAotCi0JCSJjb250YWlucyI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggdGV4dCApIHsKLQkJCXJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCQlyZXR1cm4gKCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0IHx8IGdldFRleHQoIGVsZW0gKSApLmluZGV4T2YoIHRleHQgKSA+IC0xOwotCQkJfTsKLQkJfSksCi0KLQkJLy8gIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5nKCkgc2VsZWN0b3IKLQkJLy8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUKLQkJLy8gYmVpbmcgZXF1YWwgdG8gdGhlIGlkZW50aWZpZXIgQywKLQkJLy8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSAiLSIuCi0JCS8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3QgdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LgotCQkvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5ndWFnZSBuYW1lLiIKLQkJLy8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNsYW5nLXBzZXVkbwotCQkibGFuZyI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIGxhbmcgKSB7Ci0JCQkvLyBsYW5nIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWRlcgotCQkJaWYgKCAhcmlkZW50aWZpZXIudGVzdChsYW5nIHx8ICIiKSApIHsKLQkJCQlTaXp6bGUuZXJyb3IoICJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgbGFuZyApOwotCQkJfQotCQkJbGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpOwotCQkJcmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkgewotCQkJCXZhciBlbGVtTGFuZzsKLQkJCQlkbyB7Ci0JCQkJCWlmICggKGVsZW1MYW5nID0gZG9jdW1lbnRJc1hNTCA/Ci0JCQkJCQllbGVtLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKSB8fCBlbGVtLmdldEF0dHJpYnV0ZSgibGFuZyIpIDoKLQkJCQkJCWVsZW0ubGFuZykgKSB7Ci0KLQkJCQkJCWVsZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTsKLQkJCQkJCXJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsgIi0iICkgPT09IDA7Ci0JCQkJCX0KLQkJCQl9IHdoaWxlICggKGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKTsKLQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQl9OwotCQl9KSwKLQotCQkvLyBNaXNjZWxsYW5lb3VzCi0JCSJ0YXJnZXQiOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoOwotCQkJcmV0dXJuIGhhc2ggJiYgaGFzaC5zbGljZSggMSApID09PSBlbGVtLmlkOwotCQl9LAotCi0JCSJyb290IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTsKLQkJfSwKLQotCQkiZm9jdXMiOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiBlbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICghZG9jdW1lbnQuaGFzRm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSkgJiYgISEoZWxlbS50eXBlIHx8IGVsZW0uaHJlZiB8fCB+ZWxlbS50YWJJbmRleCk7Ci0JCX0sCi0KLQkJLy8gQm9vbGVhbiBwcm9wZXJ0aWVzCi0JCSJlbmFibGVkIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2U7Ci0JCX0sCi0KLQkJImRpc2FibGVkIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gdHJ1ZTsKLQkJfSwKLQotCQkiY2hlY2tlZCI6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJLy8gSW4gQ1NTMywgOmNoZWNrZWQgc2hvdWxkIHJldHVybiBib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVkIGVsZW1lbnRzCi0JCQkvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZAotCQkJdmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwotCQkJcmV0dXJuIChub2RlTmFtZSA9PT0gImlucHV0IiAmJiAhIWVsZW0uY2hlY2tlZCkgfHwgKG5vZGVOYW1lID09PSAib3B0aW9uIiAmJiAhIWVsZW0uc2VsZWN0ZWQpOwotCQl9LAotCi0JCSJzZWxlY3RlZCI6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJLy8gQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVmYXVsdAotCQkJLy8gb3B0aW9ucyBpbiBTYWZhcmkgd29yayBwcm9wZXJseQotCQkJaWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7Ci0JCQkJZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7Ci0JCQl9Ci0KLQkJCXJldHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlOwotCQl9LAotCi0JCS8vIENvbnRlbnRzCi0JCSJlbXB0eSI6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJLy8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1wc2V1ZG8KLQkJCS8vIDplbXB0eSBpcyBvbmx5IGFmZmVjdGVkIGJ5IGVsZW1lbnQgbm9kZXMgYW5kIGNvbnRlbnQgbm9kZXMoaW5jbHVkaW5nIHRleHQoMyksIGNkYXRhKDQpKSwKLQkJCS8vICAgbm90IGNvbW1lbnQsIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLCBvciBvdGhlcnMKLQkJCS8vIFRoYW5rcyB0byBEaWVnbyBQZXJpbmkgZm9yIHRoZSBub2RlTmFtZSBzaG9ydGN1dAotCQkJLy8gICBHcmVhdGVyIHRoYW4gIkAiIG1lYW5zIGFscGhhIGNoYXJhY3RlcnMgKHNwZWNpZmljYWxseSBub3Qgc3RhcnRpbmcgd2l0aCAiIyIgb3IgIj8iKQotCQkJZm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7Ci0JCQkJaWYgKCBlbGVtLm5vZGVOYW1lID4gIkAiIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gNCApIHsKLQkJCQkJcmV0dXJuIGZhbHNlOwotCQkJCX0KLQkJCX0KLQkJCXJldHVybiB0cnVlOwotCQl9LAotCi0JCSJwYXJlbnQiOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiAhRXhwci5wc2V1ZG9zWyJlbXB0eSJdKCBlbGVtICk7Ci0JCX0sCi0KLQkJLy8gRWxlbWVudC9pbnB1dCB0eXBlcwotCQkiaGVhZGVyIjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7Ci0JCX0sCi0KLQkJImlucHV0IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7Ci0JCX0sCi0KLQkJImJ1dHRvbiI6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0JCQlyZXR1cm4gbmFtZSA9PT0gImlucHV0IiAmJiBlbGVtLnR5cGUgPT09ICJidXR0b24iIHx8IG5hbWUgPT09ICJidXR0b24iOwotCQl9LAotCi0JCSJ0ZXh0IjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQl2YXIgYXR0cjsKLQkJCS8vIElFNiBhbmQgNyB3aWxsIG1hcCBlbGVtLnR5cGUgdG8gJ3RleHQnIGZvciBuZXcgSFRNTDUgdHlwZXMgKHNlYXJjaCwgZXRjKQotCQkJLy8gdXNlIGdldEF0dHJpYnV0ZSBpbnN0ZWFkIHRvIHRlc3QgdGhpcyBjYXNlCi0JCQlyZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQiICYmCi0JCQkJZWxlbS50eXBlID09PSAidGV4dCIgJiYKLQkJCQkoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgPT0gbnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09IGVsZW0udHlwZSApOwotCQl9LAotCi0JCS8vIFBvc2l0aW9uLWluLWNvbGxlY3Rpb24KLQkJImZpcnN0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpIHsKLQkJCXJldHVybiBbIDAgXTsKLQkJfSksCi0KLQkJImxhc3QiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKLQkJCXJldHVybiBbIGxlbmd0aCAtIDEgXTsKLQkJfSksCi0KLQkJImVxIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgewotCQkJcmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBdOwotCQl9KSwKLQotCQkiZXZlbiI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkgewotCQkJdmFyIGkgPSAwOwotCQkJZm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7Ci0JCQkJbWF0Y2hJbmRleGVzLnB1c2goIGkgKTsKLQkJCX0KLQkJCXJldHVybiBtYXRjaEluZGV4ZXM7Ci0JCX0pLAotCi0JCSJvZGQiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHsKLQkJCXZhciBpID0gMTsKLQkJCWZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkgewotCQkJCW1hdGNoSW5kZXhlcy5wdXNoKCBpICk7Ci0JCQl9Ci0JCQlyZXR1cm4gbWF0Y2hJbmRleGVzOwotCQl9KSwKLQotCQkibHQiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7Ci0JCQl2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7Ci0JCQlmb3IgKCA7IC0taSA+PSAwOyApIHsKLQkJCQltYXRjaEluZGV4ZXMucHVzaCggaSApOwotCQkJfQotCQkJcmV0dXJuIG1hdGNoSW5kZXhlczsKLQkJfSksCi0KLQkJImd0IjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkgewotCQkJdmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50OwotCQkJZm9yICggOyArK2kgPCBsZW5ndGg7ICkgewotCQkJCW1hdGNoSW5kZXhlcy5wdXNoKCBpICk7Ci0JCQl9Ci0JCQlyZXR1cm4gbWF0Y2hJbmRleGVzOwotCQl9KQotCX0KLX07Ci0KLS8vIEFkZCBidXR0b24vaW5wdXQgdHlwZSBwc2V1ZG9zCi1mb3IgKCBpIGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHsKLQlFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7Ci19Ci1mb3IgKCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkgewotCUV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7Ci19Ci0KLWZ1bmN0aW9uIHRva2VuaXplKCBzZWxlY3RvciwgcGFyc2VPbmx5ICkgewotCXZhciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLAotCQlzb0ZhciwgZ3JvdXBzLCBwcmVGaWx0ZXJzLAotCQljYWNoZWQgPSB0b2tlbkNhY2hlWyBzZWxlY3RvciArICIgIiBdOwotCi0JaWYgKCBjYWNoZWQgKSB7Ci0JCXJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7Ci0JfQotCi0Jc29GYXIgPSBzZWxlY3RvcjsKLQlncm91cHMgPSBbXTsKLQlwcmVGaWx0ZXJzID0gRXhwci5wcmVGaWx0ZXI7Ci0KLQl3aGlsZSAoIHNvRmFyICkgewotCi0JCS8vIENvbW1hIGFuZCBmaXJzdCBydW4KLQkJaWYgKCAhbWF0Y2hlZCB8fCAobWF0Y2ggPSByY29tbWEuZXhlYyggc29GYXIgKSkgKSB7Ci0JCQlpZiAoIG1hdGNoICkgewotCQkJCS8vIERvbid0IGNvbnN1bWUgdHJhaWxpbmcgY29tbWFzIGFzIHZhbGlkCi0JCQkJc29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hbMF0ubGVuZ3RoICkgfHwgc29GYXI7Ci0JCQl9Ci0JCQlncm91cHMucHVzaCggdG9rZW5zID0gW10gKTsKLQkJfQotCi0JCW1hdGNoZWQgPSBmYWxzZTsKLQotCQkvLyBDb21iaW5hdG9ycwotCQlpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApKSApIHsKLQkJCW1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpOwotCQkJdG9rZW5zLnB1c2goIHsKLQkJCQl2YWx1ZTogbWF0Y2hlZCwKLQkJCQkvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMgdG8gc3BhY2UKLQkJCQl0eXBlOiBtYXRjaFswXS5yZXBsYWNlKCBydHJpbSwgIiAiICkKLQkJCX0gKTsKLQkJCXNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7Ci0JCX0KLQotCQkvLyBGaWx0ZXJzCi0JCWZvciAoIHR5cGUgaW4gRXhwci5maWx0ZXIgKSB7Ci0JCQlpZiAoIChtYXRjaCA9IG1hdGNoRXhwclsgdHlwZSBdLmV4ZWMoIHNvRmFyICkpICYmICghcHJlRmlsdGVyc1sgdHlwZSBdIHx8Ci0JCQkJKG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBdKCBtYXRjaCApKSkgKSB7Ci0JCQkJbWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7Ci0JCQkJdG9rZW5zLnB1c2goIHsKLQkJCQkJdmFsdWU6IG1hdGNoZWQsCi0JCQkJCXR5cGU6IHR5cGUsCi0JCQkJCW1hdGNoZXM6IG1hdGNoCi0JCQkJfSApOwotCQkJCXNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7Ci0JCQl9Ci0JCX0KLQotCQlpZiAoICFtYXRjaGVkICkgewotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KLQkvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNlc3MKLQkvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmcKLQkvLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yIG9yIHJldHVybiB0b2tlbnMKLQlyZXR1cm4gcGFyc2VPbmx5ID8KLQkJc29GYXIubGVuZ3RoIDoKLQkJc29GYXIgPwotCQkJU2l6emxlLmVycm9yKCBzZWxlY3RvciApIDoKLQkJCS8vIENhY2hlIHRoZSB0b2tlbnMKLQkJCXRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApOwotfQotCi1mdW5jdGlvbiB0b1NlbGVjdG9yKCB0b2tlbnMgKSB7Ci0JdmFyIGkgPSAwLAotCQlsZW4gPSB0b2tlbnMubGVuZ3RoLAotCQlzZWxlY3RvciA9ICIiOwotCWZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotCQlzZWxlY3RvciArPSB0b2tlbnNbaV0udmFsdWU7Ci0JfQotCXJldHVybiBzZWxlY3RvcjsKLX0KLQotZnVuY3Rpb24gYWRkQ29tYmluYXRvciggbWF0Y2hlciwgY29tYmluYXRvciwgYmFzZSApIHsKLQl2YXIgZGlyID0gY29tYmluYXRvci5kaXIsCi0JCWNoZWNrTm9uRWxlbWVudHMgPSBiYXNlICYmIGRpciA9PT0gInBhcmVudE5vZGUiLAotCQlkb25lTmFtZSA9IGRvbmUrKzsKLQotCXJldHVybiBjb21iaW5hdG9yLmZpcnN0ID8KLQkJLy8gQ2hlY2sgYWdhaW5zdCBjbG9zZXN0IGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50Ci0JCWZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7Ci0JCQl3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkgewotCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkgewotCQkJCQlyZXR1cm4gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICk7Ci0JCQkJfQotCQkJfQotCQl9IDoKLQotCQkvLyBDaGVjayBhZ2FpbnN0IGFsbCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudHMKLQkJZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKLQkJCXZhciBkYXRhLCBjYWNoZSwgb3V0ZXJDYWNoZSwKLQkJCQlkaXJrZXkgPSBkaXJydW5zICsgIiAiICsgZG9uZU5hbWU7Ci0KLQkJCS8vIFdlIGNhbid0IHNldCBhcmJpdHJhcnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9tIGRpciBjYWNoaW5nCi0JCQlpZiAoIHhtbCApIHsKLQkJCQl3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkgewotCQkJCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHsKLQkJCQkJCWlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7Ci0JCQkJCQkJcmV0dXJuIHRydWU7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCXdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7Ci0JCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkgewotCQkJCQkJb3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pOwotCQkJCQkJaWYgKCAoY2FjaGUgPSBvdXRlckNhY2hlWyBkaXIgXSkgJiYgY2FjaGVbMF0gPT09IGRpcmtleSApIHsKLQkJCQkJCQlpZiAoIChkYXRhID0gY2FjaGVbMV0pID09PSB0cnVlIHx8IGRhdGEgPT09IGNhY2hlZHJ1bnMgKSB7Ci0JCQkJCQkJCXJldHVybiBkYXRhID09PSB0cnVlOwotCQkJCQkJCX0KLQkJCQkJCX0gZWxzZSB7Ci0JCQkJCQkJY2FjaGUgPSBvdXRlckNhY2hlWyBkaXIgXSA9IFsgZGlya2V5IF07Ci0JCQkJCQkJY2FjaGVbMV0gPSBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB8fCBjYWNoZWRydW5zOwotCQkJCQkJCWlmICggY2FjaGVbMV0gPT09IHRydWUgKSB7Ci0JCQkJCQkJCXJldHVybiB0cnVlOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfTsKLX0KLQotZnVuY3Rpb24gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICkgewotCXJldHVybiBtYXRjaGVycy5sZW5ndGggPiAxID8KLQkJZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHsKLQkJCXZhciBpID0gbWF0Y2hlcnMubGVuZ3RoOwotCQkJd2hpbGUgKCBpLS0gKSB7Ci0JCQkJaWYgKCAhbWF0Y2hlcnNbaV0oIGVsZW0sIGNvbnRleHQsIHhtbCApICkgewotCQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQkJfQotCQkJfQotCQkJcmV0dXJuIHRydWU7Ci0JCX0gOgotCQltYXRjaGVyc1swXTsKLX0KLQotZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCApIHsKLQl2YXIgZWxlbSwKLQkJbmV3VW5tYXRjaGVkID0gW10sCi0JCWkgPSAwLAotCQlsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLAotCQltYXBwZWQgPSBtYXAgIT0gbnVsbDsKLQotCWZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotCQlpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHsKLQkJCWlmICggIWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkgewotCQkJCW5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7Ci0JCQkJaWYgKCBtYXBwZWQgKSB7Ci0JCQkJCW1hcC5wdXNoKCBpICk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JcmV0dXJuIG5ld1VubWF0Y2hlZDsKLX0KLQotZnVuY3Rpb24gc2V0TWF0Y2hlciggcHJlRmlsdGVyLCBzZWxlY3RvciwgbWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICkgewotCWlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkgewotCQlwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApOwotCX0KLQlpZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHsKLQkJcG9zdEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApOwotCX0KLQlyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0LCB4bWwgKSB7Ci0JCXZhciB0ZW1wLCBpLCBlbGVtLAotCQkJcHJlTWFwID0gW10sCi0JCQlwb3N0TWFwID0gW10sCi0JCQlwcmVleGlzdGluZyA9IHJlc3VsdHMubGVuZ3RoLAotCi0JCQkvLyBHZXQgaW5pdGlhbCBlbGVtZW50cyBmcm9tIHNlZWQgb3IgY29udGV4dAotCQkJZWxlbXMgPSBzZWVkIHx8IG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yIHx8ICIqIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCwgW10gKSwKLQotCQkJLy8gUHJlZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25pemF0aW9uCi0JCQltYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFzZWxlY3RvciApID8KLQkJCQljb25kZW5zZSggZWxlbXMsIHByZU1hcCwgcHJlRmlsdGVyLCBjb250ZXh0LCB4bWwgKSA6Ci0JCQkJZWxlbXMsCi0KLQkJCW1hdGNoZXJPdXQgPSBtYXRjaGVyID8KLQkJCQkvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLAotCQkJCXBvc3RGaW5kZXIgfHwgKCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID8KLQotCQkJCQkvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3NhcnkKLQkJCQkJW10gOgotCi0JCQkJCS8vIC4uLm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseQotCQkJCQlyZXN1bHRzIDoKLQkJCQltYXRjaGVySW47Ci0KLQkJLy8gRmluZCBwcmltYXJ5IG1hdGNoZXMKLQkJaWYgKCBtYXRjaGVyICkgewotCQkJbWF0Y2hlciggbWF0Y2hlckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTsKLQkJfQotCi0JCS8vIEFwcGx5IHBvc3RGaWx0ZXIKLQkJaWYgKCBwb3N0RmlsdGVyICkgewotCQkJdGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVyT3V0LCBwb3N0TWFwICk7Ci0JCQlwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7Ci0KLQkJCS8vIFVuLW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5nIHRoZW0gYmFjayB0byBtYXRjaGVySW4KLQkJCWkgPSB0ZW1wLmxlbmd0aDsKLQkJCXdoaWxlICggaS0tICkgewotCQkJCWlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHsKLQkJCQkJbWF0Y2hlck91dFsgcG9zdE1hcFtpXSBdID0gIShtYXRjaGVySW5bIHBvc3RNYXBbaV0gXSA9IGVsZW0pOwotCQkJCX0KLQkJCX0KLQkJfQotCi0JCWlmICggc2VlZCApIHsKLQkJCWlmICggcG9zdEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7Ci0JCQkJaWYgKCBwb3N0RmluZGVyICkgewotCQkJCQkvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQgYnkgY29uZGVuc2luZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHMKLQkJCQkJdGVtcCA9IFtdOwotCQkJCQlpID0gbWF0Y2hlck91dC5sZW5ndGg7Ci0JCQkJCXdoaWxlICggaS0tICkgewotCQkJCQkJaWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICkgewotCQkJCQkJCS8vIFJlc3RvcmUgbWF0Y2hlckluIHNpbmNlIGVsZW0gaXMgbm90IHlldCBhIGZpbmFsIG1hdGNoCi0JCQkJCQkJdGVtcC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCQlwb3N0RmluZGVyKCBudWxsLCAobWF0Y2hlck91dCA9IFtdKSwgdGVtcCwgeG1sICk7Ci0JCQkJfQotCi0JCQkJLy8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWQKLQkJCQlpID0gbWF0Y2hlck91dC5sZW5ndGg7Ci0JCQkJd2hpbGUgKCBpLS0gKSB7Ci0JCQkJCWlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJgotCQkJCQkJKHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZi5jYWxsKCBzZWVkLCBlbGVtICkgOiBwcmVNYXBbaV0pID4gLTEgKSB7Ci0KLQkJCQkJCXNlZWRbdGVtcF0gPSAhKHJlc3VsdHNbdGVtcF0gPSBlbGVtKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQotCQkvLyBBZGQgZWxlbWVudHMgdG8gcmVzdWx0cywgdGhyb3VnaCBwb3N0RmluZGVyIGlmIGRlZmluZWQKLQkJfSBlbHNlIHsKLQkJCW1hdGNoZXJPdXQgPSBjb25kZW5zZSgKLQkJCQltYXRjaGVyT3V0ID09PSByZXN1bHRzID8KLQkJCQkJbWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBtYXRjaGVyT3V0Lmxlbmd0aCApIDoKLQkJCQkJbWF0Y2hlck91dAotCQkJKTsKLQkJCWlmICggcG9zdEZpbmRlciApIHsKLQkJCQlwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0LCB4bWwgKTsKLQkJCX0gZWxzZSB7Ci0JCQkJcHVzaC5hcHBseSggcmVzdWx0cywgbWF0Y2hlck91dCApOwotCQkJfQotCQl9Ci0JfSk7Ci19Ci0KLWZ1bmN0aW9uIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMgKSB7Ci0JdmFyIGNoZWNrQ29udGV4dCwgbWF0Y2hlciwgaiwKLQkJbGVuID0gdG9rZW5zLmxlbmd0aCwKLQkJbGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSwKLQkJaW1wbGljaXRSZWxhdGl2ZSA9IGxlYWRpbmdSZWxhdGl2ZSB8fCBFeHByLnJlbGF0aXZlWyIgIl0sCi0JCWkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCwKLQotCQkvLyBUaGUgZm91bmRhdGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwgY29udGV4dChzKQotCQltYXRjaENvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiBlbGVtID09PSBjaGVja0NvbnRleHQ7Ci0JCX0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSwKLQkJbWF0Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gaW5kZXhPZi5jYWxsKCBjaGVja0NvbnRleHQsIGVsZW0gKSA+IC0xOwotCQl9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksCi0JCW1hdGNoZXJzID0gWyBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkgewotCQkJcmV0dXJuICggIWxlYWRpbmdSZWxhdGl2ZSAmJiAoIHhtbCB8fCBjb250ZXh0ICE9PSBvdXRlcm1vc3RDb250ZXh0ICkgKSB8fCAoCi0JCQkJKGNoZWNrQ29udGV4dCA9IGNvbnRleHQpLm5vZGVUeXBlID8KLQkJCQkJbWF0Y2hDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSA6Ci0JCQkJCW1hdGNoQW55Q29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTsKLQkJfSBdOwotCi0JZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0JCWlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHsKLQkJCW1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdOwotCQl9IGVsc2UgewotCQkJbWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tlbnNbaV0udHlwZSBdLmFwcGx5KCBudWxsLCB0b2tlbnNbaV0ubWF0Y2hlcyApOwotCi0JCQkvLyBSZXR1cm4gc3BlY2lhbCB1cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlcgotCQkJaWYgKCBtYXRjaGVyWyBleHBhbmRvIF0gKSB7Ci0JCQkJLy8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nCi0JCQkJaiA9ICsraTsKLQkJCQlmb3IgKCA7IGogPCBsZW47IGorKyApIHsKLQkJCQkJaWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbal0udHlwZSBdICkgewotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCQl9Ci0JCQkJcmV0dXJuIHNldE1hdGNoZXIoCi0JCQkJCWkgPiAxICYmIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLAotCQkJCQlpID4gMSAmJiB0b1NlbGVjdG9yKCB0b2tlbnMuc2xpY2UoIDAsIGkgLSAxICkgKS5yZXBsYWNlKCBydHJpbSwgIiQxIiApLAotCQkJCQltYXRjaGVyLAotCQkJCQlpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBpLCBqICkgKSwKLQkJCQkJaiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2VucyggKHRva2VucyA9IHRva2Vucy5zbGljZSggaiApKSApLAotCQkJCQlqIDwgbGVuICYmIHRvU2VsZWN0b3IoIHRva2VucyApCi0JCQkJKTsKLQkJCX0KLQkJCW1hdGNoZXJzLnB1c2goIG1hdGNoZXIgKTsKLQkJfQotCX0KLQotCXJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTsKLX0KLQotZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgewotCS8vIEEgY291bnRlciB0byBzcGVjaWZ5IHdoaWNoIGVsZW1lbnQgaXMgY3VycmVudGx5IGJlaW5nIG1hdGNoZWQKLQl2YXIgbWF0Y2hlckNhY2hlZFJ1bnMgPSAwLAotCQlieVNldCA9IHNldE1hdGNoZXJzLmxlbmd0aCA+IDAsCi0JCWJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLAotCQlzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBleHBhbmRDb250ZXh0ICkgewotCQkJdmFyIGVsZW0sIGosIG1hdGNoZXIsCi0JCQkJc2V0TWF0Y2hlZCA9IFtdLAotCQkJCW1hdGNoZWRDb3VudCA9IDAsCi0JCQkJaSA9ICIwIiwKLQkJCQl1bm1hdGNoZWQgPSBzZWVkICYmIFtdLAotCQkJCW91dGVybW9zdCA9IGV4cGFuZENvbnRleHQgIT0gbnVsbCwKLQkJCQljb250ZXh0QmFja3VwID0gb3V0ZXJtb3N0Q29udGV4dCwKLQkJCQkvLyBXZSBtdXN0IGFsd2F5cyBoYXZlIGVpdGhlciBzZWVkIGVsZW1lbnRzIG9yIGNvbnRleHQKLQkJCQllbGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50ICYmIEV4cHIuZmluZFsiVEFHIl0oICIqIiwgZXhwYW5kQ29udGV4dCAmJiBjb250ZXh0LnBhcmVudE5vZGUgfHwgY29udGV4dCApLAotCQkJCS8vIFVzZSBpbnRlZ2VyIGRpcnJ1bnMgaWZmIHRoaXMgaXMgdGhlIG91dGVybW9zdCBtYXRjaGVyCi0JCQkJZGlycnVuc1VuaXF1ZSA9IChkaXJydW5zICs9IGNvbnRleHRCYWNrdXAgPT0gbnVsbCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IDAuMSk7Ci0KLQkJCWlmICggb3V0ZXJtb3N0ICkgewotCQkJCW91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ICE9PSBkb2N1bWVudCAmJiBjb250ZXh0OwotCQkJCWNhY2hlZHJ1bnMgPSBtYXRjaGVyQ2FjaGVkUnVuczsKLQkJCX0KLQotCQkJLy8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHMKLQkJCS8vIEtlZXAgYGlgIGEgc3RyaW5nIGlmIHRoZXJlIGFyZSBubyBlbGVtZW50cyBzbyBgbWF0Y2hlZENvdW50YCB3aWxsIGJlICIwMCIgYmVsb3cKLQkJCWZvciAoIDsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgewotCQkJCWlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7Ci0JCQkJCWogPSAwOwotCQkJCQl3aGlsZSAoIChtYXRjaGVyID0gZWxlbWVudE1hdGNoZXJzW2orK10pICkgewotCQkJCQkJaWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHsKLQkJCQkJCQlyZXN1bHRzLnB1c2goIGVsZW0gKTsKLQkJCQkJCQlicmVhazsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCQlpZiAoIG91dGVybW9zdCApIHsKLQkJCQkJCWRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlOwotCQkJCQkJY2FjaGVkcnVucyA9ICsrbWF0Y2hlckNhY2hlZFJ1bnM7Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQkvLyBUcmFjayB1bm1hdGNoZWQgZWxlbWVudHMgZm9yIHNldCBmaWx0ZXJzCi0JCQkJaWYgKCBieVNldCApIHsKLQkJCQkJLy8gVGhleSB3aWxsIGhhdmUgZ29uZSB0aHJvdWdoIGFsbCBwb3NzaWJsZSBtYXRjaGVycwotCQkJCQlpZiAoIChlbGVtID0gIW1hdGNoZXIgJiYgZWxlbSkgKSB7Ci0JCQkJCQltYXRjaGVkQ291bnQtLTsKLQkJCQkJfQotCi0JCQkJCS8vIExlbmd0aGVuIHRoZSBhcnJheSBmb3IgZXZlcnkgZWxlbWVudCwgbWF0Y2hlZCBvciBub3QKLQkJCQkJaWYgKCBzZWVkICkgewotCQkJCQkJdW5tYXRjaGVkLnB1c2goIGVsZW0gKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQotCQkJLy8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzCi0JCQltYXRjaGVkQ291bnQgKz0gaTsKLQkJCWlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkgewotCQkJCWogPSAwOwotCQkJCXdoaWxlICggKG1hdGNoZXIgPSBzZXRNYXRjaGVyc1tqKytdKSApIHsKLQkJCQkJbWF0Y2hlciggdW5tYXRjaGVkLCBzZXRNYXRjaGVkLCBjb250ZXh0LCB4bWwgKTsKLQkJCQl9Ci0KLQkJCQlpZiAoIHNlZWQgKSB7Ci0JCQkJCS8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmcKLQkJCQkJaWYgKCBtYXRjaGVkQ291bnQgPiAwICkgewotCQkJCQkJd2hpbGUgKCBpLS0gKSB7Ci0JCQkJCQkJaWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHsKLQkJCQkJCQkJc2V0TWF0Y2hlZFtpXSA9IHBvcC5jYWxsKCByZXN1bHRzICk7Ci0JCQkJCQkJfQotCQkJCQkJfQotCQkJCQl9Ci0KLQkJCQkJLy8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXMKLQkJCQkJc2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7Ci0JCQkJfQotCi0JCQkJLy8gQWRkIG1hdGNoZXMgdG8gcmVzdWx0cwotCQkJCXB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTsKLQotCQkJCS8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZwotCQkJCWlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNoZWQubGVuZ3RoID4gMCAmJgotCQkJCQkoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHsKLQotCQkJCQlTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApOwotCQkJCX0KLQkJCX0KLQotCQkJLy8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzCi0JCQlpZiAoIG91dGVybW9zdCApIHsKLQkJCQlkaXJydW5zID0gZGlycnVuc1VuaXF1ZTsKLQkJCQlvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDsKLQkJCX0KLQotCQkJcmV0dXJuIHVubWF0Y2hlZDsKLQkJfTsKLQotCXJldHVybiBieVNldCA/Ci0JCW1hcmtGdW5jdGlvbiggc3VwZXJNYXRjaGVyICkgOgotCQlzdXBlck1hdGNoZXI7Ci19Ci0KLWNvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgZ3JvdXAgLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7Ci0JdmFyIGksCi0JCXNldE1hdGNoZXJzID0gW10sCi0JCWVsZW1lbnRNYXRjaGVycyA9IFtdLAotCQljYWNoZWQgPSBjb21waWxlckNhY2hlWyBzZWxlY3RvciArICIgIiBdOwotCi0JaWYgKCAhY2FjaGVkICkgewotCQkvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVsZW1lbnQKLQkJaWYgKCAhZ3JvdXAgKSB7Ci0JCQlncm91cCA9IHRva2VuaXplKCBzZWxlY3RvciApOwotCQl9Ci0JCWkgPSBncm91cC5sZW5ndGg7Ci0JCXdoaWxlICggaS0tICkgewotCQkJY2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIGdyb3VwW2ldICk7Ci0JCQlpZiAoIGNhY2hlZFsgZXhwYW5kbyBdICkgewotCQkJCXNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApOwotCQkJfSBlbHNlIHsKLQkJCQllbGVtZW50TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7Ci0JCQl9Ci0JCX0KLQotCQkvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24KLQkJY2FjaGVkID0gY29tcGlsZXJDYWNoZSggc2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApICk7Ci0JfQotCXJldHVybiBjYWNoZWQ7Ci19OwotCi1mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3VsdHMgKSB7Ci0JdmFyIGkgPSAwLAotCQlsZW4gPSBjb250ZXh0cy5sZW5ndGg7Ci0JZm9yICggOyBpIDwgbGVuOyBpKysgKSB7Ci0JCVNpenpsZSggc2VsZWN0b3IsIGNvbnRleHRzW2ldLCByZXN1bHRzICk7Ci0JfQotCXJldHVybiByZXN1bHRzOwotfQotCi1mdW5jdGlvbiBzZWxlY3QoIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkgewotCXZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLAotCQltYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApOwotCi0JaWYgKCAhc2VlZCApIHsKLQkJLy8gVHJ5IHRvIG1pbmltaXplIG9wZXJhdGlvbnMgaWYgdGhlcmUgaXMgb25seSBvbmUgZ3JvdXAKLQkJaWYgKCBtYXRjaC5sZW5ndGggPT09IDEgKSB7Ci0KLQkJCS8vIFRha2UgYSBzaG9ydGN1dCBhbmQgc2V0IHRoZSBjb250ZXh0IGlmIHRoZSByb290IHNlbGVjdG9yIGlzIGFuIElECi0JCQl0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7Ci0JCQlpZiAoIHRva2Vucy5sZW5ndGggPiAyICYmICh0b2tlbiA9IHRva2Vuc1swXSkudHlwZSA9PT0gIklEIiAmJgotCQkJCQljb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmICFkb2N1bWVudElzWE1MICYmCi0JCQkJCUV4cHIucmVsYXRpdmVbIHRva2Vuc1sxXS50eXBlIF0gKSB7Ci0KLQkJCQljb250ZXh0ID0gRXhwci5maW5kWyJJRCJdKCB0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksIGNvbnRleHQgKVswXTsKLQkJCQlpZiAoICFjb250ZXh0ICkgewotCQkJCQlyZXR1cm4gcmVzdWx0czsKLQkJCQl9Ci0KLQkJCQlzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS52YWx1ZS5sZW5ndGggKTsKLQkJCX0KLQotCQkJLy8gRmV0Y2ggYSBzZWVkIHNldCBmb3IgcmlnaHQtdG8tbGVmdCBtYXRjaGluZwotCQkJaSA9IG1hdGNoRXhwclsibmVlZHNDb250ZXh0Il0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoOwotCQkJd2hpbGUgKCBpLS0gKSB7Ci0JCQkJdG9rZW4gPSB0b2tlbnNbaV07Ci0KLQkJCQkvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yCi0JCQkJaWYgKCBFeHByLnJlbGF0aXZlWyAodHlwZSA9IHRva2VuLnR5cGUpIF0gKSB7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQkJCQlpZiAoIChmaW5kID0gRXhwci5maW5kWyB0eXBlIF0pICkgewotCQkJCQkvLyBTZWFyY2gsIGV4cGFuZGluZyBjb250ZXh0IGZvciBsZWFkaW5nIHNpYmxpbmcgY29tYmluYXRvcnMKLQkJCQkJaWYgKCAoc2VlZCA9IGZpbmQoCi0JCQkJCQl0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksCi0JCQkJCQlyc2libGluZy50ZXN0KCB0b2tlbnNbMF0udHlwZSApICYmIGNvbnRleHQucGFyZW50Tm9kZSB8fCBjb250ZXh0Ci0JCQkJCSkpICkgewotCi0JCQkJCQkvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHkKLQkJCQkJCXRva2Vucy5zcGxpY2UoIGksIDEgKTsKLQkJCQkJCXNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9rZW5zICk7Ci0JCQkJCQlpZiAoICFzZWxlY3RvciApIHsKLQkJCQkJCQlwdXNoLmFwcGx5KCByZXN1bHRzLCBzbGljZS5jYWxsKCBzZWVkLCAwICkgKTsKLQkJCQkJCQlyZXR1cm4gcmVzdWx0czsKLQkJCQkJCX0KLQotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5nIGZ1bmN0aW9uCi0JLy8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZQotCWNvbXBpbGUoIHNlbGVjdG9yLCBtYXRjaCApKAotCQlzZWVkLAotCQljb250ZXh0LAotCQlkb2N1bWVudElzWE1MLAotCQlyZXN1bHRzLAotCQlyc2libGluZy50ZXN0KCBzZWxlY3RvciApCi0JKTsKLQlyZXR1cm4gcmVzdWx0czsKLX0KLQotLy8gRGVwcmVjYXRlZAotRXhwci5wc2V1ZG9zWyJudGgiXSA9IEV4cHIucHNldWRvc1siZXEiXTsKLQotLy8gRWFzeSBBUEkgZm9yIGNyZWF0aW5nIG5ldyBzZXRGaWx0ZXJzCi1mdW5jdGlvbiBzZXRGaWx0ZXJzKCkge30KLUV4cHIuZmlsdGVycyA9IHNldEZpbHRlcnMucHJvdG90eXBlID0gRXhwci5wc2V1ZG9zOwotRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTsKLQotLy8gSW5pdGlhbGl6ZSB3aXRoIHRoZSBkZWZhdWx0IGRvY3VtZW50Ci1zZXREb2N1bWVudCgpOwotCi0vLyBPdmVycmlkZSBzaXp6bGUgYXR0cmlidXRlIHJldHJpZXZhbAotU2l6emxlLmF0dHIgPSBqUXVlcnkuYXR0cjsKLWpRdWVyeS5maW5kID0gU2l6emxlOwotalF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzOwotalF1ZXJ5LmV4cHJbIjoiXSA9IGpRdWVyeS5leHByLnBzZXVkb3M7Ci1qUXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7Ci1qUXVlcnkudGV4dCA9IFNpenpsZS5nZXRUZXh0OwotalF1ZXJ5LmlzWE1MRG9jID0gU2l6emxlLmlzWE1MOwotalF1ZXJ5LmNvbnRhaW5zID0gU2l6emxlLmNvbnRhaW5zOwotCi0KLX0pKCB3aW5kb3cgKTsKLXZhciBydW50aWwgPSAvVW50aWwkLywKLQlycGFyZW50c3ByZXYgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywKLQlpc1NpbXBsZSA9IC9eLlteOiNcW1wuLF0qJC8sCi0Jcm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dCwKLQkvLyBtZXRob2RzIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hlbiBzdGFydGluZyBmcm9tIGEgdW5pcXVlIHNldAotCWd1YXJhbnRlZWRVbmlxdWUgPSB7Ci0JCWNoaWxkcmVuOiB0cnVlLAotCQljb250ZW50czogdHJ1ZSwKLQkJbmV4dDogdHJ1ZSwKLQkJcHJldjogdHJ1ZQotCX07Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotCWZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLQkJdmFyIGksIHJldCwgc2VsZiwKLQkJCWxlbiA9IHRoaXMubGVuZ3RoOwotCi0JCWlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKLQkJCXNlbGYgPSB0aGlzOwotCQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKGZ1bmN0aW9uKCkgewotCQkJCWZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7Ci0JCQkJCWlmICggalF1ZXJ5LmNvbnRhaW5zKCBzZWxmWyBpIF0sIHRoaXMgKSApIHsKLQkJCQkJCXJldHVybiB0cnVlOwotCQkJCQl9Ci0JCQkJfQotCQkJfSkgKTsKLQkJfQotCi0JCXJldCA9IFtdOwotCQlmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkgewotCQkJalF1ZXJ5LmZpbmQoIHNlbGVjdG9yLCB0aGlzWyBpIF0sIHJldCApOwotCQl9Ci0KLQkJLy8gTmVlZGVkIGJlY2F1c2UgJCggc2VsZWN0b3IsIGNvbnRleHQgKSBiZWNvbWVzICQoIGNvbnRleHQgKS5maW5kKCBzZWxlY3RvciApCi0JCXJldCA9IHRoaXMucHVzaFN0YWNrKCBsZW4gPiAxID8galF1ZXJ5LnVuaXF1ZSggcmV0ICkgOiByZXQgKTsKLQkJcmV0LnNlbGVjdG9yID0gKCB0aGlzLnNlbGVjdG9yID8gdGhpcy5zZWxlY3RvciArICIgIiA6ICIiICkgKyBzZWxlY3RvcjsKLQkJcmV0dXJuIHJldDsKLQl9LAotCi0JaGFzOiBmdW5jdGlvbiggdGFyZ2V0ICkgewotCQl2YXIgaSwKLQkJCXRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLAotCQkJbGVuID0gdGFyZ2V0cy5sZW5ndGg7Ci0KLQkJcmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCkgewotCQkJZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHsKLQkJCQlpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1tpXSApICkgewotCQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCQl9Ci0JCQl9Ci0JCX0pOwotCX0sCi0KLQlub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3codGhpcywgc2VsZWN0b3IsIGZhbHNlKSApOwotCX0sCi0KLQlmaWx0ZXI6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3codGhpcywgc2VsZWN0b3IsIHRydWUpICk7Ci0JfSwKLQotCWlzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0JCXJldHVybiAhIXNlbGVjdG9yICYmICgKLQkJCXR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgPwotCQkJCS8vIElmIHRoaXMgaXMgYSBwb3NpdGlvbmFsL3JlbGF0aXZlIHNlbGVjdG9yLCBjaGVjayBtZW1iZXJzaGlwIGluIHRoZSByZXR1cm5lZCBzZXQKLQkJCQkvLyBzbyAkKCJwOmZpcnN0IikuaXMoInA6bGFzdCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byAicCIuCi0JCQkJcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApID8KLQkJCQkJalF1ZXJ5KCBzZWxlY3RvciwgdGhpcy5jb250ZXh0ICkuaW5kZXgoIHRoaXNbMF0gKSA+PSAwIDoKLQkJCQkJalF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIHRoaXMgKS5sZW5ndGggPiAwIDoKLQkJCQl0aGlzLmZpbHRlciggc2VsZWN0b3IgKS5sZW5ndGggPiAwICk7Ci0JfSwKLQotCWNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7Ci0JCXZhciBjdXIsCi0JCQlpID0gMCwKLQkJCWwgPSB0aGlzLmxlbmd0aCwKLQkJCXJldCA9IFtdLAotCQkJcG9zID0gcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvcnMgKSB8fCB0eXBlb2Ygc2VsZWN0b3JzICE9PSAic3RyaW5nIiA/Ci0JCQkJalF1ZXJ5KCBzZWxlY3RvcnMsIGNvbnRleHQgfHwgdGhpcy5jb250ZXh0ICkgOgotCQkJCTA7Ci0KLQkJZm9yICggOyBpIDwgbDsgaSsrICkgewotCQkJY3VyID0gdGhpc1tpXTsKLQotCQkJd2hpbGUgKCBjdXIgJiYgY3VyLm93bmVyRG9jdW1lbnQgJiYgY3VyICE9PSBjb250ZXh0ICYmIGN1ci5ub2RlVHlwZSAhPT0gMTEgKSB7Ci0JCQkJaWYgKCBwb3MgPyBwb3MuaW5kZXgoY3VyKSA+IC0xIDogalF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKGN1ciwgc2VsZWN0b3JzKSApIHsKLQkJCQkJcmV0LnB1c2goIGN1ciApOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQkJY3VyID0gY3VyLnBhcmVudE5vZGU7Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldC5sZW5ndGggPiAxID8galF1ZXJ5LnVuaXF1ZSggcmV0ICkgOiByZXQgKTsKLQl9LAotCi0JLy8gRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdpdGhpbgotCS8vIHRoZSBtYXRjaGVkIHNldCBvZiBlbGVtZW50cwotCWluZGV4OiBmdW5jdGlvbiggZWxlbSApIHsKLQotCQkvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudAotCQlpZiAoICFlbGVtICkgewotCQkJcmV0dXJuICggdGhpc1swXSAmJiB0aGlzWzBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7Ci0JCX0KLQotCQkvLyBpbmRleCBpbiBzZWxlY3RvcgotCQlpZiAoIHR5cGVvZiBlbGVtID09PSAic3RyaW5nIiApIHsKLQkJCXJldHVybiBqUXVlcnkuaW5BcnJheSggdGhpc1swXSwgalF1ZXJ5KCBlbGVtICkgKTsKLQkJfQotCi0JCS8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudAotCQlyZXR1cm4galF1ZXJ5LmluQXJyYXkoCi0JCQkvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRoZSBmaXJzdCBlbGVtZW50IGlzIHVzZWQKLQkJCWVsZW0uanF1ZXJ5ID8gZWxlbVswXSA6IGVsZW0sIHRoaXMgKTsKLQl9LAotCi0JYWRkOiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7Ci0JCXZhciBzZXQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciID8KLQkJCQlqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgOgotCQkJCWpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yICYmIHNlbGVjdG9yLm5vZGVUeXBlID8gWyBzZWxlY3RvciBdIDogc2VsZWN0b3IgKSwKLQkJCWFsbCA9IGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgc2V0ICk7Ci0KLQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkudW5pcXVlKGFsbCkgKTsKLQl9LAotCi0JYWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotCQlyZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgPwotCQkJdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlcihzZWxlY3RvcikKLQkJKTsKLQl9Ci19KTsKLQotalF1ZXJ5LmZuLmFuZFNlbGYgPSBqUXVlcnkuZm4uYWRkQmFjazsKLQotZnVuY3Rpb24gc2libGluZyggY3VyLCBkaXIgKSB7Ci0JZG8gewotCQljdXIgPSBjdXJbIGRpciBdOwotCX0gd2hpbGUgKCBjdXIgJiYgY3VyLm5vZGVUeXBlICE9PSAxICk7Ci0KLQlyZXR1cm4gY3VyOwotfQotCi1qUXVlcnkuZWFjaCh7Ci0JcGFyZW50OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJdmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKLQkJcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDsKLQl9LAotCXBhcmVudHM6IGZ1bmN0aW9uKCBlbGVtICkgewotCQlyZXR1cm4galF1ZXJ5LmRpciggZWxlbSwgInBhcmVudE5vZGUiICk7Ci0JfSwKLQlwYXJlbnRzVW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKLQkJcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJwYXJlbnROb2RlIiwgdW50aWwgKTsKLQl9LAotCW5leHQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCQlyZXR1cm4gc2libGluZyggZWxlbSwgIm5leHRTaWJsaW5nIiApOwotCX0sCi0JcHJldjogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCXJldHVybiBzaWJsaW5nKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiApOwotCX0sCi0JbmV4dEFsbDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCXJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciICk7Ci0JfSwKLQlwcmV2QWxsOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciICk7Ci0JfSwKLQluZXh0VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKLQkJcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJuZXh0U2libGluZyIsIHVudGlsICk7Ci0JfSwKLQlwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHsKLQkJcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJwcmV2aW91c1NpYmxpbmciLCB1bnRpbCApOwotCX0sCi0Jc2libGluZ3M6IGZ1bmN0aW9uKCBlbGVtICkgewotCQlyZXR1cm4galF1ZXJ5LnNpYmxpbmcoICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxlbSApOwotCX0sCi0JY2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkgewotCQlyZXR1cm4galF1ZXJ5LnNpYmxpbmcoIGVsZW0uZmlyc3RDaGlsZCApOwotCX0sCi0JY29udGVudHM6IGZ1bmN0aW9uKCBlbGVtICkgewotCQlyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiaWZyYW1lIiApID8KLQkJCWVsZW0uY29udGVudERvY3VtZW50IHx8IGVsZW0uY29udGVudFdpbmRvdy5kb2N1bWVudCA6Ci0JCQlqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTsKLQl9Ci19LCBmdW5jdGlvbiggbmFtZSwgZm4gKSB7Ci0JalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkgewotCQl2YXIgcmV0ID0galF1ZXJ5Lm1hcCggdGhpcywgZm4sIHVudGlsICk7Ci0KLQkJaWYgKCAhcnVudGlsLnRlc3QoIG5hbWUgKSApIHsKLQkJCXNlbGVjdG9yID0gdW50aWw7Ci0JCX0KLQotCQlpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7Ci0JCQlyZXQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgcmV0ICk7Ci0JCX0KLQotCQlyZXQgPSB0aGlzLmxlbmd0aCA+IDEgJiYgIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSA/IGpRdWVyeS51bmlxdWUoIHJldCApIDogcmV0OwotCi0JCWlmICggdGhpcy5sZW5ndGggPiAxICYmIHJwYXJlbnRzcHJldi50ZXN0KCBuYW1lICkgKSB7Ci0JCQlyZXQgPSByZXQucmV2ZXJzZSgpOwotCQl9Ci0KLQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTsKLQl9OwotfSk7Ci0KLWpRdWVyeS5leHRlbmQoewotCWZpbHRlcjogZnVuY3Rpb24oIGV4cHIsIGVsZW1zLCBub3QgKSB7Ci0JCWlmICggbm90ICkgewotCQkJZXhwciA9ICI6bm90KCIgKyBleHByICsgIikiOwotCQl9Ci0KLQkJcmV0dXJuIGVsZW1zLmxlbmd0aCA9PT0gMSA/Ci0JCQlqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoZWxlbXNbMF0sIGV4cHIpID8gWyBlbGVtc1swXSBdIDogW10gOgotCQkJalF1ZXJ5LmZpbmQubWF0Y2hlcyhleHByLCBlbGVtcyk7Ci0JfSwKLQotCWRpcjogZnVuY3Rpb24oIGVsZW0sIGRpciwgdW50aWwgKSB7Ci0JCXZhciBtYXRjaGVkID0gW10sCi0JCQljdXIgPSBlbGVtWyBkaXIgXTsKLQotCQl3aGlsZSAoIGN1ciAmJiBjdXIubm9kZVR5cGUgIT09IDkgJiYgKHVudGlsID09PSB1bmRlZmluZWQgfHwgY3VyLm5vZGVUeXBlICE9PSAxIHx8ICFqUXVlcnkoIGN1ciApLmlzKCB1bnRpbCApKSApIHsKLQkJCWlmICggY3VyLm5vZGVUeXBlID09PSAxICkgewotCQkJCW1hdGNoZWQucHVzaCggY3VyICk7Ci0JCQl9Ci0JCQljdXIgPSBjdXJbZGlyXTsKLQkJfQotCQlyZXR1cm4gbWF0Y2hlZDsKLQl9LAotCi0Jc2libGluZzogZnVuY3Rpb24oIG4sIGVsZW0gKSB7Ci0JCXZhciByID0gW107Ci0KLQkJZm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHsKLQkJCWlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVtICkgewotCQkJCXIucHVzaCggbiApOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHI7Ci0JfQotfSk7Ci0KLS8vIEltcGxlbWVudCB0aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZpbHRlciBhbmQgbm90Ci1mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIGtlZXAgKSB7Ci0KLQkvLyBDYW4ndCBwYXNzIG51bGwgb3IgdW5kZWZpbmVkIHRvIGluZGV4T2YgaW4gRmlyZWZveCA0Ci0JLy8gU2V0IHRvIDAgdG8gc2tpcCBzdHJpbmcgY2hlY2sKLQlxdWFsaWZpZXIgPSBxdWFsaWZpZXIgfHwgMDsKLQotCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHF1YWxpZmllciApICkgewotCQlyZXR1cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgewotCQkJdmFyIHJldFZhbCA9ICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKTsKLQkJCXJldHVybiByZXRWYWwgPT09IGtlZXA7Ci0JCX0pOwotCi0JfSBlbHNlIGlmICggcXVhbGlmaWVyLm5vZGVUeXBlICkgewotCQlyZXR1cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgPT09IGtlZXA7Ci0JCX0pOwotCi0JfSBlbHNlIGlmICggdHlwZW9mIHF1YWxpZmllciA9PT0gInN0cmluZyIgKSB7Ci0JCXZhciBmaWx0ZXJlZCA9IGpRdWVyeS5ncmVwKGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxOwotCQl9KTsKLQotCQlpZiAoIGlzU2ltcGxlLnRlc3QoIHF1YWxpZmllciApICkgewotCQkJcmV0dXJuIGpRdWVyeS5maWx0ZXIocXVhbGlmaWVyLCBmaWx0ZXJlZCwgIWtlZXApOwotCQl9IGVsc2UgewotCQkJcXVhbGlmaWVyID0galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBmaWx0ZXJlZCApOwotCQl9Ci0JfQotCi0JcmV0dXJuIGpRdWVyeS5ncmVwKGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHsKLQkJcmV0dXJuICggalF1ZXJ5LmluQXJyYXkoIGVsZW0sIHF1YWxpZmllciApID49IDAgKSA9PT0ga2VlcDsKLQl9KTsKLX0KLWZ1bmN0aW9uIGNyZWF0ZVNhZmVGcmFnbWVudCggZG9jdW1lbnQgKSB7Ci0JdmFyIGxpc3QgPSBub2RlTmFtZXMuc3BsaXQoICJ8IiApLAotCQlzYWZlRnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLQotCWlmICggc2FmZUZyYWcuY3JlYXRlRWxlbWVudCApIHsKLQkJd2hpbGUgKCBsaXN0Lmxlbmd0aCApIHsKLQkJCXNhZmVGcmFnLmNyZWF0ZUVsZW1lbnQoCi0JCQkJbGlzdC5wb3AoKQotCQkJKTsKLQkJfQotCX0KLQlyZXR1cm4gc2FmZUZyYWc7Ci19Ci0KLXZhciBub2RlTmFtZXMgPSAiYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnwiICsKLQkJImhlYWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNlY3Rpb258c3VtbWFyeXx0aW1lfHZpZGVvIiwKLQlyaW5saW5lalF1ZXJ5ID0gLyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZywKLQlybm9zaGltY2FjaGUgPSBuZXcgUmVnRXhwKCI8KD86IiArIG5vZGVOYW1lcyArICIpW1xccy8+XSIsICJpIiksCi0JcmxlYWRpbmdXaGl0ZXNwYWNlID0gL15ccysvLAotCXJ4aHRtbFRhZyA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksCi0JcnRhZ05hbWUgPSAvPChbXHc6XSspLywKLQlydGJvZHkgPSAvPHRib2R5L2ksCi0Jcmh0bWwgPSAvPHwmIz9cdys7LywKLQlybm9Jbm5lcmh0bWwgPSAvPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLAotCW1hbmlwdWxhdGlvbl9yY2hlY2thYmxlVHlwZSA9IC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLAotCS8vIGNoZWNrZWQ9ImNoZWNrZWQiIG9yIGNoZWNrZWQKLQlyY2hlY2tlZCA9IC9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLAotCXJzY3JpcHRUeXBlID0gL14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLAotCXJzY3JpcHRUeXBlTWFza2VkID0gL150cnVlXC8oLiopLywKLQlyY2xlYW5TY3JpcHQgPSAvXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2csCi0KLQkvLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKQotCXdyYXBNYXAgPSB7Ci0JCW9wdGlvbjogWyAxLCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iIF0sCi0JCWxlZ2VuZDogWyAxLCAiPGZpZWxkc2V0PiIsICI8L2ZpZWxkc2V0PiIgXSwKLQkJYXJlYTogWyAxLCAiPG1hcD4iLCAiPC9tYXA+IiBdLAotCQlwYXJhbTogWyAxLCAiPG9iamVjdD4iLCAiPC9vYmplY3Q+IiBdLAotCQl0aGVhZDogWyAxLCAiPHRhYmxlPiIsICI8L3RhYmxlPiIgXSwKLQkJdHI6IFsgMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4iIF0sCi0JCWNvbDogWyAyLCAiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiIgXSwKLQkJdGQ6IFsgMywgIjx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3RyPjwvdGJvZHk+PC90YWJsZT4iIF0sCi0KLQkJLy8gSUU2LTggY2FuJ3Qgc2VyaWFsaXplIGxpbmssIHNjcmlwdCwgc3R5bGUsIG9yIGFueSBodG1sNSAoTm9TY29wZSkgdGFncywKLQkJLy8gdW5sZXNzIHdyYXBwZWQgaW4gYSBkaXYgd2l0aCBub24tYnJlYWtpbmcgY2hhcmFjdGVycyBpbiBmcm9udCBvZiBpdC4KLQkJX2RlZmF1bHQ6IGpRdWVyeS5zdXBwb3J0Lmh0bWxTZXJpYWxpemUgPyBbIDAsICIiLCAiIiBdIDogWyAxLCAiWDxkaXY+IiwgIjwvZGl2PiIgIF0KLQl9LAotCXNhZmVGcmFnbWVudCA9IGNyZWF0ZVNhZmVGcmFnbWVudCggZG9jdW1lbnQgKSwKLQlmcmFnbWVudERpdiA9IHNhZmVGcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikgKTsKLQotd3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uOwotd3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3VwID0gd3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDsKLXdyYXBNYXAudGggPSB3cmFwTWFwLnRkOwotCi1qUXVlcnkuZm4uZXh0ZW5kKHsKLQl0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0JCXJldHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7Ci0JCQlyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/Ci0JCQkJalF1ZXJ5LnRleHQoIHRoaXMgKSA6Ci0JCQkJdGhpcy5lbXB0eSgpLmFwcGVuZCggKCB0aGlzWzBdICYmIHRoaXNbMF0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApLmNyZWF0ZVRleHROb2RlKCB2YWx1ZSApICk7Ci0JCX0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7Ci0JfSwKLQotCXdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkgewotCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBodG1sICkgKSB7Ci0JCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKLQkJCQlqUXVlcnkodGhpcykud3JhcEFsbCggaHRtbC5jYWxsKHRoaXMsIGkpICk7Ci0JCQl9KTsKLQkJfQotCi0JCWlmICggdGhpc1swXSApIHsKLQkJCS8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kCi0JCQl2YXIgd3JhcCA9IGpRdWVyeSggaHRtbCwgdGhpc1swXS5vd25lckRvY3VtZW50ICkuZXEoMCkuY2xvbmUodHJ1ZSk7Ci0KLQkJCWlmICggdGhpc1swXS5wYXJlbnROb2RlICkgewotCQkJCXdyYXAuaW5zZXJ0QmVmb3JlKCB0aGlzWzBdICk7Ci0JCQl9Ci0KLQkJCXdyYXAubWFwKGZ1bmN0aW9uKCkgewotCQkJCXZhciBlbGVtID0gdGhpczsKLQotCQkJCXdoaWxlICggZWxlbS5maXJzdENoaWxkICYmIGVsZW0uZmlyc3RDaGlsZC5ub2RlVHlwZSA9PT0gMSApIHsKLQkJCQkJZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsKLQkJCQl9Ci0KLQkJCQlyZXR1cm4gZWxlbTsKLQkJCX0pLmFwcGVuZCggdGhpcyApOwotCQl9Ci0KLQkJcmV0dXJuIHRoaXM7Ci0JfSwKLQotCXdyYXBJbm5lcjogZnVuY3Rpb24oIGh0bWwgKSB7Ci0JCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHsKLQkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSkgewotCQkJCWpRdWVyeSh0aGlzKS53cmFwSW5uZXIoIGh0bWwuY2FsbCh0aGlzLCBpKSApOwotCQkJfSk7Ci0JCX0KLQotCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotCQkJdmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSwKLQkJCQljb250ZW50cyA9IHNlbGYuY29udGVudHMoKTsKLQotCQkJaWYgKCBjb250ZW50cy5sZW5ndGggKSB7Ci0JCQkJY29udGVudHMud3JhcEFsbCggaHRtbCApOwotCi0JCQl9IGVsc2UgewotCQkJCXNlbGYuYXBwZW5kKCBodG1sICk7Ci0JCQl9Ci0JCX0pOwotCX0sCi0KLQl3cmFwOiBmdW5jdGlvbiggaHRtbCApIHsKLQkJdmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApOwotCi0JCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSkgewotCQkJalF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaXNGdW5jdGlvbiA/IGh0bWwuY2FsbCh0aGlzLCBpKSA6IGh0bWwgKTsKLQkJfSk7Ci0JfSwKLQotCXVud3JhcDogZnVuY3Rpb24oKSB7Ci0JCXJldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQlpZiAoICFqUXVlcnkubm9kZU5hbWUoIHRoaXMsICJib2R5IiApICkgewotCQkJCWpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTsKLQkJCX0KLQkJfSkuZW5kKCk7Ci0JfSwKLQotCWFwcGVuZDogZnVuY3Rpb24oKSB7Ci0JCXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgdHJ1ZSwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHsKLQkJCQl0aGlzLmFwcGVuZENoaWxkKCBlbGVtICk7Ci0JCQl9Ci0JCX0pOwotCX0sCi0KLQlwcmVwZW5kOiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCBmdW5jdGlvbiggZWxlbSApIHsKLQkJCWlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkgewotCQkJCXRoaXMuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzLmZpcnN0Q2hpbGQgKTsKLQkJCX0KLQkJfSk7Ci0JfSwKLQotCWJlZm9yZTogZnVuY3Rpb24oKSB7Ci0JCXJldHVybiB0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZhbHNlLCBmdW5jdGlvbiggZWxlbSApIHsKLQkJCWlmICggdGhpcy5wYXJlbnROb2RlICkgewotCQkJCXRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMgKTsKLQkJCX0KLQkJfSk7Ci0JfSwKLQotCWFmdGVyOiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHRoaXMuZG9tTWFuaXAoIGFyZ3VtZW50cywgZmFsc2UsIGZ1bmN0aW9uKCBlbGVtICkgewotCQkJaWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7Ci0JCQkJdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApOwotCQkJfQotCQl9KTsKLQl9LAotCi0JLy8ga2VlcERhdGEgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5LS1kbyBub3QgZG9jdW1lbnQKLQlyZW1vdmU6IGZ1bmN0aW9uKCBzZWxlY3Rvciwga2VlcERhdGEgKSB7Ci0JCXZhciBlbGVtLAotCQkJaSA9IDA7Ci0KLQkJZm9yICggOyAoZWxlbSA9IHRoaXNbaV0pICE9IG51bGw7IGkrKyApIHsKLQkJCWlmICggIXNlbGVjdG9yIHx8IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBbIGVsZW0gXSApLmxlbmd0aCA+IDAgKSB7Ci0JCQkJaWYgKCAha2VlcERhdGEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKLQkJCQkJalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtICkgKTsKLQkJCQl9Ci0KLQkJCQlpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHsKLQkJCQkJaWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkgewotCQkJCQkJc2V0R2xvYmFsRXZhbCggZ2V0QWxsKCBlbGVtLCAic2NyaXB0IiApICk7Ci0JCQkJCX0KLQkJCQkJZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbGVtICk7Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHRoaXM7Ci0JfSwKLQotCWVtcHR5OiBmdW5jdGlvbigpIHsKLQkJdmFyIGVsZW0sCi0JCQlpID0gMDsKLQotCQlmb3IgKCA7IChlbGVtID0gdGhpc1tpXSkgIT0gbnVsbDsgaSsrICkgewotCQkJLy8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzCi0JCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7Ci0JCQkJalF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7Ci0JCQl9Ci0KLQkJCS8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzCi0JCQl3aGlsZSAoIGVsZW0uZmlyc3RDaGlsZCApIHsKLQkJCQllbGVtLnJlbW92ZUNoaWxkKCBlbGVtLmZpcnN0Q2hpbGQgKTsKLQkJCX0KLQotCQkJLy8gSWYgdGhpcyBpcyBhIHNlbGVjdCwgZW5zdXJlIHRoYXQgaXQgZGlzcGxheXMgZW1wdHkgKCMxMjMzNikKLQkJCS8vIFN1cHBvcnQ6IElFPDkKLQkJCWlmICggZWxlbS5vcHRpb25zICYmIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgInNlbGVjdCIgKSApIHsKLQkJCQllbGVtLm9wdGlvbnMubGVuZ3RoID0gMDsKLQkJCX0KLQkJfQotCi0JCXJldHVybiB0aGlzOwotCX0sCi0KLQljbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkgewotCQlkYXRhQW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2UgOiBkYXRhQW5kRXZlbnRzOwotCQlkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7Ci0KLQkJcmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbiAoKSB7Ci0JCQlyZXR1cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApOwotCQl9KTsKLQl9LAotCi0JaHRtbDogZnVuY3Rpb24oIHZhbHVlICkgewotCQlyZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkgewotCQkJdmFyIGVsZW0gPSB0aGlzWzBdIHx8IHt9LAotCQkJCWkgPSAwLAotCQkJCWwgPSB0aGlzLmxlbmd0aDsKLQotCQkJaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgewotCQkJCXJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxID8KLQkJCQkJZWxlbS5pbm5lckhUTUwucmVwbGFjZSggcmlubGluZWpRdWVyeSwgIiIgKSA6Ci0JCQkJCXVuZGVmaW5lZDsKLQkJCX0KLQotCQkJLy8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTAotCQkJaWYgKCB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmICFybm9Jbm5lcmh0bWwudGVzdCggdmFsdWUgKSAmJgotCQkJCSggalF1ZXJ5LnN1cHBvcnQuaHRtbFNlcmlhbGl6ZSB8fCAhcm5vc2hpbWNhY2hlLnRlc3QoIHZhbHVlICkgICkgJiYKLQkJCQkoIGpRdWVyeS5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlIHx8ICFybGVhZGluZ1doaXRlc3BhY2UudGVzdCggdmFsdWUgKSApICYmCi0JCQkJIXdyYXBNYXBbICggcnRhZ05hbWUuZXhlYyggdmFsdWUgKSB8fCBbIiIsICIiXSApWzFdLnRvTG93ZXJDYXNlKCkgXSApIHsKLQotCQkJCXZhbHVlID0gdmFsdWUucmVwbGFjZSggcnhodG1sVGFnLCAiPCQxPjwvJDI+IiApOwotCi0JCQkJdHJ5IHsKLQkJCQkJZm9yICg7IGkgPCBsOyBpKysgKSB7Ci0JCQkJCQkvLyBSZW1vdmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3MKLQkJCQkJCWVsZW0gPSB0aGlzW2ldIHx8IHt9OwotCQkJCQkJaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgewotCQkJCQkJCWpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApOwotCQkJCQkJCWVsZW0uaW5uZXJIVE1MID0gdmFsdWU7Ci0JCQkJCQl9Ci0JCQkJCX0KLQotCQkJCQllbGVtID0gMDsKLQotCQkJCS8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZAotCQkJCX0gY2F0Y2goZSkge30KLQkJCX0KLQotCQkJaWYgKCBlbGVtICkgewotCQkJCXRoaXMuZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7Ci0JCQl9Ci0JCX0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7Ci0JfSwKLQotCXJlcGxhY2VXaXRoOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0JCXZhciBpc0Z1bmMgPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKLQotCQkvLyBNYWtlIHN1cmUgdGhhdCB0aGUgZWxlbWVudHMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgRE9NIGJlZm9yZSB0aGV5IGFyZSBpbnNlcnRlZAotCQkvLyB0aGlzIGNhbiBoZWxwIGZpeCByZXBsYWNpbmcgYSBwYXJlbnQgd2l0aCBjaGlsZCBlbGVtZW50cwotCQlpZiAoICFpc0Z1bmMgJiYgdHlwZW9mIHZhbHVlICE9PSAic3RyaW5nIiApIHsKLQkJCXZhbHVlID0galF1ZXJ5KCB2YWx1ZSApLm5vdCggdGhpcyApLmRldGFjaCgpOwotCQl9Ci0KLQkJcmV0dXJuIHRoaXMuZG9tTWFuaXAoIFsgdmFsdWUgXSwgdHJ1ZSwgZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQl2YXIgbmV4dCA9IHRoaXMubmV4dFNpYmxpbmcsCi0JCQkJcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlOwotCi0JCQlpZiAoIHBhcmVudCApIHsKLQkJCQlqUXVlcnkoIHRoaXMgKS5yZW1vdmUoKTsKLQkJCQlwYXJlbnQuaW5zZXJ0QmVmb3JlKCBlbGVtLCBuZXh0ICk7Ci0JCQl9Ci0JCX0pOwotCX0sCi0KLQlkZXRhY2g6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLQkJcmV0dXJuIHRoaXMucmVtb3ZlKCBzZWxlY3RvciwgdHJ1ZSApOwotCX0sCi0KLQlkb21NYW5pcDogZnVuY3Rpb24oIGFyZ3MsIHRhYmxlLCBjYWxsYmFjayApIHsKLQotCQkvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzCi0JCWFyZ3MgPSBjb3JlX2NvbmNhdC5hcHBseSggW10sIGFyZ3MgKTsKLQotCQl2YXIgZmlyc3QsIG5vZGUsIGhhc1NjcmlwdHMsCi0JCQlzY3JpcHRzLCBkb2MsIGZyYWdtZW50LAotCQkJaSA9IDAsCi0JCQlsID0gdGhpcy5sZW5ndGgsCi0JCQlzZXQgPSB0aGlzLAotCQkJaU5vQ2xvbmUgPSBsIC0gMSwKLQkJCXZhbHVlID0gYXJnc1swXSwKLQkJCWlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKLQotCQkvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXQKLQkJaWYgKCBpc0Z1bmN0aW9uIHx8ICEoIGwgPD0gMSB8fCB0eXBlb2YgdmFsdWUgIT09ICJzdHJpbmciIHx8IGpRdWVyeS5zdXBwb3J0LmNoZWNrQ2xvbmUgfHwgIXJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHsKLQkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGluZGV4ICkgewotCQkJCXZhciBzZWxmID0gc2V0LmVxKCBpbmRleCApOwotCQkJCWlmICggaXNGdW5jdGlvbiApIHsKLQkJCQkJYXJnc1swXSA9IHZhbHVlLmNhbGwoIHRoaXMsIGluZGV4LCB0YWJsZSA/IHNlbGYuaHRtbCgpIDogdW5kZWZpbmVkICk7Ci0JCQkJfQotCQkJCXNlbGYuZG9tTWFuaXAoIGFyZ3MsIHRhYmxlLCBjYWxsYmFjayApOwotCQkJfSk7Ci0JCX0KLQotCQlpZiAoIGwgKSB7Ci0JCQlmcmFnbWVudCA9IGpRdWVyeS5idWlsZEZyYWdtZW50KCBhcmdzLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCwgZmFsc2UsIHRoaXMgKTsKLQkJCWZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDsKLQotCQkJaWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHsKLQkJCQlmcmFnbWVudCA9IGZpcnN0OwotCQkJfQotCi0JCQlpZiAoIGZpcnN0ICkgewotCQkJCXRhYmxlID0gdGFibGUgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBmaXJzdCwgInRyIiApOwotCQkJCXNjcmlwdHMgPSBqUXVlcnkubWFwKCBnZXRBbGwoIGZyYWdtZW50LCAic2NyaXB0IiApLCBkaXNhYmxlU2NyaXB0ICk7Ci0JCQkJaGFzU2NyaXB0cyA9IHNjcmlwdHMubGVuZ3RoOwotCi0JCQkJLy8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbSBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQgdXAKLQkJCQkvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLgotCQkJCWZvciAoIDsgaSA8IGw7IGkrKyApIHsKLQkJCQkJbm9kZSA9IGZyYWdtZW50OwotCi0JCQkJCWlmICggaSAhPT0gaU5vQ2xvbmUgKSB7Ci0JCQkJCQlub2RlID0galF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7Ci0KLQkJCQkJCS8vIEtlZXAgcmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9yYXRpb24KLQkJCQkJCWlmICggaGFzU2NyaXB0cyApIHsKLQkJCQkJCQlqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgInNjcmlwdCIgKSApOwotCQkJCQkJfQotCQkJCQl9Ci0KLQkJCQkJY2FsbGJhY2suY2FsbCgKLQkJCQkJCXRhYmxlICYmIGpRdWVyeS5ub2RlTmFtZSggdGhpc1tpXSwgInRhYmxlIiApID8KLQkJCQkJCQlmaW5kT3JBcHBlbmQoIHRoaXNbaV0sICJ0Ym9keSIgKSA6Ci0JCQkJCQkJdGhpc1tpXSwKLQkJCQkJCW5vZGUsCi0JCQkJCQlpCi0JCQkJCSk7Ci0JCQkJfQotCi0JCQkJaWYgKCBoYXNTY3JpcHRzICkgewotCQkJCQlkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50OwotCi0JCQkJCS8vIFJlZW5hYmxlIHNjcmlwdHMKLQkJCQkJalF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlwdCApOwotCi0JCQkJCS8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb24KLQkJCQkJZm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7Ci0JCQkJCQlub2RlID0gc2NyaXB0c1sgaSBdOwotCQkJCQkJaWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgIiIgKSAmJgotCQkJCQkJCSFqUXVlcnkuX2RhdGEoIG5vZGUsICJnbG9iYWxFdmFsIiApICYmIGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7Ci0KLQkJCQkJCQlpZiAoIG5vZGUuc3JjICkgewotCQkJCQkJCQkvLyBIb3BlIGFqYXggaXMgYXZhaWxhYmxlLi4uCi0JCQkJCQkJCWpRdWVyeS5hamF4KHsKLQkJCQkJCQkJCXVybDogbm9kZS5zcmMsCi0JCQkJCQkJCQl0eXBlOiAiR0VUIiwKLQkJCQkJCQkJCWRhdGFUeXBlOiAic2NyaXB0IiwKLQkJCQkJCQkJCWFzeW5jOiBmYWxzZSwKLQkJCQkJCQkJCWdsb2JhbDogZmFsc2UsCi0JCQkJCQkJCQkidGhyb3dzIjogdHJ1ZQotCQkJCQkJCQl9KTsKLQkJCQkJCQl9IGVsc2UgewotCQkJCQkJCQlqUXVlcnkuZ2xvYmFsRXZhbCggKCBub2RlLnRleHQgfHwgbm9kZS50ZXh0Q29udGVudCB8fCBub2RlLmlubmVySFRNTCB8fCAiIiApLnJlcGxhY2UoIHJjbGVhblNjcmlwdCwgIiIgKSApOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0KLQotCQkJCS8vIEZpeCAjMTE4MDk6IEF2b2lkIGxlYWtpbmcgbWVtb3J5Ci0JCQkJZnJhZ21lbnQgPSBmaXJzdCA9IG51bGw7Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gdGhpczsKLQl9Ci19KTsKLQotZnVuY3Rpb24gZmluZE9yQXBwZW5kKCBlbGVtLCB0YWcgKSB7Ci0JcmV0dXJuIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApWzBdIHx8IGVsZW0uYXBwZW5kQ2hpbGQoIGVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCB0YWcgKSApOwotfQotCi0vLyBSZXBsYWNlL3Jlc3RvcmUgdGhlIHR5cGUgYXR0cmlidXRlIG9mIHNjcmlwdCBlbGVtZW50cyBmb3Igc2FmZSBET00gbWFuaXB1bGF0aW9uCi1mdW5jdGlvbiBkaXNhYmxlU2NyaXB0KCBlbGVtICkgewotCXZhciBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCJ0eXBlIik7Ci0JZWxlbS50eXBlID0gKCBhdHRyICYmIGF0dHIuc3BlY2lmaWVkICkgKyAiLyIgKyBlbGVtLnR5cGU7Ci0JcmV0dXJuIGVsZW07Ci19Ci1mdW5jdGlvbiByZXN0b3JlU2NyaXB0KCBlbGVtICkgewotCXZhciBtYXRjaCA9IHJzY3JpcHRUeXBlTWFza2VkLmV4ZWMoIGVsZW0udHlwZSApOwotCWlmICggbWF0Y2ggKSB7Ci0JCWVsZW0udHlwZSA9IG1hdGNoWzFdOwotCX0gZWxzZSB7Ci0JCWVsZW0ucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIik7Ci0JfQotCXJldHVybiBlbGVtOwotfQotCi0vLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFscmVhZHkgYmVlbiBldmFsdWF0ZWQKLWZ1bmN0aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZFbGVtZW50cyApIHsKLQl2YXIgZWxlbSwKLQkJaSA9IDA7Ci0JZm9yICggOyAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0JCWpRdWVyeS5fZGF0YSggZWxlbSwgImdsb2JhbEV2YWwiLCAhcmVmRWxlbWVudHMgfHwgalF1ZXJ5Ll9kYXRhKCByZWZFbGVtZW50c1tpXSwgImdsb2JhbEV2YWwiICkgKTsKLQl9Ci19Ci0KLWZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7Ci0KLQlpZiAoIGRlc3Qubm9kZVR5cGUgIT09IDEgfHwgIWpRdWVyeS5oYXNEYXRhKCBzcmMgKSApIHsKLQkJcmV0dXJuOwotCX0KLQotCXZhciB0eXBlLCBpLCBsLAotCQlvbGREYXRhID0galF1ZXJ5Ll9kYXRhKCBzcmMgKSwKLQkJY3VyRGF0YSA9IGpRdWVyeS5fZGF0YSggZGVzdCwgb2xkRGF0YSApLAotCQlldmVudHMgPSBvbGREYXRhLmV2ZW50czsKLQotCWlmICggZXZlbnRzICkgewotCQlkZWxldGUgY3VyRGF0YS5oYW5kbGU7Ci0JCWN1ckRhdGEuZXZlbnRzID0ge307Ci0KLQkJZm9yICggdHlwZSBpbiBldmVudHMgKSB7Ci0JCQlmb3IgKCBpID0gMCwgbCA9IGV2ZW50c1sgdHlwZSBdLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLQkJCQlqUXVlcnkuZXZlbnQuYWRkKCBkZXN0LCB0eXBlLCBldmVudHNbIHR5cGUgXVsgaSBdICk7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkvLyBtYWtlIHRoZSBjbG9uZWQgcHVibGljIGRhdGEgb2JqZWN0IGEgY29weSBmcm9tIHRoZSBvcmlnaW5hbAotCWlmICggY3VyRGF0YS5kYXRhICkgewotCQljdXJEYXRhLmRhdGEgPSBqUXVlcnkuZXh0ZW5kKCB7fSwgY3VyRGF0YS5kYXRhICk7Ci0JfQotfQotCi1mdW5jdGlvbiBmaXhDbG9uZU5vZGVJc3N1ZXMoIHNyYywgZGVzdCApIHsKLQl2YXIgbm9kZU5hbWUsIGUsIGRhdGE7Ci0KLQkvLyBXZSBkbyBub3QgbmVlZCB0byBkbyBhbnl0aGluZyBmb3Igbm9uLUVsZW1lbnRzCi0JaWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxICkgewotCQlyZXR1cm47Ci0JfQotCi0Jbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0KLQkvLyBJRTYtOCBjb3BpZXMgZXZlbnRzIGJvdW5kIHZpYSBhdHRhY2hFdmVudCB3aGVuIHVzaW5nIGNsb25lTm9kZS4KLQlpZiAoICFqUXVlcnkuc3VwcG9ydC5ub0Nsb25lRXZlbnQgJiYgZGVzdFsgalF1ZXJ5LmV4cGFuZG8gXSApIHsKLQkJZGF0YSA9IGpRdWVyeS5fZGF0YSggZGVzdCApOwotCi0JCWZvciAoIGUgaW4gZGF0YS5ldmVudHMgKSB7Ci0JCQlqUXVlcnkucmVtb3ZlRXZlbnQoIGRlc3QsIGUsIGRhdGEuaGFuZGxlICk7Ci0JCX0KLQotCQkvLyBFdmVudCBkYXRhIGdldHMgcmVmZXJlbmNlZCBpbnN0ZWFkIG9mIGNvcGllZCBpZiB0aGUgZXhwYW5kbyBnZXRzIGNvcGllZCB0b28KLQkJZGVzdC5yZW1vdmVBdHRyaWJ1dGUoIGpRdWVyeS5leHBhbmRvICk7Ci0JfQotCi0JLy8gSUUgYmxhbmtzIGNvbnRlbnRzIHdoZW4gY2xvbmluZyBzY3JpcHRzLCBhbmQgdHJpZXMgdG8gZXZhbHVhdGUgbmV3bHktc2V0IHRleHQKLQlpZiAoIG5vZGVOYW1lID09PSAic2NyaXB0IiAmJiBkZXN0LnRleHQgIT09IHNyYy50ZXh0ICkgewotCQlkaXNhYmxlU2NyaXB0KCBkZXN0ICkudGV4dCA9IHNyYy50ZXh0OwotCQlyZXN0b3JlU2NyaXB0KCBkZXN0ICk7Ci0KLQkvLyBJRTYtMTAgaW1wcm9wZXJseSBjbG9uZXMgY2hpbGRyZW4gb2Ygb2JqZWN0IGVsZW1lbnRzIHVzaW5nIGNsYXNzaWQuCi0JLy8gSUUxMCB0aHJvd3MgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgaWYgcGFyZW50IGlzIG51bGwsICMxMjEzMi4KLQl9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gIm9iamVjdCIgKSB7Ci0JCWlmICggZGVzdC5wYXJlbnROb2RlICkgewotCQkJZGVzdC5vdXRlckhUTUwgPSBzcmMub3V0ZXJIVE1MOwotCQl9Ci0KLQkJLy8gVGhpcyBwYXRoIGFwcGVhcnMgdW5hdm9pZGFibGUgZm9yIElFOS4gV2hlbiBjbG9uaW5nIGFuIG9iamVjdAotCQkvLyBlbGVtZW50IGluIElFOSwgdGhlIG91dGVySFRNTCBzdHJhdGVneSBhYm92ZSBpcyBub3Qgc3VmZmljaWVudC4KLQkJLy8gSWYgdGhlIHNyYyBoYXMgaW5uZXJIVE1MIGFuZCB0aGUgZGVzdGluYXRpb24gZG9lcyBub3QsCi0JCS8vIGNvcHkgdGhlIHNyYy5pbm5lckhUTUwgaW50byB0aGUgZGVzdC5pbm5lckhUTUwuICMxMDMyNAotCQlpZiAoIGpRdWVyeS5zdXBwb3J0Lmh0bWw1Q2xvbmUgJiYgKCBzcmMuaW5uZXJIVE1MICYmICFqUXVlcnkudHJpbShkZXN0LmlubmVySFRNTCkgKSApIHsKLQkJCWRlc3QuaW5uZXJIVE1MID0gc3JjLmlubmVySFRNTDsKLQkJfQotCi0JfSBlbHNlIGlmICggbm9kZU5hbWUgPT09ICJpbnB1dCIgJiYgbWFuaXB1bGF0aW9uX3JjaGVja2FibGVUeXBlLnRlc3QoIHNyYy50eXBlICkgKSB7Ci0JCS8vIElFNi04IGZhaWxzIHRvIHBlcnNpc3QgdGhlIGNoZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQgY2hlY2tib3gKLQkJLy8gb3IgcmFkaW8gYnV0dG9uLiBXb3JzZSwgSUU2LTcgZmFpbCB0byBnaXZlIHRoZSBjbG9uZWQgZWxlbWVudAotCQkvLyBhIGNoZWNrZWQgYXBwZWFyYW5jZSBpZiB0aGUgZGVmYXVsdENoZWNrZWQgdmFsdWUgaXNuJ3QgYWxzbyBzZXQKLQotCQlkZXN0LmRlZmF1bHRDaGVja2VkID0gZGVzdC5jaGVja2VkID0gc3JjLmNoZWNrZWQ7Ci0KLQkJLy8gSUU2LTcgZ2V0IGNvbmZ1c2VkIGFuZCBlbmQgdXAgc2V0dGluZyB0aGUgdmFsdWUgb2YgYSBjbG9uZWQKLQkJLy8gY2hlY2tib3gvcmFkaW8gYnV0dG9uIHRvIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mICJvbiIKLQkJaWYgKCBkZXN0LnZhbHVlICE9PSBzcmMudmFsdWUgKSB7Ci0JCQlkZXN0LnZhbHVlID0gc3JjLnZhbHVlOwotCQl9Ci0KLQkvLyBJRTYtOCBmYWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZAotCS8vIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zCi0JfSBlbHNlIGlmICggbm9kZU5hbWUgPT09ICJvcHRpb24iICkgewotCQlkZXN0LmRlZmF1bHRTZWxlY3RlZCA9IGRlc3Quc2VsZWN0ZWQgPSBzcmMuZGVmYXVsdFNlbGVjdGVkOwotCi0JLy8gSUU2LTggZmFpbHMgdG8gc2V0IHRoZSBkZWZhdWx0VmFsdWUgdG8gdGhlIGNvcnJlY3QgdmFsdWUgd2hlbgotCS8vIGNsb25pbmcgb3RoZXIgdHlwZXMgb2YgaW5wdXQgZmllbGRzCi0JfSBlbHNlIGlmICggbm9kZU5hbWUgPT09ICJpbnB1dCIgfHwgbm9kZU5hbWUgPT09ICJ0ZXh0YXJlYSIgKSB7Ci0JCWRlc3QuZGVmYXVsdFZhbHVlID0gc3JjLmRlZmF1bHRWYWx1ZTsKLQl9Ci19Ci0KLWpRdWVyeS5lYWNoKHsKLQlhcHBlbmRUbzogImFwcGVuZCIsCi0JcHJlcGVuZFRvOiAicHJlcGVuZCIsCi0JaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKLQlpbnNlcnRBZnRlcjogImFmdGVyIiwKLQlyZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCi19LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7Ci0JalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0JCXZhciBlbGVtcywKLQkJCWkgPSAwLAotCQkJcmV0ID0gW10sCi0JCQlpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9yICksCi0JCQlsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDE7Ci0KLQkJZm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHsKLQkJCWVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKHRydWUpOwotCQkJalF1ZXJ5KCBpbnNlcnRbaV0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTsKLQotCQkJLy8gTW9kZXJuIGJyb3dzZXJzIGNhbiBhcHBseSBqUXVlcnkgY29sbGVjdGlvbnMgYXMgYXJyYXlzLCBidXQgb2xkSUUgbmVlZHMgYSAuZ2V0KCkKLQkJCWNvcmVfcHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApOwotCQl9Ci0KLQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTsKLQl9OwotfSk7Ci0KLWZ1bmN0aW9uIGdldEFsbCggY29udGV4dCwgdGFnICkgewotCXZhciBlbGVtcywgZWxlbSwKLQkJaSA9IDAsCi0JCWZvdW5kID0gdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IGNvcmVfc3RydW5kZWZpbmVkID8gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnIHx8ICIqIiApIDoKLQkJCXR5cGVvZiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwgIT09IGNvcmVfc3RydW5kZWZpbmVkID8gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgfHwgIioiICkgOgotCQkJdW5kZWZpbmVkOwotCi0JaWYgKCAhZm91bmQgKSB7Ci0JCWZvciAoIGZvdW5kID0gW10sIGVsZW1zID0gY29udGV4dC5jaGlsZE5vZGVzIHx8IGNvbnRleHQ7IChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHsKLQkJCWlmICggIXRhZyB8fCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sIHRhZyApICkgewotCQkJCWZvdW5kLnB1c2goIGVsZW0gKTsKLQkJCX0gZWxzZSB7Ci0JCQkJalF1ZXJ5Lm1lcmdlKCBmb3VuZCwgZ2V0QWxsKCBlbGVtLCB0YWcgKSApOwotCQkJfQotCQl9Ci0JfQotCi0JcmV0dXJuIHRhZyA9PT0gdW5kZWZpbmVkIHx8IHRhZyAmJiBqUXVlcnkubm9kZU5hbWUoIGNvbnRleHQsIHRhZyApID8KLQkJalF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgZm91bmQgKSA6Ci0JCWZvdW5kOwotfQotCi0vLyBVc2VkIGluIGJ1aWxkRnJhZ21lbnQsIGZpeGVzIHRoZSBkZWZhdWx0Q2hlY2tlZCBwcm9wZXJ0eQotZnVuY3Rpb24gZml4RGVmYXVsdENoZWNrZWQoIGVsZW0gKSB7Ci0JaWYgKCBtYW5pcHVsYXRpb25fcmNoZWNrYWJsZVR5cGUudGVzdCggZWxlbS50eXBlICkgKSB7Ci0JCWVsZW0uZGVmYXVsdENoZWNrZWQgPSBlbGVtLmNoZWNrZWQ7Ci0JfQotfQotCi1qUXVlcnkuZXh0ZW5kKHsKLQljbG9uZTogZnVuY3Rpb24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkgewotCQl2YXIgZGVzdEVsZW1lbnRzLCBub2RlLCBjbG9uZSwgaSwgc3JjRWxlbWVudHMsCi0JCQlpblBhZ2UgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApOwotCi0JCWlmICggalF1ZXJ5LnN1cHBvcnQuaHRtbDVDbG9uZSB8fCBqUXVlcnkuaXNYTUxEb2MoZWxlbSkgfHwgIXJub3NoaW1jYWNoZS50ZXN0KCAiPCIgKyBlbGVtLm5vZGVOYW1lICsgIj4iICkgKSB7Ci0JCQljbG9uZSA9IGVsZW0uY2xvbmVOb2RlKCB0cnVlICk7Ci0KLQkJLy8gSUU8PTggZG9lcyBub3QgcHJvcGVybHkgY2xvbmUgZGV0YWNoZWQsIHVua25vd24gZWxlbWVudCBub2RlcwotCQl9IGVsc2UgewotCQkJZnJhZ21lbnREaXYuaW5uZXJIVE1MID0gZWxlbS5vdXRlckhUTUw7Ci0JCQlmcmFnbWVudERpdi5yZW1vdmVDaGlsZCggY2xvbmUgPSBmcmFnbWVudERpdi5maXJzdENoaWxkICk7Ci0JCX0KLQotCQlpZiAoICghalF1ZXJ5LnN1cHBvcnQubm9DbG9uZUV2ZW50IHx8ICFqUXVlcnkuc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCkgJiYKLQkJCQkoZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBlID09PSAxMSkgJiYgIWpRdWVyeS5pc1hNTERvYyhlbGVtKSApIHsKLQotCQkJLy8gV2UgZXNjaGV3IFNpenpsZSBoZXJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zOiBodHRwOi8vanNwZXJmLmNvbS9nZXRhbGwtdnMtc2l6emxlLzIKLQkJCWRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUgKTsKLQkJCXNyY0VsZW1lbnRzID0gZ2V0QWxsKCBlbGVtICk7Ci0KLQkJCS8vIEZpeCBhbGwgSUUgY2xvbmluZyBpc3N1ZXMKLQkJCWZvciAoIGkgPSAwOyAobm9kZSA9IHNyY0VsZW1lbnRzW2ldKSAhPSBudWxsOyArK2kgKSB7Ci0JCQkJLy8gRW5zdXJlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaXMgbm90IG51bGw7IEZpeGVzICM5NTg3Ci0JCQkJaWYgKCBkZXN0RWxlbWVudHNbaV0gKSB7Ci0JCQkJCWZpeENsb25lTm9kZUlzc3Vlcyggbm9kZSwgZGVzdEVsZW1lbnRzW2ldICk7Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJLy8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZQotCQlpZiAoIGRhdGFBbmRFdmVudHMgKSB7Ci0JCQlpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkgewotCQkJCXNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7Ci0JCQkJZGVzdEVsZW1lbnRzID0gZGVzdEVsZW1lbnRzIHx8IGdldEFsbCggY2xvbmUgKTsKLQotCQkJCWZvciAoIGkgPSAwOyAobm9kZSA9IHNyY0VsZW1lbnRzW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0JCQkJCWNsb25lQ29weUV2ZW50KCBub2RlLCBkZXN0RWxlbWVudHNbaV0gKTsKLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCWNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApOwotCQkJfQotCQl9Ci0KLQkJLy8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeQotCQlkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCAic2NyaXB0IiApOwotCQlpZiAoIGRlc3RFbGVtZW50cy5sZW5ndGggPiAwICkgewotCQkJc2V0R2xvYmFsRXZhbCggZGVzdEVsZW1lbnRzLCAhaW5QYWdlICYmIGdldEFsbCggZWxlbSwgInNjcmlwdCIgKSApOwotCQl9Ci0KLQkJZGVzdEVsZW1lbnRzID0gc3JjRWxlbWVudHMgPSBub2RlID0gbnVsbDsKLQotCQkvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXQKLQkJcmV0dXJuIGNsb25lOwotCX0sCi0KLQlidWlsZEZyYWdtZW50OiBmdW5jdGlvbiggZWxlbXMsIGNvbnRleHQsIHNjcmlwdHMsIHNlbGVjdGlvbiApIHsKLQkJdmFyIGosIGVsZW0sIGNvbnRhaW5zLAotCQkJdG1wLCB0YWcsIHRib2R5LCB3cmFwLAotCQkJbCA9IGVsZW1zLmxlbmd0aCwKLQotCQkJLy8gRW5zdXJlIGEgc2FmZSBmcmFnbWVudAotCQkJc2FmZSA9IGNyZWF0ZVNhZmVGcmFnbWVudCggY29udGV4dCApLAotCi0JCQlub2RlcyA9IFtdLAotCQkJaSA9IDA7Ci0KLQkJZm9yICggOyBpIDwgbDsgaSsrICkgewotCQkJZWxlbSA9IGVsZW1zWyBpIF07Ci0KLQkJCWlmICggZWxlbSB8fCBlbGVtID09PSAwICkgewotCi0JCQkJLy8gQWRkIG5vZGVzIGRpcmVjdGx5Ci0JCQkJaWYgKCBqUXVlcnkudHlwZSggZWxlbSApID09PSAib2JqZWN0IiApIHsKLQkJCQkJalF1ZXJ5Lm1lcmdlKCBub2RlcywgZWxlbS5ub2RlVHlwZSA/IFsgZWxlbSBdIDogZWxlbSApOwotCi0JCQkJLy8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlCi0JCQkJfSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHsKLQkJCQkJbm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApICk7Ci0KLQkJCQkvLyBDb252ZXJ0IGh0bWwgaW50byBET00gbm9kZXMKLQkJCQl9IGVsc2UgewotCQkJCQl0bXAgPSB0bXAgfHwgc2FmZS5hcHBlbmRDaGlsZCggY29udGV4dC5jcmVhdGVFbGVtZW50KCJkaXYiKSApOwotCi0JCQkJCS8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb24KLQkJCQkJdGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyIiLCAiIl0gKVsxXS50b0xvd2VyQ2FzZSgpOwotCQkJCQl3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDsKLQotCQkJCQl0bXAuaW5uZXJIVE1MID0gd3JhcFsxXSArIGVsZW0ucmVwbGFjZSggcnhodG1sVGFnLCAiPCQxPjwvJDI+IiApICsgd3JhcFsyXTsKLQotCQkJCQkvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJpZ2h0IGNvbnRlbnQKLQkJCQkJaiA9IHdyYXBbMF07Ci0JCQkJCXdoaWxlICggai0tICkgewotCQkJCQkJdG1wID0gdG1wLmxhc3RDaGlsZDsKLQkJCQkJfQotCi0JCQkJCS8vIE1hbnVhbGx5IGFkZCBsZWFkaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZCBieSBJRQotCQkJCQlpZiAoICFqUXVlcnkuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiBybGVhZGluZ1doaXRlc3BhY2UudGVzdCggZWxlbSApICkgewotCQkJCQkJbm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggcmxlYWRpbmdXaGl0ZXNwYWNlLmV4ZWMoIGVsZW0gKVswXSApICk7Ci0JCQkJCX0KLQotCQkJCQkvLyBSZW1vdmUgSUUncyBhdXRvaW5zZXJ0ZWQgPHRib2R5PiBmcm9tIHRhYmxlIGZyYWdtZW50cwotCQkJCQlpZiAoICFqUXVlcnkuc3VwcG9ydC50Ym9keSApIHsKLQotCQkJCQkJLy8gU3RyaW5nIHdhcyBhIDx0YWJsZT4sICptYXkqIGhhdmUgc3B1cmlvdXMgPHRib2R5PgotCQkJCQkJZWxlbSA9IHRhZyA9PT0gInRhYmxlIiAmJiAhcnRib2R5LnRlc3QoIGVsZW0gKSA/Ci0JCQkJCQkJdG1wLmZpcnN0Q2hpbGQgOgotCi0JCQkJCQkJLy8gU3RyaW5nIHdhcyBhIGJhcmUgPHRoZWFkPiBvciA8dGZvb3Q+Ci0JCQkJCQkJd3JhcFsxXSA9PT0gIjx0YWJsZT4iICYmICFydGJvZHkudGVzdCggZWxlbSApID8KLQkJCQkJCQkJdG1wIDoKLQkJCQkJCQkJMDsKLQotCQkJCQkJaiA9IGVsZW0gJiYgZWxlbS5jaGlsZE5vZGVzLmxlbmd0aDsKLQkJCQkJCXdoaWxlICggai0tICkgewotCQkJCQkJCWlmICggalF1ZXJ5Lm5vZGVOYW1lKCAodGJvZHkgPSBlbGVtLmNoaWxkTm9kZXNbal0pLCAidGJvZHkiICkgJiYgIXRib2R5LmNoaWxkTm9kZXMubGVuZ3RoICkgewotCQkJCQkJCQllbGVtLnJlbW92ZUNoaWxkKCB0Ym9keSApOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCi0JCQkJCWpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7Ci0KLQkJCQkJLy8gRml4ICMxMjM5MiBmb3IgV2ViS2l0IGFuZCBJRSA+IDkKLQkJCQkJdG1wLnRleHRDb250ZW50ID0gIiI7Ci0KLQkJCQkJLy8gRml4ICMxMjM5MiBmb3Igb2xkSUUKLQkJCQkJd2hpbGUgKCB0bXAuZmlyc3RDaGlsZCApIHsKLQkJCQkJCXRtcC5yZW1vdmVDaGlsZCggdG1wLmZpcnN0Q2hpbGQgKTsKLQkJCQkJfQotCi0JCQkJCS8vIFJlbWVtYmVyIHRoZSB0b3AtbGV2ZWwgY29udGFpbmVyIGZvciBwcm9wZXIgY2xlYW51cAotCQkJCQl0bXAgPSBzYWZlLmxhc3RDaGlsZDsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQkvLyBGaXggIzExMzU2OiBDbGVhciBlbGVtZW50cyBmcm9tIGZyYWdtZW50Ci0JCWlmICggdG1wICkgewotCQkJc2FmZS5yZW1vdmVDaGlsZCggdG1wICk7Ci0JCX0KLQotCQkvLyBSZXNldCBkZWZhdWx0Q2hlY2tlZCBmb3IgYW55IHJhZGlvcyBhbmQgY2hlY2tib3hlcwotCQkvLyBhYm91dCB0byBiZSBhcHBlbmRlZCB0byB0aGUgRE9NIGluIElFIDYvNyAoIzgwNjApCi0JCWlmICggIWpRdWVyeS5zdXBwb3J0LmFwcGVuZENoZWNrZWQgKSB7Ci0JCQlqUXVlcnkuZ3JlcCggZ2V0QWxsKCBub2RlcywgImlucHV0IiApLCBmaXhEZWZhdWx0Q2hlY2tlZCApOwotCQl9Ci0KLQkJaSA9IDA7Ci0JCXdoaWxlICggKGVsZW0gPSBub2Rlc1sgaSsrIF0pICkgewotCi0JCQkvLyAjNDA4NyAtIElmIG9yaWdpbiBhbmQgZGVzdGluYXRpb24gZWxlbWVudHMgYXJlIHRoZSBzYW1lLCBhbmQgdGhpcyBpcwotCQkJLy8gdGhhdCBlbGVtZW50LCBkbyBub3QgZG8gYW55dGhpbmcKLQkJCWlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSAhPT0gLTEgKSB7Ci0JCQkJY29udGludWU7Ci0JCQl9Ci0KLQkJCWNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTsKLQotCQkJLy8gQXBwZW5kIHRvIGZyYWdtZW50Ci0JCQl0bXAgPSBnZXRBbGwoIHNhZmUuYXBwZW5kQ2hpbGQoIGVsZW0gKSwgInNjcmlwdCIgKTsKLQotCQkJLy8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeQotCQkJaWYgKCBjb250YWlucyApIHsKLQkJCQlzZXRHbG9iYWxFdmFsKCB0bXAgKTsKLQkJCX0KLQotCQkJLy8gQ2FwdHVyZSBleGVjdXRhYmxlcwotCQkJaWYgKCBzY3JpcHRzICkgewotCQkJCWogPSAwOwotCQkJCXdoaWxlICggKGVsZW0gPSB0bXBbIGorKyBdKSApIHsKLQkJCQkJaWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgIiIgKSApIHsKLQkJCQkJCXNjcmlwdHMucHVzaCggZWxlbSApOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJdG1wID0gbnVsbDsKLQotCQlyZXR1cm4gc2FmZTsKLQl9LAotCi0JY2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMsIC8qIGludGVybmFsICovIGFjY2VwdERhdGEgKSB7Ci0JCXZhciBlbGVtLCB0eXBlLCBpZCwgZGF0YSwKLQkJCWkgPSAwLAotCQkJaW50ZXJuYWxLZXkgPSBqUXVlcnkuZXhwYW5kbywKLQkJCWNhY2hlID0galF1ZXJ5LmNhY2hlLAotCQkJZGVsZXRlRXhwYW5kbyA9IGpRdWVyeS5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8sCi0JCQlzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWw7Ci0KLQkJZm9yICggOyAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0KLQkJCWlmICggYWNjZXB0RGF0YSB8fCBqUXVlcnkuYWNjZXB0RGF0YSggZWxlbSApICkgewotCi0JCQkJaWQgPSBlbGVtWyBpbnRlcm5hbEtleSBdOwotCQkJCWRhdGEgPSBpZCAmJiBjYWNoZVsgaWQgXTsKLQotCQkJCWlmICggZGF0YSApIHsKLQkJCQkJaWYgKCBkYXRhLmV2ZW50cyApIHsKLQkJCQkJCWZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMgKSB7Ci0JCQkJCQkJaWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7Ci0JCQkJCQkJCWpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTsKLQotCQkJCQkJCS8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWQKLQkJCQkJCQl9IGVsc2UgewotCQkJCQkJCQlqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7Ci0JCQkJCQkJfQotCQkJCQkJfQotCQkJCQl9Ci0KLQkJCQkJLy8gUmVtb3ZlIGNhY2hlIG9ubHkgaWYgaXQgd2FzIG5vdCBhbHJlYWR5IHJlbW92ZWQgYnkgalF1ZXJ5LmV2ZW50LnJlbW92ZQotCQkJCQlpZiAoIGNhY2hlWyBpZCBdICkgewotCi0JCQkJCQlkZWxldGUgY2FjaGVbIGlkIF07Ci0KLQkJCQkJCS8vIElFIGRvZXMgbm90IGFsbG93IHVzIHRvIGRlbGV0ZSBleHBhbmRvIHByb3BlcnRpZXMgZnJvbSBub2RlcywKLQkJCQkJCS8vIG5vciBkb2VzIGl0IGhhdmUgYSByZW1vdmVBdHRyaWJ1dGUgZnVuY3Rpb24gb24gRG9jdW1lbnQgbm9kZXM7Ci0JCQkJCQkvLyB3ZSBtdXN0IGhhbmRsZSBhbGwgb2YgdGhlc2UgY2FzZXMKLQkJCQkJCWlmICggZGVsZXRlRXhwYW5kbyApIHsKLQkJCQkJCQlkZWxldGUgZWxlbVsgaW50ZXJuYWxLZXkgXTsKLQotCQkJCQkJfSBlbHNlIGlmICggdHlwZW9mIGVsZW0ucmVtb3ZlQXR0cmlidXRlICE9PSBjb3JlX3N0cnVuZGVmaW5lZCApIHsKLQkJCQkJCQllbGVtLnJlbW92ZUF0dHJpYnV0ZSggaW50ZXJuYWxLZXkgKTsKLQotCQkJCQkJfSBlbHNlIHsKLQkJCQkJCQllbGVtWyBpbnRlcm5hbEtleSBdID0gbnVsbDsKLQkJCQkJCX0KLQotCQkJCQkJY29yZV9kZWxldGVkSWRzLnB1c2goIGlkICk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci19KTsKLXZhciBpZnJhbWUsIGdldFN0eWxlcywgY3VyQ1NTLAotCXJhbHBoYSA9IC9hbHBoYVwoW14pXSpcKS9pLAotCXJvcGFjaXR5ID0gL29wYWNpdHlccyo9XHMqKFteKV0qKS8sCi0JcnBvc2l0aW9uID0gL14odG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KSQvLAotCS8vIHN3YXBwYWJsZSBpZiBkaXNwbGF5IGlzIG5vbmUgb3Igc3RhcnRzIHdpdGggdGFibGUgZXhjZXB0ICJ0YWJsZSIsICJ0YWJsZS1jZWxsIiwgb3IgInRhYmxlLWNhcHRpb24iCi0JLy8gc2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5Ci0JcmRpc3BsYXlzd2FwID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLAotCXJtYXJnaW4gPSAvXm1hcmdpbi8sCi0Jcm51bXNwbGl0ID0gbmV3IFJlZ0V4cCggIl4oIiArIGNvcmVfcG51bSArICIpKC4qKSQiLCAiaSIgKSwKLQlybnVtbm9ucHggPSBuZXcgUmVnRXhwKCAiXigiICsgY29yZV9wbnVtICsgIikoPyFweClbYS16JV0rJCIsICJpIiApLAotCXJyZWxOdW0gPSBuZXcgUmVnRXhwKCAiXihbKy1dKT0oIiArIGNvcmVfcG51bSArICIpIiwgImkiICksCi0JZWxlbWRpc3BsYXkgPSB7IEJPRFk6ICJibG9jayIgfSwKLQotCWNzc1Nob3cgPSB7IHBvc2l0aW9uOiAiYWJzb2x1dGUiLCB2aXNpYmlsaXR5OiAiaGlkZGVuIiwgZGlzcGxheTogImJsb2NrIiB9LAotCWNzc05vcm1hbFRyYW5zZm9ybSA9IHsKLQkJbGV0dGVyU3BhY2luZzogMCwKLQkJZm9udFdlaWdodDogNDAwCi0JfSwKLQotCWNzc0V4cGFuZCA9IFsgIlRvcCIsICJSaWdodCIsICJCb3R0b20iLCAiTGVmdCIgXSwKLQljc3NQcmVmaXhlcyA9IFsgIldlYmtpdCIsICJPIiwgIk1veiIsICJtcyIgXTsKLQotLy8gcmV0dXJuIGEgY3NzIHByb3BlcnR5IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eQotZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUoIHN0eWxlLCBuYW1lICkgewotCi0JLy8gc2hvcnRjdXQgZm9yIG5hbWVzIHRoYXQgYXJlIG5vdCB2ZW5kb3IgcHJlZml4ZWQKLQlpZiAoIG5hbWUgaW4gc3R5bGUgKSB7Ci0JCXJldHVybiBuYW1lOwotCX0KLQotCS8vIGNoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXMKLQl2YXIgY2FwTmFtZSA9IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpLAotCQlvcmlnTmFtZSA9IG5hbWUsCi0JCWkgPSBjc3NQcmVmaXhlcy5sZW5ndGg7Ci0KLQl3aGlsZSAoIGktLSApIHsKLQkJbmFtZSA9IGNzc1ByZWZpeGVzWyBpIF0gKyBjYXBOYW1lOwotCQlpZiAoIG5hbWUgaW4gc3R5bGUgKSB7Ci0JCQlyZXR1cm4gbmFtZTsKLQkJfQotCX0KLQotCXJldHVybiBvcmlnTmFtZTsKLX0KLQotZnVuY3Rpb24gaXNIaWRkZW4oIGVsZW0sIGVsICkgewotCS8vIGlzSGlkZGVuIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIGpRdWVyeSNmaWx0ZXIgZnVuY3Rpb247Ci0JLy8gaW4gdGhhdCBjYXNlLCBlbGVtZW50IHdpbGwgYmUgc2Vjb25kIGFyZ3VtZW50Ci0JZWxlbSA9IGVsIHx8IGVsZW07Ci0JcmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApID09PSAibm9uZSIgfHwgIWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7Ci19Ci0KLWZ1bmN0aW9uIHNob3dIaWRlKCBlbGVtZW50cywgc2hvdyApIHsKLQl2YXIgZGlzcGxheSwgZWxlbSwgaGlkZGVuLAotCQl2YWx1ZXMgPSBbXSwKLQkJaW5kZXggPSAwLAotCQlsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7Ci0KLQlmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewotCQllbGVtID0gZWxlbWVudHNbIGluZGV4IF07Ci0JCWlmICggIWVsZW0uc3R5bGUgKSB7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCXZhbHVlc1sgaW5kZXggXSA9IGpRdWVyeS5fZGF0YSggZWxlbSwgIm9sZGRpc3BsYXkiICk7Ci0JCWRpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXk7Ci0JCWlmICggc2hvdyApIHsKLQkJCS8vIFJlc2V0IHRoZSBpbmxpbmUgZGlzcGxheSBvZiB0aGlzIGVsZW1lbnQgdG8gbGVhcm4gaWYgaXQgaXMKLQkJCS8vIGJlaW5nIGhpZGRlbiBieSBjYXNjYWRlZCBydWxlcyBvciBub3QKLQkJCWlmICggIXZhbHVlc1sgaW5kZXggXSAmJiBkaXNwbGF5ID09PSAibm9uZSIgKSB7Ci0JCQkJZWxlbS5zdHlsZS5kaXNwbGF5ID0gIiI7Ci0JCQl9Ci0KLQkJCS8vIFNldCBlbGVtZW50cyB3aGljaCBoYXZlIGJlZW4gb3ZlcnJpZGRlbiB3aXRoIGRpc3BsYXk6IG5vbmUKLQkJCS8vIGluIGEgc3R5bGVzaGVldCB0byB3aGF0ZXZlciB0aGUgZGVmYXVsdCBicm93c2VyIHN0eWxlIGlzCi0JCQkvLyBmb3Igc3VjaCBhbiBlbGVtZW50Ci0JCQlpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gIiIgJiYgaXNIaWRkZW4oIGVsZW0gKSApIHsKLQkJCQl2YWx1ZXNbIGluZGV4IF0gPSBqUXVlcnkuX2RhdGEoIGVsZW0sICJvbGRkaXNwbGF5IiwgY3NzX2RlZmF1bHREaXNwbGF5KGVsZW0ubm9kZU5hbWUpICk7Ci0JCQl9Ci0JCX0gZWxzZSB7Ci0KLQkJCWlmICggIXZhbHVlc1sgaW5kZXggXSApIHsKLQkJCQloaWRkZW4gPSBpc0hpZGRlbiggZWxlbSApOwotCi0JCQkJaWYgKCBkaXNwbGF5ICYmIGRpc3BsYXkgIT09ICJub25lIiB8fCAhaGlkZGVuICkgewotCQkJCQlqUXVlcnkuX2RhdGEoIGVsZW0sICJvbGRkaXNwbGF5IiwgaGlkZGVuID8gZGlzcGxheSA6IGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApICk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JLy8gU2V0IHRoZSBkaXNwbGF5IG9mIG1vc3Qgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AKLQkvLyB0byBhdm9pZCB0aGUgY29uc3RhbnQgcmVmbG93Ci0JZm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHsKLQkJZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdOwotCQlpZiAoICFlbGVtLnN0eWxlICkgewotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCAhc2hvdyB8fCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICJub25lIiB8fCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09ICIiICkgewotCQkJZWxlbS5zdHlsZS5kaXNwbGF5ID0gc2hvdyA/IHZhbHVlc1sgaW5kZXggXSB8fCAiIiA6ICJub25lIjsKLQkJfQotCX0KLQotCXJldHVybiBlbGVtZW50czsKLX0KLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0JY3NzOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7Ci0JCXJldHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7Ci0JCQl2YXIgbGVuLCBzdHlsZXMsCi0JCQkJbWFwID0ge30sCi0JCQkJaSA9IDA7Ci0KLQkJCWlmICggalF1ZXJ5LmlzQXJyYXkoIG5hbWUgKSApIHsKLQkJCQlzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKTsKLQkJCQlsZW4gPSBuYW1lLmxlbmd0aDsKLQotCQkJCWZvciAoIDsgaSA8IGxlbjsgaSsrICkgewotCQkJCQltYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7Ci0JCQkJfQotCi0JCQkJcmV0dXJuIG1hcDsKLQkJCX0KLQotCQkJcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPwotCQkJCWpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6Ci0JCQkJalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApOwotCQl9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTsKLQl9LAotCXNob3c6IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gc2hvd0hpZGUoIHRoaXMsIHRydWUgKTsKLQl9LAotCWhpZGU6IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTsKLQl9LAotCXRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkgewotCQl2YXIgYm9vbCA9IHR5cGVvZiBzdGF0ZSA9PT0gImJvb2xlYW4iOwotCi0JCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQlpZiAoIGJvb2wgPyBzdGF0ZSA6IGlzSGlkZGVuKCB0aGlzICkgKSB7Ci0JCQkJalF1ZXJ5KCB0aGlzICkuc2hvdygpOwotCQkJfSBlbHNlIHsKLQkJCQlqUXVlcnkoIHRoaXMgKS5oaWRlKCk7Ci0JCQl9Ci0JCX0pOwotCX0KLX0pOwotCi1qUXVlcnkuZXh0ZW5kKHsKLQkvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQKLQkvLyBiZWhhdmlvciBvZiBnZXR0aW5nIGFuZCBzZXR0aW5nIGEgc3R5bGUgcHJvcGVydHkKLQljc3NIb29rczogewotCQlvcGFjaXR5OiB7Ci0JCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKLQkJCQlpZiAoIGNvbXB1dGVkICkgewotCQkJCQkvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eQotCQkJCQl2YXIgcmV0ID0gY3VyQ1NTKCBlbGVtLCAib3BhY2l0eSIgKTsKLQkJCQkJcmV0dXJuIHJldCA9PT0gIiIgPyAiMSIgOiByZXQ7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfSwKLQotCS8vIEV4Y2x1ZGUgdGhlIGZvbGxvd2luZyBjc3MgcHJvcGVydGllcyB0byBhZGQgcHgKLQljc3NOdW1iZXI6IHsKLQkJImNvbHVtbkNvdW50IjogdHJ1ZSwKLQkJImZpbGxPcGFjaXR5IjogdHJ1ZSwKLQkJImZvbnRXZWlnaHQiOiB0cnVlLAotCQkibGluZUhlaWdodCI6IHRydWUsCi0JCSJvcGFjaXR5IjogdHJ1ZSwKLQkJIm9ycGhhbnMiOiB0cnVlLAotCQkid2lkb3dzIjogdHJ1ZSwKLQkJInpJbmRleCI6IHRydWUsCi0JCSJ6b29tIjogdHJ1ZQotCX0sCi0KLQkvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlCi0JLy8gc2V0dGluZyBvciBnZXR0aW5nIHRoZSB2YWx1ZQotCWNzc1Byb3BzOiB7Ci0JCS8vIG5vcm1hbGl6ZSBmbG9hdCBjc3MgcHJvcGVydHkKLQkJImZsb2F0IjogalF1ZXJ5LnN1cHBvcnQuY3NzRmxvYXQgPyAiY3NzRmxvYXQiIDogInN0eWxlRmxvYXQiCi0JfSwKLQotCS8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlCi0Jc3R5bGU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSwgZXh0cmEgKSB7Ci0JCS8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2RlcwotCQlpZiAoICFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8fCAhZWxlbS5zdHlsZSApIHsKLQkJCXJldHVybjsKLQkJfQotCi0JCS8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZQotCQl2YXIgcmV0LCB0eXBlLCBob29rcywKLQkJCW9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApLAotCQkJc3R5bGUgPSBlbGVtLnN0eWxlOwotCi0JCW5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gfHwgKCBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggc3R5bGUsIG9yaWdOYW1lICkgKTsKLQotCQkvLyBnZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uCi0JCS8vIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIHZlcnNpb24KLQkJaG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07Ci0KLQkJLy8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBhIHZhbHVlCi0JCWlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKLQkJCXR5cGUgPSB0eXBlb2YgdmFsdWU7Ci0KLQkJCS8vIGNvbnZlcnQgcmVsYXRpdmUgbnVtYmVyIHN0cmluZ3MgKCs9IG9yIC09KSB0byByZWxhdGl2ZSBudW1iZXJzLiAjNzM0NQotCQkJaWYgKCB0eXBlID09PSAic3RyaW5nIiAmJiAocmV0ID0gcnJlbE51bS5leGVjKCB2YWx1ZSApKSApIHsKLQkJCQl2YWx1ZSA9ICggcmV0WzFdICsgMSApICogcmV0WzJdICsgcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApICk7Ci0JCQkJLy8gRml4ZXMgYnVnICM5MjM3Ci0JCQkJdHlwZSA9ICJudW1iZXIiOwotCQkJfQotCi0JCQkvLyBNYWtlIHN1cmUgdGhhdCBOYU4gYW5kIG51bGwgdmFsdWVzIGFyZW4ndCBzZXQuIFNlZTogIzcxMTYKLQkJCWlmICggdmFsdWUgPT0gbnVsbCB8fCB0eXBlID09PSAibnVtYmVyIiAmJiBpc05hTiggdmFsdWUgKSApIHsKLQkJCQlyZXR1cm47Ci0JCQl9Ci0KLQkJCS8vIElmIGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCAncHgnIHRvIHRoZSAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKQotCQkJaWYgKCB0eXBlID09PSAibnVtYmVyIiAmJiAhalF1ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSApIHsKLQkJCQl2YWx1ZSArPSAicHgiOwotCQkJfQotCi0JCQkvLyBGaXhlcyAjODkwOCwgaXQgY2FuIGJlIGRvbmUgbW9yZSBjb3JyZWN0bHkgYnkgc3BlY2lmaW5nIHNldHRlcnMgaW4gY3NzSG9va3MsCi0JCQkvLyBidXQgaXQgd291bGQgbWVhbiB0byBkZWZpbmUgZWlnaHQgKGZvciBldmVyeSBwcm9ibGVtYXRpYyBwcm9wZXJ0eSkgaWRlbnRpY2FsIGZ1bmN0aW9ucwotCQkJaWYgKCAhalF1ZXJ5LnN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSAiIiAmJiBuYW1lLmluZGV4T2YoImJhY2tncm91bmQiKSA9PT0gMCApIHsKLQkJCQlzdHlsZVsgbmFtZSBdID0gImluaGVyaXQiOwotCQkJfQotCi0JCQkvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWUKLQkJCWlmICggIWhvb2tzIHx8ICEoInNldCIgaW4gaG9va3MpIHx8ICh2YWx1ZSA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIGV4dHJhICkpICE9PSB1bmRlZmluZWQgKSB7Ci0KLQkJCQkvLyBXcmFwcGVkIHRvIHByZXZlbnQgSUUgZnJvbSB0aHJvd2luZyBlcnJvcnMgd2hlbiAnaW52YWxpZCcgdmFsdWVzIGFyZSBwcm92aWRlZAotCQkJCS8vIEZpeGVzIGJ1ZyAjNTUwOQotCQkJCXRyeSB7Ci0JCQkJCXN0eWxlWyBuYW1lIF0gPSB2YWx1ZTsKLQkJCQl9IGNhdGNoKGUpIHt9Ci0JCQl9Ci0KLQkJfSBlbHNlIHsKLQkJCS8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZQotCQkJaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSkgIT09IHVuZGVmaW5lZCApIHsKLQkJCQlyZXR1cm4gcmV0OwotCQkJfQotCi0JCQkvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHN0eWxlIG9iamVjdAotCQkJcmV0dXJuIHN0eWxlWyBuYW1lIF07Ci0JCX0KLQl9LAotCi0JY3NzOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxlcyApIHsKLQkJdmFyIG51bSwgdmFsLCBob29rcywKLQkJCW9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApOwotCi0JCS8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZQotCQluYW1lID0galF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8ICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIGVsZW0uc3R5bGUsIG9yaWdOYW1lICkgKTsKLQotCQkvLyBnZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uCi0JCS8vIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIHZlcnNpb24KLQkJaG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07Ci0KLQkJLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmUKLQkJaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyApIHsKLQkJCXZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwgZXh0cmEgKTsKLQkJfQotCi0JCS8vIE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0Ci0JCWlmICggdmFsID09PSB1bmRlZmluZWQgKSB7Ci0JCQl2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0eWxlcyApOwotCQl9Ci0KLQkJLy9jb252ZXJ0ICJub3JtYWwiIHRvIGNvbXB1dGVkIHZhbHVlCi0JCWlmICggdmFsID09PSAibm9ybWFsIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHsKLQkJCXZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdOwotCQl9Ci0KLQkJLy8gUmV0dXJuLCBjb252ZXJ0aW5nIHRvIG51bWJlciBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpYwotCQlpZiAoIGV4dHJhID09PSAiIiB8fCBleHRyYSApIHsKLQkJCW51bSA9IHBhcnNlRmxvYXQoIHZhbCApOwotCQkJcmV0dXJuIGV4dHJhID09PSB0cnVlIHx8IGpRdWVyeS5pc051bWVyaWMoIG51bSApID8gbnVtIHx8IDAgOiB2YWw7Ci0JCX0KLQkJcmV0dXJuIHZhbDsKLQl9LAotCi0JLy8gQSBtZXRob2QgZm9yIHF1aWNrbHkgc3dhcHBpbmcgaW4vb3V0IENTUyBwcm9wZXJ0aWVzIHRvIGdldCBjb3JyZWN0IGNhbGN1bGF0aW9ucwotCXN3YXA6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjaywgYXJncyApIHsKLQkJdmFyIHJldCwgbmFtZSwKLQkJCW9sZCA9IHt9OwotCi0JCS8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lcwotCQlmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7Ci0JCQlvbGRbIG5hbWUgXSA9IGVsZW0uc3R5bGVbIG5hbWUgXTsKLQkJCWVsZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTsKLQkJfQotCi0JCXJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVtLCBhcmdzIHx8IFtdICk7Ci0KLQkJLy8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVzCi0JCWZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHsKLQkJCWVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdOwotCQl9Ci0KLQkJcmV0dXJuIHJldDsKLQl9Ci19KTsKLQotLy8gTk9URTogd2UndmUgaW5jbHVkZWQgdGhlICJ3aW5kb3ciIGluIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlCi0vLyBiZWNhdXNlIGpzZG9tIG9uIG5vZGUuanMgd2lsbCBicmVhayB3aXRob3V0IGl0LgotaWYgKCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSApIHsKLQlnZXRTdHlsZXMgPSBmdW5jdGlvbiggZWxlbSApIHsKLQkJcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtLCBudWxsICk7Ci0JfTsKLQotCWN1ckNTUyA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBfY29tcHV0ZWQgKSB7Ci0JCXZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLAotCQkJY29tcHV0ZWQgPSBfY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICksCi0KLQkJCS8vIGdldFByb3BlcnR5VmFsdWUgaXMgb25seSBuZWVkZWQgZm9yIC5jc3MoJ2ZpbHRlcicpIGluIElFOSwgc2VlICMxMjUzNwotCQkJcmV0ID0gY29tcHV0ZWQgPyBjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICkgfHwgY29tcHV0ZWRbIG5hbWUgXSA6IHVuZGVmaW5lZCwKLQkJCXN0eWxlID0gZWxlbS5zdHlsZTsKLQotCQlpZiAoIGNvbXB1dGVkICkgewotCi0JCQlpZiAoIHJldCA9PT0gIiIgJiYgIWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgKSB7Ci0JCQkJcmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7Ci0JCQl9Ci0KLQkJCS8vIEEgdHJpYnV0ZSB0byB0aGUgImF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHMiCi0JCQkvLyBDaHJvbWUgPCAxNyBhbmQgU2FmYXJpIDUuMCB1c2VzICJjb21wdXRlZCB2YWx1ZSIgaW5zdGVhZCBvZiAidXNlZCB2YWx1ZSIgZm9yIG1hcmdpbi1yaWdodAotCQkJLy8gU2FmYXJpIDUuMS43IChhdCBsZWFzdCkgcmV0dXJucyBwZXJjZW50YWdlIGZvciBhIGxhcmdlciBzZXQgb2YgdmFsdWVzLCBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzCi0JCQkvLyB0aGlzIGlzIGFnYWluc3QgdGhlIENTU09NIGRyYWZ0IHNwZWM6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXMKLQkJCWlmICggcm51bW5vbnB4LnRlc3QoIHJldCApICYmIHJtYXJnaW4udGVzdCggbmFtZSApICkgewotCi0JCQkJLy8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlcwotCQkJCXdpZHRoID0gc3R5bGUud2lkdGg7Ci0JCQkJbWluV2lkdGggPSBzdHlsZS5taW5XaWR0aDsKLQkJCQltYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoOwotCi0JCQkJLy8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dAotCQkJCXN0eWxlLm1pbldpZHRoID0gc3R5bGUubWF4V2lkdGggPSBzdHlsZS53aWR0aCA9IHJldDsKLQkJCQlyZXQgPSBjb21wdXRlZC53aWR0aDsKLQotCQkJCS8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXMKLQkJCQlzdHlsZS53aWR0aCA9IHdpZHRoOwotCQkJCXN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7Ci0JCQkJc3R5bGUubWF4V2lkdGggPSBtYXhXaWR0aDsKLQkJCX0KLQkJfQotCi0JCXJldHVybiByZXQ7Ci0JfTsKLX0gZWxzZSBpZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUgKSB7Ci0JZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCXJldHVybiBlbGVtLmN1cnJlbnRTdHlsZTsKLQl9OwotCi0JY3VyQ1NTID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIF9jb21wdXRlZCApIHsKLQkJdmFyIGxlZnQsIHJzLCByc0xlZnQsCi0JCQljb21wdXRlZCA9IF9jb21wdXRlZCB8fCBnZXRTdHlsZXMoIGVsZW0gKSwKLQkJCXJldCA9IGNvbXB1dGVkID8gY29tcHV0ZWRbIG5hbWUgXSA6IHVuZGVmaW5lZCwKLQkJCXN0eWxlID0gZWxlbS5zdHlsZTsKLQotCQkvLyBBdm9pZCBzZXR0aW5nIHJldCB0byBlbXB0eSBzdHJpbmcgaGVyZQotCQkvLyBzbyB3ZSBkb24ndCBkZWZhdWx0IHRvIGF1dG8KLQkJaWYgKCByZXQgPT0gbnVsbCAmJiBzdHlsZSAmJiBzdHlsZVsgbmFtZSBdICkgewotCQkJcmV0ID0gc3R5bGVbIG5hbWUgXTsKLQkJfQotCi0JCS8vIEZyb20gdGhlIGF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHMKLQkJLy8gaHR0cDovL2VyaWsuZWFlLm5ldC9hcmNoaXZlcy8yMDA3LzA3LzI3LzE4LjU0LjE1LyNjb21tZW50LTEwMjI5MQotCi0JCS8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggYSByZWd1bGFyIHBpeGVsIG51bWJlcgotCQkvLyBidXQgYSBudW1iZXIgdGhhdCBoYXMgYSB3ZWlyZCBlbmRpbmcsIHdlIG5lZWQgdG8gY29udmVydCBpdCB0byBwaXhlbHMKLQkJLy8gYnV0IG5vdCBwb3NpdGlvbiBjc3MgYXR0cmlidXRlcywgYXMgdGhvc2UgYXJlIHByb3BvcnRpb25hbCB0byB0aGUgcGFyZW50IGVsZW1lbnQgaW5zdGVhZAotCQkvLyBhbmQgd2UgY2FuJ3QgbWVhc3VyZSB0aGUgcGFyZW50IGluc3RlYWQgYmVjYXVzZSBpdCBtaWdodCB0cmlnZ2VyIGEgInN0YWNraW5nIGRvbGxzIiBwcm9ibGVtCi0JCWlmICggcm51bW5vbnB4LnRlc3QoIHJldCApICYmICFycG9zaXRpb24udGVzdCggbmFtZSApICkgewotCi0JCQkvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzCi0JCQlsZWZ0ID0gc3R5bGUubGVmdDsKLQkJCXJzID0gZWxlbS5ydW50aW1lU3R5bGU7Ci0JCQlyc0xlZnQgPSBycyAmJiBycy5sZWZ0OwotCi0JCQkvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0Ci0JCQlpZiAoIHJzTGVmdCApIHsKLQkJCQlycy5sZWZ0ID0gZWxlbS5jdXJyZW50U3R5bGUubGVmdDsKLQkJCX0KLQkJCXN0eWxlLmxlZnQgPSBuYW1lID09PSAiZm9udFNpemUiID8gIjFlbSIgOiByZXQ7Ci0JCQlyZXQgPSBzdHlsZS5waXhlbExlZnQgKyAicHgiOwotCi0JCQkvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVzCi0JCQlzdHlsZS5sZWZ0ID0gbGVmdDsKLQkJCWlmICggcnNMZWZ0ICkgewotCQkJCXJzLmxlZnQgPSByc0xlZnQ7Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gcmV0ID09PSAiIiA/ICJhdXRvIiA6IHJldDsKLQl9OwotfQotCi1mdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICkgewotCXZhciBtYXRjaGVzID0gcm51bXNwbGl0LmV4ZWMoIHZhbHVlICk7Ci0JcmV0dXJuIG1hdGNoZXMgPwotCQkvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCAic3VidHJhY3QiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3MKLQkJTWF0aC5tYXgoIDAsIG1hdGNoZXNbIDEgXSAtICggc3VidHJhY3QgfHwgMCApICkgKyAoIG1hdGNoZXNbIDIgXSB8fCAicHgiICkgOgotCQl2YWx1ZTsKLX0KLQotZnVuY3Rpb24gYXVnbWVudFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhLCBpc0JvcmRlckJveCwgc3R5bGVzICkgewotCXZhciBpID0gZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyAiYm9yZGVyIiA6ICJjb250ZW50IiApID8KLQkJLy8gSWYgd2UgYWxyZWFkeSBoYXZlIHRoZSByaWdodCBtZWFzdXJlbWVudCwgYXZvaWQgYXVnbWVudGF0aW9uCi0JCTQgOgotCQkvLyBPdGhlcndpc2UgaW5pdGlhbGl6ZSBmb3IgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBwcm9wZXJ0aWVzCi0JCW5hbWUgPT09ICJ3aWR0aCIgPyAxIDogMCwKLQotCQl2YWwgPSAwOwotCi0JZm9yICggOyBpIDwgNDsgaSArPSAyICkgewotCQkvLyBib3RoIGJveCBtb2RlbHMgZXhjbHVkZSBtYXJnaW4sIHNvIGFkZCBpdCBpZiB3ZSB3YW50IGl0Ci0JCWlmICggZXh0cmEgPT09ICJtYXJnaW4iICkgewotCQkJdmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIGV4dHJhICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApOwotCQl9Ci0KLQkJaWYgKCBpc0JvcmRlckJveCApIHsKLQkJCS8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFkZGluZywgc28gcmVtb3ZlIGl0IGlmIHdlIHdhbnQgY29udGVudAotCQkJaWYgKCBleHRyYSA9PT0gImNvbnRlbnQiICkgewotCQkJCXZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCAicGFkZGluZyIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7Ci0JCQl9Ci0KLQkJCS8vIGF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGJvcmRlciBub3IgbWFyZ2luLCBzbyByZW1vdmUgYm9yZGVyCi0JCQlpZiAoIGV4dHJhICE9PSAibWFyZ2luIiApIHsKLQkJCQl2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyBjc3NFeHBhbmRbIGkgXSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOwotCQkJfQotCQl9IGVsc2UgewotCQkJLy8gYXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCwgc28gYWRkIHBhZGRpbmcKLQkJCXZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCAicGFkZGluZyIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7Ci0KLQkJCS8vIGF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQgbm9yIHBhZGRpbmcsIHNvIGFkZCBib3JkZXIKLQkJCWlmICggZXh0cmEgIT09ICJwYWRkaW5nIiApIHsKLQkJCQl2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyBjc3NFeHBhbmRbIGkgXSArICJXaWR0aCIsIHRydWUsIHN0eWxlcyApOwotCQkJfQotCQl9Ci0JfQotCi0JcmV0dXJuIHZhbDsKLX0KLQotZnVuY3Rpb24gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKSB7Ci0KLQkvLyBTdGFydCB3aXRoIG9mZnNldCBwcm9wZXJ0eSwgd2hpY2ggaXMgZXF1aXZhbGVudCB0byB0aGUgYm9yZGVyLWJveCB2YWx1ZQotCXZhciB2YWx1ZUlzQm9yZGVyQm94ID0gdHJ1ZSwKLQkJdmFsID0gbmFtZSA9PT0gIndpZHRoIiA/IGVsZW0ub2Zmc2V0V2lkdGggOiBlbGVtLm9mZnNldEhlaWdodCwKLQkJc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksCi0JCWlzQm9yZGVyQm94ID0galF1ZXJ5LnN1cHBvcnQuYm94U2l6aW5nICYmIGpRdWVyeS5jc3MoIGVsZW0sICJib3hTaXppbmciLCBmYWxzZSwgc3R5bGVzICkgPT09ICJib3JkZXItYm94IjsKLQotCS8vIHNvbWUgbm9uLWh0bWwgZWxlbWVudHMgcmV0dXJuIHVuZGVmaW5lZCBmb3Igb2Zmc2V0V2lkdGgsIHNvIGNoZWNrIGZvciBudWxsL3VuZGVmaW5lZAotCS8vIHN2ZyAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTI4NQotCS8vIE1hdGhNTCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTY2OAotCWlmICggdmFsIDw9IDAgfHwgdmFsID09IG51bGwgKSB7Ci0JCS8vIEZhbGwgYmFjayB0byBjb21wdXRlZCB0aGVuIHVuY29tcHV0ZWQgY3NzIGlmIG5lY2Vzc2FyeQotCQl2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0eWxlcyApOwotCQlpZiAoIHZhbCA8IDAgfHwgdmFsID09IG51bGwgKSB7Ci0JCQl2YWwgPSBlbGVtLnN0eWxlWyBuYW1lIF07Ci0JCX0KLQotCQkvLyBDb21wdXRlZCB1bml0IGlzIG5vdCBwaXhlbHMuIFN0b3AgaGVyZSBhbmQgcmV0dXJuLgotCQlpZiAoIHJudW1ub25weC50ZXN0KHZhbCkgKSB7Ci0JCQlyZXR1cm4gdmFsOwotCQl9Ci0KLQkJLy8gd2UgbmVlZCB0aGUgY2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXMKLQkJLy8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZQotCQl2YWx1ZUlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3ggJiYgKCBqUXVlcnkuc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSB8fCB2YWwgPT09IGVsZW0uc3R5bGVbIG5hbWUgXSApOwotCi0JCS8vIE5vcm1hbGl6ZSAiIiwgYXV0bywgYW5kIHByZXBhcmUgZm9yIGV4dHJhCi0JCXZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7Ci0JfQotCi0JLy8gdXNlIHRoZSBhY3RpdmUgYm94LXNpemluZyBtb2RlbCB0byBhZGQvc3VidHJhY3QgaXJyZWxldmFudCBzdHlsZXMKLQlyZXR1cm4gKCB2YWwgKwotCQlhdWdtZW50V2lkdGhPckhlaWdodCgKLQkJCWVsZW0sCi0JCQluYW1lLAotCQkJZXh0cmEgfHwgKCBpc0JvcmRlckJveCA/ICJib3JkZXIiIDogImNvbnRlbnQiICksCi0JCQl2YWx1ZUlzQm9yZGVyQm94LAotCQkJc3R5bGVzCi0JCSkKLQkpICsgInB4IjsKLX0KLQotLy8gVHJ5IHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBkaXNwbGF5IHZhbHVlIG9mIGFuIGVsZW1lbnQKLWZ1bmN0aW9uIGNzc19kZWZhdWx0RGlzcGxheSggbm9kZU5hbWUgKSB7Ci0JdmFyIGRvYyA9IGRvY3VtZW50LAotCQlkaXNwbGF5ID0gZWxlbWRpc3BsYXlbIG5vZGVOYW1lIF07Ci0KLQlpZiAoICFkaXNwbGF5ICkgewotCQlkaXNwbGF5ID0gYWN0dWFsRGlzcGxheSggbm9kZU5hbWUsIGRvYyApOwotCi0JCS8vIElmIHRoZSBzaW1wbGUgd2F5IGZhaWxzLCByZWFkIGZyb20gaW5zaWRlIGFuIGlmcmFtZQotCQlpZiAoIGRpc3BsYXkgPT09ICJub25lIiB8fCAhZGlzcGxheSApIHsKLQkJCS8vIFVzZSB0aGUgYWxyZWFkeS1jcmVhdGVkIGlmcmFtZSBpZiBwb3NzaWJsZQotCQkJaWZyYW1lID0gKCBpZnJhbWUgfHwKLQkJCQlqUXVlcnkoIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKQotCQkJCS5jc3MoICJjc3NUZXh0IiwgImRpc3BsYXk6YmxvY2sgIWltcG9ydGFudCIgKQotCQkJKS5hcHBlbmRUbyggZG9jLmRvY3VtZW50RWxlbWVudCApOwotCi0JCQkvLyBBbHdheXMgd3JpdGUgYSBuZXcgSFRNTCBza2VsZXRvbiBzbyBXZWJraXQgYW5kIEZpcmVmb3ggZG9uJ3QgY2hva2Ugb24gcmV1c2UKLQkJCWRvYyA9ICggaWZyYW1lWzBdLmNvbnRlbnRXaW5kb3cgfHwgaWZyYW1lWzBdLmNvbnRlbnREb2N1bWVudCApLmRvY3VtZW50OwotCQkJZG9jLndyaXRlKCI8IWRvY3R5cGUgaHRtbD48aHRtbD48Ym9keT4iKTsKLQkJCWRvYy5jbG9zZSgpOwotCi0JCQlkaXNwbGF5ID0gYWN0dWFsRGlzcGxheSggbm9kZU5hbWUsIGRvYyApOwotCQkJaWZyYW1lLmRldGFjaCgpOwotCQl9Ci0KLQkJLy8gU3RvcmUgdGhlIGNvcnJlY3QgZGVmYXVsdCBkaXNwbGF5Ci0JCWVsZW1kaXNwbGF5WyBub2RlTmFtZSBdID0gZGlzcGxheTsKLQl9Ci0KLQlyZXR1cm4gZGlzcGxheTsKLX0KLQotLy8gQ2FsbGVkIE9OTFkgZnJvbSB3aXRoaW4gY3NzX2RlZmF1bHREaXNwbGF5Ci1mdW5jdGlvbiBhY3R1YWxEaXNwbGF5KCBuYW1lLCBkb2MgKSB7Ci0JdmFyIGVsZW0gPSBqUXVlcnkoIGRvYy5jcmVhdGVFbGVtZW50KCBuYW1lICkgKS5hcHBlbmRUbyggZG9jLmJvZHkgKSwKLQkJZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW1bMF0sICJkaXNwbGF5IiApOwotCWVsZW0ucmVtb3ZlKCk7Ci0JcmV0dXJuIGRpc3BsYXk7Ci19Ci0KLWpRdWVyeS5lYWNoKFsgImhlaWdodCIsICJ3aWR0aCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0JalF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gPSB7Ci0JCWdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHsKLQkJCWlmICggY29tcHV0ZWQgKSB7Ci0JCQkJLy8gY2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtCi0JCQkJLy8gaG93ZXZlciwgaXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIHRoaXMKLQkJCQlyZXR1cm4gZWxlbS5vZmZzZXRXaWR0aCA9PT0gMCAmJiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICkgKSA/Ci0JCQkJCWpRdWVyeS5zd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHsKLQkJCQkJCXJldHVybiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApOwotCQkJCQl9KSA6Ci0JCQkJCWdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7Ci0JCQl9Ci0JCX0sCi0KLQkJc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIGV4dHJhICkgewotCQkJdmFyIHN0eWxlcyA9IGV4dHJhICYmIGdldFN0eWxlcyggZWxlbSApOwotCQkJcmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgZXh0cmEgPwotCQkJCWF1Z21lbnRXaWR0aE9ySGVpZ2h0KAotCQkJCQllbGVtLAotCQkJCQluYW1lLAotCQkJCQlleHRyYSwKLQkJCQkJalF1ZXJ5LnN1cHBvcnQuYm94U2l6aW5nICYmIGpRdWVyeS5jc3MoIGVsZW0sICJib3hTaXppbmciLCBmYWxzZSwgc3R5bGVzICkgPT09ICJib3JkZXItYm94IiwKLQkJCQkJc3R5bGVzCi0JCQkJKSA6IDAKLQkJCSk7Ci0JCX0KLQl9OwotfSk7Ci0KLWlmICggIWpRdWVyeS5zdXBwb3J0Lm9wYWNpdHkgKSB7Ci0JalF1ZXJ5LmNzc0hvb2tzLm9wYWNpdHkgPSB7Ci0JCWdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewotCQkJLy8gSUUgdXNlcyBmaWx0ZXJzIGZvciBvcGFjaXR5Ci0JCQlyZXR1cm4gcm9wYWNpdHkudGVzdCggKGNvbXB1dGVkICYmIGVsZW0uY3VycmVudFN0eWxlID8gZWxlbS5jdXJyZW50U3R5bGUuZmlsdGVyIDogZWxlbS5zdHlsZS5maWx0ZXIpIHx8ICIiICkgPwotCQkJCSggMC4wMSAqIHBhcnNlRmxvYXQoIFJlZ0V4cC4kMSApICkgKyAiIiA6Ci0JCQkJY29tcHV0ZWQgPyAiMSIgOiAiIjsKLQkJfSwKLQotCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKLQkJCXZhciBzdHlsZSA9IGVsZW0uc3R5bGUsCi0JCQkJY3VycmVudFN0eWxlID0gZWxlbS5jdXJyZW50U3R5bGUsCi0JCQkJb3BhY2l0eSA9IGpRdWVyeS5pc051bWVyaWMoIHZhbHVlICkgPyAiYWxwaGEob3BhY2l0eT0iICsgdmFsdWUgKiAxMDAgKyAiKSIgOiAiIiwKLQkJCQlmaWx0ZXIgPSBjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLmZpbHRlciB8fCBzdHlsZS5maWx0ZXIgfHwgIiI7Ci0KLQkJCS8vIElFIGhhcyB0cm91YmxlIHdpdGggb3BhY2l0eSBpZiBpdCBkb2VzIG5vdCBoYXZlIGxheW91dAotCQkJLy8gRm9yY2UgaXQgYnkgc2V0dGluZyB0aGUgem9vbSBsZXZlbAotCQkJc3R5bGUuem9vbSA9IDE7Ci0KLQkJCS8vIGlmIHNldHRpbmcgb3BhY2l0eSB0byAxLCBhbmQgbm8gb3RoZXIgZmlsdGVycyBleGlzdCAtIGF0dGVtcHQgdG8gcmVtb3ZlIGZpbHRlciBhdHRyaWJ1dGUgIzY2NTIKLQkJCS8vIGlmIHZhbHVlID09PSAiIiwgdGhlbiByZW1vdmUgaW5saW5lIG9wYWNpdHkgIzEyNjg1Ci0JCQlpZiAoICggdmFsdWUgPj0gMSB8fCB2YWx1ZSA9PT0gIiIgKSAmJgotCQkJCQlqUXVlcnkudHJpbSggZmlsdGVyLnJlcGxhY2UoIHJhbHBoYSwgIiIgKSApID09PSAiIiAmJgotCQkJCQlzdHlsZS5yZW1vdmVBdHRyaWJ1dGUgKSB7Ci0KLQkJCQkvLyBTZXR0aW5nIHN0eWxlLmZpbHRlciB0byBudWxsLCAiIiAmICIgIiBzdGlsbCBsZWF2ZSAiZmlsdGVyOiIgaW4gdGhlIGNzc1RleHQKLQkJCQkvLyBpZiAiZmlsdGVyOiIgaXMgcHJlc2VudCBhdCBhbGwsIGNsZWFyVHlwZSBpcyBkaXNhYmxlZCwgd2Ugd2FudCB0byBhdm9pZCB0aGlzCi0JCQkJLy8gc3R5bGUucmVtb3ZlQXR0cmlidXRlIGlzIElFIE9ubHksIGJ1dCBzbyBhcHBhcmVudGx5IGlzIHRoaXMgY29kZSBwYXRoLi4uCi0JCQkJc3R5bGUucmVtb3ZlQXR0cmlidXRlKCAiZmlsdGVyIiApOwotCi0JCQkJLy8gaWYgdGhlcmUgaXMgbm8gZmlsdGVyIHN0eWxlIGFwcGxpZWQgaW4gYSBjc3MgcnVsZSBvciB1bnNldCBpbmxpbmUgb3BhY2l0eSwgd2UgYXJlIGRvbmUKLQkJCQlpZiAoIHZhbHVlID09PSAiIiB8fCBjdXJyZW50U3R5bGUgJiYgIWN1cnJlbnRTdHlsZS5maWx0ZXIgKSB7Ci0JCQkJCXJldHVybjsKLQkJCQl9Ci0JCQl9Ci0KLQkJCS8vIG90aGVyd2lzZSwgc2V0IG5ldyBmaWx0ZXIgdmFsdWVzCi0JCQlzdHlsZS5maWx0ZXIgPSByYWxwaGEudGVzdCggZmlsdGVyICkgPwotCQkJCWZpbHRlci5yZXBsYWNlKCByYWxwaGEsIG9wYWNpdHkgKSA6Ci0JCQkJZmlsdGVyICsgIiAiICsgb3BhY2l0eTsKLQkJfQotCX07Ci19Ci0KLS8vIFRoZXNlIGhvb2tzIGNhbm5vdCBiZSBhZGRlZCB1bnRpbCBET00gcmVhZHkgYmVjYXVzZSB0aGUgc3VwcG9ydCB0ZXN0Ci0vLyBmb3IgaXQgaXMgbm90IHJ1biB1bnRpbCBhZnRlciBET00gcmVhZHkKLWpRdWVyeShmdW5jdGlvbigpIHsKLQlpZiAoICFqUXVlcnkuc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0ICkgewotCQlqUXVlcnkuY3NzSG9va3MubWFyZ2luUmlnaHQgPSB7Ci0JCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHsKLQkJCQlpZiAoIGNvbXB1dGVkICkgewotCQkJCQkvLyBXZWJLaXQgQnVnIDEzMzQzIC0gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBtYXJnaW4tcmlnaHQKLQkJCQkJLy8gV29yayBhcm91bmQgYnkgdGVtcG9yYXJpbHkgc2V0dGluZyBlbGVtZW50IGRpc3BsYXkgdG8gaW5saW5lLWJsb2NrCi0JCQkJCXJldHVybiBqUXVlcnkuc3dhcCggZWxlbSwgeyAiZGlzcGxheSI6ICJpbmxpbmUtYmxvY2siIH0sCi0JCQkJCQljdXJDU1MsIFsgZWxlbSwgIm1hcmdpblJpZ2h0IiBdICk7Ci0JCQkJfQotCQkJfQotCQl9OwotCX0KLQotCS8vIFdlYmtpdCBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA4NAotCS8vIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyBwZXJjZW50IHdoZW4gc3BlY2lmaWVkIGZvciB0b3AvbGVmdC9ib3R0b20vcmlnaHQKLQkvLyByYXRoZXIgdGhhbiBtYWtlIHRoZSBjc3MgbW9kdWxlIGRlcGVuZCBvbiB0aGUgb2Zmc2V0IG1vZHVsZSwgd2UganVzdCBjaGVjayBmb3IgaXQgaGVyZQotCWlmICggIWpRdWVyeS5zdXBwb3J0LnBpeGVsUG9zaXRpb24gJiYgalF1ZXJ5LmZuLnBvc2l0aW9uICkgewotCQlqUXVlcnkuZWFjaCggWyAidG9wIiwgImxlZnQiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkgewotCQkJalF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSB7Ci0JCQkJZ2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7Ci0JCQkJCWlmICggY29tcHV0ZWQgKSB7Ci0JCQkJCQljb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApOwotCQkJCQkJLy8gaWYgY3VyQ1NTIHJldHVybnMgcGVyY2VudGFnZSwgZmFsbGJhY2sgdG8gb2Zmc2V0Ci0JCQkJCQlyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgPwotCQkJCQkJCWpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArICJweCIgOgotCQkJCQkJCWNvbXB1dGVkOwotCQkJCQl9Ci0JCQkJfQotCQkJfTsKLQkJfSk7Ci0JfQotCi19KTsKLQotaWYgKCBqUXVlcnkuZXhwciAmJiBqUXVlcnkuZXhwci5maWx0ZXJzICkgewotCWpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCS8vIFN1cHBvcnQ6IE9wZXJhIDw9IDEyLjEyCi0JCS8vIE9wZXJhIHJlcG9ydHMgb2Zmc2V0V2lkdGhzIGFuZCBvZmZzZXRIZWlnaHRzIGxlc3MgdGhhbiB6ZXJvIG9uIHNvbWUgZWxlbWVudHMKLQkJcmV0dXJuIGVsZW0ub2Zmc2V0V2lkdGggPD0gMCAmJiBlbGVtLm9mZnNldEhlaWdodCA8PSAwIHx8Ci0JCQkoIWpRdWVyeS5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyAmJiAoKGVsZW0uc3R5bGUgJiYgZWxlbS5zdHlsZS5kaXNwbGF5KSB8fCBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSkgPT09ICJub25lIik7Ci0JfTsKLQotCWpRdWVyeS5leHByLmZpbHRlcnMudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkgewotCQlyZXR1cm4gIWpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuKCBlbGVtICk7Ci0JfTsKLX0KLQotLy8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBleHBhbmQgcHJvcGVydGllcwotalF1ZXJ5LmVhY2goewotCW1hcmdpbjogIiIsCi0JcGFkZGluZzogIiIsCi0JYm9yZGVyOiAiV2lkdGgiCi19LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7Ci0JalF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHsKLQkJZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7Ci0JCQl2YXIgaSA9IDAsCi0JCQkJZXhwYW5kZWQgPSB7fSwKLQotCQkJCS8vIGFzc3VtZXMgYSBzaW5nbGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZwotCQkJCXBhcnRzID0gdHlwZW9mIHZhbHVlID09PSAic3RyaW5nIiA/IHZhbHVlLnNwbGl0KCIgIikgOiBbIHZhbHVlIF07Ci0KLQkJCWZvciAoIDsgaSA8IDQ7IGkrKyApIHsKLQkJCQlleHBhbmRlZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9Ci0JCQkJCXBhcnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTsKLQkJCX0KLQotCQkJcmV0dXJuIGV4cGFuZGVkOwotCQl9Ci0JfTsKLQotCWlmICggIXJtYXJnaW4udGVzdCggcHJlZml4ICkgKSB7Ci0JCWpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7Ci0JfQotfSk7Ci12YXIgcjIwID0gLyUyMC9nLAotCXJicmFja2V0ID0gL1xbXF0kLywKLQlyQ1JMRiA9IC9ccj9cbi9nLAotCXJzdWJtaXR0ZXJUeXBlcyA9IC9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSwKLQlyc3VibWl0dGFibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotCXNlcmlhbGl6ZTogZnVuY3Rpb24oKSB7Ci0JCXJldHVybiBqUXVlcnkucGFyYW0oIHRoaXMuc2VyaWFsaXplQXJyYXkoKSApOwotCX0sCi0Jc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXsKLQkJCS8vIENhbiBhZGQgcHJvcEhvb2sgZm9yICJlbGVtZW50cyIgdG8gZmlsdGVyIG9yIGFkZCBmb3JtIGVsZW1lbnRzCi0JCQl2YXIgZWxlbWVudHMgPSBqUXVlcnkucHJvcCggdGhpcywgImVsZW1lbnRzIiApOwotCQkJcmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggZWxlbWVudHMgKSA6IHRoaXM7Ci0JCX0pCi0JCS5maWx0ZXIoZnVuY3Rpb24oKXsKLQkJCXZhciB0eXBlID0gdGhpcy50eXBlOwotCQkJLy8gVXNlIC5pcygiOmRpc2FibGVkIikgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3MKLQkJCXJldHVybiB0aGlzLm5hbWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCAiOmRpc2FibGVkIiApICYmCi0JCQkJcnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3QoIHR5cGUgKSAmJgotCQkJCSggdGhpcy5jaGVja2VkIHx8ICFtYW5pcHVsYXRpb25fcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7Ci0JCX0pCi0JCS5tYXAoZnVuY3Rpb24oIGksIGVsZW0gKXsKLQkJCXZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTsKLQotCQkJcmV0dXJuIHZhbCA9PSBudWxsID8KLQkJCQludWxsIDoKLQkJCQlqUXVlcnkuaXNBcnJheSggdmFsICkgPwotCQkJCQlqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWwgKXsKLQkJCQkJCXJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgIlxyXG4iICkgfTsKLQkJCQkJfSkgOgotCQkJCQl7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgIlxyXG4iICkgfTsKLQkJfSkuZ2V0KCk7Ci0JfQotfSk7Ci0KLS8vU2VyaWFsaXplIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2YKLS8va2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5nCi1qUXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7Ci0JdmFyIHByZWZpeCwKLQkJcyA9IFtdLAotCQlhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsKLQkJCS8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZQotCQkJdmFsdWUgPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSA/IHZhbHVlKCkgOiAoIHZhbHVlID09IG51bGwgPyAiIiA6IHZhbHVlICk7Ci0JCQlzWyBzLmxlbmd0aCBdID0gZW5jb2RlVVJJQ29tcG9uZW50KCBrZXkgKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgKTsKLQkJfTsKLQotCS8vIFNldCB0cmFkaXRpb25hbCB0byB0cnVlIGZvciBqUXVlcnkgPD0gMS4zLjIgYmVoYXZpb3IuCi0JaWYgKCB0cmFkaXRpb25hbCA9PT0gdW5kZWZpbmVkICkgewotCQl0cmFkaXRpb25hbCA9IGpRdWVyeS5hamF4U2V0dGluZ3MgJiYgalF1ZXJ5LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDsKLQl9Ci0KLQkvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBhc3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzLgotCWlmICggalF1ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7Ci0JCS8vIFNlcmlhbGl6ZSB0aGUgZm9ybSBlbGVtZW50cwotCQlqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24oKSB7Ci0JCQlhZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApOwotCQl9KTsKLQotCX0gZWxzZSB7Ci0JCS8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUgdGhlICJvbGQiIHdheSAodGhlIHdheSAxLjMuMiBvciBvbGRlcgotCQkvLyBkaWQgaXQpLCBvdGhlcndpc2UgZW5jb2RlIHBhcmFtcyByZWN1cnNpdmVseS4KLQkJZm9yICggcHJlZml4IGluIGEgKSB7Ci0JCQlidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXggXSwgdHJhZGl0aW9uYWwsIGFkZCApOwotCQl9Ci0JfQotCi0JLy8gUmV0dXJuIHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlvbgotCXJldHVybiBzLmpvaW4oICImIiApLnJlcGxhY2UoIHIyMCwgIisiICk7Ci19OwotCi1mdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmosIHRyYWRpdGlvbmFsLCBhZGQgKSB7Ci0JdmFyIG5hbWU7Ci0KLQlpZiAoIGpRdWVyeS5pc0FycmF5KCBvYmogKSApIHsKLQkJLy8gU2VyaWFsaXplIGFycmF5IGl0ZW0uCi0JCWpRdWVyeS5lYWNoKCBvYmosIGZ1bmN0aW9uKCBpLCB2ICkgewotCQkJaWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHsKLQkJCQkvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuCi0JCQkJYWRkKCBwcmVmaXgsIHYgKTsKLQotCQkJfSBlbHNlIHsKLQkJCQkvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMgbnVtZXJpYyBpbmRleC4KLQkJCQlidWlsZFBhcmFtcyggcHJlZml4ICsgIlsiICsgKCB0eXBlb2YgdiA9PT0gIm9iamVjdCIgPyBpIDogIiIgKSArICJdIiwgdiwgdHJhZGl0aW9uYWwsIGFkZCApOwotCQkJfQotCQl9KTsKLQotCX0gZWxzZSBpZiAoICF0cmFkaXRpb25hbCAmJiBqUXVlcnkudHlwZSggb2JqICkgPT09ICJvYmplY3QiICkgewotCQkvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uCi0JCWZvciAoIG5hbWUgaW4gb2JqICkgewotCQkJYnVpbGRQYXJhbXMoIHByZWZpeCArICJbIiArIG5hbWUgKyAiXSIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7Ci0JCX0KLQotCX0gZWxzZSB7Ci0JCS8vIFNlcmlhbGl6ZSBzY2FsYXIgaXRlbS4KLQkJYWRkKCBwcmVmaXgsIG9iaiApOwotCX0KLX0KLWpRdWVyeS5lYWNoKCAoImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrICIgKwotCSJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSAiICsKLQkiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIpLnNwbGl0KCIgIiksIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotCi0JLy8gSGFuZGxlIGV2ZW50IGJpbmRpbmcKLQlqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHsKLQkJcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8KLQkJCXRoaXMub24oIG5hbWUsIG51bGwsIGRhdGEsIGZuICkgOgotCQkJdGhpcy50cmlnZ2VyKCBuYW1lICk7Ci0JfTsKLX0pOwotCi1qUXVlcnkuZm4uaG92ZXIgPSBmdW5jdGlvbiggZm5PdmVyLCBmbk91dCApIHsKLQlyZXR1cm4gdGhpcy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBmbk92ZXIgKTsKLX07Ci12YXIKLQkvLyBEb2N1bWVudCBsb2NhdGlvbgotCWFqYXhMb2NQYXJ0cywKLQlhamF4TG9jYXRpb24sCi0JYWpheF9ub25jZSA9IGpRdWVyeS5ub3coKSwKLQotCWFqYXhfcnF1ZXJ5ID0gL1w/LywKLQlyaGFzaCA9IC8jLiokLywKLQlydHMgPSAvKFs/Jl0pXz1bXiZdKi8sCi0JcmhlYWRlcnMgPSAvXiguKj8pOlsgXHRdKihbXlxyXG5dKilccj8kL21nLCAvLyBJRSBsZWF2ZXMgYW4gXHIgY2hhcmFjdGVyIGF0IEVPTAotCS8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvbgotCXJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sCi0Jcm5vQ29udGVudCA9IC9eKD86R0VUfEhFQUQpJC8sCi0JcnByb3RvY29sID0gL15cL1wvLywKLQlydXJsID0gL14oW1x3ListXSs6KSg/OlwvXC8oW15cLz8jOl0qKSg/OjooXGQrKXwpfCkvLAotCi0JLy8gS2VlcCBhIGNvcHkgb2YgdGhlIG9sZCBsb2FkIG1ldGhvZAotCV9sb2FkID0galF1ZXJ5LmZuLmxvYWQsCi0KLQkvKiBQcmVmaWx0ZXJzCi0JICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBsZSkKLQkgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOgotCSAqICAgIC0gQkVGT1JFIGFza2luZyBmb3IgYSB0cmFuc3BvcnQKLQkgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpCi0JICogMykga2V5IGlzIHRoZSBkYXRhVHlwZQotCSAqIDQpIHRoZSBjYXRjaGFsbCBzeW1ib2wgIioiIGNhbiBiZSB1c2VkCi0JICogNSkgZXhlY3V0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gY29udGludWUgZG93biB0byAiKiIgaWYgbmVlZGVkCi0JICovCi0JcHJlZmlsdGVycyA9IHt9LAotCi0JLyogVHJhbnNwb3J0cyBiaW5kaW5ncwotCSAqIDEpIGtleSBpcyB0aGUgZGF0YVR5cGUKLQkgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sICIqIiBjYW4gYmUgdXNlZAotCSAqIDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdvIHRvICIqIiBpZiBuZWVkZWQKLQkgKi8KLQl0cmFuc3BvcnRzID0ge30sCi0KLQkvLyBBdm9pZCBjb21tZW50LXByb2xvZyBjaGFyIHNlcXVlbmNlICgjMTAwOTgpOyBtdXN0IGFwcGVhc2UgbGludCBhbmQgZXZhZGUgY29tcHJlc3Npb24KLQlhbGxUeXBlcyA9ICIqLyIuY29uY2F0KCIqIik7Ci0KLS8vICM4MTM4LCBJRSBtYXkgdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gYWNjZXNzaW5nCi0vLyBhIGZpZWxkIGZyb20gd2luZG93LmxvY2F0aW9uIGlmIGRvY3VtZW50LmRvbWFpbiBoYXMgYmVlbiBzZXQKLXRyeSB7Ci0JYWpheExvY2F0aW9uID0gbG9jYXRpb24uaHJlZjsKLX0gY2F0Y2goIGUgKSB7Ci0JLy8gVXNlIHRoZSBocmVmIGF0dHJpYnV0ZSBvZiBhbiBBIGVsZW1lbnQKLQkvLyBzaW5jZSBJRSB3aWxsIG1vZGlmeSBpdCBnaXZlbiBkb2N1bWVudC5sb2NhdGlvbgotCWFqYXhMb2NhdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJhIiApOwotCWFqYXhMb2NhdGlvbi5ocmVmID0gIiI7Ci0JYWpheExvY2F0aW9uID0gYWpheExvY2F0aW9uLmhyZWY7Ci19Ci0KLS8vIFNlZ21lbnQgbG9jYXRpb24gaW50byBwYXJ0cwotYWpheExvY1BhcnRzID0gcnVybC5leGVjKCBhamF4TG9jYXRpb24udG9Mb3dlckNhc2UoKSApIHx8IFtdOwotCi0vLyBCYXNlICJjb25zdHJ1Y3RvciIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydAotZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7Ci0KLQkvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvICIqIgotCXJldHVybiBmdW5jdGlvbiggZGF0YVR5cGVFeHByZXNzaW9uLCBmdW5jICkgewotCi0JCWlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gInN0cmluZyIgKSB7Ci0JCQlmdW5jID0gZGF0YVR5cGVFeHByZXNzaW9uOwotCQkJZGF0YVR5cGVFeHByZXNzaW9uID0gIioiOwotCQl9Ci0KLQkJdmFyIGRhdGFUeXBlLAotCQkJaSA9IDAsCi0JCQlkYXRhVHlwZXMgPSBkYXRhVHlwZUV4cHJlc3Npb24udG9Mb3dlckNhc2UoKS5tYXRjaCggY29yZV9ybm90d2hpdGUgKSB8fCBbXTsKLQotCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBmdW5jICkgKSB7Ci0JCQkvLyBGb3IgZWFjaCBkYXRhVHlwZSBpbiB0aGUgZGF0YVR5cGVFeHByZXNzaW9uCi0JCQl3aGlsZSAoIChkYXRhVHlwZSA9IGRhdGFUeXBlc1tpKytdKSApIHsKLQkJCQkvLyBQcmVwZW5kIGlmIHJlcXVlc3RlZAotCQkJCWlmICggZGF0YVR5cGVbMF0gPT09ICIrIiApIHsKLQkJCQkJZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8ICIqIjsKLQkJCQkJKHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSkudW5zaGlmdCggZnVuYyApOwotCi0JCQkJLy8gT3RoZXJ3aXNlIGFwcGVuZAotCQkJCX0gZWxzZSB7Ci0JCQkJCShzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10pLnB1c2goIGZ1bmMgKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9OwotfQotCi0vLyBCYXNlIGluc3BlY3Rpb24gZnVuY3Rpb24gZm9yIHByZWZpbHRlcnMgYW5kIHRyYW5zcG9ydHMKLWZ1bmN0aW9uIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKSB7Ci0KLQl2YXIgaW5zcGVjdGVkID0ge30sCi0JCXNlZWtpbmdUcmFuc3BvcnQgPSAoIHN0cnVjdHVyZSA9PT0gdHJhbnNwb3J0cyApOwotCi0JZnVuY3Rpb24gaW5zcGVjdCggZGF0YVR5cGUgKSB7Ci0JCXZhciBzZWxlY3RlZDsKLQkJaW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTsKLQkJalF1ZXJ5LmVhY2goIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSwgZnVuY3Rpb24oIF8sIHByZWZpbHRlck9yRmFjdG9yeSApIHsKLQkJCXZhciBkYXRhVHlwZU9yVHJhbnNwb3J0ID0gcHJlZmlsdGVyT3JGYWN0b3J5KCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICk7Ci0JCQlpZiggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09ICJzdHJpbmciICYmICFzZWVraW5nVHJhbnNwb3J0ICYmICFpbnNwZWN0ZWRbIGRhdGFUeXBlT3JUcmFuc3BvcnQgXSApIHsKLQkJCQlvcHRpb25zLmRhdGFUeXBlcy51bnNoaWZ0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7Ci0JCQkJaW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApOwotCQkJCXJldHVybiBmYWxzZTsKLQkJCX0gZWxzZSBpZiAoIHNlZWtpbmdUcmFuc3BvcnQgKSB7Ci0JCQkJcmV0dXJuICEoIHNlbGVjdGVkID0gZGF0YVR5cGVPclRyYW5zcG9ydCApOwotCQkJfQotCQl9KTsKLQkJcmV0dXJuIHNlbGVjdGVkOwotCX0KLQotCXJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgIioiIF0gJiYgaW5zcGVjdCggIioiICk7Ci19Ci0KLS8vIEEgc3BlY2lhbCBleHRlbmQgZm9yIGFqYXggb3B0aW9ucwotLy8gdGhhdCB0YWtlcyAiZmxhdCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpCi0vLyBGaXhlcyAjOTg4NwotZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7Ci0JdmFyIGRlZXAsIGtleSwKLQkJZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9OwotCi0JZm9yICgga2V5IGluIHNyYyApIHsKLQkJaWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7Ci0JCQkoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoZGVlcCA9IHt9KSApIClbIGtleSBdID0gc3JjWyBrZXkgXTsKLQkJfQotCX0KLQlpZiAoIGRlZXAgKSB7Ci0JCWpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCApOwotCX0KLQotCXJldHVybiB0YXJnZXQ7Ci19Ci0KLWpRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHsKLQlpZiAoIHR5cGVvZiB1cmwgIT09ICJzdHJpbmciICYmIF9sb2FkICkgewotCQlyZXR1cm4gX2xvYWQuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwotCX0KLQotCXZhciBzZWxlY3RvciwgcmVzcG9uc2UsIHR5cGUsCi0JCXNlbGYgPSB0aGlzLAotCQlvZmYgPSB1cmwuaW5kZXhPZigiICIpOwotCi0JaWYgKCBvZmYgPj0gMCApIHsKLQkJc2VsZWN0b3IgPSB1cmwuc2xpY2UoIG9mZiwgdXJsLmxlbmd0aCApOwotCQl1cmwgPSB1cmwuc2xpY2UoIDAsIG9mZiApOwotCX0KLQotCS8vIElmIGl0J3MgYSBmdW5jdGlvbgotCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHBhcmFtcyApICkgewotCi0JCS8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrCi0JCWNhbGxiYWNrID0gcGFyYW1zOwotCQlwYXJhbXMgPSB1bmRlZmluZWQ7Ci0KLQkvLyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3RyaW5nCi0JfSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09ICJvYmplY3QiICkgewotCQl0eXBlID0gIlBPU1QiOwotCX0KLQotCS8vIElmIHdlIGhhdmUgZWxlbWVudHMgdG8gbW9kaWZ5LCBtYWtlIHRoZSByZXF1ZXN0Ci0JaWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7Ci0JCWpRdWVyeS5hamF4KHsKLQkJCXVybDogdXJsLAotCi0JCQkvLyBpZiAidHlwZSIgdmFyaWFibGUgaXMgdW5kZWZpbmVkLCB0aGVuICJHRVQiIG1ldGhvZCB3aWxsIGJlIHVzZWQKLQkJCXR5cGU6IHR5cGUsCi0JCQlkYXRhVHlwZTogImh0bWwiLAotCQkJZGF0YTogcGFyYW1zCi0JCX0pLmRvbmUoZnVuY3Rpb24oIHJlc3BvbnNlVGV4dCApIHsKLQotCQkJLy8gU2F2ZSByZXNwb25zZSBmb3IgdXNlIGluIGNvbXBsZXRlIGNhbGxiYWNrCi0JCQlyZXNwb25zZSA9IGFyZ3VtZW50czsKLQotCQkJc2VsZi5odG1sKCBzZWxlY3RvciA/Ci0KLQkJCQkvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXYKLQkJCQkvLyBFeGNsdWRlIHNjcmlwdHMgdG8gYXZvaWQgSUUgJ1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnMKLQkJCQlqUXVlcnkoIjxkaXY+IikuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOgotCi0JCQkJLy8gT3RoZXJ3aXNlIHVzZSB0aGUgZnVsbCByZXN1bHQKLQkJCQlyZXNwb25zZVRleHQgKTsKLQotCQl9KS5jb21wbGV0ZSggY2FsbGJhY2sgJiYgZnVuY3Rpb24oIGpxWEhSLCBzdGF0dXMgKSB7Ci0JCQlzZWxmLmVhY2goIGNhbGxiYWNrLCByZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7Ci0JCX0pOwotCX0KLQotCXJldHVybiB0aGlzOwotfTsKLQotLy8gQXR0YWNoIGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBldmVudHMKLWpRdWVyeS5lYWNoKCBbICJhamF4U3RhcnQiLCAiYWpheFN0b3AiLCAiYWpheENvbXBsZXRlIiwgImFqYXhFcnJvciIsICJhamF4U3VjY2VzcyIsICJhamF4U2VuZCIgXSwgZnVuY3Rpb24oIGksIHR5cGUgKXsKLQlqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApewotCQlyZXR1cm4gdGhpcy5vbiggdHlwZSwgZm4gKTsKLQl9OwotfSk7Ci0KLWpRdWVyeS5lYWNoKCBbICJnZXQiLCAicG9zdCIgXSwgZnVuY3Rpb24oIGksIG1ldGhvZCApIHsKLQlqUXVlcnlbIG1ldGhvZCBdID0gZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2ssIHR5cGUgKSB7Ci0JCS8vIHNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkCi0JCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHsKLQkJCXR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrOwotCQkJY2FsbGJhY2sgPSBkYXRhOwotCQkJZGF0YSA9IHVuZGVmaW5lZDsKLQkJfQotCi0JCXJldHVybiBqUXVlcnkuYWpheCh7Ci0JCQl1cmw6IHVybCwKLQkJCXR5cGU6IG1ldGhvZCwKLQkJCWRhdGFUeXBlOiB0eXBlLAotCQkJZGF0YTogZGF0YSwKLQkJCXN1Y2Nlc3M6IGNhbGxiYWNrCi0JCX0pOwotCX07Ci19KTsKLQotalF1ZXJ5LmV4dGVuZCh7Ci0KLQkvLyBDb3VudGVyIGZvciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXMKLQlhY3RpdmU6IDAsCi0KLQkvLyBMYXN0LU1vZGlmaWVkIGhlYWRlciBjYWNoZSBmb3IgbmV4dCByZXF1ZXN0Ci0JbGFzdE1vZGlmaWVkOiB7fSwKLQlldGFnOiB7fSwKLQotCWFqYXhTZXR0aW5nczogewotCQl1cmw6IGFqYXhMb2NhdGlvbiwKLQkJdHlwZTogIkdFVCIsCi0JCWlzTG9jYWw6IHJsb2NhbFByb3RvY29sLnRlc3QoIGFqYXhMb2NQYXJ0c1sgMSBdICksCi0JCWdsb2JhbDogdHJ1ZSwKLQkJcHJvY2Vzc0RhdGE6IHRydWUsCi0JCWFzeW5jOiB0cnVlLAotCQljb250ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsCi0JCS8qCi0JCXRpbWVvdXQ6IDAsCi0JCWRhdGE6IG51bGwsCi0JCWRhdGFUeXBlOiBudWxsLAotCQl1c2VybmFtZTogbnVsbCwKLQkJcGFzc3dvcmQ6IG51bGwsCi0JCWNhY2hlOiBudWxsLAotCQl0aHJvd3M6IGZhbHNlLAotCQl0cmFkaXRpb25hbDogZmFsc2UsCi0JCWhlYWRlcnM6IHt9LAotCQkqLwotCi0JCWFjY2VwdHM6IHsKLQkJCSIqIjogYWxsVHlwZXMsCi0JCQl0ZXh0OiAidGV4dC9wbGFpbiIsCi0JCQlodG1sOiAidGV4dC9odG1sIiwKLQkJCXhtbDogImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLAotCQkJanNvbjogImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIKLQkJfSwKLQotCQljb250ZW50czogewotCQkJeG1sOiAveG1sLywKLQkJCWh0bWw6IC9odG1sLywKLQkJCWpzb246IC9qc29uLwotCQl9LAotCi0JCXJlc3BvbnNlRmllbGRzOiB7Ci0JCQl4bWw6ICJyZXNwb25zZVhNTCIsCi0JCQl0ZXh0OiAicmVzcG9uc2VUZXh0IgotCQl9LAotCi0JCS8vIERhdGEgY29udmVydGVycwotCQkvLyBLZXlzIHNlcGFyYXRlIHNvdXJjZSAob3IgY2F0Y2hhbGwgIioiKSBhbmQgZGVzdGluYXRpb24gdHlwZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQotCQljb252ZXJ0ZXJzOiB7Ci0KLQkJCS8vIENvbnZlcnQgYW55dGhpbmcgdG8gdGV4dAotCQkJIiogdGV4dCI6IHdpbmRvdy5TdHJpbmcsCi0KLQkJCS8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKQotCQkJInRleHQgaHRtbCI6IHRydWUsCi0KLQkJCS8vIEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb24KLQkJCSJ0ZXh0IGpzb24iOiBqUXVlcnkucGFyc2VKU09OLAotCi0JCQkvLyBQYXJzZSB0ZXh0IGFzIHhtbAotCQkJInRleHQgeG1sIjogalF1ZXJ5LnBhcnNlWE1MCi0JCX0sCi0KLQkJLy8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDoKLQkJLy8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBpZgotCQkvLyBhbmQgd2hlbiB5b3UgY3JlYXRlIG9uZSB0aGF0IHNob3VsZG4ndCBiZQotCQkvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZCkKLQkJZmxhdE9wdGlvbnM6IHsKLQkJCXVybDogdHJ1ZSwKLQkJCWNvbnRleHQ6IHRydWUKLQkJfQotCX0sCi0KLQkvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldAotCS8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy4KLQkvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLgotCWFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7Ci0JCXJldHVybiBzZXR0aW5ncyA/Ci0KLQkJCS8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0Ci0JCQlhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKSwgc2V0dGluZ3MgKSA6Ci0KLQkJCS8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3MKLQkJCWFqYXhFeHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCApOwotCX0sCi0KLQlhamF4UHJlZmlsdGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSwKLQlhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSwKLQotCS8vIE1haW4gbWV0aG9kCi0JYWpheDogZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHsKLQotCQkvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZQotCQlpZiAoIHR5cGVvZiB1cmwgPT09ICJvYmplY3QiICkgewotCQkJb3B0aW9ucyA9IHVybDsKLQkJCXVybCA9IHVuZGVmaW5lZDsKLQkJfQotCi0JCS8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0Ci0JCW9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotCi0JCXZhciAvLyBDcm9zcy1kb21haW4gZGV0ZWN0aW9uIHZhcnMKLQkJCXBhcnRzLAotCQkJLy8gTG9vcCB2YXJpYWJsZQotCQkJaSwKLQkJCS8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW0KLQkJCWNhY2hlVVJMLAotCQkJLy8gUmVzcG9uc2UgaGVhZGVycyBhcyBzdHJpbmcKLQkJCXJlc3BvbnNlSGVhZGVyc1N0cmluZywKLQkJCS8vIHRpbWVvdXQgaGFuZGxlCi0JCQl0aW1lb3V0VGltZXIsCi0KLQkJCS8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZAotCQkJZmlyZUdsb2JhbHMsCi0KLQkJCXRyYW5zcG9ydCwKLQkJCS8vIFJlc3BvbnNlIGhlYWRlcnMKLQkJCXJlc3BvbnNlSGVhZGVycywKLQkJCS8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3QKLQkJCXMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLAotCQkJLy8gQ2FsbGJhY2tzIGNvbnRleHQKLQkJCWNhbGxiYWNrQ29udGV4dCA9IHMuY29udGV4dCB8fCBzLAotCQkJLy8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYgaXQgaXMgYSBET00gbm9kZSBvciBqUXVlcnkgY29sbGVjdGlvbgotCQkJZ2xvYmFsRXZlbnRDb250ZXh0ID0gcy5jb250ZXh0ICYmICggY2FsbGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4dC5qcXVlcnkgKSA/Ci0JCQkJalF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6Ci0JCQkJalF1ZXJ5LmV2ZW50LAotCQkJLy8gRGVmZXJyZWRzCi0JCQlkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLAotCQkJY29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksCi0JCQkvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwotCQkJc3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSwKLQkJCS8vIEhlYWRlcnMgKHRoZXkgYXJlIHNlbnQgYWxsIGF0IG9uY2UpCi0JCQlyZXF1ZXN0SGVhZGVycyA9IHt9LAotCQkJcmVxdWVzdEhlYWRlcnNOYW1lcyA9IHt9LAotCQkJLy8gVGhlIGpxWEhSIHN0YXRlCi0JCQlzdGF0ZSA9IDAsCi0JCQkvLyBEZWZhdWx0IGFib3J0IG1lc3NhZ2UKLQkJCXN0ckFib3J0ID0gImNhbmNlbGVkIiwKLQkJCS8vIEZha2UgeGhyCi0JCQlqcVhIUiA9IHsKLQkJCQlyZWFkeVN0YXRlOiAwLAotCi0JCQkJLy8gQnVpbGRzIGhlYWRlcnMgaGFzaHRhYmxlIGlmIG5lZWRlZAotCQkJCWdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkgewotCQkJCQl2YXIgbWF0Y2g7Ci0JCQkJCWlmICggc3RhdGUgPT09IDIgKSB7Ci0JCQkJCQlpZiAoICFyZXNwb25zZUhlYWRlcnMgKSB7Ci0JCQkJCQkJcmVzcG9uc2VIZWFkZXJzID0ge307Ci0JCQkJCQkJd2hpbGUgKCAobWF0Y2ggPSByaGVhZGVycy5leGVjKCByZXNwb25zZUhlYWRlcnNTdHJpbmcgKSkgKSB7Ci0JCQkJCQkJCXJlc3BvbnNlSGVhZGVyc1sgbWF0Y2hbMV0udG9Mb3dlckNhc2UoKSBdID0gbWF0Y2hbIDIgXTsKLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCQltYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgXTsKLQkJCQkJfQotCQkJCQlyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDsKLQkJCQl9LAotCi0JCQkJLy8gUmF3IHN0cmluZwotCQkJCWdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7Ci0JCQkJCXJldHVybiBzdGF0ZSA9PT0gMiA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7Ci0JCQkJfSwKLQotCQkJCS8vIENhY2hlcyB0aGUgaGVhZGVyCi0JCQkJc2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewotCQkJCQl2YXIgbG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7Ci0JCQkJCWlmICggIXN0YXRlICkgewotCQkJCQkJbmFtZSA9IHJlcXVlc3RIZWFkZXJzTmFtZXNbIGxuYW1lIF0gPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBsbmFtZSBdIHx8IG5hbWU7Ci0JCQkJCQlyZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7Ci0JCQkJCX0KLQkJCQkJcmV0dXJuIHRoaXM7Ci0JCQkJfSwKLQotCQkJCS8vIE92ZXJyaWRlcyByZXNwb25zZSBjb250ZW50LXR5cGUgaGVhZGVyCi0JCQkJb3ZlcnJpZGVNaW1lVHlwZTogZnVuY3Rpb24oIHR5cGUgKSB7Ci0JCQkJCWlmICggIXN0YXRlICkgewotCQkJCQkJcy5taW1lVHlwZSA9IHR5cGU7Ci0JCQkJCX0KLQkJCQkJcmV0dXJuIHRoaXM7Ci0JCQkJfSwKLQotCQkJCS8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzCi0JCQkJc3RhdHVzQ29kZTogZnVuY3Rpb24oIG1hcCApIHsKLQkJCQkJdmFyIGNvZGU7Ci0JCQkJCWlmICggbWFwICkgewotCQkJCQkJaWYgKCBzdGF0ZSA8IDIgKSB7Ci0JCQkJCQkJZm9yICggY29kZSBpbiBtYXAgKSB7Ci0JCQkJCQkJCS8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2sgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xkIG9uZXMKLQkJCQkJCQkJc3RhdHVzQ29kZVsgY29kZSBdID0gWyBzdGF0dXNDb2RlWyBjb2RlIF0sIG1hcFsgY29kZSBdIF07Ci0JCQkJCQkJfQotCQkJCQkJfSBlbHNlIHsKLQkJCQkJCQkvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3MKLQkJCQkJCQlqcVhIUi5hbHdheXMoIG1hcFsganFYSFIuc3RhdHVzIF0gKTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCQlyZXR1cm4gdGhpczsKLQkJCQl9LAotCi0JCQkJLy8gQ2FuY2VsIHRoZSByZXF1ZXN0Ci0JCQkJYWJvcnQ6IGZ1bmN0aW9uKCBzdGF0dXNUZXh0ICkgewotCQkJCQl2YXIgZmluYWxUZXh0ID0gc3RhdHVzVGV4dCB8fCBzdHJBYm9ydDsKLQkJCQkJaWYgKCB0cmFuc3BvcnQgKSB7Ci0JCQkJCQl0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApOwotCQkJCQl9Ci0JCQkJCWRvbmUoIDAsIGZpbmFsVGV4dCApOwotCQkJCQlyZXR1cm4gdGhpczsKLQkJCQl9Ci0JCQl9OwotCi0JCS8vIEF0dGFjaCBkZWZlcnJlZHMKLQkJZGVmZXJyZWQucHJvbWlzZSgganFYSFIgKS5jb21wbGV0ZSA9IGNvbXBsZXRlRGVmZXJyZWQuYWRkOwotCQlqcVhIUi5zdWNjZXNzID0ganFYSFIuZG9uZTsKLQkJanFYSFIuZXJyb3IgPSBqcVhIUi5mYWlsOwotCi0JCS8vIFJlbW92ZSBoYXNoIGNoYXJhY3RlciAoIzc1MzE6IGFuZCBzdHJpbmcgcHJvbW90aW9uKQotCQkvLyBBZGQgcHJvdG9jb2wgaWYgbm90IHByb3ZpZGVkICgjNTg2NjogSUU3IGlzc3VlIHdpdGggcHJvdG9jb2wtbGVzcyB1cmxzKQotCQkvLyBIYW5kbGUgZmFsc3kgdXJsIGluIHRoZSBzZXR0aW5ncyBvYmplY3QgKCMxMDA5MzogY29uc2lzdGVuY3kgd2l0aCBvbGQgc2lnbmF0dXJlKQotCQkvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGUKLQkJcy51cmwgPSAoICggdXJsIHx8IHMudXJsIHx8IGFqYXhMb2NhdGlvbiApICsgIiIgKS5yZXBsYWNlKCByaGFzaCwgIiIgKS5yZXBsYWNlKCBycHJvdG9jb2wsIGFqYXhMb2NQYXJ0c1sgMSBdICsgIi8vIiApOwotCi0JCS8vIEFsaWFzIG1ldGhvZCBvcHRpb24gdG8gdHlwZSBhcyBwZXIgdGlja2V0ICMxMjAwNAotCQlzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlOwotCi0JCS8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3QKLQkJcy5kYXRhVHlwZXMgPSBqUXVlcnkudHJpbSggcy5kYXRhVHlwZSB8fCAiKiIgKS50b0xvd2VyQ2FzZSgpLm1hdGNoKCBjb3JlX3Jub3R3aGl0ZSApIHx8IFsiIl07Ci0KLQkJLy8gQSBjcm9zcy1kb21haW4gcmVxdWVzdCBpcyBpbiBvcmRlciB3aGVuIHdlIGhhdmUgYSBwcm90b2NvbDpob3N0OnBvcnQgbWlzbWF0Y2gKLQkJaWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7Ci0JCQlwYXJ0cyA9IHJ1cmwuZXhlYyggcy51cmwudG9Mb3dlckNhc2UoKSApOwotCQkJcy5jcm9zc0RvbWFpbiA9ICEhKCBwYXJ0cyAmJgotCQkJCSggcGFydHNbIDEgXSAhPT0gYWpheExvY1BhcnRzWyAxIF0gfHwgcGFydHNbIDIgXSAhPT0gYWpheExvY1BhcnRzWyAyIF0gfHwKLQkJCQkJKCBwYXJ0c1sgMyBdIHx8ICggcGFydHNbIDEgXSA9PT0gImh0dHA6IiA/IDgwIDogNDQzICkgKSAhPQotCQkJCQkJKCBhamF4TG9jUGFydHNbIDMgXSB8fCAoIGFqYXhMb2NQYXJ0c1sgMSBdID09PSAiaHR0cDoiID8gODAgOiA0NDMgKSApICkKLQkJCSk7Ci0JCX0KLQotCQkvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmcKLQkJaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5kYXRhICE9PSAic3RyaW5nIiApIHsKLQkJCXMuZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7Ci0JCX0KLQotCQkvLyBBcHBseSBwcmVmaWx0ZXJzCi0JCWluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApOwotCi0JCS8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlCi0JCWlmICggc3RhdGUgPT09IDIgKSB7Ci0JCQlyZXR1cm4ganFYSFI7Ci0JCX0KLQotCQkvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBhc2tlZCB0bwotCQlmaXJlR2xvYmFscyA9IHMuZ2xvYmFsOwotCi0JCS8vIFdhdGNoIGZvciBhIG5ldyBzZXQgb2YgcmVxdWVzdHMKLQkJaWYgKCBmaXJlR2xvYmFscyAmJiBqUXVlcnkuYWN0aXZlKysgPT09IDAgKSB7Ci0JCQlqUXVlcnkuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iik7Ci0JCX0KLQotCQkvLyBVcHBlcmNhc2UgdGhlIHR5cGUKLQkJcy50eXBlID0gcy50eXBlLnRvVXBwZXJDYXNlKCk7Ci0KLQkJLy8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFzIGNvbnRlbnQKLQkJcy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7Ci0KLQkJLy8gU2F2ZSB0aGUgVVJMIGluIGNhc2Ugd2UncmUgdG95aW5nIHdpdGggdGhlIElmLU1vZGlmaWVkLVNpbmNlCi0JCS8vIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciBsYXRlciBvbgotCQljYWNoZVVSTCA9IHMudXJsOwotCi0JCS8vIE1vcmUgb3B0aW9ucyBoYW5kbGluZyBmb3IgcmVxdWVzdHMgd2l0aCBubyBjb250ZW50Ci0JCWlmICggIXMuaGFzQ29udGVudCApIHsKLQotCQkJLy8gSWYgZGF0YSBpcyBhdmFpbGFibGUsIGFwcGVuZCBkYXRhIHRvIHVybAotCQkJaWYgKCBzLmRhdGEgKSB7Ci0JCQkJY2FjaGVVUkwgPSAoIHMudXJsICs9ICggYWpheF9ycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/ICImIiA6ICI/IiApICsgcy5kYXRhICk7Ci0JCQkJLy8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeQotCQkJCWRlbGV0ZSBzLmRhdGE7Ci0JCQl9Ci0KLQkJCS8vIEFkZCBhbnRpLWNhY2hlIGluIHVybCBpZiBuZWVkZWQKLQkJCWlmICggcy5jYWNoZSA9PT0gZmFsc2UgKSB7Ci0JCQkJcy51cmwgPSBydHMudGVzdCggY2FjaGVVUkwgKSA/Ci0KLQkJCQkJLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhICdfJyBwYXJhbWV0ZXIsIHNldCBpdHMgdmFsdWUKLQkJCQkJY2FjaGVVUkwucmVwbGFjZSggcnRzLCAiJDFfPSIgKyBhamF4X25vbmNlKysgKSA6Ci0KLQkJCQkJLy8gT3RoZXJ3aXNlIGFkZCBvbmUgdG8gdGhlIGVuZAotCQkJCQljYWNoZVVSTCArICggYWpheF9ycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/ICImIiA6ICI/IiApICsgIl89IiArIGFqYXhfbm9uY2UrKzsKLQkJCX0KLQkJfQotCi0JCS8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuCi0JCWlmICggcy5pZk1vZGlmaWVkICkgewotCQkJaWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICkgewotCQkJCWpxWEhSLnNldFJlcXVlc3RIZWFkZXIoICJJZi1Nb2RpZmllZC1TaW5jZSIsIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKTsKLQkJCX0KLQkJCWlmICggalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKSB7Ci0JCQkJanFYSFIuc2V0UmVxdWVzdEhlYWRlciggIklmLU5vbmUtTWF0Y2giLCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApOwotCQkJfQotCQl9Ci0KLQkJLy8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50Ci0JCWlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkgewotCQkJanFYSFIuc2V0UmVxdWVzdEhlYWRlciggIkNvbnRlbnQtVHlwZSIsIHMuY29udGVudFR5cGUgKTsKLQkJfQotCi0JCS8vIFNldCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0YVR5cGUKLQkJanFYSFIuc2V0UmVxdWVzdEhlYWRlcigKLQkJCSJBY2NlcHQiLAotCQkJcy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWzBdIF0gPwotCQkJCXMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbMF0gXSArICggcy5kYXRhVHlwZXNbIDAgXSAhPT0gIioiID8gIiwgIiArIGFsbFR5cGVzICsgIjsgcT0wLjAxIiA6ICIiICkgOgotCQkJCXMuYWNjZXB0c1sgIioiIF0KLQkJKTsKLQotCQkvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb24KLQkJZm9yICggaSBpbiBzLmhlYWRlcnMgKSB7Ci0JCQlqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApOwotCQl9Ci0KLQkJLy8gQWxsb3cgY3VzdG9tIGhlYWRlcnMvbWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydAotCQlpZiAoIHMuYmVmb3JlU2VuZCAmJiAoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNlIHx8IHN0YXRlID09PSAyICkgKSB7Ci0JCQkvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCByZXR1cm4KLQkJCXJldHVybiBqcVhIUi5hYm9ydCgpOwotCQl9Ci0KLQkJLy8gYWJvcnRpbmcgaXMgbm8gbG9uZ2VyIGEgY2FuY2VsbGF0aW9uCi0JCXN0ckFib3J0ID0gImFib3J0IjsKLQotCQkvLyBJbnN0YWxsIGNhbGxiYWNrcyBvbiBkZWZlcnJlZHMKLQkJZm9yICggaSBpbiB7IHN1Y2Nlc3M6IDEsIGVycm9yOiAxLCBjb21wbGV0ZTogMSB9ICkgewotCQkJanFYSFJbIGkgXSggc1sgaSBdICk7Ci0JCX0KLQotCQkvLyBHZXQgdHJhbnNwb3J0Ci0JCXRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApOwotCi0JCS8vIElmIG5vIHRyYW5zcG9ydCwgd2UgYXV0by1hYm9ydAotCQlpZiAoICF0cmFuc3BvcnQgKSB7Ci0JCQlkb25lKCAtMSwgIk5vIFRyYW5zcG9ydCIgKTsKLQkJfSBlbHNlIHsKLQkJCWpxWEhSLnJlYWR5U3RhdGUgPSAxOwotCi0JCQkvLyBTZW5kIGdsb2JhbCBldmVudAotCQkJaWYgKCBmaXJlR2xvYmFscyApIHsKLQkJCQlnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggImFqYXhTZW5kIiwgWyBqcVhIUiwgcyBdICk7Ci0JCQl9Ci0JCQkvLyBUaW1lb3V0Ci0JCQlpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHsKLQkJCQl0aW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotCQkJCQlqcVhIUi5hYm9ydCgidGltZW91dCIpOwotCQkJCX0sIHMudGltZW91dCApOwotCQkJfQotCi0JCQl0cnkgewotCQkJCXN0YXRlID0gMTsKLQkJCQl0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRlcnMsIGRvbmUgKTsKLQkJCX0gY2F0Y2ggKCBlICkgewotCQkJCS8vIFByb3BhZ2F0ZSBleGNlcHRpb24gYXMgZXJyb3IgaWYgbm90IGRvbmUKLQkJCQlpZiAoIHN0YXRlIDwgMiApIHsKLQkJCQkJZG9uZSggLTEsIGUgKTsKLQkJCQkvLyBTaW1wbHkgcmV0aHJvdyBvdGhlcndpc2UKLQkJCQl9IGVsc2UgewotCQkJCQl0aHJvdyBlOwotCQkJCX0KLQkJCX0KLQkJfQotCi0JCS8vIENhbGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZQotCQlmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHsKLQkJCXZhciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCByZXNwb25zZSwgbW9kaWZpZWQsCi0JCQkJc3RhdHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1RleHQ7Ci0KLQkJCS8vIENhbGxlZCBvbmNlCi0JCQlpZiAoIHN0YXRlID09PSAyICkgewotCQkJCXJldHVybjsKLQkJCX0KLQotCQkJLy8gU3RhdGUgaXMgImRvbmUiIG5vdwotCQkJc3RhdGUgPSAyOwotCi0JCQkvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0cwotCQkJaWYgKCB0aW1lb3V0VGltZXIgKSB7Ci0JCQkJY2xlYXJUaW1lb3V0KCB0aW1lb3V0VGltZXIgKTsKLQkJCX0KLQotCQkJLy8gRGVyZWZlcmVuY2UgdHJhbnNwb3J0IGZvciBlYXJseSBnYXJiYWdlIGNvbGxlY3Rpb24KLQkJCS8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpCi0JCQl0cmFuc3BvcnQgPSB1bmRlZmluZWQ7Ci0KLQkJCS8vIENhY2hlIHJlc3BvbnNlIGhlYWRlcnMKLQkJCXJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRlcnMgfHwgIiI7Ci0KLQkJCS8vIFNldCByZWFkeVN0YXRlCi0JCQlqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwOwotCi0JCQkvLyBHZXQgcmVzcG9uc2UgZGF0YQotCQkJaWYgKCByZXNwb25zZXMgKSB7Ci0JCQkJcmVzcG9uc2UgPSBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICk7Ci0JCQl9Ci0KLQkJCS8vIElmIHN1Y2Nlc3NmdWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nCi0JCQlpZiAoIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwIHx8IHN0YXR1cyA9PT0gMzA0ICkgewotCi0JCQkJLy8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS4KLQkJCQlpZiAoIHMuaWZNb2RpZmllZCApIHsKLQkJCQkJbW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpOwotCQkJCQlpZiAoIG1vZGlmaWVkICkgewotCQkJCQkJalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkOwotCQkJCQl9Ci0JCQkJCW1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKTsKLQkJCQkJaWYgKCBtb2RpZmllZCApIHsKLQkJCQkJCWpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQkvLyBpZiBubyBjb250ZW50Ci0JCQkJaWYgKCBzdGF0dXMgPT09IDIwNCApIHsKLQkJCQkJaXNTdWNjZXNzID0gdHJ1ZTsKLQkJCQkJc3RhdHVzVGV4dCA9ICJub2NvbnRlbnQiOwotCi0JCQkJLy8gaWYgbm90IG1vZGlmaWVkCi0JCQkJfSBlbHNlIGlmICggc3RhdHVzID09PSAzMDQgKSB7Ci0JCQkJCWlzU3VjY2VzcyA9IHRydWU7Ci0JCQkJCXN0YXR1c1RleHQgPSAibm90bW9kaWZpZWQiOwotCi0JCQkJLy8gSWYgd2UgaGF2ZSBkYXRhLCBsZXQncyBjb252ZXJ0IGl0Ci0JCQkJfSBlbHNlIHsKLQkJCQkJaXNTdWNjZXNzID0gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlICk7Ci0JCQkJCXN0YXR1c1RleHQgPSBpc1N1Y2Nlc3Muc3RhdGU7Ci0JCQkJCXN1Y2Nlc3MgPSBpc1N1Y2Nlc3MuZGF0YTsKLQkJCQkJZXJyb3IgPSBpc1N1Y2Nlc3MuZXJyb3I7Ci0JCQkJCWlzU3VjY2VzcyA9ICFlcnJvcjsKLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCS8vIFdlIGV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0Ci0JCQkJLy8gdGhlbiBub3JtYWxpemUgc3RhdHVzVGV4dCBhbmQgc3RhdHVzIGZvciBub24tYWJvcnRzCi0JCQkJZXJyb3IgPSBzdGF0dXNUZXh0OwotCQkJCWlmICggc3RhdHVzIHx8ICFzdGF0dXNUZXh0ICkgewotCQkJCQlzdGF0dXNUZXh0ID0gImVycm9yIjsKLQkJCQkJaWYgKCBzdGF0dXMgPCAwICkgewotCQkJCQkJc3RhdHVzID0gMDsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQotCQkJLy8gU2V0IGRhdGEgZm9yIHRoZSBmYWtlIHhociBvYmplY3QKLQkJCWpxWEhSLnN0YXR1cyA9IHN0YXR1czsKLQkJCWpxWEhSLnN0YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQgfHwgc3RhdHVzVGV4dCApICsgIiI7Ci0KLQkJCS8vIFN1Y2Nlc3MvRXJyb3IKLQkJCWlmICggaXNTdWNjZXNzICkgewotCQkJCWRlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApOwotCQkJfSBlbHNlIHsKLQkJCQlkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTsKLQkJCX0KLQotCQkJLy8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3MKLQkJCWpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTsKLQkJCXN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7Ci0KLQkJCWlmICggZmlyZUdsb2JhbHMgKSB7Ci0JCQkJZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIGlzU3VjY2VzcyA/ICJhamF4U3VjY2VzcyIgOiAiYWpheEVycm9yIiwKLQkJCQkJWyBqcVhIUiwgcywgaXNTdWNjZXNzID8gc3VjY2VzcyA6IGVycm9yIF0gKTsKLQkJCX0KLQotCQkJLy8gQ29tcGxldGUKLQkJCWNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7Ci0KLQkJCWlmICggZmlyZUdsb2JhbHMgKSB7Ci0JCQkJZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoICJhamF4Q29tcGxldGUiLCBbIGpxWEhSLCBzIF0gKTsKLQkJCQkvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXIKLQkJCQlpZiAoICEoIC0talF1ZXJ5LmFjdGl2ZSApICkgewotCQkJCQlqUXVlcnkuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4ganFYSFI7Ci0JfSwKLQotCWdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7Ci0JCXJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVmaW5lZCwgY2FsbGJhY2ssICJzY3JpcHQiICk7Ci0JfSwKLQotCWdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrICkgewotCQlyZXR1cm4galF1ZXJ5LmdldCggdXJsLCBkYXRhLCBjYWxsYmFjaywgImpzb24iICk7Ci0JfQotfSk7Ci0KLS8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDoKLSAqIC0gc2V0cyBhbGwgcmVzcG9uc2VYWFggZmllbGRzIGFjY29yZGluZ2x5Ci0gKiAtIGZpbmRzIHRoZSByaWdodCBkYXRhVHlwZSAobWVkaWF0ZXMgYmV0d2VlbiBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVkIGRhdGFUeXBlKQotICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlCi0gKi8KLWZ1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKSB7Ci0JdmFyIGZpcnN0RGF0YVR5cGUsIGN0LCBmaW5hbERhdGFUeXBlLCB0eXBlLAotCQljb250ZW50cyA9IHMuY29udGVudHMsCi0JCWRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLAotCQlyZXNwb25zZUZpZWxkcyA9IHMucmVzcG9uc2VGaWVsZHM7Ci0KLQkvLyBGaWxsIHJlc3BvbnNlWFhYIGZpZWxkcwotCWZvciAoIHR5cGUgaW4gcmVzcG9uc2VGaWVsZHMgKSB7Ci0JCWlmICggdHlwZSBpbiByZXNwb25zZXMgKSB7Ci0JCQlqcVhIUlsgcmVzcG9uc2VGaWVsZHNbdHlwZV0gXSA9IHJlc3BvbnNlc1sgdHlwZSBdOwotCQl9Ci0JfQotCi0JLy8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50LXR5cGUgaW4gdGhlIHByb2Nlc3MKLQl3aGlsZSggZGF0YVR5cGVzWyAwIF0gPT09ICIqIiApIHsKLQkJZGF0YVR5cGVzLnNoaWZ0KCk7Ci0JCWlmICggY3QgPT09IHVuZGVmaW5lZCApIHsKLQkJCWN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIik7Ci0JCX0KLQl9Ci0KLQkvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGUKLQlpZiAoIGN0ICkgewotCQlmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkgewotCQkJaWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHsKLQkJCQlkYXRhVHlwZXMudW5zaGlmdCggdHlwZSApOwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JfQotCi0JLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlCi0JaWYgKCBkYXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7Ci0JCWZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTsKLQl9IGVsc2UgewotCQkvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzCi0JCWZvciAoIHR5cGUgaW4gcmVzcG9uc2VzICkgewotCQkJaWYgKCAhZGF0YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgIiAiICsgZGF0YVR5cGVzWzBdIF0gKSB7Ci0JCQkJZmluYWxEYXRhVHlwZSA9IHR5cGU7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCQlpZiAoICFmaXJzdERhdGFUeXBlICkgewotCQkJCWZpcnN0RGF0YVR5cGUgPSB0eXBlOwotCQkJfQotCQl9Ci0JCS8vIE9yIGp1c3QgdXNlIGZpcnN0IG9uZQotCQlmaW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlwZSB8fCBmaXJzdERhdGFUeXBlOwotCX0KLQotCS8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGUKLQkvLyBXZSBhZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZAotCS8vIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UKLQlpZiAoIGZpbmFsRGF0YVR5cGUgKSB7Ci0JCWlmICggZmluYWxEYXRhVHlwZSAhPT0gZGF0YVR5cGVzWyAwIF0gKSB7Ci0JCQlkYXRhVHlwZXMudW5zaGlmdCggZmluYWxEYXRhVHlwZSApOwotCQl9Ci0JCXJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTsKLQl9Ci19Ci0KLS8vIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgb3JpZ2luYWwgcmVzcG9uc2UKLWZ1bmN0aW9uIGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSApIHsKLQl2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwKLQkJY29udmVydGVycyA9IHt9LAotCQlpID0gMCwKLQkJLy8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvbgotCQlkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcy5zbGljZSgpLAotCQlwcmV2ID0gZGF0YVR5cGVzWyAwIF07Ci0KLQkvLyBBcHBseSB0aGUgZGF0YUZpbHRlciBpZiBwcm92aWRlZAotCWlmICggcy5kYXRhRmlsdGVyICkgewotCQlyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTsKLQl9Ci0KLQkvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXMKLQlpZiAoIGRhdGFUeXBlc1sgMSBdICkgewotCQlmb3IgKCBjb252IGluIHMuY29udmVydGVycyApIHsKLQkJCWNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07Ci0JCX0KLQl9Ci0KLQkvLyBDb252ZXJ0IHRvIGVhY2ggc2VxdWVudGlhbCBkYXRhVHlwZSwgdG9sZXJhdGluZyBsaXN0IG1vZGlmaWNhdGlvbgotCWZvciAoIDsgKGN1cnJlbnQgPSBkYXRhVHlwZXNbKytpXSk7ICkgewotCi0JCS8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMgbm9uLWF1dG8KLQkJaWYgKCBjdXJyZW50ICE9PSAiKiIgKSB7Ci0KLQkJCS8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnQKLQkJCWlmICggcHJldiAhPT0gIioiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7Ci0KLQkJCQkvLyBTZWVrIGEgZGlyZWN0IGNvbnZlcnRlcgotCQkJCWNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgIiAiICsgY3VycmVudCBdIHx8IGNvbnZlcnRlcnNbICIqICIgKyBjdXJyZW50IF07Ci0KLQkJCQkvLyBJZiBub25lIGZvdW5kLCBzZWVrIGEgcGFpcgotCQkJCWlmICggIWNvbnYgKSB7Ci0JCQkJCWZvciAoIGNvbnYyIGluIGNvbnZlcnRlcnMgKSB7Ci0KLQkJCQkJCS8vIElmIGNvbnYyIG91dHB1dHMgY3VycmVudAotCQkJCQkJdG1wID0gY29udjIuc3BsaXQoIiAiKTsKLQkJCQkJCWlmICggdG1wWyAxIF0gPT09IGN1cnJlbnQgKSB7Ci0KLQkJCQkJCQkvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXQKLQkJCQkJCQljb252ID0gY29udmVydGVyc1sgcHJldiArICIgIiArIHRtcFsgMCBdIF0gfHwKLQkJCQkJCQkJY29udmVydGVyc1sgIiogIiArIHRtcFsgMCBdIF07Ci0JCQkJCQkJaWYgKCBjb252ICkgewotCQkJCQkJCQkvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzCi0JCQkJCQkJCWlmICggY29udiA9PT0gdHJ1ZSApIHsKLQkJCQkJCQkJCWNvbnYgPSBjb252ZXJ0ZXJzWyBjb252MiBdOwotCi0JCQkJCQkJCS8vIE90aGVyd2lzZSwgaW5zZXJ0IHRoZSBpbnRlcm1lZGlhdGUgZGF0YVR5cGUKLQkJCQkJCQkJfSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHsKLQkJCQkJCQkJCWN1cnJlbnQgPSB0bXBbIDAgXTsKLQkJCQkJCQkJCWRhdGFUeXBlcy5zcGxpY2UoIGktLSwgMCwgY3VycmVudCApOwotCQkJCQkJCQl9Ci0KLQkJCQkJCQkJYnJlYWs7Ci0JCQkJCQkJfQotCQkJCQkJfQotCQkJCQl9Ci0JCQkJfQotCi0JCQkJLy8gQXBwbHkgY29udmVydGVyIChpZiBub3QgYW4gZXF1aXZhbGVuY2UpCi0JCQkJaWYgKCBjb252ICE9PSB0cnVlICkgewotCi0JCQkJCS8vIFVubGVzcyBlcnJvcnMgYXJlIGFsbG93ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW0KLQkJCQkJaWYgKCBjb252ICYmIHNbInRocm93cyJdICkgewotCQkJCQkJcmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApOwotCQkJCQl9IGVsc2UgewotCQkJCQkJdHJ5IHsKLQkJCQkJCQlyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7Ci0JCQkJCQl9IGNhdGNoICggZSApIHsKLQkJCQkJCQlyZXR1cm4geyBzdGF0ZTogInBhcnNlcmVycm9yIiwgZXJyb3I6IGNvbnYgPyBlIDogIk5vIGNvbnZlcnNpb24gZnJvbSAiICsgcHJldiArICIgdG8gIiArIGN1cnJlbnQgfTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0KLQkJCX0KLQotCQkJLy8gVXBkYXRlIHByZXYgZm9yIG5leHQgaXRlcmF0aW9uCi0JCQlwcmV2ID0gY3VycmVudDsKLQkJfQotCX0KLQotCXJldHVybiB7IHN0YXRlOiAic3VjY2VzcyIsIGRhdGE6IHJlc3BvbnNlIH07Ci19Ci0vLyBJbnN0YWxsIHNjcmlwdCBkYXRhVHlwZQotalF1ZXJ5LmFqYXhTZXR1cCh7Ci0JYWNjZXB0czogewotCQlzY3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCIKLQl9LAotCWNvbnRlbnRzOiB7Ci0JCXNjcmlwdDogLyg/OmphdmF8ZWNtYSlzY3JpcHQvCi0JfSwKLQljb252ZXJ0ZXJzOiB7Ci0JCSJ0ZXh0IHNjcmlwdCI6IGZ1bmN0aW9uKCB0ZXh0ICkgewotCQkJalF1ZXJ5Lmdsb2JhbEV2YWwoIHRleHQgKTsKLQkJCXJldHVybiB0ZXh0OwotCQl9Ci0JfQotfSk7Ci0KLS8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgZ2xvYmFsCi1qUXVlcnkuYWpheFByZWZpbHRlciggInNjcmlwdCIsIGZ1bmN0aW9uKCBzICkgewotCWlmICggcy5jYWNoZSA9PT0gdW5kZWZpbmVkICkgewotCQlzLmNhY2hlID0gZmFsc2U7Ci0JfQotCWlmICggcy5jcm9zc0RvbWFpbiApIHsKLQkJcy50eXBlID0gIkdFVCI7Ci0JCXMuZ2xvYmFsID0gZmFsc2U7Ci0JfQotfSk7Ci0KLS8vIEJpbmQgc2NyaXB0IHRhZyBoYWNrIHRyYW5zcG9ydAotalF1ZXJ5LmFqYXhUcmFuc3BvcnQoICJzY3JpcHQiLCBmdW5jdGlvbihzKSB7Ci0KLQkvLyBUaGlzIHRyYW5zcG9ydCBvbmx5IGRlYWxzIHdpdGggY3Jvc3MgZG9tYWluIHJlcXVlc3RzCi0JaWYgKCBzLmNyb3NzRG9tYWluICkgewotCi0JCXZhciBzY3JpcHQsCi0JCQloZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBqUXVlcnkoImhlYWQiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Ci0KLQkJcmV0dXJuIHsKLQotCQkJc2VuZDogZnVuY3Rpb24oIF8sIGNhbGxiYWNrICkgewotCi0JCQkJc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Ci0KLQkJCQlzY3JpcHQuYXN5bmMgPSB0cnVlOwotCi0JCQkJaWYgKCBzLnNjcmlwdENoYXJzZXQgKSB7Ci0JCQkJCXNjcmlwdC5jaGFyc2V0ID0gcy5zY3JpcHRDaGFyc2V0OwotCQkJCX0KLQotCQkJCXNjcmlwdC5zcmMgPSBzLnVybDsKLQotCQkJCS8vIEF0dGFjaCBoYW5kbGVycyBmb3IgYWxsIGJyb3dzZXJzCi0JCQkJc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiggXywgaXNBYm9ydCApIHsKLQotCQkJCQlpZiAoIGlzQWJvcnQgfHwgIXNjcmlwdC5yZWFkeVN0YXRlIHx8IC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoIHNjcmlwdC5yZWFkeVN0YXRlICkgKSB7Ci0KLQkJCQkJCS8vIEhhbmRsZSBtZW1vcnkgbGVhayBpbiBJRQotCQkJCQkJc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsOwotCi0JCQkJCQkvLyBSZW1vdmUgdGhlIHNjcmlwdAotCQkJCQkJaWYgKCBzY3JpcHQucGFyZW50Tm9kZSApIHsKLQkJCQkJCQlzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7Ci0JCQkJCQl9Ci0KLQkJCQkJCS8vIERlcmVmZXJlbmNlIHRoZSBzY3JpcHQKLQkJCQkJCXNjcmlwdCA9IG51bGw7Ci0KLQkJCQkJCS8vIENhbGxiYWNrIGlmIG5vdCBhYm9ydAotCQkJCQkJaWYgKCAhaXNBYm9ydCApIHsKLQkJCQkJCQljYWxsYmFjayggMjAwLCAic3VjY2VzcyIgKTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCX07Ci0KLQkJCQkvLyBDaXJjdW12ZW50IElFNiBidWdzIHdpdGggYmFzZSBlbGVtZW50cyAoIzI3MDkgYW5kICM0Mzc4KSBieSBwcmVwZW5kaW5nCi0JCQkJLy8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIHRvIGF2b2lkIG91ciBkb21NYW5pcCBBSkFYIHRyaWNrZXJ5Ci0JCQkJaGVhZC5pbnNlcnRCZWZvcmUoIHNjcmlwdCwgaGVhZC5maXJzdENoaWxkICk7Ci0JCQl9LAotCi0JCQlhYm9ydDogZnVuY3Rpb24oKSB7Ci0JCQkJaWYgKCBzY3JpcHQgKSB7Ci0JCQkJCXNjcmlwdC5vbmxvYWQoIHVuZGVmaW5lZCwgdHJ1ZSApOwotCQkJCX0KLQkJCX0KLQkJfTsKLQl9Ci19KTsKLXZhciBvbGRDYWxsYmFja3MgPSBbXSwKLQlyanNvbnAgPSAvKD0pXD8oPz0mfCQpfFw/XD8vOwotCi0vLyBEZWZhdWx0IGpzb25wIHNldHRpbmdzCi1qUXVlcnkuYWpheFNldHVwKHsKLQlqc29ucDogImNhbGxiYWNrIiwKLQlqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHsKLQkJdmFyIGNhbGxiYWNrID0gb2xkQ2FsbGJhY2tzLnBvcCgpIHx8ICggalF1ZXJ5LmV4cGFuZG8gKyAiXyIgKyAoIGFqYXhfbm9uY2UrKyApICk7Ci0JCXRoaXNbIGNhbGxiYWNrIF0gPSB0cnVlOwotCQlyZXR1cm4gY2FsbGJhY2s7Ci0JfQotfSk7Ci0KLS8vIERldGVjdCwgbm9ybWFsaXplIG9wdGlvbnMgYW5kIGluc3RhbGwgY2FsbGJhY2tzIGZvciBqc29ucCByZXF1ZXN0cwotalF1ZXJ5LmFqYXhQcmVmaWx0ZXIoICJqc29uIGpzb25wIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhSICkgewotCi0JdmFyIGNhbGxiYWNrTmFtZSwgb3ZlcndyaXR0ZW4sIHJlc3BvbnNlQ29udGFpbmVyLAotCQlqc29uUHJvcCA9IHMuanNvbnAgIT09IGZhbHNlICYmICggcmpzb25wLnRlc3QoIHMudXJsICkgPwotCQkJInVybCIgOgotCQkJdHlwZW9mIHMuZGF0YSA9PT0gInN0cmluZyIgJiYgISggcy5jb250ZW50VHlwZSB8fCAiIiApLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpICYmIHJqc29ucC50ZXN0KCBzLmRhdGEgKSAmJiAiZGF0YSIKLQkJKTsKLQotCS8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyAianNvbnAiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0Ci0JaWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSAianNvbnAiICkgewotCi0JCS8vIEdldCBjYWxsYmFjayBuYW1lLCByZW1lbWJlcmluZyBwcmVleGlzdGluZyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXQKLQkJY2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0galF1ZXJ5LmlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID8KLQkJCXMuanNvbnBDYWxsYmFjaygpIDoKLQkJCXMuanNvbnBDYWxsYmFjazsKLQotCQkvLyBJbnNlcnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhCi0JCWlmICgganNvblByb3AgKSB7Ci0JCQlzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsICIkMSIgKyBjYWxsYmFja05hbWUgKTsKLQkJfSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7Ci0JCQlzLnVybCArPSAoIGFqYXhfcnF1ZXJ5LnRlc3QoIHMudXJsICkgPyAiJiIgOiAiPyIgKSArIHMuanNvbnAgKyAiPSIgKyBjYWxsYmFja05hbWU7Ci0JCX0KLQotCQkvLyBVc2UgZGF0YSBjb252ZXJ0ZXIgdG8gcmV0cmlldmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0aW9uCi0JCXMuY29udmVydGVyc1sic2NyaXB0IGpzb24iXSA9IGZ1bmN0aW9uKCkgewotCQkJaWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7Ci0JCQkJalF1ZXJ5LmVycm9yKCBjYWxsYmFja05hbWUgKyAiIHdhcyBub3QgY2FsbGVkIiApOwotCQkJfQotCQkJcmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07Ci0JCX07Ci0KLQkJLy8gZm9yY2UganNvbiBkYXRhVHlwZQotCQlzLmRhdGFUeXBlc1sgMCBdID0gImpzb24iOwotCi0JCS8vIEluc3RhbGwgY2FsbGJhY2sKLQkJb3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdOwotCQl3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rpb24oKSB7Ci0JCQlyZXNwb25zZUNvbnRhaW5lciA9IGFyZ3VtZW50czsKLQkJfTsKLQotCQkvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycykKLQkJanFYSFIuYWx3YXlzKGZ1bmN0aW9uKCkgewotCQkJLy8gUmVzdG9yZSBwcmVleGlzdGluZyB2YWx1ZQotCQkJd2luZG93WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3cml0dGVuOwotCi0JCQkvLyBTYXZlIGJhY2sgYXMgZnJlZQotCQkJaWYgKCBzWyBjYWxsYmFja05hbWUgXSApIHsKLQkJCQkvLyBtYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmQKLQkJCQlzLmpzb25wQ2FsbGJhY2sgPSBvcmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7Ci0KLQkJCQkvLyBzYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlCi0JCQkJb2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApOwotCQkJfQotCi0JCQkvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2UKLQkJCWlmICggcmVzcG9uc2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7Ci0JCQkJb3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVyWyAwIF0gKTsKLQkJCX0KLQotCQkJcmVzcG9uc2VDb250YWluZXIgPSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5lZDsKLQkJfSk7Ci0KLQkJLy8gRGVsZWdhdGUgdG8gc2NyaXB0Ci0JCXJldHVybiAic2NyaXB0IjsKLQl9Ci19KTsKLXZhciB4aHJDYWxsYmFja3MsIHhoclN1cHBvcnRlZCwKLQl4aHJJZCA9IDAsCi0JLy8gIzUyODA6IEludGVybmV0IEV4cGxvcmVyIHdpbGwga2VlcCBjb25uZWN0aW9ucyBhbGl2ZSBpZiB3ZSBkb24ndCBhYm9ydCBvbiB1bmxvYWQKLQl4aHJPblVubG9hZEFib3J0ID0gd2luZG93LkFjdGl2ZVhPYmplY3QgJiYgZnVuY3Rpb24oKSB7Ci0JCS8vIEFib3J0IGFsbCBwZW5kaW5nIHJlcXVlc3RzCi0JCXZhciBrZXk7Ci0JCWZvciAoIGtleSBpbiB4aHJDYWxsYmFja3MgKSB7Ci0JCQl4aHJDYWxsYmFja3NbIGtleSBdKCB1bmRlZmluZWQsIHRydWUgKTsKLQkJfQotCX07Ci0KLS8vIEZ1bmN0aW9ucyB0byBjcmVhdGUgeGhycwotZnVuY3Rpb24gY3JlYXRlU3RhbmRhcmRYSFIoKSB7Ci0JdHJ5IHsKLQkJcmV0dXJuIG5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3QoKTsKLQl9IGNhdGNoKCBlICkge30KLX0KLQotZnVuY3Rpb24gY3JlYXRlQWN0aXZlWEhSKCkgewotCXRyeSB7Ci0JCXJldHVybiBuZXcgd2luZG93LkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7Ci0JfSBjYXRjaCggZSApIHt9Ci19Ci0KLS8vIENyZWF0ZSB0aGUgcmVxdWVzdCBvYmplY3QKLS8vIChUaGlzIGlzIHN0aWxsIGF0dGFjaGVkIHRvIGFqYXhTZXR0aW5ncyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkKLWpRdWVyeS5hamF4U2V0dGluZ3MueGhyID0gd2luZG93LkFjdGl2ZVhPYmplY3QgPwotCS8qIE1pY3Jvc29mdCBmYWlsZWQgdG8gcHJvcGVybHkKLQkgKiBpbXBsZW1lbnQgdGhlIFhNTEh0dHBSZXF1ZXN0IGluIElFNyAoY2FuJ3QgcmVxdWVzdCBsb2NhbCBmaWxlcyksCi0JICogc28gd2UgdXNlIHRoZSBBY3RpdmVYT2JqZWN0IHdoZW4gaXQgaXMgYXZhaWxhYmxlCi0JICogQWRkaXRpb25hbGx5IFhNTEh0dHBSZXF1ZXN0IGNhbiBiZSBkaXNhYmxlZCBpbiBJRTcvSUU4IHNvCi0JICogd2UgbmVlZCBhIGZhbGxiYWNrLgotCSAqLwotCWZ1bmN0aW9uKCkgewotCQlyZXR1cm4gIXRoaXMuaXNMb2NhbCAmJiBjcmVhdGVTdGFuZGFyZFhIUigpIHx8IGNyZWF0ZUFjdGl2ZVhIUigpOwotCX0gOgotCS8vIEZvciBhbGwgb3RoZXIgYnJvd3NlcnMsIHVzZSB0aGUgc3RhbmRhcmQgWE1MSHR0cFJlcXVlc3Qgb2JqZWN0Ci0JY3JlYXRlU3RhbmRhcmRYSFI7Ci0KLS8vIERldGVybWluZSBzdXBwb3J0IHByb3BlcnRpZXMKLXhoclN1cHBvcnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7Ci1qUXVlcnkuc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCAid2l0aENyZWRlbnRpYWxzIiBpbiB4aHJTdXBwb3J0ZWQgKTsKLXhoclN1cHBvcnRlZCA9IGpRdWVyeS5zdXBwb3J0LmFqYXggPSAhIXhoclN1cHBvcnRlZDsKLQotLy8gQ3JlYXRlIHRyYW5zcG9ydCBpZiB0aGUgYnJvd3NlciBjYW4gcHJvdmlkZSBhbiB4aHIKLWlmICggeGhyU3VwcG9ydGVkICkgewotCi0JalF1ZXJ5LmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oIHMgKSB7Ci0JCS8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3QKLQkJaWYgKCAhcy5jcm9zc0RvbWFpbiB8fCBqUXVlcnkuc3VwcG9ydC5jb3JzICkgewotCi0JCQl2YXIgY2FsbGJhY2s7Ci0KLQkJCXJldHVybiB7Ci0JCQkJc2VuZDogZnVuY3Rpb24oIGhlYWRlcnMsIGNvbXBsZXRlICkgewotCi0JCQkJCS8vIEdldCBhIG5ldyB4aHIKLQkJCQkJdmFyIGhhbmRsZSwgaSwKLQkJCQkJCXhociA9IHMueGhyKCk7Ci0KLQkJCQkJLy8gT3BlbiB0aGUgc29ja2V0Ci0JCQkJCS8vIFBhc3NpbmcgbnVsbCB1c2VybmFtZSwgZ2VuZXJhdGVzIGEgbG9naW4gcG9wdXAgb24gT3BlcmEgKCMyODY1KQotCQkJCQlpZiAoIHMudXNlcm5hbWUgKSB7Ci0JCQkJCQl4aHIub3Blbiggcy50eXBlLCBzLnVybCwgcy5hc3luYywgcy51c2VybmFtZSwgcy5wYXNzd29yZCApOwotCQkJCQl9IGVsc2UgewotCQkJCQkJeGhyLm9wZW4oIHMudHlwZSwgcy51cmwsIHMuYXN5bmMgKTsKLQkJCQkJfQotCi0JCQkJCS8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWQKLQkJCQkJaWYgKCBzLnhockZpZWxkcyApIHsKLQkJCQkJCWZvciAoIGkgaW4gcy54aHJGaWVsZHMgKSB7Ci0JCQkJCQkJeGhyWyBpIF0gPSBzLnhockZpZWxkc1sgaSBdOwotCQkJCQkJfQotCQkJCQl9Ci0KLQkJCQkJLy8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZAotCQkJCQlpZiAoIHMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7Ci0JCQkJCQl4aHIub3ZlcnJpZGVNaW1lVHlwZSggcy5taW1lVHlwZSApOwotCQkJCQl9Ci0KLQkJCQkJLy8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFkZXIKLQkJCQkJLy8gRm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9yIGEgcHJlZmxpZ2h0IGFyZQotCQkJCQkvLyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBzdXJlLgotCQkJCQkvLyAoaXQgY2FuIGFsd2F5cyBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyBvciBldmVuIHVzaW5nIGFqYXhTZXR1cCkKLQkJCQkJLy8gRm9yIHNhbWUtZG9tYWluIHJlcXVlc3RzLCB3b24ndCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQuCi0JCQkJCWlmICggIXMuY3Jvc3NEb21haW4gJiYgIWhlYWRlcnNbIlgtUmVxdWVzdGVkLVdpdGgiXSApIHsKLQkJCQkJCWhlYWRlcnNbIlgtUmVxdWVzdGVkLVdpdGgiXSA9ICJYTUxIdHRwUmVxdWVzdCI7Ci0JCQkJCX0KLQotCQkJCQkvLyBOZWVkIGFuIGV4dHJhIHRyeS9jYXRjaCBmb3IgY3Jvc3MgZG9tYWluIHJlcXVlc3RzIGluIEZpcmVmb3ggMwotCQkJCQl0cnkgewotCQkJCQkJZm9yICggaSBpbiBoZWFkZXJzICkgewotCQkJCQkJCXhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTsKLQkJCQkJCX0KLQkJCQkJfSBjYXRjaCggZXJyICkge30KLQotCQkJCQkvLyBEbyBzZW5kIHRoZSByZXF1ZXN0Ci0JCQkJCS8vIFRoaXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGljaCBpcyBhY3R1YWxseQotCQkJCQkvLyBoYW5kbGVkIGluIGpRdWVyeS5hamF4IChzbyBubyB0cnkvY2F0Y2ggaGVyZSkKLQkJCQkJeGhyLnNlbmQoICggcy5oYXNDb250ZW50ICYmIHMuZGF0YSApIHx8IG51bGwgKTsKLQotCQkJCQkvLyBMaXN0ZW5lcgotCQkJCQljYWxsYmFjayA9IGZ1bmN0aW9uKCBfLCBpc0Fib3J0ICkgewotCQkJCQkJdmFyIHN0YXR1cywgcmVzcG9uc2VIZWFkZXJzLCBzdGF0dXNUZXh0LCByZXNwb25zZXM7Ci0KLQkJCQkJCS8vIEZpcmVmb3ggdGhyb3dzIGV4Y2VwdGlvbnMgd2hlbiBhY2Nlc3NpbmcgcHJvcGVydGllcwotCQkJCQkJLy8gb2YgYW4geGhyIHdoZW4gYSBuZXR3b3JrIGVycm9yIG9jY3VycmVkCi0JCQkJCQkvLyBodHRwOi8vaGVscGZ1bC5rbm9icy1kaWFscy5jb20vaW5kZXgucGhwL0NvbXBvbmVudF9yZXR1cm5lZF9mYWlsdXJlX2NvZGU6XzB4ODAwNDAxMTFfKE5TX0VSUk9SX05PVF9BVkFJTEFCTEUpCi0JCQkJCQl0cnkgewotCi0JCQkJCQkJLy8gV2FzIG5ldmVyIGNhbGxlZCBhbmQgaXMgYWJvcnRlZCBvciBjb21wbGV0ZQotCQkJCQkJCWlmICggY2FsbGJhY2sgJiYgKCBpc0Fib3J0IHx8IHhoci5yZWFkeVN0YXRlID09PSA0ICkgKSB7Ci0KLQkJCQkJCQkJLy8gT25seSBjYWxsZWQgb25jZQotCQkJCQkJCQljYWxsYmFjayA9IHVuZGVmaW5lZDsKLQotCQkJCQkJCQkvLyBEbyBub3Qga2VlcCBhcyBhY3RpdmUgYW55bW9yZQotCQkJCQkJCQlpZiAoIGhhbmRsZSApIHsKLQkJCQkJCQkJCXhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBqUXVlcnkubm9vcDsKLQkJCQkJCQkJCWlmICggeGhyT25VbmxvYWRBYm9ydCApIHsKLQkJCQkJCQkJCQlkZWxldGUgeGhyQ2FsbGJhY2tzWyBoYW5kbGUgXTsKLQkJCQkJCQkJCX0KLQkJCQkJCQkJfQotCi0JCQkJCQkJCS8vIElmIGl0J3MgYW4gYWJvcnQKLQkJCQkJCQkJaWYgKCBpc0Fib3J0ICkgewotCQkJCQkJCQkJLy8gQWJvcnQgaXQgbWFudWFsbHkgaWYgbmVlZGVkCi0JCQkJCQkJCQlpZiAoIHhoci5yZWFkeVN0YXRlICE9PSA0ICkgewotCQkJCQkJCQkJCXhoci5hYm9ydCgpOwotCQkJCQkJCQkJfQotCQkJCQkJCQl9IGVsc2UgewotCQkJCQkJCQkJcmVzcG9uc2VzID0ge307Ci0JCQkJCQkJCQlzdGF0dXMgPSB4aHIuc3RhdHVzOwotCQkJCQkJCQkJcmVzcG9uc2VIZWFkZXJzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpOwotCi0JCQkJCQkJCQkvLyBXaGVuIHJlcXVlc3RpbmcgYmluYXJ5IGRhdGEsIElFNi05IHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uCi0JCQkJCQkJCQkvLyBvbiBhbnkgYXR0ZW1wdCB0byBhY2Nlc3MgcmVzcG9uc2VUZXh0ICgjMTE0MjYpCi0JCQkJCQkJCQlpZiAoIHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ID09PSAic3RyaW5nIiApIHsKLQkJCQkJCQkJCQlyZXNwb25zZXMudGV4dCA9IHhoci5yZXNwb25zZVRleHQ7Ci0JCQkJCQkJCQl9Ci0KLQkJCQkJCQkJCS8vIEZpcmVmb3ggdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGFjY2Vzc2luZwotCQkJCQkJCQkJLy8gc3RhdHVzVGV4dCBmb3IgZmF1bHR5IGNyb3NzLWRvbWFpbiByZXF1ZXN0cwotCQkJCQkJCQkJdHJ5IHsKLQkJCQkJCQkJCQlzdGF0dXNUZXh0ID0geGhyLnN0YXR1c1RleHQ7Ci0JCQkJCQkJCQl9IGNhdGNoKCBlICkgewotCQkJCQkJCQkJCS8vIFdlIG5vcm1hbGl6ZSB3aXRoIFdlYmtpdCBnaXZpbmcgYW4gZW1wdHkgc3RhdHVzVGV4dAotCQkJCQkJCQkJCXN0YXR1c1RleHQgPSAiIjsKLQkJCQkJCQkJCX0KLQotCQkJCQkJCQkJLy8gRmlsdGVyIHN0YXR1cyBmb3Igbm9uIHN0YW5kYXJkIGJlaGF2aW9ycwotCi0JCQkJCQkJCQkvLyBJZiB0aGUgcmVxdWVzdCBpcyBsb2NhbCBhbmQgd2UgaGF2ZSBkYXRhOiBhc3N1bWUgYSBzdWNjZXNzCi0JCQkJCQkJCQkvLyAoc3VjY2VzcyB3aXRoIG5vIGRhdGEgd29uJ3QgZ2V0IG5vdGlmaWVkLCB0aGF0J3MgdGhlIGJlc3Qgd2UKLQkJCQkJCQkJCS8vIGNhbiBkbyBnaXZlbiBjdXJyZW50IGltcGxlbWVudGF0aW9ucykKLQkJCQkJCQkJCWlmICggIXN0YXR1cyAmJiBzLmlzTG9jYWwgJiYgIXMuY3Jvc3NEb21haW4gKSB7Ci0JCQkJCQkJCQkJc3RhdHVzID0gcmVzcG9uc2VzLnRleHQgPyAyMDAgOiA0MDQ7Ci0JCQkJCQkJCQkvLyBJRSAtICMxNDUwOiBzb21ldGltZXMgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNAotCQkJCQkJCQkJfSBlbHNlIGlmICggc3RhdHVzID09PSAxMjIzICkgewotCQkJCQkJCQkJCXN0YXR1cyA9IDIwNDsKLQkJCQkJCQkJCX0KLQkJCQkJCQkJfQotCQkJCQkJCX0KLQkJCQkJCX0gY2F0Y2goIGZpcmVmb3hBY2Nlc3NFeGNlcHRpb24gKSB7Ci0JCQkJCQkJaWYgKCAhaXNBYm9ydCApIHsKLQkJCQkJCQkJY29tcGxldGUoIC0xLCBmaXJlZm94QWNjZXNzRXhjZXB0aW9uICk7Ci0JCQkJCQkJfQotCQkJCQkJfQotCi0JCQkJCQkvLyBDYWxsIGNvbXBsZXRlIGlmIG5lZWRlZAotCQkJCQkJaWYgKCByZXNwb25zZXMgKSB7Ci0JCQkJCQkJY29tcGxldGUoIHN0YXR1cywgc3RhdHVzVGV4dCwgcmVzcG9uc2VzLCByZXNwb25zZUhlYWRlcnMgKTsKLQkJCQkJCX0KLQkJCQkJfTsKLQotCQkJCQlpZiAoICFzLmFzeW5jICkgewotCQkJCQkJLy8gaWYgd2UncmUgaW4gc3luYyBtb2RlIHdlIGZpcmUgdGhlIGNhbGxiYWNrCi0JCQkJCQljYWxsYmFjaygpOwotCQkJCQl9IGVsc2UgaWYgKCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApIHsKLQkJCQkJCS8vIChJRTYgJiBJRTcpIGlmIGl0J3MgaW4gY2FjaGUgYW5kIGhhcyBiZWVuCi0JCQkJCQkvLyByZXRyaWV2ZWQgZGlyZWN0bHkgd2UgbmVlZCB0byBmaXJlIHRoZSBjYWxsYmFjawotCQkJCQkJc2V0VGltZW91dCggY2FsbGJhY2sgKTsKLQkJCQkJfSBlbHNlIHsKLQkJCQkJCWhhbmRsZSA9ICsreGhySWQ7Ci0JCQkJCQlpZiAoIHhock9uVW5sb2FkQWJvcnQgKSB7Ci0JCQkJCQkJLy8gQ3JlYXRlIHRoZSBhY3RpdmUgeGhycyBjYWxsYmFja3MgbGlzdCBpZiBuZWVkZWQKLQkJCQkJCQkvLyBhbmQgYXR0YWNoIHRoZSB1bmxvYWQgaGFuZGxlcgotCQkJCQkJCWlmICggIXhockNhbGxiYWNrcyApIHsKLQkJCQkJCQkJeGhyQ2FsbGJhY2tzID0ge307Ci0JCQkJCQkJCWpRdWVyeSggd2luZG93ICkudW5sb2FkKCB4aHJPblVubG9hZEFib3J0ICk7Ci0JCQkJCQkJfQotCQkJCQkJCS8vIEFkZCB0byBsaXN0IG9mIGFjdGl2ZSB4aHJzIGNhbGxiYWNrcwotCQkJCQkJCXhockNhbGxiYWNrc1sgaGFuZGxlIF0gPSBjYWxsYmFjazsKLQkJCQkJCX0KLQkJCQkJCXhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBjYWxsYmFjazsKLQkJCQkJfQotCQkJCX0sCi0KLQkJCQlhYm9ydDogZnVuY3Rpb24oKSB7Ci0JCQkJCWlmICggY2FsbGJhY2sgKSB7Ci0JCQkJCQljYWxsYmFjayggdW5kZWZpbmVkLCB0cnVlICk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9OwotCQl9Ci0JfSk7Ci19Ci12YXIgZnhOb3csIHRpbWVySWQsCi0JcmZ4dHlwZXMgPSAvXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sCi0JcmZ4bnVtID0gbmV3IFJlZ0V4cCggIl4oPzooWystXSk9fCkoIiArIGNvcmVfcG51bSArICIpKFthLXolXSopJCIsICJpIiApLAotCXJydW4gPSAvcXVldWVIb29rcyQvLAotCWFuaW1hdGlvblByZWZpbHRlcnMgPSBbIGRlZmF1bHRQcmVmaWx0ZXIgXSwKLQl0d2VlbmVycyA9IHsKLQkJIioiOiBbZnVuY3Rpb24oIHByb3AsIHZhbHVlICkgewotCQkJdmFyIGVuZCwgdW5pdCwKLQkJCQl0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICksCi0JCQkJcGFydHMgPSByZnhudW0uZXhlYyggdmFsdWUgKSwKLQkJCQl0YXJnZXQgPSB0d2Vlbi5jdXIoKSwKLQkJCQlzdGFydCA9ICt0YXJnZXQgfHwgMCwKLQkJCQlzY2FsZSA9IDEsCi0JCQkJbWF4SXRlcmF0aW9ucyA9IDIwOwotCi0JCQlpZiAoIHBhcnRzICkgewotCQkJCWVuZCA9ICtwYXJ0c1syXTsKLQkJCQl1bml0ID0gcGFydHNbM10gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyAiIiA6ICJweCIgKTsKLQotCQkJCS8vIFdlIG5lZWQgdG8gY29tcHV0ZSBzdGFydGluZyB2YWx1ZQotCQkJCWlmICggdW5pdCAhPT0gInB4IiAmJiBzdGFydCApIHsKLQkJCQkJLy8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vbnplcm8gc3RhcnRpbmcgcG9pbnQKLQkJCQkJLy8gUHJlZmVyIHRoZSBjdXJyZW50IHByb3BlcnR5LCBiZWNhdXNlIHRoaXMgcHJvY2VzcyB3aWxsIGJlIHRyaXZpYWwgaWYgaXQgdXNlcyB0aGUgc2FtZSB1bml0cwotCQkJCQkvLyBGYWxsYmFjayB0byBlbmQgb3IgYSBzaW1wbGUgY29uc3RhbnQKLQkJCQkJc3RhcnQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCBwcm9wLCB0cnVlICkgfHwgZW5kIHx8IDE7Ci0KLQkJCQkJZG8gewotCQkJCQkJLy8gSWYgcHJldmlvdXMgaXRlcmF0aW9uIHplcm9lZCBvdXQsIGRvdWJsZSB1bnRpbCB3ZSBnZXQgKnNvbWV0aGluZyoKLQkJCQkJCS8vIFVzZSBhIHN0cmluZyBmb3IgZG91YmxpbmcgZmFjdG9yIHNvIHdlIGRvbid0IGFjY2lkZW50YWxseSBzZWUgc2NhbGUgYXMgdW5jaGFuZ2VkIGJlbG93Ci0JCQkJCQlzY2FsZSA9IHNjYWxlIHx8ICIuNSI7Ci0KLQkJCQkJCS8vIEFkanVzdCBhbmQgYXBwbHkKLQkJCQkJCXN0YXJ0ID0gc3RhcnQgLyBzY2FsZTsKLQkJCQkJCWpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgcHJvcCwgc3RhcnQgKyB1bml0ICk7Ci0KLQkJCQkJLy8gVXBkYXRlIHNjYWxlLCB0b2xlcmF0aW5nIHplcm8gb3IgTmFOIGZyb20gdHdlZW4uY3VyKCkKLQkJCQkJLy8gQW5kIGJyZWFraW5nIHRoZSBsb29wIGlmIHNjYWxlIGlzIHVuY2hhbmdlZCBvciBwZXJmZWN0LCBvciBpZiB3ZSd2ZSBqdXN0IGhhZCBlbm91Z2gKLQkJCQkJfSB3aGlsZSAoIHNjYWxlICE9PSAoc2NhbGUgPSB0d2Vlbi5jdXIoKSAvIHRhcmdldCkgJiYgc2NhbGUgIT09IDEgJiYgLS1tYXhJdGVyYXRpb25zICk7Ci0JCQkJfQotCi0JCQkJdHdlZW4udW5pdCA9IHVuaXQ7Ci0JCQkJdHdlZW4uc3RhcnQgPSBzdGFydDsKLQkJCQkvLyBJZiBhICs9Ly09IHRva2VuIHdhcyBwcm92aWRlZCwgd2UncmUgZG9pbmcgYSByZWxhdGl2ZSBhbmltYXRpb24KLQkJCQl0d2Vlbi5lbmQgPSBwYXJ0c1sxXSA/IHN0YXJ0ICsgKCBwYXJ0c1sxXSArIDEgKSAqIGVuZCA6IGVuZDsKLQkJCX0KLQkJCXJldHVybiB0d2VlbjsKLQkJfV0KLQl9OwotCi0vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5Ci1mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHsKLQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotCQlmeE5vdyA9IHVuZGVmaW5lZDsKLQl9KTsKLQlyZXR1cm4gKCBmeE5vdyA9IGpRdWVyeS5ub3coKSApOwotfQotCi1mdW5jdGlvbiBjcmVhdGVUd2VlbnMoIGFuaW1hdGlvbiwgcHJvcHMgKSB7Ci0JalF1ZXJ5LmVhY2goIHByb3BzLCBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7Ci0JCXZhciBjb2xsZWN0aW9uID0gKCB0d2VlbmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCB0d2VlbmVyc1sgIioiIF0gKSwKLQkJCWluZGV4ID0gMCwKLQkJCWxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoOwotCQlmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkgewotCQkJaWYgKCBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApIHsKLQotCQkJCS8vIHdlJ3JlIGRvbmUgd2l0aCB0aGlzIHByb3BlcnR5Ci0JCQkJcmV0dXJuOwotCQkJfQotCQl9Ci0JfSk7Ci19Ci0KLWZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHsKLQl2YXIgcmVzdWx0LAotCQlzdG9wcGVkLAotCQlpbmRleCA9IDAsCi0JCWxlbmd0aCA9IGFuaW1hdGlvblByZWZpbHRlcnMubGVuZ3RoLAotCQlkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLmFsd2F5cyggZnVuY3Rpb24oKSB7Ci0JCQkvLyBkb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3IKLQkJCWRlbGV0ZSB0aWNrLmVsZW07Ci0JCX0pLAotCQl0aWNrID0gZnVuY3Rpb24oKSB7Ci0JCQlpZiAoIHN0b3BwZWQgKSB7Ci0JCQkJcmV0dXJuIGZhbHNlOwotCQkJfQotCQkJdmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSwKLQkJCQlyZW1haW5pbmcgPSBNYXRoLm1heCggMCwgYW5pbWF0aW9uLnN0YXJ0VGltZSArIGFuaW1hdGlvbi5kdXJhdGlvbiAtIGN1cnJlbnRUaW1lICksCi0JCQkJLy8gYXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIDEgLSAoIDAuNSB8fCAwICkgKCMxMjQ5NykKLQkJCQl0ZW1wID0gcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsCi0JCQkJcGVyY2VudCA9IDEgLSB0ZW1wLAotCQkJCWluZGV4ID0gMCwKLQkJCQlsZW5ndGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDsKLQotCQkJZm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7Ci0JCQkJYW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIHBlcmNlbnQgKTsKLQkJCX0KLQotCQkJZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIHBlcmNlbnQsIHJlbWFpbmluZyBdKTsKLQotCQkJaWYgKCBwZXJjZW50IDwgMSAmJiBsZW5ndGggKSB7Ci0JCQkJcmV0dXJuIHJlbWFpbmluZzsKLQkJCX0gZWxzZSB7Ci0JCQkJZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uIF0gKTsKLQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQl9Ci0JCX0sCi0JCWFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2UoewotCQkJZWxlbTogZWxlbSwKLQkJCXByb3BzOiBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcGVydGllcyApLAotCQkJb3B0czogalF1ZXJ5LmV4dGVuZCggdHJ1ZSwgeyBzcGVjaWFsRWFzaW5nOiB7fSB9LCBvcHRpb25zICksCi0JCQlvcmlnaW5hbFByb3BlcnRpZXM6IHByb3BlcnRpZXMsCi0JCQlvcmlnaW5hbE9wdGlvbnM6IG9wdGlvbnMsCi0JCQlzdGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksCi0JCQlkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbiwKLQkJCXR3ZWVuczogW10sCi0JCQljcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3AsIGVuZCApIHsKLQkJCQl2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsCi0JCQkJCQlhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5nICk7Ci0JCQkJYW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiApOwotCQkJCXJldHVybiB0d2VlbjsKLQkJCX0sCi0JCQlzdG9wOiBmdW5jdGlvbiggZ290b0VuZCApIHsKLQkJCQl2YXIgaW5kZXggPSAwLAotCQkJCQkvLyBpZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnMKLQkJCQkJLy8gb3RoZXJ3aXNlIHdlIHNraXAgdGhpcyBwYXJ0Ci0JCQkJCWxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24udHdlZW5zLmxlbmd0aCA6IDA7Ci0JCQkJaWYgKCBzdG9wcGVkICkgewotCQkJCQlyZXR1cm4gdGhpczsKLQkJCQl9Ci0JCQkJc3RvcHBlZCA9IHRydWU7Ci0JCQkJZm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7Ci0JCQkJCWFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCAxICk7Ci0JCQkJfQotCi0JCQkJLy8gcmVzb2x2ZSB3aGVuIHdlIHBsYXllZCB0aGUgbGFzdCBmcmFtZQotCQkJCS8vIG90aGVyd2lzZSwgcmVqZWN0Ci0JCQkJaWYgKCBnb3RvRW5kICkgewotCQkJCQlkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApOwotCQkJCX0gZWxzZSB7Ci0JCQkJCWRlZmVycmVkLnJlamVjdFdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTsKLQkJCQl9Ci0JCQkJcmV0dXJuIHRoaXM7Ci0JCQl9Ci0JCX0pLAotCQlwcm9wcyA9IGFuaW1hdGlvbi5wcm9wczsKLQotCXByb3BGaWx0ZXIoIHByb3BzLCBhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nICk7Ci0KLQlmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHsKLQkJcmVzdWx0ID0gYW5pbWF0aW9uUHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApOwotCQlpZiAoIHJlc3VsdCApIHsKLQkJCXJldHVybiByZXN1bHQ7Ci0JCX0KLQl9Ci0KLQljcmVhdGVUd2VlbnMoIGFuaW1hdGlvbiwgcHJvcHMgKTsKLQotCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGFuaW1hdGlvbi5vcHRzLnN0YXJ0ICkgKSB7Ci0JCWFuaW1hdGlvbi5vcHRzLnN0YXJ0LmNhbGwoIGVsZW0sIGFuaW1hdGlvbiApOwotCX0KLQotCWpRdWVyeS5meC50aW1lcigKLQkJalF1ZXJ5LmV4dGVuZCggdGljaywgewotCQkJZWxlbTogZWxlbSwKLQkJCWFuaW06IGFuaW1hdGlvbiwKLQkJCXF1ZXVlOiBhbmltYXRpb24ub3B0cy5xdWV1ZQotCQl9KQotCSk7Ci0KLQkvLyBhdHRhY2ggY2FsbGJhY2tzIGZyb20gb3B0aW9ucwotCXJldHVybiBhbmltYXRpb24ucHJvZ3Jlc3MoIGFuaW1hdGlvbi5vcHRzLnByb2dyZXNzICkKLQkJLmRvbmUoIGFuaW1hdGlvbi5vcHRzLmRvbmUsIGFuaW1hdGlvbi5vcHRzLmNvbXBsZXRlICkKLQkJLmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwgKQotCQkuYWx3YXlzKCBhbmltYXRpb24ub3B0cy5hbHdheXMgKTsKLX0KLQotZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7Ci0JdmFyIHZhbHVlLCBuYW1lLCBpbmRleCwgZWFzaW5nLCBob29rczsKLQotCS8vIGNhbWVsQ2FzZSwgc3BlY2lhbEVhc2luZyBhbmQgZXhwYW5kIGNzc0hvb2sgcGFzcwotCWZvciAoIGluZGV4IGluIHByb3BzICkgewotCQluYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggaW5kZXggKTsKLQkJZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdOwotCQl2YWx1ZSA9IHByb3BzWyBpbmRleCBdOwotCQlpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1ZSApICkgewotCQkJZWFzaW5nID0gdmFsdWVbIDEgXTsKLQkJCXZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdOwotCQl9Ci0KLQkJaWYgKCBpbmRleCAhPT0gbmFtZSApIHsKLQkJCXByb3BzWyBuYW1lIF0gPSB2YWx1ZTsKLQkJCWRlbGV0ZSBwcm9wc1sgaW5kZXggXTsKLQkJfQotCi0JCWhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07Ci0JCWlmICggaG9va3MgJiYgImV4cGFuZCIgaW4gaG9va3MgKSB7Ci0JCQl2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTsKLQkJCWRlbGV0ZSBwcm9wc1sgbmFtZSBdOwotCi0JCQkvLyBub3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29udCBvdmVyd3JpdGUga2V5cyBhbHJlYWR5IHByZXNlbnQuCi0JCQkvLyBhbHNvIC0gcmV1c2luZyAnaW5kZXgnIGZyb20gYWJvdmUgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0ICJuYW1lIgotCQkJZm9yICggaW5kZXggaW4gdmFsdWUgKSB7Ci0JCQkJaWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkgewotCQkJCQlwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyBpbmRleCBdOwotCQkJCQlzcGVjaWFsRWFzaW5nWyBpbmRleCBdID0gZWFzaW5nOwotCQkJCX0KLQkJCX0KLQkJfSBlbHNlIHsKLQkJCXNwZWNpYWxFYXNpbmdbIG5hbWUgXSA9IGVhc2luZzsKLQkJfQotCX0KLX0KLQotalF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwgewotCi0JdHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHsKLQkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcHJvcHMgKSApIHsKLQkJCWNhbGxiYWNrID0gcHJvcHM7Ci0JCQlwcm9wcyA9IFsgIioiIF07Ci0JCX0gZWxzZSB7Ci0JCQlwcm9wcyA9IHByb3BzLnNwbGl0KCIgIik7Ci0JCX0KLQotCQl2YXIgcHJvcCwKLQkJCWluZGV4ID0gMCwKLQkJCWxlbmd0aCA9IHByb3BzLmxlbmd0aDsKLQotCQlmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHsKLQkJCXByb3AgPSBwcm9wc1sgaW5kZXggXTsKLQkJCXR3ZWVuZXJzWyBwcm9wIF0gPSB0d2VlbmVyc1sgcHJvcCBdIHx8IFtdOwotCQkJdHdlZW5lcnNbIHByb3AgXS51bnNoaWZ0KCBjYWxsYmFjayApOwotCQl9Ci0JfSwKLQotCXByZWZpbHRlcjogZnVuY3Rpb24oIGNhbGxiYWNrLCBwcmVwZW5kICkgewotCQlpZiAoIHByZXBlbmQgKSB7Ci0JCQlhbmltYXRpb25QcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7Ci0JCX0gZWxzZSB7Ci0JCQlhbmltYXRpb25QcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7Ci0JCX0KLQl9Ci19KTsKLQotZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJvcHMsIG9wdHMgKSB7Ci0JLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi8KLQl2YXIgcHJvcCwgaW5kZXgsIGxlbmd0aCwKLQkJdmFsdWUsIGRhdGFTaG93LCB0b2dnbGUsCi0JCXR3ZWVuLCBob29rcywgb2xkZmlyZSwKLQkJYW5pbSA9IHRoaXMsCi0JCXN0eWxlID0gZWxlbS5zdHlsZSwKLQkJb3JpZyA9IHt9LAotCQloYW5kbGVkID0gW10sCi0JCWhpZGRlbiA9IGVsZW0ubm9kZVR5cGUgJiYgaXNIaWRkZW4oIGVsZW0gKTsKLQotCS8vIGhhbmRsZSBxdWV1ZTogZmFsc2UgcHJvbWlzZXMKLQlpZiAoICFvcHRzLnF1ZXVlICkgewotCQlob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgImZ4IiApOwotCQlpZiAoIGhvb2tzLnVucXVldWVkID09IG51bGwgKSB7Ci0JCQlob29rcy51bnF1ZXVlZCA9IDA7Ci0JCQlvbGRmaXJlID0gaG9va3MuZW1wdHkuZmlyZTsKLQkJCWhvb2tzLmVtcHR5LmZpcmUgPSBmdW5jdGlvbigpIHsKLQkJCQlpZiAoICFob29rcy51bnF1ZXVlZCApIHsKLQkJCQkJb2xkZmlyZSgpOwotCQkJCX0KLQkJCX07Ci0JCX0KLQkJaG9va3MudW5xdWV1ZWQrKzsKLQotCQlhbmltLmFsd2F5cyhmdW5jdGlvbigpIHsKLQkJCS8vIGRvaW5nIHRoaXMgbWFrZXMgc3VyZSB0aGF0IHRoZSBjb21wbGV0ZSBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkCi0JCQkvLyBiZWZvcmUgdGhpcyBjb21wbGV0ZXMKLQkJCWFuaW0uYWx3YXlzKGZ1bmN0aW9uKCkgewotCQkJCWhvb2tzLnVucXVldWVkLS07Ci0JCQkJaWYgKCAhalF1ZXJ5LnF1ZXVlKCBlbGVtLCAiZngiICkubGVuZ3RoICkgewotCQkJCQlob29rcy5lbXB0eS5maXJlKCk7Ci0JCQkJfQotCQkJfSk7Ci0JCX0pOwotCX0KLQotCS8vIGhlaWdodC93aWR0aCBvdmVyZmxvdyBwYXNzCi0JaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICggImhlaWdodCIgaW4gcHJvcHMgfHwgIndpZHRoIiBpbiBwcm9wcyApICkgewotCQkvLyBNYWtlIHN1cmUgdGhhdCBub3RoaW5nIHNuZWFrcyBvdXQKLQkJLy8gUmVjb3JkIGFsbCAzIG92ZXJmbG93IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRSBkb2VzIG5vdAotCQkvLyBjaGFuZ2UgdGhlIG92ZXJmbG93IGF0dHJpYnV0ZSB3aGVuIG92ZXJmbG93WCBhbmQKLQkJLy8gb3ZlcmZsb3dZIGFyZSBzZXQgdG8gdGhlIHNhbWUgdmFsdWUKLQkJb3B0cy5vdmVyZmxvdyA9IFsgc3R5bGUub3ZlcmZsb3csIHN0eWxlLm92ZXJmbG93WCwgc3R5bGUub3ZlcmZsb3dZIF07Ci0KLQkJLy8gU2V0IGRpc3BsYXkgcHJvcGVydHkgdG8gaW5saW5lLWJsb2NrIGZvciBoZWlnaHQvd2lkdGgKLQkJLy8gYW5pbWF0aW9ucyBvbiBpbmxpbmUgZWxlbWVudHMgdGhhdCBhcmUgaGF2aW5nIHdpZHRoL2hlaWdodCBhbmltYXRlZAotCQlpZiAoIGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApID09PSAiaW5saW5lIiAmJgotCQkJCWpRdWVyeS5jc3MoIGVsZW0sICJmbG9hdCIgKSA9PT0gIm5vbmUiICkgewotCi0JCQkvLyBpbmxpbmUtbGV2ZWwgZWxlbWVudHMgYWNjZXB0IGlubGluZS1ibG9jazsKLQkJCS8vIGJsb2NrLWxldmVsIGVsZW1lbnRzIG5lZWQgdG8gYmUgaW5saW5lIHdpdGggbGF5b3V0Ci0JCQlpZiAoICFqUXVlcnkuc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0IHx8IGNzc19kZWZhdWx0RGlzcGxheSggZWxlbS5ub2RlTmFtZSApID09PSAiaW5saW5lIiApIHsKLQkJCQlzdHlsZS5kaXNwbGF5ID0gImlubGluZS1ibG9jayI7Ci0KLQkJCX0gZWxzZSB7Ci0JCQkJc3R5bGUuem9vbSA9IDE7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlpZiAoIG9wdHMub3ZlcmZsb3cgKSB7Ci0JCXN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7Ci0JCWlmICggIWpRdWVyeS5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MgKSB7Ci0JCQlhbmltLmFsd2F5cyhmdW5jdGlvbigpIHsKLQkJCQlzdHlsZS5vdmVyZmxvdyA9IG9wdHMub3ZlcmZsb3dbIDAgXTsKLQkJCQlzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07Ci0JCQkJc3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sgMiBdOwotCQkJfSk7Ci0JCX0KLQl9Ci0KLQotCS8vIHNob3cvaGlkZSBwYXNzCi0JZm9yICggaW5kZXggaW4gcHJvcHMgKSB7Ci0JCXZhbHVlID0gcHJvcHNbIGluZGV4IF07Ci0JCWlmICggcmZ4dHlwZXMuZXhlYyggdmFsdWUgKSApIHsKLQkJCWRlbGV0ZSBwcm9wc1sgaW5kZXggXTsKLQkJCXRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gInRvZ2dsZSI7Ci0JCQlpZiAoIHZhbHVlID09PSAoIGhpZGRlbiA/ICJoaWRlIiA6ICJzaG93IiApICkgewotCQkJCWNvbnRpbnVlOwotCQkJfQotCQkJaGFuZGxlZC5wdXNoKCBpbmRleCApOwotCQl9Ci0JfQotCi0JbGVuZ3RoID0gaGFuZGxlZC5sZW5ndGg7Ci0JaWYgKCBsZW5ndGggKSB7Ci0JCWRhdGFTaG93ID0galF1ZXJ5Ll9kYXRhKCBlbGVtLCAiZnhzaG93IiApIHx8IGpRdWVyeS5fZGF0YSggZWxlbSwgImZ4c2hvdyIsIHt9ICk7Ci0JCWlmICggImhpZGRlbiIgaW4gZGF0YVNob3cgKSB7Ci0JCQloaWRkZW4gPSBkYXRhU2hvdy5oaWRkZW47Ci0JCX0KLQotCQkvLyBzdG9yZSBzdGF0ZSBpZiBpdHMgdG9nZ2xlIC0gZW5hYmxlcyAuc3RvcCgpLnRvZ2dsZSgpIHRvICJyZXZlcnNlIgotCQlpZiAoIHRvZ2dsZSApIHsKLQkJCWRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47Ci0JCX0KLQkJaWYgKCBoaWRkZW4gKSB7Ci0JCQlqUXVlcnkoIGVsZW0gKS5zaG93KCk7Ci0JCX0gZWxzZSB7Ci0JCQlhbmltLmRvbmUoZnVuY3Rpb24oKSB7Ci0JCQkJalF1ZXJ5KCBlbGVtICkuaGlkZSgpOwotCQkJfSk7Ci0JCX0KLQkJYW5pbS5kb25lKGZ1bmN0aW9uKCkgewotCQkJdmFyIHByb3A7Ci0JCQlqUXVlcnkuX3JlbW92ZURhdGEoIGVsZW0sICJmeHNob3ciICk7Ci0JCQlmb3IgKCBwcm9wIGluIG9yaWcgKSB7Ci0JCQkJalF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBvcmlnWyBwcm9wIF0gKTsKLQkJCX0KLQkJfSk7Ci0JCWZvciAoIGluZGV4ID0gMCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHsKLQkJCXByb3AgPSBoYW5kbGVkWyBpbmRleCBdOwotCQkJdHdlZW4gPSBhbmltLmNyZWF0ZVR3ZWVuKCBwcm9wLCBoaWRkZW4gPyBkYXRhU2hvd1sgcHJvcCBdIDogMCApOwotCQkJb3JpZ1sgcHJvcCBdID0gZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AgKTsKLQotCQkJaWYgKCAhKCBwcm9wIGluIGRhdGFTaG93ICkgKSB7Ci0JCQkJZGF0YVNob3dbIHByb3AgXSA9IHR3ZWVuLnN0YXJ0OwotCQkJCWlmICggaGlkZGVuICkgewotCQkJCQl0d2Vlbi5lbmQgPSB0d2Vlbi5zdGFydDsKLQkJCQkJdHdlZW4uc3RhcnQgPSBwcm9wID09PSAid2lkdGgiIHx8IHByb3AgPT09ICJoZWlnaHQiID8gMSA6IDA7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotfQotCi1mdW5jdGlvbiBUd2VlbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKSB7Ci0JcmV0dXJuIG5ldyBUd2Vlbi5wcm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKTsKLX0KLWpRdWVyeS5Ud2VlbiA9IFR3ZWVuOwotCi1Ud2Vlbi5wcm90b3R5cGUgPSB7Ci0JY29uc3RydWN0b3I6IFR3ZWVuLAotCWluaXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZywgdW5pdCApIHsKLQkJdGhpcy5lbGVtID0gZWxlbTsKLQkJdGhpcy5wcm9wID0gcHJvcDsKLQkJdGhpcy5lYXNpbmcgPSBlYXNpbmcgfHwgInN3aW5nIjsKLQkJdGhpcy5vcHRpb25zID0gb3B0aW9uczsKLQkJdGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTsKLQkJdGhpcy5lbmQgPSBlbmQ7Ci0JCXRoaXMudW5pdCA9IHVuaXQgfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyAiIiA6ICJweCIgKTsKLQl9LAotCWN1cjogZnVuY3Rpb24oKSB7Ci0JCXZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07Ci0KLQkJcmV0dXJuIGhvb2tzICYmIGhvb2tzLmdldCA/Ci0JCQlob29rcy5nZXQoIHRoaXMgKSA6Ci0JCQlUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KCB0aGlzICk7Ci0JfSwKLQlydW46IGZ1bmN0aW9uKCBwZXJjZW50ICkgewotCQl2YXIgZWFzZWQsCi0JCQlob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07Ci0KLQkJaWYgKCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKSB7Ci0JCQl0aGlzLnBvcyA9IGVhc2VkID0galF1ZXJ5LmVhc2luZ1sgdGhpcy5lYXNpbmcgXSgKLQkJCQlwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb24KLQkJCSk7Ci0JCX0gZWxzZSB7Ci0JCQl0aGlzLnBvcyA9IGVhc2VkID0gcGVyY2VudDsKLQkJfQotCQl0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7Ci0KLQkJaWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHsKLQkJCXRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMgKTsKLQkJfQotCi0JCWlmICggaG9va3MgJiYgaG9va3Muc2V0ICkgewotCQkJaG9va3Muc2V0KCB0aGlzICk7Ci0JCX0gZWxzZSB7Ci0JCQlUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KCB0aGlzICk7Ci0JCX0KLQkJcmV0dXJuIHRoaXM7Ci0JfQotfTsKLQotVHdlZW4ucHJvdG90eXBlLmluaXQucHJvdG90eXBlID0gVHdlZW4ucHJvdG90eXBlOwotCi1Ud2Vlbi5wcm9wSG9va3MgPSB7Ci0JX2RlZmF1bHQ6IHsKLQkJZ2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7Ci0JCQl2YXIgcmVzdWx0OwotCi0JCQlpZiAoIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSAhPSBudWxsICYmCi0JCQkJKCF0d2Vlbi5lbGVtLnN0eWxlIHx8IHR3ZWVuLmVsZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsKSApIHsKLQkJCQlyZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdOwotCQkJfQotCi0JCQkvLyBwYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2FsbHkKLQkJCS8vIGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBmYWxsYmFjayB0byBhIHN0cmluZyBpZiB0aGUgcGFyc2UgZmFpbHMKLQkJCS8vIHNvLCBzaW1wbGUgdmFsdWVzIHN1Y2ggYXMgIjEwcHgiIGFyZSBwYXJzZWQgdG8gRmxvYXQuCi0JCQkvLyBjb21wbGV4IHZhbHVlcyBzdWNoIGFzICJyb3RhdGUoMXJhZCkiIGFyZSByZXR1cm5lZCBhcyBpcy4KLQkJCXJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsICIiICk7Ci0JCQkvLyBFbXB0eSBzdHJpbmdzLCBudWxsLCB1bmRlZmluZWQgYW5kICJhdXRvIiBhcmUgY29udmVydGVkIHRvIDAuCi0JCQlyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09ICJhdXRvIiA/IDAgOiByZXN1bHQ7Ci0JCX0sCi0JCXNldDogZnVuY3Rpb24oIHR3ZWVuICkgewotCQkJLy8gdXNlIHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQgLSB1c2UgY3NzSG9vayBpZiBpdHMgdGhlcmUgLSB1c2UgLnN0eWxlIGlmIGl0cwotCQkJLy8gYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUKLQkJCWlmICggalF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSApIHsKLQkJCQlqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdKCB0d2VlbiApOwotCQkJfSBlbHNlIGlmICggdHdlZW4uZWxlbS5zdHlsZSAmJiAoIHR3ZWVuLmVsZW0uc3R5bGVbIGpRdWVyeS5jc3NQcm9wc1sgdHdlZW4ucHJvcCBdIF0gIT0gbnVsbCB8fCBqUXVlcnkuY3NzSG9va3NbIHR3ZWVuLnByb3AgXSApICkgewotCQkJCWpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsgdHdlZW4udW5pdCApOwotCQkJfSBlbHNlIHsKLQkJCQl0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7Ci0JCQl9Ci0JCX0KLQl9Ci19OwotCi0vLyBSZW1vdmUgaW4gMi4wIC0gdGhpcyBzdXBwb3J0cyBJRTgncyBwYW5pYyBiYXNlZCBhcHByb2FjaAotLy8gdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzCi0KLVR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHsKLQlzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHsKLQkJaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHsKLQkJCXR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdzsKLQkJfQotCX0KLX07Ci0KLWpRdWVyeS5lYWNoKFsgInRvZ2dsZSIsICJzaG93IiwgImhpZGUiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgewotCXZhciBjc3NGbiA9IGpRdWVyeS5mblsgbmFtZSBdOwotCWpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewotCQlyZXR1cm4gc3BlZWQgPT0gbnVsbCB8fCB0eXBlb2Ygc3BlZWQgPT09ICJib29sZWFuIiA/Ci0JCQljc3NGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICkgOgotCQkJdGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOwotCX07Ci19KTsKLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0JZmFkZVRvOiBmdW5jdGlvbiggc3BlZWQsIHRvLCBlYXNpbmcsIGNhbGxiYWNrICkgewotCi0JCS8vIHNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMAotCQlyZXR1cm4gdGhpcy5maWx0ZXIoIGlzSGlkZGVuICkuY3NzKCAib3BhY2l0eSIsIDAgKS5zaG93KCkKLQotCQkJLy8gYW5pbWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkCi0JCQkuZW5kKCkuYW5pbWF0ZSh7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7Ci0JfSwKLQlhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7Ci0JCXZhciBlbXB0eSA9IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBwcm9wICksCi0JCQlvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICksCi0JCQlkb0FuaW1hdGlvbiA9IGZ1bmN0aW9uKCkgewotCQkJCS8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHByb3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3b24ndCBiZSBsb3N0Ci0JCQkJdmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wICksIG9wdGFsbCApOwotCQkJCWRvQW5pbWF0aW9uLmZpbmlzaCA9IGZ1bmN0aW9uKCkgewotCQkJCQlhbmltLnN0b3AoIHRydWUgKTsKLQkJCQl9OwotCQkJCS8vIEVtcHR5IGFuaW1hdGlvbnMsIG9yIGZpbmlzaGluZyByZXNvbHZlcyBpbW1lZGlhdGVseQotCQkJCWlmICggZW1wdHkgfHwgalF1ZXJ5Ll9kYXRhKCB0aGlzLCAiZmluaXNoIiApICkgewotCQkJCQlhbmltLnN0b3AoIHRydWUgKTsKLQkJCQl9Ci0JCQl9OwotCQkJZG9BbmltYXRpb24uZmluaXNoID0gZG9BbmltYXRpb247Ci0KLQkJcmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1ZSA9PT0gZmFsc2UgPwotCQkJdGhpcy5lYWNoKCBkb0FuaW1hdGlvbiApIDoKLQkJCXRoaXMucXVldWUoIG9wdGFsbC5xdWV1ZSwgZG9BbmltYXRpb24gKTsKLQl9LAotCXN0b3A6IGZ1bmN0aW9uKCB0eXBlLCBjbGVhclF1ZXVlLCBnb3RvRW5kICkgewotCQl2YXIgc3RvcFF1ZXVlID0gZnVuY3Rpb24oIGhvb2tzICkgewotCQkJdmFyIHN0b3AgPSBob29rcy5zdG9wOwotCQkJZGVsZXRlIGhvb2tzLnN0b3A7Ci0JCQlzdG9wKCBnb3RvRW5kICk7Ci0JCX07Ci0KLQkJaWYgKCB0eXBlb2YgdHlwZSAhPT0gInN0cmluZyIgKSB7Ci0JCQlnb3RvRW5kID0gY2xlYXJRdWV1ZTsKLQkJCWNsZWFyUXVldWUgPSB0eXBlOwotCQkJdHlwZSA9IHVuZGVmaW5lZDsKLQkJfQotCQlpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFsc2UgKSB7Ci0JCQl0aGlzLnF1ZXVlKCB0eXBlIHx8ICJmeCIsIFtdICk7Ci0JCX0KLQotCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotCQkJdmFyIGRlcXVldWUgPSB0cnVlLAotCQkJCWluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5cGUgKyAicXVldWVIb29rcyIsCi0JCQkJdGltZXJzID0galF1ZXJ5LnRpbWVycywKLQkJCQlkYXRhID0galF1ZXJ5Ll9kYXRhKCB0aGlzICk7Ci0KLQkJCWlmICggaW5kZXggKSB7Ci0JCQkJaWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCApIHsKLQkJCQkJc3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7Ci0JCQkJfQotCQkJfSBlbHNlIHsKLQkJCQlmb3IgKCBpbmRleCBpbiBkYXRhICkgewotCQkJCQlpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHsKLQkJCQkJCXN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCi0JCQlmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkgewotCQkJCWlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYgKHR5cGUgPT0gbnVsbCB8fCB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUpICkgewotCQkJCQl0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3RvRW5kICk7Ci0JCQkJCWRlcXVldWUgPSBmYWxzZTsKLQkJCQkJdGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTsKLQkJCQl9Ci0JCQl9Ci0KLQkJCS8vIHN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQKLQkJCS8vIHRpbWVycyBjdXJyZW50bHkgd2lsbCBjYWxsIHRoZWlyIGNvbXBsZXRlIGNhbGxiYWNrcywgd2hpY2ggd2lsbCBkZXF1ZXVlCi0JCQkvLyBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZAotCQkJaWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkgewotCQkJCWpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7Ci0JCQl9Ci0JCX0pOwotCX0sCi0JZmluaXNoOiBmdW5jdGlvbiggdHlwZSApIHsKLQkJaWYgKCB0eXBlICE9PSBmYWxzZSApIHsKLQkJCXR5cGUgPSB0eXBlIHx8ICJmeCI7Ci0JCX0KLQkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLQkJCXZhciBpbmRleCwKLQkJCQlkYXRhID0galF1ZXJ5Ll9kYXRhKCB0aGlzICksCi0JCQkJcXVldWUgPSBkYXRhWyB0eXBlICsgInF1ZXVlIiBdLAotCQkJCWhvb2tzID0gZGF0YVsgdHlwZSArICJxdWV1ZUhvb2tzIiBdLAotCQkJCXRpbWVycyA9IGpRdWVyeS50aW1lcnMsCi0JCQkJbGVuZ3RoID0gcXVldWUgPyBxdWV1ZS5sZW5ndGggOiAwOwotCi0JCQkvLyBlbmFibGUgZmluaXNoaW5nIGZsYWcgb24gcHJpdmF0ZSBkYXRhCi0JCQlkYXRhLmZpbmlzaCA9IHRydWU7Ci0KLQkJCS8vIGVtcHR5IHRoZSBxdWV1ZSBmaXJzdAotCQkJalF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBbXSApOwotCi0JCQlpZiAoIGhvb2tzICYmIGhvb2tzLmN1ciAmJiBob29rcy5jdXIuZmluaXNoICkgewotCQkJCWhvb2tzLmN1ci5maW5pc2guY2FsbCggdGhpcyApOwotCQkJfQotCi0JCQkvLyBsb29rIGZvciBhbnkgYWN0aXZlIGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbQotCQkJZm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHsKLQkJCQlpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApIHsKLQkJCQkJdGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSApOwotCQkJCQl0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApOwotCQkJCX0KLQkJCX0KLQotCQkJLy8gbG9vayBmb3IgYW55IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW0KLQkJCWZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7Ci0JCQkJaWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7Ci0JCQkJCXF1ZXVlWyBpbmRleCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7Ci0JCQkJfQotCQkJfQotCi0JCQkvLyB0dXJuIG9mZiBmaW5pc2hpbmcgZmxhZwotCQkJZGVsZXRlIGRhdGEuZmluaXNoOwotCQl9KTsKLQl9Ci19KTsKLQotLy8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRpb24KLWZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGggKSB7Ci0JdmFyIHdoaWNoLAotCQlhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH0sCi0JCWkgPSAwOwotCi0JLy8gaWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRvIGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLAotCS8vIGlmIHdlIGRvbid0IGluY2x1ZGUgd2lkdGgsIHN0ZXAgdmFsdWUgaXMgMiB0byBza2lwIG92ZXIgTGVmdCBhbmQgUmlnaHQKLQlpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGg/IDEgOiAwOwotCWZvciggOyBpIDwgNCA7IGkgKz0gMiAtIGluY2x1ZGVXaWR0aCApIHsKLQkJd2hpY2ggPSBjc3NFeHBhbmRbIGkgXTsKLQkJYXR0cnNbICJtYXJnaW4iICsgd2hpY2ggXSA9IGF0dHJzWyAicGFkZGluZyIgKyB3aGljaCBdID0gdHlwZTsKLQl9Ci0KLQlpZiAoIGluY2x1ZGVXaWR0aCApIHsKLQkJYXR0cnMub3BhY2l0eSA9IGF0dHJzLndpZHRoID0gdHlwZTsKLQl9Ci0KLQlyZXR1cm4gYXR0cnM7Ci19Ci0KLS8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnMKLWpRdWVyeS5lYWNoKHsKLQlzbGlkZURvd246IGdlbkZ4KCJzaG93IiksCi0Jc2xpZGVVcDogZ2VuRngoImhpZGUiKSwKLQlzbGlkZVRvZ2dsZTogZ2VuRngoInRvZ2dsZSIpLAotCWZhZGVJbjogeyBvcGFjaXR5OiAic2hvdyIgfSwKLQlmYWRlT3V0OiB7IG9wYWNpdHk6ICJoaWRlIiB9LAotCWZhZGVUb2dnbGU6IHsgb3BhY2l0eTogInRvZ2dsZSIgfQotfSwgZnVuY3Rpb24oIG5hbWUsIHByb3BzICkgewotCWpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewotCQlyZXR1cm4gdGhpcy5hbmltYXRlKCBwcm9wcywgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTsKLQl9OwotfSk7Ci0KLWpRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHsKLQl2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSAib2JqZWN0IiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDogewotCQljb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fAotCQkJalF1ZXJ5LmlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsCi0JCWR1cmF0aW9uOiBzcGVlZCwKLQkJZWFzaW5nOiBmbiAmJiBlYXNpbmcgfHwgZWFzaW5nICYmICFqUXVlcnkuaXNGdW5jdGlvbiggZWFzaW5nICkgJiYgZWFzaW5nCi0JfTsKLQotCW9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5vZmYgPyAwIDogdHlwZW9mIG9wdC5kdXJhdGlvbiA9PT0gIm51bWJlciIgPyBvcHQuZHVyYXRpb24gOgotCQlvcHQuZHVyYXRpb24gaW4galF1ZXJ5LmZ4LnNwZWVkcyA/IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdIDogalF1ZXJ5LmZ4LnNwZWVkcy5fZGVmYXVsdDsKLQotCS8vIG5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+ICJmeCIKLQlpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHsKLQkJb3B0LnF1ZXVlID0gImZ4IjsKLQl9Ci0KLQkvLyBRdWV1ZWluZwotCW9wdC5vbGQgPSBvcHQuY29tcGxldGU7Ci0KLQlvcHQuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKLQkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkgewotCQkJb3B0Lm9sZC5jYWxsKCB0aGlzICk7Ci0JCX0KLQotCQlpZiAoIG9wdC5xdWV1ZSApIHsKLQkJCWpRdWVyeS5kZXF1ZXVlKCB0aGlzLCBvcHQucXVldWUgKTsKLQkJfQotCX07Ci0KLQlyZXR1cm4gb3B0OwotfTsKLQotalF1ZXJ5LmVhc2luZyA9IHsKLQlsaW5lYXI6IGZ1bmN0aW9uKCBwICkgewotCQlyZXR1cm4gcDsKLQl9LAotCXN3aW5nOiBmdW5jdGlvbiggcCApIHsKLQkJcmV0dXJuIDAuNSAtIE1hdGguY29zKCBwKk1hdGguUEkgKSAvIDI7Ci0JfQotfTsKLQotalF1ZXJ5LnRpbWVycyA9IFtdOwotalF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7Ci1qUXVlcnkuZngudGljayA9IGZ1bmN0aW9uKCkgewotCXZhciB0aW1lciwKLQkJdGltZXJzID0galF1ZXJ5LnRpbWVycywKLQkJaSA9IDA7Ci0KLQlmeE5vdyA9IGpRdWVyeS5ub3coKTsKLQotCWZvciAoIDsgaSA8IHRpbWVycy5sZW5ndGg7IGkrKyApIHsKLQkJdGltZXIgPSB0aW1lcnNbIGkgXTsKLQkJLy8gQ2hlY2tzIHRoZSB0aW1lciBoYXMgbm90IGFscmVhZHkgYmVlbiByZW1vdmVkCi0JCWlmICggIXRpbWVyKCkgJiYgdGltZXJzWyBpIF0gPT09IHRpbWVyICkgewotCQkJdGltZXJzLnNwbGljZSggaS0tLCAxICk7Ci0JCX0KLQl9Ci0KLQlpZiAoICF0aW1lcnMubGVuZ3RoICkgewotCQlqUXVlcnkuZnguc3RvcCgpOwotCX0KLQlmeE5vdyA9IHVuZGVmaW5lZDsKLX07Ci0KLWpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHsKLQlpZiAoIHRpbWVyKCkgJiYgalF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApICkgewotCQlqUXVlcnkuZnguc3RhcnQoKTsKLQl9Ci19OwotCi1qUXVlcnkuZnguaW50ZXJ2YWwgPSAxMzsKLQotalF1ZXJ5LmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7Ci0JaWYgKCAhdGltZXJJZCApIHsKLQkJdGltZXJJZCA9IHNldEludGVydmFsKCBqUXVlcnkuZngudGljaywgalF1ZXJ5LmZ4LmludGVydmFsICk7Ci0JfQotfTsKLQotalF1ZXJ5LmZ4LnN0b3AgPSBmdW5jdGlvbigpIHsKLQljbGVhckludGVydmFsKCB0aW1lcklkICk7Ci0JdGltZXJJZCA9IG51bGw7Ci19OwotCi1qUXVlcnkuZnguc3BlZWRzID0gewotCXNsb3c6IDYwMCwKLQlmYXN0OiAyMDAsCi0JLy8gRGVmYXVsdCBzcGVlZAotCV9kZWZhdWx0OiA0MDAKLX07Ci0KLS8vIEJhY2sgQ29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50Ci1qUXVlcnkuZnguc3RlcCA9IHt9OwotCi1pZiAoIGpRdWVyeS5leHByICYmIGpRdWVyeS5leHByLmZpbHRlcnMgKSB7Ci0JalF1ZXJ5LmV4cHIuZmlsdGVycy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkgewotCQlyZXR1cm4galF1ZXJ5LmdyZXAoalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkgewotCQkJcmV0dXJuIGVsZW0gPT09IGZuLmVsZW07Ci0JCX0pLmxlbmd0aDsKLQl9OwotfQotalF1ZXJ5LmZuLm9mZnNldCA9IGZ1bmN0aW9uKCBvcHRpb25zICkgewotCWlmICggYXJndW1lbnRzLmxlbmd0aCApIHsKLQkJcmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/Ci0JCQl0aGlzIDoKLQkJCXRoaXMuZWFjaChmdW5jdGlvbiggaSApIHsKLQkJCQlqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApOwotCQkJfSk7Ci0JfQotCi0JdmFyIGRvY0VsZW0sIHdpbiwKLQkJYm94ID0geyB0b3A6IDAsIGxlZnQ6IDAgfSwKLQkJZWxlbSA9IHRoaXNbIDAgXSwKLQkJZG9jID0gZWxlbSAmJiBlbGVtLm93bmVyRG9jdW1lbnQ7Ci0KLQlpZiAoICFkb2MgKSB7Ci0JCXJldHVybjsKLQl9Ci0KLQlkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDsKLQotCS8vIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIGRpc2Nvbm5lY3RlZCBET00gbm9kZQotCWlmICggIWpRdWVyeS5jb250YWlucyggZG9jRWxlbSwgZWxlbSApICkgewotCQlyZXR1cm4gYm94OwotCX0KLQotCS8vIElmIHdlIGRvbid0IGhhdmUgZ0JDUiwganVzdCB1c2UgMCwwIHJhdGhlciB0aGFuIGVycm9yCi0JLy8gQmxhY2tCZXJyeSA1LCBpT1MgMyAob3JpZ2luYWwgaVBob25lKQotCWlmICggdHlwZW9mIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICE9PSBjb3JlX3N0cnVuZGVmaW5lZCApIHsKLQkJYm94ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLQl9Ci0Jd2luID0gZ2V0V2luZG93KCBkb2MgKTsKLQlyZXR1cm4gewotCQl0b3A6IGJveC50b3AgICsgKCB3aW4ucGFnZVlPZmZzZXQgfHwgZG9jRWxlbS5zY3JvbGxUb3AgKSAgLSAoIGRvY0VsZW0uY2xpZW50VG9wICB8fCAwICksCi0JCWxlZnQ6IGJveC5sZWZ0ICsgKCB3aW4ucGFnZVhPZmZzZXQgfHwgZG9jRWxlbS5zY3JvbGxMZWZ0ICkgLSAoIGRvY0VsZW0uY2xpZW50TGVmdCB8fCAwICkKLQl9OwotfTsKLQotalF1ZXJ5Lm9mZnNldCA9IHsKLQotCXNldE9mZnNldDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGkgKSB7Ci0JCXZhciBwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sICJwb3NpdGlvbiIgKTsKLQotCQkvLyBzZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtCi0JCWlmICggcG9zaXRpb24gPT09ICJzdGF0aWMiICkgewotCQkJZWxlbS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7Ci0JCX0KLQotCQl2YXIgY3VyRWxlbSA9IGpRdWVyeSggZWxlbSApLAotCQkJY3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKSwKLQkJCWN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sICJ0b3AiICksCi0JCQljdXJDU1NMZWZ0ID0galF1ZXJ5LmNzcyggZWxlbSwgImxlZnQiICksCi0JCQljYWxjdWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24gPT09ICJhYnNvbHV0ZSIgfHwgcG9zaXRpb24gPT09ICJmaXhlZCIgKSAmJiBqUXVlcnkuaW5BcnJheSgiYXV0byIsIFtjdXJDU1NUb3AsIGN1ckNTU0xlZnRdKSA+IC0xLAotCQkJcHJvcHMgPSB7fSwgY3VyUG9zaXRpb24gPSB7fSwgY3VyVG9wLCBjdXJMZWZ0OwotCi0JCS8vIG5lZWQgdG8gYmUgYWJsZSB0byBjYWxjdWxhdGUgcG9zaXRpb24gaWYgZWl0aGVyIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZAotCQlpZiAoIGNhbGN1bGF0ZVBvc2l0aW9uICkgewotCQkJY3VyUG9zaXRpb24gPSBjdXJFbGVtLnBvc2l0aW9uKCk7Ci0JCQljdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7Ci0JCQljdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVmdDsKLQkJfSBlbHNlIHsKLQkJCWN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7Ci0JCQljdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7Ci0JCX0KLQotCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7Ci0JCQlvcHRpb25zID0gb3B0aW9ucy5jYWxsKCBlbGVtLCBpLCBjdXJPZmZzZXQgKTsKLQkJfQotCi0JCWlmICggb3B0aW9ucy50b3AgIT0gbnVsbCApIHsKLQkJCXByb3BzLnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7Ci0JCX0KLQkJaWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHsKLQkJCXByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0OwotCQl9Ci0KLQkJaWYgKCAidXNpbmciIGluIG9wdGlvbnMgKSB7Ci0JCQlvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7Ci0JCX0gZWxzZSB7Ci0JCQljdXJFbGVtLmNzcyggcHJvcHMgKTsKLQkJfQotCX0KLX07Ci0KLQotalF1ZXJ5LmZuLmV4dGVuZCh7Ci0KLQlwb3NpdGlvbjogZnVuY3Rpb24oKSB7Ci0JCWlmICggIXRoaXNbIDAgXSApIHsKLQkJCXJldHVybjsKLQkJfQotCi0JCXZhciBvZmZzZXRQYXJlbnQsIG9mZnNldCwKLQkJCXBhcmVudE9mZnNldCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH0sCi0JCQllbGVtID0gdGhpc1sgMCBdOwotCi0JCS8vIGZpeGVkIGVsZW1lbnRzIGFyZSBvZmZzZXQgZnJvbSB3aW5kb3cgKHBhcmVudE9mZnNldCA9IHt0b3A6MCwgbGVmdDogMH0sIGJlY2F1c2UgaXQgaXMgaXQncyBvbmx5IG9mZnNldCBwYXJlbnQKLQkJaWYgKCBqUXVlcnkuY3NzKCBlbGVtLCAicG9zaXRpb24iICkgPT09ICJmaXhlZCIgKSB7Ci0JCQkvLyB3ZSBhc3N1bWUgdGhhdCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgaXMgYXZhaWxhYmxlIHdoZW4gY29tcHV0ZWQgcG9zaXRpb24gaXMgZml4ZWQKLQkJCW9mZnNldCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0JCX0gZWxzZSB7Ci0JCQkvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVudAotCQkJb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQoKTsKLQotCQkJLy8gR2V0IGNvcnJlY3Qgb2Zmc2V0cwotCQkJb2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTsKLQkJCWlmICggIWpRdWVyeS5ub2RlTmFtZSggb2Zmc2V0UGFyZW50WyAwIF0sICJodG1sIiApICkgewotCQkJCXBhcmVudE9mZnNldCA9IG9mZnNldFBhcmVudC5vZmZzZXQoKTsKLQkJCX0KLQotCQkJLy8gQWRkIG9mZnNldFBhcmVudCBib3JkZXJzCi0JCQlwYXJlbnRPZmZzZXQudG9wICArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgImJvcmRlclRvcFdpZHRoIiwgdHJ1ZSApOwotCQkJcGFyZW50T2Zmc2V0LmxlZnQgKz0galF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50WyAwIF0sICJib3JkZXJMZWZ0V2lkdGgiLCB0cnVlICk7Ci0JCX0KLQotCQkvLyBTdWJ0cmFjdCBwYXJlbnQgb2Zmc2V0cyBhbmQgZWxlbWVudCBtYXJnaW5zCi0JCS8vIG5vdGU6IHdoZW4gYW4gZWxlbWVudCBoYXMgbWFyZ2luOiBhdXRvIHRoZSBvZmZzZXRMZWZ0IGFuZCBtYXJnaW5MZWZ0Ci0JCS8vIGFyZSB0aGUgc2FtZSBpbiBTYWZhcmkgY2F1c2luZyBvZmZzZXQubGVmdCB0byBpbmNvcnJlY3RseSBiZSAwCi0JCXJldHVybiB7Ci0JCQl0b3A6ICBvZmZzZXQudG9wICAtIHBhcmVudE9mZnNldC50b3AgLSBqUXVlcnkuY3NzKCBlbGVtLCAibWFyZ2luVG9wIiwgdHJ1ZSApLAotCQkJbGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQubGVmdCAtIGpRdWVyeS5jc3MoIGVsZW0sICJtYXJnaW5MZWZ0IiwgdHJ1ZSkKLQkJfTsKLQl9LAotCi0Jb2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkgewotCQkJdmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKLQkJCXdoaWxlICggb2Zmc2V0UGFyZW50ICYmICggIWpRdWVyeS5ub2RlTmFtZSggb2Zmc2V0UGFyZW50LCAiaHRtbCIgKSAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsICJwb3NpdGlvbiIpID09PSAic3RhdGljIiApICkgewotCQkJCW9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7Ci0JCQl9Ci0JCQlyZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKLQkJfSk7Ci0JfQotfSk7Ci0KLQotLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzCi1qUXVlcnkuZWFjaCgge3Njcm9sbExlZnQ6ICJwYWdlWE9mZnNldCIsIHNjcm9sbFRvcDogInBhZ2VZT2Zmc2V0In0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7Ci0JdmFyIHRvcCA9IC9ZLy50ZXN0KCBwcm9wICk7Ci0KLQlqUXVlcnkuZm5bIG1ldGhvZCBdID0gZnVuY3Rpb24oIHZhbCApIHsKLQkJcmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBtZXRob2QsIHZhbCApIHsKLQkJCXZhciB3aW4gPSBnZXRXaW5kb3coIGVsZW0gKTsKLQotCQkJaWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHsKLQkJCQlyZXR1cm4gd2luID8gKHByb3AgaW4gd2luKSA/IHdpblsgcHJvcCBdIDoKLQkJCQkJd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgbWV0aG9kIF0gOgotCQkJCQllbGVtWyBtZXRob2QgXTsKLQkJCX0KLQotCQkJaWYgKCB3aW4gKSB7Ci0JCQkJd2luLnNjcm9sbFRvKAotCQkJCQkhdG9wID8gdmFsIDogalF1ZXJ5KCB3aW4gKS5zY3JvbGxMZWZ0KCksCi0JCQkJCXRvcCA/IHZhbCA6IGpRdWVyeSggd2luICkuc2Nyb2xsVG9wKCkKLQkJCQkpOwotCi0JCQl9IGVsc2UgewotCQkJCWVsZW1bIG1ldGhvZCBdID0gdmFsOwotCQkJfQotCQl9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCwgbnVsbCApOwotCX07Ci19KTsKLQotZnVuY3Rpb24gZ2V0V2luZG93KCBlbGVtICkgewotCXJldHVybiBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSA/Ci0JCWVsZW0gOgotCQllbGVtLm5vZGVUeXBlID09PSA5ID8KLQkJCWVsZW0uZGVmYXVsdFZpZXcgfHwgZWxlbS5wYXJlbnRXaW5kb3cgOgotCQkJZmFsc2U7Ci19Ci0vLyBDcmVhdGUgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGgsIGhlaWdodCwgd2lkdGgsIG91dGVySGVpZ2h0IGFuZCBvdXRlcldpZHRoIG1ldGhvZHMKLWpRdWVyeS5lYWNoKCB7IEhlaWdodDogImhlaWdodCIsIFdpZHRoOiAid2lkdGgiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkgewotCWpRdWVyeS5lYWNoKCB7IHBhZGRpbmc6ICJpbm5lciIgKyBuYW1lLCBjb250ZW50OiB0eXBlLCAiIjogIm91dGVyIiArIG5hbWUgfSwgZnVuY3Rpb24oIGRlZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7Ci0JCS8vIG1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aAotCQlqUXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHsKLQkJCXZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4dHJhIHx8IHR5cGVvZiBtYXJnaW4gIT09ICJib29sZWFuIiApLAotCQkJCWV4dHJhID0gZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVlID8gIm1hcmdpbiIgOiAiYm9yZGVyIiApOwotCi0JCQlyZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkgewotCQkJCXZhciBkb2M7Ci0KLQkJCQlpZiAoIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkgewotCQkJCQkvLyBBcyBvZiA1LzgvMjAxMiB0aGlzIHdpbGwgeWllbGQgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIE1vYmlsZSBTYWZhcmksIGJ1dCB0aGVyZQotCQkJCQkvLyBpc24ndCBhIHdob2xlIGxvdCB3ZSBjYW4gZG8uIFNlZSBwdWxsIHJlcXVlc3QgYXQgdGhpcyBVUkwgZm9yIGRpc2N1c3Npb246Ci0JCQkJCS8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNzY0Ci0JCQkJCXJldHVybiBlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgImNsaWVudCIgKyBuYW1lIF07Ci0JCQkJfQotCi0JCQkJLy8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodAotCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHsKLQkJCQkJZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7Ci0KLQkJCQkJLy8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLCB3aGljaGV2ZXIgaXMgZ3JlYXRlc3QKLQkJCQkJLy8gdW5mb3J0dW5hdGVseSwgdGhpcyBjYXVzZXMgYnVnICMzODM4IGluIElFNi84IG9ubHksIGJ1dCB0aGVyZSBpcyBjdXJyZW50bHkgbm8gZ29vZCwgc21hbGwgd2F5IHRvIGZpeCBpdC4KLQkJCQkJcmV0dXJuIE1hdGgubWF4KAotCQkJCQkJZWxlbS5ib2R5WyAic2Nyb2xsIiArIG5hbWUgXSwgZG9jWyAic2Nyb2xsIiArIG5hbWUgXSwKLQkJCQkJCWVsZW0uYm9keVsgIm9mZnNldCIgKyBuYW1lIF0sIGRvY1sgIm9mZnNldCIgKyBuYW1lIF0sCi0JCQkJCQlkb2NbICJjbGllbnQiICsgbmFtZSBdCi0JCQkJCSk7Ci0JCQkJfQotCi0JCQkJcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPwotCQkJCQkvLyBHZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVtZW50LCByZXF1ZXN0aW5nIGJ1dCBub3QgZm9yY2luZyBwYXJzZUZsb2F0Ci0JCQkJCWpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOgotCi0JCQkJCS8vIFNldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQKLQkJCQkJalF1ZXJ5LnN0eWxlKCBlbGVtLCB0eXBlLCB2YWx1ZSwgZXh0cmEgKTsKLQkJCX0sIHR5cGUsIGNoYWluYWJsZSA/IG1hcmdpbiA6IHVuZGVmaW5lZCwgY2hhaW5hYmxlLCBudWxsICk7Ci0JCX07Ci0JfSk7Ci19KTsKLS8vIExpbWl0IHNjb3BlIHBvbGx1dGlvbiBmcm9tIGFueSBkZXByZWNhdGVkIEFQSQotLy8gKGZ1bmN0aW9uKCkgewotCi0vLyB9KSgpOwotLy8gRXhwb3NlIGpRdWVyeSB0byB0aGUgZ2xvYmFsIG9iamVjdAotd2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5OwotCi0vLyBFeHBvc2UgalF1ZXJ5IGFzIGFuIEFNRCBtb2R1bGUsIGJ1dCBvbmx5IGZvciBBTUQgbG9hZGVycyB0aGF0Ci0vLyB1bmRlcnN0YW5kIHRoZSBpc3N1ZXMgd2l0aCBsb2FkaW5nIG11bHRpcGxlIHZlcnNpb25zIG9mIGpRdWVyeQotLy8gaW4gYSBwYWdlIHRoYXQgYWxsIG1pZ2h0IGNhbGwgZGVmaW5lKCkuIFRoZSBsb2FkZXIgd2lsbCBpbmRpY2F0ZQotLy8gdGhleSBoYXZlIHNwZWNpYWwgYWxsb3dhbmNlcyBmb3IgbXVsdGlwbGUgalF1ZXJ5IHZlcnNpb25zIGJ5Ci0vLyBzcGVjaWZ5aW5nIGRlZmluZS5hbWQualF1ZXJ5ID0gdHJ1ZS4gUmVnaXN0ZXIgYXMgYSBuYW1lZCBtb2R1bGUsCi0vLyBzaW5jZSBqUXVlcnkgY2FuIGJlIGNvbmNhdGVuYXRlZCB3aXRoIG90aGVyIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsCi0vLyBidXQgbm90IHVzZSBhIHByb3BlciBjb25jYXRlbmF0aW9uIHNjcmlwdCB0aGF0IHVuZGVyc3RhbmRzIGFub255bW91cwotLy8gQU1EIG1vZHVsZXMuIEEgbmFtZWQgQU1EIGlzIHNhZmVzdCBhbmQgbW9zdCByb2J1c3Qgd2F5IHRvIHJlZ2lzdGVyLgotLy8gTG93ZXJjYXNlIGpxdWVyeSBpcyB1c2VkIGJlY2F1c2UgQU1EIG1vZHVsZSBuYW1lcyBhcmUgZGVyaXZlZCBmcm9tCi0vLyBmaWxlIG5hbWVzLCBhbmQgalF1ZXJ5IGlzIG5vcm1hbGx5IGRlbGl2ZXJlZCBpbiBhIGxvd2VyY2FzZSBmaWxlIG5hbWUuCi0vLyBEbyB0aGlzIGFmdGVyIGNyZWF0aW5nIHRoZSBnbG9iYWwgc28gdGhhdCBpZiBhbiBBTUQgbW9kdWxlIHdhbnRzIHRvIGNhbGwKLS8vIG5vQ29uZmxpY3QgdG8gaGlkZSB0aGlzIHZlcnNpb24gb2YgalF1ZXJ5LCBpdCB3aWxsIHdvcmsuCi1pZiAoIHR5cGVvZiBkZWZpbmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCAmJiBkZWZpbmUuYW1kLmpRdWVyeSApIHsKLQlkZWZpbmUoICJqcXVlcnkiLCBbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4galF1ZXJ5OyB9ICk7Ci19Ci0KLX0pKCB3aW5kb3cgKTsKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2pzL3RoaXJkcGFydHkvanF1ZXJ5LTEuOS4xLm1pbi5qcyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2pzL3RoaXJkcGFydHkvanF1ZXJ5LTEuOS4xLm1pbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDA2ZTk1My4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9qcy90aGlyZHBhcnR5L2pxdWVyeS0xLjkuMS5taW4uanMKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLS8qISBqUXVlcnkgdjEuOS4xIHwgKGMpIDIwMDUsIDIwMTIgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UKLS8vQCBzb3VyY2VNYXBwaW5nVVJMPWpxdWVyeS5taW4ubWFwCi0qLyhmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT10eXBlb2YgdCxvPWUuZG9jdW1lbnQsYT1lLmxvY2F0aW9uLHM9ZS5qUXVlcnksdT1lLiQsbD17fSxjPVtdLHA9IjEuOS4xIixmPWMuY29uY2F0LGQ9Yy5wdXNoLGg9Yy5zbGljZSxnPWMuaW5kZXhPZixtPWwudG9TdHJpbmcseT1sLmhhc093blByb3BlcnR5LHY9cC50cmltLGI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGIuZm4uaW5pdChlLHQscil9LHg9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2Usdz0vXFMrL2csVD0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csTj0vXig/Oig8W1x3XFddKz4pW14+XSp8IyhbXHctXSopKSQvLEM9L148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLyxrPS9eW1xdLDp7fVxzXSokLyxFPS8oPzpefDp8LCkoPzpccypcWykrL2csUz0vXFwoPzpbIlxcXC9iZm5ydF18dVtcZGEtZkEtRl17NH0pL2csQT0vIlteIlxcXHJcbl0qInx0cnVlfGZhbHNlfG51bGx8LT8oPzpcZCtcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvZyxqPS9eLW1zLS8sRD0vLShbXGRhLXpdKS9naSxMPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0sSD1mdW5jdGlvbihlKXsoby5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1lLnR5cGV8fCJjb21wbGV0ZSI9PT1vLnJlYWR5U3RhdGUpJiYocSgpLGIucmVhZHkoKSl9LHE9ZnVuY3Rpb24oKXtvLmFkZEV2ZW50TGlzdGVuZXI/KG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSCwhMSksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixILCExKSk6KG8uZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSCksZS5kZXRhY2hFdmVudCgib25sb2FkIixIKSl9O2IuZm49Yi5wcm90b3R5cGU9e2pxdWVyeTpwLGNvbnN0cnVjdG9yOmIsaW5pdDpmdW5jdGlvbihlLG4scil7dmFyIGksYTtpZighZSlyZXR1cm4gdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKGk9IjwiPT09ZS5jaGFyQXQoMCkmJiI+Ij09PWUuY2hhckF0KGUubGVuZ3RoLTEpJiZlLmxlbmd0aD49Mz9bbnVsbCxlLG51bGxdOk4uZXhlYyhlKSwhaXx8IWlbMV0mJm4pcmV0dXJuIW58fG4uanF1ZXJ5PyhufHxyKS5maW5kKGUpOnRoaXMuY29uc3RydWN0b3IobikuZmluZChlKTtpZihpWzFdKXtpZihuPW4gaW5zdGFuY2VvZiBiP25bMF06bixiLm1lcmdlKHRoaXMsYi5wYXJzZUhUTUwoaVsxXSxuJiZuLm5vZGVUeXBlP24ub3duZXJEb2N1bWVudHx8bjpvLCEwKSksQy50ZXN0KGlbMV0pJiZiLmlzUGxhaW5PYmplY3QobikpZm9yKGkgaW4gbiliLmlzRnVuY3Rpb24odGhpc1tpXSk/dGhpc1tpXShuW2ldKTp0aGlzLmF0dHIoaSxuW2ldKTtyZXR1cm4gdGhpc31pZihhPW8uZ2V0RWxlbWVudEJ5SWQoaVsyXSksYSYmYS5wYXJlbnROb2RlKXtpZihhLmlkIT09aVsyXSlyZXR1cm4gci5maW5kKGUpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1hfXJldHVybiB0aGlzLmNvbnRleHQ9byx0aGlzLnNlbGVjdG9yPWUsdGhpc31yZXR1cm4gZS5ub2RlVHlwZT8odGhpcy5jb250ZXh0PXRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOmIuaXNGdW5jdGlvbihlKT9yLnJlYWR5KGUpOihlLnNlbGVjdG9yIT09dCYmKHRoaXMuc2VsZWN0b3I9ZS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9ZS5jb250ZXh0KSxiLm1ha2VBcnJheShlLHRoaXMpKX0sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBoLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT90aGlzLnRvQXJyYXkoKTowPmU/dGhpc1t0aGlzLmxlbmd0aCtlXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Yi5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHQuY29udGV4dD10aGlzLmNvbnRleHQsdH0sZWFjaDpmdW5jdGlvbihlLHQpe3JldHVybiBiLmVhY2godGhpcyxlLHQpfSxyZWFkeTpmdW5jdGlvbihlKXtyZXR1cm4gYi5yZWFkeS5wcm9taXNlKCkuZG9uZShlKSx0aGlzfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhoLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubGVuZ3RoLG49K2UrKDA+ZT90OjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhuPj0wJiZ0Pm4/W3RoaXNbbl1dOltdKX0sbWFwOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhiLm1hcCh0aGlzLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuY2FsbCh0LG4sdCl9KSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6ZCxzb3J0OltdLnNvcnQsc3BsaWNlOltdLnNwbGljZX0sYi5mbi5pbml0LnByb3RvdHlwZT1iLmZuLGIuZXh0ZW5kPWIuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsbixyLGksbyxhLHM9YXJndW1lbnRzWzBdfHx7fSx1PTEsbD1hcmd1bWVudHMubGVuZ3RoLGM9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIHMmJihjPXMscz1hcmd1bWVudHNbMV18fHt9LHU9MiksIm9iamVjdCI9PXR5cGVvZiBzfHxiLmlzRnVuY3Rpb24ocyl8fChzPXt9KSxsPT09dSYmKHM9dGhpcywtLXUpO2w+dTt1KyspaWYobnVsbCE9KG89YXJndW1lbnRzW3VdKSlmb3IoaSBpbiBvKWU9c1tpXSxyPW9baV0scyE9PXImJihjJiZyJiYoYi5pc1BsYWluT2JqZWN0KHIpfHwobj1iLmlzQXJyYXkocikpKT8obj8obj0hMSxhPWUmJmIuaXNBcnJheShlKT9lOltdKTphPWUmJmIuaXNQbGFpbk9iamVjdChlKT9lOnt9LHNbaV09Yi5leHRlbmQoYyxhLHIpKTpyIT09dCYmKHNbaV09cikpO3JldHVybiBzfSxiLmV4dGVuZCh7bm9Db25mbGljdDpmdW5jdGlvbih0KXtyZXR1cm4gZS4kPT09YiYmKGUuJD11KSx0JiZlLmpRdWVyeT09PWImJihlLmpRdWVyeT1zKSxifSxpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihlKXtlP2IucmVhZHlXYWl0Kys6Yi5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGUpe2lmKGU9PT0hMD8hLS1iLnJlYWR5V2FpdDohYi5pc1JlYWR5KXtpZighby5ib2R5KXJldHVybiBzZXRUaW1lb3V0KGIucmVhZHkpO2IuaXNSZWFkeT0hMCxlIT09ITAmJi0tYi5yZWFkeVdhaXQ+MHx8KG4ucmVzb2x2ZVdpdGgobyxbYl0pLGIuZm4udHJpZ2dlciYmYihvKS50cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKSl9fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PT1iLnR5cGUoZSl9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuImFycmF5Ij09PWIudHlwZShlKX0saXNXaW5kb3c6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJmU9PWUud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oZSl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQoZSkpJiZpc0Zpbml0ZShlKX0sdHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9lKyIiOiJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGU/bFttLmNhbGwoZSldfHwib2JqZWN0Ijp0eXBlb2YgZX0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXtpZighZXx8Im9iamVjdCIhPT1iLnR5cGUoZSl8fGUubm9kZVR5cGV8fGIuaXNXaW5kb3coZSkpcmV0dXJuITE7dHJ5e2lmKGUuY29uc3RydWN0b3ImJiF5LmNhbGwoZSwiY29uc3RydWN0b3IiKSYmIXkuY2FsbChlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKG4pe3JldHVybiExfXZhciByO2ZvcihyIGluIGUpO3JldHVybiByPT09dHx8eS5jYWxsKGUscil9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgRXJyb3IoZSl9LHBhcnNlSFRNTDpmdW5jdGlvbihlLHQsbil7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDsiYm9vbGVhbiI9PXR5cGVvZiB0JiYobj10LHQ9ITEpLHQ9dHx8bzt2YXIgcj1DLmV4ZWMoZSksaT0hbiYmW107cmV0dXJuIHI/W3QuY3JlYXRlRWxlbWVudChyWzFdKV06KHI9Yi5idWlsZEZyYWdtZW50KFtlXSx0LGkpLGkmJmIoaSkucmVtb3ZlKCksYi5tZXJnZShbXSxyLmNoaWxkTm9kZXMpKX0scGFyc2VKU09OOmZ1bmN0aW9uKG4pe3JldHVybiBlLkpTT04mJmUuSlNPTi5wYXJzZT9lLkpTT04ucGFyc2Uobik6bnVsbD09PW4/bjoic3RyaW5nIj09dHlwZW9mIG4mJihuPWIudHJpbShuKSxuJiZrLnRlc3Qobi5yZXBsYWNlKFMsIkAiKS5yZXBsYWNlKEEsIl0iKS5yZXBsYWNlKEUsIiIpKSk/RnVuY3Rpb24oInJldHVybiAiK24pKCk6KGIuZXJyb3IoIkludmFsaWQgSlNPTjogIituKSx0KX0scGFyc2VYTUw6ZnVuY3Rpb24obil7dmFyIHIsaTtpZighbnx8InN0cmluZyIhPXR5cGVvZiBuKXJldHVybiBudWxsO3RyeXtlLkRPTVBhcnNlcj8oaT1uZXcgRE9NUGFyc2VyLHI9aS5wYXJzZUZyb21TdHJpbmcobiwidGV4dC94bWwiKSk6KHI9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxyLmFzeW5jPSJmYWxzZSIsci5sb2FkWE1MKG4pKX1jYXRjaChvKXtyPXR9cmV0dXJuIHImJnIuZG9jdW1lbnRFbGVtZW50JiYhci5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGh8fGIuZXJyb3IoIkludmFsaWQgWE1MOiAiK24pLHJ9LG5vb3A6ZnVuY3Rpb24oKXt9LGdsb2JhbEV2YWw6ZnVuY3Rpb24odCl7dCYmYi50cmltKHQpJiYoZS5leGVjU2NyaXB0fHxmdW5jdGlvbih0KXtlLmV2YWwuY2FsbChlLHQpfSkodCl9LGNhbWVsQ2FzZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGosIm1zLSIpLnJlcGxhY2UoRCxMKX0sbm9kZU5hbWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dC50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPTAsbz1lLmxlbmd0aCxhPU0oZSk7aWYobil7aWYoYSl7Zm9yKDtvPmk7aSsrKWlmKHI9dC5hcHBseShlW2ldLG4pLHI9PT0hMSlicmVha31lbHNlIGZvcihpIGluIGUpaWYocj10LmFwcGx5KGVbaV0sbikscj09PSExKWJyZWFrfWVsc2UgaWYoYSl7Zm9yKDtvPmk7aSsrKWlmKHI9dC5jYWxsKGVbaV0saSxlW2ldKSxyPT09ITEpYnJlYWt9ZWxzZSBmb3IoaSBpbiBlKWlmKHI9dC5jYWxsKGVbaV0saSxlW2ldKSxyPT09ITEpYnJlYWs7cmV0dXJuIGV9LHRyaW06diYmIXYuY2FsbCgiXHVmZWZmXHUwMGEwIik/ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6di5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjooZSsiIikucmVwbGFjZShULCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG49dHx8W107cmV0dXJuIG51bGwhPWUmJihNKE9iamVjdChlKSk/Yi5tZXJnZShuLCJzdHJpbmciPT10eXBlb2YgZT9bZV06ZSk6ZC5jYWxsKG4sZSkpLG59LGluQXJyYXk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKHQpe2lmKGcpcmV0dXJuIGcuY2FsbCh0LGUsbik7Zm9yKHI9dC5sZW5ndGgsbj1uPzA+bj9NYXRoLm1heCgwLHIrbik6bjowO3I+bjtuKyspaWYobiBpbiB0JiZ0W25dPT09ZSlyZXR1cm4gbn1yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oZSxuKXt2YXIgcj1uLmxlbmd0aCxpPWUubGVuZ3RoLG89MDtpZigibnVtYmVyIj09dHlwZW9mIHIpZm9yKDtyPm87bysrKWVbaSsrXT1uW29dO2Vsc2Ugd2hpbGUobltvXSE9PXQpZVtpKytdPW5bbysrXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPVtdLG89MCxhPWUubGVuZ3RoO2ZvcihuPSEhbjthPm87bysrKXI9ISF0KGVbb10sbyksbiE9PXImJmkucHVzaChlW29dKTtyZXR1cm4gaX0sbWFwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPTAsbz1lLmxlbmd0aCxhPU0oZSkscz1bXTtpZihhKWZvcig7bz5pO2krKylyPXQoZVtpXSxpLG4pLG51bGwhPXImJihzW3MubGVuZ3RoXT1yKTtlbHNlIGZvcihpIGluIGUpcj10KGVbaV0saSxuKSxudWxsIT1yJiYoc1tzLmxlbmd0aF09cik7cmV0dXJuIGYuYXBwbHkoW10scyl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihlLG4pe3ZhciByLGksbztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJihvPWVbbl0sbj1lLGU9byksYi5pc0Z1bmN0aW9uKGUpPyhyPWguY2FsbChhcmd1bWVudHMsMiksaT1mdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KG58fHRoaXMsci5jb25jYXQoaC5jYWxsKGFyZ3VtZW50cykpKX0saS5ndWlkPWUuZ3VpZD1lLmd1aWR8fGIuZ3VpZCsrLGkpOnR9LGFjY2VzczpmdW5jdGlvbihlLG4scixpLG8sYSxzKXt2YXIgdT0wLGw9ZS5sZW5ndGgsYz1udWxsPT1yO2lmKCJvYmplY3QiPT09Yi50eXBlKHIpKXtvPSEwO2Zvcih1IGluIHIpYi5hY2Nlc3MoZSxuLHUsclt1XSwhMCxhLHMpfWVsc2UgaWYoaSE9PXQmJihvPSEwLGIuaXNGdW5jdGlvbihpKXx8KHM9ITApLGMmJihzPyhuLmNhbGwoZSxpKSxuPW51bGwpOihjPW4sbj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGMuY2FsbChiKGUpLG4pfSkpLG4pKWZvcig7bD51O3UrKyluKGVbdV0scixzP2k6aS5jYWxsKGVbdV0sdSxuKGVbdV0scikpKTtyZXR1cm4gbz9lOmM/bi5jYWxsKGUpOmw/bihlWzBdLHIpOmF9LG5vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0pLGIucmVhZHkucHJvbWlzZT1mdW5jdGlvbih0KXtpZighbilpZihuPWIuRGVmZXJyZWQoKSwiY29tcGxldGUiPT09by5yZWFkeVN0YXRlKXNldFRpbWVvdXQoYi5yZWFkeSk7ZWxzZSBpZihvLmFkZEV2ZW50TGlzdGVuZXIpby5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixILCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEgsITEpO2Vsc2V7by5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixIKSxlLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEgpO3ZhciByPSExO3RyeXtyPW51bGw9PWUuZnJhbWVFbGVtZW50JiZvLmRvY3VtZW50RWxlbWVudH1jYXRjaChpKXt9ciYmci5kb1Njcm9sbCYmZnVuY3Rpb24gYSgpe2lmKCFiLmlzUmVhZHkpe3RyeXtyLmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goZSl7cmV0dXJuIHNldFRpbWVvdXQoYSw1MCl9cSgpLGIucmVhZHkoKX19KCl9cmV0dXJuIG4ucHJvbWlzZSh0KX0sYi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7bFsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiBNKGUpe3ZhciB0PWUubGVuZ3RoLG49Yi50eXBlKGUpO3JldHVybiBiLmlzV2luZG93KGUpPyExOjE9PT1lLm5vZGVUeXBlJiZ0PyEwOiJhcnJheSI9PT1ufHwiZnVuY3Rpb24iIT09biYmKDA9PT10fHwibnVtYmVyIj09dHlwZW9mIHQmJnQ+MCYmdC0xIGluIGUpfXI9YihvKTt2YXIgXz17fTtmdW5jdGlvbiBGKGUpe3ZhciB0PV9bZV09e307cmV0dXJuIGIuZWFjaChlLm1hdGNoKHcpfHxbXSxmdW5jdGlvbihlLG4pe3Rbbl09ITB9KSx0fWIuQ2FsbGJhY2tzPWZ1bmN0aW9uKGUpe2U9InN0cmluZyI9PXR5cGVvZiBlP19bZV18fEYoZSk6Yi5leHRlbmQoe30sZSk7dmFyIG4scixpLG8sYSxzLHU9W10sbD0hZS5vbmNlJiZbXSxjPWZ1bmN0aW9uKHQpe2ZvcihyPWUubWVtb3J5JiZ0LGk9ITAsYT1zfHwwLHM9MCxvPXUubGVuZ3RoLG49ITA7dSYmbz5hO2ErKylpZih1W2FdLmFwcGx5KHRbMF0sdFsxXSk9PT0hMSYmZS5zdG9wT25GYWxzZSl7cj0hMTticmVha31uPSExLHUmJihsP2wubGVuZ3RoJiZjKGwuc2hpZnQoKSk6cj91PVtdOnAuZGlzYWJsZSgpKX0scD17YWRkOmZ1bmN0aW9uKCl7aWYodSl7dmFyIHQ9dS5sZW5ndGg7KGZ1bmN0aW9uIGkodCl7Yi5lYWNoKHQsZnVuY3Rpb24odCxuKXt2YXIgcj1iLnR5cGUobik7ImZ1bmN0aW9uIj09PXI/ZS51bmlxdWUmJnAuaGFzKG4pfHx1LnB1c2gobik6biYmbi5sZW5ndGgmJiJzdHJpbmciIT09ciYmaShuKX0pfSkoYXJndW1lbnRzKSxuP289dS5sZW5ndGg6ciYmKHM9dCxjKHIpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHUmJmIuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgcjt3aGlsZSgocj1iLmluQXJyYXkodCx1LHIpKT4tMSl1LnNwbGljZShyLDEpLG4mJihvPj1yJiZvLS0sYT49ciYmYS0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gZT9iLmluQXJyYXkoZSx1KT4tMTohKCF1fHwhdS5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiB1PVtdLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdT1sPXI9dCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiF1fSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGw9dCxyfHxwLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hbH0sZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHxbXSx0PVtlLHQuc2xpY2U/dC5zbGljZSgpOnRdLCF1fHxpJiYhbHx8KG4/bC5wdXNoKHQpOmModCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gcC5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWl9fTtyZXR1cm4gcH0sYi5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGUpe3ZhciB0PVtbInJlc29sdmUiLCJkb25lIixiLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLGIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZWplY3RlZCJdLFsibm90aWZ5IiwicHJvZ3Jlc3MiLGIuQ2FsbGJhY2tzKCJtZW1vcnkiKV1dLG49InBlbmRpbmciLHI9e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG59LGFsd2F5czpmdW5jdGlvbigpe3JldHVybiBpLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksdGhpc30sdGhlbjpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gYi5EZWZlcnJlZChmdW5jdGlvbihuKXtiLmVhY2godCxmdW5jdGlvbih0LG8pe3ZhciBhPW9bMF0scz1iLmlzRnVuY3Rpb24oZVt0XSkmJmVbdF07aVtvWzFdXShmdW5jdGlvbigpe3ZhciBlPXMmJnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJmIuaXNGdW5jdGlvbihlLnByb21pc2UpP2UucHJvbWlzZSgpLmRvbmUobi5yZXNvbHZlKS5mYWlsKG4ucmVqZWN0KS5wcm9ncmVzcyhuLm5vdGlmeSk6blthKyJXaXRoIl0odGhpcz09PXI/bi5wcm9taXNlKCk6dGhpcyxzP1tlXTphcmd1bWVudHMpfSl9KSxlPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/Yi5leHRlbmQoZSxyKTpyfX0saT17fTtyZXR1cm4gci5waXBlPXIudGhlbixiLmVhY2godCxmdW5jdGlvbihlLG8pe3ZhciBhPW9bMl0scz1vWzNdO3Jbb1sxXV09YS5hZGQscyYmYS5hZGQoZnVuY3Rpb24oKXtuPXN9LHRbMV5lXVsyXS5kaXNhYmxlLHRbMl1bMl0ubG9jayksaVtvWzBdXT1mdW5jdGlvbigpe3JldHVybiBpW29bMF0rIldpdGgiXSh0aGlzPT09aT9yOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxpW29bMF0rIldpdGgiXT1hLmZpcmVXaXRofSksci5wcm9taXNlKGkpLGUmJmUuY2FsbChpLGkpLGl9LHdoZW46ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWguY2FsbChhcmd1bWVudHMpLHI9bi5sZW5ndGgsaT0xIT09cnx8ZSYmYi5pc0Z1bmN0aW9uKGUucHJvbWlzZSk/cjowLG89MT09PWk/ZTpiLkRlZmVycmVkKCksYT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3RbZV09dGhpcyxuW2VdPWFyZ3VtZW50cy5sZW5ndGg+MT9oLmNhbGwoYXJndW1lbnRzKTpyLG49PT1zP28ubm90aWZ5V2l0aCh0LG4pOi0taXx8by5yZXNvbHZlV2l0aCh0LG4pfX0scyx1LGw7aWYocj4xKWZvcihzPUFycmF5KHIpLHU9QXJyYXkociksbD1BcnJheShyKTtyPnQ7dCsrKW5bdF0mJmIuaXNGdW5jdGlvbihuW3RdLnByb21pc2UpP25bdF0ucHJvbWlzZSgpLmRvbmUoYSh0LGwsbikpLmZhaWwoby5yZWplY3QpLnByb2dyZXNzKGEodCx1LHMpKTotLWk7cmV0dXJuIGl8fG8ucmVzb2x2ZVdpdGgobCxuKSxvLnByb21pc2UoKX19KSxiLnN1cHBvcnQ9ZnVuY3Rpb24oKXt2YXIgdCxuLHIsYSxzLHUsbCxjLHAsZixkPW8uY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYoZC5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxkLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixuPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxyPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSwhbnx8IXJ8fCFuLmxlbmd0aClyZXR1cm57fTtzPW8uY3JlYXRlRWxlbWVudCgic2VsZWN0IiksbD1zLmFwcGVuZENoaWxkKG8uY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxyLnN0eWxlLmNzc1RleHQ9InRvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41Iix0PXtnZXRTZXRBdHRyaWJ1dGU6InQiIT09ZC5jbGFzc05hbWUsbGVhZGluZ1doaXRlc3BhY2U6Mz09PWQuZmlyc3RDaGlsZC5ub2RlVHlwZSx0Ym9keTohZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsaHRtbFNlcmlhbGl6ZTohIWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsc3R5bGU6L3RvcC8udGVzdChyLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksaHJlZk5vcm1hbGl6ZWQ6Ii9hIj09PXIuZ2V0QXR0cmlidXRlKCJocmVmIiksb3BhY2l0eTovXjAuNS8udGVzdChyLnN0eWxlLm9wYWNpdHkpLGNzc0Zsb2F0OiEhci5zdHlsZS5jc3NGbG9hdCxjaGVja09uOiEhYS52YWx1ZSxvcHRTZWxlY3RlZDpsLnNlbGVjdGVkLGVuY3R5cGU6ISFvLmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGh0bWw1Q2xvbmU6Ijw6bmF2PjwvOm5hdj4iIT09by5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxib3hNb2RlbDoiQ1NTMUNvbXBhdCI9PT1vLmNvbXBhdE1vZGUsZGVsZXRlRXhwYW5kbzohMCxub0Nsb25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtXcmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITAsYm94U2l6aW5nUmVsaWFibGU6ITAscGl4ZWxQb3NpdGlvbjohMX0sYS5jaGVja2VkPSEwLHQubm9DbG9uZUNoZWNrZWQ9YS5jbG9uZU5vZGUoITApLmNoZWNrZWQscy5kaXNhYmxlZD0hMCx0Lm9wdERpc2FibGVkPSFsLmRpc2FibGVkO3RyeXtkZWxldGUgZC50ZXN0fWNhdGNoKGgpe3QuZGVsZXRlRXhwYW5kbz0hMX1hPW8uY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSx0LmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLHQucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlLGEuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwidCIpLGEuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLHU9by5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksdS5hcHBlbmRDaGlsZChhKSx0LmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLHQuY2hlY2tDbG9uZT11LmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxkLmF0dGFjaEV2ZW50JiYoZC5hdHRhY2hFdmVudCgib25jbGljayIsZnVuY3Rpb24oKXt0Lm5vQ2xvbmVFdmVudD0hMX0pLGQuY2xvbmVOb2RlKCEwKS5jbGljaygpKTtmb3IoZiBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWQuc2V0QXR0cmlidXRlKGM9Im9uIitmLCJ0IiksdFtmKyJCdWJibGVzIl09YyBpbiBlfHxkLmF0dHJpYnV0ZXNbY10uZXhwYW5kbz09PSExO3JldHVybiBkLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsZC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLHQuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1kLnN0eWxlLmJhY2tncm91bmRDbGlwLGIoZnVuY3Rpb24oKXt2YXIgbixyLGEscz0icGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94OyIsdT1vLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07dSYmKG49by5jcmVhdGVFbGVtZW50KCJkaXYiKSxuLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDotOTk5OXB4O21hcmdpbi10b3A6MXB4Iix1LmFwcGVuZENoaWxkKG4pLmFwcGVuZENoaWxkKGQpLGQuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IixhPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIiksYVswXS5zdHlsZS5jc3NUZXh0PSJwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lIixwPTA9PT1hWzBdLm9mZnNldEhlaWdodCxhWzBdLnN0eWxlLmRpc3BsYXk9IiIsYVsxXS5zdHlsZS5kaXNwbGF5PSJub25lIix0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1wJiYwPT09YVswXS5vZmZzZXRIZWlnaHQsZC5pbm5lckhUTUw9IiIsZC5zdHlsZS5jc3NUZXh0PSJib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxcHg7Ym9yZGVyOjFweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjRweDttYXJnaW4tdG9wOjElO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxJTsiLHQuYm94U2l6aW5nPTQ9PT1kLm9mZnNldFdpZHRoLHQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQ9MSE9PXUub2Zmc2V0VG9wLGUuZ2V0Q29tcHV0ZWRTdHlsZSYmKHQucGl4ZWxQb3NpdGlvbj0iMSUiIT09KGUuZ2V0Q29tcHV0ZWRTdHlsZShkLG51bGwpfHx7fSkudG9wLHQuYm94U2l6aW5nUmVsaWFibGU9IjRweCI9PT0oZS5nZXRDb21wdXRlZFN0eWxlKGQsbnVsbCl8fHt3aWR0aDoiNHB4In0pLndpZHRoLHI9ZC5hcHBlbmRDaGlsZChvLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxyLnN0eWxlLmNzc1RleHQ9ZC5zdHlsZS5jc3NUZXh0PXMsci5zdHlsZS5tYXJnaW5SaWdodD1yLnN0eWxlLndpZHRoPSIwIixkLnN0eWxlLndpZHRoPSIxcHgiLHQucmVsaWFibGVNYXJnaW5SaWdodD0hcGFyc2VGbG9hdCgoZS5nZXRDb21wdXRlZFN0eWxlKHIsbnVsbCl8fHt9KS5tYXJnaW5SaWdodCkpLHR5cGVvZiBkLnN0eWxlLnpvb20hPT1pJiYoZC5pbm5lckhUTUw9IiIsZC5zdHlsZS5jc3NUZXh0PXMrIndpZHRoOjFweDtwYWRkaW5nOjFweDtkaXNwbGF5OmlubGluZTt6b29tOjEiLHQuaW5saW5lQmxvY2tOZWVkc0xheW91dD0zPT09ZC5vZmZzZXRXaWR0aCxkLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixkLmlubmVySFRNTD0iPGRpdj48L2Rpdj4iLGQuZmlyc3RDaGlsZC5zdHlsZS53aWR0aD0iNXB4Iix0LnNocmlua1dyYXBCbG9ja3M9MyE9PWQub2Zmc2V0V2lkdGgsdC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0JiYodS5zdHlsZS56b29tPTEpKSx1LnJlbW92ZUNoaWxkKG4pLG49ZD1hPXI9bnVsbCl9KSxuPXM9dT1sPXI9YT1udWxsLHR9KCk7dmFyIE89Lyg/Olx7W1xzXFNdKlx9fFxbW1xzXFNdKlxdKSQvLEI9LyhbQS1aXSkvZztmdW5jdGlvbiBQKGUsbixyLGkpe2lmKGIuYWNjZXB0RGF0YShlKSl7dmFyIG8sYSxzPWIuZXhwYW5kbyx1PSJzdHJpbmciPT10eXBlb2YgbixsPWUubm9kZVR5cGUscD1sP2IuY2FjaGU6ZSxmPWw/ZVtzXTplW3NdJiZzO2lmKGYmJnBbZl0mJihpfHxwW2ZdLmRhdGEpfHwhdXx8ciE9PXQpcmV0dXJuIGZ8fChsP2Vbc109Zj1jLnBvcCgpfHxiLmd1aWQrKzpmPXMpLHBbZl18fChwW2ZdPXt9LGx8fChwW2ZdLnRvSlNPTj1iLm5vb3ApKSwoIm9iamVjdCI9PXR5cGVvZiBufHwiZnVuY3Rpb24iPT10eXBlb2YgbikmJihpP3BbZl09Yi5leHRlbmQocFtmXSxuKTpwW2ZdLmRhdGE9Yi5leHRlbmQocFtmXS5kYXRhLG4pKSxvPXBbZl0saXx8KG8uZGF0YXx8KG8uZGF0YT17fSksbz1vLmRhdGEpLHIhPT10JiYob1tiLmNhbWVsQ2FzZShuKV09ciksdT8oYT1vW25dLG51bGw9PWEmJihhPW9bYi5jYW1lbENhc2UobildKSk6YT1vLGF9fWZ1bmN0aW9uIFIoZSx0LG4pe2lmKGIuYWNjZXB0RGF0YShlKSl7dmFyIHIsaSxvLGE9ZS5ub2RlVHlwZSxzPWE/Yi5jYWNoZTplLHU9YT9lW2IuZXhwYW5kb106Yi5leHBhbmRvO2lmKHNbdV0pe2lmKHQmJihvPW4/c1t1XTpzW3VdLmRhdGEpKXtiLmlzQXJyYXkodCk/dD10LmNvbmNhdChiLm1hcCh0LGIuY2FtZWxDYXNlKSk6dCBpbiBvP3Q9W3RdOih0PWIuY2FtZWxDYXNlKHQpLHQ9dCBpbiBvP1t0XTp0LnNwbGl0KCIgIikpO2ZvcihyPTAsaT10Lmxlbmd0aDtpPnI7cisrKWRlbGV0ZSBvW3Rbcl1dO2lmKCEobj8kOmIuaXNFbXB0eU9iamVjdCkobykpcmV0dXJufShufHwoZGVsZXRlIHNbdV0uZGF0YSwkKHNbdV0pKSkmJihhP2IuY2xlYW5EYXRhKFtlXSwhMCk6Yi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG98fHMhPXMud2luZG93P2RlbGV0ZSBzW3VdOnNbdV09bnVsbCl9fX1iLmV4dGVuZCh7Y2FjaGU6e30sZXhwYW5kbzoialF1ZXJ5IisocCtNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxub0RhdGE6e2VtYmVkOiEwLG9iamVjdDoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIixhcHBsZXQ6ITB9LGhhc0RhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZS5ub2RlVHlwZT9iLmNhY2hlW2VbYi5leHBhbmRvXV06ZVtiLmV4cGFuZG9dLCEhZSYmISQoZSl9LGRhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBQKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe3JldHVybiBSKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUChlLHQsbiwhMCl9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFIoZSx0LCEwKX0sYWNjZXB0RGF0YTpmdW5jdGlvbihlKXtpZihlLm5vZGVUeXBlJiYxIT09ZS5ub2RlVHlwZSYmOSE9PWUubm9kZVR5cGUpcmV0dXJuITE7dmFyIHQ9ZS5ub2RlTmFtZSYmYi5ub0RhdGFbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4hdHx8dCE9PSEwJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09dH19KSxiLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihlLG4pe3ZhciByLGksbz10aGlzWzBdLGE9MCxzPW51bGw7aWYoZT09PXQpe2lmKHRoaXMubGVuZ3RoJiYocz1iLmRhdGEobyksMT09PW8ubm9kZVR5cGUmJiFiLl9kYXRhKG8sInBhcnNlZEF0dHJzIikpKXtmb3Iocj1vLmF0dHJpYnV0ZXM7ci5sZW5ndGg+YTthKyspaT1yW2FdLm5hbWUsaS5pbmRleE9mKCJkYXRhLSIpfHwoaT1iLmNhbWVsQ2FzZShpLnNsaWNlKDUpKSxXKG8saSxzW2ldKSk7Yi5fZGF0YShvLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBzfXJldHVybiJvYmplY3QiPT10eXBlb2YgZT90aGlzLmVhY2goZnVuY3Rpb24oKXtiLmRhdGEodGhpcyxlKX0pOmIuYWNjZXNzKHRoaXMsZnVuY3Rpb24obil7cmV0dXJuIG49PT10P28/VyhvLGUsYi5kYXRhKG8sZSkpOm51bGw6KHRoaXMuZWFjaChmdW5jdGlvbigpe2IuZGF0YSh0aGlzLGUsbil9KSx0KX0sbnVsbCxuLGFyZ3VtZW50cy5sZW5ndGg+MSxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yi5yZW1vdmVEYXRhKHRoaXMsZSl9KX19KTtmdW5jdGlvbiBXKGUsbixyKXtpZihyPT09dCYmMT09PWUubm9kZVR5cGUpe3ZhciBpPSJkYXRhLSIrbi5yZXBsYWNlKEIsIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYocj1lLmdldEF0dHJpYnV0ZShpKSwic3RyaW5nIj09dHlwZW9mIHIpe3RyeXtyPSJ0cnVlIj09PXI/ITA6ImZhbHNlIj09PXI/ITE6Im51bGwiPT09cj9udWxsOityKyIiPT09cj8rcjpPLnRlc3Qocik/Yi5wYXJzZUpTT04ocik6cn1jYXRjaChvKXt9Yi5kYXRhKGUsbixyKX1lbHNlIHI9dH1yZXR1cm4gcn1mdW5jdGlvbiAkKGUpe3ZhciB0O2Zvcih0IGluIGUpaWYoKCJkYXRhIiE9PXR8fCFiLmlzRW1wdHlPYmplY3QoZVt0XSkpJiYidG9KU09OIiE9PXQpcmV0dXJuITE7cmV0dXJuITB9Yi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsbixyKXt2YXIgaTtyZXR1cm4gZT8obj0obnx8ImZ4IikrInF1ZXVlIixpPWIuX2RhdGEoZSxuKSxyJiYoIWl8fGIuaXNBcnJheShyKT9pPWIuX2RhdGEoZSxuLGIubWFrZUFycmF5KHIpKTppLnB1c2gocikpLGl8fFtdKTp0fSxkZXF1ZXVlOmZ1bmN0aW9uKGUsdCl7dD10fHwiZngiO3ZhciBuPWIucXVldWUoZSx0KSxyPW4ubGVuZ3RoLGk9bi5zaGlmdCgpLG89Yi5fcXVldWVIb29rcyhlLHQpLGE9ZnVuY3Rpb24oKXtiLmRlcXVldWUoZSx0KX07ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHItLSksby5jdXI9aSxpJiYoImZ4Ij09PXQmJm4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxsKGUsYSxvKSksIXImJm8mJm8uZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlvbihlLHQpe3ZhciBuPXQrInF1ZXVlSG9va3MiO3JldHVybiBiLl9kYXRhKGUsbil8fGIuX2RhdGEoZSxuLHtlbXB0eTpiLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKXtiLl9yZW1vdmVEYXRhKGUsdCsicXVldWUiKSxiLl9yZW1vdmVEYXRhKGUsbil9KX0pfX0pLGIuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihlLG4pe3ZhciByPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlJiYobj1lLGU9ImZ4IixyLS0pLHI+YXJndW1lbnRzLmxlbmd0aD9iLnF1ZXVlKHRoaXNbMF0sZSk6bj09PXQ/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1iLnF1ZXVlKHRoaXMsZSxuKTtiLl9xdWV1ZUhvb2tzKHRoaXMsZSksImZ4Ij09PWUmJiJpbnByb2dyZXNzIiE9PXRbMF0mJmIuZGVxdWV1ZSh0aGlzLGUpfSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2IuZGVxdWV1ZSh0aGlzLGUpfSl9LGRlbGF5OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9Yi5meD9iLmZ4LnNwZWVkc1tlXXx8ZTplLHQ9dHx8ImZ4Iix0aGlzLnF1ZXVlKHQsZnVuY3Rpb24odCxuKXt2YXIgcj1zZXRUaW1lb3V0KHQsZSk7bi5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHIpfX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsbil7dmFyIHIsaT0xLG89Yi5EZWZlcnJlZCgpLGE9dGhpcyxzPXRoaXMubGVuZ3RoLHU9ZnVuY3Rpb24oKXstLWl8fG8ucmVzb2x2ZVdpdGgoYSxbYV0pfTsic3RyaW5nIiE9dHlwZW9mIGUmJihuPWUsZT10KSxlPWV8fCJmeCI7d2hpbGUocy0tKXI9Yi5fZGF0YShhW3NdLGUrInF1ZXVlSG9va3MiKSxyJiZyLmVtcHR5JiYoaSsrLHIuZW1wdHkuYWRkKHUpKTtyZXR1cm4gdSgpLG8ucHJvbWlzZShuKX19KTt2YXIgSSx6LFg9L1tcdFxyXG5dL2csVT0vXHIvZyxWPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QpJC9pLFk9L14oPzphfGFyZWEpJC9pLEo9L14oPzpjaGVja2VkfHNlbGVjdGVkfGF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCkkL2ksRz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLFE9Yi5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZSxLPWIuc3VwcG9ydC5pbnB1dDtiLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiBiLmFjY2Vzcyh0aGlzLGIuYXR0cixlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yi5yZW1vdmVBdHRyKHRoaXMsZSl9KX0scHJvcDpmdW5jdGlvbihlLHQpe3JldHVybiBiLmFjY2Vzcyh0aGlzLGIucHJvcCxlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gZT1iLnByb3BGaXhbZV18fGUsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbZV09dCxkZWxldGUgdGhpc1tlXX1jYXRjaChuKXt9fSl9LGFkZENsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYT0wLHM9dGhpcy5sZW5ndGgsdT0ic3RyaW5nIj09dHlwZW9mIGUmJmU7aWYoYi5pc0Z1bmN0aW9uKGUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCl7Yih0aGlzKS5hZGRDbGFzcyhlLmNhbGwodGhpcyx0LHRoaXMuY2xhc3NOYW1lKSl9KTtpZih1KWZvcih0PShlfHwiIikubWF0Y2godyl8fFtdO3M+YTthKyspaWYobj10aGlzW2FdLHI9MT09PW4ubm9kZVR5cGUmJihuLmNsYXNzTmFtZT8oIiAiK24uY2xhc3NOYW1lKyIgIikucmVwbGFjZShYLCIgIik6IiAiKSl7bz0wO3doaWxlKGk9dFtvKytdKTA+ci5pbmRleE9mKCIgIitpKyIgIikmJihyKz1pKyIgIik7bi5jbGFzc05hbWU9Yi50cmltKHIpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGE9MCxzPXRoaXMubGVuZ3RoLHU9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgZSYmZTtpZihiLmlzRnVuY3Rpb24oZSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbih0KXtiKHRoaXMpLnJlbW92ZUNsYXNzKGUuY2FsbCh0aGlzLHQsdGhpcy5jbGFzc05hbWUpKX0pO2lmKHUpZm9yKHQ9KGV8fCIiKS5tYXRjaCh3KXx8W107cz5hO2ErKylpZihuPXRoaXNbYV0scj0xPT09bi5ub2RlVHlwZSYmKG4uY2xhc3NOYW1lPygiICIrbi5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKFgsIiAiKToiIikpe289MDt3aGlsZShpPXRbbysrXSl3aGlsZShyLmluZGV4T2YoIiAiK2krIiAiKT49MClyPXIucmVwbGFjZSgiICIraSsiICIsIiAiKTtuLmNsYXNzTmFtZT1lP2IudHJpbShyKToiIn1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10eXBlb2YgZSxyPSJib29sZWFuIj09dHlwZW9mIHQ7cmV0dXJuIGIuaXNGdW5jdGlvbihlKT90aGlzLmVhY2goZnVuY3Rpb24obil7Yih0aGlzKS50b2dnbGVDbGFzcyhlLmNhbGwodGhpcyxuLHRoaXMuY2xhc3NOYW1lLHQpLHQpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1uKXt2YXIgbyxhPTAscz1iKHRoaXMpLHU9dCxsPWUubWF0Y2godyl8fFtdO3doaWxlKG89bFthKytdKXU9cj91OiFzLmhhc0NsYXNzKG8pLHNbdT8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKG8pfWVsc2Uobj09PWl8fCJib29sZWFuIj09PW4pJiYodGhpcy5jbGFzc05hbWUmJmIuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHxlPT09ITE/IiI6Yi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKX0pfSxoYXNDbGFzczpmdW5jdGlvbihlKXt2YXIgdD0iICIrZSsiICIsbj0wLHI9dGhpcy5sZW5ndGg7Zm9yKDtyPm47bisrKWlmKDE9PT10aGlzW25dLm5vZGVUeXBlJiYoIiAiK3RoaXNbbl0uY2xhc3NOYW1lKyIgIikucmVwbGFjZShYLCIgIikuaW5kZXhPZih0KT49MClyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0aW9uKGUpe3ZhciBuLHIsaSxvPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGk9Yi5pc0Z1bmN0aW9uKGUpLHRoaXMuZWFjaChmdW5jdGlvbihuKXt2YXIgbyxhPWIodGhpcyk7MT09PXRoaXMubm9kZVR5cGUmJihvPWk/ZS5jYWxsKHRoaXMsbixhLnZhbCgpKTplLG51bGw9PW8/bz0iIjoibnVtYmVyIj09dHlwZW9mIG8/bys9IiI6Yi5pc0FycmF5KG8pJiYobz1iLm1hcChvLGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSkscj1iLnZhbEhvb2tzW3RoaXMudHlwZV18fGIudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxyJiYic2V0ImluIHImJnIuc2V0KHRoaXMsbywidmFsdWUiKSE9PXR8fCh0aGlzLnZhbHVlPW8pKX0pO2lmKG8pcmV0dXJuIHI9Yi52YWxIb29rc1tvLnR5cGVdfHxiLnZhbEhvb2tzW28ubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sciYmImdldCJpbiByJiYobj1yLmdldChvLCJ2YWx1ZSIpKSE9PXQ/bjoobj1vLnZhbHVlLCJzdHJpbmciPT10eXBlb2Ygbj9uLnJlcGxhY2UoVSwiIik6bnVsbD09bj8iIjpuKX19fSksYi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihlKXt2YXIgdD1lLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIXR8fHQuc3BlY2lmaWVkP2UudmFsdWU6ZS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWUub3B0aW9ucyxpPWUuc2VsZWN0ZWRJbmRleCxvPSJzZWxlY3Qtb25lIj09PWUudHlwZXx8MD5pLGE9bz9udWxsOltdLHM9bz9pKzE6ci5sZW5ndGgsdT0wPmk/czpvP2k6MDtmb3IoO3M+dTt1KyspaWYobj1yW3VdLCEoIW4uc2VsZWN0ZWQmJnUhPT1pfHwoYi5zdXBwb3J0Lm9wdERpc2FibGVkP24uZGlzYWJsZWQ6bnVsbCE9PW4uZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8bi5wYXJlbnROb2RlLmRpc2FibGVkJiZiLm5vZGVOYW1lKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9YihuKS52YWwoKSxvKXJldHVybiB0O2EucHVzaCh0KX1yZXR1cm4gYX0sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG49Yi5tYWtlQXJyYXkodCk7cmV0dXJuIGIoZSkuZmluZCgib3B0aW9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9Yi5pbkFycmF5KGIodGhpcykudmFsKCksbik+PTB9KSxuLmxlbmd0aHx8KGUuc2VsZWN0ZWRJbmRleD0tMSksbn19fSxhdHRyOmZ1bmN0aW9uKGUsbixyKXt2YXIgbyxhLHMsdT1lLm5vZGVUeXBlO2lmKGUmJjMhPT11JiY4IT09dSYmMiE9PXUpcmV0dXJuIHR5cGVvZiBlLmdldEF0dHJpYnV0ZT09PWk/Yi5wcm9wKGUsbixyKTooYT0xIT09dXx8IWIuaXNYTUxEb2MoZSksYSYmKG49bi50b0xvd2VyQ2FzZSgpLG89Yi5hdHRySG9va3Nbbl18fChKLnRlc3Qobik/ejpJKSkscj09PXQ/byYmYSYmImdldCJpbiBvJiZudWxsIT09KHM9by5nZXQoZSxuKSk/czoodHlwZW9mIGUuZ2V0QXR0cmlidXRlIT09aSYmKHM9ZS5nZXRBdHRyaWJ1dGUobikpLG51bGw9PXM/dDpzKTpudWxsIT09cj9vJiZhJiYic2V0ImluIG8mJihzPW8uc2V0KGUscixuKSkhPT10P3M6KGUuc2V0QXR0cmlidXRlKG4scisiIikscik6KGIucmVtb3ZlQXR0cihlLG4pLHQpKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT0wLG89dCYmdC5tYXRjaCh3KTtpZihvJiYxPT09ZS5ub2RlVHlwZSl3aGlsZShuPW9baSsrXSlyPWIucHJvcEZpeFtuXXx8bixKLnRlc3Qobik/IVEmJkcudGVzdChuKT9lW2IuY2FtZWxDYXNlKCJkZWZhdWx0LSIrbildPWVbcl09ITE6ZVtyXT0hMTpiLmF0dHIoZSxuLCIiKSxlLnJlbW92ZUF0dHJpYnV0ZShRP246cil9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGUsdCl7aWYoIWIuc3VwcG9ydC5yYWRpb1ZhbHVlJiYicmFkaW8iPT09dCYmYi5ub2RlTmFtZShlLCJpbnB1dCIpKXt2YXIgbj1lLnZhbHVlO3JldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0scHJvcEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9ubHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUifSxwcm9wOmZ1bmN0aW9uKGUsbixyKXt2YXIgaSxvLGEscz1lLm5vZGVUeXBlO2lmKGUmJjMhPT1zJiY4IT09cyYmMiE9PXMpcmV0dXJuIGE9MSE9PXN8fCFiLmlzWE1MRG9jKGUpLGEmJihuPWIucHJvcEZpeFtuXXx8bixvPWIucHJvcEhvb2tzW25dKSxyIT09dD9vJiYic2V0ImluIG8mJihpPW8uc2V0KGUscixuKSkhPT10P2k6ZVtuXT1yOm8mJiJnZXQiaW4gbyYmbnVsbCE9PShpPW8uZ2V0KGUsbikpP2k6ZVtuXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciBuPWUuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gbiYmbi5zcGVjaWZpZWQ/cGFyc2VJbnQobi52YWx1ZSwxMCk6Vi50ZXN0KGUubm9kZU5hbWUpfHxZLnRlc3QoZS5ub2RlTmFtZSkmJmUuaHJlZj8wOnR9fX19KSx6PXtnZXQ6ZnVuY3Rpb24oZSxuKXt2YXIgcj1iLnByb3AoZSxuKSxpPSJib29sZWFuIj09dHlwZW9mIHImJmUuZ2V0QXR0cmlidXRlKG4pLG89ImJvb2xlYW4iPT10eXBlb2Ygcj9LJiZRP251bGwhPWk6Ry50ZXN0KG4pP2VbYi5jYW1lbENhc2UoImRlZmF1bHQtIituKV06ISFpOmUuZ2V0QXR0cmlidXRlTm9kZShuKTtyZXR1cm4gbyYmby52YWx1ZSE9PSExP24udG9Mb3dlckNhc2UoKTp0fSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PT09ITE/Yi5yZW1vdmVBdHRyKGUsbik6SyYmUXx8IUcudGVzdChuKT9lLnNldEF0dHJpYnV0ZSghUSYmYi5wcm9wRml4W25dfHxuLG4pOmVbYi5jYW1lbENhc2UoImRlZmF1bHQtIituKV09ZVtuXT0hMCxufX0sSyYmUXx8KGIuYXR0ckhvb2tzLnZhbHVlPXtnZXQ6ZnVuY3Rpb24oZSxuKXt2YXIgcj1lLmdldEF0dHJpYnV0ZU5vZGUobik7cmV0dXJuIGIubm9kZU5hbWUoZSwiaW5wdXQiKT9lLmRlZmF1bHRWYWx1ZTpyJiZyLnNwZWNpZmllZD9yLnZhbHVlOnR9LHNldDpmdW5jdGlvbihlLG4scil7cmV0dXJuIGIubm9kZU5hbWUoZSwiaW5wdXQiKT8oZS5kZWZhdWx0VmFsdWU9bix0KTpJJiZJLnNldChlLG4scil9fSksUXx8KEk9Yi52YWxIb29rcy5idXR0b249e2dldDpmdW5jdGlvbihlLG4pe3ZhciByPWUuZ2V0QXR0cmlidXRlTm9kZShuKTtyZXR1cm4gciYmKCJpZCI9PT1ufHwibmFtZSI9PT1ufHwiY29vcmRzIj09PW4/IiIhPT1yLnZhbHVlOnIuc3BlY2lmaWVkKT9yLnZhbHVlOnR9LHNldDpmdW5jdGlvbihlLG4scil7dmFyIGk9ZS5nZXRBdHRyaWJ1dGVOb2RlKHIpO3JldHVybiBpfHxlLnNldEF0dHJpYnV0ZU5vZGUoaT1lLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKHIpKSxpLnZhbHVlPW4rPSIiLCJ2YWx1ZSI9PT1yfHxuPT09ZS5nZXRBdHRyaWJ1dGUocik/bjp0fX0sYi5hdHRySG9va3MuY29udGVudGVkaXRhYmxlPXtnZXQ6SS5nZXQsc2V0OmZ1bmN0aW9uKGUsdCxuKXtJLnNldChlLCIiPT09dD8hMTp0LG4pfX0sYi5lYWNoKFsid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihlLG4pe2IuYXR0ckhvb2tzW25dPWIuZXh0ZW5kKGIuYXR0ckhvb2tzW25dLHtzZXQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm4iIj09PXI/KGUuc2V0QXR0cmlidXRlKG4sImF1dG8iKSxyKTp0fX0pfSkpLGIuc3VwcG9ydC5ocmVmTm9ybWFsaXplZHx8KGIuZWFjaChbImhyZWYiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGUsbil7Yi5hdHRySG9va3Nbbl09Yi5leHRlbmQoYi5hdHRySG9va3Nbbl0se2dldDpmdW5jdGlvbihlKXt2YXIgcj1lLmdldEF0dHJpYnV0ZShuLDIpO3JldHVybiBudWxsPT1yP3Q6cn19KX0pLGIuZWFjaChbImhyZWYiLCJzcmMiXSxmdW5jdGlvbihlLHQpe2IucHJvcEhvb2tzW3RdPXtnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsNCl9fX0pKSxiLnN1cHBvcnQuc3R5bGV8fChiLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0eWxlLmNzc1RleHR8fHR9LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLmNzc1RleHQ9dCsiIn19KSxiLnN1cHBvcnQub3B0U2VsZWN0ZWR8fChiLnByb3BIb29rcy5zZWxlY3RlZD1iLmV4dGVuZChiLnByb3BIb29rcy5zZWxlY3RlZCx7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmKHQuc2VsZWN0ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSxudWxsfX0pKSxiLnN1cHBvcnQuZW5jdHlwZXx8KGIucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpLGIuc3VwcG9ydC5jaGVja09ufHxiLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtiLnZhbEhvb2tzW3RoaXNdPXtnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmUudmFsdWV9fX0pLGIuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2IudmFsSG9va3NbdGhpc109Yi5leHRlbmQoYi52YWxIb29rc1t0aGlzXSx7c2V0OmZ1bmN0aW9uKGUsbil7cmV0dXJuIGIuaXNBcnJheShuKT9lLmNoZWNrZWQ9Yi5pbkFycmF5KGIoZSkudmFsKCksbik+PTA6dH19KX0pO3ZhciBaPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhKSQvaSxldD0vXmtleS8sdHQ9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLG50PS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxydD0vXihbXi5dKikoPzpcLiguKyl8KSQvO2Z1bmN0aW9uIGl0KCl7cmV0dXJuITB9ZnVuY3Rpb24gb3QoKXtyZXR1cm4hMX1iLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGUsbixyLG8sYSl7dmFyIHMsdSxsLGMscCxmLGQsaCxnLG0seSx2PWIuX2RhdGEoZSk7aWYodil7ci5oYW5kbGVyJiYoYz1yLHI9Yy5oYW5kbGVyLGE9Yy5zZWxlY3Rvciksci5ndWlkfHwoci5ndWlkPWIuZ3VpZCsrKSwodT12LmV2ZW50cyl8fCh1PXYuZXZlbnRzPXt9KSwoZj12LmhhbmRsZSl8fChmPXYuaGFuZGxlPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgYj09PWl8fGUmJmIuZXZlbnQudHJpZ2dlcmVkPT09ZS50eXBlP3Q6Yi5ldmVudC5kaXNwYXRjaC5hcHBseShmLmVsZW0sYXJndW1lbnRzKX0sZi5lbGVtPWUpLG49KG58fCIiKS5tYXRjaCh3KXx8WyIiXSxsPW4ubGVuZ3RoO3doaWxlKGwtLSlzPXJ0LmV4ZWMobltsXSl8fFtdLGc9eT1zWzFdLG09KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxwPWIuZXZlbnQuc3BlY2lhbFtnXXx8e30sZz0oYT9wLmRlbGVnYXRlVHlwZTpwLmJpbmRUeXBlKXx8ZyxwPWIuZXZlbnQuc3BlY2lhbFtnXXx8e30sZD1iLmV4dGVuZCh7dHlwZTpnLG9yaWdUeXBlOnksZGF0YTpvLGhhbmRsZXI6cixndWlkOnIuZ3VpZCxzZWxlY3RvcjphLG5lZWRzQ29udGV4dDphJiZiLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoYSksbmFtZXNwYWNlOm0uam9pbigiLiIpfSxjKSwoaD11W2ddKXx8KGg9dVtnXT1bXSxoLmRlbGVnYXRlQ291bnQ9MCxwLnNldHVwJiZwLnNldHVwLmNhbGwoZSxvLG0sZikhPT0hMXx8KGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoZyxmLCExKTplLmF0dGFjaEV2ZW50JiZlLmF0dGFjaEV2ZW50KCJvbiIrZyxmKSkpLHAuYWRkJiYocC5hZGQuY2FsbChlLGQpLGQuaGFuZGxlci5ndWlkfHwoZC5oYW5kbGVyLmd1aWQ9ci5ndWlkKSksYT9oLnNwbGljZShoLmRlbGVnYXRlQ291bnQrKywwLGQpOmgucHVzaChkKSxiLmV2ZW50Lmdsb2JhbFtnXT0hMDtlPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMscCxmLGQsaCxnLG09Yi5oYXNEYXRhKGUpJiZiLl9kYXRhKGUpO2lmKG0mJihjPW0uZXZlbnRzKSl7dD0odHx8IiIpLm1hdGNoKHcpfHxbIiJdLGw9dC5sZW5ndGg7d2hpbGUobC0tKWlmKHM9cnQuZXhlYyh0W2xdKXx8W10sZD1nPXNbMV0saD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLGQpe3A9Yi5ldmVudC5zcGVjaWFsW2RdfHx7fSxkPShyP3AuZGVsZWdhdGVUeXBlOnAuYmluZFR5cGUpfHxkLGY9Y1tkXXx8W10scz1zWzJdJiZSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksdT1vPWYubGVuZ3RoO3doaWxlKG8tLSlhPWZbb10sIWkmJmchPT1hLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1hLmd1aWR8fHMmJiFzLnRlc3QoYS5uYW1lc3BhY2UpfHxyJiZyIT09YS5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYS5zZWxlY3Rvcil8fChmLnNwbGljZShvLDEpLGEuc2VsZWN0b3ImJmYuZGVsZWdhdGVDb3VudC0tLHAucmVtb3ZlJiZwLnJlbW92ZS5jYWxsKGUsYSkpO3UmJiFmLmxlbmd0aCYmKHAudGVhcmRvd24mJnAudGVhcmRvd24uY2FsbChlLGgsbS5oYW5kbGUpIT09ITF8fGIucmVtb3ZlRXZlbnQoZSxkLG0uaGFuZGxlKSxkZWxldGUgY1tkXSl9ZWxzZSBmb3IoZCBpbiBjKWIuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Yi5pc0VtcHR5T2JqZWN0KGMpJiYoZGVsZXRlIG0uaGFuZGxlLGIuX3JlbW92ZURhdGEoZSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihuLHIsaSxhKXt2YXIgcyx1LGwsYyxwLGYsZCxoPVtpfHxvXSxnPXkuY2FsbChuLCJ0eXBlIik/bi50eXBlOm4sbT15LmNhbGwobiwibmFtZXNwYWNlIik/bi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihsPWY9aT1pfHxvLDMhPT1pLm5vZGVUeXBlJiY4IT09aS5ub2RlVHlwZSYmIW50LnRlc3QoZytiLmV2ZW50LnRyaWdnZXJlZCkmJihnLmluZGV4T2YoIi4iKT49MCYmKG09Zy5zcGxpdCgiLiIpLGc9bS5zaGlmdCgpLG0uc29ydCgpKSx1PTA+Zy5pbmRleE9mKCI6IikmJiJvbiIrZyxuPW5bYi5leHBhbmRvXT9uOm5ldyBiLkV2ZW50KGcsIm9iamVjdCI9PXR5cGVvZiBuJiZuKSxuLmlzVHJpZ2dlcj0hMCxuLm5hbWVzcGFjZT1tLmpvaW4oIi4iKSxuLm5hbWVzcGFjZV9yZT1uLm5hbWVzcGFjZT9SZWdFeHAoIihefFxcLikiK20uam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxuLnJlc3VsdD10LG4udGFyZ2V0fHwobi50YXJnZXQ9aSkscj1udWxsPT1yP1tuXTpiLm1ha2VBcnJheShyLFtuXSkscD1iLmV2ZW50LnNwZWNpYWxbZ118fHt9LGF8fCFwLnRyaWdnZXJ8fHAudHJpZ2dlci5hcHBseShpLHIpIT09ITEpKXtpZighYSYmIXAubm9CdWJibGUmJiFiLmlzV2luZG93KGkpKXtmb3IoYz1wLmRlbGVnYXRlVHlwZXx8ZyxudC50ZXN0KGMrZyl8fChsPWwucGFyZW50Tm9kZSk7bDtsPWwucGFyZW50Tm9kZSloLnB1c2gobCksZj1sO2Y9PT0oaS5vd25lckRvY3VtZW50fHxvKSYmaC5wdXNoKGYuZGVmYXVsdFZpZXd8fGYucGFyZW50V2luZG93fHxlKX1kPTA7d2hpbGUoKGw9aFtkKytdKSYmIW4uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSluLnR5cGU9ZD4xP2M6cC5iaW5kVHlwZXx8ZyxzPShiLl9kYXRhKGwsImV2ZW50cyIpfHx7fSlbbi50eXBlXSYmYi5fZGF0YShsLCJoYW5kbGUiKSxzJiZzLmFwcGx5KGwscikscz11JiZsW3VdLHMmJmIuYWNjZXB0RGF0YShsKSYmcy5hcHBseSYmcy5hcHBseShsLHIpPT09ITEmJm4ucHJldmVudERlZmF1bHQoKTtpZihuLnR5cGU9ZywhKGF8fG4uaXNEZWZhdWx0UHJldmVudGVkKCl8fHAuX2RlZmF1bHQmJnAuX2RlZmF1bHQuYXBwbHkoaS5vd25lckRvY3VtZW50LHIpIT09ITF8fCJjbGljayI9PT1nJiZiLm5vZGVOYW1lKGksImEiKXx8IWIuYWNjZXB0RGF0YShpKXx8IXV8fCFpW2ddfHxiLmlzV2luZG93KGkpKSl7Zj1pW3VdLGYmJihpW3VdPW51bGwpLGIuZXZlbnQudHJpZ2dlcmVkPWc7dHJ5e2lbZ10oKX1jYXRjaCh2KXt9Yi5ldmVudC50cmlnZ2VyZWQ9dCxmJiYoaVt1XT1mKX1yZXR1cm4gbi5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXtlPWIuZXZlbnQuZml4KGUpO3ZhciBuLHIsaSxvLGEscz1bXSx1PWguY2FsbChhcmd1bWVudHMpLGw9KGIuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVtlLnR5cGVdfHxbXSxjPWIuZXZlbnQuc3BlY2lhbFtlLnR5cGVdfHx7fTtpZih1WzBdPWUsZS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFjLnByZURpc3BhdGNofHxjLnByZURpc3BhdGNoLmNhbGwodGhpcyxlKSE9PSExKXtzPWIuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGUsbCksbj0wO3doaWxlKChvPXNbbisrXSkmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2UuY3VycmVudFRhcmdldD1vLmVsZW0sYT0wO3doaWxlKChpPW8uaGFuZGxlcnNbYSsrXSkmJiFlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpKCFlLm5hbWVzcGFjZV9yZXx8ZS5uYW1lc3BhY2VfcmUudGVzdChpLm5hbWVzcGFjZSkpJiYoZS5oYW5kbGVPYmo9aSxlLmRhdGE9aS5kYXRhLHI9KChiLmV2ZW50LnNwZWNpYWxbaS5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGkuaGFuZGxlcikuYXBwbHkoby5lbGVtLHUpLHIhPT10JiYoZS5yZXN1bHQ9cik9PT0hMSYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGMucG9zdERpc3BhdGNoJiZjLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsZSksZS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihlLG4pe3ZhciByLGksbyxhLHM9W10sdT1uLmRlbGVnYXRlQ291bnQsbD1lLnRhcmdldDtpZih1JiZsLm5vZGVUeXBlJiYoIWUuYnV0dG9ufHwiY2xpY2siIT09ZS50eXBlKSlmb3IoO2whPXRoaXM7bD1sLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWwubm9kZVR5cGUmJihsLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1lLnR5cGUpKXtmb3Iobz1bXSxhPTA7dT5hO2ErKylpPW5bYV0scj1pLnNlbGVjdG9yKyIgIixvW3JdPT09dCYmKG9bcl09aS5uZWVkc0NvbnRleHQ/YihyLHRoaXMpLmluZGV4KGwpPj0wOmIuZmluZChyLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCksb1tyXSYmby5wdXNoKGkpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczpvfSl9cmV0dXJuIG4ubGVuZ3RoPnUmJnMucHVzaCh7ZWxlbTp0aGlzLGhhbmRsZXJzOm4uc2xpY2UodSl9KSxzfSxmaXg6ZnVuY3Rpb24oZSl7aWYoZVtiLmV4cGFuZG9dKXJldHVybiBlO3ZhciB0LG4scixpPWUudHlwZSxhPWUscz10aGlzLmZpeEhvb2tzW2ldO3N8fCh0aGlzLmZpeEhvb2tzW2ldPXM9dHQudGVzdChpKT90aGlzLm1vdXNlSG9va3M6ZXQudGVzdChpKT90aGlzLmtleUhvb2tzOnt9KSxyPXMucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQocy5wcm9wcyk6dGhpcy5wcm9wcyxlPW5ldyBiLkV2ZW50KGEpLHQ9ci5sZW5ndGg7d2hpbGUodC0tKW49clt0XSxlW25dPWFbbl07cmV0dXJuIGUudGFyZ2V0fHwoZS50YXJnZXQ9YS5zcmNFbGVtZW50fHxvKSwzPT09ZS50YXJnZXQubm9kZVR5cGUmJihlLnRhcmdldD1lLnRhcmdldC5wYXJlbnROb2RlKSxlLm1ldGFLZXk9ISFlLm1ldGFLZXkscy5maWx0ZXI/cy5maWx0ZXIoZSxhKTplfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZS53aGljaCYmKGUud2hpY2g9bnVsbCE9dC5jaGFyQ29kZT90LmNoYXJDb2RlOnQua2V5Q29kZSksZX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGUsbil7dmFyIHIsaSxhLHM9bi5idXR0b24sdT1uLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1lLnBhZ2VYJiZudWxsIT1uLmNsaWVudFgmJihpPWUudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fG8sYT1pLmRvY3VtZW50RWxlbWVudCxyPWkuYm9keSxlLnBhZ2VYPW4uY2xpZW50WCsoYSYmYS5zY3JvbGxMZWZ0fHxyJiZyLnNjcm9sbExlZnR8fDApLShhJiZhLmNsaWVudExlZnR8fHImJnIuY2xpZW50TGVmdHx8MCksZS5wYWdlWT1uLmNsaWVudFkrKGEmJmEuc2Nyb2xsVG9wfHxyJiZyLnNjcm9sbFRvcHx8MCktKGEmJmEuY2xpZW50VG9wfHxyJiZyLmNsaWVudFRvcHx8MCkpLCFlLnJlbGF0ZWRUYXJnZXQmJnUmJihlLnJlbGF0ZWRUYXJnZXQ9dT09PWUudGFyZ2V0P24udG9FbGVtZW50OnUpLGUud2hpY2h8fHM9PT10fHwoZS53aGljaD0xJnM/MToyJnM/Mzo0JnM/MjowKSxlfX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNsaWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGIubm9kZU5hbWUodGhpcywiaW5wdXQiKSYmImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGljaz8odGhpcy5jbGljaygpLCExKTp0fX0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09by5hY3RpdmVFbGVtZW50JiZ0aGlzLmZvY3VzKXRyeXtyZXR1cm4gdGhpcy5mb2N1cygpLCExfWNhdGNoKGUpe319LGRlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz09PW8uYWN0aXZlRWxlbWVudCYmdGhpcy5ibHVyPyh0aGlzLmJsdXIoKSwhMSk6dH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe2UucmVzdWx0IT09dCYmKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9Yi5leHRlbmQobmV3IGIuRXZlbnQsbix7dHlwZTplLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtyP2IuZXZlbnQudHJpZ2dlcihpLG51bGwsdCk6Yi5ldmVudC5kaXNwYXRjaC5jYWxsKHQsaSksaS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmbi5wcmV2ZW50RGVmYXVsdCgpfX0sYi5yZW1vdmVFdmVudD1vLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMSl9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0ib24iK3Q7ZS5kZXRhY2hFdmVudCYmKHR5cGVvZiBlW3JdPT09aSYmKGVbcl09bnVsbCksZS5kZXRhY2hFdmVudChyLG4pKX0sYi5FdmVudD1mdW5jdGlvbihlLG4pe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYi5FdmVudD8oZSYmZS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9ZSx0aGlzLnR5cGU9ZS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWUuZGVmYXVsdFByZXZlbnRlZHx8ZS5yZXR1cm5WYWx1ZT09PSExfHxlLmdldFByZXZlbnREZWZhdWx0JiZlLmdldFByZXZlbnREZWZhdWx0KCk/aXQ6b3QpOnRoaXMudHlwZT1lLG4mJmIuZXh0ZW5kKHRoaXMsbiksdGhpcy50aW1lU3RhbXA9ZSYmZS50aW1lU3RhbXB8fGIubm93KCksdGhpc1tiLmV4cGFuZG9dPSEwLHQpOm5ldyBiLkV2ZW50KGUsbil9LGIuRXZlbnQucHJvdG90eXBlPXtpc0RlZmF1bHRQcmV2ZW50ZWQ6b3QsaXNQcm9wYWdhdGlvblN0b3BwZWQ6b3QsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6b3QscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9aXQsZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOmUucmV0dXJuVmFsdWU9ITEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1pdCxlJiYoZS5zdG9wUHJvcGFnYXRpb24mJmUuc3RvcFByb3BhZ2F0aW9uKCksZS5jYW5jZWxCdWJibGU9ITApfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPWl0LHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxiLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSxmdW5jdGlvbihlLHQpe2IuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOnQsYmluZFR5cGU6dCxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIG4scj10aGlzLGk9ZS5yZWxhdGVkVGFyZ2V0LG89ZS5oYW5kbGVPYmo7Ci1yZXR1cm4oIWl8fGkhPT1yJiYhYi5jb250YWlucyhyLGkpKSYmKGUudHlwZT1vLm9yaWdUeXBlLG49by5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLnR5cGU9dCksbn19fSksYi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChiLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBiLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTooYi5ldmVudC5hZGQodGhpcywiY2xpY2suX3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0IixmdW5jdGlvbihlKXt2YXIgbj1lLnRhcmdldCxyPWIubm9kZU5hbWUobiwiaW5wdXQiKXx8Yi5ub2RlTmFtZShuLCJidXR0b24iKT9uLmZvcm06dDtyJiYhYi5fZGF0YShyLCJzdWJtaXRCdWJibGVzIikmJihiLmV2ZW50LmFkZChyLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oZSl7ZS5fc3VibWl0X2J1YmJsZT0hMH0pLGIuX2RhdGEociwic3VibWl0QnViYmxlcyIsITApKX0pLHQpfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7ZS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBlLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWUuaXNUcmlnZ2VyJiZiLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxlLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIGIubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOihiLmV2ZW50LnJlbW92ZSh0aGlzLCIuX3N1Ym1pdCIpLHQpfX0pLGIuc3VwcG9ydC5jaGFuZ2VCdWJibGVzfHwoYi5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gWi50ZXN0KHRoaXMubm9kZU5hbWUpPygoImNoZWNrYm94Ij09PXRoaXMudHlwZXx8InJhZGlvIj09PXRoaXMudHlwZSkmJihiLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihlKXsiY2hlY2tlZCI9PT1lLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLGIuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGUpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWUuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2VkPSExKSxiLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsZSwhMCl9KSksITEpOihiLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtaLnRlc3QodC5ub2RlTmFtZSkmJiFiLl9kYXRhKHQsImNoYW5nZUJ1YmJsZXMiKSYmKGIuZXZlbnQuYWRkKHQsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihlKXshdGhpcy5wYXJlbnROb2RlfHxlLmlzU2ltdWxhdGVkfHxlLmlzVHJpZ2dlcnx8Yi5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsZSwhMCl9KSxiLl9kYXRhKHQsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KSx0KX0saGFuZGxlOmZ1bmN0aW9uKGUpe3ZhciBuPWUudGFyZ2V0O3JldHVybiB0aGlzIT09bnx8ZS5pc1NpbXVsYXRlZHx8ZS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1uLnR5cGUmJiJjaGVja2JveCIhPT1uLnR5cGU/ZS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dH0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4gYi5ldmVudC5yZW1vdmUodGhpcywiLl9jaGFuZ2UiKSwhWi50ZXN0KHRoaXMubm9kZU5hbWUpfX0pLGIuc3VwcG9ydC5mb2N1c2luQnViYmxlc3x8Yi5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihlLHQpe3ZhciBuPTAscj1mdW5jdGlvbihlKXtiLmV2ZW50LnNpbXVsYXRlKHQsZS50YXJnZXQsYi5ldmVudC5maXgoZSksITApfTtiLmV2ZW50LnNwZWNpYWxbdF09e3NldHVwOmZ1bmN0aW9uKCl7MD09PW4rKyYmby5hZGRFdmVudExpc3RlbmVyKGUsciwhMCl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7MD09PS0tbiYmby5yZW1vdmVFdmVudExpc3RlbmVyKGUsciwhMCl9fX0pLGIuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihlLG4scixpLG8pe3ZhciBhLHM7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXsic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj10KTtmb3IoYSBpbiBlKXRoaXMub24oYSxuLHIsZVthXSxvKTtyZXR1cm4gdGhpc31pZihudWxsPT1yJiZudWxsPT1pPyhpPW4scj1uPXQpOm51bGw9PWkmJigic3RyaW5nIj09dHlwZW9mIG4/KGk9cixyPXQpOihpPXIscj1uLG49dCkpLGk9PT0hMSlpPW90O2Vsc2UgaWYoIWkpcmV0dXJuIHRoaXM7cmV0dXJuIDE9PT1vJiYocz1pLGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGIoKS5vZmYoZSkscy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGkuZ3VpZD1zLmd1aWR8fChzLmd1aWQ9Yi5ndWlkKyspKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtiLmV2ZW50LmFkZCh0aGlzLGUsaSxyLG4pfSl9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5vbihlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG87aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIGk9ZS5oYW5kbGVPYmosYihlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoaS5uYW1lc3BhY2U/aS5vcmlnVHlwZSsiLiIraS5uYW1lc3BhY2U6aS5vcmlnVHlwZSxpLnNlbGVjdG9yLGkuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihvIGluIGUpdGhpcy5vZmYobyxuLGVbb10pO3JldHVybiB0aGlzfXJldHVybihuPT09ITF8fCJmdW5jdGlvbiI9PXR5cGVvZiBuKSYmKHI9bixuPXQpLHI9PT0hMSYmKHI9b3QpLHRoaXMuZWFjaChmdW5jdGlvbigpe2IuZXZlbnQucmVtb3ZlKHRoaXMsZSxyLG4pfSl9LGJpbmQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLm9uKGUsbnVsbCx0LG4pfSx1bmJpbmQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5vZmYoZSxudWxsLHQpfSxkZWxlZ2F0ZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5vbih0LGUsbixyKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKGUsIioqIik6dGhpcy5vZmYodCxlfHwiKioiLG4pfSx0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2IuZXZlbnQudHJpZ2dlcihlLHQsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSxuKXt2YXIgcj10aGlzWzBdO3JldHVybiByP2IuZXZlbnQudHJpZ2dlcihlLG4sciwhMCk6dH19KSxmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLGEscyx1LGwsYyxwLGYsZCxoLGcsbSx5LHYseD0ic2l6emxlIistbmV3IERhdGUsdz1lLmRvY3VtZW50LFQ9e30sTj0wLEM9MCxrPWl0KCksRT1pdCgpLFM9aXQoKSxBPXR5cGVvZiB0LGo9MTw8MzEsRD1bXSxMPUQucG9wLEg9RC5wdXNoLHE9RC5zbGljZSxNPUQuaW5kZXhPZnx8ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPXRoaXMubGVuZ3RoO2Zvcig7bj50O3QrKylpZih0aGlzW3RdPT09ZSlyZXR1cm4gdDtyZXR1cm4tMX0sXz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsRj0iKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLE89Ri5yZXBsYWNlKCJ3IiwidyMiKSxCPSIoWypeJHwhfl0/PSkiLFA9IlxcWyIrXysiKigiK0YrIikiK18rIiooPzoiK0IrXysiKig/OihbJ1wiXSkoKD86XFxcXC58W15cXFxcXSkqPylcXDN8KCIrTysiKXwpfCkiK18rIipcXF0iLFI9IjooIitGKyIpKD86XFwoKChbJ1wiXSkoKD86XFxcXC58W15cXFxcXSkqPylcXDN8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitQLnJlcGxhY2UoMyw4KSsiKSopfC4qKVxcKXwpIixXPVJlZ0V4cCgiXiIrXysiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitfKyIrJCIsImciKSwkPVJlZ0V4cCgiXiIrXysiKiwiK18rIioiKSxJPVJlZ0V4cCgiXiIrXysiKihbXFx4MjBcXHRcXHJcXG5cXGY+K35dKSIrXysiKiIpLHo9UmVnRXhwKFIpLFg9UmVnRXhwKCJeIitPKyIkIiksVT17SUQ6UmVnRXhwKCJeIygiK0YrIikiKSxDTEFTUzpSZWdFeHAoIl5cXC4oIitGKyIpIiksTkFNRTpSZWdFeHAoIl5cXFtuYW1lPVsnXCJdPygiK0YrIilbJ1wiXT9cXF0iKSxUQUc6UmVnRXhwKCJeKCIrRi5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6UmVnRXhwKCJeIitQKSxQU0VVRE86UmVnRXhwKCJeIitSKSxDSElMRDpSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrXysiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrXysiKig/OihbKy1dfCkiK18rIiooXFxkKyl8KSkiK18rIipcXCl8KSIsImkiKSxuZWVkc0NvbnRleHQ6UmVnRXhwKCJeIitfKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK18rIiooKD86LVxcZCk/XFxkKikiK18rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFY9L1tceDIwXHRcclxuXGZdKlsrfl0vLFk9L15bXntdK1x7XHMqXFtuYXRpdmUgY29kZS8sSj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLEc9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxRPS9eaFxkJC9pLEs9Lyd8XFwvZyxaPS9cPVtceDIwXHRcclxuXGZdKihbXiciXF1dKilbXHgyMFx0XHJcblxmXSpcXS9nLGV0PS9cXChbXGRhLWZBLUZdezEsNn1bXHgyMFx0XHJcblxmXT98LikvZyx0dD1mdW5jdGlvbihlLHQpe3ZhciBuPSIweCIrdC02NTUzNjtyZXR1cm4gbiE9PW4/dDowPm4/U3RyaW5nLmZyb21DaGFyQ29kZShuKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fG4+PjEwLDU2MzIwfDEwMjMmbil9O3RyeXtxLmNhbGwody5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2RlcywwKVswXS5ub2RlVHlwZX1jYXRjaChudCl7cT1mdW5jdGlvbihlKXt2YXIgdCxuPVtdO3doaWxlKHQ9dGhpc1tlKytdKW4ucHVzaCh0KTtyZXR1cm4gbn19ZnVuY3Rpb24gcnQoZSl7cmV0dXJuIFkudGVzdChlKyIiKX1mdW5jdGlvbiBpdCgpe3ZhciBlLHQ9W107cmV0dXJuIGU9ZnVuY3Rpb24obixyKXtyZXR1cm4gdC5wdXNoKG4rPSIgIik+aS5jYWNoZUxlbmd0aCYmZGVsZXRlIGVbdC5zaGlmdCgpXSxlW25dPXJ9fWZ1bmN0aW9uIG90KGUpe3JldHVybiBlW3hdPSEwLGV9ZnVuY3Rpb24gYXQoZSl7dmFyIHQ9cC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0cnl7cmV0dXJuIGUodCl9Y2F0Y2gobil7cmV0dXJuITF9ZmluYWxseXt0PW51bGx9fWZ1bmN0aW9uIHN0KGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbCxmLGcsbSx2O2lmKCh0P3Qub3duZXJEb2N1bWVudHx8dDp3KSE9PXAmJmModCksdD10fHxwLG49bnx8W10sIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbjtpZigxIT09KHM9dC5ub2RlVHlwZSkmJjkhPT1zKXJldHVybltdO2lmKCFkJiYhcil7aWYoaT1KLmV4ZWMoZSkpaWYoYT1pWzFdKXtpZig5PT09cyl7aWYobz10LmdldEVsZW1lbnRCeUlkKGEpLCFvfHwhby5wYXJlbnROb2RlKXJldHVybiBuO2lmKG8uaWQ9PT1hKXJldHVybiBuLnB1c2gobyksbn1lbHNlIGlmKHQub3duZXJEb2N1bWVudCYmKG89dC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKSYmeSh0LG8pJiZvLmlkPT09YSlyZXR1cm4gbi5wdXNoKG8pLG59ZWxzZXtpZihpWzJdKXJldHVybiBILmFwcGx5KG4scS5jYWxsKHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSksMCkpLG47aWYoKGE9aVszXSkmJlQuZ2V0QnlDbGFzc05hbWUmJnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gSC5hcHBseShuLHEuY2FsbCh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYSksMCkpLG59aWYoVC5xc2EmJiFoLnRlc3QoZSkpe2lmKGY9ITAsZz14LG09dCx2PTk9PT1zJiZlLDE9PT1zJiYib2JqZWN0IiE9PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bD1mdChlKSwoZj10LmdldEF0dHJpYnV0ZSgiaWQiKSk/Zz1mLnJlcGxhY2UoSywiXFwkJiIpOnQuc2V0QXR0cmlidXRlKCJpZCIsZyksZz0iW2lkPSciK2crIiddICIsdT1sLmxlbmd0aDt3aGlsZSh1LS0pbFt1XT1nK2R0KGxbdV0pO209Vi50ZXN0KGUpJiZ0LnBhcmVudE5vZGV8fHQsdj1sLmpvaW4oIiwiKX1pZih2KXRyeXtyZXR1cm4gSC5hcHBseShuLHEuY2FsbChtLnF1ZXJ5U2VsZWN0b3JBbGwodiksMCkpLG59Y2F0Y2goYil7fWZpbmFsbHl7Znx8dC5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gd3QoZS5yZXBsYWNlKFcsIiQxIiksdCxuLHIpfWE9c3QuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmKGUub3duZXJEb2N1bWVudHx8ZSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiB0PyJIVE1MIiE9PXQubm9kZU5hbWU6ITF9LGM9c3Quc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIG49ZT9lLm93bmVyRG9jdW1lbnR8fGU6dztyZXR1cm4gbiE9PXAmJjk9PT1uLm5vZGVUeXBlJiZuLmRvY3VtZW50RWxlbWVudD8ocD1uLGY9bi5kb2N1bWVudEVsZW1lbnQsZD1hKG4pLFQudGFnTmFtZU5vQ29tbWVudHM9YXQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYXBwZW5kQ2hpbGQobi5jcmVhdGVDb21tZW50KCIiKSksIWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSxULmF0dHJpYnV0ZXM9YXQoZnVuY3Rpb24oZSl7ZS5pbm5lckhUTUw9IjxzZWxlY3Q+PC9zZWxlY3Q+Ijt2YXIgdD10eXBlb2YgZS5sYXN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJtdWx0aXBsZSIpO3JldHVybiJib29sZWFuIiE9PXQmJiJzdHJpbmciIT09dH0pLFQuZ2V0QnlDbGFzc05hbWU9YXQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdoaWRkZW4gZSc+PC9kaXY+PGRpdiBjbGFzcz0naGlkZGVuJz48L2Rpdj4iLGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoPyhlLmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiLDI9PT1lLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGgpOiExfSksVC5nZXRCeU5hbWU9YXQoZnVuY3Rpb24oZSl7ZS5pZD14KzAsZS5pbm5lckhUTUw9IjxhIG5hbWU9JyIreCsiJz48L2E+PGRpdiBuYW1lPSciK3grIic+PC9kaXY+IixmLmluc2VydEJlZm9yZShlLGYuZmlyc3RDaGlsZCk7dmFyIHQ9bi5nZXRFbGVtZW50c0J5TmFtZSYmbi5nZXRFbGVtZW50c0J5TmFtZSh4KS5sZW5ndGg9PT0yK24uZ2V0RWxlbWVudHNCeU5hbWUoeCswKS5sZW5ndGg7cmV0dXJuIFQuZ2V0SWROb3ROYW1lPSFuLmdldEVsZW1lbnRCeUlkKHgpLGYucmVtb3ZlQ2hpbGQoZSksdH0pLGkuYXR0ckhhbmRsZT1hdChmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLGUuZmlyc3RDaGlsZCYmdHlwZW9mIGUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPT1BJiYiIyI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KT97fTp7aHJlZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSx0eXBlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSgidHlwZSIpfX0sVC5nZXRJZE5vdE5hbWU/KGkuZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKHR5cGVvZiB0LmdldEVsZW1lbnRCeUlkIT09QSYmIWQpe3ZhciBuPXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIG4mJm4ucGFyZW50Tm9kZT9bbl06W119fSxpLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoZXQsdHQpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImlkIik9PT10fX0pOihpLmZpbmQuSUQ9ZnVuY3Rpb24oZSxuKXtpZih0eXBlb2Ygbi5nZXRFbGVtZW50QnlJZCE9PUEmJiFkKXt2YXIgcj1uLmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiByP3IuaWQ9PT1lfHx0eXBlb2Ygci5nZXRBdHRyaWJ1dGVOb2RlIT09QSYmci5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLnZhbHVlPT09ZT9bcl06dDpbXX19LGkuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShldCx0dCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPXR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUhPT1BJiZlLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIG4mJm4udmFsdWU9PT10fX0pLGkuZmluZC5UQUc9VC50YWdOYW1lTm9Db21tZW50cz9mdW5jdGlvbihlLG4pe3JldHVybiB0eXBlb2Ygbi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PUE/bi5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTp0fTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9W10saT0wLG89dC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTtpZigiKiI9PT1lKXt3aGlsZShuPW9baSsrXSkxPT09bi5ub2RlVHlwZSYmci5wdXNoKG4pO3JldHVybiByfXJldHVybiBvfSxpLmZpbmQuTkFNRT1ULmdldEJ5TmFtZSYmZnVuY3Rpb24oZSxuKXtyZXR1cm4gdHlwZW9mIG4uZ2V0RWxlbWVudHNCeU5hbWUhPT1BP24uZ2V0RWxlbWVudHNCeU5hbWUobmFtZSk6dH0saS5maW5kLkNMQVNTPVQuZ2V0QnlDbGFzc05hbWUmJmZ1bmN0aW9uKGUsbil7cmV0dXJuIHR5cGVvZiBuLmdldEVsZW1lbnRzQnlDbGFzc05hbWU9PT1BfHxkP3Q6bi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpfSxnPVtdLGg9WyI6Zm9jdXMiXSwoVC5xc2E9cnQobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihhdChmdW5jdGlvbihlKXtlLmlubmVySFRNTD0iPHNlbGVjdD48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxoLnB1c2goIlxcWyIrXysiKig/OmNoZWNrZWR8ZGlzYWJsZWR8aXNtYXB8bXVsdGlwbGV8cmVhZG9ubHl8c2VsZWN0ZWR8dmFsdWUpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8aC5wdXNoKCI6Y2hlY2tlZCIpfSksYXQoZnVuY3Rpb24oZSl7ZS5pbm5lckhUTUw9IjxpbnB1dCB0eXBlPSdoaWRkZW4nIGk9JycvPiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJbaV49JyddIikubGVuZ3RoJiZoLnB1c2goIlsqXiRdPSIrXysiKig/OlwiXCJ8JycpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8aC5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGUucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLGgucHVzaCgiLC4qOiIpfSkpLChULm1hdGNoZXNTZWxlY3Rvcj1ydChtPWYubWF0Y2hlc1NlbGVjdG9yfHxmLm1vek1hdGNoZXNTZWxlY3Rvcnx8Zi53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGYub01hdGNoZXNTZWxlY3Rvcnx8Zi5tc01hdGNoZXNTZWxlY3RvcikpJiZhdChmdW5jdGlvbihlKXtULmRpc2Nvbm5lY3RlZE1hdGNoPW0uY2FsbChlLCJkaXYiKSxtLmNhbGwoZSwiW3MhPScnXTp4IiksZy5wdXNoKCIhPSIsUil9KSxoPVJlZ0V4cChoLmpvaW4oInwiKSksZz1SZWdFeHAoZy5qb2luKCJ8IikpLHk9cnQoZi5jb250YWlucyl8fGYuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ZnVuY3Rpb24oZSx0KXt2YXIgbj05PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLHI9dCYmdC5wYXJlbnROb2RlO3JldHVybiBlPT09cnx8ISghcnx8MSE9PXIubm9kZVR5cGV8fCEobi5jb250YWlucz9uLmNvbnRhaW5zKHIpOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikpKX06ZnVuY3Rpb24oZSx0KXtpZih0KXdoaWxlKHQ9dC5wYXJlbnROb2RlKWlmKHQ9PT1lKXJldHVybiEwO3JldHVybiExfSx2PWYuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4gZT09PXQ/KHU9ITAsMCk6KHI9dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSk/MSZyfHxlLnBhcmVudE5vZGUmJjExPT09ZS5wYXJlbnROb2RlLm5vZGVUeXBlP2U9PT1ufHx5KHcsZSk/LTE6dD09PW58fHkodyx0KT8xOjA6NCZyPy0xOjE6ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8tMToxfTpmdW5jdGlvbihlLHQpe3ZhciByLGk9MCxvPWUucGFyZW50Tm9kZSxhPXQucGFyZW50Tm9kZSxzPVtlXSxsPVt0XTtpZihlPT09dClyZXR1cm4gdT0hMCwwO2lmKCFvfHwhYSlyZXR1cm4gZT09PW4/LTE6dD09PW4/MTpvPy0xOmE/MTowO2lmKG89PT1hKXJldHVybiB1dChlLHQpO3I9ZTt3aGlsZShyPXIucGFyZW50Tm9kZSlzLnVuc2hpZnQocik7cj10O3doaWxlKHI9ci5wYXJlbnROb2RlKWwudW5zaGlmdChyKTt3aGlsZShzW2ldPT09bFtpXSlpKys7cmV0dXJuIGk/dXQoc1tpXSxsW2ldKTpzW2ldPT09dz8tMTpsW2ldPT09dz8xOjB9LHU9ITEsWzAsMF0uc29ydCh2KSxULmRldGVjdER1cGxpY2F0ZXM9dSxwKTpwfSxzdC5tYXRjaGVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHN0KGUsbnVsbCxudWxsLHQpfSxzdC5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oZSx0KXtpZigoZS5vd25lckRvY3VtZW50fHxlKSE9PXAmJmMoZSksdD10LnJlcGxhY2UoWiwiPSckMSddIiksISghVC5tYXRjaGVzU2VsZWN0b3J8fGR8fGcmJmcudGVzdCh0KXx8aC50ZXN0KHQpKSl0cnl7dmFyIG49bS5jYWxsKGUsdCk7aWYobnx8VC5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKHIpe31yZXR1cm4gc3QodCxwLG51bGwsW2VdKS5sZW5ndGg+MH0sc3QuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZS5vd25lckRvY3VtZW50fHxlKSE9PXAmJmMoZSkseShlLHQpfSxzdC5hdHRyPWZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPT1wJiZjKGUpLGR8fCh0PXQudG9Mb3dlckNhc2UoKSksKG49aS5hdHRySGFuZGxlW3RdKT9uKGUpOmR8fFQuYXR0cmlidXRlcz9lLmdldEF0dHJpYnV0ZSh0KTooKG49ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKXx8ZS5nZXRBdHRyaWJ1dGUodCkpJiZlW3RdPT09ITA/dDpuJiZuLnNwZWNpZmllZD9uLnZhbHVlOm51bGx9LHN0LmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2UpfSxzdC51bmlxdWVTb3J0PWZ1bmN0aW9uKGUpe3ZhciB0LG49W10scj0xLGk9MDtpZih1PSFULmRldGVjdER1cGxpY2F0ZXMsZS5zb3J0KHYpLHUpe2Zvcig7dD1lW3JdO3IrKyl0PT09ZVtyLTFdJiYoaT1uLnB1c2gocikpO3doaWxlKGktLSllLnNwbGljZShuW2ldLDEpfXJldHVybiBlfTtmdW5jdGlvbiB1dChlLHQpe3ZhciBuPXQmJmUscj1uJiYofnQuc291cmNlSW5kZXh8fGopLSh+ZS5zb3VyY2VJbmRleHx8aik7aWYocilyZXR1cm4gcjtpZihuKXdoaWxlKG49bi5uZXh0U2libGluZylpZihuPT09dClyZXR1cm4tMTtyZXR1cm4gZT8xOi0xfWZ1bmN0aW9uIGx0KGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PW4mJnQudHlwZT09PWV9fWZ1bmN0aW9uIGN0KGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1ufHwiYnV0dG9uIj09PW4pJiZ0LnR5cGU9PT1lfX1mdW5jdGlvbiBwdChlKXtyZXR1cm4gb3QoZnVuY3Rpb24odCl7cmV0dXJuIHQ9K3Qsb3QoZnVuY3Rpb24obixyKXt2YXIgaSxvPWUoW10sbi5sZW5ndGgsdCksYT1vLmxlbmd0aDt3aGlsZShhLS0pbltpPW9bYV1dJiYobltpXT0hKHJbaV09bltpXSkpfSl9KX1vPXN0LmdldFRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj0iIixyPTAsaT1lLm5vZGVUeXBlO2lmKGkpe2lmKDE9PT1pfHw5PT09aXx8MTE9PT1pKXtpZigic3RyaW5nIj09dHlwZW9mIGUudGV4dENvbnRlbnQpcmV0dXJuIGUudGV4dENvbnRlbnQ7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKW4rPW8oZSl9ZWxzZSBpZigzPT09aXx8ND09PWkpcmV0dXJuIGUubm9kZVZhbHVlfWVsc2UgZm9yKDt0PWVbcl07cisrKW4rPW8odCk7cmV0dXJuIG59LGk9c3Quc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86b3QsbWF0Y2g6VSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZShldCx0dCksZVszXT0oZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UoZXQsdHQpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzdC5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzdC5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs1XSYmZVsyXTtyZXR1cm4gVS5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbNF0/ZVsyXT1lWzRdOm4mJnoudGVzdChuKSYmKHQ9ZnQobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7cmV0dXJuIioiPT09ZT9mdW5jdGlvbigpe3JldHVybiEwfTooZT1lLnJlcGxhY2UoZXQsdHQpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZU5hbWUmJnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWV9KX0sQ0xBU1M6ZnVuY3Rpb24oZSl7dmFyIHQ9a1tlKyIgIl07cmV0dXJuIHR8fCh0PVJlZ0V4cCgiKF58IitfKyIpIitlKyIoIitfKyJ8JCkiKSkmJmsoZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KGUuY2xhc3NOYW1lfHx0eXBlb2YgZS5nZXRBdHRyaWJ1dGUhPT1BJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmdW5jdGlvbihyKXt2YXIgaT1zdC5hdHRyKHIsZSk7cmV0dXJuIG51bGw9PWk/IiE9Ij09PXQ6dD8oaSs9IiIsIj0iPT09dD9pPT09bjoiIT0iPT09dD9pIT09bjoiXj0iPT09dD9uJiYwPT09aS5pbmRleE9mKG4pOiIqPSI9PT10P24mJmkuaW5kZXhPZihuKT4tMToiJD0iPT09dD9uJiZpLnNsaWNlKC1uLmxlbmd0aCk9PT1uOiJ+PSI9PT10PygiICIraSsiICIpLmluZGV4T2Yobik+LTE6Inw9Ij09PXQ/aT09PW58fGkuc2xpY2UoMCxuLmxlbmd0aCsxKT09PW4rIi0iOiExKTohMH19LENISUxEOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIG89Im50aCIhPT1lLnNsaWNlKDAsMyksYT0ibGFzdCIhPT1lLnNsaWNlKC00KSxzPSJvZi10eXBlIj09PXQ7cmV0dXJuIDE9PT1yJiYwPT09aT9mdW5jdGlvbihlKXtyZXR1cm4hIWUucGFyZW50Tm9kZX06ZnVuY3Rpb24odCxuLHUpe3ZhciBsLGMscCxmLGQsaCxnPW8hPT1hPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyIsbT10LnBhcmVudE5vZGUseT1zJiZ0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksdj0hdSYmIXM7aWYobSl7aWYobyl7d2hpbGUoZyl7cD10O3doaWxlKHA9cFtnXSlpZihzP3Aubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXk6MT09PXAubm9kZVR5cGUpcmV0dXJuITE7aD1nPSJvbmx5Ij09PWUmJiFoJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKGg9W2E/bS5maXJzdENoaWxkOm0ubGFzdENoaWxkXSxhJiZ2KXtjPW1beF18fChtW3hdPXt9KSxsPWNbZV18fFtdLGQ9bFswXT09PU4mJmxbMV0sZj1sWzBdPT09TiYmbFsyXSxwPWQmJm0uY2hpbGROb2Rlc1tkXTt3aGlsZShwPSsrZCYmcCYmcFtnXXx8KGY9ZD0wKXx8aC5wb3AoKSlpZigxPT09cC5ub2RlVHlwZSYmKytmJiZwPT09dCl7Y1tlXT1bTixkLGZdO2JyZWFrfX1lbHNlIGlmKHYmJihsPSh0W3hdfHwodFt4XT17fSkpW2VdKSYmbFswXT09PU4pZj1sWzFdO2Vsc2Ugd2hpbGUocD0rK2QmJnAmJnBbZ118fChmPWQ9MCl8fGgucG9wKCkpaWYoKHM/cC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09eToxPT09cC5ub2RlVHlwZSkmJisrZiYmKHYmJigocFt4XXx8KHBbeF09e30pKVtlXT1bTixmXSkscD09PXQpKWJyZWFrO3JldHVybiBmLT1pLGY9PT1yfHwwPT09ZiVyJiZmL3I+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1pLnBzZXVkb3NbZV18fGkuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzdC5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiByW3hdP3IodCk6ci5sZW5ndGg+MT8obj1bZSxlLCIiLHRdLGkuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP290KGZ1bmN0aW9uKGUsbil7dmFyIGksbz1yKGUsdCksYT1vLmxlbmd0aDt3aGlsZShhLS0paT1NLmNhbGwoZSxvW2FdKSxlW2ldPSEobltpXT1vW2FdKX0pOmZ1bmN0aW9uKGUpe3JldHVybiByKGUsMCxuKX0pOnJ9fSxwc2V1ZG9zOntub3Q6b3QoZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1bXSxyPXMoZS5yZXBsYWNlKFcsIiQxIikpO3JldHVybiByW3hdP290KGZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBvLGE9cihlLG51bGwsaSxbXSkscz1lLmxlbmd0aDt3aGlsZShzLS0pKG89YVtzXSkmJihlW3NdPSEodFtzXT1vKSl9KTpmdW5jdGlvbihlLGksbyl7cmV0dXJuIHRbMF09ZSxyKHQsbnVsbCxvLG4pLCFuLnBvcCgpfX0pLGhhczpvdChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHN0KGUsdCkubGVuZ3RoPjB9fSksY29udGFpbnM6b3QoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybih0LnRleHRDb250ZW50fHx0LmlubmVyVGV4dHx8byh0KSkuaW5kZXhPZihlKT4tMX19KSxsYW5nOm90KGZ1bmN0aW9uKGUpe3JldHVybiBYLnRlc3QoZXx8IiIpfHxzdC5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIitlKSxlPWUucmVwbGFjZShldCx0dCkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbih0KXt2YXIgbjtkbyBpZihuPWQ/dC5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fHQuZ2V0QXR0cmlidXRlKCJsYW5nIik6dC5sYW5nKXJldHVybiBuPW4udG9Mb3dlckNhc2UoKSxuPT09ZXx8MD09PW4uaW5kZXhPZihlKyItIik7d2hpbGUoKHQ9dC5wYXJlbnROb2RlKSYmMT09PXQubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbih0KXt2YXIgbj1lLmxvY2F0aW9uJiZlLmxvY2F0aW9uLmhhc2g7cmV0dXJuIG4mJm4uc2xpY2UoMSk9PT10LmlkfSxyb290OmZ1bmN0aW9uKGUpe3JldHVybiBlPT09Zn0sZm9jdXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1wLmFjdGl2ZUVsZW1lbnQmJighcC5oYXNGb2N1c3x8cC5oYXNGb2N1cygpKSYmISEoZS50eXBlfHxlLmhyZWZ8fH5lLnRhYkluZGV4KX0sZW5hYmxlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD09PSExfSxkaXNhYmxlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dCYmISFlLmNoZWNrZWR8fCJvcHRpb24iPT09dCYmISFlLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxlLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGUpe2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZylpZihlLm5vZGVOYW1lPiJAInx8Mz09PWUubm9kZVR5cGV8fDQ9PT1lLm5vZGVUeXBlKXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWkucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBHLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fHQudG9Mb3dlckNhc2UoKT09PWUudHlwZSl9LGZpcnN0OnB0KGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpwdChmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6cHQoZnVuY3Rpb24oZSx0LG4pe3JldHVyblswPm4/bit0Om5dfSksZXZlbjpwdChmdW5jdGlvbihlLHQpe3ZhciBuPTA7Zm9yKDt0Pm47bis9MillLnB1c2gobik7cmV0dXJuIGV9KSxvZGQ6cHQoZnVuY3Rpb24oZSx0KXt2YXIgbj0xO2Zvcig7dD5uO24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksbHQ6cHQoZnVuY3Rpb24oZSx0LG4pe3ZhciByPTA+bj9uK3Q6bjtmb3IoOy0tcj49MDspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6cHQoZnVuY3Rpb24oZSx0LG4pe3ZhciByPTA+bj9uK3Q6bjtmb3IoO3Q+KytyOyllLnB1c2gocik7cmV0dXJuIGV9KX19O2ZvcihuIGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWkucHNldWRvc1tuXT1sdChuKTtmb3IobiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWkucHNldWRvc1tuXT1jdChuKTtmdW5jdGlvbiBmdChlLHQpe3ZhciBuLHIsbyxhLHMsdSxsLGM9RVtlKyIgIl07aWYoYylyZXR1cm4gdD8wOmMuc2xpY2UoMCk7cz1lLHU9W10sbD1pLnByZUZpbHRlcjt3aGlsZShzKXsoIW58fChyPSQuZXhlYyhzKSkpJiYociYmKHM9cy5zbGljZShyWzBdLmxlbmd0aCl8fHMpLHUucHVzaChvPVtdKSksbj0hMSwocj1JLmV4ZWMocykpJiYobj1yLnNoaWZ0KCksby5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKFcsIiAiKX0pLHM9cy5zbGljZShuLmxlbmd0aCkpO2ZvcihhIGluIGkuZmlsdGVyKSEocj1VW2FdLmV4ZWMocykpfHxsW2FdJiYhKHI9bFthXShyKSl8fChuPXIuc2hpZnQoKSxvLnB1c2goe3ZhbHVlOm4sdHlwZTphLG1hdGNoZXM6cn0pLHM9cy5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P3MubGVuZ3RoOnM/c3QuZXJyb3IoZSk6RShlLHUpLnNsaWNlKDApfWZ1bmN0aW9uIGR0KGUpe3ZhciB0PTAsbj1lLmxlbmd0aCxyPSIiO2Zvcig7bj50O3QrKylyKz1lW3RdLnZhbHVlO3JldHVybiByfWZ1bmN0aW9uIGh0KGUsdCxuKXt2YXIgaT10LmRpcixvPW4mJiJwYXJlbnROb2RlIj09PWksYT1DKys7cmV0dXJuIHQuZmlyc3Q/ZnVuY3Rpb24odCxuLHIpe3doaWxlKHQ9dFtpXSlpZigxPT09dC5ub2RlVHlwZXx8bylyZXR1cm4gZSh0LG4scil9OmZ1bmN0aW9uKHQsbixzKXt2YXIgdSxsLGMscD1OKyIgIithO2lmKHMpe3doaWxlKHQ9dFtpXSlpZigoMT09PXQubm9kZVR5cGV8fG8pJiZlKHQsbixzKSlyZXR1cm4hMH1lbHNlIHdoaWxlKHQ9dFtpXSlpZigxPT09dC5ub2RlVHlwZXx8bylpZihjPXRbeF18fCh0W3hdPXt9KSwobD1jW2ldKSYmbFswXT09PXApe2lmKCh1PWxbMV0pPT09ITB8fHU9PT1yKXJldHVybiB1PT09ITB9ZWxzZSBpZihsPWNbaV09W3BdLGxbMV09ZSh0LG4scyl8fHIsbFsxXT09PSEwKXJldHVybiEwfX1mdW5jdGlvbiBndChlKXtyZXR1cm4gZS5sZW5ndGg+MT9mdW5jdGlvbih0LG4scil7dmFyIGk9ZS5sZW5ndGg7d2hpbGUoaS0tKWlmKCFlW2ldKHQsbixyKSlyZXR1cm4hMTtyZXR1cm4hMH06ZVswXX1mdW5jdGlvbiBtdChlLHQsbixyLGkpe3ZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O2Zvcig7dT5zO3MrKykobz1lW3NdKSYmKCFufHxuKG8scixpKSkmJihhLnB1c2gobyksbCYmdC5wdXNoKHMpKTtyZXR1cm4gYX1mdW5jdGlvbiB5dChlLHQsbixyLGksbyl7cmV0dXJuIHImJiFyW3hdJiYocj15dChyKSksaSYmIWlbeF0mJihpPXl0KGksbykpLG90KGZ1bmN0aW9uKG8sYSxzLHUpe3ZhciBsLGMscCxmPVtdLGQ9W10saD1hLmxlbmd0aCxnPW98fHh0KHR8fCIqIixzLm5vZGVUeXBlP1tzXTpzLFtdKSxtPSFlfHwhbyYmdD9nOm10KGcsZixlLHMsdSkseT1uP2l8fChvP2U6aHx8cik/W106YTptO2lmKG4mJm4obSx5LHMsdSkscil7bD1tdCh5LGQpLHIobCxbXSxzLHUpLGM9bC5sZW5ndGg7d2hpbGUoYy0tKShwPWxbY10pJiYoeVtkW2NdXT0hKG1bZFtjXV09cCkpfWlmKG8pe2lmKGl8fGUpe2lmKGkpe2w9W10sYz15Lmxlbmd0aDt3aGlsZShjLS0pKHA9eVtjXSkmJmwucHVzaChtW2NdPXApO2kobnVsbCx5PVtdLGwsdSl9Yz15Lmxlbmd0aDt3aGlsZShjLS0pKHA9eVtjXSkmJihsPWk/TS5jYWxsKG8scCk6ZltjXSk+LTEmJihvW2xdPSEoYVtsXT1wKSl9fWVsc2UgeT1tdCh5PT09YT95LnNwbGljZShoLHkubGVuZ3RoKTp5KSxpP2kobnVsbCxhLHksdSk6SC5hcHBseShhLHkpfSl9ZnVuY3Rpb24gdnQoZSl7dmFyIHQsbixyLG89ZS5sZW5ndGgsYT1pLnJlbGF0aXZlW2VbMF0udHlwZV0scz1hfHxpLnJlbGF0aXZlWyIgIl0sdT1hPzE6MCxjPWh0KGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0scywhMCkscD1odChmdW5jdGlvbihlKXtyZXR1cm4gTS5jYWxsKHQsZSk+LTF9LHMsITApLGY9W2Z1bmN0aW9uKGUsbixyKXtyZXR1cm4hYSYmKHJ8fG4hPT1sKXx8KCh0PW4pLm5vZGVUeXBlP2MoZSxuLHIpOnAoZSxuLHIpKX1dO2Zvcig7bz51O3UrKylpZihuPWkucmVsYXRpdmVbZVt1XS50eXBlXSlmPVtodChndChmKSxuKV07ZWxzZXtpZihuPWkuZmlsdGVyW2VbdV0udHlwZV0uYXBwbHkobnVsbCxlW3VdLm1hdGNoZXMpLG5beF0pe2ZvcihyPSsrdTtvPnI7cisrKWlmKGkucmVsYXRpdmVbZVtyXS50eXBlXSlicmVhaztyZXR1cm4geXQodT4xJiZndChmKSx1PjEmJmR0KGUuc2xpY2UoMCx1LTEpKS5yZXBsYWNlKFcsIiQxIiksbixyPnUmJnZ0KGUuc2xpY2UodSxyKSksbz5yJiZ2dChlPWUuc2xpY2UocikpLG8+ciYmZHQoZSkpfWYucHVzaChuKX1yZXR1cm4gZ3QoZil9ZnVuY3Rpb24gYnQoZSx0KXt2YXIgbj0wLG89dC5sZW5ndGg+MCxhPWUubGVuZ3RoPjAscz1mdW5jdGlvbihzLHUsYyxmLGQpe3ZhciBoLGcsbSx5PVtdLHY9MCxiPSIwIix4PXMmJltdLHc9bnVsbCE9ZCxUPWwsQz1zfHxhJiZpLmZpbmQuVEFHKCIqIixkJiZ1LnBhcmVudE5vZGV8fHUpLGs9Tis9bnVsbD09VD8xOk1hdGgucmFuZG9tKCl8fC4xO2Zvcih3JiYobD11IT09cCYmdSxyPW4pO251bGwhPShoPUNbYl0pO2IrKyl7aWYoYSYmaCl7Zz0wO3doaWxlKG09ZVtnKytdKWlmKG0oaCx1LGMpKXtmLnB1c2goaCk7YnJlYWt9dyYmKE49ayxyPSsrbil9byYmKChoPSFtJiZoKSYmdi0tLHMmJngucHVzaChoKSl9aWYodis9YixvJiZiIT09dil7Zz0wO3doaWxlKG09dFtnKytdKW0oeCx5LHUsYyk7aWYocyl7aWYodj4wKXdoaWxlKGItLSl4W2JdfHx5W2JdfHwoeVtiXT1MLmNhbGwoZikpO3k9bXQoeSl9SC5hcHBseShmLHkpLHcmJiFzJiZ5Lmxlbmd0aD4wJiZ2K3QubGVuZ3RoPjEmJnN0LnVuaXF1ZVNvcnQoZil9cmV0dXJuIHcmJihOPWssbD1UKSx4fTtyZXR1cm4gbz9vdChzKTpzfXM9c3QuY29tcGlsZT1mdW5jdGlvbihlLHQpe3ZhciBuLHI9W10saT1bXSxvPVNbZSsiICJdO2lmKCFvKXt0fHwodD1mdChlKSksbj10Lmxlbmd0aDt3aGlsZShuLS0pbz12dCh0W25dKSxvW3hdP3IucHVzaChvKTppLnB1c2gobyk7bz1TKGUsYnQoaSxyKSl9cmV0dXJuIG99O2Z1bmN0aW9uIHh0KGUsdCxuKXt2YXIgcj0wLGk9dC5sZW5ndGg7Zm9yKDtpPnI7cisrKXN0KGUsdFtyXSxuKTtyZXR1cm4gbn1mdW5jdGlvbiB3dChlLHQsbixyKXt2YXIgbyxhLHUsbCxjLHA9ZnQoZSk7aWYoIXImJjE9PT1wLmxlbmd0aCl7aWYoYT1wWzBdPXBbMF0uc2xpY2UoMCksYS5sZW5ndGg+MiYmIklEIj09PSh1PWFbMF0pLnR5cGUmJjk9PT10Lm5vZGVUeXBlJiYhZCYmaS5yZWxhdGl2ZVthWzFdLnR5cGVdKXtpZih0PWkuZmluZC5JRCh1Lm1hdGNoZXNbMF0ucmVwbGFjZShldCx0dCksdClbMF0sIXQpcmV0dXJuIG47ZT1lLnNsaWNlKGEuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfW89VS5uZWVkc0NvbnRleHQudGVzdChlKT8wOmEubGVuZ3RoO3doaWxlKG8tLSl7aWYodT1hW29dLGkucmVsYXRpdmVbbD11LnR5cGVdKWJyZWFrO2lmKChjPWkuZmluZFtsXSkmJihyPWModS5tYXRjaGVzWzBdLnJlcGxhY2UoZXQsdHQpLFYudGVzdChhWzBdLnR5cGUpJiZ0LnBhcmVudE5vZGV8fHQpKSl7aWYoYS5zcGxpY2UobywxKSxlPXIubGVuZ3RoJiZkdChhKSwhZSlyZXR1cm4gSC5hcHBseShuLHEuY2FsbChyLDApKSxuO2JyZWFrfX19cmV0dXJuIHMoZSxwKShyLHQsZCxuLFYudGVzdChlKSksbn1pLnBzZXVkb3MubnRoPWkucHNldWRvcy5lcTtmdW5jdGlvbiBUdCgpe31pLmZpbHRlcnM9VHQucHJvdG90eXBlPWkucHNldWRvcyxpLnNldEZpbHRlcnM9bmV3IFR0LGMoKSxzdC5hdHRyPWIuYXR0cixiLmZpbmQ9c3QsYi5leHByPXN0LnNlbGVjdG9ycyxiLmV4cHJbIjoiXT1iLmV4cHIucHNldWRvcyxiLnVuaXF1ZT1zdC51bmlxdWVTb3J0LGIudGV4dD1zdC5nZXRUZXh0LGIuaXNYTUxEb2M9c3QuaXNYTUwsYi5jb250YWlucz1zdC5jb250YWluc30oZSk7dmFyIGF0PS9VbnRpbCQvLHN0PS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLHV0PS9eLlteOiNcW1wuLF0qJC8sbHQ9Yi5leHByLm1hdGNoLm5lZWRzQ29udGV4dCxjdD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtiLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaT10aGlzLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIHI9dGhpcyx0aGlzLnB1c2hTdGFjayhiKGUpLmZpbHRlcihmdW5jdGlvbigpe2Zvcih0PTA7aT50O3QrKylpZihiLmNvbnRhaW5zKHJbdF0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKG49W10sdD0wO2k+dDt0KyspYi5maW5kKGUsdGhpc1t0XSxuKTtyZXR1cm4gbj10aGlzLnB1c2hTdGFjayhpPjE/Yi51bmlxdWUobik6biksbi5zZWxlY3Rvcj0odGhpcy5zZWxlY3Rvcj90aGlzLnNlbGVjdG9yKyIgIjoiIikrZSxufSxoYXM6ZnVuY3Rpb24oZSl7dmFyIHQsbj1iKGUsdGhpcykscj1uLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3I+dDt0KyspaWYoYi5jb250YWlucyh0aGlzLG5bdF0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZnQodGhpcyxlLCExKSl9LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZnQodGhpcyxlLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhZSYmKCJzdHJpbmciPT10eXBlb2YgZT9sdC50ZXN0KGUpP2IoZSx0aGlzLmNvbnRleHQpLmluZGV4KHRoaXNbMF0pPj0wOmIuZmlsdGVyKGUsdGhpcykubGVuZ3RoPjA6dGhpcy5maWx0ZXIoZSkubGVuZ3RoPjApfSxjbG9zZXN0OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wLGk9dGhpcy5sZW5ndGgsbz1bXSxhPWx0LnRlc3QoZSl8fCJzdHJpbmciIT10eXBlb2YgZT9iKGUsdHx8dGhpcy5jb250ZXh0KTowO2Zvcig7aT5yO3IrKyl7bj10aGlzW3JdO3doaWxlKG4mJm4ub3duZXJEb2N1bWVudCYmbiE9PXQmJjExIT09bi5ub2RlVHlwZSl7aWYoYT9hLmluZGV4KG4pPi0xOmIuZmluZC5tYXRjaGVzU2VsZWN0b3IobixlKSl7by5wdXNoKG4pO2JyZWFrfW49bi5wYXJlbnROb2RlfX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soby5sZW5ndGg+MT9iLnVuaXF1ZShvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP2IuaW5BcnJheSh0aGlzWzBdLGIoZSkpOmIuaW5BcnJheShlLmpxdWVyeT9lWzBdOmUsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj0ic3RyaW5nIj09dHlwZW9mIGU/YihlLHQpOmIubWFrZUFycmF5KGUmJmUubm9kZVR5cGU/W2VdOmUpLHI9Yi5tZXJnZSh0aGlzLmdldCgpLG4pO3JldHVybiB0aGlzLnB1c2hTdGFjayhiLnVuaXF1ZShyKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLGIuZm4uYW5kU2VsZj1iLmZuLmFkZEJhY2s7ZnVuY3Rpb24gcHQoZSx0KXtkbyBlPWVbdF07d2hpbGUoZSYmMSE9PWUubm9kZVR5cGUpO3JldHVybiBlfWIuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gYi5kaXIoZSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBiLmRpcihlLCJwYXJlbnROb2RlIixuKX0sbmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gcHQoZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gcHQoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIGIuZGlyKGUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIGIuZGlyKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBiLmRpcihlLCJuZXh0U2libGluZyIsbil9LHByZXZVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGIuZGlyKGUsInByZXZpb3VzU2libGluZyIsbil9LHNpYmxpbmdzOmZ1bmN0aW9uKGUpe3JldHVybiBiLnNpYmxpbmcoKGUucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsZSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGUpe3JldHVybiBiLnNpYmxpbmcoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGIubm9kZU5hbWUoZSwiaWZyYW1lIik/ZS5jb250ZW50RG9jdW1lbnR8fGUuY29udGVudFdpbmRvdy5kb2N1bWVudDpiLm1lcmdlKFtdLGUuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihlLHQpe2IuZm5bZV09ZnVuY3Rpb24obixyKXt2YXIgaT1iLm1hcCh0aGlzLHQsbik7cmV0dXJuIGF0LnRlc3QoZSl8fChyPW4pLHImJiJzdHJpbmciPT10eXBlb2YgciYmKGk9Yi5maWx0ZXIocixpKSksaT10aGlzLmxlbmd0aD4xJiYhY3RbZV0/Yi51bmlxdWUoaSk6aSx0aGlzLmxlbmd0aD4xJiZzdC50ZXN0KGUpJiYoaT1pLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2soaSl9fSksYi5leHRlbmQoe2ZpbHRlcjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4mJihlPSI6bm90KCIrZSsiKSIpLDE9PT10Lmxlbmd0aD9iLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHRbMF0sZSk/W3RbMF1dOltdOmIuZmluZC5tYXRjaGVzKGUsdCl9LGRpcjpmdW5jdGlvbihlLG4scil7dmFyIGk9W10sbz1lW25dO3doaWxlKG8mJjkhPT1vLm5vZGVUeXBlJiYocj09PXR8fDEhPT1vLm5vZGVUeXBlfHwhYihvKS5pcyhyKSkpMT09PW8ubm9kZVR5cGUmJmkucHVzaChvKSxvPW9bbl07cmV0dXJuIGl9LHNpYmxpbmc6ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXTtmb3IoO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBlJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufX0pO2Z1bmN0aW9uIGZ0KGUsdCxuKXtpZih0PXR8fDAsYi5pc0Z1bmN0aW9uKHQpKXJldHVybiBiLmdyZXAoZSxmdW5jdGlvbihlLHIpe3ZhciBpPSEhdC5jYWxsKGUscixlKTtyZXR1cm4gaT09PW59KTtpZih0Lm5vZGVUeXBlKXJldHVybiBiLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PXQ9PT1ufSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgcj1iLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV9KTtpZih1dC50ZXN0KHQpKXJldHVybiBiLmZpbHRlcih0LHIsIW4pO3Q9Yi5maWx0ZXIodCxyKX1yZXR1cm4gYi5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGIuaW5BcnJheShlLHQpPj0wPT09bn0pfWZ1bmN0aW9uIGR0KGUpe3ZhciB0PWh0LnNwbGl0KCJ8Iiksbj1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihuLmNyZWF0ZUVsZW1lbnQpd2hpbGUodC5sZW5ndGgpbi5jcmVhdGVFbGVtZW50KHQucG9wKCkpO3JldHVybiBufXZhciBodD0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZ3Q9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxtdD1SZWdFeHAoIjwoPzoiK2h0KyIpW1xccy8+XSIsImkiKSx5dD0vXlxzKy8sdnQ9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9naSxidD0vPChbXHc6XSspLyx4dD0vPHRib2R5L2ksd3Q9Lzx8JiM/XHcrOy8sVHQ9LzwoPzpzY3JpcHR8c3R5bGV8bGluaykvaSxOdD0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxDdD0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxrdD0vXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksRXQ9L150cnVlXC8oLiopLyxTdD0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2csQXQ9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxwYXJhbTpbMSwiPG9iamVjdD4iLCI8L29iamVjdD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OmIuc3VwcG9ydC5odG1sU2VyaWFsaXplP1swLCIiLCIiXTpbMSwiWDxkaXY+IiwiPC9kaXY+Il19LGp0PWR0KG8pLER0PWp0LmFwcGVuZENoaWxkKG8uY3JlYXRlRWxlbWVudCgiZGl2IikpO0F0Lm9wdGdyb3VwPUF0Lm9wdGlvbixBdC50Ym9keT1BdC50Zm9vdD1BdC5jb2xncm91cD1BdC5jYXB0aW9uPUF0LnRoZWFkLEF0LnRoPUF0LnRkLGIuZm4uZXh0ZW5kKHt0ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBiLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dD9iLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxvKS5jcmVhdGVUZXh0Tm9kZShlKSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0sd3JhcEFsbDpmdW5jdGlvbihlKXtpZihiLmlzRnVuY3Rpb24oZSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbih0KXtiKHRoaXMpLndyYXBBbGwoZS5jYWxsKHRoaXMsdCkpfSk7aWYodGhpc1swXSl7dmFyIHQ9YihlLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmdC5pbnNlcnRCZWZvcmUodGhpc1swXSksdC5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3doaWxlKGUuZmlyc3RDaGlsZCYmMT09PWUuZmlyc3RDaGlsZC5ub2RlVHlwZSllPWUuZmlyc3RDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGUpe3JldHVybiBiLmlzRnVuY3Rpb24oZSk/dGhpcy5lYWNoKGZ1bmN0aW9uKHQpe2IodGhpcykud3JhcElubmVyKGUuY2FsbCh0aGlzLHQpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PWIodGhpcyksbj10LmNvbnRlbnRzKCk7bi5sZW5ndGg/bi53cmFwQWxsKGUpOnQuYXBwZW5kKGUpfSl9LHdyYXA6ZnVuY3Rpb24oZSl7dmFyIHQ9Yi5pc0Z1bmN0aW9uKGUpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24obil7Yih0aGlzKS53cmFwQWxsKHQ/ZS5jYWxsKHRoaXMsbik6ZSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Iubm9kZU5hbWUodGhpcywiYm9keSIpfHxiKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGUpeygxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSkmJnRoaXMuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihlKXsoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpJiZ0aGlzLmluc2VydEJlZm9yZShlLHRoaXMuZmlyc3RDaGlsZCl9KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMubmV4dFNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MDtmb3IoO251bGwhPShuPXRoaXNbcl0pO3IrKykoIWV8fGIuZmlsdGVyKGUsW25dKS5sZW5ndGg+MCkmJih0fHwxIT09bi5ub2RlVHlwZXx8Yi5jbGVhbkRhdGEoT3QobikpLG4ucGFyZW50Tm9kZSYmKHQmJmIuY29udGFpbnMobi5vd25lckRvY3VtZW50LG4pJiZNdChPdChuLCJzY3JpcHQiKSksbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pKSk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7dmFyIGUsdD0wO2Zvcig7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKXsxPT09ZS5ub2RlVHlwZSYmYi5jbGVhbkRhdGEoT3QoZSwhMSkpO3doaWxlKGUuZmlyc3RDaGlsZCllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7ZS5vcHRpb25zJiZiLm5vZGVOYW1lKGUsInNlbGVjdCIpJiYoZS5vcHRpb25zLmxlbmd0aD0wKX1yZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1udWxsPT1lPyExOmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBiLmNsb25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiBiLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGUpe3ZhciBuPXRoaXNbMF18fHt9LHI9MCxpPXRoaXMubGVuZ3RoO2lmKGU9PT10KXJldHVybiAxPT09bi5ub2RlVHlwZT9uLmlubmVySFRNTC5yZXBsYWNlKGd0LCIiKTp0O2lmKCEoInN0cmluZyIhPXR5cGVvZiBlfHxUdC50ZXN0KGUpfHwhYi5zdXBwb3J0Lmh0bWxTZXJpYWxpemUmJm10LnRlc3QoZSl8fCFiLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJnl0LnRlc3QoZSl8fEF0WyhidC5leGVjKGUpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2U9ZS5yZXBsYWNlKHZ0LCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtpPnI7cisrKW49dGhpc1tyXXx8e30sMT09PW4ubm9kZVR5cGUmJihiLmNsZWFuRGF0YShPdChuLCExKSksbi5pbm5lckhUTUw9ZSk7bj0wfWNhdGNoKG8pe319biYmdGhpcy5lbXB0eSgpLmFwcGVuZChlKX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihlKXt2YXIgdD1iLmlzRnVuY3Rpb24oZSk7cmV0dXJuIHR8fCJzdHJpbmciPT10eXBlb2YgZXx8KGU9YihlKS5ub3QodGhpcykuZGV0YWNoKCkpLHRoaXMuZG9tTWFuaXAoW2VdLCEwLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubmV4dFNpYmxpbmcsbj10aGlzLnBhcmVudE5vZGU7biYmKGIodGhpcykucmVtb3ZlKCksbi5pbnNlcnRCZWZvcmUoZSx0KSl9KX0sZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlbW92ZShlLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oZSxuLHIpe2U9Zi5hcHBseShbXSxlKTt2YXIgaSxvLGEscyx1LGwsYz0wLHA9dGhpcy5sZW5ndGgsZD10aGlzLGg9cC0xLGc9ZVswXSxtPWIuaXNGdW5jdGlvbihnKTtpZihtfHwhKDE+PXB8fCJzdHJpbmciIT10eXBlb2YgZ3x8Yi5zdXBwb3J0LmNoZWNrQ2xvbmUpJiZDdC50ZXN0KGcpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSl7dmFyIG89ZC5lcShpKTttJiYoZVswXT1nLmNhbGwodGhpcyxpLG4/by5odG1sKCk6dCkpLG8uZG9tTWFuaXAoZSxuLHIpfSk7aWYocCYmKGw9Yi5idWlsZEZyYWdtZW50KGUsdGhpc1swXS5vd25lckRvY3VtZW50LCExLHRoaXMpLGk9bC5maXJzdENoaWxkLDE9PT1sLmNoaWxkTm9kZXMubGVuZ3RoJiYobD1pKSxpKSl7Zm9yKG49biYmYi5ub2RlTmFtZShpLCJ0ciIpLHM9Yi5tYXAoT3QobCwic2NyaXB0IiksSHQpLGE9cy5sZW5ndGg7cD5jO2MrKylvPWwsYyE9PWgmJihvPWIuY2xvbmUobywhMCwhMCksYSYmYi5tZXJnZShzLE90KG8sInNjcmlwdCIpKSksci5jYWxsKG4mJmIubm9kZU5hbWUodGhpc1tjXSwidGFibGUiKT9MdCh0aGlzW2NdLCJ0Ym9keSIpOnRoaXNbY10sbyxjKTtpZihhKWZvcih1PXNbcy5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxiLm1hcChzLHF0KSxjPTA7YT5jO2MrKylvPXNbY10sa3QudGVzdChvLnR5cGV8fCIiKSYmIWIuX2RhdGEobywiZ2xvYmFsRXZhbCIpJiZiLmNvbnRhaW5zKHUsbykmJihvLnNyYz9iLmFqYXgoe3VybDpvLnNyYyx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pOmIuZ2xvYmFsRXZhbCgoby50ZXh0fHxvLnRleHRDb250ZW50fHxvLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoU3QsIiIpKSk7bD1pPW51bGx9cmV0dXJuIHRoaXN9fSk7ZnVuY3Rpb24gTHQoZSx0KXtyZXR1cm4gZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KVswXXx8ZS5hcHBlbmRDaGlsZChlLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KSl9ZnVuY3Rpb24gSHQoZSl7dmFyIHQ9ZS5nZXRBdHRyaWJ1dGVOb2RlKCJ0eXBlIik7cmV0dXJuIGUudHlwZT0odCYmdC5zcGVjaWZpZWQpKyIvIitlLnR5cGUsZX1mdW5jdGlvbiBxdChlKXt2YXIgdD1FdC5leGVjKGUudHlwZSk7cmV0dXJuIHQ/ZS50eXBlPXRbMV06ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIE10KGUsdCl7dmFyIG4scj0wO2Zvcig7bnVsbCE9KG49ZVtyXSk7cisrKWIuX2RhdGEobiwiZ2xvYmFsRXZhbCIsIXR8fGIuX2RhdGEodFtyXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBfdChlLHQpe2lmKDE9PT10Lm5vZGVUeXBlJiZiLmhhc0RhdGEoZSkpe3ZhciBuLHIsaSxvPWIuX2RhdGEoZSksYT1iLl9kYXRhKHQsbykscz1vLmV2ZW50cztpZihzKXtkZWxldGUgYS5oYW5kbGUsYS5ldmVudHM9e307Zm9yKG4gaW4gcylmb3Iocj0wLGk9c1tuXS5sZW5ndGg7aT5yO3IrKyliLmV2ZW50LmFkZCh0LG4sc1tuXVtyXSl9YS5kYXRhJiYoYS5kYXRhPWIuZXh0ZW5kKHt9LGEuZGF0YSkpfX1mdW5jdGlvbiBGdChlLHQpe3ZhciBuLHIsaTtpZigxPT09dC5ub2RlVHlwZSl7aWYobj10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWIuc3VwcG9ydC5ub0Nsb25lRXZlbnQmJnRbYi5leHBhbmRvXSl7aT1iLl9kYXRhKHQpO2ZvcihyIGluIGkuZXZlbnRzKWIucmVtb3ZlRXZlbnQodCxyLGkuaGFuZGxlKTt0LnJlbW92ZUF0dHJpYnV0ZShiLmV4cGFuZG8pfSJzY3JpcHQiPT09biYmdC50ZXh0IT09ZS50ZXh0PyhIdCh0KS50ZXh0PWUudGV4dCxxdCh0KSk6Im9iamVjdCI9PT1uPyh0LnBhcmVudE5vZGUmJih0Lm91dGVySFRNTD1lLm91dGVySFRNTCksYi5zdXBwb3J0Lmh0bWw1Q2xvbmUmJmUuaW5uZXJIVE1MJiYhYi50cmltKHQuaW5uZXJIVE1MKSYmKHQuaW5uZXJIVE1MPWUuaW5uZXJIVE1MKSk6ImlucHV0Ij09PW4mJk50LnRlc3QoZS50eXBlKT8odC5kZWZhdWx0Q2hlY2tlZD10LmNoZWNrZWQ9ZS5jaGVja2VkLHQudmFsdWUhPT1lLnZhbHVlJiYodC52YWx1ZT1lLnZhbHVlKSk6Im9wdGlvbiI9PT1uP3QuZGVmYXVsdFNlbGVjdGVkPXQuc2VsZWN0ZWQ9ZS5kZWZhdWx0U2VsZWN0ZWQ6KCJpbnB1dCI9PT1ufHwidGV4dGFyZWEiPT09bikmJih0LmRlZmF1bHRWYWx1ZT1lLmRlZmF1bHRWYWx1ZSl9fWIuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGUsdCl7Yi5mbltlXT1mdW5jdGlvbihlKXt2YXIgbixyPTAsaT1bXSxvPWIoZSksYT1vLmxlbmd0aC0xO2Zvcig7YT49cjtyKyspbj1yPT09YT90aGlzOnRoaXMuY2xvbmUoITApLGIob1tyXSlbdF0obiksZC5hcHBseShpLG4uZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhpKX19KTtmdW5jdGlvbiBPdChlLG4pe3ZhciByLG8sYT0wLHM9dHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPT1pP2UuZ2V0RWxlbWVudHNCeVRhZ05hbWUobnx8IioiKTp0eXBlb2YgZS5xdWVyeVNlbGVjdG9yQWxsIT09aT9lLnF1ZXJ5U2VsZWN0b3JBbGwobnx8IioiKTp0O2lmKCFzKWZvcihzPVtdLHI9ZS5jaGlsZE5vZGVzfHxlO251bGwhPShvPXJbYV0pO2ErKykhbnx8Yi5ub2RlTmFtZShvLG4pP3MucHVzaChvKTpiLm1lcmdlKHMsT3QobyxuKSk7cmV0dXJuIG49PT10fHxuJiZiLm5vZGVOYW1lKGUsbik/Yi5tZXJnZShbZV0scyk6c31mdW5jdGlvbiBCdChlKXtOdC50ZXN0KGUudHlwZSkmJihlLmRlZmF1bHRDaGVja2VkPWUuY2hlY2tlZCl9Yi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHU9Yi5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsZSk7aWYoYi5zdXBwb3J0Lmh0bWw1Q2xvbmV8fGIuaXNYTUxEb2MoZSl8fCFtdC50ZXN0KCI8IitlLm5vZGVOYW1lKyI+Iik/bz1lLmNsb25lTm9kZSghMCk6KER0LmlubmVySFRNTD1lLm91dGVySFRNTCxEdC5yZW1vdmVDaGlsZChvPUR0LmZpcnN0Q2hpbGQpKSwhKGIuc3VwcG9ydC5ub0Nsb25lRXZlbnQmJmIuc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Yi5pc1hNTERvYyhlKSkpZm9yKHI9T3Qobykscz1PdChlKSxhPTA7bnVsbCE9KGk9c1thXSk7KythKXJbYV0mJkZ0KGksclthXSk7aWYodClpZihuKWZvcihzPXN8fE90KGUpLHI9cnx8T3QobyksYT0wO251bGwhPShpPXNbYV0pO2ErKylfdChpLHJbYV0pO2Vsc2UgX3QoZSxvKTtyZXR1cm4gcj1PdChvLCJzY3JpcHQiKSxyLmxlbmd0aD4wJiZNdChyLCF1JiZPdChlLCJzY3JpcHQiKSkscj1zPWk9bnVsbCxvfSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbCxjLHA9ZS5sZW5ndGgsZj1kdCh0KSxkPVtdLGg9MDtmb3IoO3A+aDtoKyspaWYobz1lW2hdLG98fDA9PT1vKWlmKCJvYmplY3QiPT09Yi50eXBlKG8pKWIubWVyZ2UoZCxvLm5vZGVUeXBlP1tvXTpvKTtlbHNlIGlmKHd0LnRlc3Qobykpe3M9c3x8Zi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSx1PShidC5leGVjKG8pfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGM9QXRbdV18fEF0Ll9kZWZhdWx0LHMuaW5uZXJIVE1MPWNbMV0rby5yZXBsYWNlKHZ0LCI8JDE+PC8kMj4iKStjWzJdLGk9Y1swXTt3aGlsZShpLS0pcz1zLmxhc3RDaGlsZDtpZighYi5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlJiZ5dC50ZXN0KG8pJiZkLnB1c2godC5jcmVhdGVUZXh0Tm9kZSh5dC5leGVjKG8pWzBdKSksIWIuc3VwcG9ydC50Ym9keSl7bz0idGFibGUiIT09dXx8eHQudGVzdChvKT8iPHRhYmxlPiIhPT1jWzFdfHx4dC50ZXN0KG8pPzA6czpzLmZpcnN0Q2hpbGQsaT1vJiZvLmNoaWxkTm9kZXMubGVuZ3RoO3doaWxlKGktLSliLm5vZGVOYW1lKGw9by5jaGlsZE5vZGVzW2ldLCJ0Ym9keSIpJiYhbC5jaGlsZE5vZGVzLmxlbmd0aCYmby5yZW1vdmVDaGlsZChsKQotfWIubWVyZ2UoZCxzLmNoaWxkTm9kZXMpLHMudGV4dENvbnRlbnQ9IiI7d2hpbGUocy5maXJzdENoaWxkKXMucmVtb3ZlQ2hpbGQocy5maXJzdENoaWxkKTtzPWYubGFzdENoaWxkfWVsc2UgZC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpO3MmJmYucmVtb3ZlQ2hpbGQocyksYi5zdXBwb3J0LmFwcGVuZENoZWNrZWR8fGIuZ3JlcChPdChkLCJpbnB1dCIpLEJ0KSxoPTA7d2hpbGUobz1kW2grK10paWYoKCFyfHwtMT09PWIuaW5BcnJheShvLHIpKSYmKGE9Yi5jb250YWlucyhvLm93bmVyRG9jdW1lbnQsbykscz1PdChmLmFwcGVuZENoaWxkKG8pLCJzY3JpcHQiKSxhJiZNdChzKSxuKSl7aT0wO3doaWxlKG89c1tpKytdKWt0LnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gcz1udWxsLGZ9LGNsZWFuRGF0YTpmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxhLHM9MCx1PWIuZXhwYW5kbyxsPWIuY2FjaGUscD1iLnN1cHBvcnQuZGVsZXRlRXhwYW5kbyxmPWIuZXZlbnQuc3BlY2lhbDtmb3IoO251bGwhPShuPWVbc10pO3MrKylpZigodHx8Yi5hY2NlcHREYXRhKG4pKSYmKG89blt1XSxhPW8mJmxbb10pKXtpZihhLmV2ZW50cylmb3IociBpbiBhLmV2ZW50cylmW3JdP2IuZXZlbnQucmVtb3ZlKG4scik6Yi5yZW1vdmVFdmVudChuLHIsYS5oYW5kbGUpO2xbb10mJihkZWxldGUgbFtvXSxwP2RlbGV0ZSBuW3VdOnR5cGVvZiBuLnJlbW92ZUF0dHJpYnV0ZSE9PWk/bi5yZW1vdmVBdHRyaWJ1dGUodSk6blt1XT1udWxsLGMucHVzaChvKSl9fX0pO3ZhciBQdCxSdCxXdCwkdD0vYWxwaGFcKFteKV0qXCkvaSxJdD0vb3BhY2l0eVxzKj1ccyooW14pXSopLyx6dD0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC8sWHQ9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFV0PS9ebWFyZ2luLyxWdD1SZWdFeHAoIl4oIit4KyIpKC4qKSQiLCJpIiksWXQ9UmVnRXhwKCJeKCIreCsiKSg/IXB4KVthLXolXSskIiwiaSIpLEp0PVJlZ0V4cCgiXihbKy1dKT0oIit4KyIpIiwiaSIpLEd0PXtCT0RZOiJibG9jayJ9LFF0PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxLdD17bGV0dGVyU3BhY2luZzowLGZvbnRXZWlnaHQ6NDAwfSxadD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLGVuPVsiV2Via2l0IiwiTyIsIk1veiIsIm1zIl07ZnVuY3Rpb24gdG4oZSx0KXtpZih0IGluIGUpcmV0dXJuIHQ7dmFyIG49dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpLHI9dCxpPWVuLmxlbmd0aDt3aGlsZShpLS0paWYodD1lbltpXStuLHQgaW4gZSlyZXR1cm4gdDtyZXR1cm4gcn1mdW5jdGlvbiBubihlLHQpe3JldHVybiBlPXR8fGUsIm5vbmUiPT09Yi5jc3MoZSwiZGlzcGxheSIpfHwhYi5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsZSl9ZnVuY3Rpb24gcm4oZSx0KXt2YXIgbixyLGksbz1bXSxhPTAscz1lLmxlbmd0aDtmb3IoO3M+YTthKyspcj1lW2FdLHIuc3R5bGUmJihvW2FdPWIuX2RhdGEociwib2xkZGlzcGxheSIpLG49ci5zdHlsZS5kaXNwbGF5LHQ/KG9bYV18fCJub25lIiE9PW58fChyLnN0eWxlLmRpc3BsYXk9IiIpLCIiPT09ci5zdHlsZS5kaXNwbGF5JiZubihyKSYmKG9bYV09Yi5fZGF0YShyLCJvbGRkaXNwbGF5Iix1bihyLm5vZGVOYW1lKSkpKTpvW2FdfHwoaT1ubihyKSwobiYmIm5vbmUiIT09bnx8IWkpJiZiLl9kYXRhKHIsIm9sZGRpc3BsYXkiLGk/bjpiLmNzcyhyLCJkaXNwbGF5IikpKSk7Zm9yKGE9MDtzPmE7YSsrKXI9ZVthXSxyLnN0eWxlJiYodCYmIm5vbmUiIT09ci5zdHlsZS5kaXNwbGF5JiYiIiE9PXIuc3R5bGUuZGlzcGxheXx8KHIuc3R5bGUuZGlzcGxheT10P29bYV18fCIiOiJub25lIikpO3JldHVybiBlfWIuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gYi5hY2Nlc3ModGhpcyxmdW5jdGlvbihlLG4scil7dmFyIGksbyxhPXt9LHM9MDtpZihiLmlzQXJyYXkobikpe2ZvcihvPVJ0KGUpLGk9bi5sZW5ndGg7aT5zO3MrKylhW25bc11dPWIuY3NzKGUsbltzXSwhMSxvKTtyZXR1cm4gYX1yZXR1cm4gciE9PXQ/Yi5zdHlsZShlLG4scik6Yi5jc3MoZSxuKX0sZSxuLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gcm4odGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gcm4odGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihlKXt2YXIgdD0iYm9vbGVhbiI9PXR5cGVvZiBlO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsodD9lOm5uKHRoaXMpKT9iKHRoaXMpLnNob3coKTpiKHRoaXMpLmhpZGUoKX0pfX0pLGIuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49V3QoZSwib3BhY2l0eSIpO3JldHVybiIiPT09bj8iMSI6bn19fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6Yi5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihlLG4scixpKXtpZihlJiYzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJmUuc3R5bGUpe3ZhciBvLGEscyx1PWIuY2FtZWxDYXNlKG4pLGw9ZS5zdHlsZTtpZihuPWIuY3NzUHJvcHNbdV18fChiLmNzc1Byb3BzW3VdPXRuKGwsdSkpLHM9Yi5jc3NIb29rc1tuXXx8Yi5jc3NIb29rc1t1XSxyPT09dClyZXR1cm4gcyYmImdldCJpbiBzJiYobz1zLmdldChlLCExLGkpKSE9PXQ/bzpsW25dO2lmKGE9dHlwZW9mIHIsInN0cmluZyI9PT1hJiYobz1KdC5leGVjKHIpKSYmKHI9KG9bMV0rMSkqb1syXStwYXJzZUZsb2F0KGIuY3NzKGUsbikpLGE9Im51bWJlciIpLCEobnVsbD09cnx8Im51bWJlciI9PT1hJiZpc05hTihyKXx8KCJudW1iZXIiIT09YXx8Yi5jc3NOdW1iZXJbdV18fChyKz0icHgiKSxiLnN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlfHwiIiE9PXJ8fDAhPT1uLmluZGV4T2YoImJhY2tncm91bmQiKXx8KGxbbl09ImluaGVyaXQiKSxzJiYic2V0ImluIHMmJihyPXMuc2V0KGUscixpKSk9PT10KSkpdHJ5e2xbbl09cn1jYXRjaChjKXt9fX0sY3NzOmZ1bmN0aW9uKGUsbixyLGkpe3ZhciBvLGEscyx1PWIuY2FtZWxDYXNlKG4pO3JldHVybiBuPWIuY3NzUHJvcHNbdV18fChiLmNzc1Byb3BzW3VdPXRuKGUuc3R5bGUsdSkpLHM9Yi5jc3NIb29rc1tuXXx8Yi5jc3NIb29rc1t1XSxzJiYiZ2V0ImluIHMmJihhPXMuZ2V0KGUsITAscikpLGE9PT10JiYoYT1XdChlLG4saSkpLCJub3JtYWwiPT09YSYmbiBpbiBLdCYmKGE9S3Rbbl0pLCIiPT09cnx8cj8obz1wYXJzZUZsb2F0KGEpLHI9PT0hMHx8Yi5pc051bWVyaWMobyk/b3x8MDphKTphfSxzd2FwOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYT17fTtmb3IobyBpbiB0KWFbb109ZS5zdHlsZVtvXSxlLnN0eWxlW29dPXRbb107aT1uLmFwcGx5KGUscnx8W10pO2ZvcihvIGluIHQpZS5zdHlsZVtvXT1hW29dO3JldHVybiBpfX0pLGUuZ2V0Q29tcHV0ZWRTdHlsZT8oUnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGUuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpfSxXdD1mdW5jdGlvbihlLG4scil7dmFyIGksbyxhLHM9cnx8UnQoZSksdT1zP3MuZ2V0UHJvcGVydHlWYWx1ZShuKXx8c1tuXTp0LGw9ZS5zdHlsZTtyZXR1cm4gcyYmKCIiIT09dXx8Yi5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsZSl8fCh1PWIuc3R5bGUoZSxuKSksWXQudGVzdCh1KSYmVXQudGVzdChuKSYmKGk9bC53aWR0aCxvPWwubWluV2lkdGgsYT1sLm1heFdpZHRoLGwubWluV2lkdGg9bC5tYXhXaWR0aD1sLndpZHRoPXUsdT1zLndpZHRoLGwud2lkdGg9aSxsLm1pbldpZHRoPW8sbC5tYXhXaWR0aD1hKSksdX0pOm8uZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKFJ0PWZ1bmN0aW9uKGUpe3JldHVybiBlLmN1cnJlbnRTdHlsZX0sV3Q9ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG8sYSxzPXJ8fFJ0KGUpLHU9cz9zW25dOnQsbD1lLnN0eWxlO3JldHVybiBudWxsPT11JiZsJiZsW25dJiYodT1sW25dKSxZdC50ZXN0KHUpJiYhenQudGVzdChuKSYmKGk9bC5sZWZ0LG89ZS5ydW50aW1lU3R5bGUsYT1vJiZvLmxlZnQsYSYmKG8ubGVmdD1lLmN1cnJlbnRTdHlsZS5sZWZ0KSxsLmxlZnQ9ImZvbnRTaXplIj09PW4/IjFlbSI6dSx1PWwucGl4ZWxMZWZ0KyJweCIsbC5sZWZ0PWksYSYmKG8ubGVmdD1hKSksIiI9PT11PyJhdXRvIjp1fSk7ZnVuY3Rpb24gb24oZSx0LG4pe3ZhciByPVZ0LmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzFdLShufHwwKSkrKHJbMl18fCJweCIpOnR9ZnVuY3Rpb24gYW4oZSx0LG4scixpKXt2YXIgbz1uPT09KHI/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0aCI9PT10PzE6MCxhPTA7Zm9yKDs0Pm87bys9MikibWFyZ2luIj09PW4mJihhKz1iLmNzcyhlLG4rWnRbb10sITAsaSkpLHI/KCJjb250ZW50Ij09PW4mJihhLT1iLmNzcyhlLCJwYWRkaW5nIitadFtvXSwhMCxpKSksIm1hcmdpbiIhPT1uJiYoYS09Yi5jc3MoZSwiYm9yZGVyIitadFtvXSsiV2lkdGgiLCEwLGkpKSk6KGErPWIuY3NzKGUsInBhZGRpbmciK1p0W29dLCEwLGkpLCJwYWRkaW5nIiE9PW4mJihhKz1iLmNzcyhlLCJib3JkZXIiK1p0W29dKyJXaWR0aCIsITAsaSkpKTtyZXR1cm4gYX1mdW5jdGlvbiBzbihlLHQsbil7dmFyIHI9ITAsaT0id2lkdGgiPT09dD9lLm9mZnNldFdpZHRoOmUub2Zmc2V0SGVpZ2h0LG89UnQoZSksYT1iLnN1cHBvcnQuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1iLmNzcyhlLCJib3hTaXppbmciLCExLG8pO2lmKDA+PWl8fG51bGw9PWkpe2lmKGk9V3QoZSx0LG8pLCgwPml8fG51bGw9PWkpJiYoaT1lLnN0eWxlW3RdKSxZdC50ZXN0KGkpKXJldHVybiBpO3I9YSYmKGIuc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZXx8aT09PWUuc3R5bGVbdF0pLGk9cGFyc2VGbG9hdChpKXx8MH1yZXR1cm4gaSthbihlLHQsbnx8KGE/ImJvcmRlciI6ImNvbnRlbnQiKSxyLG8pKyJweCJ9ZnVuY3Rpb24gdW4oZSl7dmFyIHQ9byxuPUd0W2VdO3JldHVybiBufHwobj1sbihlLHQpLCJub25lIiE9PW4mJm58fChQdD0oUHR8fGIoIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKS5jc3MoImNzc1RleHQiLCJkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQiKSkuYXBwZW5kVG8odC5kb2N1bWVudEVsZW1lbnQpLHQ9KFB0WzBdLmNvbnRlbnRXaW5kb3d8fFB0WzBdLmNvbnRlbnREb2N1bWVudCkuZG9jdW1lbnQsdC53cml0ZSgiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGJvZHk+IiksdC5jbG9zZSgpLG49bG4oZSx0KSxQdC5kZXRhY2goKSksR3RbZV09biksbn1mdW5jdGlvbiBsbihlLHQpe3ZhciBuPWIodC5jcmVhdGVFbGVtZW50KGUpKS5hcHBlbmRUbyh0LmJvZHkpLHI9Yi5jc3MoblswXSwiZGlzcGxheSIpO3JldHVybiBuLnJlbW92ZSgpLHJ9Yi5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihlLG4pe2IuY3NzSG9va3Nbbl09e2dldDpmdW5jdGlvbihlLHIsaSl7cmV0dXJuIHI/MD09PWUub2Zmc2V0V2lkdGgmJlh0LnRlc3QoYi5jc3MoZSwiZGlzcGxheSIpKT9iLnN3YXAoZSxRdCxmdW5jdGlvbigpe3JldHVybiBzbihlLG4saSl9KTpzbihlLG4saSk6dH0sc2V0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yJiZSdChlKTtyZXR1cm4gb24oZSx0LHI/YW4oZSxuLHIsYi5zdXBwb3J0LmJveFNpemluZyYmImJvcmRlci1ib3giPT09Yi5jc3MoZSwiYm94U2l6aW5nIiwhMSxpKSxpKTowKX19fSksYi5zdXBwb3J0Lm9wYWNpdHl8fChiLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihlLHQpe3JldHVybiBJdC50ZXN0KCh0JiZlLmN1cnJlbnRTdHlsZT9lLmN1cnJlbnRTdHlsZS5maWx0ZXI6ZS5zdHlsZS5maWx0ZXIpfHwiIik/LjAxKnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsiIjp0PyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zdHlsZSxyPWUuY3VycmVudFN0eWxlLGk9Yi5pc051bWVyaWModCk/ImFscGhhKG9wYWNpdHk9IisxMDAqdCsiKSI6IiIsbz1yJiZyLmZpbHRlcnx8bi5maWx0ZXJ8fCIiO24uem9vbT0xLCh0Pj0xfHwiIj09PXQpJiYiIj09PWIudHJpbShvLnJlcGxhY2UoJHQsIiIpKSYmbi5yZW1vdmVBdHRyaWJ1dGUmJihuLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksIiI9PT10fHxyJiYhci5maWx0ZXIpfHwobi5maWx0ZXI9JHQudGVzdChvKT9vLnJlcGxhY2UoJHQsaSk6bysiICIraSl9fSksYihmdW5jdGlvbigpe2Iuc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0fHwoYi5jc3NIb29rcy5tYXJnaW5SaWdodD17Z2V0OmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4/Yi5zd2FwKGUse2Rpc3BsYXk6ImlubGluZS1ibG9jayJ9LFd0LFtlLCJtYXJnaW5SaWdodCJdKTp0fX0pLCFiLnN1cHBvcnQucGl4ZWxQb3NpdGlvbiYmYi5mbi5wb3NpdGlvbiYmYi5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGUsbil7Yi5jc3NIb29rc1tuXT17Z2V0OmZ1bmN0aW9uKGUscil7cmV0dXJuIHI/KHI9V3QoZSxuKSxZdC50ZXN0KHIpP2IoZSkucG9zaXRpb24oKVtuXSsicHgiOnIpOnR9fX0pfSksYi5leHByJiZiLmV4cHIuZmlsdGVycyYmKGIuZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4gMD49ZS5vZmZzZXRXaWR0aCYmMD49ZS5vZmZzZXRIZWlnaHR8fCFiLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYibm9uZSI9PT0oZS5zdHlsZSYmZS5zdHlsZS5kaXNwbGF5fHxiLmNzcyhlLCJkaXNwbGF5IikpfSxiLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiFiLmV4cHIuZmlsdGVycy5oaWRkZW4oZSl9KSxiLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihlLHQpe2IuY3NzSG9va3NbZSt0XT17ZXhwYW5kOmZ1bmN0aW9uKG4pe3ZhciByPTAsaT17fSxvPSJzdHJpbmciPT10eXBlb2Ygbj9uLnNwbGl0KCIgIik6W25dO2Zvcig7ND5yO3IrKylpW2UrWnRbcl0rdF09b1tyXXx8b1tyLTJdfHxvWzBdO3JldHVybiBpfX0sVXQudGVzdChlKXx8KGIuY3NzSG9va3NbZSt0XS5zZXQ9b24pfSk7dmFyIGNuPS8lMjAvZyxwbj0vXFtcXSQvLGZuPS9ccj9cbi9nLGRuPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxobj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7Yi5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBiLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9Yi5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGU/Yi5tYWtlQXJyYXkoZSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBlPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhYih0aGlzKS5pcygiOmRpc2FibGVkIikmJmhuLnRlc3QodGhpcy5ub2RlTmFtZSkmJiFkbi50ZXN0KGUpJiYodGhpcy5jaGVja2VkfHwhTnQudGVzdChlKSl9KS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbj1iKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1uP251bGw6Yi5pc0FycmF5KG4pP2IubWFwKG4sZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShmbiwiXHJcbiIpfX0pOntuYW1lOnQubmFtZSx2YWx1ZTpuLnJlcGxhY2UoZm4sIlxyXG4iKX19KS5nZXQoKX19KSxiLnBhcmFtPWZ1bmN0aW9uKGUsbil7dmFyIHIsaT1bXSxvPWZ1bmN0aW9uKGUsdCl7dD1iLmlzRnVuY3Rpb24odCk/dCgpOm51bGw9PXQ/IiI6dCxpW2kubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KX07aWYobj09PXQmJihuPWIuYWpheFNldHRpbmdzJiZiLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksYi5pc0FycmF5KGUpfHxlLmpxdWVyeSYmIWIuaXNQbGFpbk9iamVjdChlKSliLmVhY2goZSxmdW5jdGlvbigpe28odGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IociBpbiBlKWduKHIsZVtyXSxuLG8pO3JldHVybiBpLmpvaW4oIiYiKS5yZXBsYWNlKGNuLCIrIil9O2Z1bmN0aW9uIGduKGUsdCxuLHIpe3ZhciBpO2lmKGIuaXNBcnJheSh0KSliLmVhY2godCxmdW5jdGlvbih0LGkpe258fHBuLnRlc3QoZSk/cihlLGkpOmduKGUrIlsiKygib2JqZWN0Ij09dHlwZW9mIGk/dDoiIikrIl0iLGksbixyKX0pO2Vsc2UgaWYobnx8Im9iamVjdCIhPT1iLnR5cGUodCkpcihlLHQpO2Vsc2UgZm9yKGkgaW4gdClnbihlKyJbIitpKyJdIix0W2ldLG4scil9Yi5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7Yi5mblt0XT1mdW5jdGlvbihlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5vbih0LG51bGwsZSxuKTp0aGlzLnRyaWdnZXIodCl9fSksYi5mbi5ob3Zlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoZSkubW91c2VsZWF2ZSh0fHxlKX07dmFyIG1uLHluLHZuPWIubm93KCksYm49L1w/Lyx4bj0vIy4qJC8sd249LyhbPyZdKV89W14mXSovLFRuPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvZ20sTm49L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sQ249L14oPzpHRVR8SEVBRCkkLyxrbj0vXlwvXC8vLEVuPS9eKFtcdy4rLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKyl8KXwpLyxTbj1iLmZuLmxvYWQsQW49e30sam49e30sRG49IiovIi5jb25jYXQoIioiKTt0cnl7eW49YS5ocmVmfWNhdGNoKExuKXt5bj1vLmNyZWF0ZUVsZW1lbnQoImEiKSx5bi5ocmVmPSIiLHluPXluLmhyZWZ9bW49RW4uZXhlYyh5bi50b0xvd2VyQ2FzZSgpKXx8W107ZnVuY3Rpb24gSG4oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7InN0cmluZyIhPXR5cGVvZiB0JiYobj10LHQ9IioiKTt2YXIgcixpPTAsbz10LnRvTG93ZXJDYXNlKCkubWF0Y2godyl8fFtdO2lmKGIuaXNGdW5jdGlvbihuKSl3aGlsZShyPW9baSsrXSkiKyI9PT1yWzBdPyhyPXIuc2xpY2UoMSl8fCIqIiwoZVtyXT1lW3JdfHxbXSkudW5zaGlmdChuKSk6KGVbcl09ZVtyXXx8W10pLnB1c2gobil9fWZ1bmN0aW9uIHFuKGUsbixyLGkpe3ZhciBvPXt9LGE9ZT09PWpuO2Z1bmN0aW9uIHModSl7dmFyIGw7cmV0dXJuIG9bdV09ITAsYi5lYWNoKGVbdV18fFtdLGZ1bmN0aW9uKGUsdSl7dmFyIGM9dShuLHIsaSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBjfHxhfHxvW2NdP2E/IShsPWMpOnQ6KG4uZGF0YVR5cGVzLnVuc2hpZnQoYykscyhjKSwhMSl9KSxsfXJldHVybiBzKG4uZGF0YVR5cGVzWzBdKXx8IW9bIioiXSYmcygiKiIpfWZ1bmN0aW9uIE1uKGUsbil7dmFyIHIsaSxvPWIuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoaSBpbiBuKW5baV0hPT10JiYoKG9baV0/ZTpyfHwocj17fSkpW2ldPW5baV0pO3JldHVybiByJiZiLmV4dGVuZCghMCxlLHIpLGV9Yi5mbi5sb2FkPWZ1bmN0aW9uKGUsbixyKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJlNuKXJldHVybiBTbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGksbyxhLHM9dGhpcyx1PWUuaW5kZXhPZigiICIpO3JldHVybiB1Pj0wJiYoaT1lLnNsaWNlKHUsZS5sZW5ndGgpLGU9ZS5zbGljZSgwLHUpKSxiLmlzRnVuY3Rpb24obik/KHI9bixuPXQpOm4mJiJvYmplY3QiPT10eXBlb2YgbiYmKGE9IlBPU1QiKSxzLmxlbmd0aD4wJiZiLmFqYXgoe3VybDplLHR5cGU6YSxkYXRhVHlwZToiaHRtbCIsZGF0YTpufSkuZG9uZShmdW5jdGlvbihlKXtvPWFyZ3VtZW50cyxzLmh0bWwoaT9iKCI8ZGl2PiIpLmFwcGVuZChiLnBhcnNlSFRNTChlKSkuZmluZChpKTplKX0pLmNvbXBsZXRlKHImJmZ1bmN0aW9uKGUsdCl7cy5lYWNoKHIsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfSksdGhpc30sYi5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oZSx0KXtiLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9uKHQsZSl9fSksYi5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGUsbil7YltuXT1mdW5jdGlvbihlLHIsaSxvKXtyZXR1cm4gYi5pc0Z1bmN0aW9uKHIpJiYobz1vfHxpLGk9cixyPXQpLGIuYWpheCh7dXJsOmUsdHlwZTpuLGRhdGFUeXBlOm8sZGF0YTpyLHN1Y2Nlc3M6aX0pfX0pLGIuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDp5bix0eXBlOiJHRVQiLGlzTG9jYWw6Tm4udGVzdChtblsxXSksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpEbix0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDoveG1sLyxodG1sOi9odG1sLyxqc29uOi9qc29uL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOmUuU3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOmIucGFyc2VKU09OLCJ0ZXh0IHhtbCI6Yi5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/TW4oTW4oZSxiLmFqYXhTZXR0aW5ncyksdCk6TW4oYi5hamF4U2V0dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6SG4oQW4pLGFqYXhUcmFuc3BvcnQ6SG4oam4pLGFqYXg6ZnVuY3Rpb24oZSxuKXsib2JqZWN0Ij09dHlwZW9mIGUmJihuPWUsZT10KSxuPW58fHt9O3ZhciByLGksbyxhLHMsdSxsLGMscD1iLmFqYXhTZXR1cCh7fSxuKSxmPXAuY29udGV4dHx8cCxkPXAuY29udGV4dCYmKGYubm9kZVR5cGV8fGYuanF1ZXJ5KT9iKGYpOmIuZXZlbnQsaD1iLkRlZmVycmVkKCksZz1iLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxtPXAuc3RhdHVzQ29kZXx8e30seT17fSx2PXt9LHg9MCxUPSJjYW5jZWxlZCIsTj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKDI9PT14KXtpZighYyl7Yz17fTt3aGlsZSh0PVRuLmV4ZWMoYSkpY1t0WzFdLnRvTG93ZXJDYXNlKCldPXRbMl19dD1jW2UudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PXQ/bnVsbDp0fSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXg/YTpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS50b0xvd2VyQ2FzZSgpO3JldHVybiB4fHwoZT12W25dPXZbbl18fGUseVtlXT10KSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiB4fHwocC5taW1lVHlwZT1lKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUpaWYoMj54KWZvcih0IGluIGUpbVt0XT1bbVt0XSxlW3RdXTtlbHNlIE4uYWx3YXlzKGVbTi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8VDtyZXR1cm4gbCYmbC5hYm9ydCh0KSxrKDAsdCksdGhpc319O2lmKGgucHJvbWlzZShOKS5jb21wbGV0ZT1nLmFkZCxOLnN1Y2Nlc3M9Ti5kb25lLE4uZXJyb3I9Ti5mYWlsLHAudXJsPSgoZXx8cC51cmx8fHluKSsiIikucmVwbGFjZSh4biwiIikucmVwbGFjZShrbixtblsxXSsiLy8iKSxwLnR5cGU9bi5tZXRob2R8fG4udHlwZXx8cC5tZXRob2R8fHAudHlwZSxwLmRhdGFUeXBlcz1iLnRyaW0ocC5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKHcpfHxbIiJdLG51bGw9PXAuY3Jvc3NEb21haW4mJihyPUVuLmV4ZWMocC51cmwudG9Mb3dlckNhc2UoKSkscC5jcm9zc0RvbWFpbj0hKCFyfHxyWzFdPT09bW5bMV0mJnJbMl09PT1tblsyXSYmKHJbM118fCgiaHR0cDoiPT09clsxXT84MDo0NDMpKT09KG1uWzNdfHwoImh0dHA6Ij09PW1uWzFdPzgwOjQ0MykpKSkscC5kYXRhJiZwLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIHAuZGF0YSYmKHAuZGF0YT1iLnBhcmFtKHAuZGF0YSxwLnRyYWRpdGlvbmFsKSkscW4oQW4scCxuLE4pLDI9PT14KXJldHVybiBOO3U9cC5nbG9iYWwsdSYmMD09PWIuYWN0aXZlKysmJmIuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IikscC50eXBlPXAudHlwZS50b1VwcGVyQ2FzZSgpLHAuaGFzQ29udGVudD0hQ24udGVzdChwLnR5cGUpLG89cC51cmwscC5oYXNDb250ZW50fHwocC5kYXRhJiYobz1wLnVybCs9KGJuLnRlc3Qobyk/IiYiOiI/IikrcC5kYXRhLGRlbGV0ZSBwLmRhdGEpLHAuY2FjaGU9PT0hMSYmKHAudXJsPXduLnRlc3Qobyk/by5yZXBsYWNlKHduLCIkMV89Iit2bisrKTpvKyhibi50ZXN0KG8pPyImIjoiPyIpKyJfPSIrdm4rKykpLHAuaWZNb2RpZmllZCYmKGIubGFzdE1vZGlmaWVkW29dJiZOLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixiLmxhc3RNb2RpZmllZFtvXSksYi5ldGFnW29dJiZOLnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLGIuZXRhZ1tvXSkpLChwLmRhdGEmJnAuaGFzQ29udGVudCYmcC5jb250ZW50VHlwZSE9PSExfHxuLmNvbnRlbnRUeXBlKSYmTi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHAuY29udGVudFR5cGUpLE4uc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixwLmRhdGFUeXBlc1swXSYmcC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXT9wLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dKygiKiIhPT1wLmRhdGFUeXBlc1swXT8iLCAiK0RuKyI7IHE9MC4wMSI6IiIpOnAuYWNjZXB0c1siKiJdKTtmb3IoaSBpbiBwLmhlYWRlcnMpTi5zZXRSZXF1ZXN0SGVhZGVyKGkscC5oZWFkZXJzW2ldKTtpZihwLmJlZm9yZVNlbmQmJihwLmJlZm9yZVNlbmQuY2FsbChmLE4scCk9PT0hMXx8Mj09PXgpKXJldHVybiBOLmFib3J0KCk7VD0iYWJvcnQiO2ZvcihpIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KU5baV0ocFtpXSk7aWYobD1xbihqbixwLG4sTikpe04ucmVhZHlTdGF0ZT0xLHUmJmQudHJpZ2dlcigiYWpheFNlbmQiLFtOLHBdKSxwLmFzeW5jJiZwLnRpbWVvdXQ+MCYmKHM9c2V0VGltZW91dChmdW5jdGlvbigpe04uYWJvcnQoInRpbWVvdXQiKX0scC50aW1lb3V0KSk7dHJ5e3g9MSxsLnNlbmQoeSxrKX1jYXRjaChDKXtpZighKDI+eCkpdGhyb3cgQztrKC0xLEMpfX1lbHNlIGsoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIGsoZSxuLHIsaSl7dmFyIGMseSx2LHcsVCxDPW47MiE9PXgmJih4PTIscyYmY2xlYXJUaW1lb3V0KHMpLGw9dCxhPWl8fCIiLE4ucmVhZHlTdGF0ZT1lPjA/NDowLHImJih3PV9uKHAsTixyKSksZT49MjAwJiYzMDA+ZXx8MzA0PT09ZT8ocC5pZk1vZGlmaWVkJiYoVD1OLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIiksVCYmKGIubGFzdE1vZGlmaWVkW29dPVQpLFQ9Ti5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpLFQmJihiLmV0YWdbb109VCkpLDIwND09PWU/KGM9ITAsQz0ibm9jb250ZW50Iik6MzA0PT09ZT8oYz0hMCxDPSJub3Rtb2RpZmllZCIpOihjPUZuKHAsdyksQz1jLnN0YXRlLHk9Yy5kYXRhLHY9Yy5lcnJvcixjPSF2KSk6KHY9QywoZXx8IUMpJiYoQz0iZXJyb3IiLDA+ZSYmKGU9MCkpKSxOLnN0YXR1cz1lLE4uc3RhdHVzVGV4dD0obnx8QykrIiIsYz9oLnJlc29sdmVXaXRoKGYsW3ksQyxOXSk6aC5yZWplY3RXaXRoKGYsW04sQyx2XSksTi5zdGF0dXNDb2RlKG0pLG09dCx1JiZkLnRyaWdnZXIoYz8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFtOLHAsYz95OnZdKSxnLmZpcmVXaXRoKGYsW04sQ10pLHUmJihkLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW04scF0pLC0tYi5hY3RpdmV8fGIuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiBOfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gYi5nZXQoZSx0LG4sInNjcmlwdCIpfSxnZXRKU09OOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gYi5nZXQoZSx0LG4sImpzb24iKX19KTtmdW5jdGlvbiBfbihlLG4scil7dmFyIGksbyxhLHMsdT1lLmNvbnRlbnRzLGw9ZS5kYXRhVHlwZXMsYz1lLnJlc3BvbnNlRmllbGRzO2ZvcihzIGluIGMpcyBpbiByJiYobltjW3NdXT1yW3NdKTt3aGlsZSgiKiI9PT1sWzBdKWwuc2hpZnQoKSxvPT09dCYmKG89ZS5taW1lVHlwZXx8bi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKG8pZm9yKHMgaW4gdSlpZih1W3NdJiZ1W3NdLnRlc3Qobykpe2wudW5zaGlmdChzKTticmVha31pZihsWzBdaW4gcilhPWxbMF07ZWxzZXtmb3IocyBpbiByKXtpZighbFswXXx8ZS5jb252ZXJ0ZXJzW3MrIiAiK2xbMF1dKXthPXM7YnJlYWt9aXx8KGk9cyl9YT1hfHxpfXJldHVybiBhPyhhIT09bFswXSYmbC51bnNoaWZ0KGEpLHJbYV0pOnR9ZnVuY3Rpb24gRm4oZSx0KXt2YXIgbixyLGksbyxhPXt9LHM9MCx1PWUuZGF0YVR5cGVzLnNsaWNlKCksbD11WzBdO2lmKGUuZGF0YUZpbHRlciYmKHQ9ZS5kYXRhRmlsdGVyKHQsZS5kYXRhVHlwZSkpLHVbMV0pZm9yKGkgaW4gZS5jb252ZXJ0ZXJzKWFbaS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbaV07Zm9yKDtyPXVbKytzXTspaWYoIioiIT09cil7aWYoIioiIT09bCYmbCE9PXIpe2lmKGk9YVtsKyIgIityXXx8YVsiKiAiK3JdLCFpKWZvcihuIGluIGEpaWYobz1uLnNwbGl0KCIgIiksb1sxXT09PXImJihpPWFbbCsiICIrb1swXV18fGFbIiogIitvWzBdXSkpe2k9PT0hMD9pPWFbbl06YVtuXSE9PSEwJiYocj1vWzBdLHUuc3BsaWNlKHMtLSwwLHIpKTticmVha31pZihpIT09ITApaWYoaSYmZVsidGhyb3dzIl0pdD1pKHQpO2Vsc2UgdHJ5e3Q9aSh0KX1jYXRjaChjKXtyZXR1cm57c3RhdGU6InBhcnNlcmVycm9yIixlcnJvcjppP2M6Ik5vIGNvbnZlcnNpb24gZnJvbSAiK2wrIiB0byAiK3J9fX1sPXJ9cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fWIuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovKD86amF2YXxlY21hKXNjcmlwdC99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGIuZ2xvYmFsRXZhbChlKSxlfX19KSxiLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oZSl7ZS5jYWNoZT09PXQmJihlLmNhY2hlPSExKSxlLmNyb3NzRG9tYWluJiYoZS50eXBlPSJHRVQiLGUuZ2xvYmFsPSExKX0pLGIuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihlKXtpZihlLmNyb3NzRG9tYWluKXt2YXIgbixyPW8uaGVhZHx8YigiaGVhZCIpWzBdfHxvLmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbih0LGkpe249by5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxuLmFzeW5jPSEwLGUuc2NyaXB0Q2hhcnNldCYmKG4uY2hhcnNldD1lLnNjcmlwdENoYXJzZXQpLG4uc3JjPWUudXJsLG4ub25sb2FkPW4ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGUsdCl7KHR8fCFuLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3Qobi5yZWFkeVN0YXRlKSkmJihuLm9ubG9hZD1uLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLG4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pLG49bnVsbCx0fHxpKDIwMCwic3VjY2VzcyIpKX0sci5pbnNlcnRCZWZvcmUobixyLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe24mJm4ub25sb2FkKHQsITApfX19fSk7dmFyIE9uPVtdLEJuPS8oPSlcPyg/PSZ8JCl8XD9cPy87Yi5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBlPU9uLnBvcCgpfHxiLmV4cGFuZG8rIl8iK3ZuKys7cmV0dXJuIHRoaXNbZV09ITAsZX19KSxiLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKG4scixpKXt2YXIgbyxhLHMsdT1uLmpzb25wIT09ITEmJihCbi50ZXN0KG4udXJsKT8idXJsIjoic3RyaW5nIj09dHlwZW9mIG4uZGF0YSYmIShuLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJkJuLnRlc3Qobi5kYXRhKSYmImRhdGEiKTtyZXR1cm4gdXx8Impzb25wIj09PW4uZGF0YVR5cGVzWzBdPyhvPW4uanNvbnBDYWxsYmFjaz1iLmlzRnVuY3Rpb24obi5qc29ucENhbGxiYWNrKT9uLmpzb25wQ2FsbGJhY2soKTpuLmpzb25wQ2FsbGJhY2ssdT9uW3VdPW5bdV0ucmVwbGFjZShCbiwiJDEiK28pOm4uanNvbnAhPT0hMSYmKG4udXJsKz0oYm4udGVzdChuLnVybCk/IiYiOiI/Iikrbi5qc29ucCsiPSIrbyksbi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIHN8fGIuZXJyb3IobysiIHdhcyBub3QgY2FsbGVkIiksc1swXX0sbi5kYXRhVHlwZXNbMF09Impzb24iLGE9ZVtvXSxlW29dPWZ1bmN0aW9uKCl7cz1hcmd1bWVudHN9LGkuYWx3YXlzKGZ1bmN0aW9uKCl7ZVtvXT1hLG5bb10mJihuLmpzb25wQ2FsbGJhY2s9ci5qc29ucENhbGxiYWNrLE9uLnB1c2gobykpLHMmJmIuaXNGdW5jdGlvbihhKSYmYShzWzBdKSxzPWE9dH0pLCJzY3JpcHQiKTp0fSk7dmFyIFBuLFJuLFduPTAsJG49ZS5BY3RpdmVYT2JqZWN0JiZmdW5jdGlvbigpe3ZhciBlO2ZvcihlIGluIFBuKVBuW2VdKHQsITApfTtmdW5jdGlvbiBJbigpe3RyeXtyZXR1cm4gbmV3IGUuWE1MSHR0cFJlcXVlc3R9Y2F0Y2godCl7fX1mdW5jdGlvbiB6bigpe3RyeXtyZXR1cm4gbmV3IGUuQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXRjaCh0KXt9fWIuYWpheFNldHRpbmdzLnhocj1lLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0xvY2FsJiZJbigpfHx6bigpfTpJbixSbj1iLmFqYXhTZXR0aW5ncy54aHIoKSxiLnN1cHBvcnQuY29ycz0hIVJuJiYid2l0aENyZWRlbnRpYWxzImluIFJuLFJuPWIuc3VwcG9ydC5hamF4PSEhUm4sUm4mJmIuYWpheFRyYW5zcG9ydChmdW5jdGlvbihuKXtpZighbi5jcm9zc0RvbWFpbnx8Yi5zdXBwb3J0LmNvcnMpe3ZhciByO3JldHVybntzZW5kOmZ1bmN0aW9uKGksbyl7dmFyIGEscyx1PW4ueGhyKCk7aWYobi51c2VybmFtZT91Lm9wZW4obi50eXBlLG4udXJsLG4uYXN5bmMsbi51c2VybmFtZSxuLnBhc3N3b3JkKTp1Lm9wZW4obi50eXBlLG4udXJsLG4uYXN5bmMpLG4ueGhyRmllbGRzKWZvcihzIGluIG4ueGhyRmllbGRzKXVbc109bi54aHJGaWVsZHNbc107bi5taW1lVHlwZSYmdS5vdmVycmlkZU1pbWVUeXBlJiZ1Lm92ZXJyaWRlTWltZVR5cGUobi5taW1lVHlwZSksbi5jcm9zc0RvbWFpbnx8aVsiWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoaVsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpO3RyeXtmb3IocyBpbiBpKXUuc2V0UmVxdWVzdEhlYWRlcihzLGlbc10pfWNhdGNoKGwpe311LnNlbmQobi5oYXNDb250ZW50JiZuLmRhdGF8fG51bGwpLHI9ZnVuY3Rpb24oZSxpKXt2YXIgcyxsLGMscDt0cnl7aWYociYmKGl8fDQ9PT11LnJlYWR5U3RhdGUpKWlmKHI9dCxhJiYodS5vbnJlYWR5c3RhdGVjaGFuZ2U9Yi5ub29wLCRuJiZkZWxldGUgUG5bYV0pLGkpNCE9PXUucmVhZHlTdGF0ZSYmdS5hYm9ydCgpO2Vsc2V7cD17fSxzPXUuc3RhdHVzLGw9dS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSwic3RyaW5nIj09dHlwZW9mIHUucmVzcG9uc2VUZXh0JiYocC50ZXh0PXUucmVzcG9uc2VUZXh0KTt0cnl7Yz11LnN0YXR1c1RleHR9Y2F0Y2goZil7Yz0iIn1zfHwhbi5pc0xvY2FsfHxuLmNyb3NzRG9tYWluPzEyMjM9PT1zJiYocz0yMDQpOnM9cC50ZXh0PzIwMDo0MDR9fWNhdGNoKGQpe2l8fG8oLTEsZCl9cCYmbyhzLGMscCxsKX0sbi5hc3luYz80PT09dS5yZWFkeVN0YXRlP3NldFRpbWVvdXQocik6KGE9KytXbiwkbiYmKFBufHwoUG49e30sYihlKS51bmxvYWQoJG4pKSxQblthXT1yKSx1Lm9ucmVhZHlzdGF0ZWNoYW5nZT1yKTpyKCl9LGFib3J0OmZ1bmN0aW9uKCl7ciYmcih0LCEwKX19fX0pO3ZhciBYbixVbixWbj0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sWW49UmVnRXhwKCJeKD86KFsrLV0pPXwpKCIreCsiKShbYS16JV0qKSQiLCJpIiksSm49L3F1ZXVlSG9va3MkLyxHbj1bbnJdLFFuPXsiKiI6W2Z1bmN0aW9uKGUsdCl7dmFyIG4scixpPXRoaXMuY3JlYXRlVHdlZW4oZSx0KSxvPVluLmV4ZWModCksYT1pLmN1cigpLHM9K2F8fDAsdT0xLGw9MjA7aWYobyl7aWYobj0rb1syXSxyPW9bM118fChiLmNzc051bWJlcltlXT8iIjoicHgiKSwicHgiIT09ciYmcyl7cz1iLmNzcyhpLmVsZW0sZSwhMCl8fG58fDE7ZG8gdT11fHwiLjUiLHMvPXUsYi5zdHlsZShpLmVsZW0sZSxzK3IpO3doaWxlKHUhPT0odT1pLmN1cigpL2EpJiYxIT09dSYmLS1sKX1pLnVuaXQ9cixpLnN0YXJ0PXMsaS5lbmQ9b1sxXT9zKyhvWzFdKzEpKm46bn1yZXR1cm4gaX1dfTtmdW5jdGlvbiBLbigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WG49dH0pLFhuPWIubm93KCl9ZnVuY3Rpb24gWm4oZSx0KXtiLmVhY2godCxmdW5jdGlvbih0LG4pe3ZhciByPShRblt0XXx8W10pLmNvbmNhdChRblsiKiJdKSxpPTAsbz1yLmxlbmd0aDtmb3IoO28+aTtpKyspaWYocltpXS5jYWxsKGUsdCxuKSlyZXR1cm59KX1mdW5jdGlvbiBlcihlLHQsbil7dmFyIHIsaSxvPTAsYT1Hbi5sZW5ndGgscz1iLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIHUuZWxlbX0pLHU9ZnVuY3Rpb24oKXtpZihpKXJldHVybiExO3ZhciB0PVhufHxLbigpLG49TWF0aC5tYXgoMCxsLnN0YXJ0VGltZStsLmR1cmF0aW9uLXQpLHI9bi9sLmR1cmF0aW9ufHwwLG89MS1yLGE9MCx1PWwudHdlZW5zLmxlbmd0aDtmb3IoO3U+YTthKyspbC50d2VlbnNbYV0ucnVuKG8pO3JldHVybiBzLm5vdGlmeVdpdGgoZSxbbCxvLG5dKSwxPm8mJnU/bjoocy5yZXNvbHZlV2l0aChlLFtsXSksITEpfSxsPXMucHJvbWlzZSh7ZWxlbTplLHByb3BzOmIuZXh0ZW5kKHt9LHQpLG9wdHM6Yi5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LG4pLG9yaWdpbmFsUHJvcGVydGllczp0LG9yaWdpbmFsT3B0aW9uczpuLHN0YXJ0VGltZTpYbnx8S24oKSxkdXJhdGlvbjpuLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbih0LG4pe3ZhciByPWIuVHdlZW4oZSxsLm9wdHMsdCxuLGwub3B0cy5zcGVjaWFsRWFzaW5nW3RdfHxsLm9wdHMuZWFzaW5nKTtyZXR1cm4gbC50d2VlbnMucHVzaChyKSxyfSxzdG9wOmZ1bmN0aW9uKHQpe3ZhciBuPTAscj10P2wudHdlZW5zLmxlbmd0aDowO2lmKGkpcmV0dXJuIHRoaXM7Zm9yKGk9ITA7cj5uO24rKylsLnR3ZWVuc1tuXS5ydW4oMSk7cmV0dXJuIHQ/cy5yZXNvbHZlV2l0aChlLFtsLHRdKTpzLnJlamVjdFdpdGgoZSxbbCx0XSksdGhpc319KSxjPWwucHJvcHM7Zm9yKHRyKGMsbC5vcHRzLnNwZWNpYWxFYXNpbmcpO2E+bztvKyspaWYocj1HbltvXS5jYWxsKGwsZSxjLGwub3B0cykpcmV0dXJuIHI7cmV0dXJuIFpuKGwsYyksYi5pc0Z1bmN0aW9uKGwub3B0cy5zdGFydCkmJmwub3B0cy5zdGFydC5jYWxsKGUsbCksYi5meC50aW1lcihiLmV4dGVuZCh1LHtlbGVtOmUsYW5pbTpsLHF1ZXVlOmwub3B0cy5xdWV1ZX0pKSxsLnByb2dyZXNzKGwub3B0cy5wcm9ncmVzcykuZG9uZShsLm9wdHMuZG9uZSxsLm9wdHMuY29tcGxldGUpLmZhaWwobC5vcHRzLmZhaWwpLmFsd2F5cyhsLm9wdHMuYWx3YXlzKX1mdW5jdGlvbiB0cihlLHQpe3ZhciBuLHIsaSxvLGE7Zm9yKGkgaW4gZSlpZihyPWIuY2FtZWxDYXNlKGkpLG89dFtyXSxuPWVbaV0sYi5pc0FycmF5KG4pJiYobz1uWzFdLG49ZVtpXT1uWzBdKSxpIT09ciYmKGVbcl09bixkZWxldGUgZVtpXSksYT1iLmNzc0hvb2tzW3JdLGEmJiJleHBhbmQiaW4gYSl7bj1hLmV4cGFuZChuKSxkZWxldGUgZVtyXTtmb3IoaSBpbiBuKWkgaW4gZXx8KGVbaV09bltpXSx0W2ldPW8pfWVsc2UgdFtyXT1vfWIuQW5pbWF0aW9uPWIuZXh0ZW5kKGVyLHt0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7Yi5pc0Z1bmN0aW9uKGUpPyh0PWUsZT1bIioiXSk6ZT1lLnNwbGl0KCIgIik7dmFyIG4scj0wLGk9ZS5sZW5ndGg7Zm9yKDtpPnI7cisrKW49ZVtyXSxRbltuXT1RbltuXXx8W10sUW5bbl0udW5zaGlmdCh0KX0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dD9Hbi51bnNoaWZ0KGUpOkduLnB1c2goZSl9fSk7ZnVuY3Rpb24gbnIoZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGMscCxmPXRoaXMsZD1lLnN0eWxlLGg9e30sZz1bXSxtPWUubm9kZVR5cGUmJm5uKGUpO24ucXVldWV8fChjPWIuX3F1ZXVlSG9va3MoZSwiZngiKSxudWxsPT1jLnVucXVldWVkJiYoYy51bnF1ZXVlZD0wLHA9Yy5lbXB0eS5maXJlLGMuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2MudW5xdWV1ZWR8fHAoKX0pLGMudW5xdWV1ZWQrKyxmLmFsd2F5cyhmdW5jdGlvbigpe2YuYWx3YXlzKGZ1bmN0aW9uKCl7Yy51bnF1ZXVlZC0tLGIucXVldWUoZSwiZngiKS5sZW5ndGh8fGMuZW1wdHkuZmlyZSgpfSl9KSksMT09PWUubm9kZVR5cGUmJigiaGVpZ2h0ImluIHR8fCJ3aWR0aCJpbiB0KSYmKG4ub3ZlcmZsb3c9W2Qub3ZlcmZsb3csZC5vdmVyZmxvd1gsZC5vdmVyZmxvd1ldLCJpbmxpbmUiPT09Yi5jc3MoZSwiZGlzcGxheSIpJiYibm9uZSI9PT1iLmNzcyhlLCJmbG9hdCIpJiYoYi5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09dW4oZS5ub2RlTmFtZSk/ZC56b29tPTE6ZC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksbi5vdmVyZmxvdyYmKGQub3ZlcmZsb3c9ImhpZGRlbiIsYi5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3N8fGYuYWx3YXlzKGZ1bmN0aW9uKCl7ZC5vdmVyZmxvdz1uLm92ZXJmbG93WzBdLGQub3ZlcmZsb3dYPW4ub3ZlcmZsb3dbMV0sZC5vdmVyZmxvd1k9bi5vdmVyZmxvd1syXX0pKTtmb3IoaSBpbiB0KWlmKGE9dFtpXSxWbi5leGVjKGEpKXtpZihkZWxldGUgdFtpXSx1PXV8fCJ0b2dnbGUiPT09YSxhPT09KG0/ImhpZGUiOiJzaG93IikpY29udGludWU7Zy5wdXNoKGkpfWlmKG89Zy5sZW5ndGgpe3M9Yi5fZGF0YShlLCJmeHNob3ciKXx8Yi5fZGF0YShlLCJmeHNob3ciLHt9KSwiaGlkZGVuImluIHMmJihtPXMuaGlkZGVuKSx1JiYocy5oaWRkZW49IW0pLG0/YihlKS5zaG93KCk6Zi5kb25lKGZ1bmN0aW9uKCl7YihlKS5oaWRlKCl9KSxmLmRvbmUoZnVuY3Rpb24oKXt2YXIgdDtiLl9yZW1vdmVEYXRhKGUsImZ4c2hvdyIpO2Zvcih0IGluIGgpYi5zdHlsZShlLHQsaFt0XSl9KTtmb3IoaT0wO28+aTtpKyspcj1nW2ldLGw9Zi5jcmVhdGVUd2VlbihyLG0/c1tyXTowKSxoW3JdPXNbcl18fGIuc3R5bGUoZSxyKSxyIGluIHN8fChzW3JdPWwuc3RhcnQsbSYmKGwuZW5kPWwuc3RhcnQsbC5zdGFydD0id2lkdGgiPT09cnx8ImhlaWdodCI9PT1yPzE6MCkpfX1mdW5jdGlvbiBycihlLHQsbixyLGkpe3JldHVybiBuZXcgcnIucHJvdG90eXBlLmluaXQoZSx0LG4scixpKX1iLlR3ZWVuPXJyLHJyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6cnIsaW5pdDpmdW5jdGlvbihlLHQsbixyLGksbyl7dGhpcy5lbGVtPWUsdGhpcy5wcm9wPW4sdGhpcy5lYXNpbmc9aXx8InN3aW5nIix0aGlzLm9wdGlvbnM9dCx0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9cix0aGlzLnVuaXQ9b3x8KGIuY3NzTnVtYmVyW25dPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgZT1yci5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gZSYmZS5nZXQ/ZS5nZXQodGhpcyk6cnIucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGUpe3ZhciB0LG49cnIucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMucG9zPXQ9dGhpcy5vcHRpb25zLmR1cmF0aW9uP2IuZWFzaW5nW3RoaXMuZWFzaW5nXShlLHRoaXMub3B0aW9ucy5kdXJhdGlvbiplLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOmUsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhpcyk6cnIucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0scnIucHJvdG90eXBlLmluaXQucHJvdG90eXBlPXJyLnByb3RvdHlwZSxyci5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGw9PWUuZWxlbVtlLnByb3BdfHxlLmVsZW0uc3R5bGUmJm51bGwhPWUuZWxlbS5zdHlsZVtlLnByb3BdPyh0PWIuY3NzKGUuZWxlbSxlLnByb3AsIiIpLHQmJiJhdXRvIiE9PXQ/dDowKTplLmVsZW1bZS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGUpe2IuZnguc3RlcFtlLnByb3BdP2IuZnguc3RlcFtlLnByb3BdKGUpOmUuZWxlbS5zdHlsZSYmKG51bGwhPWUuZWxlbS5zdHlsZVtiLmNzc1Byb3BzW2UucHJvcF1dfHxiLmNzc0hvb2tzW2UucHJvcF0pP2Iuc3R5bGUoZS5lbGVtLGUucHJvcCxlLm5vdytlLnVuaXQpOmUuZWxlbVtlLnByb3BdPWUubm93fX19LHJyLnByb3BIb29rcy5zY3JvbGxUb3A9cnIucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihlKXtlLmVsZW0ubm9kZVR5cGUmJmUuZWxlbS5wYXJlbnROb2RlJiYoZS5lbGVtW2UucHJvcF09ZS5ub3cpfX0sYi5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihlLHQpe3ZhciBuPWIuZm5bdF07Yi5mblt0XT1mdW5jdGlvbihlLHIsaSl7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09dHlwZW9mIGU/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGlyKHQsITApLGUscixpKX19KSxiLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLmZpbHRlcihubikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTp0fSxlLG4scil9LGFuaW1hdGU6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9Yi5pc0VtcHR5T2JqZWN0KGUpLG89Yi5zcGVlZCh0LG4sciksYT1mdW5jdGlvbigpe3ZhciB0PWVyKHRoaXMsYi5leHRlbmQoe30sZSksbyk7YS5maW5pc2g9ZnVuY3Rpb24oKXt0LnN0b3AoITApfSwoaXx8Yi5fZGF0YSh0aGlzLCJmaW5pc2giKSkmJnQuc3RvcCghMCl9O3JldHVybiBhLmZpbmlzaD1hLGl8fG8ucXVldWU9PT0hMT90aGlzLmVhY2goYSk6dGhpcy5xdWV1ZShvLnF1ZXVlLGEpfSxzdG9wOmZ1bmN0aW9uKGUsbixyKXt2YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3RvcCx0KHIpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJihyPW4sbj1lLGU9dCksbiYmZSE9PSExJiZ0aGlzLnF1ZXVlKGV8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PSEwLG49bnVsbCE9ZSYmZSsicXVldWVIb29rcyIsbz1iLnRpbWVycyxhPWIuX2RhdGEodGhpcyk7aWYobilhW25dJiZhW25dLnN0b3AmJmkoYVtuXSk7ZWxzZSBmb3IobiBpbiBhKWFbbl0mJmFbbl0uc3RvcCYmSm4udGVzdChuKSYmaShhW25dKTtmb3Iobj1vLmxlbmd0aDtuLS07KW9bbl0uZWxlbSE9PXRoaXN8fG51bGwhPWUmJm9bbl0ucXVldWUhPT1lfHwob1tuXS5hbmltLnN0b3AociksdD0hMSxvLnNwbGljZShuLDEpKTsodHx8IXIpJiZiLmRlcXVldWUodGhpcyxlKX0pfSxmaW5pc2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT0hMSYmKGU9ZXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQsbj1iLl9kYXRhKHRoaXMpLHI9bltlKyJxdWV1ZSJdLGk9bltlKyJxdWV1ZUhvb2tzIl0sbz1iLnRpbWVycyxhPXI/ci5sZW5ndGg6MDtmb3Iobi5maW5pc2g9ITAsYi5xdWV1ZSh0aGlzLGUsW10pLGkmJmkuY3VyJiZpLmN1ci5maW5pc2gmJmkuY3VyLmZpbmlzaC5jYWxsKHRoaXMpLHQ9by5sZW5ndGg7dC0tOylvW3RdLmVsZW09PT10aGlzJiZvW3RdLnF1ZXVlPT09ZSYmKG9bdF0uYW5pbS5zdG9wKCEwKSxvLnNwbGljZSh0LDEpKTtmb3IodD0wO2E+dDt0Kyspclt0XSYmclt0XS5maW5pc2gmJnJbdF0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIG4uZmluaXNofSl9fSk7ZnVuY3Rpb24gaXIoZSx0KXt2YXIgbixyPXtoZWlnaHQ6ZX0saT0wO2Zvcih0PXQ/MTowOzQ+aTtpKz0yLXQpbj1adFtpXSxyWyJtYXJnaW4iK25dPXJbInBhZGRpbmciK25dPWU7cmV0dXJuIHQmJihyLm9wYWNpdHk9ci53aWR0aD1lKSxyfWIuZWFjaCh7c2xpZGVEb3duOmlyKCJzaG93Iiksc2xpZGVVcDppcigiaGlkZSIpLHNsaWRlVG9nZ2xlOmlyKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGUsdCl7Yi5mbltlXT1mdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh0LGUsbixyKX19KSxiLnNwZWVkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lJiYib2JqZWN0Ij09dHlwZW9mIGU/Yi5leHRlbmQoe30sZSk6e2NvbXBsZXRlOm58fCFuJiZ0fHxiLmlzRnVuY3Rpb24oZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIWIuaXNGdW5jdGlvbih0KSYmdH07cmV0dXJuIHIuZHVyYXRpb249Yi5meC5vZmY/MDoibnVtYmVyIj09dHlwZW9mIHIuZHVyYXRpb24/ci5kdXJhdGlvbjpyLmR1cmF0aW9uIGluIGIuZnguc3BlZWRzP2IuZnguc3BlZWRzW3IuZHVyYXRpb25dOmIuZnguc3BlZWRzLl9kZWZhdWx0LChudWxsPT1yLnF1ZXVlfHxyLnF1ZXVlPT09ITApJiYoci5xdWV1ZT0iZngiKSxyLm9sZD1yLmNvbXBsZXRlLHIuY29tcGxldGU9ZnVuY3Rpb24oKXtiLmlzRnVuY3Rpb24oci5vbGQpJiZyLm9sZC5jYWxsKHRoaXMpLHIucXVldWUmJmIuZGVxdWV1ZSh0aGlzLHIucXVldWUpfSxyfSxiLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxzd2luZzpmdW5jdGlvbihlKXtyZXR1cm4uNS1NYXRoLmNvcyhlKk1hdGguUEkpLzJ9fSxiLnRpbWVycz1bXSxiLmZ4PXJyLnByb3RvdHlwZS5pbml0LGIuZngudGljaz1mdW5jdGlvbigpe3ZhciBlLG49Yi50aW1lcnMscj0wO2ZvcihYbj1iLm5vdygpO24ubGVuZ3RoPnI7cisrKWU9bltyXSxlKCl8fG5bcl0hPT1lfHxuLnNwbGljZShyLS0sMSk7bi5sZW5ndGh8fGIuZnguc3RvcCgpLFhuPXR9LGIuZngudGltZXI9ZnVuY3Rpb24oZSl7ZSgpJiZiLnRpbWVycy5wdXNoKGUpJiZiLmZ4LnN0YXJ0KCl9LGIuZnguaW50ZXJ2YWw9MTMsYi5meC5zdGFydD1mdW5jdGlvbigpe1VufHwoVW49c2V0SW50ZXJ2YWwoYi5meC50aWNrLGIuZnguaW50ZXJ2YWwpKX0sYi5meC5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChVbiksVW49bnVsbH0sYi5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sYi5meC5zdGVwPXt9LGIuZXhwciYmYi5leHByLmZpbHRlcnMmJihiLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihlKXtyZXR1cm4gYi5ncmVwKGIudGltZXJzLGZ1bmN0aW9uKHQpe3JldHVybiBlPT09dC5lbGVtfSkubGVuZ3RofSksYi5mbi5vZmZzZXQ9ZnVuY3Rpb24oZSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT09PXQ/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24odCl7Yi5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsZSx0KX0pO3ZhciBuLHIsbz17dG9wOjAsbGVmdDowfSxhPXRoaXNbMF0scz1hJiZhLm93bmVyRG9jdW1lbnQ7aWYocylyZXR1cm4gbj1zLmRvY3VtZW50RWxlbWVudCxiLmNvbnRhaW5zKG4sYSk/KHR5cGVvZiBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCE9PWkmJihvPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLHI9b3Iocykse3RvcDpvLnRvcCsoci5wYWdlWU9mZnNldHx8bi5zY3JvbGxUb3ApLShuLmNsaWVudFRvcHx8MCksbGVmdDpvLmxlZnQrKHIucGFnZVhPZmZzZXR8fG4uc2Nyb2xsTGVmdCktKG4uY2xpZW50TGVmdHx8MCl9KTpvfSxiLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1iLmNzcyhlLCJwb3NpdGlvbiIpOyJzdGF0aWMiPT09ciYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIik7dmFyIGk9YihlKSxvPWkub2Zmc2V0KCksYT1iLmNzcyhlLCJ0b3AiKSxzPWIuY3NzKGUsImxlZnQiKSx1PSgiYWJzb2x1dGUiPT09cnx8ImZpeGVkIj09PXIpJiZiLmluQXJyYXkoImF1dG8iLFthLHNdKT4tMSxsPXt9LGM9e30scCxmO3U/KGM9aS5wb3NpdGlvbigpLHA9Yy50b3AsZj1jLmxlZnQpOihwPXBhcnNlRmxvYXQoYSl8fDAsZj1wYXJzZUZsb2F0KHMpfHwwKSxiLmlzRnVuY3Rpb24odCkmJih0PXQuY2FsbChlLG4sbykpLG51bGwhPXQudG9wJiYobC50b3A9dC50b3Atby50b3ArcCksbnVsbCE9dC5sZWZ0JiYobC5sZWZ0PXQubGVmdC1vLmxlZnQrZiksInVzaW5nImluIHQ/dC51c2luZy5jYWxsKGUsbCk6aS5jc3MobCl9fSxiLmZuLmV4dGVuZCh7cG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgZSx0LG49e3RvcDowLGxlZnQ6MH0scj10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1iLmNzcyhyLCJwb3NpdGlvbiIpP3Q9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooZT10aGlzLm9mZnNldFBhcmVudCgpLHQ9dGhpcy5vZmZzZXQoKSxiLm5vZGVOYW1lKGVbMF0sImh0bWwiKXx8KG49ZS5vZmZzZXQoKSksbi50b3ArPWIuY3NzKGVbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksbi5sZWZ0Kz1iLmNzcyhlWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDp0LnRvcC1uLnRvcC1iLmNzcyhyLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OnQubGVmdC1uLmxlZnQtYi5jc3MociwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPXRoaXMub2Zmc2V0UGFyZW50fHxvLmRvY3VtZW50RWxlbWVudDt3aGlsZShlJiYhYi5ub2RlTmFtZShlLCJodG1sIikmJiJzdGF0aWMiPT09Yi5jc3MoZSwicG9zaXRpb24iKSllPWUub2Zmc2V0UGFyZW50O3JldHVybiBlfHxvLmRvY3VtZW50RWxlbWVudH0pfX0pLGIuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihlLG4pe3ZhciByPS9ZLy50ZXN0KG4pO2IuZm5bZV09ZnVuY3Rpb24oaSl7cmV0dXJuIGIuYWNjZXNzKHRoaXMsZnVuY3Rpb24oZSxpLG8pe3ZhciBhPW9yKGUpO3JldHVybiBvPT09dD9hP24gaW4gYT9hW25dOmEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W2ldOmVbaV06KGE/YS5zY3JvbGxUbyhyP2IoYSkuc2Nyb2xsTGVmdCgpOm8scj9vOmIoYSkuc2Nyb2xsVG9wKCkpOmVbaV09byx0KX0sZSxpLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSk7ZnVuY3Rpb24gb3IoZSl7cmV0dXJuIGIuaXNXaW5kb3coZSk/ZTo5PT09ZS5ub2RlVHlwZT9lLmRlZmF1bHRWaWV3fHxlLnBhcmVudFdpbmRvdzohMX1iLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihlLG4pe2IuZWFjaCh7cGFkZGluZzoiaW5uZXIiK2UsY29udGVudDpuLCIiOiJvdXRlciIrZX0sZnVuY3Rpb24ocixpKXtiLmZuW2ldPWZ1bmN0aW9uKGksbyl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aCYmKHJ8fCJib29sZWFuIiE9dHlwZW9mIGkpLHM9cnx8KGk9PT0hMHx8bz09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gYi5hY2Nlc3ModGhpcyxmdW5jdGlvbihuLHIsaSl7dmFyIG87cmV0dXJuIGIuaXNXaW5kb3cobik/bi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrZV06OT09PW4ubm9kZVR5cGU/KG89bi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgobi5ib2R5WyJzY3JvbGwiK2VdLG9bInNjcm9sbCIrZV0sbi5ib2R5WyJvZmZzZXQiK2VdLG9bIm9mZnNldCIrZV0sb1siY2xpZW50IitlXSkpOmk9PT10P2IuY3NzKG4scixzKTpiLnN0eWxlKG4scixpLHMpfSxuLGE/aTp0LGEsbnVsbCl9fSl9KSxlLmpRdWVyeT1lLiQ9YiwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUuYW1kLmpRdWVyeSYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KX0pKHdpbmRvdyk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvanMvdGhpcmRwYXJ0eS9qcXVlcnktdWktMS4xMC4yLmN1c3RvbS5qcyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2pzL3RoaXJkcGFydHkvanF1ZXJ5LXVpLTEuMTAuMi5jdXN0b20uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhiZGI4NDYuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvanMvdGhpcmRwYXJ0eS9qcXVlcnktdWktMS4xMC4yLmN1c3RvbS5qcworKysgL2Rldi9udWxsCkBAIC0xLDE2NTggKzAsMCBAQAotLyohIGpRdWVyeSBVSSAtIHYxLjEwLjIgLSAyMDEzLTA0LTA1Ci0qIGh0dHA6Ly9qcXVlcnl1aS5jb20KLSogSW5jbHVkZXM6IGpxdWVyeS51aS5jb3JlLmpzLCBqcXVlcnkudWkud2lkZ2V0LmpzLCBqcXVlcnkudWkudGFicy5qcwotKiBDb3B5cmlnaHQgMjAxMyBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIExpY2Vuc2VkIE1JVCAqLwotCi0oZnVuY3Rpb24oICQsIHVuZGVmaW5lZCApIHsKLQotdmFyIHV1aWQgPSAwLAotCXJ1bmlxdWVJZCA9IC9edWktaWQtXGQrJC87Ci0KLS8vICQudWkgbWlnaHQgZXhpc3QgZnJvbSBjb21wb25lbnRzIHdpdGggbm8gZGVwZW5kZW5jaWVzLCBlLmcuLCAkLnVpLnBvc2l0aW9uCi0kLnVpID0gJC51aSB8fCB7fTsKLQotJC5leHRlbmQoICQudWksIHsKLQl2ZXJzaW9uOiAiMS4xMC4yIiwKLQotCWtleUNvZGU6IHsKLQkJQkFDS1NQQUNFOiA4LAotCQlDT01NQTogMTg4LAotCQlERUxFVEU6IDQ2LAotCQlET1dOOiA0MCwKLQkJRU5EOiAzNSwKLQkJRU5URVI6IDEzLAotCQlFU0NBUEU6IDI3LAotCQlIT01FOiAzNiwKLQkJTEVGVDogMzcsCi0JCU5VTVBBRF9BREQ6IDEwNywKLQkJTlVNUEFEX0RFQ0lNQUw6IDExMCwKLQkJTlVNUEFEX0RJVklERTogMTExLAotCQlOVU1QQURfRU5URVI6IDEwOCwKLQkJTlVNUEFEX01VTFRJUExZOiAxMDYsCi0JCU5VTVBBRF9TVUJUUkFDVDogMTA5LAotCQlQQUdFX0RPV046IDM0LAotCQlQQUdFX1VQOiAzMywKLQkJUEVSSU9EOiAxOTAsCi0JCVJJR0hUOiAzOSwKLQkJU1BBQ0U6IDMyLAotCQlUQUI6IDksCi0JCVVQOiAzOAotCX0KLX0pOwotCi0vLyBwbHVnaW5zCi0kLmZuLmV4dGVuZCh7Ci0JZm9jdXM6IChmdW5jdGlvbiggb3JpZyApIHsKLQkJcmV0dXJuIGZ1bmN0aW9uKCBkZWxheSwgZm4gKSB7Ci0JCQlyZXR1cm4gdHlwZW9mIGRlbGF5ID09PSAibnVtYmVyIiA/Ci0JCQkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotCQkJCQl2YXIgZWxlbSA9IHRoaXM7Ci0JCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0JCQkJCQkkKCBlbGVtICkuZm9jdXMoKTsKLQkJCQkJCWlmICggZm4gKSB7Ci0JCQkJCQkJZm4uY2FsbCggZWxlbSApOwotCQkJCQkJfQotCQkJCQl9LCBkZWxheSApOwotCQkJCX0pIDoKLQkJCQlvcmlnLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKLQkJfTsKLQl9KSggJC5mbi5mb2N1cyApLAotCi0Jc2Nyb2xsUGFyZW50OiBmdW5jdGlvbigpIHsKLQkJdmFyIHNjcm9sbFBhcmVudDsKLQkJaWYgKCgkLnVpLmllICYmICgvKHN0YXRpY3xyZWxhdGl2ZSkvKS50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKSkgfHwgKC9hYnNvbHV0ZS8pLnRlc3QodGhpcy5jc3MoInBvc2l0aW9uIikpKSB7Ci0JCQlzY3JvbGxQYXJlbnQgPSB0aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7Ci0JCQkJcmV0dXJuICgvKHJlbGF0aXZlfGFic29sdXRlfGZpeGVkKS8pLnRlc3QoJC5jc3ModGhpcywicG9zaXRpb24iKSkgJiYgKC8oYXV0b3xzY3JvbGwpLykudGVzdCgkLmNzcyh0aGlzLCJvdmVyZmxvdyIpKyQuY3NzKHRoaXMsIm92ZXJmbG93LXkiKSskLmNzcyh0aGlzLCJvdmVyZmxvdy14IikpOwotCQkJfSkuZXEoMCk7Ci0JCX0gZWxzZSB7Ci0JCQlzY3JvbGxQYXJlbnQgPSB0aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7Ci0JCQkJcmV0dXJuICgvKGF1dG98c2Nyb2xsKS8pLnRlc3QoJC5jc3ModGhpcywib3ZlcmZsb3ciKSskLmNzcyh0aGlzLCJvdmVyZmxvdy15IikrJC5jc3ModGhpcywib3ZlcmZsb3cteCIpKTsKLQkJCX0pLmVxKDApOwotCQl9Ci0KLQkJcmV0dXJuICgvZml4ZWQvKS50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKSB8fCAhc2Nyb2xsUGFyZW50Lmxlbmd0aCA/ICQoZG9jdW1lbnQpIDogc2Nyb2xsUGFyZW50OwotCX0sCi0KLQl6SW5kZXg6IGZ1bmN0aW9uKCB6SW5kZXggKSB7Ci0JCWlmICggekluZGV4ICE9PSB1bmRlZmluZWQgKSB7Ci0JCQlyZXR1cm4gdGhpcy5jc3MoICJ6SW5kZXgiLCB6SW5kZXggKTsKLQkJfQotCi0JCWlmICggdGhpcy5sZW5ndGggKSB7Ci0JCQl2YXIgZWxlbSA9ICQoIHRoaXNbIDAgXSApLCBwb3NpdGlvbiwgdmFsdWU7Ci0JCQl3aGlsZSAoIGVsZW0ubGVuZ3RoICYmIGVsZW1bIDAgXSAhPT0gZG9jdW1lbnQgKSB7Ci0JCQkJLy8gSWdub3JlIHotaW5kZXggaWYgcG9zaXRpb24gaXMgc2V0IHRvIGEgdmFsdWUgd2hlcmUgei1pbmRleCBpcyBpZ25vcmVkIGJ5IHRoZSBicm93c2VyCi0JCQkJLy8gVGhpcyBtYWtlcyBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGNvbnNpc3RlbnQgYWNyb3NzIGJyb3dzZXJzCi0JCQkJLy8gV2ViS2l0IGFsd2F5cyByZXR1cm5zIGF1dG8gaWYgdGhlIGVsZW1lbnQgaXMgcG9zaXRpb25lZAotCQkJCXBvc2l0aW9uID0gZWxlbS5jc3MoICJwb3NpdGlvbiIgKTsKLQkJCQlpZiAoIHBvc2l0aW9uID09PSAiYWJzb2x1dGUiIHx8IHBvc2l0aW9uID09PSAicmVsYXRpdmUiIHx8IHBvc2l0aW9uID09PSAiZml4ZWQiICkgewotCQkJCQkvLyBJRSByZXR1cm5zIDAgd2hlbiB6SW5kZXggaXMgbm90IHNwZWNpZmllZAotCQkJCQkvLyBvdGhlciBicm93c2VycyByZXR1cm4gYSBzdHJpbmcKLQkJCQkJLy8gd2UgaWdub3JlIHRoZSBjYXNlIG9mIG5lc3RlZCBlbGVtZW50cyB3aXRoIGFuIGV4cGxpY2l0IHZhbHVlIG9mIDAKLQkJCQkJLy8gPGRpdiBzdHlsZT0iei1pbmRleDogLTEwOyI+PGRpdiBzdHlsZT0iei1pbmRleDogMDsiPjwvZGl2PjwvZGl2PgotCQkJCQl2YWx1ZSA9IHBhcnNlSW50KCBlbGVtLmNzcyggInpJbmRleCIgKSwgMTAgKTsKLQkJCQkJaWYgKCAhaXNOYU4oIHZhbHVlICkgJiYgdmFsdWUgIT09IDAgKSB7Ci0JCQkJCQlyZXR1cm4gdmFsdWU7Ci0JCQkJCX0KLQkJCQl9Ci0JCQkJZWxlbSA9IGVsZW0ucGFyZW50KCk7Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gMDsKLQl9LAotCi0JdW5pcXVlSWQ6IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotCQkJaWYgKCAhdGhpcy5pZCApIHsKLQkJCQl0aGlzLmlkID0gInVpLWlkLSIgKyAoKyt1dWlkKTsKLQkJCX0KLQkJfSk7Ci0JfSwKLQotCXJlbW92ZVVuaXF1ZUlkOiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLQkJCWlmICggcnVuaXF1ZUlkLnRlc3QoIHRoaXMuaWQgKSApIHsKLQkJCQkkKCB0aGlzICkucmVtb3ZlQXR0ciggImlkIiApOwotCQkJfQotCQl9KTsKLQl9Ci19KTsKLQotLy8gc2VsZWN0b3JzCi1mdW5jdGlvbiBmb2N1c2FibGUoIGVsZW1lbnQsIGlzVGFiSW5kZXhOb3ROYU4gKSB7Ci0JdmFyIG1hcCwgbWFwTmFtZSwgaW1nLAotCQlub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKLQlpZiAoICJhcmVhIiA9PT0gbm9kZU5hbWUgKSB7Ci0JCW1hcCA9IGVsZW1lbnQucGFyZW50Tm9kZTsKLQkJbWFwTmFtZSA9IG1hcC5uYW1lOwotCQlpZiAoICFlbGVtZW50LmhyZWYgfHwgIW1hcE5hbWUgfHwgbWFwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICJtYXAiICkgewotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0JCWltZyA9ICQoICJpbWdbdXNlbWFwPSMiICsgbWFwTmFtZSArICJdIiApWzBdOwotCQlyZXR1cm4gISFpbWcgJiYgdmlzaWJsZSggaW1nICk7Ci0JfQotCXJldHVybiAoIC9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdC8udGVzdCggbm9kZU5hbWUgKSA/Ci0JCSFlbGVtZW50LmRpc2FibGVkIDoKLQkJImEiID09PSBub2RlTmFtZSA/Ci0JCQllbGVtZW50LmhyZWYgfHwgaXNUYWJJbmRleE5vdE5hTiA6Ci0JCQlpc1RhYkluZGV4Tm90TmFOKSAmJgotCQkvLyB0aGUgZWxlbWVudCBhbmQgYWxsIG9mIGl0cyBhbmNlc3RvcnMgbXVzdCBiZSB2aXNpYmxlCi0JCXZpc2libGUoIGVsZW1lbnQgKTsKLX0KLQotZnVuY3Rpb24gdmlzaWJsZSggZWxlbWVudCApIHsKLQlyZXR1cm4gJC5leHByLmZpbHRlcnMudmlzaWJsZSggZWxlbWVudCApICYmCi0JCSEkKCBlbGVtZW50ICkucGFyZW50cygpLmFkZEJhY2soKS5maWx0ZXIoZnVuY3Rpb24oKSB7Ci0JCQlyZXR1cm4gJC5jc3MoIHRoaXMsICJ2aXNpYmlsaXR5IiApID09PSAiaGlkZGVuIjsKLQkJfSkubGVuZ3RoOwotfQotCi0kLmV4dGVuZCggJC5leHByWyAiOiIgXSwgewotCWRhdGE6ICQuZXhwci5jcmVhdGVQc2V1ZG8gPwotCQkkLmV4cHIuY3JlYXRlUHNldWRvKGZ1bmN0aW9uKCBkYXRhTmFtZSApIHsKLQkJCXJldHVybiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCQlyZXR1cm4gISEkLmRhdGEoIGVsZW0sIGRhdGFOYW1lICk7Ci0JCQl9OwotCQl9KSA6Ci0JCS8vIHN1cHBvcnQ6IGpRdWVyeSA8MS44Ci0JCWZ1bmN0aW9uKCBlbGVtLCBpLCBtYXRjaCApIHsKLQkJCXJldHVybiAhISQuZGF0YSggZWxlbSwgbWF0Y2hbIDMgXSApOwotCQl9LAotCi0JZm9jdXNhYmxlOiBmdW5jdGlvbiggZWxlbWVudCApIHsKLQkJcmV0dXJuIGZvY3VzYWJsZSggZWxlbWVudCwgIWlzTmFOKCAkLmF0dHIoIGVsZW1lbnQsICJ0YWJpbmRleCIgKSApICk7Ci0JfSwKLQotCXRhYmJhYmxlOiBmdW5jdGlvbiggZWxlbWVudCApIHsKLQkJdmFyIHRhYkluZGV4ID0gJC5hdHRyKCBlbGVtZW50LCAidGFiaW5kZXgiICksCi0JCQlpc1RhYkluZGV4TmFOID0gaXNOYU4oIHRhYkluZGV4ICk7Ci0JCXJldHVybiAoIGlzVGFiSW5kZXhOYU4gfHwgdGFiSW5kZXggPj0gMCApICYmIGZvY3VzYWJsZSggZWxlbWVudCwgIWlzVGFiSW5kZXhOYU4gKTsKLQl9Ci19KTsKLQotLy8gc3VwcG9ydDogalF1ZXJ5IDwxLjgKLWlmICggISQoICI8YT4iICkub3V0ZXJXaWR0aCggMSApLmpxdWVyeSApIHsKLQkkLmVhY2goIFsgIldpZHRoIiwgIkhlaWdodCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7Ci0JCXZhciBzaWRlID0gbmFtZSA9PT0gIldpZHRoIiA/IFsgIkxlZnQiLCAiUmlnaHQiIF0gOiBbICJUb3AiLCAiQm90dG9tIiBdLAotCQkJdHlwZSA9IG5hbWUudG9Mb3dlckNhc2UoKSwKLQkJCW9yaWcgPSB7Ci0JCQkJaW5uZXJXaWR0aDogJC5mbi5pbm5lcldpZHRoLAotCQkJCWlubmVySGVpZ2h0OiAkLmZuLmlubmVySGVpZ2h0LAotCQkJCW91dGVyV2lkdGg6ICQuZm4ub3V0ZXJXaWR0aCwKLQkJCQlvdXRlckhlaWdodDogJC5mbi5vdXRlckhlaWdodAotCQkJfTsKLQotCQlmdW5jdGlvbiByZWR1Y2UoIGVsZW0sIHNpemUsIGJvcmRlciwgbWFyZ2luICkgewotCQkJJC5lYWNoKCBzaWRlLCBmdW5jdGlvbigpIHsKLQkJCQlzaXplIC09IHBhcnNlRmxvYXQoICQuY3NzKCBlbGVtLCAicGFkZGluZyIgKyB0aGlzICkgKSB8fCAwOwotCQkJCWlmICggYm9yZGVyICkgewotCQkJCQlzaXplIC09IHBhcnNlRmxvYXQoICQuY3NzKCBlbGVtLCAiYm9yZGVyIiArIHRoaXMgKyAiV2lkdGgiICkgKSB8fCAwOwotCQkJCX0KLQkJCQlpZiAoIG1hcmdpbiApIHsKLQkJCQkJc2l6ZSAtPSBwYXJzZUZsb2F0KCAkLmNzcyggZWxlbSwgIm1hcmdpbiIgKyB0aGlzICkgKSB8fCAwOwotCQkJCX0KLQkJCX0pOwotCQkJcmV0dXJuIHNpemU7Ci0JCX0KLQotCQkkLmZuWyAiaW5uZXIiICsgbmFtZSBdID0gZnVuY3Rpb24oIHNpemUgKSB7Ci0JCQlpZiAoIHNpemUgPT09IHVuZGVmaW5lZCApIHsKLQkJCQlyZXR1cm4gb3JpZ1sgImlubmVyIiArIG5hbWUgXS5jYWxsKCB0aGlzICk7Ci0JCQl9Ci0KLQkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQkJJCggdGhpcyApLmNzcyggdHlwZSwgcmVkdWNlKCB0aGlzLCBzaXplICkgKyAicHgiICk7Ci0JCQl9KTsKLQkJfTsKLQotCQkkLmZuWyAib3V0ZXIiICsgbmFtZV0gPSBmdW5jdGlvbiggc2l6ZSwgbWFyZ2luICkgewotCQkJaWYgKCB0eXBlb2Ygc2l6ZSAhPT0gIm51bWJlciIgKSB7Ci0JCQkJcmV0dXJuIG9yaWdbICJvdXRlciIgKyBuYW1lIF0uY2FsbCggdGhpcywgc2l6ZSApOwotCQkJfQotCi0JCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotCQkJCSQoIHRoaXMpLmNzcyggdHlwZSwgcmVkdWNlKCB0aGlzLCBzaXplLCB0cnVlLCBtYXJnaW4gKSArICJweCIgKTsKLQkJCX0pOwotCQl9OwotCX0pOwotfQotCi0vLyBzdXBwb3J0OiBqUXVlcnkgPDEuOAotaWYgKCAhJC5mbi5hZGRCYWNrICkgewotCSQuZm4uYWRkQmFjayA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLQkJcmV0dXJuIHRoaXMuYWRkKCBzZWxlY3RvciA9PSBudWxsID8KLQkJCXRoaXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoIHNlbGVjdG9yICkKLQkJKTsKLQl9OwotfQotCi0vLyBzdXBwb3J0OiBqUXVlcnkgMS42LjEsIDEuNi4yIChodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC85NDEzKQotaWYgKCAkKCAiPGE+IiApLmRhdGEoICJhLWIiLCAiYSIgKS5yZW1vdmVEYXRhKCAiYS1iIiApLmRhdGEoICJhLWIiICkgKSB7Ci0JJC5mbi5yZW1vdmVEYXRhID0gKGZ1bmN0aW9uKCByZW1vdmVEYXRhICkgewotCQlyZXR1cm4gZnVuY3Rpb24oIGtleSApIHsKLQkJCWlmICggYXJndW1lbnRzLmxlbmd0aCApIHsKLQkJCQlyZXR1cm4gcmVtb3ZlRGF0YS5jYWxsKCB0aGlzLCAkLmNhbWVsQ2FzZSgga2V5ICkgKTsKLQkJCX0gZWxzZSB7Ci0JCQkJcmV0dXJuIHJlbW92ZURhdGEuY2FsbCggdGhpcyApOwotCQkJfQotCQl9OwotCX0pKCAkLmZuLnJlbW92ZURhdGEgKTsKLX0KLQotCi0KLQotCi0vLyBkZXByZWNhdGVkCi0kLnVpLmllID0gISEvbXNpZSBbXHcuXSsvLmV4ZWMoIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSApOwotCi0kLnN1cHBvcnQuc2VsZWN0c3RhcnQgPSAib25zZWxlY3RzdGFydCIgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggImRpdiIgKTsKLSQuZm4uZXh0ZW5kKHsKLQlkaXNhYmxlU2VsZWN0aW9uOiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHRoaXMuYmluZCggKCAkLnN1cHBvcnQuc2VsZWN0c3RhcnQgPyAic2VsZWN0c3RhcnQiIDogIm1vdXNlZG93biIgKSArCi0JCQkiLnVpLWRpc2FibGVTZWxlY3Rpb24iLCBmdW5jdGlvbiggZXZlbnQgKSB7Ci0JCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKLQkJCX0pOwotCX0sCi0KLQllbmFibGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gdGhpcy51bmJpbmQoICIudWktZGlzYWJsZVNlbGVjdGlvbiIgKTsKLQl9Ci19KTsKLQotJC5leHRlbmQoICQudWksIHsKLQkvLyAkLnVpLnBsdWdpbiBpcyBkZXByZWNhdGVkLiAgVXNlIHRoZSBwcm94eSBwYXR0ZXJuIGluc3RlYWQuCi0JcGx1Z2luOiB7Ci0JCWFkZDogZnVuY3Rpb24oIG1vZHVsZSwgb3B0aW9uLCBzZXQgKSB7Ci0JCQl2YXIgaSwKLQkJCQlwcm90byA9ICQudWlbIG1vZHVsZSBdLnByb3RvdHlwZTsKLQkJCWZvciAoIGkgaW4gc2V0ICkgewotCQkJCXByb3RvLnBsdWdpbnNbIGkgXSA9IHByb3RvLnBsdWdpbnNbIGkgXSB8fCBbXTsKLQkJCQlwcm90by5wbHVnaW5zWyBpIF0ucHVzaCggWyBvcHRpb24sIHNldFsgaSBdIF0gKTsKLQkJCX0KLQkJfSwKLQkJY2FsbDogZnVuY3Rpb24oIGluc3RhbmNlLCBuYW1lLCBhcmdzICkgewotCQkJdmFyIGksCi0JCQkJc2V0ID0gaW5zdGFuY2UucGx1Z2luc1sgbmFtZSBdOwotCQkJaWYgKCAhc2V0IHx8ICFpbnN0YW5jZS5lbGVtZW50WyAwIF0ucGFyZW50Tm9kZSB8fCBpbnN0YW5jZS5lbGVtZW50WyAwIF0ucGFyZW50Tm9kZS5ub2RlVHlwZSA9PT0gMTEgKSB7Ci0JCQkJcmV0dXJuOwotCQkJfQotCi0JCQlmb3IgKCBpID0gMDsgaSA8IHNldC5sZW5ndGg7IGkrKyApIHsKLQkJCQlpZiAoIGluc3RhbmNlLm9wdGlvbnNbIHNldFsgaSBdWyAwIF0gXSApIHsKLQkJCQkJc2V0WyBpIF1bIDEgXS5hcHBseSggaW5zdGFuY2UuZWxlbWVudCwgYXJncyApOwotCQkJCX0KLQkJCX0KLQkJfQotCX0sCi0KLQkvLyBvbmx5IHVzZWQgYnkgcmVzaXphYmxlCi0JaGFzU2Nyb2xsOiBmdW5jdGlvbiggZWwsIGEgKSB7Ci0KLQkJLy9JZiBvdmVyZmxvdyBpcyBoaWRkZW4sIHRoZSBlbGVtZW50IG1pZ2h0IGhhdmUgZXh0cmEgY29udGVudCwgYnV0IHRoZSB1c2VyIHdhbnRzIHRvIGhpZGUgaXQKLQkJaWYgKCAkKCBlbCApLmNzcyggIm92ZXJmbG93IiApID09PSAiaGlkZGVuIikgewotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0KLQkJdmFyIHNjcm9sbCA9ICggYSAmJiBhID09PSAibGVmdCIgKSA/ICJzY3JvbGxMZWZ0IiA6ICJzY3JvbGxUb3AiLAotCQkJaGFzID0gZmFsc2U7Ci0KLQkJaWYgKCBlbFsgc2Nyb2xsIF0gPiAwICkgewotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvLyBUT0RPOiBkZXRlcm1pbmUgd2hpY2ggY2FzZXMgYWN0dWFsbHkgY2F1c2UgdGhpcyB0byBoYXBwZW4KLQkJLy8gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBoYXZlIHRoZSBzY3JvbGwgc2V0LCBzZWUgaWYgaXQncyBwb3NzaWJsZSB0bwotCQkvLyBzZXQgdGhlIHNjcm9sbAotCQllbFsgc2Nyb2xsIF0gPSAxOwotCQloYXMgPSAoIGVsWyBzY3JvbGwgXSA+IDAgKTsKLQkJZWxbIHNjcm9sbCBdID0gMDsKLQkJcmV0dXJuIGhhczsKLQl9Ci19KTsKLQotfSkoIGpRdWVyeSApOwotKGZ1bmN0aW9uKCAkLCB1bmRlZmluZWQgKSB7Ci0KLXZhciB1dWlkID0gMCwKLQlzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZSwKLQlfY2xlYW5EYXRhID0gJC5jbGVhbkRhdGE7Ci0kLmNsZWFuRGF0YSA9IGZ1bmN0aW9uKCBlbGVtcyApIHsKLQlmb3IgKCB2YXIgaSA9IDAsIGVsZW07IChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHsKLQkJdHJ5IHsKLQkJCSQoIGVsZW0gKS50cmlnZ2VySGFuZGxlciggInJlbW92ZSIgKTsKLQkJLy8gaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvODIzNQotCQl9IGNhdGNoKCBlICkge30KLQl9Ci0JX2NsZWFuRGF0YSggZWxlbXMgKTsKLX07Ci0KLSQud2lkZ2V0ID0gZnVuY3Rpb24oIG5hbWUsIGJhc2UsIHByb3RvdHlwZSApIHsKLQl2YXIgZnVsbE5hbWUsIGV4aXN0aW5nQ29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBiYXNlUHJvdG90eXBlLAotCQkvLyBwcm94aWVkUHJvdG90eXBlIGFsbG93cyB0aGUgcHJvdmlkZWQgcHJvdG90eXBlIHRvIHJlbWFpbiB1bm1vZGlmaWVkCi0JCS8vIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgYXMgYSBtaXhpbiBmb3IgbXVsdGlwbGUgd2lkZ2V0cyAoIzg4NzYpCi0JCXByb3hpZWRQcm90b3R5cGUgPSB7fSwKLQkJbmFtZXNwYWNlID0gbmFtZS5zcGxpdCggIi4iIClbIDAgXTsKLQotCW5hbWUgPSBuYW1lLnNwbGl0KCAiLiIgKVsgMSBdOwotCWZ1bGxOYW1lID0gbmFtZXNwYWNlICsgIi0iICsgbmFtZTsKLQotCWlmICggIXByb3RvdHlwZSApIHsKLQkJcHJvdG90eXBlID0gYmFzZTsKLQkJYmFzZSA9ICQuV2lkZ2V0OwotCX0KLQotCS8vIGNyZWF0ZSBzZWxlY3RvciBmb3IgcGx1Z2luCi0JJC5leHByWyAiOiIgXVsgZnVsbE5hbWUudG9Mb3dlckNhc2UoKSBdID0gZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCXJldHVybiAhISQuZGF0YSggZWxlbSwgZnVsbE5hbWUgKTsKLQl9OwotCi0JJFsgbmFtZXNwYWNlIF0gPSAkWyBuYW1lc3BhY2UgXSB8fCB7fTsKLQlleGlzdGluZ0NvbnN0cnVjdG9yID0gJFsgbmFtZXNwYWNlIF1bIG5hbWUgXTsKLQljb25zdHJ1Y3RvciA9ICRbIG5hbWVzcGFjZSBdWyBuYW1lIF0gPSBmdW5jdGlvbiggb3B0aW9ucywgZWxlbWVudCApIHsKLQkJLy8gYWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0ICJuZXciIGtleXdvcmQKLQkJaWYgKCAhdGhpcy5fY3JlYXRlV2lkZ2V0ICkgewotCQkJcmV0dXJuIG5ldyBjb25zdHJ1Y3Rvciggb3B0aW9ucywgZWxlbWVudCApOwotCQl9Ci0KLQkJLy8gYWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IGluaXRpYWxpemluZyBmb3Igc2ltcGxlIGluaGVyaXRhbmNlCi0JCS8vIG11c3QgdXNlICJuZXciIGtleXdvcmQgKHRoZSBjb2RlIGFib3ZlIGFsd2F5cyBwYXNzZXMgYXJncykKLQkJaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgewotCQkJdGhpcy5fY3JlYXRlV2lkZ2V0KCBvcHRpb25zLCBlbGVtZW50ICk7Ci0JCX0KLQl9OwotCS8vIGV4dGVuZCB3aXRoIHRoZSBleGlzdGluZyBjb25zdHJ1Y3RvciB0byBjYXJyeSBvdmVyIGFueSBzdGF0aWMgcHJvcGVydGllcwotCSQuZXh0ZW5kKCBjb25zdHJ1Y3RvciwgZXhpc3RpbmdDb25zdHJ1Y3RvciwgewotCQl2ZXJzaW9uOiBwcm90b3R5cGUudmVyc2lvbiwKLQkJLy8gY29weSB0aGUgb2JqZWN0IHVzZWQgdG8gY3JlYXRlIHRoZSBwcm90b3R5cGUgaW4gY2FzZSB3ZSBuZWVkIHRvCi0JCS8vIHJlZGVmaW5lIHRoZSB3aWRnZXQgbGF0ZXIKLQkJX3Byb3RvOiAkLmV4dGVuZCgge30sIHByb3RvdHlwZSApLAotCQkvLyB0cmFjayB3aWRnZXRzIHRoYXQgaW5oZXJpdCBmcm9tIHRoaXMgd2lkZ2V0IGluIGNhc2UgdGhpcyB3aWRnZXQgaXMKLQkJLy8gcmVkZWZpbmVkIGFmdGVyIGEgd2lkZ2V0IGluaGVyaXRzIGZyb20gaXQKLQkJX2NoaWxkQ29uc3RydWN0b3JzOiBbXQotCX0pOwotCi0JYmFzZVByb3RvdHlwZSA9IG5ldyBiYXNlKCk7Ci0JLy8gd2UgbmVlZCB0byBtYWtlIHRoZSBvcHRpb25zIGhhc2ggYSBwcm9wZXJ0eSBkaXJlY3RseSBvbiB0aGUgbmV3IGluc3RhbmNlCi0JLy8gb3RoZXJ3aXNlIHdlJ2xsIG1vZGlmeSB0aGUgb3B0aW9ucyBoYXNoIG9uIHRoZSBwcm90b3R5cGUgdGhhdCB3ZSdyZQotCS8vIGluaGVyaXRpbmcgZnJvbQotCWJhc2VQcm90b3R5cGUub3B0aW9ucyA9ICQud2lkZ2V0LmV4dGVuZCgge30sIGJhc2VQcm90b3R5cGUub3B0aW9ucyApOwotCSQuZWFjaCggcHJvdG90eXBlLCBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7Ci0JCWlmICggISQuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKLQkJCXByb3hpZWRQcm90b3R5cGVbIHByb3AgXSA9IHZhbHVlOwotCQkJcmV0dXJuOwotCQl9Ci0JCXByb3hpZWRQcm90b3R5cGVbIHByb3AgXSA9IChmdW5jdGlvbigpIHsKLQkJCXZhciBfc3VwZXIgPSBmdW5jdGlvbigpIHsKLQkJCQkJcmV0dXJuIGJhc2UucHJvdG90eXBlWyBwcm9wIF0uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwotCQkJCX0sCi0JCQkJX3N1cGVyQXBwbHkgPSBmdW5jdGlvbiggYXJncyApIHsKLQkJCQkJcmV0dXJuIGJhc2UucHJvdG90eXBlWyBwcm9wIF0uYXBwbHkoIHRoaXMsIGFyZ3MgKTsKLQkJCQl9OwotCQkJcmV0dXJuIGZ1bmN0aW9uKCkgewotCQkJCXZhciBfX3N1cGVyID0gdGhpcy5fc3VwZXIsCi0JCQkJCV9fc3VwZXJBcHBseSA9IHRoaXMuX3N1cGVyQXBwbHksCi0JCQkJCXJldHVyblZhbHVlOwotCi0JCQkJdGhpcy5fc3VwZXIgPSBfc3VwZXI7Ci0JCQkJdGhpcy5fc3VwZXJBcHBseSA9IF9zdXBlckFwcGx5OwotCi0JCQkJcmV0dXJuVmFsdWUgPSB2YWx1ZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7Ci0KLQkJCQl0aGlzLl9zdXBlciA9IF9fc3VwZXI7Ci0JCQkJdGhpcy5fc3VwZXJBcHBseSA9IF9fc3VwZXJBcHBseTsKLQotCQkJCXJldHVybiByZXR1cm5WYWx1ZTsKLQkJCX07Ci0JCX0pKCk7Ci0JfSk7Ci0JY29uc3RydWN0b3IucHJvdG90eXBlID0gJC53aWRnZXQuZXh0ZW5kKCBiYXNlUHJvdG90eXBlLCB7Ci0JCS8vIFRPRE86IHJlbW92ZSBzdXBwb3J0IGZvciB3aWRnZXRFdmVudFByZWZpeAotCQkvLyBhbHdheXMgdXNlIHRoZSBuYW1lICsgYSBjb2xvbiBhcyB0aGUgcHJlZml4LCBlLmcuLCBkcmFnZ2FibGU6c3RhcnQKLQkJLy8gZG9uJ3QgcHJlZml4IGZvciB3aWRnZXRzIHRoYXQgYXJlbid0IERPTS1iYXNlZAotCQl3aWRnZXRFdmVudFByZWZpeDogZXhpc3RpbmdDb25zdHJ1Y3RvciA/IGJhc2VQcm90b3R5cGUud2lkZ2V0RXZlbnRQcmVmaXggOiBuYW1lCi0JfSwgcHJveGllZFByb3RvdHlwZSwgewotCQljb25zdHJ1Y3RvcjogY29uc3RydWN0b3IsCi0JCW5hbWVzcGFjZTogbmFtZXNwYWNlLAotCQl3aWRnZXROYW1lOiBuYW1lLAotCQl3aWRnZXRGdWxsTmFtZTogZnVsbE5hbWUKLQl9KTsKLQotCS8vIElmIHRoaXMgd2lkZ2V0IGlzIGJlaW5nIHJlZGVmaW5lZCB0aGVuIHdlIG5lZWQgdG8gZmluZCBhbGwgd2lkZ2V0cyB0aGF0Ci0JLy8gYXJlIGluaGVyaXRpbmcgZnJvbSBpdCBhbmQgcmVkZWZpbmUgYWxsIG9mIHRoZW0gc28gdGhhdCB0aGV5IGluaGVyaXQgZnJvbQotCS8vIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGlzIHdpZGdldC4gV2UncmUgZXNzZW50aWFsbHkgdHJ5aW5nIHRvIHJlcGxhY2Ugb25lCi0JLy8gbGV2ZWwgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KLQlpZiAoIGV4aXN0aW5nQ29uc3RydWN0b3IgKSB7Ci0JCSQuZWFjaCggZXhpc3RpbmdDb25zdHJ1Y3Rvci5fY2hpbGRDb25zdHJ1Y3RvcnMsIGZ1bmN0aW9uKCBpLCBjaGlsZCApIHsKLQkJCXZhciBjaGlsZFByb3RvdHlwZSA9IGNoaWxkLnByb3RvdHlwZTsKLQotCQkJLy8gcmVkZWZpbmUgdGhlIGNoaWxkIHdpZGdldCB1c2luZyB0aGUgc2FtZSBwcm90b3R5cGUgdGhhdCB3YXMKLQkJCS8vIG9yaWdpbmFsbHkgdXNlZCwgYnV0IGluaGVyaXQgZnJvbSB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIGJhc2UKLQkJCSQud2lkZ2V0KCBjaGlsZFByb3RvdHlwZS5uYW1lc3BhY2UgKyAiLiIgKyBjaGlsZFByb3RvdHlwZS53aWRnZXROYW1lLCBjb25zdHJ1Y3RvciwgY2hpbGQuX3Byb3RvICk7Ci0JCX0pOwotCQkvLyByZW1vdmUgdGhlIGxpc3Qgb2YgZXhpc3RpbmcgY2hpbGQgY29uc3RydWN0b3JzIGZyb20gdGhlIG9sZCBjb25zdHJ1Y3RvcgotCQkvLyBzbyB0aGUgb2xkIGNoaWxkIGNvbnN0cnVjdG9ycyBjYW4gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQKLQkJZGVsZXRlIGV4aXN0aW5nQ29uc3RydWN0b3IuX2NoaWxkQ29uc3RydWN0b3JzOwotCX0gZWxzZSB7Ci0JCWJhc2UuX2NoaWxkQ29uc3RydWN0b3JzLnB1c2goIGNvbnN0cnVjdG9yICk7Ci0JfQotCi0JJC53aWRnZXQuYnJpZGdlKCBuYW1lLCBjb25zdHJ1Y3RvciApOwotfTsKLQotJC53aWRnZXQuZXh0ZW5kID0gZnVuY3Rpb24oIHRhcmdldCApIHsKLQl2YXIgaW5wdXQgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDEgKSwKLQkJaW5wdXRJbmRleCA9IDAsCi0JCWlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoLAotCQlrZXksCi0JCXZhbHVlOwotCWZvciAoIDsgaW5wdXRJbmRleCA8IGlucHV0TGVuZ3RoOyBpbnB1dEluZGV4KysgKSB7Ci0JCWZvciAoIGtleSBpbiBpbnB1dFsgaW5wdXRJbmRleCBdICkgewotCQkJdmFsdWUgPSBpbnB1dFsgaW5wdXRJbmRleCBdWyBrZXkgXTsKLQkJCWlmICggaW5wdXRbIGlucHV0SW5kZXggXS5oYXNPd25Qcm9wZXJ0eSgga2V5ICkgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKLQkJCQkvLyBDbG9uZSBvYmplY3RzCi0JCQkJaWYgKCAkLmlzUGxhaW5PYmplY3QoIHZhbHVlICkgKSB7Ci0JCQkJCXRhcmdldFsga2V5IF0gPSAkLmlzUGxhaW5PYmplY3QoIHRhcmdldFsga2V5IF0gKSA/Ci0JCQkJCQkkLndpZGdldC5leHRlbmQoIHt9LCB0YXJnZXRbIGtleSBdLCB2YWx1ZSApIDoKLQkJCQkJCS8vIERvbid0IGV4dGVuZCBzdHJpbmdzLCBhcnJheXMsIGV0Yy4gd2l0aCBvYmplY3RzCi0JCQkJCQkkLndpZGdldC5leHRlbmQoIHt9LCB2YWx1ZSApOwotCQkJCS8vIENvcHkgZXZlcnl0aGluZyBlbHNlIGJ5IHJlZmVyZW5jZQotCQkJCX0gZWxzZSB7Ci0JCQkJCXRhcmdldFsga2V5IF0gPSB2YWx1ZTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0JcmV0dXJuIHRhcmdldDsKLX07Ci0KLSQud2lkZ2V0LmJyaWRnZSA9IGZ1bmN0aW9uKCBuYW1lLCBvYmplY3QgKSB7Ci0JdmFyIGZ1bGxOYW1lID0gb2JqZWN0LnByb3RvdHlwZS53aWRnZXRGdWxsTmFtZSB8fCBuYW1lOwotCSQuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBvcHRpb25zICkgewotCQl2YXIgaXNNZXRob2RDYWxsID0gdHlwZW9mIG9wdGlvbnMgPT09ICJzdHJpbmciLAotCQkJYXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMSApLAotCQkJcmV0dXJuVmFsdWUgPSB0aGlzOwotCi0JCS8vIGFsbG93IG11bHRpcGxlIGhhc2hlcyB0byBiZSBwYXNzZWQgb24gaW5pdAotCQlvcHRpb25zID0gIWlzTWV0aG9kQ2FsbCAmJiBhcmdzLmxlbmd0aCA/Ci0JCQkkLndpZGdldC5leHRlbmQuYXBwbHkoIG51bGwsIFsgb3B0aW9ucyBdLmNvbmNhdChhcmdzKSApIDoKLQkJCW9wdGlvbnM7Ci0KLQkJaWYgKCBpc01ldGhvZENhbGwgKSB7Ci0JCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQkJdmFyIG1ldGhvZFZhbHVlLAotCQkJCQlpbnN0YW5jZSA9ICQuZGF0YSggdGhpcywgZnVsbE5hbWUgKTsKLQkJCQlpZiAoICFpbnN0YW5jZSApIHsKLQkJCQkJcmV0dXJuICQuZXJyb3IoICJjYW5ub3QgY2FsbCBtZXRob2RzIG9uICIgKyBuYW1lICsgIiBwcmlvciB0byBpbml0aWFsaXphdGlvbjsgIiArCi0JCQkJCQkiYXR0ZW1wdGVkIHRvIGNhbGwgbWV0aG9kICciICsgb3B0aW9ucyArICInIiApOwotCQkJCX0KLQkJCQlpZiAoICEkLmlzRnVuY3Rpb24oIGluc3RhbmNlW29wdGlvbnNdICkgfHwgb3B0aW9ucy5jaGFyQXQoIDAgKSA9PT0gIl8iICkgewotCQkJCQlyZXR1cm4gJC5lcnJvciggIm5vIHN1Y2ggbWV0aG9kICciICsgb3B0aW9ucyArICInIGZvciAiICsgbmFtZSArICIgd2lkZ2V0IGluc3RhbmNlIiApOwotCQkJCX0KLQkJCQltZXRob2RWYWx1ZSA9IGluc3RhbmNlWyBvcHRpb25zIF0uYXBwbHkoIGluc3RhbmNlLCBhcmdzICk7Ci0JCQkJaWYgKCBtZXRob2RWYWx1ZSAhPT0gaW5zdGFuY2UgJiYgbWV0aG9kVmFsdWUgIT09IHVuZGVmaW5lZCApIHsKLQkJCQkJcmV0dXJuVmFsdWUgPSBtZXRob2RWYWx1ZSAmJiBtZXRob2RWYWx1ZS5qcXVlcnkgPwotCQkJCQkJcmV0dXJuVmFsdWUucHVzaFN0YWNrKCBtZXRob2RWYWx1ZS5nZXQoKSApIDoKLQkJCQkJCW1ldGhvZFZhbHVlOwotCQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQkJfQotCQkJfSk7Ci0JCX0gZWxzZSB7Ci0JCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQkJdmFyIGluc3RhbmNlID0gJC5kYXRhKCB0aGlzLCBmdWxsTmFtZSApOwotCQkJCWlmICggaW5zdGFuY2UgKSB7Ci0JCQkJCWluc3RhbmNlLm9wdGlvbiggb3B0aW9ucyB8fCB7fSApLl9pbml0KCk7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJJC5kYXRhKCB0aGlzLCBmdWxsTmFtZSwgbmV3IG9iamVjdCggb3B0aW9ucywgdGhpcyApICk7Ci0JCQkJfQotCQkJfSk7Ci0JCX0KLQotCQlyZXR1cm4gcmV0dXJuVmFsdWU7Ci0JfTsKLX07Ci0KLSQuV2lkZ2V0ID0gZnVuY3Rpb24oIC8qIG9wdGlvbnMsIGVsZW1lbnQgKi8gKSB7fTsKLSQuV2lkZ2V0Ll9jaGlsZENvbnN0cnVjdG9ycyA9IFtdOwotCi0kLldpZGdldC5wcm90b3R5cGUgPSB7Ci0Jd2lkZ2V0TmFtZTogIndpZGdldCIsCi0Jd2lkZ2V0RXZlbnRQcmVmaXg6ICIiLAotCWRlZmF1bHRFbGVtZW50OiAiPGRpdj4iLAotCW9wdGlvbnM6IHsKLQkJZGlzYWJsZWQ6IGZhbHNlLAotCi0JCS8vIGNhbGxiYWNrcwotCQljcmVhdGU6IG51bGwKLQl9LAotCV9jcmVhdGVXaWRnZXQ6IGZ1bmN0aW9uKCBvcHRpb25zLCBlbGVtZW50ICkgewotCQllbGVtZW50ID0gJCggZWxlbWVudCB8fCB0aGlzLmRlZmF1bHRFbGVtZW50IHx8IHRoaXMgKVsgMCBdOwotCQl0aGlzLmVsZW1lbnQgPSAkKCBlbGVtZW50ICk7Ci0JCXRoaXMudXVpZCA9IHV1aWQrKzsKLQkJdGhpcy5ldmVudE5hbWVzcGFjZSA9ICIuIiArIHRoaXMud2lkZ2V0TmFtZSArIHRoaXMudXVpZDsKLQkJdGhpcy5vcHRpb25zID0gJC53aWRnZXQuZXh0ZW5kKCB7fSwKLQkJCXRoaXMub3B0aW9ucywKLQkJCXRoaXMuX2dldENyZWF0ZU9wdGlvbnMoKSwKLQkJCW9wdGlvbnMgKTsKLQotCQl0aGlzLmJpbmRpbmdzID0gJCgpOwotCQl0aGlzLmhvdmVyYWJsZSA9ICQoKTsKLQkJdGhpcy5mb2N1c2FibGUgPSAkKCk7Ci0KLQkJaWYgKCBlbGVtZW50ICE9PSB0aGlzICkgewotCQkJJC5kYXRhKCBlbGVtZW50LCB0aGlzLndpZGdldEZ1bGxOYW1lLCB0aGlzICk7Ci0JCQl0aGlzLl9vbiggdHJ1ZSwgdGhpcy5lbGVtZW50LCB7Ci0JCQkJcmVtb3ZlOiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0JCQkJCWlmICggZXZlbnQudGFyZ2V0ID09PSBlbGVtZW50ICkgewotCQkJCQkJdGhpcy5kZXN0cm95KCk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9KTsKLQkJCXRoaXMuZG9jdW1lbnQgPSAkKCBlbGVtZW50LnN0eWxlID8KLQkJCQkvLyBlbGVtZW50IHdpdGhpbiB0aGUgZG9jdW1lbnQKLQkJCQllbGVtZW50Lm93bmVyRG9jdW1lbnQgOgotCQkJCS8vIGVsZW1lbnQgaXMgd2luZG93IG9yIGRvY3VtZW50Ci0JCQkJZWxlbWVudC5kb2N1bWVudCB8fCBlbGVtZW50ICk7Ci0JCQl0aGlzLndpbmRvdyA9ICQoIHRoaXMuZG9jdW1lbnRbMF0uZGVmYXVsdFZpZXcgfHwgdGhpcy5kb2N1bWVudFswXS5wYXJlbnRXaW5kb3cgKTsKLQkJfQotCi0JCXRoaXMuX2NyZWF0ZSgpOwotCQl0aGlzLl90cmlnZ2VyKCAiY3JlYXRlIiwgbnVsbCwgdGhpcy5fZ2V0Q3JlYXRlRXZlbnREYXRhKCkgKTsKLQkJdGhpcy5faW5pdCgpOwotCX0sCi0JX2dldENyZWF0ZU9wdGlvbnM6ICQubm9vcCwKLQlfZ2V0Q3JlYXRlRXZlbnREYXRhOiAkLm5vb3AsCi0JX2NyZWF0ZTogJC5ub29wLAotCV9pbml0OiAkLm5vb3AsCi0KLQlkZXN0cm95OiBmdW5jdGlvbigpIHsKLQkJdGhpcy5fZGVzdHJveSgpOwotCQkvLyB3ZSBjYW4gcHJvYmFibHkgcmVtb3ZlIHRoZSB1bmJpbmQgY2FsbHMgaW4gMi4wCi0JCS8vIGFsbCBldmVudCBiaW5kaW5ncyBzaG91bGQgZ28gdGhyb3VnaCB0aGlzLl9vbigpCi0JCXRoaXMuZWxlbWVudAotCQkJLnVuYmluZCggdGhpcy5ldmVudE5hbWVzcGFjZSApCi0JCQkvLyAxLjkgQkMgZm9yICM3ODEwCi0JCQkvLyBUT0RPIHJlbW92ZSBkdWFsIHN0b3JhZ2UKLQkJCS5yZW1vdmVEYXRhKCB0aGlzLndpZGdldE5hbWUgKQotCQkJLnJlbW92ZURhdGEoIHRoaXMud2lkZ2V0RnVsbE5hbWUgKQotCQkJLy8gc3VwcG9ydDoganF1ZXJ5IDwxLjYuMwotCQkJLy8gaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvOTQxMwotCQkJLnJlbW92ZURhdGEoICQuY2FtZWxDYXNlKCB0aGlzLndpZGdldEZ1bGxOYW1lICkgKTsKLQkJdGhpcy53aWRnZXQoKQotCQkJLnVuYmluZCggdGhpcy5ldmVudE5hbWVzcGFjZSApCi0JCQkucmVtb3ZlQXR0ciggImFyaWEtZGlzYWJsZWQiICkKLQkJCS5yZW1vdmVDbGFzcygKLQkJCQl0aGlzLndpZGdldEZ1bGxOYW1lICsgIi1kaXNhYmxlZCAiICsKLQkJCQkidWktc3RhdGUtZGlzYWJsZWQiICk7Ci0KLQkJLy8gY2xlYW4gdXAgZXZlbnRzIGFuZCBzdGF0ZXMKLQkJdGhpcy5iaW5kaW5ncy51bmJpbmQoIHRoaXMuZXZlbnROYW1lc3BhY2UgKTsKLQkJdGhpcy5ob3ZlcmFibGUucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1ob3ZlciIgKTsKLQkJdGhpcy5mb2N1c2FibGUucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1mb2N1cyIgKTsKLQl9LAotCV9kZXN0cm95OiAkLm5vb3AsCi0KLQl3aWRnZXQ6IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gdGhpcy5lbGVtZW50OwotCX0sCi0KLQlvcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewotCQl2YXIgb3B0aW9ucyA9IGtleSwKLQkJCXBhcnRzLAotCQkJY3VyT3B0aW9uLAotCQkJaTsKLQotCQlpZiAoIGFyZ3VtZW50cy5sZW5ndGggPT09IDAgKSB7Ci0JCQkvLyBkb24ndCByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGludGVybmFsIGhhc2gKLQkJCXJldHVybiAkLndpZGdldC5leHRlbmQoIHt9LCB0aGlzLm9wdGlvbnMgKTsKLQkJfQotCi0JCWlmICggdHlwZW9mIGtleSA9PT0gInN0cmluZyIgKSB7Ci0JCQkvLyBoYW5kbGUgbmVzdGVkIGtleXMsIGUuZy4sICJmb28uYmFyIiA9PiB7IGZvbzogeyBiYXI6IF9fXyB9IH0KLQkJCW9wdGlvbnMgPSB7fTsKLQkJCXBhcnRzID0ga2V5LnNwbGl0KCAiLiIgKTsKLQkJCWtleSA9IHBhcnRzLnNoaWZ0KCk7Ci0JCQlpZiAoIHBhcnRzLmxlbmd0aCApIHsKLQkJCQljdXJPcHRpb24gPSBvcHRpb25zWyBrZXkgXSA9ICQud2lkZ2V0LmV4dGVuZCgge30sIHRoaXMub3B0aW9uc1sga2V5IF0gKTsKLQkJCQlmb3IgKCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aCAtIDE7IGkrKyApIHsKLQkJCQkJY3VyT3B0aW9uWyBwYXJ0c1sgaSBdIF0gPSBjdXJPcHRpb25bIHBhcnRzWyBpIF0gXSB8fCB7fTsKLQkJCQkJY3VyT3B0aW9uID0gY3VyT3B0aW9uWyBwYXJ0c1sgaSBdIF07Ci0JCQkJfQotCQkJCWtleSA9IHBhcnRzLnBvcCgpOwotCQkJCWlmICggdmFsdWUgPT09IHVuZGVmaW5lZCApIHsKLQkJCQkJcmV0dXJuIGN1ck9wdGlvblsga2V5IF0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjdXJPcHRpb25bIGtleSBdOwotCQkJCX0KLQkJCQljdXJPcHRpb25bIGtleSBdID0gdmFsdWU7Ci0JCQl9IGVsc2UgewotCQkJCWlmICggdmFsdWUgPT09IHVuZGVmaW5lZCApIHsKLQkJCQkJcmV0dXJuIHRoaXMub3B0aW9uc1sga2V5IF0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0aGlzLm9wdGlvbnNbIGtleSBdOwotCQkJCX0KLQkJCQlvcHRpb25zWyBrZXkgXSA9IHZhbHVlOwotCQkJfQotCQl9Ci0KLQkJdGhpcy5fc2V0T3B0aW9ucyggb3B0aW9ucyApOwotCi0JCXJldHVybiB0aGlzOwotCX0sCi0JX3NldE9wdGlvbnM6IGZ1bmN0aW9uKCBvcHRpb25zICkgewotCQl2YXIga2V5OwotCi0JCWZvciAoIGtleSBpbiBvcHRpb25zICkgewotCQkJdGhpcy5fc2V0T3B0aW9uKCBrZXksIG9wdGlvbnNbIGtleSBdICk7Ci0JCX0KLQotCQlyZXR1cm4gdGhpczsKLQl9LAotCV9zZXRPcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewotCQl0aGlzLm9wdGlvbnNbIGtleSBdID0gdmFsdWU7Ci0KLQkJaWYgKCBrZXkgPT09ICJkaXNhYmxlZCIgKSB7Ci0JCQl0aGlzLndpZGdldCgpCi0JCQkJLnRvZ2dsZUNsYXNzKCB0aGlzLndpZGdldEZ1bGxOYW1lICsgIi1kaXNhYmxlZCB1aS1zdGF0ZS1kaXNhYmxlZCIsICEhdmFsdWUgKQotCQkJCS5hdHRyKCAiYXJpYS1kaXNhYmxlZCIsIHZhbHVlICk7Ci0JCQl0aGlzLmhvdmVyYWJsZS5yZW1vdmVDbGFzcyggInVpLXN0YXRlLWhvdmVyIiApOwotCQkJdGhpcy5mb2N1c2FibGUucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1mb2N1cyIgKTsKLQkJfQotCi0JCXJldHVybiB0aGlzOwotCX0sCi0KLQllbmFibGU6IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gdGhpcy5fc2V0T3B0aW9uKCAiZGlzYWJsZWQiLCBmYWxzZSApOwotCX0sCi0JZGlzYWJsZTogZnVuY3Rpb24oKSB7Ci0JCXJldHVybiB0aGlzLl9zZXRPcHRpb24oICJkaXNhYmxlZCIsIHRydWUgKTsKLQl9LAotCi0JX29uOiBmdW5jdGlvbiggc3VwcHJlc3NEaXNhYmxlZENoZWNrLCBlbGVtZW50LCBoYW5kbGVycyApIHsKLQkJdmFyIGRlbGVnYXRlRWxlbWVudCwKLQkJCWluc3RhbmNlID0gdGhpczsKLQotCQkvLyBubyBzdXBwcmVzc0Rpc2FibGVkQ2hlY2sgZmxhZywgc2h1ZmZsZSBhcmd1bWVudHMKLQkJaWYgKCB0eXBlb2Ygc3VwcHJlc3NEaXNhYmxlZENoZWNrICE9PSAiYm9vbGVhbiIgKSB7Ci0JCQloYW5kbGVycyA9IGVsZW1lbnQ7Ci0JCQllbGVtZW50ID0gc3VwcHJlc3NEaXNhYmxlZENoZWNrOwotCQkJc3VwcHJlc3NEaXNhYmxlZENoZWNrID0gZmFsc2U7Ci0JCX0KLQotCQkvLyBubyBlbGVtZW50IGFyZ3VtZW50LCBzaHVmZmxlIGFuZCB1c2UgdGhpcy5lbGVtZW50Ci0JCWlmICggIWhhbmRsZXJzICkgewotCQkJaGFuZGxlcnMgPSBlbGVtZW50OwotCQkJZWxlbWVudCA9IHRoaXMuZWxlbWVudDsKLQkJCWRlbGVnYXRlRWxlbWVudCA9IHRoaXMud2lkZ2V0KCk7Ci0JCX0gZWxzZSB7Ci0JCQkvLyBhY2NlcHQgc2VsZWN0b3JzLCBET00gZWxlbWVudHMKLQkJCWVsZW1lbnQgPSBkZWxlZ2F0ZUVsZW1lbnQgPSAkKCBlbGVtZW50ICk7Ci0JCQl0aGlzLmJpbmRpbmdzID0gdGhpcy5iaW5kaW5ncy5hZGQoIGVsZW1lbnQgKTsKLQkJfQotCi0JCSQuZWFjaCggaGFuZGxlcnMsIGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlciApIHsKLQkJCWZ1bmN0aW9uIGhhbmRsZXJQcm94eSgpIHsKLQkJCQkvLyBhbGxvdyB3aWRnZXRzIHRvIGN1c3RvbWl6ZSB0aGUgZGlzYWJsZWQgaGFuZGxpbmcKLQkJCQkvLyAtIGRpc2FibGVkIGFzIGFuIGFycmF5IGluc3RlYWQgb2YgYm9vbGVhbgotCQkJCS8vIC0gZGlzYWJsZWQgY2xhc3MgYXMgbWV0aG9kIGZvciBkaXNhYmxpbmcgaW5kaXZpZHVhbCBwYXJ0cwotCQkJCWlmICggIXN1cHByZXNzRGlzYWJsZWRDaGVjayAmJgotCQkJCQkJKCBpbnN0YW5jZS5vcHRpb25zLmRpc2FibGVkID09PSB0cnVlIHx8Ci0JCQkJCQkJJCggdGhpcyApLmhhc0NsYXNzKCAidWktc3RhdGUtZGlzYWJsZWQiICkgKSApIHsKLQkJCQkJcmV0dXJuOwotCQkJCX0KLQkJCQlyZXR1cm4gKCB0eXBlb2YgaGFuZGxlciA9PT0gInN0cmluZyIgPyBpbnN0YW5jZVsgaGFuZGxlciBdIDogaGFuZGxlciApCi0JCQkJCS5hcHBseSggaW5zdGFuY2UsIGFyZ3VtZW50cyApOwotCQkJfQotCi0JCQkvLyBjb3B5IHRoZSBndWlkIHNvIGRpcmVjdCB1bmJpbmRpbmcgd29ya3MKLQkJCWlmICggdHlwZW9mIGhhbmRsZXIgIT09ICJzdHJpbmciICkgewotCQkJCWhhbmRsZXJQcm94eS5ndWlkID0gaGFuZGxlci5ndWlkID0KLQkJCQkJaGFuZGxlci5ndWlkIHx8IGhhbmRsZXJQcm94eS5ndWlkIHx8ICQuZ3VpZCsrOwotCQkJfQotCi0JCQl2YXIgbWF0Y2ggPSBldmVudC5tYXRjaCggL14oXHcrKVxzKiguKikkLyApLAotCQkJCWV2ZW50TmFtZSA9IG1hdGNoWzFdICsgaW5zdGFuY2UuZXZlbnROYW1lc3BhY2UsCi0JCQkJc2VsZWN0b3IgPSBtYXRjaFsyXTsKLQkJCWlmICggc2VsZWN0b3IgKSB7Ci0JCQkJZGVsZWdhdGVFbGVtZW50LmRlbGVnYXRlKCBzZWxlY3RvciwgZXZlbnROYW1lLCBoYW5kbGVyUHJveHkgKTsKLQkJCX0gZWxzZSB7Ci0JCQkJZWxlbWVudC5iaW5kKCBldmVudE5hbWUsIGhhbmRsZXJQcm94eSApOwotCQkJfQotCQl9KTsKLQl9LAotCi0JX29mZjogZnVuY3Rpb24oIGVsZW1lbnQsIGV2ZW50TmFtZSApIHsKLQkJZXZlbnROYW1lID0gKGV2ZW50TmFtZSB8fCAiIikuc3BsaXQoICIgIiApLmpvaW4oIHRoaXMuZXZlbnROYW1lc3BhY2UgKyAiICIgKSArIHRoaXMuZXZlbnROYW1lc3BhY2U7Ci0JCWVsZW1lbnQudW5iaW5kKCBldmVudE5hbWUgKS51bmRlbGVnYXRlKCBldmVudE5hbWUgKTsKLQl9LAotCi0JX2RlbGF5OiBmdW5jdGlvbiggaGFuZGxlciwgZGVsYXkgKSB7Ci0JCWZ1bmN0aW9uIGhhbmRsZXJQcm94eSgpIHsKLQkJCXJldHVybiAoIHR5cGVvZiBoYW5kbGVyID09PSAic3RyaW5nIiA/IGluc3RhbmNlWyBoYW5kbGVyIF0gOiBoYW5kbGVyICkKLQkJCQkuYXBwbHkoIGluc3RhbmNlLCBhcmd1bWVudHMgKTsKLQkJfQotCQl2YXIgaW5zdGFuY2UgPSB0aGlzOwotCQlyZXR1cm4gc2V0VGltZW91dCggaGFuZGxlclByb3h5LCBkZWxheSB8fCAwICk7Ci0JfSwKLQotCV9ob3ZlcmFibGU6IGZ1bmN0aW9uKCBlbGVtZW50ICkgewotCQl0aGlzLmhvdmVyYWJsZSA9IHRoaXMuaG92ZXJhYmxlLmFkZCggZWxlbWVudCApOwotCQl0aGlzLl9vbiggZWxlbWVudCwgewotCQkJbW91c2VlbnRlcjogZnVuY3Rpb24oIGV2ZW50ICkgewotCQkJCSQoIGV2ZW50LmN1cnJlbnRUYXJnZXQgKS5hZGRDbGFzcyggInVpLXN0YXRlLWhvdmVyIiApOwotCQkJfSwKLQkJCW1vdXNlbGVhdmU6IGZ1bmN0aW9uKCBldmVudCApIHsKLQkJCQkkKCBldmVudC5jdXJyZW50VGFyZ2V0ICkucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1ob3ZlciIgKTsKLQkJCX0KLQkJfSk7Ci0JfSwKLQotCV9mb2N1c2FibGU6IGZ1bmN0aW9uKCBlbGVtZW50ICkgewotCQl0aGlzLmZvY3VzYWJsZSA9IHRoaXMuZm9jdXNhYmxlLmFkZCggZWxlbWVudCApOwotCQl0aGlzLl9vbiggZWxlbWVudCwgewotCQkJZm9jdXNpbjogZnVuY3Rpb24oIGV2ZW50ICkgewotCQkJCSQoIGV2ZW50LmN1cnJlbnRUYXJnZXQgKS5hZGRDbGFzcyggInVpLXN0YXRlLWZvY3VzIiApOwotCQkJfSwKLQkJCWZvY3Vzb3V0OiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0JCQkJJCggZXZlbnQuY3VycmVudFRhcmdldCApLnJlbW92ZUNsYXNzKCAidWktc3RhdGUtZm9jdXMiICk7Ci0JCQl9Ci0JCX0pOwotCX0sCi0KLQlfdHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGV2ZW50LCBkYXRhICkgewotCQl2YXIgcHJvcCwgb3JpZywKLQkJCWNhbGxiYWNrID0gdGhpcy5vcHRpb25zWyB0eXBlIF07Ci0KLQkJZGF0YSA9IGRhdGEgfHwge307Ci0JCWV2ZW50ID0gJC5FdmVudCggZXZlbnQgKTsKLQkJZXZlbnQudHlwZSA9ICggdHlwZSA9PT0gdGhpcy53aWRnZXRFdmVudFByZWZpeCA/Ci0JCQl0eXBlIDoKLQkJCXRoaXMud2lkZ2V0RXZlbnRQcmVmaXggKyB0eXBlICkudG9Mb3dlckNhc2UoKTsKLQkJLy8gdGhlIG9yaWdpbmFsIGV2ZW50IG1heSBjb21lIGZyb20gYW55IGVsZW1lbnQKLQkJLy8gc28gd2UgbmVlZCB0byByZXNldCB0aGUgdGFyZ2V0IG9uIHRoZSBuZXcgZXZlbnQKLQkJZXZlbnQudGFyZ2V0ID0gdGhpcy5lbGVtZW50WyAwIF07Ci0KLQkJLy8gY29weSBvcmlnaW5hbCBldmVudCBwcm9wZXJ0aWVzIG92ZXIgdG8gdGhlIG5ldyBldmVudAotCQlvcmlnID0gZXZlbnQub3JpZ2luYWxFdmVudDsKLQkJaWYgKCBvcmlnICkgewotCQkJZm9yICggcHJvcCBpbiBvcmlnICkgewotCQkJCWlmICggISggcHJvcCBpbiBldmVudCApICkgewotCQkJCQlldmVudFsgcHJvcCBdID0gb3JpZ1sgcHJvcCBdOwotCQkJCX0KLQkJCX0KLQkJfQotCi0JCXRoaXMuZWxlbWVudC50cmlnZ2VyKCBldmVudCwgZGF0YSApOwotCQlyZXR1cm4gISggJC5pc0Z1bmN0aW9uKCBjYWxsYmFjayApICYmCi0JCQljYWxsYmFjay5hcHBseSggdGhpcy5lbGVtZW50WzBdLCBbIGV2ZW50IF0uY29uY2F0KCBkYXRhICkgKSA9PT0gZmFsc2UgfHwKLQkJCWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICk7Ci0JfQotfTsKLQotJC5lYWNoKCB7IHNob3c6ICJmYWRlSW4iLCBoaWRlOiAiZmFkZU91dCIgfSwgZnVuY3Rpb24oIG1ldGhvZCwgZGVmYXVsdEVmZmVjdCApIHsKLQkkLldpZGdldC5wcm90b3R5cGVbICJfIiArIG1ldGhvZCBdID0gZnVuY3Rpb24oIGVsZW1lbnQsIG9wdGlvbnMsIGNhbGxiYWNrICkgewotCQlpZiAoIHR5cGVvZiBvcHRpb25zID09PSAic3RyaW5nIiApIHsKLQkJCW9wdGlvbnMgPSB7IGVmZmVjdDogb3B0aW9ucyB9OwotCQl9Ci0JCXZhciBoYXNPcHRpb25zLAotCQkJZWZmZWN0TmFtZSA9ICFvcHRpb25zID8KLQkJCQltZXRob2QgOgotCQkJCW9wdGlvbnMgPT09IHRydWUgfHwgdHlwZW9mIG9wdGlvbnMgPT09ICJudW1iZXIiID8KLQkJCQkJZGVmYXVsdEVmZmVjdCA6Ci0JCQkJCW9wdGlvbnMuZWZmZWN0IHx8IGRlZmF1bHRFZmZlY3Q7Ci0JCW9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwotCQlpZiAoIHR5cGVvZiBvcHRpb25zID09PSAibnVtYmVyIiApIHsKLQkJCW9wdGlvbnMgPSB7IGR1cmF0aW9uOiBvcHRpb25zIH07Ci0JCX0KLQkJaGFzT3B0aW9ucyA9ICEkLmlzRW1wdHlPYmplY3QoIG9wdGlvbnMgKTsKLQkJb3B0aW9ucy5jb21wbGV0ZSA9IGNhbGxiYWNrOwotCQlpZiAoIG9wdGlvbnMuZGVsYXkgKSB7Ci0JCQllbGVtZW50LmRlbGF5KCBvcHRpb25zLmRlbGF5ICk7Ci0JCX0KLQkJaWYgKCBoYXNPcHRpb25zICYmICQuZWZmZWN0cyAmJiAkLmVmZmVjdHMuZWZmZWN0WyBlZmZlY3ROYW1lIF0gKSB7Ci0JCQllbGVtZW50WyBtZXRob2QgXSggb3B0aW9ucyApOwotCQl9IGVsc2UgaWYgKCBlZmZlY3ROYW1lICE9PSBtZXRob2QgJiYgZWxlbWVudFsgZWZmZWN0TmFtZSBdICkgewotCQkJZWxlbWVudFsgZWZmZWN0TmFtZSBdKCBvcHRpb25zLmR1cmF0aW9uLCBvcHRpb25zLmVhc2luZywgY2FsbGJhY2sgKTsKLQkJfSBlbHNlIHsKLQkJCWVsZW1lbnQucXVldWUoZnVuY3Rpb24oIG5leHQgKSB7Ci0JCQkJJCggdGhpcyApWyBtZXRob2QgXSgpOwotCQkJCWlmICggY2FsbGJhY2sgKSB7Ci0JCQkJCWNhbGxiYWNrLmNhbGwoIGVsZW1lbnRbIDAgXSApOwotCQkJCX0KLQkJCQluZXh0KCk7Ci0JCQl9KTsKLQkJfQotCX07Ci19KTsKLQotfSkoIGpRdWVyeSApOwotKGZ1bmN0aW9uKCAkLCB1bmRlZmluZWQgKSB7Ci0KLXZhciB0YWJJZCA9IDAsCi0Jcmhhc2ggPSAvIy4qJC87Ci0KLWZ1bmN0aW9uIGdldE5leHRUYWJJZCgpIHsKLQlyZXR1cm4gKyt0YWJJZDsKLX0KLQotZnVuY3Rpb24gaXNMb2NhbCggYW5jaG9yICkgewotCXJldHVybiBhbmNob3IuaGFzaC5sZW5ndGggPiAxICYmCi0JCWRlY29kZVVSSUNvbXBvbmVudCggYW5jaG9yLmhyZWYucmVwbGFjZSggcmhhc2gsICIiICkgKSA9PT0KLQkJCWRlY29kZVVSSUNvbXBvbmVudCggbG9jYXRpb24uaHJlZi5yZXBsYWNlKCByaGFzaCwgIiIgKSApOwotfQotCi0kLndpZGdldCggInVpLnRhYnMiLCB7Ci0JdmVyc2lvbjogIjEuMTAuMiIsCi0JZGVsYXk6IDMwMCwKLQlvcHRpb25zOiB7Ci0JCWFjdGl2ZTogbnVsbCwKLQkJY29sbGFwc2libGU6IGZhbHNlLAotCQlldmVudDogImNsaWNrIiwKLQkJaGVpZ2h0U3R5bGU6ICJjb250ZW50IiwKLQkJaGlkZTogbnVsbCwKLQkJc2hvdzogbnVsbCwKLQotCQkvLyBjYWxsYmFja3MKLQkJYWN0aXZhdGU6IG51bGwsCi0JCWJlZm9yZUFjdGl2YXRlOiBudWxsLAotCQliZWZvcmVMb2FkOiBudWxsLAotCQlsb2FkOiBudWxsCi0JfSwKLQotCV9jcmVhdGU6IGZ1bmN0aW9uKCkgewotCQl2YXIgdGhhdCA9IHRoaXMsCi0JCQlvcHRpb25zID0gdGhpcy5vcHRpb25zOwotCi0JCXRoaXMucnVubmluZyA9IGZhbHNlOwotCi0JCXRoaXMuZWxlbWVudAotCQkJLmFkZENsYXNzKCAidWktdGFicyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIgKQotCQkJLnRvZ2dsZUNsYXNzKCAidWktdGFicy1jb2xsYXBzaWJsZSIsIG9wdGlvbnMuY29sbGFwc2libGUgKQotCQkJLy8gUHJldmVudCB1c2VycyBmcm9tIGZvY3VzaW5nIGRpc2FibGVkIHRhYnMgdmlhIGNsaWNrCi0JCQkuZGVsZWdhdGUoICIudWktdGFicy1uYXYgPiBsaSIsICJtb3VzZWRvd24iICsgdGhpcy5ldmVudE5hbWVzcGFjZSwgZnVuY3Rpb24oIGV2ZW50ICkgewotCQkJCWlmICggJCggdGhpcyApLmlzKCAiLnVpLXN0YXRlLWRpc2FibGVkIiApICkgewotCQkJCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotCQkJCX0KLQkJCX0pCi0JCQkvLyBzdXBwb3J0OiBJRSA8OQotCQkJLy8gUHJldmVudGluZyB0aGUgZGVmYXVsdCBhY3Rpb24gaW4gbW91c2Vkb3duIGRvZXNuJ3QgcHJldmVudCBJRQotCQkJLy8gZnJvbSBmb2N1c2luZyB0aGUgZWxlbWVudCwgc28gaWYgdGhlIGFuY2hvciBnZXRzIGZvY3VzZWQsIGJsdXIuCi0JCQkvLyBXZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IGZvY3VzaW5nIHRoZSBwcmV2aW91c2x5IGZvY3VzZWQKLQkJCS8vIGVsZW1lbnQgc2luY2UgY2xpY2tpbmcgb24gYSBub24tZm9jdXNhYmxlIGVsZW1lbnQgc2hvdWxkIGZvY3VzCi0JCQkvLyB0aGUgYm9keSBhbnl3YXkuCi0JCQkuZGVsZWdhdGUoICIudWktdGFicy1hbmNob3IiLCAiZm9jdXMiICsgdGhpcy5ldmVudE5hbWVzcGFjZSwgZnVuY3Rpb24oKSB7Ci0JCQkJaWYgKCAkKCB0aGlzICkuY2xvc2VzdCggImxpIiApLmlzKCAiLnVpLXN0YXRlLWRpc2FibGVkIiApICkgewotCQkJCQl0aGlzLmJsdXIoKTsKLQkJCQl9Ci0JCQl9KTsKLQotCQl0aGlzLl9wcm9jZXNzVGFicygpOwotCQlvcHRpb25zLmFjdGl2ZSA9IHRoaXMuX2luaXRpYWxBY3RpdmUoKTsKLQotCQkvLyBUYWtlIGRpc2FibGluZyB0YWJzIHZpYSBjbGFzcyBhdHRyaWJ1dGUgZnJvbSBIVE1MCi0JCS8vIGludG8gYWNjb3VudCBhbmQgdXBkYXRlIG9wdGlvbiBwcm9wZXJseS4KLQkJaWYgKCAkLmlzQXJyYXkoIG9wdGlvbnMuZGlzYWJsZWQgKSApIHsKLQkJCW9wdGlvbnMuZGlzYWJsZWQgPSAkLnVuaXF1ZSggb3B0aW9ucy5kaXNhYmxlZC5jb25jYXQoCi0JCQkJJC5tYXAoIHRoaXMudGFicy5maWx0ZXIoICIudWktc3RhdGUtZGlzYWJsZWQiICksIGZ1bmN0aW9uKCBsaSApIHsKLQkJCQkJcmV0dXJuIHRoYXQudGFicy5pbmRleCggbGkgKTsKLQkJCQl9KQotCQkJKSApLnNvcnQoKTsKLQkJfQotCi0JCS8vIGNoZWNrIGZvciBsZW5ndGggYXZvaWRzIGVycm9yIHdoZW4gaW5pdGlhbGl6aW5nIGVtcHR5IGxpc3QKLQkJaWYgKCB0aGlzLm9wdGlvbnMuYWN0aXZlICE9PSBmYWxzZSAmJiB0aGlzLmFuY2hvcnMubGVuZ3RoICkgewotCQkJdGhpcy5hY3RpdmUgPSB0aGlzLl9maW5kQWN0aXZlKCBvcHRpb25zLmFjdGl2ZSApOwotCQl9IGVsc2UgewotCQkJdGhpcy5hY3RpdmUgPSAkKCk7Ci0JCX0KLQotCQl0aGlzLl9yZWZyZXNoKCk7Ci0KLQkJaWYgKCB0aGlzLmFjdGl2ZS5sZW5ndGggKSB7Ci0JCQl0aGlzLmxvYWQoIG9wdGlvbnMuYWN0aXZlICk7Ci0JCX0KLQl9LAotCi0JX2luaXRpYWxBY3RpdmU6IGZ1bmN0aW9uKCkgewotCQl2YXIgYWN0aXZlID0gdGhpcy5vcHRpb25zLmFjdGl2ZSwKLQkJCWNvbGxhcHNpYmxlID0gdGhpcy5vcHRpb25zLmNvbGxhcHNpYmxlLAotCQkJbG9jYXRpb25IYXNoID0gbG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoIDEgKTsKLQotCQlpZiAoIGFjdGl2ZSA9PT0gbnVsbCApIHsKLQkJCS8vIGNoZWNrIHRoZSBmcmFnbWVudCBpZGVudGlmaWVyIGluIHRoZSBVUkwKLQkJCWlmICggbG9jYXRpb25IYXNoICkgewotCQkJCXRoaXMudGFicy5lYWNoKGZ1bmN0aW9uKCBpLCB0YWIgKSB7Ci0JCQkJCWlmICggJCggdGFiICkuYXR0ciggImFyaWEtY29udHJvbHMiICkgPT09IGxvY2F0aW9uSGFzaCApIHsKLQkJCQkJCWFjdGl2ZSA9IGk7Ci0JCQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQkJCX0KLQkJCQl9KTsKLQkJCX0KLQotCQkJLy8gY2hlY2sgZm9yIGEgdGFiIG1hcmtlZCBhY3RpdmUgdmlhIGEgY2xhc3MKLQkJCWlmICggYWN0aXZlID09PSBudWxsICkgewotCQkJCWFjdGl2ZSA9IHRoaXMudGFicy5pbmRleCggdGhpcy50YWJzLmZpbHRlciggIi51aS10YWJzLWFjdGl2ZSIgKSApOwotCQkJfQotCi0JCQkvLyBubyBhY3RpdmUgdGFiLCBzZXQgdG8gZmFsc2UKLQkJCWlmICggYWN0aXZlID09PSBudWxsIHx8IGFjdGl2ZSA9PT0gLTEgKSB7Ci0JCQkJYWN0aXZlID0gdGhpcy50YWJzLmxlbmd0aCA/IDAgOiBmYWxzZTsKLQkJCX0KLQkJfQotCi0JCS8vIGhhbmRsZSBudW1iZXJzOiBuZWdhdGl2ZSwgb3V0IG9mIHJhbmdlCi0JCWlmICggYWN0aXZlICE9PSBmYWxzZSApIHsKLQkJCWFjdGl2ZSA9IHRoaXMudGFicy5pbmRleCggdGhpcy50YWJzLmVxKCBhY3RpdmUgKSApOwotCQkJaWYgKCBhY3RpdmUgPT09IC0xICkgewotCQkJCWFjdGl2ZSA9IGNvbGxhcHNpYmxlID8gZmFsc2UgOiAwOwotCQkJfQotCQl9Ci0KLQkJLy8gZG9uJ3QgYWxsb3cgY29sbGFwc2libGU6IGZhbHNlIGFuZCBhY3RpdmU6IGZhbHNlCi0JCWlmICggIWNvbGxhcHNpYmxlICYmIGFjdGl2ZSA9PT0gZmFsc2UgJiYgdGhpcy5hbmNob3JzLmxlbmd0aCApIHsKLQkJCWFjdGl2ZSA9IDA7Ci0JCX0KLQotCQlyZXR1cm4gYWN0aXZlOwotCX0sCi0KLQlfZ2V0Q3JlYXRlRXZlbnREYXRhOiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHsKLQkJCXRhYjogdGhpcy5hY3RpdmUsCi0JCQlwYW5lbDogIXRoaXMuYWN0aXZlLmxlbmd0aCA/ICQoKSA6IHRoaXMuX2dldFBhbmVsRm9yVGFiKCB0aGlzLmFjdGl2ZSApCi0JCX07Ci0JfSwKLQotCV90YWJLZXlkb3duOiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0JCS8qanNoaW50IG1heGNvbXBsZXhpdHk6MTUqLwotCQl2YXIgZm9jdXNlZFRhYiA9ICQoIHRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCApLmNsb3Nlc3QoICJsaSIgKSwKLQkJCXNlbGVjdGVkSW5kZXggPSB0aGlzLnRhYnMuaW5kZXgoIGZvY3VzZWRUYWIgKSwKLQkJCWdvaW5nRm9yd2FyZCA9IHRydWU7Ci0KLQkJaWYgKCB0aGlzLl9oYW5kbGVQYWdlTmF2KCBldmVudCApICkgewotCQkJcmV0dXJuOwotCQl9Ci0KLQkJc3dpdGNoICggZXZlbnQua2V5Q29kZSApIHsKLQkJCWNhc2UgJC51aS5rZXlDb2RlLlJJR0hUOgotCQkJY2FzZSAkLnVpLmtleUNvZGUuRE9XTjoKLQkJCQlzZWxlY3RlZEluZGV4Kys7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlICQudWkua2V5Q29kZS5VUDoKLQkJCWNhc2UgJC51aS5rZXlDb2RlLkxFRlQ6Ci0JCQkJZ29pbmdGb3J3YXJkID0gZmFsc2U7Ci0JCQkJc2VsZWN0ZWRJbmRleC0tOwotCQkJCWJyZWFrOwotCQkJY2FzZSAkLnVpLmtleUNvZGUuRU5EOgotCQkJCXNlbGVjdGVkSW5kZXggPSB0aGlzLmFuY2hvcnMubGVuZ3RoIC0gMTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJC51aS5rZXlDb2RlLkhPTUU6Ci0JCQkJc2VsZWN0ZWRJbmRleCA9IDA7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlICQudWkua2V5Q29kZS5TUEFDRToKLQkJCQkvLyBBY3RpdmF0ZSBvbmx5LCBubyBjb2xsYXBzaW5nCi0JCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKLQkJCQljbGVhclRpbWVvdXQoIHRoaXMuYWN0aXZhdGluZyApOwotCQkJCXRoaXMuX2FjdGl2YXRlKCBzZWxlY3RlZEluZGV4ICk7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSAkLnVpLmtleUNvZGUuRU5URVI6Ci0JCQkJLy8gVG9nZ2xlIChjYW5jZWwgZGVsYXllZCBhY3RpdmF0aW9uLCBhbGxvdyBjb2xsYXBzaW5nKQotCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0JCQkJY2xlYXJUaW1lb3V0KCB0aGlzLmFjdGl2YXRpbmcgKTsKLQkJCQkvLyBEZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIGNvbGxhcHNlIG9yIGFjdGl2YXRlCi0JCQkJdGhpcy5fYWN0aXZhdGUoIHNlbGVjdGVkSW5kZXggPT09IHRoaXMub3B0aW9ucy5hY3RpdmUgPyBmYWxzZSA6IHNlbGVjdGVkSW5kZXggKTsKLQkJCQlyZXR1cm47Ci0JCQlkZWZhdWx0OgotCQkJCXJldHVybjsKLQkJfQotCi0JCS8vIEZvY3VzIHRoZSBhcHByb3ByaWF0ZSB0YWIsIGJhc2VkIG9uIHdoaWNoIGtleSB3YXMgcHJlc3NlZAotCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotCQljbGVhclRpbWVvdXQoIHRoaXMuYWN0aXZhdGluZyApOwotCQlzZWxlY3RlZEluZGV4ID0gdGhpcy5fZm9jdXNOZXh0VGFiKCBzZWxlY3RlZEluZGV4LCBnb2luZ0ZvcndhcmQgKTsKLQotCQkvLyBOYXZpZ2F0aW5nIHdpdGggY29udHJvbCBrZXkgd2lsbCBwcmV2ZW50IGF1dG9tYXRpYyBhY3RpdmF0aW9uCi0JCWlmICggIWV2ZW50LmN0cmxLZXkgKSB7Ci0JCQkvLyBVcGRhdGUgYXJpYS1zZWxlY3RlZCBpbW1lZGlhdGVseSBzbyB0aGF0IEFUIHRoaW5rIHRoZSB0YWIgaXMgYWxyZWFkeSBzZWxlY3RlZC4KLQkJCS8vIE90aGVyd2lzZSBBVCBtYXkgY29uZnVzZSB0aGUgdXNlciBieSBzdGF0aW5nIHRoYXQgdGhleSBuZWVkIHRvIGFjdGl2YXRlIHRoZSB0YWIsCi0JCQkvLyBidXQgdGhlIHRhYiB3aWxsIGFscmVhZHkgYmUgYWN0aXZhdGVkIGJ5IHRoZSB0aW1lIHRoZSBhbm5vdW5jZW1lbnQgZmluaXNoZXMuCi0JCQlmb2N1c2VkVGFiLmF0dHIoICJhcmlhLXNlbGVjdGVkIiwgImZhbHNlIiApOwotCQkJdGhpcy50YWJzLmVxKCBzZWxlY3RlZEluZGV4ICkuYXR0ciggImFyaWEtc2VsZWN0ZWQiLCAidHJ1ZSIgKTsKLQotCQkJdGhpcy5hY3RpdmF0aW5nID0gdGhpcy5fZGVsYXkoZnVuY3Rpb24oKSB7Ci0JCQkJdGhpcy5vcHRpb24oICJhY3RpdmUiLCBzZWxlY3RlZEluZGV4ICk7Ci0JCQl9LCB0aGlzLmRlbGF5ICk7Ci0JCX0KLQl9LAotCi0JX3BhbmVsS2V5ZG93bjogZnVuY3Rpb24oIGV2ZW50ICkgewotCQlpZiAoIHRoaXMuX2hhbmRsZVBhZ2VOYXYoIGV2ZW50ICkgKSB7Ci0JCQlyZXR1cm47Ci0JCX0KLQotCQkvLyBDdHJsK3VwIG1vdmVzIGZvY3VzIHRvIHRoZSBjdXJyZW50IHRhYgotCQlpZiAoIGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQua2V5Q29kZSA9PT0gJC51aS5rZXlDb2RlLlVQICkgewotCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKLQkJCXRoaXMuYWN0aXZlLmZvY3VzKCk7Ci0JCX0KLQl9LAotCi0JLy8gQWx0K3BhZ2UgdXAvZG93biBtb3ZlcyBmb2N1cyB0byB0aGUgcHJldmlvdXMvbmV4dCB0YWIgKGFuZCBhY3RpdmF0ZXMpCi0JX2hhbmRsZVBhZ2VOYXY6IGZ1bmN0aW9uKCBldmVudCApIHsKLQkJaWYgKCBldmVudC5hbHRLZXkgJiYgZXZlbnQua2V5Q29kZSA9PT0gJC51aS5rZXlDb2RlLlBBR0VfVVAgKSB7Ci0JCQl0aGlzLl9hY3RpdmF0ZSggdGhpcy5fZm9jdXNOZXh0VGFiKCB0aGlzLm9wdGlvbnMuYWN0aXZlIC0gMSwgZmFsc2UgKSApOwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJaWYgKCBldmVudC5hbHRLZXkgJiYgZXZlbnQua2V5Q29kZSA9PT0gJC51aS5rZXlDb2RlLlBBR0VfRE9XTiApIHsKLQkJCXRoaXMuX2FjdGl2YXRlKCB0aGlzLl9mb2N1c05leHRUYWIoIHRoaXMub3B0aW9ucy5hY3RpdmUgKyAxLCB0cnVlICkgKTsKLQkJCXJldHVybiB0cnVlOwotCQl9Ci0JfSwKLQotCV9maW5kTmV4dFRhYjogZnVuY3Rpb24oIGluZGV4LCBnb2luZ0ZvcndhcmQgKSB7Ci0JCXZhciBsYXN0VGFiSW5kZXggPSB0aGlzLnRhYnMubGVuZ3RoIC0gMTsKLQotCQlmdW5jdGlvbiBjb25zdHJhaW4oKSB7Ci0JCQlpZiAoIGluZGV4ID4gbGFzdFRhYkluZGV4ICkgewotCQkJCWluZGV4ID0gMDsKLQkJCX0KLQkJCWlmICggaW5kZXggPCAwICkgewotCQkJCWluZGV4ID0gbGFzdFRhYkluZGV4OwotCQkJfQotCQkJcmV0dXJuIGluZGV4OwotCQl9Ci0KLQkJd2hpbGUgKCAkLmluQXJyYXkoIGNvbnN0cmFpbigpLCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgKSAhPT0gLTEgKSB7Ci0JCQlpbmRleCA9IGdvaW5nRm9yd2FyZCA/IGluZGV4ICsgMSA6IGluZGV4IC0gMTsKLQkJfQotCi0JCXJldHVybiBpbmRleDsKLQl9LAotCi0JX2ZvY3VzTmV4dFRhYjogZnVuY3Rpb24oIGluZGV4LCBnb2luZ0ZvcndhcmQgKSB7Ci0JCWluZGV4ID0gdGhpcy5fZmluZE5leHRUYWIoIGluZGV4LCBnb2luZ0ZvcndhcmQgKTsKLQkJdGhpcy50YWJzLmVxKCBpbmRleCApLmZvY3VzKCk7Ci0JCXJldHVybiBpbmRleDsKLQl9LAotCi0JX3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7Ci0JCWlmICgga2V5ID09PSAiYWN0aXZlIiApIHsKLQkJCS8vIF9hY3RpdmF0ZSgpIHdpbGwgaGFuZGxlIGludmFsaWQgdmFsdWVzIGFuZCB1cGRhdGUgdGhpcy5vcHRpb25zCi0JCQl0aGlzLl9hY3RpdmF0ZSggdmFsdWUgKTsKLQkJCXJldHVybjsKLQkJfQotCi0JCWlmICgga2V5ID09PSAiZGlzYWJsZWQiICkgewotCQkJLy8gZG9uJ3QgdXNlIHRoZSB3aWRnZXQgZmFjdG9yeSdzIGRpc2FibGVkIGhhbmRsaW5nCi0JCQl0aGlzLl9zZXR1cERpc2FibGVkKCB2YWx1ZSApOwotCQkJcmV0dXJuOwotCQl9Ci0KLQkJdGhpcy5fc3VwZXIoIGtleSwgdmFsdWUpOwotCi0JCWlmICgga2V5ID09PSAiY29sbGFwc2libGUiICkgewotCQkJdGhpcy5lbGVtZW50LnRvZ2dsZUNsYXNzKCAidWktdGFicy1jb2xsYXBzaWJsZSIsIHZhbHVlICk7Ci0JCQkvLyBTZXR0aW5nIGNvbGxhcHNpYmxlOiBmYWxzZSB3aGlsZSBjb2xsYXBzZWQ7IG9wZW4gZmlyc3QgcGFuZWwKLQkJCWlmICggIXZhbHVlICYmIHRoaXMub3B0aW9ucy5hY3RpdmUgPT09IGZhbHNlICkgewotCQkJCXRoaXMuX2FjdGl2YXRlKCAwICk7Ci0JCQl9Ci0JCX0KLQotCQlpZiAoIGtleSA9PT0gImV2ZW50IiApIHsKLQkJCXRoaXMuX3NldHVwRXZlbnRzKCB2YWx1ZSApOwotCQl9Ci0KLQkJaWYgKCBrZXkgPT09ICJoZWlnaHRTdHlsZSIgKSB7Ci0JCQl0aGlzLl9zZXR1cEhlaWdodFN0eWxlKCB2YWx1ZSApOwotCQl9Ci0JfSwKLQotCV90YWJJZDogZnVuY3Rpb24oIHRhYiApIHsKLQkJcmV0dXJuIHRhYi5hdHRyKCAiYXJpYS1jb250cm9scyIgKSB8fCAidWktdGFicy0iICsgZ2V0TmV4dFRhYklkKCk7Ci0JfSwKLQotCV9zYW5pdGl6ZVNlbGVjdG9yOiBmdW5jdGlvbiggaGFzaCApIHsKLQkJcmV0dXJuIGhhc2ggPyBoYXNoLnJlcGxhY2UoIC9bISIkJSYnKCkqKywuXC86Ozw9Pj9AXFtcXVxeYHt8fX5dL2csICJcXCQmIiApIDogIiI7Ci0JfSwKLQotCXJlZnJlc2g6IGZ1bmN0aW9uKCkgewotCQl2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucywKLQkJCWxpcyA9IHRoaXMudGFibGlzdC5jaGlsZHJlbiggIjpoYXMoYVtocmVmXSkiICk7Ci0KLQkJLy8gZ2V0IGRpc2FibGVkIHRhYnMgZnJvbSBjbGFzcyBhdHRyaWJ1dGUgZnJvbSBIVE1MCi0JCS8vIHRoaXMgd2lsbCBnZXQgY29udmVydGVkIHRvIGEgYm9vbGVhbiBpZiBuZWVkZWQgaW4gX3JlZnJlc2goKQotCQlvcHRpb25zLmRpc2FibGVkID0gJC5tYXAoIGxpcy5maWx0ZXIoICIudWktc3RhdGUtZGlzYWJsZWQiICksIGZ1bmN0aW9uKCB0YWIgKSB7Ci0JCQlyZXR1cm4gbGlzLmluZGV4KCB0YWIgKTsKLQkJfSk7Ci0KLQkJdGhpcy5fcHJvY2Vzc1RhYnMoKTsKLQotCQkvLyB3YXMgY29sbGFwc2VkIG9yIG5vIHRhYnMKLQkJaWYgKCBvcHRpb25zLmFjdGl2ZSA9PT0gZmFsc2UgfHwgIXRoaXMuYW5jaG9ycy5sZW5ndGggKSB7Ci0JCQlvcHRpb25zLmFjdGl2ZSA9IGZhbHNlOwotCQkJdGhpcy5hY3RpdmUgPSAkKCk7Ci0JCS8vIHdhcyBhY3RpdmUsIGJ1dCBhY3RpdmUgdGFiIGlzIGdvbmUKLQkJfSBlbHNlIGlmICggdGhpcy5hY3RpdmUubGVuZ3RoICYmICEkLmNvbnRhaW5zKCB0aGlzLnRhYmxpc3RbIDAgXSwgdGhpcy5hY3RpdmVbIDAgXSApICkgewotCQkJLy8gYWxsIHJlbWFpbmluZyB0YWJzIGFyZSBkaXNhYmxlZAotCQkJaWYgKCB0aGlzLnRhYnMubGVuZ3RoID09PSBvcHRpb25zLmRpc2FibGVkLmxlbmd0aCApIHsKLQkJCQlvcHRpb25zLmFjdGl2ZSA9IGZhbHNlOwotCQkJCXRoaXMuYWN0aXZlID0gJCgpOwotCQkJLy8gYWN0aXZhdGUgcHJldmlvdXMgdGFiCi0JCQl9IGVsc2UgewotCQkJCXRoaXMuX2FjdGl2YXRlKCB0aGlzLl9maW5kTmV4dFRhYiggTWF0aC5tYXgoIDAsIG9wdGlvbnMuYWN0aXZlIC0gMSApLCBmYWxzZSApICk7Ci0JCQl9Ci0JCS8vIHdhcyBhY3RpdmUsIGFjdGl2ZSB0YWIgc3RpbGwgZXhpc3RzCi0JCX0gZWxzZSB7Ci0JCQkvLyBtYWtlIHN1cmUgYWN0aXZlIGluZGV4IGlzIGNvcnJlY3QKLQkJCW9wdGlvbnMuYWN0aXZlID0gdGhpcy50YWJzLmluZGV4KCB0aGlzLmFjdGl2ZSApOwotCQl9Ci0KLQkJdGhpcy5fcmVmcmVzaCgpOwotCX0sCi0KLQlfcmVmcmVzaDogZnVuY3Rpb24oKSB7Ci0JCXRoaXMuX3NldHVwRGlzYWJsZWQoIHRoaXMub3B0aW9ucy5kaXNhYmxlZCApOwotCQl0aGlzLl9zZXR1cEV2ZW50cyggdGhpcy5vcHRpb25zLmV2ZW50ICk7Ci0JCXRoaXMuX3NldHVwSGVpZ2h0U3R5bGUoIHRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSApOwotCi0JCXRoaXMudGFicy5ub3QoIHRoaXMuYWN0aXZlICkuYXR0cih7Ci0JCQkiYXJpYS1zZWxlY3RlZCI6ICJmYWxzZSIsCi0JCQl0YWJJbmRleDogLTEKLQkJfSk7Ci0JCXRoaXMucGFuZWxzLm5vdCggdGhpcy5fZ2V0UGFuZWxGb3JUYWIoIHRoaXMuYWN0aXZlICkgKQotCQkJLmhpZGUoKQotCQkJLmF0dHIoewotCQkJCSJhcmlhLWV4cGFuZGVkIjogImZhbHNlIiwKLQkJCQkiYXJpYS1oaWRkZW4iOiAidHJ1ZSIKLQkJCX0pOwotCi0JCS8vIE1ha2Ugc3VyZSBvbmUgdGFiIGlzIGluIHRoZSB0YWIgb3JkZXIKLQkJaWYgKCAhdGhpcy5hY3RpdmUubGVuZ3RoICkgewotCQkJdGhpcy50YWJzLmVxKCAwICkuYXR0ciggInRhYkluZGV4IiwgMCApOwotCQl9IGVsc2UgewotCQkJdGhpcy5hY3RpdmUKLQkJCQkuYWRkQ2xhc3MoICJ1aS10YWJzLWFjdGl2ZSB1aS1zdGF0ZS1hY3RpdmUiICkKLQkJCQkuYXR0cih7Ci0JCQkJCSJhcmlhLXNlbGVjdGVkIjogInRydWUiLAotCQkJCQl0YWJJbmRleDogMAotCQkJCX0pOwotCQkJdGhpcy5fZ2V0UGFuZWxGb3JUYWIoIHRoaXMuYWN0aXZlICkKLQkJCQkuc2hvdygpCi0JCQkJLmF0dHIoewotCQkJCQkiYXJpYS1leHBhbmRlZCI6ICJ0cnVlIiwKLQkJCQkJImFyaWEtaGlkZGVuIjogImZhbHNlIgotCQkJCX0pOwotCQl9Ci0JfSwKLQotCV9wcm9jZXNzVGFiczogZnVuY3Rpb24oKSB7Ci0JCXZhciB0aGF0ID0gdGhpczsKLQotCQl0aGlzLnRhYmxpc3QgPSB0aGlzLl9nZXRMaXN0KCkKLQkJCS5hZGRDbGFzcyggInVpLXRhYnMtbmF2IHVpLWhlbHBlci1yZXNldCB1aS1oZWxwZXItY2xlYXJmaXggdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIiApCi0JCQkuYXR0ciggInJvbGUiLCAidGFibGlzdCIgKTsKLQotCQl0aGlzLnRhYnMgPSB0aGlzLnRhYmxpc3QuZmluZCggIj4gbGk6aGFzKGFbaHJlZl0pIiApCi0JCQkuYWRkQ2xhc3MoICJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3AiICkKLQkJCS5hdHRyKHsKLQkJCQlyb2xlOiAidGFiIiwKLQkJCQl0YWJJbmRleDogLTEKLQkJCX0pOwotCi0JCXRoaXMuYW5jaG9ycyA9IHRoaXMudGFicy5tYXAoZnVuY3Rpb24oKSB7Ci0JCQkJcmV0dXJuICQoICJhIiwgdGhpcyApWyAwIF07Ci0JCQl9KQotCQkJLmFkZENsYXNzKCAidWktdGFicy1hbmNob3IiICkKLQkJCS5hdHRyKHsKLQkJCQlyb2xlOiAicHJlc2VudGF0aW9uIiwKLQkJCQl0YWJJbmRleDogLTEKLQkJCX0pOwotCi0JCXRoaXMucGFuZWxzID0gJCgpOwotCi0JCXRoaXMuYW5jaG9ycy5lYWNoKGZ1bmN0aW9uKCBpLCBhbmNob3IgKSB7Ci0JCQl2YXIgc2VsZWN0b3IsIHBhbmVsLCBwYW5lbElkLAotCQkJCWFuY2hvcklkID0gJCggYW5jaG9yICkudW5pcXVlSWQoKS5hdHRyKCAiaWQiICksCi0JCQkJdGFiID0gJCggYW5jaG9yICkuY2xvc2VzdCggImxpIiApLAotCQkJCW9yaWdpbmFsQXJpYUNvbnRyb2xzID0gdGFiLmF0dHIoICJhcmlhLWNvbnRyb2xzIiApOwotCi0JCQkvLyBpbmxpbmUgdGFiCi0JCQlpZiAoIGlzTG9jYWwoIGFuY2hvciApICkgewotCQkJCXNlbGVjdG9yID0gYW5jaG9yLmhhc2g7Ci0JCQkJcGFuZWwgPSB0aGF0LmVsZW1lbnQuZmluZCggdGhhdC5fc2FuaXRpemVTZWxlY3Rvciggc2VsZWN0b3IgKSApOwotCQkJLy8gcmVtb3RlIHRhYgotCQkJfSBlbHNlIHsKLQkJCQlwYW5lbElkID0gdGhhdC5fdGFiSWQoIHRhYiApOwotCQkJCXNlbGVjdG9yID0gIiMiICsgcGFuZWxJZDsKLQkJCQlwYW5lbCA9IHRoYXQuZWxlbWVudC5maW5kKCBzZWxlY3RvciApOwotCQkJCWlmICggIXBhbmVsLmxlbmd0aCApIHsKLQkJCQkJcGFuZWwgPSB0aGF0Ll9jcmVhdGVQYW5lbCggcGFuZWxJZCApOwotCQkJCQlwYW5lbC5pbnNlcnRBZnRlciggdGhhdC5wYW5lbHNbIGkgLSAxIF0gfHwgdGhhdC50YWJsaXN0ICk7Ci0JCQkJfQotCQkJCXBhbmVsLmF0dHIoICJhcmlhLWxpdmUiLCAicG9saXRlIiApOwotCQkJfQotCi0JCQlpZiAoIHBhbmVsLmxlbmd0aCkgewotCQkJCXRoYXQucGFuZWxzID0gdGhhdC5wYW5lbHMuYWRkKCBwYW5lbCApOwotCQkJfQotCQkJaWYgKCBvcmlnaW5hbEFyaWFDb250cm9scyApIHsKLQkJCQl0YWIuZGF0YSggInVpLXRhYnMtYXJpYS1jb250cm9scyIsIG9yaWdpbmFsQXJpYUNvbnRyb2xzICk7Ci0JCQl9Ci0JCQl0YWIuYXR0cih7Ci0JCQkJImFyaWEtY29udHJvbHMiOiBzZWxlY3Rvci5zdWJzdHJpbmcoIDEgKSwKLQkJCQkiYXJpYS1sYWJlbGxlZGJ5IjogYW5jaG9ySWQKLQkJCX0pOwotCQkJcGFuZWwuYXR0ciggImFyaWEtbGFiZWxsZWRieSIsIGFuY2hvcklkICk7Ci0JCX0pOwotCi0JCXRoaXMucGFuZWxzCi0JCQkuYWRkQ2xhc3MoICJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iICkKLQkJCS5hdHRyKCAicm9sZSIsICJ0YWJwYW5lbCIgKTsKLQl9LAotCi0JLy8gYWxsb3cgb3ZlcnJpZGluZyBob3cgdG8gZmluZCB0aGUgbGlzdCBmb3IgcmFyZSB1c2FnZSBzY2VuYXJpb3MgKCM3NzE1KQotCV9nZXRMaXN0OiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHRoaXMuZWxlbWVudC5maW5kKCAib2wsdWwiICkuZXEoIDAgKTsKLQl9LAotCi0JX2NyZWF0ZVBhbmVsOiBmdW5jdGlvbiggaWQgKSB7Ci0JCXJldHVybiAkKCAiPGRpdj4iICkKLQkJCS5hdHRyKCAiaWQiLCBpZCApCi0JCQkuYWRkQ2xhc3MoICJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iICkKLQkJCS5kYXRhKCAidWktdGFicy1kZXN0cm95IiwgdHJ1ZSApOwotCX0sCi0KLQlfc2V0dXBEaXNhYmxlZDogZnVuY3Rpb24oIGRpc2FibGVkICkgewotCQlpZiAoICQuaXNBcnJheSggZGlzYWJsZWQgKSApIHsKLQkJCWlmICggIWRpc2FibGVkLmxlbmd0aCApIHsKLQkJCQlkaXNhYmxlZCA9IGZhbHNlOwotCQkJfSBlbHNlIGlmICggZGlzYWJsZWQubGVuZ3RoID09PSB0aGlzLmFuY2hvcnMubGVuZ3RoICkgewotCQkJCWRpc2FibGVkID0gdHJ1ZTsKLQkJCX0KLQkJfQotCi0JCS8vIGRpc2FibGUgdGFicwotCQlmb3IgKCB2YXIgaSA9IDAsIGxpOyAoIGxpID0gdGhpcy50YWJzWyBpIF0gKTsgaSsrICkgewotCQkJaWYgKCBkaXNhYmxlZCA9PT0gdHJ1ZSB8fCAkLmluQXJyYXkoIGksIGRpc2FibGVkICkgIT09IC0xICkgewotCQkJCSQoIGxpICkKLQkJCQkJLmFkZENsYXNzKCAidWktc3RhdGUtZGlzYWJsZWQiICkKLQkJCQkJLmF0dHIoICJhcmlhLWRpc2FibGVkIiwgInRydWUiICk7Ci0JCQl9IGVsc2UgewotCQkJCSQoIGxpICkKLQkJCQkJLnJlbW92ZUNsYXNzKCAidWktc3RhdGUtZGlzYWJsZWQiICkKLQkJCQkJLnJlbW92ZUF0dHIoICJhcmlhLWRpc2FibGVkIiApOwotCQkJfQotCQl9Ci0KLQkJdGhpcy5vcHRpb25zLmRpc2FibGVkID0gZGlzYWJsZWQ7Ci0JfSwKLQotCV9zZXR1cEV2ZW50czogZnVuY3Rpb24oIGV2ZW50ICkgewotCQl2YXIgZXZlbnRzID0gewotCQkJY2xpY2s6IGZ1bmN0aW9uKCBldmVudCApIHsKLQkJCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotCQkJfQotCQl9OwotCQlpZiAoIGV2ZW50ICkgewotCQkJJC5lYWNoKCBldmVudC5zcGxpdCgiICIpLCBmdW5jdGlvbiggaW5kZXgsIGV2ZW50TmFtZSApIHsKLQkJCQlldmVudHNbIGV2ZW50TmFtZSBdID0gIl9ldmVudEhhbmRsZXIiOwotCQkJfSk7Ci0JCX0KLQotCQl0aGlzLl9vZmYoIHRoaXMuYW5jaG9ycy5hZGQoIHRoaXMudGFicyApLmFkZCggdGhpcy5wYW5lbHMgKSApOwotCQl0aGlzLl9vbiggdGhpcy5hbmNob3JzLCBldmVudHMgKTsKLQkJdGhpcy5fb24oIHRoaXMudGFicywgeyBrZXlkb3duOiAiX3RhYktleWRvd24iIH0gKTsKLQkJdGhpcy5fb24oIHRoaXMucGFuZWxzLCB7IGtleWRvd246ICJfcGFuZWxLZXlkb3duIiB9ICk7Ci0KLQkJdGhpcy5fZm9jdXNhYmxlKCB0aGlzLnRhYnMgKTsKLQkJdGhpcy5faG92ZXJhYmxlKCB0aGlzLnRhYnMgKTsKLQl9LAotCi0JX3NldHVwSGVpZ2h0U3R5bGU6IGZ1bmN0aW9uKCBoZWlnaHRTdHlsZSApIHsKLQkJdmFyIG1heEhlaWdodCwKLQkJCXBhcmVudCA9IHRoaXMuZWxlbWVudC5wYXJlbnQoKTsKLQotCQlpZiAoIGhlaWdodFN0eWxlID09PSAiZmlsbCIgKSB7Ci0JCQltYXhIZWlnaHQgPSBwYXJlbnQuaGVpZ2h0KCk7Ci0JCQltYXhIZWlnaHQgLT0gdGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCkgLSB0aGlzLmVsZW1lbnQuaGVpZ2h0KCk7Ci0KLQkJCXRoaXMuZWxlbWVudC5zaWJsaW5ncyggIjp2aXNpYmxlIiApLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQkJdmFyIGVsZW0gPSAkKCB0aGlzICksCi0JCQkJCXBvc2l0aW9uID0gZWxlbS5jc3MoICJwb3NpdGlvbiIgKTsKLQotCQkJCWlmICggcG9zaXRpb24gPT09ICJhYnNvbHV0ZSIgfHwgcG9zaXRpb24gPT09ICJmaXhlZCIgKSB7Ci0JCQkJCXJldHVybjsKLQkJCQl9Ci0JCQkJbWF4SGVpZ2h0IC09IGVsZW0ub3V0ZXJIZWlnaHQoIHRydWUgKTsKLQkJCX0pOwotCi0JCQl0aGlzLmVsZW1lbnQuY2hpbGRyZW4oKS5ub3QoIHRoaXMucGFuZWxzICkuZWFjaChmdW5jdGlvbigpIHsKLQkJCQltYXhIZWlnaHQgLT0gJCggdGhpcyApLm91dGVySGVpZ2h0KCB0cnVlICk7Ci0JCQl9KTsKLQotCQkJdGhpcy5wYW5lbHMuZWFjaChmdW5jdGlvbigpIHsKLQkJCQkkKCB0aGlzICkuaGVpZ2h0KCBNYXRoLm1heCggMCwgbWF4SGVpZ2h0IC0KLQkJCQkJJCggdGhpcyApLmlubmVySGVpZ2h0KCkgKyAkKCB0aGlzICkuaGVpZ2h0KCkgKSApOwotCQkJfSkKLQkJCS5jc3MoICJvdmVyZmxvdyIsICJhdXRvIiApOwotCQl9IGVsc2UgaWYgKCBoZWlnaHRTdHlsZSA9PT0gImF1dG8iICkgewotCQkJbWF4SGVpZ2h0ID0gMDsKLQkJCXRoaXMucGFuZWxzLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQkJbWF4SGVpZ2h0ID0gTWF0aC5tYXgoIG1heEhlaWdodCwgJCggdGhpcyApLmhlaWdodCggIiIgKS5oZWlnaHQoKSApOwotCQkJfSkuaGVpZ2h0KCBtYXhIZWlnaHQgKTsKLQkJfQotCX0sCi0KLQlfZXZlbnRIYW5kbGVyOiBmdW5jdGlvbiggZXZlbnQgKSB7Ci0JCXZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zLAotCQkJYWN0aXZlID0gdGhpcy5hY3RpdmUsCi0JCQlhbmNob3IgPSAkKCBldmVudC5jdXJyZW50VGFyZ2V0ICksCi0JCQl0YWIgPSBhbmNob3IuY2xvc2VzdCggImxpIiApLAotCQkJY2xpY2tlZElzQWN0aXZlID0gdGFiWyAwIF0gPT09IGFjdGl2ZVsgMCBdLAotCQkJY29sbGFwc2luZyA9IGNsaWNrZWRJc0FjdGl2ZSAmJiBvcHRpb25zLmNvbGxhcHNpYmxlLAotCQkJdG9TaG93ID0gY29sbGFwc2luZyA/ICQoKSA6IHRoaXMuX2dldFBhbmVsRm9yVGFiKCB0YWIgKSwKLQkJCXRvSGlkZSA9ICFhY3RpdmUubGVuZ3RoID8gJCgpIDogdGhpcy5fZ2V0UGFuZWxGb3JUYWIoIGFjdGl2ZSApLAotCQkJZXZlbnREYXRhID0gewotCQkJCW9sZFRhYjogYWN0aXZlLAotCQkJCW9sZFBhbmVsOiB0b0hpZGUsCi0JCQkJbmV3VGFiOiBjb2xsYXBzaW5nID8gJCgpIDogdGFiLAotCQkJCW5ld1BhbmVsOiB0b1Nob3cKLQkJCX07Ci0KLQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKLQotCQlpZiAoIHRhYi5oYXNDbGFzcyggInVpLXN0YXRlLWRpc2FibGVkIiApIHx8Ci0JCQkJLy8gdGFiIGlzIGFscmVhZHkgbG9hZGluZwotCQkJCXRhYi5oYXNDbGFzcyggInVpLXRhYnMtbG9hZGluZyIgKSB8fAotCQkJCS8vIGNhbid0IHN3aXRjaCBkdXJuaW5nIGFuIGFuaW1hdGlvbgotCQkJCXRoaXMucnVubmluZyB8fAotCQkJCS8vIGNsaWNrIG9uIGFjdGl2ZSBoZWFkZXIsIGJ1dCBub3QgY29sbGFwc2libGUKLQkJCQkoIGNsaWNrZWRJc0FjdGl2ZSAmJiAhb3B0aW9ucy5jb2xsYXBzaWJsZSApIHx8Ci0JCQkJLy8gYWxsb3cgY2FuY2VsaW5nIGFjdGl2YXRpb24KLQkJCQkoIHRoaXMuX3RyaWdnZXIoICJiZWZvcmVBY3RpdmF0ZSIsIGV2ZW50LCBldmVudERhdGEgKSA9PT0gZmFsc2UgKSApIHsKLQkJCXJldHVybjsKLQkJfQotCi0JCW9wdGlvbnMuYWN0aXZlID0gY29sbGFwc2luZyA/IGZhbHNlIDogdGhpcy50YWJzLmluZGV4KCB0YWIgKTsKLQotCQl0aGlzLmFjdGl2ZSA9IGNsaWNrZWRJc0FjdGl2ZSA/ICQoKSA6IHRhYjsKLQkJaWYgKCB0aGlzLnhociApIHsKLQkJCXRoaXMueGhyLmFib3J0KCk7Ci0JCX0KLQotCQlpZiAoICF0b0hpZGUubGVuZ3RoICYmICF0b1Nob3cubGVuZ3RoICkgewotCQkJJC5lcnJvciggImpRdWVyeSBVSSBUYWJzOiBNaXNtYXRjaGluZyBmcmFnbWVudCBpZGVudGlmaWVyLiIgKTsKLQkJfQotCi0JCWlmICggdG9TaG93Lmxlbmd0aCApIHsKLQkJCXRoaXMubG9hZCggdGhpcy50YWJzLmluZGV4KCB0YWIgKSwgZXZlbnQgKTsKLQkJfQotCQl0aGlzLl90b2dnbGUoIGV2ZW50LCBldmVudERhdGEgKTsKLQl9LAotCi0JLy8gaGFuZGxlcyBzaG93L2hpZGUgZm9yIHNlbGVjdGluZyB0YWJzCi0JX3RvZ2dsZTogZnVuY3Rpb24oIGV2ZW50LCBldmVudERhdGEgKSB7Ci0JCXZhciB0aGF0ID0gdGhpcywKLQkJCXRvU2hvdyA9IGV2ZW50RGF0YS5uZXdQYW5lbCwKLQkJCXRvSGlkZSA9IGV2ZW50RGF0YS5vbGRQYW5lbDsKLQotCQl0aGlzLnJ1bm5pbmcgPSB0cnVlOwotCi0JCWZ1bmN0aW9uIGNvbXBsZXRlKCkgewotCQkJdGhhdC5ydW5uaW5nID0gZmFsc2U7Ci0JCQl0aGF0Ll90cmlnZ2VyKCAiYWN0aXZhdGUiLCBldmVudCwgZXZlbnREYXRhICk7Ci0JCX0KLQotCQlmdW5jdGlvbiBzaG93KCkgewotCQkJZXZlbnREYXRhLm5ld1RhYi5jbG9zZXN0KCAibGkiICkuYWRkQ2xhc3MoICJ1aS10YWJzLWFjdGl2ZSB1aS1zdGF0ZS1hY3RpdmUiICk7Ci0KLQkJCWlmICggdG9TaG93Lmxlbmd0aCAmJiB0aGF0Lm9wdGlvbnMuc2hvdyApIHsKLQkJCQl0aGF0Ll9zaG93KCB0b1Nob3csIHRoYXQub3B0aW9ucy5zaG93LCBjb21wbGV0ZSApOwotCQkJfSBlbHNlIHsKLQkJCQl0b1Nob3cuc2hvdygpOwotCQkJCWNvbXBsZXRlKCk7Ci0JCQl9Ci0JCX0KLQotCQkvLyBzdGFydCBvdXQgYnkgaGlkaW5nLCB0aGVuIHNob3dpbmcsIHRoZW4gY29tcGxldGluZwotCQlpZiAoIHRvSGlkZS5sZW5ndGggJiYgdGhpcy5vcHRpb25zLmhpZGUgKSB7Ci0JCQl0aGlzLl9oaWRlKCB0b0hpZGUsIHRoaXMub3B0aW9ucy5oaWRlLCBmdW5jdGlvbigpIHsKLQkJCQlldmVudERhdGEub2xkVGFiLmNsb3Nlc3QoICJsaSIgKS5yZW1vdmVDbGFzcyggInVpLXRhYnMtYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIgKTsKLQkJCQlzaG93KCk7Ci0JCQl9KTsKLQkJfSBlbHNlIHsKLQkJCWV2ZW50RGF0YS5vbGRUYWIuY2xvc2VzdCggImxpIiApLnJlbW92ZUNsYXNzKCAidWktdGFicy1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIiApOwotCQkJdG9IaWRlLmhpZGUoKTsKLQkJCXNob3coKTsKLQkJfQotCi0JCXRvSGlkZS5hdHRyKHsKLQkJCSJhcmlhLWV4cGFuZGVkIjogImZhbHNlIiwKLQkJCSJhcmlhLWhpZGRlbiI6ICJ0cnVlIgotCQl9KTsKLQkJZXZlbnREYXRhLm9sZFRhYi5hdHRyKCAiYXJpYS1zZWxlY3RlZCIsICJmYWxzZSIgKTsKLQkJLy8gSWYgd2UncmUgc3dpdGNoaW5nIHRhYnMsIHJlbW92ZSB0aGUgb2xkIHRhYiBmcm9tIHRoZSB0YWIgb3JkZXIuCi0JCS8vIElmIHdlJ3JlIG9wZW5pbmcgZnJvbSBjb2xsYXBzZWQgc3RhdGUsIHJlbW92ZSB0aGUgcHJldmlvdXMgdGFiIGZyb20gdGhlIHRhYiBvcmRlci4KLQkJLy8gSWYgd2UncmUgY29sbGFwc2luZywgdGhlbiBrZWVwIHRoZSBjb2xsYXBzaW5nIHRhYiBpbiB0aGUgdGFiIG9yZGVyLgotCQlpZiAoIHRvU2hvdy5sZW5ndGggJiYgdG9IaWRlLmxlbmd0aCApIHsKLQkJCWV2ZW50RGF0YS5vbGRUYWIuYXR0ciggInRhYkluZGV4IiwgLTEgKTsKLQkJfSBlbHNlIGlmICggdG9TaG93Lmxlbmd0aCApIHsKLQkJCXRoaXMudGFicy5maWx0ZXIoZnVuY3Rpb24oKSB7Ci0JCQkJcmV0dXJuICQoIHRoaXMgKS5hdHRyKCAidGFiSW5kZXgiICkgPT09IDA7Ci0JCQl9KQotCQkJLmF0dHIoICJ0YWJJbmRleCIsIC0xICk7Ci0JCX0KLQotCQl0b1Nob3cuYXR0cih7Ci0JCQkiYXJpYS1leHBhbmRlZCI6ICJ0cnVlIiwKLQkJCSJhcmlhLWhpZGRlbiI6ICJmYWxzZSIKLQkJfSk7Ci0JCWV2ZW50RGF0YS5uZXdUYWIuYXR0cih7Ci0JCQkiYXJpYS1zZWxlY3RlZCI6ICJ0cnVlIiwKLQkJCXRhYkluZGV4OiAwCi0JCX0pOwotCX0sCi0KLQlfYWN0aXZhdGU6IGZ1bmN0aW9uKCBpbmRleCApIHsKLQkJdmFyIGFuY2hvciwKLQkJCWFjdGl2ZSA9IHRoaXMuX2ZpbmRBY3RpdmUoIGluZGV4ICk7Ci0KLQkJLy8gdHJ5aW5nIHRvIGFjdGl2YXRlIHRoZSBhbHJlYWR5IGFjdGl2ZSBwYW5lbAotCQlpZiAoIGFjdGl2ZVsgMCBdID09PSB0aGlzLmFjdGl2ZVsgMCBdICkgewotCQkJcmV0dXJuOwotCQl9Ci0KLQkJLy8gdHJ5aW5nIHRvIGNvbGxhcHNlLCBzaW11bGF0ZSBhIGNsaWNrIG9uIHRoZSBjdXJyZW50IGFjdGl2ZSBoZWFkZXIKLQkJaWYgKCAhYWN0aXZlLmxlbmd0aCApIHsKLQkJCWFjdGl2ZSA9IHRoaXMuYWN0aXZlOwotCQl9Ci0KLQkJYW5jaG9yID0gYWN0aXZlLmZpbmQoICIudWktdGFicy1hbmNob3IiIClbIDAgXTsKLQkJdGhpcy5fZXZlbnRIYW5kbGVyKHsKLQkJCXRhcmdldDogYW5jaG9yLAotCQkJY3VycmVudFRhcmdldDogYW5jaG9yLAotCQkJcHJldmVudERlZmF1bHQ6ICQubm9vcAotCQl9KTsKLQl9LAotCi0JX2ZpbmRBY3RpdmU6IGZ1bmN0aW9uKCBpbmRleCApIHsKLQkJcmV0dXJuIGluZGV4ID09PSBmYWxzZSA/ICQoKSA6IHRoaXMudGFicy5lcSggaW5kZXggKTsKLQl9LAotCi0JX2dldEluZGV4OiBmdW5jdGlvbiggaW5kZXggKSB7Ci0JCS8vIG1ldGEtZnVuY3Rpb24gdG8gZ2l2ZSB1c2VycyBvcHRpb24gdG8gcHJvdmlkZSBhIGhyZWYgc3RyaW5nIGluc3RlYWQgb2YgYSBudW1lcmljYWwgaW5kZXguCi0JCWlmICggdHlwZW9mIGluZGV4ID09PSAic3RyaW5nIiApIHsKLQkJCWluZGV4ID0gdGhpcy5hbmNob3JzLmluZGV4KCB0aGlzLmFuY2hvcnMuZmlsdGVyKCAiW2hyZWYkPSciICsgaW5kZXggKyAiJ10iICkgKTsKLQkJfQotCi0JCXJldHVybiBpbmRleDsKLQl9LAotCi0JX2Rlc3Ryb3k6IGZ1bmN0aW9uKCkgewotCQlpZiAoIHRoaXMueGhyICkgewotCQkJdGhpcy54aHIuYWJvcnQoKTsKLQkJfQotCi0JCXRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyggInVpLXRhYnMgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktdGFicy1jb2xsYXBzaWJsZSIgKTsKLQotCQl0aGlzLnRhYmxpc3QKLQkJCS5yZW1vdmVDbGFzcyggInVpLXRhYnMtbmF2IHVpLWhlbHBlci1yZXNldCB1aS1oZWxwZXItY2xlYXJmaXggdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIiApCi0JCQkucmVtb3ZlQXR0ciggInJvbGUiICk7Ci0KLQkJdGhpcy5hbmNob3JzCi0JCQkucmVtb3ZlQ2xhc3MoICJ1aS10YWJzLWFuY2hvciIgKQotCQkJLnJlbW92ZUF0dHIoICJyb2xlIiApCi0JCQkucmVtb3ZlQXR0ciggInRhYkluZGV4IiApCi0JCQkucmVtb3ZlVW5pcXVlSWQoKTsKLQotCQl0aGlzLnRhYnMuYWRkKCB0aGlzLnBhbmVscyApLmVhY2goZnVuY3Rpb24oKSB7Ci0JCQlpZiAoICQuZGF0YSggdGhpcywgInVpLXRhYnMtZGVzdHJveSIgKSApIHsKLQkJCQkkKCB0aGlzICkucmVtb3ZlKCk7Ci0JCQl9IGVsc2UgewotCQkJCSQoIHRoaXMgKQotCQkJCQkucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1kZWZhdWx0IHVpLXN0YXRlLWFjdGl2ZSB1aS1zdGF0ZS1kaXNhYmxlZCAiICsKLQkJCQkJCSJ1aS1jb3JuZXItdG9wIHVpLWNvcm5lci1ib3R0b20gdWktd2lkZ2V0LWNvbnRlbnQgdWktdGFicy1hY3RpdmUgdWktdGFicy1wYW5lbCIgKQotCQkJCQkucmVtb3ZlQXR0ciggInRhYkluZGV4IiApCi0JCQkJCS5yZW1vdmVBdHRyKCAiYXJpYS1saXZlIiApCi0JCQkJCS5yZW1vdmVBdHRyKCAiYXJpYS1idXN5IiApCi0JCQkJCS5yZW1vdmVBdHRyKCAiYXJpYS1zZWxlY3RlZCIgKQotCQkJCQkucmVtb3ZlQXR0ciggImFyaWEtbGFiZWxsZWRieSIgKQotCQkJCQkucmVtb3ZlQXR0ciggImFyaWEtaGlkZGVuIiApCi0JCQkJCS5yZW1vdmVBdHRyKCAiYXJpYS1leHBhbmRlZCIgKQotCQkJCQkucmVtb3ZlQXR0ciggInJvbGUiICk7Ci0JCQl9Ci0JCX0pOwotCi0JCXRoaXMudGFicy5lYWNoKGZ1bmN0aW9uKCkgewotCQkJdmFyIGxpID0gJCggdGhpcyApLAotCQkJCXByZXYgPSBsaS5kYXRhKCAidWktdGFicy1hcmlhLWNvbnRyb2xzIiApOwotCQkJaWYgKCBwcmV2ICkgewotCQkJCWxpCi0JCQkJCS5hdHRyKCAiYXJpYS1jb250cm9scyIsIHByZXYgKQotCQkJCQkucmVtb3ZlRGF0YSggInVpLXRhYnMtYXJpYS1jb250cm9scyIgKTsKLQkJCX0gZWxzZSB7Ci0JCQkJbGkucmVtb3ZlQXR0ciggImFyaWEtY29udHJvbHMiICk7Ci0JCQl9Ci0JCX0pOwotCi0JCXRoaXMucGFuZWxzLnNob3coKTsKLQotCQlpZiAoIHRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSAhPT0gImNvbnRlbnQiICkgewotCQkJdGhpcy5wYW5lbHMuY3NzKCAiaGVpZ2h0IiwgIiIgKTsKLQkJfQotCX0sCi0KLQllbmFibGU6IGZ1bmN0aW9uKCBpbmRleCApIHsKLQkJdmFyIGRpc2FibGVkID0gdGhpcy5vcHRpb25zLmRpc2FibGVkOwotCQlpZiAoIGRpc2FibGVkID09PSBmYWxzZSApIHsKLQkJCXJldHVybjsKLQkJfQotCi0JCWlmICggaW5kZXggPT09IHVuZGVmaW5lZCApIHsKLQkJCWRpc2FibGVkID0gZmFsc2U7Ci0JCX0gZWxzZSB7Ci0JCQlpbmRleCA9IHRoaXMuX2dldEluZGV4KCBpbmRleCApOwotCQkJaWYgKCAkLmlzQXJyYXkoIGRpc2FibGVkICkgKSB7Ci0JCQkJZGlzYWJsZWQgPSAkLm1hcCggZGlzYWJsZWQsIGZ1bmN0aW9uKCBudW0gKSB7Ci0JCQkJCXJldHVybiBudW0gIT09IGluZGV4ID8gbnVtIDogbnVsbDsKLQkJCQl9KTsKLQkJCX0gZWxzZSB7Ci0JCQkJZGlzYWJsZWQgPSAkLm1hcCggdGhpcy50YWJzLCBmdW5jdGlvbiggbGksIG51bSApIHsKLQkJCQkJcmV0dXJuIG51bSAhPT0gaW5kZXggPyBudW0gOiBudWxsOwotCQkJCX0pOwotCQkJfQotCQl9Ci0JCXRoaXMuX3NldHVwRGlzYWJsZWQoIGRpc2FibGVkICk7Ci0JfSwKLQotCWRpc2FibGU6IGZ1bmN0aW9uKCBpbmRleCApIHsKLQkJdmFyIGRpc2FibGVkID0gdGhpcy5vcHRpb25zLmRpc2FibGVkOwotCQlpZiAoIGRpc2FibGVkID09PSB0cnVlICkgewotCQkJcmV0dXJuOwotCQl9Ci0KLQkJaWYgKCBpbmRleCA9PT0gdW5kZWZpbmVkICkgewotCQkJZGlzYWJsZWQgPSB0cnVlOwotCQl9IGVsc2UgewotCQkJaW5kZXggPSB0aGlzLl9nZXRJbmRleCggaW5kZXggKTsKLQkJCWlmICggJC5pbkFycmF5KCBpbmRleCwgZGlzYWJsZWQgKSAhPT0gLTEgKSB7Ci0JCQkJcmV0dXJuOwotCQkJfQotCQkJaWYgKCAkLmlzQXJyYXkoIGRpc2FibGVkICkgKSB7Ci0JCQkJZGlzYWJsZWQgPSAkLm1lcmdlKCBbIGluZGV4IF0sIGRpc2FibGVkICkuc29ydCgpOwotCQkJfSBlbHNlIHsKLQkJCQlkaXNhYmxlZCA9IFsgaW5kZXggXTsKLQkJCX0KLQkJfQotCQl0aGlzLl9zZXR1cERpc2FibGVkKCBkaXNhYmxlZCApOwotCX0sCi0KLQlsb2FkOiBmdW5jdGlvbiggaW5kZXgsIGV2ZW50ICkgewotCQlpbmRleCA9IHRoaXMuX2dldEluZGV4KCBpbmRleCApOwotCQl2YXIgdGhhdCA9IHRoaXMsCi0JCQl0YWIgPSB0aGlzLnRhYnMuZXEoIGluZGV4ICksCi0JCQlhbmNob3IgPSB0YWIuZmluZCggIi51aS10YWJzLWFuY2hvciIgKSwKLQkJCXBhbmVsID0gdGhpcy5fZ2V0UGFuZWxGb3JUYWIoIHRhYiApLAotCQkJZXZlbnREYXRhID0gewotCQkJCXRhYjogdGFiLAotCQkJCXBhbmVsOiBwYW5lbAotCQkJfTsKLQotCQkvLyBub3QgcmVtb3RlCi0JCWlmICggaXNMb2NhbCggYW5jaG9yWyAwIF0gKSApIHsKLQkJCXJldHVybjsKLQkJfQotCi0JCXRoaXMueGhyID0gJC5hamF4KCB0aGlzLl9hamF4U2V0dGluZ3MoIGFuY2hvciwgZXZlbnQsIGV2ZW50RGF0YSApICk7Ci0KLQkJLy8gc3VwcG9ydDogalF1ZXJ5IDwxLjgKLQkJLy8galF1ZXJ5IDwxLjggcmV0dXJucyBmYWxzZSBpZiB0aGUgcmVxdWVzdCBpcyBjYW5jZWxlZCBpbiBiZWZvcmVTZW5kLAotCQkvLyBidXQgYXMgb2YgMS44LCAkLmFqYXgoKSBhbHdheXMgcmV0dXJucyBhIGpxWEhSIG9iamVjdC4KLQkJaWYgKCB0aGlzLnhociAmJiB0aGlzLnhoci5zdGF0dXNUZXh0ICE9PSAiY2FuY2VsZWQiICkgewotCQkJdGFiLmFkZENsYXNzKCAidWktdGFicy1sb2FkaW5nIiApOwotCQkJcGFuZWwuYXR0ciggImFyaWEtYnVzeSIsICJ0cnVlIiApOwotCi0JCQl0aGlzLnhocgotCQkJCS5zdWNjZXNzKGZ1bmN0aW9uKCByZXNwb25zZSApIHsKLQkJCQkJLy8gc3VwcG9ydDogalF1ZXJ5IDwxLjgKLQkJCQkJLy8gaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTE3NzgKLQkJCQkJc2V0VGltZW91dChmdW5jdGlvbigpIHsKLQkJCQkJCXBhbmVsLmh0bWwoIHJlc3BvbnNlICk7Ci0JCQkJCQl0aGF0Ll90cmlnZ2VyKCAibG9hZCIsIGV2ZW50LCBldmVudERhdGEgKTsKLQkJCQkJfSwgMSApOwotCQkJCX0pCi0JCQkJLmNvbXBsZXRlKGZ1bmN0aW9uKCBqcVhIUiwgc3RhdHVzICkgewotCQkJCQkvLyBzdXBwb3J0OiBqUXVlcnkgPDEuOAotCQkJCQkvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMTc3OAotCQkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotCQkJCQkJaWYgKCBzdGF0dXMgPT09ICJhYm9ydCIgKSB7Ci0JCQkJCQkJdGhhdC5wYW5lbHMuc3RvcCggZmFsc2UsIHRydWUgKTsKLQkJCQkJCX0KLQotCQkJCQkJdGFiLnJlbW92ZUNsYXNzKCAidWktdGFicy1sb2FkaW5nIiApOwotCQkJCQkJcGFuZWwucmVtb3ZlQXR0ciggImFyaWEtYnVzeSIgKTsKLQotCQkJCQkJaWYgKCBqcVhIUiA9PT0gdGhhdC54aHIgKSB7Ci0JCQkJCQkJZGVsZXRlIHRoYXQueGhyOwotCQkJCQkJfQotCQkJCQl9LCAxICk7Ci0JCQkJfSk7Ci0JCX0KLQl9LAotCi0JX2FqYXhTZXR0aW5nczogZnVuY3Rpb24oIGFuY2hvciwgZXZlbnQsIGV2ZW50RGF0YSApIHsKLQkJdmFyIHRoYXQgPSB0aGlzOwotCQlyZXR1cm4gewotCQkJdXJsOiBhbmNob3IuYXR0ciggImhyZWYiICksCi0JCQliZWZvcmVTZW5kOiBmdW5jdGlvbigganFYSFIsIHNldHRpbmdzICkgewotCQkJCXJldHVybiB0aGF0Ll90cmlnZ2VyKCAiYmVmb3JlTG9hZCIsIGV2ZW50LAotCQkJCQkkLmV4dGVuZCggeyBqcVhIUiA6IGpxWEhSLCBhamF4U2V0dGluZ3M6IHNldHRpbmdzIH0sIGV2ZW50RGF0YSApICk7Ci0JCQl9Ci0JCX07Ci0JfSwKLQotCV9nZXRQYW5lbEZvclRhYjogZnVuY3Rpb24oIHRhYiApIHsKLQkJdmFyIGlkID0gJCggdGFiICkuYXR0ciggImFyaWEtY29udHJvbHMiICk7Ci0JCXJldHVybiB0aGlzLmVsZW1lbnQuZmluZCggdGhpcy5fc2FuaXRpemVTZWxlY3RvciggIiMiICsgaWQgKSApOwotCX0KLX0pOwotCi19KSggalF1ZXJ5ICk7CmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3N0YXRpYy9qcy90aGlyZHBhcnR5L2pxdWVyeS11aS0xLjEwLjIuY3VzdG9tLm1pbi5qcyBiL2NsaS9zZG5jb24vdWkvc3RhdGljL2pzL3RoaXJkcGFydHkvanF1ZXJ5LXVpLTEuMTAuMi5jdXN0b20ubWluLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhZjNlYzczLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2pzL3RoaXJkcGFydHkvanF1ZXJ5LXVpLTEuMTAuMi5jdXN0b20ubWluLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0vKiEgalF1ZXJ5IFVJIC0gdjEuMTAuMiAtIDIwMTMtMDQtMDUKLSogaHR0cDovL2pxdWVyeXVpLmNvbQotKiBJbmNsdWRlczoganF1ZXJ5LnVpLmNvcmUuanMsIGpxdWVyeS51aS53aWRnZXQuanMsIGpxdWVyeS51aS50YWJzLmpzCi0qIENvcHlyaWdodCAyMDEzIGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgTGljZW5zZWQgTUlUICovCi0KLShmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGkodCxpKXt2YXIgYSxuLHIsbz10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImFyZWEiPT09bz8oYT10LnBhcmVudE5vZGUsbj1hLm5hbWUsdC5ocmVmJiZuJiYibWFwIj09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT8ocj1lKCJpbWdbdXNlbWFwPSMiK24rIl0iKVswXSwhIXImJnMocikpOiExKTooL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0Ly50ZXN0KG8pPyF0LmRpc2FibGVkOiJhIj09PW8/dC5ocmVmfHxpOmkpJiZzKHQpfWZ1bmN0aW9uIHModCl7cmV0dXJuIGUuZXhwci5maWx0ZXJzLnZpc2libGUodCkmJiFlKHQpLnBhcmVudHMoKS5hZGRCYWNrKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuImhpZGRlbiI9PT1lLmNzcyh0aGlzLCJ2aXNpYmlsaXR5Iil9KS5sZW5ndGh9dmFyIGE9MCxuPS9edWktaWQtXGQrJC87ZS51aT1lLnVpfHx7fSxlLmV4dGVuZChlLnVpLHt2ZXJzaW9uOiIxLjEwLjIiLGtleUNvZGU6e0JBQ0tTUEFDRTo4LENPTU1BOjE4OCxERUxFVEU6NDYsRE9XTjo0MCxFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsTEVGVDozNyxOVU1QQURfQUREOjEwNyxOVU1QQURfREVDSU1BTDoxMTAsTlVNUEFEX0RJVklERToxMTEsTlVNUEFEX0VOVEVSOjEwOCxOVU1QQURfTVVMVElQTFk6MTA2LE5VTVBBRF9TVUJUUkFDVDoxMDksUEFHRV9ET1dOOjM0LFBBR0VfVVA6MzMsUEVSSU9EOjE5MCxSSUdIVDozOSxTUEFDRTozMixUQUI6OSxVUDozOH19KSxlLmZuLmV4dGVuZCh7Zm9jdXM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBpP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2UodCkuZm9jdXMoKSxzJiZzLmNhbGwodCl9LGkpfSk6dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fShlLmZuLmZvY3VzKSxzY3JvbGxQYXJlbnQ6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdD1lLnVpLmllJiYvKHN0YXRpY3xyZWxhdGl2ZSkvLnRlc3QodGhpcy5jc3MoInBvc2l0aW9uIikpfHwvYWJzb2x1dGUvLnRlc3QodGhpcy5jc3MoInBvc2l0aW9uIikpP3RoaXMucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybi8ocmVsYXRpdmV8YWJzb2x1dGV8Zml4ZWQpLy50ZXN0KGUuY3NzKHRoaXMsInBvc2l0aW9uIikpJiYvKGF1dG98c2Nyb2xsKS8udGVzdChlLmNzcyh0aGlzLCJvdmVyZmxvdyIpK2UuY3NzKHRoaXMsIm92ZXJmbG93LXkiKStlLmNzcyh0aGlzLCJvdmVyZmxvdy14IikpfSkuZXEoMCk6dGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuLyhhdXRvfHNjcm9sbCkvLnRlc3QoZS5jc3ModGhpcywib3ZlcmZsb3ciKStlLmNzcyh0aGlzLCJvdmVyZmxvdy15IikrZS5jc3ModGhpcywib3ZlcmZsb3cteCIpKX0pLmVxKDApLC9maXhlZC8udGVzdCh0aGlzLmNzcygicG9zaXRpb24iKSl8fCF0Lmxlbmd0aD9lKGRvY3VtZW50KTp0fSx6SW5kZXg6ZnVuY3Rpb24oaSl7aWYoaSE9PXQpcmV0dXJuIHRoaXMuY3NzKCJ6SW5kZXgiLGkpO2lmKHRoaXMubGVuZ3RoKWZvcih2YXIgcyxhLG49ZSh0aGlzWzBdKTtuLmxlbmd0aCYmblswXSE9PWRvY3VtZW50Oyl7aWYocz1uLmNzcygicG9zaXRpb24iKSwoImFic29sdXRlIj09PXN8fCJyZWxhdGl2ZSI9PT1zfHwiZml4ZWQiPT09cykmJihhPXBhcnNlSW50KG4uY3NzKCJ6SW5kZXgiKSwxMCksIWlzTmFOKGEpJiYwIT09YSkpcmV0dXJuIGE7bj1uLnBhcmVudCgpfXJldHVybiAwfSx1bmlxdWVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLmlkfHwodGhpcy5pZD0idWktaWQtIisgKythKX0pfSxyZW1vdmVVbmlxdWVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLnRlc3QodGhpcy5pZCkmJmUodGhpcykucmVtb3ZlQXR0cigiaWQiKX0pfX0pLGUuZXh0ZW5kKGUuZXhwclsiOiJdLHtkYXRhOmUuZXhwci5jcmVhdGVQc2V1ZG8/ZS5leHByLmNyZWF0ZVBzZXVkbyhmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuISFlLmRhdGEoaSx0KX19KTpmdW5jdGlvbih0LGkscyl7cmV0dXJuISFlLmRhdGEodCxzWzNdKX0sZm9jdXNhYmxlOmZ1bmN0aW9uKHQpe3JldHVybiBpKHQsIWlzTmFOKGUuYXR0cih0LCJ0YWJpbmRleCIpKSl9LHRhYmJhYmxlOmZ1bmN0aW9uKHQpe3ZhciBzPWUuYXR0cih0LCJ0YWJpbmRleCIpLGE9aXNOYU4ocyk7cmV0dXJuKGF8fHM+PTApJiZpKHQsIWEpfX0pLGUoIjxhPiIpLm91dGVyV2lkdGgoMSkuanF1ZXJ5fHxlLmVhY2goWyJXaWR0aCIsIkhlaWdodCJdLGZ1bmN0aW9uKGkscyl7ZnVuY3Rpb24gYSh0LGkscyxhKXtyZXR1cm4gZS5lYWNoKG4sZnVuY3Rpb24oKXtpLT1wYXJzZUZsb2F0KGUuY3NzKHQsInBhZGRpbmciK3RoaXMpKXx8MCxzJiYoaS09cGFyc2VGbG9hdChlLmNzcyh0LCJib3JkZXIiK3RoaXMrIldpZHRoIikpfHwwKSxhJiYoaS09cGFyc2VGbG9hdChlLmNzcyh0LCJtYXJnaW4iK3RoaXMpKXx8MCl9KSxpfXZhciBuPSJXaWR0aCI9PT1zP1siTGVmdCIsIlJpZ2h0Il06WyJUb3AiLCJCb3R0b20iXSxyPXMudG9Mb3dlckNhc2UoKSxvPXtpbm5lcldpZHRoOmUuZm4uaW5uZXJXaWR0aCxpbm5lckhlaWdodDplLmZuLmlubmVySGVpZ2h0LG91dGVyV2lkdGg6ZS5mbi5vdXRlcldpZHRoLG91dGVySGVpZ2h0OmUuZm4ub3V0ZXJIZWlnaHR9O2UuZm5bImlubmVyIitzXT1mdW5jdGlvbihpKXtyZXR1cm4gaT09PXQ/b1siaW5uZXIiK3NdLmNhbGwodGhpcyk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3MocixhKHRoaXMsaSkrInB4Iil9KX0sZS5mblsib3V0ZXIiK3NdPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiB0P29bIm91dGVyIitzXS5jYWxsKHRoaXMsdCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3MocixhKHRoaXMsdCwhMCxpKSsicHgiKX0pfX0pLGUuZm4uYWRkQmFja3x8KGUuZm4uYWRkQmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9KSxlKCI8YT4iKS5kYXRhKCJhLWIiLCJhIikucmVtb3ZlRGF0YSgiYS1iIikuZGF0YSgiYS1iIikmJihlLmZuLnJlbW92ZURhdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QuY2FsbCh0aGlzLGUuY2FtZWxDYXNlKGkpKTp0LmNhbGwodGhpcyl9fShlLmZuLnJlbW92ZURhdGEpKSxlLnVpLmllPSEhL21zaWUgW1x3Ll0rLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSksZS5zdXBwb3J0LnNlbGVjdHN0YXJ0PSJvbnNlbGVjdHN0YXJ0ImluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuZm4uZXh0ZW5kKHtkaXNhYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmluZCgoZS5zdXBwb3J0LnNlbGVjdHN0YXJ0PyJzZWxlY3RzdGFydCI6Im1vdXNlZG93biIpKyIudWktZGlzYWJsZVNlbGVjdGlvbiIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpfSl9LGVuYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuYmluZCgiLnVpLWRpc2FibGVTZWxlY3Rpb24iKX19KSxlLmV4dGVuZChlLnVpLHtwbHVnaW46e2FkZDpmdW5jdGlvbih0LGkscyl7dmFyIGEsbj1lLnVpW3RdLnByb3RvdHlwZTtmb3IoYSBpbiBzKW4ucGx1Z2luc1thXT1uLnBsdWdpbnNbYV18fFtdLG4ucGx1Z2luc1thXS5wdXNoKFtpLHNbYV1dKX0sY2FsbDpmdW5jdGlvbihlLHQsaSl7dmFyIHMsYT1lLnBsdWdpbnNbdF07aWYoYSYmZS5lbGVtZW50WzBdLnBhcmVudE5vZGUmJjExIT09ZS5lbGVtZW50WzBdLnBhcmVudE5vZGUubm9kZVR5cGUpZm9yKHM9MDthLmxlbmd0aD5zO3MrKyllLm9wdGlvbnNbYVtzXVswXV0mJmFbc11bMV0uYXBwbHkoZS5lbGVtZW50LGkpfX0saGFzU2Nyb2xsOmZ1bmN0aW9uKHQsaSl7aWYoImhpZGRlbiI9PT1lKHQpLmNzcygib3ZlcmZsb3ciKSlyZXR1cm4hMTt2YXIgcz1pJiYibGVmdCI9PT1pPyJzY3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIixhPSExO3JldHVybiB0W3NdPjA/ITA6KHRbc109MSxhPXRbc10+MCx0W3NdPTAsYSl9fSl9KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe3ZhciBpPTAscz1BcnJheS5wcm90b3R5cGUuc2xpY2Usbj1lLmNsZWFuRGF0YTtlLmNsZWFuRGF0YT1mdW5jdGlvbih0KXtmb3IodmFyIGkscz0wO251bGwhPShpPXRbc10pO3MrKyl0cnl7ZShpKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIil9Y2F0Y2goYSl7fW4odCl9LGUud2lkZ2V0PWZ1bmN0aW9uKGkscyxuKXt2YXIgYSxyLG8saCxsPXt9LHU9aS5zcGxpdCgiLiIpWzBdO2k9aS5zcGxpdCgiLiIpWzFdLGE9dSsiLSIraSxufHwobj1zLHM9ZS5XaWRnZXQpLGUuZXhwclsiOiJdW2EudG9Mb3dlckNhc2UoKV09ZnVuY3Rpb24odCl7cmV0dXJuISFlLmRhdGEodCxhKX0sZVt1XT1lW3VdfHx7fSxyPWVbdV1baV0sbz1lW3VdW2ldPWZ1bmN0aW9uKGUsaSl7cmV0dXJuIHRoaXMuX2NyZWF0ZVdpZGdldD8oYXJndW1lbnRzLmxlbmd0aCYmdGhpcy5fY3JlYXRlV2lkZ2V0KGUsaSksdCk6bmV3IG8oZSxpKX0sZS5leHRlbmQobyxyLHt2ZXJzaW9uOm4udmVyc2lvbixfcHJvdG86ZS5leHRlbmQoe30sbiksX2NoaWxkQ29uc3RydWN0b3JzOltdfSksaD1uZXcgcyxoLm9wdGlvbnM9ZS53aWRnZXQuZXh0ZW5kKHt9LGgub3B0aW9ucyksZS5lYWNoKG4sZnVuY3Rpb24oaSxuKXtyZXR1cm4gZS5pc0Z1bmN0aW9uKG4pPyhsW2ldPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm4gcy5wcm90b3R5cGVbaV0uYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0PWZ1bmN0aW9uKGUpe3JldHVybiBzLnByb3RvdHlwZVtpXS5hcHBseSh0aGlzLGUpfTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaSxzPXRoaXMuX3N1cGVyLGE9dGhpcy5fc3VwZXJBcHBseTtyZXR1cm4gdGhpcy5fc3VwZXI9ZSx0aGlzLl9zdXBlckFwcGx5PXQsaT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zdXBlcj1zLHRoaXMuX3N1cGVyQXBwbHk9YSxpfX0oKSx0KToobFtpXT1uLHQpfSksby5wcm90b3R5cGU9ZS53aWRnZXQuZXh0ZW5kKGgse3dpZGdldEV2ZW50UHJlZml4OnI/aC53aWRnZXRFdmVudFByZWZpeDppfSxsLHtjb25zdHJ1Y3RvcjpvLG5hbWVzcGFjZTp1LHdpZGdldE5hbWU6aSx3aWRnZXRGdWxsTmFtZTphfSkscj8oZS5lYWNoKHIuX2NoaWxkQ29uc3RydWN0b3JzLGZ1bmN0aW9uKHQsaSl7dmFyIHM9aS5wcm90b3R5cGU7ZS53aWRnZXQocy5uYW1lc3BhY2UrIi4iK3Mud2lkZ2V0TmFtZSxvLGkuX3Byb3RvKX0pLGRlbGV0ZSByLl9jaGlsZENvbnN0cnVjdG9ycyk6cy5fY2hpbGRDb25zdHJ1Y3RvcnMucHVzaChvKSxlLndpZGdldC5icmlkZ2UoaSxvKX0sZS53aWRnZXQuZXh0ZW5kPWZ1bmN0aW9uKGkpe2Zvcih2YXIgbixhLHI9cy5jYWxsKGFyZ3VtZW50cywxKSxvPTAsaD1yLmxlbmd0aDtoPm87bysrKWZvcihuIGluIHJbb10pYT1yW29dW25dLHJbb10uaGFzT3duUHJvcGVydHkobikmJmEhPT10JiYoaVtuXT1lLmlzUGxhaW5PYmplY3QoYSk/ZS5pc1BsYWluT2JqZWN0KGlbbl0pP2Uud2lkZ2V0LmV4dGVuZCh7fSxpW25dLGEpOmUud2lkZ2V0LmV4dGVuZCh7fSxhKTphKTtyZXR1cm4gaX0sZS53aWRnZXQuYnJpZGdlPWZ1bmN0aW9uKGksbil7dmFyIGE9bi5wcm90b3R5cGUud2lkZ2V0RnVsbE5hbWV8fGk7ZS5mbltpXT1mdW5jdGlvbihyKXt2YXIgbz0ic3RyaW5nIj09dHlwZW9mIHIsaD1zLmNhbGwoYXJndW1lbnRzLDEpLGw9dGhpcztyZXR1cm4gcj0hbyYmaC5sZW5ndGg/ZS53aWRnZXQuZXh0ZW5kLmFwcGx5KG51bGwsW3JdLmNvbmNhdChoKSk6cixvP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBzLG49ZS5kYXRhKHRoaXMsYSk7cmV0dXJuIG4/ZS5pc0Z1bmN0aW9uKG5bcl0pJiYiXyIhPT1yLmNoYXJBdCgwKT8ocz1uW3JdLmFwcGx5KG4saCkscyE9PW4mJnMhPT10PyhsPXMmJnMuanF1ZXJ5P2wucHVzaFN0YWNrKHMuZ2V0KCkpOnMsITEpOnQpOmUuZXJyb3IoIm5vIHN1Y2ggbWV0aG9kICciK3IrIicgZm9yICIraSsiIHdpZGdldCBpbnN0YW5jZSIpOmUuZXJyb3IoImNhbm5vdCBjYWxsIG1ldGhvZHMgb24gIitpKyIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247ICIrImF0dGVtcHRlZCB0byBjYWxsIG1ldGhvZCAnIityKyInIil9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lLmRhdGEodGhpcyxhKTt0P3Qub3B0aW9uKHJ8fHt9KS5faW5pdCgpOmUuZGF0YSh0aGlzLGEsbmV3IG4ocix0aGlzKSl9KSxsfX0sZS5XaWRnZXQ9ZnVuY3Rpb24oKXt9LGUuV2lkZ2V0Ll9jaGlsZENvbnN0cnVjdG9ycz1bXSxlLldpZGdldC5wcm90b3R5cGU9e3dpZGdldE5hbWU6IndpZGdldCIsd2lkZ2V0RXZlbnRQcmVmaXg6IiIsZGVmYXVsdEVsZW1lbnQ6IjxkaXY+IixvcHRpb25zOntkaXNhYmxlZDohMSxjcmVhdGU6bnVsbH0sX2NyZWF0ZVdpZGdldDpmdW5jdGlvbih0LHMpe3M9ZShzfHx0aGlzLmRlZmF1bHRFbGVtZW50fHx0aGlzKVswXSx0aGlzLmVsZW1lbnQ9ZShzKSx0aGlzLnV1aWQ9aSsrLHRoaXMuZXZlbnROYW1lc3BhY2U9Ii4iK3RoaXMud2lkZ2V0TmFtZSt0aGlzLnV1aWQsdGhpcy5vcHRpb25zPWUud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMsdGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLHQpLHRoaXMuYmluZGluZ3M9ZSgpLHRoaXMuaG92ZXJhYmxlPWUoKSx0aGlzLmZvY3VzYWJsZT1lKCkscyE9PXRoaXMmJihlLmRhdGEocyx0aGlzLndpZGdldEZ1bGxOYW1lLHRoaXMpLHRoaXMuX29uKCEwLHRoaXMuZWxlbWVudCx7cmVtb3ZlOmZ1bmN0aW9uKGUpe2UudGFyZ2V0PT09cyYmdGhpcy5kZXN0cm95KCl9fSksdGhpcy5kb2N1bWVudD1lKHMuc3R5bGU/cy5vd25lckRvY3VtZW50OnMuZG9jdW1lbnR8fHMpLHRoaXMud2luZG93PWUodGhpcy5kb2N1bWVudFswXS5kZWZhdWx0Vmlld3x8dGhpcy5kb2N1bWVudFswXS5wYXJlbnRXaW5kb3cpKSx0aGlzLl9jcmVhdGUoKSx0aGlzLl90cmlnZ2VyKCJjcmVhdGUiLG51bGwsdGhpcy5fZ2V0Q3JlYXRlRXZlbnREYXRhKCkpLHRoaXMuX2luaXQoKX0sX2dldENyZWF0ZU9wdGlvbnM6ZS5ub29wLF9nZXRDcmVhdGVFdmVudERhdGE6ZS5ub29wLF9jcmVhdGU6ZS5ub29wLF9pbml0OmUubm9vcCxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fZGVzdHJveSgpLHRoaXMuZWxlbWVudC51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlRGF0YSh0aGlzLndpZGdldE5hbWUpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSkucmVtb3ZlRGF0YShlLmNhbWVsQ2FzZSh0aGlzLndpZGdldEZ1bGxOYW1lKSksdGhpcy53aWRnZXQoKS51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0RnVsbE5hbWUrIi1kaXNhYmxlZCAiKyJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuYmluZGluZ3MudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxfZGVzdHJveTplLm5vb3Asd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKGkscyl7dmFyIG4sYSxyLG89aTtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYoInN0cmluZyI9PXR5cGVvZiBpKWlmKG89e30sbj1pLnNwbGl0KCIuIiksaT1uLnNoaWZ0KCksbi5sZW5ndGgpe2ZvcihhPW9baV09ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1tpXSkscj0wO24ubGVuZ3RoLTE+cjtyKyspYVtuW3JdXT1hW25bcl1dfHx7fSxhPWFbbltyXV07aWYoaT1uLnBvcCgpLHM9PT10KXJldHVybiBhW2ldPT09dD9udWxsOmFbaV07YVtpXT1zfWVsc2V7aWYocz09PXQpcmV0dXJuIHRoaXMub3B0aW9uc1tpXT09PXQ/bnVsbDp0aGlzLm9wdGlvbnNbaV07b1tpXT1zfXJldHVybiB0aGlzLl9zZXRPcHRpb25zKG8pLHRoaXN9LF9zZXRPcHRpb25zOmZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpdGhpcy5fc2V0T3B0aW9uKHQsZVt0XSk7cmV0dXJuIHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5vcHRpb25zW2VdPXQsImRpc2FibGVkIj09PWUmJih0aGlzLndpZGdldCgpLnRvZ2dsZUNsYXNzKHRoaXMud2lkZ2V0RnVsbE5hbWUrIi1kaXNhYmxlZCB1aS1zdGF0ZS1kaXNhYmxlZCIsISF0KS5hdHRyKCJhcmlhLWRpc2FibGVkIix0KSx0aGlzLmhvdmVyYWJsZS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKSx0aGlzLmZvY3VzYWJsZS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKSksdGhpc30sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbigiZGlzYWJsZWQiLCExKX0sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIiwhMCl9LF9vbjpmdW5jdGlvbihpLHMsbil7dmFyIGEscj10aGlzOyJib29sZWFuIiE9dHlwZW9mIGkmJihuPXMscz1pLGk9ITEpLG4/KHM9YT1lKHMpLHRoaXMuYmluZGluZ3M9dGhpcy5iaW5kaW5ncy5hZGQocykpOihuPXMscz10aGlzLmVsZW1lbnQsYT10aGlzLndpZGdldCgpKSxlLmVhY2gobixmdW5jdGlvbihuLG8pe2Z1bmN0aW9uIGgoKXtyZXR1cm4gaXx8ci5vcHRpb25zLmRpc2FibGVkIT09ITAmJiFlKHRoaXMpLmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpPygic3RyaW5nIj09dHlwZW9mIG8/cltvXTpvKS5hcHBseShyLGFyZ3VtZW50cyk6dH0ic3RyaW5nIiE9dHlwZW9mIG8mJihoLmd1aWQ9by5ndWlkPW8uZ3VpZHx8aC5ndWlkfHxlLmd1aWQrKyk7dmFyIGw9bi5tYXRjaCgvXihcdyspXHMqKC4qKSQvKSx1PWxbMV0rci5ldmVudE5hbWVzcGFjZSxjPWxbMl07Yz9hLmRlbGVnYXRlKGMsdSxoKTpzLmJpbmQodSxoKX0pfSxfb2ZmOmZ1bmN0aW9uKGUsdCl7dD0odHx8IiIpLnNwbGl0KCIgIikuam9pbih0aGlzLmV2ZW50TmFtZXNwYWNlKyIgIikrdGhpcy5ldmVudE5hbWVzcGFjZSxlLnVuYmluZCh0KS51bmRlbGVnYXRlKHQpfSxfZGVsYXk6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKCl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgZT9zW2VdOmUpLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgcz10aGlzO3JldHVybiBzZXRUaW1lb3V0KGksdHx8MCl9LF9ob3ZlcmFibGU6ZnVuY3Rpb24odCl7dGhpcy5ob3ZlcmFibGU9dGhpcy5ob3ZlcmFibGUuYWRkKHQpLHRoaXMuX29uKHQse21vdXNlZW50ZXI6ZnVuY3Rpb24odCl7ZSh0LmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKX19KX0sX2ZvY3VzYWJsZTpmdW5jdGlvbih0KXt0aGlzLmZvY3VzYWJsZT10aGlzLmZvY3VzYWJsZS5hZGQodCksdGhpcy5fb24odCx7Zm9jdXNpbjpmdW5jdGlvbih0KXtlKHQuY3VycmVudFRhcmdldCkuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9LGZvY3Vzb3V0OmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX19KX0sX3RyaWdnZXI6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEscj10aGlzLm9wdGlvbnNbdF07aWYocz1zfHx7fSxpPWUuRXZlbnQoaSksaS50eXBlPSh0PT09dGhpcy53aWRnZXRFdmVudFByZWZpeD90OnRoaXMud2lkZ2V0RXZlbnRQcmVmaXgrdCkudG9Mb3dlckNhc2UoKSxpLnRhcmdldD10aGlzLmVsZW1lbnRbMF0sYT1pLm9yaWdpbmFsRXZlbnQpZm9yKG4gaW4gYSluIGluIGl8fChpW25dPWFbbl0pO3JldHVybiB0aGlzLmVsZW1lbnQudHJpZ2dlcihpLHMpLCEoZS5pc0Z1bmN0aW9uKHIpJiZyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbaV0uY29uY2F0KHMpKT09PSExfHxpLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LGUuZWFjaCh7c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24odCxpKXtlLldpZGdldC5wcm90b3R5cGVbIl8iK3RdPWZ1bmN0aW9uKHMsbixhKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPXtlZmZlY3Q6bn0pO3ZhciByLG89bj9uPT09ITB8fCJudW1iZXIiPT10eXBlb2Ygbj9pOm4uZWZmZWN0fHxpOnQ7bj1ufHx7fSwibnVtYmVyIj09dHlwZW9mIG4mJihuPXtkdXJhdGlvbjpufSkscj0hZS5pc0VtcHR5T2JqZWN0KG4pLG4uY29tcGxldGU9YSxuLmRlbGF5JiZzLmRlbGF5KG4uZGVsYXkpLHImJmUuZWZmZWN0cyYmZS5lZmZlY3RzLmVmZmVjdFtvXT9zW3RdKG4pOm8hPT10JiZzW29dP3Nbb10obi5kdXJhdGlvbixuLmVhc2luZyxhKTpzLnF1ZXVlKGZ1bmN0aW9uKGkpe2UodGhpcylbdF0oKSxhJiZhLmNhbGwoc1swXSksaSgpfSl9fSl9KShqUXVlcnkpOyhmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkoKXtyZXR1cm4rK259ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdC5oYXNoLmxlbmd0aD4xJiZkZWNvZGVVUklDb21wb25lbnQodC5ocmVmLnJlcGxhY2UoYSwiIikpPT09ZGVjb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmhyZWYucmVwbGFjZShhLCIiKSl9dmFyIG49MCxhPS8jLiokLzt0LndpZGdldCgidWkudGFicyIse3ZlcnNpb246IjEuMTAuMiIsZGVsYXk6MzAwLG9wdGlvbnM6e2FjdGl2ZTpudWxsLGNvbGxhcHNpYmxlOiExLGV2ZW50OiJjbGljayIsaGVpZ2h0U3R5bGU6ImNvbnRlbnQiLGhpZGU6bnVsbCxzaG93Om51bGwsYWN0aXZhdGU6bnVsbCxiZWZvcmVBY3RpdmF0ZTpudWxsLGJlZm9yZUxvYWQ6bnVsbCxsb2FkOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9dGhpcy5vcHRpb25zO3RoaXMucnVubmluZz0hMSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXRhYnMgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS50b2dnbGVDbGFzcygidWktdGFicy1jb2xsYXBzaWJsZSIsaS5jb2xsYXBzaWJsZSkuZGVsZWdhdGUoIi51aS10YWJzLW5hdiA+IGxpIiwibW91c2Vkb3duIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKGUpe3QodGhpcykuaXMoIi51aS1zdGF0ZS1kaXNhYmxlZCIpJiZlLnByZXZlbnREZWZhdWx0KCl9KS5kZWxlZ2F0ZSgiLnVpLXRhYnMtYW5jaG9yIiwiZm9jdXMiK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXt0KHRoaXMpLmNsb3Nlc3QoImxpIikuaXMoIi51aS1zdGF0ZS1kaXNhYmxlZCIpJiZ0aGlzLmJsdXIoKX0pLHRoaXMuX3Byb2Nlc3NUYWJzKCksaS5hY3RpdmU9dGhpcy5faW5pdGlhbEFjdGl2ZSgpLHQuaXNBcnJheShpLmRpc2FibGVkKSYmKGkuZGlzYWJsZWQ9dC51bmlxdWUoaS5kaXNhYmxlZC5jb25jYXQodC5tYXAodGhpcy50YWJzLmZpbHRlcigiLnVpLXN0YXRlLWRpc2FibGVkIiksZnVuY3Rpb24odCl7cmV0dXJuIGUudGFicy5pbmRleCh0KX0pKSkuc29ydCgpKSx0aGlzLmFjdGl2ZT10aGlzLm9wdGlvbnMuYWN0aXZlIT09ITEmJnRoaXMuYW5jaG9ycy5sZW5ndGg/dGhpcy5fZmluZEFjdGl2ZShpLmFjdGl2ZSk6dCgpLHRoaXMuX3JlZnJlc2goKSx0aGlzLmFjdGl2ZS5sZW5ndGgmJnRoaXMubG9hZChpLmFjdGl2ZSl9LF9pbml0aWFsQWN0aXZlOmZ1bmN0aW9uKCl7dmFyIGk9dGhpcy5vcHRpb25zLmFjdGl2ZSxzPXRoaXMub3B0aW9ucy5jb2xsYXBzaWJsZSxuPWxvY2F0aW9uLmhhc2guc3Vic3RyaW5nKDEpO3JldHVybiBudWxsPT09aSYmKG4mJnRoaXMudGFicy5lYWNoKGZ1bmN0aW9uKHMsYSl7cmV0dXJuIHQoYSkuYXR0cigiYXJpYS1jb250cm9scyIpPT09bj8oaT1zLCExKTplfSksbnVsbD09PWkmJihpPXRoaXMudGFicy5pbmRleCh0aGlzLnRhYnMuZmlsdGVyKCIudWktdGFicy1hY3RpdmUiKSkpLChudWxsPT09aXx8LTE9PT1pKSYmKGk9dGhpcy50YWJzLmxlbmd0aD8wOiExKSksaSE9PSExJiYoaT10aGlzLnRhYnMuaW5kZXgodGhpcy50YWJzLmVxKGkpKSwtMT09PWkmJihpPXM/ITE6MCkpLCFzJiZpPT09ITEmJnRoaXMuYW5jaG9ycy5sZW5ndGgmJihpPTApLGl9LF9nZXRDcmVhdGVFdmVudERhdGE6ZnVuY3Rpb24oKXtyZXR1cm57dGFiOnRoaXMuYWN0aXZlLHBhbmVsOnRoaXMuYWN0aXZlLmxlbmd0aD90aGlzLl9nZXRQYW5lbEZvclRhYih0aGlzLmFjdGl2ZSk6dCgpfX0sX3RhYktleWRvd246ZnVuY3Rpb24oaSl7dmFyIHM9dCh0aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoImxpIiksbj10aGlzLnRhYnMuaW5kZXgocyksYT0hMDtpZighdGhpcy5faGFuZGxlUGFnZU5hdihpKSl7c3dpdGNoKGkua2V5Q29kZSl7Y2FzZSB0LnVpLmtleUNvZGUuUklHSFQ6Y2FzZSB0LnVpLmtleUNvZGUuRE9XTjpuKys7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuVVA6Y2FzZSB0LnVpLmtleUNvZGUuTEVGVDphPSExLG4tLTticmVhaztjYXNlIHQudWkua2V5Q29kZS5FTkQ6bj10aGlzLmFuY2hvcnMubGVuZ3RoLTE7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuSE9NRTpuPTA7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuU1BBQ0U6cmV0dXJuIGkucHJldmVudERlZmF1bHQoKSxjbGVhclRpbWVvdXQodGhpcy5hY3RpdmF0aW5nKSx0aGlzLl9hY3RpdmF0ZShuKSxlO2Nhc2UgdC51aS5rZXlDb2RlLkVOVEVSOnJldHVybiBpLnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuYWN0aXZhdGluZyksdGhpcy5fYWN0aXZhdGUobj09PXRoaXMub3B0aW9ucy5hY3RpdmU/ITE6biksZTtkZWZhdWx0OnJldHVybn1pLnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuYWN0aXZhdGluZyksbj10aGlzLl9mb2N1c05leHRUYWIobixhKSxpLmN0cmxLZXl8fChzLmF0dHIoImFyaWEtc2VsZWN0ZWQiLCJmYWxzZSIpLHRoaXMudGFicy5lcShuKS5hdHRyKCJhcmlhLXNlbGVjdGVkIiwidHJ1ZSIpLHRoaXMuYWN0aXZhdGluZz10aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMub3B0aW9uKCJhY3RpdmUiLG4pfSx0aGlzLmRlbGF5KSl9fSxfcGFuZWxLZXlkb3duOmZ1bmN0aW9uKGUpe3RoaXMuX2hhbmRsZVBhZ2VOYXYoZSl8fGUuY3RybEtleSYmZS5rZXlDb2RlPT09dC51aS5rZXlDb2RlLlVQJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuYWN0aXZlLmZvY3VzKCkpfSxfaGFuZGxlUGFnZU5hdjpmdW5jdGlvbihpKXtyZXR1cm4gaS5hbHRLZXkmJmkua2V5Q29kZT09PXQudWkua2V5Q29kZS5QQUdFX1VQPyh0aGlzLl9hY3RpdmF0ZSh0aGlzLl9mb2N1c05leHRUYWIodGhpcy5vcHRpb25zLmFjdGl2ZS0xLCExKSksITApOmkuYWx0S2V5JiZpLmtleUNvZGU9PT10LnVpLmtleUNvZGUuUEFHRV9ET1dOPyh0aGlzLl9hY3RpdmF0ZSh0aGlzLl9mb2N1c05leHRUYWIodGhpcy5vcHRpb25zLmFjdGl2ZSsxLCEwKSksITApOmV9LF9maW5kTmV4dFRhYjpmdW5jdGlvbihlLGkpe2Z1bmN0aW9uIHMoKXtyZXR1cm4gZT5uJiYoZT0wKSwwPmUmJihlPW4pLGV9Zm9yKHZhciBuPXRoaXMudGFicy5sZW5ndGgtMTstMSE9PXQuaW5BcnJheShzKCksdGhpcy5vcHRpb25zLmRpc2FibGVkKTspZT1pP2UrMTplLTE7cmV0dXJuIGV9LF9mb2N1c05leHRUYWI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD10aGlzLl9maW5kTmV4dFRhYih0LGUpLHRoaXMudGFicy5lcSh0KS5mb2N1cygpLHR9LF9zZXRPcHRpb246ZnVuY3Rpb24odCxpKXtyZXR1cm4iYWN0aXZlIj09PXQ/KHRoaXMuX2FjdGl2YXRlKGkpLGUpOiJkaXNhYmxlZCI9PT10Pyh0aGlzLl9zZXR1cERpc2FibGVkKGkpLGUpOih0aGlzLl9zdXBlcih0LGkpLCJjb2xsYXBzaWJsZSI9PT10JiYodGhpcy5lbGVtZW50LnRvZ2dsZUNsYXNzKCJ1aS10YWJzLWNvbGxhcHNpYmxlIixpKSxpfHx0aGlzLm9wdGlvbnMuYWN0aXZlIT09ITF8fHRoaXMuX2FjdGl2YXRlKDApKSwiZXZlbnQiPT09dCYmdGhpcy5fc2V0dXBFdmVudHMoaSksImhlaWdodFN0eWxlIj09PXQmJnRoaXMuX3NldHVwSGVpZ2h0U3R5bGUoaSksZSl9LF90YWJJZDpmdW5jdGlvbih0KXtyZXR1cm4gdC5hdHRyKCJhcmlhLWNvbnRyb2xzIil8fCJ1aS10YWJzLSIraSgpfSxfc2FuaXRpemVTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdD90LnJlcGxhY2UoL1shIiQlJicoKSorLC5cLzo7PD0+P0BcW1xdXF5ge3x9fl0vZywiXFwkJiIpOiIifSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLGk9dGhpcy50YWJsaXN0LmNoaWxkcmVuKCI6aGFzKGFbaHJlZl0pIik7ZS5kaXNhYmxlZD10Lm1hcChpLmZpbHRlcigiLnVpLXN0YXRlLWRpc2FibGVkIiksZnVuY3Rpb24odCl7cmV0dXJuIGkuaW5kZXgodCl9KSx0aGlzLl9wcm9jZXNzVGFicygpLGUuYWN0aXZlIT09ITEmJnRoaXMuYW5jaG9ycy5sZW5ndGg/dGhpcy5hY3RpdmUubGVuZ3RoJiYhdC5jb250YWlucyh0aGlzLnRhYmxpc3RbMF0sdGhpcy5hY3RpdmVbMF0pP3RoaXMudGFicy5sZW5ndGg9PT1lLmRpc2FibGVkLmxlbmd0aD8oZS5hY3RpdmU9ITEsdGhpcy5hY3RpdmU9dCgpKTp0aGlzLl9hY3RpdmF0ZSh0aGlzLl9maW5kTmV4dFRhYihNYXRoLm1heCgwLGUuYWN0aXZlLTEpLCExKSk6ZS5hY3RpdmU9dGhpcy50YWJzLmluZGV4KHRoaXMuYWN0aXZlKTooZS5hY3RpdmU9ITEsdGhpcy5hY3RpdmU9dCgpKSx0aGlzLl9yZWZyZXNoKCl9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fc2V0dXBEaXNhYmxlZCh0aGlzLm9wdGlvbnMuZGlzYWJsZWQpLHRoaXMuX3NldHVwRXZlbnRzKHRoaXMub3B0aW9ucy5ldmVudCksdGhpcy5fc2V0dXBIZWlnaHRTdHlsZSh0aGlzLm9wdGlvbnMuaGVpZ2h0U3R5bGUpLHRoaXMudGFicy5ub3QodGhpcy5hY3RpdmUpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLHRhYkluZGV4Oi0xfSksdGhpcy5wYW5lbHMubm90KHRoaXMuX2dldFBhbmVsRm9yVGFiKHRoaXMuYWN0aXZlKSkuaGlkZSgpLmF0dHIoeyJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUifSksdGhpcy5hY3RpdmUubGVuZ3RoPyh0aGlzLmFjdGl2ZS5hZGRDbGFzcygidWktdGFicy1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIikuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJ0cnVlIix0YWJJbmRleDowfSksdGhpcy5fZ2V0UGFuZWxGb3JUYWIodGhpcy5hY3RpdmUpLnNob3coKS5hdHRyKHsiYXJpYS1leHBhbmRlZCI6InRydWUiLCJhcmlhLWhpZGRlbiI6ImZhbHNlIn0pKTp0aGlzLnRhYnMuZXEoMCkuYXR0cigidGFiSW5kZXgiLDApfSxfcHJvY2Vzc1RhYnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMudGFibGlzdD10aGlzLl9nZXRMaXN0KCkuYWRkQ2xhc3MoInVpLXRhYnMtbmF2IHVpLWhlbHBlci1yZXNldCB1aS1oZWxwZXItY2xlYXJmaXggdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIikuYXR0cigicm9sZSIsInRhYmxpc3QiKSx0aGlzLnRhYnM9dGhpcy50YWJsaXN0LmZpbmQoIj4gbGk6aGFzKGFbaHJlZl0pIikuYWRkQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLXRvcCIpLmF0dHIoe3JvbGU6InRhYiIsdGFiSW5kZXg6LTF9KSx0aGlzLmFuY2hvcnM9dGhpcy50YWJzLm1hcChmdW5jdGlvbigpe3JldHVybiB0KCJhIix0aGlzKVswXX0pLmFkZENsYXNzKCJ1aS10YWJzLWFuY2hvciIpLmF0dHIoe3JvbGU6InByZXNlbnRhdGlvbiIsdGFiSW5kZXg6LTF9KSx0aGlzLnBhbmVscz10KCksdGhpcy5hbmNob3JzLmVhY2goZnVuY3Rpb24oaSxuKXt2YXIgYSxvLHIsaD10KG4pLnVuaXF1ZUlkKCkuYXR0cigiaWQiKSxsPXQobikuY2xvc2VzdCgibGkiKSx1PWwuYXR0cigiYXJpYS1jb250cm9scyIpO3Mobik/KGE9bi5oYXNoLG89ZS5lbGVtZW50LmZpbmQoZS5fc2FuaXRpemVTZWxlY3RvcihhKSkpOihyPWUuX3RhYklkKGwpLGE9IiMiK3Isbz1lLmVsZW1lbnQuZmluZChhKSxvLmxlbmd0aHx8KG89ZS5fY3JlYXRlUGFuZWwociksby5pbnNlcnRBZnRlcihlLnBhbmVsc1tpLTFdfHxlLnRhYmxpc3QpKSxvLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpKSxvLmxlbmd0aCYmKGUucGFuZWxzPWUucGFuZWxzLmFkZChvKSksdSYmbC5kYXRhKCJ1aS10YWJzLWFyaWEtY29udHJvbHMiLHUpLGwuYXR0cih7ImFyaWEtY29udHJvbHMiOmEuc3Vic3RyaW5nKDEpLCJhcmlhLWxhYmVsbGVkYnkiOmh9KSxvLmF0dHIoImFyaWEtbGFiZWxsZWRieSIsaCl9KSx0aGlzLnBhbmVscy5hZGRDbGFzcygidWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIikuYXR0cigicm9sZSIsInRhYnBhbmVsIil9LF9nZXRMaXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5maW5kKCJvbCx1bCIpLmVxKDApfSxfY3JlYXRlUGFuZWw6ZnVuY3Rpb24oZSl7cmV0dXJuIHQoIjxkaXY+IikuYXR0cigiaWQiLGUpLmFkZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iKS5kYXRhKCJ1aS10YWJzLWRlc3Ryb3kiLCEwKX0sX3NldHVwRGlzYWJsZWQ6ZnVuY3Rpb24oZSl7dC5pc0FycmF5KGUpJiYoZS5sZW5ndGg/ZS5sZW5ndGg9PT10aGlzLmFuY2hvcnMubGVuZ3RoJiYoZT0hMCk6ZT0hMSk7Zm9yKHZhciBpLHM9MDtpPXRoaXMudGFic1tzXTtzKyspZT09PSEwfHwtMSE9PXQuaW5BcnJheShzLGUpP3QoaSkuYWRkQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsInRydWUiKTp0KGkpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKTt0aGlzLm9wdGlvbnMuZGlzYWJsZWQ9ZX0sX3NldHVwRXZlbnRzOmZ1bmN0aW9uKGUpe3ZhciBpPXtjbGljazpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9fTtlJiZ0LmVhY2goZS5zcGxpdCgiICIpLGZ1bmN0aW9uKHQsZSl7aVtlXT0iX2V2ZW50SGFuZGxlciJ9KSx0aGlzLl9vZmYodGhpcy5hbmNob3JzLmFkZCh0aGlzLnRhYnMpLmFkZCh0aGlzLnBhbmVscykpLHRoaXMuX29uKHRoaXMuYW5jaG9ycyxpKSx0aGlzLl9vbih0aGlzLnRhYnMse2tleWRvd246Il90YWJLZXlkb3duIn0pLHRoaXMuX29uKHRoaXMucGFuZWxzLHtrZXlkb3duOiJfcGFuZWxLZXlkb3duIn0pLHRoaXMuX2ZvY3VzYWJsZSh0aGlzLnRhYnMpLHRoaXMuX2hvdmVyYWJsZSh0aGlzLnRhYnMpfSxfc2V0dXBIZWlnaHRTdHlsZTpmdW5jdGlvbihlKXt2YXIgaSxzPXRoaXMuZWxlbWVudC5wYXJlbnQoKTsiZmlsbCI9PT1lPyhpPXMuaGVpZ2h0KCksaS09dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCktdGhpcy5lbGVtZW50LmhlaWdodCgpLHRoaXMuZWxlbWVudC5zaWJsaW5ncygiOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKSxzPWUuY3NzKCJwb3NpdGlvbiIpOyJhYnNvbHV0ZSIhPT1zJiYiZml4ZWQiIT09cyYmKGktPWUub3V0ZXJIZWlnaHQoITApKX0pLHRoaXMuZWxlbWVudC5jaGlsZHJlbigpLm5vdCh0aGlzLnBhbmVscykuZWFjaChmdW5jdGlvbigpe2ktPXQodGhpcykub3V0ZXJIZWlnaHQoITApfSksdGhpcy5wYW5lbHMuZWFjaChmdW5jdGlvbigpe3QodGhpcykuaGVpZ2h0KE1hdGgubWF4KDAsaS10KHRoaXMpLmlubmVySGVpZ2h0KCkrdCh0aGlzKS5oZWlnaHQoKSkpfSkuY3NzKCJvdmVyZmxvdyIsImF1dG8iKSk6ImF1dG8iPT09ZSYmKGk9MCx0aGlzLnBhbmVscy5lYWNoKGZ1bmN0aW9uKCl7aT1NYXRoLm1heChpLHQodGhpcykuaGVpZ2h0KCIiKS5oZWlnaHQoKSl9KS5oZWlnaHQoaSkpfSxfZXZlbnRIYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMub3B0aW9ucyxzPXRoaXMuYWN0aXZlLG49dChlLmN1cnJlbnRUYXJnZXQpLGE9bi5jbG9zZXN0KCJsaSIpLG89YVswXT09PXNbMF0scj1vJiZpLmNvbGxhcHNpYmxlLGg9cj90KCk6dGhpcy5fZ2V0UGFuZWxGb3JUYWIoYSksbD1zLmxlbmd0aD90aGlzLl9nZXRQYW5lbEZvclRhYihzKTp0KCksdT17b2xkVGFiOnMsb2xkUGFuZWw6bCxuZXdUYWI6cj90KCk6YSxuZXdQYW5lbDpofTtlLnByZXZlbnREZWZhdWx0KCksYS5oYXNDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKXx8YS5oYXNDbGFzcygidWktdGFicy1sb2FkaW5nIil8fHRoaXMucnVubmluZ3x8byYmIWkuY29sbGFwc2libGV8fHRoaXMuX3RyaWdnZXIoImJlZm9yZUFjdGl2YXRlIixlLHUpPT09ITF8fChpLmFjdGl2ZT1yPyExOnRoaXMudGFicy5pbmRleChhKSx0aGlzLmFjdGl2ZT1vP3QoKTphLHRoaXMueGhyJiZ0aGlzLnhoci5hYm9ydCgpLGwubGVuZ3RofHxoLmxlbmd0aHx8dC5lcnJvcigialF1ZXJ5IFVJIFRhYnM6IE1pc21hdGNoaW5nIGZyYWdtZW50IGlkZW50aWZpZXIuIiksaC5sZW5ndGgmJnRoaXMubG9hZCh0aGlzLnRhYnMuaW5kZXgoYSksZSksdGhpcy5fdG9nZ2xlKGUsdSkpfSxfdG9nZ2xlOmZ1bmN0aW9uKGUsaSl7ZnVuY3Rpb24gcygpe2EucnVubmluZz0hMSxhLl90cmlnZ2VyKCJhY3RpdmF0ZSIsZSxpKX1mdW5jdGlvbiBuKCl7aS5uZXdUYWIuY2xvc2VzdCgibGkiKS5hZGRDbGFzcygidWktdGFicy1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIiksby5sZW5ndGgmJmEub3B0aW9ucy5zaG93P2EuX3Nob3cobyxhLm9wdGlvbnMuc2hvdyxzKTooby5zaG93KCkscygpKX12YXIgYT10aGlzLG89aS5uZXdQYW5lbCxyPWkub2xkUGFuZWw7dGhpcy5ydW5uaW5nPSEwLHIubGVuZ3RoJiZ0aGlzLm9wdGlvbnMuaGlkZT90aGlzLl9oaWRlKHIsdGhpcy5vcHRpb25zLmhpZGUsZnVuY3Rpb24oKXtpLm9sZFRhYi5jbG9zZXN0KCJsaSIpLnJlbW92ZUNsYXNzKCJ1aS10YWJzLWFjdGl2ZSB1aS1zdGF0ZS1hY3RpdmUiKSxuKCl9KTooaS5vbGRUYWIuY2xvc2VzdCgibGkiKS5yZW1vdmVDbGFzcygidWktdGFicy1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIiksci5oaWRlKCksbigpKSxyLmF0dHIoeyJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUifSksaS5vbGRUYWIuYXR0cigiYXJpYS1zZWxlY3RlZCIsImZhbHNlIiksby5sZW5ndGgmJnIubGVuZ3RoP2kub2xkVGFiLmF0dHIoInRhYkluZGV4IiwtMSk6by5sZW5ndGgmJnRoaXMudGFicy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMD09PXQodGhpcykuYXR0cigidGFiSW5kZXgiKX0pLmF0dHIoInRhYkluZGV4IiwtMSksby5hdHRyKHsiYXJpYS1leHBhbmRlZCI6InRydWUiLCJhcmlhLWhpZGRlbiI6ImZhbHNlIn0pLGkubmV3VGFiLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pfSxfYWN0aXZhdGU6ZnVuY3Rpb24oZSl7dmFyIGkscz10aGlzLl9maW5kQWN0aXZlKGUpO3NbMF0hPT10aGlzLmFjdGl2ZVswXSYmKHMubGVuZ3RofHwocz10aGlzLmFjdGl2ZSksaT1zLmZpbmQoIi51aS10YWJzLWFuY2hvciIpWzBdLHRoaXMuX2V2ZW50SGFuZGxlcih7dGFyZ2V0OmksY3VycmVudFRhcmdldDppLHByZXZlbnREZWZhdWx0OnQubm9vcH0pKX0sX2ZpbmRBY3RpdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT0hMT90KCk6dGhpcy50YWJzLmVxKGUpfSxfZ2V0SW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYodD10aGlzLmFuY2hvcnMuaW5kZXgodGhpcy5hbmNob3JzLmZpbHRlcigiW2hyZWYkPSciK3QrIiddIikpKSx0fSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMueGhyJiZ0aGlzLnhoci5hYm9ydCgpLHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktdGFicyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS10YWJzLWNvbGxhcHNpYmxlIiksdGhpcy50YWJsaXN0LnJlbW92ZUNsYXNzKCJ1aS10YWJzLW5hdiB1aS1oZWxwZXItcmVzZXQgdWktaGVscGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLWFsbCIpLnJlbW92ZUF0dHIoInJvbGUiKSx0aGlzLmFuY2hvcnMucmVtb3ZlQ2xhc3MoInVpLXRhYnMtYW5jaG9yIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoInRhYkluZGV4IikucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLnRhYnMuYWRkKHRoaXMucGFuZWxzKS5lYWNoKGZ1bmN0aW9uKCl7dC5kYXRhKHRoaXMsInVpLXRhYnMtZGVzdHJveSIpP3QodGhpcykucmVtb3ZlKCk6dCh0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtZGVmYXVsdCB1aS1zdGF0ZS1hY3RpdmUgdWktc3RhdGUtZGlzYWJsZWQgdWktY29ybmVyLXRvcCB1aS1jb3JuZXItYm90dG9tIHVpLXdpZGdldC1jb250ZW50IHVpLXRhYnMtYWN0aXZlIHVpLXRhYnMtcGFuZWwiKS5yZW1vdmVBdHRyKCJ0YWJJbmRleCIpLnJlbW92ZUF0dHIoImFyaWEtbGl2ZSIpLnJlbW92ZUF0dHIoImFyaWEtYnVzeSIpLnJlbW92ZUF0dHIoImFyaWEtc2VsZWN0ZWQiKS5yZW1vdmVBdHRyKCJhcmlhLWxhYmVsbGVkYnkiKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiIpLnJlbW92ZUF0dHIoImFyaWEtZXhwYW5kZWQiKS5yZW1vdmVBdHRyKCJyb2xlIil9KSx0aGlzLnRhYnMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyksaT1lLmRhdGEoInVpLXRhYnMtYXJpYS1jb250cm9scyIpO2k/ZS5hdHRyKCJhcmlhLWNvbnRyb2xzIixpKS5yZW1vdmVEYXRhKCJ1aS10YWJzLWFyaWEtY29udHJvbHMiKTplLnJlbW92ZUF0dHIoImFyaWEtY29udHJvbHMiKX0pLHRoaXMucGFuZWxzLnNob3coKSwiY29udGVudCIhPT10aGlzLm9wdGlvbnMuaGVpZ2h0U3R5bGUmJnRoaXMucGFuZWxzLmNzcygiaGVpZ2h0IiwiIil9LGVuYWJsZTpmdW5jdGlvbihpKXt2YXIgcz10aGlzLm9wdGlvbnMuZGlzYWJsZWQ7cyE9PSExJiYoaT09PWU/cz0hMTooaT10aGlzLl9nZXRJbmRleChpKSxzPXQuaXNBcnJheShzKT90Lm1hcChzLGZ1bmN0aW9uKHQpe3JldHVybiB0IT09aT90Om51bGx9KTp0Lm1hcCh0aGlzLnRhYnMsZnVuY3Rpb24odCxlKXtyZXR1cm4gZSE9PWk/ZTpudWxsfSkpLHRoaXMuX3NldHVwRGlzYWJsZWQocykpfSxkaXNhYmxlOmZ1bmN0aW9uKGkpe3ZhciBzPXRoaXMub3B0aW9ucy5kaXNhYmxlZDtpZihzIT09ITApe2lmKGk9PT1lKXM9ITA7ZWxzZXtpZihpPXRoaXMuX2dldEluZGV4KGkpLC0xIT09dC5pbkFycmF5KGkscykpcmV0dXJuO3M9dC5pc0FycmF5KHMpP3QubWVyZ2UoW2ldLHMpLnNvcnQoKTpbaV19dGhpcy5fc2V0dXBEaXNhYmxlZChzKX19LGxvYWQ6ZnVuY3Rpb24oZSxpKXtlPXRoaXMuX2dldEluZGV4KGUpO3ZhciBuPXRoaXMsYT10aGlzLnRhYnMuZXEoZSksbz1hLmZpbmQoIi51aS10YWJzLWFuY2hvciIpLHI9dGhpcy5fZ2V0UGFuZWxGb3JUYWIoYSksaD17dGFiOmEscGFuZWw6cn07cyhvWzBdKXx8KHRoaXMueGhyPXQuYWpheCh0aGlzLl9hamF4U2V0dGluZ3MobyxpLGgpKSx0aGlzLnhociYmImNhbmNlbGVkIiE9PXRoaXMueGhyLnN0YXR1c1RleHQmJihhLmFkZENsYXNzKCJ1aS10YWJzLWxvYWRpbmciKSxyLmF0dHIoImFyaWEtYnVzeSIsInRydWUiKSx0aGlzLnhoci5zdWNjZXNzKGZ1bmN0aW9uKHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyLmh0bWwodCksbi5fdHJpZ2dlcigibG9hZCIsaSxoKX0sMSl9KS5jb21wbGV0ZShmdW5jdGlvbih0LGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXsiYWJvcnQiPT09ZSYmbi5wYW5lbHMuc3RvcCghMSwhMCksYS5yZW1vdmVDbGFzcygidWktdGFicy1sb2FkaW5nIiksci5yZW1vdmVBdHRyKCJhcmlhLWJ1c3kiKSx0PT09bi54aHImJmRlbGV0ZSBuLnhocn0sMSl9KSkpfSxfYWpheFNldHRpbmdzOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10aGlzO3JldHVybnt1cmw6ZS5hdHRyKCJocmVmIiksYmVmb3JlU2VuZDpmdW5jdGlvbihlLGEpe3JldHVybiBuLl90cmlnZ2VyKCJiZWZvcmVMb2FkIixpLHQuZXh0ZW5kKHtqcVhIUjplLGFqYXhTZXR0aW5nczphfSxzKSl9fX0sX2dldFBhbmVsRm9yVGFiOmZ1bmN0aW9uKGUpe3ZhciBpPXQoZSkuYXR0cigiYXJpYS1jb250cm9scyIpO3JldHVybiB0aGlzLmVsZW1lbnQuZmluZCh0aGlzLl9zYW5pdGl6ZVNlbGVjdG9yKCIjIitpKSl9fSl9KShqUXVlcnkpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NsaS9zZG5jb24vdWkvc3RhdGljL2pzL3RvcG9sb2d5LmpzIGIvY2xpL3NkbmNvbi91aS9zdGF0aWMvanMvdG9wb2xvZ3kuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDdlYmZjNDMuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS9zdGF0aWMvanMvdG9wb2xvZ3kuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoKLUNvcHlyaWdodCAoYykgMjAxMyBTZW5jaGEgSW5jLiAtIEF1dGhvcjogTmljb2xhcyBHYXJjaWEgQmVsbW9udGUgKGh0dHA6Ly9waGlsb2diLmdpdGh1Yi5jb20vKQotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci1vZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi1mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi1JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLU9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLVRIRSBTT0ZUV0FSRS4KLQotICovCi0vKgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHRoZQotIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0jIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCi0jIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZwotIyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0jCi0qLwotCi0vLwotLy8gRm9yY2VEaXJlY3RlZCBleGFtcGxlMS5qcyBKYXZhc2NyaXB0Ci0vLwotLy8gU2xpZ2h0bHkgbW9kaWZpZWQgZm9yIHVzZSBpbiByZW5kZXJpbmcgYSBzaW1wbGUgbmV0d29yayBkaWFncmFtIHRvcG9sb2d5Ci0vLwotCi12YXIgbGFiZWxUeXBlLCB1c2VHcmFkaWVudHMsIG5hdGl2ZVRleHRTdXBwb3J0LCBhbmltYXRlOwotCi0oZnVuY3Rpb24oKSB7Ci0gIHZhciB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQsCi0gICAgICBpU3R1ZmYgPSB1YS5tYXRjaCgvaVBob25lL2kpIHx8IHVhLm1hdGNoKC9pUGFkL2kpLAotICAgICAgdHlwZU9mQ2FudmFzID0gdHlwZW9mIEhUTUxDYW52YXNFbGVtZW50LAotICAgICAgbmF0aXZlQ2FudmFzU3VwcG9ydCA9ICh0eXBlT2ZDYW52YXMgPT0gJ29iamVjdCcgfHwgdHlwZU9mQ2FudmFzID09ICdmdW5jdGlvbicpLAotICAgICAgdGV4dFN1cHBvcnQgPSBuYXRpdmVDYW52YXNTdXBwb3J0IAotICAgICAgICAmJiAodHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJykuZmlsbFRleHQgPT0gJ2Z1bmN0aW9uJyk7Ci0gIC8vSSdtIHNldHRpbmcgdGhpcyBiYXNlZCBvbiB0aGUgZmFjdCB0aGF0IEV4Q2FudmFzIHByb3ZpZGVzIHRleHQgc3VwcG9ydCBmb3IgSUUKLSAgLy9hbmQgdGhhdCBhcyBvZiB0b2RheSBpUGhvbmUvaVBhZCBjdXJyZW50IHRleHQgc3VwcG9ydCBpcyBsYW1lCi0gIGxhYmVsVHlwZSA9ICghbmF0aXZlQ2FudmFzU3VwcG9ydCB8fCAodGV4dFN1cHBvcnQgJiYgIWlTdHVmZikpPyAnTmF0aXZlJyA6ICdIVE1MJzsKLSAgbmF0aXZlVGV4dFN1cHBvcnQgPSBsYWJlbFR5cGUgPT0gJ05hdGl2ZSc7Ci0gIHVzZUdyYWRpZW50cyA9IG5hdGl2ZUNhbnZhc1N1cHBvcnQ7Ci0gIGFuaW1hdGUgPSAhKGlTdHVmZiB8fCAhbmF0aXZlQ2FudmFzU3VwcG9ydCk7Ci19KSgpOwotCi12YXIgTG9nID0gewotICBlbGVtOiBmYWxzZSwKLSAgd3JpdGU6IGZ1bmN0aW9uKHRleHQpewotICAgIGlmICghdGhpcy5lbGVtKSAKLSAgICAgIHRoaXMuZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLSAgICB0aGlzLmVsZW0uaW5uZXJIVE1MID0gdGV4dDsKLSAgICB0aGlzLmVsZW0uc3R5bGUubGVmdCA9ICg1MDAgLSB0aGlzLmVsZW0ub2Zmc2V0V2lkdGggLyAyKSArICdweCc7Ci0gIH0KLX07Ci0KLQotICAvLyBpbml0IGRhdGEKLSAgIHZhciBqc29uID0gbG9hZFRvcG9sb2d5SlNPTigpOwotICAvLyBlbmQKLSAgLy8gaW5pdCBGb3JjZURpcmVjdGVkCi0gICB2YXIgZmQgPSBuZXcgJGppdC5Gb3JjZURpcmVjdGVkKHsKLSAgICAvL2lkIG9mIHRoZSB2aXN1YWxpemF0aW9uIGNvbnRhaW5lcgotICAgIGluamVjdEludG86ICdpbmZvdmlzJywKLSAgICAvL2ZvcmNlIGhlaWdodAotICAgIGhlaWdodDogOTAwLAotICAgIC8vRW5hYmxlIHpvb21pbmcgYW5kIHBhbm5pbmcKLSAgICAvL2J5IHNjcm9sbGluZyBhbmQgRG5ECi0gICAgTmF2aWdhdGlvbjogewotICAgICAgZW5hYmxlOiB0cnVlLAotICAgICAgLy9FbmFibGUgcGFubmluZyBldmVudHMgb25seSBpZiB3ZSdyZSBkcmFnZ2luZyB0aGUgZW1wdHkKLSAgICAgIC8vY2FudmFzIChhbmQgbm90IGEgbm9kZSkuCi0gICAgICBwYW5uaW5nOiAnYXZvaWQgbm9kZXMnLAotICAgICAgem9vbWluZzogMTAgLy96b29tIHNwZWVkLiBoaWdoZXIgaXMgbW9yZSBzZW5zaWJsZQotICAgIH0sCi0gICAgLy8gQ2hhbmdlIG5vZGUgYW5kIGVkZ2Ugc3R5bGVzIHN1Y2ggYXMKLSAgICAvLyBjb2xvciBhbmQgd2lkdGguCi0gICAgLy8gVGhlc2UgcHJvcGVydGllcyBhcmUgYWxzbyBzZXQgcGVyIG5vZGUKLSAgICAvLyB3aXRoIGRvbGxhciBwcmVmaXhlZCBkYXRhLXByb3BlcnRpZXMgaW4gdGhlCi0gICAgLy8gSlNPTiBzdHJ1Y3R1cmUuCi0gICAgTm9kZTogewotICAgICAgb3ZlcnJpZGFibGU6IHRydWUKLSAgICB9LAotICAgIEVkZ2U6IHsKLSAgICAgIG92ZXJyaWRhYmxlOiB0cnVlLAotICAgICAgY29sb3I6ICcjMjNBNEZGJywKLSAgICAgIGxpbmVXaWR0aDogMC40Ci0gICAgfSwKLSAgICAvL05hdGl2ZSBjYW52YXMgdGV4dCBzdHlsaW5nCi0gICAgTGFiZWw6IHsKLSAgICAgIHR5cGU6IGxhYmVsVHlwZSwgLy9OYXRpdmUgb3IgSFRNTAotICAgICAgc2l6ZTogMTAsCi0gICAgICBjb2xvcjogJyMwMDAwMDAnLAotICAgICAgc3R5bGU6ICdib2xkJwotICAgIH0sCi0gICAgLy9BZGQgVGlwcwotICAgIFRpcHM6IHsKLSAgICAgIGVuYWJsZTogdHJ1ZSwKLSAgICAgIG9uU2hvdzogZnVuY3Rpb24odGlwLCBub2RlKSB7Ci0gICAgICAgIGlmKCFub2RlKSByZXR1cm47Ci0gICAgICAgIC8vIEJ1aWxkIHRoZSByZWxhdGlvbnMgbGlzdCBhcyBhIHRvb2x0aXAuCi0gICAgICAgIC8vIFRoaXMgaXMgZG9uZSBieSB0cmF2ZXJzaW5nIHRoZSBjbGlja2VkIG5vZGUgY29ubmVjdGlvbnMuCi0gICAgICAgIHZhciBodG1sID0gIjxkaXYgY2xhc3M9XCJkeW5hbWljdGFibGUyXCI+IDx0YWJsZT4gPHRyPjx0ZD4iICsgbm9kZS5uYW1lICsgIiBsaW5rczo8L3RkPjwvdHI+PHRyPjx0ZD4iLAotICAgICAgICAgICAgbGlzdCA9IFtdOwotICAgICAgICBub2RlLmVhY2hBZGphY2VuY3koZnVuY3Rpb24oYWRqKXsKLSAgICAgICAgICBsaXN0LnB1c2goYWRqLm5vZGVUby5uYW1lKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIC8vYXBwZW5kIGNvbm5lY3Rpb25zIGluZm9ybWF0aW9uCi0gICAgICAgIHRpcC5pbm5lckhUTUwgPSBodG1sICsgbGlzdC5qb2luKCI8L3RkPjwvdHI+PHRyPjx0ZD4iKSArICI8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj4iOwotICAgICAgfQotICAgIH0sCi0gICAgLy8gQWRkIG5vZGUgZXZlbnRzCi0gICAgRXZlbnRzOiB7Ci0gICAgICBlbmFibGU6IHRydWUsCi0gICAgICB0eXBlOiAnTmF0aXZlJywKLSAgICAgIC8vQ2hhbmdlIGN1cnNvciBzdHlsZSB3aGVuIGhvdmVyaW5nIGEgbm9kZQotICAgICAgb25Nb3VzZUVudGVyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgZmQuY2FudmFzLmdldEVsZW1lbnQoKS5zdHlsZS5jdXJzb3IgPSAnbW92ZSc7Ci0gICAgICB9LAotICAgICAgb25Nb3VzZUxlYXZlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgZmQuY2FudmFzLmdldEVsZW1lbnQoKS5zdHlsZS5jdXJzb3IgPSAnJzsKLSAgICAgIH0sCi0gICAgICAvL1VwZGF0ZSBub2RlIHBvc2l0aW9ucyB3aGVuIGRyYWdnZWQKLSAgICAgIG9uRHJhZ01vdmU6IGZ1bmN0aW9uKG5vZGUsIGV2ZW50SW5mbywgZSkgewotICAgICAgICAgIHZhciBwb3MgPSBldmVudEluZm8uZ2V0UG9zKCk7Ci0gICAgICAgICAgbm9kZS5wb3Muc2V0Yyhwb3MueCwgcG9zLnkpOwotICAgICAgICAgIGZkLnBsb3QoKTsKLSAgICAgIH0sCi0gICAgICAvL0ltcGxlbWVudCB0aGUgc2FtZSBoYW5kbGVyIGZvciB0b3VjaHNjcmVlbnMKLSAgICAgIG9uVG91Y2hNb3ZlOiBmdW5jdGlvbihub2RlLCBldmVudEluZm8sIGUpIHsKLSAgICAgICAgJGppdC51dGlsLmV2ZW50LnN0b3AoZSk7IC8vc3RvcCBkZWZhdWx0IHRvdWNobW92ZSBldmVudAotICAgICAgICB0aGlzLm9uRHJhZ01vdmUobm9kZSwgZXZlbnRJbmZvLCBlKTsKLSAgICAgIH0sCi0gICAgICAvL05vIG5vZGUgY2xpY2staGFuZGxlciBmb3Igbm93Ci0gICAgICAvL29uQ2xpY2s6IGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgIC8vfQotICAgIH0sCi0gICAgLy9OdW1iZXIgb2YgaXRlcmF0aW9ucyBmb3IgdGhlIEZEIGFsZ29yaXRobQotICAgIGl0ZXJhdGlvbnM6IDEwLAotICAgIC8vRWRnZSBsZW5ndGgKLSAgICBsZXZlbERpc3RhbmNlOiAxMzAsCi0gICAgLy8gQWRkIHRleHQgdG8gdGhlIGxhYmVscy4gVGhpcyBtZXRob2QgaXMgb25seSB0cmlnZ2VyZWQKLSAgICAvLyBvbiBsYWJlbCBjcmVhdGlvbiBhbmQgb25seSBmb3IgRE9NIGxhYmVscyAobm90IG5hdGl2ZSBjYW52YXMgb25lcykuCi0gICAgb25DcmVhdGVMYWJlbDogZnVuY3Rpb24oZG9tRWxlbWVudCwgbm9kZSl7Ci0gICAgICBkb21FbGVtZW50LmlubmVySFRNTCA9IG5vZGUubmFtZTsKLSAgICAgIHZhciBzdHlsZSA9IGRvbUVsZW1lbnQuc3R5bGU7Ci0gICAgICBzdHlsZS5mb250U2l6ZSA9ICIwLjhlbSI7Ci0gICAgICBzdHlsZS5jb2xvciA9ICIjZGRkIjsKLSAgICB9LAotICAgIC8vIENoYW5nZSBub2RlIHN0eWxlcyB3aGVuIERPTSBsYWJlbHMgYXJlIHBsYWNlZAotICAgIC8vIG9yIG1vdmVkLgotICAgIG9uUGxhY2VMYWJlbDogZnVuY3Rpb24oZG9tRWxlbWVudCwgbm9kZSl7Ci0gICAgICB2YXIgc3R5bGUgPSBkb21FbGVtZW50LnN0eWxlOwotICAgICAgdmFyIGxlZnQgPSBwYXJzZUludChzdHlsZS5sZWZ0KTsKLSAgICAgIHZhciB0b3AgPSBwYXJzZUludChzdHlsZS50b3ApOwotICAgICAgdmFyIHcgPSBkb21FbGVtZW50Lm9mZnNldFdpZHRoOwotICAgICAgc3R5bGUubGVmdCA9IChsZWZ0IC0gdyAvIDIpICsgJ3B4JzsKLSAgICAgIHN0eWxlLnRvcCA9ICh0b3AgKyAxMCkgKyAncHgnOwotICAgICAgc3R5bGUuZGlzcGxheSA9ICcnOwotICAgIH0KLSAgfSk7Ci0gIC8vIGxvYWQgSlNPTiBkYXRhLgotICBmZC5sb2FkSlNPTihqc29uKTsKLSAgLy8gY29tcHV0ZSBwb3NpdGlvbnMgaW5jcmVtZW50YWxseSBhbmQgYW5pbWF0ZS4KLSAgZmQuY29tcHV0ZUluY3JlbWVudGFsKHsKLSAgICBpdGVyOiA0MCwKLSAgICBwcm9wZXJ0eTogJ2VuZCcsCi0gICAgb25TdGVwOiBmdW5jdGlvbihwZXJjKXsKLSAgICAgIExvZy53cml0ZShwZXJjICsgJyUgbG9hZGVkLi4uJyk7Ci0gICAgfSwKLSAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpewotICAgICAgTG9nLndyaXRlKCdkb25lJyk7Ci0gICAgfQotICB9KTsKLSAgLy8gZW5kCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3RlbXBsYXRlcy9iYXNlLmh0bWwgYi9jbGkvc2RuY29uL3VpL3RlbXBsYXRlcy9iYXNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA0ZTU4YTEuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS90ZW1wbGF0ZXMvYmFzZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbCBsYW5nPSJlbiI+Ci0JPGhlYWQ+IAotCQk8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9InN0YXRpYy9mYXZpY29uLmljbyIgdHlwZT0iaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIj4KLQkJPGxpbmsgaHJlZj0ic3RhdGljL2Nzcy90aGlyZHBhcnR5L2pxdWVyeS11aS0xLjEwLjIuY3VzdG9tLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KLQkJPHRpdGxlPk9wZW4gRGF5bGlnaHQgU0ROIENvbnRyb2xsZXIgUGxhdGZvcm0gRGFzaGJvYXJkPC90aXRsZT4KLQkJPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3RhdGljL2Nzcy90YWJsZS5jc3MiIG1lZGlhPSJhbGwiPgotICAgIDwvaGVhZD4KLQotCTxib2R5PgotCQkJCXslIGJsb2NrIGNvbnRlbnQgJX0KLQkJCQl7JSBlbmRibG9jayAlfQotCTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3RlbXBsYXRlcy9pbmRleC5odG1sIGIvY2xpL3NkbmNvbi91aS90ZW1wbGF0ZXMvaW5kZXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTBmNjNiNS4uMDAwMDAwMAotLS0gYS9jbGkvc2RuY29uL3VpL3RlbXBsYXRlcy9pbmRleC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLTwhLS0gCi0KLSBDb3B5cmlnaHQgKGMpIDIwMTMgQmlnIFN3aXRjaCBOZXR3b3JrcywgSW5jLgotCi0gTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlCi0gTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0KLSAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0KLSBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLSBXZWIgVUkgaG9tZQotCi0tLT4KLQoteyUgZXh0ZW5kcyAiYmFzZS5odG1sIiAlfQoteyUgYmxvY2sgY29udGVudCAlfQotCi0JCTxkaXYgaWQ9InNraXAtbGluayI+Ci0JCTwvZGl2PgotCQk8ZGl2IGlkPSJwYWdlIj4KLQkJCTxoZWFkZXIgaWQ9ImhlYWRlciIgcm9sZT0iYmFubmVyIj4KLQkJCTxkaXYgY2xhc3M9InBhZ2Utd2lkdGgiPjxkaXYgY2xhc3M9InBhZ2Utd2lkdGgtaW5uZXIgY2xlYXJmaXgiPgotCQkJCQk8ZGl2IGlkPSJzaXRlLWxvZ28iIHN0eWxlPSJtYXJnaW46IDE1cHg7IGRpc3BsYXk6IHRhYmxlOyI+Ci0JCQkJCQk8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgd2lkdGg6IDEwMCU7Ij4KLQkJCQkJCQk8aW1nIHNyYz0ic3RhdGljL2ltYWdlcy9sb2dvX29wZW5kYXlsaWdodC5wbmciIGJvcmRlcj0iMCIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiA1cHg7Ij4KLQkJCQkJCTwvZGl2PgotCQkJCQkJPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQ7Ij4KLQkJCQkJCQk8c3BhbiBjbGFzcz0idGl0bGUgaGVhZGVyLXByb2Nlc3NlZCIgaWQ9InBhZ2UtdGl0bGUiIHN0eWxlPSJjb2xvcjogIzNmM2Y0MDsgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWYsIEFyaWFsIFVuaWNvZGUgTVMsIEFyaWFsOyBmb250LXdlaWdodDogMTAwOyBmb250LXNpemU6IDQwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLXRvcDogMHB4OyBoZWlnaHQ6IDQwcHg7IGRpc3BsYXk6IHRhYmxlLWNlbGw7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IHdpZHRoOiAxMDAlOyBwb3NpdGlvbjogc3RhdGljOyBwYWRkaW5nLWxlZnQ6IDMwcHg7Ij5TRE4gQ29udHJvbGxlciBQbGF0Zm9ybSBEYXNoYm9hcmQ8L3NwYW4+Ci0JCQkJCQk8L2Rpdj4KLQkJCQkJPC9kaXY+Ci0JCQkJCTxkaXYgaWQ9InRhZ2xpbmUiPgotCQkJCQkJPGRpdiBjbGFzcz0icmVnaW9uIHJlZ2lvbi10YWdsaW5lIj4KLQkJCQkJCQk8ZGl2IGlkPSJibG9jay1ibG9jay05IiBjbGFzcz0iYmxvY2sgYmxvY2stYmxvY2sgZmlyc3QgbGFzdCBvZGQiPgotCQkJCQkJCQk8ZGl2IGNsYXNzPSJibG9jay1jb250ZW50IGNsZWFyZml4Ij4KLQkJCQkJCQkJPC9kaXY+Ci0JCQkJCQkJPC9kaXY+Ci0JCQkJCQk8L2Rpdj4KLQkJCQkJPC9kaXY+Ci0KLQkJCTwvZGl2PjwvZGl2PgotCQkJPC9oZWFkZXI+Ci0JCQk8ZGl2IGlkPSJtYWluIiBjbGFzcz0iY2xlYXJmaXgiPgotCQkJCTxkaXYgY2xhc3M9InBhZ2Utd2lkdGgiPjxkaXYgY2xhc3M9InBhZ2Utd2lkdGgtaW5uZXIgY2xlYXJmaXgiIHN0eWxlPSJtYXJnaW46NTBweDsgbWFyZ2luLXRvcDogMHB4OyI+Ci0JCQkJCQk8YSBpZD0ibWFpbi1jb250ZW50Ij48L2E+IAotCQkJCQkJPGRpdiBpZD0idGFicyI+Ci0JCQkJCQkJPHVsPgotCQkJCQkJCQk8bGk+PGEgaHJlZj0iI3RhYnMtMSI+U3dpdGNoZXM8L2E+PC9saT4KLQkJCQkJCQkJPGxpPjxhIGhyZWY9IiN0YWJzLTIiPkludGVyLVN3aXRjaCBMaW5rczwvYT48L2xpPgotCQkJCQkJCQk8bGk+PGEgaHJlZj0iI3RhYnMtMyI+SG9zdHM8L2E+PC9saT4KLQkJCQkJCQkJPGxpPjxhIGhyZWY9IiN0YWJzLTQiPlR1bm5lbHM8L2E+PC9saT4KLQkJCQkJCQkJPGxpPjxhIGhyZWY9IiN0YWJzLTUiPlRvcG9sb2d5PC9hPjwvbGk+Ci0JCQkJCQkJCTxzcGFuIGNsYXNzPSJyZWZyZXNoIiBvbkNsaWNrPSJyZWZyZXNoVGFibGUoOTkpOyIgc3R5bGU9ImZsb2F0OiByaWdodDsgcGFkZGluZzogLjZlbTsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OjE7Ij48aW1nIHNyYz0iaW1hZ2VzL3JlZnJlc2gucG5nIiBib3JkZXI9IjAiPjwvc3Bhbj4KLQkJCQkJCQk8L3VsPgotCQkJCQkJCTxkaXYgaWQ9InRhYnMtMSI+Ci0JCQkJCQkJCTxkaXYgaWQ9InN3aXRjaFRhYmxlSG9sZGVyIiBjbGFzcz0iZHluYW1pY3RhYmxlIj4KLQkJCQkJCQkJPC9kaXY+Ci0JCQkJCQkJPC9kaXY+Ci0JCQkJCQkJPGRpdiBzdHlsZT0iY2xlYXI6IGJvdGg7Ij48L2Rpdj4KLQkJCQkJCQk8ZGl2IGlkPSJ0YWJzLTIiPgotCQkJCQkJCQk8ZGl2IGlkPSJsaW5rVGFibGVIb2xkZXIiIGNsYXNzPSJkeW5hbWljdGFibGUiPgotCQkJCQkJCQk8L2Rpdj4KLQkJCQkJCQk8L2Rpdj4KLQkJCQkJCQk8ZGl2IHN0eWxlPSJjbGVhcjogYm90aDsiPjwvZGl2PgotCQkJCQkJCTxkaXYgaWQ9InRhYnMtMyI+Ci0JCQkJCQkJCTxkaXYgaWQ9ImRldmljZVRhYmxlSG9sZGVyIiBjbGFzcz0iZHluYW1pY3RhYmxlIj4KLQkJCQkJCQkJPC9kaXY+Ci0JCQkJCQkJPC9kaXY+Ci0JCQkJCQkJPGRpdiBpZD0idGFicy00Ij4KLQkJCQkJCQkJPGRpdiBpZD0idHVubmVsVGFibGVIb2xkZXIiIGNsYXNzPSJkeW5hbWljdGFibGUiPgotCQkJCQkJCQk8L2Rpdj4KLQkJCQkJCQk8L2Rpdj4KLQkJCQkJCQk8ZGl2IHN0eWxlPSJjbGVhcjogYm90aDsiPjwvZGl2PgotCQkJCQkJCTxkaXYgaWQ9InRhYnMtNSI+Ci0JCQkJCQkJCTxkaXYgaWQ9IlRvcG9sb2d5VGFibGVIb2xkZXIiIGNsYXNzPSJkeW5hbWljdGFibGUiIHN0eWxlPSJib3JkZXI6IDFweCAjZTVlNWU1OyI+Ci0JCQkJCQkJCQk8ZGl2IGlkPSJjb250YWluZXIiPgotCQkJCQkJCQkJCTxkaXYgaWQ9ImNlbnRlci1jb250YWluZXIiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlNWU1OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7Ij4KLQkJCQkJCQkJCQkJPGRpdiBpZD0iaW5mb3ZpcyI+PC9kaXY+ICAgIAotCQkJCQkJCQkJCTwvZGl2PgotCQkJCQkJCQkJCTxkaXYgaWQ9ImxvZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48L2Rpdj4KLQkJCQkJCQkJCTwvZGl2PgotCQkJCQkJCQk8L2Rpdj4KLQkJCQkJCQkJPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeTsgLW1zLXRleHQtanVzdGlmeTogZGlzdHJpYnV0ZS1hbGwtbGluZXM7IHRleHQtanVzdGlmeTogZGlzdHJpYnV0ZS1hbGwtbGluZXM7Ij4KLQotCQkJCQkJCQkJPGRpdiBzdHlsZT0id2lkdGg6IDEwMCU7IGRpc3BsYXk6IGlubGluZS1ibG9jayI+PC9kaXY+Ci0KLQkJCQkJCQkJPC9kaXY+Ci0KLQkJCQkJCQkJPGRpdiBzdHlsZT0iY2xlYXI6IGJvdGg7Ij48L2Rpdj4KLQotCQkJCQkJCTwvZGl2PgotCi0JCQkJCQkJPCEtLSBNYWluIGNvbnRlbnQgaW5uZXItLT4KLQotCQkJCQkJPC9kaXY+Ci0JCQkJPC9kaXY+PC9kaXY+Ci0JCQkJPGZvb3RlciBpZD0iZm9vdGVyIiByb2xlPSJjb250ZW50aW5mbyI+Ci0JCQkJPGRpdiBjbGFzcz0icGFnZS13aWR0aCI+PGRpdiBjbGFzcz0icGFnZS13aWR0aC1pbm5lciBjbGVhcmZpeCI+ICA8ZGl2IGNsYXNzPSJyZWdpb24gcmVnaW9uLWZvb3RlciI+Ci0JCQkJCQkJPGRpdiBpZD0iYmxvY2stcDYtaGVscGVyLWZvb3RlciIgY2xhc3M9ImJsb2NrIGJsb2NrLXA2LWhlbHBlciBmaXJzdCBsYXN0IG9kZCI+Ci0KLQotCQkJCQkJCQk8ZGl2IGNsYXNzPSJibG9jay1jb250ZW50IGNsZWFyZml4Ij4KLQkJCQkJCQkJCTxzcGFuIGlkPSJ1aS1mb290ZXItc3RhdGVtZW50IiBzdHlsZT0iZm9udC1mYW1pbHk6IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFweDsgcGFkZGluZy1sZWZ0OiA0NTsiPjxjZW50ZXI+Jm5ic3A7ICYjMTY5OzIwMTMgT3BlbkRheWxpZ2h0LCBBIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0LiBBbGwgUmlnaHRzIFJlc2VydmVkLjwvY2VudGVyPjwvc3Bhbj4gIDwvZGl2PgotCQkJCQkJCTwvZGl2PgotCQkJCQkJPC9kaXY+Ci0JCQkJPC9kaXY+PC9kaXY+Ci0JCQkJPC9mb290ZXI+Ci0KLQkJCQk8ZGl2IGlkPSJkdW1waW5nZ3JvdW5kIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPjwvZGl2PiAKLQotCi0JCQkJPCEtLSAvI3BhZ2UgLS0+Ci0gICAgICAgICAgICAgICAgPHNjcmlwdCBzcmM9InN0YXRpYy9qcy90aGlyZHBhcnR5L2ppdC5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgICAgICAgICAgPHNjcmlwdCBzcmM9InN0YXRpYy9qcy90aGlyZHBhcnR5L2pxdWVyeS0xLjkuMS5taW4uanMiPjwvc2NyaXB0PiAgCi0gICAgICAgICAgICAgICAgPHNjcmlwdCBzcmM9InN0YXRpYy9qcy90aGlyZHBhcnR5L2pxdWVyeS11aS0xLjEwLjIuY3VzdG9tLm1pbi5qcyI+PC9zY3JpcHQ+Ci0JCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotCi0JCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7Ci0JCQkJCQkJcmVmcmVzaFRhYmxlKDk5KTsKLQkJCQkJCQl9KTsKLSQoZnVuY3Rpb24oKSB7Ci0JCSQoICIjdGFicyIgKS50YWJzKHsKLWFjdGl2YXRlOiBmdW5jdGlvbiggZXZlbnQsIHVpICkgeyByZWZyZXNoVGFibGUodWkubmV3VGFiLmlkKTsgfQotfSk7Ci0JCS8vIEhvdmVyIHN0YXRlcyBvbiB0aGUgc3RhdGljIHdpZGdldHMKLQkJJCggIiNkaWFsb2ctbGluaywgI2ljb25zIGxpIiApLmhvdmVyKAotCQkJZnVuY3Rpb24oKSB7Ci0JCQkkKCB0aGlzICkuYWRkQ2xhc3MoICJ1aS1zdGF0ZS1ob3ZlciIgKTsKLQkJCX0sCi0JCQlmdW5jdGlvbigpIHsKLQkJCSQoIHRoaXMgKS5yZW1vdmVDbGFzcyggInVpLXN0YXRlLWhvdmVyIiApOwotCQkJfQotCQkJKTsKLQkJfSk7Ci0KLQotZnVuY3Rpb24gcmVmcmVzaFRhYmxlKGNob2ljZSl7Ci0Jc3dpdGNoKGNob2ljZSkgewotCQljYXNlIDA6Ci0JCQkkKCcjc3dpdGNoVGFibGVIb2xkZXInKS5sb2FkKCd1aS9zaG93X3N3aXRjaCcpOwotCQkJYnJlYWs7Ci0JCWNhc2UgMToKLQkJCSQoJyNsaW5rVGFibGVIb2xkZXInKS5sb2FkKCd1aS9zaG93X2xpbmsnKTsKLQkJCWJyZWFrOwotCQljYXNlIDI6Ci0JCQkkKCcjZGV2aWNlVGFibGVIb2xkZXInKS5sb2FkKCd1aS9zaG93X2hvc3QnKTsKLQkJCWJyZWFrOwotCQljYXNlIDM6Ci0JCQkkKCcjdHVubmVsVGFibGVIb2xkZXInKS5sb2FkKCd1aS9zaG93X3R1bm5lbCcpOwotCQkJYnJlYWs7Ci0JCWNhc2UgNDoKLQkJCXZhciB0bXBKU09OID0gbG9hZFRvcG9sb2d5SlNPTigpOwotCQkJZmQubG9hZEpTT04odG1wSlNPTik7Ci0JCQlmZC5yZWZyZXNoKCk7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCSQoJyNzd2l0Y2hUYWJsZUhvbGRlcicpLmxvYWQoJ3VpL3Nob3dfc3dpdGNoJyk7Ci0JCQkkKCcjbGlua1RhYmxlSG9sZGVyJykubG9hZCgndWkvc2hvd19saW5rJyk7Ci0JCQkkKCcjZGV2aWNlVGFibGVIb2xkZXInKS5sb2FkKCd1aS9zaG93X2hvc3QnKTsKLQkJCSQoJyN0dW5uZWxUYWJsZUhvbGRlcicpLmxvYWQoJ3VpL3Nob3dfdHVubmVsJyk7Ci0JCQl2YXIgdG1wSlNPTiA9IGxvYWRUb3BvbG9neUpTT04oKTsKLQkJCWZkLmxvYWRKU09OKHRtcEpTT04pOwotCQkJZmQucmVmcmVzaCgpOwotCQkJYnJlYWs7Ci0JfQotCS8vc2V0VGltZW91dChyZWZyZXNoVGFibGUsIDUwMDApOwotfQotICAgIGZ1bmN0aW9uIGxvYWRUb3BvbG9neUpTT04oKXsKLSAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoICk7Ci0gICAgICAgIHJlcXVlc3Qub3BlbigiR0VUIiwgInVpL2J1aWxkX3RvcG9sb2d5IiwgZmFsc2UpOwotICAgICAgICByZXF1ZXN0LnNlbmQobnVsbCk7Ci0gICAgICAgIHZhciBqc29uRklMRSA9IHJlcXVlc3QucmVzcG9uc2U7Ci0gICAgICAgIGV2YWwoanNvbkZJTEUpOwotICAgICAgICByZXR1cm4oanNvbik7Ci0gICAgfQotICAgIDwvc2NyaXB0PgotPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InN0YXRpYy9qcy90b3BvbG9neS5qcyI+PC9zY3JpcHQ+Ci0KLXslIGVuZGJsb2NrICV9CmRpZmYgLS1naXQgYS9jbGkvc2RuY29uL3VpL3Rlc3QucHkgYi9jbGkvc2RuY29uL3VpL3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDg4OGQwN2IuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotZnJvbSBzaG93c3dpdGNoIGltcG9ydCBzaG93X3N3aXRjaF9kYXRhCi1pbXBvcnQganNvbiwgdXJsbGliMgotCi1kZWYgbWFpbigpOgotICAgIHJlcXVlc3QgPSBOb25lCi0gICAgcHJpbnQgc2hvd19zd2l0Y2hfZGF0YShOb25lKQotCi0gICAgI3VybCA9ICdodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzdC92MS9tb2RlbC9zd2l0Y2gtYWxpYXMvJwotICAgICNwcmludCBqc29uLmxvYWQodXJsbGliMi51cmxvcGVuKHVybCkpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgbWFpbigpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91aS92aWV3cy5weSBiL2NsaS9zZG5jb24vdWkvdmlld3MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDNiN2E5MTEuLjAwMDAwMDAKLS0tIGEvY2xpL3NkbmNvbi91aS92aWV3cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotIwotCi0jICBWaWV3cyBmb3IgdGhlIHdlYiBVSQotIwotCi1mcm9tIGRqYW5nby5zaG9ydGN1dHMgaW1wb3J0IHJlbmRlcl90b19yZXNwb25zZSwgcmVuZGVyCi1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgc2ltcGxlanNvbgotZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlCi1mcm9tIGRqYW5nby5jb250cmliLmF1dGguZGVjb3JhdG9ycyBpbXBvcnQgbG9naW5fcmVxdWlyZWQKLWZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5tb2RlbHMgaW1wb3J0IFVzZXIKLWZyb20gZGphbmdvLnRlbXBsYXRlIGltcG9ydCBSZXF1ZXN0Q29udGV4dAotZnJvbSBkamFuZ28udGVtcGxhdGUubG9hZGVyIGltcG9ydCByZW5kZXJfdG9fc3RyaW5nCi1mcm9tIHNkbmNvbi5hcHBsb2FkZXIgaW1wb3J0IEFwcExvYWRlciwgQXBwTGlzdGVyCi1mcm9tIHNkbmNvbi5jbHVzdGVyQWRtaW4udXRpbHMgaW1wb3J0IGNvbmRpdGlvbmFsbHksIGlzQ2xvdWRCdWlsZAotZnJvbSBzZG5jb24uY2x1c3RlckFkbWluLm1vZGVscyBpbXBvcnQgQ3VzdG9tZXIsIENsdXN0ZXIsIEN1c3RvbWVyVXNlcgotZnJvbSBzY3JpcHRzLnNob3dzd2l0Y2ggaW1wb3J0IHNob3dfc3dpdGNoX2RhdGEKLWZyb20gc2NyaXB0cy5idWlsZHRvcG9sb2d5IGltcG9ydCBidWlsZF90b3BvbG9neV9kYXRhCi1mcm9tIHNjcmlwdHMuc2hvd2xpbmsgaW1wb3J0IHNob3dfbGlua19kYXRhCi1mcm9tIHNjcmlwdHMuc2hvd3R1bm5lbCBpbXBvcnQgc2hvd190dW5uZWxfZGF0YQotZnJvbSBzY3JpcHRzLnNob3dob3N0IGltcG9ydCBzaG93X2hvc3RfZGF0YQotaW1wb3J0IG9zCi0KLQotSlNPTl9DT05URU5UX1RZUEUgPSAnYXBwbGljYXRpb24vanNvbicKLQotIyAtLS0gVmlldyBmb3IgdGhlIHJvb3QgcGFnZSBvZiBhbnkgYXBwbGljYXRpb24KLWRlZiBpbmRleChyZXF1ZXN0KToKLSAgICByZXR1cm4gcmVuZGVyX3RvX3Jlc3BvbnNlKCd1aS90ZW1wbGF0ZXMvaW5kZXguaHRtbCcpCi0KLWRlZiBzaG93X3N3aXRjaChyZXF1ZXN0KToKLSAgICBodG1sID0gc2hvd19zd2l0Y2hfZGF0YShyZXF1ZXN0KQotICAgIHJldHVybiBIdHRwUmVzcG9uc2UoaHRtbCkKLQotZGVmIHNob3dfbGluayhyZXF1ZXN0KToKLSAgICBodG1sID0gc2hvd19saW5rX2RhdGEocmVxdWVzdCkKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKGh0bWwpCi0KLWRlZiBzaG93X2hvc3QocmVxdWVzdCk6Ci0gICAgaHRtbCA9IHNob3dfaG9zdF9kYXRhKHJlcXVlc3QpCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShodG1sKQotCi1kZWYgc2hvd190dW5uZWwocmVxdWVzdCk6Ci0gICAgaHRtbCA9IHNob3dfdHVubmVsX2RhdGEocmVxdWVzdCkKLSAgICByZXR1cm4gSHR0cFJlc3BvbnNlKGh0bWwpCi0KLQotZGVmIGJ1aWxkX3RvcG9sb2d5KHJlcXVlc3QpOgotICAgIGh0bWwgPSBidWlsZF90b3BvbG9neV9kYXRhKHJlcXVlc3QpCi0gICAgcmV0dXJuIEh0dHBSZXNwb25zZShodG1sKQotCi0KLSAgIApkaWZmIC0tZ2l0IGEvY2xpL3NkbmNvbi91cmxzLnB5IGIvY2xpL3NkbmNvbi91cmxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4NDc4ZWFiLi4wMDAwMDAwCi0tLSBhL2NsaS9zZG5jb24vdXJscy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBCaWcgU3dpdGNoIE5ldHdvcmtzLCBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKLSMgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKLSMgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nCi0jIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSMKLQotaW1wb3J0IGRqYW5nby52aWV3cy5nZW5lcmljLnNpbXBsZSwgb3MsIGNvcmV1aS5tb2RlbHMKLWZyb20gZGphbmdvLmNvbmYudXJscy5kZWZhdWx0cyBpbXBvcnQgKgotZnJvbSBkamFuZ28uY29udHJpYiBpbXBvcnQgYWRtaW4KLWZyb20gYXBwbG9hZGVyIGltcG9ydCBBcHBMb2FkZXIKLQotYWRtaW4uYXV0b2Rpc2NvdmVyKCkKLQotdXJscGF0dGVybnMgPSBwYXR0ZXJucygnJywKLSAgICAjIEV4YW1wbGU6Ci0gICAgIyAocidec2RuY29uLycsIGluY2x1ZGUoJ3NkbmNvbi5mb28udXJscycpKSwKLQotICAgICMgVW5jb21tZW50IHRoZSBhZG1pbi9kb2MgbGluZSBiZWxvdyBhbmQgYWRkICdkamFuZ28uY29udHJpYi5hZG1pbmRvY3MnIAotICAgICMgdG8gSU5TVEFMTEVEX0FQUFMgdG8gZW5hYmxlIGFkbWluIGRvY3VtZW50YXRpb246Ci0gICAgIyhyJ15hZG1pbi9kb2MvJywgaW5jbHVkZSgnZGphbmdvLmNvbnRyaWIuYWRtaW5kb2NzLnVybHMnKSksCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgVmlld3MgZm9yIHRoZSB3ZWIgVUkKLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgIChyJ14kJywgJ3NkbmNvbi51aS52aWV3cy5pbmRleCcpLAotICAgIChyJ3VpL3Nob3dfc3dpdGNoJywgJ3NkbmNvbi51aS52aWV3cy5zaG93X3N3aXRjaCcpLAotICAgIChyJ3VpL3Nob3dfaG9zdCcsICdzZG5jb24udWkudmlld3Muc2hvd19ob3N0JyksCi0gICAgKHIndWkvc2hvd19saW5rJywgJ3NkbmNvbi51aS52aWV3cy5zaG93X2xpbmsnKSwKLSAgICAocid1aS9zaG93X3R1bm5lbCcsICdzZG5jb24udWkudmlld3Muc2hvd190dW5uZWwnKSwKLSAgICAocid1aS9idWlsZF90b3BvbG9neScsICdzZG5jb24udWkudmlld3MuYnVpbGRfdG9wb2xvZ3knKSwKLSAgICAjIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGVuYWJsZSB0aGUgYWRtaW46Ci0gICAgKHInXmFkbWluLycsIGluY2x1ZGUoYWRtaW4uc2l0ZS51cmxzKSksCi0gICAgKHInYWNjb3VudHMvbG9naW4vJCcsICdkamFuZ28uY29udHJpYi5hdXRoLnZpZXdzLmxvZ2luJyksCi0gICAgKHInbG9nb3V0LyQnLCAnZGphbmdvLmNvbnRyaWIuYXV0aC52aWV3cy5sb2dvdXQnKSwKLSAgICAocidwYXNzd29yZF9jaGFuZ2UvJCcsICdkamFuZ28uY29udHJpYi5hdXRoLnZpZXdzLnBhc3N3b3JkX2NoYW5nZScpLAotICAgIChyJ3Bhc3N3b3JkX2NoYW5nZV9kb25lLyQnLCAnZGphbmdvLmNvbnRyaWIuYXV0aC52aWV3cy5wYXNzd29yZF9jaGFuZ2VfZG9uZScpLAotICAgIChyJ3Rva2VuLz8kJywgJ3NkbmNvbi5jbHVzdGVyQWRtaW4udmlld3MudG9rZW5fdmlldycpLAotICAgIChyJ3Rva2VuX2dlbmVyYXRlLz8kJywgJ3NkbmNvbi5jbHVzdGVyQWRtaW4udmlld3MudG9rZW5fZ2VuZXJhdGUnKSwKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBWaWV3cyB0aGF0IGltcGxlbWVudCB0aGUgUkVTVCBBUEkKLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgIChyJ15yZXN0L3YxL2RhdGEvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fdXNlcl9kYXRhX2xpc3QnKSwKLSAgICAocidecmVzdC92MS9kYXRhLyg/UDxuYW1lPltBLVphLXowLTlfOi4vPTtcLV0rKS8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3VzZXJfZGF0YScpLAotCi0gICAgIyBBUElzIHRvIGdldCB0ZW5hbnQgaW5mbyBhbmQgYnVpbGQgdHlwZQotICAgIChyJ15yZXN0L3YxL2N1c3RvbWVyLz8kJywgJ3NkbmNvbi5jbHVzdGVyQWRtaW4udmlld3Muc2Vzc2lvbl9jbHVzdGVyQWRtaW4nKSwKLSAgICAocidecmVzdC92MS9wZXJzb25hbGl0eS8/JCcsICdzZG5jb24uY2x1c3RlckFkbWluLnZpZXdzLmdldF9ub2RlX3BlcnNvbmFsaXR5JyksCi0KLSAgICAjIFJFU1QgQVBJIHRvIGFjY2VzcyBzdGF0aXN0aWNzIGNvdW50ZXJzIGZyb20gc2RucGxhdGZvcm0KLSAgICAocidecmVzdC92MS9yZWFsdGltZXN0YXRzL2NvdW50ZXIvY2F0ZWdvcmllcy8oP1A8ZHBpZD5bQS1aYS16MC05XzouXC1dKykvKD9QPHN0YXR0eXBlPltBLVphLXowLTlfOi5cLV0rKS8oP1A8bGF5ZXI+WzAtOV0pLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3NkbnBsYXRmb3JtX2NvdW50ZXJfY2F0ZWdvcmllcycpLAotICAgIChyJ15yZXN0L3YxL3JlYWx0aW1lc3RhdHMvY291bnRlci8oP1A8c3RhdHR5cGU+W0EtWmEtejAtOV86LlwtXSspLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3NkbnBsYXRmb3JtX3JlYWx0aW1lc3RhdHMnKSwKLSAgICAocidecmVzdC92MS9yZWFsdGltZXN0YXRzL2NvdW50ZXIvKD9QPGRwaWQ+W0EtWmEtejAtOV86LlwtXSspLyg/UDxzdGF0dHlwZT5bQS1aYS16XSspLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3NkbnBsYXRmb3JtX3JlYWx0aW1lc3RhdHMnKSwKLSAgICAocidecmVzdC92MS9yZWFsdGltZXN0YXRzL3RhYmxlLyg/UDx0YWJsZXR5cGU+W0EtWmEtel0rKS9mbG93Lyg/UDxkcGlkPltBLVphLXowLTlfOi4vXC1dKykvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fdGFibGVyZWFsdGltZXN0YXRzJyksCi0gICAgKHInXnJlc3QvdjEvcmVhbHRpbWVzdGF0cy9ncm91cC8oP1A8Z3JvdXBJZD5bMC05XSspLyg/UDxkcGlkPltBLVphLXowLTlfOi4vXC1dKykvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fcmVhbHRpbWVncm91cHN0YXRzJyksCi0gICAgKHInXnJlc3QvdjEvcmVhbHRpbWVzdGF0cy8oP1A8c3RhdHR5cGU+W0EtWmEtel0rKS8oP1A8ZHBpZD5bQS1aYS16MC05XzouL1wtXSspLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3JlYWx0aW1lc3RhdHMnKSwKLSAgICAocidecmVzdC92MS9jb250cm9sbGVyL3N0YXRzLyg/UDxzdGF0dHlwZT5bQS1aYS16XSspLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2NvbnRyb2xsZXJfc3RhdHMnKSwKLSAgICAocidecmVzdC92MS9jb250cm9sbGVyL3N0b3JhZ2UvdGFibGVzLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2NvbnRyb2xsZXJfc3RvcmFnZV90YWJsZV9saXN0JyksCi0gICAgCi0KLSAgICAjIFJFU1QgQVBJIFZOUy9kZXZpY2UgaW5mb3JtYXRpb24KLSAgICAocidecmVzdC92MS9kZXZpY2UnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fZGV2aWNlJyksCi0gICAgKHInXnJlc3QvdjEvc3dpdGNoZXMnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fc3dpdGNoZXMnKSwKLSAgICAocidecmVzdC92MS9yb3V0ZXJzJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3JvdXRlcnMnKSwKLSAgICAocidecmVzdC92MS9yb3V0ZXIvKD9QPGRwaWQ+W0EtWmEtejAtOV86LlwtXSspLyg/UDxzdGF0dHlwZT5bQS1aYS16XSspJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3JvdXRlcl9zdGF0cycpLAotICAgIChyJ15yZXN0L3YxL2xpbmtzJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2xpbmtzJyksCi0gICAgKHInXnJlc3QvdjEvbWFzdGVyc2hpcCcsICdzZG5jb24ucmVzdC52aWV3cy5kb19tYXN0ZXJzaGlwJyksCi0gICAgKHInXnJlc3QvdjEvdm5zL2RldmljZS1pbnRlcmZhY2UnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fdm5zX2RldmljZV9pbnRlcmZhY2UnKSwKLSAgICAocidecmVzdC92MS92bnMvaW50ZXJmYWNlJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3Zuc19pbnRlcmZhY2UnKSwKLSAgICAocidecmVzdC92MS92bnMvcmVhbHRpbWVzdGF0cy9mbG93Lyg/UDx2bnNOYW1lPltBLVphLXowLTlfOi58XC1dKykvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fdm5zX3JlYWx0aW1lc3RhdHNfZmxvdycsIHsnY2F0ZWdvcnknOiAndm5zJ30pLAotICAgIChyJ15yZXN0L3YxL3ZucycsICdzZG5jb24ucmVzdC52aWV3cy5kb192bnMnKSwKLQotICAgICMgUkVTVCBBUEkgdG8gYWNjZXNzIHJlYWx0aW1lIHN0YXR1cyBmcm9tIHNkbnBsYXRmb3JtCi0gICAgKHInXnJlc3QvdjEvcmVhbHRpbWVzdGF0dXMvbmV0d29yay90dW5uZWxzdGF0dXMvYWxsL2FsbC8/JCcsICdzZG5jb24ucmVzdC52aWV3cy5kb190b3BvbG9neV90dW5uZWxfc3RhdHVzJyksCi0gICAgKHInXnJlc3QvdjEvcmVhbHRpbWVzdGF0dXMvbmV0d29yay90dW5uZWxzdGF0dXMvKD9QPHNyY2RwaWQ+W0EtWmEtejAtOV86LlwtXSspLyg/UDxkc3RkcGlkPltBLVphLXowLTlfOi5cLV0rKS8/JCcsICdzZG5jb24ucmVzdC52aWV3cy5kb190b3BvbG9neV90dW5uZWxfc3RhdHVzJyksCi0gICAgKHInXnJlc3QvdjEvcmVhbHRpbWVzdGF0dXMvbmV0d29yay90dW5uZWx2ZXJpZnkvKD9QPHNyY2RwaWQ+W0EtWmEtejAtOV86LlwtXSspLyg/UDxkc3RkcGlkPltBLVphLXowLTlfOi5cLV0rKS8/JCcsICdzZG5jb24ucmVzdC52aWV3cy5kb190b3BvbG9neV90dW5uZWxfdmVyaWZ5JyksCi0gICAgKHInXnJlc3QvdjEvcmVhbHRpbWVzdGF0dXMvbmV0d29yay8oP1A8c3ViY2F0ZWdvcnk+W0EtWmEtejAtOV86LlwtXSspLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3NkbnBsYXRmb3JtX3JlYWx0aW1lc3RhdHVzJywgeydjYXRlZ29yeSc6ICduZXR3b3JrJ30pLAotCi0gICAgIyBSRVNUIEFQSSBmb3IgdGVzdGluZyB3aXRoIEV4cGxhaW4gUGFja2V0IGluIHJlYWx0aW1lCi0gICAgKHInXnJlc3QvdjEvcmVhbHRpbWV0ZXN0L25ldHdvcmsvKD9QPHN1YmNhdGVnb3J5PltBLVphLXowLTlfOi5cLV0rKS8/JCcsICdzZG5jb24ucmVzdC52aWV3cy5kb19zZG5wbGF0Zm9ybV9yZWFsdGltZXRlc3QnLCB7J2NhdGVnb3J5JzogJ25ldHdvcmsnfSksCi0gICAgCi0gICAgIyBSRVNUIEFQSSBmb3IgYWNjZXNzaW5nIGNvbnRyb2xsZXIgc3lzdGVtIGluZm9ybWF0aW9uCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL3ZlcnNpb24vPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fc3lzdGVtX3ZlcnNpb24nLCB7fSksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL2ludGVyZmFjZXMvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fc3lzdGVtX2luZXQ0X2ludGVyZmFjZXMnLCB7fSksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL3VwdGltZS8/JCcsICdzZG5jb24ucmVzdC52aWV3cy5kb19zeXN0ZW1fdXB0aW1lJywge30pLAotICAgIChyJ15yZXN0L3YxL3N5c3RlbS9jbG9jay91dGMvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fc3lzdGVtX2Nsb2NrJywgeydsb2NhbCc6IEZhbHNlfSksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL2Nsb2NrL2xvY2FsLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3N5c3RlbV9jbG9jaycsIHsnbG9jYWwnOiBUcnVlfSksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL3RpbWV6b25lcy8oP1A8bGlzdF90eXBlPltBLVphLXowLTlfXC1dKykvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fc3lzdGVtX3RpbWVfem9uZV9zdHJpbmdzJyksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL2NvbnRyb2xsZXIvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fY29udHJvbGxlcicpLAotICAgIChyJ15yZXN0L3YxL3N5c3RlbS9oYS9yb2xlLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2xvY2FsX2hhX3JvbGUnKSwKLSAgICAocidecmVzdC92MS9zeXN0ZW0vaGEvZmFpbGJhY2svPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9faGFfZmFpbGJhY2snKSwKLSAgICAocidecmVzdC92MS9zeXN0ZW0vaGEvcHJvdmlzaW9uLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2hhX3Byb3Zpc2lvbicpLAotICAgIChyJ15yZXN0L3YxL3N5c3RlbS9oYS9jbHVzdGVybmFtZS8/JCcsICdzZG5jb24ucmVzdC52aWV3cy5kb19jbHVzdGVybmFtZScpLAotICAgIChyJ15yZXN0L3YxL3N5c3RlbS9oYS9kZWNvbW1pc3Npb24vPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fZGVjb21taXNzaW9uJyksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL2hhL2RlY29tbWlzc2lvbi1pbnRlcm5hbC8/JCcsICdzZG5jb24ucmVzdC52aWV3cy5kb19kZWNvbW1pc3Npb25faW50ZXJuYWwnKSwKLSAgICAocidecmVzdC92MS9zeXN0ZW0vY2hlY2stY29uZmlnLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2NoZWNrX2NvbmZpZycpLAotICAgIChyJ15yZXN0L3YxL3N5c3RlbS9yZWxvYWQvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fcmVsb2FkJyksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL3Jlc2V0YnNjLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3Jlc2V0YnNjJyksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL2RlbGV0ZS1pbWFnZXMtcGFzc3dkLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2RlbGV0ZV9pbWFnZXNfcGFzc3dkJyksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL3VwbG9hZC1kYXRhLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3VwbG9hZF9kYXRhJyksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL2xvZy8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3N5c3RlbV9sb2dfbGlzdCcpLAotICAgIChyJ15yZXN0L3YxL3N5c3RlbS9sb2cvKD9QPGxvZ19uYW1lPltBLVphLXowLTlfXC1dKykkJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3N5c3RlbV9sb2cnKSwKLSAgICAKLSAgICAjIFJFU1QgQVBJIGZvciB1cGdyYWRlcwotICAgIChyJ15yZXN0L3YxL3N5c3RlbS91cGdyYWRlL2V4dHJhY3QtaW1hZ2UtbWFuaWZlc3QvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fZXh0cmFjdF91cGdyYWRlX3BrZ19tYW5pZmVzdCcpLAotICAgIChyJ15yZXN0L3YxL3N5c3RlbS91cGdyYWRlL2ltYWdlLW5hbWUvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fZ2V0X3VwZ3JhZGVfcGtnJyksCi0gICAgKHInXnJlc3QvdjEvc3lzdGVtL3VwZ3JhZGUvZXhlY3V0ZS11cGdyYWRlLXN0ZXAvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fZXhlY3V0ZV91cGdyYWRlX3N0ZXAnKSwKLSAgICAocidecmVzdC92MS9zeXN0ZW0vdXBncmFkZS9jbGVhbnVwLW9sZC1pbWFnZXMvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fY2xlYW51cF9vbGRfcGtncycpLAotICAgIChyJ15yZXN0L3YxL3N5c3RlbS91cGdyYWRlL2Fib3J0Lz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2Fib3J0X3VwZ3JhZGUnKSwKLSAgIAotICAgICAjIFJFU1QgQVBJIGZvciBjb25maWcgcm9sbGJhY2sKLSAgICAocidecmVzdC92MS9zeXN0ZW0vcm9sbGJhY2svY29uZmlnLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2NvbmZpZ19yb2xsYmFjaycpLAotICAgIChyJ15yZXN0L3YxL3N5c3RlbS9yb2xsYmFjay9kaWZmY29uZmlnLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2RpZmZfY29uZmlnJyksCi0KLSAgICAjIFZpZXdzIGZvciB0aGUgc3RhdHMgUkVTVCBBUEkKLSAgICAocidecmVzdC92MS9zdGF0cy9tZXRhZGF0YS8oP1A8Y2x1c3Rlcj5bQS1aYS16MC05XzouXC1dKykoLyg/UDxzdGF0c190eXBlPltBLVphLXowLTlfXC1dKykpPy8/JCcsICdzZG5jb24uc3RhdHMudmlld3MuZG9fZ2V0X3N0YXRzX21ldGFkYXRhJyksCi0gICAgKHInXnJlc3QvdjEvc3RhdHMvaW5kZXgvKD9QPGNsdXN0ZXI+W0EtWmEtejAtOV86LlwtXSspLyg/UDx0YXJnZXRfdHlwZT5bQS1aYS16MC05X1wtXSspLyg/UDx0YXJnZXRfaWQ+W0EtWmEtejAtOV9cOlwuXC1dKykoLyg/UDxzdGF0c190eXBlPltBLVphLXowLTlfXC1dKykpPy8/JCcsICdzZG5jb24uc3RhdHMudmlld3MuZG9fZ2V0X3N0YXRzX3R5cGVfaW5kZXgnKSwKLSAgICAocidecmVzdC92MS9zdGF0cy90YXJnZXQvKD9QPGNsdXN0ZXI+W0EtWmEtejAtOV86LlwtXSspLz8kJywgJ3NkbmNvbi5zdGF0cy52aWV3cy5kb19nZXRfc3RhdHNfdGFyZ2V0X3R5cGVzJyksCi0gICAgKHInXnJlc3QvdjEvc3RhdHMvdGFyZ2V0Lyg/UDxjbHVzdGVyPltBLVphLXowLTlfOi5cLV0rKS8oP1A8dGFyZ2V0X3R5cGU+W0EtWmEtejAtOV9cLV0rKS8/JCcsICdzZG5jb24uc3RhdHMudmlld3MuZG9fZ2V0X3N0YXRzX3RhcmdldHMnKSwKLSAgICAocidecmVzdC92MS9zdGF0cy9kYXRhLyg/UDxjbHVzdGVyPltBLVphLXowLTlfOi5cLV0rKS8oP1A8dGFyZ2V0X3R5cGU+W0EtWmEtejAtOV9cLV0rKS8oP1A8dGFyZ2V0X2lkPltBLVphLXowLTlfXDpcLlwtXSspLyg/UDxzdGF0c190eXBlPltBLVphLXowLTlfXC1dKykvPyQnLCAnc2RuY29uLnN0YXRzLnZpZXdzLmRvX2dldF9zdGF0cycpLAotICAgIChyJ15yZXN0L3YxL3N0YXRzL2RhdGEvKD9QPGNsdXN0ZXI+W0EtWmEtejAtOV86LlwtXSspLz8kJywgJ3NkbmNvbi5zdGF0cy52aWV3cy5kb19wdXRfc3RhdHMnKSwKLSAgICAocidecmVzdC92MS9ldmVudHMvZGF0YS8oP1A8Y2x1c3Rlcj5bQS1aYS16MC05XzouXC1dKykvKD9QPG5vZGVfaWQ+W0EtWmEtejAtOV9cLlwtXSspLz8kJywgJ3NkbmNvbi5zdGF0cy52aWV3cy5kb19nZXRfZXZlbnRzJyksCi0gICAgKHInXnJlc3QvdjEvZXZlbnRzL2RhdGEvKD9QPGNsdXN0ZXI+W0EtWmEtejAtOV86LlwtXSspLz8kJywgJ3NkbmNvbi5zdGF0cy52aWV3cy5kb19wdXRfZXZlbnRzJyksCi0gICAgCi0gICAgIyBWaWV3cyBmb3IgdGhlIG1vZGVscwotICAgIChyJ15yZXN0L3YxL21vZGVsLyg/UDxtb2RlbF9uYW1lPltBLVphLXowLTlfXC1dKykoLyg/UDxpZD5bQS1aYS16MC05XzouXC18XSspKT8vPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9faW5zdGFuY2UnKSwKLSAgICAjIEdldCB0aGUgbW9kZWwgbGlzdAotICAgIChyJ15yZXN0L3YxL21vZGVsLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX21vZGVsX2xpc3QnKSwKLQotICAgICMgVmlld3MgZm9yIHRoZSBzeW50aGVzaXplZCB0YWJsZQotICAgIChyJ15yZXN0L3YxL3N5bnRoZXRpYy8oP1A8bW9kZWxfbmFtZT5bQS1aYS16MC05X1wtXSspKC8oP1A8aWQ+W0EtWmEtejAtOV86LlwtfF0rKSk/Lz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3N5bnRoZXRpY19pbnN0YW5jZScpLAotCi0KLSAgICAjIFJFU1QgQVBJIGZvciBwYWNrZXQgdHJhY2luZwotICAgIChyJ15yZXN0L3YxL3BhY2tldHRyYWNlLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3BhY2tldHRyYWNlJyksCi0KLSAgICAjIFZpZXdzIGZvciB0aGUgY29yZXVpIChiYXNlIGxheW91dCBhbmQgamF2YXNjcmlwdCkKLSAgICAocideY29yZXVpL3N0YXRpYy8oP1A8cGF0aD4uKikkJywgJ2RqYW5nby52aWV3cy5zdGF0aWMuc2VydmUnLCB7J2RvY3VtZW50X3Jvb3QnOiBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSsnL2NvcmV1aScsJ3N0YXRpYycpfSksCi0gICAgKHInXmNvcmV1aS9pbWcvKD9QPHBhdGg+LiopJCcsICdkamFuZ28udmlld3Muc3RhdGljLnNlcnZlJywgeydkb2N1bWVudF9yb290Jzogb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykrJy9jb3JldWknLCdpbWcnKX0pLAotCi0gICAgIyBSRVNUIEFQSXMgZm9yIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgaW5mb3JtYXRpb24gb2YgU0ROUGxhdGZvcm0gYW5kIFNETlBsYXRmb3JtCi0gICAgKHInXnJlc3QvdjEvcGVyZm9ybWFuY2UtbW9uaXRvci8oP1A8dHlwZT5bQS1aYS16MC05Xy5cLV0rKS8/JCcsICdzZG5jb24ucmVzdC52aWV3cy5kb19zZG5wbGF0Zm9ybV9wZXJmb3JtYW5jZV9tb25pdG9yJywgeydjYXRlZ29yeSc6J3BlcmZvcm1hbmNlLW1vbml0b3InfSksCi0KLSAgICAjIFJFU1QgQVBJcyBmb3IgSW50ZXJuYWwgZGVidWdnaW5nIGluZm9ybWF0aW9uIG9mIFNETlBsYXRmb3JtIGFuZCBTRE5QbGF0Zm9ybQotICAgIChyJ15yZXN0L3YxL2ludGVybmFsLWRlYnVncy8oP1A8Y29tcG9uZW50PltBLVphLXowLTlcLV0rKS8oP1A8cXVlcnk+W0EtWmEtejAtOT06XC1dKyk/Lz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3NkbnBsYXRmb3JtX2ludGVybmFsX2RlYnVncycsIHsnY2F0ZWdvcnknOidpbnRlcm5hbC1kZWJ1Z3MnfSksCi0KLSAgICAjIFJFU1QgQVBJcyBmb3IgRXZlbnQgSGlzdG9yeSBmcm9tIFNETlBsYXRmb3JtIGFuZCBTRE5QbGF0Zm9ybQotICAgIChyJ15yZXN0L3YxL2V2ZW50LWhpc3RvcnkvKD9QPGV2SGlzdE5hbWU+W0EtWmEtejAtOVwtXSspLyg/UDxjb3VudD5bMC05XSspPy8/JCcsICdzZG5jb24ucmVzdC52aWV3cy5kb19zZG5wbGF0Zm9ybV9ldmVudF9oaXN0b3J5JywgeydjYXRlZ29yeSc6J2V2ZW50LWhpc3RvcnknfSksCi0KLSAgICAjIFJFU1QgQVBJcyBmb3IgZGlzcGxheWluZyB0aGUgY29udGVudCBvZiBGbG93IENhY2hlIGluIHJlYWwtdGltZQotICAgICMgYXBwbE5hbWUgPSBBcHBsaWNhdGlvbiBOYW1lIChlLmcuIHZucykKLSAgICAjIGFwcGxJbnN0TmFtZSA9IEFwcGxpY2F0aW9uIEluc3RhbmNlIE5hbWUgKGUuZy4gbmFtZSBvZiB0aGUgdm5zIG9yICJhbGwiKQotICAgIChyJ15yZXN0L3YxL2Zsb3ctY2FjaGUvKD9QPGFwcGxOYW1lPltBLVphLXowLTlcLV0rKS8oP1A8YXBwbEluc3ROYW1lPltBLVphLXowLTk6LnxcLV0rKS8oP1A8cXVlcnlUeXBlPltBLVphLXowLTlcLV0rKT8vPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fZmxvd19jYWNoZScsIHsnY2F0ZWdvcnknOidmbG93LWNhY2hlJ30pLAotICAgICMocidecmVzdC92MS9mbG93LWNhY2hlLyg/UDxhcHBsTmFtZT5bQS1aYS16MC05XC1dKykvKD9QPGFwcGxJbnN0TmFtZT5bQS1aYS16MC05Oi58XC1dKykvKD9QPHF1ZXJ5VHlwZT5bQS1aYS16MC05XC1dKyk/Lz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX2xvY2FsJywgeyAndXJsJyA6IFsgJ2Zsb3ctY2FjaGUnIF0sIH0pLAotCi0gICAgIyBSRVNUIEFQSXMgZm9yIFR1bm5lbCBtYW5hZ2VyIHN0YXRlIGZyb20gU0ROUGxhdGZvcm0KLSAgICAocidecmVzdC92MS90dW5uZWwtbWFuYWdlci8oP1A8ZHBpZD5bQS1aYS16MC05XzouXC1dKykvPyQnLCAnc2RuY29uLnJlc3Qudmlld3MuZG9fc2RucGxhdGZvcm1fdHVubmVsX21hbmFnZXInKSwKLQotICAgICMgUkVTVCBBUElzIGZvciBjb250cm9sbGVyIHN1bW1hcnkgc3RhdGlzdGljcyAKLSAgICAocidecmVzdC92MS9jb250cm9sbGVyL3N1bW1hcnkkJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3NkbnBsYXRmb3JtX2NvbnRyb2xsZXJfc3VtbWFyeScpLAotICAgIAotICAgICMgUkVTVCBBUElzIGZvciBTUiB0dW5uZWwgCi0gICAgKHInXnJlc3QvdjEvdHVubmVsLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3NkbnBsYXRmb3JtX3R1bm5lbF9jb25maWcnKSwKLSAgICAocidecmVzdC92MS9zaG93dHVubmVsLz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3Nob3dfdHVubmVsJyksCi0gICAgIyBSRVNUIEFQSXMgZm9yIFNSIHBvbGljeSAKLSAgICAocidecmVzdC92MS9zaG93cG9saWN5Lz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3Nob3dfcG9saWN5JyksCi0gICAgKHInXnJlc3QvdjEvcG9saWN5Lz8kJywgJ3NkbmNvbi5yZXN0LnZpZXdzLmRvX3NkbnBsYXRmb3JtX3BvbGljeV9jb25maWcnKSwKLQotKQotCmRpZmYgLS1naXQgYS9jbGkvc2V0dXAuc2ggYi9jbGkvc2V0dXAuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDZhMWFkMzQuLjAwMDAwMDAKLS0tIGEvY2xpL3NldHVwLnNoCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotIyEvYmluL2Jhc2gKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEJpZyBTd2l0Y2ggTmV0d29ya3MsIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMS4wICh0aGUKLSMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZQotIyBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotIyBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcKLSMgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi1TT1VSQ0U9JChwd2QpCi1XT1JLU1BBQ0U9JHtTT1VSQ0V9L3dvcmtzcGFjZQotVklSVFVBTEVOVj0ke1dPUktTUEFDRX0vdmUKLVRPT0xTPSR7V09SS1NQQUNFfS90b29scwotREVQUz0ke1NPVVJDRX0vZGVwcwotCi1ESkFOR09fUEtHPWRqYW5nby1ub25yZWwtMjAxMTEwMjQtYmU0OGMxNTJhYmM2LnppcAotREpBTkdPX1RPT0xCT1hfUEtHPWRqYW5nb3Rvb2xib3gtMjAxMTEwMjQtOTU3ZWE1ZjY4MDQwLnppcAotI0NBU1NBTkRSQV9WRVJTSU9OPTEuMC4xMAotI0NBU1NBTkRSQV9QS0c9YXBhY2hlLWNhc3NhbmRyYS0ke0NBU1NBTkRSQV9WRVJTSU9OfS1iaW4udGFyLmd6Ci1USFJJRlRfVkVSU0lPTj0wLjcuMAotVEhSSUZUX1BLRz10aHJpZnQtJHtUSFJJRlRfVkVSU0lPTn0udGFyLmd6Ci0KLXJtIC1yZiAke1dPUktTUEFDRX0KLW1rZGlyIC1wICR7VE9PTFN9Ci0KLXVuemlwIC1xIC1kICR7VE9PTFN9Ly50bXAgJHtERVBTfS8ke0RKQU5HT19QS0d9Ci1jcCAke0RFUFN9LyR7REpBTkdPX1BLR30gJHtUT09MU30vCi11bnppcCAtcSAtZCAke1RPT0xTfS8udG1wICR7REVQU30vJHtESkFOR09fVE9PTEJPWF9QS0d9Ci1jcCAke0RFUFN9LyR7REpBTkdPX1RPT0xCT1hfUEtHfSAke1RPT0xTfS8KLSN0YXIgLXogLXggLUMgJHtUT09MU30gLWYgJHtERVBTfS8ke0NBU1NBTkRSQV9QS0d9Ci0jbXYgJHtUT09MU30vYXBhY2hlLWNhc3NhbmRyYS0ke0NBU1NBTkRSQV9WRVJTSU9OfSAke1RPT0xTfS9jYXNzYW5kcmEKLXRhciAteiAteCAtQyAke1RPT0xTfSAtZiAke0RFUFN9LyR7VEhSSUZUX1BLR30KLW12ICR7VE9PTFN9L3RocmlmdC0ke1RIUklGVF9WRVJTSU9OfSAke1RPT0xTfS90aHJpZnQKLQotcm0gLXJmICR7VklSVFVBTEVOVn0gcHl0aG9uCi12aXJ0dWFsZW52ICR7VklSVFVBTEVOVn0gLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcwotbWtkaXIgLXAgJHtWSVJUVUFMRU5WfS9sb2cKLWxuIC1zbmYgJHtWSVJUVUFMRU5WfSAke1dPUktTUEFDRX0vcHl0aG9uCi1sbiAtc25mIGJpbiAke1ZJUlRVQUxFTlZ9L3NiaW4KLXNvdXJjZSAke1ZJUlRVQUxFTlZ9L2Jpbi9hY3RpdmF0ZQotKAotICBjZCAke1RPT0xTfS8udG1wL2RqYW5nby1ub25yZWwKLSAgcGF0Y2ggLXAzIDwgJHtTT1VSQ0V9L2J1aWxkL2RqYW5nby1hdXRvcmVsb2FkLW5vdHR5LnBhdGNoCi0gIHB5dGhvbiBzZXR1cC5weSAtcSBpbnN0YWxsCi0pCi0oCi0gIGNkICR7VE9PTFN9Ly50bXAvZGphbmdvdG9vbGJveAotICBweXRob24gc2V0dXAucHkgLXEgaW5zdGFsbAotKQotKAotICBjZCAke1RPT0xTfS90aHJpZnQKLSAgY2htb2QgK3ggLi9jb25maWd1cmUKLSAgLi9jb25maWd1cmUgLS13aXRoLWNwcD1ubyAtLXdpdGgtZXJsYW5nPW5vIC0td2l0aC1wZXJsPW5vIC0td2l0aC1waHA9bm8gLS13aXRoLXBocF9leHRlbnNpb249bm8gLS13aXRoLXJ1Ynk9bm8gLS13aXRoLWhhc2tlbGw9bm8KLSAgQVJDSEZMQUdTPSItYXJjaCBpMzg2IC1hcmNoIHg4Nl82NCIgbWFrZSAtajQgYWxsCi0gIGNkIGxpYi9weQotICBweXRob24gc2V0dXAucHkgLXEgc2Rpc3QgLWYgLS1kaXN0LWRpcj0ke1RPT0xTfQotICBweXRob24gc2V0dXAucHkgLXEgaW5zdGFsbAotKQotIygKLSMgIGNkICR7VE9PTFN9L2Nhc3NhbmRyYS9pbnRlcmZhY2UKLSMgICR7VE9PTFN9L3RocmlmdC9jb21waWxlci9jcHAvdGhyaWZ0IC0tZ2VuIHB5IC0tZ2VuIGphdmEgY2Fzc2FuZHJhLnRocmlmdAotIyAgY2QgZ2VuLXB5Ci0jICBlY2hvIC1lICJpbXBvcnQgZGlzdHV0aWxzLmNvcmVcbmRpc3R1dGlscy5jb3JlLnNldHVwKG5hbWU9XCJjYXNzYW5kcmEtcHlcIiwgdmVyc2lvbj1cIiR7VEhSSUZUX1ZFUlNJT059XCIsIHBhY2thZ2VzPVtcImNhc3NhbmRyYVwiXSkiID5zZXR1cC5weQotIyAgcHl0aG9uIHNldHVwLnB5IC1xIHNkaXN0IC1mIC0tZGlzdC1kaXI9JHtUT09MU30KLSMgIHB5dGhvbiBzZXR1cC5weSAtcSBpbnN0YWxsCi0jICBjZCAuLi9nZW4tamF2YQotIyAgY3AgJHtUT09MU30vdGhyaWZ0L2xpYi9qYXZhL2J1aWxkL2xpYnRocmlmdC0ke1RIUklGVF9WRVJTSU9OfS5qYXIgLgotIyAgU0xGNEpfSkFSPWBscyAtMSAke1RPT0xTfS90aHJpZnQvbGliL2phdmEvYnVpbGQvbGliIHwgZ3JlcCBzbGY0ai1hcGlgCi0jICBjcCAke1RPT0xTfS90aHJpZnQvbGliL2phdmEvYnVpbGQvbGliLyR7U0xGNEpfSkFSfSAuCi0jICBta2RpciAtcCBidWlsZC9jbGFzc2VzCi0jICBqYXZhYyAtZCBidWlsZC9jbGFzc2VzIC1jcCAiJHtTTEY0Sl9KQVJ9OmxpYnRocmlmdC0ke1RIUklGVF9WRVJTSU9OfS5qYXIiIG9yZy9hcGFjaGUvY2Fzc2FuZHJhL3RocmlmdC8qLmphdmEKLSMgIGNkIGJ1aWxkCi0jICBqYXIgY2YgY2Fzc2FuZHJhLXRocmlmdC0ke0NBU1NBTkRSQV9WRVJTSU9OfS5qYXIgLUMgY2xhc3NlcyBvcmcKLSMgICNta2RpciAtcCAke1NPVVJDRX0vc2RucGxhdGZvcm0vbGliCi0jICAjY3AgY2Fzc2FuZHJhLXRocmlmdC0ke0NBU1NBTkRSQV9WRVJTSU9OfS5qYXIgJHtTT1VSQ0V9L3NkbnBsYXRmb3JtL2xpYgotIykKLSNzZWQgLWkub2xkICdzIy92YXIvbGliL2Nhc3NhbmRyYS8jJyR7VklSVFVBTEVOVn0nL2Nhc3NhbmRyYS8jO3MjXnJwY19hZGRyZXNzOiAuKiNycGNfYWRkcmVzczogMC4wLjAuMCM7cyNecGFydGl0aW9uZXI6IC4qI3BhcnRpdGlvbmVyOiBvcmcuYXBhY2hlLmNhc3NhbmRyYS5kaHQuT3JkZXJQcmVzZXJ2aW5nUGFydGl0aW9uZXIjJyAke1RPT0xTfS9jYXNzYW5kcmEvY29uZi9jYXNzYW5kcmEueWFtbAotI3NlZCAtaS5vbGQgJ3MjL3Zhci9sb2cvY2Fzc2FuZHJhL3N5c3RlbS5sb2cjJyR7VklSVFVBTEVOVn0nL2xvZy9jYXNzYW5kcmEubG9nIycgJHtUT09MU30vY2Fzc2FuZHJhL2NvbmYvbG9nNGotc2VydmVyLnByb3BlcnRpZXMKLSNzZWQgLWkub2xkICdzI15KTVhfUE9SVD0uKiNKTVhfUE9SVD0iODA4NSIjJyAke1RPT0xTfS9jYXNzYW5kcmEvY29uZi9jYXNzYW5kcmEtZW52LnNoCi0jZWNobyAnSlZNX09QVFM9IiRKVk1fT1BUUyAtWHNzMTYwayInID4+ICR7VE9PTFN9L2Nhc3NhbmRyYS9jb25mL2Nhc3NhbmRyYS1lbnYuc2gKLQotbWFrZSBjbGVhbgotCi1lY2hvICIrKysgUHl0aG9uIHZpcnR1YWxlbnYgc2V0IHVwIGluICR7VklSVFVBTEVOVn0iCi1lY2hvICIrKysgVG8gYWN0aXZhdGUgaW4gdGhlIGN1cnJlbnQgc2hlbGwsIHJ1bjoiCi1lY2hvICIrKysgICBzb3VyY2UgJHtXT1JLU1BBQ0V9L3ZlL2Jpbi9hY3RpdmF0ZSIK